From 4a60ad0843347be122c719a70ad65b67c04b373e Mon Sep 17 00:00:00 2001 From: MURAOKA Taro Date: Wed, 26 Jan 2005 16:16:41 +0000 Subject: [PATCH 001/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@1 a429a4b8-4c93-91f1-de24-85204d8cde48 From 5365f7047ddf85d50540d95003e7bdce47e6b163 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro Date: Wed, 26 Jan 2005 16:23:34 +0000 Subject: [PATCH 002/783] add: original documents (6.3.054) git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@2 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/arabic.txt | 323 ++ en/autocmd.txt | 904 +++ en/change.txt | 1425 +++++ en/cmdline.txt | 992 ++++ en/debugger.txt | 135 + en/develop.txt | 384 ++ en/diff.txt | 371 ++ en/digraph.txt | 322 ++ en/editing.txt | 1432 +++++ en/eval.txt | 4583 +++++++++++++++ en/evim.1 | 49 + en/farsi.txt | 269 + en/filetype.txt | 529 ++ en/fold.txt | 581 ++ en/gui.txt | 951 ++++ en/gui_w16.txt | 186 + en/gui_w32.txt | 472 ++ en/gui_x11.txt | 576 ++ en/hangulin.txt | 101 + en/hebrew.txt | 145 + en/help.txt | 197 + en/howto.txt | 96 + en/if_cscop.txt | 474 ++ en/if_ole.txt | 162 + en/if_perl.txt | 258 + en/if_pyth.txt | 299 + en/if_ruby.txt | 175 + en/if_sniff.txt | 95 + en/if_tcl.txt | 512 ++ en/indent.txt | 522 ++ en/index.txt | 1423 +++++ en/insert.txt | 1064 ++++ en/intro.txt | 890 +++ en/map.txt | 1094 ++++ en/mbyte.txt | 1368 +++++ en/message.txt | 775 +++ en/mlang.txt | 205 + en/motion.txt | 1191 ++++ en/netbeans.txt | 735 +++ en/options.txt | 6839 +++++++++++++++++++++++ en/os_390.txt | 340 ++ en/os_amiga.txt | 139 + en/os_beos.txt | 348 ++ en/os_dos.txt | 295 + en/os_mac.txt | 98 + en/os_mint.txt | 39 + en/os_msdos.txt | 270 + en/os_os2.txt | 220 + en/os_qnx.txt | 138 + en/os_risc.txt | 323 ++ en/os_unix.txt | 60 + en/os_vms.txt | 779 +++ en/os_win32.txt | 319 ++ en/pattern.txt | 1146 ++++ en/pi_expl.txt | 215 + en/pi_gzip.txt | 39 + en/pi_netrw.txt | 543 ++ en/pi_spec.txt | 111 + en/quickfix.txt | 1010 ++++ en/quickref.txt | 1325 +++++ en/quotes.txt | 274 + en/recover.txt | 165 + en/remote.txt | 188 + en/repeat.txt | 530 ++ en/rileft.txt | 125 + en/russian.txt | 82 + en/scroll.txt | 303 + en/sign.txt | 191 + en/sponsor.txt | 229 + en/starting.txt | 1418 +++++ en/syntax.txt | 4161 ++++++++++++++ en/tagsrch.txt | 809 +++ en/term.txt | 808 +++ en/tips.txt | 445 ++ en/todo.txt | 3418 ++++++++++++ en/uganda.txt | 277 + en/undo.txt | 117 + en/usr_01.txt | 180 + en/usr_02.txt | 504 ++ en/usr_03.txt | 654 +++ en/usr_04.txt | 514 ++ en/usr_05.txt | 616 +++ en/usr_06.txt | 277 + en/usr_07.txt | 479 ++ en/usr_08.txt | 511 ++ en/usr_09.txt | 289 + en/usr_10.txt | 822 +++ en/usr_11.txt | 287 + en/usr_12.txt | 358 ++ en/usr_20.txt | 384 ++ en/usr_21.txt | 456 ++ en/usr_22.txt | 364 ++ en/usr_23.txt | 343 ++ en/usr_24.txt | 573 ++ en/usr_25.txt | 578 ++ en/usr_26.txt | 221 + en/usr_27.txt | 563 ++ en/usr_28.txt | 426 ++ en/usr_29.txt | 613 ++ en/usr_30.txt | 643 +++ en/usr_31.txt | 267 + en/usr_40.txt | 655 +++ en/usr_41.txt | 1724 ++++++ en/usr_42.txt | 365 ++ en/usr_43.txt | 172 + en/usr_44.txt | 719 +++ en/usr_45.txt | 419 ++ en/usr_90.txt | 498 ++ en/usr_toc.txt | 340 ++ en/various.txt | 1098 ++++ en/version4.txt | 355 ++ en/version5.txt | 7813 ++++++++++++++++++++++++++ en/version6.txt | 13846 ++++++++++++++++++++++++++++++++++++++++++++++ en/vi_diff.txt | 884 +++ en/vim.1 | 541 ++ en/vimdiff.1 | 46 + en/vimtutor.1 | 54 + en/visual.txt | 487 ++ en/windows.txt | 1123 ++++ en/workshop.txt | 98 + en/xxd.1 | 373 ++ 121 files changed, 96933 insertions(+) create mode 100644 en/arabic.txt create mode 100644 en/autocmd.txt create mode 100644 en/change.txt create mode 100644 en/cmdline.txt create mode 100644 en/debugger.txt create mode 100644 en/develop.txt create mode 100644 en/diff.txt create mode 100644 en/digraph.txt create mode 100644 en/editing.txt create mode 100644 en/eval.txt create mode 100644 en/evim.1 create mode 100644 en/farsi.txt create mode 100644 en/filetype.txt create mode 100644 en/fold.txt create mode 100644 en/gui.txt create mode 100644 en/gui_w16.txt create mode 100644 en/gui_w32.txt create mode 100644 en/gui_x11.txt create mode 100644 en/hangulin.txt create mode 100644 en/hebrew.txt create mode 100644 en/help.txt create mode 100644 en/howto.txt create mode 100644 en/if_cscop.txt create mode 100644 en/if_ole.txt create mode 100644 en/if_perl.txt create mode 100644 en/if_pyth.txt create mode 100644 en/if_ruby.txt create mode 100644 en/if_sniff.txt create mode 100644 en/if_tcl.txt create mode 100644 en/indent.txt create mode 100644 en/index.txt create mode 100644 en/insert.txt create mode 100644 en/intro.txt create mode 100644 en/map.txt create mode 100644 en/mbyte.txt create mode 100644 en/message.txt create mode 100644 en/mlang.txt create mode 100644 en/motion.txt create mode 100644 en/netbeans.txt create mode 100644 en/options.txt create mode 100644 en/os_390.txt create mode 100644 en/os_amiga.txt create mode 100644 en/os_beos.txt create mode 100644 en/os_dos.txt create mode 100644 en/os_mac.txt create mode 100644 en/os_mint.txt create mode 100644 en/os_msdos.txt create mode 100644 en/os_os2.txt create mode 100644 en/os_qnx.txt create mode 100644 en/os_risc.txt create mode 100644 en/os_unix.txt create mode 100644 en/os_vms.txt create mode 100644 en/os_win32.txt create mode 100644 en/pattern.txt create mode 100644 en/pi_expl.txt create mode 100644 en/pi_gzip.txt create mode 100644 en/pi_netrw.txt create mode 100644 en/pi_spec.txt create mode 100644 en/quickfix.txt create mode 100644 en/quickref.txt create mode 100644 en/quotes.txt create mode 100644 en/recover.txt create mode 100644 en/remote.txt create mode 100644 en/repeat.txt create mode 100644 en/rileft.txt create mode 100644 en/russian.txt create mode 100644 en/scroll.txt create mode 100644 en/sign.txt create mode 100644 en/sponsor.txt create mode 100644 en/starting.txt create mode 100644 en/syntax.txt create mode 100644 en/tagsrch.txt create mode 100644 en/term.txt create mode 100644 en/tips.txt create mode 100644 en/todo.txt create mode 100644 en/uganda.txt create mode 100644 en/undo.txt create mode 100644 en/usr_01.txt create mode 100644 en/usr_02.txt create mode 100644 en/usr_03.txt create mode 100644 en/usr_04.txt create mode 100644 en/usr_05.txt create mode 100644 en/usr_06.txt create mode 100644 en/usr_07.txt create mode 100644 en/usr_08.txt create mode 100644 en/usr_09.txt create mode 100644 en/usr_10.txt create mode 100644 en/usr_11.txt create mode 100644 en/usr_12.txt create mode 100644 en/usr_20.txt create mode 100644 en/usr_21.txt create mode 100644 en/usr_22.txt create mode 100644 en/usr_23.txt create mode 100644 en/usr_24.txt create mode 100644 en/usr_25.txt create mode 100644 en/usr_26.txt create mode 100644 en/usr_27.txt create mode 100644 en/usr_28.txt create mode 100644 en/usr_29.txt create mode 100644 en/usr_30.txt create mode 100644 en/usr_31.txt create mode 100644 en/usr_40.txt create mode 100644 en/usr_41.txt create mode 100644 en/usr_42.txt create mode 100644 en/usr_43.txt create mode 100644 en/usr_44.txt create mode 100644 en/usr_45.txt create mode 100644 en/usr_90.txt create mode 100644 en/usr_toc.txt create mode 100644 en/various.txt create mode 100644 en/version4.txt create mode 100644 en/version5.txt create mode 100644 en/version6.txt create mode 100644 en/vi_diff.txt create mode 100644 en/vim.1 create mode 100644 en/vimdiff.1 create mode 100644 en/vimtutor.1 create mode 100644 en/visual.txt create mode 100644 en/windows.txt create mode 100644 en/workshop.txt create mode 100644 en/xxd.1 diff --git a/en/arabic.txt b/en/arabic.txt new file mode 100644 index 000000000..b9910b10e --- /dev/null +++ b/en/arabic.txt @@ -0,0 +1,323 @@ +*arabic.txt* For Vim version 6.3. Last change: 2003 May 11 + + + VIM REFERENCE MANUAL by Nadim Shaikli + + +Arabic Language support (options & mappings) for Vim *Arabic* + +{Vi does not have any of these commands} + + *E800* +In order to use right-to-left and Arabic mapping support, it is +necessary to compile VIM with the |+arabic| feature. + +These functions have been created by Nadim Shaikli + +It is best to view this file with these settings within VIM's GUI: > + + :set encoding=utf-8 + :set arabicshape + + +Introduction +------------ +Arabic is a rather demanding language in which a number of special +features are required. Characters are right-to-left oriented and +ought to appear as such on the screen (ie. from right to left). +Arabic also requires shaping of its characters, meaning the same +character has a different visual form based on its relative location +within a word (initial, medial, final or stand-alone). Arabic also +requires two different forms of combining and the ability, in +certain instances, to either superimpose upto two characters on top +of another (composing) or the actual substitution of two characters +into one (combining). Lastly, to display Arabic properly one will +require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also +require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are +subsets within a so-called ISO-10646-1 font. + +The commands, prompts and help files are not in Arabic, therefore +the user interface remains the standard Vi interface. + + +Highlights +---------- +o Editing left-to-right files as in the original VIM hasn't changed. + +o Viewing and editing files in right-to-left windows. File + orientation is per window, so it is possible to view the same + file in right-to-left and left-to-right modes, simultaneously. + +o No special terminal with right-to-left capabilities is required. + The right-to-left changes are completely hardware independent. + Only Arabic fonts are necessary. + +o Compatible with the original VIM. Almost all features work in + right-to-left mode (there are liable to be bugs). + +o Changing keyboard mapping and reverse insert modes using a single + command. + +o Toggling complete Arabic support via a single command. + +o While in Arabic mode, numbers are entered from left to right. Upon + entering a none number character, that character will be inserted + just into the left of the last number. + +o Arabic keymapping on the command line in reverse insert mode. + +o Proper Bidirectional functionality is possible given VIM is + started within a Bidi capable terminal emulator. + + +Arabic Fonts *arabicfonts* +------------ + +VIM requires monospaced fonts of which there are many out there. +Arabic requires ISO-8859-6 as well as Presentation Form-B fonts +(without Form-B, Arabic will _NOT_ be usable). It is highly +recommended that users search for so-called 'ISO-10646-1' fonts. +Do an Internet search or check www.arabeyes.org for further +info on where to attain the necessary Arabic fonts. + + +Font Installation +----------------- + +o Installation of fonts for X Window systems (Unix/Linux) + + Depending on your system, copy your_ARABIC_FONT file into a + directory of your choice. Change to the directory containing + the Arabic fonts and execute the following commands: + + % mkfontdir + % xset +fp path_name_of_arabic_fonts_directory + + +Usage +----- +Prior to the actual usage of Arabic within VIM, a number of settings +need to be accounted for and invoked. + +o Setting the Arabic fonts + + + For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done + by entering the following command in the VIM window. +> + :set guifont=your_ARABIC_FONT +< + NOTE: the string 'your_ARABIC_FONT' is used to denote a complete + font name akin to that used in linux/unix system. + (eg. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1) + + You can append the 'guifont' set command to your .vimrc file + in order to get the same above noted results. In other words, + you can include ':set guifont=your_ARABIC_FONT' to your .vimrc + file. + + + Under the X Window environment, you can also start VIM with + '-fn your_ARABIC_FONT' option. + +o Setting the appropriate character Encoding + To enable the correct Arabic encoding the following command needs + to be appended, +> + :set encoding=utf-8 +< + to your .vimrc file (entering the command manually into you VIM + window is highly discouraged). In short, include ':set + encoding=utf-8' to your .vimrc file. + + Attempts to use Arabic without UTF-8 will result the following + warning message, + + *W17* > + Arabic requires UTF-8, do ':set encoding=utf-8' + +o Enable Arabic settings [short-cut] + + In order to simplify and streamline things, you can either invoke + VIM with the command-line option, + + % vim -A my_utf8_arabic_file ... + + or enable 'arabic' via the following command within VIM +> + :set arabic +< + The two above noted possible invocations are the preferred manner + in which users are instructed to proceed. Baring an enabled 'termbidi' + setting, both command options: + + 1. set the appropriate keymap + 2. enable the deletion of a single combined pair character + 3. enable rightleft mode + 4. enable rightleftcmd mode (affecting the command-line) + 5. enable arabicshape mode (do visual character alterations) + + You may also append the command to your .vimrc file and simply + include ':set arabic' to it. + + You are also capable of disabling Arabic support via +> + :set noarabic +< + which resets everything that the command had enabled without touching + the global settings as they could affect other possible open buffers. + In short the 'noarabic' command, + + 1. resets to the alternate keymap + 2. disables the deletion of a single combined pair character + 3. disables rightleft mode + + NOTE: the 'arabic' command takes into consideration 'termbidi' for + possible external bi-directional (bidi) support from the + terminal ("mlterm" for instance offers such support). + 'termbidi', if available, is superior to rightleft support + and its support is preferred due to its level of offerings. + 'arabic' when 'termbidi' is enabled only sets the keymap. + + If, on the other hand, you'd like to be verbose and explicit and + are opting not to use the 'arabic' short-cut command, here's what + is needed (ie. if you use ':set arabic' you can skip this section) - + + + Arabic Keymapping Activation + + To activate the Arabic keymap (ie. to remap your english/latin + keyboard to look-n-feel like a standard Arabic one), set the + 'keymap' command to "arabic". This is done by entering +> + :set keymap=arabic +< + in your VIM window. You can also append the 'keymap' set command to + your .vimrc file. In other words, you can include ':set keymap=arabic' + to your .vimrc file. + + To turn toggle (or switch) your keymapping between Arabic and the + default mapping (english), its advised that users use the 'CTRL-^' + key press while in insert (or add/replace) mode. The command-line + will display your current mapping by displaying an "Arabic" string + next to your insertion mode (eg. -- INSERT Arabic --) indicating + your current keymap. + + + Arabic deletion of a combined pair character + + By default VIM has the 'delcombine' option disabled. This option + allows the deletion of ALEF in a LAM_ALEF (LAA) combined character + and still retain the LAM (ie. it reverts to treating the combined + character as its natural two characters form -- this also pertains + to harakat and their combined forms). You can enable this option + by entering +> + :set delcombine +< + in our VIM window. You can also append the 'delcombine' set command + to your .vimrc file. In other words, you can include ':set delcombine' + to your .vimrc file. + + + Arabic right-to-left Mode + + By default VIM starts in Left-to-right mode. 'rightleft' is the + command that allows one to alter a window's orientation - that can + be accomplished via, + + - Toggling between left-to-right and right-to-left modes is + accomplished through ':set rightleft' and ':set norightleft'. + + - While in Left-to-right mode, enter ':set rl' in the command line + ('rl' is the abbreviation for rightleft). + + - Put the ':set rl' line in your '.vimrc' file to start the VIM in + right-to-left mode permanently. + + + Arabic right-to-left command-line Mode + + For certain commands the editing can be done in right-to-left mode. + Currently this is only applicable to search commands. + + This is controlled with the 'rightleftcmd' option. The default is + "search", which means that windows in which 'rightleft' is set will + edit search commands in right-left mode. To disable this behavior, +> + :set rightleftcmd= +< + To enable right-left editing of search commands again, +> + :set rightleftcmd& +< + + Arabic Shaping Mode + + To activate the required visual characters alterations (shaping, + composing, combining) which the Arabic language requires, enable + the 'arabicshape' command. This is done by entering +> + :set arabicshape +< + in our VIM window. You can also append the 'arabicshape' set + command to your .vimrc file. In other words, you can include + ':set arabicshape' to your .vimrc file. + + +Keymap/Keyboard *arabickeymap* +--------------- + +The character/letter encoding used in VIM is the standard UTF-8. +It is widely discouraged that any other encoding be used or even +attempted. + +Note: UTF-8 is an all encompassing encoding and as such is + the only supported (and encouraged) encoding with + regard to Arabic (all other proprietary encodings + should be discouraged and frowned upon). + +o Keyboard + + + CTRL-^ in insert/replace mode toggles between Arabic/Latin mode + + + Keyboard mapping is based on the Microsoft's Arabic keymap (the + defacto standard in the Arab world): + + +---------------------------------------------------------------------+ + |! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ | + |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ | + +---------------------------------------------------------------------+ + |Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > | + |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د | + +-----------------------------------------------------------+ + |A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" | + |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط | + +------------------------------------------------------+ + |Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ | + |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ | + +-------------------------------------------------+ + +Restrictions +------------ + +o VIM in its GUI form does not currently support Bi-directionality + (ie. the ability to see both Arabic and Latin intermixed within + the same line). + + +Known Bugs +---------- + +There is one known minor bug, + + 1. If you insert a haraka (eg. Fatha (U+064E)) after a LAM (U+0644) + and then insert an ALEF (U+0627), the appropriate combining will + not happen due to the sandwiched haraka resulting in something + that will NOT be displayed correctly. + + WORK-AROUND: Don't include harakats between LAM and ALEF combos. + In general, don't anticipate to see correct visual + representation with regard to harakats and LAM+ALEF + combined characters (even those entered after both + characters). The problem noted is strictly a visual + one, meaning saving such a file will contain all the + appropriate info/encodings - nothing is lost. + +No other bugs are known to exist. + + vim:tw=78:ts=8:ft=help:norl: + diff --git a/en/autocmd.txt b/en/autocmd.txt new file mode 100644 index 000000000..dfca8245c --- /dev/null +++ b/en/autocmd.txt @@ -0,0 +1,904 @@ +*autocmd.txt* For Vim version 6.3. Last change: 2004 Apr 20 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Automatic commands *autocommand* + +For a basic explanation, see section |40.3| in the user manual. + +1. Introduction |autocmd-intro| +2. Defining autocommands |autocmd-define| +3. Removing autocommands |autocmd-remove| +4. Listing autocommands |autocmd-list| +5. Events |autocmd-events| +6. Patterns |autocmd-patterns| +7. Groups |autocmd-groups| +8. Executing autocommands |autocmd-execute| +9. Using autocommands |autocmd-use| + +{Vi does not have any of these commands} +{only when the |+autocmd| feature has not been disabled at compile time} + +============================================================================== +1. Introduction *autocmd-intro* + +You can specify commands to be executed automatically for when reading or +writing a file, when entering or leaving a buffer or window, and when exiting +Vim. For example, you can create an autocommand to set the 'cindent' option +for files matching *.c. You can also use autocommands to implement advanced +features, such as editing compressed files (see |gzip-example|). The usual +place to put autocommands is in your .vimrc or .exrc file. + + *E203* *E204* *E143* +WARNING: Using autocommands is very powerful, and may lead to unexpected side +effects. Be careful not to destroy your text. +- It's a good idea to do some testing on an expendable copy of a file first. + For example: If you use autocommands to decompress a file when starting to + edit it, make sure that the autocommands for compressing when writing work + correctly. +- Be prepared for an error halfway through (e.g., disk full). Vim will mostly + be able to undo the changes to the buffer, but you may have to clean up the + changes to other files by hand (e.g., compress a file that has been + decompressed). +- If the BufRead* events allow you to edit a compressed file, the FileRead* + events should do the same (this makes recovery possible in some rare cases). + It's a good idea to use the same autocommands for the File* and Buf* events + when possible. + +============================================================================== +2. Defining autocommands *autocmd-define* + +Note: The ":autocmd" command cannot be followed by another command, since any +'|' is considered part of the command. + + *:au* *:autocmd* +:au[tocmd] [group] {event} {pat} [nested] {cmd} + Add {cmd} to the list of commands that Vim will + execute automatically on {event} for a file matching + {pat}. Vim always adds the {cmd} after existing + autocommands, so that the autocommands execute in the + order in which they were given. See |autocmd-nested| + for [nested]. + +Note that special characters (e.g., "%", "") in the ":autocmd" +arguments are not expanded when the autocommand is defined. These will be +expanded when the Event is recognized, and the {cmd} is executed. The only +exception is that "" is expanded when the autocmd is defined. Example: +> + :au BufNewFile,BufRead *.html so :h/html.vim + +Here Vim expands to the name of the file containing this line. + +When your .vimrc file is sourced twice, the autocommands will appear twice. +To avoid this, put this command in your .vimrc file, before defining +autocommands: > + + :autocmd! " Remove ALL autocommands for the current group. + +If you don't want to remove all autocommands, you can instead use a variable +to ensure that Vim includes the autocommands only once: > + + :if !exists("autocommands_loaded") + : let autocommands_loaded = 1 + : au ... + :endif + +When the [group] argument is not given, Vim uses the current group (as defined +with ":augroup"); otherwise, Vim uses the group defined with [group]. Note +that [group] must have been defined before. You cannot define a new group +with ":au group ..."; use ":augroup" for that. + +While testing autocommands, you might find the 'verbose' option to be useful: > + :set verbose=9 +This setting makes Vim echo the autocommands as it executes them. + +When defining an autocommand in a script, it will be able to call functions +local to the script and use mappings local to the script. When the event is +triggered and the command executed, it will run in the context of the script +it was defined in. This matters if || is used in a command. + +When executing the commands, the messages from one command overwrites a +previous message. This is different from when executing the commands +manually. Mostly the screen will not scroll up, thus there is no hit-enter +prompt. When one command outputs two messages this can happen anyway. + +============================================================================== +3. Removing autocommands *autocmd-remove* + +:au[tocmd]! [group] {event} {pat} [nested] {cmd} + Remove all autocommands associated with {event} and + {pat}, and add the command {cmd}. See + |autocmd-nested| for [nested]. + +:au[tocmd]! [group] {event} {pat} + Remove all autocommands associated with {event} and + {pat}. + +:au[tocmd]! [group] * {pat} + Remove all autocommands associated with {pat} for all + events. + +:au[tocmd]! [group] {event} + Remove ALL autocommands for {event}. + +:au[tocmd]! [group] Remove ALL autocommands. + +When the [group] argument is not given, Vim uses the current group (as defined +with ":augroup"); otherwise, Vim uses the group defined with [group]. + +============================================================================== +4. Listing autocommands *autocmd-list* + +:au[tocmd] [group] {event} {pat} + Show the autocommands associated with {event} and + {pat}. + +:au[tocmd] [group] * {pat} + Show the autocommands associated with {pat} for all + events. + +:au[tocmd] [group] {event} + Show all autocommands for {event}. + +:au[tocmd] [group] Show all autocommands. + +If you provide the [group] argument, Vim lists only the autocommands for +[group]; otherwise, Vim lists the autocommands for ALL groups. Note that this +argument behavior differs from that for defining and removing autocommands. + +============================================================================== +5. Events *autocmd-events* *E215* *E216* + + *autocommand-events* *{event}* +Vim recognizes the following events. Vim ignores the case of event names +(e.g., you can use "BUFread" or "bufread" instead of "BufRead"). + + *BufNewFile* +BufNewFile When starting to edit a file that doesn't + exist. Can be used to read in a skeleton + file. + *BufReadPre* *E200* *E201* +BufReadPre When starting to edit a new buffer, before + reading the file into the buffer. Not used + if the file doesn't exist. + *BufRead* *BufReadPost* +BufRead or BufReadPost When starting to edit a new buffer, after + reading the file into the buffer, before + executing the modelines. See |BufWinEnter| + for when you need to do something after + processing the modelines. + This does NOT work for ":r file". Not used + when the file doesn't exist. Also used after + successfully recovering a file. + *BufReadCmd* +BufReadCmd Before starting to edit a new buffer. Should + read the file into the buffer. |Cmd-event| + *BufFilePre* +BufFilePre Before changing the name of the current buffer + with the ":file" or ":saveas" command. + *BufFilePost* +BufFilePost After changing the name of the current buffer + with the ":file" or ":saveas" command. + *FileReadPre* +FileReadPre Before reading a file with a ":read" command. + *FileReadPost* +FileReadPost After reading a file with a ":read" command. + Note that Vim sets the '[ and '] marks to the + first and last line of the read. This can be + used to operate on the lines just read. + *FileReadCmd* +FileReadCmd Before reading a file with a ":read" command. + Should do the reading of the file. |Cmd-event| + *FilterReadPre* *E135* +FilterReadPre Before reading a file from a filter command. + Vim checks the pattern against the name of + the current buffer, not the name of the + temporary file that is the output of the + filter command. + *FilterReadPost* +FilterReadPost After reading a file from a filter command. + Vim checks the pattern against the name of + the current buffer as with FilterReadPre. + *FileType* +FileType When the 'filetype' option has been set. + can be used for the name of the file + where this option was set, and for + the new value of 'filetype'. + See |filetypes|. + *Syntax* +Syntax When the 'syntax' option has been set. + can be used for the name of the file + where this option was set, and for + the new value of 'syntax'. + See |:syn-on|. + *StdinReadPre* +StdinReadPre Before reading from stdin into the buffer. + Only used when the "-" argument was used when + Vim was started |--|. + *StdinReadPost* +StdinReadPost After reading from the stdin into the buffer, + before executing the modelines. Only used + when the "-" argument was used when Vim was + started |--|. + *BufWrite* *BufWritePre* +BufWrite or BufWritePre Before writing the whole buffer to a file. + *BufWritePost* +BufWritePost After writing the whole buffer to a file + (should undo the commands for BufWritePre). + *BufWriteCmd* +BufWriteCmd Before writing the whole buffer to a file. + Should do the writing of the file and reset + 'modified' if successful. The buffer contents + should not be changed. |Cmd-event| + *FileWritePre* +FileWritePre Before writing to a file, when not writing the + whole buffer. + *FileWritePost* +FileWritePost After writing to a file, when not writing the + whole buffer. + *FileWriteCmd* +FileWriteCmd Before writing to a file, when not writing the + whole buffer. Should do the writing to the + file. Should not change the buffer. + |Cmd-event| + *FileAppendPre* +FileAppendPre Before appending to a file. + *FileAppendPost* +FileAppendPost After appending to a file. + *FileAppendCmd* +FileAppendCmd Before appending to a file. Should do the + appending to the file. |Cmd-event| + *FilterWritePre* +FilterWritePre Before writing a file for a filter command or + making a diff. + Vim checks the pattern against the name of + the current buffer, not the name of the + temporary file that is the output of the + filter command. + *FilterWritePost* +FilterWritePost After writing a file for a filter command or + making a diff. + Vim checks the pattern against the name of + the current buffer as with FilterWritePre. + *FileChangedShell* +FileChangedShell When Vim notices that the modification time of + a file has changed since editing started. + Also when the file attributes of the file + change. |timestamp| + Mostly triggered after executing a shell + command, but also with a |:checktime| command + or when Vim regains input focus. + This autocommand is triggered for each changed + file. It is not used when 'autoread' is set + and the buffer was not changed. If a + FileChangedShell autocommand is present the + warning message and prompt is not given. + This is useful for reloading related buffers + which are affected by a single command. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer that was changed "". + NOTE: The commands must not change the current + buffer, jump to another buffer or delete a + buffer. *E246* + NOTE: This event never nests, to avoid an + endless loop. This means that while executing + commands for the FileChangedShell event no + other FileChangedShell event will be + triggered. + *FileChangedRO* +FileChangedRO Before making the first change to a read-only + file. Can be used to check-out the file from + a source control system. Not triggered when + the change was caused by an autocommand. + WARNING: This event is triggered when making a + change, just before the change is applied to + the text. If the autocommand moves the cursor + the effect of the change is undefined. + *FocusGained* +FocusGained When Vim got input focus. Only for the GUI + version and a few console versions where this + can be detected. + *FocusLost* +FocusLost When Vim lost input focus. Only for the GUI + version and a few console versions where this + can be detected. + *FuncUndefined* +FuncUndefined When a user function is used but it isn't + defined. Useful for defining a function only + when it's used. Both and are + set to the name of the function. + *CursorHold* +CursorHold When the user doesn't press a key for the time + specified with 'updatetime'. Not re-triggered + until the user has pressed a key (i.e. doesn't + fire every 'updatetime' ms if you leave Vim to + make some coffee. :) See |CursorHold-example| + for previewing tags. + This event is only triggered in Normal mode. + Note: Interactive commands cannot be used for + this event. There is no hit-enter prompt, + the screen is updated directly (when needed). + Note: In the future there will probably be + another option to set the time. + Hint: to force an update of the status lines + use: > + :let &ro = &ro +< {only on Amiga, Unix, Win32, MSDOS and all GUI + versions} + *BufEnter* +BufEnter After entering a buffer. Useful for setting + options for a file type. Also executed when + starting to edit a buffer, after the + BufReadPost autocommands. + *BufLeave* +BufLeave Before leaving to another buffer. Also when + leaving or closing the current window and the + new current window is not for the same buffer. + Not used for ":qa" or ":q" when exiting Vim. + *BufWinEnter* +BufWinEnter After a buffer is displayed in a window. This + can be when the buffer is loaded (after + processing the modelines), when a hidden + buffer is displayed in a window (and is no + longer hidden) or a buffer already visible in + a window is also displayed in another window. + *BufWinLeave* +BufWinLeave Before a buffer is removed from a window. + Not when it's still visible in another window. + Also triggered when exiting. It's triggered + before BufUnload or BufHidden. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being unloaded "". + *BufUnload* +BufUnload Before unloading a buffer. This is when the + text in the buffer is going to be freed. This + may be after a BufWritePost and before a + BufDelete. Also used for all buffers that are + loaded when Vim is going to exit. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being unloaded "". + *BufHidden* +BufHidden Just after a buffer has become hidden. That + is, when there are no longer windows that show + the buffer, but the buffer is not unloaded or + deleted. Not used for ":qa" or ":q" when + exiting Vim. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being unloaded "". + *BufNew* +BufNew Just after creating a new buffer. Also used + just after a buffer has been renamed. When + the buffer is added to the buffer list BufAdd + will be triggered too. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being created "". + *BufCreate* *BufAdd* +BufAdd or BufCreate Just after creating a new buffer which is + added to the buffer list, or adding a buffer + to the buffer list. + Also used just after a buffer in the buffer + list has been renamed. + The BufCreate event is for historic reasons. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being created "". + *BufDelete* +BufDelete Before deleting a buffer from the buffer list. + The BufUnload may be called first (if the + buffer was loaded). + Also used just before a buffer in the buffer + list is renamed. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being deleted "". + *BufWipeout* +BufWipeout Before completely deleting a buffer. The + BufUnload and BufDelete events may be called + first (if the buffer was loaded and was in the + buffer list). Also used just before a buffer + is renamed (also when it's not in the buffer + list). + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being deleted "". + *WinEnter* +WinEnter After entering another window. Not done for + the first window, when Vim has just started. + Useful for setting the window height. + If the window is for another buffer, Vim + executes the BufEnter autocommands after the + WinEnter autocommands. + Note: When using ":split fname" the WinEnter + event is triggered after the split but before + the file "fname" is loaded. + *WinLeave* +WinLeave Before leaving a window. If the window to be + entered next is for a different buffer, Vim + executes the BufLeave autocommands before the + WinLeave autocommands (but not for ":new"). + Not used for ":qa" or ":q" when exiting Vim. + *CmdwinEnter* +CmdwinEnter After entering the command-line window. + Useful for setting options specifically for + this special type of window. This is + triggered _instead_ of BufEnter and WinEnter. + is set to a single character, + indicating the type of command-line. + |cmdwin-char| + *CmdwinLeave* +CmdwinLeave Before leaving the command-line window. + Useful to clean up any global setting done + with CmdwinEnter. This is triggered _instead_ + of BufLeave and WinLeave. + is set to a single character, + indicating the type of command-line. + |cmdwin-char| + *GUIEnter* +GUIEnter After starting the GUI successfully, and after + opening the window. It is triggered before + VimEnter when using gvim. Can be used to + position the window from a .gvimrc file: > + :autocmd GUIEnter * winpos 100 50 +< *VimEnter* +VimEnter After doing all the startup stuff, including + loading .vimrc files, executing the "-c cmd" + arguments, creating all windows and loading + the buffers in them. + *VimLeavePre* +VimLeavePre Before exiting Vim, just before writing the + .viminfo file. This is executed only once, + if there is a match with the name of what + happens to be the current buffer when exiting. + Mostly useful with a "*" pattern. > + :autocmd VimLeavePre * call CleanupStuff() +< To detect an abnormal exit use |v:dying|. + *VimLeave* +VimLeave Before exiting Vim, just after writing the + .viminfo file. Executed only once, like + VimLeavePre. + To detect an abnormal exit use |v:dying|. + *EncodingChanged* +EncodingChanged Fires off when the 'encoding' option is + changed. Useful to set up fonts, for example. + *FileEncoding* +FileEncoding Obsolete. It still works and is equivalent + to |EncodingChanged|. + *RemoteReply* +RemoteReply When a reply from a Vim that functions as + server was received |server2client()|. + is equal to the {serverid} from which + the reply was sent, and is the actual + reply string. + Note that even if an autocommand is defined, + the reply should be read with |remote_read()| + to consume it. + *TermChanged* +TermChanged After the value of 'term' has changed. Useful + for re-loading the syntax file to update the + colors, fonts and other terminal-dependent + settings. Executed for all loaded buffers. + *TermResponse* +TermResponse After the response to |t_RV| is received from + the terminal. The value of |v:termresponse| + can be used to do things depending on the + terminal version. + *UserGettingBored* +UserGettingBored When the user hits CTRL-C. Just kidding! :-) + *User* +User Never executed automatically. To be used for + autocommands that are only executed with + ":doautocmd". + +You can specify a comma-separated list of event names. No white space can be +used in this list. The command applies to all the events in the list. + +For READING FILES there are four kinds of events possible: + BufNewFile starting to edit a non-existent file + BufReadPre BufReadPost starting to edit an existing file + FilterReadPre FilterReadPost read the temp file with filter output + FileReadPre FileReadPost any other file read +Vim uses only one of these four kinds when reading a file. The "Pre" and +"Post" events are both triggered, before and after reading the file. + +Note that the autocommands for the *ReadPre events and all the Filter events +are not allowed to change the current buffer (you will get an error message if +this happens). This is to prevent the file to be read into the wrong buffer. + +Note that the 'modified' flag is reset AFTER executing the BufReadPost +and BufNewFile autocommands. But when the 'modified' option was set by the +autocommands, this doesn't happen. + +You can use the 'eventignore' option to ignore a number of events or all +events. + +============================================================================== +6. Patterns *autocmd-patterns* *{pat}* + +The file pattern {pat} is tested for a match against the file name in one of +two ways: +1. When there is no '/' in the pattern, Vim checks for a match against only + the tail part of the file name (without its leading directory path). +2. When there is a '/' in the pattern, Vim checks for a match against the + both short file name (as you typed it) and the full file name (after + expanding it to a full path and resolving symbolic links). + +Examples: > + :autocmd BufRead *.txt set et +Set the 'et' option for all text files. > + + :autocmd BufRead /vim/src/*.c set cindent +Set the 'cindent' option for C files in the /vim/src directory. > + + :autocmd BufRead /tmp/*.c set ts=5 +If you have a link from "/tmp/test.c" to "/home/nobody/vim/src/test.c", and +you start editing "/tmp/test.c", this autocommand will match. + +Note: To match part of a path, but not from the root directory, use a '*' as +the first character. Example: > + :autocmd BufRead */doc/*.txt set tw=78 +This autocommand will for example be executed for "/tmp/doc/xx.txt" and +"/usr/home/piet/doc/yy.txt". The number of directories does not matter here. + + +The file name that the pattern is matched against is after expanding +wildcards. Thus is you issue this command: > + :e $ROOTDIR/main.$EXT +The argument is first expanded to: > + /usr/root/main.py +Before it's matched with the pattern of the autocommand. Careful with this +when using events like FileReadCmd, the value of may not be what you +expect. + + +Environment variables can be used in a pattern: > + :autocmd BufRead $VIMRUNTIME/doc/*.txt set expandtab +And ~ can be used for the home directory (if $HOME is defined): > + :autocmd BufWritePost ~/.vimrc so ~/.vimrc + :autocmd BufRead ~archive/* set readonly +The environment variable is expanded when the autocommand is defined, not when +the autocommand is executed. This is different from the command! + + *file-pattern* +The pattern is interpreted like mostly used in file names: + * matches any sequence of characters + ? matches any single character + \? matches a '?' + . matches a '.' + ~ matches a '~' + , separates patterns + \, matches a ',' + { } like \( \) in a |pattern| + , inside { }: like \| in a |pattern| + \ special meaning like in a |pattern| + [ch] matches 'c' or 'h' + [^ch] match any character but 'c' and 'h' + +Note that for all systems the '/' character is used for path separator (even +MS-DOS and OS/2). This was done because the backslash is difficult to use +in a pattern and to make the autocommands portable across different systems. + + +Matching with the pattern is done when an event is triggered. Changing the +buffer name in one of the autocommands, or even deleting the buffer, does not +change which autocommands will be executed. Example: > + + au BufEnter *.foo bdel + au BufEnter *.foo set modified + +This will delete the current buffer and then set 'modified' in what has become +the current buffer instead. Vim doesn't take into account that "*.foo" +doesn't match with that buffer name. It matches "*.foo" with the name of the +buffer at the moment the event was triggered. + +============================================================================== +7. Groups *autocmd-groups* + +Autocommands can be put together in a group. This is useful for removing or +executing a group of autocommands. For example, all the autocommands for +syntax highlighting are put in the "highlight" group, to be able to execute +":doautoall highlight BufRead" when the GUI starts. + +When no specific group is selected, Vim uses the default group. The default +group does not have a name. You cannot execute the autocommands from the +default group separately; you can execute them only by executing autocommands +for all groups. + +Normally, when executing autocommands automatically, Vim uses the autocommands +for all groups. The group only matters when executing autocommands with +":doautocmd" or ":doautoall", or when defining or deleting autocommands. + +The group name can contain any characters except white space. The group name +"end" is reserved (also in uppercase). + +The group name is case sensitive. Note that this is different from the event +name! + + *:aug* *:augroup* +:aug[roup] {name} Define the autocmd group name for the + following ":autocmd" commands. The name "end" + or "END" selects the default group. + + *:augroup-delete* *E367* +:aug[roup]! {name} Delete the autocmd group {name}. Don't use + this if there is still an autocommand using + this group! This is not checked. + +To enter autocommands for a specific group, use this method: +1. Select the group with ":augroup {name}". +2. Delete any old autocommands with ":au!". +3. Define the autocommands. +4. Go back to the default group with "augroup END". + +Example: > + :augroup uncompress + : au! + : au BufEnter *.gz %!gunzip + :augroup END + +This prevents having the autocommands defined twice (e.g., after sourcing the +.vimrc file again). + +============================================================================== +8. Executing autocommands *autocmd-execute* + +Vim can also execute Autocommands non-automatically. This is useful if you +have changed autocommands, or when Vim has executed the wrong autocommands +(e.g., the file pattern match was wrong). + +Note that the 'eventignore' option applies here too. Events listed in this +option will not cause any commands to be executed. + + *:do* *:doau* *:doautocmd* *E217* +:do[autocmd] [group] {event} [fname] + Apply the autocommands matching [fname] (default: + current file name) for {event} to the current buffer. + You can use this when the current file name does not + match the right pattern, after changing settings, or + to execute autocommands for a certain event. + It's possible to use this inside an autocommand too, + so you can base the autocommands for one extension on + another extension. Example: > + :au Bufenter *.cpp so ~/.vimrc_cpp + :au Bufenter *.cpp doau BufEnter x.c +< Be careful to avoid endless loops. See + |autocmd-nested|. + + When the [group] argument is not given, Vim executes + the autocommands for all groups. When the [group] + argument is included, Vim executes only the matching + autocommands for that group. Note: if you use an + undefined group name, Vim gives you an error message. + + *:doautoa* *:doautoall* +:doautoa[ll] [group] {event} [fname] + Like ":doautocmd", but apply the autocommands to each + loaded buffer. Note that {fname} is used to select + the autocommands, not the buffers to which they are + applied. + Careful: Don't use this for autocommands that delete a + buffer, change to another buffer or change the + contents of a buffer; the result is unpredictable. + This command is intended for autocommands that set + options, change highlighting, and things like that. + +============================================================================== +9. Using autocommands *autocmd-use* + +For WRITING FILES there are four possible sets of events. Vim uses only one +of these sets for a write command: + +BufWriteCmd BufWritePre BufWritePost writing the whole buffer + FilterWritePre FilterWritePost writing to filter temp file +FileAppendCmd FileAppendPre FileAppendPost appending to a file +FileWriteCmd FileWritePre FileWritePost any other file write + +When there is a matching "*Cmd" autocommand, it is assumed it will do the +writing. No further writing is done and the other events are not triggered. +|Cmd-event| + +Note that the *WritePost commands should undo any changes to the buffer that +were caused by the *WritePre commands; otherwise, writing the file will have +the side effect of changing the buffer. + +Before executing the autocommands, the buffer from which the lines are to be +written temporarily becomes the current buffer. Unless the autocommands +change the current buffer or delete the previously current buffer, the +previously current buffer is made the current buffer again. + +The *WritePre and *AppendPre autocommands must not delete the buffer from +which the lines are to be written. + +The '[ and '] marks have a special position: +- Before the *ReadPre event the '[ mark is set to the line just above where + the new lines will be inserted. +- Before the *ReadPost event the '[ mark is set to the first line that was + just read, the '] mark to the last line. +- Before executing the *WritePre and *AppendPre autocommands the '[ mark is + set to the first line that will be written, the '] mark to the last line. +Careful: '[ and '] change when using commands that change the buffer. + +In commands which expect a file name, you can use "" for the file name +that is being read |:| (you can also use "%" for the current file +name). "" can be used for the buffer number of the currently effective +buffer. This also works for buffers that doesn't have a name. But it doesn't +work for files without a buffer (e.g., with ":r file"). + + *gzip-example* +Examples for reading and writing compressed files: > + :augroup gzip + : autocmd! + : autocmd BufReadPre,FileReadPre *.gz set bin + : autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip + : autocmd BufReadPost,FileReadPost *.gz set nobin + : autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r") + : autocmd BufWritePost,FileWritePost *.gz !mv :r + : autocmd BufWritePost,FileWritePost *.gz !gzip :r + + : autocmd FileAppendPre *.gz !gunzip + : autocmd FileAppendPre *.gz !mv :r + : autocmd FileAppendPost *.gz !mv :r + : autocmd FileAppendPost *.gz !gzip :r + :augroup END + +The "gzip" group is used to be able to delete any existing autocommands with +":autocmd!", for when the file is sourced twice. + +(":r" is the file name without the extension, see |:_%:|) + +The commands executed for the BufNewFile, BufRead/BufReadPost, BufWritePost, +FileAppendPost and VimLeave events do not set or reset the changed flag of the +buffer. When you decompress the buffer with the BufReadPost autocommands, you +can still exit with ":q". When you use ":undo" in BufWritePost to undo the +changes made by BufWritePre commands, you can still do ":q" (this also makes +"ZZ" work). If you do want the buffer to be marked as modified, set the +'modified' option. + +To execute Normal mode commands from an autocommand, use the ":normal" +command. Use with care! If the Normal mode command is not finished, the user +needs to type characters (e.g., after ":normal m" you need to type a mark +name). + +If you want the buffer to be unmodified after changing it, reset the +'modified' option. This makes it possible to exit the buffer with ":q" +instead of ":q!". + + *autocmd-nested* *E218* +By default, autocommands do not nest. If you use ":e" or ":w" in an +autocommand, Vim does not execute the BufRead and BufWrite autocommands for +those commands. If you do want this, use the "nested" flag for those commands +in which you want nesting. For example: > + :autocmd FileChangedShell *.c nested e! +The nesting is limited to 10 levels to get out of recursive loops. + +It's possible to use the ":au" command in an autocommand. This can be a +self-modifying command! This can be useful for an autocommand that should +execute only once. + +There is currently no way to disable the autocommands. If you want to write a +file without executing the autocommands for that type of file, write it under +another name and rename it with a shell command. In some situations you can +use the 'eventignore' option. + +Note: When reading a file (with ":read file" or with a filter command) and the +last line in the file does not have an , Vim remembers this. At the next +write (with ":write file" or with a filter command), if the same line is +written again as the last line in a file AND 'binary' is set, Vim does not +supply an . This makes a filter command on the just read lines write the +same file as was read, and makes a write command on just filtered lines write +the same file as was read from the filter. For example, another way to write +a compressed file: > + + :autocmd FileWritePre *.gz set bin|'[,']!gzip + :autocmd FileWritePost *.gz undo|set nobin +< + *autocommand-pattern* +You can specify multiple patterns, separated by commas. Here are some +examples: > + + :autocmd BufRead * set tw=79 nocin ic infercase fo=2croq + :autocmd BufRead .letter set tw=72 fo=2tcrq + :autocmd BufEnter .letter set dict=/usr/lib/dict/words + :autocmd BufLeave .letter set dict= + :autocmd BufRead,BufNewFile *.c,*.h set tw=0 cin noic + :autocmd BufEnter *.c,*.h abbr FOR for (i = 0; i < 3; ++i){}O + :autocmd BufLeave *.c,*.h unabbr FOR + +For makefiles (makefile, Makefile, imakefile, makefile.unix, etc.): > + + :autocmd BufEnter ?akefile* set include=^s\=include + :autocmd BufLeave ?akefile* set include& + +To always start editing C files at the first function: > + + :autocmd BufRead *.c,*.h 1;/^{ + +Without the "1;" above, the search would start from wherever the file was +entered, rather than from the start of the file. + + *skeleton* *template* +To read a skeleton (template) file when opening a new file: > + + :autocmd BufNewFile *.c 0r ~/vim/skeleton.c + :autocmd BufNewFile *.h 0r ~/vim/skeleton.h + :autocmd BufNewFile *.java 0r ~/vim/skeleton.java + +To insert the current date and time in a *.html file when writing it: > + + :autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s + :fun LastMod() + : if line("$") > 20 + : let l = 20 + : else + : let l = line("$") + : endif + : exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " . + : \ strftime("%Y %b %d") + :endfun + +You need to have a line "Last modified: " in the first 20 lines +of the file for this to work. Vim replaces (and anything in the +same line after it) with the current date and time. Explanation: + ks mark current position with mark 's' + call LastMod() call the LastMod() function to do the work + 's return the cursor to the old position +The LastMod() function checks if the file is shorter than 20 lines, and then +uses the ":g" command to find lines that contain "Last modified: ". For those +lines the ":s" command is executed to replace the existing date with the +current one. The ":execute" command is used to be able to use an expression +for the ":g" and ":s" commands. The date is obtained with the strftime() +function. You can change its argument to get another date string. + +When entering :autocmd on the command-line, completion of events and command +names may be done (with , CTRL-D, etc.) where appropriate. + +Vim executes all matching autocommands in the order that you specify them. +It is recommended that your first autocommand be used for all files by using +"*" as the file pattern. This means that you can define defaults you like +here for any settings, and if there is another matching autocommand it will +override these. But if there is no other matching autocommand, then at least +your default settings are recovered (if entering this file from another for +which autocommands did match). Note that "*" will also match files starting +with ".", unlike Unix shells. + + *autocmd-searchpat* +Autocommands do not change the current search patterns. Vim saves the current +search patterns before executing autocommands then restores them after the +autocommands finish. This means that autocommands do not affect the strings +highlighted with the 'hlsearch' option. Within autocommands, you can still +use search patterns normally, e.g., with the "n" command. +If you want an autocommand to set the search pattern, such that it is used +after the autocommand finishes, use the ":let @/ =" command. +The search-highlighting cannot be switched off with ":nohlsearch" in an +autocommand. Use the 'h' flag in the 'viminfo' option to disable search- +highlighting when starting Vim. + + *Cmd-event* +When using one of the "*Cmd" events, the matching autocommands are expected to +do the file reading or writing. This can be used when working with a special +kind of file, for example on a remote system. +CAREFUL: If you use these events in a wrong way, it may have the effect of +making it impossible to read or write the matching files! Make sure you test +your autocommands properly. Best is to use a pattern that will never match a +normal file name, for example "ftp://*". + +When defining a BufReadCmd it will be difficult for Vim to recover a crashed +editing session. When recovering from the original file, Vim reads only those +parts of a file that are not found in the swap file. Since that is not +possible with a BufReadCmd, use the |:preserve| command to make sure the +original file isn't needed for recovery. You might want to do this only when +you expect the file to be modified. + +The |v:cmdarg| variable holds the "++enc=" and "++ff=" argument that are +effective. These should be used for the command that reads/writes the file. +The |v:cmdbang| variable is one when "!" was used, zero otherwise. + +See the $VIMRUNTIME/plugin/netrw.vim for examples. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/change.txt b/en/change.txt new file mode 100644 index 000000000..f8400675f --- /dev/null +++ b/en/change.txt @@ -0,0 +1,1425 @@ +*change.txt* For Vim version 6.3. Last change: 2004 May 08 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +This file describes commands that delete or change text. In this context, +changing text means deleting the text and replacing it with other text using +one command. You can undo all of these commands. You can repeat the non-Ex +commands with the "." command. + +1. Deleting text |deleting| +2. Delete and insert |delete-insert| +3. Simple changes |simple-change| *changing* +4. Complex changes |complex-change| +5. Copying and moving text |copy-move| +6. Formatting text |formatting| + +For inserting text see |insert.txt|. + +============================================================================== +1. Deleting text *deleting* *E470* + +["x] or ** *x* *dl* +["x]x Delete [count] characters under and after the cursor + [into register x] (not |linewise|). Does the same as + "dl". + The key does not take a [count]. Instead, it + deletes the last character of the count. + See |:fixdel| if the key does not do what you + want. See |'whichwrap'| for deleting a line break + (join lines). {Vi does not support } + + *X* *dh* +["x]X Delete [count] characters before the cursor [into + register x] (not |linewise|). Does the same as "dh". + Also see |'whichwrap'|. + + *d* +["x]d{motion} Delete text that {motion} moves over [into register + x]. See below for exceptions. + + *dd* +["x]dd Delete [count] lines [into register x] |linewise|. + + *D* +["x]D Delete the characters under the cursor until the end + of the line and [count]-1 more lines [into register + x]; synonym for "d$". + (not |linewise|) + +{Visual}["x]x or *v_x* *v_d* *v_* +{Visual}["x]d or +{Visual}["x] Delete the highlighted text [into register x] (for + {Visual} see |Visual-mode|). {not in Vi} + +{Visual}["x]CTRL-H or *v_CTRL-H* *v_* +{Visual}["x] When in Select mode: Delete the highlighted text [into + register x]. + +{Visual}["x]X or *v_X* *v_D* *v_b_D* +{Visual}["x]D Delete the highlighted lines [into register x] (for + {Visual} see |Visual-mode|). In Visual block mode, + "D" deletes the highlighted text plus all text until + the end of the line. {not in Vi} + + *:d* *:de* *:del* *:delete* +:[range]d[elete] [x] Delete [range] lines (default: current line) [into + register x]. + +:[range]d[elete] [x] {count} + Delete {count} lines, starting with [range] + (default: current line |cmdline-ranges|) [into + register x]. + +These commands delete text. You can repeat them with the "." command +(except ":d") and undo them. Use Visual mode to delete blocks of text. See +|registers| for an explanation of registers. + +An exception for the d{motion} command: If the motion is not linewise, the +start and end of the motion are not in the same line, and there are only +blanks before the start and after the end of the motion, the delete becomes +linewise. This means that the delete also removes the line of blanks that you +might expect to remain. + +Trying to delete an empty region of text (e.g., "d0" in the first column) +is an error when 'cpoptions' includes the 'E' flag. + + *J* +J Join [count] lines, with a minimum of two lines. + Remove the indent and insert up to two spaces (see + below). + + *v_J* +{Visual}J Join the highlighted lines, with a minimum of two + lines. Remove the indent and insert up to two spaces + (see below). {not in Vi} + + *gJ* +gJ Join [count] lines, with a minimum of two lines. + Don't insert or remove any spaces. {not in Vi} + + *v_gJ* +{Visual}gJ Join the highlighted lines, with a minimum of two + lines. Don't insert or remove any spaces. {not in + Vi} + + *:j* *:join* +:[range]j[oin][!] Join [range] lines. Same as "J", except with [!] + the join does not insert or delete any spaces. + If a [range] has equal start and end values, this + command does nothing. The default behavior is to + join the current line with the line below it. + {not in Vi: !} + +:[range]j[oin][!] {count} + Join {count} lines, starting with [range] (default: + current line |cmdline-ranges|). Same as "J", except + with [!] the join does not insert or delete any + spaces. + {not in Vi: !} + +These commands delete the between lines. This has the effect of joining +multiple lines into one line. You can repeat these commands (except ":j") and +undo them. + +These commands, except "gJ", insert one space in place of the unless +there is trailing white space or the next line starts with a ')'. These +commands, except "gJ", delete any leading white space on the next line. If +the 'joinspaces' option is on, these commands insert two spaces after a '.', +'!' or '?' (but if 'cpoptions' includes the 'j' flag, they insert two spaces +only after a '.'). +The 'B' and 'M' flags in 'formatoptions' change the behavior for inserting +spaces before and after a multi-byte character |fo-table|. + + +============================================================================== +2. Delete and insert *delete-insert* *replacing* + + *R* +R Enter Replace mode: Each character you type replaces + an existing character, starting with the character + under the cursor. Repeat the entered text [count]-1 + times. See |Replace-mode| for more details. + + *gR* +gR Enter Virtual Replace mode: Each character you type + replaces existing characters in screen space. So a + may replace several characters at once. + Repeat the entered text [count]-1 times. See + |Virtual-Replace-mode| for more details. + {not available when compiled without the +vreplace + feature} + + *c* +["x]c{motion} Delete {motion} text [into register x] and start + insert. When 'cpoptions' includes the 'E' flag and + there is no text to delete (e.g., with "cTx" when the + cursor is just after an 'x'), an error occurs and + insert mode does not start (this is Vi compatible). + When 'cpoptions' does not include the 'E' flag, the + "c" command always starts insert mode, even if there + is no text to delete. + + *cc* +["x]cc Delete [count] lines [into register x] and start + insert |linewise|. If 'autoindent' is on, preserve + the indent of the first line. + + *C* +["x]C Delete from the cursor position to the end of the + line and [count]-1 more lines [into register x], and + start insert. Synonym for c$ (not |linewise|). + + *s* +["x]s Delete [count] characters [into register x] and start + insert (s stands for Substitute). Synonym for "cl" + (not |linewise|). + + *S* +["x]S Delete [count] lines [into register x] and start + insert. Synonym for "cc" |linewise|. + +{Visual}["x]c or *v_c* *v_s* +{Visual}["x]s Delete the highlighted text [into register x] and + start insert (for {Visual} see |Visual-mode|). {not + in Vi} + + *v_r* +{Visual}["x]r{char} Replace all selected characters by {char}. + + *v_C* +{Visual}["x]C Delete the highlighted lines [into register x] and + start insert. In Visual block mode it works + differently |v_b_C|. {not in Vi} + *v_S* +{Visual}["x]S Delete the highlighted lines [into register x] and + start insert (for {Visual} see |Visual-mode|). {not + in Vi} + *v_R* +{Visual}["x]R Currently just like {Visual}["x]S. In a next version + it might work differently. {not in Vi} + +Notes: +- You can end Insert and Replace mode with . +- See the section "Insert and Replace mode" |mode-ins-repl| for the other + special characters in these modes. +- The effect of [count] takes place after Vim exits Insert or Replace mode. +- When the 'cpoptions' option contains '$' and the change is within one line, + Vim continues to show the text to be deleted and puts a '$' at the last + deleted character. + +See |registers| for an explanation of registers. + +Replace mode is just like Insert mode, except that every character you enter +deletes one character. If you reach the end of a line, Vim appends any +further characters (just like Insert mode). In Replace mode, the backspace +key restores the original text (if there was any). (See section "Insert and +Replace mode" |mode-ins-repl|). + + *cw* *cW* +Special case: "cw" and "cW" work the same as "ce" and "cE" if the cursor is +on a non-blank. This is because Vim interprets "cw" as change-word, and a +word does not include the following white space. {Vi: "cw" when on a blank +followed by other blanks changes only the first blank; this is probably a +bug, because "dw" deletes all the blanks; use the 'w' flag in 'cpoptions' to +make it work like Vi anyway} + +If you prefer "cw" to include the space after a word, use this mapping: > + :map cw dwi +< + *:c* *:ch* *:change* +:{range}c[hange] Replace lines of text with some different text. + Type a line containing only "." to stop replacing. + Without {range}, this command changes only the current + line. + +============================================================================== +3. Simple changes *simple-change* + + *r* +r{char} Replace the character under the cursor with {char}. + If {char} is a or , a line break replaces the + character. To replace with a real , use CTRL-V + . CTRL-V replaces with a . + {Vi: CTRL-V still replaces with a line break, + cannot replace something with a } + If you give a [count], Vim replaces [count] characters + with [count] {char}s. When {char} is a or , + however, Vim inserts only one : "5r" replaces + five characters with a single line break. + When {char} is a or , Vim performs + autoindenting. This works just like deleting the + characters that are replaced and then doing + "i". + {char} can be entered as a digraph |digraph-arg|. + |:lmap| mappings apply to {char}. The CTRL-^ command + in Insert mode can be used to switch this on/off + |i_CTRL-^|. See |utf-8-char-arg| about using + composing characters when 'encoding' is Unicode. + + *gr* +gr{char} Replace the virtual characters under the cursor with + {char}. This replaces in screen space, not file + space. See |gR| and |Virtual-Replace-mode| for more + details. As with |r| a count may be given. + {char} can be entered like with |r|. + {not available when compiled without the +vreplace + feature} + + *digraph-arg* +The argument for Normal mode commands like |r| and |t| is a single character. +When 'cpo' doesn't contain the 'D' flag, this character can also be entered +like |digraphs|. First type CTRL-K and then the two digraph characters. +{not available when compiled without the |+digraphs| feature} + + *case* +The following commands change the case of letters. The currently active +|locale| is used. See |:language|. The LC_CTYPE value matters here. + + *~* +~ 'notildeop' option: Switch case of the character + under the cursor and move the cursor to the right. + If a [count] is given, do that many characters. {Vi: + no count} + +~{motion} 'tildeop' option: switch case of {motion} text. {Vi: + tilde cannot be used as an operator} + + *g~* +g~{motion} Switch case of {motion} text. {not in Vi} + +g~g~ *g~g~* *g~~* +g~~ Switch case of current line. {not in Vi}. + + *v_~* +{Visual}~ Switch case of highlighted text (for {Visual} see + |Visual-mode|). {not in Vi} + + *v_U* +{Visual}U Make highlighted text uppercase (for {Visual} see + |Visual-mode|). {not in Vi} + + *gU* *uppercase* +gU{motion} Make {motion} text uppercase. {not in Vi} + Example: > + :map! gUiw`]a +< This works in Insert mode: press CTRL-F to make the + word before the cursor uppercase. Handy to type + words in lowercase and then make them uppercase. + + +gUgU *gUgU* *gUU* +gUU Make current line uppercase. {not in Vi}. + + *v_u* +{Visual}u Make highlighted text lowercase (for {Visual} see + |Visual-mode|). {not in Vi} + + *gu* *lowercase* +gu{motion} Make {motion} text lowercase. {not in Vi} + +gugu *gugu* *guu* +guu Make current line lowercase. {not in Vi}. + + *g?* *rot13* +g?{motion} Rot13 encode {motion} text. {not in Vi} + + *v_g?* +{Visual}g? Rot13 encode the highlighted text (for {Visual} see + |Visual-mode|). {not in Vi} + +g?g? *g?g?* *g??* +g?? Rot13 encode current line. {not in Vi}. + + +Adding and subtracting ~ + *CTRL-A* +CTRL-A Add [count] to the number or alphabetic character at + or after the cursor. {not in Vi} + + *CTRL-X* +CTRL-X Subtract [count] from the number or alphabetic + character at or after the cursor. {not in Vi} + +The CTRL-A and CTRL-X commands work for (signed) decimal numbers, unsigned +octal and hexadecimal numbers and alphabetic characters. This depends on the +'nrformats' option. +- When 'nrformats' includes "alpha", Vim will change the alphabetic character + under or after the cursor. This is useful to make lists with an alphabetic + index. +- When 'nrformats' includes "hex", Vim assumes numbers starting with '0x' or + '0X' are hexadecimal. The case of the rightmost letter in the number + determines the case of the resulting hexadecimal number. If there is no + letter in the current number, Vim uses the previously detected case. +- When 'nrformats' includes "octal", Vim considers numbers starting with a '0' + to be octal. Other numbers are decimal and may have a preceding minus sign. + If the cursor is on a number, the commands apply to that number; otherwise + Vim uses the number to the right of the cursor. + +For numbers with leading zeros (including all octal and hexadecimal numbers), +Vim preserves the number of characters in the number when possible. CTRL-A on +"0077" results in "0100", CTRL-X on "0x100" results in "0x0ff". Note that +when 'nrformats' includes "octal", decimal numbers with leading zeros are +impossible because they are indistinguishable from octal numbers. + +The CTRL-A command is very useful in a macro. Example: Use the following +steps to make a numbered list. + +1. Create the first list entry, make sure it starts with a number. +2. qa - start recording into buffer 'a' +3. Y - yank the entry +4. p - put a copy of the entry below the first one +5. CTRL-A - increment the number +6. q - stop recording +7. @a - repeat the yank, put and increment times + + +SHIFTING LINES LEFT OR RIGHT *shift-left-right* + + *<* +<{motion} Shift {motion} lines one 'shiftwidth' leftwards. + + *<<* +<< Shift [count] lines one 'shiftwidth' leftwards. + + *v_<* +{Visual}[count]< Shift the highlighted lines [count] 'shiftwidth' + leftwards (for {Visual} see |Visual-mode|). {not in + Vi} + + *>* + >{motion} Shift {motion} lines one 'shiftwidth' rightwards. + + *>>* + >> Shift [count] lines one 'shiftwidth' rightwards. + + *v_>* +{Visual}[count]> Shift the highlighted lines [count] 'shiftwidth' + rightwards (for {Visual} see |Visual-mode|). {not in + Vi} + + *:<* +:[range]< Shift [range] lines one 'shiftwidth' left. Repeat '<' + for shifting multiple 'shiftwidth's. + +:[range]< {count} Shift {count} lines one 'shiftwidth' left, starting + with [range] (default current line |cmdline-ranges|). + Repeat '<' for shifting multiple 'shiftwidth's. + +:[range]le[ft] [indent] left align lines in [range]. Sets the indent in the + lines to [indent] (default 0). {not in Vi} + + *:>* +:[range]> Shift {count} [range] lines one 'shiftwidth' right. + Repeat '>' for shifting multiple 'shiftwidth's. + +:[range]> {count} Shift {count} lines one 'shiftwidth' right, starting + with [range] (default current line |cmdline-ranges|). + Repeat '>' for shifting multiple 'shiftwidth's. + +The ">" and "<" commands are handy for changing the indentation within +programs. Use the 'shiftwidth' option to set the size of the white space +which these commands insert or delete. Normally the 'shiftwidth' option is 8, +but you can set it to, say, 3 to make smaller indents. The shift leftwards +stops when there is no indent. The shift right does not affect empty lines. + +If the 'shiftround' option is on, the indent is rounded to a multiple of +'shiftwidth'. + +If the 'smartindent' option is on, or 'cindent' is on and 'cinkeys' contains +'#', shift right does not affect lines starting with '#' (these are supposed +to be C preprocessor lines that must stay in column 1). + +When the 'expandtab' option is off (this is the default) Vim uses s as +much as possible to make the indent. You can use ">><<" to replace an indent +made out of spaces with the same indent made out of s (and a few spaces +if necessary). If the 'expandtab' option is on, Vim uses only spaces. Then +you can use ">><<" to replace s in the indent by spaces (or use +":retab!"). + +To move a line several 'shiftwidth's, use Visual mode or the ":" commands. +For example: > + Vjj4> move three lines 4 indents to the right + :<<< move current line 3 indents to the left + :>> 5 move 5 lines 2 indents to the right + :5>> move line 5 2 indents to the right + +============================================================================== +4. Complex changes *complex-change* + + *!* *filter* +!{motion}{filter} Filter {motion} text lines through the external + program {filter}. + + *!!* +!!{filter} Filter [count] lines through the external program + {filter}. + + *v_!* +{Visual}!{filter} Filter the highlighted lines through the external + program {filter} (for {Visual} see |Visual-mode|). + {not in Vi} + +:{range}![!]{filter} [!][arg] *:range!* + Filter {range} lines through the external program + {filter}. Vim replaces the optional bangs with the + latest given command and appends the optional [arg]. + Vim saves the output of the filter command in a + temporary file and then reads the file into the + buffer. Vim uses the 'shellredir' option to redirect + the filter output to the temporary file. + When the 'R' flag is included in 'cpoptions' marks in + the filtered lines are deleted, unless the + |:keepmarks| command is used. Example: > + :keepmarks '<,'>!sort +< When the number of lines after filtering is less than + before, marks in the missing lines are deleted anyway. + + *=* +={motion} Filter {motion} lines through the external program + given with the 'equalprg' option. When the 'equalprg' + option is empty (this is the default), use the + internal formatting function |C-indenting|. But when + 'indentexpr' is not empty, it will be used instead + |indent-expression|. + + *==* +== Filter [count] lines like with ={motion}. + + *v_=* +{Visual}= Filter the highlighted lines like with ={motion}. + {not in Vi} + +A filter is a program that accepts text at standard input, changes it in some +way, and sends it to standard output. You can use the commands above to send +some text through a filter. Examples of filters are "sort", which sorts lines +alphabetically, and "indent", which formats C program files (you need a +version of indent that works like a filter; not all versions do). The 'shell' +option specifies the shell Vim uses to execute the filter command (See also +the 'shelltype' option). You can repeat filter commands with ".". Vim does +not recognize a comment (starting with '"') after the ":!" command. + + + *:s* *:su* *:substitute* +:[range]s[ubstitute]/{pattern}/{string}/[&][c][e][g][p][r][i][I] [count] + For each line in [range] replace a match of {pattern} + with {string}. + For the {pattern} see |pattern|. + {string} can be a literal string, or something + special; see |sub-replace-special|. + When [range] and [count] are omitted, replace in the + current line only. + When [count] is given, replace in [count] lines, + starting with the last line in [range]. When [range] + is omitted start in the current line. + Also see |cmdline-ranges|. + See |:s_flags| for the flags. + +:[range]s[ubstitute] [c][e][g][p][r][i][I] [count] +:[range]&[&][c][e][g][p][r][i][I] [count] *:&* + Repeat last :substitute with same search pattern and + substitute string, but without the same flags. You + may add extra flags (see |:s_flags|). + Note that after ":substitute" the '&' flag can't be + used, it's recognized as a pattern separator. + The space between ":substitute" and the 'c', 'g' and + 'r' flags isn't required, but in scripts it's a good + idea to keep it to avoid confusion. + +:[range]~[&][c][e][g][p][r][i][I] [count] *:~* + Repeat last substitute with same substitute string + but with last used search pattern. This is like + ":&r". See |:s_flags| for the flags. + + *&* +& Synonym for ":s//~/" (repeat last substitute). Note + that the flags are not remembered, thus it might + actually work differently. You can use ":&&" to keep + the flags. + + *g&* +g& Synonym for ":%s//~/&" (repeat last substitute on all + lines with the same flags). + Mnemonic: global substitute. {not in Vi} + + *:snomagic* *:sno* +:[range]sno[magic] ... Same as ":substitute", but always use 'nomagic'. + {not in Vi} + + *:smagic* *:sm* +:[range]sm[agic] ... Same as ":substitute", but always use 'magic'. + {not in Vi} + + *:s_flags* +The flags that you can use for the substitute commands: + +[&] Must be the first one: Keep the flags from the previous substitute + command. Examples: > + :&& + :s/this/that/& +< Note that ":s" and ":&" don't keep the flags. + {not in Vi} + +[c] Confirm each substitution. Vim highlights the matching string (with + |hl-IncSearch|). You can type: *:s_c* + 'y' to substitute this match + 'l' to substitute this match and then quit ("last") + 'n' to skip this match + to quit substituting + 'a' to substitute this and all remaining matches {not in Vi} + 'q' to quit substituting {not in Vi} + CTRL-E to scroll the screen up {not in Vi, not available when + compiled without the +insert_expand feature} + CTRL-Y to scroll the screen down {not in Vi, not available when + compiled without the +insert_expand feature} + If the 'edcompatible' option is on, Vim remembers the [c] flag and + toggles it each time you use it, but resets it when you give a new + search pattern. + {not in Vi: highlighting of the match, other responses than 'y' or 'n'} + +[e] When the search pattern fails, do not issue an error message and, in + particular, continue in maps as if no error occurred. This is most + useful to prevent the "No match" error from breaking a mapping. Vim + does not suppress the following error messages, however: + Regular expressions can't be delimited by letters + \ should be followed by /, ? or & + No previous substitute regular expression + Trailing characters + Interrupted + {not in Vi} + +[g] Replace all occurrences in the line. Without this argument, + replacement occurs only for the first occurrence in each line. If + the 'edcompatible' option is on, Vim remembers this flag and toggles + it each time you use it, but resets it when you give a new search + pattern. If the 'gdefault' option is on, this flag is on by default + and the [g] argument switches it off. + +[i] Ignore case for the pattern. The 'ignorecase' and 'smartcase' options + are not used. + {not in Vi} + +[I] Don't ignore case for the pattern. The 'ignorecase' and 'smartcase' + options are not used. + {not in Vi} + +[p] Print the line containing the last substitute. + {not in Vi} + +[r] Only useful in combination with ":&" or ":s" without arguments. ":&r" + works the same way as ":~": When the search pattern is empty, use the + previously used search pattern instead of the search pattern from the + last substitute or ":global". If the last command that did a search + was a substitute or ":global", there is no effect. If the last + command was a search command such as "/", use the pattern from that + command. + For ":s" with an argument this already happens: > + :s/blue/red/ + /green + :s//red/ or :~ or :&r +< The last commands will replace "green" with "red". > + :s/blue/red/ + /green + :& +< The last command will replace "blue" with "red". + {not in Vi} + +Note that there is no flag to change the "magicness" of the pattern. A +different command is used instead. The reason is that the flags can only be +found by skipping the pattern, and in order to skip the pattern the +"magicness" must be known. Catch 22! + +If the {pattern} for the substitute command is empty, the command uses the +pattern from the last substitute or ":global" command. With the [r] flag, the +command uses the pattern from the last substitute, ":global", or search +command. + +For compatibility with Vi these two exceptions are allowed: +"\/{string}/" and "\?{string}?" do the same as "//{string}/r". +"\&{string}&" does the same as "//{string}/". + *E146* +Instead of the '/' which surrounds the pattern and replacement string, you +can use any other character, but not an alphanumeric character, '\', '"' or +'|'. This is useful if you want to include a '/' in the search pattern or +replacement string. Example: > + :s+/+//+ + +For the definition of a pattern, see |pattern|. + + *sub-replace-special* *:s\=* +When the {string} starts with "\=" it is evaluated as an expression, see +|sub-replace-expression|. Otherwise these characters in {string} have a +special meaning: + +magic nomagic action ~ + & \& replaced with the whole matched pattern *s/\&* + \& & replaced with & + \0 replaced with the whole matched pattern *\0* *s/\0* + \1 replaced with the matched pattern in the first + pair of () *s/\1* + \2 replaced with the matched pattern in the first + pair of () *s/\2* + .. .. *s/\3* + \9 replaced with the matched pattern in the ninth + pair of () *s/\9* + ~ \~ replaced with the {string} of the previous + substitute *s~* + \~ ~ replaced with ~ *s/\~* + \u next character made uppercase *s/\u* + \U following characters made uppercase, until \E *s/\U* + \l next character made lowercase *s/\l* + \L following characters made lowercase, until \E *s/\L* + \e end of \u, \U, \l and \L (NOTE: not !) *s/\e* + \E end of \u, \U, \l and \L *s/\E* + split line in two at this point + (Type the as CTRL-V ) *s* + \r idem *s/\r* + \ insert a carriage-return (CTRL-M) + (Type the as CTRL-V ) *s/\* + \n insert a ( in the file) + (does NOT break the line) *s/\n* + \b insert a *s/\b* + \t insert a *s/\t* + \\ insert a single backslash *s/\\* + \x where x is any character not mentioned above: + Reserved for future expansion + +Examples: > + :s/a\|b/xxx\0xxx/g modifies "a b" to "xxxaxxx xxxbxxx" + :s/\([abc]\)\([efg]\)/\2\1/g modifies "af fa bg" to "fa fa gb" + :s/abcde/abc^Mde/ modifies "abcde" to "abc", "de" (two lines) + :s/$/\^M/ modifies "abcde" to "abcde^M" + +Note: In previous versions CTRL-V was handled in a special way. Since this is +not Vi compatible, this was removed. Use a backslash instead. + +command text result ~ +:s/aa/a^Ma/ aa aa +:s/aa/a\^Ma/ aa a^Ma +:s/aa/a\\^Ma/ aa a\a + +(you need to type CTRL-V to get a ^M here) + +The numbering of "\1", "\2" etc. is done based on which "\(" comes first in +the pattern (going left to right). When a parentheses group matches several +times, the last one will be used for "\1", "\2", etc. Example: > + :s/\(\(a[a-d] \)*\)/\2/ modifies "aa ab x" to "ab x" + +When using parentheses in combination with '|', like in \([ab]\)\|\([cd]\), +either the first or second pattern in parentheses did not match, so either +\1 or \2 is empty. Example: > + :s/\([ab]\)\|\([cd]\)/\1x/g modifies "a b c d" to "ax bx x x" +< + +Substitute with an expression *sub-replace-expression* + +When the substitute string starts with "\=" the remainer is interpreted as an +expression. This does not work recursively: a substitute() function inside +the expression cannot use "\=" for the substitute string. + +The special meaning for characters as mentioned at |sub-replace-special| does +not apply except "", "\" and "\\". Thus in the result of the +expression you need to use two backslashes get one, put a backslash before a + you want to insert and use a without a backslash where you want to +break the line. + +For convenience a character is also used as a line break. Prepend a +backslash to get a real character (which will be a NUL in the file). + +The whole matched text can be accessed with "submatch(0)". The text matched +with the first pair of () with "submatch(1)". Likewise for further +sub-matches in (). + +Be careful: The separation character must not appear in the expression! +Consider using a character like "@" or ":". There is no problem if the result +of the expression contains the separation character. + +Example: > + :s@\n@\="\r" . expand("$HOME") . "\r"@ +This replaces an end-of-line with a new line containing the value of $HOME. + + + *:pro* *:promptfind* +:promptf[ind] [string] + Put up a Search dialog. When [string] is given, it is + used as the initial search string. + {only for Win32, Motif and GTK GUI} + + *:promptr* *:promptrepl* +:promptr[epl] [string] + Put up a Search/Replace dialog. When [string] is + given, it is used as the initial search string. + {only for Win32, Motif and GTK GUI} + + *:ret* *:retab* +:[range]ret[ab][!] [new_tabstop] + Replace all sequences of white-space containing a + with new strings of white-space using the new + tabstop value given. If you do not specify a new + tabstop size or it is zero, Vim uses the current value + of 'tabstop'. + The current value of 'tabstop' is always used to + compute the width of existing tabs. + With !, Vim also replaces strings of only normal + spaces with tabs where appropriate. + With 'expandtab' on, Vim replaces all tabs with the + appropriate number of spaces. + This command sets 'tabstop' to the new value given, + and if performed on the whole file, which is default, + should not make any visible change. + Careful: This command modifies any characters + inside of strings in a C program. Use "\t" to avoid + this (that's a good habit anyway). + ":retab!" may also change a sequence of spaces by + characters, which can mess up a printf(). + {not in Vi} + Not available when |+ex_extra| feature was disabled at + compile time. + + *retab-example* +Example for using autocommands and ":retab" to edit a file which is stored +with tabstops at 8 but edited with tabstops set at 4. Warning: white space +inside of strings can change! Also see 'softtabstop' option. > + + :auto BufReadPost *.xx retab! 4 + :auto BufWritePre *.xx retab! 8 + :auto BufWritePost *.xx retab! 4 + :auto BufNewFile *.xx set ts=4 + +============================================================================== +5. Copying and moving text *copy-move* + + *quote* +"{a-zA-Z0-9.%#:-"} Use register {a-zA-Z0-9.%#:-"} for next delete, yank + or put (use uppercase character to append with + delete and yank) ({.%#:} only work with put). + + *:reg* *:registers* +:reg[isters] Display the contents of all numbered and named + registers. {not in Vi} + +:reg[isters] {arg} Display the contents of the numbered and named + registers that are mentioned in {arg}. For example: > + :dis 1a +< to display registers '1' and 'a'. Spaces are allowed + in {arg}. {not in Vi} + + *:di* *:display* +:di[splay] [arg] Same as :registers. {not in Vi} + + *y* *yank* +["x]y{motion} Yank {motion} text [into register x]. When no + characters are to be yanked (e.g., "y0" in column 1), + this is an error when 'cpoptions' includes the 'E' + flag. + + *yy* +["x]yy Yank [count] lines [into register x] |linewise|. + + *Y* +["x]Y yank [count] lines [into register x] (synonym for + yy, |linewise|). If you like "Y" to work from the + cursor to the end of line (which is more logical, + but not Vi-compatible) use ":map Y y$". + + *v_y* +{Visual}["x]y Yank the highlighted text [into register x] (for + {Visual} see |Visual-mode|). {not in Vi} + + *v_Y* +{Visual}["x]Y Yank the highlighted lines [into register x] (for + {Visual} see |Visual-mode|). {not in Vi} + + *:y* *:yank* +:[range]y[ank] [x] Yank [range] lines [into register x]. + +:[range]y[ank] [x] {count} + Yank {count} lines, starting with last line number + in [range] (default: current line |cmdline-ranges|), + [into register x]. + + *p* *put* *E353* +["x]p Put the text [from register x] after the cursor + [count] times. {Vi: no count} + + *P* +["x]P Put the text [from register x] before the cursor + [count] times. {Vi: no count} + + ** +["x] Put the text from a register before the cursor [count] + times. Uses the "* register, unless another is + specified. Using the mouse only works when 'mouse' + contains 'n' or 'a'. + {not in Vi} + If you have a scrollwheel and often accidentally paste + text, you can use these mappings to disable the + pasting with the middle mouse button: > + :map + :imap +< You might want to disable the multi-click versions + too, see |double-click|. + + *gp* +["x]gp Just like "p", but leave the cursor just after the new + text. {not in Vi} + + *gP* +["x]gP Just like "P", but leave the cursor just after the new + text. {not in Vi} + + *:pu* *:put* +:[line]pu[t] [x] Put the text [from register x] after [line] (default + current line). This always works |linewise|, thus + this command can be used to put a yanked block as new + lines. + The register can also be '=' followed by an optional + expression. The expression continues until the end of + the command. You need to escape the '|' and '"' + characters to prevent them from terminating the + command. Example: > + :put ='path' . \",/test\" +< If there is no expression after '=', Vim uses the + previous expression. You can see it with ":dis =". + +:[line]pu[t]! [x] Put the text [from register x] before [line] (default + current line). + +["x]]p or *]p* *]* +["x]] Like "p", but adjust the indent to the current line. + Using the mouse only works when 'mouse' contains 'n' + or 'a'. {not in Vi} + +["x][P or *[P* +["x]]P or *]P* +["x][p or *[p* *[* +["x][ Like "P", but adjust the indent to the current line. + Using the mouse only works when 'mouse' contains 'n' + or 'a'. {not in Vi} + +You can use these commands to copy text from one place to another. Do this +by first getting the text into a register with a yank, delete or change +command, then inserting the register contents with a put command. You can +also use these commands to move text from one file to another, because Vim +preserves all registers when changing buffers (the CTRL-^ command is a quick +way to toggle between two files). + + *linewise-register* *characterwise-register* +You can repeat the put commands with "." (except for :put) and undo them. If +the command that was used to get the text into the register was |linewise|, +Vim inserts the text below ("p") or above ("P") the line where the cursor is. +Otherwise Vim inserts the text after ("p") or before ("P") the cursor. With +the ":put" command, Vim always inserts the text in the next line. You can +exchange two characters with the command sequence "xp". You can exchange two +lines with the command sequence "ddp". You can exchange two words with the +command sequence "deep" (start with the cursor in the blank space before the +first word). You can use the "']" or "`]" command after the put command to +move the cursor to the end of the inserted text, or use "'[" or "`[" to move +the cursor to the start. + + *put-Visual-mode* *v_p* *v_P* +When using a put command like |p| or |P| in Visual mode, Vim will try to +replace the selected text with the contents of the register. Whether this +works well depends on the type of selection and the type of the text in the +register. With blockwise selection it also depends on the size of the block +and whether the corners are on an existing character. (implementation detail: +it actually works by first putting the register after the selection and then +deleting the selection). + + *blockwise-register* +If you use a blockwise Visual mode command to get the text into the register, +the block of text will be inserted before ("P") or after ("p") the cursor +column in the current and next lines. Vim makes the whole block of text start +in the same column. Thus the inserted text looks the same as when it was +yanked or deleted. Vim may replace some characters with spaces to make +this happen. However, if the width of the block is not a multiple of a +width and the text after the inserted block contains s, that text may be +misaligned. + +Note that after a characterwise yank command, Vim leaves the cursor on the +first yanked character that is closest to the start of the buffer. This means +that "yl" doesn't move the cursor, but "yh" moves the cursor one character +left. +Rationale: In Vi the "y" command followed by a backwards motion would + sometimes not move the cursor to the first yanked character, + because redisplaying was skipped. In Vim it always moves to + the first character, as specified by Posix. +With a linewise yank command the cursor is put in the first line, but the +column is unmodified, thus it may not be on the first yanked character. + +There are nine types of registers: *registers* *E354* +1. The unnamed register "" +2. 10 numbered registers "0 to "9 +3. The small delete register "- +4. 26 named registers "a to "z or "A to "Z +5. four read-only registers ":, "., "% and "# +6. the expression register "= +7. The selection and drop registers "*, "+ and "~ +8. The black hole register "_ +9. Last search pattern register "/ + +1. Unnamed register "" *quote_quote* *quotequote* +Vim fills this register with text deleted with the "d", "c", "s", "x" commands +or copied with the yank "y" command, regardless of whether or not a specific +register was used (e.g. "xdd). An exception is the '_' register: "_dd does +not store the deleted text in any register. Vim uses the contents of this +register for any put command (p or P) which does not specify a register. +Additionally you can access it with the name '"'. This means you have to type +two double quotes. Writing to the "" register writes to register "0. +{Vi: register contents are lost when changing files, no '"'} + +2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1* + *quote2* *quote3* *quote4* *quote9* +Vim fills these registers with text from yank and delete commands. + Numbered register 0 contains the text from the most recent yank command, +unless the command specified another register with ["x]. + Numbered register 1 contains the text deleted by the most recent delete or +change command, unless the command specified another register or the text is +less than one line (the small delete register is used then). An exception is +made for these commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|. +Register "1 is always used then (this is Vi compatible). The "- register is +used as well if the delete is within a line. + With each successive deletion or change, Vim shifts the previous contents +of register 1 into register 2, 2 into 3, and so forth, losing the previous +contents of register 9. +{Vi: numbered register contents are lost when changing files; register 0 does +not exist} + +3. Small delete register "- *quote_-* *quote-* +This register contains text from commands that delete less than one line, +except when the command specifies a register with ["x]. +{not in Vi} + +4. Named registers "a to "z or "A to "Z *quote_alpha* *quotea* +Vim fills these registers only when you say so. Specify them as lowercase +letters to replace their previous contents or as uppercase letters to append +to their previous contents. + +5. Read-only registers ":, "., "% and "# +These are '%', '#', ':' and '.'. You can use them only with the "p", "P", +and ":put" commands and with CTRL-R. {not in Vi} + *quote_.* *quote.* *E29* + ". Contains the last inserted text (the same as what is inserted + with the insert mode commands CTRL-A and CTRL-@). Note: this + doesn't work with CTRL-R on the command-line. It works a bit + differently, like inserting the text instead of putting it + ('textwidth' and other options affect what is inserted). + *quote_%* *quote%* + "% Contains the name of the current file. + *quote_#* *quote#* + "# Contains the name of the alternate file. + *quote_:* *quote:* *E30* + ": Contains the most recent executed command-line. Example: Use + "@:" to repeat the previous command-line command. + The command-line is only stored in this register when at least + one character of it was typed. Thus it remains unchanged if + the command was completely from a mapping. + {not available when compiled without the |+cmdline_hist| + feature} + +6. Expression register "= *quote_=* *quote=* +This is not really a register that stores text, but is a way to use an +expression in commands which use a register. The expression register is +read-only; you cannot put text into it. After the '=', the cursor moves to +the command-line, where you can enter any expression (see |expression|). All +normal command-line editing commands are available, including a special +history for expressions. When you end the command-line by typing , Vim +computes the result of the expression. If you end it with , Vim abandons +the expression. If you do not enter an expression, Vim uses the previous +expression (like with the "/" command). If the "= register is used for the +"p" command, the string is split up at characters. If the string ends in +a , it is regarded as a linewise register. {not in Vi} + +7. Selection and drop registers "*, "+ and "~ +Use these register for storing and retrieving the selected text for the GUI. +See |quotestar| and |quoteplus|. When the clipboard is not available or not +working, the unnamed register is used instead. {not in Vi} + +Note that there is only a distinction between "* and "+ for X11 systems. For +an explanation of the difference, see |x11-selection|. Under MS-Windows, use +of "* and "+ is actually synonymous and refers to the |gui-clipboard|. + + *quote_~* *quote~* ** +The read-only "~ register stores the dropped text from the last drag'n'drop +operation. When something has been dropped onto Vim, the "~ register is +filled in and the pseudo key is sent for notification. You can remap +this key if you want; the default action (for all modes) is to insert the +contents of the "~ register at the cursor position. {not in Vi} +{only available when compiled with the |+dnd| feature, curently only with the +GTK GUI} + +Note: The "~ register is only used when dropping plain text onto Vim. +Drag'n'drop of URI lists is handled internally. + +8. Black hole register "_ *quote_* +When writing to this register, nothing happens. This can be used to delete +text without affecting the normal registers. When reading from this register, +nothing is returned. {not in Vi} + +9. Last search pattern register "/ *quote_/* *quote/* +Contains the most recent search-pattern. This is used for "n" and 'hlsearch'. +It is writable with ":let", you can change it to have 'hlsearch' highlight +other matches without actually searching. You can't yank or delete into this +register. {not in Vi} + + *@/* +You can write to a register with a ":let" command |:let-@|. Example: > + :let @/ = "the" + +If you use a put command without specifying a register, Vim uses the register +that was last filled (this is also the contents of the unnamed register). If +you are confused, use the ":dis" command to find out what Vim will put (this +command displays all named and numbered registers; the unnamed register is +labelled '"'). + +The next three commands always work on whole lines. + +:[range]co[py] {address} *:co* *:copy* + Copy the lines given by [range] to below the line + given by {address}. + + *:t* +:t Synonym for copy. + +:[range]m[ove] {address} *:m* *:mo* *:move* *E134* + Move the lines given by [range] to below the line + given by {address}. + +============================================================================== +6. Formatting text *formatting* + +:[range]ce[nter] [width] *:ce* *:center* + Center lines in [range] between [width] columns + (default 'textwidth' or 80 when 'textwidth' is 0). + {not in Vi} + Not available when |+ex_extra| feature was disabled at + compile time. + +:[range]ri[ght] [width] *:ri* *:right* + Right-align lines in [range] at [width] columns + (default 'textwidth' or 80 when 'textwidth' is 0). + {not in Vi} + Not available when |+ex_extra| feature was disabled at + compile time. + + *:le* *:left* +:[range]le[ft] [indent] + Left-align lines in [range]. Sets the indent in the + lines to [indent] (default 0). {not in Vi} + Not available when |+ex_extra| feature was disabled at + compile time. + + *gq* +gq{motion} Format the lines that {motion} moves over. The + 'textwidth' option controls the length of each + formatted line (see below). If the 'textwidth' option + is 0, the formatted line length is the screen width + (with a maximum width of 79). {not in Vi} + The 'formatoptions' option controls the type of + formatting |fo-table|. + NOTE: The "Q" command formerly performed this + function. If you still want to use "Q" for + formatting, use this mapping: > + :nnoremap Q gq + +gqgq *gqgq* *gqq* +gqq Format the current line. {not in Vi} + + *v_gq* +{Visual}gq Format the highlighted text. (for {Visual} see + |Visual-mode|). {not in Vi} + + *gw* +gw{motion} Format the lines that {motion} moves over. Similar to + |gq| but puts the cursor back at the same position in + the text. However, 'formatprg' is not used. + {not in Vi} + +Example: To format the current paragraph use: *gqap* > + gqap + +The "gq" command leaves the cursor in the line where the motion command takes +the cursor. This allows you to repeat formatting repeated with ".". This +works well with "gqj" (format current and next line) and "gq}" (format until +end of paragraph). Note: When 'formatprg' is set, "gq" leaves the cursor on +the first formatted line (as with using a filter command). + +If you want to format the current paragraph and continue where you were, use: > + gwap +If you always want to keep paragraphs formatted you may want to add the 'a' +flag to 'formatoptions'. See |auto-format|. + +If the 'autoindent' option is on, Vim uses the indent of the first line for +the following lines. + +Formatting does not change empty lines (but it does change lines with only +white space!). + +The 'joinspaces' option is used when lines are joined together. + +You can set the 'formatprg' option to the name of an external program for Vim +to use for text formatting. The 'textwidth' and other options have no effect +on formatting by an external program. + + *right-justify* +There is no command in Vim to right justify text. You can do it with +an external command, like "par" (e.g.: "!}par" to format until the end of the +paragraph) or set 'formatprg' to "par". + + *format-comments* +Vim can format comments in a special way. Vim recognizes a comment by a +specific string at the start of the line (ignoring white space). Three types +of comments can be used: + +- A comment string that repeats at the start of each line. An example is the + type of comment used in shell scripts, starting with "#". +- A comment string that occurs only in the first line, not in the following + lines. An example is this list with dashes. +- Three-piece comments that have a start string, an end string, and optional + lines in between. The strings for the start, middle and end are different. + An example is the C-style comment: + /* + * this is a C comment + */ + +The 'comments' option is a comma-separated list of parts. Each part defines a +type of comment string. A part consists of: + {flags}:{string} + +{string} is the literal text that must appear. + +{flags}: + n Nested comment. Nesting with mixed parts is allowed. If 'comments' + is "n:),n:>" a line starting with "> ) >" is a comment. + + b Blank (, or ) required after {string}. + + f Only the first line has the comment string. Do not repeat comment on + the next line, but preserve indentation (e.g., a bullet-list). + + s Start of three-piece comment + + m Middle of a three-piece comment + + e End of a three-piece comment + + l Left adjust middle with start or end (default). Only recognized when + used together with 's' or 'e'. + + r Right adjust middle with start or end. Only recognized when used + together with 's' or 'e'. + + O Don't use this one for the "O" command. + + x Allows three-piece comments to be ended by just typing the last + character of the end-comment string as the first character on a new + line, when the middle-comment string has already been inserted + automatically. See below for more details. + + {digits} + When together with 's' or 'e': add extra indent for the middle part. + This can be used to left-align the middle part with the start or end + and then add an offset. + + -{digits} + Like {digits} but reduce the indent. This only works when there is + some indent for the start or end part that can be removed. + +When a string has none of the 'f', 's', 'm' or 'e' flags, Vim assumes the +comment string repeats at the start of each line. The flags field may be +empty. + +Any blank space in the text before and after the {string} is part of the +{string}, so do not include leading or trailing blanks unless the blanks are a +required part of the comment string. + +When one comment leader is part of another, specify the part after the whole. +For example, to include both "-" and "->", use > + :set comments=f:->,f:- + +A three-piece comment must always be given as start,middle,end, with no other +parts in between. An example of a three-piece comment is > + sr:/*,mb:*,ex:*/ +for C-comments. To avoid recognizing "*ptr" as a comment, the middle string +includes the 'b' flag. For three-piece comments, Vim checks the text after +the start and middle strings for the end string. If Vim finds the end string, +the comment does not continue on the next line. Three-piece comments must +have a middle string because otherwise Vim can't recognize the middle lines. + +Notice the use of the "x" flag in the above three-piece comment definition. +When you hit Return in a C-comment, Vim will insert the middle comment leader +for the new line, e.g. " * ". To close this comment you just have to type "/" +before typing anything else on the new line. This will replace the +middle-comment leader with the end-comment leader, leaving just " */". There +is no need to hit BackSpace first. + +Examples: > + "b:*" Includes lines starting with "*", but not if the "*" is + followed by a non-blank. This avoids a pointer dereference + like "*str" to be recognized as a comment. + "n:>" Includes a line starting with ">", ">>", ">>>", etc. + "fb:-" Format a list that starts with "- ". + +By default, "b:#" is included. This means that a line that starts with +"#include" is not recognized as a comment line. But a line that starts with +"# define" is recognized. This is a compromise. + +Often the alignment can be changed from right alignment to a left alignment +with an additional space. For example, for Javadoc comments, this can be +used (insert a backslash before the space when using ":set"): > + s1:/*,mb:*,ex:*/ +Note that an offset is included with start, so that the middle part is left +aligned with the start and then an offset of one character added. This makes +it possible to left align the start and middle for this construction: > + /** + * comment + */ + +{not available when compiled without the |+comments| feature} + + *fo-table* +You can use the 'formatoptions' option to influence how Vim formats text. +'formatoptions' is a string that can contain any of the letters below. The +default setting is "tcq". You can separate the option letters with commas for +readability. + +letter meaning when present in 'formatoptions' ~ + +t Auto-wrap text using textwidth (does not apply to comments) +c Auto-wrap comments using textwidth, inserting the current comment + leader automatically. +r Automatically insert the current comment leader after hitting + in Insert mode. +o Automatically insert the current comment leader after hitting 'o' or + 'O' in Normal mode. +q Allow formatting of comments with "gq". + Note that formatting will not change blank lines or lines containing + only the comment leader. A new paragraph starts after such a line, + or when the comment leader changes. +w Trailing white space indicates a paragraph continues in the next line. + A line that ends in a non-white character ends a paragraph. +a Automatic formatting of paragraphs. Every time text is inserted or + deleted the paragraph will be reformatted. See |auto-format|. + When the 'c' flag is present this only happens for recognized + comments. +n When formatting text, recognize numbered lists. The indent of the + text after the number is used for the next line. The number may + optionally be followed by '.', ':', ')', ']' or '}'. Note that + 'autoindent' must be set too. Doesn't work well together with "2". + Example: > + 1. the first item + wraps + 2. the second item +2 When formatting text, use the indent of the second line of a paragraph + for the rest of the paragraph, instead of the indent of the first + line. This supports paragraphs in which the first line has a + different indent than the rest. Note that 'autoindent' must be set + too. Example: > + first line of a paragraph + second line of the same paragraph + third line. +v Vi-compatible auto-wrapping in insert mode: Only break a line at a + blank that you have entered during the current insert command. (Note: + this is not 100% Vi compatible. Vi has some "unexpected features" or + bugs in this area. It uses the screen column instead of the line + column.) +b Like 'v', but only auto-wrap if you enter a blank at or before + the wrap margin. If the line was longer than 'textwidth' when you + started the insert, or you do not enter a blank in the insert before + reaching 'textwidth', Vim does not perform auto-wrapping. +l Long lines are not broken in insert mode: When a line was longer than + 'textwidth' when the insert command started, Vim does not + automatically format it. +m Also break at a multi-byte character above 255. This is useful for + Asian text where every character is a word on its own. +M When joining lines, don't insert a space before or after a multi-byte + character. Overrules the 'B' flag. +B When joining lines, don't insert a space between two multi-byte + characters. Overruled by the 'M' flag. +1 Don't break a line after a one-letter word. It's broken before it + instead (if possible). + + +With 't' and 'c' you can specify when Vim performs auto-wrapping: +value action ~ +"" no automatic formatting (you can use "gq" for manual formatting) +"t" automatic formatting of text, but not comments +"c" automatic formatting for comments, but not text (good for C code) +"tc" automatic formatting for text and comments + +Note that when 'textwidth' is 0, Vim does no formatting anyway (but does +insert comment leaders according to the 'comments' option). + +Note that when 'paste' is on, Vim does no formatting at all. + +Note that 'textwidth' can be non-zero even if Vim never performs auto-wrapping; +'textwidth' is still useful for formatting with "gq". + +If the 'comments' option includes "/*", "*" and/or "*/", then Vim has some +built in stuff to treat these types of comments a bit more cleverly. +Opening a new line before or after "/*" or "*/" (with 'r' or 'o' present in +'formatoptions') gives the correct start of the line automatically. The same +happens with formatting and auto-wrapping. Opening a line after a line +starting with "/*" or "*" and containing "*/", will cause no comment leader to +be inserted, and the indent of the new line is taken from the line containing +the start of the comment. +E.g.: + /* ~ + * Your typical comment. ~ + */ ~ + The indent on this line is the same as the start of the above + comment. + +All of this should be really cool, especially in conjunction with the new +:autocmd command to prepare different settings for different types of file. + +Some examples: + for C code (only format comments): > + :set fo=croq +< for Mail/news (format all, don't start comment with "o" command): > + :set fo=tcrq +< + +Automatic formatting *auto-format* + +When the 'a' flag is present in 'formatoptions' text is formatted +automatically when inserting text or deleting text. This works nice for +editing text paragraphs. A few hints on how to use this: + +- You need to properly define paragraphs. The simplest is paragraphs that are + separated by a blank line. When there is no separating blank line, consider + using the 'w' flag and adding a space at the end of each line in the + paragraphs except the last one. + +- You can set the 'formatoptions' based on the type of file |filetype| or + specifically for one file with a |modeline|. + +- Set 'formatoptions' to "aw2tq" to make text with indents like this: + + bla bla foobar bla + bla foobar bla foobar bla + bla bla foobar bla + bla foobar bla bla foobar + +- Add the 'c' flag to only auto-format comments. Useful in source code. + +And a few warnings: + +- When part of the text is not properly separated in paragraphs, making + changes in this text will cause it to be formatted anyway. Consider doing > + + :set fo-=a + +- When using the 'w' flag (trailing space means paragraph continues) and + deleting the last line of a paragraph with |dd|, the paragraph will be + joined with the next one. + +- Changed text is saved for undo. Formatting is also a change. Thus each + format action saves text for undo. This may consume quite a lot of memory. + +- Formatting a long paragraph and/or with complicated indenting may be slow. + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/cmdline.txt b/en/cmdline.txt new file mode 100644 index 000000000..077b529f4 --- /dev/null +++ b/en/cmdline.txt @@ -0,0 +1,992 @@ +*cmdline.txt* For Vim version 6.3. Last change: 2004 Mar 31 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *Cmdline-mode* *Command-line-mode* +Command-line mode *Cmdline* *Command-line* *mode-cmdline* *:* + +Command-line mode is used to enter Ex commands (":"), search patterns +("/" and "?"), and filter commands ("!"). + +Basic command line editing is explained in chapter 20 of the user manual +|usr_20.txt|. + +1. Command-line editing |cmdline-editing| +2. Command-line completion |cmdline-completion| +3. Ex command-lines |cmdline-lines| +4. Ex command-line ranges |cmdline-ranges| +5. Ex special characters |cmdline-special| +6. Command-line window |cmdline-window| + +============================================================================== +1. Command-line editing *cmdline-editing* + +Normally characters are inserted in front of the cursor position. You can +move around in the command-line with the left and right cursor keys. With the + key, you can toggle between inserting and overstriking characters. +{Vi: can only alter the last character in the line} + +Note that if your keyboard does not have working cursor keys or any of the +other special keys, you can use ":cnoremap" to define another key for them. +For example, to define tcsh style editing keys: *tcsh-style* > + :cnoremap + :cnoremap + :cnoremap + :cnoremap b + :cnoremap f +(<> notation |<>|; type all this literally) + + *cmdline-too-long* +When the command line is getting longer than what fits on the screen, only the +part that fits will be shown. The cursor can only move in this visible part, +thus you cannot edit beyond that. + + *cmdline-history* *history* +The command-lines that you enter are remembered in a history table. You can +recall them with the up and down cursor keys. There are actually four +history tables: +- one for ':' commands +- one for search strings +- one for expressions +- one for input lines, typed for the |input()| function. +These are completely separate. Each history can only be accessed when +entering the same type of line. +Use the 'history' option to set the number of lines that are remembered +(default: 20). +Notes: +- When you enter a command-line that is exactly the same as an older one, the + old one is removed (to avoid repeated commands moving older commands out of + the history). +- Only commands that are typed are remembered. Ones that completely come from + mappings are not put in the history +- All searches are put in the search history, including the ones that come + from commands like "*" and "#". But for a mapping, only the last search is + remembered (to avoid that long mappings trash the history). +{Vi: no history} +{not available when compiled without the |+cmdline_hist| feature} + +There is an automatic completion of names on the command-line; see +|cmdline-completion|. + + *c_CTRL-V* +CTRL-V Insert next non-digit literally. Up to three digits form the + decimal value of a single byte. The non-digit and the three + digits are not considered for mapping. This works the same + way as in Insert mode (see above, |i_CTRL-V|). + Note: Under Windows CTRL-V is often mapped to paste text. + Use CTRL-Q instead then. + *c_CTRL-Q* +CTRL-Q Same as CTRL-V. But with some terminals it is used for + control flow, it doesn't work then. + + *c_* + cursor left + *c_* + cursor right + *c_* + or *c_* + cursor one WORD left + *c_* + or *c_* + cursor one WORD right +CTRL-B or *c_CTRL-B* *c_* + cursor to beginning of command-line +CTRL-E or *c_CTRL-E* *c_* + cursor to end of command-line + + *c_* + cursor to position of mouse click. + +CTRL-H *c_* *c_CTRL-H* + delete the character in front of the cursor (see |:fixdel| if + your key does not do what you want). + *c_* + delete the character under the cursor (at end of line: + character before the cursor) (see |:fixdel| if your + key does not do what you want). + *c_CTRL-W* +CTRL-W delete the word before the cursor + *c_CTRL-U* +CTRL-U remove all characters between the cursor position and + the beginning of the line. Previous versions of vim + deleted all characters on the line. If that is the + preferred behavior, add the following to your .vimrc: > + :cnoremap +< + Note: if the command-line becomes empty with one of the + delete commands, Command-line mode is quit. + *c_* + Toggle between insert and overstrike. {not in Vi} + +{char1} {char2} or *c_digraph* +CTRL-K {char1} {char2} *c_CTRL-K* + enter digraph (see |digraphs|). When {char1} is a special + key, the code for that key is inserted in <> form. {not in Vi} + +CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_* + Insert the contents of a numbered or named register. Between + typing CTRL-R and the second character '"' will be displayed + to indicate that you are expected to enter the name of a + register. + The text is inserted as if you typed it, but mappings and + abbreviations are not used. Command-line completion through + 'wildchar' is not triggered though. And characters that end + the command line are inserted literally (, , , + ). A or CTRL-W could still end the command line + though, and remaining characters will then be interpreted in + another mode, which might not be what you intended. + Special registers: + '"' the unnamed register, containing the text of + the last delete or yank + '%' the current file name + '#' the alternate file name + '*' the clipboard contents (X11: primary selection) + '+' the clipboard contents + '/' the last search pattern + ':' the last command-line + '-' the last small (less than a line) delete + '.' the last inserted text + *c_CTRL-R_=* + '=' the expression register: you are prompted to + enter an expression (see |expression|) + See |registers| about registers. {not in Vi} + +CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c__* +CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c__* +CTRL-R CTRL-W *c_CTRL-R_CTRL-W* *c__* +CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c__* + Insert the object under the cursor: + CTRL-F the Filename under the cursor + CTRL-P the Filename under the cursor, expanded with + 'path' as in |gf| + CTRL-W the Word under the cursor + CTRL-A the WORD under the cursor; see |WORD| + {not in Vi} + CTRL-F and CTRL-P: {only when +file_in_path feature is + included} + + *c_CTRL-R_CTRL-R* *c__* + *c_CTRL-R_CTRL-O* *c__* +CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} +CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} + Insert register or object under the cursor. Works like + |c_CTRL-R| but inserts the text literally. For example, if + register a contains "xy^Hz" (where ^H is a backspace), + "CTRL-R a" will insert "xz" while "CTRL-R CTRL-R a" will + insert "xy^Hz". + +CTRL-\ e {expr} *c_CTRL-\_e* + Evaluate {expr} and replace the whole command line with the + result. You will be prompted for the expression, type + to finish it. It's most useful in mappings though. See + |expression|. + See |c_CTRL-R_=| for inserting the result of an expression. + Useful functions are |getcmdline()| and |getcmdpos()|. + The cursor position is unchanged, except when the cursor was + at the end of the line, then it stays at the end. + |setcmdpos()| can be used to set the cursor position. + Example: > + :cmap eAppendSome() + :func AppendSome() + :let cmd = getcmdline() . " Some()" + :" place the cursor on the ) + :call setcmdpos(strlen(cmd)) + :return cmd + :endfunc +< + *c_CTRL-Y* +CTRL-Y When there is a modeless selection, copy the selection into + the clipboard. |modeless-selection| + If there is no selection CTRL-Y is inserted as a character. + +CTRL-J *c_CTRL-J* *c_* *c_* + or start entered command + *c_* + When typed and 'x' not present in 'cpoptions', quit + Command-line mode without executing. In macros or when 'x' + present in 'cpoptions', start entered command. + *c_CTRL-C* +CTRL-C quit command-line without executing + + *c_* + recall older command-line from history, whose beginning + matches the current command-line (see below). + {not available when compiled without the |+cmdline_hist| + feature} + *c_* + recall more recent command-line from history, whose beginning + matches the current command-line (see below). + {not available when compiled without the |+cmdline_hist| + feature} + + *c_* *c_* + or + recall older command-line from history + {not available when compiled without the |+cmdline_hist| + feature} + *c_* *c_* + or + recall more recent command-line from history + {not available when compiled without the |+cmdline_hist| + feature} + +CTRL-D command-line completion (see |cmdline-completion|) +'wildchar' option + command-line completion (see |cmdline-completion|) +CTRL-N command-line completion (see |cmdline-completion|) +CTRL-P command-line completion (see |cmdline-completion|) +CTRL-A command-line completion (see |cmdline-completion|) +CTRL-L command-line completion (see |cmdline-completion|) + + *c_CTRL-_* +CTRL-_ a - switch between Hebrew and English keyboard mode, which is + private to the command-line and not related to hkmap. + This is useful when Hebrew text entry is required in the + command-line, searches, abbreviations, etc. Applies only if + Vim is compiled with the |+rightleft| feature and the + 'allowrevins' option is set. + See |rileft.txt|. + + b - switch between Farsi and English keyboard mode, which is + private to the command-line and not related to fkmap. In + Farsi keyboard mode the characters are inserted in reverse + insert manner. This is useful when Farsi text entry is + required in the command-line, searches, abbreviations, etc. + Applies only if Vim is compiled with the |+farsi| feature. + See |farsi.txt|. + + *c_CTRL-^* +CTRL-^ Toggle the use of language |:lmap| mappings and/or Input + Method. + When typing a pattern for a search command and 'imsearch' is + not -1, VAL is the value of 'imsearch', otherwise VAL is the + value of 'iminsert'. + When language mappings are defined: + - If VAL is 1 (langmap mappings used) it becomes 0 (no langmap + mappings used). + - If VAL was not 1 it becomes 1, thus langmap mappings are + enabled. + When no language mappings are defined: + - If VAL is 2 (Input Method is used) it becomes 0 (no input + method used) + - If VAL has another value it becomes 2, thus the Input Method + is enabled. + These language mappings are normally used to type characters + that are different from what the keyboard produces. The + 'keymap' option can be used to install a whole number of them. + When entering a command line, langmap mappings are switched + off, since you are expected to type a command. After + switching it on with CTRL-^, the new state is not used again + for the next command or Search pattern. + {not in Vi} + +For Emacs-style editing on the command-line see |emacs-keys|. + +The and keys take the current command-line as a search string. +The beginning of the next/previous command-lines are compared with this +string. The first line that matches is the new command-line. When typing +these two keys repeatedly, the same string is used again. For example, this +can be used to find the previous substitute command: Type ":s" and then . +The same could be done by typing a number of times until the desired +command-line is shown. (Note: the shifted arrow keys do not work on all +terminals) + + *his* *:history* +:his[tory] Print the history of last entered commands. + {not in Vi} + {not available when compiled without the |+cmdline_hist| + feature} + +:his[tory] [{name}] [{first}][, [{last}]] + List the contents of history {name} which can be: + c[md] or : command-line history + s[earch] or / search string history + e[xpr] or = expression register history + i[nput] or @ input line history + a[ll] all of the above + {not in Vi} + + If the numbers {first} and/or {last} are given, the respective + range of entries from a history is listed. These numbers can + be specified in the following form: + *:history-indexing* + A positive number represents the absolute index of an entry + as it is given in the first column of a :history listing. + This number remains fixed even if other entries are deleted. + + A negative number means the relative position of an entry, + counted from the newest entry (which has index -1) backwards. + + Examples: + List entries 6 to 12 from the search history: > + :history / 6,12 +< + List the recent five entries from all histories: > + :history all -5, + +============================================================================== +2. Command-line completion *cmdline-completion* + +When editing the command-line, a few commands can be used to complete the +word before the cursor. This is available for: + +- Command names: At the start of the command-line. +- Tags: Only after the ":tag" command. +- File names: Only after a command that accepts a file name or a setting for + an option that can be set to a file name. This is called file name + completion. +- Options: Only after the ":set" command. +- Mappings: Only after a ":map" or similar command. +- Variable and function names: Only after a ":if", ":call" or similar command. + +When Vim was compiled with the |+cmdline_compl| feature disabled, only file +names, directories and help items can be completed. + +These are the commands that can be used: + + *c_CTRL-D* +CTRL-D List names that match the pattern in front of the cursor. + When showing file names, directories are highlighted (see + 'highlight' option). Names where 'suffixes' matches are moved + to the end. + *c_CTRL-I* *c_wildchar* *c_* +'wildchar' option + A match is done on the pattern in front of the cursor. The + match (if there are several, the first match) is inserted + in place of the pattern. (Note: does not work inside a + macro, because or are mostly used as 'wildchar', + and these have a special meaning in some macros.) When typed + again and there were multiple matches, the next + match is inserted. After the last match, the first is used + again (wrap around). + The behavior can be changed with the 'wildmode' option. + *c_CTRL-N* +CTRL-N After using 'wildchar' which got multiple matches, go to next + match. Otherwise recall more recent command-line from history. + *c_CTRL-P* *c_* +CTRL-P After using 'wildchar' which got multiple matches, go to + previous match. Otherwise recall older command-line from + history. only works with the GUI, on the Amiga and + with MS-DOS. + *c_CTRL-A* +CTRL-A All names that match the pattern in front of the cursor are + inserted. + *c_CTRL-L* +CTRL-L A match is done on the pattern in front of the cursor. If + there is one match, it is inserted in place of the pattern. + If there are multiple matches the longest common part is + inserted in place of the pattern. If the result is shorter + than the pattern, no completion is done. + +The 'wildchar' option defaults to (CTRL-E when in Vi compatible mode; in +a previous version was used). In the pattern standard wildcards '*' and +'?' are accepted. '*' matches any string, '?' matches exactly one character. + +If you like tcsh's autolist completion, you can use this mapping: + :cnoremap X +(Where X is the command key to use, is CTRL-L and is CTRL-D) +This will find the longest match and then list all matching files. + +If you like tcsh's autolist completion, you can use the 'wildmode' option to +emulate it. For example, this mimics autolist=ambiguous: + :set wildmode=longest,list +This will find the longest match with the first 'wildchar', then list all +matching files with the next. + + *suffixes* +For file name completion you can use the 'suffixes' option to set a priority +between files with almost the same name. If there are multiple matches, +those files with an extension that is in the 'suffixes' option are ignored. +The default is ".bak,~,.o,.h,.info,.swp,.obj", which means that files ending +in ".bak", "~", ".o", ".h", ".info", ".swp" and ".obj" are sometimes ignored. +It is impossible to ignore suffixes with two dots. Examples: + + pattern: files: match: ~ + test* test.c test.h test.o test.c + test* test.h test.o test.h and test.o + test* test.i test.h test.c test.i and test.c + +If there is more than one matching file (after ignoring the ones matching +the 'suffixes' option) the first file name is inserted. You can see that +there is only one match when you type 'wildchar' twice and the completed +match stays the same. You can get to the other matches by entering +'wildchar', CTRL-N or CTRL-P. All files are included, also the ones with +extensions matching the 'suffixes' option. + +To completely ignore files with some extension use 'wildignore'. + +The old value of an option can be obtained by hitting 'wildchar' just after +the '='. For example, typing 'wildchar' after ":set dir=" will insert the +current value of 'dir'. This overrules file name completion for the options +that take a file name. + +If you would like using for CTRL-P in an xterm, put this command in +your .cshrc: > + xmodmap -e "keysym Tab = Tab Find" +And this in your .vimrc: > + :cmap [1~ + +============================================================================== +3. Ex command-lines *cmdline-lines* + +The Ex commands have a few specialties: + + *:quote* +'"' at the start of a line causes the whole line to be ignored. '"' +after a command causes the rest of the line to be ignored. This can be used +to add comments. Example: > + :set ai "set 'autoindent' option +It is not possible to add a comment to a shell command ":!cmd" or to the +":map" command and friends, because they see the '"' as part of their +argument. + + *:bar* *:\bar* +'|' can be used to separate commands, so you can give multiple commands in one +line. If you want to use '|' in an argument, precede it with '\'. + +These commands see the '|' as their argument, and can therefore not be +followed by another command: + :argdo + :autocmd + :bufdo + :command + :cscope + :debug + :folddoopen + :folddoclosed + :function + :global + :help + :helpfind + :make + :normal + :perl + :perldo + :promptfind + :promptrepl + :pyfile + :python + :registers + :read ! + :scscope + :tcl + :tcldo + :tclfile + :vglobal + :windo + :write ! + :[range]! + a user defined command without the "-bar" argument |:command| + +Note that this is confusing (inherited from Vi): With ":g" the '|' is included +in the command, with ":s" it is not. + +To be able to use another command anyway, use the ":execute" command. +Example (append the output of "ls" and jump to the first line): > + :execute 'r !ls' | '[ + +There is one exception: When the 'b' flag is present in 'cpoptions', with the +":map" and ":abbr" commands and friends CTRL-V needs to be used instead of +'\'. You can also use "" instead. See also |map_bar|. + +Examples: > + :!ls | wc view the output of two commands + :r !ls | wc insert the same output in the text + :%g/foo/p|> moves all matching lines one shiftwidth + :%s/foo/bar/|> moves one line one shiftwidth + :map q 10^V| map "q" to "10|" + :map q 10\| map \ l map "q" to "10\" and map "\" to "l" + (when 'b' is present in 'cpoptions') + +You can also use to separate commands in the same way as with '|'. To +insert a use CTRL-V CTRL-J. "^@" will be shown. Using '|' is the +preferred method. But for external commands a must be used, because a +'|' is included in the external command. To avoid the special meaning of +it must be preceded with a backslash. Example: > + :r !date-join +This reads the current date into the file and joins it with the previous line. + +Note that when the command before the '|' generates an error, the following +commands will not be executed. + + +Because of Vi compatibility the following strange commands are supported: > + :| print current line (like ":p") + :3| print line 3 (like ":3p") + :3 goto line 3 + +A colon is allowed between the range and the command name. It is ignored +(this is Vi compatible). For example: > + :1,$:s/pat/string + +When the character '%' or '#' is used where a file name is expected, they are +expanded to the current and alternate file name (see the chapter "editing +files" |:_%| |:_#|). + +Embedded spaces in file names are allowed on the Amiga if one file name is +expected as argument. Trailing spaces will be ignored, unless escaped with a +backslash or CTRL-V. Note that the ":next" command uses spaces to separate +file names. Escape the spaces to include them in a file name. Example: > + :next foo\ bar goes\ to school\ +starts editing the three files "foo bar", "goes to" and "school ". + +When you want to use the special characters '"' or '|' in a command, or want +to use '%' or '#' in a file name, precede them with a backslash. The +backslash is not required in a range and in the ":substitute" command. + + *:_!* +The '!' (bang) character after an Ex command makes the command behave in a +different way. The '!' should be placed immediately after the command, without +any blanks in between. If you insert blanks the '!' will be seen as an +argument for the command, which has a different meaning. For example: + :w! name write the current buffer to file "name", overwriting + any existing file + :w !name send the current buffer as standard input to command + "name" + +============================================================================== +4. Ex command-line ranges *cmdline-ranges* *[range]* *E16* *E493* + +Some Ex commands accept a line range in front of them. This is noted as +[range]. It consists of one or more line specifiers, separated with ',' or +';'. + +The basics are explained in section |10.3| of the user manual. + + *:,* *:;* +When separated with ';' the cursor position will be set to that line +before interpreting the next line specifier. This doesn't happen for ','. +Examples: > + 4,/this line/ +< from line 4 till match with "this line" after the cursor line. > + 5;/that line/ +< from line 5 till match with "that line" after line 5. + +The default line specifier for most commands is the cursor position, but the +commands ":write" and ":global" have the whole file (1,$) as default. + +If more line specifiers are given than required for the command, the first +one(s) will be ignored. + +Line numbers may be specified with: *:range* *E14* *{address}* + {number} an absolute line number + . the current line *:.* + $ the last line in the file *:$* + % equal to 1,$ (the entire file) *:%* + 't position of mark t (lowercase) *:'* + 'T position of mark T (uppercase); when the mark is in + another file it cannot be used in a range + /{pattern}[/] the next line where {pattern} matches *:/* + ?{pattern}[?] the previous line where {pattern} matches *:?* + \/ the next line where the previously used search + pattern matches + \? the previous line where the previously used search + pattern matches + \& the next line where the previously used substitute + pattern matches + +Each may be followed (several times) by '+' or '-' and an optional number. +This number is added or subtracted from the preceding line number. If the +number is omitted, 1 is used. + +The "/" and "?" after {pattern} are required to separate the pattern from +anything that follows. + +The "/" and "?" may be preceded with another address. The search starts from +there. The difference from using ';' is that the cursor isn't moved. +Examples: > + /pat1//pat2/ Find line containing "pat2" after line containing + "pat1", without moving the cursor. + 7;/pat2/ Find line containing "pat2", after line 7, leaving + the cursor in line 7. + +The {number} must be between 0 and the number of lines in the file. When +using a 0 (zero) this is interpreted as a 1 by most commands. Commands that +use it as a count do use it as a zero (|:tag|, |:pop|, etc). Some commands +interpret the zero as "before the first line" (|:read|, search pattern, etc). + +Examples: > + .+3 three lines below the cursor + /that/+1 the line below the next line containing "that" + .,$ from current line until end of file + 0;/that the first line containing "that", also matches in the + first line. + 1;/that the first line after line 1 containing "that" + +Some commands allow for a count after the command. This count is used as the +number of lines to be used, starting with the line given in the last line +specifier (the default is the cursor line). The commands that accept a count +are the ones that use a range but do not have a file name argument (because +a file name can also be a number). + +Examples: > + :s/x/X/g 5 substitute 'x' by 'X' in the current line and four + following lines + :23d 4 delete lines 23, 24, 25 and 26 + + +Folds and Range + +When folds are active the line numbers are rounded off to include the whole +closed fold. See |fold-behavior|. + + +Reverse Range + +A range should have the lower line number first. If this is not the case, Vim +will ask you if it should swap the line numbers. This is not done within the +global command ":g". + + +Count and Range *N:* + +When giving a count before entering ":", this is translated into: + :.,.+(count - 1) +In words: The 'count' lines at and after the cursor. Example: To delete +three lines: > + 3:d is translated into: .,.+2d +< + +Visual Mode and Range *v_:* + +{Visual}: Starts a command-line with the Visual selected lines as a + range. The code ":'<,'>" is used for this range, which makes + it possible to select a similar line from the command-line + history for repeating a command on different Visually selected + lines. + +============================================================================== +5. Ex special characters *cmdline-special* + +In Ex commands, at places where a file name can be used, the following +characters have a special meaning. These can also be used in the expression +function expand() |expand()|. + % is replaced with the current file name *:_%* + # is replaced with the alternate file name *:_#* + #n (where n is a number) is replaced with the file name of + buffer n. "#0" is the same as "#" + ## is replaced with all names in the argument list *:_##* + concatenated, separated by spaces. Each space in a name + is preceded with a backslash. +Note that these give the file name as it was typed. If an absolute path is +needed (when using the file name from a different directory), you need to add +":p". See |filename-modifiers|. +Note that backslashes are inserted before spaces, so that the command will +correctly interpret the file name. But this doesn't happen for shell +commands. For those you probably have to use quotes: > + :!ls "%" + :r !spell "%" + +To avoid the special meaning of '%' and '#' insert a backslash before it. +Detail: The special meaning is always escaped when there is a backslash before +it, no matter how many backslashes. + you type: result ~ + # alternate.file + \# # + \\# \# + + *:* *:* *:* ** + *:* ** *:* ** + *:* ** *:* ** + *E495* *E496* *E497* *E498* *E499* *E500* +Note: these are typed literally, they are not special keys! + is replaced with the word under the cursor (like |star|) + is replaced with the WORD under the cursor (see |WORD|) + is replaced with the path name under the cursor (like what + |gf| uses) + when executing autocommands, is replaced with the file name + for a file read or write + when executing autocommands, is replaced with the currently + effective buffer number (for ":r file" it is the current + buffer, the file being read is not in a buffer). + when executing autocommands, is replaced with the match for + which this autocommand was executed. It differs form + only when the file name isn't used to match with + (for FileType and Syntax events). + when executing a ":source" command, is replaced with the + file name of the sourced file; + when executing a function, is replaced with + "function {function-name}"; function call nesting is + indicated like this: + "function {function-name1}..{function-name2}". Note that + filename-modifiers are useless when is used inside + a function. + + *filename-modifiers* + *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* +The file name modifiers can be used after "%", "#", "#n", "", "", +"" or "". They are also used with the |fnamemodify()| function. +These are not available when Vim has been compiled without the |+modify_fname| +feature. +These modifiers can be given, in this order: + :p Make file name a full path. Must be the first modifier. Also + changes "~/" (and "~user/" for Unix and VMS) to the path for + the home directory. If the name is a directory a path + separator is added at the end. For a file name that does not + exist and does not have an absolute path the result is + unpredictable. + :8 Converts the path to 8.3 short format (currently only on + win32). Will act on as much of a path that is an existing + path. + :~ Reduce file name to be relative to the home directory, if + possible. File name is unmodified if it is not below the home + directory. + :. Reduce file name to be relative to current directory, if + possible. File name is unmodified if it is not below the + current directory. + For maximum shortness, use ":~:.". + :h Head of the file name (the last component and any separators + removed). Cannot be used with :e, :r or :t. + Can be repeated to remove several components at the end. + When the file name ends in a path separator, only the path + separator is removed. Thus ":p:h" on a directory name results + on the directory name itself (without trailing slash). + When the file name is an absolute path (starts with "/" for + Unix; "x:\" for MS-DOS, WIN32, OS/2; "drive:" for Amiga), that + part is not removed. When there is no head (path is relative + to current directory) the result is empty. + :t Tail of the file name (last component of the name). Must + precede any :r or :e. + :r Root of the file name (the last extension removed). When + there is only an extension (file name that starts with '.', + e.g., ".vimrc"), it is not removed. Can be repeated to remove + several extensions (last one first). + :e Extension of the file name. Only makes sense when used alone. + When there is no extension the result is empty. + When there is only an extension (file name that starts with + '.'), the result is empty. Can be repeated to include more + extensions. If there are not enough extensions (but at least + one) as much as possible are included. + :s?pat?sub? + Substitute the first occurrence of "pat" with "sub". This + works like the |:s| command. "pat" is a regular expression. + Any character can be used for '?', but it must not occur in + "pat" or "sub". + After this, the previous modifiers can be used again. For + example ":p", to make a full path after the substitution. + :gs?pat?sub? + Substitute all occurrences of "path" with "sub". Otherwise + this works like ":s". + +Examples, when the file name is "src/version.c", current dir +"/home/mool/vim": > + :p /home/mool/vim/src/version.c + :p:. src/version.c + :p:~ ~/vim/src/version.c + :h src + :p:h /home/mool/vim/src + :p:h:h /home/mool/vim + :t version.c + :p:t version.c + :r src/version + :p:r /home/mool/vim/src/version + :t:r version + :e c + :s?version?main? src/main.c + :s?version?main?:p /home/mool/vim/src/main.c + :p:gs?/?\\? \home\mool\vim\src\version.c + +Examples, when the file name is "src/version.c.gz": > + :p /home/mool/vim/src/version.c.gz + :e gz + :e:e c.gz + :e:e:e c.gz + :e:e:r c + :r src/version.c + :r:e c + :r:r src/version + :r:r:r src/version +< + *extension-removal* *:_%<* +If a "<" is appended to "%", "#", "#n" or "CTRL-V p" the extension of the file +name is removed (everything after and including the last '.' in the file +name). This is included for backwards compatibility with version 3.0, the +":r" form is preferred. Examples: > + + % current file name + %< current file name without extension + # alternate file name for current window + #< idem, without extension + #31 alternate file number 31 + #31< idem, without extension + word under the cursor + WORD under the cursor (see |WORD|) + path name under the cursor + < idem, without extension + +Note: Where a file name is expected wildcards expansion is done. On Unix the +shell is used for this, unless it can be done internally (for speed). +Backticks also work, like in > + :n `echo *.c` +(backtick expansion is not possible in |restricted-mode|) +But expansion is only done if there are any wildcards before expanding the +'%', '#', etc.. This avoids expanding wildcards inside a file name. If you +want to expand the result of , add a wildcard character to it. +Examples: (alternate file name is "?readme?") + command expands to ~ + :e # :e ?readme? + :e `ls #` :e {files matching "?readme?"} + :e #.* :e {files matching "?readme?.*"} + :cd :cd {file name under cursor} + :cd * :cd {file name under cursor plus "*" and then expanded} + +When the expanded argument contains a "!" and it is used for a shell command +(":!cmd", ":r !cmd" or ":w !cmd"), it is escaped with a backslash to avoid it +being expanded into a previously used command. When the 'shell' option +contains "sh", this is done twice, to avoid the shell trying to expand the +"!". + + *filename-backslash* +For filesystems that use a backslash as directory separator (MS-DOS, Windows, +OS/2), it's a bit difficult to recognize a backslash that is used to escape +the special meaning of the next character. The general rule is: If the +backslash is followed by a normal file name character, it does not have a +special meaning. Therefore "\file\foo" is a valid file name, you don't have +to type the backslash twice. + +An exception is the '$' sign. It is a valid character in a file name. But +to avoid a file name like "$home" to be interpreted as an environment variable, +it needs to be preceded by a backslash. Therefore you need to use "/\$home" +for the file "$home" in the root directory. A few examples: + + FILE NAME INTERPRETED AS ~ + $home expanded to value of environment var $home + \$home file "$home" in current directory + /\$home file "$home" in root directory + \\$home file "\\", followed by expanded $home + +============================================================================== +6. Command-line window *cmdline-window* *cmdwin* + +In the command-line window the command line can be edited just like editing +text in any window. It is a special kind of window, because you cannot leave +it in a normal way. +{not available when compiled without the |+cmdline_hist| or |+vertsplit| +feature} + + +OPEN + +There are two ways to open the command-line window: +1. From Command-line mode, use the key specified with the 'cedit' option. + The default is CTRL-F when 'compatible' is not set. +2. From Normal mode, use the "q:", "q/" or "q?" command. *q:* *q/* *q?* + This starts editing an Ex command-line ("q:") or search string ("q/" or + "q?"). Note that this is not possible while recording is in progress (the + "q" stops recording then). + +When the window opens it is filled with the command-line history. The last +line contains the command as typed so far. The left column will show a +character that indicates the type of command-line being edited, see +|cmdwin-char|. + +Vim will be in Normal mode when the editor is opened, except when 'insertmode' +is set. + +The height of the window is specified with 'cmdwinheight' (or smaller if there +is no room). The window is always full width and is positioned just above the +command-line. + + +EDIT + +You can now use commands to move around and edit the text in the window. Both +in Normal mode and Insert mode. + +It is possible to use ":", "/" and other commands that use the command-line, +but it's not possible to open another command-line window then. There is no +nesting. + *E11* +The command-line window is not a normal window. It is not possible to move to +another window or edit another buffer. All commands that would do this are +disabled in the command-line window. Of course it _is_ possible to execute +any command that you entered in the command-line window. + + +CLOSE *E199* + +There are several ways to leave the command-line window: + + Execute the command-line under the cursor. Works both in + Insert and in Normal mode. +CTRL-C Continue in Command-line mode. The command-line under the + cursor is used as the command-line. Works both in Insert and + in Normal mode. ":close" also works. There is no redraw, + thus the window will remain visible. +:quit Discard the command line and go back to Normal mode. + ":exit", ":xit" and CTRL-\ CTRL-N also work. +:qall Quit Vim, unless there are changes in some buffer. +:qall! Quit Vim, discarding changes to any buffer. + +Once the command-line window is closed the old window sizes are restored. The +executed command applies to the window and buffer where the command-line was +started from. This works as if the command-line window was not there, except +that there will be an extra screen redraw. +The buffer used for the command-line window is deleted. Any changes to lines +other than the one that is executed with are lost. + + +VARIOUS + +The command-line window cannot be used: +- when there already is a command-line window (no nesting) +- for entering a encryption key or when using inputsecret() +- when Vim was not compiled with the +vertsplit feature + +Some options are set when the command-line window is opened: +'filetype' "vim", when editing an Ex command-line; this starts Vim syntax + highlighting if it was enabled +'rightleft' off +'modifiable' on +'buftype' "nofile" +'swapfile' off + +It is allowed to write the buffer contents to a file. This is an easy way to +save the command-line history and read it back later. + +If the 'wildchar' option is set to , and the command-line window is used +for an Ex command, then two mappings will be added to use for completion +in the command-line window, like this: > + :imap + :nmap a +Note that hitting in Normal mode will do completion on the next +character. That way it works at the end of the line. +If you don't want these mappings, disable them with: > + au CmdwinEnter [:>] iunmap + au CmdwinEnter [:>] nunmap +You could put these lines in your vimrc file. + +While in the command-line window you cannot use the mouse to put the cursor in +another window, or drag statuslines of other windows. You can drag the +statusline of the command-line window itself and the statusline above it. +Thus you can resize the command-line window, but not others. + + +AUTOCOMMANDS + +Two autocommand events are used: |CmdwinEnter| and |CmdwinLeave|. Since this +window is of a special type, the WinEnter, WinLeave, BufEnter and BufLeave +events are not triggered. You can use the Cmdwin events to do settings +specifically for the command-line window. Be careful not to cause side +effects! +Example: > + :au CmdwinEnter : let b:cpt_save = &cpt | set cpt=v + :au CmdwinLeave : let &cpt = b:cpt_save +This sets 'complete' to use command-line completion in Insert mode for CTRL-N. +Another example: > + :au CmdwinEnter [/?] startinsert +This will make Vim start in Insert mode in the command-line window. + + *cmdwin-char* +The character used for the pattern indicates the type of command-line: + : normal Ex command + > debug mode command |debug-mode| + / forward search string + ? backward search string + = expression for "= |expr-register| + @ string for |input()| + - text for |:insert| or |:append| + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/debugger.txt b/en/debugger.txt new file mode 100644 index 000000000..e59a5abae --- /dev/null +++ b/en/debugger.txt @@ -0,0 +1,135 @@ +*debugger.txt* For Vim version 6.3. Last change: 2001 Dec 22 + + + VIM REFERENCE MANUAL by Gordon Prieur + + +Debugger Support Features *debugger-support* + +1. Debugger Features |debugger-features| +2. Vim Compile Options |debugger-compilation| +3. Integrated Debuggers |debugger-integration| + +{Vi does not have any of these features} + +============================================================================== +1. Debugger Features *debugger-features* + +The following features are available for an integration with a debugger or +an Integrated Programming Environment (IPE) or Integrated Development +Environment (IDE): + + Alternate Command Input |alt-input| + Debug Signs |debug-signs| + Debug Source Highlight |debug-highlight| + Message Footer |gui-footer| + Balloon Evaluation |balloon-eval| + +These features were added specifically for use in the Motif version of gvim. +However, the |alt-input| and |debug-highlight| were written to be usable in +both vim and gvim. Some of the other features could be used in the non-GUI +vim with slight modifications. However, I did not do this nor did I test the +reliability of building for vim or non Motif GUI versions. + + +1.1 Alternate Command Input *alt-input* + +For Vim to work with a debugger there must be at least an input connection +with a debugger or external tool. In many cases there will also be an output +connection but this isn't absolutely necessary. + +The purpose of the input connection is to let the external debugger send +commands to Vim. The commands sent by the debugger should give the debugger +enough control to display the current debug environment and state. + +The current implementation is based on the X Toolkit dispatch loop and the +XtAddInput() function call. + + +1.2 Debug Signs *debug-signs* + +Many debuggers mark specific lines by placing a small sign or color highlight +on the line. The |:sign| command lets the debugger set this graphic mark. Some +examples where this feature would be used would be a debugger showing an arrow +representing the Program Counter (PC) of the program being debugged. Another +example would be a small stop sign for a line with a breakpoint. These visible +highlights let the user keep track of certain parts of the state of the +debugger. + +This feature can be used with more than debuggers, too. An IPE can use a sign +to highlight build errors, searched text, or other things. The sign feature +can also work together with the |debug-highlight| to ensure the mark is +highly visible. + +Debug signs are defined and placed using the |:sign| command. + + +1.3 Debug Source Highlight *debug-highlight* + +This feature allows a line to have a predominant highlight. The highlight is +intended to make a specific line stand out. The highlight could be made to +work for both vim and gvim, whereas the debug sign is, in most cases, limited +to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm +from Sun has a "sign gutter" for showing signs. + + +1.4 Message Footer *gui-footer* + +The message footer can be used to display messages from a debugger or IPE. It +can also be used to display menu and toolbar tips. The footer area is at the +bottom of the GUI window, below the line used to display colon commands. + +The display of the footer is controlled by the 'guioptions' letter 'F'. + + +1.5 Balloon Evaluation *balloon-eval* + +This feature allows a debugger, or other external tool, to display dynamic +information based on where the mouse is pointing. The purpose of this feature +was to allow Sun's Visual WorkShop debugger to display expression evaluations. +However, the feature was implemented in as general a manner as possible and +could be used for displaying other information as well. + +The Balloon Evaluation has some settable parameters too. The font list and +colors can be set via X resources (XmNballoonEvalFontList, +XmNballoonEvalBackground, and XmNballoonEvalForeground). +The 'balloondelay' option sets the delay before an attempt is made to show a +balloon. +The 'ballooneval' option needs to be set to switch it on. + +Balloon evaluation is only available when compiled with the |+balloon_eval| +and |+sun_workshop| features. + +The Balloon evaluation functions are also used to show a tooltip for the +toolbar. The 'ballooneval' option does not need to be set for this. But the +other settings apply. + +============================================================================== +2. Vim Compile Options *debugger-compilation* + +The debugger features were added explicitly for use with Sun's Visual +WorkShop Integrated Programming Environment (ipe). However, they were done +in as generic a manner as possible so that integration with other debuggers +could also use some or all of the tools used with Sun's ipe. + +The following compile time preprocessor variables control the features: + + Alternate Command Input ALT_X_INPUT + Debug Glyphs FEAT_SIGNS + Debug Highlights FEAT_SIGNS + Message Footer FEAT_FOOTER + Balloon Evaluation FEAT_BEVAL + +The first integration with a full IPE/IDE was with Sun Visual WorkShop. To +compile a gvim which interfaces with VWS set the following flag, which sets +all the above flags: + + Sun Visual WorkShop FEAT_SUN_WORKSHOP + +============================================================================== +3. Integrated Debuggers *debugger-integration* + +Currently the only fully integrated debugger/IPE/IDE is Sun's Visual WorkShop +Integrated Programming Environment. + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/en/develop.txt b/en/develop.txt new file mode 100644 index 000000000..8f91655f5 --- /dev/null +++ b/en/develop.txt @@ -0,0 +1,384 @@ +*develop.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Development of Vim. *development* + +This text is important for those who want to be involved in further developing +Vim. + +1. Design goals |design-goals| +2. Coding style |coding-style| +3. Design decisions |design-decisions| +4. Assumptions |design-assumptions| + +See the file README.txt in the "src" directory for an overview of the source +code. + +Vim is open source software. Everybody is encouraged to contribute to help +improving Vim. For sending patches a context diff "diff -c" is preferred. +Also see http://www.vim.org/tips/tip.php?tip_id=618. + +============================================================================== +1. Design goals *design-goals* + +Most important things come first (roughly). + +Note that quite a few items are contradicting. This is intentional. A +balance must be found between them. + + +VIM IS... VI COMPATIBLE *design-compatible* + +First of all, it should be possible to use Vim as a drop-in replacement for +Vi. When the user wants to, he can use Vim in compatible mode and hardly +notice any difference with the original Vi. + +Exceptions: +- We don't reproduce obvious Vi bugs in Vim. +- There are different versions of Vi. I am using Version 3.7 (6/7/85) as a + reference. But support for other versions is also included when possible. + The Vi part of POSIX is not considered a definitive source. +- Vim adds new commands, you cannot rely on some command to fail because it + didn't exist in Vi. +- Vim will have a lot of features that Vi doesn't have. Going back from Vim + to Vi will be a problem, this cannot be avoided. +- Some things are hardly ever used (open mode, sending an e-mail when + crashing, etc.). Those will only be included when someone has a good reason + why it should be included and it's not too much work. +- For some items it is debatable whether Vi compatibility should be + maintained. There will be an option flag for these. + + +VIM IS... IMPROVED *design-improved* + +The IMproved bits of Vim should make it a better Vi, without becoming a +completely different editor. Extensions are done with a "Vi spirit". +- Use the keyboard as much as feasible. The mouse requires a third hand, + which we don't have. Many terminals don't have a mouse. +- When the mouse is used anyway, avoid the need to switch back to the + keyboard. Avoid mixing mouse and keyboard handling. +- Add commands and options in a consistent way. Otherwise people will have a + hard time finding and remembering them. Keep in mind that more commands and + options will be added later. +- A feature that people do not know about is a useless feature. Don't add + obscure features, or at least add hints in documentation that they exists. +- Minimize using CTRL and other modifiers, they are more difficult to type. +- There are many first-time and inexperienced Vim users. Make it easy for + them to start using Vim and learn more over time. +- There is no limit to the features that can be added. Selecting new features + is one based on (1) what users ask for, (2) how much effort it takes to + implement and (3) someone actually implementing it. + + +VIM IS... MULTI PLATFORM *design-multi-platform* + +Vim tries to help as many users on as many platforms as possible. +- Support many kinds of terminals. The minimal demands are cursor positioning + and clear-screen. Commands should only use key strokes that most keyboards + have. Support all the keys on the keyboard for mapping. +- Support many platforms. A condition is that there is someone willing to do + Vim development on that platform, and it doesn't mean messing up the code. +- Support many compilers and libraries. Not everybody is able or allowed to + install another compiler or GUI library. +- People switch from one platform to another, and from GUI to terminal + version. Features should be present in all versions, or at least in as many + as possible with a reasonable effort. Try to avoid that users must switch + between platforms to accomplish their work efficiently. +- That a feature is not possible on some platforms, or only possible on one + platform, does not mean it cannot be implemented. [This intentionally + contradicts the previous item, these two must be balanced.] + + +VIM IS... WELL DOCUMENTED *design-documented* + +- A feature that isn't documented is a useless feature. A patch for a new + feature must include the documentation. +- Documentation should be comprehensive and understandable. Using examples is + recommended. +- Don't make the text unnecessarily long. Less documentation means that an + item is easier to find. + + +VIM IS... HIGH SPEED AND SMALL IN SIZE *design-speed-size* + +Using Vim must not be a big attack on system resources. Keep it small and +fast. +- Computers are becoming faster and bigger each year. Vim can grow too, but + no faster than computers are growing. Keep Vim usable on older systems. +- Many users start Vim from a shell very often. Startup time must be short. +- Commands must work efficiently. The time they consume must be as small as + possible. Useful commands may take longer. +- Don't forget that some people use Vim over a slow connection. Minimize the + communication overhead. +- Items that add considerably to the size and are not used by many people + should be a feature that can be disabled. +- Vim is a component among other components. Don't turn it into a massive + application, but have it work well together with other programs. + + +VIM IS... MAINTAINABLE *design-maintain* + +- The source code should not become a mess. It should be reliable code. +- Use the same layout in all files to make it easy to read |coding-style|. +- Use comments in a useful way! +- Porting to another platform should be made easy, without having to change + too much platform-independent code. +- Use the object-oriented spirit: Put data and code together. Minimize the + knowledge spread to other parts of the code. + + +VIM IS... FLEXIBLE *design-flexible* + +Vim should make it easy for users to work in their preferred styles rather +than coercing its users into particular patterns of work. This can be for +items with a large impact (e.g., the 'compatible' option) or for details. The +defaults are carefully chosen such that most users will enjoy using Vim as it +is. Commands and options can be used to adjust Vim to the desire of the user +and its environment. + + +VIM IS... NOT *design-not* + +- Vim is not a shell or an Operating System. You will not be able to run a + shell inside Vim or use it to control a debugger. This should work the + other way around: Use Vim as a component from a shell or in an IDE. + A satirical way to say this: "Unlike Emacs, Vim does not attempt to include + everything but the kitchen sink, but some people say that you can clean one + with it. ;-)" +- Vim is not a fancy GUI editor that tries to look nice at the cost of + being less consistent over all platforms. But functional GUI features are + welcomed. + +============================================================================== +2. Coding style *coding-style* + +These are the rules to use when making changes to the Vim source code. Please +stick to these rules, to keep the sources readable and maintainable. + +This list is not complete. Look in the source code for more examples. + + +MAKING CHANGES *style-changes* + +The basic steps to make changes to the code: +1. Adjust the documentation. Doing this first gives you an impression of how + your changes affect the user. +2. Make the source code changes. +3. Check ../doc/todo.txt if the change affects any listed item. +4. Make a patch with "diff -c" against the unmodified code and docs. +5. Make a note about what changed and include it with the patch. + + +USE OF COMMON FUNCTIONS *style-functions* + +Some functions that are common to use, have a special Vim version. Always +consider using the Vim version, because they were introduced with a reason. + +NORMAL NAME VIM NAME DIFFERENCE OF VIM VERSION +free() vim_free() Checks for freeing NULL +malloc() alloc() Checks for out of memory situation +malloc() lalloc() Like alloc(), but has long argument +strcpy() STRCPY() Includes cast to (char *), for char_u * args +strchr() vim_strchr() Accepts special characters +strrchr() vim_strrchr() Accepts special characters +isspace() vim_isspace() Can handle characters > 128 +iswhite() vim_iswhite() Only TRUE for Tab and space +memcpy() vim_memmove() Handles overlapped copies +bcopy() vim_memmove() Handles overlapped copies +memset() vim_memset() Uniform for all systems + + +NAMES *style-names* + +Function names can not be more than 31 characters long (because of VMS). + +Don't use "delete" as a variable name, C++ doesn't like it. + +Because of the requirement that Vim runs on as many systems as possible, we +need to avoid using names that are already defined by the system. This is a +list of names that are known to cause trouble. The name is given as a regexp +pattern. + +is.*() POSIX, ctype.h +to.*() POSIX, ctype.h + +d_.* POSIX, dirent.h +l_.* POSIX, fcntl.h +gr_.* POSIX, grp.h +pw_.* POSIX, pwd.h +sa_.* POSIX, signal.h +mem.* POSIX, string.h +str.* POSIX, string.h +wcs.* POSIX, string.h +st_.* POSIX, stat.h +tms_.* POSIX, times.h +tm_.* POSIX, time.h +c_.* POSIX, termios.h +MAX.* POSIX, limits.h +__.* POSIX, system +_[A-Z].* POSIX, system +E[A-Z0-9]* POSIX, errno.h + +*_t POSIX, for typedefs. Use *_T instead. + +wait don't use as argument to a function, conflicts with types.h +index shadows global declaration +time shadows global declaration +new C++ reserved keyword +try Borland C++ doesn't like it to be used as a variable. + +basename() GNU string function +dirname() GNU string function +get_env_value() Linux system function + + +VARIOUS *style-various* + +Typedef'ed names should end in "_t": > + typedef int some_t; +Define'ed names should be uppercase: > + #define SOME_THING +Features always start with "FEAT_": > + #define FEAT_FOO + +Don't use '\"', some compilers can't handle it. '"' works fine. + +Don't use: + #if HAVE_SOME +Some compilers can't handle that and complain that "HAVE_SOME" is not defined. +Use + #ifdef HAVE_SOME +or + #if defined(HAVE_SOME) + + +STYLE *style-examples* + +General rule: One statement per line. + +Wrong: if (cond) a = 1; + +OK: if (cond) + a = 1; + +Wrong: while (cond); + +OK: while (cond) + ; + +Wrong: do a = 1; while (cond); + +OK: do + a = 1; + while (cond); + + +Functions start with: + +Wrong: int function_name(int arg1, int arg2) + +OK: /* + * Explanation of what this function is used for. + * + * Return value explanation. + */ + int + function_name(arg1, arg2) + int arg1; /* short comment about arg1 */ + int arg2; /* short comment about arg2 */ + { + int local; /* comment about local */ + + local = arg1 * arg2; + +NOTE: Don't use ANSI style function declarations. A few people still have to +use a compiler that doesn't support it. + + +SPACES AND PUNCTUATION *style-spaces* + +No space between a function name and the bracket: + +Wrong: func (arg); +OK: func(arg); + +Do use a space after if, while, switch, etc. + +Wrong: if(arg) for(;;) +OK: if (arg) for (;;) + +Use a space after a comma and semicolon: + +Wrong: func(arg1,arg2); for (i = 0;i < 2;++i) +OK: func(arg1, arg2); for (i = 0; i < 2; ++i) + +Use a space before and after '=', '+', '/', etc. + +Wrong: var=a*5; +OK: var = a * 5; + +In general: Use empty lines to group lines of code together. Put a comment +just above the group of lines. This makes it more easy to quickly see what is +being done. + +OK: /* Prepare for building the table. */ + get_first_item(); + table_idx = 0; + + /* Build the table */ + while (has_item()) + table[table_idx++] = next_item(); + + /* Finish up. */ + cleanup_items(); + generate_hash(table); + +============================================================================== +3. Design decisions *design-decisions* + +Folding + +Several forms of folding should be possible for the same buffer. For example, +have one window that shows the text with function bodies folded, another +window that shows a function body. + +Folding is a way to display the text. It should not change the text itself. +Therefore the folding has been implemented as a filter between the text stored +in a buffer (buffer lines) and the text displayed in a window (logical lines). + + +Naming the window + +The word "window" is commonly used for several things: A window on the screen, +the xterm window, a window inside Vim to view a buffer. +To avoid confusion, other items that are sometimes called window have been +given another name. Here is an overview of the related items: + +screen The whole display. For the GUI it's something like 1024x768 + pixels. The Vim shell can use the whole screen or part of it. +shell The Vim application. This can cover the whole screen (e.g., + when running in a console) or part of it (xterm or GUI). +window View on a buffer. There can be several windows in Vim, + together with the command line, menubar, toolbar, etc. they + fit in the shell. + + +To be continued... + +============================================================================== +4. Assumptions *design-assumptions* + +Size of variables: +char 8 bit signed +char_u 8 bit unsigned +int 16, 32 or 64 bit signed +unsigned 16, 32 or 64 bit unsigned +long 32 or 64 bit signed, can hold a pointer + +Note that some compilers cannot handle long lines or strings. The C89 +standard specifies a limit of 509 characters. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/diff.txt b/en/diff.txt new file mode 100644 index 000000000..9ec15cc42 --- /dev/null +++ b/en/diff.txt @@ -0,0 +1,371 @@ +*diff.txt* For Vim version 6.3. Last change: 2004 May 01 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *diff* *vimdiff* *gvimdiff* *diff-mode* +This file describes the +diff feature: Showing differences between two or +three versions of the same file. + +The basics are explained in section |08.7| of the user manual. + +1. Starting diff mode |vimdiff| +2. Viewing diffs |view-diffs| +3. Jumping to diffs |jumpto-diffs| +4. Copying diffs |copy-diffs| +5. Diff options |diff-options| + +{not in Vi} + +============================================================================== +1. Starting diff mode + +The easiest way to start editing in diff mode is with the "vimdiff" command. +This starts Vim as usual, and additionally sets up for viewing the differences +between the arguments. > + + vimdiff file1 file2 [file3 [file4]] + +This is equivalent to: > + + vim -d file1 file2 [file3 [file4]] + +You may also use "gvimdiff" or "vim -d -g". The GUI is started then. +You may also use "viewdiff" or "gviewdiff". Vim starts in readonly mode then. +"r" may be prepended for restricted mode (see |-Z|). + +The second and following arguments may also be a directory name. Vim will +then append the file name of the first argument to the directory name to find +the file. + +This only works when a standard "diff" command is available. See 'diffexpr'. + +What happens is that Vim opens a window for each of the files. This is like +using the |-O| argument. This uses vertical splits. If you prefer horizontal +splits add the |-o| argument: > + + vimdiff -o file1 file2 [file3] + +In each of the edited files these options are set: + + 'diff' on + 'scrollbind' on + 'scrollopt' includes "hor" + 'wrap' off + 'foldmethod' "diff" + 'foldcolumn' 2 + +These options are set local to the window. When editing another file they are +reset to the global value. + +The differences shown are actually the differences in the buffer. Thus if you +make changes after loading a file, these will be included in the displayed +diffs. You might have to do ":diffupdate" now and then, not all changes are +immediately taken into account. + +In your .vimrc file you could do something special when Vim was started in +diff mode. You could use a construct like this: > + + if &diff + setup for diff mode + else + setup for non-diff mode + endif + +While already in Vim you can start diff mode in three ways. + + *E98* +:diffsplit {filename} *:diffs* *:diffsplit* + Open a new window on the file {filename}. The options are set + as for "vimdiff" for the current and the newly opened window. + Also see 'diffexpr'. + + *:difft* *:diffthis* +:diffthis Make the current window part of the diff windows. This sets + the option like for "vimdiff". + +:diffpatch {patchfile} *:diffp* *:diffpatch* + Use the current buffer, patch it with the diff found in + {patchfile} and open a buffer on the result. The options are + set as for "vimdiff". + {patchfile} can be in any format that the "patch" program + understands or 'patchexpr' can handle. + Note that {patchfile} should only contain a diff for one file, + the current file. If {patchfile} contains diffs for other + files as well, the results are unpredictable. Vim changes + directory to /tmp to avoid files in the current directory + accidentally being patched. But it may still result in + various ".rej" files to be created. And when absolute path + names are present these files may get patched anyway. + +To make these commands use a vertical split, prepend |:vertical|. Examples: > + + :vert diffsplit main.c~ + :vert diffpatch /tmp/diff +< + *E96* +There can be up to four buffers with 'diff' set. + +Since the option values are remembered with the buffer, you can edit another +file for a moment and come back to the same file and be in diff mode again. +If you don't want diff mode, reset the 'diff' option. And you probably want +to get rid of the fold column: > + + :set nodiff foldcolumn=0 + +============================================================================== +2. Viewing diffs *view-diffs* + +The effect is that the diff windows show the same text, with the differences +highlighted. When scrolling the text, the 'scrollbind' option will make the +text in other windows to be scrolled as well. With vertical splits the text +should be aligned properly. + +The alignment of text will go wrong when: +- 'wrap' is on, some lines will be wrapped and occupy two or more screen + lines +- folds are open in one window but not another +- 'scrollbind' is off +- changes have been made to the text +- "filler" is not present in 'diffopt', deleted/inserted lines makes the + alignment go wrong + +All the buffers edited in a window where the 'diff' option is set will join in +the diff. This is also possible for hidden buffers. They must have been +edited in a window first for this to be possible. + +Since 'diff' is a window-local option, it's possible to view the same buffer +in diff mode in one window and "normal" in another window. It is also +possible to view the changes you have made to a buffer, but since Vim doesn't +allow having two buffers for the same file, you need to make a copy of the +original file and diff with that. For example: > + :!cp % tempfile + :diffsplit tempfile + +A buffer that is unloaded cannot be used for the diff. But it does work for +hidden buffers. You can use ":hide" to close a window without unloading the +buffer. + + + *:diffu* *:diffupdate* +Vim attempts to keep the differences updated when you make changes to the +text. This mostly takes care of inserted and deleted lines. Changes within a +line and more complicated changes do not cause the differences to be updated. +To force the differences to be updated use: > + + :diffupdate + + +Vim will show filler lines for lines that are missing in one window but are +present in another. These lines were inserted in another file or deleted in +this file. Removing "filler" from the 'diffopt' option will make Vim not +display these filler lines. + + +Folds are used to hide the text that wasn't changed. See |folding| for all +the commands that can be used with folds. + +The context of lines above a difference that are not included in the fold can +be set with the 'diffopt' option. For example, to set the context to three +lines: > + + :set diffopt=filler,context:3 + + +The diffs are highlighted with these groups: + +|hl-DiffAdd| DiffAdd Added (inserted) lines. These lines exist in + this buffer but not in another. +|hl-DiffChange| DiffChange Changed lines. +|hl-DiffText| DiffText Changed text inside a Changed line. Vim + finds the first character that is different, + and the last character that is different + (searching from the end of the line). The + text in between is highlighted. This means + that parts in the middle that are still the + same are highlighted anyway. +|hl-DiffDelete| DiffDelete Deleted lines. Also called filler lines, + because they don't really exist in this + buffer. + +============================================================================== +3. Jumping to diffs *jumpto-diffs* + +Two commands can be used to jump to diffs: + *[c* + [c Jump backwards to the previous start of a change. + When a count is used, do it that many times. + *]c* + ]c Jump forwards to the next start of a change. + When a count is used, do it that many times. + +It is an error if there is no change for the cursor to move to. + +============================================================================== +4. Diff copying *copy-diffs* *E99* *E100* *E101* *E102* *E103* + +There are two commands to copy text from one buffer to another. The result is +that the buffers will be equal within the specified range. + + *:diffg* *:diffget* +:[range]diffg[et] [bufspec] + Modify the current buffer to undo difference with another + buffer. If [bufspec] is given, that buffer is used. + Otherwise this only works if there is one other buffer in diff + mode. + See below for [range]. + + *:diffpu* *:diffput* +:[range]diffpu[t] [bufspec] + Modify another buffer to undo difference with the current + buffer. Just like ":diffget" but the other buffer is modified + instead of the current one. + See below for [range]. + + *do* +do Same as ":diffget" without argument or range. The "o" stands + for "obtain" ("dg" can't be used, it could be the start of + "dgg"!). + + *dp* +dp Same as ":diffput" without argument or range. + +When no [range] is given, the diff at the cursor position or just above it is +affected. When [range] is used, Vim tries to only put or get the specified +lines. When there are deleted lines, this may not always be possible. + +There can be deleted lines below the last line of the buffer. When the cursor +is on the last line in the buffer and there is no diff above this line, the +":diffget" and "do" commands will obtain lines from the other buffer. + +To be able to get those lines from another buffer in a [range] it's allowed to +use the last line number plus one. This command gets all diffs from the other +buffer: > + + :1,$+1diffget + +Note that deleted lines are displayed, but not counted as text lines. You +can't move the cursor into them. To fill the deleted lines with the lines +from another buffer use ":diffget" on the line below them. + +The [bufspec] argument above can be a buffer number, a pattern for a buffer +name or a part of a buffer name. Examples: + + :diffget Use the other buffer which is in diff mode + :diffget 3 Use buffer 3 + :diffget v2 Use the buffer which matches "v2" and is in + diff mode (e.g., "file.c.v2") + +============================================================================== +5. Diff options *diff-options* + +Also see |'diffopt'| and the "diff" item of |'fillchars'|. + + +FINDING THE DIFFERENCES *diff-diffexpr* + +The 'diffexpr' option can be set to use something else than the standard +"diff" program to compare two files and find the differences. + +When 'diffexpr' is empty, Vim uses this command to find the differences +between file1 and file2: > + + diff file1 file2 > outfile + +The ">" is replaced with the value of 'shellredir'. + +The output of "diff" must be a normal "ed" style diff. Do NOT use a context +diff. This example explains the format that Vim expects: > + + 1a2 + > bbb + 4d4 + < 111 + 7c7 + < GGG + --- + > ggg + +The "1a2" item appends the line "bbb". +The "4d4" item deletes the line "111". +The '7c7" item replaces the line "GGG" with "ggg". + +When 'diffexpr' is not empty, Vim evaluates to obtain a diff file in the +format mentioned. These variables are set to the file names used: + + v:fname_in original file + v:fname_new new version of the same file + v:fname_out resulting diff file + +Additionally, 'diffexpr' should take care of "icase" and "iwhite" in the +'diffopt' option. 'diffexpr' cannot change the value of 'lines' and +'columns'. + +Example (this does almost the same as 'diffexpr' being empty): > + + set diffexpr=MyDiff() + function MyDiff() + let opt = "" + if &diffopt =~ "icase" + let opt = opt . "-i " + endif + if &diffopt =~ "iwhite" + let opt = opt . "-b " + endif + silent execute "!diff -a --binary " . opt . v:fname_in . " " . v:fname_new . + \ " > " . v:fname_out + endfunction + +The "-a" argument is used to force comparing the files as text, comparing as +binaries isn't useful. The "--binary" argument makes the files read in binary +mode, so that a CTRL-Z doesn't end the text on DOS. + + *E97* +Vim will do a test if the diff output looks alright. If it doesn't, you will +get an error message. Possible causes: +- The "diff" program cannot be executed. +- The "diff" program doesn't produce normal "ed" style diffs (see above). +- The 'shell' and associated options are not set correctly. Try if filtering + works with a command like ":!sort". +- You are using 'diffexpr' and it doesn't work. +If it's not clear what the problem is set the 'verbose' option to see more +messages. + + +USING PATCHES *diff-patchexpr* + +The 'patchexpr' option can be set to use something else than the standard +"patch" program. + +When 'patchexpr' is empty, Vim will call the "patch" program like this: > + + patch -o outfile origfile < patchfile + +This should work fine with most versions of the "patch" program. Note that a +CR in the middle of a line may cause problems, it is seen as a line break. + +If the default doesn't work for you, set the 'patchexpr' to an expression that +will have the same effect. These variables are set to the file names used: + + v:fname_in original file + v:fname_diff patch file + v:fname_out resulting patched file + +Example (this does the same as 'patchexpr' being empty): > + + let patchexpr=MyPatch + function MyPatch + :call system("patch -o " . v:fname_out . " " . v:fname_in . + \ " < " . v:fname_diff) + endfunction + +Make sure that using the "patch" program doesn't have unwanted side effects. +For example, watch out for additionally generated files, which should be +deleted. It should just patch the file and nothing else. + Vim will change directory to "/tmp" or another temp directory before +evaluating 'patchexpr'. This hopefully avoids that files in the current +directory are accidentally patched. Vim will also delete files starting with +v:fname_in and ending in ".rej" and ".orig". + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/digraph.txt b/en/digraph.txt new file mode 100644 index 000000000..2dcb556f9 --- /dev/null +++ b/en/digraph.txt @@ -0,0 +1,322 @@ +*digraph.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Digraphs *digraphs* *Digraphs* + +Digraphs are used to enter characters that normally cannot be entered by +an ordinary keyboard. These are mostly accented characters which have the +eighth bit set. The digraphs are easier to remember than the decimal number +that can be entered with CTRL-V (see |i_CTRL-V|). + +There is a brief introduction on digraphs in the user manual: |24.9| +An alternative is using the 'keymap' option. + +1. Defining digraphs |digraphs-define| +2. Using digraphs |digraphs-use| +3. Default digraphs |digraphs-default| + +{Vi does not have any of these commands} + +============================================================================== +1. Defining digraphs *digraphs-define* + + *:dig* *:digraphs* +:dig[raphs] show currently defined digraphs. + *E104* *E39* +:dig[raphs] {char1}{char2} {number} ... + Add digraph {char1}{char2} to the list. {number} is + the decimal representation of the character. + Example: > + :digr e: 235 a: 228 +< Avoid defining a digraph with '_' (underscore) as the + first character, it has a special meaning in the + future. + +Vim is normally compiled with the |+digraphs| feature. If the feature is +disabled, the ":digraph" command will display an error message. + +Example of the output of ":digraphs": > + TH � 222 ss � 223 a! � 224 a' � 225 a> � 226 a? � 227 a: � 228 + +The first two characters in each column are the characters you have to type to +enter the digraph. + +In the middle of each column is the resulting character. This may be mangled +if you look at it on a system that does not support digraphs or if you print +this file. + +The decimal number is the number of the character. + +============================================================================== +2. Using digraphs *digraphs-use* + +There are two methods to enter digraphs: *i_digraph* + CTRL-K {char1} {char2} or + {char1} {char2} +The first is always available; the second only when the 'digraph' option is +set. + +If a digraph with {char1}{char2} does not exist, Vim searches for a digraph +{char2}{char1}. This helps when you don't remember which character comes +first. + +Note that when you enter CTRL-K {char1}, where {char1} is a special key, Vim +enters the code for that special key. This is not a digraph. + +Once you have entered the digraph, Vim treats the character like a normal +character that occupies only one character in the file and on the screen. +Example: > + 'B' 'B' will enter the broken '|' character (166) + 'a' '>' will enter an 'a' with a circumflex (226) + CTRL-K '-' '-' will enter a soft hyphen (173) + +The current digraphs are listed with the ":digraphs" command. Some of the +default ones are listed below |digraph-table|. + +For CTRL-K, there is one general digraph: CTRL-K {char} will enter +{char} with the highest bit set. You can use this to enter meta-characters. + +The character cannot be part of a digraph. When hitting , Vim +stops digraph entry and ends Insert mode or Command-line mode, just like +hitting an out of digraph context. Use CTRL-V 155 to enter meta-ESC +(CSI). + +If you accidentally typed an 'a' that should be an 'e', you will type 'a' +'e'. But that is a digraph, so you will not get what you want. To correct +this, you will have to type e again. To avoid this don't set the +'digraph' option and use CTRL-K to enter digraphs. + +You may have problems using Vim with characters which have an ASCII value +above 128. For example: You insert ue (u-umlaut) and the editor echoes \334 +in Insert mode. After leaving the Insert mode everything is fine. Note that +fmt removes all characters with ASCII codes above 128 from the text being +formatted. On some Unix systems this means you have to define the +environment-variable LC_CTYPE. If you are using csh, then put the following +line in your .cshrc: > + setenv LC_CTYPE iso_8859_1 + +============================================================================== +3. Default digraphs *digraphs-default* + +Vim comes with a set of default digraphs. Check the output of ":digraphs" to +see them. + +On most systems Vim uses the same digraphs. They work for the Unicode and +ISO-8859-1 character sets. These default digraphs are taken from the RFC1345 +mnemonics. To make it easy to remember the mnemonic, the second character has +a standard meaning: + + char name char meaning ~ + Exclamation mark ! Grave + Apostrophe ' Acute accent + Greater-Than sign > Circumflex accent + Question Mark ? tilde + Hyphen-Minus - Macron + Left parenthesis ( Breve + Full Stop . Dot Above + Colon : Diaeresis + Comma , Cedilla + Underline _ Underline + Solidus / Stroke + Quotation mark " Double acute accent + Semicolon ; Ogonek + Less-Than sign < Caron + Zero 0 Ring above + Two 2 Hook + Nine 9 Horn + + Equals = Cyrillic + Asterisk * Greek + Percent sign % Greek/Cyrillic special + Plus + smalls: Arabic, capitals: Hebrew + Three 3 some Latin/Greek/Cyrillic letters + Four 4 Bopomofo + Five 5 Hiragana + Six 6 Katakana + +Example: a: is � and o: is � + +These are the RFC1345 digraphs for the one-byte characters. See the output of +":digraphs" for the others. The characters above 255 are only available when +Vim was compiled with the |+multi_byte| feature. + *digraph-table* +char digraph hex dec official name ~ +^@ NU 0x00 0 NULL (NUL) +^A SH 0x01 1 START OF HEADING (SOH) +^B SX 0x02 2 START OF TEXT (STX) +^C EX 0x03 3 END OF TEXT (ETX) +^D ET 0x04 4 END OF TRANSMISSION (EOT) +^E EQ 0x05 5 ENQUIRY (ENQ) +^F AK 0x06 6 ACKNOWLEDGE (ACK) +^G BL 0x07 7 BELL (BEL) +^H BS 0x08 8 BACKSPACE (BS) +^I HT 0x09 9 CHARACTER TABULATION (HT) +^@ LF 0x0a 10 LINE FEED (LF) +^K VT 0x0b 11 LINE TABULATION (VT) +^L FF 0x0c 12 FORM FEED (FF) +^M CR 0x0d 13 CARRIAGE RETURN (CR) +^N SO 0x0e 14 SHIFT OUT (SO) +^O SI 0x0f 15 SHIFT IN (SI) +^P DL 0x10 16 DATALINK ESCAPE (DLE) +^Q D1 0x11 17 DEVICE CONTROL ONE (DC1) +^R D2 0x12 18 DEVICE CONTROL TWO (DC2) +^S D3 0x13 19 DEVICE CONTROL THREE (DC3) +^T D4 0x14 20 DEVICE CONTROL FOUR (DC4) +^U NK 0x15 21 NEGATIVE ACKNOWLEDGE (NAK) +^V SY 0x16 22 SYNCRONOUS IDLE (SYN) +^W EB 0x17 23 END OF TRANSMISSION BLOCK (ETB) +^X CN 0x18 24 CANCEL (CAN) +^Y EM 0x19 25 END OF MEDIUM (EM) +^Z SB 0x1a 26 SUBSTITUTE (SUB) +^[ EC 0x1b 27 ESCAPE (ESC) +^\ FS 0x1c 28 FILE SEPARATOR (IS4) +^] GS 0x1d 29 GROUP SEPARATOR (IS3) +^^ RS 0x1e 30 RECORD SEPARATOR (IS2) +^_ US 0x1f 31 UNIT SEPARATOR (IS1) + SP 0x20 32 SPACE +# Nb 0x23 35 NUMBER SIGN +$ DO 0x24 36 DOLLAR SIGN +@ At 0x40 64 COMMERCIAL AT +[ <( 0x5b 91 LEFT SQUARE BRACKET +\ // 0x5c 92 REVERSE SOLIDUS +] )> 0x5d 93 RIGHT SQUARE BRACKET +^ '> 0x5e 94 CIRCUMFLEX ACCENT +` '! 0x60 96 GRAVE ACCENT +{ (! 0x7b 123 LEFT CURLY BRACKET +| !! 0x7c 124 VERTICAL LINE +} !) 0x7d 125 RIGHT CURLY BRACKET +~ '? 0x7e 126 TILDE +^? DT 0x7f 127 DELETE (DEL) +~@ PA 0x80 128 PADDING CHARACTER (PAD) +~A HO 0x81 129 HIGH OCTET PRESET (HOP) +~B BH 0x82 130 BREAK PERMITTED HERE (BPH) +~C NH 0x83 131 NO BREAK HERE (NBH) +~D IN 0x84 132 INDEX (IND) +~E NL 0x85 133 NEXT LINE (NEL) +~F SA 0x86 134 START OF SELECTED AREA (SSA) +~G ES 0x87 135 END OF SELECTED AREA (ESA) +~H HS 0x88 136 CHARACTER TABULATION SET (HTS) +~I HJ 0x89 137 CHARACTER TABULATION WITH JUSTIFICATION (HTJ) +~J VS 0x8a 138 LINE TABULATION SET (VTS) +~K PD 0x8b 139 PARTIAL LINE FORWARD (PLD) +~L PU 0x8c 140 PARTIAL LINE BACKWARD (PLU) +~M RI 0x8d 141 REVERSE LINE FEED (RI) +~N S2 0x8e 142 SINGLE-SHIFT TWO (SS2) +~O S3 0x8f 143 SINGLE-SHIFT THREE (SS3) +~P DC 0x90 144 DEVICE CONTROL STRING (DCS) +~Q P1 0x91 145 PRIVATE USE ONE (PU1) +~R P2 0x92 146 PRIVATE USE TWO (PU2) +~S TS 0x93 147 SET TRANSMIT STATE (STS) +~T CC 0x94 148 CANCEL CHARACTER (CCH) +~U MW 0x95 149 MESSAGE WAITING (MW) +~V SG 0x96 150 START OF GUARDED AREA (SPA) +~W EG 0x97 151 END OF GUARDED AREA (EPA) +~X SS 0x98 152 START OF STRING (SOS) +~Y GC 0x99 153 SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) +~Z SC 0x9a 154 SINGLE CHARACTER INTRODUCER (SCI) +~[ CI 0x9b 155 CONTROL SEQUENCE INTRODUCER (CSI) +~\ ST 0x9c 156 STRING TERMINATOR (ST) +~] OC 0x9d 157 OPERATING SYSTEM COMMAND (OSC) +~^ PM 0x9e 158 PRIVACY MESSAGE (PM) +~_ AC 0x9f 159 APPLICATION PROGRAM COMMAND (APC) +| NS 0xa0 160 NO-BREAK SPACE +� !I 0xa1 161 INVERTED EXCLAMATION MARK +� Ct 0xa2 162 CENT SIGN +� Pd 0xa3 163 POUND SIGN +� Cu 0xa4 164 CURRENCY SIGN +� Ye 0xa5 165 YEN SIGN +� BB 0xa6 166 BROKEN BAR +� SE 0xa7 167 SECTION SIGN +� ': 0xa8 168 DIAERESIS +� Co 0xa9 169 COPYRIGHT SIGN +� -a 0xaa 170 FEMININE ORDINAL INDICATOR +� << 0xab 171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +� NO 0xac 172 NOT SIGN +� -- 0xad 173 SOFT HYPHEN +� Rg 0xae 174 REGISTERED SIGN +� 'm 0xaf 175 MACRON +� DG 0xb0 176 DEGREE SIGN +� +- 0xb1 177 PLUS-MINUS SIGN +� 2S 0xb2 178 SUPERSCRIPT TWO +� 3S 0xb3 179 SUPERSCRIPT THREE +� '' 0xb4 180 ACUTE ACCENT +� My 0xb5 181 MICRO SIGN +� PI 0xb6 182 PILCROW SIGN +� .M 0xb7 183 MIDDLE DOT +� ', 0xb8 184 CEDILLA +� 1S 0xb9 185 SUPERSCRIPT ONE +� -o 0xba 186 MASCULINE ORDINAL INDICATOR +� >> 0xbb 187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +� 14 0xbc 188 VULGAR FRACTION ONE QUARTER +� 12 0xbd 189 VULGAR FRACTION ONE HALF +� 34 0xbe 190 VULGAR FRACTION THREE QUARTERS +� ?I 0xbf 191 INVERTED QUESTION MARK +� A! 0xc0 192 LATIN CAPITAL LETTER A WITH GRAVE +� A' 0xc1 193 LATIN CAPITAL LETTER A WITH ACUTE +� A> 0xc2 194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX +� A? 0xc3 195 LATIN CAPITAL LETTER A WITH TILDE +� A: 0xc4 196 LATIN CAPITAL LETTER A WITH DIAERESIS +� AA 0xc5 197 LATIN CAPITAL LETTER A WITH RING ABOVE +� AE 0xc6 198 LATIN CAPITAL LETTER AE +� C, 0xc7 199 LATIN CAPITAL LETTER C WITH CEDILLA +� E! 0xc8 200 LATIN CAPITAL LETTER E WITH GRAVE +� E' 0xc9 201 LATIN CAPITAL LETTER E WITH ACUTE +� E> 0xca 202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX +� E: 0xcb 203 LATIN CAPITAL LETTER E WITH DIAERESIS +� I! 0xcc 204 LATIN CAPITAL LETTER I WITH GRAVE +� I' 0xcd 205 LATIN CAPITAL LETTER I WITH ACUTE +� I> 0xce 206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX +� I: 0xcf 207 LATIN CAPITAL LETTER I WITH DIAERESIS +� D- 0xd0 208 LATIN CAPITAL LETTER ETH (Icelandic) +� N? 0xd1 209 LATIN CAPITAL LETTER N WITH TILDE +� O! 0xd2 210 LATIN CAPITAL LETTER O WITH GRAVE +� O' 0xd3 211 LATIN CAPITAL LETTER O WITH ACUTE +� O> 0xd4 212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX +� O? 0xd5 213 LATIN CAPITAL LETTER O WITH TILDE +� O: 0xd6 214 LATIN CAPITAL LETTER O WITH DIAERESIS +� *X 0xd7 215 MULTIPLICATION SIGN +� O/ 0xd8 216 LATIN CAPITAL LETTER O WITH STROKE +� U! 0xd9 217 LATIN CAPITAL LETTER U WITH GRAVE +� U' 0xda 218 LATIN CAPITAL LETTER U WITH ACUTE +� U> 0xdb 219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX +� U: 0xdc 220 LATIN CAPITAL LETTER U WITH DIAERESIS +� Y' 0xdd 221 LATIN CAPITAL LETTER Y WITH ACUTE +� TH 0xde 222 LATIN CAPITAL LETTER THORN (Icelandic) +� ss 0xdf 223 LATIN SMALL LETTER SHARP S (German) +� a! 0xe0 224 LATIN SMALL LETTER A WITH GRAVE +� a' 0xe1 225 LATIN SMALL LETTER A WITH ACUTE +� a> 0xe2 226 LATIN SMALL LETTER A WITH CIRCUMFLEX +� a? 0xe3 227 LATIN SMALL LETTER A WITH TILDE +� a: 0xe4 228 LATIN SMALL LETTER A WITH DIAERESIS +� aa 0xe5 229 LATIN SMALL LETTER A WITH RING ABOVE +� ae 0xe6 230 LATIN SMALL LETTER AE +� c, 0xe7 231 LATIN SMALL LETTER C WITH CEDILLA +� e! 0xe8 232 LATIN SMALL LETTER E WITH GRAVE +� e' 0xe9 233 LATIN SMALL LETTER E WITH ACUTE +� e> 0xea 234 LATIN SMALL LETTER E WITH CIRCUMFLEX +� e: 0xeb 235 LATIN SMALL LETTER E WITH DIAERESIS +� i! 0xec 236 LATIN SMALL LETTER I WITH GRAVE +� i' 0xed 237 LATIN SMALL LETTER I WITH ACUTE +� i> 0xee 238 LATIN SMALL LETTER I WITH CIRCUMFLEX +� i: 0xef 239 LATIN SMALL LETTER I WITH DIAERESIS +� d- 0xf0 240 LATIN SMALL LETTER ETH (Icelandic) +� n? 0xf1 241 LATIN SMALL LETTER N WITH TILDE +� o! 0xf2 242 LATIN SMALL LETTER O WITH GRAVE +� o' 0xf3 243 LATIN SMALL LETTER O WITH ACUTE +� o> 0xf4 244 LATIN SMALL LETTER O WITH CIRCUMFLEX +� o? 0xf5 245 LATIN SMALL LETTER O WITH TILDE +� o: 0xf6 246 LATIN SMALL LETTER O WITH DIAERESIS +� -: 0xf7 247 DIVISION SIGN +� o/ 0xf8 248 LATIN SMALL LETTER O WITH STROKE +� u! 0xf9 249 LATIN SMALL LETTER U WITH GRAVE +� u' 0xfa 250 LATIN SMALL LETTER U WITH ACUTE +� u> 0xfb 251 LATIN SMALL LETTER U WITH CIRCUMFLEX +� u: 0xfc 252 LATIN SMALL LETTER U WITH DIAERESIS +� y' 0xfd 253 LATIN SMALL LETTER Y WITH ACUTE +� th 0xfe 254 LATIN SMALL LETTER THORN (Icelandic) +� y: 0xff 255 LATIN SMALL LETTER Y WITH DIAERESIS + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/editing.txt b/en/editing.txt new file mode 100644 index 000000000..0543e4a52 --- /dev/null +++ b/en/editing.txt @@ -0,0 +1,1432 @@ +*editing.txt* For Vim version 6.3. Last change: 2004 Apr 28 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Editing files *edit-files* + +1. Introduction |edit-intro| +2. Editing a file |edit-a-file| +3. Dialogs |edit-dialogs| +4. The current directory |current-directory| +5. The argument list |argument-list| +6. Writing |writing| +7. Writing and quitting |write-quit| +8. Editing binary files |edit-binary| +9. Encryption |encryption| +10. Timestamps |timestamps| + +============================================================================== +1. Introduction *edit-intro* + +Editing a file with Vim means: + +1. reading the file into the internal buffer +2. changing the buffer with editor commands +3. writing the buffer into a file + + *current-file* +As long as you don't write the buffer, the original file remains unchanged. +If you start editing a file (read a file into the buffer), the file name is +remembered as the "current file name". + + *alternate-file* +If there already was a current file name, then that one becomes the alternate +file name. All file names are remembered in the file list. When you enter a +file name, for editing (e.g., with ":e filename") or writing (e.g., with (:w +file name"), the file name is added to the list. You can use this list to +remember which files you edited and to quickly switch from one file to +another with the CTRL-^ command (e.g., to copy text). First type the number +of the file and then hit CTRL-^. {Vi: only one alternate file name} + +CTRL-G or *CTRL-G* *:f* *:fi* *:file* +:f[ile] Prints the current file name (as typed), the + cursor position (unless the 'ruler' option is set), + and the file status (readonly, modified, read errors, + new file)). See the 'shortmess' option about how tho + make this message shorter. {Vi does not include + column number} + +{count}CTRL-G Like CTRL-G, but prints the current file name with + full path. If the count is higher than 1 the current + buffer number is also given. {not in Vi} + + *g_CTRL-G* *word-count* *byte-count* +g CTRL-G Prints the current position of the cursor in four + ways: Column, Line, Word and Byte. If there are + characters in the line that take more than one + position on the screen ( or special character), + both the "real" column and the screen column are + shown, separated with a dash. See also 'ruler' + option. {not in Vi} + + *v_g_CTRL-G* +{Visual}g CTRL-G Similar to "g CTRL-G", but Word, Line, and Byte counts + for the visually selected region are displayed. In + Blockwise mode, Column count is also shown. (For + {Visual} see |Visual-mode|.) + {not in VI} + + *:file_f* +:f[ile] {name} Sets the current file name to {name}. + +:buffers +:files +:ls List all the currently known file names. See + 'windows.txt' |:files| |:buffers| |:ls|. {not in + Vi} + +Vim will remember the full path name of a file name that you enter. In most +cases when the file name is displayed only the name you typed is shown, but +the full path name is being used if you used the ":cd" command |:cd|. + + *home-replace* +If the environment variable $HOME is set, and the file name starts with that +string, it is often displayed with HOME replaced with "~". This was done to +keep file names short. When reading or writing files the full name is still +used, the "~" is only used when displaying file names. When replacing the +file name would result in just "~", "~/" is used instead (to avoid confusion +with 'backupext' set to "~"). + +When writing the buffer, the default is to use the current file name. Thus +when you give the "ZZ" or ":wq" command, the original file will be +overwritten. If you do not want this, the buffer can be written into another +file by giving a file name argument to the ":write" command. For example: > + + vim testfile + [change the buffer with editor commands] + :w newfile + :q + +This will create a file "newfile", that is a modified copy of "testfile". +The file "testfile" will remain unchanged. Anyway, if the 'backup' option is +set, Vim renames or copies the original file before it will be overwritten. +You can use this file if you discover that you need the original file. See +also the 'patchmode' option. The name of the backup file is normally the same +as the original file with 'backupext' appended. The default "~" is a bit +strange to avoid accidentally overwriting existing files. If you prefer ".bak" +change the 'backupext' option. Extra dots are replaced with '_' on MS-DOS +machines, when Vim has detected that an MS-DOS-like filesystem is being used +(e.g., messydos or crossdos) or when the 'shortname' option is on. The +backup file can be placed in another directory by setting 'backupdir'. + + *auto-shortname* +Technical: On the Amiga you can use 30 characters for a file name. But on an + MS-DOS-compatible filesystem only 8 plus 3 characters are + available. Vim tries to detect the type of filesystem when it is + creating the .swp file. If an MS-DOS-like filesystem is suspected, + a flag is set that has the same effect as setting the 'shortname' + option. This flag will be reset as soon as you start editing a + new file. The flag will be used when making the file name for the + ".swp" and ".~" files for the current file. But when you are + editing a file in a normal filesystem and write to an MS-DOS-like + filesystem the flag will not have been set. In that case the + creation of the ".~" file may fail and you will get an error + message. Use the 'shortname' option in this case. + +When you started editing without giving a file name, "No File" is displayed in +messages. If the ":write" command is used with a file name argument, the file +name for the current file is set to that file name. This only happens when +the 'F' flag is included in 'cpoptions' (by default it is included). This is +useful when entering text in an empty buffer and then writing it to a file. +If 'cpoptions' contains the 'f' flag (by default it is NOT included) the file +name is set for the ":read file" command. This is useful when starting Vim +without an argument and then doing ":read file" to start editing a file. + *not-edited* +Because the file name was set without really starting to edit that file, you +are protected from overwriting that file. This is done by setting the +"notedited" flag. You can see if this flag is set with the CTRL-G or ":file" +command. It will include "[Not edited]" when the "notedited" flag is set. +When writing the buffer to the current file name (with ":w!"), the "notedited" +flag is reset. + + *abandon* +Vim remembers whether you have changed the buffer. You are protected from +losing the changes you made. If you try to quit without writing, or want to +start editing another file, Vim will refuse this. In order to overrule this +protection, add a '!' to the command. The changes will then be lost. For +example: ":q" will not work if the buffer was changed, but ":q!" will. To see +whether the buffer was changed use the "CTRL-G" command. The message includes +the string "[Modified]" if the buffer has been changed. + +If you want to automatically save the changes without asking, switch on the +'autowriteall' option. 'autowrite' is the associated Vi-compatible option +that does not work for all commands. + +If you want to keep the changed buffer without saving it, switch on the +'hidden' option. See |hidden-buffer|. + +============================================================================== +2. Editing a file *edit-a-file* + + *:e* *:edit* +:e[dit] [++opt] [+cmd] Edit the current file. This is useful to re-edit the + current file, when it has been changed outside of Vim. + This fails when changes have been made to the current + buffer and 'autowriteall' isn't set or the file can't + be written. + Also see |++opt| and |+cmd|. + {Vi: no ++opt} + + *:edit!* +:e[dit]! [++opt] [+cmd] + Edit the current file always. Discard any changes to + the current buffer. This is useful if you want to + start all over again. + Also see |++opt| and |+cmd|. + {Vi: no ++opt} + + *:edit_f* +:e[dit] [++opt] [+cmd] {file} + Edit {file}. + This fails when changes have been made to the current + buffer, unless 'hidden' is set or 'autowriteall' is + set and the file can be written. + Also see |++opt| and |+cmd|. + {Vi: no ++opt} + + *:edit!_f* +:e[dit]! [++opt] [+cmd] {file} + Edit {file} always. Discard any changes to the + current buffer. + Also see |++opt| and |+cmd|. + {Vi: no ++opt} + +:e[dit] [++opt] [+cmd] #[count] + Edit the [count]th alternate file name (as shown by + :files). This command does the same as + [count] CTRL-^. But ":e #" doesn't work if the + alternate buffer doesn't have a file name, while + CTRL-^ still works then. + Also see |++opt| and |+cmd|. + {Vi: no ++opt} + + *:ene* *:enew* +:ene[w] Edit a new, unnamed buffer. This fails when changes + have been made to the current buffer, unless 'hidden' + is set or 'autowriteall' is set and the file can be + written. + If 'fileformats' is not empty, the first format given + will be used for the new buffer. If 'fileformats' is + empty, the 'fileformat' of the current buffer is used. + {not in Vi} + + *:ene!* *:enew!* +:ene[w]! Edit a new, unnamed buffer. Discard any changes to + the current buffer. + Set 'fileformat' like |:enew|. + {not in Vi} + + *:fin* *:find* +:fin[d][!] [++opt] [+cmd] {file} + Find {file} in 'path' and then |:edit| it. + {not in Vi} {not available when the |+file_in_path| + feature was disabled at compile time} + +:{count}fin[d][!] [++opt] [+cmd] {file} + Just like ":find", but use the {count} match in + 'path'. Thus ":2find file" will find the second + "file" found in 'path'. When there are fewer matches + for the file in 'path' than asked for, you get an + error message. + + *:ex* +:ex [++opt] [+cmd] [file] + Same as |:edit|. + + *:vi* *:visual* +:vi[sual][!] [++opt] [+cmd] [file] + When entered in Ex mode: Leave |Ex-mode|, go back to + Normal mode. Otherwise same as |:edit|. + + *:vie* *:view* +:vie[w] [++opt] [+cmd] file + When entered in Ex mode: Leave Ex mode, go back to + Normal mode. Otherwise same as |:edit|, but set + 'readonly' option for this buffer. {not in Vi} + + *CTRL-^* *CTRL-6* +[count]CTRL-^ Edit [count]th alternate file (equivalent to ":e + #[count]"). Without count this gets you to the + previously edited file. This is a quick way to toggle + between two (or more) files. + If the 'autowrite' or 'autowriteall' option is on and + the buffer was changed, write it. + Mostly the ^ character is positioned on the 6 key, + pressing CTRL and 6 then gets you what we call CTRL-^. + But on some non-US keyboards CTRL-^ is produced in + another way. + +[count]]f *]f* *[f* +[count][f Same as "gf". Deprecated. + + *gf* *E446* *E447* +[count]gf Edit the file whose name is under or after the cursor. + Mnemonic: "goto file". + Uses the 'isfname' option to find out which characters + are supposed to be in a file name. Trailing + punctuation characters ".,:;!" are ignored. + Uses the 'path' option as a list of directory names + to look for the file. Also looks for the file + relative to the current file. + Uses the 'suffixesadd' option to check for file names + with a suffix added. + If the file can't be found, 'includeexpr' is used to + modify the name and another attempt is done. + If a [count] is given, the count'th file that is found + in the 'path' is edited. + This command fails if Vim refuses to |abandon| the + current file. + If you do want to edit a new file, use: > + :e +< To make gf always work like that: > + :map gf :e +< If the name is a hypertext link, that looks like + "type://machine/path", you need the |netrw| plugin. + For Unix the '~' character is expanded, like in + "~user/file". Environment variables are expanded too + |expand-env|. + {not in Vi} + {not available when the |+file_in_path| feature was + disabled at compile time} + + *v_gf* +{Visual}[count]gf Same as "gf", but the highlighted text is used as the + name of the file to edit. 'isfname' is ignored. + Leading blanks are skipped, otherwise all blanks and + special characters are included in the file name. + (For {Visual} see |Visual-mode|.) + {not in VI} + +These commands are used to start editing a single file. This means that the +file is read into the buffer and the current file name is set. The file that +is opened depends on the current directory, see |:cd|. + +See |read-messages| for an explanation of the message that is given after the +file has been read. + +You can use the ":e!" command if you messed up the buffer and want to start +all over again. The ":e" command is only useful if you have changed the +current file name. + + *:filename* *{file}* +Note for systems other than Unix and MS-DOS: When using a command that +accepts a single file name (like ":edit file") spaces in the file name are +allowed, but trailing spaces are ignored. This is useful on systems that +allow file names with embedded spaces (like the Amiga). Example: The command +":e Long File Name " will edit the file "Long File Name". When using a +command that accepts more than one file name (like ":next file1 file2") +embedded spaces must be escaped with a backslash. + +Wildcards in {file} are expanded. Which wildcards are supported depends on +the system. These are the common ones: + * matches anything, including nothing + ? matches one character + [abc] match 'a', 'b' or 'c' +To avoid the special meaning of the wildcards prepend a backslash. However, +on MS-Windows the backslash is a path separator and "path\[abc]" is still seen +as a wildcard when "[" is in the 'isfname' option. A simple way to avoid this +is to use "path\[[]abc]". Then the file "path[abc]" literally. + + *backtick-expansion* *`-expansion* +On Unix you can also use backticks in the file name, for example: > + :e `find . -name ver\\*.c -print` +The backslashes before the star are required to prevent "ver*.c" to be +expanded by the shell before executing the find program. +This also works for most other systems, with the restriction that the +backticks must be around the whole item. It is not possible to have text +directly before the first or just after the last backtick. + +You can have the backticks expanded as a Vim expression, instead of +an external command, by using the syntax `={expr}` e.g. > + :let foo='bar' + :e `=foo . ".c" ` +edits "bar.c". Note that the expression cannot contain a backtick. + + *++opt* *[++opt]* +The [++opt] argument can be used to force the value of 'fileformat' or +'fileencoding' to a value for one command. The form is: > + ++{optname}={value} + +Where {optname} is one of: *++ff* *++enc* *++bin* *++nobin* + ff or fileformat overrides 'fileformat' + enc or encoding overrides 'fileencoding' + bin or binary sets 'binary' + nobin or nobinary resets 'binary' + +{value} cannot contain white space. It can be any valid value for these +options. Examples: > + :e ++ff=unix +This edits the same file again with 'fileformat' set to "unix". > + + :w ++enc=latin1 newfile +This writes the current buffer to "newfile" in latin1 format. + +Note that when reading, the 'fileformat' and 'fileencoding' options will be +set to the used format. When writing this doesn't happen, thus a next write +will use the old value of the option. Same for the 'binary' option. + +There may be several ++opt arguments, separated by white space. They must all +appear before any |+cmd| argument. + + *+cmd* *[+cmd]* +The [+cmd] argument can be used to position the cursor in the newly opened +file, or execute any other command: + + Start at the last line. + +{num} Start at line {num}. + +/{pat} Start at first line containing {pat}. + +{command} Execute {command} after opening the new file. + {command} is any Ex command. +To include a white space in the {pat} or {command}, precede it with a +backslash. Double the number of backslashes. > + :edit +/The\ book file + :edit +/dir\ dirname\\ file + :edit +set\ dir=c:\\\\temp file +Note that in the last example the number of backslashes is halved twice: Once +for the "+cmd" argument and once for the ":set" command. + + *file-formats* +The 'fileformat' option sets the style for a file: +'fileformat' characters name ~ + "dos" or DOS format *DOS-format* + "unix" Unix format *Unix-format* + "mac" Mac format *Mac-format* +Previously 'textmode' was used. It is obsolete now. + +When reading a file, the mentioned characters are interpreted as the . +In DOS format (default for MS-DOS, OS/2 and Win32), and are both +interpreted as the . Note that when writing the file in DOS format, + characters will be added for each single . Also see |file-read|. + +When writing a file, the mentioned characters are used for . For DOS +format is used. Also see |DOS-format-write|. + +You can read a file in DOS format and write it in Unix format. This will +replace all pairs by (assuming 'fileformats' includes "dos"): > + :e file + :set fileformat=unix + :w +If you read a file in Unix format and write with DOS format, all +characters will be replaced with (assuming 'fileformats' includes +"unix"): > + :e file + :set fileformat=dos + :w + +If you start editing a new file and the 'fileformats' option is not empty +(which is the default), Vim will try to detect whether the lines in the file +are separated by the specified formats. When set to "unix,dos", Vim will +check for lines with a single (as used on Unix and Amiga) or by a + pair (MS-DOS). Only when ALL lines end in , 'fileformat' is set +to "dos", otherwise it is set to "unix". When 'fileformats' includes "mac", +and no characters are found in the file, 'fileformat' is set to "mac". + +If the 'fileformat' option is set to "dos" on non-MS-DOS systems the message +"[dos format]" is shown to remind you that something unusual is happening. On +MS-DOS systems you get the message "[unix format]" if 'fileformat' is set to +"unix". On all systems but the Macintosh you get the message "[mac format]" +if 'fileformat' is set to "mac". + +If the 'fileformats' option is empty and DOS format is used, but while reading +a file some lines did not end in , "[CR missing]" will be included in +the file message. +If the 'fileformats' option is empty and Mac format is used, but while reading +a file a was found, "[NL missing]" will be included in the file message. + +If the new file does not exist, the 'fileformat' of the current buffer is used +when 'fileformats' is empty. Otherwise the first format from 'fileformats' is +used for the new file. + +Before editing binary, executable or Vim script files you should set the +'binary' option. A simple way to do this is by starting Vim with the "-b" +option. This will avoid the use of 'fileformat'. Without this you risk that +single characters are unexpectedly replaced with . + +You can encrypt files that are written by setting the 'key' option. This +provides some security against others reading your files. |encryption| + + +File Searching *file-searching* + +{not available when compiled without the |+path_extra| feature} + +The file searching is currently used for the 'path', 'cdpath' and 'tags' +options. There are three different types of searching: + +1) Downward search: + Downward search uses the wildcards '*', '**' and possibly others + supported by your operating system. '*' and '**' are handled inside Vim, so + they work on all operating systems. + + The usage of '*' is quite simple: It matches 0 or more characters. + + '**' is more sophisticated: + - It ONLY matches directories. + - It matches up to 30 directories deep, so you can use it to search an + entire directory tree + - The maximum number of levels matched can be given by appending a number + to '**'. + Thus '/usr/**2' can match: > + /usr + /usr/include + /usr/include/sys + /usr/include/g++ + /usr/lib + /usr/lib/X11 + .... +< It does NOT match '/usr/include/g++/std' as this would be three + levels. + The allowed number range is 0 ('**0' is removed) to 255. + If the given number is smaller than 0 it defaults to 30, if it's + bigger than 255 it defaults to 255. + - '**' can only be at the end of the path or be followed by a path + separator or by a number and a path separator. + + You can combine '*' and '**' in any order: > + /usr/**/sys/* + /usr/*/sys/** + /usr/**2/sys/* + +2) Upward search: + Here you can give a directory and then search the directory tree upward for + a file. You could give stop-directories to limit the upward search. The + stop-directories are appended to the path (for the 'path' option) or to + the filename (for the 'tags' option) with a ';'. If you want several + stop-directories separate them with ';'. If you want no stop-directory + ("search upward till the root directory) just use ';'. > + /usr/include/sys;/usr +< will search in: > + /usr/include/sys + /usr/include + /usr +< + If you use a relative path the upward search is started in Vim's current + directory or in the directory of the current file (if the relative path + starts with './' and 'd' is not included in 'cpoptions'). + + If Vim's current path is /u/user_x/work/release and you do > + :set path=include;/u/user_x +< and then search for a file with |gf| the file is searched in: > + /u/user_x/work/release/include + /u/user_x/work/include + /u/user_x/include + +3) Combined up/downward search + If Vim's current path is /u/user_x/work/release and you do > + set path=**;/u/user_x +< and then search for a file with |gf| the file is searched in: > + /u/user_x/work/release/** + /u/user_x/work/** + /u/user_x/** +< + BE CAREFUL! This might consume a lot of time, as the search of + '/u/user_x/**' includes '/u/user_x/work/**' and + '/u/user_x/work/release/**'. So '/u/user_x/work/release/**' is searched + three and '/u/user_x/work/**' is searched two times. + + In the above example you might want to set path to: > + :set path=**,/u/user_x/** +< This searches: > + /u/user_x/work/release/** + /u/user_x/** +< This searches the same directories, but in a different order. + +============================================================================== +3. Dialogs *edit-dialogs* + + *:confirm* *:conf* +:conf[irm] {command} Execute {command}, and use a dialog when an + operation has to be confirmed. Can be used on the + ":q", ":qa" and ":w" commands (the latter to over-ride + a read-only setting). + +Examples: > + :confirm w foo +< Will ask for confirmation when "foo" already exists. > + :confirm q +< Will ask for confirmation when there are changes. > + :confirm qa +< If any modified, unsaved buffers exist, you will be prompted to save + or abandon each one. There are also choices to "save all" or "abandon + all". + +If you want to always use ":confirm", set the 'confirm' option. + + *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* +:bro[wse] {command} Open a file selection dialog for an argument to + {command}. At present this works for |:e|, |:w|, + |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc| and + |:mksession|. + {only in Win32, Athena, Motif, GTK and Mac GUI} + When ":browse" is not possible you get an error + message. If the |+browse| feature is missing or the + {command} doesn't support browsing, the {command} is + executed without a dialog. + ":browse set" works like |:options|. + +The syntax is best shown via some examples: > + :browse e $vim/foo +< Open the browser in the $vim/foo directory, and edit the + file chosen. > + :browse e +< Open the browser in the directory specified with 'browsedir', + and edit the file chosen. > + :browse w +< Open the browser in the directory of the current buffer, + with the current buffer filename as default, and save the + buffer under the filename chosen. > + :browse w C:/bar +< Open the browser in the C:/bar directory, with the current + buffer filename as default, and save the buffer under the + filename chosen. +Also see the |'browsedir'| option. +For versions of Vim where browsing is not supported, the command is executed +unmodified. + + *browsefilter* +For MS Windows, you can modify the filters that are used in the browse dialog. +By setting the g:browsefilter or b:browsefilter variables, you can change the +filters globally or locally to the buffer. The variable is set to a string in +the format "{filter label}\t{pattern};{pattern}\n" where {filter label} is the +text that appears in the "Files of Type" comboBox, and {pattern} is the +pattern which filters the filenames. Several patterns can be given, separated +by ';'. + +For Motif the same format is used, but only the very first pattern is actually +used (Motif only offers one pattern, but you can edit it). + +For example, to have only Vim files in the dialog, you could use the following +command: > + + let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n" + +You can override the filter setting on a per-buffer basis by setting the +b:browsefilter variable. You would most likely set b:browsefilter in a +filetype plugin, so that the browse dialog would contain entries related to +the type of file you are currently editing. Disadvantage: This makes it +difficult to start editing a file of a different type. To overcome this, you +may want to add "All Files\t*.*\n" as the final filter, so that the user can +still access any desired file. + +============================================================================== +4. The current directory *current-directory* + +You may use the |:cd| and |:lcd| commands to change to another directory, so +you will not have to type that directory name in front of the file names. It +also makes a difference for executing external commands, e.g. ":!ls". + + *:cd* *E472* +:cd On non-Unix systems: Print the current directory + name. On Unix systems: Change the current directory + to the home directory. Use |:pwd| to print the + current directory on all systems. + +:cd {path} Change the current directory to {path}. + If {path} is relative, it is searched for in the + directories listed in |'cdpath'|. + Does not change the meaning of an already opened file, + because its full path name is remembered. Files from + the |arglist| may change though! + On MS-DOS this also changes the active drive. + To change to the directory of the current file: > + :cd %:h +< + *:cd-* *E186* +:cd - Change to the previous current directory (before the + previous ":cd {path}" command). {not in Vi} + + *:chd* *:chdir* +:chd[ir] [path] Same as |:cd|. + + *:lc* *:lcd* +:lc[d] {path} Like |:cd|, but only set the current directory for the + current window. The current directory for other + windows is not changed. {not in Vi} + + *:lch* *:lchdir* +:lch[dir] Same as |:lcd|. {not in Vi} + + *:pw* *:pwd* *E187* +:pw[d] Print the current directory name. {Vi: no pwd} + Also see |getcwd()|. + +So long as no |:lcd| command has been used, all windows share the same current +directory. Using a command to jump to another window doesn't change anything +for the current directory. +When a |:lcd| command has been used for a window, the specified directory +becomes the current directory for that window. Windows where the |:lcd| +command has not been used stick to the global current directory. When jumping +to another window the current directory will become the last specified local +current directory. If none was specified, the global current directory is +used. +When a |:cd| command is used, the current window will lose his local current +directory and will use the global current directory from now on. + +After using |:cd| the full path name will be used for reading and writing +files. On some networked file systems this may cause problems. The result of +using the full path name is that the file names currently in use will remain +referring to the same file. Example: If you have a file a:test and a +directory a:vim the commands ":e test" ":cd vim" ":w" will overwrite the file +a:test and not write a:vim/test. But if you do ":w test" the file a:vim/test +will be written, because you gave a new file name and did not refer to a +filename before the ":cd". + +============================================================================== +5. The argument list *argument-list* *arglist* + +If you give more than one file name when starting Vim, this list is remembered +as the argument list. You can jump to each file in this list. + +Do not confuse this with the buffer list, which you can see with the +|:buffers| command. The argument list was already present in Vi, the buffer +list is new in Vim. A file name in the argument list will also be present in +the buffer list (unless it was deleted with ":bdel"). + +This subject is introduced in section |07.2| of the user manual. + +There is one global argument list, which is used for all windows by default. +It is possible to create a new argument list local to a window, see +|:arglocal|. + +You can use the argument list with the following commands, and with the +expression functions |argc()| and |argv()|. These all work on the argument +list of the current window. + + *:ar* *:args* +:ar[gs] Print the argument list, with the current file in + square brackets. + +:ar[gs] [++opt] [+cmd] {arglist} *:args_f* + Define {arglist} as the new argument list and edit + the first one. This fails when changes have been made + and Vim does not want to |abandon| the current buffer. + Also see |++opt| and |+cmd|. + {Vi: no ++opt} + +:ar[gs]! [++opt] [+cmd] {arglist} *:args_f!* + Define {arglist} as the new argument list and edit + the first one. Discard any changes to the current + buffer. + Also see |++opt| and |+cmd|. + {Vi: no ++opt} + +:[count]arge[dit][!] [++opt] [+cmd] {name} *:arge* *:argedit* + Add {name} to the argument list and edit it. + When {name} already exists in the argument list, this + entry is edited. + This is like using |:argadd| and then |:edit|. + Note that only one file name is allowed, and spaces + inside the file name are allowed, like with |:edit|. + [count] is used like with |:argadd|. + [!] is required if the current file cannot be + |abandon|ed. + Also see |++opt| and |+cmd|. + {not in Vi} + +:[count]arga[dd] {name} .. *:arga* *:argadd* *E479* + Add the {name}s to the argument list. + If [count] is omitted, the {name}s are added just + after the current entry in the argument list. + Otherwise they are added after the [count]'th file. + If the argument list is "a b c", and "b" is the + current argument, then these commands result in: + command new argument list ~ + :argadd x a b x c + :0argadd x x a b c + :1argadd x a x b c + :99argadd x a b c x + There is no check for duplicates, it is possible to + add a file to the argument list twice. + The currently edited file is not changed. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + Note: you can also use this method: > + :args ## x +< This will add the "x" item and sort the new list. + +:argd[elete] {pattern} .. *:argd* *:argdelete* *E480* + Delete files from the argument list that match the + {pattern}s. {pattern} is used like a file pattern, + see |file-pattern|. "%" can be used to delete the + current entry. + This command keeps the currently edited file, also + when it's deleted from the argument list. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + +:{range}argd[elete] Delete the {range} files from the argument list. + When the last number in the range is too high, up to + the last argument is deleted. Example: > + :10,1000argdel +< Deletes arguments 10 and further, keeping 1-9. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + + *:argu* *:argument* +:[count]argu[ment] [count] [++opt] [+cmd] + Edit file [count] in the argument list. When [count] + is omitted the current entry is used. This fails + when changes have been made and Vim does not want to + |abandon| the current buffer. + Also see |++opt| and |+cmd|. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + +:[count]argu[ment]! [count] [++opt] [+cmd] + Edit file [count] in the argument list, discard any + changes to the current buffer. When [count] is + omitted the current entry is used. + Also see |++opt| and |+cmd|. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + +:[count]n[ext] [++opt] [+cmd] *:n* *:ne* *:next* *E165* *E163* + Edit [count] next file. This fails when changes have + been made and Vim does not want to |abandon| the + current buffer. Also see |++opt| and |+cmd|. {Vi: no + count or ++opt}. + +:[count]n[ext]! [++opt] [+cmd] + Edit [count] next file, discard any changes to the + buffer. Also see |++opt| and |+cmd|. {Vi: no count + or ++opt}. + +:n[ext] [++opt] [+cmd] {arglist} *:next_f* + Same as |:args_f|. + +:n[ext]! [++opt] [+cmd] {arglist} + Same as |:args_f!|. + +:[count]N[ext] [count] [++opt] [+cmd] *:Next* *:N* *E164* + Edit [count] previous file in argument list. This + fails when changes have been made and Vim does not + want to |abandon| the current buffer. + Also see |++opt| and |+cmd|. {Vi: no count or ++opt}. + +:[count]N[ext]! [count] [++opt] [+cmd] + Edit [count] previous file in argument list. Discard + any changes to the buffer. Also see |++opt| and + |+cmd|. {Vi: no count or ++opt}. + +:[count]prev[ious] [count] [++opt] [+cmd] *:prev* *:previous* + Same as :Next. Also see |++opt| and |+cmd|. {Vi: + only in some versions} + + *:rew* *:rewind* +:rew[ind] [++opt] [+cmd] + Start editing the first file in the argument list. + This fails when changes have been made and Vim does + not want to |abandon| the current buffer. + Also see |++opt| and |+cmd|. {Vi: no ++opt} + +:rew[ind]! [++opt] [+cmd] + Start editing the first file in the argument list. + Discard any changes to the buffer. Also see |++opt| + and |+cmd|. {Vi: no ++opt} + + *:fir* *:first* +:fir[st][!] [++opt] [+cmd] + Other name for ":rewind". {not in Vi} + + *:la* *:last* +:la[st] [++opt] [+cmd] + Start editing the last file in the argument list. + This fails when changes have been made and Vim does + not want to |abandon| the current buffer. + Also see |++opt| and |+cmd|. {not in Vi} + +:la[st]! [++opt] [+cmd] + Start editing the last file in the argument list. + Discard any changes to the buffer. Also see |++opt| + and |+cmd|. {not in Vi} + + *:wn* *:wnext* +:[count]wn[ext] [++opt] [+cmd] + Write current file and start editing the [count] + next file. Also see |++opt| and |+cmd|. {not in Vi} + +:[count]wn[ext] [++opt] [+cmd] {file} + Write current file to {file} and start editing the + [count] next file, unless {file} already exists and + the 'writeany' option is off. Also see |++opt| and + |+cmd|. {not in Vi} + +:[count]wn[ext]! [++opt] [+cmd] {file} + Write current file to {file} and start editing the + [count] next file. Also see |++opt| and |+cmd|. {not + in Vi} + +:[count]wN[ext][!] [++opt] [+cmd] [file] *:wN* *:wNext* +:[count]wp[revous][!] [++opt] [+cmd] [file] *:wp* *:wprevious* + Same as :wnext, but go to previous file instead of + next. {not in Vi} + +The [count] in the commands above defaults to one. For some commands it is +possible to use two counts. The last one (rightmost one) is used. + +If no [+cmd] argument is present, the cursor is positioned at the last known +cursor position for the file. If 'startofline' is set, the cursor will be +positioned at the first non-blank in the line, otherwise the last know column +is used. If there is no last known cursor position the cursor will be in the +first line (the last line in Ex mode). + +The wildcards in the argument list are expanded and the file names are sorted. +Thus you can use the command "vim *.c" to edit all the C files. From within +Vim the command ":n *.c" does the same. On Unix you can also use backticks, +for example: > + :n `find . -name \\*.c -print` +The backslashes before the star are required to prevent "*.c" to be expanded +by the shell before executing the find program. + + *arglist-position* +When there is an argument list you can see which file you are editing in the +title of the window (if there is one and 'title' is on) and with the file +message you get with the "CTRL-G" command. You will see something like + (file 4 of 11) +If 'shortmess' contains 'f' it will be + (4 of 11) +If you are not really editing the file at the current position in the argument +list it will be + (file (4) of 11) +This means that you are position 4 in the argument list, but not editing the +fourth file in the argument list. This happens when you do ":e file". + + +LOCAL ARGUMENT LIST + +{not in Vi} +{not available when compiled without the |+windows| or |+listcmds| feature} + + *:arglocal* +:argl[ocal] Make a local copy of the global argument list. + Doesn't start editing another file. + +:argl[ocal][!] [++opt] [+cmd] {arglist} + Define a new argument list, which is local to the + current window. Works like |:args_f| otherwise. + + *:argglobal* +:argg[lobal] Use the global argument list for the current window. + Doesn't start editing another file. + +:argg[lobal][!] [++opt] [+cmd] {arglist} + Use the global argument list for the current window. + Define a new global argument list like |:args_f|. + All windows using the global argument list will see + this new list. + +There can be several argument lists. They can be shared between windows. +When they are shared, changing the argument list in one window will also +change it in the other window. + +When a window is split the new window inherits the argument list from the +current window. The two windows then share this list, until one of them uses +|:arglocal| or |:argglobal| to use another argument list. + + +USING THE ARGUMENT LIST + + *:argdo* +:argdo[!] {cmd} Execute {cmd} for each file in the argument list. + It works like doing this: > + :rewind + :{cmd} + :next + :{cmd} + etc. +< When the current file can't be |abandon|ed and the [!] + is not present, the command fails. + When an error is detected on one file, further files + in the argument list will not be visited. + The last file in the argument list (or where an error + occurred) becomes the current file. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not change the argument list. + Note: While this command is executing, the Syntax + autocommand event is disabled by adding it to + 'eventignore'. This considerably speeds up editing + each file. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + Also see |:windo| and |:bufdo|. + +Example: > + :args *.c + :argdo set ff=unix | update +This sets the 'fileformat' option to "unix" and writes the file if is now +changed. This is done for all *.c files. + +Example: > + :args *.[ch] + :argdo %s/\/My_Foo/ge | update +This changes the word "my_foo" to "My_Foo" in all *.c and *.h files. The "e" +flag is used for the ":substitute" command to avoid an error for files where +"my_foo" isn't used. ":update" writes the file only if changes were made. + +============================================================================== +6. Writing *writing* *save-file* + +Note: When the 'write' option is off, you are not able to write any file. + + *:w* *:write* + *E502* *E503* *E504* *E505* + *E512* *E514* *E667* +:w[rite] Write the whole buffer to the current file. This is + the normal way to save changes to a file. It fails + when the 'readonly' option is set or when there is + another reason why the file can't be written. + +:w[rite]! Like ":write", but forcefully write when 'readonly' is + set or there is another reason why writing was + refused. + Note: This may change the permission and ownership of + the file and break (symbolic) links. Add the 'W' flag + to 'cpoptions' to avoid this. + +:[range]w[rite][!] Write the specified lines to the current file. This + is unusual, because the file will not contain all + lines in the buffer. + + *:w_f* *:write_f* +:[range]w[rite] {file} Write the specified lines to {file}, unless it + already exists and the 'writeany' option is off. + + *:w!* +:[range]w[rite]! {file} Write the specified lines to {file}. Overwrite an + existing file. + + *:w_a* *:write_a* *E494* +:[range]w[rite][!] >> Append the specified lines to the current file. + +:[range]w[rite][!] >> {file} + Append the specified lines to {file}. '!' forces the + write even if file does not exist. + + *:w_c* *:write_c* +:[range]w[rite] !{cmd} Execute {cmd} with [range] lines as standard input + (note the space in front of the '!'). {cmd} is + executed like with ":!{cmd}", any '!' is replaced with + the previous command |:!|. + +The default [range] for the ":w" command is the whole buffer (1,$). +If a file name is given with ":w" it becomes the alternate file. This can be +used, for example, when the write fails and you want to try again later with +":w #". This can be switched off by removing the 'A' flag from the +'cpoptions' option. + + *:sav* *:saveas* +:sav[eas][!] {file} Save the current buffer under the name {file} and set + the filename of the current buffer to {file}. The + previous name is used for the alternate file name. + The [!] is needed to overwrite an existing file. + {not in Vi} + + *:up* *:update* +:[range]up[date][!] [>>] [file] + Like ":write", but only write when the buffer has been + modified. {not in Vi} + + +WRITING WITH MULTIPLE BUFFERS *buffer-write* + + *:wa* *:wall* +:wa[ll] Write all changed buffers. Buffers without a file + name or which are readonly are not written. {not in + Vi} + +:wa[ll]! Write all changed buffers, even the ones that are + readonly. Buffers without a file name are not + written. {not in Vi} + + +Vim will warn you if you try to overwrite a file that has been changed +elsewhere. See |timestamp|. + + *backup* *E207* *E506* *E507* *E508* *E509* *E510* +If you write to an existing file (but do not append) while the 'backup', +'writebackup' or 'patchmode' option is on, a backup of the original file is +made. The file is either copied or renamed (see 'backupcopy'). After the +file has been successfully written and when the 'writebackup' option is on and +the 'backup' option is off, the backup file is deleted. When the 'patchmode' +option is on the backup file may be renamed. + + *backup-table* +'backup' 'writebackup' action ~ + off off no backup made + off on backup current file, deleted afterwards (default) + on off delete old backup, backup current file + on on delete old backup, backup current file + +When the 'backupskip' pattern matches with the name of the file which is +written, no backup file is made. The values of 'backup' and 'writebackup' are +ignored then. + +When the 'backup' option is on, an old backup file (with the same name as the +new backup file) will be deleted. If 'backup' is not set, but 'writebackup' +is set, an existing backup file will not be deleted. The backup file that is +made while the file is being written will have a different name. + +On some filesystems it's possible that in a crash you lose both the backup and +the newly written file (it might be there but contain bogus data). In that +case try recovery, because the swap file is synced to disk and might still be +there. |:recover| + +The directories given with the 'backupdir' option is used to put the backup +file in. (default: same directory as the written file). + +Whether the backup is a new file, which is a copy of the original file, or the +original file renamed depends on the 'backupcopy' option. See there for an +explanation of when the copy is made and when the file is renamed. + +If the creation of a backup file fails, the write is not done. If you want +to write anyway add a '!' to the command. + + *write-readonly* +When the 'cpoptions' option contains 'W', Vim will refuse to overwrite a +readonly file. When 'W' is not present, ":w!" will overwrite a readonly file, +if the system allows it (the directory must be writable). + + *write-fail* +If the writing of the new file fails, you have to be careful not to lose +your changes AND the original file. If there is no backup file and writing +the new file failed, you have already lost the original file! DON'T EXIT VIM +UNTIL YOU WRITE OUT THE FILE! If a backup was made, it is put back in place +of the original file (if possible). If you exit Vim, and lose the changes +you made, the original file will mostly still be there. If putting back the +original file fails, there will be an error message telling you that you +lost the original file. + + *DOS-format-write* +If the 'fileformat' is "dos", is used for . This is default +for MS-DOS, Win32 and OS/2. On other systems the message "[dos format]" is +shown to remind you that an unusual was used. + *Unix-format-write* +If the 'fileformat' is "unix", is used for . On MS-DOS, Win32 and +OS/2 the message "[unix format]" is shown. + *Mac-format-write* +If the 'fileformat' is "mac", is used for . On non-Mac systems the +message "[mac format]" is shown. + +See also |file-formats| and the 'fileformat' and 'fileformats' options. + + *ACL* +ACL stands for Access Control List. It is an advanced way to control access +rights for a file. It is used on new MS-Windows and Unix systems, but only +when the filesystem supports it. + Vim attempts to preserve the ACL info when writing a file. The backup file +will get the ACL info of the original file. + The ACL info is also used to check if a file is read-only (when opening the +file). + + *read-only-share* +When MS-Windows shares a drive on the network it can be marked as read-only. +This means that even if the file read-only attribute is absent, and the ACL +settings on NT network shared drives allow writing to the file, you can still +not write to the file. Vim on Win32 platforms will detect read-only network +drives and will mark the file as read-only. You will not be able to override +it with |:write|. + + *write-device* +When the file name is actually a device name, Vim will not make a backup (that +would be impossible). You need to use "!", since the device already exists. +Example for Unix: > + :w! /dev/lpt0 +and for MS-DOS or MS-Windows: > + :w! lpt0 +For Unix a device is detected when the name doesn't refer to a normal file or +a directory. A fifo or named pipe also looks like a device to Vim. +For MS-DOS and MS-Windows the device is detected by its name: + AUX + CON + CLOCK$ + NUL + PRN + COMn n=1,2,3... etc + LPTn n=1,2,3... etc +The names can be in upper- or lowercase. + +============================================================================== +7. Writing and quitting *write-quit* + + *:q* *:quit* +:q[uit] Quit the current window. Quit Vim if this is the last + window. This fails when changes have been made and + Vim refuses to |abandon| the current buffer, and when + the last file in the argument list has not been + edited. + +:conf[irm] q[uit] Quit, but give prompt when changes have been made, or + the last file in the argument list has not been + edited. See |:confirm| and 'confirm'. {not in Vi} + +:q[uit]! Quit without writing, also when visible buffers have + changes. Does not exit when there are changed hidden + buffers. Use ":qall!" to exit always. + +:cq[uit] Quit always, without writing, and return an error + code. See |:cq|. Used for Manx's QuickFix mode (see + |quickfix|). {not in Vi} + + *:wq* +:wq Write the current file and quit. Writing fails when + the file is read-only or the buffer does not have a + name. Quitting fails when the last file in the + argument list has not been edited. + +:wq! Write the current file and quit. Writing fails when + the current buffer does not have a name. + +:wq {file} Write to {file} and quit. Quitting fails when the + last file in the argument list has not been edited. + +:wq! {file} Write to {file} and quit. + +:[range]wq[!] [file] Same as above, but only write the lines in [range]. + + *:x* *:xit* +:[range]x[it][!] [file] + Like ":wq", but write only when changes have been + made. + When 'hidden' is set and there are more windows, the + current buffer becomes hidden, after writing the file. + + *:exi* *:exit* +:[range]exi[t][!] [file] + Same as :xit. + + *ZZ* +ZZ Write current file, if modified, and quit (same as + ":x"). (Note: If there are several windows for the + current file, the file is written if it was modified + and the window is closed). + + *ZQ* +ZQ Quit without checking for changes (same as ":q!"). + {not in Vi} + +MULTIPLE WINDOWS AND BUFFERS *window-exit* + + *:qa* *:qall* +:qa[ll] Exit Vim, unless there are some buffers which have been + changed. (Use ":bmod" to go to the next modified buffer). + When 'autowriteall' is set all changed buffers will be + written, like |:wqall|. {not in Vi} + +:conf[irm] qa[ll] + Exit Vim. Bring up a prompt when some buffers have been + changed. See |:confirm|. {not in Vi} + +:qa[ll]! Exit Vim. Any changes to buffers are lost. {not in Vi} + + *:quita* *:quitall* +:quita[ll][!] Same as ":qall". {not in Vi} + +:wqa[ll] *:wqa* *:wqall* *:xa* *:xall* +:xa[ll] Write all changed buffers and exit Vim. If there are buffers + without a file name, which are readonly or which cannot be + written for another reason, Vim will not quit. {not in Vi} + +:conf[irm] wqa[ll] +:conf[irm] xa[ll] + Write all changed buffers and exit Vim. Bring up a prompt + when some buffers are readonly or cannot be written for + another reason. See |:confirm|. {not in Vi} + +:wqa[ll]! +:xa[ll]! Write all changed buffers, even the ones that are readonly, + and exit Vim. If there are buffers without a file name or + which cannot be written for another reason, Vim will not quit. + {not in Vi} + +============================================================================== +8. Editing binary files *edit-binary* + +Although Vim was made to edit text files, it is possible to edit binary +files. The |-b| Vim argument (b for binary) makes Vim do file I/O in binary +mode, and sets some options for editing binary files ('binary' on, 'textwidth' +to 0, 'modeline' off, 'expandtab' off). Setting the 'binary' option has the +same effect. Don't forget to do this before reading the file. + +There are a few things to remember when editing binary files: +- When editing executable files the number of characters must not change. + Use only the "R" or "r" command to change text. Do not delete characters + with "x" or by backspacing. +- Set the 'textwidth' option to 0. Otherwise lines will unexpectedly be + split in two. +- When there are not many s, the lines will become very long. If you + want to edit a line that does not fit on the screen reset the 'wrap' option. + Horizontal scrolling is used then. If a line becomes too long (more than + about 32767 characters on the Amiga, much more on 32-bit systems, see + |limits|) you cannot edit that line. The line will be split when reading + the file. It is also possible that you get an "out of memory" error when + reading the file. +- Make sure the 'binary' option is set BEFORE loading the + file. Otherwise both and are considered to end a line + and when the file is written the will be replaced with . +- characters are shown on the screen as ^@. You can enter them with + "CTRL-V CTRL-@" or "CTRL-V 000" {Vi cannot handle characters in the + file} +- To insert a character in the file split up a line. When writing the + buffer to a file a will be written for the . +- Vim normally appends an at the end of the file if there is none. + Setting the 'binary' option prevents this. If you want to add the final + , set the 'endofline' option. You can also read the value of this + option to see if there was an for the last line (you cannot see this + in the text). + +============================================================================== +9. Encryption *encryption* + +Vim is able to write files encrypted, and read them back. The encrypted text +cannot be read without the right key. + +Note: The swapfile and text in memory is not encrypted. A system +administrator will be able to see your text while you are editing it. +When filtering text with ":!filter" or using ":w !command" the text is not +encrypted, this may reveal it to others. + +WARNING: If you make a typo when entering the key and then write the file and +exit, the text will be lost! + +The normal way to work with encryption, is to use the ":X" command, which will +ask you to enter a key. A following write command will use that key to +encrypt the file. If you later edit the same file, Vim will ask you to enter +a key. If you type the same key as that was used for writing, the text will +be readable again. If you use a wrong key, it will be a mess. + + *:X* +:X Prompt for an encryption key. The typing is done without showing the + actual text, so that someone looking at the display won't see it. + The typed key is stored in the 'key' option, which is used to encrypt + the file when it is written. The file will remain unchanged until you + write it. See also |-x|. + +The value of the 'key' options is used when text is written. When the option +is not empty, the written file will be encrypted, using the value as the +encryption key. A magic number is prepended, so that Vim can recognize that +the file is encrypted. + +To disable the encryption, reset the 'key' option to an empty value: > + :set key= + +When reading a file that has been encrypted and this option is not empty, it +will be used for decryption. If the value is empty, you will be prompted to +enter the key. If you don't enter a key, the file is edited without being +decrypted. + +If want to start reading a file that uses a different key, set the 'key' +option to an empty string, so that Vim will prompt for a new one. Don't use +the ":set" command to enter the value, other people can read the command over +your shoulder. + +Since the value of the 'key' option is supposed to be a secret, its value can +never be viewed. You should not set this option in a vimrc file. + +An encrypted file can be recognized by the "file" command, if you add this +line to "/etc/magic", "/usr/share/misc/magic" or wherever your system has the +"magic" file: > + 0 string VimCrypt~ Vim encrypted file + +Notes: +- Encryption is not possible when doing conversion with 'charconvert'. +- Text you copy or delete goes to the numbered registers. The registers can + be saved in the .viminfo file, where they could be read. Change your + 'viminfo' option to be safe. +- Someone can type commands in Vim when you walk away for a moment, he should + not be able to get the key. +- If you make a typing mistake when entering the key, you might not be able to + get your text back! +- If you type the key with a ":set key=value" command, it can be kept in the + history, showing the 'key' value in a viminfo file. +- There is never 100% safety. The encryption in Vim has not been tested for + robustness. +- The algorithm used is breakable. A 4 character key in about one hour, a 6 + character key in one day (on a Pentium 133 PC). This requires that you know + some text that must appear in the file. An expert can break it for any key. + When the text has been decrypted, this also means that the key can be + revealed, and other files encrypted with the same key can be decrypted. +- Pkzip uses the same encryption, and US Govt has no objection to its export. + Pkzip's public file APPNOTE.TXT describes this algorithm in detail. +- Vim originates from the Netherlands. That is where the sources come from. + Thus the encryption code is not exported from the USA. + +============================================================================== +10. Timestamps *timestamp* *timestamps* + +Vim remembers the modification timestamp of a file when you begin editing it. +This is used to avoid that you have two different versions of the same file +(without you knowing this). + +After a shell command is run (|:!cmd| |suspend| |:read!| |K|) timestamps are +compared for all buffers in a window. Vim will run any associated +|FileChangedShell| autocommands or display a warning for any files that have +changed. In the GUI this happens when Vim regains input focus. + + *E321* *E462* +If you want to automatically reload a file when it has been changed outside of +Vim, set the 'autoread' option. This doesn't work at the moment you write the +file though, only when the file wasn't changed inside of Vim. + +Note that if a FileChangedShell autocommand is defined you will not get a +warning message or prompt. The autocommand is expected to handle this. + +There is no warning for a directory (e.g., in the |file-explorer|). But you +do get warned if you started editing a new file and it was created as a +directory later. + +When Vim notices the timestamp of a file has changed, and the file is being +edited in a buffer but has not changed, Vim checks if the contents of the file +is equal. This is done by reading the file again (into a hidden buffer, which +is immediately deleted again) and comparing the text. If the text is equal, +you will get no warning. + +If you don't get warned often enough you can use the following command. + + *:checkt* *:checktime* +:checkt[ime] Check if any buffers were changed outside of Vim. + This checks and warns you if you would end up with two + versions of a file. + If this is called from an autocommand, a ":global" + command or is not typed the actual check is postponed + until a moment the side effects (reloading the file) + would be harmless. + Each loaded buffer is checked for its associated file + being changed. If the file was changed Vim will take + action. If there are no changes in the buffer and + 'autoread' is set, the buffer is reloaded. Otherwise, + you are offered the choice of reloading the file. If + the file was deleted you get an error message. + If the file previously didn't exist you get a warning + if it exists now. + Once a file has been checked the timestamp is reset, + you will not be warned again. + +:[N]checkt[ime] {filename} +:[N]checkt[ime] [N] + Check the timestamp of a specific buffer. The buffer + may be specified by name, number or with a pattern. + + +Before writing a file the timestamp is checked. If it has changed, Vim will +ask if you really want to overwrite the file: + + WARNING: The file has been changed since reading it!!! + Do you really want to write to it (y/n)? + +If you hit 'y' Vim will continue writing the file. If you hit 'n' the write is +aborted. If you used ":wq" or "ZZ" Vim will not exit, you will get another +chance to write the file. + +The message would normally mean that somebody has written to the file after +the edit session started. This could be another person, in which case you +probably want to check if your changes to the file and the changes from the +other person should be merged. Write the file under another name and check for +differences (the "diff" program can be used for this). + +It is also possible that you modified the file yourself, from another edit +session or with another command (e.g., a filter command). Then you will know +which version of the file you want to keep. + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/eval.txt b/en/eval.txt new file mode 100644 index 000000000..ff8aede4e --- /dev/null +++ b/en/eval.txt @@ -0,0 +1,4583 @@ +*eval.txt* For Vim version 6.3. Last change: 2004 May 18 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Expression evaluation *expression* *expr* *E15* *eval* + +Using expressions is introduced in chapter 41 of the user manual |usr_41.txt|. + +Note: Expression evaluation can be disabled at compile time. If this has been +done, the features in this document are not available. See |+eval| and the +last chapter below. + +1. Variables |variables| +2. Expression syntax |expression-syntax| +3. Internal variable |internal-variables| +4. Builtin Functions |functions| +5. Defining functions |user-functions| +6. Curly braces names |curly-braces-names| +7. Commands |expression-commands| +8. Exception handling |exception-handling| +9. Examples |eval-examples| +10. No +eval feature |no-eval-feature| +11. The sandbox |eval-sandbox| + +{Vi does not have any of these commands} + +============================================================================== +1. Variables *variables* + +There are two types of variables: + +Number a 32 bit signed number. +String a NUL terminated string of 8-bit unsigned characters. + +These are converted automatically, depending on how they are used. + +Conversion from a Number to a String is by making the ASCII representation of +the Number. Examples: > + Number 123 --> String "123" + Number 0 --> String "0" + Number -1 --> String "-1" + +Conversion from a String to a Number is done by converting the first digits +to a number. Hexadecimal "0xf9" and Octal "017" numbers are recognized. If +the String doesn't start with digits, the result is zero. Examples: > + String "456" --> Number 456 + String "6bar" --> Number 6 + String "foo" --> Number 0 + String "0xf1" --> Number 241 + String "0100" --> Number 64 + String "-8" --> Number -8 + String "+8" --> Number 0 + +To force conversion from String to Number, add zero to it: > + :echo "0100" + 0 + +For boolean operators Numbers are used. Zero is FALSE, non-zero is TRUE. + +Note that in the command > + :if "foo" +"foo" is converted to 0, which means FALSE. To test for a non-empty string, +use strlen(): > + :if strlen("foo") + +If you need to know the type of a variable or expression, use the |type()| +function. + +When the '!' flag is included in the 'viminfo' option, global variables that +start with an uppercase letter, and don't contain a lowercase letter, are +stored in the viminfo file |viminfo-file|. + +When the 'sessionoptions' option contains "global", global variables that +start with an uppercase letter and contain at least one lowercase letter are +stored in the session file |session-file|. + +variable name can be stored where ~ +my_var_6 not +My_Var_6 session file +MY_VAR_6 viminfo file + + +It's possible to form a variable name with curly braces, see +|curly-braces-names|. + +============================================================================== +2. Expression syntax *expression-syntax* + +Expression syntax summary, from least to most significant: + +|expr1| expr2 ? expr1 : expr1 if-then-else + +|expr2| expr3 || expr3 .. logical OR + +|expr3| expr4 && expr4 .. logical AND + +|expr4| expr5 == expr5 equal + expr5 != expr5 not equal + expr5 > expr5 greater than + expr5 >= expr5 greater than or equal + expr5 < expr5 smaller than + expr5 <= expr5 smaller than or equal + expr5 =~ expr5 regexp matches + expr5 !~ expr5 regexp doesn't match + + expr5 ==? expr5 equal, ignoring case + expr5 ==# expr5 equal, match case + etc. As above, append ? for ignoring case, # for + matching case + +|expr5| expr6 + expr6 .. number addition + expr6 - expr6 .. number subtraction + expr6 . expr6 .. string concatenation + +|expr6| expr7 * expr7 .. number multiplication + expr7 / expr7 .. number division + expr7 % expr7 .. number modulo + +|expr7| ! expr7 logical NOT + - expr7 unary minus + + expr7 unary plus + expr8 + +|expr8| expr9[expr1] index in String + +|expr9| number number constant + "string" string constant + 'string' literal string constant + &option option value + (expr1) nested expression + variable internal variable + va{ria}ble internal variable with curly braces + $VAR environment variable + @r contents of register 'r' + function(expr1, ...) function call + func{ti}on(expr1, ...) function call with curly braces + + +".." indicates that the operations in this level can be concatenated. +Example: > + &nu || &list && &shell == "csh" + +All expressions within one level are parsed from left to right. + + +expr1 *expr1* *E109* +----- + +expr2 ? expr1 : expr1 + +The expression before the '?' is evaluated to a number. If it evaluates to +non-zero, the result is the value of the expression between the '?' and ':', +otherwise the result is the value of the expression after the ':'. +Example: > + :echo lnum == 1 ? "top" : lnum + +Since the first expression is an "expr2", it cannot contain another ?:. The +other two expressions can, thus allow for recursive use of ?:. +Example: > + :echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum + +To keep this readable, using |line-continuation| is suggested: > + :echo lnum == 1 + :\ ? "top" + :\ : lnum == 1000 + :\ ? "last" + :\ : lnum + + +expr2 and expr3 *expr2* *expr3* +--------------- + + *expr-barbar* *expr-&&* +The "||" and "&&" operators take one argument on each side. The arguments +are (converted to) Numbers. The result is: + + input output ~ +n1 n2 n1 || n2 n1 && n2 ~ +zero zero zero zero +zero non-zero non-zero zero +non-zero zero non-zero zero +non-zero non-zero non-zero non-zero + +The operators can be concatenated, for example: > + + &nu || &list && &shell == "csh" + +Note that "&&" takes precedence over "||", so this has the meaning of: > + + &nu || (&list && &shell == "csh") + +Once the result is known, the expression "short-circuits", that is, further +arguments are not evaluated. This is like what happens in C. For example: > + + let a = 1 + echo a || b + +This is valid even if there is no variable called "b" because "a" is non-zero, +so the result must be non-zero. Similarly below: > + + echo exists("b") && b == "yes" + +This is valid whether "b" has been defined or not. The second clause will +only be evaluated if "b" has been defined. + + +expr4 *expr4* +----- + +expr5 {cmp} expr5 + +Compare two expr5 expressions, resulting in a 0 if it evaluates to false, or 1 +if it evaluates to true. + + *expr-==* *expr-!=* *expr->* *expr->=* + *expr-<* *expr-<=* *expr-=~* *expr-!~* + *expr-==#* *expr-!=#* *expr->#* *expr->=#* + *expr-<#* *expr-<=#* *expr-=~#* *expr-!~#* + *expr-==?* *expr-!=?* *expr->?* *expr->=?* + *expr- ># >? +greater than or equal >= >=# >=? +smaller than < <# + :let c = getline(line("."))[col(".") - 1] + +If the length of the String is less than the index, the result is an empty +String. + + *expr9* +number +------ +number number constant *expr-number* + +Decimal, Hexadecimal (starting with 0x or 0X), or Octal (starting with 0). + + +string *expr-string* *E114* +------ +"string" string constant *expr-quote* + +Note that double quotes are used. + +A string constant accepts these special characters: +\... three-digit octal number (e.g., "\316") +\.. two-digit octal number (must be followed by non-digit) +\. one-digit octal number (must be followed by non-digit) +\x.. byte specified with two hex numbers (e.g., "\x1f") +\x. byte specified with one hex number (must be followed by non-hex char) +\X.. same as \x.. +\X. same as \x. +\u.... character specified with up to 4 hex numbers, stored according to the + current value of 'encoding' (e.g., "\u02a4") +\U.... same as \u.... +\b backspace +\e escape +\f formfeed +\n newline +\r return +\t tab +\\ backslash +\" double quote +\ Special key named "xxx". e.g. "\" for CTRL-W. + +Note that "\000" and "\x00" force the end of the string. + + +literal-string *literal-string* *E115* +--------------- +'string' literal string constant *expr-'* + +Note that single quotes are used. + +This string is taken literally. No backslashes are removed or have a special +meaning. A literal-string cannot contain a single quote. Use a normal string +for that. + + +option *expr-option* *E112* *E113* +------ +&option option value, local value if possible +&g:option global option value +&l:option local option value + +Examples: > + echo "tabstop is " . &tabstop + if &insertmode + +Any option name can be used here. See |options|. When using the local value +and there is no buffer-local or window-local value, the global value is used +anyway. + + +register *expr-register* +-------- +@r contents of register 'r' + +The result is the contents of the named register, as a single string. +Newlines are inserted where required. To get the contents of the unnamed +register use @" or @@. The '=' register can not be used here. See +|registers| for an explanation of the available registers. + + +nesting *expr-nesting* *E110* +------- +(expr1) nested expression + + +environment variable *expr-env* +-------------------- +$VAR environment variable + +The String value of any environment variable. When it is not defined, the +result is an empty string. + *expr-env-expand* +Note that there is a difference between using $VAR directly and using +expand("$VAR"). Using it directly will only expand environment variables that +are known inside the current Vim session. Using expand() will first try using +the environment variables known inside the current Vim session. If that +fails, a shell will be used to expand the variable. This can be slow, but it +does expand all variables that the shell knows about. Example: > + :echo $version + :echo expand("$version") +The first one probably doesn't echo anything, the second echoes the $version +variable (if your shell supports it). + + +internal variable *expr-variable* +----------------- +variable internal variable +See below |internal-variables|. + + +function call *expr-function* *E116* *E117* *E118* *E119* *E120* +------------- +function(expr1, ...) function call +See below |functions|. + + +============================================================================== +3. Internal variable *internal-variables* *E121* + *E461* +An internal variable name can be made up of letters, digits and '_'. But it +cannot start with a digit. It's also possible to use curly braces, see +|curly-braces-names|. + +An internal variable is created with the ":let" command |:let|. +An internal variable is destroyed with the ":unlet" command |:unlet|. +Using a name that isn't an internal variable, or an internal variable that has +been destroyed, results in an error. + +There are several name spaces for variables. Which one is to be used is +specified by what is prepended: + + (nothing) In a function: local to a function; otherwise: global +|buffer-variable| b: Local to the current buffer. +|window-variable| w: Local to the current window. +|global-variable| g: Global. +|local-variable| l: Local to a function. +|script-variable| s: Local to a |:source|'ed Vim script. +|function-argument| a: Function argument (only inside a function). +|vim-variable| v: Global, predefined by Vim. + + *buffer-variable* *b:var* +A variable name that is preceded with "b:" is local to the current buffer. +Thus you can have several "b:foo" variables, one for each buffer. +This kind of variable is deleted when the buffer is wiped out or deleted with +|:bdelete|. + +One local buffer variable is predefined: + *b:changedtick-variable* *changetick* +b:changedtick The total number of changes to the current buffer. It is + incremented for each change. An undo command is also a change + in this case. This can be used to perform an action only when + the buffer has changed. Example: > + :if my_changedtick != b:changedtick + : let my_changedtick = b:changedtick + : call My_Update() + :endif +< + *window-variable* *w:var* +A variable name that is preceded with "w:" is local to the current window. It +is deleted when the window is closed. + + *global-variable* *g:var* +Inside functions global variables are accessed with "g:". Omitting this will +access a variable local to a function. But "g:" can also be used in any other +place if you like. + + *local-variable* *l:var* +Inside functions local variables are accessed without prepending anything. +But you can also prepend "l:" if you like. + + *script-variable* *s:var* +In a Vim script variables starting with "s:" can be used. They cannot be +accessed from outside of the scripts, thus are local to the script. + +They can be used in: +- commands executed while the script is sourced +- functions defined in the script +- autocommands defined in the script +- functions and autocommands defined in functions and autocommands which were + defined in the script (recursively) +- user defined commands defined in the script +Thus not in: +- other scripts sourced from this one +- mappings +- etc. + +script variables can be used to avoid conflicts with global variable names. +Take this example: + + let s:counter = 0 + function MyCounter() + let s:counter = s:counter + 1 + echo s:counter + endfunction + command Tick call MyCounter() + +You can now invoke "Tick" from any script, and the "s:counter" variable in +that script will not be changed, only the "s:counter" in the script where +"Tick" was defined is used. + +Another example that does the same: > + + let s:counter = 0 + command Tick let s:counter = s:counter + 1 | echo s:counter + +When calling a function and invoking a user-defined command, the context for +script varialbes is set to the script where the function or command was +defined. + +The script variables are also available when a function is defined inside a +function that is defined in a script. Example: > + + let s:counter = 0 + function StartCounting(incr) + if a:incr + function MyCounter() + let s:counter = s:counter + 1 + endfunction + else + function MyCounter() + let s:counter = s:counter - 1 + endfunction + endif + endfunction + +This defines the MyCounter() function either for counting up or counting down +when calling StartCounting(). It doesn't matter from where StartCounting() is +called, the s:counter variable will be accessible in MyCounter(). + +When the same script is sourced again it will use the same script variables. +They will remain valid as long as Vim is running. This can be used to +maintain a counter: > + + if !exists("s:counter") + let s:counter = 1 + echo "script executed for the first time" + else + let s:counter = s:counter + 1 + echo "script executed " . s:counter . " times now" + endif + +Note that this means that filetype plugins don't get a different set of script +variables for each buffer. Use local buffer variables instead |b:var|. + + +Predefined Vim variables: *vim-variable* *v:var* + + *v:charconvert_from* *charconvert_from-variable* +v:charconvert_from + The name of the character encoding of a file to be converted. + Only valid while evaluating the 'charconvert' option. + + *v:charconvert_to* *charconvert_to-variable* +v:charconvert_to + The name of the character encoding of a file after conversion. + Only valid while evaluating the 'charconvert' option. + + *v:cmdarg* *cmdarg-variable* +v:cmdarg This variable is used for two purposes: + 1. The extra arguments given to a file read/write command. + Currently these are "++enc=" and "++ff=". This variable is + set before an autocommand event for a file read/write + command is triggered. There is a leading space to make it + possible to append this variable directly after the + read/write command. Note: The "+cmd" argument isn't + included here, because it will be executed anyway. + 2. When printing a PostScript file with ":hardcopy" this is + the argument for the ":hardcopy" command. This can be used + in 'printexpr'. + + *v:cmdbang* *cmdbang-variable* +v:cmdbang Set like v:cmdarg for a file read/write command. When a "!" + was used the value is 1, otherwise it is 0. Note that this + can only be used in autocommands. For user commands || + can be used. + + *v:count* *count-variable* +v:count The count given for the last Normal mode command. Can be used + to get the count before a mapping. Read-only. Example: > + :map _x :echo "the count is " . v:count +< Note: The is required to remove the line range that you + get when typing ':' after a count. + "count" also works, for backwards compatibility. + + *v:count1* *count1-variable* +v:count1 Just like "v:count", but defaults to one when no count is + used. + + *v:ctype* *ctype-variable* +v:ctype The current locale setting for characters of the runtime + environment. This allows Vim scripts to be aware of the + current locale encoding. Technical: it's the value of + LC_CTYPE. When not using a locale the value is "C". + This variable can not be set directly, use the |:language| + command. + See |multi-lang|. + + *v:dying* *dying-variable* +v:dying Normally zero. When a deadly signal is caught it's set to + one. When multiple signals are caught the number increases. + Can be used in an autocommand to check if Vim didn't + terminate normally. {only works on Unix} + Example: > + :au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif +< + *v:errmsg* *errmsg-variable* +v:errmsg Last given error message. It's allowed to set this variable. + Example: > + :let v:errmsg = "" + :silent! next + :if v:errmsg != "" + : ... handle error +< "errmsg" also works, for backwards compatibility. + + *v:exception* *exception-variable* +v:exception The value of the exception most recently caught and not + finished. See also |v:throwpoint| and |throw-variables|. + Example: > + :try + : throw "oops" + :catch /.*/ + : echo "caught" v:exception + :endtry +< Output: "caught oops". + + *v:fname_in* *fname_in-variable* +v:fname_in The name of the input file. Only valid while evaluating: + option used for ~ + 'charconvert' file to be converted + 'diffexpr' original file + 'patchexpr' original file + 'printexpr' file to be printed + + *v:fname_out* *fname_out-variable* +v:fname_out The name of the output file. Only valid while + evaluating: + option used for ~ + 'charconvert' resulting converted file (*) + 'diffexpr' output of diff + 'patchexpr' resulting patched file + (*) When doing conversion for a write command (e.g., ":w + file") it will be equal to v:fname_in. When doing conversion + for a read command (e.g., ":e file") it will be a temporary + file and different from v:fname_in. + + *v:fname_new* *fname_new-variable* +v:fname_new The name of the new version of the file. Only valid while + evaluating 'diffexpr'. + + *v:fname_diff* *fname_diff-variable* +v:fname_diff The name of the diff (patch) file. Only valid while + evaluating 'patchexpr'. + + *v:folddashes* *folddashes-variable* +v:folddashes Used for 'foldtext': dashes representing foldlevel of a closed + fold. + Read-only. |fold-foldtext| + + *v:foldlevel* *foldlevel-variable* +v:foldlevel Used for 'foldtext': foldlevel of closed fold. + Read-only. |fold-foldtext| + + *v:foldend* *foldend-variable* +v:foldend Used for 'foldtext': last line of closed fold. + Read-only. |fold-foldtext| + + *v:foldstart* *foldstart-variable* +v:foldstart Used for 'foldtext': first line of closed fold. + Read-only. |fold-foldtext| + + *v:lang* *lang-variable* +v:lang The current locale setting for messages of the runtime + environment. This allows Vim scripts to be aware of the + current language. Technical: it's the value of LC_MESSAGES. + The value is system dependent. + This variable can not be set directly, use the |:language| + command. + It can be different from |v:ctype| when messages are desired + in a different language than what is used for character + encoding. See |multi-lang|. + + *v:lc_time* *lc_time-variable* +v:lc_time The current locale setting for time messages of the runtime + environment. This allows Vim scripts to be aware of the + current language. Technical: it's the value of LC_TIME. + This variable can not be set directly, use the |:language| + command. See |multi-lang|. + + *v:lnum* *lnum-variable* +v:lnum Line number for the 'foldexpr' and 'indentexpr' expressions. + Only valid while one of these expressions is being evaluated. + Read-only. |fold-expr| 'indentexpr' + + *v:prevcount* *prevcount-variable* +v:prevcount The count given for the last but one Normal mode command. + This is the v:count value of the previous command. Useful if + you want to cancel Visual mode and then use the count. > + :vmap % :call MyFilter(v:prevcount) +< Read-only. + + *v:progname* *progname-variable* +v:progname Contains the name (with path removed) with which Vim was + invoked. Allows you to do special initialisations for "view", + "evim" etc., or any other name you might symlink to Vim. + Read-only. + + *v:register* *register-variable* +v:register The name of the register supplied to the last normal mode + command. Empty if none were supplied. |getreg()| |setreg()| + + *v:servername* *servername-variable* +v:servername The resulting registered |x11-clientserver| name if any. + Read-only. + + *v:shell_error* *shell_error-variable* +v:shell_error Result of the last shell command. When non-zero, the last + shell command had an error. When zero, there was no problem. + This only works when the shell returns the error code to Vim. + The value -1 is often used when the command could not be + executed. Read-only. + Example: > + :!mv foo bar + :if v:shell_error + : echo 'could not rename "foo" to "bar"!' + :endif +< "shell_error" also works, for backwards compatibility. + + *v:statusmsg* *statusmsg-variable* +v:statusmsg Last given status message. It's allowed to set this variable. + + *v:termresponse* *termresponse-variable* +v:termresponse The escape sequence returned by the terminal for the |t_RV| + termcap entry. It is set when Vim receives an escape sequence + that starts with ESC [ or CSI and ends in a 'c', with only + digits, ';' and '.' in between. + When this option is set, the TermResponse autocommand event is + fired, so that you can react to the response from the + terminal. + The response from a new xterm is: "[ Pp ; Pv ; Pc c". Pp + is the terminal type: 0 for vt100 and 1 for vt220. Pv is the + patch level (since this was introduced in patch 95, it's + always 95 or bigger). Pc is always zero. + {only when compiled with |+termresponse| feature} + + *v:this_session* *this_session-variable* +v:this_session Full filename of the last loaded or saved session file. See + |:mksession|. It is allowed to set this variable. When no + session file has been saved, this variable is empty. + "this_session" also works, for backwards compatibility. + + *v:throwpoint* *throwpoint-variable* +v:throwpoint The point where the exception most recently caught and not + finished was thrown. Not set when commands are typed. See + also |v:exception| and |throw-variables|. + Example: > + :try + : throw "oops" + :catch /.*/ + : echo "Exception from" v:throwpoint + :endtry +< Output: "Exception from test.vim, line 2" + + *v:version* *version-variable* +v:version Version number of Vim: Major version number times 100 plus + minor version number. Version 5.0 is 500. Version 5.1 (5.01) + is 501. Read-only. "version" also works, for backwards + compatibility. + Use |has()| to check if a certain patch was included, e.g.: > + if has("patch123") +< Note that patch numbers are specific to the version, thus both + version 5.0 and 5.1 may have a patch 123, but these are + completely different. + + *v:warningmsg* *warningmsg-variable* +v:warningmsg Last given warning message. It's allowed to set this variable. + +============================================================================== +4. Builtin Functions *functions* + +See |function-list| for a list grouped by what the function is used for. + +(Use CTRL-] on the function name to jump to the full explanation) + +USAGE RESULT DESCRIPTION ~ + +append( {lnum}, {string}) Number append {string} below line {lnum} +argc() Number number of files in the argument list +argidx() Number current index in the argument list +argv( {nr}) String {nr} entry of the argument list +browse( {save}, {title}, {initdir}, {default}) + String put up a file requester +bufexists( {expr}) Number TRUE if buffer {expr} exists +buflisted( {expr}) Number TRUE if buffer {expr} is listed +bufloaded( {expr}) Number TRUE if buffer {expr} is loaded +bufname( {expr}) String Name of the buffer {expr} +bufnr( {expr}) Number Number of the buffer {expr} +bufwinnr( {expr}) Number window number of buffer {expr} +byte2line( {byte}) Number line number at byte count {byte} +char2nr( {expr}) Number ASCII value of first char in {expr} +cindent( {lnum}) Number C indent for line {lnum} +col( {expr}) Number column nr of cursor or mark +confirm( {msg} [, {choices} [, {default} [, {type}]]]) + Number number of choice picked by user +cscope_connection( [{num} , {dbpath} [, {prepend}]]) + Number checks existence of cscope connection +cursor( {lnum}, {col}) Number position cursor at {lnum}, {col} +delete( {fname}) Number delete file {fname} +did_filetype() Number TRUE if FileType autocommand event used +escape( {string}, {chars}) String escape {chars} in {string} with '\' +eventhandler( ) Number TRUE if inside an event handler +executable( {expr}) Number 1 if executable {expr} exists +exists( {expr}) Number TRUE if {expr} exists +expand( {expr}) String expand special keywords in {expr} +filereadable( {file}) Number TRUE if {file} is a readable file +filewritable( {file}) Number TRUE if {file} is a writable file +fnamemodify( {fname}, {mods}) String modify file name +foldclosed( {lnum}) Number first line of fold at {lnum} if closed +foldclosedend( {lnum}) Number last line of fold at {lnum} if closed +foldlevel( {lnum}) Number fold level at {lnum} +foldtext( ) String line displayed for closed fold +foreground( ) Number bring the Vim window to the foreground +getchar( [expr]) Number get one character from the user +getcharmod( ) Number modifiers for the last typed character +getbufvar( {expr}, {varname}) variable {varname} in buffer {expr} +getcmdline() String return the current command-line +getcmdpos() Number return cursor position in command-line +getcwd() String the current working directory +getfsize( {fname}) Number size in bytes of file +getftime( {fname}) Number last modification time of file +getline( {lnum}) String line {lnum} from current buffer +getreg( [{regname}]) String contents of register +getregtype( [{regname}]) String type of register +getwinposx() Number X coord in pixels of GUI Vim window +getwinposy() Number Y coord in pixels of GUI Vim window +getwinvar( {nr}, {varname}) variable {varname} in window {nr} +glob( {expr}) String expand file wildcards in {expr} +globpath( {path}, {expr}) String do glob({expr}) for all dirs in {path} +has( {feature}) Number TRUE if feature {feature} supported +hasmapto( {what} [, {mode}]) Number TRUE if mapping to {what} exists +histadd( {history},{item}) String add an item to a history +histdel( {history} [, {item}]) String remove an item from a history +histget( {history} [, {index}]) String get the item {index} from a history +histnr( {history}) Number highest index of a history +hlexists( {name}) Number TRUE if highlight group {name} exists +hlID( {name}) Number syntax ID of highlight group {name} +hostname() String name of the machine Vim is running on +iconv( {expr}, {from}, {to}) String convert encoding of {expr} +indent( {lnum}) Number indent of line {lnum} +input( {prompt} [, {text}]) String get input from the user +inputdialog( {p} [, {t} [, {c}]]) String like input() but in a GUI dialog +inputrestore() Number restore typeahead +inputsave() Number save and clear typeahead +inputsecret( {prompt} [, {text}]) String like input() but hiding the text +isdirectory( {directory}) Number TRUE if {directory} is a directory +libcall( {lib}, {func}, {arg}) String call {func} in library {lib} with {arg} +libcallnr( {lib}, {func}, {arg}) Number idem, but return a Number +line( {expr}) Number line nr of cursor, last line or mark +line2byte( {lnum}) Number byte count of line {lnum} +lispindent( {lnum}) Number Lisp indent for line {lnum} +localtime() Number current time +maparg( {name}[, {mode}]) String rhs of mapping {name} in mode {mode} +mapcheck( {name}[, {mode}]) String check for mappings matching {name} +match( {expr}, {pat}[, {start}]) + Number position where {pat} matches in {expr} +matchend( {expr}, {pat}[, {start}]) + Number position where {pat} ends in {expr} +matchstr( {expr}, {pat}[, {start}]) + String match of {pat} in {expr} +mode() String current editing mode +nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} +nr2char( {expr}) String single char with ASCII value {expr} +prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} +remote_expr( {server}, {string} [, {idvar}]) + String send expression +remote_foreground( {server}) Number bring Vim server to the foreground +remote_peek( {serverid} [, {retvar}]) + Number check for reply string +remote_read( {serverid}) String read reply string +remote_send( {server}, {string} [, {idvar}]) + String send key sequence +rename( {from}, {to}) Number rename (move) file from {from} to {to} +resolve( {filename}) String get filename a shortcut points to +search( {pattern} [, {flags}]) Number search for {pattern} +searchpair( {start}, {middle}, {end} [, {flags} [, {skip}]]) + Number search for other end of start/end pair +server2client( {clientid}, {string}) + Number send reply string +serverlist() String get a list of available servers +setbufvar( {expr}, {varname}, {val}) set {varname} in buffer {expr} to {val} +setcmdpos( {pos}) Number set cursor position in command-line +setline( {lnum}, {line}) Number set line {lnum} to {line} +setreg( {n}, {v}[, {opt}]) Number set register to value and type +setwinvar( {nr}, {varname}, {val}) set {varname} in window {nr} to {val} +simplify( {filename}) String simplify filename as much as possible +strftime( {format}[, {time}]) String time in specified format +stridx( {haystack}, {needle}) Number first index of {needle} in {haystack} +strlen( {expr}) Number length of the String {expr} +strpart( {src}, {start}[, {len}]) + String {len} characters of {src} at {start} +strridx( {haystack}, {needle}) Number last index of {needle} in {haystack} +strtrans( {expr}) String translate string to make it printable +submatch( {nr}) String specific match in ":substitute" +substitute( {expr}, {pat}, {sub}, {flags}) + String all {pat} in {expr} replaced with {sub} +synID( {line}, {col}, {trans}) Number syntax ID at {line} and {col} +synIDattr( {synID}, {what} [, {mode}]) + String attribute {what} of syntax ID {synID} +synIDtrans( {synID}) Number translated syntax ID of {synID} +system( {expr}) String output of shell command {expr} +tempname() String name for a temporary file +tolower( {expr}) String the String {expr} switched to lowercase +toupper( {expr}) String the String {expr} switched to uppercase +type( {name}) Number type of variable {name} +virtcol( {expr}) Number screen column of cursor or mark +visualmode( [expr]) String last visual mode used +winbufnr( {nr}) Number buffer number of window {nr} +wincol() Number window column of the cursor +winheight( {nr}) Number height of window {nr} +winline() Number window line of the cursor +winnr() Number number of current window +winrestcmd() String returns command to restore window sizes +winwidth( {nr}) Number width of window {nr} + +append({lnum}, {string}) *append()* + Append the text {string} after line {lnum} in the current + buffer. {lnum} can be zero, to insert a line before the first + one. Returns 1 for failure ({lnum} out of range) or 0 for + success. + + *argc()* +argc() The result is the number of files in the argument list of the + current window. See |arglist|. + + *argidx()* +argidx() The result is the current index in the argument list. 0 is + the first file. argc() - 1 is the last one. See |arglist|. + + *argv()* +argv({nr}) The result is the {nr}th file in the argument list of the + current window. See |arglist|. "argv(0)" is the first one. + Example: > + :let i = 0 + :while i < argc() + : let f = escape(argv(i), '. ') + : exe 'amenu Arg.' . f . ' :e ' . f . '' + : let i = i + 1 + :endwhile +< + *browse()* +browse({save}, {title}, {initdir}, {default}) + Put up a file requester. This only works when "has("browse")" + returns non-zero (only in some GUI versions). + The input fields are: + {save} when non-zero, select file to write + {title} title for the requester + {initdir} directory to start browsing in + {default} default file name + When the "Cancel" button is hit, something went wrong, or + browsing is not possible, an empty string is returned. + +bufexists({expr}) *bufexists()* + The result is a Number, which is non-zero if a buffer called + {expr} exists. + If the {expr} argument is a string it must match a buffer name + exactly. + If the {expr} argument is a number buffer numbers are used. + Unlisted buffers will be found. + Note that help files are listed by their short name in the + output of |:buffers|, but bufexists() requires using their + long name to be able to find them. + Use "bufexists(0)" to test for the existence of an alternate + file name. + *buffer_exists()* + Obsolete name: buffer_exists(). + +buflisted({expr}) *buflisted()* + The result is a Number, which is non-zero if a buffer called + {expr} exists and is listed (has the 'buflisted' option set). + The {expr} argument is used like with bufexists(). + +bufloaded({expr}) *bufloaded()* + The result is a Number, which is non-zero if a buffer called + {expr} exists and is loaded (shown in a window or hidden). + The {expr} argument is used like with bufexists(). + +bufname({expr}) *bufname()* + The result is the name of a buffer, as it is displayed by the + ":ls" command. + If {expr} is a Number, that buffer number's name is given. + Number zero is the alternate buffer for the current window. + If {expr} is a String, it is used as a |file-pattern| to match + with the buffer names. This is always done like 'magic' is + set and 'cpoptions' is empty. When there is more than one + match an empty string is returned. + "" or "%" can be used for the current buffer, "#" for the + alternate buffer. + A full match is preferred, otherwise a match at the start, end + or middle of the buffer name is accepted. + Listed buffers are found first. If there is a single match + with a listed buffer, that one is returned. Next unlisted + buffers are searched for. + If the {expr} is a String, but you want to use it as a buffer + number, force it to be a Number by adding zero to it: > + :echo bufname("3" + 0) +< If the buffer doesn't exist, or doesn't have a name, an empty + string is returned. > + bufname("#") alternate buffer name + bufname(3) name of buffer 3 + bufname("%") name of current buffer + bufname("file2") name of buffer where "file2" matches. +< *buffer_name()* + Obsolete name: buffer_name(). + + *bufnr()* +bufnr({expr}) The result is the number of a buffer, as it is displayed by + the ":ls" command. For the use of {expr}, see |bufname()| + above. If the buffer doesn't exist, -1 is returned. + bufnr("$") is the last buffer: > + :let last_buffer = bufnr("$") +< The result is a Number, which is the highest buffer number + of existing buffers. Note that not all buffers with a smaller + number necessarily exist, because ":bwipeout" may have removed + them. Use bufexists() to test for the existence of a buffer. + *buffer_number()* + Obsolete name: buffer_number(). + *last_buffer_nr()* + Obsolete name for bufnr("$"): last_buffer_nr(). + +bufwinnr({expr}) *bufwinnr()* + The result is a Number, which is the number of the first + window associated with buffer {expr}. For the use of {expr}, + see |bufname()| above. If buffer {expr} doesn't exist or + there is no such window, -1 is returned. Example: > + + echo "A window containing buffer 1 is " . (bufwinnr(1)) + +< The number can be used with |CTRL-W_w| and ":wincmd w" + |:wincmd|. + + +byte2line({byte}) *byte2line()* + Return the line number that contains the character at byte + count {byte} in the current buffer. This includes the + end-of-line character, depending on the 'fileformat' option + for the current buffer. The first character has byte count + one. + Also see |line2byte()|, |go| and |:goto|. + {not available when compiled without the |+byte_offset| + feature} + +char2nr({expr}) *char2nr()* + Return number value of the first char in {expr}. Examples: > + char2nr(" ") returns 32 + char2nr("ABC") returns 65 +< The current 'encoding' is used. Example for "utf-8": > + char2nr("�") returns 225 + char2nr("�"[0]) returns 195 + +cindent({lnum}) *cindent()* + Get the amount of indent for line {lnum} according the C + indenting rules, as with 'cindent'. + The indent is counted in spaces, the value of 'tabstop' is + relevant. {lnum} is used just like in |getline()|. + When {lnum} is invalid or Vim was not compiled the |+cindent| + feature, -1 is returned. + + *col()* +col({expr}) The result is a Number, which is the column of the file + position given with {expr}. The accepted positions are: + . the cursor position + $ the end of the cursor line (the result is the + number of characters in the cursor line plus one) + 'x position of mark x (if the mark is not set, 0 is + returned) + For the screen column position use |virtcol()|. + Note that only marks in the current file can be used. + Examples: > + col(".") column of cursor + col("$") length of cursor line plus one + col("'t") column of mark t + col("'" . markname) column of mark markname +< The first column is 1. 0 is returned for an error. + For the cursor position, when 'virtualedit' is active, the + column is one higher if the cursor is after the end of the + line. This can be used to obtain the column in Insert mode: > + :imap :let save_ve = &ve + \:set ve=all + \:echo col(".") . "\n" + \let &ve = save_ve +< + *confirm()* +confirm({msg} [, {choices} [, {default} [, {type}]]]) + Confirm() offers the user a dialog, from which a choice can be + made. It returns the number of the choice. For the first + choice this is 1. + Note: confirm() is only supported when compiled with dialog + support, see |+dialog_con| and |+dialog_gui|. + {msg} is displayed in a |dialog| with {choices} as the + alternatives. When {choices} is missing or empty, "&OK" is + used (and translated). + {msg} is a String, use '\n' to include a newline. Only on + some systems the string is wrapped when it doesn't fit. + {choices} is a String, with the individual choices separated + by '\n', e.g. > + confirm("Save changes?", "&Yes\n&No\n&Cancel") +< The letter after the '&' is the shortcut key for that choice. + Thus you can type 'c' to select "Cancel". The shortcut does + not need to be the first letter: > + confirm("file has been modified", "&Save\nSave &All") +< For the console, the first letter of each choice is used as + the default shortcut key. + The optional {default} argument is the number of the choice + that is made if the user hits . Use 1 to make the first + choice the default one. Use 0 to not set a default. If + {default} is omitted, 1 is used. + The optional {type} argument gives the type of dialog. This + is only used for the icon of the Win32 GUI. It can be one of + these values: "Error", "Question", "Info", "Warning" or + "Generic". Only the first character is relevant. When {type} + is omitted, "Generic" is used. + If the user aborts the dialog by pressing , CTRL-C, + or another valid interrupt key, confirm() returns 0. + + An example: > + :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2) + :if choice == 0 + : echo "make up your mind!" + :elseif choice == 3 + : echo "tasteful" + :else + : echo "I prefer bananas myself." + :endif +< In a GUI dialog, buttons are used. The layout of the buttons + depends on the 'v' flag in 'guioptions'. If it is included, + the buttons are always put vertically. Otherwise, confirm() + tries to put the buttons in one horizontal line. If they + don't fit, a vertical layout is used anyway. For some systems + the horizontal layout is always used. + + *cscope_connection()* +cscope_connection([{num} , {dbpath} [, {prepend}]]) + Checks for the existence of a |cscope| connection. If no + parameters are specified, then the function returns: + 0, if cscope was not available (not compiled in), or + if there are no cscope connections; + 1, if there is at least one cscope connection. + + If parameters are specified, then the value of {num} + determines how existence of a cscope connection is checked: + + {num} Description of existence check + ----- ------------------------------ + 0 Same as no parameters (e.g., "cscope_connection()"). + 1 Ignore {prepend}, and use partial string matches for + {dbpath}. + 2 Ignore {prepend}, and use exact string matches for + {dbpath}. + 3 Use {prepend}, use partial string matches for both + {dbpath} and {prepend}. + 4 Use {prepend}, use exact string matches for both + {dbpath} and {prepend}. + + Note: All string comparisons are case sensitive! + + Examples. Suppose we had the following (from ":cs show"): > + + # pid database name prepend path + 0 27664 cscope.out /usr/local +< + Invocation Return Val ~ + ---------- ---------- > + cscope_connection() 1 + cscope_connection(1, "out") 1 + cscope_connection(2, "out") 0 + cscope_connection(3, "out") 0 + cscope_connection(3, "out", "local") 1 + cscope_connection(4, "out") 0 + cscope_connection(4, "out", "local") 0 + cscope_connection(4, "cscope.out", "/usr/local") 1 +< +cursor({lnum}, {col}) *cursor()* + Positions the cursor at the column {col} in the line {lnum}. + Does not change the jumplist. + If {lnum} is greater than the number of lines in the buffer, + the cursor will be positioned at the last line in the buffer. + If {lnum} is zero, the cursor will stay in the current line. + If {col} is greater than the number of characters in the line, + the cursor will be positioned at the last character in the + line. + If {col} is zero, the cursor will stay in the current column. + + *delete()* +delete({fname}) Deletes the file by the name {fname}. The result is a Number, + which is 0 if the file was deleted successfully, and non-zero + when the deletion failed. + + *did_filetype()* +did_filetype() Returns non-zero when autocommands are being executed and the + FileType event has been triggered at least once. Can be used + to avoid triggering the FileType event again in the scripts + that detect the file type. |FileType| + When editing another file, the counter is reset, thus this + really checks if the FileType event has been triggered for the + current buffer. This allows an autocommand that starts + editing another buffer to set 'filetype' and load a syntax + file. + +escape({string}, {chars}) *escape()* + Escape the characters in {chars} that occur in {string} with a + backslash. Example: > + :echo escape('c:\program files\vim', ' \') +< results in: > + c:\\program\ files\\vim +< +eventhandler() *eventhandler()* + Returns 1 when inside an event handler. That is that Vim got + interrupted while waiting for the user to type a character, + e.g., when dropping a file on Vim. This means interactive + commands cannot be used. Otherwise zero is returned. + +executable({expr}) *executable()* + This function checks if an executable with the name {expr} + exists. {expr} must be the name of the program without any + arguments. executable() uses the normal $PATH. + The result is a Number: + 1 exists + 0 does not exist + -1 not implemented on this system + + *exists()* +exists({expr}) The result is a Number, which is non-zero if {expr} is + defined, zero otherwise. The {expr} argument is a string, + which contains one of these: + &option-name Vim option (only checks if it exists, + not if it really works) + +option-name Vim option that works. + $ENVNAME environment variable (could also be + done by comparing with an empty + string) + *funcname built-in function (see |functions|) + or user defined function (see + |user-functions|). + varname internal variable (see + |internal-variables|). Does not work + for |curly-braces-names|. + :cmdname Ex command: built-in command, user + command or command modifier |:command|. + Returns: + 1 for match with start of a command + 2 full match with a command + 3 matches several user commands + To check for a supported command + always check the return value to be 2. + #event autocommand defined for this event + #event#pattern autocommand defined for this event and + pattern (the pattern is taken + literally and compared to the + autocommand patterns character by + character) + For checking for a supported feature use |has()|. + + Examples: > + exists("&shortname") + exists("$HOSTNAME") + exists("*strftime") + exists("*s:MyFunc") + exists("bufcount") + exists(":Make") + exists("#CursorHold"); + exists("#BufReadPre#*.gz") +< There must be no space between the symbol (&/$/*/#) and the + name. + Note that the argument must be a string, not the name of the + variable itself! For example: > + exists(bufcount) +< This doesn't check for existence of the "bufcount" variable, + but gets the contents of "bufcount", and checks if that + exists. + +expand({expr} [, {flag}]) *expand()* + Expand wildcards and the following special keywords in {expr}. + The result is a String. + + When there are several matches, they are separated by + characters. [Note: in version 5.0 a space was used, which + caused problems when a file name contains a space] + + If the expansion fails, the result is an empty string. A name + for a non-existing file is not included. + + When {expr} starts with '%', '#' or '<', the expansion is done + like for the |cmdline-special| variables with their associated + modifiers. Here is a short overview: + + % current file name + # alternate file name + #n alternate file name n + file name under the cursor + autocmd file name + autocmd buffer number (as a String!) + autocmd matched name + sourced script file name + word under the cursor + WORD under the cursor + the {clientid} of the last received + message |server2client()| + Modifiers: + :p expand to full path + :h head (last path component removed) + :t tail (last path component only) + :r root (one extension removed) + :e extension only + + Example: > + :let &tags = expand("%:p:h") . "/tags" +< Note that when expanding a string that starts with '%', '#' or + '<', any following text is ignored. This does NOT work: > + :let doesntwork = expand("%:h.bak") +< Use this: > + :let doeswork = expand("%:h") . ".bak" +< Also note that expanding "" and others only returns the + referenced file name without further expansion. If "" + is "~/.cshrc", you need to do another expand() to have the + "~/" expanded into the path of the home directory: > + :echo expand(expand("")) +< + There cannot be white space between the variables and the + following modifier. The |fnamemodify()| function can be used + to modify normal file names. + + When using '%' or '#', and the current or alternate file name + is not defined, an empty string is used. Using "%:p" in a + buffer with no name, results in the current directory, with a + '/' added. + + When {expr} does not start with '%', '#' or '<', it is + expanded like a file name is expanded on the command line. + 'suffixes' and 'wildignore' are used, unless the optional + {flag} argument is given and it is non-zero. Names for + non-existing files are included. + + Expand() can also be used to expand variables and environment + variables that are only known in a shell. But this can be + slow, because a shell must be started. See |expr-env-expand|. + The expanded variable is still handled like a list of file + names. When an environment variable cannot be expanded, it is + left unchanged. Thus ":echo expand('$FOOBAR')" results in + "$FOOBAR". + + See |glob()| for finding existing files. See |system()| for + getting the raw output of an external command. + +filereadable({file}) *filereadable()* + The result is a Number, which is TRUE when a file with the + name {file} exists, and can be read. If {file} doesn't exist, + or is a directory, the result is FALSE. {file} is any + expression, which is used as a String. + *file_readable()* + Obsolete name: file_readable(). + +filewritable({file}) *filewritable()* + The result is a Number, which is 1 when a file with the + name {file} exists, and can be written. If {file} doesn't + exist, or is not writable, the result is 0. If (file) is a + directory, and we can write to it, the result is 2. + +fnamemodify({fname}, {mods}) *fnamemodify()* + Modify file name {fname} according to {mods}. {mods} is a + string of characters like it is used for file names on the + command line. See |filename-modifiers|. + Example: > + :echo fnamemodify("main.c", ":p:h") +< results in: > + /home/mool/vim/vim/src +< Note: Environment variables and "~" don't work in {fname}, use + |expand()| first then. + +foldclosed({lnum}) *foldclosed()* + The result is a Number. If the line {lnum} is in a closed + fold, the result is the number of the first line in that fold. + If the line {lnum} is not in a closed fold, -1 is returned. + +foldclosedend({lnum}) *foldclosedend()* + The result is a Number. If the line {lnum} is in a closed + fold, the result is the number of the last line in that fold. + If the line {lnum} is not in a closed fold, -1 is returned. + +foldlevel({lnum}) *foldlevel()* + The result is a Number, which is the foldlevel of line {lnum} + in the current buffer. For nested folds the deepest level is + returned. If there is no fold at line {lnum}, zero is + returned. It doesn't matter if the folds are open or closed. + When used while updating folds (from 'foldexpr') -1 is + returned for lines where folds are still to be updated and the + foldlevel is unknown. As a special case the level of the + previous line is usually available. + + *foldtext()* +foldtext() Returns a String, to be displayed for a closed fold. This is + the default function used for the 'foldtext' option and should + only be called from evaluating 'foldtext'. It uses the + |v:foldstart|, |v:foldend| and |v:folddashes| variables. + The returned string looks like this: > + +-- 45 lines: abcdef +< The number of dashes depends on the foldlevel. The "45" is + the number of lines in the fold. "abcdef" is the text in the + first non-blank line of the fold. Leading white space, "//" + or "/*" and the text from the 'foldmarker' and 'commentstring' + options is removed. + {not available when compiled without the |+folding| feature} + + *foreground()* +foreground() Move the Vim window to the foreground. Useful when sent from + a client to a Vim server. |remote_send()| + On Win32 systems this might not work, the OS does not always + allow a window to bring itself to the foreground. Use + |remote_foreground()| instead. + {only in the Win32, Athena, Motif and GTK GUI versions and the + Win32 console version} + +getchar([expr]) *getchar()* + Get a single character from the user. If it is an 8-bit + character, the result is a number. Otherwise a String is + returned with the encoded character. For a special key it's a + sequence of bytes starting with 0x80 (decimal: 128). + If [expr] is omitted, wait until a character is available. + If [expr] is 0, only get a character when one is available. + If [expr] is 1, only check if a character is available, it is + not consumed. If a normal character is + available, it is returned, otherwise a + non-zero value is returned. + If a normal character available, it is returned as a Number. + Use nr2char() to convert it to a String. + The returned value is zero if no character is available. + The returned value is a string of characters for special keys + and when a modifier (shift, control, alt) was used. + There is no prompt, you will somehow have to make clear to the + user that a character has to be typed. + There is no mapping for the character. + Key codes are replaced, thus when the user presses the + key you get the code for the key, not the raw character + sequence. Examples: > + getchar() == "\" + getchar() == "\" +< This example redefines "f" to ignore case: > + :nmap f :call FindChar() + :function FindChar() + : let c = nr2char(getchar()) + : while col('.') < col('$') - 1 + : normal l + : if getline('.')[col('.') - 1] ==? c + : break + : endif + : endwhile + :endfunction + +getcharmod() *getcharmod()* + The result is a Number which is the state of the modifiers for + the last obtained character with getchar() or in another way. + These values are added together: + 2 shift + 4 control + 8 alt (meta) + 16 mouse double click + 32 mouse triple click + 64 mouse quadruple click + 128 Macintosh only: command + Only the modifiers that have not been included in the + character itself are obtained. Thus Shift-a results in "A" + with no modifier. + +getbufvar({expr}, {varname}) *getbufvar()* + The result is the value of option or local buffer variable + {varname} in buffer {expr}. Note that the name without "b:" + must be used. + This also works for a global or local window option, but it + doesn't work for a global or local window variable. + For the use of {expr}, see |bufname()| above. + When the buffer or variable doesn't exist an empty string is + returned, there is no error message. + Examples: > + :let bufmodified = getbufvar(1, "&mod") + :echo "todo myvar = " . getbufvar("todo", "myvar") +< +getcmdline() *getcmdline()* + Return the current command-line. Only works when the command + line is being edited, thus requires use of |c_CTRL-\_e| or + |c_CTRL-R_=|. + Example: > + :cmap eescape(getcmdline(), ' \') +< Also see |getcmdpos()| and |setcmdpos()|. + +getcmdpos({pos}) *getcmdpos()* + Return the position of the cursor in the command line as a + byte count. The first column is 1. + Only works when editing the command line, thus requires use of + |c_CTRL-\_e| or |c_CTRL-R_=|. Returns 0 otherwise. + Also see |setcmdpos()| and |getcmdline()|. + + *getcwd()* +getcwd() The result is a String, which is the name of the current + working directory. + +getfsize({fname}) *getfsize()* + The result is a Number, which is the size in bytes of the + given file {fname}. + If {fname} is a directory, 0 is returned. + If the file {fname} can't be found, -1 is returned. + +getftime({fname}) *getftime()* + The result is a Number, which is the last modification time of + the given file {fname}. The value is measured as seconds + since 1st Jan 1970, and may be passed to strftime(). See also + |localtime()| and |strftime()|. + If the file {fname} can't be found -1 is returned. + + *getline()* +getline({lnum}) The result is a String, which is line {lnum} from the current + buffer. Example: > + getline(1) +< When {lnum} is a String that doesn't start with a + digit, line() is called to translate the String into a Number. + To get the line under the cursor: > + getline(".") +< When {lnum} is smaller than 1 or bigger than the number of + lines in the buffer, an empty string is returned. + +getreg([{regname}]) *getreg()* + The result is a String, which is the contents of register + {regname}. Example: > + :let cliptext = getreg('*') +< getreg('=') returns the last evaluated value of the expression + register. (For use in maps). + If {regname} is not specified, |v:register| is used. + +getregtype([{regname}]) *getregtype()* + The result is a String, which is type of register {regname}. + The value will be one of: + "v" for |characterwise| text + "V" for |linewise| text + "{width}" for |blockwise-visual| text + 0 for an empty or unknown register + is one character with value 0x16. + If {regname} is not specified, |v:register| is used. + + *getwinposx()* +getwinposx() The result is a Number, which is the X coordinate in pixels of + the left hand side of the GUI Vim window. The result will be + -1 if the information is not available. + + *getwinposy()* +getwinposy() The result is a Number, which is the Y coordinate in pixels of + the top of the GUI Vim window. The result will be -1 if the + information is not available. + +getwinvar({nr}, {varname}) *getwinvar()* + The result is the value of option or local window variable + {varname} in window {nr}. + This also works for a global or local buffer option, but it + doesn't work for a global or local buffer variable. + Note that the name without "w:" must be used. + Examples: > + :let list_is_on = getwinvar(2, '&list') + :echo "myvar = " . getwinvar(1, 'myvar') +< + *glob()* +glob({expr}) Expand the file wildcards in {expr}. The result is a String. + When there are several matches, they are separated by + characters. + If the expansion fails, the result is an empty string. + A name for a non-existing file is not included. + + For most systems backticks can be used to get files names from + any external command. Example: > + :let tagfiles = glob("`find . -name tags -print`") + :let &tags = substitute(tagfiles, "\n", ",", "g") +< The result of the program inside the backticks should be one + item per line. Spaces inside an item are allowed. + + See |expand()| for expanding special Vim variables. See + |system()| for getting the raw output of an external command. + +globpath({path}, {expr}) *globpath()* + Perform glob() on all directories in {path} and concatenate + the results. Example: > + :echo globpath(&rtp, "syntax/c.vim") +< {path} is a comma-separated list of directory names. Each + directory name is prepended to {expr} and expanded like with + glob(). A path separator is inserted when needed. + To add a comma inside a directory name escape it with a + backslash. Note that on MS-Windows a directory may have a + trailing backslash, remove it if you put a comma after it. + If the expansion fails for one of the directories, there is no + error message. + The 'wildignore' option applies: Names matching one of the + patterns in 'wildignore' will be skipped. + + *has()* +has({feature}) The result is a Number, which is 1 if the feature {feature} is + supported, zero otherwise. The {feature} argument is a + string. See |feature-list| below. + Also see |exists()|. + +hasmapto({what} [, {mode}]) *hasmapto()* + The result is a Number, which is 1 if there is a mapping that + contains {what} in somewhere in the rhs (what it is mapped to) + and this mapping exists in one of the modes indicated by + {mode}. + Both the global mappings and the mappings local to the current + buffer are checked for a match. + If no matching mapping is found 0 is returned. + The following characters are recognized in {mode}: + n Normal mode + v Visual mode + o Operator-pending mode + i Insert mode + l Language-Argument ("r", "f", "t", etc.) + c Command-line mode + When {mode} is omitted, "nvo" is used. + + This function is useful to check if a mapping already exists + to a function in a Vim script. Example: > + :if !hasmapto('\ABCdoit') + : map d \ABCdoit + :endif +< This installs the mapping to "\ABCdoit" only if there isn't + already a mapping to "\ABCdoit". + +histadd({history}, {item}) *histadd()* + Add the String {item} to the history {history} which can be + one of: *hist-names* + "cmd" or ":" command line history + "search" or "/" search pattern history + "expr" or "=" typed expression history + "input" or "@" input line history + If {item} does already exist in the history, it will be + shifted to become the newest entry. + The result is a Number: 1 if the operation was successful, + otherwise 0 is returned. + + Example: > + :call histadd("input", strftime("%Y %b %d")) + :let date=input("Enter date: ") +< This function is not available in the |sandbox|. + +histdel({history} [, {item}]) *histdel()* + Clear {history}, ie. delete all its entries. See |hist-names| + for the possible values of {history}. + + If the parameter {item} is given as String, this is seen + as regular expression. All entries matching that expression + will be removed from the history (if there are any). + Upper/lowercase must match, unless "\c" is used |/\c|. + If {item} is a Number, it will be interpreted as index, see + |:history-indexing|. The respective entry will be removed + if it exists. + + The result is a Number: 1 for a successful operation, + otherwise 0 is returned. + + Examples: + Clear expression register history: > + :call histdel("expr") +< + Remove all entries starting with "*" from the search history: > + :call histdel("/", '^\*') +< + The following three are equivalent: > + :call histdel("search", histnr("search")) + :call histdel("search", -1) + :call histdel("search", '^'.histget("search", -1).'$') +< + To delete the last search pattern and use the last-but-one for + the "n" command and 'hlsearch': > + :call histdel("search", -1) + :let @/ = histget("search", -1) + +histget({history} [, {index}]) *histget()* + The result is a String, the entry with Number {index} from + {history}. See |hist-names| for the possible values of + {history}, and |:history-indexing| for {index}. If there is + no such entry, an empty String is returned. When {index} is + omitted, the most recent item from the history is used. + + Examples: + Redo the second last search from history. > + :execute '/' . histget("search", -2) + +< Define an Ex command ":H {num}" that supports re-execution of + the {num}th entry from the output of |:history|. > + :command -nargs=1 H execute histget("cmd", 0+) +< +histnr({history}) *histnr()* + The result is the Number of the current entry in {history}. + See |hist-names| for the possible values of {history}. + If an error occurred, -1 is returned. + + Example: > + :let inp_index = histnr("expr") +< +hlexists({name}) *hlexists()* + The result is a Number, which is non-zero if a highlight group + called {name} exists. This is when the group has been + defined in some way. Not necessarily when highlighting has + been defined for it, it may also have been used for a syntax + item. + *highlight_exists()* + Obsolete name: highlight_exists(). + + *hlID()* +hlID({name}) The result is a Number, which is the ID of the highlight group + with name {name}. When the highlight group doesn't exist, + zero is returned. + This can be used to retrieve information about the highlight + group. For example, to get the background color of the + "Comment" group: > + :echo synIDattr(synIDtrans(hlID("Comment")), "bg") +< *highlightID()* + Obsolete name: highlightID(). + +hostname() *hostname()* + The result is a String, which is the name of the machine on + which Vim is currently running. Machine names greater than + 256 characters long are truncated. + +iconv({expr}, {from}, {to}) *iconv()* + The result is a String, which is the text {expr} converted + from encoding {from} to encoding {to}. + When the conversion fails an empty string is returned. + The encoding names are whatever the iconv() library function + can accept, see ":!man 3 iconv". + Most conversions require Vim to be compiled with the |+iconv| + feature. Otherwise only UTF-8 to latin1 conversion and back + can be done. + This can be used to display messages with special characters, + no matter what 'encoding' is set to. Write the message in + UTF-8 and use: > + echo iconv(utf8_str, "utf-8", &enc) +< Note that Vim uses UTF-8 for all Unicode encodings, conversion + from/to UCS-2 is automatically changed to use UTF-8. You + cannot use UCS-2 in a string anyway, because of the NUL bytes. + {only available when compiled with the +multi_byte feature} + + *indent()* +indent({lnum}) The result is a Number, which is indent of line {lnum} in the + current buffer. The indent is counted in spaces, the value + of 'tabstop' is relevant. {lnum} is used just like in + |getline()|. + When {lnum} is invalid -1 is returned. + +input({prompt} [, {text}]) *input()* + The result is a String, which is whatever the user typed on + the command-line. The parameter is either a prompt string, or + a blank string (for no prompt). A '\n' can be used in the + prompt to start a new line. The highlighting set with + |:echohl| is used for the prompt. The input is entered just + like a command-line, with the same editing commands and + mappings. There is a separate history for lines typed for + input(). + If the optional {text} is present, this is used for the + default reply, as if the user typed this. + NOTE: This must not be used in a startup file, for the + versions that only run in GUI mode (e.g., the Win32 GUI). + Note: When input() is called from within a mapping it will + consume remaining characters from that mapping, because a + mapping is handled like the characters were typed. + Use |inputsave()| before input() and |inputrestore()| + after input() to avoid that. Another solution is to avoid + that further characters follow in the mapping, e.g., by using + |:execute| or |:normal|. + + Example: > + :if input("Coffee or beer? ") == "beer" + : echo "Cheers!" + :endif +< Example with default text: > + :let color = input("Color? ", "white") +< Example with a mapping: > + :nmap \x :call GetFoo():exe "/" . Foo + :function GetFoo() + : call inputsave() + : let g:Foo = input("enter search pattern: ") + : call inputrestore() + :endfunction + +inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()* + Like input(), but when the GUI is running and text dialogs are + supported, a dialog window pops up to input the text. + Example: > + :let n = inputdialog("value for shiftwidth", &sw) + :if n != "" + : let &sw = n + :endif +< When the dialog is cancelled {cancelreturn} is returned. When + omitted an empty string is returned. + Hitting works like pressing the OK button. Hitting + works like pressing the Cancel button. + +inputrestore() *inputrestore()* + Restore typeahead that was saved with a previous inputsave(). + Should be called the same number of times inputsave() is + called. Calling it more often is harmless though. + Returns 1 when there is nothing to restore, 0 otherwise. + +inputsave() *inputsave()* + Preserve typeahead (also from mappings) and clear it, so that + a following prompt gets input from the user. Should be + followed by a matching inputrestore() after the prompt. Can + be used several times, in which case there must be just as + many inputrestore() calls. + Returns 1 when out of memory, 0 otherwise. + +inputsecret({prompt} [, {text}]) *inputsecret()* + This function acts much like the |input()| function with but + two exceptions: + a) the user's response will be displayed as a sequence of + asterisks ("*") thereby keeping the entry secret, and + b) the user's response will not be recorded on the input + |history| stack. + The result is a String, which is whatever the user actually + typed on the command-line in response to the issued prompt. + +isdirectory({directory}) *isdirectory()* + The result is a Number, which is non-zero when a directory + with the name {directory} exists. If {directory} doesn't + exist, or isn't a directory, the result is FALSE. {directory} + is any expression, which is used as a String. + + *libcall()* *E364* *E368* +libcall({libname}, {funcname}, {argument}) + Call function {funcname} in the run-time library {libname} + with single argument {argument}. + This is useful to call functions in a library that you + especially made to be used with Vim. Since only one argument + is possible, calling standard library functions is rather + limited. + The result is the String returned by the function. If the + function returns NULL, this will appear as an empty string "" + to Vim. + If the function returns a number, use libcallnr()! + If {argument} is a number, it is passed to the function as an + int; if {argument} is a string, it is passed as a + null-terminated string. + This function will fail in |restricted-mode|. + + libcall() allows you to write your own 'plug-in' extensions to + Vim without having to recompile the program. It is NOT a + means to call system functions! If you try to do so Vim will + very probably crash. + + For Win32, the functions you write must be placed in a DLL + and use the normal C calling convention (NOT Pascal which is + used in Windows System DLLs). The function must take exactly + one parameter, either a character pointer or a long integer, + and must return a character pointer or NULL. The character + pointer returned must point to memory that will remain valid + after the function has returned (e.g. in static data in the + DLL). If it points to allocated memory, that memory will + leak away. Using a static buffer in the function should work, + it's then freed when the DLL is unloaded. + + WARNING: If the function returns a non-valid pointer, Vim may + crash! This also happens if the function returns a number, + because Vim thinks it's a pointer. + For Win32 systems, {libname} should be the filename of the DLL + without the ".DLL" suffix. A full path is only required if + the DLL is not in the usual places. + For Unix: When compiling your own plugins, remember that the + object code must be compiled as position-independent ('PIC'). + {only in Win32 on some Unix versions, when the |+libcall| + feature is present} + Examples: > + :echo libcall("libc.so", "getenv", "HOME") + :echo libcallnr("/usr/lib/libc.so", "getpid", "") +< + *libcallnr()* +libcallnr({libname}, {funcname}, {argument}) + Just like libcall(), but used for a function that returns an + int instead of a string. + {only in Win32 on some Unix versions, when the |+libcall| + feature is present} + Example (not very useful...): > + :call libcallnr("libc.so", "printf", "Hello World!\n") + :call libcallnr("libc.so", "sleep", 10) +< + *line()* +line({expr}) The result is a Number, which is the line number of the file + position given with {expr}. The accepted positions are: + . the cursor position + $ the last line in the current buffer + 'x position of mark x (if the mark is not set, 0 is + returned) + Note that only marks in the current file can be used. + Examples: > + line(".") line number of the cursor + line("'t") line number of mark t + line("'" . marker) line number of mark marker +< *last-position-jump* + This autocommand jumps to the last known position in a file + just after opening it, if the '" mark is set: > + :au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g'\"" | endif +< +line2byte({lnum}) *line2byte()* + Return the byte count from the start of the buffer for line + {lnum}. This includes the end-of-line character, depending on + the 'fileformat' option for the current buffer. The first + line returns 1. + This can also be used to get the byte count for the line just + below the last line: > + line2byte(line("$") + 1) +< This is the file size plus one. + When {lnum} is invalid, or the |+byte_offset| feature has been + disabled at compile time, -1 is returned. + Also see |byte2line()|, |go| and |:goto|. + +lispindent({lnum}) *lispindent()* + Get the amount of indent for line {lnum} according the lisp + indenting rules, as with 'lisp'. + The indent is counted in spaces, the value of 'tabstop' is + relevant. {lnum} is used just like in |getline()|. + When {lnum} is invalid or Vim was not compiled the + |+lispindent| feature, -1 is returned. + +localtime() *localtime()* + Return the current time, measured as seconds since 1st Jan + 1970. See also |strftime()| and |getftime()|. + +maparg({name}[, {mode}]) *maparg()* + Return the rhs of mapping {name} in mode {mode}. When there + is no mapping for {name}, an empty String is returned. + These characters can be used for {mode}: + "n" Normal + "v" Visual + "o" Operator-pending + "i" Insert + "c" Cmd-line + "l" langmap |language-mapping| + "" Normal, Visual and Operator-pending + When {mode} is omitted, the modes from "" are used. + The {name} can have special key names, like in the ":map" + command. The returned String has special characters + translated like in the output of the ":map" command listing. + The mappings local to the current buffer are checked first, + then the global mappings. + +mapcheck({name}[, {mode}]) *mapcheck()* + Check if there is a mapping that matches with {name} in mode + {mode}. See |maparg()| for {mode} and special names in + {name}. + A match happens with a mapping that starts with {name} and + with a mapping which is equal to the start of {name}. + + matches mapping "a" "ab" "abc" ~ + mapcheck("a") yes yes yes + mapcheck("abc") yes yes yes + mapcheck("ax") yes no no + mapcheck("b") no no no + + The difference with maparg() is that mapcheck() finds a + mapping that matches with {name}, while maparg() only finds a + mapping for {name} exactly. + When there is no mapping that starts with {name}, an empty + String is returned. If there is one, the rhs of that mapping + is returned. If there are several mappings that start with + {name}, the rhs of one of them is returned. + The mappings local to the current buffer are checked first, + then the global mappings. + This function can be used to check if a mapping can be added + without being ambiguous. Example: > + :if mapcheck("_vv") == "" + : map _vv :set guifont=7x13 + :endif +< This avoids adding the "_vv" mapping when there already is a + mapping for "_v" or for "_vvv". + +match({expr}, {pat}[, {start}]) *match()* + The result is a Number, which gives the index (byte offset) in + {expr} where {pat} matches. A match at the first character + returns zero. If there is no match -1 is returned. Example: > + :echo match("testing", "ing") +< results in "4". + See |string-match| for how {pat} is used. + If {start} is given, the search starts from index {start}. + The result, however, is still the index counted from the + first character. Example: > + :echo match("testing", "ing", 2) +< result is again "4". > + :echo match("testing", "ing", 4) +< result is again "4". > + :echo match("testing", "t", 2) +< result is "3". + If {start} < 0, it will be set to 0. + If {start} > strlen({expr}) -1 is returned. + See |pattern| for the patterns that are accepted. + The 'ignorecase' option is used to set the ignore-caseness of + the pattern. 'smartcase' is NOT used. The matching is always + done like 'magic' is set and 'cpoptions' is empty. + +matchend({expr}, {pat}[, {start}]) *matchend()* + Same as match(), but return the index of first character after + the match. Example: > + :echo matchend("testing", "ing") +< results in "7". + The {start}, if given, has the same meaning as for match(). > + :echo matchend("testing", "ing", 2) +< results in "7". > + :echo matchend("testing", "ing", 5) +< result is "-1". + +matchstr({expr}, {pat}[, {start}]) *matchstr()* + Same as match(), but return the matched string. Example: > + :echo matchstr("testing", "ing") +< results in "ing". + When there is no match "" is returned. + The {start}, if given, has the same meaning as for match(). > + :echo matchstr("testing", "ing", 2) +< results in "ing". > + :echo matchstr("testing", "ing", 5) +< result is "". + + *mode()* +mode() Return a string that indicates the current mode: + n Normal + v Visual by character + V Visual by line + CTRL-V Visual blockwise + s Select by character + S Select by line + CTRL-S Select blockwise + i Insert + R Replace + c Command-line + r Hit-enter prompt + This is useful in the 'statusline' option. In most other + places it always returns "c" or "n". + +nextnonblank({lnum}) *nextnonblank()* + Return the line number of the first line at or below {lnum} + that is not blank. Example: > + if getline(nextnonblank(1)) =~ "Java" +< When {lnum} is invalid or there is no non-blank line at or + below it, zero is returned. + See also |prevnonblank()|. + +nr2char({expr}) *nr2char()* + Return a string with a single character, which has the number + value {expr}. Examples: > + nr2char(64) returns "@" + nr2char(32) returns " " +< The current 'encoding' is used. Example for "utf-8": > + nr2char(300) returns I with bow character +< Note that a NUL character in the file is specified with + nr2char(10), because NULs are represented with newline + characters. nr2char(0) is a real NUL and terminates the + string, thus isn't very useful. + +prevnonblank({lnum}) *prevnonblank()* + Return the line number of the first line at or above {lnum} + that is not blank. Example: > + let ind = indent(prevnonblank(v:lnum - 1)) +< When {lnum} is invalid or there is no non-blank line at or + above it, zero is returned. + Also see |nextnonblank()|. + + *remote_expr()* *E449* +remote_expr({server}, {string} [, {idvar}]) + Send the {string} to {server}. The string is sent as an + expression and the result is returned after evaluation. + If {idvar} is present, it is taken as the name of a + variable and a {serverid} for later use with + remote_read() is stored there. + See also |clientserver| |RemoteReply|. + This function is not available in the |sandbox|. + {only available when compiled with the |+clientserver| feature} + Note: Any errors will cause a local error message to be issued + and the result will be the empty string. + Examples: > + :echo remote_expr("gvim", "2+2") + :echo remote_expr("gvim1", "b:current_syntax") +< + +remote_foreground({server}) *remote_foreground()* + Move the Vim server with the name {server} to the foreground. + This works like: > + remote_expr({server}, "foreground()") +< Except that on Win32 systems the client does the work, to work + around the problem that the OS doesn't always allow the server + to bring itself to the foreground. + This function is not available in the |sandbox|. + {only in the Win32, Athena, Motif and GTK GUI versions and the + Win32 console version} + + +remote_peek({serverid} [, {retvar}]) *remote_peek()* + Returns a positive number if there are available strings + from {serverid}. Copies any reply string into the variable + {retvar} if specified. {retvar} must be a string with the + name of a variable. + Returns zero if none are available. + Returns -1 if something is wrong. + See also |clientserver|. + This function is not available in the |sandbox|. + {only available when compiled with the |+clientserver| feature} + Examples: > + :let repl = "" + :echo "PEEK: ".remote_peek(id, "repl").": ".repl + +remote_read({serverid}) *remote_read()* + Return the oldest available reply from {serverid} and consume + it. It blocks until a reply is available. + See also |clientserver|. + This function is not available in the |sandbox|. + {only available when compiled with the |+clientserver| feature} + Example: > + :echo remote_read(id) +< + *remote_send()* *E241* +remote_send({server}, {string} [, {idvar}]) + Send the {string} to {server}. The string is sent as + input keys and the function returns immediately. + If {idvar} is present, it is taken as the name of a + variable and a {serverid} for later use with + remote_read() is stored there. + See also |clientserver| |RemoteReply|. + This function is not available in the |sandbox|. + {only available when compiled with the |+clientserver| feature} + Note: Any errors will be reported in the server and may mess + up the display. + Examples: > + :echo remote_send("gvim", ":DropAndReply ".file, "serverid"). + \ remote_read(serverid) + + :autocmd NONE RemoteReply * + \ echo remote_read(expand("")) + :echo remote_send("gvim", ":sleep 10 | echo ". + \ 'server2client(expand(""), "HELLO")') + + +rename({from}, {to}) *rename()* + Rename the file by the name {from} to the name {to}. This + should also work to move files across file systems. The + result is a Number, which is 0 if the file was renamed + successfully, and non-zero when the renaming failed. + This function is not available in the |sandbox|. + +resolve({filename}) *resolve()* *E655* + On MS-Windows, when {filename} is a shortcut (a .lnk file), + returns the path the shortcut points to in a simplified form. + On Unix, repeat resolving symbolic links in all path + components of {filename} and return the simplified result. + To cope with link cycles, resolving of symbolic links is + stopped after 100 iterations. + On other systems, return the simplified {filename}. + The simplification step is done as by |simplify()|. + resolve() keeps a leading path component specifying the + current directory (provided the result is still a relative + path name) and also keeps a trailing path separator. + +search({pattern} [, {flags}]) *search()* + Search for regexp pattern {pattern}. The search starts at the + cursor position. + {flags} is a String, which can contain these character flags: + 'b' search backward instead of forward + 'w' wrap around the end of the file + 'W' don't wrap around the end of the file + If neither 'w' or 'W' is given, the 'wrapscan' option applies. + + When a match has been found its line number is returned, and + the cursor will be positioned at the match. If there is no + match a 0 is returned and the cursor doesn't move. No error + message is given. + + Example (goes over all files in the argument list): > + :let n = 1 + :while n <= argc() " loop over all files in arglist + : exe "argument " . n + : " start at the last char in the file and wrap for the + : " first search to find match at start of file + : normal G$ + : let flags = "w" + : while search("foo", flags) > 0 + : s/foo/bar/g + : let flags = "W" + : endwhile + : update " write the file if modified + : let n = n + 1 + :endwhile +< + *searchpair()* +searchpair({start}, {middle}, {end} [, {flags} [, {skip}]]) + Search for the match of a nested start-end pair. This can be + used to find the "endif" that matches an "if", while other + if/endif pairs in between are ignored. + The search starts at the cursor. If a match is found, the + cursor is positioned at it and the line number is returned. + If no match is found 0 or -1 is returned and the cursor + doesn't move. No error message is given. + + {start}, {middle} and {end} are patterns, see |pattern|. They + must not contain \( \) pairs. Use of \%( \) is allowed. When + {middle} is not empty, it is found when searching from either + direction, but only when not in a nested start-end pair. A + typical use is: > + searchpair('\', '\', '\') +< By leaving {middle} empty the "else" is skipped. + + {flags} are used like with |search()|. Additionally: + 'n' do Not move the cursor + 'r' Repeat until no more matches found; will find the + outer pair + 'm' return number of Matches instead of line number with + the match; will only be > 1 when 'r' is used. + + When a match for {start}, {middle} or {end} is found, the + {skip} expression is evaluated with the cursor positioned on + the start of the match. It should return non-zero if this + match is to be skipped. E.g., because it is inside a comment + or a string. + When {skip} is omitted or empty, every match is accepted. + When evaluating {skip} causes an error the search is aborted + and -1 returned. + + The value of 'ignorecase' is used. 'magic' is ignored, the + patterns are used like it's on. + + The search starts exactly at the cursor. A match with + {start}, {middle} or {end} at the next character, in the + direction of searching, is the first one found. Example: > + if 1 + if 2 + endif 2 + endif 1 +< When starting at the "if 2", with the cursor on the "i", and + searching forwards, the "endif 2" is found. When starting on + the character just before the "if 2", the "endif 1" will be + found. That's because the "if 2" will be found first, and + then this is considered to be a nested if/endif from "if 2" to + "endif 2". + When searching backwards and {end} is more than one character, + it may be useful to put "\zs" at the end of the pattern, so + that when the cursor is inside a match with the end it finds + the matching start. + + Example, to find the "endif" command in a Vim script: > + + :echo searchpair('\', '\', '\', 'W', + \ 'getline(".") =~ "^\\s*\""') + +< The cursor must be at or after the "if" for which a match is + to be found. Note that single-quote strings are used to avoid + having to double the backslashes. The skip expression only + catches comments at the start of a line, not after a command. + Also, a word "en" or "if" halfway a line is considered a + match. + Another example, to search for the matching "{" of a "}": > + + :echo searchpair('{', '', '}', 'bW') + +< This works when the cursor is at or before the "}" for which a + match is to be found. To reject matches that syntax + highlighting recognized as strings: > + + :echo searchpair('{', '', '}', 'bW', + \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"') +< +server2client( {clientid}, {string}) *server2client()* + Send a reply string to {clientid}. The most recent {clientid} + that sent a string can be retrieved with expand(""). + {only available when compiled with the |+clientserver| feature} + Note: + This id has to be stored before the next command can be + received. Ie. before returning from the received command and + before calling any commands that waits for input. + See also |clientserver|. + Example: > + :echo server2client(expand(""), "HELLO") +< +serverlist() *serverlist()* + Return a list of available server names, one per line. + When there are no servers or the information is not available + an empty string is returned. See also |clientserver|. + {only available when compiled with the |+clientserver| feature} + Example: > + :echo serverlist() +< +setbufvar({expr}, {varname}, {val}) *setbufvar()* + Set option or local variable {varname} in buffer {expr} to + {val}. + This also works for a global or local window option, but it + doesn't work for a global or local window variable. + For a local window option the global value is unchanged. + For the use of {expr}, see |bufname()| above. + Note that the variable name without "b:" must be used. + Examples: > + :call setbufvar(1, "&mod", 1) + :call setbufvar("todo", "myvar", "foobar") +< This function is not available in the |sandbox|. + +setcmdpos({pos}) *setcmdpos()* + Set the cursor position in the command line to byte position + {pos}. The first position is 1. + Use |getcmdpos()| to obtain the current position. + Only works while editing the command line, thus you must use + |c_CTRL-\_e| or |c_CTRL-R_=|. The position is set after the + command line is set to the expression. + When the number is too big the cursor is put at the end of the + line. A number smaller than one has undefined results. + Returns 0 when successful, 1 when not editing the command + line. + +setline({lnum}, {line}) *setline()* + Set line {lnum} of the current buffer to {line}. If this + succeeds, 0 is returned. If this fails (most likely because + {lnum} is invalid) 1 is returned. Example: > + :call setline(5, strftime("%c")) +< Note: The '[ and '] marks are not set. + + *setreg()* +setreg({regname}, {value} [,{options}]) + Set the register {regname} to {value}. + If {options} contains "a" or {regname} is upper case, + then the value is appended. + {options} can also contains a register type specification: + "c" or "v" |characterwise| mode + "l" or "V" |linewise| mode + "b" or "" |blockwise-visual| mode + If a number immediately follows "b" or "" then this is + used as the width of the selection - if it is not specified + then the width of the block is set to the number of characters + in the longest line (counting a as 1 character). + + If {options} contains no register settings, then the default + is to use character mode unless {value} ends in a . + Setting the '=' register is not possible. + Returns zero for success, non-zero for failure. + + Examples: > + :call setreg(v:register, @*) + :call setreg('*', @%, 'ac') + :call setreg('a', "1\n2\n3", 'b5') + +< This example shows using the functions to save and restore a + register. > + :let var_a = getreg('a') + :let var_amode = getregtype('a') + .... + :call setreg('a', var_a, var_amode) + +< You can also change the type of a register by appending + nothing: > + :call setreg('a', '', 'al') + +setwinvar({nr}, {varname}, {val}) *setwinvar()* + Set option or local variable {varname} in window {nr} to + {val}. + This also works for a global or local buffer option, but it + doesn't work for a global or local buffer variable. + For a local buffer option the global value is unchanged. + Note that the variable name without "w:" must be used. + Examples: > + :call setwinvar(1, "&list", 0) + :call setwinvar(2, "myvar", "foobar") +< This function is not available in the |sandbox|. + +simplify({filename}) *simplify()* + Simplify the file name as much as possible without changing + the meaning. Shortcuts (on MS-Windows) or symbolic links (on + Unix) are not resolved. If the first path component in + {filename} designates the current directory, this will be + valid for the result as well. A trailing path separator is + not removed either. + Example: > + simplify("./dir/.././/file/") == "./file/" +< Note: The combination "dir/.." is only removed if "dir" is + a searchable directory or does not exist. On Unix, it is also + removed when "dir" is a symbolic link within the same + directory. In order to resolve all the involved symbolic + links before simplifying the path name, use |resolve()|. + +strftime({format} [, {time}]) *strftime()* + The result is a String, which is a formatted date and time, as + specified by the {format} string. The given {time} is used, + or the current time if no time is given. The accepted + {format} depends on your system, thus this is not portable! + See the manual page of the C function strftime() for the + format. The maximum length of the result is 80 characters. + See also |localtime()| and |getftime()|. + The language can be changed with the |:language| command. + Examples: > + :echo strftime("%c") Sun Apr 27 11:49:23 1997 + :echo strftime("%Y %b %d %X") 1997 Apr 27 11:53:25 + :echo strftime("%y%m%d %T") 970427 11:53:55 + :echo strftime("%H:%M") 11:55 + :echo strftime("%c", getftime("file.c")) + Show mod time of file.c. +< +stridx({haystack}, {needle}) *stridx()* + The result is a Number, which gives the index in {haystack} of + the first occurrence of the String {needle} in the String + {haystack}. The search is done case-sensitive. For advanced + searches use |match()|. + If the {needle} does not occur in {haystack} it returns -1. + See also |strridx()|. Examples: > + :echo stridx("An Example", "Example") 3 + :echo stridx("Starting point", "Start") 0 + :echo stridx("Starting point", "start") -1 +< + *strlen()* +strlen({expr}) The result is a Number, which is the length of the String + {expr} in bytes. If you want to count the number of + multi-byte characters use something like this: > + + :let len = strlen(substitute(str, ".", "x", "g")) + +< Composing characters are not counted. + +strpart({src}, {start}[, {len}]) *strpart()* + The result is a String, which is part of {src}, starting from + byte {start}, with the length {len}. + When non-existing bytes are included, this doesn't result in + an error, the bytes are simply omitted. + If {len} is missing, the copy continues from {start} till the + end of the {src}. > + strpart("abcdefg", 3, 2) == "de" + strpart("abcdefg", -2, 4) == "ab" + strpart("abcdefg", 5, 4) == "fg" + strpart("abcdefg", 3) == "defg" +< Note: To get the first character, {start} must be 0. For + example, to get three bytes under and after the cursor: > + strpart(getline(line(".")), col(".") - 1, 3) +< +strridx({haystack}, {needle}) *strridx()* + The result is a Number, which gives the index in {haystack} of + the last occurrence of the String {needle} in the String + {haystack}. The search is done case-sensitive. For advanced + searches use |match()|. + If the {needle} does not occur in {haystack} it returns -1. + See also |stridx()|. Examples: > + :echo strridx("an angry armadillo", "an") 3 +< +strtrans({expr}) *strtrans()* + The result is a String, which is {expr} with all unprintable + characters translated into printable characters |'isprint'|. + Like they are shown in a window. Example: > + echo strtrans(@a) +< This displays a newline in register a as "^@" instead of + starting a new line. + +submatch({nr}) *submatch()* + Only for an expression in a |:substitute| command. Returns + the {nr}'th submatch of the matched text. When {nr} is 0 + the whole matched text is returned. + Example: > + :s/\d\+/\=submatch(0) + 1/ +< This finds the first number in the line and adds one to it. + A line break is included as a newline character. + +substitute({expr}, {pat}, {sub}, {flags}) *substitute()* + The result is a String, which is a copy of {expr}, in which + the first match of {pat} is replaced with {sub}. This works + like the ":substitute" command (without any flags). But the + matching with {pat} is always done like the 'magic' option is + set and 'cpoptions' is empty (to make scripts portable). + See |string-match| for how {pat} is used. + And a "~" in {sub} is not replaced with the previous {sub}. + Note that some codes in {sub} have a special meaning + |sub-replace-special|. For example, to replace something with + "\n" (two characters), use "\\\\n" or '\\n'. + When {pat} does not match in {expr}, {expr} is returned + unmodified. + When {flags} is "g", all matches of {pat} in {expr} are + replaced. Otherwise {flags} should be "". + Example: > + :let &path = substitute(&path, ",\\=[^,]*$", "", "") +< This removes the last component of the 'path' option. > + :echo substitute("testing", ".*", "\\U\\0", "") +< results in "TESTING". + +synID({line}, {col}, {trans}) *synID()* + The result is a Number, which is the syntax ID at the position + {line} and {col} in the current window. + The syntax ID can be used with |synIDattr()| and + |synIDtrans()| to obtain syntax information about text. + {col} is 1 for the leftmost column, {line} is 1 for the first + line. + When {trans} is non-zero, transparent items are reduced to the + item that they reveal. This is useful when wanting to know + the effective color. When {trans} is zero, the transparent + item is returned. This is useful when wanting to know which + syntax item is effective (e.g. inside parens). + Warning: This function can be very slow. Best speed is + obtained by going through the file in forward direction. + + Example (echoes the name of the syntax item under the cursor): > + :echo synIDattr(synID(line("."), col("."), 1), "name") +< +synIDattr({synID}, {what} [, {mode}]) *synIDattr()* + The result is a String, which is the {what} attribute of + syntax ID {synID}. This can be used to obtain information + about a syntax item. + {mode} can be "gui", "cterm" or "term", to get the attributes + for that mode. When {mode} is omitted, or an invalid value is + used, the attributes for the currently active highlighting are + used (GUI, cterm or term). + Use synIDtrans() to follow linked highlight groups. + {what} result + "name" the name of the syntax item + "fg" foreground color (GUI: color name used to set + the color, cterm: color number as a string, + term: empty string) + "bg" background color (like "fg") + "fg#" like "fg", but for the GUI and the GUI is + running the name in "#RRGGBB" form + "bg#" like "fg#" for "bg" + "bold" "1" if bold + "italic" "1" if italic + "reverse" "1" if reverse + "inverse" "1" if inverse (= reverse) + "underline" "1" if underlined + + Example (echoes the color of the syntax item under the + cursor): > + :echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg") +< +synIDtrans({synID}) *synIDtrans()* + The result is a Number, which is the translated syntax ID of + {synID}. This is the syntax group ID of what is being used to + highlight the character. Highlight links given with + ":highlight link" are followed. + + *system()* +system({expr}) Get the output of the shell command {expr}. Note: newlines + in {expr} may cause the command to fail. The characters in + 'shellquote' and 'shellxquote' may also cause trouble. + This is not to be used for interactive commands. + The result is a String. Example: > + + :let files = system("ls") + +< To make the result more system-independent, the shell output + is filtered to replace with for Macintosh, and + with for DOS-like systems. + The command executed is constructed using several options: + 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote' + ({tmp} is an automatically generated file name). + For Unix and OS/2 braces are put around {expr} to allow for + concatenated commands. + + The resulting error code can be found in |v:shell_error|. + This function will fail in |restricted-mode|. + Unlike ":!cmd" there is no automatic check for changed files. + Use |:checktime| to force a check. + +tempname() *tempname()* *temp-file-name* + The result is a String, which is the name of a file that + doesn't exist. It can be used for a temporary file. The name + is different for at least 26 consecutive calls. Example: > + :let tmpfile = tempname() + :exe "redir > " . tmpfile +< For Unix, the file will be in a private directory (only + accessible by the current user) to avoid security problems + (e.g., a symlink attack or other people reading your file). + When Vim exits the directory and all files in it are deleted. + For MS-Windows forward slashes are used when the 'shellslash' + option is set or when 'shellcmdflag' starts with '-'. + +tolower({expr}) *tolower()* + The result is a copy of the String given, with all uppercase + characters turned into lowercase (just like applying |gu| to + the string). + +toupper({expr}) *toupper()* + The result is a copy of the String given, with all lowercase + characters turned into uppercase (just like applying |gU| to + the string). + +type({expr}) *type()* + The result is a Number: + 0 if {expr} has the type Number + 1 if {expr} has the type String + +virtcol({expr}) *virtcol()* + The result is a Number, which is the screen column of the file + position given with {expr}. That is, the last screen position + occupied by the character at that position, when the screen + would be of unlimited width. When there is a at the + position, the returned Number will be the column at the end of + the . For example, for a in column 1, with 'ts' + set to 8, it returns 8. + For the byte position use |col()|. + When Virtual editing is active in the current mode, a position + beyond the end of the line can be returned. |'virtualedit'| + The accepted positions are: + . the cursor position + $ the end of the cursor line (the result is the + number of displayed characters in the cursor line + plus one) + 'x position of mark x (if the mark is not set, 0 is + returned) + Note that only marks in the current file can be used. + Examples: > + virtcol(".") with text "foo^Lbar", with cursor on the "^L", returns 5 + virtcol("$") with text "foo^Lbar", returns 9 + virtcol("'t") with text " there", with 't at 'h', returns 6 +< The first column is 1. 0 is returned for an error. + +visualmode([expr]) *visualmode()* + The result is a String, which describes the last Visual mode + used. Initially it returns an empty string, but once Visual + mode has been used, it returns "v", "V", or "" (a + single CTRL-V character) for character-wise, line-wise, or + block-wise Visual mode respectively. + Example: > + :exe "normal " . visualmode() +< This enters the same Visual mode as before. It is also useful + in scripts if you wish to act differently depending on the + Visual mode that was used. + + If an expression is supplied that results in a non-zero number + or a non-empty string, then the Visual mode will be cleared + and the old value is returned. Note that " " and "0" are also + non-empty strings, thus cause the mode to be cleared. + + *winbufnr()* +winbufnr({nr}) The result is a Number, which is the number of the buffer + associated with window {nr}. When {nr} is zero, the number of + the buffer in the current window is returned. When window + {nr} doesn't exist, -1 is returned. + Example: > + :echo "The file in the current window is " . bufname(winbufnr(0)) +< + *wincol()* +wincol() The result is a Number, which is the virtual column of the + cursor in the window. This is counting screen cells from the + left side of the window. The leftmost column is one. + +winheight({nr}) *winheight()* + The result is a Number, which is the height of window {nr}. + When {nr} is zero, the height of the current window is + returned. When window {nr} doesn't exist, -1 is returned. + An existing window always has a height of zero or more. + Examples: > + :echo "The current window has " . winheight(0) . " lines." +< + *winline()* +winline() The result is a Number, which is the screen line of the cursor + in the window. This is counting screen lines from the top of + the window. The first line is one. + + *winnr()* +winnr() The result is a Number, which is the number of the current + window. The top window has number 1. The number can be used + with |CTRL-W_w| and ":wincmd w" |:wincmd|. + + *winrestcmd()* +winrestcmd() Returns a sequence of |:resize| commands that should restore + the current window sizes. Only works properly when no windows + are opened or closed and the current window is unchanged. + Example: > + :let cmd = winrestcmd() + :call MessWithWindowSizes() + :exe cmd + +winwidth({nr}) *winwidth()* + The result is a Number, which is the width of window {nr}. + When {nr} is zero, the width of the current window is + returned. When window {nr} doesn't exist, -1 is returned. + An existing window always has a width of zero or more. + Examples: > + :echo "The current window has " . winwidth(0) . " columns." + :if winwidth(0) <= 50 + : exe "normal 50\|" + :endif +< + + *feature-list* +There are three types of features: +1. Features that are only supported when they have been enabled when Vim + was compiled |+feature-list|. Example: > + :if has("cindent") +2. Features that are only supported when certain conditions have been met. + Example: > + :if has("gui_running") +< *has-patch* +3. Included patches. First check |v:version| for the version of Vim. + Then the "patch123" feature means that patch 123 has been included for + this version. Example (checking version 6.2.148 or later): > + :if v:version > 602 || v:version == 602 && has("patch148") + +all_builtin_terms Compiled with all builtin terminals enabled. +amiga Amiga version of Vim. +arabic Compiled with Arabic support |Arabic|. +arp Compiled with ARP support (Amiga). +autocmd Compiled with autocommands support. +balloon_eval Compiled with |balloon-eval| support. +beos BeOS version of Vim. +browse Compiled with |:browse| support, and browse() will + work. +builtin_terms Compiled with some builtin terminals. +byte_offset Compiled with support for 'o' in 'statusline' +cindent Compiled with 'cindent' support. +clientserver Compiled with remote invocation support |clientserver|. +clipboard Compiled with 'clipboard' support. +cmdline_compl Compiled with |cmdline-completion| support. +cmdline_hist Compiled with |cmdline-history| support. +cmdline_info Compiled with 'showcmd' and 'ruler' support. +comments Compiled with |'comments'| support. +cryptv Compiled with encryption support |encryption|. +cscope Compiled with |cscope| support. +compatible Compiled to be very Vi compatible. +debug Compiled with "DEBUG" defined. +dialog_con Compiled with console dialog support. +dialog_gui Compiled with GUI dialog support. +diff Compiled with |vimdiff| and 'diff' support. +digraphs Compiled with support for digraphs. +dnd Compiled with support for the "~ register |quote_~|. +dos32 32 bits DOS (DJGPP) version of Vim. +dos16 16 bits DOS version of Vim. +ebcdic Compiled on a machine with ebcdic character set. +emacs_tags Compiled with support for Emacs tags. +eval Compiled with expression evaluation support. Always + true, of course! +ex_extra Compiled with extra Ex commands |+ex_extra|. +extra_search Compiled with support for |'incsearch'| and + |'hlsearch'| +farsi Compiled with Farsi support |farsi|. +file_in_path Compiled with support for |gf| and || +find_in_path Compiled with support for include file searches + |+find_in_path|. +fname_case Case in file names matters (for Amiga, MS-DOS, and + Windows this is not present). +folding Compiled with |folding| support. +footer Compiled with GUI footer support. |gui-footer| +fork Compiled to use fork()/exec() instead of system(). +gettext Compiled with message translation |multi-lang| +gui Compiled with GUI enabled. +gui_athena Compiled with Athena GUI. +gui_beos Compiled with BeOs GUI. +gui_gtk Compiled with GTK+ GUI (any version). +gui_gtk2 Compiled with GTK+ 2 GUI (gui_gtk is also defined). +gui_mac Compiled with Macintosh GUI. +gui_motif Compiled with Motif GUI. +gui_photon Compiled with Photon GUI. +gui_win32 Compiled with MS Windows Win32 GUI. +gui_win32s idem, and Win32s system being used (Windows 3.1) +gui_running Vim is running in the GUI, or it will start soon. +hangul_input Compiled with Hangul input support. |hangul| +iconv Can use iconv() for conversion. +insert_expand Compiled with support for CTRL-X expansion commands in + Insert mode. +jumplist Compiled with |jumplist| support. +keymap Compiled with 'keymap' support. +langmap Compiled with 'langmap' support. +libcall Compiled with |libcall()| support. +linebreak Compiled with 'linebreak', 'breakat' and 'showbreak' + support. +lispindent Compiled with support for lisp indenting. +listcmds Compiled with commands for the buffer list |:files| + and the argument list |arglist|. +localmap Compiled with local mappings and abbr. |:map-local| +mac Macintosh version of Vim. +macunix Macintosh version of Vim, using Unix files (OS-X). +menu Compiled with support for |:menu|. +mksession Compiled with support for |:mksession|. +modify_fname Compiled with file name modifiers. |filename-modifiers| +mouse Compiled with support mouse. +mouseshape Compiled with support for 'mouseshape'. +mouse_dec Compiled with support for Dec terminal mouse. +mouse_gpm Compiled with support for gpm (Linux console mouse) +mouse_netterm Compiled with support for netterm mouse. +mouse_pterm Compiled with support for qnx pterm mouse. +mouse_xterm Compiled with support for xterm mouse. +multi_byte Compiled with support for editing Korean et al. +multi_byte_ime Compiled with support for IME input method. +multi_lang Compiled with support for multiple languages. +netbeans_intg Compiled with support for |netbeans|. +ole Compiled with OLE automation support for Win32. +os2 OS/2 version of Vim. +osfiletype Compiled with support for osfiletypes |+osfiletype| +path_extra Compiled with up/downwards search in 'path' and 'tags' +perl Compiled with Perl interface. +postscript Compiled with PostScript file printing. +printer Compiled with |:hardcopy| support. +python Compiled with Python interface. +qnx QNX version of Vim. +quickfix Compiled with |quickfix| support. +rightleft Compiled with 'rightleft' support. +ruby Compiled with Ruby interface |ruby|. +scrollbind Compiled with 'scrollbind' support. +showcmd Compiled with 'showcmd' support. +signs Compiled with |:sign| support. +smartindent Compiled with 'smartindent' support. +sniff Compiled with SniFF interface support. +statusline Compiled with support for 'statusline', 'rulerformat' + and special formats of 'titlestring' and 'iconstring'. +sun_workshop Compiled with support for Sun |workshop|. +syntax Compiled with syntax highlighting support. +syntax_items There are active syntax highlighting items for the + current buffer. +system Compiled to use system() instead of fork()/exec(). +tag_binary Compiled with binary searching in tags files + |tag-binary-search|. +tag_old_static Compiled with support for old static tags + |tag-old-static|. +tag_any_white Compiled with support for any white characters in tags + files |tag-any-white|. +tcl Compiled with Tcl interface. +terminfo Compiled with terminfo instead of termcap. +termresponse Compiled with support for |t_RV| and |v:termresponse|. +textobjects Compiled with support for |text-objects|. +tgetent Compiled with tgetent support, able to use a termcap + or terminfo file. +title Compiled with window title support |'title'|. +toolbar Compiled with support for |gui-toolbar|. +unix Unix version of Vim. +user_commands User-defined commands. +viminfo Compiled with viminfo support. +vim_starting True while initial source'ing takes place. +vertsplit Compiled with vertically split windows |:vsplit|. +virtualedit Compiled with 'virtualedit' option. +visual Compiled with Visual mode. +visualextra Compiled with extra Visual mode commands. + |blockwise-operators|. +vms VMS version of Vim. +vreplace Compiled with |gR| and |gr| commands. +wildignore Compiled with 'wildignore' option. +wildmenu Compiled with 'wildmenu' option. +windows Compiled with support for more than one window. +winaltkeys Compiled with 'winaltkeys' option. +win16 Win16 version of Vim (MS-Windows 3.1). +win32 Win32 version of Vim (MS-Windows 95/98/ME/NT/2000/XP). +win64 Win64 version of Vim (MS-Windows 64 bit). +win32unix Win32 version of Vim, using Unix files (Cygwin) +win95 Win32 version for MS-Windows 95/98/ME. +writebackup Compiled with 'writebackup' default on. +xfontset Compiled with X fontset support |xfontset|. +xim Compiled with X input method support |xim|. +xsmp Compiled with X session management support. +xsmp_interact Compiled with interactive X session management support. +xterm_clipboard Compiled with support for xterm clipboard. +xterm_save Compiled with support for saving and restoring the + xterm screen. +x11 Compiled with X11 support. + + *string-match* +Matching a pattern in a String + +A regexp pattern as explained at |pattern| is normally used to find a match in +the buffer lines. When a pattern is used to find a match in a String, almost +everything works in the same way. The difference is that a String is handled +like it is one line. When it contains a "\n" character, this is not seen as a +line break for the pattern. It can be matched with a "\n" in the pattern, or +with ".". Example: > + :let a = "aaaa\nxxxx" + :echo matchstr(a, "..\n..") + aa + xx + :echo matchstr(a, "a.x") + a + x + +Don't forget that "^" will only match at the first character of the String and +"$" at the last character of the string. They don't match after or before a +"\n". + +============================================================================== +5. Defining functions *user-functions* + +New functions can be defined. These can be called just like builtin +functions. The function executes a sequence of Ex commands. Normal mode +commands can be executed with the |:normal| command. + +The function name must start with an uppercase letter, to avoid confusion with +builtin functions. To prevent from using the same name in different scripts +avoid obvious, short names. A good habit is to start the function name with +the name of the script, e.g., "HTMLcolor()". + +It's also possible to use curly braces, see |curly-braces-names|. + + *local-function* +A function local to a script must start with "s:". A local script function +can only be called from within the script and from functions, user commands +and autocommands defined in the script. It is also possible to call the +function from a mappings defined in the script, but then || must be used +instead of "s:" when the mapping is expanded outside of the script. + + *:fu* *:function* *E128* *E129* *E123* +:fu[nction] List all functions and their arguments. + +:fu[nction] {name} List function {name}. + *E124* *E125* +:fu[nction][!] {name}([arguments]) [range] [abort] + Define a new function by the name {name}. The name + must be made of alphanumeric characters and '_', and + must start with a capital or "s:" (see above). + *function-argument* *a:var* + An argument can be defined by giving its name. In the + function this can then be used as "a:name" ("a:" for + argument). + Up to 20 arguments can be given, separated by commas. + Finally, an argument "..." can be specified, which + means that more arguments may be following. In the + function they can be used as "a:1", "a:2", etc. "a:0" + is set to the number of extra arguments (which can be + 0). + When not using "...", the number of arguments in a + function call must be equal to the number of named + arguments. When using "...", the number of arguments + may be larger. + It is also possible to define a function without any + arguments. You must still supply the () then. + The body of the function follows in the next lines, + until the matching |:endfunction|. It is allowed to + define another function inside a function body. + *E127* *E122* + When a function by this name already exists and [!] is + not used an error message is given. When [!] is used, + an existing function is silently replaced. Unless it + is currently being executed, that is an error. + *a:firstline* *a:lastline* + When the [range] argument is added, the function is + expected to take care of a range itself. The range is + passed as "a:firstline" and "a:lastline". If [range] + is excluded, ":{range}call" will call the function for + each line in the range, with the cursor on the start + of each line. See |function-range-example|. + When the [abort] argument is added, the function will + abort as soon as an error is detected. + The last used search pattern and the redo command "." + will not be changed by the function. + + *:endf* *:endfunction* *E126* *E193* +:endf[unction] The end of a function definition. Must be on a line + by its own, without other commands. + + *:delf* *:delfunction* *E130* *E131* +:delf[unction] {name} Delete function {name}. + + *:retu* *:return* *E133* +:retu[rn] [expr] Return from a function. When "[expr]" is given, it is + evaluated and returned as the result of the function. + If "[expr]" is not given, the number 0 is returned. + When a function ends without an explicit ":return", + the number 0 is returned. + Note that there is no check for unreachable lines, + thus there is no warning if commands follow ":return". + + If the ":return" is used after a |:try| but before the + matching |:finally| (if present), the commands + following the ":finally" up to the matching |:endtry| + are executed first. This process applies to all + nested ":try"s inside the function. The function + returns at the outermost ":endtry". + + +Inside a function variables can be used. These are local variables, which +will disappear when the function returns. Global variables need to be +accessed with "g:". + +Example: > + :function Table(title, ...) + : echohl Title + : echo a:title + : echohl None + : let idx = 1 + : while idx <= a:0 + : echo a:{idx} . ' ' + : let idx = idx + 1 + : endwhile + : return idx + :endfunction + +This function can then be called with: > + let lines = Table("Table", "line1", "line2") + let lines = Table("Empty Table") + +To return more than one value, pass the name of a global variable: > + :function Compute(n1, n2, divname) + : if a:n2 == 0 + : return "fail" + : endif + : let g:{a:divname} = a:n1 / a:n2 + : return "ok" + :endfunction + +This function can then be called with: > + :let success = Compute(13, 1324, "div") + :if success == "ok" + : echo div + :endif + +An alternative is to return a command that can be executed. This also works +with local variables in a calling function. Example: > + :function Foo() + : execute Bar() + : echo "line " . lnum . " column " . col + :endfunction + + :function Bar() + : return "let lnum = " . line(".") . " | let col = " . col(".") + :endfunction + +The names "lnum" and "col" could also be passed as argument to Bar(), to allow +the caller to set the names. + + *:cal* *:call* *E107* +:[range]cal[l] {name}([arguments]) + Call a function. The name of the function and its arguments + are as specified with |:function|. Up to 20 arguments can be + used. + Without a range and for functions that accept a range, the + function is called once. When a range is given the cursor is + positioned at the start of the first line before executing the + function. + When a range is given and the function doesn't handle it + itself, the function is executed for each line in the range, + with the cursor in the first column of that line. The cursor + is left at the last line (possibly moved by the last function + call). The arguments are re-evaluated for each line. Thus + this works: + *function-range-example* > + :function Mynumber(arg) + : echo line(".") . " " . a:arg + :endfunction + :1,5call Mynumber(getline(".")) +< + The "a:firstline" and "a:lastline" are defined anyway, they + can be used to do something different at the start or end of + the range. + + Example of a function that handles the range itself: > + + :function Cont() range + : execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ ' + :endfunction + :4,8call Cont() +< + This function inserts the continuation character "\" in front + of all the lines in the range, except the first one. + + *E132* +The recursiveness of user functions is restricted with the |'maxfuncdepth'| +option. + + *autoload-functions* +When using many or large functions, it's possible to automatically define them +only when they are used. Use the FuncUndefined autocommand event with a +pattern that matches the function(s) to be defined. Example: > + + :au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim + +The file "~/vim/bufnetfuncs.vim" should then define functions that start with +"BufNet". Also see |FuncUndefined|. + +============================================================================== +6. Curly braces names *curly-braces-names* + +Wherever you can use a variable, you can use a "curly braces name" variable. +This is a regular variable name with one or more expressions wrapped in braces +{} like this: > + my_{adjective}_variable + +When Vim encounters this, it evaluates the expression inside the braces, puts +that in place of the expression, and re-interprets the whole as a variable +name. So in the above example, if the variable "adjective" was set to +"noisy", then the reference would be to "my_noisy_variable", whereas if +"adjective" was set to "quiet", then it would be to "my_quiet_variable". + +One application for this is to create a set of variables governed by an option +value. For example, the statement > + echo my_{&background}_message + +would output the contents of "my_dark_message" or "my_light_message" depending +on the current value of 'background'. + +You can use multiple brace pairs: > + echo my_{adverb}_{adjective}_message +..or even nest them: > + echo my_{ad{end_of_word}}_message +where "end_of_word" is either "verb" or "jective". + +However, the expression inside the braces must evaluate to a valid single +variable name. e.g. this is invalid: > + :let foo='a + b' + :echo c{foo}d +.. since the result of expansion is "ca + bd", which is not a variable name. + + *curly-braces-function-names* +You can call and define functions by an evaluated name in a similar way. +Example: > + :let func_end='whizz' + :call my_func_{func_end}(parameter) + +This would call the function "my_func_whizz(parameter)". + +============================================================================== +7. Commands *expression-commands* + +:let {var-name} = {expr1} *:let* *E18* + Set internal variable {var-name} to the result of the + expression {expr1}. The variable will get the type + from the {expr}. If {var-name} didn't exist yet, it + is created. + +:let ${env-name} = {expr1} *:let-environment* *:let-$* + Set environment variable {env-name} to the result of + the expression {expr1}. The type is always String. + +:let @{reg-name} = {expr1} *:let-register* *:let-@* + Write the result of the expression {expr1} in register + {reg-name}. {reg-name} must be a single letter, and + must be the name of a writable register (see + |registers|). "@@" can be used for the unnamed + register, "@/" for the search pattern. + If the result of {expr1} ends in a or , the + register will be linewise, otherwise it will be set to + characterwise. + This can be used to clear the last search pattern: > + :let @/ = "" +< This is different from searching for an empty string, + that would match everywhere. + +:let &{option-name} = {expr1} *:let-option* *:let-star* + Set option {option-name} to the result of the + expression {expr1}. The value is always converted to + the type of the option. + For an option local to a window or buffer the effect + is just like using the |:set| command: both the local + value and the global value is changed. + +:let &l:{option-name} = {expr1} + Like above, but only set the local value of an option + (if there is one). Works like |:setlocal|. + +:let &g:{option-name} = {expr1} + Like above, but only set the global value of an option + (if there is one). Works like |:setglobal|. + + *E106* +:let {var-name} .. List the value of variable {var-name}. Several + variable names may be given. + +:let List the values of all variables. + + *:unlet* *:unl* *E108* +:unl[et][!] {var-name} ... + Remove the internal variable {var-name}. Several + variable names can be given, they are all removed. + With [!] no error message is given for non-existing + variables. + +:if {expr1} *:if* *:endif* *:en* *E171* *E579* *E580* +:en[dif] Execute the commands until the next matching ":else" + or ":endif" if {expr1} evaluates to non-zero. + + From Vim version 4.5 until 5.0, every Ex command in + between the ":if" and ":endif" is ignored. These two + commands were just to allow for future expansions in a + backwards compatible way. Nesting was allowed. Note + that any ":else" or ":elseif" was ignored, the "else" + part was not executed either. + + You can use this to remain compatible with older + versions: > + :if version >= 500 + : version-5-specific-commands + :endif +< The commands still need to be parsed to find the + "endif". Sometimes an older Vim has a problem with a + new command. For example, ":silent" is recognized as + a ":substitute" command. In that case ":execute" can + avoid problems: > + :if version >= 600 + : execute "silent 1,$delete" + :endif +< + NOTE: The ":append" and ":insert" commands don't work + properly in between ":if" and ":endif". + + *:else* *:el* *E581* *E583* +:el[se] Execute the commands until the next matching ":else" + or ":endif" if they previously were not being + executed. + + *:elseif* *:elsei* *E582* *E584* +:elsei[f] {expr1} Short for ":else" ":if", with the addition that there + is no extra ":endif". + +:wh[ile] {expr1} *:while* *:endwhile* *:wh* *:endw* + *E170* *E585* *E588* +:endw[hile] Repeat the commands between ":while" and ":endwhile", + as long as {expr1} evaluates to non-zero. + When an error is detected from a command inside the + loop, execution continues after the "endwhile". + + NOTE: The ":append" and ":insert" commands don't work + properly inside a ":while" loop. + + *:continue* *:con* *E586* +:con[tinue] When used inside a ":while", jumps back to the + ":while". If it is used after a |:try| inside the + ":while" but before the matching |:finally| (if + present), the commands following the ":finally" up to + the matching |:endtry| are executed first. This + process applies to all nested ":try"s inside the + ":while". The outermost ":endtry" then jumps back to + the ":while". + + *:break* *:brea* *E587* +:brea[k] When used inside a ":while", skips to the command + after the matching ":endwhile". If it is used after + a |:try| inside the ":while" but before the matching + |:finally| (if present), the commands following the + ":finally" up to the matching |:endtry| are executed + first. This process applies to all nested ":try"s + inside the ":while". The outermost ":endtry" then + jumps to the command after the ":endwhile". + +:try *:try* *:endt* *:endtry* *E600* *E601* *E602* +:endt[ry] Change the error handling for the commands between + ":try" and ":endtry" including everything being + executed across ":source" commands, function calls, + or autocommand invocations. + + When an error or interrupt is detected and there is + a |:finally| command following, execution continues + after the ":finally". Otherwise, or when the + ":endtry" is reached thereafter, the next + (dynamically) surrounding ":try" is checked for + a corresponding ":finally" etc. Then the script + processing is terminated. (Whether a function + definition has an "abort" argument does not matter.) + Example: > + :try | edit too much | finally | echo "cleanup" | endtry + :echo "impossible" " not reached, script terminated above +< + Moreover, an error or interrupt (dynamically) inside + ":try" and ":endtry" is converted to an exception. It + can be caught as if it were thrown by a |:throw| + command (see |:catch|). In this case, the script + processing is not terminated. + + The value "Vim:Interrupt" is used for an interrupt + exception. An error in a Vim command is converted + to a value of the form "Vim({command}):{errmsg}", + other errors are converted to a value of the form + "Vim:{errmsg}". {command} is the full command name, + and {errmsg} is the message that is displayed if the + error exception is not caught, always beginning with + the error number. + Examples: > + :try | sleep 100 | catch /^Vim:Interrupt$/ | endtry + :try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry +< + *:cat* *:catch* *E603* *E604* *E605* +:cat[ch] /{pattern}/ The following commands until the next ":catch", + |:finally|, or |:endtry| that belongs to the same + |:try| as the ":catch" are executed when an exception + matching {pattern} is being thrown and has not yet + been caught by a previous ":catch". Otherwise, these + commands are skipped. + When {pattern} is omitted all errors are caught. + Examples: > + :catch /^Vim:Interrupt$/ " catch interrupts (CTRL-C) + :catch /^Vim\%((\a\+)\)\=:E/ " catch all Vim errors + :catch /^Vim\%((\a\+)\)\=:/ " catch errors and interrupts + :catch /^Vim(write):/ " catch all errors in :write + :catch /^Vim\%((\a\+)\)\=:E123/ " catch error E123 + :catch /my-exception/ " catch user exception + :catch /.*/ " catch everything + :catch " same as /.*/ +< + Another character can be used instead of / around the + {pattern}, so long as it does not have a special + meaning (e.g., '|' or '"') and doesn't occur inside + {pattern}. + NOTE: It is not reliable to ":catch" the TEXT of + an error message because it may vary in different + locales. + + *:fina* *:finally* *E606* *E607* +:fina[lly] The following commands until the matching |:endtry| + are executed whenever the part between the matching + |:try| and the ":finally" is left: either by falling + through to the ":finally" or by a |:continue|, + |:break|, |:finish|, or |:return|, or by an error or + interrupt or exception (see |:throw|). + + *:th* *:throw* *E608* +:th[row] {expr1} The {expr1} is evaluated and thrown as an exception. + If the ":throw" is used after a |:try| but before the + first corresponding |:catch|, commands are skipped + until the first ":catch" matching {expr1} is reached. + If there is no such ":catch" or if the ":throw" is + used after a ":catch" but before the |:finally|, the + commands following the ":finally" (if present) up to + the matching |:endtry| are executed. If the ":throw" + is after the ":finally", commands up to the ":endtry" + are skipped. At the ":endtry", this process applies + again for the next dynamically surrounding ":try" + (which may be found in a calling function or sourcing + script), until a matching ":catch" has been found. + If the exception is not caught, the command processing + is terminated. + Example: > + :try | throw "oops" | catch /^oo/ | echo "caught" | endtry +< + + *:ec* *:echo* +:ec[ho] {expr1} .. Echoes each {expr1}, with a space in between. The + first {expr1} starts on a new line. + Also see |:comment|. + Use "\n" to start a new line. Use "\r" to move the + cursor to the first column. + Uses the highlighting set by the |:echohl| command. + Cannot be followed by a comment. + Example: > + :echo "the value of 'shell' is" &shell +< A later redraw may make the message disappear again. + To avoid that a command from before the ":echo" causes + a redraw afterwards (redraws are often postponed until + you type something), force a redraw with the |:redraw| + command. Example: > + :new | redraw | echo "there is a new window" +< + *:echon* +:echon {expr1} .. Echoes each {expr1}, without anything added. Also see + |:comment|. + Uses the highlighting set by the |:echohl| command. + Cannot be followed by a comment. + Example: > + :echon "the value of 'shell' is " &shell +< + Note the difference between using ":echo", which is a + Vim command, and ":!echo", which is an external shell + command: > + :!echo % --> filename +< The arguments of ":!" are expanded, see |:_%|. > + :!echo "%" --> filename or "filename" +< Like the previous example. Whether you see the double + quotes or not depends on your 'shell'. > + :echo % --> nothing +< The '%' is an illegal character in an expression. > + :echo "%" --> % +< This just echoes the '%' character. > + :echo expand("%") --> filename +< This calls the expand() function to expand the '%'. + + *:echoh* *:echohl* +:echoh[l] {name} Use the highlight group {name} for the following + |:echo|, |:echon| and |:echomsg| commands. Also used + for the |input()| prompt. Example: > + :echohl WarningMsg | echo "Don't panic!" | echohl None +< Don't forget to set the group back to "None", + otherwise all following echo's will be highlighted. + + *:echom* *:echomsg* +:echom[sg] {expr1} .. Echo the expression(s) as a true message, saving the + message in the |message-history|. + Spaces are placed between the arguments as with the + |:echo| command. But unprintable characters are + displayed, not interpreted. + Uses the highlighting set by the |:echohl| command. + Example: > + :echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see." +< + *:echoe* *:echoerr* +:echoe[rr] {expr1} .. Echo the expression(s) as an error message, saving the + message in the |message-history|. When used in a + script or function the line number will be added. + Spaces are placed between the arguments as with the + :echo command. When used inside a try conditional, + the message is raised as an error exception instead + (see |try-echoerr|). + Example: > + :echoerr "This script just failed!" +< If you just want a highlighted message use |:echohl|. + And to get a beep: > + :exe "normal \" +< + *:exe* *:execute* +:exe[cute] {expr1} .. Executes the string that results from the evaluation + of {expr1} as an Ex command. Multiple arguments are + concatenated, with a space in between. {expr1} is + used as the processed command, command line editing + keys are not recognized. + Cannot be followed by a comment. + Examples: > + :execute "buffer " nextbuf + :execute "normal " count . "w" +< + ":execute" can be used to append a command to commands + that don't accept a '|'. Example: > + :execute '!ls' | echo "theend" + +< ":execute" is also a nice way to avoid having to type + control characters in a Vim script for a ":normal" + command: > + :execute "normal ixxx\" +< This has an character, see |expr-string|. + + Note: The executed string may be any command-line, but + you cannot start or end a "while" or "if" command. + Thus this is illegal: > + :execute 'while i > 5' + :execute 'echo "test" | break' +< + It is allowed to have a "while" or "if" command + completely in the executed string: > + :execute 'while i < 5 | echo i | let i = i + 1 | endwhile' +< + + *:comment* + ":execute", ":echo" and ":echon" cannot be followed by + a comment directly, because they see the '"' as the + start of a string. But, you can use '|' followed by a + comment. Example: > + :echo "foo" | "this is a comment + +============================================================================== +8. Exception handling *exception-handling* + +The Vim script language comprises an exception handling feature. This section +explains how it can be used in a Vim script. + +Exceptions may be raised by Vim on an error or on interrupt, see +|catch-errors| and |catch-interrupt|. You can also explicitly throw an +exception by using the ":throw" command, see |throw-catch|. + + +TRY CONDITIONALS *try-conditionals* + +Exceptions can be caught or can cause cleanup code to be executed. You can +use a try conditional to specify catch clauses (that catch exceptions) and/or +a finally clause (to be executed for cleanup). + A try conditional begins with a |:try| command and ends at the matching +|:endtry| command. In between, you can use a |:catch| command to start +a catch clause, or a |:finally| command to start a finally clause. There may +be none or multiple catch clauses, but there is at most one finally clause, +which must not be followed by any catch clauses. The lines before the catch +clauses and the finally clause is called a try block. > + + :try + : ... + : ... TRY BLOCK + : ... + :catch /{pattern}/ + : ... + : ... CATCH CLAUSE + : ... + :catch /{pattern}/ + : ... + : ... CATCH CLAUSE + : ... + :finally + : ... + : ... FINALLY CLAUSE + : ... + :endtry + +The try conditional allows to watch code for exceptions and to take the +appropriate actions. Exceptions from the try block may be caught. Exceptions +from the try block and also the catch clauses may cause cleanup actions. + When no exception is thrown during execution of the try block, the control +is transferred to the finally clause, if present. After its execution, the +script continues with the line following the ":endtry". + When an exception occurs during execution of the try block, the remaining +lines in the try block are skipped. The exception is matched against the +patterns specified as arguments to the ":catch" commands. The catch clause +after the first matching ":catch" is taken, other catch clauses are not +executed. The catch clause ends when the next ":catch", ":finally", or +":endtry" command is reached - whatever is first. Then, the finally clause +(if present) is executed. When the ":endtry" is reached, the script execution +continues in the following line as usual. + When an exception that does not match any of the patterns specified by the +":catch" commands is thrown in the try block, the exception is not caught by +that try conditional and none of the catch clauses is executed. Only the +finally clause, if present, is taken. The exception pends during execution of +the finally clause. It is resumed at the ":endtry", so that commands after +the ":endtry" are not executed and the exception might be caught elsewhere, +see |try-nesting|. + When during execution of a catch clause another exception is thrown, the +remaining lines in that catch clause are not executed. The new exception is +not matched against the patterns in any of the ":catch" commands of the same +try conditional and none of its catch clauses is taken. If there is, however, +a finally clause, it is executed, and the exception pends during its +execution. The commands following the ":endtry" are not executed. The new +exception might, however, be caught elsewhere, see |try-nesting|. + When during execution of the finally clause (if present) an exception is +thrown, the remaining lines in the finally clause are skipped. If the finally +clause has been taken because of an exception from the try block or one of the +catch clauses, the original (pending) exception is discarded. The commands +following the ":endtry" are not executed, and the exception from the finally +clause is propagated and can be caught elsewhere, see |try-nesting|. + +The finally clause is also executed, when a ":break" or ":continue" for +a ":while" loop enclosing the complete try conditional is executed from the +try block or a catch clause. Or when a ":return" or ":finish" is executed +from the try block or a catch clause of a try conditional in a function or +sourced script, respectively. The ":break", ":continue", ":return", or +":finish" pends during execution of the finally clause and is resumed when the +":endtry" is reached. It is, however, discarded when an exception is thrown +from the finally clause. + When a ":break" or ":continue" for a ":while" loop enclosing the complete +try conditional or when a ":return" or ":finish" is encountered in the finally +clause, the rest of the finally clause is skipped, and the ":break", +":continue", ":return" or ":finish" is executed as usual. If the finally +clause has been taken because of an exception or an earlier ":break", +":continue", ":return", or ":finish" from the try block or a catch clause, +this pending exception or command is discarded. + +For examples see |throw-catch| and |try-finally|. + + +NESTING OF TRY CONDITIONALS *try-nesting* + +Try conditionals can be nested arbitrarily. That is, a complete try +conditional can be put into the try block, a catch clause, or the finally +clause of another try conditional. If the inner try conditional does not +catch an exception thrown in its try block or throws a new exception from one +of its catch clauses or its finally clause, the outer try conditional is +checked according to the rules above. If the inner try conditional is in the +try block of the outer try conditional, its catch clauses are checked, but +otherwise only the finally clause is executed. It does not matter for +nesting, whether the inner try conditional is directly contained in the outer +one, or whether the outer one sources a script or calls a function containing +the inner try conditional. + +When none of the active try conditionals catches an exception, just their +finally clauses are executed. Thereafter, the script processing terminates. +An error message is displayed in case of an uncaught exception explicitly +thrown by a ":throw" command. For uncaught error and interrupt exceptions +implicitly raised by Vim, the error message(s) or interrupt message are shown +as usual. + +For examples see |throw-catch|. + + +EXAMINING EXCEPTION HANDLING CODE *except-examine* + +Exception handling code can get tricky. If you are in doubt what happens, set +'verbose' to 13 or use the ":13verbose" command modifier when sourcing your +script file. Then you see when an exception is thrown, discarded, caught, or +finished. When using a verbosity level of at least 14, things pending in +a finally clause are also shown. This information is also given in debug mode +(see |debug-scripts|). + + +THROWING AND CATCHING EXCEPTIONS *throw-catch* + +You can throw any number or string as an exception. Use the |:throw| command +and pass the value to be thrown as argument: > + :throw 4711 + :throw "string" +< *throw-expression* +You can also specify an expression argument. The expression is then evaluated +first, and the result is thrown: > + :throw 4705 + strlen("string") + :throw strpart("strings", 0, 6) + +An exception might be thrown during evaluation of the argument of the ":throw" +command. Unless it is caught there, the expression evaluation is abandoned. +The ":throw" command then does not throw a new exception. + Example: > + + :function! Foo(arg) + : try + : throw a:arg + : catch /foo/ + : endtry + : return 1 + :endfunction + : + :function! Bar() + : echo "in Bar" + : return 4710 + :endfunction + : + :throw Foo("arrgh") + Bar() + +This throws "arrgh", and "in Bar" is not displayed since Bar() is not +executed. > + :throw Foo("foo") + Bar() +however displays "in Bar" and throws 4711. + +Any other command that takes an expression as argument might also be +abandoned by an (uncaught) exception during the expression evaluation. The +exception is then propagated to the caller of the command. + Example: > + + :if Foo("arrgh") + : echo "then" + :else + : echo "else" + :endif + +Here neither of "then" or "else" is displayed. + + *catch-order* +Exceptions can be caught by a try conditional with one or more |:catch| +commands, see |try-conditionals|. The values to be caught by each ":catch" +command can be specified as a pattern argument. The subsequent catch clause +gets executed when a matching exception is caught. + Example: > + + :function! Foo(value) + : try + : throw a:value + : catch /^\d\+$/ + : echo "Number thrown" + : catch /.*/ + : echo "String thrown" + : endtry + :endfunction + : + :call Foo(0x1267) + :call Foo('string') + +The first call to Foo() displays "Number thrown", the second "String thrown". +An exception is matched against the ":catch" commands in the order they are +specified. Only the first match counts. So you should place the more +specific ":catch" first. The following order does not make sense: > + + : catch /.*/ + : echo "String thrown" + : catch /^\d\+$/ + : echo "Number thrown" + +The first ":catch" here matches always, so that the second catch clause is +never taken. + + *throw-variables* +If you catch an exception by a general pattern, you may access the exact value +in the variable |v:exception|: > + + : catch /^\d\+$/ + : echo "Number thrown. Value is" v:exception + +You may also be interested where an exception was thrown. This is stored in +|v:throwpoint|. Note that "v:exception" and "v:throwpoint" are valid for the +exception most recently caught as long it is not finished. + Example: > + + :function! Caught() + : if v:exception != "" + : echo 'Caught "' . v:exception . '" in ' . v:throwpoint + : else + : echo 'Nothing caught' + : endif + :endfunction + : + :function! Foo() + : try + : try + : try + : throw 4711 + : finally + : call Caught() + : endtry + : catch /.*/ + : call Caught() + : throw "oops" + : endtry + : catch /.*/ + : call Caught() + : finally + : call Caught() + : endtry + :endfunction + : + :call Foo() + +This displays > + + Nothing caught + Caught "4711" in function Foo, line 4 + Caught "oops" in function Foo, line 10 + Nothing caught + +A practical example: The following command ":LineNumber" displays the line +number in the script or function where it has been used: > + + :function! LineNumber() + : return substitute(v:throwpoint, '.*\D\(\d\+\).*', '\1', "") + :endfunction + :command! LineNumber try | throw "" | catch | echo LineNumber() | endtry +< + *try-nested* +An exception that is not caught by a try conditional can be caught by +a surrounding try conditional: > + + :try + : try + : throw "foo" + : catch /foobar/ + : echo "foobar" + : finally + : echo "inner finally" + : endtry + :catch /foo/ + : echo "foo" + :endtry + +The inner try conditional does not catch the exception, just its finally +clause is executed. The exception is then caught by the outer try +conditional. The example displays "inner finally" and then "foo". + + *throw-from-catch* +You can catch an exception and throw a new one to be caught elsewhere from the +catch clause: > + + :function! Foo() + : throw "foo" + :endfunction + : + :function! Bar() + : try + : call Foo() + : catch /foo/ + : echo "Caught foo, throw bar" + : throw "bar" + : endtry + :endfunction + : + :try + : call Bar() + :catch /.*/ + : echo "Caught" v:exception + :endtry + +This displays "Caught foo, throw bar" and then "Caught bar". + + *rethrow* +There is no real rethrow in the Vim script language, but you may throw +"v:exception" instead: > + + :function! Bar() + : try + : call Foo() + : catch /.*/ + : echo "Rethrow" v:exception + : throw v:exception + : endtry + :endfunction +< *try-echoerr* +Note that this method cannot be used to "rethrow" Vim error or interrupt +exceptions, because it is not possible to fake Vim internal exceptions. +Trying so causes an error exception. You should throw your own exception +denoting the situation. If you want to cause a Vim error exception containing +the original error exception value, you can use the |:echoerr| command: > + + :try + : try + : asdf + : catch /.*/ + : echoerr v:exception + : endtry + :catch /.*/ + : echo v:exception + :endtry + +This code displays + + Vim(echoerr):Vim:E492: Not an editor command: asdf ~ + + +CLEANUP CODE *try-finally* + +Scripts often change global settings and restore them at their end. If the +user however interrupts the script by pressing CTRL-C, the settings remain in +an inconsistent state. The same may happen to you in the development phase of +a script when an error occurs or you explicitly throw an exception without +catching it. You can solve these problems by using a try conditional with +a finally clause for restoring the settings. Its execution is guaranteed on +normal control flow, on error, on an explicit ":throw", and on interrupt. +(Note that errors and interrupts from inside the try conditional are converted +to exceptions. When not caught, they terminate the script after the finally +clause has been executed.) +Example: > + + :try + : let s:saved_ts = &ts + : set ts=17 + : + : " Do the hard work here. + : + :finally + : let &ts = s:saved_ts + : unlet s:saved_ts + :endtry + +This method should be used locally whenever a function or part of a script +changes global settings which need to be restored on failure or normal exit of +that function or script part. + + *break-finally* +Cleanup code works also when the try block or a catch clause is left by +a ":continue", ":break", ":return", or ":finish". + Example: > + + :let first = 1 + :while 1 + : try + : if first + : echo "first" + : let first = 0 + : continue + : else + : throw "second" + : endif + : catch /.*/ + : echo v:exception + : break + : finally + : echo "cleanup" + : endtry + : echo "still in while" + :endwhile + :echo "end" + +This displays "first", "cleanup", "second", "cleanup", and "end". > + + :function! Foo() + : try + : return 4711 + : finally + : echo "cleanup\n" + : endtry + : echo "Foo still active" + :endfunction + : + :echo Foo() "returned by Foo" + +This displays "cleanup" and "4711 returned by Foo". You don't need to add an +extra ":return" in the finally clause. (Above all, this would override the +return value.) + + *except-from-finally* +Using either of ":continue", ":break", ":return", ":finish", or ":throw" in +a finally clause is possible, but not recommended since it abandons the +cleanup actions for the try conditional. But, of course, interrupt and error +exceptions might get raised from a finally clause. + Example where an error in the finally clause stops an interrupt from +working correctly: > + + :try + : try + : echo "Press CTRL-C for interrupt" + : while 1 + : endwhile + : finally + : unlet novar + : endtry + :catch /novar/ + :endtry + :echo "Script still running" + :sleep 1 + +If you need to put commands that could fail into a finally clause, you should +think about catching or ignoring the errors in these commands, see +|catch-errors| and |ignore-errors|. + + +CATCHING ERRORS *catch-errors* + +If you want to catch specific errors, you just have to put the code to be +watched in a try block and add a catch clause for the error message. The +presence of the try conditional causes all errors to be converted to an +exception. No message is displayed and |v:errmsg| is not set then. To find +the right pattern for the ":catch" command, you have to know how the format of +the error exception is. + Error exceptions have the following format: > + + Vim({cmdname}):{errmsg} +or > + Vim:{errmsg} + +{cmdname} is the name of the command that failed; the second form is used when +the command name is not known. {errmsg} is the error message usually produced +when the error occurs outside try conditionals. It always begins with +a capital "E", followed by a two or three-digit error number, a colon, and +a space. + +Examples: + +The command > + :unlet novar +normally produces the error message > + E108: No such variable: "novar" +which is converted inside try conditionals to an exception > + Vim(unlet):E108: No such variable: "novar" + +The command > + :dwim +normally produces the error message > + E492: Not an editor command: dwim +which is converted inside try conditionals to an exception > + Vim:E492: Not an editor command: dwim + +You can catch all ":unlet" errors by a > + :catch /^Vim(unlet):/ +or all errors for misspelled command names by a > + :catch /^Vim:E492:/ + +Some error messages may be produced by different commands: > + :function nofunc +and > + :delfunction nofunc +both produce the error message > + E128: Function name must start with a capital: nofunc +which is converted inside try conditionals to an exception > + Vim(function):E128: Function name must start with a capital: nofunc +or > + Vim(delfunction):E128: Function name must start with a capital: nofunc +respectively. You can catch the error by its number independently on the +command that caused it if you use the following pattern: > + :catch /^Vim(\a\+):E128:/ + +Some commands like > + :let x = novar +produce multiple error messages, here: > + E121: Undefined variable: novar + E15: Invalid expression: novar +Only the first is used for the exception value, since it is the most specific +one (see |except-several-errors|). So you can catch it by > + :catch /^Vim(\a\+):E121:/ + +You can catch all errors related to the name "nofunc" by > + :catch /\/ + +You can catch all Vim errors in the ":write" and ":read" commands by > + :catch /^Vim(\(write\|read\)):E\d\+:/ + +You can catch all Vim errors by the pattern > + :catch /^Vim\((\a\+)\)\=:E\d\+:/ +< + *catch-text* +NOTE: You should never catch the error message text itself: > + :catch /No such variable/ +only works in the english locale, but not when the user has selected +a different language by the |:language| command. It is however helpful to +cite the message text in a comment: > + :catch /^Vim(\a\+):E108:/ " No such variable + + +IGNORING ERRORS *ignore-errors* + +You can ignore errors in a specific Vim command by catching them locally: > + + :try + : write + :catch + :endtry + +But you are strongly recommended NOT to use this simple form, since it could +catch more than you want. With the ":write" command, some autocommands could +be executed and cause errors not related to writing, for instance: > + + :au BufWritePre * unlet novar + +There could even be such errors you are not responsible for as a script +writer: a user of your script might have defined such autocommands. You would +then hide the error from the user. + It is much better to use > + + :try + : write + :catch /^Vim(write):/ + :endtry + +which only catches real write errors. So catch only what you'd like to ignore +intentionally. + +For a single command that does not cause execution of autocommands, you could +even suppress the conversion of errors to exceptions by the ":silent!" +command: > + :silent! nunmap k +This works also when a try conditional is active. + + +CATCHING INTERRUPTS *catch-interrupt* + +When there are active try conditionals, an interrupt (CTRL-C) is converted to +the exception "Vim:Interrupt". You can catch it like every exception. The +script is not terminated, then. + Example: > + + :function! TASK1() + : sleep 10 + :endfunction + + :function! TASK2() + : sleep 20 + :endfunction + + :while 1 + : let command = input("Type a command: ") + : try + : if command == "" + : continue + : elseif command == "END" + : break + : elseif command == "TASK1" + : call TASK1() + : elseif command == "TASK2" + : call TASK2() + : else + : echo "\nIllegal command:" command + : continue + : endif + : catch /^Vim:Interrupt$/ + : echo "\nCommand interrupted" + : " Caught the interrupt. Continue with next prompt. + : endtry + :endwhile + +You can interrupt a task here by pressing CTRL-C; the script then asks for +a new command. If you press CTRL-C at the prompt, the script is terminated. + +For testing what happens when CTRL-C would be pressed on a specific line in +your script, use the debug mode and execute the |>quit| or |>interrupt| +command on that line. See |debug-scripts|. + + +CATCHING ALL *catch-all* + +The commands > + + :catch /.*/ + :catch // + :catch + +catch everything, error exceptions, interrupt exceptions and exceptions +explicitly thrown by the |:throw| command. This is useful at the top level of +a script in order to catch unexpected things. + Example: > + + :try + : + : " do the hard work here + : + :catch /MyException/ + : + : " handle known problem + : + :catch /^Vim:Interrupt$/ + : echo "Script interrupted" + :catch /.*/ + : echo "Internal error (" . v:exception . ")" + : echo " - occurred at " . v:throwpoint + :endtry + :" end of script + +Note: Catching all might catch more things than you want. Thus, you are +strongly encouraged to catch only for problems that you can really handle by +specifying a pattern argument to the ":catch". + Example: Catching all could make it nearly impossible to interrupt a script +by pressing CTRL-C: > + + :while 1 + : try + : sleep 1 + : catch + : endtry + :endwhile + + +EXCEPTIONS AND AUTOCOMMANDS *except-autocmd* + +Exceptions may be used during execution of autocommands. Example: > + + :autocmd User x try + :autocmd User x throw "Oops!" + :autocmd User x catch + :autocmd User x echo v:exception + :autocmd User x endtry + :autocmd User x throw "Arrgh!" + :autocmd User x echo "Should not be displayed" + : + :try + : doautocmd User x + :catch + : echo v:exception + :endtry + +This displays "Oops!" and "Arrgh!". + + *except-autocmd-Pre* +For some commands, autocommands get executed before the main action of the +command takes place. If an exception is thrown and not caught in the sequence +of autocommands, the sequence and the command that caused its execution are +abandoned and the exception is propagated to the caller of the command. + Example: > + + :autocmd BufWritePre * throw "FAIL" + :autocmd BufWritePre * echo "Should not be displayed" + : + :try + : write + :catch + : echo "Caught:" v:exception "from" v:throwpoint + :endtry + +Here, the ":write" command does not write the file currently being edited (as +you can see by checking 'modified'), since the exception from the BufWritePre +autocommand abandons the ":write". The exception is then caught and the +script displays: > + + Caught: FAIL from BufWrite Auto commands for "*" +< + *except-autocmd-Post* +For some commands, autocommands get executed after the main action of the +command has taken place. If this main action fails and the command is inside +an active try conditional, the autocommands are skipped and an error exception +is thrown that can be caught by the caller of the command. + Example: > + + :autocmd BufWritePost * echo "File successfully written!" + : + :try + : write /i/m/p/o/s/s/i/b/l/e + :catch + : echo v:exception + :endtry + +This just displays: > + + Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e) + +If you really need to execute the autocommands even when the main action +fails, trigger the event from the catch clause. + Example: > + + :autocmd BufWritePre * set noreadonly + :autocmd BufWritePost * set readonly + : + :try + : write /i/m/p/o/s/s/i/b/l/e + :catch + : doautocmd BufWritePost /i/m/p/o/s/s/i/b/l/e + :endtry +< +You can also use ":silent!": > + + :let x = "ok" + :let v:errmsg = "" + :autocmd BufWritePost * if v:errmsg != "" + :autocmd BufWritePost * let x = "after fail" + :autocmd BufWritePost * endif + :try + : silent! write /i/m/p/o/s/s/i/b/l/e + :catch + :endtry + :echo x + +This displays "after fail". + +If the main action of the command does not fail, exceptions from the +autocommands will be catchable by the caller of the command: > + + :autocmd BufWritePost * throw ":-(" + :autocmd BufWritePost * echo "Should not be displayed" + : + :try + : write + :catch + : echo v:exception + :endtry +< + *except-autocmd-Cmd* +For some commands, the normal action can be replaced by a sequence of +autocommands. Exceptions from that sequence will be catchable by the caller +of the command. + Example: For the ":write" command, the caller cannot know whether the file +had actually been written when the exception occurred. You need to tell it in +some way. > + + :if !exists("cnt") + : let cnt = 0 + : + : autocmd BufWriteCmd * if &modified + : autocmd BufWriteCmd * let cnt = cnt + 1 + : autocmd BufWriteCmd * if cnt % 3 == 2 + : autocmd BufWriteCmd * throw "BufWriteCmdError" + : autocmd BufWriteCmd * endif + : autocmd BufWriteCmd * write | set nomodified + : autocmd BufWriteCmd * if cnt % 3 == 0 + : autocmd BufWriteCmd * throw "BufWriteCmdError" + : autocmd BufWriteCmd * endif + : autocmd BufWriteCmd * echo "File successfully written!" + : autocmd BufWriteCmd * endif + :endif + : + :try + : write + :catch /^BufWriteCmdError$/ + : if &modified + : echo "Error on writing (file contents not changed)" + : else + : echo "Error after writing" + : endif + :catch /^Vim(write):/ + : echo "Error on writing" + :endtry + +When this script is sourced several times after making changes, it displays +first > + File successfully written! +then > + Error on writing (file contents not changed) +then > + Error after writing +etc. + + *except-autocmd-ill* +You cannot spread a try conditional over autocommands for different events. +The following code is ill-formed: > + + :autocmd BufWritePre * try + : + :autocmd BufWritePost * catch + :autocmd BufWritePost * echo v:exception + :autocmd BufWritePost * endtry + : + :write + + +EXCEPTION HIERARCHIES AND PARAMETERIZED EXCEPTIONS *except-hier-param* + +Some programming languages allow to use hierarchies of exception classes or to +pass additional information with the object of an exception class. You can do +similar things in Vim. + In order to throw an exception from a hierarchy, just throw the complete +class name with the components separated by a colon, for instance throw the +string "EXCEPT:MATHERR:OVERFLOW" for an overflow in a mathematical library. + When you want to pass additional information with your exception class, add +it in parentheses, for instance throw the string "EXCEPT:IO:WRITEERR(myfile)" +for an error when writing "myfile". + With the appropriate patterns in the ":catch" command, you can catch for +base classes or derived classes of your hierarchy. Additional information in +parentheses can be cut out from |v:exception| with the ":substitute" command. + Example: > + + :function! CheckRange(a, func) + : if a:a < 0 + : throw "EXCEPT:MATHERR:RANGE(" . a:func . ")" + : endif + :endfunction + : + :function! Add(a, b) + : call CheckRange(a:a, "Add") + : call CheckRange(a:b, "Add") + : let c = a:a + a:b + : if c < 0 + : throw "EXCEPT:MATHERR:OVERFLOW" + : endif + : return c + :endfunction + : + :function! Div(a, b) + : call CheckRange(a:a, "Div") + : call CheckRange(a:b, "Div") + : if (a:b == 0) + : throw "EXCEPT:MATHERR:ZERODIV" + : endif + : return a:a / a:b + :endfunction + : + :function! Write(file) + : try + : execute "write" a:file + : catch /^Vim(write):/ + : throw "EXCEPT:IO(" . getcwd() . ", " . a:file . "):WRITEERR" + : endtry + :endfunction + : + :try + : + : " something with arithmetics and I/O + : + :catch /^EXCEPT:MATHERR:RANGE/ + : let function = substitute(v:exception, '.*(\(\a\+\)).*', '\1', "") + : echo "Range error in" function + : + :catch /^EXCEPT:MATHERR/ " catches OVERFLOW and ZERODIV + : echo "Math error" + : + :catch /^EXCEPT:IO/ + : let dir = substitute(v:exception, '.*(\(.\+\),\s*.\+).*', '\1', "") + : let file = substitute(v:exception, '.*(.\+,\s*\(.\+\)).*', '\1', "") + : if file !~ '^/' + : let file = dir . "/" . file + : endif + : echo 'I/O error for "' . file . '"' + : + :catch /^EXCEPT/ + : echo "Unspecified error" + : + :endtry + +The exceptions raised by Vim itself (on error or when pressing CTRL-C) use +a flat hierarchy: they are all in the "Vim" class. You cannot throw yourself +exceptions with the "Vim" prefix; they are reserved for Vim. + Vim error exceptions are parameterized with the name of the command that +failed, if known. See |catch-errors|. + + +PECULIARITIES + *except-compat* +The exception handling concept requires that the command sequence causing the +exception is aborted immediately and control is transferred to finally clauses +and/or a catch clause. + +In the Vim script language there are cases where scripts and functions +continue after an error: in functions without the "abort" flag or in a command +after ":silent!", control flow goes to the following line, and outside +functions, control flow goes to the line following the outermost ":endwhile" +or ":endif". On the other hand, errors should be catchable as exceptions +(thus, requiring the immediate abortion). + +This problem has been solved by converting errors to exceptions and using +immediate abortion (if not suppressed by ":silent!") only when a try +conditional is active. This is no restriction since an (error) exception can +be caught only from an active try conditional. If you want an immediate +termination without catching the error, just use a try conditional without +catch clause. (You can cause cleanup code being executed before termination +by specifying a finally clause.) + +When no try conditional is active, the usual abortion and continuation +behavior is used instead of immediate abortion. This ensures compatibility of +scripts written for Vim 6.1 and earlier. + +However, when sourcing an existing script that does not use exception handling +commands (or when calling one of its functions) from inside an active try +conditional of a new script, you might change the control flow of the existing +script on error. You get the immediate abortion on error and can catch the +error in the new script. If however the sourced script suppresses error +messages by using the ":silent!" command (checking for errors by testing +|v:errmsg| if appropriate), its execution path is not changed. The error is +not converted to an exception. (See |:silent|.) So the only remaining cause +where this happens is for scripts that don't care about errors and produce +error messages. You probably won't want to use such code from your new +scripts. + + *except-syntax-err* +Syntax errors in the exception handling commands are never caught by any of +the ":catch" commands of the try conditional they belong to. Its finally +clauses, however, is executed. + Example: > + + :try + : try + : throw 4711 + : catch /\(/ + : echo "in catch with syntax error" + : catch + : echo "inner catch-all" + : finally + : echo "inner finally" + : endtry + :catch + : echo 'outer catch-all caught "' . v:exception . '"' + : finally + : echo "outer finally" + :endtry + +This displays: > + inner finally + outer catch-all caught "Vim(catch):E54: Unmatched \(" + outer finally +The original exception is discarded and an error exception is raised, instead. + + *except-single-line* +The ":try", ":catch", ":finally", and ":endtry" commands can be put on +a single line, but then syntax errors may make it difficult to recognize the +"catch" line, thus you better avoid this. + Example: > + :try | unlet! foo # | catch | endtry +raises an error exception for the trailing characters after the ":unlet!" +argument, but does not see the ":catch" and ":endtry" commands, so that the +error exception is discarded and the "E488: Trailing characters" message gets +displayed. + + *except-several-errors* +When several errors appear in a single command, the first error message is +usually the most specific one and therefor converted to the error exception. + Example: > + echo novar +causes > + E121: Undefined variable: novar + E15: Invalid expression: novar +The value of the error exception inside try conditionals is: > + Vim(echo):E121: Undefined variable: novar +< *except-syntax-error* +But when a syntax error is detected after a normal error in the same command, +the syntax error is used for the exception being thrown. + Example: > + unlet novar # +causes > + E108: No such variable: "novar" + E488: Trailing characters +The value of the error exception inside try conditionals is: > + Vim(unlet):E488: Trailing characters +This is done because the syntax error might change the execution path in a way +not intended by the user. Example: > + try + try | unlet novar # | catch | echo v:exception | endtry + catch /.*/ + echo "outer catch:" v:exception + endtry +This displays "outer catch: Vim(unlet):E488: Trailing characters", and then +a "E600: Missing :endtry" error message is given, see |except-single-line|. + +============================================================================== +9. Examples *eval-examples* + +Printing in Hex ~ +> + :" The function Nr2Hex() returns the Hex string of a number. + :func Nr2Hex(nr) + : let n = a:nr + : let r = "" + : while n + : let r = '0123456789ABCDEF'[n % 16] . r + : let n = n / 16 + : endwhile + : return r + :endfunc + + :" The function String2Hex() converts each character in a string to a two + :" character Hex string. + :func String2Hex(str) + : let out = '' + : let ix = 0 + : while ix < strlen(a:str) + : let out = out . Nr2Hex(char2nr(a:str[ix])) + : let ix = ix + 1 + : endwhile + : return out + :endfunc + +Example of its use: > + :echo Nr2Hex(32) +result: "20" > + :echo String2Hex("32") +result: "3332" + + +Sorting lines (by Robert Webb) ~ + +Here is a Vim script to sort lines. Highlight the lines in Vim and type +":Sort". This doesn't call any external programs so it'll work on any +platform. The function Sort() actually takes the name of a comparison +function as its argument, like qsort() does in C. So you could supply it +with different comparison functions in order to sort according to date etc. +> + :" Function for use with Sort(), to compare two strings. + :func! Strcmp(str1, str2) + : if (a:str1 < a:str2) + : return -1 + : elseif (a:str1 > a:str2) + : return 1 + : else + : return 0 + : endif + :endfunction + + :" Sort lines. SortR() is called recursively. + :func! SortR(start, end, cmp) + : if (a:start >= a:end) + : return + : endif + : let partition = a:start - 1 + : let middle = partition + : let partStr = getline((a:start + a:end) / 2) + : let i = a:start + : while (i <= a:end) + : let str = getline(i) + : exec "let result = " . a:cmp . "(str, partStr)" + : if (result <= 0) + : " Need to put it before the partition. Swap lines i and partition. + : let partition = partition + 1 + : if (result == 0) + : let middle = partition + : endif + : if (i != partition) + : let str2 = getline(partition) + : call setline(i, str2) + : call setline(partition, str) + : endif + : endif + : let i = i + 1 + : endwhile + + : " Now we have a pointer to the "middle" element, as far as partitioning + : " goes, which could be anywhere before the partition. Make sure it is at + : " the end of the partition. + : if (middle != partition) + : let str = getline(middle) + : let str2 = getline(partition) + : call setline(middle, str2) + : call setline(partition, str) + : endif + : call SortR(a:start, partition - 1, a:cmp) + : call SortR(partition + 1, a:end, a:cmp) + :endfunc + + :" To Sort a range of lines, pass the range to Sort() along with the name of a + :" function that will compare two lines. + :func! Sort(cmp) range + : call SortR(a:firstline, a:lastline, a:cmp) + :endfunc + + :" :Sort takes a range of lines and sorts them. + :command! -nargs=0 -range Sort ,call Sort("Strcmp") +< + *sscanf* +There is no sscanf() function in Vim. If you need to extract parts from a +line, you can use matchstr() and substitute() to do it. This example shows +how to get the file name, line number and column number out of a line like +"foobar.txt, 123, 45". > + :" Set up the match bit + :let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)' + :"get the part matching the whole expression + :let l = matchstr(line, mx) + :"get each item out of the match + :let file = substitute(l, mx, '\1', '') + :let lnum = substitute(l, mx, '\2', '') + :let col = substitute(l, mx, '\3', '') + +The input is in the variable "line", the results in the variables "file", +"lnum" and "col". (idea from Michael Geddes) + +============================================================================== +10. No +eval feature *no-eval-feature* + +When the |+eval| feature was disabled at compile time, none of the expression +evaluation commands are available. To prevent this from causing Vim scripts +to generate all kinds of errors, the ":if" and ":endif" commands are still +recognized, though the argument of the ":if" and everything between the ":if" +and the matching ":endif" is ignored. Nesting of ":if" blocks is allowed, but +only if the commands are at the start of the line. The ":else" command is not +recognized. + +Example of how to avoid executing commands when the |+eval| feature is +missing: > + + :if 1 + : echo "Expression evaluation is compiled in" + :else + : echo "You will _never_ see this message" + :endif + +============================================================================== +11. The sandbox *eval-sandbox* *sandbox* *E48* + +The 'foldexpr', 'includeexpr', 'indentexpr', 'statusline' and 'foldtext' +options are evaluated in a sandbox. This means that you are protected from +these expressions having nasty side effects. This gives some safety for when +these options are set from a modeline. It is also used when the command from +a tags file is executed. +This is not guaranteed 100% secure, but it should block most attacks. + +These items are not allowed in the sandbox: + - changing the buffer text + - defining or changing mapping, autocommands, functions, user commands + - setting certain options (see |option-summary|) + - executing a shell command + - reading or writing a file + - jumping to another buffer or editing a file + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/evim.1 b/en/evim.1 new file mode 100644 index 000000000..bd25ed6eb --- /dev/null +++ b/en/evim.1 @@ -0,0 +1,49 @@ +.TH EVIM 1 "2002 February 16" +.SH NAME +evim \- easy Vim, edit a file with Vim and setup for modeless editing +.SH SYNOPSIS +.br +.B evim +[options] [file ..] +.br +.B eview +.SH DESCRIPTION +.B eVim +starts +.B Vim +and sets options to make it behave like a modeless editor. +This is still Vim but used as a point-and-click editor. +This feels a lot like using Notepad on MS-Windows. +.B eVim +will always run in the GUI, to enable the use of menus and toolbar. +.PP +Only to be used for people who really can't work with Vim in the normal way. +Editing will be much less efficient. +.PP +.B eview +is the same, but starts in read-only mode. It works just like evim -R. +.PP +See vim(1) for details about Vim, options, etc. +.PP +The 'insertmode' option is set to be able to type text directly. +.br +Mappings are setup to make Copy and Paste work with the MS-Windows keys. +CTRL-X cuts text, CTRL-C copies text and CTRL-V pastes text. +Use CTRL-Q to obtain the original meaning of CTRL-V. +.SH OPTIONS +See vim(1). +.SH FILES +.TP 15 +/usr/local/lib/vim/evim.vim +The script loaded to initialize eVim. +.SH AKA +Also Known As "Vim for gumbies". +When using evim you are expected to take a handkerchief, +make a knot in each corner and wear it on your head. +.SH SEE ALSO +vim(1) +.SH AUTHOR +Most of +.B Vim +was made by Bram Moolenaar, with a lot of help from others. +See the Help/Credits menu. diff --git a/en/farsi.txt b/en/farsi.txt new file mode 100644 index 000000000..47872e255 --- /dev/null +++ b/en/farsi.txt @@ -0,0 +1,269 @@ +*farsi.txt* For Vim version 6.3. Last change: 2002 Oct 29 + + + VIM REFERENCE MANUAL by Mortaza Ghassab Shiran + + +Right to Left and Farsi Mapping for Vim *farsi* *Farsi* + +{Vi does not have any of these commands} + + *E27* +In order to use right-to-left and Farsi mapping support, it is necessary to +compile Vim with the |+farsi| feature. + +These functions have been made by Mortaza G. Shiran + + +Introduction +------------ +In right-to-left oriented files the characters appear on the screen from right +to left. This kind of file is most useful when writing Farsi documents, +composing faxes or writing Farsi memos. + +The commands, prompts and help files are not in Farsi, therefore the user +interface remains the standard Vi interface. + + +Highlights +---------- +o Editing left-to-right files as in the original Vim, no change. + +o Viewing and editing files in right-to-left windows. File orientation is + per window, so it is possible to view the same file in right-to-left and + left-to-right modes, simultaneously. + +o Compatibility to the original Vim. Almost all features work in + right-to-left mode (see bugs below). + +o Changing keyboard mapping and reverse insert modes using a single + command. + +o Backing from reverse insert mode to the correct place in the file + (if possible). + +o While in Farsi mode, numbers are entered from left to right. Upon entering + a none number character, that character will be inserted just into the + left of the last number. + +o No special terminal with right-to-left capabilities is required. The + right-to-left changes are completely hardware independent. Only + Farsi font is necessary. + +o Farsi keymapping on the command line in reverse insert mode. + +o Toggling between left-to-right and right-to-left via F8 function key. + +o Toggling between Farsi ISIR-3342 standard encoding and VIM Farsi via F9 + function key. Since this makes sense only for the text written in + right-to-left mode, this function is also supported only in right-to-left + mode. + +Farsi Fonts *farsi fonts* +----------- + +If the "extra" archive has been unpacked, the following files are found in the +subdirectories of the '$VIM/farsi' directory: + + + far-a01.pcf X Windows fonts for Unix including Linux systems + + far-a01.bf X Windows fonts for SunOs + + far-a01.f16 a screen fonts for Unix including Linux systems + + far-a01.fon a monospaced fonts for Windows NT/95/98 + + far-a01.com a screen fonts for DOS + + +Font Installation +----------------- + +o Installation of fonts for MS Window systems (NT/95/98) + + From 'Control Panel' folder, start the 'Fonts' program. Then from 'file' + menu item select 'Install New Fonts ...'. Browse and select the + 'far-a01.fon', then follow the installation guide. + NOTE: several people have reported that this does not work. The solution + is unknown. + +o Installation of fonts for X Window systems (Unix/Linux) + + Depending on your system, copy far-a01.pcf.Z or far-a01.pcf.gz into a + directory of your choice. Change to the directory containing the Farsi + fonts and execute the following commands: + + > mkfontdir + > xset +fp path_name_of_farsi_fonts_directory + +o Installation of fonts for X Window systems (SunOs) + + Copy far-a01.bf font into a directory of your choice. + Change to the directory containing the far-a01.fb fonts and + execute the following commands: + + > fldfamily + > xset +fp path_name_of_fonts_directory + +o Installation of ASCII screen fonts (Unix/Linux) + + For Linux system, copy the far-a01.f16 fonts into /usr/lib/kbd/consolefonts + directory and execute the setfont program as "setfont far-a01.f16". For + other systems (e.g. SCO Unix), please refer to the fonts installation + section of your system administration manuals. + +o Installation of ASCII screen fonts (DOS) + + After system power on, prior to the first use of VIM, upload the Farsi + fonts by executing the far-a01.com font uploading program. + + +Usage +----- +Prior to starting VIM, the environment in which VIM can run in Farsi mode, +must be set. In addition to installation of Farsi fonts, following points +refer to some of the system environments, which you may need to set: +Key code mapping, loading graphic card in ASCII screen mode, setting the IO +driver in 8 bit clean mode ... . + +o Setting the Farsi fonts + + + For VIM GUI set the 'guifont' to far-a01. This is done by entering + ':set guifont=far-a01' in the VIM window. + + You can have 'guifont' set to far-a01 by VIM during the VIM startup + by appending the ':set guifont=far-a01' into your .vimrc file + (in case of NT/95/98 platforms _vimrc). + + Under the X Window environment, you can also start the VIM with + '-fn far-a01' option. + + + For the VIM within a xterm, start a xterm with the Farsi fonts (e.g. + kterm -fn far-a01). Then start the VIM inside the kterm. + + + For VIM under DOS, prior to the first usage of VIM, upload the Farsi + fonts by executing the far-a01.com fonts uploading program. + +o Farsi Keymapping Activation + + To activate the Farsi keymapping, set either 'altkeymap' or 'fkmap'. + This is done by entering ':set akm' or ':set fk' in the VIM window. + You can have 'altkeymap' or 'fkmap' set as default by appending ':set akm' + or ':set fk' in your .vimrc file or _vimrc in case of NT/95/98 platforms. + + To turn off the Farsi keymapping as a default second language keymapping, + reset the 'altkeymap' by entering ':set noakm'. + +o right-to-left Farsi Mode + + By default VIM starts in Left-to-right mode. Following are ways to change + the window orientation: + + + Start the VIM with -F option (e.g. vim -F ... ). + + + Use F8 function key to toggle between left-to-right and right-to-left. + + + While in Left-to-right mode, enter 'set rl' in the command line ('rl' is + the abbreviation for rightleft). + + + Put the 'set rl' line in your '.vimrc' file to start the VIM in + right-to-left mode permanently. + +Encoding +-------- + +The letter encoding used is the VIM extended ISIR-3342 standard with a built +in function to convert between VIM extended ISIR-3342 and ISIR-3342 standard. + +For document portability reasons, the letter encoding is kept the same across +different platforms (i.e. UNIX's, NT/95/98, MS DOS, ...). + + +o Keyboard + + + CTRL-_ in insert/replace modes toggles between Farsi(akm)/Latin + mode as follows: + + + CTRL-_ moves the cursor to the end of the typed text in edit mode. + + + CTRL-_ in command mode only toggles keyboard mapping between Farsi(akm)/ + Latin. The Farsi text is then entered in reverse insert mode. + + + F8 - Toggles between left-to-right and right-to-left. + + + F9 - Toggles the encoding between ISIR-3342 standard and VIM extended + ISIR-3342 (supported only in right-to-left mode). + + + Keyboard mapping is based on the Iranian ISIRI-2901 standard. + Following table shows the keyboard mapping while Farsi(akm) mode set: + + ------------------------------------- + ` 1 2 3 4 5 6 7 8 9 0 - = + � � � � � � � � � � � � � + ------------------------------------- + ~ ! @ # $ % ^ & * ( ) _ + + ~ � � � � � � � � � � � � + ------------------------------------- + q w e r t z u i o p [ ] + � � � � � � � � � � � � + ------------------------------------- + Q W E R T Z U I O P { } + � � � � � � � � [ ] { } + ------------------------------------- + a s d f g h j k l ; ' \ + � � � � � � � � � � � � + ------------------------------------- + A S D F G H J K L : " | + � �� � � � � � � � � � � + ------------------------------------- + < y x c v b n m , . / + � � � � � � � � � � � + ------------------------------------- + > Y X C V B N M < > ? + � � � � � � � � � � � + ------------------------------------- + +Note: + � stands for Farsi PSP (break without space) + + � stands for Farsi PCN (for HAMZE attribute ) + +Restrictions +------------ + +o In insert/replace mode and fkmap (Farsi mode) set, CTRL-B is not + supported. + +o If you change the character mapping between Latin/Farsi, the redo buffer + will be reset (emptied). That is, redo is valid and will function (using + '.') only within the mode you are in. + +o While numbers are entered in Farsi mode, the redo buffer will be reset + (emptied). That is, you can not redo the last changes (using '.') after + entering numbers. + +o While in left-to-right and Farsi mode set, CTRL-R is not supported. + +o While in right-to-left mode, the search on 'Latin' pattern does not work, + except if you enter the Latin search pattern in reverse. + +o In the command mode, there is no support for entering the numbers from left + to right and also for the sake of the flexibility the keymapping logic is + restricted. + +o Under X Window environment, if you want to run the VIM within a xterm + terminal emulator and Farsi mode set, you need to have an ANSI compatible + xterm terminal emulator. This is because the letter codes above 128 decimal + have certain meanings in the standard xterm terminal emulator. + + Note: Under X Window environment, VIM GUI works fine in Farsi mode. + This eliminates the need of any xterm terminal emulator. + + +Bugs +---- +While in insert/replace and Farsi mode set, if you repeatedly change the +cursor position (via cursor movement) and enter new text and then try to undo +the last change, the undo will lag one change behind. But as you continue to +undo, you will reach the original line of text. You can also use U to undo all +changes made in the current line. + +For more information about the bugs refer to rileft.txt. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/filetype.txt b/en/filetype.txt new file mode 100644 index 000000000..e5d473e7e --- /dev/null +++ b/en/filetype.txt @@ -0,0 +1,529 @@ +*filetype.txt* For Vim version 6.3. Last change: 2004 May 05 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Filetypes *filetype* *file-type* + +1. Filetypes |filetypes| +2. Filetype plugin |filetype-plugins| +3. Docs for the default filetype plugins. |ftplugin-docs| + +Also see |autocmd.txt|. + +{Vi does not have any of these commands} + +============================================================================== +1. Filetypes *filetypes* *file-types* + +Vim can detect the type of file that is edited. This is done by checking the +file name and sometimes by inspecting the contents of the file for specific +text. + + *:filetype* *:filet* +To enable file type detection, use this command in your vimrc: > + :filetype on +Each time a new or existing file is edited, Vim will try to recognize the type +of the file and set the 'filetype' option. This will trigger the FileType +event, which can be used to set the syntax highlighting, set options, etc. + +NOTE: Filetypes and 'compatible' don't work together well, since being Vi +compatible means options are global. Resetting 'compatible' is recommended, +if you didn't do that already. + +Detail: The ":filetype on" command will load one of these files: + Amiga $VIMRUNTIME/filetype.vim + Mac $VIMRUNTIME:filetype.vim + MS-DOS $VIMRUNTIME\filetype.vim + RiscOS Vim:Filetype + Unix $VIMRUNTIME/filetype.vim + VMS $VIMRUNTIME/filetype.vim + This file is a Vim script that defines autocommands for the + BufNewFile and BufRead events. If the file type is not found by the + name, the file $VIMRUNTIME/scripts.vim is used to detect it from the + contents of the file. + +To add your own file types, see |new-filetype| below. + +If the file type is not detected automatically, or it finds the wrong type, +you can either set the 'filetype' option manually, or add a modeline to your +file. Example, for in an IDL file use the command: > + :set filetype=idl +or add this |modeline| to the file: > + /* vim: set filetype=idl : */ +< + *:filetype-plugin-on* +You can enable loading the plugin files for specific file types with: > + :filetype plugin on +If filetype detection was not switched on yet, it will be as well. +This actually loads the file "ftplugin.vim" in 'runtimepath'. +The result is that when a file is edited its plugin file is loaded (if there +is one for the detected filetype). |filetype-plugin| + + *:filetype-plugin-off* +You can disable it again with: > + :filetype plugin off +The filetype detection is not switched off then. But if you do switch off +filetype detection, the plugins will not be loaded either. +This actually loads the file "ftplugof.vim" in 'runtimepath'. + + *:filetype-indent-on* +You can enable loading the indent file for specific file types with: > + :filetype indent on +If filetype detection was not switched on yet, it will be as well. +This actually loads the file "indent.vim" in 'runtimepath'. +The result is that when a file is edited its indent file is loaded (if there +is one for the detected filetype). |indent-expression| + + *:filetype-indent-off* +You can disable it again with: > + :filetype indent off +The filetype detection is not switched off then. But if you do switch off +filetype detection, the indent files will not be loaded either. +This actually loads the file "indoff.vim" in 'runtimepath'. + + *:filetype-off* +To disable file type detection, use this command: > + :filetype off +This will keep the flags for "plugin" and "indent", but since no file types +are being detected, they won't work until the next ":filetype on". + + +Overview: *:filetype-overview* + +command detection plugin indent ~ +:filetype on on unchanged unchanged +:filetype off off unchanged unchanged +:filetype plugin on on on unchanged +:filetype plugin off unchanged off unchanged +:filetype indent on on unchanged on +:filetype indent off unchanged unchanged off +:filetype plugin indent on on on on +:filetype plugin indent off unchanged off off + +To see the current status, type: > + :filetype +The output looks something like this: > + filetype detection:ON plugin:ON indent:OFF + +The file types are also used for syntax highlighting. If the ":syntax on" +command is used, the file type detection is installed too. There is no need +to do ":filetype on" after ":syntax on". + +To disable one of the file types, add a line in the your filetype file, see +|remove-filetype|. + + *filetype-detect* +To detect the file type again: > + :filetype detect +Use this if you started with an empty file and typed text that makes it +possible to detect the file type. For example, when you entered this in a +shell script: "#!/bin/csh". + When filetype detection was off, it will be enabled first, like the "on" +argument was used. + + *filetype-overrule* +When the same extension is used for two filetypes, Vim tries to guess what +kind of file it is. This doesn't always work. A number of global variables +can be used to overrule the filetype used for certain extensions: + + file name variable ~ + *.asa g:filetype_asa |aspvbs-syntax| |aspperl-syntax| + *.asp g:filetype_asp |aspvbs-syntax| |aspperl-syntax| + *.asm g:asmsyntax |asm-syntax| + *.prg g:filetype_prg + *.pl g:filetype_pl + *.inc g:filetype_inc + *.w g:filetype_w |cweb-syntax| + *.i g:filetype_i |progress-syntax| + *.p g:filetype_p |pascal-syntax| + *.sh g:bash_is_sh |sh-syntax| + + *filetype-ignore* +To avoid that certain files are being inspected, the g:ft_ignore_pat variable +is used. The default value is set like this: > + :let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$' +This means that the contents of compressed files are not inspected. + + *new-filetype* +If a file type that you want to use is not detected yet, there are three ways +to add it. In any way, it's better not modify the $VIMRUNTIME/filetype.vim +file. It will be overwritten when installing a new version of Vim. + +A. If you want to overrule all default file type checks. + This works by writing one file for each filetype. The disadvantage is that + means there can be many files. The advantage is that you can simply drop + this file in the right directory to make it work. + + 1. Create your user runtime directory. You would normally use the first + item of the 'runtimepath' option. Then create the directory "ftdetect" + inside it. Example for Unix: > + :!mkdir ~/.vim + :!mkdir ~/.vim/ftdetect +< + 2. Create a file that contains an autocommand to detect the file type. + Example: > + au BufRead,BufNewFile *.mine set filetype=mine +< Note that there is no "augroup" command, this has already been done + when sourcing your file. You could also use the pattern "*" and then + check the contents of the file to recognize it. + Write this file as "mine.vim" in the "ftdetect" directory in your user + runtime directory. For example, for Unix: > + :w ~/.vim/ftdetect/mine.vim + +< 3. To use the new filetype detection you must restart Vim. + + The files in the "ftdetect" directory are used after all the default + checks, thus they can overrule a previously detected file type. + +B. If you want to detect your file after the default file type checks. + + This works like A above, but instead of setting 'filetype' unconditionally + use ":setfiletype". This will only set 'filetype' if no file type was + detected yet. Example: > + au BufRead,BufNewFile *.txt setfiletype text +< + You can also use the already detected file type in your command. For + example, to use the file type "mypascal" when "pascal" has been detected: > + au BufRead,BufNewFile * if &ft == 'pascal' | set ft=mypascal + | endif + +C. If your file type can be detected by the file name. + 1. Create your user runtime directory. You would normally use the first + item of the 'runtimepath' option. Example for Unix: > + :!mkdir ~/.vim +< + 2. Create a file that contains autocommands to detect the file type. + Example: > + " my filetype file + if exists("did_load_filetypes") + finish + endif + augroup filetypedetect + au! BufRead,BufNewFile *.mine setfiletype mine + au! BufRead,BufNewFile *.xyz setfiletype drawing + augroup END +< Write this file as "filetype.vim" in your user runtime directory. For + example, for Unix: > + :w ~/.vim/filetype.vim + +< 3. To use the new filetype detection you must restart Vim. + + Your filetype.vim will be sourced before the default FileType autocommands + have been installed. Your autocommands will match first, and the + ":setfiletype" command will make sure that no other autocommands will set + 'filetype' after this. + *new-filetype-scripts* +D. If your filetype can only be detected by inspecting the contents of the + file. + + 1. Create your user runtime directory. You would normally use the first + item of the 'runtimepath' option. Example for Unix: > + :!mkdir ~/.vim +< + 2. Create a vim script file for doing this. Example: > + if did_filetype() " filetype already set.. + finish " ..don't do these checks + endif + if getline(1) =~ '^#!.*\' + setfiletype mine + elseif getline(1) =~? '\' + setfiletype drawing + endif +< See $VIMRUNTIME/scripts.vim for more examples. + Write this file as "scripts.vim" in your user runtime directory. For + example, for Unix: > + :w ~/.vim/scripts.vim +< + 3. The detection will work right away, no need to restart Vim. + + Your scripts.vim is loaded before the default checks for file types, which + means that your rules override the default rules in + $VIMRUNTIME/scripts.vim. + + *remove-filetype* +If a file type is detected that is wrong for you, install a filetype.vim or +scripts.vim to catch it (see above). You can set 'filetype' to a non-existing +name to avoid that it will be set later anyway: > + :set filetype=ignored + +If you are setting up a system with many users, and you don't want each user +to add/remove the same filetypes, consider writing the filetype.vim and +scripts.vim files in a runtime directory that is used for everybody. Check +the 'runtimepath' for a directory to use. If there isn't one, set +'runtimepath' in the |system-vimrc|. Be careful to keep the default +directories! + + + *autocmd-osfiletypes* +On operating systems which support storing a file type with the file, you can +specify that an autocommand should only be executed if the file is of a +certain type. + +The actual type checking depends on which platform you are running Vim +on; see your system's documentation for details. + +To use osfiletype checking in an autocommand you should put a list of types to +match in angle brackets in place of a pattern, like this: > + + :au BufRead *.html,<&faf;HTML> runtime! syntax/html.vim + +This will match: + +- Any file whose name ends in `.html' +- Any file whose type is `&faf' or 'HTML', where the meaning of these types + depends on which version of Vim you are using. + Unknown types are considered NOT to match. + +You can also specify a type and a pattern at the same time (in which case they +must both match): > + + :au BufRead <&fff>diff* + +This will match files of type `&fff' whose names start with `diff'. + +Note that osfiletype checking is skipped if Vim is compiled without the +|+osfiletype| feature. + + *plugin-details* +The "plugin" directory can be in any of the directories in the 'runtimepath' +option. All of these directories will be searched for plugins and they are +all loaded. For example, if this command: > + + set runtimepath + +produces this output: > + + runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 + +then Vim will load all plugins in these directories: > + + /etc/vim/plugin/ + ~/.vim/plugin/ + /usr/local/share/vim/vim60/plugin/ + +Note that the last one is the value of $VIMRUNTIME which has been expanded. + +What if it looks like your plugin is not being loaded? You can find out what +happens when Vim starts up by using the |-V| argument: > + vim -V1 +You will see a lot of messages, in between them is a remark about loading the +plugins. It starts with: > + Searching for "plugin/*.vim" in +There you can see where Vim looks for your plugin scripts. + +============================================================================== +2. Filetype plugin *filetype-plugins* + +When loading filetype plugins has been enabled |:filetype-plugin-on|, options +will be set and mappings defined. These are all local to the buffer, they +will not be used for other files. + +Defining mappings for a filetype may get in the way of the mappings you +define yourself. There are a few ways to avoid this: +1. Set the "maplocalleader" variable to the key sequence you want the mappings + to start with. Example: > + :let maplocalleader = "," +< All mappings will then start with a comma instead of the default, which + is a backslash. Also see ||. + +2. Define your own mapping. Example: > + :map ,p MailQuote +< You need to check the description of the plugin file below for the + functionality it offers and the string to map to. + You need to define your own mapping before the plugin is loaded (before + editing a file of that type). The plugin will then skip installing the + default mapping. + +3. Disable defining mappings for a specific filetype by setting a variable, + which contains the name of the filetype. For the "mail" filetype this + would be: > + :let no_mail_maps = 1 + +4. Disable defining mappings for all filetypes by setting a variable: > + :let no_plugin_maps = 1 +< + + *ftplugin-overrule* +If a global filetype plugin does not do exactly what you want, there are three +ways to change this: + +1. Add a few settings. + You must create a new filetype plugin in a directory early in + 'runtimepath'. For Unix, for example you could use this file: > + vim ~/.vim/ftplugin/fortran.vim +< You can set those settings and mappings that you would like to add. Note + that the global plugin will be loaded after this, it may overrule the + settings that you do here. If this is the case, you need to use one of the + following two methods. + +2. Make a copy of the plugin and change it. + You must put the copy in a directory early in 'runtimepath'. For Unix, for + example, you could do this: > + cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim +< Then you can edit the copied file to your liking. Since the b:did_ftplugin + variable will be set, the global plugin will not be loaded. + A disadvantage of this method is that when the distributed plugin gets + improved, you will have to copy and modify it again. + +3. Overrule the settings after loading the global plugin. + You must create a new filetype plugin in a directory from the end of + 'runtimepath'. For Unix, for example, you could use this file: > + vim ~/.vim/after/ftplugin/fortran.vim +< In this file you can change just those settings that you want to change. + +============================================================================== +3. Docs for the default filetype plugins. *ftplugin-docs* + + +CHANGELOG *changelog-plugin* + +Allows for easy entrance of Changelog entries in Changelog files. There are +some commands, mappings, and variables worth exploring: + +Options: +'comments' is made empty to not mess up formatting. +'textwidth' is set to 78, which is standard. +'formatoptions' the 't' flag is added to wrap when inserting text. + +Commands: +NewChangelogEntry Adds a new Changelog entry in an intelligent fashion + (see below). + +Local mappings: +o Starts a new Changelog entry in an equally intelligent + fashion (see below). + +Global mappings: + NOTE: The global mappings are accessed by sourcing the + ftplugin/changelog.vim file first, e.g. with > + runtime ftplugin/man.vim +< in your |.vimrc|. +o Switches to the ChangeLog buffer opened for the + current directory, or opens it in a new buffer if it + exists in the current directory. Then it does the + same as the local o described above. + +Variables: +g:changelog_timeformat The date (and time) format used in ChangeLog entries. + The format accepted is the same as for the + |strftime()| function. + The default is "%Y-%m-%d" which is the standard format + for many ChangeLog layouts. +g:changelog_username The name and email address of the user. + The default is deduced from environment variables and + system files. It searches /etc/passwd for the comment + part of the current user, which informally contains + the real name of the user up to the first separating + comma. then it checks the $NAME environment variable + and finally runs `whoami` and `hostname` to build an + email address. The final form is > + Full Name +< +g:changelog_new_date_format + The format to use when creating a new date-entry. + The following table describes special tokens in the + string: + %% insert a single '%' character + %d insert the date from above + %u insert the user from above + %c where to position cursor when done + The default is "%d %u\n\n\t* %c\n\n", which produces + something like (| is where cursor will be, unless at + the start of the line where it denotes the beginning + of the line) > + |2003-01-14 Full Name + | + | * | +< +g:changelog_new_entry_format + The format used when creating a new entry. + The following table describes special tokens in the + string: + %c where to position cursor when done + The default is "\t*%c", which produces something + similar to > + | * | +< +g:changelog_date_entry_search + The search pattern to use when searching for a + date-entry. + The same tokens that can be used for + g:changelog_new_date_format can be used here as well. + The default is '^\s*%d\_s*%u' which finds lines + matching the form > + |2003-01-14 Full Name +< and some similar formats. + +The Changelog entries are inserted where they add the least amount of text. +After figuring out the current date and user, the file is searched for an +entry beginning with the current date and user and if found adds another item +under it. If not found, a new entry and item is prepended to the beginning of +the Changelog. + + +FORTRAN *fortran-plugin* + +Options: +'expandtab' is switched on to avoid tabs as required by the Fortran + standards unless the user has set fortran_have_tabs in .vimrc. +'textwidth' is set to 72 for fixed source format as required by the + Fortran standards and to 80 for free source format. +'formatoptions' is set to break code and comment lines and to preserve long + lines. You can format comments with |gq|. +For further discussion of fortran_have_tabs and the method used for the +detection of source format see |fortran-syntax|. + + +MAIL *mail-plugin* + +Options: +'modeline' is switched off to avoid the danger of trojan horses, and to + avoid that a Subject line with "Vim:" in it will cause an + error message. +'textwidth' is set to 72. This is often recommended for e-mail. +'formatoptions' is set to break text lines and to repeat the comment leader + in new lines, so that a leading ">" for quotes is repeated. + You can also format quoted text with |gq|. + +Local mappings: +q or \\MailQuote + Quotes the text selected in Visual mode, or from the cursor position + to the end of the file in Normal mode. This means "> " is inserted in + each line. + +MAN *man-plugin* *:Man* + +Displays a manual page in a nice way. Also see the user manual +|find-manpage|. + +To start using the ":Man" command before any manual page was loaded, source +this script from your startup vimrc file: > + + runtime ftplugin/man.vim + +Options: +'iskeyword' the '.' character is added to be able to use CTRL-] on the + manual page name. + +Commands: +Man {name} Display the manual page for {name} in a window. +Man {number} {name} + Display the manual page for {name} in a section {number}. + +Global mapping: +K Displays the manual page for the word under the cursor. + +Local mappings: +CTRL-] Jump to the manual page for the word under the cursor. +CTRL-T Jump back to the previous manual page. + + +RPM SPEC *spec-plugin* + +Since the text for this plugin is rather long it has been put in a separate +file: |pi_spec.txt|. + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/fold.txt b/en/fold.txt new file mode 100644 index 000000000..3a7ba38c8 --- /dev/null +++ b/en/fold.txt @@ -0,0 +1,581 @@ +*fold.txt* For Vim version 6.3. Last change: 2004 May 20 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Folding *Folding* *folding* + +You can find an introduction on folding in chapter 28 of the user manual. +|usr_28.txt| + +1. Fold methods |fold-methods| +2. Fold commands |fold-commands| +3. Fold options |fold-options| +4. Behavior of folds |fold-behavior| + +{Vi has no Folding} +{not available when compiled without the +folding feature} + +============================================================================== +1. Fold methods *fold-methods* + +The folding method can be set with the 'foldmethod' option. + +When setting 'foldmethod' to a value other than "manual", all folds are +deleted and new ones created. Switching to the "manual" method doesn't remove +the existing folds. This can be used to first define the folds automatically +and then change them manually. + +There are six methods to select folds: + manual manually define folds + indent more indent means a higher fold level + expr specify an expression to define folds + syntax folds defined by syntax highlighting + diff folds for unchanged text + marker folds defined by markers in the text + + +MANUAL *fold-manual* + +Use commands to manually define the fold regions. This can also be used by a +script that parses text to find folds. + +The level of a fold is only defined by its nesting. To increase the fold +level of a fold for a range of lines, define a fold inside it that has the +same lines. + +The manual folds are lost when you abandon the file. To save the folds use +the |:mkview| command. The view can be restored later with |:loadview|. + + +INDENT *fold-indent* + +The folds are automatically defined by the indent of the lines. + +The foldlevel is computed from the indent of the line, divided by the +'shiftwidth' (rounded down). A sequence of lines with the same or higher fold +level form a fold, with the lines with a higher level forming a nested fold. + +The nesting of folds is limited with 'foldnestmax'. + +Some lines are ignored and get the fold level of the line above or below it, +whatever is the lowest. These are empty or white lines and lines starting +with a character in 'foldignore'. White space is skipped before checking for +characters in 'foldignore'. For C use "#" to ignore preprocessor lines. + +When you want to ignore lines in another way, use the 'expr' method. The +|indent()| function can be used in 'foldexpr' to get the indent of a line. + + +EXPR *fold-expr* + +The folds are automatically defined by their foldlevel, like with the "indent" +method. The value of the 'foldexpr' option is evaluated to get the foldlevel +of a line. Examples: +This will create a fold for all consecutive lines that start with a Tab: > + :set foldexpr=getline(v:lnum)[0]==\"\\t\" +This will call a function to compute the fold level: > + :set foldexpr=MyFoldLevel(v:lnum) +This will make a fold out of paragraphs separated by blank lines: > + :set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1 +this does the same: > + :set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1 + +Note that backslashes must be used to escape characters that ":set" handles +differently (space, backslash, double quote, etc., see |option-backslash|). + +These are the conditions with which the expression is evaluated: +- The current buffer and window are set for the line. +- The variable "v:lnum" is set to the line number. +- The result is used for the fold level in this way: + value meaning ~ + 0 the line is not in a fold + 1, 2, .. the line is in a fold with this level + -1 the fold level is undefined, use the fold level of a + line before or after this line, whichever is the + lowest. + "=" use fold level from the previous line + "a1", "a2", .. add one, two, .. to the fold level of the previous + line + "s1", "s2", .. subtract one, two, .. from the fold level of the + previous line + "<1", "<2", .. a fold with this level ends at this line + ">1", ">2", .. a fold with this level starts at this line + +It is not required to mark the start (end) of a fold with ">1" ("<1"), a fold +will also start (end) when the fold level is higher (lower) than the fold +level of the previous line. + +There must be no side effects from the expression. The text in the buffer, +cursor position, the search patterns, options etc. must not be changed. + +If there is some error in the expression, or the resulting value isn't +recognized, there is no error message and the fold level will be zero. +For debugging the 'debug' option can be set to "msg", the error messages will +be visible then. + +Note: Since the expression has to be evaluated for every line, this fold +method can be very slow! + +Try to avoid the "=", "a" and "s" return values, since Vim often has to search +backwards for a line for which the fold level is defined. This can be slow. + +|foldlevel()| can be useful to compute a fold level relative to a previous +fold level. But note that foldlevel() may return -1 if the level is not known +yet. And it returns the level at the start of the line, while a fold might +end in that line. + + +SYNTAX *fold-syntax* + +A fold is defined by syntax items that have the "fold" argument. |:syn-fold| + +The fold level is defined by nesting folds. The nesting of folds is limited +with 'foldnestmax'. + +Be careful to specify proper syntax syncing. If this is not done right, folds +may differ from the displayed highlighting. This is especially relevant when +using patterns that match more than one line. In case of doubt, try using +brute-force syncing: > + :syn sync fromstart + + +DIFF *fold-diff* + +The folds are automatically defined for text that is not part of a change or +close to a change. + +This method only works properly when the 'diff' option is set for the current +window and changes are being displayed. Otherwise the whole buffer will be +one big fold. + +The 'diffopt' option can be used to specify the context. That is, the number +of lines between the fold and a change that are not included in the fold. For +example, to use a context of 8 lines: > + :set diffopt=filler,context:8 +The default context is six lines. + +When 'scrollbind' is also set, Vim will attempt to keep the same folds open in +other diff windows, so that the same text is visible. + + +MARKER *fold-marker* + +Markers in the text tell where folds start and end. This allows you to +precisely specify the folds. This will allow deleting and putting a fold, +without the risk of including the wrong lines. The 'foldtext' option is +normally set such that the text before the marker shows up in the folded line. +This makes it possible to give a name to the fold. + +Markers can have a level included, or can use matching pairs. Including a +level is easier, you don't have to add end markers and avoid problems with +non-matching marker pairs. Example: > + /* global variables {{{1 */ + int varA, varB; + + /* functions {{{1 */ + /* funcA() {{{2 */ + void funcA() {} + + /* funcB() {{{2 */ + void funcB() {} + +A fold starts at a "{{{" marker. The following number specifies the fold +level. What happens depends on the difference between the current fold level +and the level given by the marker: +1. If a marker with the same fold level is encountered, the previous fold + ends and another fold with the same level starts. +2. If a marker with a higher fold level is found, a nested fold is started. +3. if a marker with a lower fold level is found, all folds up to and including + this level end and a fold with the specified level starts. + +The number indicates the fold level. A zero cannot be used. +You can use "}}}" with a digit to indicate the level of the fold that +ends. The fold level of the following line will be one less than the +indicated level. Note that Vim doesn't look back to the level of the matching +marker (that would take too much time). Example: > + + {{{1 + fold level here is 1 + {{{3 + fold level here is 3 + }}}3 + fold level here is 2 + +You can also use matching pairs of "{{{" and "}}}" markers to define folds. +Each "{{{" increases the fold level by one, each "}}}" decreases the fold +level by one. Be careful to keep the markers matching! Example: > + + {{{ + fold level here is 1 + {{{ + fold level here is 2 + }}} + fold level here is 1 + +You can mix using markers with a number and without a number. A useful way of +doing this is to use numbered markers for large folds, and unnumbered markers +locally in a function. For example use level one folds for the sections of +your file like "structure definitions", "local variables" and "functions". +Use level 2 markers for each definition and function, Use unnumbered markers +inside functions. When you make changes in a function to split up folds, you +don't have to renumber the markers. + +The markers can be set with the 'foldmarker' option. It is recommended to +keep this at the default value of "{{{,}}}", so that files can be exchanged +between Vim users. Only change it when it is required for the file (e.g., it +contains markers from another folding editor, or the default markers cause +trouble for the language of the file). + + *fold-create-marker* +"zf" can be used to create a fold defined by markers. Vim will insert the +markers for you. Vim will append the start and end marker, as specified with +'foldmarker'. The markers are appended to the end of the line. +'commentstring' is used if it isn't empty. +This does not work properly when: +- The line already contains a marker with a level number. Vim then doesn't + know what to do. +- Folds nearby use a level number in their marker which gets in the way. +- The line is inside a comment, 'commentstring' isn't empty and nested + comments don't work. For example with C: adding /* {{{ */ inside a comment + will truncate the existing comment. Either put the marker before or after + the comment, or add the marker manually. +Generally it's not a good idea to let Vim create markers when you already have +markers with a level number. + + *fold-delete-marker* +"zd" can be used to delete a fold defined by markers. Vim will delete the +markers for you. Vim will search for the start and end markers, as specified +with 'foldmarker', at the start and end of the fold. When the text around the +marker matches with 'commentstring', that text is deleted as well. +This does not work properly when: +- A line contains more than one marker and one of them specifies a level. + Only the first one is removed, without checking if this will have the + desired effect of deleting the fold. +- The marker contains a level number and is used to start or end several folds + at the same time. + +============================================================================== +2. Fold commands *fold-commands* *E490* + +All folding commands start with "z". Hint: the "z" looks like a folded piece +of paper, if you look at it from the side. + + +CREATING AND DELETING FOLDS ~ + *zf* *E350* +zf{motion} or +{Visual}zf Operator to create a fold. + This only works when 'foldmethod' is "manual" or "marker". + The new fold will be closed for the "manual" method. + 'foldenable' will be set. + Also see |fold-create-marker|. + + *zF* +zF Create a fold for N lines. Works like "zf". + +:{range}fo[ld] *:fold* *:fo* + Create a fold for the lines in {range}. Works like "zf". + + *zd* *E351* +zd Delete one fold at the cursor. When the cursor is on folded + line, that fold is deleted. Nested folds are moved one level + up. In Visual mode all folds (partially) in the selected area + are deleted. Careful: This easily deletes more folds than you + expect and there is no undo. + This only works when 'foldmethod' is "manual" or "marker". + Also see |fold-delete-marker|. + + *zD* +zD Delete folds recursively at the cursor. In Visual mode all + folds (partially) in the selected area and all nested folds in + them are deleted. + This only works when 'foldmethod' is "manual" or "marker". + Also see |fold-delete-marker|. + + *zE* *E352* +zE Eliminate all folds in the window. + This only works when 'foldmethod' is "manual" or "marker". + Also see |fold-delete-marker|. + + +OPENING AND CLOSING FOLDS ~ + +A fold smaller than 'foldminlines' will always be displayed like it was open. +Therefore the commands below may work differently on small folds. + + *zo* +zo Open one fold under the cursor. When a count is given, that + many folds deep will be opened. In Visual mode one level of + folds is opened for all lines in the selected area. + + *zO* +zO Open all folds under the cursor recursively. Folds that don't + contain the cursor line are unchanged. + In Visual mode it opens all folds that are in the selected + area, also those that are only partly selected. + + *zc* +zc Close one fold under the cursor. When a count is given, that + many folds deep are closed. In Visual mode one level of folds + is closed for all lines in the selected area. + 'foldenable' will be set. + + *zC* +zC Close all folds under the cursor recursively. Folds that + don't contain the cursor line are unchanged. + In Visual mode it closes all folds that are in the selected + area, also those that are only partly selected. + 'foldenable' will be set. + + *za* +za When on a closed fold: open it. When folds are nested, you + may have to use "za" several times. When a count is given, + that many closed folds are opened. + When on an open fold: close it and set 'foldenable'. This + will only close one level, since using "za" again will open + the fold. When a count is given that many folds will be + closed (that's not the same as repeating "za" that many + times). + + *zA* +zA When on a closed fold: open it recursively. + When on an open fold: close it recursively and set + 'foldenable'. + + *zv* +zv View cursor line: Open just enough folds to make the line in + which the cursor is located not folded. + + *zx* +zx Update folds: Undo manually opened and closed folds: re-apply + 'foldlevel', then do "zv": View cursor line. + + *zX* +zX Undo manually opened and closed folds: re-apply 'foldlevel'. + + *zm* +zm Fold more: Subtract one from 'foldlevel'. If 'foldlevel' was + already zero nothing happens. + 'foldenable' will be set. + + *zM* +zM Close all folds: set 'foldlevel' to 0. + 'foldenable' will be set. + + *zr* +zr Reduce folding: Add one to 'foldlevel'. + + *zR* +zR Open all folds. This sets 'foldlevel' to highest fold level. + + *:foldo* *:foldopen* +:{range}foldo[pen][!] + Open folds in {range}. When [!] is added all folds are + opened. Useful to see all the text in {range}. Without [!] + one level of folds is opened. + + *:foldc* *:foldclose* +:{range}foldc[lose][!] + Close folds in {range}. When [!] is added all folds are + closed. Useful to hide all the text in {range}. Without [!] + one level of folds is closed. + + *zn* +zn Fold none: reset 'foldenable'. All folds will be open. + + *zN* +zN Fold normal: set 'foldenable'. All folds will be as they + were before. + + *zi* +zi Invert 'foldenable'. + + +MOVING OVER FOLDS ~ + *[z* +[z Move to the start of the current open fold. If already at the + start, move to the start of the fold that contains it. If + there is no containing fold, the command fails. + When a count is used, repeats the command N times. + + *]z* +]z Move to the end of the current open fold. If already at the + end, move to the end of the fold that contains it. If there + is no containing fold, the command fails. + When a count is used, repeats the command N times. + + *zj* +zj Move downwards to the start of the next fold. A closed fold + is counted as one fold. + When a count is used, repeats the command N times. + This command can be used after an |operator|. + + *zk* +zk Move upwards to the end of the previous fold. A closed fold + is counted as one fold. + When a count is used, repeats the command N times. + This command can be used after an |operator|. + + +EXECUTING COMMANDS ON FOLDS ~ + +:[range]foldd[oopen] {cmd} *:foldd* *:folddoopen* + Execute {cmd} on all lines that are not in a closed fold. + When [range] is given, only these lines are used. + Each time {cmd} is executed the cursor is positioned on the + line it is executed for. + This works like the ":global" command: First all lines that + are not in a closed fold are marked. Then the {cmd} is + executed for all marked lines. Thus when {cmd} changes the + folds, this has no influence on where it is executed (except + when lines are deleted, of course). + Example: > + :folddoopen s/end/loop_end/ge +< Note the use of the "e" flag to avoid getting an error message + where "end" doesn't match. + +:[range]folddoc[losed] {cmd} *:folddoc* *:folddoclosed* + Execute {cmd} on all lines that are in a closed fold. + Otherwise like ":folddoopen". + +============================================================================== +3. Fold options *fold-options* + +COLORS *fold-colors* + +The colors of a closed fold are set with the Folded group |hl-Folded|. The +colors of the fold column are set with the FoldColumn group |hl-FoldColumn|. +Example to set the colors: > + + :highlight Folded guibg=grey guifg=blue + :highlight FoldColumn guibg=darkgrey guifg=white + + +FOLDLEVEL *fold-foldlevel* + +'foldlevel' is a number option: The higher the more folded regions are open. +When 'foldlevel' is 0, all folds are closed. +When 'foldlevel' is positive, some folds closed. +When 'foldlevel' is very high, all folds are open. +'foldlevel' is applied when it is changed. After that manually folds can be +opened and closed. +When increased, folds above the new level are opened. No manually opened +folds will be closed. +When decreased, folds above the new level are closed. No manually closed +folds will be opened. + + +FOLDTEXT *fold-foldtext* + +'foldtext' is a string option that specifies an expression. This expression +is evaluated to obtain the text displayed for a closed fold. Example: > + + :set foldtext=v:folddashes.substitute(getline(v:foldstart),'/\\*\\\|\\*/\\\|{{{\\d\\=','','g') + +This shows the first line of the fold, with "/*", "*/" and "{{{" removed. +Note the use of backslashes to avoid some characters to be interpreted by the +":set" command. It's simpler to define a function and call that: > + + :set foldtext=MyFoldText() + :function MyFoldText() + : let line = getline(v:foldstart) + : let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g') + : return v:folddashes . sub + :endfunction + +Evaluating 'foldtext' is done in the |sandbox|. The current window is set to +the window that displays the line. Errors are ignored. + +The default value is |foldtext()|. This returns a reasonable text for most +types of folding. If you don't like it, you can specify your own 'foldtext' +expression. It can use these special Vim variables: + v:foldstart line number of first line in the fold + v:foldend line number of last line in the fold + v:folddashes a string that contains dashes to represent the + foldlevel. + v:foldlevel the foldlevel of the fold + +In the result a TAB is replaced with a space and unprintable characters are +made into printable characters. + +The resulting line is truncated to fit in the window, it never wraps. +When there is room after the text, it is filled with the character specified +by 'fillchars'. + +Note that backslashes need to be used for characters that the ":set" command +handles differently: Space, backslash and double-quote. |option-backslash| + + +FOLDCOLUMN *fold-foldcolumn* + +'foldcolumn' is a number, which sets the width for a column on the side of the +window to indicate folds. When it is zero, there is no foldcolumn. A normal +value is 4 or 5. The minimal useful value is 2. The maximum is 12. + +An open fold is indicated with a column that has a '-' at the top and '|' +characters below it. This column stops where the open fold stops. When folds +nest, the nested fold is one character right of the fold it's contained in. + +A closed fold is indicated with a '+'. + +Where the fold column is too narrow to display all nested folds, digits are +shown to indicate the nesting level. + +The mouse can also be used to open and close folds by clicking in the +fold column: +- Click on a '+' to open the closed fold at this row. +- Click on any other non-blank character to close the open fold at this row. + + +OTHER OPTIONS + +'foldenable' 'fen': Open all folds while not set. +'foldexpr' 'fde': Expression used for "expr" folding. +'foldignore' 'fdi': Characters used for "indent" folding. +'foldmarker' 'fmr': Defined markers used for "marker" folding. +'foldmethod' 'fdm': Name of the current folding method. +'foldminlines' 'fml': Minimum number of screen lines for a fold to be + displayed closed. +'foldnestmax' 'fdn': Maximum nesting for "indent" and "syntax" folding. +'foldopen' 'fdo': Which kinds of commands open closed folds. +'foldclose' 'fcl': When the folds not under the cursor are closed. + +============================================================================== +4. Behavior of folds *fold-behavior* + +When moving the cursor upwards or downwards and when scrolling, the cursor +will move to the first line of a sequence of folded lines. When the cursor is +already on a folded line, it moves to the next unfolded line or the next +closed fold. + +While the cursor is on folded lines, the cursor is always displayed in the +first column. The ruler does show the actual cursor position, but since the +line is folded, it cannot be displayed there. + +Many movement commands handle a sequence of folded lines like an empty line. +For example, the "w" command stops once in the first column. + +When in Insert mode, the cursor line is never folded. That allows you to see +what you type! + +When using an operator, a closed fold is included as a whole. Thus "dl" +deletes the whole closed fold under the cursor. + +For Ex commands the range is adjusted to always start at the first line of a +fold and end at the last line of a fold. Thus this command: > + :s/foo/bar/g +when used with the cursor on a closed fold, will replace "foo" with "bar" in +all lines of the fold. +This does not happen for |:folddoopen| and |:folddoclosed|. + +When editing a buffer that has been edited before, the last used folding +settings are used again. For manual folding the defined folds are restored. +For all folding methods the manually opened and closed folds are restored. +If this buffer has been edited in this window, the values from back then are +used. Otherwise the values from the window where the buffer was edited last +are used. + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/gui.txt b/en/gui.txt new file mode 100644 index 000000000..e435a983f --- /dev/null +++ b/en/gui.txt @@ -0,0 +1,951 @@ +*gui.txt* For Vim version 6.3. Last change: 2004 Jun 02 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Vim's Graphical User Interface *gui* *GUI* + +1. Starting the GUI |gui-start| +2. Scrollbars |gui-scrollbars| +3. Mouse Control |gui-mouse| +4. Making GUI Selections |gui-selections| +5. Menus |menus| +6. Extras |gui-extras| +7. Shell Commands |gui-shell| + +Other GUI documentation: +|gui_x11.txt| For specific items of the X11 GUI. +|gui_w32.txt| For specific items of the Win32 GUI. + +{Vi does not have any of these commands} + +============================================================================== +1. Starting the GUI *gui-start* *E229* *E233* + +First you must make sure you actually have a version of Vim with the GUI code +included. You can check this with the ":version" command, it should include +"+GUI_Athena", "+GUI_BeOS", "+GUI_GTK", "+GUI_Motif" or "MS-Windows ... bit +GUI version". + +How to start the GUI depends on the system used. Mostly you can run the +GUI version of Vim with: + gvim [options] [files...] + +The X11 version of Vim can run both in GUI and in non-GUI mode. See +|gui-x11-start|. + + *gui-init* *gvimrc* *.gvimrc* *_gvimrc* +When the GUI starts up initializations are carried out, in this order: +- The termcap options are reset to their default value for the GUI. +- If the system menu file exists, it is sourced. The name of this file is + normally "$VIMRUNTIME/menu.vim". You can check this with ":version". Also + see |$VIMRUNTIME|. To skip loading the system menu include 'M' in + 'guioptions'. *buffers-menu* *no_buffers_menu* + The system menu file includes a "Buffers" menu. If you don't want this, set + the "no_buffers_menu" variable in your .vimrc (not .gvimrc!): > + :let no_buffers_menu = 1 +< NOTE: Switching on syntax highlighting also loads the menu file, thus + disabling the Buffers menu must be done before ":syntax on". + The path names are truncated to 35 characters. You can truncate them at a + different length, for example 50, like this: > + :let bmenu_max_pathlen = 50 +- If the "-U {gvimrc}" command-line option has been used when starting Vim, + the {gvimrc} file will be read for initializations. The following + initializations are skipped. +- For Unix and MS-Windows, if the system gvimrc exists, it is sourced. The + name of this file is normally "$VIM/gvimrc". You can check this with + ":version". Also see |$VIM|. +- The following are tried, and only the first one that exists is used: + - If the GVIMINIT environment variable exists and is not empty, it is + executed as an Ex command. + - If the user gvimrc file exists, it is sourced. The name of this file is + normally "$HOME/.gvimrc". You can check this with ":version". + - For Win32, when $HOME is not set, "$VIM\_gvimrc" is used. + - When a "_gvimrc" file is not found, ".gvimrc" is tried too. And vice + versa. +- If the 'exrc' option is set (which is NOT the default) the file ./.gvimrc + is sourced, if it exists and isn't the same file as the system or user + gvimrc file. If this file is not owned by you, some security restrictions + apply. When ".gvimrc" is not found, "_gvimrc" is tried too. For Macintosh + and DOS/Win32 "_gvimrc" is tried first. + +NOTE: All but the first one are not carried out if Vim was started with +"-u NONE" and no "-U" argument was given, or when started with "-U NONE". + +All this happens AFTER the normal Vim initializations, like reading your +.vimrc file. See |initialization|. +But the GUI window is only opened after all the initializations have been +carried out. If you want some commands to be executed just after opening the +GUI window, use the |GUIEnter| autocommand event. Example: > + :autocommand GUIEnter * winpos 100 50 + +You can use the gvimrc files to set up your own customized menus (see |:menu|) +and initialize other things that you may want to set up differently from the +terminal version. + +Recommended place for your personal GUI initializations: + Unix $HOME/.gvimrc + OS/2 $HOME/.gvimrc or $VIM/.gvimrc + MS-DOS and Win32 $HOME/_gvimrc or $VIM/_gvimrc + Amiga s:.gvimrc or $VIM/.gvimrc + +There are a number of options which only have meaning in the GUI version of +Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are +documented in |options.txt| with all the other options. + +If using the Motif or Athena version of the GUI (but not for the GTK+ or Win32 +version), a number of X resources are available. See |gui-resources|. + +Another way to set the colors for different occasions is with highlight +groups. The "Normal" group is used to set the background and foreground +colors. Example (which looks nice): > + + :highlight Normal guibg=grey90 + +The "guibg" and "guifg" settings override the normal background and +foreground settings. The other settings for the Normal highlight group are +not used. Use the 'guifont' option to set the font. + +Also check out the 'guicursor' option, to set the colors for the cursor in +various modes. + +Vim tries to make the window fit on the screen when it starts up. This avoids +that you can't see part of it. On the X Window System this requires a bit of +guesswork. You can change the height that is used for the window title and a +task bar with the 'guiheadroom' option. + + *:winp* *:winpos* *E188* +:winp[os] + Display current position of the top left corner of the GUI vim + window in pixels. Does not work in all versions. + +:winp[os] {X} {Y} *E466* + Put the GUI vim window at the given {X} and {Y} coordinates. + The coordinates should specify the position in pixels of the + top left corner of the window. Does not work in all versions. + Does work in an (new) xterm |xterm-color|. + When the GUI window has not been opened yet, the values are + remembered until the window is opened. The position is + adjusted to make the window fit on the screen (if possible). + + *:win* *:winsize* *E465* +:win[size] {width} {height} + Set the window height to {width} by {height} characters. + Obsolete, use ":set lines=11 columns=22". + If you get less lines than expected, check the 'guiheadroom' + option. + +If you are running the X Window System, you can get information about the +window Vim is running in with this command: > + :!xwininfo -id $WINDOWID + +============================================================================== +2. Scrollbars *gui-scrollbars* + +There are vertical scrollbars and a horizontal scrollbars. You may +configure which ones appear with the 'guioptions' option. + +The interface looks like this (with ":set guioptions=mlrb"): + + +------------------------------+ + | File Edit Help | <- Menu bar (m) + +-+--------------------------+-+ + |^| |^| + |#| Text area. |#| + | | | | + |v|__________________________|v| + Normal status line -> |-+ File.c 5,2 +-| + between Vim windows |^|""""""""""""""""""""""""""|^| + | | | | + | | Another file buffer. | | + | | | | + |#| |#| + Left scrollbar (l) -> |#| |#| <- Right + |#| |#| scrollbar (r) + | | | | + |v| |v| + +-+--------------------------+-+ + | |< #### >| | <- Bottom + +-+--------------------------+-+ scrollbar (b) + +Any of the scrollbar or menu components may be turned off by not putting the +appropriate letter in the 'guioptions' string. The bottom scrollbar is +only useful when 'nowrap' is set. + + +VERTICAL SCROLLBARS *gui-vert-scroll* + +Each Vim window has a scrollbar next to it which may be scrolled up and down +to move through the text in that buffer. The size of the scrollbar-thumb +indicates the fraction of the buffer which can be seen in the window. +When the scrollbar is dragged all the way down, the last line of the file +will appear in the top of the window. + +If a window is shrunk to zero height (by the growth of another window) its +scrollbar disappears. It reappears when the window is restored. + +If a window is vertically split, it will get a scrollbar when it is the +current window and when, taking the middle of the current window and drawing a +vertical line, this line goes through the window. +When there are scrollbars on both sides, and the middle of the current window +is on the left half, the right scrollbar column will contain scrollbars for +the rightmost windows. The same happens on the other side. + + +HORIZONTAL SCROLLBARS *gui-horiz-scroll* + +The horizontal scrollbar (at the bottom of the Vim GUI) may be used to +scroll text sideways when the 'wrap' option is turned off. The +scrollbar-thumb size is such that the text of the longest visible line may be +scrolled as far as possible left and right. The cursor is moved when +necessary, it must remain on a visible character (unless 'virtualedit' is +set). + +Computing the length of the longest visible takes quite a bit of computation, +and it has to be done every time something changes. If this takes too much +time or you don't like the cursor jumping to another line, include the 'h' +flag in 'guioptions'. Then the scrolling is limited by the text of the +current cursor line. + + *athena-intellimouse* +If you have an Intellimouse and an X server that supports using the wheel, +then you can use the wheel to scroll the text up and down in gvim. This works +with XFree86 4.0 and later, and with some older versions when you add patches. +See |scroll-mouse-wheel|. + +For older versions of XFree86 you must patch your X server. The following +page has a bit of information about using the Intellimouse on Linux as well as +links to the patches and X server binaries (may not have the one you need +though): + http://www.inria.fr/koala/colas/mouse-wheel-scroll/ + +============================================================================== +3. Mouse Control *gui-mouse* + +The mouse only works if the appropriate flag in the 'mouse' option is set. +When the GUI is switched on, and 'mouse' wasn't set yet, the 'mouse' option is +automatically set to "a", enabling it for all modes except for the +|hit-enter| prompt. If you don't want this, a good place to change the +'mouse' option is the "gvimrc" file. + +Other options that are relevant: +'mousefocus' window focus follows mouse pointer |gui-mouse-focus| +'mousemodel' what mouse button does which action +'mousehide' hide mouse pointer while typing text +'selectmode' whether to start Select mode or Visual mode + +A quick way to set these is with the ":behave" command. + *:behave* *:be* +:be[have] {model} Set behavior for mouse and selection. Valid + arguments are: + mswin MS-Windows behavior + xterm Xterm behavior + + Using ":behave" changes these options: + option mswin xterm ~ + 'selectmode' "mouse,key" "" + 'mousemodel' "popup" "extend" + 'keymodel' "startsel,stopsel" "" + 'selection' "exclusive" "inclusive" + +In the $VIMRUNTIME directory, there is a script called |mswin.vim|, which will +also map a few keys to the MS-Windows cut/copy/paste commands. This is NOT +compatible, since it uses the CTRL-V, CTRL-X and CTRL-C keys. If you don't +mind, use this command: > + :so $VIMRUNTIME/mswin.vim + +For scrolling with a wheel on a mouse, see |scroll-mouse-wheel|. + + +3.1 Moving Cursor with Mouse *gui-mouse-move* + +Click the left mouse button somewhere in a text buffer where you want the +cursor to go, and it does! +This works in when 'mouse' contains ~ +Normal mode 'n' or 'a' +Visual mode 'v' or 'a' +Insert mode 'i' or 'a' + +Select mode is handled like Visual mode. + +You may use this with an operator such as 'd' to delete text from the current +cursor position to the position you point to with the mouse. That is, you hit +'d' and then click the mouse somewhere. + + *gui-mouse-focus* +The 'mousefocus' option can be set to make the keyboard focus follow the +mouse pointer. This means that the window where the mouse pointer is, is the +active window. Warning: this doesn't work very well when using a menu, +because the menu command will always be applied to the top window. + +If you are on the ':' line (or '/' or '?'), then clicking the left or right +mouse button will position the cursor on the ':' line (if 'mouse' contains +'c', 'a' or 'A'). + +In any situation the middle mouse button may be clicked to paste the current +selection. + + +3.2 Selection with Mouse *gui-mouse-select* + +The mouse can be used to start a selection. How depends on the 'mousemodel' +option: +'mousemodel' is "extend": use the right mouse button +'mousemodel' is "popup": use the left mouse button, while keeping the Shift +key pressed. + +If there was no selection yet, this starts a selection from the old cursor +position to the position pointed to with the mouse. If there already is a +selection then the closest end will be extended. + +If 'selectmode' contains "mouse", then the selection will be in Select mode. +This means that typing normal text will replace the selection. See +|Select-mode|. Otherwise, the selection will be in Visual mode. + +Double clicking may be done to make the selection word-wise, triple clicking +makes it line-wise, and quadruple clicking makes it rectangular block-wise. + +See |gui-selections| on how the selection is used. + + +3.3 Other Text Selection with Mouse *gui-mouse-modeless* + *modeless-selection* +A different kind of selection is used when: +- in Command-line mode +- in the Command-line window and pointing in another window +- at the |hit-enter| prompt +- whenever the current mode is not in the 'mouse' option +- when holding the CTRL and SHIFT keys in the GUI +Since Vim continues like the selection isn't there, and there is no mode +associated with the selection, this is called modeless selection. Any text in +the Vim window can be selected. Select the text by pressing the left mouse +button at the start, drag to the end and release. To extend the selection, +use the right mouse button when 'mousemodel' is "extend", or the left mouse +button with the shift key pressed when 'mousemodel' is "popup". +The middle mouse button pastes the text. +The selection is removed when the selected text is scrolled or changed. +On the command line CTRL-Y can be used to copy the selection into the +clipboard. To do this from Insert mode, use CTRL-O : CTRL-Y . + + +3.4 Using Mouse on Status Lines *gui-mouse-status* + +Clicking the left or right mouse button on the status line below a Vim +window makes that window the current window. This actually happens on button +release (to be able to distinguish a click from a drag action). + +With the left mouse button a status line can be dragged up and down, thus +resizing the windows above and below it. This does not change window focus. + +The same can be used on the vertical separator: click to give the window left +of it focus, drag left and right to make windows wider and narrower. + + +3.5 Various Mouse Clicks *gui-mouse-various* + + Search forward for the word under the mouse click. + When 'mousemodel' is "popup" this starts or extends a + selection. + Search backward for the word under the mouse click. + Jump to the tag name under the mouse click. + Jump back to position before the previous tag jump + (same as "CTRL-T") + + +3.6 Mouse Mappings *gui-mouse-mapping* + +The mouse events, complete with modifiers, may be mapped. Eg: > + :map + :map + :map + :map <2-S-LeftMouse> <2-RightMouse> + :map <2-S-LeftDrag> <2-RightDrag> + :map <2-S-LeftRelease> <2-RightRelease> + :map <3-S-LeftMouse> <3-RightMouse> + :map <3-S-LeftDrag> <3-RightDrag> + :map <3-S-LeftRelease> <3-RightRelease> + :map <4-S-LeftMouse> <4-RightMouse> + :map <4-S-LeftDrag> <4-RightDrag> + :map <4-S-LeftRelease> <4-RightRelease> +These mappings make selection work the way it probably should in a Motif +application, with shift-left mouse allowing for extending the visual area +rather than the right mouse button. + +Mouse mapping with modifiers does not work for modeless selection. + + +3.7 Drag and drop *drag-n-drop* + +You can drag and drop one or more files into the Vim window, where they will +be opened as if a |:drop| command was used. + +If you hold down Shift while doing this, Vim changes to the first dropped +file's directory. If you hold Ctrl Vim will always split a new window for the +file. Otherwise it's only done if the current buffer has been changed. + +You can also drop a directory on Vim. This starts the explorer plugin for +that directory (assuming it was enabled, otherwise you'll get an error +message). Keep Shift pressed to change to the directory instead. + +If Vim happens to be editing a command line, the names of the dropped files +and directories will be inserted at the cursor. This allows you to use these +names with any Ex command. Special characters (space, tab, double quote and +'|'; backslash on non-MS-Windows systems) will be escaped. + +============================================================================== +4. Making GUI Selections *gui-selections* + + *quotestar* +You may make selections with the mouse (see |gui-mouse-select|), or by using +Vim's Visual mode (see |v|). If 'a' is present in 'guioptions', then +whenever a selection is started (Visual or Select mode), or when the selection +is changed, Vim becomes the owner of the windowing system's primary selection +(on MS-Windows the |gui-clipboard| is used; under X11, the |x11-selection| is +used - you should read whichever of these is appropriate now). + + *clipboard* +There is a special register for storing this selection, it is the "* +register. Nothing is put in here unless the information about what text is +selected is about to change (eg with a left mouse click somewhere), or when +another application wants to paste the selected text. Then the text is put +in the "* register. For example, to cut a line and make it the current +selection/put it on the clipboard: > + + "*dd + +Similarly, when you want to paste a selection from another application, e.g., +by clicking the middle mouse button, the selection is put in the "* register +first, and then 'put' like any other register. For example, to put the +selection (contents of the clipboard): > + + "*p + +When using this register under X11, also see |x11-selection|. This also +explains the related "+ register. + +Note that when pasting text from one Vim into another separate Vim, the type +of selection (character, line, or block) will also be copied. For other +applications the type is always character. However, if the text gets +transferred via the |x11-cut-buffer|, the selection type is ALWAYS lost. + +When the "unnamed" string is included in the 'clipboard' option, the unnamed +register is the same as the "* register. Thus you can yank to and paste the +selection without prepending "* to commands. + +============================================================================== +5. Menus *menus* + +For an introduction see |usr_42.txt| in the user manual. + + +5.1 Using Menus *using-menus* + +Basically, menus can be used just like mappings. You can define your own +menus, as many as you like. +Long-time Vim users won't use menus much. But the power is in adding your own +menus and menu items. They are most useful for things that you can't remember +what the key sequence was. + +For creating menus in a different language, see |:menutrans|. + + *menu.vim* +The default menus are read from the file "$VIMRUNTIME/menu.vim". See +|$VIMRUNTIME| for where the path comes from. You can set up your own menus. +Starting off with the default set is a good idea. You can add more items, or, +if you don't like the defaults at all, start with removing all menus +|:unmenu-all|. You can also avoid the default menus being loaded by adding +this line to your .vimrc file (NOT your .gvimrc file!): > + :let did_install_default_menus = 1 +If you also want to avoid the Syntax menu: > + :let did_install_syntax_menu = 1 +If you do want the Syntax menu but not all the entries for each available +syntax file (which take quite a bit of time to load): > + :let skip_syntax_sel_menu = 1 +< + *console-menus* +Although this documentation is in the GUI section, you can actually use menus +in console mode too. You will have to load |menu.vim| explicitly then, it is +not done by default. You can use the |:emenu| command and command-line +completion with 'wildmenu' to access the menu entries almost like a real menu +system. To do this, put these commands in your .vimrc file: > + :source $VIMRUNTIME/menu.vim + :set wildmenu + :set cpo-=< + :set wcm= + :map :emenu +Pressing will start the menu. You can now use the cursor keys to select +a menu entry. Hit to execute it. Hit if you want to cancel. +This does require the |+menu| feature enabled at compile time. + + *tear-off-menus* +GTK+ and Motif support Tear-off menus. These are sort of sticky menus or +pop-up menus that are present all the time. If the resizing does not work +correctly, this may be caused by using something like "Vim*geometry" in the +defaults. Use "Vim.geometry" instead. + +The Win32 GUI version emulates Motif's tear-off menus. Actually, a Motif user +will spot the differences easily, but hopefully they're just as useful. You +can also use the |:tearoff| command together with |hidden-menus| to create +floating menus that do not appear on the main menu bar. + + +5.2 Creating New Menus *creating-menus* + + *:me* *:menu* *:noreme* *:noremenu* + *:am* *:amenu* *:an* *:anoremenu* + *:nme* *:nmenu* *:nnoreme* *:nnoremenu* + *:ome* *:omenu* *:onoreme* *:onoremenu* + *:vme* *:vmenu* *:vnoreme* *:vnoremenu* + *:ime* *:imenu* *:inoreme* *:inoremenu* + *:cme* *:cmenu* *:cnoreme* *:cnoremenu* + *E330* *E327* *E331* *E336* *E333* + *E328* *E329* *E337* +To create a new menu item, use the ":menu" commands. They are mostly like +the ":map" set of commands but the first argument is a menu item name, given +as a path of menus and submenus with a '.' between them. eg: > + + :menu File.Save :w + :inoremenu File.Save :w + :menu Edit.Big\ Changes.Delete\ All\ Spaces :%s/[ ^I]//g + +This last one will create a new item in the menu bar called "Edit", holding +the mouse button down on this will pop up a menu containing the item +"Big Changes", which is a sub-menu containing the item "Delete All Spaces", +which when selected, performs the operation. + +Special characters in a menu name: + + & The next character is the shortcut key. Make sure each + shortcut key is only used once in a (sub)menu. If you want to + insert a literal "&" in the menu name use "&&". + Separates the menu name from right-aligned text. This can be + used to show the equivalent typed command. The text "" + can be used here for convenience. If you are using a real + Tab, don't forget to put a backslash before it! +Example: > + + :amenu &File.&Open:e :browse e + +[typed literally] +With the shortcut "F" (while keeping the key pressed), and then "O", +this menu can be used. The second part is shown as "Open :e". The ":e" +is right aligned, and the "O" is underlined, to indicate it is the shortcut. + +The ":amenu" command can be used to define menu entries for all modes at once. +To make the command work correctly, a character is automatically inserted for +some modes: + mode inserted appended ~ + Normal nothing nothing + Visual + Insert + Cmdline + Op-pending + +Appending CTRL-\ CTRL-G is for going back to insert mode when 'insertmode' is +set. |CTRL-\_CTRL-G| + +Example: > + + :amenu File.Next :next^M + +is equal to: > + + :nmenu File.Next :next^M + :vmenu File.Next ^C:next^M^\^G + :imenu File.Next ^O:next^M + :cmenu File.Next ^C:next^M^\^G + :omenu File.Next ^C:next^M^\^G + +Careful: In Insert mode this only works for a SINGLE Normal mode command, +because of the CTRL-O. If you have two or more commands, you will need to use +the ":imenu" command. For inserting text in any mode, you can use the +expression register: > + + :amenu Insert.foobar "='foobar'P + +Note that the '<' and 'k' flags in 'cpoptions' also apply here (when +included they make the <> form and raw key codes not being recognized). + +Note that in Cmdline mode executes the command, like in a mapping. This +is Vi compatible. Use CTRL-C to quit Cmdline mode. + + *:menu-* *:menu-silent* +To define a menu which will not be echoed on the command line, add +"" as the first argument. Example: > + :menu Settings.Ignore\ case :set ic +The ":set ic" will not be echoed when using this menu. Messages from the +executed command are still given though. To shut them up too, add a ":silent" +in the executed command: > + :menu Search.Header :exe ":silent normal /Header\r" +< + *:menu- + +See |mysyntaxfile-add| for installing script languages permanently. + + +APACHE *apache.vim* *apache-syntax* + +The apache syntax file provides syntax highlighting depending on Apache HTTP +server version, by default for 1.3.x. Set "apache_version" to Apache version +(as a string) to get highlighting for another version. Example: > + + :let apache_version = "2.0" +< + + *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* +ASSEMBLY *asm-syntax* *asmh8300-syntax* *nasm-syntax* *masm-syntax* + *asm68k-syntax* *fasm.vim* + +Files matching "*.i" could be Progress or Assembly. If the automatic detection +doesn't work for you, or you don't edit Progress at all, use this in your +startup vimrc: > + :let filetype_i = "asm" +Replace "asm" with the type of assembly you use. + +There are many types of assembly languages that all use the same file name +extensions. Therefore you will have to select the type yourself, or add a +line in the assembly file that Vim will recognize. Currently these syntax +files are included: + asm GNU assembly (the default) + asm68k Motorola 680x0 assembly + asmh8300 Hitachi H-8300 version of GNU assembly + ia64 Intel Itanium 64 + fasm Flat assemlby (http://flatassembler.net) + masm Microsoft assembly (probably works for any 80x86) + nasm Netwide assembly + tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and + MMX) + pic PIC assembly (currently for PIC16F84) + +The most flexible is to add a line in your assembly file containing: > + :asmsyntax=nasm +Replace "nasm" with the name of the real assembly syntax. This line must be +one of the first five lines in the file. + +The syntax type can always be overruled for a specific buffer by setting the +b:asmsyntax variable: > + :let b:asmsyntax=nasm + +If b:asmsyntax is not set, either automatically or by hand, then the value of +the global variable asmsyntax is used. This can be seen as a default assembly +language: > + :let asmsyntax=nasm + +As a last resort, if nothing is defined, the "asm" syntax is used. + + +Netwide assembler (nasm.vim) optional highlighting ~ + +To enable a feature: > + :let {variable}=1|set syntax=nasm +To disable a feature: > + :unlet {variable} |set syntax=nasm + +Variable Highlight ~ +nasm_loose_syntax unofficial parser allowed syntax not as Error + (parser dependent; not recommended) +nasm_ctx_outside_macro contexts outside macro not as Error +nasm_no_warn potentially risky syntax not as ToDo + + +ASPPERL and ASPVBS *aspperl-syntax* *aspvbs-syntax* + +*.asp and *.asa files could be either Perl or Visual Basic script. Since it's +hard to detect this you can set two global variables to tell Vim what you are +using. For Perl script use: > + :let g:filetype_asa = "aspperl" + :let g:filetype_asp = "aspperl" +For Visual Basic use: > + :let g:filetype_asa = "aspvbs" + :let g:filetype_asp = "aspvbs" + + +BASIC *basic.vim* *vb.vim* *basic-syntax* *vb-syntax* + +Both Visual Basic and "normal" basic use the extension ".bas". To detect +which one should be used, Vim checks for the string "VB_Name" in the first +five lines of the file. If it is not found, filetype will be "basic", +otherwise "vb". Files with the ".frm" extension will always be seen as Visual +Basic. + + +C *c.vim* *c-syntax* + +A few things in C highlighting are optional. To enable them assign any value +to the respective variable. Example: > + :let c_comment_strings=1 +To disable them use ":unlet". Example: > + :unlet c_comment_strings + +Variable Highlight ~ +c_gnu GNU gcc specific items +c_comment_strings strings and numbers inside a comment +c_space_errors trailing white space and spaces before a +c_no_trail_space_error ... but no trailing spaces +c_no_tab_space_error ... but no spaces before a +c_no_bracket_error don't highlight {}; inside [] as errors +c_no_ansi don't do standard ANSI types and constants +c_ansi_typedefs ... but do standard ANSI types +c_ansi_constants ... but do standard ANSI constants +c_no_utf don't highlight \u and \U in strings +c_syntax_for_h use C syntax for *.h files, instead of C++ +c_no_if0 don't highlight "#if 0" blocks as comments +c_no_cformat don't highlight %-formats in strings +c_no_c99 don't highlight C99 standard items + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "c_minlines" internal variable +to a larger number: > + :let c_minlines = 100 +This will make the syntax synchronization start 100 lines before the first +displayed line. The default value is 50 (15 when c_no_if0 is set). The +disadvantage of using a larger number is that redrawing can become slow. + +When using the "#if 0" / "#endif" comment highlighting, notice that this only +works when the "#if 0" is within "c_minlines" from the top of the window. If +you have a long "#if 0" construct it will not be highlighted correctly. + +To match extra items in comments, use the cCommentGroup cluster. +Example: > + :au Syntax c call MyCadd() + :function MyCadd() + : syn keyword cMyItem contained Ni + : syn cluster cCommentGroup add=cMyItem + : hi link cMyItem Title + :endfun + +ANSI constants will be highlighted with the "cConstant" group. This includes +"NULL", "SIG_IGN" and others. But not "TRUE", for example, because this is +not in the ANSI standard. If you find this confusing, remove the cConstant +highlighting: > + :hi link cConstant NONE + +If you see '{' and '}' highlighted as an error where they are OK, reset the +highlighting for cErrInParen and cErrInBracket. + +If you want to use folding in your C files, you can add these lines in a file +an the "after" directory in 'runtimepath'. For Unix this would be +~/.vim/after/syntax/c.vim. > + syn region myFold start="{" end="}" transparent fold + syn sync fromstart + set foldmethod=syntax + + +CHILL *chill.vim* *chill-syntax* + +Chill syntax highlighting is similar to C. See |c.vim| for all the settings +that are available. Additionally there is: + +chill_syntax_for_h use Ch syntax for *.h files, instead of C or C++ +chill_space_errors like c_space_errors +chill_comment_string like c_comment_strings +chill_minlines like c_minlines + + +CHANGELOG *changelog.vim* *changelog-syntax* + +ChangeLog supports highlighting spaces at the start of a line. +If you do not like this, add following line to your .vimrc: > + let g:changelog_spacing_errors = 0 +This works the next time you edit a changelog file. You can also use +"b:changelog_spacing_errors" to set this per buffer (before loading the syntax +file). + +You can change the highlighting used, e.g., to flag the spaces as an error: > + :hi link ChangelogError Error +Or to avoid the highlighting: > + :hi link ChangelogError NONE +This works immediately. + + +COBOL *cobol.vim* *cobol-syntax* + +COBOL highlighting has different needs for legacy code than it does for fresh +development. This is due to differences in what is being done (maintenance +versus development) and other factors. To enable legacy code highlighting, +add this line to your .vimrc: > + :let cobol_legacy_code = 1 +To disable it again, use this: > + :unlet cobol_legacy_code + + +COLD FUSION *coldfusion.vim* *coldfusion-syntax* + +The ColdFusion has its own version of HTML comments. To turn on ColdFusion +comment highlighting, add the following line to your startup file: > + + :let html_wrong_comments = 1 + +The ColdFusion syntax file is based on the HTML syntax file. + + +CSH *csh.vim* *csh-syntax* + +This covers the shell named "csh". Note that on some systems tcsh is actually +used. + +Detecting wether a file is csh or tcsh is notoriously hard. Some systems +symlink /bin/csh to /bin/tcsh, making it almost impossible to distinguish +between csh and tcsh. In case VIM guesses wrong you can set the +"filetype_csh" variable. For using csh: > + + :let filetype_csh = "csh" + +For using tcsh: > + + :let filetype_csh = "tcsh" + +Any script with a tcsh extension or a standard tcsh filename (.tcshrc, +tcsh.tcshrc, tcsh.login) will have filetype tcsh. All other tcsh/csh scripts +will be classified as tcsh, UNLESS the "filetype_csh" variable exists. If the +"filetype_csh" variable exists, the filetype will be set to the value of the +variable. + + +CYNLIB *cynlib.vim* *cynlib-syntax* + +Cynlib files are C++ files that use the Cynlib class library to enable +hardware modeling and simulation using C++. Typically Cynlib files have a .cc +or a .cpp extension, which makes it very difficult to distinguish them from a +normal C++ file. Thus, to enable Cynlib highlighting for .cc files, add this +line to your .vimrc file: > + + :let cynlib_cyntax_for_cc=1 + +Similarly for cpp files (this extension is only usually used in Windows) > + + :let cynlib_cyntax_for_cpp=1 + +To disable these again, use this: > + + :unlet cynlib_cyntax_for_cc + :unlet cynlib_cyntax_for_cpp +< + +CWEB *cweb.vim* *cweb-syntax* + +Files matching "*.w" could be Progress or cweb. If the automatic detection +doesn't work for you, or you don't edit Progress at all, use this in your +startup vimrc: > + :let filetype_w = "cweb" + + +DESKTOP *desktop.vim* *desktop-syntax* + +Primary goal of this syntax file is to highlight .desktop and .directory files +according to freedesktop.org standard: http://pdx.freedesktop.org/Standards/ +But actually almost none implements this standard fully. Thus it will +highlight all Unix ini files. But you can force strict highlighting according +to standard by placing this in your vimrc file: > + :let enforce_freedesktop_standard = 1 + + +DIRCOLORS *dircolors.vim* *dircolors-syntax* + +The dircolors utility highlighting definition has one option. It exists to +provide compatibility with the Slackware GNU/Linux distributions version of +the command. It adds a few keywords that are generally ignored by most +versions. On Slackware systems, however, the utility accepts the keywords and +uses them for processing. To enable the Slackware keywords add the following +line to your startup file: > + let dircolors_is_slackware = 1 + + +DOCBOOK *docbk.vim* *docbk-syntax* *docbook* +DOCBOOK XML *docbkxml.vim* *docbkxml-syntax* +DOCBOOK SGML *docbksgml.vim* *docbksgml-syntax* + +There are two types of DocBook files: SGML and XML. To specify what type you +are using the "b:docbk_type" variable should be set. Vim does this for you +automatically if it can recognize the type. When Vim can't guess it the type +defaults to XML. +You can set the type manually: > + :let docbk_type = "sgml" +or: > + :let docbk_type = "xml" +You need to do this before loading the syntax file, which is complicated. +Simpler is setting the filetype to "docbkxml" or "docbksgml": > + :set filetype=docbksgml +or: > + :set filetype=docbkxml + + +DOSBATCH *dosbatch.vim* *dosbatch-syntax* + +There is one option with highlighting DOS batch files. This covers new +extensions to the Command Interpreter introduced with Windows 2000 and +is controlled by the variable dosbatch_cmdextversion. For Windows NT +this should have the value 1, and for Windows 2000 it should be 2. +Select the version you want with the following line: > + + :let dosbatch_cmdextversion = 1 + +If this variable is not defined it defaults to a value of 2 to support +Windows 2000. + + +DTD *dtd.vim* *dtd-syntax* + +The DTD syntax highlighting is case sensitive by default. To disable +case-sensitive highlighting, add the following line to your startup file: > + + :let dtd_ignore_case=1 + +The DTD syntax file will highlight unknown tags as errors. If +this is annoying, it can be turned off by setting: > + + :let dtd_no_tag_errors=1 + +before sourcing the dtd.vim syntax file. +Parameter entity names are highlighted in the definition using the +'Type' highlighting group and 'Comment' for punctuation and '%'. +Parameter entity instances are highlighted using the 'Constant' +highlighting group and the 'Type' highlighting group for the +delimiters % and ;. This can be turned off by setting: > + + :let dtd_no_param_entities=1 + +The DTD syntax file is also included by xml.vim to highlight included dtd's. + + +EIFFEL *eiffel.vim* *eiffel-syntax* + +While Eiffel is not case-sensitive, its style guidelines are, and the +syntax highlighting file encourages their use. This also allows to +highlight class names differently. If you want to disable case-sensitive +highlighting, add the following line to your startup file: > + + :let eiffel_ignore_case=1 + +Case still matters for class names and TODO marks in comments. + +Conversely, for even stricter checks, add one of the following lines: > + + :let eiffel_strict=1 + :let eiffel_pedantic=1 + +Setting eiffel_strict will only catch improper capitalization for the +five predefined words "Current", "Void", "Result", "Precursor", and +"NONE", to warn against their accidental use as feature or class names. + +Setting eiffel_pedantic will enforce adherence to the Eiffel style +guidelines fairly rigorously (like arbitrary mixes of upper- and +lowercase letters as well as outdated ways to capitalize keywords). + +If you want to use the lower-case version of "Current", "Void", +"Result", and "Precursor", you can use > + + :let eiffel_lower_case_predef=1 + +instead of completely turning case-sensitive highlighting off. + +Support for ISE's proposed new creation syntax that is already +experimentally handled by some compilers can be enabled by: > + + :let eiffel_ise=1 + +Finally, some vendors support hexadecimal constants. To handle them, add > + + :let eiffel_hex_constants=1 + +to your startup file. + + +ERLANG *erlang.vim* *erlang-syntax* + +The erlang highlighting supports Erlang (ERicsson LANGuage). +Erlang is case sensitive and default extension is ".erl". + +If you want to disable keywords highlighting, put in your .vimrc: > + :let erlang_keywords = 1 +If you want to disable built-in-functions highlighting, put in your +.vimrc file: > + :let erlang_functions = 1 +If you want to disable special characters highlighting, put in +your .vimrc: > + :let erlang_characters = 1 + + +FORM *form.vim* *form-syntax* + +The coloring scheme for syntax elements in the FORM file uses the default +modes Conditional, Number, Statement, Comment, PreProc, Type, and String, +following the language specifications in 'Symbolic Manipulation with FORM'' by +J.A.M. Vermaseren, CAN, Netherlands, 1991. + +If you want include your own changes to the default colors, you have to +redefine the following syntax groups: + + - formConditional + - formNumber + - formStatement + - formHeaderStatement + - formComment + - formPreProc + - formDirective + - formType + - formString + +Note that the form.vim syntax file implements FORM preprocessor commands and +directives per default in the same syntax group. + +A predefined enhanced color mode for FORM is available to distinguish between +header statements and statements in the body of a FORM program. To activate +this mode define the following variable in your vimrc file > + + :let form_enhanced_color=1 + +The enhanced mode also takes advantage of additional color features for a dark +gvim display. Here, statements are colored LightYellow instead of Yellow, and +conditionals are LightBlue for better distinction. + + +FORTRAN *fortran.vim* *fortran-syntax* + +Default highlighting and dialect ~ +Highlighting appropriate for f95 (Fortran 95) is used by default. This choice +should be appropriate for most users most of the time because Fortran 95 is a +superset of Fortran 90 and almost a superset of Fortran 77. + +Fortran source code form ~ +Fortran 9x code can be in either fixed or free source form. Note that the +syntax highlighting will not be correct if the form is incorrectly set. + +When you create a new fortran file, the syntax script assumes fixed source +form. If you always use free source form, then > + :let fortran_free_source=1 +in your .vimrc prior to the :syntax on command. If you always use fixed source +form, then > + :let fortran_fixed_source=1 +in your .vimrc prior to the :syntax on command. + +If the form of the source code depends upon the file extension, then it is +most convenient to set fortran_free_source in a ftplugin file. For more +information on ftplugin files, see |ftplugin|. For example, if all your +fortran files with an .f90 extension are written in free source form and the +rest in fixed source form, add the following code to your ftplugin file > + let s:extfname = expand("%:e") + if s:extfname ==? "f90" + let fortran_free_source=1 + unlet! fortran_fixed_source + else + let fortran_fixed_source=1 + unlet! fortran_free_source + endif +Note that this will work only if the "filetype plugin indent on" command +precedes the "syntax on" command in your .vimrc file. + +When you edit an existing fortran file, the syntax script will assume free +source form if the fortran_free_source variable has been set, and assumes +fixed source form if the fortran_fixed_source variable has been set. If +neither of these variables have been set, the syntax script attempts to +determine which source form has been used by examining the first five columns +of the first 25 lines of your file. If no signs of free source form are +detected, then the file is assumed to be in fixed source form. The algorithm +should work in the vast majority of cases. In some cases, such as a file that +begins with 25 or more full-line comments, the script may incorrectly decide +that the fortran code is in fixed form. If that happens, just add a +non-comment statement beginning anywhere in the first five columns of the +first twenty five lines, save (:w) and then reload (:e!) the file. + +Tabs in fortran files ~ +Tabs are not recognized by the Fortran standards. Tabs are not a good idea in +fixed format fortran source code which requires fixed column boundaries. +Therefore, tabs are marked as errors. Nevertheless, some programmers like +using tabs. If your fortran files contain tabs, then you should set the +variable fortran_have_tabs in your .vimrc with a command such as > + :let fortran_have_tabs=1 +placed prior to the :syntax on command. Unfortunately, the use of tabs will +mean that the syntax file will not be able to detect incorrect margins. + +Syntax folding of fortran files ~ +If you wish to use foldmethod=syntax, then you must first set the variable +fortran_fold with a command such as > + :let fortran_fold=1 +to instruct the syntax script to define fold regions for program units, that +is main programs starting with a program statement, subroutines, function +subprograms, block data subprograms, interface blocks, and modules. If you +also set the variable fortran_fold_conditionals with a command such as > + :let fortran_fold_conditionals=1 +then fold regions will also be defined for do loops, if blocks, and select +case constructs. If you also set the variable +fortran_fold_multilinecomments with a command such as > + :let fortran_fold_multilinecomments=1 +then fold regions will also be defined for three or more consecutive comment +lines. Note that defining fold regions can be slow for large files. + +If fortran_fold, and possibly fortran_fold_conditionals and/or +fortran_fold_multilinecomments, have been set, then vim will fold your file if +you set foldmethod=syntax. Comments or blank lines placed between two program +units are not folded because they are seen as not belonging to any program +unit. + +More precise fortran syntax ~ +If you set the variable fortran_more_precise with a command such as > + :let fortran_more_precise=1 +then the syntax coloring will be more precise but slower. In particular, +statement labels used in do, goto and arithmetic if statements will be +recognized, as will construct names at the end of a do, if, select or forall +construct. + +Non-default fortran dialects ~ +The syntax script supports five Fortran dialects: f95, f90, f77, the Lahey +subset elf90, and the Imagine1 subset F. + +If you use f77 with extensions, even common ones like do/enddo loops, do/while +loops and free source form that are supported by most f77 compilers including +g77 (GNU Fortran), then you will probably find the default highlighting +satisfactory. However, if you use strict f77 with no extensions, not even free +source form or the MIL STD 1753 extensions, then the advantages of setting the +dialect to f77 are that names such as SUM are recognized as user variable +names and not highlighted as f9x intrinsic functions, that obsolete constructs +such as ASSIGN statements are not highlighted as todo items, and that fixed +source form will be assumed. + +If you use elf90 or F, the advantage of setting the dialect appropriately is +that f90 features excluded from these dialects will be highlighted as todo +items and that free source form will be assumed as required for these +dialects. + +The dialect can be selected by setting the variable fortran_dialect. The +permissible values of fortran_dialect are case-sensitive and must be "f95", +"f90", "f77", "elf" or "F". Invalid values of fortran_dialect are ignored. + +If all your fortran files use the same dialect, set fortran_dialect in your +.vimrc prior to your syntax on statement. If the dialect depends upon the file +extension, then it is most convenient to set it in a ftplugin file. For more +information on ftplugin files, see |ftplugin|. For example, if all your +fortran files with an .f90 extension are written in the elf subset, your +ftplugin file should contain the code > + let s:extfname = expand("%:e") + if s:extfname ==? "f90" + let fortran_dialect="elf" + else + unlet! fortran_dialect + endif +Note that this will work only if the "filetype plugin indent on" command +precedes the "syntax on" command in your .vimrc file. + +Finer control is necessary if the file extension does not uniquely identify +the dialect. You can override the default dialect, on a file-by-file basis, by +including a comment with the directive "fortran_dialect=xx" (where xx=f77 or +elf or F or f90 or f95) in one of the first three lines in your file. For +example, your older .f files may be written in extended f77 but your newer +ones may be F codes, and you would identify the latter by including in the +first three lines of those files a Fortran comment of the form > + ! fortran_dialect=F +F overrides elf if both directives are present. + +Limitations ~ +Parenthesis checking does not catch too few closing parentheses. Hollerith +strings are not recognized. Some keywords may be highlighted incorrectly +because Fortran90 has no reserved words. + +For further information related to fortran, see |fortran-indent| and +|fortran-plugin|. + + +FVWM CONFIGURATION FILES *fvwm.vim* *fvwm-syntax* + +In order for Vim to recognize Fvwm configuration files that do not match +the patterns *fvwmrc* or *fvwm2rc* , you must put additional patterns +appropriate to your system in your myfiletypes.vim file. For these +patterns, you must set the variable "b:fvwm_version" to the major version +number of Fvwm, and the 'filetype' option to fvwm. + +For example, to make Vim identify all files in /etc/X11/fvwm2/ +as Fvwm2 configuration files, add the following: > + + :au! BufNewFile,BufRead /etc/X11/fvwm2/* let b:fvwm_version = 2 | + \ set filetype=fvwm + +If you'd like Vim to highlight all valid color names, tell it where to +find the color database (rgb.txt) on your system. Do this by setting +"rgb_file" to its location. Assuming your color database is located +in /usr/X11/lib/X11/, you should add the line > + + :let rgb_file = "/usr/X11/lib/X11/rgb.txt" + +to your .vimrc file. + + +GSP *gsp.vim* + +The default coloring style for GSP pages is defined by |html.vim|, and +the coloring for java code (within java tags or inline between backticks) +is defined by |java.vim|. The following HTML groups defined in |html.vim| +are redefined to incorporate and highlight inline java code: + + htmlString + htmlValue + htmlEndTag + htmlTag + htmlTagN + +Highlighting should look fine most of the places where you'd see inline +java code, but in some special cases it may not. To add another HTML +group where you will have inline java code where it does not highlight +correctly, just copy the line you want from |html.vim| and add gspJava +to the contains clause. + +The backticks for inline java are highlighted according to the htmlError +group to make them easier to see. + + +GROFF *groff.vim* *groff-syntax* + +The groff syntax file is a wrapper for |nroff.vim|, see the notes +under that heading for examples of use and configuration. The purpose +of this wrapper is to set up groff syntax extensions by setting the +filetype from a |modeline| or in a personal filetype definitions file +(see |filetype.txt|). + + +HASKELL *haskell.vim* *lhaskell.vim* *haskell-syntax* + +The Haskell syntax files support plain Haskell code as well as literate +Haskell code, the latter in both Bird style and TeX style. The Haskell +syntax highlighting will also highlight C preprocessor directives. + +If you want to highlight delimiter characters (useful if you have a +light-coloured background), add to your .vimrc: > + :let hs_highlight_delimiters = 1 +To treat True and False as keywords as opposed to ordinary identifiers, +add: > + :let hs_highlight_boolean = 1 +To also treat the names of primitive types as keywords: > + :let hs_highlight_types = 1 +And to treat the names of even more relatively common types as keywords: > + :let hs_highlight_more_types = 1 +If you want to highlight the names of debugging functions, put in +your .vimrc: > + :let hs_highlight_debug = 1 + +The Haskell syntax highlighting also highlights C preprocessor +directives, and flags lines that start with # but are not valid +directives as erroneous. This interferes with Haskell's syntax for +operators, as they may start with #. If you want to highlight those +as operators as opposed to errors, put in your .vimrc: > + :let hs_allow_hash_operator = 1 + +The syntax highlighting for literate Haskell code will try to +automatically guess whether your literate Haskell code contains +TeX markup or not, and correspondingly highlight TeX constructs +or nothing at all. You can override this globally by putting +in your .vimrc > + :let lhs_markup = none +for no highlighting at all, or > + :let lhs_markup = tex +to force the highlighting to always try to highlight TeX markup. +For more flexibility, you may also use buffer local versions of +this variable, so e.g. > + :let b:lhs_markup = tex +will force TeX highlighting for a particular buffer. It has to be +set before turning syntax highlighting on for the buffer or +loading a file. + + +HTML *html.vim* *html-syntax* + +The coloring scheme for tags in the HTML file works as follows. + +The <> of opening tags are colored differently than the of a closing tag. +This is on purpose! For opening tags the 'Function' color is used, while for +closing tags the 'Type' color is used (See syntax.vim to check how those are +defined for you) + +Known tag names are colored the same way as statements in C. Unknown tag +names are colored with the same color as the <> or respectively which +makes it easy to spot errors + +Note that the same is true for argument (or attribute) names. Known attribute +names are colored differently than unknown ones. + +Some HTML tags are used to change the rendering of text. The following tags +are recognized by the html.vim syntax coloring file and change the way normal +text is shown: ( is used as an alias for , +while as an alias for ),

-

, , and <A>, but +only if used as a link that is, it must include a href as in +<A href="somfile.html">). + +If you want to change how such text is rendered, you must redefine the +following syntax groups: + + - htmlBold + - htmlBoldUnderline + - htmlBoldUnderlineItalic + - htmlUnderline + - htmlUnderlineItalic + - htmlItalic + - htmlTitle for titles + - htmlH1 - htmlH6 for headings + +To make this redefinition work you must redefine them all with the exception +of the last two (htmlTitle and htmlH[1-6], which are optional) and define the +following variable in your vimrc (this is due to the order in which the files +are read during initialization) > + :let html_my_rendering=1 + +If you'd like to see an example download mysyntax.vim at +http://www.fleiner.com/vim/download.html + +You can also disable this rendering by adding the following line to your +vimrc file: > + :let html_no_rendering=1 + +HTML comments are rather special (see an HTML reference document for the +details), and the syntax coloring scheme will highlight all errors. +However, if you prefer to use the wrong style (starts with <!-- and +ends with --!>) you can define > + :let html_wrong_comments=1 + +JavaScript and Visual Basic embedded inside HTML documents are highlighted as +'Special' with statements, comments, strings and so on colored as in standard +programming languages. Note that only JavaScript and Visual Basic are currently +supported, no other scripting language has been added yet. + +Embedded and inlined cascading style sheets (CSS) are highlighted too. + +There are several html preprocessor languages out there. html.vim has been +written such that it should be trivial to include it. To do so add the +following two lines to the syntax coloring file for that language +(the example comes from the asp.vim file): + + runtime! syntax/html.vim + syn cluster htmlPreproc add=asp + +Now you just need to make sure that you add all regions that contain +the preprocessor language to the cluster htmlPreproc. + + +HTML/OS (by Aestiva) *htmlos.vim* *htmlos-syntax* + +The coloring scheme for HTML/OS works as follows: + +Functions and variable names are the same color by default, because VIM +doesn't specify different colors for Functions and Identifiers. To change +this (which is recommended if you want function names to be recognizable in a +different color) you need to add the following line to either your ~/.vimrc: > + :hi Function term=underline cterm=bold ctermfg=LightGray + +Of course, the ctermfg can be a different color if you choose. + +Another issues that HTML/OS runs into is that there is no special filetype to +signify that it is a file with HTML/OS coding. You can change this by opening +a file and turning on HTML/OS syntax by doing the following: > + :set syntax=htmlos + +Lastly, it should be noted that the opening and closing characters to begin a +block of HTML/OS code can either be << or [[ and >> or ]], respectively. + + +IA64 *ia64.vim* *intel-itanium* *ia64-syntax* + +Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for +how to recognize this filetype. + +To have *.inc files be recognized as IA64, add this to your .vimrc file: > + :let g:filetype_inc = "ia64" + + +INFORM *inform.vim* *inform-syntax* + +Inform highlighting includes symbols provided by the Inform Library, as +most programs make extensive use of it. If do not wish Library symbols +to be highlighted add this to your vim startup: > + :let inform_highlight_simple=1 + +By default it is assumed that Inform programs are Z-machine targeted, +and highlights Z-machine assembly language symbols appropriately. If +you intend your program to be targeted to a Glulx/Glk environment you +need to add this to your startup sequence: > + :let inform_highlight_glulx=1 + +This will highlight Glulx opcodes instead, and also adds glk() to the +set of highlighted system functions. + +The Inform compiler will flag certain obsolete keywords as errors when +it encounters them. These keywords are normally highlighted as errors +by Vim. To prevent such error highlighting, you must add this to your +startup sequence: > + :let inform_suppress_obsolete=1 + +By default, the language features highlighted conform to Compiler +version 6.30 and Library version 6.11. If you are using an older +Inform development environment, you may with to add this to your +startup sequence: > + :let inform_highlight_old=1 + + +JAVA *java.vim* *java-syntax* + +The java.vim syntax highlighting file offers several options: + +In Java 1.0.2 it was never possible to have braces inside parens, so this was +flagged as an error. Since Java 1.1 this is possible (with anonymous +classes), and therefore is no longer marked as an error. If you prefer the old +way, put the following line into your vim startup file: > + :let java_mark_braces_in_parens_as_errors=1 + +All identifiers in java.lang.* are always visible in all classes. To +highlight them use: > + :let java_highlight_java_lang_ids=1 + +You can also highlight identifiers of most standard java packages if you +download the javaid.vim script at http://www.fleiner.com/vim/download.html. +If you prefer to only highlight identifiers of a certain package, say java.io +use the following: > + :let java_highlight_java_io=1 +Check the javaid.vim file for a list of all the packages that are supported. + +Function names are not highlighted, as the way to find functions depends on +how you write java code. The syntax file knows two possible ways to highlight +functions: + +If you write function declarations that are always indented by either +a tab, 8 spaces or 2 spaces you may want to set > + :let java_highlight_functions="indent" +However, if you follow the Java guidelines about how functions and classes are +supposed to be named (with respect to upper and lowercase), use > + :let java_highlight_functions="style" +If both options do not work for you, but you would still want function +declarations to be highlighted create your own definitions by changing the +definitions in java.vim or by creating your own java.vim which includes the +original one and then adds the code to highlight functions. + +In java 1.1 the functions System.out.println() and System.err.println() should +only be used for debugging. Therefor it is possible to highlight debugging +statements differently. To do this you must add the following definition in +your startup file: > + :let java_highlight_debug=1 +The result will be that those statements are highlighted as 'Special' +characters. If you prefer to have them highlighted differently you must define +new highlightings for the following groups.: + Debug, DebugSpecial, DebugString, DebugBoolean, DebugType +which are used for the statement itself, special characters used in debug +strings, strings, boolean constants and types (this, super) respectively. I +have opted to chose another background for those statements. + +In order to help you to write code that can be easily ported between +java and C++, all C++ keywords are marked as error in a java program. +However, if you use them regularly, you may want to define the following +variable in your .vimrc file: > + :let java_allow_cpp_keywords=1 + +Javadoc is a program that takes special comments out of java program files and +creates HTML pages. The standard configuration will highlight this HTML code +similarly to HTML files (see |html.vim|). You can even add javascript +and CSS inside this code (see below). There are four differences however: + 1. The title (all characters up to the first '.' which is followed by + some white space or up to the first '@') is colored differently (to change + the color change the group CommentTitle). + 2. The text is colored as 'Comment'. + 3. HTML comments are colored as 'Special' + 4. The special javadoc tags (@see, @param, ...) are highlighted as specials + and the argument (for @see, @param, @exception) as Function. +To turn this feature off add the following line to your startup file: > + :let java_ignore_javadoc=1 + +If you use the special javadoc comment highlighting described above you +can also turn on special highlighting for javascript, visual basic +scripts and embedded CSS (stylesheets). This makes only sense if you +actually have javadoc comments that include either javascript or embedded +CSS. The options to use are > + :let java_javascript=1 + :let java_css=1 + :let java_vb=1 + +In order to highlight nested parens with different colors define colors +for javaParen, javaParen1 and javaParen2, for example with > + :hi link javaParen Comment +or > + :hi javaParen ctermfg=blue guifg=#0000ff + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "java_minlines" internal variable +to a larger number: > + :let java_minlines = 50 +This will make the syntax synchronization start 50 lines before the first +displayed line. The default value is 10. The disadvantage of using a larger +number is that redrawing can become slow. + + +LACE *lace.vim* *lace-syntax* + +Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the +style guide lines are not. If you prefer case insensitive highlighting, just +define the vim variable 'lace_case_insensitive' in your startup file: > + :let lace_case_insensitive=1 + + +LEX *lex.vim* *lex-syntax* + +Lex uses brute-force synchronizing as the "^%%$" section delimiter +gives no clue as to what section follows. Consequently, the value for > + :syn sync minlines=300 +may be changed by the user if s/he is experiencing synchronization +difficulties (such as may happen with large lex files). + + +LITE *lite.vim* *lite-syntax* + +There are two options for the lite syntax highlighting. + +If you like SQL syntax highlighting inside Strings, use this: > + + :let lite_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "lite_minlines" to the value you desire. Example: > + + :let lite_minlines = 200 + + +LPC *lpc.vim* *lpc-syntax* + +LPC stands for a simple, memory-efficient language: Lars Pensj| C. The +file name of LPC is usually *.c. Recognizing these files as LPC would bother +users writing only C programs. If you want to use LPC syntax in Vim, you +should set a variable in your .vimrc file: > + + :let lpc_syntax_for_c = 1 + +If it doesn't work properly for some particular C or LPC files, use a +modeline. For a LPC file: + + // vim:set ft=lpc: + +For a C file that is recognized as LPC: + + // vim:set ft=c: + +If you don't want to set the variable, use the modeline in EVERY LPC file. + +There are several implementations for LPC, we intend to support most widely +used ones. Here the default LPC syntax is for MudOS series, for MudOS v22 +and before, you should turn off the sensible modifiers, and this will also +asserts the new efuns after v22 to be invalid, don't set this variable when +you are using the latest version of MudOS: > + + :let lpc_pre_v22 = 1 + +For LpMud 3.2 series of LPC: > + + :let lpc_compat_32 = 1 + +For LPC4 series of LPC: > + + :let lpc_use_lpc4_syntax = 1 + +For uLPC series of LPC: +uLPC has been developed to Pike, so you should use Pike syntax +instead, and the name of your source file shoud be *.pike + + +LUA *lua.vim* *lua-syntax* + +This syntax file may be used for Lua 4.0 and Lua 5.0 (default). If you are +programming in Lua 4.0, use this: > + + :let lua_version = 4 + +If lua_version variable doesn't exist, it is set to 5. + + +MAIL *mail.vim* + +Vim highlights all the standard elements of an email (headers, signatures, +quoted text and URLs / email addresses). In keeping with standard conventions, +signatures begin in a line containing only "--" followed optionally by +whitespaces and end with a newline. + +Vim treats lines beginning with ']', '}', '|', '>' or a word followed by '>' +as quoted text. However Vim highlights headers and signatures in quoted text +only if the text is quoted with '>' (optionaly followed by one space). + +By default mail.vim syncronises syntax to 100 lines before the first displayed +line. If you have a slow machine, and generally deal with emails with short +headers, you can change this to a smaller value: > + + :let mail_minlines = 30 + + +MAKE *make.vim* *make-syntax* + +In makefiles, commands are usually highlighted to make it easy for you to spot +errors. However, this may be too much coloring for you. You can turn this +feature off by using: > + + :let make_no_commands = 1 + + +MAPLE *maple.vim* *maple-syntax* + +Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language +supports many packages of functions which are selectively loaded by the user. +The standard set of packages' functions as supplied in Maple V release 4 may be +highlighted at the user's discretion. Users may place in their .vimrc file: > + + :let mvpkg_all= 1 + +to get all package functions highlighted, or users may select any subset by +choosing a variable/package from the table below and setting that variable to +1, also in their .vimrc file (prior to sourcing +$VIMRUNTIME/syntax/syntax.vim). + + Table of Maple V Package Function Selectors > + mv_DEtools mv_genfunc mv_networks mv_process + mv_Galois mv_geometry mv_numapprox mv_simplex + mv_GaussInt mv_grobner mv_numtheory mv_stats + mv_LREtools mv_group mv_orthopoly mv_student + mv_combinat mv_inttrans mv_padic mv_sumtools + mv_combstruct mv_liesymm mv_plots mv_tensor + mv_difforms mv_linalg mv_plottools mv_totorder + mv_finance mv_logic mv_powseries + + +MOO *moo.vim* *moo-syntax* + +If you use C-style comments inside expressions and find it mangles your +highlighting, you may want to use extended (slow!) matches for C-style +comments: > + + :let moo_extended_cstyle_comments = 1 + +To disable highlighting of pronoun substitution patterns inside strings: > + + :let moo_no_pronoun_sub = 1 + +To disable highlighting of the regular expression operator '%|', and matching +'%(' and '%)' inside strings: > + + :let moo_no_regexp = 1 + +Unmatched double quotes can be recognized and highlighted as errors: > + + :let moo_unmatched_quotes = 1 + +To highlight builtin properties (.name, .location, .programmer etc.): > + + :let moo_builtin_properties = 1 + +Unknown builtin functions can be recognized and highlighted as errors. If you +use this option, add your own extensions to the mooKnownBuiltinFunction group. +To enable this option: > + + :let moo_unknown_builtin_functions = 1 + +An example of adding sprintf() to the list of known builtin functions: > + + :syn keyword mooKnownBuiltinFunction sprintf contained + + +MSQL *msql.vim* *msql-syntax* + +There are two options for the msql syntax highlighting. + +If you like SQL syntax highlighting inside Strings, use this: > + + :let msql_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "msql_minlines" to the value you desire. Example: > + + :let msql_minlines = 200 + + +NCF *ncf.vim* *ncf-syntax* + +There is one option for NCF syntax highlighting. + +If you want to have unrecognized (by ncf.vim) statements highlighted as +errors, use this: > + + :let ncf_highlight_unknowns = 1 + +If you don't want to highlight these errors, leave it unset. + + +NROFF *nroff.vim* *nroff-syntax* + +The nroff syntax file works with AT&T n/troff out of the box. You need to +activate the GNU groff extra features included in the syntax file before you +can use them. + +For example, Linux and BSD distributions use groff as their default text +processing package. In order to activate the extra syntax highliting features +for groff, add the following option to your start-up files: > + + :let b:nroff_is_groff = 1 + +Groff is different from the old AT&T n/troff that you may still find in +Solaris. Groff macro and request names can be longer than 2 characters and +there are extensions to the language primitives. For example, in AT&T troff +you access the year as a 2-digit number with the request \(yr. In groff you +can use the same request, recognized for compatibility, or you can use groff's +native syntax, \[yr]. Furthermore, you can use a 4-digit year directly: +\[year]. Macro requests can be longer than 2 characters, for example, GNU mm +accepts the requests ".VERBON" and ".VERBOFF" for creating verbatim +environments. + +In order to obtain the best formatted output g/troff can give you, you should +follow a few simple rules about spacing and punctuation. + +1. Do not leave empty spaces at the end of lines. + +2. Leave one space and one space only after an end-of-sentence period, + exclamation mark, etc. + +3. For reasont stated below, it is best to follow all period marks with a + carriage return. + +The reason behind these unusual tips is that g/n/troff have a line breaking +algorithm that can be easily upset if you don't follow the rules given above. + +Unlike TeX, troff fills text line-by-line, not paragraph-by-paragraph and, +furthermore, it does not have a concept of glue or stretch, all horizontal and +vertical space input will be output as is. + +Therefore, you should be careful about not using more space between sentences +than you intend to have in your final document. For this reason, the common +practice is to insert a carriage return immediately after all punctuation +marks. If you want to have "even" text in your final processed output, you +need to maintaining regular spacing in the input text. To mark both trailing +spaces and two or more spaces after a punctuation as an error, use: > + + :let nroff_space_errors = 1 + +Another technique to detect extra spacing and other errors that will interfere +with the correct typesetting of your file, is to define an eye-catching +highliting definition for the syntax groups "nroffDefinition" and +"nroffDefSpecial" in your configuration files. For example: > + + hi def nroffDefinition term=italic cterm=italic gui=reverse + hi def nroffDefSpecial term=italic,bold cterm=italic,bold + \ gui=reverse,bold + +If you want to navigate preprocessor entries in your source file as easily as +with section markers, you can activate the following option in your .vimrc +file: > + + let b:preprocs_as_sections = 1 + +As well, the syntax file adds an extra paragraph marker for the exdented +paragraph macro (.XP) in the ms package. + +Finally, there is a |groff.vim| syntax file that can be used for enabling +groff syntax highlighting either on a file basis or globally by default. + + +OCAML *ocaml.vim* *ocaml-syntax* + +The OCaml syntax file handles files having the following prefixes: .ml, +.mli, .mll and .mly. By setting the following variable > + + :let ocaml_revised = 1 + +you can switch from standard OCaml-syntax to revised syntax as supported +by the camlp4 preprocessor. Setting the variable > + + :let ocaml_noend_error = 1 + +prevents highlighting of "end" as error, which is useful when sources +contain very long structures that Vim does not synchronize anymore. + + +PAPP *papp.vim* *papp-syntax* + +The PApp syntax file handles .papp files and, to a lesser extend, .pxml +and .pxsl files which are all a mixture of perl/xml/html/other using xml +as the top-level file format. By default everything inside phtml or pxml +sections is treated as a string with embedded preprocessor commands. If +you set the variable: > + + :let papp_include_html=1 + +in your startup file it will try to syntax-hilight html code inside phtml +sections, but this is relatively slow and much too colourful to be able to +edit sensibly ;) + +The newest version of the papp.vim syntax file can usually be found at +http://papp.plan9.de. + + +PASCAL *pascal.vim* *pascal-syntax* + +Files matching "*.p" could be Progress or Pascal. If the automatic detection +doesn't work for you, or you don't edit Progress at all, use this in your +startup vimrc: > + + :let filetype_p = "pascal" + +The Pascal syntax file has been extended to take into account some extensions +provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler. +Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are +enabled. If you prefer to stick with the standard Pascal keywords, add the +following line to your startup file: > + + :let pascal_traditional=1 + +To switch on Delphi specific constructions (such as one-line comments, +keywords, etc): > + + :let pascal_delphi=1 + + +The option pascal_symbol_operator controls whether symbol operators such as +, +*, .., etc. are displayed using the Operator color or not. To colorize symbol +operators, add the following line to your startup file: > + + :let pascal_symbol_operator=1 + +Some functions are highlighted by default. To switch it off: > + + :let pascal_no_functions=1 + +Furthermore, there are specific variable for some compiler. Besides +pascal_delphi, there are pascal_gpc and pascal_fpc. Default extensions try to +match Turbo Pascal. > + + :let pascal_gpc=1 + +or > + + :let pascal_fpc=1 + +To ensure that strings are defined on a single line, you can define the +pascal_one_line_string variable. > + + :let pascal_one_line_string=1 + +If you dislike <Tab> chars, you can set the pascal_no_tabs variable. Tabs +will be highlighted as Error. > + + :let pascal_no_tabs=1 + + + +PERL *perl.vim* *perl-syntax* + +There are a number of possible options to the perl syntax highlighting. + +If you use POD files or POD segments, you might: > + + :let perl_include_pod = 1 + +To handle package references in variable and function names differently from +the rest of the name (like 'PkgName::' in '$PkgName::VarName'): > + + :let perl_want_scope_in_variables = 1 + +If you want complex things like '@{${"foo"}}' to be parsed: > + + :let perl_extended_vars = 1 + +The coloring strings can be changed. By default strings and qq friends will be +highlighted like the first line. If you set the variable +perl_string_as_statement, it will be highlighted as in the second line. + + "hello world!"; qq|hello world|; + ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) + S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN (let perl_string_as_statement) + +(^ = perlString, S = perlStatement, N = None at all) + +The syncing has 3 options. The first two switch off some triggering of +synchronization and should only be needed in case it fails to work properly. +If while scrolling all of a sudden the whole screen changes color completely +then you should try and switch off one of those. Let me know if you can figure +out the line that causes the mistake. + +One triggers on "^\s*sub\s*" and the other on "^[$@%]" more or less. > + + :let perl_no_sync_on_sub + :let perl_no_sync_on_global_var + +Below you can set the maximum distance VIM should look for starting points for +its attempts in syntax highlighting. > + + :let perl_sync_dist = 100 + +If you want to use folding with perl, set perl_fold: > + + :let perl_fold = 1 + + +PHP3 and PHP4 *php.vim* *php3.vim* *php-syntax* *php3-syntax* + +[note: previously this was called "php3", but since it now also supports php4 +it has been renamed to "php"] + +There are the following options for the php syntax highlighting. + +If you like SQL syntax highlighting inside Strings: > + + let php_sql_query = 1 + +For highlighting the Baselib methods: > + + let php_baselib = 1 + +Enable HTML syntax highlighting inside strings: > + + let php_htmlInStrings = 1 + +Using the old colorstyle: > + + let php_oldStyle = 1 + +Enable highlighting ASP-style short tags: > + + let php_asp_tags = 1 + +Disable short tags: > + + let php_noShortTags = 1 + +For highlighting parent error ] or ): > + + let php_parent_error_close = 1 + +For skipping an php end tag, if there exists an open ( or [ without a closing +one: > + + let php_parent_error_open = 1 + +Enable folding for classes and functions: > + + let php_folding = 1 + +Selecting syncing method: > + + let php_sync_method = x + +x = -1 to sync by search (default), +x > 0 to sync at least x lines backwards, +x = 0 to sync from start. + + +PPWIZARD *ppwiz.vim* *ppwiz-syntax* + +PPWizard is a preprocessor for HTML and OS/2 INF files + +This syntax file has the options: + +- ppwiz_highlight_defs : determines highlighting mode for PPWizard's + definitions. Possible values are + + ppwiz_highlight_defs = 1 : PPWizard #define statements retain the + colors of their contents (e. g. PPWizard macros and variables) + + ppwiz_highlight_defs = 2 : preprocessor #define and #evaluate + statements are shown in a single color with the exception of line + continuation symbols + + The default setting for ppwiz_highlight_defs is 1. + +- ppwiz_with_html : If the value is 1 (the default), highlight literal + HTML code; if 0, treat HTML code like ordinary text. + + +PHTML *phtml.vim* *phtml-syntax* + +There are two options for the phtml syntax highlighting. + +If you like SQL syntax highlighting inside Strings, use this: > + + :let phtml_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "phtml_minlines" to the value you desire. Example: > + + :let phtml_minlines = 200 + + +POSTSCRIPT *postscr.vim* *postscr-syntax* + +There are several options when it comes to highlighting PostScript. + +First which version of the PostScript language to highlight. There are +currently three defined language versions, or levels. Level 1 is the original +and base version, and includes all extensions prior to the release of level 2. +Level 2 is the most common version around, and includes its own set of +extensions prior to the release of level 3. Level 3 is currently the highest +level supported. You select which level of the PostScript language you want +highlighted by defining the postscr_level variable as follows: > + + :let postscr_level=2 + +If this variable is not defined it defaults to 2 (level 2) since this is +the most prevalent version currently. + +Note, not all PS interpreters will support all language features for a +particular language level. In particular the %!PS-Adobe-3.0 at the start of +PS files does NOT mean the PostScript present is level 3 PostScript! + +If you are working with Display PostScript, you can include highlighting of +Display PS language features by defining the postscr_display variable as +follows: > + + :let postscr_display=1 + +If you are working with Ghostscript, you can include highlighting of +Ghostscript specific language features by defining the variable +postscr_ghostscript as follows: > + + :let postscr_ghostscript=1 + +PostScript is a large language, with many predefined elements. While it +useful to have all these elements highlighted, on slower machines this can +cause Vim to slow down. In an attempt to be machine friendly font names and +character encodings are not highlighted by default. Unless you are working +explicitly with either of these this should be ok. If you want them to be +highlighted you should set one or both of the following variables: > + + :let postscr_fonts=1 + :let postscr_encodings=1 + +There is a stylistic option to the highlighting of and, or, and not. In +PostScript the function of these operators depends on the types of their +operands - if the operands are booleans then they are the logical operators, +if they are integers then they are binary operators. As binary and logical +operators can be highlighted differently they have to be highlighted one way +or the other. By default they are treated as logical operators. They can be +highlighted as binary operators by defining the variable +postscr_andornot_binary as follows: > + + :let postscr_andornot_binary=1 +< + + *ptcap.vim* +PRINTCAP + TERMCAP *ptcap-syntax* *termcap-syntax* *printcap-syntax* + +This syntax file applies to the printcap and termcap databases. + +In order for Vim to recognize printcap/termcap files that do not match +the patterns *printcap*, or *termcap*, you must put additional patterns +appropriate to your system in your |myfiletypefile| file. For these +patterns, you must set the variable "b:ptcap_type" to either "print" or +"term", and then the 'filetype' option to ptcap. + +For example, to make Vim identify all files in /etc/termcaps/ as termcap +files, add the following: > + + :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" | + \ set filetype=ptcap + +If you notice highlighting errors while scrolling backwards, which +are fixed when redrawing with CTRL-L, try setting the "ptcap_minlines" +internal variable to a larger number: > + + :let ptcap_minlines = 50 + +(The default is 20 lines.) + + +PROGRESS *progress.vim* *progress-syntax* + +Files matching "*.w" could be Progress or cweb. If the automatic detection +doesn't work for you, or you don't edit cweb at all, use this in your +startup vimrc: > + :let filetype_w = "progress" +The same happens for "*.i", which could be assembly, and "*.p", which could be +Pascal. Use this if you don't use assembly and Pascal: > + :let filetype_i = "progress" + :let filetype_p = "progress" + + +PYTHON *python.vim* *python-syntax* + +There are four options to control Python syntax highlighting. + +For highlighted numbers: > + :let python_highlight_numbers = 1 + +For highlighted builtin functions: > + :let python_highlight_builtins = 1 + +For highlighted standard exceptions: > + :let python_highlight_exceptions = 1 + +For highlighted trailing whitespace and mix of spaces and tabs: + :let python_highlight_space_errors = 1 + +If you want all possible Python highlighting (the same as setting the +preceding three options): > + :let python_highlight_all = 1 + + +QUAKE *quake.vim* *quake-syntax* + +The Quake syntax definition should work for most any FPS (First Person +Shooter) based on one of the Quake engines. However, the command names vary +a bit between the three games (Quake, Quake 2, and Quake 3 Arena) so the +syntax definition checks for the existence of three global variables to allow +users to specify what commands are legal in their files. The three variables +can be set for the following effects: + +set to highlight commands only available in Quake: > + :let quake_is_quake1 = 1 + +set to highlight commands only available in Quake 2: > + :let quake_is_quake2 = 1 + +set to highlight commands only available in Quake 3 Arena: > + :let quake_is_quake3 = 1 + +Any combination of these three variables is legal, but might highlight more +commands than are actually available to you by the game. + + +READLINE *readline.vim* *readline-syntax* + +The readline library is primarily used by the BASH shell, which adds quite a +few commands and options to the ones already available. To highlight these +items as well you can add the following to your |vimrc| or just type it in the +command line before loading a file with the readline syntax: > + let readline_has_bash = 1 + +This will add highlighting for the commands that BASH (version 2.05a and +later, and part earlier) adds. + + +REXX *rexx.vim* *rexx-syntax* + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable +to a larger number: > + :let rexx_minlines = 50 +This will make the syntax synchronization start 50 lines before the first +displayed line. The default value is 10. The disadvantage of using a larger +number is that redrawing can become slow. + + +RUBY *ruby.vim* *ruby-syntax* + +There are a few options to the Ruby syntax highlighting. + +By default, the "end" keyword is colorized according to the opening statement +of the block it closes. While useful, this feature can be expensive: if you +experience slow redrawing (or you are on a terminal with poor color support) +you may want to turn it off by defining the "ruby_no_expensive" variable: > + :let ruby_no_expensive = 1 +In this case the same color will be used for all control keywords. + +If you do want this feature enabled, but notice highlighting errors while +scrolling backwards, which are fixed when redrawing with CTRL-L, try setting +the "ruby_minlines" variable to a value larger than 50: > + :let ruby_minlines = 100 +Ideally, this value should be a number of lines large enough to embrace your +largest class or module. + +Finally, if you do not like to see too many color items around, you can define +"ruby_no_identifiers": > + :let ruby_no_identifiers = 1 +This will prevent highlighting of special identifiers like "ConstantName", +"$global_var", "@instance_var", "| iterator |", and ":symbol". + + +SDL *sdl.vim* *sdl-syntax* + +The SDL highlighting probably misses a few keywords, but SDL has so many +of them it's almost impossibly to cope. + +The new standard, SDL-2000, specifies that all identifiers are +case-sensitive (which was not so before), and that all keywords can be +used either completely lowercase or completely uppercase. To have the +highlighting reflect this, you can set the following variable: > + :let sdl_2000=1 + +This also sets many new keywords. If you want to disable the old +keywords, which is probably a good idea, use: > + :let SDL_no_96=1 + + +The indentation is probably also incomplete, but right now I am very +satisfied with it for my own projects. + + +SED *sed.vim* *sed-syntax* + +To make tabs stand out from regular blanks (accomplished by using Todo +highlighting on the tabs), define "highlight_sedtabs" by putting > + + :let highlight_sedtabs = 1 + +in the vimrc file. (This special highlighting only applies for tabs +inside search patterns, replacement texts, addresses or text included +by an Append/Change/Insert command.) If you enable this option, it is +also a good idea to set the tab width to one character; by doing that, +you can easily count the number of tabs in a string. + +Bugs: + + The transform command (y) is treated exactly like the substitute + command. This means that, as far as this syntax file is concerned, + transform accepts the same flags as substitute, which is wrong. + (Transform accepts no flags.) I tolerate this bug because the + involved commands need very complex treatment (95 patterns, one for + each plausible pattern delimiter). + + +SGML *sgml.vim* *sgml-syntax* + +The coloring scheme for tags in the SGML file works as follows. + +The <> of opening tags are colored differently than the </> of a closing tag. +This is on purpose! For opening tags the 'Function' color is used, while for +closing tags the 'Type' color is used (See syntax.vim to check how those are +defined for you) + +Known tag names are colored the same way as statements in C. Unknown tag +names are not colored which makes it easy to spot errors. + +Note that the same is true for argument (or attribute) names. Known attribute +names are colored differently than unknown ones. + +Some SGML tags are used to change the rendering of text. The following tags +are recognized by the sgml.vim syntax coloring file and change the way normal +text is shown: <varname> <emphasis> <command> <function> <literal> +<replaceable> <ulink> and <link>. + +If you want to change how such text is rendered, you must redefine the +following syntax groups: + + - sgmlBold + - sgmlBoldItalic + - sgmlUnderline + - sgmlItalic + - sgmlLink for links + +To make this redefinition work you must redefine them all and define the +following variable in your vimrc (this is due to the order in which the files +are read during initialization) > + let sgml_my_rendering=1 + +You can also disable this rendering by adding the following line to your +vimrc file: > + let sgml_no_rendering=1 + +(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>) + + +SH *sh.vim* *sh-syntax* + +This covers the "normal" Unix (Bourne) sh, bash and the Korn shell. + +Vim attempts to determine which shell type is in use by specifying that +various filenames are of specific types: > + + ksh : .kshrc* *.ksh + bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash +< +If none of these cases pertain, then the first line of the file is examined +(ex. /bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, +then that shelltype is used. However some files (ex. .profile) are known to +be shell files but the type is not apparent. Furthermore, on many systems +sh is symbolically linked to "bash" (linux) or "ksh" (posix). + +One may specify a global default by instantiating one of the following three +variables in your <.vimrc>: + + ksh: > + let is_kornshell = 1 +< bash: > + let is_bash = 1 +< sh: > + let is_sh = 1 + +If, in your <.vimrc>, you set > + let g:sh_fold_enabled= 1 +> +then various syntax items (HereDocuments and function bodies) become +syntax-foldable (see |:syn-fold|). + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "sh_minlines" internal variable +to a larger number. Example: > + + let sh_minlines = 500 + +This will make syntax synchronization start 500 lines before the first +displayed line. The default value is 200. The disadvantage of using a larger +number is that redrawing can become slow. + +If you don't have much to synchronize on, displaying can be very slow. To +reduce this, the "sh_maxlines" internal variable can be set. Example: > + + let sh_maxlines = 100 +< +The default is to use the twice sh_minlines. Set it to a smaller number to +speed up displaying. The disadvantage is that highlight errors may appear. + + +SPEEDUP (AspenTech plant simulator) *spup.vim* *spup-syntax* + +The Speedup syntax file has some options: + +- strict_subsections : If this variable is defined, only keywords for + sections and subsections will be highlighted as statements but not + other keywords (like WITHIN in the OPERATION section). + +- highlight_types : Definition of this variable causes stream types + like temperature or pressure to be highlighted as Type, not as a + plain Identifier. Included are the types that are usually found in + the DECLARE section; if you defined own types, you have to include + them in the syntax file. + +- oneline_comments : this value ranges from 1 to 3 and determines the + highlighting of # style comments. + + oneline_comments = 1 : allow normal Speedup code after an even + number of #s. + + oneline_comments = 2 : show code starting with the second # as + error. This is the default setting. + + oneline_comments = 3 : show the whole line as error if it contains + more than one #. + +Since especially OPERATION sections tend to become very large due to +PRESETting variables, syncing may be critical. If your computer is +fast enough, you can increase minlines and/or maxlines near the end of +the syntax file. + + +TCSH *tcsh.vim* *tcsh-syntax* + +This covers the shell named "tcsh". It is a superset of csh. See |csh.vim| +for how the filetype is detected. + +Tcsh does not allow \" in strings unless the "backslash_quote" shell variable +is set. If you want VIM to assume that no backslash quote constructs exist add +this line to your .vimrc: > + + :let tcsh_backslash_quote = 0 + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "tcsh_minlines" internal variable +to a larger number: > + + :let tcsh_minlines = 100 + +This will make the syntax synchronization start 100 lines before the first +displayed line. The default value is 15. The disadvantage of using a larger +number is that redrawing can become slow. + + +TEX *tex.vim* *tex-syntax* + +Run-on Comments/Math? ~ + +The tex highlighting supports TeX, LaTeX, and some AmsTeX. The +highlighting supports three primary zones: normal, texZone, and texMathZone. +Although a considerable effort has been made to have these zones terminate +properly, zones delineated by $..$ and $$..$$ cannot be synchronized as +there's no difference between start and end patterns. Consequently, a +special "TeX comment" has been provided > + %stopzone +which will forcibly terminate the highlighting of either a texZone or a +texMathZone. + +Slow Syntax Highlighting? ~ + +If you have a slow computer, you may wish to reduce the values for > + :syn sync maxlines=200 + :syn sync minlines=50 +(especially the latter). If your computer is fast, you may wish to +increase them. This primarily affects synchronizing (ie. just what group, +if any, is the text at the top of the screen supposed to be in?). + +Excessive Error Highlighting? ~ + +The <tex.vim> supports lexical error checking of various sorts. Thus, +although the error checking is ofttimes very useful, it can indicate +errors where none actually are. If this proves to be a problem for you, +you may put in your <.vimrc> the following statement: > + let tex_no_error=1 +and all error checking by <tex.vim> will be suppressed. + +Need a new Math Group? ~ + +If you want to include a new math group in your LaTeX, the following +code shows you an example as to how you might do so: > + + syn cluster texMathZones add=texMathZoneLOCAL + syn region texMathZoneLOCAL start="\\begin\s*{\s*LOCALMATH\s*}" + \ end="\\end\s*{\s*LOCALMATH\s*}" keepend + \ contains=@texMathZoneGroup + if !exists("tex_no_math") + syn sync match texSyncMathZoneLOCAL grouphere texMathZoneLOCAL + \ "\\begin\s*{\s*LOCALMATH\*\s*}" + syn sync match texSyncMathZoneLOCAL groupthere NONE + \ "\\end\s*{\s*LOCALMATH\*\s*}" + endif + hi link texMathZoneLOCAL texMath +< +You'll need to change LOCALMATH to the name of your new math group, +and then to put it into .vim/after/syntax/tex.vim. + +Starting a New Style? ~ + +One may use "\makeatletter" in *.tex files, thereby making the use of "@" in +commands available. However, since the *.tex file doesn't have one of the +following suffices: sty cls clo dtx ltx, the syntax highlighting will flag +such use of @ as an error. To solve this: > + + :let b:tex_stylish = 1 + :set ft=tex + +Putting "let g:tex_stylish=1" into your <.vimrc> will make <syntax/tex.vim> +always accept such use of @. + + +TF *tf.vim* *tf-syntax* + +There is one option for the tf syntax highlighting. + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "tf_minlines" to the value you desire. Example: > + + :let tf_minlines = your choice + + +VIM *vim.vim* *vim-syntax* + +There is a tradeoff between more accurate syntax highlighting versus +screen updating speed. To improve accuracy, you may wish to increase +the g:vim_minlines variable. The g:vim_maxlines variable may be used +to improve screen updating rates (see |:syn-sync| for more on this). + + g:vim_minlines : used to set synchronization minlines + g:vim_maxlines : used to set synchronization maxlines + +The g:vimembedscript option allows for somewhat faster loading of syntax +highlighting for vim scripts at the expense of supporting syntax highlighting +for external scripting languages (currently perl, python, ruby, and tcl). + + g:vimembedscript == 1 (default) <vim.vim> will allow highlighting + g:vimembedscript doesn't exist of supported embedded scripting + languages: perl, python, ruby and + tcl. + + g:vimembedscript == 0 Syntax highlighting for embedded + scripting languages will not be + loaded. + + +XF86CONFIG *xf86conf.vim* *xf86conf-syntax* + +The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both +variants are supported. Automatic detection is used, but is far from perfect. +You may need to specify the version manually. Set the variable +xf86conf_xfree86_version to 3 or 4 according to your XFree86 version in +your .vimrc. Example: > + :let xf86conf_xfree86_version=3 +When using a mix of versions, set the b:xf86conf_xfree86_version variable. + +Note that spaces and underscores in option names are not supported. Use +"SyncOnGreen" instead of "__s yn con gr_e_e_n" if you want the option name +highlighted. + + +XML *xml.vim* *xml-syntax* + +Xml namespaces are highlighted by default. This can be inhibited by +setting a global variable: > + + :let g:xml_namespace_transparent=1 +< + *xml-folding* +The xml syntax file provides syntax |folding| (see |:syn-fold|) between +start and end tags. This can be turned on by > + + :let g:xml_syntax_folding = 1 + :set foldmethod=syntax + +Note: syntax folding might slow down syntax highlighting significantly, +especially for large files. + + +X Pixmaps (XPM) *xpm.vim* *xpm-syntax* + +xpm.vim creates its syntax items dynamically based upon the contents of the +XPM file. Thus if you make changes e.g. in the color specification strings, +you have to source it again e.g. with ":set syn=xpm". + +To copy a pixel with one of the colors, yank a "pixel" with "yl" and insert it +somewhere else with "P". + +Do you want to draw with the mouse? Try the following: > + :function! GetPixel() + : let c = getline(line("."))[col(".") - 1] + : echo c + : exe "noremap <LeftMouse> <LeftMouse>r".c + : exe "noremap <LeftDrag> <LeftMouse>r".c + :endfunction + :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR> + :set guicursor=n:hor20 " to see the color beneath the cursor +This turns the right button into a pipette and the left button into a pen. +It will work with XPM files that have one character per pixel only and you +must not click outside of the pixel strings, but feel free to improve it. + +It will look much better with a font in a quadratic cell size, e.g. for X: > + :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* + +============================================================================== +5. Defining a syntax *:syn-define* *E410* + +Vim understands three types of syntax items: + +1. Keyword. + It can only contain keyword characters, according to the 'iskeyword' + option. It cannot contain other syntax items. It will only match with a + complete word (there are no keyword characters before or after the match). + The keyword "if" would match in "if(a=b)", but not in "ifdef x", because + "(" is not a keyword character and "d" is. + +2. Match. + This is a match with a single regexp pattern. + +3. Region. + This starts at a match of the "start" regexp pattern and ends with a match + with the "end" regexp pattern. Any other text can appear in between. A + "skip" regexp pattern can be used to avoid matching the "end" pattern. + +Several syntax ITEMs can be put into one syntax GROUP. For a syntax group +you can give highlighting attributes. For example, you could have an item +to define a "/* .. */" comment and another one that defines a "// .." comment, +and put them both in the "Comment" group. You can then specify that a +"Comment" will be in bold font and have a blue color. You are free to make +one highlight group for one syntax item, or put all items into one group. +This depends on how you want to specify your highlighting attributes. Putting +each item in its own group results in having to specify the highlighting +for a lot of groups. + +Note that a syntax group and a highlight group are similar. For a highlight +group you will have given highlight attributes. These attributes will be used +for the syntax group with the same name. + +In case more than one item matches at the same position, the one that was +defined LAST wins. Thus you can override previously defined syntax items by +using an item that matches the same text. But a keyword always goes before a +match or region. And a keyword with matching case always goes before a +keyword with ignoring case. + + +PRIORITY *:syn-priority* + +When several syntax items may match, these rules are used: + +1. When multiple Match or Region items start in the same position, the item + defined last has priority. +2. A Keyword has priority over Match and Region items. +3. An item that starts in an earlier position has priority over items that + start in later positions. + + +DEFINING CASE *:syn-case* *E390* + +:sy[ntax] case [match|ignore] + This defines if the following ":syntax" commands will work with + matching case, when using "match", or with ignoring case, when using + "ignore". Note that any items before this are not affected, and all + items until the next ":syntax case" command are affected. + + +DEFINING KEYWORDS *:syn-keyword* + +:sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] + + This defines a number of keywords. + + {group-name} Is a syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + {keyword} .. Is a list of keywords which are part of this group. + + Example: > + :syntax keyword Type int long char +< + The {options} can be given anywhere in the line. They will apply to + all keywords given, also for options that come after a keyword. + These examples do exactly the same: > + :syntax keyword Type contained int long char + :syntax keyword Type int long contained char + :syntax keyword Type int long char contained +< + When you have a keyword with an optional tail, like Ex commands in + Vim, you can put the optional characters inside [], to define all the + variations at once: > + :syntax keyword vimCommand ab[breviate] n[ext] +< + Don't forget that a keyword can only be recognized if all the + characters are included in the 'iskeyword' option. If one character + isn't, the keyword will never be recognized. + Multi-byte characters can also be used. These do not have to be in + 'iskeyword'. + + A keyword always has higher priority than a match or region, the + keyword is used if more than one item matches. Keywords do not nest + and a keyword can't contain anything else. + + Note that when you have a keyword that is the same as an option (even + one that isn't allowed here), you can not use it. Use a match + instead. + + The maximum length of a keyword is 80 characters. + + The same keyword can be defined multiple times, when its containment + differs. For example, you can define the keyword once not contained + and use one highlight group, and once contained, and use a different + highlight group. Example: > + :syn keyword vimCommand tag + :syn keyword vimSetting contained tag +< When finding "tag" outside of any syntax item, the "vimCommand" + highlight group is used. When finding "tag" in a syntax item that + contains "vimSetting", the "vimSetting" group is used. + + +DEFINING MATCHES *:syn-match* + +:sy[ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}] + + This defines one match. + + {group-name} A syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + [excludenl] Don't make a pattern with the end-of-line "$" + extend a containing match or region. Must be + given before the pattern. |:syn-excludenl| + {pattern} The search pattern that defines the match. + See |:syn-pattern| below. + Note that the pattern may match more than one + line, which makes the match depend on where + Vim starts searching for the pattern. You + need to make sure syncing takes care of this. + + Example (match a character constant): > + :syntax match Character /'.'/hs=s+1,he=e-1 +< + +DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* + *E398* *E399* +:sy[ntax] region {group-name} [{options}] + [matchgroup={group-name}] + [keepend] + [extend] + [excludenl] + start={start_pattern} .. + [skip={skip_pattern}] + end={end_pattern} .. + [{options}] + + This defines one region. It may span several lines. + + {group-name} A syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + [matchgroup={group-name}] The syntax group to use for the following + start or end pattern matches only. Not used + for the text in between the matched start and + end patterns. Use NONE to reset to not using + a different group for the start or end match. + See |:syn-matchgroup|. + keepend Don't allow contained matches to go past a + match with the end pattern. See + |:syn-keepend|. + extend Override a "keepend" for an item this region + is contained in. See |:syn-extend|. + excludenl Don't make a pattern with the end-of-line "$" + extend a containing match or item. Only + useful for end patterns. Must be given before + the patterns it applies to. |:syn-excludenl| + start={start_pattern} The search pattern that defines the start of + the region. See |:syn-pattern| below. + skip={skip_pattern} The search pattern that defines text inside + the region where not to look for the end + pattern. See |:syn-pattern| below. + end={end_pattern} The search pattern that defines the end of + the region. See |:syn-pattern| below. + + Example: > + :syntax region String start=+"+ skip=+\\"+ end=+"+ +< + The start/skip/end patterns and the options can be given in any order. + There can be zero or one skip pattern. There must be one or more + start and end patterns. This means that you can omit the skip + pattern, but you must give at least one start and one end pattern. It + is allowed to have white space before and after the equal sign + (although it mostly looks better without white space). + + When more than one start pattern is given, a match with one of these + is sufficient. This means there is an OR relation between the start + patterns. The last one that matches is used. The same is true for + the end patterns. + + The search for the end pattern starts right after the start pattern. + Offsets are not used for this. This implies that the match for the + end pattern will never overlap with the start pattern. + + The skip and end pattern can match across line breaks, but since the + search for the pattern can start in any line it often does not do what + you want. The skip pattern doesn't avoid a match of an end pattern in + the next line. Use single-line patterns to avoid trouble. + + Note: The decision to start a region is only based on a matching start + pattern. There is no check for a matching end pattern. This does NOT + work: > + :syn region First start="(" end=":" + :syn region Second start="(" end=";" +< The Second always matches before the First (last defined pattern has + higher priority). The Second region then continues until the next + ';', no matter if there is a ':' before it. Using a match does work: > + :syn match First "(\_.\{-}:" + :syn match Second "(\_.\{-};" +< This pattern matches any character or line break with "\_." and + repeats that with "\{-}" (repeat as few as possible). + + *:syn-keepend* + By default, a contained match can obscure a match for the end pattern. + This is useful for nesting. For example, a region that starts with + "{" and ends with "}", can contain another region. An encountered "}" + will then end the contained region, but not the outer region: + { starts outer "{}" region + { starts contained "{}" region + } ends contained "{}" region + } ends outer "{} region + If you don't want this, the "keepend" argument will make the matching + of an end pattern of the outer region also end any contained item. + This makes it impossible to nest the same region, but allows for + contained items to highlight parts of the end pattern, without causing + that to skip the match with the end pattern. Example: > + :syn match vimComment +"[^"]\+$+ + :syn region vimCommand start="set" end="$" contains=vimComment keepend +< The "keepend" makes the vimCommand always end at the end of the line, + even though the contained vimComment includes a match with the <EOL>. + + When "keepend" is not used, a match with an end pattern is retried + after each contained match. When "keepend" is included, the first + encountered match with an end pattern is used, truncating any + contained matches. + *:syn-extend* + The "keepend" behavior can be changed by using the "extend" argument. + When an item with "extend" is contained in an item that uses + "keepend", the "keepend" is ignored and the containing region will be + extended. + This can be used to have some contained items extend a region while + others don't. Example: > + + :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript + :syn match htmlItem +<[^>]*>+ contained + :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend + +< Here the htmlItem item does not make the htmlRef item continue + further, it is only used to highlight the <> items. The htmlScript + item does extend the htmlRef item. + + Another example: > + :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend +< This defines a region with "keepend", so that its end cannot be + changed by contained items, like when the "</a>" is matched to + highlight it differently. But when the xmlFold region is nested (it + includes itself), the "extend" applies, so that the "</a>" of a nested + region only ends that region, and not the one it is contained in. + + *:syn-excludenl* + When a pattern for a match or end pattern of a region includes a '$' + to match the end-of-line, it will make a region item that it is + contained in continue on the next line. For example, a match with + "\\$" (backslash at the end of the line) can make a region continue + that would normally stop at the end of the line. This is the default + behavior. If this is not wanted, there are two ways to avoid it: + 1. Use "keepend" for the containing item. This will keep all + contained matches from extending the match or region. It can be + used when all contained items must not extend the containing item. + 2. Use "excludenl" in the contained item. This will keep that match + from extending the containing match or region. It can be used if + only some contained items must not extend the containing item. + "excludenl" must be given before the pattern it applies to. + + *:syn-matchgroup* + "matchgroup" can be used to highlight the start and/or end pattern + differently than the body of the region. Example: > + :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ +< This will highlight the quotes with the "Quote" group, and the text in + between with the "String" group. + The "matchgroup" is used for all start and end patterns that follow, + until the next "matchgroup". Use "matchgroup=NONE" to go back to not + using a matchgroup. + + In a start or end pattern that is highlighted with "matchgroup" the + contained items of the region are not used. This can be used to avoid + that a contained item matches in the start or end pattern match. When + using "transparent", this does not apply to a start or end pattern + match that is highlighted with "matchgroup". + + Here is an example, which highlights three levels of parentheses in + different colors: > + :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2 + :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained + :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained + :hi par1 ctermfg=red guifg=red + :hi par2 ctermfg=blue guifg=blue + :hi par3 ctermfg=darkgreen guifg=darkgreen + +============================================================================== +6. :syntax arguments *:syn-arguments* + +The :syntax commands that define syntax items take a number of arguments. +The common ones are explained here. The arguments may be given in any order +and may be mixed with patterns. + +Not all commands accept all arguments. This table shows which arguments +can not be used for all commands: + *E395* *E396* + contains oneline fold display extend ~ +:syntax keyword - - - - - +:syntax match yes - yes yes yes +:syntax region yes yes yes yes yes + +These arguments can be used for all three commands: + contained + containedin + nextgroup + transparent + skipwhite + skipnl + skipempty + + +contained *:syn-contained* + +When the "contained" argument is given, this item will not be recognized at +the top level, but only when it is mentioned in the "contains" field of +another match. Example: > + :syntax keyword Todo TODO contained + :syntax match Comment "//.*" contains=Todo + + +display *:syn-display* + +If the "display" argument is given, this item will be skipped when the +detected highlighting will not be displayed. This will speed up highlighting, +by skipping this item when only finding the syntax state for the text that is +to be displayed. + +Generally, you can use "display" for match and region items that meet these +conditions: +- The item does not continue past the end of a line. Example for C: A region + for a "/*" comment can't contain "display", because it continues on the next + line. +- The item does not contain items that continue past the end of the line or + make it continue on the next line. +- The item does not change the size of any item it is contained in. Example + for C: A match with "\\$" in a preprocessor match can't have "display", + because it may make that preprocessor match shorter. +- The item does not allow other items to match that didn't match otherwise, + and that item may extend the match too far. Example for C: A match for a + "//" comment can't use "display", because a "/*" inside that comment would + match then and start a comment which extends past the end of the line. + +Examples, for the C language, where "display" can be used: +- match with a number +- match with a label + + +transparent *:syn-transparent* + +If the "transparent" argument is given, this item will not be highlighted +itself, but will take the highlighting of the item it is contained in. This +is useful for syntax items that don't need any highlighting but are used +only to skip over a part of the text. + +The "contains=" argument is also inherited from the item it is contained in, +unless a "contains" argument is given for the transparent item itself. To +avoid that unwanted items are contained, use "contains=NONE". Example, which +highlights words in strings, but makes an exception for "vim": > + :syn match myString /'[^']*'/ contains=myWord,myVim + :syn match myWord /\<[a-z]*\>/ contained + :syn match myVim /\<vim\>/ transparent contained contains=NONE + :hi link myString String + :hi link myWord Comment +Since the "myVim" match comes after "myWord" it is the preferred match (last +match in the same position overrules an earlier one). The "transparent" +argument makes the "myVim" match use the same highlighting as "myString". But +it does not contain anything. If the "contains=NONE" argument would be left +out, then "myVim" would use the contains argument from myString and allow +"myWord" to be contained, which will be highlighted as a Constant. This +happens because a contained match doesn't match inside itself in the same +position, thus the "myVim" match doesn't overrule the "myWord" match here. + +When you look at the colored text, it is like looking at layers of contained +items. The contained item is on top of the item it is contained in, thus you +see the contained item. When a contained item is transparent, you can look +through, thus you see the item it is contained in. In a picture: + + look from here + + | | | | | | + V V V V V V + + xxxx yyy more contained items + .................... contained item (transparent) + ============================= first item + +The 'x', 'y' and '=' represent a highlighted syntax item. The '.' represent a +transparent group. + +What you see is: + + =======xxxx=======yyy======== + +Thus you look through the transparent "....". + + +oneline *:syn-oneline* + +The "oneline" argument indicates that the region does not cross a line +boundary. It must match completely in the current line. However, when the +region has a contained item that does cross a line boundary, it continues on +the next line anyway. A contained item can be used to recognize a line +continuation pattern. But the "end" pattern must still match in the first +line, otherwise the region doesn't even start. + +When the start pattern includes a "\n" to match an end-of-line, the end +pattern must be found in the same line as where the start pattern ends. The +end pattern may also include an end-of-line. Thus the "oneline" argument +means that the end of the start pattern and the start of the end pattern must +be within one line. This can't be changed by a skip pattern that matches a +line break. + + +fold *:syn-fold* + +The "fold" argument makes the fold level increased by one for this item. +Example: > + :syn region myFold start="{" end="}" transparent fold + :syn sync fromstart + :set foldmethod=syntax +This will make each {} block form one fold. + +The fold will start on the line where the item starts, and end where the item +ends. If the start and end are within the same line, there is no fold. +The 'foldnestmax' option limits the nesting of syntax folds. +{not available when Vim was compiled without |+folding| feature} + + + *:syn-contains* *E405* *E406* *E407* *E408* *E409* +contains={groupname},.. + +The "contains" argument is followed by a list of syntax group names. These +groups will be allowed to begin inside the item (they may extend past the +containing group's end). This allows for recursive nesting of matches and +regions. If there is no "contains" argument, no groups will be contained in +this item. The group names do not need to be defined before they can be used +here. + +contains=ALL + If the only item in the contains list is "ALL", then all + groups will be accepted inside the item. + +contains=ALLBUT,{group-name},.. + If the first item in the contains list is "ALLBUT", then all + groups will be accepted inside the item, except the ones that + are listed. Example: > + :syntax region Block start="{" end="}" ... contains=ALLBUT,Function + +contains=TOP + If the first item in the contains list is "TOP", then all + groups will be accepted that don't have the "contained" + argument. +contains=TOP,{group-name},.. + Like "TOP", but excluding the groups that are listed. + +contains=CONTAINED + If the first item in the contains list is "CONTAINED", then + all groups will be accepted that have the "contained" + argument. +contains=CONTAINED,{group-name},.. + Like "CONTAINED", but excluding the groups that are + listed. + + +The {group-name} in the "contains" list can be a pattern. All group names +that match the pattern will be included (or excluded, if "ALLBUT" is used). +The pattern cannot contain white space or a ','. Example: > + ... contains=Comment.*,Keyw[0-3] +The matching will be done at moment the syntax command is executed. Groups +that are defined later will not be matched. Also, if the current syntax +command defines a new group, it is not matched. Be careful: When putting +syntax commands in a file you can't rely on groups NOT being defined, because +the file may have been sourced before, and ":syn clear" doesn't remove the +group names. + +The contained groups will also match in the start and end patterns of a +region. If this is not wanted, the "matchgroup" argument can be used +|:syn-matchgroup|. The "ms=" and "me=" offsets can be used to change the +region where contained items do match. Note that this may also limit the +area that is highlighted + + +containedin={groupname}... *:syn-containedin* + +The "containedin" argument is followed by a list of syntax group names. The +item will be allowed to begin inside these groups. This works as if the +containing item has a "contains=" argument that includes this item. + +The {groupname}... can be used just like for "contains", as explained above. + +This is useful when adding a syntax item afterwards. An item can be told to +be included inside an already existing item, without changing the definition +of that item. For example, to highlight a word in a C comment after loading +the C syntax: > + :syn keyword myword HELP containedin=cComment contained +Note that "contained" is also used, to avoid that the item matches at the top +level. + +Matches for "containedin" are added to the other places where the item can +appear. A "contains" argument may also be added as usual. Don't forget that +keywords never contain another item, thus adding them to "containedin" won't +work. + + +nextgroup={groupname},.. *:syn-nextgroup* + +The "nextgroup" argument is followed by a list of syntax group names, +separated by commas (just like with "contains", so you can also use patterns). + +If the "nextgroup" argument is given, the mentioned syntax groups will be +tried for a match, after the match or region ends. If none of the groups have +a match, highlighting continues normally. If there is a match, this group +will be used, even when it is not mentioned in the "contains" field of the +current group. This is like giving the mentioned group priority over all +other groups. Example: > + :syntax match ccFoobar "Foo.\{-}Bar" contains=ccFoo + :syntax match ccFoo "Foo" contained nextgroup=ccFiller + :syntax region ccFiller start="." matchgroup=ccBar end="Bar" contained + +This will highlight "Foo" and "Bar" differently, and only when there is a +"Bar" after "Foo". In the text line below, "f" shows where ccFoo is used for +highlighting, and "bbb" where ccBar is used. > + + Foo asdfasd Bar asdf Foo asdf Bar asdf + fff bbb fff bbb + +Note the use of ".\{-}" to skip as little as possible until the next Bar. +when ".*" would be used, the "asdf" in between "Bar" and "Foo" would be +highlighted according to the "ccFoobar" group, because the ccFooBar match +would include the first "Foo" and the last "Bar" in the line (see |pattern|). + + +skipwhite *:syn-skipwhite* +skipnl *:syn-skipnl* +skipempty *:syn-skipempty* + +These arguments are only used in combination with "nextgroup". They can be +used to allow the next group to match after skipping some text: + skipwhite skip over space and Tab characters + skipnl skip over the end of a line + skipempty skip over empty lines (implies a "skipnl") + +When "skipwhite" is present, the white space is only skipped if there is no +next group that matches the white space. + +When "skipnl" is present, the match with nextgroup may be found in the next +line. This only happens when the current item ends at the end of the current +line! When "skipnl" is not present, the nextgroup will only be found after +the current item in the same line. + +When skipping text while looking for a next group, the matches for other +groups are ignored. Only when no next group matches, other items are tried +for a match again. This means that matching a next group and skipping white +space and <EOL>s has a higher priority than other items. + +Example: > + :syn match ifstart "\<if.*" nextgroup=ifline skipwhite skipempty + :syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained + :syn match ifline "endif" contained +Note that the "[^ \t].*" match matches all non-white text. Thus it would also +match "endif". Therefore the "endif" match is put last, so that it takes +precendence. +Note that this example doesn't work for nested "if"s. You need to add +"contains" arguments to make that work (omitted for simplicity of the +example). + +============================================================================== +7. Syntax patterns *:syn-pattern* *E401* *E402* + +In the syntax commands, a pattern must be surrounded by two identical +characters. This is like it works for the ":s" command. The most common to +use is the double quote. But if the pattern contains a double quote, you can +use another character that is not used in the pattern. Examples: > + :syntax region Comment start="/\*" end="\*/" + :syntax region String start=+"+ end=+"+ skip=+\\"+ + +See |pattern| for the explanation of what a pattern is. Syntax patterns are +always interpreted like the 'magic' options is set, no matter what the actual +value of 'magic' is. And the patterns are interpreted like the 'l' flag is +not included in 'cpoptions'. This was done to make syntax files portable and +independent of 'compatible' and 'magic' settings. + +Try to avoid patterns that can match an empty string, such as "[a-z]*". +This slows down the highlighting a lot, because it matches everywhere. + + *:syn-pattern-offset* +The pattern can be followed by a character offset. This can be used to +change the highlighted part, and to change the text area included in the +match or region (which only matters when trying to match other items). Both +are relative to the matched pattern. The character offset for a skip +pattern can be used to tell where to continue looking for an end pattern. + +The offset takes the form of "{what}={offset}" +The {what} can be one of seven strings: + +ms Match Start offset for the start of the matched text +me Match End offset for the end of the matched text +hs Highlight Start offset for where the highlighting starts +he Highlight End offset for where the highlighting ends +rs Region Start offset for where the body of a region starts +re Region End offset for where the body of a region ends +lc Leading Context offset past "leading context" of pattern + +The {offset} can be: + +s start of the matched pattern +s+{nr} start of the matched pattern plus {nr} chars to the right +s-{nr} start of the matched pattern plus {nr} chars to the left +e end of the matched pattern +e+{nr} end of the matched pattern plus {nr} chars to the right +e-{nr} end of the matched pattern plus {nr} chars to the left +{nr} (for "lc" only): start matching {nr} chars to the left + +Examples: "ms=s+1", "hs=e-2", "lc=3". + +Although all offsets are accepted after any pattern, they are not always +meaningful. This table shows which offsets are actually used: + + ms me hs he rs re lc ~ +match item yes yes yes yes - - yes +region item start yes - yes - yes - yes +region item skip - yes - - - - yes +region item end - yes - yes - yes yes + +Offsets can be concatenated, with a ',' in between. Example: > + :syn match String /"[^"]*"/hs=s+1,he=e-1 +< + some "string" text + ^^^^^^ highlighted + +Notes: +- There must be no white space between the pattern and the character + offset(s). +- The highlighted area will never be outside of the matched text. +- A negative offset for an end pattern may not always work, because the end + pattern may be detected when the highlighting should already have stopped. +- The start of a match cannot be in a line other than where the pattern + matched. This doesn't work: "a\nb"ms=e. You can make the highlighting + start in another line, this does work: "a\nb"hs=e. + +Example (match a comment but don't highlight the /* and */): > + :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1 +< + /* this is a comment */ + ^^^^^^^^^^^^^^^^^^^ highlighted + +A more complicated Example: > + :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1 +< + abcfoostringbarabc + mmmmmmmmmmm match + ssrrrreee highlight start/region/end ("Foo", "Exa" and "Bar") + +Leading context *:syn-lc* *:syn-leading* *:syn-context* + +Note: This is an obsolete feature, only included for backwards compatibility +with previous Vim versions. It's now recommended to use the |/\@<=| construct +in the pattern. + +The "lc" offset specifies leading context -- a part of the pattern that must +be present, but is not considered part of the match. An offset of "lc=n" will +cause Vim to step back n columns before attempting the pattern match, allowing +characters which have already been matched in previous patterns to also be +used as leading context for this match. This can be used, for instance, to +specify that an "escaping" character must not precede the match: > + + :syn match ZNoBackslash "[^\\]z"ms=s+1 + :syn match WNoBackslash "[^\\]w"lc=1 + :syn match Underline "_\+" +< + ___zzzz ___wwww + ^^^ ^^^ matches Underline + ^ ^ matches ZNoBackslash + ^^^^ matches WNoBackslash + +The "ms" offset is automatically set to the same value as the "lc" offset, +unless you set "ms" explicitly. + + +Multi-line patterns *:syn-multi-line* + +The patterns can include "\n" to match an end-of-line. Mostly this works as +expected, but there are a few exceptions. + +When using a start pattern with an offset, the start of the match is not +allowed to start in a following line. The highlighting can start in a +following line though. + +The skip pattern can include the "\n", but the search for an end pattern will +continue in the first character of the next line, also when that character is +matched by the skip pattern. This is because redrawing may start in any line +halfway a region and there is no check if the skip pattern started in a +previous line. For example, if the skip pattern is "a\nb" and an end pattern +is "b", the end pattern does match in the second line of this: > + x x a + b x x +Generally this means that the skip pattern should not match any characters +after the "\n". + + +External matches *:syn-ext-match* + +These extra regular expression items are available in region patterns: + + */\z(* */\z(\)* *E50* *E52* + \z(\) Marks the sub-expression as "external", meaning that it is can + be accessed from another pattern match. Currently only usable + in defining a syntax region start pattern. + + */\z1* */\z2* */\z3* */\z4* */\z5* + \z1 ... \z9 */\z6* */\z7* */\z8* */\z9* *E66* *E67* + Matches the same string that was matched by the corresponding + sub-expression in a previous start pattern match. + +Sometimes the start and end patterns of a region need to share a common +sub-expression. A common example is the "here" document in Perl and many Unix +shells. This effect can be achieved with the "\z" special regular expression +items, which marks a sub-expression as "external", in the sense that it can be +referenced from outside the pattern in which it is defined. The here-document +example, for instance, can be done like this: > + :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" + +As can be seen here, the \z actually does double duty. In the start pattern, +it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it +changes the \1 back-reference into an external reference referring to the +first external sub-expression in the start pattern. External references can +also be used in skip patterns: > + :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" + +Note that normal and external sub-expressions are completely orthogonal and +indexed separately; for instance, if the pattern "\z(..\)\(..\)" is applied +to the string "aabb", then \1 will refer to "bb" and \z1 will refer to "aa". +Note also that external sub-expressions cannot be accessed as back-references +within the same pattern like normal sub-expressions. If you want to use one +sub-expression as both a normal and an external sub-expression, you can nest +the two, as in "\(\z(...\)\)". + +Note that only matches within a single line can be used. Multi-line matches +cannot be referred to. + +============================================================================== +8. Syntax clusters *:syn-cluster* *E400* + +:sy[ntax] cluster {cluster-name} [contains={group-name}..] + [add={group-name}..] + [remove={group-name}..] + +This command allows you to cluster a list of syntax groups together under a +single name. + + contains={group-name}.. + The cluster is set to the specified list of groups. + add={group-name}.. + The specified groups are added to the cluster. + remove={group-name}.. + The specified groups are removed from the cluster. + +A cluster so defined may be referred to in a contains=.., nextgroup=.., add=.. +or remove=.. list with a "@" prefix. You can also use this notation to +implicitly declare a cluster before specifying its contents. + +Example: > + :syntax match Thing "# [^#]\+ #" contains=@ThingMembers + :syntax cluster ThingMembers contains=ThingMember1,ThingMember2 + +As the previous example suggests, modifications to a cluster are effectively +retroactive; the membership of the cluster is checked at the last minute, so +to speak: > + :syntax keyword A aaa + :syntax keyword B bbb + :syntax cluster AandB contains=A + :syntax match Stuff "( aaa bbb )" contains=@AandB + :syntax cluster AandB add=B " now both keywords are matched in Stuff + +This also has implications for nested clusters: > + :syntax keyword A aaa + :syntax keyword B bbb + :syntax cluster SmallGroup contains=B + :syntax cluster BigGroup contains=A,@SmallGroup + :syntax match Stuff "( aaa bbb )" contains=@BigGroup + :syntax cluster BigGroup remove=B " no effect, since B isn't in BigGroup + :syntax cluster SmallGroup remove=B " now bbb isn't matched within Stuff + +============================================================================== +9. Including syntax files *:syn-include* *E397* + +It is often useful for one language's syntax file to include a syntax file for +a related language. Depending on the exact relationship, this can be done in +two different ways: + + - If top-level syntax items in the included syntax file are to be + allowed at the top level in the including syntax, you can simply use + the |:runtime| command: > + + " In cpp.vim: + :runtime! syntax/c.vim + :unlet b:current_syntax + +< - If top-level syntax items in the included syntax file are to be + contained within a region in the including syntax, you can use the + ":syntax include" command: + +:sy[ntax] include [@{grouplist-name}] {file-name} + + All syntax items declared in the included file will have the + "contained" flag added. In addition, if a group list is specified, + all top-level syntax items in the included file will be added to + that list. > + + " In perl.vim: + :syntax include @Pod <sfile>:p:h/pod.vim + :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod +< + When {file-name} is an absolute path (starts with "/", "c:", "$VAR" + or "<sfile>") that file is sourced. When it is a relative path + (e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'. + All matching files are loaded. Using a relative path is + recommended, because it allows a user to replace the included file + with his own version, without replacing the file that does the ":syn + include". + +============================================================================== +10. Synchronizing *:syn-sync* *E403* *E404* + +Vim wants to be able to start redrawing in any position in the document. To +make this possible it needs to know the syntax state at the position where +redrawing starts. + +:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...] + +There are four ways to synchronize: +1. Always parse from the start of the file. + |:syn-sync-first| +2. Based on C-style comments. Vim understands how C-comments work and can + figure out if the current line starts inside or outside a comment. + |:syn-sync-second| +3. Jumping back a certain number of lines and start parsing there. + |:syn-sync-third| +4. Searching backwards in the text for a pattern to sync on. + |:syn-sync-fourth| + + *:syn-sync-maxlines* *:syn-sync-minlines* +For the last three methods, the line range where the parsing can start is +limited by "minlines" and "maxlines". + +If the "minlines={N}" argument is given, the parsing always starts at least +that many lines backwards. This can be used if the parsing may take a few +lines before it's correct, or when it's not possible to use syncing. + +If the "maxlines={N}" argument is given, the number of lines that are searched +for a comment or syncing pattern is restricted to N lines backwards (after +adding "minlines"). This is useful if you have few things to sync on and a +slow machine. Example: > + :syntax sync ccomment maxlines=500 +< + *:syn-sync-linebreaks* +When using a pattern that matches multiple lines, a change in one line may +cause a pattern to no longer match in a previous line. This means has to +start above where the change was made. How many lines can be specified with +the "linebreaks" argument. For example, when a pattern may include one line +break use this: > + :syntax sync linebreaks=1 +The result is that redrawing always starts at least one line before where a +change was made. The default value for "linebreaks" is zero. Usually the +value for "minlines" is bigger than "linebreaks". + + +First syncing method: *:syn-sync-first* +> + :syntax sync fromstart + +The file will be parsed from the start. This makes syntax highlighting +accurate, but can be slow for long files. Vim caches previously parsed text, +so that it's only slow when parsing the text for the first time. However, +when making changes some part of the next needs to be parsed again (worst +case: to the end of the file). + +Using "fromstart" is equivalent to using "minlines" with a very large number. + + +Second syncing method: *:syn-sync-second* *:syn-sync-ccomment* + +For the second method, only the "ccomment" argument needs to be given. +Example: > + :syntax sync ccomment + +When Vim finds that the line where displaying starts is inside a C-style +comment, the last region syntax item with the group-name "Comment" will be +used. This requires that there is a region with the group-name "Comment"! +An alternate group name can be specified, for example: > + :syntax sync ccomment javaComment +This means that the last item specified with "syn region javaComment" will be +used for the detected C comment region. This only works properly if that +region does have a start pattern "\/*" and an end pattern "*\/". + +The "maxlines" argument can be used to restrict the search to a number of +lines. The "minlines" argument can be used to at least start a number of +lines back (e.g., for when there is some construct that only takes a few +lines, but it hard to sync on). + +Note: Syncing on a C comment doesn't work properly when strings are used +that cross a line and contain a "*/". Since letting strings cross a line +is a bad programming habit (many compilers give a warning message), and the +chance of a "*/" appearing inside a comment is very small, this restriction +is hardly ever noticed. + + +Third syncing method: *:syn-sync-third* + +For the third method, only the "minlines={N}" argument needs to be given. +Vim will subtract {N} from the line number and start parsing there. This +means {N} extra lines need to be parsed, which makes this method a bit slower. +Example: > + :syntax sync minlines=50 + +"lines" is equivalent to "minlines" (used by older versions). + + +Fourth syncing method: *:syn-sync-fourth* + +The idea is to synchronize on the end of a few specific regions, called a +sync pattern. Only regions can cross lines, so when we find the end of some +region, we might be able to know in which syntax item we are. The search +starts in the line just above the one where redrawing starts. From there +the search continues backwards in the file. + +This works just like the non-syncing syntax items. You can use contained +matches, nextgroup, etc. But there are a few differences: +- Keywords cannot be used. +- The syntax items with the "sync" keyword form a completely separated group + of syntax items. You can't mix syncing groups and non-syncing groups. +- The matching works backwards in the buffer (line by line), instead of + forwards. +- A line continuation pattern can be given. It is used to decide which group + of lines need to be searched like they were one line. This means that the + search for a match with the specified items starts in the first of the + consecutive that contain the continuation pattern. +- When using "nextgroup" or "contains", this only works within one line (or + group of continued lines). +- When using a region, it must start and end in the same line (or group of + continued lines). Otherwise the end is assumed to be at the end of the + line (or group of continued lines). +- When a match with a sync pattern is found, the rest of the line (or group of + continued lines) is searched for another match. The last match is used. + This is used when a line can contain both the start end the end of a region + (e.g., in a C-comment like /* this */, the last "*/" is used). + +There are two ways how a match with a sync pattern can be used: +1. Parsing for highlighting starts where redrawing starts (and where the + search for the sync pattern started). The syntax group that is expected + to be valid there must be specified. This works well when the regions + that cross lines cannot contain other regions. +2. Parsing for highlighting continues just after the match. The syntax group + that is expected to be present just after the match must be specified. + This can be used when the previous method doesn't work well. It's much + slower, because more text needs to be parsed. +Both types of sync patterns can be used at the same time. + +Besides the sync patterns, other matches and regions can be specified, to +avoid finding unwanted matches. + +[The reason that the sync patterns are given separately, is that mostly the +search for the sync point can be much simpler than figuring out the +highlighting. The reduced number of patterns means it will go (much) +faster.] + + *syn-sync-grouphere* *E393* *E394* + :syntax sync match {sync-group-name} grouphere {group-name} "pattern" .. + + Define a match that is used for syncing. {group-name} is the + name of a syntax group that follows just after the match. Parsing + of the text for highlighting starts just after the match. A region + must exist for this {group-name}. The first one defined will be used. + "NONE" can be used for when there is no syntax group after the match. + + *syn-sync-groupthere* + :syntax sync match {sync-group-name} groupthere {group-name} "pattern" .. + + Like "grouphere", but {group-name} is the name of a syntax group that + is to be used at the start of the line where searching for the sync + point started. The text between the match and the start of the sync + pattern searching is assumed not to change the syntax highlighting. + For example, in C you could search backwards for "/*" and "*/". If + "/*" is found first, you know that you are inside a comment, so the + "groupthere" is "cComment". If "*/" is found first, you know that you + are not in a comment, so the "groupthere" is "NONE". (in practice + it's a bit more complicated, because the "/*" and "*/" could appear + inside a string. That's left as an exercise to the reader...). + + :syntax sync match .. + :syntax sync region .. + + Without a "groupthere" argument. Define a region or match that is + skipped while searching for a sync point. + + :syntax sync linecont {pattern} + + When {pattern} matches in a line, it is considered to continue in + the next line. This means that the search for a sync point will + consider the lines to be concatenated. + +If the "maxlines={N}" argument is given too, the number of lines that are +searched for a match is restricted to N. This is useful if you have very +few things to sync on and a slow machine. Example: > + :syntax sync maxlines=100 + +You can clear all sync settings with: > + :syntax sync clear + +You can clear specific sync patterns with: > + :syntax sync clear {sync-group-name} .. + +============================================================================== +11. Listing syntax items *:syntax* *:sy* *:syn* *:syn-list* + +This commands lists all the syntax items: > + + :sy[ntax] [list] + +To show the syntax items for one syntax group: > + + :sy[ntax] list {group-name} + +To list the syntax groups in one cluster: *E392* > + + :sy[ntax] list @{cluster-name} + +See above for other arguments for the ":syntax" command. + +Note that the ":syntax" command can be abbreviated to ":sy", although ":syn" +is mostly used, because it looks better. + +============================================================================== +12. Highlight command *:highlight* *:hi* *E28* *E411* *E415* + +There are three types of highlight groups: +- The ones used for specific languages. For these the name starts with the + name of the language. Many of these don't have any attributes, but are + linked to a group of the second type. +- The ones used for all syntax languages. +- The ones used for the 'highlight' option. + *hitest.vim* +You can see all the groups currently active with this command: > + :so $VIMRUNTIME/syntax/hitest.vim +This will open a new window containing all highlight group names, displayed +in their own color. + + *:colo* *:colorscheme* *E185* +:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' + for the file "colors/{name}.vim. The first one that + is found is loaded. + To see the name of the currently active color scheme + (if there is one): > + :echo g:colors_name +< Doesn't work recursively, thus you can't use + ":colorscheme" in a color scheme script. + +:hi[ghlight] List all the current highlight groups that have + attributes set. + +:hi[ghlight] {group-name} + List one highlight group. + +:hi[ghlight] clear Reset all highlighting to the defaults. Removes all + highlighting for groups added by the user! + Uses the current value of 'background' to decide which + default colors to use. + +:hi[ghlight] clear {group-name} +:hi[ghlight] {group-name} NONE + Disable the highlighting for one highlight group. It + is _not_ set back to the default colors. + +:hi[ghlight] [default] {group-name} {key}={arg} .. + Add a highlight group, or change the highlighting for + an existing group. + See |highlight-args| for the {key}={arg} arguments. + See |:highlight-default| for the optional [default] + argument. + +Normally a highlight group is added once when starging up. This sets the +default values for the highlighting. After that, you can use additional +highlight commands to change the arguments that you want to set to non-default +values. The value "NONE" can be used to switch the value off or go back to +the default value. + +A simple way to change colors is with the |:colorscheme| command. This loads +a file with ":highlight" commands such as this: > + + :hi Comment gui=bold + +Note that all settings that are not included remain the same, only the +specified field is used, and settings are merged with previous ones. So, the +result is like this single command has been used: > + :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold +< + *highlight-args* *E416* *E417* *E423* +There are three types of terminals for highlighting: +term a normal terminal (vt100, xterm) +cterm a color terminal (MS-DOS console, color-xterm, these have the "Co" + termcap entry) +gui the GUI + +For each type the highlighting can be given. This makes it possible to use +the same syntax file on all terminals, and use the optimal highlighting. + +1. highlight arguments for normal terminals + +term={attr-list} *attr-list* *highlight-term* *E418* + attr-list is a comma separated list (without spaces) of the + following items (in any order): + bold + underline + reverse + inverse same as reverse + italic + standout + NONE no attributes used (used to reset it) + + Note that "bold" can be used here and by using a bold font. They + have the same effect. + +start={term-list} *highlight-start* *E422* +stop={term-list} *term-list* *highlight-stop* + These lists of terminal codes can be used to get + non-standard attributes on a terminal. + + The escape sequence specified with the "start" argument + is written before the characters in the highlighted + area. It can be anything that you want to send to the + terminal to highlight this area. The escape sequence + specified with the "stop" argument is written after the + highlighted area. This should undo the "start" argument. + Otherwise the screen will look messed up. + + The {term-list} can have two forms: + + 1. A string with escape sequences. + This is any string of characters, except that it can't start with + "t_" and blanks are not allowed. The <> notation is recognized + here, so you can use things like "<Esc>" and "<Space>". Example: + start=<Esc>[27h;<Esc>[<Space>r; + + 2. A list of terminal codes. + Each terminal code has the form "t_xx", where "xx" is the name of + the termcap entry. The codes have to be separated with commas. + White space is not allowed. Example: + start=t_C1,t_BL + The terminal codes must exist for this to work. + + +2. highlight arguments for color terminals + +cterm={attr-list} *highlight-cterm* + See above for the description of {attr-list} |attr-list|. + The "cterm" argument is likely to be different from "term", when + colors are used. For example, in a normal terminal comments could + be underlined, in a color terminal they can be made Blue. + Note: Many terminals (e.g., DOS console) can't mix these attributes + with coloring. Use only one of "cterm=" OR "ctermfg=" OR "ctermbg=". + +ctermfg={color-nr} *highlight-ctermfg* *E421* +ctermbg={color-nr} *highlight-ctermbg* + The {color-nr} argument is a color number. Its range is zero to + (not including) the number given by the termcap entry "Co". + The actual color with this number depends on the type of terminal + and its settings. Sometimes the color also depends on the settings of + "cterm". For example, on some systems "cterm=bold ctermfg=3" gives + another color, on others you just get color 3. + + For an xterm this depends on your resources, and is a bit + unpredictable. See your xterm documentation for the defaults. The + colors for a color-xterm can be changed from the .Xdefaults file. + Unfortunately this means that it's not possible to get the same colors + for each user. See |xterm-color| for info about color xterms. + + The MSDOS standard colors are fixed (in a console window), so these + have been used for the names. But the meaning of color names in X11 + are fixed, so these color settings have been used, to make the + highlighting settings portable (complicated, isn't it?). The + following names are recognized, with the color number used: + + *cterm-colors* + NR-16 NR-8 COLOR NAME ~ + 0 0 Black + 1 4 DarkBlue + 2 2 DarkGreen + 3 6 DarkCyan + 4 1 DarkRed + 5 5 DarkMagenta + 6 3 Brown, DarkYellow + 7 7 LightGray, LightGrey, Gray, Grey + 8 0* DarkGray, DarkGrey + 9 4* Blue, LightBlue + 10 2* Green, LightGreen + 11 6* Cyan, LightCyan + 12 1* Red, LightRed + 13 5* Magenta, LightMagenta + 14 3* Yellow, LightYellow + 15 7* White + + The number under "NR-16" is used for 16-color terminals ('t_Co' + greater than or equal to 16). The number under "NR-8" is used for + 8-color terminals ('t_Co' less than 16). The '*' indicates that the + bold attribute is set for ctermfg. In many 8-color terminals (e.g., + "linux"), this causes the bright colors to appear. This doesn't work + for background colors! Without the '*' the bold attribute is removed. + If you want to set the bold attribute in a different way, put a + "cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument. Or use + a number instead of a color name. + + The case of the color names is ignored. + Note that for 16 color ansi style terminals (including xterms), the + numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue + is 12, DarkGray is 8 etc. + + Note that for some color terminals these names may result in the wrong + colors! + + *:hi-normal-cterm* + When setting the "ctermfg" or "ctermbg" colors for the Normal group, + these will become the colors used for the non-highlighted text. + Example: > + :highlight Normal ctermfg=grey ctermbg=darkblue +< When setting the "ctermbg" color for the Normal group, the + 'background' option will be adjusted automatically. This causes the + highlight groups that depend on 'background' to change! This means + you should set the colors for Normal first, before setting other + colors. + When a colorscheme is being used, changing 'background' causes it to + be reloaded, which may reset all colors (including Normal). First + delete the "colors_name" variable when you don't want this. + + When you have set "ctermfg" or "ctermbg" for the Normal group, Vim + needs to reset the color when exiting. This is done with the "op" + termcap entry |t_op|. If this doesn't work correctly, try setting the + 't_op' option in your .vimrc. + *E419* *E420* + When Vim knows the normal foreground and background colors, "fg" and + "bg" can be used as color names. This only works after setting the + colors for the Normal group and for the MS-DOS console. Example, for + reverse video: > + :highlight Visual ctermfg=bg ctermbg=fg +< Note that the colors are used that are valid at the moment this + command are given. If the Normal group colors are changed later, the + "fg" and "bg" colors will not be adjusted. + + +3. highlight arguments for the GUI + +gui={attr-list} *highlight-gui* + These give the attributes to use in the GUI mode. + See |attr-list| for a description. + Note that "bold" can be used here and by using a bold font. They + have the same effect. + Note that the attributes are ignored for the "Normal" group. + +font={font-name} *highlight-font* + font-name is the name of a font, as it is used on the system Vim + runs on. For X11 this is a complicated name, for example: > + font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 +< + The font-name "NONE" can be used to revert to the default font. + When setting the font for the "Normal" group, this becomes the default + font (until the 'guifont' option is changed; the last one set is + used). + The following only works with Motif and Athena, not with other GUIs: + When setting the font for the "Menu" group, the menus will be changed. + When setting the font for the "Tooltip" group, the tooltips will be + changed. + All fonts used, except for Menu and Tooltip, should be of the same + character size as the default font! Otherwise redrawing problems will + occur. + +guifg={color-name} *highlight-guifg* +guibg={color-name} *highlight-guibg* + These give the foreground (guifg) and background (guibg) color to + use in the GUI. There are a few special names: + NONE no color (transparent) + bg use normal background color + background use normal background color + fg use normal foreground color + foreground use normal foreground color + To use a color name with an embedded space or other special character, + put it in single quotes. The single quote cannot be used then. + Example: > + :hi comment guifg='salmon pink' +< + *gui-colors* + Suggested color names (these are available on most systems): + Red LightRed DarkRed + Green LightGreen DarkGreen SeaGreen + Blue LightBlue DarkBlue SlateBlue + Cyan LightCyan DarkCyan + Magenta LightMagenta DarkMagenta + Yellow LightYellow Brown DarkYellow + Gray LightGray DarkGray + Black White + Orange Purple Violet + + In the Win32 GUI version, additional system colors are available. See + |win32-colors|. + + You can also specify a color by its Red, Green and Blue values. + The format is "#rrggbb", where + "rr" is the Red value + "bb" is the Blue value + "gg" is the Green value + All values are hexadecimal, range from "00" to "ff". Examples: > + :highlight Comment guifg=#11f0c3 guibg=#ff00ff +< + *highlight-groups* *highlight-default* +These are the default highlighting groups. These groups are used by the +'highlight' option default. Note that the highlighting depends on the value +of 'background'. You can see the current settings with the ":highlight" +command. + *hl-Cursor* +Cursor the character under the cursor + *hl-CursorIM* +CursorIM like Cursor, but used when in IME mode |CursorIM| + *hl-Directory* +Directory directory names (and other special names in listings) + *hl-DiffAdd* +DiffAdd diff mode: Added line |diff.txt| + *hl-DiffChange* +DiffChange diff mode: Changed line |diff.txt| + *hl-DiffDelete* +DiffDelete diff mode: Deleted line |diff.txt| + *hl-DiffText* +DiffText diff mode: Changed text within a changed line |diff.txt| + *hl-ErrorMsg* +ErrorMsg error messages on the command line + *hl-VertSplit* +VertSplit the column separating vertically split windows + *hl-Folded* +Folded line used for closed folds + *hl-FoldColumn* +FoldColumn 'foldcolumn' + *hl-SignColumn* +SignColumn column where |signs| are displayed + *hl-IncSearch* +IncSearch 'incsearch' highlighting; also used for the text replaced with + ":s///c" + *hl-LineNr* +LineNr line number for ":number" and ":#" commands, and when 'number' + option is set. + *hl-ModeMsg* +ModeMsg 'showmode' message (e.g., "-- INSERT --") + *hl-MoreMsg* +MoreMsg |more-prompt| + *hl-NonText* +NonText '~' and '@' at the end of the window, characters from + 'showbreak' and other characters that do not really exist in + the text (e.g., ">" displayed when a double-wide character + doesn't fit at the end of the line). + *hl-Normal* +Normal normal text + *hl-Question* +Question |hit-enter| prompt and yes/no questions + *hl-Search* +Search Last search pattern highlighting (see 'hlsearch'). + Also used for highlighting the current line in the quickfix + window and similar items that need to stand out. + *hl-SpecialKey* +SpecialKey Meta and special keys listed with ":map", also for text used + to show unprintable characters in the text, 'listchars'. + Generally: text that is displayed differently from what it + really is. + *hl-StatusLine* +StatusLine status line of current window + *hl-StatusLineNC* +StatusLineNC status lines of not-current windows + Note: if this is equal to "StatusLine" Vim will use "^^^" in + the status line of the current window. + *hl-Title* +Title titles for output from ":set all", ":autocmd" etc. + *hl-Visual* +Visual Visual mode selection + *hl-VisualNOS* +VisualNOS Visual mode selection when vim is "Not Owning the Selection". + Only X11 Gui's |gui-x11| and |xterm-clipboard| supports this. + *hl-WarningMsg* +WarningMsg warning messages + *hl-WildMenu* +WildMenu current match in 'wildmenu' completion + + *hl-User1* *hl-User1..9* +The 'statusline' syntax allows the use of 9 different highlights in the +statusline and ruler (via 'rulerformat'). The names are User1 to User9. + +For the GUI you can use these groups to set the colors for the menu, +scrollbars and tooltips. They don't have defaults. This doesn't work for the +Win32 GUI. Only three highlight arguments have any effect here: font, guibg, +and guifg. + + *hl-Menu* +Menu Current font, background and foreground colors of the menus. + Also used for the toolbar. + Applicable highlight arguments: font, guibg, guifg. + + NOTE: For Motif and Athena the font argument actually + specifies a fontset at all times, no matter if 'guifontset' is + empty, and as such it is tied to the current |:language| when + set. + + *hl-Scrollbar* +Scrollbar Current background and foreground of the main window's + scrollbars. + Applicable highlight arguments: guibg, guifg. + + *hl-Tooltip* +Tooltip Current font, background and foreground of the tooltips. + Applicable highlight arguments: font, guibg, guifg. + + NOTE: For Motif and Athena the font argument actually + specifies a fontset at all times, no matter if 'guifontset' is + empty, and as such it is tied to the current |:language| when + set. + +============================================================================== +13. Linking groups *:hi-link* *:highlight-link* *E412* *E413* + +When you want to use the same highlighting for several syntax groups, you +can do this more easily by linking the groups into one common highlight +group, and give the color attributes only for that group. + +To set a link: + + :hi[ghlight][!] [default] link {from-group} {to-group} + +To remove a link: + + :hi[ghlight][!] [default] link {from-group} NONE + +Notes: *E414* +- If the {from-group} and/or {to-group} doesn't exist, it is created. You + don't get an error message for a non-existing group. +- As soon as you use a ":highlight" command for a linked group, the link is + removed. +- If there are already highlight settings for the {from-group}, the link is + not made, unless the '!' is given. For a ":highlight link" command in a + sourced file, you don't get an error message. This can be used to skip + links for groups that already have settings. + + *:hi-default* *:highlight-default* +The [default] argument is used for setting the default highlighting for a +group. If highlighting has already been specified for the group the command +will be ignored. Also when there is an existing link. + +Using [default] is especially useful to overrule the highlighting of a +specific syntax file. For example, the C syntax file contains: > + :highlight default link cComment Comment +If you like Question highlighting for C comments, put this in your vimrc file: > + :highlight link cComment Question +Without the "default" in the C syntax file, the highlighting would be +overruled when the syntax file is loaded. + +============================================================================== +14. Cleaning up *:syn-clear* *E391* + +If you want to clear the syntax stuff for the current buffer, you can use this +command: > + :syntax clear + +This command should be used when you want to switch off syntax highlighting, +or when you want to switch to using another syntax. It's normally not needed +in a syntax file itself, because syntax is cleared by the autocommands that +load the syntax file. +The command also deletes the "b:current_syntax" variable, since no syntax is +loaded after this command. + +If you want to disable syntax highlighting for all buffers, you need to remove +the autocommands that load the syntax files: > + :syntax off + +What this command actually does, is executing the command > + :source $VIMRUNTIME/syntax/nosyntax.vim +See the "nosyntax.vim" file for details. Note that for this to work +$VIMRUNTIME must be valid. See |$VIMRUNTIME|. + +To clean up specific syntax groups for the current buffer: > + :syntax clear {group-name} .. +This removes all patterns and keywords for {group-name}. + +To clean up specific syntax group lists for the current buffer: > + :syntax clear @{grouplist-name} .. +This sets {grouplist-name}'s contents to an empty list. + + *:syntax-reset* *:syn-reset* +If you have changed the colors and messed them up, use this command to get the +defaults back: > + + :syntax reset + +This doesn't change the colors for the 'highlight' option. + +Note that the syntax colors that you set in your vimrc file will also be reset +back to their Vim default. +Note that if you are using a color scheme, the colors defined by the color +scheme for syntax highlighting will be lost. + +What this actually does is: > + + let g:syntax_cmd = "reset" + runtime! syntax/syncolor.vim + +Note that this uses the 'runtimepath' option. + + *syncolor* +If you want to use different colors for syntax highlighting, you can add a Vim +script file to set these colors. Put this file in a directory in +'runtimepath' which comes after $VIMRUNTIME, so that your settings overrule +the default colors. This way these colors will be used after the ":syntax +reset" command. + +For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: > + + if &background == "light" + highlight comment ctermfg=darkgreen guifg=darkgreen + else + highlight comment ctermfg=green guifg=green + endif + +Note that when a color scheme is used, there might be some confusion whether +your defined colors are to be used or the colors from the scheme. This +depends on the color scheme file. See |:colorscheme|. + + *syntax_cmd* +The "syntax_cmd" variable is set to one of these values when the +syntax/syncolor.vim files are loaded: + "on" ":syntax on" command. Highlight colors are overruled but + links are kept + "enable" ":syntax enable" command. Only define colors for groups that + don't have highlighting yet. Use ":syntax default". + "reset" ":syntax reset" command or loading a color scheme. Define all + the colors. + "skip" Dont' define colors. Used to skip the default settings when a + syncolor.vim file earlier in 'runtimepath' has already set + them. + +============================================================================== +15. Highlighting tags *tag-highlight* + +If you want to highlight all the tags in your file, you can use the following +mappings. + + <F11> -- Generate tags.vim file, and highlight tags. + <F12> -- Just highlight tags based on existing tags.vim file. +> + :map <F11> :sp tags<CR>:%s/^\([^ :]*:\)\=\([^ ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12> + :map <F12> :so tags.vim<CR> + +WARNING: The longer the tags file, the slower this will be, and the more +memory Vim will consume. + +Only highlighting typedefs, unions and structs can be done too. For this you +must use Exuberant ctags (found at http://ctags.sf.net). + +Put these lines in your Makefile: + +# Make a highlight file for types. Requires Exuberant ctags and awk +types: types.vim +types.vim: *.[ch] + ctags -i=gstuS -o- *.[ch] |\ + awk 'BEGIN{printf("syntax keyword Type\t")}\ + {printf("%s ", $$1)}END{print ""}' > $@ + +And put these lines in your .vimrc: > + + " load the types.vim highlighting file, if it exists + autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim' + autocmd BufRead,BufNewFile *.[ch] if filereadable(fname) + autocmd BufRead,BufNewFile *.[ch] exe 'so ' . fname + autocmd BufRead,BufNewFile *.[ch] endif + +============================================================================== +16. Color xterms *xterm-color* *color-xterm* + +Most color xterms have only eight colors. If you don't get colors with the +default setup, it should work with these lines in your .vimrc: > + :if &term =~ "xterm" + : if has("terminfo") + : set t_Co=8 + : set t_Sf=<Esc>[3%p1%dm + : set t_Sb=<Esc>[4%p1%dm + : else + : set t_Co=8 + : set t_Sf=<Esc>[3%dm + : set t_Sb=<Esc>[4%dm + : endif + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + +You might want to change the first "if" to match the name of your terminal, +e.g. "dtterm" instead of "xterm". + +Note: Do these settings BEFORE doing ":syntax on". Otherwise the colors may +be wrong. + *xiterm* *rxvt* +The above settings have been mentioned to work for xiterm and rxvt too. +But for using 16 colors in an rxvt these should work with terminfo: > + :set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm + :set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm +< + *colortest.vim* +To test your color setup, a file has been included in the Vim distribution. +To use it, execute these commands: > + :e $VIMRUNTIME/syntax/colortest.vim + :so % + +Some versions of xterm (and other terminals, like the linux console) can +output lighter foreground colors, even though the number of colors is defined +at 8. Therefore Vim sets the "cterm=bold" attribute for light foreground +colors, when 't_Co' is 8. + + *xfree-xterm* +To get 16 colors or more, get the newest xterm version (which should be +included with Xfree86 3.3 and later). You can also find the latest version +at: > + http://invisible-island.net/xterm/xterm.html +Here is a good way to configure it. This uses 88 colors and enables the +termcap-query feature, which allows Vim to ask the xterm how many colors it +supports. > + ./configure --disable-bold-color --enable-88-color --enable-tcap-query +If you only get 8 colors, check the xterm compilation settings. +(Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding). + +This xterm should work with these lines in your .vimrc (for 16 colors): > + :if has("terminfo") + : set t_Co=16 + : set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm + : set t_AF=<Esc>[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm + :else + : set t_Co=16 + : set t_Sf=<Esc>[3%dm + : set t_Sb=<Esc>[4%dm + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + +Without |+terminfo|, Vim will recognize these settings, and automatically +translate cterm colors of 8 and above to "<Esc>[9%dm" and "<Esc>[10%dm". +Colors above 16 are also translated automatically. + +For 256 colors this has been reported to work: > + + :set t_AB=<Esc>[48;5;%dm + :set t_AF=<Esc>[38;5;%dm + +Or just set the TERM environment variable to "xterm-color" or "xterm-16color" +and try if that works. + +You probably want to use these X resources (in your ~/.Xdefaults file): + XTerm*color0: #000000 + XTerm*color1: #c00000 + XTerm*color2: #008000 + XTerm*color3: #808000 + XTerm*color4: #0000c0 + XTerm*color5: #c000c0 + XTerm*color6: #008080 + XTerm*color7: #c0c0c0 + XTerm*color8: #808080 + XTerm*color9: #ff6060 + XTerm*color10: #00ff00 + XTerm*color11: #ffff00 + XTerm*color12: #8080ff + XTerm*color13: #ff40ff + XTerm*color14: #00ffff + XTerm*color15: #ffffff + Xterm*cursorColor: Black + +[Note: The cursorColor is required to work around a bug, which changes the +cursor color to the color of the last drawn text. This has been fixed by a +newer version of xterm, but not everybody is it using yet.] + +To get these right away, reload the .Xdefaults file to the X Option database +Manager (you only need to do this when you just changed the .Xdefaults file): > + xrdb -merge ~/.Xdefaults +< + *xterm-blink* *xterm-blinking-cursor* +To make the cursor blink in an xterm, see tools/blink.c. Or use Thomas +Dickey's xterm above patchlevel 107 (see above for where to get it), with +these resources: + XTerm*cursorBlink: on + XTerm*cursorOnTime: 400 + XTerm*cursorOffTime: 250 + XTerm*cursorColor: White + + *hpterm-color* +These settings work (more or less) for a hpterm, which only supports 8 +foreground colors: > + :if has("terminfo") + : set t_Co=8 + : set t_Sf=<Esc>[&v%p1%dS + : set t_Sb=<Esc>[&v7S + :else + : set t_Co=8 + : set t_Sf=<Esc>[&v%dS + : set t_Sb=<Esc>[&v7S + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + + *Eterm* *enlightened-terminal* +These settings have been reported to work for the Enlightened terminal +emulator, or Eterm. They might work for all xterm-like terminals that use the +bold attribute to get bright colors. Add an ":if" like above when needed. > + :set t_Co=16 + :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m + :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m +< + *TTpro-telnet* +These settings should work for TTpro telnet. Tera Term Pro is a freeware / +open-source program for MS-Windows. > + set t_Co=16 + set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm + set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm +Also make sure TTpro's Setup / Window / Full Color is enabled, and make sure +that Setup / Font / Enable Bold is NOT enabled. +(info provided by John Love-Jensen <eljay@Adobe.COM>) + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/en/tagsrch.txt b/en/tagsrch.txt new file mode 100644 index 000000000..de14e87cd --- /dev/null +++ b/en/tagsrch.txt @@ -0,0 +1,809 @@ +*tagsrch.txt* For Vim version 6.3. Last change: 2004 Apr 29 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Tags and special searches *tags-and-searches* + +See section |29.1| of the user manual for an introduction. + +1. Jump to a tag |tag-commands| +2. Tag stack |tag-stack| +3. Tag match list |tag-matchlist| +4. Tags details |tag-details| +5. Tags file format |tags-file-format| +6. Include file searches |include-search| + +============================================================================== +1. Jump to a tag *tag-commands* + + *tag* *tags* +A tag is an identifier that appears in a "tags" file. It is a sort of label +that can be jumped to. For example: In C programs each function name can be +used as a tag. The "tags" file has to be generated by a program like ctags, +before the tag commands can be used. + +With the ":tag" command the cursor will be positioned on the tag. With the +CTRL-] command, the keyword on which the cursor is standing is used as the +tag. If the cursor is not on a keyword, the first keyword to the right of the +cursor is used. + +The ":tag" command works very well for C programs. If you see a call to a +function and wonder what that function does, position the cursor inside of the +function name and hit CTRL-]. This will bring you to the function definition. +An easy way back is with the CTRL-T command. Also read about the tag stack +below. + + *:ta* *:tag* *E426* *E429* +:ta[g][!] {ident} Jump to the definition of {ident}, using the + information in the tags file(s). Put {ident} in the + tag stack. See |tag-!| for [!]. + {ident} can be a regexp pattern, see |tag-regexp|. + When there are several matching tags for {ident}, the + first one is jumped to. |:tnext|. + +g<LeftMouse> *g<LeftMouse>* +<C-LeftMouse> *<C-LeftMouse>* *CTRL-]* +CTRL-] Jump to the definition of the keyword under the + cursor. Same as ":tag {ident}", where {ident} is the + keyword under or after cursor. {Vi: identifier after + the cursor} + + *v_CTRL-]* +{Visual}CTRL-] Same as ":tag {ident}", where {ident} is the text that + is highlighted. {not in Vi} + + *telnet-CTRL-]* +CTRL-] is the default telnet escape key. When you type CTRL-] to jump to a +tag, you will get the telnet prompt instead. Most versions of telnet allow +changing or disabling the default escape key. See the telnet man page. You +can 'telnet -E {Hostname}' to disable the escape character, or 'telnet -e +{EscapeCharacter} {Hostname}' to specify another escape character. If +possible, try to use "rsh" instead of "telnet" to avoid this problem. + + *tag-priority* +When there are multiple matches for a tag, this priority is used: +1. "FSC" A full matching static tag for the current file. +2. "F C" A full matching global tag for the current file. +3. "F " A full matching global tag for another file. +4. "FS " A full matching static tag for another file. +5. " SC" An ignore-case matching static tag for the current file. +6. " C" An ignore-case matching global tag for the current file. +7. " " An ignore-case matching global tag for another file. +8. " S " An ignore-case matching static tag for another file. + +Note that when the current file changes, the priority list is mostly not +changed, to avoid confusion when using ":tnext". It is changed when using +":tag {ident}". + +The ignore-case matches are not found for a ":tag" command when the +'ignorecase' option is off. They are found when a pattern is used (starting +with a "/") and for ":tselect", also when 'ignorecase' is off. Note that +using ignore-case tag searching disables binary searching in the tags file, +which causes a slowdown. This can be avoided by fold-case sorting the tag +file. See the 'tagbsearch' option for an explanation. + +============================================================================== +2. Tag stack *tag-stack* *tagstack* *E425* + +On the tag stack is remembered which tags you jumped to, and from where. +Tags are only pushed onto the stack when the 'tagstack' option is set. + +g<RightMouse> *g<RightMouse>* +<C-RightMouse> *<C-RightMouse>* *CTRL-T* +CTRL-T Jump to [count] older entry in the tag stack + (default 1). {not in Vi} + + *:po* *:pop* *E555* *E556* +:[count]po[p][!] Jump to [count] older entry in tag stack (default 1). + See |tag-!| for [!]. {not in Vi} + +:[count]ta[g][!] Jump to [count] newer entry in tag stack (default 1). + See |tag-!| for [!]. {not in Vi} + + *:tags* +:tags Show the contents of the tag stack. The active + entry is marked with a '>'. {not in Vi} + +The output of ":tags" looks like this: + + # TO tag FROM line in file/line + 1 1 main 1 harddisk2:text/vim/test + > 2 2 FuncA 58 i = FuncA(10); + 3 1 FuncC 357 harddisk2:text/vim/src/amiga.c + +This list shows the tags that you jumped to and the cursor position before +that jump. The older tags are at the top, the newer at the bottom. + +The '>' points to the active entry. This is the tag that will be used by the +next ":tag" command. The CTRL-T and ":pop" command will use the position +above the active entry. + +Below the "TO" is the number of the current match in the match list. Note +that this doesn't change when using ":pop" or ":tag". + +The line number and file name are remembered to be able to get back to where +you were before the tag command. The line number will be correct, also when +deleting/inserting lines, unless this was done by another program (e.g. +another instance of Vim). + +For the current file, the "file/line" column shows the text at the position. +An indent is removed and a long line is truncated to fit in the window. + +You can jump to previously used tags with several commands. Some examples: + + ":pop" or CTRL-T to position before previous tag + {count}CTRL-T to position before {count} older tag + ":tag" to newer tag + ":0tag" to last used tag + +The most obvious way to use this is while browsing through the call graph of +a program. Consider the following call graph: + + main ---> FuncA ---> FuncC + ---> FuncB + +(Explanation: main calls FuncA and FuncB; FuncA calls FuncC). +You can get from main to FuncA by using CTRL-] on the call to FuncA. Then +you can CTRL-] to get to FuncC. If you now want to go back to main you can +use CTRL-T twice. Then you can CTRL-] to FuncB. + +If you issue a ":ta {ident}" or CTRL-] command, this tag is inserted at the +current position in the stack. If the stack was full (it can hold up to 20 +entries), the oldest entry is deleted and the older entries shift one +position up (their index number is decremented by one). If the last used +entry was not at the bottom, the entries below the last used one are +deleted. This means that an old branch in the call graph is lost. After the +commands explained above the tag stack will look like this: + + # TO tag FROM line in file + 1 main 1 harddisk2:text/vim/test + 2 FuncB 59 harddisk2:text/vim/src/main.c + + *E73* +When you try to use the tag stack while it doesn't contain anything you will +get an error message. + +============================================================================== +3. Tag match list *tag-matchlist* *E427* *E428* + +When there are several matching tags, these commands can be used to jump +between them. Note that these command don't change the tag stack, they keep +the same entry. + + *:ts* *:tselect* +:ts[elect][!] [ident] List the tags that match [ident], using the + information in the tags file(s). + When [ident] is not given, the last tag name from the + tag stack is used. + With a '>' in the first column is indicated which is + the current position in the list (if there is one). + [ident] can be a regexp pattern, see |tag-regexp|. + See |tag-priority| for the priorities used in the + listing. {not in Vi} + Example output: + +> + nr pri kind tag file + 1 F f mch_delay os_amiga.c + mch_delay(msec, ignoreinput) + > 2 F f mch_delay os_msdos.c + mch_delay(msec, ignoreinput) + 3 F f mch_delay os_unix.c + mch_delay(msec, ignoreinput) + Enter nr of choice (<CR> to abort): +< + See |tag-priority| for the "pri" column. Note that + this depends on the current file, thus using + ":tselect xxx" can produce different results. + The "kind" column gives the kind of tag, if this was + included in the tags file. + The "info" column shows information that could be + found in the tags file. It depends on the program + that produced the tags file. + When the list is long, you may get the |more-prompt|. + If you already see the tag you want to use, you can + type 'q' and enter the number. + + *:sts* *:stselect* +:sts[elect][!] [ident] Does ":tselect[!] [ident]" and splits the window for + the selected tag. {not in Vi} + + *g]* +g] Like CTRL-], but use ":tselect" instead of ":tag". + {not in Vi} + + *v_g]* +{Visual}g] Same as "g]", but use the highlighted text as the + identifier. {not in Vi} + + *:tj* *:tjump* +:tj[ump][!] [ident] Like ":tselect", but jump to the tag directly when + there is only one match. {not in Vi} + + *:stj* *:stjump* +:stj[ump][!] [ident] Does ":tjump[!] [ident]" and splits the window for the + selected tag. {not in Vi} + + *g_CTRL-]* +g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag". + {not in Vi} + + *v_g_CTRL-]* +{Visual}g CTRL-] Same as "g CTRL-]", but use the highlighted text as + the identifier. {not in Vi} + + *:tn* *:tnext* +:[count]tn[ext][!] Jump to [count] next matching tag (default 1). See + |tag-!| for [!]. {not in Vi} + + *:tp* *:tprevious* +:[count]tp[revious][!] Jump to [count] previous matching tag (default 1). + See |tag-!| for [!]. {not in Vi} + + *:tN* *:tNext* +:[count]tN[ext][!] Same as ":tprevious". {not in Vi} + + *:tr* *:trewind* +:[count]tr[ewind][!] Jump to first matching tag. If [count] is given, jump + to [count]th matching tag. See |tag-!| for [!]. {not + in Vi} + + *:tf* *:tfirst* +:[count]tf[irst][!] Same as ":trewind". {not in Vi} + + *:tl* *:tlast* +:tl[ast][!] Jump to last matching tag. See |tag-!| for [!]. {not + in Vi} + + +When there is no other message, Vim shows which matching tag has been jumped +to, and the number of matching tags: > + tag 1 of 3 or more +The " or more" is used to indicate that Vim didn't try all the tags files yet. +When using ":tnext" a few times, or with ":tlast", more matches may be found. + +When you didn't see this message because of some other message, or you just +want to know where you are, this command will show it again (and jump to the +same tag as last time): > + :0tn +< + *tag-skip-file* +When a matching tag is found for which the file doesn't exist, this match is +skipped and the next matching tag is used. Vim reports this, to notify you of +missing files. When the end of the list of matches has been reached, an error +message is given. + +The tag match list can also be used in the preview window. The commands are +the same as above, with a "p" prepended. +{not available when compiled without the |+quickfix| feature} + + *:pts* *:ptselect* +:pts[elect][!] [ident] Does ":tselect[!] [ident]" and shows the new tag in a + "Preview" window. See |:ptag| for more info. + {not in Vi} + + *:ptj* *:ptjump* +:ptj[ump][!] [ident] Does ":tjump[!] [ident]" and shows the new tag in a + "Preview" window. See |:ptag| for more info. + {not in Vi} + + *:ptn* *:ptnext* +:[count]ptn[ext][!] ":tnext" in the preview window. See |:ptag|. + {not in Vi} + + *:ptp* *:ptprevious* +:[count]ptp[revious][!] ":tprevious" in the preview window. See |:ptag|. + {not in Vi} + + *:ptN* *:ptNext* +:[count]ptN[ext][!] Same as ":ptprevious". {not in Vi} + + *:ptr* *:ptrewind* +:[count]ptr[ewind][!] ":trewind" in the preview window. See |:ptag|. + {not in Vi} + + *:ptf* *:ptfirst* +:[count]ptf[irst][!] Same as ":ptrewind". {not in Vi} + + *:ptl* *:ptlast* +:ptl[ast][!] ":tlast" in the preview window. See |:ptag|. + {not in Vi} + +============================================================================== +4. Tags details *tag-details* + + *static-tag* +A static tag is a tag that is defined for a specific file. In a C program +this could be a static function. + +In Vi jumping to a tag sets the current search pattern. This means that +the "n" command after jumping to a tag does not search for the same pattern +that it did before jumping to the tag. Vim does not do this as we consider it +to be a bug. You can still find the tag search pattern in the search history. +If you really want the old Vi behavior, set the 't' flag in 'cpoptions'. + + *tag-binary-search* +Vim uses binary searching in the tags file to find the desired tag quickly +(when enabled at compile time |+tag_binary|). But this only works if the +tags file was sorted on ASCII byte value. Therefore, if no match was found, +another try is done with a linear search. If you only want the linear search, +reset the 'tagbsearch' option. Or better: Sort the tags file! + +Note that the binary searching is disabled when not looking for a tag with a +specific name. This happens when ignoring case and when a regular expression +is used that doesn't start with a fixed string. Tag searching can be a lot +slower then. The former can be avoided by case-fold sorting the tags file. +See 'tagbsearch' for details. + + *tag-regexp* +The ":tag" and "tselect" commands accept a regular expression argument. See +|pattern| for the special characters that can be used. +When the argument starts with '/', it is used as a pattern. If the argument +does not start with '/', it is taken literally, as a full tag name. +Examples: > + :tag main +< jumps to the tag "main" that has the highest priority. > + :tag /^get +< jumps to the tag that starts with "get" and has the highest priority. > + :tag /norm +< lists all the tags that contain "norm", including "id_norm". +When the argument both exists literally, and match when used as a regexp, a +literal match has a higher priority. For example, ":tag /open" matches "open" +before "open_file" and "file_open". + + *tag-!* +If the tag is in the current file this will always work. Otherwise the +performed actions depend on whether the current file was changed, whether a ! +is added to the command and on the 'autowrite' option: + + tag in file autowrite ~ +current file changed ! option action ~ +----------------------------------------------------------------------------- + yes x x x goto tag + no no x x read other file, goto tag + no yes yes x abandon current file, read other file, goto + tag + no yes no on write current file, read other file, goto + tag + no yes no off fail +----------------------------------------------------------------------------- + +- If the tag is in the current file, the command will always work. +- If the tag is in another file and the current file was not changed, the + other file will be made the current file and read into the buffer. +- If the tag is in another file, the current file was changed and a ! is + added to the command, the changes to the current file are lost, the other + file will be made the current file and read into the buffer. +- If the tag is in another file, the current file was changed and the + 'autowrite' option is on, the current file will be written, the other + file will be made the current file and read into the buffer. +- If the tag is in another file, the current file was changed and the + 'autowrite' option is off, the command will fail. If you want to save + the changes, use the ":w" command and then use ":tag" without an argument. + This works because the tag is put on the stack anyway. If you want to lose + the changes you can use the ":tag!" command. + + *tag-security* +Note that Vim forbids some commands, for security reasons. This works like +using the 'secure' option for exrc/vimrc files in the current directory. See +|trojan-horse| and |sandbox|. +When the {tagaddress} changes a buffer, you will get a warning message: + "WARNING: tag command changed a buffer!!!" +In a future version changing the buffer will be impossible. All this for +security reasons: Somebody might hide a nasty command in the tags file, which +would otherwise go unnoticed. Example: > + :$d|/tag-function-name/ +{this security prevention is not present in Vi}. + +In Vi the ":tag" command sets the last search pattern when the tag is searched +for. In Vim this is not done, the previous search pattern is still remembered, +unless the 't' flag is present in 'cpoptions'. The search pattern is always +put in the search history, so you can modify it if searching fails. + + *emacs-tags* *emacs_tags* *E430* +Emacs style tag files are only supported if Vim was compiled with the +|+emacs_tags| feature enabled. Sorry, there is no explanation about Emacs tag +files here, it is only supported for backwards compatibility :-). + + *tags-option* +The 'tags' option is a list of file names. Each of these files is searched +for the tag. This can be used to use a different tags file than the default +file "tags". It can also be used to access a common tags file. + +The next file in the list is not used when: +- A matching static tag for the current buffer has been found. +- A matching global tag has been found. +This also depends on the 'ignorecase' option. If it is off, and the tags file +only has a match without matching case, the next tags file is searched for a +match with matching case. If no tag with matching case is found, the first +match without matching case is used. If 'ignorecase' is on, and a matching +global tag with or without matching case is found, this one is used, no +further tags files are searched. + +When a tag file name starts with "./", the '.' is replaced with the path of +the current file. This makes it possible to use a tags file in the directory +where the current file is (no matter what the current directory is). The idea +of using "./" is that you can define which tag file is searched first: In the +current directory ("tags,./tags") or in the directory of the current file +("./tags,tags"). + +For example: > + :set tags=./tags,tags,/home/user/commontags + +In this example the tag will first be searched for in the file "tags" in the +directory where the current file is. Next the "tags" file in the current +directory. If it is not found there, then the file "/home/user/commontags" +will be searched for the tag. + +This can be switched off by including the 'd' flag in 'cpoptions', to make +it Vi compatible. "./tags" will than be the tags file in the current +directory, instead of the tags file in the directory where the current file +is. + +Instead of the comma a space may be used. Then a backslash is required for +the space to be included in the string option: > + :set tags=tags\ /home/user/commontags + +To include a space in a file name use three backslashes. To include a comma +in a file name use two backslashes. For example, use: > + :set tags=tag\\\ file,/home/user/common\\,tags + +for the files "tag file" and "/home/user/common,tags". The 'tags' option will +have the value "tag\ file,/home/user/common\,tags". + +If the 'tagrelative' option is on (which is the default) and using a tag file +in another directory, file names in that tag file are relative to the +directory where the tag file is. + +============================================================================== +5. Tags file format *tags-file-format* *E431* + + *ctags* *jtags* +A tags file can be created with an external command, for example "ctags". It +will contain a tag for each function. Some versions of "ctags" will also make +a tag for each "#defined" macro, typedefs, enums, etc. + +Some programs that generate tags files: +ctags As found on most Unix systems. Only supports C. Only + does the basic work. +exuberant ctags This a very good one. It works for C, C++, Java, + Fortran, Eiffel and others. It can generate tags for + many items. See http://ctags.sourceforge.net. +etags Connected to Emacs. Supports many languages. +JTags For Java, in Java. It can be found at + http://www.fleiner.com/jtags/. +ptags.py For Python, in Python. Found in your Python source + directory at Tools/scripts/ptags.py. +ptags For Perl, in Perl. It can be found at + http://www.eleves.ens.fr:8080/home/nthiery/Tags/. +gnatxref For Ada. See http://www.gnuada.org/. gnatxref is + part of the gnat package. + + +The lines in the tags file must have one of these three formats: + +1. {tagname} {TAB} {tagfile} {TAB} {tagaddress} +2. {tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress} +3. {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} .. + +The first is a normal tag, which is completely compatible with Vi. It is the +only format produced by traditional ctags implementations. This is often used +for functions that are global, also referenced in other files. + +The lines in the tags file can end in <LF> or <CR><LF>. On the Macintosh <CR> +also works. The <CR> and <NL> characters can never appear inside a line. + + *tag-old-static* +The second format is for a static tag only. It is obsolete now, replaced by +the third format. It is only supported by Elvis 1.x and Vim and a few +versions of ctags. A static tag is often used for functions that are local, +only referenced in the file {tagfile}. Note that for the static tag, the two +occurrences of {tagfile} must be exactly the same. Also see |tags-option| +below, for how static tags are used. + +The third format is new. It includes additional information in optional +fields at the end of each line. It is backwards compatible with Vi. It is +only supported by new versions of ctags (such as Exuberant ctags). + +{tagname} The identifier. Normally the name of a function, but it can + be any identifier. It cannot contain a <Tab>. +{TAB} One <Tab> character. Note: previous versions allowed any + white space here. This has been abandoned to allow spaces in + {tagfile}. It can be re-enabled by including the + |+tag_any_white| feature at compile time. *tag-any-white* +{tagfile} The file that contains the definition of {tagname}. It can + have an absolute or relative path. It may contain environment + variables and wildcards (although the use of wildcards is + doubtful). It cannot contain a <Tab>. +{tagaddress} The Ex command that positions the cursor on the tag. It can + be any Ex command, although restrictions apply (see + |tag-security|). Posix only allows line numbers and search + commands, which are mostly used. +{term} ;" The two characters semicolon and double quote. This is + interpreted by Vi as the start of a comment, which makes the + following be ignored. This is for backwards compatibility + with Vi, it ignores the following fields. +{field} .. A list of optional fields. Each field has the form: + + <Tab>{fieldname}:{value} + + The {fieldname} identifies the field, and can only contain + alphabetical characters [a-zA-Z]. + The {value} is any string, but cannot contain a <Tab>. + These characters are special: + "\t" stands for a <Tab> + "\r" stands for a <CR> + "\n" stands for a <NL> + "\\" stands for a single '\' character + + There is one field that doesn't have a ':'. This is the kind + of the tag. It is handled like it was preceded with "kind:". + See the documentation of ctags for the kinds it produces. + + The only other field currently recognized by Vim is "file:" + (with an empty value). It is used for a static tag. + +The first lines in the tags file can contain lines that start with + !_TAG_ +These are sorted to the first lines, only rare tags that start with "!" can +sort to before them. Vim recognizes two items. The first one is the line +that indicates if the file was sorted. When this line is found, Vim uses +binary searching for the tags file: + !_TAG_FILE_SORTED<Tab>1<Tab>{anything} ~ + +A tag file may be case-fold sorted to avoid a linear search when 'ignorecase' +is on. See 'tagbsearch' for details. The value '2' should be used then: + !_TAG_FILE_SORTED<Tab>2<Tab>{anything} ~ + +The other tag that Vim recognizes, but only when compiled with the +|+multi_byte| feature, is the encoding of the tags file: + !_TAG_FILE_ENCODING<Tab>utf-8<Tab>{anything} ~ +Here "utf-8" is the encoding used for the tags. Vim will then convert the tag +being searched for from 'encoding' to the encoding of the tags file. And when +listing tags the reverse happens. When the conversion fails the unconverted +tag is used. + + *tag-search* +The command can be any Ex command, but often it is a search command. +Examples: + tag1 file1 /^main(argc, argv)/ ~ + tag2 file2 108 ~ + +The command is always executed with 'magic' not set. The only special +characters in a search pattern are "^" (begin-of-line) and "$" (<EOL>). +See |pattern|. Note that you must put a backslash before each backslash in +the search text. This is for backwards compatibility with Vi. + + *E434* *E435* +If the command is a normal search command (it starts and ends with "/" or +"?"), some special handling is done: +- Searching starts on line 1 of the file. + The direction of the search is forward for "/", backward for "?". + Note that 'wrapscan' does not matter, the whole file is always searched. {Vi + does use 'wrapscan', which caused tags sometimes not be found). {Vi starts + searching in line 2 of another file. It does not find a tag in line 1 of + another file when 'wrapscan' is not set} +- If the search fails, another try is done ignoring case. If that fails too, + a search is done for: + "^tagname[ \t]*(" + (the tag with '^' prepended and "[ \t]*(" appended). When using function + names, this will find the function name when it is in column 0. This will + help when the arguments to the function have changed since the tags file was + made. If this search also fails another search is done with: + "^[#a-zA-Z_].*\<tagname[ \t]*(" + This means: A line starting with '#' or an identifier and containing the tag + followed by white space and a '('. This will find macro names and function + names with a type prepended. {the extra searches are not in Vi}. + +============================================================================== +6. Include file searches *include-search* *definition-search* + *E387* *E388* *E389* + +These commands look for a string in the current file and in all encountered +included files (recursively). This can be used to find the definition of a +variable, function or macro. If you only want to search in the current +buffer, use the commands listed at |pattern-searches|. + +These commands are not available when the |+find_in_path| feature was disabled +at compile time. + +When a line is encountered that includes another file, that file is searched +before continuing in the current buffer. Files included by included files are +also searched. When an include file could not be found it is silently +ignored. Use the |:checkpath| command to discover which files could not be +found, possibly your 'path' option is not set up correctly. Note: the +included file is searched, not a buffer that may be editing that file. Only +for the current file the lines in the buffer are used. + +The string can be any keyword or a defined macro. For the keyword any match +will be found. For defined macros only lines that match with the 'define' +option will be found. The default is "^#\s*define", which is for C programs. +For other languages you probably want to change this. See 'define' for an +example for C++. The string cannot contain an end-of-line, only matches +within a line are found. + +When a match is found for a defined macro, the displaying of lines continues +with the next line when a line ends in a backslash. + +The commands that start with "[" start searching from the start of the current +file. The commands that start with "]" start at the current cursor position. + +The 'include' option is used to define a line that includes another file. The +default is "\^#\s*include", which is for C programs. Note: Vim does not +recognize C syntax, if the 'include' option matches a line inside +"#ifdef/#endif" or inside a comment, it is searched anyway. The 'isfname' +option is used to recognize the file name that comes after the matched +pattern. + +The 'path' option is used to find the directory for the include files that +do not have an absolute path. + +The 'comments' option is used for the commands that display a single line or +jump to a line. It defines patterns that may start a comment. Those lines +are ignored for the search, unless [!] is used. One exception: When the line +matches the pattern "^# *define" it is not considered to be a comment. + +If you want to list matches, and then select one to jump to, you could use a +mapping to do that for you. Here is an example: > + + :map <F4> [I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."[\t"<CR> +< + *[i* +[i Display the first line that contains the keyword + under the cursor. The search starts at the beginning + of the file. Lines that look like a comment are + ignored (see 'comments' option). If a count is given, + the count'th matching line is displayed, and comment + lines are not ignored. {not in Vi} + + *]i* +]i like "[i", but start at the current cursor position. + {not in Vi} + + *:is* *:isearch* +:[range]is[earch][!] [count] [/]pattern[/] + Like "[i" and "]i", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *[I* +[I Display all lines that contain the keyword under the + cursor. Filenames and line numbers are displayed + for the found lines. The search starts at the + beginning of the file. {not in Vi} + + *]I* +]I like "[I", but start at the current cursor position. + {not in Vi} + + *:il* *:ilist* +:[range]il[ist][!] [/]pattern[/] + Like "[I" and "]I", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *[_CTRL-I* +[ CTRL-I Jump to the first line that contains the keyword + under the cursor. The search starts at the beginning + of the file. Lines that look like a comment are + ignored (see 'comments' option). If a count is given, + the count'th matching line is jumped to, and comment + lines are not ignored. {not in Vi} + + *]_CTRL-I* +] CTRL-I like "[ CTRL-I", but start at the current cursor + position. {not in Vi} + + *:ij* *:ijump* +:[range]ij[ump][!] [count] [/]pattern[/] + Like "[ CTRL-I" and "] CTRL-I", but search in + [range] lines (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + +CTRL-W CTRL-I *CTRL-W_CTRL-I* *CTRL-W_i* +CTRL-W i Open a new window, with the cursor on the first line + that contains the keyword under the cursor. The + search starts at the beginning of the file. Lines + that look like a comment line are ignored (see + 'comments' option). If a count is given, the count'th + matching line is jumped to, and comment lines are not + ignored. {not in Vi} + + *:isp* *:isplit* +:[range]isp[lit][!] [count] [/]pattern[/] + Like "CTRL-W i" and "CTRL-W i", but search in + [range] lines (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *[d* +[d Display the first macro definition that contains the + macro under the cursor. The search starts from the + beginning of the file. If a count is given, the + count'th matching line is displayed. {not in Vi} + + *]d* +]d like "[d", but start at the current cursor position. + {not in Vi} + + *:ds* *:dsearch* +:[range]ds[earch][!] [count] [/]string[/] + Like "[d" and "]d", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *[D* +[D Display all macro definitions that contain the macro + under the cursor. Filenames and line numbers are + displayed for the found lines. The search starts + from the beginning of the file. {not in Vi} + + *]D* +]D like "[D", but start at the current cursor position. + {not in Vi} + + *:dl* *:dlist* +:[range]dl[ist][!] [/]string[/] + Like "[D" and "]D", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *[_CTRL-D* +[ CTRL-D Jump to the first macro definition that contains the + keyword under the cursor. The search starts from + the beginning of the file. If a count is given, the + count'th matching line is jumped to. {not in Vi} + + *]_CTRL-D* +] CTRL-D like "[ CTRL-D", but start at the current cursor + position. {not in Vi} + + *:dj* *:djump* +:[range]dj[ump][!] [count] [/]string[/] + Like "[ CTRL-D" and "] CTRL-D", but search in + [range] lines (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + +CTRL-W CTRL-D *CTRL-W_CTRL-D* *CTRL-W_d* +CTRL-W d Open a new window, with the cursor on the first + macro definition line that contains the keyword + under the cursor. The search starts from the + beginning of the file. If a count is given, the + count'th matching line is jumped to. {not in Vi} + + *:dsp* *:dsplit* +:[range]dsp[lit][!] [count] [/]string[/] + Like "CTRL-W d", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. {not in Vi} + + *:che* *:checkpath* +:che[ckpath] List all the included files that could not be found. + {not in Vi} + +:che[ckpath]! List all the included files. {not in Vi} + + *:search-args* +Common arguments for the commands above: +[!] When included, find matches in lines that are recognized as comments. + When excluded, a match is ignored when the line is recognized as a + comment (according to 'comments'), or the match is in a C comment (after + "//" or inside /* */). Note that a match may be missed if a line is + recognized as a comment, but the comment ends halfway the line. + And if the line is a comment, but it is not recognized (according to + 'comments') a match may be found in it anyway. Example: > + /* comment + foobar */ +< A match for "foobar" is found, because this line is not recognized as a + comment (even though syntax highlighting does recognize it). + Note: Since a macro definition mostly doesn't look like a comment, the + [!] makes no difference for ":dlist", ":dsearch" and ":djump". +[/] A pattern can be surrounded by '/'. Without '/' only whole words are + matched, using the pattern "\<pattern\>". Only after the second '/' a + next command can be appended with '|'. Example: > + :isearch /string/ | echo "the last one" +< For a ":djump", ":dsplit", ":dlist" and ":dsearch" command the pattern + is used as a literal string, not as a search pattern. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/term.txt b/en/term.txt new file mode 100644 index 000000000..ec5614fc1 --- /dev/null +++ b/en/term.txt @@ -0,0 +1,808 @@ +*term.txt* For Vim version 6.3. Last change: 2004 Jan 09 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Terminal information *terminal-info* + +Vim uses information about the terminal you are using to fill the screen and +recognize what keys you hit. If this information is not correct, the screen +may be messed up or keys may not be recognized. The actions which have to be +performed on the screen are accomplished by outputting a string of +characters. Special keys produce a string of characters. These strings are +stored in the terminal options, see |terminal-options|. + +NOTE: Most of this is not used when running the |GUI|. + +1. Startup |startup-terminal| +2. Terminal options |terminal-options| +3. Window size |window-size| +4. Slow and fast terminals |slow-fast-terminal| +5. Using the mouse |mouse-using| + +============================================================================== +1. Startup *startup-terminal* + +When Vim is started a default terminal type is assumed. For the Amiga this is +a standard CLI window, for MS-DOS the pc terminal, for Unix an ansi terminal. +A few other terminal types are always available, see below |builtin-terms|. + +You can give the terminal name with the '-T' Vim argument. If it is not given +Vim will try to get the name from the TERM environment variable. + + *termcap* *terminfo* *E557* *E558* *E559* +On Unix the terminfo database or termcap file is used. This is referred to as +"termcap" in all the documentation. At compile time, when running configure, +the choice whether to use terminfo or termcap is done automatically. When +running Vim the output of ":version" will show |+terminfo| if terminfo is +used. Also see |xterm-screens|. + +On non-Unix systems a termcap is only available if Vim was compiled with +TERMCAP defined. + + *builtin-terms* *builtin_terms* +Which builtin terminals are available depends on a few defines in feature.h, +which need to be set at compile time: + define output of ":version" terminals builtin ~ +NO_BUILTIN_TCAPS -builtin_terms none +SOME_BUILTIN_TCAPS +builtin_terms most common ones (default) +ALL_BUILTIN_TCAPS ++builtin_terms all available + +You can see a list of available builtin terminals with ":set term=xxx" (when +not running the GUI). Also see |+builtin_terms|. + +If the termcap code is included Vim will try to get the strings for the +terminal you are using from the termcap file and the builtin termcaps. Both +are always used, if an entry for the terminal you are using is present. Which +one is used first depends on the 'ttybuiltin' option: + +'ttybuiltin' on 1: builtin termcap 2: external termcap +'ttybuiltin' off 1: external termcap 2: builtin termcap + +If an option is missing in one of them, it will be obtained from the other +one. If an option is present in both, the one first encountered is used. + +Which external termcap file is used varies from system to system and may +depend on the environment variables "TERMCAP" and "TERMPATH". See "man +tgetent". + +Settings depending on terminal *term-dependent-settings* + +If you want to set options or mappings, depending on the terminal name, you +can do this best in your .vimrc. Example: > + + if &term == "xterm" + ... xterm maps and settings ... + elseif &term =~ "vt10." + ... vt100, vt102 maps and settings ... + endif +< + *raw-terminal-mode* +For normal editing the terminal will be put into "raw" mode. The strings +defined with 't_ti' and 't_ks' will be sent to the terminal. Normally this +puts the terminal in a state where the termcap codes are valid and activates +the cursor and function keys. When Vim exits the terminal will be put back +into the mode it was before Vim started. The strings defined with 't_te' and +'t_ke' will be sent to the terminal. On the Amiga, with commands that execute +an external command (e.g., "!!"), the terminal will be put into Normal mode +for a moment. This means that you can stop the output to the screen by +hitting a printing key. Output resumes when you hit <BS>. + + *cs7-problem* +Note: If the terminal settings are changed after running Vim, you might have +an illegal combination of settings. This has been reported on Solaris 2.5 +with "stty cs8 parenb", which is restored as "stty cs7 parenb". Use +"stty cs8 -parenb -istrip" instead, this is restored correctly. + +Some termcap entries are wrong in the sense that after sending 't_ks' the +cursor keys send codes different from the codes defined in the termcap. To +avoid this you can set 't_ks' (and 't_ke') to empty strings. This must be +done during initialization (see |initialization|), otherwise it's too late. + +Some termcap entries assume that the highest bit is always reset. For +example: The cursor-up entry for the Amiga could be ":ku=\E[A:". But the +Amiga really sends "\233A". This works fine if the highest bit is reset, +e.g., when using an Amiga over a serial line. If the cursor keys don't work, +try the entry ":ku=\233A:". + +Some termcap entries have the entry ":ku=\E[A:". But the Amiga really sends +"\233A". On output "\E[" and "\233" are often equivalent, on input they +aren't. You will have to change the termcap entry, or change the key code with +the :set command to fix this. + +Many cursor key codes start with an <Esc>. Vim must find out if this is a +single hit of the <Esc> key or the start of a cursor key sequence. It waits +for a next character to arrive. If it does not arrive within one second a +single <Esc> is assumed. On very slow systems this may fail, causing cursor +keys not to work sometimes. If you discover this problem reset the 'timeout' +option. Vim will wait for the next character to arrive after an <Esc>. If +you want to enter a single <Esc> you must type it twice. Resetting the +'esckeys' option avoids this problem in Insert mode, but you lose the +possibility to use cursor and function keys in Insert mode. + +On the Amiga the recognition of window resizing is activated only when the +terminal name is "amiga" or "builtin_amiga". + +Some terminals have confusing codes for the cursor keys. The televideo 925 is +such a terminal. It sends a CTRL-H for cursor-left. This would make it +impossible to distinguish a backspace and cursor-left. To avoid this problem +CTRL-H is never recognized as cursor-left. + + *vt100-cursor-keys* *xterm-cursor-keys* +Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA, +<Esc>OB, etc. Unfortunately these are valid commands in insert mode: Stop +insert, Open a new line above the new one, start inserting 'A', 'B', etc. +Instead of performing these commands Vim will erroneously recognize this typed +key sequence as a cursor key movement. To avoid this and make Vim do what you +want in either case you could use these settings: > + :set notimeout " don't timeout on mappings + :set ttimeout " do timeout on terminal key codes + :set timeoutlen=100 " timeout after 100 msec +This requires the key-codes to be sent within 100msec in order to recognize +them as a cursor key. When you type you normally are not that fast, so they +are recognized as individual typed commands, even though Vim receives the same +sequence of bytes. + + *vt100-function-keys* *xterm-function-keys* +An xterm can send function keys F1 to F4 in two modes: vt100 compatible or +not. Because Vim cannot know what the xterm is sending, both types of keys +are recognized. The same happens for the <Home> and <End> keys. + normal vt100 ~ + <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* + <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* + <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* + <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* + <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* + <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* + +When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc. This means that +by default both codes do the same thing. If you make a mapping for <xF2>, +because your terminal does have two keys, the default mapping is overwritten, +thus you can use the <F2> and <xF2> keys for something different. + + *xterm-shifted-keys* +Newer versions of xterm support shifted function keys and special keys. Vim +recognizes most of them. Use ":set termcap" to check which are supported and +what the codes are. Mostly these are not in a termcap, they are only +supported by the builtin_xterm termcap. + + *xterm-scroll-region* +The default termcap entry for xterm on Sun and other platforms does not +contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm +entry in /etc/termcap and everything should work. + + *xterm-end-home-keys* +On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the +<End> and <Home> keys send contain a <Nul> character. To make these keys send +the proper key code, add these lines to your ~/.Xdefaults file: + +*VT100.Translations: #override \n\ + <Key>Home: string("0x1b") string("[7~") \n\ + <Key>End: string("0x1b") string("[8~") + + *xterm-8bit* *xterm-8-bit* +Xterm can be run in a mode where it uses 8-bit escape sequences. The CSI code +is used instead of <Esc>[. The advantage is that an <Esc> can quickly be +recognized in Insert mode, because it can't be confused with the start of a +special key. +For the builtin termcap entries, Vim checks if the 'term' option contains +"8bit" anywhere. It then uses 8-bit characters for the termcap entries, the +mouse and a few other things. You would normally set $TERM in your shell to +"xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting +automatically. +When Vim receives a response to the |t_RV| (request version) sequence and it +starts with CSI, it assumes that the terminal is in 8-bit mode and will +convert all key sequences to their 8-bit variants. + +============================================================================== +2. Terminal options *terminal-options* *E436* + +The terminal options can be set just like normal options. But they are not +shown with the ":set all" command. Instead use ":set termcap". + +It is always possible to change individual strings by setting the +appropriate option. For example: > + :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) + +{Vi: no terminal options. You have to exit Vi, edit the termcap entry and +try again} + +The options are listed below. The associated termcap code is always equal to +the last two characters of the option name. Only one termcap code is +required: Cursor motion, 't_cm'. + +The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap. +When the termcap flag is present, the option will be set to "y". But any +non-empty string means that the flag is set. An empty string means that the +flag is not set. 't_CS' works like this too, but it isn't a termcap flag. + +OUTPUT CODES + option meaning ~ + + t_AB set background color (ANSI) *t_AB* *'t_AB'* + t_AF set foreground color (ANSI) *t_AF* *'t_AF'* + t_AL add number of blank lines *t_AL* *'t_AL'* + t_al add new blank line *t_al* *'t_al'* + t_bc backspace character *t_bc* *'t_bc'* + t_cd clear to end of screen *t_cd* *'t_cd'* + t_ce clear to end of line *t_ce* *'t_ce'* + t_cl clear screen *t_cl* *'t_cl'* + t_cm cursor motion (required!) *E437* *t_cm* *'t_cm'* + t_Co number of colors *t_Co* *'t_Co'* + t_CS if non-empty, cursor relative to scroll region *t_CS* *'t_CS'* + t_cs define scrolling region *t_cs* *'t_cs'* + t_CV define vertical scrolling region *t_CV* *'t_CV'* + t_da if non-empty, lines from above scroll down *t_da* *'t_da'* + t_db if non-empty, lines from below scroll up *t_db* *'t_db'* + t_DL delete number of lines *t_DL* *'t_DL'* + t_dl delete line *t_dl* *'t_dl'* + t_fs set window title end (from status line) *t_fs* *'t_fs'* + t_ke exit "keypad transmit" mode *t_ke* *'t_ke'* + t_ks start "keypad transmit" mode *t_ks* *'t_ks'* + t_le move cursor one char left *t_le* *'t_le'* + t_mb blinking mode *t_mb* *'t_mb'* + t_md bold mode *t_md* *'t_md'* + t_me Normal mode (undoes t_mr, t_mb, t_md and color) *t_me* *'t_me'* + t_mr reverse (invert) mode *t_mr* *'t_mr'* + *t_ms* *'t_ms'* + t_ms if non-empty, cursor can be moved in standout/inverse mode + t_nd non destructive space character *t_nd* *'t_nd'* + t_op reset to original color pair *t_op* *'t_op'* + t_RI cursor number of chars right *t_RI* *'t_RI'* + t_Sb set background color *t_Sb* *'t_Sb'* + t_Sf set foreground color *t_Sf* *'t_Sf'* + t_se standout end *t_se* *'t_se'* + t_so standout mode *t_so* *'t_so'* + t_sr scroll reverse (backward) *t_sr* *'t_sr'* + t_te out of "termcap" mode *t_te* *'t_te'* + t_ti put terminal in "termcap" mode *t_ti* *'t_ti'* + t_ts set window title start (to status line) *t_ts* *'t_ts'* + t_ue underline end *t_ue* *'t_ue'* + t_us underline mode *t_us* *'t_us'* + t_ut clearing uses the current background color *t_ut* *'t_ut'* + t_vb visual bell *t_vb* *'t_vb'* + t_ve cursor visible *t_ve* *'t_ve'* + t_vi cursor invisible *t_vi* *'t_vi'* + t_vs cursor very visible *t_vs* *'t_vs'* + *t_xs* *'t_xs'* + t_xs if non-empty, standout not erased by overwriting (hpterm) + t_ZH italics mode *t_ZH* *'t_ZH'* + t_ZR italics end *t_ZR* *'t_ZR'* + +Added by Vim (there are no standard codes for these): + t_IS set icon text start *t_IS* *'t_IS'* + t_IE set icon text end *t_IE* *'t_IE'* + t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* + t_WS set window size (height, width) in characters *t_WS* *'t_WS'* + t_RV request terminal version string (for xterm) *t_RV* *'t_RV'* + |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| + +KEY CODES +Note: Use the <> form if possible + + option name meaning ~ + + t_ku <Up> arrow up *t_ku* *'t_ku'* + t_kd <Down> arrow down *t_kd* *'t_kd'* + t_kr <Right> arrow right *t_kr* *'t_kr'* + t_kl <Left> arrow left *t_kl* *'t_kl'* + <S-Up> shift arrow up + <S-Down> shift arrow down + t_%i <S-Right> shift arrow right *t_%i* *'t_%i'* + t_#4 <S-Left> shift arrow left *t_#4* *'t_#4'* + t_k1 <F1> function key 1 *t_k1* *'t_k1'* + <xF1> alternate F1 *<xF1>* + t_k2 <F2> function key 2 *<F2>* *t_k2* *'t_k2'* + <xF2> alternate F2 *<xF2>* + t_k3 <F3> function key 3 *<F3>* *t_k3* *'t_k3'* + <xF3> alternate F3 *<xF3>* + t_k4 <F4> function key 4 *<F4>* *t_k4* *'t_k4'* + <xF4> alternate F4 *<xF4>* + t_k5 <F5> function key 5 *<F5>* *t_k5* *'t_k5'* + t_k6 <F6> function key 6 *<F6>* *t_k6* *'t_k6'* + t_k7 <F7> function key 7 *<F7>* *t_k7* *'t_k7'* + t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* + t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* + t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* + t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* + t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* + t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* + t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* + t_F5 <F15> function key 15 *<F15>* *t_F5* *'t_F5'* + t_F6 <F16> function key 16 *<F16>* *t_F6* *'t_F6'* + t_F7 <F17> function key 17 *<F17>* *t_F7* *'t_F7'* + t_F8 <F18> function key 18 *<F18>* *t_F8* *'t_F8'* + t_F9 <F19> function key 19 *<F19>* *t_F9* *'t_F9'* + <S-F1> shifted function key 1 + <S-xF1> alternate <S-F1> *<S-xF1>* + <S-F2> shifted function key 2 *<S-F2>* + <S-xF2> alternate <S-F2> *<S-xF2>* + <S-F3> shifted function key 3 *<S-F3>* + <S-xF3> alternate <S-F3> *<S-xF3>* + <S-F4> shifted function key 4 *<S-F4>* + <S-xF4> alternate <S-F4> *<S-xF4>* + <S-F5> shifted function key 5 *<S-F5>* + <S-F6> shifted function key 6 *<S-F6>* + <S-F7> shifted function key 7 *<S-F7>* + <S-F8> shifted function key 8 *<S-F8>* + <S-F9> shifted function key 9 *<S-F9>* + <S-F10> shifted function key 10 *<S-F10>* + <S-F11> shifted function key 11 *<S-F11>* + <S-F12> shifted function key 12 *<S-F12>* + t_%1 <Help> help key *t_%1* *'t_%1'* + t_&8 <Undo> undo key *t_&8* *'t_&8'* + t_kI <Insert> insert key *t_kI* *'t_kI'* + t_kD <Del> delete key *t_kD* *'t_kD'* + t_kb <BS> backspace key *t_kb* *'t_kb'* + t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* + t_kh <Home> home key *t_kh* *'t_kh'* + t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* + <xHome> alternate home key *<xHome>* + t_@7 <End> end key *t_@7* *'t_@7'* + t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* + <xEnd> alternate end key *<xEnd>* + t_kP <PageUp> page-up key *t_kP* *'t_kP'* + t_kN <PageDown> page-down key *t_kN* *'t_kN'* + t_K1 <kHome> keypad home key *t_K1* *'t_K1'* + t_K4 <kEnd> keypad end key *t_K4* *'t_K4'* + t_K3 <kPageUp> keypad page-up key *t_K3* *'t_K3'* + t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* + t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* + t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* + t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* + t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* + t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* + t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* + t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* + t_KD <k1> keypad 1 *<k1>* *t_KD* *'t_KD'* + t_KE <k2> keypad 2 *<k2>* *t_KE* *'t_KE'* + t_KF <k3> keypad 3 *<k3>* *t_KF* *'t_KF'* + t_KG <k4> keypad 4 *<k4>* *t_KG* *'t_KG'* + t_KH <k5> keypad 5 *<k5>* *t_KH* *'t_KH'* + t_KI <k6> keypad 6 *<k6>* *t_KI* *'t_KI'* + t_KJ <k7> keypad 7 *<k7>* *t_KJ* *'t_KJ'* + t_KK <k8> keypad 8 *<k8>* *t_KK* *'t_KK'* + t_KL <k9> keypad 9 *<k9>* *t_KL* *'t_KL'* + <Mouse> leader of mouse code *<Mouse>* + +Note about t_so and t_mr: When the termcap entry "so" is not present the +entry for "mr" is used. And vice versa. The same is done for "se" and "me". +If your terminal supports both inversion and standout mode, you can see two +different modes. If your terminal supports only one of the modes, both will +look the same. + +The keypad keys, when they are not mapped, behave like the equivalent normal +key. + *xterm-codes* +There is a special trick to obtain the key codes which currently only works +for xterm. When |t_RV| is defined and a response is received which indicates +an xterm with patchlevel 141 or higher, Vim uses special escape sequences to +request the key codes directly from the xterm. The responses are used to +adjust the various t_ codes. This avoids the problem that the xterm can +produce different codes, depending on the mode it is in (8-bit, VT102, +VT220, etc.). The result is that codes like <xF1> are no longer needed. +Note: This is only done on startup. If the xterm options are changed after +Vim has started, the escape sequences may not be recognized any more. + + *termcap-colors* +Note about colors: The 't_Co' option tells Vim the number of colors available. +When it is non-zero, the 't_AB' and 't_AF' options are used to set the color. +If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used +to reset to the default colors. + + *termcap-title* +The 't_ts' and 't_fs' options are used to set the window title if the terminal +allows title setting via sending strings. They are sent before and after the +title string, respectively. Similar 't_IS' and 't_IE' are used to set the +icon text. These are Vim-internal extensions of the Unix termcap, so they +cannot be obtained from an external termcap. However, the builtin termcap +contains suitable entries for xterm and iris-ansi, so you don't need to set +them here. + *hpterm* +If inversion or other highlighting does not work correctly, try setting the +'t_xs' option to a non-empty string. This makes the 't_ce' code be used to +remove highlighting from a line. This is required for "hpterm". Setting the +'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice +versa. + + *scroll-region* +Some termcaps do not include an entry for 'cs' (scroll region), although the +terminal does support it. For example: xterm on a Sun. You can use the +builtin_xterm or define t_cs yourself. For example: > + :set t_cs=^V^[[%i%d;%dr +Where ^V is CTRL-V and ^[ is <Esc>. + +The vertical scroll region t_CV is not a standard termcap code. Vim uses it +internally in the GUI. But it can also be defined for a terminal, if you can +find one that supports it. The two arguments are the left and right column of +the region which to restrict the scrolling to. Just like t_cs defines the top +and bottom lines. Defining t_CV will make scrolling in vertically split +windows a lot faster. Don't set t_CV when t_da or t_db is set (text isn't +cleared when scrolling). + +Unfortunately it is not possible to deduce from the termcap how cursor +positioning should be done when using a scrolling region: Relative to the +beginning of the screen or relative to the beginning of the scrolling region. +Most terminals use the first method. A known exception is the MS-DOS console +(pcterm). The 't_CS' option should be set to any string when cursor +positioning is relative to the start of the scrolling region. It should be +set to an empty string otherwise. It defaults to "yes" when 'term' is +"pcterm". + +Note for xterm users: The shifted cursor keys normally don't work. You can + make them work with the xmodmap command and some mappings in Vim. + + Give these commands in the xterm: + xmodmap -e "keysym Up = Up F13" + xmodmap -e "keysym Down = Down F16" + xmodmap -e "keysym Left = Left F18" + xmodmap -e "keysym Right = Right F19" + + And use these mappings in Vim: + :map <t_F3> <S-Up> + :map! <t_F3> <S-Up> + :map <t_F6> <S-Down> + :map! <t_F6> <S-Down> + :map <t_F8> <S-Left> + :map! <t_F8> <S-Left> + :map <t_F9> <S-Right> + :map! <t_F9> <S-Right> + +Instead of, say, <S-Up> you can use any other command that you want to use the +shift-cursor-up key for. (Note: To help people that have a Sun keyboard with +left side keys F14 is not used because it is confused with the undo key; F15 +is not used, because it does a window-to-front; F17 is not used, because it +closes the window. On other systems you can probably use them.) + +============================================================================== +3. Window size *window-size* + +[This is about the size of the whole window Vim is using, not a window that is +created with the ":split" command.] + +If you are running Vim on an Amiga and the terminal name is "amiga" or +"builtin_amiga", the amiga-specific window resizing will be enabled. On Unix +systems three methods are tried to get the window size: + +- an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system) +- the environment variables "LINES" and "COLUMNS" +- from the termcap entries "li" and "co" + +If everything fails a default size of 24 lines and 80 columns is assumed. If +a window-resize signal is received the size will be set again. If the window +size is wrong you can use the 'lines' and 'columns' options to set the +correct values. + +One command can be used to set the screen size: + + *:mod* *:mode* *E359* *E362* +:mod[e] [mode] + +Without argument this only detects the screen size and redraws the screen. +With MS-DOS it is possible to switch screen mode. [mode] can be one of these +values: + "bw40" 40 columns black&white + "c40" 40 columns color + "bw80" 80 columns black&white + "c80" 80 columns color (most people use this) + "mono" 80 columns monochrome + "c4350" 43 or 50 lines EGA/VGA mode + number mode number to use, depends on your video card + +============================================================================== +4. Slow and fast terminals *slow-fast-terminal* + *slow-terminal* + +If you have a fast terminal you may like to set the 'ruler' option. The +cursor position is shown in the status line. If you are using horizontal +scrolling ('wrap' option off) consider setting 'sidescroll' to a small +number. + +If you have a slow terminal you may want to reset the 'showcmd' option. +The command characters will not be shown in the status line. If the terminal +scrolls very slowly, set the 'scrolljump' to 5 or so. If the cursor is moved +off the screen (e.g., with "j") Vim will scroll 5 lines at a time. Another +possibility is to reduce the number of lines that Vim uses with the command +"z{height}<CR>". + +If the characters from the terminal are arriving with more than 1 second +between them you might want to set the 'timeout' and/or 'ttimeout' option. +See the "Options" chapter |options|. + +If your terminal does not support a scrolling region, but it does support +insert/delete line commands, scrolling with multiple windows may make the +lines jump up and down. If you don't want this set the 'ttyfast' option. +This will redraw the window instead of scroll it. + +If your terminal scrolls very slowly, but redrawing is not slow, set the +'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the +screen instead of scrolling, when there are more than 3 lines to be scrolled. + +If you are using a color terminal that is slow, use this command: > + hi NonText cterm=NONE ctermfg=NONE +This avoids that spaces are sent when they have different attributes. On most +terminals you can't see this anyway. + +If you are using Vim over a slow serial line, you might want to try running +Vim inside the "screen" program. Screen will optimize the terminal I/O quite +a bit. + +If you are testing termcap options, but you cannot see what is happening, +you might want to set the 'writedelay' option. When non-zero, one character +is sent to the terminal at a time (does not work for MS-DOS). This makes the +screen updating a lot slower, making it possible to see what is happening. + +============================================================================== +5. Using the mouse *mouse-using* + +This section is about using the mouse on a terminal or a terminal window. How +to use the mouse in a GUI window is explained in |gui-mouse|. For scrolling +with a mouse wheel see |scroll-mouse-wheel|. + +Don't forget to enable the mouse with this commands: > + :set mouse=a +Otherwise Vim won't recognize the mouse in all modes (See 'mouse'). + +Currently the mouse is supported for Unix in an xterm window, in a Linux +console (with GPM |gpm-mouse|), for MS-DOS and in a Windows console. +Mouse clicks can be used to position the cursor, select an area and paste. + +These characters in the 'mouse' option tell in which situations the mouse will +be used by Vim: + n Normal mode + v Visual mode + i Insert mode + c Command-line mode + h all previous modes when in a help file + a all previous modes + r for |hit-enter| prompt + A auto-select in Visual mode + +The default for 'mouse' is empty, the mouse is not used. Normally you would +do: > + :set mouse=a +to start using the mouse (this is equivalent to setting 'mouse' to "nvich"). +If you only want to use the mouse in a few modes or also want to use it for +the two questions you will have to concatenate the letters for those modes. +For example: > + :set mouse=nv +Will make the mouse work in Normal mode and Visual mode. > + :set mouse=h +Will make the mouse work in help files only (so you can use "g<LeftMouse>" to +jump to tags). + +Whether the selection that is started with the mouse is in Visual mode or +Select mode depends on whether "mouse" is included in the 'selectmode' +option. + +In an xterm, with the currently active mode included in the 'mouse' option, +normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key +pressed go to the xterm. With the currently active mode not included in +'mouse' all mouse clicks go to the xterm. + + *xterm-clipboard* +In the Athena and Motif GUI versions, when running in a terminal and there is +access to the X-server (DISPLAY is set), the copy and paste will behave like +in the GUI. If not, the middle mouse button will insert the unnamed register. +In that case, here is how you copy and paste a piece of text: + +Copy/paste with the mouse and Visual mode ('mouse' option must be set, see +above): +1. Press left mouse button on first letter of text, move mouse pointer to last + letter of the text and release the button. This will start Visual mode and + highlight the selected area. +2. Press "y" to yank the Visual text in the unnamed register. +3. Click the left mouse button at the insert position. +4. Click the middle mouse button. + +Shortcut: If the insert position is on the screen at the same time as the +Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button +at the insert position. + +Note: When the |-X| command line argument is used, Vim will not connect to the +X server and copy/paste to the X clipboard (selection) will not work. Use the +shift key with the mouse buttons to let the xterm do the selection. + + *xterm-command-server* +When the X-server clipboard is available, the command server described in +|x11-clientserver| can be enabled with the --servername command line argument. + + *xterm-copy-paste* +NOTE: In some (older) xterms, it's not possible to move the cursor past column +95. This is an xterm problem, not Vim's. Get a newer xterm |color-xterm|. + +Copy/paste in xterm with (current mode NOT included in 'mouse'): +1. Press left mouse button on first letter of text, move mouse pointer to last + letter of the text and release the button. +2. Use normal Vim commands to put the cursor at the insert position. +3. Press "a" to start Insert mode. +4. Click the middle mouse button. +5. Press ESC to end Insert mode. +(The same can be done with anything in 'mouse' if you keep the shift key +pressed while using the mouse.) + +Note: if you lose the 8th bit when pasting (special characters are translated +into other characters), you may have to do "stty cs8 -istrip -parenb" in your +shell before starting Vim. + +Thus in an xterm the shift and ctrl keys cannot be used with the mouse. Mouse +commands requiring the CTRL modifier can be simulated by typing the "g" key +before using the mouse: + "g<LeftMouse>" is "<C-LeftMouse> (jump to tag under mouse click) + "g<RightMouse>" is "<C-RightMouse> ("CTRL-T") + + *mouse-mode-table* *mouse-overview* +A short overview of what the mouse buttons do, when 'mousemodel' is "extend": + +Normal Mode: +event position selection change action ~ + cursor window ~ +<LeftMouse> yes end yes +<C-LeftMouse> yes end yes "CTRL-]" (2) +<S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* +<LeftDrag> yes start or extend (1) no *<LeftDrag>* +<LeftRelease> yes start or extend (1) no +<MiddleMouse> yes if not active no put +<MiddleMouse> yes if active no yank and put +<RightMouse> yes start or extend yes +<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* +<C-RightMouse> no no change no "CTRL-T" +<RightDrag> yes extend no *<RightDrag>* +<RightRelease> yes extend no *<RightRelease>* + +Insert or Replace Mode: +event position selection change action ~ + cursor window ~ +<LeftMouse> yes (cannot be active) yes +<C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) +<S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) +<LeftDrag> yes start or extend (1) no like CTRL-O (1) +<LeftRelease> yes start or extend (1) no like CTRL-O (1) +<MiddleMouse> no (cannot be active) no put register +<RightMouse> yes start or extend yes like CTRL-O +<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) +<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" + +In a help window: +event position selection change action ~ + cursor window ~ +<2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) + +When 'mousemodel' is "popup", these are different: + +Normal Mode: +event position selection change action ~ + cursor window ~ +<S-LeftMouse> yes start or extend (1) no +<RightMouse> no popup menu no + +Insert or Replace Mode: +event position selection change action ~ + cursor window ~ +<S-LeftMouse> yes start or extend (1) no like CTRL-O (1) +<RightMouse> no popup menu no + +(1) only if mouse pointer moved since press +(2) only if click is in same buffer + +Clicking the left mouse button causes the cursor to be positioned. If the +click is in another window that window is made the active window. When +editing the command-line the cursor can only be positioned on the +command-line. When in Insert mode Vim remains in Insert mode. If 'scrolloff' +is set, and the cursor is positioned within 'scrolloff' lines from the window +border, the text is scrolled. + +A selection can be started by pressing the left mouse button on the first +character, moving the mouse to the last character, then releasing the mouse +button. You will not always see the selection until you release the button, +only in some versions (GUI, MS-DOS, WIN32) will the dragging be shown +immediately. Note that you can make the text scroll by moving the mouse at +least one character in the first/last line in the window when 'scrolloff' is +non-zero. + +In Normal, Visual and Select mode clicking the right mouse button causes the +Visual area to be extended. When 'mousemodel' is "popup", the left button has +to be used while keeping the shift key pressed. When clicking in a window +which is editing another buffer, the Visual or Select mode is stopped. + + *double-click* +Double, triple and quadruple clicks are supported when the GUI is active, +for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is +available). For selecting text, extra clicks extend the selection: + click select ~ + double word or % match *<2-LeftMouse>* + triple line *<3-LeftMouse>* + quadruple rectangular block *<4-LeftMouse>* +Exception: In a Help window a double click jumps to help for the word that is +clicked on. +A double click on a word selects that word. 'iskeyword' is used to specify +which characters are included in a word. A double click on a character +that has a match selects until that match (like using "v%"). If the match is +an #if/#else/#endif block, the selection becomes linewise. +For MS-DOS and xterm the time for double clicking can be set with the +'mousetime' option. For the other systems this time is defined outside of +Vim. +An example, for using a double click to jump to the tag under the cursor: > + :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR> + +Dragging the mouse with a double click (button-down, button-up, button-down +and then drag) will result in whole words to be selected. This continues +until the button is released, at which point the selection is per character +again. + + *gpm-mouse* +The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at +compile time. The GPM mouse driver (Linux console) does not support quadruple +clicks. + +In Insert mode, when a selection is started, Vim goes into Normal mode +temporarily. When Visual or Select mode ends, it returns to Insert mode. +This is like using CTRL-O in Insert mode. Select mode is used when the +'selectmode' option contains "mouse". + + *drag-status-line* +When working with several windows, the size of the windows can be changed by +dragging the status line with the mouse. Point the mouse at a status line, +press the left button, move the mouse to the new position of the status line, +release the button. Just clicking the mouse in a status line makes that window +the current window, without moving the cursor. If by selecting a window it +will change position or size, the dragging of the status line will look +confusing, but it will work (just try it). + + *<MiddleRelease>* *<MiddleDrag>* +Mouse clicks can be mapped. The codes for mouse clicks are: + code mouse button normal action ~ + <LeftMouse> left pressed set cursor position + <LeftDrag> left moved while pressed extend selection + <LeftRelease> left released set selection end + <MiddleMouse> middle pressed paste text at cursor position + <MiddleDrag> middle moved while pressed - + <MiddleRelease> middle released - + <RightMouse> right pressed extend selection + <RightDrag> right moved while pressed extend selection + <RightRelease> right released set selection end + <X1Mouse> X1 button pressed - *X1Mouse* + <X1Drag> X1 moved while pressed - *X1Drag* + <X1Release> X1 button release - *X1Release* + <X2Mouse> X2 button pressed - *X2Mouse* + <X2Drag> X2 moved while pressed - *X2Drag* + <X2Release> X2 button release - *X2Release* + +The X1 and X2 buttons refer to the extra buttons found on some mice. The +'Microsoft Explorer' mouse has these buttons available to the right thumb. +Currently X1 and X2 only work on Win32 environments. + +Examples: > + :noremap <MiddleMouse> <LeftMouse><MiddleMouse> +Paste at the position of the middle mouse button click (otherwise the paste +would be done at the cursor position). > + + :noremap <LeftRelease> <LeftRelease>y +Immediately yank the selection, when using Visual mode. + +Note the use of ":noremap" instead of "map" to avoid a recursive mapping. +> + :map <X1Mouse> <C-O> + :map <X2Mouse> <C-I> +Map the X1 and X2 buttons to go forwards and backwards in the jump list, see +|CTRL-O| and |CTRL-I|. + + *mouse-swap-buttons* +To swap the meaning of the left and right mouse buttons: > + :noremap <LeftMouse> <RightMouse> + :noremap <LeftDrag> <RightDrag> + :noremap <LeftRelease> <RightRelease> + :noremap <RightMouse> <LeftMouse> + :noremap <RightDrag> <LeftDrag> + :noremap <RightRelease> <LeftRelease> + :noremap g<LeftMouse> <C-RightMouse> + :noremap g<RightMouse> <C-LeftMouse> + :noremap! <LeftMouse> <RightMouse> + :noremap! <LeftDrag> <RightDrag> + :noremap! <LeftRelease> <RightRelease> + :noremap! <RightMouse> <LeftMouse> + :noremap! <RightDrag> <LeftDrag> + :noremap! <RightRelease> <LeftRelease> +< + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/tips.txt b/en/tips.txt new file mode 100644 index 000000000..d3ffc2ed8 --- /dev/null +++ b/en/tips.txt @@ -0,0 +1,445 @@ +*tips.txt* For Vim version 6.3. Last change: 2004 Feb 17 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Tips and ideas for using Vim *tips* + +Don't forget to browse the user manual, it also contains lots of useful tips +|usr_toc.txt|. + +Editing C programs |C-editing| +Finding where identifiers are used |ident-search| +Switching screens in an xterm |xterm-screens| +Scrolling in Insert mode |scroll-insert| +Smooth scrolling |scroll-smooth| +Correcting common typing mistakes |type-mistakes| +Counting words, lines, etc. |count-items| +Restoring the cursor position |restore-position| +Renaming files |rename-files| +Speeding up external commands |speed-up| +Useful mappings |useful-mappings| +Compressing the help files |gzip-helpfile| +Hex editing |hex-editing| +Executing shell commands in a window |shell-window| +Using <> notation in autocommands |autocmd-<>| + +============================================================================== +Editing C programs *C-editing* + +There are quite a few features in Vim to help you edit C program files. Here +is an overview with tags to jump to: + +|usr_29.txt| Moving through programs chapter in the user manual. +|usr_30.txt| Editing programs chapter in the user manual. +|C-indenting| Automatically set the indent of a line while typing + text. +|=| Re-indent a few lines. +|format-comments| Format comments. + +|:checkpath| Show all recursively included files. +|[i| Search for identifier under cursor in current and + included files. +|[_CTRL-I| Jump to match for "[i" +|[I| List all lines in current and included files where + identifier under the cursor matches. +|[d| Search for define under cursor in current and included + files. + +|CTRL-]| Jump to tag under cursor (e.g., definition of a + function). +|CTRL-T| Jump back to before a CTRL-] command. +|:tselect| Select one tag out of a list of matching tags. + +|gd| Go to Declaration of local variable under cursor. +|gD| Go to Declaration of global variable under cursor. + +|gf| Go to file name under the cursor. + +|%| Go to matching (), {}, [], /* */, #if, #else, #endif. +|[/| Go to previous start of comment. +|]/| Go to next end of comment. +|[#| Go back to unclosed #if, #ifdef, or #else. +|]#| Go forward to unclosed #else or #endif. +|[(| Go back to unclosed '(' +|])| Go forward to unclosed ')' +|[{| Go back to unclosed '{' +|]}| Go forward to unclosed '}' + +|v_ab| Select "a block" from "[(" to "])", including braces +|v_ib| Select "inner block" from "[(" to "])" +|v_aB| Select "a block" from "[{" to "]}", including brackets +|v_iB| Select "inner block" from "[{" to "]}" + +============================================================================== +Finding where identifiers are used *ident-search* + +You probably already know that |tags| can be used to jump to the place where a +function or variable is defined. But sometimes you wish you could jump to all +the places where a function or variable is being used. This is possible in +two ways: +1. Using the |:grep| command. This should work on most Unix systems, + but can be slow (it reads all files) and only searches in one directory. +2. Using ID utils. This is fast and works in multiple directories. It uses a + database to store locations. You will need some additional programs for + this to work. And you need to keep the database up to date. + +Using the GNU id-tools: + +What you need: +- The GNU id-tools installed (mkid is needed to create ID and lid is needed to + use the macros). +- An identifier database file called "ID" in the current directory. You can + create it with the shell command "mkid file1 file2 ..". + +Put this in your .vimrc: > + map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR> + map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR> + + function! ID_search() + let g:word = expand("<cword>") + let x = system("lid --key=none ". g:word) + let x = substitute(x, "\n", " ", "g") + execute "next " . x + endfun + +To use it, place the cursor on a word, type "_u" and vim will load the file +that contains the word. Search for the next occurrence of the word in the +same file with "n". Go to the next file with "_n". + +This has been tested with id-utils-3.2 (which is the name of the id-tools +archive file on your closest gnu-ftp-mirror). + +[the idea for this comes from Andreas Kutschera] + +============================================================================== +Switching screens in an xterm *xterm-screens* *xterm-save-screen* + +(From comp.editors, by Juergen Weigert, in reply to a question) + +:> Another question is that after exiting vim, the screen is left as it +:> was, i.e. the contents of the file I was viewing (editing) was left on +:> the screen. The output from my previous like "ls" were lost, +:> ie. no longer in the scrolling buffer. I know that there is a way to +:> restore the screen after exiting vim or other vi like editors, +:> I just don't know how. Helps are appreciated. Thanks. +: +:I imagine someone else can answer this. I assume though that vim and vi do +:the same thing as each other for a given xterm setup. + +They not necessarily do the same thing, as this may be a termcap vs. +terminfo problem. You should be aware that there are two databases for +describing attributes of a particular type of terminal: termcap and +terminfo. This can cause differences when the entries differ AND when of +the programs in question one uses terminfo and the other uses termcap +(also see |+terminfo|). + +In your particular problem, you are looking for the control sequences +^[[?47h and ^[[?47l. These switch between xterms alternate and main screen +buffer. As a quick workaround a command sequence like > + echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" +may do what you want. (My notation ^[ means the ESC character, further down +you'll see that the databases use \E instead). + +On startup, vim echoes the value of the termcap variable ti (terminfo: +smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus +these two variables are the correct place where the above mentioned control +sequences should go. + +Compare your xterm termcap entry (found in /etc/termcap) with your xterm +terminfo entry (retrieved with /usr/5bin/infocmp -C xterm). Both should +contain entries similar to: > + :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: + +PS: If you find any difference, someone (your sysadmin?) should better check + the complete termcap and terminfo database for consistency. + +NOTE 1: If you recompile Vim with FEAT_XTERM_SAVE defined in feature.h, the +builtin xterm will include the mentioned "te" and "ti" entries. + +NOTE 2: If you want to disable the screen switching, and you don't want to +change your termcap, you can add these lines to your .vimrc: > + :set t_ti= t_te= + +============================================================================== +Scrolling in Insert mode *scroll-insert* + +If you are in insert mode and you want to see something that is just off the +screen, you can use CTRL-X CTRL-E and CTRL-X CTRL-Y to scroll the screen. + |i_CTRL-X_CTRL-E| + +To make this easier, you could use these mappings: > + :inoremap <C-E> <C-X><C-E> + :inoremap <C-Y> <C-X><C-Y> +(Type this literally, make sure the '<' flag is not in 'cpoptions'). +You then lose the ability to copy text from the line above/below the cursor +|i_CTRL-E|. + +Also consider setting 'scrolloff' to a larger value, so that you can always see +some context around the cursor. If 'scrolloff' is bigger than half the window +height, the cursor will always be in the middle and the text is scrolled when +the cursor is moved up/down. + +============================================================================== +Smooth scrolling *scroll-smooth* + +If you like the scrolling to go a bit smoother, you can use these mappings: > + :map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y> + :map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E> + +(Type this literally, make sure the '<' flag is not in 'cpoptions'). + +============================================================================== +Correcting common typing mistakes *type-mistakes* + +When there are a few words that you keep on typing in the wrong way, make +abbreviations that correct them. For example: > + :ab teh the + :ab fro for + +============================================================================== +Counting words, lines, etc. *count-items* + +To count how often any pattern occurs in a buffer, set 'report' to 0, and use +the substitute command to replace the pattern with itself. The reported +number of substitutions is the number of items. Examples: > + + :set report=0 + :%s/./&/g characters + :%s/\i\+/&/g words + :%s/^ lines + :%s/the/&/g "the" anywhere + :%s/\<the\>/&/g "the" as a word + +You might want to reset 'hlsearch' or do ":nohlsearch". + +This does not work if the 'modifiable' option is off. An alternative is using +|v_g_CTRL-G| in Visual mode. + + *count-bytes* +If you want to count bytes, you can use this: + + Visually select the characters (block is also possible) + Use "y" to yank the characters + Use the strlen() function: > + :echo strlen(@") +A line break is counted for one byte. + +============================================================================== +Restoring the cursor position *restore-position* + +Sometimes you want to write a mapping that makes a change somewhere in the +file and restores the cursor position, without scrolling the text. For +example, to change the date mark in a file: > + :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s + +Breaking up saving the position: + ms store cursor position in the 's' mark + H go to the first line in the window + mt store this position in the 't' mark + +Breaking up restoring the position: + 't go to the line previously at the top of the window + zt scroll to move this line to the top of the window + `s jump to the original position of the cursor + +============================================================================== +Renaming files *rename-files* + +Say I have a directory with the following files in them (directory picked at +random :-): + +buffer.c +charset.c +digraph.c +... + +and I want to rename *.c *.bla. I'd do it like this: > + + $ vim + :r! ls *.c + :%s/\(.*\).c/mv & \1.bla + :w !sh + :q! + +============================================================================== +Speeding up external commands *speed-up* + +In some situations, execution of an external command can be very slow. This +can also slow down wildcard expansion on Unix. Here are a few suggestions to +increase the speed. + +If your .cshrc (or other file, depending on the shell used) is very long, you +should separate it into a section for interactive use and a section for +non-interactive use (often called secondary shells). When you execute a +command from Vim like ":!ls", you do not need the interactive things (for +example, setting the prompt). Put the stuff that is not needed after these +lines: > + + if ($?prompt == 0) then + exit 0 + endif + +Another way is to include the "-f" flag in the 'shell' option, e.g.: > + + :set shell=csh\ -f + +(the backslash is needed to include the space in the option). +This will make csh completely skip the use of the .cshrc file. This may cause +some things to stop working though. + +============================================================================== +Useful mappings *useful-mappings* + +Here are a few mappings that some people like to use. + + *map-backtick* > + :map ' ` +Make the single quote work like a backtick. Puts the cursor on the column of +a mark, instead of going to the first non-blank character in the line. + + *emacs-keys* +For Emacs-style editing on the command-line: > + " start of line + :cnoremap <C-A> <Home> + " back one character + :cnoremap <C-B> <Left> + " delete character under cursor + :cnoremap <C-D> <Del> + " end of line + :cnoremap <C-E> <End> + " forward one character + :cnoremap <C-F> <Right> + " recall newer command-line + :cnoremap <C-N> <Down> + " recall previous (older) command-line + :cnoremap <C-P> <Up> + " back one word + :cnoremap <Esc><C-B> <S-Left> + " forward one word + :cnoremap <Esc><C-F> <S-Right> + +NOTE: This requires that the '<' flag is excluded from 'cpoptions'. |<>| + + *format-bullet-list* +This mapping will format any bullet list. It requires that there is an empty +line above and below each list entry. The expression commands are used to +be able to give comments to the parts of the mapping. > + + :let m = ":map _f :set ai<CR>" " need 'autoindent' set + :let m = m . "{O<Esc>" " add empty line above item + :let m = m . "}{)^W" " move to text after bullet + :let m = m . "i <CR> <Esc>" " add space for indent + :let m = m . "gq}" " format text after the bullet + :let m = m . "{dd" " remove the empty line + :let m = m . "5lDJ" " put text after bullet + :execute m |" define the mapping + +(<> notation |<>|. Note that this is all typed literally. ^W is "^" "W", not +CTRL-W. You can copy/paste this into Vim if '<' is not included in +'cpoptions') + +Note that the last comment starts with |", because the ":execute" command +doesn't accept a comment directly. + +You also need to set 'textwidth' to a non-zero value, e.g., > + :set tw=70 + +A mapping that does about the same, but takes the indent for the list from the +first line (Note: this mapping is a single long line with a lot of spaces): > + :map _f :set ai<CR>}{a <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j +< + *collapse* +These two mappings reduce a sequence of empty (;b) or blank (;n) lines into a +single line > + :map ;b GoZ<Esc>:g/^$/.,/./-j<CR>Gdd + :map ;n GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd + +============================================================================== +Compressing the help files *gzip-helpfile* + +For those of you who are really short on disk space, you can compress the help +files and still be able to view them with Vim. This makes accessing the help +files a bit slower and requires the "gzip" program. + +(1) Compress all the help files: "gzip doc/*.txt". + +(2) Edit "doc/tags" and change the ".txt" to ".txt.gz": > + :%s=\(\t.*\.txt\)\t=\1.gz\t= + +(3) Add this line to your vimrc: > + set helpfile={dirname}/help.txt.gz + +Where {dirname} is the directory where the help files are. The |gzip| plugin +will take care of decompressing the files. +You must make sure that $VIMRUNTIME is set to where the other Vim files are, +when they are not in the same location as the compressed "doc" directory. See +|$VIMRUNTIME|. + +============================================================================== +Executing shell commands in a window *shell-window* + +There have been questions for the possibility to execute a shell in a window +inside Vim. The answer: you can't! Including this would add a lot of code to +Vim, which is a good reason not to do this. After all, Vim is an editor, it +is not supposed to do non-editing tasks. However, to get something like this, +you might try splitting your terminal screen or display window with the +"splitvt" program. You can probably find it on some ftp server. The person +that knows more about this is Sam Lantinga <slouken@cs.ucdavis.edu>. +An alternative is the "window" command, found on BSD Unix systems, which +supports multiple overlapped windows. Or the "screen" program, found at +www.uni-erlangen.de, which supports a stack of windows. + +============================================================================== +Hex editing *hex-editing* *using-xxd* + +See section |23.4| of the user manual. + +If one has a particular extension that one uses for binary files (such as exe, +bin, etc), you may find it helpful to automate the process with the following +bit of autocmds for your <.vimrc>. Change that "*.bin" to whatever +comma-separated list of extension(s) you find yourself wanting to edit: > + + " vim -b : edit binary using xxd-format! + augroup Binary + au! + au BufReadPre *.bin let &bin=1 + au BufReadPost *.bin if &bin | %!xxd + au BufReadPost *.bin set ft=xxd | endif + au BufWritePre *.bin if &bin | %!xxd -r + au BufWritePre *.bin endif + au BufWritePost *.bin if &bin | %!xxd + au BufWritePost *.bin set nomod | endif + augroup END + +============================================================================== +Using <> notation in autocommands *autocmd-<>* + +The <> notation is not recognized in the argument of an :autocmd. To avoid +having to use special characters, you could use a self-destroying mapping to +get the <> notation and then call the mapping from the autocmd. Example: + + *map-self-destroy* > + " This is for automatically adding the name of the file to the menu list. + " It uses a self-destroying mapping! + " 1. use a line in the buffer to convert the 'dots' in the file name to \. + " 2. store that in register '"' + " 3. add that name to the Buffers menu list + " WARNING: this does have some side effects, like overwriting the + " current register contents and removing any mapping for the "i" command. + " + autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR> + autocmd BufNewFile,BufReadPre * normal i + +Another method, perhaps better, is to use the ":execute" command. In the +string you can use the <> notation by preceding it with a backslash. Don't +forget to double the number of existing backslashes and put a backslash before +'"'. +> + autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>" + +For a real buffer menu, user functions should be used (see |:function|), but +then the <> notation isn't used, which defeats using it as an example here. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/todo.txt b/en/todo.txt new file mode 100644 index 000000000..00b2e7e7b --- /dev/null +++ b/en/todo.txt @@ -0,0 +1,3418 @@ +*todo.txt* For Vim version 6.3. Last change: 2004 Jun 07 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + TODO list for Vim *todo* + +This is a veeeery long list of known bugs, current work and desired +improvements. To make it a little bit accessible, the items are grouped by +subject. In the first column of the line a classification is used to be able +to look for "the next thing to do": + +Priority classification: +9 next point release +8 next release +7 as soon as possible +6 soon +5 should be included +4 nice to have +3 consider including +2 maybe not +1 probably not +- unclassified + + *votes-for-changes* +See |develop.txt| for development plans. You can vote for which items should +be worked on, but only if you sponsor Vim development. See |sponsor|. + + *known-bugs* +-------------------- Known bugs and current work ----------------------- + +Vi incompatibility: +8 With undo/redo only marks in the changed lines should be changed. Other + marks should be kept. Vi keeps each mark at the same text, even when it + is deleted or restored. (Webb) + Also: A mark is lost after: make change, undo, redo and undo. + Example: "{d''" then "u" then "d''": deletes an extra line, because the '' + position is one line down. (Veselinovic) +8 ":change" in a single-line file adds an empty line. When the file used to + be longer a "~" line is displayed, but there really is an empty line. + (Haakon Riiser, 2003 Dec 3 and Dec 16) +8 ":append" and ":insert" in an empty file add an extra empty line. (Haakon + Riiser, 2003 Dec 3) Test for ML_EMPTY. +8 When stdin is not a tty, and Vim reads commands from it, an error should + make Vim exit. +7 Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line + (currently you can continue typing, but it's truncated later anyway). + Requires a way to make CTRL-C interrupt select() when in cooked input. +8 When loading a file in the .exrc, Vi loads the argument anyway. Vim skips + loading the argument if there is a file already. When no file argument + given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded) +6 In Insert mode, when using <BS> or <Del>, don't wipe out the text, but + only move back the cursor. Behaves like '$' in 'cpoptions'. Use a flag + in 'cpoptions' to switch this on/off. +8 When editing a file which is a symbolic link, and then opening another + symbolic link on the same file, Vim uses the name of the first one. + Adjust the file name in the buffer to the last one used? Use several file + names in one buffer??? + Also: When first editing file "test", which is symlink to "test2", and + then editing "test2", you end up editing buffer "test" again. It's not + logical that the name that was first used sticks with the buffer. +7 The ":undo" command works differently in Ex mode. Edit a file, make some + changes, "Q", "undo" and _all_ changes are undone, like the ":visual" + command was one command. +7 The ":map" command output overwrites the command. Perhaps it should keep + the ":map" when it's used without arguments? +7 CTRL-L is not the end of a section? It is for Posix! Make it an option. +7 Implement 'prompt' option. Init to off when stdin is not a tty. +7 CTRL-T in Insert mode inserts 'shiftwidth' of spaces at the cursor. Add a + flag in 'cpoptions' for this. +7 Add a way to send an email for a crashed edit session. Create a file when + making changes (containing name of the swap file), delete it when writing + the file. Supply a program that can check for crashed sessions (either + all, for a system startup, or for one user, for in a .login file). +7 Vi doesn't do autoindenting when input is not from a tty (in Ex mode). +7 "z3<CR>" should still use the whole window, but only redisplay 3 lines. +7 ":tag xx" should move the cursor to the first non-blank. Or should it go + to the match with the tag? Option? +7 Implement 'autoprint'/'ap' option. +7 Add flag in 'cpoptions' that makes <BS> after a count work like <Del> + (Sayre). +7 Add flag in 'cpoptions' that makes operator (yank, filter) not move the + cursor, at least when cancelled. (default Vi compatible). +7 Make "5dd" on last-but-one-line not delete anything (Vi compatible). + Add flag in 'cpoptions' for this. When not present, "2dd" in the last + line should delete the last line. Patch from greenx 2002 Apr 11. +7 This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual". + In Vi you can edit in visual mode, and when doing "Q" you jump to the next + match. Nvi can do it too. +7 Support '\' for line continuation in Ex mode for these commands: (Luebking) + g/./a\ g/pattern1/ s/pattern2/rep1\\ + line 1\ line 2\\ + line 2\ line 3\\ + . line4/ +6 ":e /tmp/$tty" doesn't work. ":e $uid" does. Is $tty not set because of + the way the shell is started? +6 Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange + thing. (only repeat insert for the first line). + + +GTK+ 1 (OK in GTK 2): +8 When menus are disabled, 'm' removed from 'guioptions', Alt-F still pops + up the File menu. Cannot reproduce this: gives a warning for a NULL + pointer if the menu was never displayed. +8 When using "gvim -geom 40x30" or setting 'columns' in .gvimrc or with a + GUIEnter autocommand, the width is still set to fit the toolbar. Also + happens when changing the font. How to avoid that the toolbar specifies + the minimal window width? +8 When using a theme with different scrollbars (gtkstep), the scrollbars can + be too narrow. (Drazen Kacar) +8 Font "7x14" has a bold version "7x14bold". Try to find the bold font by + appending "bold" when there are not 14 dashes. + +GTK+ GUI known bugs: +8 GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj + Machowski) They are displayed as separate characters. Problem in + creating a label? +9 Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim + when it is longer than 4000 characters. Works OK from gvim to gvim and + vim to vim. Pasting through xterm (using the shift key) also works. + It starts working after GTK gvim loses the selection and gains it again. +7 DND doesn't work with KDE (also with GTK 1). + + +Win32 GUI known bugs: +8 On Windows 98 the unicows library is needed to support functions with UCS2 + file names. Can we load unicows.dll dynamically? +8 The -P argument doesn't work very well with many MDI applications. + The last argument of CreateWindowEx() should be used, see MSDN docs. + Tutorial: http://win32assembly.online.fr/tut32.html +8 In eval.c, io.h is included when MSWIN32 is defined. Shouldn't this be + WIN32? Or can including io.h be moved to vim.h? (Dan Sharp) +7 Windows XP: When using "ClearType" for text smoothing, a column of yellow + pixels remains when typing spaces in front of a "D" ('guifont' set to + "lucida_console:h8"). +6 Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":" + of ":only" is highlighted like the cursor. (Lipelis) +7 When font smoothing is enabled, redrawing can become very slow. The reason + appears to be drawing with a transparent background. Would it be possible + to use an opaque background in most places? +8 Use another default for 'termencoding': the active codepage. Means that + when 'encoding' is changed typing characters still works properly. + Alternative: use the Unicode functions to obtain typed characters. +8 Win32: Multi-byte characters are not displayed, even though the same font + in Notepad can display them. (Srinath Avadhanula) Try with the + UTF-8-demo.txt page with Andale Mono. +7 The cursor color indicating IME mode doesn't work properly. (Shizhu Pan, + 2004 May 9) +8 Win32: When clicking on the gvim title bar, which gives it focus, produces + a file-changed dialog, after clicking on a button in that dialog the gvim + window follows the mouse. The button-up event is lost. Only with + MS-Windows 98? + Try this: ":set sw ts", get enter-prompt, then change the file in a + console, go back to Vim and click "reload" in the dialog for the changed + file: Window moves with the cursor! + Put focus event in input buffer and let generic Vim code handle it? +8 When activating the Vim window with mouse click, don't move cursor to + mouse position. Catch WM_MOUSEACTIVATE. (Luevelsmeyer) +9 The print dialog uses a font which doesn't display multi-byte messages. + Include patch from Vipin Aravind? Update from Yasuhiro Matsumoto. +8 Win32: When mouse is hidden and in the toolbar, moving it won't make it + appear. (Sami Salonen) +8 Windows NT: writing to aux.* makes Vim hang. (Acevedo) +8 Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that + comes available. (Poucet) It works OK on Win 98 but doesn't work on Win + NT 4.0. Leaves a grey area where the scrollbar was. ":set go+=r" also + doesn't work properly. +8 When Vim is minimized and when maximizing it a file-changed dialog pops + up, Vim isn't maximized. It should be done before the dialog, so that it + appears in the right position. (Webb) +9 When selecting at the more-prompt or hit-enter-prompt, the right mouse + button doesn't give popup menu. + At the hit-enter prompt CTRL-Y doesn't work to copy the modeless + selection. + On the command line, don't get a popup menu for the right mouse button. + Let the middle button paste selected text (not the clipboard but the + non-Visual selection)? Otherwise CTRL-Y has to be used to copy the text. +8 When 'grepprg' doesn't execute, the error only flashes by, the + user can hardly see what is wrong. (Moore) + Could use vimrun with an "-nowait" argument to only wait when an error + occurs, but "command.com" doesn't return an error code. +8 When the 'shell' cannot be executed, should give an appropriate error msg. + Esp. for a filter command, currently it only complains the file could not + be read. +8 MessageBox used for error messages can be too big. There is no way to + scroll it, or even hit the OK button (but you can hit return). + Use a scrollable window. +7 Add an option to add one pixel column to the character width? Lucida + Console italic is wider than the normal font ("d" overlaps with next char). + Opposite of 'linespace': 'columnspace'. +7 At the hit-enter prompt scrolling now no longer works. Need to use the + keyboard to get around this. Pretend <CR> was hit when the user tries to + scroll? Need to be able to get out of hit-enter prompt with the mouse + anyway. +7 Scrollbar width doesn't change when selecting other windows appearance. + Also background color of Toolbar and rectangle below vert. scrollbar. +7 "!start /min cmd" should run in a minimized window, instead of using + "/min" as the command name. (Rogall) +6 Drawing text transparently doesn't seem to work (when drawing part cursor). +8 CTRL key doesn't always work in combination with ALT key. It does work + for function keys, not for alphabetic characters. Perhaps this is because + CTRL-ALT is used by Windows as AltGr? +8 CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY. How do we + know which keyboard is being used? +7 When scrolling, and a background color is dithered, the dither pattern + doesn't always join correctly between the scrolled area and the new drawn + area (Koloseike). +8 When gui_init_font() is called with "*", p_guifont is freed while it might + still be used somewhere. This is too tricky, do the font selection first, + then set the new font by name (requires putting all logfont parameters in + the font name). + + +Athena and Motif: +9 Can configure be changed to disable netbeans if the Xpm library is + required and it's missing? +8 When using the resource "Vim*borderwidth 2" the widgets are positioned + wrong. +9 XIM is disabled by default for SGI/IRIX. Fix XIM so that 'imdisable' can + be off by default. +9 XIM doesn't work properly for Athena/Motif. (Yasuhiro Matsumoto) For now, + keep XIM active at all times when the input method has the preediting + flag. +8 X11: A menu that contains an umlaut is truncated at that character. + Happens when the locale is "C", which uses ASCII instead of IS0-8859-1. + Is there a way to use latin1 by default? Gnome_init() seems to do this. +8 Perhaps use fontsets for everything? +6 When starting in English and switching the language to Japanese, setting + the locale with ":lang", 'guifontset' and "hi menu font=", deleting all + menus and setting them again, the menus don't use the new font. Most of + the tooltips work though... +7 Motif: when using a file selection dialog, the specified file name is not + always used (when specifying a filter or another directory). +8 When 'encoding' is different from the current locale (e.g., utf-8) the + menu strings don't work. Requires conversion from 'encoding' to the + current locale. Workaround: set 'langmenu'. + + +Athena GUI: +9 When dragging the scrollbar thumb very fast, focus is only obtained in + the scrollbar itself. And the thumb is no longer updated when moving + through files. +7 The file selector is not resizable. With a big font it is difficult to + read long file names. (Schroeder) +4 Re-write the widget attachments and code so that we will not have to go + through and calculate the absolute position of every widget every time the + window is refreshed/changes size. This will help the "flashing-widgets" + problem during a refresh. +5 When starting gvim with all the default colors and then typing + ":hi Menu guibg=cyan", the menus change color but the background of the + pullright pixmap doesn't change colors. + If you type ":hi Menu guibg=cyan font=anyfont", then the pixmap changes + colors as it should. + Allocating a new pixmap and setting the resource doesn't change the + pullright pixmap's colors. Why? Possible Athena bug? + + +Motif GUI: +8 Popup menu ordering is wrong. +8 Accelerators don't work in a dialog. Include patch from Martin Dalecki + (Jan 3, tested by David Harrison). Should work with Alt-o then. +7 Use accelerators for the Motif file selection dialog. Patch from Martin + Dalecki 2002 Jan 11. +7 Use XmStringCreateLocalized() instead of XmStringCreateSimple()? + David Harrison says it's OK (it exists in Motif 1.2). +8 The texts in the find/replace dialog don't use the right font. +8 Lesstif: When deleting a menu that's torn off, the torn off menu becomes + very small instead of disappearing. When closing it, Vim crashes. + (Phillipps) + + +GUI: +9 On Solaris, creating the popup menu causes the right mouse button no + longer to work for extending the selection. (Halevy) +9 When running an external program, it can't always be killed with CTRL-C. + e.g. on Solaris 5.5, when using "K" (Keech). Other 'guipty' problems on + Solaris 2.6. (Marley) +9 On Solaris: Using a "-geometry" argument, bigger than the window where Vim + is started from, causes empty lines below the cmdline. (raf) +8 X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key + should not be used to trigger a menu (like the Win32 version). +8 When setting 'langmenu', it should be effective immediately. Store both + the English and the translated text in the menu structure. Re-generate + the translation when 'langmenu' has changed. +8 Basic flaw in the GUI code: NextScreen is updated before calling + gui_write(), but the GUI code relies on NextScreen to represent the state + of where it is processing the output. + Need better separation of Vim core and GUI code. +8 When fontset support is enabled, setting 'guifont' to a single font + doesn't work. +8 Menu priority for sub-menus for: Amiga, BeOS. +8 Add menu separators for Amiga, RISCOS. +8 Add a few more command names. Patch from Jiri Brezina (28 feb 2002). +8 Add way to specify the file filter for the browse dialog. At least for + browse(). +8 Add dialog for search/replace to other GUIs? Tk has something for this, + use that code? Or use console dialog. +8 When selecting a font with the font dialog and the font is invalid, the + error message disappears too quick. +8 gui_check_colors() is not called at the right moment. Do it much later, + to avoid problems. +8 gui_update_cursor() is called for a cursor shape change, even when there + are mappings to be processed. Only do something when going to wait for + input. Or maybe every 100 ms? +8 X11: When the window size is reduced to fit on screen, there are blank + lines below the text and bottom scrollbar. "gvim -geometry 80x78+0+0". + When the "+0+0" is omitted it works. +8 When starting an external command, and 'guipty' set, BS and DEL are mixed + up. Set erase character somehow? +8 A dead circumflex followed by a space should give the '^' character + (Rommel). Look how xterm does this. + Also: Bednar has some code for dead key handling. + Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya) +8 The compose key doesn't work properly (Cepas). Both for Win32 and X11. +7 The cursor in an inactive window should be hollow. Currently it's not + visible. +7 GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is + hollow, after window lowered/raised it's OK. (Godfrey) +7 When starting GUI with ":gui", and window is made smaller because it + doesn't fit on the screen, there is an extra redraw. +8 When setting font with .Xdefaults, there is an extra empty line at the + bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek) +8 When font shape changes, but not the size, doing ":set font=" does not + redraw the screen with the new font. Also for Win32. + When the size changes, on Solaris 2.5 there isn't a redraw for the + remaining part of the window (Phillipps). +- Flashes really badly in certain cases when running remotely from a Sun. +4 Re-write the code so that the highlighting isn't changed multiple times + when doing a ":hi clear". The color changes happen three or more times + currently. This is very obvious on a 66Mhz 486. + + +MSDOS/DJGPP: +9 Pressing CTRL-C often crashes the console Vim runs in. (Ken Liao) + When 'bioskey' isn't set it doesn't happen. Could be a problem with the + BIOS emulation of the console. Version 5.6 already had this problem. +8 DJGPP: "cd c:" can take us to a directory that no longer exists. + change_drive() doesn't check this. How to check for this error? +9 The 16 bit version runs out of memory very quickly. Should find unused + code and reduce static data. +9 Crash when running on Windows 98 in a console window and pressing CTRL-C. + Happens now and then. When debugging Vim in gdb this also happens. Since + the console crashes, might be a bug in the DOS console. Resetting + 'bioskey' avoids it, but then CTRL-C doesn't work. +9 DOS: Make CTRL-Fx and ALT-Fx work. + CTRL-F1 = CE-5E, CTRL-F2 = CE-5F, .., CTRL-F10 = CE-67 + ALT-F1 = CE-68, ALT-F2 = CE-69, .., ALT-F10 = CE-71 + Shifted cursor keys produce same codes as unshifted keys. Use bioskey(2) + to get modifier mask for <S-C-M-Fx>. + Use K_SPECIAL/KS_MODIFIER codes to insert modifier mask in input stream? + Make this work like in Win32 console. + Mapping things like <M-A> doesn't work, because it generates an extended + key code. Use a translation table? +9 Can't read an opened swap file when the "share" command has not been used. + At least ignore the swap files that Vim has opened itself. +8 Use DJGPP 2.03. +8 The Dos32 version (DJGPP) can't use long file names on Windows NT. + Check if new package can be used (v2misc/ntlfn08[bs].zip). +8 setlocale() is bogus. +8 Vim busy waits for new characters or mouse clicks. Should put in some + sort of sleep, to avoid eating 50% of the CPU time. Test on an unpatched + Windows 95 system! +8 DJGPP: when shell is bash, make fails. (Donahoe) +7 Hitting CTRL-P twice quickly (e.g. in keyword completion) on a 8088 + machine, starts printer echo! (John Mullin). +7 MSDOS 16 bit version can't work with COMSPEC that has an argument, e.g.: + COMSPEC=C:\WINDOWS\COMMAND.COM /E:4096 (Bradley) + Caused by BCC system() function (Borland "make" has the same problem). +8 Mouse: handle left&right button pressed as middle button pressed. Add + modifier keys shift, ctrl and alt. +7 When too many files are open (depends on FILES), strange things happen. + The Dos16 version runs out of memory, in the Dos32 version "!ls" causes a + crash. Another symptom: .swp files are not deleted, existing files are + "[New file]". +7 DJGPP version doesn't work with graphics display mode. Switch to a mode + that is supported? +8 DJGPP: ":mode" doesn't work for many modes. Disable them. +8 DJGPP: When starting in Ex mode, shouldn't clear the screen. (Walter + Briscoe) + + +MSDOS, OS/2 and Win32: +8 OS/2: Add backtick expansion. Undefine NO_EXPANDPATH and use + gen_expand_wildcards(). +8 OS/2: Add clipboard support? See example clipbrd.exe from Alexander + Wagner. +8 OS/2: Add Extended Attributes support and define HAVE_ACL. +8 OS/2: When editing a file name "foo.txt" that is actually called FOO.txt, + writing uses "foo.txt". Should obtain the real file name. +8 Should $USERPROFILE be used instead of $HOMEDRIVE/$HOMEPATH? +8 Win32 console: <M-Up> and <M-Down> don't work. (Geddes) We don't have + special keys for these. Should use modifier + key. +8 Win32 console: caps-lock makes non-alpha keys work like with shift. + Should work like in the GUI version. +8 Environment variables in DOS are not case sensitive. Make a define for + STRCMP_ENV(), and use it when comparing environment var names. +8 Setting 'shellslash' has no immediate effect. Change all file names when + it is set/reset? Or only use it when actually executing a shell command? +8 When editing a file on a Samba server, case might matter. ":e file" + followed by ":e FILE" will edit "file" again, even though "FILE" might be + another one. Set last used name in buflist_new()? Fix do_ecmd(), etc. +8 ":mksession" generates a "cd" command where "aa\#bb" means directory "#bb" + in "aa", but it's used as "aa#bb". (Ronald Hoellwarth) +8 When a buffer is editing a file like "ftp://mach/file", which is not going + to be used like a normal file name, don't change the slashes to + backslashes. (Ronald Hoellwarth) + + +Windows 95: +8 Editing a file by it's short file name and writing it, makes the long file + name disappear. Setting 'backupcopy' helps. + Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly). +8 Doing wildcard expansion, will match the short filename, but result in the + long filename (both DJGPP and Win32). + + +Win32 console: +9 When editing a file by its short file name, it should be expanded into its + long file name, to avoid problems like these: (Mccollister) + 1) Create a file called ".bashrc" using some other editor. + 2) Drag that file onto a shortcut or the actual executable. + 3) Note that the file name is something like BASHRC~1 + 4) Go to File->Save As menu item and type ".bashrc" as the file name. + 5) Press "Yes" to indicate that I want to overwrite the file. + 6) Note that the message "File exists (add ! to override)" is displayed + and the file is not saved. + Use FindFirstFile() to expand a file name and directory in the path to its + long name. +8 Also implement 'conskey' option for the Win32 console version? Look at + how Xvi does console I/O under Windows NT. +7 Re-install the use of $TERM and support the use of different terminals, + besides the console. +8 Use of <altgr> modifier doesn't work? 5.3 was OK. (Garcia-Suarez/Guckes) +9 Mapping <C-S-Tab> doesn't work correctly. How to see the difference with + <C-S-i>? +9 tmpnam() uses file in root of file system: "\asdf". That doesn't work on + a Netware network drive. Use same function as for Win32 GUI? +8 In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__ + is not defined. Shouldn't that be the other way around? +8 ":winpos" doesn't work. Patch from Vipin Aravind. +7 Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'? + Avoids that input and output work differently. Need to be restored when + exiting. + + +Amiga: +8 In mch_inchar() should use convert_input_safe() to handle incomplete byte + sequences. +9 In mch_expandpath() a "*" is to be expanded, but "\*" isn't. Remove + backslashes in result. +8 Executing a shell, only one option for 'shell' is separated. Should do + all options, using white space separation. + + +Macintosh: +9 Mac: The motion type is not stored on the clipboard. Using ":set + clipboard=unnamed" makes "yyp" work characterwise. (Michael DeMoney) +7 Loading the Perl library only works on OS/X 10.2 or 10.3, never on both. + Load the Perl library dynamically see Python sources file dynload_mac + (Jack) + dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html +8 Inputting Unicode characters does not work in the terminal. They appear + to arrive as upper and lower bytes. (David Brown, 2004 April 17) +8 Typing Unicode characters doesn't work at all in the GUI. +8 Patch to add 'transparency' option. Disadvantage: it's slow. (Eckehard + Berns, 2004 May 9) http://ecki.to/vim-icns/TransBack.diff +8 Patches from "Rain Dog" Cucka: + - guifont selector (2002 Dec 15) + - scrollbar (2002 Dec 8) + - Quartz fonts (2002 Dec 8) +9 Problems in Carbon version for OS X: (Benji Fisher) + - keyboard shortcuts in the menus get lost. +8 The Vim/About menu doesn't work. +8 ":gui" doesn't fork. Enabling the code in gui.c to fork causes a SEGV. +8 Define vim_mkdir() for Macintosh. +8 Define mch_writable() for Macintosh. +9 When DiskLock is running, using a swap file causes a crash. Appears to be + a problem with writing a file that starts with a dot. (Giacalone) +9 On G3 Mac, OS version 8, control strip causes characters messed up when + scrolling (CTRL-L cleans it up). (Benji Fisher) +9 On G3 Mac, OS version 8, variable-speed scrolling doesn't work, after two + seconds of scrolling the screen freezes. (Benji Fisher) +9 In mac_expandpath() check that handling of backslashes is done properly. +8 Standard Mac shortcuts are missing. (Amerige) +8 Handling of non-fixed width fonts is wrong. (Amerige) + + +"Small" problems: +8 When an ":edit" is inside a try command and the ATTENTION prompt is used, + the :catch commands are always executed, also when the file is edited + normally. Should reset did_emsg and undo side effects. Also make sure + the ATTENTION message shows up. +9 When using ":e ++enc=foo file" and the file is already loaded with + 'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though + the fileencoding differs. Reload the buffer in this situation? Need to + check for the buffer to be unmodified. +8 ":g//" gives "Pattern not found error" with E486. Should not use the + error number, it's not a regular error message. +7 Vimtutor leaves escape sequence in terminal. This is the xterm response to + requesting the version number. (Yasuhiro Matsumoto) +8 When redirecting and using ":silent" the current column for displaying and + redirection can be different. Use a separate variable to hold the column + for redirection. +7 There is no way to change directory and go back without changing the local + and/or global directory. Add a way to find out if the current window uses + a local directory. Add cdcmd() that returns ":cd" or ":lcd"? +7 After running "make test" the window title is sometimes not restored. + Mostly sticks at "test3.in", but not always. Appears to happen more often + when compiled with Python (threading). +7 The messages for "vim --help" and "vim --version" don't use + 'termencoding'. +7 ATTENTION dialog choices are more logical when "Delete it' appears before + "Quit". Patch by Robert Webb, 2004 May 3. +8 When 'scrollbind' is set, a window won't scroll horizontally if the cursor + line is too short. Add a word in 'scrollopt' to allow moving the cursor + to longer line that is visible. A similar thing is done for the GUI when + using the horizontal scrollbar. +7 VisVim can only open one file. Hard to solve: each opened file is passed + with a separate invocation, would need to use timestamps to know the + invocations belong together. +8 When giving a ":bwipeout" command a file-changed dialog may popup for this + buffer, which is pointless. (Mike Williams) +8 On MS-Windows ":make" doesn't show output while it is working. Use the + tee.exe from http://unxutils.sourceforge.net/ ? About 16 Kbyte in the + UnxUtils.zip archive. + Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter + Briscoe says it's not as good. +8 'fillchars' doesn't work for multi-byte characters. +9 Editing a XML file with a long line is extremely slow. Example file from + Randy Parker (Dec 13). + Limit the searching for items to a few hundred characters? +8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing + ":buf foo<Tab>" doesn't find the second one. (George V. Reilly) +7 Output for ":scriptnames" and ":breaklist" should shorten the file names: + use "~/" when possible. +8 After using diff mode, ":set nodiff" doesn't restore the old foldmethod. + (Thomas S. Urban) +7 mb_off2cells() doesn't work correctly on the tail byte of a double-byte + character. (Yasuhiro Matsumoto) It should return 1 when used on a tail + byte, like for utf-8. Store second byte of double-byte in ScreenLines2[] + (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8). +8 'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when + defined. +7 Inside a function with "perl <<EOF" a line with "$i++" is recognized as an + ":insert" command, causing the following "endfunction" not to be found. + Add skipping this perl construction inside function definitions. +7 When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode + "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second + delay should not be interpreted as a keycode. (Hans Ginzel) +7 ":botright 1 new" twice causes all window heights to be changed. Make the + bottom window only bigger as much as needed. +7 "[p" doesn't work in Visual mode. (David Brown) +7 The Cygwin and MingW makefiles define "PC", but it's not used anywhere. + Remove? (Dan Sharp) +9 The argument <f-args> of a user command doesn't handle backslashes + properly. "Cmd \ e" is one argument, "Cmd \\ e" still is one argument. + "Cmd \ e" is two arguments, first one ending in space. (Kontra Gergely) +9 User commands use the context of the script they were defined in. This + causes a "s:var" argument to unexpectedly use a variable in the defining + script, not the calling script. Add an argument to ":command": + "-keepcontext". Do replace <SID>, so that a function in the defining + script can be called. +8 The Japanese message translations for MS-Windows are called ja.sjis.po, + but they use encoding cp932. Rename the file and check that it still + works. +9 When a syntax region does not use "keepend" and a contained item does use + "extend", this makes the outer region stop at the end of the contained + region. (Lutz Eymers) Another example Nov 14 2002. +8 A very long message in confirm() can't be quit. Make this possible with + CTRL-C. +7 clip_x11_own_selection() uses CurrentTime, that is not allowed. VNC X + server has a problem with this. (Mark Waggoner) Remembering the timestamp + of events isn't always possible. We don't get them in an xterm. GTK + doesn't obtain the selection again when the timestamp differs, thus it + won't work for GTK anyway. +8 When the clipboard isn't supported: ":yank*" gives a confusing error + message. Specifically mention that the register name is invalid. +8 "gf" always excludes trailing punctuation characters. file_name_in_line() + is currently fixed to use ".,:;!". Add an option to make this + configurable? +8 'hkmap' should probably be global-local. +9 When "$" is in 'cpoptions' and folding is active, a "C" command changes + the folds and resets w_lines_valid. The display updating doesn't work + then. (Pritesh Mistry) +8 ":s!from!to!" works, but ":smagic!from!to!" doesn't. It sees the "!" as a + flag to to the command. Same for ":snomagic". (Johan Spetz) +8 Using ":s" in a function changes the previous replacement string. Save + "old_sub" in save_search_patterns()? +8 When appending to a file and 'patchmode' isn't empty, a backup file is + always written, even when the original file already exists. +7 When using "daw" on the last word in a file and this is a single letter, + nothing is deleted. Should delete the letter and preceding white space. +9 When getting focus while writing a large file, could warn for this file + being changed outside of Vim. Avoid checking this while the file is being + written. +9 The "Error detected while processing modelines" message should have an + error number. +7 The message in bt_dontwrite_msg() could be clearer. +8 Unix: When libcall() fails there is no clear error message. Johannes + Zellner has a patch for this. +8 The script ID that is stored with an option and displayed with ":verbose + set" isn't reset when the option is set internally. For example when + 'foldlevel' is set from 'foldlevelstart'. +8 In the fileformat dialog, "Cancel" isn't translated. Add a global + variable for this. (Eduardo Fernandez) +9 When editing a file with 'readonly' set, there is no check for an existing + swap file. Then using ":write" (without making any changes) doesn't give + a warning either. Should check for an existing swap file without creating + one. +7 On MS-DOS or MS-Windows, when editing the same file over a network, the + drive letter is different, thus an existing swap file doesn't generate a + warning. Use some flag to indicate the swap file is in the same directory + as the original file? Could make b0_fname[] start with a special + character like ">". +7 When 'showbreak' is set, the amount of space a Tab occupies changes. + Should work like 'showbreak' is inserted without changing the Tabs. +7 When there is a "help.txt" window in a session file, restoring that + session will not get the "LOCAL ADDITIONS" back. +7 When 'mousefocus' is set and switching to another window with a typed + command, the mouse pointer may be moved to a part of the window that's + covered by another window and we lose focus. Only move in the y + direction, not horizontally? +8 When using CTRL-D after ":help", restrict the number of matches to a + thousand, otherwise using CTRL-D without an argument takes too long. +8 ":hardcopy": + - Using the cterm_color[] table is wrong when t_colors is > 16. + - Need to handle unprintable characters. + - Win32: On a B&W printer syntax highlighting isn't visible. Perform + dithering to make grey text? + - support printing multi-byte characters. Patch from Motonobu Ichimura. + New (better) patch from Mike Williams (2004 Jan 20) + - Add a flag in 'printoptions' to add an empty page to make the total + number even. "addempty"? (Mike Williams) + - Should interpreted CTRL-L as a page break. + - Grey line numbers are not always readable. Add field in 'printoptions'. + Default to black when no syntax highlighting. + - Be able to print a window in diff mode. + - Be able to specify a colorscheme to use for printing. And a separate + one for B&W printing (if that can be detected). +8 In Visual block mode with 'lbr' set, a change command doesn't insert the + text in following lines where the linebreak changes. +9 dosinst.c: The DJGPP version can't uninstall the Uninstall registry key on + Windows NT. How to install a .inf file on Windows NT and how to detect + that Windows NT is being used? +8 When opening the same file on Unix and on MS-Windows, there is no + ATTENTION message, because the path in the swap file is different. Using + a relative path name will cause no ATTENTION for Vim 5.8. + Somehow add a flag that the swap file is in the same dir as the file? +8 When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a + block of one double-wide character, then "d" deletes only half of it. +8 When 'virtualedit' is set, should "I" in blockwise visual mode also insert + in lines that don't extend into the block? +8 With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O + yh does not yank the last character of the line. (Pavel Papushev) + Doing "hl" first appears to make it work. +8 With 'virtualedit' set it's possible to move into the blank area from + 'linebreak'. +8 With 'virtualedit' set and 'selection' "exclusive", a Visual selection + that ends in or after a tab, "d" doesn't delete (part of) the tab. + (Helmut Stiegler) +8 With 'virtualedit' set, a blockwise Visual selection that starts and ends + in a tab, "<" shifts too much. (Helmut Stiegler) +9 When jumping to a tag, the search pattern is put in the history. When + 'magic' is on, the pattern may not work. Translate the pattern depending + on p_magic when putting it in the history? Alternative: Store value of + 'magic' in history. (Margo) +9 optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for + ":noremap". Add "mapcmd({string}, {mode})? Use code from ":mkexrc". +9 incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern + isn't updated). +9 term_console is used before it is set (msdos, Amiga). +9 Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled + correctly. Get many error messages while redrawing the screen, which + cause another redraw, etc. +8 [<C-I> doesn't work when '*' is in 'iskeyword'. find_pattern_in_path() + must escape special characters in the pattern. +8 Vim can overwrite a read-only file with ":w!". ":w" can't overwrite an + existing file, "w!" can, but perhaps not a read-only file? Then use + ":w!!" for that. + Or ask for permission to overwrite it (if file can be made writable) and + restore file to readonly afterwards. +7 When compiled with "xterm_clipboard", startup can be slower and might get + error message for invalid $DISPLAY. Try connecting to the X server in the + background (forked), so that Vim starts up quicker? Connect as soon as + the clipboard is to be used (Visual select mode starts, paste from + clipboard) +7 X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal + selection. Add an "xclipboard" argument to the 'clipboard' option? (Mark + Waggoner) +8 For xterm need to open a connection to the X server to get the window + title, which can be slow. Can also get the title with "<Esc>[21t", no + need to use X11 calls. This returns "<Esc>]l{title}<Esc>\". +8 When the builtin xterm termcap contains codes that are not wanted, need a + way to avoid using the builtin termcap. +8 Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode. Also + recognize these keys? Mostly useful for xterm simulators, like gnometerm. + See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style. +8 '[ and '] should be set to start/end of line when using a linewise operator + (e.g., ":w"). +8 CTRL-A can't handle big "long" numbers, they become negative. Check for + "-" character, if not present, use unsigned long. +8 Make it possible to disable the special meaning of "#" in the first column + for ">>". +8 Add suspending with CTRL-Z at the "more" prompt, and when executing a long + script in do_cmdline(). +8 When using 'hidden', many swap files will be open. When Vim runs into the + maximum number of open files, error messages will appear. Detect that + this problem is present, and close any hidden files that don't have + changes. +8 With 'viminfo' set such that the ".viminfo" file is written on a FAT + filesystem, an illegal file name may be created: ".vim". +8 For each buffer that is opened, the viminfo file is opened and read to + check for file marks. This can be slow. +7 In xterm, recognize both vt100 and vt220 cursor keys. Change + add_termcode() to not remove an existing entry for a name, when it's + needed. + Need a generic solution to recognize different codes for the same key. +8 Core dump within signal function: gdb doesn't show stack backtrace! Option + to skip catch_signals()? +9 Repeating a "cw" with "." doesn't work if the text was pasted from the + clipboard. (Thomas Jones) It's because the menu/toolbar item exits Insert + mode and uses "gP". How to fix this without breaking inserting a block of + text? +8 In Replace mode pasting from the clipboard (using menu or toolbar) inserts + all the text. Add ":rmenu"? +8 Pasting with the mouse in Replace mode inserts the text, instead of + overwriting, when it is more than one line. Same for using <C-R>. +9 CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are + wrapping (Acevedo/in.226). E.g., when using CTRL-E, window height 7, + window might actually scroll down when last line of buffer is displayed. + --> Remember if the previous command was "cursor follows screen" or + "screen follow cursor" and use this in cursupdate(). +7 tilde_replace() can only handle "~/", should also do "~user/". + Get the list of home directories (from /etc/passwd? Use getpwent()) and + use some clever algorithm to match a path with that. Find common strings + in the list? +8 When dragging status line with mouse, sometimes a jump when first clicking + on the status line (caused by 'winheight'). Select window on button up, + instead of on button down. +8 Dragging the status line doesn't scroll but redraw. +9 Evaluating 'statusline' in build_stl_str_hl() does not properly check for + reaching the end of the available buffer. +8 When performing incremental search, should abort searching as soon as a + character is typed. +8 When the value of $MAKE contains a path, configure can't handle this. + It's an autoconf bug. Remove the path from $MAKE to work around it. +8 How to set VIMRC_FILE to \"something\" for configure? Why does this not + work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure +8 The temporary file is sometimes not writable. Check for this, and use an + alternate name when it isn't. Or add the 'temptemplate' option: template + for the temp file name ":set temptemplate=/usr/tmp/?????.tmp". + Also: Win32 version uses Windows temp directory, which might not work for + cygwin bash. +7 Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}". + Remember flags for backreferences. +7 When switching to Daylight Saving Time, Vim complains that a file has been + changed since last read. Can we use a function that uses GMT? +7 When completing an environment variable after a '$', check for file names + that contain a '$' after all have been found. +8 When "cm" termcap entry is missing, starting gvim shouldn't complain about + it. (Lohner) Try out with "vt100" entry, cm replaced with cX. +7 When an include file starts with "../", the check for already visiting + this file doesn't work. Need to simplify the file name. +8 On Sinix SYS_NMLN isn't defined. Include patch from Cristiano De Michele. +7 The names and comments for the arguments of do_browse() are confusing. + "dflt" isn't the default file name when "initdir" is not NULL and + "initdir" is the default path to be used. +7 When 'scrolloff' is exactly half the window height, "j" causes a scroll of + two lines at a time. "k" doesn't do this. (Cory T. Echols) +8 When write_viminfo() is used while there are many orphaned viminfo + tempfiles writing the viminfo file fails. Give a clear error message so + that the user knows he has to delete the files. +7 It's possible to redefine a script-local function with ":func + <SNR>123_Test()". (Krishna) Disallow this. +7 After ":%d" an undo reports the number of lines added as if there still + was one line. + + +I can't reproduce these (if you can, let me know how!): +9 NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file + disappears. Editing ".xyz" is OK. Also, drag&drop only works for three + files. (McCollister) +8 Motif: Tear-off menu item crashes Vim on some machines. (Netherton) It + works fine for me, maybe it's a Motif problem. + + +Problems that will (probably) not be solved: +- In a terminal with 'mouse' set such that the mouse is active when entering + a command line, after executing a shell command that scrolls up the + display and then pressing ":": Selecting text with the mouse works like + the display wasn't scrolled. Vim doesn't know how much the external + command scrolled up the display. Use Shift to select text. +- X windows: When $DISPLAY points to a X server where there is no access + permission, trying to connect to the X server causes an error message. + XtOpenDisplay() prints this directly, there is no way to avoid it. +- X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim. + This is caused by a fault in a X library function, can't be solved in Vim. +- Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will + be underlined, instead of in "Symbol". Motif doesn't let us specify which + character gets the highlighting. +- Moving the cursor removes color in color-xterm. This is a color-xterm + problem! color-xterm ver. 6.1 beta 3 and later work properly. +- In zsh, "gvim&" changes the terminal settings. This is a zsh problem. + (Jennings) +- Problem with HPterm under X: old contents of window is lost (Cosentino). +- Amiga: When using quickfix with the Manx compiler we only get the first 25 + errors. How do we get the rest? +- Amiga: The ":cq" command does not always abort the Manx compiler. Why? +- Linux: A file with protection r--rw-rw- is seen readonly for others. The + access() function in GNU libc is probably wrong. +- MSDOS: When using smartdrive with write-back buffering, writing to a + readonly floppy will cause problems. How to test for a writable floppy + first? +- MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for + names that start with a dot. These used to be illegal file names. +- When doing a CTRL-Z and typing a command for the shell, while Vim is busy + (e.g. writing a file), the command for the shell is sometimes eaten by Vim, + because the terminal mode is changed from RAW to CBREAK. +- An old version of GNU tgoto can't handle the terminfo code for "AF". The + "%p1" is interpreted as "%p" and "1", causing color not to be working. + Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p". + (Benzinger). +- When running an external command from the GUI, typeahead is going to that + program, not to Vim. It looks like the shell eats the characters, Vim + can't get back what the external command didn't use. +- Win32 GUI: Error code from external command not returned in shell_error. + It appears that cmd.exe and command.com don't return an error code. +- Win32 GUI: The Toolbar is a bit too high when the flat style is being + used. We don't have control over the height of the Toolbar. +- Win32: All files created on the day of switching from winter to summer + time cause "changed since editing started" messages. It goes away when + the file is written again the next day, or the timezone is adjusted. + DJGPP version is OK. (Zaimi) Looks like a problem with the Win32 library. + Rebooting doesn't help. Time stamps look OK in directory. (Penn) + Is this on FAT (stores wall clock time) or NTFS (stores UTS)? +- Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles + are not on the boot disk. This is caused by a wrong value of $HOMEDRIVE. + This is a bug in XP, see MSKB article 818134. +- SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal + scroll bar for the "files" selection. This is a problem in the Motif + libraries, get a patch from Sun. +- Solaris 2.6 with GTK and Perl: gvim crashes when started. Problem with X + input method called from GDK code. Without Perl it doesn't crash. +- VMS: Vimdiff doesn't work with the VMS diff, because the output looks + different. This makes test 47 fail. Install a Unix-compatible diff. +- VMS v7.1 and older: Tests 21 and 32 fail. From VMS v7.1-2 and newer Vim + does not have this behavior. (Zoltan Arpadffy) +- Win32 GUI: mouse wheel always scrolls rightmost window. The events arrive + in Vim as if the rightmost scrollbar was used. +- GTK with Gnome: Produces an error message when starting up: + Gdk-WARNING **: locale not supported by C library + This is caused by the gnome library gnome_init() setting $LC_CTYPE to + "en_US". Not all systems support this locale name, thus causing the + error. Hopefully a newer version of GTK/Gnome fixes this problem. +- GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the + screen, at other times there is a grey area below the command line: + :nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr> +- GTK: When pasting a selection from Vim to xclipboard gvim crashes with a + ABRT signal. Probably an error in the file gdkselection.c, the assert + always fails when XmbTextListToTextProperty() fails. (Tom Allard) +- When using an xterm that supports the termresponse feature, and the 't_Co' + termcap option was wrong when Vim started, it will be corrected when the + termresponse is received. Since the number of colors changes, the + highlighting needs to be initialized again. This may cause colors defined + in the vimrc file to be lost. +- On Windows NT 4.0 the number of files passed to Vim with drag&drop and + "Edit with Vim" is limited. The maximum command line length is 255 chars. + +--------------------- extensions and improvements ---------------------- + *extensions-improvements* + +For version 7.0: +- Include the kvim patch. http://freenux.org/vim/ (Mickael Marchand) + Do not add Qtopia yet, it doesn't work very well. +- The main() function is very long. Move parts to separate functions, + especially loops. Ideas from Walter Briscoe (2003 Apr 3, 2004 Feb 9). +- Store messages to allow scrolling back for all commands. And other "less" + like commands. +7 When a dos format file was edited with ":e ++ff=unix", Vim is killed and + trying to recover the file, 'ff' will be dos. Same for non-default + fileencoding. (Miroslaw Dobrzanski-Neumann, Jul 17) Should store the + values in block 0 of the swap file, but that is an incompatible change. + + +Documentation: +8 Extend usr_27.txt a bit. (Adam Seyfarth) +9 Merge in ideas from ~/vim/patches/tutor.txt (Gabriel Zachmann) +7 Add a section on debugging scripts in the user manual. +9 Make the Reference Manual more precise. For each command mention: + - change to cursor position and curswant + - if it can be undone (u/CTRL-R) and redone (.) + - how it works for folded lines + - how it works with multi-byte characters +9 In change.txt, remark about Javadoc isn't right. Right alignment would + work too. +8 Spread the windows commands over the other files. For example, ":stag" + should be with ":tag". Cross-link with tags to avoid too much double + text. +7 MS-Windows: When a wrong command is typed with an ALT key, give a hint to + look at the help for 'winaltkeys'. +7 Add a help.vim plugin that maps <Tab> to jump to the next tag in || and + <C-Tab> (and <S-Tab>) to the previous tag. +- Check text editor compendium for vi and Vim remarks. + + +Help: +- First try using the ":help" argument literally, before using it as a + pattern. And then match it as part of a tag. +- When a help item has multiple matches make it possible to use ":tn" to go + to the other matches. +- Support a way to view (and edit) .info files. +- Default mapping for help files: <Tab> to position cursor on next |:tag|. +- Implement a "sticky" help window, some help text lines that are always + displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file, + user can edit it to insert his favorite commands, new account can contain a + default contents. +- Make 'winminheight' a local option, so that the user can set a minimal + height for the help window (and other windows). +- ":help :s^I" should expand to ":help :substitute". +- Make the help key (<F1>) context sensitive? +- Learn mode: show short help while typing commands. + + +User Friendlier: +8 Windows install with install.exe: Use .exe instead of .bat files for + links, so that command line arguments are passed on unmodified? (Walter + Briscoe) +8 Windows install: Be able to associate Vim with a selection of file types? +8 Windows uninstall: Have uninstal.c delete the vimfiles directories that + dosinst.c creates. List the contents of the directory (recursively) if + the user asks for it. Requires an implementation of "rm -rf". +8 Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc, + $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu. +- Add a way to save local settings and mappings into a new plugin file. + ":mkplugin <file>"? +8 Add ":plugininstall" command. Can be used to install a plugin file that + includes documentation. Let the user select a directory from + 'runtimepath'. + " Vim plugin + <main plugin code> + " >>> plugin help start <<< + <plugin docs> +- Add mappings local to a window: ":map <window> ..."? +9 Add buffer-local menu. Should offer a choice between removing the menu or + disabling it. Be careful that tear-offs don't disappear (keep one empty + item?). + Alternative: use BufEnter and BufLeave autocommands. +8 Add file locking. Lock a file when starting to edit it with flock() or + fcntl(). This patch has advisory file locking while reading/writing the + file: ~/vim/patches/kahn_file_locking . +8 make a vimtutor script for Amiga and other systems. +7 Add the arguments for configure to the ":version" output? + + +Diff mode: +8 Add a command to stop diff mode: ":set nodiff fdc = 0 noscrollbind" +8 Use diff mode to show the changes made in a buffer (compared to the file). + Use an unnamed buffer, like doing: + new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis +7 Add cursor-binding: when moving the cursor in one diff'ed buffer, also + move it in other diff'ed buffers, so that CTRL-W commands go to the same + location. + + +Folding: + (commands still available: zg zG zI zJ zK zp zP zq zQ zV zw zW zy zY; + secondary: zB zS zT zZ) +8 Add different highlighting for a fold line depending on the fold level. + (Noel Henson) +8 When a closed fold is displayed open because of 'foldminlines', the + behavior of commands is still like the fold is closed. How to make the + user aware of this? +8 Add an option 'foldskip' with values like 'foldopen' that specifies which + commands skip over a closed fold. +8 "H" and "L" count buffer lines instead of window lines. (Servatius Brandt) +8 Add a way to add fold-plugins. Johannes Zellner has one for VB. +7 When using 2html.vim, also reproduce folds as you can see them. When + someone doesn't want the folds he can disable them before converting. + First attempt by Carl Osterwisch, 2004 May 10. +7 When using manual folding, the undo command should also restore folds. +- Allow completely hiding a closed fold. Require showing a character in + 'foldcolumn' to avoid the missing line goes unnoticed. +- When pressing the down arrow of a scrollbar, a closed fold doesn't scroll + until after a long time. How to make scrolling with closed folds + smoother? +- When creating a session, also store folds for buffers in the buffer list, + using the wininfo in wi_folds. +- 'foldmethod' "textobject": fold on sections and paragraph text objects. +- Add 'hidecomment' option: don't display comments in /* */ and after //. +- "zu": undo change in manual fold. "zU" redo change in manual fold. How to + implement this? +- "zJ" command: add the line or fold below the fold in the fold under the + cursor. +- 'foldmethod' "syntax": "fold=3": set fold level for a region. +- Can set 'foldtext' to empty string: don't display any line. How to + implement this? +- Apply a new foldlevel to a range of lines. (Steve Litt) +- Have some way to restrict commands to not folded text. Also commands like + searches. + + +Multi-byte characters: +9 When the tail byte of a double-byte character is illegal (e.g., a CR), the + display is messed up (Yasuhiro Matsumoto). Should check for illegal + double-byte characters and display them differently (display each single + byte). +8 Add an item in 'fileencodings' to check the first lines of a file for + the encoding. See Python PEP: http://www.python.org/peps/pep-0263.html. + To avoid getting a wrong encoding only accept something Emacs-like: + "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-" + Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first + item. +8 Add an item in 'fileencodings' to check the first line of an XML file for + the encoding. <?xml version="1.0" encoding="UTF-8"?> Or "charset=UTF-8"? +8 The quickfix file is read without conversion, thus in 'encoding'. Add an + option to specify the encoding of the errorfile and convert it. Also for + ":grep". +8 When a file was converted from 'fileencoding' to 'encoding', a tag search + should also do this on the search pattern. (Andrzej M. Ostruszka) +7 When converting a file fails, mention which byte could not be converted, + so that the user can fix the problem. +8 Add configure option to be able to disable using the iconv library. (Udo + Schweigert) +8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac? +9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El) +8 Should add test for using various commands with multi-byte characters. +- Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work for + multi-byte characters. +8 'infercase' doesn't work with multi-byte characters. +8 toupper() function doesn't handle byte count changes. +8 Support four composing characters, needed for Hebrew. (Ron Aaron) +8 "ga" should show all composing characters, also if there are more than 2. +7 When searching, should order of composing characters be ignored? +8 Should implement 'delcombine' for command line editing. +8 Detect overlong UTF-8 sequences and handle them like illegal bytes. +8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte + characters. +8 UTF-8: "r" in Visual mode doesn't take composing characters. +8 UTF-8: When there is a precomposed character in the font, use it instead + of a character and a composing character. See xterm for an example. +7 When a character can't be displayed, display its digraph instead. + 'display' option to specify this. +7 Use ideas for nl_langinfo() from Markus Kuhn in enc_default(): + (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c) +- GTK and Win32: Allow selecting fonts for 'guifontset' with the + fontselector somehow. +- GTK and Win32: make it possible to set the font for the menu to make it + possible to have 'encoding' different from the current locale. +- dbcs_class() only works for Japanese and Korean. Implement this for + other encodings. The "euc-jp" and "euc-kr" choices might be wrong. +- Find some way to automatically select the right GUI font or fontset, + depending on the default value of 'encoding'. + Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used. + For Windows, the charset_pairs[] table could be used. But how do we know + if a font exists? +- Do keyboard conversion from 'termencoding' to 'encoding' with + convert_input() for Mac GUI, RiscOS GUI, BeOS GUI. +- Add mnemonics from RFC1345 longer than two characters. + Support CTRL-K _{mnemonic}_ +7 In "-- INSERT (lang) --" show the name of the keymap used instead of + "lang". (Ilya Dogolazky) +- Make 'langmap' accept multi-byte characters. +- Do we need the reverse of 'keymap', like 'langmap' but with files and + multi-byte characters? E.g., when using a Russian keyboard. +- Add the possibility to enter mappings which are used whenever normal text + could be entered. E.g., for "f" command. But not in Normal mode. Sort + of opposite of 'langmap'. Use ":tmap" command? +- When breaking a line, take properties of multi-byte characters into + account. The "linebreak" program from Bruno Haible can do it: + ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz + But it's very complicated... + + +Printing: +- Add "page width" to wrap long lines. +- Win32: use a font dialog for setting 'printfont'. Can reuse the code for + the 'guifont' dialog, put the common code in a separate function. +- Win32: when 'printfont' is empty use 'guifont'. +- Unix: Use some dialog box to do the obvious settings (paper size, printer + name, portrait/landscape, etc). +- Win32: add options to print dialog. Patch from Vipin Aravind. +- PostScript: only works for 7-bit ASCII and EBCDIC. Should support + different 'encoding' values somehow. +- Allow specifying the paper size, instead of using a standard size. Same + units as for the margins. +- Support right-to-left text? +8 Make the foreground color darkening function preserve the hue of the + color. + + +Syntax highlighting: +- Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5) + use the patch that keeps using HLF_8 if HLF_WS has not + been given values. + Add section in help files for these highlight groups? +8 Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson) + Should do the same for ":syn on" and ":syn manual". +8 Support "containedin" argument for ":syn include", so that the defined + cluster can be added to existing syntax items. +8 C syntax: Don't highlight {} as errors inside () when used like this: + "({ something })", often used in GCC code. +8 When editing a new file without a name and giving it a name (by writing + it) and 'filetype' is not set, detect the filetype. Avoid doing it for + ":wq file". +8 Make conversion to HTML faster (Write it in C or pre-compile the script). +9 There is still a redraw bug somewhere. Probably because a cached state is + used in a wrong way. I can't reproduce it... +7 Make syntax keyword table configurable. Set number of bits used with + ":syn clear [hashbits]", so that we don't need to reallocate the table. + minimal 4 bits, maximal 16. (Campbell) +7 Be able to change only the background highlighting. Useful for Diff* and + Search highlighting. +8 Allow the user to add items to the Syntax menu sorted, without having to + change this for each release. +8 Add a "matchcontains" for regions: items contained in the start or end + pattern, but not in the body. +8 Add a "keepend-contained" argument: Don't change the end of an item this + one is contained in. Like "keepend" but specified on the contained item, + instead of the containing item. +8 For keywords, allow to define the size of the hash table with ":syn + clear". Change KHASH_ defines into variables stored in buffer struct. + Use something else than linear linked list from the hash table. (Campbell) +8 cpp.vim: In C++ it's allowed to use {} inside (). +8 Some syntax files set 'iskeyword'. When switching to another filetype + this isn't reset. Add a special keyword definition for the syntax rules? + When this is done, use vim.vim syntax highlighting for help file examples, + but without ":" in 'iskeyword' for syntax. +8 Add specific syntax item to match with parens/braces that don't have a + "%" match. :syntax nomatch cMatchError (,{,[,),},] [contained] +8 Highlight the text between two matching parens (e.g., with a grey + background) when on one of the parens or in between them. + Or highlight the matching paren when the cursor is on one. +8 Add a command to jump to the next character highlighted with "Error". +8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop + sequences. Add remark in docs that :if 'term' == "term-name" should be + used. +8 Add @spell cluster to String and Comment groups for many languages. Will + allow spell checking. (Fleiner) +8 When listing syntax items, try to sort the keywords alphabetically. And + re-insert the [] if possible. +8 Make it possible to use color of text for Visual highlight group (like for + the Cursor). +8 "fg" and "bg" don't work in an xterm. Get default colors from xterm with + an ESC sequence. Ideas in: ~/vim/patches/vikas.xtermcolors . +8 Make it possible to only highlight a sub-expression of a match. Like + using "\1" in a ":s" command. +8 Support for deleting syntax items: + :syn keyword cTodo remove this + :syn match cTodo remove "pattern" + :syn region cString remove start="this" end="that" +8 Add possibility to sync on something else, when the syncing in one way + doesn't find match. For HTML: When no {script} is found, try looking for + a '<'. (Fleiner) +7 Replace the synchronizing method with a state machine specification? + Should be able to start at any line in the file, search forwards or + backwards, and use the result of matching a pattern. +7 Use parsing like awk, so that e.g., a ( without a matching ) can be + detected. +8 Make it possible to use "inverted" highlighting, invert the original + character. For Visual mode. (xterm-selection already does this). +8 Highlight non-printable characters with "SpecialChar", linked to + "Special". Display them with the digraph characters, if possible. +7 Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Martin + Dalecki has a patch for Motif) +8 Highlight the clipboard-selection with a highlight group. +8 Be able to reset highlighting to its original (default) values. +7 Be able to write current highlighting to a file as commands, similar to + ":mkvimrc". +8 Improve c.vim: + - Add check for unterminated strings, with a variable to switch it on: + "c_strict_ansi". + - Detect unbalanced "#endif". Requires looking back a long way... +8 Add an option to restrict the updating of syntax highlighting to the + current line while in Insert mode. +8 When guessing value of 'background', the syntax file has already been + loaded (from the .gvimrc). After changing 'background', load it again? +8 Add ":syn resync" command, to re-parse the whole file until the current + display position. +8 Should support "me" offset for a region start pattern. To be used to + allow searching for the end pattern inside the match of the end pattern. + Example: syn region pikeXX start="([^{]" end=")" should work on "()". +8 When using a regexp for "contains=", should delay matching with it until + redrawing happens. Set a flag when a group is added, check this flag when + highlighting starts. +7 Add "semitrans": Add highlighting. E.g., make the text bold, but keep the + colors. And add colors, so that Green+Red becomes Yellow. + E.g. for this html: + <B> bold text <I> italic+bold text </B> italic text </I> +7 Wild idea: Not only set highlighting, but also change what is displayed + (e.g., remove characters, so that "<B>bold</B>" can be shown as "bold"): + :syn region boldstuff start="<B>" display="" end="</B>" display="" +7 CTRL-] checks the highlight group for finding out what the tag is. +7 Add an explanation how a list of words can be used to highlight misspelled + words. +8 Add spell checking. Use "ispell -a" somehow. + ~/vim/patches/wm_vim-5_4d.zip can be used as an example (includes ispell + inside Vim). Gautam Iyer has an example with "aspell". "engspchk" from + Charles Campbell is a good way. Support for approximate-regexps will help + (agrep http://www.tgries.de/agrep/). +7 Command line completion for ":find" should search in 'path'. +8 Add more command line completion for :syntax. +8 Add more command line completion for :highlight. +8 Add more command line completion for :sign. +7 Should find a better way to parse the :syntax and :highlight commands. + Use tables or lists that can be shared by parsing for execution and + completion? +8 Add ColorSchemePost autocommand event, so that scripts can set up their + highlighting. (Salman Halim) +7 Add a few sets of colors (e.g. Borland Turbo C one). With a menu to + select one of the sets. +8 Add offsets to sub-matches: "\(a*\) *"he=e1-1 + 'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch + 2, etc. +8 In Insert mode, when there are typeahead characters, postpone the + highlighting (for "." command). +8 Syncing on comments isn't 100% correct when / / lines mix with / * and * /. + For example: What about a line that starts with / / and contains * /? +8 Ignore / * and * / inside strings, when syncing. +7 Build a few more syntax files from the file "/usr/share/misc/vgrindefs": + ISP, LDL, Icon, ratfor. And check "nedit/source/highlight.c". +6 Add possibility to have background color continue until the right edge of + the window. Useful for comment blocks and function headings. (Rogall) +- Make it possible to add "contains" items for all items in a group. Useful + when extending an already existing syntax file. +- Add line-continuation pattern for non-syncing items too? +- Add possibility to highlight specific columns (for Fortran). Or put a + line in between columns (e.g. for 'textwidth'). + Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20. +- Add possibility to highlight the whole line, including the right margin + (for comment blocks). +- Add 'hlmatch' option: List of flags: + 'c': highlight match for character under the cursor. + 'b': highlight the previous (, and its match. + 'a': highlight all text from the previous ( until its match. + Also for {}, <>, etc.? + 'e': highlight all braces without a match (slow?) + OR: add an argument "cursor" to the syntax command, which means that the + region/match/keyword is only highlighted when the cursor is on it. + (Campbell) + Or do it like Elvis: define text objects and how to highlight them around + the cursor. (Iain Truskett) +7 Make it possible to use all words in the tags files as Keyword. + Can also be done with a script (but it's slow). +7 Make it possible to call a ":" command when a match is found. Should + allow for adding keywords from the text (e.g. variables that are set). + And allows for sections with different highlighting. +7 Add highlight group for commandline: "Commandline". Make sure it + highlights the command line while typing a command, and any output from + messages. And external commands? +8 Make a version that works like less, but with highlighting: read stdin for + text, exit at end of file, don't allow editing, etc. moreim? lessim? +7 SpecialKey highlighting overrules syntax highlighting. Can't give an + unprintable char another color. Would be useful for ^M at end of line. + + +Built-in script language: +8 Add referring to key options with "&t_xx". Both for "echo &t_xx" and + ":let &t_xx =". Useful for making portable mappings. +8 Allow range for ":exec". Pass it on to the executed command. (Webb) +8 exists("&&option") tests if 'option' is actually implemented. Useful for + 'shellslash', for example. +7 Be able to call a function while passing on a variable number of + arguments: + :function Foo(abc, ...) + : call Bar(a:abc, a:*) + Charles Campbell has a patch for this +8 Have a look at VSEL. Would it be useful to include? (Bigham) +8 Add ":fungroup" command, to group function definitions together. When + encountered, all functions in the group are removed. Suggest using an + obscure name to avoid name clashes. Require a ":fungroup END" in the same + sourced file? Assume the group ends at the end of the file. Handle + nested packages? + Alternative: Support packages. {package-name}:{function-name}(). + Packages are loaded automatically when first used, from + $VIMRUNTIME/packages (or use a search path). +7 Make globpath() also work with "**" and upwards search. (Brian Medley) +7 Pre-parse or compile Vim scripts into a bytecode. + 1. Put the bytecode with the original script, with an ":if + has('bytecode')" around it, so that it's only used with a Vim that + supports it. Update the code with a command, can be used in an + autocommand. + 2. Use a ".vic" file (like Python use .pyc). Create it when writing a + .vim file. Problem: distribution. + 3. Use a cache directory for each user. How to recognize which cached + file belongs to a sourced script? +7 Add "n" flag to search() function, just like searchpair(). (Alexey + Marinichev) +8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible. + Aric Blumer has a patch for this. +7 Add argument to winwidth() to subtract the space taken by 'foldcolumn', + signs and/or 'number'. +8 Add functions: + multibyteidx(string, idx) Byte index in multi-byte character. + Patch by Ilya Sher, 2004 Feb 25 + menuprop({name}, {idx}, {what}) + Get menu property of menu {name} item {idx}. + menuprop("", 1, "name") returns "File". + menuprop("File", 1, "n") returns "nmenu + File.Open..." argument. + Patch by Ilya Sher, 2004 Apr 22 + mapname({idx}, mode) return the name of the idx'th mapping. + Patch by Ilya Sher, 2004 Mar 4. + match({pat}, {string} [,start] [,count]) get index of count'th match + Patch by Ilya Sher, 2004 Mar 31 + sprintf(format, arg, ..) How to prevent a crash??? + mousex() mousey() get position of mouse pointer (patch by Ross + Presser) + attributes() return file protection flags "drwxrwxrwx" + mkdir(dir) Create directory + copy(from, to) Copy a file + perl(cmd) call Perl and return string + shorten(fname) shorten a file name, like home_replace() + input(prompt, complete) like input() but do specified completion + inputrl() like input() but right-to-left + virtualmode() add argument to obtain whether "$" was used in + Visual block mode. + tagtype(tag) get type of tag (also checks if it exists) + getacp() Win32: get codepage (Glenn Maynard) + tr(expr, from, to) translate chars (Patch from Ron Aaron, Apr 8 + 2004) + find() find file in 'path' (patch from Johannes + Zellner 2001 Dec 20) + realname() Get user name (first, last, full) + user_fullname() patch by Nikolai Weibull, Nov + 3 2002) + getfperm() file permissions, in form "rwxrwxrwx" + (patch from Nikolai Weibull 2003 Jan 13) + getftype() "file", "dir", "link", "other"? + (patch from Nikolai Weibull 2003 Jan 13) + setbufline() set line in any buffer (patch from Yegappan + Lakshmanan, 2003 Jan 21) + getbufline() get line from any buffer + deletebufline() delete line in any buffer + appendbufline() append line in any buffer + winnr("$") Get number of windows. (patch from Nikolai + Weibull 2003 Jan 13) (another patch from + Yegappan Lakshmanan, 2003 Aug 31) + search() Add optional offset argument. + Add 'n' flag. (patch from Nikolai Weibull + 2003 Jan 13) + sort() Sort a newline-separated string. Also: + ":sort". + libcall() Allow more than one argument. + libcallext() Like libcall(), but using a callback function + to allow the library to execute a command or + evaluate an expression. + confirm() add "flags" argument, with 'v' for vertical + layout and 'c' for console dialog. (Haegg) + Flemming Madsen has a patch for the 'c' flag + (2003 May 13) + system({cmd}, {expr}) Filter {expr} through the shell command + {cmd} and return the result. + (Patch from Yegappan Lakshmanan) + raisewin() raise gvim window (see HierAssist patch for + Tcl implementation ~/vim/HierAssist/ ) + gettext() Translate a message. (Patch from Yasuhiro + Matsumoto) How to get the messages into the + .po files? + strrep() Repeat a string (patch from Christophe Poucet, + 2003 Sep 12, also contains XX) + char2hex() convert char string to hex string. XX + hex2char() convert hex string to char string. XX +7 Make bufname("'0") return the buffer name from mark '0. How to get the + column and line number? col("'0") currently returns zero. +8 argc() returns 0 when using "vim -t tag". How to detect that no file was + specified in any way? To be able to jump to the last edited file. +8 Pass the executable name to the Vim scripts in some way. As v:argv0? +8 Add command arguments with three dashes, passed on to Vim scripts. +8 When starting to source a vim script, delete all functions that it has + previously defined? Avoids using ":fun!" all the time. +7 Add optional arguments to user functions: + :func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17) +6 User functions: Functions local to buffer "b:func()"? +8 Add ":let var[{expr}] = {expr}". When past the end of "var" just ignore. +8 The "= register should be writable, if followed by the name of a variable, + option or environment variable. +8 ":let &option" should list the value of the option. +7 Add synIDlist(), making the whole list of syntax items on the + stack available (separated with '\n'). +8 Add autocommand-event for when a variable is changed: + :au VarChanged {varname} {commands} +8 Add "has("gui_capable")", to check if the GUI can be started. +8 Add possibility to use variables like registers: characterwise (default), + linewise (when ending in '\n'), blockwise (when ending in '\001'). reg0, + rega, reg%, etc. Add functions linewise({expr}), blockwise({expr}) and + charwise({expr}). +7 Make it possible to do any command on a string variable (make a buffer + with one line, containing the string). Maybe add an (invisible) scratch + buffer for this? + result = scratch(string, command) + result = apply(string, command) + result = execute(string, command) + "command" would use <> notation. + Does scratch buffer have a number? Or re-use same number? +7 Add function to generate unique number (date in milliseconds). +7 Automatically load a function from a file when it is called. Need an + option for the search path. (Sekera) +7 Persistent variables: "p:var"; stored in viminfo file and sessions files. +7 Include support for arrays? Patch from Robert Webb. + This is restricted to fixed-size arrays indexed by number. Better: Use + associative arrays: a[5] = 3, a["some"] = 'x'. Implement by translating + into ordinary variables: a[5] is "-a-5", a["some"] is "a-some", a[5][6] is + "a-5-6". But how to do array assignment and concatenation? + Alternative: use dictionaries, like Python. + + +Robustness: +8 This pattern in syntax/java.vim causes a recursive call of regmatch(): + syn match javaStringError +"\([^"\\]\|\\.\)*$+ + A long line with a " in it can cause a crash when it runs out of stack + space (on systems where this isn't caught). How can we catch this for + more systems? + + +Performance: +8 Loading plugins takes startup time. Only load the part that is used to + trigger the rest, and load the rest when it's needed? +8 Turn b_syn_ic and b_syn_containedin into b_syn_flags. +9 Loading menu.vim still takes quite a bit of time. How to make it faster? +8 in_id_list() takes much time for syntax highlighting. Cache the result? +7 setpcmark() shifts the jumplist, this takes quite a bit of time when + jumping around. Instead use an index for the start? +8 When displaying a space with only foreground highlighting, it's the same + as a space without attributes. Avoid displaying spaces for the "~" lines + when starting up in a color terminal. +8 Avoid alloc() for scratch buffer use, esp. in syntax.c. It's very slow on + Win16. +9 Setting GUI options in the console (e.g., 'guifont') should not cause a + redraw. +8 Profiling shows that in_id_list() is used very often for C code. Can this + function be improved? +8 For an existing file, the page size of the swap file is always the + default, instead of using the block size of the device, because the swap + file is created only after setting the block size in mf_open(). How can + this be improved? +8 Set default for 'ttyscroll' to half a screen height? Should speed up + MS-DOS version. (Negri) +7 C syntax highlighting gets a lot slower when adding a region for folding + from { to }. (Charles Campbell) Inserting a "{" is very slow. (dman) +7 HTML syntax highlighting is slow for long lines. Try displaying + http://www.theregister.co.uk/content/4/22908.html. (Andre Pang) +7 Check how performance of loading the wordlist can be improved (adding a + lot of abbreviations). +7 DOS console: Add t_DL support, to make scrolling faster. +7 Compile Ex commands to byte codes. Store byte codes in a vim script file + at the end, after "compiled:. Make it look like a single comment line + for old Vim versions. Insert first line "Vim script compiled <timestamp>. + Only used compiled code when timestamp matches the file stat. + Add command to compile a vim script and add it to the file in-place. + Split Ex command executing into a parsing and executing phase. + Use compiled code for functions, while loops, etc. +8 When editing a file with extremely long lines (e.g., an executable), the + "linerest" in readfile() is allocated twice to be able to copy what was + read so far. Use realloc() instead? Or split the line when allocating + memory fails and "linerest" is big (> 100000)? +8 When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to + compare each pattern with all existing patterns. Use a hash code to avoid + using strcmp() too often? +7 Include turbo_loader patches, speeding up reading a file? + Speed up reading a file by reading it into a fixed-size buffer, creating + the list of indexes in another buffer, and then copying the result into a + memfile block with two copies. Then read the next block into another + fixed-size buffer, create the second list of indexes and copy text from + the two blocks to the memfile block. +7 do_cmdline(): Avoid that the command line is copied to allocated memory + and freed again later all the time. For while loops, and for when called + with an argument that can be messed with. + Generic solution: Make a struct that contains a pointer and a flag that + indicates if the pointer should be freed when replaced. +7 Check that the file size is not more than "sizeof(long)". +- Further improve finding mappings in maphash[] in vgetorpeek() +8 Syntax highlighting is slow when deleting lines. Try in + $VIMRUNTIME/filetype.vim. +- "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of + lines (27000) a few times. Memory fragmentation? +- Have a look at how pdksh does memory allocation (alloc.c). (Dalecki) +- Do profiling on: + - :g/pat/normal cmd + - 1000ii<Esc> + - deleting 10Mbyte worth of lines (netscape binary) + - "[i" and "[d" (Yegappan Lakshmanan) + - ":g/^/m0" on a 450Kbyte file. And the "u". + - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and + "~/vim/test/lockup.pl". + - loading a syntax file to highlight all words not from a dictionary. + - editing a vim script with syntax highlighting on (loading vim.vim). +7 Screen updating can be further improved by only redrawing lines that were + changed (and lines after them, when syntax highlighting was used, and it + changed). + - On each change, remember start and end of the change. + - When inserting/deleting lines, remember begin, end, and line count. +- Use macros/duarte/capicua for profiling. Nvi 1.71 is the fastest! +- When using a file with one long line (1Mbyte), then do "$hhhh", is still + very slow. Avoid calling getvcol() for each "h"? +- Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to + move the previous commands forward each time. Pass count from + normal_cmd() down to do_execreg(). +- Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of + the <Esc> at the end. Make this work faster (disable redrawing). +- Avoid calls to plines() for cursor line, use w_cline_height. +- After ":set nowrap" remove superfluous redraw with wrong hor. offset if + cursor is right of the screen. +8 Make CTRL-C on Unix generate a signal, avoid using select() to check for a + CTRL-C (it's slow). + + +Code size: +8 GUI: When NO_CONSOLE is defined, more code can be excluded. +- Put getline() and cookie in a struct, so only one argument has to be + passed to do_cmdline() and other functions. +8 Make a GUI-only version for Unix? +8 In buf_write _() isn't needed when setting errmsg, do it once when using + it. +7 When compiling with a GUI-only version, the code for cterm colors can be + left out. +8 When compiled with a GUI-only version, the termcap entries for terminals + can be removed. +8 Can the check for libelf in configure.in be removed? + + +Messages: +8 When using ":q" in a changed file, the error says to "add !". Add the + command so that beginners understand it: "use :q!". +8 For 'verbose' level 12 prints commands from source'ed files. How to skip + lines that aren't executed? Perhaps move the echoing to do_cmdline()? +8 Use 'report' for ":bdel"? (Krishna) To avoid these messages when using a + script. +8 "vim --version" output goes to stderr, should be stdout. Can all output + from messages using printf() go to stdout? +- Delete message after new command has been entered and have waited for key. + Perhaps after ten seconds? +- Make message history available in "msg" variables: msg1, msg2, .. msg9. +9 Check handling of overwriting of messages and delays: + Very wrong: errors while redrawing cause endless loop. + When switching to another file and screen scrolls because of the long + message and return must be typed, don't scroll the screen back before + redrawing. +7 Add an option, which is a regexp, that disables warning messages which + match that regexp (Tsirkin). +8 When address range is wrong you only get "Invalid range". Be a bit more + specific: Negative, beyond last line, reverse range? Include the text. +8 Make it possible to ignore errors for a moment ('errorignore'?). Another + option to switch off giving error messages ('errorquiet'?). Also an option + not to give any messages ('quiet')? Or ":quiet on", ":quiet off". + Careful: For a severe error (out of memory), and when the user starts + typing, error messages must be switched back on. + Also a flag to ignore error messages for shell commands (for mappings). +- Option to set time for emsg() sleep. Interrupt sleep when key is typed? + sleep before second message? +8 In Ex silent mode or when reading commands from a file, what exactly is + not printed and what is? Check ":print", ":set all", ":args", ":vers", + etc. At least there should be no prompt. (Smulders) And don't clear the + screen when reading commands from stdin. (Kendall) + --> Make a difference between informative messages, prompts, etc. and + error messages, printing text, etc. +8 Window should be redrawn when resizing at the hit-enter prompt. + Also at the ":tselect" prompt. Find a generic solution for redrawing when + a prompt is present (with a callback function?). + + +Screen updating: +7 Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one + screen line, also if this means the first line doesn't start with the + first character (like what happens with a single line that doesn't fit). +- screen_line(): + - insert/delete character stuff. + - improve delete rest of line (spaces at end of line). +- When moving or resizing window, try to avoid a complete redraw (esp. when + dragging the status line with the mouse). +- When 'lazyredraw' set, don't echo :ex commands? Need a flag to redraw when + waiting for a character. +8 Add a ":refresh [winnr]" command, to force updating a window. Useful from + an event handler where ":normal" can't be used. Also useful when + 'lazyredraw' is set in a mapping. +7 Make 'list' and 'linebreak' work together. +7 Add "nbsp" in 'listchars'? Patch from David Blanchet, 2003 Jul 28. + + +Scrolling: +8 Add "zm" command: scroll horizontally to put the cursor in the middle. +6 Add option to set the overlap for CTRL-F and CTRL-B. (Garhi) +- extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc.. + Also 'e'xecute some commands (search, vertical movements) in all bound + windows. +7 Add 'scrollbind' feature to make the offset of one window with the next + one equal to the window height. When editing one file in both windows it + looks like each window displays a page of the buffer. +- Allow scrolling by dragging with the mouse (grab a character and move it + up/down). Like the "hand" in Acrobat reader. Use Alt-LeftMouse for this? + (Goldfarb) +- Add command to execute some commands (search, vertical movements) in all + bound windows. +- Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to + be bound by regexp searches +- Add "z>" and "z<": scroll sideways one screenfull. (Campbell) +- Add option to set the number of lines when not to scroll, instead of the + fixed number used now (for terminals that scroll slow with a large number + of lines but not with a single line). + + +Autoconf: +8 Should use acconfig.h to define prototypes that are used by autoheader. +8 Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb) + Add a check for the warning, so that "Olimit" can be added automatically? +- Autoconf: Use @datadir@ for the system independent files. Make sure the + system dependent and system independent files are separated. (Leitner). +- Add autoconf check for waitpid()/wait4(). +- Remove fcntl() from autoconf, all systems have it? +- Set default for 'dictionary', add search for dictionary to autoconf. + + +Perl interface: +8 Rename typemap file to something else? +7 Add patch from Benoit Cerrina to integrate Vim and Perl functions better. + Now also works for Ruby (2001 Nov 10) +7 Make buffers accessed as Perl arrays. (Clark) +7 Make it possible to compile with non-ANSI C? +6 Tcl/Tk has the "load" command: load a shared library (.so or .dll). + + +Shared libraries: +6 Add support for loading shared libraries, and calling functions in it. + :libload internal-name libname + :libunload internal-name + :liblist + :libcall internal-name function(arg1, arg2, ...) + :libcall function(arg1, arg2, ...) + libcall() can have only one integer or String argument at the moment. +6 Have a look on how Perl handles loading dynamic libraries. + + +Tags: +8 Add a command to jump to a certain kind of tag. Allow the user to specify + values for the optional fields. E.g., ":tag size type=m". +8 Add a function that returns the line in the tags file for a matching tag. + Can be used to extract more info (class name, inheritance, etc.) (Rico + Hendriks) +7 Count before CTRL-]: jump to N'th match +8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis. +8 When output of ":tselect" is long, getting the more-prompt, should be able + to type the tag number directly. +7 Add a tag-select window. Works like ":cwindow". (Michal Malecki) +7 Add the possibility to use the "-t {tag}" argument multiple times. Open a + window for each tag. +7 Make output of ":tselect" a bit nicer. Use highlighting? +7 Highlight the "tag 1 of >2" message. New highlight group, or same as "hit + bottom" search message. +7 When using ":tag" at the top of the tag stack, should add another entry, + so CTRL-T can bring you back to where you are now AND to where you were + before the previous ":tag" command. (Webb) +7 When using CTRL-] on someClass::someMethod, separate class from method and + use ":ta class:someClass someMethod". + Include C++ tags changes (Bertin). Change "class::func" tag into "func" + with "class=class"? Docs in oldmail/bertin/in.xxx. +7 Add ":tagargs", to set values for fields: + :tagargs class:someclass file:version.c + :tagargs clear + These are then the default values (changes the order of priority in tag + matching). +7 Support for "gtags" and "global"? With ":rtag" command? + There is an example for how to do this in Nvi. + Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi) + The Elvis method is far more flexible, do it that way. +7 Support "col:99" extra field, to position the cursor in that column. With + a flag in 'cpoptions' to switch it off again. +7 Better support for jumping to where a function or variable is used. Use + the id-utils, with a connection to "gid" (Emacs can do it too). Add + ":idselect", which uses an "ID" database (made by "mkid") like "tselect". +7 Add 'taglistfiles' option, show file name and type when listing matching + tags name with CTRL-D completion. Patch from Yegappan Lakshmanan. + + +Security: +- nothing at the moment + + +Win32 GUI: +8 Make debug mode work while starting up (vim -D). Open console window for + the message and input? +7 The Python interface only works with one version of Python, selected at + compile time. Can this be made to work with version 2.1 and 2.2 + dynamically? +7 GvimExt: when there are several existing Vims, move the list to a submenu. + (Mike McCollister) +8 When using "Edit with Vim" for one file it changes directory, when several + files are selected and using "Edit with single Vim" the directory isn't + changed. At least change directory when the path is the same for all + files. Perhaps just use the path of the first file or use the longest + common part of the path. +8 Add font argument to set the lfCharSet. (Bobcik) +8 Somehow automatically detect the system language and set $LANG, so that + gettext and menus work. +8 Could keep console open to run multiple commands, to avoid the need to hit + return in every console. + Also: Look at how Emacs does runs external commands: + http://www.cs.washington.edu/homes/voelker/ntemacs.html. +8 Need a separate PopUp menu for modeless selection. Need two new commands: + Copy selection to clipboard, Paste selection (as typed text). +8 Support copy/paste for other file formats. At least HTML, perhaps RTF. + Add "copy special" and "paste special" commands? +7 Use different default colors, to match the current Windows color scheme. + Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser) +7 Use <C-Tab> to cycle through open windows (e.g., the find dialog). +7 <Esc> should close a dialog. +7 Keep the console for external commands open. Don't wait for a key to be + hit. Re-open it when the user has closed it anyway. Or use a prepended + command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any + prompts. +7 Should be able to set an option so that when you double click a file that + is associated with Vim, you can either get a new instance of Vim, or have + the file added into an already running Vim. +7 The "-P" argument only works for the current codepage. Use wide + functions to find the window title. + + +GUI: +8 Add GTK 2.3 file dialog support. Patch by Grahame Bowland, 2004 Mar 15, + but it doesn't use "initdir" or "dflt". +8 Make inputdialog() work for Photon, Amiga, RiscOS. +- <C--> cannot be mapped. Should be possible to recognize this as a + normal "-" with the Ctrl modifier. +7 Implement ":popup" for other systems than Windows. +8 Implement ":tearoff" for other systems than Win32 GUI. +6 Implement ":untearoff": hide a torn-off menu. +8 When using the scrollbar to scroll, don't move the cursor position. When + moving the cursor: scroll to the cursor position. +9 Make <S-Insert> paste from the clipboard by default. (Kunze) +7 Menu local to a buffer, like mappings. Or local to a filetype? +8 In Buffers menu, add a choice whether selecting a buffer opens it in the + current window, splits the window or uses ":hide". +8 Dragging the mouse pointer outside of a Vim Window should make the text + scroll. Return a value from gui_send_mouse_event() to the machine + specific code to indicate the time in which the event should be repeated. +8 Make it possible to ignore a mouse click when it's used to give Vim (gvim) + window focus. Also when a mouse click is used to bring a window to front. +8 Make the split into system independent code and system specific code more + explicit. There are too many #ifdefs in gui.c. + If possible, separate the Vim code completely from the GUI code, to allow + running them in separate processes. +8 Support a background bitmap. Useful for marking a column. Patch from + Heather Downs (GTK) and Vince Negri (Win32). +7 X11: Support cursorColor resource and "-cr" argument. +8 X11 (and others): CTRL-; is not different from ';'. Set the modifier mask + to include CTRL for keys where CTRL produces the same ASCII code. +7 Add some code to handle proportional fonts? Need to draw each character + separately (like xterm). Also for when a double-width font is not exactly + double-width. (Maeda) +8 Should take font from xterm where gvim was started (if no other default). +8 Selecting font names in X11 is difficult, make a script or something to + select one. Martin Dalecki has a font selector for Motif, but it needs a + bit more work. +7 Motif: use the menu font consistently. Patch from Martin Dalecki 2002 Jan + 11. +8 Visual highlighting should keep the same font (bold, italic, etc.). +8 Add flag to 'guioptions' to not put anything in the clipboard at all? +8 Should support a way to use keys that we don't recognize yet. Add a + command that adds entries to special_keys somehow. How do we make this + portable (X11, Win32, ..)? +7 Add a flag to 'guioptions' that tells not to remove inactive menu items. + For systems where greying-out or removing menu items is very slow. The + menu items would remain visibly normally, but not do anything. +7 Add ":minimize" and ":maximize", which iconize the window and back. + Useful when using gvim to run a script (e.g. 2html.vim). +7 X11: Is it possible to free allocated colors, so that other programs can + use them again? Otherwise, allow disabling allocating the default colors. + Or allocate an own colormap (check UAE). With an option to use it. For + the commandline, "-install" is mostly used for X11 programs. +7 Add command line argument for "gvim" not to start the GUI. Sort of the + inverse of "vim -g". (Vikas) +7 Should support multi-column menus. +- Should add option for where to put the "Help" menu: like Motif at the far + right, or with the other menus (but still at the right). +- Add menu item to "Keep Insert mode". +8 ":mkgvimrc" command, that includes menus. +6 Big change: Move GUI to separate program "vimgui", to make startup of vim a + lot faster, but still be able to do "vim -g" or ":gui". +7 More explicit mouse button binding instead of 'mousemodel'? +7 Add option to set the position of the window on the screen. 'windowpos', + which has a value of "123,456": <x>,<y>. + Or add a command, like ":winsize"? +7 Add toolbar for more GUIs. +8 Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item + name can be chosen free. +7 Make it possible to put the toolbar on top, left, right and/or bottom of + the window? Allows for softkey-like use. +6 Separate the part of Vim that does the editing from the part that runs the + GUI. Communicate through a pseudo-tty. Vim starts up, creates a + pty that is connected to the terminal. When the GUI starts, the pty is + reconnected to the GUI process. When the GUI stops, it is connected to + the terminal again. Also use the pty for external processes, it looks + like a vt100 terminal to them. Vim uses extra commands to communicate GUI + things. +7 Motif: For a confirm() dialog <Enter> should be ignored when no default + button selected, <Esc> should close the dialog. +- Motif steals <F10> from us, to pop up menus with the keyboard. How do we + get it back if we want it? +- Motif: add 3D shading for the menu entries? Patch from Martin Dalecki. +- Paste in Insert mode should not do autowrap etc. Or maybe this should be + changeable with an option? +- Put a nice picture in the icon (but how do we do that?). +7 When using a pseudo-tty Vim should behave like some terminal (vt52 looks + simple enough). Terminal codes to/from shell should be translated. +- Would it be useful to be able to quit the GUI and go back to the terminal + where it was started from? +7 Support "-visual <type>" command line argument. + + +VMS: +- Improvement: rewrite term/TTY handling. +- Improvement: create VMS GTK runtime libraries on OpenVMS 7.1-2 (today GTK + works just on 7.3). + + +Autocommands: +9 Make sure that side effects of autocommands are handled correctly. Don't + execute autocommands when a buffer or window is halfway some changes. + Move all apply_autocmds() calls to a higher level where needed. +8 Add ScriptReadCmd event: used to load remote Vim scripts, e.g. + "vim -u http://mach/path/vimrc". +8 Use another option than 'updatetime' for the CursorHold event. The two + things are unrelated for the user (but the implementation is more + difficult). +8 Also trigger CursorHold in Insert mode? +7 Add autocommand event for when a buffer cannot be abandoned. So that user + can define the action taking (autowrite, dialog, fail) based on the kind + of file. (Yakov Lerner) Or is BufLeave sufficient? +8 Can't use ":normal" in CursorHold autocommands. Make the CursorHold event + insert a special key code, and call the autocommand functions from a + higher level, so that vgetc() isn't used recursively. +8 Autocommands should not change registers. And marks? And the jumplist? + And anything else? +8 Autocommand for when modified files have been found, when getting input + focus again (e.g., FileChangedFocus). + Check when: getting focus, jumping to another buffer, ... +8 Add autocommands, user functions and user commands to ":mkvimrc". +8 Add "TagJumpFile" autocommand: When jumping to another file for a tag. + Can be used to open "main.c.gz" when "main.c" isn't found. +6 Add KeymapChanged event, so that the effects of a different keymap can be + handled (e.g., other font) (Ron Aaron) +7 Add a way to skip an autocommand if going from one *.c file to another *.c + file. +7 When trying to open a directory, don't load the file but trigger an + autocommand event OpenDirectory. +7 Add file type in front of file pattern: <d> for directory, <l> for link, + <x> for executable, etc. <&xxx> for Risc OS. With commas to separate + alternatives. The autocommand is only executed when both the file type + AND the file pattern match. (Leonard) +5 Add option that specifies extensions which are to be discarded from the + file name. E.g. 'ausuffix', with ".gz,.orig". Such that file.c.gz will + trigger the "*.c" autocommands. (Belabas) +7 Add something to break the autocommands for the current event, and for + what follows. Useful for a "BufWritePre" that wants to avoid writing the + file. +8 When editing "tt.gz", which is in DOS format, 'fileformat' stays at + "unix", thus writing the file changes it. Somehow detect that the read + command used dos fileformat. Same for 'fileencoding'. +8 Add buffer-local autocommands? Reduces overhead for autocommands that + trigger often (inserting a character, switching mode). + :au Event <buffer> do-something + E.g.: + :au BufEnter <buffer> menu enable ... + :au BufLeave <buffer> menu disable ... + Patch from Yakov Lerner, including test (2004 Jan 7). +- Add events to autocommands: + Error - When an error happens + NormalEnter - Entering Normal mode + InsertEnter - Entering Insert mode + ReplaceEnter - Entering Replace mode + CmdEnter - Entering Cmdline mode + VisualEnter - Entering Visual mode + CmdUndefined - Like FuncUndefined but for user commands. + *Leave - Leaving the mode + SearchPost - After doing a search command (e.g. to do "M") + PreDirChanged/PostDirChanged + - Before/after ":cd" has been used (for changing the + window title) + BufReadAction - replaces reading a file + BufWriteAction - replaces writing a file + ShutDown - when the system is about to shut down + InsertCharPre - user typed character Insert mode, before inserting the + char. Pattern is matched with text before the cursor. + Set v:char to the character, can be changed. + (not triggered when 'paste' is set). + InsertCharPost - user typed a character in Insert mode, after inserting + the char. + BufModified - When a buffer becomes modified, or unmodified (for + putting a [+] in the window title or checking out the + file from CVS). + BufFirstChange - When making a change, when 'modified' is set. Can be + used to do a :preserve for remote files. + BufChange - after a change was made. Set some variables to indicate + the position and number of inserted/deleted lines, so + that marks can be updated. HierAssist has patch to add + BufChangePre, BufChangePost and RevertBuf. (Shah) + WinResized - When a window has been resized + VimResized - When the Vim window has been resized (SIGWINCH) + patch from Yakov Lerner, 2003 July 24. +- Add autocommand to be executed every so many seconds? For writing the + file now and then ('autosave'). + *'autosave'* *'as'* *'noautosave'* *'noas'* + 'autosave' 'aw' number (default 0) + Automatically write the current buffer to file N seconds after the + last change has been made and when |'modified'| is still set. + Default: 0 = do not autosave the buffer. + Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make + them save the file itself besides the swapfile. + + +Insert mode completion/expansion: +8 When there is no word before the cursor but something like "sys." complete + with "sys.". Works well for C and similar languages. +9 ^X^L completion doesn't repeat correctly. It uses the first match with + the last added line, instead of continuing where the last match ended. + (Webb) +8 The code has become too complex. Redesign it, or at least add proper + comments. +8 Add option to set different behavior for Insert mode completion: + - ignore/match case + - different characters than 'iskeyword' +8 Add expression-expansion, so that the user can define his own kind of + completion. Patch from Taro Muraoka, 2003 Aug 26. +8 Add a command to undo the completion, go back to the original text. +8 Use the class information in the tags file to do context-sensitive + completion. After "foo." complete all member functions/variables of + "foo". Need to search backwards for the class definition of foo. + Should work for C++ and Java. + Even more context would be nice: "import java.^N" -> "io", "lang", etc. +7 When expanding $HOME/dir with ^X^F keep the $HOME (with an option?). +7 Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS + instead of words. +8 Add CTRL-X CTRL-R: complete words from register contents. +8 Add completion of previously inserted texts (like what CTRL-A does). + Requires remembering a number of insertions. +8 Add 'f' flag to 'complete': Expand file names. + Also apply 'complete' to whole line completion. +- Make it possible to search include files in several places. Use the + 'path' option? Can this be done with the dictionary completion (use + wildcards in the file name)? +- Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted). +- Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?). +- Set a mark at the position where the match was found (file mark, could + be in another file). +- Add CTRL-A command in CTRL-X mode: show all matches. +- Make CTRL-X CTRL-L use the 'complete' option? +- Add command in CTRL-X mode to add following words to the completed string + (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W) +- CTRL-X CTRL-F: Use 'path' to find completions. +- CTRL-X CTRL-F: Option to use forward slashes on MS-Windows? +- CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly) +8 Add option 'isexpand', containing characters when doing expansion (so that + "." and "\" can be included, without changing 'iskeyword'). (Goldfarb) + Also: 'istagword': characters used for CTRL-]. + When 'isexpand' or 'istagword' are empty, use 'iskeyword'. +- Allow listing all matches in some way (and picking one from the list). + + +Command line editing: +7 Add commands (keys) to delete from the cursor to the end of the command + line. +8 Custom completion of user commands can't use the standard completion + functions. Add a hook to invoke a user function that returns the type of + completion to be done: "file", "tag", "custom", etc. +- Add flags to 'whichwrap' for command line editing (cursor right at end of + lines wraps to start of line). +- Make editing the command line work like Insert mode in a single-line view + on a buffer that contains the command line history. But this has many + disadvantages, only implement it when these can be solved. Elvis has run + into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012). + - Going back in history and editing a line there would change the history. + Would still need to keep a copy of the history elsewhere. Like the + cmdwin does now already. + - Use CTRL-O to execute one Normal mode command. How to switch to normal + mode for more commands? <Esc> should cancel the command line. CTRL-T? + - To allow "/" and "= need to recursively call getcmdline(), overwrite the + cmdline. But then we are editing a command-line again. How to avoid + that the user gets confused by the stack of command lines? + - Use edit() for normal cmdline editing? Would have to integrate + getcmdline() into edit(). Need to solve conflicts between Insert mode + and Command-line mode commands. Make it work like Korn shell and tcsh. + Problems: + - Insert: completion with 'wildchar' + - Insert: use cmdline abbreviations + - Insert: CTRL-D deletes indent instead of listing matches + - Normal: no CTRL-W commands + - Normal: no ":" commands? + - Normal: allow Visual mode only within one line. + - where to show insert/normal mode message? Change highlighting of + character in first column? + - Implementation ideas: + - Set "curwin" and "curbuf" to the command line window and buffer. + - curwin->w_topline is always equal to curwin->w_cursor.lnum. + - never set 'number', no folding, etc. No status line. + - sync undo after entering a command line? + - use NV_NOCL flag for commands that are not allowed in Command-line + Mode. + + +Command line completion: +8 Change expand_interactively into a flag that is passed as an argument. +8 With command line completion after '%' and '#', expand current/alternate + file name, so it can be edited. Also with modifiers, such as "%:h". +8 When completing command names, either sort them on the long name, or list + them with the optional part inside []. +7 Completion of network shares, patch by Yasuhiro Matsumoto. +7 Completion of ":map x ": fill in the current mapping, so that it can be + edited. (Sven Guckes) +7 Add completion for when entering an expression after CTRL-R= and "=. + (Servatius Brandt) +- For 'wildmenu': Simplify "../bar" when possible. +- When using <Up> in wildmenu mode for a submenu, should go back to the + current menu, not the first one. E.g., ":emenu File.Save<Up>". +8 For ":find" and ":sfind" expand files found in 'path'. +8 Add cmdline completion for the ":debug" command. +8 When using backtick expansion, the external command may write a greeting + message. Add an option or commands to remove lines that match a regexp? +7 When listing matches of files, display the common path separately from the + file names, if this makes the listing shorter. (Webb) +- Add command line completion for ":ilist" and friends, show matching + identifiers (Webb). +8 Add command line completion for "old value" of a command. ":args <key>" + would result in the current list of arguments, which you can then edit. +7 Add command line completion with CTRL-X, just like Insert mode completion. + Useful for ":s/word/xx/". +- Add command to go back to the text as it was before completion started. + Also to be used for <Up> in the command line. +- Add 'wildlongest' option: Key to use to find longest common match for + command line completion (default CTRL-L), like 'wildchar'. (Cregut) + Also: when there are several matches, show them line a CTRL-D. +- Add completion for Environment variables: ":echo $SH<Tab>" -> "$SHELL". + + +Command line history: +- Add "KeyWasTyped" flag: It's reset before each command and set when a + character from the keyboard is consumed. Value is used to decide to put a + command line in history or not. Put line in history if it didn't + completely resulted from one mapping. +- When using ":browse", also put the resulting edit command in the history, + so that it can be repeated. (Demirel) + + +Insert mode: +9 When 'autoindent' is set, hitting <CR> twice, while there is text after + the cursor, doesn't delete the autoindent in the resulting blank line. + (Rich Wales) This is Vi compatible, but it looks like a bug. Rich has a + suggestion for a patch to fix this. +8 When using CTRL-O in Insert mode, then executing an insert command + "a" or "i", should we return to Insert mode after <Esc>? (Eggink) + Perhaps it can be allowed a single time, to be able to do + "<C-O>10axyz<Esc>". Nesting this further is confusing. + ":map <F2> 5aabc<Esc>" works only once from Insert mode. +7 Use CTRL-G <count> to repeat what follows. Useful for inserting a + character multiple times or repeating CTRL-Y. +7 Make ":startinsert" command work directly for functions and scripts? + Also make it possible to append (it's difficult at end of line). + And add ":startreplace" (patch by Charles Campbell, 2004 Jan 9, + http://www.erols.com/astronaut/vim/index.html#Patch) +7 Use 'matchpairs' for 'showmatch': When inserting a character check if it + appears in the rhs of 'matchpairs'. +- In Insert mode (and command line editing?): Allow undo of the last typed + character. This is useful for CTRL-U, CTRL-W, delete and backspace, and + also for characters that wrap to the next line. + Also: be able to undo CTRL-R (insert register). + Possibly use 'backspace'="whole" for a mode where at least a <CR> that + inserts autoindent is undone by a single <BS>. +- Use CTRL-G in Insert mode for an extra range of commands, like "g" in + Normal mode. +- Make 'paste' work without resetting other options, but override their + value. Avoids problems when changing files and modelines or autocommands + are used. +- When typing CTRL-V and a digit higher than 2, only expect two digits. +- Insert binary numbers with CTRL-V b. +- Make it possible to undo <BS>, <C-W> and <C-U>. Bash uses CTRL-Y. + + +'cindent', 'smartindent': +8 Wrong indent for ":" after a method with line break in arguments: + Foo::Foo (int one, + int two) + : something(4) + {} +8 Wrong indent for ":" after a method with multiple lines: + Foo::Foo (int one, int two) + : something(4), + somethingelse(3) + {} +9 Too much indent for "lulu": (Uwe Zeisberger) + int main () + { + if (lala) + do + ++(*lolo); + while (lili + && lele); + lulu; + } +9 Function gets extra indent: (Jamax) + void function(int param) { + if (false) + return; + } +9 brace not indented correctly: + case 'c': if (cond) + { + Should align with "if" in case statement. +7 Allow aligning a closing ")" with the line above, instead of the matching + "(": (Riehm) if (asdfasdf && + asdf + ) +8 Java: Inside an anonymous class, after an "else" or "try" the indent is + too small. (Vincent Bergbauer) +8 In C++ it's possible to have {} inside (): (Kirshna) + func( + new String[] { + "asdf", + "asdf" + } + ); +7 Separate "(0" option into inside/outside a function (Zellner): + func( + int x) // indent like "(4" + { + if (a + && b) // indent like "(0" +8 Strange problem with this code, "hello" is indented wrong: (Gary Holloway) + main() { char foo[] = "/*"; + /* This is a comment; the indentation of C + * source below this comment gets messed up due to the string above. + */ + hello +9 Using "{" in a comment: (Helmut Stiegler) + if (a) + { + if (b) + { + // { + } + } <-- this is indented incorrect +9 Wrong indent for cino=(4, removing the (void) fixes it: (Zellner) + (void) MyFancyFunction( + argument); +- Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the + indent to 0 should be switched on/off. +7 Support ANSI style function header, with each argument on its own line. +- "[p" and "]p" should use 'cindent' code if it's on (only for the first + line). +- Add option to 'cindent' to set indent for comments outside of {}? +- Make a command to line up a comment after a code line with a previous + comment after a code line. Can 'cindent' do this automatically? +7 Add 'j' flag to 'formatoptions': Remove comment leader when joining lines. +- When 'cindent'ing a '}', showmatch is done before fixing the indent. It + looks better when the indent is fixed before the showmatch. (Webb) +- Add option to make indenting work in comments too (for commented-out + code), unless the line starts with "*". +- Don't use 'cindent' when doing formatting with "gq"? +- When formatting a comment after some text, insert the '*' for the new line + (indent is correct if 'cindent' is set, but '*' doesn't get inserted). +8 When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the + 'x' flag always uses the first match. Need to continue looking for more + matches of "*" and remember all characters that could end the comment. +- For smartindent: When typing 'else' line it up with matching 'if'. +- 'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where + lines start with "\item". +- Support this style of comments (with an option): (Brown) + /* here is a comment that + is just autoindented, and + nothing else */ +- Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi". +7 Use Tabs for the indent of starting lines, pad with spaces for + continuation lines. Allows changing 'tabstop' without messing up the + indents. + And/or: Add option to copy indent as-is, without changing spaces to tabs. + also for 'autoindent'. 'keeptabs': when set don't change the tabs and + spaces used for indent, when the indent remains the same or increases. + + +Java: +8 Can have {} constructs inside parens. Include changes from Steve + Odendahl? +8 Recognize "import java.util.Vector" and use $CLASSPATH to find files for + "[i" commands and friends. +- For files found with 'include': handle "*" in included name, for Java. + (Jason) +- How to make a "package java.util" cause all classes in the package to be + searched? Also for "import java.util.*". (Mark Brophy) + + +'comments': +8 When formatting C comments that are after code, the "*" isn't repeated + like it's done when there is no code. And there is no automatic wrapping. + Recognize comments that come after code. Should insert the comment leader + when it's "#" or "//". +7 When using "comments=fg:--", Vim inserts three spaces for a new line. + When hitting a TAB, these spaces could be removed. +7 The 'n'esting flag doesn't do the indenting of the last (rightmost) item. +6 Make strings in 'comments' option a RE, to be able to match more + complicated things. (Phillipps) Use a special flag to indicate that a + regexp is used. +8 Make the 'comments' option with "/* * */" lines only repeat the "*" line + when there is a "/*" before it? Or include this in 'cindent'? + + +Virtual edit: +8 Make the horizontal scrollbar work to move the text further left. +7 Add a mode where the cursor is only allowed to go one character after the + end of the line? +7 Allow specifying it separately for Tabs and beyond end-of-line? + + +Text objects: +8 Add test script for text object commands "aw", "iW", etc. +7 Add text object for current search pattern: "a/" and "i/". Makes it + possible to turn text highlighted for 'hlsearch' into a Visual area. +8 Add "gp" and "gP" commands: insert text and make sure there is a single + space before it, unless at the start of the line, and after it, unless at + the end of the line or before a ".". +7 Add objects with backwards extension? Use "I" and "A". Thus "2dAs" + deletes the current and previous sentence. (Jens Paulus) +7 Add "g{" and "g}" to move to the first/last character of a paragraph + (instead of the line just before/after a paragraph as with "{" and "}"). +8 Add "a'" and 'a"': a single or double quoted string. (Tim Chase) + Patch from Taro Muraoka (2003 Dec 16). +6 Ignore comment leaders for objects. Make "das" work in reply-email. +5 Make it possible to use syntax group matches as a text object. For + example, define a "ccItem" group, then do "da<ccItem>" to delete one. + Or, maybe just define "dai", delete-an-item, to delete the syntax item the + cursor is on. + + +Select mode: +8 In blockwise mode, typed characters are inserted in front of the block, + backspace deletes a column before the block. (Steve Hall) +7 Alt-leftmouse starts block mode selection in MS Word. +7 Add Cmdline-select mode. Like Select mode, but used on the command line. + - Change gui_send_mouse_event() to pass on mouse events when 'mouse' + contains 'C' or 'A'. + - Catch mouse events in ex_getln.c. Also shift-cursor, etc., like in + normal_cmd(). + - remember start and end of selection in cmdline_info. + - Typing text replaces the selection. + + +Visual mode: +- When dragging the Visual selection with the mouse and 'scrolloff' is zero, + behave like 'scrolloff' is one, so that the text scrolls when the pointer + is in the top line. +8 When using "I" or "A" in Visual block mode, short lines do not get the new + text. make it possible to add the text to short lines too, with padding + where needed. +7 With a Visual block selected, "2x" deletes a block of double the width, + "3y" yanks a block of triple width, etc. +7 When selecting linewise, using "itext" should insert "text" at the start + of each selected line. +8 What is "R" supposed to do in Visual mode? +8 Make Visual mode local to the buffer. Allow changing to another buffer. + When starting a new Visual selection, remove the Visual selection in any + other buffer. (Ron Aaron) +8 Support dragging the Visual area to drop it somewhere else. (Ron Aaron, + Ben Godfrey) +7 Support dragging the Visual area to drop it in another program, and + receive dropped text from another program. (Ben Godfrey) +7 With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of + a <CR>. The entered lines are repeated over the Visual area. +7 CTRL-V :s should substitute only in the block, not to whole lines. (David + Young is working on this) +7 Filtering a block should only apply to the block, not to the whole lines. + When the number of lines is increased, add lines. When decreased, padd with + spaces or delete? Use ":`<,`>" on the command line. +8 After filtering the Visual area, make "gv" select the filtered text? + Currently "gv" only selects a single line, not useful. +7 Don't move the cursor when scrolling? Needed when the selection should + stay the same. Scroll to the cursor at any movement command. With an + option! +7 In Visual block mode, need to be able to define a corner on a position + that doesn't have text? Also: when using the mouse, be able to select + part of a TAB. Even more: Add a mode where the cursor can be on a screen + position where there is no text. When typing, add spaces to fill the gap. + Other solution: Always use curswant, so that you can move the cursor to + the right column, and then use up/down movements to select the line, + without changing the column. +6 ":left" and ":right" should work in Visual block mode. +7 For Visual mode: Command to do a search for the string in the marked area. + Only when fewer than two lines. Use "g/" and "gb". Patch from Yegappan + Lakshmanan. +7 CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the + current buffer. +7 CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area. +6 In non-Block mode, "I" should insert the same text in front of each line, + before the first non-blank, "gI" in column 1. +6 In non-Block mode, "A" should append the same text after each line. +6 ":'<,'>source" should read the selected lines and ":source" them. +6 When in blockwise visual selection (CTRL-V), allow cursor to be placed + right of the line. Could also allow cursor to be placed anywhere on a TAB + or other special character. +6 Add commands to move selected text, without deselecting. + + +More advanced repeating commands: +- Add "." command for visual mode: redo last visual command (e.g. ":fmt"). +7 Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember + the command line so that it can be repeated? +- Add "." command after operator: repeat last command of same operator. E.g. + "c." will repeat last change, also when "x" used since then (Webb). + "y." will repeat last yank. + "c2." will repeat the last but one change? + Also: keep history of Normal mode commands, add command to list the history + and/or pick an older command. +- History stack for . command? Use "g." command. + + +Mappings and Abbreviations: +8 Let ":verbose map xx" report where the mapping was set, just like with + ":verbose set". +8 When "0" is mapped (it is a movement command) this mapping should not be + used after typing another number, e.g. "20l". (Charles Campbell) + Is this possible without disabling the mapping of the following command? +8 Should mapping <C-A> and <C-S-A> both work? +7 ":abbr b byte", append "b " to an existing word still expands to "byte". + This is Vi compatible, but can we avoid it anyway? +8 ":verbose map" could show the script where the mapping was defined. + m_script_ID can be used. +8 To make a mapping work with a prepended "x to select a register, store the + last _typed_ register name and access it with "&. +8 Add ":amap", like ":amenu". +8 Add ":cab!", abbreviations that only apply to Command-line mode and not to + entering search strings. +8 Add a flag to ":abbrev" to eat the character that triggers the + abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and + not the <Space>. +8 Allow mapping of CTRL-@ (anywhere in the LHS). +8 Give a warning when using CTRL-C in the lhs of a mapping. It will never + (?) work. +7 ":verbose map" should display where a mapping was defined, like ":verbose + set". +8 Add a way to save a current mapping and restore it later. Use a function + that returns the mapping command to restore it: mapcmd()? mapcheck() is + not fool proof. How to handle ambiguous mappings? +7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation? +7 Allow mapping "Q" and "Q}" at the same time. Need to put a flag with "Q", + that it needs an extra character before it can match. See Vile 'maplonger' + option. +7 When someone tries to unmap with a trailing space, and it fails, try + unmapping without the trailing space. Helps for ":unmap xx | unmap yy". +7 Make it possible to map 'wildchar', but only when it's a special character + (like CTRL-E). Currently it's only recognized when typed. Useful for + mapping a key to do something and then completion. +7 Add a mapping that works always, for remapping the keyboard. +6 Context-sensitive abbreviations: Specify syntax group(s) in which the + abbreviations are to be used. +- Add mappings that take arguments. Could work like the ":s" command. For + example, for a mouse escape sequence: + :mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l +- Make it possible to include a <Nul> in the lhs and rhs of a mapping. +- Add command to repeat a whole mapping ("." only repeats the last change in + a mapping). Also: Repeat a whole insert command, including any mappings + that it included. Sort-of automatic recording? +- Make it possible to undo all the commands from a mapping, including a + trailing unfinished command, e.g. for ":map K iX^[r". +- Add an option to ":map" that makes it display the special keys in + <> notation (e.g. <CR> instead of ^M). Or just always do this? +- Include an option (or flag to 'cpoptions') that makes errors in mappings + not flush the rest of the mapping (like nvi does). +- Use context sensitiveness of completion to switch abbreviations and + mappings off for :unab and :unmap. +6 When using mappings in Insert mode, insert characters for incomplete + mappings first, then remove them again when a mapping matches. Avoids + that characters that are the start of some mapping are not shown until you + hit another character. +- Add optional <Number> argument for mappings: + :map <Number>q ^W^W<Number>G + :map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l + :map q<Char> :s/<Char>/\u\0/g + Or implicit: + :map q <Register>d<Number>$ +- Add mappings for replace mode: ":rmap". How do we then enter mappings for + non-replace Insert mode? +- Add separate mappings for Visual-character/block/line mode? +6 Alias for Normal mode commands, works like :substitute? Would allow + mappings with arguments. +- Add 'mapstop' command, to stop recursive mappings. +- List mappings that have a raw escape sequence both with the name of the key + for that escape sequence (if there is one) and the sequence itself. +- List mappings: Once with special keys listed as <>, once with meta chars as + <M-a>, once with the byte values (octal?). Sort of "spell mapping" command? +- When entering mappings: Add the possibility to enter meta keys like they + are displayed, within <>: <M-a>, <~@> or <|a>. +- Allow multiple arguments to :unmap. +- Command to show keys that are not used and available for mapping + ":freekeys". +- Allow any character except white space in abbreviations lhs (Riehm). + + +Incsearch: +- Add a limit to the number of lines that are searched for 'incsearch'? +- When no match is found and the user types more, the screen is redrawn + anyway. Could skip that. Esp. if the line wraps and the text is scrolled + up every time. +- Temporarily open folds to show where the search ends up. Restore the + folds when going to another line. +- When incsearch used and hitting return, no need to search again in many + cases, saves a lot of time in big files. (Slootman wants to work on this?) + When not using special characters, can continue search from the last match + (or not at all, when there was no match). See oldmail/webb/in.872. +- With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other + key to copy matched word to search pattern (Alexander Schmid). + + +Searching: +8 Add a mechanism for recursiveness: "\(([^()]*\@@[^()]*)\)\@r". \@@ stands + for "go recursive here" and \@r marks the recursive atom. +item stack to allow matching (). One side is "push X on + the stack if previous atom matched". Other side is "match with top of + stack, pop it when it matches". Use "\@pX" and "\@m"? + Example: \((\@p).\{-}\@m\)* +7 Add an option to accept a match at the cursor position. Also for + search(). (Brett) +7 Add pattern item to use properties of Unicode characters. In Perl it's + "\p{L}" for a letter. See Regular Expression Pocket Reference. +7 When 'rightleft' is set, the search pattern should be displayed right to + left as well? See patch of Dec 26. (Nadim Shaikli) +8 Would it be possible to allow ":23,45/pat/flags" to search for "pat" in + lines 23 to 45? Or does this conflict with Ex range syntax? +8 Allow identical pairs in 'matchpairs'. Restrict the search to the current + line. +7 Allow longer pairs in 'matchpairs'. Use ~/vim/macros/matchit.vim as an + example. +8 Make it possible to define the character that "%" checks for in + #if/#endif. For nmake it's !if/!endif. +- For "%" command: set hierarchy for which things include other things that + should be ignored (like "*/" or "#endif" inside /* */). + Also: use "%" to jump from start to end of syntax region and back. + Alternative: use matchit.vim +8 "/:/e+1" gets stuck on a match at the end of the line. Do we care? +8 A pattern like "\([^a]\+\)\+" takes an awful long time. Recognize that + the recursive "\+" is meaningless and optimize for it. + This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$". +7 Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and + "\d". +7 Add a way to specify characters as hex, octal or <C-M> form. Could be + \%1ax, \%200o and \%<C-M>. Also \%1234u for multi-byte chars. +8 Flags that apply to the whole pattern. + This works for all places where a regexp is used. + Add "\q" to not store this pattern as the last search pattern? +8 Add an argument after ":s/pat/str/" for a range of matches. For example, + ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line. +8 Add an option not to use 'hlsearch' highlighting for ":s" and ":g" + commands. (Kahn) It would work like ":noh" is used after that command. + Also: An extra flag to do this once, and a flag to keep the existing + search pattern. +- Add \%h{group-name}; to search for a specific highlight group. + Add \%s{syntax-group}; to search for a specific syntax group. +- Support Perl regexp. Use PCRE (Perl Compatible RE) package. (Shade) + Or translate the pattern to a Vim one. + Don't switch on with an option for typed commands/mappings/functions, it's + too confusing. Use "\@@" in the pattern, to avoid incompatibilities. +7 Add POSIX regexp, like Nvi, with 'extended' option? It's like very-magic. +- Remember flags for backreferenced items, so that "*" can be used after it. + Check with "\(\S\)\1\{3}". (Hemmerling) +- Add flags to search command (also for ":s"?): + i ignore case + I use case + p use Perl regexp syntax (or POSIX?) + v use Vi regexp syntax + f forget pattern, don't keep it for "n" command + F remember pattern, keep it for "n" command + Perl uses these too: + e evaluate the right side as an expression (Perl only) + m multiple line expression (we don't need it) + o compile only once (Perl only) + s single line expression (we don't need it) + x extended regexp (we don't need it) + When used after ":g" command, backslash needed to avoid confusion with the + following command. + Add 'searchflags' for default flags (replaces 'gdefault'). +- Add command to display the last used substitute pattern and last used + pattern. (Margo) Maybe make it accessible through a register (like "/ + for search string)? +7 Use T-search algorithm, to speed up searching for strings without special + characters. See C't article, August 1997. +- Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are + equivalent (for Unix filenames). +- Add 'v' flag to search command: enter Visual mode, with the matching text + as Visual area. (variation on idea from Bertin) +- Searching: "/this//that/" should find "that" after "this". +- Add global search commands: Instead of wrapping at the end of the buffer, + they continue in another buffer. Use flag after search pattern: + a for the next file in the argument list + f for file in the buffer list + w for file edited in a window. + e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for + ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask + before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No + Save-all/hide-All/Quit) ". +- ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler) +- Special characters in patterns: + Inside []: + \012 octal character + \0x1a hex character + \0<BS> \0<Esc>: special character +7 When searching with 'n' give message when getting back where the search + first started. Remember start of search in '/ mark. +7 Add option that scrolls screen to put cursor in middle of screen after + search always/when off-screen/never. And after a ":tag" command. Maybe + specify how many lines below the screen causes a redraw with the cursor in + the middle (default would be half a screen, zero means always). +6 Support multiple search buffers, so macros can be made without side + effects. +7 From xvim: Allow a newline in search patterns (also for :s, can delete + newline). Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc. + [not in xvim:] Add option to switch on matches crossing ONE line boundary. +7 Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron) + Also ":dselect". + + +Undo: +- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not + possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a", + etc. Postpone saving for undo until something is really inserted? +8 When Inserting a lot of text, it can only be undone as a whole. Make undo + sync points at every line or word. Could recognize the start of a new + word (white space and then non-white space) and backspacing. + Can already use CTRL-G u, but that requires remapping a lot of things. +8 Make undo more memory-efficient: Compare text before and after change, + only remember the lines that really changed. +7 Add undo for a range of lines. Can change these back to a previous + version without changing the rest of the file. Stop doing this when a + change includes only some of these lines and changes the line count. Need + to store these undo actions as a separate change that can be undone. +7 Add an undo tree: When making a change, instead of clearing any future + undo (thus redo) info, make a new branch. How to navigate through the + undo tree? +- For u_save() include the column number. This can be used to set '[ and ']. + And in the future the undo can be made more efficient (Webb). +- In out-of-memory situations: Free allocated space in undo, and reduce the + number of undo levels (with confirmation). +- Instead of [+], give the number of changes since the last write: [+123]. + When undoing to before the last write, change this to a negative number: + [-99]. +- With undo with simple line delete/insert: optimize screen updating. +- When executing macro's: Save each line for undo only once. +- Store undo info in a file that survives until the next edit. Then it's + possible to undo to before the current editing session. Combined with + viminfo? +- When doing a global substitute, causing almost all lines to be changed, + undo info becomes very big. Put undo info in swap file?? + + +Buffer list: +8 Add patch from Charles Campbell to have ":0file!" remove the name of the + current buffer. (2003 June 17) +7 Command to execute a command in another buffer: ":inbuf {bufname} {cmd}". + Also for other windows: ":inwin {winnr} {cmd}". How to make sure that + this works properly for all commands, and still be able to return to the + current buffer/window? E.g.: ":inbuf xxx only". +8 Add File.{recent_files} menu entries: Recently edited files. + Ron Aaron has a plugin for this: mru.vim. +8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check + inode too. +7 Add another number for a buffer, which is visible for the user. When + creating a new buffer, use the lowest number not in use. (or the highest + number in use plus one?) +7 Offer some buffer selection from the command line? Like using ":ls" and + asking for a buffer number. (Zachmann) +- When starting to edit a file that is already in the buffer list, use the + file name argument for the new short file name. (Webb) +- Add an option to make ":bnext" and ":bprev" wrap around the end of the + buffer list. Also for ":next" and ":prev"? +7 Add argument to ":ls" which is a pattern for buffers to list. + E.g. ":ls *.c". (Thompson) +7 Add expansion of buffer names, so that "*.c" is expanded to all buffer + names. Needed for ":bdel *.c", ":bunload *.c", etc. +8 Support for <afile> where a buffer name is expected. +8 Some commands don't use line numbers, but buffer numbers. '$' + should then mean the number of the last buffer. E.g.: "4,$bdel". +7 Add an option to mostly use slashes in file names. Separately for + internal use and for when executing an external program? + + +Swap (.swp) files: +8 If writing to the swap file fails, should try to open one in another + directory from 'dir'. Useful in case the file system is full and when + there are short file name problems. +8 Also use the code to try using a short file name for the backup and swap + file for the Win32 and Dos 32 bit versions. +8 When a file is edited by root, add $LOGNAME to know who did su. +8 When the edited file is a symlink, try to put the swap file in the same + dir as the actual file. Adjust FullName(). Avoids editing the same file + twice (e.g. when using quickfix). Also try to make the name of the backup + file the same as the actual file? + Use the code for resolve()? +7 Store the options 'fileencoding', 'fileformat', etc. in the swapfile, + because they change what will be written to the file. Requires adding + another block to the swapfile. +7 When using 64 bit inode numbers, also store the top 32 bits. Add another + field for this, using part of bo_fname[], to keep it compatible. +7 When editing a file on removable media, should put swap file somewhere + else. Use something like 'r' flag in 'viminfo'. 'diravoid'? + Also: Be able to specify minimum disk space, skip directory when not + enough room. +7 Add a configure check for which directory should be used: /tmp, /var/tmp + or /var/preserve. +- Add an option to create a swap file only when making the first change to + the buffer. (Liang) Or only when the buffer is not read-only. +- Add option to set "umask" for backup files and swap files (Antwerpen). + 'backupumask' and 'swapumask'? Or 'umaskback' and 'umaskswap'? +- When editing a readonly file, don't use a swap file but read parts from the + original file. Also do this when the file is huge (>'maxmem'). We do + need to load the file once to count the number of lines? Perhaps keep a + cached list of which line is where. + + +Viminfo: +7 Can probably remove the code that checks for a writable viminfo file, + because we now do the chown() for root, and others can't overwrite someone + else's viminfo file. +8 Add argument to keep the list of buffers when Vim is started with a file + name. (Schild) +8 Keep the last used directory of the file browser (File/Open menu). +8 Remember the last used register for "@@". +8 Remember a list of last accessed files. To be used in the + "File.Open Recent" menu. Default is to remember 10 files or so. + Also remember which files have been read and written. How to display + this? +7 Also store the ". register (last inserted text). +7 Make it possible to store buffer names in viminfo file relative to some + directory, to make them portable over a network. (Aaron) +6 Store a snapshot of the currently opened windows. So that when quitting + Vim, and then starting again (without a file name argument), you see the + same files in the windows. Use ":mksession" code? +- Make marks present in .viminfo usable as file marks: Display a list of + "last visited files" and select one to jump to. + + +Modelines: +8 Before trying to execute a modeline, check that it looks like one (valid + option names). If it's very wrong, silently ignore it. + Ignore a line that starts with "Subject: ". +- When an option value is coming from a modeline, do not carry it over to + another edited file? Would need to remember the value from before the + modeline setting. +- Allow setting a variable from a modeline? Only allow using fixed strings, + no function calls, to avoid a security problem. +- Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for + .cpp files. +- Support the "abbreviate" command in modelines (Kearns). Careful for + characters after <Esc>, that is a security leak. +- Add option setting to ask user if he wants to have the modelines executed + or not. Same for .exrc in local dir. + + +Options: +8 Make ":mksession" store buffer-specific options for the specific buffer. +8 With ":mksession" always store the 'sessionoptions' option, even when + "options" isn't in it. (St-Amant) +7 Setting an option always sets "w_set_curswant", while this is only + required for a few options. Only do it for those options to avoid the + side effect. +8 When using ":mksession", also store a command to reset all options to + their default value, before setting the options that are not at their + default value. +8 Should ":mksession" restore the current directory when writing the + session, or the directory where the session file is? Probably need a word + in 'sessionoptions' to make a choice: + "curdir" (cd to current directory when session file was generated) + "sessiondir" (cd to directory of session file) + "nodir" (don't cd at all) +8 Make "old" number options that really give a number of effects into string + options that are a comma separated list. The old number values should + also be supported. +8 Add commands to save and restore an option, which also preserves the flag + that marks if the option was set. Useful to keep the effect of setting + 'compatible' after ":syntax on" has been used. +7 There is 'titleold', why is there no 'iconold'? (Chazelas) +7 Make 'scrolloff' a global-local option, so that it can be different in the + quickfix window, for example. (Gary Holloway) +7 Add plugins for formatting. Should be able to make a choice depending on + the language of a file (English/Korean/Japanese/etc.). + + +External commands: +8 When filtering text, redirect stderr so that it can't mess up the screen + and Vim doesn't need to redraw it. Also for ":r !cmd". +4 Set separate shell for ":sh", piping "range!filter", reading text "r !ls" + and writing text "w !wc". (Deutsche) Allow arguments for fast start (e.g. + -f). +4 Allow direct execution, without using a shell. +4 Run an external command in the background. But how about I/O in the GUI? + Careful: don't turn Vim into a shell! +4 Add feature to disable using a shell or external commands. + + +Multiple Windows: +7 "vim -oO file ..." use both horizontal and vertical splits. +8 Add CTRL-W T: go to the top window in the column of the current window. + And CTRL-W B: go to bottom window. +7 Use CTRL-W <Tab>, like alt-tab, to switch between buffers. Repeat <Tab> + to select another buffer (only loaded ones?), <BS> to go back, <Enter> to + select buffer, <Esc> to go back to original buffer. +7 Support tabs in a window. Either manually setup or for buffers of a + certain type. (Patch for GTK 1.2 from Christian Michon, 2004 Jan 6) +7 Add a 'winfixwidth' option, similar to 'winfixheight'. +6 Add an option to resize the shell when splitting and/or closing a window. + ":vsp" would make the shell wider by as many columns as needed for the new + window. Specify a maximum size (or use the screen size). ":close" would + shrink the shell by as many columns as come available. (Demirel) +7 When starting Vim several times, instantiate a Vim server, that allows + communication between the different Vims. Feels like one Vim running with + multiple top-level windows. Esp. useful when Vim is started from an IDE + too. Requires some form of inter process communication. +- Support a connection to an external viewer. Could call the viewer + automatically after some seconds of non-activity, or with a command. + Allow some way of reporting scrolling and cursor positioning in the viewer + to Vim, so that the link between the viewed and edited text can be made. + + +Marks: +8 When cursor is first moved because of scrolling, set a mark at this + position. (Rimon Barr) Use '-. +8 Add a command to jump to a mark and make the motion inclusive. g'm and g`m? +8 The '" mark is set to the first line, even when doing ":next" a few times. + Only set the '" mark when the cursor was really moved in a file. +8 Make `` and '', which would position the new cursor position in the middle + of the window, restore the old topline (or relative position) from when + the mark was set. +7 Make a list of file marks in a separate window. For listing all buffers, + matching tags, errors, etc. Normal commands to move around. Add commands + to jump to the mark (in current window or new window). Start it with + ":browse marks"? +6 Add a menu that lists the Marks like ":marks". (Amerige) +8 Make it possible to delete marks. Charles Campbell has a patch that does + this with the markclear() function (2004 Jan 9). And the ":delmark" + command (2004 Feb 9) +7 For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the + text at the mark. Highlight the column with the mark. +7 Highlight each mark in some way (With "Mark" highlight group). + Or display marks in a separate column, like 'number' does. +7 Use d"m to delete rectangular area from cursor to mark m (like Vile's \m + command). +7 Try to keep marks in the same position when: + - replacing with a line break, like in ":s/pat/^M/", move marks after the + line break column to the next line. (Acevedo) + - inserting/deleting characters in a line. +5 Include marks for start/end of the current word and section. Useful in + mappings. +6 Add "unnamed mark" feature: Like marks for the ":g" command, but place and + unplace them with commands before doing something with the lines. + Highlight the marked lines somehow. + + +Digraphs: +7 Make "ga" show the digraph for a character, if it exists. + Also the keymap? +- Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line + below/above). +- Use digraph table to tell Vim about the collating sequence of special + characters? +8 Add command to remove (all) digraphs. (Brown) +7 Support different sets of digraphs (depending on the character set?). At + least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32). + + +Writing files: +- In vim_rename(), should lock "from" file when deleting "to" file for + systems other than Amiga. Avoids problems with unexpected longname to + shortname conversion. +8 write mch_isdevice() for Amiga, Mac, VMS, etc. +8 When appending to a file, Vim should also make a backup and a 'patchmode' + file. +8 'backupskip' doesn't write a backup file at all, a bit dangerous for some + applications. Add 'backupelsewhere' to write a backup file in another + directory? Or add a flag to 'backupdir'? +7 The 'directory' option supports changing path separators to "%" to make + file names unique, also support this for 'backupdir'. (Mikolaj Machowski) +6 Add an option to write a new, numbered, backup file each time. Like + 'patchmode', e.g., 'backupmode'. +6 Make it possible to write 'patchmode' files to a different directory. + E.g., ":set patchmode=~/backups/*.orig". (Thomas) +6 Add an option to prepend something to the backup file name. E.g., "#". + Or maybe allow a function to modify the backup file name? +8 Only make a backup when overwriting a file for the first time. Avoids + losing the original when writing twice. (Slootman) +7 On non-Unix machines, also overwrite the original file in some situations + (file system full, it's a link on an NFS partition). +7 When editing a file, check that it has been change outside of Vim more + often, not only when writing over it. E.g., at the time the swap file is + flushed. Or every ten seconds or so (use the time of day, check it before + waiting for a character to be typed). +8 When a file was changed since editing started, show this in the status + line of the window, like "[time]". + Make it easier to reload all outdated files that don't have changes. + Automatic and/or with a command. + + +Substitute: +8 Make it easier to replace in all files in the argument list. E.g.: + ":argsub/oldword/newword/". Works like ":argdo %s/oldword/newword/g|w". +- :s///p prints the line after a substitution. +- With :s///c replace \&, ~, etc. when showing the replacement pattern. +8 With :s///c allow scrolling horizontally when 'nowrap' is effective. + Also allow a count before the scrolling keys. +- Add number option to ":s//2": replace second occurrence of string? Or: + :s///N substitutes N times. +- Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.: + ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do + any replacements, 'u' undo last substitution. +7 Substitute in a block of text. Use {line}.{column} notation in an Ex + range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the + last line column 5. +5 Add commands to bookmark lines, display bookmarks, remove bookmarks, + operate on lines with bookmarks, etc. Like ":global" but with the + possibility to keep the bookmarks and use them with several commands. + (Stanislav Sitar) + + +Mouse support: +7 Win32: Add patch for 5-button mouse. (Michael Geddes 2001 Nov 26) +8 Add 'o' flag to 'mouse'? +7 Be able to set a 'mouseshape' for the popup menu. +8 Add 'mouse' flag, which sets a behavior like Visual mode, but automatic + yanking at the button-up event. Or like Select mode, but typing gets you + out of Select mode, instead of replacing the text. (Bhaskar) +7 Checkout sysmouse() for FreeBSD console mouse support. +- Implement mouse support for the Amiga console. +- Using right mouse button to extend a blockwise selection should attach to + the nearest corner of the rectangle (four possible corners). +- Precede mouse click by a number to simulate double clicks?!? +- When mouse click after 'r' command, get character that was pointed to. + + +Crypt and security: +8 Also crypt the swapfile, each block separately. Change mf_write() and + mf_read(). How to get b_p_key to these functions? +7 Support a stronger encryption. Jason Holt implemented AES (May 6 2003). +8 Lock all used memory so that it doesn't get swapped to disk (uncrypted). + Patch by Jason Holt, 2003 May 23. + + +Argument list: +6 Add command to put all filenames from the tag files in the argument list. + When given an argument, only use the files where that argument matches + (like `grep -l ident`) and jump to the first match. +6 Add command to form an args list from all the buffers? + + +Registers: +8 Don't display empty registers with ":display". (Etienne) +8 Make the # register writable, so that it can be restored after jumping + around in windows. +8 Add put command that overwrites existing text. Should also work for + blocks. Useful to move text around in a table. Works like using "R ^R r" + for every line. +6 When yanking into the unnamed registers several times, somehow make the + previous contents also available (like it's done for deleting). What + register names to use? g"1, g"2, etc.? +- When appending to a register, also report the total resulting number of + lines. Or just say "99 more lines yanked", add the "more". +- When inserting a register in Insert mode with CTRL-R, don't insert comment + leader when line wraps? +- The ":@r" commands should take a range and execute the register for each + line in the range. +- Add "P" command to insert contents of unnamed register, move selected text + to position of previous deleted (to swap foo and bar in " + foo") +8 Should be able to yank and delete into the "/ register. + How to take care of the flags (offset, magic)? +7 Add ! register, for shell commands. (patch from Grenie) + +Debug mode: +7 Add something to enable debugging when a remote message is received. +8 Add breakpoints for setting an option +8 Add breakpoits for assigning to a variable. +7 Add a watchpoint in the debug mode: An expression that breaks execution + when evaluating to non-zero. +7 Store the history from debug mode in viminfo. +7 Make the debug mode history available with histget() et al. + + +Various improvements: +8 Add ":rename" command: rename the file of the current buffer and rename + the buffer. Buffer may be modified. +7 Add the MzScheme interface. Patch on http://iamphet.nm.ru/scheme/ + (Sergey Khorev) +6 In the quickfix window statusline add the command used to get the list of + errors, e.g. ":make foo", ":grep something *.c". +6 Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5) +7 Support using ":vert" with User commands. Add expandable items <vert>. + Do the same for ":browse" and ":confirm"? + For ":silent" and ":debug" apply to the whole user command. +7 Allow a window not to have a statusline. Makes it possible to use a + window as a buffer-tab selection. +7 Add an invisible buffer which can be edited. For use in scripts that want + to manipulate text without changing the window layout. +8 Add a command to revert to the saved version of file; undo or redo until + all changes are gone. +8 Make 'statusline' local, so that each window can have a different value. + But should it also be local to a buffer? (Yegappan Lakshmanan has a patch, + 2002 feb 15) +7 Add a ":cpfile", go in the other direction as ":cnfile". +6 "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri) +8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's + done for filetype detection. Patch from Walter Briscoe, 2003 Jul 1. +8 Add "--remote-fail": When contacting the server fails, exit Vim. + Add "--remote-self": When contacting the server fails, do it in this Vim. + Overrules the default of "--remote-send" to fail and "--remote" to do it + in this Vim. +8 When Vim was started without a server, make it possible to start one, as + if the "--servername" argument was given. ":startserver <name>"? +8 No address range can be used before the command modifiers. This makes + them difficult to use in a menu for Visual mode. Accept the range and + have it apply to the following command. +8 Add the possibility to set 'fileformats' to force a format and strip other + CR characters. For example, for "dos" files remove CR characters at the + end of the line, so that a file with mixed line endings is cleaned up. + To just not display the CR characters: Add a flag to 'display'? +7 Add a "-@ filelist" argument: read file names from a file. (David Kotchan + has a patch for it) +7 Some compilers give error messages in which the file name does not have a + path. Be able to specify that 'path' is used for these files. +8 Add term entries for function keys on xterm with alt and ctrl (new in pl + 94). E.g., Control adds ";5" in "<Esc>[20;5~". Find a generic way to + prepend a modifier in console mode, to avoid having to specify each + individual modified key. + Steve Wall has a patch (2002 Mar 12) for adding function keys up to 37, + with modifiers. +7 Xterm sends <Esc>O3F for <M-End>. Similarly for other <M-Home>, <M-Left>, + etc. Combinations of Alt, Ctrl and Shift are also possible. Recognize + these to avoid inserting the raw byte sequence, handle like the key + without modifier (unless mapped). +8 Add ":breakdel *": delete all breakpoints. +7 Support ":browse edit" in console, using explorer.vim? +6 Add "gG": like what "gj" is to "j": go to the N'th window line. +8 Add command like ":normal" that accepts <Key> notation like ":map". +9 Support ACLs on more systems. +7 Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be + highlighted differently. +8 Allow using "**" as a wildcard in commands like ":next" and ":args". +8 Provide a way to avoid wildcard expansion. Use double quotes, like in the + shell? :edit "my[file].txt" (currently works if there is no "myf.txt") +7 Add a message area for the user. Set some option to reserve space (above + the command line?). Use an ":echouser" command to display the message + (truncated to fit in the space). +7 Add %s to 'keywordprg': replace with word under the cursor. (Zellner) +8 Support printing on Unix. Can use "lpansi.c" as an example. (Bookout) +8 Add put command that replaces the text under it. Esp. for blockwise + Visual mode. +7 Enhance termreponse stuff: Add t_CV(?): pattern of term response, use + regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV. +7 Add "g|" command: move to N'th column from the left margin (after wrapping + and applying 'leftcol'). Works as "|" like what "g0" is to "0". +7 Add patch from Wall for this one ( ~/Mail/oldmail/wall/in.00019 ): + 'flipcase' variable: upper/lowercase pairs. + Insert comma's between pairs and allow a range, make it look like + 'isfname'. E.g. ":set flipcase=a-zA-Z,xX,23-33:143-153". The colon to + separate the from and to part is optional. +7 Support setting 'equalprg' to a user function name. +9 Add cursor-column highlighting. Enable it with 'cursorcolumn' option, set + highlighting with "CursorColumn" group. Useful for aligning text. + Also cursor-row highlighting. + Patch from Yasuhiro Matsumoto for underlining the cursor line, 2004 Mar 24. + Alternatie: when 'number' is set highlight the number of the current line. +7 Highlight the characters after the end-of-line differently. +7 When 'whichwrap' contains "l", "$dl" should join lines? +8 Include a connection to an external program through a pipe? See patches + from Felbinger for a mathematica interface. + Or use emacs server kind of thing? +8 Add an argument to configure to use $CFLAGS and not modify it? (Mooney) +8 Enabling features is a mix of configure arguments and defines in + feature.h. How to make this consistent? Feature.h is required for + non-unix systems. Perhaps let configure define CONF_XXX, and use #ifdef + CONF_XXX in feature.h? Then what should min-features and max-features do? +8 Add "g^E" and "g^Y", to scroll a screen-full line up and down. +6 Add ":timer" command, to set a command to be executed at a certain + interval, or once after some time has elapsed. (Aaron) +8 Add ":confirm" handling in open_exfile(), for when file already exists. +8 Use confirm/dialog stuff to ask the user, when a file has changed outside + of Vim, if he wants to reload it. Triggered when focus gained, after + shell command, when entering another buffer, etc.. + Also do this when editing a new file, and another application creates + the file before doing ":w" in Vim. + Also check if the file protection has changed. When checking a file into + RCS it is made read-only, when checking out it is made read-write. +8 When quitting with changed files, make the dialog list the changed file + and allow "write all", "discard all", "write some". The last one would + then ask "write" or "discard" for each changed file. Patch in HierAssist + does something like this. (Shah) +7 Use growarray for replace stack. +7 Have a look at viH (Hellenic or Greek version of Vim). But a solution + outside of Vim might be satisfactory (Haritsis). +3 Make "2d%" work like "d%d%" instead of "d2%"? +8 Make "more" prompt accept command characters, like "hit-enter" prompt? + Or extend it with more commands, like "less": 'b' for back, 'j' for one + line down, etc. +8 For the "--more--" prompt, support the 'b'ack command for more commands. + Possible implementation: Do it at a very low level, caching the lines that + are on the screen (with highlight attributes). Avoids that changes have + to be made for all functions that list something. +7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same + buffer. Make jumplist remember the last ten accessed buffers? +- Keep a list of most recently used files for each window, use "[o" to go + back (older file) and "]n" to go forward (newer file) (like ^O and ^I for + jumps) (Webb). Use ":files" and ":ls" to list the files in history order. +7 Add a history of recently accessed buffer. Maybe make "2 CTRL-^" jump to + the 2nd previously visited buffer, "3 CTRL-^" to the third, etc. Or use + "3 g CTRL-^" for this? +7 Add an option to set the width of the 'number' column. Eight positions is + often more than needed. Or adjust the width to the length of the file? + Add patch that adds 'numberlen' option. (James Harvey) + Other patch with min and max from Emmanuel Renieris (2002 Jul 24) + Other patch without an option by Gilles Roy (2002 Jul 25) +- Add code to disable the CAPS key when going from Insert to Normal mode. +- Set date/protection/etc. of the patchfile the same as the original file. +- Use growarray for termcodes[] in term.c +- Add <window-99>, like <cword> but use filename of 99'th window. +7 Add a way to change an operator to always work characterwise-inclusive + (like "v" makes the operator characterwise-exclusive). "x" could be used. +- Make a set of operations on list of names: expand wildcards, replace home + dir, append a string, delete a string, etc. +- Remove mktemp() and use tmpname() only? Ctags does this. +- When replacing environment variables, and there is one that is not set, + turn it into an empty string? Only when expanding options? (Hiebert) +- Option to set command to be executed instead of producing a beep (e.g. to + call "play newbeep.au"). +- Add option to show the current function name in the status line. More or + less what you find with "[[k", like how 'cindent' recognizes a function. + (Bhatt). +- "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for + blockwise registers). +- Add 'timecheck' option, on by default. Makes it possible to switch off the + timestamp warning and question. (Dodt). +- Add an option to set the time after which Vim should check the timestamps + of the files. Only check when an event occurs (e.g., character typed, + mouse moved). Useful for non-GUI versions where keyboard focus isn't + noticeable. +9 When using ":w <fname>" it's possible that this file is loaded in another + buffer. Give a warning right away, don't wait for a shell command. +- Make 'smartcase' work even though 'ic' isn't set (Webb). +7 Add ":justify" command. Patch from Vit Stradal 2002 Nov 25. +7 When formatting text, allow to break the line at a number of characters. + Use an option for this: 'breakchars'? Useful for formatting Fortran code. +- Add flag to 'formatoptions' to be able to format book-style paragraphs + (first line of paragraph has larger indent, no empty lines between + paragraphs). Complements the '2' flag. Use '>' flag when larger indent + starts a new paragraph, use '<' flag when smaller indent starts a new + paragraph. Both start a new paragraph on any indent change. +8 Add 'formatexpr' option: Used for formatting operator "gq" instead of the + builtin formatting or 'formatprg'. +8 Allow using a trailing space to signal a paragraph that continues on the + next line (MIME text/plain; format=flowed, RFC 2646). Can be used for + continuous formatting. Could use 'autoformat' option, which specifies a + regexp which triggers auto-formatting (for one line). + ":set autoformat=\\s$". +- Be able to redefine where a sentence stops. Use a regexp pattern? +7 Add command "g)" to go to the end of a sentence, "g(" to go back to the + end of a sentence. (Servatius Brandt) +- Be able to redefine where a paragraph starts. For "[[" where the '{' is + not in column 1. +6 Add ":cdprev": go back to the previous directory. Need to remember a + stack of previous directories. We also need ":cdnext". +7 Should ":cd" for MS-DOS go to $HOME, when it's defined? +- Make "gq<CR>" work on the last line in the file. Maybe for every operator? +8 findmatchlimit() should be able to skip comments. Solves problem of + matching the '{' in /* if (foo) { */ (Fiveash) +- findmatch() should be adjusted for Lisp. See remark at get_lisp_indent(). + Esp. \( and \) should be skipped. (Dorai Sitaram, incomplete patch Mar 18) +- Add more redirecting of Ex commands: + :redir @> register (append) + :redir # bufname + :redir #> bufname (append) + :redir = variable + :redir => variable (append) +- Setting of options, specifically for a buffer or window, with + ":set window.option" or ":set buffer.option=val". Or use ":buffer.set". + Also: "buffer.map <F1> quit". +6 Would it be possible to change the color of the cursor in the Win32 + console? (Klaus Hast) +- Add :delcr command: + *:delcr* + :[range]delcr[!] Check [range] lines (default: whole buffer) for lines + ending in <CR>. If all lines end in <CR>, or [!] is + used, remove the <CR> at the end of lines in [range]. + A CTRL-Z at the end of the file is removed. If + [range] is omitted, or it is the whole file, and all + lines end in <CR> 'textmode' is set. {not in Vi} +- Should integrate addstar() and file_pat_to_reg_pat(). +- When working over a serial line with 7 bit characters, remove meta + characters from 'isprint'. +- Use fchdir() in init_homedir(), like in FullName(). +- In win_update(), when the GUI is active, always use the scrolling area. + Avoid that the last status line is deleted and needs to be redrawn. +- That "cTx" fails when the cursor is just after 'x' is Vi compatible, but + may not be what you expect. Add a flag in 'cpoptions' for this? More + general: Add an option to allow "c" to work with a null motion. +- Give better error messages by using errno (strerror()). +- Give "Usage:" error message when command used with wrong arguments (like + Nvi). +- Make 'restorescreen' option also work for xterm (and others), replaces the + SAVE_XTERM_SCREEN define. +7 Support for ":winpos" In xterm: report the current window position. +- Give warning message when using ":set t_xx=asdf" for a termcap code that + Vim doesn't know about. Add flag in 'shortmess'? +6 Add ":che <file>", list all the include paths which lead to this file. +- For a commandline that has several commands (:s, :d, etc.) summarize the + changes all together instead of for each command (e.g. for the rot13 + macro). +- Add command like "[I" that also shows the tree of included files. +- Add command like ":ts" that shows the output of "[I" and asks for a match + to jump to. (Zellner) +- ":set sm^L" results in ":set s", because short names of options are also + expanded. Is there a better way to do this? +- Add ":@!" command, to ":@" like what ":source!" is to ":source". +8 Add ":@:!": repeat last command with forceit set. +- Should be possible to write to a device, e.g. ":w! /dev/null". +- Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty. +- ":cab map test ^V| je", ":cunab map" doesn't work. This is vi compatible! +- CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down + if it is not the first or last window. +- Include-file-search commands should look in the loaded buffer of a file (if + there is one) instead of the file itself. +7 Change 'nrformats' to include the leader for each format. Example: + nrformats=hex:$,binary:b,octal:0 + Add setting of 'nrformats' to syntax files. +- 'path' can become very long, don't use NameBuff for expansion. +- When unhiding a hidden buffer, put the same line at top of the window as + the one before hiding it. Or: keep the same relative cursor position (so + many percent down the windows). +- Make it possible for the 'showbreak' to be displayed at the end of the + line. Use a comma to separate the part at the end and the start of the + line? Highlight the linebreak characters, add flag in 'highlight'. +- Some string options should be expanded if they have wildcards, e.g. + 'dictionary' when it is "*.h". +- Use a specific type for number and boolean options, making it possible to + change it for specific machines (e.g. when a long is 64 bit). +- Add option for <Insert> in replace mode going to normal mode. (Nugent) +- Add a next/previous possibility to "[^I" and friends. +- Add possibility to change the HOME directory. Use the directory from the + passwd file? (Antwerpen) +- When doing "[^I" or "[^D" add position to tag stack. +- Add command to put current position to tag stack: ":tpush". +8 Add commands to push and pop all or individual options. ":setpush tw", + ":setpop tw", ":setpush all". Maybe pushing/popping all options is + sufficient. ":setflush" resets the option stack? + How to handle an aborted mapping? Remember position in tag stack when + mapping starts, restore it when an error aborts the mapping? +- Use a builtin grep command for ":grep"? Makes it possible to add the + column number. Can use the code of ":helpgrep". + Also support using "**" in filename, so that a directory tree can be + searched. +- Change ":fixdel" into option 'fixdel', t_del will be adjusted each time + t_bs is set? (Webb) +- "gc": goto character, move absolute character positions forward, also + counting newlines. "gC" goes backwards (Weigert). +- When doing CTRL-^, redraw buffer with the same topline (Demirel). Store + cursor row and window height to redraw cursor at same percentage of window + (Webb). +- Besides remembering the last used line number of a file, also remember the + column. Use it with CTRL-^ et. al. +- Check for non-digits when setting a number option (careful when entering + hex codes like 0xff). +- Add option to make "." redo the "@r" command, instead of the last command + executed by it. Also to make "." redo the whole mapping. Basically: redo + the last TYPED command. +- Support URL links for ^X^F in Insert mode, like for "gf". +- Support %name% expansion for "gf" on Windows. +- Make "gf" work on "file://c:/path/name". "file:/c:/" and "file:///c:/" + should also work? +- Add 'urlpath', used like 'path' for when "gf" used on an URL? +8 When using "gf" on an absolute file name, while editing a remote file + (starts with scp:// or http://) should prepend the method and machine + name. +- When finding an URL or file name, and it doesn't exist, try removing a + trailing '.'. +- Add ":path" command modifier. Should work for every command that takes a + file name argument, to search for the file name in 'path'. Use + find_file_in_path(). +- Highlight control characters on the screen: Shows the difference between + CTRL-X and "^" followed by "X" (Colon). +- Integrate parsing of cmdline command and parsing for expansion. +- Create a program that can translate a .swp file from any machine into a + form usable by Vim on the current machine. +- Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have + a readonly file. ":noro!" will reset all 'ro' flags. +- Add a variant of CTRL-V that stops interpretation of more than one + character. For entering mappings on the command line where a key contains + several special characters, e.g. a trailing newline. +- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine + the two into a regex for searching. (Ned Konz) +- Make '2' option in 'formatoptions' also work inside comments. +- Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt) +- When window size changed (with the mouse) and made too small, set it back + to the minimal size. +- Add "]>" and "[<", shift comment at end of line (command; /* comment */). +- Should not call cursorcmd() for each vgetc() in getcmdline(). +- ":split file1 file2" adds two more windows (Webb). +- Don't give message "Incomplete last line" when editing binary file. +- Add ":a", ":i" for preloading of named buffers. +- Allow autowrite when doing ":e file" (with an option 'eaw'). +- Allow a "+command" argument before each file name in the Vim command line: + "vim +123 file1 +234 file2 +345 file3". ??? +- When entering text, keep other windows on same buffer updated (when a line + entered)? +- Check out how screen does output optimizing. Apparently this is possible + as an output filter. +- In dosub() regexec is called twice for the same line. Try to avoid this. +- Window updating from memline.c: insert/delete/replace line. +- Optimize ml_append() for speed, esp. for reading a file. +- V..c should keep indent when 'ai' is set, just like [count]cc. +- Updatescript() can be done faster with a string instead of a char. +- Screen updating is inefficient with CTRL-F and CTRL-B when there are long + lines. +- Uppercase characters in ex commands can be made lowercase? +8 Add option to show characters in text not as "|A" but as decimal ("^129"), + hex ("\x81") or octal ("\201") or meta (M-x). Nvi has the 'octal' option + to switch from hex to octal. Vile can show unprintable characters in hex + or in octal. +7 Tighter integration with xxd to edit binary files. Make it more + easy/obvious to use. Command line argument? +- How does vi detect whether a filter has messed up the screen? Check source. + After ":w !command" a wait_return? +- Improve screen updating code for doput() (use s_ins()). +- With 'p' command on last line: scroll screen up (also for terminals without + insert line command). +- Use insert/delete char when terminal supports it. +- Optimize screen redraw for slow terminals. +- Optimize "dw" for long row of spaces (say, 30000). +- Add "-d null" for editing from a script file without displaying. +- In Insert mode: Remember the characters that were removed with backspace + and re-insert them one at a time with <key1>, all together with <key2>. +- Amiga: Add possibility to set a keymap. The code in amiga.c does not work + yet. +- Implement 'redraw' option. +- Add special code to 'sections' option to define something else but '{' or + '}' as the start of a section (e.g. one shiftwidth to the right). +- Add 'indent' option: Always use this amount of indent when starting a new + line and when formatting text. +- Use pipes for filtering on Unix. Requires using fork() to be able to read + and write at the same time, or some select() mechanism. +7 Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy". Only needs + implementing ":w" to stdout in the buffer that was read from stdin. +8 Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd". Vile can + do it. +- Add commands like ]] and [[ that do not include the line jumped to. +- When :unab without matching "from" part and several matching "to" parts, + delete the entry that was used last, instead of the first in the list. +- Add text justification option. +- Set boolean options on/off with ":set paste=off", ":set paste=on". +- After "inv"ing an option show the value: ":set invpaste" gives "paste is + off". +- Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR. +- When a file cannot be opened but does exist, give error message. +- Amiga: When 'r' protection bit is not set, file can still be opened but + gives read errors. Check protection before opening. +- When writing check for file exists but no permission, "Permission denied". +- If file does not exists, check if directory exists. +- MSDOS: although t_cv and t_ci are not set, do invert char under cursor. +- Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex + commands. +- ":set -w all": list one option per line. +- Amiga: test for 'w' flag when reading a file. +- :table command (Webb) +- Add new operator: clear, make area white (replace with spaces): "g ". +- Make it possible for a user to define a new operator. Implementation with + internal scripting language or Perl? +- Add command to ":read" a file at a certain column (blockwise read?). +- Add sort of replace mode where case is taken from the old text (Goldfarb). +- Allow multiple arguments for ":read", read all the files. +- Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel). +- Add 'searchdir' option: Directories to search for file name being edited + (Demirel). +- Modifier for the put command: Change to linewise, charwise, blockwise, etc. +- Add commands for saving and restoring options ":set save" "set restore", + for use in macro's and the like. +- Keep output from listings in a window, so you can have a look at it while + working in another window. Put cmdline in a separate window? +- Add possibility to put output of ex commands in a buffer or file, e.g. for + ":set all". ":r :set all"? +- 'edit' option: When off changing the buffer is not possible (Really + read-only mode). +- When the 'equalalways' option is set, creating a new window should not + result in windows to become bigger. Deleting a window should not result in + a window to become smaller (Webb). +- When resizing the whole Vim window, the windows inside should be resized + proportionally (Webb). +- Include options directly in option table, no indirect pointers. Use + mkopttab to make option table? +- When doing ":w dir", where "dir" is a directory name, write the current + file into that directory, with the current file name (without the path)? +- Support for 'dictionary's that are sorted, makes access a lot faster + (Haritsis). +- Add "^Vrx" on the command line, replace with contents of register x. Used + instead of CTRL-R to make repeating possible. (Marinichev) +- Add "^Vb" on the command line, replace with word before or under the + cursor? +- Option to make a .swp file only when a change is made (Templeton). +- Support mapping for replace mode and "r" command (Vi doesn't do this)? +5 Add 'ignorefilecase' option: Ignore case when expanding file names. + ":e ma<Tab>" would also find "Makefile" on Unix. +8 Sorting of filenames for completion is wrong on systems that ignore case + of filenames. Add 'ignorefncase' option. When set, case in filenames is + ignored for sorting them. Patch by Mike Williams: + ~/vim/patches/ignorefncase. Also change what matches? Or use another + option name. +8 Should be able to compile Vim in another directory, with $(srcdir) set to + where the sources are. Add $(srcdir) in the Makefile in a lot of places. + (Netherton) +6 Make it configurable when "J" inserts a space or not. Should not add a + space after "(", for example. +5 When inserting spaces after the end-of-line for 'virtualedit', use tabs + when the user wants this (e.g., add a "tab" field to 'virtualedit'). + (Servatius Brandt) + + +From Elvis: +- Use "instman.sh" to install manpages? +- Add ":alias" command. +- fontchanges recognized "\\fB" etc. +- Search patterns: + \@ match word under cursor. + but do: + \@w match the word under the cursor? + \@W match the WORD under the cursor? +8 ":window" command: + :win + next window (up) + :win ++ idem, wrapping + :win - previous window (down) + :win -- idem, wrapping + :win nr to window number "nr" + :win name to window editing buffer "name" +7 ":cc" compiles a single file (default: current one). 'ccprg' option is + program to use with ":cc". Use ":compile" instead of ":cc"? + + +From Nvi: +- 'searchincr' option, alias for 'incsearch'? +- 'leftright' option, alias for 'nowrap'? +- Have a look at "vi/doc/vi.chart", for Nvi specialties. +8 Add 'keytime', time in 1/10 sec for mapping timeout? +- Add 'filec' option as an alternative for 'wildchar'. +6 Support Nvi command names as an alias: + :bg :hide + :fg fname :buf fname (with 'hidden' set?) + :dis b :ls + :Edit fname :split fname + :Fg fname :sbuf fname (with 'hidden' set?) + :Next :snext (can't do this, already use :Next) + :Previous :sprevious + :Tag :stag + + +From xvi: +- CTRL-_ : swap 8th bit of character. +- Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet) + + +From vile: +- When horizontal scrolling, use '>' for lines continuing right of a window. +- Support putting .swp files in /tmp: Command in rc.local to move .swp files + from /tmp to some directory before deleting files. + + +Far future and "big" extensions: +- Make it possible to run Vim inside a window of another program. For + Xwindows this can be done with XReparentWindow(). + For GTK Neil Bird has a patch to use Vim like a widget. +- Add debugger interface. Implementation for gdb by Xavier de Gaye, + assisted by Mikolaj Machowski. Should work like an IDE. Try to keep it + generic. Also found here: http://skawina.eu.org/mikolaj/vimgdb + To be able to start the debugger from inside Vim: For GUI run a program + with a netbeans connection; for console: start a program that splits the + terminal, runs the debugger in one window and reconnect Vim I/O to the + other window. + Wishes for NetBeans commands: + - make it possible to have 'defineAnnoType' also handle terminal colors. + - send 'balloonText' events for the cursor position (using CursorHold ?) + in terminal mode. +- Add a way of scrolling that leaves the cursor where it is. Especially + when using the scrollbar. Typing a cursor-movement command scrolls back + to where the cursor is. +- Make it easy to setup Vim for groups of users: novice vi users, novice + Vim users, C programmers, xterm users, GUI users,... +- Change layout of blocks in swap file: Text at the start, with '\n' in + between lines (just load the file without changes, except for Mac). + Indexes for lines are from the end of the block backwards. It's the + current layout mirrored. +- Make it possible to edit a register, in a window, like a buffer. +- Add stuff to syntax highlighting to change the text (upper-case keywords, + set indent, define other highlighting, etc.). +- Mode to keep C-code formatted all the time (sort of on-line indent). +- Several top-level windows in one Vim session. Be able to use a different + font in each top-level window. +- Allow editing above start and below end of buffer (flag in 'virtualedit'). +- Smart cut/paste: recognize words and adjust spaces before/after them. +- Add column numbers to ":" commands ":line1,line2[col1,col2]cmd". Block + can be selected with CTRL-V. Allow '$' (end of line) for col2. +- Add open mode, use it when terminal has no cursor positioning. +- Special "drawing mode": a line is drawn where the cursor is moved to. + Backspace deletes along the line (from jvim). +- Implement ":Bset", set option in all buffers. Also ":Wset", set in all + windows, ":Aset, set in all arguments and ":Tset", set in all files + mentioned in the tags file. + Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???) + Add search string: "B/*.c/%s/.."? Or ":F/*.c/%s/.."? +- Support for underlining (underscore-BS-char), bold (char-BS-char) and other + standout modes switched on/off with , 'overstrike' option (Reiter). +- Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five + lines, "3vitextESC" will insert "text" in three lines, etc.. +4 Recognize l, #, p as 'flags' to EX commands: + :g/RE/#l shall print lines with line numbers and in list format. + :g/RE/dp shall print lines that are deleted. + POSIX: Commands where flags shall apply to all lines written: list, + number, open, print, substitute, visual, &, z. For other commands, flags + shall apply to the current line after the command completes. Examples: + :7,10j #l Join the lines 7-10 and print the result in list +- Allow two or more users to edit the same file at the same time. Changes + are reflected in each Vim immediately. Could work with local files but + also over the internet. See http://www.codingmonkeys.de/subethaedit/. + + +vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl: +vim: set fo+=n : diff --git a/en/uganda.txt b/en/uganda.txt new file mode 100644 index 000000000..5c8767e9d --- /dev/null +++ b/en/uganda.txt @@ -0,0 +1,277 @@ +*uganda.txt* For Vim version 6.3. Last change: 2004 May 12 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *uganda* *Uganda* *copying* *copyright* *license* +SUMMARY + *iccf* *ICCF* +Vim is Charityware. You can use and copy it as much as you like, but you are +encouraged to make a donation for needy children in Uganda. Please see |kcc| +below or visit the ICCF web site, available at these URLs: + + http://iccf-holland.org/ + http://www.vim.org/iccf/ + +You can also sponsor the development of Vim. Vim sponsors can vote for +features. See |sponsor|. + +The Open Publication License applies to the Vim documentation, see +|manual-copyright|. + +=== begin of license === + +VIM LICENSE + +I) There are no restrictions on distributing unmodified copies of Vim except + that they must include this license text. You can also distribute + unmodified parts of Vim, likewise unrestricted except that they must + include this license text. You are also allowed to include executables + that you made from the unmodified Vim sources, plus your own usage + examples and Vim scripts. + +II) It is allowed to distribute a modified (or extended) version of Vim, + including executables and/or source code, when the following four + conditions are met: + 1) This license text must be included unmodified. + 2) The modified Vim must be distributed in one of the following five ways: + a) If you make changes to Vim yourself, you must clearly describe in + the distribution how to contact you. When the maintainer asks you + (in any way) for a copy of the modified Vim you distributed, you + must make your changes, including source code, available to the + maintainer without fee. The maintainer reserves the right to + include your changes in the official version of Vim. What the + maintainer will do with your changes and under what license they + will be distributed is negotiable. If there has been no negotiation + then this license, or a later version, also applies to your changes. + The current maintainer is Bram Moolenaar <Bram@vim.org>. If this + changes it will be announced in appropriate places (most likely + vim.sf.net, www.vim.org and/or comp.editors). When it is completely + impossible to contact the maintainer, the obligation to send him + your changes ceases. Once the maintainer has confirmed that he has + received your changes they will not have to be sent again. + b) If you have received a modified Vim that was distributed as + mentioned under a) you are allowed to further distribute it + unmodified, as mentioned at I). If you make additional changes the + text under a) applies to those changes. + c) Provide all the changes, including source code, with every copy of + the modified Vim you distribute. This may be done in the form of a + context diff. You can choose what license to use for new code you + add. The changes and their license must not restrict others from + making their own changes to the official version of Vim. + d) When you have a modified Vim which includes changes as mentioned + under c), you can distribute it without the source code for the + changes if the following three conditions are met: + - The license that applies to the changes permits you to distribute + the changes to the Vim maintainer without fee or restriction, and + permits the Vim maintainer to include the changes in the official + version of Vim without fee or restriction. + - You keep the changes for at least three years after last + distributing the corresponding modified Vim. When the maintainer + or someone who you distributed the modified Vim to asks you (in + any way) for the changes within this period, you must make them + available to him. + - You clearly describe in the distribution how to contact you. This + contact information must remain valid for at least three years + after last distributing the corresponding modified Vim, or as long + as possible. + e) When the GNU General Public License (GPL) applies to the changes, + you can distribute the modified Vim under the GNU GPL version 2 or + any later version. + 3) A message must be added, at least in the output of the ":version" + command and in the intro screen, such that the user of the modified Vim + is able to see that it was modified. When distributing as mentioned + under 2)e) adding the message is only required for as far as this does + not conflict with the license used for the changes. + 4) The contact information as required under 2)a) and 2)d) must not be + removed or changed, except that the person himself can make + corrections. + +III) If you distribute a modified version of Vim, you are encouraged to use + the Vim license for your changes and make them available to the + maintainer, including the source code. The preferred way to do this is + by e-mail or by uploading the files to a server and e-mailing the URL. + If the number of changes is small (e.g., a modified Makefile) e-mailing a + context diff will do. The e-mail address to be used is + <maintainer@vim.org> + +IV) It is not allowed to remove this license from the distribution of the Vim + sources, parts of it or from a modified version. You may use this + license for previous Vim releases instead of the license that they came + with, at your option. + +=== end of license === + +Note: + +- If you are happy with Vim, please express that by reading the rest of this + file and consider helping needy children in Uganda. + +- If you want to support further Vim development consider becoming a + |sponsor|. + +- According to Richard Stallman the Vim license is GNU GPL compatible. + A few minor changes have been made since he checked it, but that should not + make a difference. + +- If you link Vim with a library that goes under the GNU GPL, this limits + further distribution to the GNU GPL. Also when you didn't actually change + anything in Vim. + +- Once a change is included that goes under the GNU GPL, this forces all + further changes to also be made under the GNU GPL or a compatible license. + +- If you distribute a modified version of Vim, you can include your name and + contact information with the "--with-modified-by" configure argument or the + MODIFIED_BY define. + +============================================================================== +Kibaale Children's Centre *kcc* + +Kibaale Children's Centre (KCC) is located in Kibaale, a small town in the +south of Uganda, near Tanzania, in East Africa. The area is known as Rakai +District. The population is mostly farmers. Although people are poor, there +is enough food. But this district is suffering from AIDS more than any other +part of the world. Some say that it started there. Estimations are that 10 +to 30% of the Ugandans are infected with HIV. Because parents die, there are +many orphans. In this district about 60,000 children have lost one or both +parents, out of a population of 350,000. And this is still continuing. + +The children need a lot of help. The KCC is working hard to provide the needy +with food, medical care and education. Food and medical care to keep them +healthy now, and education so that they can take care of themselves in the +future. KCC works on a Christian base, but help is given to children of any +religion. + +The key to solving the problems in this area is education. This has been +neglected in the past years with president Idi Amin and the following civil +wars. Now that the government is stable again, the children and parents have +to learn how to take care of themselves and how to avoid infections. There is +also help for people who are ill and hungry, but the primary goal is to +prevent people from getting ill and to teach them how to grow healthy food. + +Most of the orphans are living in an extended family. An uncle or older +sister is taking care of them. Because these families are big and the income +(if any) is low, a child is lucky if it gets healthy food. Clothes, medical +care and schooling is beyond its reach. To help these needy children, a +sponsorship program was put into place. A child can be financially adopted. +For a few dollars a month KCC sees to it that the child gets indispensable +items, is healthy, goes to school and KCC takes care of anything else that +needs to be done for the child and the family that supports it. + +Besides helping the child directly, the environment where the child grows up +needs to be improved. KCC helps schools to improve their teaching methods. +There is a demonstration school at the centre and teacher trainings are given. +Health workers are being trained, hygiene education is carried out and +households are stimulated to build a proper latrine. I helped setting up a +production site for cement slabs. These are used to build a good latrine. +They are sold below cost price. + +There is a small clinic at the project, which provides children and their +family with medical help. When needed, transport to a hospital is offered. +Immunization programs are carried out and help is provided when an epidemic is +breaking out (measles and cholera have been a problem). + +Summer 1994 to summer 1995 I spent a whole year at the centre, working as a +volunteer. I have helped to expand the centre and worked in the area of water +and sanitation. I learned that the help that the KCC provides really helps. +Now that I'm back in Holland, I would like to continue supporting KCC. To do +this I'm raising funds and organizing the sponsorship program. Please +consider one of these possibilities: + +1. Sponsor a child in primary school: 17 euro a month (or more). +2. Sponsor a child in secondary school: 25 euro a month (or more). +3. Sponsor the clinic: Any amount a month or quarter +4. A one-time donation + +Compared with other organizations that do child sponsorship the amounts are +very low. This is because the money goes directly to the centre. Less than +5% is used for administration. This is possible because this is a small +organization that works with volunteers. If you would like to sponsor a +child, you should have the intention to do this for at least one year. + +How do you know that the money will be spent right? First of all you have my +personal guarantee as the author of Vim. I trust the people that are working +at the centre, I know them personally. Further more, the centre is +co-sponsored and inspected by World Vision, Save the Children Fund and +International Child Care Fund. The centre is visited about once a year to +check the progress (at our own cost). I have visited the centre myself in +1996, 1998, 2000, 2001 and 2003. The visit reports are on the ICCF web site. + +If you have any further questions, send me e-mail: <Bram@vim.org>. + +The address of the centre is: + Kibaale Children's Centre + p.o. box 1658 + Masaka, Uganda, East Africa + +Sending money: + +Check the ICCF web site for the latest information! See |iccf| for the URL. + + +USA and Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They + take care of the Canadian sponsors for the children in + Kibaale. You can send them a one time donation directly. + Please send me a note so that know what has been donated + because of Vim. Ask KCF for information about sponsorship. + Kibaale Children's Fund c/o Pacific Academy + 10238-168 Street + Surrey, B.C. V4N 1Z4 + Canada + Phone: 604-581-5353 + If you make a donation to Kibaale Children's Fund (KCF) you + will receive a tax receipt which can be submitted with your + tax return (under the Free Trade Agreement tax receipts issued + by an organization registered in Canada are fully accepted by + the IRS in the USA, with a few conditions). + +Holland: Transfer to the account of "Stichting ICCF Holland" in Venlo. + This will allow for tax deduction (if you live in Holland)! + Postbank, nr. 4548774 + +Germany: It is possible to make donations that allow for a tax return. + Check the ICCF web site for the latest information: + http://iccf-holland.org/germany.html + +World: Use a postal money order. That should be possible from any + country, mostly from the post office. Use this name (which is + in my passport): "Abraham Moolenaar". Use Euro for the + currency if possible. + +Europe: Use a bank transfer if possible. Your bank should have a form + that you can use for this. See "Others" below for the swift + code and IBAN number. + Any other method should work. Ask for information about + sponsorship. + +Credit Card: You can use PayPal to send money with a Credit card. This is + the most widely used Internet based payment system. It's + really simple to use. Use this link to find more info: + https://www.paypal.com/affil/pal=Bram%40moolenaar.net + The e-mail address for sending the money to is: + Bram@iccf-holland.org + For amounts above $150 sending a cheque is preferred. + +Others: Transfer to one of these accounts if possible: + Postbank, account 4548774 + Swift code: INGB NL 2A + IBAN: NL47 PSTB 0004 5487 74 + under the name "stichting ICCF Holland", Venlo + If that doesn't work: + Rabobank Venlo, account 3765.05.117 + Swift code: RABO NL 2U + under the name "Bram Moolenaar", Venlo + Otherwise, send a cheque in euro or US dollars to the address + below. Minimal amount: $70 (my bank does not accept smaller + amounts for foreign cheques, sorry) + +Address to send cheques to: + stichting ICCF Holland + Bram Moolenaar + Clematisstraat 30 + 5925 BE Venlo + The Netherlands + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/undo.txt b/en/undo.txt new file mode 100644 index 000000000..4aace6313 --- /dev/null +++ b/en/undo.txt @@ -0,0 +1,117 @@ +*undo.txt* For Vim version 6.3. Last change: 2003 Oct 21 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Undo and redo *undo-redo* + +The basics are explained in section |02.5| of the user manual. + +1. Undo and redo commands |undo-commands| +2. Two ways of undo |undo-two-ways| +3. Remarks about undo |undo-remarks| + +============================================================================== +1. Undo and redo commands *undo-commands* + +<Undo> or *undo* *<Undo>* *u* +u Undo [count] changes. {Vi: only one level} + + *:u* *:un* *:undo* +:u[ndo] Undo one change. {Vi: only one level} + + *CTRL-R* +CTRL-R Redo [count] changes which were undone. {Vi: redraw + screen} + + *:red* *:redo* *redo* +:red[o] Redo one change which was undone. {Vi: no redo} + + *U* +U Undo all latest changes on one line. {Vi: while not + moved off of it} + +The last changes are remembered. You can use the undo and redo commands above +to revert the text to how it was before each change. You can also apply the +changes again, getting back the text before the undo. + +The "U" command is treated by undo/redo just like any other command. Thus a +"u" command undoes a "U" command and a 'CTRL-R' command redoes it again. When +mixing "U", "u" and 'CTRL-R' you will notice that the "U" command will +restore the situation of a line to before the previous "U" command. This may +be confusing. Try it out to get used to it. +The "U" command will always mark the buffer as changed. When "U" changes the +buffer back to how it was without changes, it is still considered changed. +Use "u" to undo changes until the buffer becomes unchanged. + +============================================================================== +2. Two ways of undo *undo-two-ways* + +How undo and redo commands work depends on the 'u' flag in 'cpoptions'. +There is the Vim way ('u' excluded) and the vi-compatible way ('u' included). +In the Vim way, "uu" undoes two changes. In the Vi-compatible way, "uu" does +nothing (undoes an undo). + +'u' excluded, the Vim way: +You can go back in time with the undo command. You can then go forward again +with the redo command. If you make a new change after the undo command, +the redo will not be possible anymore. + +'u' included, the Vi-compatible way: +The undo command undoes the previous change, and also the previous undo command. +The redo command repeats the previous undo command. It does NOT repeat a +change command, use "." for that. + +Examples Vim way Vi-compatible way ~ +"uu" two times undo no-op +"u CTRL-R" no-op two times undo + +Rationale: Nvi uses the "." command instead of CTRL-R. Unfortunately, this + is not Vi compatible. For example "dwdwu." in Vi deletes two + words, in Nvi it does nothing. + +============================================================================== +3. Remarks about undo *undo-remarks* + +The number of changes that are remembered is set with the 'undolevels' option. +If it is zero, the Vi-compatible way is always used. If it is negative no +undo is possible. Use this if you are running out of memory. + +Marks for the buffer ('a to 'z) are also saved and restored, together with the +text. {Vi does this a little bit different} + +When all changes have been undone, the buffer is not considered to be changed. +It is then possible to exit Vim with ":q" instead of ":q!" {not in Vi}. Note +that this is relative to the last write of the file. Typing "u" after ":w" +actually changes the buffer, compared to what was written, so the buffer is +considered changed then. + +When manual |folding| is being used, the folds are not saved and restored. +Only changes completely within a fold will keep the fold as it was, because +the first and last line of the fold don't change. + +The numbered registers can also be used for undoing deletes. Each time you +delete text, it is put into register "1. The contents of register "1 are +shifted to "2, etc. The contents of register "9 are lost. You can now get +back the most recent deleted text with the put command: '"1P'. (also, if the +deleted text was the result of the last delete or copy operation, 'P' or 'p' +also works as this puts the contents of the unnamed register). You can get +back the text of three deletes ago with '"3P'. + + *redo-register* +If you want to get back more than one part of deleted text, you can use a +special feature of the repeat command ".". It will increase the number of the +register used. So if you first do ""1P", the following "." will result in a +'"2P'. Repeating this will result in all numbered registers being inserted. + +Example: If you deleted text with 'dd....' it can be restored with + '"1P....'. + +If you don't know in which register the deleted text is, you can use the +:display command. An alternative is to try the first register with '"1P', and +if it is not what you want do 'u.'. This will remove the contents of the +first put, and repeat the put command for the second register. Repeat the +'u.' until you got what you want. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_01.txt b/en/usr_01.txt new file mode 100644 index 000000000..817a8db7c --- /dev/null +++ b/en/usr_01.txt @@ -0,0 +1,180 @@ +*usr_01.txt* For Vim version 6.3. Last change: 2004 May 01 + + VIM USER MANUAL - by Bram Moolenaar + + About the manuals + + +This chapter introduces the manuals available with Vim. Read this to know the +conditions under which the commands are explained. + +|01.1| Two manuals +|01.2| Vim installed +|01.3| Using the Vim tutor +|01.4| Copyright + + Next chapter: |usr_02.txt| The first steps in Vim +Table of contents: |usr_toc.txt| + +============================================================================== +*01.1* Two manuals + +The Vim documentation consists of two parts: + +1. The User manual + Task oriented explanations, from simple to complex. Reads from start to + end like a book. + +2. The Reference manual + Precise description of how everything in Vim works. + +The notation used in these manuals is explained here: |notation| + + +JUMPING AROUND + +The text contains hyperlinks between the two parts, allowing you to quickly +jump between the description of an editing task and a precise explanation of +the commands and options used for it. Use these two commands: + + Press CTRL-] to jump to a subject under the cursor. + Press CTRL-O to jump back (repeat to go further back). + +Many links are in vertical bars, like this: |bars|. An option name, like +'number', a command in double quotes like ":write" and any other word can also +be used as a link. Try it out: Move the cursor to CTRL-] and press CTRL-] +on it. + +Other subjects can be found with the ":help" command, see |help.txt|. + +============================================================================== +*01.2* Vim installed + +Most of the manuals assume that Vim has been properly installed. If you +didn't do that yet, or if Vim doesn't run properly (e.g., files can't be found +or in the GUI the menus do not show up) first read the chapter on +installation: |usr_90.txt|. + *not-compatible* +The manuals often assume you are using Vim with Vi-compatibility switched +off. For most commands this doesn't matter, but sometimes it is important, +e.g., for multi-level undo. An easy way to make sure you are using the right +setup, copy the example vimrc file. By doing this inside Vim you don't have +to check out where it is located. How to do this depends on the system you +are using: + +Unix: > + :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc +MS-DOS, MS-Windows, OS/2: > + :!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc +Amiga: > + :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc + +If the file already exists you probably want to keep it. + +If you start Vim now, the 'compatible' option should be off. You can check it +with this command: > + + :set compatible? + +If it responds with "nocompatible" you are doing well. If the response is +"compatible" you are in trouble. You will have to find out why the option is +still set. Perhaps the file you wrote above is not found. Use this command +to find out: > + + :scriptnames + +If your file is not in the list, check its location and name. If it is in the +list, there must be some other place where the 'compatible' option is switched +back on. + +For more info see |vimrc| and |compatible-default|. + + Note: + This manual is about using Vim in the normal way. There is an + alternative called "evim" (easy Vim). This is still Vim, but used in + a way that resembles a click-and-type editor like Notepad. It always + stays in Insert mode, thus it feels very different. It is not + explained in the user manual, since it should be mostly self + explanatory. See |evim-keys| for details. + +============================================================================== +*01.3* Using the Vim tutor *tutor* *vimtutor* + +Instead of reading the text (boring!) you can use the vimtutor to learn your +first Vim commands. This is a 30 minute tutorial that teaches the most basic +Vim functionality hands-on. + +On Unix and MS-Windows, if Vim has been properly installed, you can start it +from the shell: +> + vimtutor + +This will make a copy of the tutor file, so that you can edit it without +the risk of damaging the original. + There are a few translated versions of the tutor. To find out if yours is +available, use the two-letter language code. For French: > + + vimtutor fr + +For OpenVMS, if Vim has been properly installed, you can start vimtutor from a +VMS prompt with: > + + @VIM:vimtutor + +Optionally add the two-letter language code as above. + + +On other systems, you have to do a little work: + +1. Copy the tutor file. You can do this with Vim (it knows where to find it): +> + vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' +< + This will write the file "TUTORCOPY" in the current directory. To use a +translated version of the tutor, append the two-letter language code to the +filename. For French: +> + vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q' +< +2. Edit the copied file with Vim: +> + vim -u NONE -c "set nocp" TUTORCOPY +< + The extra arguments make sure Vim is started in a good mood. + +3. Delete the copied file when you are finished with it: +> + del TUTORCOPY +< +============================================================================== +*01.4* Copyright *manual-copyright* + +The Vim user manual and reference manual are Copyright (c) 1988-2003 by Bram +Moolenaar. This material may be distributed only subject to the terms and +conditions set forth in the Open Publication License, v1.0 or later. The +latest version is presently available at: + http://www.opencontent.org/opl.shtml + +People who contribute to the manuals must agree with the above copyright +notice. + *frombook* +Parts of the user manual come from the book "Vi IMproved - Vim" by Steve +Oualline (published by New Riders Publishing, ISBN: 0735710015). The Open +Publication License applies to this book. Only selected parts are included +and these have been modified (e.g., by removing the pictures, updating the +text for Vim 6.0 and fixing mistakes). The omission of the |frombook| tag +does not mean that the text does not come from the book. + +Many thanks to Steve Oualline and New Riders for creating this book and +publishing it under the OPL! It has been a great help while writing the user +manual. Not only by providing literal text, but also by setting the tone and +style. + +If you make money through selling the manuals, you are strongly encouraged to +donate part of the profit to help AIDS victims in Uganda. See |iccf|. + +============================================================================== + +Next chapter: |usr_02.txt| The first steps in Vim + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_02.txt b/en/usr_02.txt new file mode 100644 index 000000000..89e614f6f --- /dev/null +++ b/en/usr_02.txt @@ -0,0 +1,504 @@ +*usr_02.txt* For Vim version 6.3. Last change: 2003 May 04 + + VIM USER MANUAL - by Bram Moolenaar + + The first steps in Vim + + +This chapter provides just enough information to edit a file with Vim. Not +well or fast, but you can edit. Take some time to practice with these +commands, they form the base for what follows. + +|02.1| Running Vim for the First Time +|02.2| Inserting text +|02.3| Moving around +|02.4| Deleting characters +|02.5| Undo and Redo +|02.6| Other editing commands +|02.7| Getting out +|02.8| Finding help + + Next chapter: |usr_03.txt| Moving around + Previous chapter: |usr_01.txt| About the manuals +Table of contents: |usr_toc.txt| + +============================================================================== +*02.1* Running Vim for the First Time + +To start Vim, enter this command: > + + gvim file.txt + +In UNIX you can type this at any command prompt. If you are running Microsoft +Windows, open an MS-DOS prompt window and enter the command. + In either case, Vim starts editing a file called file.txt. Because this +is a new file, you get a blank window. This is what your screen will look +like: + + +---------------------------------------+ + |# | + |~ | + |~ | + |~ | + |~ | + |"file.txt" [New file] | + +---------------------------------------+ + ('#" is the cursor position.) + +The tilde (~) lines indicate lines not in the file. In other words, when Vim +runs out of file to display, it displays tilde lines. At the bottom of the +screen, a message line indicates the file is named file.txt and shows that you +are creating a new file. The message information is temporary and other +information overwrites it. + + +THE VIM COMMAND + +The gvim command causes the editor to create a new window for editing. If you +use this command: > + + vim file.txt + +the editing occurs inside your command window. In other words, if you are +running inside an xterm, the editor uses your xterm window. If you are using +an MS-DOS command prompt window under Microsoft Windows, the editing occurs +inside this window. The text in the window will look the same for both +versions, but with gvim you have extra features, like a menu bar. More about +that later. + +============================================================================== +*02.2* Inserting text + +The Vim editor is a modal editor. That means that the editor behaves +differently, depending on which mode you are in. The two basic modes are +called Normal mode and Insert mode. In Normal mode the characters you type +are commands. In Insert mode the characters are inserted as text. + Since you have just started Vim it will be in Normal mode. To start Insert +mode you type the "i" command (i for Insert). Then you can enter +the text. It will be inserted into the file. Do not worry if you make +mistakes; you can correct them later. To enter the following programmer's +limerick, this is what you type: > + + iA very intelligent turtle + Found programming UNIX a hurdle + +After typing "turtle" you press the <Enter> key to start a new line. Finally +you press the <Esc> key to stop Insert mode and go back to Normal mode. You +now have two lines of text in your Vim window: + + +---------------------------------------+ + |A very intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + + +WHAT IS THE MODE? + +To be able to see what mode you are in, type this command: > + + :set showmode + +You will notice that when typing the colon Vim moves the cursor to the last +line of the window. That's where you type colon commands (commands that start +with a colon). Finish this command by pressing the <Enter> key (all commands +that start with a colon are finished this way). + Now, if you type the "i" command Vim will display --INSERT-- at the bottom +of the window. This indicates you are in Insert mode. + + +---------------------------------------+ + |A very intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + |-- INSERT -- | + +---------------------------------------+ + +If you press <Esc> to go back to Normal mode the last line will be made blank. + + +GETTING OUT OF TROUBLE + +One of the problems for Vim novices is mode confusion, which is caused by +forgetting which mode you are in or by accidentally typing a command that +switches modes. To get back to Normal mode, no matter what mode you are in, +press the <Esc> key. Sometimes you have to press it twice. If Vim beeps back +at you, you already are in Normal mode. + +============================================================================== +*02.3* Moving around + +After you return to Normal mode, you can move around by using these keys: + + h left *hjkl* + j down + k up + l right + +At first, it may appear that these commands were chosen at random. After all, +who ever heard of using l for right? But actually, there is a very good +reason for these choices: Moving the cursor is the most common thing you do in +an editor, and these keys are on the home row of your right hand. In other +words, these commands are placed where you can type them the fastest +(especially when you type with ten fingers). + + Note: + You can also move the cursor by using the arrow keys. If you do, + however, you greatly slow down your editing because to press the arrow + keys, you must move your hand from the text keys to the arrow keys. + Considering that you might be doing it hundreds of times an hour, this + can take a significant amount of time. + Also, there are keyboards which do not have arrow keys, or which + locate them in unusual places; therefore, knowing the use of the hjkl + keys helps in those situations. + +One way to remember these commands is that h is on the left, l is on the +right and j points down. In a picture: > + + k + h l + j + +The best way to learn these commands is by using them. Use the "i" command to +insert some more lines of text. Then use the hjkl keys to move around and +insert a word somewhere. Don't forget to press <Esc> to go back to Normal +mode. The |vimtutor| is also a nice way to learn by doing. + +For Japanse users, Hiroshi Iwatani suggested using this: + + Komsomolsk + ^ + | + Huan Ho <--- ---> Los Angeles + (Yellow river) | + v + Java (the island, not the programming language) + +============================================================================== +*02.4* Deleting characters + +To delete a character, move the cursor over it and type "x". (This is a +throwback to the old days of the typewriter, when you deleted things by typing +xxxx over them.) Move the cursor to the beginning of the first line, for +example, and type xxxxxxx (seven x's) to delete "A very ". The result should +look like this: + + +---------------------------------------+ + |intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + +Now you can insert new text, for example by typing: > + + iA young <Esc> + +This begins an insert (the i), inserts the words "A young", and then exits +insert mode (the final <Esc>). The result: + + +---------------------------------------+ + |A young intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + + +DELETING A LINE + +To delete a whole line use the "dd" command. The following line will +then move up to fill the gap: + + +---------------------------------------+ + |Found programming UNIX a hurdle | + |~ | + |~ | + |~ | + | | + +---------------------------------------+ + + +DELETING A LINE BREAK + +In Vim you can join two lines together, which means that the line break +between them is deleted. The "J" command does this. + Take these two lines: + + A young intelligent ~ + turtle ~ + +Move the cursor to the first line and press "J": + + A young intelligent turtle ~ + +============================================================================== +*02.5* Undo and Redo + +Suppose you delete too much. Well, you can type it in again, but an easier +way exists. The "u" command undoes the last edit. Take a look at this in +action: After using "dd" to delete the first line, "u" brings it back. + Another one: Move the cursor to the A in the first line: + + A young intelligent turtle ~ + +Now type xxxxxxx to delete "A young". The result is as follows: + + intelligent turtle ~ + +Type "u" to undo the last delete. That delete removed the g, so the undo +restores the character. + + g intelligent turtle ~ + +The next u command restores the next-to-last character deleted: + + ng intelligent turtle ~ + +The next u command gives you the u, and so on: + + ung intelligent turtle ~ + oung intelligent turtle ~ + young intelligent turtle ~ + young intelligent turtle ~ + A young intelligent turtle ~ + + Note: + If you type "u" twice, and the result is that you get the same text + back, you have Vim configured to work Vi compatible. Look here to fix + this: |not-compatible|. + This text assumes you work "The Vim Way". You might prefer to use + the good old Vi way, but you will have to watch out for small + differences in the text then. + + +REDO + +If you undo too many times, you can press CTRL-R (redo) to reverse the +preceding command. In other words, it undoes the undo. To see this in +action, press CTRL-R twice. The character A and the space after it disappear: + + young intelligent turtle ~ + +There's a special version of the undo command, the "U" (undo line) command. +The undo line command undoes all the changes made on the last line that was +edited. Typing this command twice cancels the preceding "U". + + A very intelligent turtle ~ + xxxx Delete very + + A intelligent turtle ~ + xxxxxx Delete turtle + + A intelligent ~ + Restore line with "U" + A very intelligent turtle ~ + Undo "U" with "u" + A intelligent ~ + +The "U" command is a change by itself, which the "u" command undoes and CTRL-R +redoes. This might be a bit confusing. Don't worry, with "u" and CTRL-R you +can go to any of the situations you had. + +============================================================================== +*02.6* Other editing commands + +Vim has a large number of commands to change the text. See |Q_in| and below. +Here are a few often used ones. + + +APPENDING + +The "i" command inserts a character before the character under the cursor. +That works fine; but what happens if you want to add stuff to the end of the +line? For that you need to insert text after the cursor. This is done with +the "a" (append) command. + For example, to change the line + + and that's not saying much for the turtle. ~ +to + and that's not saying much for the turtle!!! ~ + +move the cursor over to the dot at the end of the line. Then type "x" to +delete the period. The cursor is now positioned at the end of the line on the +e in turtle. Now type > + + a!!!<Esc> + +to append three exclamation points after the e in turtle: + + and that's not saying much for the turtle!!! ~ + + +OPENING UP A NEW LINE + +The "o" command creates a new, empty line below the cursor and puts Vim in +Insert mode. Then you can type the text for the new line. + Suppose the cursor is somewhere in the first of these two lines: + + A very intelligent turtle ~ + Found programming UNIX a hurdle ~ + +If you now use the "o" command and type new text: > + + oThat liked using Vim<Esc> + +The result is: + + A very intelligent turtle ~ + That liked using Vim ~ + Found programming UNIX a hurdle ~ + +The "O" command (uppercase) opens a line above the cursor. + + +USING A COUNT + +Suppose you want to move up nine lines. You can type "kkkkkkkkk" or you can +enter the command "9k". In fact, you can precede many commands with a number. +Earlier in this chapter, for instance, you added three exclamation points to +the end of a line by typing "a!!!<Esc>". Another way to do this is to use the +command "3a!<Esc>". The count of 3 tells the command that follows to triple +its effect. Similarly, to delete three characters, use the command "3x". The +count always comes before the command it applies to. + +============================================================================== +*02.7* Getting out + +To exit, use the "ZZ" command. This command writes the file and exits. + + Note: + Unlike many other editors, Vim does not automatically make a backup + file. If you type "ZZ", your changes are committed and there's no + turning back. You can configure the Vim editor to produce backup + files, see |07.4|. + + +DISCARDING CHANGES + +Sometimes you will make a sequence of changes and suddenly realize you were +better off before you started. Not to worry; Vim has a +quit-and-throw-things-away command. It is: > + + :q! + +Don't forget to press <Enter> to finish the command. + +For those of you interested in the details, the three parts of this command +are the colon (:), which enters Command-line mode; the q command, which tells +the editor to quit; and the override command modifier (!). + The override command modifier is needed because Vim is reluctant to throw +away changes. If you were to just type ":q", Vim would display an error +message and refuse to exit: + + E37: No write since last change (use ! to override) ~ + +By specifying the override, you are in effect telling Vim, "I know that what +I'm doing looks stupid, but I'm a big boy and really want to do this." + +If you want to continue editing with Vim: The ":e!" command reloads the +original version of the file. + +============================================================================== +*02.8* Finding help + +Everything you always wanted to know can be found in the Vim help files. +Don't be afraid to ask! + To get generic help use this command: > + + :help + +You could also use the first function key <F1>. If your keyboard has a <Help> +key it might work as well. + If you don't supply a subject, ":help" displays the general help window. +The creators of Vim did something very clever (or very lazy) with the help +system: They made the help window a normal editing window. You can use all +the normal Vim commands to move through the help information. Therefore h, j, +k, and l move left, down, up and right. + To get out of the help window, use the same command you use to get out of +the editor: "ZZ". This will only close the help window, not exit Vim. + +As you read the help text, you will notice some text enclosed in vertical bars +(for example, |help|). This indicates a hyperlink. If you position the +cursor anywhere between the bars and press CTRL-] (jump to tag), the help +system takes you to the indicated subject. (For reasons not discussed here, +the Vim terminology for a hyperlink is tag. So CTRL-] jumps to the location +of the tag given by the word under the cursor.) + After a few jumps, you might want to go back. CTRL-T (pop tag) takes you +back to the preceding position. CTRL-O (jump to older position) also works +nicely here. + At the top of the help screen, there is the notation *help.txt*. This name +between "*" characters is used by the help system to define a tag (hyperlink +destination). + See |29.1| for details about using tags. + +To get help on a given subject, use the following command: > + + :help {subject} + +To get help on the "x" command, for example, enter the following: > + + :help x + +To find out how to delete text, use this command: > + + :help deleting + +To get a complete index of all Vim commands, use the following command: > + + :help index + +When you need to get help for a control character command (for example, +CTRL-A), you need to spell it with the prefix "CTRL-". > + + :help CTRL-A + +The Vim editor has many different modes. By default, the help system displays +the normal-mode commands. For example, the following command displays help +for the normal-mode CTRL-H command: > + + :help CTRL-H + +To identify other modes, use a mode prefix. If you want the help for the +insert-mode version of a command, use "i_". For CTRL-H this gives you the +following command: > + + :help i_CTRL-H + +When you start the Vim editor, you can use several command-line arguments. +These all begin with a dash (-). To find what the -t argument does, for +example, use the command: > + + :help -t + +The Vim editor has a number of options that enable you to configure and +customize the editor. If you want help for an option, you need to enclose it +in single quotation marks. To find out what the 'number' option does, for +example, use the following command: > + + :help 'number' + +The table with all mode prefixes can be found here: |help-context|. + +Special keys are enclosed in angle brackets. To find help on the up-arrow key +in Insert mode, for instance, use this command: > + + :help i_<Up> + +If you see an error message that you don't understand, for example: + + E37: No write since last change (use ! to override) ~ + +You can use the error ID at the start to find help about it: > + + :help E37 + +============================================================================== + +Next chapter: |usr_03.txt| Moving around + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_03.txt b/en/usr_03.txt new file mode 100644 index 000000000..e1c4b9d91 --- /dev/null +++ b/en/usr_03.txt @@ -0,0 +1,654 @@ +*usr_03.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + VIM USER MANUAL - by Bram Moolenaar + + Moving around + + +Before you can insert or delete text the cursor has to be moved to the right +place. Vim has a large number of commands to position the cursor. This +chapter shows you how to use the most important ones. You can find a list of +these commands below |Q_lr|. + +|03.1| Word movement +|03.2| Moving to the start or end of a line +|03.3| Moving to a character +|03.4| Matching a paren +|03.5| Moving to a specific line +|03.6| Telling where you are +|03.7| Scrolling around +|03.8| Simple searches +|03.9| Simple search patterns +|03.10| Using marks + + Next chapter: |usr_04.txt| Making small changes + Previous chapter: |usr_02.txt| The first steps in Vim +Table of contents: |usr_toc.txt| + +============================================================================== +*03.1* Word movement + +To move the cursor forward one word, use the "w" command. Like most Vim +commands, you can use a numeric prefix to move past multiple words. For +example, "3w" moves three words. This figure shows how it works: + + This is a line with example text ~ + --->-->->-----------------> + w w w 3w + +Notice that "w" moves to the start of the next word if it already is at the +start of a word. + The "b" command moves backward to the start of the previous word: + + This is a line with example text ~ + <----<--<-<---------<--- + b b b 2b b + +There is also the "e" command that moves to the next end of a word and "ge", +which moves to the previous end of a word: + + This is a line with example text ~ + <- <--- -----> ----> + ge ge e e + +If you are at the last word of a line, the "w" command will take you to the +first word in the next line. Thus you can use this to move through a +paragraph, much faster than using "l". "b" does the same in the other +direction. + +A word ends at a non-word character, such as a ".", "-" or ")". To change +what Vim considers to be a word, see the 'iskeyword' option. + It is also possible to move by white-space separated WORDs. This is not a +word in the normal sense, that's why the uppercase is used. The commands for +moving by WORDs are also uppercase, as this figure shows: + + ge b w e + <- <- ---> ---> + This is-a line, with special/separated/words (and some more). ~ + <----- <----- --------------------> -----> + gE B W E + +With this mix of lowercase and uppercase commands, you can quickly move +forward and backward through a paragraph. + +============================================================================== +*03.2* Moving to the start or end of a line + +The "$" command moves the cursor to the end of a line. If your keyboard has +an <End> key it will do the same thing. + +The "^" command moves to the first non-blank character of the line. The "0" +command (zero) moves to the very first character of the line. The <Home> key +does the same thing. In a picture: + + ^ + <------------ + .....This is a line with example text ~ + <----------------- ---------------> + 0 $ + +(the "....." indicates blanks here) + + The "$" command takes a count, like most movement commands. But moving to +the end of the line several times doesn't make sense. Therefore it causes the +editor to move to the end of another line. For example, "1$" moves you to +the end of the first line (the one you're on), "2$" to the end of the next +line, and so on. + The "0" command doesn't take a count argument, because the "0" would be +part of the count. Unexpectedly, using a count with "^" doesn't have any +effect. + +============================================================================== +*03.3* Moving to a character + +One of the most useful movement commands is the single-character search +command. The command "fx" searches forward in the line for the single +character x. Hint: "f" stands for "Find". + For example, you are at the beginning of the following line. Suppose you +want to go to the h of human. Just execute the command "fh" and the cursor +will be positioned over the h: + + To err is human. To really foul up you need a computer. ~ + ---------->---------------> + fh fy + +This also shows that the command "fy" moves to the end of the word really. + You can specify a count; therefore, you can go to the "l" of "foul" with +"3fl": + + To err is human. To really foul up you need a computer. ~ + ---------------------> + 3fl + +The "F" command searches to the left: + + To err is human. To really foul up you need a computer. ~ + <--------------------- + Fh + +The "tx" command works like the "fx" command, except it stops one character +before the searched character. Hint: "t" stands for "To". The backward +version of this command is "Tx". + + To err is human. To really foul up you need a computer. ~ + <------------ -------------> + Th tn + +These four commands can be repeated with ";". "," repeats in the other +direction. The cursor is never moved to another line. Not even when the +sentence continues. + +Sometimes you will start a search, only to realize that you have typed the +wrong command. You type "f" to search backward, for example, only to realize +that you really meant "F". To abort a search, press <Esc>. So "f<Esc>" is an +aborted forward search and doesn't do anything. Note: <Esc> cancels most +operations, not just searches. + +============================================================================== +*03.4* Matching a paren + +When writing a program you often end up with nested () constructs. Then the +"%" command is very handy: It moves to the matching paren. If the cursor is +on a "(" it will move to the matching ")". If it's on a ")" it will move to +the matching "(". + + % + <-----> + if (a == (b * c) / d) ~ + <----------------> + % + +This also works for [] and {} pairs. (This can be defined with the +'matchpairs' option.) + +When the cursor is not on a useful character, "%" will search forward to find +one. Thus if the cursor is at the start of the line of the previous example, +"%" will search forward and find the first "(". Then it moves to its match: + + if (a == (b * c) / d) ~ + ---+----------------> + % + +============================================================================== +*03.5* Moving to a specific line + +If you are a C or C++ programmer, you are familiar with error messages such as +the following: + + prog.c:33: j undeclared (first use in this function) ~ + +This tells you that you might want to fix something on line 33. So how do you +find line 33? One way is to do "9999k" to go to the top of the file and "32j" +to go down thirty two lines. It is not a good way, but it works. A much +better way of doing things is to use the "G" command. With a count, this +command positions you at the given line number. For example, "33G" puts you +on line 33. (For a better way of going through a compiler's error list, see +|usr_30.txt|, for information on the :make command.) + With no argument, "G" positions you at the end of the file. A quick way to +go to the start of a file use "gg". "1G" will do the same, but is a tiny bit +more typing. + + | first line of a file ^ + | text text text text | + | text text text text | gg + 7G | text text text text | + | text text text text + | text text text text + V text text text text | + text text text text | G + text text text text | + last line of a file V + +Another way to move to a line is using the "%" command with a count. For +example "50%" moves you to halfway the file. "90%" goes to near the end. + +The previous assumes that you want to move to a line in the file, no matter if +it's currently visible or not. What if you want to move to one of the lines +you can see? This figure shows the three commands you can use: + + +---------------------------+ + H --> | text sample text | + | sample text | + | text sample text | + | sample text | + M --> | text sample text | + | sample text | + | text sample text | + | sample text | + L --> | text sample text | + +---------------------------+ + +Hints: "H" stands for Home, "M" for Middle and "L" for Last. + +============================================================================== +*03.6* Telling where you are + +To see where you are in a file, there are three ways: + +1. Use the CTRL-G command. You get a message like this (assuming the 'ruler' + option is off): + + "usr_03.txt" line 233 of 650 --35%-- col 45-52 ~ + + This shows the name of the file you are editing, the line number where the + cursor is, the total number of lines, the percentage of the way through + the file and the column of the cursor. + Sometimes you will see a split column number. For example, "col 2-9". + This indicates that the cursor is positioned on the second character, but + because character one is a tab, occupying eight spaces worth of columns, + the screen column is 9. + +2. Set the 'number' option. This will display a line number in front of + every line: > + + :set number +< + To switch this off again: > + + :set nonumber +< + Since 'number' is a boolean option, prepending "no" to its name has the + effect of switching it off. A boolean option has only these two values, + it is either on or off. + Vim has many options. Besides the boolean ones there are options with + a numerical value and string options. You will see examples of this where + they are used. + +3. Set the 'ruler' option. This will display the cursor position in the + lower right corner of the Vim window: > + + :set ruler + +Using the 'ruler' option has the advantage that it doesn't take much room, +thus there is more space for your text. + +============================================================================== +*03.7* Scrolling around + +The CTRL-U command scrolls down half a screen of text. Think of looking +through a viewing window at the text and moving this window up by half the +height of the window. Thus the window moves up over the text, which is +backward in the file. Don't worry if you have a little trouble remembering +which end is up. Most users have the same problem. + The CTRL-D command moves the viewing window down half a screen in the file, +thus scrolls the text up half a screen. + + +----------------+ + | some text | + | some text | + | some text | + +---------------+ | some text | + | some text | CTRL-U --> | | + | | | 123456 | + | 123456 | +----------------+ + | 7890 | + | | +----------------+ + | example | CTRL-D --> | 7890 | + +---------------+ | | + | example | + | example | + | example | + | example | + +----------------+ + +To scroll one line at a time use CTRL-E (scroll up) and CTRL-Y (scroll down). +Think of CTRL-E to give you one line Extra. (If you use MS-Windows compatible +key mappings CTRL-Y will redo a change instead of scroll.) + +To scroll forward by a whole screen (except for two lines) use CTRL-F. The +other way is backward, CTRL-B is the command to use. Fortunately CTRL-F is +Forward and CTRL-B is Backward, that's easy to remember. + +A common issue is that after moving down many lines with "j" your cursor is at +the bottom of the screen. You would like to see the context of the line with +the cursor. That's done with the "zz" command. + + +------------------+ +------------------+ + | some text | | some text | + | some text | | some text | + | some text | | some text | + | some text | zz --> | line with cursor | + | some text | | some text | + | some text | | some text | + | line with cursor | | some text | + +------------------+ +------------------+ + +The "zt" command puts the cursor line at the top, "zb" at the bottom. There +are a few more scrolling commands, see |Q_sc|. To always keep a few lines of +context around the cursor, use the 'scrolloff' option. + +============================================================================== +*03.8* Simple searches + +To search for a string, use the "/string" command. To find the word include, +for example, use the command: > + + /include + +You will notice that when you type the "/" the cursor jumps to the last line +of the Vim window, like with colon commands. That is where you type the word. +You can press the backspace key (backarrow or <BS>) to make corrections. Use +the <Left> and <Right> cursor keys when necessary. + Pressing <Enter> executes the command. + + Note: + The characters .*[]^%/\?~$ have special meaning. If you want to use + them in a search you must put a \ in front of them. See below. + +To find the next occurrence of the same string use the "n" command. Use this +to find the first #include after the cursor: > + + /#include + +And then type "n" several times. You will move to each #include in the text. +You can also use a count if you know which match you want. Thus "3n" finds +the third match. Using a count with "/" doesn't work. + +The "?" command works like "/" but searches backwards: > + + ?word + +The "N" command repeats the last search the opposite direction. Thus using +"N" after a "/" command search backwards, using "N" after "?" searches +forward. + + +IGNORING CASE + +Normally you have to type exactly what you want to find. If you don't care +about upper or lowercase in a word, set the 'ignorecase' option: > + + :set ignorecase + +If you now search for "word", it will also match "Word" and "WORD". To match +case again: > + + :set noignorecase + + +HISTORY + +Suppose you do three searches: > + + /one + /two + /three + +Now let's start searching by typing a simple "/" without pressing <Enter>. If +you press <Up> (the cursor key), Vim puts "/three" on the command line. +Pressing <Enter> at this point searches for three. If you do not press +<Enter>, but press <Up> instead, Vim changes the prompt to "/two". Another +press of <Up> moves you to "/one". + You can also use the <Down> cursor key to move through the history of +search commands in the other direction. + +If you know what a previously used pattern starts with, and you want to use it +again, type that character before pressing <Up>. With the previous example, +you can type "/o<Up>" and Vim will put "/one" on the command line. + +The commands starting with ":" also have a history. That allows you to recall +a previous command and execute it again. These two histories are separate. + + +SEARCHING FOR A WORD IN THE TEXT + +Suppose you see the word "TheLongFunctionName" in the text and you want to +find the next occurrence of it. You could type "/TheLongFunctionName", but +that's a lot of typing. And when you make a mistake Vim won't find it. + There is an easier way: Position the cursor on the word and use the "*" +command. Vim will grab the word under the cursor and use it as the search +string. + The "#" command does the same in the other direction. You can prepend a +count: "3*" searches for the third occurrence of the word under the cursor. + + +SEARCHING FOR WHOLE WORDS + +If you type "/the" it will also match "there". To only find words that end +in "the" use: > + + /the\> + +The "\>" item is a special marker that only matches at the end of a word. +Similarly "\<" only matches at the begin of a word. Thus to search for the +word "the" only: > + + /\<the\> + +This does not match "there" or "soothe". Notice that the "*" and "#" commands +use these start-of-word and end-of-word markers to only find whole words (you +can use "g*" and "g#" to match partial words). + + +HIGHLIGHTING MATCHES + +While editing a program you see a variable called "nr". You want to check +where it's used. You could move the cursor to "nr" and use the "*" command +and press "n" to go along all the matches. + There is another way. Type this command: > + + :set hlsearch + +If you now search for "nr", Vim will highlight all matches. That is a very +good way to see where the variable is used, without the need to type commands. + To switch this off: > + + :set nohlsearch + +Then you need to switch it on again if you want to use it for the next search +command. If you only want to remove the highlighting, use this command: > + + :nohlsearch + +This doesn't reset the option. Instead, it disables the highlighting. As +soon as you execute a search command, the highlighting will be used again. +Also for the "n" and "N" commands. + + +TUNING SEARCHES + +There are a few options that change how searching works. These are the +essential ones: +> + :set incsearch + +This makes Vim display the match for the string while you are still typing it. +Use this to check if the right match will be found. Then press <Enter> to +really jump to that location. Or type more to change the search string. +> + :set nowrapscan + +This stops the search at the end of the file. Or, when you are searching +backwards, at the start of the file. The 'wrapscan' option is on by default, +thus searching wraps around the end of the file. + + +INTERMEZZO + +If you like one of the options mentioned before, and set it each time you use +Vim, you can put the command in your Vim startup file. + Edit the file, as mentioned at |not-compatible|. Or use this command to +find out where it is: > + + :scriptnames + +Edit the file, for example with: > + + :edit ~/.vimrc + +Then add a line with the command to set the option, just like you typed it in +Vim. Example: > + + Go:set hlsearch<Esc> + +"G" moves to the end of the file. "o" starts a new line, where you type the +":set" command. You end insert mode with <Esc>. Then write the file: > + + ZZ + +If you now start Vim again, the 'hlsearch' option will already be set. + +============================================================================== +*03.9* Simple search patterns + +The Vim editor uses regular expressions to specify what to search for. +Regular expressions are an extremely powerful and compact way to specify a +search pattern. Unfortunately, this power comes at a price, because regular +expressions are a bit tricky to specify. + In this section we mention only a few essential ones. More about search +patterns and commands in chapter 27 |usr_27.txt|. You can find the full +explanation here: |pattern|. + + +BEGINNING AND END OF A LINE + +The ^ character matches the beginning of a line. On an English-US keyboard +you find it above the 6. The pattern "include" matches the word include +anywhere on the line. But the pattern "^include" matches the word include +only if it is at the beginning of a line. + The $ character matches the end of a line. Therefore, "was$" matches the +word was only if it is at the end of a line. + +Let's mark the places where "the" matches in this example line with "x"s: + + the solder holding one of the chips melted and the ~ + xxx xxx xxx + +Using "/the$" we find this match: + + the solder holding one of the chips melted and the ~ + xxx + +And with "/^the" we find this one: + the solder holding one of the chips melted and the ~ + xxx + +You can try searching with "/^the$", it will only match a single line +consisting of "the". White space does matter here, thus if a line contains a +space after the word, like "the ", the pattern will not match. + + +MATCHING ANY SINGLE CHARACTER + +The . (dot) character matches any existing character. For example, the +pattern "c.m" matches a string whose first character is a c, whose second +character is anything, and whose the third character is m. Example: + + We use a computer that became the cummin winter. ~ + xxx xxx xxx + + +MATCHING SPECIAL CHARACTERS + +If you really want to match a dot, you must avoid its special meaning by +putting a backslash before it. + If you search for "ter.", you will find these matches: + + We use a computer that became the cummin winter. ~ + xxxx xxxx + +Searching for "ter\." only finds the second match. + +============================================================================== +*03.10* Using marks + +When you make a jump to a position with the "G" command, Vim remembers the +position from before this jump. This position is called a mark. To go back +where you came from, use this command: > + + `` + +This ` is a backtick or open single-quote character. + If you use the same command a second time you will jump back again. That's +because the ` command is a jump itself, and the position from before this jump +is remembered. + +Generally, every time you do a command that can move the cursor further than +within the same line, this is called a jump. This includes the search +commands "/" and "n" (it doesn't matter how far away the match is). But not +the character searches with "fx" and "tx" or the word movements "w" and "e". + Also, "j" and "k" are not considered to be a jump. Even when you use a +count to make them move the cursor quite a long way away. + +The `` command jumps back and forth, between two points. The CTRL-O command +jumps to older positions (Hint: O for older). CTRL-I then jumps back to newer +positions (Hint: I is just next to O on the keyboard). Consider this sequence +of commands: > + + 33G + /^The + CTRL-O + +You first jump to line 33, then search for a line that starts with "The". +Then with CTRL-O you jump back to line 33. Another CTRL-O takes you back to +where you started. If you now use CTRL-I you jump to line 33 again. And +to the match for "The" with another CTRL-I. + + + | example text ^ | + 33G | example text | CTRL-O | CTRL-I + | example text | | + V line 33 text ^ V + | example text | | + /^The | example text | CTRL-O | CTRL-I + V There you are | V + example text + + Note: + CTRL-I is the same as <Tab>. + +The ":jumps" command gives a list of positions you jumped to. The entry which +you used last is marked with a ">". + + +NAMED MARKS + +Vim enables you to place your own marks in the text. The command "ma" marks +the place under the cursor as mark a. You can place 26 marks (a through z) in +your text. You can't see them, it's just a position that Vim remembers. + To go to a mark, use the command `{mark}, where "{mark} is the mark letter. +Thus to move to the a mark: +> + `a + +The command 'mark (single quotation mark, or apostrophe) moves you to the +beginning of the line containing the mark. This differs from the `mark +command, which moves you to marked column. + +The marks can be very useful when working on two related parts in a file. +Suppose you have some text near the start of the file you need to look at, +while working on some text near the end of the file. + Move to the text at the start and place the s (start) mark there: > + + ms + +The move to the text you want to work on and put the e (end) mark there: > + + me + +Now you can move around, and when you want to look at the start of the file, +you use this to jump there: > + + 's + +Then you can use '' to jump back to where you were, or 'e to jump to the text +you were working on at the end. + There is nothing special about using s for start and e for end, they are +just easy to remember. + +You can use this command to get a list of marks: > + + :marks + +You will notice a few special marks. These include: + + ' The cursor position before doing a jump + " The cursor position when last editing the file + [ Start of the last change + ] End of the last change + +============================================================================== + +Next chapter: |usr_04.txt| Making small changes + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_04.txt b/en/usr_04.txt new file mode 100644 index 000000000..dd9667d8c --- /dev/null +++ b/en/usr_04.txt @@ -0,0 +1,514 @@ +*usr_04.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + VIM USER MANUAL - by Bram Moolenaar + + Making small changes + + +This chapter shows you several ways of making corrections and moving text +around. It teaches you the three basic ways to change text: operator-motion, +Visual mode and text objects. + +|04.1| Operators and motions +|04.2| Changing text +|04.3| Repeating a change +|04.4| Visual mode +|04.5| Moving text +|04.6| Copying text +|04.7| Using the clipboard +|04.8| Text objects +|04.9| Replace mode +|04.10| Conclusion + + Next chapter: |usr_05.txt| Set your settings + Previous chapter: |usr_03.txt| Moving around +Table of contents: |usr_toc.txt| + +============================================================================== +*04.1* Operators and motions + +In chapter 2 you learned the "x" command to delete a single character. And +using a count: "4x" deletes four characters. + The "dw" command deletes a word. You may recognize the "w" command as the +move word command. In fact, the "d" command may be followed by any motion +command, and it deletes from the current location to the place where the +cursor winds up. + The "4w" command, for example, moves the cursor over four words. The d4w +command deletes four words. + + To err is human. To really foul up you need a computer. ~ + ------------------> + d4w + + To err is human. you need a computer. ~ + +Vim only deletes up to the position where the motion takes the cursor. That's +because Vim knows that you probably don't want to delete the first character +of a word. If you use the "e" command to move to the end of a word, Vim +guesses that you do want to include that last character: + + To err is human. you need a computer. ~ + --------> + d2e + + To err is human. a computer. ~ + +Whether the character under the cursor is included depends on the command you +used to move to that character. The reference manual calls this "exclusive" +when the character isn't included and "inclusive" when it is. + +The "$" command moves to the end of a line. The "d$" command deletes from the +cursor to the end of the line. This is an inclusive motion, thus the last +character of the line is included in the delete operation: + + To err is human. a computer. ~ + ------------> + d$ + + To err is human ~ + +There is a pattern here: operator-motion. You first type an operator command. +For example, "d" is the delete operator. Then you type a motion command like +"4l" or "w". This way you can operate on any text you can move over. + +============================================================================== +*04.2* Changing text + +Another operator is "c", change. It acts just like the "d" operator, except +it leaves you in Insert mode. For example, "cw" changes a word. Or more +specifically, it deletes a word and then puts you in Insert mode. + + To err is human ~ + -------> + c2wbe<Esc> + + To be human ~ + +This "c2wbe<Esc>" contains these bits: + + c the change operator + 2w move two words (they are deleted and Insert mode started) + be insert this text + <Esc> back to Normal mode + +If you have paid attention, you will have noticed something strange: The space +before "human" isn't deleted. There is a saying that for every problem there +is an answer that is simple, clear, and wrong. That is the case with the +example used here for the "cw" command. The c operator works just like the +d operator, with one exception: "cw". It actually works like "ce", change to +end of word. Thus the space after the word isn't included. This is an +exception that dates back to the old Vi. Since many people are used to it +now, the inconsistency has remained in Vim. + + +MORE CHANGES + +Like "dd" deletes a whole line, "cc" changes a whole line. It keeps the +existing indent (leading white space) though. + +Just like "d$" deletes until the end of the line, "c$" changes until the end +of the line. It's like doing "d$" to delete the text and then "a" to start +Insert mode and append new text. + + +SHORTCUTS + +Some operator-motion commands are used so often that they have been given a +single letter command: + + x stands for dl (delete character under the cursor) + X stands for dh (delete character left of the cursor) + D stands for d$ (delete to end of the line) + C stands for c$ (change to end of the line) + s stands for cl (change one character) + S stands for cc (change a whole line) + + +WHERE TO PUT THE COUNT + +The commands "3dw" and "d3w" delete three words. If you want to get really +picky about things, the first command, "3dw", deletes one word three times; +the command "d3w" deletes three words once. This is a difference without a +distinction. You can actually put in two counts, however. For example, +"3d2w" deletes two words, repeated three times, for a total of six words. + + +REPLACING WITH ONE CHARACTER + +The "r" command is not an operator. It waits for you to type a character, and +will replace the character under the cursor with it. You could do the same +with "cl" or with the "s" command, but with "r" you don't have to press <Esc> + + there is somerhing grong here ~ + rT rt rw + + There is something wrong here ~ + +Using a count with "r" causes that many characters to be replaced with the +same character. Example: + + There is something wrong here ~ + 5rx + + There is something xxxxx here ~ + +To replace a character with a line break use "r<Enter>". This deletes one +character and inserts a line break. Using a count here only applies to the +number of characters deleted: "4r<Enter>" replaces four characters with one +line break. + +============================================================================== +*04.3* Repeating a change + +The "." command is one of the most simple yet powerful commands in Vim. It +repeats the last change. For instance, suppose you are editing an HTML file +and want to delete all the <B> tags. You position the cursor on the first < +and delete the <B> with the command "df>". You then go to the < of the next +</B> and kill it using the "." command. The "." command executes the last +change command (in this case, "df>"). To delete another tag, position the +cursor on the < and use the "." command. + + To <B>generate</B> a table of <B>contents ~ + f< find first < ---> + df> delete to > --> + f< find next < ---------> + . repeat df> ---> + f< find next < -------------> + . repeat df> --> + +The "." command works for all changes you make, except for the "u" (undo), +CTRL-R (redo) and commands that start with a colon (:). + +Another example: You want to change the word "four" to "five". It appears +several times in your text. You can do this quickly with this sequence of +commands: + + /four<Enter> find the first string "four" + cwfive<Esc> change the word to "five" + n find the next "four" + . repeat the change to "five' + n find the next "four" + . repeat the change + etc. + +============================================================================== +*04.4* Visual mode + +To delete simple items the operator-motion changes work quite well. But often +it's not so easy to decide which command will move over the text you want to +change. Then you can use Visual mode. + +You start Visual mode by pressing "v". You move the cursor over the text you +want to work on. While you do this, the text is highlighted. Finally type +the operator command. + For example, to delete from halfway one word to halfway another word: + + This is an examination sample of visual mode ~ + ----------> + velllld + + This is an example of visual mode ~ + +When doing this you don't really have to count how many times you have to +press "l" to end up in the right position. You can immediately see what text +will be deleted when you press "d". + +If at any time you decide you don't want to do anything with the highlighted +text, just press <Esc> and Visual mode will stop without doing anything. + + +SELECTING LINES + +If you want to work on whole lines, use "V" to start Visual mode. You will +see right away that the whole line is highlighted, without moving around. +When you move left or right nothing changes. When you move up or down the +selection is extended whole lines at a time. + For example, select three lines with "Vjj": + + +------------------------+ + | text more text | + >> | more text more text | | + selected lines >> | text text text | | Vjj + >> | text more | V + | more text more | + +------------------------+ + + +SELECTING BLOCKS + +If you want to work on a rectangular block of characters, use CTRL-V to start +Visual mode. This is very useful when working on tables. + + name Q1 Q2 Q3 + pierre 123 455 234 + john 0 90 39 + steve 392 63 334 + +To delete the middle "Q2" column, move the cursor to the "Q" of "Q2". Press +CTRL-V to start blockwise Visual mode. Now move the cursor three lines down +with "3j" and to the next word with "w". You can see the first character of +the last column is included. To exclude it, use "h". Now press "d" and the +middle column is gone. + + +GOING TO THE OTHER SIDE + +If you have selected some text in Visual mode, and discover that you need to +change the other end of the selection, use the "o" command (Hint: o for other +end). The cursor will go to the other end, and you can move the cursor to +change where the selection starts. Pressing "o" again brings you back to the +other end. + +When using blockwise selection, you have four corners. "o" only takes you to +one of the other corners, diagonally. Use "O" to move to the other corner in +the same line. + +Note that "o" and "O" in Visual mode work very different from Normal mode, +where they open a new line below or above the cursor. + +============================================================================== +*04.5* Moving text + +When you delete something with the "d", "x", or another command, the text is +saved. You can paste it back by using the p command. (The Vim name for +this is put). + Take a look at how this works. First you will delete an entire line, by +putting the cursor on the line you want to delete and typing "dd". Now you +move the cursor to where you want to put the line and use the "p" (put) +command. The line is inserted on the line below the cursor. + + a line a line a line + line 2 dd line 3 p line 3 + line 3 line 2 + +Because you deleted an entire line, the "p" command placed the text line below +the cursor. If you delete part of a line (a word, for instance), the "p" +command puts it just after the cursor. + + Some more boring try text to out commands. ~ + ----> + dw + + Some more boring text to out commands. ~ + -------> + welp + + Some more boring text to try out commands. ~ + + +MORE ON PUTTING + +The "P" command puts text like "p", but before the cursor. When you deleted a +whole line with "dd", "P" will put it back above the cursor. When you deleted +a word with "dw", "P" will put it back just before the cursor. + +You can repeat putting as many times as you like. The same text will be used. + +You can use a count with "p" and "P". The text will be repeated as many times +as specified with the count. Thus "dd" and then "3p" puts three copies of the +same deleted line. + + +SWAPPING TWO CHARACTERS + +Frequently when you are typing, your fingers get ahead of your brain (or the +other way around?). The result is a typo such as "teh" for "the". Vim +makes it easy to correct such problems. Just put the cursor on the e of "teh" +and execute the command "xp". This works as follows: "x" deletes the +character e and places it in a register. "p" puts the text after the cursor, +which is after the h. + + teh th the ~ + x p + +============================================================================== +*04.6* Copying text + +To copy text from one place to another, you could delete it, use "u" to undo +the deletion and then "p" to put it somewhere else. There is an easier way: +yanking. The "y" operator copies text into a register. Then a "p" command +can be used to put it. + Yanking is just a Vim name for copying. The "c" letter was already used +for the change operator, and "y" was still available. Calling this +operator "yank" made it easier to remember to use the "y" key. + +Since "y" is an operator, you use "yw" to yank a word. A count is possible as +usual. To yank two workds use "y2w". Example: + + let sqr = LongVariable * ~ + --------------> + y2w + + let sqr = LongVariable * ~ + p + + let sqr = LongVariable * LongVariable ~ + +Notice that "yw" includes the white space after a word. If you don't want +this, use "ye". + +The "yy" command yanks a whole line, just like "dd" deletes a whole line. +Unexpectedly, while "D" deletes from the cursor to the end of the line, "Y" +works like "yy", it yanks the whole line. Watch out for this inconsistency! +Use "y$" to yank to the end of the line. + + a text line yy a text line a text line + line 2 line 2 p line 2 + last line last line a text line + last line + +============================================================================== +*04.7* Using the clipboard + +If you are using the GUI version of Vim (gvim), you can find the "Copy" item +in the "Edit" menu. First select some text with Visual mode, then use the +Edit/Copy menu. The selected text is now copied to the clipboard. You can +paste the text in other programs. In Vim itself too. + +If you have copied text to the clipboard in another application, you can paste +it in Vim with the Edit/Paste menu. This works in Normal mode and Insert +mode. In Visual mode the selected text is replaced with the pasted text. + +The "Cut" menu item deletes the text before it's put on the clipboard. The +"Copy", "Cut" and "Paste" items are also available in the popup menu (only +when there is a popup menu, of course). If your Vim has a toolbar, you can +also find these items there. + +If you are not using the GUI, or if you don't like using a menu, you have to +use another way. You use the normal "y" (yank) and "p" (put) commands, but +prepend "* (double-quote star) before it. To copy a line to the clipboard: > + + "*yy + +To put text from the clipboard back into the text: > + + "*p + +This only works on versions of Vim that include clipboard support. More about +the clipboard in section |09.3| and here: |clipboard|. + +============================================================================== +*04.8* Text objects + +If the cursor is in the middle of a word and want to delete that word, you +need to move back to its start before you can do "dw". There is a simpler way +to do this: "daw". + + this is some example text. ~ + daw + + this is some text. ~ + +The "d" of "daw" is the delete operator. "aw" is a text object. Hint: "aw" +stands for "A Word". Thus "daw" is "Delete A Word". To be precise, the white +space after the word is also deleted (the white space before the word at the +end of the line). + +Using text objects is the third way to make changes in Vim. We already had +operator-motion and Visual mode. Now we add operator-text object. + It is very similar to operator-motion, but instead of operating on the text +between the cursor position before and after a movement command, the text +object is used as a whole. It doesn't matter where in the object the cursor +was. + +To change a whole sentence use "cis". Take this text: + + Hello there. This ~ + is an example. Just ~ + some text. ~ + +Move to the start of the second line, on "is an". Now use "cis": + + Hello there. Just ~ + some text. ~ + +The cursor is in between the blanks in the first line. Now you type the new +sentence "Another line.": + + Hello there. Another line. Just ~ + some text. ~ + +"cis" consists of the "c" (change) operator and the "is" text object. This +stands for "Inner Sentence". There is also the "as" (a sentence) object. The +difference is that "as" includes the white space after the sentence and "is" +doesn't. If you would delete a sentence, you want to delete the white space +at the same time, thus use "das". If you want to type new text the white +space can remain, thus you use "cis". + +You can also use text objects in Visual mode. It will include the text object +in the Visual selection. Visual mode continues, thus you can do this several +times. For example, start Visual mode with "v" and select a sentence with +"as". Now you can repeat "as" to include more sentences. Finally you use an +operator to do something with the selected sentences. + +You can find a long list of text objects here: |text-objects|. + +============================================================================== +*04.9* Replace mode + +The "R" command causes Vim to enter replace mode. In this mode, each +character you type replaces the one under the cursor. This continues until +you type <Esc>. + In this example you start Replace mode on the first "t" of "text": + + This is text. ~ + Rinteresting.<Esc> + + This is interesting. ~ + +You may have noticed that this command replaced 5 characters in the line with +twelve others. The "R" command automatically extends the line if it runs out +of characters to replace. It will not continue on the next line. + +You can switch between Insert mode and Replace mode with the <Insert> key. + +When you use <BS> (backspace) to make correction, you will notice that the +old text is put back. Thus it works like an undo command for the last typed +character. + +============================================================================== +*04.10* Conclusion + +The operators, movement commands and text objects give you the possibility to +make lots of combinations. Now that you know how it works, you can use N +operators with M movement commands to make N * M commands! + +You can find a list of operators here: |operator| + +For example, there are many other ways to delete pieces of text. Here are a +few often used ones: + +x delete character under the cursor (short for "dl") +X delete character before the cursor (short for "dh") +D delete from cursor to end of line (short for "d$") +dw delete from cursor to next start of word +db delete from cursor to previous start of word +diw delete word under the cursor (excluding white space) +daw delete word under the cursor (including white space) +dG delete until the end of the file +dgg delete until the start of the file + +If you use "c" instead of "d" they become change commands. And with "y" you +yank the text. And so forth. + + +There are a few often used commands to make changes that didn't fit somewhere +else: + + ~ change case of the character under the cursor, and move the + cursor to the next character. This is not an operator (unless + 'tildeop' is set), thus you can't use it with a motion + command. It does works in Visual mode and changes case for + all the selected text then. + + I Start Insert mode after moving the cursor to the first + non-blank in the line. + + A Start Insert mode after moving the cursor to the end of the + line. + +============================================================================== + +Next chapter: |usr_05.txt| Set your settings + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_05.txt b/en/usr_05.txt new file mode 100644 index 000000000..19b3c0921 --- /dev/null +++ b/en/usr_05.txt @@ -0,0 +1,616 @@ +*usr_05.txt* For Vim version 6.3. Last change: 2004 Mar 12 + + VIM USER MANUAL - by Bram Moolenaar + + Set your settings + + +Vim can be tuned to work like you want it to. This chapter shows you how to +make Vim start with options set to different values. Add plugins to extend +Vims capabilities. Or define your own macros. + +|05.1| The vimrc file +|05.2| The example vimrc file explained +|05.3| Simple mappings +|05.4| Adding a plugin +|05.5| Adding a help file +|05.6| The option window +|05.7| Often used options + + Next chapter: |usr_06.txt| Using syntax highlighting + Previous chapter: |usr_04.txt| Making small changes +Table of contents: |usr_toc.txt| + +============================================================================== +*05.1* The vimrc file *vimrc-intro* + +You probably got tired of typing commands that you use very often. To start +with all your favorite option settings and mappings, you write them in what is +called the vimrc file. Vim reads this file when it starts up. + +If you have trouble finding your vimrc file, use this command: > + + :scriptnames + +One of the first files in the list should be called ".vimrc" or "_vimrc" and +is located in your home directory. + If you don't have a vimrc file yet, see |vimrc| to find out where you can +create a vimrc file. Also, the ":version" command mentions the name of the +"user vimrc file" Vim looks for. + +For Unix this file is always used: > + + ~/.vimrc + +For MS-DOS and MS-Windows it is mostly one of these: > + + $HOME/_vimrc + $VIM/_vimrc + +The vimrc file can contain all the commands that you type after a colon. The +most simple ones are for setting options. For example, if you want Vim to +always start with the 'incsearch' option on, add this line you your vimrc +file: > + + set incsearch + +For this new line to take effect you need to exit Vim and start it again. +Later you will learn how to do this without exiting Vim. + +This chapter only explains the most basic items. For more information on how +to write a Vim script file: |usr_41.txt|. + +============================================================================== +*05.2* The example vimrc file explained *vimrc_example.vim* + +In the first chapter was explained how the example vimrc (included in the +Vim distribution) file can be used to make Vim startup in not-compatible mode +(see |not-compatible|). The file can be found here: + + $VIMRUNTIME/vimrc_example.vim ~ + +In this section we will explain the various commands used in this file. This +will give you hints about how to set up your own preferences. Not everything +will be explained though. Use the ":help" command to find out more. + +> + set nocompatible + +As mentioned in the first chapter, these manuals explain Vim working in an +improved way, thus not completely Vi compatible. Setting the 'compatible' +option off, thus 'nocompatible' takes care of this. + +> + set backspace=indent,eol,start + +This specifies where in Insert mode the <BS> is allowed to delete the +character in front of the cursor. The three items, separated by commas, tell +Vim to delete the white space at the start of the line, a line break and the +character before where Insert mode started. +> + + set autoindent + +This makes Vim use the indent of the previous line for a newly created line. +Thus there is the same amount of white space before the new line. For example +when pressing <Enter> in Insert mode, and when using the "o" command to open a +new line. +> + + if has("vms") + set nobackup + else + set backup + endif + +This tells Vim to keep a backup copy of a file when overwriting it. But not +on the VMS system, since it keeps old versions of files already. The backup +file will have the same name as the original file with "~" added. See |07.4| +> + + set history=50 + +Keep 50 commands and 50 search patterns in the history. Use another number if +you want to remember fewer or more lines. +> + + set ruler + +Always display the current cursor position in the lower right corner of the +Vim window. + +> + set showcmd + +Display an incomplete command in the lower right corner of the Vim window, +left of the ruler. For example, when you type "2f", Vim is waiting for you to +type the character to find and "2f" is displayed. When you press "w" next, +the "2fw" command is executed and the displayed "2f" is removed. + + +-------------------------------------------------+ + |text in the Vim window | + |~ | + |~ | + |-- VISUAL -- 2f 43,8 17% | + +-------------------------------------------------+ + ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + 'showmode' 'showcmd' 'ruler' + +> + set incsearch + +Display the match for a search pattern when halfway typing it. + +> + map Q gq + +This defines a key mapping. More about that in the next section. This +defines the "Q" command to do formatting with the "gq" operator. This is how +it worked before Vim 5.0. Otherwise the "Q" command starts Ex mode, but you +will not need it. + +> + vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc> + +This is a complicated mapping. It will not be explained how it works here. +What it does is to make "p" in Visual mode overwrite the selected text with +the previously yanked text. You can see that mappings can be used to do quite +complicated things. Still, it is just a sequence of commands that are +executed like you typed them. + +> + if &t_Co > 2 || has("gui_running") + syntax on + set hlsearch + endif + +This switches on syntax highlighting, but only if colors are available. And +the 'hlsearch' option tells Vim to highlight matches with the last used search +pattern. The "if" command is very useful to set options only when some +condition is met. More about that in |usr_41.txt|. + + *vimrc-filetype* > + filetype plugin indent on + +This switches on three very clever mechanisms: +1. Filetype detection. + Whenever you start editing a file, Vim will try to figure out what kind of + file this is. When you edit "main.c", Vim will see the ".c" extension and + recognize this as a "c" filetype. When you edit a file that starts with + "#!/bin/sh", Vim will recognize it as a "sh" filetype. + The filetype detection is used for syntax highlighting and the other two + items below. + See |filetypes|. + +2. Using filetype plugin files + Many different filetypes are edited with different options. For example, + when you edit a "c" file, it's very useful to set the 'cindent' option to + automatically indent the lines. These commonly useful option settings are + included with Vim in filetype plugins. You can also add your own, see + |write-filetype-plugin|. + +3. Using indent files + When editing programs, the indent of a line can often be computed + automatically. Vim comes with these indent rules for a number of + filetypes. See |:filetype-indent-on| and 'indentexpr'. + +> + autocmd FileType text setlocal textwidth=78 + +This makes Vim break text to avoid lines getting longer than 78 characters. +But only for files that have been detected to be plain text. There are +actually two parts here. "autocmd FileType text" is an autocommand. This +defines that when the file type is set to "text" the following command is +automatically executed. "setlocal textwidth=78" sets the 'textwidth' option +to 78, but only locally in one file. +> + + autocmd BufReadPost * + \ if line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal g`\"" | + \ endif + +Another autocommand. This time it is used after reading any file. The +complicated stuff after it checks if the '" mark is defined, and jumps to it +if so. The backslash at the start of a line is used to continue the command +from the previous line. That avoids a line getting very long. +See |line-continuation|. This only works in a Vim script file, not when +typing commands at the command-line. + +============================================================================== +*05.3* Simple mappings + +A mapping enables you to bind a set of Vim commands to a single key. Suppose, +for example, that you need to surround certain words with curly braces. In +other words, you need to change a word such as "amount" into "{amount}". With +the :map command, you can tell Vim that the F5 key does this job. The command +is as follows: > + + :map <F5> i{<Esc>ea}<Esc> +< + Note: + When entering this command, you must enter <F5> by typing four + characters. Similarly, <Esc> is not entered by pressing the <Esc> + key, but by typing five characters. Watch out for this difference + when reading the manual! + +Let's break this down: + <F5> The F5 function key. This is the trigger key that causes the + command to be executed as the key is pressed. + + i{<Esc> Insert the { character. The <Esc> key ends Insert mode. + + e Move to the end of the word. + + a}<Esc> Append the } to the word. + +After you execute the ":map" command, all you have to do to put {} around a +word is to put the cursor on the first character and press F5. + +In this example, the trigger is a single key; it can be any string. But when +you use an existing Vim command, that command will no longer be available. +You better avoid that. + One key that can be used with mappings is the backslash. Since you +probably want to define more than one mapping, add another character. You +could map "\p" to add parens around a word, and "\c" to add curly braces, for +example: > + + :map \p i(<Esc>ea)<Esc> + :map \c i{<Esc>ea}<Esc> + +You need to type the \ and the p quickly after another, so that Vim knows they +belong together. + +The ":map" command (with no arguments) lists your current mappings. At +least the ones for Normal mode. More about mappings in section |40.1|. + +============================================================================== +*05.4* Adding a plugin *add-plugin* *plugin* + +Vim's functionality can be extended by adding plugins. A plugin is nothing +more than a Vim script file that is loaded automatically when Vim starts. You +can add a plugin very easily by dropping it in your plugin directory. +{not available when Vim was compiled without the |+eval| feature} + +There are two types of plugins: + + global plugin: Used for all kinds of files + filetype plugin: Only used for a specific type of file + +The global plugins will be discussed first, then the filetype ones +|add-filetype-plugin|. + + +GLOBAL PLUGINS *standard-plugin* + +When you start Vim, it will automatically load a number of global plugins. +You don't have to do anything for this. They add functionality that most +people will want to use, but which was implemented as a Vim script instead of +being compiled into Vim. You can find them listed in the help index +|standard-plugin-list|. Also see |load-plugins|. + + *add-global-plugin* +You can add a global plugin to add functionality that will always be present +when you use Vim. There are only two steps for adding a global plugin: +1. Get a copy of the plugin. +2. Drop it in the right directory. + + +GETTING A GLOBAL PLUGIN + +Where can you find plugins? +- Some come with Vim. You can find them in the directory $VIMRUNTIME/macros + and its sub-directories. +- Download from the net, check out http://vim.sf.net. +- They are sometimes posted in a Vim |maillist|. +- You could write one yourself, see |write-plugin|. + + +USING A GLOBAL PLUGIN + +First read the text in the plugin itself to check for any special conditions. +Then copy the file to your plugin directory: + + system plugin directory ~ + Unix ~/.vim/plugin/ + PC and OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin + Amiga s:vimfiles/plugin + Macintosh $VIM:vimfiles:plugin + Mac OS X ~/.vim/plugin/ + RISC-OS Choices:vimfiles.plugin + +Example for Unix (assuming you didn't have a plugin directory yet): > + + mkdir ~/.vim + mkdir ~/.vim/plugin + cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin + +That's all! Now you can use the commands defined in this plugin to justify +text. + + +FILETYPE PLUGINS *add-filetype-plugin* *ftplugins* + +The Vim distribution comes with a set of plugins for different filetypes that +you can start using with this command: > + + :filetype plugin on + +That's all! See |vimrc-filetype|. + +If you are missing a plugin for a filetype you are using, or you found a +better one, you can add it. There are two steps for adding a filetype plugin: +1. Get a copy of the plugin. +2. Drop it in the right directory. + + +GETTING A FILETYPE PLUGIN + +You can find them in the same places as the global plugins. Watch out if the +type of file is mentioned, then you know if the plugin is a global or a +filetype one. The scripts in $VIMRUNTIME/macros are global ones, the filetype +plugins are in $VIMRUNTIME/ftplugin. + + +USING A FILETYPE PLUGIN *ftplugin-name* + +You can add a filetype plugin by dropping it in the right directory. The +name of this directory is in the same directory mentioned above for global +plugins, but the last part is "ftplugin". Suppose you have found a plugin for +the "stuff" filetype, and you are on Unix. Then you can move this file to the +ftplugin directory: > + + mv thefile ~/.vim/ftplugin/stuff.vim + +If that file already exists you already have a plugin for "stuff". You might +want to check if the existing plugin doesn't conflict with the one you are +adding. If it's OK, you can give the new one another name: > + + mv thefile ~/.vim/ftplugin/stuff_too.vim + +The underscore is used to separate the name of the filetype from the rest, +which can be anything. If you would use "otherstuff.vim" it wouldn't work, it +would be loaded for the "otherstuff" filetype. + +On MS-DOS you cannot use long filenames. You would run into trouble if you +add a second plugin and the filetype has more than six characters. You can +use an extra directory to get around this: > + + mkdir $VIM/vimfiles/ftplugin/fortran + copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim + +The generic names for the filetype plugins are: > + + ftplugin/<filetype>.vim + ftplugin/<filetype>_<name>.vim + ftplugin/<filetype>/<name>.vim + +Here "<name>" can be any name that you prefer. +Examples for the "stuff" filetype on Unix: > + + ~/.vim/ftplugin/stuff.vim + ~/.vim/ftplugin/stuff_def.vim + ~/.vim/ftplugin/stuff/header.vim + +The <filetype> part is the name of the filetype the plugin is to be used for. +Only files of this filetype will use the settings from the plugin. The <name> +part of the plugin file doesn't matter, you can use it to have several plugins +for the same filetype. Note that it must end in ".vim". + + +Further reading: +|filetype-plugins| Documentation for the filetype plugins and information + about how to avoid that mappings cause problems. +|load-plugins| When the global plugins are loaded during startup. +|ftplugin-overrule| Overruling the settings from a global plugin. +|write-plugin| How to write a plugin script. +|plugin-details| For more information about using plugins or when your + plugin doesn't work. +|new-filetype| How to detect a new file type. + +============================================================================== +*05.5* Adding a help file *add-local-help* *matchit-install* + +If you are lucky, the plugin you installed also comes with a help file. We +will explain how to install the help file, so that you can easily find help +for your new plugin. + Let us use the "matchit.vim" plugin as an example (it is included with +Vim). This plugin makes the "%" command jump to matching HTML tags, +if/else/endif in Vim scripts, etc. Very useful, although it's not backwards +compatible (that's why it is not enabled by default). + This plugin comes with documentation: "matchit.txt". Let's first copy the +plugin to the right directory. This time we will do it from inside Vim, so +that we can use $VIMRUNTIME. (You may skip some of the "mkdir" commands if +you already have the directory.) > + + :!mkdir ~/.vim + :!mkdir ~/.vim/plugin + :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin + +Now create a "doc" directory in one of the directories in 'runtimepath'. > + + :!mkdir ~/.vim/doc + +Copy the help file to the "doc" directory. > + + :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc + +Now comes the trick, which allows you to jump to the subjects in the new help +file: Generate the local tags file with the |:helptags| command. > + + :helptags ~/.vim/doc + +Now you can use the > + + :help g% + +command to find help for "g%" in the help file you just added. You can see an +entry for the local help file when you do: > + + :help local-additions + +The title lines from the local help files are automagically added to this +section. There you can see which local help files have been added and jump to +them through the tag. + +For writing a local help file, see |write-local-help|. + +============================================================================== +*05.6* The option window + +If you are looking for an option that does what you want, you can search in +the help files here: |options|. Another way is by using this command: > + + :options + +This opens a new window, with a list of options with a one-line explanation. +The options are grouped by subject. Move the cursor to a subject and press +<Enter> to jump there. Press <Enter> again to jump back. Or use CTRL-O. + +You can change the value of an option. For example, move to the "displaying +text" subject. Then move the cursor down to this line: + + set wrap nowrap ~ + +When you hit <Enter>, the line will change to: + + set nowrap wrap ~ + +The option has now been switched off. + +Just above this line is a short description of the 'wrap' option. Move the +cursor one line up to place it in this line. Now hit <Enter> and you jump to +the full help on the 'wrap' option. + +For options that take a number or string argument you can edit the value. +Then press <Enter> to apply the new value. For example, move the cursor a few +lines up to this line: + + set so=0 ~ + +Position the cursor on the zero with "$". Change it into a five with "r5". +Then press <Enter> to apply the new value. When you now move the cursor +around you will notice that the text starts scrolling before you reach the +border. This is what the 'scrolloff' option does, it specifies an offset +from the window border where scrolling starts. + +============================================================================== +*05.7* Often used options + +There are an awful lot of options. Most of them you will hardly ever use. +Some of the more useful ones will be mentioned here. Don't forget you can +find more help on these options with the ":help" command, with single quotes +before and after the option name. For example: > + + :help 'wrap' + +In case you have messed up an option value, you can set it back to the +default by putting a ampersand (&) after the option name. Example: > + + :set iskeyword& + + +NOT WRAPPING LINES + +Vim normally wraps long lines, so that you can see all of the text. Sometimes +it's better to let the text continue right of the window. Then you need to +scroll the text left-right to see all of a long line. Switch wrapping of with +this command: > + + :set nowrap + +Vim will automatically scroll the text when you move to text that is not +displayed. To see a context of ten characters, do this: > + + :set sidescroll=10 + +This doesn't change the text in the file, only the way it is displayed. + + +WRAPPING MOVEMENT COMMANDS + +Most commands for moving around will stop moving at the start and end of a +line. You can change that with the 'whichwrap' option. This sets it to the +default value: > + + :set whichwrap=b,s + +This allows the <BS> key, when used in the first position of a line, to move +the cursor to the end of the previous line. And the <Space> key moves from +the end of a line to the start of the next one. + +To allow the cursor keys <Left> and <Right> to also wrap, use this command: > + + :set whichwrap=b,s,<,> + +This is still only for Normal mode. To let <Left> and <Right> do this in +Insert mode as well: > + + :set whichwrap=b,s,<,>,[,] + +There are a few other flags that can be added, see 'whichwrap'. + + +VIEWING TABS + +When there are tabs in a file, you cannot see where they are. To make them +visible: > + + :set list + +Now every Tab is displayed as ^I. And a $ is displayed at the end of each +line, so that you can spot trailing spaces that would otherwise go unnoticed. + A disadvantage is that this looks ugly when there are many Tabs in a file. +If you have a color terminal, or are using the GUI, Vim can show the spaces +and tabs as highlighted characters. Use the 'listchars' option: > + + :set listchars=tab:>-,trail:- + +Now every tab will be displayed as ">---" (with more or less "-") and trailing +white space as "-". Looks a lot better, doesn't it? + + +KEYWORDS + +The 'iskeyword' option specifies which characters can appear in a word: > + + :set iskeyword +< iskeyword=@,48-57,_,192-255 ~ + +The "@" stands for all alphabetic letters. "48-57" stands for ASCII +characters 48 to 57, which are the numbers 0 to 9. "192-255" are the +printable latin characters. + Sometimes you will want to include a dash in keywords, so that commands +like "w" consider "upper-case" to be one word. You can do it like this: > + + :set iskeyword+=- + :set iskeyword +< iskeyword=@,48-57,_,192-255,- ~ + +If you look at the new value, you will see that Vim has added a comma for you. + To remove a character use "-=". For example, to remove the underscore: > + + :set iskeyword-=_ + :set iskeyword +< iskeyword=@,48-57,192-255,- ~ + +This time a comma is automatically deleted. + + +ROOM FOR MESSAGES + +When Vim starts there is one line at the bottom that is used for messages. +When a message is long, it is either truncated, thus you can only see part of +it, or the text scrolls and you have to press <Enter> to continue. + You can set the 'cmdheight' option to the number of lines used for +messages. Example: > + + :set cmdheight=3 + +This does mean there is less room to edit text, thus it's a compromise. + +============================================================================== + +Next chapter: |usr_06.txt| Using syntax highlighting + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_06.txt b/en/usr_06.txt new file mode 100644 index 000000000..b4020e6bc --- /dev/null +++ b/en/usr_06.txt @@ -0,0 +1,277 @@ +*usr_06.txt* For Vim version 6.3. Last change: 2002 Jul 14 + + VIM USER MANUAL - by Bram Moolenaar + + Using syntax highlighting + + +Black and white text is boring. With colors your file comes to life. This +not only looks nice, it also speeds up your work. Change the colors used for +the different sorts of text. Print your text, with the colors you see on the +screen. + +|06.1| Switching it on +|06.2| No or wrong colors? +|06.3| Different colors +|06.4| With colors or without colors +|06.5| Printing with colors +|06.6| Further reading + + Next chapter: |usr_07.txt| Editing more than one file + Previous chapter: |usr_05.txt| Set your settings +Table of contents: |usr_toc.txt| + +============================================================================== +*06.1* Switching it on + +It all starts with one simple command: > + + :syntax enable + +That should work in most situations to get color in your files. Vim will +automagically detect the type of file and load the right syntax highlighting. +Suddenly comments are blue, keywords brown and strings red. This makes it +easy to overview the file. After a while you will find that black&white text +slows you down! + +If you always want to use syntax highlighting, put the ":syntax enable" +command in your |vimrc| file. + +If you want syntax highlighting only when the terminal supports colors, you +can put this in your |vimrc| file: > + + if &t_Co > 1 + syntax enable + endif + +If you want syntax highlighting only in the GUI version, put the ":syntax +enable" command in your |gvimrc| file. + +============================================================================== +*06.2* No or wrong colors? + +There can be a number of reasons why you don't see colors: + +- Your terminal does not support colors. + Vim will use bold, italic and underlined text, but this doesn't look + very nice. You probably will want to try to get a terminal with + colors. For Unix, I recommend the xterm from the XFree86 project: + |xfree-xterm|. + +- Your terminal does support colors, but Vim doesn't know this. + Make sure your $TERM setting is correct. For example, when using an + xterm that supports colors: > + + setenv TERM xterm-color +< + or (depending on your shell): > + + TERM=xterm-color; export TERM + +< The terminal name must match the terminal you are using. If it + still doesn't work, have a look at |xterm-color|, which shows a few + ways to make Vim display colors (not only for an xterm). + +- The file type is not recognized. + Vim doesn't know all file types, and sometimes it's near to impossible + to tell what language a file uses. Try this command: > + + :set filetype +< + If the result is "filetype=" then the problem is indeed that Vim + doesn't know what type of file this is. You can set the type + manually: > + + :set filetype=fortran + +< To see which types are available, look in the directory + $VIMRUNTIME/syntax. For the GUI you can use the Syntax menu. + Setting the filetype can also be done with a |modeline|, so that the + file will be highlighted each time you edit it. For example, this + line can be used in a Makefile (put it near the start or end of the + file): > + + # vim: syntax=make + +< You might know how to detect the file type yourself. Often the file + name extension (after the dot) can be used. + See |new-filetype| for how to tell Vim to detect that file type. + +- There is no highlighting for your file type. + You could try using a similar file type by manually setting it as + mentioned above. If that isn't good enough, you can write your own + syntax file, see |mysyntaxfile|. + + +Or the colors could be wrong: + +- The colored text is very hard to read. + Vim guesses the background color that you are using. If it is black + (or another dark color) it will use light colors for text. If it is + white (or another light color) it will use dark colors for text. If + Vim guessed wrong the text will be hard to read. To solve this, set + the 'background' option. For a dark background: > + + :set background=dark + +< And for a light background: > + + :set background=light + +< Make sure you put this _before_ the ":syntax enable" command, + otherwise the colors will already have been set. You could do + ":syntax reset" after setting 'background' to make Vim set the default + colors again. + +- The colors are wrong when scrolling bottom to top. + Vim doesn't read the whole file to parse the text. It starts parsing + wherever you are viewing the file. That saves a lot of time, but + sometimes the colors are wrong. A simple fix is hitting CTRL-L. Or + scroll back a bit and then forward again. + For a real fix, see |:syn-sync|. Some syntax files have a way to make + it look further back, see the help for the specific syntax file. For + example, |tex.vim| for the TeX syntax. + +============================================================================== +*06.3* Different colors *:syn-default-override* + +If you don't like the default colors, you can select another color scheme. In +the GUI use the Edit/Color Scheme menu. You can also type the command: > + + :colorscheme evening + +"evening" is the name of the color scheme. There are several others you might +want to try out. Look in the directory $VIMRUNTIME/colors. + +When you found the color scheme that you like, add the ":colorscheme" command +to your |vimrc| file. + +You could also write your own color scheme. This is how you do it: + +1. Select a color scheme that comes close. Copy this file to your own Vim + directory. For Unix, this should work: > + + !mkdir ~/.vim/colors + !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim +< + This is done from Vim, because it knows the value of $VIMRUNTIME. + +2. Edit the color scheme file. These entries are useful: + + term attributes in a B&W terminal + cterm attributes in a color terminal + ctermfg foreground color in a color terminal + ctermbg background color in a color terminal + gui attributes in the GUI + guifg foreground color in the GUI + guibg background color in the GUI + + For example, to make comments green: > + + :highlight Comment ctermfg=green guifg=green +< + Attributes you can use for "cterm" and "gui" are "bold" and "underline". + If you want both, use "bold,underline". For details see the |:highlight| + command. + +3. Tell Vim to always use your color scheme. Put this line in your |vimrc|: > + + colorscheme mine + +If you want to see what the most often used color combinations look like, use +these commands: > + + :edit $VIMRUNTIME/syntax/colortest.vim + :source % + +You will see text in various color combinations. You can check which ones are +readable and look nice. + +============================================================================== +*06.4* With colors or without colors + +Displaying text in color takes a lot of effort. If you find the displaying +too slow, you might want to disable syntax highlighting for a moment: > + + :syntax clear + +When editing another file (or the same one) the colors will come back. + + *:syn-off* +If you want to stop highlighting completely use: > + + :syntax off + +This will completely disable syntax highlighting and remove it immediately for +all buffers. + + *:syn-manual* +If you want syntax highlighting only for specific files, use this: > + + :syntax manual + +This will enable the syntax highlighting, but not switch it on automatically +when starting to edit a buffer. To switch highlighting on for the current +buffer, set the 'syntax' option: > + + :set syntax=ON +< +============================================================================== +*06.5* Printing with colors *syntax-printing* + +In the MS-Windows version you can print the current file with this command: > + + :hardcopy + +You will get the usual printer dialog, where you can select the printer and a +few settings. If you have a color printer, the paper output should look the +same as what you see inside Vim. But when you use a dark background the +colors will be adjusted to look good on white paper. + +There are several options that change the way Vim prints: + 'printdevice' + 'printheader' + 'printfont' + 'printoptions' + +To print only a range of lines, use Visual mode to select the lines and then +type the command: > + + v100j:hardcopy + +"v" starts Visual mode. "100j" moves a hundred lines down, they will be +highlighted. Then ":hardcopy" will print those lines. You can use other +commands to move in Visual mode, of course. + +This also works on Unix, if you have a PostScript printer. Otherwise, you +will have to do a bit more work. You need to convert the text to HTML first, +and then print it from a web browser such as Netscape. + +Convert the current file to HTML with this command: > + + :source $VIMRUNTIME/syntax/2html.vim + +You will see it crunching away, this can take quite a while for a large file. +Some time later another window shows the HTML code. Now write this somewhere +(doesn't matter where, you throw it away later): +> + :write main.c.html + +Open this file in your favorite browser and print it from there. If all goes +well, the output should look exactly as it does in Vim. See |2html.vim| for +details. Don't forget to delete the HTML file when you are done with it. + +Instead of printing, you could also put the HTML file on a web server, and let +others look at the colored text. + +============================================================================== +*06.6* Further reading + +|usr_44.txt| Your own syntax highlighted. +|syntax| All the details. + +============================================================================== + +Next chapter: |usr_07.txt| Editing more than one file + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_07.txt b/en/usr_07.txt new file mode 100644 index 000000000..4a97a6aa5 --- /dev/null +++ b/en/usr_07.txt @@ -0,0 +1,479 @@ +*usr_07.txt* For Vim version 6.3. Last change: 2004 Mar 12 + + VIM USER MANUAL - by Bram Moolenaar + + Editing more than one file + + +No matter how many files you have, you can edit them without leaving Vim. +Define a list of files to work on and jump from one to the other. Copy text +from one file and put it in another one. + +|07.1| Edit another file +|07.2| A list of files +|07.3| Jumping from file to file +|07.4| Backup files +|07.5| Copy text between files +|07.6| Viewing a file +|07.7| Changing the file name + + Next chapter: |usr_08.txt| Splitting windows + Previous chapter: |usr_06.txt| Using syntax highlighting +Table of contents: |usr_toc.txt| + +============================================================================== +*07.1* Edit another file + +So far you had to start Vim for every file you wanted to edit. There is a +simpler way. To start editing another file, use this command: > + + :edit foo.txt + +You can use any file name instead of "foo.txt". Vim will close the current +file and open the new one. If the current file has unsaved changes, however, +Vim displays an error message and does not open the new file: + + E37: No write since last change (use ! to override) ~ + + Note: + Vim puts an error ID at the start of each error message. If you do + not understand the message or what caused it, look in the help system + for this ID. In this case: > + + :help E37 + +At this point, you have a number of alternatives. You can write the file +using this command: > + + :write + +Or you can force Vim to discard your changes and edit the new file, using the +force (!) character: > + + :edit! foo.txt + +If you want to edit another file, but not write the changes in the current +file yet, you can make it hidden: > + + :hide edit foo.txt + +The text with changes is still there, but you can't see it. This is further +explained in section |22.4|: The buffer list. + +============================================================================== +*07.2* A list of files + +You can start Vim to edit a sequence of files. For example: > + + vim one.c two.c three.c + +This command starts Vim and tells it that you will be editing three files. +Vim displays just the first file. After you have done your thing in this +file, to edit the next file you use this command: > + + :next + +If you have unsaved changes in the current file, you will get an error +message and the ":next" will not work. This is the same problem as with +":edit" mentioned in the previous section. To abandon the changes: > + + :next! + +But mostly you want to save the changes and move on to the next file. There +is a special command for this: > + + :wnext + +This does the same as using two separate commands: > + + :write + :next + + +WHERE AM I? + +To see which file in the argument list you are editing, look in the window +title. It should show something like "(2 of 3)". This means you are editing +the second file out of three files. + If you want to see the list of files, use this command: > + + :args + +This is short for "arguments". The output might look like this: + + one.c [two.c] three.c ~ + +These are the files you started Vim with. The one you are currently editing, +"two.c", is in square brackets. + + +MOVING TO OTHER ARGUMENTS + +To go back one file: > + + :previous + +This is just like the ":next" command, except that it moves in the other +direction. Again, there is a shortcut command for when you want to write the +file first: > + + :wprevious + +To move to the very last file in the list: > + + :last + +And to move back to the first one again: > + + :first + +There is no ":wlast" or ":wfirst" command though! + +You can use a count for ":next" and ":previous". To skip two files forward: > + + :2next + + +AUTOMATIC WRITING + +When moving around the files and making changes, you have to remember to use +":write". Otherwise you will get an error message. If you are sure you +always want to write modified files, you can tell Vim to automatically write +them: > + + :set autowrite + +When you are editing a file which you may not want to write, switch it off +again: > + + :set noautowrite + + +EDITING ANOTHER LIST OF FILES + +You can redefine the list of files without the need to exit Vim and start it +again. Use this command to edit three other files: > + + :args five.c six.c seven.h + +Or use a wildcard, like it's used in the shell: > + + :args *.txt + +Vim will take you to the first file in the list. Again, if the current file +has changes, you can either write the file first, or use ":args!" (with ! +added) to abandon the changes. + + +DID YOU EDIT THE LAST FILE? + *arglist-quit* +When you use a list of files, Vim assumes you want to edit them all. To +protect you from exiting too early, you will get this error when you didn't +edit the last file in the list yet: + + E173: 46 more files to edit ~ + +If you really want to exit, just do it again. Then it will work (but not when +you did other commands in between). + +============================================================================== +*07.3* Jumping from file to file + +To quickly jump between two files, press CTRL-^ (on English-US keyboards the ^ +is above the 6 key). Example: > + + :args one.c two.c three.c + +You are now in one.c. > + + :next + +Now you are in two.c. Now use CTRL-^ to go back to one.c. Another CTRL-^ and +you are back in two.c. Another CTRL-^ and you are in one.c again. If you now +do: > + + :next + +You are in three.c. Notice that the CTRL-^ command does not change the idea +of where you are in the list of files. Only commands like ":next" and +":previous" do that. + +The file you were previously editing is called the "alternate" file. When you +just started Vim CTRL-^ will not work, since there isn't a previous file. + + +PREDEFINED MARKS + +After jumping to another file, you can use two predefined marks which are very +useful: > + + `" + +This takes you to the position where the cursor was when you left the file. +Another mark that is remembered is the position where you made the last +change: > + + `. + +Suppose you are editing the file "one.txt". Somewhere halfway the file you +use "x" to delete a character. Then you go to the last line with "G" and +write the file with ":w". You edit several other files, and then use ":edit +one.txt" to come back to "one.txt". If you now use `" Vim jumps to the last +line of the file. Using `. takes you to the position where you deleted the +character. Even when you move around in the file `" and `. will take you to +the remembered position. At least until you make another change or leave the +file. + + +FILE MARKS + +In chapter 4 was explained how you can place a mark in a file with "mx" and +jump to that position with "`x". That works within one file. If you edit +another file and place marks there, these are specific for that file. Thus +each file has its own set of marks, they are local to the file. + So far we were using marks with a lowercase letter. There are also marks +with an uppercase letter. These are global, they can be used from any file. +For example suppose that we are editing the file "foo.txt". Go to halfway the +file ("50%") and place the F mark there (F for foo): > + + 50%mF + +Now edit the file "bar.txt" and place the B mark (B for bar) at its last line: +> + GmB + +Now you can use the "'F" command to jump back to halfway foo.txt. Or edit yet +another file, type "'B" and you are at the end of bar.txt again. + +The file marks are remembered until they are placed somewhere else. Thus you +can place the mark, do hours of editing and still be able to jump back to that +mark. + It's often useful to think of a simple connection between the mark letter +and where it is placed. For example, use the H mark in a header file, M in +a Makefile and C in a C code file. + +To see where a specific mark is, give an argument to the ":marks" command: > + + :marks M + +You can also give several arguments: > + + :marks MCP + +Don't forget that you can use CTRL-O and CTRL-I to jump to older and newer +positions without placing marks there. + +============================================================================== +*07.4* Backup files + +Usually Vim does not produce a backup file. If you want to have one, all you +need to do is execute the following command: > + + :set backup + +The name of the backup file is the original file with a ~ added to the end. +If your file is named data.txt, for example, the backup file name is +data.txt~. + If you do not like the fact that the backup files end with ~, you can +change the extension: > + + :set backupext=.bak + +This will use data.txt.bak instead of data.txt~. + Another option that matters here is 'backupdir'. It specifies where the +backup file is written. The default, to write the backup in the same +directory as the original file, will mostly be the right thing. + + Note: + When the 'backup' option isn't set but the 'writebackup' is, Vim will + still create a backup file. However, it is deleted as soon as writing + the file was completed successfully. This functions as a safety + against losing your original file when writing fails in some way (disk + full is the most common cause; being hit by lightning might be + another, although less common). + + +KEEPING THE ORIGINAL FILE + +If you are editing source files, you might want to keep the file before you +make any changes. But the backup file will be overwritten each time you write +the file. Thus it only contains the previous version, not the first one. + To make Vim keep the original file, set the 'patchmode' option. This +specifies the extension used for the first backup of a changed file. Usually +you would do this: > + + :set patchmode=.orig + +When you now edit the file data.txt for the first time, make changes and write +the file, Vim will keep a copy of the unchanged file under the name +"data.txt.orig". + If you make further changes to the file, Vim will notice that +"data.txt.orig" already exists and leave it alone. Further backup files will +then be called "data.txt~" (or whatever you specified with 'backupext'). + If you leave 'patchmode' empty (that is the default), the original file +will not be kept. + +============================================================================== +*07.5* Copy text between files + +This explains how to copy text from one file to another. Let's start with a +simple example. Edit the file that contains the text you want to copy. Move +the cursor to the start of the text and press "v". This starts Visual mode. +Now move the cursor to the end of the text and press "y". This yanks (copies) +the selected text. + To copy the above paragraph, you would do: > + + :edit thisfile + /This + vjjjj$y + +Now edit the file you want to put the text in. Move the cursor to the +character where you want the text to appear after. Use "p" to put the text +there. > + :edit otherfile + /There + p + +Of course you can use many other commands to yank the text. For example, to +select whole lines start Visual mode with "V". Or use CTRL-V to select a +rectangular block. Or use "Y" to yank a single line, "yaw" to yank-a-word, +etc. + The "p" command puts the text after the cursor. Use "P" to put the text +before the cursor. Notice that Vim remembers if you yanked a whole line or a +block, and puts it back that way. + + +USING REGISTERS + +When you want to copy several pieces of text from one file to another, having +to switch between the files and writing the target file takes a lot of time. +To avoid this, copy each piece of text to its own register. + A register is a place where Vim stores text. Here we will use the +registers named a to z (later you will find out there are others). Let's copy +a sentence to the f register (f for First): > + + "fyas + +The "yas" command yanks a sentence like before. It's the "f that tells Vim +the text should be place in the f register. This must come just before the +yank command. + Now yank three whole lines to the l register (l for line): > + + "l3Y + +The count could be before the "l just as well. To yank a block of text to the +b (for block) register: > + + CTRL-Vjjww"by + +Notice that the register specification "b is just before the "y" command. +This is required. If you would have put it before the "w" command, it would +not have worked. + Now you have three pieces of text in the f, l and b registers. Edit +another file, move around and place the text where you want it: > + + "fp + +Again, the register specification "f comes before the "p" command. + You can put the registers in any order. And the text stays in the register +until you yank something else into it. Thus you can put it as many times as +you like. + +When you delete text, you can also specify a register. Use this to move +several pieces of text around. For example, to delete-a-word and write it in +the w register: > + + "wdaw + +Again, the register specification comes before the delete command "d". + + +APPENDING TO A FILE + +When collecting lines of text into one file, you can use this command: > + + :write >> logfile + +This will write the text of the current file to the end of "logfile". Thus it +is appended. This avoids that you have to copy the lines, edit the log file +and put them there. Thus you save two steps. But you can only append to the +end of a file. + To append only a few lines, select them in Visual mode before typing +":write". In chapter 10 you will learn other ways to select a range of lines. + +============================================================================== +*07.6* Viewing a file + +Sometimes you only want to see what a file contains, without the intention to +ever write it back. There is the risk that you type ":w" without thinking and +overwrite the original file anyway. To avoid this, edit the file read-only. + To start Vim in readonly mode, use this command: > + + vim -R file + +On Unix this command should do the same thing: > + + view file + +You are now editing "file" in read-only mode. When you try using ":w" you +will get an error message and the file won't be written. + When you try to make a change to the file Vim will give you a warning: + + W10: Warning: Changing a readonly file ~ + +The change will be done though. This allows for formatting the file, for +example, to be able to read it easily. + If you make changes to a file and forgot that it was read-only, you can +still write it. Add the ! to the write command to force writing. + +If you really want to forbid making changes in a file, do this: > + + vim -M file + +Now every attempt to change the text will fail. The help files are like this, +for example. If you try to make a change you get this error message: + + E21: Cannot make changes, 'modifiable' is off ~ + +You could use the -M argument to setup Vim to work in a viewer mode. This is +only voluntary though, since these commands will remove the protection: > + + :set modifiable + :set write + +============================================================================== +*07.7* Changing the file name + +A clever way to start editing a new file is by using an existing file that +contains most of what you need. For example, you start writing a new program +to move a file. You know that you already have a program that copies a file, +thus you start with: > + + :edit copy.c + +You can delete the stuff you don't need. Now you need to save the file under +a new name. The ":saveas" command can be used for this: > + + :saveas move.c + +Vim will write the file under the given name, and edit that file. Thus the +next time you do ":write", it will write "move.c". "copy.c" remains +unmodified. + When you want to change the name of the file you are editing, but don't +want to write the file, you can use this command: > + + :file move.c + +Vim will mark the file as "not edited". This means that Vim knows this is not +the file you started editing. When you try to write the file, you might get +this message: + + E13: File exists (use ! to override) ~ + +This protects you from accidentally overwriting another file. + +============================================================================== + +Next chapter: |usr_08.txt| Splitting windows + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_08.txt b/en/usr_08.txt new file mode 100644 index 000000000..3fe78b974 --- /dev/null +++ b/en/usr_08.txt @@ -0,0 +1,511 @@ +*usr_08.txt* For Vim version 6.3. Last change: 2004 Jun 04 + + VIM USER MANUAL - by Bram Moolenaar + + Splitting windows + + +Display two different files above each other. Or view two locations in the +file at the same time. See the difference between two files by putting them +side by side. All this is possible with split windows. + +|08.1| Split a window +|08.2| Split a window on another file +|08.3| Window size +|08.4| Vertical splits +|08.5| Moving windows +|08.6| Commands for all windows +|08.7| Viewing differences with vimdiff +|08.8| Various + + Next chapter: |usr_09.txt| Using the GUI + Previous chapter: |usr_07.txt| Editing more than one file +Table of contents: |usr_toc.txt| + +============================================================================== +*08.1* Split a window + +The easiest way to open a new window is to use the following command: > + + :split + +This command splits the screen into two windows and leaves the cursor in the +top one: + + +----------------------------------+ + |/* file one.c */ | + |~ | + |~ | + |one.c=============================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +What you see here is two windows on the same file. The line with "====" is +that status line. It displays information about the window above it. (In +practice the status line will be in reverse video.) + The two windows allow you to view two parts of the same file. For example, +you could make the top window show the variable declarations of a program, and +the bottom one the code that uses these variables. + +The CTRL-W w command can be used to jump between the windows. If you are in +the top window, CTRL-W w jumps to the window below it. If you are in the +bottom window it will jump to the first window. (CTRL-W CTRL-W does the same +thing, in case you let go of the CTRL key a bit later.) + + +CLOSE THE WINDOW + +To close a window, use the command: > + + :close + +Actually, any command that quits editing a file works, like ":quit" and "ZZ". +But ":close" prevents you from accidentally exiting Vim when you close the +last window. + + +CLOSING ALL OTHER WINDOWS + +If you have opened a whole bunch of windows, but now want to concentrate on +one of them, this command will be useful: > + + :only + +This closes all windows, except for the current one. If any of the other +windows has changes, you will get an error message and that window won't be +closed. + +============================================================================== +*08.2* Split a window on another file + +The following command opens a second window and starts editing the given file: +> + :split two.c + +If you were editing one.c, then the result looks like this: + + +----------------------------------+ + |/* file two.c */ | + |~ | + |~ | + |two.c=============================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +To open a window on a new, empty file, use this: > + + :new + +You can repeat the ":split" and ":new" commands to create as many windows as +you like. + +============================================================================== +*08.3* Window size + +The ":split" command can take a number argument. If specified, this will be +the height of the new window. For example, the following opens a new window +three lines high and starts editing the file alpha.c: > + + :3split alpha.c + +For existing windows you can change the size in several ways. When you have a +working mouse, it is easy: Move the mouse pointer to the status line that +separates two windows, and drag it up or down. + +To increase the size of a window: > + + CTRL-W + + +To decrease it: > + + CTRL-W - + +Both of these commands take a count and increase or decrease the window size +by that many lines. Thus "4 CTRL-W +" make the window four lines higher. + +To set the window height to a specified number of lines: > + + {height}CTRL-W _ + +That's: a number {height}, CTRL-W and then an underscore (the - key with Shift +on English-US keyboards). + To make a window as high as it can be, use the CTRL-W _ command without a +count. + + +USING THE MOUSE + +In Vim you can do many things very quickly from the keyboard. Unfortunately, +the window resizing commands require quite a bit of typing. In this case, +using the mouse is faster. Position the mouse pointer on a status line. Now +press the left mouse button and drag. The status line will move, thus making +the window on one side higher and the other smaller. + + +OPTIONS + +The 'winheight' option can be set to a minimal desired height of a window and +'winminheight' to a hard minimum height. + Likewise, there is 'winwidth' for the minimal desired width and +'winminwidth' for the hard minimum width. + The 'equalalways' option, when set, makes Vim equalize the windows sizes +when a window is closed or opened. + +============================================================================== +*08.4* Vertical splits + +The ":split" command creates the new window above the current one. To make +the window appear at the left side, use: > + + :vsplit + +or: > + :vsplit two.c + +The result looks something like this: + + +--------------------------------------+ + |/* file two.c */ |/* file one.c */ | + |~ |~ | + |~ |~ | + |~ |~ | + |two.c===============one.c=============| + | | + +--------------------------------------+ + +Actually, the | lines in the middle will be in reverse video. This is called +the vertical separator. It separates the two windows left and right of it. + +There is also the ":vnew" command, to open a vertically split window on a new, +empty file. Another way to do this: > + + :vertical new + +The ":vertical" command can be inserted before another command that splits a +window. This will cause that command to split the window vertically instead +of horizontally. (If the command doesn't split a window, it works +unmodified.) + + +MOVING BETWEEN WINDOWS + +Since you can split windows horizontally and vertically as much as you like, +you can create any layout of windows. Then you can use these commands to move +between them: + + CTRL-W h move to the window on the left + CTRL-W j move to the window below + CTRL-W k move to the window above + CTRL-W l move to the window on the right + + CTRL-W t move to the TOP window + CTRL-W b move to the BOTTOM window + +You will notice the same letters as used for moving the cursor. And the +cursor keys can also be used, if you like. + More commands to move to other windows: |Q_wi|. + +============================================================================== +*08.5* Moving windows + +You have split a few windows, but now they are in the wrong place. Then you +need a command to move the window somewhere else. For example, you have three +windows like this: + + +----------------------------------+ + |/* file two.c */ | + |~ | + |~ | + |two.c=============================| + |/* file three.c */ | + |~ | + |~ | + |three.c===========================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +Clearly the last one should be at the top. Go to that window (using CTRL-W w) +and the type this command: > + + CTRL-W K + +This uses the uppercase letter K. What happens is that the window is moved to +the very top. You will notice that K is again used for moving upwards. + When you have vertical splits, CTRL-W K will move the current window to the +top and make it occupy the full with of the Vim window. If this is your +layout: + + +-------------------------------------------+ + |/* two.c */ |/* three.c */ |/* one.c */ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |two.c=========three.c=========one.c========| + | | + +-------------------------------------------+ + +Then using CTRL-W K in the middle window (three.c) will result in: + + +-------------------------------------------+ + |/* three.c */ | + |~ | + |~ | + |three.c====================================| + |/* two.c */ |/* one.c */ | + |~ |~ | + |two.c==================one.c===============| + | | + +-------------------------------------------+ + +The other three similar commands (you can probably guess these now): + + CTRL-W H move window to the far left + CTRL-W J move window to the bottom + CTRL-W L move window to the far right + +============================================================================== +*08.6* Commands for all windows + +When you have several windows open and you want to quit Vim, you can close +each window separately. A quicker way is using this command: > + + :qall + +This stands for "quit all". If any of the windows contain changes, Vim will +not exit. The cursor will automatically be positioned in a window with +changes. You can then either use ":write" to save the changes, or ":quit!" to +throw them away. + +If you know there are windows with changes, and you want to save all these +changes, use this command: > + + :wall + +This stands for "write all". But actually, it only writes files with +changes. Vim knows it doesn't make sense to write files that were not +changed. + And then there is the combination of ":qall" and ":wall": the "write and +quit all" command: > + + :wqall + +This writes all modified files and quits Vim. + Finally, there is a command that quits Vim and throws away all changes: > + + :qall! + +Be careful, there is no way to undo this command! + + +OPENING A WINDOW FOR ALL ARGUMENTS + +To make Vim open a window for each file, start it with the "-o" argument: > + + vim -o one.txt two.txt three.txt + +This results in: + + +-------------------------------+ + |file one.txt | + |~ | + |one.txt========================| + |file two.txt | + |~ | + |two.txt========================| + |file three.txt | + |~ | + |three.txt======================| + | | + +-------------------------------+ + +The "-O" argument is used to get vertically split windows. + When Vim is already running, the ":all" command opens a window for each +file in the argument list. ":vertical all" does it with vertical splits. + +============================================================================== +*08.7* Viewing differences with vimdiff + +There is a special way to start Vim, which shows the differences between two +files. Let's take a file "main.c" and insert a few characters in one line. +Write this file with the 'backup' option set, so that the backup file +"main.c~" will contain the previous version of the file. + Type this command in a shell (not in Vim): > + + vimdiff main.c~ main.c + +Vim will start, with two windows side by side. You will only see the line +in which you added characters, and a few lines above and below it. + + VV VV + +-----------------------------------------+ + |+ +--123 lines: /* a|+ +--123 lines: /* a| <- fold + | text | text | + | text | text | + | text | text | + | text | changed text | <- changed line + | text | text | + | text | ------------------| <- deleted line + | text | text | + | text | text | + | text | text | + |+ +--432 lines: text|+ +--432 lines: text| <- fold + | ~ | ~ | + | ~ | ~ | + |main.c~==============main.c==============| + | | + +-----------------------------------------+ + +(This picture doesn't show the highlighting, use the vimdiff command for a +better look.) + +The lines that were not modified have been collapsed into one line. This is +called a closed fold. They are indicated in the picture with "<- fold". Thus +the single fold line at the top stands for 123 text lines. These lines are +equal in both files. + The line marked with "<- changed line" is highlighted, and the inserted +text is displayed with another color. This clearly shows what the difference +is between the two files. + The line that was deleted is displayed with "---" in the main.c window. +See the "<- deleted line" marker in the picture. These characters are not +really there. They just fill up main.c, so that it displays the same number +of lines as the other window. + + +THE FOLD COLUMN + +Each window has a column on the left with a slightly different background. In +the picture above these are indicated with "VV". You notice there is a plus +character there, in front of each closed fold. Move the mouse pointer to that +plus and click the left button. The fold will open, and you can see the text +that it contains. + The fold column contains a minus sign for an open fold. If you click on +this -, the fold will close. + Obviously, this only works when you have a working mouse. You can also use +"zo" to open a fold and "zc" to close it. + + +DIFFING IN VIM + +Another way to start in diff mode can be done from inside Vim. Edit the +"main.c" file, then make a split and show the differences: > + + :edit main.c + :vertical diffsplit main.c~ + +The ":vertical" command is used to make the window split vertically. If you +omit this, you will get a horizontal split. + +If you have a patch or diff file, you can use the third way to start diff +mode. First edit the file to which the patch applies. Then tell Vim the name +of the patch file: > + + :edit main.c + :vertical diffpatch main.c.diff + +WARNING: The patch file must contain only one patch, for the file you are +editing. Otherwise you will get a lot of error messages, and some files might +be patched unexpectedly. + The patching will only be done to the copy of the file in Vim. The file on +your harddisk will remain unmodified (until you decide to write the file). + + +SCROLL BINDING + +When the files have more changes, you can scroll in the usual way. Vim will +try to keep both the windows start at the same position, so you can easily see +the differences side by side. + When you don't want this for a moment, use this command: > + + :set noscrollbind + + +JUMPING TO CHANGES + +When you have disabled folding in some way, it may be difficult to find the +changes. Use this command to jump forward to the next change: > + + ]c + +To go the other way use: > + + [c + +Prepended a count to jump further away. + + +REMOVING CHANGES + +You can move text from one window to the other. This either removes +differences or adds new ones. Vim doesn't keep the highlighting updated in +all situations. To update it use this command: > + + :diffupdate + +To remove a difference, you can move the text in a highlighted block from one +window to another. Take the "main.c" and "main.c~" example above. Move the +cursor to the left window, on the line that was deleted in the other window. +Now type this command: > + + dp + +The change will be removed by putting the text of the current window in the +other window. "dp" stands for "diff put". + You can also do it the other way around. Move the cursor to the right +window, to the line where "changed" was inserted. Now type this command: > + + do + +The change will now be removed by getting the text from the other window. +Since there are no changes left now, Vim puts all text in a closed fold. +"do" stands for "diff obtain". "dg" would have been better, but that already +has a different meaning ("dgg" deletes from the cursor until the first line). + +For details about diff mode, see |vimdiff|. + +============================================================================== +*08.8* Various + +The 'laststatus' option can be used to specify when the last window has a +statusline: + + 0 never + 1 only when there are split windows (the default) + 2 always + +Many commands that edit another file have a variant that splits the window. +For Command-line commands this is done by prepending an "s". For example: +":tag" jumps to a tag, ":stag" splits the window and jumps to a +tag. + For Normal mode commands a CTRL-W is prepended. CTRL-^ jumps to the +alternate file, CTRL-W CTRL-^ splits the window and edits the alternate file. + +The 'splitbelow' option can be set to make a new window appear below the +current window. The 'splitright' option can be set to make a vertically split +window appear right of the current window. + +When splitting a window you can prepend a modifier command to tell where the +window is to appear: + + :leftabove {cmd} left or above the current window + :aboveleft {cmd} idem + :rightbelow {cmd} right or below the current window + :belowright {cmd} idem + :topleft {cmd} at the top or left of the Vim window + :botright {cmd} at the bottom or right of the Vim window + +============================================================================== + +Next chapter: |usr_09.txt| Using the GUI + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_09.txt b/en/usr_09.txt new file mode 100644 index 000000000..87b95b4f5 --- /dev/null +++ b/en/usr_09.txt @@ -0,0 +1,289 @@ +*usr_09.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + VIM USER MANUAL - by Bram Moolenaar + + Using the GUI + + +Vim works in an ordinary terminal. GVim can do the same things and a few +more. The GUI offers menus, a toolbar, scrollbars and other items. This +chapter is about these extra things that the GUI offers. + +|09.1| Parts of the GUI +|09.2| Using the mouse +|09.3| The clipboard +|09.4| Select mode + + Next chapter: |usr_10.txt| Making big changes + Previous chapter: |usr_08.txt| Splitting windows +Table of contents: |usr_toc.txt| + +============================================================================== +*09.1* Parts of the GUI + +You might have an icon on your desktop that starts gVim. Otherwise, one of +these commands should do it: > + + gvim file.txt + vim -g file.txt + +If this doesn't work you don't have a version of Vim with GUI support. You +will have to install one first. + Vim will open a window and display "file.txt" in it. What the window looks +like depends on the version of Vim. It should resemble the following picture +(for as far as this can be shown in ASCII!). + + +----------------------------------------------------+ + | file.txt + (~/dir) - VIM X | <- window title + +----------------------------------------------------+ + | File Edit Tools Syntax Buffers Window Help | <- menubar + +----------------------------------------------------+ + | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- toolbar + | aaa bbb ccc ddd eee fff ggg hhh iii jjj | + +----------------------------------------------------+ + | file text | ^ | + | ~ | # | + | ~ | # | <- scrollbar + | ~ | # | + | ~ | # | + | ~ | # | + | | V | + +----------------------------------------------------+ + +The largest space is occupied by the file text. This shows the file in the +same way as in a terminal. With some different colors and another font +perhaps. + + +THE WINDOW TITLE + +At the very top is the window title. This is drawn by your window system. +Vim will set the title to show the name of the current file. First comes the +name of the file. Then some special characters and the directory of the file +in parens. These special character can be present: + + - The file cannot be modified (e.g., a help file) + + The file contains changes + = The file is read-only + =+ The file is read-only, contains changes anyway + +If nothing is shown you have an ordinary, unchanged file. + + +THE MENUBAR + +You know how menus work, right? Vim has the usual items, plus a few more. +Browse them to get an idea of what you can use them for. A relevant submenu +is Edit/Global Settings. You will find these entries: + + Toggle Toolbar make the toolbar appear/disappear + Toggle Bottom Scrollbar make a scrollbar appear/disappear at the bottom + Toggle Left Scrollbar make a scrollbar appear/disappear at the left + Toggle Right Scrollbar make a scrollbar appear/disappear at the right + +On most systems you can tear-off the menus. Select the top item of the menu, +the one that looks like a dashed line. You will get a separate window with +the items of the menu. It will hang around until you close the window. + + +THE TOOLBAR + +This contains icons for the most often used actions. Hopefully the icons are +self-explanatory. There are tooltips to get an extra hint (move the mouse +pointer to the icon without clicking and don't move it for a second). + +The "Edit/Global Settings/Toggle Toolbar" menu item can be used to make the +toolbar disappear. If you never want a toolbar, use this command in your +vimrc file: > + + :set guioptions-=T + +This removes the 'T' flag from the 'guioptions' option. Other parts of the +GUI can also be enabled or disabled with this option. See the help for it. + + +THE SCROLLBARS + +By default there is one scrollbar on the right. It does the obvious thing. +When you split the window, each window will get its own scrollbar. + You can make a horizontal scrollbar appear with the menu item +Edit/Global Settings/Toggle Bottom Scrollbar. This is useful in diff mode, or +when the 'wrap' option has been reset (more about that later). + +When there are vertically split windows, only the windows on the right side +will have a scrollbar. However, when you move the cursor to a window on the +left, it will be this one the that scrollbar controls. This takes a bit of +time to get used to. + When you work with vertically split windows, consider adding a scrollbar on +the left. This can be done with a menu item, or with the 'guioptions' option: +> + :set guioptions+=l + +This adds the 'l' flag to 'guioptions'. + +============================================================================== +*09.2* Using the mouse + +Standards are wonderful. In Microsoft Windows, you can use the mouse to +select text in a standard manner. The X Window system also has a standard +system for using the mouse. Unfortunately, these two standards are not the +same. + Fortunately, you can customize Vim. You can make the behavior of the mouse +work like an X Window system mouse or a Microsoft Windows mouse. The following +command makes the mouse behave like an X Window mouse: > + + :behave xterm + +The following command makes the mouse work like a Microsoft Windows mouse: > + + :behave mswin + +The default behavior of the mouse on UNIX systems is xterm. The default +behavior on a Microsoft Windows system is selected during the installation +process. For details about what the two behaviors are, see |:behave|. Here +follows a summary. + + +XTERM MOUSE BEHAVIOR + +Left mouse click position the cursor +Left mouse drag select text in Visual mode +Middle mouse click paste text from the clipboard +Right mouse click extend the selected text until the mouse + pointer + + +MSWIN MOUSE BEHAVIOR + +Left mouse click position the cursor +Left mouse drag select text in Select mode (see |09.4|) +Left mouse click, with Shift extend the selected text until the mouse + pointer +Middle mouse click paste text from the clipboard +Right mouse click display a pop-up menu + + +The mouse can be further tuned. Check out these options if you want to change +the way how the mouse works: + + 'mouse' in which mode the mouse is used by Vim + 'mousemodel' what effect a mouse click has + 'mousetime' time between clicks for a double-click + 'mousehide' hide the mouse while typing + 'selectmode' whether the mouse starts Visual or Select mode + +============================================================================== +*09.3* The clipboard + +In section |04.7| the basic use of the clipboard was explained. There is one +essential thing to explain about X-windows: There are actually two places to +exchange text between programs. MS-Windows doesn't have this. + +In X-Windows there is the "current selection". This is the text that is +currently highlighted. In Vim this is the Visual area (this assumes you are +using the default option settings). You can paste this selection in another +application without any further action. + For example, in this text select a few words with the mouse. Vim will +switch to Visual mode and highlight the text. Now start another gVim, without +a file name argument, so that it displays an empty window. Click the middle +mouse button. The selected text will be inserted. + +The "current selection" will only remain valid until some other text is +selected. After doing the paste in the other gVim, now select some characters +in that window. You will notice that the words that were previously selected +in the other gVim window are displayed differently. This means that it no +longer is the current selection. + +You don't need to select text with the mouse, using the keyboard commands for +Visual mode works just as well. + + +THE REAL CLIPBOARD + +Now for the other place with which text can be exchanged. We call this the +"real clipboard", to avoid confusion. Often both the "current selection" and +the "real clipboard" are called clipboard, you'll have to get used to that. + To put text on the real clipboard, select a few different words in one of +the gVims you have running. Then use the Edit/Copy menu entry. Now the text +has been copied to the real clipboard. You can't see this, unless you have +some application that shows the clipboard contents (e.g., KDE's klipper). + Now select the other gVim, position the cursor somewhere and use the +Edit/Paste menu. You will see the text from the real clipboard is inserted. + + +USING BOTH + +This use of both the "current selection" and the "real clipboard" might sound +a bit confusing. But it is very useful. Let's show this with an example. +Use one gVim with a text file and perform these actions: + +- Select two words in Visual mode. +- Use the Edit/Copy menu to get these words onto the clipboard. +- Select one other word in Visual mode. +- Use the Edit/Paste menu item. What will happen is that the single selected + word is replaced with the two words from the clipboard. +- Move the mouse pointer somewhere else and click the middle button. You + will see that the word you just overwrote with the clipboard is inserted + here. + +If you use the "current selection" and the "real clipboard" with care, you can +do a lot of useful editing with them. + + +USING THE KEYBOARD + +If you don't like using the mouse, you can access the current selection and +the real clipboard with two registers. The "* register is for the current +selection. + To make text become the current selection, use Visual mode. For example, +to select a whole line just press "V". + To insert the current selection before the cursor: > + + "*P + +Notice the uppercase "P". The lowercase "p" puts the text after the cursor. + +The "+ register is used for the real clipboard. For example, to copy the text +from the cursor position until the end of the line to the clipboard: > + + "+y$ + +Remember, "y" is yank, which is Vim's copy command. + To insert the contents of the real clipboard before the cursor: > + + "+P + +It's the same as for the current selection, but uses the plus (+) register +instead of the star (*) register. + +============================================================================== +*09.4* Select mode + +And now something that is used more often on MS-Windows than on X-Windows. +But both can do it. You already know about Visual mode. Select mode is like +Visual mode, because it is also used to select text. But there is an obvious +difference: When typing text, the selected text is deleted and the typed text +replaces it. + +To start working with Select mode, you must first enable it (for MS-Windows +it is probably already enabled, but you can do this anyway): > + + :set selectmode+=mouse + +Now use the mouse to select some text. It is highlighted like in Visual mode. +Now press a letter. The selected text is deleted, and the single letter +replaces it. You are in Insert mode now, thus you can continue typing. + +Since typing normal text causes the selected text to be deleted, you can not +use the normal movement commands "hjkl", "w", etc. Instead, use the shifted +function keys. <S-Left> (shifted cursor left key) moves the cursor left. The +selected text is changed like in Visual mode. The other shifted cursor keys +do what you expect. <S-End> and <S-Home> also work. + +You can tune the way Select mode works with the 'selectmode' option. + +============================================================================== + +Next chapter: |usr_10.txt| Making big changes + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_10.txt b/en/usr_10.txt new file mode 100644 index 000000000..0aebeeff6 --- /dev/null +++ b/en/usr_10.txt @@ -0,0 +1,822 @@ +*usr_10.txt* For Vim version 6.3. Last change: 2004 Mar 12 + + VIM USER MANUAL - by Bram Moolenaar + + Making big changes + + +In chapter 4 several ways to make small changes were explained. This chapter +goes into making changes that are repeated or can affect a large amount of +text. The Visual mode allows doing various things with blocks of text. Use +an external program to do really complicated things. + +|10.1| Record and playback commands +|10.2| Substitution +|10.3| Command ranges +|10.4| The global command +|10.5| Visual block mode +|10.6| Reading and writing part of a file +|10.7| Formatting text +|10.8| Changing case +|10.9| Using an external program + + Next chapter: |usr_11.txt| Recovering from a crash + Previous chapter: |usr_09.txt| Using the GUI +Table of contents: |usr_toc.txt| + +============================================================================== +*10.1* Record and playback commands + +The "." command repeats the preceding change. But what if you want to do +something more complex than a single change? That's where command recording +comes in. There are three steps: + +1. The "q{register}" command starts recording keystrokes into the register + named {register}. The register name must be between a and z. +2. Type your commands. +3. To finish recording, press q (without any extra character). + +You can now execute the macro by typing the command "@{register}". + +Take a look at how to use these commands in practice. You have a list of +filenames that look like this: + + stdio.h ~ + fcntl.h ~ + unistd.h ~ + stdlib.h ~ + +And what you want is the following: + + #include "stdio.h" ~ + #include "fcntl.h" ~ + #include "unistd.h" ~ + #include "stdlib.h" ~ + +You start by moving to the first character of the first line. Next you +execute the following commands: + + qa Start recording a macro in register a. + ^ Move to the beginning of the line. + i#include "<Esc> Insert the string #include " at the beginning + of the line. + $ Move to the end of the line. + a"<Esc> Append the character double quotation mark (") + to the end of the line. + j Go to the next line. + q Stop recording the macro. + +Now that you have done the work once, you can repeat the change by typing the +command "@a" three times. + The "@a" command can be preceded by a count, which will cause the macro to +be executed that number of times. In this case you would type: > + + 3@a + + +MOVE AND EXECUTE + +You might have the lines you want to change in various places. Just move the +cursor to each location and use the "@a" command. If you have done that once, +you can do it again with "@@". That's a bit easier to type. If you now +execute register b with "@b", the next "@@" will use register b. + If you compare the playback method with using ".", there are several +differences. First of all, "." can only repeat one change. As seen in the +example above, "@a" can do several changes, and move around as well. +Secondly, "." can only remember the last change. Executing a register allows +you to make any changes and then still use "@a" to replay the recorded +commands. Finally, you can use 26 different registers. Thus you can remember +26 different command sequences to execute. + + +USING REGISTERS + +The registers used for recording are the same ones you used for yank and +delete commands. This allows you to mix recording with other commands to +manipulate the registers. + Suppose you have recorded a few commands in register n. When you execute +this with "@n" you notice you did something wrong. You could try recording +again, but perhaps you will make another mistake. Instead, use this trick: + + G Go to the end of the file. + o<Esc> Create an empty line. + "np Put the text from the n register. You now see + the commands you typed as text in the file. + {edits} Change the commands that were wrong. This is + just like editing text. + 0 Go to the start of the line. + "ny$ Yank the corrected commands into the n + register. + dd Delete the scratch line. + +Now you can execute the corrected commands with "@n". (If your recorded +commands include line breaks, adjust the last two items in the example to +include all the lines.) + + +APPENDING TO A REGISTER + +So far we have used a lowercase letter for the register name. To append to a +register, use an uppercase letter. + Suppose you have recorded a command to change a word to register c. It +works properly, but you would like to add a search for the next word to +change. This can be done with: > + + qC/word<Enter>q + +You start with "qC", which records to the c register and appends. Thus +writing to an uppercase register name means to append to the register with +the same letter, but lowercase. + +This works both with recording and with yank and delete commands. For +example, you want to collect a sequence of lines into the a register. Yank +the first line with: > + + "aY + +Now move to the second line, and type: > + + "AY + +Repeat this command for all lines. The a register now contains all those +lines, in the order you yanked them. + +============================================================================== +*10.2* Substitution *find-replace* + +The ":substitute" command enables you to perform string replacements on a +whole range of lines. The general form of this command is as follows: > + + :[range]substitute/from/to/[flags] + +This command changes the "from" string to the "to" string in the lines +specified with [range]. For example, you can change "Professor" to "Teacher" +in all lines with the following command: > + + :%substitute/Professor/Teacher/ +< + Note: + The ":substitute" command is almost never spelled out completely. + Most of the time, people use the abbreviated version ":s". From here + on the abbreviation will be used. + +The "%" before the command specifies the command works on all lines. Without +a range, ":s" only works on the current line. More about ranges in the next +section |10.3|. + +By default, the ":substitute" command changes only the first occurrence on +each line. For example, the preceding command changes the line: + + Professor Smith criticized Professor Johnson today. ~ + +to: + + Teacher Smith criticized Professor Johnson today. ~ + +To change every occurrence on the line, you need to add the g (global) flag. +The command: > + + :%s/Professor/Teacher/g + +results in (starting with the original line): + + Teacher Smith criticized Teacher Johnson today. ~ + +Other flags include p (print), which causes the ":substitute" command to print +out each line it changes. The c (confirm) flag tells ":substitute" to ask you +for confirmation before it performs each substitution. Enter the following: > + + :%s/Professor/Teacher/c + +Vim finds the first occurrence of "Professor" and displays the text it is +about to change. You get the following prompt: > + + replace with Teacher (y/n/a/q/l/^E/^Y)? + +At this point, you must enter one of the following answers: + + y Yes; make this change. + n No; skip this match. + a All; make this change and all remaining ones without + further confirmation. + q Quit; don't make any more changes. + l Last; make this change and then quit. + CTRL-E Scroll the text one line up. + CTRL-Y Scroll the text one line down. + + +The "from" part of the substitute command is actually a pattern. The same +kind as used for the search command. For example, this command only +substitutes "the" when it appears at the start of a line: > + + :s/^the/these/ + +If you are substituting with a "from" or "to" part that includes a slash, you +need to put a backslash before it. A simpler way is to use another character +instead of the slash. A plus, for example: > + + :s+one/two+one or two+ + +============================================================================== +*10.3* Command ranges + +The ":substitute" command, and many other : commands, can be applied to a +selection of lines. This is called a range. + The simple form of a range is {number},{number}. For example: > + + :1,5s/this/that/g + +Executes the substitute command on the lines 1 to 5. Line 5 is included. +The range is always placed before the command. + +A single number can be used to address one specific line: > + + :54s/President/Fool/ + +Some commands work on the whole file when you do not specify a range. To make +them work on the current line the "." address is used. The ":write" command +works like that. Without a range, it writes the whole file. To make it write +only the current line into a file: > + + :.write otherfile + +The first line always has number one. How about the last line? The "$" +character is used for this. For example, to substitute in the lines from the +cursor to the end: > + + :.,$s/yes/no/ + +The "%" range that we used before, is actually a short way to say "1,$", from +the first to the last line. + + +USING A PATTERN IN A RANGE + +Suppose you are editing a chapter in a book, and want to replace all +occurrences of "grey" with "gray". But only in this chapter, not in the next +one. You know that only chapter boundaries have the word "Chapter" in the +first column. This command will work then: > + + :?^Chapter?,/^Chapter/s=grey=gray=g + +You can see a search pattern is used twice. The first "?^Chapter?" finds the +line above the current position that matches this pattern. Thus the ?pattern? +range is used to search backwards. Similarly, "/^Chapter/" is used to search +forward for the start of the next chapter. + To avoid confusion with the slashes, the "=" character was used in the +substitute command here. A slash or another character would have worked as +well. + + +ADD AND SUBTRACT + +There is a slight error in the above command: If the title of the next chapter +had included "grey" it would be replaced as well. Maybe that's what you +wanted, but what if you didn't? Then you can specify an offset. + To search for a pattern and then use the line above it: > + + /Chapter/-1 + +You can use any number instead of the 1. To address the second line below the +match: > + + /Chapter/+2 + +The offsets can also be used with the other items in a range. Look at this +one: > + + :.+3,$-5 + +This specifies the range that starts three lines below the cursor and ends +five lines before the last line in the file. + + +USING MARKS + +Instead of figuring out the line numbers of certain positions, remembering them +and typing them in a range, you can use marks. + Place the marks as mentioned in chapter 3. For example, use "mt" to mark +the top of an area and "mb" to mark the bottom. Then you can use this range +to specify the lines between the marks (including the lines with the marks): > + + :'t,'b + + +VISUAL MODE AND RANGES + +You can select text with Visual mode. If you then press ":" to start a colon +command, you will see this: > + + :'<,'> + +Now you can type the command and it will be applied to the range of lines that +was visually selected. + + Note: + When using Visual mode to select part of a line, or using CTRL-V to + select a block of text, the colon commands will still apply to whole + lines. This might change in a future version of Vim. + +The '< and '> are actually marks, placed at the start and end of the Visual +selection. The marks remain at their position until another Visual selection +is made. Thus you can use the "'<" command to jump to position where the +Visual area started. And you can mix the marks with other items: > + + :'>,$ + +This addresses the lines from the end of the Visual area to the end of the +file. + + +A NUMBER OF LINES + +When you know how many lines you want to change, you can type the number and +then ":". For example, when you type "5:", you will get: > + + :.,.+4 + +Now you can type the command you want to use. It will use the range "." +(current line) until ".+4" (four lines down). Thus it spans five lines. + +============================================================================== +*10.4* The global command + +The ":global" command is one of the more powerful features of Vim. It allows +you to find a match for a pattern and execute a command there. The general +form is: > + + :[range]global/{pattern}/{command} + +This is similar to the ":substitute" command. But, instead of replacing the +matched text with other text, the command {command} is executed. + + Note: + The command executed for ":global" must be one that starts with a + colon. Normal mode commands can not be used directly. The |:normal| + command can do this for you. + +Suppose you want to change "foobar" to "barfoo", but only in C++ style +comments. These comments start with "//". Use this command: > + + :g+//+s/foobar/barfoo/g + +This starts with ":g". That is short for ":global", just like ":s" is short +for ":substitute". Then the pattern, enclosed in plus characters. Since the +pattern we are looking for contains a slash, this uses the plus character to +separate the pattern. Next comes the substitute command that changes "foobar" +into "barfoo". + The default range for the global command is the whole file. Thus no range +was specified in this example. This is different from ":substitute", which +works on one line without a range. + The command isn't perfect, since it also matches lines where "//" appears +halfway a line, and the substitution will also take place before the "//". + +Just like with ":substitute", any pattern can be used. When you learn more +complicated patterns later, you can use them here. + +============================================================================== +*10.5* Visual block mode + +With CTRL-V you can start selection of a rectangular area of text. There are +a few commands that do something special with the text block. + +There is something special about using the "$" command in Visual block mode. +When the last motion command used was "$", all lines in the Visual selection +will extend until the end of the line, also when the line with the cursor is +shorter. This remains effective until you use a motion command that moves the +cursor horizontally. Thus using "j" keeps it, "h" stops it. + + +INSERTING TEXT + +The command "I{string}<Esc>" inserts the text {string} in each line, just +left of the visual block. You start by pressing CTRL-V to enter visual block +mode. Now you move the cursor to define your block. Next you type I to enter +Insert mode, followed by the text to insert. As you type, the text appears on +the first line only. + After you press <Esc> to end the insert, the text will magically be +inserted in the rest of the lines contained in the visual selection. Example: + + include one ~ + include two ~ + include three ~ + include four ~ + +Move the cursor to the "o" of "one" and press CTRL-V. Move it down with "3j" +to "four". You now have a block selection that spans four lines. Now type: > + + Imain.<Esc> + +The result: + + include main.one ~ + include main.two ~ + include main.three ~ + include main.four ~ + +If the block spans short lines that do not extend into the block, the text is +not inserted in that line. For example, make a Visual block selection that +includes the word "long" in the first and last line of this text, and thus has +no text selected in the second line: + + This is a long line ~ + short ~ + Any other long line ~ + + ^^^^ selected block + +Now use the command "Ivery <Esc>". The result is: + + This is a very long line ~ + short ~ + Any other very long line ~ + +In the short line no text was inserted. + +If the string you insert contains a newline, the "I" acts just like a Normal +insert command and affects only the first line of the block. + +The "A" command works the same way, except that it appends after the right +side of the block. + There is one special case for "A": Select a Visual block and then use "$" +to make the block extend to the end of each line. Using "A" now will append +the text to the end of each line. + Using the same example from above, and then typing "$A XXX<Esc>, you get +this result: + + This is a long line XXX ~ + short XXX ~ + Any other long line XXX ~ + +This really requires using the "$" command. Vim remembers that it was used. +Making the same selection by moving the cursor to the end of the longest line +with other movement commands will not have the same result. + + +CHANGING TEXT + +The Visual block "c" command deletes the block and then throws you into Insert +mode to enable you to type in a string. The string will be inserted in each +line in the block. + Starting with the same selection of the "long" words as above, then typing +"c_LONG_<Esc>", you get this: + + This is a _LONG_ line ~ + short ~ + Any other _LONG_ line ~ + +Just like with "I" the short line is not changed. Also, you can't enter a +newline in the new text. + +The "C" command deletes text from the left edge of the block to the end of +line. It then puts you in Insert mode so that you can type in a string, +which is added to the end of each line. + Starting with the same text again, and typing "Cnew text<Esc>" you get: + + This is a new text ~ + short ~ + Any other new text ~ + +Notice that, even though only the "long" word was selected, the text after it +is deleted as well. Thus only the location of the left edge of the visual +block really matters. + Again, short lines that do not reach into the block are excluded. + +Other commands that change the characters in the block: + + ~ swap case (a -> A and A -> a) + U make uppercase (a -> A and A -> A) + u make lowercase (a -> a and A -> a) + + +FILLING WITH A CHARACTER + +To fill the whole block with one character, use the "r" command. Again, +starting with the same example text from above, and then typing "rx": + + This is a xxxx line ~ + short ~ + Any other xxxx line ~ + + + Note: + If you want to include characters beyond the end of the line in the + block, check out the 'virtualedit' feature in chapter 25. + + +SHIFTING + +The command ">" shifts the selected text to the right one shift amount, +inserting whitespace. The starting point for this shift is the left edge of +the visual block. + With the same example again, ">" gives this result: + + This is a long line ~ + short ~ + Any other long line ~ + +The shift amount is specified with the 'shiftwidth' option. To change it to +use 4 spaces: > + + :set shiftwidth=4 + +The "<" command removes one shift amount of whitespace at the left +edge of the block. This command is limited by the amount of text that is +there; so if there is less than a shift amount of whitespace available, it +removes what it can. + + +JOINING LINES + +The "J" command joins all selected lines together into one line. Thus it +removes the line breaks. Actually, the line break, leading white space and +trailing white space is replaced by one space. Two spaces are used after a +line ending (that can be changed with the 'joinspaces' option). + Let's use the example that we got so familiar with now. The result of +using the "J" command: + + This is a long line short Any other long line ~ + +The "J" command doesn't require a blockwise selection. It works with "v" and +"V" selection in exactly the same way. + +If you don't want the white space to be changed, use the "gJ" command. + +============================================================================== +*10.6* Reading and writing part of a file + +When you are writing an e-mail message, you may want to include another file. +This can be done with the ":read {filename}" command. The text of the file is +put below the cursor line. + Starting with this text: + + Hi John, ~ + Here is the diff that fixes the bug: ~ + Bye, Pierre. ~ + +Move the cursor to the second line and type: > + + :read patch + +The file named "patch" will be inserted, with this result: + + Hi John, ~ + Here is the diff that fixes the bug: ~ + 2c2 ~ + < for (i = 0; i <= length; ++i) ~ + --- ~ + > for (i = 0; i < length; ++i) ~ + Bye, Pierre. ~ + +The ":read" command accepts a range. The file will be put below the last line +number of this range. Thus ":$r patch" appends the file "patch" at the end of +the file. + What if you want to read the file above the first line? This can be done +with the line number zero. This line doesn't really exist, you will get an +error message when using it with most commands. But this command is allowed: +> + :0read patch + +The file "patch" will be put above the first line of the file. + + +WRITING A RANGE OF LINES + +To write a range of lines to a file, the ":write" command can be used. +Without a range it writes the whole file. With a range only the specified +lines are written: > + + :.,$write tempo + +This writes the lines from the cursor until the end of the file into the file +"tempo". If this file already exists you will get an error message. Vim +protects you from accidentally overwriting an existing file. If you know what +you are doing and want to overwrite the file, append !: > + + :.,$write! tempo + +CAREFUL: The ! must follow the ":write" command immediately, without white +space. Otherwise it becomes a filter command, which is explained later in +this chapter. + + +APPENDING TO A FILE + +In the first section of this chapter was explained how to collect a number of +lines into a register. The same can be done to collect lines in a file. +Write the first line with this command: > + + :.write collection + +Now move the cursor to the second line you want to collect, and type this: > + + :.write >>collection + +The ">>" tells Vim the "collection" file is not to be written as a new file, +but the line must be appended at the end. You can repeat this as many times +as you like. + +============================================================================== +*10.7* Formatting text + +When you are typing plain text, it's nice if the length of each line is +automatically trimmed to fit in the window. To make this happen while +inserting text, set the 'textwidth' option: > + + :set textwidth=72 + +You might remember that in the example vimrc file this command was used for +every text file. Thus if you are using that vimrc file, you were already +using it. To check the current value of 'textwidth': > + + :set textwidth + +Now lines will be broken to take only up to 72 characters. But when you +insert text halfway a line, or when you delete a few words, the lines will get +too long or too short. Vim doesn't automatically reformat the text. + To tell Vim to format the current paragraph: > + + gqap + +This starts with the "gq" command, which is an operator. Following is "ap", +the text object that stands for "a paragraph". A paragraph is separated from +the next paragraph by an empty line. + + Note: + A blank line, which contains white space, does NOT separate + paragraphs. This is hard to notice! + +Instead of "ap" you could use any motion or text object. If your paragraphs +are properly separated, you can use this command to format the whole file: > + + gggqG + +"gg" takes you to the first line, "gq" is the format operator and "G" the +motion that jumps to the last line. + +In case your paragraphs aren't clearly defined, you can format just the lines +you manually select. Move the cursor to the first line you want to format. +Start with the command "gqj". This formats the current line and the one below +it. If the first line was short, words from the next line will be appended. +If it was too long, words will be moved to the next line. The cursor moves to +the second line. Now you can use "." to repeat the command. Keep doing this +until you are at the end of the text you want to format. + +============================================================================== +*10.8* Changing case + +You have text with section headers in lowercase. You want to make the word +"section" all uppercase. Do this with the "gU" operator. Start with the +cursor in the first column: > + + gUw +< section header ----> SECTION header + +The "gu" operator does exactly the opposite: > + + guw +< SECTION header ----> section header + +You can also use "g~" to swap case. All these are operators, thus they work +with any motion command, with text objects and in Visual mode. + To make an operator work on lines you double it. The delete operator is +"d", thus to delete a line you use "dd". Similarly, "gugu" makes a whole line +lowercase. This can be shortened to "guu". "gUgU" is shortened to "gUU" and +"g~g~" to "g~~". Example: > + + g~~ +< Some GIRLS have Fun ----> sOME girls HAVE fUN ~ + +============================================================================== +*10.9* Using an external program + +Vim has a very powerful set of commands, it can do anything. But there may +still be something that an external command can do better or faster. + The command "!{motion}{program}" takes a block of text and filters it +through an external program. In other words, it runs the system command +represented by {program}, giving it the block of text represented by {motion} +as input. The output of this command then replaces the selected block. + Because this summarizes badly if you are unfamiliar with UNIX filters, take +a look at an example. The sort command sorts a file. If you execute the +following command, the unsorted file input.txt will be sorted and written to +output.txt. (This works on both UNIX and Microsoft Windows.) > + + sort <input.txt >output.txt + +Now do the same thing in Vim. You want to sort lines 1 through 5 of a file. +You start by putting the cursor on line 1. Next you execute the following +command: > + + !5G + +The "!" tells Vim that you are performing a filter operation. The Vim editor +expects a motion command to follow, indicating which part of the file to +filter. The "5G" command tells Vim to go to line 5, so it now knows that it +is to filter lines 1 (the current line) through 5. + In anticipation of the filtering, the cursor drops to the bottom of the +screen and a ! prompt displays. You can now type in the name of the filter +program, in this case "sort". Therefore, your full command is as follows: > + + !5Gsort<Enter> + +The result is that the sort program is run on the first 5 lines. The output +of the program replaces these lines. + + line 55 line 11 + line 33 line 22 + line 11 --> line 33 + line 22 line 44 + line 44 line 55 + last line last line + +The "!!" command filters the current line through a filter. In Unix the "date" +command prints the current time and date. "!!date<Enter>" replaces the current +line with the output of "date". This is useful to add a timestamp to a file. + + +WHEN IT DOESN'T WORK + +Starting a shell, sending it text and capturing the output requires that Vim +knows how the shell works exactly. When you have problems with filtering, +check the values of these options: + + 'shell' specifies the program that Vim uses to execute + external programs. + 'shellcmdflag' argument to pass a command to the shell + 'shellquote' quote to be used around the command + 'shellxquote' quote to be used around the command and redirection + 'shelltype' kind of shell (only for the Amiga) + 'shellslash' use forward slashes in the command (only for + MS-Windows and alikes) + 'shellredir' string used to write the command output into a file + +On Unix this is hardly ever a problem, because there are two kinds of shells: +"sh" like and "csh" like. Vim checks the 'shell' option and sets related +options automatically, depending on whether it sees "csh" somewhere in +'shell'. + On MS-Windows, however, there are many different shells and you might have +to tune the options to make filtering work. Check the help for the options +for more information. + + +READING COMMAND OUTPUT + +To read the contents of the current directory into the file, use this: + +on Unix: > + :read !ls +on MS-Windows: > + :read !dir + +The output of the "ls" or "dir" command is captured and inserted in the text, +below the cursor. This is similar to reading a file, except that the "!" is +used to tell Vim that a command follows. + The command may have arguments. And a range can be used to tell where Vim +should put the lines: > + + :0read !date -u + +This inserts the current time and date in UTC format at the top of the file. +(Well, if you have a date command that accepts the "-u" argument.) Note the +difference with using "!!date": that replaced a line, while ":read !date" will +insert a line. + + +WRITING TEXT TO A COMMAND + +The Unix command "wc" counts words. To count the words in the current file: > + + :write !wc + +This is the same write command as before, but instead of a file name the "!" +character is used and the name of an external command. The written text will +be passed to the specified command as its standard input. The output could +look like this: + + 4 47 249 ~ + +The "wc" command isn't verbose. This means you have 4 lines, 47 words and 249 +characters. + +Watch out for this mistake: > + + :write! wc + +This will write the file "wc" in the current directory, with force. White +space is important here! + + +REDRAWING THE SCREEN + +If the external command produced an error message, the display may have been +messed up. Vim is very efficient and only redraws those parts of the screen +that it knows need redrawing. But it can't know about what another program +has written. To tell Vim to redraw the screen: > + + CTRL-L + +============================================================================== + +Next chapter: |usr_11.txt| Recovering from a crash + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_11.txt b/en/usr_11.txt new file mode 100644 index 000000000..53a9f555c --- /dev/null +++ b/en/usr_11.txt @@ -0,0 +1,287 @@ +*usr_11.txt* For Vim version 6.3. Last change: 2004 Apr 23 + + VIM USER MANUAL - by Bram Moolenaar + + Recovering from a crash + + +Did your computer crash? And you just spent hours editing? Don't panic! Vim +keeps enough information on harddisk to be able to restore most of your work. +This chapter shows you how to get your work back and explains how the swap +file is used. + +|11.1| Basic recovery +|11.2| Where is the swap file? +|11.3| Crashed or not? +|11.4| Further reading + + Next chapter: |usr_12.txt| Clever tricks + Previous chapter: |usr_10.txt| Making big changes +Table of contents: |usr_toc.txt| + +============================================================================== +*11.1* Basic recovery + +In most cases recovering a file is quite simple, assuming you know which file +you were editing (and the harddisk is still working). Start Vim on the file, +with the "-r" argument added: > + + vim -r help.txt + +Vim will read the swap file (used to store text you were editing) and may read +bits and pieces of the original file. If all is well, you will see these +messages (with different file names, of course): + + Using swap file ".help.txt.swp" ~ + Original file "~/vim/runtime/doc/help.txt" ~ + Recovery completed. You should check if everything is OK. ~ + (You might want to write out this file under another name ~ + and run diff with the original file to check for changes) ~ + Delete the .swp file afterwards. ~ + +To be on the safe side, write this file under another name: > + + :write help.txt.recovered + +Compare the file with the original file to check if you ended up with what you +expected. Vimdiff is very useful for this |08.7|. Watch out for the original +file to contain a more recent version (you saved the file just before the +computer crashed). And check that no lines are missing (something went wrong +that Vim could not recover). + If Vim produces warning messages when recovering, read them carefully. +This is rare though. + +It's normal that the last few changes can not be recovered. Vim flushes the +changes to disk when you don't type for about four seconds, or after typing +about two hundred characters. This is set with the 'updatetime' and +'updatecount' options. Thus when Vim didn't get a chance to save itself when +the system went down, the changes after the last flush will be lost. + +If you were editing without a file name, give an empty string as argument: > + + vim -r "" + +You must be in the right directory, otherwise Vim can't find the swap file. + +============================================================================== +*11.2* Where is the swap file? + +Vim can store the swap file in several places. Normally it is in the same +directory as the original file. To find it, change to the directory of the +file, and use: > + + vim -r + +Vim will list the swap files that it can find. It will also look in other +directories where the swap file for files in the current directory may be +located. It will not find swap files in any other directories though, it +doesn't search the directory tree. + The output could look like this: + + Swap files found: ~ + In current directory: ~ + 1. .main.c.swp ~ + owned by: mool dated: Tue May 29 21:00:25 2001 ~ + file name: ~mool/vim/vim6/src/main.c ~ + modified: YES ~ + user name: mool host name: masaka.moolenaar.net ~ + process ID: 12525 ~ + In directory ~/tmp: ~ + -- none -- ~ + In directory /var/tmp: ~ + -- none -- ~ + In directory /tmp: ~ + -- none -- ~ + +If there are several swap files that look like they may be the one you want to +use, a list is given of these swap files and you are requested to enter the +number of the one you want to use. Carefully look at the dates to decide +which one you want to use. + In case you don't know which one to use, just try them one by one and check +the resulting files if they are what you expected. + + +USING A SPECIFIC SWAP FILE + +If you know which swap file needs to be used, you can recover by giving the +swap file name. Vim will then finds out the name of the original file from +the swap file. + +Example: > + vim -r .help.txt.swo + +This is also handy when the swap file is in another directory than expected. +If this still does not work, see what file names Vim reports and rename the +files accordingly. Check the 'directory' option to see where Vim may have +put the swap file. + + Note: + Vim tries to find the swap file by searching the directories in the + 'dir' option, looking for files that match "filename.sw?". If + wildcard expansion doesn't work (e.g., when the 'shell' option is + invalid), Vim does a desperate try to find the file "filename.swp". + If that fails too, you will have to give the name of the swapfile + itself to be able to recover the file. + +============================================================================== +*11.3* Crashed or not? *ATTENTION* *E325* + +Vim tries to protect you from doing stupid things. Suppose you innocently +start editing a file, expecting the contents of the file to show up. Instead, +Vim produces a very long message: + + E325: ATTENTION ~ + Found a swap file by the name ".main.c.swp" ~ + owned by: mool dated: Tue May 29 21:09:28 2001 ~ + file name: ~mool/vim/vim6/src/main.c ~ + modified: no ~ + user name: mool host name: masaka.moolenaar.net ~ + process ID: 12559 (still running) ~ + While opening file "main.c" ~ + dated: Tue May 29 19:46:12 2001 ~ + ~ + (1) Another program may be editing the same file. ~ + If this is the case, be careful not to end up with two ~ + different instances of the same file when making changes. ~ + Quit, or continue with caution. ~ + ~ + (2) An edit session for this file crashed. ~ + If this is the case, use ":recover" or "vim -r main.c" ~ + to recover the changes (see ":help recovery"). ~ + If you did this already, delete the swap file ".main.c.swp" ~ + to avoid this message. ~ + +You get this message, because, when starting to edit a file, Vim checks if a +swap file already exists for that file. If there is one, there must be +something wrong. It may be one of these two situations. + +1. Another edit session is active on this file. Look in the message for the + line with "process ID". It might look like this: + + process ID: 12559 (still running) ~ + + The text "(still running)" indicates that the process editing this file + runs on the same computer. When working on a non-Unix system you will not + get this extra hint. When editing a file over a network, you may not see + the hint, because the process might be running on another computer. In + those two cases you must find out what the situation is yourself. + If there is another Vim editing the same file, continuing to edit will + result in two versions of the same file. The one that is written last will + overwrite the other one, resulting in loss of changes. You better quit + this Vim. + +2. The swap file might be the result from a previous crash of Vim or the + computer. Check the dates mentioned in the message. If the date of the + swap file is newer than the file you were editing, and this line appears: + + modified: YES ~ + + Then you very likely have a crashed edit session that is worth recovering. + If the date of the file is newer than the date of the swap file, then + either it was changed after the crash (perhaps you recovered it earlier, + but didn't delete the swap file?), or else the file was saved before the + crash but after the last write of the swap file (then you're lucky: you + don't even need that old swap file). Vim will warn you for this with this + extra line: + + NEWER than swap file! ~ + + +UNREADABLE SWAP FILE + +Sometimes the line + + [cannot be read] ~ + +will appear under the name of the swap file. This can be good or bad, +depending on circumstances. + +It is good if a previous editing session crashed without having made any +changes to the file. Then a directory listing of the swap file will show +that it has zero bytes. You may delete it and proceed. + +It is slightly bad if you don't have read permission for the swap file. You +may want to view the file read-only, or quit. On multi-user systems, if you +yourself did the last changes under a different login name, a logout +followed by a login under that other name might cure the "read error". Or +else you might want to find out who last edited (or is editing) the file and +have a talk with them. + +It is very bad if it means there is a physical read error on the disk +containing the swap file. Fortunately, this almost never happens. +You may want to view the file read-only at first (if you can), to see the +extent of the changes that were "forgotten". If you are the one in charge of +that file, be prepared to redo your last changes. + + +WHAT TO DO? + +If dialogs are supported you will be asked to select one of five choices: + + Swap file ".main.c.swp" already exists! ~ + [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~ + +O Open the file readonly. Use this when you just want to view the file and + don't need to recover it. You might want to use this when you know someone + else is editing the file, but you just want to look in it and not make + changes. + +E Edit the file anyway. Use this with caution! If the file is being edited + in another Vim, you might end up with two versions of the file. Vim will + try to warn you when this happens, but better be safe then sorry. + +R Recover the file from the swap file. Use this if you know that the swap + file contains changes that you want to recover. + +Q Quit. This avoids starting to edit the file. Use this if there is another + Vim editing the same file. + When you just started Vim, this will exit Vim. When starting Vim with + files in several windows, Vim quits only if there is a swap file for the + first one. When using an edit command, the file will not be loaded and you + are taken back to the previously edited file. + +A Abort. Like Quit, but also abort further commands. This is useful when + loading a script that edits several files, such as a session with multiple + windows. + +D Delete the swap file. Use this when you are sure you no longer need it. + For example, when it doesn't contain changes, or when the file itself is + newer than the swap file. + On Unix this choice is only offered when the process that created the + swap file does not appear to be running. + +If you do not get the dialog (you are running a version of Vim that does not +support it), you will have to do it manually. To recover the file, use this +command: > + + :recover + + +Vim cannot always detect that a swap file already exists for a file. This is +the case when the other edit session puts the swap files in another directory +or when the path name for the file is different when editing it on different +machines. Therefore, don't rely on Vim always warning you. + +If you really don't want to see this message, you can add the 'A' flag to the +'shortmess' option. But it's very unusual that you need this. + +============================================================================== +*11.4* Further reading + +|swap-file| An explanation about where the swap file will be created and + what its name is. +|:preserve| Manually flushing the swap file to disk. +|:swapname| See the name of the swap file for the current file. +'updatecount' Number of key strokes after which the swap file is flushed to + disk. +'updatetime' Timeout after which the swap file is flushed to disk. +'swapsync' Whether the disk is synced when the swap file is flushed. +'directory' List of directory names where to store the swap file. +'maxmem' Limit for memory usage before writing text to the swap file. +'maxmemtot' Same, but for all files in total. + +============================================================================== + +Next chapter: |usr_12.txt| Clever tricks + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_12.txt b/en/usr_12.txt new file mode 100644 index 000000000..6bbbcf224 --- /dev/null +++ b/en/usr_12.txt @@ -0,0 +1,358 @@ +*usr_12.txt* For Vim version 6.3. Last change: 2004 May 01 + + VIM USER MANUAL - by Bram Moolenaar + + Clever tricks + + +By combining several commands you can make Vim do nearly everything. In this +chapter a number of useful combinations will be presented. This uses the +commands introduced in the previous chapters and a few more. + +|12.1| Replace a word +|12.2| Change "Last, First" to "First Last" +|12.3| Sort a list +|12.4| Reverse line order +|12.5| Count words +|12.6| Find a man page +|12.7| Trim blanks +|12.8| Find where a word is used + + Next chapter: |usr_20.txt| Typing command-line commands quickly + Previous chapter: |usr_11.txt| Recovering from a crash +Table of contents: |usr_toc.txt| + +============================================================================== +*12.1* Replace a word + +The substitute command can be used to replace all occurrences of a word with +another word: > + + :%s/four/4/g + +The "%" range means to replace in all lines. The "g" flag at the end causes +all words in a line to be replaced. + This will not do the right thing if your file also contains "thirtyfour". +It would be replaced with "thirty4". To avoid this, use the "\<" item to +match the start of a word: > + + :%s/\<four/4/g + +Obviously, this still goes wrong on "fourty". Use "\>" to match the end of a +word: > + + :%s/\<four\>/4/g + +If you are programming, you might want to replace "four" in comments, but not +in the code. Since this is difficult to specify, add the "c" flag to have the +substitute command prompt you for each replacement: > + + + :%s/\<four\>/4/gc + + +REPLACING IN SEVERAL FILES + +Suppose you want to replace a word in more than one file. You could edit each +file and type the command manually. It's a lot faster to use record and +playback. + Let's assume you have a directory with C++ files, all ending in ".cpp". +There is a function called "GetResp" that you want to rename to "GetAnswer". + + vim *.cpp Start Vim, defining the argument list to + contain all the C++ files. You are now in the + first file. + qq Start recording into the q register + :%s/\<GetResp\>/GetAnswer/g + Do the replacements in the first file. + :wnext Write this file and move to the next one. + q Stop recording. + @q Execute the q register. This will replay the + substitution and ":wnext". You can verify + that this doesn't produce an error message. + 999@q Execute the q register on the remaining files. + +At the last file you will get an error message, because ":wnext" cannot move +to the next file. This stops the execution, and everything is done. + + Note: + When playing back a recorded sequence, an error stops the execution. + Therefore, make sure you don't get an error message when recording. + +There is one catch: If one of the .cpp files does not contain the word +"GetResp", you will get an error and replacing will stop. To avoid this, add +the "e" flag to the substitute command: > + + :%s/\<GetResp\>/GetAnswer/ge + +The "e" flag tells ":substitute" that not finding a match is not an error. + +============================================================================== +*12.2* Change "Last, First" to "First Last" + +You have a list of names in this form: + + Doe, John ~ + Smith, Peter ~ + +You want to change that to: + + John Doe ~ + Peter Smith ~ + +This can be done with just one command: > + + :%s/\([^,]*\), \(.*\)/\2 \1/ + +Let's break this down in parts. Obviously it starts with a substitute +command. The "%" is the line range, which stands for the whole file. Thus +the substitution is done in every line in the file. + The arguments for the substitute command are "/from/to/". The slashes +separate the "from" pattern and the "to" string. This is what the "from" +pattern contains: + \([^,]*\), \(.*\) ~ + + The first part between \( \) matches "Last" \( \) + match anything but a comma [^,] + any number of times * + matches ", " literally , + The second part between \( \) matches "First" \( \) + any character . + any number of times * + +In the "to" part we have "\2" and "\1". These are called backreferences. +They refer to the text matched by the "\( \)" parts in the pattern. "\2" +refers to the text matched by the second "\( \)", which is the "First" name. +"\1" refers to the first "\( \)", which is the "Last" name. + You can use up to nine backreferences in the "to" part of a substitute +command. "\0" stands for the whole matched pattern. There are a few more +special items in a substitute command, see |sub-replace-special|. + +============================================================================== +*12.3* Sort a list + +In a Makefile you often have a list of files. For example: + + OBJS = \ ~ + version.o \ ~ + pch.o \ ~ + getopt.o \ ~ + util.o \ ~ + getopt1.o \ ~ + inp.o \ ~ + patch.o \ ~ + backup.o ~ + +To sort this list, filter the text through the external sort command: > + + /^OBJS + j + :.,/^$/-1!sort + +This goes to the first line, where "OBJS" is the first thing in the line. +Then it goes one line down and filters the lines until the next empty line. +You could also select the lines in Visual mode and then use "!sort". That's +easier to type, but more work when there are many lines. + The result is this: + + OBJS = \ ~ + backup.o ~ + getopt.o \ ~ + getopt1.o \ ~ + inp.o \ ~ + patch.o \ ~ + pch.o \ ~ + util.o \ ~ + version.o \ ~ + + +Notice that a backslash at the end of each line is used to indicate the line +continues. After sorting, this is wrong! The "backup.o" line that was at +the end didn't have a backslash. Now that it sorts to another place, it +must have a backslash. + The simplest solution is to add the backslash with "A \<Esc>". You can +keep the backslash in the last line, if you make sure an empty line comes +after it. That way you don't have this problem again. + +============================================================================== +*12.4* Reverse line order + +The |:global| command can be combined with the |:move| command to move all the +lines before the first line, resulting in a reversed file. The command is: > + + :global/^/m 0 + +Abbreviated: > + + :g/^/m 0 + +The "^" regular expression matches the beginning of the line (even if the line +is blank). The |:move| command moves the matching line to after the mythical +zeroth line, so the current matching line becomes the first line of the file. +As the |:global| command is not confused by the changing line numbering, +|:global| proceeds to match all remaining lines of the file and puts each as +the first. + +This also works on a range of lines. First move to above the first line and +mark it with "mt". Then move the cursor to the last line in the range and +type: > + + :'t+1,.g/^/m 't + +============================================================================== +*12.5* Count words + +Sometimes you have to write a text with a maximum number of words. Vim can +count the words for you. + When the whole file is what you want to count the words in, use this +command: > + + g CTRL-G + +Do not type a space after the g, this is just used here to make the command +easy to read. + The output looks like this: + + Col 1 of 0; Line 141 of 157; Word 748 of 774; Byte 4489 of 4976 ~ + +You can see on which word you are (748), and the total number of words in the +file (774). + +When the text is only part of a file, you could move to the start of the text, +type "g CTRL-G", move to the end of the text, type "g CTRL-G" again, and then +use your brain to compute the difference in the word position. That's a good +exercise, but there is an easier way. With Visual mode, select the text you +want to count words in. Then type g CTRL-G. The result: + + Selected 5 of 293 Lines; 70 of 1884 Words; 359 of 10928 Bytes ~ + +For other ways to count words, lines and other items, see |count-items|. + +============================================================================== +*12.6* Find a man page *find-manpage* + +While editing a shell script or C program, you are using a command or function +that you want to find the man page for (this is on Unix). Let's first use a +simple way: Move the cursor to the word you want to find help on and press > + + K + +Vim will run the external "man" program on the word. If the man page is +found, it is displayed. This uses the normal pager to scroll through the text +(mostly the "more" program). When you get to the end pressing <Enter> will +get you back into Vim. + +A disadvantage is that you can't see the man page and the text you are working +on at the same time. There is a trick to make the man page appear in a Vim +window. First, load the man filetype plugin: > + + :runtime! ftplugin/man.vim + +Put this command in your vimrc file if you intend to do this often. Now you +can use the ":Man" command to open a window on a man page: > + + :Man csh + +You can scroll around and the text is highlighted. This allows you to find +the help you were looking for. Use CTRL-W w to jump to the window with the +text you were working on. + To find a man page in a specific section, put the section number first. +For example, to look in section 3 for "echo": > + + :Man 3 echo + +To jump to another man page, which is in the text with the typical form +"word(1)", press CTRL-] on it. Further ":Man" commands will use the same +window. + +To display a man page for the word under the cursor, use this: > + + \K + +(If you redefined the <Leader>, use it instead of the backslash). +For example, you want to know the return value of "strstr()" while editing +this line: + + if (strstr(input, "aap") == ) ~ + +Move the cursor to somewhere on "strstr" and type "\K". A window will open +to display the man page for strstr(). + +============================================================================== +*12.7* Trim blanks + +Some people find spaces and tabs at the end of a line useless, wasteful, and +ugly. To remove whitespace at the end of every line, execute the following +command: > + + :%s/\s\+$// + +The line range "%" is used, thus this works on the whole file. The pattern +that the ":substitute" command matches with is "\s\+$". This finds white +space characters (\s), 1 or more of them (\+), before the end-of-line ($). +Later will be explained how you write patterns like this |usr_27.txt|. + The "to" part of the substitute command is empty: "//". Thus it replaces +with nothing, effectively deleting the matched white space. + +Another wasteful use of spaces is placing them before a Tab. Often these can +be deleted without changing the amount of white space. But not always! +Therefore, you can best do this manually. Use this search command: > + + / + +You cannot see it, but there is a space before a tab in this command. Thus +it's "/<Space><Tab>". Now use "x" to delete the space and check that the +amount of white space doesn't change. You might have to insert a Tab if it +does change. Type "n" to find the next match. Repeat this until no more +matches can be found. + +============================================================================== +*12.8* Find where a word is used + +If you are a UNIX user, you can use a combination of Vim and the grep command +to edit all the files that contain a given word. This is extremely useful if +you are working on a program and want to view or edit all the files that +contain a specific variable. + For example, suppose you want to edit all the C program files that contain +the word "frame_counter". To do this you use the command: > + + vim `grep -l frame_counter *.c` + +Let's look at this command in detail. The grep command searches through a set +of files for a given word. Because the -l argument is specified, the command +will only list the files containing the word and not print the matching lines. +The word it is searching for is "frame_counter". Actually, this can be any +regular expression. (Note: What grep uses for regular expressions is not +exactly the same as what Vim uses.) + The entire command is enclosed in backticks (`). This tells the UNIX shell +to run this command and pretend that the results were typed on the command +line. So what happens is that the grep command is run and produces a list of +files, these files are put on the Vim command line. This results in Vim +editing the file list that is the output of grep. You can then use commands +like ":next" and ":first" to browse through the files. + + +FINDING EACH LINE + +The above command only finds the files in which the word is found. You still +have to find the word within the files. + Vim has a built-in command that you can use to search a set of files for a +given string. If you want to find all occurrences of "error_string" in all C +program files, for example, enter the following command: > + + :grep error_string *.c + +This causes Vim to search for the string "error_string" in all the specified +files (*.c). The editor will now open the first file where a match is found +and position the cursor on the first matching line. To go to the next +matching line (no matter in what it is file), use the ":cnext" command. To go +to the previous match, use the ":cprev" command. Use ":clist" to see all the +matches and where they are. + The ":grep" command uses the external commands grep (on Unix) or findstr +(on Windows). You can change this by setting the option 'grepprg'. + +============================================================================== + +Next chapter: |usr_20.txt| Typing command-line commands quickly + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_20.txt b/en/usr_20.txt new file mode 100644 index 000000000..5fb174894 --- /dev/null +++ b/en/usr_20.txt @@ -0,0 +1,384 @@ +*usr_20.txt* For Vim version 6.3. Last change: 2003 Apr 30 + + VIM USER MANUAL - by Bram Moolenaar + + Typing command-line commands quickly + + +Vim has a few generic features that makes it easier to enter commands. Colon +commands can be abbreviated, edited and repeated. Completion is available for +nearly everything. + +|20.1| Command line editing +|20.2| Command line abbreviations +|20.3| Command line completion +|20.4| Command line history +|20.5| Command line window + + Next chapter: |usr_21.txt| Go away and come back + Previous chapter: |usr_12.txt| Clever tricks +Table of contents: |usr_toc.txt| + +============================================================================== +*20.1* Command line editing + +When you use a colon (:) command or search for a string with / or ?, Vim puts +the cursor on the bottom of the screen. There you type the command or search +pattern. This is called the Command line. Also when it's used for entering a +search command. + +The most obvious way to edit the command you type is by pressing the <BS> key. +This erases the character before the cursor. To erase another character, +typed earlier, first move the cursor with the cursor keys. + For example, you have typed this: > + + :s/col/pig/ + +Before you hit <Enter>, you notice that "col" should be "cow". To correct +this, you type <Left> five times. The cursor is now just after "col". Type +<BS> and "w" to correct: > + + :s/cow/pig/ + +Now you can press <Enter> directly. You don't have to move the cursor to the +end of the line before executing the command. + +The most often used keys to move around in the command line: + + <Left> one character left + <Right> one character right + <S-Left> or <C-Left> one word left + <S-Right> or <C-Right> one word right + CTRL-B or <Home> to begin of command line + CTRL-E or <End> to end of command line + + Note: + <S-Left> (cursor left key with Shift key pressed) and <C-Left> (cursor + left key with Control pressed) will not work on all keyboards. Same + for the other Shift and Control combinations. + +You can also use the mouse to move the cursor. + + +DELETING + +As mentioned, <BS> deletes the character before the cursor. To delete a whole +word use CTRL-W. + + /the fine pig ~ + + CTRL-W + + /the fine ~ + +CTRL-U removes all text, thus allows you to start all over again. + + +OVERSTRIKE + +The <Insert> key toggles between inserting characters and replacing the +existing ones. Start with this text: + + /the fine pig ~ + +Move the cursor to the start of "fine" with <S-Left> twice (or <Left> eight +times, if <S-Left> doesn't work). Now press <Insert> to switch to overstrike +and type "great": + + /the greatpig ~ + +Oops, we lost the space. Now, don't use <BS>, because it would delete the +"t" (this is different from Replace mode). Instead, press <Insert> to switch +from overstrike to inserting, and type the space: + + /the great pig ~ + + +CANCELLING + +You thought of executing a : or / command, but changed your mind. To get rid +of what you already typed, without executing it, press CTRL-C or <Esc>. + + Note: + <Esc> is the universal "get out" key. Unfortunately, in the good old + Vi pressing <Esc> in a command line executed the command! Since that + might be considered to be a bug, Vim uses <Esc> to cancel the command. + But with the 'cpoptions' option it can be made Vi compatible. And + when using a mapping (which might be written for Vi) <Esc> also works + Vi compatible. Therefore, using CTRL-C is a method that always works. + +If you are at the start of the command line, pressing <BS> will cancel the +command. It's like deleting the ":" or "/" that the line starts with. + +============================================================================== +*20.2* Command line abbreviations + +Some of the ":" commands are really long. We already mentioned that +":substitute" can be abbreviated to ":s". This is a generic mechanism, all +":" commands can be abbreviated. + +How short can a command get? There are 26 letters, and many more commands. +For example, ":set" also starts with ":s", but ":s" doesn't start a ":set" +command. Instead ":set" can be abbreviated to ":se". + When the shorter form of a command could be used for two commands, it +stands for only one of them. There is no logic behind which one, you have to +learn them. In the help files the shortest form that works is mentioned. For +example: > + + :s[ubstitute] + +This means that the shortest form of ":substitute" is ":s". The following +characters are optional. Thus ":su" and ":sub" also work. + +In the user manual we will either use the full name of command, or a short +version that is still readable. For example, ":function" can be abbreviated +to ":fu". But since most people don't understand what that stands for, we +will use ":fun". (Vim doesn't have a ":funny" command, otherwise ":fun" would +be confusing too.) + +It is recommended that in Vim scripts you write the full command name. That +makes it easier to read back when you make later changes. Except for some +often used commands like ":w" (":write") and ":r" (":read"). + A particularly confusing one is ":end", which could stand for ":endif", +":endwhile" or ":endfunction". Therefore, always use the full name. + + +SHORT OPTION NAMES + +In the user manual the long version of the option names is used. Many options +also have a short name. Unlike ":" commands, there is only one short name +that works. For example, the short name of 'autoindent' is 'ai'. Thus these +two commands do the same thing: > + + :set autoindent + :set ai + +You can find the full list of long and short names here: |option-list|. + +============================================================================== +*20.3* Command line completion + +This is one of those Vim features that, by itself, is a reason to switch from +Vi to Vim. Once you have used this, you can't do without. + +Suppose you have a directory that contains these files: + + info.txt + intro.txt + bodyofthepaper.txt + +To edit the last one, you use the command: > + + :edit bodyofthepaper.txt + +It's easy to type this wrong. A much quicker way is: > + + :edit b<Tab> + +Which will result in the same command. What happened? The <Tab> key does +completion of the word before the cursor. In this case "b". Vim looks in the +directory and finds only one file that starts with a "b". That must be the +one you are looking for, thus Vim completes the file name for you. + +Now type: > + + :edit i<Tab> + +Vim will beep, and give you: > + + :edit info.txt + +The beep means that Vim has found more than one match. It then uses the first +match it found (alphabetically). If you press <Tab> again, you get: > + + :edit intro.txt + +Thus, if the first <Tab> doesn't give you the file you were looking for, press +it again. If there are more matches, you will see them all, one at a time. + If you press <Tab> on the last matching entry, you will go back to what you +first typed: > + + :edit i + +Then it starts all over again. Thus Vim cycles through the list of matches. +Use CTRL-P to go through the list in the other direction: + + <------------------- <Tab> -------------------------+ + | + <Tab> --> <Tab> --> + :edit i :edit info.txt :edit intro.txt + <-- CTRL-P <-- CTRL-P + | + +---------------------- CTRL-P ------------------------> + + +CONTEXT + +When you type ":set i" instead of ":edit i" and press <Tab> you get: > + + :set icon + +Hey, why didn't you get ":set info.txt"? That's because Vim has context +sensitive completion. The kind of words Vim will look for depends on the +command before it. Vim knows that you cannot use a file name just after a +":set" command, but you can use an option name. + Again, if you repeat typing the <Tab>, Vim will cycle through all matches. +There are quite a few, it's better to type more characters first: > + + :set isk<Tab> + +Gives: > + + :set iskeyword + +Now type "=" and press <Tab>: > + + :set iskeyword=@,48-57,_,192-255 + +What happens here is that Vim inserts the old value of the option. Now you +can edit it. + What is completed with <Tab> is what Vim expects in that place. Just try +it out to see how it works. In some situations you will not get what you +want. That's either because Vim doesn't know what you want, or because +completion was not implemented for that situation. In that case you will get +a <Tab> inserted (displayed as ^I). + + +LIST MATCHES + +When there are many matches, you would like to see an overview. Do this by +pressing CTRL-D. For example, pressing CTRL-D after: > + + :set is + +results in: > + + :set is + incsearch isfname isident iskeyword isprint + :set is + +Vim lists the matches and then comes back with the text you typed. You can +now check the list for the item you wanted. If it isn't there, you can use +<BS> to correct the word. If there are many matches, type a few more +characters before pressing <Tab> to complete the rest. + If you have watched carefully, you will have noticed that "incsearch" +doesn't start with "is". In this case "is" stands for the short name of +"incsearch". (Many options have a short and a long name.) Vim is clever +enough to know that you might have wanted to expand the short name of the +option into the long name. + + +THERE IS MORE + +The CTRL-L command completes the word to the longest unambiguous string. If +you type ":edit i" and there are files "info.txt" and "info_backup.txt" you +will get ":edit info". + +The 'wildmode' option can be used to change the way completion works. +The 'wildmenu' option can be used to get a menu-like list of matches. +Use the 'suffixes' option to specify files that are less important and appear +at the end of the list of files. +The 'wildignore' option specifies files that are not listed at all. + +More about all of this here: |cmdline-completion| + +============================================================================== +*20.4* Command line history + +In chapter 3 we briefly mentioned the history. The basics are that you can +use the <Up> key to recall an older command line. <Down> then takes you back +to newer commands. + +There are actually four histories. The ones we will mention here are for ":" +commands and for "/" and "?" search commands. The "/" and "?" commands share +the same history, because they are both search commands. The two other +histories are for expressions and input lines for the input() function. +|cmdline-history| + +Suppose you have done a ":set" command, typed ten more colon commands and then +want to repeat that ":set" command again. You could press ":" and then ten +times <Up>. There is a quicker way: > + + :se<Up> + +Vim will now go back to the previous command that started with "se". You have +a good chance that this is the ":set" command you were looking for. At least +you should not have to press <Up> very often (unless ":set" commands is all +you have done). + +The <Up> key will use the text typed so far and compare it with the lines in +the history. Only matching lines will be used. + If you do not find the line you were looking for, use <Down> to go back to +what you typed and correct that. Or use CTRL-U to start all over again. + +To see all the lines in the history: > + + :history + +That's the history of ":" commands. The search history is displayed with this +command: > + + :history / + +CTRL-P will work like <Up>, except that it doesn't matter what you already +typed. Similarly for CTRL-N and <Down>. CTRL-P stands for previous, CTRL-N +for next. + +============================================================================== +*20.5* Command line window + +Typing the text in the command line works different from typing text in Insert +mode. It doesn't allow many commands to change the text. For most commands +that's OK, but sometimes you have to type a complicated command. That's where +the command line window is useful. + +Open the command line window with this command: > + + q: + +Vim now opens a (small) window at the bottom. It contains the command line +history, and an empty line at the end: + + +-------------------------------------+ + |other window | + |~ | + |file.txt=============================| + |:e c | + |:e config.h.in | + |:set path=.,/usr/include,, | + |:set iskeyword=@,48-57,_,192-255 | + |:set is | + |:q | + |: | + |command-line=========================| + | | + +-------------------------------------+ + +You are now in Normal mode. You can use the "hjkl" keys to move around. For +example, move up with "5k" to the ":e config.h.in" line. Type "$h" to go to +the "i" of "in" and type "cwout". Now you have changed the line to: + + :e config.h.out ~ + +Now press <Enter> and this command will be executed. The command line window +will close. + The <Enter> command will execute the line under the cursor. It doesn't +matter whether Vim is in Insert mode or in Normal mode. + Changes in the command line window are lost. They do not result in the +history to be changed. Except that the command you execute will be added to +the end of the history, like with all executed commands. + +The command line window is very useful when you want to have overview of the +history, lookup a similar command, change it a bit and execute it. A search +command can be used to find something. + In the previous example the "?config" search command could have been used +to find the previous command that contains "config". It's a bit strange, +because you are using a command line to search in the command line window. +While typing that search command you can't open another command line window, +there can be only one. + +============================================================================== + +Next chapter: |usr_21.txt| Go away and come back + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_21.txt b/en/usr_21.txt new file mode 100644 index 000000000..434eb037d --- /dev/null +++ b/en/usr_21.txt @@ -0,0 +1,456 @@ +*usr_21.txt* For Vim version 6.3. Last change: 2004 Mar 29 + + VIM USER MANUAL - by Bram Moolenaar + + Go away and come back + + +This chapter goes into mixing the use of other programs with Vim. Either by +executing program from inside Vim or by leaving Vim and coming back later. +Furthermore, this is about the ways to remember the state of Vim and restore +it later. + +|21.1| Suspend and resume +|21.2| Executing shell commands +|21.3| Remembering information; viminfo +|21.4| Sessions +|21.5| Views +|21.6| Modelines + + Next chapter: |usr_22.txt| Finding the file to edit + Previous chapter: |usr_20.txt| Typing command-line commands quickly +Table of contents: |usr_toc.txt| + +============================================================================== +*21.1* Suspend and resume + +Like most Unix programs Vim can be suspended by pressing CTRL-Z. This stops +Vim and takes you back to the shell it was started in. You can then do any +other commands until you are bored with them. Then bring back Vim with the +"fg" command. > + + CTRL-Z + {any sequence of shell commands} + fg + +You are right back where you left Vim, nothing has changed. + In case pressing CTRL-Z doesn't work, you can also use ":suspend". +Don't forget to bring Vim back to the foreground, you would lose any changes +that you made! + +Only Unix has support for this. On other systems Vim will start a shell for +you. This also has the functionality of being able to execute shell commands. +But it's a new shell, not the one that you started Vim from. + When you are running the GUI you can't go back to the shell where Vim was +started. CTRL-Z will minimize the Vim window instead. + +============================================================================== +*21.2* Executing shell commands + +To execute a single shell command from Vim use ":!{command}". For example, to +see a directory listing: > + + :!ls + :!dir + +The first one is for Unix, the second one for MS-Windows. + Vim will execute the program. When it ends you will get a prompt to hit +<Enter>. This allows you to have a look at the output from the command before +returning to the text you were editing. + The "!" is also used in other places where a program is run. Let's take +a look at an overview: + + :!{program} execute {program} + :r !{program} execute {program} and read its output + :w !{program} execute {program} and send text to its input + :[range]!{program} filter text through {program} + +Notice that the precense of a range before "!{program}" makes a big +difference. Without it executes the program normally, with the range a number +of text lines is filtered through the program. + +Executing a whole row of programs this way is possible. But a shell is much +better at it. You can start a new shell this way: > + + :shell + +This is similar to using CTRL-Z to suspend Vim. The difference is that a new +shell is started. + +When using the GUI the shell will be using the Vim window for its input and +output. Since Vim is not a terminal emulator, this will not work perfectly. +If you have trouble, try toggling the 'guipty' option. If this still doesn't +work well enough, start a new terminal to run the shell in. For example with: +> + :!xterm& + +============================================================================== +*21.3* Remembering information; viminfo + +After editing for a while you will have text in registers, marks in various +files, a command line history filled with carefully crafted commands. When +you exit Vim all of this is lost. But you can get it back! + +The viminfo file is designed to store status information: + + Command-line and Search pattern history + Text in registers + Marks for various files + The buffer list + Global variables + +Each time you exit Vim it will store this information in a file, the viminfo +file. When Vim starts again, the viminfo file is read and the information +restored. + +The 'viminfo' option is set by default to restore a limited number of items. +You might want to set it to remember more information. This is done through +the following command: > + + :set viminfo=string + +The string specifies what to save. The syntax of this string is an option +character followed by an argument. The option/argument pairs are separated by +commas. + Take a look at how you can build up your own viminfo string. First, the ' +option is used to specify how many files for which you save marks (a-z). Pick +a nice even number for this option (1000, for instance). Your command now +looks like this: > + + :set viminfo='1000 + +The f option controls whether global marks (A-Z and 0-9) are stored. If this +option is 0, none are stored. If it is 1 or you do not specify an f option, +the marks are stored. You want this feature, so now you have this: > + + :set viminfo='1000,f1 + +The < option controls how many lines are saved for each of the registers. By +default, all the lines are saved. If 0, nothing is saved. To avoid adding +thousands of lines to your viminfo file (which might never get used and makes +starting Vim slower) you use a maximum of 500 lines: > + + :set viminfo='1000,f1,<500 +< +Other options you might want to use: + : number of lines to save from the command line history + @ number of lines to save from the input line history + / number of lines to save from the search history + r removable media, for which no marks will be stored (can be + used several times) + ! global variables that start with an uppercase letter and + don't contain lowercase letters + h disable 'hlsearch' highlighting when starting + % the buffer list (only restored when starting Vim without file + arguments) + c convert the text using 'encoding' + n name used for the viminfo file (must be the last option) + +See the 'viminfo' option and |viminfo-file| for more information. + +When you run Vim multiple times, the last one exiting will store its +information. This may cause information that previously exiting Vims stored +to be lost. Each item can be remembered only once. + + +GETTING BACK TO WHERE YOU WERE + +You are halfway editing a file and it's time to leave for holidays. You exit +Vim and go enjoy yourselves, forgetting all about your work. After a couple +of weeks you start Vim, and type: +> + '0 + +And you are right back where you left Vim. So you can get on with your work. + Vim creates a mark each time you exit Vim. The last one is '0. The +position that '0 pointed to is made '1. And '1 is made to '2, and so forth. +Mark '9 is lost. + The ":marks" command is useful to find out where '0 to '9 will take you. + + +MOVE INFO FROM ONE VIM TO ANOTHER + +You can use the ":wviminfo" and ":rviminfo" commands to save and restore the +information while still running Vim. This is useful for exchanging register +contents between two instances of Vim, for example. In the first Vim do: > + + :wviminfo! ~/tmp/viminfo + +And in the second Vim do: > + + :rviminfo! ~/tmp/viminfo + +Obviously, the "w" stands for "write" and the "r" for "read". + The ! character is used by ":wviminfo" to forcefully overwrite an existing +file. When it is omitted, and the file exists, the information is merged into +the file. + The ! character used for ":rviminfo" means that all the information is +used, this may overwrite existing information. Without the ! only information +that wasn't set is used. + These commands can also be used to store info and use it again later. You +could make a directory full of viminfo files, each containing info for a +different purpose. + +============================================================================== +*21.4* Sessions + +Suppose you are editing along, and it is the end of the day. You want to quit +work and pick up where you left off the next day. You can do this by saving +your editing session and restoring it the next day. + A Vim session contains all the information about what you are editing. +This includes things such as the file list, window layout, global variables, +options and other information. (Exactly what is remembered is controlled by +the 'sessionoptions' option, described below.) + The following command creates a session file: > + + :mksession vimbook.vim + +Later if you want to restore this session, you can use this command: > + + :source vimbook.vim + +If you want to start Vim and restore a specific session, you can use the +following command: > + + vim -S vimbook.vim + +This tells Vim to read a specific file on startup. The 'S' stands for +session (actually, you can source any Vim script with -S, thus it might as +well stand for "source"). + +The windows that were open are restored, with the same position and size as +before. Mappings and option values are like before. + What exactly is restored depends on the 'sessionoptions' option. The +default value is "blank,buffers,curdir,folds,help,options,winsize". + + blank keep empty windows + buffers all buffers, not only the ones in a window + curdir the current directory + folds folds, also manually created ones + help the help window + options all options and mappings + winsize window sizes + +Change this to your liking. To also restore the size of the Vim window, for +example, use: > + + :set sessionoptions+=resize + + +SESSION HERE, SESSION THERE + +The obvious way to use sessions is when working on different projects. +Suppose you store you session files in the directory "~/.vim". You are +currently working on the "secret" project and have to switch to the "boring" +project: > + + :wall + :mksession! ~/.vim/secret.vim + :source ~/.vim/boring.vim + +This first uses ":wall" to write all modified files. Then the current session +is saved, using ":mksession!". This overwrites the previous session. The +next time you load the secret session you can continue where you were at this +point. And finally you load the new "boring" session. + +If you open help windows, split and close various window, and generally mess +up the window layout, you can go back to the last saved session: > + + :source ~/.vim/boring.vim + +Thus you have complete control over whether you want to continue next time +where you are now, by saving the current setup in a session, or keep the +session file as a starting point. + Another way of using sessions is to create a window layout that you like to +use, and save this in a session. Then you can go back to this layout whenever +you want. + For example, this is a nice layout to use: + + +----------------------------------------+ + | VIM - main help file | + | | + |Move around: Use the cursor keys, or "h| + |help.txt================================| + |explorer | | + |dir |~ | + |dir |~ | + |file |~ | + |file |~ | + |file |~ | + |file |~ | + |~/=========|[No File]===================| + | | + +----------------------------------------+ + +This has a help window at the top, so that you can read this text. The narrow +vertical window on the left contains a file explorer. This is a Vim plugin +that lists the contents of a directory. You can select files to edit there. +More about this in the next chapter. + Create this from a just started Vim with: > + + :help + CTRL-W w + :vertical split ~/ + +You can resize the windows a bit to your liking. Then save the session with: +> + :mksession ~/.vim/mine.vim + +Now you can start Vim with this layout: > + + vim -S ~/.vim/mine.vim + +Hint: To open a file you see listed in the explorer window in the empty +window, move the cursor to the filename and press "O". Double clicking with +the mouse will also do this. + + +UNIX AND MS-WINDOWS + +Some people have to do work on MS-Windows systems one day and on Unix another +day. If you are one of them, consider adding "slash" and "unix" to +'sessionoptions'. The session files will then be written in a format that can +be used on both systems. This is the command to put in your vimrc file: > + + :set sessionoptions+=unix,slash + +Vim will use the Unix format then, because the MS-Windows Vim can read and +write Unix files, but Unix Vim can't read MS-Windows format session files. +Similarly, MS-Windows Vim understands file names with / to separate names, but +Unix Vim doesn't understand \. + + +SESSIONS AND VIMINFO + +Sessions store many things, but not the position of marks, contents of +registers and the command line history. You need to use the viminfo feature +for these things. + In most situations you will want to use sessions separately from viminfo. +This can be used to switch to another session, but keep the command line +history. And yank text into registers in one session, and paste it back in +another session. + You might prefer to keep the info with the session. You will have to do +this yourself then. Example: > + + :mksession! ~/.vim/secret.vim + :wviminfo! ~/.vim/secret.viminfo + +And to restore this again: > + + :source ~/.vim/secret.vim + :rviminfo! ~/.vim/secret.viminfo + +============================================================================== +*21.5* Views + +A session stores the looks of the whole of Vim. When you want to store the +properties for one window only, use a view. + The use of a view is for when you want to edit a file in a specific way. +For example, you have line numbers enabled with the 'number' option and +defined a few folds. Just like with sessions, you can remember this view on +the file and restore it later. Actually, when you store a session, it stores +the view of each window. + There are two basic ways to use views. The first is to let Vim pick a name +for the view file. You can restore the view when you later edit the same +file. To store the view for the current window: > + + :mkview + +Vim will decide where to store the view. When you later edit the same file +you get the view back with this command: > + + :loadview + +That's easy, isn't it? + Now you want to view the file without the 'number' option on, or with all +folds open, you can set the options to make the window look that way. Then +store this view with: > + + :mkview 1 + +Obviously, you can get this back with: > + + :loadview 1 + +Now you can switch between the two views on the file by using ":loadview" with +and without the "1" argument. + You can store up to ten views for the same file this way, one unnumbered +and nine numbered 1 to 9. + + +A VIEW WITH A NAME + +The second basic way to use views is by storing the view in a file with a name +you chose. This view can be loaded while editing another file. Vim will then +switch to editing the file specified in the view. Thus you can use this to +quickly switch to editing another file, with all its options set as you saved +them. + For example, to save the view of the current file: > + + :mkview ~/.vim/main.vim + +You can restore it with: > + + :source ~/.vim/main.vim + +============================================================================== +*21.6* Modelines + +When editing a specific file, you might set options specifically for that +file. Typing these commands each time is boring. Using a session or view for +editing a file doesn't work when sharing the file between several people. + The solution for this situation is adding a modeline to the file. This is +a line of text that tells Vim the values of options, to be used in this file +only. + A typical example is a C program where you make indents by a multiple of 4 +spaces. This requires setting the 'shiftwidth' option to 4. This modeline +will do that: + + /* vim:set shiftwidth=4: */ ~ + +Put this line as one of the first or last five lines in the file. When +editing the file, you will notice that 'shiftwidth' will have been set to +four. When editing another file, it's set back to the default value of eight. + For some files the modeline fits well in the header, thus it can be put at +the top of the file. For text files and other files where the modeline gets +in the way of the normal contents, put it at the end of the file. + +The 'modelines' option specifies how many lines at the start and end of the +file are inspected for containing a modeline. To inspect ten lines: > + + :set modelines=10 + +The 'modeline' option can be used to switch this off. Do this when you are +working as root or don't trust the files you are editing: > + + :set nomodeline + +Use this format for the modeline: + + any-text vim:set {option}={value} ... : any-text ~ + +The "any-text" indicates that you can put any text before and after the part +that Vim will use. This allows making it look like a comment, like what was +done above with /* and */. + The " vim:" part is what makes Vim recognize this line. The must be white +space before "vim", or "vim" must be at the start of the line. Thus using +something like "gvim:" will not work. + The part between the colons is a ":set" command. It works the same way as +typing the ":set" command, except that you need to insert a backslash before a +colon (otherwise it would be seen as the end of the modeline). + +Another example: + + // vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here ~ + +There is an extra backslash before the first colon, so that it's included in +the ":set" command. The text after the second colon is ignored, thus a remark +can be placed there. + +For more details see |modeline|. + +============================================================================== + +Next chapter: |usr_22.txt| Finding the file to edit + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_22.txt b/en/usr_22.txt new file mode 100644 index 000000000..49cc45b36 --- /dev/null +++ b/en/usr_22.txt @@ -0,0 +1,364 @@ +*usr_22.txt* For Vim version 6.3. Last change: 2003 Mar 17 + + VIM USER MANUAL - by Bram Moolenaar + + Finding the file to edit + + +Files can be found everywhere. So how do you find them? Vim offers various +ways to browse the directory tree. There are commands to jump to a file that +is mentioned in another. And Vim remembers which files have been edited +before. + +|22.1| The file explorer +|22.2| The current directory +|22.3| Finding a file +|22.4| The buffer list + + Next chapter: |usr_23.txt| Editing other files + Previous chapter: |usr_21.txt| Go away and come back +Table of contents: |usr_toc.txt| + +============================================================================== +*22.1* The file explorer + +Vim has a plugin that makes it possible to edit a directory. Try this: > + + :edit . + +Through the magic of autocommands and Vim scripts, the window will be filled +with the contents of the directory. It looks like this: + + " Press ? for keyboard shortcuts ~ + " Sorted by name (.bak,~,.o,.h,.info,.swp,.obj,.orig,.rej at end of list) ~ + "= /home/mool/vim/vim6/runtime/doc/ ~ + ../ ~ + check/ ~ + Makefile ~ + autocmd.txt ~ + change.txt ~ + eval.txt~ ~ + filetype.txt~ ~ + help.txt.info ~ + +You can see these items: +1. A comment about using ? to get help for the functionality of the file + explorer. +2. The second line mentions how the items in the directory are listed. They + can be sorted in several ways. +3. The third line is the name of the current directory. +4. The "../" directory item. This is the parent directory. +5. The directory names. +6. The ordinary file names. As mentioned in the second line, some are not + here but "at the end of the list". +7. The less ordinary file names. You are expected to use these less often, + therefore they have been moved to the end. + +If you have syntax highlighting enabled, the different parts are highlighted +to make it easier to spot them. + +You can use Normal mode Vim commands to move around in the text. For example, +move to a file and press <Enter>. Now you are editing that file. To go back +to the explorer use ":edit ." again. CTRL-O also works. + Try using <Enter> while the cursor is on a directory name. The result is +that the explorer moves into that directory and displays the items found +there. Pressing <Enter> on the first directory "../" moves you one level +higher. Pressing "-" does the same thing, without the need to move to the +"../" item first. + +You can press ? to get short help on the things you can do in the explorer. +This is what you get: + + " <enter> : open file or directory ~ + " o : open new window for file/directory ~ + " O : open file in previously visited window ~ + " p : preview the file ~ + " i : toggle size/date listing ~ + " s : select sort field r : reverse sort ~ + " - : go up one level c : cd to this dir ~ + " R : rename file D : delete file ~ + " :help file-explorer for detailed help ~ + +The first few commands are for selecting a file to display. Depending on what +command you use, the file appears somewhere: + + <Enter> Uses the current window. + o Opens a new window. + O Uses the previously visited window. + p Uses the preview window, and moves the cursor back + into the explorer window. |preview-window| + +The following commands are used to display other information: + + i Display the size and date for the file. Using i again + will hide the information. + s Use the field the cursor is in to sort on. First + display the size and date with i. Then Move the + cursor to the size of any file and press s. The files + will now be sorted on size. Press s wile the cursor + is on a date and the items will be sorted on date. + r reverse the sorting order (either size or date) + +There are a few extra commands: + + c Change the current directory to the displayed + directory. You can then type an ":edit" command for + one of the files without prepending the path. + R Rename the file under the cursor. You will be + prompted for the new name. + D Delete the file under the cursor. You will get a + prompt to confirm this. + +============================================================================== +*22.2* The current directory + +Just like the shell, Vim has the concept of a current directory. Suppose you +are in your home directory and want to edit several files in a directory +"VeryLongFileName". You could do: > + + :edit VeryLongFileName/file1.txt + :edit VeryLongFileName/file2.txt + :edit VeryLongFileName/file3.txt + +To avoid much of the typing, do this: > + + :cd VeryLongFileName + :edit file1.txt + :edit file2.txt + :edit file3.txt + +The ":cd" command changes the current directory. You can see what the current +directory is with the ":pwd" command: > + + :pwd + /home/Bram/VeryLongFileName + +Vim remembers the last directory that you used. Use "cd -" to go back to it. +Example: > + + :pwd + /home/Bram/VeryLongFileName + :cd /etc + :pwd + /etc + :cd - + :pwd + /home/Bram/VeryLongFileName + :cd - + :pwd + /etc + + +WINDOW LOCAL DIRECTORY + +When you split a window, both windows use the same current directory. When +you want to edit a number of files somewhere else in the new window, you can +make it use a different directory, without changing the current directory in +the other window. This is called a local directory. > + + :pwd + /home/Bram/VeryLongFileName + :split + :lcd /etc + :pwd + /etc + CTRL-W w + :pwd + /home/Bram/VeryLongFileName + +So long as no ":lcd" command has been used, all windows share the same current +directory. Doing a ":cd" command in one window will also change the current +directory of the other window. + For a window where ":lcd" has been used a different current directory is +remembered. Using ":cd" or ":lcd" in other windows will not change it. + When using a ":cd" command in a window that uses a different current +directory, it will go back to using the shared directory. + +============================================================================== +*22.3* Finding a file + +You are editing a C program that contains this line: + + #include "inits.h" ~ + +You want to see what is in that "inits.h" file. Move the cursor on the name +of the file and type: > + + gf + +Vim will find the file and edit it. + What if the file is not in the current directory? Vim will use the 'path' +option to find the file. This option is a list of directory names where to +look for your file. + Suppose you have your include files located in "c:/prog/include". This +command will add it to the 'path' option: > + + :set path+=c:/prog/include + +This directory is an absolute path. No matter where you are, it will be the +same place. What if you have located files in a subdirectory, below where the +file is? Then you can specify a relative path name. This starts with a dot: +> + :set path+=./proto + +This tells Vim to look in the directory "proto", below the directory where the +file in which you use "gf" is. Thus using "gf" on "inits.h" will make Vim +look for "proto/inits.h", starting in the directory of the file. + Without the "./", thus "proto", Vim would look in the "proto" directory +below the current directory. And the current directory might not be where the +file that you are editing is located. + +The 'path' option allows specifying the directories where to search for files +in many more ways. See the help on the 'path' option. + The 'isfname' option is used to decide which characters are included in the +file name, and which ones are not (e.g., the " character in the example +above). + +When you know the file name, but it's not to be found in the file, you can +type it: > + + :find inits.h + +Vim will then use the 'path' option to try and locate the file. This is the +same as the ":edit" command, except for the use of 'path'. + +To open the found file in a new window use CTRL-W f instead of "gf", or use +":sfind" instead of ":find". + + +A nice way to directly start Vim to edit a file somewhere in the 'path': > + + vim "+find stdio.h" + +This finds the file "stdio.h" in your value of 'path'. The quotes are +necessary to have one argument |-+c|. + +============================================================================== +*22.4* The buffer list + +The Vim editor uses the term buffer to describe a file being edited. +Actually, a buffer is a copy of the file that you edit. When you finish +changing the buffer, you write the contents of the buffer to the file. +Buffers not only contain file contents, but also all the marks, settings, and +other stuff that goes with it. + + +HIDDEN BUFFERS + +Suppose you are editing the file one.txt and need to edit the file two.txt. +You could simply use ":edit two.txt", but since you made changes to one.txt +that won't work. You also don't want to write one.txt yet. Vim has a +solution for you: > + + :hide edit two.txt + +The buffer "one.txt" disappears from the screen, but Vim still knows that you +are editing this buffer, so it keeps the modified text. This is called a +hidden buffer: The buffer contains text, but you can't see it. + The ":hide" command argument is another command. It makes that command +behave like the 'hidden' option was set. You could also set this option +yourself. The effect is that when any buffer is abandoned, it becomes hidden. + Be careful! When you have hidden buffers with changes, don't exit Vim +without making sure you have saved all the buffers. + + +INACTIVE BUFFERS + + When a buffer has been used once, Vim remembers some information about it. +When it is not displayed in a window and it is not hidden, it is still in the +buffer list. This is called an inactive buffer. Overview: + + Active Appears in a window, text loaded. + Hidden Not in a window, text loaded. + Inactive Not in a window, no text loaded. + +The inactive buffers are remembered, because Vim keeps information about them, +like marks. And remembering the file name is useful too, so that you can see +which files you have edited. And edit them again. + + +LISTING BUFFERS + +View the buffer list with this command: > + + :buffers + +A command which does the same, is not so obvious to list buffers, but is much +shorter to type: > + + :ls + +The output could look like this: + + 1 #h "help.txt" line 62 ~ + 2 %l+ "usr_21.txt" line 1 ~ + 3 "usr_toc.txt" line 1 ~ + +The first column contains the buffer number. You can use this to edit the +buffer without having to type the name, see below. + After the buffer number come the flags. Then the name of the file +and the line number where the cursor was the last time. + The flags that can appear are these (from left to right): + + u Buffer is unlisted |unlisted-buffer|. + % Current buffer. + # Alternate buffer. + l Buffer is loaded and displayed. + h Buffer is loaded but hidden. + = Buffer is read-only. + - Buffer is not modifiable, the 'modifiable' option is off. + + Buffer has been modified. + + +EDITING A BUFFER + +You can edit a buffer by its number. That avoids having to type the file +name: > + + :buffer 2 + +But the only way to know the number is by looking in the buffer list. You can +use the name, or part of it, instead: > + + :buffer help + +Vim will find a best match for the name you type. If there is only one +buffer that matches the name, it will be used. In this case "help.txt". + To open a buffer in a new window: > + + :sbuffer 3 + +This works with a name as well. + + +USING THE BUFFER LIST + +You can move around in the buffer list with these commands: + + :bnext go to next buffer + :bprevious go to previous buffer + :bfirst go to the first buffer + :blast go to the last buffer + +To remove a buffer from the list, use this command: > + + :bdelete 3 + +Again, this also works with a name. + If you delete a buffer that was active (visible in a window), that window +will be closed. If you delete the current buffer, the current window will be +closed. If it was the last window, Vim will find another buffer to edit. You +can't be editing nothing! + + Note: + Even after removing the buffer with ":bdelete" Vim still remembers it. + It's actually made "unlisted", it no longer appears in the list from + ":buffers". The ":buffers!" command will list unlisted buffers (yes, + Vim can do the impossible). To really make Vim forget about a buffer, + use ":bwipe". Also see the 'buflisted' option. + +============================================================================== + +Next chapter: |usr_23.txt| Editing other files + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_23.txt b/en/usr_23.txt new file mode 100644 index 000000000..b382f6d60 --- /dev/null +++ b/en/usr_23.txt @@ -0,0 +1,343 @@ +*usr_23.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + VIM USER MANUAL - by Bram Moolenaar + + Editing other files + + +This chapter is about editing files that are not ordinary files. With Vim you +can edit files that are compressed or encrypted. Some files need to be +accessed over the internet. With some restrictions, binary files can be +edited as well. + +|23.1| DOS, Mac and Unix files +|23.2| Files on the internet +|23.3| Encryption +|23.4| Binary files +|23.5| Compressed files + + Next chapter: |usr_24.txt| Inserting quickly + Previous chapter: |usr_22.txt| Finding the file to edit +Table of contents: |usr_toc.txt| + +============================================================================== +*23.1* DOS, Mac and Unix files + +Back in the early days, the old Teletype machines used two characters to +start a new line. One to move the carriage back to the first position +(carriage return, <CR>), another to move the paper up (line feed, <LF>). + When computers came out, storage was expensive. Some people decided that +they did not need two characters for end-of-line. The UNIX people decided +they could use <Line Feed> only for end-of-line. The Apple people +standardized on <CR>. The MS-DOS (and Microsoft Windows) folks decided to +keep the old <CR><LF>. + This means that if you try to move a file from one system to another, you +have line-break problems. The Vim editor automatically recognizes the +different file formats and handles things properly behind your back. + The option 'fileformats' contains the various formats that will be tried +when a new file is edited. The following command, for example, tells Vim to +try UNIX format first and MS-DOS format second: > + + :set fileformats=unix,dos + +You will notice the format in the message you get when editing a file. You +don't see anything if you edit a native file format. Thus editing a Unix file +on Unix won't result in a remark. But when you edit a dos file, Vim will +notify you of this: + + "/tmp/test" [dos] 3L, 71C ~ + +For a Mac file you would see "[mac]". + The detected file format is stored in the 'fileformat' option. To see +which format you have, execute the following command: > + + :set fileformat? + +The three names that Vim uses are: + + unix <LF> + dos <CR><LF> + mac <CR> + + +USING THE MAC FORMAT + +On Unix, <LF> is used to break a line. It's not unusual to have a <CR> +character halfway a line. Incidentally, this happens quite often in Vi (and +Vim) scripts. + On the Macintosh, where <CR> is the line break character, it's possible to +have a <LF> character halfway a line. + The result is that it's not possible to be 100% sure whether a file +containing both <CR> and <LF> characters is a Mac or a Unix file. Therefore, +Vim assumes that on Unix you probably won't edit a Mac file, and doesn't check +for this type of file. To check for this format anyway, add "mac" to +'fileformats': > + + :set fileformats+=mac + +Then Vim will take a guess at the file format. Watch out for situations where +Vim guesses wrong. + + +OVERRULING THE FORMAT + +If you use the good old Vi and try to edit an MS-DOS format file, you will +find that each line ends with a ^M character. (^M is <CR>). The automatic +detection avoids this. Suppose you do want to edit the file that way? Then +you need to overrule the format: > + + :edit ++ff=unix file.txt + +The "++" string is an item that tells Vim that an option name follows, which +overrules the default for this single command. "++ff" is used for +'fileformat'. You could also use "++ff=mac" or "++ff=dos". + This doesn't work for any option, only "++ff" and "++enc" are currently +implemented. The full names "++fileformat" and "++encoding" also work. + + +CONVERSION + +You can use the 'fileformat' option to convert from one file format to +another. Suppose, for example, that you have an MS-DOS file named README.TXT +that you want to convert to UNIX format. Start by editing the MS-DOS format +file: > + vim README.TXT + +Vim will recognize this as a dos format file. Now change the file format to +UNIX: > + + :set fileformat=unix + :write + +The file is written in Unix format. + +============================================================================== +*23.2* Files on the internet + +Someone sends you an e-mail message, which refers to a file by its URL. For +example: + + You can find the information here: ~ + ftp://ftp.vim.org/pub/vim/README ~ + +You could start a program to download the file, save it on your local disk and +then start Vim to edit it. + There is a much simpler way. Move the cursor to any character of the URL. +Then use this command: > + + gf + +With a bit of luck, Vim will figure out which program to use for downloading +the file, download it and edit the copy. To open the file in a new window use +CTRL-W f. + If something goes wrong you will get an error message. It's possible that +the URL is wrong, you don't have permission to read it, the network connection +is down, etc. Unfortunately, it's hard to tell the cause of the error. You +might want to try the manual way of downloading the file. + +Accessing files over the internet works with the netrw plugin. Currently URLs +with these formats are recognized: + + ftp:// uses ftp + rcp:// uses rcp + scp:// uses scp + http:// uses wget (reading only) + +Vim doesn't do the communication itself, it relies on the mentioned programs +to be available on your computer. On most Unix systems "ftp" and "rcp" will +be present. "scp" and "wget" might need to be installed. + +Vim detects these URLs for each command that starts editing a new file, also +with ":edit" and ":split", for example. Write commands also work, except for +http://. + +For more information, also about passwords, see |netrw|. + +============================================================================== +*23.3* Encryption + +Some information you prefer to keep to yourself. For example, when writing +a test on a computer that students also use. You don't want clever students +to figure out a way to read the questions before the exam starts. Vim can +encrypt the file for you, which gives you some protection. + To start editing a new file with encryption, use the "-x" argument to start +Vim. Example: > + + vim -x exam.txt + +Vim prompts you for a key used for encrypting and decrypting the file: + + Enter encryption key: ~ + +Carefully type the secret key now. You cannot see the characters you type, +they will be replaced by stars. To avoid the situation that a typing mistake +will cause trouble, Vim asks you to enter the key again: + + Enter same key again: ~ + +You can now edit this file normally and put in all your secrets. When you +finish editing the file and tell Vim to exit, the file is encrypted and +written. + When you edit the file with Vim, it will ask you to enter the same key +again. You don't need to use the "-x" argument. You can also use the normal +":edit" command. Vim adds a magic string to the file by which it recognizes +that the file was encrypted. + If you try to view this file using another program, all you get is garbage. +Also, if you edit the file with Vim and enter the wrong key, you get garbage. +Vim does not have a mechanism to check if the key is the right one (this makes +it much harder to break the key). + + +SWITCHING ENCRYPTION ON AND OFF + +To disable the encryption of a file, set the 'key' option to an empty string: +> + :set key= + +The next time you write the file this will be done without encryption. + Setting the 'key' option to enable encryption is not a good idea, because +the password appears in the clear. Anyone shoulder-surfing can read your +password. + To avoid this problem, the ":X" command was created. It asks you for an +encryption key, just like the "-x" argument did: > + + :X + Enter encryption key: ****** + Enter same key again: ****** + + +LIMITS ON ENCRYPTION + +The encryption algorithm used by Vim is weak. It is good enough to keep out +the casual prowler, but not good enough to keep out a cryptology expert with +lots of time on his hands. Also you should be aware that the swap file is not +encrypted; so while you are editing, people with superuser privileges can read +the unencrypted text from this file. + One way to avoid letting people read your swap file is to avoid using one. +If the -n argument is supplied on the command line, no swap file is used +(instead, Vim puts everything in memory). For example, to edit the encrypted +file "file.txt" without a swap file use the following command: > + + vim -x -n file.txt + +When already editing a file, the swapfile can be disabled with: > + + :setlocal noswapfile + +Since there is no swapfile, recovery will be impossible. Save the file a bit +more often to avoid the risk of losing your changes. + +While the file is in memory, it is in plain text. Anyone with privilege can +look in the editor's memory and discover the contents of the file. + If you use a viminfo file, be aware that the contents of text registers are +written out in the clear as well. + If you really want to secure the contents of a file, edit it only on a +portable computer not connected to a network, use good encryption tools, and +keep the computer locked up in a big safe when not in use. + +============================================================================== +*23.4* Binary files + +You can edit binary files with Vim. Vim wasn't really made for this, thus +there are a few restrictions. But you can read a file, change a character and +write it back, with the result that only that one character was changed and +the file is identical otherwise. + To make sure that Vim does not use its clever tricks in the wrong way, add +the "-b" argument when starting Vim: > + + vim -b datafile + +This sets the 'binary' option. The effect of this is that unexpected side +effects are turned off. For example, 'textwidth' is set to zero, to avoid +automatic formatting of lines. And files are always read in Unix file format. + +Binary mode can be used to change a message in a program. Be careful not to +insert or delete any characters, it would stop the program from working. Use +"R" to enter replace mode. + +Many characters in the file will be unprintable. To see them in Hex format: > + + :set display=uhex + +Otherwise, the "ga" command can be used to see the value of the character +under the cursor. The output, when the cursor is on an <Esc>, looks like +this: + + <^[> 27, Hex 1b, Octal 033 ~ + +There might not be many line breaks in the file. To get some overview switch +the 'wrap' option off: > + + :set nowrap + + +BYTE POSITION + +To see on which byte you are in the file use this command: > + + g CTRL-G + +The output is verbose: + + Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~ + +The last two numbers are the byte position in the file and the total number of +bytes. This takes into account how 'fileformat' changes the number of bytes +that a line break uses. + To move to a specific byte in the file, use the "go" command. For +example, to move to byte 2345: > + + 2345go + + +USING XXD + +A real binary editor shows the text in two ways: as it is and in hex format. +You can do this in Vim by first converting the file with the "xxd" program. +This comes with Vim. + First edit the file in binary mode: > + + vim -b datafile + +Now convert the file to a hex dump with xxd: > + + :%!xxd + +The text will look like this: + + 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ + 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ + 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ + +You can now view and edit the text as you like. Vim treats the information as +ordinary text. Changing the hex does not cause the printable character to be +changed, or the other way around. + Finally convert it back with: +> + :%!xxd -r + +Only changes in the hex part are used. Changes in the printable text part on +the right are ignored. + +See the manual page of xxd for more information. + +============================================================================== +*23.5* Compressed files + +This is easy: You can edit a compressed file just like any other file. The +"gzip" plugin takes care of decompressing the file when you edit it. And +compressing it again when you write it. + These compression methods are currently supported: + + .Z compress + .gz gzip + .bz2 bzip2 + +Vim uses the mentioned programs to do the actual compression and +decompression. You might need to install the programs first. + +============================================================================== + +Next chapter: |usr_24.txt| Inserting quickly + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_24.txt b/en/usr_24.txt new file mode 100644 index 000000000..2d5e7976f --- /dev/null +++ b/en/usr_24.txt @@ -0,0 +1,573 @@ +*usr_24.txt* For Vim version 6.3. Last change: 2003 Aug 18 + + VIM USER MANUAL - by Bram Moolenaar + + Inserting quickly + + +When entering text, Vim offers various ways to reduce the number of keystrokes +and avoid typing mistakes. Use Insert mode completion to repeat previously +typed words. Abbreviate long words to short ones. Type characters that +aren't on your keyboard. + +|24.1| Making corrections +|24.2| Showing matches +|24.3| Completion +|24.4| Repeating an insert +|24.5| Copying from another line +|24.6| Inserting a register +|24.7| Abbreviations +|24.8| Entering special characters +|24.9| Digraphs +|24.10| Normal mode commands + + Next chapter: |usr_25.txt| Editing formatted text + Previous chapter: |usr_23.txt| Editing other files +Table of contents: |usr_toc.txt| + +============================================================================== +*24.1* Making corrections + +The <BS> key was already mentioned. It deletes the character just before the +cursor. The <Del> key does the same for the character under (after) the +cursor. + When you typed a whole word wrong, use CTRL-W: + + The horse had fallen to the sky ~ + CTRL-W + The horse had fallen to the ~ + +If you really messed up a line and want to start over, use CTRL-U to delete +it. This keeps the text after the cursor and the indent. Only the text from +the first non-blank to the cursor is deleted. With the cursor on the "f" of +"fallen" in the next line pressing CTRL-U does this: + + The horse had fallen to the ~ + CTRL-U + fallen to the ~ + +When you spot a mistake a few words back, you need to move the cursor there to +correct it. For example, you typed this: + + The horse had follen to the ground ~ + +You need to change "follen" to "fallen". With the cursor at the end, you +would type this to correct it: > + + <Esc>4blraA + +< get out of Insert mode <Esc> + four words back 4b + move on top of the "o" l + replace with "a" ra + restart Insert mode A + +Another way to do this: > + + <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End> + +< four words back <C-Left><C-Left><C-Left><C-Left> + move on top of the "o" <Right> + delete the "o" <Del> + insert an "a" a + go to end of the line <End> + +This uses special keys to move around, while remaining in Insert mode. This +resembles what you would do in a modeless editor. It's easier to remember, +but takes more time (you have to move your hand from the letters to the cursor +keys, and the <End> key is hard to press without looking at the keyboard). + These special keys are most useful when writing a mapping that doesn't +leave Insert mode. The extra typing doesn't matter then. + An overview of the keys you can use in Insert mode: + + <C-Home> to start of the file + <PageUp> a whole screenful up + <Home> to start of line + <S-Left> one word left + <C-Left> one word left + <S-Right> one word right + <C-Right> one word right + <End> to end of the line + <PageDown> a whole screenful down + <C-End> to end of the file + +There are a few more, see |ins-special-special|. + +============================================================================== +*24.2* Showing matches + +When you type a ) it would be nice to see with which ( it matches. To make +Vim do that use this command: > + + :set showmatch + +When you now type a text like "(example)", as soon as you type the ) Vim will +briefly move the cursor to the matching (, keep it there for half a second, +and move back to where you were typing. + In case there is not matching (, Vim will beep. Then you know that you +might have forgotten the ( somewhere, or typed a ) too many. + The match will also be shown for [] and {} pairs. You don't have to wait +with typing the next character, as soon as Vim sees it the cursor will move +back and inserting continues as before. + You can change the time Vim waits with the 'matchtime' option. For +example, to make Vim wait one and a half second: > + + :set matchtime=15 + +The time is specified in tenths of a second. + +============================================================================== +*24.3* Completion + +Vim can automatically complete words on insertion. You type the first part of +a word, press CTRL-P, and Vim guesses the rest. + Suppose, for example, that you are creating a C program and want to type in +the following: + + total = ch_array[0] + ch_array[1] + ch_array[2]; ~ + +You start by entering the following: + + total = ch_array[0] + ch_ ~ + +At this point, you tell Vim to complete the word using the command CTRL-P. +Vim searches for a word that starts with what's in front of the cursor. In +this case, it is "ch_", which matches with the word ch_array. So typing +CTRL-P gives you the following: + + total = ch_array[0] + ch_array ~ + +After a little more typing, you get this (ending in a space): + + total = ch_array[0] + ch_array[1] + ~ + +If you now type CTRL-P Vim will search again for a word that completes the +word before the cursor. Since there is nothing in front of the cursor, it +finds the first word backwards, which is "ch_array". Typing CTRL-P again +gives you the next word that matches, in this case "total". A third CTRL-P +searches further back. If there is nothing else, it causes the editor to run +out of words, so it returns to the original text, which is nothing. A fourth +CTRL-P causes the editor to start over again with "ch_array". + +To search forward, use CTRL-N. Since the search wraps around the end of the +file, CTRL-N and CTRL-P will find the same matches, but in a different +sequence. Hint: CTRL-N is Next-match and CTRL-P is Previous-match. + +The Vim editor goes through a lot of effort to find words to complete. By +default, it searches the following places: + + 1. Current file + 2. Files in other windows + 3. Other loaded files (hidden buffers) + 4. Files which are not loaded (inactive buffers) + 5. Tag files + 6. All files #included by the current file + + +OPTIONS + +You can customize the search order with the 'complete' option. + +The 'ignorecase' option is used. When it is set, case differences are ignored +when searching for matches. + +A special option for completion is 'infercase'. This is useful to find +matches while ignoring case ('ignorecase' must be set) but still using the +case of the word typed so far. Thus if you type "For" and Vim finds a match +"fortunately", it will result in "Fortunately". + + +COMPLETING SPECIFIC ITEMS + +If you know what you are looking for, you can use these commands to complete +with a certain type of item: + + CTRL-X CTRL-F file names + CTRL-X CTRL-L whole lines + CTRL-X CTRL-D macro definitions (also in included files) + CTRL-X CTRL-I current and included files + CTRL-X CTRL-K words from a dictionary + CTRL-X CTRL-T words from a thesaurus + CTRL-X CTRL-] tags + CTRL-X CTRL-V Vim command line + +After each of them CTRL-N can be used to find the next match, CTRL-P to find +the previous match. + More information for each of these commands here: |ins-completion|. + + +COMPLETING FILE NAMES + +Let's take CTRL-X CTRL-F as an example. This will find file names. It scans +the current directory for files and displays each one that matches the word in +front of the cursor. + Suppose, for example, that you have the following files in the current +directory: + + main.c sub_count.c sub_done.c sub_exit.c + +Now enter Insert mode and start typing: + + The exit code is in the file sub ~ + +At this point, you enter the command CTRL-X CTRL-F. Vim now completes the +current word "sub" by looking at the files in the current directory. The +first match is sub_count.c. This is not the one you want, so you match the +next file by typing CTRL-N. This match is sub_done.c. Typing CTRL-N again +takes you to sub_exit.c. The results: + + The exit code is in the file sub_exit.c ~ + +If the file name starts with / (Unix) or C:\ (MS-Windows) you can find all +files in the file system. For example, type "/u" and CTRL-X CTRL-F. This +will match "/usr" (this is on Unix): + + the file is found in /usr/ ~ + +If you now press CTRL-N you go back to "/u". Instead, to accept the "/usr/" +and go one directory level deeper, use CTRL-X CTRL-F again: + + the file is found in /usr/X11R6/ ~ + +The results depend on what is found in your file system, of course. The +matches are sorted alphabetically. + +============================================================================== +*24.4* Repeating an insert + +If you press CTRL-A, the editor inserts the text you typed the last time you +were in Insert mode. + Assume, for example, that you have a file that begins with the following: + + "file.h" ~ + /* Main program begins */ ~ + +You edit this file by inserting "#include " at the beginning of the first +line: + + #include "file.h" ~ + /* Main program begins */ ~ + +You go down to the beginning of the next line using the commands "j^". You +now start to insert a new "#include" line. So you type: > + + i CTRL-A + +The result is as follows: + + #include "file.h" ~ + #include /* Main program begins */ ~ + +The "#include " was inserted because CTRL-A inserts the text of the previous +insert. Now you type "main.h"<Enter> to finish the line: + + + #include "file.h" ~ + #include "main.h" ~ + /* Main program begins */ ~ + +The CTRL-@ command does a CTRL-A and then exits Insert mode. That's a quick +way of doing exactly the same insertion again. + +============================================================================== +*24.5* Copying from another line + +The CTRL-Y command inserts the character above the cursor. This is useful +when you are duplicating a previous line. For example, you have this line of +C code: + + b_array[i]->s_next = a_array[i]->s_next; ~ + +Now you need to type the same line, but with "s_prev" instead of "s_next". +Start the new line, and press CTRL-Y 14 times, until you are at the "n" of +"next": + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_ ~ + +Now you type "prev": + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_prev ~ + +Continue pressing CTRL-Y until the following "next": + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_prev = a_array[i]->s_ ~ + +Now type "prev;" to finish it off. + +The CTRL-E command acts like CTRL-Y except it inserts the character below the +cursor. + +============================================================================== +*24.6* Inserting a register + +The command CTRL-R {register} inserts the contents of the register. This is +useful to avoid having to type a long word. For example, you need to type +this: + + r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~ + +The function name is defined in a different file. Edit that file and move the +cursor on top of the function name there, and yank it into register v: > + + "vyiw + +"v is the register specification, "yiw" is yank-inner-word. Now edit the file +where the new line is to be inserted, and type the first letters: + + r = ~ + +Now use CTRL-R v to insert the function name: + + r = VeryLongFunction ~ + +You continue to type the characters in between the function name, and use +CTRL-R v two times more. + You could have done the same with completion. Using a register is useful +when there are many words that start with the same characters. + +If the register contains characters such as <BS> or other special characters, +they are interpreted as if they had been typed from the keyboard. If you do +not want this to happen (you really want the <BS> to be inserted in the text), +use the command CTRL-R CTRL-R {register}. + +============================================================================== +*24.7* Abbreviations + +An abbreviation is a short word that takes the place of a long one. For +example, "ad" stands for "advertisement". Vim enables you to type an +abbreviation and then will automatically expand it for you. + To tell Vim to expand "ad" into "advertisement" every time you insert it, +use the following command: > + + :iabbrev ad advertisement + +Now, when you type "ad", the whole word "advertisement" will be inserted into +the text. This is triggered by typing a character that can't be part of a +word, for example a space: + + What Is Entered What You See + I saw the a I saw the a ~ + I saw the ad I saw the ad ~ + I saw the ad<Space> I saw the advertisement<Space> ~ + +The expansion doesn't happen when typing just "ad". That allows you to type a +word like "add", which will not get expanded. Only whole words are checked +for abbreviations. + + +ABBREVIATING SEVERAL WORDS + +It is possible to define an abbreviation that results in multiple words. For +example, to define "JB" as "Jack Benny", use the following command: > + + :iabbrev JB Jack Benny + +As a programmer, I use two rather unusual abbreviations: > + + :iabbrev #b /**************************************** + :iabbrev #e <Space>****************************************/ + +These are used for creating boxed comments. The comment starts with #b, which +draws the top line. I then type the comment text and use #e to draw the +bottom line. + Notice that the #e abbreviation begins with a space. In other words, the +first two characters are space-star. Usually Vim ignores spaces between the +abbreviation and the expansion. To avoid that problem, I spell space as seven +characters: <, S, p, a, c, e, >. + + Note: + ":iabbrev" is a long word to type. ":iab" works just as well. + That's abbreviating the abbreviate command! + + +FIXING TYPING MISTAKES + +It's very common to make the same typing mistake every time. For example, +typing "teh" instead of "the". You can fix this with an abbreviation: > + + :abbreviate teh the + +You can add a whole list of these. Add one each time you discover a common +mistake. + + +LISTING ABBREVIATIONS + +The ":abbreviate" command lists the abbreviations: + + :abbreviate + i #e ****************************************/ + i #b /**************************************** + i JB Jack Benny + i ad advertisement + ! teh the + +The "i" in the first column indicates Insert mode. These abbreviations are +only active in Insert mode. Other possible characters are: + + c Command-line mode :cabbrev + ! both Insert and Command-line mode :abbreviate + +Since abbreviations are not often useful in Command-line mode, you will mostly +use the ":iabbrev" command. That avoids, for example, that "ad" gets expanded +when typing a command like: > + + :edit ad + + +DELETING ABBREVIATIONS + +To get rid of an abbreviation, use the ":unabbreviate" command. Suppose you +have the following abbreviation: > + + :abbreviate @f fresh + +You can remove it with this command: > + + :unabbreviate @f + +While you type this, you will notice that @f is expanded to "fresh". Don't +worry about this, Vim understands it anyway (except when you have an +abbreviation for "fresh", but that's very unlikely). + To remove all the abbreviations: > + + :abclear + +":unabbreviate" and ":abclear" also come in the variants for Insert mode +(":iunabbreviate and ":iabclear") and Command-line mode (":cunabbreviate" and +":cabclear"). + + +REMAPPING ABBREVIATIONS + +There is one thing to watch out for when defining an abbreviation: The +resulting string should not be mapped. For example: > + + :abbreviate @a adder + :imap dd disk-door + +When you now type @a, you will get "adisk-doorer". That's not what you want. +To avoid this, use the ":noreabbrev" command. It does the same as +":abbreviate", but avoids that the resulting string is used for mappings: > + + :noreabbrev @a adder + +Fortunately, it's unlikely that the result of an abbreviation is mapped. + +============================================================================== +*24.8* Entering special characters + +The CTRL-V command is used to insert the next character literally. In other +words, any special meaning the character has, it will be ignored. For +example: > + + CTRL-V <Esc> + +Inserts an escape character. Thus you don't leave Insert mode. (Don't type +the space after CTRL-V, it's only to make this easier to read). + + Note: + On MS-Windows CTRL-V is used to paste text. Use CTRL-Q instead of + CTRL-V. On Unix, on the other hand, CTRL-Q does not work on some + terminals, because it has a special meaning. + +You can also use the command CTRL-V {digits} to insert a character with the +decimal number {digits}. For example, the character number 127 is the <Del> +character (but not necessarily the <Del> key!). To insert <Del> type: > + + CTRL-V 127 + +You can enter characters up to 255 this way. When you type fewer than two +digits, a non-digit will terminate the command. To avoid the need of typing a +non-digit, prepend one or two zeros to make three digits. + All the next commands insert a <Tab> and then a dot: + + CTRL-V 9. + CTRL-V 09. + CTRL-V 009. + +To enter a character in hexadecimal, use an "x" after the CTRL-V: > + + CTRL-V x7f + +This also goes up to character 255 (CTRL-V xff). You can use "o" to type a +character as an octal number and two more methods allow you to type up to +a 16 bit and a 32 bit number (e.g., for a Unicode character): > + + CTRL-V o123 + CTRL-V u1234 + CTRL-V U12345678 + +============================================================================== +*24.9* Digraphs + +Some characters are not on the keyboard. For example, the copyright character +(�). To type these characters in Vim, you use digraphs, where two characters +represent one. To enter a �, for example, you press three keys: > + + CTRL-K Co + +To find out what digraphs are available, use the following command: > + + :digraphs + +Vim will display the digraph table. Here are three lines of it: + + AC ~_ 159 NS | 160 !I � 161 Ct � 162 Pd � 163 Cu � 164 Ye � 165 ~ + BB � 166 SE � 167 ': � 168 Co � 169 -a � 170 << � 171 NO � 172 ~ + -- � 173 Rg � 174 'm � 175 DG � 176 +- � 177 2S � 178 3S � 179 ~ + +This shows, for example, that the digraph you get by typing CTRL-K Pd is the +character (�). This is character number 163 (decimal). + Pd is short for Pound. Most digraphs are selected to give you a hint about +the character they will produce. If you look through the list you will +understand the logic. + You can exchange the first and second character, if there is no digraph for +that combination. Thus CTRL-K dP also works. Since there is no digraph for +"dP" Vim will also search for a "Pd" digraph. + + Note: + The digraphs depend on the character set that Vim assumes you are + using. On MS-DOS they are different from MS-Windows. Always use + ":digraphs" to find out which digraphs are currently available. + +You can define your own digraphs. Example: > + + :digraph a" � + +This defines that CTRL-K a" inserts an � character. You can also specify the +character with a decimal number. This defines the same digraph: > + + :digraph a" 228 + +More information about digraphs here: |digraphs| + Another way to insert special characters is with a keymap. More about that +here: |45.5| + +============================================================================== +*24.10* Normal mode commands + +Insert mode offers a limited number of commands. In Normal mode you have many +more. When you want to use one, you usually leave Insert mode with <Esc>, +execute the Normal mode command, and re-enter Insert mode with "i" or "a". + There is a quicker way. With CTRL-O {command} you can execute any Normal +mode command from Insert mode. For example, to delete from the cursor to the +end of the line: > + + CTRL-O D + +You can execute only one Normal mode command this way. But you can specify a +register or a count. A more complicated example: > + + CTRL-O "g3dw + +This deletes up to the third word into register g. + +============================================================================== + +Next chapter: |usr_25.txt| Editing formatted text + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_25.txt b/en/usr_25.txt new file mode 100644 index 000000000..d7f6d3fee --- /dev/null +++ b/en/usr_25.txt @@ -0,0 +1,578 @@ +*usr_25.txt* For Vim version 6.3. Last change: 2003 Jun 21 + + VIM USER MANUAL - by Bram Moolenaar + + Editing formatted text + + +Text hardly ever comes in one sentence per line. This chapter is about +breaking sentences to make them fit on a page and other formatting. +Vim also has useful features for editing single-line paragraphs and tables. + +|25.1| Breaking lines +|25.2| Aligning text +|25.3| Indents and tabs +|25.4| Dealing with long lines +|25.5| Editing tables + + Next chapter: |usr_26.txt| Repeating + Previous chapter: |usr_24.txt| Inserting quickly +Table of contents: |usr_toc.txt| + +============================================================================== +*25.1* Breaking lines + +Vim has a number of functions that make dealing with text easier. By default, +the editor does not perform automatic line breaks. In other words, you have +to press <Enter> yourself. This is useful when you are writing programs where +you want to decide where the line ends. It is not so good when you are +creating documentation and want the text to be at most 70 character wide. + If you set the 'textwidth' option, Vim automatically inserts line breaks. +Suppose, for example, that you want a very narrow column of only 30 +characters. You need to execute the following command: > + + :set textwidth=30 + +Now you start typing (ruler added): + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a whi ~ + +If you type "l" next, this makes the line longer than the 30-character limit. +When Vim sees this, it inserts a line break and you get the following: + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + whil ~ + +Continuing on, you can type in the rest of the paragraph: + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ + +You do not have to type newlines; Vim puts them in automatically. + + Note: + The 'wrap' option makes Vim display lines with a line break, but this + doesn't insert a line break in the file. + + +REFORMATTING + +The Vim editor is not a word processor. In a word processor, if you delete +something at the beginning of the paragraph, the line breaks are reworked. In +Vim they are not; so if you delete the word "programming" from the first line, +all you get is a short line: + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ + +This does not look good. To get the paragraph into shape you use the "gq" +operator. + Let's first use this with a Visual selection. Starting from the first +line, type: > + + v4jgq + +"v" to start Visual mode, "4j' to move to the end of the paragraph and then +the "gq" operator. The result is: + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + +Note: there is a way to do automatic formatting for specific types of text +layouts, see |auto-format|. + +Since "gq" is an operator, you can use one of the three ways to select the +text it works on: With Visual mode, with a movement and with a text object. + The example above could also be done with "gq4j". That's less typing, but +you have to know the line count. A more useful motion command is "}". This +moves to the end of a paragraph. Thus "gq}" formats from the cursor to the +end of the current paragraph. + A very useful text object to use with "gq" is the paragraph. Try this: > + + gqap + +"ap" stands for "a-paragraph". This formats the text of one paragraph +(separated by empty lines). Also the part before the cursor. + If you have your paragraphs separated by empty lines, you can format the +whole file by typing this: > + + gggqG + +"gg" to move to the first line, "gqG" to format until the last line. + Warning: If your paragraphs are not properly separated, they will be joined +together. A common mistake is to have a line with a space or Tab. That's a +blank line, but not an empty line. + +Vim is able format more than just plain text. See |fo-table| for how to +change this. See the 'joinspaces' option to change the number of spaces used +after a full stop. + It is possible to use an external program for formatting. This is useful +if your text can't be properly formatted with Vim's builtin command. See the +'formatprg' option. + +============================================================================== +*25.2* Aligning text + +To center a range of lines, use the following command: > + + :{range}center [width] + +{range} is the usual command-line range. [width] is an optional line width to +use for centering. If [width] is not specified, it defaults to the value of +'textwidth'. (If 'textwidth' is 0, the default is 80.) + For example: > + + :1,5center 40 + +results in the following: + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + + +RIGHT ALIGNMENT + +Similarly, the ":right" command right-justifies the text: > + + :1,5right 37 + +gives this result: + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + +LEFT ALIGNMENT + +Finally there is this command: > + + :{range}left [margin] + +Unlike ":center" and ":right", however, the argument to ":left" is not the +length of the line. Instead it is the left margin. If it is omitted, the +text will be put against the left side of the screen (using a zero margin +would do the same). If it is 5, the text will be indented 5 spaces. For +example, use these commands: > + + :1left 5 + :2,5left + +This results in the following: + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + + +JUSTIFYING TEXT + +Vim has no built-in way of justifying text. However, there is a neat macro +package that does the job. To use this package, execute the following +command: > + + :runtime macros/justify.vim + +This Vim script file defines a new visual command "_j". To justify a block of +text, highlight the text in Visual mode and then execute "_j". + Look in the file for more explanations. To go there, do "gf" on this name: +$VIMRUNTIME/macros/justify.vim. + +An alternative is to filter the text through an external program. Example: > + + :%!fmt + +============================================================================== +*25.3* Indents and tabs + +Indents can be used to make text stand out from the rest. The example texts +in this manual, for example, are indented by eight spaces or a tab. You would +normally enter this by typing a tab at the start of each line. Take this +text: + the first line ~ + the second line ~ + +This is entered by typing a tab, some text, <Enter>, tab and more text. + The 'autoindent' option inserts indents automatically: > + + :set autoindent + +When a new line is started it gets the same indent as the previous line. In +the above example, the tab after the <Enter> is not needed anymore. + + +INCREASING INDENT + +To increase the amount of indent in a line, use the ">" operator. Often this +is used as ">>", which adds indent to the current line. + The amount of indent added is specified with the 'shiftwidth' option. The +default value is 8. To make ">>" insert four spaces worth of indent, for +example, type this: > + + :set shiftwidth=4 + +When used on the second line of the example text, this is what you get: + + the first line ~ + the second line ~ + +"4>>" will increase the indent of four lines. + + +TABSTOP + +If you want to make indents a multiple of 4, you set 'shiftwidth' to 4. But +when pressing a Tab you still get 8 spaces worth of indent. To change this, +set the 'softtabstop' option: > + + :set softtabstop=4 + +This will make the <Tab> key insert 4 spaces worth of indent. If there are +already four spaces, a <Tab> character is used (saving seven characters in the +file). (If you always want spaces and no tab characters, set the 'expandtab' +option.) + + Note: + You could set the 'tabstop' option to 4. However, if you edit the + file another time, with 'tabstop' set to the default value of 8, it + will look wrong. In other programs and when printing the indent will + also be wrong. Therefore it is recommended to keep 'tabstop' at eight + all the time. That's the standard value everywhere. + + +CHANGING TABS + +You edit a file which was written with a tabstop of 3. In Vim it looks ugly, +because it uses the normal tabstop value of 8. You can fix this by setting +'tabstop' to 3. But you have to do this every time you edit this file. + Vim can change the use of tabstops in your file. First, set 'tabstop' to +make the indents look good, then use the ":retab" command: > + + :set tabstop=3 + :retab 8 + +The ":retab" command will change 'tabstop' to 8, while changing the text such +that it looks the same. It changes spans of white space into tabs and spaces +for this. You can now write the file. Next time you edit it the indents will +be right without setting an option. + Warning: When using ":retab" on a program, it may change white space inside +a string constant. Therefore it's a good habit to use "\t" instead of a +real tab. + +============================================================================== +*25.4* Dealing with long lines + +Sometimes you will be editing a file that is wider than the number of columns +in the window. When that occurs, Vim wraps the lines so that everything fits +on the screen. + If you switch the 'wrap' option off, each line in the file shows up as one +line on the screen. Then the ends of the long lines disappear off the screen +to the right. + When you move the cursor to a character that can't be seen, Vim will scroll +the text to show it. This is like moving a viewport over the text in the +horizontal direction. + By default, Vim does not display a horizontal scrollbar in the GUI. If you +want to enable one, use the following command: > + + :set guioptions+=b + +One horizontal scrollbar will appear at the bottom of the Vim window. + +If you don't have a scrollbar or don't want to use it, use these commands to +scroll the text. The cursor will stay in the same place, but it's move back +into the visible text if necessary. + + zh scroll right + 4zh scroll four characters right + zH scroll half a window width right + ze scroll right to put the cursor at the end + zl scroll left + 4zl scroll four characters left + zL scroll half a window width left + zs scroll left to put the cursor at the start + +Let's attempt to show this with one line of text. The cursor is on the "w" of +"which". The "current window" above the line indicates the text that is +currently visible. The "window"s below the text indicate the text that is +visible after the command left of it. + + |<-- current window -->| + some long text, part of which is visible in the window ~ + ze |<-- window -->| + zH |<-- window -->| + 4zh |<-- window -->| + zh |<-- window -->| + zl |<-- window -->| + 4zl |<-- window -->| + zL |<-- window -->| + zs |<-- window -->| + + +MOVING WITH WRAP OFF + +When 'wrap' is off and the text has scrolled horizontally, you can use the +following commands to move the cursor to a character you can see. Thus text +left and right of the window is ignored. These never cause the text to +scroll: + + g0 to first visible character in this line + g^ to first non-blank visible character in this line + gm to middle of this line + g$ to last visible character in this line + + |<-- window -->| + some long text, part of which is visible ~ + g0 g^ gm g$ + + +BREAKING AT WORDS *edit-no-break* + +When preparing text for use by another program, you might have to make +paragraphs without a line break. A disadvantage of using 'nowrap' is that you +can't see the whole sentence you are working on. When 'wrap' is on, words are +broken halfway, which makes them hard to read. + A good solution for editing this kind of paragraph is setting the +'linebreak' option. Vim then breaks lines at an appropriate place when +displaying the line. The text in the file remains unchanged. + Without 'linebreak' text might look like this: + + +---------------------------------+ + |letter generation program for a b| + |ank. They wanted to send out a s| + |pecial, personalized letter to th| + |eir richest 1000 customers. Unfo| + |rtunately for the programmer, he | + +---------------------------------+ +After: > + + :set linebreak + +it looks like this: + + +---------------------------------+ + |letter generation program for a | + |bank. They wanted to send out a | + |special, personalized letter to | + |their richest 1000 customers. | + |Unfortunately for the programmer,| + +---------------------------------+ + +Related options: +'breakat' specifies the characters where a break can be inserted. +'showbreak' specifies a string to show at the start of broken line. +Set 'textwidth' to zero to avoid a paragraph to be split. + + +MOVING BY VISIBLE LINES + +The "j" and "k" commands move to the next and previous lines. When used on +a long line, this means moving a lot of screen lines at once. + To move only one screen line, use the "gj" and "gk" commands. When a line +doesn't wrap they do the same as "j" and "k". When the line does wrap, they +move to a character displayed one line below or above. + You might like to use these mappings, which bind these movement commands to +the cursor keys: > + + :map <Up> gk + :map <Down> gj + + +TURNING A PARAGRAPH INTO ONE LINE + +If you want to import text into a program like MS-Word, each paragraph should +be a single line. If your paragraphs are currently separated with empty +lines, this is how you turn each paragraph into a single line: > + + :g/./,/^$/join + +That looks complicated. Let's break it up in pieces: + + :g/./ A ":global" command that finds all lines that contain + at least one character. + ,/^$/ A range, starting from the current line (the non-empty + line) until an empty line. + join The ":join" command joins the range of lines together + into one line. + +Starting with this text, containing eight lines broken at column 30: + + +----------------------------------+ + |A letter generation program | + |for a bank. They wanted to | + |send out a special, | + |personalized letter. | + | | + |To their richest 1000 | + |customers. Unfortunately for | + |the programmer, | + +----------------------------------+ + +You end up with two lines: + + +----------------------------------+ + |A letter generation program for a | + |bank. They wanted to send out a s| + |pecial, personalized letter. | + |To their richest 1000 customers. | + |Unfortunately for the programmer, | + +----------------------------------+ + +Note that this doesn't work when the separating line is blank but not empty; +when it contains spaces and/or tabs. This command does work with blank lines: +> + :g/\S/,/^\s*$/join + +This still requires a blank or empty line at the end of the file for the last +paragraph to be joined. + +============================================================================== +*25.5* Editing tables + +Suppose you are editing a table with four columns: + + nice table test 1 test 2 test 3 ~ + input A 0.534 ~ + input B 0.913 ~ + +You need to enter numbers in the third column. You could move to the second +line, use "A", enter a lot of spaces and type the text. + For this kind of editing there is a special option: > + + set virtualedit=all + +Now you can move the cursor to positions where there isn't any text. This is +called "virtual space". Editing a table is a lot easier this way. + Move the cursor by searching for the header of the last column: > + + /test 3 + +Now press "j" and you are right where you can enter the value for "input A". +Typing "0.693" results in: + + nice table test 1 test 2 test 3 ~ + input A 0.534 0.693 ~ + input B 0.913 ~ + +Vim has automatically filled the gap in front of the new text for you. Now, +to enter the next field in this column use "Bj". "B" moves back to the start +of a white space separated word. Then "j" moves to the place where the next +field can be entered. + + Note: + You can move the cursor anywhere in the display, also beyond the end + of a line. But Vim will not insert spaces there, until you insert a + character in that position. + + +COPYING A COLUMN + +You want to add a column, which should be a copy of the third column and +placed before the "test 1" column. Do this in seven steps: +1. Move the cursor to the left upper corner of this column, e.g., with + "/test 3". +2. Press CTRL-V to start blockwise Visual mode. +3. Move the cursor down two lines with "2j". You are now in "virtual space": + the "input B" line of the "test 3" column. +4. Move the cursor right, to include the whole column in the selection, plus + the space that you want between the columns. "9l" should do it. +5. Yank the selected rectangle with "y". +6. Move the cursor to "test 1", where the new column must be placed. +7. Press "P". + +The result should be: + + nice table test 3 test 1 test 2 test 3 ~ + input A 0.693 0.534 0.693 ~ + input B 0.913 ~ + +Notice that the whole "test 1" column was shifted right, also the line where +the "test 3" column didn't have text. + +Go back to non-virtual cursor movements with: > + + :set virtualedit= + + +VIRTUAL REPLACE MODE + +The disadvantage of using 'virtualedit' is that it "feels" different. You +can't recognize tabs or spaces beyond the end of line when moving the cursor +around. Another method can be used: Virtual Replace mode. + Suppose you have a line in a table that contains both tabs and other +characters. Use "rx" on the first tab: + + inp 0.693 0.534 0.693 ~ + + | + rx | + V + + inpx0.693 0.534 0.693 ~ + +The layout is messed up. To avoid that, use the "gr" command: + + inp 0.693 0.534 0.693 ~ + + | + grx | + V + + inpx 0.693 0.534 0.693 ~ + +What happens is that the "gr" command makes sure the new character takes the +right amount of screen space. Extra spaces or tabs are inserted to fill the +gap. Thus what actually happens is that a tab is replaced by "x" and then +blanks added to make the text after it keep it's place. In this case a +tab is inserted. + When you need to replace more than one character, you use the "R" command +to go to Replace mode (see |04.9|). This messes up the layout and replaces +the wrong characters: + + inp 0 0.534 0.693 ~ + + | + R0.786 | + V + + inp 0.78634 0.693 ~ + +The "gR" command uses Virtual Replace mode. This preserves the layout: + + inp 0 0.534 0.693 ~ + + | + gR0.786 | + V + + inp 0.786 0.534 0.693 ~ + +============================================================================== + +Next chapter: |usr_26.txt| Repeating + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_26.txt b/en/usr_26.txt new file mode 100644 index 000000000..ba3bd79d2 --- /dev/null +++ b/en/usr_26.txt @@ -0,0 +1,221 @@ +*usr_26.txt* For Vim version 6.3. Last change: 2002 Oct 29 + + VIM USER MANUAL - by Bram Moolenaar + + Repeating + + +An editing task is hardly ever unstructured. A change often needs to be made +several times. In this chapter a number of useful ways to repeat a change +will be explained. + +|26.1| Repeating with Visual mode +|26.2| Add and subtract +|26.3| Making a change in many files +|26.4| Using Vim from a shell script + + Next chapter: |usr_27.txt| Search commands and patterns + Previous chapter: |usr_25.txt| Editing formatted text +Table of contents: |usr_toc.txt| + +============================================================================== +*26.1* Repeating with Visual mode + +Visual mode is very handy for making a change in any sequence of lines. You +can see the highlighted text, thus you can check if the correct lines are +changed. But making the selection takes some typing. The "gv" command +selects the same area again. This allows you to do another operation on the +same text. + Suppose you have some lines where you want to change "2001" to "2002" and +"2000" to "2001": + + The financial results for 2001 are better ~ + than for 2000. The income increased by 50%, ~ + even though 2001 had more rain than 2000. ~ + 2000 2001 ~ + income 45,403 66,234 ~ + +First change "2001" to "2002". Select the lines in Visual mode, and use: > + + :s/2001/2002/g + +Now use "gv" to reselect the same text. It doesn't matter where the cursor +is. Then use ":s/2000/2001/g" to make the second change. + Obviously, you can repeat these changes several times. + +============================================================================== +*26.2* Add and subtract + +When repeating the change of one number into another, you often have a fixed +offset. In the example above, one was added to each year. Instead of typing +a substitute command for each year that appears, the CTRL-A command can be +used. + Using the same text as above, search for a year: > + + /19[0-9][0-9]\|20[0-9][0-9] + +Now press CTRL-A. The year will be increased by one: + + The financial results for 2002 are better ~ + than for 2000. The income increased by 50%, ~ + even though 2001 had more rain than 2000. ~ + 2000 2001 ~ + income 45,403 66,234 ~ + +Use "n" to find the next year, and press "." to repeat the CTRL-A ("." is a +bit quicker to type). Repeat "n" and "." for all years that appear. + Hint: set the 'hlsearch' option to see the matches you are going to change, +then you can look ahead and do it faster. + +Adding more than one can be done by prepending the number to CTRL-A. Suppose +you have this list: + + 1. item four ~ + 2. item five ~ + 3. item six ~ + +Move the cursor to "1." and type: > + + 3 CTRL-A + +The "1." will change to "4.". Again, you can use "." to repeat this on the +other numbers. + +Another example: + + 006 foo bar ~ + 007 foo bar ~ + +Using CTRL-A on these numbers results in: + + 007 foo bar ~ + 010 foo bar ~ + +7 plus one is 10? What happened here is that Vim recognized "007" as an octal +number, because there is a leading zero. This notation is often used in C +programs. If you do not want a number with leading zeros to be handled as +octal, use this: > + + :set nrformats-=octal + +The CTRL-X command does subtraction in a similar way. + +============================================================================== +*26.3* Making a change in many files + +Suppose you have a variable called "x_cnt" and you want to change it to +"x_counter". This variable is used in several of your C files. You need to +change it in all files. This is how you do it. + Put all the relevant files in the argument list: > + + :args *.c +< +This finds all C files and edits the first one. Now you can perform a +substitution command on all these files: > + + :argdo %s/\<x_cnt\>/x_counter/ge | update + +The ":argdo" command takes an argument that is another command. That command +will be executed on all files in the argument list. + The "%s" substitute command that follows works on all lines. It finds the +word "x_cnt" with "\<x_cnt\>". The "\<" and "\>" are used to match the whole +word only, and not "px_cnt" or "x_cnt2". + The flags for the substitute command include "g" to replace all occurrences +of "x_cnt" in the same line. The "e" flag is used to avoid an error message +when "x_cnt" does not appear in the file. Otherwise ":argdo" would abort on +the first file where "x_cnt" was not found. + The "|" separates two commands. The following "update" command writes the +file only if it was changed. If no "x_cnt" was changed to "x_counter" nothing +happens. + +There is also the ":windo" command, which executes its argument in all +windows. And ":bufdo" executes its argument on all buffers. Be careful with +this, because you might have more files in the buffer list than you think. +Check this with the ":buffers" command (or ":ls"). + +============================================================================== +*26.4* Using Vim from a shell script + +Suppose you have a lot of files in which you need to change the string +"-person-" to "Jones" and then print it. How do you do that? One way is to +do a lot of typing. The other is to write a shell script to do the work. + The Vim editor does a superb job as a screen-oriented editor when using +Normal mode commands. For batch processing, however, Normal mode commands do +not result in clear, commented command files; so here you will use Ex mode +instead. This mode gives you a nice command-line interface that makes it easy +to put into a batch file. ("Ex command" is just another name for a +command-line (:) command.) + The Ex mode commands you need are as follows: > + + %s/-person-/Jones/g + write tempfile + quit + +You put these commands in the file "change.vim". Now to run the editor in +batch mode, use this shell script: > + + for file in *.txt; do + vim -e -s $file < change.vim + lpr -r tempfile + done + +The for-done loop is a shell construct to repeat the two lines in between, +while the $file variable is set to a different file name each time. + The second line runs the Vim editor in Ex mode (-e argument) on the file +$file and reads commands from the file "change.vim". The -s argument tells +Vim to operate in silent mode. In other words, do not keep outputting the +:prompt, or any other prompt for that matter. + The "lpr -r tempfile" command prints the resulting "tempfile" and deletes +it (that's what the -r argument does). + + +READING FROM STDIN + +Vim can read text on standard input. Since the normal way is to read commands +there, you must tell Vim to read text instead. This is done by passing the +"-" argument in place of a file. Example: > + + ls | vim - + +This allows you to edit the output of the "ls" command, without first saving +the text in a file. + If you use the standard input to read text from, you can use the "-S" +argument to read a script: > + + producer | vim -S change.vim - + + +NORMAL MODE SCRIPTS + +If you really want to use Normal mode commands in a script, you can use it +like this: > + + vim -s script file.txt ... +< + Note: + "-s" has a different meaning when it is used without "-e". Here it + means to source the "script" as Normal mode commands. When used with + "-e" it means to be silent, and doesn't use the next argument as a + file name. + +The commands in "script" are executed like you typed them. Don't forget that +a line break is interpreted as pressing <Enter>. In Normal mode that moves +the cursor to the next line. + To create the script you can edit the script file and type the commands. +You need to imagine what the result would be, which can be a bit difficult. +Another way is to record the commands while you perform them manually. This +is how you do that: > + + vim -w script file.txt ... + +All typed keys will be written to "script". If you make a small mistake you +can just continue and remember to edit the script later. + The "-w" argument appends to an existing script. That is good when you +want to record the script bit by bit. If you want to start from scratch and +start all over, use the "-W" argument. It overwrites any existing file. + +============================================================================== + +Next chapter: |usr_27.txt| Search commands and patterns + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_27.txt b/en/usr_27.txt new file mode 100644 index 000000000..89eb55479 --- /dev/null +++ b/en/usr_27.txt @@ -0,0 +1,563 @@ +*usr_27.txt* For Vim version 6.3. Last change: 2003 Oct 28 + + VIM USER MANUAL - by Bram Moolenaar + + Search commands and patterns + + +In chapter 3 a few simple search patterns were mentioned |03.9|. Vim can do +much more complex searches. This chapter explains the most often used ones. +A detailed specification can be found here: |pattern| + +|27.1| Ignoring case +|27.2| Wrapping around the file end +|27.3| Offsets +|27.4| Matching multiple times +|27.5| Alternatives +|27.6| Character ranges +|27.7| Character classes +|27.8| Matching a line break +|27.9| Examples + + Next chapter: |usr_28.txt| Folding + Previous chapter: |usr_26.txt| Repeating +Table of contents: |usr_toc.txt| + +============================================================================== +*27.1* Ignoring case + +By default, Vim's searches are case sensitive. Therefore, "include", +"INCLUDE", and "Include" are three different words and a search will match +only one of them. + Now switch on the 'ignorecase' option: > + + :set ignorecase + +Search for "include" again, and now it will match "Include", "INCLUDE" and +"InClUDe". (Set the 'hlsearch' option to quickly see where a pattern +matches.) + You can switch this off again with: > + + :set noignorecase + +But lets keep it set, and search for "INCLUDE". It will match exactly the +same text as "include" did. Now set the 'smartcase' option: > + + :set ignorecase smartcase + +If you have a pattern with at least one uppercase character, the search +becomes case sensitive. The idea is that you didn't have to type that +uppercase character, so you must have done it because you wanted case to +match. That's smart! + With these two options set you find the following matches: + + pattern matches ~ + word word, Word, WORD, WoRd, etc. + Word Word + WORD WORD + WoRd WoRd + + +CASE IN ONE PATTERN + +If you want to ignore case for one specific pattern, you can do this by +prepending the "\c" string. Using "\C" will make the pattern to match case. +This overrules the 'ignorecase' and 'smartcase' options, when "\c" or "\C" is +used their value doesn't matter. + + pattern matches ~ + \Cword word + \CWord Word + \cword word, Word, WORD, WoRd, etc. + \cWord word, Word, WORD, WoRd, etc. + +A big advantage of using "\c" and "\C" is that it sticks with the pattern. +Thus if you repeat a pattern from the search history, the same will happen, no +matter if 'ignorecase' or 'smartcase' was changed. + + Note: + The use of "\" items in search patterns depends on the 'magic' option. + In this chapters we will assume 'magic' is on, because that is the + standard and recommended setting. If you would change 'magic', many + search patterns would suddenly become invalid. + + Note: + If your search takes much longer than you expected, you can interrupt + it with CTRL-C on Unix and CTRL-Break on MS-DOS and MS-Windows. + +============================================================================== +*27.2* Wrapping around the file end + +By default, a forward search starts searching for the given string at the +current cursor location. It then proceeds to the end of the file. If it has +not found the string by that time, it starts from the beginning and searches +from the start of the file to the cursor location. + Keep in mind that when repeating the "n" command to search for the next +match, you eventually get back to the first match. If you don't notice this +you keep searching forever! To give you a hint, Vim displays this message: + + search hit BOTTOM, continuing at TOP ~ + +If you use the "?" command, to search in the other direction, you get this +message: + + search hit TOP, continuing at BOTTOM ~ + +Still, you don't know when you are back at the first match. One way to see +this is by switching on the 'ruler' option: > + + :set ruler + +Vim will display the cursor position in the lower righthand corner of the +window (in the status line if there is one). It looks like this: + + 101,29 84% ~ + +The first number is the line number of the cursor. Remember the line number +where you started, so that you can check if you passed this position again. + + +NOT WRAPPING + +To turn off search wrapping, use the following command: > + + :set nowrapscan + +Now when the search hits the end of the file, an error message displays: + + E385: search hit BOTTOM without match for: forever ~ + +Thus you can find all matches by going to the start of the file with "gg" and +keep searching until you see this message. + If you search in the other direction, using "?", you get: + + E384: search hit TOP without match for: forever ~ + +============================================================================== +*27.3* Offsets + +By default, the search command leaves the cursor positioned on the beginning +of the pattern. You can tell Vim to leave it some other place by specifying +an offset. For the forward search command "/", the offset is specified by +appending a slash (/) and the offset: > + + /default/2 + +This command searches for the pattern "default" and then moves to the +beginning of the second line past the pattern. Using this command on the +paragraph above, Vim finds the word "default" in the first line. Then the +cursor is moved two lines down and lands on "an offset". + +If the offset is a simple number, the cursor will be placed at the beginning +of the line that many lines from the match. The offset number can be positive +or negative. If it is positive, the cursor moves down that many lines; if +negative, it moves up. + + +CHARACTER OFFSETS + +The "e" offset indicates an offset from the end of the match. It moves the +cursor onto the last character of the match. The command: > + + /const/e + +puts the cursor on the "t" of "const". + From that position, adding a number moves forward that many characters. +This command moves to the character just after the match: > + + /const/e+1 + +A positive number moves the cursor to the right, a negative number moves it to +the left. For example: > + + /const/e-1 + +moves the cursor to the "s" of "const". + +If the offset begins with "b", the cursor moves to the beginning of the +pattern. That's not very useful, since leaving out the "b" does the same +thing. It does get useful when a number is added or subtracted. The cursor +then goes forward or backward that many characters. For example: > + + /const/b+2 + +Moves the cursor to the beginning of the match and then two characters to the +right. Thus it lands on the "n". + + +REPEATING + +To repeat searching for the previously used search pattern, but with a +different offset, leave out the pattern: > + + /that + //e + +Is equal to: > + + /that/e + +To repeat with the same offset: > + + / + +"n" does the same thing. To repeat while removing a previously used offset: > + + // + + +SEARCHING BACKWARDS + +The "?" command uses offsets in the same way, but you must use "?" to separate +the offset from the pattern, instead of "/": > + + ?const?e-2 + +The "b" and "e" keep their meaning, they don't change direction with the use +of "?". + + +START POSITION + +When starting a search, it normally starts at the cursor position. When you +specify a line offset, this can cause trouble. For example: > + + /const/-2 + +This finds the next word "const" and then moves two lines up. If you +use "n" to search again, Vim could start at the current position and find the same +"const" match. Then using the offset again, you would be back where you started. +You would be stuck! + It could be worse: Suppose there is another match with "const" in the next +line. Then repeating the forward search would find this match and move two +lines up. Thus you would actually move the cursor back! + +When you specify a character offset, Vim will compensate for this. Thus the +search starts a few characters forward or backward, so that the same match +isn't found again. + +============================================================================== +*27.4* Matching multiple times + +The "*" item specifies that the item before it can match any number of times. +Thus: > + + /a* + +matches "a", "aa", "aaa", etc. But also "" (the empty string), because zero +times is included. + The "*" only applies to the item directly before it. Thus "ab*" matches +"a", "ab", "abb", "abbb", etc. To match a whole string multiple times, it +must be grouped into one item. This is done by putting "\(" before it and +"\)" after it. Thus this command: > + + /\(ab\)* + +Matches: "ab", "abab", "ababab", etc. And also "". + +To avoid matching the empty string, use "\+". This makes the previous item +match one or more times. > + + /ab\+ + +Matches "ab", "abb", "abbb", etc. It does not match "a" when no "b" follows. + +To match an optional item, use "\=". Example: > + + /folders\= + +Matches "folder" and "folders". + + +SPECIFIC COUNTS + +To match a specific number of items use the form "\{n,m}". "n" and "m" are +numbers. The item before it will be matched "n" to "m" times |inclusive|. +Example: > + + /ab\{3,5} + +matches "abbb", "abbbb" and "abbbbb". + When "n" is omitted, it defaults to zero. When "m" is omitted it defaults +to infinity. When ",m" is omitted, it matches exactly "n" times. +Examples: + + pattern match count ~ + \{,4} 0, 1, 2, 3 or 4 + \{3,} 3, 4, 5, etc. + \{0,1} 0 or 1, same as \= + \{0,} 0 or more, same as * + \{1,} 1 or more, same as \+ + \{3} 3 + + +MATCHING AS LITTLE AS POSSIBLE + +The items so far match as many characters as they can find. To match as few +as possible, use "\{-n,m}". It works the same as "\{n,m}", except that the +minimal amount possible is used. + For example, use: > + + /ab\{-1,3} + +Will match "ab" in "abbb". Actually, it will never match more than one b, +because there is no reason to match more. It requires something else to force +it to match more than the lower limit. + The same rules apply to removing "n" and "m". It's even possible to remove +both of the, resulting in "\{-}". This matches the item before it zero or +more times, as few as possible. The item by itself always match zero times. +It is useful when combined with something else. Example: > + + /a.\{-}b + +This matches "axb" in "axbxb". If this pattern would be used: > + + /a.*b + +It would try to match as many characters as possible with ".*", thus it +matches "axbxb" as a whole. + +============================================================================== +*27.5* Alternatives + +The "or" operator in a pattern is "\|". Example: > + + /foo\|bar + +This matches "foo" or "bar". More alternatives can be concatenated: > + + /one\|two\|three + +Matches "one", "two" and "three". + To match multiple times, the whole thing must be placed in "\(" and "\)": > + + /\(foo\|bar\)\+ + +This matches "foo", "foobar", "foofoo", "barfoobar", etc. + Another example: > + + /end\(if\|while\|for\) + +This matches "endif", "endwhile" and "endfor". + +A related item is "\&". This requires that both alternatives match in the +same place. The resulting match uses the last alternative. Example: > + + /forever\&... + +This matches "for" in "forever". It will not match "fortuin", for example. + +============================================================================== +*27.6* Character ranges + +To match "a", "b" or "c" you could use "/a\|b\|c". When you want to match all +letters from "a" to "z" this gets very long. There is a shorter method: > + + /[a-z] + +The [] construct matches a single character. Inside you specify which +characters to match. You can include a list of characters, like this: > + + /[0123456789abcdef] + +This will match any of the characters included. For consecutive characters +you can specify the range. "0-3" stands for "0123". "w-z" stands for "wxyz". +Thus the same command as above can be shortened to: > + + /[0-9a-f] + +To match the "-" character itself make it the first or last one in the range. +These special characters are accepted to make it easier to use them inside a +[] range (they can actually be used anywhere in the search pattern): + + \e <Esc> + \t <Tab> + \r <CR> + \b <BS> + +There are a few more special cases for [] ranges, see |/[]| for the whole +story. + + +COMPLEMENTED RANGE + +To avoid matching a specific character, use "^" at the start of the range. +The [] item then matches everything but the characters included. Example: > + + /"[^"]*" +< + " a double quote + [^"] any character that is not a double quote + * as many as possible + " a double quote again + +This matches "foo" and "3!x", including the double quotes. + + +PREDEFINED RANGES + +A number of ranges are used very often. Vim provides a shortcut for these. +For example: > + + /\a + +Finds alphabetic characters. This is equal to using "/[a-zA-Z]". Here are a +few more of these: + + item matches equivalent ~ + \d digit [0-9] + \D non-digit [^0-9] + \x hex digit [0-9a-fA-F] + \X non-hex digit [^0-9a-fA-F] + \s white space [ ] (<Tab> and <Space>) + \S non-white characters [^ ] (not <Tab> and <Space>) + \l lowercase alpha [a-z] + \L non-lowercase alpha [^a-z] + \u uppercase alpha [A-Z] + \U non-uppercase alpha [^A-Z] + + Note: + Using these predefined ranges works a lot faster than the character + range it stands for. + These items can not be used inside []. Thus "[\d\l]" does NOT work to + match a digit or lowercase alpha. Use "\(\d\|\l\)" instead. + +See |/\s| for the whole list of these ranges. + +============================================================================== +*27.7* Character classes + +The character range matches a fixed set of characters. A character class is +similar, but with an essential difference: The set of characters can be +redefined without changing the search pattern. + For example, search for this pattern: > + + /\f\+ + +The "\f" items stands for file name characters. Thus this matches a sequence +of characters that can be a file name. + Which characters can be part of a file name depends on the system you are +using. On MS-Windows, the backslash is included, on Unix it is not. This is +specified with the 'isfname' option. The default value for Unix is: > + + :set isfname + isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,= + +For other systems the default value is different. Thus you can make a search +pattern with "\f" to match a file name, and it will automatically adjust to +the system you are using it on. + + Note: + Actually, Unix allows using just about any character in a file name, + including white space. Including these characters in 'isfname' would + be theoretically correct. But it would make it impossible to find the + end of a file name in text. Thus the default value of 'isfname' is a + compromise. + +The character classes are: + + item matches option ~ + \i identifier characters 'isident' + \I like \i, excluding digits + \k keyword characters 'iskeyword' + \K like \k, excluding digits + \p printable characters 'isprint' + \P like \p, excluding digits + \f file name characters 'isfname' + \F like \f, excluding digits + +============================================================================== +*27.8* Matching a line break + +Vim can find a pattern that includes a line break. You need to specify where +the line break happens, because all items mentioned so far don't match a line +break. + To check for a line break in a specific place, use the "\n" item: > + + /the\nword + +This will match at a line that ends in "the" and the next line starts with +"word". To match "the word" as well, you need to match a space or a line +break. The item to use for it is "\_s": > + + /the\_sword + +To allow any amount of white space: > + + /the\_s\+word + +This also matches when "the " is at the end of a line and " word" at the +start of the next one. + +"\s" matches white space, "\_s" matches white space or a line break. +Similarly, "\a" matches an alphabetic character, and "\_a" matches an +alphabetic character or a line break. The other character classes and ranges +can be modified in the same way by inserting a "_". + +Many other items can be made to match a line break by prepending "\_". For +example: "\_." matches any character or a line break. + + Note: + "\_.*" matches everything until the end of the file. Be careful with + this, it can make a search command very slow. + +Another example is "\_[]", a character range that includes a line break: > + + /"\_[^"]*" + +This finds a text in double quotes that may be split up in several lines. + +============================================================================== +*27.9* Examples + +Here are a few search patterns you might find useful. This shows how the +items mentioned above can be combined. + + +FINDING A CALIFORNIA LICENSE PLATE + +A sample license place number is "1MGU103". It has one digit, three uppercase +letters and three digits. Directly putting this into a search pattern: > + + /\d\u\u\u\d\d\d + +Another way is to specify that there are three digits and letters with a +count: > + + /\d\u\{3}\d\{3} + +Using [] ranges instead: > + + /[0-9][A-Z]\{3}[0-9]\{3} + +Which one of these you should use? Whichever one you can remember. The +simple way you can remember is much faster than the fancy way that you can't. +If you can remember them all, then avoid the last one, because it's both more +typing and slower to execute. + + +FINDING AN IDENTIFIER + +In C programs (and many other computer languages) an identifier starts with a +letter and further consists of letters and digits. Underscores can be used +too. This can be found with: > + + /\<\h\w*\> + +"\<" and "\>" are used to find only whole words. "\h" stands for "[A-Za-z_]" +and "\w" for "[0-9A-Za-z_]". + + Note: + "\<" and "\>" depend on the 'iskeyword' option. If it includes "-", + for example, then "ident-" is not matched. In this situation use: > + + /\w\@<!\h\w*\w\@! +< + This checks if "\w" does not match before or after the identifier. + See |/\@<!| and |/\@!|. + +============================================================================== + +Next chapter: |usr_28.txt| Folding + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_28.txt b/en/usr_28.txt new file mode 100644 index 000000000..db6824296 --- /dev/null +++ b/en/usr_28.txt @@ -0,0 +1,426 @@ +*usr_28.txt* For Vim version 6.3. Last change: 2003 Dec 21 + + VIM USER MANUAL - by Bram Moolenaar + + Folding + + +Structured text can be separated in sections. And sections in sub-sections. +Folding allows you to display a section as one line, providing an overview. +This chapter explains the different ways this can be done. + +|28.1| What is folding? +|28.2| Manual folding +|28.3| Working with folds +|28.4| Saving and restoring folds +|28.5| Folding by indent +|28.6| Folding with markers +|28.7| Folding by syntax +|28.8| Folding by expression +|28.9| Folding unchanged lines +|28.10| Which fold method to use? + + Next chapter: |usr_29.txt| Moving through programs + Previous chapter: |usr_27.txt| Search commands and patterns +Table of contents: |usr_toc.txt| + +============================================================================== +*28.1* What is folding? + +Folding is used to show a range of lines in the buffer as a single line on the +screen. Like a piece of paper which is folded to make it shorter: + + +------------------------+ + | line 1 | + | line 2 | + | line 3 | + |_______________________ | + \ \ + \________________________\ + / folded lines / + /________________________/ + | line 12 | + | line 13 | + | line 14 | + +------------------------+ + +The text is still in the buffer, unchanged. Only the way lines are displayed +is affected by folding. + +The advantage of folding is that you can get a better overview of the +structure of text, by folding lines of a section and replacing it with a line +that indicates that there is a section. + +============================================================================== +*28.2* Manual folding + +Try it out: Position the cursor in a paragraph and type: > + + zfap + +You will see that the paragraph is replaced by a highlighted line. You have +created a fold. |zf| is an operator and |ap| a text object selection. You +can use the |zf| operator with any movement command to create a fold for the +text that it moved over. |zf| also works in Visual mode. + +To view the text again, open the fold by typing: > + + zo + +And you can close the fold again with: > + + zc + +All the folding commands start with "z". With some fantasy, this looks like a +folded piece of paper, seen from the side. The letter after the "z" has a +mnemonic meaning to make it easier to remember the commands: + + zf F-old creation + zo O-pen a fold + zc C-lose a fold + +Folds can be nested: A region of text that contains folds can be folded +again. For example, you can fold each paragraph in this section, and then +fold all the sections in this chapter. Try it out. You will notice that +opening the fold for the whole chapter will restore the nested folds as they +were, some may be open and some may be closed. + +Suppose you have created several folds, and now want to view all the text. +You could go to each fold and type "zo". To do this faster, use this command: > + + zr + +This will R-educe the folding. The opposite is: > + + zm + +This folds M-ore. You can repeat "zr" and "zm" to open and close nested folds +of several levels. + +If you have nested several levels deep, you can open all of them with: > + + zR + +This R-educes folds until there are none left. And you can close all folds +with: > + + zM + +This folds M-ore and M-ore. + +You can quickly disable the folding with the |zn| command. Then |zN| brings +back the folding as it was. |zi| toggles between the two. This is a useful +way of working: +- create folds to get overview on your file +- move around to where you want to do your work +- do |zi| to look at the text and edit it +- do |zi| again to go back to moving around + +More about manual folding in the reference manual: |fold-manual| + +============================================================================== +*28.3* Working with folds + +When some folds are closed, movement commands like "j" and "k" move over a +fold like it was a single, empty line. This allows you to quickly move around +over folded text. + +You can yank, delete and put folds as if it was a single line. This is very +useful if you want to reorder functions in a program. First make sure that +each fold contains a whole function (or a bit less) by selecting the right +'foldmethod'. Then delete the function with "dd", move the cursor and put it +with "p". If some lines of the function are above or below the fold, you can +use Visual selection: +- put the cursor on the first line to be moved +- hit "V" to start Visual mode +- put the cursor on the last line to be moved +- hit "d" to delete the selected lines. +- move the cursor to the new position and "p"ut the lines there. + +It is sometimes difficult to see or remember where a fold is located, thus +where a |zo| command would actually work. To see the defined folds: > + + :set foldcolumn=4 + +This will show a small column on the left of the window to indicate folds. +A "+" is shown for a closed fold. A "-" is shown at the start of each open +fold and "|" at following lines of the fold. + +You can use the mouse to open a fold by clicking on the "+" in the foldcolumn. +Clicking on the "-" or a "|" below it will close an open fold. + +To open all folds at the cursor line use |zO|. +To close all folds at the cursor line use |zC|. +To delete a fold at the cursor line use |zd|. +To delete all folds at the cursor line use |zD|. + +When in Insert mode, the fold at the cursor line is never closed. That allows +you to see what you type! + +Folds are opened automatically when jumping around or moving the cursor left +or right. For example, the "0" command opens the fold under the cursor +(if 'foldopen' contains "hor", which is the default). The 'foldopen' option +can be changed to open folds for specific commands. If you want the line +under the cursor always to be open, do this: > + + :set foldopen=all + +Warning: You won't be able to move onto a closed fold then. You might want to +use this only temporarily and then set it back to the default: > + + :set foldopen& + +You can make folds close automatically when you move out of it: > + + :set foldclose=all + +This will re-apply 'foldlevel' to all folds that don't contain the cursor. +You have to try it out if you like how this feels. Use |zm| to fold more and +|zr| to fold less (reduce folds). + +The folding is local to the window. This allows you to open two windows on +the same buffer, one with folds and one without folds. Or one with all folds +closed and one with all folds open. + +============================================================================== +*28.4* Saving and restoring folds + +When you abandon a file (starting to edit another one), the state of the folds +is lost. If you come back to the same file later, all manually opened and +closed folds are back to their default. When folds have been created +manually, all folds are gone! To save the folds use the |:mkview| command: > + + :mkview + +This will store the settings and other things that influence the view on the +file. You can change what is stored with the 'viewoptions' option. +When you come back to the same file later, you can load the view again: > + + :loadview + +You can store up to ten views on one file. For example, to save the current +setup as the third view and load the second view: > + + :mkview 3 + :loadview 2 + +Note that when you insert or delete lines the views might become invalid. +Also check out the 'viewdir' option, which specifies where the views are +stored. You might want to delete old views now and then. + +============================================================================== +*28.5* Folding by indent + +Defining folds with |zf| is a lot of work. If your text is structured by +giving lower level items a larger indent, you can use the indent folding +method. This will create folds for every sequence of lines with the same +indent. Lines with a larger indent will become nested folds. This works well +with many programming languages. + +Try this by setting the 'foldmethod' option: > + + :set foldmethod=indent + +Then you can use the |zm| and |zr| commands to fold more and reduce folding. +It's easy to see on this example text: + +This line is not indented + This line is indented once + This line is indented twice + This line is indented twice + This line is indented once +This line is not indented + This line is indented once + This line is indented once + +Note that the relation between the amount of indent and the fold depth depends +on the 'shiftwidth' option. Each 'shiftwidth' worth of indent adds one to the +depth of the fold. This is called a fold level. + +When you use the |zr| and |zm| commands you actually increase or decrease the +'foldlevel' option. You could also set it directly: > + + :set foldlevel=3 + +This means that all folds with three times a 'shiftwidth' indent or more will +be closed. The lower the foldlevel, the more folds will be closed. When +'foldlevel' is zero, all folds are closed. |zM| does set 'foldlevel' to zero. +The opposite command |zR| sets 'foldlevel' to the deepest fold level that is +present in the file. + +Thus there are two ways to open and close the folds: +(A) By setting the fold level. + This gives a very quick way of "zooming out" to view the structure of the + text, move the cursor, and "zoom in" on the text again. + +(B) By using |zo| and |zc| commands to open or close specific folds. + This allows opening only those folds that you want to be open, while other + folds remain closed. + +This can be combined: You can first close most folds by using |zm| a few times +and then open a specific fold with |zo|. Or open all folds with |zR| and +then close specific folds with |zc|. + +But you cannot manually define folds when 'foldmethod' is "indent", as that +would conflict with the relation between the indent and the fold level. + +More about folding by indent in the reference manual: |fold-indent| + +============================================================================== +*28.6* Folding with markers + +Markers in the text are used to specify the start and end of a fold region. +This gives precise control over which lines are included in a fold. The +disadvantage is that the text needs to be modified. + +Try it: > + + :set foldmethod=marker + +Example text, as it could appear in a C program: + + /* foobar () {{{ */ + int foobar() + { + /* return a value {{{ */ + return 42; + /* }}} */ + } + /* }}} */ + +Notice that the folded line will display the text before the marker. This is +very useful to tell what the fold contains. + +It's quite annoying when the markers don't pair up correctly after moving some +lines around. This can be avoided by using numbered markers. Example: + + /* global variables {{{1 */ + int varA, varB; + + /* functions {{{1 */ + /* funcA() {{{2 */ + void funcA() {} + + /* funcB() {{{2 */ + void funcB() {} + /* }}}1 */ + +At every numbered marker a fold at the specified level begins. This will make +any fold at a higher level stop here. You can just use numbered start markers +to define all folds. Only when you want to explicitly stop a fold before +another starts you need to add an end marker. + +More about folding with markers in the reference manual: |fold-marker| + +============================================================================== +*28.7* Folding by syntax + +For each language Vim uses a different syntax file. This defines the colors +for various items in the file. If you are reading this in Vim, in a terminal +that supports colors, the colors you see are made with the "help" syntax file. + In the syntax files it is possible to add syntax items that have the "fold" +argument. These define a fold region. This requires writing a syntax file +and adding these items in it. That's not so easy to do. But once it's done, +all folding happens automatically. + Here we'll assume you are using an existing syntax file. Then there is +nothing more to explain. You can open and close folds as explained above. +The folds will be created and deleted automatically when you edit the file. + +More about folding by syntax in the reference manual: |fold-syntax| + +============================================================================== +*28.8* Folding by expression + +This is similar to folding by indent, but instead of using the indent of a +line a user function is called to compute the fold level of a line. You can +use this for text where something in the text indicates which lines belong +together. An example is an e-mail message where the quoted text is indicated +by a ">" before the line. To fold these quotes use this: > + + :set foldmethod=expr + :set foldexpr=strlen(substitute(substitute(getline(v:lnum),'\\s','',\"g\"),'[^>].*','','')) + +You can try it out on this text: + +> quoted text he wrote +> quoted text he wrote +> > double quoted text I wrote +> > double quoted text I wrote + +Explanation for the 'foldexpr' used in the example (inside out): + getline(v:lnum) gets the current line + substitute(...,'\\s','','g') removes all white space from the line + substitute(...,'[^>].*','','')) removes everything after leading '>'s + strlen(...) counts the length of the string, which + is the number of '>'s found + +Note that a backslash must be inserted before every space, double quote and +backslash for the ":set" command. If this confuses you, do > + + :set foldexpr + +to check the actual resulting value. To correct a complicated expression, use +the command-line completion: > + + :set foldexpr=<Tab> + +Where <Tab> is a real Tab. Vim will fill in the previous value, which you can +then edit. + +When the expression gets more complicated you should put it in a function and +set 'foldexpr' to call that function. + +More about folding by expression in the reference manual: |fold-expr| + +============================================================================== +*28.9* Folding unchanged lines + +This is useful when you set the 'diff' option in the same window. The +|vimdiff| command does this for you. Example: > + + setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1 + +Do this in every window that shows a different version of the same file. You +will clearly see the differences between the files, while the text that didn't +change is folded. + +For more details see |fold-diff|. + +============================================================================== +*28.10* Which fold method to use? + +All these possibilities makes you wonder which method you should chose. +Unfortunately, there is no golden rule. Here are some hints. + +If there is a syntax file with folding for the language you are editing, that +is probably the best choice. If there isn't one, you might try to write it. +This requires a good knowledge of search patterns. It's not easy, but when +it's working you will not have to define folds manually. + +Typing commands to manually fold regions can be used for unstructured text. +Then use the |:mkview| command to save and restore your folds. + +The marker method requires you to change the file. If you are sharing the +files with other people or you have to meet company standards, you might not +be allowed to add them. + The main advantage of markers is that you can put them exactly where you +want them. That avoids that a few lines are missed when you cut and paste +folds. And you can add a comment about what is contained in the fold. + +Folding by indent is something that works in many files, but not always very +well. Use it when you can't use one of the other methods. However, it is +very useful for outlining. Then you specifically use one 'shiftwidth' for +each nesting level. + +Folding with expressions can make folds in almost any structured text. It is +quite simple to specify, especially if the start and end of a fold can easily +be recognized. + If you use the "expr" method to define folds, but they are not exactly how +you want them, you could switch to the "manual" method. This will not remove +the defined folds. Then you can delete or add folds manually. + +============================================================================== + +Next chapter: |usr_29.txt| Moving through programs + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_29.txt b/en/usr_29.txt new file mode 100644 index 000000000..61ca791ea --- /dev/null +++ b/en/usr_29.txt @@ -0,0 +1,613 @@ +*usr_29.txt* For Vim version 6.3. Last change: 2004 Feb 12 + + VIM USER MANUAL - by Bram Moolenaar + + Moving through programs + + +The creator of Vim is a computer programmer. It's no surprise that Vim +contains many features to aid in writing programs. Jump around to find where +identifiers are defined and used. Preview declarations in a separate window. +There is more in the next chapter. + +|29.1| Using tags +|29.2| The preview window +|29.3| Moving through a program +|29.4| Finding global identifiers +|29.5| Finding local identifiers + + Next chapter: |usr_30.txt| Editing programs + Previous chapter: |usr_28.txt| Folding +Table of contents: |usr_toc.txt| + +============================================================================== +*29.1* Using tags + +What is a tag? It is a location where an identifier is defined. An example +is a function definition in a C or C++ program. A list of tags is kept in a +tags file. This can be used by Vim to directly jump from any place to the +tag, the place where an identifier is defined. + To generate the tags file for all C files in the current directory, use the +following command: > + + ctags *.c + +"ctags" is a separate program. Most Unix systems already have it installed. +If you do not have it yet, you can find Exuberant ctags here: + + http://ctags.sf.net ~ + +Now when you are in Vim and you want to go to a function definition, you can +jump to it by using the following command: > + + :tag startlist + +This command will find the function "startlist" even if it is in another file. + The CTRL-] command jumps to the tag of the word that is under the cursor. +This makes it easy to explore a tangle of C code. Suppose, for example, that +you are in the function "write_block". You can see that it calls +"write_line". But what does "write_line" do? By placing the cursor on the +call to "write_line" and pressing CTRL-], you jump to the definition of this +function. + The "write_line" function calls "write_char". You need to figure out what +it does. So you position the cursor over the call to "write_char" and press +CTRL-]. Now you are at the definition of "write_char". + + +-------------------------------------+ + |void write_block(char **s; int cnt) | + |{ | + | int i; | + | for (i = 0; i < cnt; ++i) | + | write_line(s[i]); | + |} | | + +-----------|-------------------------+ + | + CTRL-] | + | +----------------------------+ + +--> |void write_line(char *s) | + |{ | + | while (*s != 0) | + | write_char(*s++); | + |} | | + +--------|-------------------+ + | + CTRL-] | + | +------------------------------------+ + +--> |void write_char(char c) | + |{ | + | putchar((int)(unsigned char)c); | + |} | + +------------------------------------+ + +The ":tags" command shows the list of tags that you traversed through: + + :tags + # TO tag FROM line in file/text ~ + 1 1 write_line 8 write_block.c ~ + 2 1 write_char 7 write_line.c ~ + > ~ +> +Now to go back. The CTRL-T command goes to the preceding tag. In the example +above you get back to the "write_line" function, in the call to "write_char". + This command takes a count argument that indicates how many tags to jump +back. You have gone forward, and now back. Let's go forward again. The +following command goes to the tag on top of the list: > + + :tag + +You can prefix it with a count and jump forward that many tags. For example: +":3tag". CTRL-T also can be preceded with a count. + These commands thus allow you to go down a call tree with CTRL-] and back +up again with CTRL-T. Use ":tags" to find out where you are. + + +SPLIT WINDOWS + +The ":tag" command replaces the file in the current window with the one +containing the new function. But suppose you want to see not only the old +function but also the new one? You can split the window using the ":split" +command followed by the ":tag" command. Vim has a shorthand command that does +both: > + :stag tagname + +To split the current window and jump to the tag under the cursor use this +command: > + + CTRL-W ] + +If a count is specified, the new window will be that many lines high. + + +MORE TAGS FILES + +When you have files in many directories, you can create a tags file in each of +them. Vim will then only be able to jump to tags within that directory. + To find more tags files, set the 'tags' option to include all the relevant +tags files. Example: > + + :set tags=./tags,./../tags,./*/tags + +This finds a tags file in the same directory as the current file, one +directory level higher and in all subdirectories. + This is quite a number of tags files, but it may still not be enough. For +example, when editing a file in "~/proj/src", you will not find the tags file +"~/proj/sub/tags". For this situation Vim offers to search a whole directory +tree for tags files. Example: > + + :set tags=~/proj/**/tags + + +ONE TAGS FILE + +When Vim has to search many places for tags files, you can hear the disk +rattling. It may get a bit slow. In that case it's better to spend this +time while generating one big tags file. You might do this overnight. + This requires the Exuberant ctags program, mentioned above. It offers an +argument to search a whole directory tree: > + + cd ~/proj + ctags -R . + +The nice thing about this is that Exuberant ctags recognizes various file +types. Thus this doesn't work just for C and C++ programs, also for Eiffel +and even Vim scripts. See the ctags documentation to tune this. + Now you only need to tell Vim where your big tags file is: > + + :set tags=~/proj/tags + + +MULTIPLE MATCHES + +When a function is defined multiple times (or a method in several classes), +the ":tag" command will jump to the first one. If there is a match in the +current file, that one is used first. + You can now jump to other matches for the same tag with: > + + :tnext + +Repeat this to find further matches. If there are many, you can select which +one to jump to: > + + :tselect tagname + +Vim will present you with a list of choices: + + # pri kind tag file ~ + 1 F f mch_init os_amiga.c ~ + mch_init() ~ + 2 F f mch_init os_mac.c ~ + mch_init() ~ + 3 F f mch_init os_msdos.c ~ + mch_init(void) ~ + 4 F f mch_init os_riscos.c ~ + mch_init() ~ + Enter nr of choice (<CR> to abort): ~ + +You can now enter the number (in the first column) of the match that you would +like to jump to. The information in the other columns give you a good idea of +where the match is defined. + +To move between the matching tags, these commands can be used: + + :tfirst go to first match + :[count]tprevious go to [count] previous match + :[count]tnext go to [count] next match + :tlast go to last match + +If [count] is omitted then one is used. + + +GUESSING TAG NAMES + +Command line completion is a good way to avoid typing a long tag name. Just +type the first bit and press <Tab>: > + + :tag write_<Tab> + +You will get the first match. If it's not the one you want, press <Tab> until +you find the right one. + Sometimes you only know part of the name of a function. Or you have many +tags that start with the same string, but end differently. Then you can tell +Vim to use a pattern to find the tag. + Suppose you want to jump to a tag that contains "block". First type +this: > + + :tag /block + +Now use command line completion: press <Tab>. Vim will find all tags that +contain "block" and use the first match. + The "/" before a tag name tells Vim that what follows is not a literal tag +name, but a pattern. You can use all the items for search patterns here. For +example, suppose you want to select a tag that starts with "write_": > + + :tselect /^write_ + +The "^" specifies that the tag starts with "write_". Otherwise it would also +be found halfway a tag name. Similarly "$" at the end makes sure the pattern +matches until the end of a tag. + + +A TAGS BROWSER + +Since CTRL-] takes you to the definition of the identifier under the cursor, +you can use a list of identifier names as a table of contents. Here is an +example. + First create a list of identifiers (this requires Exuberant ctags): > + + ctags --c-types=f -f functions *.c + +Now start Vim without a file, and edit this file in Vim, in a vertically split +window: > + + vim + :vsplit functions + +The window contains a list of all the functions. There is some more stuff, +but you can ignore that. Do ":setlocal ts=99" to clean it up a bit. + In this window, define a mapping: > + + :nnoremap <buffer> <CR> 0ye<C-W>w:tag <C-R>"<CR> + +Move the cursor to the line that contains the function you want to go to. +Now press <Enter>. Vim will go to the other window and jump to the selected +function. + + +RELATED ITEMS + +You can set 'ignorecase' to make case in tag names be ignored. + +The 'tagbsearch' option tells if the tags file is sorted or not. The default +is to assume a sorted tags file, which makes a tags search a lot faster, but +doesn't work if the tags file isn't sorted. + +The 'taglength' option can be used to tell Vim the number of significant +characters in a tag. + +When you use the SNiFF+ program, you can use the Vim interface to it |sniff|. +SNiFF+ is a commercial program. + +Cscope is a free program. It does not only find places where an identifier is +declared, but also where it is used. See |cscope|. + +============================================================================== +*29.2* The preview window + +When you edit code that contains a function call, you need to use the correct +arguments. To know what values to pass you can look at how the function is +defined. The tags mechanism works very well for this. Preferably the +definition is displayed in another window. For this the preview window can be +used. + To open a preview window to display the function "write_char": > + + :ptag write_char + +Vim will open a window, and jumps to the tag "write_char". Then it takes you +back to the original position. Thus you can continue typing without the need +to use a CTRL-W command. + If the name of a function appears in the text, you can get its definition +in the preview window with: > + + CTRL-W } + +There is a script that automatically displays the text where the word under +the cursor was defined. See |CursorHold-example|. + +To close the preview window use this command: > + + :pclose + +To edit a specific file in the preview window, use ":pedit". This can be +useful to edit a header file, for example: > + + :pedit defs.h + +Finally, ":psearch" can be used to find a word in the current file and any +included files and display the match in the preview window. This is +especially useful when using library functions, for which you do not have a +tags file. Example: > + + :psearch popen + +This will show the "stdio.h" file in the preview window, with the function +prototype for popen(): + + FILE *popen __P((const char *, const char *)); ~ + +You can specify the height of the preview window, when it is opened, with the +'previewheight' option. + +============================================================================== +*29.3* Moving through a program + +Since a program is structured, Vim can recognize items in it. Specific +commands can be used to move around. + C programs often contain constructs like this: + + #ifdef USE_POPEN ~ + fd = popen("ls", "r") ~ + #else ~ + fd = fopen("tmp", "w") ~ + #endif ~ + +But then much longer, and possibly nested. Position the cursor on the +"#ifdef" and press %. Vim will jump to the "#else". Pressing % again takes +you to the "#endif". Another % takes you to the "#ifdef" again. + When the construct is nested, Vim will find the matching items. This is a +good way to check if you didn't forget an "#endif". + When you are somewhere inside a "#if" - "#endif", you can jump to the start +of it with: > + + [# + +If you are not after a "#if" or "#ifdef" Vim will beep. To jump forward to +the next "#else" or "#endif" use: > + + ]# + +These two commands skip any "#if" - "#endif" blocks that they encounter. +Example: + + #if defined(HAS_INC_H) ~ + a = a + inc(); ~ + # ifdef USE_THEME ~ + a += 3; ~ + # endif ~ + set_width(a); ~ + +With the cursor in the last line, "[#" moves to the first line. The "#ifdef" +- "#endif" block in the middle is skipped. + + +MOVING IN CODE BLOCKS + +In C code blocks are enclosed in {}. These can get pretty long. To move to +the start of the outer block use the "[[" command. Use "][" to find the end. +This assumes that the "{" and "}" are in the first column. + The "[{" command moves to the start of the current block. It skips over +pairs of {} at the same level. "]}" jumps to the end. + An overview: + + function(int a) + +-> { + | if (a) + | +-> { + [[ | | for (;;) --+ + | | +-> { | + | [{ | | foo(32); | --+ + | | [{ | if (bar(a)) --+ | ]} | + +-- | +-- break; | ]} | | + | } <-+ | | ][ + +-- foobar(a) | | + } <-+ | + } <-+ + +When writing C++ or Java, the outer {} block is for the class. The next level +of {} is for a method. When somewhere inside a class use "[m" to find the +previous start of a method. "]m" finds the next end of a method. + +Additionally, "[]" moves backward to the end of a function and "]]" moves +forward to the start of the next function. The end of a function is defined +by a "}" in the first column. + + int func1(void) + { + return 1; + +----------> } + | + [] | int func2(void) + | +-> { + | [[ | if (flag) + start +-- +-- return flag; + | ][ | return 2; + | +-> } + ]] | + | int func3(void) + +----------> { + return 3; + } + +Don't forget you can also use "%" to move between matching (), {} and []. +That also works when they are many lines apart. + + +MOVING IN BRACES + +The "[(" and "])" commands work similar to "[{" and "]}", except that they +work on () pairs instead of {} pairs. +> + [( +< <-------------------------------- + <------- + if (a == b && (c == d || (e > f)) && x > y) ~ + --------------> + --------------------------------> > + ]) + +MOVING IN COMMENTS + +To move back to the start of a comment use "[/". Move forward to the end of a +comment with "]/". This only works for /* - */ comments. + + +-> +-> /* + | [/ | * A comment about --+ + [/ | +-- * wonderful life. | ]/ + | */ <-+ + | + +-- foo = bar * 3; --+ + | ]/ + /* a short comment */ <-+ + +============================================================================== +*29.4* Finding global identifiers + +You are editing a C program and wonder if a variable is declared as "int" or +"unsigned". A quick way to find this is with the "[I" command. + Suppose the cursor is on the word "column". Type: > + + [I + +Vim will list the matching lines it can find. Not only in the current file, +but also in all included files (and files included in them, etc.). The result +looks like this: + + structs.h ~ + 1: 29 unsigned column; /* column number */ ~ + +The advantage over using tags or the preview window is that included files are +searched. In most cases this results in the right declaration to be found. +Also when the tags file is out of date. Also when you don't have tags for the +included files. + However, a few things must be right for "[I" to do its work. First of all, +the 'include' option must specify how a file is included. The default value +works for C and C++. For other languages you will have to change it. + + +LOCATING INCLUDED FILES + + Vim will find included files in the places specified with the 'path' +option. If a directory is missing, some include files will not be found. You +can discover this with this command: > + + :checkpath + +It will list the include files that could not be found. Also files included +by the files that could be found. An example of the output: + + --- Included files not found in path --- ~ + <io.h> ~ + vim.h --> ~ + <functions.h> ~ + <clib/exec_protos.h> ~ + +The "io.h" file is included by the current file and can't be found. "vim.h" +can be found, thus ":checkpath" goes into this file and checks what it +includes. The "functions.h" and "clib/exec_protos.h" files, included by +"vim.h" are not found. + + Note: + Vim is not a compiler. It does not recognize "#ifdef" statements. + This means every "#include" statement is used, also when it comes + after "#if NEVER". + +To fix the files that could not be found, add a directory to the 'path' +option. A good place to find out about this is the Makefile. Look out for +lines that contain "-I" items, like "-I/usr/local/X11". To add this directory +use: > + + :set path+=/usr/local/X11 + +When there are many subdirectories, you an use the "*" wildcard. Example: > + + :set path+=/usr/*/include + +This would find files in "/usr/local/include" as well as "/usr/X11/include". + +When working on a project with a whole nested tree of included files, the "**" +items is useful. This will search down in all subdirectories. Example: > + + :set path+=/projects/invent/**/include + +This will find files in the directories: + + /projects/invent/include ~ + /projects/invent/main/include ~ + /projects/invent/main/os/include ~ + etc. + +There are even more possibilities. Check out the 'path' option for info. + If you want to see which included files are actually found, use this +command: > + + :checkpath! + +You will get a (very long) list of included files, the files they include, and +so on. To shorten the list a bit, Vim shows "(Already listed)" for files that +were found before and doesn't list the included files in there again. + + +JUMPING TO A MATCH + +"[I" produces a list with only one line of text. When you want to have a +closer look at the first item, you can jump to that line with the command: > + + [<Tab> + +You can also use "[ CTRL-I", since CTRL-I is the same as pressing <Tab>. + +The list that "[I" produces has a number at the start of each line. When you +want to jump to another item than the first one, type the number first: > + + 3[<Tab> + +Will jump to the third item in the list. Remember that you can use CTRL-O to +jump back to where you started from. + + +RELATED COMMANDS + + [i only lists the first match + ]I only lists items below the cursor + ]i only lists the first item below the cursor + + +FINDING DEFINED IDENTIFIERS + +The "[I" command finds any identifier. To find only macros, defined with +"#define" use: > + + [D + +Again, this searches in included files. The 'define' option specifies what a +line looks like that defines the items for "[D". You could change it to make +it work with other languages than C or C++. + The commands related to "[D" are: + + [d only lists the first match + ]D only lists items below the cursor + ]d only lists the first item below the cursor + +============================================================================== +*29.5* Finding local identifiers + +The "[I" command searches included files. To search in the current file only, +and jump to the first place where the word under the cursor is used: > + + gD + +Hint: Goto Definition. This command is very useful to find a variable or +function that was declared locally ("static", in C terms). Example (cursor on +"counter"): + + +-> static int counter = 0; + | + | int get_counter(void) + gD | { + | ++counter; + +-- return counter; + } + +To restrict the search even further, and look only in the current function, +use this command: > + + gd + +This will go back to the start of the current function and find the first +occurrence of the word under the cursor. Actually, it searches backwards to +an empty line above the a "{" in the first column. From there it searches +forward for the identifier. Example (cursor on "idx"): + + int find_entry(char *name) + { + +-> int idx; + | + gd | for (idx = 0; idx < table_len; ++idx) + | if (strcmp(table[idx].name, name) == 0) + +-- return idx; + } + +============================================================================== + +Next chapter: |usr_30.txt| Editing programs + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_30.txt b/en/usr_30.txt new file mode 100644 index 000000000..e0e23ed90 --- /dev/null +++ b/en/usr_30.txt @@ -0,0 +1,643 @@ +*usr_30.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + VIM USER MANUAL - by Bram Moolenaar + + Editing programs + + +Vim has various commands that aid in writing computer programs. Compile a +program and directly jump to reported errors. Automatically set the indent +for many languages and format comments. + +|30.1| Compiling +|30.2| Indenting C files +|30.3| Automatic indenting +|30.4| Other indenting +|30.5| Tabs and spaces +|30.6| Formatting comments + + Next chapter: |usr_31.txt| Exploiting the GUI + Previous chapter: |usr_29.txt| Moving through programs +Table of contents: |usr_toc.txt| + +============================================================================== +*30.1* Compiling + +Vim has a set of so called "quickfix" commands. They enable you to compile a +program from within Vim and then go through the errors generated and fix them +(hopefully). You can then recompile and fix any new errors that are found +until finally your program compiles without any error. + +The following command runs the program "make" (supplying it with any argument +you give) and captures the results: > + + :make {arguments} + +If errors were generated, they are captured and the editor positions you where +the first error occurred. + Take a look at an example ":make" session. (Typical :make sessions generate +far more errors and fewer stupid ones.) After typing ":make" the screen looks +like this: + + :!make | &tee /tmp/vim215953.err ~ + gcc -g -Wall -o prog main.c sub.c ~ + main.c: In function 'main': ~ + main.c:6: too many arguments to function 'do_sub' ~ + main.c: At top level: ~ + main.c:10: parse error before '}' ~ + make: *** [prog] Error 1 ~ + + 2 returned ~ + "main.c" 11L, 111C ~ + (3 of 6): too many arguments to function 'do_sub' ~ + Hit ENTER or type command to continue ~ + +From this you can see that you have errors in the file "main.c". When you +press <Enter>, Vim displays the file "main.c", with the cursor positioned on +line 6, the first line with an error. You did not need to specify the file or +the line number, Vim knew where to go by looking in the error messages. + + +---------------------------------------------------+ + |int main() | + |{ | + | int i=3; | + cursor -> | do_sub("foo"); | + | ++i; | + | return (0); | + |} | + |} | + | ~ | + |(3 of 12): too many arguments to function 'do_sub' | + +---------------------------------------------------+ + +The following command goes to where the next error occurs: > + + :cnext + +Vim jumps to line 10, the last line in the file, where there is an extra '}'. + When there is not enough room, Vim will shorten the error message. To see +the whole message use: > + + :cc + +You can get an overview of all the error messages with the ":clist" command. +The output looks like this: > + + :clist +< 3 main.c: 6:too many arguments to function 'do_sub' ~ + 5 main.c: 10:parse error before '}' ~ + +Only the lines where Vim recognized a file name and line number are listed +here. It assumes those are the interesting lines and the rest is just boring +messages. However, sometimes unrecognized lines do contain something you want +to see. Output from the linker, for example, about an undefined function. +To see all the messages add a "!" to the command: > + + :clist! +< 1 gcc -g -Wall -o prog main.c sub.c ~ + 2 main.c: In function 'main': ~ + 3 main.c:6: too many arguments to function 'do_sub' ~ + 4 main.c: At top level: ~ + 5 main.c:10: parse error before '}' ~ + 6 make: *** [prog] Error 1 ~ + +Vim will highlight the current error. To go back to the previous error, use: +> + :cprevious + +Other commands to move around in the error list: + + :cfirst to first error + :clast to last error + :cc 3 to error nr 3 + + +USING ANOTHER COMPILER + +The name of the program to run when the ":make" command is executed is defined +by the 'makeprg' option. Usually this is set to "make", but Visual C++ users +should set this to "nmake" by executing the following command: > + + :set makeprg=nmake + +You can also include arguments in this option. Special characters need to +be escaped with a backslash. Example: > + + :set makeprg=nmake\ -f\ project.mak + +You can include special Vim keywords in the command specification. The % +character expands to the name of the current file. So if you execute the +command: > + :set makeprg=make\ % + +When you are editing main.c, then ":make" executes the following command: > + + make main.c + +This is not too useful, so you will refine the command a little and use the :r +(root) modifier: > + + :set makeprg=make\ %:r.o + +Now the command executed is as follows: > + + make main.o + +More about these modifiers here: |filename-modifiers|. + + +OLD ERROR LISTS + +Suppose you ":make" a program. There is an warning message in one file and an +error message in another. You fix the error and use ":make" again to check if +it was really fixed. Now you want to look at the warning message. It doesn't +show up in the last error list, since the file with the warning wasn't +compiled again. You can go back to the previous error list with: > + + :colder + +Then use ":clist" and ":cc {nr}" to jump to the place with the warning. + To go forward to the next error list: > + + :cnewer + +Vim remembers ten error lists. + + +SWITCHING COMPILERS + +You have to tell Vim what format the error messages are that your compiler +produces. This is done with the 'errorformat' option. The syntax of this +option is quite complicated and it can be made to fit almost any compiler. +You can find the explanation here: |errorformat|. + +You might be using various different compilers. Setting the 'makeprg' option, +and especially the 'errorformat' each time is not easy. Vim offers a simple +method for this. For example, to switch to using the Microsoft Visual C++ +compiler: > + + :compiler msvc + +This will find the Vim script for the "msvc" compiler and set the appropriate +options. + You can write your own compiler files. See |write-compiler-plugin|. + + +OUTPUT REDIRECTION + +The ":make" command redirects the output of the executed program to an error +file. How this works depends on various things, such as the 'shell'. If your +":make" command doesn't capture the output, check the 'makeef' and +'shellpipe' options. The 'shellquote' and 'shellxquote' options might also +matter. + +In case you can't get ":make" to redirect the file for you, an alternative is +to compile the program in another window and redirect the output into a file. +Then have Vim read this file with: > + + :cfile {filename} + +Jumping to errors will work like with the ":make" command. + +============================================================================== +*30.2* Indenting C files + +A program is much easier to understand when the lines have been properly +indented. Vim offers various ways to make this less work. + For C programs set the 'cindent' option. Vim knows a lot about C programs +and will try very hard to automatically set the indent for you. Set the +'shiftwidth' option to the amount of spaces you want for a deeper level. Four +spaces will work fine. One ":set" command will do it: > + + :set cindent shiftwidth=4 + +With this option enabled, when you type something such as "if (x)", the next +line will automatically be indented an additional level. + + if (flag) + Automatic indent ---> do_the_work(); + Automatic unindent <-- if (other_flag) { + Automatic indent ---> do_file(); + keep indent do_some_more(); + Automatic unindent <-- } + +When you type something in curly braces ({}), the text will be indented at the +start and unindented at the end. The unindenting will happen after typing the +'}', since Vim can't guess what you are going to type. + +One side effect of automatic indentation is that it helps you catch errors in +your code early. When you type a } to finish a function, only to find that +the automatic indentation gives it more indent than what you expected, there +is probably a } missing. Use the "%" command to find out which { matches the +} you typed. + A missing ) and ; also cause extra indent. Thus if you get more white +space than you would expect, check the preceding lines. + +When you have code that is badly formatted, or you inserted and deleted lines, +you need to re-indent the lines. The "=" operator does this. The simplest +form is: > + + == + +This indents the current line. Like with all operators, there are three ways +to use it. In Visual mode "=" indents the selected lines. A useful text +object is "a{". This selects the current {} block. Thus, to re-indent the +code code block the cursor is in: > + + =a{ + +I you have really badly indented code, you can re-indent the whole file with: +> + gg=G + +However, don't do this in files that have been carefully indented manually. +The automatic indenting does a good job, but in some situations you might want +to overrule it. + + +SETTING INDENT STYLE + +Different people have different styles of indentation. By default Vim does a +pretty good job of indenting in a way that 90% of programmers do. There are +different styles, however; so if you want to, you can customize the +indentation style with the 'cinoptions' option. + By default 'cinoptions' is empty and Vim uses the default style. You can +add various items where you want something different. For example, to make +curly braces be placed like this: + + if (flag) ~ + { ~ + i = 8; ~ + j = 0; ~ + } ~ + +Use this command: > + + :set cinoptions+={2 + +There are many of these items. See |cinoptions-values|. + +============================================================================== +*30.3* Automatic indenting + +You don't want to switch on the 'cindent' option manually every time you edit +a C file. This is how you make it work automatically: > + + :filetype indent on + +Actually, this does a lot more than switching on 'cindent' for C files. First +of all, it enables detecting the type of a file. That's the same as what is +used for syntax highlighting. + When the filetype is known, Vim will search for an indent file for this +type of file. The Vim distribution includes a number of these for various +programming languages. This indent file will then prepare for automatic +indenting specifically for this file. + +If you don't like the automatic indenting, you can switch it off again: > + + :filetype indent off + +If you don't like the indenting for one specific type of file, this is how you +avoid it. Create a file with just this one line: > + + :let b:did_indent = 1 + +Now you need to write this in a file with a specific name: + + {directory}/indent/{filetype}.vim + +The {filetype} is the name of the file type, such as "cpp" or "java". You can +see the exact name that Vim detected with this command: > + + :set filetype + +In this file the output is: + + filetype=help ~ + +This you would use "help" for {filetype}. + For the {directory} part you need to use your runtime directory. Look at +the output of this command: > + + set runtimepath + +Now use the first item, the name before the first comma. Thus if the output +looks like this: + + runtimepath=~/.vim,/usr/local/share/vim/vim60/runtime,~/.vim/after ~ + +You use "~/.vim" for {directory}. Then the resulting file name is: + + ~/.vim/indent/help.vim ~ + +Instead of switching the indenting off, you could write your own indent file. +How to do that is explained here: |indent-expression|. + +============================================================================== +*30.4* Other indenting + +The most simple form of automatic indenting is with the 'autoindent' option. +It uses the indent from the previous line. A bit smarter is the 'smartindent' +option. This is useful for languages where no indent file is available. +'smartindent'is not as smart as 'cindent', but smarter than 'autoindent'. + With 'smartindent' set, an extra level of indentation is added for each { +and removed for each }. An extra level of indentation will also be added for +any of the words in the 'cinwords' option. Lines that begin with # are +treated specially: all indentation is removed. This is done so that +preprocessor directives will all start in column 1. The indentation is +restored for the next line. + + +CORRECTING INDENTS + +When you are using 'autoindent' or 'smartindent' to get the indent of the +previous line, there will be many times when you need to add or remove one +'shiftwidth' worth of indent. A quick way to do this is using the CTRL-D and +CTRL-T commands in Insert mode. + For example, you are typing a shell script that is supposed to look like +this: + + if test -n a; then ~ + echo a ~ + echo "-------" ~ + fi ~ + +Start off by setting these option: > + + :set autoindent shiftwidth=3 + +You start by typing the first line, <Enter> and the start of the second line: + + if test -n a; then ~ + echo ~ + +Now you see that you need an extra indent. Type CTRL-T. The result: + + if test -n a; then ~ + echo ~ + +The CTRL-T command, in Insert mode, adds one 'shiftwidth' to the indent, no +matter where in the line you are. + You continue typing the second line, <Enter> and the third line. This time +the indent is OK. Then <Enter> and the last line. Now you have this: + + if test -n a; then ~ + echo a ~ + echo "-------" ~ + fi ~ + +To remove the superfluous indent in the last line press CTRL-D. This deletes +one 'shiftwidth' worth of indent, no matter where you are in the line. + When you are in Normal mode, you can use the ">>" and "<<" commands to +shift lines. ">" and "<" are operators, thus you have the usual three ways to +specify the lines you want to indent. A useful combination is: > + + >i{ + +This adds one indent to the current block of lines, inside {}. The { and } +lines themselves are left unmodified. ">a{" includes them. In this example +the cursor is on "printf": + + original text after ">i{" after ">a{" + + if (flag) if (flag) if (flag) ~ + { { { ~ + printf("yes"); printf("yes"); printf("yes"); ~ + flag = 0; flag = 0; flag = 0; ~ + } } } ~ + +============================================================================== +*30.5* Tabs and spaces + +'tabstop' is set to eight by default. Although you can change it, you quickly +run into trouble later. Other programs won't know what tabstop value you +used. They probably use the default value of eight, and your text suddenly +looks very different. Also, most printers use a fixed tabstop value of eight. +Thus it's best to keep 'tabstop' alone. (If you edit a file which was written +with a different tabstop setting, see |25.3| for how to fix that.) + For indenting lines in a program, using a multiple of eight spaces makes +you quickly run into the right border of the window. Using a single space +doesn't provide enough visual difference. Many people prefer to use four +spaces, a good compromise. + Since a <Tab> is eight spaces and you want to use an indent of four spaces, +you can't use a <Tab> character to make your indent. There are two ways to +handle this: + +1. Use a mix of <Tab> and space characters. Since a <Tab> takes the place of + eight spaces, you have fewer characters in your file. Inserting a <Tab> + is quicker than eight spaces. Backspacing works faster as well. + +2. Use spaces only. This avoids the trouble with programs that use a + different tabstop value. + +Fortunately, Vim supports both methods quite well. + + +SPACES AND TABS + +If you are using a combination of tabs and spaces, you just edit normally. +The Vim defaults do a fine job of handling things. + You can make life a little easier by setting the 'softtabstop' option. +This option tells Vim to make the <Tab> key look and feel as if tabs were set +at the value of 'softtabstop', but actually use a combination of tabs and +spaces. + After you execute the following command, every time you press the <Tab> key +the cursor moves to the next 4-column boundary: > + + :set softtabstop=4 + +When you start in the first column and press <Tab>, you get 4 spaces inserted +in your text. The second time, Vim takes out the 4 spaces and puts in a <Tab> +(thus taking you to column 8). Thus Vim uses as many <Tab>s as possible, and +then fills up with spaces. + When backspacing it works the other way around. A <BS> will always delete +the amount specified with 'softtabstop'. Then <Tabs> are used as many as +possible and spaces to fill the gap. + The following shows what happens pressing <Tab> a few times, and then using +<BS>. A "." stands for a space and "------->" for a <Tab>. + + type result ~ + <Tab> .... + <Tab><Tab> -------> + <Tab><Tab><Tab> ------->.... + <Tab><Tab><Tab><BS> -------> + <Tab><Tab><Tab><BS><BS> .... + +An alternative is to use the 'smarttab' option. When it's set, Vim uses +'shiftwidth' for a <Tab> typed in the indent of a line, and a real <Tab> when +typed after the first non-blank character. However, <BS> doesn't work like +with 'softtabstop'. + + +JUST SPACES + +If you want absolutely no tabs in your file, you can set the 'expandtab' +option: > + + :set expandtab + +When this option is set, the <Tab> key inserts a series of spaces. Thus you +get the same amount of white space as if a <Tab> character was inserted, but +there isn't a real <Tab> character in your file. + The backspace key will delete each space by itself. Thus after typing one +<Tab> you have to press the <BS> key up to eight times to undo it. If you are +in the indent, pressing CTRL-D will be a lot quicker. + + +CHANGING TABS IN SPACES (AND BACK) + +Setting 'expandtab' does not affect any existing tabs. In other words, any +tabs in the document remain tabs. If you want to convert tabs to spaces, use +the ":retab" command. Use these commands: > + + :set expandtab + :%retab + +Now Vim will have changed all indents to use spaces instead of tabs. However, +all tabs that come after a non-blank character are kept. If you want these to +be converted as well, add a !: > + + :%retab! + +This is a little bit dangerous, because it can also change tabs inside a +string. To check if these exist, you could use this: > + + /"[^"\t]*\t[^"]*" + +It's recommended not to use hard tabs inside a string. Replace them with +"\t" to avoid trouble. + +The other way around works just as well: > + + :set noexpandtab + :%retab! + +============================================================================== +*30.6* Formatting comments + +One of the great things about Vim is that it understands comments. You can +ask Vim to format a comment and it will do the right thing. + Suppose, for example, that you have the following comment: + + /* ~ + * This is a test ~ + * of the text formatting. ~ + */ ~ + +You then ask Vim to format it by positioning the cursor at the start of the +comment and type: > + + gq]/ + +"gq" is the operator to format text. "]/" is the motion that takes you to the +end of a comment. The result is: + + /* ~ + * This is a test of the text formatting. ~ + */ ~ + +Notice that Vim properly handled the beginning of each line. + An alternative is to select the text that is to be formatted in Visual mode +and type "gq". + +To add a new line to the comment, position the cursor on the middle line and +press "o". The result looks like this: + + /* ~ + * This is a test of the text formatting. ~ + * ~ + */ ~ + +Vim has automatically inserted a star and a space for you. Now you can type +the comment text. When it gets longer than 'textwidth', Vim will break the +line. Again, the star is inserted automatically: + + /* ~ + * This is a test of the text formatting. ~ + * Typing a lot of text here will make Vim ~ + * break ~ + */ ~ + +For this to work some flags must be present in 'formatoptions': + + r insert the star when typing <Enter> in Insert mode + o insert the star when using "o" or "O" in Normal mode + c break comment text according to 'textwidth' + +See |fo-table| for more flags. + + +DEFINING A COMMENT + +The 'comments' option defines what a comment looks like. Vim distinguishes +between a single-line comment and a comment that has a different start, end +and middle part. + Many single-line comments start with a specific character. In C++ // is +used, in Makefiles #, in Vim scripts ". For example, to make Vim understand +C++ comments: > + + :set comments=:// + +The colon separates the flags of an item from the text by which the comment is +recognized. The general form of an item in 'comments' is: + + {flags}:{text} + +The {flags} part can be empty, as in this case. + Several of these items can be concatenated, separated by commas. This +allows recognizing different types of comments at the same time. For example, +let's edit an e-mail message. When replying, the text that others wrote is +preceded with ">" and "!" characters. This command would work: > + + :set comments=n:>,n:! + +There are two items, one for comments starting with ">" and one for comments +that start with "!". Both use the flag "n". This means that these comments +nest. Thus a line starting with ">" may have another comment after the ">". +This allows formatting a message like this: + + > ! Did you see that site? ~ + > ! It looks really great. ~ + > I don't like it. The ~ + > colors are terrible. ~ + What is the URL of that ~ + site? ~ + +Try setting 'textwidth' to a different value, e.g., 80, and format the text by +Visually selecting it and typing "gq". The result is: + + > ! Did you see that site? It looks really great. ~ + > I don't like it. The colors are terrible. ~ + What is the URL of that site? ~ + +You will notice that Vim did not move text from one type of comment to +another. The "I" in the second line would have fit at the end of the first +line, but since that line starts with "> !" and the second line with ">", Vim +knows that this is a different kind of comment. + + +A THREE PART COMMENT + +A C comment starts with "/*", has "*" in the middle and "*/" at the end. The +entry in 'comments' for this looks like this: > + + :set comments=s1:/*,mb:*,ex:*/ + +The start is defined with "s1:/*". The "s" indicates the start of a +three-piece comment. The colon separates the flags from the text by which the +comment is recognized: "/*". There is one flag: "1". This tells Vim that the +middle part has an offset of one space. + The middle part "mb:*" starts with "m", which indicates it is a middle +part. The "b" flag means that a blank must follow the text. Otherwise Vim +would consider text like "*pointer" also to be the middle of a comment. + The end part "ex:*/" has the "e" for identification. The "x" flag has a +special meaning. It means that after Vim automatically inserted a star, +typing / will remove the extra space. + +For more details see |format-comments|. + +============================================================================== + +Next chapter: |usr_31.txt| Exploiting the GUI + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_31.txt b/en/usr_31.txt new file mode 100644 index 000000000..7ef5c290f --- /dev/null +++ b/en/usr_31.txt @@ -0,0 +1,267 @@ +*usr_31.txt* For Vim version 6.3. Last change: 2003 Oct 21 + + VIM USER MANUAL - by Bram Moolenaar + + Exploiting the GUI + + +Vim works well in a terminal, but the GUI has a few extra items. A file +browser can be used for commands that use a file. A dialog to make a choice +between alternatives. Use keyboard shortcuts to access menu items quickly. + +|31.1| The file browser +|31.2| Confirmation +|31.3| Menu shortcuts +|31.4| Vim window position and size +|31.5| Various + + Next chapter: |usr_40.txt| Make new commands + Previous chapter: |usr_30.txt| Editing programs +Table of contents: |usr_toc.txt| + +============================================================================== +*31.1* The file browser + +When using the File/Open... menu you get a file browser. This makes it easier +to find the file you want to edit. But what if you want to split a window to +edit another file? There is no menu entry for this. You could first use +Window/Split and then File/Open..., but that's more work. + Since you are typing most commands in Vim, opening the file browser with a +typed command is possible as well. To make the split command use the file +browser, prepend "browse": > + + :browse split + +Select a file and then the ":split" command will be executed with it. If you +cancel the file dialog nothing happens, the window isn't split. + You can also specify a file name argument. This is used to tell the file +browser where to start. Example: > + + :browse split /etc + +The file browser will pop up, starting in the directory "/etc". + +The ":browse" command can be prepended to just about any command that opens a +file. + If no directory is specified, Vim will decide where to start the file +browser. By default it uses the same directory as the last time. Thus when +you used ":browse split" and selected a file in "/usr/local/share", the next +time you use a ":browse" it will start in "/usr/local/share" again. + This can be changed with the 'browsedir' option. It can have one of three +values: + + last Use the last directory browsed (default) + buffer Use the same directory as the current buffer + current use the current directory + +For example, when you are in the directory "/usr", editing the file +"/usr/local/share/readme", then the command: > + + :set browsedir=buffer + :browse edit + +Will start the browser in "/usr/local/share". Alternatively: > + + :set browsedir=current + :browse edit + +Will start the browser in "/usr". + + Note: + To avoid using the mouse, most file browsers offer using key presses + to navigate. Since this is different for every system, it is not + explained here. Vim uses a standard browser when possible, your + system documentation should contain an explanation on the keyboard + shortcuts somewhere. + +When you are not using the GUI version, you could use the file explorer window +to select files like in a file browser. However, this doesn't work for the +":browse" command. See |file-explorer|. + +============================================================================== +*31.2* Confirmation + +Vim protects you from accidentally overwriting a file and other ways to lose +changes. If you do something that might be a bad thing to do, Vim produces an +error message and suggests appending ! if you really want to do it. + To avoid retyping the command with the !, you can make Vim give you a +dialog. You can then press "OK" or "Cancel" to tell Vim what you want. + For example, you are editing a file and made changes to it. You start +editing another file with: > + + :confirm edit foo.txt + +Vim will pop up a dialog that looks something like this: + + +-----------------------------------+ + | | + | ? Save changes to "bar.txt"? | + | | + | YES NO CANCEL | + +-----------------------------------+ + +Now make your choice. If you do want to save the changes, select "YES". If +you want to lose the changes for ever: "NO". If you forgot what you were +doing and want to check what really changed use "CANCEL". You will be back in +the same file, with the changes still there. + +Just like ":browse", the ":confirm" command can be prepended to most commands +that edit another file. They can also be combined: > + + :confirm browse edit + +This will produce a dialog when the current buffer was changed. Then it will +pop up a file browser to select the file to edit. + + Note: + In the dialog you can use the keyboard to select the choice. + Typically the <Tab> key and the cursor keys change the choice. + Pressing <Enter> selects the choice. This depends on the system + though. + +When you are not using the GUI, the ":confirm" command works as well. Instead +of popping up a dialog, Vim will print the message at the bottom of the Vim +window and ask you to press a key to make a choice. > + + :confirm edit main.c +< Save changes to "Untitled"? ~ + [Y]es, (N)o, (C)ancel: ~ + +You can now press the single key for the choice. You don't have to press +<Enter>, unlike other typing on the command line. + +============================================================================== +*31.3* Menu shortcuts + +The keyboard is used for all Vim commands. The menus provide a simple way to +select commands, without knowing what they are called. But you have to move +your hand from the keyboard and grab the mouse. + Menus can often be selected with keys as well. This depends on your +system, but most often it works this way. Use the <Alt> key in combination +with the underlined letter of a menu. For example, <A-w> (<Alt> and w) pops +up the Window menu. + In the Window menu, the "split" item has the p underlined. To select it, +let go of the <Alt> key and press p. + +After the first selection of a menu with the <Alt> key, you can use the cursor +keys to move through the menus. <Right> selects a submenu and <left> closes +it. <Esc> also closes a menu. <Enter> selects a menu item. + +There is a conflict between using the <Alt> key to select menu items, and +using <Alt> key combinations for mappings. The 'winaltkeys' option tells Vim +what it should do with the <Alt> key. + The default value "menu" is the smart choice: If the key combination is a +menu shortcut it can't be mapped. All other keys are available for mapping. + The value "no" doesn't use any <Alt> keys for the menus. Thus you must use +the mouse for the menus, and all <Alt> keys can be mapped. + The value "yes" means that Vim will use any <Alt> keys for the menus. Some +<Alt> key combinations may also do other things than selecting a menu. + +============================================================================== +*31.4* Vim window position and size + +To see the current Vim window position on the screen use: > + + :winpos + +This will only work in the GUI. The output may look like this: + + Window position: X 272, Y 103 ~ + +The position is given in screen pixels. Now you can use the numbers to move +Vim somewhere else. For example, to move it to the left a hundred pixels: > + + :winpos 172 103 +< + Note: + There may be a small offset between the reported position and where + the window moves. This is because of the border around the window. + This is added by the window manager. + +You can use this command in your startup script to position the window at a +specific position. + +The size of the Vim window is computed in characters. Thus this depends on +the size of the font being used. You can see the current size with this +command: > + + :set lines columns + +To change the size set the 'lines' and/or 'columns' options to a new value: > + + :set lines=50 + :set columns=80 + +Obtaining the size works in a terminal just like in the GUI. Setting the size +is not possible in most terminals. + +You can start the X-Windows version of gvim with an argument to specify the +size and position of the window: > + + gvim -geometry {width}x{height}+{x_offset}+{y_offset} + +{width} and {height} are in characters, {x_offset} and {y_offset} are in +pixels. Example: > + + gvim -geometry 80x25+100+300 + +============================================================================== +*31.5* Various + +You can use gvim to edit an e-mail message. In your e-mail program you must +select gvim to be the editor for messages. When you try that, you will +see that it doesn't work: The mail program thinks that editing is finished, +while gvim is still running! + What happens is that gvim disconnects from the shell it was started in. +That is fine when you start gvim in a terminal, so that you can do other work +in that terminal. But when you really want to wait for gvim to finish, you +must prevent it from disconnecting. The "-f" argument does this: > + + gvim -f file.txt + +The "-f" stands for foreground. Now Vim will block the shell it was started +in until you finish editing and exit. + + +DELAYED START OF THE GUI + +On Unix it's possible to first start Vim in a terminal. That's useful if you +do various tasks in the same shell. If you are editing a file and decide you +want to use the GUI after all, you can start it with: > + + :gui + +Vim will open the GUI window and no longer use the terminal. You can continue +using the terminal for something else. The "-f" argument is used here to run +the GUI in the foreground. You can also use ":gui -f". + + +THE GVIM STARTUP FILE + +When gvim starts, it reads the gvimrc file. That's similar to the vimrc file +used when starting Vim. The gvimrc file can be used for settings and commands +that are only to be used when the GUI is going to be started. For example, +you can set the 'lines' option to set a different window size: > + + :set lines=55 + +You don't want to do this in a terminal, since it's size is fixed (except for +an xterm that supports resizing). + The gvimrc file is searched for in the same locations as the vimrc file. +Normally it's name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows. + If for some reason you don't want to use the normal gvimrc file, you can +specify another one with the "-U" argument: > + + gvim -U thisrc ... + +That allows starting gvim for different kinds of editing. You could set +another font size, for example. + To completely skip reading a gvimrc file: > + + gvim -U NONE ... + +============================================================================== + +Next chapter: |usr_40.txt| Make new commands + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_40.txt b/en/usr_40.txt new file mode 100644 index 000000000..f9a38934a --- /dev/null +++ b/en/usr_40.txt @@ -0,0 +1,655 @@ +*usr_40.txt* For Vim version 6.3. Last change: 2004 Feb 13 + + VIM USER MANUAL - by Bram Moolenaar + + Make new commands + + +Vim is an extensible editor. You can take a sequence of commands you use +often and turn it into a new command. Or redefine an existing command. +Autocommands make it possible to execute commands automatically. + +|40.1| Key mapping +|40.2| Defining command-line commands +|40.3| Autocommands + + Next chapter: |usr_41.txt| Write a Vim script + Previous chapter: |usr_31.txt| Exploiting the GUI +Table of contents: |usr_toc.txt| + +============================================================================== +*40.1* Key mapping + +A simple mapping was explained in section |05.3|. The principle is that one +sequence of key strokes is translated into another sequence of key strokes. +This is a simple, yet powerful mechanism. + The simplest form is that one key is mapped to a sequence of keys. Since +the function keys, except <F1>, have no predefined meaning in Vim, these are a +good choice to map. Example: > + + :map <F2> GoDate: <Esc>:read !date<CR>kJ + +This shows how three modes are used. After going to the last line with "G", +the "o" command opens a new line and starts Insert mode. The text "Date: " is +inserted and <Esc> takes you out of insert mode. + Notice the use of special keys inside <>. This is called angle bracket +notation. You type these as separate characters, not by pressing the key +itself. This makes the mappings better readable and you can copy and paste +the text without problems. + The ":" character takes Vim to the command line. The ":read !date" command +reads the output from the "date" command and appends it below the current +line. The <CR> is required to execute the ":read" command. + At this point of execution the text looks like this: + + Date: ~ + Fri Jun 15 12:54:34 CEST 2001 ~ + +Now "kJ" moves the cursor up and joins the lines together. + To decide which key or keys you use for mapping, see |map-which-keys|. + + +MAPPING AND MODES + +The ":map" command defines remapping for keys in Normal mode. You can also +define mappings for other modes. For example, ":imap" applies to Insert mode. +You can use it to insert a date below the cursor: > + + :imap <F2> <CR>Date: <Esc>:read !date<CR>kJ + +It looks a lot like the mapping for <F2> in Normal mode, only the start is +different. The <F2> mapping for Normal mode is still there. Thus you can map +the same key differently for each mode. + Notice that, although this mapping starts in Insert mode, it ends in Normal +mode. If you want it to continue in Insert mode, append a "a" to the mapping. + +Here is an overview of map commands and in which mode they work: + + :map Normal, Visual and Operator-pending + :vmap Visual + :nmap Normal + :omap Operator-pending + :map! Insert and Command-line + :imap Insert + :cmap Command-line + +Operator-pending mode is when you typed an operator character, such as "d" or +"y", and you are expected to type the motion command or a text object. Thus +when you type "dw", the "w" is entered in operator-pending mode. + +Suppose that you want to define <F7> so that the command d<F7> deletes a C +program block (text enclosed in curly braces, {}). Similarly y<F7> would yank +the program block into the unnamed register. Therefore, what you need to do +is to define <F7> to select the current program block. You can do this with +the following command: > + + :omap <F7> a{ + +This causes <F7> to perform a select block "a{" in operator-pending mode, just +like you typed it. This mapping is useful if typing a { on your keyboard is a +bit difficult. + + +LISTING MAPPINGS + +To see the currently defined mappings, use ":map" without arguments. Or one +of the variants that include the mode in which they work. The output could +look like this: + + _g :call MyGrep(1)<CR> ~ + v <F2> :s/^/> /<CR>:noh<CR>`` ~ + n <F2> :.,$s/^/> /<CR>:noh<CR>`` ~ + <xHome> <Home> + <xEnd> <End> + + +The first column of the list shows in which mode the mapping is effective. +This is "n" for Normal mode, "i" for Insert mode, etc. A blank is used for a +mapping defined with ":map", thus effective in both Normal and Visual mode. + One useful purpose of listing the mapping is to check if special keys in <> +form have been recognized (this only works when color is supported). For +example, when <Esc> is displayed in color, it stands for the escape character. +When it has the same color as the other text, it is five characters. + + +REMAPPING + +The result of a mapping is inspected for other mappings in it. For example, +the mappings for <F2> above could be shortened to: > + + :map <F2> G<F3> + :imap <F2> <Esc><F3> + :map <F3> oDate: <Esc>:read !date<CR>kJ + +For Normal mode <F2> is mapped to go to the last line, and then behave like +<F3> was pressed. In Insert mode <F2> stops Insert mode with <Esc> and then +also uses <F3>. Then <F3> is mapped to do the actual work. + +Suppose you hardly ever use Ex mode, and want to use the "Q" command to format +text (this was so in old versions of Vim). This mapping will do it: > + + :map Q gq + +But, in rare cases you need to use Ex mode anyway. Let's map "gQ" to Q, so +that you can still go to Ex mode: > + + :map gQ Q + +What happens now is that when you type "gQ" it is mapped to "Q". So far so +good. But then "Q" is mapped to "gq", thus typing "gQ" results in "gq", and +you don't get to Ex mode at all. + To avoid keys to be mapped again, use the ":noremap" command: > + + :noremap gQ Q + +Now Vim knows that the "Q" is not to be inspected for mappings that apply to +it. There is a similar command for every mode: + + :noremap Normal, Visual and Operator-pending + :vnoremap Visual + :nnoremap Normal + :onoremap Operator-pending + :noremap! Insert and Command-line + :inoremap Insert + :cnoremap Command-line + + +RECURSIVE MAPPING + +When a mapping triggers itself, it will run forever. This can be used to +repeat an action an unlimited number of times. + For example, you have a list of files that contain a version number in the +first line. You edit these files with "vim *.txt". You are now editing the +first file. Define this mapping: > + + :map ,, :s/5.1/5.2/<CR>:wnext<CR>,, + +Now you type ",,". This triggers the mapping. It replaces "5.1" with "5.2" +in the first line. Then it does a ":wnext" to write the file and edit the +next one. The mapping ends in ",,". This triggers the same mapping again, +thus doing the substitution, etc. + This continues until there is an error. In this case it could be a file +where the substitute command doesn't find a match for "5.1". You can then +make a change to insert "5.1" and continue by typing ",," again. Or the +":wnext" fails, because you are in the last file in the list. + When a mapping runs into an error halfway, the rest of the mapping is +discarded. CTRL-C interrupts the mapping (CTRL-Break on MS-Windows). + + +DELETE A MAPPING + +To remove a mapping use the ":unmap" command. Again, the mode the unmapping +applies to depends on the command used: + + :unmap Normal, Visual and Operator-pending + :vunmap Visual + :nunmap Normal + :ounmap Operator-pending + :unmap! Insert and Command-line + :iunmap Insert + :cunmap Command-line + +There is a trick to define a mapping that works in Normal and Operator-pending +mode, but not in Visual mode. First define it for all three modes, then +delete it for Visual mode: > + + :map <C-A> /---><CR> + :vunmap <C-A> + +Notice that the five characters "<C-A>" stand for the single key CTRL-A. + +To remove all mappings use the |:mapclear| command. You can guess the +variations for different modes by now. Be careful with this command, it can't +be undone. + + +SPECIAL CHARACTERS + +The ":map" command can be followed by another command. A | character +separates the two commands. This also means that a | character can't be used +inside a map command. To include one, use <Bar> (five characters). Example: +> + :map <F8> :write <Bar> !checkin %<CR> + +The same problem applies to the ":unmap" command, with the addition that you +have to watch out for trailing white space. These two commands are different: +> + :unmap a | unmap b + :unmap a| unmap b + +The first command tries to unmap "a ", with a trailing space. + +When using a space inside a mapping, use <Space> (seven characters): > + + :map <Space> W + +This makes the spacebar move a blank-separated word forward. + +It is not possible to put a comment directly after a mapping, because the " +character is considered to be part of the mapping. You can use |", this +starts a new, empty command with a comment. Example: > + + :map <Space> W| " Use spacebar to move forward a word + + +MAPPINGS AND ABBREVIATIONS + +Abbreviations are a lot like Insert mode mappings. The arguments are handled +in the same way. The main difference is the way they are triggered. An +abbreviation is triggered by typing a non-word character after the word. A +mapping is triggered when typing the last character. + Another difference is that the characters you type for an abbreviation are +inserted in the text while you type them. When the abbreviation is triggered +these characters are deleted and replaced by what the abbreviation produces. +When typing the characters for a mapping, nothing is inserted until you type +the last character that triggers it. If the 'showcmd' option is set, the +typed characters are displayed in the last line of the Vim window. + An exception is when a mapping is ambiguous. Suppose you have done two +mappings: > + + :imap aa foo + :imap aaa bar + +Now, when you type "aa", Vim doesn't know if it should apply the first or the +second mapping. It waits for another character to be typed. If it is an "a", +the second mapping is applied and results in "bar". If it is a space, for +example, the first mapping is applied, resulting in "foo", and then the space +is inserted. + + +ADDITIONALLY... + +The <script> keyword can be used to make a mapping local to a script. See +|:map-<script>|. + +The <buffer> keyword can be used to make a mapping local to a specific buffer. +See |:map-<buffer>| + +The <unique> keyword can be used to make defining a new mapping fail when it +already exists. Otherwise a new mapping simply overwrites the old one. See +|:map-<unique>|. + +To make a key do nothing, map it to <Nop> (five characters). This will make +the <F7> key do nothing at all: > + + :map <F7> <Nop>| map! <F7> <Nop> + +There must be no space after <Nop>. + +============================================================================== +*40.2* Defining command-line commands + +The Vim editor enables you to define your own commands. You execute these +commands just like any other Command-line mode command. + To define a command, use the ":command" command, as follows: > + + :command DeleteFirst 1delete + +Now when you execute the command ":DeleteFirst" Vim executes ":1delete", which +deletes the first line. + + Note: + User-defined commands must start with a capital letter. You cannot + use ":X", ":Next" and ":Print". The underscore cannot be used! You + can use digits, but this is discouraged. + +To list the user-defined commands, execute the following command: > + + :command + +Just like with the builtin commands, the user defined commands can be +abbreviated. You need to type just enough to distinguish the command from +another. Command line completion can be used to get the full name. + + +NUMBER OF ARGUMENTS + +User-defined commands can take a series of arguments. The number of arguments +must be specified by the -nargs option. For instance, the example +:DeleteFirst command takes no arguments, so you could have defined it as +follows: > + + :command -nargs=0 DeleteFirst 1delete + +However, because zero arguments is the default, you do not need to add +"-nargs=0". The other values of -nargs are as follows: + + -nargs=0 No arguments + -nargs=1 One argument + -nargs=* Any number of arguments + -nargs=? Zero or one argument + -nargs=+ One or more arguments + + +USING THE ARGUMENTS + +Inside the command definition, the arguments are represented by the +<args> keyword. For example: > + + :command -nargs=+ Say :echo "<args>" + +Now when you type > + + :Say Hello World + +Vim echoes "Hello World". However, if you add a double quote, it won't work. +For example: > + + :Say he said "hello" + +To get special characters turned into a string, properly escaped to use as an +expression, use "<q-args>": > + + :command -nargs=+ Say :echo <q-args> + +Now the above ":Say" command will result in this to be executed: > + + :echo "he said \"hello\"" + +The <f-args> keyword contains the same information as the <args> keyword, +except in a format suitable for use as function call arguments. For example: +> + :command -nargs=* DoIt :call AFunction(<f-args>) + :DoIt a b c + +Executes the following command: > + + :call AFunction("a", "b", "c") + + +LINE RANGE + +Some commands take a range as their argument. To tell Vim that you are +defining such a command, you need to specify a -range option. The values for +this option are as follows: + + -range Range is allowed; default is the current line. + -range=% Range is allowed; default is the whole file. + -range={count} Range is allowed; the last number in it is used as a + single number whose default is {count}. + +When a range is specified, the keywords <line1> and <line2> get the values of +the first and last line in the range. For example, the following command +defines the SaveIt command, which writes out the specified range to the file +"save_file": > + + :command -range=% SaveIt :<line1>,<line2>write! save_file + + +OTHER OPTIONS + +Some of the other options and keywords are as follows: + + -count={number} The command can take a count whose default is + {number}. The resulting count can be used + through the <count> keyword. + -bang You can use a !. If present, using <bang> will + result in a !. + -register You can specify a register. (The default is + the unnamed register.) + The register specification is available as + <reg> (a.k.a. <register>). + -complete={type} Type of command-line completion used. See + |:command-completion| for the list of possible + values. + -bar The command can be followed by | and another + command, or " and a comment. + -buffer The command is only available for the current + buffer. + +Finally, you have the <lt> keyword. It stands for the character <. Use this +to escape the special meaning of the <> items mentioned. + + +REDEFINING AND DELETING + +To redefine the same command use the ! argument: > + + :command -nargs=+ Say :echo "<args>" + :command! -nargs=+ Say :echo <q-args> + +To delete a user command use ":delcommand". It takes a single argument, which +is the name of the command. Example: > + + :delcommand SaveIt + +To delete all the user commands: > + + :comclear + +Careful, this can't be undone! + +More details about all this in the reference manual: |user-commands|. + +============================================================================== +*40.3* Autocommands + +An autocommand is a command that is executed automatically in response to some +event, such as a file being read or written or a buffer change. Through the +use of autocommands you can train Vim to edit compressed files, for example. +That is used in the |gzip| plugin. + Autocommands are very powerful. Use them with care and they will help you +avoid typing many commands. Use them carelessly and they will cause a lot of +trouble. + +Suppose you want to replace a date stamp on the end of a file every time it is +written. First you define a function: > + + :function DateInsert() + : $delete + : read !date + :endfunction + +You want this function to be called each time, just before a file is written. +This will make that happen: > + + :autocmd FileWritePre * call DateInsert() + +"FileWritePre" is the event for which this autocommand is triggered: Just +before (pre) writing a file. The "*" is a pattern to match with the file +name. In this case it matches all files. + With this command enabled, when you do a ":write", Vim checks for any +matching FileWritePre autocommands and executes them, and then it +performs the ":write". + The general form of the :autocmd command is as follows: > + + :autocmd [group] {events} {file_pattern} [nested] {command} + +The [group] name is optional. It is used in managing and calling the commands +(more on this later). The {events} parameter is a list of events (comma +separated) that trigger the command. + {file_pattern} is a filename, usually with wildcards. For example, using +"*.txt" makes the autocommand be used for all files whose name end in ".txt". +The optional [nested] flag allows for nesting of autocommands (see below), and +finally, {command} is the command to be executed. + + +EVENTS + +One of the most useful events is BufReadPost. It is triggered after a new +file is being edited. It is commonly used to set option values. For example, +you know that "*.gsm" files are GNU assembly language. To get the syntax file +right, define this autocommand: > + + :autocmd BufReadPost *.gsm set filetype=asm + +If Vim is able to detect the type of file, it will set the 'filetype' option +for you. This triggers the Filetype event. Use this to do something when a +certain type of file is edited. For example, to load a list of abbreviations +for text files: > + + :autocmd Filetype text source ~/.vim/abbrevs.vim + +When starting to edit a new file, you could make Vim insert a skeleton: > + + :autocmd BufNewFile *.[ch] 0read ~/skeletons/skel.c + +See |autocmd-events| for a complete list of events. + + +PATTERNS + +The {file_pattern} argument can actually be a comma-separated list of file +patterns. For example: "*.c,*.h" matches files ending in ".c" and ".h". + The usual file wildcards can be used. Here is a summary of the most often +used ones: + + * Match any character any number of times + ? Match any character once + [abc] Match the character a, b or c + . Matches a dot + a{b,c} Matches "ab" and "ac" + +When the pattern includes a slash (/) Vim will compare directory names. +Without the slash only the last part of a file name is used. For example, +"*.txt" matches "/home/biep/readme.txt". The pattern "/home/biep/*" would +also match it. But "home/foo/*.txt" wouldn't. + When including a slash, Vim matches the pattern against both the full path +of the file ("/home/biep/readme.txt") and the relative path (e.g., +"biep/readme.txt"). + + Note: + When working on a system that uses a backslash as file separator, such + as MS-Windows, you still use forward slashes in autocommands. This + makes it easier to write the pattern, since a backslash has a special + meaning. It also makes the autocommands portable. + + +DELETING + +To delete an autocommand, use the same command as what it was defined with, +but leave out the {command} at the end and use a !. Example: > + + :autocmd! FileWritePre * + +This will delete all autocommands for the "FileWritePre" event that use the +"*" pattern. + + +LISTING + +To list all the currently defined autocommands, use this: > + + :autocmd + +The list can be very long, especially when filetype detection is used. To +list only part of the commands, specify the group, event and/or pattern. For +example, to list all BufNewFile autocommands: > + + :autocmd BufNewFile + +To list all autocommands for the pattern "*.c": > + + :autocmd * *.c + +Using "*" for the event will list all the events. To list all autocommands +for the cprograms group: > + + :autocmd cprograms + + +GROUPS + +The {group} item, used when defining an autocommand, groups related autocommands +together. This can be used to delete all the autocommands in a certain group, +for example. + When defining several autocommands for a certain group, use the ":augroup" +command. For example, let's define autocommands for C programs: > + + :augroup cprograms + : autocmd BufReadPost *.c,*.h :set sw=4 sts=4 + : autocmd BufReadPost *.cpp :set sw=3 sts=3 + :augroup END + +This will do the same as: > + + :autocmd cprograms BufReadPost *.c,*.h :set sw=4 sts=4 + :autocmd cprograms BufReadPost *.cpp :set sw=3 sts=3 + +To delete all autocommands in the "cprograms" group: > + + :autocmd! cprograms + + +NESTING + +Generally, commands executed as the result of an autocommand event will not +trigger any new events. If you read a file in response to a FileChangedShell +event, it will not trigger the autocommands that would set the syntax, for +example. To make the events triggered, add the "nested" argument: > + + :autocmd FileChangedShell * nested edit + + +EXECUTING AUTOCOMMANDS + +It is possible to trigger an autocommand by pretending an event has occurred. +This is useful to have one autocommand trigger another one. Example: > + + :autocmd BufReadPost *.new execute "doautocmd BufReadPost " . expand("<afile>:r") + +This defines an autocommand that is triggered when a new file has been edited. +The file name must end in ".new". The ":execute" command uses expression +evaluation to form a new command and execute it. When editing the file +"tryout.c.new" the executed command will be: > + + :doautocmd BufReadPost tryout.c + +The expand() function takes the "<afile>" argument, which stands for the file +name the autocommand was executed for, and takes the root of the file name +with ":r". + +":doautocmd" executes on the current buffer. The ":doautoall" command works +like "doautocmd" except it executes on all the buffers. + + +USING NORMAL MODE COMMANDS + +The commands executed by an autocommand are Command-line command. If you want +to use a Normal mode command, the ":normal" command can be used. Example: > + + :autocmd BufReadPost *.log normal G + +This will make the cursor jump to the last line of *.log files when you start +to edit it. + Using the ":normal" command is a bit tricky. First of all, make sure its +argument is a complete command, including all the arguments. When you use "i" +to go to Insert mode, there must also be a <Esc> to leave Insert mode again. +If you use a "/" to start a search pattern, there must be a <CR> to execute +it. + The ":normal" command uses all the text after it as commands. Thus there +can be no | and another command following. To work around this, put the +":normal" command inside an ":execute" command. This also makes it possible +to pass unprintable characters in a convenient way. Example: > + + :autocmd BufReadPost *.chg execute "normal ONew entry:\<Esc>" | + \ 1read !date + +This also shows the use of a backslash to break a long command into more +lines. This can be used in Vim scripts (not at the command line). + +When you want the autocommand do something complicated, which involves jumping +around in the file and then returning to the original position, you may want +to restore the view on the file. See |restore-position| for an example. + + +IGNORING EVENTS + +At times, you will not want to trigger an autocommand. The 'eventignore' +option contains a list of events that will be totally ignored. For example, +the following causes events for entering and leaving a window to be ignored: > + + :set eventignore=WinEnter,WinLeave + +To ignore all events, use the following command: > + + :set eventignore=all + +To set it back to the normal behavior, make 'eventignore' empty: > + + :set eventignore= + +============================================================================== + +Next chapter: |usr_41.txt| Write a Vim script + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_41.txt b/en/usr_41.txt new file mode 100644 index 000000000..440c93b67 --- /dev/null +++ b/en/usr_41.txt @@ -0,0 +1,1724 @@ +*usr_41.txt* For Vim version 6.3. Last change: 2004 May 06 + + VIM USER MANUAL - by Bram Moolenaar + + Write a Vim script + + +The Vim script language is used for the startup vimrc file, syntax files, and +many other things. This chapter explains the items that can be used in a Vim +script. There are a lot of them, thus this is a long chapter. + +|41.1| Introduction +|41.2| Variables +|41.3| Expressions +|41.4| Conditionals +|41.5| Executing an expression +|41.6| Using functions +|41.7| Defining a function +|41.8| Exceptions +|41.9| Various remarks +|41.10| Writing a plugin +|41.11| Writing a filetype plugin +|41.12| Writing a compiler plugin + + Next chapter: |usr_42.txt| Add new menus + Previous chapter: |usr_40.txt| Make new commands +Table of contents: |usr_toc.txt| + +============================================================================== +*41.1* Introduction *vim-script-intro* + +Your first experience with Vim scripts is the vimrc file. Vim reads it when +it starts up and executes the commands. You can set options to values you +prefer. And you can use any colon command in it (commands that start with a +":"; these are sometimes referred to as Ex commands or command-line commands). + Syntax files are also Vim scripts. As are files that set options for a +specific file type. A complicated macro can be defined by a separate Vim +script file. You can think of other uses yourself. + +Let's start with a simple example: > + + :let i = 1 + :while i < 5 + : echo "count is" i + : let i = i + 1 + :endwhile +< + Note: + The ":" characters are not really needed here. You only need to use + them when you type a command. In a Vim script file they can be left + out. We will use them here anyway to make clear these are colon + commands and make them stand out from Normal mode commands. + +The ":let" command assigns a value to a variable. The generic form is: > + + :let {variable} = {expression} + +In this case the variable name is "i" and the expression is a simple value, +the number one. + The ":while" command starts a loop. The generic form is: > + + :while {condition} + : {statements} + :endwhile + +The statements until the matching ":endwhile" are executed for as long as the +condition is true. The condition used here is the expression "i < 5". This +is true when the variable i is smaller than five. + The ":echo" command prints its arguments. In this case the string "count +is" and the value of the variable i. Since i is one, this will print: + + count is 1 ~ + +Then there is another ":let i =" command. The value used is the expression "i ++ 1". This adds one to the variable i and assigns the new value to the same +variable. + The output of the example code is: + + count is 1 ~ + count is 2 ~ + count is 3 ~ + count is 4 ~ + + Note: + If you happen to write a while loop that keeps on running, you can + interrupt it by pressing CTRL-C (CTRL-Break on MS-Windows). + + +THREE KINDS OF NUMBERS + +Numbers can be decimal, hexadecimal or octal. A hexadecimal number starts +with "0x" or "0X". For example "0x1f" is 31. An octal number starts with a +zero. "017" is 15. Careful: don't put a zero before a decimal number, it +will be interpreted as an octal number! + The ":echo" command always prints decimal numbers. Example: > + + :echo 0x7f 036 +< 127 30 ~ + +A number is made negative with a minus sign. This also works for hexadecimal +and octal numbers. A minus sign is also for subtraction. Compare this with +the previous example: > + + :echo 0x7f -036 +< 97 ~ + +White space in an expression is ignored. However, it's recommended to use it +for separating items, to make the expression easier to read. For example, to +avoid the confusion with a negative number, put a space between the minus sign +and the following number: > + + :echo 0x7f - 036 + +============================================================================== +*41.2* Variables + +A variable name consists of ASCII letters, digits and the underscore. It +cannot start with a digit. Valid variable names are: + + counter + _aap3 + very_long_variable_name_with_underscores + FuncLength + LENGTH + +Invalid names are "foo+bar" and "6var". + These variables are global. To see a list of currently defined variables +use this command: > + + :let + +You can use global variables everywhere. This also means that when the +variable "count" is used in one script file, it might also be used in another +file. This leads to confusion at least, and real problems at worst. To avoid +this, you can use a variable local to a script file by prepending "s:". For +example, one script contains this code: > + + :let s:count = 1 + :while s:count < 5 + : source other.vim + : let s:count = s:count + 1 + :endwhile + +Since "s:count" is local to this script, you can be sure that sourcing the +"other.vim" script will not change this variable. If "other.vim" also uses an +"s:count" variable, it will be a different copy, local to that script. More +about script-local variables here: |script-variable|. + +There are more kinds of variables, see |internal-variables|. The most often +used ones are: + + b:name variable local to a buffer + w:name variable local to a window + g:name global variable (also in a function) + v:name variable predefined by Vim + + +DELETING VARIABLES + +Variables take up memory and show up in the output of the ":let" command. To +delete a variable use the ":unlet" command. Example: > + + :unlet s:count + +This deletes the script-local variable "s:count" to free up the memory it +uses. If you are not sure if the variable exists, and don't want an error +message when it doesn't, append !: > + + :unlet! s:count + +When a script finishes, the local variables used there will not be +automatically freed. The next time the script executes, it can still use the +old value. Example: > + + :if !exists("s:call_count") + : let s:call_count = 0 + :endif + :let s:call_count = s:call_count + 1 + :echo "called" s:call_count "times" + +The "exists()" function checks if a variable has already been defined. Its +argument is the name of the variable you want to check. Not the variable +itself! If you would do this: > + + :if !exists(s:call_count) + +Then the value of s:call_count will be used as the name of the variable that +exists() checks. That's not what you want. + The exclamation mark ! negates a value. When the value was true, it +becomes false. When it was false, it becomes true. You can read it as "not". +Thus "if !exists()" can be read as "if not exists()". + What Vim calls true is anything that is not zero. Only zero is false. + + +STRING VARIABLES AND CONSTANTS + +So far only numbers were used for the variable value. Strings can be used as +well. Numbers and strings are the only two types of variables that Vim +supports. The type is dynamic, it is set each time when assigning a value to +the variable with ":let". + To assign a string value to a variable, you need to use a string constant. +There are two types of these. First the string in double quotes: > + + :let name = "peter" + :echo name +< peter ~ + +If you want to include a double quote inside the string, put a backslash in +front of it: > + + :let name = "\"peter\"" + :echo name +< "peter" ~ + +To avoid the need for a backslash, you can use a string in single quotes: > + + :let name = '"peter"' + :echo name +< "peter" ~ + +Inside a single-quote string all the characters are taken literally. The +drawback is that it's impossible to include a single quote. A backslash is +taken literally as well, thus you can't use it to change the meaning of the +character after it. + In double-quote strings it is possible to use special characters. Here are +a few useful ones: + + \t <Tab> + \n <NL>, line break + \r <CR>, <Enter> + \e <Esc> + \b <BS>, backspace + \" " + \\ \, backslash + \<Esc> <Esc> + \<C-W> CTRL-W + +The last two are just examples. The "\<name>" form can be used to include +the special key "name". + See |expr-quote| for the full list of special items in a string. + +============================================================================== +*41.3* Expressions + +Vim has a rich, yet simple way to handle expressions. You can read the +definition here: |expression-syntax|. Here we will show the most common +items. + The numbers, strings and variables mentioned above are expressions by +themselves. Thus everywhere an expression is expected, you can use a number, +string or variable. Other basic items in an expression are: + + $NAME environment variable + &name option + @r register + +Examples: > + + :echo "The value of 'tabstop' is" &ts + :echo "Your home directory is" $HOME + :if @a > 5 + +The &name form can be used to save an option value, set it to a new value, +do something and restore the old value. Example: > + + :let save_ic = &ic + :set noic + :/The Start/,$delete + :let &ic = save_ic + +This makes sure the "The Start" pattern is used with the 'ignorecase' option +off. Still, it keeps the value that the user had set. + + +MATHEMATICS + +It becomes more interesting if we combine these basic items. Let's start with +mathematics on numbers: + + a + b add + a - b subtract + a * b multiply + a / b divide + a % b modulo + +The usual precedence is used. Example: > + + :echo 10 + 5 * 2 +< 20 ~ + +Grouping is done with braces. No surprises here. Example: > + + :echo (10 + 5) * 2 +< 30 ~ + +Strings can be concatenated with ".". Example: > + + :echo "foo" . "bar" +< foobar ~ + +When the ":echo" command gets multiple arguments, it separates them with a +space. In the example the argument is a single expression, thus no space is +inserted. + +Borrowed from the C language is the conditional expression: + + a ? b : c + +If "a" evaluates to true "b" is used, otherwise "c" is used. Example: > + + :let i = 4 + :echo i > 5 ? "i is big" : "i is small" +< i is small ~ + +The three parts of the constructs are always evaluated first, thus you could +see it work as: + + (a) ? (b) : (c) + +============================================================================== +*41.4* Conditionals + +The ":if" commands executes the following statements, until the matching +":endif", only when a condition is met. The generic form is: + + :if {condition} + {statements} + :endif + +Only when the expression {condition} evaluates to true (non-zero) will the +{statements} be executed. These must still be valid commands. If they +contain garbage, Vim won't be able to find the ":endif". + You can also use ":else". The generic form for this is: + + :if {condition} + {statements} + :else + {statements} + :endif + +The second {statements} is only executed if the first one isn't. + Finally, there is ":elseif": + + :if {condition} + {statements} + :elseif {condition} + {statements} + :endif + +This works just like using ":else" and then "if", but without the need for an +extra ":endif". + A useful example for your vimrc file is checking the 'term' option and +doing something depending upon its value: > + + :if &term == "xterm" + : " Do stuff for xterm + :elseif &term == "vt100" + : " Do stuff for a vt100 terminal + :else + : " Do something for other terminals + :endif + + +LOGIC OPERATIONS + +We already used some of them in the examples. These are the most often used +ones: + + a == b equal to + a != b not equal to + a > b greater than + a >= b greater than or equal to + a < b less than + a <= b less than or equal to + +The result is one if the condition is met and zero otherwise. An example: > + + :if v:version >= 600 + : echo "congratulations" + :else + : echo "you are using an old version, upgrade!" + :endif + +Here "v:version" is a variable defined by Vim, which has the value of the Vim +version. 600 is for version 6.0. Version 6.1 has the value 601. This is +very useful to write a script that works with multiple versions of Vim. +|v:version| + +The logic operators work both for numbers and strings. When comparing two +strings, the mathematical difference is used. This compares byte values, +which may not be right for some languages. + When comparing a string with a number, the string is first converted to a +number. This is a bit tricky, because when a string doesn't look like a +number, the number zero is used. Example: > + + :if 0 == "one" + : echo "yes" + :endif + +This will echo "yes", because "one" doesn't look like a number, thus it is +converted to the number zero. + +For strings there are two more items: + + a =~ b matches with + a !~ b does not match with + +The left item "a" is used as a string. The right item "b" is used as a +pattern, like what's used for searching. Example: > + + :if str =~ " " + : echo "str contains a space" + :endif + :if str !~ '\.$' + : echo "str does not end in a full stop" + :endif + +Notice the use of a single-quote string for the pattern. This is useful, +because backslashes need to be doubled in a double-quote string and patterns +tend to contain many backslashes. + +The 'ignorecase' option is used when comparing strings. When you don't want +that, append "#" to match case and "?" to ignore case. Thus "==?" compares +two strings to be equal while ignoring case. And "!~#" checks if a pattern +doesn't match, also checking the case of letters. For the full table see +|expr-==|. + + +MORE LOOPING + +The ":while" command was already mentioned. Two more statements can be used +in between the ":while" and the ":endwhile": + + :continue Jump back to the start of the while loop; the + loop continues. + :break Jump forward to the ":endwhile"; the loop is + discontinued. + +Example: > + + :while counter < 40 + : call do_something() + : if skip_flag + : continue + : endif + : if finished_flag + : break + : endif + : sleep 50m + :endwhile + +The ":sleep" command makes Vim take a nap. The "50m" specifies fifty +milliseconds. Another example is ":sleep 4", which sleeps for four seconds. + +============================================================================== +*41.5* Executing an expression + +So far the commands in the script were executed by Vim directly. The +":execute" command allows executing the result of an expression. This is a +very powerful way to build commands and execute them. + An example is to jump to a tag, which is contained in a variable: > + + :execute "tag " . tag_name + +The "." is used to concatenate the string "tag " with the value of variable +"tag_name". Suppose "tag_name" has the value "get_cmd", then the command that +will be executed is: > + + :tag get_cmd + +The ":execute" command can only execute colon commands. The ":normal" command +executes Normal mode commands. However, its argument is not an expression but +the literal command characters. Example: > + + :normal gg=G + +This jumps to the first line and formats all lines with the "=" operator. + To make ":normal" work with an expression, combine ":execute" with it. +Example: > + + :execute "normal " . normal_commands + +The variable "normal_commands" must contain the Normal mode commands. + Make sure that the argument for ":normal" is a complete command. Otherwise +Vim will run into the end of the argument and abort the command. For example, +if you start Insert mode, you must leave Insert mode as well. This works: > + + :execute "normal Inew text \<Esc>" + +This inserts "new text " in the current line. Notice the use of the special +key "\<Esc>". This avoids having to enter a real <Esc> character in your +script. + +============================================================================== +*41.6* Using functions + +Vim defines many functions and provides a large amount of functionality that +way. A few examples will be given in this section. You can find the whole +list here: |functions|. + +A function is called with the ":call" command. The parameters are passed in +between braces, separated by commas. Example: > + + :call search("Date: ", "W") + +This calls the search() function, with arguments "Date: " and "W". The +search() function uses its first argument as a search pattern and the second +one as flags. The "W" flag means the search doesn't wrap around the end of +the file. + +A function can be called in an expression. Example: > + + :let line = getline(".") + :let repl = substitute(line, '\a', "*", "g") + :call setline(".", repl) + +The getline() function obtains a line from the current file. Its argument is +a specification of the line number. In this case "." is used, which means the +line where the cursor is. + The substitute() function does something similar to the ":substitute" +command. The first argument is the string on which to perform the +substitution. The second argument is the pattern, the third the replacement +string. Finally, the last arguments are the flags. + The setline() function sets the line, specified by the first argument, to a +new string, the second argument. In this example the line under the cursor is +replaced with the result of the substitute(). Thus the effect of the three +statements is equal to: > + + :substitute/\a/*/g + +Using the functions becomes more interesting when you do more work before and +after the substitute() call. + + +FUNCTIONS *function-list* + +There are many functions. We will mention them here, grouped by what they are +used for. You can find an alphabetical list here: |functions|. Use CTRL-] on +the function name to jump to detailed help on it. + +String manipulation: + char2nr() get ASCII value of a character + nr2char() get a character by its ASCII value + escape() escape characters in a string with a '\' + strtrans() translate a string to make it printable + tolower() turn a string to lowercase + toupper() turn a string to uppercase + match() position where a pattern matches in a string + matchend() position where a pattern match ends in a string + matchstr() match of a pattern in a string + stridx() first index of a short string in a long string + strridx() last index of a short string in a long string + strlen() length of a string + substitute() substitute a pattern match with a string + submatch() get a specific match in a ":substitute" + strpart() get part of a string + expand() expand special keywords + type() type of a variable + iconv() convert text from one encoding to another + +Working with text in the current buffer: + byte2line() get line number at a specific byte count + line2byte() byte count at a specific line + col() column number of the cursor or a mark + virtcol() screen column of the cursor or a mark + line() line number of the cursor or mark + wincol() window column number of the cursor + winline() window line number of the cursor + cursor() position the cursor at a line/column + getline() get a line from the buffer + setline() replace a line in the buffer + append() append {string} below line {lnum} + indent() indent of a specific line + cindent() indent according to C indenting + lispindent() indent according to Lisp indenting + nextnonblank() find next non-blank line + prevnonblank() find previous non-blank line + search() find a match for a pattern + searchpair() find the other end of a start/skip/end + +System functions and manipulation of files: + browse() put up a file requester + glob() expand wildcards + globpath() expand wildcards in a number of directories + resolve() find out where a shortcut points to + fnamemodify() modify a file name + executable() check if an executable program exists + filereadable() check if a file can be read + filewritable() check if a file can be written to + isdirectory() check if a directory exists + getcwd() get the current working directory + getfsize() get the size of a file + getftime() get last modification time of a file + localtime() get current time + strftime() convert time to a string + tempname() get the name of a temporary file + delete() delete a file + rename() rename a file + system() get the result of a shell command + hostname() name of the system + +Buffers, windows and the argument list: + argc() number of entries in the argument list + argidx() current position in the argument list + argv() get one entry from the argument list + bufexists() check if a buffer exists + buflisted() check if a buffer exists and is listed + bufloaded() check if a buffer exists and is loaded + bufname() get the name of a specific buffer + bufnr() get the buffer number of a specific buffer + winnr() get the window number for the current window + bufwinnr() get the window number of a specific buffer + winbufnr() get the buffer number of a specific window + getbufvar() get a variable value from a specific buffer + setbufvar() set a variable in a specific buffer + getwinvar() get a variable value from a specific window + setwinvar() set a variable in a specific window + +Folding: + foldclosed() check for a closed fold at a specific line + foldclosedend() like foldclosed() but return the last line + foldlevel() check for the fold level at a specific line + foldtext() generate the line displayed for a closed fold + +Syntax highlighting: + hlexists() check if a highlight group exists + hlID() get ID of a highlight group + synID() get syntax ID at a specific position + synIDattr() get a specific attribute of a syntax ID + synIDtrans() get translated syntax ID + +History: + histadd() add an item to a history + histdel() delete an item from a history + histget() get an item from a history + histnr() get highest index of a history list + +Interactive: + confirm() let the user make a choice + getchar() get a character from the user + getcharmod() get modifiers for the last typed character + input() get a line from the user + inputsecret() get a line from the user without showing it + inputdialog() get a line from the user in a dialog + inputresave save and clear typeahead + inputrestore() restore typeahead + +Vim server: + serverlist() return the list of server names + remote_send() send command characters to a Vim server + remote_expr() evaluate an expression in a Vim server + server2client() send a reply to a client of a Vim server + remote_peek() check if there is a reply from a Vim server + remote_read() read a reply from a Vim server + foreground() move the Vim window to the foreground + remote_foreground() move the Vim server window to the foreground + +Various: + mode() get current editing mode + visualmode() last visual mode used + hasmapto() check if a mapping exists + mapcheck() check if a matching mapping exists + maparg() get rhs of a mapping + exists() check if a variable, function, etc. exists + has() check if a feature is supported in Vim + cscope_connection() check if a cscope connection exists + did_filetype() check if a FileType autocommand was used + eventhandler() check if invoked by an event handler + getwinposx() X position of the GUI Vim window + getwinposy() Y position of the GUI Vim window + winheight() get height of a specific window + winwidth() get width of a specific window + libcall() call a function in an external library + libcallnr() idem, returning a number + getreg() get contents of a register + getregtype() get type of a register + setreg() set contents and type of a register + +============================================================================== +*41.7* Defining a function + +Vim enables you to define your own functions. The basic function declaration +begins as follows: > + + :function {name}({var1}, {var2}, ...) + : {body} + :endfunction +< + Note: + Function names must begin with a capital letter. + +Let's define a short function to return the smaller of two numbers. It starts +with this line: > + + :function Min(num1, num2) + +This tells Vim that the function is named "Min" and it takes two arguments: +"num1" and "num2". + The first thing you need to do is to check to see which number is smaller: + > + : if a:num1 < a:num2 + +The special prefix "a:" tells Vim that the variable is a function argument. +Let's assign the variable "smaller" the value of the smallest number: > + + : if a:num1 < a:num2 + : let smaller = a:num1 + : else + : let smaller = a:num2 + : endif + +The variable "smaller" is a local variable. Variables used inside a function +are local unless prefixed by something like "g:", "a:", or "s:". + + Note: + To access a global variable from inside a function you must prepend + "g:" to it. Thus "g:count" inside a function is used for the global + variable "count", and "count" is another variable, local to the + function. + +You now use the ":return" statement to return the smallest number to the user. +Finally, you end the function: > + + : return smaller + :endfunction + +The complete function definition is as follows: > + + :function Min(num1, num2) + : if a:num1 < a:num2 + : let smaller = a:num1 + : else + : let smaller = a:num2 + : endif + : return smaller + :endfunction + +A user defined function is called in exactly the same way as a builtin +function. Only the name is different. The Min function can be used like +this: > + + :echo Min(5, 8) + +Only now will the function be executed and the lines be interpreted by Vim. +If there are mistakes, like using an undefined variable or function, you will +now get an error message. When defining the function these errors are not +detected. + +When a function reaches ":endfunction" or ":return" is used without an +argument, the function returns zero. + +To redefine a function that already exists, use the ! for the ":function" +command: > + + :function! Min(num1, num2, num3) + + +USING A RANGE + +The ":call" command can be given a line range. This can have one of two +meanings. When a function has been defined with the "range" keyword, it will +take care of the line range itself. + The function will be passed the variables "a:firstline" and "a:lastline". +These will have the line numbers from the range the function was called with. +Example: > + + :function Count_words() range + : let n = a:firstline + : let count = 0 + : while n <= a:lastline + : let count = count + Wordcount(getline(n)) + : let n = n + 1 + : endwhile + : echo "found " . count . " words" + :endfunction + +You can call this function with: > + + :10,30call Count_words() + +It will be executed once and echo the number of words. + The other way to use a line range is by defining a function without the +"range" keyword. The function will be called once for every line in the +range, with the cursor in that line. Example: > + + :function Number() + : echo "line " . line(".") . " contains: " . getline(".") + :endfunction + +If you call this function with: > + + :10,15call Number() + +The function will be called six times. + + +VARIABLE NUMBER OF ARGUMENTS + +Vim enables you to define functions that have a variable number of arguments. +The following command, for instance, defines a function that must have 1 +argument (start) and can have up to 20 additional arguments: > + + :function Show(start, ...) + +The variable "a:1" contains the first optional argument, "a:2" the second, and +so on. The variable "a:0" contains the number of extra arguments. + For example: > + + :function Show(start, ...) + : echohl Title + : echo "Show is " . a:start + : echohl None + : let index = 1 + : while index <= a:0 + : echo " Arg " . index . " is " . a:{index} + : let index = index + 1 + : endwhile + : echo "" + :endfunction + +This uses the ":echohl" command to specify the highlighting used for the +following ":echo" command. ":echohl None" stops it again. The ":echon" +command works like ":echo", but doesn't output a line break. + + +LISTING FUNCTIONS + +The ":function" command lists the names and arguments of all user-defined +functions: > + + :function +< function Show(start, ...) ~ + function GetVimIndent() ~ + function SetSyn(name) ~ + +To see what a function does, use its name as an argument for ":function": > + + :function SetSyn +< 1 if &syntax == '' ~ + 2 let &syntax = a:name ~ + 3 endif ~ + endfunction ~ + + +DEBUGGING + +The line number is useful for when you get an error message or when debugging. +See |debug-scripts| about debugging mode. + You can also set the 'verbose' option to 12 or higher to see all function +calls. Set it to 15 or higher to see every executed line. + + +DELETING A FUNCTION + +To delete the Show() function: > + + :delfunction Show + +You get an error when the function doesn't exist. + +============================================================================== +*41.8* Exceptions + +Let's start with an example: > + + :try + : read ~/templates/pascal.tmpl + :catch /E484:/ + : echo "Sorry, the Pascal template file cannot be found." + :endtry + +The ":read" command will fail if the file does not exist. Instead of +generating an error message, this code catches the error and gives the user a +nice message instead. + +For the commands in between ":try" and ":endtry" errors are turned into +exceptions. An exception is a string. In the case of an error the string +contains the error message. And every error message has a number. In this +case, the error we catch contains "E484:". This number is guaranteed to stay +the same (the text may change, e.g., it may be translated). + +When the ":read" command causes another error, the pattern "E484:" will not +match in it. Thus this exception will not be caught and result in the usual +error message. + +You might be tempted to do this: > + + :try + : read ~/templates/pascal.tmpl + :catch + : echo "Sorry, the Pascal template file cannot be found." + :endtry + +This means all errors are caught. But then you will not see errors that are +useful, such as "E21: Cannot make changes, 'modifiable' is off". + +Another useful mechanism is the ":finally" command: > + + :let tmp = tempname() + :try + : exe ".,$write " . tmp + : exe "!filter " . tmp + : .,$delete + : exe "$read " . tmp + :finally + : call delete(tmp) + :endtry + +This filters the lines from the cursor until the end of the file through the +"filter" command, which takes a file name argument. No matter if the +filtering works, something goes wrong in between ":try" and ":finally" or the +user cancels the filtering by pressing CTRL-C, the "call delete(tmp)" is +always executed. This makes sure you don't leave the temporary file behind. + +More information about exception handling can be found in the reference +manual: |exception-handling|. + +============================================================================== +*41.9* Various remarks + +Here is a summary of items that apply to Vim scripts. They are also mentioned +elsewhere, but form a nice checklist. + +The end-of-line character depends on the system. For Unix a single <NL> +character is used. For MS-DOS, Windows, OS/2 and the like, <CR><LF> is used. +This is important when using mappings that end in a <CR>. See |:source_crnl|. + + +WHITE SPACE + +Blank lines are allowed and ignored. + +Leading whitespace characters (blanks and TABs) are always ignored. The +whitespaces between parameters (e.g. between the 'set' and the 'cpoptions' in +the example below) are reduced to one blank character and plays the role of a +separator, the whitespaces after the last (visible) character may or may not +be ignored depending on the situation, see below. + +For a ":set" command involving the "=" (equal) sign, such as in: > + + :set cpoptions =aABceFst + +the whitespace immediately before the "=" sign is ignored. But there can be +no whitespace after the "=" sign! + +To include a whitespace character in the value of an option, it must be +escaped by a "\" (backslash) as in the following example: > + + :set tags=my\ nice\ file + +The same example written as > + + :set tags=my nice file + +will issue an error, because it is interpreted as: > + + :set tags=my + :set nice + :set file + + +COMMENTS + +The character " (the double quote mark) starts a comment. Everything after +and including this character until the end-of-line is considered a comment and +is ignored, except for commands that don't consider comments, as shown in +examples below. A comment can start on any character position on the line. + +There is a little "catch" with comments for some commands. Examples: > + + :abbrev dev development " shorthand + :map <F3> o#include " insert include + :execute cmd " do it + :!ls *.c " list C files + +The abbreviation 'dev' will be expanded to 'development " shorthand'. The +mapping of <F3> will actually be the whole line after the 'o# ....' including +the '" insert include'. The "execute" command will give an error. The "!" +command will send everything after it to the shell, causing an error for an +unmatched '"' character. + There can be no comment after ":map", ":abbreviate", ":execute" and "!" +commands (there are a few more commands with this restriction). For the +":map", ":abbreviate" and ":execute" commands there is a trick: > + + :abbrev dev development|" shorthand + :map <F3> o#include|" insert include + :execute cmd |" do it + +With the '|' character the command is separated from the next one. And that +next command is only a comment. + +Notice that there is no white space before the '|' in the abbreviation and +mapping. For these commands, any character until the end-of-line or '|' is +included. As a consequence of this behavior, you don't always see that +trailing whitespace is included: > + + :map <F4> o#include + +To avoid these problems, you can set the 'list' option when editing vimrc +files. + + +PITFALLS + +Even bigger problem arises in the following example: > + + :map ,ab o#include + :unmap ,ab + +Here the unmap command will not work, because it tries to unmap ",ab ". This +does not exist as a mapped sequence. An error will be issued, which is very +hard to identify, because the ending whitespace character in ":unmap ,ab " is +not visible. + +And this is the same as what happens when one uses a comment after an 'unmap' +command: > + + :unmap ,ab " comment + +Here the comment part will be ignored. However, Vim will try to unmap +',ab ', which does not exist. Rewrite it as: > + + :unmap ,ab| " comment + + +RESTORING THE VIEW + +Sometimes you want to make a change and go back to where cursor was. +Restoring the relative position would also be nice, so that the same line +appears at the top of the window. + This example yanks the current line, puts it above the first line in the +file and then restores the view: > + + map ,p ma"aYHmbgg"aP`bzt`a + +What this does: > + ma"aYHmbgg"aP`bzt`a +< ma set mark a at cursor position + "aY yank current line into register a + Hmb go to top line in window and set mark b there + gg go to first line in file + "aP put the yanked line above it + `b go back to top line in display + zt position the text in the window as before + `a go back to saved cursor position + + +PACKAGING + +To avoid your function names to interfere with functions that you get from +others, use this scheme: +- Prepend a unique string before each function name. I often use an + abbreviation. For example, "OW_" is used for the option window functions. +- Put the definition of your functions together in a file. Set a global + variable to indicate that the functions have been loaded. When sourcing the + file again, first unload the functions. +Example: > + + " This is the XXX package + + if exists("XXX_loaded") + delfun XXX_one + delfun XXX_two + endif + + function XXX_one(a) + ... body of function ... + endfun + + function XXX_two(b) + ... body of function ... + endfun + + let XXX_loaded = 1 + +============================================================================== +*41.10* Writing a plugin *write-plugin* + +You can write a Vim script in such a way that many people can use it. This is +called a plugin. Vim users can drop your script in their plugin directory and +use its features right away |add-plugin|. + +There are actually two types of plugins: + + global plugins: For all types of files. +filetype plugins: Only for files of a specific type. + +In this section the first type is explained. Most items are also relevant for +writing filetype plugins. The specifics for filetype plugins are in the next +section |write-filetype-plugin|. + + +NAME + +First of all you must choose a name for your plugin. The features provided +by the plugin should be clear from its name. And it should be unlikely that +someone else writes a plugin with the same name but which does something +different. And please limit the name to 8 characters, to avoid problems on +old Windows systems. + +A script that corrects typing mistakes could be called "typecorr.vim". We +will use it here as an example. + +For the plugin to work for everybody, it should follow a few guidelines. This +will be explained step-by-step. The complete example plugin is at the end. + + +BODY + +Let's start with the body of the plugin, the lines that do the actual work: > + + 14 iabbrev teh the + 15 iabbrev otehr other + 16 iabbrev wnat want + 17 iabbrev synchronisation + 18 \ synchronization + 19 let s:count = 4 + +The actual list should be much longer, of course. + +The line numbers have only been added to explain a few things, don't put them +in your plugin file! + + +HEADER + +You will probably add new corrections to the plugin and soon have several +versions laying around. And when distributing this file, people will want to +know who wrote this wonderful plugin and where they can send remarks. +Therefore, put a header at the top of your plugin: > + + 1 " Vim global plugin for correcting typing mistakes + 2 " Last Change: 2000 Oct 15 + 3 " Maintainer: Bram Moolenaar <Bram@vim.org> + +About copyright and licensing: Since plugins are very useful and it's hardly +worth restricting their distribution, please consider making your plugin +either public domain or use the Vim |license|. A short note about this near +the top of the plugin should be sufficient. Example: > + + 4 " License: This file is placed in the public domain. + + +LINE CONTINUATION, AVOIDING SIDE EFFECTS *use-cpo-save* + +In line 18 above, the line-continuation mechanism is used |line-continuation|. +Users with 'compatible' set will run into trouble here, they will get an error +message. We can't just reset 'compatible', because that has a lot of side +effects. To avoid this, we will set the 'cpoptions' option to its Vim default +value and restore it later. That will allow the use of line-continuation and +make the script work for most people. It is done like this: > + + 11 let s:save_cpo = &cpo + 12 set cpo&vim + .. + 42 let &cpo = s:save_cpo + +We first store the old value of 'cpoptions' in the s:save_cpo variable. At +the end of the plugin this value is restored. + +Notice that a script-local variable is used |s:var|. A global variable could +already be in use for something else. Always use script-local variables for +things that are only used in the script. + + +NOT LOADING + +It's possible that a user doesn't always want to load this plugin. Or the +system administrator has dropped it in the system-wide plugin directory, but a +user has his own plugin he wants to use. Then the user must have a chance to +disable loading this specific plugin. This will make it possible: > + + 6 if exists("loaded_typecorr") + 7 finish + 8 endif + 9 let loaded_typecorr = 1 + +This also avoids that when the script is loaded twice it would cause error +messages for redefining functions and cause trouble for autocommands that are +added twice. + + +MAPPING + +Now let's make the plugin more interesting: We will add a mapping that adds a +correction for the word under the cursor. We could just pick a key sequence +for this mapping, but the user might already use it for something else. To +allow the user to define which keys a mapping in a plugin uses, the <Leader> +item can be used: > + + 22 map <unique> <Leader>a <Plug>TypecorrAdd + +The "<Plug>TypecorrAdd" thing will do the work, more about that further on. + +The user can set the "mapleader" variable to the key sequence that he wants +this mapping to start with. Thus if the user has done: > + + let mapleader = "_" + +the mapping will define "_a". If the user didn't do this, the default value +will be used, which is a backslash. Then a map for "\a" will be defined. + +Note that <unique> is used, this will cause an error message if the mapping +already happened to exist. |:map-<unique>| + +But what if the user wants to define his own key sequence? We can allow that +with this mechanism: > + + 21 if !hasmapto('<Plug>TypecorrAdd') + 22 map <unique> <Leader>a <Plug>TypecorrAdd + 23 endif + +This checks if a mapping to "<Plug>TypecorrAdd" already exists, and only +defines the mapping from "<Leader>a" if it doesn't. The user then has a +chance of putting this in his vimrc file: > + + map ,c <Plug>TypecorrAdd + +Then the mapped key sequence will be ",c" instead of "_a" or "\a". + + +PIECES + +If a script gets longer, you often want to break up the work in pieces. You +can use functions or mappings for this. But you don't want these functions +and mappings to interfere with the ones from other scripts. For example, you +could define a function Add(), but another script could try to define the same +function. To avoid this, we define the function local to the script by +prepending it with "s:". + +We will define a function that adds a new typing correction: > + + 30 function s:Add(from, correct) + 31 let to = input("type the correction for " . a:from . ": ") + 32 exe ":iabbrev " . a:from . " " . to + .. + 36 endfunction + +Now we can call the function s:Add() from within this script. If another +script also defines s:Add(), it will be local to that script and can only +be called from the script it was defined in. There can also be a global Add() +function (without the "s:"), which is again another function. + +<SID> can be used with mappings. It generates a script ID, which identifies +the current script. In our typing correction plugin we use it like this: > + + 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add + .. + 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> + +Thus when a user types "\a", this sequence is invoked: > + + \a -> <Plug>TypecorrAdd -> <SID>Add -> :call <SID>Add() + +If another script would also map <SID>Add, it would get another script ID and +thus define another mapping. + +Note that instead of s:Add() we use <SID>Add() here. That is because the +mapping is typed by the user, thus outside of the script. The <SID> is +translated to the script ID, so that Vim knows in which script to look for +the Add() function. + +This is a bit complicated, but it's required for the plugin to work together +with other plugins. The basic rule is that you use <SID>Add() in mappings and +s:Add() in other places (the script itself, autocommands, user commands). + +We can also add a menu entry to do the same as the mapping: > + + 26 noremenu <script> Plugin.Add\ Correction <SID>Add + +The "Plugin" menu is recommended for adding menu items for plugins. In this +case only one item is used. When adding more items, creating a submenu is +recommended. For example, "Plugin.CVS" could be used for a plugin that offers +CVS operations "Plugin.CVS.checkin", "Plugin.CVS.checkout", etc. + +Note that in line 28 ":noremap" is used to avoid that any other mappings cause +trouble. Someone may have remapped ":call", for example. In line 24 we also +use ":noremap", but we do want "<SID>Add" to be remapped. This is why +"<script>" is used here. This only allows mappings which are local to the +script. |:map-<script>| The same is done in line 26 for ":noremenu". +|:menu-<script>| + + +<SID> AND <Plug> *using-<Plug>* + +Both <SID> and <Plug> are used to avoid that mappings of typed keys interfere +with mappings that are only to be used from other mappings. Note the +difference between using <SID> and <Plug>: + +<Plug> is visible outside of the script. It is used for mappings which the + user might want to map a key sequence to. <Plug> is a special code + that a typed key will never produce. + To make it very unlikely that other plugins use the same sequence of + characters, use this structure: <Plug> scriptname mapname + In our example the scriptname is "Typecorr" and the mapname is "Add". + This results in "<Plug>TypecorrAdd". Only the first character of + scriptname and mapname is uppercase, so that we can see where mapname + starts. + +<SID> is the script ID, a unique identifier for a script. + Internally Vim translates <SID> to "<SNR>123_", where "123" can be any + number. Thus a function "<SID>Add()" will have a name "<SNR>11_Add()" + in one script, and "<SNR>22_Add()" in another. You can see this if + you use the ":function" command to get a list of functions. The + translation of <SID> in mappings is exactly the same, that's how you + can call a script-local function from a mapping. + + +USER COMMAND + +Now let's add a user command to add a correction: > + + 38 if !exists(":Correct") + 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) + 40 endif + +The user command is defined only if no command with the same name already +exists. Otherwise we would get an error here. Overriding the existing user +command with ":command!" is not a good idea, this would probably make the user +wonder why the command he defined himself doesn't work. |:command| + + +SCRIPT VARIABLES + +When a variable starts with "s:" it is a script variable. It can only be used +inside a script. Outside the script it's not visible. This avoids trouble +with using the same variable name in different scripts. The variables will be +kept as long as Vim is running. And the same variables are used when sourcing +the same script again. |s:var| + +The fun is that these variables can also be used in functions, autocommands +and user commands that are defined in the script. In our example we can add +a few lines to count the number of corrections: > + + 19 let s:count = 4 + .. + 30 function s:Add(from, correct) + .. + 34 let s:count = s:count + 1 + 35 echo s:count . " corrections now" + 36 endfunction + +First s:count is initialized to 4 in the script itself. When later the +s:Add() function is called, it increments s:count. It doesn't matter from +where the function was called, since it has been defined in the script, it +will use the local variables from this script. + + +THE RESULT + +Here is the resulting complete example: > + + 1 " Vim global plugin for correcting typing mistakes + 2 " Last Change: 2000 Oct 15 + 3 " Maintainer: Bram Moolenaar <Bram@vim.org> + 4 " License: This file is placed in the public domain. + 5 + 6 if exists("loaded_typecorr") + 7 finish + 8 endif + 9 let loaded_typecorr = 1 + 10 + 11 let s:save_cpo = &cpo + 12 set cpo&vim + 13 + 14 iabbrev teh the + 15 iabbrev otehr other + 16 iabbrev wnat want + 17 iabbrev synchronisation + 18 \ synchronization + 19 let s:count = 4 + 20 + 21 if !hasmapto('<Plug>TypecorrAdd') + 22 map <unique> <Leader>a <Plug>TypecorrAdd + 23 endif + 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add + 25 + 26 noremenu <script> Plugin.Add\ Correction <SID>Add + 27 + 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> + 29 + 30 function s:Add(from, correct) + 31 let to = input("type the correction for " . a:from . ": ") + 32 exe ":iabbrev " . a:from . " " . to + 33 if a:correct | exe "normal viws\<C-R>\" \b\e" | endif + 34 let s:count = s:count + 1 + 35 echo s:count . " corrections now" + 36 endfunction + 37 + 38 if !exists(":Correct") + 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) + 40 endif + 41 + 42 let &cpo = s:save_cpo + +Line 33 wasn't explained yet. It applies the new correction to the word under +the cursor. The |:normal| command is used to use the new abbreviation. Note +that mappings and abbreviations are expanded here, even though the function +was called from a mapping defined with ":noremap". + +Using "unix" for the 'fileformat' option is recommended. The Vim scripts will +then work everywhere. Scripts with 'fileformat' set to "dos" do not work on +Unix. Also see |:source_crnl|. To be sure it is set right, do this before +writing the file: > + + :set fileformat=unix + + +DOCUMENTATION *write-local-help* + +It's a good idea to also write some documentation for your plugin. Especially +when its behavior can be changed by the user. See |add-local-help| for how +they are installed. + +Here is a simple example for a plugin help file, called "typecorr.txt": > + + 1 *typecorr.txt* Plugin for correcting typing mistakes + 2 + 3 If you make typing mistakes, this plugin will have them corrected + 4 automatically. + 5 + 6 There are currently only a few corrections. Add your own if you like. + 7 + 8 Mappings: + 9 <Leader>a or <Plug>TypecorrAdd + 10 Add a correction for the word under the cursor. + 11 + 12 Commands: + 13 :Correct {word} + 14 Add a correction for {word}. + 15 + 16 *typecorr-settings* + 17 This plugin doesn't have any settings. + +The first line is actually the only one for which the format matters. It will +be extracted from the help file to be put in the "LOCAL ADDITIONS:" section of +help.txt |local-additions|. The first "*" must be in the first column of the +first line. After adding your help file do ":help" and check that the entries +line up nicely. + +You can add more tags inside ** in your help file. But be careful not to use +existing help tags. You would probably use the name of your plugin in most of +them, like "typecorr-settings" in the example. + +Using references to other parts of the help in || is recommended. This makes +it easy for the user to find associated help. + + +FILETYPE DETECTION *plugin-filetype* + +If your filetype is not already detected by Vim, you should create a filetype +detection snippet in a separate file. It is usually in the form of an +autocommand that sets the filetype when the file name matches a pattern. +Example: > + + au BufNewFile,BufRead *.foo set filetype=foofoo + +Write this single-line file as "ftdetect/foofoo.vim" in the first directory +that appears in 'runtimepath'. For Unix that would be +"~/.vim/ftdetect/foofoo.vim". The convention is to use the name of the +filetype for the script name. + +You can make more complicated checks if you like, for example to inspect the +contents of the file to recognize the language. Also see |new-filetype|. + + +SUMMARY *plugin-special* + +Summary of special things to use in a plugin: + +s:name Variables local to the script. + +<SID> Script-ID, used for mappings and functions local to + the script. + +hasmapto() Function to test if the user already defined a mapping + for functionality the script offers. + +<Leader> Value of "mapleader", which the user defines as the + keys that plugin mappings start with. + +:map <unique> Give a warning if a mapping already exists. + +:noremap <script> Use only mappings local to the script, not global + mappings. + +exists(":Cmd") Check if a user command already exists. + +============================================================================== +*41.11* Writing a filetype plugin *write-filetype-plugin* *ftplugin* + +A filetype plugin is like a global plugin, except that it sets options and +defines mappings for the current buffer only. See |add-filetype-plugin| for +how this type of plugin is used. + +First read the section on global plugins above |41.10|. All that is said there +also applies to filetype plugins. There are a few extras, which are explained +here. The essential thing is that a filetype plugin should only have an +effect on the current buffer. + + +DISABLING + +If you are writing a filetype plugin to be used by many people, they need a +chance to disable loading it. Put this at the top of the plugin: > + + " Only do this when not done yet for this buffer + if exists("b:did_ftplugin") + finish + endif + let b:did_ftplugin = 1 + +This also needs to be used to avoid that the same plugin is executed twice for +the same buffer (happens when using an ":edit" command without arguments). + +Now users can disable loading the default plugin completely by making a +filetype plugin with only this line: > + + let b:did_ftplugin = 1 + +This does require that the filetype plugin directory comes before $VIMRUNTIME +in 'runtimepath'! + +If you do want to use the default plugin, but overrule one of the settings, +you can write the different setting in a script: > + + setlocal textwidth=70 + +Now write this in the "after" directory, so that it gets sourced after the +distributed "vim.vim" ftplugin |after-directory|. For Unix this would be +"~/.vim/after/ftplugin/vim.vim". Note that the default plugin will have set +"b:did_ftplugin", but it is ignored here. + + +OPTIONS + +To make sure the filetype plugin only affects the current buffer use the > + + :setlocal + +command to set options. And only set options which are local to a buffer (see +the help for the option to check that). When using |:setlocal| for global +options or options local to a window, the value will change for many buffers, +and that is not what a filetype plugin should do. + +When an option has a value that is a list of flags or items, consider using +"+=" and "-=" to keep the existing value. Be aware that the user may have +changed an option value already. First resetting to the default value and +then changing it often a good idea. Example: > + + :setlocal formatoptions& formatoptions+=ro + + +MAPPINGS + +To make sure mappings will only work in the current buffer use the > + + :map <buffer> + +command. This needs to be combined with the two-step mapping explained above. +An example of how to define functionality in a filetype plugin: > + + if !hasmapto('<Plug>JavaImport') + map <buffer> <unique> <LocalLeader>i <Plug>JavaImport + endif + noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc> + +|hasmapto()| is used to check if the user has already defined a map to +<Plug>JavaImport. If not, then the filetype plugin defines the default +mapping. This starts with |<LocalLeader>|, which allows the user to select +the key(s) he wants filetype plugin mappings to start with. The default is a +backslash. +"<unique>" is used to give an error message if the mapping already exists or +overlaps with an existing mapping. +|:noremap| is used to avoid that any other mappings that the user has defined +interferes. You might want to use ":noremap <script>" to allow remapping +mappings defined in this script that start with <SID>. + +The user must have a chance to disable the mappings in a filetype plugin, +without disabling everything. Here is an example of how this is done for a +plugin for the mail filetype: > + + " Add mappings, unless the user didn't want this. + if !exists("no_plugin_maps") && !exists("no_mail_maps") + " Quote text by inserting "> " + if !hasmapto('<Plug>MailQuote') + vmap <buffer> <LocalLeader>q <Plug>MailQuote + nmap <buffer> <LocalLeader>q <Plug>MailQuote + endif + vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR> + nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR> + endif + +Two global variables are used: +no_plugin_maps disables mappings for all filetype plugins +no_mail_maps disables mappings for a specific filetype + + +USER COMMANDS + +To add a user command for a specific file type, so that it can only be used in +one buffer, use the "-buffer" argument to |:command|. Example: > + + :command -buffer Make make %:r.s + + +VARIABLES + +A filetype plugin will be sourced for each buffer of the type it's for. Local +script variables |s:var| will be shared between all invocations. Use local +buffer variables |b:var| if you want a variable specifically for one buffer. + + +FUNCTIONS + +When defining a function, this only needs to be done once. But the filetype +plugin will be sourced every time a file with this filetype will be opened. +This construct make sure the function is only defined once: > + + :if !exists("*s:Func") + : function s:Func(arg) + : ... + : endfunction + :endif +< + +UNDO *undo_ftplugin* + +When the user does ":setfiletype xyz" the effect of the previous filetype +should be undone. Set the b:undo_ftplugin variable to the commands that will +undo the settings in your filetype plugin. Example: > + + let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<" + \ . "| unlet b:match_ignorecase b:match_words b:match_skip" + +Using ":setlocal" with "<" after the option name resets the option to its +global value. That is mostly the best way to reset the option value. + +This does require removing the "C" flag from 'cpoptions' to allow line +continuation, as mentioned above |use-cpo-save|. + + +FILE NAME + +The filetype must be included in the file name |ftplugin-name|. Use one of +these three forms: + + .../ftplugin/stuff.vim + .../ftplugin/stuff_foo.vim + .../ftplugin/stuff/bar.vim + +"stuff" is the filetype, "foo" and "bar" are arbitrary names. + + +SUMMARY *ftplugin-special* + +Summary of special things to use in a filetype plugin: + +<LocalLeader> Value of "maplocalleader", which the user defines as + the keys that filetype plugin mappings start with. + +:map <buffer> Define a mapping local to the buffer. + +:noremap <script> Only remap mappings defined in this script that start + with <SID>. + +:setlocal Set an option for the current buffer only. + +:command -buffer Define a user command local to the buffer. + +exists("*s:Func") Check if a function was already defined. + +Also see |plugin-special|, the special things used for all plugins. + +============================================================================== +*41.12* Writing a compiler plugin *write-compiler-plugin* + +A compiler plugin sets options for use with a specific compiler. The user can +load it with the |:compiler| command. The main use is to set the +'errorformat' and 'makeprg' options. + +Easiest is to have a look at examples. This command will edit all the default +compiler plugins: > + + :next $VIMRUNTIME/compiler/*.vim + +Use |:next| to go to the next plugin file. + +There are two special items about these files. First is a mechanism to allow +a user to overrule or add to the default file. The default files start with: > + + :if exists("current_compiler") + : finish + :endif + :let current_compiler = "mine" + +When you write a compiler file and put it in your personal runtime directory +(e.g., ~/.vim/compiler for Unix), you set the "current_compiler" variable to +make the default file skip the settings. + +The second mechanism is to use ":set" for ":compiler!" and ":setlocal" for +":compiler". Vim defines the ":CompilerSet" user command for this. However, +older Vim versions don't, thus your plugin should define it then. This is an +example: > + + if exists(":CompilerSet") != 2 + command -nargs=* CompilerSet setlocal <args> + endif + CompilerSet errorformat& " use the default 'errorformat' + CompilerSet makeprg=nmake + +When you write a compiler plugin for the Vim distribution or for a system-wide +runtime directory, use the mechanism mentioned above. When +"current_compiler" was already set by a user plugin nothing will be done. + +When you write a compiler plugin to overrule settings from a default plugin, +don't check "current_compiler". This plugin is supposed to be loaded +last, thus it should be in a directory at the end of 'runtimepath'. For Unix +that could be ~/.vim/after/compiler. + +============================================================================== + +Next chapter: |usr_42.txt| Add new menus + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_42.txt b/en/usr_42.txt new file mode 100644 index 000000000..b5ce3269e --- /dev/null +++ b/en/usr_42.txt @@ -0,0 +1,365 @@ +*usr_42.txt* For Vim version 6.3. Last change: 2002 Oct 08 + + VIM USER MANUAL - by Bram Moolenaar + + Add new menus + + +By now you know that Vim is very flexible. This includes the menus used in +the GUI. You can define your own menu entries to make certain commands easily +accessible. This is for mouse-happy users only. + +|42.1| Introduction +|42.2| Menu commands +|42.3| Various +|42.4| Toolbar and popup menus + + Next chapter: |usr_43.txt| Using filetypes + Previous chapter: |usr_41.txt| Write a Vim script +Table of contents: |usr_toc.txt| + +============================================================================== +*42.1* Introduction + +The menus that Vim uses are defined in the file "$VIMRUNTIME/menu.vim". If +you want to write your own menus, you might first want to look through that +file. + To define a menu item, use the ":menu" command. The basic form of this +command is as follows: > + + :menu {menu-item} {keys} + +The {menu-item} describes where on the menu to put the item. A typical +{menu-item} is "File.Save", which represents the item "Save" under the +"File" menu. A dot is used to separate the names. Example: > + + :menu File.Save :update<CR> + +The ":update" command writes the file when it was modified. + You can add another level: "Edit.Settings.Shiftwidth" defines a submenu +"Settings" under the "Edit" menu, with an item "Shiftwidth". You could use +even deeper levels. Don't use this too much, you need to move the mouse quite +a bit to use such an item. + The ":menu" command is very similar to the ":map" command: the left side +specifies how the item is triggered and the right hand side defines the +characters that are executed. {keys} are characters, they are used just like +you would have typed them. Thus in Insert mode, when {keys} is plain text, +that text is inserted. + + +ACCELERATORS + +The ampersand character (&) is used to indicate an accelerator. For instance, +you can use Alt-F to select "File" and S to select "Save". (The 'winaltkeys' +option may disable this though!). Therefore, the {menu-item} looks like +"&File.&Save". The accelerator characters will be underlined in the menu. + You must take care that each key is used only once in each menu. Otherwise +you will not know which of the two will actually be used. Vim doesn't warn +you for this. + + +PRIORITIES + +The actual definition of the File.Save menu item is as follows: > + + :menu 10.340 &File.&Save<Tab>:w :confirm w<CR> + +The number 10.340 is called the priority number. It is used by the editor to +decide where it places the menu item. The first number (10) indicates the +position on the menu bar. Lower numbered menus are positioned to the left, +higher numbers to the right. + These are the priorities used for the standard menus: + + 10 20 40 50 60 70 9999 + + +------------------------------------------------------------+ + | File Edit Tools Syntax Buffers Window Help | + +------------------------------------------------------------+ + +Notice that the Help menu is given a very high number, to make it appear on +the far right. + The second number (340) determines the location of the item within the +pull-down menu. Lower numbers go on top, higher number on the bottom. These +are the priorities in the File menu: + + +-----------------+ + 10.310 |Open... | + 10.320 |Split-Open... | + 10.325 |New | + 10.330 |Close | + 10.335 |---------------- | + 10.340 |Save | + 10.350 |Save As... | + 10.400 |---------------- | + 10.410 |Split Diff with | + 10.420 |Split Patched By | + 10.500 |---------------- | + 10.510 |Print | + 10.600 |---------------- | + 10.610 |Save-Exit | + 10.620 |Exit | + +-----------------+ + +Notice that there is room in between the numbers. This is where you can +insert your own items, if you really want to (it's often better to leave the +standard menus alone and add a new menu for your own items). + When you create a submenu, you can add another ".number" to the priority. +Thus each name in {menu-item} has its priority number. + + +SPECIAL CHARACTERS + +The {menu-item} in this example is "&File.&Save<Tab>:w". This brings up an +important point: {menu-item} must be one word. If you want to put a dot, +space or tabs in the name, you either use the <> notation (<Space> and <Tab>, +for instance) or use the backslash (\) escape. > + + :menu 10.305 &File.&Do\ It\.\.\. :exit<CR> + +In this example, the name of the menu item "Do It..." contains a space and the +command is ":exit<CR>". + +The <Tab> character in a menu name is used to separate the part that defines +the menu name from the part that gives a hint to the user. The part after the +<Tab> is displayed right aligned in the menu. In the File.Save menu the name +used is "&File.&Save<Tab>:w". Thus the menu name is "File.Save" and the hint +is ":w". + + +SEPARATORS + +The separator lines, used to group related menu items together, can be defined +by using a name that starts and ends in a '-'. For example "-sep-". When +using several separators the names must be different. Otherwise the names +don't matter. + The command from a separator will never be executed, but you have to define +one anyway. A single colon will do. Example: > + + :amenu 20.510 Edit.-sep3- : + +============================================================================== +*42.2* Menu commands + +You can define menu items that exist for only certain modes. This works just +like the variations on the ":map" command: + + :menu Normal, Visual and Operator-pending mode + :nmenu Normal mode + :vmenu Visual mode + :omenu Operator-pending mode + :menu! Insert and Command-line mode + :imenu Insert mode + :cmenu Command-line mode + :amenu All modes + +To avoid that the commands of a menu item are being mapped, use the command +":noremenu", ":nnoremenu", ":anoremenu", etc. + + +USING :AMENU + +The ":amenu" command is a bit different. It assumes that the {keys} you +give are to be executed in Normal mode. When Vim is in Visual or Insert mode +when the menu is used, Vim first has to go back to Normal mode. ":amenu" +inserts a CTRL-C or CTRL-O for you. For example, if you use this command: +> + :amenu 90.100 Mine.Find\ Word * + +Then the resulting menu commands will be: + + Normal mode: * + Visual mode: CTRL-C * + Operator-pending mode: CTRL-C * + Insert mode: CTRL-O * + Command-line mode: CTRL-C * + +When in Command-line mode the CTRL-C will abandon the command typed so far. +In Visual and Operator-pending mode CTRL-C will stop the mode. The CTRL-O in +Insert mode will execute the command and then return to Insert mode. + CTRL-O only works for one command. If you need to use two or more +commands, put them in a function and call that function. Example: > + + :amenu Mine.Next\ File :call <SID>NextFile()<CR> + :function <SID>NextFile() + : next + : 1/^Code + :endfunction + +This menu entry goes to the next file in the argument list with ":next". Then +it searches for the line that starts with "Code". + The <SID> before the function name is the script ID. This makes the +function local to the current Vim script file. This avoids problems when a +function with the same name is defined in another script file. See |<SID>|. + + +SILENT MENUS + +The menu executes the {keys} as if you typed them. For a ":" command this +means you will see the command being echoed on the command line. If it's a +long command, the hit-Enter prompt will appear. That can be very annoying! + To avoid this, make the menu silent. This is done with the <silent> +argument. For example, take the call to NextFile() in the previous example. +When you use this menu, you will see this on the command line: + + :call <SNR>34_NextFile() ~ + +To avoid this text on the command line, insert "<silent>" as the first +argument: > + + :amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR> + +Don't use "<silent>" too often. It is not needed for short commands. If you +make a menu for someone else, being able the see the executed command will +give him a hint about what he could have typed, instead of using the mouse. + + +LISTING MENUS + +When a menu command is used without a {keys} part, it lists the already +defined menus. You can specify a {menu-item}, or part of it, to list specific +menus. Example: > + + :amenu + +This lists all menus. That's a long list! Better specify the name of a menu +to get a shorter list: > + + :amenu Edit + +This lists only the "Edit" menu items for all modes. To list only one +specific menu item for Insert mode: > + + :imenu Edit.Undo + +Take care that you type exactly the right name. Case matters here. But the +'&' for accelerators can be omitted. The <Tab> and what comes after it can be +left out as well. + + +DELETING MENUS + +To delete a menu, the same command is used as for listing, but with "menu" +changed to "unmenu". Thus ":menu" becomes, ":unmenu", ":nmenu" becomes +":nunmenu", etc. To delete the "Tools.Make" item for Insert mode: > + + :iunmenu Tools.Make + +You can delete a whole menu, with all its items, by using the menu name. +Example: > + + :aunmenu Syntax + +This deletes the Syntax menu and all the items in it. + +============================================================================== +*42.3* Various + +You can change the appearance of the menus with flags in 'guioptions'. In the +default value they are all included. You can remove a flag with a command +like: > + + :set guioptions-=m +< + m When removed the menubar is not displayed. + + M When removed the default menus are not loaded. + + g When removed the inactive menu items are not made grey + but are completely removed. (Does not work on all + systems.) + + t When removed the tearoff feature is not enabled. + +The dotted line at the top of a menu is not a separator line. When you select +this item, the menu is "teared-off": It is displayed in a separate window. +This is called a tearoff menu. This is useful when you use the same menu +often. + +For translating menu items, see |:menutrans|. + +Since the mouse has to be used to select a menu item, it is a good idea to use +the ":browse" command for selecting a file. And ":confirm" to get a dialog +instead of an error message, e.g., when the current buffer contains changes. +These two can be combined: > + + :amenu File.Open :browse confirm edit<CR> + +The ":browse" makes a file browser appear to select the file to edit. The +":confirm" will pop up a dialog when the current buffer has changes. You can +then select to save the changes, throw them away or cancel the command. + For more complicated items, the confirm() and inputdialog() functions can +be used. The default menus contain a few examples. + +============================================================================== +*42.4* Toolbar and popup menus + +There are two special menus: ToolBar and PopUp. Items that start with these +names do not appear in the normal menu bar. + + +TOOLBAR + +The toolbar appears only when the "T" flag is included in the 'guioptions' +option. + The toolbar uses icons rather than text to represent the command. For +example, the {menu-item} named "ToolBar.New" causes the "New" icon to appear +on the toolbar. + The Vim editor has 28 built-in icons. You can find a table here: +|builtin-tools|. Most of them are used in the default toolbar. You can +redefine what these items do (after the default menus are setup). + You can add another bitmap for a toolbar item. Or define a new toolbar +item with a bitmap. For example, define a new toolbar item with: > + + :tmenu ToolBar.Compile Compile the current file + :amenu ToolBar.Compile :!cc % -o %:r<CR> + +Now you need to create the icon. For MS-Windows it must be in bitmap format, +with the name "Compile.bmp". For Unix XPM format is used, the file name is +"Compile.xpm". The size must be 18 by 18 pixels. On MS-Windows other sizes +can be used as well, but it will look ugly. + Put the bitmap in the directory "bitmaps" in one of the directories from +'runtimepath'. E.g., for Unix "~/.vim/bitmaps/Compile.xpm". + +You can define tooltips for the items in the toolbar. A tooltip is a short +text that explains what a toolbar item will do. For example "Open file". It +appears when the mouse pointer is on the item, without moving for a moment. +This is very useful if the meaning of the picture isn't that obvious. +Example: > + + :tmenu ToolBar.Make Run make in the current directory +< + Note: + Pay attention to the case used. "Toolbar" and "toolbar" are different + from "ToolBar"! + +To remove a tooltip, use the |:tunmenu| command. + +The 'toolbar' option can be used to display text instead of a bitmap, or both +text and a bitmap. Most people use just the bitmap, since the text takes +quite a bit of space. + + +POPUP MENU + +The popup menu pops up where the mouse pointer is. On MS-Windows you activate +it by clicking the right mouse button. Then you can select an item with the +left mouse button. On Unix the popup menu is used by pressing and holding the +right mouse button. + The popup menu only appears when the 'mousemodel' has been set to "popup" +or "popup_setpos". The difference between the two is that "popup_setpos" +moves the cursor to the mouse pointer position. When clicking inside a +selection, the selection will be used unmodified. When there is a selection +but you click outside of it, the selection is removed. + There is a separate popup menu for each mode. Thus there are never grey +items like in the normal menus. + +What is the meaning of life, the universe and everything? *42* +Douglas Adams, the only person who knew what this question really was about is +now dead, unfortunately. So now you might wonder what the meaning of death +is... + +============================================================================== + +Next chapter: |usr_43.txt| Using filetypes + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_43.txt b/en/usr_43.txt new file mode 100644 index 000000000..a16e33774 --- /dev/null +++ b/en/usr_43.txt @@ -0,0 +1,172 @@ +*usr_43.txt* For Vim version 6.3. Last change: 2002 Jul 14 + + VIM USER MANUAL - by Bram Moolenaar + + Using filetypes + + +When you are editing a file of a certain type, for example a C program or a +shell script, you often use the same option settings and mappings. You +quickly get tired of manually setting these each time. This chapter explains +how to do it automatically. + +|43.1| Plugins for a filetype +|43.2| Adding a filetype + + Next chapter: |usr_44.txt| Your own syntax highlighted + Previous chapter: |usr_42.txt| Add new menus +Table of contents: |usr_toc.txt| + +============================================================================== +*43.1* Plugins for a filetype *filetype-plugin* + +How to start using filetype plugins has already been discussed here: +|add-filetype-plugin|. But you probably are not satisfied with the default +settings, because they have been kept minimal. Suppose that for C files you +want to set the 'softtabstop' option to 4 and define a mapping to insert a +three-line comment. You do this with only two steps: + + *your-runtime-dir* +1. Create your own runtime directory. On Unix this usually is "~/.vim". In + this directory create the "ftplugin" directory: > + + mkdir ~/.vim + mkdir ~/.vim/ftplugin +< + When you are not on Unix, check the value of the 'runtimepath' option to + see where Vim will look for the "ftplugin" directory: > + + set runtimepath + +< You would normally use the first directory name (before the first comma). + You might want to prepend a directory name to the 'runtimepath' option in + your |vimrc| file if you don't like the default value. + +2. Create the file "~/.vim/ftplugin/c.vim", with the contents: > + + setlocal softtabstop=4 + noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> + +Try editing a C file. You should notice that the 'softtabstop' option is set +to 4. But when you edit another file it's reset to the default zero. That is +because the ":setlocal" command was used. This sets the 'softtabstop' option +only locally to the buffer. As soon as you edit another buffer, it will be +set to the value set for that buffer. For a new buffer it will get the +default value or the value from the last ":set" command. + +Likewise, the mapping for "\c" will disappear when editing another buffer. +The ":map <buffer>" command creates a mapping that is local to the current +buffer. This works with any mapping command: ":map!", ":vmap", etc. The +|<LocalLeader>| in the mapping is replaced with the value of "maplocalleader". + +You can find examples for filetype plugins in this directory: > + + $VIMRUNTIME/ftplugin/ + +More details about writing a filetype plugin can be found here: +|write-plugin|. + +============================================================================== +*43.2* Adding a filetype + +If you are using a type of file that is not recognized by Vim, this is how to +get it recognized. You need a runtime directory of your own. See +|your-runtime-dir| above. + +Create a file "filetype.vim" which contains an autocommand for your filetype. +(Autocommands were explained in section |40.3|.) Example: > + + augroup filetypedetect + au BufNewFile,BufRead *.xyz setf xyz + augroup END + +This will recognize all files that end in ".xyz" as the "xyz" filetype. The +":augroup" commands put this autocommand in the "filetypedetect" group. This +allows removing all autocommands for filetype detection when doing ":filetype +off". The "setf" command will set the 'filetype' option to its argument, +unless it was set already. This will make sure that 'filetype' isn't set +twice. + +You can use many different patterns to match the name of your file. Directory +names can also be included. See |autocmd-patterns|. For example, the files +under "/usr/share/scripts/" are all "ruby" files, but don't have the expected +file name extension. Adding this to the example above: > + + augroup filetypedetect + au BufNewFile,BufRead *.xyz setf xyz + au BufNewFile,BufRead /usr/share/scripts/* setf ruby + augroup END + +However, if you now edit a file /usr/share/scripts/README.txt, this is not a +ruby file. The danger of a pattern ending in "*" is that it quickly matches +too many files. To avoid trouble with this, put the filetype.vim file in +another directory, one that is at the end of 'runtimepath'. For Unix for +example, you could use "~/.vim/after/filetype.vim". + You now put the detection of text files in ~/.vim/filetype.vim: > + + augroup filetypedetect + au BufNewFile,BufRead *.txt setf text + augroup END + +That file is found in 'runtimepath' first. Then use this in +~/.vim/after/filetype.vim, which is found last: > + + augroup filetypedetect + au BufNewFile,BufRead /usr/share/scripts/* setf ruby + augroup END + +What will happen now is that Vim searches for "filetype.vim" files in each +directory in 'runtimepath'. First ~/.vim/filetype.vim is found. The +autocommand to catch *.txt files is defined there. Then Vim finds the +filetype.vim file in $VIMRUNTIME, which is halfway 'runtimepath'. Finally +~/.vim/after/filetype.vim is found and the autocommand for detecting ruby +files in /usr/share/scripts is added. + When you now edit /usr/share/scripts/README.txt, the autocommands are +checked in the order in which they were defined. The *.txt pattern matches, +thus "setf text" is executed to set the filetype to "text". The pattern for +ruby matches too, and the "setf ruby" is executed. But since 'filetype' was +already set to "text", nothing happens here. + When you edit the file /usr/share/scripts/foobar the same autocommands are +checked. Only the one for ruby matches and "setf ruby" sets 'filetype' to +ruby. + + +RECOGNIZING BY CONTENTS + +If your file cannot be recognized by its file name, you might be able to +recognize it by its contents. For example, many script files start with a +line like: + + #!/bin/xyz ~ + +To recognize this script create a file "scripts.vim" in your runtime directory +(same place where filetype.vim goes). It might look like this: > + + if did_filetype() + finish + endif + if getline(1) =~ '^#!.*[/\\]xyz\>' + setf xyz + endif + +The first check with did_filetype() is to avoid that you will check the +contents of files for which the filetype was already detected by the file +name. That avoids wasting time on checking the file when the "setf" command +won't do anything. + The scripts.vim file is sourced by an autocommand in the default +filetype.vim file. Therefore, the order of checks is: + + 1. filetype.vim files before $VIMRUNTIME in 'runtimepath' + 2. first part of $VIMRUNTIME/filetype.vim + 3. all scripts.vim files in 'runtimepath' + 4. remainder of $VIMRUNTIME/filetype.vim + 5. filetype.vim files after $VIMRUNTIME in 'runtimepath' + +If this is not sufficient for you, add an autocommand that matches all files +and sources a script or executes a function to check the contents of the file. + +============================================================================== + +Next chapter: |usr_44.txt| Your own syntax highlighted + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_44.txt b/en/usr_44.txt new file mode 100644 index 000000000..ac713e79a --- /dev/null +++ b/en/usr_44.txt @@ -0,0 +1,719 @@ +*usr_44.txt* For Vim version 6.3. Last change: 2002 Oct 10 + + VIM USER MANUAL - by Bram Moolenaar + + Your own syntax highlighted + + +Vim comes with highlighting for a couple of hundred different file types. If +the file you are editing isn't included, read this chapter to find out how to +get this type of file highlighted. Also see |:syn-define| in the reference +manual. + +|44.1| Basic syntax commands +|44.2| Keywords +|44.3| Matches +|44.4| Regions +|44.5| Nested items +|44.6| Following groups +|44.7| Other arguments +|44.8| Clusters +|44.9| Including another syntax file +|44.10| Synchronizing +|44.11| Installing a syntax file +|44.12| Portable syntax file layout + + Next chapter: |usr_45.txt| Select your language + Previous chapter: |usr_43.txt| Using filetypes +Table of contents: |usr_toc.txt| + +============================================================================== +*44.1* Basic syntax commands + +Using an existing syntax file to start with will save you a lot of time. Try +finding a syntax file in $VIMRUNTIME/syntax for a language that is similar. +These files will also show you the normal layout of a syntax file. To +understand it, you need to read the following. + +Let's start with the basic arguments. Before we start defining any new +syntax, we need to clear out any old definitions: > + + :syntax clear + +This isn't required in the final syntax file, but very useful when +experimenting. + +There are more simplifications in this chapter. If you are writing a syntax +file to be used by others, read all the way through the end to find out the +details. + + +LISTING DEFINED ITEMS + +To check which syntax items are currently defined, use this command: > + + :syntax + +You can use this to check which items have actually been defined. Quite +useful when you are experimenting with a new syntax file. It also shows the +colors used for each item, which helps to find out what is what. + To list the items in a specific syntax group use: > + + :syntax list {group-name} + +This also can be used to list clusters (explained in |44.8|). Just include +the @ in the name. + + +MATCHING CASE + +Some languages are not case sensitive, such as Pascal. Others, such as C, are +case sensitive. You need to tell which type you have with the following +commands: > + :syntax case match + :syntax case ignore + +The "match" argument means that Vim will match the case of syntax elements. +Therefore, "int" differs from "Int" and "INT". If the "ignore" argument is +used, the following are equivalent: "Procedure", "PROCEDURE" and "procedure". + The ":syntax case" commands can appear anywhere in a syntax file and affect +the syntax definitions that follow. In most cases, you have only one ":syntax +case" command in your syntax file; if you work with an unusual language that +contains both case-sensitive and non-case-sensitive elements, however, you can +scatter the ":syntax case" command throughout the file. + +============================================================================== +*44.2* Keywords + +The most basic syntax elements are keywords. To define a keyword, use the +following form: > + + :syntax keyword {group} {keyword} ... + +The {group} is the name of a syntax group. With the ":highlight" command you +can assign colors to a {group}. The {keyword} argument is an actual keyword. +Here are a few examples: > + + :syntax keyword xType int long char + :syntax keyword xStatement if then else endif + +This example uses the group names "xType" and "xStatement". By convention, +each group name is prefixed by the filetype for the language being defined. +This example defines syntax for the x language (eXample language without an +interesting name). In a syntax file for "csh" scripts the name "cshType" +would be used. Thus the prefix is equal to the value of 'filetype'. + These commands cause the words "int", "long" and "char" to be highlighted +one way and the words "if", "then", "else" and "endif" to be highlighted +another way. Now you need to connect the x group names to standard Vim +names. You do this with the following commands: > + + :highlight link xType Type + :highlight link xStatement Statement + +This tells Vim to highlight "xType" like "Type" and "xStatement" like +"Statement". See |group-name| for the standard names. + + +UNUSUAL KEYWORDS + +The characters used in a keyword must be in the 'iskeyword' option. If you +use another character, the word will never match. Vim doesn't give a warning +message for this. + The x language uses the '-' character in keywords. This is how it's done: +> + :setlocal iskeyword+=- + :syntax keyword xStatement when-not + +The ":setlocal" command is used to change 'iskeyword' only for the current +buffer. Still it does change the behavior of commands like "w" and "*". If +that is not wanted, don't define a keyword but use a match (explained in the +next section). + +The x language allows for abbreviations. For example, "next" can be +abbreviated to "n", "ne" or "nex". You can define them by using this command: +> + :syntax keyword xStatement n[ext] + +This doesn't match "nextone", keywords always match whole words only. + +============================================================================== +*44.3* Matches + +Consider defining something a bit more complex. You want to match ordinary +identifiers. To do this, you define a match syntax item. This one matches +any word consisting of only lowercase letters: > + + :syntax match xIdentifier /\<\l\+\>/ +< + Note: + Keywords overrule any other syntax item. Thus the keywords "if", + "then", etc., will be keywords, as defined with the ":syntax keyword" + commands above, even though they also match the pattern for + xIdentifier. + +The part at the end is a pattern, like it's used for searching. The // is +used to surround the pattern (like how it's done in a ":substitute" command). +You can use any other character, like a plus or a quote. + +Now define a match for a comment. In the x language it is anything from # to +the end of a line: > + + :syntax match xComment /#.*/ + +Since you can use any search pattern, you can highlight very complex things +with a match item. See |pattern| for help on search patterns. + +============================================================================== +*44.4* Regions + +In the example x language, strings are enclosed in double quotation marks ("). +To highlight strings you define a region. You need a region start (double +quote) and a region end (double quote). The definition is as follows: > + + :syntax region xString start=/"/ end=/"/ + +The "start" and "end" directives define the patterns used to find the start +and end of the region. But what about strings that look like this? + + "A string with a double quote (\") in it" ~ + +This creates a problem: The double quotation marks in the middle of the string +will end the region. You need to tell Vim to skip over any escaped double +quotes in the string. Do this with the skip keyword: > + + :syntax region xString start=/"/ skip=/\\"/ end=/"/ + +The double backslash matches a single backslash, since the backslash is a +special character in search patterns. + +When to use a region instead of a match? The main difference is that a match +item is a single pattern, which must match as a whole. A region starts as +soon as the "start" pattern matches. Whether the "end" pattern is found or +not doesn't matter. Thus when the item depends on the "end" pattern to match, +you cannot use a region. Otherwise, regions are often simpler to define. And +it is easier to use nested items, as is explained in the next section. + +============================================================================== +*44.5* Nested items + +Take a look at this comment: + + %Get input TODO: Skip white space ~ + +You want to highlight TODO in big yellow letters, even though it is in a +comment that is highlighted blue. To let Vim know about this, you define the +following syntax groups: > + + :syntax keyword xTodo TODO contained + :syntax match xComment /%.*/ contains=xTodo + +In the first line, the "contained" argument tells Vim that this keyword can +exist only inside another syntax item. The next line has "contains=xTodo". +This indicates that the xTodo syntax element is inside it. The result is that +the comment line as a whole is matched with "xComment" and made blue. The +word TODO inside it is matched by xTodo and highlighted yellow (highlighting +for xTodo was setup for this). + + +RECURSIVE NESTING + +The x language defines code blocks in curly braces. And a code block may +contain other code blocks. This can be defined this way: > + + :syntax region xBlock start=/{/ end=/}/ contains=xBlock + +Suppose you have this text: + + while i < b { ~ + if a { ~ + b = c; ~ + } ~ + } ~ + +First a xBlock starts at the { in the first line. In the second line another +{ is found. Since we are inside a xBlock item, and it contains itself, a +nested xBlock item will start here. Thus the "b = c" line is inside the +second level xBlock region. Then a } is found in the next line, which matches +with the end pattern of the region. This ends the nested xBlock. Because the +} is included in the nested region, it is hidden from the first xBlock region. +Then at the last } the first xBlock region ends. + + +KEEPING THE END + +Consider the following two syntax items: > + + :syntax region xComment start=/%/ end=/$/ contained + :syntax region xPreProc start=/#/ end=/$/ contains=xComment + +You define a comment as anything from % to the end of the line. A +preprocessor directive is anything from # to the end of the line. Because you +can have a comment on a preprocessor line, the preprocessor definition +includes a "contains=xComment" argument. Now look what happens with this +text: + + #define X = Y % Comment text ~ + int foo = 1; ~ + +What you see is that the second line is also highlighted as xPreProc. The +preprocessor directive should end at the end of the line. That is why +you have used "end=/$/". So what is going wrong? + The problem is the contained comment. The comment starts with % and ends +at the end of the line. After the comment ends, the preprocessor syntax +continues. This is after the end of the line has been seen, so the next +line is included as well. + To avoid this problem and to avoid a contained syntax item eating a needed +end of line, use the "keepend" argument. This takes care of +the double end-of-line matching: > + + :syntax region xComment start=/%/ end=/$/ contained + :syntax region xPreProc start=/#/ end=/$/ contains=xComment keepend + + +CONTAINING MANY ITEMS + +You can use the contains argument to specify that everything can be contained. +For example: > + + :syntax region xList start=/\[/ end=/\]/ contains=ALL + +All syntax items will be contained in this one. It also contains itself, but +not at the same position (that would cause an endless loop). + You can specify that some groups are not contained. Thus contain all +groups but the ones that are listed: +> + :syntax region xList start=/\[/ end=/\]/ contains=ALLBUT,xString + +With the "TOP" item you can include all items that don't have a "contained" +argument. "CONTAINED" is used to only include items with a "contained" +argument. See |:syn-contains| for the details. + +============================================================================== +*44.6* Following groups + +The x language has statements in this form: + + if (condition) then ~ + +You want to highlight the three items differently. But "(condition)" and +"then" might also appear in other places, where they get different +highlighting. This is how you can do this: > + + :syntax match xIf /if/ nextgroup=xIfCondition skipwhite + :syntax match xIfCondition /([^)]*)/ contained nextgroup=xThen skipwhite + :syntax match xThen /then/ contained + +The "nextgroup" argument specifies which item can come next. This is not +required. If none of the items that are specified are found, nothing happens. +For example, in this text: + + if not (condition) then ~ + +The "if" is matched by xIf. "not" doesn't match the specified nextgroup +xIfCondition, thus only the "if" is highlighted. + +The "skipwhite" argument tells Vim that white space (spaces and tabs) may +appear in between the items. Similar arguments are "skipnl", which allows a +line break in between the items, and "skipempty", which allows empty lines. +Notice that "skipnl" doesn't skip an empty line, something must match after +the line break. + +============================================================================== +*44.7* Other arguments + +MATCHGROUP + +When you define a region, the entire region is highlighted according to the +group name specified. To highlight the text enclosed in parentheses () with +the group xInside, for example, use the following command: > + + :syntax region xInside start=/(/ end=/)/ + +Suppose, that you want to highlight the parentheses differently. You can do +this with a lot of convoluted region statements, or you can use the +"matchgroup" argument. This tells Vim to highlight the start and end of a +region with a different highlight group (in this case, the xParen group): > + + :syntax region xInside matchgroup=xParen start=/(/ end=/)/ + +The "matchgroup" argument applies to the start or end match that comes after +it. In the previous example both start and end are highlighted with xParen. +To highlight the end with xParenEnd: > + + :syntax region xInside matchgroup=xParen start=/(/ + \ matchgroup=xParenEnd end=/)/ + +A side effect of using "matchgroup" is that contained items will not match in +the start or end of the region. The example for "transparent" uses this. + + +TRANSPARENT + +In a C language file you would like to highlight the () text after a "while" +differently from the () text after a "for". In both of these there can be +nested () items, which should be highlighted in the same way. You must make +sure the () highlighting stops at the matching ). This is one way to do this: +> + :syntax region cWhile matchgroup=cWhile start=/while\s*(/ end=/)/ + \ contains=cCondNest + :syntax region cFor matchgroup=cFor start=/for\s*(/ end=/)/ + \ contains=cCondNest + :syntax region cCondNest start=/(/ end=/)/ contained transparent + +Now you can give cWhile and cFor different highlighting. The cCondNest item +can appear in either of them, but take over the highlighting of the item it is +contained in. The "transparent" argument causes this. + Notice that the "matchgroup" argument has the same group as the item +itself. Why define it then? Well, the side effect of using a matchgroup is +that contained items are not found in the match with the start item then. +This avoids that the cCondNest group matches the ( just after the "while" or +"for". If this would happen, it would span the whole text until the matching +) and the region would continue after it. Now cCondNest only matches after +the match with the start pattern, thus after the first (. + + +OFFSETS + +Suppose you want to define a region for the text between ( and ) after an +"if". But you don't want to include the "if" or the ( and ). You can do this +by specifying offsets for the patterns. Example: > + + :syntax region xCond start=/if\s*(/ms=e+1 end=/)/me=s-1 + +The offset for the start pattern is "ms=e+1". "ms" stands for Match Start. +This defines an offset for the start of the match. Normally the match starts +where the pattern matches. "e+1" means that the match now starts at the end +of the pattern match, and then one character further. + The offset for the end pattern is "me=s-1". "me" stands for Match End. +"s-1" means the start of the pattern match and then one character back. The +result is that in this text: + + if (foo == bar) ~ + +Only the text "foo == bar" will be highlighted as xCond. + +More about offsets here: |:syn-pattern-offset|. + + +ONELINE + +The "oneline" argument indicates that the region does not cross a line +boundary. For example: > + + :syntax region xIfThen start=/if/ end=/then/ oneline + +This defines a region that starts at "if" and ends at "then". But if there is +no "then" after the "if", the region doesn't match. + + Note: + When using "oneline" the region doesn't start if the end pattern + doesn't match in the same line. Without "oneline" Vim does _not_ + check if there is a match for the end pattern. The region starts even + when the end pattern doesn't match in the rest of the file. + + +CONTINUATION LINES AND AVOIDING THEM + +Things now become a little more complex. Let's define a preprocessor line. +This starts with a # in the first column and continues until the end of the +line. A line that ends with \ makes the next line a continuation line. The +way you handle this is to allow the syntax item to contain a continuation +pattern: > + + :syntax region xPreProc start=/^#/ end=/$/ contains=xLineContinue + :syntax match xLineContinue "\\$" contained + +In this case, although xPreProc normally matches a single line, the group +contained in it (namely xLineContinue) lets it go on for more than one line. +For example, it would match both of these lines: + + #define SPAM spam spam spam \ ~ + bacon and spam ~ + +In this case, this is what you want. If it is not what you want, you can call +for the region to be on a single line by adding "excludenl" to the contained +pattern. For example, you want to highlight "end" in xPreProc, but only at +the end of the line. To avoid making the xPreProc continue on the next line, +like xLineContinue does, use "excludenl" like this: > + + :syntax region xPreProc start=/^#/ end=/$/ + \ contains=xLineContinue,xPreProcEnd + :syntax match xPreProcEnd excludenl /end$/ contained + :syntax match xLineContinue "\\$" contained + +"excludenl" must be placed before the pattern. Since "xLineContinue" doesn't +have "excludenl", a match with it will extend xPreProc to the next line as +before. + +============================================================================== +*44.8* Clusters + +One of the things you will notice as you start to write a syntax file is that +you wind up generating a lot of syntax groups. Vim enables you to define a +collection of syntax groups called a cluster. + Suppose you have a language that contains for loops, if statements, while +loops, and functions. Each of them contains the same syntax elements: numbers +and identifiers. You define them like this: > + + :syntax match xFor /^for.*/ contains=xNumber,xIdent + :syntax match xIf /^if.*/ contains=xNumber,xIdent + :syntax match xWhile /^while.*/ contains=xNumber,xIdent + +You have to repeat the same "contains=" every time. If you want to add +another contained item, you have to add it three times. Syntax clusters +simplify these definitions by enabling you to have one cluster stand for +several syntax groups. + To define a cluster for the two items that the three groups contain, use +the following command: > + + :syntax cluster xState contains=xNumber,xIdent + +Clusters are used inside other syntax items just like any syntax group. +Their names start with @. Thus, you can define the three groups like this: > + + :syntax match xFor /^for.*/ contains=@xState + :syntax match xIf /^if.*/ contains=@xState + :syntax match xWhile /^while.*/ contains=@xState + +You can add new group names to this cluster with the "add" argument: > + + :syntax cluster xState add=xString + +You can remove syntax groups from this list as well: > + + :syntax cluster xState remove=xNumber + +============================================================================== +*44.9* Including another syntax file + +The C++ language syntax is a superset of the C language. Because you do not +want to write two syntax files, you can have the C++ syntax file read in the +one for C by using the following command: > + + :runtime! syntax/c.vim + +The ":runtime!" command searches 'runtimepath' for all "syntax/c.vim" files. +This makes the C syntax be defined like for C files. If you have replaced the +c.vim syntax file, or added items with an extra file, these will be loaded as +well. + After loading the C syntax items the specific C++ items can be defined. +For example, add keywords that are not used in C: > + + :syntax keyword cppStatement new delete this friend using + +This works just like in any other syntax file. + +Now consider the Perl language. It consists of two distinct parts: a +documentation section in POD format, and a program written in Perl itself. +The POD section starts with "=head" and ends with "=cut". + You want to define the POD syntax in one file, and use it from the Perl +syntax file. The ":syntax include" command reads in a syntax file and stores +the elements it defined in a syntax cluster. For Perl, the statements are as +follows: > + + :syntax include @Pod <sfile>:p:h/pod.vim + :syntax region perlPOD start=/^=head/ end=/^=cut/ contains=@Pod + +When "=head" is found in a Perl file, the perlPOD region starts. In this +region the @Pod cluster is contained. All the items defined as top-level +items in the pod.vim syntax files will match here. When "=cut" is found, the +region ends and we go back to the items defined in the Perl file. + The ":syntax include" command is clever enough to ignore a ":syntax clear" +command in the included file. And an argument such as "contains=ALL" will +only contain items defined in the included file, not in the file that includes +it. + The "<sfile>:p:h/" part uses the name of the current file (<sfile>), +expands it to a full path (:p) and then takes the head (:h). This results in +the directory name of the file. This causes the pod.vim file in the same +directory to be included. + +============================================================================== +*44.10* Synchronizing + +Compilers have it easy. They start at the beginning of a file and parse it +straight through. Vim does not have it so easy. It must start in the middle, +where the editing is being done. So how does it tell where it is? + The secret is the ":syntax sync" command. This tells Vim how to figure out +where it is. For example, the following command tells Vim to scan backward +for the beginning or end of a C-style comment and begin syntax coloring from +there: > + + :syntax sync ccomment + +You can tune this processing with some arguments. The "minlines" argument +tells Vim the minimum number of lines to look backward, and "maxlines" tells +the editor the maximum number of lines to scan. + For example, the following command tells Vim to look at least 10 lines +before the top of the screen: > + + :syntax sync ccomment minlines=10 maxlines=500 + +If it cannot figure out where it is in that space, it starts looking farther +and farther back until it figures out what to do. But it looks no farther +back than 500 lines. (A large "maxlines" slows down processing. A small one +might cause synchronization to fail.) + To make synchronizing go a bit faster, tell Vim which syntax items can be +skipped. Every match and region that only needs to be used when actually +displaying text can be given the "display" argument. + By default, the comment to be found will be colored as part of the Comment +syntax group. If you want to color things another way, you can specify a +different syntax group: > + + :syntax sync ccomment xAltComment + +If your programming language does not have C-style comments in it, you can try +another method of synchronization. The simplest way is to tell Vim to space +back a number of lines and try to figure out things from there. The following +command tells Vim to go back 150 lines and start parsing from there: > + + :syntax sync minlines=150 + +A large "minlines" value can make Vim slower, especially when scrolling +backwards in the file. + Finally, you can specify a syntax group to look for by using this command: +> + :syntax sync match {sync-group-name} + \ grouphere {group-name} {pattern} + +This tells Vim that when it sees {pattern} the syntax group named {group-name} +begins just after the pattern given. The {sync-group-name} is used to give a +name to this synchronization specification. For example, the sh scripting +language begins an if statement with "if" and ends it with "fi": + + if [ --f file.txt ] ; then ~ + echo "File exists" ~ + fi ~ + +To define a "grouphere" directive for this syntax, you use the following +command: > + + :syntax sync match shIfSync grouphere shIf "\<if\>" + +The "groupthere" argument tells Vim that the pattern ends a group. For +example, the end of the if/fi group is as follows: > + + :syntax sync match shIfSync groupthere NONE "\<fi\>" + +In this example, the NONE tells Vim that you are not in any special syntax +region. In particular, you are not inside an if block. + +You also can define matches and regions that are with no "grouphere" or +"groupthere" arguments. These groups are for syntax groups skipped during +synchronization. For example, the following skips over anything inside {}, +even if it would normally match another synchronization method: > + + :syntax sync match xSpecial /{.*}/ + +More about synchronizing in the reference manual: |:syn-sync|. + +============================================================================== +*44.11* Installing a syntax file + +When your new syntax file is ready to be used, drop it in a "syntax" directory +in 'runtimepath'. For Unix that would be "~/.vim/syntax". + The name of the syntax file must be equal to the file type, with ".vim" +added. Thus for the x language, the full path of the file would be: + + ~/.vim/syntax/x.vim ~ + +You must also make the file type be recognized. See |43.2|. + +If your file works well, you might want to make it available to other Vim +users. First read the next section to make sure your file works well for +others. Then e-mail it to the Vim maintainer: <maintainer@vim.org>. Also +explain how the filetype can be detected. With a bit of luck your file will +be included in the next Vim version! + + +ADDING TO AN EXISTING SYNTAX FILE + +We were assuming you were adding a completely new syntax file. When an existing +syntax file works, but is missing some items, you can add items in a separate +file. That avoids changing the distributed syntax file, which will be lost +when installing a new version of Vim. + Write syntax commands in your file, possibly using group names from the +existing syntax. For example, to add new variable types to the C syntax file: +> + :syntax keyword cType off_t uint + +Write the file with the same name as the original syntax file. In this case +"c.vim". Place it in a directory near the end of 'runtimepath'. This makes +it loaded after the original syntax file. For Unix this would be: + + ~/.vim/after/syntax/c.vim ~ + +============================================================================== +*44.12* Portable syntax file layout + +Wouldn't it be nice if all Vim users exchange syntax files? To make this +possible, the syntax file must follow a few guidelines. + +Start with a header that explains what the syntax file is for, who maintains +it and when it was last updated. Don't include too much information about +changes history, not many people will read it. Example: > + + " Vim syntax file + " Language: C + " Maintainer: Bram Moolenaar <Bram@vim.org> + " Last Change: 2001 Jun 18 + " Remark: Included by the C++ syntax. + +Use the same layout as the other syntax files. Using an existing syntax file +as an example will save you a lot of time. + +Choose a good, descriptive name for your syntax file. Use lowercase letters +and digits. Don't make it too long, it is used in many places: The name of +the syntax file "name.vim", 'filetype', b:current_syntax the start of each +syntax group (nameType, nameStatement, nameString, etc). + +Start with a check for "b:current_syntax". If it is defined, some other +syntax file, earlier in 'runtimepath' was already loaded. To be compatible +with Vim 5.8 use: > + + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + +Set "b:current_syntax" to the name of the syntax at the end. Don't forget +that included files do this too, you might have to reset "b:current_syntax" if +you include two files. + +If you want your syntax file to work with Vim 5.x, add a check for v:version. +See yacc.vim for an example. + +Do not include anything that is a user preference. Don't set 'tabstop', +'expandtab', etc. These belong in a filetype plugin. + +Do not include mappings or abbreviations. Only include setting 'iskeyword' if +it is really necessary for recognizing keywords. + +Avoid using specific colors. Link to the standard highlight groups whenever +possible. Don't forget that some people use a different background color, or +have only eight colors available. +For backwards compatibility with Vim 5.8 this construction is used: > + + if version >= 508 || !exists("did_c_syn_inits") + if version < 508 + let did_c_syn_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + HiLink nameString String + HiLink nameNumber Number + ... etc ... + + delcommand HiLink + endif + +Add the "display" argument to items that are not used when syncing, to speed +up scrolling backwards and CTRL-L. + +============================================================================== + +Next chapter: |usr_45.txt| Select your language + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_45.txt b/en/usr_45.txt new file mode 100644 index 000000000..45e38317b --- /dev/null +++ b/en/usr_45.txt @@ -0,0 +1,419 @@ +*usr_45.txt* For Vim version 6.3. Last change: 2002 Oct 08 + + VIM USER MANUAL - by Bram Moolenaar + + Select your language + + +The messages in Vim can be given in several languages. This chapter explains +how to change which one is used. Also, the different ways to work with files +in various languages is explained. + +|45.1| Language for Messages +|45.2| Language for Menus +|45.3| Using another encoding +|45.4| Editing files with a different encoding +|45.5| Entering language text + + Next chapter: |usr_90.txt| Installing Vim + Previous chapter: |usr_44.txt| Your own syntax highlighted +Table of contents: |usr_toc.txt| + +============================================================================== +*45.1* Language for Messages + +When you start Vim, it checks the environment to find out what language you +are using. Mostly this should work fine, and you get the messages in your +language (if they are available). To see what the current language is, use +this command: > + + :language + +If it replies with "C", this means the default is being used, which is +English. + + Note: + Using different languages only works when Vim was compiled to handle + it. To find out if it works, use the ":version" command and check the + output for "+gettext" and "+multi_lang". If they are there, you are + OK. If you see "-gettext" or "-multi_lang" you will have to find + another Vim. + +What if you would like your messages in a different language? There are +several ways. Which one you should use depends on the capabilities of your +system. + The first way is to set the environment to the desired language before +starting Vim. Example for Unix: > + + env LANG=de_DE.ISO_8859-1 vim + +This only works if the language is available on your system. The advantage is +that all the GUI messages and things in libraries will use the right language +as well. A disadvantage is that you must do this before starting Vim. If you +want to change language while Vim is running, you can use the second method: > + + :language fr_FR.ISO_8859-1 + +This way you can try out several names for your language. You will get an +error message when it's not supported on your system. You don't get an error +when translated messages are not available. Vim will silently fall back to +using English. + To find out which languages are supported on your system, find the +directory where they are listed. On my system it is "/usr/share/locale". On +some systems it's in "/usr/lib/locale". The manual page for "setlocale" +should give you a hint where it is found on your system. + Be careful to type the name exactly as it should be. Upper and lowercase +matter, and the '-' and '_' characters are easily confused. + +You can also set the language separately for messages, edited text and the +time format. See |:language|. + + +DO-IT-YOURSELF MESSAGE TRANSLATION + +If translated messages are not available for your language, you could write +them yourself. To do this, get the source code for Vim and the GNU gettext +package. After unpacking the sources, instructions can be found in the +directory src/po/README.txt. + It's not too difficult to do the translation. You don't need to be a +programmer. You must know both English and the language you are translating +to, of course. + When you are satisfied with the translation, consider making it available +to others. Upload it at vim-online (http://vim.sf.net) or e-mail it to +the Vim maintainer <maintainer@vim.org>. Or both. + +============================================================================== +*45.2* Language for Menus + +The default menus are in English. To be able to use your local language, they +must be translated. Normally this is automatically done for you if the +environment is set for your language, just like with messages. You don't need +to do anything extra for this. But it only works if translations for the +language are available. + Suppose you are in Germany, with the language set to German, but prefer to +use "File" instead of "Datei". You can switch back to using the English menus +this way: > + + :set langmenu=none + +It is also possible to specify a language: > + + :set langmenu=nl_NL.ISO_8859-1 + +Like above, differences between "-" and "_" matter. However, upper/lowercase +differences are ignored here. + The 'langmenu' option must be set before the menus are loaded. Once the +menus have been defined changing 'langmenu' has no direct effect. Therefore, +put the command to set 'langmenu' in your vimrc file. + If you really want to switch menu language while running Vim, you can do it +this way: > + + :source $VIMRUNTIME/delmenu.vim + :set langmenu=de_DE.ISO_8859-1 + :source $VIMRUNTIME/menu.vim + +There is one drawback: All menus that you defined yourself will be gone. You +will need to redefine them as well. + + +DO-IT-YOURSELF MENU TRANSLATION + +To see which menu translations are available, look in this directory: + + $VIMRUNTIME/lang ~ + +The files are called menu_{language}.vim. If you don't see the language you +want to use, you can do your own translations. The simplest way to do this is +by copying one of the existing language files, and change it. + First find out the name of your language with the ":language" command. Use +this name, but with all letters made lowercase. Then copy the file to your +own runtime directory, as found early in 'runtimepath'. For example, for Unix +you would do: > + + :!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim + +You will find hints for the translation in "$VIMRUNTIME/lang/README.txt". + +============================================================================== +*45.3* Using another encoding + +Vim guesses that the files you are going to edit are encoded for your +language. For many European languages this is "latin1". Then each byte is +one character. That means there are 256 different characters possible. For +Asian languages this is not sufficient. These mostly use a double-byte +encoding, providing for over ten thousand possible characters. This still +isn't enough when a text is to contain several different languages. This is +where Unicode comes in. It was designed to include all characters used in +commonly used languages. This is the "Super encoding that replaces all +others". But it isn't used that much yet. + Fortunately, Vim supports these three kinds of encodings. And, with some +restrictions, you can use them even when your environment uses another +language than the text. + Nevertheless, when you only edit files that are in the encoding of your +language, the default should work fine and you don't need to do anything. The +following is only relevant when you want to edit different languages. + + Note: + Using different encodings only works when Vim was compiled to handle + it. To find out if it works, use the ":version" command and check the + output for "+multi_byte". If it's there, you are OK. If you see + "-multi_byte" you will have to find another Vim. + + +USING UNICODE IN THE GUI + +The nice thing about Unicode is that other encodings can be converted to it +and back without losing information. When you make Vim use Unicode +internally, you will be able to edit files in any encoding. + Unfortunately, the number of systems supporting Unicode is still limited. +Thus it's unlikely that your language uses it. You need to tell Vim you want +to use Unicode, and how to handle interfacing with the rest of the system. + Let's start with the GUI version of Vim, which is able to display Unicode +characters. This should work: > + + :set encoding=utf-8 + :set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 + +The 'encoding' option tells Vim the encoding of the characters that you use. +This applies to the text in buffers (files you are editing), registers, Vim +script files, etc. You can regard 'encoding' as the setting for the internals +of Vim. + This example assumes you have this font on your system. The name in the +example is for the X Window System. This font is in a package that is used to +enhance xterm with Unicode support. If you don't have this font, you might +find it here: + + http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~ + +For MS-Windows, some fonts have a limited number of Unicode characters. Try +using the "Courier New" font. You can use the Edit/Select Font... menu to +select and try out the fonts available. Only fixed-width fonts can be used +though. Example: > + + :set guifont=courier_new:h12 + +If it doesn't work well, try getting a fontpack. If Microsoft didn't move it, +you can find it here: + + http://www.microsoft.com/typography/fontpack/default.htm ~ + +Now you have told Vim to use Unicode internally and display text with a +Unicode font. Typed characters still arrive in the encoding of your original +language. This requires converting them to Unicode. Tell Vim the language +from which to convert with the 'termencoding' option. You can do it like +this: > + + :let &termencoding = &encoding + :set encoding=utf-8 + +This assigns the old value of 'encoding' to 'termencoding' before setting +'encoding' to utf-8. You will have to try out if this really works for your +setup. It should work especially well when using an input method for an Asian +language, and you want to edit Unicode text. + + +USING UNICODE IN A UNICODE TERMINAL + +There are terminals that support Unicode directly. The standard xterm that +comes with XFree86 is one of them. Let's use that as an example. + First of all, the xterm must have been compiled with Unicode support. See +|UTF8-xterm| how to check that and how to compile it when needed. + Start the xterm with the "-u8" argument. You might also need so specify a +font. Example: > + + xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 + +Now you can run Vim inside this terminal. Set 'encoding' to "utf-8" as +before. That's all. + + +USING UNICODE IN AN ORDINARY TERMINAL + +Suppose you want to work with Unicode files, but don't have a terminal with +Unicode support. You can do this with Vim, although characters that are not +supported by the terminal will not be displayed. The layout of the text +will be preserved. > + + :let &termencoding = &encoding + :set encoding=utf-8 + +This is the same as what was used for the GUI. But it works differently: Vim +will convert the displayed text before sending it to the terminal. That +avoids that the display is messed up with strange characters. + For this to work the conversion between 'termencoding' and 'encoding' must +be possible. Vim will convert from latin1 to Unicode, thus that always works. +For other conversions the |+iconv| feature is required. + Try editing a file with Unicode characters in it. You will notice that Vim +will put a question mark (or underscore or some other character) in places +where a character should be that the terminal can't display. Move the cursor +to a question mark and use this command: > + + ga + +Vim will display a line with the code of the character. This gives you a hint +about what character it is. You can look it up in a Unicode table. You could +actually view a file that way, if you have lots of time at hand. + + Note: + Since 'encoding' is used for all text inside Vim, changing it makes + all non-ASCII text invalid. You will notice this when using registers + and the 'viminfo' file (e.g., a remembered search pattern). It's + recommended to set 'encoding' in your vimrc file, and leave it alone. + +============================================================================== +*45.4* Editing files with a different encoding + +Suppose you have setup Vim to use Unicode, and you want to edit a file that is +in 16-bit Unicode. Sounds simple, right? Well, Vim actually uses utf-8 +encoding internally, thus the 16-bit encoding must be converted. Thus there +is a difference between the character set (Unicode) and the encoding (utf-8 or +16-bit). + Vim will try to detect what kind of file you are editing. It uses the +encoding names in the 'fileencodings' option. When using Unicode, the default +value is: "ucs-bom,utf-8,latin1". This means that Vim checks the file to see +if it's one of these encodings: + + ucs-bom File must start with a Byte Order Mark (BOM). This + allows detection of 16-bit, 32-bit and utf-8 Unicode + encodings. + utf-8 utf-8 Unicode. This is rejected when a sequence of + bytes is illegal in utf-8. + latin1 The good old 8-bit encoding. Always works. + +When you start editing that 16-bit Unicode file, and it has a BOM, Vim will +detect this and convert the file to utf-8 when reading it. The 'fileencoding' +option (without s at the end) is set to the detected value. In this case it +is "ucs-2le". That means it's Unicode, two bytes and little-endian. This +file format is common on MS-Windows (e.g., for registry files). + When writing the file, Vim will compare 'fileencoding' with 'encoding'. If +they are different, the text will be converted. + An empty value for 'fileencoding' means that no conversion is to be done. +Thus the text is assumed to be encoded with 'encoding'. + +If the default 'fileencodings' value is not good for you, set it to the +encodings you want Vim to try. Only when a value is found to be invalid will +the next one be used. Putting "latin1" first doesn't work, because it is +never illegal. An example, to fall back to Japanese when the file doesn't +have a BOM and isn't utf-8: > + + :set fileencodings=ucs-bom,utf-8,sjis + +See |encoding-values| for suggested values. Other values may work as well. +This depends on the conversion available. + + +FORCING AN ENCODING + +If the automatic detection doesn't work you must tell Vim what encoding the +file is. Example: > + + :edit ++enc=koi8-r russian.txt + +The "++enc" part specifies the name of the encoding to be used for this file +only. Vim will convert the file from the specified encoding, Russian in this +example, to 'encoding'. 'fileencoding' will also be set to the specified +encoding, so that the reverse conversion can be done when writing the file. + The same argument can be used when writing the file. This way you can +actually use Vim to convert a file. Example: > + + :write ++enc=utf-8 russian.txt +< + Note: + Conversion may result in lost characters. Conversion from an encoding + to Unicode and back is mostly free of this problem, unless there are + illegal characters. Conversion from Unicode to other encodings often + loses information when there was more than one language in the file. + +============================================================================== +*45.5* Entering language text + +Computer keyboards don't have much more than a hundred keys. Some languages +have thousands of characters, Unicode has ten thousands. So how do you type +these characters? + First of all, when you don't use too many of the special characters, you +can use digraphs. This was already explained in |24.9|. + When you use a language that uses many more characters than keys on your +keyboard, you will want to use an Input Method (IM). This requires learning +the translation from typed keys to resulting character. When you need an IM +you probably already have one on your system. It should work with Vim like +with other programs. For details see |mbyte-XIM| for the X Window system and +|mbyte-IME| for MS-Windows. + + +KEYMAPS + +For some languages the character set is different from latin, but uses a +similar number of characters. It's possible to map keys to characters. Vim +uses keymaps for this. + Suppose you want to type hebrew. You can load the keymap like this: > + + :set keymap=hebrew + +Vim will try to find a keymap file for you. This depends on the value of +'encoding'. If no matching file was found, you will get an error message. + +Now you can type Hebrew in Insert mode. In Normal mode, and when typing a ":" +command, Vim automatically switches to English. You can use this command to +switch between Hebrew and English: > + + CTRL-^ + +This only works in Insert mode and Command-line mode. In Normal mode it does +something completely different (jumps to alternate file). + The usage of the keymap is indicated in the mode message, if you have the +'showmode' option set. In the GUI Vim will indicate the usage of keymaps with +a different cursor color. + You can also change the usage of the keymap with the 'iminsert' and +'imsearch' options. + +To see the list of mappings, use this command: > + + :lmap + +To find out which keymap files are available, in the GUI you can use the +Edit/Keymap menu. Otherwise you can use this command: > + + :echo globpath(&rtp, "keymap/*.vim") + + +DO-IT-YOURSELF KEYMAPS + +You can create your own keymap file. It's not very difficult. Start with +a keymap file that is similar to the language you want to use. Copy it to the +"keymap" directory in your runtime directory. For example, for Unix, you +would use the directory "~/.vim/keymap". + The name of the keymap file must look like this: + + keymap/{name}.vim ~ +or + keymap/{name}_{encoding}.vim ~ + +{name} is the name of the keymap. Chose a name that is obvious, but different +from existing keymaps (unless you want to replace an existing keymap file). +{name} cannot contain an underscore. Optionally, add the encoding used after +an underscore. Examples: + + keymap/hebrew.vim ~ + keymap/hebrew_utf-8.vim ~ + +The contents of the file should be self-explanatory. Look at a few of the +keymaps that are distributed with Vim. For the details, see |mbyte-keymap|. + + +LAST RESORT + +If all other methods fail, you can enter any character with CTRL-V: + + encoding type range ~ + 8-bit CTRL-V 123 decimal 0-255 + 8-bit CTRL-V x a1 hexadecimal 00-ff + 16-bit CTRL-V u 013b hexadecimal 0000-ffff + 31-bit CTRL-V U 001303a4 hexadecimal 00000000-7fffffff + +Don't type the spaces. See |i_CTRL-V_digit| for the details. + +============================================================================== + +Next chapter: |usr_90.txt| Installing Vim + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_90.txt b/en/usr_90.txt new file mode 100644 index 000000000..772f739a1 --- /dev/null +++ b/en/usr_90.txt @@ -0,0 +1,498 @@ +*usr_90.txt* For Vim version 6.3. Last change: 2004 Mar 21 + + VIM USER MANUAL - by Bram Moolenaar + + Installing Vim + + *install* +Before you can use Vim you have to install it. Depending on your system it's +simple or easy. This chapter gives a few hints and also explains how +upgrading to a new version is done. + +|90.1| Unix +|90.2| MS-Windows +|90.3| Upgrading +|90.4| Common installation issues +|90.5| Uninstalling Vim + + Previous chapter: |usr_45.txt| Select your language +Table of contents: |usr_toc.txt| + +============================================================================== +*90.1* Unix + +First you have to decide if you are going to install Vim system-wide or for a +single user. The installation is almost the same, but the directory where Vim +is installed in differs. + For a system-wide installation the base directory "/usr/local" is often +used. But this may be different for your system. Try finding out where other +packages are installed. + When installing for a single user, you can use your home directory as the +base. The files will be placed in subdirectories like "bin" and "shared/vim". + + +FROM A PACKAGE + +You can get precompiled binaries for many different UNIX systems. There is a +long list with links on this page: + + http://www.vim.org/binaries.html ~ + +Volunteers maintain the binaries, so they are often out of date. It is a +good idea to compile your own UNIX version from the source. Also, creating +the editor from the source allows you to control which features are compiled. +This does require a compiler though. + +If you have a Linux distribution, the "vi" program is probably a minimal +version of Vim. It doesn't do syntax highlighting, for example. Try finding +another Vim package in your distribution, or search on the web site. + + +FROM SOURCES + +To compile and install Vim, you will need the following: + + - A C compiler (GCC preferred) + - The GZIP program (you can get it from www.gnu.org) + - The Vim source and runtime archives + +To get the Vim archives, look in this file for a mirror near you, this should +provide the fastest download: + + ftp://ftp.vim.org/pub/vim/MIRRORS ~ + +Or use the home site ftp.vim.org, if you think it's fast enough. Go to the +"unix" directory and you'll find a list of files there. The version number is +embedded in the file name. You will want to get the most recent version. + You can get the files for Unix in two ways: One big archive that contains +everything, or four smaller ones that each fit on a floppy disk. For version +6.1 the single big one is called: + + vim-6.1.tar.bz2 ~ + +You need the bzip2 program to uncompress it. If you don't have it, get the +four smaller files, which can be uncompressed with gzip. For Vim 6.1 they are +called: + + vim-6.1-src1.tar.gz ~ + vim-6.1-src2.tar.gz ~ + vim-6.1-rt1.tar.gz ~ + vim-6.1-rt2.tar.gz ~ + + +COMPILING + +First create a top directory to work in, for example: > + + mkdir ~/vim + cd ~/vim + +Then unpack the archives there. If you have the one big archive, you unpack +it like this: > + + bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf - + +Change "path" to where you have downloaded the file. > + + gzip -d -c path/vim-6.1-src1.tar.gz | tar xf - + gzip -d -c path/vim-6.1-src2.tar.gz | tar xf - + gzip -d -c path/vim-6.1-rt1.tar.gz | tar xf - + gzip -d -c path/vim-6.1-rt2.tar.gz | tar xf - + +If you are satisfied with getting the default features, and your environment +is setup properly, you should be able to compile Vim with just this: > + + cd vim61/src + make + +The make program will run configure and compile everything. Further on we +will explain how to compile with different features. + If there are errors while compiling, carefully look at the error messages. +There should be a hint about what went wrong. Hopefully you will be able to +correct it. You might have to disable some features to make Vim compile. +Look in the Makefile for specific hints for your system. + + +TESTING + +Now you can check if compiling worked OK: > + + make test + +This will run a sequence of test scripts to verify that Vim works as expected. +Vim will be started many times and all kinds of text and messages flash by. +If it is alright you will finally see: + + test results: ~ + ALL DONE ~ + +If there are one or two messages about failed tests, Vim might still work, but +not perfectly. If you see a lot of error messages or Vim doesn't finish until +the end, there must be something wrong. Either try to find out yourself, or +find someone who can solve it. You could look in the |maillist-archive| for a +solution. If everything else fails, you could ask in the vim |maillist| if +someone can help you. + + +INSTALLING + *install-home* +If you want to install in your home directory, edit the Makefile and search +for a line: + + #prefix = $(HOME) ~ + +Remove the # at the start of the line. + When installing for the whole system, Vim has most likely already selected +a good installation directory for you. You can also specify one, see below. +You need to become root for the following. + +To install Vim do: > + + make install + +That should move all the relevant files to the right place. Now you can try +running vim to verify that it works. Use two simple tests to check if Vim can +find its runtime files: > + + :help + :syntax enable + +If this doesn't work, use this command to check where Vim is looking for the +runtime files: > + + :echo $VIMRUNTIME + +You can also start Vim with the "-V" argument to see what happens during +startup: > + + vim -V + +Don't forget that the user manual assumes you Vim in a certain way. After +installing Vim, follow the instructions at |not-compatible| to make Vim work +as assumed in this manual. + + +SELECTING FEATURES + +Vim has many ways to select features. One of the simple ways is to edit the +Makefile. There are many directions and examples. Often you can enable or +disable a feature by uncommenting a line. + An alternative is to run "configure" separately. This allows you to +specify configuration options manually. The disadvantage is that you have to +figure out what exactly to type. + Some of the most interesting configure arguments follow. These can also be +enabled from the Makefile. + + --prefix={directory} Top directory where to install Vim. + + --with-features=tiny Compile with many features disabled. + --with-features=small Compile with some features disabled. + --with-features=big Compile with more features enabled. + --with-features=huge Compile with most features enabled. + See |+feature-list| for which feature + is enabled in which case. + + --enable-perlinterp Enable the Perl interface. There are + similar arguments for ruby, python and + tcl. + + --disable-gui Do not compile the GUI interface. + --without-x Do not compile X-windows features. + When both of these are used, Vim will + not connect to the X server, which + makes startup faster. + +To see the whole list use: > + + ./configure --help + +You can find a bit of explanation for each feature, and links for more +information here: |feature-list|. + For the adventurous, edit the file "feature.h". You can also change the +source code yourself! + +============================================================================== +*90.2* MS-Windows + +There are two ways to install the Vim program for Microsoft Windows. You can +uncompress several archives, or use a self-installing big archive. Most users +with fairly recent computers will prefer the second method. For the first +one, you will need: + + - An archive with binaries for Vim. + - The Vim runtime archive. + - A program to unpack the zip files. + +To get the Vim archives, look in this file for a mirror near you, this should +provide the fastest download: + + ftp://ftp.vim.org/pub/vim/MIRRORS ~ + +Or use the home site ftp.vim.org, if you think it's fast enough. Go to the +"pc" directory and you'll find a list of files there. The version number is +embedded in the file name. You will want to get the most recent version. +We will use "61" here, which is version 6.1. + + gvim61.exe The self-installing archive. + +This is all you need for the second method. Just launch the executable, and +follow the prompts. + +For the first method you must chose one of the binary archives. These are +available: + + gvim61.zip The normal MS-Windows GUI version. + gvim61ole.zip The MS-Windows GUI version with OLE support. + Uses more memory, supports interfacing with + other OLE applications. + vim61w32.zip 32 bit MS-Windows console version. For use in + a Win NT/2000/XP console. Does not work well + on Win 95/98. + vim61d32.zip 32 bit MS-DOS version. For use in the + Win 95/98 console window. + vim61d16.zip 16 bit MS-DOS version. Only for old systems. + Does not support long filenames. + +You only need one of them. Although you could install both a GUI and a +console version. You always need to get the archive with runtime files. + + vim61rt.zip The runtime files. + +Use your un-zip program to unpack the files. For example, using the "unzip" +program: > + + cd c:\ + unzip path\gvim61.zip + unzip path\vim61rt.zip + +This will unpack the files in the directory "c:\vim\vim61". If you already +have a "vim" directory somewhere, you will want to move to the directory just +above it. + Now change to the "vim\vim61" directory and run the install program: > + + install + +Carefully look through the messages and select the options you want to use. +If you finally select "do it" the install program will carry out the actions +you selected. + The install program doesn't move the runtime files. They remain where you +unpacked them. + +In case you are not satisfied with the features included in the supplied +binaries, you could try compiling Vim yourself. Get the source archive from +the same location as where the binaries are. You need a compiler for which a +makefile exists. Microsoft Visual C works, but is expensive. The Free +Borland command-line compiler 5.5 can be used, as well as the free MingW and +Cygwin compilers. Check the file src/INSTALLpc.txt for hints. + +============================================================================== +*90.3* Upgrading + +If you are running one version of Vim and want to install another, here is +what to do. + + +UNIX + +When you type "make install" the runtime files will be copied to a directory +which is specific for this version. Thus they will not overwrite a previous +version. This makes it possible to use two or more versions next to +each other. + The executable "vim" will overwrite an older version. If you don't care +about keeping the old version, running "make install" will work fine. You can +delete the old runtime files manually. Just delete the directory with the +version number in it and all files below it. Example: > + + rm -rf /usr/local/share/vim/vim58 + +There are normally no changed files below this directory. If you did change +the "filetype.vim" file, for example, you better merge the changes into the +new version before deleting it. + +If you are careful and want to try out the new version for a while before +switching to it, install the new version under another name. You need to +specify a configure argument. For example: > + + ./configure --with-vim-name=vim6 + +Before running "make install", you could use "make -n install" to check that +no valuable existing files are overwritten. + When you finally decide to switch to the new version, all you need to do is +to rename the binary to "vim". For example: > + + mv /usr/local/bin/vim6 /usr/local/bin/vim + + +MS-WINDOWS + +Upgrading is mostly equal to installing a new version. Just unpack the files +in the same place as the previous version. A new directory will be created, +e.g., "vim61", for the files of the new version. Your runtime files, vimrc +file, viminfo, etc. will be left alone. + If you want to run the new version next to the old one, you will have to do +some handwork. Don't run the install program, it will overwrite a few files +of the old version. Execute the new binaries by specifying the full path. +The program should be able to automatically find the runtime files for the +right version. However, this won't work if you set the $VIMRUNTIME variable +somewhere. + If you are satisfied with the upgrade, you can delete the files of the +previous version. See |90.5|. + +============================================================================== +*90.4* Common installation issues + +This section describes some of the common problems that occur when installing +Vim and suggests some solutions. It also contains answers to many +installation questions. + + +Q: I Do Not Have Root Privileges. How Do I Install Vim? (Unix) + +Use the following configuration command to install Vim in a directory called +$HOME/vim: > + + ./configure --prefix=$HOME + +This gives you a personal copy of Vim. You need to put $HOME/bin in your +path to execute the editor. Also see |install-home|. + + +Q: The Colors Are Not Right on My Screen. (Unix) + +Check your terminal settings by using the following command in a shell: > + + echo $TERM + +If the terminal type listed is not correct, fix it. For more hints, see +|06.2|. Another solution is to always use the GUI version of Vim, called +gvim. This avoids the need for a correct terminal setup. + + +Q: My Backspace And Delete Keys Don't Work Right + +The definition of what key sends what code is very unclear for backspace <BS> +and Delete <Del> keys. First of all, check your $TERM setting. If there is +nothing wrong with it, try this: > + + :set t_kb=^V<BS> + :set t_kD=^V<Del> + +In the first line you need to press CTRL-V and then hit the backspace key. +In the second line you need to press CTRL-V and then hit the Delete key. +You can put these lines in your vimrc file, see |05.1|. A disadvantage is +that it won't work when you use another terminal some day. Look here for +alternate solutions: |:fixdel|. + + +Q: I Am Using RedHat Linux. Can I Use the Vim That Comes with the System? + +By default RedHat installs a minimal version of Vim. Check your RPM packages +for something named "Vim-enhanced-version.rpm" and install that. + + +Q: How Do I Turn Syntax Coloring On? How do I make plugins work? + +Use the example vimrc script. You can find an explanation on how to use it +here: |not-compatible|. + +See chapter 6 for information about syntax highlighting: |usr_06.txt|. + + +Q: What Is a Good vimrc File to Use? + +See the www.vim.org Web site for several good examples. + + +Q: Where Do I Find a Good Vim Plugin? + +See the Vim-online site: http://vim.sf.net. Many users have uploaded useful +Vim scripts and plugins there. + + +Q: Where Do I Find More Tips? + +See the Vim-online site: http://vim.sf.net. There is an archive with hints +from Vim users. You might also want to search in the |maillist-archive|. + +============================================================================== +*90.5* Uninstalling Vim + +In the unlikely event you want to uninstall Vim completely, this is how you do +it. + + +UNIX + +When you installed Vim as a package, check your package manager to find out +how to remove the package again. + If you installed Vim from sources you can use this command: > + + make uninstall + +However, if you have deleted the original files or you used an archive that +someone supplied, you can't do this. Do delete the files manually, here is an +example for when "/usr/local" was used as the root: > + + rm -rf /usr/local/share/vim/vim61 + rm /usr/local/bin/eview + rm /usr/local/bin/evim + rm /usr/local/bin/ex + rm /usr/local/bin/gview + rm /usr/local/bin/gvim + rm /usr/local/bin/gvim + rm /usr/local/bin/gvimdiff + rm /usr/local/bin/rgview + rm /usr/local/bin/rgvim + rm /usr/local/bin/rview + rm /usr/local/bin/rvim + rm /usr/local/bin/rvim + rm /usr/local/bin/view + rm /usr/local/bin/vim + rm /usr/local/bin/vimdiff + rm /usr/local/bin/vimtutor + rm /usr/local/bin/xxd + rm /usr/local/man/man1/eview.1 + rm /usr/local/man/man1/evim.1 + rm /usr/local/man/man1/ex.1 + rm /usr/local/man/man1/gview.1 + rm /usr/local/man/man1/gvim.1 + rm /usr/local/man/man1/gvimdiff.1 + rm /usr/local/man/man1/rgview.1 + rm /usr/local/man/man1/rgvim.1 + rm /usr/local/man/man1/rview.1 + rm /usr/local/man/man1/rvim.1 + rm /usr/local/man/man1/view.1 + rm /usr/local/man/man1/vim.1 + rm /usr/local/man/man1/vimdiff.1 + rm /usr/local/man/man1/vimtutor.1 + rm /usr/local/man/man1/xxd.1 + + +MS-WINDOWS + +If you installed Vim with the self-installing archive you can run +the "uninstall-gui" program located in the same directory as the other Vim +programs, e.g. "c:\vim\vim61". You can also launch it from the Start menu if +installed the Vim entries there. This will remove most of the files, menu +entries and desktop shortcuts. Some files may remain however, as they need a +Windows restart before being deleted. + You will be given the option to remove the whole "vim" directory. It +probably contains your vimrc file and other runtime files that you created, so +be careful. + +Else, if you installed Vim with the zip archives, the preferred way is to use +the "uninstal" program (note the missing l at the end). You can find it in +the same directory as the "install" program, e.g., "c:\vim\vim61". This +should also work from the usual "install/remove software" page. + However, this only removes the registry entries for Vim. You have to +delete the files yourself. Simply select the directory "vim\vim61" and delete +it recursively. There should be no files there that you changed, but you +might want to check that first. + The "vim" directory probably contains your vimrc file and other runtime +files that you created. You might want to keep that. + +============================================================================== + +Table of contents: |usr_toc.txt| + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_toc.txt b/en/usr_toc.txt new file mode 100644 index 000000000..ec98aa2c0 --- /dev/null +++ b/en/usr_toc.txt @@ -0,0 +1,340 @@ +*usr_toc.txt* For Vim version 6.3. Last change: 2003 Aug 18 + + VIM USER MANUAL - by Bram Moolenaar + + Table Of Contents *user-manual* + +============================================================================== +Overview ~ + +Getting Started +|usr_01.txt| About the manuals +|usr_02.txt| The first steps in Vim +|usr_03.txt| Moving around +|usr_04.txt| Making small changes +|usr_05.txt| Set your settings +|usr_06.txt| Using syntax highlighting +|usr_07.txt| Editing more than one file +|usr_08.txt| Splitting windows +|usr_09.txt| Using the GUI +|usr_10.txt| Making big changes +|usr_11.txt| Recovering from a crash +|usr_12.txt| Clever tricks + +Editing Effectively +|usr_20.txt| Typing command-line commands quickly +|usr_21.txt| Go away and come back +|usr_22.txt| Finding the file to edit +|usr_23.txt| Editing other files +|usr_24.txt| Inserting quickly +|usr_25.txt| Editing formatted text +|usr_26.txt| Repeating +|usr_27.txt| Search commands and patterns +|usr_28.txt| Folding +|usr_29.txt| Moving through programs +|usr_30.txt| Editing programs +|usr_31.txt| Exploiting the GUI + +Tuning Vim +|usr_40.txt| Make new commands +|usr_41.txt| Write a Vim script +|usr_42.txt| Add new menus +|usr_43.txt| Using filetypes +|usr_44.txt| Your own syntax highlighted +|usr_45.txt| Select your language + +Making Vim Run +|usr_90.txt| Installing Vim + + +The user manual is available as a single, ready to print HTML and PDF file +here: + http://vimdoc.sf.net + +============================================================================== +Getting Started ~ + +Read this from start to end to learn the essential commands. + +|usr_01.txt| About the manuals + |01.1| Two manuals + |01.2| Vim installed + |01.3| Using the Vim tutor + |01.4| Copyright + +|usr_02.txt| The first steps in Vim + |02.1| Running Vim for the First Time + |02.2| Inserting text + |02.3| Moving around + |02.4| Deleting characters + |02.5| Undo and Redo + |02.6| Other editing commands + |02.7| Getting out + |02.8| Finding help + +|usr_03.txt| Moving around + |03.1| Word movement + |03.2| Moving to the start or end of a line + |03.3| Moving to a character + |03.4| Matching a paren + |03.5| Moving to a specific line + |03.6| Telling where you are + |03.7| Scrolling around + |03.8| Simple searches + |03.9| Simple search patterns + |03.10| Using marks + +|usr_04.txt| Making small changes + |04.1| Operators and motions + |04.2| Changing text + |04.3| Repeating a change + |04.4| Visual mode + |04.5| Moving text + |04.6| Copying text + |04.7| Using the clipboard + |04.8| Text objects + |04.9| Replace mode + |04.10| Conclusion + +|usr_05.txt| Set your settings + |05.1| The vimrc file + |05.2| The example vimrc file explained + |05.3| Simple mappings + |05.4| Adding a plugin + |05.5| Adding a help file + |05.6| The option window + |05.7| Often used options + +|usr_06.txt| Using syntax highlighting + |06.1| Switching it on + |06.2| No or wrong colors? + |06.3| Different colors + |06.4| With colors or without colors + |06.5| Printing with colors + |06.6| Further reading + +|usr_07.txt| Editing more than one file + |07.1| Edit another file + |07.2| A list of files + |07.3| Jumping from file to file + |07.4| Backup files + |07.5| Copy text between files + |07.6| Viewing a file + |07.7| Changing the file name + +|usr_08.txt| Splitting windows + |08.1| Split a window + |08.2| Split a window on another file + |08.3| Window size + |08.4| Vertical splits + |08.5| Moving windows + |08.6| Commands for all windows + |08.7| Viewing differences with vimdiff + |08.8| Various + +|usr_09.txt| Using the GUI + |09.1| Parts of the GUI + |09.2| Using the mouse + |09.3| The clipboard + |09.4| Select mode + +|usr_10.txt| Making big changes + |10.1| Record and playback commands + |10.2| Substitution + |10.3| Command ranges + |10.4| The global command + |10.5| Visual block mode + |10.6| Reading and writing part of a file + |10.7| Formatting text + |10.8| Changing case + |10.9| Using an external program + +|usr_11.txt| Recovering from a crash + |11.1| Basic recovery + |11.2| Where is the swap file? + |11.3| Crashed or not? + |11.4| Further reading + +|usr_12.txt| Clever tricks + |12.1| Replace a word + |12.2| Change "Last, First" to "First Last" + |12.3| Sort a list + |12.4| Reverse line order + |12.5| Count words + |12.6| Find a man page + |12.7| Trim blanks + |12.8| Find where a word is used + +============================================================================== +Editing Effectively ~ + +Subjects that can be read independently. + +|usr_20.txt| Typing command-line commands quickly + |20.1| Command line editing + |20.2| Command line abbreviations + |20.3| Command line completion + |20.4| Command line history + |20.5| Command line window + +|usr_21.txt| Go away and come back + |21.1| Suspend and resume + |21.2| Executing shell commands + |21.3| Remembering information; viminfo + |21.4| Sessions + |21.5| Views + |21.6| Modelines + +|usr_22.txt| Finding the file to edit + |22.1| The file explorer + |22.2| The current directory + |22.3| Finding a file + |22.4| The buffer list + +|usr_23.txt| Editing other files + |23.1| DOS, Mac and Unix files + |23.2| Files on the internet + |23.3| Encryption + |23.4| Binary files + |23.5| Compressed files + +|usr_24.txt| Inserting quickly + |24.1| Making corrections + |24.2| Showing matches + |24.3| Completion + |24.4| Repeating an insert + |24.5| Copying from another line + |24.6| Inserting a register + |24.7| Abbreviations + |24.8| Entering special characters + |24.9| Digraphs + |24.10| Normal mode commands + +|usr_25.txt| Editing formatted text + |25.1| Breaking lines + |25.2| Aligning text + |25.3| Indents and tabs + |25.4| Dealing with long lines + |25.5| Editing tables + +|usr_26.txt| Repeating + |26.1| Repeating with Visual mode + |26.2| Add and subtract + |26.3| Making a change in many files + |26.4| Using Vim from a shell script + +|usr_27.txt| Search commands and patterns + |27.1| Ignoring case + |27.2| Wrapping around the file end + |27.3| Offsets + |27.4| Matching multiple times + |27.5| Alternatives + |27.6| Character ranges + |27.7| Character classes + |27.8| Matching a line break + |27.9| Examples + +|usr_28.txt| Folding + |28.1| What is folding? + |28.2| Manual folding + |28.3| Working with folds + |28.4| Saving and restoring folds + |28.5| Folding by indent + |28.6| Folding with markers + |28.7| Folding by syntax + |28.8| Folding by expression + |28.9| Folding unchanged lines + |28.10| Which fold method to use? + +|usr_29.txt| Moving through programs + |29.1| Using tags + |29.2| The preview window + |29.3| Moving through a program + |29.4| Finding global identifiers + |29.5| Finding local identifiers + +|usr_30.txt| Editing programs + |30.1| Compiling + |30.2| Indenting C files + |30.3| Automatic indenting + |30.4| Other indenting + |30.5| Tabs and spaces + |30.6| Formatting comments + +|usr_31.txt| Exploiting the GUI + |31.1| The file browser + |31.2| Confirmation + |31.3| Menu shortcuts + |31.4| Vim window position and size + |31.5| Various + +============================================================================== +Tuning Vim ~ + +Make Vim work as you like it. + +|usr_40.txt| Make new commands + |40.1| Key mapping + |40.2| Defining command-line commands + |40.3| Autocommands + +|usr_41.txt| Write a Vim script + |41.1| Introduction + |41.2| Variables + |41.3| Expressions + |41.4| Conditionals + |41.5| Executing an expression + |41.6| Using functions + |41.7| Defining a function + |41.8| Exceptions + |41.9| Various remarks + |41.10| Writing a plugin + |41.11| Writing a filetype plugin + |41.12| Writing a compiler plugin + +|usr_42.txt| Add new menus + |42.1| Introduction + |42.2| Menu commands + |42.3| Various + |42.4| Toolbar and popup menus + +|usr_43.txt| Using filetypes + |43.1| Plugins for a filetype + |43.2| Adding a filetype + +|usr_44.txt| Your own syntax highlighted + |44.1| Basic syntax commands + |44.2| Keywords + |44.3| Matches + |44.4| Regions + |44.5| Nested items + |44.6| Following groups + |44.7| Other arguments + |44.8| Clusters + |44.9| Including another syntax file + |44.10| Synchronizing + |44.11| Installing a syntax file + |44.12| Portable syntax file layout + +|usr_45.txt| Select your language + |45.1| Language for Messages + |45.2| Language for Menus + |45.3| Using another encoding + |45.4| Editing files with a different encoding + |45.5| Entering language text + +============================================================================== +Making Vim Run ~ + +Before you can use Vim. + +|usr_90.txt| Installing Vim + |90.1| Unix + |90.2| MS-Windows + |90.3| Upgrading + |90.4| Common installation issues + |90.5| Uninstalling Vim + +============================================================================== + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/various.txt b/en/various.txt new file mode 100644 index 000000000..8d2f0ff38 --- /dev/null +++ b/en/various.txt @@ -0,0 +1,1098 @@ +*various.txt* For Vim version 6.3. Last change: 2004 May 01 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Various commands *various* + +1. Various commands |various-cmds| +2. Online help |online-help| +3. Printing |printing| +4. Using Vim like less or more |less| + +============================================================================== +1. Various commands *various-cmds* + + *CTRL-L* +CTRL-L Clear and redraw the screen (later). + + *:redr* *:redraw* +:redr[aw][!] Redraw the screen right now. When ! is included it is + cleared first. + Useful to update the screen halfway executing a script + or function. Also when halfway a mapping and + 'lazyredraw' is set. + + *:redraws* *:redrawstatus* +:redraws[tatus][!] Redraw the status line of the current window. When ! + is included all status lines are redrawn. + Useful to update the status line(s) when 'statusline' + includes an item that doesn't cause automatic + updating. + + *N<Del>* +<Del> When entering a number: Remove the last digit. + Note: if you like to use <BS> for this, add this + mapping to your .vimrc: > + :map CTRL-V <BS> CTRL-V <Del> +< See |:fixdel| if your <Del> key does not do what you + want. + +:as[cii] or *ga* *:as* *:ascii* +ga Print the ascii value of the character under the + cursor in decimal, hexadecimal and octal. For + example, when the cursor is on a 'R': + <R> 82, Hex 52, Octal 122 ~ + When the character is a non-standard ASCII character, + but printable according to the 'isprint' option, the + non-printable version is also given. When the + character is larger than 127, the <M-x> form is also + printed. For example: + <~A> <M-^A> 129, Hex 81, Octal 201 ~ + <p> <|~> <M-~> 254, Hex fe, Octal 376 ~ + (where <p> is a special character) + The <Nul> character in a file is stored internally as + <NL>, but it will be shown as: + <^@> 0, Hex 00, Octal 000 ~ + Mnemonic: Get Ascii value. {not in Vi} + + *g8* +g8 Print the hex values of the bytes used in the + character under the cursor, assuming it is in |UTF-8| + encoding. This also shows composing characters. + Example of a character with three composing + characters: + e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ + {not in Vi} + + *:p* *:pr* *:print* +:[range]p[rint] Print [range] lines (default current line). + Note: If you are looking for a way to print your text + file, you need an external program for that. In the + GUI you can use the File.Print menu entry. + (For printing on paper see |:hardcopy|) + +:[range]p[rint] {count} + Print {count} lines, starting with [range] (default + current line |cmdline-ranges|). + + *:P* *:Print* +:[range]P[rint] [count] + Just as ":print". Was apparently added to Vi for + people that keep the shift key pressed too long... + + *:l* *:list* +:[range]l[ist] [count] + Same as :print, but display unprintable characters + with '^'. + + *:nu* *:number* +:[range]nu[mber] [count] + Same as :print, but precede each line with its line + number. (See also 'highlight' option). + + *:#* +:[range]# [count] synonym for :number. + + *:z* *E144* +:{range}z[+-^.=]{count} Display several lines of text surrounding the line + specified with {range}, or around the current line + if there is no {range}. If there is a {count}, that's + how many lines you'll see; otherwise, the current + window size is used. + + :z can be used either alone or followed by any of + several punctuation marks. These have the following + effect: + + mark first line last line new location ~ + ---- ---------- --------- ------------ + + current line 1 scr forward 1 scr forward + - 1 scr back current line current line + ^ 2 scr back 1 scr back 1 scr back + . 1/2 scr back 1/2 scr fwd 1/2 src fwd + = 1/2 src back 1/2 scr fwd current line + + Specifying no mark at all is the same as "+". + If the mark is "=", a line of dashes is printed + around the current line. + +:{range}z#[+-^.=]{count} *:z#* + Like ":z", but number the lines. + {not in all versions of Vi, not with these arguments} + + *:=* +:= Print the last line number. + +:{range}= Prints the last line number in {range}. For example, + this prints the current line number: > + :.= + +:norm[al][!] {commands} *:norm* *:normal* + Execute Normal mode commands {commands}. This makes + it possible to execute Normal mode commands typed on + the command-line. {commands} is executed like it is + typed. For undo all commands are undone together. + If the [!] is given, mappings will not be used. + {commands} should be a complete command. If + {commands} does not finish a command, the last one + will be aborted as if <Esc> or <C-C> was typed. + The display isn't updated while ":normal" is busy. + This implies that an insert command must be completed + (to start Insert mode, see |:startinsert|). A ":" + command must be completed as well. + {commands} cannot start with a space. Put a 1 (one) + before it, 1 space is one space. + The 'insertmode' option is ignored for {commands}. + This command cannot be followed by another command, + since any '|' is considered part of the command. + This command can be used recursively, but the depth is + limited by 'maxmapdepth'. + When this command is called from a non-remappable + mapping |:noremap|, the argument can be mapped anyway. + An alternative is to use |:execute|, which uses an + expression as argument. This allows the use of + printable characters. Example: > + :exe "normal \<c-w>\<c-w>" +< {not in Vi, of course} + {not available when the |+ex_extra| feature was + disabled at compile time} + +:{range}norm[al][!] {commands} *:normal-range* + Execute Normal mode commands {commands} for each line + in the {range}. Before executing the {commands}, the + cursor is positioned in the first column of the range, + for each line. Otherwise it's the same as the + ":normal" command without a range. + {not in Vi} + Not available when |+ex_extra| feature was disabled at + compile time. + + *:sh* *:shell* *E371* +:sh[ell] This command starts a shell. When the shell exits + (after the "exit" command) you return to Vim. The + name for the shell command comes from 'shell' option. + *E360* + Note: This doesn't work when Vim on the Amiga was + started in QuickFix mode from a compiler, because the + compiler will have set stdin to a non-interactive + mode. + + *:!cmd* *:!* *E34* +:!{cmd} Execute {cmd} with the shell. See also the 'shell' + and 'shelltype' option. + Any '!' in {cmd} is replaced with the previous + external command (see also 'cpoptions'). But not when + there is a backslash before the '!', then that + backslash is removed. Example: ":!ls" followed by + ":!echo ! \! \\!" executes "echo ls ! \!". + After the command has been executed, the timestamp of + the current file is checked |timestamp|. + There cannot be a '|' in {cmd}, see |:bar|. + A newline character ends {cmd}, what follows is + interpreted as a following ":" command. However, if + there is a backslash before the newline it is removed + and {cmd} continues. It doesn't matter how many + backslashes are before the newline, only one is + removed. + On Unix the command normally runs in a non-interactive + shell. If you want an interactive shell to be used + (to use aliases) set 'shellcmdflag' to "-ic". + For Win32 also see |:!start|. + Vim redraws the screen after the command is finished, + because it may have printed any text. This requires a + hit-enter prompt, so that you can read any messages. + To avoid this use: > + :silent !{cmd} +< The screen is not redrawn then, thus you have to use + CTRL-L or ":redraw!" if the command did display + something. + Also see |shell-window|. + + *:!!* +:!! Repeat last ":!{cmd}". + + *:ve* *:version* +:ve[rsion] Print the version number of the editor. If the + compiler used understands "__DATE__" the compilation + date is mentioned. Otherwise a fixed release-date is + shown. + The following lines contain information about which + features were enabled when Vim was compiled. When + there is a preceding '+', the feature is included, + when there is a '-' it is excluded. To change this, + you have to edit feature.h and recompile Vim. + To check for this in an expression, see |has()|. + Here is an overview of the features. + The first column shows the smallest version in which + they are included: + T tiny + S small + N normal + B big + H huge + m manually enabled or depends on other features + (none) system dependent + Thus if a feature is marked with "N", it is included + in the normal, big and huge versions of Vim. + + *+feature-list* + *+ARP* Amiga only: ARP support included +B *+arabic* |Arabic| language support +N *+autocmd* |:autocmd|, automatic commands +m *+balloon_eval* |balloon-eval| support +N *+browse* |:browse| command +N *+builtin_terms* some terminals builtin |builtin-terms| +B *++builtin_terms* maximal terminals builtin |builtin-terms| +N *+byte_offset* support for 'o' flag in 'statusline' option, "go" + and ":goto" commands. +N *+cindent* |'cindent'|, C indenting +N *+clientserver* Unix and Win32: Remote invocation |clientserver| + *+clipboard* |clipboard| support +N *+cmdline_compl* command line completion |cmdline-completion| +N *+cmdline_hist* command line history |cmdline-history| +N *+cmdline_info* |'showcmd'| and |'ruler'| +N *+comments* |'comments'| support +N *+cryptv* encryption support |encryption| +B *+cscope* |cscope| support +N *+dialog_gui* Support for |:confirm| with GUI dialog. +N *+dialog_con* Support for |:confirm| with console dialog. +N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. +N *+diff* |vimdiff| and 'diff' +N *+digraphs* |digraphs| *E196* + *+dnd* Support for DnD into the "~ register |quote_~|. +B *+emacs_tags* |emacs-tags| files +N *+eval* expression evaluation |eval.txt| +N *+ex_extra* Vim's extra Ex commands: |:center|, |:left|, + |:normal|, |:retab| and |:right| +N *+extra_search* |'hlsearch'| and |'incsearch'| options. +B *+farsi* |farsi| language +N *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>| +N *+find_in_path* include file searches: |[I|, |:isearch|, + |CTRL-W_CTRL-I|, |:checkpath|, etc. +N *+folding* |folding| + *+footer* |gui-footer| + *+fork* Unix only: |fork| shell commands +N *+gettext* message translations |multi-lang| + *+GUI_Athena* Unix only: Athena |GUI| + *+GUI_neXtaw* Unix only: neXtaw |GUI| + *+GUI_BeOS* BeOS only: BeOS |GUI| + *+GUI_GTK* Unix only: GTK+ |GUI| + *+GUI_Motif* Unix only: Motif |GUI| + *+GUI_Photon* QNX only: Photon |GUI| +m *+hangul_input* Hangul input support |hangul| + *+iconv* Compiled with the |iconv()| function, may have |/dyn| +N *+insert_expand* |insert_expand| Insert mode completion +N *+jumplist* |jumplist| +B *+keymap* |'keymap'| +B *+langmap* |'langmap'| +N *+libcall* |libcall()| +N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'| +N *+lispindent* |'lisp'| +N *+listcmds* Vim commands for the list of buffers |buffer-hidden| + and argument list |:argdelete| +N *+localmap* Support for mappings local to a buffer |:map-local| +N *+menu* |:menu| +N *+mksession* |:mksession| +N *+modify_fname* |filename-modifiers| +N *+mouse* Mouse handling |mouse-using| +N *+mouseshape* |'mouseshape'| +B *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse| +N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| +B *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| +N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| +N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| +B *+multi_byte* Korean and other languages |multibyte| + *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| +N *+multi_lang* non-English language support |multi-lang| +m *+netbeans_intg* |netbeans| +m *+ole* Win32 GUI only: |ole-interface| + *+osfiletype* Support for the 'osfiletype' option and filetype + checking in automatic commands. |autocmd-osfiletypes| +N *+path_extra* Up/downwards search in 'path' and 'tags' +m *+perl* Perl interface |perl|, may have |/dyn| + *+postscript* |:hardcopy| writes a PostScript file +N *+printer* |:hardcopy| command +m *+python* Python interface |python|, may have |/dyn| +N *+quickfix* |:make| and |quickfix| commands +B *+rightleft* Right to left typing |'rightleft'| +m *+ruby* Ruby interface |ruby|, may have |/dyn| +N *+scrollbind* |'scrollbind'| +B *+signs* |:sign| +N *+smartindent* |'smartindent'| +m *+sniff* SniFF interface |sniff| +N *+statusline* Options 'statusline', 'rulerformat' and special + formats of 'titlestring' and 'iconstring' +m *+sun_workshop* |workshop| +N *+syntax* Syntax highlighting |syntax| + *+system()* Unix only: opposite of |+fork| +N *+tag_binary* binary searching in tags file |tag-binary-search| +N *+tag_old_static* old method for static tags |tag-old-static| +m *+tag_any_white* any white space allowed in tags file |tag-any-white| +m *+tcl* Tcl interface |tcl|, may have |/dyn| + *+terminfo* uses |terminfo| instead of termcap +N *+termresponse* support for |t_RV| and |v:termresponse| +N *+textobjects* |text-objects| selection + *+tgetent* non-Unix only: able to use external termcap +N *+title* Setting the window title |'title'| +N *+toolbar* |gui-toolbar| +N *+user_commands* User-defined commands. |user-commands| +N *+viminfo* |'viminfo'| +N *+vertsplit* Vertically split windows |:vsplit| +N *+virtualedit* |'virtualedit'| +S *+visual* Visual mode |Visual-mode| +N *+visualextra* extra Visual mode commands |blockwise-operators| +N *+vreplace* |gR| and |gr| +N *+wildignore* |'wildignore'| +N *+wildmenu* |'wildmenu'| +S *+windows* more than one window +m *+writebackup* |'writebackup'| is default on +m *+xim* X input method |xim| + *+xfontset* X fontset support |xfontset| + *+xsmp* XSMP (X session management) support + *+xsmp_interact* interactive XSMP (X session management) support +N *+xterm_clipboard* Unix only: xterm clipboard handling +m *+xterm_save* save and restore xterm screen |xterm-screens| +N *+X11* Unix only: can restore window title |X11| + + */dyn* *E370* *E448* + To some of the features "/dyn" is added when the + feature is only available when the related library can + be dynamically loaded. + +:ve[rsion] {nr} Is now ignored. This was previously used to check the + version number of a .vimrc file. It was removed, + because you can now use the ":if" command for + version-dependent behavior. {not in Vi} + + *:redi* *:redir* +:redi[r][!] > {file} Redirect messages to file {file}. The messages which + are the output of commands are written to that file, + until redirection ends. The messages are also still + shown on the screen. When [!] is included, an + existing file is overwritten. When [!] is omitted, + and {file} exists, this command fails. + Only one ":redir" can be active at a time. Calls to + ":redir" will close any active redirection before + starting redirection to the new target. + To stop the messages and commands from being echoed to + the screen, put the commands in a function and call it + with ":silent call Function()". + {not in Vi} + +:redi[r] >> {file} Redirect messages to file {file}. Append if {file} + already exists. {not in Vi} + +:redi[r] @{a-zA-Z} Redirect messages to register {a-z}. Append to the + contents of the register if its name is given + uppercase {A-Z}. {not in Vi} + +:redi[r] @* Redirect messages to the clipboard. {not in Vi} + +:redi[r] @" Redirect messages to the unnamed register. {not in Vi} + +:redi[r] END End redirecting messages. {not in Vi} + + *:sil* *:silent* +:sil[ent][!] {command} Execute {command} silently. Normal messages will not + be given or added to the message history. + When [!] is added, error messages will also be + skipped, and commands and mappings will not be aborted + when an error is detected. |v:errmsg| is still set. + When [!] is not used, an error message will cause + further messages to be displayed normally. + Redirection, started with |:redir|, will continue as + usual, although there might be small differences. + This will allow redirecting the output of a command + without seeing it on the screen. Example: > + :redir >/tmp/foobar + :silent g/Aap/p + :redir END +< To execute a Normal mode command silently, use the + |:normal| command. For example, to search for a + string without messages: > + :silent exe "normal /path\<CR>" +< ":silent!" is useful to execute a command that may + fail, but the failure is to be ignored. Example: > + :let v:errmsg = "" + :silent! /^begin + :if v:errmsg != "" + : ... pattern was not found +< ":silent" will also avoid the hit-enter prompt. When + using this for an external command, this may cause the + screen to be messed up. Use |CTRL-L| to clean it up + then. + ":silent menu ..." defines a menu that will not echo a + Command-line command. The command will still produce + messages though. Use ":silent" in the command itself + to avoid that: ":silent menu .... :silent command". + + *:verb* *:verbose* +:[count]verb[ose] {command} + Execute {command} with 'verbose' set to [count]. If + [count] is omitted one is used. + The additional use of ":silent" makes messages + generated but not displayed. + The combination of ":silent" and ":verbose" can be + used to generate messages and check them with + |v:statusmsg| and friends. For example: > + :let v:statusmsg = "" + :silent verbose runtime foobar.vim + :if v:statusmsg != "" + : " foobar.vim could not be found + :endif +< When concatenating another command, the ":verbose" + only applies to the first one: > + :4verbose set verbose | set verbose +< verbose=4 ~ + verbose=0 ~ + + *K* +K Run a program to lookup the keyword under the + cursor. The name of the program is given with the + 'keywordprg' (kp) option (default is "man"). The + keyword is formed of letters, numbers and the + characters in 'iskeyword'. The keyword under or + right of the cursor is used. The same can be done + with the command > + :!{program} {keyword} +< There is an example of a program to use in the tools + directory of Vim. It is called 'ref' and does a + simple spelling check. + Special cases: + - If 'keywordprg' is empty, the ":help" command is + used. It's a good idea to include more characters + in 'iskeyword' then, to be able to find more help. + - When 'keywordprg' is equal to "man", a count before + "K" is inserted after the "man" command and before + the keyword. For example, using "2K" while the + cursor is on "mkdir", results in: > + !man 2 mkdir +< - When 'keywordprg' is equal to "man -s", a count + before "K" is inserted after the "-s". If there is + no count, the "-s" is removed. + {not in Vi} + + *v_K* +{Visual}K Like "K", but use the visually highlighted text for + the keyword. Only works when the highlighted text is + not more than one line. {not in Vi} + +[N]gs *gs* *:sl* *:sleep* +:[N]sl[eep] [N] [m] Do nothing for [N] seconds. When [m] is included, + sleep for [N] milliseconds. The count for "gs" always + uses seconds. The default is one second. > + :sleep "sleep for one second + :5sleep "sleep for five seconds + :sleep 100m "sleep for a hundred milliseconds + 10gs "sleep for ten seconds +< Can be interrupted with CTRL-C (CTRL-Break on MS-DOS). + "gs" stands for "goto sleep". While sleeping the + cursor is positioned in the text (if visible). {not + in Vi} + + *g_CTRL-A* +g CTRL-A Only when Vim was compiled with MEM_PROFILING defined + (which is very rare): print memory usage statistics. + Only useful for debugging Vim. + +============================================================================== +2. Online help *online-help* + + *help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>* +<Help> or +:h[elp] Open a window and display the help file in read-only + mode. If there is a help window open already, use + that one. Otherwise, if the current window uses the + full width of the screen or is at least 80 characters + wide, the help window will appear just above the + current window. Otherwise the new window is put at + the very top. + The 'helplang' option is used to select a language, if + the main help file is available in several languages. + {not in Vi} + + *{subject}* *E149* *E661* +:h[elp] {subject} Like ":help", additionally jump to the tag {subject}. + {subject} can include wildcards like "*", "?" and + "[a-z]": + :help z? jump to help for any "z" command + :help z. jump to the help for "z." + If there is no full match for the pattern, or there + are several matches, the "best" match will be used. + A sophisticated algorithm is used to decide which + match is better than another one. These items are + considered in the computation: + - A match with same case is much better than a match + with different case. + - A match that starts after a non-alphanumeric + character is better than a match in the middle of a + word. + - A match at or near the beginning of the tag is + better than a match further on. + - The more alphanumeric characters match, the better. + - The shorter the length of the match, the better. + + The 'helplang' option is used to select a language, if + the {subject} is available in several languages. + To find a tag in a specific language, append "@ab", + where "ab" is the two-letter language code. See + |help-translated|. + + Note that the longer the {subject} you give, the less + matches will be found. You can get an idea how this + all works by using commandline completion (type CTRL-D + after ":help subject"). + If there are several matches, you can have them listed + by hitting CTRL-D. Example: > + :help cont<Ctrl-D> +< To use a regexp |pattern|, first do ":help" and then + use ":tag {pattern}" in the help window. The + ":tnext" command can then be used to jump to other + matches, "tselect" to list matches and choose one. > + :help index| :tse z. +< This command can be followed by '|' and another + command, but you don't need to escape the '|' inside a + help command. So these both work: > + :help | + :help k| only +< Note that a space before the '|' is seen as part of + the ":help" argument. + You can also use <LF> or <CR> to separate the help + command from a following command. You need to type + CTRL-V first to insert the <LF> or <CR>. Example: > + :help so<C-V><CR>only +< {not in Vi} + +:h[elp]! [subject] Like ":help", but in non-English help files prefer to + find a tag in a file with the same language as the + current file. See |help-translated|. + + *:helpg* *:helpgrep* +:helpg[rep] {pattern} + Search all help text files and make a list of lines + in which {pattern} matches. Jumps to the first match. + You can navigate through the matches with the + |quickfix| commands, e.g., |:cnext| to jump to the + next one. Or use |:cwindow| to get the list of + matches in the quickfix window. + {pattern} is used as a Vim regexp |pattern|. + 'ignorecase' is not used, add "\c" to ignore case. + Example for case sensitive search: > + :helpgrep Uganda +< Example for case ignoring search: > + :helpgrep uganda\c +< Cannot be followed by another command, everything is + used as part of the pattern. But you can use + |:execute| when needed. + Compressed help files will not be searched (Debian + compresses the help files). + {not in Vi} + + +When no argument is given to |:help| the file given with the 'helpfile' option +will be opened. Otherwise the specified tag is searched for in all "doc/tags" +files in the directories specified in the 'runtimepath' option. + +The initial height of the help window can be set with the 'helpheight' option +(default 20). + +Jump to specific subjects by using tags. This can be done in two ways: +- Use the "CTRL-]" command while standing on the name of a command or option. + This only works when the tag is a keyword. "<C-Leftmouse>" and + "g<LeftMouse>" work just like "CTRL-]". +- use the ":ta {subject}" command. This also works with non-keyword + characters. + +Use CTRL-T or CTRL-O to jump back. +Use ":q" to close the help window. + +If there are several matches for an item you are looking for, this is how you +can jump to each one of them: +1. Open a help window +2. Use the ":tag" command with a slash prepended to the tag. E.g.: > + :tag /min +3. Use ":tnext" to jump to the next matching tag. + +It is possible to add help files for plugins and other items. You don't need +to change the distributed help files for that. See |add-local-help|. + +To write a local help file, see |write-local-help|. + +Note that the title lines from the local help files are automagically added to +the "LOCAL ADDITIONS" section in the "help.txt" help file |local-additions|. +This is done when viewing the file in Vim, the file itself is not changed. It +is done by going through all help files and obtaining the first line of each +file. The files in $VIMRUNTIME/doc are skipped. + + *help-xterm-window* +If you want to have the help in another xterm window, you could use this +command: > + :!xterm -e vim +help & +< + + *:helpfind* *:helpf* +:helpf[ind] Like |:help|, but use a dialog to enter the argument. + Only for backwards compatibility. It now executes the + ToolBar.FindHelp menu entry instead of using a builtin + dialog. {only when compiled with |+GUI_GTK|} +< {not in Vi} + + *:helpt* *:helptags* + *E154* *E150* *E151* *E152* *E153* *E670* +:helpt[ags] {dir} Generate the help tags file(s) for directory {dir}. + All "*.txt" and "*.??x" files in the directory are + scanned for a help tag definition in between stars. + The "*.??x" files are for translated docs, they + generate the "tags-??" file, see |help-translated|. + The generated tags files are sorted. + When there are duplicates an error message is given. + An existing tags file is silently overwritten. + To rebuild the help tags in the runtime directory + (requires write permission there): > + :helptags $VIMRUNTIME/doc +< {not in Vi} + + +TRANSLATED HELP *help-translated* + +It is possible to add translated help files, next to the original English help +files. Vim will search for all help in "doc" directories in 'runtimepath'. +This is only available when compiled with the |+multi_lang| feature. + +A set of translated help files consists of these files: + + help.abx + howto.abx + ... + tags-ab + +"ab" is the two-letter language code. Thus for Italian the names are: + + help.itx + howto.itx + ... + tags-it + +The 'helplang' option can be set to the preferred language(s). The default is +set according to the environment. Vim will first try to find a matching tag +in the preferred language(s). English is used when it cannot be found. + +To find a tag in a specific language, append "@ab" to a tag, where "ab" is the +two-letter language code. Example: > + :he user-manual@it + :he user-manual@en +The first one finds the Italian user manual, even when 'helplang' is empty. +The second one finds the English user manual, even when 'helplang' is set to +"it". + +When using command-line completion for the ":help" command, the "@en" +extention is only shown when a tag exists for multiple languages. When the +tag only exists for English "@en" is omitted. + +When using |CTRL-]| or ":help!" in a non-English help file Vim will try to +find the tag in the same language. If not found then 'helplang' will be used +to select a language. + +Help files must use latin1 or utf-8 encoding. Vim assumes the encoding is +utf-8 when finding non-ASCII characters in the first line. Thus you must +translate the header with "For Vim version". + +The same encoding must be used for the help files of one language in one +directory. You can use a different encoding for different languages and use +a different encoding for help files of the same language but in a different +directory. + +Hints for translators: +- Do not translate the tags. This makes it possible to use 'helplang' to + specify the preferred language. You may add new tags in your language. +- When you do not translate a part of a file, add tags to the English version, + using the "tag@en" notation. +- Make a package with all the files and the tags file available for download. + Users can drop it in one of the "doc" directories and start use it. + Report this to Bram, so that he can add a link on www.vim.org. +- Use the |:helptags| command to generate the tags files. It will find all + languages in the specified directory. + +============================================================================== +3. Printing *printing* + +On MS-Windows Vim can print your text on any installed printer. On other +systems a PostScript file is produced. This can be directly sent to a +PostScript printer. For other printers a program like ghostscript needs to be +used. + +3.1 PostScript Printing |postscript-printing| +3.2 PostScript Printing Encoding |postscript-print-encoding| +3.3 PostScript Printing Troubleshooting |postscript-print-trouble| +3.4 PostScript Utilities |postscript-print-util| +3.5 Formfeed Characters |printing-formfeed| + +{not in Vi} +{only available when compiled with |+printer| feature} + + *:ha* *:hardcopy* *E237* *E238* *E324* +:[range]ha[rdcopy][!] [arguments] + Send [range] lines (default whole file) to the + printer. + + On MS-Windows a dialog is displayed to allow selection + of printer, paper size etc. To skip the dialog, use + the [!]. In this case the printer defined by + 'printdevice' is used, or, if 'printdevice' is empty, + the system default printer. + + For systems other than MS-Windows, PostScript is + written in a temp file and 'printexpr' is used to + actually print it. Then [arguments] can be used by + 'printexpr' through |v:cmdarg|. Otherwise [arguments] + is ignored. 'printoptions' can be used to specify + paper size, duplex, etc. + +:[range]ha[rdcopy][!] >{filename} + As above, but write the resulting PostScript in file + {filename}. + Things like "%" are expanded |cmdline-special| + Careful: An existing file is silently overwritten. + {only available when compiled with the |+postscript| + feature} + On MS-Windows use the "print to file" feature of the + printer driver. + +Progress is displayed during printing as a page number and a percentage. To +abort printing use the interrupt key (CTRL-C or, on MS-systems, CTRL-Break). + +Printer output is controlled by the 'printfont' and 'printoptions' options. +'printheader' specifies the format of a page header. + +The printed file is always limited to the selected margins, irrespective of +the current window's 'wrap' or 'linebreak' settings. The "wrap" item in +'printoptions' can be used to switch wrapping off. +The current highlighting colors are used in the printout, with the following +considerations: +1) The normal background is always rendered as white (i.e. blank paper.) +2) White text or the default foreground is rendered as black, so that it shows + up! +3) If 'background' is "dark", then the colours are darkened to compensate for + the fact that otherwise they would be too bright to show up clearly on + white paper. + + +3.1 PostScript Printing *postscript-printing* + *E455* *E456* *E457* *E624* +Provided you have enough disk space there should be no problems generating a +PostScript file. You need to have the runtime files correctly installed (if +you can find the help files, they probably are). + +There are currently a number of limitations with PostScript printing: + +- 'printfont' - The font name is ignored (the Courier family is always used - + it should be available on all PostScript printers) but the font size is + used. + +- 'printoptions' - The duplex setting is used when generating PostScript + output, but it is up to the printer to take notice of the setting. If the + printer does not support duplex printing then it should be silently ignored. + Some printers, however, don't print at all. + +- 8-bit support - While a number of 8-bit print character encodings are + supported it is possible that some characters will not print. Whether a + character will print depends on the font in the printer knowing the + character. Missing characters will be replaced with an upside down question + mark, or a space if that character is also not known by the font. It may be + possible to get all the characters in an encoding to print by installing a + new version of the Courier font family. + +- Multi-byte support - Currently VIM will try to convert multi-byte characters + to the 8-bit encoding specified by 'printencoding' (or latin1 if it is + empty). Any characters that are not successfully converted are shown as + unknown characters. Printing will fail if VIM cannot convert the multi-byte + to the 8-bit encoding. + + +3.2 Custom 8-bit Print Character Encodings *postscript-print-encoding* + *E618* *E619* +To use your own print character encoding when printing 8-bit character data +you need to define your own PostScript font encoding vector. Details on how +to to define a font encoding vector is beyond the scope of this help file, but +you can find details in the PostScript Language Reference Manual, 3rd Edition, +published by Addison-Wesley and available in PDF form at +http://www.adobe.com/. The following describes what you need to do for VIM to +locate and use your print character encoding. + +i. Decide on a unique name for your encoding vector, one that does not clash + with any of the recognized or standard encoding names that VIM uses (see + |encoding-names| for a list), and that no one else is likely to use. +ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your + 'runtimepath' and rename it with your unique name. +iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1 + with your unique name (don't forget the line starting %%Title:), and + modify the array of glyph names to define your new encoding vector. The + array must have exactly 256 entries or you will not be able to print! +iv. Within VIM, set 'printencoding' to your unique encoding name and then + print your file. VIM will now use your custom print character encoding. + +VIM will report an error with the resource file if you change the order or +content of the first 3 lines, other than the name of the encoding on the line +starting %%Title: or the version number on the line starting %%Version:. + +[Technical explanation for those that know PostScript - VIM looks for a file +with the same name as the encoding it will use when printing. The file +defines a new PostScript Encoding resource called /VIM-name, where name is the +print character encoding VIM will use.] + + +3.3 PostScript Printing Troubleshooting *postscript-print-trouble* + *E621* +Usually the only sign of a problem when printing with PostScript is that your +printout does not appear. If you are lucky you may get a printed page that +tells you the PostScript operator that generated the error that prevented the +print job completing. + +There are a number of possible causes as to why the printing may have failed: + +- Wrong version of the prolog resource file. The prolog resource file + contains some PostScript that VIM needs to be able to print. Each version + of VIM needs one particular version. Make sure you have correctly installed + the runtime files, and don't have any old versions of a file called prolog + in the print directory in your 'runtimepath' directory. + +- Paper size. Some PostScript printers will abort printing a file if they do + not support the requested paper size. By default VIM uses A4 paper. Find + out what size paper your printer normally uses and set the appropriate paper + size with 'printoptions'. If you cannot find the name of the paper used, + measure a sheet and compare it with the table of supported paper sizes listed + for 'printoptions', using the paper that is closest in both width AND height. + Note: The dimensions of actual paper may vary slightly from the ones listed. + If there is no paper listed close enough, then you may want to try psresize + from PSUtils, discussed below. + +- Two-sided printing (duplex). Normally a PostScript printer that does not + support two-sided printing will ignore any request to do it. However, some + printers may abort the job altogether. Try printing with duplex turned off. + Note: Duplex prints can be achieved manually using PS utils - see below. + +- Collated printing. As with Duplex printing, most PostScript printers that + do not support collating printouts will ignore a request to do so. Some may + not. Try printing with collation turned off. + +- Syntax highlighting. Some print management code may prevent the generated + PostScript file from being printed on a black and white printer when syntax + highlighting is turned on, even if solid black is the only color used. Try + printing with syntax highlighting turned off. + +A safe printoptions setting to try is: > + + :set printoptions=paper:A4,duplex:off,collate:n,syntax:n + +Replace "A4" with the paper size that best matches your printer paper. + + +3.4 PostScript Utilities *postscript-print-util* + +3.4.1 Ghostscript + +Ghostscript is a PostScript and PDF interpreter that can be used to display +and print on non-PostScript printers PostScript and PDF files. It can also +generate PDF files from PostScript. + +Ghostscript will run on a wide variety of platforms. + +There are three available versions: + +- AFPL Ghostscript (formerly Aladdin Ghostscript) which is free for + non-commercial use. It can be obtained from: + + http://www.cs.wisc.edu/~ghost/ + +- GNU Ghostscript which is available under the GNU General Public License. It + can be obtained from: + + ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/ + +- A commercial version for inclusion in commercial products. + +Additional information on Ghostscript can also be found at: + + http://www.ghostscript.com/ + +Support for a number of non PostScript printers is provided in the +distribution as standard, but if you cannot find support for your printer +check the Ghostscript site for other printers not included by default. + + +3.4.2 Ghostscript Previewers. + +The interface to Ghostscript is very primitive so a number of graphical front +ends have been created. These allow easier PostScript file selection, +previewing at different zoom levels, and printing. Check supplied +documentation for full details. + +X11 + +- Ghostview. Obtainable from: + + http://www.cs.wisc.edu/~ghost/gv/ + +- gv. Derived from Ghostview. Obtainable from: + + http://wwwthep.physik.uni-mainz.de/~plass/gv/ + + Copies (possibly not the most recent) can be found at: + + http://www.cs.wisc.edu/~ghost/gv/ + +OpenVMS + +- Is apparently supported in the main code now (untested). See: + + http://wwwthep.physik.uni-mainz.de/~plass/gv/ + +Windows and OS/2 + +- GSview. Obtainable from: + + http://www.cs.wisc.edu/~ghost/gsview/ + +DOS + +- ps_view. Obtainable from: + + ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/ + ftp://ftp.dante.de/tex-archive/support/ps_view/ + +Linux + +- GSview. Linux version of the popular Windows and OS/2 previewer. + Obtainable from: + + http://www.cs.wisc.edu/~ghost/gsview/ + +- BMV. Different from Ghostview and gv in that it doesn't use X but svgalib. + Obtainable from: + + ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz + + +3.4.3 PSUtils + +PSUtils is a collection of utility programs for manipulating PostScript +documents. Binary distributions are available for many platforms, as well as +the full source. PSUtils can be found at: + + http://knackered.org/angus/psutils + +The utilities of interest include: + +- psnup. Convert PS files for N-up printing. +- psselect. Select page range and order of printing. +- psresize. Change the page size. +- psbook. Reorder and lay out pages ready for making a book. + +The output of one program can be used as the input to the next, allowing for +complex print document creation. + + +N-UP PRINTING + +The psnup utility takes an existing PostScript file generated from VIM and +convert it to an n-up version. The simplest way to create a 2-up printout is +to first create a PostScript file with: > + + :hardcopy > test.ps + +Then on your command line execute: > + + psnup -n 2 test.ps final.ps + +Note: You may get warnings from some Ghostscript previewers for files produced +by psnup - these may safely be ignored. + +Finally print the file final.ps to your PostScript printer with your +platform's print command. (You will need to delete the two PostScript files +afterwards yourself.) 'printexpr' could be modified to perform this extra +step before printing. + + +ALTERNATE DUPLEX PRINTING + +It is possible to achieve a poor man's version of duplex printing using the PS +utility psselect. This utility has options -e and -o for printing just the +even or odd pages of a PS file respectively. + +First generate a PS file with the 'hardcopy' command, then generate a new +files with all the odd and even numbered pages with: > + + psselect -o test.ps odd.ps + psselect -e test.ps even.ps + +Next print odd.ps with your platform's normal print command. Then take the +print output, turn it over and place it back in the paper feeder. Now print +even.ps with your platform's print command. All the even pages should now +appear on the back of the odd pages. + +There a couple of points to bear in mind: + +1. Position of the first page. If the first page is on top of the printout + when printing the odd pages then you need to reverse the order that the odd + pages are printed. This can be done with the -r option to psselect. This + will ensure page 2 is printed on the back of page 1. + Note: it is better to reverse the odd numbered pages rather than the even + numbered in case there are an odd number of pages in the original PS file. + +2. Paper flipping. When turning over the paper with the odd pages printed on + them you may have to either flip them horizontally (along the long edge) or + vertically (along the short edge), as well as possibly rotating them 180 + degrees. All this depends on the printer - it will be more obvious for + desktop ink jets than for small office laser printers where the paper path + is hidden from view. + + +3.5 Formfeed Characters *printing-formfeed* + +By default VIM does not do any special processing of |formfeed| control +characters. Setting the 'printoptions' formfeed item will make VIM recognize +formfeed characters and continue printing the current line at the beginning +of the first line on a new page. The use of formfeed characters provides +rudimentary print control but there are certain things to be aware of. + +VIM will always start printing a line (including a line number if enabled) +containing a formfeed character, even if it is the first character on the +line. This means if a line starting with a formfeed character is the first +line of a page then VIM will print a blank page. + +Since the line number is printed at the start of printing the line containing +the formfeed character, the remainder of the line printed on the new page +will not have a line number printed for it (in the same way as the wrapped +lines of a long line when wrap in 'printoptions' is enabled). + +If the formfeed character is the last character on a line, then printing will +continue on the second line of the new page, not the first. This is due to +VIM processing the end of the line after the formfeed character and moving +down a line to continue printing. + +Due to the points made above it is recommended that when formfeed character +processing is enabled, printing of line numbers is disabled, and that form +feed characters are not the last character on a line. Even then you may need +to adjust the number of lines before a formfeed character to prevent +accidental blank pages. + +============================================================================== +4. Using Vim like less or more *less* + +If you use the less or more program to view a file, you don't get syntax +highlighting. Thus you would like to use Vim instead. You can do this by +using the shell script "$VIMRUNTIME/macros/less.sh". + +This shell script uses the Vim script "$VIMRUNTIME/macros/less.vim". It sets +up mappings to simulate the commands that less supports. Otherwise, you can +still use the Vim commands. + +This isn't perfect. For example, when viewing a short file Vim will still use +the whole screen. But it works good enough for most uses, and you get syntax +highlighting. + +The "h" key will give you a short overview of the available commands. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/version4.txt b/en/version4.txt new file mode 100644 index 000000000..ecd48e77f --- /dev/null +++ b/en/version4.txt @@ -0,0 +1,355 @@ +*version4.txt* For Vim version 6.3. Last change: 2004 Mar 12 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +This document lists the incompatible differences between Vim 3.0 and Vim 4.0. +Although 4.0 is mentioned here, this is also for version 4.1, 4.2, etc.. + +This file is important for everybody upgrading from Vim 3.0. Read it +carefully to avoid unexpected problems. + +'backup' option default changed |backup-changed| +Extension for backup file changed |backup-extension| +Structure of swap file changed |swapfile-changed| +"-w scriptout" argument changed |scriptout-changed| +Backspace and Delete keys |backspace-delete| +Escape for | changed |escape-bar| +Key codes changed |key-codes-changed| +Terminal options changed |termcap-changed| +'errorformat' option changed |errorformat-changed| +'graphic' option gone |graphic-option-gone| +'yankendofline' option gone |ye-option-gone| +'icon' and 'title' default value changed |icon-changed| +'highlight' option changed |highlight-changed| +'tildeop' and 'weirdinvert' short names changed |short-name-changed| +Use of "v", "V" and "CTRL-V" in Visual mode |use-visual-cmds| +CTRL-B in Insert mode removed |toggle-revins| + + +'backup' option default changed *backup-changed* +------------------------------- + +The default value for 'backup' used to be on. This resulted in a backup file +being made when the original file was overwritten. + +Now the default for 'backup' is off. As soon as the writing of the file has +successfully finished, the backup file is deleted. If you want to keep the +backup file, set 'backup' on in your vimrc. The reason for this change is +that many people complained that leaving a backup file behind is not +Vi-compatible. |'backup'| + + +Extension for backup file changed *backup-extension* +--------------------------------- + +The extension for the backup file used to be ".bak". Since other programs +also use this extension and some users make copies with this extension, it was +changed to the less obvious "~". Another advantage is that this takes less +space, which is useful when working on a system with short file names. For +example, on MS-DOS the backup files for "longfile.c" and "longfile.h" would +both become "longfile.bak"; now they will be "longfile.c~" and "longfile.h~". + +If you prefer to use ".bak", you can set the 'backupext' option: > + :set bex=.bak + + +Structure of swap file changed *swapfile-changed* +------------------------------ + +The contents of the swap file were extended with several parameters. Vim +stores the user name and other information about the edited file to make +recovery more easy and to be able to know where the swap file comes from. The +first part of the swap file can now be understood on a machine with a +different byte order or sizeof(int). When you try to recover a file on such a +machine, you will get an error message that this is not possible. + +Because of this change, swap files cannot be exchanged between 3.0 and 4.0. +If you have a swap file from a crashed session with 3.0, use Vim 3.0 to +recover the file---don't use 4.0. |swap-file| + + +"-w scriptout" argument changed *scriptout-changed* +------------------------------- + +"vim -w scriptout" used to append to the scriptout file. Since this was +illogical, it now creates a new file. An existing file is not overwritten +(to avoid destroying an existing file for those who rely on the appending). +[This was removed again later] |-w| + + +Backspace and Delete keys *backspace-delete* +------------------------- + +In 3.0 both the delete key and the backspace key worked as a backspace in +insert mode; they deleted the character to the left of the cursor. In 4.0 the +delete key has a new function: it deletes the character under the cursor, just +like it does on the command-line. If the cursor is after the end of the line +and 'bs' is set, two lines are joined. |<Del>| |i_<Del>| + +In 3.0 the backspace key was always defined as CTRL-H and delete as CTRL-?. +In 4.0 the code for the backspace and delete key is obtained from termcap or +termlib, and adjusted for the "stty erase" value on Unix. This helps people +who define the erase character according to the keyboard they are working on. + |<BS>| |i_<BS>| + +If you prefer backspace and delete in Insert mode to have the old behavior, +put this line in your vimrc: + + inoremap ^? ^H + +And you may also want to add these, to fix the values for <BS> and <Del>: + + set t_kb=^H + set t_kD=^? + +(Enter ^H with CTRL-V CTRL-H and ^? with CTRL-V CTRL-? or <Del>.) + +If the value for t_kb is correct, but the t_kD value is not, use the ":fixdel" +command. It will set t_kD according to the value of t_kb. This is useful if +you are using several different terminals. |:fixdel| + +When ^H is not recognized as <BS> or <Del>, it is used like a backspace. + + +Escape for | changed *escape-bar* +-------------------- + +When the 'b' flag is present in 'cpoptions', the backslash cannot be used to +escape '|' in mapping and abbreviate commands, only CTRL-V can. This is +Vi-compatible. If you work in Vi-compatible mode and had used "\|" to include +a bar in a mapping, this needs to be replaced by "^V|". See |:bar|. + + +Key codes changed *key-codes-changed* +----------------- + +The internal representation of key codes has changed dramatically. In 3.0 a +one-byte code was used to represent a key. This caused problems with +different characters sets that also used these codes. In 4.0 a three-byte +code is used that cannot be confused with a character. |key-notation| + +If you have used the single-byte key codes in your vimrc for mappings, you +will have to replace them with the 4.0 codes. Instead of using the three-byte +code directly, you should use the symbolic representation for this in <>. See +the table below. The table also lists the old name, as it was used in the 3.0 +documentation. + +The key names in <> can be used in mappings directly. This makes it possible +to copy/paste examples or type them literally. The <> notation has been +introduced for this |<>|. The 'B' and '<' flags must not be present in +'cpoptions' to enable this to work |'cpoptions'|. + +old name new name old code old MS-DOS code ~ + hex dec hex dec ~ +<ESC> <Esc> +<TAB> <Tab> +<LF> <NL> <NewLine> <LineFeed> +<SPACE> <Space> +<NUL> <Nul> +<BELL> <Bell> +<BS> <BS> <BackSpace> +<INSERT> <Insert> +<DEL> <Del> <Delete> +<HOME> <Home> +<END> <End> +<PAGE_UP> <PageUp> +<PAGE_DOWN> <PageDown> + +<C_UP> <Up> 0x80 128 0xb0 176 +<C_DOWN> <Down> 0x81 129 0xb1 177 +<C_LEFT> <Left> 0x82 130 0xb2 178 +<C_RIGHT> <Right> 0x83 131 0xb3 179 +<SC_UP> <S-Up> 0x84 132 0xb4 180 +<SC_DOWN> <S-Down> 0x85 133 0xb5 181 +<SC_LEFT> <S-Left> 0x86 134 0xb6 182 +<SC_RIGHT> <S-Right> 0x87 135 0xb7 183 + +<F1> <F1> 0x88 136 0xb8 184 +<F2> <F2> 0x89 137 0xb9 185 +<F3> <F3> 0x8a 138 0xba 186 +<F4> <F4> 0x8b 139 0xbb 187 +<F5> <F5> 0x8c 140 0xbc 188 +<F6> <F6> 0x8d 141 0xbd 189 +<F7> <F7> 0x8e 142 0xbe 190 +<F8> <F8> 0x8f 143 0xbf 191 +<F9> <F9> 0x90 144 0xc0 192 +<F10> <F10> 0x91 145 0xc1 193 + +<SF1> <S-F1> 0x92 146 0xc2 194 +<SF2> <S-F2> 0x93 147 0xc3 195 +<SF3> <S-F3> 0x94 148 0xc4 196 +<SF4> <S-F4> 0x95 149 0xc5 197 +<SF5> <S-F5> 0x96 150 0xc6 198 +<SF6> <S-F6> 0x97 151 0xc7 199 +<SF7> <S-F7> 0x98 152 0xc8 200 +<SF8> <S-F8> 0x99 153 0xc9 201 +<SF9> <S-F9> 0x9a 154 0xca 202 +<SF10> <S-F10> 0x9b 155 0xcb 203 + +<HELP> <Help> 0x9c 156 0xcc 204 +<UNDO> <Undo> 0x9d 157 0xcd 205 + + (not used) 0x9e 158 0xce 206 + (not used) 0x9f 159 0xcf 207 + + +Terminal options changed *termcap-changed* +------------------------ + +The names of the terminal options have been changed to match the termcap names +of these options. All terminal options now have the name t_xx, where xx is +the termcap name. Normally these options are not used, unless you have a +termcap entry that is wrong or incomplete, or you have set the highlight +options to a different value. |terminal-options| + +Note that for some keys there is no termcap name. Use the <> type of name +instead, which is a good idea anyway. + +Note that "t_ti" has become "t_mr" (invert/reverse output) and "t_ts" has +become "t_ti" (init terminal mode). Be careful when you use "t_ti"! + +old name new name meaning ~ +t_cdl t_DL delete number of lines *t_cdl* +t_ci t_vi cursor invisible *t_ci* +t_cil t_AL insert number of lines *t_cil* +t_cm t_cm move cursor +t_cri t_RI cursor number of chars right *t_cri* +t_cv t_ve cursor visible *t_cv* +t_cvv t_vs cursor very visible *t_cvv* +t_dl t_dl delete line +t_cs t_cs scroll region +t_ed t_cl clear display *t_ed* +t_el t_ce clear line *t_el* +t_il t_al insert line *t_il* + t_da display may be retained above the screen + t_db display may be retained below the screen +t_ke t_ke put terminal out of keypad transmit mode +t_ks t_ks put terminal in keypad transmit mode +t_ms t_ms save to move cursor in highlight mode +t_se t_se normal mode (undo t_so) +t_so t_so shift out (standout) mode +t_ti t_mr reverse highlight +t_tb t_md bold mode *t_tb* +t_tp t_me highlight end *t_tp* +t_sr t_sr scroll reverse +t_te t_te out of termcap mode +t_ts t_ti into termcap mode *t_ts_old* +t_vb t_vb visual bell +t_csc t_CS cursor is relative to scroll region *t_csc* + +t_ku t_ku <Up> arrow up +t_kd t_kd <Down> arrow down +t_kr t_kr <Right> arrow right +t_kl t_kl <Left> arrow left +t_sku <S-Up> shifted arrow up *t_sku* +t_skd <S-Down> shifted arrow down *t_skd* +t_skr t_%i <S-Right> shifted arrow right *t_skr* +t_skl t_#4 <S-Left> shifted arrow left *t_skl* +t_f1 t_k1 <F1> function key 1 *t_f1* +t_f2 t_k2 <F2> function key 2 *t_f2* +t_f3 t_k3 <F3> function key 3 *t_f3* +t_f4 t_k4 <F4> function key 4 *t_f4* +t_f5 t_k5 <F5> function key 5 *t_f5* +t_f6 t_k6 <F6> function key 6 *t_f6* +t_f7 t_k7 <F7> function key 7 *t_f7* +t_f8 t_k8 <F8> function key 8 *t_f8* +t_f9 t_k9 <F9> function key 9 *t_f9* +t_f10 t_k; <F10> function key 10 *t_f10* +t_sf1 <S-F1> shifted function key 1 *t_sf1* +t_sf2 <S-F2> shifted function key 2 *t_sf2* +t_sf3 <S-F3> shifted function key 3 *t_sf3* +t_sf4 <S-F4> shifted function key 4 *t_sf4* +t_sf5 <S-F5> shifted function key 5 *t_sf5* +t_sf6 <S-F6> shifted function key 6 *t_sf6* +t_sf7 <S-F7> shifted function key 7 *t_sf7* +t_sf8 <S-F8> shifted function key 8 *t_sf8* +t_sf9 <S-F9> shifted function key 9 *t_sf9* +t_sf10 <S-F10> shifted function key 10 *t_sf10* +t_help t_%1 <Help> help key *t_help* +t_undo t_&8 <Undo> undo key *t_undo* + + +'errorformat' option changed *errorformat-changed* +---------------------------- + +'errorformat' can now contain several formats, separated by commas. The first +format that matches is used. The default values have been adjusted to catch +the most common formats. |errorformat| + +If you have a format that contains a comma, it needs to be preceded with a +backslash. Type two backslashes, because the ":set" command will eat one. + + +'graphic' option gone *graphic-option-gone* +--------------------- + +The 'graphic' option was used to make the characters between <~> and 0xa0 +display directly on the screen. Now the 'isprint' option takes care of this +with many more possibilities. The default setting is the same; you only need +to look into this if you previously set the 'graphic' option in your vimrc. + |'isprint'| + + +'yankendofline' option gone *ye-option-gone* +--------------------------- + +The 'yankendofline' option has been removed. Instead you can just use + :map Y y$ + + +'icon' and 'title' default value changed *icon-changed* +---------------------------------------- + +The 'title' option is now only set by default if the original title can be +restored. Avoids "Thanks for flying Vim" titles. If you want them anyway, +put ":set title" in your vimrc. |'title'| + +The default for 'icon' now depends on the possibility of restoring the +original value, just like 'title'. If you don't like your icon titles to be +changed, add this line to your vimrc: |'icon'| + :set noicon + + +'highlight' option changed *highlight-changed* +-------------------------- + +The 'i' flag now means italic highlighting, instead of invert. The 'r' flag +is used for reverse highlighting, which is what 'i' used to be. Normally you +won't see the difference, because italic mode is not supported on most +terminals and reverse mode is used as a fallback. |'highlight'| + +When an occasion is not present in 'highlight', use the mode from the default +value for 'highlight', instead of reverse mode. + + +'tildeop' and 'weirdinvert' short names changed *short-name-changed* +----------------------------------------------- + +Renamed 'to' (abbreviation for 'tildeop') to 'top'. |'tildeop'| +Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'. |'weirdinvert'| + +This was done because Vi uses 'wi' as the short name for 'window' and 'to' as +the short name for 'timeout'. This means that if you try setting these +options, you won't get an error message, but the effect will be different. + + +Use of "v", "V" and "CTRL-V" in Visual mode *use-visual-cmds* +------------------------------------------- + +In Visual mode, "v", "V", and "CTRL-V" used to end Visual mode. Now this +happens only if the Visual mode was in the corresponding type. Otherwise the +type of Visual mode is changed. Now only ESC can be used in all circumstances +to end Visual mode without doing anything. |v_V| + + +CTRL-B in Insert mode removed *toggle-revins* +----------------------------- + +CTRL-B in Insert mode used to toggle the 'revins' option. If you don't know +this and accidentally hit CTRL-B, it is very difficult to find out how to undo +it. Since hardly anybody uses this feature, it is disabled by default. If +you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'| + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/version5.txt b/en/version5.txt new file mode 100644 index 000000000..8c0fd2189 --- /dev/null +++ b/en/version5.txt @@ -0,0 +1,7813 @@ +*version5.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + + VIM REFERENCE MANUAL by Bram Moolenaar + +Welcome to Vim Version 5.0! + +This document lists the differences between Vim 4.x and Vim 5.0. +Although 5.0 is mentioned here, this is also for version 5.1, 5.2, etc.. +See |vi_diff.txt| for an overview of differences between Vi and Vim 5.0. +See |version4.txt| for differences between Vim 3.0 and Vim 4.0. + +INCOMPATIBLE: |incompatible-5| + +Default value for 'compatible' changed |cp-default| +Text formatting command "Q" changed |Q-command-changed| +Command-line arguments changed |cmdline-changed| +Autocommands are kept |autocmds-kept| +Use of 'hidden' changed |hidden-changed| +Text object commands changed |text-objects-changed| +X-Windows Resources removed |x-resources| +Use of $VIM |$VIM-use| +Use of $HOME for MS-DOS and Win32 |$HOME-use| +Tags file format changed |tags-file-changed| +Options changed |options-changed| +CTRL-B in Insert mode gone |i_CTRL-B-gone| + +NEW FEATURES: |new-5| + +Syntax highlighting |new-highlighting| +Built-in script language |new-script| +Perl and Python support |new-perl-python| +Win32 GUI version |added-win32-GUI| +VMS version |added-VMS| +BeOS version |added-BeOS| +Macintosh GUI version |added-Mac| +More Vi compatible |more-compatible| +Read input from stdin |read-stdin| +Regular expression patterns |added-regexp| +Overloaded tags |tag-overloaded| +New commands |new-commands| +New options |added-options| +New command-line arguments |added-cmdline-args| +Various additions |added-various| + +IMPROVEMENTS |improvements-5| + +COMPILE TIME CHANGES |compile-changes-5| + +BUG FIXES |bug-fixes-5| + +VERSION 5.1 |version-5.1| +Changed |changed-5.1| +Added |added-5.1| +Fixed |fixed-5.1| + +VERSION 5.2 |version-5.2| +Long lines editable |long-lines| +File browser added |file-browser-5.2| +Dialogs added |dialogs-added| +Popup menu added |popup-menu-added| +Select mode added |new-Select-mode| +Session files added |new-session-files| +User defined functions and commands |new-user-defined| +New interfaces |interfaces-5.2| +New ports |ports-5.2| +Multi-byte support |new-multi-byte| +New functions |new-functions-5.2| +New options |new-options-5.2| +New Ex commands |new-ex-commands-5.2| +Changed |changed-5.2| +Added |added-5.2| +Fixed |fixed-5.2| + +VERSION 5.3 |version-5.3| +Changed |changed-5.3| +Added |added-5.3| +Fixed |fixed-5.3| + +VERSION 5.4 |version-5.4| +Runtime directory introduced |new-runtime-dir| +Filetype introduced |new-filetype-5.4| +Vim script line continuation |new-line-continuation| +Improved session files |improved-sessions| +Autocommands improved |improved-autocmds-5.4| +Encryption |new-encryption| +GTK GUI port |new-GTK-GUI| +Menu changes |menu-changes-5.4| +Viminfo improved |improved-viminfo| +Various new commands |new-commands-5.4| +Various new options |new-options-5.4| +Vim scripts |new-script-5.4| +Avoid hit-enter prompt |avoid-hit-enter| +Improved quickfix |improved-quickfix| +Regular expressions |regexp-changes-5.4| +Changed |changed-5.4| +Added |added-5.4| +Fixed |fixed-5.4| + +VERSION 5.5 |version-5.5| +Changed |changed-5.5| +Added |added-5.5| +Fixed |fixed-5.5| + +VERSION 5.6 |version-5.6| +Changed |changed-5.6| +Added |added-5.6| +Fixed |fixed-5.6| + +VERSION 5.7 |version-5.7| +Changed |changed-5.7| +Added |added-5.7| +Fixed |fixed-5.7| + +VERSION 5.8 |version-5.8| +Changed |changed-5.8| +Added |added-5.8| +Fixed |fixed-5.8| + +============================================================================== + INCOMPATIBLE *incompatible-5* + +Default value for 'compatible' changed *cp-default* +-------------------------------------- + +Vim version 5.0 tries to be more Vi compatible. This helps people who use Vim +as a drop-in replacement for Vi, but causes some things to be incompatible +with version 4.x. + +In version 4.x the default value for the 'compatible' option was off. Now the +default is on. The first thing you will notice is that the "u" command undoes +itself. Other side effects will be that mappings may work differently or not +work at all. + +Since a lot of people switching from Vim 4.x to 5.0 will find this annoying, +the 'compatible' option is switched off if Vim finds a vimrc file. This is a +bit of magic to make sure that 90% of the Vim users will not be bitten by +this change. + +What does this mean? +- If you prefer to run in 'compatible' mode and don't have a vimrc file, you + don't have to do anything. +- If you prefer to run in 'nocompatible' mode and do have a vimrc file, you + don't have to do anything. +- If you prefer to run in 'compatible' mode and do have a vimrc file, you + should put this line first in your vimrc file: > + :set compatible +- If you prefer to run in 'nocompatible' mode and don't have a vimrc file, + you can do one of the following: + - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix). + - Put this command in your .exrc file or $EXINIT: > + :set nocompatible +< - Start Vim with the "-N" argument. + +If you are new to Vi and Vim, using 'nocompatible' is strongly recommended, +because Vi has a lot of unexpected side effects, which are avoided by this +setting. See 'compatible'. + +If you like some things from 'compatible' and some not, you can tune the +compatibility with 'cpoptions'. + +When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode. + + +Text formatting command "Q" changed *Q-command-changed* +----------------------------------- + +The "Q" command formerly formatted lines to the width the 'textwidth' option +specifies. The command for this is now "gq" (see |gq| for more info). The +reason for this change is that "Q" is the standard Vi command to enter "Ex" +mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info). + +If you still want to use "Q" for formatting, use this mapping: > + :noremap Q gq +And if you also want to use the functionality of "Q": > + :noremap gQ Q + + +Command-line arguments changed *cmdline-changed* +------------------------------ + +Command-line file-arguments and option-arguments can now be mixed. You can +give options after the file names. Example: > + vim main.c -g + +This is not possible when editing a file that starts with a '-'. Use the "--" +argument then |---|: > + vim -g -- -main.c + +"-v" now means to start Ex in Vi mode, use "-R" for read-only mode. +old: "vim -v file" |-v| +new: "vim -R file" |-R| + +"-e" now means to start Vi in Ex mode, use "-q" for quickfix. +old: "vim -e errorfile" |-e| +new: "vim -q errorfile" |-q| + +"-s" in Ex mode now means to run in silent (batch) mode. |-s-ex| + +"-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga). +old: "vim -x file" |-x| +new: "vim -f file" |-f| + +Vim allows up to ten "+cmd" and "-c cmd" arguments. Previously Vim executed +only the last one. + +"-n" now overrides any setting for 'updatecount' in a vimrc file, but not in +a gvimrc file. + + +Autocommands are kept *autocmds-kept* +--------------------- + +Before version 5.0, autocommands with the same event, file name pattern, and +command could appear only once. This was fine for simple autocommands (like +setting option values), but for more complicated autocommands, where the same +command might appear twice, this restriction caused problems. Therefore +Vim stores all autocommands and keeps them in the order that they are defined. + +The most obvious side effect of this change is that when you source a vimrc +file twice, the autocommands in it will be defined twice. To avoid this, do +one of these: + +- Remove any autocommands that might potentially defined twice before + defining them. Example: > + :au! * *.ext + :au BufEnter *.ext ... + +- Put the autocommands inside an ":if" command. Example: > + if !exists("did_ext_autocmds") + let did_ext_autocmds = 1 + autocmd BufEnter *.ext ... + endif + +- Put your autocommands in a different autocommand group so you can remove + them before defining them |:augroup|: > + augroup uncompress + au! + au BufReadPost *.gz ... + augroup END + + +Use of 'hidden' changed *hidden-changed* +----------------------- + +In version 4.x, only some commands used the 'hidden' option. Now all commands +uses it whenever a buffer disappears from a window. + +Previously you could do ":buf xxx" in a changed buffer and that buffer would +then become hidden. Now you must set the 'hidden' option for this to work. + +The new behavior is simpler: whether Vim hides buffers no longer depends on +the specific command that you use. +- with 'hidden' not set, you never get hidden buffers. Exceptions are the + ":hide" and ":close!" commands and, in rare cases, where you would otherwise + lose changes to the buffer. +- With 'hidden' set, you almost never unload a buffer. Exceptions are the + ":bunload" or ":bdel" commands. + +":buffer" now supports a "!": abandon changes in current buffer. So do +":bnext", ":brewind", etc. + + +Text object commands changed *text-objects-changed* +---------------------------- + +Text object commands have new names. This allows more text objects and makes +characters available for other Visual mode commands. Since no more single +characters were available, text objects names now require two characters. +The first one is always 'i' or 'a'. + OLD NEW ~ + a aw a word |v_aw| + A aW a WORD |v_aW| + s as a sentence |v_as| + p ap a paragraph |v_ap| + S ab a () block |v_ab| + P aB a {} block |v_aB| + +There is another set of text objects that starts with "i", for "inner". These +select the same objects, but exclude white space. + + +X-Windows Resources removed *x-resources* +-------------------------- + +Vim no longer supports the following X resources: +- boldColor +- italicColor +- underlineColor +- cursorColor + +Vim now uses highlight groups to set colors. This avoids the confusion of +using a bold Font, which would imply a certain color. See |:highlight| and +|gui-resources|. + + +Use of $VIM *$VIM-use* +----------- + +Vim now uses the VIM environment variable to find all Vim system files. This +includes the global vimrc, gvimrc, and menu.vim files and all on-line help +and syntax files. See |$VIM|. Starting with version 5.4, |$VIMRUNTIME| can +also be used. +For Unix, Vim sets a default value for $VIM when doing "make install". +When $VIM is not set, its default value is the directory from 'helpfile', +excluding "/doc/help.txt". + + +Use of $HOME for MS-DOS and Win32 *$HOME-use* +--------------------------------- + +The MS-DOS and Win32 versions of Vim now first check $HOME when searching for +a vimrc or exrc file and for reading/storing the viminfo file. Previously Vim +used $VIM for these systems, but this causes trouble on a system with several +users. Now Vim uses $VIM only when $HOME is not set or the file is not found +in $HOME. See |_vimrc|. + + +Tags file format changed *tags-file-changed* +------------------------ + +Only Tabs are allowed to separate fields in a tags file. This allows for +spaces in a file name and is still Vi compatible. In previous versions of +Vim, any white space was allowed to separate the fields. If you have a file +which doesn't use a single Tab between fields, edit the tags file and execute +this command: > + :%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/ + + +Options changed *options-changed* +--------------- + +The default value of 'errorfile' has changed from "errors.vim" to "errors.err". +The reason is that only Vim scripts should have the ".vim" extensions. + +The ":make" command no longer uses the 'errorfile' option. This prevents the +output of the ":make" command from overwriting a manually saved error file. +":make" uses the 'makeef' option instead. This also allows for generating a +unique name, to prevent concurrently running ":make" commands from overwriting +each other's files. + +With 'insertmode' set, a few more things change: +- <Esc> in Normal mode goes to Insert mode. +- <Esc> in Insert mode doesn't leave Insert mode. +- When doing ":set im", go to Insert mode immediately. + +Vim considers a buffer to be changed when the 'fileformat' (formerly the +'textmode' option) is different from the buffer's initial format. + + +CTRL-B in Insert mode gone *i_CTRL-B-gone* +-------------------------- + +When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to +toggle the 'revins' option. Unfortunately, some people hit the 'B' key +accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to +undo this. Since toggling the 'revins' option can easily be done with the +mapping below, this use of the CTRL-B key is disabled. You can still use the +CTRL-_ key for this |i_CTRL-_|. > + :imap <C-B> <C-O>:set revins!<CR> + +============================================================================== + NEW FEATURES *new-5* + +Syntax highlighting *new-highlighting* +------------------- + +Vim now has a very flexible way to highlighting just about any type of file. +See |syntax|. Summary: > + :syntax on + +Colors and attributes can be set for the syntax highlighting, and also for +other highlighted items with the ':' flag in the 'highlight' option. All +highlighted items are assigned a highlight group which specifies their +highlighting. See |:highlight|. The default colors have been improved. + +You can use the "Normal" group to set the default fore/background colors for a +color terminal. For the GUI, you can use this group to specify the font, too. + +The "2html.vim" script can be used to convert any file that has syntax +highlighting to HTML. The colors will be exactly the same as how you see them +in Vim. With a HTML viewer you can also print the file with colors. + + +Built-in script language *new-script* +------------------------ + +A few extra commands and an expression evaluator enable you to write simple +but powerful scripts. Commands include ":if" and ":while". Expressions can +manipulate numbers and strings. You can use the '=' register to insert +directly the result of an expression. See |expression|. + + +Perl and Python support *new-perl-python* +----------------------- + +Vim can call Perl commands with ":perldo", ":perl", etc. See |perl|. +Patches made by Sven Verdoolaege and Matt Gerassimoff. + +Vim can call Python commands with ":python" and ":pyfile". See |python|. + +Both of these are only available when enabled at compile time. + + +Win32 GUI version *added-win32-GUI* +----------------- + +The GUI has been ported to MS Windows 95 and NT. All the features of the X11 +GUI are available to Windows users now. |gui-w32| +This also fixes problems with running the Win32 console version under Windows +95, where console support has always been bad. +There is also a version that supports OLE automation interface. |if_ole.txt| +Vim can be integrated with Microsoft Developer Studio using the VisVim DLL. +It is possible to produce a DLL version of gvim with Borland C++ (Aaron). + + +VMS version *added-VMS* +----------- + +Vim can now also be used on VMS systems. Port done by Henk Elbers. +This has not been tested much, but it should work. +Sorry, no documentation! + + +BeOS version *added-BeOS* +------------ + +Vim can be used on BeOS systems (including the BeBox). (Olaf Seibert) +See |os_beos.txt|. + + +Macintosh GUI version *added-Mac* +--------------------- + +Vim can now be used on the Macintosh. (Dany St-Amant) +It has not been tested much yet, be careful! +See |os_mac.txt|. + + +More Vi compatible *more-compatible* +------------------ + +There is now a real Ex mode. Started with the "Q" command, or by calling the +executable "ex" or "gex". |Ex-mode| + +Always allow multi-level undo, also in Vi compatible mode. When the 'u' flag +in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo +(like "." in Nvi). + + +Read input from stdin *read-stdin* +--------------------- + +When using the "-" command-line argument, Vim reads its text input from stdin. +This can be used for putting Vim at the end of a pipe: > + grep "^a.*" *.c | vim - +See |--|. + + +Regular expression patterns *added-regexp* +--------------------------- + +Added specifying a range for the number of matches of a atom: "\{a,b}". |/\{| +Added the "shortest match" regexp "\{-}" (Webb). +Added "\s", matches a white character. Can replace "[ \t]". |/\s| +Added "\S", matches a non-white character. Can replace "[^ \t]". |/\S| + + +Overloaded tags *tag-overloaded* +--------------- + +When using a language like C++, there can be several tags for the same +tagname. Commands have been added to be able to jump to any of these +overloaded tags: +|:tselect| List matching tags, and jump to one of them. +|:stselect| Idem, and split window. +|g_CTRL-]| Do ":tselect" with the word under the cursor. + + After ":ta {tagname}" with multiple matches: +|:tnext| Go to next matching tag. +|:tprevious| Go to previous matching tag. +|:trewind| Go to first matching tag. +|:tlast| Go to last matching tag. + +The ":tag" command now also accepts wildcards. When doing command-line +completion on tags, case-insensitive matching is also available (at the end). + + +New commands *new-commands* +------------ + +|:amenu| Define menus for all modes, inserting a CTRL-O for Insert + mode, ESC for Visual and CTRL-C for Cmdline mode. "amenu" is + used for the default menus and the Syntax menu. + +|:augroup| Set group to be used for following autocommands. Allows the + grouping of autocommands to enable deletion of a specific + group. + +|:crewind| Go to first error. +|:clast| Go to last error. + +|:doautoall| Execute autocommands for all loaded buffers. + +|:echo| Echo its argument, which is an expression. Can be used to + display messages which include variables. + +|:execute| Execute its argument, which is an expression. Can be used to + built up an Ex command with anything. + +|:hide| Works like ":close". + +|:if| Conditional execution, for built-in script language. + +|:intro| Show introductory message. This is always executed when Vim + is started without file arguments. + +|:let| Assign a value to an internal variable. + +|:omap| Map only in operator-pending mode. Makes it possible to map + text-object commands. + +|:redir| Redirect output of messages to a file. + +|:update| Write when buffer has changed. + +|:while| While-loop for built-in script language. + +Visual mode: +|v_O| "O" in Visual block mode, moves the cursor to the other corner + horizontally. +|v_D| "D" in Visual block mode deletes till end of line. + +Insert mode: +|i_CTRL-]| Triggers abbreviation, without inserting any character. + + +New options *added-options* +----------- + +'background' Used for selecting highlight color defaults. Also used in + "syntax.vim" for selecting the syntax colors. Often set + automatically, depending on the terminal used. + +'complete' Specifies how Insert mode completion works. + +'eventignore' Makes it possible to ignore autocommands temporarily. + +'fileformat' Current file format. Replaces 'textmode'. +'fileformats' Possible file formats. Replaces 'textauto'. + New is that this also supports Macintosh format: A single <CR> + separates lines. + The default for 'fileformats' for MS-DOS, Win32 and OS/2 is + "dos,unix", also when 'compatible' set. Unix type files + didn't work anyway when 'fileformats' was empty. + +'guicursor' Set the cursor shape and blinking in various modes. + Default is to adjust the cursor for Insert and Replace mode, + and when an operator is pending. Blinking is default on. + +'fkmap' Farsi key mapping. + +'hlsearch' Highlight all matches with the last used search pattern. + +'hkmapp' Phonetic Hebrew mapping (Ilya Dogolazky). + +'iconstring' Define the name of the icon, when not empty. (version 5.2: the + string is used literally, a newline can be used to make two + lines). + +'lazyredraw' Don't redraw the screen while executing macros, registers or + other not typed commands. + +'makeef' Errorfile to be used for ":make". "##" is replaced with a + unique number. Avoids that two Vim sessions overwrite each + others errorfile. The Unix default is "/tmp/vim##.err"; for + Amiga "t:vim##.Err, for others "vim##.err". + +'matchtime' 1/10s of a second to show a matching paren, when 'showmatch' + is set. Like Nvi. + +'mousehide' Hide mouse pointer in GUI when typing text. + +'nrformats' Defines what bases Vim will consider for numbers when using + the CTRL-A and CTRL-X commands. Default: "hex,octal". + +'shellxquote' Add extra quotes around the whole shell command, including + redirection. + +'softtabstop' Make typing behave like tabstop is set at this value, without + changing the value of 'tabstop'. Makes it more easy to keep + 'ts' at 8, while still getting four spaces for a <Tab>. + +'titlestring' String for the window title, when not empty. (version 5.2: + this string is used literally, a newline can be used to make + two lines). + +'verbose' Level of verbosity. Makes it possible to show which .vimrc, + .exrc, .viminfo files etc. are used for initializing. Also + to show autocommands that are being executed. Can also be set + by using the "-V" command-line argument. + + +New command-line arguments *added-cmdline-args* +-------------------------- + +|-U| Set the gvimrc file to be used. Like "-u" for the vimrc. + +|-V| Set the 'verbose' option. E.g. "vim -V10". + +|-N| Start in non-compatible mode. + +|-C| Start in compatible mode. + +|-Z| Start in restricted mode, disallow shell commands. Can also + be done by calling the executable "rvim". + +|-h| Show usage information and exit. + + +Various additions *added-various* +----------------- + +Added support for SNiFF+ connection (submitted by Toni Leherbauer). Vim can +be used as an editor for SNiFF. No documentation available... + +For producing a bug report, the bugreport.vim script has been included. +Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file +"bugreport.txt" in the current directory. |bugs| + +Added range to ":normal" command. Now you can repeat the same command for +each line in the range. |:normal-range| + +Included support for the Farsi language (Shiran). Only when enabled at +compile time. See |farsi|. + +============================================================================== + IMPROVEMENTS *improvements-5* + +Performance: +- When 'showcmd' was set, mappings would execute much more slowly because the + output would be flushed very often. Helps a lot when executing the "life" + macros with 'showcmd' set. +- Included patches for binary searching in tags file (David O'Neill). + Can be disabled by resetting the 'tagbsearch' option. +- Don't update the ruler when repeating insert (slowed it down a lot). +- For Unix, file name expansion is now done internally instead of starting a + shell for it. +- Expand environment variables with expand_env(), instead of calling the + shell. Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster. +- Reduced output for cursor positioning: Use CR-LF for moving to first few + columns in next few lines; Don't output CR twice when using termios. +- Optimized cursor positioning. Use CR, BS and NL when it's shorter than + absolute cursor positioning. +- Disable redrawing while repeating insert "1000ii<Esc>". +- Made "d$" or "D" for long lines a lot faster (delete all characters at once, + instead of one by one). +- Access option table by first letter, instead of searching from start. +- Made setting special highlighting attributes a lot faster by using + highlight_attr[], instead of searching in the 'highlight' string. +- Don't show the mode when redrawing is disabled. +- When setting an option, only redraw the screen when required. +- Improved performance of Ex commands by using a lookup table for the first + character. + +Options: +'cinoptions' Added 'g' flag, for C++ scope declarations. +'cpoptions' Added 'E' flag: Disallow yanking, deleting, etc. empty text + area. Default is to allow empty yanks. When 'E' is included, + "y$" in an empty line now is handled as an error (Vi + compatible). + Added 'j' flag: Only add two spaces for a join after a '.', + not after a '?' or '!'. + Added 'A' flag: don't give ATTENTION message. + Added 'L' flag: When not included, and 'list' is set, + 'textwidth' formatting works like 'list' is not set. + Added 'W' flag: Let ":w!" behave like Vi: don't overwrite + readonly files, or a file owned by someone else. +'highlight' Added '@' flag, for '@' characters after the last line on the + screen, and '$' at the end of the line when 'list' is set. + Added 'i' flag: Set highlighting for 'incsearch'. Default + uses "IncSearch" highlight group, which is linked to "Visual". + Disallow 'h' flag in 'highlight' (wasn't used anymore since + 3.0). +'guifont' Win32 GUI only: When set to "*" brings up a font requester. +'guipty' Default on, because so many people need it. +'path' Can contain wildcards, and "**" for searching a whole tree. +'shortmess' Added 'I' flag to avoid the intro message. +'viminfo' Added '%' flag: Store buffer list in viminfo file. + +- Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32. Most + machines have much more RAM now that prices have dropped. +- Implemented ":set all&", set all options to their default value. |:set| + +Swap file: +- Don't create a swap file for a readonly file. Then create one on the first + change. Also create a swapfile when the amount of memory used is getting + too high. |swap-file| +- Make swap file "hidden", if possible. On Unix this is done by prepending a + dot to the swap file name. When long file names are used, the DJGPP and + Win32 versions also prepend a dot, in case a file on a mounted Unix file + system is edited. |:swapname| On MSDOS the hidden file attribute is NOT + set, because this causes problems with share.exe. +- 'updatecount' always defaults to non-zero, also for Vi compatible mode. + This means there is a swap file, which can be used for recovery. + +Tags: +- Included ctags 2.0 (Darren Hiebert). The syntax for static tags changed + from + {tag}:{fname} {fname} {command} + to + {tag} {fname} {command};" file: + Which is both faster to parse, shorter and Vi compatible. The old format is + also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS). + |tags-file-format| +- Completion of tags now also includes static tags for other files, at the + end. +- Included "shtags" from Stephen Riehm. +- When finding a matching tag, but the file doesn't exist, continue searching + for another match. Helps when using the same tags file (with links) for + different versions of source code. +- Give a tag with a global match in the current file a higher priority than a + global match in another file. + +Included xxd version V1.8 (Juergen Weigert). + +Autocommands: +- VimLeave autocommands are executed after writing the viminfo file, instead + of before. |VimLeave| +- Allow changing autocommands while executing them. This allows for + self-modifying autocommands. (idea from Goldberg) +- When using autocommands with two or more patterns, could not split + ":if/:endif" over two lines. Now all matching autocommands are executed in + one do_cmdline(). +- Autocommands no longer change the command repeated with ".". +- Search patterns are restored after executing autocommands. This avoids + that the 'hlsearch' highlighting is messed up by autocommands. +- When trying to execute an autocommand, also try matching the pattern with + the short file name. Helps when short file name is different from full + file name (expanded symbolic links). |autocmd-patterns| +- Made the output of ":autocmd" shorter and look better. +- Expand <sfile> in an ":autocmd" when it is defined. |<sfile>| +- Added "nested" flag to ":autocmd", allows nesting. |autocmd-nested| +- Added [group] argument to ":autocmd". Overrides the currently set group. + |autocmd-groups| +- new events: + |BufUnload| before a buffer is unloaded + |BufDelete| before a buffer is deleted from the buffer list + |FileChangedShell| when a file's modification time has changed after + executing a shell command + |User| user-defined autocommand +- When 'modified' was set by a BufRead* autocommand, it was reset again + afterwards. Now the ":set modified" is remembered. + +GUI: +- Improved GUI scrollbar handling when redrawing is slower than the scrollbar + events are generated. +- "vim -u NONE" now also stops loading the .gvimrc and other GUI inits. |-u| + Use "-U" to use another gvimrc file. |-U| +- Handle CTRL-C for external command, also for systems where "setsid()" is + supported. +- When starting the GUI, restrict the window size to the screen size. +- The default menus are read from $VIMRUNTIME/menu.vim. This allows for a + customized default menu. |menu.vim| +- Improved the default menus. Added File/Print, a Window menu, Syntax menu, + etc. +- Added priority to the ":menu" command. Now each menu can be put in a place + where you want it, independent of the order in which the menus are defined. + |menu-priority| + +Give a warning in the intro screen when running the Win32 console version on +Windows 95 because there are problems using this version under Windows 95. +|win32-problems| + +Added 'e' flag for ":substitute" command: Don't complain when not finding a +match (Campbell). |:s| + +When using search commands in a mapping, only the last one is kept in the +history. Avoids that the history is trashed by long mappings. + +Ignore characters after "ex", "view" and "gvim" when checking startup mode. +Allows the use of "gvim5" et. al. |gvim| "gview" starts the GUI in readonly +mode. |gview| + +When resizing windows, the cursor is kept in the same relative position, if +possible. (Webb) + +":all" and ":ball" no longer close and then open a window for the same buffer. +Avoids losing options, jumplist, and other info. + +"-f" command-line argument is now ignored if Vim was compiled without GUI. +|-f| + +In Visual block mode, the right mouse button picks up the nearest corner. + +Changed default mappings for DOS et al. Removed the DOS-specific mappings, +only use the Windows ones. Added Shift-Insert, Ctrl-Insert, Ctrl-Del and +Shift-Del. + +Changed the numbers in the output of ":jumps", so you can see where {count} +CTRL-O takes you. |:jumps| + +Using "~" for $HOME now works for all systems. |$HOME| + +Unix: Besides using CTRL-C, also use the INTR character from the tty settings. +Somebody has INTR set to DEL. + +Allow a <LF> in a ":help" command argument to end the help command, so another +command can follow. + +Doing "%" on a line that starts with " #if" didn't jump to matching "#else". +Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag. +|%| + +Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved +|ins-completion|: +- 'complete' option added. +- When 'nowrapscan' is set, and no match found, report the searched direction + in the error message. +- Repeating CTRL-X commands adds following words/lines after the match. +- When adding-expansions, accept single character matches. +- Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole + insertion. Also fixes not being able to backspace over a word that has been + inserted with CTRL-N. + +When copying characters in Insert mode from previous/next line, with CTRL-E or +CTRL-Y, 'textwidth' is no longer used. |i_CTRL-E| + +Commands that move in the arglist, like ":n" and ":rew", keep the old cursor +position of the file (this is mostly Vi compatible). + +Vim now remembers the '< and '> marks for each buffer. This fixes a problem +that a line-delete in one buffer invalidated the '< and '> marks in another +buffer. |'<| + +For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable. +When using the executable path for $VIM, remove "src/" when present. Should +make Vim find the docs and syntax files when it is run directly after +compiling. |$VIM| + +When quitting Visual mode with <Esc>, the cursor is put at start of the Visual +area (like after executing an operator). + +Win32 and Unix version: Removed 1100 character limit on external commands. + +Added possibility to include a space in a ":edit +command" argument, by +putting a backslash before it. |+cmd| + +After recovery, BufReadPost autocommands are applied. |:recover| + +Added color support for "os2ansi", OS/2 console. (Slootman) |os2ansi| + +Allow "%:p:h" when % is empty. |:_%| + +Included "<sfile>": file name from the ":source" command. |<sfile>| + +Added "<Bslash>" special character. Helps for avoiding multiple backslashes +in mappings and menus. + +In a help window, a double-click jumps to the tag under the cursor (like +CTRL-]). + +<C-Left> and <C-Right> now work like <S-Left> and <S-Right>, move a word +forward/backward (Windows compatible). |<C-Left>| + +Removed the requirement for a ":version" command in a .vimrc file. It wasn't +used for anything. You can use ":if" to handle differences between versions. +|:version| + +For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't +make a difference between '/' and '\' for path separator. + +New termcap options: +"mb": blink. Can only be used by assigning it to one of the other highlight + options. |t_mb| +"bc": backspace character. |t_bc| +"nd": Used for moving the cursor right in the GUI, to avoid removing one line + of pixels from the last bold character. |t_nd| +"xs": highlighting not erased by overwriting, for hpterm. Combined with + 'weirdinvert'. Visual mode works on hpterm now. |t_xs| + +Unix: Set time of patch and backup file same as original file. (Hiebert). + +Amiga: In QuickFix mode no longer opens another window. Shell commands can be +used now. + +Added decmouse patches from David Binette. Can now use Dec and Netterm mouse. +But only when enabled at compile time. + +Added '#' register: Alternate file name |quote#|. Display '#' register with +":dis" command. |:display| + +Removed ':' from 'isfname' default for Unix. Check for "://" in a file name +anyway. Also check for ":\\", for MS-DOS. + +Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in +the man command. "2K" results in "!man 2 <cword>". |K| + +When using "gf" on a relative path name, remove "../" from the file name, like +it's done for file names in the tags file. |gf| + +When finishing recording, don't make the recorded register the default put +register. + +When using "!!", don't put ":5,5!" on the command-line, but ":.!". And some +other enhancements to replace the line number with "." or "$" when possible. + +MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo. It's more consistent: +.vimrc/_vimrc and .viminfo/_viminfo + +For systems where case doesn't matter in file names (MSDOS, Amiga), ignore +case while sorting file names. For buffer names too. + +When reading from stdin doesn't work, read from stderr (helps for "foo | xargs +vim"). + +32 bit MS-DOS version: Replaced csdpmi3 by csdpmi4. + +Changed <C-Left> and <C-Right> to skip a WORD instead of a word. + +Warning for changed modified time when overwriting a file now also works on +other systems than Unix. + +Unix: Changed the defaults for configure to be the same as the defaults for +Makefile: include GUI, Perl, and Python. + +Some versions of Motif require "-lXpm". Added check for this in configure. + +Don't add "-L/usr/lib" to the link line, causes problems on a few systems. + +============================================================================== + COMPILE TIME CHANGES *compile-changes-5* + +When compiling, allow a choice for minimal, normal or maximal features in an +easy way, by changing a single line in src/feature.h. +The DOS16 version has been compiled with minimal features to avoid running +out of memory too quickly. |dos16| +The Win32, DJGPP, and OS/2 versions use maximal features, because they have +enough memory. +The Amiga version is available with normal and maximal features. + +Added "make test" to Unix version Makefile. Allows for a quick check if most +"normal" commands work properly. Also tests a few specific commands. + +Added setlocale() with codepage support for DJGPP version. + +autoconf: +- Added autoconf check for -lXdmcp. +- Included check for -lXmu, no longer needed to edit the Makefile for this. +- Switched to autoconf 2.12. +- Added configure check for <poll.h>. Seems to be needed when including + Perl on Linux? +- termlib is now checked before termcap. +- Added configure check for strncasecmp(), stricmp() and strnicmp(). Added + vim_stricmp() for when there's no library function for stricmp(). +- Use "datadir" in configure, instead of our own check for HELPDIR. + +Removed "make proto" from Makefile.manx. Could not make it work without a lot +of #ifdefs. + +Removed "proto/" from paths in proto.h. Needed for the Mac port. + +Drastically changed Makefile.mint. Now it includes the Unix Makefile. + +Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor) + +All source files are now edited with a tabstop of 8 instead of 4, which is +better when debugging and using other tools. 'softtabstop' is set to 4, to +make editing easier. + +Unix: Added "link.sh" script, which removes a few unnecessary libraries from +the link command. + +Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined. +|digraphs-default| + +============================================================================== + BUG FIXES *bug-fixes-5* + +Note: Some of these fixes may only apply to test versions which were + created after version 4.6, but before 5.0. + + +When doing ":bdel", try going to the next loaded buffer. Don't rewind to the +start of the buffer list. + +mch_isdir() for Unix returned TRUE for "" on some systems. + +Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands. Don't use +backslashes in the temp file names. + +On linux, with a FAT file system, could get spurious "file xxx changed since +editing started" messages, because the time is rounded off to two seconds +unexpectedly. + +Crash in GUI, when selecting a word (double click) and then extend until an +empty line. + +For systems where isdigit() can't handle characters > 255, get_number() caused +a crash when moving the mouse during the prompt for recovery. + +In Insert mode, "CTRL-O P" left the cursor on the last inserted character. +Now the cursor is left after the last putted character. + +When quickfix found an error type other than 'e' or 'w', it was never printed. + +A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument. + +Some systems create a file when generating a temp file name. Filtering would +then create a backup file for this, which was never deleted. Now no backup +file is made when filtering. + +simplify_filename() could remove a ".." after a link, resulting in the wrong +file name. Made simplify_filename also work for MSDOS. Don't use it for +Amiga, since it doesn't have "../". + +otherfile() was unreliable when using links. Could think that reading/writing +was for a different file, when it was the same. + +Pasting with mouse in Replace mode didn't replace anything. + +Window height computed wrong when resizing a window with an autocommand (could +cause a crash). + +":s!foo!bar!" wasn't possible (Vi compatible). + +do_bang() freed memory twice when called recursively, because of autocommands +(test11). Thanks to Electric Fence! + +"v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the +command-line, and inverted the cursor. + +":mkexrc" didn't check for failure to open the file, causing a crash. +(Felderhoff). + +Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to +be recognized. Both console and GUI version. + +Athena GUI: Crash when removing a menu item. Now Vim doesn't crash, but the +reversing of the menu item is still wrong. + +Always reset 'list' option for the help window. + +When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be +in the wrong line and the window to be scrolled (Acevedo). + +After ":set all&", 'lines' and 'ttytype' were still non-default, because the +defaults never got set. Now the defaults for 'lines' and 'columns' are set +after detecting the window size. 'term' and 'ttytype' defaults are set when +detecting the terminal type. + +For (most) non-Unix systems, don't add file names with illegal characters when +expanding. Fixes "cannot open swapfile" error when doing ":e *.burp", when +there is no match. + +In X11 GUI, drawing part of the cursor obscured the text. Now the text is +drawn over the cursor, like when it fills the block. (Seibert) + +when started with "-c cmd -q errfile", the cursor would be left in line 1. +Now a ":cc" is done after executing "cmd". + +":ilist" never ignored case, even when 'ignorecase' set. + +"vim -r file" for a readonly file, then making a change, got ATTENTION message +in insert mode, display mixed up until <Esc> typed. Also don't give ATTENTION +message after recovering a file. + +The abbreviation ":ab #i #include" could not be removed. + +CTRL-L completion (longest common match) on command-line didn't work properly +for case-insensitive systems (MS-DOS, Windows, etc.). (suggested by Richard +Kilgore). + +For terminals that can hide the cursor ("vi" termcap entry), resizing the +window caused the cursor to disappear. + +Using an invalid mark in an Ex address didn't abort the command. + +When 'smarttab' set, would use 'shiftround' when inserting a TAB after a +space. Now it always rounds to a tabstop. + +Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute" +and ":change". (Acevedo). + +"d$" in an empty line still caused an error, even when 'E' is not in +'cpoptions'. + +Help files were stored in the viminfo buffer list without a path. + +GUI: Displaying cursor was not synchronized with other displaying. Caused +several display errors. For example, when the last two lines in the file +start with spaces, "dd" on the last line copied text to the (then) last line. + +Win32: Needed to type CTRL-SHIFT-- to get CTRL-_. + +GUI: Moving the cursor forwards over bold text would remove one column of bold +pixels. + +X11 GUI: When a bold character in the last column was scrolled up or down, one +column of pixels would not be copied. + +Using <BS> to move the cursor left can sometimes erase a character. Now use +"le" termcap entry for this. + +Keyword completion with regexp didn't work. e.g., for "b.*crat". + +Fixed: With CTRL-O that jumps to another file, cursor could end up just after +the line. + +Amiga: '$' was missing from character recognized as wildcards, causing $VIM +sometimes not to be expanded. + +":change" didn't adjust marks for deleted lines. + +":help [range]" didn't work. Also for [pattern], [count] and [quotex]. + +For 'cindent'ing, typing "class::method" doesn't align like a label when the +second ':' is typed. +When inserting a CR with 'cindent' set (and a bunch of other conditions) the +cursor went to a wrong location. +'cindent' was wrong for a line that ends in '}'. +'cindent' was wrong after "else {". + +While editing the cmdline in the GUI, could not use the mouse to select text +from the command-line itself. + +When deleting lines, marks in tag stack were only adjusted for the current +window, not for other windows on the same buffer. + +Tag guessing could find a function "some_func" instead of the "func" we were +looking for. + +Tags file name relative to the current file didn't work. + +":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause +a scroll up. Now you no longer have to hit <CR>. + +X11 GUI: Selecting text could cause a crash. + +32 bit DOS version: CTRL-C in external command killed Vim. When SHELL is set +to "sh.exe", external commands didn't work. Removed using of command.com, no +longer need to set 'shellquote'. + +Fixed crash when using ":g/pat/i". + +Fixed (potential) crash for X11 GUI, when using an X selection. Was giving a +pointer on the stack to a callback function, now it's static. + +Using "#" and "*" with an operator didn't work. E.g. "c#". + +Command-line expansion didn't work properly after ":*". (Acevedo) + +Setting 'weirdinvert' caused highlighting to be wrong in the GUI. + +":e +4 #" didn't work, because the "4" was in unallocated memory (could cause +a crash). + +Cursor position was wrong for ":e #", after ":e #" failed, because of changes +to the buffer. + +When doing ":buf N", going to a buffer that was edited with ":view", the +readonly flag was reset. Now make a difference between ":e file" and ":buf +file": Only set/reset 'ro' for the first one. + +Avoid |hit-enter| prompt when not able to write viminfo on exit. + +When giving error messages in the terminal where the GUI was started, GUI +escape codes would be written to the terminal. In an xterm this could be seen +as a '$' after the message. + +Mouse would not work directly after ":gui", because full_screen isn't set, +which causes starttermcap() not to do its work. + +'incsearch' did not scroll the window in the same way as the actual search. +When 'nowrap' set, incsearch didn't show a match when it was off the side of +the screen. Now it also shows the whole match, instead of just the cursor +position (if possible). + +":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as +the start of a comment. Now it's Vi compatible. + +Using <Up><Left><Left><Up> in the command-line, when there is no previous +cmdline in the history, inserted a NUL on the command-line. + +"i<Esc>" when on a <Tab> in column 0 left the cursor in the wrong place. + +GUI Motif: When adding a lot of menu items, the menu bar goes into two rows. +Deleting menu items, reducing the number of rows, now also works. + +With ":g/pat/s//foo/c", a match in the first line was scrolled off of the +screen, so you could not see it. +When using ":s//c", with 'nowrap' set, a match could be off the side of the +screen, so you could not see it. + +When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would +crash. mch_Fullname can now handle file names in read-only memory. (Lottem) + +When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects +when using CTRL-D next. Also, when repeating inserted text that included "0 +CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo) +Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0' +or '^', removed the '0' or '^' and more indent. + +The command "2".p" caused the last inserted text to be executed as commands. +(Acevedo) + +Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted. + +Repeating Insert completion could fail if there are special characters in the +text. (Acevedo) + +":normal /string<CR>" caused the window to scroll. Now all ":normal" commands +are executed without scrolling messages. + +Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as +commands. + +Line wrapping for 'tw' was done one character off for insert expansion +inserts. + +buffer_exists() function didn't work properly for buffer names with a symbolic +link in them (e.g. when using buffer_exists(#)). + +Removed the "MOTIF_COMMENT" construction from Makefile. It now works with +FreeBSD make, and probably with NeXT make too. + +Matching the 'define' and 'include' arguments now honor the settings for +'ignorecase'. (Acevedo) + +When one file shown in two windows, Visual selection mixed up cursor position +in current window and other window. + +When doing ":e file" from a help file, the 'isk' option wasn't reset properly, +because of a modeline in the help file. + +When doing ":e!", a cursor in another window on the same buffer could become +invalid, leading to "ml_get: invalid lnum" errors. + +Matching buffer name for when expanded name has a different path from not +expanded name (Brugnara). + +Normal mappings didn't work after an operator. For example, with ":map Q gq", +"QQ" didn't work. + +When ":make" resulted in zero errors, a "No Errors" error message was given +(which breaks mappings). + +When ":sourcing" a file, line length was limited to 1024 characters. CTRL-V +before <EOL> was not handled Vi compatible. (Acevedo) + +Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event. (Heimann) + +CTRL-X CTRL-I only found one match per line. (Acevedo) +When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message +was stuck. + +Finally managed to ignore the "Quit" menu entry of the Window manager! Now +Vim only exists when there are no changed buffers. + +Trying to start the GUI when $DISPLAY is not set resulted in a crash. +When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks +for flying Vim". +When $DISPLAY not set, starting "gvim" (dropping back to vim) and then +selecting text with the mouse caused a crash. + +"J", with 'joinspaces' set, on a line ending in ". ", caused one space too +many to be added. (Acevedo) + +In insert mode, a CTRL-R {regname} which didn't insert anything left the '"' +on the screen. + +":z10" didn't work. (Clapp) + +"Help "*" didn't work. + +Renamed a lot of functions, to avoid clashes with POSIX name space. + +When adding characters to a line, making it wrap, the following lines were +sometimes not shifted down (e.g. after a tag jump). + +CTRL-E, with 'so' set and cursor on last line, now does not move cursor as +long as the last line is on the screen. + +When there are two windows, doing "^W+^W-" in the bottom window could cause +the status line to be doubled (not redrawn correctly). + +This command would hang: ":n `cat`". Now connect stdin of the external +command to /dev/null, when expanding. + +Fixed lalloc(0,) error for ":echo %:e:r". (Acevedo) + +The "+command" argument to ":split" didn't work when there was no file name. + +When selecting text in the GUI, which is the output of a command-line command +or an external command, the inversion would sometimes remain. + +GUI: "-mh 70" argument was broken. Now, when menuheight is specified, it is +not changed anymore. + +GUI: When using the scrollbar or mouse while executing an external command, +this caused garbage characters. + +Showmatch sometimes jumped to the wrong position. Was caused by a call to +findmatch() when redrawing the display (when syntax highlighting is on). + +Search pattern "\(a *\)\{3} did not work correctly, also matched "a a". +Problem with brace_count not being decremented. + +Wildcard expansion added too many non-matching file names. + +When 'iskeyword' contains characters like '~', "*" and "#" didn't work +properly. (Acevedo) + +On Linux, on a FAT file system, modification time can change by one second. +Avoid a "file has changed" warning for a one second difference. + +When using the page-switching in an xterm, Vim would position the cursor on +the last line of the window on exit. Also removed the cursor positioning for +":!" commands. + +":g/pat/p" command (partly) overwrote the command. Now the output is on a +separate line. + +With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were +highlighted too. + +"^" on a line with only white space, put cursor beyond the end of the line. + +When deleting characters before where insertion started ('bs' == 2), could not +use abbreviations. + +CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is +non-zero. CTRL-E didn't work when 'so' is big and the line below the window +wraps. CTRL-E, when 'so' is non-zero, at end of the file, caused jumping +up-down. + +":retab" didn't work well when 'list' is set. + +Amiga: When inserting characters at the last line on the screen, causing it +to wrap, messed up the display. It appears that a '\n' on the last line +doesn't always cause a scroll up. + +In Insert mode "0<C-D><C-D>" deleted an extra character, because Vim thought +that the "0" was still there. (Acevedo) + +"z{count}l" ignored the count. Also for "zh" et. al. (Acevedo) + +"S" when 'autoindent' is off didn't delete leading white space. + +"/<Tab>" landed on the wrong character when 'incsearch' is set. + +Asking a yes/no question could cause a |hit-enter| prompt. + +When the file consists of one long line (>4100 characters), making changes +caused various errors and a crash. + +DJGPP version could not save long lines (>64000) for undo. + +"yw" on the last char in the file didn't work. Also fixed "6x" at the end of +the line. "6X" at the start of a line fails, but does not break a mapping. In +general, a movement for an operator doesn't beep or flush a mapping, but when +there is nothing to operate on it beeps (this is Vi compatible). + +"m'" and "m`" now set the '' mark at the cursor position. + +Unix: Resetting of signals for external program didn't work, because SIG_DFL +and NULL are the same! For "!!yes|dd count=1|, the yes command kept on +running. + +Partly fixed: Unix GUI: Typeahead while executing an external command was lost. +Now it's not lost while the command is producing output. + +Typing <S-Tab> in Insert mode, when it isn't mapped, inserted "<S-Tab>". Now +it works like a normal <Tab>, just like <C-Tab> and <M-Tab>. + +Redrawing ruler didn't check for old value correctly (caused UMR warnings in +Purify). + +Negative array index in finish_viminfo_history(). + +":g/^/d|mo $" deleted all the lines. The ":move" command now removes the +:global mark from the moved lines. + +Using "vG" while the last line in the window is a "@" line, didn't update +correctly. Just the "v" showed "~" lines. + +"daw" on the last char of the file, when it's a space, moved the cursor beyond +the end of the line. + +When 'hlsearch' was set or reset, only the current buffer was redrawn, while +this affects all windows. + +CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the +file, put the cursor at the bottom of the window, instead of halfway. + +When scrolling up for ":append" command, not all windows were updated +correctly. + +When 'hlsearch' is set, and an auto-indent is highlighted, pressing <Esc> +didn't remove the highlighting, although the indent was deleted. + +When 'ru' set and 'nosc', using "$j" showed a wrong ruler. + +Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used). + +Mapping <S-Tab> didn't work. Changed the key translations to use the shortest +key code possible. This makes the termcode translations and mappings more +consistent. Now all modifiers work in all combinations, not only with <Tab>, +but also with <Space>, <CR>, etc. + +For Unix, restore three more signals. And Vim catches SIGINT now, so CTRL-C +in Ex mode doesn't make Vim exit. + +""a5Y" yanked 25 lines instead of 5. + +"vrxxx<Esc>" in an empty line could not be undone. + +A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying +when you want to handle what ":make" produced so far). + +":0;/pat" didn't find "pat" in line 1. + +Search for "/test/s+1" at first char of file gave bottom-top message, or +didn't work at all with 'nowrapscan'. + +Bug in viminfo history. Could cause a crash on exit. + +":print" didn't put cursor on first non-blank in line. + +":0r !cat </dev/null" left cursor in line zero, with very strange effects. + +With 'showcmd' set and 'timeoutlen' set to a few seconds, trick to position +the cursor leftwards didn't work. + +AIX stty settings were restored to cs5 instead of cs8 (Winn). + +File name completion didn't work for "zsh" versions that put spaces between +file names, instead of NULs. + +Changed "XawChain*" to "XtChain*", should work for more systems. + +Included quite a few fixes for rightleft mode (Lottem). + +Didn't ask to |hit-enter| when GUI is started and error messages are printed. + +When trying to edit a file in a non-existent directory, ended up with editing +"No file". + +"gqap" to format a paragraph did too much redrawing. + +When 'hlsearch' set, only the current window was updated for a new search +pattern. + +Sometimes error messages on startup didn't cause a |hit-enter| prompt, +because of autocommands containing an empty line. + +Was possible to select part of the window in the border, below the command +line. + +'< and '> marks were not at the correct position after linewise Visual +selection. + +When translating a help argument to "CTRL-x", prepend or append a '_', when +applicable. + +Blockwise visual mode wasn't correct when moving vertically over a special +character (displayed as two screen characters). + +Renamed "struct option" to "struct vimoption" to avoid name clash with GNU +getopt(). + +":abclear" didn't work (but ":iabclear" and ":cabclear" did work). + +When 'nowrap' used, screen wasn't always updated correctly. + +"vim -c split file" displayed extra lines. + +After starting the GUI, searched the termcap for a "gui" term. + +When 'hls' used, search for "^$" caused a hang. +When 'hls' was set, an error in the last regexp caused trouble. + +Unix: Only output an extra <EOL> on exit when outputted something in the +alternate screen, or when there is a message that needs to be cleared. + +"/a\{" did strange things, depending on previous search. + +"c}" only redrew one line (with -u NONE). + +For mappings, CTRL-META-A was shown as <M-^A> instead of <MC-A>, while :map +only accepts <MC-A>. Now <M-C-A> is shown. + +Unix: When using full path name in a tags file, which contains a link, and +'hidden' set and jumping to a tag in the current file, would get bogus +ATTENTION message. Solved by always expanding file names, even when starting +with '/'. + +'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight +the whole thing. + +"r<CR>" didn't work correctly on the last char of a line. + +sometimes a window resize or other signal caused an endless loop, involving +set_winsize(). + +"vim -r" didn't work, it would just hang (using tgetent() while 'term' is +empty). + +"gk" while 'nowrap' set moved two lines up. + +When windows are split, a message that causes a scroll-up messed up one of the +windows, which required a CTRL-L to be typed. + +Possible endless loop when using shell command in the GUI. + +Menus defined in the .vimrc were removed when GUI started. + +Crash when pasting with the mouse in insert mode. + +Crash whith ":unmenu *" in .gvimrc for Athena. + +"5>>" shifted 5 lines 5 times, instead of 1 time. + +CTRL-C when getting a prompt in ":global" didn't interrupt. + +When 'so' is non-zero, and moving the scrollbar completely to the bottom, +there was a lot of flashing. + +GUI: Scrollbar ident must be long for DEC Alpha. + +Some functions called vim_regcomp() without setting reg_magic, which could +lead to unpredictable magicness. + +Crash when clicking around the status line, could get a selection with a +backwards range. + +When deleting more than one line characterwise, the last character wasn't +deleted. + +GUI: Status line could be overwritten when moving the scrollbar quickly (or +when 'wd' is non-zero). + +An ESC at the end of a ":normal" command caused a wait for a terminal code to +finish. Now, a terminal code is not recognized when its start comes from a +mapping or ":normal" command. + +Included patches from Robert Webb for GUI. Layout of the windows is now done +inside Vim, instead of letting the layout manager do this. Makes Vim work +with Lesstif! + +UMR warning in set_expand_context(). + +Memory leak: b_winlnum list was never freed. + +Removed TIOCLSET/TIOCLGET code from os_unix.c. Was changing some of the +terminal settings, and looked like it wasn't doing anything good. (suggested +by Juergen Weigert). + +Ruler overwrote "is a directory" message. When starting up, and 'cmdheight' +set to > 1, first message could still be in the last line. + +Removed prototype for putenv() from proto.h, it's already in osdef2.h.in. + +In replace mode, when moving the cursor and then backspacing, wrong characters +were inserted. + +Win32 GUI was checking for a CTRL-C too often, making it slow. + +Removed mappings for MS-DOS that were already covered by commands. + +When visually selecting all lines in a file, cursor at last line, then "J". +Gave ml_get errors. Was a problem with scrolling down during redrawing. + +When doing a linewise operator, and then an operator with a mouse click, it +was also linewise, instead of characterwise. + +When 'list' is set, the column of the ruler was wrong. + +Spurious error message for "/\(b\+\)*". + +When visually selected many lines, message from ":w file" disappeared when +redrawing the screen. + +":set <M-b>=^[b", then insert "^[b", waited for another character. And then +inserted "<M-b>" instead of the real <M-b> character. Was trying to insert +K_SPECIAL x NUL. + +CTRL-W ] didn't use count to set window height. + +GUI: "-font" command-line argument didn't override 'guifont' setting from +.gvimrc. (Acevedo) + +GUI: clipboard wasn't used for "*y". And some more Win32/X11 differences +fixed for the clipboard (Webb). + +Jumping from one help file to another help file, with 'compatible' set, +removed the 'help' flag from the buffer. + +File-writable bit could be reset when using ":w!" for a readonly file. + +There was a wait for CTRL-O n in Insert mode, because the search pattern was +shown. +Reduced wait, to allow reading a message, from 10 to 3 seconds. It seemed +nothing was happening. + +":recover" found same swap file twice. + +GUI: "*yy only worked the second time (when pasting to an xterm)." + +DJGPP version (dos32): The system flags were cleared. + +Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin). + +Version 4.1 of ncurses can't handle tputs("", ..). Avoid calling tputs() with +an empty string. + +<S-Tab> in the command-line worked like CTRL-P when no completion started yet. +Now it does completion, last match first. + +Unix: Could get annoying "can't write viminfo" message after doing "su". Now +the viminfo file is overwritten, and the user set back to the original one. + +":set term=builtin_gui" started the GUI in a wrong way. Now it's not +allowed anymore. But "vim -T gui" does start the GUI correctly now. + +GUI: Triple click after a line only put last char in selection, when it is a +single character word. + +When the window is bigger than the screen, the scrolling up of messages was +wrong (e.g. ":vers", ":hi"). Also when the bottom part of the window was +obscured by another window. + +When using a wrong option only an error message is printed, to avoid that the +usage information makes it scroll off the screen. + +When exiting because of not being able to read from stdin, didn't preserve the +swap files properly. + +Visual selecting all chars in more than one line, then hit "x" didn't leave an +empty line. For one line it did leave an empty line. + +Message for which autocommand is executing messed up file write message (for +FileWritePost event). + +"vim -h" included "-U" even when GUI is not available, and "-l" when lisp is +not available. + +Crash for ":he <C-A>" (command-line longer than screen). + +":s/this/that/gc", type "y" two times, then undo, did reset the modified +option, even though the file is still modified. + +Empty lines in a tags file caused a ":tag" to be aborted. + +When hitting 'q' at the more prompt for ":menu", still scrolled a few lines. + +In an xterm that uses the bold trick a single row of characters could remain +after an erased bold character. Now erase one extra char after the bold char, +like for the GUI. + +":pop!" didn't work. + +When the reading a buffer was interrupted, ":w" should not be able to +overwrite the file, ":w!" is required. + +":cf%" caused a crash. + +":gui longfilename", when forking is enabled, could leave part of the +longfilename at the shell prompt. + +============================================================================== +VERSION 5.1 *version-5.1* + +Improvements made between version 5.0 and 5.1. + +This was mostly a bug-fix release, not many new features. + + +Changed *changed-5.1* +------- + +The expand() function now separates file names with <NL> instead of a space. +This avoids problems for file names with embedded spaces. To get the old +result, use substitute(expand(foo), "\n", " ", "g"). + +For Insert-expanding dictionaries allow a backslash to be used for +wildchars. Allows expanding "ze\kra", when 'isk' includes a backslash. + +New icon for the Win32 GUI. + +":tag", ":tselect" etc. only use the argument as a regexp when it starts +with '/'. Avoids that ":tag xx~" gives an error message: "No previous sub. +regexp". Also, when the :tag argument contained wildcard characters, it was +not Vi compatible. +When using '/', the argument is taken literally too, with a higher priority, +so it's found before wildcard matches. +Only when the '/' is used are matches with different case found, even though +'ignorecase' isn't set. +Changed "g^]" to only do ":tselect" when there is more than on matching tag. + +Changed some of the default colors, because they were not very readable on a +dark background. + +A character offset to a search pattern can move the cursor to the next or +previous line. Also fixes that "/pattern/e+2" got stuck on "pattern" at the +end of a line. + +Double-clicks in the status line do no longer start Visual mode. Dragging a +status line no longer stops Visual mode. + +Perl interface: Buffers() and Windows() now use more logical arguments, like +they are used in the rest of Vim (Moore). + +Init '" mark to the first character of the first line. Makes it possible to +use '" in an autocommand without getting an error message. + + +Added *added-5.1* +----- + +"shell_error" internal variable: result of last shell command. + +":echohl" command: Set highlighting for ":echo". + +'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for +status line of not-current window. Default is to use bold for current +window. + +Added buffer_name() and buffer_number() functions (Aaron). +Added flags argument "g" to substitute() function (Aaron). +Added winheight() function. + +Win32: When an external command starts with "start ", no console is opened +for it (Aaron). + +Win32 console: Use termcap codes for bold/reverse based on the current +console attributes. + +Configure check for "strip". (Napier) + +CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally, +instead of as typed. + +Made a few "No match" error messages more informative by adding the pattern +that didn't match. + +"make install" now also copies the macro files. + +tools/tcltags, a shell script to generate a tags file from a TCL file. + +"--with-tlib" setting for configure. Easy way to use termlib: "./configure +--with-tlib=termlib". + +'u' flag in 'cino' for setting the indent for contained () parts. + +When Win32 OLE version can't load the registered type library, ask the user +if he wants to register Vim now. (Erhardt) +Win32 with OLE: When registered automatically, exit Vim. +Included VisVim 1.1b, with a few enhancements and the new icon (Heiko +Erhardt). + +Added patch from Vince Negri for Win32s support. Needs to be compiled with +VC 4.1! + +Perl interface: Added $curbuf. Rationalized Buffers() and Windows(). +(Moore) Added "group" argument to Msg(). + +Included Perl files in DOS source archive. Changed Makefile.bor and +Makefile.w32 to support building a Win32 version with Perl included. + +Included new Makefile.w32 from Ken Scott. Now it's able to make all Win32 +versions, including OLE, Perl and Python. + +Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^]. + +Added "g]" to always do ":tselect" for the ident under the cursor. +Added ":tjump" and ":stjump" commands. +Improved listing of ":tselect" when tag names are a bit long. + +Included patches for the Macintosh version. Also for Python interface. +(St-Amant) + +":buf foo" now also restores cursor column, when the buffer was used before. + +Adjusted the Makefile for different final destinations for the syntax files +and scripts (for Debian Linux). + +Amiga: $VIM can be used everywhere. When $VIM is not defined, "VIM:" is +used. This fixes that "VIM:" had to be assigned for the help files, and +$VIM set for the syntax files. Now either of these work. + +Some xterms send vt100 compatible function keys F1-F4. Since it's not +possible to detect this, recognize both type of keys and translate them to +<F1> - <F4>. + +Added "VimEnter" autocommand. Executed after loading all the startup stuff. + +BeOS version now also runs on Intel CPUs (Seibert). + + +Fixed *fixed-5.1* +----- + +":ts" changed position in the tag stack when cancelled with <CR>. +":ts" changed the cursor position for CTRL-T when cancelled with <CR>. +":tn" would always jump to the second match. Was using the wrong entry in +the tag stack. +Doing "tag foo", then ":tselect", overwrote the original cursor position in +the tag stack. + +"make install" changed the vim.1 manpage in a wrong way, causing "doc/doc" +to appear for the documentation files. + +When compiled with MAX_FEAT, xterm mouse handling failed. Was caused by DEC +mouse handling interfering. + +Was leaking memory when using selection in X11. + +CTRL-D halfway a command-line left some characters behind the first line(s) +of the listing. + +When expanding directories for ":set path=", put two extra backslashes +before a space in a directory name. + +When 'lisp' set, first line of a function would be indented. Now its indent +is set to zero. And use the indent of the first previous line that is at +the same () level. Added test33. + +"so<Esc>u" in an empty file didn't work. + +DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe, +because the swap file was made hidden. It's no longer hidden. + +":global" command would sometimes not execute on a matching line. Happened +when a data block is full in ml_replace(). + +For AIX use a tgetent buffer of 2048 bytes, instead of 1024. + +Win32 gvim now only sets the console size for external commands to 25x80 +on Windows 95, not on NT. + +Win32 console: Dead key could cause a crash, because of a missing "WINAPI" +(Deshpande). + +The right mouse button started Visual mode, even when 'mouse' is empty, and +in the command-line, a left click moved the cursor when 'mouse' is empty. +In Visual mode, 'n' in 'mouse' would be used instead of 'v'. + +A blinking cursor or focus change cleared a non-Visual selection. + +CTRL-Home and CTRL-End didn't work for MS-DOS versions. + +Could include NUL in 'iskeyword', causing a crash when doing insert mode +completion. + +Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version. + +In mappings, CTRL-H was replaced by the backspace key code. This caused +problems when it was used as text, e.g. ":map _U :%s/.^H//g<CR>". + +":set t_Co=0" was not handled like a normal term. Now it's translated into +":set t_Co=", which works. + +For ":syntax keyword" the "transparent" option did work, although not +mentioned in the help. But synID() returned wrong name. + +"gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and +not interruptable. + +"gq" operator inserted screen lines in the wrong situation. Now screen +lines are inserted or deleted when this speeds up displaying. + +cindent was wrong when an "if" contained "((". + +'r' flag in 'viminfo' was not used for '%'. Could get files in the buffer +list from removable media. + +Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project. +Hand-edited to fix this... + +With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at +the end of the line. + +Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP +bug. That bug appears to have been fixed, therefore this translation has +been removed. + +"/^*" didn't work (find '*' in first column). + +"<afile>" was not always set for autocommands. E.g., for ":au BufEnter * +let &tags = expand("<afile>:p:h") . "/tags". + +In an xterm, the window may be a child of the outer xterm window. Use the +parent window when getting the title and icon names. (Smith) + +When starting with "gvim -bg black -fg white", the value of 'background' is +only set after reading the .gvimrc file. This causes a ":syntax on" to use +the wrong colors. Now allow using ":gui" to open the GUI window and set the +colors. Previously ":gui" in a gvimrc crashed Vim. + +tempname() returned the same name all the time, unless the file was actually +created. Now there are at least 26 different names. + +File name used for <afile> was sometimes full path, sometimes file name +relative to current directory. + +When 'background' was set after the GUI window was opened, it could change +colors that were set by the user in the .gvimrc file. Now it only changes +colors that have not been set by the user. + +Ignore special characters after a CSI in the GUI version. These could be +interpreted as special characters in a wrong way. (St-Amant) + +Memory leak in farsi code, when using search or ":s" command. +Farsi string reversing for a mapping was only done for new mappings. Now it +also works for replacing a mapping. + +Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron) + +When BufDelete autocommands were executed, some things for the buffer were +already deleted (esp. Perl stuff). + +Perl interface: Buffer specific items were deleted too soon; fixes "screen +no longer exists" messages. (Moore) + +The Perl functions didn't set the 'modified' flag. + +link.sh did not return an error on exit, which may cause Vim to start +installing, even though there is no executable to install. (Riehm) + +Vi incompatibility: In Vi "." redoes the "y" command. Added the 'y' flag to +'cpoptions'. Only for 'compatible' mode. + +":echohl" defined a new group, when the argument was not an existing group. + +"syn on" and ":syn off" could move the cursor, if there is a hidden buffer +that is shorter that the current cursor position. + +The " mark was not set when doing ":b file". + +When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at +the end of the line made the nextgroup also be found in the next line. + +":he g<CTRL-D>", then ":" and backspace to the start didn't redraw. + +X11 GUI: "gvim -rv" reversed the colors twice on Sun. Now Vim checks if the +result is really reverse video (background darker than foreground). + +"cat link.sh | vim -" didn't set syntax highlighting. + +Win32: Expanding "file.sw?" matched ".file.swp". This is an error of +FindnextFile() that we need to work around. (Kilgore) + +"gqgq" gave an "Invalid lnum" error on the last line. +Formatting with "gq" didn't format the first line after a change of comment +leader. + +There was no check for out-of-memory in win_alloc(). + +"vim -h" didn't mention "-register" and "-unregister" for the OLE version. + +Could not increase 'cmdheight' when the last window is only one line. Now +other windows are also made smaller, when necessary. + +Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x. +Changed return type of main() from void to int. (Nam) + +Using '~' twice in a substitute pattern caused a crash. + +"syn on" and ":syn off" could scroll the window, if there is a hidden buffer +that is shorter that the current cursor position. + +":if 0 | if 1 | endif | endif" didn't work. Same for ":while" and "elseif". + +With two windows on modified files, with 'autowrite' set, cursor in second +window, ":qa" gave a warning for the file in the first window, but then +auto-wrote the file in the second window. (Webb) + +Win32 GUI scrollbar could only handle 32767 lines. Also makes the +intellimouse wheel use the configurable number of scrolls. (Robinson) + +When using 'patchmode', and the backup file is on another partition, the file +copying messed up the write-file message. + +GUI X11: Alt-Backspace and Alt-Delete didn't work. + +"`0" could put the cursor after the last character in the line, causing +trouble for other commands, like "i". + +When completing tags in insert mode with ^X^], some matches were skipped, +because the compare with other tags was wrong. E.g., when "mnuFileSave" was +already there, "mnuFile" would be skipped. (Negri) + +When scrolling up/down, a syntax item with "keepend" didn't work properly. +Now the flags are also stored for the syntax state a the start of each line. + +When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the +effect. + +Win32 GUI: Don't display "No write since last chance" in a message box, but in +the Vim window. + +============================================================================== +VERSION 5.2 *version-5.2* + +Improvements made between version 5.1 and 5.2. + + +Long lines editable *long-lines* +------------------- + +A single long line that doesn't fit in the window doesn't show a line of @@@ +anymore. Redrawing starts at a character further on in the line, such that +the text around the cursor can be seen. This makes it possible to edit these +long lines when wrapping is on. + + +File browser added *file-browser-5.2* +------------------ + +The Win32, Athena and Motif GUI bring up a file requester if the user asks to +":browse" for the ":e", ":w", ":r", ":so", ":redirect" and +":mkexrc/vimrc/vsess" commands. ::browse e /foo/bar" opens the requester in +the /foo/bar directory, so you can have nice mapping rhs's like ":browse so +$vim/macros". If no initial dir specified for ":browse e", can be compiled to +either begin in the current directory, or that of the current buffer. (Negri +and Kahn) +Added the 'browsedir' option, with value "current", "last" or "buffer". Tells +wether a browse dialog starts in last used dir, dir of current buffer, or +current dir. ":browse w" is unaffected. +The default menus have been changed to use the ":browse" command. + + +Dialogs added *dialogs-added* +------------- + +Added the ":confirm" command. Works on ":e", ":q", ":w", ":cl". Win32, +Athena and Motif GUI uses a window-dialog. All other platforms can use +prompt in command-line. ":confirm qa" offers a choice to save all modified +files. + +confirm() function: allows user access to the confirm engine. + +Added 'v' flag to 'guioptions'. When included, a vertical button layout is +always used for the Win32 GUI dialog. Otherwise, a horizontal layout is +preferred. + +Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace. +To be used from a menu entry. (Negri) + + +Popup menu added *popup-menu-added* +---------------- + +When the 'mousemodel' option is set to "popup", the right mouse button +displays the top level menu headed with "PopUp" as pop-up context menu. The +"PopUp" menu is not displayed in the normal menu bar. This currently only +works for Win32 and Athena GUI. + + +Select mode added *new-Select-mode* +----------------- + +A new mode has been added: "Select mode". It is like Visual mode, but typing +a printable character replaces the selection. +- CTRL-G can be used to toggle between Visual mode and Select mode. +- CTRL-O can be used to switch from Select mode to Visual mode for one command. +- Added 'selectmode' option: tells when to start Select mode instead of Visual + mode. +- Added 'mousemodel' option: Change use of mouse buttons. +- Added 'keymodel' option: tells to use shifted special keys to start a + Visual or Select mode selection. +- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel' + and 'keymodel' for MS-Windows and xterm behavior. +- The xterm-like selection is now called modeless selection. +- Visual mode mappings and menus are used in Select mode. They automatically + switch to Visual mode first. Afterwards, reselect the area, unless it was + deleted. The "gV" command can be used in a mapping to skip the reselection. +- Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode. +- Backspace in Select mode deletes the selected area. + +"mswin.vim" script. Sets behavior mostly like MS-Windows. + + +Session files added *new-session-files* +------------------- + +":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the +currently loaded buffers and current directory, so that :so'ing the file +re-loads those files and cd's to that directory. Also stores and restores +windows. File names are made relative to session file. +The 'sessionoptions' option sets behavior of ":mksession". (Negri) + + +User defined functions and commands *new-user-defined* +----------------------------------- + +Added user defined functions. Defined with ":function" until ":endfunction". +Called with "Func()". Allows the use of a variable number of arguments. +Included support for local variables "l:name". Return a value with ":return". +See |:function|. +Call a function with ":call". When using a range, the function is called for +each line in the range. |:call| +"macros/justify.vim" is an example of using user defined functions. +User functions do not change the last used search pattern or the command to be +redone with ".". +'maxfuncdepth' option. Restricts the depth of function calls. Avoids trouble +(crash because of out-of-memory) when a function uses endless recursion. + +User definable Ex commands: ":command", ":delcommand" and ":comclear". +(Moore) See |user-commands|. + + +New interfaces *interfaces-5.2* +-------------- + +Tcl interface. (Wilken) See |tcl|. +Uses the ":tcl", ":tcldo" and "tclfile" commands. + +Cscope support. (Kahn) (Sekera) See |cscope|. +Uses the ":cscope" and ":cstag" commands. Uses the options 'cscopeprg', +'cscopetag', 'cscopetagorder' and 'cscopeverbose'. + + +New ports *ports-5.2* +--------- + +Amiga GUI port. (Nielsen) Not tested much yet! + +RISC OS version. (Thomas Leonard) See |riscos|. +This version can run either with a GUI or in text mode, depending upon where +it is invoked. +Deleted the "os_archie" files, they were not working anyway. + + +Multi-byte support *new-multi-byte* +------------------ + +MultiByte support for Win32 GUI. (Baek) +The 'fileencoding' option decides how the text in the file is encoded. +":ascii" works for multi-byte characters. Multi-byte characters work on +Windows 95, even when using the US version. (Aaron) +Needs to be enabled in feature.h. +This has not been tested much yet! + + +New functions *new-functions-5.2* +------------- + +|browse()| puts up a file requester when available. (Negri) +|escape()| escapes characters in a string with a backslash. +|fnamemodify()| modifies a file name. +|input()| asks the user to enter a line. (Aaron) There is a separate + history for lines typed for the input() function. +|argc()| +|argv()| can be used to access the argument list. +|winbufnr()| buffer number of a window. (Aaron) +|winnr()| window number. (Aaron) +|matchstr()| Return matched string. +|setline()| Set a line to a string value. + + +New options *new-options-5.2* +----------- + +'allowrevins' Enable the CTRL-_ command in Insert and Command-line mode. +'browsedir' Tells in which directory a browse dialog starts. +'confirm' when set, :q :w and :e commands always act as if ":confirm" + is used. (Negri) +'cscopeprg' +'cscopetag' +'cscopetagorder' +'cscopeverbose' Set the |cscope| behavior. +'filetype' RISC-OS specific type of file. +'grepformat' +'grepprg' For the |:grep| command. +'keymodel' Tells to use shifted special keys to start a Visual or Select + mode selection. +'listchars' Set character to show in 'list' mode for end-of-line, tabs and + trailing spaces. (partly by Smith) Also sets character to + display if a line doesn't fit when 'nowrap' is set. +'matchpairs' Allows matching '<' with '>', and other single character + pairs. +'mousefocus' Window focus follows mouse (partly by Terhaar). Changing the + focus with a keyboard command moves the pointer to that + window. Also move the pointer when changing the window layout + (split window, change window height, etc.). +'mousemodel' Change use of mouse buttons. +'selection' When set to "inclusive" or "exclusive", the cursor can go one + character past the end of the line in Visual or Select mode. + When set to "old" the old behavior is used. When + "inclusive", the character under the cursor is included in the + operation. When using "exclusive", the new "ve" entry of + 'guicursor' is used. The default is a vertical bar. +'selectmode' Tells when to start Select mode instead of Visual mode. +'sessionoptions' Sets behavior of ":mksession". (Negri) +'showfulltag' When completing a tag in Insert mode, show the tag search + pattern (tidied up) as a choice as well (if there is one). +'swapfile' Whether to use a swap file for a buffer. +'syntax' When it is set, the syntax by that name is loaded. Allows for + setting a specific syntax from a modeline. +'ttymouse' Allows using xterm mouse codes for terminals which name + doesn't start with "xterm". +'wildignore' List of patterns for files that should not be completed at + all. +'wildmode' Can be used to set the type of expansion for 'wildchar'. + Replaces the CTRL-T command for command line completion. + Don't beep when listing all matches. +'winaltkeys' Win32 and Motif GUI. When "yes", ALT keys are handled + entirely by the window system. When "no", ALT keys are never + used by the window system. When "menu" it depends on whether + a key is a menu shortcut. +'winminheight' Minimal height for each window. Default is 1. Set to 0 if + you want zero-line windows. Scrollbar is removed for + zero-height windows. (Negri) + + + +New Ex commands *new-ex-commands-5.2* +--------------- + +|:badd| Add file name to buffer list without side effects. (Negri) +|:behave| Quickly set MS-Windows or xterm behavior. +|:browse| Use file selection dialog. +|:call| Call a function, optionally with a range. +|:cnewer| +|:colder| To access a stack of quickfix error lists. +|:comclear| Clear all user-defined commands. +|:command| Define a user command. +|:continue| Go back to ":while". +|:confirm| Ask confirmation if something unexpected happens. +|:cscope| Execute cscope command. +|:cstag| Use cscope to jump to a tag. +|:delcommand| Delete a user-defined command. +|:delfunction| Delete a user-defined function. +|:endfunction| End of user-defined function. +|:function| Define a user function. +|:grep| Works similar to ":make". (Negri) +|:mksession| Create a session file. +|:nohlsearch| Stop 'hlsearch' highlighting for a moment. +|:Print| This is Vi compatible. Does the same as ":print". +|:promptfind| Search dialog (Win32 GUI). +|:promptrepl| Search/replace dialog (Win32 GUI). +|:return| Return from a user-defined function. +|:simalt| Win32 GUI: Simulate alt-key pressed. (Negri) +|:smagic| Like ":substitute", but always use 'magic'. +|:snomagic| Like ":substitute", but always use 'nomagic'. +|:tcl| Execute TCL command. +|:tcldo| Execute TCL command for a range of lines. +|:tclfile| Execute a TCL script file. +|:tearoff| Tear-off a menu (Win32 GUI). +|:tmenu| +|:tunmenu| Win32 GUI: menu tooltips. (Negri) +|:star| :* Execute a register. + + +Changed *changed-5.2* +------- + +Renamed functions: + buffer_exists() -> bufexists() + buffer_name() -> bufname() + buffer_number() -> bufnr() + file_readable() -> filereadable() + highlight_exists() -> hlexists() + highlightID() -> hlID() + last_buffer_nr() -> bufnr("$") +The old ones are still there, for backwards compatibility. + +The CTRL-_ command in Insert and Command-line mode is only available when the +new 'allowrevins' option is set. Avoids that people who want to type SHIFT-_ +accidentally enter reverse Insert mode, and don't know how to get out. + +When a file name path in ":tselect" listing is too long, remove a part in the +middle and put "..." there. + +Win32 GUI: Made font selector appear inside Vim window, not just any odd +place. (Negri) + +":bn" skips help buffers, unless currently in a help buffer. (Negri) + +When there is a status line and only one window, don't show '^' in the status +line of the current window. + +":*" used to be used for "'<,'>", the Visual area. But in Vi it's used as an +alternative for ":@". When 'cpoptions' includes '*' this is Vi compatible. + +When 'insertmode' is set, using CTRL-O to execute a mapping will work like +'insertmode' was not set. This allows "normal" mappings to be used even when +'insertmode' is set. + +When 'mouse' was set already (e.g., in the .vimrc file), don't automatically +set 'mouse' when the GUI starts. + +Removed the 'N', 'I' and 'A' flags from the 'mouse' option. + +Renamed "toggle option" to "boolean option". Some people thought that ":set +xyz" would toggle 'xyz' on/off each time. + +The internal variable "shell_error" contains the error code from the shell, +instead of just 0 or 1. + +When inserting or replacing, typing CTRL-V CTRL-<CR> used to insert "<C-CR>". +That is not very useful. Now the CTRL key is ignored and a <CR> is inserted. +Same for all other "normal" keys with modifiers. Mapping these modified key +combinations is still possible. +In Insert mode, <C-CR> and <S-Space> can be inserted by using CTRL-K and then +the special character. + +Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt. They +are now installed like other documentation files. + +winheight() function returns -1 for a non-existing window. It used to be +zero, but that is a valid height now. + +The default for 'selection' is "inclusive", which makes a difference when +using "$" or the mouse to move the cursor in Visual mode. + +":q!" does not exit when there are changed buffers which are hidden. Use +":qa!" to exit anyway. + +Disabled the Perl/Python/Tcl interfaces by default. Not many people use them +and they make the executable a lot bigger. The internal scripting language is +now powerful enough for most tasks. + +The strings from the 'titlestring' and 'iconstring' options are used +untranslated for the Window title and icon. This allows for including a <CR>. +Previously a <CR> would be shown as "^M" (two characters). + +When a mapping is started in Visual or Select mode which was started from +Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode +until the mapping has ended. Makes it possible to use a mapping in Visual +mode that also works when the Visual mode was started from Select mode. + +Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus. This helps +when defining menus in the .vimrc file, or when sourcing mswin.vim. + +Unix: Use /var/tmp for .swp files, if it exists. Files there survive a +reboot (at least on Linux). + + +Added *added-5.2* +----- + +--with-motif-lib configure argument. Allows for using a static Motif library. + +Support for mapping numeric keypad +,-,*,/ keys. (Negri) +When not mapped, they produce the normal character. + +Win32 GUI: When directory dropped on Gvim, cd there and edit new buffer. +(Negri) + +Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be +used for mappings. + +In the output of ":map", highlight the "*" to make clear it's not part of the +rhs. (Roemer) + +When showing the Visual area, the cursor is not switched off, so that it can +be located. The Visual area is now highlighted with a grey background in the +GUI. This makes the cursor visible when it's also reversed. + +Win32: When started with single full pathname (e.g. via double-clicked file), +cd to that file's directory. (Negri) + +Win32 GUI: Tear-off menus, with ":tearoff <menu-name>" command. (Negri) +'t' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif. +It's included by default. +Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri) + +Added ^Kaa and ^KAA digraphs. +Added "euro" symbol to digraph.c. (Corry) + +Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis). +Other GUIs ignore '&' in a menu name. + +DJGPP: Faster screen updating (John Lange). + +Clustering of syntax groups ":syntax cluster" (Bigham). +Including syntax files: ":syntax include" (Bigham). + +Keep column when switching buffers, when 'nosol' is set (Radics). + +Number function for Perl interface. + +Support for Intellimouse in Athena GUI. (Jensen) + +":sleep" also accepts an argument in milliseconds, when "m" is used. + +Added 'p' flag in 'guioptions': Install callbacks for enter/leave window +events. Makes cursor blinking work for Terhaar, breaks it for me. + +"--help" and "--version" command-line arguments. + +Non-text in ":list" output is highlighted with NonText. + +Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as +synonym for "iB". New: "i<" and "i>", to select <thing>. All this also for +"a" objects. + +'O' flag in 'shortmess': message for reading a file overwrites any previous +message. (Negri) + +Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off. +Included a list with self-made toolbar bitmaps. (Negri) + +Added menu priority for sub-menus. Implemented for Win32 and Motif GUI. +Display menu priority with ":menu" command. +Default and Syntax menus now include priority for items. Allows inserting +menu items in between the default ones. + +When the 'number' option is on, highlight line numbers with the LineNr group. + +"Ignore" highlight group: Text highlighted with this is made blank. It is +used to hide special characters in the help text. + +Included Exuberant Ctags version 2.3, with C++ support, Java support and +recurse into directories. (Hiebert) + +When a tags file is not sorted, and this is detected (in a simplistic way), an +error message is given. + +":unlet" accepts a "!", to ignore non-existing variables, and accepts more +than one argument. (Roemer) +Completion of variable names for ":unlet". (Roemer) + +When there is an error in a function which is called by another function, show +the call stack in the error message. + +New file name modifiers: +":.": reduce file name to be relative to current dir. +":~": reduce file name to be relative to home dir. +":s?pat?sub?": substitute "pat" with "sub" once. +":gs?pat?sub?": substitute "pat" with "sub" globally. + +New configure arguments: --enable-min-features and --enable-max-features. +Easy way to switch to minimum or maximum features. + +New compile-time feature: modify_fname. For file name modifiers, e.g, +"%:p:h". Can be disabled to save some code (16 bit DOS). + +When using whole-line completion in Insert mode, and 'cindent' is set, indent +the line properly. + +MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri) + +Included new set of Farsi fonts. (Shiran) + +Accelerator text now also works in Motif. All menus can be defined with & for +mnemonic and TAB for accelerator text. They are ignored on systems that don't +support them. +When removing or replacing a menu, compare the menu name only up to the <Tab> +before the mnemonic. + +'i' and 'I' flags after ":substitute": ignore case or not. + +"make install" complains if the runtime files are missing. + +Unix: When finding an existing swap file that can't be opened, mention the +owner of the file in the ATTENTION message. + +The 'i', 't' and 'k' options in 'complete' now also print the place where they +are looking for matches. (Acevedo) + +"gJ" command: Join lines without inserting a space. + +Setting 'keywordprg' to "man -s" is handled specifically. The "-s" is removed +when no count given, the count is added otherwise. Configure checks if "man +-s 2 read" works, and sets the default for 'keywordprg' accordingly. + +If you do a ":bd" and there is only one window open, Vim tries to move to a +buffer of the same type (i.e. non-help to non-help, help to help), for +consistent behavior to :bnext/:bprev. (Negri) + +Allow "<Nop>" to be used as the rhs of a mapping. ":map xx <Nop>", maps "xx" +to nothing at all. + +In a ":menu" command, "<Tab>" can be used instead of a real tab, in the menu +path. This makes it more easy to type, no backslash needed. + +POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:], +[:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], +[:space:], [:upper:] and [:xdigit:]. (Briscoe) + +regexp character classes (for fast syntax highlight matching): + digits: \d [0-9] \D not digit (Roemer) + hex: \x [0-9a-fA-F] \X not hex + octal: \o [0-7] \O not octal + word: \w [a-zA-Z0-9_] \W not word + head: \h [a-zA-Z_] \H not head + alphabetic: \a [a-zA-Z] \A not alphabetic + lowercase: \l [a-z] \L not lowercase + uppercase: \u [A-Z] \U not uppercase + +":set" now accepts "+=", |^=" and "-=": add or remove parts of a string +option, add or subtract a number from a number option. A comma is +automagically inserted or deleted for options that are a comma separated list. + +Filetype feature, for autocommands. Uses a file type instead of a pattern to +match a file. Currently only used for RISC OS. (Leonard) + +In a pattern for an autocommand, environment variables can be used. They are +expanded when the autocommand is defined. + +"BufFilePre" and "BufFilePost" autocommand evens: Before and after applying +the ":file" command to change the name of a buffer. +"VimLeavePre" autocommand event: before writing the .viminfo file. + +For autocommands argument: <abuf> is buffer number, like <afile>. + +Made syntax highlighting a bit faster when scrolling backwards, by keeping +more syncing context. + +Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or +inserting screen lines. + +GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved +less than a pixel. + +Included ":highlight" in bugreport.vim. + +Created install.exe program, for simplistic installation on DOS and +MS-Windows. + +New register: '_', the black hole. When writing to it, nothing happens. When +reading from it, it's always empty. Can be used to avoid a delete or change +command to modify the registers, or reduce memory use for big changes. + +CTRL-V xff enters character by hex number. CTRL-V o123 enters character by +octal number. (Aaron) + +Improved performance of syntax highlighting by skipping check for "keepend" +when there isn't any. + +Moved the mode message ("-- INSERT --") to the last line of the screen. When +'cmdheight' is more than one, messages will remain readable. + +When listing matching files, they are also sorted on 'suffixes', such that +they are listed in the same order as CTRL-N retrieves them. + +synIDattr() takes a third argument (optionally), which tells for which +terminal type to get the attributes for. This makes it possible to run +2html.vim outside of gvim (using color names instead of #RRGGBB). + +Memory profiling, only for debugging. Prints at exit, and with "g^A" command. +(Kahn) + +DOS: When using a file in the current drive, remove the drive name: +"A:\dir\file" -> "\dir\file". This helps when moving a session file on a +floppy from "A:\dir" to "B:\dir". + +Increased number of remembered jumps from 30 to 50 per window. + +Command to temporarily disable 'hls' highlighting until the next search: +":nohlsearch". + +"gp" and "gP" commands: like "p" and "P", but leave the cursor just after the +inserted text. Used for the CTRL-V command in MS-Windows mode. + + +Fixed *fixed-5.2* +----- + +Win32 GUI: Could draw text twice in one place, for fake-bold text. Removed +this, Windows will handle the bold text anyway. (Negri) + +patch 5.1.1: Win32s GUI: pasting caused a crash (Negri) + +patch 5.1.2: When entering another window, where characters before the cursor +have been deleted, could have a cursor beyond the end of the line. + +patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri) + +patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version +(Scott). + +patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that +doesn't fit in the window, and splitting that line in two. + +patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line +(so that the window scrolls horizontally), ":set wrap". Following Visual +selection was wrong. + +patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do +binary searching. + +patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler. + +patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear. + +patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer +without a name exists. + +patch 5.1.11: "make test" didn't work in the shadow directory. Also adjusted +"make shadow" for the links in the ctags directory. + +patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a +buffer name. + +patch 5.1.13: When completing file names on the command-line, reallocating the +command-line may go wrong. + +patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch +specified. + +Graceful handling of NULLs in drag-dropped file list. Handle passing NULL to +Fullname_save(). (Negri) + +Win32: ":!start" to invoke a program without opening a console, swapping +screens, or waiting for completion in either console or gui version. e.g. you +can type ":!start winfile". ALSO fixes "can't delete swapfile after spawning +a shell" bug. (enhancement of Aaron patch) (Negri) + +Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri) + +Shorten filenames on startup. If in /foo/bar, entering "vim ../bar/bang.c" +displays "bang.c" in status bar, not "/foo/bar/bang.c" (Negri) + +Win32 GUI: No copy to Windows clipboard when it's not desired. + +Win32s: Fix pasting from clipboard - made an assumption not valid under +Win32s. (Negri) + +Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing +functions. (Negri) + +Win32 GUI: Middle mouse button emulation now works in GUI! (Negri) + +Could skip messages when combining commands in one line, e.g.: +":echo "hello" | write". + +Perl interpreter was disabled before executing VimLeave autocommands. Could +not use ":perl" in them. (Aaron) + +Included patch for the Intellimouse (Aaron/Robinson). + +Could not set 'ls' to one, when last window has only one line. (Mitterand) + +Fixed a memory leak when removing menus. + +After ":only" the ruler could overwrite a message. + +Dos32: removed changing of __system_flags. It appears to work better when +it's left at the default value. + +p_aleph was an int instead of along, caused trouble on systems where +sizeof(int) != sizeof(long). (Schmidt) + +Fixed enum problems for Ultrix. (Seibert) + +Small redraw problem: "dd" on last line in file cleared wrong line. + +Didn't interpret "cmd | endif" when "cmd" starts with a range. E.g. "if 0 | +.d | endif". + +Command "+|" on the last line of the file caused ml_get errors. + +Memory underrun in eval_vars(). (Aaron) + +Don't rename files in a difficult way, except on Windows 95 (was also done on +Windows NT). + +Win32 GUI: An external command that produces an error code put the error +message in a dialog box. had to close the window and close the dialog. Now +the error code is displayed in the console. (Negri) + +"comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle) + +In Insert mode, when entering a window in Insert mode, allow the cursor to be +one char beyond the text. + +Renamed machine dependent rename() to mch_rename(). Define mch_rename() to +rename() when it works properly. + +Rename vim_chdir() to mch_chdir(), because it's machine dependent. + +When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more +files to edit" error. + +In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed. +Moved the Python_Release_Vim() to before the VimErrorCheck(). (Harkins) + +Give an error message for an unknown argument after "--". E.g. for "vim +--xyz". + +The FileChangedShell autocommand didn't set <afile> to the name of the changed +file. + +When doing ":e file", causing the attention message, there sometimes was no +hit-enter prompt. Caused by empty line or "endif" at end of sourced file. + +A large number of patches for the VMS version. (Hunsaker) + +When CTRL-L completion (find longest match) results in a shorter string, no +completion is done (happens with ":help"). + +Crash in Win32 GUI version, when using an Ex "@" command, because +LinePointers[] was used while not initialized. + +Win32 GUI: allow mapping of Alt-Space. + +Output from "vim -h" was sent to stderr. Sending it to stdout is better, so +one can use "vim -h | more". + +In command-line mode, ":vi[!]" should reload the file, just like ":e[!]". +In Ex mode, ":vi" stops Ex mode, but doesn't reload the file. This is Vi +compatible. + +When using a ":set ls=1" in the .gvimrc file, would get a status line for a +single window. (Robinson) + +Didn't give an error message for ":set ai,xx". (Roemer) +Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx". + +Non-Unix systems: That a file exists but is unreadable is recognized as "new +file". Now check for existence when file can't be opened (like Unix). + +Unix: osdef.sh didn't handle declarations where the function name is at the +first column of the line. + +DJGPP: Shortening of file names didn't work properly, because get_cwd() +returned a path with backslashes. (Negri) + +When using a 'comments' part where a space is required after the middle part, +always insert a space when starting a new line. Helps for C comments, below a +line with "/****". + +Replacing path of home directory with "~/" could be wrong for file names +with embedded spaces or commas. + +A few fixes for the Sniff interface. (Leherbauer) + +When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused +trouble. Same for ":s/x/y/c" prompt. + +With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks, +instead of the characters specified with 'listchars'. Also for other +characters that take more than one screen character. + +When setting 'guifont' to an unknown font name, the previous font was lost and +a default font would be used. (Steed) + +DOS: Filenames in the root directory didn't get shortened properly. (Negri) + +DJGPP: making a full path name out of a file name didn't work properly when +there is no _fullpath() function. (Negri) + +Win32 console: ":sh" caused a crash. (Negri) + +Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably +(could hang Windows 95). (Negri) + +Win32: The change-drive function was not correct, went to the wrong drive. +(Tsindlekht) + +GUI: When editing a command line in Ex mode, Tabs were sometimes not +backspaced properly, and unprintable characters were displayed directly. +non-GUI can still be wrong, because a system function is called for this. + +":set" didn't stop after an error. For example ":set no ai" gave an error for +"no", but still set "ai". Now ":set" stops after the first error. + +When running configure for ctags, $LDFLAGS wasn't passed to it, causing +trouble for IRIX. + +"@%" and "@#" when file name not set gave an error message. Now they just +return an empty string. (Steed) + +CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers. +(Steed) + +":echo" always started with a blank. + +Updating GUI cursor shape didn't always work (e.g., when blinking is off). + +In silent Ex mode ("ex -s" or "ex <file") ":s///p" didn't print a line. Also +a few other commands that explicitly print a text line didn't work. Made this +Vi compatible. + +Win32 version of _chdrive() didn't return correct value. (Tsindlekht) + +When using 't' in 'complete' option, no longer give an error message for a +missing tags file. + +Unix: tgoto() can return NULL, which was not handled correctly in configure. + +When doing ":help" from a buffer where 'binary' is set, also edited the help +file in binary mode. Caused extra ^Ms for DOS systems. + +Cursor position in a file was reset to 1 when closing a window. + +":!ls" in Ex mode switched off echo. + +When doing a double click in window A, while currently in window B, first +click would reset double click time, had to click three times to select a +word. + +When using <F11> in mappings, ":mkexrc" produced an exrc file that can't be +used in Vi compatible mode. Added setting of 'cpo' to avoid this. Also, add +a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a +special key name. + +Gave confusing error message for ":set guifont=-*-lucida-*": first "font is +not fixed width", then "Unknown font". + +Some options were still completely left out, instead of included as hidden +options. + +While running the X11 GUI, ignore SIGHUP signals. Avoids a crash after +executing an external command (in rare cases). + +In os_unixx.h, signal() was defined to sigset(), while it already was. + +Memory leak when executing autocommands (was reported as a memory leak in +syntax highlighting). + +Didn't print source of error sometimes, because pointers were the same, +although names were different. + +Avoid a number of UMR errors from Purify (third argument to open()). + +A swap file could still be created just after setting 'updatecount' to zero, +when there is an empty buffer and doing ":e file". (Kutschera) + +Test 35 failed on 64 bit machines. (Schild) + +With "p" and "P" commands, redrawing was slow. + +Awk script for html documentation didn't work correctly with AIX awk. +Replaced "[ ,.);\] ]" with "[] ,.); ]". (Briscoe) +The makehtml.awk script had a small problem, causing extra lines to be +inserted. (Briscoe) + +"gqgq" could not be repeated. Repeating for "gugu" and "gUgU" worked in a +wrong way. Also made "gqq" work to be consistent with "guu". + +C indent was wrong after "case ':':". + +":au BufReadPre *.c put": Line from put text was deleted, because the buffer +was still assumed to be empty. + +Text pasted with the Edit/Paste menu was subject to 'textwidth' and +'autoindent'. That was inconsistent with using the mouse to paste. Now "*p +is used. + +When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag, +window was split. + +":ts" got stuck on a tags line that has two extra fields. + +In Insert mode, with 'showmode' on, <C-O><C-G> message was directly +overwritten by mode message, if preceded with search command warning message. + +When putting the result of an expression with "=<expr>p, newlines were +inserted like ^@ (NUL in the file). Now the string is split up in lines at +the newline. + +putenv() was declared with "const char *" in pty.c, but with "char *" in +osdef2.h.in. Made the last one also "const char *". + +":help {word}", where +{word} is a feature, jumped to the feature list instead +of where the command was explained. E.g., ":help browse", ":help autocmd". + +Using the "\<xx>" form in an expression only got one byte, even when using a +special character that uses several bytes (e.g., "\<F9>"). +Changed "\<BS>" to produce CTRL-H instead of the special key code for the +backspace key. "\<Del>" produces 0x7f. + +":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'. + +The shell syntax didn't contain a "syn sync maxlines" setting. In a long file +without recognizable items, syncing took so long it looked like Vim hangs. +Added a maxlines setting, and made syncing interruptable. + +The "gs" command didn't flush output before waiting. + +Memory leaks for: + ":if 0 | let a = b . c | endif" + "let a = b[c]" + ":so {file}" where {file} contains a ":while" + +GUI: allocated fonts were never released. (Leonard) + +Makefile.bor: +- Changed $(DEFINES) into a list of "-D" options, so that it can also be used + for the resource compiler. (not tested!) +- "bcc.cfg" was used for all configurations. When building for another + configuration, the settings for the previous one would be used. Moved + "bcc.cfg" to the object directory. (Geddes) +- Included targets for vimrun, install, ctags and xxd. Changed the default to + use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron) + +"2*" search for the word under the cursor with "2" prepended. (Leonard) + +When deleting into a specific register, would still overwrite the non-Win32 +GUI selection. Now ""x"*P works. + +When deleting into the "" register, would write to the last used register. +Now ""x always writes to the unnamed register. + +GUI Athena: A submenu with a '.' in it didn't work. E.g., +":amenu Syntax.XY\.Z.foo lll". + +When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of +matching tags could change, because the current file is different. Now the +existing matches are kept in the same order, newly found matches are added +after them, not matter what the current file is. + +":ta" didn't find the second entry in a tags file, if the second entry was +longer than the first one. + +When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the +wrong position. can_si was still TRUE when the cursor is not in the indent of +the line. + +Running an external command in Win32 version had the problem that Vim exits +when the X on the console is hit (and confirmed). Now use the "vimrun" +command to start the external command indirectly. (Negri) + +Win32 GUI: When running an external filter, do it in a minimized DOS box. +(Negri) + +":let" listed variables without translation into printable characters. + +Win32 console: When resizing the window, switching back to the old size +(when exiting or executing an external command) sometimes failed. (Negri) +This appears to also fix a "non fixable" problem: +Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar, +the scrollbar disappeared and was not restored when Vim exits. This does work +under NT 3.51, it appears not to be a Vim problem. + +When executing BufDelete and BufUnload autocommands for a buffer without a +name, the name of the current buffer was used for <afile>. + +When jumping to a tag it reported "tag 1 of >2", while in fact there could be +only two matches. Changed to "tag 1 of 2 or more". + +":tjump tag" did a linear search in the tags file, which can be slow. + +Configure didn't find "LibXm.so.2.0", a Xm library with a version number. + +Win32 GUI: When using a shifted key with ALT, the shift modifier would remain +set, even when it was already used by changing the used key. E.g., "<M-S-9>" +resulted in "<M-S-(>", but it should be "<M-(>". (Negri) + +A call to ga_init() was often followed by setting growsize and itemsize. +Created ga_init2() for this, which looks better. (Aaron) + +Function filereadable() could call fopen() with an empty string, which might +be illegal. + +X Windows GUI: When executing an external command that outputs text, could +write one character beyond the end of a buffer, which caused a crash. (Kohan) + +When using "*" or "#" on a string that includes '/' or '?' (when these are +included in 'isk'), they were not escaped. (Parmelan) + +When adding a ToolBar menu in the Motif GUI, the submenu_id field was not +cleared, causing random problems. + +When adding a menu, the check if this menu (or submenu) name already exists +didn't compare with the simplified version (no mnemonic or accelerator) of the +new menu. Could get two menus with the same name, e.g., "File" and "&File". + +Breaking a line because of 'textwidth' at the last line in the window caused a +redraw of the whole window instead of a scroll. Speeds up normal typing with +'textwidth' a lot for slow terminals. + +An invalid line number produced an "invalid range" error, even when it wasn't +to be executed (inside "if 0"). + +When the unnamed, first buffer is re-used, the "BufDelete" autocommand was +not called. It would stick in a buffer list menu. + +When doing "%" on the NUL after the line, a "{" or "}" in the last character +of the line was not found. + +The Insert mode menu was not used for the "s" command, the Operator-pending +menu was used instead. + +With 'compatible' set, some syntax highlighting was not correct, because of +using "[\t]" for a search pattern. Now use the regexps for syntax +highlighting like the 'cpoptions' option is empty (as was documented already). + +When using "map <M-Space> ms" or "map <Space> sss" the output of ":map" didn't +show any lhs for the mapping (if 'isprint' includes 160). Now always use +<Space> and <M-Space>, even when they are printable. + +Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for +Athena, where menus don't wrap). + +When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and +digits, repeating the insert didn't work. + +The file "tools/ccfilter.README.txt" could not be unpacked when using short +file names, because of the two dots. Renamed it to +"tools/ccfilter_README.txt". + +For a dark 'background', using Blue for Directory and SpecialKey highlight +groups is not very readable. Use Cyan instead. + +In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into +a block with a local variable. That's illegal for some compilers. + +Win32 GUI: There was a row of pixels at the bottom of the window which was not +drawn. (Aaron) + +Under DOS, editing "filename/" created a swap file of "filename/.swp". Should +be "filename/_swp". + +Win32 GUI: pointer was hidden when executing an external command. + +When 'so' is 999, "J" near the end of the file didn't redisplay correctly. + +":0a" inserted after the first line, instead of before the first line. + +Unix: Wildcard expansion didn't handle single quotes and {} patterns. Now +":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*'). +":file {o}{n}{e}" now results in file name "one". + +Memory leak when setting a string option back to its default value. + +============================================================================== +VERSION 5.3 *version-5.3* + +Version 5.3 was a bug-fix version of 5.2. There are not many changes. +Improvements made between version 5.2 and 5.3: + +Changed *changed-5.3* +------- + +Renamed "IDE" menu to "Tools" menu. + + +Added *added-5.3* +----- + +Win32 GUI: Give a warning when Vim is activated, and one of the files changed +since editing started. (Negri) + + +Fixed *fixed-5.3* +----- + +5.2.1: Win32 GUI: space for external command was not properly allocated, could +cause a crash. (Aaron) This was the reason to bring out 5.3 quickly after +5.2. + +5.2.2: Some commands didn't complain when used without an argument, although +they need one: ":badd", ":browse", ":call", ":confirm", ":behave", +":delfunction", ":delcommand" and ":tearoff". +":endfunction" outside of a function gave wrong error message: "Command not +implemented". Should be ":endfunction not inside a function". + +5.2.3: Win32 GUI: When gvim was installed in "Program files", or another path +with a space in it, executing external commands with vimrun didn't work. + +5.2.4: Pasting with the mouse in Insert mode left the cursor on the last +pasted character, instead of behind it. + +5.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left +didn't include the last character in the selection. + +5.2.6: When deleting text from Insert mode (with "<C-O>D" or the mouse), which +includes the last character in the line, the cursor could be left on the last +character in the line, instead of just after it. + +5.2.7: Win32 GUI: scrollbar was one pixel too big. + +5.2.8: Completion of "PopUp" menu showed the derivates "PopUpc", "PopUPi", +etc. ":menu" also showed these. + +5.2.9: When using two input() functions on a row, the prompt would not be +drawn in column 0. + +5.2.10: A loop with input() could not be broken with CTRL-C. + +5.2.11: ":call asdf" and ":call asdf(" didn't give an error message. + +5.2.12: Recursively using ":normal" crashes Vim after a while. E.g.: +":map gq :normal gq<CR>" + +5.2.13: Syntax highlighting used 'iskeyword' from wrong buffer. When using +":help", then "/\k*" in another window with 'hlsearch' set. + +5.2.14: When using ":source" from a function, global variables would not be +available unless "g:" was used. + +5.2.15: XPM files can have the extension ".pm", which is the same as for Perl +modules. Added "syntax/pmfile.vim" to handle this. + +5.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an +empty buffer. mch_Fullname() didn't append a slash at the end of a directory +name. + +Should include the character under the cursor in the Visual area when using +'selection' "exclusive". This wasn't done for "%", "e", "E", "t" and "f". + +""p would always put register 0, instead of the unnamed (last used) register. +Reverse the change that ""x doesn't write in the unnamed (last used) register. +It would always write in register 0, which isn't very useful. Use "-x for the +paste mappings in Visual mode. + +When there is one long line on the screen, and 'showcmd' is off, "0$" didn't +redraw the screen. + +Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor +shape is changed. (Negri) + +When cancelling Visual mode, and the cursor moves to the start, the wanted +column wasn't set, "k" or "j" moved to the wrong column. + +When using ":browse" or ":confirm", was checking for a comment and separating +bar, which can break some commands. + +Included fixes for Macintosh. (Kielhorn) + +============================================================================== +VERSION 5.4 *version-5.4* + +Version 5.4 adds new features, useful changes and a lot of bug fixes. + + +Runtime directory introduced *new-runtime-dir* +---------------------------- + +The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM. +You normally don't set $VIMRUNTIME but let Vim find it, by using +$VIM/vim{version}, or use $VIM when that doesn't exist. This allows for +separating the user files from the distributed files and makes it more easy to +upgrade to another version. It also makes it possible to keep two versions of +Vim around, each with their own runtime files. + +In the Unix distribution the runtime files have been moved to the "runtime" +directory. This makes it possible to copy all the runtime files at once, +without the need to know what needs to be copied. + +The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level +"vim" directory. This is to make clear that user-modified files should be put +here. The directory that contains the executables doesn't have '-' or '.' +characters. This avoids strange extensions. + +The $VIM and $VIMRUNTIME variables are set when they are first used. This +allows them to be used by Perl, for example. + +The runtime files are also found in a directory called "$VIM/runtime". This +helps when running Vim after just unpacking the runtime archive. When using +an executable in the "src" directory, Vim checks if "vim54" or "runtime" can +be added after removing it. This make the runtime files be found just after +compiling. + +A default for $VIMRUNTIME can be given in the Unix Makefile. This is useful +if $VIM doesn't point to above the runtime directory but to e.g., "/etc/". + + +Filetype introduced *new-filetype-5.4* +------------------- + +Syntax files are now loaded with the new FileType autocommand. Old +"mysyntaxfile" files will no longer work. |filetypes| + +The scripts for loading syntax highlighting have been changed to use the +new Syntax autocommand event. + +This combination of Filetype and Syntax events allows tuning the syntax +highlighting a bit more, also when selected from the Syntax menu. The +FileType autocommand can also be used to set options and mappings specifically +for that type of file. + +The "$VIMRUNTIME/filetype.vim" file is not loaded automatically. The +":filetype on" command has been added for this. ":syntax on" also loads it. + +The 'filetype' option has been added. It is used to trigger the FileType +autocommand event, like the 'syntax' option does for the Syntax event. + +":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch +syntax highlighting on/off for the current file. + +The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim. The Syntax +menu is included both when ":filetype on" and when ":syntax manual" is used. + +Renamed the old 'filetype' option to 'osfiletype'. It was only used for +RISCOS. 'filetype' is now used for the common file type. + +Added the ":syntax manual" command. Allows manual selection of the syntax to +be used, e.g., from a modeline. + + +Vim script line continuation *new-line-continuation* +---------------------------- + +When an Ex line starts with a backslash, it is concatenated to the previous +line. This avoids the need for long lines. |line-continuation| (Roemer) +Example: > + if has("dialog_con") || + \ has("dialog_gui") + :let result = confirm("Enter your choice", + \ "&Yes\n&No\n&Maybe", + \ 2) + endif + + +Improved session files *improved-sessions* +---------------------- + +New words for 'sessionoptions': +- "help" Restore the help window. +- "blank" Restore empty windows. +- "winpos" Restore the Vim window position. Uses the new ":winpos" + command +- "buffers" Restore hidden and unloaded buffers. Without it only the + buffers in windows are restored. +- "slash" Replace backward by forward slashes in file names. +- "globals" Store global variables. +- "unix" Use unix file format (<NL> instead of <CR><NL>) + +The ":mksession" and 'sessionoptions' are now in the +mksession feature. + +The top line of the window is also restored when using a session file. + +":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected +when loading a file. + +(Most of this was done by Vince Negri and Robert Webb) + + +Autocommands improved *improved-autocmds-5.4* +--------------------- + +New events: +|FileType| When the file type has been detected. +|FocusGained| When Vim got input focus. (Negri) +|FocusLost| When Vim lost input focus. (Negri) +|BufCreate| Called just after a new buffer has been created or has been + renamed. (Madsen) +|CursorHold| Triggered when no key has been typed for 'updatetime'. Can be + used to do something with the word under the cursor. (Negri) + Implemented CursorHold autocommand event for Unix. (Zellner) + Also for Amiga and MS-DOS. +|GUIEnter| Can be used to do something with the GUI window after it has + been created (e.g., a ":winpos 100 50"). +|BufHidden| When a buffer becomes hidden. Used to delete the + option-window when it becomes hidden. + +Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen) + +The "<amatch>" pattern can be used like "<afile>" for autocommands, except +that it is the matching value for the FileType and Syntax events. + +When ":let @/ = <string>" is used in an autocommand, this last search pattern +will be used after the autocommand finishes. + +Made loading autocommands a bit faster. Avoid doing strlen() on each exiting +pattern for each new pattern by remembering the length. + + +Encryption *new-encryption* +---------- + +Files can be encrypted when writing and decrypted when reading. Added the +'key' option, "-x" command line argument and ":X" command. |encryption| (based +on patch from Mohsin Ahmed) + +When reading a file, there is an automatic detection whether it has been +crypted. Vim will then prompt for the key. + +Note that the encryption method is not compatible with Vi. The encryption is +not unbreakable. This allows it to be exported from the US. + + +GTK GUI port *new-GTK-GUI* +------------ + +New GUI port for GTK+. Includes a toolbar, menu tearoffs, etc. |gui-gtk| +Added the |:helpfind| command. (Kahn and Dalecki) + + +Menu changes *menu-changes-5.4* +------------ + +Menus can now also be used in the console. It is enabled by the new +'wildmenu' option. This shows matches for command-line completion like a +menu. This works as a minimal file browser. + +The new |:emenu| command can be used to execute a menu item. + +Uses the last status line to list items, or inserts a line just above the +command line. (Negri) + +The 'wildcharx' option can be used to trigger 'wildmenu' completion from a +mapping. + +When compiled without menus, this can be detected with has("menu"). Also show +this in the ":version" output. Allow compiling GUI versions without menu +support. Only include toolbar support when there is menu support. + +Moved the "Window" menu all the way to the right (priority 70). Looks more +familiar for people working with MS-Windows, shouldn't matter for others. + +Included "Buffers" menu. Works with existing autocommands and functions. It +can be disabled by setting the "no_buffers_menu" variable. (Aaron and Madsen) + +Win32 supports separators in a menu: "-.*-". (Geddes) +Menu separators for Motif now work too. + +Made Popup menu for Motif GUI work. (Madsen) + +'M' flag in 'guioptions': Don't source the system menu. + +All the menu code has been moved from gui.c to menu.c. + + +Viminfo improved *improved-viminfo* +---------------- + +New flags for 'viminfo': +'!' Store global variables in the viminfo file if they are in uppercase + letters. (Negri) +'h' Do ":nohlsearch" when loading a viminfo file. + +Store search patterns in the viminfo file with their offset, magic, etc. Also +store the flag whether 'hlsearch' highlighting is on or off (which is not used +if the 'h' flag is in 'viminfo'). + +Give an error message when setting 'viminfo' without commas. + + +Various new commands *new-commands-5.4* +-------------------- + +Operator |g?|: rot13 encoding. (Negri) + +|zH| and |zL| commands: Horizontal scrolling by half a page. +|gm| move cursor to middle of screen line. (Ideas by Campbell) + +Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|, +|v_b_<| and |v_b_>|. (Kelly) + +New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to +Normal mode when in Insert or Command-line mode. Can be used by VisVim or +other OLE programs to make sure Vim is in Normal mode, without causing a beep. +|CTRL-\_CTRL-N| + +":cscope kill" command to use the connection filename. |:cscope| (Kahn) + +|:startinsert| command: Start Insert mode next. + +|:history| command, to show all four types of histories. (Roemer) + +|[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end +of method in a (Java) class. + +":@*" executes the * register. |:@| (Acevedo) + +|go| and |:goto| commands: Jump to byte offset in the file. + +|gR| and |gr| command: Virtual Replace mode. Replace characters without +changing the layout. (Webb) + +":cd -" changes to the directory from before the previous ":cd" command. +|:cd-| (Webb) + +Tag preview commands |:ptag|. Shows the result of a ":tag" in a dedicated +window. Can be used to see the context of the tag (e.g., function arguments). +(Negri) +|:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore) +'previewheight' option, height for the preview window. +Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|. + +|:find| and |:sfind| commands: Find a file in 'path', (split window) and edit +it. + +The |:options| command opens an option window that shows the current option +values. Or use ":browse set" to open it. Options are grouped by function. +Offers short help on each option. Hit <CR> to jump to more help. Edit the +option value and hit <CR> on a "set" line to set a new value. + + +Various new options *new-options-5.4* +------------------- + +Scroll-binding: 'scrollbind' and 'scrollopt' options. Added |:syncbind| +command. Makes windows scroll the same amount (horizontally and/or +vertically). (Ralston) + +'conskey' option for MS-DOS. Use direct console I/O. This should work with +telnet (untested!). + +'statusline' option: Configurable contents of the status line. Also allows +showing the byte offset in the file. Highlighting with %1* to %9*, using the +new highlight groups User1 to User9. (Madsen) + +'rulerformat' option: Configurable contents of the ruler, like 'statusline'. +(Madsen) + +'write' option: When off, writing files is not allowed. Avoids overwriting a +file even with ":w!". The |-m| command line option resets 'write'. + +'clipboard' option: How the clipboard is used. Value "unnamed": Use unnamed +register like "*. (Cortopassi) Value "autoselect": Like what 'a' in +'guioptions' does but works in the terminal. + +'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI +versions. Allows using normal fonts when vim is compiled with this feature. +(Nam) + +'guiheadroom' option: How much room to allow above/below the GUI window. +Used for Motif, Athena and GTK. + +Implemented 'tagstack' option: When off, pushing tags onto the stack is +disabled (Vi compatible). Useful for mappings. + +'shellslash' option. Only for systems that use a backslash as a file +separator. This option will use a forward slash in file names when expanding +it. Useful when 'shell' is sh or csh. + +'pastetoggle' option: Key sequence that toggles 'paste'. Works around the +problem that mappings don't work in Insert mode when 'paste' is set. + +'display' option: When set to "lastline", the last line fills the window, +instead of being replaced with "@" lines. Only the last three characters are +replaced with "@@@", to indicate that the line has not finished yet. + +'switchbuf' option: Allows re-using existing windows on a buffer that is being +jumped to, or split the window to open a new buffer. (Roemer) + +'titleold' option. Replaces the fixed string "Thanks for flying Vim", which +is used to set the title when exiting. (Schild) + + +Vim scripts *new-script-5.4* +----------- + +The |exists()| function can also check for existence of a function. (Roemer) +An internal function is now found with a binary search, should be a bit +faster. (Roemer) + +New functions: +- |getwinposx()| and |getwinposy()|: get Vim window position. (Webb) +- |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history + available. (Roemer) +- |maparg()|: Returns rhs of a mapping. Based on a patch from Vikas. +- |mapcheck()|: Check if a map name matches with an existing one. +- |visualmode()|: Return type of last Visual mode. (Webb) +- |libcall()|: Call a function in a library. Currently only for Win32. (Negri) +- |bufwinnr()|: find window that contains the specified buffer. (Roemer) +- |bufloaded()|: Whether a buffer exists and is loaded. +- |localtime()| and |getftime()|: wall clock time and last modification time + of a file (Webb) +- |glob()|: expand file name wildcards only. +- |system()|: get the raw output of an external command. (based on a patch + from Aaron). +- |strtrans()|: Translate String into printable characters. Used for + 2html.vim script. +- |append()|: easy way to append a line of text in a buffer. + +Changed functions: +- Optional argument to |strftime()| to give the time in seconds. (Webb) +- |expand()| now also returns names for files that don't exist. + +Allow numbers in the name of a user command. (Webb) + +Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc. The +ones from version 5.3 can be used without "v:" too, for backwards +compatibility. + +New variables: +"v:warningmsg" and "v:statusmsg" internal variables. Contain the last given +warning and status message. |v:warningmsg| |v:statusmsg| (Madsen) +"v:count1" variable: like "v:count", but defaults to one when no count is +used. |v:count1| + +When compiling without expression evaluation, "if 1" can be used around the +not supported commands to avoid it being executed. Works like in Vim 4.x. +Some of the runtime scripts gave errors when used with a Vim that was compiled +with minimal features. Now "if 1" is used around code that is not always +supported. + +When evaluating an expression with && and ||, skip the parts that will not +influence the outcome. This makes it faster and avoids error messages. (Webb) +Also optimized the skipping of expressions inside an "if 0". + + +Avoid hit-enter prompt *avoid-hit-enter* +----------------------- + +Added 'T' flag to 'shortmess': Truncate all messages that would cause the +hit-enter prompt (unless that would happen anyway). +The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from +the ":cn" command. + +The default for 'shortmess' is now "filnxtToO", to make most messages fit on +the command line, and not cause the hit-enter prompt. + +Previous messages can be viewed with the new |:messages| command. + +Some messages are shown fully, even when 'shortmess' tells to shorten +messages, because the user is expected to want to see them in full: CTRL-G and +some quickfix commands. + + +Improved quickfix *improved-quickfix* +----------------- + +Parse change-directory lines for gmake: "make[1]: Entering directory 'name'". +Uses "%D" and "%X" in 'errorformat'. +Also parse "Making {target} in {dir}" messages from make. Helps when not +using GNU make. (Schandl) + +Use 'isfname' for "%f" in 'errorformat'. + +Parsing of multi-line messages. |errorformat-multi-line| + +Allow a range for the |:clist| command. (Roemer) + +Support for "global" file names, for error formats that output the file name +once for several errors. (Roemer) + +|:cnfile| jumps to first error in next file. + +"$*" in 'makeprg' is replaced by arguments to ":make". (Roemer) + + +Regular expressions *regexp-changes-5.4* +------------------- + +In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$| +In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson) + +In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered +end-of-line. Now use "$" as end-of-line and "\$" for a literal dollar. Same +for '^' after "\(" and "\|". |/\$| |/\^| + +Some search patterns can be extremely slow, even though they are not really +illegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting any regexp +search with CTRL-C. + +Register "/: last search string (read-only). (Kohan) Changed to use last used +search pattern (like what 'hlsearch' uses). Can set the search pattern with +":let @/ = {expr}". + +Added character classes to search patterns, to avoid the need for removing the +'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and +|[:escape:]|. + +By adding a '?' after a comparative operator in an expression, the comparison +is done by ignoring case. |expr-==?| + + +Other improvements made between version 5.3 and 5.4 +--------------------------------------------------- + +Changed *changed-5.4* +------- + +Unix: Use $TMPDIR for temporary files, if it is set and exists. + +Removed "Empty buffer" message. It isn't useful and can cause a hit-enter +prompt. (Negri) + +"ex -" now reads commands from stdin and works in silent mode. This is to be +compatible with the original "ex" command that is used for scripts. + +Default range for ":tcldo" is the whole file. + +Cancelling Visual mode with ESC moved the cursor. There appears to be no +reason for this. Now leave the cursor where it is. + +The ":grep" and ":make" commands see " as part of the arguments, instead of +the start of a comment. + +In expressions the "=~" and "!~" operators no longer are affected by +'ignorecase'. + +Renamed vimrc_example to vimrc_example.vim and gvimrc_example to +gvimrc_example.vim. Makes them being recognized as vim scripts. + +"gd" no longer starts searching at the end of the previous function, but at +the first blank line above the start of the current function. Avoids that +using "gd" in the first function finds global a variable. + +Default for 'complete' changed from ".,b" to ".,w,b,u,t,i". Many more matches +will be found, at the cost of time (the search can be interrupted). + +It is no longer possible to set 'shell*' options from a modeline. Previously +only a warning message was given. This reduces security risks. + +The ordering of the index of documentation files was changed to make it more +easy to find a subject. + +On MS-DOS and win32, when $VIM was not set, $HOME was used. This caused +trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files +would not be found. Now use $HOME only for _vimrc, _gvimrc, etc., not to find +the runtime file. + +When 'tags' is "./{fname}" and there is no file name for the current buffer, +just use it. Previously it was skipped, causing "vim -t {tag}" not to find +many tags. + +When trying to select text in the 'scrolloff' area by mouse dragging, the +resulting scrolling made this difficult. Now 'scrolloff' is temporarily set +to 0 or 1 to avoid this. But still allow scrolling in the top line to extend +to above the displayed text. + +Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc +comments work. Also helps for C comments that start with "/*******". + +CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used +after a non-ID character, which can take a very long time. Now limit this to +200 matches. Also used for command-line tag completion. + +The OS/2 distribution has been split in two files. It was too big to fit on a +floppy. The same runtime archive as for the PC is now used. + +In the documentation, items like <a-z> have been replaced with {a-z} for +non-optional arguments. This avoids confusion with key names: <C-Z> is a +CTRL-Z, not a character between C and Z, that is {C-Z}. + + +Added *added-5.4* +----- + +Color support for the iris-ansi builtin termcap entry. (Tubman) + +Included VisVim version 1.3a. (Erhardt) + +Win32 port for SNiFF+ interface. (Leherbauer) +Documentation file for sniff interface: if_sniff.txt. (Leherbauer) + +Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory. +To be used with the OLE version of gvim under MS-Windows. (Schaller) + +Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert) + +When a file that is being edited is deleted, give a warning (like when the +time stamp changed). + +Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo) + +Linux console mouse support through "gpm". (Tsindlekht) + +Security fix: Disallow changing 'secure' and 'exrc' from a modeline. When +'secure' is set, give a warning for changing options that contain a program +name. + +Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege) + +When giving an error message for an ambiguous mapping, include the offending +mapping. (Roemer) + +Command line editing: +- Command line completion of mappings. (Roemer) +- Command line completion for ":function", ":delfunction", ":let", ":call", + ":if", etc. (Roemer) +- When using CTRL-D completion for user commands that have + "-complete=tag_listfiles" also list the file names. (Madsen) +- Complete the arguments of the ":command" command. (Webb) +- CTRL-R . in command line inserts last inserted text. CTRL-F, CTRL-P, CTRL-W + and CTRL-A after CTRL-R are used to insert an object from under the cursor. + (Madsen) + +Made the text in uganda.txt about copying Vim a bit more clear. + +Updated the Vim tutor. Added the "vimtutor" command, which copies the tutor +and starts Vim on it. "make install" now also copies the tutor. + +In the output of ":clist" the current entry is highlighted, with the 'i' +highlighting (same as used for 'incsearch'). + +For the ":clist" command, you can scroll backwards with "b" (one screenfull), +"u" (half a screenfull) and "k" (one line). + +Multi-byte support: +- X-input method for multi-byte characters. And various fixes for multi-byte + support. (Nam) +- Hangul input method feature: |hangul|. (Nam) +- Cleaned up configuration of multi-byte support, XIM, fontset and Hangul + input. Each is now configurable separately. +- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam) +- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam) +- XIM support for GTK+. (Nam) +- First attempt to include support for SJIS encoding. (Nagano) +- When a double-byte character doesn't fit at the end of the line, put a "~" + there and print it on the next line. +- Optimize output of multi-byte text. (Park) +- Win32 IME: preedit style is like over-the-spot. (Nagano) +- Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano) +- GUI Athena: file selection dialog can display multi-byte characters. + (Nagano) +- Selection reply for XA_TEXT as XA_STRING. (Nagano) + +"runtime/macros/diffwin.vim". Mappings to make a diff window. (Campbell) + +Added ".obj" to the 'suffixes' option. + +Reduced size of syntax/synload.vim by using the ":SynAu" user command. +Automated numbering of Syntax menu entries in menu.vim. +In the Syntax menu, insert separators between syntax names that start with +a different letter. (Geddes) + +Xterm: +- Clipboard support when using the mouse in an xterm. (Madsen) +- When using the xterm mouse, track dragging of the mouse. Use xterm escape + sequences when possible. It is more precise than other methods, but + requires a fairly recent xterm version. It is enabled with "xterm2" in + 'ttymouse'. (Madsen) +- Check xterm patch level, to set the value of 'ttymouse'. Has only been + added to xterm recently (patch level > 95). Uses the new 't_RV' termcap + option. Set 'ttymouse' to "xterm2" when a correct response is recognized. + Will make xterm mouse dragging work better. +- Support for shifted function keys on xterm. Changed codes for shifted + cursor keys to what the xterm actually produces. Added codes for shifted + <End> and <Home>. +- Added 't_WP' to set the window position in pixels and 't_WS' to set the + window size in characters. Xterm can now move (used for ":winpos") and + resize (use for ":set lines=" and ":set columns="). + +X11: +- When in Visual mode but not owning the selection, display the Visual area + with the VisualNOS group to show this. (Madsen) +- Support for requesting the type of clipboard support. Used for AIX and + dtterm. (Wittig) +- Support compound_text selection (even when compiled without multi-byte). + +Swap file: +- New variation for naming swap files: Replace path separators into %, place + all swap files in one directory. Used when a name in 'dir' ends in two path + separators. (Madsen) +- When a swap file is found, show whether it contains modifications or not in + the informative message. (Madsen) +- When dialogs are supported, use a dialog to ask the user what to do when a + swapfile already exists. + +"popup_setpos" in 'mousemodel' option. Allows for moving the cursor when +using the right mouse button. + +When a buffer is deleted, the selection for which buffer to display instead +now uses the most recent entry from the jump list. (Madsen) + +When using CTRL-O/CTRL-I, skip deleted buffers. + +A percentage is shown in the ruler, when there is room. + +Used autoconf 1.13 to generate configure. + +Included get_lisp_indent() from Dirk van Deun. Does better Lisp indenting +when 'p' flag in 'cpoptions' is not included. + +Made the 2html.vim script quite a bit faster. (based on ideas from Geddes) + +Unix: +- Included the name of the user that compiled Vim and the system name it was + compiled on in the version message. +- "make install" now also installs the "tools" directory. Makes them + available for everybody. +- "make check" now does the same as "make test". "make test" checks for + Visual block mode shift, insert, replace and change. +- Speed up comparing a file name with existing buffers by storing the + device/inode number with the buffer. +- Added configure arguments "--disable-gtk", "--disable-motif" and + "--disable-athena", to be able to disable a specific GUI (when it doesn't + work). +- Renamed the configure arguments for disabling the check for specific GUIs. + Should be clearer now. (Kahn) +- On a Digital Unix system ("OSF1") check for the curses library before + termlib and termcap. (Schild) +- "make uninstall_runtime" will only delete the version-specific files. Can + be used to delete the runtime files of a previous version. + +Macintosh: (St-Amant) +- Dragging the scrollbar, like it's done for the Win32 GUI. Moved common code + from gui_w32.c to gui.c +- Added dialogs and file browsing. +- Resource fork preserved, warning when it will be lost. +- Copy original file attributes to newly written file. +- Set title/notitle bug solved. +- Filename completion improved. +- Grow box limit resize to a char by char size. +- Use of rgb.txt for more colors (but give back bad color). +- Apple menu works (beside the about...). +- Internal border now vim compliant. +- Removing a menu doesn't crash anymore. +- Weak-linking of Python 1.5.1 (only on PPC). Python is supported when the + library is available. +- If an error is encountered when sourcing the users .vimrc, the alert box now + shows right away with the OK button defaulted. There's no more "Delete"-key + sign at the start of each line +- Better management of environment variables. Now $VIM is calculated only + once, not regenerated every time it is used. +- No more CPU hog when in background. +- In a sourced Vim script the Mac file format can be recognized, just like DOS + file format is. + +When both "unix" and "mac" are present in 'fileformats', prefer "mac" format +when there are more CR than NL characters. +When using "mac" fileformat, use CR instead of a NL, because NL is used for +NUL. Will preserve all characters in a file. (Madsen) + +The DOS install.exe now contains checks for an existing installation. It +avoids setting $VIM and $PATH again. +The install program for Dos/Windows can now install Vim in the popup menu, by +adding two registry keys. + +Port to EGCS/mingw32. New Makefile.ming. (Aaron) + +DOS 16 bit: Don't include cursor shape stuff. Save some bytes. + +TCL support to Makefile.w32. (Duperval) + +OS/2: Use argv[0] to find runtime files. + +When using "gf" to go to a buffer that has already been used, jump to the +line where the cursor last was. + +Colored the output of ":tselect" a bit more. Different highlighting between +tag name and file name. Highlight field name ("struct:") separately from +argument. + +Backtick expansion for non-Unix systems. Based on a patch from Aaron. +Allows the use of things like ":n `grep -l test *.c`" and +"echo expand('`ls m*`')". + +Check for the 'complete' option when it is set. (Acevedo) +'d' flag in 'complete' searches for defined names or macros. +While searching for Insert mode completions in include files and tags files, +check for typeahead, so that you can use matches early. (Webb) +The '.' flag in 'complete' now scans the current buffer completely, ignoring +'nowrapscan'. (Webb) + +Added '~' flag to 'whichwrap'. (Acevedo) + +When ending the Visual mode (e.g., with ESC) don't grab ownership of the +selection. + +In a color terminal, "fg" and "bg" can be used as color names. They stand for +the "Normal" colors. + +A few cscope cleanups. (Kahn) + +Included changed vimspell.sh from Schemenauer. + +Concatenation of strings in an expression with "." is a bit faster. (Roemer) + +The ":redir" command can now redirect to a register: ":redir @r". (Roemer) + +Made the output of ":marks" and ":jumps" look similar. When the mark is in +the current file, show the text at the mark. Also for ":tags". + +When configure finds ftello() and fseeko(), they are used in tag.c (for when +you have extremely big tags files). + +Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow) + +GUI: +- When using ":gui" in a non-GUI Vim, give a clear error message. +- "gvim -v" doesn't start the GUI (if console support is present). +- When in Ex mode, use non-Visual selection for the whole screen. +- When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim + forked anyway. Now the "-f" flag is remembered for ":gui". Added "gui -b" + to run gvim in the background anyway. + +Motif GUI: +- Check for "-lXp" library in configure (but it doesn't work yet...). +- Let configure check for Lesstif in "/usr/local/Lesstif/Motif*". Changed the + order to let a local Motif version override a system standard version. + +Win32 GUI: +- When using "-register" or "-unregister" in the non-OLE version, give an + error message. +- Use GTK toolbar icons. Make window border look better. Use sizing handles + on the lower left&right corners of the window. (Negri) +- When starting an external command with ":!start" and the command can not be + executed, give an error message. (Webb) +- Use sizing handles for the grey rectangles below the scrollbars. Can draw + toolbar in flat mode now, looks better. (Negri) +- Preparations for MS-Windows 3.1 addition. Mostly changing WIN32 to MSWIN + and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri) + +Avoid allocating the same string four times in buflist_findpat(). (Williams) + +Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and +'t_IE'. Allows doing this on any terminal that supports setting the title +and/or icon text. (Schild) + +New 'x' flag in 'comments': Automatically insert the end part when its last +character is typed. Helps to close a /* */ comment in C. (Webb) + +When expand() has a second argument which is non-zero, don't use 'suffixes' +and 'wildignore', return all matches. + +'O' flag in 'cpoptions: When not included, Vim will not overwrite a file, if +it didn't exist when editing started but it does exist when the buffer is +written to the file. The file must have been created outside of Vim, possibly +without the user knowing it. When this is detected after a shell command, +give a warning message. + +When editing a new file, CTRL-G will show [New file]. When there were errors +while reading the file, CTRL-G will show [Read errors]. + +":wall" can now use a dialog and file-browsing when needed. + +Grouped functionality into new features, mainly to reduce the size of the +minimal version: ++linebreak: 'showbreak', 'breakat' and 'linebreak' ++visualextra: "I"nsert and "A"ppend in Visual block mode, "c"hange all lines + in a block, ">" and "<": Shifting a block, "r": Replacing a + Visual area with one character. ++comments: 'comments' ++cmdline_info: 'ruler' and 'showcmd'. Replaces +showcmd. +"+title" Don't add code to set title or icon for MSDOS, this was not + possible anyway. ++cmdline_compl Disable commandline completion at compile time, except for + files, directories and help items. + +Moved features from a list of function calls into an array. Should save a bit +of space. + +While entering the body of a function, adjust indent according to "if" and +"while" commands. + +VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy. + +The flags in the 'comments' option can now include an offset. This makes it +possible to align "/*****", "/* xxx" and "/*" comments with the same +'comments' setting. The default value for 'comments' uses this. +Added 'O' flag: Don't use this part for the "O" command. Useful for "set +com=sO:*\ -,mO:*\ \ ,exO:*/" + +FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove +them to find the relevant extension. + +The tutorial for writing a Vim script file has been extended. + +Some more highlighting in help files, for items that are not typed literally. + +Can use "CTRL-W CTRL-G" like "CTRL-W g". + +"make test" for OS/2. + +Adjusted configure to automatically use the GUI for BeOS. + + +Fixed *fixed-5.4* +----- + +5.3.1: When using an autocommand for BufWritePre that changes the name of the +buffer, freed memory would be used. (Geddes) + +Mac: Compiler didn't understand start of skip_class_name(). + +Win32 GUI: +- When cancelling the font requester, don't give an error message. +- When a tearoff-menu is open and its menu is deleted, Vim could crash. + (Negri) +- There was a problem on Windows 95 with (un)maximizing the window. + (Williams) +- when 'mousehide' is set, the mouse would stay hidden when a menu is dropped + with the keyboard. (Ralston) +- The tempname() function already created the file. Caused problems when + using ":w". Now the file is deleted. +- Cursor disappeared when ending up in the top-left character on the screen + after scrolling. (Webb) +- When adding a submenu for a torn-off menu, it was not updated. +- Menu tooltip was using the toolbar tooltip. (Negri) +- Setting 'notitle' didn't remove the title. (Steed) +- Using ":!start cmd" scrolled the screen one line up, and didn't wait for + return when the command wasn't found. + +Cscope interface: Sorting of matches was wrong. Starting the interface could +fail. (Kahn) + +Motif GUI: Could not compile with Motif 1.1, because some tear-off +functionality was not in #ifdefs. + +Configure could sometimes not compile or link the test program for sizeof(int) +properly. This caused alignment problems for the undo structure allocations. +Added a safety check that SIZEOF_INT is not zero. + +Added configure check to test if strings.h can be included after string.h. +Some systems can't handle it. +Some systems need both string.h and strings.h included. Adjusted vim.h for +that. Removed including string.h from os_unixx.h, since it's already in +vim.h. (Savage) +AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and +strings.h, but after the configure check said it was OK. Also define +_NO_PROTO for AIX in the configure check. (Winn) + +When closing a window with CTRL-W c, the value of 'hidden' was not taken into +account, the buffer was always unloaded. (Negri) + +Unix Makefile: "make install" always tried to rename an older executable and +remove it. This caused an error message when it didn't exit. Added a check +for the existence of an old executable. +The command line for "make install" could get too long, because of the many +syntax files. Now first do a "cd" to reduce the length. + +On RISCOS and MSDOS, reading a file could fail, because the short filename was +used, which can be wrong after a ":!cd". + +In the DOS versions, the wrong install.exe was included (required Windows). +Now the install.exe version is included that is the same as the Vim version. +This also supports long file names where possible. + +When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O +would also be recorded. + +32bit DOS version: "vim \file", while in a subdirectory, resulted in "new +file" for "file" in the local directory, while "\file" did exist. When +"file" in the current directory existed, this didn't happen. + +MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young) + +"make test" failed in the RedHat RPM, because compatible is off by default. + +In Insert mode <C-O><C-W><C-W> changes to other window, but the status bars +were not updated until another character was typed. + +MSDOS: environment options in lowercase didn't work, although they did in the +Win32 versions. (Negri) + +After ":nohlsearch", a tag command switched highlighting back on. + +When using "append" command as the last line in an autocommand, Vim would +crash. + +RISCOS: The scroll bumpers (?) were not working properly. (Leonard) + +"zl" and "zh" could move the cursor, but this didn't set the column in which +e.g., "k" would move the cursor. + +When doing ":set all&" the value of 'scroll' was not set correctly. This +caused an error message when later setting any other number option. + +When 'hlsearch' highlighting has been disabled with ":nohlsearch", +incremental searching would switch it back on too early. + +When listing tags for ":tselect", and using a non-search command, and the last +character was equal to the first (e.g., "99"), the last char would not be +shown. + +When searching for tags with ":tag" Vim would assume that all matches had been +found when there were still more (e.g. from another tags file). + +Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when +upper/lowercase was different. + +Some xterms (Debian) send <Esc>OH for HOME and <Esc>OF for END. Added these +to the builtin-xterm. + +In ex mode, any CR was seen as the end of the line. Only a NL should be +handled that way. broke ":s/foo/some^Mtext/". + +In menu.vim, a vmenu was used to override an amenu. That didn't work, because +the system menu file doesn't overwrite existing menus. Added explicit vunmenu +to solve this. + +Configure check for terminal library could find a library that doesn't work at +runtime (Solaris: shared library not found). Added a check that a program +with tgoto() can run correctly. + +Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors +compiling pathdef.c. Replaced it with "tr". + +Perl: DO_JOIN was redefined by Perl. Undefined it in the perl files. + +Various XIM and multi-byte fixes: +- Fix user cannot see his language while he is typing his language with + off-the-spot method. (Nagano) +- Fix preedit position using text/edit area (using gui.wid). (Nagano) +- remove 'fix dead key' codes. It was needed since XNFocusWindow was + "x11_window", XNFocusWindow is now gui.wid. (Nagano) +- Remove some compile warnings and fix typos. (Namsh) +- For status area, check the gtk+ version while Vim runs. I believe it is + better than compile time check. (Namsh) +- Remove one FIXME for gtk+-xim. (Namsh) +- XIM: Dead keys didn't work for Czech. (Vyskovsky) +- Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM + could convert it to special character. (Nam) +- Athena/Motif with XIM: fix preedit area. (Nam) +- XIM: Composed strings were sometimes ignored. Vim crashed when compose + string was longer than 256 bytes. IM's geometry control is fixed. (Nam, + Nagano) +- Win32 multi-byte: hollowed cursor width on a double byte char was wrong. + (Nagano) +- When there is no GUI, selecting XIM caused compilation problems. + Automatically disable XIM when there is no GUI in configure. +- Motif and Athena: When compiled with XIM, but the input method was not + enabled, there would still be a status line. Now the status line is gone if + the input method doesn't work. (Nam) + +Win32: tooltip was not removed when selecting a parent menu (it was when +selecting a menu entry). (Negri) + +Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call. +Removed it, it should not be necessary when exiting. + +Win32: Crash on keypress when compiled with Borland C++. (Aaron) + +When checking for Motif library files, prefer the same location as the include +files (with "include" replaced with "lib") above another entry. + +Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's +used in gui_x11.c. + +Win32: When testing for a timestamp of a file on floppy, would get a dialog +box when the floppy has been removed. Now return with an error. (Negri) + +Win32 OLE: When forced to come to the foreground, a minimized window was still +minimized, now it's restored. (Zivkov) + +There was no check for a positive 'shiftwidth'. A negative value could cause +a hangup, a zero value a crash. + +Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right +or left of the thumb. + +When making a Visual-block selection in one window, and trying to scroll +another, could cause errors for accessing non-existent line numbers. + +When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work +properly. + +Changed '\"' to '"' to make it compatible with old C compilers. + +The command line expansion for mappings caused a script with a TAB between lhs +and rhs of a map command to fail. Assume the TAB is to separate lhs and rhs +when there are no mappings to expand. + +When editing a file with very long lines with 'scrolloff' set, "j" would +sometimes end up in a line which wasn't displayed. + +When editing a read-only file, it was completely read into memory, even when +it would not fit. Now create a swap file for a read-only file when running +out of memory while reading the file. + +When using ":set cino={s,e-s", a line after "} else {" was not indented +properly. Also added a check for this in test3.in. + +The Hebrew mapping for the command line was remembered for the next command +line. That isn't very useful, a command is not Hebrew. (Kol) + +When completing file names with embedded spaces, like "Program\ files", this +didn't work. Also for user commands. Moved backslash_halve() down to +mch_expandpath(). + +When using "set mouse=a" in Ex mode, mouse events were handled like typed +text. Then typing "quit" screwed up the mouse behavior of the xterm. + +When repeating an insert with "." that contains a CTRL-Y, a number 5 was +inserted as "053". + +Yanking a Visual area, with the cursor past the line, didn't move the cursor +back onto the line. Same for "~", "u", "U" and "g?" + +Win32: Default for 'grepprg' could be "findstr /n" even though there is no +findstr.exe (Windows 95). Check if it exists, and fall back to "grep -n" if +it doesn't. + +Because gui_mouse_moved() inserted a leftmouse click in the input buffer, +remapping a leftmouse click caused strange effects. Now Insert another code +in the input buffer. Also insert a leftmouse release, to avoid the problem +with ":map <LeftMouse> l" that the next release is seen as the release for the +focus click. + +With 'wrap' on, when using a line that doesn't fit on the screen, if the start +of the Visual area is before the start of the screen, there was no +highlighting. Also, 'showbreak' doesn't work properly. + +DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands. + +When creating a swap file for a buffer which isn't the current buffer, could +get a mixup of short file name, resulting in a long file name when a short +file name was required. makeswapname() was calling modname() instead of +buf_modname(). + +When a function caused an error, and the error message was very long because +of recursiveness, this would cause a crash. + +'suffixes' were always compared with matching case. For MS-DOS, Win32 and +OS/2 case is now ignored. + +The use of CHARBITS in regexp.c didn't work on some Linux. Don't use it. + +When generating a script file, 'cpo' was made empty. This caused backslashes +to disappear from mappings. Set it to "B" to avoid that. + +Lots of typos in the documentation. (Campbell) + +When editing an existing (hidden) buffer, jump to the last used cursor +position. (Madsen) + +On a Sun the xterm screen was not restored properly when suspending. (Madsen) + +When $VIMINIT is processed, 'nocompatible' was only set after processing it. + +Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard +all together. Cleaned up the code for using select() too. + +When executing external commands from the GUI, some typeahead was lost. Added +some code to regain as much typeahead as possible. + +When the window height is 5 lines or fewer, <PageDown> didn't use a one-line +overlap, while <PageUp> does. Made sure that <PageUp> uses the same overlap +as <PageDown>, so that using them both always displays the same lines. + +Removed a few unused functions and variables (found with lint). + +Dictionary completion didn't use 'infercase'. (Raul) + +Configure tests failed when the Perl library was not in LD_LIBRARY_PATH. +Don't use the Perl library for configure tests, add it to the linker line only +when linking Vim. + +When using ncurses/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that +has "%d" instead of "%p1%d". The light background colors didn't work then. + +GTK GUI with ncurses: Crashed when starting up in tputs(). Don't use tputs() +when the GUI is active. + +Could use the ":let" command to set the "count", "shell_error" and "version" +variables, but that didn't work. Give an error message when trying to set +them. + +On FreeBSD 3.0, tclsh is called tclsh8.0. Adjusted configure.in to find it. + +When Vim is linked with -lncurses, but python uses -ltermcap, this causes +trouble: "OOPS". Configure now removes the -ltermcap. + +:@" and :*" didn't work properly, because the " was recognized as the start of +a comment. + +Win32s GUI: Minimizing the console where a filter command runs in caused +trouble for detecting that the filter command has finished. (Negri) + +After executing a filter command from an xterm, the mouse would be disabled. +It would work again after changing the mode. + +Mac GUI: Crashed in newenv(). (St-Amant) + +The menus and mappings in mswin.vim didn't handle text ending in a NL +correctly. (Acevedo) + +The ":k" command didn't check if it had a valid argument or extra characters. +Now give a meaningful error message. (Webb) + +On SGI, the signal function doesn't always have three arguments. Check for +struct sigcontext to find out. Might still be wrong... + +Could crash when using 'hlsearch' and search pattern is "^". + +When search patterns were saved and restored, status of no_hlsearch was not +also saved and restored (from ":nohlsearch" command). + +When using setline() to make a line shorter, the cursor position was not +adjusted. + +MS-DOS and Win95: When trying to edit a file and accidentally adding a slash +or backslash at the end, the file was deleted. Probably when trying to create +the swap file. Explicitly check for a trailing slash or backslash before +trying to read a file. + +X11 GUI: When starting the GUI failed and received a deadly signal while +setting the title, would lock up when trying to exit, because the title is +reset again. Avoid using mch_settitle() recursively. + +X11 GUI: When starting the GUI fails, and then trying it again, would crash, +because argv[] has been freed and x11_display was reset to NULL. + +Win32: When $HOME was set, would put "~user" in the swap file, which would +never compare with a file name, and never cause the attention message. Put +the full path in the swap file instead. + +Win32 console: There were funny characters at the end of the "vim -r" swap +files message (direct output of CR CR LF). + +DOS 32 bit: "vim -r" put the text at the top of the window. + +GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q". + +Motif and Win32 GUI: When changing 'guifont' to a font of the same size the +screen wasn't redrawn. + +Unix: When using ":make", jumping to a file b.c, which is already open as a +symbolic link a.c, opened a new buffer instead of using the existing one. + +Inserting text in the current buffer while sourcing the .vimrc file would +cause a crash or hang. The memfile for the current buffer was never +allocated. Now it's allocated as soon as something is written in the buffer. + +DOS 32 bit: "lightblue" background worked for text, but not drawn parts were +black. + +DOS: Colors of console were not restored upon exiting. + +When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode +caused the "recording" message to be doubled. + +Spurious "file changed" messages could happen on Windows. Now tolerate a one +second difference, like for Linux. + +GUI: When returning from Ex mode, scrollbars were not updated. + +Win32: Copying text to the clipboard containing a <CR>, pasting it would +replace it with a <NL> and drop the next character. + +Entering a double byte character didn't work if the second byte is in [xXoO]. +(Eric Lee) + +vim_realloc was both defined and had a prototype in proto/misc2.pro. Caused +conflicts on Solaris. + +A pattern in an autocommand was treated differently on DOS et al. than on +Unix. Now it's the same, also when using backslashes. + +When using <Tab> twice for command line completion, without a match, the <Tab> +would be inserted. (Negri) + +Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri) + +Testing the result of mktemp() for failure was wrong. Could cause a crash. +(Peters) + +GUI: When checking for a ".gvimrc" file in the current directory, didn't check +for a "_gvimrc" file too. + +Motif GUI: When using the popup menu and then adding an item to the menu bar, +the menu bar would get very high. + +Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and +dialogs. Now they are ignored. + +When at the more-prompt, xterm selection didn't work. Now use the 'r' flag in +'mouse' also for the more-prompt. + +When selecting a Visual area of more than 1023 lines, with 'guioptions' set to +"a", could mess up the display because of a message in free_yank(). Removed +that message, except for the Amiga. + +Moved auto-selection from ui_write() to the screen update functions. Avoids +unexpected behavior from a low-level function. Also makes the different +feedback of owning the selection possible. + +Vi incompatibility: Using "i<CR>" in an indent, with 'ai' set, used the +original indent instead of truncating it at the cursor. (Webb) + +":echo x" didn't stop at "q" for the more prompt. + +Various fixes for Macintosh. (St-Amant) + +When using 'selectmode' set to "exclusive", selecting a word and then using +CTRL-] included the character under the cursor. + +Using ":let a:name" in a function caused a crash. (Webb) + +When using ":append", an empty line didn't scroll up. + +DOS etc.: A file name starting with '!' didn't work. Added '!' to default for +'isfname'. + +BeOS: Compilation problem with prototype of skip_class_name(). (Price) + +When deleting more than one line, e.g., with "de", could still use "U" +command, which didn't work properly then. + +Amiga: Could not compile ex_docmd.c, it was getting too big. Moved some +functions to ex_cmds.c. + +The expand() function would add a trailing slash for directories. + +Didn't give an error message when trying to assign a value to an argument of a +function. (Webb) + +Moved including sys/ptem.h to after termios.h. Needed for Sinix. + +OLE interface: Don't delete the object in CVimCF::Release() when the reference +count becomes zero. (Cordell) +VisVim could still crash on exit. (Erhardt) + +"case a: case b:" (two case statements in one line) aligned with the second +case. Now it uses one 'sw' for indent. (Webb) + +Font initialisation wasn't right for Athena/Motif GUI. Moved the call to +highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam) + +In Replace mode, backspacing over a TAB before where the replace mode started +while 'sts' is different from 'ts', would delete the TAB. + +Win32 console: When executing external commands and switching between the two +console screens, Vim would copy the text between the buffers. That caused the +screen to be messed up for backtick expansion. + +":winpos -1" then ":winpos" gave wrong error message. + +Windows commander creates files called c:\tmp\$wc\abc.txt. Don't remove the +backslash before the $. Environment variables were not expanded anyway, +because of the backslash before the dollar. + +Using "-=" with ":set" could remove half a part when it contains a "\,". +E.g., ":set path+=a\\,b" and then "set path-=b" removed ",b". + +When Visually selecting lines, with 'selection' set to "inclusive", including +the last char of the line, "<<" moved an extra line. Also for other operators +that always work on lines. + +link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed. +Now it only remove whole words. + +When jumped to a mark or using "fz", and there is an error, the current column +was lost. E.g. when using "$fzj". + +The "g CTRL-G" command could not be interrupted, even though it can take a +long time. + +Some terminals do have <F4> and <xF4>. <xF4> was always interpreted as <F4>. +Now map <xF4> to <F4>, so that the user can override this. + +When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be +used. (Aaron) + +This autocommand looped forever: ":au FileChangedShell * nested e <afile>" +Now FileChangeShell never nests. (Roemer) + +When evaluating an ":elseif" that was not going to matter anyway, ignore +errors. (Roemer) + +GUI Lesstif: Tearoff bar was the last item, instead of the first. + +GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to +'guioptions' afterwards. When 't' flag in 'guioptions' is excluded, would +still get a tearoff item in a new menu. + +An inode number can be "long long". Use ino_t instead of long. Added +configure check for ino_t. + +Binary search for tags was using a file offset "long" instead of "off_t". + +Insert mode completion of tags was not using 'ignorecase' properly. + +In Insert mode, the <xFn> keys were not properly mapped to <Fn> for the +default mappings. Also caused errors for ":mkvimrc" and ":mksession". + +When jumping to another window while in Insert mode, would get the "warning: +changing readonly file" even when not making a change. + +A '(' or '{' inside a trailing "//" comment would disturb C-indenting. +When using two labels below each other, the second one was not indented +properly. Comments could mess up C-indenting in many places. (Roemer) + +Could delete or redefine a function while it was being used. Could cause a +crash. +In a function it's logical to prepend "g:" to a system variable, but this +didn't work. (Roemer) + +Hangul input: Buffer would overflow when user inputs invalid key sequence. +(Nam) + +When BufLoad or BufEnter autocommands change the topline of the buffer in the +window, it was overruled and the cursor put halfway the window. Now only put +the cursor halfway if the autocommands didn't change the topline. + +Calling exists("&option") always returned 1. (Roemer) + +Win32: Didn't take actually available memory into account. (Williams) + +White space after an automatically inserted comment leader was not removed +when 'ai' is not set and <CR> hit just after inserting it. (Webb) + +A few menus had duplicated accelerators. (Roemer) + +Spelling errors in documentation, quite a few "the the". (Roemer) + +Missing prototypes for Macintosh. (Kielhorn) + +Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't +executed in a disconnected process. + +When resizing the window, causing a line before the cursor to wrap or unwrap, +the cursor was displayed in the wrong position. + +There was quite a bit of dead code when compiling with minimal features. + +When doing a ":%s///" command that makes lines shorter, such that lines above +the final cursor position no longer wrap, the cursor position was not updated. + +get_id_list() could allocate an array one too small, when a "contains=" item +has a wildcard that matches a group name that is added just after it. E.g.: +"contains=a.*b,axb". Give an error message for it. + +When yanking a Visual area and using the middle mouse button -> crash. When +clipboard doesn't work, now make "* always use "". + +Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file". + +Using ":ts ident", then hit <CR>, with 'cmdheight' set to 2: command line was +not cleared, the tselect prompt was on the last but one line. + +mksession didn't restore the cursor column properly when it was after a tab. +Could not get all windows back when using a smaller terminal screen. Didn't +restore all windows when "winsize" was not in 'sessionoptions'. (Webb) + +Command line completion for ":buffer" depended on 'ignorecase' for Unix, but +not for DOS et al.. Now don't use 'ignorecase', but let it depend on whether +file names are case sensitive or not (like when expanding file names). + +Win32 GUI: (Negri) +- Redrawing the background caused flicker when resizing the window. Removed + _OnEraseBG(). Removed CS_HREDRAW and CS_VREDRAW flags from the + sndclass.style. +- Some parts of the window were drawn in grey, instead of using the color from + the user color scheme. +- Dropping a file on gvim didn't activate the window. +- When there is no menu ('guioptions' excludes 'm'), never use the ALT key for + it. + +GUI: When resizing the window, would make the window height a bit smaller. +Now round off to the nearest char cell size. (Negri) + +In Vi the ")" and "(" commands don't stop at a single space after a dot. +Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer) + +When saving a session without any buffers loaded, there would be a ":normal" +command without arguments in it. (Webb) + +Memory leaks fixed: (Madsen) +- eval.c: forgot to release func structure when func deleted +- ex_docmd.c: forgot to release string after "<sfile>" +- misc1.c: leak when completion pattern had no matches. +- os_unix.c: forgot to release regexp after file completions + +Could crash when using a buffer without a name. (Madsen) +Could crash when doing file name completion, because of backslash_halve(). +(Madsen) + +":@a" would do mappings on register a, which is not Vi compatible. (Roemer) + +":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar" +and displayed "/foo.*()". (Roemer) + +OS/2: get_cmd_output() was not included. Didn't check for $VIM/.vimrc file. + +Command line completion of options didn't work after "+=" and "-=". + +Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these +functions, which could fail if they are defined already. Use mch_memmove() to +redefine. + +Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but +":let a = expand("`xterm&`")" generated an error message, because the +redirection was put after the '&'. + +Win32 GUI: Dialog buttons could not be selected properly with cursor keys, +when the default is not the first button. (Webb) + +The "File has changed since editing started" (when regaining focus) could not +always be seen. (Webb) + +When starting with "ex filename", the file message was overwritten with +the "entering Ex mode" message. + +Output of ":tselect" listed name of file directly from the tags file. Now it +is corrected for the position of the tags file. + +When 'backspace' is 0, could backspace over autoindent. Now it is no longer +allowed (Vi compatible). + +In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting +Tabs, backspacing didn't work correctly for Tabs inserted at the start of the +line (unless 'sts' was set too). Also, when replacing the first non-blank +after which is a space, rounding the indent was done on the first non-blank +instead of on the character under the cursor. + +When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after +four spaces (they are replaced with a tab) couldn't backspace over the tab. + +In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent, +even when it was removed with CTRL-D. + +When repeating an insert command where a <BS>, <Left> or other key causes an +error, would flush buffers and remain in Insert mode. No longer flush +buffers, only beep and continue with the insert command. + +Dos and Win32 console: Setting t_me didn't work to get another color. Made +this works backwards compatible. + +For turkish (LANG = "tr") uppercase 'i' is not an 'I'. Use ASCII uppercase +translation in vim_strup() to avoid language problems. (Komur) + +Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefully +this avoids a hangup in select(0, ..) for Solaris 2.6. + +Vim would crash when using a script file with 'let &sp = "| tee"', starting +vim with "vim -u test", then doing ":set sp=". The P_WAS_SET flag wasn't set +for a string option, could cause problems with any string option. + +When using "cmd | vim -", stdin is not a terminal. This gave problems with +GPM (Linux console mouse) and when executing external commands. Now close +stdin and re-open it as a copy of stderr. + +Syntax highlighting: A "nextgroup" item was not properly stored in the state +list. This caused missing of next groups when not redrawing from start to +end, but starting halfway. + +Didn't check for valid values of 'ttymouse'. + +When executing an external command from the GUI, waiting for the child to +terminate might not work, causing a hang. (Parmelan) + +"make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim +files and the vimtutor. + +Win32: "expand("%:p:h")" with no buffer name removed the directory name. +"fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it. + +Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions': +highlighting was not correct. Now overlapping matches are handled correctly. + +Athena, Motif and GTK GUI: When started without focus, cursor was shown as if +with focus. + +Don't include 'shellpipe' when compiled without quickfix, it's not used. +Don't include 'dictionary' option when compiled without the +insert_expand +feature. +Only include the 'shelltype' option for the Amiga. + +When making a change to a line, with 'hlsearch' on, causing it to wrap, while +executing a register, the screen would not be updated correctly. This was a +generic problem in update_screenline() being called while must_redraw is +VALID. + +Using ":bdelete" in a BufUnload autocommand could cause a crash. The window +height was added to another window twice in close_window(). + +Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri) + +Some performance bottlenecks removed. Allocating memory was not efficient. +For Win32 checking for available memory was slow, don't check it every time +now. On NT obtaining the user name takes a long time, cache the result (for +all systems). + +fnamemodify() with an argument ":~:." or ":.:~" didn't work properly. + +When editing a new file and exiting, the marks for the buffer were not saved +in the viminfo file. + +":confirm only" didn't put up a dialog. + +These text objects didn't work when 'selection' was "exclusive": va( vi( va{ +vi{ va< vi< vi[ va[. + +The dialog for writing a readonly file didn't have a valid default. (Negri) + +The line number used for error messages when sourcing a file was reset when +modelines were inspected. It was wrong when executing a function. + +The file name and line number for an error message wasn't displayed when it +was the same as for the last error, even when this was long ago. Now reset +the name/lnum after a hit-enter prompt. + +In a session file, a "%" in a file name caused trouble, because fprintf() was +used to write it to the file. + +When skipping statements, a mark in an address wasn't skipped correctly: +"ka|if 0|'ad|else|echo|endif". (Roemer) + +":wall" could overwrite a not-edited file without asking. + +GUI: When $DISPLAY was not set or starting the GUI failed in another way, the +console mode then started with wrong colors and skipped initializations. Now +do an early check if the GUI can be started. Don't source the menu.vim or +gvimrc when it will not. Also do normal terminal initializations if the GUI +might not start. + +When using a BufEnter autocommand to position the cursor and scroll the +window, the cursor was always put at the last used line and halfway the window +anyhow. + +When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn't list +the matches. Also avoid that listing after a "longest" lists the wrong +matches when the first expansion changed the string in front of the cursor. + +When using ":insert", ":append" or ":change" inside a while loop, was not able +to break out of it with a CTRL-C. + +Win32: ":e ." took an awful long time before an error message when used in +"C:\". Was caused by adding another backslash and then trying to get the full +name for "C:\\". + +":winpos -10 100" was working like ":winpos -10 -10", because a pointer was +not advanced past the '-' sign. + +When obtaining the value of a hidden option, would give an error message. Now +just use a zero value. + +OS/2: Was using argv[0], even though it was not a useful name. It could be +just "vim", found in the search path. + +Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until +after a delay of 'updatetime'. Didn't check for the size-changed signal. + +'scrollbind' didn't work in Insert mode. +Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g., +when 'showcmd' was off). + +When compiled with minimal features but with GUI, switching on the mouse in an +xterm caused garbage, because the mouse codes were not recognized. Don't +enable the mouse when it can't be recognized. In the GUI it also didn't work, +the arguments to the mouse code were not interpreted. + +When 'showbreak' used, in Insert mode, when the cursor is just after the last +character in the line, which is also the in the rightmost column, the cursor +position would be like the 'showbreak' string is shown, but it wasn't. + +Autocommands could move the cursor in a new file, so that CTRL-W i didn't show +the right line. Same for when using a filemark to jump to another file. + +When redefining the argument list, the title used for other windows could be +showing the wrong info about the position in the argument list. Also update +this for a ":split" command without arguments. + +When editing file 97 of 13, ":Next" didn't work. Now it goes to the last +file in the argument list. + +Insert mode completion (for dictionaries or included files) could not be +interrupted by typing an <Esc>. Could get hit-enter prompt after line +completion, or whenever the informative message would get too long. + +When using the ":edit" command to re-edit the same file, an autocommand to +jump to the last cursor position caused the cursor to move. Now set the last +used cursor position to avoid this. + +When 'comments' has a part that starts with white space, formatting the +comment didn't work. + +At the ":tselect" prompt Normal mode mappings were used. That has been +disabled. + +When 'selection' is not "old", some commands still didn't allow the cursor +past the end-of-line in Visual mode. + +Athena: When a menu was deleted, it would appear again (but not functional) +when adding another menu. Now they don't reappear anymore (although they are +not really deleted either). + +Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri) + +"ze" didn't work when 'number' was on. (Davis) + +Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson) + +A few files were including proto.h a second time, after vim.h had already done +that, which could cause problems with the vim_realloc() macro. + +Win32 console: <M-x> or ALT-x was not recognized. Also keypad '+', '-' and +'*'. (Negri) +MS-DOS: <M-x> didn't work, produced a two-byte code. Now the alphabetic and +number keys work. (Negri) + +When finding a lot of matches for a tag completion, the check for avoiding +double matches could take a lot of time. Add a line_breakcheck() to be able +to interrupt this. (Deshpande) + +When the command line was getting longer than the screen, the more-prompt +would be given regularly, and the cursor position would be wrong. Now only +show the part of the command line that fits on the screen and force the cursor +to be positioned on the visible part. There can be text after the cursor +which isn't editable. + +At the more prompt and with the console dialog, a cursor key was interpreted +as <Esc> and OA. Now recognize special keys in get_keystroke(). Ignore mouse +and scrollbar events. + +When typing a BS after inserting a middle comment leader, typing the last char +of the end comment leader still changed it into the end comment leader. (Webb) + +When a file system is full, writing to a swap file failed. Now first try to +write one block to the file. Try next entry in 'dir' if it fails. + +When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the +display. + +Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was +translated to "}" before the shell got it. Now don't remove backslashes when +wildcards are going to be expanded. + +Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a +file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty" +still doesn't work though. + +"make test" didn't always work on DOS/Windows for test30, because it depended +on the external "echo" command. + +The link.sh script used "make" instead of $MAKE from the Makefile. Caused +problems for generating pathdef.c when "make" doesn't work properly. + +On versions that can do console and GUI: In the console a typed CSI code could +cause trouble. + +The patterns in expression evaluation didn't ignore the 'l' flag in +'cpoptions'. This broke the working of <CR> in the options window. + +When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still +highlighted red for trailing space. + +Win32 GUI: Dropping an encrypted file on a running gvim didn't work right. Vim +would loop while outputting "*" characters. vgetc() was called recursively, +thus it returns NUL. Added safe_vgetc(), which reads input directly from the +user in this situation. + +While reading text from stdin, only an empty screen was shown. Now show that +Vim is reading from stdin. + +The cursor shape wasn't set properly when returning to Insert mode, after +using a CTRL-O /asdf command which fails. It would be OK after a few seconds. +Now it's OK right away. + +The 'isfname' default for DOS/Windows didn't include the '@' character. File +names that contained "dir\@file" could not be edited. + +Win32 console: <C-S-Left> could cause a crash when compiled with Borland or +egcs. (Aaron) + +Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use +"#ifdef HAVE_DIRENT_H" instead. (Jones) + +When a matching tag is in the current file but has a search pattern that +doesn't match, the cursor would jump to the first line. + +Unix: Dependencies for pty.c were not included in Makefile. Dependency of +ctags/config.h was not included (only matters for parallel make). + +Removed a few Uninitialized Memory Reads (potential crashes). In do_call() +calling clear_var() when not evaluating. In win32_expandpath() and +dos_expandpath() calling backslash_halve() past the end of a file name. + +Removed memory leaks: Set_vim_var_string() never freed the value. The +next_list for a syntax keyword was never freed. + +On non-Unix systems, using a file name with wildcards without a match would +silently fail. E.g., ":e *.sh". Now give a "No match" error message. + +The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized +as Vim scripts. Renamed them to *.vim. + +[Note: some numbered patches are not relevant when upgrading from version 5.3, +they have been removed] + +Patch 5.4m.1 +Problem: When editing a file with a long name, would get the hit-enter + prompt, even though all settings are such that the name should be + truncated to avoid that. filemess() was printing the file name + without truncating it. +Solution: Truncate the message in filemess(). Use the same code as for + msg_trunc_attr(), which is moved to the new function + msg_may_trunc(). +Files: src/message.c, src/proto/message.pro, src/fileio.c + +Patch 5.4m.3 +Problem: The Motif libraries were not found by configure for Digital Unix. +Solution: Add "/usr/shlib" to the search path. (Andy Kahn) +Files: src/configure.in, src/configure + +Patch 5.4m.5 +Problem: Win32 GUI: When using the Save-As menu entry and selecting an + existing file in the file browser, would get a dialog to confirm + overwriting twice. (Ed Krall) +Solution: Removed the dialog from the file browser. It would be nicer to + set the "forceit" flag and skip Vim's ":confirm" dialog, but it + requires quite a few changes to do that. +Files: src/gui_w32.c + +Patch 5.4m.6 +Problem: Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -", + a message box would pop up with "-stdin-" (when exiting). (Michael + Schaap) +Solution: Don't switch off termcap mode for versions that are GUI-only. + They use another terminal to read from stdin. +Files: src/main.c, src/fileio.c + +Patch 5.4m.7 +Problem: Unix: running configure with --enable-gtk-check, + --enable-motif-check, --enable-athena-check or --enable-gtktest + had the reverse effect. (Thomas Koehler) +Solution: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE(). +Files: src/configure.in, src/configure + +Patch 5.4m.9 +Problem: Multi-byte: With wrapping lines, the cursor was sometimes 2 + characters to the left. Syntax highlighting was wrong when a + double-byte character was split for a wrapping line. When + 'showbreak' was on the splitting also didn't work. +Solution: Adjust getvcol() and win_line(). (Chong-Dae Park) +Files: src/charset.c, src/screen.c + +Patch 5.4m.11 +Problem: The ":call" command didn't check for illegal trailing characters. + (Stefan Roemer) +Solution: Add the check in do_call(). +Files: src/eval.c + +Patch 5.4m.13 +Problem: With the ":s" command: + 1. When performing a substitute command, the mouse would be + disabled and enabled for every substitution. + 2. The cursor position could be beyond the end of the line. + Calling line_breakcheck() could try to position the cursor, + which causes a crash in the Win32 GUI. + 3. When using ":s" in a ":g" command, the cursor was not put on + the first non-white in the line. + 4. There was a hit-enter prompt when confirming the substitution + and the replacement was a bit longer. +Solution: 1. Only disable/enable the mouse when asking for confirmation. + 2. Always put the cursor on the first character, it is going to be + moved to the first non-blank anyway. + Don't use the cursor position in gui_mch_draw_hollow_cursor(), + get the character from the screen buffer. + 3. Added global_need_beginline flag to call beginline() after ":g" + has finished all substitutions. + 4. Clear the need_wait_return flag after prompting the user. +Files: src/ex_cmds.c, src/gui_w32.c + +Patch 5.4m.14 +Problem: When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end + up with two swapfiles for "xxx". That is caused by the ":bdel" + command which is executed when unloading the option-window. + Also, there was no check if closing a buffer made the new one + invalid, this could cause a crash. +Solution: When closing a buffer causes the current buffer to be deleted, + use the new buffer to replace it. Also detect that the new buffer + has become invalid as a side effect of closing the current one. + Make autocommand that calls ":bdel" in optwin.vim nested, so that + the buffer loading it triggers also executes autocommands. + Also added a test for this in test13. +Files: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h + src/testdir/test13.in, src/testdir/test13.ok + +Patch 5.4m.15 +Problem: When using a BufEnter autocommand to reload the syntax file, + conversion to HTML caused a crash. (Sung-Hyun Nam) +Solution: When using ":syntax clear" the current stack of syntax items was + not cleared. This will cause memory to be used that has already + been freed. Added call to invalidate_current_state() in + syntax_clear(). +Files: src/syntax.c + +Patch 5.4m.17 +Problem: When omitting a ')' in an expression it would not be seen as a + failure. + When detecting an error inside (), there would be an error message + for a missing ')' too. + When using ":echo 1+|echo 2" there was no error message. (Roemer) + When using ":exe 1+" there was no error message. + When using ":return 1+" there was no error message. +Solution: Fix do_echo(), do_execute() and do_return() to give an error + message when eval1() returns FAIL. + Fix eval6() to handle trailing ')' correctly and return FAIL when + it's missing. +Files: src/eval.c + +Patch 5.4m.18 +Problem: When using input() from inside an expression entered with + "CTRL-R =" on the command line, there could be a crash. And the + resulting command line was wrong. +Solution: Added getcmdline_prompt(), which handles recursive use of + getcmdline() correctly. It also sets the command line prompt. + Removed cmdline_prompt(). Also use getcmdline_prompt() for + getting the crypt key in get_crypt_key(). +Files: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c + +Patch 5.4m.21 +Problem: When starting up, the screen structures were first allocated at + the minimal size, then initializations were done with Rows + possibly different from screen_Rows. Caused a crash in rare + situations (GTK with XIM and fontset). +Solution: Call screenalloc() in main() only after calling ui_get_winsize(). + Also avoids a potential delay because of calling screenclear() + while "starting" is non-zero. +Files: src/main.c + +Patch 5.4m.22 +Problem: In the GUI it was possible that the screen was resized and the + screen structures re-allocated while redrawing the screen. This + could cause a crash (hard to reproduce). The call sequence goes + through update_screen() .. syntax_start() .. ui_breakcheck() .. + gui_resize_window() .. screenalloc(). +Solution: Set updating_screen while redrawing. If the window is resized + remember the new size and handle it only after redrawing is + finished. + This also fixes that resizing the screen while still redrawing + (slow syntax highlighting) would not work properly. + Also disable display_hint, it was never used. +Files: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro + +Patch 5.4m.23 +Problem: When using expand("<cword>") when there was no word under the + cursor, would get an error message. Same for <cWORD> and <cfile>. +Solution: Don't give an error message, return an empty string. +Files: src/eval.c + +Patch 5.4m.24 +Problem: ":help \|" didn't find anything. It was translated to "/\\|". +Solution: Translate "\|" into "\\bar". First check the table for specific + translations before checking for "\x". +Files: src/ex_cmds.c + +Patch 5.4m.25 +Problem: Unix: When using command line completion on files that contain + ''', '"' or '|' the file name could not be used. + Adding this file name to the Buffers menu caused an error message. +Solution: Insert a backslash before these three characters. + Adjust Mungename() function to insert a backslash before '|'. +Files: src/ex_getln.c, runtime/menu.vim + +Patch 5.4m.26 +Problem: When using a mapping of two function keys, e.g., <F1><F1>, and + only the first char of the second key has been read, the mapping + would not be recognized. Noticed on some Unix systems with xterm. +Solution: Add 'K' flag to 'cpoptions' to wait for the whole key code, even + when halfway a mapping. +Files: src/option.h, src/term.c + +Patch 5.4m.27 +Problem: When making test33 without the lisp feature it hangs. Interrupting + the execution of the script then might cause a crash. +Solution: In inchar(), after closing a script, don't use buf[] anymore. + closescript() has freed typebuf[] and buf[] might be pointing + inside typebuf[]. + Avoid that test33 hangs when the lisp feature is missing. +Files: src/getchar.c src/testdir/test33.in + +"os2" was missing from the feature list. Useful for has("os2"). + +BeOS: +- Included patches from Richard Offer for BeOS R4.5. +- menu code didn't work right. Crashed in the Buffers menu. The window title + wasn't set. (Offer) + +Patch 5.4n.3 +Problem: C-indenting was wrong after " } else". The white space was not + skipped. Visible when 'cino' has "+10". +Solution: Skip white space before calling cin_iselse(). (Norbert Zeh) +Files: src/misc1.c + +Patch 5.4n.4 +Problem: When the 't' flag in 'cpoptions' is included, after a + ":nohlsearch" the search highlighting would not be enabled again + after a tag search. (Norbert Zeh) +Solution: When setting the new search pattern in jumpto_tag(), don't restore + no_hlsearch. +Files: src/tag.c + +Patch 5.4n.5 +Problem: When using ":normal" from a CursorHold autocommand Vim hangs. The + autocommand is executed down from vgetc(). Calling vgetc() + recursively to execute the command doesn't work then. +Solution: Forbid the use of ":normal" when vgetc_busy is set. Give an error + message when this happens. +Files: src/ex_docmd.c, runtime/doc/autocmd.txt + +Patch 5.4n.6 +Problem: "gv" could reselect a Visual that starts and/or ends past the end + of a line. (Robert Webb) +Solution: Check that the start and end of the Visual area are on a valid + character by calling adjust_cursor(). +Files: src/normal.c + +Patch 5.4n.8 +Problem: When a mark was on a non existing line (e.g., when the .viminfo + was edited), jumping to it caused ml_get errors. (Alexey + Marinichev). +Solution: Added check_cursor_lnum() in nv_gomark(). +Files: src/normal.c + +Patch 5.4n.9 +Problem: ":-2" moved the cursor to a negative line number. (Ralf Schandl) +Solution: Give an error message for a negative line number. +Files: src/ex_docmd.c + +Patch 5.4n.10 +Problem: Win32 GUI: At the hit-enter prompt, it was possible to scroll the + text. This erased the prompt and made Vim look like it is in + Normal mode, while it is actually still waiting for a <CR>. +Solution: Disallow scrolling at the hit-enter prompt for systems that use + on the fly scrolling. +Files: src/message.c + +Patch 5.4n.14 +Problem: Win32 GUI: When using ":winsize 80 46" and the height is more than + what fits on the screen, the window size was made smaller than + asked for (that's OK) and Vim crashed (that's not OK)> +Solution: Call check_winsize() from gui_set_winsize() to resize the windows. +Files: src/gui.c + +Patch 5.4n.16 +Problem: Win32 GUI: The <F10> key both selected the menu and was handled as + a key hit. +Solution: Apply 'winaltkeys' to <F10>, like it is used for Alt keys. +Files: src/gui_w32.c + +Patch 5.4n.17 +Problem: Local buffer variables were freed when the buffer is unloaded. + That's not logical, since options are not freed. (Ron Aaron) +Solution: Free local buffer variables only when deleting the buffer. +Files: src/buffer.c + +Patch 5.4n.19 +Problem: Doing ":e" (without argument) in an option-window causes trouble. + The mappings for <CR> and <Space> are not removed. When there is + another buffer loaded, the swap file for it gets mixed up. + (Steve Mueller) +Solution: Also remove the mappings at the BufUnload event, if they are still + present. + When re-editing the same file causes the current buffer to be + deleted, don't try editing it. + Also added a test for this situation. +Files: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in, + src/testdir/test13.ok + +Patch 5.4n.24 +Problem: BeOS: configure never enabled the GUI, because $with_x was "no". + Unix prototypes caused problems, because Display and Widget are + undefined. + Freeing fonts on exit caused a crash. +Solution: Only disable the GUI when $with_x is "no" and $BEOS is not "yes". + Add dummy defines for Display and Widget in proto.h. + Don't free the fonts in gui_exit() for BeOS. +Files: src/configure.in, src/configure, src/proto.h, src/gui.c. + + +The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild) + +Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined. +(Aaron) + +VMS: +- mch_setenv() had two arguments instead of three. +- The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc". + Removed the dot. +- call to RealWaitForChar() had one argument too many. (Campbell) +- WaitForChar() is static, removed the prototype from proto/os_vms.pro. +- Many file accesses failed, because Unix style file names were used. + Translate file names to VMS style by using vim_fopen(). +- Filtering didn't work, because the temporary file name was generated wrong. +- There was an extra newline every 9192 characters when writing a file. Work + around it by writing line by line. (Campbell) +- os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;". + Only mattered for generating prototypes. +- Added file name translation to many places. Made easy by defining macros + mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat(). +- Set default for 'tagbsearch' to off, because binary tag searching apparently + doesn't work for VMS. +- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell) + + +Patch 5.4o.2 +Problem: Crash when using "gf" on "file.c://comment here". (Scott Graham) +Solution: Fix wrong use of pointers in get_file_name_in_path(). +Files: src/window.c + +Patch 5.4o.3 +Problem: The horizontal scrollbar was not sized correctly when 'number' is + set and 'wrap' not set. + Athena: Horizontal scrollbar wasn't updated when the cursor was + positioned with a mouse click just after dragging. +Solution: Subtract 8 from the size when 'number' set and 'wrap' not set. + Reset gui.dragged_sb when a mouse click is received. +Files: src/gui.c + +Patch 5.4o.4 +Problem: When running in an xterm and $WINDOWID is set to an illegal value, + Vim would exit with "Vim: Got X error". +Solution: When using the display which was opened for the xterm clipboard, + check if x11_window is valid by trying to obtain the window title. + Also add a check in setup_xterm_clip(), for when using X calls to + get the pointer position in an xterm. +Files: src/os_unix.c + +Patch 5.4o.5 +Problem: Motif version with Lesstif: When removing the menubar and then + using a menu shortcut key, Vim would crash. (raf) +Solution: Disable the menu mnemonics when the menu bar is removed. +Files: src/gui_motif.c + +Patch 5.4o.9 +Problem: The DOS install.exe program used the "move" program. That doesn't + work on Windows NT, where "move" is internal to cmd.exe. +Solution: Don't use an external program for moving the executables. Use C + functions to copy the file and delete the original. +Files: src/dosinst.c + +Motif and Athena obtained the status area height differently from GTK. Moved +status_area_enabled from global.h to gui_x11.c and call +xim_get_status_area_height() to get the status area height. + +Patch 5.4p.1 +Problem: When using auto-select, and the "gv" command is used, would not + always obtain ownership of the selection. Caused by the Visual + area still being the same, but ownership taken away by another + program. +Solution: Reset the clipboard Visual mode to force updating the selection. +Files: src/normal.c + +Patch 5.4p.2 +Problem: Motif and Athena with XIM: Typing 3-byte + <multibyte><multibyte><space> doesn't work correctly with Ami XIM. +Solution: Avoid using key_sym XK_VoidSymbol. (Nam) +Files: src/multbyte.c, src/gui_x11.c + +Patch 5.4p.4 +Problem: Win32 GUI: The scrollbar values were reduced for a file with more + than 32767 lines. But this info was kept global for all + scrollbars, causing a mixup between the windows. + Using the down arrow of a scrollbar in a large file didn't work. + Because of round-off errors there is no scroll at all. +Solution: Give each scrollbar its own scroll_shift field. When the down + arrow is used, scroll several lines. +Files: src/gui.h, src/gui_w32.c + +Patch 5.4p.5 +Problem: When changing buffers in a BufDelete autocommand, there could be + ml_line errors and/or a crash. (Schandl) Was caused by deleting + the current buffer. +Solution: When the buffer to be deleted unexpectedly becomes the current + buffer, don't delete it. + Also added a check for this in test13. +Files: src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok + +Patch 5.4p.7 +Problem: Win32 GUI: When using 'mousemodel' set to "popup_setpos" and + clicking the right mouse button outside of the selected area, the + selected area wasn't removed until the popup menu has gone. + (Aaron) +Solution: Set the cursor and update the display before showing the popup + menu. +Files: src/normal.c + +Patch 5.4p.8 +Problem: The generated bugreport didn't contain information about + $VIMRUNTIME and whether runtime files actually exist. +Solution: Added a few checks to the bugreport script. +Files: runtime/bugreport.vim + +Patch 5.4p.9 +Problem: The windows install.exe created a wrong entry in the popup menu. + The "%1" was "". The full directory was included, even when the + executable had been moved elsewhere. (Ott) +Solution: Double the '%' to get one from printf. Only include the path to + gvim.exe when it wasn't moved and it's not in $PATH. +Files: src/dosinst.c + +Patch 5.4p.10 +Problem: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used + a short file name for a directory. +Solution: Change the "%1" to "%L" in the registry entry. +Files: src/dosinst.c + +Patch 5.4p.11 +Problem: Motif, Athena and GTK: When closing the GUI window when there is a + changed buffer, there was only an error message and Vim would not + exit. +Solution: Put up a dialog, like for ":confirm qa". Uses the code that was + already used for MS-Windows. +Files: src/gui.c, src/gui_w32.c + +Patch 5.4p.12 +Problem: Win32: Trying to expand a string that is longer than 256 + characters could cause a crash. (Steed) +Solution: For the buffer in win32_expandpath() don't use a fixed size array, + allocate it. +Files: src/os_win32.c + +MSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes for +fname_case() and mch_update_cursor() were missing. "fd" was unused in +mf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused in +mch_call_shell() for DJGPP version. + +============================================================================== +VERSION 5.5 *version-5.5* + +Version 5.5 is a bug-fix version of 5.4. + + +Changed *changed-5.5* +------- + +The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the +size of the executables. + +Moved the src/STYLE file to runtime/doc/develop.txt. Added the design goals +to it. + +'backspace' is now a string option. See patch 5.4.15. + + +Added *added-5.5* +----- + +Included Exuberant Ctags version 3.3. (Darren Hiebert) + +In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used +everywhere to do what CTRL-V used to do. + +Support for decompression of bzip2 files in vimrc_example.vim. + +When a patch is included, the patch number is entered in a table in version.c. +This allows skipping a patch without breaking a next one. + +Support for mouse scroll wheel in X11. See patch 5.5a.14. + +line2byte() can be used to get the size of the buffer. See patch 5.4.35. + +The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to +insert a register literally. See patch 5.4.48. + +Uninstall program for MS-Windows. To be able to remove the registry entries +for "Edit with Vim". It is registered to be run from the "Add/Remove +programs" application. See patch 5.4.x7. + + +Fixed *fixed-5.5* +----- + +When using vimrc_example.vim: An error message when the cursor is on a line +higher than the number of lines in the compressed file. Move the autocommand +for jumping to the last known cursor position to after the decompressing +autocommands. + +":mkexrc" and ":mksession" wrote the current value of 'textmode'. That may +mark a file as modified, which causes problems. This is a buffer-specific +setting, it should not affect all files. + +"vim --version" wrote two empty lines. + +Unix: The alarm signal could kill Vim. It is generated by the Perl alarm() +function. Ignore SIGALRM. + +Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script. + +BeOS: "tmo" must be bigtime_t, instead of double. (Seibert) + +Patch 5.4.1 +Problem: Test11 fails when $GZIP is set to "-v". (Matthew Jackson) +Solution: Set $GZIP to an empty string. +Files: src/testdir/test11.in + +Patch 5.4.2 +Problem: Typing <Esc> at the crypt key prompt caused a crash. (Kallingal) +Solution: Check for a NULL pointer returned from get_crypt_key(). +Files: src/fileio.c + +Patch 5.4.3 +Problem: Python: Trying to use the name of an unnamed buffer caused a + crash. (Daniel Burrows) +Solution: Check for b_fname being a NULL pointer. +Files: src/if_python.c + +Patch 5.4.4 +Problem: Win32: When compiled without toolbar, but the 'T' flag is in + 'guioptions', there would be an empty space for the toolbar. +Solution: Add two #ifdefs where checking for the 'T' flag. (Vince Negri) +Files: src/gui.c + +Patch 5.4.5 +Problem: Athena GUI: Using the Buffers.Refresh menu entry caused a crash. + Looks like any ":unmenu" command may cause trouble. +Solution: Disallow ":unmenu" in the Athena version. Disable the Buffers + menu, because the Refresh item would not work. +Files: src/menu.c, runtime/menu.vim + +Patch 5.4.6 +Problem: GTK GUI: Using ":gui" in the .gvimrc file caused an error. Only + happens when the GUI forks. +Solution: Don't fork in a recursive call of gui_start(). +Files: src/gui.c + +Patch 5.4.7 +Problem: Typing 'q' at the more prompt for the ATTENTION message causes the + file loading to be interrupted. (Will Day) +Solution: Reset got_int after showing the ATTENTION message. +Files: src/memline.c + +Patch 5.4.8 +Problem: Edit some file, ":he", ":opt": options from help window are shown, + but pressing space updates from the other window. (Phillipps) + Also: When there are changes in the option-window, ":q!" gives an + error message. +Solution: Before creating the option-window, go to a non-help window. + Use ":bdel!" to delete the buffer. +Files: runtime/optwin.vim + +Patch 5.4.9 + Just updates version.h. The real patch has been moved to 5.4.x1. + This patch is just to keep the version number correct. + +Patch 5.4.10 +Problem: GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits. It + should run in the terminal. +Solution: Use gtk_init_check() instead of gtk_init(). +Files: src/gui_gtk_x11.c + +Patch 5.4.11 +Problem: When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to + the next buffer for some commands, e.g., ":buffer". +Solution: When the BCO_NOHELP flag is given to buf_copy_options(), still + copy the options used by do_help() when neither the "from" or "to" + buffer is a help buffer. +Files: src/option.c + +Patch 5.4.12 +Problem: When using 'smartindent', there would be no extra indent if the + current line did not have any indent already. (Hanus Adler) +Solution: There was a wrongly placed "else", that previously matched with + the "if" that set trunc_line. Removed the "else" and added a + check for trunc_line to be false. +Files: src/misc1.c + +Patch 5.4.13 +Problem: New SGI C compilers need another option for optimisation. +Solution: Add a check in configure for "-OPT:Olimit". (Chin A Young) +Files: src/configure.in, src/configure + +Patch 5.4.14 +Problem: Motif GUI: When the popup menu is present, a tiny window appears + on the desktop for some users. +Solution: Set the menu widget ID for a popup menu to 0. (Thomas Koehler) +Files: src/gui_motif.c + +Patch 5.4.15 +Problem: Since 'backspace' set to 0 has been made Vi compatible, it is no + longer possible to only allow deleting autoindent. +Solution: Make 'backspace' a list of parts, to allow each kind of + backspacing separately. +Files: src/edit.c, src/option.c, src/option.h, src/proto/option.pro, + runtime/doc/option.txt, runtime/doc/insert.txt + +Patch 5.4.16 +Problem: Multibyte: Locale zh_TW.Big5 was not checked for in configure. +Solution: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang) +Files: src/configure.in, src/configure + +Patch 5.4.17 +Problem: GUI: When started from inside gvim with ":!gvim", Vim would not + start. ":!gvim -f" works fine. +Solution: After forking, wait a moment in the parent process, to give the + child a chance to set its process group. +Files: src/gui.c + +Patch 5.4.18 +Problem: Python: The clear_history() function also exists in a library. +Solution: Rename clear_history() to clear_hist(). +Files: src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro + +Patch 5.4.19 +Problem: In a terminal with 25 lines, there is a more prompt after the + ATTENTION message. When hitting 'q' here the dialog prompt + doesn't appear and file loading is interrupted. (Will Day) +Solution: Don't allow quitting the printing of a message for the dialog + prompt. Added the msg_noquit_more flag for this. +Files: src/message.c + +Patch 5.4.20 +Problem: GTK: When starting gvim, would send escape sequences to the + terminal to switch the cursor off and on. +Solution: Don't call msg_start() if the GUI is expected to start. +Files: src/main.c + +Patch 5.4.21 +Problem: Motif: Toplevel menu ordering was wrong when using tear-off items. +Solution: Don't add one to the index for a toplevel menu. +Files: src/gui_motif.c + +Patch 5.4.22 +Problem: In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't + update the column used for vertical movement. +Solution: Set curwin->w_set_curswant for those commands. +Files: src/edit.c + +Patch 5.4.23 +Problem: When a Visual selection is lost to another program, and then the + same text is Visually selected again, the clipboard ownership + wasn't regained. +Solution: Set clipboard.vmode to NUL to force regaining the clipboard. +Files: src/normal.c + +Patch 5.4.24 +Problem: Encryption: When using ":r file" while 'key' has already entered, + the 'key' option would be messed up. When writing the file it + would be encrypted with an unknown key and lost! (Brad Despres) +Solution: Don't free cryptkey when it is equal to the 'key' option. +Files: src/fileio.c + +Patch 5.4.25 +Problem: When 'cindent' is set, but 'autoindent' isn't, comments are not + properly indented when starting a new line. (Mitterand) +Solution: When there is a comment leader for the new line, but 'autoindent' + isn't set, do C-indenting. +Files: src/misc1.c + +Patch 5.4.26 +Problem: Multi-byte: a multi-byte character is never recognized in a file + name, causing a backslash before it to be removed on Windows. +Solution: Assume that a leading-byte character is a file name character in + vim_isfilec(). +Files: src/charset.c + +Patch 5.4.27 +Problem: Entries in the PopUp[nvic] menus were added for several modes, but + only deleted for the mode they were used for. This resulted in + the entry remaining in the PopUp menu. + When removing a PopUp[nvic] menu, the name had been truncated, + could result in greying-out the whole PopUp menu. +Solution: Remove entries for all modes from the PopUp[nvic] menus. Remove + the PopUp[nvic] menu entries first, before the name is changed. +Files: src/menu.c + +Patch 5.4.28 +Problem: When using a BufWritePre autocommand to change 'fileformat', the + new value would not be used for writing the file. +Solution: Check 'fileformat' after executing the autocommands instead of + before. +Files: src/fileio.c + +Patch 5.4.29 +Problem: Athena GUI: When removing the 'g' flag from 'guioptions', using a + menu can result in a crash. +Solution: Always grey-out menus for Athena, don't hide them. +Files: src/menu.c + +Patch 5.4.30 +Problem: BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim). The + first character typed after ":sh" goes to Vim, instead of the + started shell. +Solution: Don't suspend Vim, start a new shell. Kill the async read thread + when starting a new shell. It will be restarted later. (Will Day) +Files: src/os_unix.c, src/ui.c + +Patch 5.4.31 +Problem: GUI: When 'mousefocus' is set, moving the mouse over where a + window boundary was, causes a hit-enter prompt to be finished. + (Jeff Walker) +Solution: Don't use 'mousefocus' at the hit-enter prompt. Also ignore it + for the more prompt and a few other situations. When an operator + is pending, abort it first. +Files: src/gui.c + +Patch 5.4.32 +Problem: Unix: $LDFLAGS was not passed to configure. +Solution: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner) +Files: src/Makefile + +Patch 5.4.33 +Problem: Unix: After expanding an environment variable with the shell, the + next expansion would also use the shell, even though it is not + needed. +Solution: Reset "recursive" before returning from gen_expand_wildcards(). +Files: src/misc1.c + +Patch 5.4.34 (also see 5.4.x5) +Problem: When editing a file, and the file name is relative to a directory + above the current directory, the file name was made absolute. + (Gregory Margo) +Solution: Add an argument to shorten_fnames() which indicates if all file + names should be shortened, or only absolute names. In main() only + use shorten_fnames() to shorten absolute names. +Files: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro + +Patch 5.4.35 +Problem: There is no function to get the current file size. +Solution: Allow using line2byte() with the number of lines in the file plus + one. This returns the offset of the line past the end of the + file, which is the file size plus one. +Files: src/eval.c, runtime/doc/eval.txt + +Patch 5.4.36 +Problem: Comparing strings while ignoring case didn't work correctly for + some machines. (Mide Steed) +Solution: vim_stricmp() and vim_strnicmp() only returned 0 or 1. Changed + them to return -1 when the first argument is smaller. +Files: src/misc2.c + +Patch 5.4.37 (also see 5.4.40 and 5.4.43) +Problem: Long strings from the viminfo file are truncated. +Solution: When writing a long string to the viminfo file, first write a line + with the length, then the string itself in a second line. +Files: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c, + src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim + +Patch 5.4.38 +Problem: In the option-window, ":set go&" resulted in 'go' being handled + like a boolean option. + Mappings for <Space> and <CR> were overruled by the option-window. +Solution: When the value of an option isn't 0 or 1, don't handle it like a + boolean option. + Save and restore mappings for <Space> and <CR> when entering and + leaving the option-window. +Files: runtime/optwin.vim + +Patch 5.4.39 +Problem: When setting a hidden option, spaces before the equal sign were + not skipped and cause an error message. E.g., ":set csprg =cmd". +Solution: When skipping over a hidden option, check for a following "=val" + and skip it too. +Files: src/option.c + +Patch 5.4.40 (depends on 5.4.37) +Problem: Compiler error for "atol(p + 1)". (Axel Kielhorn) +Solution: Add a typecast: "atol((char *)p + 1)". +Files: src/ex_cmds.c + +Patch 5.4.41 +Problem: Some commands that were not included would give an error message, + even when after "if 0". +Solution: Don't give an error message for an unsupported command when not + executing the command. +Files: src/ex_docmd.c + +Patch 5.4.42 +Problem: ":w" would also cause a truncated message to appear in the message + history. +Solution: Don't put a kept message in the message history when it starts + with "<". +Files: src/message.c + +Patch 5.4.43 (depends on 5.4.37) +Problem: Mixing long lines with multiple lines in a register causes errors + when writing the viminfo file. (Robinson) +Solution: When reading the viminfo file to skip register contents, skip + lines that start with "<". +Files: src/ops.c + +Patch 5.4.44 +Problem: When 'whichwrap' includes '~', a "~" command that goes on to the + next line cannot be properly undone. (Zellner) +Solution: Save each line for undo in n_swapchar(). +Files: src/normal.c + +Patch 5.4.45 (also see 5.4.x8) +Problem: When expand("$ASDF") fails, there is an error message. +Solution: Remove the global expand_interactively. Pass a flag down to skip + the error message. + Also: expand("$ASDF") returns an empty string if $ASDF isn't set. + Previously it returned "$ASDF" when 'shell' is "sh". + Also: system() doesn't print an error when the command returns an + error code. +Files: many + +Patch 5.4.46 +Problem: Backspacing did not always use 'softtabstop' after hitting <CR>, + inserting a register, moving the cursor, etc. +Solution: Reset inserted_space much more often in edit(). +Files: src/edit.c + +Patch 5.4.47 +Problem: When executing BufWritePre or BufWritePost autocommands for a + hidden buffer, the cursor could be moved to a non-existing + position. (Vince Negri) +Solution: Save and restore the cursor and topline for the current window + when it is going to be used to execute autocommands for a hidden + buffer. Use an existing window for the buffer when it's not + hidden. +Files: src/fileio.c + +Patch 5.4.48 +Problem: A paste with the mouse in Insert mode was not repeated exactly the + same with ".". For example, when 'autoindent' is set and pasting + text with leading indent. (Perry) +Solution: Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert + mode, which insert the contents of a register literally. +Files: src/edit.c, src/normal.c, runtime/doc/insert.txt + +Patch 5.4.49 +Problem: When pasting text with [ <MiddleMouse>, the cursor could end up + after the last character of the line. +Solution: Correct the cursor position for the change in indent. +Files: src/ops.c + +Patch 5.4.x1 (note: Replaces patch 5.4.9) +Problem: Win32 GUI: menu hints were never used, because WANT_MENU is not + defined until vim.h is included. +Solution: Move the #ifdef WANT_MENU from where MENUHINTS is defined to where + it is used. +Files: src/gui_w32.c + +Patch 5.4.x2 +Problem: BeOS: When pasting text, one character was moved to the end. +Solution: Re-enable the BeOS code in fill_input_buf(), and fix timing out + with acquire_sem_etc(). (Will Day) +Files: src/os_beos.c, src/ui.c + +Patch 5.4.x3 +Problem: Win32 GUI: When dropping a directory on a running gvim it crashes. +Solution: Avoid using a NULL file name. Also display a message to indicate + that the current directory was changed. +Files: src/gui_w32.c + +Patch 5.4.x4 +Problem: Win32 GUI: Removing an item from the popup menu doesn't work. +Solution: Don't remove the item from the menubar, but from the parent popup + menu. +Files: src/gui_w32.c + +Patch 5.4.x5 (addition to 5.4.34) +Files: src/gui_w32.c + +Patch 5.4.x6 +Problem: Win32: Expanding (dir)name starting with a dot doesn't work. + (McCormack) Only when there is a path before it. +Solution: Fix the check, done before expansion, if the file name pattern + starts with a dot. +Files: src/os_win32.c + +Patch 5.4.x7 +Problem: Win32 GUI: Removing "Edit with Vim" from registry is difficult. +Solution: Add uninstall program to remove the registry keys. It is installed + in the "Add/Remove programs" list for ease of use. + Also: don't set $VIM when the executable is with the runtime files. + Also: Add a text file with a step-by-step description of how to + uninstall Vim for DOS and Windows. +Files: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt + +Patch 5.4.x8 (addition to 5.4.45) +Files: many + +Patch 5.4.x9 +Problem: Win32 GUI: After executing an external command, focus is not + always regained (when using focus-follows-mouse). +Solution: Add SetFocus() in mch_system(). (Mike Steed) +Files: src/os_win32.c + + +Patch 5.5a.1 +Problem: ":let @* = @:" did not work. The text was not put on the + I clipboard. (Fisher) +Solution: Own the clipboard and put the text on it. +Files: src/ops.c + +Patch 5.5a.2 +Problem: append() did not mark the buffer modified. Marks below the + new line were not adjusted. +Solution: Fix the f_append() function. +Files: src/eval.c + +Patch 5.5a.3 +Problem: Editing compressed ".gz" files doesn't work on non-Unix systems, + because there is no "mv" command. +Solution: Add the rename() function and use it instead of ":!mv". + Also: Disable the automatic jump to the last position, because it + changes the jumplist. +Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim + +Patch 5.5a.4 +Problem: When using whole-line completion in insert mode while the cursor + is in the indent, get "out of memory" error. (Stekrt) +Solution: Don't allocate a negative amount of memory in ins_complete(). +Files: src/edit.c + +Patch 5.5a.5 +Problem: Win32: The 'path' option can hold only up to 256 characters, + because _MAX_PATH is 256. (Robert Webb) +Solution: Use a fixed path length of 1024. +Files: src/os_win32.h + +Patch 5.5a.6 +Problem: Compiling with gcc on Win32, using the Unix Makefile, didn't work. +Solution: Add $(SUFFIX) to all places where an executable is used. Also + pass it to ctags. (Reynolds) +Files: src/Makefile + +Patch 5.5a.7 +Problem: When using "cat | vim -" in an xterm, the xterm version reply + would end up in the file. +Solution: Read the file from stdin before switching the terminal to RAW + mode. Should also avoid problems with programs that use a + specific terminal setting. + Also: when using the GUI, print "Reading from stdin..." in the GUI + window, to give a hint why it doesn't do anything. +Files: src/main.c, src/fileio.c + +Patch 5.5a.8 +Problem: On multi-threaded Solaris, suspending doesn't work. +Solution: Call pause() when the SIGCONT signal was not received after + sending the SIGTSTP signal. (Nagano) +Files: src/os_unix.c + +Patch 5.5a.9 +Problem: 'winaltkeys' could be set to an empty argument, which is illegal. +Solution: Give an error message when doing ":set winaltkeys=". +Files: src/option.c + +Patch 5.5a.10 +Problem: Win32 console: Using ALTGR on a German keyboard to produce "}" + doesn't work, because the 8th bit is set when ALT is pressed. +Solution: Don't set the 8th bit when ALT and CTRL are used. (Leipert) +Files: src/os_win32.c + +Patch 5.5a.11 +Problem: Tcl: Configure always uses tclsh8.0. + Also: Loading a library doesn't work. +Solution: Add "--with-tclsh" configure argument to allow specifying another + name for the tcl shell. + Call Tcl_Init() in tclinit() to make loading libraries work. + (Johannes Zellner) +Files: src/configure.in, src/configure, src/if_tcl.c + +Patch 5.5a.12 +Problem: The "user_commands" feature is called "user-commands". +Solution: Replace "user-commands" with "user_commands". (Kim Sung-bom) + Keep "user-commands" for the has() function, to remain backwards + compatible with 5.4. +Files: src/eval.c, src/version.c + +Patch 5.5a.13 +Problem: OS/2: When $HOME is not defined, "C:/" is used for the viminfo + file. That is very wrong when OS/2 is on another partition. +Solution: Use $VIM for the viminfo file when it is defined, like for MSDOS. + Also: Makefile.os2 didn't depend on os_unix.h. +Files: src/os_unix.h, src/Makefile.os2 + +Patch 5.5a.14 +Problem: Athena, Motif and GTK: The Mouse scroll wheel doesn't work. +Solution: Interpret a click of the wheel as a key press of the <MouseDown> + or <MouseUp> keys. Default behavior is to scroll three lines, or + a full page when Shift is used. +Files: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c, + src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c, + src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h, + runtime/doc/scroll.txt + +Patch 5.5a.15 +Problem: Using CTRL-A in Insert mode doesn't work correctly when the insert + started with the <Insert> key. (Andreas Rohrschneider) +Solution: Replace <Insert> with "i" before setting up the redo buffer. +Files: src/normal.c + +Patch 5.5a.16 +Problem: VMS: GUI does not compile and run. +Solution: Various fixes. (Zoltan Arpadffy) + Moved functions from os_unix.c to ui.c, so that VMS can use them + too: open_app_context(), x11_setup_atoms() and clip_x11* functions. + Made xterm_dpy global, it's now used by ui.c and os_unix.c. + Use gethostname() always, sys_hostname doesn't exist. +Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c, + src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro + +Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar() +to avoid symbol length limit of 31 characters. (Steve P. Wall) + +Patch 5.5b.1 +Problem: SASC complains about dead assignments and implicit type casts. +Solution: Removed the dead assignments. Added explicit type casts. +Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c, + src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c, + src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c, + src/screen.c + +Patch 5.5b.2 +Problem: When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in + another line truncates that line. (Devin Weaver) +Solution: When using a command that starts Insert mode from CTRL-O, reset + "restart_edit" first. This avoids that edit() is called with a + mix of starting a new edit command and restarting a previous one. +Files: src/normal.c + +============================================================================== +VERSION 5.6 *version-5.6* + +Version 5.6 is a bug-fix version of 5.5. + + +Changed *changed-5.6* +------- + +Small changes to OleVim files. (Christian Schaller) + +Inserted "/**/" between patch numbers in src/version.c. This allows for one +line of context, which some versions of patch need. + +Reordered the Syntax menu to avoid long submenus. Removed keyboard shortcuts +for alphabetical items to avoid a clash with fixed items. + + +Added *added-5.6* +----- + +Included Exuberant Ctags version 3.4. (Darren Hiebert) + +OpenWithVim in Python. (Christian Schaller) + +Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry. Avoids +the reported problems with the MS Office taskbar. Now it's a Shell Extension. +(Tianmiao Hu) + +New syntax files: +abel Abel (John Cook) +aml Arc Macro Language (Nikki Knuit) +apachestyle Apache-style config file (Christian Hammers) +cf Cold Fusion (Jeff Lanzarotta) +ctrlh files with CTRL-H sequences (Bram Moolenaar) +cupl CUPL (John Cook) +cuplsim CUPL simulation (John Cook) +erlang Erlang (Kresimir Marzic) +gedcom Gedcom (Paul Johnson) +icon Icon (Wendell Turner) +ist MakeIndex style (Peter Meszaros) +jsp Java Server Pages (Rafael Garcia-Suarez) +rcslog Rcslog (Joe Karthauser) +remind Remind (Davide Alberani) +sqr Structured Query Report Writer (Paul Moore) +tads TADS (Amir Karger) +texinfo Texinfo (Sandor Kopanyi) +xpm2 X Pixmap v2 (Steve Wall) + +The 'C' flag in 'cpoptions' can be used to switch off concatenation for +sourced lines. See patch 5.5.013 below. |line-continuation| + +"excludenl" argument for the ":syntax" command. See patch 5.5.032 below. +|:syn-excludenl| + +Implemented |z+| and |z^| commands. See patch 5.5.050 below. + +Vim logo in Corel Draw format. Can be scaled to any resolution. + + +Fixed *fixed-5.6* +----- + +Using this mapping in Select mode, terminated completion: +":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher) +Ignore K_SELECT in ins_compl_prep(). + +VMS (Zoltan Arpadffy, David Elins): +- ioctl() in pty.c caused trouble, #ifndef VMS added. +- Cut & paste mismatch corrected. +- Popup menu line crash corrected. (Patch 5.5.047) +- Motif directories during open and save as corrected. +- Handle full file names with version numbers. (Patch 5.5.046) +- Directory handling (CD command etc.) +- Corrected file name conversion VMS to Unix and v.v. +- Recovery was not working. +- Terminal and signal handling was outdated compared to os_unix.c. +- Improved os_vms.txt. + +Configure used fprintf() instead of printf() to check for __DATE__ and +__TIME__. (John Card II) + +BeOS: Adjust computing the char_height and char_ascent. Round them up +separately, avoids redrawing artifacts. (Mike Steed) + +Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and +findmatchlimit(). (Taro Muraoka) + +GTK GUI: +- With GTK 1.2.5 and later the scrollbars were not redrawn correctly. +- Adjusted the gtk_form_draw() function. +- SNiFF connection didn't work. +- 'mousefocus' was not working. (Dalecki) +- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@. + + +Patch 5.5.001 +Problem: Configure in the top directory did not pass on an argument with a + space correctly. For example "./configure --previs="/My home". + (Stephane Chazelas) +Solution: Use '"$@"' instead of '$*' to pass on the arguments. +Files: configure + +Patch 5.5.002 +Problem: Compilation error for using "fds[] & POLLIN". (Jeff Walker) +Solution: Use "fds[].revents & POLLIN". +Files: src/os_unix.c + +Patch 5.5.003 +Problem: The autoconf check for sizeof(int) is wrong on machines where + sizeof(size_t) != sizeof(int). +Solution: Use our own configure check. Also fixes the warning for + cross-compiling. +Files: src/configure.in, src/configure + +Patch 5.5.004 +Problem: On Unix it's not possible to interrupt ":sleep 100". +Solution: Switch terminal to cooked mode while asleep, to allow a SIGINT to + wake us up. But switch off echo, added TMODE_SLEEP. +Files: src/term.h, src/os_unix.c + +Patch 5.5.005 +Problem: When using <f-args> with a user command, an empty argument to the + command resulted in one empty string, while no string was + expected. +Solution: Catch an empty argument and pass no argument to the function. + (Paul Moore) +Files: src/ex_docmd.c + +Patch 5.5.006 +Problem: Python: When platform-dependent files are in another directory + than the platform-independent files it doesn't work. +Solution: Also check the executable directory, and add it to CFLAGS. (Tessa + Lau) +Files: src/configure.in, src/configure + +Patch 5.5.007 (extra) +Problem: Win32 OLE: Occasional crash when exiting while still being used + via OLE. +Solution: Move OleUninitialize() to before deleting the application object. + (Vince Negri) +Files: src/if_ole.cpp + +Patch 5.5.008 +Problem: 10000@@ takes a long time and cannot be interrupted. +Solution: Check for CTRL-C typed while in the loop to push the register. +Files: src/normal.c + +Patch 5.5.009 +Problem: Recent Sequent machines don't link with "-linet". (Kurtis Rader) +Solution: Remove configure check for Sequent. +Files: src/configure.in, src/configure + +Patch 5.5.010 +Problem: Ctags freed a memory block twice when exiting. When out of + memory, a misleading error message was given. +Solution: Update to ctags 3.3.2. Also fixes a few other problems. (Darren + Hiebert) +Files: src/ctags/* + +Patch 5.5.011 +Problem: After "CTRL-V s", the cursor jumps back to the start, while all + other operators leave the cursor on the last changed character. + (Xiangjiang Ma) +Solution: Position cursor on last changed character, if possible. +Files: src/ops.c + +Patch 5.5.012 +Problem: Using CTRL-] in Visual mode doesn't work when the text includes a + space (just where it's useful). (Stefan Bittner) +Solution: Don't escape special characters in a tag name with a backslash. +Files: src/normal.c + +Patch 5.5.013 +Problem: The ":append" and ":insert" commands allow using a leading + backslash in a line. The ":source" command concatenates those + lines. (Heinlein) +Solution: Add the 'C' flag in 'cpoptions' to switch off concatenation. +Files: src/ex_docmd.c, src/option.h, runtime/doc/options.txt, + runtime/filetype.vim, runtime/scripts.vim + +Patch 5.5.014 +Problem: When executing a register with ":@", the ":append" command would + get text lines with a ':' prepended. (Heinlein) +Solution: Remove the ':' characters. +Files: src/ex_docmd.c, src/ex_getln.c, src/globals.h + +Patch 5.5.015 +Problem: When using ":g/pat/p", it's hard to see where the output starts, + the ":g" command is overwritten. Vi keeps the ":g" command. +Solution: Keep the ":g" command, but allow overwriting it with the report + for the number of changes. +Files: src/ex_cmds.c + +Patch 5.5.016 (extra) +Problem: Win32: Using regedit to install Vim in the popup menu requires the + user to confirm this in a dialog. +Solution: Use "regedit /s" to avoid the dialog +Files: src/dosinst.c + +Patch 5.5.017 +Problem: If an error occurs when closing the current window, Vim could get + stuck in the error handling. +Solution: Don't set curwin to NULL when closing the current window. +Files: src/window.c + +Patch 5.5.018 +Problem: Absolute paths in shell scripts do not always work. +Solution: Use /usr/bin/env to find out the path. +Files: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl, + runtime/tools/shtags.pl + +Patch 5.5.019 +Problem: A function call in 'statusline' stops using ":q" twice from + exiting, when the last argument hasn't been edited. +Solution: Don't decrement quitmore when executing a function. (Madsen) +Files: src/ex_docmd.c + +Patch 5.5.020 +Problem: When the output of CTRL-D completion in the commandline goes all + the way to the last column, there is an empty line. +Solution: Don't add a newline when the cursor wrapped already. (Madsen) +Files: src/ex_getln.c + +Patch 5.5.021 +Problem: When checking if a file name in the tags file is relative, + environment variables were not expanded. +Solution: Expand the file name before checking if it is relative. (Madsen) +Files: src/tag.c + +Patch 5.5.022 +Problem: When setting or resetting 'paste' the ruler wasn't updated. +Solution: Update the status lines when 'ruler' changes because of 'paste'. +Files: src/option.c + +Patch 5.5.023 +Problem: When editing a new file and autocommands change the cursor + position, the cursor was moved back to the first non-white, unless + 'startofline' was reset. +Solution: Keep the new column, just like the line number. +Files: src/ex_cmds.c + +Patch 5.5.024 (extra) +Problem: Win32 GUI: When using confirm() to put up a dialog without a + default button, the dialog would not have keyboard focus. + (Krishna) +Solution: Always set focus to the dialog window. Only set focus to a button + when a default one is specified. +Files: src/gui_w32.c + +Patch 5.5.025 +Problem: When using "keepend" in a syntax region, a contained match that + includes the end-of-line could still force that region to + continue, if there is another contained match in between. +Solution: Check the keepend_level in check_state_ends(). +Files: src/syntax.c + +Patch 5.5.026 +Problem: When starting Vim in a white-on-black xterm, with 'bg' set to + "dark", and then starting the GUI with ":gui", setting 'bg' to + "light" in the gvimrc, the highlighting isn't set. (Tsjokwing) +Solution: Set the highlighting when 'bg' is changed in the gvimrc, even + though full_screen isn't set. +Files: src/option.c + +Patch 5.5.027 +Problem: Unix: os_unix.c doesn't compile when XTERM_CLIP is used but + WANT_TITLE isn't. (Barnum) +Solution: Move a few functions that are used by the X11 title and clipboard + and put another "#if" around it. +Files: src/os_unix.c + +Patch 5.5.028 (extra) +Problem: Win32 GUI: When a file is dropped on Win32 gvim while at the ":" + prompt, the file is edited but the command line is actually still + there, the cursor goes back to command line on the next command. + (Krishna) +Solution: When dropping a file or directory on gvim while at the ":" prompt, + insert the name of the file/directory. Allows using the + file/directory name for any Ex command. +Files: src/gui_w32.c + +Patch 5.5.029 +Problem: "das" at the end of the file didn't delete the last character of + the sentence. +Solution: When there is no character after the sentence, make the operation + inclusive in current_sent(). +Files: src/search.c + +Patch 5.5.030 +Problem: Unix: in os_unix.c, "term_str" is used, which is also defined in + vim.h as a macro. (wuxin) +Solution: Renamed "term_str" to "buf" in do_xterm_trace(). +Files: src/os_unix.c + +Patch 5.5.031 (extra) +Problem: Win32 GUI: When exiting Windows, gvim will leave swap files behind + and will be killed ungracefully. (Krishna) +Solution: Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to + exit gracefully. Allow the user to cancel the shutdown if there + is a changed buffer. +Files: src/gui_w32.c + +Patch 5.5.032 +Problem: Patch 5.5.025 wasn't right. And C highlighting was still not + working correctly for a #define. +Solution: Added "excludenl" argument to ":syntax", to be able not to extend + a containing item when there is a match with the end-of-line. +Files: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim + +Patch 5.5.033 +Problem: When reading from stdin, a long line in viminfo would mess up the + file message. readfile() uses IObuff for keep_msg, which could be + overwritten by anyone. +Solution: Copy the message from IObuff to msg_buf and set keep_msg to that. + Also change vim_fgets() to not use IObuff any longer. +Files: src/fileio.c + +Patch 5.5.034 +Problem: "gvim -rv" caused a crash. Using 't_Co' before it's set. +Solution: Don't try to initialize the highlighting before it has been + initialized from main(). +Files: src/syntax.c + +Patch 5.5.035 +Problem: GTK with XIM: Resizing with status area was messy, and + ":set guioptions+=b" didn't work. +Solution: Make status area a separate widget, but not a separate window. + (Chi-Deok Hwang) +Files: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c + +Patch 5.5.036 +Problem: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to + uncompress a file did not do detection for 'fileformat'. This is + because the filtering is done with 'binary' set. +Solution: Split the filtering into separate write, filter and read commands. +Files: runtime/vimrc_example.vim + +Patch 5.5.037 +Problem: The "U" command didn't mark the buffer as changed. (McCormack) +Solution: Set the 'modified' flag when using "U". +Files: src/undo.c + +Patch 5.5.038 +Problem: When typing a long ":" command, so that the screen scrolls up, + causes the hit-enter prompt, even though the user just typed + return to execute the command. +Solution: Reset need_wait_return if (part of) the command was typed in + getcmdline(). +Files: src/ex_getln.c + +Patch 5.5.039 +Problem: When using a custom status line, "%a" (file # of #) reports the + index of the current window for all windows. +Solution: Pass a window pointer to append_arg_number(), and pass the window + being updated from build_stl_str_hl(). (Stephen P. Wall) +Files: src/buffer.c, src/screen.c, src/proto/buffer.pro + +Patch 5.5.040 +Problem: Multi-byte: When there is some error in xim_real_init(), it can + close XIM and return. After this there can be a segv. +Solution: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try + to find more matches for supported styles. (Sung-Hyun Nam) +Files: src/multbyte.c + +Patch 5.5.041 +Problem: X11 GUI: CTRL-_ requires the SHIFT key only on some machines. +Solution: Translate CTRL-- to CTRL-_. (Robert Webb) +Files: src/gui_x11.c + +Patch 5.5.042 +Problem: X11 GUI: keys with ALT were assumed to be used for the menu, even + when the menu has been disabled by removing 'm' from 'guioptions'. +Solution: Ignore keys with ALT only when gui.menu_is_active is set. (Raf) +Files: src/gui_x11.c + +Patch 5.5.043 +Problem: GTK: Handling of fontset fonts was not right when 'guifontset' + contains exactly 14 times '-'. +Solution: Avoid setting fonts when working with a fontset. (Sung-Hyun Nam) +Files: src/gui_gtk_x11.c + +Patch 5.5.044 +Problem: pltags.pl contains an absolute path "/usr/local/bin/perl". That + might not work everywhere. +Solution: Use "/usr/bin/env perl" instead. +Files: runtime/tools/pltags.pl + +Patch 5.5.045 +Problem: Using "this_session" variable does not work, requires preceding it + with "v:". Default filename for ":mksession" isn't mentioned + in the docs. (Fisher) +Solution: Support using "this_session" to be backwards compatible. +Files: src/eval.c, runtime/doc/options.txt + +Patch 5.5.046 (extra) +Problem: VMS: problems with path and filename. +Solution: Truncate file name at last ';', etc. (Zoltan Arpadffy) +Files: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c, + src/proto/os_vms.pro + +Patch 5.5.047 +Problem: VMS: Crash when using the popup menu +Solution: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy) +Files: src/structs.h, src/menu.c + +Patch 5.5.048 +Problem: HP-UX 11: Compiling doesn't work, because both string.h and + strings.h are included. (Squassabia) +Solution: The configure test for including both string.h and strings.h + must include <Xm/Xm.h> first, because it causes problems. +Files: src/configure.in, src/configure, src/config.h.in + +Patch 5.5.049 +Problem: Unix: When installing Vim, the protection bits of files might be + influenced by the umask. +Solution: Add $(FILEMOD) to Makefile. (Shetye) +Files: src/Makefile + +Patch 5.5.050 +Problem: "z+" and "z^" commands are missing. +Solution: Implemented "z+" and "z^". +Files: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt + +Patch 5.5.051 +Problem: Several Unix systems have a problem with the optimization limits + check in configure. +Solution: Removed the configure check, let the user add it manually in + Makefile or the environment. +Files: src/configure.in, src/configure, src/Makefile + +Patch 5.5.052 +Problem: Crash when using a cursor key at the ATTENTION prompt. (Alberani) +Solution: Ignore special keys at the console dialog. Also ignore characters + > 255 for other uses of tolower() and toupper(). +Files: src/menu.c, src/message.c, src/misc2.c + +Patch 5.5.053 +Problem: Indenting is wrong after a function when 'cino' has "fs". Another + problem when 'cino' has "{s". +Solution: Put line after closing "}" of a function at the left margin. + Apply ind_open_extra in the right way after a '{'. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 5.5.054 +Problem: Unix: ":e #" doesn't work if the alternate file name contains a + space or backslash. (Hudacek) +Solution: When replacing "#", "%" or other items that stand for a file name, + prepend a backslash before special characters. +Files: src/ex_docmd.c + +Patch 5.5.055 +Problem: Using "<C-V>$r-" in blockwise Visual mode replaces one character + beyond the end of the line. (Zivkov) +Solution: Only replace existing characters. +Files: src/ops.c + +Patch 5.5.056 +Problem: After "z20<CR>" messages were printed at the old command line + position once. (Veselinovic) +Solution: Set msg_row and msg_col when changing cmdline_row in + win_setheight(). +Files: src/window.c + +Patch 5.5.057 +Problem: After "S<Esc>" it should be possible to restore the line with "U". + (Veselinovic) +Solution: Don't call u_clearline() in op_delete() when changing only one + line. +Files: src/ops.c + +Patch 5.5.058 +Problem: Using a long search pattern and then "n" causes the hit-enter + prompt. (Krishna) +Solution: Truncate the echoed pattern, like other messages. Moved code for + truncating from msg_attr() to msg_strtrunc(). +Files: src/message.c, src/proto/message.pro, src/search.c + +Patch 5.5.059 +Problem: GTK GUI: When $term is invalid, using "gvim" gives an error + message, even though $term isn't really used. (Robbins) +Solution: When the GUI is about to start, skip the error messages for a + wrong $term. +Files: src/term.c + +Patch 5.5.060 (extra) +Problem: Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w" + causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf) +Solution: The code to work around a LFN bug in Windows 95 doesn't handle a + non-existing target name correctly. When renaming fails, make + sure the file has its original name. Also do this for the Win32 + version, although it's unlikely that it runs into this problem. +Files: src/os_msdos.c, src/os_win32.c + +Patch 5.5.061 +Problem: When using "\:" in a modeline, the backslash is included in the + option value. (Mohsin) +Solution: Remove one backslash before the ':' in a modeline. +Files: src/buffer.c, runtime/doc/options.txt + +Patch 5.5.062 (extra) +Problem: Win32 console: Temp files are created in the root of the current + drive, which may be read-only. (Peterson) +Solution: Use the same mechanism of the GUI version: Use $TMP, $TEMP or the + current directory. Cleaned up vim_tempname() a bit. +Files: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt + +Patch 5.5.063 +Problem: When using whole-line completion in Insert mode, 'cindent' is + applied, even after changing the indent of the line. +Solution: Don't reindent the completed line after inserting/removing indent. + (Robert Webb) +Files: src/edit.c + +Patch 5.5.064 +Problem: has("sniff") doesn't work correctly. +Solution: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer) +Files: src/eval.c + +Patch 5.5.065 +Problem: When dropping a file on Vim, the 'shellslash' option is not + effective. (Krishna) +Solution: Fix the slashes in the dropped file names according to + 'shellslash'. +Files: src/ex_docmd.c, runtime/doc/options.txt + +Patch 5.5.066 +Problem: For systems with backslash in file name: Setting a file name + option to a value starting with "\\machine" removed a backslash. +Solution: Keep the double backslash for "\\machine", but do change + "\\\\machine" to "\\machine" for backwards compatibility. +Files: src/option.c, runtime/doc/options.txt + +Patch 5.5.067 +Problem: With 'hlsearch' set, the pattern "\>" doesn't highlight the first + match in a line. (Benji Fisher) +Solution: Fix highlighting an empty match. Also highlight the first + character in an empty line for "$". +Files: src/screen.c + +Patch 5.5.068 +Problem: Crash when a ":while" is used with an argument that has an error. + (Sylvain Viart) +Solution: Was using an uninitialized index in the cs_line[] array. The + crash only happened when the index was far off. Made sure the + uninitialized index isn't used. +Files: src/ex_docmd.c + +Patch 5.5.069 +Problem: Shifting lines in blockwise Visual mode didn't set the 'modified' + flag. +Solution: Do set the 'modified' flag. +Files: src/ops.c + +Patch 5.5.070 +Problem: When editing a new file, creating that file outside of Vim, then + editing it again, ":w" still warns for overwriting an existing + file. (Nam) +Solution: The BF_NEW flag in the "b_flags" field wasn't cleared properly. +Files: src/buffer.c, src/fileio.c + +Patch 5.5.071 +Problem: Using a matchgroup in a ":syn region", which is the same syntax + group as the region, didn't stop a contained item from matching in + the start pattern. +Solution: Also push an item on the stack when the syntax ID of the + matchgroup is the same as the syntax ID of the region. +Files: src/syntax.c + +Patch 5.5.072 (extra) +Problem: Dos 32 bit: When setting 'columns' to a too large value, Vim may + crash, and the DOS console too. +Solution: Check that the value of 'columns' isn't larger than the number of + columns that the BIOS reports. +Files: src/os_msdos.c, src/proto/os_msdos.pro, src/option.c + +Patch 5.5.073 (extra) +Problem: Win 32 GUI: The Find and Find/Replace dialogs didn't show the + "match case" checkbox. The Find/Replace dialog didn't handle the + "match whole word" checkbox. +Solution: Support the "match case" and "match whole word" checkboxes. +Files: src/gui_w32.c + +Patch 5.6a.001 +Problem: Using <C-End> with a count doesn't work like it does with "G". + (Benji Fisher) +Solution: Accept a count for <C-End> and <C-Home>. +Files: src/normal.c + +Patch 5.6a.002 +Problem: The script for conversion to HTML was an older version. +Solution: Add support for running 2html.vim on a color terminal. +Files: runtime/syntax/2html.vim + +Patch 5.6a.003 +Problem: Defining a function inside a function didn't give an error + message. A missing ":endfunction" doesn't give an error message. +Solution: Allow defining a function inside a function. +Files: src/eval.c, runtime/doc/eval.txt + +Patch 5.6a.004 +Problem: A missing ":endwhile" or ":endif" doesn't give an error message. + (Johannes Zellner) +Solution: Check for missing ":endwhile" and ":endif" in sourced files. + Add missing ":endif" in file selection macros. +Files: src/ex_docmd.c, runtime/macros/file_select.vim + +Patch 5.6a.005 +Problem: 'hlsearch' was not listed alphabetically. The value of 'toolbar' + was changed when 'compatible' is set. +Solution: Moved entry of 'hlsearch' in options[] table down. + Don't reset 'toolbar' option to the default value when + 'compatible' is set. +Files: src/option.c + +Patch 5.6a.006 +Problem: Using a backwards range inside ":if 0" gave an error message. +Solution: Don't complain about a range when it is not going to be used. + (Stefan Roemer) +Files: src/ex_docmd.c + +Patch 5.6a.007 +Problem: ":let" didn't show internal Vim variables. (Ron Aaron) +Solution: Do show ":v" variables for ":let" and ":let v:name". +Files: src/eval.c + +Patch 5.6a.008 +Problem: Selecting a syntax from the Syntax menu gives an error message. +Solution: Replace "else if" in SetSyn() with "elseif". (Ronald Schild) +Files: runtime/menu.vim + +Patch 5.6a.009 +Problem: When compiling with +extra_search but without +syntax, there is a + compilation error in screen.c. (Axel Kielhorn) +Solution: Adjust the #ifdef for declaring and initializing "line" in + win_line(). Also solve compilation problem when +statusline is + used without +eval. Another one when +cmdline_compl is used + without +eval. +Files: src/screen.c, src/misc2.c + +Patch 5.6a.010 +Problem: In a function, ":startinsert!" does not append to the end of the + line if a ":normal" command was used to move the cursor. (Fisher) +Solution: Reset "w_set_curswant" to avoid that w_curswant is changed again. +Files: src/ex_docmd.c + +Patch 5.6a.011 (depends on 5.6a.004) +Problem: A missing ":endif" or ":endwhile" in a function doesn't give an + error message. +Solution: Give that error message. +Files: src/ex_docmd.c + +Patch 5.6a.012 (depends on 5.6a.008) +Problem: Some Syntax menu entries caused a hit-enter prompt. +Solution: Call a function to make the command shorter. Also rename a few + functions to avoid name clashes. +Files: runtime/menu.vim + +Patch 5.6a.013 +Problem: Command line completion works different when another completion + was done earlier. (Johannes Zellner) +Solution: Reset wim_index when starting a new completion. +Files: src/ex_getln.c + +Patch 5.6a.014 +Problem: Various warning messages when compiling and running lint with + different combinations of features. +Solution: Fix the warning messages. +Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c, + src/option.c, src/screen.c, src/search.c, src/syntax.c, + src/feature.h, src/globals.h + +Patch 5.6a.015 +Problem: The vimtutor command doesn't always know the value of $VIMRUNTIME. +Solution: Let Vim expand $VIMRUNTIME, instead of the shell. +Files: src/vimtutor + +Patch 5.6a.016 (extra) +Problem: Mac: Window size is restricted when starting. Cannot drag the + window all over the desktop. +Solution: Get real screen size instead of assuming 640x400. Do not use a + fixed number for the drag limits. (Axel Kielhorn) +Files: src/gui_mac.c + +Patch 5.6a.017 +Problem: The "Paste" entry in popup menu for Visual, Insert and Cmdline + mode is in the wrong position. (Stol) +Solution: Add priority numbers for all Paste menu entries. +Files: runtime/menu.vim + +Patch 5.6a.018 +Problem: GTK GUI: submenu priority doesn't work. + Help dialog could be destroyed too soon. + When closing a dialog window (e.g. the "ATTENTION" one), Vim would + just hang. + When GTK theme is changed, Vim doesn't adjust to the new colors. + Argument for ":promptfind" isn't used. +Solution: Fixed the mentioned problems. + Made the dialogs look&feel nicer. + Moved functions to avoid the need for a forward declaration. + Fixed reentrancy of the file browser dialog. + Added drag&drop support for GNOME. + Init the text for the Find/replace dialog from the last used + search string. Set "match whole word" toggle button correctly. + Made repeat rate for drag outside of window depend on the + distance from the window. (Marcin Dalecki) + Made the drag in Visual mode actually work. + Removed recursiveness protection from gui_mch_get_rgb(), it might + cause more trouble than it solves. +Files: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c, + src/proto/ui.pro, src/misc2.c + +Patch 5.6a.019 +Problem: When trying to recover through NFS, which uses a large block size, + Vim might think the swap file is empty, because mf_blocknr_max is + zero. (Scott McDermott) +Solution: When computing the number of blocks of the file in mf_open(), + round up instead of down. +Files: src/memfile.c + +Patch 5.6a.020 +Problem: GUI GTK: Could not set display for gvim. +Solution: Add "-display" and "--display" arguments. (Marcin Dalecki) +Files: src/gui_gtk_x11.c + +Patch 5.6a.021 +Problem: Recovering still may not work when the block size of the device + where the swap file is located is larger than 4096. +Solution: Read block 0 with the minimal block size. +Files: src/memline.c, src/memfile.c, src/vim.h + +Patch 5.6a.022 (extra) +Problem: Win32 GUI: When an error in the vimrc causes a dialog to pop up + (e.g., for an existing swap file), Vim crashes. (David Elins) +Solution: Before showing a dialog, open the main window. +Files: src/gui_w32.c + +Patch 5.6a.023 +Problem: Using expand("%:gs??/?") causes a crash. (Ron Aaron) +Solution: Check for running into the end of the string in do_string_sub(). +Files: src/eval.c + +Patch 5.6a.024 +Problem: Using an autocommand to delete a buffer when leaving it can cause + a crash when jumping to a tag. (Franz Gorkotte) +Solution: In do_tag(), store tagstacklen before jumping to another buffer. + Check tagstackidx after jumping to another buffer. + Add extra check in win_split() if tagname isn't NULL. +Files: src/tag.c, src/window.c + +Patch 5.6a.025 (extra) +Problem: Win32 GUI: The tables for toupper() and tolower() are initialized + too late. (Mike Steed) +Solution: Move the initialization to win32_init() and call it from main(). +Files: src/main.c, src/os_w32.c, src/proto/os_w32.pro + +Patch 5.6a.026 +Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer) +Solution: Skip a second wait() call if waitpid() already detected that the + child has exited. +Files: src/os_unix.c + +Patch 5.6a.027 (extra) +Problem: Win32 GUI: The "Edit with Vim" popup menu entry causes problems + for the Office toolbar. +Solution: Use a shell extension dll. (Tianmiao Hu) + Added it to the install and uninstal programs, replaces the old + "Edit with Vim" menu registry entries. +Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt + +Patch 5.6a.028 (extra) +Problem: Win32 GUI: Dialogs and tear-off menus can't handle multi-byte + characters. +Solution: Adjust nCopyAnsiToWideChar() to handle multi-byte characters + correctly. +Files: src/gui_w32.c + +============================================================================== +VERSION 5.7 *version-5.7* + +Version 5.7 is a bug-fix version of 5.6. + +Changed *changed-5.7* +------- + +Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a +wrong file type. Also renamed src/INSTALL.amiga to INSTALL_ami.txt. + + +Added *added-5.7* +----- + +New syntax files: +stp Stored Procedures (Jeff Lanzarotta) +snnsnet, snnspat, snnsres SNNS (Davide Alberani) +mel MEL (Robert Minsk) +ruby Ruby (Mirko Nasato) +tli TealInfo (Kurt W. Andrews) +ora Oracle config file (Sandor Kopanyi) +abaqus Abaqus (Carl Osterwisch) +jproperties Java Properties (Simon Baldwin) +apache Apache config (Allan Kelly) +csp CSP (Jan Bredereke) +samba Samba config (Rafael Garcia-Suarez) +kscript KDE script (Thomas Capricelli) +hb Hyper Builder (Alejandro Forero Cuervo) +fortran Fortran (rewritten) (Ajit J. Thakkar) +sml SML (Fabrizio Zeno Cornelli) +cvs CVS commit (Matt Dunford) +aspperl ASP Perl (Aaron Hope) +bc BC calculator (Vladimir Scholtz) +latte Latte (Nick Moffitt) +wml WML (Gerfried Fuchs) + +Included Exuberant ctags 3.5.1. (Darren Hiebert) + +"display" and "fold" arguments for syntax items. For future extension, they +are ignored now. + +strftime() function for the Macintosh. + +macros/explorer.vim: A file browser script (M A Aziz Ahmed) + + +Fixed *fixed-5.7* +----- + +The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0. The +executable is smaller. + +When a "make test" failed, the output file was lost. Rename it to +test99.failed to be able to see what went wrong. + +After sourcing bugreport.vim, it's not clear that bugreport.txt has been +written in the current directory. Edit bugreport.txt to avoid that. + +Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka) + +Win32 console: Mouse drags were passed on even when the mouse didn't move. + +Perl interface: In Buffers(), type of argument to SvPV() was int, should be +STRLEN. (Tony Leneis) + +Problem with prototype for index() on AIX 4.3.0. Added check for _AIX43 in +os_unix.h. (Jake Hamby) + +Mappings in mswin.vim could break when some commands are mapped. Add "nore" +to most mappings to avoid re-mapping. + +modify_fname() made a copy of a file name for ":p" when it already was a full +path name, which is a bit slow. + +Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags, +to avoid depending on $PATH. Fixed "make clean". + +Many fixes to Macintosh specific parts: (mostly by Dany StAmant) +- Only one Help menu. +- No more crash when removing a menu item. +- Support as External Editor for Codewarrior (still some little glitches). +- Popup menu support. +- Fixed crash when pasting after application switch. +- Color from rgb.txt properly displayed. +- 'isprint' default includes all chars above '~'. (Axel Kielhorn) +- mac_expandpath() was leaking memory. +- Add digraphs table. (Axel Kielhorn) +- Multi-byte support: (Kenichi Asai) + Switch keyscript when going in/out of Insert mode. + Draw multi-byte character correctly. + Don't use mblen() but highest bit of char to detect multi-byte char. + Display value of multi-byte in statusline (also for other systems). +- mouse button was not initialized properly to MOUSE_LEFT when + USE_CTRLCLICKMENU not defined. +- With Japanese SJIS characters: Make "w", "b", and "e" work + properly. (Kenichi Asai) +- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx. + +Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below) +- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the + tests. +- Various fixes. +- Set 'undolevels' to 1000 by default. +- Made mch_settitle() equivalent to the one in os_unix.c. + +RiscOS: A few prototypes for os_riscos.c were outdated. Generate prototypes +automatically. + + +Previously released patches: + +Patch 5.6.001 +Problem: When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which + reduces the indent doesn't delete the "#" or "}". (Lorton) +Solution: Adjust ai_col in ins_try_si(). +Files: src/edit.c + +Patch 5.6.002 +Problem: When using the vim.vim syntax file, a comment with all uppercase + characters causes a hang. +Solution: Adjust pattern for vimCommentTitle (Charles Campbell) +Files: runtime/syntax/vim.vim + +Patch 5.6.003 +Problem: GTK GUI: Loading a user defined toolbar bitmap gives a warning + about the colormap. Probably because the window has not been + opened yet. +Solution: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file. + (Keith Radebaugh) +Files: src/gui_gtk.c + +Patch 5.6.004 (extra) +Problem: Win32 GUI with IME: When setting 'guifont' to "*", the font + requester appears twice. +Solution: In gui_mch_init_font() don't call get_logfont() but copy + norm_logfont from fh. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 5.6.005 +Problem: When 'winminheight' is zero, CTRL-W - with a big number causes a + crash. (David Kotchan) +Solution: Check for negative window height in win_setheight(). +Files: src/window.c + +Patch 5.6.006 +Problem: GTK GUI: Bold font cannot always be used. Memory is freed too + early in gui_mch_init_font(). +Solution: Move call to g_free() to after where sdup is used. (Artem Hodyush) +Files: src/gui_gtk_x11.c + +Patch 5.6.007 (extra) +Problem: Win32 IME: Font is not changed when screen font is changed. And + IME composition window does not trace the cursor. +Solution: Initialize IME font. When cursor is moved, set IME composition + window with ImeSetCompositionWindow(). Add call to + ImmReleaseContext() in several places. (Taro Muraoka) +Files: src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro + +Patch 5.6.008 (extra) +Problem: Win32: When two files exist with the same name but different case + (through NFS or Samba), fixing the file name case could cause the + wrong one to be edited. +Solution: Prefer a perfect match above a match while ignoring case in + fname_case(). (Flemming Madsen) +Files: src/os_win32.c + +Patch 5.6.009 (extra) +Problem: Win32 GUI: Garbage in Windows Explorer help line when selecting + "Edit with Vim" popup menu entry. +Solution: Only return the help line when called with the GCS_HELPTEXT flag. + (Tianmiao Hu) +Files: GvimExt/gvimext.cpp + +Patch 5.6.010 +Problem: A file name which contains a TAB was not read correctly from the + viminfo file and the ":ls" listing was not aligned properly. +Solution: Parse the buffer list lines in the viminfo file from the end + backwards. Count a Tab for two characters to align the ":ls" list. +Files: src/buffer.c + +Patch 5.6.011 +Problem: When 'columns' is huge (using a tiny font) and 'statusline' is + used, Vim can crash. +Solution: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin) +Files: src/screen.c + +Patch 5.6.012 +Problem: When using "zsh" for /bin/sh, toolcheck may hang until "exit" is + typed. (Kuratczyk) +Solution: Add "-c exit" when checking for the shell version. +Files: src/toolcheck + +Patch 5.6.013 +Problem: Multibyte char in tooltip is broken. +Solution: Consider multibyte char in replace_termcodes(). (Taro Muraoka) +Files: src/term.c + +Patch 5.6.014 +Problem: When cursor is at the end of line and the character under cursor + is a multibyte character, "yl" doesn't yank 1 multibyte-char. + (Takuhiro Nishioka) +Solution: Recognize a multibyte-char at end-of-line correctly in oneright(). + (Taro Muraoka) + Also: make "+quickfix" in ":version" output appear alphabetically. +Files: src/edit.c + +Patch 5.6.015 +Problem: New xterm delete key sends <Esc>[3~ by default. +Solution: Added <kDel> and <kIns> to make the set of keypad keys complete. +Files: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c, + src/misc2.c, src/normal.c, src/os_unix.c, src/term.c + +Patch 5.6.016 +Problem: When deleting a search string from history from inside a mapping, + another entry is deleted too. (Benji Fisher) +Solution: Reset last_maptick when deleting the last entry of the search + history. Also: Increment maptick when starting a mapping from + typed characters to avoid a just added search string being + overwritten or removed from history. +Files: src/ex_getln.c, src/getchar.c + +Patch 5.6.017 +Problem: ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the + line. (Calder) +Solution: Replace the backslash with a CTRL-V internally. (Stephen P. Wall) +Files: src/ex_cmds.c + +Patch 5.6.018 +Problem: ":help [:digit:]" takes a long time to jump to the wrong place. +Solution: Insert a backslash to avoid the special meaning of '[]'. +Files: src/ex_cmds.c + +Patch 5.6.019 +Problem: "snd.c", "snd.java", etc. were recognized as "mail" filetype. +Solution: Make pattern for mail filetype more strict. +Files: runtime/filetype.vim + +Patch 5.6.020 (extra) +Problem: The DJGPP version eats processor time (Walter Briscoe). +Solution: Call __dpmi_yield() in the busy-wait loop. +Files: src/os_msdos.c + +Patch 5.6.021 +Problem: When 'selection' is "exclusive", a double mouse click in Insert + mode doesn't select last char in line. (Lutz) +Solution: Allow leaving the cursor on the NUL past the line in this case. +Files: src/edit.c + +Patch 5.6.022 +Problem: ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work. +Solution: Re-insert the backslash before the '~'. +Files: src/ex_getln.c + +Patch 5.6.023 (extra) +Problem: Various warnings for the Ming compiler. +Solution: Changes to avoid the warnings. (Bill McCarthy) +Files: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c, + src/syntax.c, src/vim.rc + +Patch 5.6.024 (extra) +Problem: Win32 console: Entering CTRL-_ requires the shift key. (Kotchan) +Solution: Specifically catch keycode 0xBD, like the GUI. +Files: src/os_win32.c + +Patch 5.6.025 +Problem: GTK GUI: Starting the GUI could be interrupted by a SIGWINCH. + (Nils Lohner) +Solution: Repeat the read() call to get the gui_in_use value when + interrupted by a signal. +Files: src/gui.c + +Patch 5.6.026 (extra) +Problem: Win32 GUI: Toolbar bitmaps are searched for in + $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith + Radebaugh) +Solution: Use $VIM/bitmaps for both, because these are not part of the + distribution but defined by the user. +Files: src/gui_w32.c, runtime/doc/gui.txt + +Patch 5.6.027 +Problem: TCL: Crash when using a Tcl script (reported for Win32). +Solution: Call Tcl_FindExecutable() in main(). (Brent Fulgham) +Files: src/main.c + +Patch 5.6.028 +Problem: Xterm patch level 126 sends codes for mouse scroll wheel. + Fully works with xterm patch level 131. +Solution: Recognize the codes for button 4 (0x60) and button 5 (0x61). +Files: src/term.c + +Patch 5.6.029 +Problem: GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes + Zellner) +Solution: Add support for shortcut keys. (Marcin Dalecki) +Files: src/gui_gtk.c + +Patch 5.6.030 +Problem: When closing a window and 'ea' is set, Vim can crash. (Yasuhiro + Matsumoto) +Solution: Set "curbuf" to a valid value in win_close(). +Files: src/window.c + +Patch 5.6.031 +Problem: Multi-byte: When a double-byte character ends in CSI, Vim waits + for another character to be typed. +Solution: Recognize the CSI as the second byte of a character and don't wait + for another one. (Yasuhiro Matsumoto) +Files: src/getchar.c + +Patch 5.6.032 +Problem: Functions with an argument that is a line number don't all accept + ".", "$", etc. (Ralf Arens) +Solution: Add get_art_lnum() and use it for setline(), line2byte() and + synID(). +Files: src/eval.c + +Patch 5.6.033 +Problem: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun + Nam) +Solution: Change logic in searchc() to skip trailing byte of a double-byte + character. + Also: Ask for second byte when searching for double-byte + character. (Park Chong-Dae) +Files: src/search.c + +Patch 5.6.034 (extra) +Problem: Compiling with Borland C++ 5.5 fails on tolower() and toupper(). +Solution: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile + to make using bcc 5.5 easier. +Files: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor + +Patch 5.6.035 +Problem: Listing the"+comments" feature in the ":version" output depended + on the wrong ID. (Stephen P. Wall) +Solution: Change "CRYPTV" to "COMMENTS". +Files: src/version.c + +Patch 5.6.036 +Problem: GTK GUI: Copy/paste text doesn't work between gvim and Eterm. +Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang) +Files: src/gui_gtk_x11.c + +Patch 5.6.037 +Problem: Multi-byte: Can't use "f" command with multi-byte character in GUI. +Solution: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam) +Files: src/gui_gtk_x11.c, src/multbyte.c + +Patch 5.6.038 +Problem: Multi-clicks in GUI are interpreted as a mouse wheel click. When + 'ttymouse' is "xterm" a mouse click is interpreted as a mouse + wheel click. +Solution: Don't recognize the mouse wheel in check_termcode() in the GUI. + Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63. +Files: src/term.c, src/os_unix.c + +Patch 5.6.039 +Problem: Motif GUI under KDE: When trying to logout, Vim hangs up the + system. (Hermann Rochholz) +Solution: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND + property of the window to let the session manager know we finished + saving ourselves. +Files: src/gui_x11.c + +Patch 5.6.040 +Problem: When using ":s" command, matching the regexp is done twice. +Solution: After copying the matched line, adjust the pointers instead of + finding the match again. (Loic Grenie) Added vim_regnewptr(). +Files: src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro + +Patch 5.6.041 +Problem: GUI: Athena, Motif and GTK don't give more than 10 dialog buttons. +Solution: Remove the limit on the number of buttons. + Also support the 'v' flag in 'guioptions'. + For GTK: Center the buttons. +Files: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c + +Patch 5.6.042 +Problem: When doing "vim -u vimrc" and vimrc contains ":q", the cursor in + the terminal can remain off. +Solution: Call cursor_on() in mch_windexit(). +Files: src/os_unix.c + +Patch 5.6.043 (extra) +Problem: Win32 GUI: When selecting guifont with the dialog, 'guifont' + doesn't include the bold or italic attributes. +Solution: Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font(). +Files: src/gui_w32.c + +Patch 5.6.044 (extra) +Problem: MS-DOS and Windows: The line that dosinst.exe appends to + autoexec.bat to set PATH is wrong when Vim is in a directory with + an embedded space. +Solution: Use double quotes for the value when there is an embedded space. +Files: src/dosinst.c + +Patch 5.6.045 (extra) (fixed version) +Problem: VMS: Various small problems. +Solution: Many small changes. (Zoltan Arpadffy) + File name modifier ":h" keeps the path separator. + File name modifier ":e" also removes version. + Compile with MAX_FEAT by default. + When checking for autocommands ignore version in file name. + Be aware of file names being case insensitive. + Added vt320 builtin termcap. + Be prepared for an empty default_vim_dir. +Files: runtime/gvimrc_example.vim, runtime/vimrc_example.vim, + runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c, + src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c, + src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c, + src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c + +Patch 5.6.046 +Problem: Systems with backslash in file name: With 'shellslash' set, "vim + */*.c" only uses a slash for the first file name. (Har'El) +Solution: Fix slashes in file name arguments after reading the vimrc file. +Files: src/option.c + +Patch 5.6.047 +Problem: $CPPFLAGS is not passed on to ctags configure. +Solution: Add it. (Walter Briscoe) +Files: src/config.mk.in, src/Makefile + +Patch 5.6.048 +Problem: CTRL-R in Command-line mode is documented to insert text as typed, + but inserts text literally. +Solution: Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert + literally. This is consistent with Insert mode. But characters + that end Command-line mode are inserted literally. +Files: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c, + src/ops.c, src/proto/ops.pro + +Patch 5.6.049 +Problem: Documentation for [!] after ":ijump" is wrong way around. (Benji + Fisher) +Solution: Fix the documentation. Also improve the code to check for a match + after a /* */ comment. +Files: runtime/doc/tagsearch.txt, src/search.c + +Patch 5.6.050 +Problem: Replacing is wrong when replacing a single-byte char with + double-byte char or the other way around. +Solution: Shift the text after the character when it is replaced. + (Yasuhiro Matsumoto) +Files: src/normal.c, src/misc1.c + +Patch 5.6.051 +Problem: ":tprev" and ":tnext" don't give an error message when trying to + go before the first or beyond the last tag. (Robert Webb) +Solution: Added error messages. Also: Delay a second when a file-read + message is going to overwrite an error message, otherwise it won't + be seen. +Files: src/fileio.c, src/tag.c + +Patch 5.6.052 +Problem: Multi-byte: When an Ex command has a '|' or '"' as a second byte, + it terminates the command. +Solution: Skip second byte of multi-byte char when checking for '|' and '"'. + (Asai Kenichi) +Files: src/ex_docmd.c + +Patch 5.6.053 +Problem: CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius) +Solution: Escape '|', '"' and '\' in tag names when using CTRL-] and also + for command-line completion. +Files: src/ex_getln.c, src/normal.c + +Patch 5.6.054 +Problem: When using ":e" and ":e #" the cursor is put in the first column + when 'startofline' is set. (Cordell) +Solution: Use the last known column when 'startofline' is set. + Also, use ECMD_LAST more often to simplify the code. +Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro + +Patch 5.6.055 +Problem: When 'statusline' only contains a text without "%" and doesn't fit + in the window, Vim crashes. (Ron Aaron) +Solution: Don't use the pointer for the first item if there is no item. +Files: src/screen.c + +Patch 5.6.056 (extra) +Problem: MS-DOS: F11 and F12 don't work when 'bioskey' is set. +Solution: Use enhanced keyboard functions. (Vince Negri) + Detect presence of enhanced keyboard and set bioskey_read and + bioskey_ready. +Files: src/os_msdos.c + +Patch 5.6.057 (extra) +Problem: Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off + menus. +Solution: Use system font instead of a fixed font. (Matsumoto, Muraoka) +Files: src/gui_w32.c + +Patch 5.6.058 +Problem: When the 'a' flag is not in 'guioptions', non-Windows systems + copy Visually selected text to the clipboard/selection on a yank + or delete command anyway. On Windows it isn't done even when the + 'a' flag is included. +Solution: Respect the 'a' flag in 'guioptions' on all systems. +Files: src/normal.c + +Patch 5.6.059 (extra) +Problem: When moving the cursor over italic text and the characters spill + over to the cell on the right, that spill-over is deleted. + Noticed in the Win32 GUI, can happen on other systems too. +Solution: Redraw italic text starting from a blank, like this is already + done for bold text. (Vince Negri) +Files: src/gui.c, src/gui.h, src/gui_w32.c + +Patch 5.6.060 +Problem: Some bold characters spill over to the cell on the left, that + spill-over can remain sometimes. +Solution: Redraw a characters when the next character was bold and needs + redrawing. (Robert Webb) +Files: src/screen.c + +Patch 5.6.061 +Problem: When xterm sends 8-bit controls, recognizing the version response + doesn't work. + When using CSI instead of <Esc>[ for the termcap color codes, + using 16 colors doesn't work. (Neil Bird) +Solution: Also accept CSI in place of <Esc>[ for the version string. + Also check for CSI when handling colors 8-15 in term_color(). + Use CSI for builtin xterm termcap entries when 'term' contains + "8bit". +Files: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c, + src/os_unix.c, src/proto/option.pro, src/proto/term.pro + +Patch 5.6.062 +Problem: The documentation says that setting 'smartindent' doesn't have an + effect when 'cindent' is set, but it does make a difference for + lines starting with "#". (Neil Bird) +Solution: Really ignore 'smartindent' when 'cindent' is set. +Files: src/misc1.c, src/ops.c + +Patch 5.6.063 +Problem: Using "I" in Visual-block mode doesn't accept a count. (Johannes + Zellner) +Solution: Pass the count on to do_insert() and edit(). (Allan Kelly) +Files: src/normal.c, src/ops.c, src/proto/ops.pro + +Patch 5.6.064 +Problem: MS-DOS and Win32 console: Mouse doesn't work correctly after + including patch 5.6.28. (Vince Negri) +Solution: Don't check for mouse scroll wheel when the mouse code contains + the number of clicks. +Files: src/term.c + +Patch 5.6.065 +Problem: After moving the cursor around in Insert mode, typing a space can + still trigger an abbreviation. (Benji Fisher) +Solution: Don't check for an abbreviation after moving around in Insert mode. +Files: src/edit.c + +Patch 5.6.066 +Problem: Still a few bold character spill-over remains after patch 60. +Solution: Clear character just in front of blanking out rest of the line. + (Robert Webb) +Files: src/screen.c + +Patch 5.6.067 +Problem: When a file name contains a NL, the viminfo file is corrupted. +Solution: Use viminfo_writestring() to convert the NL to CTRL-V n. + Also fix the Buffers menu and listing a menu name with a newline. +Files: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c + +Patch 5.6.068 +Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. + (Bernhard Rosenkraenzer) +Solution: Also check xs_apiversion for the version number when prepending + defines for PL_*. +Files: src/Makefile + +Patch 5.6.069 +Problem: "go" doesn't always end up at the right character when + 'fileformat' is "dos". (Bruce DeVisser) +Solution: Correct computations in ml_find_line_or_offset(). +Files: src/memline. + +Patch 5.6.070 (depends on 5.6.068) +Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. + (Bernhard Rosenkraenzer) +Solution: Simpler check instead of the one from patch 68. +Files: src/Makefile + +Patch 5.6.071 +Problem: "A" in Visual block mode on a Tab positions the cursor one char to + the right. (Michael Haumann) +Solution: Correct the column computation in op_insert(). +Files: src/ops.c + +Patch 5.6.072 +Problem: When starting Vim with "vim +startinsert", it enters Insert mode + only after typing the first command. (Andrew Pimlott) +Solution: Insert a dummy command in the stuff buffer. +Files: src/main.c + +Patch 5.6.073 (extra) (depends on 5.6.034) +Problem: Win32 GUI: When compiled with Bcc 5.5 menus don't work. + In dosinst.c toupper() and tolower() give an "internal compiler + error" for Bcc 5.5. +Solution: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan + Sharp) Also cleaned up compilation arguments. + Use our own implementation of toupper() in dosinst.c. Use + mytoupper() instead of tolower(). +Files: src/Makefile.bor, src/dosinst.c + +Patch 5.6.074 (extra) +Problem: Entering CSI directly doesn't always work, because it's recognized + as the start of a special key. Mostly a problem with multi-byte + in the GUI. +Solution: Use K_CSI for a typed CSI character. Use <CSI> for a normal CSI, + <xCSI> for a CSI typed in the GUI. +Files: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c, + src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c, + src/keymap.h, src/misc2.c + +Patch 5.6.075 +Problem: When using "I" or "A" in Visual block mode while 'sts' is set may + change spaces to a Tab the inserted text is not correct. (Mike + Steed) And some other problems when using "A" to append after the + end of the line. +Solution: Check for change in spaces/tabs after inserting the text. Append + spaces to fill the gap between the end-of-line and the right edge + of the block. +Files: src/ops.c + +Patch 5.6.076 +Problem: GTK GUI: Mapping <M-Space> doesn't work. +Solution: Don't use the "Alt" modifier twice in key_press_event(). +Files: src/gui_gtk_x11.c + +Patch 5.6.077 +Problem: GUI: When interrupting an external program with CTRL-C, gvim might + crash. (Benjamin Korvemaker) +Solution: Avoid using a NULL pointer in ui_inchar_undo(). +Files: src/ui.c + +Patch 5.6.078 +Problem: Locale doesn't always work on FreeBSD. (David O'Brien) +Solution: Link with the "xpg4" library when available. +Files: src/configure.in, src/configure + +Patch 5.6.079 +Problem: Vim could crash when several Tcl interpreters are created and + destroyed. +Solution: handle the "exit" command and nested ":tcl" commands better. (Ingo + Wilken) +Files: runtime/doc/if_tcl.txt, src/if_tcl.c + +Patch 5.6.080 +Problem: When jumping to a tag, generating the tags file and jumping to the + same tag again uses the old search pattern. (Sung-Hyun Nam) +Solution: Flush cached tag matches when executing an external command. +Files: src/misc2.c, src/proto/tag.pro, src/tag.c + +Patch 5.6.081 +Problem: ":syn include" uses a level for the included file, this confuses + contained items included at the same level. +Solution: Use a unique tag for each included file. Changed sp_syn_inc_lvl + to sp_syn_inc_tag. (Scott Bigham) +Files: src/syntax.c, src/structs.h + +Patch 5.6.082 +Problem: When using cscope, Vim can crash. +Solution: Initialize tag_fname in find_tags(). (Anton Blanchard) +Files: src/tag.c + +Patch 5.6.083 (extra) +Problem: Win32: The visual beep can't be seen. (Eric Roesinger) +Solution: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum) + Also: Allow specifying the delay in t_vb for the GUI. +Files: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c, + src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc, + src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro, + src/proto/gui_mac.pro, src/proto/gui_riscos.pro, + src/proto/gui_w32.pro, src/proto/gui_x11.pro, + src/proto/gui_beos.pro + +Patch 5.6.084 (depends on 5.6.074) +Problem: GUI: Entering CSI doesn't always work for Athena and Motif. +Solution: Handle typed CSI as <xCSI> (forgot this bit in 5.6.074). +Files: src/gui_x11.c + +Patch 5.6.085 +Problem: Multi-byte: Using "r" to replace a double-byte char with a + single-byte char moved the cursor one character. (Matsumoto) + Also, using a count when replacing a single-byte char with a + double-byte char didn't work. +Solution: Don't use del_char() to delete the second byte. + Get "ptr" again after calling ins_char(). +Files: src/normal.c + +Patch 5.6.086 (extra) +Problem: Win32: When using libcall() and the returned value is not a valid + pointer, Vim crashes. +Solution: Use IsBadStringPtr() to check if the pointer is valid. +Files: src/os_win32.c + +Patch 5.6.087 +Problem: Multi-byte: Commands and messages with multi-byte characters are + displayed wrong. +Solution: Detect double-byte characters. (Yasuhiro Matsumoto) +Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c + +Patch 5.6.088 +Problem: Multi-byte with Motif or Athena: The message "XIM requires + fontset" is annoying when Vim was compiled with XIM support but it + is not being used. +Solution: Remove that message. +Files: src/multbyte.c + +Patch 5.6.089 +Problem: On non-Unix systems it's possible to overwrite a read-only file + without using "!". +Solution: Check if the file permissions allow overwriting before moving the + file to become the backup file. +Files: src/fileio.c + +Patch 5.6.090 +Problem: When editing a file in "/home/dir/home/dir" this was replaced with + "~~". (Andreas Jellinghaus) +Solution: Replace the home directory only once in home_replace(). +Files: src/misc1.c + +Patch 5.6.091 +Problem: When editing many "no file" files, can't create swap file, because + .sw[a-p] have all been used. (Neil Bird) +Solution: Also use ".sv[a-z]", ".su[a-z]", etc. +Files: src/memline.c + +Patch 5.6.092 +Problem: FreeBSD: When setting $TERM to a non-valid terminal name, Vim + hangs in tputs(). +Solution: After tgetent() returns an error code, call it again with the + terminal name "dumb". This apparently creates an environment in + which tputs() doesn't fail. +Files: src/term.c + +Patch 5.6.093 (extra) +Problem: Win32 GUI: "ls | gvim -" will show a message box about reading + stdin when Vim exits. (Donohue) +Solution: Don't write a message about the file read from stdin until the GUI + has started. +Files: src/fileio.c + +Patch 5.6.094 +Problem: Problem with multi-byte string for ":echo var". +Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam) + Also make do_echo() aware of multi-byte characters. +Files: src/eval.c, src/message.c + +Patch 5.6.095 +Problem: With an Emacs TAGS file that include another a relative path + doesn't always work. +Solution: Use expand_tag_fname() on the name of the included file. + (Utz-Uwe Haus) +Files: src/tag.c + +Patch 5.6.096 +Problem: Unix: When editing many files, startup can be slow. (Paul + Ackersviller) +Solution: Halve the number of stat() calls used to add a file to the buffer + list. +Files: src/buffer.c + +Patch 5.7a.001 +Problem: GTK doesn't respond on drag&drop from ROX-Filer. +Solution: Add "text/uri-list" target. (Thomas Leonard) + Also: fix problem with checking for trash arguments. +Files: src/gui_gtk_x11.c + +Patch 5.7a.002 +Problem: Multi-byte: 'showmatch' is performed when second byte of an + inserted double-byte char is a paren or brace. +Solution: Check IsTrailByte() before calling showmatch(). (Taro Muraoka) +Files: src/misc1.c + +Patch 5.7a.003 +Problem: Multi-byte: After using CTRL-O in Insert mode with the cursor at + the end of the line on a multi-byte character the cursor moves to + the left. +Solution: Check for multi-byte character at end-of-line. (Taro Muraoka) + Also: fix cls() to detect a double-byte character. (Chong-Dae Park) +Files: src/edit.c, src/search.c + +Patch 5.7a.004 +Problem: When reporting the search pattern offset, the string could be + unterminated, which may cause a crash. +Solution: Terminate the string for the search offset. (Stephen P. Wall) +Files: src/search.c + +Patch 5.7a.005 +Problem: When ":s//~/" doesn't find a match it reports "[NULL]" for the + pattern. +Solution: Use get_search_pat() to obtain the actually used pattern. +Files: src/ex_cmds.c, src/proto/search.pro, src/search.c + +Patch 5.7a.006 (extra) +Problem: VMS: Various problems, also with the VAXC compiler. +Solution: In many places use the Unix code for VMS too. + Added time, date and compiler version to version message. + (Zoltan Arpadffy) +Files: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h, + src/main.c, src/message.c, src/misc1.c, src/os_vms.c, + src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h, + src/proto/os_vms.pro, src/proto/version.pro, src/term.c, + src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c + +Patch 5.7a.007 +Problem: Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C. +Solution: Only use "intr_char" when it has been set. +Files: src/gui_x11.c + +Patch 5.7a.008 +Problem: GTK GUI: When using CTRL-L the screen is redrawn twice, causing + trouble for bold characters. Also happens when moving with the + scrollbar. Best seen when 'writedelay' is non-zero. + When starting the GUI with ":gui" the screen is redrawn once with + the wrong colors. +Solution: Only set the geometry hints when the window size really changed. + This avoids setting it each time the scrollbar is forcefully + redrawn. + Don't redraw in expose_event() when gui.starting is still set. +Files: src/gui_gtk_x11.c + + +============================================================================== +VERSION 5.8 *version-5.8* + +Version 5.8 is a bug-fix version of 5.7. + + +Changed *changed-5.8* +------- + +Ctags is no longer included with Vim. It has grown into a project of its own. +You can find it here: http://ctags.sf.net. It is highly recommended as a Vim +companion when you are writing programs. + + +Added *added-5.8* +----- + +New syntax files: +acedb AceDB (Stewart Morris) +aflex Aflex (Mathieu Clabaut) +antlr Antlr (Mathieu Clabaut) +asm68k 68000 Assembly (Steve Wall) +automake Automake (John Williams) +ayacc Ayacc (Mathieu Clabaut) +b B (Mathieu Clabaut) +bindzone BIND zone (glory hump) +blank Blank (Rafal Sulejman) +cfg Configure files (Igor Prischepoff) +changelog ChangeLog (Gediminas Paulauskas) +cl Clever (Phil Uren) +crontab Crontab (John Hoelzel) +csc Essbase script (Raul Segura Acevedo) +cynlib Cynlib(C++) (Phil Derrick) +cynpp Cyn++ (Phil Derrick) +debchangelog Debian Changelog (Wichert Akkerman) +debcontrol Debian Control (Wichert Akkerman) +dns DNS zone file (Jehsom) +dtml Zope's DTML (Jean Jordaan) +dylan Dylan, Dylan-intr and Dylan-lid (Brent Fulgham) +ecd Embedix Component Description (John Beppu) +fgl Informix 4GL (Rafal Sulejman) +foxpro FoxPro (Powing Tse) +gsp GNU Server Pages (Nathaniel Harward) +gtkrc GTK rc (David Necas) +hercules Hercules (Avant! Corporation) (Dana Edwards) +htmlos HTML/OS by Aestiva (Jason Rust) +inittab SysV process control (David Necas) +iss Inno Setup (Dominique Stephan) +jam Jam (Ralf Lemke) +jess Jess (Paul Baleme) +lprolog LambdaProlog (Markus Mottl) +ia64 Intel Itanium (parth malwankar) +kix Kixtart (Nigel Gibbs) +mgp MaGic Point (Gerfried Fuchs) +mason Mason (HTML with Perl) (Andrew Smith) +mma Mathematica (Wolfgang Waltenberger) +nqc Not Quite C (Stefan Scherer) +omnimark Omnimark (Paul Terray) +openroad OpenROAD (Luis Moreno Serrano) +named BIND configuration (glory hump) +papp PApp (Marc Lehmann) +pfmain Postfix main config (Peter Kelemen) +pic PIC assembly (Aleksandar Veselinovic) +ppwiz PPWizard (Stefan Schwarzer) +progress Progress (Phil Uren) +psf Product Specification File (Rex Barzee) +r R (Tom Payne) +registry MS-Windows registry (Dominique Stephan) +robots Robots.txt (Dominique Stephan) +rtf Rich Text Format (Dominique Stephan) +setl SETL (Alex Poylisher) +sgmldecl SGML Declarations (Daniel A. Molina W.) +sinda Sinda input (Adrian Nagle) +sindacmp Sinda compare (Adrian Nagle) +sindaout Sinda output (Adrian Nagle) +smith SMITH (Rafal Sulejman) +snobol4 Snobol 4 (Rafal Sulejman) +strace Strace (David Necas) +tak TAK input (Adrian Nagle) +takcmp TAK compare (Adrian Nagle) +takout TAK output (Adrian Nagle) +tasm Turbo assembly (FooLman) +texmf TeX configuration (David Necas) +trasys Trasys input (Adrian Nagle) +tssgm TSS Geometry (Adrian Nagle) +tssop TSS Optics (Adrian Nagle) +tsscl TSS Command line (Adrian Nagle) +virata Virata Configuration Script (Manuel M.H. Stol) +vsejcl VSE JCL (David Ondrejko) +wdiff Wordwise diff (Gerfried Fuchs) +wsh Windows Scripting Host (Paul Moore) +xkb X Keyboard Extension (David Necas) + +Renamed php3 to php, it now also supports php4 (Lutz Eymers) + +Patch 5.7.015 +Problem: Syntax files for Vim 6.0 can't be used with 5.x. +Solution: Add the "default" argument to the ":highlight" command: Ignore the + command if highlighting was already specified. +Files: src/syntax.c + +Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done +when Vim is starting up. Reduces the startup time of the GUI. + + +Fixed *fixed-5.8* +----- + +Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink. + +Fixed compiling under NeXT. (Jeroen C.M. Goudswaard) + +optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C'). + +Tcl interpreter: "buffer" command didn't check for precense of an argument. +(Dave Bodenstab) + +dosinst.c: Added checks for too long file name. + +Amiga: a file name starting with a colon was considered absolute but it isn't. +Amiga: ":pwd" added a slash when in the root of a drive. + +Macintosh: Warnings for unused variables. (Bernhard Pruemmer) + +Unix: When catching a deadly signal, handle it in such a way that it's +unlikely that Vim will hang. Call _exit() instead of exit() in case of a +severe problem. + +Setting the window title from nothing to something didn't work after patch 29. + +Check for ownership of .exrc and .vimrc was done with stat(). Use lstat() as +well for extra security. + +Win32 GUI: Printing a file with 'fileformat' "unix" didn't work. Set +'fileformat' to "dos" before writing the temp file. + +Unix: Could start waiting for a character when checking for a CTRL-C typed +when an X event is received. + +Could not use Perl and Python at the same time on FreeBSD, because Perl used +"-lc" and Python used the threaded C library. + +Win32: The Mingw compiler gave a few warning messages. + +When using "ZZ" and an autocommand for writing uses an abbreviation it didn't +work. Don't stuff the ":x" command but execute it directly. (Mikael Berthe) + +VMS doesn't always have lstat(), added an #ifdef around it. + +Added a few corrections for the Macintosh. (Axel Kielhorn) + +Win32: Gvimext could not edit more than a few files at once, the length of the +argument was fixed. + + +Previously released patches for Vim 5.7: + +Patch 5.7.001 +Problem: When the current buffer is crypted, and another modified buffer + isn't, ":wall" will encrypt the other buffer. +Solution: In buf_write() use "buf" instead of "curbuf" to check for the + crypt key. +Files: src/fileio.c + +Patch 5.7.002 +Problem: When 'showmode' is set, using "CTRL-O :r file" waits three seconds + before displaying the read text. (Wichert Akkerman) +Solution: Set "keep_msg" to the file message so that the screen is redrawn + before the three seconds wait for displaying the mode message. +Files: src/fileio.c + +Patch 5.7.003 +Problem: Searching for "[[:cntrl:]]" doesn't work. +Solution: Exclude NUL from the matching characters, it terminates the list. +Files: src/regexp.c + +Patch 5.7.004 +Problem: GTK: When selecting a new font, Vim can crash. +Solution: In gui_mch_init_font() unreference the old font, not the new one. +Files: src/gui_gtk_x11.c + +Patch 5.7.005 +Problem: Multibyte: Inserting a wrapped line corrupts kterm screen. + Pasting TEXT/COMPOUND_TEXT into Vim does not work. + On Motif no XIM status line is displayed even though it is + available. +Solution: Don't use xterm trick for wrapping lines for multibyte mode. + Correct a missing "break", added TEXT/COMPOUND_TEXT selection + request. + Add XIMStatusArea fallback code. + (Katsuhito Nagano) +Files: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c + +Patch 5.7.006 +Problem: GUI: redrawing the non-Visual selection is wrong when the window + is unobscured. (Jean-Pierre Etienne) +Solution: Redraw the selection properly and don't clear it. Added "len" + argument to clip_may_redraw_selection(). +Files: src/gui.c, src/ui.c, src/proto/ui.pro + +Patch 5.7.007 +Problem: Python: Crash when using the current buffer twice. +Solution: Increase the reference count for buffer and window objects. + (Johannes Zellner) +Files: src/if_python.c + +Patch 5.7.008 +Problem: In Ex mode, backspacing over the first TAB doesn't work properly. + (Wichert Akkerman) +Solution: Switch the cursor on before printing the newline. +Files: src/ex_getln.c + +Patch 5.7.009 (extra) +Problem: Mac: Crash when using a long file. +Solution: Don't redefine malloc() and free(), because it will break using + realloc(). +Files: src/os_mac.h + +Patch 5.7.010 +Problem: When using CTRL-A on a very long number Vim can crash. (Michael + Naumann) +Solution: Truncate the length of the new number to avoid a buffer overflow. +Files: src/ops.c + +Patch 5.7.011 (extra) +Problem: Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed. +Solution: Output each character separately, to avoid that Windows reverses + the text for some fonts. (Ron Aaron) +Files: src/gui_w32.c + +Patch 5.7.012 +Problem: When using "-complete=buffer" for ":command" the user command + fails. +Solution: In a user command don't replace the buffer name with a count for + the buffer number. +Files: src/ex_docmd.c + +Patch 5.7.013 +Problem: "gD" didn't always find a match in the first line, depending on + the column the search started at. +Solution: Reset the column to zero before starting to search. +Files: src/normal.c + +Patch 5.7.014 +Problem: Rot13 encoding was done on characters with accents, which is + wrong. (Sven Gottwald) +Solution: Only do rot13 encoding on ASCII characters. +Files: src/ops.c + +Patch 5.7.016 +Problem: When hitting 'n' for a ":s///c" command, the ignore-case flag was + not restored, some matches were skipped. (Daniel Blaustein) +Solution: Restore the reg_ic variable when 'n' was hit. +Files: src/ex_cmds.c + +Patch 5.7.017 +Problem: When using a Vim script for Vim 6.0 with <SID> before a function + name, it produces an error message even when inside an "if version + >= 600". (Charles Campbell) +Solution: Ignore errors in the function name when the function is not going + to be defined. +Files: src/eval.c + +Patch 5.7.018 +Problem: When running "rvim" or "vim -Z" it was still possible to execute a + shell command with system() and backtick-expansion. (Antonios A. + Kavarnos) +Solution: Disallow executing a shell command in get_cmd_output() and + mch_expand_wildcards(). +Files: src/misc1.c, src/os_unix.c + +Patch 5.7.019 +Problem: Multibyte: In a substitute string, a multi-byte character isn't + skipped properly, can be a problem when the second byte is a + backslash. +Solution: Skip an extra byte for a double-byte character. (Muraoka Taro) +Files: src/ex_cmds.c + +Patch 5.7.020 +Problem: Compilation doesn't work on MacOS-X. +Solution: Add a couple of #ifdefs. (Jamie Curmi) +Files: src/regexp.c, src/ctags/general.h + +Patch 5.7.021 +Problem: Vim sometimes produces a beep when started in an xterm. Only + happens when compiled without mouse support. +Solution: Requesting the xterm version results in a K_IGNORE. This wasn't + handled when mouse support is disabled. Accept K_IGNORE always. +Files: src/normal.c + +Patch 5.7.022 +Problem: %v in 'statusline' is not displayed when it's equal to %c. +Solution: Check if %V or %v is used and handle them differently. +Files: src/screen.c + +Patch 5.7.023 +Problem: Crash when a WinLeave autocommand deletes the buffer in the other + window. +Solution: Check that after executing the WinLeave autocommands there still + is a window to be closed. Also update the test that was supposed + to check for this problem. +Files: src/window.c, testdir/test13.in, testdir/test13.ok + +Patch 5.7.024 +Problem: Evaluating an expression for 'statusline' can have side effects. +Solution: Evaluate the expression in a sandbox. +Files: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c, + src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c, + src/screen.c, src/undo.c + +Patch 5.7.025 (fixed) +Problem: Creating a temp file has a race condition. +Solution: Create a private directory to write the temp files in. +Files: src/fileio.c, src/misc1.c, src/proto/misc1.pro, + src/proto/fileio.pro, src/memline.c, src/os_unix.h + +Patch 5.7.026 (extra) +Problem: Creating a temp file has a race condition. +Solution: Create a private directory to write the temp files in. + This is the extra part of patch 5.7.025. +Files: src/os_msdos.h + +Patch 5.7.027 +Problem: Starting to edit a file can cause a crash. For example when in + Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and + then <CR>, which edits a help file. (Robert Bogomip) +Solution: Check if keep_msg is NULL before copying it. +Files: src/fileio.c + +Patch 5.7.028 +Problem: Creating a backup or swap file could fail in rare situations. +Solution: Use O_EXCL for open(). +Files: src/fileio.c, src/memfile.c + +Patch 5.7.029 +Problem: Editing a file with an extremely long name crashed Vim. +Solution: Check for length of the name when setting the window title. +Files: src/buffer.c + +Patch 5.7.030 +Problem: A ":make" or ":grep" command with a very long argument could cause + a crash. +Solution: Allocate the buffer for the shell command. +Files: src/ex_docmd.c + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/version6.txt b/en/version6.txt new file mode 100644 index 000000000..58ad714fd --- /dev/null +++ b/en/version6.txt @@ -0,0 +1,13846 @@ +*version6.txt* For Vim version 6.3. Last change: 2004 Jun 07 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Welcome to Vim Version 6.0! A large number of features has been added. This +file mentions all the new items that have been added, changes to existing +features and bug fixes compared to Vim 5.x. + +See |vi_diff.txt| for an overview of differences between Vi and Vim 6.0. +See |version4.txt| for differences between Vim 3.0 and Vim 4.0. +See |version5.txt| for differences between Vim 4.0 and Vim 5.0. + +INCOMPATIBLE CHANGES |incompatible-6| + +Cursor position in Visual mode |curpos-visual| +substitute command Vi compatible |substitute-CR| +global option values introduced |new-global-values| +'fileencoding' changed |fileencoding-changed| +Digraphs changed |digraphs-changed| +Filetype detection changed |filetypedetect-changed| +Unlisted buffers introduced |new-unlisted-buffers| +CTRL-U in Command-line mode changed |CTRL-U-changed| +Ctags gone |ctags-gone| +Documentation reorganized |documentation-6| +Modeless selection and clipboard |modeless-and-clipboard| +Small incompatibilities |incomp-small-6| + +NEW FEATURES |new-6| + +Folding |new-folding| +Vertically split windows |new-vertsplit| +Diff mode |new-diff-mode| +Easy Vim: click-and-type |new-evim| +User manual |new-user-manual| +Flexible indenting |new-indent-flex| +Extended search patterns |new-searchpat| +UTF-8 support |new-utf-8| +Multi-language support |new-multi-lang| +Plugin support |new-plugins| +Filetype plugins |new-filetype-plugins| +File browser |new-file-browser| +Editing files over a network |new-network-files| +Window for command-line editing |new-cmdwin| +Debugging mode |new-debug-mode| +Cursor in virtual position |new-virtedit| +Debugger interface |new-debug-itf| +Communication between Vims |new-vim-server| +Buffer type options |new-buftype| +Printing |new-printing| +Ports |ports-6| +Quickfix extended |quickfix-6| +Operator modifiers |new-operator-mod| +Search Path |new-search-path| +Writing files improved |new-file-writing| +Argument list |new-argument-list| +Restore a View |new-View| +Color schemes |new-color-schemes| +Various new items |new-items-6| + +IMPROVEMENTS |improvements-6| + +COMPILE TIME CHANGES |compile-changes-6| + +BUG FIXES |bug-fixes-6| + +VERSION 6.1 |version-6.1| +Changed |changed-6.1| +Added |added-6.1| +Fixed |fixed-6.1| + +VERSION 6.2 |version-6.2| +Changed |changed-6.2| +Added |added-6.2| +Fixed |fixed-6.2| + +VERSION 6.3 |version-6.3| +Changed |changed-6.3| +Added |added-6.3| +Fixed |fixed-6.3| + +============================================================================== +INCOMPATIBLE CHANGES *incompatible-6* + +These changes are incompatible with previous releases. Check this list if you +run into a problem when upgrading from Vim 5.x to 6.0 + + +Cursor position in Visual mode *curpos-visual* +------------------------------ + +When going from one window to another window on the same buffer while in +Visual mode, the cursor position of the other window is adjusted to keep the +same Visual area. This can be used to set the start of the Visual area in one +window and the end in another. In vim 5.x the cursor position of the other +window would be used, which could be anywhere and was not very useful. + + +Substitute command Vi compatible *substitute-CR* +-------------------------------- + +The substitute string (the "to" part of the substitute command) has been made +Vi compatible. Previously a CTRL-V had a special meaning and could be used to +prevent a <CR> to insert a line break. This made it impossible to insert a +CTRL-V before a line break. Now a backslash is used to prevent a <CR> to +cause a line break. Since the number of backslashes is halved, it is still +possible to insert a line break at the end of the line. This now works just +like Vi, but it's not compatible with Vim versions before 6.0. + +When a ":s" command doesn't make any substitutions, it no longer sets the '[ +and '] marks. This is not related to Vi, since it doesn't have these marks. + + +Global option values introduced *new-global-values* +------------------------------- + +There are now global values for options which are local to a buffer or window. +Previously the local options were copied from one buffer to another. When +editing another file this could cause option values from a modeline to be used +for the wrong file. Now the global values are used when entering a buffer +that has not been used before. Also, when editing another buffer in a window, +the local window options are reset to their global values. The ":set" command +sets both the local and global values, this is still compatible. But a +modeline only sets the local value, this is not backwards compatible. + +":let &opt = val" now sets the local and global values, like ":set". New +commands have been added to set the global or local value: + :let &opt = val like ":set" + :let &g:opt = val like ":setglobal" + :let &l:opt = val like ":setlocal" + + +'fileencoding' changed *fileencoding-changed* +---------------------- + +'fileencoding' was used in Vim 5.x to set the encoding used inside all of Vim. +This was a bit strange, because it was local to a buffer and worked for all +buffers. It could never be different between buffers, because it changed the +way text in all buffers was interpreted. +It is now used for the encoding of the file related to the buffer. If you +still set 'fileencoding' it is likely to be overwritten by the detected +encoding from 'fileencodings', thus it is "mostly harmless". +The old FileEncoding autocommand now does the same as the new EncodingChanged +event. + + +Digraphs changed *digraphs-changed* +---------------- + +The default digraphs now correspond to RFC1345. This is very different from +what was used in Vim 5.x. |digraphs| + + +Filetype detection changed *filetypedetect-changed* +-------------------------- + +The filetype detection previously was using the "filetype" autocommand group. +This caused confusion with the FileType event name (case is ignored). The +group is now called "filetypedetect". It still works, but if the "filetype" +group is used the autocommands will not be removed by ":filetype off". + The support for 'runtimepath' has made the "myfiletypefile" and +"mysyntaxfile" mechanism obsolete. They are still used for backwards +compatibility. + +The connection between the FileType event and setting the 'syntax' option was +previously in the "syntax" autocommand group. That caused confusion with the +Syntax event name. The group is now called "syntaxset". + +The distributed syntax files no longer contain "syntax clear". That makes it +possible to include one in the other without tricks. The syntax is now +cleared when the 'syntax' option is set (by an autocommand added from +synload.vim). This makes the syntax cleared when the value of 'syntax' does +not correspond to a syntax file. Previously the existing highlighting was +kept. + + +Unlisted buffers introduced *new-unlisted-buffers* +--------------------------- + +There is now a difference between buffers which don't appear in the buffer +list and buffers which are really not in the buffer list. Commands like +":ls", ":bnext", ":blast" and the Buffers menu will skip buffers not in the +buffer list. |unlisted-buffer| +The 'buflisted' option can be used to make a buffer appear in the buffer list +or not. + +Several commands that previously added a buffer to the buffer list now create +an unlisted buffer. This means that a ":bnext" and ":ball" will not find these +files until they have actually been edited. For example, buffers used for the +alternative file by ":write file" and ":read file". + Other commands previously completely deleted a buffer and now only remove +the buffer from the buffer list. Commands relying on a buffer not to be +present might fail. For example, a ":bdelete" command in an autocommand that +relied on something following to fail (was used in the automatic tests). +|:bwipeout| can be used for the old meaning of ":bdelete". + +The BufDelete autocommand event is now triggered when a buffer is removed from +the buffer list. The BufCreate event is only triggered when a buffer is +created that is added to the buffer list, or when an existing buffer is added +to the buffer list. BufAdd is a new name for BufCreate. +The new BufNew event is for creating any buffer and BufWipeout for really +deleting a buffer. + +When doing Insert mode completion, only buffers in the buffer list are +scanned. Added the 'U' flag to 'complete' to do completion from unlisted +buffers. + +Unlisted buffers are not stored in a viminfo file. + + +CTRL-U in Command-line mode changed *CTRL-U-changed* +----------------------------------- + +Using CTRL-U when editing the command line cleared the whole line. Most +shells only delete the characters before the cursor. Made it work like that. +(Steve Wall) + +You can get the old behavior with CTRL-E CTRL-U: > + :cnoremap <C-U> <C-E><C-U> + + +Ctags gone *ctags-gone* +---------- + +Ctags is no longer part of the Vim distribution. It's now a grown-up program +by itself, it deserves to be distributed separately. +Ctags can be found here: http://ctags.sf.net/. + + +Documentation reorganized *documentation-6* +------------------------- + +The documentation has been reorganized, an item may not be where you found it +in Vim 5.x. +- The user manual was added, some items have been moved to it from the + reference manual. +- The quick reference is now in a separate file (so that it can be printed). + +The examples in the documentation were previously marked with a ">" in the +first column. This made it difficult to copy/paste them. There is now a +single ">" before the example and it ends at a "<" or a non-blank in the first +column. This also looks better without highlighting. + +'helpfile' is no longer used to find the help tags file. This allows a user +to add its own help files (e.g., for plugins). + + +Modeless selection and clipboard *modeless-and-clipboard* +-------------------------------- + +The modeless selection is used to select text when Visual mode can't be used, +for example when editing the command line or at the more prompt. +In Vim 5.x the modeless selection was always used. On MS-Windows this caused +the clipboard to be overwritten, with no way to avoid that. The modeless +selection now obeys the 'a' and 'A' flags in 'guioptions' and "autoselect" and +"autoselectml" in 'clipboard'. By default there is no automatic copy on +MS-Windows. Use the |c_CTRL-Y| command to manually copy the selection. + +To get the old behavior back, do this: > + + :set clipboard^=autoselectml guioptions+=A + + +Small incompatibilities *incomp-small-6* +----------------------- + +'backupdir', 'cdpath', 'directory', 'equalprg', 'errorfile', 'formatprg', +'grepprg', 'helpfile', 'makeef', 'makeprg', 'keywordprg', 'cscopeprg', +'viminfo' and 'runtimepath' can no longer be set from a modeline, for better +security. + +Removed '_' from the 'breakat' default: It's commonly used in keywords. + +The default for 'mousehide' is on, because this works well for most people. + +The Amiga binary is now always compiled with "big" features. The "big" binary +archive no longer exists. + +The items "[RO]", "[+]", "[help]", "[Preview]" and "[filetype]" in +'statusline' no longer have a leading space. + +Non-Unix systems: When expanding wildcards for the Vim arguments, don't use +'suffixes'. It now works as if the shell had expanded the arguments. + +The 'lisp', 'smartindent' and 'cindent' options are not switched off when +'paste' is set. The auto-indenting is disabled when 'paste' is set, but +manual indenting with "=" still works. + +When formatting with "=" uses 'cindent' or 'indentexpr' indenting, and there +is no change in indent, this is not counted as a change ('modified' isn't set +and there is nothing to undo). + +Report 'modified' as changed when 'fileencoding' or 'fileformat' was set. +Thus it reflects the possibility to abandon the buffer without losing changes. + +The "Save As" menu entry now edits the saved file. Most people expect it to +work like this. + +A buffer for a directory is no longer added to the Buffers menu. + +Renamed <Return> to <Enter>, since that's what it's called on most keyboards. +Thus it's now the hit-enter prompt instead of the hit-return prompt. +Can map <Enter> just like <CR> or <Return>. + +The default for the 'viminfo' option is now '20,"50,h when 'compatible' isn't +set. Most people will want to use it, including beginners, but it required +setting the option, which isn't that easy. + +After using ":colder" the newer error lists are overwritten. This makes it +possible to use ":grep" to browse in a tree-like way. Must use ":cnewer 99" +to get the old behavior. + +The patterns in 'errorformat' would sometimes ignore case (MS-Windows) and +sometimes not (Unix). Now case is always ignored. Add "\C" to the pattern to +match case. + +The 16 bit MS-DOS version is now compiled without the +listcmds feature +(buffer list manipulation commands). They are not often needed and this +executable needs to be smaller. + +'sessionoptions' now includes "curdir" by default. This means that restoring +a session will result in the current directory being restored, instead of +going to the directory where the session file is located. + +A session deleted all buffers, deleting all marks. Now keep the buffer list, +it shouldn't hurt for some existing buffers to remain present. +When the argument list is empty ":argdel *" caused an error message. + +No longer put the search pattern from a tag jump in the history. + +Use "SpecialKey" highlighting for unprintable characters instead of "NonText". +The idea is that unprintable text or any text that's displayed differently +from the characters in the file is using "SpecialKey", and "NonText" is used +for text that doesn't really exist in the file. + +Motif now uses the system default colors for the menu and scrollbar. Used to +be grey. It's still possible to set the colors with ":highlight" commands and +resources. + +Formatting text with "gq" breaks a paragraph at a non-empty blank line. +Previously the line would be removed, which wasn't very useful. + +":normal" does no longer hang when the argument ends in half a command. +Previously Vim would wait for more characters to be typed, without updating +the screen. Now it pretends an <Esc> was typed. + +Bitmaps for the toolbar are no longer searched for in "$VIM/bitmaps" but in +the "bitmaps" directories in 'runtimepath'. + +Now use the Cmdline-mode menus for the hit-enter prompt instead of the Normal +mode menus. This generally works better and allows using the "Copy" menu to +produce CTRL-Y to copy the modeless selection. + +Moved the font selection from the Window to the Edit menu, together with the +other settings. + +The default values for 'isfname' include more characters to make "gf" work +better. + +Changed the license for the documentation to the Open Publication License. +This seemed fair, considering the inclusion of parts of the Vim book, which is +also published under the OPL. The downside is that we can't force someone who +would sell copies of the manual to contribute to Uganda. + +After "ayy don't let ""yy or :let @" = val overwrite the "a register. +Use the unnamed register instead. + +MSDOS: A pattern "*.*" previously also matched a file name without a dot. +This was inconsistent with other versions. + +In Insert mode, CTRL-O CTRL-\ CTRL-N {cmd} remains in Normal mode. Previously +it would go back to Insert mode, thus confusing the meaning of CTRL-\ CTRL-N, +which is supposed to take us to Normal mode (especially in ":amenu"). + +Allow using ":" commands after an operator. Could be used to implement a new +movement command. Thus it no longer aborts a pending operator. + +For the Amiga the "-d {device}" argument was possible. When compiled with the +diff feature, this no longer works. Use "-dev {device}" instead. |-dev| + +Made the default mappings for <S-Insert> in Insert mode insert the text +literally, avoids that special characters like BS cause side effects. + +Using ":confirm" applied to the rest of the line. Now it applies only to the +command right after it. Thus ":confirm if x | edit | endif" no longer works, +use ":if x | confirm edit | endif". This was the original intention, that it +worked differently was a bug. + +============================================================================== +NEW FEATURES *new-6* + +Folding *new-folding* +------- + +Vim can now display a buffer with text folded. This allows overviewing the +structure of a file quickly. It is also possible to yank, delete and put +folded text, for example to move a function to another position. + +There is a whole bunch of new commands and options related to folding. +See |folding|. + + +Vertically split windows *new-vertsplit* +------------------------ + +Windows can also be split vertically. This makes it possible to have windows +side by side. One nice use for this is to compare two similar files (see +|new-diff-mode|). The 'scrollbind' option can be used to synchronize +scrolling. + +A vertical split can be created with the commands: + :vsplit or CTRL-W v or CTRL-W CTRL-V |:vsplit| + :vnew |:vnew| + :vertical {cmd} |:vertical| +The last one is a modifier, which has a meaning for any command that splits a +window. For example: > + :vertical stag main +Will vertically split the window and jump to the tag "main" in the new window. + +Moving from window to window horizontally can be done with the |CTRL-W_h| and +|CTRL-W_l| commands. The |CTRL-W_k| and |CTRL-W_j| commands have been changed +to jump to the window above or below the cursor position. + +The vertical and horizontal splits can be mixed as you like. Resizing windows +is easy when using the mouse, just position the pointer on a status line or +vertical separator and drag it. In the GUI a special mouse pointer shape +indicates where you can drag a status or separator line. + +To resize vertically split windows use the |CTRL-W_<| and |CTRL-W_>| commands. +To make a window the maximum width use the CTRL-W | command |CTRL-W_bar|. + +To force a new window to use the full width or height of the Vim window, +these two modifiers are available: + :topleft {cmd} New window appears at the top with full + width or at the left with full height. + :botright {cmd} New window appears at the bottom with full + width or at the right with full height. +This can be combined with ":vertical" to force a vertical split: > + :vert bot dsplit DEBUG +This will open a window at the far right, occupying the full height of the Vim +window, with the cursor on the first definition of "DEBUG". +The help window is opened at the top, like ":topleft" was used, if the current +window is fewer than 80 characters wide. + +A few options can be used to set the preferences for vertically split windows. +They work similar to their existing horizontal equivalents: + horizontal vertical ~ + 'splitbelow' 'splitright' + 'winheight' 'winwidth' + 'winminheight' 'winminwidth' +It's possible to set 'winminwidth' to zero, so that temporarily unused windows +hardly take up space without closing them. + +The new 'eadirection' option tells where 'equalalways' applies: + :set eadirection=both both directions + :set eadirection=ver equalize window heights + :set eadirection=hor equalize windows widths +This can be used to avoid changing window sizes when you want to keep them. + +Since windows can become quite narrow with vertical splits, text lines will +often not fit. The 'sidescrolloff' has been added to keep some context left +and right of the cursor. The 'listchars' option has been extended with the +"precedes" item, to show a "<" for example, when there is text left off the +screen. (Utz-Uwe Haus) + +"-O" command line argument: Like "-o" but split windows vertically. (Scott +Urban) + +Added commands to move the current window to the very top (CTRL-W K), bottom +(CTRL-W J), left (CTRL-W H) and right (CTRL-W L). In the new position the +window uses the full width/height of the screen. + +When there is not enough room in the status line for both the file name and +the ruler, use up to half the width for the ruler. Useful for narrow windows. + + +Diff mode *new-diff-mode* +--------- + +In diff mode Vim shows the differences between two, three or four files. +Folding is used to hide the parts of the file that are equal. +Highlighting is used to show deleted and changed lines. +See |diff-mode|. + +An easy way to start in diff mode is to start Vim as "vimdiff file1 file2". +Added the vimdiff manpage. + +In a running Vim the |:diffsplit| command starts diff mode for the current +file and another file. The |:diffpatch| command starts diff mode using the +current file and a patch file. The |:diffthis| command starts diff mode for +the current window. + +Differences can be removed with the |:diffget| and |:diffput| commands. + +- The 'diff' option switches diff mode on in a window. +- The |:diffupdate| command refreshes the diffs. +- The 'diffopt' option changes how diffs are displayed. +- The 'diffexpr' option can be set how a diff is to be created. +- The 'patchexpr' option can be set how patch is applied to a file. +- Added the "diff" folding method. When opening a window for diff-mode, set + 'foldlevel' to zero and 'foldenable' on, to close the folds. +- Added the DiffAdd, DiffChange, DiffDelete and DiffText highlight groups to + specify the highlighting for differences. The defaults are ugly... +- Unix: make a vimdiff symbolic link for "make install". +- Removed the now obsolete "vimdiff.vim" script from the distribution. +- Added the "[c" and "]c" commands to move to the next/previous change in diff + mode. + + +Easy Vim: click-and-type *new-evim* +------------------------ + +eVim stands for "Easy Vim". This is a separate program, but can also be +started as "vim -y". + +This starts Vim with 'insertmode' set to allow click-and-type editing. The +$VIMRUNTIME/evim.vim script is used to add mappings and set options to be able +to do most things like Notepad. This is only for people who can't stand two +modes. + +eView does the same but in readonly mode. + +In the GUI a CTRL-C now only interrupts when busy with something, not when +waiting for a character. Allows using CTRL-C to copy text to the clipboard. + + +User manual *new-user-manual* +----------- + +The user manual has been added. It is organised around editing tasks. It +reads like a book, from start to end. It should allow beginners to start +learning Vim. It helps everybody to learn using the most useful Vim features. +It is much easier to read than the reference manual, but omits details. See +|user-manual|. + +The user manual includes parts of the Vim book by Steve Oualline |frombook|. +It is published under the OPL |manual-copyright|. + +When syntax highlighting is not enabled, the characters in the help file which +mark examples ('>' and '<') and header lines ('~') are replaced with a space. + +When closing the help window, the window layout is restored from before +opening it, if the window layout didn't change since then. +When opening the help window, put it at the top of the Vim window if the +current window is fewer than 80 characters and not full width. + + +Flexible indenting *new-indent-flex* +------------------ + +Automatic indenting is now possible for any language. It works with a Vim +script, which makes it very flexible to compute the indent. + +The ":filetype indent on" command enables using the provided indent scripts. +This is explained in the user manual: |30.3|. + +The 'indentexpr' option is evaluated to get the indent for a line. The +'indentkeys' option tells when to trigger re-indenting. Normally these +options are set from an indent script. Like Syntax files, indent scripts will +be created and maintained by many people. + + +Extended search patterns *new-searchpat* +------------------------ + +Added the possibility to match more than one line with a pattern. (partly by +Loic Grenie) +New items in a search pattern for multi-line matches: +\n match end-of-line, also in [] +\_[] match characters in range and end-of-line +\_x match character class and end-of-line +\_. match any character or end-of-line +\_^ match start-of-line, can be used anywhere in the regexp +\_$ match end-of-line, can be used anywhere in the regexp + +Various other new items in search patterns: +\c ignore case for the whole pattern +\C match case for the whole pattern +\m magic on for the following +\M magic off for the following +\v make following characters "very magic" +\V make following characters "very nomagic" + +\@! don't match atom before this. + Example: "foo\(bar\)\@!" matches "foo " but not "foobar". +\@= match atom, resulting in zero-width match + Example: "foo\(bar\)\@=" matches "foo" in "foobar". +\@<! don't match preceding atom before the current position +\@<= match preceding atom before the current position +\@> match preceding atom as a subexpression + +\& match only when branch before and after it match + +\%[] optionally match a list of atoms; "end\%[if]" matches "end", + "endi" and "endif" +\%(\) like \(\), but without creating a back-reference; there can be + any number of these, overcomes the limit of nine \( \) pairs +\%^ match start-of-file (Chase Tingley) +\%$ match end-of-file (Chase Tingley) +\%# Match with the cursor position. (Chase Tingley) +\? Just like "\=" but can't be used in a "?" command. + +\%23l match in line 23 +\%<23l match before line 23 +\%>23l match after line 23 +\%23c, \%<23c, \%>23c match in/before/after column 23 +\%23v, \%<23v, \%>23v match in/before/after virtual column 23 + + +For syntax items: +\z(...\) external reference match set (in region start pattern) +\z1 - \z9 external reference match use (in region skip or end pattern) + (Scott Bigham) + +\zs use position as start of match +\ze use position as end of match + +Removed limit of matching only up to 32767 times with *, \+, etc. + +Added support to match multi-byte characters. (partly by Muraoka Taro) +Made "\<" and "\>" work for UTF-8. (Muraoka Taro) + + +UTF-8 support *new-utf-8* +------------- + +Vim can now edit files in UTF-8 encoding. Up to 31 bit characters can be +used, but only 16 bit characters are displayed. Up to two combining +characters are supported, they overprint the preceding character. +Double-wide characters are also supported. See |UTF-8|. + +UCS-2, UCS-4 and UTF-16 encodings are supported too, they are converted to +UTF-8 internally. There is also support for editing Unicode files in a Latin1 +environment. Other encodings are converted with iconv() or an external +converter specified with 'charconvert'. + +Many new items for Multi-byte support: +- Added 'encoding' option: specifies character encoding used inside Vim. It + can be any 8-bit encoding, some double-byte encodings or Unicode. + It is initialized from the environment when a supported value is found. +- Added 'fileencoding' and 'fileencodings': specify character coding in a + file, similar to 'fileformat' and 'fileformats'. + When 'encoding' is "utf-8" and 'fileencodings' is "utf-8,latin1" this will + automatically switch to latin1 if a file does not contain valid UTF-8. +- Added 'bomb' option and detection of a BOM at the start of a file. Can be + used with "ucs-bom" in 'fileencodings' to automatically detect a Unicode + file if it starts with a BOM. Especially useful on MS-Windows (NT and + 2000), which uses ucs-2le files with a BOM (e.g., when exporting the + registry). +- Added the 'termencoding' option: Specifies the encoding used for the + terminal. Useful to put Vim in utf-8 mode while in a non-Unicode locale: > + :let &termencoding = &encoding + :set encoding=utf-8 +- When 'viminfo' contains the 'c' flag, the viminfo file is converted from the + 'encoding' it was written with to the current 'encoding'. +- Added ":scriptencoding" command: convert lines in a sourced script to + 'encoding'. Useful for menu files. +- Added 'guifontwide' to specify a font for double-wide characters. +- Added Korean support for character class detection. Also fix cls() in + search.c. (Chong-Dae Park) +- Win32: Typing multi-byte characters without IME. (Alexander Smishlajev) +- Win32 with Mingw: compile with iconv library. (Ron Aaron) +- Win32 with MSVC: dynamically load iconv.dll library. (Muraoka Taro) +- Make it possible to build a version with multi-byte and iconv support with + Borland 5.5. (Yasuhiro Matsumoto) +- Added 'delcombine' option: Delete combining character separately. (Ron + Aaron) +- The "xfontset" feature isn't required for "xim". These are now two + independent features. +- XIM: enable XIM when typing a language character (Insert mode, Search + pattern, "f" or "r" command). Disable XIM when typing a Normal mode + command. +- When the XIM is active, show "XIM" in the 'showmode' message. (Nam SungHyun) +- Support "CursorIM" for XIM. (Nam SungHyun) +- Added 'm' flag to 'formatoptions': When wrapping words, allow splitting at + each multibyte character, not only at a space. +- Made ":syntax keyword" work with multi-byte characters. +- Added support for Unicode upper/lowercase flipping and comparing. (based on + patch by Raphael Finkel) + Let "~" on multi-byte characters that have a third case ("title case") + switch between the three cases. (Raphael Finkel) + +Allow defining digraphs for multi-byte characters. +Added RFC1345 digraphs for Unicode. +Most Normal mode commands that accept a character argument, like "r", "t" and +"f" now accept a digraph. The 'D' flag in 'cpoptions' disables this to remain +Vi compatible. + +Added Language mapping and 'keymap' to be able to type multi-byte characters: +- Added the ":lmap" command and friends: Define mappings that are used when + typing characters in the language of the text. Also for "r", "t", etc. In + Insert and Command-line mode CTRL-^ switches the use of the mappings on/off. + CTRL-^ also toggles the use of an input method when no language mappings are + present. Allows switching the IM back on halfway typing. +- "<char-123>" argument to ":map", allows to specify the decimal, octal or + hexadecimal value of a character. +- Implemented the 'keymap' option: Load a keymap file. Uses ":lnoremap" to + define mappings for the keymap. The new ":loadkeymap" command is used in + the keymap file. +- Added 'k' flag in 'statusline': Value of "b:keymap_name" or 'keymap' when + it's being used. Uses "<lang>" when no keymap is loaded and ":lmap"s are + active. Show this text in the default statusline too. +- Added the 'iminsert' and 'imsearch' options: Specify use of langmap mappings + and Input Method with an option. (Muraoka Taro) + Added 'imcmdline' option: When set the input method is always enabled when + starting to edit a command line. Useful for a XIM that uses dead keys to + type accented characters. + Added 'imactivatekey' option to better control XIM. (Muraoka Taro) +- When typing a mapping that's not finished yet, display the last character + under the cursor in Insert mode and Command-line mode. Looks good for dead + characters. +- Made the 'langmap' option recognize multi-byte characters. But mapping only + works for 8-bit characters. Helps when using UTF-8. +- Use a different cursor for when ":lmap" mappings are active. Can specify + two highlight groups for an item in 'guicursor'. By default "lCursor" and + "Cursor" are equal, the user must set a color he likes. + Use the cursor color for hangul input as well. (Sung-Hyun Nam) +- Show "(lang)" for 'showmode' when language mapping is enabled. +- UTF-8: Made "r" work with a ":lmap" that includes a composing character. + Also works for "f", which now works to find a character that includes a + composing character. + +Other multi-byte character additions: +- Support double-byte single-width characters for euc-jp: Characters starting + with 0x8E. Added ScreenLines2[] to store the second byte. + + +Multi-language support *new-multi-lang* +---------------------- + +The messages used in Vim can be translated. Several translations are +available. This uses the gettext mechanism. It allows adding a translation +without recompiling Vim. |multi-lang| (partly by Marcin Dalecki) + +The translation files are in the src/po directory. The src/po/README.txt file +explains a few things about doing a translation. + +Menu translations are available as well. This uses the new |:menutranslate| +command. The translations are found in the runtime directory "lang". This +allows a user to add a translation. + +Added |:language| command to set the language (locale) for messages, time and +character type. This allows switching languages in Vim without changing the +locale outside of Vim. + +Made it possible to have vimtutor use different languages. (Eduardo Fernandez) +Spanish (Eduardo Fernandez), Italian (Antonio Colombo), Japanese (Yasuhiro +Matsumoto) and French (Adrien Beau) translations are included. +Added "vimtutor.bat": script to start Vim on a copy of the tutor file for +MS-Windows. (Dan Sharp) + +- Added v:lang variable to be able to get current language setting. + (Marcin Dalecki) Also v:lc_time and v:ctype. +- Make it possible to translate the dialogs used by the menus. Uses global + "menutrans_" variables. ":menutrans clear" deletes them. +- removed "broken locale" (Marcin Dalecki). +- Don't use color names in icons, use RGB values. The names could be + translated. +- Win32: Added global IME support (Muraoka) +- Win32: Added dynamic loading of IME support. +- ":messages" prints a message about who maintains the messages or the + translations. Useful to find out where to make a remark about a wrong + translation. +- --disable-nls argument for configure: Disable use of gettext(). (Sung-Hyun + Nam) +- Added NLS support for Win32 with the MingW compiler. (Eduardo Fernandez) +- When available, call bind_textdomain_codeset() to have gettext() translate + messages to 'encoding'. This requires GNU gettext 0.10.36 or later. +- Added gettext support for Win32. This means messages will be translated + when the locale is set and libintl.dll can be found. (Muraoka Taro) + Also made it work with MingW compiler. (Eduardo Fernandez) + Detect the language and set $LANG to get the appropriate translated messages + (if supported). Also use $LANG to select a language, v:lang is a very + different kind of name. +- Made gvimext.dll use translated messages, if possible. (Yasuhiro Matsumoto) + + +Plugin support *new-plugins* +-------------- + +To make it really easy to load a Vim script when starting Vim, the "plugin" +runtime directory can be used. All "*.vim" files in it will be automatically +loaded. For Unix, the directory "~/.vim/plugin" is used by default. The +'runtimepath' option can be set to look in other directories for plugins. +|load-plugins| |add-plugin| + +The |:runtime| command has been added to load one or more files in +'runtimepath'. + +Standard plugins: +netrw.vim - Edit files over a network |new-network-files| +gzip.vim - Edit compressed files +explorer.vim - Browse directories |new-file-browser| + +Added support for local help files. |add-local-help|. +When searching for help tags, all "doc/tags" files in 'runtimepath' are used. +Added the ":helptags" command: Generate a tags file for a help directory. +The first line of each help file is automagically added to the "LOCAL +ADDITIONS" section in doc/help.txt. + +Added the <unique> argument to ":map": only add a mapping when it wasn't +defined before. + +When displaying an option value with 'verbose' set will give a message about +where the option was last set. Very useful to find out which script did set +the value. + +The new |:scriptnames| command displays a list of all scripts that have been +sourced. + +GUI: For Athena, Motif and GTK look for a toolbar bitmap in the "bitmaps" +directories in 'runtimepath'. Allows adding your own bitmaps. + + +Filetype plugins *new-filetype-plugins* +----------------- + +A new group of files has been added to do settings for specific file types. +These can be options and mappings which are specifically used for one value of +'filetype'. + +The files are located in "$VIMRUNTIME/ftplugin". The 'runtimepath' option +makes it possible to use several sets of plugins: Your own, system-wide, +included in the Vim distribution, etc. + +To be able to make this work, several features were added: +- Added the "s:" variables, local to a script. Avoids name conflicts with + global variables. They can be used in the script and in functions, + autocommands and user commands defined in the script. They are kept between + invocations of the same script. |s:var| +- Added the global value for local options. This value is used when opening + a new buffer or editing another file. The option value specified in a + modeline or filetype setting is not carried over to another buffer. + ":set" sets both the local and the global value. + ":setlocal" sets the local option value only. + ":setglobal" sets or displays the global value for a local option. + ":setlocal name<" sets a local option to its global value. +- Added the buffer-local value for some global options: 'equalprg', 'makeprg', + 'errorformat', 'grepprg', 'path', 'dictionary', 'thesaurus', 'tags', + 'include' and 'define'. This allows setting a local value for these global + options, without making it incompatible. +- Added mappings and abbreviations local to a buffer: ":map <buffer>". +- In a mapping "<Leader>" can be used to get the value of the "mapleader" + variable. This simplifies mappings that use "mapleader". "<Leader>" + defaults to "\". "<LocalLeader>" does the same with "maplocalleader". This + is to be used for mappings local to a buffer. +- Added <SID> Script ID to define functions and mappings local to a script. +- Added <script> argument to ":noremap" and ":noremenu": Only remap + script-local mappings. Avoids that mappings from other scripts get in the + way, but does allow using mappings defined in the script. +- User commands can be local to a buffer: ":command -buffer". + +The new ":setfiletype" command is used in the filetype detection autocommands, +to avoid that 'filetype' is set twice. + + +File browser *new-file-browser* +------------ + +When editing a directory, the explorer plugin will list the files in the +directory. Pressing <Enter> on a file name edits that file. Pressing <Enter> +on a directory moves the browser to that directory. + +There are several other possibilities, such as opening a file in the preview +window, renaming files and deleting files. + +See |file-explorer|. + + +Editing files over a network *new-network-files* +---------------------------- + +Files starting with scp://, rcp://, ftp:// and http:// are recognized as +remote files. An attempt is made to access these files with the indicated +method. For http:// only reading is possible, for the others writing is also +supported. Uses the netrw.vim script as a standard "plugin". |netrw| + +Made "gf" work on a URL. It no longer assumes the file is local on the +computer (mostly didn't work anyway, because the full path was required). +Adjusted test2 for this. + +Allow using a URL in 'path'. Makes ":find index.html" work. + +GTK: Allow dropping a http:// and ftp:// URL on Vim. The netrw plugin takes +care of downloading the file. (MiKael Berthe) + + +Window for command-line editing *new-cmdwin* +------------------------------- + +The Command-line window can be used to edit a command-line with Normal and +Insert mode commands. When it is opened it contains the history. This allows +copying parts of previous command lines. |cmdwin| + +The command-line window can be opened from the command-line with the key +specified by the 'cedit' option (like Nvi). It can also be opened directly +from Normal mode with "q:", "q/" and "q?". + +The 'cmdwinheight' is used to specify the initial height of the window. + +In Insert mode CTRL-X CTRL-V can be used to complete an Ex command line, like +it's done on the command-line. This is also useful for writing Vim scripts! + +Additionally, there is "improved Ex mode". Entered when Vim is started as +"exim" or "vim -E", and with the "gQ" command. Works like repeated use of +":", with full command-line editing and completion. (Ulf Carlsson) + + +Debugging mode *new-debug-mode* +-------------- + +In debugging mode sourced scripts and user functions can be executed line by +line. There are commands to step over a command or step into it. |debug-mode| + +Breakpoints can be set to run until a certain line in a script or user +function is executed. |:breakadd| + +Debugging can be started with ":debug {cmd}" to debug what happens when a +command executes. The |-D| argument can be used to debug while starting up. + + +Cursor in virtual position *new-virtedit* +-------------------------- + +Added the 'virtualedit' option: Allow positioning the cursor where there is no +actual character in Insert mode, Visual mode or always. (Matthias Kramm) +This is especially useful in Visual-block mode. It allows positioning a +corner of the area where there is no text character. (Many improvements by +Chase Tingley) + + +Debugger interface *new-debug-itf* +------------------ + +This was originally made to work with Sun Visual Workshop. (Gordon Prieur) +See |debugger.txt|, |sign.txt| and |workshop.txt|. + +Added the ":sign" command to define and place signs. They can be displayed +with two ASCII characters or an icon. The line after it can be highlighted. +Useful to display breakpoints and the current PC position. + +Added the |:wsverb| command to execute debugger commands. + +Added balloon stuff: 'balloondelay' and 'ballooneval' options. + +Added "icon=" argument for ":menu". Allows defining a specific icon for a +ToolBar item. + + +Communication between Vims *new-vim-server* +-------------------------- + +Added communication between two Vims. Makes it possible to send commands from +one Vim to another. Works for X-Windows and MS-Windows |clientserver|. + +Use "--remote" to have files be edited in an already running Vim. +Use "--remote-wait" to do the same and wait for the editing to finish. +Use "--remote-send" to send commands from one Vim to another. +Use "--remote-expr" to have an expression evaluated in another Vim. +Use "--serverlist" to list the currently available Vim servers. (X only) +There are also functions to communicate between the server and the client. +|remote_send()| |remote_expr()| + +(X-windows version implemented by Flemming Madsen, MS-Windows version by Paul +Moore) + +Added the command server name to the window title, so you can see which server +name belongs to which Vim. + +Removed the OleVim directory and SendToVim.exe and EditWithVim.exe from the +distribution. Can now use "gvim --remote" and "gvim --remote-send", which is +portable. + +GTK+: Support running Vim inside another window. Uses the --socketid argument +(Neil Bird) + + +Buffer type options *new-buftype* +------------------- + +The 'buftype' and 'bufhidden' options have been added. They can be set to +have different kinds of buffers. For example: +- 'buftype' = "quickfix": buffer with error list +- 'buftype' = "nofile" and 'bufhidden' = "delete": scratch buffer that will be + deleted as soon as there is no window displaying it. + +'bufhidden' can be used to overrule the 'hidden' option for one buffer. + +In combination with 'buflisted' and 'swapfile' this offers the possibility to +use various kinds of special buffers. See |special-buffers|. + + +Printing *new-printing* +-------- + +Included first implementation of the ":hardcopy" command for printing +to paper. For MS-Windows any installed printer can be used. For other +systems a PostScript file is generated, which can be printed with the +'printexpr' option. +(MS-Windows part by Vince Negri, Vipin Aravind, PostScript by Vince Negri and +Mike Williams) + +Made ":hardcopy" work with multi-byte characters. (Muraoka Taro, Yasuhiro +Matsumoto) + +Added options to tune the way printing works: (Vince Negri) +- 'printoptions' defines various things. +- 'printheader' specifies the header format. Added "N" field to 'statusline' + for the page number. +- 'printfont' specifies the font name and attributes. +- 'printdevice' defines the default printer for ":hardcopy!". + + +Ports *ports-6* +----- + +Port to OS/390 Unix (Ralf Schandl) +- A lot of changes to handle EBCDIC encoding. +- Changed Ctrl('x') to Ctrl_x define. + +Included jsbmouse support. (Darren Garth) +Support for dec mouse in Unix. (Steve Wall) + +Port to 16-bit MS Windows (Windows 3.1x) (Vince Negri) + +Port to QNX. Supports the Photon GUI, mouse, etc. (Julian Kinraid) + +Allow cross-compiling the Win32 version with Make_ming.mak. (Ron Aaron) +Added Python support for compiling with Mingw. (Ron Aaron) + +Dos 32 bit: Added support the Windows clipboard. (David Kotchan) + +Win32: Dynamically load Perl and Python. Allows compiling Vim with these +interfaces and will try to find the DLLs at runtime. (Muraoka Taro) + +Compiling the Win32 GUI with Cygwin. Also compile vimrun, dosinst and +uninstall. (Gerfried) + +Mac: Make Vim compile with the free MPW compiler supplied by Apple. And +updates for CodeWarrior. (Axel Kielhorn) + +Added typecasts and ifdefs as a start to make Vim work on Win64 (George +Reilly) + + +Quickfix extended *quickfix-6* +----------------- + +Added the "error window". It contains all the errors of the current error +list. Pressing <Enter> in a line makes Vim jump to that line (in another +window). This makes it easy to navigate through the error list. +|quickfix-window|. + +- |:copen| opens the quickfix window. +- |:cclose| closes the quickfix window. +- |:cwindow| takes care that there is a quickfix window only when there are + recognized errors. (Dan Sharp) + +- Quickfix also knows "info", next to "warning" and "error" types. "%I" can be + used for the start of a multi-line informational message. (Tony Leneis) +- The "%p" argument can be used in 'errorformat' to get the column number from + a line where "^" points to the column. (Stefan Roemer) +- When using "%f" in 'errorformat' on a DOS/Windows system, also include "c:" + in the filename, even when using "%f:". + + +Operator modifiers *new-operator-mod* +------------------ + +Insert "v", "V" or CTRL-V between an operator and a motion command to force +the operator to work characterwise, linewise or blockwise. |o_v| + + +Search Path *new-search-path* +----------- + +Vim can search in a directory tree not only in downwards but also upwards. +Works for the 'path', 'cdpath' and 'tags' options. (Ralf Schandl) + +Also use "**" for 'tags' option. (Ralf Schandl) + +Added 'includeexpr', can be used to modify file name found by 'include' +option. +Also use 'includeexpr' for "gf" and "<cfile>" when the file can't be found +without modification. Useful for doing "gf" on the name after an include or +import statement. + +Added the 'cdpath' option: Locations to find a ":cd" argument. (Raf) + +Added the 'suffixesadd' option: Suffixes to be added to a file name when +searching for a file for the "gf", "[I", etc. commands. + + +Writing files improved *new-file-writing* +---------------------- + +Added the 'backupcopy' option: Select whether a file is to be copied or +renamed to make a backup file. Useful on Unix to speed up writing an ordinary +file. Useful on other systems to preserve file attributes and when editing a +file on a Unix filesystem. + +Added the 'autowriteall' option. Works like 'autowrite' but for more +commands. + +Added the 'backupskip' option: A list of file patterns to skip making a backup +file when it matches. The default for Unix includes "/tmp/*", this makes +"crontab -e" work. + +Added support for Access Control Lists (ACL) for FreeBSD and Win32. The ACL +is copied from the original file to the new file (or the backup if it's +copied). +ACL is also supported for AIX, Solaris and generic POSIX. (Tomas Ogren) +And on SGI. + + +Argument list *new-argument-list* +------------- + +The support for the argument list has been extended. It can now be +manipulated to contain the files you want it to contain. + +The argument list can now be local to a window. It is created with the +|:arglocal| command. The |:argglobal| command can be used to go back to the +global argument list. + +The |:argdo| command executes a command on all files in the argument list. + +File names can be added to the argument list with |:argadd|. File names can +be removed with |:argdelete|. + +"##" can be used like "#", it is replaced by all the names in the argument +list concatenated. Useful for ":grep foo ##". + +The |:argedit| adds a file to the argument list and edits it. Like ":argadd" +and then ":edit". + + +Restore a View *new-View* +-------------- + +The ":mkview" command writes a Vim script with the settings and mappings for +one window. When the created file is sourced, the view of the window is +restored. It's like ":mksession" for one window. +The View also contains the local argument list and manually created, opened +and closed folds. + +Added the ":loadview" command and the 'viewdir' option: Allows for saving and +restoring views of a file with simple commands. ":mkview 1" saves view 1 for +the current file, ":loadview 1" loads it again. Also allows quickly switching +between two views on one file. And saving and restoring manual folds and the +folding state. + +Added 'viewoptions' to specify how ":mkview" works. + +":mksession" now also works fine with vertical splits. It has been further +improved and restores the view of each window. It also works properly with +preview and quickfix windows. + +'sessionoptions' is used for ":mkview" as well. +Added "curdir" and "sesdir" to 'sessionoptions'. Allows selection of what +the current directory will be restored to. + +The session file now also contains the argument list(s). + + +Color schemes *new-color-schemes* +------------- + +Support for loading a color scheme. Added the ":colorscheme" command. +Automatically add menu entries for available schemes. +Should now properly reset the colors when 'background' or 't_Co' is changed. +":highlight clear" sets the default colors again. +":syntax reset" sets the syntax highlight colors back to the defaults. +For ":set bg&" guess the value. This allows a color scheme to switch back to +the default colors. +When syntax highlighting is switched on and a color scheme was defined, reload +the color scheme to define the colors. + + +Various new items *new-items-6* +----------------- + +Normal mode commands: ~ + +"gi" Jump to the ^ mark and start Insert mode. Also works when the + mark is just after the line. |gi| + +"g'm" and "g`m" + Jump to a mark without changing the jumplist. Now you can use + g`" to jump to the last known position in a file without side + effects. Also useful in mappings. + +[', [`, ]' and ]` + move the cursor to the next/previous lowercase mark. + +g_ Go to last non-blank in line. (Steve Wall) + + +Options: ~ + +'autoread' When detected that a file changed outside of Vim, + automatically read a buffer again when it's not changed. + It has a global and a local value. Use ":setlocal autoread<" + to go back to using the global value for 'autoread'. + +'debug' When set to "msg" it will print error messages that would + otherwise be omitted. Useful for debugging 'indentexpr' and + 'foldexpr'. + +'lispwords' List of words used for lisp indenting. It was previously hard + coded. Added a number of Lisp names to the default. + +'fold...' Many new options for folding. + +'modifiable' When off, it is impossible to make changes to a buffer. + The %m and %M items in 'statusline' show a '-'. + +'previewwindow' Set in the preview window. Used in a session file to mark a + window as the preview window. + +'printfont' +'printexpr' +'printheader' +'printdevice' +'printoptions' for ":hardcopy". + +'buflisted' Makes a buffer appear in the buffer list or not. + +Use "vim{version}:" for modelines, only to be executed when the version is +>= {version}. Also "vim>{version}", "vim<{version}" and "vim={version}". + + +Ex commands: ~ + +:sav[eas][!] {file} + Works like ":w file" and ":e #", but without loading the file + again and avoiding other side effects. |:saveas| + +:silent[!] {cmd} + Execute a command silently. Also don't use a delay that would + come after the message. And don't do 'showmatch'. + RISCOS: Removed that "!~cmd" didn't output anything, and + didn't wait for <Enter> afterwards. Can use ":silent !cmd" + now. +:menu <silent> Add a menu that won't echo Ex commands. +:map <silent> Add a mapping that won't echo Ex commands. + +:checktime Check for changed buffers. + +:verbose {cmd} Set 'verbose' for one command. + +:echomsg {expr} +:echoerr {expr} Like ":echo" but store the message in the history. (Mark + Waggoner) + +:grepadd Works just like ":grep" but adds to the current error list + instead of defining a new list. |:grepadd| + +:finish Finish sourcing a file. Can be used to skip the rest of a Vim + script. |:finish| + +:leftabove +:aboveleft Split left/above current window. + +:rightbelow +:belowright Split right/below current window. + +:first, :bfirst, :ptfirst, etc. + Alias for ":rewind". It's more logical compared to ":last". + +:enew Edit a new, unnamed buffer. This is needed, because ":edit" + re-edits the same file. (Wall) + +:quitall Same as ":qall". + +:match Define match highlighting local to a window. Allows + highlighting an item in the current window without interfering + with syntax highlighting. + +:menu enable +:menu disable Commands to enable/disable menu entries without removing them. + (Monish Shah) + +:windo Execute a command in all windows. +:bufdo Execute a command in all buffers. + +:wincmd Window (CTRL-W) command. Useful when a Normal mode command + can't be used (e.g., for a CursorHold autocommand). See + |CursorHold-example| for a nice application with it. + +:lcd and :lchdir + Set local directory for a window. (Benjie Chen) + +:hide {command} + Execute {command} with 'hidden' set. + +:emenu in Visual mode to execute a ":vmenu" entry. + +:popup Pop up a popup menu. + +:redraw Redraw the screen even when busy with a script or function. + +:hardcopy Print to paper. + +:compiler Load a Vim script to do settings for a specific compiler. + +:z# List numbered lines. (Bohdan Vlasyuk) + + +New marks: ~ + +'( and ') Begin or end of current sentence. Useful in Ex commands. +'{ and '} Begin or end of current paragraph. Useful in Ex commands. +'. Position of the last change in the current buffer. +'^ Position where Insert mode was stopped. + +Store the ^ and . marks in the viminfo file. Makes it possible to jump to the +last insert position or changed text. + + +New functions: ~ +argidx() Current index in argument list. +buflisted() Checks if the buffer exists and has 'buflisted' set. +cindent() Get indent according to 'cindent'. +eventhandler() Returns 1 when inside an event handler and interactive + commands can't be used. +executable() Checks if a program or batch script can be executed. +filewritable() Checks if a file can be written. (Ron Aaron) +foldclosed() Find out if there is a closed fold. (Johannes Zellner). +foldcloseend() Find the end of a closed fold. +foldlevel() Find out the foldlevel. (Johannes Zellner) +foreground() Move the GUI window to the foreground. +getchar() Get one character from the user. Can be used to define a + mapping that takes an argument. +getcharmod() Get last used key modifier. +getbufvar() gets the value of an option or local variable in a buffer (Ron + Aaron) +getfsize() Return the size of a file. +getwinvar() gets the value of an option or local variable in a window (Ron + Aaron) +globpath() Find matching files in a list of directories. +hasmapto() Detect if a mapping to a string is already present. +iconv() Convert a string from one encoding to another. +indent() gets the indent of a line (Ron Aaron) +inputdialog() Like input() but use a GUI dialog when possible. Currently + only works for Win32, Motif, Athena and GTK. + Use inputdialog() for the Edit/Settings/Text Width menu. Also + for the Help/Find.. and Toolbar FindHelp items. + (Win32 support by Thore B. Karlsen) + (Win16 support by Vince Negri) +inputsecret() Ask the user to type a string without showing the typed keys. + (Charles Campbell) +libcall() for Unix (Neil Bird, Johannes Zellner, Stephen Wall) +libcallnr() for Win32 and Unix +lispindent() Get indent according to 'lisp'. +mode() Return a string that indicates the current mode. +nextnonblank() Skip blank lines forwards. +prevnonblank() Skip blank lines backwards. Useful to for indent scripts. +resolve() MS-Windows: resolve a shortcut to the file it points to. + Unix: resolve a symbolic link. +search() Search for a pattern. +searchpair() Search for matching pair. Can be used in indent files to find + the "if" matching an endif. +setbufvar() sets an option or variable local to a buffer (Ron Aaron) +setwinvar() sets an option or variable local to a window (Ron Aaron) +stridx() Search for first occurrence of one string in another. +strridx() Search for last occurrence of one string in another. +tolower() Convert string to all-lowercase. +toupper() Convert string to all-uppercase. +type() Check the type of an expression. +wincol() window column of the cursor +winwidth() Width of a window. (Johannes Zellner) +winline() window line of the cursor + + +Added expansion of curly braces in variable and function names. This can be +used for variable names that include the value of an option. Or a primitive +form of arrays. (Vince Negri) + + +New autocommand events: ~ +BufWinEnter Triggered when a buffer is displayed in a window, after using + the modelines. Can be used to load a view. +BufWinLeave Triggered when a buffer is no longer in a window. Also + triggered when exiting Vim. Can be used to save views. +FileChangedRO Triggered before making the first change to a read-only file. + Can be used to check-out the file. (Scott Graham) +TermResponse Triggered when the terminal replies to the version-request. + The v:termresponse internal variable holds the result. Can be + used to react to the version of the terminal. (Ronald Schild) +FileReadCmd Triggered before reading a file. +BufReadCmd Triggered before reading a file into a buffer. +FileWriteCmd Triggered before writing a file. +BufWriteCmd Triggered before writing a buffer into a file. +FileAppendCmd Triggered before appending to a file. +FuncUndefined Triggered when a user function is not defined. (Ron Aaron) + +The autocommands for the *Cmd events read or write the file instead of normal +file read/write. Use this in netrw.vim to be able to edit files on a remote +system. (Charles Campbell) + + +New Syntax files: ~ + +bdf BDF font definition (Nikolai Weibull) +catalog SGML catalog (Johannes Zellner) +debchangelog Debian Changelog (Wichert Akkerman) +debcontrol Debian Control (Wichert Akkerman) +dot dot (Markus Mottl) +dsl DSSSL syntax (Johannes Zellner) +eterm Eterm configuration (Nikolai Weibull) +indent Indent profile (Nikolai Weibull) +lftp LFTP (Nikolai Weibull) +lynx Lynx config (Doug Kearns) +mush mush sourcecode (Bek Oberin) +natural Natural (Marko Leipert) +pilrc Pal resource compiler (Brian Schau) +plm PL/M (Philippe Coulonges) +povini Povray configuration (David Necas) +ratpoison Ratpoison config/command (Doug Kearns) +readline readline config (Nikolai Weibull) +screen Screen RC (Nikolai Weibull) +specman Specman (Or Freund) +sqlforms SQL*Forms (Austin Ziegler) +terminfo terminfo (Nikolai Weibull) +tidy Tidy configuration (Doug Kearns) +wget Wget configuration (Doug Kearns) + + +Updated many syntax files to work both with Vim 5.7 and 6.0. + +Interface to Ruby. (Shugo Maeda) +Support dynamic loading of the Ruby interface on MS-Windows. (Muraoka Taro) +Support this for Mingw too. (Benoit Cerrina) + +Win32: Added possibility to load TCL dynamically. (Muraoka Taro) +Also for Borland 5.5. (Dan Sharp) + +Win32: When editing a file that is a shortcut (*.lnk file), edit the file it +links to. Unless 'binary' is set, then edit the shortcut file itself. +(Yasuhiro Matsumoto) + +The ":command" command now accepts a "-bar" argument. This allows the user +command to be followed by "| command". + +The preview window is now also used by these commands: +- |:pedit| edits the specified file in the preview window +- |:psearch| searches for a word in included files, like |:ijump|, and + displays the found text in the preview window. +Added the CTRL-W P command: go to preview window. + +MS-DOS and MS-Windows also read the system-wide vimrc file $VIM/vimrc. Mostly +for NT systems with multiple users. + +A double-click of the mouse on a character that has a "%" match selects from +that character to the match. Similar to "v%". + +"-S session.vim" argument: Source a script file when starting up. Convenient +way to start Vim with a session file. + +Added "--cmd {command}" Vim argument to execute a command before a vimrc file +is loaded. (Vince Negri) + +Added the "-M" Vim argument: reset 'modifiable' and 'write', thus disallow +making changes and writing files. + +Added runtime/delmenu.vim. Source this to remove all menus and prepare for +loading new menus. Useful when changing 'langmenu'. + +Perl script to filter Perl error messages to quickfix usable format. (Joerg +Ziefle) + +Added runtime/macros/less.vim: Vim script to simulate less, but with syntax +highlighting. + +MS-Windows install program: (Jon Merz) +- The Win32 program can now create shortcuts on the desktop and install Vim in + the Start menu. +- Possibly remove old "Edit with Vim" entries. +- The Vim executable is never moved or $PATH changed. A small batch file is + created in a directory in $PATH. Fewer choices to be made. +- Detect already installed Vim versions and offer to uninstall them first. + +Improved the MS-Windows uninstal program. It now also deletes the entries in +the Start menu, icons from the desktop and the created batch files. (Jon Merz) +Also made it possible to delete only some of these. Also unregister gvim for +OLE. + +Generate a self-installing Vim package for MS-Windows. This uses NSIS. (Jon +Merz et al.) + +Added ":filetype detect". Try detecting the filetype again. Helps when +writing a new shell script, after adding "#!/bin/csh". + +Added ":augroup! name" to delete an autocommand group. Needed for the +client-server "--remote-wait". + +Add the Vim version number to the viminfo file, useful for debugging. + +============================================================================== +IMPROVEMENTS *improvements-6* + +Added the 'n' flag in 'cpoptions': When omitted text of wrapped lines is not +put between line numbers from 'number' option. Makes it a lot easier to read +wrapped lines. + +When there is a format error in a tags file, the byte position is reported so +that the error can be located. + +"gf" works in Visual mode: Use the selected text as the file name. (Chase +Tingley) + +Allow ambiguous mappings. Thus "aa" and "aaa" can both be mapped, the longest +matching one is used. Especially useful for ":lmap" and 'keymap'. + +Encryption: Ask the key to be typed twice when crypting the first time. +Otherwise a typo might cause the text to be lost forever. (Chase Tingley) + +The window title now has "VIM" on the end. The file name comes first, useful +in the taskbar. A "+" is added when the file is modified. "=" is added for +a read-only file. "-" is added for a file with 'modifiable' off. + +In Visual mode, mention the size of the selected area in the 'showcmd' +position. + +Added the "b:changedtick" variable. Incremented at each change, also for +undo. Can be used to take action only if the buffer has been changed. + +In the replacement string of a ":s" command "\=" can be used to replace with +the result of an expression. From this expression the submatch() function can +be used to access submatches. + +When doing ":qall" and there is a change in a buffer that is being edited in +another window, jump to that window, instead of editing that buffer in the +current window. + +Added the "++enc=" and "++ff=" arguments to file read/write commands to force +using the given 'encoding' or 'fileformat'. And added the "v:cmdarg" +variable, to be used for FileReadCmd autocommands that read/write the file +themselves. + +When reading stdin, first read the text in binary mode and then re-read it +with automatic selection of 'fileformat' and 'fileencoding'. This avoids +problems with not being able to rewind the file (e.g., when a line near the +end of the file ends in LF instead of CR-LF). +When reading text from stdin and the buffer is empty, don't mark it changed. +Allows exiting without trouble. + +Added an ID to many error messages. This will make it easier to find help for +a message. + +Insert mode: +- "CTRL-G j" and "CTRL-G k" can be used to insert in another line in the same + column. Useful for editing a table. +- Added Thesaurus completion with CTRL-X CTRL-T. (Vince Negri) +- Added the 'thesaurus' option, to use instead of 'dictionary' for thesaurus + completion. Added the 's' flag in 'complete'. +- Made CTRL-X CTRL-L in Insert mode use the 'complete' option. It now also + scans other loaded buffers for matching lines. +- CTRL-R now also works in Insert mode while doing completion with CTRL-X or + CTRL-N. (Neil Bird) +- When doing Insert mode completion, when completion is finished check for a + match with words from 'cinkeys' or 'indentkeys'. + +Performance: +- Made display updating more efficient. Insert/delete lines may be used for + all changes, also for undo/redo. +- The display is not redrawn when there is typeahead in Insert mode. Speeds + up CTRL-R a lot. +- Improved speed of screen output for 32 bit DOS version. (Vince Negri) +- When dragging with the mouse, there is a lookahead to skip mouse codes when + there is another one next. Makes dragging with the mouse a lot faster. +- Also a memory usage improvement: When calling u_save with a single line, + don't save it if the line was recently saved for the same undo already. +- When using a script that appends one character at a time, the amount of + allocated memory was growing steadily. Also when 'undolevels' is -1. + Caused by the line saved for "U" never to be freed. Now free an undo block + when it becomes empty. +- GUI and Dos32: Use a vertical scroll region, to make scrolling in a + vertically split window faster. No need to redraw the whole window. +- When scrolling isn't possible with terminal codes (e.g., for a vertically + split window) redraw from ScreenLines[]. That should be faster than going + through the lines with win_line(), especially when using syntax + highlighting. +- The Syntax menu is now pre-generated by a separate script. Makes loading + the menu 70% faster. This can halve the startup time of gvim. +- When doing ":help tag", don't open help.txt first, jump directly to the help + tag. It's faster and avoids an extra message. +- Win32: When a file name doesn't end in ".lnk" don't try resolving a + shortcut, it takes quite a bit of time. +- Don't update the mouse pointer shape while there are typeahead characters. +- Change META[] from a string into an array, avoids using strchr() on it. +- Don't clear the command line when adding characters, avoids that screen_fill + is called but doesn't do anything. + +Robustness: +- Unix: Check for running out of stack space when executing a regexp. Avoids + a nasty crash. Only works when the system supports running the signal + function on another stack. +- Disallow ":source <dirname>". On unix it's possible to read a directory, + does not make sense to use it as Vim commands. + +Security: +- When reading from or writing to a temporary file, check that it isn't a + symbolic link. Gives some protection against symlink attacks. +- When creating a backup file copy or a swap file, check for it already + existing to avoid a symlink attack. (Colin Phipps) +- Evaluating options which are an expression is done in a |sandbox|. If the + option was set by a modeline, it cannot cause damage. +- Use a secure way to generate temp file names: Create a private directory for + temp files. Used for Unix, MS-DOS and OS/2. +- 'makeef' can be empty, which means that an internally generated file name is + used. The old default was "/tmp/file", which is a security risk. + Writing 'makeef' in the current directory fails in a read-only directory and + causes trouble when using ":grep" on all files. Made the default empty for + all systems, so that a temp file is used. +- The command from a tags file is executed in the sandbox for better security. +- The Ruby, Tcl and Python interfaces cannot be used from the sandbox. They + might do dangerous things. Perl is still possible, but limited to the Safe + environment. (Donnie Smith) + +Syntax highlighting: +- Optimized the speed by caching the state stack all over the file, not just + the part being displayed. Required for folding. +- Added ":syntax sync fromstart": Always parse from the start of the file. +- Added the "display" argument for syntax items: use the item only when + displaying the result. Can make parsing faster for text that isn't going to + be displayed. +- When using CTRL-L, the cached states are deleted, to force parsing the text + again. +- Use elfhash algorithm for table of keywords. This should give a better + distribution and speedup keyword lookup. (Campbell) +- Also allow the "lc" leading context for skip and end patterns. (Scott + Bigham) +- Syntax items can have the "extend" argument to undo the effect of a + "keepend" argument of an item it is contained in. Makes it possible to have + some contained items extend a region while others don't. +- ":syntax clear" now deletes the b:current_syntax variable. That's logical, + since no syntax is defined after this command. +- Added ":syntax enable": switch on syntax highlighting without changing the + colors. This allows specifying the colors in the .vimrc file without the + need for a mysyntaxfile. +- Added ":syntax reset": reset the colors to their defaults. +- Added the "contains=TOP" and "contains=CONTAINED" arguments. Makes it + possible to define a transparent item that doesn't contain itself. +- Added a "containedin" argument to syntax items. Allows adding a contained + item to an existing item (e.g., to highlight a name in a comment). + +Modeless selection: +- When in the command-line window, use modeless selection in the other + windows. Makes it possible to copy visible text to the command-line window. +- Support modeless selection on the cmdline in a terminal. Previously it was + only possible for the GUI. +- Make double-right-click in modeless selection select a whole word. Single + right click doesn't use the word selection started by a double-left-click. + Makes it work like in Visual mode. +- The modeless selection no longer has an implied automatic copy to the + clipboard. It now obeys the 'a' and 'A' flags in 'guioptions' or + "autoselect" and "autoselectml" in 'clipboard'. +- Added the CTRL-Y command in Cmdline-mode to copy the modeless selection to + the clipboard. Also works at the hit-enter prompt and the more prompt. + Removed the mappings in runtime/mswin.vim for CTRL-Y and CTRL-Z in + cmdline-mode to be able to use CTRL-Y in the new way. + +Reduced the amount of stack space used by regmatch() to allow it to handle +complicated patterns on a longer text. + +'isfname' now includes '%' and '#'. Makes "vim dir\#file" work for MS-DOS. + +Added keypad special keys <kEnter>, <k0> - <k9>. When not mapped they behave +like the ASCII equivalent. (Ivan Wellesz and Vince Negri) +Recognize a few more xterm keys: <C-Right>, <C-Left>, <C-End>, <C-Home> + +Also trigger the BufUnload event when Vim is going to exit. Perhaps a script +needs to do some cleaning up. + +Expand expression in backticks: `={expr}`. Can be used where backtick +expansion is done. (Vince Negri) + +GUI: +- Added 'L' and 'R' flags in 'guioptions': Add a left or right scrollbar only + when there is a vertically split window. +- X11: When a color can't be allocated, use the nearest match from the + colormap. This avoids that black is used for many things. (Monish Shah) + Also do this for the menu and scrollbar, to avoid that they become black. +- Win32 and X11: Added 'mouseshape' option: Adjust the mouse pointer shape to + the current mode. (Vince Negri) +- Added the 'linespace' option: Insert a pixel line between lines. (Nam) +- Allow modeless selection (without moving the cursor) by keeping CTRL and + SHIFT pressed. (Ivan Wellesz) +- Motif: added toolbar. (Gordon Prieur) Also added tooltips. +- Athena: added toolbar and tooltips. (David Harrison -- based on Gordon + Prieur's work) +- Made the 'toolbar' option work for Athena and Motif. Can now switch between + text and icons on the fly. (David Harrison) +- Support menu separator lines for Athena. (David Harrison) +- Athena: Adjust the arrow pixmap used in a pullright menu to the size of the + font. (David Harrison) +- Win32: Added "c" flag to 'guifont' to be able to specify the charset. (Artem + Khodush) +- When no --enable-xim argument is given, automatically enable it when a X GUI + is used. Required for dead key support (and multi-byte input). +- After a file selection dialog, check that the edited files were not changed + or deleted. The Win32 dialog allows deleting and renaming files. +- Motif and Athena: Added support for "editres". (Martin Dalecki) +- Motif and Athena: Added "menuFont" to be able to specify a font or fontset + for the menus. Can also be set with the "Menu" highlight group. Useful + when the locale is different from 'encoding'. (David Harrison) + When FONTSET_ALWAYS is defined, always use a fontset for the menus. Should + avoid trouble with changing from a font to a fontset. (David Harrison) +- Highlighting and font for the tooltips can be specified with the "Tooltip" + highlight group. (David Harrison) +- The Cmdline-mode menus can be used at the more-prompt. This mostly works + fine, because they start with a CTRL-C. The "Copy" menu works to copy the + modeless selection. Allows copying the output of ":set all" or ":intro" + without auto-selection. +- When starting the GUI when there is no terminal connected to stdout and + stderr, display error messages in a dialog. Previously they wouldn't be + displayed at all. +- Allow setting 'browsedir' to the name of a directory, to be used for the + file dialog. (Dan Sharp) +- b:browsefilter and g:browsefilter can be set to the filters used for the + file dialog. Supported for Win32 and Motif GUI. (Dan Sharp) + +X11: +- Support for the clipboard selection as register "+. When exiting or + suspending copy the selection to cut buffer 0. Should allow copy/paste with + more applications in a X11-standard way. (Neil Bird) +- Use the X clipboard in any terminal, not just in an xterm. + Added "exclude:" in 'clipboard': Specify a pattern to match against terminal + names for which no connection should be made to the X server. The default + currently work for FreeBSD and Linux consoles. +- Added a few messages for when 'verbose' is non-zero to show what happens + when trying to connect to the X server. Should help when trying to find out + why startup is slow. + +GTK GUI: (partly by Marcin Dalecki) +- With some fonts the characters can be taller than ascent + descent. E.g., + "-misc-fixed-*-*-*-*-18-*-*-*-*-*-iso10646-1". Add one to the character + cell height. +- Implement "no" value for 'winaltkeys': don't use Alt-Key as a menu shortcut, + when 'wak' changed after creating the menus. +- Setting 'wak' after the GUI started works. +- recycle text GC's to reduce communication. +- Adjust icon size to window manager. +- Cleanup in font handling. +- Replace XQueryColor with GDK calls. +- Gnome support. Detects Gnome in configure and uses different widgets. + Otherwise it's much like GTK. (Andy Kahn) + It is disabled by default, because it causes a few problems. +- Removed the special code to fork first and then start the GUI. Now use + _exit() instead of exit(), this works fine without special tricks. +- Dialogs sometimes appeared a bit far away. Position the dialogs inside + the gvim window. (Brent Verner) +- When dropping a file on Vim, remove extra slashes from the start of the + path. Also shorten the file name if possible. + +Motif: (Martin Dalecki) +- Made the dialog layout better. +- Added find and find/replace dialogs. +- For the menus, change "iso-8859" to "iso_8859", Linux appears to need this. +- Added icon to dialogs, like for GTK. +- Use XPM bitmaps for the icon when possible. Use the Solaris XpmP.h include + file when it's available. +- Change the shadow of the toolbar items to get a visual feedback of it being + pressed on non-LessTiff. +- Use gadgets instead of windows for some items for speed. + +Command line completion: +- Complete environment variable names. (Mike Steed) +- For ":command", added a few completion methods: "mapping", "function", + "expression" and "environment". +- When a function doesn't take arguments, let completion add () instead of (. + +For MS-DOS, MS-Windows and OS/2: Expand %VAR% environment variables like $VAR. +(Walter Briscoe) + +Redirect messages to the clipboard ":redir @*" and to the unnamed register +":redir @"". (Wall) + +":let @/ = ''" clears the search pattern, instead of setting it to an empty +string. + +Expression evaluation: +- "? :" can be used like in C. +- col("$") returns the length of the cursor line plus one. (Stephen P. Wall) +- Optional extra argument for match(), matchend() and matchstr(): Offset to + start looking for a match. +- Made third argument to strpart() optional. (Paul Moore, Zdenek Sekera) +- exists() can also be used to check for Ex commands and defined autocommands. +- Added extra argument to input(): Default text. +- Also set "v:errmsg" when using ":silent! cmd". +- Added the v:prevcount variable: v:count for the previous command. +- Added "v:progname", name with which Vim was started. (Vince Negri) +- In the verbose message about returning from a function, also show the return + value. + +Cscope: +- Added the cscope_connection() function. (Andy Kahn) +- ":cscope kill -1" kills all cscope connections. (Andy Kahn) +- Added the 'cscopepathcomp' option. (Scott Hauck) +- Added ":scscope" command, split window and execute Cscope command. (Jason + Duell) + +VMS: +- Command line arguments are always uppercase. Interpret a "-X" argument as + "-x" and "-/X" as "-X". +- Set 'makeprg' and 'grepprg' to meaningful defaults. (Zoltan Arpadffy) +- Use the X-clipboard feature and the X command server. (Zoltan Arpadffy) + +Macintosh: (Dany St-Amant) +- Allow a tags file to have CR, CR-LF or LF line separator. (Axel Kielhorn) +- Carbonized (while keeping non Carbon code) + (Some work "stolen" from Ammon Skidmore) +- Improved the menu item index handling (should be faster) +- Runtime commands now handle / in file name (MacOS 9 version) +- Added ":winpos" support. +- Support using "~" in file names for home directory. + +Options: +- When using set += or ^= , check for items used twice. Duplicates are + removed. (Vince Negri) +- When setting an option that is a list of flags, remove duplicate flags. +- If possible, use getrlimit() to set 'maxmemtot' and 'maxmem'. (Pina) +- Added "alpha" to 'nrformats': increment or decrement an alphabetic character + with CTRL-A and CTRL-X. +- ":set opt&vi" sets an option to its Vi default, ":set opt&vim" to its Vim + default. Useful to set 'cpo' to its Vim default without knowing what flags + that includes. +- 'scrolloff' now also applies to a long, wrapped line that doesn't fit in the + window. +- Added more option settings to the default menus. +- Updated the option window with new options. Made it a bit easier to read. + +Internal changes: +- Split line pointers in text part and attributes part. Allows for future + change to make attribute more than one byte. +- Provide a qsort() function for systems that don't have it. +- Changed the big switch for Normal mode commands into a table. This cleans + up the code considerably and avoids trouble for some optimizing compilers. +- Assigned a negative value to special keys, to avoid them being mixed up with + Unicode characters. +- Global variables expand_context and expand_pattern were not supposed to be + global. Pass them to ExpandOne() and all functions called by it. +- No longer use the global reg_ic flag. It caused trouble and in a few places + it was not set. +- Removed the use of the stuff buffer for "*", "K", CTRL-], etc. Avoids + problem with autocommands. +- Moved some code from ex_docmd.c to ex_cmds2.c. The file was getting too + big. Also moved some code from screen.c to move.c. +- Don't include the CRC table for encryption, generate it. Saves quite a bit + of space in the source code. (Matthias Kramm) +- Renamed multibyte.c to mbyte.c to avoid a problem with 8.3 filesystems. +- Removed the GTK implementation of ":findhelp", it now uses the + ToolBar.FindHelp menu entry. +- Renamed mch_windexit() to mch_exit(), mch_init() to mch_early_init() and + mch_shellinit() to mch_init(). + +Highlighting: +- In a ":highlight" listing, show "xxx" with the highlight color. +- Added support for xterm with 88 or 256 colors. The right color numbers will + be used for the name used in a ":highlight" command. (Steve Wall) +- Added "default" argument for ":highlight". When included, the command is + ignored if highlighting for the group was already defined. + All syntax files now use ":hi default ..." to allow the user to specify + colors in his vimrc file. Also, the "if did_xxx_syntax_inits" is not needed + anymore. This greatly simplifies using non-default colors for a specific + language. +- Adjusted colortest.vim: Included colors on normal background and reduced the + size by using a while loop. (Rafael Garcia-Suarez) +- Added the "DarkYellow" color name. Just to make the list of standard colors + consistent, it's not really a nice color to use. + +When an xterm is in 8-bit mode this is detected by the code returned for +|t_RV|. All key codes are automatically converted to their 8-bit versions. + +The OPT_TCAP_QUERY in xterm patch level 141 and later is used to obtain the +actual key codes used and the number of colors for t_Co. Only when |t_RV| is +also used. + +":browse set" now also works in the console mode. ":browse edit" will give an +error message. + +":bdelete" and ":bunload" only report the number of deleted/unloaded buffers +when more than 'report'. The message was annoying when deleting a buffer in a +script. + +Jump list: +- The number of marks kept in the jumplist has been increased from 50 to 100. +- The jumplist is now stored in the viminfo file. CTRL-O can be used to jump + to positions from a previous edit session. +- When doing ":split" copy the jumplist to the new window. + +Also set the '[ and '] marks for the "~" and "r" commands. These marks are +now always set when making a change with a Normal mode command. + +Python interface: Allow setting the width of a vertically split window. (John +Cook) + +Added "=word" and "=~word" to 'cinkeys' (also used in 'indentkeys'). + +Added "j1" argument in 'cinoptions': indent {} inside () for Java. (Johannes +Zellner) +Added the "l" flag in 'cinoptions'. (Anduin Withers) +Added 'C', 'U', 'w' and 'm' flags to 'cinoptions'. (Servatius Brandt) + +When doing ":wall" or ":wqall" and a modified buffer doesn't have a name, +mention its buffer number in the error message. + +":function Name" lists the function with line numbers. Makes it easier to +find out where an error happened. + +In non-blockwise Visual mode, "r" replaces all selected characters with the +typed one, like in blockwise Visual mode. + +When editing the last file in the argument list in any way, allow exiting. +Previously this was only possible when getting to that file with ":next" or +":last". + +Added the '1' flag to 'formatoptions'. (Vit Stradal) +Added 'n' flag in 'formatoptions': format a numbered list. + +Swap file: +- When a swap file already exists, and the user selects "Delete" at the + ATTENTION prompt, use the same ".swp" swapfile, to avoid creating a ".swo" + file which won't always be found. +- When giving the ATTENTION message and the date of the file is newer than the + date of swap file, give a warning about this. +- Made the info for an existing swap file a bit shorter, so that it still fits + on a 24 line screen. +- It was possible to make a symlink with the name of a swap file, linking to a + file that doesn't exist. Vim would then silently use another file (if open + with O_EXCL refuses a symlink). Now check for a symlink to exist. Also do + another check for an existing swap file just before creating it to catch a + symlink attack. + +The g CTRL-G command also works in Visual mode and counts the number of words. +(Chase Tingley) + +Give an error message when using 'shell' and it's empty. + +Added the possibility to include "%s" in 'shellpipe'. + +Added "uhex" value for 'display': show non-printable characters as <xx>. +Show unprintable characters with NonText highlighting, also in the command +line. + +When asked to display the value of a hidden option, tell it's not supported. + +Win32: +- When dropping a shortcut on gvim (.lnk file) edit the target, not the + shortcut itself. (Yasuhiro Matsumoto) +- Added C versions of the OpenWithVim and SendToVim programs. (Walter Briscoe) +- When 'shell' is "cmd" or "cmd.exe", set 'shellredir' to redirect stderr too. + Also check for the Unix shell names. +- When $HOMEDRIVE and $HOMEPATH are defined, use them to define $HOME. (Craig + Barkhouse) + +Win32 console version: +- Includes the user and system name in the ":version" message, when available. + It generates a pathdef.c file for this. (Jon Miner) +- Set the window icon to Vim's icon (only for Windows 2000). While executing + a shell command, modify the window title to show this. When exiting, + restore the cursor position too. (Craig Barkhouse) +- The Win32 console version can be compiled with OLE support. It can only + function as a client, not as an OLE server. + +Errorformat: +- Let "%p" in 'errorformat' (column of error indicated by a row of characters) + also accept a line of dots. +- Added "%v" item in 'errorformat': Virtual column number. (Dan Sharp) +- Added a default 'errorformat' value for VMS. (Jim Bush) + +The "p" command can now be used in Visual mode. It overwrites the selected +text with the contents of a register. + +Highlight the <> items in the intro message to make clear they are special. + +When using the "c" flag for ":substitute", allow typing "l" for replacing this +item and then stop: "last". + +When printing a verbose message about sourcing another file, print the line +number. + +When resizing the Vim window, don't use 'equalalways'. Avoids that making the +Vim window smaller makes split windows bigger. And it's what the docs say. + +When typing CTRL-D in Insert mode, just after an autoindent, then hitting CR +kept the remaining white space. Now made it work like BS: delete the +autoindent to avoid a blank non-empty line results. + +Added a GetHwnd() call to the OLE interface. (Vince Negri) + +Made ":normal" work in an event handler. Useful when dropping a file on Vim +and for CursorHold autocommands. + +For the MS-Windows version, don't change to the directory of the file when a +slash is used instead of a backslash. Explorer should always use a backslash, +the user can use a slash when typing the command. + +Timestamps: +- When a buffer was changed outside of Vim and regaining focus, give a dialog + to allow the user to reload the file. Now also for other GUIs than + MS-Windows. And also used in the console, when compiled with dialog + support. +- Inspect the file contents to find out if it really changed, ignore + situations where only the time stamp changed (e.g., checking the file out + from CVS). +- When checking the timestamp, first check if the file size changed, to avoid + a file compare then. Makes it quicker for large (log) files that are + appended to. +- Don't give a warning for a changed or deleted file when 'buftype' is set. +- No longer warn for a changed directory. This avoids that the file explorer + produces warnings. +- Checking timestamps is only done for buffers that are not hidden. These + will be checked when they become unhidden. +- When checking for a file being changed outside of Vim, also check if the + file permissions changed. When the file contents didn't change but the + permissions did, give a warning. +- Avoid checking too often, otherwise the dialog keeps popping up for a log + file that steadily grows. + +Mapping <M-A> when 'encoding' is "latin1" and then setting 'encoding' to +"utf-8" causes the first byte of a multi-byte to be mapped. Can cause very +hard to find problems. Disallow mapping part of a multi-byte character. + +For ":python" and ":tcl" accept an in-line script. (Johannes Zellner) +Also for ":ruby" and ":perl". (Benoit Cerrina) + +Made ":syn include" use 'runtimepath' when the file name is not a full path. + +When 'switchbuf' contains "split" and the current window is empty, don't split +the window. + +Unix: Catch SIGPWR to preserve files when the power is about to go down. + +Sniff interface: (Anton Leherbauer) +- fixed windows code, esp. the event handling stuff +- adaptations for sniff 4.x ($SNIFF_DIR4) +- support for adding sniff requests at runtime + +Support the notation <A-x> as an alias for <M-x>. This logical, since the Alt +key is used. + +":find" accepts a count, which means that the count'th match in 'path' is +used. + +":ls" and ":buffers" output shows modified/readonly/modifiable flag. When a +buffer is active show "a" instead of nothing. When a buffer isn't loaded +show nothing instead of "-". + +Unix install: +- When installing the tools, set absolute paths in tools scripts efm_perl.pl + and mve.awk. Avoids that the user has to edit these files. +- Install Icons for KDE when the directories exist and the icons do not exist + yet. + +Added has("win95"), to be able to distinguish between MS-Windows 95/98/ME and +NT/2000/XP in a Vim script. + +When a ":cd" command was typed, echo the new current directory. (Dan Sharp) + +When using ":winpos" before the GUI window has been opened, remember the +values until it is opened. + +In the ":version" output, add "/dyn" for features that are dynamically loaded. +This indicates the feature may not always work. + +On Windows NT it is possible that a directory is read-only, but a file can be +deleted. When making a backup by renaming the file and 'backupdir' doesn't +use the current directory, this causes the original file to be deleted, +without the possibility to create a new file. Give an extra error message +then to warn to user about this. + +Made CTRL-R CTRL-O at the command line work like CTRL-R CTRL-R, so that it's +consistent with Insert mode. + +============================================================================== +COMPILE TIME CHANGES *compile-changes-6* + +All generated files have been moved out of the "src" directory. This makes it +easy to see which files are not edited by hand. The files generated by +configure are now in the "src/auto" directory. For Unix, compiled object +files go in the objects directory. + +The source archive was over the 1.4M floppy limit. The archives are now split +up into two runtime and two source archives. Also provide a bzip2 compressed +archive that contains all the sources and runtime files. + +Added "reconfig" as a target for make. Useful when changing some of the +arguments that require flushing the cache, such as switching from GTK to +Motif. Adjusted the meaning of GUI_INC_LOC and GUI_LIB_LOC to be consistent +over different GUIs. + +Added src/README.txt to give an overview of the main parts of the source code. + +The Unix Makefile now fully supports using $(DESTDIR) to install to a specific +location. Replaces the manual setting of *ENDLOC variables. + +Added the possibility for a maintainer of a binary version to include his +e-mail address with the --with-compiledby configure argument. + +Included features are now grouped in "tiny", "small", "normal", "big" and +"huge". This replaces "min-features" and "max-features". Using "tiny" +disables multiple windows for a really small Vim. + +For the tiny version or when FEAT_WINDOWS is not defined: Firstwin and lastwin +are equal to curwin and don't use w_next and w_prev. + +Added the +listcmds feature. Can be used to compile without the Vim commands +that manipulate the buffer list and argument list (the buffer list itself is +still there, can't do without it). + +Added the +vreplace feature. It is disabled in the "small" version to avoid +that the 16 bit DOS version runs out of memory. + +Removed GTK+ support for versions older than 1.1.16. + +The configure checks for using PTYs have been improved. Code taken from a +recent version of screen. + +Added configure options to install Vim, Ex and View under another name (e.g., +vim6, ex6 and view6). + +Added "--with-global-runtime" configure argument. Allows specifying the +global directory used in the 'runtimepath' default. + +Made enabling the SNiFF+ interface possible with a configure argument. + +Configure now always checks /usr/local/lib for libraries and +/usr/local/include for include files. Helps finding the stuff for iconv() and +gettext(). + +Moved the command line history stuff into the +cmdline_hist feature, to +exclude the command line history from the tiny version. + +MS-Windows: Moved common functions from Win16 and Win32 to os_mswin.c. Avoids +having to change two files for one problem. (Vince Negri) + +Moved common code from gui_w16.c and gui_w32.c to gui_w48.c (Vince Negri) + +The jumplist is now a separate feature. It is disabled for the "small" +version (16 bit MS-DOS). + +Renamed all types ending in _t to end in _T. Avoids potential problems with +system types. + +Added a configure check for X11 header files that implicitly define the return +type to int. (Steve Wall) + +"make doslang" in the top directory makes an archive with the menu and .mo +files for Windows. This uses the files generated on Unix, these should work +on MS-Windows as well. + +Merged a large part of os_vms.c with os_unix.c. The code was duplicated in +the past which made maintenance more work. (Zoltan Arpadffy) + +Updated the Borland C version 5 Makefile: (Dan Sharp) +- Fixed the Perl build +- Added python and tcl builds +- Added dynamic perl and dynamic python builds +- Added uninstal.exe build +- Use "yes" and "no" for the options, like in Make_mvc.mak. + +Win32: Merged Make_gvc.mak and Make_ovc.mak into one file: Make_ivc.mak. It's +much smaller, many unnecessary text has been removed. (Walter Briscoe) +Added Make_dvc.mak to be able to debug exe generated with Make_mvc.mak in +MS-Devstudio. (Walter Briscoe) + +MS-Windows: The big gvim.exe, which includes OLE, now also includes +dynamically loaded Tcl, Perl and Python. This uses ActivePerl 5.6.1, +ActivePython 2.1.1 and ActiveTCL 8.3.3 + +Added AC_EXEEXT to configure.in, to check if the executable needs ".exe" for +Cygwin or MingW. Renamed SUFFIX to EXEEXT in Makefile. + +Win32: Load comdlg32.dll delayed for faster startup. Only when using VC 6. +(Vipin Aravind) + +Win32: When compiling with Borland, allow using IME. (Yasuhiro Matsumoto) + +Win32: Added Makefile for Borland 5 to compile gvimext.dll. (Yasuhiro +Matsumoto) + +============================================================================== +BUG FIXES *bug-fixes-6* + +When checking the command name for "gvim", "ex", etc. ignore case. Required +for systems where case is ignored in command names. + +Search pattern "[a-c-e]" also matched a 'd' and didn't match a '-'. + +When double-clicking in another window, wasn't recognized as double click, +because topline is different. Added set_mouse_topline(). + +The BROKEN_LOCALE check was broken. (Marcin Dalecki) + +When "t_Co" is set, the default colors remain the same, thus wrong. Reset the +colors after changing "t_Co". (Steve Wall) + +When exiting with ":wqall" the messages about writing files could overwrite +each other and be lost forever. + +When starting Vim with an extremely long file name (around 1024 characters) it +would crash. Added a few checks to avoid buffer overflows. + +CTRL-E could get stuck in a file with very long lines. + +":au syntax<Tab>" expanded event names while it should expand groups starting +with "syntax". + +When expanding a file name caused an error (e.g., for <amatch>) it was +produced even when inside an "if 0". + +'cindent' formatted C comments differently from what the 'comments' option +specified. (Steve Wall) + +Default for 'grepprg' didn't include the file name when only grepping in one +file. Now /dev/null has been added for Unix. + +Opening the option window twice caused trouble. Now the cursor goes to the +existing option window. + +":sview" and ":view" didn't set 'readonly' for an existing buffer. Now do set +'readonly', unless the buffer is also edited in another window. + +GTK GUI: When 'guioptions' excluded 'g', the more prompt caused the toolbar +and menubar to disappear and resize the window (which clears the text). +Now always grey-out the toplevel menus to avoid that the menubar changes size +or disappears. + +When re-using the current buffer for a new buffer, buffer-local variables were +not deleted. + +GUI: when 'scrolloff' is 0 dragging the mouse above the window didn't cause a +down scroll. Now pass on a mouse event with mouse_row set to -1. + +Win32: Console version didn't work on telnet, because of switching between two +console screens. Now use one console screen and save/restore the contents +when needed. (Craig Barkhouse) + +When reading a file the magic number for encryption was included in the file +length. (Antonio Colombo) + +The quickfix window contained leading whitespace and NULs for multi-line +messages. (David Harrison) + +When using cscope, redundant tags were removed. This caused a numbering +problem, because they were all listed. Don't remove redundant cscope tags. +(David Bustos). + +Cscope: Test for which matches are in the current buffer sometimes failed, +causing a jump to another match than selected. (David Bustos) + +Win32: Buffer overflow when adding a charset name in a font. + +'titlestring' and 'iconstring' were evaluating an expression in the current +context, which could be a user function, which is a problem for local +variables vs global variables. + +Win32 GUI: Mapping <M-F> didn't work. Now handle SHIFT and CTRL in +_OnSysChar(). + +Win32 GUI: (on no file), :vs<CR>:q<CR> left a trail of pixels down the middle. +Could also happen for the ruler. screen_puts() didn't clear the right char in +ScreenLines[] for the bold trick. + +Win32: ":%!sort|uniq" didn't work, because the input file name touches the +"|". Insert a space before the "|". + +OS/2: Expanding wildcards included non-existing files. Caused ":runtime" to +fail, which caused syntax highlighting to fail. + +Pasting a register containing CTRL-R on the command line could cause an +endless loop that can't be interrupted. Now it can be stopped with CTRL-C. + +When 'verbose' is set, a message for file read/write could overwrite the +previous message. +When 'verbose' is set, the header from ":select" was put after the last +message. Now start a new line. + +The hit-enter prompt reacted to the response of the t_RV string, causing +messages at startup to disappear. + +When t_Co was set to 1, colors were still used. Now only use color when t_Co +> 1. + +Listing functions with ":function" didn't quit when 'q' or ':' was typed at +the more prompt. + +Use mkstemp() instead of mktemp() when it's available, avoids a warning for +linking on FreeBSD. + +When doing Insert mode completion it's possible that b_sfname is NULL. Don't +give it to printf() for the "Scanning" message. + +":set runtimepath-=$VIMRUNTIME" didn't work, because expansion of wildcards +was done after trying to remove the string. Now for ":set opt+=val" and ":set +opt-=val" the expansion of wildcards is done before adding or removing "val". + +Using CTRL-V with the "r" command with a blockwise Visual selection inserted a +CTRL-V instead of getting a special character. + +Unix: Changed the order of libraries: Put -lXdmcp after -lX11 and -lSM -lICE +after -lXdmcp. Should fix link problem on HP-UX 10.20. + +Don't remove the last "-lm" from the link line. Vim may link but fail later +when the GUI starts. + +When the shell returns with an error when trying to expand wildcards, do +include the pattern when the "EW_NOTFOUND" flag was set. +When expanding wildcards with the shell fails, give a clear error message +instead of just "1 returned". + +Selecting a Visual block, with the start partly on a Tab, deleting it leaves +the cursor too far to the left. Causes "s" to work in the wrong position. + +Pound sign in normal.c caused trouble on some compilers. Use 0xA3 instead. + +Warning for changing a read-only file wasn't given when 'insertmode' was set. + +Win32: When 'shellxquote' is set to a double quote (e.g., using csh), ":!start +notepad file" doesn't work. Remove the double quotes added by 'shellxquote' +when using ":!start". (Pavol Juhas) + +The "<f-args>" argument of ":command" didn't accept Tabs for white space. +Also, don't add an empty argument when there are trailing blanks. + +":e test\\je" edited "test\je", but ":next test\\je" edited "testje". +Backslashes were removed one time too many for ":next". + +VMS: "gf" didn't work properly. Use vms_fixfilename() to translate the file +name. (Zoltan Arpadffy) + +After ":hi Normal ctermbg=black ctermfg=white" and suspending Vim not all +characters are redrawn with the right background. + +When doing "make test" without +eval or +windows feature, many tests failed. +Now have test1 generate a script to copy the correct output, so that a test +that doesn't work is skipped. + +On FreeBSD the Perl interface added "-lc" to the link command and Python added +"-pthread". These two don't work together, because the libc_r library should +be used. Removed "-lc" from Perl, it should not be needed. +Also: Add "-pthread" to $LIBS, so that the checks for functions is done with +libc_r. Sigaltstack() appears to be missing from libc_r. + +The Syntax sub-menus were getting too long, reorganized them and added another +level for some languages. + +Visual block "r"eplace didn't work well when a Tab is partly included. +(Matthias Kramm) + +When yanking a Visual block, where some lines end halfway the block, putting +the text somewhere else doesn't insert a block. Padd with spaces for missing +characters. Added "y_width" to struct yankreg. (Matthias Kramm) + +If a substitute string has a multibyte character after a backslash only the +first byte of it was skipped. (Muraoka Taro) + +Win32: Numeric keypad keys were missing from the builtin termcap entry. + +When a file was read-only ":wa!" didn't force it to be written. (Vince Negri) + +Amiga: A file name starting with a colon was considered absolute but it isn't. +Amiga: ":pwd" added a slash when in the root of a drive. + +Don't let 'ttymouse' default to "dec" when compiled with dec mouse support. +It breaks the gpm mouse (Linux console). + +The prototypes for the Perl interface didn't work for threaded Perl. Added a +sed command to remove the prototypes from proto/if_perl.pro and added them +manually to if_perl.xs. + +When ":w!" resets the 'readonly' option the title and status lines were not +updated. + +":args" showed the current file when the argument list was empty. Made this +work like Vi: display nothing. + +"99:<C-U>echo v:count" echoed "99" in Normal mode, but 0 in Visual mode. +Don't set v:count when executing a stuffed command. + +Amiga: Got a requester for "home:" because it's in the default runtime path. +Don't bring up a requester when searching for a file in 'path', sourcing the +.vimrc file or using ":runtime". + +Win16 and Win32: Considered a file "\path\file" absolute. Can cause the same +file to appear as two different buffers. + +Win32: Renaming a file to an empty string crashed Vim. Happened when using +explorer.vim and hitting ESC at the rename prompt. + +Win32: strftime() crashed when called with a "-1" value for the time. + +Win32 with Borland compiler: mch_FullName() didn't work, caused tag file not +to be found. + +Cscope sometimes jumped to the wrong tag. (David Bustos) + +OS/2: Could not find the tags file. mch_expand_wildcards() added another +slash to a directory name. + +When using ">>" the `] mark was not in the last column. + +When Vim was compiled without menu support, filetype.vim was still trying to +source the menu.vim script. (Rafael Garcia-Suarez) + +":ptag" added an item to the tag stack. + +Win32 IME: "gr" didn't use IME mode. + +In the "vim --help" message the term "options" was used for arguments. That's +confusing, call them "arguments". + +When there are two windows, and a BufUnload autocommand for closing window #1 +closed window #2, Vim would crash. + +When there is a preview window and only one other window, ":q" wouldn't exit. + +In Insert mode, when cancelling a digraph with ESC, the '?' wasn't removed. + +On Unix glob(".*") returned "." and "..", on Windows it didn't. On Windows +glob("*") also returned files starting with a dot. Made this work like Unix +on all systems. + +Win32: Removed old code to open a console. Vimrun is now used and works fine. + +Compute the room needed by the intro message accurately, so that it also fits +on a 25 line console. (Craig Barkhouse) + +":ptnext" was broken. Now remember the last tag used in the preview window +separately from the tagstack. + +Didn't check for "-display" being the last argument. (Wichert Akkerman) + +GTK GUI: When starting "gvim" under some conditions there would be an X error. +Don't replace the error handler when creating the xterm clipboard. (Wichert +Akkerman) + +Adding a space after a help tag caused the tag not to be found. E.g., ":he +autoindent ". + +Was trying to expand a URL into a full path name. On Windows this resulted in +the current directory to be prepended to the URL. Added vim_isAbsName() and +vim_FullName() to avoid that various machine specific functions do it +differently. + +":n *.c" ":cd .." ":n" didn't use the original directory of the file. Vi only +does it for the current file (looks like a bug). Now remember the buffer used +for the entry in the argument list and use it's name (adjusted when doing +":cd"), unless it's deleted. + +When inserting a special key as its name ("<F8>" as four characters) after +moving around in Insert mode, undo didn't work properly. + +Motif GUI: When using the right mouse button, for some people gvim froze for +a couple of seconds (Motif 1.2?). This doesn't happen when there is no Popup +menu. Solved by only creating a popup menu when 'mousemodel' is "popup" or +"popup_setpos". (David Harrison) + +Motif: When adding many menu items, the "Help" menu disappeared but the +menubar didn't wrap. Now manually set the menubar height. + +When using <BS> in Insert mode to remove a line break, or using "J" to join +lines, the cursor could end up halfway a multi-byte character. (Muraoka Taro) + +Removed defining SVR4 in configure. It causes problems for some X header +files and doesn't appear to be used anywhere. + +When 'wildignore' is used, 'ignorecase' for a tag match was not working. + +When 'wildignore' contains "*~" it was impossible to edit a file ending in a +"~". Now don't recognize a file ending in "~" as containing wildcards. + +Disabled the mouse code for OS/2. It was not really used. + +":mksession" always used the full path name for a buffer, also when the short +name could be used. +":mkvimrc" and ":mksession" didn't save 'wildchar' and 'pastetoggle' in such a +way that they would be restored. Now use the key name if possible, this is +portable. + +After recovering a file and abandoning it, an ":edit" command didn't give the +ATTENTION prompt again. Would be useful to be able to delete the file in an +easy way. Reset the BF_RECOVERED flag when unloading the buffer. + +histdel() could match or ignore case, depending on what happened before it. +Now always match case. + +When a window size was specified when splitting a window, it would still get +the size from 'winheight' or 'winwidth' if it's larger. + +When using "append" or "insert" inside a function definition, a line starting +with "function" or "endfunction" caused confusion. Now recognize the commands +and skip lines until a ".". + +At the end of any function or sourced file need_wait_return could be reset, +causing messages to disappear when redrawing. + +When in a while loop the line number for error messages stayed fixed. Now the +line number is remembered in the while loop. + +"cd c:/" didn't work on MS-DOS. mch_isdir() removed a trailing slash. + +MS-Windows: getftime() didn't work when a directory had a trailing slash or +backslash. Didn't show the time in the explorer because of this. + +When doing wildcard completion, a directory "a/" sorted after "a-b". Now +recognize path separators when sorting files. + +Non-Unix systems: When editing "c:/dir/../file" and "c:/file" they were +created as different buffers, although it's the same file. Expand to a full +file name also when an absolute name contains "..". + +"g&" didn't repeat the last substitute properly. + +When 'clipboard' was set to "unnamed", a "Y" command would not write to "0. +Now make a copy of register 0 to the clipboard register. + +When the search pattern matches in many ways, it could not always be +interrupted with a CTRL-C. And CTRL-C would have to be hit once for every +line when 'hlsearch' is on. +When 'incsearch' is on and interrupting the search for a match, don't abandon +the command line. + +When turning a directory name into a full path, e.g., with fnamemodify(), +sometimes a slash was added. Make this consistent: Don't add a slash. + +When a file name contains a "!", using it in a shell command will cause +trouble: ":!cat %". Escape the "!" to avoid that. Escape it another time +when 'shell' contains "sh". + +Completing a file name that has a tail that starts with a "~" didn't work: +":e view/~<Tab>". + +Using a ":command" argument that contains < and > but not for a special +argument was not skipped properly. + +The DOS install program: On Win2000 the check for a vim.exe or gvim.exe in +$PATH didn't work, it always found it in the current directory. +Rename the vim.exe in the current dir to avoid this. (Walter Briscoe) + +In the MS-DOS/Windows install program, use %VIM% instead of an absolute path, +so that moving Vim requires only one change in the batch file. + +Mac: mch_FullName() changed the "fname" argument and didn't always initialize +the buffer. + +MS-DOS: mch_FullName() didn't fix forward/backward slashes in an absolute file +name. + +"echo expand("%:p:h")" with an empty file name removed one directory name on +MS-DOS. For Unix, when the file name is a directory, the directory name was +removed. Now make it consistent: "%:p" adds a path separator for all systems, +but no path separator is added in other situations. + +Unix: When checking for a CTRL-C (could happen any time) and there is an X +event (e.g., clipboard updated) and there is typeahead, Vim would hang until a +character was typed. + +MS-DOS, MS-Windows and Amiga: expanding "$ENV/foo" when $ENV ends in a colon, +had the slash removed. + +":he \^=" gave an error for using \_. ":he ^=" didn't find tag :set^=. Even +"he :set^=" didn't find it. + +A tags file name "D:/tags" was used as file "tags" in "D:". That doesn't work +when the current path for D: isn't the root of the drive. + +Removed calls to XtInitializeWidgetClass(), they shouldn't be necessary. + +When using a dtterm or various other color terminals, and the Normal group has +been set to use a different background color, the background wouldn't always +be displayed with that color. Added check for "ut" termcap entry: If it's +missing, clearing the screen won't give us the current background color. Need +to draw each character instead. Vim now also works when the "cl" (clear +screen) termcap entry is missing. + +When repeating a "/" search command with a line offset, the "n" did use the +offset but didn't make the motion linewise. Made "d/pat/+2" and "dn" do the +same. + +Win32: Trying to use ":tearoff" for a menu that doesn't exist caused a crash. + +OpenPTY() didn't work on Sequent. Add a configure check for getpseudotty(). + +C-indenting: Indented a line starting with ")" with the matching "(", but not +a line starting with "x)" looks strange. Also compute the indent for aligning +with items inside the () and use the lowest indent. + +MS-DOS and Windows: ":n *.vim" also matched files ending in "~". +Moved mch_expandpath() from os_win16.c and os_msdos.c to misc1.c, they are +equal. + +Macintosh: (Dany St-Amant) +- In Vi-compatible mode didn't read files with CR line separators. +- Fixed a bug in the handling of Activate/Deactivate Event +- Fixed a bug in gui_mch_dialog (using wrong pointer) + +Multibyte GDK XIM: While composing a multibyte-word, if user presses a +mouse button, then the word is removed. It should remain and composing end. +(Sung-Hyun Nam) + +MS-DOS, MS-Windows and OS/2: When reading from stdin, automatic CR-LF +conversion by the C library got in the way of detecting a "dos" 'fileformat'. + +When 'smartcase' is set, patterns with "\S" would also make 'ignorecase' +reset. + +When clicking the mouse in a column larger than 222, it moved to the first +column. Can't encode a larger number in a character. Now limit the number to +222, don't jump back to the first column. + +GUI: In some versions CSI would cause trouble, either when typed directly or +when part of a multi-byte sequence. + +When using multibyte characters in a ":normal" command, a trailing byte that +is CSI or K_SPECIAL caused problems. + +Wildmenu didn't handle multi-byte characters. + +":sleep 10" could not be interrupted on Windows, while "gs" could. Made them +both work the same. + +Unix: When waiting for a character is interrupted by an X-windows event (e.g., +to obtain the contents of the selection), the wait time would not be honored. +A message could be overwritten quickly. Now compute the remaining waiting +time. + +Windows: Completing "\\share\c$\S" inserted a backslash before the $ and then +the name is invalid. Don't insert the backslash. + +When doing an auto-write before ":make", IObuff was overwritten and the wrong +text displayed later. + +On the Mac the directories "c:/tmp" and "c:/temp" were used in the defaults +for 'backupdir' and 'directory', they don't exist. + +The check for a new file not to be on an MS-DOS filesystem created the file +temporarily, which can be slow. Don't do this if there is another check for +the swap file being on an MS-DOS filesystem. + +Don't give the "Changing a readonly file" warning when reading from stdin. + +When using the "Save As" menu entry and not entering a file name, would get an +error message for the trailing ":edit #". Now only do that when the +alternate file name was changed. + +When Vim owns the X11 selection and is being suspended, an application that +tries to use the selection hangs. When Vim continues it could no longer +obtain the selection. Now give up the selection when suspending. + +option.h and globals.h were included in some files, while they were already +included in vim.h. Moved the definition of EXTERN to vim.h to avoid doing it +twice. + +When repeating an operator that used a search pattern and the search pattern +contained characters that have a special meaning on the cmdline (e.g., CTRL-U) +it didn't work. + +Fixed various problems with using K_SPECIAL (0x80) and CSI (0x9b) as a byte in +a (multibyte) character. For example, the "r" command could not be repeated. + +The DOS/Windows install program didn't always work from a directory with a +long filename, because $VIM and the executable name would not have the same +path. + +Multi-byte: +- Using an any-but character range [^x] in a regexp didn't work for UTF-8. + (Muraoka Taro) +- When backspacing over inserted characters in Replace mode multi-byte + characters were not handled correctly. (Muraoka Taro) +- Search commands "#" and "*" didn't work with multibyte characters. (Muraoka + Taro) +- Word completion in Insert mode didn't work with multibyte characters. + (Muraoka Taro) +- Athena/Motif GUI: when 'linespace' is non-zero the cursor would be drawn too + wide (number of bytes instead of cell width). +- When changing 'encoding' to "euc-jp" and inserting a character Vim would + crash. +- For euc-jp characters positioning the cursor would sometimes be wrong. + Also, with two characters with 0x8e leading byte only the first one would be + displayed. +- When using DYNAMIC_ICONV on Win32 conversion might fail because of using the + wrong error number. (Muraoka Taro) +- Using Alt-x in the GUI while 'encoding' was set to "utf-8" didn't produce + the right character. +- When using Visual block selection and only the left halve of a double-wide + character is selected, the highlighting continued to the end of the line. +- Visual-block delete didn't work properly when deleting the right halve of a + double-wide character. +- Overstrike mode for the cmdline replaced only the first byte of a multibyte + character. +- The cursor in Replace mode (also in the cmdline) was to small on a + double-wide character. +- When a multibyte character contained a 0x80 byte, it didn't work (was using + a CSI byte instead). (Muraoka Taro) +- Wordwise selection with the mouse didn't work. +- Yanking a modeless selection of multi-byte characters didn't work. +- When 'selection' is "exclusive", selecting a word that ends in a multi-byte + character used wrong highlighting for the following character. + +Win32 with Make_mvc.mak: Didn't compile for debugging. (Craig Barkhouse) + +Win32 GUI: When "vimrun.exe" is used to execute an external command, don't +give a message box with the return value, it was already printed by vimrun. +Also avoid printing the return value of the shell when ":silent!" is used. + +Win32: selecting a lot of text and using the "find/replace" dialog caused a +crash. + +X11 GUI: When typing a character with the 8th bit set and the Meta/Alt +modifier, the modifier was removed without changing the character. + +Truncating a message to make it fit on the command line, using "..." for the +middle, didn't always compute the space correctly. + +Could not imap <C-@>. Now it works like <Nul>. + +VMS: +- Fixed a few things for VAXC. os_vms_fix.com had some strange CTRL-M + characters. (Zoltan Arpadffy and John W. Hamill) +- Added VMS-specific defaults for the 'isfname' and 'isprint' options. + (Zoltan Arpadffy) +- Removed os_vms_osdef.h, it's no longer used. + +The gzip plugin used a ":normal" command, this doesn't work when dropping a +compressed file on Vim. + +In very rare situations a binary search for a tag would fail, because an +uninitialized value happens to be half the size of the tag file. (Narendran) + +When using BufEnter and BufLeave autocommands to enable/disable a menu, it +wasn't updated right away. + +When doing a replace with the "c"onfirm flag, the cursor was positioned after +the ruler, instead of after the question. With a long replacement string the +screen could scroll up and cause a "more" prompt. Now the message is +truncated to make it fit. + +Motif: The autoconf check for the Xp library didn't work. + +When 'verbose' is set to list lines of a sourced file, defining a function +would reset the counter used for the "more" prompt. + +In the Win32 find/replace dialog, a '/' character caused problems. Escape it +with a backslash. + +Starting a shell with ":sh" was different from starting a shell for CTRL-Z +when suspending doesn't work. They now work the same way. + +Jumping to a file mark while in a changed buffer gave a "mark not set" error. + +":execute histget("cmd")" causes an endless loop and crashed Vim. Now catch +all commands that cause too much recursiveness. + +Removed "Failed to open input method" error message, too many people got this +when they didn't want to use a XIM. + +GUI: When compiled without the +windows feature, the scrollbar would start +below line one. + +Removed the trick with redefining character class functions from regexp.c. + +Win32 GUI: Find dialog gives focus back to main window, when typing a +character mouse pointer is blanked, it didn't reappear when moving it in the +dialog window. (Vince Negri) + +When recording and typing a CTRL-C, no character was recorded. When in Insert +mode or cancelling half a command, playing back the recorded sequence wouldn't +work. Now record the CTRL-C. + +When the GUI was started, mouse codes for DEC and netterm were still checked +for. + +GUI: When scrolling and 'writedelay' is non-zero, the character under the +cursor was displayed in the wrong position (one line above/below with +CTRL-E/CTRL-Y). + +A ":normal" command would reset the 'scrollbind' info. Causes problems when +using a ":normal" command in an autocommand for opening a file. + +Windows GUI: a point size with a dot, like "7.5", wasn't recognized. (Muraoka +Taro) + +When 'scrollbind' wasn't set would still remember the current position, +wasting time. + +GTK: Crash when 'shell' doesn't exist and doing":!ls". Use _exit() instead of +exit() when the child couldn't execute the shell. + +Multi-byte: +- GUI with double-byte encoding: a mouse click in left halve of double-wide + character put the cursor in previous char. +- Using double-byte encoding and 'selection' is "exclusive": "vey" and "^Vey" + included the character after the word. +- When using a double-byte encoding and there is a lead byte at the end of the + line, the preceding line would be displayed. "ga" also showed wrong info. +- "gf" didn't include multi-byte characters before the cursor properly. + (Muraoka Taro) + +GUI: The cursor was sometimes not removed when scrolling. Changed the policy +from redrawing the cursor after each call to gui_write() to only update it at +the end of update_screen() or when setting the cursor position. Also only +update the scrollbars at the end of update_screen(), that's the only place +where the window text may have been scrolled. + +Formatting "/*<Tab>long text", produced "* <Tab>" in the next line. Now +remove the space before the Tab. +Formatting "/*<Tab> long text", produced "* <Tab> long text" in the next +line. Now keep the space after the Tab. + +In some places non-ASCII alphabetical characters were accepted, which could +cause problems. For example, ":X" (X being such a character). + +When a pattern matches the end of the line, the last character in the line was +highlighted for 'hlsearch'. That looks wrong for "/\%3c". Now highlight the +character just after the line. + +Motif: If a dialog was closed by clicking on the "X" of the window frame Vim +would no longer respond. + +When using CTRL-X or CTRL-A on a number with many leading zeros, Vim would +crash. (Matsumoto) + +When 'insertmode' is set, the mapping in mswin.vim for CTRL-V didn't work in +Select mode. Insert mode wasn't restarted after overwriting the text. +Now allow nesting Insert mode with insert and change commands. CTRL-O +cwfoo<Esc> now also works. + +Clicking with the right mouse button in another window started Visual mode, +but used the start position of the current window. Caused ml_get errors when +the line number was invalid. Now stay in the same window. + +When 'selection' is "exclusive", "gv" sometimes selected one character fewer. + +When 'comments' contains more than one start/middle/end triplet, the optional +flags could be mixed up. Also didn't align the end with the middle part. + +Double-right-click in Visual mode didn't update the shown mode. + +When the Normal group has a font name, it was never used when starting up. +Now use it when 'guifont' and 'guifontset' are empty. +Setting a font name to a highlight group before the GUI was started didn't +work. + +"make test" didn't use the name of the generated Vim executable. + +'cindent' problems: +- Aligned with an "else" inside a do-while loop for a line below that loop. + (Meikel Brandmeyer) +- A line before a function would be indented even when terminated with a + semicolon. (Meikel Brandmeyer) +- 'cindent' gave too much indent to a line after a "};" that ends an array + init. +- Support declaration lines ending in "," and "\". (Meikel Brandmeyer) +- A case statement inside a do-while loop was used for indenting a line after + the do-while loop. (Meikel Brandmeyer) +- When skipping a string in a line with one double quote it could continue in + the previous line. (Meikel Brandmeyer) + +When 'list' is set, 'hlsearch' didn't highlight a match at the end of the +line. Now highlight the '$'. + +The Paste menu item in the menu bar, the popup menu and the toolbar were all +different. Now made them all equal to how it was done in mswin.vim. + +st_dev can be smaller than "unsigned". The compiler may give an overflow +warning. Added a configure check for dev_t. + +Athena: closing a confirm() dialog killed Vim. + +Various typos in the documentation. (Matt Dunford) + +Python interface: The definition of _DEBUG could cause trouble, undefine it. +The error message for not being able to load the shared library wasn't +translated. (Muraoka Taro) + +Mac: (Dany St-Amant and Axel Kielhorn) +- Several fixes. +- Vim was eating 80% of the CPU time. +- The project os_mac.pbxproj didn't work, Moved it to a subdirectory. +- Made the menu priority work for the menubar. +- Fixed a problem with dragging the scrollbar. +- Cleaned up the various #ifdefs. + +Unix: When catching a deadly signal and we keep getting one use _exit() to +exit in a quick and dirty way. + +Athena menu ordering didn't work correctly. (David Harrison) + +A ":make" or ":grep" command with a long argument could cause a crash. + +Doing ":new file" and using "Quit" for the ATTENTION dialog still opened a new +window. + +GTK: When starting the GUI and there is an error in the .vimrc file, don't +present the wait-return prompt, since the message was given in the terminal. + +When there was an error in a .vimrc file the terminal where gvim was started +could be cleared. Set msg_row in main.c before writing any messages. + +GTK and X11 GUI: When trying to read characters from the user (e.g. with +input()) before the Vim window was opened caused Vim to hang when it was +started from the desktop. + +OS/390 uses 31 bit pointers. That broke some computations with MAX_COL. +Reduce MAX_COL by one bit for OS/390. (Ralf Schandl) + +When defining a function and it already exists, Vim didn't say it existed +until after typing it. Now do this right away when typing it. + +The message remembered for displaying later (keep_msg) was sometimes pointing +into a generic buffer, which might be changed by the time the message is +displayed. Now make a copy of the message. + +When using multi-byte characters in a menu and a trailing byte is a backslash, +the menu would not be created correctly. (Muraoka Taro) +Using a multibyte character in the substitute string where a trail byte is a +backslash didn't work. (Muraoka Taro) + +When setting "t_Co" in a vimrc file, then setting it automatically from an +xterm termresponse and then setting it again manually caused a crash. + +When getting the value of a string option that is not supported, the number +zero was returned. This breaks a check like "&enc == "asdf". Now an empty +string is returned for string options. + +Crashed when starting the GTK GUI while using 'notitle' in the vimrc, setting +'title' in the gvimrc and starting the GUI with ":gui". Closed the connection +to the X server accidentally. + +Had to hit return after selecting an entry for ":ts". + +The message from ":cn" message was sometimes cleared. Now display it after +redrawing if it doesn't cause a scroll (truncated when necessary). + +hangulin.c didn't compile when the GUI was disabled. Disable it when it won't +work. + +When setting a termcap option like "t_CO", the value could be displayed as +being for a normal key with a modifier, like "<M-=>". + +When expanding the argument list, entries which are a directory name did not +get included. This stopped "vim c:/" from opening the file explorer. + +":syn match sd "^" nextgroup=asdf" skipped the first column and matched the +nextgroup in the second column. + +GUI: When 'lazyredraw' is set, 'showmatch' didn't work. Required flushing +the output. + +Don't define the <NetMouse> termcode in an xterm, reduces the problem when +someone types <Esc> } in Insert mode. + +Made slash_adjust() work correctly for multi-byte characters. (Yasuhiro +Matsumoto) +Using a filename in Big5 encoding for autocommands didn't work (backslash in +trailbyte). (Yasuhiro Matsumoto) + +DOS and Windows: Expanding *.vim also matched file.vimfoo. Expand path like +Unix to avoid problems with Windows dir functions. Merged the DOS and Win32 +functions. + +Win32: Gvimext could not edit more than a few files at once, the length of the +argument was fixed. + +"ls -1 * | xargs vim" worked, but the input was in cooked mode. Now switch to +raw mode when needed. Use dup() to copy the stderr file descriptor to stdin +to make shell commands work. No longer requires an external program to do +this. + +When using ":filetype off", ftplugin and indent usage would be switched off at +the same time. Don't do this, setting 'filetype' manually can still use them. + +GUI: When writing a double-byte character, it could be split up in two calls +to gui_write(), which doesn't work. Now flush before the output buffer +becomes full. + +When 'laststatus' is set and 'cmdheight' is two or bigger, the intro message +would be written over the status line. +The ":intro" command didn't work when there wasn't enough room. + +Configuring for Ruby failed with a recent version of Ruby. (Akinori Musha) + +Athena: When deleting the directory in which Vim was started, using the file +browser made Vim exit. Removed the use of XtAppError(). + +When using autoconf 2.50, UNIX was not defined. Moved the comment for "#undef +UNIX" to a separate line. + +Win32: Disabled _OnWindowPosChanging() to make maximize work better. + +Win32: Compiling with VC 4.0 didn't work. (Walter Briscoe) + +Athena: +- Finally fixed the problems with deleting a menu. (David Harrison) +- Athena: When closing the confirm() dialog, worked like OK was pressed, + instead of Cancel. + +The file explorer didn't work in compatible mode, because of line +continuation. + +Didn't give an error message for ":digraph a". + +When using Ex mode in the GUI and typing a special key, <BS> didn't delete it +correctly. Now display '?' for a special key. + +When an operator is pending, clicking in another window made it apply to that +window, even though the line numbers could be beyond the end of the buffer. + +When a function call doesn't have a terminating ")" Vim could crash. + +Perl interface: could crash on exit with perl 5.6.1. (Anduin Withers) + +Using %P in 'errorformat' wasn't handled correctly. (Tomas Zellerin) + +Using a syntax cluster that includes itself made Vim crash. + +GUI: With 'ls' set to 2, dragging the status line all the way up, then making +the Vim window smaller: Could not the drag status line anymore. + +"vim -c startinsert! file" placed cursor on last char of a line, instead of +after it. A ":set" command in the buffer menu set w_set_curswant. Now don't +do this when w_curswant is MAXCOL. + +Win32: When the gvim window was maximized and selecting another font, the +window would no longer fill the screen. + +The line with 'pastetoggle' in ":options" didn't show the right value when it +is a special key. Hitting <CR> didn't work either. + +Formatting text, resulting in a % landing in the first line, repeated the % in +the following lines, like it's the start of a comment. + +GTK: When adding a toolbar item while gvim is already running, it wasn't +possible to use the tooltip. Now it works by adding the tooltip first. + +The output of "g CTRL-G" mentioned "Char" but it's actually bytes. + +Searching for the end of a oneline region didn't work correctly when there is +an offset for the highlighting. + +Syntax highlighting: When synchronizing on C-comments, //*/ was seen as the +start of a comment. + +Win32: Without scrollbars present, the MS mouse scroll wheel didn't work. +Also handle the scrollbars when they are not visible. + +Motif: When there is no right scrollbar, the bottom scrollbar would still +leave room for it. (Martin Dalecki) + +When changing 'guicursor' and the value is invalid, some of the effects would +still take place. Now first check for errors and only make the new value +effective when it's OK. + +Using "A" In Visual block mode, appending to lines that don't extend into the +block, padding was wrong. + +When pasting a block of text, a character that occupies more than one screen +column could be deleted and spaces inserted instead. Now only do that with a +tab. + +Fixed conversion of documentation to HTML using Perl. (Dan Sharp) + +Give an error message when a menu name starts with a dot. + +Avoid a hang when executing a shell from the GUI on HP-UX by pushing "ptem" +even when sys/ptem.h isn't present. + +When creating the temp directory, make sure umask is 077, otherwise the +directory is not accessible when it was set to 0177. + +Unix: When resizing the window and a redraw is a bit slow, could get a window +resize event while redrawing, resulting in a messed up window. Any input +(e.g., a mouse click) would redraw. + +The "%B" item in the status line became zero in Insert mode (that's normal) +for another than the current window. + +The menu entries to convert to xxd and back didn't work in Insert mode. + +When ":vglobal" didn't find a line where the pattern doesn't match, the error +message would be the wrong way around. + +When ignoring a multi-line error message with "%-A", the continuation lines +would be used anyway. (Servatius Brandt) + +"grx" on a double-wide character inserted "x", instead of replacing the +character with "x ". "gR" on <xx> ('display' set the "uhex") didn't replace +at all. When doing "gRxx" on a control character the first "x" would be +inserted, breaking the alignment. + +Added "0)" to 'cinkeys', so that when typing a ) it is put in the same place +as where "==" would put it. + +Win32: When maximized, adding/removing toolbar didn't resize the text area. + +When using <C-RightMouse> a count was discarded. + +When typing CTRL-V and <RightMouse> in the command line, would insert +<LeftMouse>. + +Using "vis" or "vas" when 'selection' is exclusive didn't include the last +character. + +When adding to an option like 'grepprg', leading space would be lost. Don't +expand environment variables when there is no comma separating the items. + +GUI: When using a bold-italic font, would still use the bold trick and +underlining. + +Motif: The default button didn't work in dialogs, the first one was always +used. Had to give input focus to the default button. + +When using CTRL-T to jump within the same file, the '' mark wasn't set. + +Undo wasn't Vi compatible when using the 'c' flag for ":s". Now it undoes the +whole ":s" command instead of each confirmed replacement. + +The Buffers menu, when torn-off, disappeared when being refreshed. Add a +dummy item to avoid this. + +Removed calling msg_start() in main(), it should not be needed. + +vim_strpbrk() did not support multibyte characters. (Muraoka Taro) + +The Amiga version didn't compile, the code was too big for relative jumps. +Moved a few files from ex_docmd.c to ex_cmds2.c + +When evaluating the "= register resulted in the "= register being changed, Vim +would crash. + +When doing ":view file" and it fails, the current buffer was made read-only. + +Motif: For some people the separators in the toolbar disappeared when resizing +the Vim window. (Martin Dalecki) + +Win32 GUI: when setting 'lines' to a huge number, would not compute the +available space correctly. Was counting the menu height twice. + +Conversion of the docs to HTML didn't handle the line with the +quickfix tag +correctly. (Antonio Colombo) + +Win32: fname_case() didn't handle multi-byte characters correctly. (Yasuhiro +Matsumoto) + +The Cygwin version had trouble with fchdir(). Don't use that function for +Cygwin. + +The generic check in scripts.vim for "conf" syntax was done before some checks +in filetype.vim, resulting in "conf" syntax too often. + +Dos32: Typing lagged behind. Would wait for one biostick when checking if a +character is available. + +GTK: When setting 'columns' while starting up "gvim", would set the width of +the terminal it was started in. + +When using ESC in Insert mode, an autoindent that wraps to the next line +caused the cursor to move to the end of the line temporarily. When the +character before the cursor was a double-wide multi-byte character the cursor +would be on the right halve, which causes problems with some terminals. + +Didn't handle multi-byte characters correctly when expanding a file name. +(Yasuhiro Matsumoto) + +Win32 GUI: Errors generated before the GUI is decided to start were not +reported. + +globpath() didn't reserve enough room for concatenated results. (Anduin +Withers) + +When expanding an option that is very long already, don't do the expansion, it +would be truncated to MAXPATHL. (Anduin Withers) + +When 'selection' is "exclusive", using "Fx" in Visual mode only moved until +just after the character. + +When using IME on the console to enter a file name, the screen may scroll up. +Redraw the screen then. (Yasuhiro Matsumoto) + +Motif: In the find/replace dialog the "Replace" button didn't work first time, +second time it replaced all matches. Removed the use of ":s///c". +GTK: Similar problems with the find/replace dialog, moved the code to a common +function. + +X11: Use shared GC's for text. (Martin Dalecki) + +"]i" found the match under the cursor, instead of the first one below it. +Same for "]I", "] CTRL-I", "]d", "]D" and "] CTRL-D". + +Win16: When maximized and the font is changed, don't change the window size. +(Vince Negri) + +When 'lbr' is set, deleting a block of text could leave the cursor in the +wrong position. + +Win32: When opening a file with the "Edit with Vim" popup menu entry, +wildcards would cause trouble. Added the "--literal" argument to avoid +expanding file names. + +When using "gv", it didn't restore that "$" was used in Visual block mode. + +Win32 GUI: While waiting for a shell command to finish, the window wasn't +redrawn at all. (Yasuhiro Matsumoto) + +Syntax highlighting: A match that continues on a next line because of a +contained region didn't end when that region ended. + +The ":s" command didn't allow flags like 'e' and 'i' right after it. + +When using ":s" to split a line, marks were moved to the next line. Vi keeps +them in the first line. + +When using ":n" ":rew", the previous context mark was at the top of the file, +while Vi puts it in the same place as the cursor. Made it Vi compatible. + +Fixed Vi incompatibility: Text was not put in register 1 when using "c" and +"d" with a motion character, when deleting within one line with one of the +commands: % ( ) `<character> / ? N n { } + +Win32 GUI: The tooltip for tear-off items remained when the tear-off item was +no longer selected. + +GUI: When typing ":" at the more prompt, would return to Normal mode and not +redraw the screen. + +When starting Vim with an argument "-c g/at/p" the printed lines would +overwrite each other. + +BeOS: Didn't compile. Configure didn't add the os_beos files, the QNX check +removed them. Various changes to os_beos.cc. (Joshua Haberman) +Removed the check for the hardware platform, the BeBox has not been produced +for a long time now. + +Win32 GUI: don't use a message box when the shell returns an error code, +display the message in the Vim window. + +Make_mvc.mak always included "/debug" for linking. "GUI=no" argument didn't +work. Use "DEBUG=yes" instead of "DEBUG=1" to make it consistent. (Dan Sharp) + +When a line in the tags file ended in ;" (no TAB following) the command would +not be recognized as a search command. + +X11: The inputMethod resource never worked. Don't use the "none" input method +for SGI, it apparently makes the first character in Input method dropped. + +Fixed incorrect tests in os_mac.h. (Axel Kielhorn) + +Win32 console: When the console where Vim runs in is closed, Vim could hang in +trying to restore the window icon. (Yasuhiro Matsumoto) + +When using ":3call func()" or ":3,3call func() the line number was ignored. + +When 'showbreak' and 'linebreak' were both set, Visual highlighting sometimes +continued until the end of the line. + +GTK GUI: Tearoff items were added even when 'guioptions' didn't contain 't' +when starting up. + +MS-Windows: When the current directory includes a "~", searching files with +"gf" or ":find" didn't work. A "$" in the directory had the same problem. +Added mch_has_exp_wildcard() functions. + +When reducing the Vim window height while starting up, would get an +out-of-memory error message. + +When editing a very long search pattern, 'incsearch' caused the redraw of the +command line to fail. + +Motif GUI: On some systems the "Help" menu would not be on the far right, as +it should be. On some other systems (esp. IRIX) the command line would not +completely show. Solution is to only resize the menubar for Lesstif. + +Using "%" in a line that contains "\\" twice didn't take care of the quotes +properly. Now make a difference between \" and \\". + +For non-Unix systems a dummy file is created when finding a swap name to +detect a 8.3 filesystem. When there is an existing swap file, would get a +warning for the file being created outside of Vim. Also, when closing the Vim +window the file would remain. + +Motif: The menu height was always computed, using a "-menuheight" argument +was setting the room for the command line. Now make clear the argument is not +supported. + +For some (EBCDIC) systems, POUND was equal to '#'. Added an #if for that to +avoid a duplicate case in a switch. + +The GUI may have problems when forking. Always call _exit() instead of exit() +in the parent, the child will call exit(). + +Win32 GUI: Accented characters were often wrong in dialogs and tearoff menus. +Now use CP_ACP instead of CP_OEMCP. (Vince Negri) + +When displaying text with syntax highlighting causes an error (e.g., running +out of stack) the syntax highlighting is disabled to avoid further messages. + +When a command in a .vimrc or .gvimrc causes an ATTENTION prompt, and Vim was +started from the desktop (no place to display messages) it would hang. Now +open the GUI window early to be able to display the messages and pop up the +dialog. + +"r<CR>" on a multi-byte character deleted only the first byte of the +character. "3r<CR>" deleted three bytes instead of three characters. + +When interrupting reading a file, Vi considers the buffer modified. Added the +'i' flag in 'cpoptions' flag for this (we don't want it modified to be able to +do ":q"). + +When using an item in 'guicursor' that starts with a colon, Vim would get +stuck or crash. + +When putting a file mark in a help file and later jumping back to it, the +options would not be set. Extended the modeline in all help files to make +this work better. + +When a modeline contained "::" the local option values would be printed. Now +ignore it. + +Some help files did not use a 8.3 names, which causes problems when using +MS-DOS unzip. Renamed "multibyte.txt" to "mbyte.txt", "rightleft.txt" to +"rileft.txt", "tagsearch.txt" to "tagsrch.txt", "os_riscos.txt" to +"os_risc.txt". + +When Visual mode is blockwise, using "iw" or "aw" made it characterwise. That +doesn't seem right, only do this when in linewise mode. But then do it +always, not only when start and end of Visual mode are equal. + +When using "viw" on a single-letter word and 'selection' is exclusive, would +not include the word. + +When formatting text from Insert mode, using CTRL-O, could mess up undo +information. + +While writing a file (also for the backup file) there was no check for an +interrupt (hitting CTRL-C). Vim could hang when writing a large file over a +slow network, and moving the mouse didn't make it appear (when 'mousehide' is +set) and the screen wasn't updated in the GUI. Also allow interrupting when +syncing the swap file, it can take a long time. + +When using ":mksession" while there is help window, it would later be restored +to the right file but not marked as a help buffer. ":help" would then open +another window. Now use the value "help" for 'buftype' to mark a help buffer. + +The session file contained absolute path names in option values, that doesn't +work when the home directory depends on the situation. Replace the home +directory with ~/ when possible. + +When using 'showbreak' a TAB just after the shown break would not be counted +correctly, the cursor would be positioned wrong. + +With 'showbreak' set to "--->" or "------->" and 'sts' set to 4, inserting +tabs did not work right. Could cause a crash. Backspacing was also wrong, +could get stuck at a line break. + +Win32: crashed when tearing off a menu with over 300 items. + +GUI: A menu or toolbar item would appear when only a tooltip was defined for +it. + +When 'scrolloff' is non-zero and "$" is in 'cpoptions', using "s" while the +last line of the file is the first line on screen, the text wasn't displayed. + +When running "autoconf", delete the configure cache to force starting cleanly +when configure is run again. + +When changing the Normal colors for cterm, the value of 'background' was +changed even when the GUI was used. + +The warning for a missing vimrun.exe was always given on startup, but some +people just editing a file don't need to be bothered by it. Only show it when +vimrun would be used. + +When using "%" in a multibyte text it could get confused by trailbytes that +match. (Muraoka Taro) + +Termcap entry for RiscOS was wrong, using 7 and 8 in octal codes. + +Athena: The title of a dialog window and the file selector window were not +set. (David Harrison) + +The "htmlLink" highlight group specified colors, which gives problems when +using a color scheme. Added the "Underlined" highlight group for this. + +After using ":insert" or ":change" the '[ mark would be one line too low. + +When looking for the file name after a match with 'include' one character was +skipped. Same for 'define'. + +Win32 and DJGPP: When editing a file with a short name in a directory, and +editing the same file but using the long name, would end up with two buffers +on the same file. + +"gf" on a filename that starts with "../" only worked when the file being +edited is in the current directory. An include file search didn't work +properly for files starting with "../" or ".". Now search both relative to +the file and to the current directory. + +When 'printheader', 'titlestring', 'iconstring', 'rulerformat' or 'statusline' +contained "%{" but no following "}" memory was corrupted and a crash could +happen. + +":0append" and then inserting two lines did not redraw the blank lines that +were scrolled back down. + +When using insert mode completion in a narrow window, the message caused a +scroll up. Now shorten the message if it doesn't fit and avoid writing the +ruler over the message. + +XIM still didn't work correctly on some systems, especially SGI/IRIX. Added +the 'imdisable' option, which is set by default for that system. + +Patch 6.0aw.008 +Problem: When the first character of a file name is over 127, the Buffers + menu entry would get a negative priority and cause problems. +Solution: Reduce the multiplier for the first character when computing + the hash value for a Buffers menu entry. +Files: runtime/menu.vim + +Patch 6.0aw.010 +Problem: Win32: ":browse edit dir/dir" didn't work. (Vikas) +Solution: Change slashes to backslashes in the directory passed to the file + browser. +Files: src/gui_w48.c + +Athena file browser: On some systems wcstombs() can't be used to get the +length of a multi-byte string. Use the maximum length then. (Yasuhiro +Matsumoto) + +Patch 6.0ax.001 +Problem: When 'patchmode' is set, appending to a file gives an empty + original file. (Ed Ralston) +Solution: Also make a backup copy when appending and 'patchmode' is set. +Files: src/fileio.c + +Patch 6.0ax.002 +Problem: When 'patchmode' is set, appending to a compressed file gives an + uncompressed original file. (Ed Ralston) +Solution: Create the original file before decompressing. +Files: runtime/plugin/gzip.vim + +Patch 6.0ax.005 +Problem: Athena file selector keeps the title of the first invocation. +Solution: Set the title each time the file selector is opened. (David + Harrison) +Files: src/gui_at_fs.c + +Patch 6.0ax.007 +Problem: When using GPM (mouse driver in a Linux console) a double click is + interpreted as a scroll wheel click. +Solution: Check if GPM is being used when deciding if a mouse event is for + the scroll wheel. +Files: src/term.c + +Patch 6.0ax.010 +Problem: The Edit.Save menu and the Save toolbar button didn't work when + the buffer has no file name. +Solution: Use a file browser to ask for a file name. Also fix the toolbar + Find item in Visual mode. +Files: runtime/menu.vim + +Patch 6.0ax.012 +Problem: When 'cpoptions' contains "$", breaking a line for 'textwidth' + doesn't redraw properly. (Stefan Schulze) +Solution: Remove the dollar before breaking the line. +Files: src/edit.c + +Patch 6.0ax.014 +Problem: Win32: On Windows 98 ":make -f file" doesn't work when 'shell' is + "command.com" and 'makeprg' is "nmake". The environment isn't + passed on to "nmake". +Solution: Also use vimrun.exe when redirecting the output of a command. +Files: src/os_win32.c + +Patch 6.0ax.016 +Problem: The version number was reported wrong in the intro screen. +Solution: Check for a version number with two additional letters. +Files: src/version.c + +Patch 6.0ax.019 +Problem: When scrolling a window with folds upwards, switching to another + vertically split window and back may not update the scrollbar. +Solution: Limit w_botline to the number of lines in the buffer plus one. +Files: src/move.c + + +============================================================================== +VERSION 6.1 *version-6.1* + +This section is about improvements made between version 6.0 and 6.1. + +This is a bug-fix release, there are not really any new features. + + +Changed *changed-6.1* +------- + +'iminsert' and 'imsearch' are no longer set as a side effect of defining a +language-mapping using ":lmap". + + +Added *added-6.1* +----- + +Syntax files: +ampl AMPL (David Krief) +ant Ant (Johannes Zellner) +baan Baan (Her van de Vliert) +cs C# (Johannes Zellner) +lifelines Lifelines (Patrick Texier) +lscript LotusScript (Taryn East) +moo MOO (Timo Frenay) +nsis NSIS (Alex Jakushev) +ppd Postscript Printer Description (Bjoern Jacke) +rpl RPL/2 (Joel Bertrand) +scilab Scilab (Benoit Hamelin) +splint Splint (Ralf Wildenhues) +sqlj SQLJ (Andreas Fischbach) +wvdial WvDial (Prahlad Vaidyanathan) +xf86conf XFree86 config (Nikolai Weibull) +xmodmap Xmodmap (Nikolai Weibull) +xslt Xslt (Johannes Zellner) +monk Monk (Mike Litherland) +xsd Xsd (Johannes Zellner) +cdl CDL (Raul Segura Acevedo) +sendpr Send-pr (Hendrik Scholz) + +Added indent file for Scheme. (Dorai Sitaram) +Added indent file for Prolog. (Kontra Gergely) +Added indent file for Povray (David Necas) +Added indent file for IDL (Aleksandar Jelenak) +Added C# indent and ftplugin scripts. + +Added Ukrainian menu translations. (Bohdan Vlasyuk) +Added ASCII version of the Czech menus. (Jiri Brezina) + +Added Simplified Chinese translation of the tutor. (Mendel L Chan) + +Added Russian keymap for yawerty keyboard. + +Added an explanation of using the vimrc file in the tutor. +Changed tutor.vim to get the right encoding for the Taiwainese tutor. + +Added Russian tutor. (Andrey Kiselev) +Added Polish tutor. (Mikolaj Machowski) + +Added darkblue color scheme. (Bohdan Vlasyuk) + +When packing the dos language archive automatically generate the .mo files +that are required. + +Improved NSIS script to support NSIS 180. Added icons for the +enabled/disabled status. (Mirek Pruchnik) + +cp1250 version of the Slovak message translations. + +Compiler plugins for IRIX compilers. (David Harrison) + + +Fixed *fixed-6.1* +----- + +The license text was updated to make the meaning clearer and make it +compatible with the GNU GPL. Otherwise distributors have a problem when +linking Vim with a GPL'ed library. + +When installing the "less.sh" script it was not made executable. (Chuck Berg) + +Win32: The "9" key on the numpad wasn't working. (Julian Kinraid) + +The NSIS install script didn't work with NSIS 1.80 or later. Also add +Vim-specific icons. (Pruchnik) + +The script for conversion to HTML contained an "if" in the wrong place. +(Michael Geddes) + +Allow using ":ascii" in the sandbox, it's harmless. + +Removed creat() from osdef2.h.in, it wasn't used and may cause a problem when +it's redefined to creat64(). + +The text files in the VisVim directory were in "dos" format. This caused +problems when applying a patch. Now keep them in "unix" format and convert +them to "dos" format only for the PC archives. + +Add ruby files to the dos source archive, they can be used by Make_mvc.mak. +(Mirek Pruchnik) + +"cp -f" doesn't work on all systems. Change "cp -f" in the Makefile to "rm +-f" and "cp". + +Didn't compile on a Compaq Tandem Himalaya OSS. (Michael A. Benzinger) + +The GTK file selection dialog didn't include the "Create Dir", "Delete File" +and "Rename File" buttons. + +When doing ":browse source" the dialog has the title "Run Macro". Better +would be "Source Vim script". (Yegappan Lakshmanan) + +Win32: Don't use the printer font as default for the font dialog. + +"make doslang" didn't work when configure didn't run (yet). Set $MAKEMO to +"yes". (Mirek Pruchnik) + +The ToolBar TagJump item used "g]", which prompts for a selection even when +there is only one matching tag. Use "g<C-]>" instead. + +The ming makefile for message translations didn't have the right list of +files. + +The MS-Windows 3.1 version complains about LIBINTL.DLL not found. Compile +this version without message translations. + +The Borland 5 makefile contained a check for Ruby which is no longer needed. +The URLs for the TCL library was outdated. (Dan Sharp) + +The eviso.ps file was missing from the DOS runtime archive, it's needed for +printing PostScript in the 32bit DOS version. + +In menu files ":scriptencoding" was used in a wrong way after patch 6.1a.032 +Now use ":scriptencoding" in the file where the translations are given. Do +the same for all menus in latin1 encoding. + +Included a lot of fixes for the Macintosh, mostly to make it work with Carbon. +(Dany StAmant, Axel Kielhorn, Benji Fisher) + +Improved the vimtutor shell script to use $TMPDIR when it exists, and delete +the copied file when exiting in an abnormal way. (Max Ischenko) + +When "iconv.dll" can't be found, try using "libiconv.dll". + +When encryption is used, filtering with a shell command wasn't possible. + +DJGPP: ":cd c:" always failed, can't get permissions for "c:". +Win32: ":cd c:/" failed if the previous current directory on c: had become +invalid. + +DJGPP: Shift-Del and Del both produce \316\123. Default mapping for Del is +wrong. Disabled it. + +Dependencies on header files in MingW makefile was wrong. + +Win32: Don't use ACL stuff for MSVC 4.2, it's not supported. (Walter Briscoe) + +Win32 with Borland: bcc.cfg was caching the value for $(BOR), but providing a +different argument to make didn't regenerate it. + +Win32 with MSVC: Make_ivc.mak generates a new if_ole.h in a different +directory, the if_ole.h in the src directory may be used instead. Delete the +distributed file. + +When a window is vertically split and then ":ball" is used, the window layout +is messed up, can cause a crash. (Muraoka Taro) + +When 'insertmode' is set, using File/New menu and then double clicking, "i" is +soon inserted. (Merlin Hansen) + +When Select mode is active and using the Buffers menu to switch to another +buffer, an old selection comes back. Reset VIsual_reselect for a ":buffer" +command. + +When Select mode is active and 'insertmode' is set, using the Buffers menu to +switch to another buffer, did not return to Insert mode. Make sure +"restart_edit" is set. + +When double clicking on the first character of a word while 'selection' is +"exclusive" didn't select that word. + + +Patch 6.0.001 +Problem: Loading the sh.vim syntax file causes error messages . (Corinna + Vinschen) +Solution: Add an "if". (Charles Campbell) +Files: runtime/syntax/sh.vim + +Patch 6.0.002 +Problem: Using a '@' item in 'viminfo' doesn't work. (Marko Leipert) +Solution: Add '@' to the list of accepted items. +Files: src/option.c + +Patch 6.0.003 +Problem: The configure check for ACLs on AIX doesn't work. +Solution: Fix the test program so that it compiles. (Tomas Ogren) +Files: src/configure.in, src/auto/configure + +Patch 6.0.004 +Problem: The find/replace dialog doesn't reuse a previous argument + properly. +Solution: After removing a "\V" terminate the string. (Zwane Mwaikambo) +Files: src/gui.c + +Patch 6.0.005 +Problem: In Insert mode, "CTRL-O :ls" has a delay before redrawing. +Solution: Don't delay just after wait_return() was called. Added the + did_wait_return flag. +Files: src/globals.h, src/message.c, src/normal.c, src/screen.c + +Patch 6.0.006 +Problem: With a vertical split, 'number' set and 'scrolloff' non-zero, + making the window width very small causes a crash. (Niklas + Lindstrom) +Solution: Check for a zero width. +Files: src/move.c + +Patch 6.0.007 +Problem: When setting 'filetype' while there is no FileType autocommand, a + following ":setfiletype" would set 'filetype' again. (Kobus + Retief) +Solution: Set did_filetype always when 'filetype' has been set. +Files: src/option.c + +Patch 6.0.008 +Problem: 'imdisable' is missing from the options window. (Michael Naumann) +Solution: Add an entry for it. +Files: runtime/optwin.vim + +Patch 6.0.009 +Problem: Nextstep doesn't have S_ISBLK. (John Beppu) +Solution: Define S_ISBLK using S_IFBLK. +Files: src/os_unix.h + +Patch 6.0.010 +Problem: Using "gf" on a file name starting with "./" or "../" in a buffer + without a name causes a crash. (Roy Lewis) +Solution: Check for a NULL file name. +Files: src/misc2.c + +Patch 6.0.011 +Problem: Python: After replacing or deleting lines get an ml_get error. + (Leo Lipelis) +Solution: Adjust the cursor position for deleted or added lines. +Files: src/if_python.c + +Patch 6.0.012 +Problem: Polish translations contain printf format errors, this can result + in a crash when using one of them. +Solution: Fix for translated messages. (Michal Politowski) +Files: src/po/pl.po + +Patch 6.0.013 +Problem: Using ":silent! cmd" still gives some error messages, like for an + invalid range. (Salman Halim) +Solution: Reset emsg_silent after calling emsg() in do_one_cmd(). +Files: src/ex_docmd.c + +Patch 6.0.014 +Problem: When 'modifiable' is off and 'virtualedit' is "all", "rx" on a TAB + still changes the buffer. (Muraoka Taro) +Solution: Check if saving the line for undo fails. +Files: src/normal.c + +Patch 6.0.015 +Problem: When 'cpoptions' includes "S" and "filetype plugin on" has been + used, can get an error for deleting the b:did_ftplugin variable. + (Ralph Henderson) +Solution: Only delete the variable when it exists. +Files: runtime/ftplugin.vim + +Patch 6.0.016 +Problem: bufnr(), bufname() and bufwinnr() don't find unlisted buffers when + the argument is a string. (Hari Krishna Dara) + Also for setbufvar() and getbufvar(). +Solution: Also find unlisted buffers. +Files: src/eval.c + +Patch 6.0.017 +Problem: When 'ttybuiltin' is set and a builtin termcap entry defines t_Co + and the external one doesn't, it gets reset to empty. (David + Harrison) +Solution: Only set t_Co when it wasn't set yet. +Files: src/term.c + +Patch 6.0.018 +Problem: Initializing 'encoding' may cause a crash when setlocale() is not + used. (Dany St-Amant) +Solution: Check for a NULL pointer. +Files: src/mbyte.c + +Patch 6.0.019 +Problem: Converting a string with multi-byte characters to a printable + string, e.g., with strtrans(), may cause a crash. (Tomas Zellerin) +Solution: Correctly compute the length of the result in transstr(). +Files: src/charset.c + +Patch 6.0.020 +Problem: When obtaining the value of a global variable internally, could + get the function-local value instead. Applies to using <Leader> + and <LocalLeader> and resetting highlighting in a function. +Solution: Prepend "g:" to the variable name. (Aric Blumer) +Files: src/syntax.c, src/term.c + +Patch 6.0.021 +Problem: The 'cscopepathcomp' option didn't work. +Solution: Change USE_CSCOPE to FEAT_CSCOPE. (Mark Feng) +Files: src/option.c + +Patch 6.0.022 +Problem: When using the 'langmap' option, the second character of a command + starting with "g" isn't adjusted. +Solution: Apply 'langmap' to the second character. (Alex Kapranoff) +Files: src/normal.c + +Patch 6.0.023 +Problem: Loading the lhaskell syntax doesn't work. (Thore B. Karlsen) +Solution: Use ":runtime" instead of "source" to load haskell.vim. +Files: runtime/syntax/lhaskell.vim + +Patch 6.0.024 +Problem: Using "CTRL-V u 9900" in Insert mode may cause a crash. (Noah + Levitt) +Solution: Don't insert a NUL byte in the text, use a newline. +Files: src/misc1.c + +Patch 6.0.025 +Problem: The pattern "\vx(.|$)" doesn't match "x" at the end of a line. + (Preben Peppe Guldberg) +Solution: Always see a "$" as end-of-line after "\v". Do the same for "^". +Files: src/regexp.c + +Patch 6.0.026 +Problem: GTK: When using arrow keys to navigate through the menus, the + separators are selected. +Solution: Set the separators "insensitive". (Pavel Kankovsky) +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 6.0.027 +Problem: VMS: Printing doesn't work, the file is deleted too quickly. + No longer need the VMS specific printing menu. + gethostname() is not available with VAXC. + The makefile was lacking selection of the tiny-huge feature set. +Solution: Adjust the 'printexpr' option default. Fix the other problems and + update the documentation. (Zoltan Arpadffy) +Files: runtime/doc/os_vms.txt, runtime/menu.vim, src/INSTALLvms.txt, + src/Make_vms.mms, src/option.c, src/os_unix.c, src/os_vms_conf.h + +Patch 6.0.028 +Problem: Can't compile without +virtualedit and with +visualextra. (Geza + Lakner) +Solution: Add an #ifdef for +virtualedit. +Files: src/ops.c + +Patch 6.0.029 +Problem: When making a change in line 1, then in line 2 and then deleting + line 1, undo info could be wrong. Only when the changes are undone + at once. (Gerhard Hochholzer) +Solution: When not saving a line for undo because it was already done + before, remember for which entry the last line must be computed. + Added ue_getbot_entry pointer for this. When the number of lines + changes, adjust the position of newer undo entries. +Files: src/structs.h, src/undo.c + +Patch 6.0.030 +Problem: Using ":source! file" doesn't work inside a loop or after + ":argdo". (Pavol Juhas) +Solution: Execute the commands in the file right away, do not let the main + loop do it. +Files: src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, src/globals.h, + src/proto/ex_docmd.pro, src/proto/getchar.pro + +Patch 6.0.031 +Problem: Nextstep doesn't have setenv() or putenv(). (John Beppu) +Solution: Move putenv() from pty.c to misc2.c +Files: src/misc2.c, src/pty.c + +Patch 6.0.032 +Problem: When changing a setting that affects all folds, they are not + displayed immediately. +Solution: Set the redraw flag in foldUpdateAll(). +Files: src/fold.c + +Patch 6.0.033 +Problem: Using 'wildmenu' on MS-Windows, file names that include a space + are only displayed starting with that space. (Xie Yuheng) +Solution: Don't recognize a backslash before a space as a path separator. +Files: src/screen.c + +Patch 6.0.034 +Problem: Calling searchpair() with three arguments could result in a crash + or strange error message. (Kalle Bjorklid) +Solution: Don't use the fifth argument when there is no fourth argument. +Files: src/eval.c + +Patch 6.0.035 +Problem: The menu item Edit/Global_Settings/Toggle_Toolbar doesn't work + when 'ignorecase' is set. (Allen Castaban) +Solution: Always match case when checking if a flag is already present in + 'guioptions'. +Files: runtime/menu.vim + +Patch 6.0.036 +Problem: OS/2, MS-DOS and MS-Windows: Using a path that starts with a + slash in 'tags' doesn't work as expected. (Mathias Koehrer +Solution: Only use the drive, not the whole path to the current directory. + Also make it work for "c:dir/file". +Files: src/misc2.c + +Patch 6.0.037 +Problem: When the user has set "did_install_syntax_menu" to avoid the + default Syntax menu it still appears. (Virgilio) +Solution: Don't add the three default items when "did_install_syntax_menu" + is set. +Files: runtime/menu.vim + +Patch 6.0.038 +Problem: When 'selection' is "exclusive", deleting a block of text at the + end of a line can leave the cursor beyond the end of the line. +Solution: Correct the cursor position. +Files: src/ops.c + +Patch 6.0.039 +Problem: "gP" leaves the cursor in the wrong position when 'virtualedit' is + used. Using "c" in blockwise Visual mode leaves the cursor in a + strange position. +Solution: For "gP" reset the "coladd" field for the '] mark. For "c" leave + the cursor on the last inserted character. +Files: src/ops.c + +Patch 6.0.040 +Problem: When 'fileencoding' is invalid and writing fails because of + this, the original file is gone. (Eric Carlier) +Solution: Restore the original file from the backup. +Files: src/fileio.c + +Patch 6.0.041 +Problem: Using ":language messages en" when LC_MESSAGES is undefined + results in setting LC_CTYPE. (Eric Carlier) +Solution: Set $LC_MESSAGES instead. +Files: src/ex_cmds2.c + +Patch 6.0.042 +Problem: ":mksession" can't handle file names with a space. +Solution: Escape special characters in file names with a backslash. +Files: src/ex_docmd.c + +Patch 6.0.043 +Problem: Patch 6.0.041 was wrong. +Solution: Use mch_getenv() instead of vim_getenv(). +Files: src/ex_cmds2.c + +Patch 6.0.044 +Problem: Using a "containedin" list for a syntax item doesn't work for an + item that doesn't have a "contains" argument. Also, "containedin" + doesn't ignore a transparent item. (Timo Frenay) +Solution: When there is a "containedin" argument somewhere, always check for + contained items. Don't check for the transparent item but the + item it's contained in. +Files: src/structs.h, src/syntax.c + +Patch 6.0.045 +Problem: After creating a fold with a Visual selection, another window + with the same buffer still has inverted text. (Sami Salonen) +Solution: Redraw the inverted text. +Files: src/normal.c + +Patch 6.0.046 +Problem: When getrlimit() returns an 8 byte number the check for running + out of stack may fail. (Anthony Meijer) +Solution: Skip the stack check if the limit doesn't fit in a long. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/os_unix.c + +Patch 6.0.047 +Problem: Using a regexp with "\(\)" inside a "\%[]" item causes a crash. + (Samuel Lacas) +Solution: Don't allow nested atoms inside "\%[]". +Files: src/regexp.c + +Patch 6.0.048 +Problem: Win32: In the console the mouse doesn't always work correctly. + Sometimes after getting focus a mouse movement is interpreted like + a button click. +Solution: Use a different function to obtain the number of mouse buttons. + Avoid recognizing a button press from undefined bits. (Vince Negri) +Files: src/os_win32.c + +Patch 6.0.049 +Problem: When using evim the intro screen is misleading. (Adrian Nagle) +Solution: Mention whether 'insertmode' is set and the menus to be used. +Files: runtime/menu.vim, src/version.c + +Patch 6.0.050 +Problem: UTF-8: "viw" doesn't include non-ASCII characters before the + cursor. (Bertilo Wennergren) +Solution: Use dec_cursor() instead of decrementing the column number. +Files: src/search.c + +Patch 6.0.051 +Problem: UTF-8: Using CTRL-R on the command line doesn't insert composing + characters. (Ron Aaron) +Solution: Also include the composing characters and fix redrawing them. +Files: src/ex_getln.c, src/ops.c + +Patch 6.0.052 +Problem: The check for rlim_t in patch 6.0.046 does not work on some + systems. (Zdenek Sekera) +Solution: Also look in sys/resource.h for rlim_t. +Files: src/auto/configure, src/configure.in + +Patch 6.0.053 (extra) +Problem: Various problems with QNX. +Solution: Minor fix for configure. Switch on terminal clipboard support in + main.c. Fix "pterm" mouse support. os_qnx.c didn't build without + photon. (Julian Kinraid) +Files: src/auto/configure, src/configure.in, src/gui_photon.c, + src/main.c, src/misc2.c, src/option.h, src/os_qnx.c, src/os_qnx.h, + src/syntax.c + +Patch 6.0.054 +Problem: When using mswin.vim, CTRL-V pastes a block of text like it is + normal text. Using CTRL-V in blockwise Visual mode leaves "x" + characters behind. +Solution: Make CTRL-V work as it should. Do the same for the Paste menu + entries. +Files: runtime/menu.vim, runtime/mswin.vim + +Patch 6.0.055 +Problem: GTK: The selection isn't copied the first time. +Solution: Own the selection at the right moment. +Files: src/gui_gtk_x11.c + +Patch 6.0.056 +Problem: Using "CTRL-O cw" in Insert mode results in a nested Insert mode. + <Esc> doesn't leave Insert mode then. +Solution: Only use nested Insert mode when 'insertmode' is set or when a + mapping is used. +Files: src/normal.c + +Patch 6.0.057 +Problem: Using ":wincmd g}" in a function doesn't work. (Gary Holloway) +Solution: Execute the command directly, instead of putting it in the + typeahead buffer. +Files: src/normal.c, src/proto/normal.pro, src/window.c + +Patch 6.0.058 +Problem: When a Cursorhold autocommand moved the cursor, the ruler wasn't + updated. (Bohdan Vlasyuk) +Solution: Update the ruler after executing the autocommands. +Files: src/gui.c + +Patch 6.0.059 +Problem: Highlighting for 'hlsearch' isn't visible in lines that are + highlighted for diff highlighting. (Gary Holloway) +Solution: Let 'hlsearch' highlighting overrule diff highlighting. +Files: src/screen.c + +Patch 6.0.060 +Problem: Motif: When the tooltip is to be popped up, Vim crashes. + (Gary Holloway) +Solution: Check for a NULL return value from gui_motif_fontset2fontlist(). +Files: src/gui_beval.c + +Patch 6.0.061 +Problem: The toolbar buttons to load and save a session do not correctly + use v:this_session. +Solution: Check for v:this_session to be empty instead of existing. +Files: runtime/menu.vim + +Patch 6.0.062 +Problem: Crash when 'verbose' is > 3 and using ":shell". (Yegappan + Lakshmanan) +Solution: Avoid giving a NULL pointer to printf(). Also output a newline + and switch the cursor on. +Files: src/misc2.c + +Patch 6.0.063 +Problem: When 'cpoptions' includes "$", using "cw" to type a ')' on top of + the "$" doesn't update syntax highlighting after it. +Solution: Stop displaying the "$" when typing a ')' in its position. +Files: src/search.c + +Patch 6.0.064 (extra) +Problem: The NSIS install script doesn't work with newer versions of NSIS. + The diff feature doesn't work when there isn't a good diff.exe on + the system. +Solution: Replace the GetParentDir instruction by a user function. + Fix a few cosmetic problems. Use defined constants for the + version number, so that it's defined in one place only. + Only accept the install directory when it ends in "vim". + (Eduardo Fernandez) + Add a diff.exe and use it from the default _vimrc. +Files: nsis/gvim.nsi, nsis/README.txt, src/dosinst.c + +Patch 6.0.065 +Problem: When using ":normal" in 'indentexpr' it may use redo characters + before its argument. (Neil Bird) +Solution: Save and restore the stuff buffer in ex_normal(). +Files: src/ex_docmd.c, src/getchar.c, src/globals.h, src/structs.h + +Patch 6.0.066 +Problem: Sometimes undo for one command is split into two undo actions. + (Halim Salman) +Solution: Don't set the undo-synced flag when reusing a line that was + already saved for undo. +Files: src/undo.c + +Patch 6.0.067 +Problem: if_xcmdsrv.c doesn't compile on systems where fd_set isn't defined + in the usual header file (e.g., AIX). (Mark Waggoner) +Solution: Include sys/select.h in if_xcmdsrv.c for systems that have it. +Files: src/if_xcmdsrv.c + +Patch 6.0.068 +Problem: When formatting a Visually selected area with "gq" and the number + of lines increases the last line may not be redrawn correctly. + (Yegappan Lakshmanan) +Solution: Correct the area to be redrawn for inserted/deleted lines. +Files: src/ops.c + +Patch 6.0.069 +Problem: Using "K" on a word that includes a "!" causes a "No previous + command" error, because the "!" is expanded. (Craig Jeffries) +Solution: Put a backslash before the "!". +Files: src/normal.c + +Patch 6.0.070 +Problem: Win32: The error message for a failed dynamic linking of a Perl, + Ruby, Tcl and Python library is unclear about what went wrong. +Solution: Give the name of the library or function that could not be loaded. + Also for the iconv and gettext libraries when 'verbose' is set. +Files: src/eval.c, src/if_perl.xs, src/if_python.c, src/if_ruby.c, + src/if_tcl.c, src/mbyte.c, src/os_win32.c, src/proto/if_perl.pro, + src/proto/if_python.pro, src/proto/if_ruby.pro, + src/proto/if_tcl.pro, src/proto/mbyte.pro + +Patch 6.0.071 +Problem: The "iris-ansi" builtin termcap isn't very good. +Solution: Fix the wrong entries. (David Harrison) +Files: src/term.c + +Patch 6.0.072 +Problem: When 'lazyredraw' is set, a mapping that stops Visual mode, moves + the cursor and starts Visual mode again causes a redraw problem. + (Brian Silverman) +Solution: Redraw both the old and the new Visual area when necessary. +Files: src/normal.c, src/screen.c + +Patch 6.0.073 (extra) +Problem: DJGPP: When using CTRL-Z to start a shell, the prompt is halfway + the text. (Volker Kiefel) +Solution: Position the system cursor before starting the shell. +Files: src/os_msdos.c + +Patch 6.0.074 +Problem: When using "&" in a substitute string a multi-byte character with + a trailbyte 0x5c is not handled correctly. +Solution: Recognize multi-byte characters inside the "&" part. (Muraoka Taro) +Files: src/regexp.c + +Patch 6.0.075 +Problem: When closing a horizontally split window while 'eadirection' is + "hor" another horizontally split window is still resized. (Aron + Griffis) +Solution: Only resize windows in the same top frame as the window that is + split or closed. +Files: src/main.c, src/proto/window.pro, src/window.c + +Patch 6.0.076 +Problem: Warning for wrong pointer type when compiling. +Solution: Use char instead of char_u pointer. +Files: src/version.c + +Patch 6.0.077 +Problem: Patch 6.0.075 was incomplete. +Solution: Fix another call to win_equal(). +Files: src/option.c + +Patch 6.0.078 +Problem: Using "daw" at the end of a line on a single-character word didn't + include the white space before it. At the end of the file it + didn't work at all. (Gavin Sinclair) +Solution: Include the white space before the word. +Files: src/search.c + +Patch 6.0.079 +Problem: When "W" is in 'cpoptions' and 'backupcopy' is "no" or "auto", can + still overwrite a read-only file, because it's renamed. (Gary + Holloway) +Solution: Add a check for a read-only file before renaming the file to + become the backup. +Files: src/fileio.c + +Patch 6.0.080 +Problem: When using a session file that has the same file in two windows, + the fileinfo() call in do_ecmd() causes a scroll and a hit-enter + prompt. (Robert Webb) +Solution: Don't scroll this message when 'shortmess' contains 'O'. +Files: src/ex_cmds.c + +Patch 6.0.081 +Problem: After using ":saveas" the new buffer name is added to the Buffers + menu with a wrong number. (Chauk-Mean Proum) +Solution: Trigger BufFilePre and BufFilePost events for the renamed buffer + and BufAdd for the old name (which is with a new buffer). +Files: src/ex_cmds.c + +Patch 6.0.082 +Problem: When swapping screens in an xterm and there is an (error) message + from the vimrc script, the shell prompt is after the message. +Solution: Output a newline when there was output on the alternate screen. + Also when starting the GUI. +Files: src/main.c + +Patch 6.0.083 +Problem: GTK: When compiled without menu support the buttons in a dialog + don't have any text. (Erik Edelmann) +Solution: Add the text also when GTK_USE_ACCEL isn't defined. And define + GTK_USE_ACCEL also when not using menus. +Files: src/gui_gtk.c + +Patch 6.0.084 +Problem: UTF-8: a "r" command with an argument that is a keymap for a + character with a composing character can't be repeated with ".". + (Raphael Finkel) +Solution: Add the composing characters to the redo buffer. +Files: src/normal.c + +Patch 6.0.085 +Problem: When 'mousefocus' is set, using "s" to go to Insert mode and then + moving the mouse pointer to another window stops Insert mode, + while this doesn't happen with "a" or "i". (Robert Webb) +Solution: Reset finish_op before calling edit(). +Files: src/normal.c + +Patch 6.0.086 +Problem: When using "gu" the message says "~ed". +Solution: Make the message say "changed". +Files: src/ops.c + +Patch 6.0.087 (lang) +Problem: Message translations are incorrect, which may cause a crash. + (Peter Figura) + The Turkish translations needed more work and the maintainer + didn't have time. +Solution: Fix order of printf arguments. Remove %2$d constructs. + Add "-v" to msgfmt to get a warning for wrong translations. + Don't install the Turkish translations for now. + Update a few more translations. +Files: src/po/Makefile, src/po/af.po, src/po/cs.po, src/po/cs.cp1250.po, + src/po/de.po, src/po/es.po, src/po/fr.po, src/po/it.po, + src/po/ja.po, src/po/ja.sjis.po, src/po/ko.po, src/po/pl.po, + src/po/sk.po, src/po/uk.po, src/po/zh_CN.UTF-8.po, + src/po/zh_CN.cp936.po, src/po/zh_CN.po, src/po/zh_TW.po + +Patch 6.0.088 +Problem: "." doesn't work after using "rx" in Visual mode. (Charles + Campbell) +Solution: Also store the replacement character in the redo buffer. +Files: src/normal.c + +Patch 6.0.089 +Problem: In a C file, using "==" to align a line starting with "* " after + a line with "* -" indents one space too few. (Piet Delport) +Solution: Align with the previous line if the comment-start-string matches + there. +Files: src/misc1.c + +Patch 6.0.090 +Problem: When a wrapping line does not fit in a window and 'scrolloff' is + bigger than half the window height, moving the cursor left or + right causes the screen to flash badly. (Lubomir Host) +Solution: When there is not enough room to show 'scrolloff' screen lines and + near the end of the line, show the end of the line. +Files: src/move.c + +Patch 6.0.091 +Problem: Using CTRL-O in Insert mode, while 'virtualedit' is "all" and the + cursor is after the end-of-line, moves the cursor left. (Yegappan + Lakshmanan) +Solution: Keep the cursor in the same position. +Files: src/edit.c + +Patch 6.0.092 +Problem: The explorer plugin doesn't ignore case of 'suffixes' on + MS-Windows. (Mike Williams) +Solution: Match or ignore case as appropriate for the OS. +Files: runtime/plugin/explorer.vim + +Patch 6.0.093 +Problem: When the Tcl library couldn't be loaded dynamically, get an error + message when closing a buffer or window. (Muraoka Taro) +Solution: Only free structures if already using the Tcl interpreter. +Files: src/if_tcl.c + +Patch 6.0.094 +Problem: Athena: When clicking in the horizontal scrollbar Vim crashes. + (Paul Ackersviller) +Solution: Use the thumb size instead of the window pointer of the scrollbar + (which is NULL). (David Harrison) + Also avoid that scrolling goes the wrong way in a narrow window. +Files: src/gui_athena.c + +Patch 6.0.095 +Problem: Perl: Deleting lines may leave the cursor beyond the end of the + file. +Solution: Check the cursor position after deleting a line. (Serguei) +Files: src/if_perl.xs + +Patch 6.0.096 +Problem: When ":saveas fname" fails because the file already exists, the + file name is changed anyway and a following ":w" will overwrite + the file. (Eric Carlier) +Solution: Don't change the file name if the file already exists. +Files: src/ex_cmds.c + +Patch 6.0.097 +Problem: Re-indenting in Insert mode with CTRL-F may cause a crash with a + multi-byte encoding. +Solution: Avoid using a character before the start of a line. (Sergey + Vlasov) +Files: src/edit.c + +Patch 6.0.098 +Problem: GTK: When using Gnome the "Search" and "Search and Replace" dialog + boxes are not translated. +Solution: Define ENABLE_NLS before including gnome.h. (Eduardo Fernandez) +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 6.0.099 +Problem: Cygwin: When running Vi compatible MS-DOS line endings cause + trouble. +Solution: Make the default for 'fileformats' "unix,dos" in Vi compatible + mode. (Michael Schaap) +Files: src/option.h + +Patch 6.0.100 +Problem: ":badd +0 test%file" causes a crash. +Solution: Take into account that the "+0" is NUL terminated when allocating + room for replacing the "%". +Files: src/ex_docmd.c + +Patch 6.0.101 +Problem: ":mksession" doesn't restore editing a file that has a '#' or '%' + in its name. (Wolfgang Blankenburg) +Solution: Put a backslash before the '#' and '%'. +Files: src/ex_docmd.c + +Patch 6.0.102 +Problem: When changing folds the cursor may appear halfway a closed fold. + (Nam SungHyun) +Solution: Set w_cline_folded correctly. (Yasuhiro Matsumoto) +Files: src/move.c + +Patch 6.0.103 +Problem: When using 'scrollbind' a large value of 'scrolloff' will make the + scroll binding stop near the end of the file. (Coen Engelbarts) +Solution: Don't use 'scrolloff' when limiting the topline for scroll + binding. (Dany StAmant) +Files: src/normal.c + +Patch 6.0.104 +Problem: Multi-byte: When '$' is in 'cpoptions', typing a double-wide + character that overwrites the left halve of an old double-wide + character causes a redraw problem and the cursor stops blinking. +Solution: Clear the right half of the old character. (Yasuhiro Matsumoto) +Files: src/edit.c, src/screen.c + +Patch 6.0.105 +Problem: Multi-byte: In a window of one column wide, with syntax + highlighting enabled a crash might happen. +Solution: Skip getting the syntax attribute when the character doesn't fit + anyway. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.0.106 (extra) +Problem: Win32: When the printer font is wrong, there is no error message. +Solution: Give an appropriate error message. (Yasuhiro Matsumoto) +Files: src/os_mswin.c + +Patch 6.0.107 (extra) +Problem: VisVim: When editing another file, a modified file may be written + unexpectedly and without warning. +Solution: Split the window if a file was modified. +Files: VisVim/Commands.cpp + +Patch 6.0.108 +Problem: When using folding could try displaying line zero, resulting in an + error for a NULL pointer. +Solution: Stop decrementing w_topline when the first line of a window is in + a closed fold. +Files: src/window.c + +Patch 6.0.109 +Problem: XIM: When the input method is enabled, repeating an insertion with + "." disables it. (Marcel Svitalsky) +Solution: Don't store the input method status when a command comes from the + stuff buffer. +Files: src/ui.c + +Patch 6.0.110 +Problem: Using undo after executing "OxjAxkdd" from a register in + an empty buffer gives an error message. (Gerhard Hochholzer) +Solution: Don't adjust the bottom line number of an undo block when it's + zero. Add a test for this problem. +Files: src/undo.c, src/testdir/test20.in, src/testdir/test20.ok + +Patch 6.0.111 +Problem: The virtcol() function doesn't take care of 'virtualedit'. +Solution: Add the column offset when needed. (Yegappan Lakshmanan) +Files: src/eval.c + +Patch 6.0.112 +Problem: The explorer plugin doesn't sort directories with a space or + special character after a directory with a shorter name. +Solution: Ignore the trailing slash when comparing directory names. (Mike + Williams) +Files: runtime/plugin/explorer.vim + +Patch 6.0.113 +Problem: ":edit ~/fname" doesn't work if $HOME includes a space. Also, + expanding wildcards with the shell may fail. (John Daniel) +Solution: Escape spaces with a backslash when needed. +Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/os_unix.c + +Patch 6.0.114 +Problem: Using ":p" with fnamemodify() didn't expand "~/" or "~user/" to a + full path. For Win32 the current directory was prepended. + (Michael Geddes) +Solution: Expand the home directory. +Files: src/eval.c + +Patch 6.0.115 (extra) +Problem: Win32: When using a dialog with a textfield it cannot scroll the + text. +Solution: Add ES_AUTOHSCROLL to the textfield style. (Pedro Gomes) +Files: src/gui_w32.c + +Patch 6.0.116 (extra) +Problem: MS-Windows NT/2000/XP: filewritable() doesn't work correctly for + filesystems that use ACLs. +Solution: Use ACL functions to check if a file is writable. (Mike Williams) +Files: src/eval.c, src/macros.h, src/os_win32.c, src/proto/os_win32.pro + +Patch 6.0.117 (extra) +Problem: Win32: when disabling the menu, "set lines=999" doesn't use all + the available screen space. +Solution: Don't subtract the fixed caption height but the real menu height + from the available screen space. Also: Avoid recursion in + gui_mswin_get_menu_height(). +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.0.118 +Problem: When $TMPDIR is a relative path, the temp directory is missing a + trailing slash and isn't deleted when Vim exits. (Peter Holm) +Solution: Add the slash after expanding the directory to an absolute path. +Files: src/fileio.c + +Patch 6.0.119 (depends on patch 6.0.116) +Problem: VMS: filewritable() doesn't work properly. +Solution: Use the same method as for Unix. (Zoltan Arpadffy) +Files: src/eval.c + +Patch 6.0.120 +Problem: The conversion to html isn't compatible with XHTML. +Solution: Quote the values. (Jess Thrysoee) +Files: runtime/syntax/2html.vim + +Patch 6.0.121 (extra) (depends on patch 6.0.116) +Problem: Win32: After patch 6.0.116 Vim doesn't compile with mingw32. +Solution: Add an #ifdef HAVE_ACL. +Files: src/os_win32.c + +Patch 6.0.122 (extra) +Problem: Win16: Same resize problems as patch 6.0.117 fixed for Win32. And + dialog textfield problem from patch 6.0.115. +Solution: Set old_menu_height only when used. Add ES_AUTOHSCROLL flag. + (Vince Negri) +Files: src/gui_w16.c + +Patch 6.0.123 (depends on patch 6.0.119) +Problem: Win16: Compilation problems. +Solution: Move "&&" to other lines. (Vince Negri) +Files: src/eval.c + +Patch 6.0.124 +Problem: When using a ":substitute" command that starts with "\=" + (evaluated as an expression), "~" was still replaced with the + previous substitute string. +Solution: Skip the replacement when the substitute string starts with "\=". + Also adjust the documentation about doubling backslashes. +Files: src/ex_cmds.c, runtime/doc/change.txt + +Patch 6.0.125 (extra) +Problem: Win32: When using the multi_byte_ime feature pressing the shift + key would be handled as if a character was entered, thus mappings + with a shifted key didn't work. (Charles Campbell) +Solution: Ignore pressing the shift, control and alt keys. +Files: src/os_win32.c + +Patch 6.0.126 +Problem: The python library was always statically linked. +Solution: Link the python library dynamically. (Matthias Klose) +Files: src/auto/configure, src/configure.in + +Patch 6.0.127 +Problem: When using a terminal that swaps screens and the Normal background + color has a different background, using an external command may + cause the color of the wrong screen to be changed. (Mark Waggoner) +Solution: Don't call screen_stop_highlight() in stoptermcap(). +Files: src/term.c + +Patch 6.0.128 +Problem: When moving a vertically split window to the far left or right, + the scrollbars are not adjusted. (Scott E Lee) When 'mousefocus' + is set the mouse pointer wasn't adjusted. +Solution: Adjust the scrollbars and the mouse pointer. +Files: src/window.c + +Patch 6.0.129 +Problem: When using a very long file name, ":ls" (repeated a few times) + causes a crash. Test with "vim `perl -e 'print "A"x1000'`". + (Tejeda) +Solution: Terminate a string before getting its length in buflist_list(). +Files: src/buffer.c + +Patch 6.0.130 +Problem: When using ":cprev" while the error window is open, and the new + line at the top wraps, the window isn't correctly drawn. + (Yegappan Lakshmanan) +Solution: When redrawing the topline don't scroll twice. +Files: src/screen.c + +Patch 6.0.131 +Problem: When using bufname() and there are two matches for listed buffers + and one match for an unlisted buffer, the unlisted buffer is used. + (Aric Blumer) +Solution: When there is a match with a listed buffer, don't check for + unlisted buffers. +Files: src/buffer.c + +Patch 6.0.132 +Problem: When setting 'iminsert' in the vimrc and using an xterm with two + screens the ruler is drawn in the wrong screen. (Igor Goldenberg) +Solution: Only draw the ruler when using the right screen. +Files: src/option.c + +Patch 6.0.133 +Problem: When opening another buffer while 'keymap' is set and 'iminsert' + is zero, 'iminsert' is set to one unexpectedly. (Igor Goldenberg) +Solution: Don't set 'iminsert' as a side effect of defining a ":lmap" + mapping. Only do that when 'keymap' is set. +Files: src/getchar.c, src/option.c + +Patch 6.0.134 +Problem: When completing ":set tags=" a path with an embedded space causes + the completion to stop. (Sektor van Skijlen) +Solution: Escape spaces with backslashes, like for ":set path=". Also take + backslashes into account when searching for the start of the path + to complete (e.g., for 'backupdir' and 'cscopeprg'). +Files: src/ex_docmd.c, src/ex_getln.c, src/option.c, src/structs.h + +Patch 6.0.135 +Problem: Menus that are not supposed to do anything used "<Nul>", which + still produced an error beep. + When CTRL-O is mapped for Insert mode, ":amenu" commands didn't + work in Insert mode. + Menu language falls back to English when $LANG ends in "@euro". +Solution: Use "<Nop>" for a menu item that doesn't do anything, just like + mappings. + Use ":anoremenu" instead of ":amenu". + Ignore "@euro" in the locale name. +Files: runtime/makemenu.vim, runtime/menu.vim, src/menu.c + +Patch 6.0.136 +Problem: When completing in Insert mode, a mapping could be unexpectedly + applied. +Solution: Don't use mappings when checking for a typed character. +Files: src/edit.c + +Patch 6.0.137 +Problem: GUI: When using the find or find/replace dialog from Insert mode, + the input mode is stopped. +Solution: Don't use the input method status when the main window doesn't + have focus. +Files: src/ui.c + +Patch 6.0.138 +Problem: GUI: When using the find or find/replace dialog from Insert mode, + the text is inserted when CTRL-O is mapped. (Andre Pang) + When opening the dialog again, a whole word search isn't + recognized. + When doing "replace all" a whole word search was never done. +Solution: Don't put a search or replace command in the input buffer, + execute it directly. + Recognize "\<" and "\>" after removing "\V". + Add "\<" and "\>" also for "replace all". +Files: src/gui.c + +Patch 6.0.139 +Problem: When stopping 'wildmenu' completion, the statusline of the + bottom-left vertically split window isn't redrawn. (Yegappan + Lakshmanan) +Solution: Redraw all the bottom statuslines. +Files: src/ex_getln.c, src/proto/screen.pro, src/screen.c + +Patch 6.0.140 +Problem: Memory allocated for local mappings and abbreviations is leaked + when the buffer is wiped out. +Solution: Clear the local mappings when deleting a buffer. +Files: src/buffer.c, src/getchar.c, src/proto/getchar.pro, src/vim.h + +Patch 6.0.141 +Problem: When using ":enew" in an empty buffer, some buffer-local things + are not cleared. b:keymap_name is not set. +Solution: Clear user commands and mappings local to the buffer when re-using + the current buffer. Reload the keymap. +Files: src/buffer.c + +Patch 6.0.142 +Problem: When Python is linked statically, loading dynamic extensions might + fail. +Solution: Add an extra linking flag when needed. (Andrew Rodionoff) +Files: src/configure.in, src/auto/configure + +Patch 6.0.143 +Problem: When a syntax item includes a line break in a pattern, the syntax + may not be updated properly when making a change. +Solution: Add the "linebreaks" argument to ":syn sync". +Files: runtime/doc/syntax.txt, src/screen.c, src/structs.h, src/syntax.c + +Patch 6.0.144 +Problem: After patch 6.0.088 redoing "veU" doesn't work. +Solution: Don't add the "U" to the redo buffer, it will be used as an undo + command. +Files: src/normal.c + +Patch 6.0.145 +Problem: When Vim can't read any input it might get stuck. When + redirecting stdin and stderr Vim would not read commands from a + file. (Servatius Brandt) +Solution: When repeatedly trying to read a character when it's not possible, + exit Vim. When stdin and stderr are not a tty, still try reading + from them, but don't do a blocking wait. +Files: src/ui.c + +Patch 6.0.146 +Problem: When 'statusline' contains "%{'-'}" this results in a zero. + (Milan Vancura) +Solution: Don't handle numbers with a minus as a number, they were not + displayed anyway. +Files: src/buffer.c + +Patch 6.0.147 +Problem: It's not easy to mark a Vim version as being modified. The new + license requires this. +Solution: Add the --modified-by argument to configure and the MODIFIED_BY + define. I's used in the intro screen and the ":version" output. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/feature.h, src/version.c + +Patch 6.0.148 +Problem: After "p" in an empty line, `[ goes to the second character. + (Kontra Gergely) +Solution: Don't increment the column number in an empty line. +Files: src/ops.c + +Patch 6.0.149 +Problem: The pattern "\(.\{-}\)*" causes a hang. When using a search + pattern that causes a stack overflow to be detected Vim could + still hang. +Solution: Correctly report "operand could be empty" when using "\{-}". + Check for "out_of_stack" inside loops to avoid a hang. +Files: src/regexp.c + +Patch 6.0.150 +Problem: When using a multi-byte encoding, patch 6.0.148 causes "p" to work + like "P". (Sung-Hyun Nam) +Solution: Compute the byte length of a multi-byte character. +Files: src/ops.c + +Patch 6.0.151 +Problem: Redrawing the status line and ruler can be wrong when it contains + multi-byte characters. +Solution: Use character width and byte length correctly. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.0.152 +Problem: strtrans() could hang on an illegal UTF-8 byte sequence. +Solution: Skip over illegal bytes. (Yasuhiro Matsumoto) +Files: src/charset.c + +Patch 6.0.153 +Problem: When using (illegal) double-byte characters and Vim syntax + highlighting Vim can crash. (Yasuhiro Matsumoto) +Solution: Increase a pointer over a character instead of a byte. +Files: src/regexp.c + +Patch 6.0.154 +Problem: MS-DOS and MS-Windows: The menu entries for xxd don't work when + there is no xxd in the path. + When converting back from Hex the filetype may remain "xxd" if it + is not detected. +Solution: When xxd is not in the path use the one in the runtime directory, + where the install program has put it. + Clear the 'filetype' option before detecting the new value. +Files: runtime/menu.vim + +Patch 6.0.155 +Problem: Mac: compilation problems in ui.c after patch 6.0.145. (Axel + Kielhorn) +Solution: Don't call mch_inchar() when NO_CONSOLE is defined. +Files: src/ui.c + +Patch 6.0.156 +Problem: Starting Vim with the -b argument and two files, ":next" doesn't + set 'binary' in the second file, like Vim 5.7. (Norman Diamond) +Solution: Set the global value for 'binary'. +Files: src/option.c + +Patch 6.0.157 +Problem: When defining a user command with "-complete=dir" files will also + be expanded. Also, "-complete=mapping" doesn't appear to work. + (Michael Naumann) +Solution: Use the expansion flags defined with the user command. + Handle expanding mappings specifically. +Files: src/ex_docmd.c + +Patch 6.0.158 +Problem: When getting the warning for a file being changed outside of Vim + and reloading the file, the 'readonly' option is reset, even when + the permissions didn't change. (Marcel Svitalsky) +Solution: Keep 'readonly' set when reloading a file and the permissions + didn't change. +Files: src/fileio.c + +Patch 6.0.159 +Problem: Wildcard expansion for ":emenu" also shows separators. +Solution: Skip menu separators for ":emenu", ":popup" and ":tearoff". + Also, don't handle ":tmenu" as if it was ":tearoff". And leave + out the alternatives with "&" included. +Files: src/menu.c + +Patch 6.0.160 +Problem: When compiling with GCC 3.0.2 and using the "-O2" argument, the + optimizer causes a problem that makes Vim crash. +Solution: Add a configure check to avoid "-O2" for this version of gcc. +Files: src/configure.in, src/auto/configure + +Patch 6.0.161 (extra) +Problem: Win32: Bitmaps don't work with signs. +Solution: Make it possible to use bitmaps with signs. (Muraoka Taro) +Files: src/ex_cmds.c, src/feature.h, src/gui_w32.c, src/gui_x11.c, + src/proto/gui_w32.pro, src/proto/gui_x11.pro + +Patch 6.0.162 +Problem: Client-server: An error message for a wrong expression appears in + the server instead of the client. +Solution: Pass the error message from the server to the client. Also + adjust the example code. (Flemming Madsen) +Files: src/globals.h, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, + src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro, + runtime/doc/eval.txt, runtime/tools/xcmdsrv_client.c + +Patch 6.0.163 +Problem: When using a GUI dialog, a file name is sometimes used like it was + a directory. +Solution: Separate path and file name properly. + For GTK, Motif and Athena concatenate directory and file name for + the default selection. +Files: src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c, src/message.c + +Patch 6.0.164 +Problem: After patch 6.0.135 the menu entries for pasting don't work in + Insert and Visual mode. (Muraoka Taro) +Solution: Add <script> to allow script-local mappings. +Files: runtime/menu.vim + +Patch 6.0.165 +Problem: Using --remote and executing locally gives unavoidable error + messages. +Solution: Add --remote-silent and --remote-wait-silent to silently execute + locally. + For Win32 there was no error message when a server didn't exist. +Files: src/eval.c, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, + src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro + +Patch 6.0.166 +Problem: GUI: There is no way to avoid dialogs to pop up. +Solution: Add the 'c' flag to 'guioptions': Use console dialogs. (Yegappan + Lakshmanan) +Files: runtime/doc/options.txt, src/option.h, src/message.c + +Patch 6.0.167 +Problem: When 'fileencodings' is "latin2" some characters in the help files + are displayed wrong. +Solution: Force the 'fileencoding' for the help files to be "latin1". +Files: src/fileio.c + +Patch 6.0.168 +Problem: ":%s/\n/#/" doesn't replace at an empty line. (Bruce DeVisser) +Solution: Don't skip matches after joining two lines. +Files: src/ex_cmds.c + +Patch 6.0.169 +Problem: When run as evim and the GUI can't be started we get stuck in a + terminal without menus in Insert mode. +Solution: Exit when using "evim" and "gvim -y" when the GUI can't be + started. +Files: src/main.c + +Patch 6.0.170 +Problem: When printing double-width characters the size of tabs after them + is wrong. (Muraoka Taro) +Solution: Correctly compute the column after a double-width character. +Files: src/ex_cmds2.c + +Patch 6.0.171 +Problem: With 'keymodel' including "startsel", in Insert mode after the end + of a line, shift-Left does not move the cursor. (Steve Hall) +Solution: CTRL-O doesn't move the cursor left, need to do that explicitly. +Files: src/edit.c + +Patch 6.0.172 +Problem: CTRL-Q doesn't replace CTRL-V after CTRL-X in Insert mode while it + does in most other situations. +Solution: Make CTRL-X CTRL-Q work like CTRL-X CTRL-V in Insert mode. +Files: src/edit.c + +Patch 6.0.173 +Problem: When using "P" to insert a line break the cursor remains past the + end of the line. +Solution: Check for the cursor being beyond the end of the line. +Files: src/ops.c + +Patch 6.0.174 +Problem: After using "gd" or "gD" the search direction for "n" may still be + backwards. (Servatius Brandt) +Solution: Reset the search direction to forward. +Files: src/normal.c, src/search.c, src/proto/search.pro + +Patch 6.0.175 +Problem: ":help /\z(\)" doesn't work. (Thomas Koehler) +Solution: Double the backslashes. +Files: src/ex_cmds.c + +Patch 6.0.176 +Problem: When killed by a signal autocommands are still triggered as if + nothing happened. +Solution: Add the v:dying variable to allow autocommands to work differently + when a deadly signal has been trapped. +Files: src/eval.c, src/os_unix.c, src/vim.h + +Patch 6.0.177 +Problem: When 'commentstring' is empty and 'foldmethod' is "marker", "zf" + doesn't work. (Thomas S. Urban) +Solution: Add the marker even when 'commentstring' is empty. +Files: src/fold.c, src/normal.c + +Patch 6.0.178 +Problem: Uninitialized memory read from xp_backslash field. +Solution: Initialize xp_backslash field properly. +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/misc1.c, src/tag.c + +Patch 6.0.179 +Problem: Win32: When displaying UTF-8 characters may read uninitialized + memory. +Solution: Add utfc_ptr2len_check_len() to avoid reading past the end of a + string. +Files: src/mbyte.c, src/proto/mbyte.pro, src/gui_w32.c + +Patch 6.0.180 +Problem: Expanding environment variables in a string that ends in a + backslash could go past the end of the string. +Solution: Detect the trailing backslash. +Files: src/misc1.c + +Patch 6.0.181 +Problem: When using ":cd dir" memory was leaked. +Solution: Free the allocated memory. Also avoid an uninitialized memory + read. +Files: src/misc2.c + +Patch 6.0.182 +Problem: When using a regexp on multi-byte characters, could try to read a + character before the start of the line. +Solution: Don't decrement a pointer to before the start of the line. +Files: src/regexp.c + +Patch 6.0.183 +Problem: Leaking memory when ":func!" redefines a function. +Solution: Free the function name when it's not used. +Files: src/eval.c + +Patch 6.0.184 +Problem: Leaking memory when expanding option values. +Solution: Don't always copy the expanded option into allocated memory. +Files: src/option.c + +Patch 6.0.185 +Problem: Crash in Vim when pasting a selection in another application, on a + 64 bit machine. +Solution: Fix the format for an Atom to 32 bits. (Peter Derr) +Files: src/ui.c + +Patch 6.0.186 +Problem: X11: Three warnings when compiling the client-server code. +Solution: Add a typecast to unsigned char. +Files: src/if_xcmdsrv.c + +Patch 6.0.187 +Problem: "I" in Visual mode and then "u" reports too many changes. (Andrew + Stryker) + "I" in Visual linewise mode adjusts the indent for no apparent + reason. +Solution: Only save those lines for undo that are changed. + Don't change the indent after inserting in Visual linewise mode. +Files: src/ops.c + +Patch 6.0.188 +Problem: Win32: After patch 6.0.161 signs defined in the vimrc file don't + work. +Solution: Initialize the sign icons after initializing the GUI. (Vince + Negri) +Files: src/gui.c, src/gui_x11.c + +Patch 6.0.189 +Problem: The size of the Visual area isn't always displayed when scrolling + ('ruler' off, 'showcmd' on). Also not when using a search + command. (Sylvain Hitier) +Solution: Redisplay the size of the selection after showing the mode. +Files: src/screen.c + +Patch 6.0.190 +Problem: GUI: when 'mouse' is empty a click with the middle button still + moves the cursor. +Solution: Paste at the cursor position instead of the mouse position. +Files: src/normal.c + +Patch 6.0.191 +Problem: When no servers are available serverlist() gives an error instead + of returning an empty string. (Hari Krishna) +Solution: Don't give an error message. +Files: src/eval.c + +Patch 6.0.192 +Problem: When 'virtualedit' is set, "ylj" goes to the wrong column. (Andrew + Nikitin) +Solution: Reset the flag that w_virtcol is valid when moving the cursor back + to the start of the operated area. +Files: src/normal.c + +Patch 6.0.193 +Problem: When 'virtualedit' is set, col(".") after the end of the line + should return one extra. +Solution: Add one to the column. +Files: src/eval.c + +Patch 6.0.194 +Problem: "--remote-silent" tries to send a reply to the client, like it was + "--remote-wait". +Solution: Properly check for the argument. +Files: src/main.c + +Patch 6.0.195 +Problem: When 'virtualedit' is set and a search starts in virtual space + ":call search('x')" goes to the wrong position. (Eric Long) +Solution: Reset coladd when finding a match. +Files: src/search.c + +Patch 6.0.196 +Problem: When 'virtualedit' is set, 'selection' is "exclusive" and visually + selecting part of a tab at the start of a line, "x" joins it with + the previous line. Also, when the selection spans more than one + line the whole tab is deleted. +Solution: Take coladd into account when adjusting for 'selection' being + "exclusive". Also expand a tab into spaces when deleting more + than one line. +Files: src/normal.c, src/ops.c + +Patch 6.0.197 +Problem: When 'virtualedit' is set and 'selection' is "exclusive", "v$x" + doesn't delete the last character in the line. (Eric Long) +Solution: Don't reset the inclusive flag. (Helmut Stiegler) +Files: src/normal.c + +Patch 6.0.198 +Problem: When 'virtualedit' is set and 'showbreak' is not empty, moving the + cursor over the line break doesn't work properly. (Eric Long) +Solution: Make getviscol() and getviscol2() use getvvcol() to obtain the + virtual cursor position. Adjust coladvance() and oneleft() to + skip over the 'showbreak' characters. +Files: src/edit.c, src/misc2.c + +Patch 6.0.199 +Problem: Multi-byte: could use iconv() after calling iconv_end(). + (Yasuhiro Matsumoto) +Solution: Stop converting input and output stream after calling iconv_end(). +Files: src/mbyte.c + +Patch 6.0.200 +Problem: A script that starts with "#!perl" isn't recognized as a Perl + filetype. +Solution: Ignore a missing path in a script header. Also, speed up + recognizing scripts by simplifying the patterns used. +Files: runtime/scripts.vim + +Patch 6.0.201 +Problem: When scrollbinding and doing a long jump, switching windows jumps + to another position in the file. Scrolling a few lines at a time + is OK. (Johannes Zellner) +Solution: When setting w_topline reset the flag that indicates w_botline is + valid. +Files: src/diff.c + +Patch 6.0.202 +Problem: The "icon=" argument for the menu command to define a toolbar icon + with a file didn't work for GTK. (Christian J. Robinson) + For Motif and Athena a full path was required. +Solution: Search the icon file using the specified path. Expand environment + variables in the file name. +Files: src/gui_gtk.c, src/gui_x11.c + +Patch 6.0.203 +Problem: Can change 'fileformat' even though 'modifiable' is off. + (Servatius Brandt) +Solution: Correct check for kind of set command. +Files: src/option.c + +Patch 6.0.204 +Problem: ":unlet" doesn't work for variables with curly braces. (Thomas + Scott Urban) +Solution: Handle variable names with curly braces properly. (Vince Negri) +Files: src/eval.c + +Patch 6.0.205 (extra) +Problem: "gvim -f" still forks when using the batch script to start Vim. +Solution: Add an argument to "start" to use a foreground session (Michael + Geddes) +Files: src/dosinst.c + +Patch 6.0.206 +Problem: Unix: if expanding a wildcard in a file name results in a + wildcard character and there are more parts in the path with a + wildcard, it is expanded again. + Windows: ":edit \[abc]" could never edit the file "[abc]". +Solution: Don't expand wildcards in already expanded parts. + Don't remove backslashes used to escape the special meaning of a + wildcard; can edit "[abc]" if '[' is removed from 'isfname'. +Files: src/misc1.c, src/os_unix.c + +Patch 6.0.207 (extra) +Problem: Win32: The shortcuts and start menu entries let Vim startup in the + desktop directory, which is not very useful. +Solution: Let shortcuts start Vim in $HOME or $HOMEDIR$HOMEPATH. +Files: src/dosinst.c + +Patch 6.0.208 +Problem: GUI: When using a keymap and the cursor is not blinking, CTRL-^ in + Insert mode doesn't directly change the cursor color. (Alex + Solow) +Solution: Force a redraw of the cursor after CTRL-^. +Files: src/edit.c + +Patch 6.0.209 +Problem: GUI GTK: After selecting a 'guifont' with the font dialog there + are redraw problems for multi-byte characters. +Solution: Separate the font dialog from setting the new font name to avoid + that "*" is used to find wide and bold fonts. + When redrawing extra characters for the bold trick, take care of + UTF-8 characters. +Files: src/gui.c, src/gui_gtk_x11.c, src/option.c, src/proto/gui.pro, + src/proto/gui_gtk_x11.pro + +Patch 6.0.210 +Problem: After patch 6.0.167 it's no longer possible to edit a help file in + another encoding than latin1. +Solution: Let the "++enc=" argument overrule the encoding. +Files: src/fileio.c + +Patch 6.0.211 +Problem: When reading a file fails, the buffer is empty, but it might still + be possible to write it with ":w" later. The original file is + lost then. (Steve Amerige) +Solution: Set the 'readonly' option for the buffer. +Files: src/fileio.c + +Patch 6.0.212 +Problem: GUI GTK: confirm("foo", "") causes a crash. +Solution: Don't make a non-existing button the default. Add a default "OK" + button if none is specified. +Files: src/eval.c, src/gui_gtk.c + +Patch 6.0.213 +Problem: When a file name contains unprintable characters, CTRL-G and other + commands don't work well. +Solution: Turn unprintable into printable characters. (Yasuhiro Matsumoto) +Files: src/buffer.c, src/charset.c + +Patch 6.0.214 +Problem: When there is a buffer without a name, empty entries appear in the + jumplist saved in the viminfo file. +Solution: Don't write jumplist entries without a file name. +Files: src/mark.c + +Patch 6.0.215 +Problem: After using "/" from Visual mode the Paste menu and Toolbar + entries don't work. Pasting with the middle mouse doesn't work + and modeless selection doesn't work. +Solution: Use the command line mode menus and use the mouse like in the + command line. +Files: src/gui.c, src/menu.c, src/ui.c + +Patch 6.0.216 +Problem: After reloading a file, displayed in another window than the + current one, which was changed outside of Vim the part of the file + around the cursor set by autocommands may be displayed, but + jumping back to the original cursor position when entering the + window again. +Solution: Restore the topline of the window. +Files: src/fileio.c + +Patch 6.0.217 +Problem: When getting help from a help file that was used before, an empty + unlisted buffer remains in the buffer list. (Eric Long) +Solution: Wipe out the buffer used to do the tag jump from. +Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro + +Patch 6.0.218 +Problem: With explorer plugin: "vim -o filename dirname" doesn't load the + explorer window until entering the window. +Solution: Call s:EditDir() for each window after starting up. +Files: runtime/plugin/explorer.vim + +Patch 6.0.219 +Problem: ":setlocal" and ":setglobal", without arguments, display terminal + options. (Zdenek Sekera) +Solution: Skip terminal options for these two commands. +Files: src/option.c + +Patch 6.0.220 +Problem: After patch 6.0.218 get a beep on startup. (Muraoka Taro) +Solution: Don't try going to another window when there isn't one. +Files: runtime/plugin/explorer.vim + +Patch 6.0.221 +Problem: When using ":bdel" and all other buffers are unloaded the lowest + numbered buffer is jumped to instead of the most recent one. (Dave + Cecil) +Solution: Prefer an unloaded buffer from the jumplist. +Files: src/buffer.c + +Patch 6.0.222 +Problem: When 'virtualedit' is set and using autoindent, pressing Esc after + starting a new line leaves behind part of the autoindent. (Helmut + Stiegler) +Solution: After deleting the last char in the line adjust the cursor + position in del_bytes(). +Files: src/misc1.c, src/ops.c + +Patch 6.0.223 +Problem: When splitting a window that contains the explorer, hitting CR on + a file name gives error messages. +Solution: Set the window variables after splitting the window. +Files: runtime/plugin/explorer.vim + +Patch 6.0.224 +Problem: When 'sidescroll' and 'sidescrolloff' are set in a narrow window + the text may jump left-right and the cursor is displayed in the + wrong position. (Aric Blumer) +Solution: When there is not enough room, compute the left column for the + window to put the cursor in the middle. +Files: src/move.c + +Patch 6.0.225 +Problem: In Visual mode "gk" gets stuck in a closed fold. (Srinath + Avadhanula) +Solution: Behave differently in a closed fold. +Files: src/normal.c + +Patch 6.0.226 +Problem: When doing ":recover file" get the ATTENTION prompt. + After recovering the same file five times get a read error or a + crash. (Alex Davis) +Solution: Set the recoverymode flag before setting the file name. + Correct the amount of used memory for the size of block zero. +Files: src/ex_docmd.c + +Patch 6.0.227 (extra) +Problem: The RISC OS port has several problems. +Solution: Update the makefile and fix some of the problems. (Andy Wingate) +Files: src/Make_ro.mak, src/os_riscos.c, src/os_riscos.h, + src/proto/os_riscos.pro, src/search.c + +Patch 6.0.228 +Problem: After putting text in Visual mode the '] mark is not at the end of + the put text. + Undo doesn't work properly when putting a word into a Visual + selection that spans more than one line. +Solution: Correct the '] mark for the deleting the Visually selected text. + #ifdef code that depends on FEAT_VISUAL properly. + Also fix that "d" crossing line boundary puts '[ just before + deleted text. + Fix undo by saving all deleted lines at once. +Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/ops.c, + src/structs.h, src/vim.h + +Patch 6.0.229 +Problem: Multi-byte: With 'm' in 'formatoptions', formatting doesn't break + at a multi-byte char followed by an ASCII char, and the other way + around. (Muraoka Taro) + When joining lines a space is inserted between multi-byte + characters, which is not always wanted. +Solution: Check for multi-byte character before and after the breakpoint. + Don't insert a space before or after a multi-byte character when + joining lines and the 'M' flag is in 'formatoptions'. Don't + insert a space between multi-byte characters when the 'B' flag is + in 'formatoptions'. +Files: src/edit.c, src/ops.c, src/option.h + +Patch 6.0.230 +Problem: The ":" used as a motion after an operator is exclusive, but + sometimes it should be inclusive. +Solution: Make the "v" in between an operator and motion toggle + inclusive/exclusive. (Servatius Brandt) +Files: runtime/doc/motion.txt, src/normal.c + +Patch 6.0.231 +Problem: "gd" and "gD" don't work when the variable matches in a comment + just above the match to be found. (Servatius Brandt) +Solution: Continue searching in the first column below the comment. +Files: src/normal.c + +Patch 6.0.232 +Problem: "vim --version" prints on stderr while "vim --help" prints on + stdout. +Solution: Make "vim --version" use stdout. +Files: runtime/doc/starting.txt, src/globals.h, src/main.c, src/message.c + +Patch 6.0.233 +Problem: "\1\{,8}" in a regexp is not allowed, but it should work, because + there is an upper limit. (Jim Battle) +Solution: Allow using "\{min,max}" after an atom that can be empty if there + is an upper limit. +Files: src/regexp.c + +Patch 6.0.234 +Problem: It's not easy to set the cursor position without modifying marks. +Solution: Add the cursor() function. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.0.235 +Problem: When writing a file and renaming the original file to make the + backup, permissions could change when setting the owner. +Solution: Only set the owner when it's needed and set the permissions again + afterwards. + When 'backupcopy' is "auto" check that the owner and permissions + of a newly created file can be set properly. +Files: src/fileio.c + +Patch 6.0.236 +Problem: ":edit" without argument should move cursor to line 1 in Vi + compatible mode. +Solution: Add 'g' flag to 'cpoptions'. +Files: runtime/doc/options.txt, src/ex_docmd.c, src/option.h + +Patch 6.0.237 +Problem: In a C file, using the filetype plugin, re-indenting a comment + with two spaces after the middle "*" doesn't align properly. +Solution: Don't use a middle entry from a start/middle/end to line up with + the start of the comment when the start part doesn't match with + the actual comment start. +Files: src/misc1.c + +Patch 6.0.238 +Problem: Using a ":substitute" command with a substitute() call in the + substitution expression causes errors. (Srinath Avadhanula) +Solution: Save and restore pointers when doing substitution recursively. +Files: src/regexp.c + +Patch 6.0.239 +Problem: Using "A" to append after a Visually selected block which is after + the end of the line, spaces are inserted in the wrong line and + other unexpected effects. (Michael Naumann) +Solution: Don't advance the cursor to the next line. +Files: src/ops.c + +Patch 6.0.240 +Problem: Win32: building with Python 2.2 doesn't work. +Solution: Add support for Python 2.2 with dynamic linking. (Paul Moore) +Files: src/if_python.c + +Patch 6.0.241 +Problem: Win32: Expanding the old value of an option that is a path that + starts with a backslash, an extra backslash is inserted. +Solution: Only insert backslashes where needed. + Also handle multi-byte characters properly when removing + backslashes. +Files: src/option.c + +Patch 6.0.242 +Problem: GUI: On a system with an Exceed X server sometimes get a "Bad + Window" error. (Tommi Maekitalo) +Solution: When forking, use a pipe to wait in the parent for the child to + have done the setsid() call. +Files: src/gui.c + +Patch 6.0.243 +Problem: Unix: "vim --version" outputs a NL before the last line instead of + after it. (Charles Campbell) +Solution: Send the NL to the same output stream as the text. +Files: src/message.c, src/os_unix.c, src/proto/message.pro + +Patch 6.0.244 +Problem: Multi-byte: Problems with (illegal) UTF-8 characters in menu and + file name (e.g., icon text, status line). +Solution: Correctly handle unprintable characters. Catch illegal UTF-8 + characters and replace them with <xx>. Truncating the status line + wasn't done correctly at a multi-byte character. (Yasuhiro + Matsumoto) + Added correct_cmdspos() and transchar_byte(). +Files: src/buffer.c, src/charset.c, src/ex_getln.c, src/gui.c, + src/message.c, src/screen.c, src/vim.h + +Patch 6.0.245 +Problem: After using a color scheme, setting the 'background' option might + not work. (Peter Horst) +Solution: Disable the color scheme if it switches 'background' back to the + wrong value. +Files: src/option.c + +Patch 6.0.246 +Problem: ":echomsg" didn't use the highlighting set by ":echohl". (Gary + Holloway) +Solution: Use the specified attributes for the message. (Yegappan + Lakshmanan) +Files: src/eval.c + +Patch 6.0.247 +Problem: GTK GUI: Can't use gvim in a kpart widget. +Solution: Add the "--echo-wid" argument to let Vim echo the window ID on + stdout. (Philippe Fremy) +Files: runtime/doc/starting.txt, src/globals.h, src/gui_gtk_x11.c, + src/main.c + +Patch 6.0.248 +Problem: When using compressed help files and 'encoding' isn't "latin1", + Vim converts the help file before decompressing. (David Reviejo) +Solution: Don't convert a help file when 'binary' is set. +Files: src/fileio.c + +Patch 6.0.249 +Problem: "vim -t edit -c 'sta ex_help'" doesn't move cursor to edit(). +Solution: Don't set the cursor on the first line for "-c" arguments when + there also is a "-t" argument. +Files: src/main.c + +Patch 6.0.250 (extra) +Problem: Macintosh: Various problems when compiling. +Solution: Various fixes, mostly #ifdefs. (Dany St. Amant) +Files: src/gui_mac.c, src/main.c, src/misc2.c, src/os_mac.h, + src/os_mac.pbproj/project.pbxproj, src/os_unix.c + +Patch 6.0.251 (extra) +Problem: Macintosh: menu shortcuts are not very clear. +Solution: Show the shortcut with the Mac clover symbol. (raindog) +Files: src/gui_mac.c + +Patch 6.0.252 +Problem: When a user function was defined with "abort", an error that is + not inside if/endif or while/endwhile doesn't abort the function. + (Servatius Brandt) +Solution: Don't reset did_emsg when the function is to be aborted. +Files: src/ex_docmd.c + +Patch 6.0.253 +Problem: When 'insertmode' is set, after "<C-O>:edit file" the next <C-O> + doesn't work. (Benji Fisher) <C-L> has the same problem. +Solution: Reset need_start_insertmode once in edit(). +Files: src/edit.c + +Patch 6.0.254 (extra) +Problem: Borland C++ 5.5: Checking for stack overflow doesn't work + correctly. Matters when using a complicated regexp. +Solution: Remove -N- from Make_bc5.mak. (Yasuhiro Matsumoto) +Files: src/Make_bc5.mak + +Patch 6.0.255 (extra) (depends on patch 6.0.116 and 6.0.121) +Problem: Win32: ACL support doesn't work well on Samba drives. +Solution: Add a check for working ACL support. (Mike Williams) +Files: src/os_win32.c + +Patch 6.0.256 (extra) +Problem: Win32: ":highlight Comment guifg=asdf" does not give an error + message. (Randall W. Morris) Also for other systems. +Solution: Add gui_get_color() to give one error message for all systems. +Files: src/gui.c, src/gui_amiga.c, src/gui_athena.c, src/gui_motif.c, + src/gui_riscos.c, src/gui_x11.c, src/gui_gtk_x11.c, + src/proto/gui.pro, src/syntax.c + +Patch 6.0.257 +Problem: Win32: When 'mousefocus' is set and there is a BufRead + autocommand, after the dialog for permissions changed outside of + Vim: 'mousefocus' stops working. (Robert Webb) +Solution: Reset need_mouse_correct after checking timestamps. +Files: src/fileio.c + +Patch 6.0.258 +Problem: When 'scrolloff' is 999 and there are folds, the text can jump up + and down when moving the cursor down near the end of the file. + (Lubomir Host) +Solution: When putting the cursor halfway the window start counting lines at + the end of a fold. +Files: src/move.c + +Patch 6.0.259 +Problem: MS-DOS: after editing the command line the cursor shape may remain + like in Insert mode. (Volker Kiefel) +Solution: Reset the cursor shape after editing the command line. +Files: src/ex_getln.c + +Patch 6.0.260 +Problem: GUI: May crash while starting up when giving an error message for + missing color. (Servatius Brandt) +Solution: Don't call gui_write() when still starting up. Don't give error + message for empty color name. Don't use 't_vb' while the GUI is + still starting up. +Files: src/fileio.c, src/gui.c, src/misc1.c, src/ui.c + +Patch 6.0.261 +Problem: nr2char() and char2nr() don't work with multi-byte characters. +Solution: Use 'encoding' for these functions. (Yasuhiro Matsumoto) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.0.262 (extra) +Problem: Win32: IME doesn't work properly. OnImeComposition() isn't used + at all. +Solution: Adjust various things for IME. +Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/proto/ui.pro, + src/structs.h, src/ui.c + +Patch 6.0.263 +Problem: GTK: When a dialog is closed by the window manager, Vim hangs. + (Christian J. Robinson) +Solution: Use GTK_WIDGET_DRAWABLE() instead of GTK_WIDGET_VISIBLE(). +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 6.0.264 +Problem: The amount of virtual memory is used to initialize 'maxmemtot', + which may be much more than the amount of physical memory, + resulting in a lot of swapping. +Solution: Get the amount of physical memory with sysctl(), sysconf() or + sysinfo() when possible. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/os_unix.c, src/os_unix.h + +Patch 6.0.265 +Problem: Win32: Using backspace while 'fkmap' is set causes a crash. + (Jamshid Oasjmoha) +Solution: Don't try mapping special keys. +Files: src/farsi.c + +Patch 6.0.266 +Problem: The rename() function deletes the file if the old and the new name + are the same. (Volker Kiefel) +Solution: Don't do anything if the names are equal. +Files: src/fileio.c + +Patch 6.0.267 +Problem: UTF-8: Although 'isprint' says a character is printable, + utf_char2cells() still considers it unprintable. +Solution: Use vim_isprintc() for characters upto 0x100. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.0.268 (extra) (depends on patch 6.0.255) +Problem: Win32: ACL check crashes when using forward slash in file name. +Solution: Improve the check for the path in the file name. +Files: src/os_win32.c + +Patch 6.0.269 +Problem: Unprintable characters in a file name may cause problems when + using the 'statusline' option or when 'buftype' is "nofile". +Solution: call trans_characters() for the resulting statusline. (Yasuhiro + Matsumoto) +Files: src/buffer.c, src/screen.c, src/charset.c + +Patch 6.0.270 (depends on patch 6.0.267) +Problem: A tab causes UTF-8 text to be displayed in the wrong position. + (Ron Aaron) +Solution: Correct utf_char2cells() again. +Files: src/mbyte.c + +Patch 6.1a.001 (extra) +Problem: 32bit DOS: copying text to the clipboard may cause a crash. + (Jonathan D Johnston) +Solution: Don't copy one byte too much in SetClipboardData(). +Files: src/os_msdos.c + +Patch 6.1a.002 +Problem: GTK: On some configurations, when closing a dialog from the window + manager, Vim hangs. +Solution: Catch the "destroy" signal. (Aric Blumer) +Files: src/gui_gtk.c + +Patch 6.1a.003 +Problem: Multi-byte: With UTF-8 double-wide char and 'virtualedit' set: + yanking in Visual mode doesn't include the last byte. (Eric Long) +Solution: Don't add a space for a double-wide character. +Files: src/ops.c + +Patch 6.1a.004 (extra) +Problem: MINGW: undefined type. (Ron Aaron) +Solution: Make GetCompositionString_inUCS2() static. +Files: src/gui_w32.c, src/gui_w48.c, src/proto/gui_w32.pro + +Patch 6.1a.005 (extra) +Problem: Win32: ":hardcopy" doesn't work after ":hardcopy!". (Jonathan + Johnston) +Solution: Don't keep the driver context when using ":hardcopy!". (Vince + Negri) +Files: src/os_mswin.c + +Patch 6.1a.006 +Problem: multi-byte: after setting 'encoding' the window title might be + wrong. +Solution: Force resetting the title. (Yasuhiro Matsumoto) +Files: src/option.c + +Patch 6.1a.007 +Problem: Filetype detection for "*.inc" doesn't work. +Solution: Use a ":let" command. (David Schweikert) +Files: runtime/filetype.vim + +Patch 6.1a.008 (extra) +Problem: Win32: ACL detection for network shares doesn't work. +Solution: Include the trailing (back)slash in the root path. (Mike Williams) +Files: src/os_win32.c + +Patch 6.1a.009 +Problem: When using "\@<=" or "\@<!" in a pattern, a "\1" may refer to a () + part that follows, but it generates an error message. +Solution: Allow a forward reference when there is a following "\@<=" or + "\@<!". +Files: runtime/doc/pattern.txt, src/regexp.c + +Patch 6.1a.010 +Problem: When using ":help" and opening a new window, the alternate file + isn't set. +Solution: Set the alternate file to the previously edited file. +Files: src/ex_cmds.c + +Patch 6.1a.011 +Problem: GTK: ":set co=77", change width with the mouse, ":set co=77" + doesn't resize the window. (Darren Hiebert) +Solution: Set the form size after handling a resize event. +Files: src/gui_gtk_x11.c + +Patch 6.1a.012 +Problem: GTK: The file browser always returns a full path. (Lohner) +Solution: Shorten the file name if possible. +Files: src/gui_gtk.c + +Patch 6.1a.013 +Problem: When using "=~word" in 'cinkeys' or 'indentkeys', the case of the + last character of the word isn't ignored. (Raul Segura Acevedo) +Solution: Ignore case when checking the last typed character. +Files: src/edit.c + +Patch 6.1a.014 +Problem: After patch 6.1a.006 can't compile without the title feature. +Solution: Add an #ifdef. +Files: src/option.c + +Patch 6.1a.015 +Problem: MS-Windows: When expanding a file name that contains a '[' or '{' + an extra backslash is inserted. (Raul Segura Acevedo) +Solution: Avoid adding the backslash. +Files: src/ex_getln.c + +Patch 6.1a.016 +Problem: Completion after ":language" doesn't include "time". (Raul Segura + Acevedo) +Solution: Add the alternative to the completions. +Files: src/ex_cmds2.c + +Patch 6.1a.017 +Problem: Clicking the mouse in the top row of a window where the first line + doesn't fit moves the cursor to the wrong column. +Solution: Add the skipcol also for the top row of a window. +Files: src/ui.c + +Patch 6.1a.018 +Problem: When 'scrolloff' is one and the window height is one, "gj" can put + the cursor above the window. (Raul Segura Acevedo) +Solution: Don't let skipcol become bigger than the cursor column. +Files: src/move.c + +Patch 6.1a.019 +Problem: When using a composing character on top of an ASCII character, the + "l" command clears the composing character. Only when 'ruler' and + 'showcmd' are off. (Raphael Finkel) +Solution: Don't move the cursor by displaying characters when there are + composing characters. +Files: src/screen.c + +Patch 6.1a.020 +Problem: GTK: after patch 6.1a.011 resizing with the mouse doesn't always + work well for small sizes. (Adrien Beau) +Solution: Use another way to avoid the problem with ":set co=77". +Files: src/gui_gtk_x11.c + +Patch 6.1a.021 +Problem: Several Syntax menu entries are wrong or confusing. +Solution: Rephrase and correct the menu entries. (Adrien Beau) +Files: runtime/makemenu.vim, runtime/menu.vim + +Patch 6.1a.022 +Problem: A tags file might be used twice on case insensitive systems. + (Rick Swanton) +Solution: Don't use the same file name twice in the default for the 'tags' + option. Ignore case when comparing names of already visited + files. +Files: src/misc2.c, src/option.c + +Patch 6.1a.023 +Problem: When starting the GUI get "C" characters echoed in the terminal. +Solution: Don't try sending a clear-screen command while the GUI is starting + up. +Files: src/screen.c + +Patch 6.1a.024 +Problem: In other editors CTRL-F is often used for a find dialog. +Solution: In evim use CTRL-F for the find dialog. +Files: runtime/evim.vim + +Patch 6.1a.025 +Problem: The choices for the fileformat dialog can't be translated. +Solution: Add g:menutrans_fileformat_choices. (Adrien Beau) +Files: runtime/menu.vim + +Patch 6.1a.026 +Problem: Indenting Java files is wrong with "throws", "extends" and + "implements" clauses. +Solution: Update the Java indent script. +Files: runtime/indent/java.vim + +Patch 6.1a.027 +Problem: A few Syntax menu entries missing or incorrect. +Solution: Add and correct the menu entries. (Adrien Beau) + Shorten a few menus to avoid they become too long. +Files: runtime/makemenu.vim, runtime/menu.vim + +Patch 6.1a.028 +Problem: XIM: problems with feedback and some input methods. +Solution: Use iconv for calculating the cells. Remove the queue for + key_press_event only when text was changed. (Yasuhiro Matsumoto) +Files: src/globals.h, src/mbyte.c, src/screen.c + +Patch 6.1a.029 +Problem: After patch 6.1a.028 can't compile GTK version with XIM but + without multi-byte chars. +Solution: Add an #ifdef. (Aschwin Marsman) +Files: src/mbyte.c + +Patch 6.1a.030 +Problem: With double-byte encodings toupper() and tolower() may have wrong + results. +Solution: Skip double-byte characters. (Eric Long) +Files: src/eval.c + +Patch 6.1a.031 +Problem: Accessing the 'balloondelay' variable may cause a crash. +Solution: Make the variable for 'balloondelay' a long. (Olaf Seibert) +Files: src/option.h + +Patch 6.1a.032 (extra) +Problem: Some menu files used a wrong encoding name for "scriptencoding". +Solution: Move the translations to a separate file, which is sourced after + setting "scriptencoding". + Also add Czech menu translations in ASCII and update the other + encodings. +Files: runtime/lang/menu_cs_cz.iso_8859-1.vim, + runtime/lang/menu_cs_cz.iso_8859-2.vim, + runtime/lang/menu_czech_czech_republic.1250.vim, + runtime/lang/menu_czech_czech_republic.1252.vim, + runtime/lang/menu_czech_czech_republic.ascii.vim, + runtime/lang/menu_de_de.iso_8859-1.vim, + runtime/lang/menu_de_de.latin1.vim, + runtime/lang/menu_fr_fr.iso_8859-1.vim, + runtime/lang/menu_fr_fr.latin1.vim, + runtime/lang/menu_french_france.1252.vim, + runtime/lang/menu_german_germany.1252.vim, + runtime/lang/menu_ja_jp.euc-jp.vim, + runtime/lang/menu_ja_jp.utf-8.vim, + runtime/lang/menu_japanese_japan.932.vim + +Patch 6.1a.033 +Problem: XIM: doesn't reset input context. +Solution: call xim_reset() with im_set_active(FALSE). (Takuhiro Nishioka) +Files: src/mbyte.c + +Patch 6.1a.034 (extra) +Problem: Win32: The ACL checks for a readonly file still don't work well. +Solution: Remove the ACL checks, go back to how it worked in Vim 6.0. +Files: src/os_win32.c + +Patch 6.1a.035 +Problem: multi-byte: When using ":sh" in the GUI, typed and displayed + multi-byte characters are not handled correctly. +Solution: Deal with multi-byte characters to and from the shell. (Yasuhiro + Matsumoto) Also handle UTF-8 composing characters. +Files: src/os_unix.c + +Patch 6.1a.036 +Problem: GTK: the save-yourself event was not handled. +Solution: Catch the save-yourself event and preserve swap files. (Neil Bird) +Files: src/gui_gtk_x11.c + +Patch 6.1a.037 +Problem: The MS-Windows key mapping doesn't include CTRL-S for saving. + (Vlad Sandrini) +Solution: Map CTRL-S to ":update". +Files: runtime/mswin.vim + +Patch 6.1a.038 +Problem: Solaris: Including both sys/sysctl.h and sys/sysinfo.h doesn't + work. (Antonio Colombo) +Solution: Don't include sys/sysinfo.h when not calling sysinfo(). +Files: src/os_unix.c + +Patch 6.1a.039 +Problem: Not all visual basic files are recognized. +Solution: Add checks to catch *.ctl files. (Raul Segura Acevedo) +Files: runtime/filetype.vim + +Patch 6.1a.040 +Problem: A *.pl file is recognized as Perl, but it could be a prolog file. +Solution: Check the first non-empty line. (Kontra Gergely) +Files: runtime/filetype.vim + +Patch 6.1a.041 +Problem: When pressing the left mouse button in the command line and them + moving the mouse upwards, nearly all the text is selected. +Solution: Don't try extending a modeless selection when there isn't one. +Files: src/ui.c + +Patch 6.1a.042 +Problem: When merging files, ":diffput" and ":diffget" are used a lot, but + they require a lot of typing. +Solution: Add "dp" for ":diffput" and "do" for ":diffget". +Files: runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro + + +Patch 6.1b.001 (extra) +Problem: Checking for wildcards in a path does not handle multi-byte + characters with a trail byte which is a wildcard. +Solution: Handle multi-byte characters correctly. (Muraoka Taro) +Files: src/os_amiga.c, src/os_mac.c, src/os_msdos.c, src/os_mswin.c, + src/os_unix.c + +Patch 6.1b.002 +Problem: A regexp that ends in "\{" is not flagged as an error. May cause + a stack overflow when 'incsearch' is set. (Gerhard Hochholzer) +Solution: Handle a missing "}" as an error. +Files: src/regexp.c + +Patch 6.1b.003 (extra) +Problem: The RISC OS GUI doesn't compile. +Solution: Include changes since Vim 5.7. (Andy Wingate) +Files: src/Make_ro.mak, src/gui_riscos.c, src/os_riscos.c, + src/os_riscos.h, src/proto/gui_riscos.pro + +Patch 6.1b.004 +Problem: col("'>") returns a negative number for linewise selection. (Neil + Bird) +Solution: Don't add one to MAXCOL. +Files: src/eval.c + +Patch 6.1b.005 +Problem: Using a search pattern that causes an out-of-stack error while + 'hlsearch' is set keeps giving the hit-Enter prompt. + A search pattern that takes a long time delays typing when + 'incsearch' is set. +Solution: Stop 'hlsearch' highlighting when the regexp causes an error. + Stop searching for 'incsearch' when a character is typed. +Files: src/globals.h, src/message.c, src/screen.c, src/search.c, + src/vim.h + +Patch 6.1b.006 +Problem: When entering a composing character on the command line with + CTRL-V, the text isn't redrawn correctly. +Solution: Redraw the text under and after the cursor. +Files: src/ex_getln.c + +Patch 6.1b.007 +Problem: When the cursor is in the white space between two sentences, "dis" + deletes the first character of the following sentence, "das" + deletes a space after the sentence. +Solution: Backup the cursor one character in these situations. +Files: src/search.c + +Patch 6.1b.008 +Problem: *.xsl files are not recognized as xslt but xml. + Monk files are not recognized. +Solution: Delete the duplicate line for *.xsl. (Johannes Zellner) + Recognize monk files. +Files: runtime/filetype.vim + +Patch 6.1b.009 +Problem: Can't always compile small features and then adding eval feature, + "sandbox" is undefined. (Axel Kielhorn) +Solution: Always define "sandbox" when the eval feature is used. +Files: src/globals.h + +Patch 6.1b.010 (extra) +Problem: When compiling gvimext.cpp with MSVC 4.2 get a number of warnings. +Solution: Change "true" to "TRUE". (Walter Briscoe) +Files: GvimExt/gvimext.cpp + +Patch 6.1b.011 +Problem: When using a very long string for confirm(), can't quit the + displaying at the more prompt. (Hari Krishna Dara) +Solution: Jump to the end of the message to show the choices. +Files: src/message.c + +Patch 6.1b.012 +Problem: Multi-byte: When 'showbreak' is set and a double-wide character + doesn't fit at the right window edge the cursor gets stuck there. + Using cursor-left gets stuck when 'virtualedit' is set. (Eric + Long) +Solution: Fix the way the extra ">" character is counted when 'showbreak' is + set. Don't correct cursor for virtual editing on a double-wide + character. +Files: src/charset.c, src/edit.c + +Patch 6.1b.013 +Problem: A user command that partly matches with a buffer-local user + command and matches full with a global user command unnecessarily + gives an 'ambiguous command' error. +Solution: Find the full global match even after a partly local match. +Files: src/ex_docmd.c + +Patch 6.1b.014 +Problem: EBCDIC: switching mouse events off causes garbage on screen. + Positioning the cursor in the GUI causes garbage. +Solution: Insert an ESC in the terminal code. (Ralf Schandl) + Use "\b" instead of "\010" for KS_LE. +Files: src/os_unix.c, src/term.c + +Patch 6.1b.015 +Problem: Vimtutor has a typo. Get a warning for "tempfile" if it + doesn't exist. +Solution: Move a quote to the end of a line. (Max Ischenko) + Use "mktemp" first, more systems have it. +Files: src/vimtutor + +Patch 6.1b.016 +Problem: GTK: loading a fontset that works partly, Vim might hang or crash. +Solution: Avoid that char_width becomes zero. (Yasuhiro Matsumoto) +Files: src/gui_gtk_x11.c + +Patch 6.1b.017 +Problem: GUI: When using ":shell" and there is a beep, nothing happens. +Solution: Call vim_beep() to produce the beep from the shell. (Yasuhiro + Matsumoto) +Files: src/message.c + +Patch 6.1b.018 (depends on 6.1b.006) +Problem: When entering the encryption key, special keys may still reveal + the typed characters. +Solution: Make sure stars are used or nothing is shown in all cases. +Files: src/digraph.c, src/getchar.c, src/ex_getln.c + +Patch 6.1b.019 (depends on 6.1b.005) +Problem: A search pattern that takes a long time slows down typing when + 'incsearch' is set. +Solution: Pass SEARCH_PEEK to dosearch(). +Files: src/ex_getln.c + +Patch 6.1b.020 +Problem: When using the matchit plugin, "%" finds a match on the "end" of a + ":syntax region" command in Vim scripts. +Solution: Skip over ":syntax region" commands by setting b:match_skip. +Files: runtime/ftplugin/vim.vim + +Patch 6.1b.021 +Problem: when 'mousefocus' is set, CTRL-W CTRL-] sometimes doesn't warp the + pointer to the new window. (Robert Webb) +Solution: Don't reset need_mouse_correct when checking the timestamp of a + file. +Files: src/fileio.c + +Patch 6.1b.022 +Problem: With lots of folds "j" does not obey 'scrolloff' properly. + (Srinath Avadhanula) +Solution: Go to end of the fold before counting context lines. +Files: src/move.c + +Patch 6.1b.023 +Problem: On MS-Windows system() may cause checking timestamps, because Vim + looses and gains input focus, while this doesn't happen on Unix. +Solution: Don't check timestamps while system() is busy. +Files: src/ex_cmds2.c, src/fileio.c, src/globals.h, src/misc1.c + +Patch 6.1b.024 (extra) +Problem: Gettext 0.11 complains that "sjis" is not a standard name. +Solution: Use "cp932" instead. +Files: src/po/sjiscorr.c + +Patch 6.1b.025 (extra) +Problem: Win32: When closing gvim while it is minimized and has a changed + file, the file-changed dialog pops up in a corner of the screen. +Solution: Put the dialog in the middle of the screen. +Files: src/gui_w48.c + +Patch 6.1b.026 +Problem: When 'diffopt' contains 'iwhite' but not 'icase': differences in + case are not highlighted properly. (Gerhard Hochholzer) +Solution: Don't ignore case when ignoring white space differences. +Files: src/diff.c + +Patch 6.1b.027 +Problem: "vim --remote +" may cause a crash. +Solution: Check for missing file name argument. (Martin Kahlert) +Files: src/main.c + +Patch 6.1b.028 (extra) +Problem: Win16: Can't compile after patch 6.1b.025. +Solution: Add code specifically for Win16. (Vince Negri) +Files: src/gui_w48.c + +Patch 6.1b.029 +Problem: Win32: When a directory on an NTFS partition is read/execute (no + delete,modify,write) and the file has modify rights, trying to + write the file deletes it. Making the file read/write/execute + (not delete) solves it. (Mark Canup) +Solution: Use the Unix code to check for a writable directory. If not, then + make a backup copy and overwrite the file. +Files: src/fileio.c + +Patch 6.1b.030 (extra) +Problem: Mac: small mistake in the build script and prototypes. +Solution: Fix the build script and add the prototypes. (Axel Kielhorn) +Files: src/os_mac.build, src/gui_mac.c + +Patch 6.1b.031 (extra) +Problem: Win32 GUI: ":set guifont=*" doesn't set 'guifont' to the resulting + font name. (Vlad Sandrini) +Solution: Put the code back in gui_mch_init_font() to form the font name out + of the logfont. +Files: src/gui_w48.c + +Patch 6.1b.032 +Problem: Athena: Setting a color scheme before the GUI has started causes a + crash. (Todd Blumer) +Solution: Don't try using color names that haven't been set yet. +Files: src/gui_athena.c + +Patch 6.1b.033 +Problem: When using a count after a ":s" command may get ml_get errors. + (Dietmar Lang) +Solution: Check that the resulting range does not go past the end of the + buffer. +Files: src/ex_cmds.c + +Patch 6.1b.034 +Problem: After sourcing mswin.vim, when using <C-S-Right> after + auto-indenting and then <Del>, get warning for allocating + ridiculous amount of memory. (Dave Delgreco) +Solution: Adjust the start of the Visual area when deleting the auto-indent. +Files: src/edit.c + +Patch 6.1b.035 +Problem: When using evim, dropping a file on Vim and then double clicking + on a word, it is changed to "i". (Merlin Hansen) +Solution: Reset need_start_insertmode after editing the file. +Files: src/ex_docmd.c + + +============================================================================== +VERSION 6.2 *version-6.2* + +This section is about improvements made between version 6.1 and 6.2. + +This is mainly a bug-fix release. There are also a few new features. + +Main new features: +- Support for GTK 2. (Daniel Elstner) +- Support for editing Arabic text. (Nadim Shaikli & Isam Bayazidi) +- ":try" command and exception handling. (Servatius Brandt) +- Support for the neXtaw GUI toolkit (mostly like Athena). (Alexey Froloff) +- Cscope support for Win32. (Khorev Sergey) +- Support for PostScript printing in various 8-bit encodings. (Mike Williams) + + +Changed *changed-6.2* +------- + +Removed the scheme indent file, the internal Lisp indenting works well now. + +Moved the GvimEXt, OleVim and VisVim directories into the "src" directory. +This is more consistent with how xxd is handled. + +The VisVim.dll file is installed in the top directory, next to gvimext.dll, +instead of in a subdirectory "VisVim". Fixes that NSIS was uninstalling it +from the wrong directory. + +Removed the art indent file, it didn't do anything. + +submatch() returned line breaks with CR instead of LF. + +Changed the Win32 Makefiles to become more uniform and compile gvimext.dll. +(Dan Sharp) + +'cindent': Align a "//" comment with a "//" comment in a previous line. +(Helmut Stiegler) + +Previously only for xterm-like terminals parent widgets were followed to find +the title and icon label. Now do this for all terminal emulators. + +Made it possible to recognize backslashes for "%" matching. The 'M' flag in +'cpoptions' disables it. (Haakon Riiser) + +Removed the Make_tcc.mak makefile for Turbo C. It didn't work and we probably +can't make it work (the compiler runs out of memory). + +Even though the documentation refers to keywords, "[ CTRL-D" was using +'isident' to find matches. Changed it to use 'iskeyword'. Also applies to +other commands that search for defined words in included files such as +":dsearch", "[D" and "[d". + +Made 'keywordprg' global-local. (Christian Robinson) + +Enabled the Netbeans interface by default. Reversed the configure argument +from "--enable-netbeans" to "--disable-netbeans". + + +Added *added-6.2* +----- + +New options: + 'arabic' + 'arabicshape' + 'ambiwidth' + 'autochdir' + 'casemap' + 'copyindent' + 'cscopequickfix' + 'preserveindent' + 'printencoding' + 'rightleftcmd' + 'termbidi' + 'toolbariconsize' + 'winfixheight' + +New keymaps: + Serbian (Aleksandar Veselinovic) + Chinese Pinyin (Fredrik Roubert) + Esperanto (Antoine J. Mechelynck) + +New syntax files: + Valgrind (Roger Luethi) + Smarty template (Manfred Stienstra) + MySQL (Kenneth Pronovici) + RockLinux package description (Piotr Esden-Tempski) + MMIX (Dirk Huesken) + gkrellmrc (David Necas) + Tilde (Tobias Rundtrom) + Logtalk (Paulo Moura) + PLP (Juerd Waalboer) + fvwm2m4 (David Necas) + IPfilter (Hendrik Scholz) + fstab (Radu Dineiu) + Quake (Nikolai Weibull) + Occam (Mario Schweigler) + lpc (Shizhu Pan) + Exim conf (David Necas) + EDIF (Artem Zankovich) + .cvsrc (Nikolai Weibull) + .fetchmailrc (Nikolai Weibull) + GNU gpg (Nikolai Weibull) + Grub (Nikolai Weibull) + Modconf (Nikolai Weibull) + RCS (Dmitry Vasiliev) + Art (Dorai Sitaram) + Renderman Interface Bytestream (Andrew J Bromage) + Mailcap (Doug Kearns) + Subversion commit file (Dmitry Vasiliev) + Microsoft IDL (Vadim Zeitlin) + WildPackets EtherPeek Decoder (Christopher Shinn) + Spyce (Rimon Barr) + Resolv.conf (Radu Dineiu) + A65 (Clemens Kirchgatterer) + sshconfig and sshdconfig (David Necas) + Cheetah and HTMLCheetah (Max Ischenko) + Packet filter (Camiel Dobbelaar) + +New indent files: + Eiffel (David Clarke) + Tilde (Tobias Rundtrom) + Occam (Mario Schweigler) + Art (Dorai Sitaram) + PHP (Miles Lott) + Dylan (Brent Fulgham) + +New tutor translations: + Slovak (Lubos Celko) + Greek (Christos Kontas) + German (Joachim Hofmann) + Norwegian (�yvind Holm) + +New filetype plugins: + Occam (Mario Schweigler) + Art (Dorai Sitaram) + ant.vim, aspvbs.vim, config.vim, csc.vim, csh.vim, dtd.vim, html.vim, + jsp.vim, pascal.vim, php.vim, sgml.vim, sh.vim, svg.vim, tcsh.vim, + xhtml.vim, xml.vim, xsd.vim. (Dan Sharp) + +New compiler plugins: + Checkstyle (Doug Kearns) + g77 (Ralf Wildenhues) + fortran (Johann-Guenter Simon) + Xmllint (Doug Kearns) + Ruby (Tim Hammerquist) + Modelsim vcom (Paul Baleme) + +New menu translations: + Brazilian (Jos� de Paula) + British (Mike Williams) + Korean in UTF-8. (Nam SungHyun) + Norwegian (�yvind Holm) + Serbian (Aleksandar Jelenak) + +New message translation for Norwegian. (�yvind Holm) + +New color scheme: + desert (Hans Fugal) + +Arabic specific features. 'arabicshape', 'termbidi', 'arabic' and +'rightleftcmd' options. (Nadim Shaikli & Isam Bayazidi) + +Support for neXtaw GUI toolkit, mostly like Athena. (Alexey Froloff) + +Win32: cscope support. (Khorev Sergey) + +VMS: various improvements to documentation and makefiles. (Zoltan Arpadffy) + +Added "x" key to the explorer plugin: execute the default action. (Yasuhiro +Matsumoto) + +Compile gvimext.dll with MingW. (Rene de Zwart) + +Add the "tohtml.vim" plugin. It defines the ":TOhtml" user command, an easy +way to convert text to HTML. + +Added ":try" / ":catch" / ":finally" / ":endtry" commands. Add E999 numbers +to all error messages, so that they can be caught by the number. +(Servatius Brandt) +Moved part of ex_docmd.c to the new ex_eval.c source file. + +Include support for GTK+ 2.2.x (Daniel Elstner) +Adds the "~" register: drag & drop text. +Adds the 'toolbariconsize' option. +Add -Dalloca when running lint to work around a problem with alloca() +prototype. + +When selecting an item in the error window to jump to, take some effort to +find an ordinary window to show the file in (not a preview window). + +Support for PostScript printing of various 8-bit encodings. (Mike Williams) + +inputdialog() accepts a third argument that is used when the dialog is +cancelled. Makes it possible to see a difference between cancelling and +entering nothing. + +Included Aap recipes. Can be used to update Vim to the latest version, +building and installing. + +"/" option in 'cinoptions': extra indent for comment lines. (Helmut Stiegler) + +Vim variable "v:register" and functions setreg(), getreg() and getregtype(). +(Michael Geddes) + +"v" flag in 'cpoptions': Leave text on screen with backspace in Insert mode. +(Phillip Vandry) + +Dosinst.exe also finds gvimext.dll in the "GvimExt" directory. Useful when +running install in the "src" directory for testing. + +Support tag files that were sorted with case ignored. (Flemming Madsen) + +When completing a wildcard in a leading path element, as in "../*/Makefile", +only the last part ("Makefile") was listed. Support custom defined +command line completion. (Flemming Madsen) + +Also recognize "rxvt" as an xterm-like terminal. (Tomas Styblo) + +Proper X11 session management. Fixes that the WM_SAVE_YOURSELF event was not +used by popular desktops. (Neil Bird) +Not used for Gnome 2, it has its own handling. + +Support BOR, DEBUG and SPAWNO arguments for the Borland 3 Makefile. (Walter +Briscoe) + +Support page breaks for printing. Adds the "formfeed" field in +'printoptions'. (Mike Williams) + +Mac OSX: multi-language support: iconv and gettext. (Muraoka Taro, Axel +Kielhorn) + +"\Z" flag in patterns: ignore differences in combining characters. (Ron Aaron) + +Added 'preserveindent' and 'copyindent' options. They use existing white +space characters instead of using Tabs as much as possible. (Chris Leishman) + +Updated Unicode tables to Unicode 4.0. (Raphael Finkel) + +Support for the mouse wheel in rxvt. (AIDA Shinra) + +Win32: Added ":8" file modifier to get short filename. Test50 tests the ":8" +expansion on Win32 systems. (Michael Geddes) + +'cscopequickfix' option: Open quickfix window for Cscope commands. Also +cleanup the code for giving messages. (Khorev Sergey) + +GUI: Support more than 222 columns for mouse positions. + +":stopinsert" command: Don't return to Insert mode. + +"interrupt" command for debug mode. Useful for simulating CTRL-C. (Servatius +Brandt) + + +Fixed *fixed-6.2* +----- + +Removed a few unused #defines from config.h.in, os_os2_cfg.h and os_vms_conf.h. + +The Vim icons in PNG format didn't have a transparent background. (Greg +Roelofs) + +Fixed a large number of spelling mistakes in the docs. (Adri Verhoef) + +The #defines for prototype generation were causing trouble. Changed them to +typedefs. + +A new version of libintl.h uses __asm__, which confuses cproto. Define a +dummy __asm__ macro. + +When 'virtualedit' is set can't move to halfway an unprintable character. +Cripples CTRL-V selection. (Taro Muraoka) +Allow moving to halfway an unprintable character. Don't let getvvcol() change +the pos->coladd argument. + +When a tab wraps to the next line, 'listchars' is set and 'foldcolumn' is +non-zero, only one character of the foldcolumn is highlighted. (Muraoka Taro) + +When using ":catch" without an argument Vim crashes. (Yasuhiro Matsumoto) +When no argument given use the ".*" pattern. + +Win32: When gvim.exe is started from a shortcut with the window style property +set to maximize Vim doesn't start with a maximized window. (Yasuhiro +Matsumoto) Open the window with the default size and don't call ShowWindow() +again when it's already visible. (Helmut Stiegler) + +gui_gtk.c used MAX, but it's undefined to avoid a conflict with system header +files. + +Win32: When closing a window from a mapping some pixels remain on the +statusline. (Yasuhiro Matsumoto) + +A column number in an errorformat that goes beyond the end of the line may +cause a crash. + +":throw 'test'" crashes Vim. (Yasuhiro Matsumoto) + +The file selector's scrollbar colors are not set after doing a ":hi Scrollbar +guifg=color". And the file selector's colors are not changed by the +colorscheme command. (David Harrison) + +Motif: When compiling with FEAT_FOOTER defined, the text area gets a few +pixels extra space on the right. Remove the special case in +gui_get_base_width(). (David Harrison) + +Using CTRL-R CTRL-P in Insert mode puts the '] mark in the wrong position. +(Helmut Stiegler) + +When 'formatoptions' includes "awct" a non-comment wasn't auto-formatted. + +Using a "--cmd" argument more than 10 times caused a crash. + +DEC style mouse support didn't work if the page field is not empty. +(Uribarri) + +"vim -l one two" did only set 'lisp' in the first file. Vi does it for every +file. + +":set tw<" didn't work. Was checking for '^' instead of '<'. + +In ":hardcopy > %.ps" the "%" was not expanded to the current filename. + +Made ":redraw" also update the Visual area. + +When a not implemented command, such as ":perl", has wrong arguments the less +important error was reported, giving the user the idea the command could work. + +On non-Unix systems autocommands for writing did not attempt a match with the +short file name, causing a pattern like "a/b" to fail. + +VMS: e_screenmode was not defined and a few other fixes for VMS. (Zoltan +Arpadffy) + +redraw_msg() depended on FEAT_ARABIC instead of FEAT_RIGHTLEFT. (Walter +Briscoe) + +Various changes for the PC Makefiles. (Walter Briscoe) + +Use _truename() instead of our own code to expand a file name into a full +path. (Walter Briscoe) + +Error in filetype check for /etc/modutils. (Lubomir Host) + +Cscope interface: allocated a buffer too small. + +Win16: remove a trailing backslash from a path when obtaining the permission +flags. (Vince Negri) + +When searching for tags with case ignored Vim could hang. + +When searching directories with a stopdir could get a crash. Did not +re-allocate enough memory. (Vince Negri) + +A user command may cause a crash. Don't use the command index when it's +negative. (Vince Negri) + +putenv() didn't work for MingW and Cygwin. (Dan Sharp) + +Many functions were common between os_msdos.c and os_win16.c. Use os_msdos.c +for compiling the Win16 version and remove the functions from os_win16.c. +(Vince Negri) + +For terminals that behave like an xterm but didn't have a name that is +recognized, the window title would not always be set. + +When syntax highlighting is off ":hardcopy" could still attempt printing +colors. + +Crash when using ":catch" without an argument. (Servatius Brandt) + +Win32: ":n #" doubled the backslashes. + +Fixed Arabic shaping for the command line. (Nadim Shaikli) + +Avoid splitting up a string displayed on the command line into individual +characters, it breaks Arabic shaping. + +Updated Cygwin and MingW makefiles to use more dependencies. (Dan Sharp) + +2html.vim didn't work with 'nomagic' set. + +When a local argument list is used and doing ":only" Vim could crash later. +(Muraoka Taro) + +When using "%P" in 'statusline' and the fillchar is "-", a percentage of 3% +could result in "-3%". Also avoid changing a space inside a filename to the +fill character. + +MSwin: Handling of backslashes and double quotes for command line arguments +was not like what other applications do. (Walter Briscoe) + +Test32 sometimes didn't work, because test11.out was written as TEST11.OUT. + +Avoid pointer conversions warnings for Borland C 5.5 in dosinst.c and +uninstal.c. + +More improvements for Make_bc3.mak file. (Walter Briscoe) + +When ":syn sync linebreaks=1" is used, editing the first line caused a redraw +of the whole screen. + +Making translated messages didn't work, if_perl.xs wasn't found. (Vlad +Sandrini) + +Motif and Athena: moving Vim to the foreground didn't uniconify it. Use +XMapRaised() instead of XRaiseWindow(). (Srikanth Sankaran) + +When using ":ptag" in a window where 'scrollbind' is set the preview window +would also have 'scrollbind' set. Also reset 'foldcolumn' and 'diff'. + +Various commands that split a window took over 'scrollbind', which is hardly +ever desired. Esp. for "q:" and ":copen". Mostly reset 'scrollbind' when +splitting a window. + +When 'shellslash' is set in the vimrc file the first entry of ":scriptnames" +would still have backslashes. Entries in the quickfix list could also have +wrong (back)slashes. + +Win32: printer dialog texts were not translated. (Yasuhiro Matsumoto) + +When using a multi-byte character with a K_SPECIAL byte or a special key code +with "--remote-send" the received byte sequence was mangled. Put it in the +typeahead buffer instead of the input buffer. + +Win32: The cursor position was incorrect after changing cursor shape. +(Yasuhiro Matsumoto). + +Win32: When 'encoding' is not the current codepage the title could not be set +to non-ascii characters. + +"vim -d scp://machine/file1 scp://machine/file2" did not work, there was only +one window. Fixed the netrw plugin not to wipe out the buffer if it is +displayed in other windows. + +"/$" caused "e" in last column of screen to disappear, a highlighted blank was +displayed instead. + +":s/ *\ze\n//e" removed the line break and introduced arbitrary text. Was +using the line count including what matched after the "\ze". + +Using the "c" flag with ":s" changed the behavior when a line break is +replaced and "\@<=" is used. Without "c" a following match was not found. + +":%s/\vA@<=\nB@=//gce" got stuck on "A\nB" when entering "n". + +VMS: add HAVE_STRFTIME in the config file. (Zoltan Arpadffy) + +When a delete prompts if a delete should continue when yanking is not +possible, restore msg_silent afterwards. + +":sign" did not complain about a missing argument. + +When adding or deleting a sign 'hlsearch' highlighting could disappear. +Use the generic functions for updating signs. + +On MS-Windows NT, 2K and XP don't use command.com but cmd.exe for testing. +Makes the tests work on more systems. + +In the DOS tests don't create "/tmp" to avoid an error. + +Mac classic: Problems with reading files with CR vs CR/LF. Rely on the +library version of fgets() to work correctly for Metrowerks 2.2. (Axel +Kielhorn) + +When typing a password a "*" was shown for each byte instead of for each +character. Added multi-byte handling to displaying the stars. (Yasuhiro +Matsumoto) + +When using Perl 5.6 accessing $curbuf doesn't work. Add an #ifdef to use +different code for 5.6 and 5.8. (Dan Sharp) + +MingW and Cygwin: Don't strip the debug executable. (Dan Sharp) + +An assignment to a variable with curlies that includes "==" doesn't work. +Skip over the curlies before searching for an "=". (Vince Negri) + +When cancelling the selection of alternate matching tags the tag stack index +could be advanced too far, resulting in an error message when using CTRL-T. + + +Patch 6.1.001 +Problem: When formatting UTF-8 text it might be wrapped at a space that is + followed by a composing character. (Raphael Finkel) + Also correct a display error for removing a composing char on top + of a space. +Solution: Check for a composing character on a space. +Files: src/edit.c, src/misc1.c, src/screen.c + +Patch 6.1.002 (extra) +Problem: Win32: after a ":popup" command the mouse pointer stays hidden. +Solution: Unhide the mouse pointer before showing the menu. +Files: src/gui_w48.c + +Patch 6.1.003 +Problem: When 'laststatus' is zero and there is a vertical split, the + vertical separator is drawn in the command line. (Srikant + Sankaran) +Solution: Don't draw the vertical separator where there is no statusline. +Files: src/screen.c + +Patch 6.1.004 +Problem: Unicode 3.2 changes width and composing of a few characters. + (Markus Kuhn) +Solution: Adjust the Unicode functions for the character width and composing + characters. +Files: src/mbyte.c + +Patch 6.1.005 +Problem: When using more than 50 items in 'statusline' Vim might crash. + (Steve Hall) +Solution: Increment itemcnt in check_stl_option(). (Flemming Madsen) +Files: src/option.c + +Patch 6.1.006 +Problem: When using "P" in Visual mode to put linewise selected text, the + wrong text is deleted. (Jakub Turski) +Solution: Put the text before the Visual area and correct the text to be + deleted for the inserted lines. + Also fix that "p" of linewise text in Visual block mode doesn't + work correctly. +Files: src/normal.c, src/ops.c + +Patch 6.1.007 +Problem: Using ":filetype plugin off" when filetype plugins were never + enabled causes an error message. (Yiu Wing) +Solution: Use ":silent!" to avoid the error message. +Files: runtime/ftplugof.vim + +Patch 6.1.008 +Problem: The "%" command doesn't ignore \" inside a string, it's seen as + the end of the string. (Ken Clark) +Solution: Skip a double quote preceded by an odd number of backslashes. +Files: src/search.c + +Patch 6.1.009 +Problem: Vim crashes when using a huge number for the maxwid value in a + statusline. (Robert M. Nowotniak) +Solution: Check for an overflow that makes maxwid negative. +Files: src/buffer.c + +Patch 6.1.010 +Problem: Searching backwards for a question mark with "?\?" doesn't work. + (Alan Isaac) Same problem in ":s?\??" and ":g?\??". +Solution: Change the "\?" in a pattern to "?" when using "?" as delimiter. +Files: src/ex_cmds.c, src/ex_docmd.c, src/proto/regexp.pro, src/regexp.c, + src/search.c, src/syntax.c, src/tag.c + +Patch 6.1.011 +Problem: XIM: doesn't work correctly when 'number' is set. Also, a focus + problem when selecting candidates. +Solution: Fix the XIM problems. (Yasuhiro Matsumoto) +Files: src/mbyte.c, src/screen.c + +Patch 6.1.012 +Problem: A system() call might fail if fread() does CR-LF to LF + translation. +Solution: Open the output file in binary mode. (Pavol Huhas) +Files: src/misc1.c + +Patch 6.1.013 +Problem: Win32: The default for 'printexpr' doesn't work when there are + special characters in 'printdevice'. +Solution: Add double quotes around the device name. (Mike Williams) +Files: runtime/doc/option.txt, src/option.c + +Patch 6.1.014 +Problem: An operator like "r" used in Visual block mode doesn't use + 'virtualedit' when it's set to "block". +Solution: Check for 'virtualedit' being active in Visual block mode when the + operator was started. +Files: src/ex_docmd.c, src/globals.h, src/misc2.c, src/normal.c, + src/ops.c, src/undo.c + +Patch 6.1.015 +Problem: After patch 6.1.014 can't compile with tiny features. (Christian + J. Robinson) +Solution: Add the missing define of virtual_op. +Files: src/vim.h + +Patch 6.1.016 (extra) +Problem: Win32: Outputting Hebrew or Arabic text might have a problem with + reversing. +Solution: Replace the RevOut() function with ETO_IGNORELANGUAGE. (Ron Aaron) +Files: src/gui_w32.c + +Patch 6.1.017 +Problem: Cygwin: After patch 6.1.012 Still doesn't do binary file I/O. + (Pavol Juhas) +Solution: Define BINARY_FILE_IO for Cygwin. +Files: src/os_unix.h + +Patch 6.1.018 +Problem: Error message when using cterm highlighting. (Leonardo Di Lella) +Solution: Remove a backslash before a question mark. +Files: runtime/syntax/cterm.vim + +Patch 6.1.019 (extra) +Problem: Win32: File name is messed up when editing just a drive name. + (Walter Briscoe) +Solution: Append a NUL after the drive name. (Vince Negri) +Files: src/os_win32.c + +Patch 6.1.020 +Problem: col("'>") returns a huge number after using Visual line mode. +Solution: Return the length of the line instead. +Files: src/eval.c + +Patch 6.1.021 (depends on patch 6.1.009) +Problem: Vim crashes when using a huge number for the minwid value in a + statusline. (Robert M. Nowotniak) +Solution: Check for an overflow that makes minwid negative. +Files: src/buffer.c + +Patch 6.1.022 +Problem: Grabbing the status line above the command-line window works like + the bottom status line was grabbed. (Jim Battle) +Solution: Make it possible to grab the status line above the command-line + window, so that it can be resized. +Files: src/ui.c + +Patch 6.1.023 (extra) +Problem: VMS: running tests doesn't work properly. +Solution: Adjust the makefile. (Zoltan Arpadffy) +Files: src/testdir/Make_vms.mms + +Patch 6.1.024 +Problem: When header files use a new syntax for declaring functions, Vim + can't figure out missing prototypes properly. +Solution: Accept braces around a function name. (M. Warner Losh) +Files: src/osdef.sh + +Patch 6.1.025 +Problem: Five messages for "vim --help" don't start with a capital. (Vlad + Sandrini) +Solution: Make the messages consistent. +Files: src/main.c + +Patch 6.1.026 +Problem: *.patch files are not recognized as diff files. In a script a + "VAR=val" argument after "env" isn't ignored. PHP scripts are not + recognized. +Solution: Add *.patch for diff filetypes. Ignore "VAR=val". Recognize PHP + scripts. (Roman Neuhauser) +Files: runtime/filetype.vim, runtime/scripts.vim + +Patch 6.1.027 +Problem: When 'foldcolumn' is non-zero, a special character that wraps to + the next line disturbs the foldcolumn highlighting. (Yasuhiro + Matsumoto) +Solution: Only use the special highlighting when drawing text characters. +Files: src/screen.c + +Patch 6.1.028 +Problem: Client-server: When a --remote-expr fails, Vim still exits with + status zero. +Solution: Exit Vim with a non-zero status to indicate the --remote-expr + failed. (Thomas Scott Urban) +Files: src/main.c + +Patch 6.1.029 +Problem: When 'encoding' is an 8-bit encoding other than "latin1", editing + a utf-8 or other Unicode file uses the wrong conversion. (Jan + Fedak) +Solution: Don't use Unicode to latin1 conversion for 8-bit encodings other + than "latin1". +Files: src/fileio.c + +Patch 6.1.030 +Problem: When CTRL-N is mapped in Insert mode, it is also mapped after + CTRL-X CTRL-N, while it is not mapped after CTRL-X CTRL-F. + (Kontra Gergely) +Solution: Don't map CTRL-N after CTRL-X CTRL-N. Same for CTRL-P. +Files: src/getchar.c + +Patch 6.1.031 +Problem: Cygwin: Xxd could read a file in text mode intead of binary mode. +Solution: Use "rb" or "rt" when needed. (Pavol Juhas) +Files: src/xxd/xxd.c + +Patch 6.1.032 +Problem: Can't specify a quickfix file without jumping to the first error. +Solution: Add the ":cgetfile" command. (Yegappan Lakshmanan) +Files: runtime/doc/index.txt, runtime/doc/quickfix.txt, src/ex_cmds.h, + src/quickfix.c + +Patch 6.1.033 +Problem: GUI: When the selection is lost and the Visual highlighting is + changed to underlining, the cursor is left in a different + position. (Christian Michon) +Solution: Update the cursor position after redrawing the selection. +Files: src/ui.c + +Patch 6.1.034 +Problem: A CVS diff file isn't recognized as diff filetype. +Solution: Skip lines starting with "? " before checking for an "Index:" line. +Files: runtime/scripts.vim + +Patch 6.1.035 (extra, depends on 6.1.016) +Problem: Win32: Outputting Hebrew or Arabic text might have a problem with + reversing on MS-Windows 95/98/ME. +Solution: Restore the RevOut() function and use it in specific situations + only. (Ron Aaron) +Files: src/gui_w32.c + +Patch 6.1.036 +Problem: This command may cause a crash: ":v/./,//-j". (Ralf Arens) +Solution: Compute the right length of the regexp when it's empty. +Files: src/search.c + +Patch 6.1.037 +Problem: When 'lazyredraw' is set, pressing "q" at the hit-enter prompt + causes an incomplete redraw and the cursor isn't positioned. + (Lubomir Host) +Solution: Overrule 'lazyredraw' when do_redraw is set. +Files: src/main.c, src/screen.c + +Patch 6.1.038 +Problem: Multi-byte: When a ":s" command contains a multi-byte character + where the trail byte is '~' the text is messed up. +Solution: Properly skip multi-byte characters in regtilde() (Muraoka Taro) +Files: src/regexp.c + +Patch 6.1.039 +Problem: When folds are defined and the file is changed outside of Vim, + reloading the file doesn't update the folds. (Anders + Schack-Nielsen) +Solution: Recompute the folds after reloading the file. +Files: src/fileio.c + +Patch 6.1.040 +Problem: When changing directory for expanding a file name fails there is + no error message. +Solution: Give an error message for this situation. Don't change directory + if we can't return to the original directory. +Files: src/diff.c, src/ex_docmd.c, src/globals.h, src/misc1.c, + src/os_unix.c + +Patch 6.1.041 +Problem: ":mkvimrc" doesn't handle a mapping that has a leading space in + the rhs. (Davyd Ondrejko) +Solution: Insert a CTRL-V before the leading space. Also display leading + and trailing white space in <> form. +Files: src/getchar.c, src/message.c + +Patch 6.1.042 +Problem: "vim -r" doesn't show all matches when 'wildignore' removes swap + files. (Steve Talley) +Solution: Keep all matching swap file names. +Files: src/memline.c + +Patch 6.1.043 +Problem: After patch 6.1.040 a few warnings are produced. +Solution: Add a type cast to "char *" for mch_chdir(). (Axel Kielhorn) +Files: src/diff.c, src/ex_docmd.c.c, src/misc1.c, src/os_unix.c + +Patch 6.1.044 (extra) +Problem: GUI: When using the find/replace dialog with text that contains a + slash, an invalid substitute command is generated. + On Win32 a find doesn't work when 'insertmode' is set. +Solution: Escape slashes with a backslash. + Make the Win32, Motif and GTK gui use common code for the + find/replace dialog. + Add the "match case" option for Motif and GTK. +Files: src/feature.h, src/proto/gui.pro, src/gui.c, src/gui.h, + src/gui_motif.c, src/gui_gtk.c, src/gui_w48.c + +Patch 6.1.045 +Problem: In Visual mode, with lots of folds and 'scrolloff' set to 999, + moving the cursor down near the end of the file causes the text to + jump up and down. (Lubomir Host) +Solution: Take into account that the cursor may be on the last line of a + closed fold. +Files: src/move.c + +Patch 6.1.046 +Problem: X11 GUI: ":set lsp=2 gcr=n-v-i:hor1-blinkon0" draws a black + rectangle. ":set lsp=2 gcr=n-v-i:hor10-blinkon0" makes the cursor + disappear. (Nam SungHyun) +Solution: Correctly compute the height of the horizontal cursor. +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 6.1.047 +Problem: When skipping commands after an error was encountered, expressions + for ":if", ";elseif" and ":while" are still evaluated. +Solution: Skip the expression after an error. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.048 +Problem: Unicode 3.2 changes were missing a few Hangul Jamo characters. +Solution: Recognize more characters as composing characters. (Jungshik Shin) +Files: src/mbyte.c + +Patch 6.1.049 (extra) +Problem: On a 32 bit display a valid color may cause an error message, + because its pixel value is negative. (Chris Paulson-Ellis) +Solution: Check for -11111 instead of the color being negative. + Don't add one to the pixel value, -1 may be used for white. +Files: src/globals.h, src/gui.c, src/gui.h, src/gui_amiga.c, + src/gui_athena.c, src/gui_beos.cc, src/gui_gtk_x11.c, + src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, + src/gui_riscos.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c, + src/gui_x11.c, src/mbyte.c, src/syntax.c + +Patch 6.1.050 (depends on 6.1.049) +Problem: After patch 6.1.049 the non-GUI version doesn't compile. +Solution: Add an #ifdef FEAT_GUI. (Robert Stanton) +Files: src/syntax.c + +Patch 6.1.051 (depends on 6.1.044) +Problem: Doesn't compile with GUI and small features. +Solution: Adjust the #if for ga_append(). +Files: src/misc2.c + +Patch 6.1.052 +Problem: Unix: The executable() function doesn't work when the "which" + command isn't available. +Solution: Go through $PATH manually. Also makes it work for VMS. +Files: src/os_unix.c + +Patch 6.1.053 +Problem: When 'sessionoptions' contains "globals", or "localoptions" and an + option value contains a line break, the resulting script is wrong. +Solution: Use "\n" and "\r" for a line break. (Srinath Avadhanula) +Files: src/eval.c + +Patch 6.1.054 +Problem: GUI: A mouse click is not recognized at the more prompt, even when + 'mouse' includes 'r'. +Solution: Recognize a mouse click at the more prompt. + Also accept a mouse click in the last line in the GUI. + Add "ml" entry in 'mouseshape'. +Files: src/gui.c, src/message.c, src/misc1.c, src/misc2.c, src/option.c, + src/structs.h + +Patch 6.1.055 +Problem: When editing a compressed file, Vim will inspect the contents to + guess the filetype. +Solution: Don't source scripts.vim for .Z, .gz, .bz2, .zip and .tgz files. +Files: runtime/filetype.vim, runtime/plugin/gzip.vim + +Patch 6.1.056 +Problem: Loading the Syntax menu can take quite a bit of time. +Solution: Add the "skip_syntax_sel_menu" variable. When its defined the + available syntax files are not in the Syntax menu. +Files: runtime/doc/gui.txt, runtime/menu.vim + +Patch 6.1.057 +Problem: An ESC inside a mapping doesn't work as documented when + 'insertmode' is set, it does go from Visual or Normal mode to + Insert mode. (Benji Fisher) +Solution: Make it work as documented. +Files: src/normal.c + +Patch 6.1.058 +Problem: When there is a closed fold just above the first line in the + window, using CTRL-X CTRL-Y in Insert mode will show only one line + of the fold. (Alexey Marinichev) +Solution: Correct the topline by putting it at the start of the fold. +Files: src/move.c + +Patch 6.1.059 +Problem: ":redir > ~/file" doesn't work. (Stephen Rasku) +Solution: Expand environment variables in the ":redir >" argument. +Files: src/ex_docmd.c + +Patch 6.1.060 +Problem: When 'virtualedit' is set and 'selection' is "exclusive", deleting + a character just before a tab changes the tab into spaces. Undo + doesn't restore the tab. (Helmut Stiegler) +Solution: Don't replace the tab by spaces when it's not needed. Correctly + save the line before it's changed. +Files: src/ops.c + +Patch 6.1.061 +Problem: When 'virtualedit' is set and 'selection' is "exclusive", a Visual + selection that ends just after a tab doesn't include that tab in + the highlighting. (Helmut Stiegler) +Solution: Use a different way to exclude the character under the cursor. +Files: src/screen.c + +Patch 6.1.062 +Problem: The "man" filetype plugin doesn't work properly on Solaris 5. +Solution: Use a different way to detect that "man -s" should be used. (Hugh + Sasse) +Files: runtime/ftplugin/man.vim + +Patch 6.1.063 +Problem: Java indenting doesn't work properly. +Solution: Ignore comments when checking if the indent doesn't increase after + a "}". +Files: runtime/indent/java.vim + +Patch 6.1.064 +Problem: The URLs that the netrw plugin recognized for ftp and rcp did not + conform to the standard method://[user@]host[:port]/path. +Solution: Use ftp://[user@]host[[:#]port]/path, which supports both the new + and the previous style. Also added a bit of dav/cadaver support. + (Charles Campbell) +Files: runtime/plugin/netrw.vim + +Patch 6.1.065 +Problem: VMS: The colorscheme, keymap and compiler menus are not filled in. +Solution: Ignore case when looking for ".vim" files. (Coen Engelbarts) +Files: runtime/menu.vim + +Patch 6.1.066 (extra) +Problem: When calling system() in a plugin reading stdin hangs. +Solution: Don't set the terminal to RAW mode when it wasn't in RAW mode + before the system() call. +Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_unix.c, + src/os_win16.c, src/os_win32.c + +Patch 6.1.067 +Problem: ":set viminfo+=f0" is not working. (Benji Fisher) +Solution: Check the "f" flag instead of "'" in 'viminfo'. +Files: src/mark.c + +Patch 6.1.068 +Problem: When a file is reloaded after it was changed outside of Vim, diff + mode isn't updated. (Michael Naumann) +Solution: Invalidate the diff info so that it's updated when needed. +Files: src/fileio.c + +Patch 6.1.069 +Problem: When 'showmatch' is set and "$" is in 'cpoptions', using + "C}<Esc>" may forget to remove the "$". (Preben Guldberg) +Solution: Restore dollar_vcol after displaying the matching cursor position. +Files: src/search.c + +Patch 6.1.070 (depends on 6.1.060) +Problem: Compiler warning for signed/unsigned mismatch. (Mike Williams) +Solution: Add a typecast to int. +Files: src/ops.c + +Patch 6.1.071 +Problem: When 'selection' is exclusive, g CTRL-G in Visual mode counts one + character too much. (David Necas) +Solution: Subtract one from the end position. +Files: src/ops.c + +Patch 6.1.072 +Problem: When a file name in a tags file starts with http:// or something + else for which there is a BufReadCmd autocommand, the file isn't + opened anyway. +Solution: Check if there is a matching BufReadCmd autocommand and try to + open the file. +Files: src/fileio.c, src/proto/fileio.pro, src/tag.c + +Patch 6.1.073 (extra) +Problem: BC5: Can't easily specify a tiny, small, normal, big or huge + version. +Solution: Allow selecting the version with the FEATURES variable. (Ajit + Thakkar) +Files: src/Make_bc5.mak + +Patch 6.1.074 +Problem: When 'cdpath' includes "../..", changing to a directory in which + we currently already are doesn't work. ff_check_visited() adds + the directory both when using it as the root for searching and for + the actual matches. (Stephen Rasku) +Solution: Use a separate list for the already searched directories. +Files: src/misc2.c + +Patch 6.1.075 (depends on 6.1.072) +Problem: Can't compile fileio.c on MS-Windows. +Solution: Add a declaration for the "p" pointer. (Madoka Machitani) +Files: src/fileio.c + +Patch 6.1.076 (extra) +Problem: Macintosh: explorer plugin doesn't work on Mac Classic. + IME doesn't work. Dialog boxes don't work on Mac OS X +Solution: Fix explorer plugin and key modifiers. (Axel Kielhorn) + Fix IME support. (Muraoka Taro) + Disable dialog boxes. (Benji Fisher) +Files: src/edit.c, src/feature.h, src/gui_mac.c, src/os_mac.c + +Patch 6.1.077 +Problem: On a Debian systEm wht ACL linking fails. (Lubomir Host) +Solution: When the "acl" library is used, check if the "attr" library is + present and use it. +Files: src/auto/configure, src/configure.in, src/link.sh + +Patch 6.1.078 +Problem: When using 'foldmethod' "marker" and the end marker appears before + the start marker in the file, no fold is found. (Nazri Ramliy) +Solution: Don't let the fold depth go negative. +Files: src/fold.c + +Patch 6.1.079 +Problem: When using "s" in Visual block mode with 'virtualedit' set, when + the selected block is after the end of some lines the wrong text + is inserted and some lines are skipped. (Servatius Brandt) +Solution: Insert the right text and extend short lines. +Files: src/ops.c + +Patch 6.1.080 +Problem: When using gcc with /usr/local already in the search path, adding + it again causes problems. +Solution: Adjust configure.in to avoid adding /usr/local/include and + /usr/local/lib when using GCC and they are already used. (Johannes + Zellner) +Files: src/auto/configure, src/configure.in + +Patch 6.1.081 +Problem: ":help CTRL-\_CTRL-N" doesn't work. (Christian J. Robinson) +Solution: Double the backslash to avoid the special meaning of "\_". +Files: src/ex_cmds.c + +Patch 6.1.082 +Problem: On MS-Windows the vimrc_example.vim script is sourced and then + mswin.vim. This enables using select mode, but since "p" is + mapped it doesn't replace the selection. +Solution: Remove the mapping of "p" from vimrc_example.vim, it's obsolete. + (Vlad Sandrini) +Files: runtime/vimrc_example.vim + +Patch 6.1.083 +Problem: When $LANG is "sk" or "sk_sk", the Slovak menu file isn't found. + (Martin Lacko) +Solution: Guess the right menu file based on the system. +Files: runtime/lang/menu_sk_sk.vim + +Patch 6.1.084 (depends on 6.1.080) +Problem: "include" and "lib" are mixed up when checking the directories gcc + already searches. +Solution: Swap the variable names. (SunHo Kim) +Files: src/auto/configure, src/configure.in + +Patch 6.1.085 +Problem: When using CTRL-O CTRL-\ CTRL-N from Insert mode, the displayed + mode "(insert)" isn't removed. (Benji Fisher) +Solution: Clear the command line. +Files: src/normal.c + +Patch 6.1.086 (depends on 6.1.049) +Problem: The guifg color for CursorIM doesn't take effect. +Solution: Use the foreground color when it's defined. (Muraoka Taro) +Files: src/gui.c + +Patch 6.1.087 +Problem: A thesaurus with Japanese characters has problems with characters + in different word classes. +Solution: Only separate words with single-byte non-word characters. + (Muraoka Taro) +Files: src/edit.c + +Patch 6.1.088 (extra) +Problem: Win32: no debugging info is generated. Tags file excludes .cpp + files. +Solution: Add "/map" to compiler flags. Add "*.cpp" to ctags command. + (Muraoka Taro) +Files: src/Make_mvc.mak + +Patch 6.1.089 +Problem: On BSDI systems there is no ss_sp field in stack_t. (Robert Jan) +Solution: Use ss_base instead. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/os_unix.c + +Patch 6.1.090 +Problem: CTRL-F gets stuck when 'scrolloff' is non-zero and there is a mix + of long wrapping lines and a non-wrapping line. +Solution: Check that CTRL-F scrolls at least one line. +Files: src/move.c + +Patch 6.1.091 +Problem: GTK: Can't change preeditstate without setting 'imactivatekey'. +Solution: Add some code to change preeditstate for OnTheSpot. (Yasuhiro + Matsumoto) +Files: src/mbyte.c + +Patch 6.1.092 +Problem: ":mapclear <buffer>" doesn't work. (Srikanth Adayapalam) +Solution: Allow an argument for ":mapclear". +Files: src/ex_cmds.h + +Patch 6.1.093 (extra) +Problem: Mac and MS-Windows GUI: when scrolling while ":s" is working the + results can be messed up, because the cursor is moved. +Solution: Disallow direct scrolling when not waiting for a character. +Files: src/gui_mac.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.1.094 +Problem: Cygwin: Passing a file name that has backslashes isn't handled + very well. +Solution: Convert file name arguments to Posix. (Chris Metcalf) +Files: src/main.c + +Patch 6.1.095 +Problem: When using signs can free an item on the stack. + Overruling sign colors doesn't work. (Srikanth Sankaran) +Solution: Don't free the item on the stack. Use NULL instead of "none" for + the value of the color. +Files: src/gui_x11.c + +Patch 6.1.096 +Problem: When erasing the right halve of a double-byte character, it may + cause further characters to be erased. (Yasuhiro Matsumoto) +Solution: Make sure only one character is erased. +Files: src/screen.c + +Patch 6.1.097 (depends on 6.1.090) +Problem: When 'scrolloff' is set to a huge value, CTRL-F at the end of the + file scrolls one line. (Lubomir Host) +Solution: Don't scroll when CTRL-F detects the end-of-file. +Files: src/move.c + +Patch 6.1.098 +Problem: MS-Windows: When the xxd program is under "c:\program files" the + "Convert to Hex" menu doesn't work. (Brian Mathis) +Solution: Put the path to xxd in double quotes. +Files: runtime/menu.vim + +Patch 6.1.099 +Problem: Memory corrupted when closing a fold with more than 99999 lines. +Solution: Allocate more space for the fold text. (Walter Briscoe) +Files: src/eval.c + +Patch 6.1.100 (extra, depends on 6.1.088) +Problem: Win32: VC5 and earlier don't support the /mapinfo option. +Solution: Add "/mapinfo" only when "MAP=lines" is specified. (Muraoka Taro) +Files: src/Make_mvc.mak + +Patch 6.1.101 +Problem: After using ":options" the tabstop of a new window is 15. Entry + in ":options" window for 'autowriteall' is wrong. (Antoine J + Mechelynck) Can't insert a space in an option value. +Solution: Use ":setlocal" instead of ":set". Change "aw" to "awa". + Don't map space in Insert mode. +Files: runtime/optwin.vim + +Patch 6.1.102 +Problem: Unprintable and multi-byte characters in a statusline item are not + truncated correctly. (Yasuhiro Matsumoto) +Solution: Count the width of characters instead of the number of bytes. +Files: src/buffer.c + +Patch 6.1.103 +Problem: A function returning from a while loop, with 'verbose' set to 12 + or higher, doesn't mention the return value. A function with the + 'abort' attribute may return -1 while the verbose message says + something else. +Solution: Move the verbose message about returning from a function to + call_func(). (Servatius Brandt) +Files: src/eval.c + +Patch 6.1.104 +Problem: GCC 3.1 appears to have an optimizer problem that makes test 3 + crash. +Solution: For GCC 3.1 add -fno-strength-reduce to avoid the optimizer bug. + Filter out extra info from "gcc --version". +Files: src/auto/configure, src/configure.in + +Patch 6.1.105 +Problem: Win32: The default for 'shellpipe' doesn't redirect stderr. (Dion + Nicolaas) +Solution: Redirect stderr, depending on the shell (like for 'shellredir'). +Files: src/option.c + +Patch 6.1.106 +Problem: The maze program crashes. +Solution: Change "11" to "27" and it works. (Greg Roelofs) +Files: runtime/macros/maze/mazeansi.c + +Patch 6.1.107 +Problem: When 'list' is set the current line in the error window may be + displayed wrong. (Muraoka Taro) +Solution: Don't continue the line after the $ has been displayed and the + rightmost column is reached. +Files: src/screen.c + +Patch 6.1.108 +Problem: When interrupting a filter command such as "!!sleep 20" the file + becomes read-only. (Mark Brader) +Solution: Only set the read-only flag when opening a buffer is interrupted. + When the shell command was interrupted, read the output that was + produced so far. +Files: src/ex_cmds.c, src/fileio.c + +Patch 6.1.109 +Problem: When 'eadirection' is "hor", using CTRL-W = doesn't equalize the + window heights. (Roman Neuhauser) +Solution: Ignore 'eadirection' for CTRL-W = +Files: src/window.c + +Patch 6.1.110 +Problem: When using ":badd file" when "file" is already present but not + listed, it stays unlisted. (David Frey) +Solution: Set 'buflisted'. +Files: src/buffer.c + +Patch 6.1.111 +Problem: It's not possible to detect using the Unix sources on Win32 or Mac. +Solution: Add has("macunix") and has("win32unix"). +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.1.112 +Problem: When using ":argdo", ":bufdo" or ":windo", CTRL-O doesn't go to + the cursor position from before this command but every position + where the argument was executed. +Solution: Only remember the cursor position from before the ":argdo", + ":bufdo" and ":windo". +Files: src/ex_cmds2.c, src/mark.c + +Patch 6.1.113 +Problem: ":bufdo bwipe" only wipes out half the buffers. (Roman Neuhauser) +Solution: Decide what buffer to go to next before executing the command. +Files: src/ex_cmds2.c + +Patch 6.1.114 +Problem: ":python import vim", ":python vim.current.buffer[0:0] = []" gives + a lalloc(0) error. (Chris Southern) +Solution: Don't allocate an array when it's size is zero. +Files: src/if_python.c + +Patch 6.1.115 +Problem: "das" on the white space at the end of a paragraph does not delete + the "." the sentence ends with. +Solution: Don't exclude the last character when it is not white space. +Files: src/search.c + +Patch 6.1.116 +Problem: When 'endofline' is changed while 'binary' is set a file should be + considered modified. (Olaf Buddenhagen) +Solution: Remember the 'eol' value when editing started and consider the + file changed when the current value is different and 'binary' is + set. Also fix that the window title isn't updated when 'ff' or + 'bin' changes. +Files: src/option.c, src/structs.h + +Patch 6.1.117 +Problem: Small problem with editing a file over ftp: and with Cygwin. +Solution: Remove a dot from a ":normal" command. Use "cygdrive" where + appropriate. (Charles Campbell) +Files: runtime/plugin/netrw.vim + +Patch 6.1.118 +Problem: When a file in diff mode is reloaded because it changed outside + of Vim, other windows in diff mode are not always updated. + (Michael Naumann) +Solution: After reloading a file in diff mode mark all windows in diff mode + for redraw. +Files: src/diff.c + +Patch 6.1.119 (extra) +Problem: With the Sniff interface, using Sniff 4.0.X on HP-UX, there may be + a crash when connecting to Sniff. +Solution: Initialize sniff_rq_sep such that its value can be changed. + (Martin Egloff) +Files: src/if_sniff.c + +Patch 6.1.120 (depends on 6.1.097) +Problem: When 'scrolloff' is non-zero and there are folds, CTRL-F at the + end of the file scrolls part of a closed fold. (Lubomir Host) +Solution: Adjust the first line to the start of a fold. +Files: src/move.c + +Patch 6.1.121 (depends on 6.1.098) +Problem: When starting Select mode from Insert mode, then using the Paste + menu entry, the cursor is left before the laste pasted character. + (Mario Schweigler) +Solution: Set the cursor for Insert mode one character to the right. +Files: runtime/menu.vim + +Patch 6.1.122 +Problem: ":file name" creates a new buffer to hold the old buffer name, + which becomes the alternate file. This buffer is unexpectedly + listed. +Solution: Create the buffer for the alternate name unlisted. +Files: src/ex_cmds.c + +Patch 6.1.123 +Problem: A ":match" command with more than one argument doesn't report an + error. +Solution: Check for extra characters. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.124 +Problem: When trying to exit and there is a hidden buffer that had 'eol' + off and 'bin' set exiting isn't possible. (John McGowan) +Solution: Set b_start_eol when clearing the buffer. +Files: src/buffer.c + +Patch 6.1.125 +Problem: Explorer plugin asks for saving a modified buffer even when it's + open in another window as well. +Solution: Count the number of windows using the buffer. +Files: runtime/plugin/explorer.vim + +Patch 6.1.126 +Problem: Adding the choices in the syntax menu is consuming much of the + startup time of the GUI while it's not often used. +Solution: Only add the choices when the user wants to use them. +Files: Makefile, runtime/makemenu.vim, runtime/menu.vim, + runtime/synmenu.vim, src/Makefile + +Patch 6.1.127 +Problem: When using "--remote file" and the server has 'insertmode' set, + commands are inserted instead of being executed. (Niklas Volbers) +Solution: Go to Normal mode again after the ":drop" command. +Files: src/main.c + +Patch 6.1.128 +Problem: The expression "input('very long prompt')" puts the cursor in the + wrong line (column is OK). +Solution: Add the wrapped lines to the indent. (Yasuhiro Matsumoto) +Files: src/ex_getln.c + +Patch 6.1.129 +Problem: On Solaris editing "file/" and then "file" results in using the + same buffer. (Jim Battle) +Solution: Before using stat(), check that there is no illegal trailing + slash. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/macros.h src/misc2.c, src/proto/misc2.pro + +Patch 6.1.130 +Problem: The documentation for some of the 'errorformat' items is unclear. +Solution: Add more examples and explain hard to understand items. (Stefan + Roemer) +Files: runtime/doc/quickfix.txt + +Patch 6.1.131 +Problem: X11 GUI: when expanding a CSI byte in the input stream to K_CSI, + the CSI byte itself isn't copied. +Solution: Copy the CSI byte. +Files: src/gui_x11.c + +Patch 6.1.132 +Problem: Executing a register in Ex mode may cause commands to be skipped. + (John McGowan) +Solution: In Ex mode use an extra check if the register contents was + consumed, to avoid input goes into the typeahead buffer. +Files: src/ex_docmd.c + +Patch 6.1.133 +Problem: When drawing double-wide characters in the statusline, may clear + half of a character. (Yasuhiro Matsumoto) +Solution: Force redraw of the next character by setting the attributes + instead of putting a NUL in ScreenLines[]. Do put a NUL in + ScreenLines[] when overwriting half of a double-wide character. +Files: src/screen.c + +Patch 6.1.134 +Problem: An error for a trailing argument of ":match" should not be given + after ":if 0". (Servatius Brandt) +Solution: Only do the check when executing commands. +Files: src/ex_docmd.c + +Patch 6.1.135 +Problem: Passing a command to the shell that includes a newline always has + a backslash before the newline. +Solution: Remove one backslash before the newline. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.136 +Problem: When $TERM is "linux" the default for 'background' is "dark", even + though the GUI uses a light background. (Hugh Allen) +Solution: Don't mark the option as set when defaulting to "dark" for the + linux console. Also reset 'background' to "light" when the GUI + has a light background. +Files: src/option.c + +Patch 6.1.137 +Problem: Converting to HTML has a clumsy way of dealing with tabs which may + change the highlighting. +Solution: Replace tabs with spaces after converting a line to HTML. (Preben + Guldberg) +Files: runtime/syntax/2html.vim + +Patch 6.1.138 (depends on 6.1.126) +Problem: Adding extra items to the Syntax menu can't be done when the "Show + individual choices" menu is used. +Solution: Use ":runtime!" instead of ":source", so that all synmenu.vim + files in the runtime path are loaded. (Servatius Brandt) + Also fix that a translated menu can't be removed. +Files: runtime/menu.vim + +Patch 6.1.139 +Problem: Cygwin: PATH_MAX is not defined. +Solution: Include limits.h. (Dan Sharp) +Files: src/main.c + +Patch 6.1.140 +Problem: Cygwin: ":args `ls *.c`" does not work if the shell command + produces CR NL line separators. +Solution: Remove the CR characters ourselves. (Pavol Juhas) +Files: src/os_unix.c + +Patch 6.1.141 +Problem: ":wincmd gx" may cause problems when mixed with other commands. + ":wincmd c" doesn't close the window immediately. (Benji Fisher) +Solution: Pass the extra command character directly instead of using the + stuff buffer and call ex_close() directly. +Files: src/ex_docmd.c, src/normal.c, src/proto/normal.pro, + src/proto/window.pro, src/window.c + +Patch 6.1.142 +Problem: Defining paragraphs without a separating blank line isn't + possible. Paragraphs can't be formatted automatically. +Solution: Allow defining paragraphs with lines that end in white space. + Added the 'w' and 'a' flags in 'formatoptions'. +Files: runtime/doc/change.txt, src/edit.c, src/misc1.c, src/normal.c, + src/option.h, src/ops.c, src/proto/edit.pro, src/proto/ops.pro, + src/vim.h + +Patch 6.1.143 (depends on 6.1.142) +Problem: Auto formatting near the end of the file moves the cursor to a + wrong position. In Insert mode some lines are made one char too + narrow. When deleting a line undo might not always work properly. +Solution: Don't always move to the end of the line in the last line. Don't + position the cursor past the end of the line in Insert mode. + After deleting a line save the cursor line for undo. +Files: src/edit.c, src/ops.c, src/normal.c + +Patch 6.1.144 +Problem: Obtaining the size of a line in screen characters can be wrong. + A pointer may wrap around zero. +Solution: In win_linetabsize() check for a MAXCOL length argument. (Jim + Dunleavy) +Files: src/charset.c + +Patch 6.1.145 +Problem: GTK: Drag&drop with more than 3 files may cause a crash. (Mickael + Marchand) +Solution: Rewrite the code that parses the received list of files to be more + robust. +Files: src/charset.c, src/gui_gtk_x11.c + +Patch 6.1.146 +Problem: MS-Windows: When $HOME is constructed from $HOMEDRIVE and + $HOMEPATH, it is not used for storing the _viminfo file. (Normal + Diamond) +Solution: Set $HOME with the value obtained from $HOMEDRIVE and $HOMEPATH. +Files: src/misc1.c + +Patch 6.1.147 (extra) +Problem: MS-Windows: When a dialog has no default button, pressing Enter + ends it anyway and all buttons are selected. +Solution: Don't end a dialog when there is no default button. Don't select + all button when there is no default. (Vince Negri) +Files: src/gui_w32.c + +Patch 6.1.148 (extra) +Problem: MS-Windows: ACL is not properly supported. +Solution: Add an access() replacement that also works for ACL. (Mike + Williams) +Files: runtime/doc/editing.txt, src/os_win32.c + +Patch 6.1.149 (extra) +Problem: MS-Windows: Can't use diff mode from the file explorer. +Solution: Add a "diff with Vim" context menu entry. (Dan Sharp) +Files: GvimExt/gvimext.cpp, GvimExt/gvimext.h + +Patch 6.1.150 +Problem: OS/2, MS-Windows and MS-DOS: When 'shellslash' is set getcwd() + still uses backslash. (Yegappan Lakshmanan) +Solution: Adjust slashes in getcwd(). +Files: src/eval.c + +Patch 6.1.151 (extra) +Problem: Win32: The NTFS substream isn't copied. +Solution: Copy the substream when making a backup copy. (Muraoka Taro) +Files: src/fileio.c, src/os_win32.c, src/proto/os_win32.pro + +Patch 6.1.152 +Problem: When $LANG is iso8859-1 translated menus are not used. +Solution: Change iso8859 to iso_8859. +Files: runtime/menu.vim + +Patch 6.1.153 +Problem: Searching in included files may search recursively when the path + starts with "../". (Sven Berkvens-Matthijsse) +Solution: Compare full file names, use inode/device when possible. +Files: src/search.c + +Patch 6.1.154 (extra) +Problem: DJGPP: "vim -h" leaves the cursor in a wrong position. +Solution: Don't position the cursor using uninitialized variables. (Jim + Dunleavy) +Files: src/os_msdos.c + +Patch 6.1.155 +Problem: Win32: Cursor may sometimes disappear in Insert mode. +Solution: Change "hor10" in 'guicursor' to "hor15". (Walter Briscoe) +Files: src/option.c + +Patch 6.1.156 +Problem: Conversion between DBCS and UCS-2 isn't implemented cleanly. +Solution: Clean up a few things. +Files: src/mbyte.c, src/structs.h + +Patch 6.1.157 +Problem: 'hlsearch' highlights only the second comma in ",,,,," with + "/,\@<=[^,]*". (Preben Guldberg) +Solution: Also check for an empty match to start just after a previous + match. +Files: src/screen.c + +Patch 6.1.158 +Problem: "zs" and "ze" don't work correctly with ":set nowrap siso=1". + (Preben Guldberg) +Solution: Take 'siso' into account when computing the horizontal scroll + position for "zs" and "ze". +Files: src/normal.c + +Patch 6.1.159 +Problem: When expanding an abbreviation that includes a multi-byte + character too many characters are deleted. (Andrey Urazov) +Solution: Delete the abbreviation counting characters instead of bytes. +Files: src/getchar.c + +Patch 6.1.160 +Problem: ":$read file.gz" doesn't work. (Preben Guldberg) +Solution: Don't use the '[ mark after it has become invalid. +Files: runtime/plugin/gzip.vim + +Patch 6.1.161 (depends on 6.1.158) +Problem: Warning for signed/unsigned compare. Can set 'siso' to a negative + value. (Mike Williams) +Solution: Add a typecast. Add a check for 'siso' being negative. +Files: src/normal.c, src/option.c + +Patch 6.1.162 +Problem: Python interface: Didn't initialize threads properly. +Solution: Call PyEval_InitThreads() when starting up. +Files: src/if_python.c + +Patch 6.1.163 +Problem: Win32: Can't compile with Python after 6.1.162. +Solution: Dynamically load PyEval_InitThreads(). (Dan Sharp) +Files: src/if_python.c + +Patch 6.1.164 +Problem: If 'modifiable' is off, converting to xxd fails and 'filetype' is + changed to "xxd" anyway. +Solution: Don't change 'filetype' when conversion failed. +Files: runtime/menu.vim + +Patch 6.1.165 +Problem: Making changes in several lines and then a change in one of these + lines that splits it in two or more lines, undo information was + corrupted. May cause a crash. (Dave Fishburn) +Solution: When skipping to save a line for undo because it was already + saved, move it to become the last saved line, so that when the + command changes the line count other saved lines are not involved. +Files: src/undo.c + +Patch 6.1.166 +Problem: When 'autoindent' is set and mswin.vim has been sourced, pasting + with CTRL-V just after auto-indenting removes the indent. (Shlomi + Fish) +Solution: First insert an "x" and delete it again, so that the auto-indent + remains. +Files: runtime/mswin.vim + +Patch 6.1.167 +Problem: When giving a negative argument to ":retab" strange things start + happening. (Hans Ginzel) +Solution: Check for a negative value. +Files: src/ex_cmds.c + +Patch 6.1.168 +Problem: Pressing CTRL-C at the hit-enter prompt doesn't end the prompt. +Solution: Make CTRL-C stop the hit-enter prompt. +Files: src/message.c + +Patch 6.1.169 +Problem: bufexists() finds a buffer by using the name of a symbolic link to + it, but bufnr() doesn't. (Yegappan Lakshmanan) +Solution: When bufnr() can't find a buffer, try using the same method as + bufexists(). +Files: src/eval.c + +Patch 6.1.170 +Problem: Using ":mksession" uses the default session file name, but "vim + -S" doesn't. (Hans Ginzel) +Solution: Use the default session file name if "-S" is the last command + line argument or another option follows. +Files: runtime/doc/starting.txt, src/main.c + +Patch 6.1.171 +Problem: When opening a line just above a closed fold with "O" and the + comment leader is automatically inserted, the cursor is displayed + in the first column. (Sung-Hyun Nam) +Solution: Update the flag that indicates the cursor is in a closed fold. +Files: src/misc1.c + +Patch 6.1.172 +Problem: Command line completion of ":tag /pat" does not show the same + results as the tags the command actually finds. (Gilles Roy) +Solution: Don't modify the pattern to make it a regexp. +Files: src/ex_getln.c, src/tag.c + +Patch 6.1.173 +Problem: When using remote control to edit a position in a file and this + file is the current buffer and it's modified, the window is split + and the ":drop" command fails. +Solution: Don't split the window, keep editing the same buffer. + Use the ":drop" command in VisVim to avoid the problem there. +Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds2.pro, + VisVim/Commands.cpp + +Patch 6.1.174 +Problem: It is difficult to know in a script whether an option not only + exists but really works. +Solution: Add "exists('+option')". +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.1.175 +Problem: When reading commands from a pipe and a CTRL-C is pressed, Vim + will hang. (Piet Delport) +Solution: Don't keep reading characters to clear typeahead when an interrupt + was detected, stop when a single CTRL-C is read. +Files: src/getchar.c, src/ui.c + +Patch 6.1.176 +Problem: When the stack limit is very big a false out-of-stack error may + be detected. +Solution: Add a check for overflow of the stack limit computation. (Jim + Dunleavy) +Files: src/os_unix.c + +Patch 6.1.177 (depends on 6.1.141) +Problem: ":wincmd" does not allow a following command. (Gary Johnson) +Solution: Check for a following " | cmd". Also give an error for trailing + characters. +Files: src/ex_docmd.c + +Patch 6.1.178 +Problem: When 'expandtab' is set "r<C-V><Tab>" still expands the Tab. + (Bruce deVisser) +Solution: Replace with a literal Tab. +Files: src/normal.c + +Patch 6.1.179 (depends on 6.1.091) +Problem: When using X11R5 XIMPreserveState is undefined. (Albert Chin) +Solution: Include the missing definitions. +Files: src/mbyte.c + +Patch 6.1.180 +Problem: Use of the GUI code for forking is inconsistent. +Solution: Define MAY_FORK and use it for later #ifdefs. (Ben Fowlwer) +Files: src/gui.c + +Patch 6.1.181 +Problem: If the terminal doesn't wrap from the last char in a line to the + next line, the last column is blanked out. (Peter Karp) +Solution: Don't output a space to mark the wrap, but the same character + again. +Files: src/screen.c + +Patch 6.1.182 (depends on 6.1.142) +Problem: It is not possible to auto-format comments only. (Moshe Kaminsky) +Solution: When the 'a' and 'c' flags are in 'formatoptions' only auto-format + comments. +Files: runtime/doc/change.txt, src/edit.c + +Patch 6.1.183 +Problem: When 'fencs' is empty and 'enc' is utf-8, reading a file with + illegal bytes gives "CONVERSION ERROR" even though no conversion + is done. 'readonly' is set, even though writing the file results + in an unmodified file. +Solution: For this specific error use "ILLEGAL BYTE" and don't set + 'readonly'. +Files: src/fileio.c + +Patch 6.1.184 (extra) +Problem: The extra mouse buttons found on some mice don't work. +Solution: Support two extra buttons for MS-Windows. (Michael Geddes) +Files: runtime/doc/term.txt, src/edit.c, src/ex_getln.c, src/gui.c, + src/gui_w32.c, src/gui_w48.c, src/keymap.h, src/message.c, + src/misc1.c, src/misc2.c, src/normal.c. src/vim.h + +Patch 6.1.185 (depends on 6.1.182) +Problem: Can't compile without +comments feature. +Solution: Add #ifdef FEAT_COMMENTS. (Christian J. Robinson) +Files: src/edit.c + +Patch 6.1.186 (depends on 6.1.177) +Problem: ":wincmd" does not allow a following comment. (Aric Blumer) +Solution: Check for a following double quote. +Files: src/ex_docmd.c + +Patch 6.1.187 +Problem: Using ":doarg" with 'hidden' set and the current file is the only + argument and was modified gives an error message. (Preben + Guldberg) +Solution: Don't try re-editing the same file. +Files: src/ex_cmds2.c + +Patch 6.1.188 (depends on 6.1.173) +Problem: Unused variable in the small version. +Solution: Move the declaration for "p" inside #ifdef FEAT_LISTCMDS. +Files: src/ex_cmds2.c + +Patch 6.1.189 +Problem: inputdialog() doesn't work when 'c' is in 'guioptions'. (Aric + Blumer) +Solution: Fall back to the input() function in this situation. +Files: src/eval.c + +Patch 6.1.190 (extra) +Problem: VMS: doesn't build with GTK GUI. Various other problems. +Solution: Fix building for GTK. Improved Perl, Python and TCL support. + Improved VMS documentation. (Zoltan Arpadffy) + Added Vimtutor for VMS (T. R. Wyant) +Files: runtime/doc/os_vms.txt, src/INSTALLvms.txt, src/gui_gtk_f.h, + src/if_tcl.c, src/main.c, src/gui_gtk_vms.h, src/Make_vms.mms, + src/os_vms.opt, src/proto/if_tcl.pro, vimtutor.com, + src/testdir/Make_vms.mms + +Patch 6.1.191 +Problem: When using "vim -s script" and redirecting the output, the delay + for the "Output is not to a terminal" warning slows Vim down too + much. +Solution: Don't delay when reading commands from a script. +Files: src/main.c + +Patch 6.1.192 +Problem: ":diffsplit" doesn't add "hor" to 'scrollopt'. (Gary Johnson) +Solution: Add "hor" to 'scrollopt' each time ":diffsplit" is used. +Files: src/diff.c, src/main.c + +Patch 6.1.193 +Problem: Crash in in_id_list() for an item with a "containedin" list. (Dave + Fishburn) +Solution: Check for a negative syntax id, used for keywords. +Files: src/syntax.c + +Patch 6.1.194 +Problem: When "t_ti" is set but it doesn't cause swapping terminal pages, + "ZZ" may cause the shell prompt to appear on top of the file-write + message. +Solution: Scroll the text up in the Vim page before swapping to the terminal + page. (Michael Schroeder) +Files: src/os_unix.c + +Patch 6.1.195 +Problem: The quickfix and preview windows always keep their height, while + other windows can't fix their height. +Solution: Add the 'winfixheight' option, so that a fixed height can be + specified for any window. Also fix that the wildmenu may resize a + one-line window to a two-line window if 'ls' is zero. +Files: runtime/doc/options.txt, runtime/optwin.vim, src/ex_cmds.c, + src/ex_getln.c, src/globals.h, src/option.c, src/quickfix.c, + src/screen.c, src/structs.h, src/window.c + +Patch 6.1.196 (depends on 6.1.084) +Problem: On Mac OS X 10.2 generating osdef.h fails. +Solution: Add -no-cpp-precomp to avoid using precompiled header files, which + disables printing the search path. (Ben Fowler) +Files: src/auto/configure, src/configure.in + +Patch 6.1.197 +Problem: ":help <C-V><C-\><C-V><C-N>" (resulting in <1c><0e>) gives an + error message. (Servatius Brandt) +Solution: Double the backslash in "CTRL-\". +Files: src/ex_cmds.c + +Patch 6.1.198 (extra) (depends on 6.1.076) +Problem: Mac OS X: Dialogues don't work. +Solution: Fix a crashing problem for some GUI dialogues. Fix a problem when + saving to a new file from the GUI. (Peter Cucka) +Files: src/feature.h, src/gui_mac.c + +Patch 6.1.199 +Problem: 'guifontwide' doesn't work on Win32. +Solution: Output each wide character separately. (Michael Geddes) +Files: src/gui.c + +Patch 6.1.200 +Problem: ":syn sync fromstart" is not skipped after ":if 0". This can make + syntax highlighting very slow. +Solution: Check "eap->skip" appropriately. (Rob West) +Files: src/syntax.c + +Patch 6.1.201 (depends on 6.1.192) +Problem: Warning for illegal pointer combination. (Zoltan Arpadffy) +Solution: Add a typecast. +Files: src/diff.c + +Patch 6.1.202 (extra)(depends on 6.1.148) +Problem: Win32: filewritable() doesn't work properly on directories. +Solution: fix filewritable(). (Mike Williams) +Files: src/os_win32.c + +Patch 6.1.203 +Problem: ":%s/~//" causes a crash after ":%s/x//". (Gary Holloway) +Solution: Avoid reading past the end of a line when "~" is empty. +Files: src/regexp.c + +Patch 6.1.204 (depends on 6.1.129) +Problem: Warning for an illegal pointer on Solaris. +Solution: Add a typecast. (Derek Wyatt) +Files: src/misc2.c + +Patch 6.1.205 +Problem: The gzip plugin changes the alternate file when editing a + compressed file. (Oliver Fuchs) +Solution: Temporarily remove the 'a' and 'A' flags from 'cpo'. +Files: runtime/plugin/gzip.vim + +Patch 6.1.206 +Problem: The script generated with ":mksession" doesn't work properly when + some commands are mapped. +Solution: Use ":normal!" instead of ":normal". And use ":wincmd" where + possible. (Muraoka Taro) +Files: src/ex_docmd.c, src/fold.c + +Patch 6.1.207 +Problem: Indenting a Java file hangs below a line with a comment after a + command. +Solution: Break out of a loop. (Andre Pang) + Also line up } with matching {. +Files: runtime/indent/java.vim + +Patch 6.1.208 +Problem: Can't use the buffer number from the Python interface. +Solution: Add buffer.number. (Michal Vitecek) +Files: src/if_python.c + +Patch 6.1.209 +Problem: Printing doesn't work on Mac OS classic. +Solution: Use a ":" for path separator when opening the resource file. (Axel + Kielhorn) +Files: src/ex_cmds2.c + +Patch 6.1.210 +Problem: When there is an iconv() conversion error when reading a file + there can be an error the next time iconv() is used. +Solution: Reset the state of the iconv() descriptor. (Yasuhiro Matsumoto) +Files: src/fileio.c + +Patch 6.1.211 +Problem: The message "use ! to override" is confusing. +Solution: Make it "add ! to override". +Files: src/buffer.c, src/eval.c, src/ex_docmd.c, src/fileio.c, + src/globals.h + +Patch 6.1.212 +Problem: When Vim was started with "-R" ":new" creates a buffer + 'noreadonly' while ":enew" has 'readonly' set. (Preben Guldberg) +Solution: Don't set 'readonly in a new empty buffer for ":enew". +Files: src/ex_docmd.c + +Patch 6.1.213 +Problem: Using CTRL-W H may cause a big gap to appear below the last + window. (Aric Blumer) +Solution: Don't set the window height when there is a vertical split. + (Yasuhiro Matsumoto) +Files: src/window.c + +Patch 6.1.214 +Problem: When installing Vim and the runtime files were checked out from + CVS the CVS directories will also be installed. +Solution: Avoid installing the CVS dirs and their contents. +Files: src/Makefile + +Patch 6.1.215 +Problem: Win32: ":pwd" uses backslashes even when 'shellslash' is set. + (Xiangjiang Ma) +Solution: Adjust backslashes before printing the message. +Files: src/ex_docmd.c + +Patch 6.1.216 +Problem: When dynamically loading the iconv library, the error codes may be + confused. +Solution: Use specific error codes for iconv and redefine them for dynamic + loading. (Yasuhiro Matsumoto) +Files: src/fileio.c, src/mbyte.c, src/vim.h + +Patch 6.1.217 +Problem: When sourcing the same Vim script using a different name (symbolic + link or MS-Windows 8.3 name) it is listed twice with + ":scriptnames". (Tony Mechelynck) +Solution: Turn the script name into a full path before using it. On Unix + compare inode/device numbers. +Files: src/ex_cmds2.c + +Patch 6.1.218 +Problem: No error message for using the function argument "5+". (Servatius + Brandt) +Solution: Give an error message if a function or variable is expected but is + not found. +Files: src/eval.c + +Patch 6.1.219 +Problem: When using ":amenu :b 1<CR>" with a Visual selection and + 'insertmode' is set, Vim does not return to Insert mode. (Mickael + Marchand) +Solution: Add the command CTRL-\ CTRL-G that goes to Insert mode if + 'insertmode' is set and to Normal mode otherwise. Append this to + menus defined with ":amenu". +Files: src/edit.c, src/ex_getln.c, src/normal.c + +Patch 6.1.220 +Problem: When using a BufReadPost autocommand that changes the line count, + e.g., "$-1join", reloading a file that was changed outside Vim + does not work properly. (Alan G Isaac) +Solution: Make the buffer empty before reading the new version of the file. + Save the lines in a dummy buffer, so that they can be put back + when reading the file fails. +Files: src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h, + src/proto/buffer.pro + +Patch 6.1.221 +Problem: Changing case may not work properly, depending on the current + locale. +Solution: Add the 'casemap' option to let the user chose how changing case + is to be done. + Also fix lowering case when an UTF-8 character doesn't keep the + same byte length. +Files: runtime/doc/options.txt, src/ascii.h, src/auto/configure, + src/buffer.c, src/charset.c, src/config.h.in, src/configure.in, + src/diff.c, src/edit.c, src/eval.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/gui_amiga.c + src/gui_mac.c, src/gui_photon.c, src/gui_w48.c, src/gui_beos.cc, + src/macros.h, src/main.c, src/mbyte.c, src/menu.c, src/message.c, + src/misc1.c, src/misc2.c, src/option.c, src/os_msdos.c, + src/os_mswin.c, src/proto/charset.pro, src/regexp.c, src/option.h, + src/syntax.c + +Patch 6.1.222 (depends on 6.1.219) +Problem: Patch 6.1.219 was incomplete. +Solution: Add the changes for ":amenu". +Files: src/menu.c + +Patch 6.1.223 (extra) +Problem: Win32: When IME is activated 'iminsert' is set, but it might never + be reset when IME is disabled. (Muraoka Taro) + All systems: 'iminsert' is set to 2 when leaving Insert mode, even + when langmap is being used. (Peter Valach) +Solution: Don't set "b_p_iminsert" in _OnImeNotify(). (Muraoka Taro) + Don't store the status of the input method in 'iminsert' when + 'iminsert' is one. Also for editing the command line and for + arguments to Normal mode commands. +Files: src/edit.c, src/ex_getln.c, src/gui_w32.c, src/normal.c + +Patch 6.1.224 +Problem: "expand('$VAR')" returns an empty string when the expanded $VAR + is not an existing file. (Aric Blumer) +Solution: Included non-existing files, as documented. +Files: src/eval.c + +Patch 6.1.225 +Problem: Using <C-O><C-^> in Insert mode has a delay when starting "vim -u + NONE" and ":set nocp hidden". (Emmanuel) do_ecmd() uses + fileinfo(), the redraw is done after a delay to give the user time + to read the message. +Solution: Put the message from fileio() in "keep_msg", so that the redraw is + done before the delay (still needed to avoid the mode message + overwrites the fileinfo() message). +Files: src/buffer.c + +Patch 6.1.226 +Problem: Using ":debug" with a ":normal" command may cause a hang. (Colin + Keith) +Solution: Save the typeahead buffer when obtaining a debug command. +Files: src/ex_cmds2.c, src/getchar.c, src/proto/getchar.pro + +Patch 6.1.227 +Problem: It is possible to use a variable name "asdf:asdf" and ":let j:asdf + = 5" does not give an error message. (Mikolaj Machowski) +Solution: Check for a ":" inside the variable name. +Files: src/eval.c + +Patch 6.1.228 (extra) +Problem: Win32: The special output function for Hangul is used too often, + causing special handling for other situations to be skipped. + bInComposition is always FALSE, causing ImeGetTempComposition() + always to return NULL. +Solution: Remove HanExtTextOut(). Delete the dead code around + bInComposition and ImeGetTempComposition(). +Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.1.229 +Problem: Win32: Conversion to/from often used codepages requires the iconv + library, which is not always available. +Solution: Use standard MS-Windows functions for the conversion when + possible. (mostly by Glenn Maynard) + Also fixes missing declaration for patch 6.1.220. +Files: src/fileio.c + +Patch 6.1.230 (extra) +Problem: Win16: building doesn't work. +Solution: Exclude the XBUTTON handling. (Vince Negri) +Files: src/gui_w48.c + +Patch 6.1.231 +Problem: Double clicking with the mouse to select a word does not work for + multi-byte characters. +Solution: Use vim_iswordc() instead of vim_isIDc(). This means 'iskeyword' + is used intead of 'isident'. Also fix that mixing ASCII with + multi-byte word characters doesn't work, the mouse class for + punctuation and word characters was mixed up. +Files: src/normal.c + +Patch 6.1.232 (depends on 6.1.226) +Problem: Using ex_normal_busy while it might not be available. (Axel + Kielhorn) +Solution: Only use ex_normal_busy when FEAT_EX_EXTRA is defined. +Files: src/ex_cmds2.c + +Patch 6.1.233 +Problem: ":help expr-||" does not work. +Solution: Don't use the '|' as a command separator +Files: src/ex_cmds.c + +Patch 6.1.234 (depends on 6.1.217) +Problem: Get a warning for using a negative value for st_dev. +Solution: Don't assign a negative value to st_dev. +Files: src/ex_cmds2.c + +Patch 6.1.235 (depends on 6.1.223) +Problem: 'iminsert' is changed from 1 to 2 when leaving Insert mode. (Peter + Valach) +Solution: Check "State" before resetting it to NORMAL. +Files: src/edit.c + +Patch 6.1.236 +Problem: Memory leaks when appending lines for ":diffget" or ":diffput" and + when reloading a changed buffer. +Solution: Free a line after calling ml_append(). +Files: src/diff.c, src/fileio.c + +Patch 6.1.237 +Problem: Putting in Visual block mode does not work correctly when "$" was + used or when the first line is short. (Christian Michon) +Solution: First delete the selected text and then put the new text. Save + and restore registers as necessary. +Files: src/globals.h, src/normal.c, src/ops.c, src/proto/ops.pro, + src/vim.h + +Patch 6.1.238 (extra) +Problem: Win32: The "icon=" argument for the ":menu" command does not + search for the bitmap file. +Solution: Expand environment variables and search for the bitmap file. + (Vince Negri) + Make it consistent, use the same mechanism for X11 and GTK. +Files: src/gui.c src/gui_gtk.c, src/gui_w32.c, src/gui_x11.c, + src/proto/gui.pro + +Patch 6.1.239 +Problem: Giving an error for missing :endif or :endwhile when being + interrupted. +Solution: Don't give these messages when interrupted. +Files: src/ex_docmd.c, src/os_unix.c + +Patch 6.1.240 (extra) +Problem: Win32 with BCC 5: CPU may be defined in the environment, which + causes a wrong argument for the compiler. (Walter Briscoe) +Solution: Use CPUNR instead of CPU. +Files: src/Make_bc5.mak + +Patch 6.1.241 +Problem: Something goes wrong when drawing or undrawing the cursor. +Solution: Remember when the cursor invalid in a better way. +Files: src/gui.c + +Patch 6.1.242 +Problem: When pasting a large number of lines on the command line it is not + possible to interrupt. (Jean Jordaan) +Solution: Check for an interrupt after each pasted line. +Files: src/ops.c + +Patch 6.1.243 (extra) +Problem: Win32: When the OLE version is started and wasn't registered, a + message pops up to suggest registering, even when this isn't + possible (when the registry is not writable). +Solution: Check if registering is possible before asking whether it should + be done. (Walter Briscoe) + Also avoid restarting Vim after registering. +Files: src/if_ole.cpp + +Patch 6.1.244 +Problem: Patch 6.1.237 was missing the diff for vim.h. (Igor Goldenberg) +Solution: Include it here. +Files: src/vim.h + +Patch 6.1.245 +Problem: Comparing with ignored case does not work properly for Unicode + with a locale where case folding an ASCII character results in a + multi-byte character. (Glenn Maynard) +Solution: Handle ignore-case compare for Unicode differently. +Files: src/mbyte.c + +Patch 6.1.246 +Problem: ":blast" goes to the first buffer if the last one is unlisted. + (Andrew Stryker) +Solution: From the last buffer search backwards for the first listed buffer + instead of forwards. +Files: src/ex_docmd.c + +Patch 6.1.247 +Problem: ACL support doesn't always work properly. +Solution: Add a configure argument to disable ACL "--disable-acl". (Thierry + Vignaud) +Files: src/auto/configure, src/configure.in + +Patch 6.1.248 +Problem: Typing 'q' at the more-prompt for ":let" does not quit the + listing. (Hari Krishna Dara) +Solution: Quit the listing when got_int is set. +Files: src/eval.c + +Patch 6.1.249 +Problem: Can't expand a path on the command line if it includes a "|" as a + trail byte of a multi-byte character. +Solution: Check for multi-byte characters. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 6.1.250 +Problem: When changing the value of 'lines' inside the expression set with + 'diffexpr' Vim might crash. (Dave Fishburn) +Solution: Don't allow changing the screen size while updating the screen. +Files: src/globals.h, src/option.c, src/screen.c + +Patch 6.1.251 +Problem: Can't use completion for ":lcd" and ":lchdir" like ":cd". +Solution: Expand directory names for these commands. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.252 +Problem: "vi}" does not include a line break when the "}" is at the start + of a following line. (Kamil Burzynski) +Solution: Include the line break. +Files: src/search.c + +Patch 6.1.253 (extra) +Problem: Win32 with Cygwin: Changes the path of arguments in a wrong way. + (Xiangjiang Ma) +Solution: Don't use cygwin_conv_to_posix_path() for the Win32 version. + Update the Cygwin makefile to support more features. (Dan Sharp) +Files: src/Make_cyg.mak, src/if_ole.cpp, src/main.c + +Patch 6.1.254 +Problem: exists("foo{bar}") does not work. ':unlet v{"a"}r' does not work. + ":let v{a}r1 v{a}r2" does not work. ":func F{(1)}" does not work. + ":delfunc F{" does not give an error message. ':delfunc F{"F"}' + does not work. +Solution: Support magic braces for the exists() argument. (Vince Negri) + Check for trailing comments explicitly for ":unlet". Add support + for magic braces in further arguments of ":let". Look for a + parenthesis only after the function name. (Servatius Brandt) + Also expand magic braces for "exists('*expr')". Give an error + message for an invalid ":delfunc" argument. Allow quotes in the + ":delfunc" argument. +Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c + +Patch 6.1.255 (depends on 6.1.254) +Problem: Crash when loading menu.vim a second time. (Christian Robinson) + ":unlet garbage foo" tries unletting "foo" after an error message. + (Servatius Brandt) + Very long function arguments cause very long messages when + 'verbose' is 14 or higher. +Solution: Avoid reading from uninitialized memory. + Break out of a loop after an invalid argument for ":unlet". + Truncate long function arguments to 80 characters. +Files: src/eval.c + +Patch 6.1.256 (depends on 6.1.255) +Problem: Defining a function after ":if 0" could still cause an error + message for an existing function. + Leaking memory when there are trailing characters for ":delfunc". +Solution: Check the "skip" flag. Free the memory. (Servatius Brandt) +Files: src/eval.c + +Patch 6.1.257 +Problem: ":cwindow" always sets the previous window to the last but one + window. (Benji Fisher) +Solution: Set the previous window properly. +Files: src/globals.c, src/quickfix.c, src/window.c + +Patch 6.1.258 +Problem: Buffers menu doesn't work properly for multibyte buffer names. +Solution: Use a pattern to get the left and right part of the name. + (Yasuhiro Matsumoto) +Files: runtime/menu.vim + +Patch 6.1.259 (extra) +Problem: Mac: with 'patchmode' is used filenames are truncated. +Solution: Increase the BASENAMELEN for Mac OS X. (Ed Ralston) +Files: src/os_mac.h + +Patch 6.1.260 (depends on 6.1.104) +Problem: GCC 3.2 still seems to have an optimizer problem. (Zvi Har'El) +Solution: Use the same configure check as used for GCC 3.1. +Files: src/auto/configure, src/configure.in + +Patch 6.1.261 +Problem: When deleting a line in a buffer which is not the current buffer, + using the Perl interface Delete(), the cursor in the current + window may move. (Chris Houser) +Solution: Don't adjust the cursor position when changing another buffer. +Files: src/if_perl.xs + +Patch 6.1.262 +Problem: When jumping over folds with "z[", "zj" and "zk" the previous + position is not remembered. (Hari Krishna Dara) +Solution: Set the previous context mark before jumping. +Files: src/fold.c + +Patch 6.1.263 +Problem: When typing a multi-byte character that triggers an abbreviation + it is not inserted properly. +Solution: Handle adding the typed multi-byte character. (Yasuhiro Matsumoto) +Files: src/getchar.c + +Patch 6.1.264 (depends on patch 6.1.254) +Problem: exists() does not work for built-in functions. (Steve Wall) +Solution: Don't check for the function name to start with a capital. +Files: src/eval.c + +Patch 6.1.265 +Problem: libcall() can be used in 'foldexpr' to call any system function. + rename(), delete() and remote_send() can also be used in + 'foldexpr'. These are security problems. (Georgi Guninski) +Solution: Don't allow using libcall(), rename(), delete(), remote_send() and + similar functions in the sandbox. +Files: src/eval.c + +Patch 6.1.266 (depends on 6.1.265) +Problem: Win32: compile error in eval.c. (Bill McCarthy) +Solution: Move a variable declaration. +Files: src/eval.c + +Patch 6.1.267 +Problem: Using "p" to paste into a Visual selected area may cause a crash. +Solution: Allocate enough memory for saving the register contents. (Muraoka + Taro) +Files: src/ops.c + +Patch 6.1.268 +Problem: When triggering an abbreviation with a multi-byte character, this + character is not correctly inserted after expanding the + abbreviation. (Taro Muraoka) +Solution: Add ABBR_OFF to all characters above 0xff. +Files: src/edit.c, src/ex_getln.c, src/getchar.c + +Patch 6.1.269 +Problem: After using input() text written with ":redir" gets extra indent. + (David Fishburn) +Solution: Restore msg_col after using input(). +Files: src/ex_getln.c + +Patch 6.1.270 (depends on 6.1.260) +Problem: GCC 3.2.1 still seems to have an optimizer problem. +Solution: Use the same configure check as used for GCC 3.1. +Files: src/auto/configure, src/configure.in + +Patch 6.1.271 +Problem: When compiling without the +syntax feature there are errors. +Solution: Don't use some code for syntax highlighting. (Roger Cornelius) + Make test 45 work without syntax highlighting. + Also fix an error in a pattern matching: "\%(" was not supported. +Files: src/ex_cmds2.c, src/regexp.c, src/testdir/test45.in + +Patch 6.1.272 +Problem: After using ":set define<" a crash may happen. (Christian Robinson) +Solution: Make a copy of the option value in allocated memory. +Files: src/option.c + +Patch 6.1.273 +Problem: When the cursor doesn't blink, redrawing an exposed area may hide + the cursor. +Solution: Always draw the cursor, also when it didn't move. (Muraoka Taro) +Files: src/gui.c + +Patch 6.1.274 (depends on 6.1.210) +Problem: Resetting the iconv() state after each error is wrong for an + incomplete sequence. +Solution: Don't reset the iconv() state. +Files: src/fileio.c + +Patch 6.1.275 +Problem: When using "v" in a startup script, get warning message that + terminal cannot highlight. (Charles Campbell) +Solution: Only give the message after the terminal has been initialized. +Files: src/normal.c + +Patch 6.1.276 +Problem: "gvim --remote file" doesn't prompt for an encryption key. +Solution: The further characters the client sends to the server are used. + Added inputsave() and inputrestore() to allow prompting the + user directly and not using typeahead. + Also fix possible memory leak for ":normal". +Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, + src/main.c, src/proto/getchar.pro, src/proto/ui.pro, + src/runtime/doc/eval.txt, src/structs.h, src/ui.c, src/vim.h + +Patch 6.1.277 (depends on 6.1.276) +Problem: Compilation error when building with small features. +Solution: Define trash_input_buf() when needed. (Kelvin Lee) +Files: src/ui.c + +Patch 6.1.278 +Problem: When using signs the line number of a closed fold doesn't line up + with the other line numbers. (Kamil Burzynski) +Solution: Insert two spaces for the sign column. +Files: src/screen.c + +Patch 6.1.279 +Problem: The prototype for smsg() and smsg_attr() do not match the function + definition. This may cause trouble for some compilers. (Nix) +Solution: Use va_list for systems that have stdarg.h. Use "int" instead of + "void" for the return type. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/proto.h, src/message.c + +Patch 6.1.280 +Problem: It's possible to use an argument "firstline" or "lastline" for a + function but using "a:firstline" or "a:lastline" in the function + won't work. (Benji Fisher) +Solution: Give an error message for these arguments. + Also avoid that the following function body causes a whole row of + errors, skip over it after an error in the first line. +Files: src/eval.c + +Patch 6.1.281 +Problem: In Insert mode CTRL-X CTRL-G leaves the cursor after the ruler. +Solution: Set the cursor position before waiting for the argument of CTRL-G. + (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 6.1.282 +Problem: Elvis uses "se" in a modeline, Vim doesn't recognize this. +Solution: Also accept "se " where "set " is accepted in a modeline. + (Yasuhiro Matsumoto) +Files: src/buffer.c + +Patch 6.1.283 +Problem: For ":sign" the icon file name cannot contain a space. +Solution: Handle backslashes in the file name. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + +Patch 6.1.284 +Problem: On Solaris there is a warning for "struct utimbuf". +Solution: Move including "utime.h" to outside the function. (Derek Wyatt) +Files: src/fileio.c + +Patch 6.1.285 +Problem: Can't wipe out a buffer with 'bufhide' option. +Solution: Add "wipe" value to 'bufhide'. (Yegappan Lakshmanan) +Files: runtime/doc/options.txt, src/buffer.c, src/option.c, + src/quickfix.c + +Patch 6.1.286 +Problem: 'showbreak' cannot contain multi-byte characters. +Solution: Allow using all printable characters for 'showbreak'. +Files: src/charset.c, src/move.c, src/option.c + +Patch 6.1.287 (depends on 6.1.285) +Problem: Effect of "delete" and "wipe" in 'bufhide' were mixed up. +Solution: Wipe out when wiping out is asked for. +Files: src/buffer.c + +Patch 6.1.288 +Problem: ":silent function F" hangs. (Hari Krishna Dara) +Solution: Don't use msg_col, it is not incremented when using ":silent". + Also made the function output look a bit better. Don't translate + "function". +Files: src/eval.c + +Patch 6.1.289 (depends on 6.1.278) +Problem: Compiler warning for pointer. (Axel Kielhorn) +Solution: Add a typecast for " ". +Files: src/screen.c + +Patch 6.1.290 (extra) +Problem: Truncating long text for message box may break multi-byte + character. +Solution: Adjust to start of multi-byte character. (Yasuhiro Matsumoto) +Files: src/os_mswin.c + +Patch 6.1.291 (extra) +Problem: Win32: CTRL-@ doesn't work. Don't even get a message for it. +Solution: Recognize the keycode for CTRL-@. (Yasuhiro Matsumoto) +Files: src/gui_w48.c + +Patch 6.1.292 (extra, depends on 6.1.253) +Problem: Win32: Can't compile with new MingW compiler. + Borland 5 makefile doesn't generate pathdef.c. +Solution: Remove -wwide-multiply argument. (Rene de Zwart) + Various fixes for other problems in Win32 makefiles. (Dan Sharp) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak, + src/Make_mvc.mak + +Patch 6.1.293 +Problem: byte2line() returns a wrong result for some values. +Solution: Change ">=" to ">" in ml_find_line_or_offset(). (Bradford C Smith) + Add one to the line number when at the end of a block. +Files: src/memline.c + +Patch 6.1.294 +Problem: Can't include a multi-byte character in a string by its hex value. + (Benji Fisher) +Solution: Add "\u....": a character specified with up to four hex numbers + and stored according to the value of 'encoding'. +Files: src/eval.c + +Patch 6.1.295 (extra) +Problem: Processing the cs.po file generates an error. (Rahul Agrawal) +Solution: Fix the printf format characters in the translation. +Files: src/po/cs.po + +Patch 6.1.296 +Problem: Win32: When cancelling the font dialog 'guifont' remains set to + "*". +Solution: Restore the old value of 'guifont' (Yasuhiro Matsumoto) +Files: src/option.c + +Patch 6.1.297 +Problem: "make test" fails in test6 in an UTF-8 environment. (Benji Fisher) +Solution: Before executing the BufReadPost autocommands save the current + fileencoding, so that the file isn't marked changed. +Files: src/fileio.c + +Patch 6.1.298 +Problem: When using signs and the first line of a closed fold has a sign + it can be redrawn as if the fold was open. (Kamil Burzynski) +Solution: Don't redraw a sign inside a closed fold. +Files: src/screen.c + +Patch 6.1.299 +Problem: ":edit +set\ ro file" doesn't work. +Solution: Halve the number of backslashes in the "+cmd" argument. +Files: src/ex_docmd.c + +Patch 6.1.300 (extra) +Problem: Handling of ETO_IGNORELANGUAGE is confusing. +Solution: Clean up the handling of ETO_IGNORELANGUAGE. (Glenn Maynard) +Files: src/gui_w32.c + +Patch 6.1.301 (extra) +Problem: French translation of file-save dialog doesn't show file name. +Solution: Insert a star in the printf string. (Francois Terrot) +Files: src/po/fr.po + +Patch 6.1.302 +Problem: Counting lines of the Visual area is incorrect for closed folds. + (Mikolaj Machowski) +Solution: Correct the start and end for the closed fold. +Files: src/normal.c + +Patch 6.1.303 (extra) +Problem: The Top/Bottom/All text does not always fit in the ruler when + translated to Japanese. Problem with a character being wider when + in a bold font. +Solution: Use ETO_PDY to specify the width of each character. (Yasuhiro + Matsumoto) +Files: src/gui_w32.c + +Patch 6.1.304 (extra, depends on 6.1.292) +Problem: Win32: Postscript is always enabled in the MingW Makefile. + Pathdef.c isn't generated properly with Make_bc5.mak. (Yasuhiro + Matsumoto) +Solution: Change an ifdef to an ifeq. (Madoka Machitani) + Use the Borland make redirection to generate pathdef.c. (Maurice + Barnum) +Files: src/Make_bc5.mak, src/Make_ming.mak + +Patch 6.1.305 +Problem: When 'verbose' is 14 or higher, a function call may cause reading + uninitialized data. (Walter Briscoe) +Solution: Check for end-of-string in trunc_string(). +Files: src/message.c + +Patch 6.1.306 +Problem: The AIX VisualAge cc compiler doesn't define __STDC__. +Solution: Use __EXTENDED__ like __STDC__. (Jess Thrysoee) +Files: src/os_unix.h + +Patch 6.1.307 +Problem: When a double-byte character has an illegal tail byte the display + is messed up. (Yasuhiro Matsumoto) +Solution: Draw "XX" instead of the wrong character. +Files: src/screen.c + +Patch 6.1.308 +Problem: Can't reset the Visual mode returned by visualmode(). +Solution: Use an optional argument to visualmode(). (Charles Campbell) +Files: runtime/doc/eval.txt, src/eval.c, src/normal.c, + src/structs.h + +Patch 6.1.309 +Problem: The tutor doesn't select German if the locale name is + "German_Germany.1252". (Joachim Hofmann) +Solution: Check for "German" in the locale name. Also check for + ".ge". And include the German and Greek tutors. +Files: runtime/tutor/tutor.de, runtime/tutor/tutor.vim, + runtime/tutor/tutor.gr, runtime/tutor/tutor.gr.cp737 + +Patch 6.1.310 (depends on 6.1.307) +Problem: All double-byte characters are displayed as "XX". +Solution: Use ">= 32" instead of "< 32". (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.1.311 (extra) +Problem: VMS: path in window title doesn't include necessary separator. + file version doesn't always work properly with Unix. + Crashes because of memory overwrite in GUI. + Didn't always handle files with lowercase and correct path. +Solution: Fix the problems. Remove unnecessary file name translations. + (Zoltan Arpadffy) +Files: src/buffer.c, src/ex_cmds2.c, src/fileio.c, src/memline.c, + src/misc1.c, src/misc2.c, src/os_unix.c, src/os_vms.c, src/tag.c + +Patch 6.1.312 +Problem: When using ":silent" debugging is also done silently. +Solution: Disable silence while at the debug prompt. +Files: src/ex_cmds2.c + +Patch 6.1.313 +Problem: When a ":drop fname" command is used and "fname" is open in + another window, it is also opened in the current window. +Solution: Change to the window with "fname" instead. + Don't redefine the argument list when dropping only one file. +Files: runtime/doc/windows.txt, src/ex_cmds2.c, src/ex_cmds.c, + src/ex_docmd.c, src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro + +Patch 6.1.314 (depends on 6.1.126) +Problem: Missing backslash in "Generic Config file" syntax menu. +Solution: Insert the backslash. (Zak Beck) +Files: runtime/makemenu.vim, runtime/synmenu.vim + +Patch 6.1.315 (extra) +Problem: A very long hostname may lead to an unterminated string. Failing + to obtain a hostname may result in garbage. (Walter Briscoe) +Solution: Add a NUL at the end of the hostname buffer. +Files: src/os_mac.c, src/os_msdos.c, src/os_unix.c, src/os_win16.c, + src/os_win32.c + +Patch 6.1.316 +Problem: When exiting with "wq" and there is a hidden buffer, after the + "file changed" dialog there is a warning for a changed buffer. + (Ajit Thakkar) +Solution: Do update the buffer timestamps when exiting. +Files: src/fileio.c + +Patch 6.1.317 +Problem: Closing a window may cause some of the remaining windows to be + positioned wrong if there is a mix of horizontal and vertical + splits. (Stefan Ingi Valdimarsson) +Solution: Update the frame sizes before updating the window positions. +Files: src/window.c + +Patch 6.1.318 +Problem: auto/pathdef.c can include wrong quotes when a compiler flag + includes quotes. +Solution: Put a backslash before the quotes in compiler flags. (Shinra Aida) +Files: src/Makefile + +Patch 6.1.319 (depends on 6.1.276) +Problem: Using "--remote +cmd file" does not execute "cmd". +Solution: Call inputrestore() in the same command line as inputsave(), + otherwise it will never get executed. +Files: src/main.c + +Patch 6.1.320 (depends on 6.1.313) +Problem: When a ":drop one\ file" command is used the file "one\ file" is + opened, the backslash is not removed. (Taro Muraoka) +Solution: Handle backslashes correctly. Always set the argument list to + keep it simple. +Files: runtime/doc/windows.txt, src/ex_cmds.c + +Patch 6.1.321 +Problem: When 'mouse' includes 'n' but not 'v', don't allow starting Visual + mode with the mouse. +Solution: Don't use MOUSE_MAY_VIS when there is no 'v' in 'mouse'. (Flemming + Madsen) +Files: src/normal.c + +Patch 6.1.322 (extra, depends on 6.1.315) +Problem: Win32: The host name is always "PC " plus the real host name. +Solution: Don't insert "PC " before the host name. +Files: src/os_win32.c + +Patch 6.1.323 +Problem: ":registers" doesn't stop listing for a "q" at the more prompt. + (Hari Krishna Dara) +Solution: Check for interrupt and got_int. +Files: src/ops.c, src/proto/ops.pro + +Patch 6.1.324 +Problem: Crash when dragging a vertical separator when <LeftMouse> is + remapped to jump to another window. +Solution: Pass the window pointer to the function doing the dragging instead + of always using the current window. (Daniel Elstner) + Also fix that starting a drag changes window focus. +Files: src/normal.c, src/proto/window.pro, src/ui.c, src/vim.h, + src/window.c + +Patch 6.1.325 +Problem: Shift-Tab is not automatically recognized in an xterm. +Solution: Add <Esc>[Z as the termcap code. (Andrew Pimlott) +Files: src/term.c + +Patch 6.1.326 +Problem: Using a search pattern may read from uninitialized data (Yasuhiro + Matsumoto) +Solution: Initialize pointers to NULL. +Files: src/regexp.c + +Patch 6.1.327 +Problem: When opening the "mbyte.txt" help file the utf-8 characters are + unreadable, because the fileencoding is forced to be latin1. +Solution: Check for utf-8 encoding first in help files. (Daniel Elstner) +Files: runtime/doc/mbyte.txt, src/fileio.c + +Patch 6.1.328 +Problem: Prototype for enc_canon_search() is missing. +Solution: Add the prototype. (Walter Briscoe) +Files: src/mbyte.c + +Patch 6.1.329 +Problem: When editing a file "a b c" replacing "%" in ":Cmd %" or ":next %" + does not work properly. (Hari Krishna Dara) +Solution: Always escape spaces when expanding "%". Don't split argument for + <f-args> in a user command when only one argument is used. +Files: src/ex_docmd.c + +Patch 6.1.330 +Problem: GTK, Motif and Athena: Keypad keys produce the same code as + non-keypad keys, making it impossible to map them separately. +Solution: Use different termcap codes for the keypad keys. (Neil Bird) +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 6.1.331 +Problem: When translating the help files, "LOCAL ADDITIONS" no longer marks + the spot where help files from plugins are to be listed. +Solution: Add a "local-additions" tag and use that to find the right spot. +Files: runtime/doc/help.txt, src/ex_cmds.c + +Patch 6.1.332 (extra) +Problem: Win32: Loading Perl dynamically doesn't work with Perl 5.8. + Perl 5.8 also does not work with Cygwin and Ming. +Solution: Adjust the function calls. (Taro Muraoka) + Adjust the cyg and ming makefiles. (Dan Sharp) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/if_perl.xs + +Patch 6.1.333 (extra) +Problem: Win32: Can't handle Unicode text on the clipboard. + Can't pass NUL byte, it becomes a line break. (Bruce DeVisser) +Solution: Support Unicode for the clipboard (Ron Aaron and Glenn Maynard) + Also support copy/paste of NUL bytes. +Files: src/os_mswin.c, src/os_win16.c src/os_win32.c + +Patch 6.1.334 (extra, depends on 6.1.303) +Problem: Problem with drawing Hebrew characters. +Solution: Only use ETO_PDY for Windows NT and the like. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.1.335 (extra) +Problem: Failure of obtaining the cursor position and window size is + ignored. +Solution: Remove a semicolon after an "if". (Walter Briscoe) +Files: src/gui_w32.c + +Patch 6.1.336 (extra) +Problem: Warning for use of function prototypes of smsg(). +Solution: Define HAVE_STDARG_H. (Walter Briscoe) +Files: src/os_win32.h + +Patch 6.1.337 +Problem: When using "finish" in debug mode in function B() for ":call + A(B())" does not stop after B() is finished. +Solution: Increase debug_level while evaluating a function. +Files: src/ex_docmd.c + +Patch 6.1.338 +Problem: When using a menu that checks out the current file from Insert + mode, there is no warning for the changed file until exiting + Insert mode. (Srikanth Sankaran) +Solution: Add a check for need_check_timestamps in the Insert mode loop. +Files: src/edit.c + +Patch 6.1.339 +Problem: Completion doesn't allow "g:" in ":let g:did_<Tab>". (Benji + Fisher) +Solution: Return "g:var" for global variables when that is what is being + expanded. (Flemming Madsen) +Files: src/eval.c + +Patch 6.1.340 (extra, depends on 6.1.332) +Problem: Win32: Can't compile the Perl interface with nmake. +Solution: Don't compare the version number as a string but as a number. + (Juergen Kraemer) +Files: src/Make_mvc.mak + +Patch 6.1.341 +Problem: In Insert mode with 'rightleft' set the cursor is drawn halfway a + double-wide character. For CTRL-R and CTRL-K in Insert mode the " + or ? is not displayed. +Solution: Draw the cursor in the next character cell. Display the " or ? + over the right half of the double-wide character. (Yasuhiro + Matsumoto) Also fix that cancelling a digraph doesn't redraw + a double-byte character correctly. +Files: src/edit.c, src/gui.c, src/mbyte.c + +Patch 6.1.342 (depends on 6.1.341) +Problem: With 'rightleft' set typing "c" on a double-wide character causes + the cursor to be displayed one cell to the left. +Solution: Draw the cursor in the next character cell. (Yasuhiro Matsumoto) +Files: src/gui.c + +Patch 6.1.343 (depends on 6.1.342) +Problem: Cannot compile with the +multi_byte feature but without +rightleft. + Cannot compile without the GUI. +Solution: Fix the #ifdefs. (partly by Nam SungHyun) +Files: src/gui.c, src/mbyte.c, src/ui.c + +Patch 6.1.344 +Problem: When using ":silent filetype" the output is still put in the + message history. (Hari Krishna Dara) +Solution: Don't add messages in the history when ":silent" is used. +Files: src/message.c + +Patch 6.1.345 (extra) +Problem: Win32: 'imdisable' doesn't work. +Solution: Make 'imdisable' work. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.1.346 +Problem: The scroll wheel can only scroll the current window. +Solution: Make the scroll wheel scroll the window that the mouse points to. + (Daniel Elstner) +Files: src/edit.c, src/gui.c, src/normal.c, src/term.c + +Patch 6.1.347 +Problem: When using cscope to list matching tags, the listed number is + sometimes not equal to what cscope uses. (Vihren Milev) +Solution: For cscope tags use only one table, don't give tags in the current + file a higher priority. +Files: src/tag.c + +Patch 6.1.348 +Problem: Wildmode with wildmenu: ":set wildmode=list,full", ":colorscheme + <tab>" results in "zellner" instead of the first entry. (Anand + Hariharan) +Solution: Don't call ExpandOne() from globpath(). (Flemming Madsen) +Files: src/ex_getln.c + +Patch 6.1.349 +Problem: "vim --serverlist" when no server was ever started gives an error + message without "\n". + "vim --serverlist" doesn't exit when the X server can't be + contacted, it starts Vim unexpectedly. (Ricardo Signes) +Solution: Don't give an error when no Vim server was ever started. + Treat failing of opening the display equal to errors inside the + remote*() functions. (Flemming Madsen) +Files: src/if_xcmdsrv.c, src/main.c + +Patch 6.1.350 +Problem: When entering a buffer with ":bnext" for the first time, using an + autocommand to restore the last used cursor position doesn't work. + (Paolo Giarusso) +Solution: Don't use the last known cursor position of the current Vim + invocation if an autocommand changed the position. +Files: src/buffer.c + +Patch 6.1.351 (depends on 6.1.349) +Problem: Crash when starting Vim the first time in an X server. (John + McGowan) +Solution: Don't call xFree() with a fixed string. +Files: src/if_xcmdsrv.c + +Patch 6.1.352 (extra, depends on 6.1.345) +Problem: Win32: Crash when setting "imdisable" in _vimrc. +Solution: Don't call IME functions when imm32.dll was not loaded (yet). + Also add typecasts to avoid Compiler warnings for + ImmAssociateContext() argument. +Files: src/gui_w32.c + +Patch 6.1.353 (extra, depends on 6.1.334) +Problem: Problem with drawing Arabic characters. +Solution: Don't use ETO_PDY, do use padding. +Files: src/gui_w32.c + +Patch 6.1.354 (extra, depends on 6.1.333) +Problem: MS-Windows 98: Notepad can't paste text copied from Vim when + 'encoding' is "utf-8". +Solution: Also make CF_TEXT available on the clipboard. (Ron Aaron) +Files: src/os_mswin.c + +Patch 6.1.355 +Problem: In a regexp '\n' will never match anything in a string. +Solution: Make '\n' match a newline character. +Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/misc1.c, + src/option.c, src/os_mac.c, src/os_unix.c, src/quickfix.c, + src/regexp.c, src/search.c, src/syntax.c, src/tag.c, src/vim.h + +Patch 6.1.356 (extra, depends on, well, eh, several others) +Problem: Compiler warnings for using convert_setup() and a few other + things. +Solution: Add typecasts. +Files: src/mbyte.c, src/os_mswin.c, src/proto/os_win32.pro, src/os_win32.c + +Patch 6.1.357 +Problem: CR in the quickfix window jumps to the error under the cursor, but + this doesn't work in Insert mode. (Srikanth Sankaran) +Solution: Handle CR in Insert mode in the quickfix window. +Files: src/edit.c + +Patch 6.1.358 +Problem: The tutor doesn't select another locale version properly. +Solution: Insert the "let" command. (Yasuhiro Matsumoto) +Files: runtime/tutor/tutor.vim + +Patch 6.1.359 (extra) +Problem: Mac Carbon: Vim doesn't get focus when started from the command + line. Crash when using horizontal scroll bar. +Solution: Set Vim as the frontprocess. Fix scrolling. (Peter Cucka) +Files: src/gui_mac.c + +Patch 6.1.360 (depends on 6.1.341) +Problem: In Insert mode CTRL-K ESC messes up a multi-byte character. + (Anders Helmersson) +Solution: Save all bytes of a character when displaying a character + temporarily. +Files: src/edit.c, src/proto/screen.pro, src/screen.c + +Patch 6.1.361 +Problem: Cannot jump to a file mark with ":'M". +Solution: Allow jumping to another file for a mark in an Ex address when it + is the only thing in the command line. +Files: src/ex_docmd.c + +Patch 6.1.362 +Problem: tgetent() may return zero for success. tgetflag() may return -1 + for an error. +Solution: Check tgetflag() for returning a positive value. Add an autoconf + check for the value that tgetent() returns. +Files: src/auto/configure, src/config.h.in, src/configure.in, src/term.c + +Patch 6.1.363 +Problem: byte2line() can return one more than the number of lines. +Solution: Return -1 if the offset is one byte past the end. +Files: src/memline.c + +Patch 6.1.364 +Problem: That the FileChangedShell autocommand event never nests makes it + difficult to reload a file in a normal way. +Solution: Allow nesting for the FileChangedShell event but do not allow + triggering itself again. + Also avoid autocommands for the cmdline window in rare cases. +Files: src/ex_getln.c, src/fileio.c, src/window.c + +Patch 6.1.365 (depends on 6.1.217) +Problem: Setting a breakpoint in a sourced file with a relative path name + doesn't work. (Servatius Brandt) +Solution: Expand the file name to a full path. +Files: src/ex_cmds2.c + +Patch 6.1.366 +Problem: Can't use Vim with Netbeans. +Solution: Add the Netbeans interface. Includes support for sign icons and + "-fg" and "-bg" arguments for GTK. Add the 'autochdir' + option. (Gordon Prieur, George Hernandez, Dave Weatherford) + Make it possible to display both a sign with a text and one with + line highlighting in the same line. + Add support for Agide, interface version 2.1. + Also fix that when 'iskeyword' includes '?' the "*" command + doesn't work properly on a word that includes "?" (Bill McCarthy): + Don't escape "?" to "\?" when searching forward. +Files: runtime/doc/Makefile, runtime/doc/netbeans.txt, + runtime/doc/options.txt, runtime/doc/various.txt, + src/Makefile, src/auto/configure, src/buffer.c, src/config.h.in, + src/config.mk.in, src/configure.in, src/edit.c, src/ex_cmds.c, + src/ex_docmd.c, src/feature.h, src/fileio.c, src/globals.h, + src/gui.c, src/gui_beval.c, src/gui_gtk_x11.c, src/gui_x11.c, + src/main.c, src/memline.c, src/misc1.c, src/misc2.c, src/move.c, + src/nbdebug.c, src/nbdebug.h, src/netbeans.c, src/normal.c, + src/ops.c, src/option.c, src/option.h, src/proto/buffer.pro, + src/proto/gui_beval.pro, src/proto/gui_gtk_x11.pro, + src/proto/gui_x11.pro, src/proto/misc2.pro, + src/proto/netbeans.pro, src/proto/normal.pro, src/proto/ui.pro, + src/proto.h, src/screen.c, src/structs.h, src/ui.c, src/undo.c, + src/vim.h, src/window.c, src/workshop.c + +Patch 6.1.367 (depends on 6.1.365) +Problem: Setting a breakpoint in a function doesn't work. For a sourced + file it doesn't work when symbolic links are involved. (Servatius + Brandt) +Solution: Expand the file name in the same way as do_source() does. Don't + prepend the path to a function name. +Files: src/ex_cmds2.c + +Patch 6.1.368 +Problem: Completion for ":map" does not include <silent> and <script>. + ":mkexrc" do not save the <silent> attribute of mappings. +Solution: Add "<silent>" to the generated map commands when appropriate. + (David Elstner) + Add <silent> and <script> to command line completion. +Files: src/getchar.c + +Patch 6.1.369 (extra) +Problem: VMS: Vim hangs when attempting to edit a read-only file in the + terminal. Problem with VMS filenames for quickfix. +Solution: Rewrite low level input. Remove version number from file name in + a couple more places. Fix crash after patch 6.1.362. Correct + return code for system(). (Zoltan Arpadffy, Tomas Stehlik) +Files: src/misc1.c, src/os_unix.c, src/os_vms.c, src/proto/os_vms.pro, + src/os_vms_conf.h, src/quickfix.c, src/ui.c + +Patch 6.1.370 +Problem: #ifdef nesting is unclear. +Solution: Insert spaces to indicate the nesting. +Files: src/os_unix.c + +Patch 6.1.371 +Problem: "%V" in 'statusline' doesn't show "0-1" in an empty line. +Solution: Add one to the column when comparing with virtual column (Andrew + Pimlott) +Files: src/buffer.c + +Patch 6.1.372 +Problem: With 16 bit ints there are compiler warnings. (Walter Briscoe) +Solution: Change int into long. +Files: src/structs.h, src/syntax.c + +Patch 6.1.373 +Problem: The default page header for printing is not translated. +Solution: Add _() around the two places where "Page" is used. (Mike + Williams) Translate the default value of the 'titleold' and + 'printheader' options. +Files: src/ex_cmds2.c, src/option.c + +Patch 6.1.374 (extra) +Problem: MS-Windows: Cannot build GvimExt with MingW or Cygwin. +Solution: Add makefile and modified resource files. (Rene de Zwart) + Also support Cygwin. (Alejandro Lopez_Valencia) +Files: GvimExt/Make_cyg.mak, GvimExt/Make_ming.mak, GvimExt/Makefile, + GvimExt/gvimext_ming.def, GvimExt/gvimext_ming.rc + +Patch 6.1.375 +Problem: MS-Windows: ':!dir "%"' does not work for a file name with spaces. + (Xiangjiang Ma) +Solution: Don't insert backslashes for spaces in a shell command. +Files: src/ex_docmd.c + +Patch 6.1.376 +Problem: "vim --version" and "vim --help" have a non-zero exit code. + That is unusual. (Petesea) +Solution: Use a zero exit code. +Files: src/main.c + +Patch 6.1.377 +Problem: Can't add words to 'lispwords' option. +Solution: Add P_COMMA and P_NODUP flags. (Haakon Riiser) +Files: src/option.c + +Patch 6.1.378 +Problem: When two buffer-local user commands are ambiguous, a full match + with a global user command isn't found. (Hari Krishna Dara) +Solution: Detect this situation and accept the global command. +Files: src/ex_docmd.c + +Patch 6.1.379 +Problem: Linux with kernel 2.2 can't use the alternate stack in combination + with threading, causes an infinite loop. +Solution: Don't use the alternate stack in this situation. +Files: src/os_unix.c + +Patch 6.1.380 +Problem: When 'winminheight' is zero and the quickfix window is zero lines, + entering the window doesn't make it higher. (Christian J. + Robinson) +Solution: Make sure the current window is at least one line high. +Files: src/window.c + +Patch 6.1.381 +Problem: When a BufWriteCmd is used and it leaves the buffer modified, the + window may still be closed. (Hari Krishna Dara) +Solution: Return FAIL from buf_write() when the buffer is still modified + after a BufWriteCmd autocommand was used. +Files: src/fileio.c + +Patch 6.1.382 (extra) +Problem: Win32 GUI: When using two monitors, the code that checks/fixes the + window size and position (e.g. when a font changes) doesn't work + properly. (George Reilly) +Solution: Handle a double monitor situation. (Helmut Stiegler) +Files: src/gui_w32.c + +Patch 6.1.383 +Problem: The filling of the status line doesn't work properly for + multi-byte characters. (Nam SungHyun) + There is no check for going past the end of the buffer. +Solution: Properly distinguish characters and bytes. Properly check for + running out of buffer space. +Files: src/buffer.c, src/ex_cmds2.c, src/proto/buffer.pro, src/screen.c + +Patch 6.1.384 +Problem: It is not possible to find if a certain patch has been included. + (Lubomir Host) +Solution: Support using has() to check if a patch was included. +Files: runtime/doc/eval.txt, src/eval.c, src/proto/version.pro, + src/version.c + +Patch 6.1.385 (depends on 6.1.383) +Problem: Can't compile without the multi-byte feature. +Solution: Move an #ifdef. (Christian J. Robinson) +Files: src/buffer.c + +Patch 6.1.386 +Problem: Get duplicate tags when running ":helptags". +Solution: Do the other halve of moving a section to another help file. +Files: runtime/tagsrch.txt + +Patch 6.1.387 (depends on 6.1.373) +Problem: Compiler warning for pointer cast. +Solution: Add (char_u *). +Files: src/option.c + +Patch 6.1.388 (depends on 6.1.384) +Problem: Compiler warning for pointer cast. +Solution: Add (char *). Only include has_patch() when used. +Files: src/eval.c, src/version.c + +Patch 6.1.389 (depends on 6.1.366) +Problem: Balloon evaluation doesn't work for GTK. + has("balloon_eval") doesn't work. +Solution: Add balloon evaluation for GTK. Also improve displaying of signs. + (Daniel Elstner) + Also make ":gui" start the netbeans connection and avoid using + netbeans functions when the connection is not open. +Files: src/Makefile, src/feature.h, src/gui.c, src/gui.h, + src/gui_beval.c, src/gui_beval.h, src/gui_gtk.c, + src/gui_gtk_x11.c, src/eval.c, src/memline.c, src/menu.c, + src/netbeans.c, src/proto/gui_beval.pro, src/proto/gui_gtk.pro, + src/structs.h, src/syntax.c, src/ui.c, src/workshop.c + +Patch 6.1.390 (depends on 6.1.389) +Problem: It's not possible to tell Vim to save and exit through the + Netbeans interface. Would still try to send balloon eval text + after the connection is closed. + Can't use Unicode characters for sign text. +Solution: Add functions "saveAndExit" and "getModified". Check for a + working connection before sending a balloonText event. + various other cleanups. + Support any character for sign text. (Daniel Elstner) +Files: runtime/doc/netbeans.txt, runtime/doc/sign.txt, src/ex_cmds.c, + src/netbeans.c, src/screen.c + +Patch 6.1.391 +Problem: ml_get() error when using virtualedit. (Charles Campbell) +Solution: Get a line from a specific window, not the current one. +Files: src/charset.c + +Patch 6.1.392 (depends on 6.1.383) +Problem: Highlighting in the 'statusline' is in the wrong position when an + item is truncated. (Zak Beck) +Solution: Correct the start of 'statusline' items properly for a truncated + item. +Files: src/buffer.c + +Patch 6.1.393 +Problem: When compiled with Python and threads, detaching the terminal may + cause Vim to loop forever. +Solution: Add -pthread to $CFLAGS when using Python and gcc. (Daniel + Elstner) +Files: src/auto/configure,, src/configure.in + +Patch 6.1.394 (depends on 6.1.390) +Problem: The netbeans interface doesn't recognize multibyte glyph names. +Solution: Check the number of cells rather than bytes to decide + whether a glyph name is not a filename. (Daniel Elstner) +Files: src/netbeans.c + +Patch 6.1.395 (extra, depends on 6.1.369) +Problem: VMS: OLD_VMS is never defined. Missing function prototype. +Solution: Define OLD_VMS in Make_vms.mms. Add vms_sys_status() to + os_vms.pro. (Zoltan Arpadffy) +Files: src/Make_vms.mms, src/proto/os_vms.pro + +Patch 6.1.396 (depends on 6.1.330) +Problem: Compiler warnings for using enum. +Solution: Add typecast to char_u. +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 6.1.397 (extra) +Problem: The install program may use a wrong path for the diff command if + there is a space in the install directory path. +Solution: Use double quotes around the path if necessary. (Alejandro + Lopez-Valencia) Also use double quotes around the file name + arguments. +Files: src/dosinst.c + +Patch 6.1.398 +Problem: Saving the typeahead for debug mode causes trouble for a test + script. (Servatius Brandt) +Solution: Add the ":debuggreedy" command to avoid saving the typeahead. +Files: runtime/doc/repeat.txt, src/ex_cmds.h, src/ex_cmds2.c, + src/ex_docmd.c, src/proto/ex_cmds2.pro + +Patch 6.1.399 +Problem: Warning for unused variable. +Solution: Remove the variable two_or_more. +Files: src/ex_cmds.c + +Patch 6.1.400 (depends on 6.1.381) +Problem: When a BufWriteCmd wipes out the buffer it may still be accessed. +Solution: Don't try accessing a buffer that has been wiped out. +Files: src/fileio.c + +Patch 6.1.401 (extra) +Problem: Building the Win16 version with Borland 5.01 doesn't work. + "make test" doesn't work with Make_dos.mak. (Walter Briscoe) +Solution: Various fixes to the w16 makefile. (Walter Briscoe) + Don't use deltree. Use "mkdir \tmp" instead of "mkdir /tmp". +Files: src/Make_w16.mak, src/testdir/Make_dos.mak + +Patch 6.1.402 +Problem: When evaluating a function name with curly braces, an error + is not handled consistently. +Solution: Accept the result of an curly braces expression when an + error was encountered. Skip evaluating an expression in curly + braces when skipping. (Servatius Brandt) +Files: src/eval.c + +Patch 6.1.403 (extra) +Problem: MS-Windows 16 bit: compiler warnings. +Solution: Add typecasts. (Walter Briscoe) +Files: src/ex_cmds2.c, src/gui_w48.c, src/os_mswin.c, src/os_win16.c, + src/syntax.c + +Patch 6.1.404 (extra) +Problem: Various small problems. +Solution: Fix comments. Various small additions, changes in indent, removal + of unused items and fixes. +Files: Makefile, README.txt, runtime/menu.vim, runtime/vimrc_example.vim, + src/INSTALL, src/INSTALLole.txt, src/Make_bc5.mak, + src/Make_cyg.mak, src/Make_ming.mak, src/Makefile, + src/config.h.in, src/edit.c, src/eval.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/getchar.c, + src/gui.c, src/gui_gtk.c, src/gui_photon.c, src/if_cscope.c, + src/if_python.c, src/keymap.h, src/mark.c, src/mbyte.c, + src/message.c, src/misc1.c, src/misc2.c, src/normal.c, + src/option.c, src/os_os2_cfg.h, src/os_win32.c, + src/proto/getchar.pro, src/proto/message.pro, + src/proto/regexp.pro, src/screen.c, src/structs.h, src/syntax.c, + src/term.c, src/testdir/test15.in, src/testdir/test15.ok, + src/vim.rc, src/xxd/Make_cyg.mak, src/xxd/Makefile + +Patch 6.1.405 +Problem: A few files are missing from the toplevel Makefile. +Solution: Add the missing files. +Files: Makefile + +Patch 6.1.406 (depends on 6.1.392) +Problem: When a statusline item doesn't fit arbitrary text appears. + (Christian J. Robinson) +Solution: When there is just enough room but not for the "<" truncate the + statusline item like there is no room. +Files: src/buffer.c + +Patch 6.1.407 +Problem: ":set scrollbind | help" scrollbinds the help window. (Andrew + Pimlott) +Solution: Reset 'scrollbind' when opening a help window. +Files: src/ex_cmds.c + +Patch 6.1.408 +Problem: When 'rightleft' is set unprintable character 0x0c is displayed as + ">c0<". +Solution: Reverse the text of the hex character. +Files: src/screen.c + +Patch 6.1.409 +Problem: Generating tags for the help doesn't work for some locales. +Solution: Set LANG=C LC_ALL=C in the environment for "sort". (Daniel + Elstner) +Files: runtime/doc/Makefile + +Patch 6.1.410 (depends on 6.1.390) +Problem: Linking error when compiling with Netbeans but without sign icons. + (Malte Neumann) +Solution: Don't define buf_signcount() when sign icons are unavailable. +Files: src/buffer.c + +Patch 6.1.411 +Problem: When 'virtualedit' is set, highlighting a Visual block beyond the + end of a line may be wrong. +Solution: Correct the virtual column when the end of the line is before the + displayed part of the line. (Muraoka Taro) +Files: src/screen.c + +Patch 6.1.412 +Problem: When swapping terminal screens and using ":gui" to start the GUI, + the shell prompt may be after a hit-enter prompt. +Solution: Output a newline in the terminal when starting the GUI and there + was a hit-enter prompt.. +Files: src/gui.c + +Patch 6.1.413 +Problem: When 'clipboard' contains "unnamed", "p" in Visual mode doesn't + work correctly. +Solution: Save the register before overwriting it and put the resulting text + on the clipboard afterwards. (Muraoka Taro) +Files: src/normal.c, src/ops.c + +Patch 6.1.414 (extra, depends on 6.1.369) +Problem: VMS: Vim busy waits when waiting for input. +Solution: Delay for a short while before getting another character. (Zoltan + Arpadffy) +Files: src/os_vms.c + +Patch 6.1.415 +Problem: When there is a vertical split and a quickfix window, reducing the + size of the Vim window may result in a wrong window layout and a + crash. +Solution: When reducing the window size and there is not enough space for + 'winfixheight' set the frame height to the larger height, so that + there is a retry while ignoring 'winfixheight'. (Yasuhiro + Matsumoto) +Files: src/window.c + +Patch 6.1.416 (depends on 6.1.366) +Problem: When using the Netbeans interface, a line with a sign cannot be + changed. +Solution: Respect the GUARDEDOFFSET for sign IDs when checking for a guarded + area. +Files: src/netbeans.c + +Patch 6.1.417 +Problem: Unprintable multi-byte characters are not handled correctly. + Multi-byte characters above 0xffff are displayed as another + character. +Solution: Handle unprintable multi-byte characters. Display multi-byte + characters above 0xffff with a marker. Recognize UTF-16 words and + BOM words as unprintable. (Daniel Elstner) +Files: src/charset.c, src/mbyte.c, src/screen.c + +Patch 6.1.418 +Problem: The result of strftime() is in the current locals. Need to + convert it to 'encoding'. +Solution: Obtain the current locale and convert the argument for strftime() + to it and the result back to 'encoding'. (Daniel Elstner) +Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/mbyte.c, + src/proto/mbyte.pro, src/option.c, src/os_mswin.c + +Patch 6.1.419 +Problem: Vim doesn't compile on AIX 5.1. +Solution: Don't define _NO_PROTO on this system. (Uribarri) +Files: src/auto/configure, src/configure.in + +Patch 6.1.420 (extra) +Problem: convert_input() has an unnecessary STRLEN(). + Conversion from UCS-2 to a codepage uses word count instead of + byte count. +Solution: Remove the STRLEN() call. (Daniel Elstner) + Always use byte count for string_convert(). +Files: src/gui_w32.c, src/mbyte.c + +Patch 6.1.421 (extra, depends on 6.1.354) +Problem: MS-Windows 9x: When putting text on the clipboard it can be in + the wrong encoding. +Solution: Convert text to the active codepage for CF_TEXT. (Glenn Maynard) +Files: src/os_mswin.c + +Patch 6.1.422 +Problem: Error in .vimrc doesn't cause hit-enter prompt when swapping + screens. (Neil Bird) +Solution: Set msg_didany also when sending a message to the terminal + directly. +Files: src/message.c + +Patch 6.1.423 +Problem: Can't find arbitrary text in help files. +Solution: Added the ":helpgrep" command. +Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, + src/proto/quickfix.pro, src/quickfix.c + +Patch 6.1.424 (extra) +Problem: Win32: Gvim compiled with VC++ 7.0 run on Windows 95 does not show + menu items. +Solution: Define $WINVER to avoid an extra item is added to MENUITEMINFO. + (Muraoka Taro) +Files: src/Make_mvc.mak + +Patch 6.1.425 +Problem: ":helptags $VIMRUNTIME/doc" does not add the "help-tags" tag. +Solution: Do add the "help-tags" tag for that specific directory. +Files: src/ex_cmds.c + +Patch 6.1.426 +Problem: "--remote-wait +cmd file" waits forever. (Valery Kondakoff) +Solution: Don't wait for the "+cmd" argument to have been edited. +Files: src/main.c + +Patch 6.1.427 +Problem: Several error messages for regexp patterns are not translated. +Solution: Use _() properly. (Muraoka Taro) +Files: src/regexp.c + +Patch 6.1.428 +Problem: FreeBSD: wait() may hang when compiled with Python support and + doing a system() call in a startup script. +Solution: Use waitpid() instead of wait() and poll every 10 msec, just like + what is done in the GUI. +Files: src/os_unix.c + +Patch 6.1.429 (depends on 6.1.390) +Problem: Crash when using showmarks.vim plugin. (Charles Campbell) +Solution: Check for sign_get_text() returning a NULL pointer. +Files: src/screen.c + +Patch 6.1.430 +Problem: In Lisp code backslashed parens should be ignored for "%". (Dorai) +Solution: Skip over backslashed parens. +Files: src/search.c + +Patch 6.1.431 +Problem: Debug commands end up in redirected text. +Solution: Disable redirection while handling debug commands. +Files: src/ex_cmds2.c + +Patch 6.1.432 (depends on 6.1.375) +Problem: MS-Windows: ":make %:p" inserts extra backslashes. (David Rennalls) +Solution: Don't add backslashes, handle it like ":!cmd". +Files: src/ex_docmd.c + +Patch 6.1.433 +Problem: ":popup" only works for Win32. +Solution: Add ":popup" support for GTK. (Daniel Elstner) +Files: runtime/doc/gui.txt, src/ex_docmd.c, src/gui_gtk.c, src/menu.c, + src/proto/gui_gtk.pro + +Patch 6.1.434 (extra) +Problem: Win32: When there are more than 32767 lines, the scrollbar has a + roundoff error. +Solution: Make a click on an arrow move one line. Also move the code to + gui_w48.c, there is hardly any difference between the 16 bit and + 32 bit versions. (Walter Briscoe) +Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.1.435 +Problem: ":winsize x" resizes the Vim window to the minimal size. (Andrew + Pimlott) +Solution: Give an error message for wrong arguments of ":winsize" and + ":winpos". +Files: src/ex_docmd.c + +Patch 6.1.436 +Problem: When a long UTF-8 file contains an illegal byte it's hard to find + out where it is. (Ron Aaron) +Solution: Add the line number to the error message. +Files: src/fileio.c + +Patch 6.1.437 (extra, depends on 6.1.421) +Problem: Using multi-byte functions when they are not available. +Solution: Put the clipboard conversion inside an #ifdef. (Vince Negri) + Also fix a pointer type mistake. (Walter Briscoe) +Files: src/os_mswin.c + +Patch 6.1.438 +Problem: When Perl has thread support Vim cannot use the Perl interface. +Solution: Add a configure check and disable Perl when it will not work. + (Aron Griffis) +Files: src/auto/configure, src/configure.in + +Patch 6.1.439 +Problem: Netbeans: A "create" function doesn't actually create a buffer, + following functions may fail. +Solution: Create a Vim buffer without a name when "create" is called. + (Gordon Prieur) +Files: runtime/doc/netbeans.txt, src/netbeans.c + +Patch 6.1.440 +Problem: The "@*" command doesn't obtain the actual contents of the + clipboard. (Hari Krishna Dara) +Solution: Obtain the clipboard text before executing the command. +Files: src/ops.c + +Patch 6.1.441 +Problem: "zj" and "zk" cannot be used as a motion command after an + operator. (Ralf Hetzel) +Solution: Accept these commands as motion commands. +Files: src/normal.c + +Patch 6.1.442 +Problem: Unicode 3.2 defines more space and punctuation characters. +Solution: Add the new characters to the Unicode tables. (Raphael Finkel) +Files: src/mbyte.c + +Patch 6.1.443 (extra) +Problem: Win32: The gvimext.dll build with Borland 5.5 requires another + DLL. +Solution: Build a statically linked version by default. (Dan Sharp) +Files: GvimExt/Make_bc5.mak + +Patch 6.1.444 (extra) +Problem: Win32: Enabling a build with gettext support is not consistent. +Solution: Use "GETTEXT" for Borland and msvc makefiles. (Dan Sharp) +Files: src/Make_bc5.mak, src/Make_mvc.mak + +Patch 6.1.445 (extra) +Problem: DJGPP: get warning for argument of putenv() +Solution: Define HAVE_PUTENV to use DJGPP's putenv(). (Walter Briscoe) +Files: src/os_msdos.h + +Patch 6.1.446 (extra) +Problem: Win32: The MingW makefile uses a different style of arguments than + other makefiles. + Dynamic IME is not supported for Cygwin. +Solution: Use "no" and "yes" style arguments. Remove the use of the + dyn-ming.h include file. (Dan Sharp) + Do not include the ime.h file and adjust the makefile. (Alejandro + Lopez-Valencia) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/gui_w32.c, + src/if_perl.xs, src/if_python.c, src/if_ruby.c, src/os_win32.c + +Patch 6.1.447 +Problem: "make install" uses "make" directly for generating help tags. +Solution: Use $(MAKE) instead of "make". (Tim Mooney) +Files: src/Makefile + +Patch 6.1.448 +Problem: 'titlestring' has a default maximum width of 50 chars per item. +Solution: Remove the default maximum (also for 'statusline'). +Files: src/buffer.c + +Patch 6.1.449 +Problem: When "1" and "a" are in 'formatoptions', auto-formatting always + moves a newly added character to the next line. (Servatius Brandt) +Solution: Don't move a single character to the next line when it was just + typed. +Files: src/edit.c + +Patch 6.1.450 +Problem: Termcap entry "kB" for back-tab is not recognized. +Solution: Use back-tab as the shift-tab code. +Files: src/keymap.h, src/misc2.c, src/term.c + +Patch 6.1.451 +Problem: GUI: When text in the find dialog contains a slash, a backslash is + inserted the next time it is opened. (Mezz) +Solution: Remove escaped backslashes and question marks. (Daniel Elstner) +Files: src/gui.c + +Patch 6.1.452 (extra, after 6.1.446) +Problem: Win32: IME support doesn't work for MSVC. +Solution: Use _MSC_VER instead of __MSVC. (Alejandro Lopez-Valencia) +Files: src/gui_w32.c + +Patch 6.1.453 (after 6.1.429) +Problem: When compiled without sign icons but with sign support, adding a + sign may cause a crash. +Solution: Check for the text sign to exist before using it. (Kamil + Burzynski) +Files: src/screen.c + +Patch 6.1.454 (extra) +Problem: Win32: pasting Russian text in Vim with 'enc' set to cp1251 + results in utf-8 bytes. (Perelyubskiy) + Conversion from DBCS to UCS2 does not work when 'encoding' is not + the active codepage. +Solution: Introduce enc_codepage and use it for conversion to 'encoding' + (Glenn Maynard) + Use MultiByteToWideChar() and WideCharToMultiByte() instead of + iconv(). Should do most needed conversions without iconv.dll. +Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/os_mswin.c, + src/proto/mbyte.pro, src/proto/os_mswin.pro, src/structs.h + +Patch 6.1.455 +Problem: Some Unicode characters can be one or two character cells wide. +Solution: Add the 'ambiwidth' option to tell Vim how to display these + characters. (Jungshik Shin) + Also reset the script ID when setting an option to its default + value, so that ":verbose set" won't give wrong info. +Files: runtime/doc/options.txt, src/mbyte.c, src/option.c, src/option.h + +Patch 6.1.456 (extra, after 6.1.454) +Problem: Win32: IME doesn't work. +Solution: ImmGetCompositionStringW() returns the size in bytes, not words. + (Yasuhiro Matsumoto) Also fix typecast problem. +Files: src/gui_w32.c, src/os_mswin.c + +Patch 6.1.457 +Problem: An empty register in viminfo causes conversion to fail. +Solution: Don't convert an empty string. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c, src/mbyte.c + +Patch 6.1.458 +Problem: Compiler warning for pointer. +Solution: Add a typecast. +Files: src/ex_cmds.c + +Patch 6.1.459 (extra) +Problem: Win32: libcall() may return an invalid pointer and cause Vim to + crash. +Solution: Add a strict check for the returned pointer. (Bruce Mellows) +Files: src/os_mswin.c + +Patch 6.1.460 +Problem: GTK: after scrolling the text one line with a key, clicking the + arrow of the scrollbar does not always work. (Nam SungHyun) +Solution: Always update the scrollbar thumb when the value changed, even + when it would not move, like for RISCOS. (Daniel Elstner) +Files: src/gui.c, src/gui.h + +Patch 6.1.461 +Problem: When a keymap is active, typing a character in Select mode does + not use it. (Benji Fisher) +Solution: Apply Insert mode mapping to the character typed in Select mode. +Files: src/normal.c + +Patch 6.1.462 +Problem: When autocommands wipe out a buffer, a crash may happen. (Hari + Krishna Dara) +Solution: Don't decrement the window count of a buffer before calling the + autocommands for it. When re-using the current buffer, watch out + for autocommands changing the current buffer. +Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro + +Patch 6.1.463 +Problem: When writing a compressed file, the file name that gzip stores in + the file is the weird temporary file name. (David Rennalls) +Solution: Use the real file name when possible. +Files: runtime/plugin/gzip.vim + +Patch 6.1.464 +Problem: Crash when using C++ syntax highlighting. (Gerhard Hochholzer) +Solution: Check for a negative index. +Files: src/syntax.c + +Patch 6.1.465 (after 6.1.454) +Problem: Compile error when using cygwin. +Solution: Change #ifdef WIN32 to #ifdef WIN3264. (Alejandro Lopez-Valencia) + Undefine WIN32 after including windows.h +Files: src/mbyte.c + +Patch 6.1.466 +Problem: The "-f" argument is a bit obscure. +Solution: Add the "--nofork" argument. Improve the help text a bit. +Files: runtime/doc/starting.txt, src/main.c + +Patch 6.1.467 +Problem: Setting the window title doesn't work for Chinese. +Solution: Use an X11 function to convert text to a text property. (Kentaro + Nakazawa) +Files: src/os_unix.c + +Patch 6.1.468 +Problem: ":mksession" also stores folds for buffers which will not be + restored. +Solution: Only store folds for a buffer with 'buftype' empty and help files. +Files: src/ex_docmd.c + +Patch 6.1.469 +Problem: 'listchars' cannot contain multi-byte characters. +Solution: Handle multi-byte UTF-8 list characters. (Matthew Samsonoff) +Files: src/message.c, src/option.c, src/screen.c + +Patch 6.1.470 (lang) +Problem: Polish messages don't show up correctly on MS-Windows. +Solution: Convert messages to cp1250. (Mikolaj Machowski) + Also add English message translations, because it got in the way + of the patch. +Files: Makefile, src/po/Makefile, src/po/en_gb.po, src/po/pl.po + +Patch 6.1.471 +Problem: ":jumps" output continues after pressing "q" at the more-prompt. + (Hari Krishna Dara) +Solution: Check for "got_int" being set. +Files: src/mark.c + +Patch 6.1.472 +Problem: When there is an authentication error when connecting to the X + server Vim exits. +Solution: Use XSetIOErrorHandler() to catch the error and longjmp() to avoid + the exit. Also do this in the main loop, so that when the X + server exits a Vim running in a console isn't killed. +Files: src/globals.h, src/main.c, src/os_unix.c + +Patch 6.1.473 +Problem: Referring to $curwin or $curbuf in Perl 5.6 causes a crash. +Solution: Add "pTHX_" to cur_val(). (Yasuhiro Matsumoto) +Files: src/if_perl.xs + +Patch 6.1.474 +Problem: When opening the command-line window in Ex mode it's impossible to + go back. (Pavol Juhas) +Solution: Reset "exmode_active" and restore it when the command-line window + is closed. +Files: src/ex_getln.c + + +Patch 6.2f.001 +Problem: The configure check for Ruby didn't work properly for Ruby 1.8.0. +Solution: Change the way the Ruby check is done. (Aron Griffis) +Files: src/auto/configure, src/configure.in + +Patch 6.2f.002 +Problem: The output of ":ls" doesn't show whether a buffer had read errors. +Solution: Add the "x" flag in the ":ls" output. +Files: runtime/doc/windows.txt, src/buffer.c + +Patch 6.2f.003 +Problem: Test49 doesn't properly test the behavior of ":catch" without an + argument. +Solution: Update test49. (Servatius Brandt) +Files: src/testdir/test49.ok, src/testdir/test49.vim + +Patch 6.2f.004 +Problem: "vim --version" always uses CR/LF in the output. +Solution: Omit the CR. +Files: src/message.c, src/os_unix.c + +Patch 6.2f.005 +Problem: Two error messages without a colon after the number. +Solution: Add the colon. (Taro Muraoka) +Files: src/if_cscope.c + +Patch 6.2f.006 +Problem: When saving a file takes a while and Vim regains focus this can + result in a "file changed outside of Vim" warning and ml_get() + errors. (Mike Williams) +Solution: Add the "b_saving" flag to avoid checking the timestamp while the + buffer is being saved. (Michael Schaap) +Files: src/fileio.c, src/structs.h + +Patch 6.2f.007 +Problem: Irix compiler complains about multiple defined symbols. + vsnprintf() is not available. (Charles Campbell) +Solution: Insert EXTERN for variables in globals.h. Change the configure + check for vsnprintf() from compiling to linking. +Files: src/auto/configure, src/configure.in, src/globals.h + +Patch 6.2f.008 +Problem: The Aap recipe doesn't work with Aap 0.149. +Solution: Change targetarg to TARGETARG. Update the mysign file. +Files: src/main.aap, src/mysign + +Patch 6.2f.009 (extra) +Problem: Small problem when building with Borland 5.01. +Solution: Use mkdir() instead of _mkdir(). (Walter Briscoe) +Files: src/dosinst.h + +Patch 6.2f.010 +Problem: Warning for missing prototypes. +Solution: Add missing prototypes. (Walter Briscoe) +Files: src/if_cscope.c + +Patch 6.2f.011 +Problem: The configure script doesn't work with autoconf 2.5x. +Solution: Add square brackets around a header check. (Aron Griffis) + Note: touch src/auto/configure after applying this patch. +Files: src/configure.in + +Patch 6.2f.012 +Problem: ":echoerr" doesn't work correctly inside try/endtry. +Solution: Don't reset did_emsg inside a try/endtry. (Servatius Brandt) +Files: src/eval.c + +Patch 6.2f.013 (extra) +Problem: Macintosh: Compiler warning for a trigraph. +Solution: Insert a backslash before each question mark. (Peter Cucka) +Files: src/os_mac.h + +Patch 6.2f.014 (extra) +Problem: Macintosh: ex_eval is not included in the project file. +Solution: Add ex_eval. (Dany St-Amant) +Files: src/os_mac.pbproj/project.pbxproj + +Patch 6.2f.015 (extra) +Problem: Win32: When changing header files not all source files involved + are recompiled. +Solution: Improve the dependency rules. (Dan Sharp) +Files: src/Make_cyg.mak, src/Make_ming.mak + +Patch 6.2f.016 +Problem: "vim --version > ff" on non-Unix systems results in a file with a + missing line break at the end. (Bill McCArthy) +Solution: Add a line break. +Files: src/main.c + +Patch 6.2f.017 +Problem: Unix: starting Vim in the background and then bringing it to the + foreground may cause the terminal settings to be wrong. +Solution: Check for tcsetattr() to return an error, retry when it does. + (Paul Tapper) +Files: src/os_unix.c + +Patch 6.2f.018 +Problem: Mac OS X 10.2: OK is defined to zero in cursus.h while Vim uses + one. Redefining it causes a warning message. +Solution: Undefine OK before defining it to one. (Taro Muraoka) +Files: src/vim.h + +Patch 6.2f.019 +Problem: Mac OS X 10.2: COLOR_BLACK and COLOR_WHITE are defined in + curses.h. +Solution: Rename them to PRCOLOR_BLACK and PRCOLOR_WHITE. +Files: src/ex_cmds2.c + +Patch 6.2f.020 +Problem: Win32: test50 produces beeps and fails with some versions of diff. +Solution: Remove empty lines and convert the output to dos fileformat. +Files: src/testdir/test50.in + +Patch 6.2f.021 +Problem: Running configure with "--enable-netbeans" disables Netbeans. + (Gordon Prieur) +Solution: Fix the tests in configure.in where the default is to enable a + feature. Fix that "--enable-acl" reported "yes" confusingly. +Files: src/auto/configure, src/configure.in, src/mysign + +Patch 6.2f.022 +Problem: A bogus value for 'foldmarker' is not rejected, possibly causing a + hang. (Derek Wyatt) +Solution: Check for a non-empty string before and after the comma. +Files: src/option.c + +Patch 6.2f.023 +Problem: When the help files are not in $VIMRUNTIME but 'helpfile' is + correct Vim still can't find the help files. +Solution: Also look for a tags file in the directory of 'helpfile'. +Files: src/tag.c + +Patch 6.2f.024 +Problem: When 'delcombine' is set and a character has more than two + composing characters "x" deletes them all. +Solution: Always delete only the last composing character. +Files: src/misc1.c + +Patch 6.2f.025 +Problem: When reading a file from stdin that has DOS line endings but a + missing end-of-line for the last line 'fileformat' becomes "unix". + (Bill McCarthy) +Solution: Don't add the missing line break when re-reading the text from the + buffer. +Files: src/fileio.c + +Patch 6.2f.026 +Problem: When typing new text at the command line, old composing characters + may be displayed. +Solution: Don't read composing characters from after the end of the + text to be displayed. +Files: src/ex_getln.c, src/mbyte.c, src/message.c, src/proto/mbyte.pro, + src/screen.c + +Patch 6.2f.027 +Problem: Compiler warnings for unsigned char pointers. (Tony Leneis) +Solution: Add typecasts to char pointer. +Files: src/quickfix.c + +Patch 6.2f.028 +Problem: GTK: When 'imactivatekey' is empty and XIM is inactive it can't be + made active again. Cursor isn't updated immediately when changing + XIM activation. Japanese XIM may hang when using 'imactivatekey'. + Can't activate XIM after typing fFtT command or ":sh". +Solution: Properly set the flag that indicates the IM is active. Update the + cursor right away. Do not send a key-release event. Handle + Normal mode and running an external command differently. + (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.2f.029 +Problem: Mixing use of int and enum. +Solution: Adjust argument type of cs_usage_msg(). Fix wrong typedef. +Files: src/if_cscope.c, src/if_cscope.h + +Patch 6.2f.030 (after 6.2f.028) +Problem: Cursor moves up when using XIM. +Solution: Reset im_preedit_cursor. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.2f.031 +Problem: Crash when listing a function argument in the debugger. (Ron Aaron) +Solution: Init the name field of an argument to NULL. +Files: src/eval.c + +Patch 6.2f.032 +Problem: When a write fails for a ":silent!" while inside try/endtry the + BufWritePost autocommands are not triggered. +Solution: Check the emsg_silent flag in should_abort(). (Servatius Brandt) +Files: src/ex_eval.c, src/testdir/test49.ok, src/testdir/test49.vim + +Patch 6.2f.033 +Problem: Cscope: re-entrance problem for ":cscope" command. Checking for + duplicate database didn't work well for Win95. Didn't check for + duplicate databases after an empty entry. +Solution: Don't set postponed_split too early. Remember first empty + database entry. (Sergey Khorev) +Files: src/if_cscope.c + +Patch 6.2f.034 +Problem: The netbeans interface cannot be used on systems without + vsnprintf(). (Tony Leneis) +Solution: Use EMSG(), EMSGN() and EMSG2() instead. +Files: src/auto/configure, src/configure.in, src/netbeans.c + +Patch 6.2f.035 +Problem: The configure check for the netbeans interface doesn't work if the + socket and nsl libraries are required. +Solution: Check for the socket and nsl libraries before the netbeans check. +Files: src/auto/configure, src/configure.in + +Patch 6.2f.036 +Problem: Moving leftwards over text with an illegal UTF-8 byte moves one + byte instead of one character. +Solution: Ignore an illegal byte after the cursor position. +Files: src/mbyte.c + +Patch 6.2f.037 +Problem: When receiving a Netbeans command at the hit-enter or more prompt + the screen is redrawn but Vim is still waiting at the prompt. +Solution: Quit the prompt like a CTRL-C was typed. +Files: src/netbeans.c + +Patch 6.2f.038 +Problem: The dependency to run autoconf causes a patch for configure.in + to run autoconf, even though the configure script was updated as + well. +Solution: Only run autoconf with "make autoconf". +Files: src/Makefile + +Patch 6.2f.039 +Problem: CTRL-W K makes the new top window very high. +Solution: When 'equalalways' is set equalize the window heights. +Files: src/window.c + + +============================================================================== +VERSION 6.3 *version-6.3* + +This section is about improvements made between version 6.2 and 6.3. + +This is mainly a bug-fix release. There are also a few new features. +The major number of new items is in the runtime files and translations. + + +Changed *changed-6.3* +------- + +The intro message also displays a note about sponsoring Vim, mixed randomly +with the message about helping children in Uganda. + +Included the translated menus, keymaps and tutors with the normal runtime +files. The separate "lang" archive now only contains translated messages. + +Made the translated menu file names a bit more consistent. Use "latin1" for +"iso_8859-1" and "iso_8859-15". + +Removed the "file_select.vim" script from the distribution. It's not more +useful than other scripts that can be downloaded from www.vim.org. + +The "runtime/doc/tags" file is now always in unix fileformat. On MS-Windows +it used to be dos fileformat, but ":helptags" generates a unix format file. + + +Added *added-6.3* +----- + +New commands: + :cNfile go to last error in previous file + :cpfile idem + :changes print the change list + :keepmarks following command keeps marks where they are + :keepjumps following command keeps jumplist and marks + :lockmarks following command keeps marks where they are + :redrawstatus force a redraw of the status line(s) + +New options: + 'antialias' Mac OS X: use smooth, antialiased fonts + 'helplang' preferred help languages + +Syntax files: + Arch inventory (Nikolai Weibull) + Calendar (Nikolai Weibull) + Ch (Wayne Cheng) + Controllable Regex Mutilator (Nikolai Weibull) + D (Jason Mills) + Desktop (Mikolaj Machowski) + Dircolors (Nikolai Weibull) + Elinks configuration (Nikolai Weibull) + FASM (Ron Aaron) + GrADS scripts (Stefan Fronzek) + Icewm menu (James Mahler) + LDIF (Zak Johnson) + Locale input, fdcc. (Dwayne Bailey) + Pinfo config (Nikolai Weibull) + Pyrex (Marco Barisione) + Relax NG Compact (Nikolai Weibull) + Slice (Morel Bodin) + VAX Macro Assembly (Tom Uijldert) + grads (Stefan Fronzek) + libao (Nikolai Weibull) + mplayer (Nikolai Weibull) + rst (Nikolai Weibull) + tcsh (Gautam Iyer) + yaml (Nikolai Weibull) + +Compiler plugins: + ATT dot (Marcos Macedo) + Apple Project Builder (Alexander von Below) + Intel (David Harrison) + bdf (Nikolai Weibull) + icc (Peter Puck) + javac (Doug Kearns) + neato (Marcos Macedo) + onsgmls (Robert B. Rowsome) + perl (Christian J. Robinson) + rst (Nikolai Weibull) + se (SmartEiffel) (Doug Kearns) + tcl (Doug Kearns) + xmlwf (Robert B. Rowsome) + +Filetype plugins: + Aap (Bram Moolenaar) + Ch (Wayne Cheng) + Css (Nikolai Weibull) + Pyrex (Marco Barisione) + Rst (Nikolai Weibull) + +Indent scripts: + Aap (Bram Moolenaar) + Ch (Wayne Cheng) + DocBook (Nikolai Weibull) + MetaPost (Eugene Minkovskii) + Objective-C (Kazunobu Kuriyama) + Pyrex (Marco Barisione) + Rst (Nikolai Weibull) + Tcsh (Gautam Iyer) + XFree86 configuration file (Nikolai Weibull) + Zsh (Nikolai Weibull) + +Keymaps: + Greek for cp1253 (Panagiotis Louridas) + Hungarian (Magyar) (Laszlo Zavaleta) + Persian-Iranian (Behnam Esfahbod) + +Message translations: + Catalan (Ernest Adrogue) + Russian (Vassily Ragosin) + Swedish (Johan Svedberg) + +Menu translations: + Catalan (Ernest Adrogue) + Russian (Tim Alexeevsky) + Swedish (Johan Svedberg) + +Tutor translations: + Catalan (Ernest Adrogue) + Russian in cp1251 (Alexey Froloff) + Slovak in cp1251 and iso8859-2 (Lubos Celko) + Swedish (Johan Svedberg) + Korean (Kee-Won Seo) + UTF-8 version of the Japanese tutor (Yasuhiro Matsumoto) Use this as + the original, create the other Japanese tutor by conversion. + +Included "russian.txt" help file. (Vassily Ragosin) + +Include Encapsulated PostScript and PDF versions of the Vim logo in the extra +archive. + +The help highlighting finds the highlight groups and shows them in the color +that is actually being used. (idea from Yakov Lerner) + +The big Win32 version is now compiled with Ruby interface, version 1.8. For +Python version 2.3 is used. For Perl version 5.8 is used. + +The "ftdetect" directory is mentioned in the documentation. The DOS install +program creates it. + + +Fixed *fixed-6.3* +----- + +Test 42 failed on MS-Windows. Set and reset 'fileformat' and 'binary' options +here and there. (Walter Briscoe) + +The explorer plugin didn't work for double-byte 'encoding's. + +Use "copy /y" in Make_bc5.mak to avoid a prompt for overwriting. + +Patch 6.2.001 +Problem: The ":stopinsert" command doesn't have a help tag. +Solution: Add the tag. (Antoine J. Mechelynck) +Files: runtime/doc/insert.txt, runtime/doc/tags + +Patch 6.2.002 +Problem: When compiled with the +multi_byte feature but without +eval, + displaying UTF-8 characters may cause a crash. (Karsten Hopp) +Solution: Also set the default for 'ambiwidth' when compiled without the + +eval feature. +Files: src/option.c + +Patch 6.2.003 +Problem: GTK 2: double-wide characters below 256 are not displayed + correctly. +Solution: Check the cell width for characters above 127. (Yasuhiro + Matsumoto) +Files: src/gui_gtk_x11.c + +Patch 6.2.004 +Problem: With a line-Visual selection at the end of the file a "p" command + puts the text one line upwards. +Solution: Detect that the last line was deleted and put forward. (Taro + Muraoka) +Files: src/normal.c + +Patch 6.2.005 +Problem: GTK: the "Find" and "Find and Replace" tools don't work. (Aschwin + Marsman) +Solution: Show the dialog after creating it. (David Necas) +Files: src/gui_gtk.c + +Patch 6.2.006 +Problem: The Netbeans code contains an obsolete function that uses "vim61" + and sets the fall-back value for $VIMRUNTIME. +Solution: Delete the obsolete function. +Files: src/main.c, src/netbeans.c, src/proto/netbeans.pro + +Patch 6.2.007 +Problem: Listing tags for Cscope doesn't always work. +Solution: Avoid using smgs_attr(). (Sergey Khorev) +Files: src/if_cscope.c + +Patch 6.2.008 +Problem: XIM with GTK 2: After backspacing preedit characters are wrong. +Solution: Reset the cursor position. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.2.009 +Problem: Win32: The self-installing executable "Full" selection only + selects some of the items to install. (Salman Mohsin) +Solution: Change commas to spaces in between section numbers. +Files: nsis/gvim.nsi + +Patch 6.2.010 +Problem: When 'virtualedit' is effective and a line starts with a + multi-byte character, moving the cursor right doesn't work. +Solution: Obtain the right character to compute the column offset. (Taro + Muraoka) +Files: src/charset.c + +Patch 6.2.011 +Problem: Alpha OSF1: stat() is a macro and doesn't allow an #ifdef halfway. + (Moshe Kaminsky) +Solution: Move the #ifdef outside of stat(). +Files: src/os_unix.c + +Patch 6.2.012 +Problem: May hang when polling for a character. +Solution: Break the wait loop when not waiting for a character. +Files: src/os_unix.c + +Patch 6.2.013 (extra) +Problem: Win32: The registry key for uninstalling GvimExt still uses "6.1". +Solution: Change the version number to "6.2". (Ajit Thakkar) +Files: src/GvimExt/GvimExt.reg + +Patch 6.2.014 (after 6.2.012) +Problem: XSMP doesn't work when using poll(). +Solution: Use xsmp_idx instead of gpm_idx. (Neil Bird) +Files: src/os_unix.c + +Patch 6.2.015 +Problem: The +xsmp feature is never enabled. +Solution: Move the #define for USE_XSMP to below where WANT_X11 is defined. + (Alexey Froloff) +Files: src/feature.h + +Patch 6.2.016 +Problem: Using ":scscope find" with 'cscopequickfix' does not always split + the window. (Gary Johnson) + Win32: ":cscope add" could make the script that contains it + read-only until the corresponding ":cscope kill". + Errors during ":cscope add" may not be handled properly. +Solution: When using the quickfix window may need to split the window. + Avoid file handle inheritance for the script. + Check for a failed connection and/or process. (Sergey Khorev) +Files: src/ex_cmds2.c, src/if_cscope.c + +Patch 6.2.017 +Problem: Test11 sometimes prompts the user, because a file would have been + changed outside of Vim. (Antonio Colombo) +Solution: Add a FileChangedShell autocommand to avoid the prompt. +Files: src/testdir/test11.in + +Patch 6.2.018 +Problem: When using the XSMP protocol and reading from stdin Vim may wait + for a key to be pressed. +Solution: Avoid that RealWaitForChar() is used recursively. +Files: src/os_unix.c + +Patch 6.2.019 (lang) +Problem: Loading the Portuguese menu causes an error message. +Solution: Join two lines. (Jose Pedro Oliveira, Jos� de Paula) +Files: runtime/lang/menu_pt_br.vim + +Patch 6.2.020 +Problem: The "Syntax/Set syntax only" menu item causes an error message. + (Oyvind Holm) +Solution: Set the script-local variable in a function. (Benji Fisher) +Files: runtime/synmenu.vim + +Patch 6.2.021 +Problem: The user manual section on exceptions contains small mistakes. +Solution: Give a good example of an error that could be missed and other + improvements. (Servatius Brandt) +Files: runtime/doc/usr_41.txt + +Patch 6.2.022 (extra) +Problem: Win32: After deleting a menu item it still appears in a tear-off + window. +Solution: Set the mode to zero for the deleted item. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.2.023 (extra) +Problem: Win32: Make_ivc.mak does not clean everything. +Solution: Delete more files in the clean rule. (Walter Briscoe) +Files: src/Make_ivc.mak + +Patch 6.2.024 (extra) +Problem: Win32: Compiler warnings for typecasts. +Solution: Use DWORD instead of WORD. (Walter Briscoe) +Files: src/gui_w32.c + +Patch 6.2.025 +Problem: Missing prototype for sigaltstack(). +Solution: Add the prototype when it is not found in a header file. +Files: src/os_unix.c + +Patch 6.2.026 +Problem: Warning for utimes() argument. +Solution: Add a typecast. +Files: src/fileio.c + +Patch 6.2.027 +Problem: Warning for uninitialized variable. +Solution: Set mb_l to one when not using multi-byte characters. +Files: src/message.c + +Patch 6.2.028 +Problem: Cscope connection may kill Vim process and others. +Solution: Check for pid being larger than one. (Khorev Sergey) +Files: src/if_cscope.c + +Patch 6.2.029 +Problem: When using the remote server functionality Vim may leak memory. + (Srikanth Sankaran) +Solution: Free the result of XListProperties(). +Files: src/if_xcmdsrv.c + +Patch 6.2.030 +Problem: Mac: Warning for not being able to use precompiled header files. +Solution: Don't redefine select. Use -no-cpp-precomp for compiling, so that + function prototypes are still found. +Files: src/os_unix.c, src/osdef.sh + +Patch 6.2.031 +Problem: The langmenu entry in the options window doesn't work. (Rodolfo + Lima) + With GTK 1 the ":options" command causes an error message. + (Michael Naumann) +Solution: Change "lmenu" to "langmenu". Only display the 'tbis' option for + GTK 2. +Files: runtime/optwin.vim + +Patch 6.2.032 +Problem: The lpc filetype is never recognized. (Shizhu Pan) +Solution: Check for g:lpc_syntax_for_c instead of the local variable + lpc_syntax_for_c. (Benji Fisher) +Files: runtime/filetype.vim + +Patch 6.2.033 (extra) +Problem: Mac: Various compiler warnings. +Solution: Don't include Classic-only headers in Unix version. + Remove references to several unused variables. (Ben Fowler) + Fix double definition of DEFAULT_TERM. + Use int instead of unsigned short for pixel values, so that the + negative error values are recognized. +Files: src/gui_mac.c, src/term.c + +Patch 6.2.034 +Problem: Mac: Compiler warning for redefining DEFAULT_TERM. +Solution: Fix double definition of DEFAULT_TERM. +Files: src/term.c + +Patch 6.2.035 +Problem: Mac: Compiler warnings in Python interface. +Solution: Make a difference between pure Mac and Unix-Mac. (Peter Cucka) +Files: src/if_python.c + +Patch 6.2.036 (extra) +Problem: Mac Unix version: If foo is a directory, then ":e f<Tab>" should + expand to ":e foo/" instead of ":e foo" . (Vadim Zeitlin) +Solution: Define DONT_ADD_PATHSEP_TO_DIR only for pure Mac. (Benji Fisher) +Files: src/os_mac.h + +Patch 6.2.037 +Problem: Win32: converting an encoding name to a codepage could result in + an arbitrary number. +Solution: make encname2codepage() return zero if the encoding name doesn't + contain a codepage number. +Files: src/mbyte.c + +Patch 6.2.038 (extra) +Problem: Warning messages when using the MingW compiler. (Bill McCarthy) + Can't compile console version without +mouse feature. +Solution: Initialize variables, add parenthesis. + Add an #ifdef around g_nMouseClick. (Ajit Thakkar) +Files: src/eval.c, src/os_win32.c, src/gui_w32.c, src/dosinst.c + +Patch 6.2.039 (extra) +Problem: More warning messages when using the MingW compiler. +Solution: Initialize variables. (Bill McCarthy) +Files: src/os_mswin.c + +Patch 6.2.040 +Problem: FreeBSD: Crash while starting up when compiled with +xsmp feature. +Solution: Pass a non-NULL argument to IceAddConnectionWatch(). +Files: src/os_unix.c + +Patch 6.2.041 (extra, after 6.2.033) +Problem: Mac: Compiler warnings for conversion types, missing prototype, + missing return type. +Solution: Change sscanf "%hd" to "%d", the argument is an int now. Add + gui_mch_init_check() prototype. Add "int" to termlib functions. +Files: src/gui_mac.c, src/proto/gui_mac.pro, src/termlib.c. + +Patch 6.2.042 (extra) +Problem: Cygwin: gcc 3.2 has an optimizer problem, sometimes causing a + crash. +Solution: Add -fno-strength-reduce to the compiler arguments. (Dan Sharp) +Files: src/Make_cyg.mak + +Patch 6.2.043 +Problem: Compiling with both netbeans and workshop doesn't work. +Solution: Move the shellRectangle() function to gui_x11.c. (Gordon Prieur) +Files: src/gui_x11.c, src/integration.c, src/netbeans.c, + src/proto/netbeans.pro + +Patch 6.2.044 +Problem: ":au filetypedetect" gives an error for a non-existing event name, + but it's actually a non-existing group name. (Antoine Mechelynck) +Solution: Make the error message clearer. +Files: src/fileio.c + +Patch 6.2.045 +Problem: Obtaining the '( mark changes the '' mark. (Gary Holloway) +Solution: Don't set the '' mark when searching for the start/end of the + current sentence/paragraph. +Files: src/mark.c + +Patch 6.2.046 +Problem: When evaluating an argument of a function throws an exception the + function is still called. (Hari Krishna Dara) +Solution: Don't call the function when an exception was thrown. +Files: src/eval.c + +Patch 6.2.047 (extra) +Problem: Compiler warnings when using MingW. (Bill McCarthy) +Solution: Give the s_dwLastClickTime variable a type. Initialize dwEndTime. +Files: src/os_win32.c + +Patch 6.2.048 +Problem: The Python interface doesn't compile with Python 2.3 when + dynamically loaded. +Solution: Use dll_PyObject_Malloc and dll_PyObject_Free. (Paul Moore) +Files: src/if_python.c + +Patch 6.2.049 +Problem: Using a "-range=" argument with ":command" doesn't work and + doesn't generate an error message. +Solution: Generate an error message. +Files: src/ex_docmd.c + +Patch 6.2.050 +Problem: Test 32 didn't work on MS-Windows. +Solution: Write the temp file in Unix fileformat. (Walter Briscoe) +Files: src/testdir/test32.in + +Patch 6.2.051 +Problem: When using "\=submatch(0)" in a ":s" command, line breaks become + NUL characters. +Solution: Change NL to CR characters, so that they become line breaks. +Files: src/regexp.c + +Patch 6.2.052 +Problem: A few messages are not translated. +Solution: Add _() to the messages. (Muraoka Taro) +Files: src/ex_cmds.c + +Patch 6.2.053 +Problem: Prototype for bzero() doesn't match most systems. +Solution: Use "void *" instead of "char *" and "size_t" intead of "int". +Files: src/osdef1.h.in + +Patch 6.2.054 +Problem: A double-byte character with a second byte that is a backslash + causes problems inside a string. +Solution: Skip over multi-byte characters in a string properly. (Yasuhiro + Matsumoto) +Files: src/eval.c + +Patch 6.2.055 +Problem: Using col('.') from CTRL-O in Insert mode does not return the + correct value for multi-byte characters. +Solution: Correct the cursor position when it is necessary, move to the + first byte of a multi-byte character. (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 6.2.056 (extra) +Problem: Building with Sniff++ doesn't work. +Solution: Use the multi-threaded libc when needed. (Holger Ditting) +Files: src/Make_mvc.mak + +Patch 6.2.057 (extra) +Problem: Mac: With -DMACOS_X putenv() is defined twice, it is in a system + library. Get a warning for redefining OK. Unused variables in + os_mac.c +Solution: Define HAVE_PUTENV. Undefine OK after including curses.h. + Remove declarations for unused variables. +Files: src/os_mac.c, src/os_mac.h, src/vim.h + +Patch 6.2.058 +Problem: When 'autochdir' is set ":bnext" to a buffer without a name causes + a crash. +Solution: Don't call vim_chdirfile() when the file name is NULL. (Taro + Muraoka) +Files: src/buffer.c + +Patch 6.2.059 +Problem: When 'scrolloff' is a large number and listing completion results + on the command line, then executing a command that jumps close to + where the cursor was before, part of the screen is not updated. + (Yakov Lerner) +Solution: Don't skip redrawing part of the window when it was scrolled. +Files: src/screen.c + +Patch 6.2.060 (extra) +Problem: Win32: When 'encoding' is set to "iso-8859-7" copy/paste to/from + the clipboard gives a lalloc(0) error. (Kriton Kyrimis) +Solution: When the string length is zero allocate one byte. Also fix that + when the length of the Unicode text is zero (conversion from + 'encoding' to UCS-2 was not possible) the normal text is used. +Files: src/os_mswin.c + +Patch 6.2.061 +Problem: GUI: Using the left mouse button with the shift key should work + like "*" but it scrolls instead. (Martin Beller) +Solution: Don't recognize an rxvt scroll wheel event when using the GUI. +Files: src/term.c + +Patch 6.2.062 +Problem: When one buffer uses a syntax with "containedin" and another + buffer does not, redrawing depends on what the current buffer is. + (Brett Pershing Stahlman) +Solution: Use "syn_buf" instead of "curbuf" to get the b_syn_containedin + flag. +Files: src/syntax.c + +Patch 6.2.063 +Problem: When using custom completion end up with no matches. +Solution: Make cmd_numfiles and cmd_files local to completion to avoid that + they are overwritten when ExpandOne() is called recursively by + f_glob(). +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/ex_getln.pro, + src/misc1.c, src/structs.h, src/tag.c + +Patch 6.2.064 +Problem: resolve() only handles one symbolic link, need to repeat it to + resolve all of them. Then need to simplify the file name. +Solution: Make resolve() resolve all symbolic links and simplify the result. + Add simplify() to just simplify a file name. Fix that test49 + doesn't work if /tmp is a symbolic link. (Servatius Brandt) +Files: runtime/doc/eval.txt, src/eval.c, src/tag.c, + src/testdir/test49.vim + +Patch 6.2.065 +Problem: ":windo 123" only updates other windows when entering them. + (Walter Briscoe) +Solution: Update the topline before going to the next window. +Files: src/ex_cmds2.c + +Patch 6.2.066 (extra) +Problem: Ruby interface doesn't work with Ruby 1.8.0. +Solution: Change "defout" to "stdout". (Aron Grifis) + Change dynamic loading. (Taro Muraoka) +Files: src/if_ruby.c, src/Make_mvc.mak + +Patch 6.2.067 +Problem: When searching for a string that starts with a composing character + the command line isn't drawn properly. +Solution: Don't count the space to draw the composing character on and + adjust the cursor column after drawing the string. +Files: src/message.c + +Patch 6.2.068 +Problem: Events for the netbeans interface that include a file name with + special characters don't work properly. +Solution: Use nb_quote() on the file name. (Sergey Khorev) +Files: src/netbeans.c + +Patch 6.2.069 (after 6.2.064) +Problem: Unused variables "limit" and "new_st" and unused label "fail" in + some situation. (Bill McCarthy) +Solution: Put the declarations inside an #ifdef. (Servatius Brandt) +Files: src/eval.c, src/tag.c + +Patch 6.2.070 (after 6.2.069) +Problem: Still unused variable "new_st". (Bill McCarthy) +Solution: Move the declaration to the right block this time. +Files: src/tag.c + +Patch 6.2.071 +Problem: 'statusline' can only contain 50 % items. (Antony Scriven) +Solution: Allow 80 items and mention it in the docs. +Files: runtime/doc/option.txt, src/vim.h + +Patch 6.2.072 +Problem: When using expression folding, foldexpr() mostly returns -1 for + the previous line, which makes it difficult to write a fold + expression. +Solution: Make the level of the previous line available while still looking + for the end of a fold. +Files: src/fold.c + +Patch 6.2.073 +Problem: When adding detection of a specific filetype for a plugin you need + to edit "filetype.vim". +Solution: Source files from the "ftdetect" directory, so that a filetype + detection plugin only needs to be dropped in a directory. +Files: runtime/doc/filetype.txt, runtime/doc/usr_05.txt, + runtime/doc/usr_41.txt, runtime/filetype.vim + +Patch 6.2.074 +Problem: Warnings when compiling the Python interface. (Ajit Thakkar) +Solution: Use ANSI function declarations. +Files: src/if_python.c + +Patch 6.2.075 +Problem: When the temp file for writing viminfo can't be used "NULL" + appears in the error message. (Ben Lavender) +Solution: Print the original file name when there is no temp file name. +Files: src/ex_cmds.c + +Patch 6.2.076 +Problem: The tags listed for cscope are in the wrong order. (Johannes + Stezenbach) +Solution: Remove the reordering of tags for the current file. (Sergey + Khorev) +Files: src/if_cscope.c + +Patch 6.2.077 +Problem: When a user function specifies custom completion, the function + gets a zero argument instead of an empty string when there is no + word before the cursor. (Preben Guldberg) +Solution: Don't convert an empty string to a zero. +Files: src/eval.c + +Patch 6.2.078 +Problem: "make test" doesn't work if Vim wasn't compiled yet. (Ed Avis) +Solution: Build Vim before running the tests. +Files: src/Makefile + +Patch 6.2.079 +Problem: ":w ++enc=utf-8 !cmd" doesn't work. +Solution: Check for the "++" argument before the "!". +Files: src/ex_docmd.c + +Patch 6.2.080 +Problem: When 't_ti' is not empty but doesn't swap screens, using "ZZ" in + an unmodified file doesn't clear the last line. +Solution: Call msg_clr_eos() when needed. (Michael Schroeder) +Files: src/os_unix.c + +Patch 6.2.081 +Problem: Problem when using a long multibyte string for the statusline. +Solution: Use the right pointer to get the cell size. (Taro Muraoka) +Files: src/buffer.c + +Patch 6.2.082 +Problem: Can't compile with Perl 5.8.1. +Solution: Rename "e_number" to "e_number_exp". (Sascha Blank) +Files: src/digraph.c, src/globals.h + +Patch 6.2.083 +Problem: When a compiler uses ^^^^ to mark a word the information is not + visible in the quickfix window. (Srikanth Sankaran) +Solution: Don't remove the indent for a line that is not recognized as an + error message. +Files: src/quickfix.c + +Patch 6.2.084 +Problem: "g_" in Visual mode always goes to the character after the line. + (Jean-Rene David) +Solution: Ignore the NUL at the end of the line. +Files: src/normal.c + +Patch 6.2.085 +Problem: ":verbose set ts" doesn't say an option was set with a "-c" or + "--cmd" argument. +Solution: Remember the option was set from a Vim argument. +Files: src/main.c, src/ex_cmds2.c, src/vim.h + +Patch 6.2.086 +Problem: "{" and "}" stop inside a closed fold. +Solution: Only stop once inside a closed fold. (Stephen Riehm) +Files: src/search.c + +Patch 6.2.087 +Problem: CTRL-^ doesn't use the 'confirm' option. Same problem with + ":bnext". (Yakov Lerner) +Solution: Put up a dialog for a changed file when 'confirm' is set in more + situations. +Files: src/buffer.c, src/ex_cmds.c + +Patch 6.2.088 +Problem: When 'sidescrolloff' is set 'showmatch' doesn't work correctly if + the match is less than 'sidescrolloff' off from the side of the + window. (Roland Stahn) +Solution: Set 'sidescrolloff' to zero while displaying the match. +Files: src/search.c + +Patch 6.2.089 +Problem: ":set isk+=" adds a comma. (Mark Waggoner) +Solution: Don't add a comma when the added value is empty. +Files: src/option.c + +Patch 6.2.090 (extra) +Problem: Win32: MingW compiler complains about #pragmas. (Bill McCarthy) +Solution: Put an #ifdef around the #pragmas. +Files: src/os_win32.c + +Patch 6.2.091 +Problem: When an autocommand is triggered when a file is dropped on Vim and + it produces output, messages from a following command may be + scrolled unexpectedly. (David Rennalls) +Solution: Save and restore msg_scroll in handle_drop(). +Files: src/ex_docmd.c + +Patch 6.2.092 +Problem: Invalid items appear in the help file tags. (Antonio Colombo) +Solution: Only accept tags with white space before the first "*". +Files: runtime/doc/doctags.c, src/ex_cmds.c + +Patch 6.2.093 +Problem: ":nnoremenu" also defines menu for Visual mode. (Klaus Bosau) +Solution: Check the second command character for an "o", not the third. +Files: src/menu.c + +Patch 6.2.094 +Problem: Can't compile with GTK and tiny features. +Solution: Include handle_drop() and vim_chdirfile() when FEAT_DND is defined. + Do not try to split the window. +Files: src/ex_docmd.c, src/misc2.c + +Patch 6.2.095 +Problem: The message "Cannot go to buffer x" is confusing for ":buf 6". + (Frans Englich) +Solution: Make it "Buffer x does not exist". +Files: src/buffer.c + +Patch 6.2.096 +Problem: Win32: ":let @* = ''" put a newline on the clipboard. (Klaus + Bosau) +Solution: Put zero bytes on the clibpoard for an empty string. +Files: src/ops.c + +Patch 6.2.097 +Problem: Setting or resetting 'insertmode' in a BufEnter autocommand + doesn't always have immediate effect. (Nagger) +Solution: When 'insertmode' is set, set need_start_insertmode, when it's + reset set stop_insert_mode. +Files: src/option.c + +Patch 6.2.098 (after 6.2.097) +Problem: Can't build Vim with tiny features. (Christian J. Robinson) +Solution: Declare stop_insert_mode always. +Files: src/edit.c, src/globals.h + +Patch 6.2.099 (extra) +Problem: Test 49 fails. (Mikolaj Machowski) +Solution: The Polish translation must not change "E116" to "R116". +Files: src/po/pl.po + +Patch 6.2.100 +Problem: "make proto" fails when compiled with the Perl interface. +Solution: Remove "-fno.*" from PERL_CFLAGS, cproto sees it as its option. +Files: src/auto/configure, src/configure.in + +Patch 6.2.101 +Problem: When using syntax folding, opening a file slows down a lot when + it's size increases by only 20%. (Gary Johnson) +Solution: The array with cached syntax states is leaking entries. After + cleaning up the list obtain the current entry again. +Files: src/syntax.c + +Patch 6.2.102 +Problem: The macros equal() and CR conflict with a Carbon header file. +Solution: Rename equal() to equalpos(). Rename CR to CAR. + Do this in the non-extra files only. +Files: src/ascii.h, src/buffer.c, src/charset.c, src/edit.c, src/eval.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_getln.c, src/fileio.c, + src/getchar.c, src/gui.c, src/gui_athena.c, src/gui_gtk_x11.c, + src/gui_motif.c, src/macros.h, src/mark.c, src/message.c, + src/misc1.c, src/misc2.c, src/normal.c, src/ops.c, src/os_unix.c, + src/regexp.c, src/search.c, src/ui.c, src/workshop.c + +Patch 6.2.103 (extra) +Problem: The macros equal() and CR conflict with a Carbon header file. +Solution: Rename equal() to equalpos(). Rename CR to CAR. + Do this in the extra files only. +Files: src/gui_photon.c, src/gui_w48.c + +Patch 6.2.104 +Problem: Unmatched braces in the table with options. +Solution: Move the "}," outside of the #ifdef. (Yakov Lerner) +Files: src/option.c + +Patch 6.2.105 +Problem: When the cursor is past the end of the line when calling + get_c_indent() a crash might occur. +Solution: Don't look past the end of the line. (NJ Verenini) +Files: src/misc1.c + +Patch 6.2.106 +Problem: Tag searching gets stuck on a very long line in the tags file. +Solution: When skipping back to search the first matching tag remember the + offset where searching started looking for a line break. +Files: src/tag.c + +Patch 6.2.107 (extra) +Problem: The NetBeans interface cannot be used on Win32. +Solution: Add support for the NetBeans for Win32. Add support for reading + XPM files on Win32. Also fixes that a sign icon with a space in + the file name did not work through the NetBeans interface. + (Sergey Khorev) + Also: avoid repeating error messages when the connection is lost. +Files: Makefile, runtime/doc/netbeans.txt, src/Make_bc5.mak, + src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/bigvim.bat, src/feature.h, src/gui_beval.c, src/gui_beval.h, + src/gui_w32.c, src/gui_w48.c, src/menu.c, src/nbdebug.c, + src/nbdebug.h, src/netbeans.c, src/os_mswin.c, src/os_win32.h, + src/proto/gui_beval.pro, src/proto/gui_w32.pro, + src/proto/netbeans.pro, src/proto.h, src/version.c, src/vim.h, + src/xpm_w32.c, src/xpm_w32.h + +Patch 6.2.108 +Problem: Crash when giving a message about ignoring case in a tag. (Manfred + Kuehn) +Solution: Use a longer buffer for the message. +Files: src/tag.c + +Patch 6.2.109 +Problem: Compiler warnings with various Amiga compilers. +Solution: Add typecast, prototypes, et al. that are also useful for other + systems. (Flavio Stanchina) +Files: src/eval.c, src/ops.c + +Patch 6.2.110 +Problem: When $LANG includes the encoding, a menu without an encoding name + is not found. +Solution: Also look for a menu file without any encoding. +Files: runtime/menu.vim + +Patch 6.2.111 +Problem: Encoding "cp1251" is not recognized. +Solution: Add "cp1251" to the table of encocings. (Alexey Froloff) +Files: src/mbyte.c + +Patch 6.2.112 +Problem: After applying patches test32 fails. (Antonio Colombo) +Solution: Have "make clean" in the testdir delete *.rej and *.orig files. + Use this when doing "make clean" in the src directory. +Files: src/Makefile, src/testdir/Makefile + +Patch 6.2.113 +Problem: Using ":startinsert" after "$" works like "a" instead of "i". + (Ajit Thakkar) +Solution: Reset "w_curswant" for ":startinsert" and reset o_eol in edit(). +Files: src/edit.c, src/ex_docmd.c + +Patch 6.2.114 +Problem: When stdout is piped through "tee", the size of the screen may not + be correct. +Solution: Use stdin instead of stdout for ioctl() when stdin is a tty and + stdout isn't. +Files: src/os_unix.c + +Patch 6.2.115 (extra) +Problem: Compiler warnings with various Amiga compilers. +Solution: Add typecast, prototypes, et al. Those changes that are + Amiga-specific. (Flavio Stanchina) +Files: src/fileio.c, src/memfile.c, src/os_amiga.c, src/os_amiga.h, + src/vim.h + +Patch 6.2.116 (extra) +Problem: German keyboard with Numlock set different from system startup + causes problems. +Solution: Ignore keys with code 0xff. (Helmut Stiegler) +Files: src/gui_w48.c + +Patch 6.2.117 +Problem: Breakpoints in loops of sourced files and functions are not + detected. (Hari Krishna Dara) +Solution: Check for breakpoints when using lines that were previously read. + (Servatius Brandt) +Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/proto/eval.pro, + src/proto/ex_cmds2.pro + +Patch 6.2.118 (extra) +Problem: Mac: Compiling is done in a non-standard way. +Solution: Use the Unix method for Mac OS X, with autoconf. Add "CARBONGUI" + to Makefile and configure. (Eric Kow) + Move a few prototypes from os_mac.pro to gui_mac.pro. +Files: src/Makefile, src/auto/configure, src/configure.in, + src/config.mk.in, src/gui_mac.c, src/os_mac.h, src/os_macosx.c, + src/proto/gui_mac.pro, src/proto/os_mac.pro, + src/infplist.xml, src/vim.h + +Patch 6.2.119 (after 6.2.107) +Problem: When packing the MS-Windows archives a few files are missing. + (Guopeng Wen) +Solution: Add gui_beval.* to the list of generic source files. +Files: Makefile + +Patch 6.2.120 +Problem: Win32 GUI: The console dialogs are not supported on MS-Windows, + disabling the 'c' flag of 'guioptions'. (Servatius Brandt) +Solution: Define FEAT_CON_DIALOG also for GUI-only builds. +Files: src/feature.h + +Patch 6.2.121 (after 6.2.118) +Problem: Not all make programs support "+=". (Charles Campbell) +Solution: Use a normal assignment. +Files: src/Makefile + +Patch 6.2.122 (after 6.2.119) +Problem: Not all shells can expand [^~]. File missing. (Guopeng Wen) +Solution: Use a simpler pattern. Add the Aap recipe for the maze program + and a clean version of the source code. +Files: Makefile, runtime/macros/maze/Makefile, + runtime/macros/maze/README.txt, runtime/macros/maze/main.aap, + runtime/macros/maze/mazeclean.c + +Patch 6.2.123 (after 6.2.118) +Problem: Running configure fails. (Tony Leneis) +Solution: Change "==" to "=" for a test. +Files: src/auto/configure, src/configure.in + +Patch 6.2.124 (after 6.2.121)(extra) +Problem: Mac: Recursive use of M4FLAGS causes problems. When running Vim + directly it can't find the runtime files. (Emily Jackson) + Using GNU constructs causes warnings with other make programs. + (Ronald Schild) +Solution: Use another name for the M4FLAGS variable. + Don't remove "Vim.app" from the path. + Update the explanation for compiling on the Mac. (Eric Kow) + Don't use $(shell ) and $(addprefix ). +Files: src/INSTALLmac.txt, src/Makefile, src/misc1.c + +Patch 6.2.125 (after 6.2.107) +Problem: The "winsock2.h" file isn't always available. +Solution: Don't include this header file. +Files: src/netbeans.c + +Patch 6.2.126 +Problem: Typing CTRL-C at a confirm() prompt doesn't throw an exception. +Solution: Reset "mapped_ctrl_c" in get_keystroke(), so that "got_int" is set + in _OnChar(). +Files: src/misc1.c + +Patch 6.2.127 (extra) +Problem: Win32 console: Typing CTRL-C doesn't throw an exception. +Solution: Set got_int immediately when CTRL-C is typed, don't wait for + mch_breakcheck() being called. +Files: src/os_win32.c + +Patch 6.2.128 (after 6.2.118) +Problem: src/auto/configure is not consistent with src/configure.in. +Solution: Use the newly generated configure script. +Files: src/auto/configure + +Patch 6.2.129 +Problem: When 'number' is set 'wrapmargin' does not work Vi-compatible. + (Yasuhiro Matsumoto) +Solution: Reduce the textwidth when 'number' is set. Also for 'foldcolumn' + and similar things. +Files: src/edit.c + +Patch 6.2.130 (extra) +Problem: Win32 console: When 'restorescreen' is not set exiting Vim causes + the screen to be cleared. (Michael A. Mangino) +Solution: Don't clear the screen when exiting and 'restorescreen' isn't set. +Files: src/os_win32.c + +Patch 6.2.131 (extra) +Problem: Win32: Font handles are leaked. +Solution: Free italic, bold and bold-italic handles before overwriting them. + (Michael Wookey) +Files: src/gui_w48.c + +Patch 6.2.132 (extra) +Problem: Win32: console version doesn't work on latest Windows Server 2003. +Solution: Copy 12000 instead of 15000 cells at a time to avoid running out + of memory. +Files: src/os_win32.c + +Patch 6.2.133 +Problem: When starting the GUI a bogus error message about 'imactivatekey' + may be given. +Solution: Only check the value of 'imactivatekey' when the GUI is running. +Files: src/gui.c, src/option.c + +Patch 6.2.134 (extra) +Problem: Win32: When scrolling parts of the window are redrawn when this + isn't necessary. +Solution: Only invalidate parts of the window when they are obscured by + other windows. (Michael Wookey) +Files: src/gui_w48.c + +Patch 6.2.135 +Problem: An item <> in the ":command" argument is interpreted as <args>. +Solution: Avoid that <> is recognized as <args>. +Files: src/ex_docmd.c + +Patch 6.2.136 +Problem: ":e ++enc=latin1 newfile" doesn't set 'fenc' when the file doesn't + exist. (Miroslaw Dobrzanski-Neumann) +Solution: Set 'fileencoding' to the specified encoding when editing a file + that does not exist. +Files: src/fileio.c + +Patch 6.2.137 +Problem: "d:cmd<CR>" cannot be repeated with ".". Breaks repeating "d%" + when using the matchit plugin. +Solution: Store the command to be repeated. This is restricted to + single-line commands. +Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/vim.h + +Patch 6.2.138 (extra) +Problem: Compilation problem on VMS with dynamic buffer on the stack. +Solution: Read one byte less than the size of the buffer, so that we can + check for the string length without an extra buffer. +Files: src/os_vms.c + +Patch 6.2.139 +Problem: Code is repeated in the two Perl files. +Solution: Move common code from if_perl.xs and if_perlsfio.c to vim.h. + Also fix a problem with generating prototypes. +Files: src/if_perl.xs, src/if_perlsfio.c, src/vim.h + +Patch 6.2.140 (after 6.2.121) +Problem: Mac: Compiling with Python and Perl doesn't work. +Solution: Adjust the configure check for Python to use "-framework Python" + for Python 2.3 on Mac OS/X. + Move "-ldl" after "DynaLoader.a" in the link command. + Change "perllibs" to "PERL_LIBS". +Files: src/auto/configure, src/configure.in, src/config.mk.in + +Patch 6.2.141 (extra) +Problem: Mac: The b_FSSpec field is sometimes unused. +Solution: Change the #ifdef to FEAT_CW_EDITOR and defined it in feature.h +Files: src/fileio.c, src/gui_mac.c, src/structs.h, src/feature.h + +Patch 6.2.142 (after 6.2.124) +Problem: Mac: building without GUI through configure doesn't work. + When the system is slow, unpacking the resource file takes too + long. +Solution: Don't always define FEAT_GUI_MAC when MACOS is defined, define it + in the Makefile. + Add a configure option to skip Darwin detection. + Use a Python script to unpack the resources to avoid a race + condition. (Taro Muraoka) +Files: Makefile, src/Makefile, src/auto/configure, src/configure.in, + src/dehqx.py, src/vim.h + +Patch 6.2.143 +Problem: Using "K" on Visually selected text doesn't work if it ends in + a multi-byte character. +Solution: Include all the bytes of the last character. (Taro Muraoka) +Files: src/normal.c + +Patch 6.2.144 +Problem: When "g:html_use_css" is set the HTML header generated by the + 2html script is wrong. +Solution: Add the header after adding HREF for links. + Also use ":normal!" instead of ":normal" to avoid mappings + getting in the way. +Files: runtime/syntax/2html.vim + +Patch 6.2.145 (after 6.2.139) +Problem: Undefining "bool" doesn't work for older systems. (Wojtek Pilorz) +Solution: Only undefine "bool" on Mac OS. +Files: src/vim.h + +Patch 6.2.146 +Problem: On some systems the prototype for iconv() is wrong, causing a + warning message. +Solution: Use a cast (void *) to avoid the warning. (Charles Campbell) +Files: src/fileio.c, src/mbyte.c + +Patch 6.2.147 +Problem: ":s/pat/\=col('.')" always replaces with "1". +Solution: Set the cursor to the start of the match before substituting. + (Helmut Stiegler) +Files: src/ex_cmds.c + +Patch 6.2.148 +Problem: Can't break an Insert into several undoable parts. +Solution: Add the CTRL-G u command. +Files: runtime/doc/insert.txt, src/edit.c + +Patch 6.2.149 +Problem: When the cursor is on a line past 21,474,748 the indicated + percentage of the position is invalid. With that many lines + "100%" causes a negative cursor line number, resulting in a crash. + (Daniel Goujot) +Solution: Divide by 100 instead of multiplying. Avoid overflow when + computing the line number for "100%". +Files: src/buffer.c, src/ex_cmds2.c, src/normal.c + +Patch 6.2.150 +Problem: When doing "vim - < file" lines are broken at NUL chars. + (Daniel Goujot) +Solution: Change NL characters back to NUL when reading from the temp + buffer. +Files: src/fileio.c + +Patch 6.2.151 +Problem: When doing "vim --remote +startinsert file" some commands are + inserted as text. (Klaus Bosau) +Solution: Put all the init commands in one Ex line, not using a <CR>, so + that Insert mode isn't started too early. +Files: src/main.c + +Patch 6.2.152 +Problem: The cursor() function doesn't reset the column offset for + 'virtualedit'. +Solution: Reset the offset to zero. (Helmut Stiegler) +Files: src/eval.c + +Patch 6.2.153 +Problem: Win32: ":lang german" doesn't use German messages. +Solution: Add a table to translate the Win32 language names to two-letter + language codes. +Files: src/ex_cmds2.c + +Patch 6.2.154 +Problem: Python bails out when giving a warning message. (Eugene + Minkovskii) +Solution: Set sys.argv[] to an empty string. +Files: src/if_python.c + +Patch 6.2.155 +Problem: Win32: Using ":tjump www" in a help file gives two results. + (Dave Roberts) +Solution: Ignore differences between slashes and backslashes when checking + for identical tag matches. +Files: src/tag.c + +Patch 6.2.156 (after 6.2.125) +Problem: Win32: Netbeans fails to build, EINTR is not defined. +Solution: Redefine EINTR to WSAEINTR. (Mike Williams) +Files: src/netbeans.c + +Patch 6.2.157 +Problem: Using "%p" in 'errorformat' gives a column number that is too + high. +Solution: Set the flag to use the number as a virtual column. (Lefteris + Koutsoloukas) +Files: src/quickfix.c + +Patch 6.2.158 +Problem: The sed command on Solaris and HPUX doesn't work for a line that + doesn't end in a newline. +Solution: Add a newline when feeding text to sed. (Mark Waggoner) +Files: src/configure.in, src/auto/configure + +Patch 6.2.159 +Problem: When using expression folding and 'foldopen' is "undo" an undo + command doesn't always open the fold. +Solution: Save and restore the KeyTyped variable when evaluating 'foldexpr'. + (Taro Muraoka) +Files: src/fold.c + +Patch 6.2.160 +Problem: When 'virtualedit' is "all" and 'selection is "exclusive", + selecting a double-width character below a single-width character + may cause a crash. +Solution: Avoid overflow on unsigned integer decrement. (Taro Muraoka) +Files: src/normal.c + +Patch 6.2.161 (extra) +Problem: VMS: Missing header file. Reading input busy loops. +Solution: Include termdef.h. Avoid the use of a wait function in + vms_read(). (Frank Ries) +Files: src/os_unix.h, src/os_vms.c + +Patch 6.2.162 +Problem: ":redraw" doesn't always display the text that includes the cursor + position, e.g. after ":call cursor(1, 0)". (Eugene Minkovskii) +Solution: Call update_topline() before redrawing. +Files: src/ex_docmd.c + +Patch 6.2.163 +Problem: "make install" may also copy AAPDIR directories. +Solution: Delete AAPDIR directories, just like CVS directories. +Files: src/Makefile + +Patch 6.2.164 (after 6.2.144) +Problem: When "g:html_use_css" is set the HTML header generated by the + 2html script is still wrong. +Solution: Search for a string instead of jumping to a fixed line number. + Go to the start of the line before inserting the header. + (Jess Thrysoee) +Files: runtime/syntax/2html.vim + +Patch 6.2.165 +Problem: The configure checks hang when using autoconf 2.57. +Solution: Invoke AC_PROGRAM_EGREP to set $EGREP. (Aron Griffis) +Files: src/auto/configure, src/configure.in + +Patch 6.2.166 +Problem: When $GZIP contains "-N" editing compressed files doesn't work + properly. +Solution: Add "-n" to "gzip -d" to avoid restoring the file name. (Oyvind + Holm) +Files: runtime/plugin/gzip.vim + +Patch 6.2.167 +Problem: The Python interface leaks memory when assigning lines to a + buffer. (Sergey Khorev) +Solution: Do not copy the line when calling ml_replace(). +Files: src/if_python.c + +Patch 6.2.168 +Problem: Python interface: There is no way to get the indices from a range + object. +Solution: Add the "start" and "end" attributes. (Maurice S. Barnum) +Files: src/if_python.c, runtime/doc/if_pyth.txt + +Patch 6.2.169 +Problem: The prototype for _Xmblen() appears in a recent XFree86 header + file, causing a warning for our prototype. (Hisashi T Fujinaka) +Solution: Move the prototype to an osdef file, so that it's filtered out. +Files: src/mbyte.c, src/osdef2.h.in + +Patch 6.2.170 +Problem: When using Sun WorkShop the current directory isn't changed to + where the file is. +Solution: Set the 'autochdir' option when using WorkShop. And avoid using + the basename when 'autochdir' is not set. +Files: src/gui_x11.c, src/ex_cmds.c + +Patch 6.2.171 (after 6.2.163) +Problem: The "-or" argument of "find" doesn't work for SysV systems. +Solution: Use "-o" instead. (Gordon Prieur) +Files: src/Makefile + +Patch 6.2.172 (after 6.2.169) +Problem: The prototype for _Xmblen() still causes trouble. +Solution: Include the X11 header file that defines the prototype. +Files: src/osdef2.h.in, src/osdef.sh + +Patch 6.2.173 (extra) +Problem: Win32: Ruby interface doesn't work with Ruby 1.8.0 for other + compilers than MSVC. +Solution: Fix the BC5, Cygwin and Mingw makefiles. (Dan Sharp) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak + +Patch 6.2.174 +Problem: After the ":intro" message only a mouse click in the last line + gets past the hit-return prompt. +Solution: Accept a click at or below the hit-return prompt. +Files: src/gui.c, src/message.c + +Patch 6.2.175 +Problem: Changing 'backupext' in a *WritePre autocommand doesn't work. + (William Natter) +Solution: Move the use of p_bex to after executing the *WritePre + autocommands. Also avoids reading allocated memory after freeing. +Files: src/fileio.c + +Patch 6.2.176 +Problem: Accented characters in translated help files are not handled + correctly. (Fabien Vayssiere) +Solution: Include "192-255" in 'iskeyword' for the help window. +Files: src/ex_cmds.c + +Patch 6.2.177 (extra) +Problem: VisVim: Opening a file with a space in the name doesn't work. (Rob + Retter) Arbitrary commands are being executed. (Neil Bird) +Solution: Put a backslash in front of every space in the file name. + (Gerard Blais) Terminate the CTRL-\ CTRL-N command with a NUL. +Files: src/VisVim/Commands.cpp, src/VisVim/VisVim.rc + +Patch 6.2.178 +Problem: People who don't know how to exit Vim try pressing CTRL-C. +Solution: Give a message how to exit Vim when CTRL-C is pressed and it + doesn't cancel anything. +Files: src/normal.c + +Patch 6.2.179 (extra) +Problem: The en_gb messages file isn't found on case sensitive systems. +Solution: Rename en_gb to en_GB. (Mike Williams) +Files: src/po/en_gb.po, src/po/en_GB.po, src/po/Make_ming.mak, + src/po/Make_mvc.mak, src/po/Makefile, src/po/README_mvc.txt + +Patch 6.2.180 +Problem: Compiling with GTK2 on Win32 doesn't work. +Solution: Include gdkwin32.h instead of gdkx.h. (Srinath Avadhanula) +Files: src/gui_gtk.c, src/gui_gtk_f.c, src/gui_gtk_x11.c, src/mbyte.c + +Patch 6.2.181 (after 6.2.171) +Problem: The "-o" argument of "find" has lower priority than the implied + "and" with "-print". +Solution: Add parenthesis around the "-o" expression. (Gordon Prieur) +Files: src/Makefile + +Patch 6.2.182 (after 6.2.094) +Problem: Compilation with tiny features fails because of missing + get_past_head() function. +Solution: Adjust the #ifdef for get_past_head(). +Files: src/misc1.c + +Patch 6.2.183 (after 6.2.178) +Problem: Warning for char/unsigned char mixup. +Solution: Use MSG() instead of msg(). (Tony Leneis) +Files: src/normal.c + +Patch 6.2.184 +Problem: With 'formatoptions' set to "1aw" inserting text may cause the + paragraph to be ended. (Alan Schmitt) +Solution: Temporarily add an extra space to make the paragraph continue + after moving the word after the cursor to the next line. + Also format when pressing Esc. +Files: src/edit.c, src/normal.c, src/proto/edit.pro + +Patch 6.2.185 +Problem: Restoring a session with zero-height windows does not work + properly. (Charles Campbell) +Solution: Accept a zero argument to ":resize" as intended. Add a window + number argument to ":resize" to be able to set the size of other + windows, because the current window cannot be zero-height. + Fix the explorer plugin to avoid changing the window sizes. Add + the winrestcmd() function for this. +Files: runtime/doc/eval.txt, runtime/plugin/explorer.vim, src/eval.c, + src/ex_cmds.h, src/ex_docmd.c, src/proto/window.pro, src/window.c + +Patch 6.2.186 (after 6.2.185) +Problem: Documentation file eval.txt contains examples without indent. +Solution: Insert the indent. Also fix other mistakes. +Files: runtime/doc/eval.txt + +Patch 6.2.187 +Problem: Using Insure++ reveals a number of bugs. (Dominuque Pelle) +Solution: Initialize variables where needed. Free allocated memory to avoid + leaks. Fix comparing tags to avoid reading past allocated memory. +Files: src/buffer.c, src/diff.c, src/fileio.c, src/mark.c, src/misc1.c, + src/misc2.c, src/ops.c, src/option.c, src/tag.c, src/ui.c + +Patch 6.2.188 (extra) +Problem: MS-Windows: Multi-byte characters in a filename cause trouble for + the window title. +Solution: Return when the wide function for setting the title did its work. +Files: src/gui_w48.c + +Patch 6.2.189 +Problem: When setting 'viminfo' after editing a new buffer its marks are + not stored. (Keith Roberts) +Solution: Set the "b_marks_read" flag when skipping to read marks from the + viminfo file. +Files: src/fileio.c + +Patch 6.2.190 +Problem: When editing a compressed files, marks are lost. +Solution: Add the ":lockmarks" modifier and use it in the gzip plugin. + Make exists() also check for command modifiers, so that the + existence of ":lockmarks" can be checked for. + Also add ":keepmarks" to avoid that marks are deleted when + filtering text. + When deleting lines put marks 'A - 'Z and '0 - '9 at the first + deleted line instead of clearing the mark. They were kept in the + viminfo file anyway. + Avoid that the gzip plugin puts deleted text in registers. +Files: runtime/doc/motion.txt, runtime/plugin/gzip.vim, src/ex_cmds.c, + src/ex_docmd.c, src/mark.c, src/structs.h + +Patch 6.2.191 +Problem: The intro message is outdated. Information about sponsoring and + registering is missing. +Solution: Show info about sponsoring and registering Vim in the intro + message now and then. Add help file about sponsoring. +Files: runtime/doc/help.txt, runtime/doc/sponsor.txt, runtime/doc/tags, + runtime/menu.vim, src/version.c + +Patch 6.2.192 +Problem: Using CTRL-T and CTRL-D with "gR" messes up the text. (Jonahtan + Hankins) +Solution: Avoid calling change_indent() recursively. +Files: src/edit.c + +Patch 6.2.193 +Problem: When recalling a search pattern from the history from a ":s,a/c," + command the '/' ends the search string. (JC van Winkel) +Solution: Store the separator character with the history entries. Escape + characters when needed, replace the old separator with the new one. + Also fixes that recalling a "/" search for a "?" command messes up + trailing flags. +Files: src/eval.c, src/ex_getln.c, src/normal.c, src/proto/ex_getln.pro, + src/search.c, src/tag.c + +Patch 6.2.194 (after 6.2.068) +Problem: For NetBeans, instead of writing the file and sending an event + about it, tell NetBeans to write the file. +Solution: Add the "save" command, "netbeansBuffer" command and + "buttonRelease" event to the netbeans protocol. Updated the + interface to version 2.2. (Gordon Prieur) + Also: open a fold when the cursor has been positioned. + Also: fix memory leak, free result of nb_quote(). +Files: runtime/doc/netbeans.txt, src/fileio.c, src/netbeans.c, + src/normal.c, src/proto/netbeans.pro, src/structs.h + +Patch 6.2.195 (after 6.2.190) +Problem: Compiling fails for missing CPO_REMMARK symbol. +Solution: Add the patch I forgot to include... +Files: src/option.h + +Patch 6.2.196 (after 6.2.191) +Problem: Rebuilding the documentation doesn't use the sponsor.txt file. +Solution: Add sponsor.txt to the Makefile. (Christian J. Robinson) +Files: runtime/doc/Makefile + +Patch 6.2.197 +Problem: It is not possible to force a redraw of status lines. (Gary + Johnson) +Solution: Add the ":redrawstatus" command. +Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, + src/screen.c + +Patch 6.2.198 +Problem: A few messages are not translated. (Ernest Adrogue) +Solution: Mark the messages to be translated. +Files: src/ex_cmds.c + +Patch 6.2.199 (after 6.2.194) +Problem: Vim doesn't work perfectly well with NetBeans. +Solution: When NetBeans saves the file, reset the timestamp to avoid "file + changed" warnings. Close a buffer in a proper way. Don't try + giving a debug message with an invalid pointer. Send a + newDotAndMark message when needed. Report a change by the "r" + command to NetBeans. (Gordon Prieur) +Files: src/netbeans.c, src/normal.c + +Patch 6.2.200 +Problem: When recovering a file, 'fileformat' is always the default, thus + writing the file may result in differences. (Penelope Fudd) +Solution: Before recovering the file try reading the original file to obtain + the values of 'fileformat', 'fileencoding', etc. +Files: src/memline.c + +Patch 6.2.201 +Problem: When 'autowriteall' is set ":qall" still refuses to exit if there + is a modified buffer. (Antoine Mechelynck) +Solution: Attempt writing modified buffers as intended. +Files: src/ex_cmds2.c + +Patch 6.2.202 +Problem: Filetype names of CHILL and ch script are confusing. +Solution: Rename "ch" to "chill" and "chscript" to "ch". +Files: runtime/filetype.vim, runtime/makemenu.vim, runtime/synmenu.vim + runtime/syntax/ch.vim, runtime/syntax/chill.vim + +Patch 6.2.203 +Problem: With characterwise text that has more than one line, "3P" works + wrong. "3p" has the same problem. There also is a display + problem. (Daniel Goujot) +Solution: Perform characterwise puts with a count in the right position. +Files: src/ops.c + +Patch 6.2.204 (after 6.2.086) +Problem: "]]" in a file with closed folds moves to the end of the file. + (Nam SungHyun) +Solution: Find one position in each closed fold, then move to after the fold. +Files: src/search.c + +Patch 6.2.205 (extra) +Problem: MS-Windows: When the taskbar is at the left or top of the screen, + the Vim window placement is wrong. +Solution: Compute the size and position of the window correctly. (Taro + Muraoka) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.2.206 +Problem: Multi-byte characters cannot be used as hotkeys in a console + dialog. (Mattias Erkisson) +Solution: Handle multi-byte characters properly. Also put () or [] around + default hotkeys. +Files: src/message.c, src/macros.h + +Patch 6.2.207 +Problem: When 'encoding' is a multi-byte encoding, expanding an + abbreviation that starts where insertion started results in + characters before the insertion to be deleted. (Xiangjiang Ma) +Solution: Stop searching leftwards for the start of the word at the position + where insertion started. +Files: src/getchar.c + +Patch 6.2.208 +Problem: When using fold markers, three lines in a row have the start + marker and deleting the first one with "dd", a nested fold is not + deleted. (Kamil Burzynski) + Using marker folding, a level 1 fold doesn't stop when it is + followed by "{{{2", starting a level 2 fold. +Solution: Don't stop updating folds at the end of a change when the nesting + level of folds is larger than the fold level. + Correctly compute the number of folds that start at "{{{2". + Also avoid a crash for a NULL pointer. +Files: src/fold.c + +Patch 6.2.209 +Problem: A bogus fold is created when using "P" while the cursor is in the + middle of a closed fold. (Kamil Burzynski) +Solution: Correct the line number where marks are modified for closed folds. +Files: src/ops.c + +Patch 6.2.210 (extra) +Problem: Mac OSX: antialiased fonts are not supported. +Solution: Add the 'antialias' option to switch on antialiasing on Mac OSX + 10.2 and later. (Peter Cucka) +Files: runtime/doc/options.txt, src/gui_mac.c, src/option.h, src/option.c + +Patch 6.2.211 (extra) +Problem: Code for handling file dropped on Vim is duplicated. +Solution: Move the common code to gui_handle_drop(). + Add code to drop the files in the window under the cursor. + Support drag&drop on the Macintosh. (Taro Muraoka) + When dropping a directory name edit that directory (using the + explorer plugin) + Fix that changing directory with Shift pressed didn't work for + relative path names. +Files: src/fileio.c, src/gui.c, src/gui_gtk_x11.c, src/gui_mac.c, + src/gui_w48.c, src/proto/fileio.pro, src/proto/gui.pro + +Patch 6.2.212 (after 6.2.199) +Problem: NetBeans: Replacing with a count is not handled correctly. +Solution: Move reporting the change outside of the loop for the count. + (Gordon Prieur) +Files: src/normal.c + +Patch 6.2.213 (after 6.2.208) +Problem: Using marker folding, "{{{1" doesn't start a new fold when already + at fold level 1. (Servatius Brandt) +Solution: Correctly compute the number of folds that start at "{{{1". +Files: src/fold.c + +Patch 6.2.214 (after 6.2.211) (extra) +Problem: Warning for an unused variable. +Solution: Delete the declaration. (Bill McCarthy) +Files: src/gui_w48.c + +Patch 6.2.215 +Problem: NetBeans: problems saving an unmodified file. +Solution: Add isNetbeansModified() function. Disable netbeans_unmodified(). + (Gordon Prieur) +Files: src/fileio.c, src/netbeans.c, src/proto/netbeans.pro, + runtime/doc/netbeans.txt, runtime/doc/tags + +Patch 6.2.216 (after 6.2.206) +Problem: Multi-byte characters stil cannot be used as hotkeys in a console + dialog. (Mattias Erkisson) +Solution: Make get_keystroke() handle multi-byte characters. +Files: src/misc1.c + +Patch 6.2.217 +Problem: GTK: setting the title doesn't always work correctly. +Solution: Invoke gui_mch_settitle(). (Tomas Stehlik) +Files: src/os_unix.c + +Patch 6.2.218 +Problem: Warning for function without prototype. +Solution: Add argument types to the msgCB field of the BalloonEval struct. +Files: src/gui_beval.h + +Patch 6.2.219 +Problem: Syntax highlighting hangs on an empty match of an item with a + nextgroup. (Charles Campbell) +Solution: Remember that the item has already matched and don't match it + again at the same position. +Files: src/syntax.c + +Patch 6.2.220 +Problem: When a Vim server runs in a console a remote command isn't handled + before a key is typed. (Joshua Neuheisel) +Solution: Don't try reading more input when a client-server command has been + received. +Files: src/os_unix.c + +Patch 6.2.221 +Problem: No file name completion for ":cscope add". +Solution: Add the XFILE flag to ":cscope". (Gary Johnson) +Files: src/ex_cmds.h + +Patch 6.2.222 +Problem: Using "--remote" several times on a row only opens some of the + files. (Dany St-Amant) +Solution: Don't delete all typehead when the server receives a command from + a client, only delete typed characters. +Files: src/main.c + +Patch 6.2.223 +Problem: Cscope: Avoid a hang when cscope waits for a response while Vim + waits for a prompt. + Error messages from Cscope mess up the display. +Solution: Detect the hit-enter message and respond by sending a return + character to cscope. (Gary Johnson) + Use EMSG() and strerror() when possible. Replace perror() with + PERROR() everywhere, add emsg3(). +Files: src/diff.c, src/if_cscope.c, src/integration.c, src/message.c, + src/proto/message.pro, src/misc2.c, src/netbeans.c, src/vim.h + +Patch 6.2.224 +Problem: Mac: Can't compile with small features. (Axel Kielhorn) +Solution: Also include vim_chdirfile() when compiling for the Mac. +Files: src/misc2.c + +Patch 6.2.225 +Problem: NetBeans: Reported modified state isn't exactly right. +Solution: Report a file being modified in the NetBeans way. +Files: src/netbeans.c + +Patch 6.2.226 (after 6.2.107) (extra) +Problem: The "ws2-32.lib" file isn't always available. +Solution: Use "WSock32.lib" instead. (Taro Muraoka, Dan Sharp) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak + +Patch 6.2.227 (extra) +Problem: The "PC" symbol is defined but not used anywhere. +Solution: Remove "-DPC" from the makefiles. +Files: src/Make_bc3.mak, src/Make_bc5.mak, src/Make_cyg.mak, + src/Make_ming.mak + +Patch 6.2.228 +Problem: Receiving CTRL-\ CTRL-N after typing "f" or "m" doesn't switch Vim + back to Normal mode. Same for CTRL-\ CTRL-G. +Solution: Check if the character typed after a command is CTRL-\ and obtain + another character to check for CTRL-N or CTRL-G, waiting up to + 'ttimeoutlen' msec. +Files: src/normal.c + +Patch 6.2.229 +Problem: ":function" with a name that uses magic curlies does not work + inside a function. (Servatius Brandt) +Solution: Skip over the function name properly. +Files: src/eval.c + +Patch 6.2.230 (extra) +Problem: Win32: a complex pattern may cause a crash. +Solution: Use __try and __except to catch the exception and handle it + gracefully, when possible. Add myresetstkoflw() to reset the + stack overflow. (Benjamin Peterson) +Files: src/Make_bc5.mak, src/os_mswin.c src/os_win32.c, src/os_win32.h, + src/proto/os_win32.pro, src/regexp.c + +Patch 6.2.231 (after 6.2.046) +Problem: Various problems when an error exception is raised from within a + builtin function. When it is invoked while evaluating arguments + to a function following arguments are still evaluated. When + invoked with a line range it will be called for remaining lines. +Solution: Update "force_abort" also after calling a builtin function, so + that aborting() always returns the correct value. (Servatius + Brandt) +Files: src/eval.c, src/ex_eval.c, src/proto/ex_eval.pro, + src/testdir/test49.ok, src/testdir/test49.vim + +Patch 6.2.232 +Problem: ":python vim.command('python print 2*2')" crashes Vim. (Eugene + Minkovskii) +Solution: Disallow executing a Python command recursively and give an error + message. +Files: src/if_python.c + +Patch 6.2.233 +Problem: On Mac OSX adding -pthread for Python only generates a warning. + The test for Perl threads rejects Perl while it's OK. + Tcl doesn't work at all. + The test for Ruby fails if ruby exists but there are no header + files. The Ruby library isn't detected properly +Solution: Avoid adding -pthread on Mac OSX. Accept Perl threads when it's + not the 5.5 threads. + Use the Tcl framework for header files. For Ruby rename cWindow + to cVimWindow to avoid a name clash. (Ken Scott) + Only enable Ruby when the header files can be found. Use "-lruby" + instead of "libruby.a" when it can't be found. +Files: src/auto/configure, src/configure.in, src/if_ruby.c + +Patch 6.2.234 +Problem: GTK 2 GUI: ":sp" and the ":q" leaves the cursor on the command + line. +Solution: Flush output before removing scrollbars. Also do this in other + places where gui_mch_*() functions are invoked. +Files: src/ex_cmds.c, src/option.c, src/window.c + +Patch 6.2.235 (extra) +Problem: Win32: Cursor isn't removed with a 25x80 window and doing: + "1830ia<Esc>400a-<Esc>0w0". (Yasuhiro Matsumoto) +Solution: Remove the call to gui_undraw_cursor() from gui_mch_insert_lines(). +Files: src/gui_w48.c + +Patch 6.2.236 +Problem: Using gvim with Agide gives "connection lost" error messages. +Solution: Only give the "connection lost" message when the buffer was once + owned by NetBeans. +Files: src/netbeans.c, src/structs.h + +Patch 6.2.237 +Problem: GTK 2: Thai text is drawn wrong. It changes when moving the + cursor over it. +Solution: Disable the shaping engine, it moves combining characters to a + wrong position and combines characters, while drawing the cursor + doesn't combine characters. +Files: src/gui_gtk_x11.c + +Patch 6.2.238 (after 6.2.231) +Problem: ":function" does not work inside a while loop. (Servatius Brandt) +Solution: Add get_while_line() and pass it to do_one_cmd() when in a while + loop, so that all lines are stored and can be used again when + repeating the loop. + Adjust test 49 so that it checks for the fixed problems. + (Servatius Brandt) +Files: src/digraph.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro, + src/testdir/test49.in, src/testdir/test49.ok, + src/testdir/test49.vim + +Patch 6.2.239 +Problem: GTK 2: With closed folds the arrow buttons of a vertical scrollbar + often doesn't scroll. (Moshe Kaminsky) +Solution: Hackish solution: Detect that the button was pressed from the + mouse pointer position. +Files: src/gui_gtk.c, src/gui.c + +Patch 6.2.240 +Problem: GTK 2: Searching for bitmaps for the toolbar doesn't work as with + other systems. Need to explicitly use "icon=name". (Ned Konz, + Christian J. Robinson) +Solution: Search for icons like done for Motif. +Files: src/gui_gtk.c + +Patch 6.2.241 +Problem: GTK 2: Search and Search/Replace dialogs are synced, that makes no + sense. Buttons are sometimes greyed-out. (Jeremy Messenger) +Solution: Remove the code to sync the two dialogs. Adjust the code to react + to an empty search string to also work for GTK2. (David Necas) +Files: src/gui_gtk.c + +Patch 6.2.242 +Problem: Gnome: "vim --help" only shows the Gnome arguments, not the Vim + arguments. +Solution: Don't let the Gnome code remove the "--help" argument and don't + exit at the end of usage(). +Files: src/gui_gtk_x11.c, src/main.c + +Patch 6.2.243 (extra) +Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt. +Solution: Move the dropped files to the global argument list, instead of the + usual drop handling. (Eckehard Berns) +Files: src/main.c, src/gui_mac.c + +Patch 6.2.244 +Problem: ':echo "\xf7"' displays the illegal byte as if it was a character + and leaves "cho" after it. +Solution: When checking the length of a UTF-8 byte sequence and it's shorter + than the number of bytes available, assume it's an illegal byte. +Files: src/mbyte.c + +Patch 6.2.245 +Problem: Completion doesn't work for ":keepmarks" and ":lockmarks". +Solution: Add the command modifiers to the table of commands. (Madoka + Machitani) +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 6.2.246 +Problem: Mac: Starting Vim from Finder doesn't show error messages. +Solution: Recognize that output is being displayed by stderr being + "/dev/console". (Eckehard Berns) +Files: src/main.c, src/message.c + +Patch 6.2.247 (after 6.2.193) +Problem: When using a search pattern from the viminfo file the last + character is replaced with a '/'. +Solution: Store the separator character in the right place. (Kelvin Lee) +Files: src/ex_getln.c + +Patch 6.2.248 +Problem: GTK: When XIM is enabled normal "2" and keypad "2" cannot be + distinguished. +Solution: Detect that XIM changes the keypad key to the expected ASCII + character and fall back to the non-XIM code. (Neil Bird) +Files: src/gui_gtk_x11.c, src/mbyte.c, src/proto/mbyte.pro + +Patch 6.2.249 +Problem: ":cnext" moves to the error in the next file, but there is no + method to go back. +Solution: Add ":cpfile" and ":cNfile". +Files: src/ex_cmds.h, src/quickfix.c, src/vim.h, runtime/doc/quickfix.txt + +Patch 6.2.250 +Problem: Memory leaks when using signs. (Xavier de Gaye) +Solution: Delete the list of signs when unloading a buffer. +Files: src/buffer.c + +Patch 6.2.251 +Problem: GTK: The 'v' flag in 'guioptions' doesn't work. (Steve Hall) + Order of buttons is reversed for GTK 2.2.4. Don't always get + focus back after handling a dialog. +Solution: Make buttons appear vertically when desired. Reverse the order in + which buttons are added to a dialog. Move mouse pointer around + when the dialog is done and we don't have focus. +Files: src/gui_gtk.c + +Patch 6.2.252 (extra, after 6.2.243) +Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt for + Mac OS classic. +Solution: Remove the #ifdef from the code that fixes it for Mac OSX. +Files: src/gui_mac.c + +Patch 6.2.253 +Problem: When 'tagstack' is not set a ":tag id" command does not work after + a ":tjump" command. +Solution: Set "new_tag" when 'tagstack' isn't set. (G. Narendran) +Files: src/tag.c + +Patch 6.2.254 +Problem: May run out of space for error messages. +Solution: Keep room for two more bytes. +Files: src/quickfix.c + +Patch 6.2.255 +Problem: GTK: A new item in the popup menu is put just after instead of + just before the right item. (Gabriel Zachmann) +Solution: Don't increment the menu item index. +Files: src/gui_gtk.c + +Patch 6.2.256 +Problem: Mac: "macroman" encoding isn't recognized, need to use + "8bit-macroman. +Solution: Recognize "macroman" with an alias "mac". (Eckehard Berns) +Files: src/mbyte.c + +Patch 6.2.257 (after 6.2.250) +Problem: Signs are deleted for ":bdel", but they could still be useful. +Solution: Delete signs only for ":bwipe". +Files: src/buffer.c + +Patch 6.2.258 +Problem: GUI: can't disable (grey-out) a popup menu item. (Ajit Thakkar) +Solution: Loop over the popup menus for all modes. +Files: src/menu.c + +Patch 6.2.259 +Problem: If there are messages when exiting, on the console there is a + hit-enter prompt while the message can be read; in the GUI the + message may not be visible. +Solution: Use the hit-enter prompt when there is an error message from + writing the viminfo file or autocommands, or when there is any + output in the GUI and 'verbose' is set. Don't use a hit-enter + prompt for the non-GUI version unless there is an error message. +Files: src/main.c + +Patch 6.2.260 +Problem: GTK 2: Can't quit a dialog with <Esc>. + GTK 1 and 2: <Enter> always gives a result, even when the default + button has been disabled. +Solution: Handle these keys explicitly. When no default button is specified + use the first one (works mostly like it was before). +Files: src/gui_gtk.c + +Patch 6.2.261 +Problem: When 'autoindent' and 'cindent' are set and a line is recognized + as a comment, starting a new line won't do 'cindent' formatting. +Solution: Also use 'cindent' formatting for lines that are used as a + comment. (Servatius Brandt) +Files: src/misc1.c + +Patch 6.2.262 +Problem: 1 CTRL-W w beeps, even though going to the first window is + possible. (Charles Campbell) +Solution: Don't beep. +Files: src/window.c + +Patch 6.2.263 +Problem: Lint warnings: Duplicate function prototypes, duplicate macros, + use of a zero character instead of a zero pointer, unused + variable. Clearing allocated memory in a complicated way. +Solution: Remove the function prototypes from farsi.h. Remove the + duplicated lines in keymap.h. Change getvcol() argument from NUL + to NULL. Remove the "col" variable in regmatch(). Use + lalloc_clear() instead of lalloc(). (Walter Briscoe) +Files: src/farsi.h, src/keymap.h, src/ops.c, src/regexp.c, src/search.c + +Patch 6.2.264 (after 6.2.247) +Problem: Writing past allocated memory when using a command line from the + viminfo file. +Solution: Store the NUL in the right place. +Files: src/ex_getln.c + +Patch 6.2.265 +Problem: Although ":set" is not allowed in the sandbox, ":let &opt = val" + works. +Solution: Do allow changing options in the sandbox, but not the ones that + can't be changed from a modeline. +Files: src/ex_cmds.h, src/options.c + +Patch 6.2.266 +Problem: When redirecting output and using ":silent", line breaks are + missing from output of ":map" and ":tselect". Alignment of + columns is wrong. +Solution: Insert a line break where "msg_didout" was tested. Update msg_col + when redirecting and using ":silent". +Files: src/getchar.c, src/message.c + +Patch 6.2.267 (extra) +Problem: Win32: "&&" in a tearoff menu is not shown. (Luc Hermitte) +Solution: Use the "name" item from the menu instead of the "dname" item. +Files: src/gui_w32.c, src/menu.c + +Patch 6.2.268 +Problem: GUI: When changing 'guioptions' part of the window may be off + screen. (Randall Morris) +Solution: Adjust the size of the window when changing 'guioptions', but only + when adding something. +Files: src/gui.c + +Patch 6.2.269 +Problem: Diff mode does not highlight a change in a combining character. + (Raphael Finkel) +Solution: Make diff_find_change() multi-byte aware: find the start byte of + a character that contains a change. +Files: src/diff.c + +Patch 6.2.270 +Problem: Completion in Insert mode, then repeating with ".", doesn't handle + composing characters in the completed text. (Raphael Finkel) +Solution: Don't skip over composing chars when adding completed text to the + redo buffer. +Files: src/getchar.c + +Patch 6.2.271 +Problem: NetBeans: Can't do "tail -f" on the log. Passing socket info with + an argument or environment variable is not secure. +Solution: Wait after initializing the log. Allow passing the socket info + through a file. (Gordon Prieur) +Files: runtime/doc/netbeans.txt, src/main.c, src/netbeans.c + +Patch 6.2.272 +Problem: When the "po" directory exists, but "po/Makefile" doesn't, + building fails. Make loops when the "po" directory has been + deleted after running configure. +Solution: Check for the "po/Makefile" instead of just the "po" directory. + Check this again before trying to run make with that Makefile. +Files: src/auto/configure, src/configure.in, src/Makefile + +Patch 6.2.273 +Problem: Changing the sort order in an explorer window for an empty + directory produces error messages. (Doug Kearns) +Solution: When an invalid range is used for a function that is not going to + be executed, skip over the arguments anyway. +Files: src/eval.c + +Patch 6.2.274 +Problem: ":print" skips empty lines when 'list' is set and there is no + "eol" in 'listchars'. (Yakov Lerner) +Solution: Skip outputting a space for an empty line only when 'list' is set + and the end-of-line character is not empty. +Files: src/message.c + +Patch 6.2.275 (extra, after 6.2.267) +Problem: Warning for uninitialized variable when using gcc. +Solution: Initialize "acLen" to zero. (Bill McCarthy) +Files: src/gui_w32.c + +Patch 6.2.276 +Problem: ":echo X()" does not put a line break between the message that X() + displays and the text that X() returns. (Yakov Lerner) +Solution: Invoke msg_start() after evaluating the argument. +Files: src/eval.c + +Patch 6.2.277 +Problem: Vim crashes when a ":runtime ftplugin/ada.vim" causes a recursive + loop. (Robert Nowotniak) +Solution: Restore "msg_list" before returning from do_cmdline(). +Files: src/ex_docmd.c + +Patch 6.2.278 +Problem: Using "much" instead of "many". +Solution: Correct the error message. +Files: src/eval.c + +Patch 6.2.279 +Problem: There is no default choice for a confirm() dialog, now that it is + possible not to have a default choice. +Solution: Make the first choice the default choice. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.2.280 +Problem: "do" and ":diffget" don't work in the first line and the last line + of a buffer. (Aron Griffis) +Solution: Find a difference above the first line and below the last line. + Also fix a few display updating bugs. +Files: src/diff.c, src/fold.c, src/move.c + +Patch 6.2.281 +Problem: PostScript printing doesn't work on Mac OS X 10.3.2. +Solution: Adjust the header file. (Mike Williams) +Files: runtime/print/prolog.ps + +Patch 6.2.282 +Problem: When using CTRL-O to go back to a help file, it becomes listed. + (Andrew Nesbit) + Using ":tag" or ":tjump" in a help file doesn't keep the help file + settings (e.g. for 'iskeyword'). +Solution: Don't mark a buffer as listed when its help flag is set. Put all + the option settings for a help buffer together in do_ecmd(). +Files: src/ex_cmds.c + +Patch 6.2.283 +Problem: The "local additions" in help.txt are used without conversion, + causing latin1 characters showing up wrong when 'enc' is utf-8. + (Antoine J. Mechelynck) +Solution: Convert the text to 'encoding'. +Files: src/ex_cmds.c + +Patch 6.2.284 +Problem: Listing a function puts "endfunction" in the message history. + Typing "q" at the more prompt isn't handled correctly when listing + variables and functions. (Hara Krishna Dara) +Solution: Don't use msg() for "endfunction". Check "got_int" regularly. +Files: src/eval.c + +Patch 6.2.285 +Problem: GUI: In a single wrapped line that fills the window, "gj" in the + last screen line leaves the cursor behind. (Ivan Tarasov) +Solution: Undraw the cursor before scrolling the text up. +Files: src/gui.c + +Patch 6.2.286 +Problem: When trying to rename a file and it doesn't exist, the destination + file is deleted anyway. (Luc Deux) +Solution: Don't delete the destination when the source doesn't exist. (Taro + Muraoka) +Files: src/fileio.c + +Patch 6.2.287 (after 6.2.264) +Problem: Duplicate lines are added to the viminfo file. +Solution: Compare with existing entries without an offset. Also fixes + reading very long history lines from viminfo. +Files: src/ex_getln.c + +Patch 6.2.288 (extra) +Problem: Mac: An external program can't be interrupted. +Solution: Don't use the 'c' key for backspace. (Eckehard Berns) +Files: src/gui_mac.c + +Patch 6.2.289 +Problem: Compiling the Tcl interface with thread support causes ":make" to + fail. (Juergen Salk) +Solution: Use $TCL_DEFS from the Tcl config script to obtain the required + compile flags for using the thread library. +Files: src/auto/configure, src/configure.in + +Patch 6.2.290 (extra) +Problem: Mac: The mousewheel doesn't work. +Solution: Add mousewheel support. Also fix updating the thumb after a drag + and then using another way to scroll. (Eckehard Berns) +Files: src/gui_mac.c + +Patch 6.2.291 (extra) +Problem: Mac: the plus button and close button don't do anything. +Solution: Make the plus button maximize the window and the close button + close Vim. (Eckehard Berns) +Files: src/gui.c, src/gui_mac.c + +Patch 6.2.292 +Problem: Motif: When removing GUI arguments from argv[] a "ps -ef" shows + the last argument repeated. +Solution: Set argv[argc] to NULL. (Michael Jarvis) +Files: src/gui_x11.c + +Patch 6.2.293 (after 6.2.255) +Problem: GTK: A new item in a menu is put before the tearoff item. +Solution: Do increment the menu item index for non-popup menu items. +Files: src/gui_gtk.c + +Patch 6.2.294 (extra) +Problem: Mac: Cannot use modifiers with Space, Tab, Enter and Escape. +Solution: Handle all modifiers for these keys. (Eckehard Berns) +Files: src/gui_mac.c + +Patch 6.2.295 +Problem: When in debug mode, receiving a message from a remote client + causes a crash. Evaluating an expression causes Vim to wait for + "cont" to be typed, without a prompt. (Hari Krishna Dara) +Solution: Disable debugging when evaluating an expression for a client. + (Michael Geddes) Don't try reading into the typehead buffer when + it may have been filled in another way. +Files: src/ex_getln.c, src/getchar.c, src/if_xcmdsrv.c, src/main.c, + src/misc1.c, src/proto/getchar.pro, src/proto/main.pro, + src/proto/os_unix.pro, src/proto/ui.pro, src/structs.h, + src/os_unix.c, src/ui.c + +Patch 6.2.296 (extra) +Problem: Same as 6.2.295. +Solution: Extra files for patch 6.2.295. +Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_win32.c, + src/proto/os_amiga.pro, src/proto/os_msdos.pro, + src/proto/os_riscos.pro, src/proto/os_win32.pro + +Patch 6.2.297 (after 6.2.232) +Problem: Cannot invoke Python commands recursively. +Solution: With Python 2.3 and later use the available mechanisms to invoke + Python recursively. (Matthew Mueller) +Files: src/if_python.c + +Patch 6.2.298 +Problem: A change always sets the '. mark and an insert always sets the '^ + mark, even when this is not wanted. + Cannot go back to the position of older changes without undoing + those changes. +Solution: Add the ":keepjumps" command modifier. + Add the "g," and "g;" commands. +Files: runtime/doc/motion.txt, src/ex_cmds.h, src/ex_docmd.c, src/edit.c, + src/mark.c, src/misc1.c, src/normal.c, src/proto/mark.pro, + src/structs.h, src/undo.c + +Patch 6.2.299 +Problem: Can only use one language for help files. +Solution: Add the 'helplang' option to select the preferred language(s). + Make ":helptags" generate tags files for all languages. +Files: runtime/doc/options.txt, runtime/doc/various.txt, src/Makefile, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_cmds.h, src/ex_getln.c, + src/normal.c, src/option.c, src/option.h, src/proto/ex_cmds.pro, + src/proto/ex_cmds2.pro, src/proto/option.pro, src/structs.h, + src/tag.c, src/vim.h + +Patch 6.2.300 (after 6.2.297) +Problem: Cannot build Python interface with Python 2.2 or earlier. +Solution: Add a semicolon. +Files: src/if_python.c + +Patch 6.2.301 +Problem: The "select all" item from the popup menu doesn't work for Select + mode. +Solution: Use the same commands as for the "Edit.select all" menu. + (Benji Fisher) +Files: runtime/menu.vim + +Patch 6.2.302 +Problem: Using "CTRL-O ." in Insert mode doesn't work properly. (Benji + Fisher) +Solution: Restore "restart_edit" after an insert command that was not typed. + Avoid waiting with displaying the mode when there is no text to be + overwritten. + Fix that "CTRL-O ." sometimes doesn't put the cursor back after + the end-of-line. Only reset the flag that CTRL-O was used past + the end of the line when restarting editing. Update "o_lnum" + number when inserting text and "o_eol" is set. +Files: src/edit.c, src/normal.c + +Patch 6.2.303 +Problem: Cannot use Unicode digraphs while 'encoding' is not Unicode. +Solution: Convert the character from Unicode to 'encoding' when needed. + Use the Unicode digraphs for the Macintosh. (Eckehard Berns) +Files: src/digraph.c + +Patch 6.2.304 (extra, after 6.2.256) +Problem: Mac: No proper support for 'encoding'. Conversion without iconv() + is not possible. +Solution: Convert input from 'termencoding' to 'encoding'. Add + mac_string_convert(). Convert text for the clipboard when needed. + (Eckehard Berns) +Files: src/gui_mac.c, src/mbyte.c, src/structs.h, src/vim.h + +Patch 6.2.305 (after 6.2.300) +Problem: Win32: Cannot build Python interface with Python 2.3. (Ajit + Thakkar) +Solution: Add two functions to the dynamic loading feature. +Files: src/if_python.c + +Patch 6.2.306 (extra) +Problem: Win32: Building console version with BCC 5.5 gives a warning for + get_cmd_args() prototype missing. (Ajit Thakkar) +Solution: Don't build os_w32exe.c for the console version. +Files: src/Make_bc5.mak + +Patch 6.2.307 (after 6.2.299) +Problem: Installing help files fails. +Solution: Expand wildcards for translated help files separately. +Files: src/Makefile + +Patch 6.2.308 +Problem: Not all systems have "whoami", resulting in an empty user name. +Solution: Use "logname" when possible, "whoami" otherwise. (David Boyce) +Files: src/Makefile + +Patch 6.2.309 +Problem: "3grx" waits for two ESC to be typed. (Jens Paulus) +Solution: Append the ESC to the stuff buffer when redoing the "gr" insert. +Files: src/edit.c + +Patch 6.2.310 +Problem: When setting 'undolevels' to -1, making a change and setting + 'undolevels' to a positive value an "undo list corrupt" error + occurs. (Madoka Machitani) +Solution: Sync undo before changing 'undolevels'. +Files: src/option.c + +Patch 6.2.311 (after 6.2.298) +Problem: When making several changes in one line the changelist grows + quickly. There is no error message for reaching the end of the + changelist. Reading changelist marks from viminfo doesn't work + properly. +Solution: Only make a new entry in the changelist when making a change in + another line or 'textwidth' columns away. Add E662, E663 and E664 + error messages. Put a changelist mark from viminfo one position + before the end. +Files: runtime/doc/motion.txt, src/mark.c, src/misc1.c, src/normal.c + +Patch 6.2.312 (after 6.2.299) +Problem: "make install" clears the screen when installing the docs. +Solution: Execute ":helptags" in silent mode. +Files: runtime/doc/Makefile + +Patch 6.2.313 +Problem: When opening folds in a diff window, other diff windows no longer + show the same text. +Solution: Sync the folds in diff windows. +Files: src/diff.c, src/fold.c, src/move.c, src/proto/diff.pro, + src/proto/move.pro + +Patch 6.2.314 +Problem: When 'virtualedit' is set "rx" may cause a crash with a blockwise + selection and using "$". (Moritz Orbach) +Solution: Don't try replacing chars in a line that has no characters in the + block. +Files: src/ops.c + +Patch 6.2.315 +Problem: Using CTRL-C in a Visual mode mapping while 'insertmode' is set + stops Vim from returning to Insert mode. +Solution: Don't reset "restart_edit" when a CTRL-C is found and 'insertmode' + is set. +Files: src/normal.c + +Patch 6.2.316 (after 6.2.312) +Problem: "make install" tries connecting to the X server when installing + the docs. (Stephen Thomas) +Solution: Add the "-X" argument. +Files: runtime/doc/Makefile + +Patch 6.2.317 (after 6.2.313) +Problem: When using "zi" in a diff window, other diff windows are not + adjusted. (Richard Curnow) +Solution: Distribute a change in 'foldenable' to other diff windows. +Files: src/normal.c + +Patch 6.2.318 +Problem: When compiling with _THREAD_SAFE external commands don't echo + typed characters. +Solution: Don't set the terminal mode to TMODE_SLEEP when it's already at + TMODE_COOK. +Files: src/os_unix.c + +Patch 6.2.319 (extra) +Problem: Building gvimext.dll with Mingw doesn't work properly. +Solution: Use gcc instead of dllwrap. Use long option names. (Alejandro + Lopez-Valencia) +Files: src/GvimExt/Make_ming.mak + +Patch 6.2.320 +Problem: Win32: Adding and removing the menubar resizes the Vim window. + (Jonathon Merz) +Solution: Don't let a resize event change 'lines' unexpectedly. +Files: src/gui.c + +Patch 6.2.321 +Problem: When using modeless selection, wrapping lines are not recognized, + a line break is always inserted. +Solution: Add LineWraps[] to remember whether a line wrapped or not. +Files: src/globals.h, src/screen.c, src/ui.c + +Patch 6.2.322 +Problem: With 'showcmd' set, after typing "dd" the next "d" may not be + displayed. (Jens Paulus) +Solution: Redraw the command line after updating the screen, scrolling may + have set "clear_cmdline". +Files: src/screen.c + +Patch 6.2.323 +Problem: Win32: expanding "~/file" in an autocommand pattern results in + backslashes, while this pattern should only have forward slashes. +Solution: Make expanding environment variables respect 'shellslash' and set + p_ssl when expanding the autocommand pattern. +Files: src/fileio.c, src/misc1.c, src/proto/fileio.pro + +Patch 6.2.324 (extra) +Problem: Win32: when "vimrun.exe" has a path with white space, such as + "Program Files", executing external commands may fail. +Solution: Put double quotes around the path to "vimrun". +Files: src/os_win32.c + +Patch 6.2.325 +Problem: When $HOME includes a space, doing ":set tags=~/tags" doesn't + work, the space is used to separate file names. (Brett Stahlman) +Solution: Escape the space with a backslash. +Files: src/option.c + +Patch 6.2.326 +Problem: ":windo set syntax=foo" doesn't work. (Tim Chase) +Solution: Don't change 'eventignore' for ":windo". +Files: src/ex_cmds2.c + +Patch 6.2.327 +Problem: When formatting text all marks in the formatted lines are lost. + A word is not joined to a previous line when this would be + possible. (Mikolaj Machowski) +Solution: Try to keep marks in the same position as much as possible. + Also keep mark positions when joining lines. + Start auto-formatting in the previous line when appropriate. + Add the "gw" operator: Like "gq" but keep the cursor where it is. +Files: runtime/doc/change.txt, src/edit.c, src/globals.h, src/mark.c, + src/misc1.c, src/normal.c, src/ops.c, src/proto/edit.pro, + src/proto/mark.pro, src/proto/ops.pro, src/structs.h, src/vim.h + +Patch 6.2.328 +Problem: XIM with GTK: It is hard to understand what XIM is doing. +Solution: Add xim_log() to log XIM events and help with debugging. +Files: src/mbyte.c + +Patch 6.2.329 +Problem: ":=" does not work Vi compatible. (Antony Scriven) +Solution: Print the last line number instead of the current line. Don't + print "line". +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 6.2.330 (extra, after 6.2.267) +Problem: Win32: Crash when tearing off a menu. +Solution: Terminate a string with a NUL. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.2.331 (after 6.2.327) +Problem: "gwap" leaves cursor in the wrong line. +Solution: Remember the cursor position before finding the ends of the + paragraph. +Files: src/normal.c, src/ops.c, src/structs.h + +Patch 6.2.332 (extra) +Problem: Amiga: Compile error for string array. Compiling the Amiga GUI + doesn't work. +Solution: Use a char pointer instead. Move including "gui_amiga.h" to after + including "vim.h". Add a semicolon. (Ali Akcaagac) +Files: src/gui_amiga.c, src/os_amiga.c + +Patch 6.2.333 (extra) +Problem: Win32: printing doesn't work with specified font charset. +Solution: Use the specified font charset. (Mike Williams) +Files: src/os_mswin.c + +Patch 6.2.334 (extra, after 6.2.296) +Problem: Win32: evaluating client expression in debug mode requires typing + "cont". +Solution: Use eval_client_expr_to_string(). +Files: src/os_mswin.c + +Patch 6.2.335 +Problem: The ":sign" command cannot be followed by another command. +Solution: Add TRLBAR to the command flags. +Files: src/ex_cmds.h + +Patch 6.2.336 (after 6.2.327) +Problem: Mixup of items in an expression. +Solution: Move "== NUL" to the right spot. +Files: src/edit.c + +Patch 6.2.337 (extra, after 6.2.319) +Problem: Building gvimext.dll with Mingw doesn't work properly. +Solution: Fix white space and other details. (Alejandro Lopez-Valencia) +Files: src/GvimExt/Make_ming.mak + +Patch 6.2.338 (after 6.2.331) +Problem: When undoing "gwap" the cursor is always put at the start of the + paragraph. When undoing auto-formatting the cursor may be above + the change. +Solution: Try to move the cursor back to where it was or to the first line + that actually changed. +Files: src/normal.c, src/ops.c, src/undo.c + +Patch 6.2.339 +Problem: Crash when using many different highlight groups and a User + highlight group. (Juergen Kraemer) +Solution: Do not use the sg_name_u pointer when it is NULL. Also simplify + use of the highlight group table. +Files: src/syntax.c + +Patch 6.2.340 +Problem: ":reg" doesn't show the actual contents of the clipboard if it was + filled outside of Vim. (Stuart MacDonald) +Solution: Obtain the clipboard contents before displaying it. +Files: src/ops.c + +Patch 6.2.341 (extra) +Problem: Win32: When the path to diff.exe contains a space and using the + vimrc generated by the install program, diff mode does not work. +Solution: Put the first double quote just before the space instead of before + the path. +Files: src/dosinst.c + +Patch 6.2.342 (extra) +Problem: Win32: macros are not always used as expected. +Solution: Define WINVER to 0x0400 instead of 0x400. (Alejandro + Lopez-Valencia) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_mvc.mak + +Patch 6.2.343 +Problem: Title doesn't work with some window managers. X11: Setting the + text property for the window title is hard coded. +Solution: Use STRING format when possible. Use the UTF-8 function when + it's available and 'encoding' is utf-8. Use + XStringListToTextProperty(). Do the same for the icon name. + (David Harrison) +Files: src/os_unix.c + +Patch 6.2.344 (extra, after 6.2.337) +Problem: Cannot build gvimext.dll with MingW on Linux. +Solution: Add support for cross compiling. (Ronald Hoellwarth) +Files: src/GvimExt/Make_ming.mak + +Patch 6.2.345 (extra) +Problem: Win32: Copy/paste between two Vims fails if 'encoding' is not set + properly or there are illegal bytes. +Solution: Use a raw byte format. Always set it when copying. When pasting + use the raw format if 'encoding' is the same. +Files: src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h + +Patch 6.2.346 +Problem: Win32 console: After using "chcp" Vim does not detect the + different codepage. +Solution: Use GetConsoleCP() and when it is different from GetACP() set + 'termencoding'. +Files: src/option.c + +Patch 6.2.347 (extra) +Problem: Win32: XP theme support is missing. +Solution: Add a manifest and refer to it from the resource file. (Michael + Wookey) +Files: Makefile, src/gvim.exe.mnf, src/vim.rc + +Patch 6.2.348 +Problem: Win32: "vim c:\dir\(test)" doesn't work, because the 'isfname' + default value doesn't contain parenthesis. +Solution: Temporarily add '(' and ')' to 'isfname' when expanding file name + arguments. +Files: src/main.c + +Patch 6.2.349 +Problem: Finding a match using 'matchpairs' may cause a crash. + 'matchpairs' is not used for 'showmatch'. +Solution: Don't look past the NUL in 'matchpairs'. Use 'matchpairs' for + 'showmatch'. (Dave Olszewkski) +Files: src/misc1.c, src/normal.c, src/proto/search.pro, src/search.c + +Patch 6.2.350 +Problem: Not enough info about startup timing. +Solution: Add a few more TIME_MSG() calls. +Files: src/main.c + +Patch 6.2.351 +Problem: Win32: $HOME may be set to %USERPROFILE%. +Solution: Expand %VAR% at the start of $HOME. +Files: src/misc1.c + +Patch 6.2.352 (after 6.2.335) +Problem: ":sign texthl=||" does not work. +Solution: Remove the check for a following command. Give an error for extra + arguments after "buff=1". +Files: src/ex_cmds.c, src/ex_cmds.h + +Patch 6.2.353 (extra) +Problem: Win32: Supported server name length is limited. (Paul Bossi) +Solution: Use MAX_PATH instead of 25. +Files: src/os_mswin.c + +Patch 6.2.354 (extra) +Problem: Win32: When the mouse pointer is on a tear-off menu it is hidden + when typing but is not redisplayed when moved. (Markx Hackmann) +Solution: Handle the pointer move event for the tear-off menu window. +Files: src/gui_w32.c + +Patch 6.2.355 (after 6.2.303) +Problem: When 'encoding' is a double-byte encoding different from the + current locale, the width of characters is not correct. + Possible failure and memory leak when using iconv, Unicode + digraphs and 'encoding' is not "utf-8". +Solution: Use iconv() to discover the actual width of characters. + Add the "vc_fail" field to vimconv_T. + When converting a digraph, init the conversion type to NONE and + cleanup afterwards. +Files: src/digraph.c, src/mbyte.c, src/structs.h + +Patch 6.2.356 +Problem: When using a double-byte 'encoding' and 'selection' is + "exclusive", "vy" only yanks the first byte of a double-byte + character. (Xiangjiang Ma) +Solution: Correct the column in unadjust_for_sel() to position on the first + byte, always include the trailing byte of the selected text. +Files: src/normal.c + +Patch 6.2.357 (after 6.2.321) +Problem: Memory leak when resizing the Vim window. +Solution: Free the LineWraps array. +Files: src/screen.c + +Patch 6.2.358 (after 6.2.299) +Problem: Memory leak when using ":help" and the language doesn't match. +Solution: Free the array with matching tags. +Files: src/ex_cmds.c + +Patch 6.2.359 (after 6.2.352) +Problem: Compiler warning for long to int type cast. +Solution: Add explicit type cast. +Files: src/ex_cmds.c + +Patch 6.2.360 +Problem: "100|" in an empty line results in a ruler "1,0-100". (Pavol + Juhas) +Solution: Recompute w_virtcol if the target column was not reached. +Files: src/misc2.c + +Patch 6.2.361 (extra) +Problem: Win32: Run gvim, ":set go-=m", use Alt-Tab, keep Alt pressed while + pressing Esc, then release Alt: Cursor disappears and typing a key + causes a beep. (Hari Krishna Dara) +Solution: Don't ignore the WM_SYSKEYUP event when the menu is disabled. +Files: src/gui_w32.c + +Patch 6.2.362 (extra, after 6.2.347) +Problem: Win32: The manifest causes Gvim not to work. (Dave Roberts) +Solution: Change "x86" to "X86". (Serge Pirotte) +Files: src/gvim.exe.mnf + +Patch 6.2.363 +Problem: In an empty file with 'showmode' off, "i" doesn't change the ruler + from "0-1" to "1". Typing "x<BS>" does show "1", but then <Esc> + doesn't make it "0-1" again. Same problem for ruler in + statusline. (Andrew Pimlott) +Solution: Remember the "empty line" flag with Insert mode and'ed to it. +Files: src/screen.c + +Patch 6.2.364 +Problem: HTML version of the documentation doesn't mention the encoding, + which is a problem for mbyte.txt. +Solution: Adjust the awk script. (Ilya Sher) +Files: runtime/doc/makehtml.awk + +Patch 6.2.365 +Problem: The configure checks for Perl and Python may add compile and link + arguments that break building Vim. +Solution: Do a sanity check: try building with the arguments. +Files: src/auto/configure, src/configure.in + +Patch 6.2.366 +Problem: When the GUI can't start because no valid font is found, there is + no error message. (Ugen) +Solution: Add an error message. +Files: src/gui.c + +Patch 6.2.367 +Problem: Building the help tags file while installing may fail if there is + another Vim in $PATH. +Solution: Specify the just installed Vim executable. (Gordon Prieur) +Files: src/Makefile + +Patch 6.2.368 +Problem: When 'autochdir' is set, closing a window doesn't change to the + directory of the new current window. (Salman Halim) +Solution: Handle 'autochdir' always when a window becomes the current one. +Files: src/window.c + +Patch 6.2.369 +Problem: Various memory leaks: when using globpath(), when searching for + help tags files, when defining a function inside a function, when + giving an error message through an exception, for the final "." + line in ":append", in expression "cond ? a : b" that fails and for + missing ")" in an expression. Using NULL pointer when adding + first user command and for pointer computations with regexp. + (tests by Dominique Pelle) +Solution: Fix the leaks by freeing the allocated memory. Don't use the + array of user commands when there are no entries. Use a macro + instead of a function call for saving and restoring regexp states. +Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, + src/misc2.c, src/regexp.c, src/screen.c, src/tag.c + +Patch 6.2.370 (extra, after6.2.341) +Problem: Win32: When the path to diff.exe contains a space and using the + vimrc generated by the install program, diff mode may not work. + (Alejandro Lopez-Valencia) +Solution: Do not use double quotes for arguments that do not have a space. +Files: src/dosinst.c + +Patch 6.2.371 +Problem: When 'virtualedit' is set and there is a Tab before the next "x", + "dtx" does not delete the whole Tab. (Ken Hashishi) +Solution: Move the cursor to the last position of the Tab. Also for + "df<Tab>". +Files: src/normal.c + +Patch 6.2.372 +Problem: When using balloon evaluation, no value is displayed for members + of structures and items of an array. +Solution: Include "->", "." and "[*]" in the expression. +Files: src/gui_beval.c, src/normal.c, src/vim.h + +Patch 6.2.373 +Problem: When 'winminheight' is zero and a window is reduced to zero + height, the ruler always says "Top" instead of the cursor + position. (Antoine J. Mechelynck) +Solution: Don't recompute w_topline for a zero-height window. +Files: src/window.c + +Patch 6.2.374 +Problem: ":echo "hello" | silent normal n" removes the "hello" message. + (Servatius Brandt) +Solution: Don't echo the search string when ":silent" was used. Also don't + show the mode. In general: don't clear to the end of the screen. +Files: src/gui.c, src/message.c, src/os_unix.c, src/proto/message.pro, + src/screen.c, src/search.c, src/window.c + +Patch 6.2.375 +Problem: When changing 'guioptions' the hit-enter prompt may be below the + end of the Vim window. +Solution: Call screen_alloc() before showing the prompt. +Files: src/message.c + +Patch 6.2.376 +Problem: Win32: Ruby interface cannot be dynamically linked with Ruby 1.6. +Solution: Add #ifdefs around use of rb_w32_snprintf(). (Beno�t Cerrina) +Files: src/if_ruby.c + +Patch 6.2.377 (after 6.2.372) +Problem: Compiler warnings for signed/unsigned compare. (Michael Wookey) +Solution: Add type cast. +Files: src/normal.c + +Patch 6.2.378 (extra, after 6.2.118) +Problem: Mac: cannot build with Project Builder. +Solution: Add remove_tail_with_ext() to locate and remove the "build" + directory from the runtime path. Include os_unix.c when needed. + (Dany St Amant) +Files: src/misc1.c, src/os_macosx.c, src/vim.h + +Patch 6.2.379 +Problem: Using ":mkvimrc" in the ":options" window sets 'bufhidden' to + "delete". (Michael Naumann) +Solution: Do not add buffer-specific option values to a global vimrc file. +Files: src/option.c + +Patch 6.2.380 (extra) +Problem: DOS: "make test" fails when running it again. Can't "make test" + with Borland C. +Solution: Make sure ".out" files are deleted when they get in the way. Add + a "test" target to the Borland C Makefile. +Files: src/Make_bc5.mak, src/testdir/Make_dos.mak + +Patch 6.2.381 +Problem: Setting 'fileencoding' to a comma separated list (confusing it + with 'fileencodings') does not result in an error message. + Setting 'fileencoding' in an empty file marks it as modified. + There is no "+" in the title after setting 'fileencoding'. +Solution: Check for a comma in 'fileencoding'. Only consider a non-empty + file modified by changing 'fileencoding'. Update the title after + changing 'fileencoding'. +Files: src/option.c + +Patch 6.2.382 +Problem: Running "make test" puts marks from test files in viminfo. +Solution: Specify a different viminfo file to use. +Files: src/testdir/test15.in, src/testdir/test49.in + +Patch 6.2.383 +Problem: ":hi foo term='bla" crashes Vim. (Antony Scriven) +Solution: Check that the closing ' is there. +Files: src/syntax.c + +Patch 6.2.384 +Problem: ":menu a.&b" ":unmenu a.b" only works if "&b" isn't translated. +Solution: Also compare the names without '&' characters. +Files: src/menu.c + +Patch 6.2.385 (extra) +Problem: Win32: forward_slash() and trash_input_buf() are undefined when + compiling with small features. (Ajit Thakkar) +Solution: Change the #ifdefs for forward_slash(). Don't call + trash_input_buf() if the input buffer isn't used. +Files: src/fileio.c, src/os_win32.c + +Patch 6.2.386 +Problem: Wasting time trying to read marks from the viminfo file for a + buffer without a name. +Solution: Skip reading marks when the buffer has no name. +Files: src/fileio.c + +Patch 6.2.387 +Problem: There is no highlighting of translated items in help files. +Solution: Search for a "help_ab.vim" syntax file when the help file is + called "*.abx". Also improve the help highlighting a bit. +Files: runtime/syntax/help.vim + +Patch 6.2.388 +Problem: GTK: When displaying some double-width characters they are drawn + as single-width, because of conversion to UTF-8. +Solution: Check the width that GTK uses and add a space if it's one instead + of two. +Files: src/gui_gtk_x11.c + +Patch 6.2.389 +Problem: When working over a slow connection, it's very annoying that the + last line is partly drawn and then cleared for every change. +Solution: Don't redraw the bottom line if no rows were inserted or deleted. + Don't draw the line if we know "@" lines will be used. +Files: src/screen.c + +Patch 6.2.390 +Problem: Using "r*" in Visual mode on multi-byte characters only replaces + every other character. (Tyson Roberts) +Solution: Correct the cursor position after replacing each character. +Files: src/ops.c + +Patch 6.2.391 (extra) +Problem: The ":highlight" command is not tested. +Solution: Add a test script for ":highlight". +Files: src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/test51.in, + src/testdir/test51.ok + +Patch 6.2.392 (after 6.2.384) +Problem: Unused variable. +Solution: Remove "dlen". +Files: src/menu.c + +Patch 6.2.393 +Problem: When using very long lines the viminfo file can become very big. +Solution: Add the "s" flag to 'viminfo': skip registers with more than the + specified Kbyte of text. +Files: runtime/doc/options.txt, src/ops.c, src/option.c + +Patch 6.2.394 (after 6.2.391) +Problem: Test 51 fails on a terminal with 8 colors. (Tony Leneis) +Solution: Use "DarkBlue" instead of "Blue" to avoid the "bold" attribute. +Files: src/testdir/test51.in + +Patch 6.2.395 +Problem: When using ":tag" or ":pop" the previous matching tag is used. + But since the current file is different, the ordering of the tags + may change. +Solution: Remember what the current buffer was for when re-using cur_match. +Files: src/edit.c, src/ex_cmds.c, src/proto/tag.pro, src/structs.h, + src/tag.c + +Patch 6.2.396 +Problem: When CTRL-T jumps to another file and an autocommand moves the + cursor to the '" mark, don't end up on the right line. (Michal + Malecki) +Solution: Set the line number after loading the file. +Files: src/tag.c + +Patch 6.2.397 +Problem: When using a double-byte 'encoding' mapping <M-x> doesn't work. + (Yasuhiro Matsumoto) +Solution: Do not set the 8th bit of the character but use a modifier. +Files: src/gui_gtk_x11.c, src/gui_x11.c, src/misc2.c + +Patch 6.2.398 (extra) +Problem: Win32 console: no extra key modifiers are supported. +Solution: Encode the modifiers into the input stream. Also fix that special + keys are converted and stop working when 'tenc' is set. Also fix + that when 'tenc' is intialized the input and output conversion is + not setup properly until 'enc' or 'tenc' is set. +Files: src/getchar.c, src/option.c, src/os_win32.c + +Patch 6.2.399 +Problem: A ":set" command that fails still writes a message when it is + inside a try/catch block. +Solution: Include all the text of the message in the error message. +Files: src/charset.c, src/option.c + +Patch 6.2.400 +Problem: Can't compile if_xcmdsrv.c on HP-UX 11.0. +Solution: Include header file poll.h. (Malte Neumann) +Files: src/if_xcmdsrv.c + +Patch 6.2.401 +Problem: When opening a buffer that was previously opened, Vim does not + restore the cursor position if the first line starts with white + space. (Gregory Margo) +Solution: Don't skip restoring the cursor position if it is past the blanks + in the first line. +Files: src/buffer.c + +Patch 6.2.402 +Problem: Mac: "make install" doesn't generate help tags. (Benji Fisher) +Solution: Generate help tags before copying the runtime files. +Files: src/Makefile + +Patch 6.2.403 +Problem: ":@y" checks stdin if there are more commands to execute. This + fails if stdin is not connected, e.g., when starting the GUI from + KDE. (Ned Konz) +Solution: Only check for a next command if there still is typeahead. +Files: src/ex_docmd.c + +Patch 6.2.404 +Problem: Our own function to determine width of Unicode characters may get + outdated. (Markus Kuhn) +Solution: Use wcwidth() when it is available. Also use iswprint(). +Files: src/auto/configure, src/configure.in, src/config.h.in, src/mbyte.c + +Patch 6.2.405 +Problem: Cannot map zero without breaking the count before a command. + (Benji Fisher) +Solution: Disable mapping zero when entering a count. +Files: src/getchar.c, src/globals.h, src/normal.c + +Patch 6.2.406 +Problem: ":help \zs", ":help \@=" and similar don't find useful help. +Solution: Prepend "/\" to the arguments to find the desired help tag. +Files: src/ex_cmds.c + +Patch 6.2.407 (after 6.2.299) +Problem: ":help \@<=" doesn't find help. +Solution: Avoid that ":help \@<=" searches for the "<=" language. +Files: src/tag.c + +Patch 6.2.408 +Problem: ":compiler" is not consistent: Sets local options and a global + variable. (Douglas Potts) There is no error message when a + compiler is not supported. +Solution: Use ":compiler!" to set a compiler globally, otherwise it's local + to the buffer and "b:current_compiler" is used. Give an error + when no compiler script could be found. + Note: updated compiler plugins can be found at + ftp://ftp.vim.org/pub/vim/runtime/compiler/ +Files: runtime/compiler/msvc.vim, runtime/doc/quickfix.txt, src/eval.c, + src/ex_cmds2.c + +Patch 6.2.409 +Problem: The cursor ends up in the last column instead of after the line + when doing "i//<Esc>o" with 'indentexpr' set to "cindent(v:lnum)". + (Toby Allsopp) +Solution: Adjust the cursor as if in Insert mode. +Files: src/misc1.c + +Patch 6.2.410 (after 6.2.389) +Problem: In diff mode, when there are more filler lines than fit in the + window, they are not drawn. +Solution: Check for filler lines when skipping to draw a line that doesn't + fit. +Files: src/screen.c + +Patch 6.2.411 +Problem: A "\n" inside a string is not seen as a line break by the regular + expression matching. (Hari Krishna Dara) +Solution: Add the vim_regexec_nl() function for strings where "\n" is to be + matched with a line break. +Files: src/eval.c, src/ex_eval.c, src/proto/regexp.c, src/regexp.c + +Patch 6.2.412 +Problem: Ruby: "ruby << EOF" inside a function doesn't always work. Also + for ":python", ":tcl" and ":perl". +Solution: Check for "<< marker" and skip until "marker" before checking for + "endfunction". +Files: src/eval.c + +Patch 6.2.413 (after 6.2.411) +Problem: Missing prototype for vim_regexec_nl(). (Marcel Svitalsky) +Solution: Now really include the prototype. +Files: src/proto/regexp.pro + +Patch 6.2.414 +Problem: The function used for custom completion of user commands cannot + have <SID> to make it local. (Hari Krishna Dara) +Solution: Pass the SID of the script where the user command was defined on + to the completion. Also clean up #ifdefs. +Files: src/ex_docmd.c, src/eval.c, src/ex_getln.c, src/structs.h + +Patch 6.2.415 +Problem: Vim may crash after a sequence of events that change the window + size. The window layout assumes a larger window than is actually + available. (Servatius Brandt) +Solution: Invoke win_new_shellsize() from screenalloc() instead of from + set_shellsize(). +Files: src/screen.c, src/term.c + +Patch 6.2.416 +Problem: Compiler warning for incompatible pointer. +Solution: Remove the "&" in the call to poll(). (Xavier de Gaye) +Files: src/os_unix.c + +Patch 6.2.417 (after 6.2.393) +Problem: Many people forget that the '"' item in 'viminfo' needs to be + preceded with a backslash, +Solution: Add '<' as an alias for the '"' item. +Files: runtime/doc/options.txt, src/ops.c, src/option.c + +Patch 6.2.418 +Problem: Using ":nnoremap <F12> :echo "cheese" and ":cabbr cheese xxx": + when pressing <F12> still uses the abbreviation. (Hari Krishna) +Solution: Also apply "noremap" to abbreviations. +Files: src/getchar.c + +Patch 6.2.419 (extra) +Problem: Win32: Cannot open the Vim window inside another application. +Solution: Add the "-P" argument to specify the window title of the + application to run inside. (Zibo Zhao) +Files: runtime/doc/starting.txt, src/main.c, src/gui_w32.c, + src/gui_w48.c, src/if_ole.cpp, src/os_mswin.c, + src/proto/gui_w32.pro + +Patch 6.2.420 +Problem: Cannot specify a file to be edited in binary mode without setting + the global value of the 'binary' option. +Solution: Support ":edit ++bin file". +Files: runtime/doc/editing.txt, src/buffer.c, src/eval.c, src/ex_cmds.h, + src/ex_docmd.c, src/fileio.c, src/misc2.c + +Patch 6.2.421 +Problem: Cannot set the '[ and '] mark, which may be necessary when an + autocommand simulates reading a file. +Solution: Allow using "m[" and "m]". +Files: runtime/doc/motion.txt, src/mark.c + +Patch 6.2.422 +Problem: In CTRL-X completion messages the "/" makes them less readable. +Solution: Remove the slashes. (Antony Scriven) +Files: src/edit.c + +Patch 6.2.423 +Problem: ":vertical wincmd ]" does not split vertically. +Solution: Add "postponed_split_flags". +Files: src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/tag.c + +Patch 6.2.424 +Problem: A BufEnter autocommand that sets an option stops 'mousefocus' from + working in Insert mode (Normal mode is OK). (Gregory Seidman) +Solution: In the Insert mode loop invoke gui_mouse_correct() when needed. +Files: src/edit.c + +Patch 6.2.425 +Problem: Vertical split and command line window: can only drag status line + above the cmdline window on the righthand side, not lefthand side. +Solution: Check the status line row instead of the window pointer. +Files: src/ui.c + +Patch 6.2.426 +Problem: A syntax region end match with a matchgroup that includes a line + break only highlights the last line with matchgroup. (Gary + Holloway) +Solution: Also use the line number of the position where the region + highlighting ends. +Files: src/syntax.c + +Patch 6.2.427 (extra) +Problem: When pasting a lot of text in a multi-byte encoding, conversion + from 'termencoding' to 'encoding' may fail for some characters. + (Kuang-che Wu) +Solution: When there is an incomplete byte sequence at the end of the read + text keep it for the next time. +Files: src/mbyte.c, src/os_amiga.c, src/os_mswin.c, src/proto/mbyte.pro, + src/proto/os_mswin.pro, src/ui.c + +Patch 6.2.428 +Problem: The X11 clipboard supports the Vim selection for char/line/block + mode, but since the encoding is not included can't copy/paste + between two Vims with a different 'encoding'. +Solution: Add a new selection format that includes the 'encoding'. Perform + conversion when necessary. +Files: src/gui_gtk_x11.c, src/ui.c, src/vim.h + +Patch 6.2.429 +Problem: Unix: glob() doesn't work for a directory with a single quote in + the name. (Nazri Ramliy) +Solution: When using the shell to expand, only put double quotes around + spaces and single quotes, not the whole thing. +Files: src/os_unix.c + +Patch 6.2.430 +Problem: BOM at start of a vim script file is not recognized and causes an + error message. +Solution: Detect the BOM and skip over it. Also fix that after using + ":scriptencoding" the iconv() file descriptor was not closed + (memory leak). +Files: src/ex_cmds2.c + +Patch 6.2.431 +Problem: When using the horizontal scrollbar, the scrolling is limited to + the length of the cursor line. +Solution: Make the scroll limit depend on the longest visible line. The + cursor is moved when necessary. Including the 'h' flag in + 'guioptions' disables this. +Files: runtime/doc/gui.txt, runtime/doc/options.txt, src/gui.c, + src/misc2.c, src/option.h + +Patch 6.2.432 (after 6.2.430 and 6.2.431) +Problem: Lint warnings. +Solution: Add type casts. +Files: src/ex_cmds2.c, src/gui.c + +Patch 6.2.433 +Problem: Translating "VISUAL" and "BLOCK" separately doesn't give a good + result. (Alejandro Lopez Valencia) +Solution: Use a string for each combination. +Files: src/screen.c + +Patch 6.2.434 (after 6.2.431) +Problem: Compiler warning. (Salman Halim) +Solution: Add type casts. +Files: src/gui.c + +Patch 6.2.435 +Problem: When there are vertically split windows the minimal Vim window + height is computed wrong. +Solution: Use frame_minheight() to correctly compute the minimal height. +Files: src/window.c + +Patch 6.2.436 +Problem: Running the tests changes the user's viminfo file. +Solution: In test 49 tell the extra Vim to use the test viminfo file. +Files: src/testdir/test49.vim + +Patch 6.2.437 +Problem: ":mksession" always puts "set nocompatible" in the session file. + This changes option settings. (Ron Aaron) +Solution: Add an "if" to only change 'compatible' when needed. +Files: src/ex_docmd.c + +Patch 6.2.438 +Problem: When the 'v' flag is present in 'cpoptions', backspacing and then + typing text again: one character too much is overtyped before + inserting is done again. +Solution: Set "dollar_vcol" to the right column. +Files: src/edit.c + +Patch 6.2.439 +Problem: GTK 2: Changing 'lines' may cause a mismatch between the window + layout and the size of the window. +Solution: Disable the hack with force_shell_resize_idle(). +Files: src/gui_gtk_x11.c + +Patch 6.2.440 +Problem: When 'lazyredraw' is set the window title is still updated. + The size of the Visual area and the ruler are displayed too often. +Solution: Postpone redrawing the window title. Only show the Visual area + size when waiting for a character. Don't draw the ruler + unnecessary. +Files: src/buffer.c, src/normal.c, src/screen.c + +Patch 6.2.441 +Problem: ":unabbreviate foo " doesn't work, because of the trailing space, + while an abbreviation with a trailing space is not possible. (Paul + Jolly) +Solution: Accept a match with the lhs of an abbreviation without the + trailing space. +Files: src/getchar.c + +Patch 6.2.442 +Problem: Cannot manipulate the command line from a function. +Solution: Add getcmdline(), getcmdpos() and setcmdpos() functions and the + CTRL-\ e command. +Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, src/eval.c + src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro, + src/proto/ops.pro + +Patch 6.2.443 +Problem: With ":silent! echoerr something" you don't get the position of + the error. emsg() only writes the message itself and returns. +Solution: Also redirect the position of the error. +Files: src/message.c + +Patch 6.2.444 +Problem: When adding the 'c' flag to a ":substitute" command it may replace + more times than without the 'c' flag. Happens for a match that + starts with "\ze" (Marcel Svitalsk) and when using "\@<=" (Klaus + Bosau). +Solution: Correct "prev_matchcol" when replacing the line. Don't replace + the line when the pattern uses look-behind matching. +Files: src/ex_cmds.c, src/proto/regexp.pro, src/regexp.c + +Patch 6.2.445 +Problem: Copying vimtutor to /tmp/something is not secure, a symlink may + cause trouble. +Solution: Create a directory and create the file in it. Use "umask" to + create the directory with mode 700. (Stefan Nordhausen) +Files: src/vimtutor + +Patch 6.2.446 (after 6.2.404) +Problem: Using library functions wcwidth() and iswprint() results in + display problems for Hebrew characters. (Ron Aaron) +Solution: Disable the code to use the library functions, use our own. +Files: src/mbyte.c + +Patch 6.2.447 (after 6.2.440) +Problem: Now that the title is only updated when redrawing, it is no longer + possible to show it while executing a function. (Madoka Machitani) +Solution: Make ":redraw" also update the title. +Files: src/ex_docmd.c + +Patch 6.2.448 (after 6.2.427) +Problem: Mac: conversion done when 'termencoding' differs from 'encoding' + fails when pasting a longer text. +Solution: Check for an incomplete sequence at the end of the chunk to be + converted. (Eckehard Berns) +Files: src/mbyte.c + +Patch 6.2.449 (after 6.2.431) +Problem: Get error messages when switching files. +Solution: Check for a valid line number when calculating the width of the + horizontal scrollbar. (Helmut Stiegler) +Files: src/gui.c + +Patch 6.2.450 +Problem: " #include" and " #define" are not recognized with the default + option values for 'include' and 'defined'. (RG Kiran) +Solution: Adjust the default values to allow white space before the #. +Files: runtime/doc/options.txt, src/option.c + +Patch 6.2.451 +Problem: GTK: when using XIM there are various problems, including setting + 'modified' and breaking undo at the wrong moment. +Solution: Add "xim_changed_while_preediting", "preedit_end_col" and + im_is_preediting(). (Yasuhiro Matsumoto) +Files: src/ex_getln.c, src/globals.h, src/gui_gtk.c, src/gui_gtk_x11.c, + src/mbyte.c, src/misc1.c, src/proto/mbyte.pro, src/screen.c, + src/undo.c + +Patch 6.2.452 +Problem: In diff mode, when DiffAdd and DiffText highlight settings are + equal, an added line is highlighted with DiffChange. (Tom Schumm) +Solution: Remember the diff highlight type instead of the attributes. +Files: src/screen.c + +Patch 6.2.453 +Problem: ":s/foo\|\nbar/x/g" does not replace two times in "foo\nbar". + (Pavel Papushev) +Solution: When the pattern can match a line break also try matching at the + NUL at the end of a line. +Files: src/ex_cmds.c, src/regexp.c + +Patch 6.2.454 +Problem: ":let b:changedtick" doesn't work. (Alan Schmitt) ":let + b:changedtick = 99" does not give an error message. +Solution: Add code to recognize ":let b:changedtick". +Files: src/eval.c + +Patch 6.2.455 (after 6.2.297) +Problem: In Python commands the current locale changes how certain Python + functions work. (Eugene M. Minkovskii) +Solution: Set the LC_NUMERIC locale to "C" while executing a Python command. +Files: src/if_python.c + +Patch 6.2.456 (extra) +Problem: Win32: Editing a file by its Unicode name (dropping it on Vim or + using the file selection dialog) doesn't work. (Yakov Lerner, Alex + Jakushev) +Solution: Use wide character functions when file names are involved and + convert from/to 'encoding' where needed. +Files: src/gui_w48.c, src/macros.h, src/memfile.c, src/memline.c, + src/os_mswin.c, src/os_win32.c + +Patch 6.2.457 (after 6.2.244) +Problem: When 'encoding' is "utf-8" and writing text with chars above 0x80 + in latin1, conversion is wrong every 8200 bytes. (Oyvind Holm) +Solution: Correct the utf_ptr2len_check_len() function and fix the problem + of displaying 0xf7 in utfc_ptr2len_check_len(). +Files: src/mbyte.c + +Patch 6.2.458 +Problem: When 'virtualedit' is set "$" doesn't move to the end of an + unprintable character, causing "y$" not to include that character. + (Fred Ma) +Solution: Set "coladd" to move the cursor to the end of the character. +Files: src/misc2.c + +Patch 6.2.459 (after 6.2.454) +Problem: Variable "b" cannot be written. (Salman Halim) +Solution: Compare strings properly. +Files: src/eval.c + +Patch 6.2.460 (extra, after 6.2.456) +Problem: Compiler warnings for missing prototypes. +Solution: Include the missing prototypes. +Files: src/proto/os_win32.pro + +Patch 6.2.461 +Problem: After using a search command "x" starts putting single characters + in the numbered registers. +Solution: Reset "use_reg_one" at the right moment. +Files: src/normal.c + +Patch 6.2.462 +Problem: Finding a matching parenthesis does not correctly handle a + backslash in a trailing byte. +Solution: Handle multi-byte characters correctly. (Taro Muraoka) +Files: src/search.c + +Patch 6.2.463 (extra) +Problem: Win32: An NTFS file system may contain files with extra info + streams. The current method to copy them creates one and then + deletes it again. (Peter Toennies) Also, only three streams with + hard coded names are copied. +Solution: Use BackupRead() to check which info streams the original file + contains and only copy these streams. +Files: src/os_win32.c + +Patch 6.2.464 (extra, after 6.2.427) +Problem: Amiga: Compilation error with gcc. (Ali Akcaagac) +Solution: Move the #ifdef outside of Read(). +Files: src/os_amiga.c + +Patch 6.2.465 +Problem: When resizing the GUI window the window manager sometimes moves it + left of or above the screen. (Michael McCarty) +Solution: Check the window position after resizing it and move it onto the + screen when it isn't. +Files: src/gui.c + +Patch 6.2.466 (extra, after 6.2.456) +Problem: Win32: Compiling with Borland C fails, and an un/signed warning. +Solution: Redefine wcsicmp() to wcscmpi() and add type casts. (Yasuhiro + Matsumoto) +Files: src/os_win32.c + +Patch 6.2.467 (extra, after 6.2.463) +Problem: Win32: can't compile without multi-byte feature. (Ajit Thakkar) +Solution: Add #ifdefs around the info stream code. +Files: src/os_win32.c + +Patch 6.2.468 +Problem: Compiler warnings for shadowed variables. (Matthias Mohr) +Solution: Delete superfluous variables and rename others. +Files: src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/if_cscope.c, + src/fold.c, src/option.c, src/os_unix.c, src/quickfix.c, + src/regexp.c + +Patch 6.2.469 (extra, after 6.2.456) +Problem: Win32: Can't create swap file when 'encoding' differs from the + active code page. (Kriton Kyrimis) +Solution: In enc_to_ucs2() terminate the converted string with a NUL +Files: src/os_mswin.c + +Patch 6.2.470 +Problem: The name returned by tempname() may be equal to the file used for + shell output when ignoring case. +Solution: Skip 'O' and 'I' in tempname(). +Files: src/eval.c + +Patch 6.2.471 +Problem: "-L/usr/lib" is used in the link command, even though it's + supposed to be filtered out. "-lw" and "-ldl" are not + automatically added when needed for "-lXmu". (Antonio Colombo) +Solution: Check for a space after the argument instead of before. Also + remove "-R/usr/lib" if it's there. Check for "-lw" and "-ldl" + before trying "-lXmu". +Files: src/auto/configure, src/configure.in, src/link.sh + +Patch 6.2.472 +Problem: When using a FileChangedShell autocommand that changes the current + buffer, a buffer exists that can't be wiped out. + Also, Vim sometimes crashes when executing an external command + that changes the buffer and a FileChangedShell autocommand is + used. (Hari Krishna Dara) + Users are confused by the warning for a file being changed outside + of Vim. +Solution: Avoid that the window counter for a buffer is incremented twice. + Avoid that buf_check_timestamp() is used recursively. + Add a hint to look in the help for more info. +Files: src/ex_cmds.c, src/fileio.c + +Patch 6.2.473 +Problem: Using CTRL-] in a help buffer without a name causes a crash. +Solution: Check for name to be present before using it. (Taro Muraoka) +Files: src/tag.c + +Patch 6.2.474 (extra, after 6.2.456) +Problem: When Vim is starting up conversion is done unnecessarily. Failure + to find the runtime files on Windows 98. (Randall W. Morris) +Solution: Init enc_codepage negative, only use it when not negative. + Don't use GetFileAttributesW() on Windows 98 or earlier. +Files: src/globals.h, src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, + src/os_win32.c + +Patch 6.2.475 +Problem: Commands after "perl <<EOF" are parsed as Vim commands when they + are not executed. +Solution: Properly skip over the perl commands. +Files: src/ex_docmd.c, src/ex_getln.c, src/if_perl.xs, src/if_python.c, + src/if_ruby.c, src/if_tcl.c, src/misc2.c + +Patch 6.2.476 +Problem: When reloading a hidden buffer changed outside of Vim and the + current buffer is read-only, the reloaded buffer becomes + read-only. (Hari Krishna Dara) +Solution: Save the 'readonly' flag of the realoaded buffer instead of the + current buffer. +Files: src/fileio.c + +Patch 6.2.477 +Problem: Using remote_send(v:servername, "\<C-V>") causes Vim to hang. + (Yakov Lerner) +Solution: When the resulting string is empty don't set received_from_client. +Files: src/main.c + +Patch 6.2.478 +Problem: Win32: "--remote file" fails changing directory if the current + directory name starts with a single quote. (Iestyn Walters) +Solution: Add a backslash where it will be removed later. +Files: src/main.c, src/misc2.c, src/proto/misc2.pro + +Patch 6.2.479 +Problem: The error message for errors during recovery goes unnoticed. +Solution: Avoid that the hit-enter prompt overwrites the message. Add a few + lines to make the error stand out. +Files: src/main.c, src/message.c, src/memline.c + +Patch 6.2.480 +Problem: NetBeans: Using negative index in array. backslash at end of + message may cause Vim to crash. (Xavier de Gaye) +Solution: Initialize buf_list_used to zero. Check for trailing backslash. +Files: src/netbeans.c + +Patch 6.2.481 +Problem: When writing a file it is not possible to specify that hard and/or + symlinks are to be broken instead of preserved. +Solution: Add the "breaksymlink" and "breakhardlink" values to 'backupcopy'. + (Simon Ekstrand) +Files: runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h + +Patch 6.2.482 +Problem: Repeating insert of CTRL-K 1 S doesn't work. The superscript 1 is + considered to be a digit. (Juergen Kraemer) +Solution: In vim_isdigit() only accept '0' to '9'. Use VIM_ISDIGIT() for + speed where possible. Also add vim_isxdigit(). +Files: src/buffer.c, src/charset.c, src/diff.c, src/digraph.c, + src/edit.c, src/eval.c,, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, + src/if_xcmdsrv.c, src/farsi.c, src/fileio.c, src/fold.c, + src/getchar.c, src/gui.c, src/if_cscope.c, src/macros.h, + src/main.c, src/mark.c, src/mbyte.c, src/menu.c, src/misc1.c, + src/misc2.c, src/normal.c, src/ops.c, src/option.c, + src/proto/charset.pro, src/regexp.c, src/screen.c, src/search.c, + src/syntax.c, src/tag.c, src/term.c, src/termlib.c + +Patch 6.2.483 (extra, after 6.2.482) +Problem: See 6.2.482. +Solution: Extra part of patch 6.2.482. +Files: src/gui_photon.c, src/gui_w48.c, src/os_msdos.c, src/os_mswin.c + +Patch 6.2.484 +Problem: MS-Windows: With the included diff.exe, differences after a CTRL-Z + are not recognized. (Peter Keresztes) +Solution: Write the files with unix fileformat and invoke diff with --binary + if possible. +Files: src/diff.c + +Patch 6.2.485 +Problem: A BufWriteCmd autocommand cannot know if "!" was used or not. + (Hari Krishna Dara) +Solution: Add the v:cmdbang variable. +Files: runtime/doc/eval.txt, src/eval.c, src/proto/eval.pro, + src/fileio.c, src/vim.h + +Patch 6.2.486 (6.2.482) +Problem: Diff for eval.c is missing. +Solution: Addition to patch 6.2.482. +Files: src/eval.c + +Patch 6.2.487 (extra, after 6.2.456) +Problem: Compiler warnings for wrong prototype. (Alejandro Lopez Valencia) +Solution: Delete the prototype for Handle_WM_Notify(). +Files: src/proto/gui_w32.pro + +Patch 6.2.488 +Problem: Missing ")" in *.ch filetype detection. +Solution: Add the ")". (Ciaran McCreesh) +Files: runtime/filetype.vim + +Patch 6.2.489 +Problem: When accidentally opening a session in Vim which has already been + opened in another Vim there is a long row of ATTENTION prompts. + Need to quit each of them to get out. (Robert Webb) +Solution: Add the "Abort" alternative to the dialog. +Files: src/memline.c + +Patch 6.2.490 +Problem: With 'paragraph' it is not possible to use a single dot as a + paragraph boundary. (Dorai Sitaram) +Solution: Allow using " " (two spaces) in 'paragraph' to match ".$" or + ". $" +Files: src/search.c + +Patch 6.2.491 +Problem: Decrementing a position doesn't take care of multi-byte chars. +Solution: Adjust the column for multi-byte characters. Remove mb_dec(). + (Yasuhiro Matsumoto) +Files: src/mbyte.c, src/misc2.c, src/proto/mbyte.pro + +Patch 6.2.492 +Problem: When using ":redraw" while there is a message, the next ":echo" + still causes text to scroll. (Yasuhiro Matsumoto) +Solution: Reset msg_didout and msg_col, so that after ":redraw" the next + message overwrites an existing one. +Files: src/ex_docmd.c + +Patch 6.2.493 +Problem: "@x" doesn't work when 'insertmode' is set. (Benji Fisher) +Solution: Put "restart_edit" in the typeahead buffer, so that it's used + after executing the register contents. +Files: src/ops.c + +Patch 6.2.494 +Problem: Using diff mode with two windows, when moving horizontally in + inserted lines, a fold in the other window may open. +Solution: Compute the line number in the other window correctly. +Files: src/diff.c + +Patch 6.2.495 (extra, after 6.2.456) +Problem: Win32: The file dialog doesn't work on Windows 95. +Solution: Put the wide code of gui_mch_browse() in gui_mch_browseW() and use + it only on Windows NT/2000/XP. +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.2.496 +Problem: FreeBSD 4.x: When compiled with the pthread library (Python) a + complicated pattern may cause Vim to crash. Catching the signal + doesn't work. +Solution: When compiled with threads, instead of using the normal stacksize + limit, use the size of the initial stack. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/os_unix.c + +Patch 6.2.497 (extra) +Problem: Russian messages are only available in one encoding. +Solution: Convert the messages to MS-Windows codepages. (Vassily Ragosin) +Files: src/po/Makefile + +Patch 6.2.498 +Problem: Non-latin1 help files are not properly supported. +Solution: Support utf-8 help files and convert them to 'encoding' when + needed. +Files: src/fileio.c + +Patch 6.2.499 +Problem: When writing a file and halting the system, the file might be lost + when using a journalling file system. +Solution: Use fsync() to flush the file data to disk after writing a file. + (Radim Kolar) +Files: src/fileio.c + +Patch 6.2.500 (extra) +Problem: The DOS/MS-Windows the installer doesn't use the --binary flag for + diff. +Solution: Add --binary to the diff argument in MyDiff(). (Alejandro Lopez- + Valencia) +Files: src/dosinst.c + +Patch 6.2.501 +Problem: Vim does not compile with MorphOS. +Solution: Add a Makefile and a few changes to make Vim work with MorphOS. + (Ali Akcaagac) +Files: runtime/doc/os_amiga.txt, src/INSTALLami.txt, + src/Make_morphos.mak, src/memfile.c, src/term.c + +Patch 6.2.502 +Problem: Building fails for generating message files. +Solution: Add dummy message files. +Files: src/po/ca.po, src/po/ru.po, src/po/sv.po + +Patch 6.2.503 +Problem: Mac: Can't compile MacRoman conversions without the GUI. +Solution: Also link with the Carbon framework for the terminal version, for + the MacRoman conversion functions. (Eckehard Berns) + Remove -ltermcap from the GUI link command, it is not needed. +Files: src/auto/configure, src/Makefile, src/configure.in + +Patch 6.2.504 +Problem: Various problems with 'cindent', among which that a + list of variable declarations is not indented properly. +Solution: Fix the wrong indenting. Improve indenting of C++ methods. + Add the 'i', 'b' and 'W' options to 'cinoptions'. (mostly by + Helmut Stiegler) + Improve indenting of preprocessor-continuation lines. +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + +Patch 6.2.505 +Problem: Help for -P argument is missing. (Ronald Hoellwarth) +Solution: Add the patch that was missing in 6.2.419. +Files: runtime/doc/starting.txt + +Patch 6.2.506 (extra) +Problem: Win32: When 'encoding' is a codepage then reading a utf-8 file + only works when iconv is available. Writing a file in another + codepage uses the wrong kind of conversion. +Solution: Use internal conversion functions. Enable reading and writing + files with 'fileencoding' different from 'encoding' for all valid + codepages and utf-8 without the need for iconv. +Files: src/fileio.c, src/testdir/Make_dos.mak, src/testdir/test52.in, + src/testdir/test52.ok + +Patch 6.2.507 +Problem: The ownership of the file with the password for the NetBeans + connection is not checked. "-nb={file}" doesn't work for GTK. +Solution: Only accept the file when owned by the user and not accessible by + others. Detect "-nb=" for GTK. +Files: src/netbeans.c, src/gui_gtk_x11.c + +Patch 6.2.508 +Problem: Win32: "v:lang" does not show the current language for messages if + it differs from the other locale settings. +Solution: Use the value of the $LC_MESSAGES environment variable. +Files: src/ex_cmds2.c + +Patch 6.2.509 (after 6.2.508) +Problem: Crash when $LANG is not set. +Solution: Add check for NULL pointer. (Ron Aaron) +Files: src/ex_cmds2.c + +Patch 6.2.510 (after 6.2.507) +Problem: Warning for pointer conversion. +Solution: Add a type cast. +Files: src/gui_gtk_x11.c + +Patch 6.2.511 +Problem: Tags in Russian help files are in utf-8 encoding, which may be + different from 'encoding'. +Solution: Use the "TAG_FILE_ENCODING" field in the tags file to specify the + encoding of the tags. Convert help tags from 'encoding' to the + tag file encoding when searching for matches, do the reverse when + listing help tags. +Files: runtime/doc/tagsrch.txt, src/ex_cmds.c, src/tag.c + +Patch 6.2.512 +Problem: Translating "\"\n" is useless. (Gerfried Fuchs) +Solution: Remove the _() around it. +Files: src/main.c, src/memline.c + +Patch 6.2.513 (after 6.2.507) +Problem: NetBeans: the check for owning the connection info file can be + simplified. (Nikolay Molchanov) +Solution: Only check if the access mode is right. +Files: src/netbeans.c + +Patch 6.2.514 +Problem: When a highlight/syntax group name contains invalid characters + there is no warning. +Solution: Add an error for unprintable characters and a warning for other + invalid characters. +Files: src/syntax.c + +Patch 6.2.515 +Problem: When using the options window 'swapfile' is reset. +Solution: Use ":setlocal" instead of ":set". +Files: runtime/optwin.vim + +Patch 6.2.516 +Problem: The sign column cannot be seen, looks like there are two spaces + before the text. (Rob Retter) +Solution: Add the SignColumn highlight group. +Files: runtime/doc/options.txt, runtime/doc/sign.txt, src/option.c, + src/screen.c, src/syntax.c, src/vim.h + +Patch 6.2.517 +Problem: Using "r*" in Visual mode on multi-byte characters replaces + too many characters. In Visual Block mode replacing with a + multi-byte character doesn't work. +Solution: Adjust the operator end for the difference in byte length of the + original and the replaced character. Insert all bytes of a + multi-byte character, take care of double-wide characters. +Files: src/ops.c + +Patch 6.2.518 +Problem: Last line of a window is not updated after using "J" and then "D". + (Adri Verhoef) +Solution: When no line is found below a change that doesn't need updating, + update all lines below the change. +Files: src/screen.c + +Patch 6.2.519 +Problem: Mac: cannot read/write files in MacRoman format. +Solution: Do internal conversion from/to MacRoman to/from utf-8 and latin1. + (Eckehard Berns) +Files: src/fileio.c + +Patch 6.2.520 (extra) +Problem: The NSIS installer is outdated. +Solution: Make it work with NSIS 2.0. Also include console executables for + Win 95/98/ME and Win NT/2000/XP. Use LZWA compression. Use + "/oname" to avoid having to rename files before running NSIS. +Files: Makefile, nsis/gvim.nsi + +Patch 6.2.521 +Problem: When using silent Ex mode the "changing a readonly file" warning + is omitted but the one second wait isn't. (Yakov Lerner) +Solution: Skip the delay when "silent_mode" is set. +Files: src/misc1.c + +Patch 6.2.522 +Problem: GUI: when changing 'cmdheight' in the gvimrc file the window + layout is messed up. (Keith Dart) +Solution: Skip updating the window layout when changing 'cmdheight' while + still starting up. +Files: src/option.c + +Patch 6.2.523 +Problem: When loading a session and aborting when a swap file already + exists, the user is left with useless windows. (Robert Webb) +Solution: Load one file before creating the windows. +Files: src/ex_docmd.c + +Patch 6.2.524 (extra, after 6.2.520) +Problem: Win32: (un)installing gvimext.dll may fail if it was used. + The desktop and start menu links are created for the current user + instead of all users. + Using the home directory as working directory for the links is a + bad idea for multi-user systems. + Cannot use Vim from the "Open With..." menu. +Solution: Force a reboot if necessary. (Alejandro Lopez-Valencia) Also use + macros for the directory of the source and runtime files. Use + "CSIDL_COMMON_*" instead of "CSIDL_*" when possible. + Do not specify a working directory in the links. + Add Vim to the "Open With..." menu. (Giuseppe Bilotta) +Files: nsis/gvim.nsi, src/dosinst.c, src/dosinst.h, src/uninstal.c + +Patch 6.2.525 +Problem: When the history contains a very long line ":history" causes a + crash. (Volker Kiefel) +Solution: Shorten the history entry to fit it in one line. +Files: src/ex_getln.c + +Patch 6.2.526 +Problem: When s:lang is "ja" the Japanese menus are not used. +Solution: Add 'encoding' to the language when there is no charset. +Files: runtime/menu.vim + +Patch 6.2.527 +Problem: The 2html script uses ":wincmd p", which breaks when using some + autocommands. +Solution: Remember the window numbers and jump to them with ":wincmd w". + Also add XHTML support. (Panagiotis Issaris) +Files: runtime/syntax/2html.vim + +Patch 6.2.528 +Problem: NetBeans: Changes of the "~" command are not reported. +Solution: Call netbeans_inserted() after performing "~". (Gordon Prieur) + Also change NetBeans debugging to append to the log file. + Also fix that "~" in Visual block mode changes too much if there + are multi-byte characters. +Files: src/nbdebug.c, src/normal.c, src/ops.c + +Patch 6.2.529 (extra) +Problem: VisVim only works for Admin. Doing it for one user doesn't work. + (Alexandre Gouraud) +Solution: When registering the module fails, simply continue. +Files: src/VisVim/VisVim.cpp + +Patch 6.2.530 +Problem: Warning for missing prototype on the Amiga. +Solution: Include time.h +Files: src/version.c + +Patch 6.2.531 +Problem: In silent ex mode no messages are given, which makes debugging + very difficult. +Solution: Do output messages when 'verbose' is set. +Files: src/message.c, src/ui.c + +Patch 6.2.532 (extra) +Problem: Compiling for Win32s with VC 4.1 doesn't work. +Solution: Don't use CP_UTF8 if it's not defined. Don't use CSIDL_COMMON* + when not defined. +Files: src/dosinst.h, src/fileio.c + +Win32 console: After patch 6.2.398 Ex mode did not work. (Yasuhiro Matsumoto) + +Patch 6.3a.001 +Problem: Win32: if testing for the "--binary" option fails, diff isn't used + at all. +Solution: Handle the "ok" flag properly. (Yasuhiro Matsumoto) +Files: src/diff.c + +Patch 6.3a.002 +Problem: NetBeans: An insert command from NetBeans beyond the end of a + buffer crashes Vim. (Xavier de Gaye) +Solution: Use a local pos_T structure for the position. +Files: src/netbeans.c + +Patch 6.3a.003 +Problem: E315 error with auto-formatting comments. (Henry Van Roessel) +Solution: Pass the line number to same_leader(). +Files: src/ops.c + +Patch 6.3a.004 +Problem: Test32 fails on Windows XP for the DJGPP version. Renaming + test11.out fails. +Solution: Don't try renaming, create new files to use for the test. +Files: src/testdir/test32.in, src/testdir/test32.ok + +Patch 6.3a.005 +Problem: ":checkpath!" does not use 'includeexpr'. +Solution: Use a file name that was found directly. When a file was not + found and the located name is empty, use the rest of the line. +Files: src/search.c + +Patch 6.3a.006 +Problem: "yip" moves the cursor to the first yanked line, but not to the + first column. Looks like not all text was yanked. (Jens Paulus) +Solution: Move the cursor to the first column. +Files: src/search.c + +Patch 6.3a.007 +Problem: 'cindent' recognizes "enum" but not "typedef enum". +Solution: Skip over "typedef" before checking for "enum". (Helmut Stiegler) + Also avoid that searching for this item goes too far back. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 6.3a.008 (extra) +Problem: Windows 98: Some of the wide functions are not implemented, + resulting in file I/O to fail. This depends on what Unicode + support is installed. +Solution: Handle the failure and fall back to non-wide functions. +Files: src/os_win32.c + +Patch 6.3a.009 +Problem: Win32: Completion of filenames does not work properly when + 'encoding' differs from the active code page. +Solution: Use wide functions for expanding wildcards when appropriate. +Files: src/misc1.c + +Patch 6.3a.010 (extra) +Problem: Win32: Characters in the window title that do not appear in the + active codepage are replaced by a question mark. +Solution: Use DefWindowProcW() instead of DefWindowProc() when possible. +Files: src/glbl_ime.cpp, src/globals.h, src/proto/gui_w16.pro, + src/proto/gui_w32.pro, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.3a.011 +Problem: Using the explorer plugin changes a local directory to the global + directory. +Solution: Don't use ":chdir" to restore the current directory. Make + "expand('%:p')" remove "/../" and "/./" items from the path. +Files: runtime/plugin/explorer.vim, src/eval.c, src/os_unix.c + +Patch 6.3a.012 (extra) +Problem: On Windows 98 the installer doesn't work, don't even get the "I + agree" button. The check for the path ending in "vim" makes the + browse dialog hard to use. The default path when no previous Vim + is installed is "c:\vim" instead of "c:\Program Files\Vim". +Solution: Remove the background gradient command. Change the + .onVerifyInstDir function to a leave function for the directory + page. Don't let the install program default to c:\vim when no + path could be found. +Files: nsis/gvim.nsi, src/dosinst.c + +Patch 6.3a.013 (extra) +Problem: Win32: Characters in the menu that are not in the active codepage + are garbled. +Solution: Convert menu strings from 'encoding' to the active codepage. +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.3a.014 +Problem: Using multi-byte text and highlighting in a statusline causes gaps + to appear. (Helmut Stiegler) +Solution: Advance the column by text width instead of number of bytes. Add + the vim_strnsize() function. +Files: src/charset.c, src/proto/charset.pro, src/screen.c + +Patch 6.3a.015 +Problem: Using the "select all" menu item when 'insertmode' is set and + clicking the mouse button doesn't return to Insert mode. The + Buffers/Delete menu doesn't offer a choice to abandon a changed + buffer. (Jens Paulus) +Solution: Don't use CTRL-\ CTRL-N. Add ":confirm" for the Buffers menu + items. +Files: runtime/menu.vim + +Patch 6.3a.016 +Problem: After cancelling the ":confirm" dialog the error message and + hit-enter prompt may not be displayed properly. +Solution: Flush output after showing the dialog. +Files: src/message.c + +Patch 6.3a.017 +Problem: servername() doesn't work when Vim was started with the "-X" + argument or when the "exclude" in 'clipboard' matches the terminal + name. (Robert Nowotniak) +Solution: Force connecting to the X server when using client-server + commands. +Files: src/eval.c, src/globals.h, src/os_unix.c + +Patch 6.3a.018 (after 6.3a.017) +Problem: Compiler warning for return value of make_connection(). +Solution: Use void return type. +Files: src/eval.c + +Patch 6.3a.019 (extra) +Problem: Win32: typing non-latin1 characters doesn't work. +Solution: Invoke _OnChar() directly to avoid that the argument is truncated + to a byte. Convert the UTF-16 character to bytes according to + 'encoding' and ignore 'termencoding'. Same for _OnSysChar(). +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.3a.020 (extra) +Problem: Missing support for AROS (AmigaOS reimplementation). Amiga GUI + doesn't work. +Solution: Add AROS support. (Adam Chodorowski) + Fix Amiga GUI problems. (Georg Steger, Ali Akcaagac) +Files: Makefile, src/Make_aros.mak, src/gui_amiga.c, src/gui_amiga.h, + src/memfile.c, src/os_amiga.c, src/term.c + +Patch 6.3a.021 (after 6.3a.017) +Problem: Can't compile with X11 but without GUI. +Solution: Put use of "gui.in_use" inside an #ifdef. +Files: src/eval.c + +Patch 6.3a.022 +Problem: When typing Tabs when 'softtabstop' is used and 'list' is set a + tab is counted for two spaces. +Solution: Use the "L" flag in 'cpoptions' to tell whether a tab is counted + as two spaces or as 'tabstop'. (Antony Scriven) +Files: runtime/doc/options.txt, src/edit.c + +Patch 6.3a.023 +Problem: Completion on the command line doesn't handle backslashes + properly. Only the tail of matches is shown, even when not + completing filenames. +Solution: When turning the string into a pattern double backslashes. Don't + omit the path when not expanding files or directories. +Files: src/ex_getln.c + +Patch 6.3a.024 +Problem: The "save all" toolbar item fails for buffers that don't have a + name. When using ":wa" or closing the Vim window and there are + nameless buffers, browsing for a name may cause the name being + given to the wrong buffer or not stored properly. ":browse" only + worked for one file. +Solution: Use ":confirm browse" for "save all". + Pass buffer argument to setfname(). Restore "browse" flag and + "forceit" after doing the work for one file. +Files: runtime/menu.vim, src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/memline.c, + src/message.c, src/window.c, src/proto/buffer.pro, + src/proto/ex_cmds2.pro, src/proto/memline.pro + +Patch 6.3a.025 +Problem: Setting 'virtualedit' moves the cursor. (Benji Fisher) +Solution: Update the virtual column before using it. +Files: src/option.c + +Patch 6.3a.026 (extra, after 6.3a.008) +Problem: Editing files on Windows 98 doesn't work when 'encoding' is + "utf-8" (Antoine Mechelynck) + Warning for missing function prototype. +Solution: For all wide functions check if it failed because it is not + implemented. Use ANSI function declaration for char_to_string(). +Files: src/gui_w48.c, src/os_mswin.c, src/os_win32.c + +Patch 6.3a.027 (extra, after 6.3a.026) +Problem: Compiler warning for function argument. +Solution: Declare both char and WCHAR arrays. +Files: src/gui_w48.c + +Patch 6.3a.028 +Problem: ":normal ." doesn't work inside a function, because redo is saved + and restored. (Benji Fisher) +Solution: Make a copy of the redo buffer when executing a function. +Files: src/getchar.c + +Patch 6.3b.001 (extra) +Problem: Bcc 5: The generated auto/pathdef can't be compiled. +Solution: Fix the way quotes and backslashes are escaped. +Files: src/Make_bc5.mak + +Patch 6.3b.002 +Problem: Win32: conversion during file write fails when a double-byte + character is split over two writes. +Solution: Fix the conversion retry without a trailing byte. (Taro Muraoka) +Files: src/fileio.c + +Patch 6.3b.003 (extra) +Problem: Win32: When compiling with Borland C 5.5 and 'encoding' is "utf-8" + then Vim can't open files under MS-Windows 98. (Antoine J. + Mechelynck) +Solution: Don't use _wstat(), _wopen() and _wfopen() in this situation. +Files: src/os_mswin.c, src/os_win32.c + +Patch 6.3b.004 +Problem: ":helpgrep" includes a trailing CR in the text line. +Solution: Remove the CR. +Files: src/quickfix.c + +Patch 6.3b.005 +Problem: ":echo &g:ai" results in the local option value. (Salman Halim) +Solution: Pass the flags from find_option_end() to get_option_value(). +Files: src/eval.c + +Patch 6.3b.006 +Problem: When using "mswin.vim", CTRL-V in Insert mode leaves cursor before + last pasted character. (Mathew Davis) +Solution: Use the same Paste() function as in menu.vim. +Files: runtime/mswin.vim + +Patch 6.3b.007 +Problem: Session file doesn't restore view on windows properly. (Robert + Webb) +Solution: Restore window sizes both before and after restoring the view, so + that the view, cursor position and size are restored properly. +Files: src/ex_docmd.c + +Patch 6.3b.008 +Problem: Using ":finally" in a user command doesn't always work. (Hari + Krishna Dara) +Solution: Don't assume that using getexline() means the command was typed. +Files: src/ex_docmd.c + +Patch 6.3b.009 (extra) +Problem: Win32: When the -P argument is not found in a window title, there + is no error message. +Solution: When the window can't be found give an error message and exit. + Also use try/except to catch failing to open the MDI window. + (Michael Wookey) +Files: src/gui_w32.c + +Patch 6.3b.010 +Problem: Win32: Using the "-D" argument and expanding arguments may cause a + hang, because the terminal isn't initialized yet. (Vince Negri) +Solution: Don't go into debug mode before the terminal is initialized. +Files: src/main.c + +Patch 6.3b.011 +Problem: Using CTRL-\ e while obtaining an expression aborts the command + line. (Hari Krishna Dara) +Solution: Insert the CTRL-\ e as typed. +Files: src/ex_getln.c + +Patch 6.3b.012 (after 6.3b.010) +Problem: Can't compile with tiny features. (Norbert Tretkowski) +Solution: Add #ifdefs. +Files: src/main.c + +Patch 6.3b.013 +Problem: Loading a session file results in editing the wrong file in the + first window when this is not the file at the current position in + the argument list. (Robert Webb) +Solution: Check w_arg_idx_invalid to decide whether to edit a file. +Files: src/ex_docmd.c + +Patch 6.3b.014 +Problem: ":runtime! foo*.vim" may using freed memory when a sourced script + changes the value of 'runtimepath'. +Solution: Make a copy of 'runtimepath' when looping over the matches. +Files: src/ex_cmds2.c + +Patch 6.3b.015 +Problem: Get lalloc(0) error when using "p" in Visual mode while + 'clipboard' contains "autoselect,unnamed". (Mark Wagonner) +Solution: Avoid allocating zero bytes. Obtain the clipboard when necessary. +Files: src/ops.c + +Patch 6.3b.016 +Problem: When 'virtualedit' is used "x" doesn't delete the last character + of a line that has as many characters as 'columns'. (Yakov Lerner) +Solution: When the cursor isn't moved let oneright() return FAIL. +Files: src/edit.c + +Patch 6.3b.017 +Problem: Win32: "vim --remote-wait" doesn't exit when the server finished + editing the file. (David Fishburn) +Solution: In the rrhelper plugin change backslashes to forward slashes and + escape special characters. +Files: runtime/plugin/rrhelper.vim + +Patch 6.3b.018 +Problem: The list of help files in the "local additions" table doesn't + recognize utf-8 encoding. (Yasuhiro Matsumoto) +Solution: Recognize utf-8 characters. +Files: src/ex_cmds.c + +Patch 6.3b.019 +Problem: When $VIMRUNTIME is not a full path name the "local additions" + table lists all the help files. +Solution: Use fullpathcmp() instead of fnamecmp() to compare the directory + names. +Files: src/ex_cmds.c + +Patch 6.3b.020 +Problem: When using CTRL-^ when entering a search string, the item in the + statusline that indicates the keymap is not updated. (Ilya + Dogolazky) +Solution: Mark the statuslines for updating. +Files: src/ex_getln.c + +Patch 6.3b.021 +Problem: The swapfile is not readable for others, the ATTENTION prompt does + not show all info when someone else is editing the same file. + (Marcel Svitalsky) +Solution: Use the protection of original file for the swapfile and set it + after creating the swapfile. +Files: src/fileio.c + +Patch 6.3b.022 +Problem: Using "4v" to select four times the old Visual area may put the + cursor beyond the end of the line. (Jens Paulus) +Solution: Correct the cursor column. +Files: src/normal.c + +Patch 6.3b.023 +Problem: When "3dip" starts in an empty line, white lines after the + non-white lines are not deleted. (Jens Paulus) +Solution: Include the white lines. +Files: src/search.c + +Patch 6.3b.024 +Problem: "2daw" does not delete leading white space like "daw" does. (Jens + Paulus) +Solution: Include the white space when a count is used. +Files: src/search.c + +Patch 6.3b.025 +Problem: Percentage in ruler isn't updated when a line is deleted. (Jens + Paulus) +Solution: Check for a change in line count when deciding to update the ruler. +Files: src/screen.c, src/structs.h + +Patch 6.3b.026 +Problem: When selecting "abort" at the ATTENTION prompt for a file that is + already being edited Vim crashes. +Solution: Don't abort creating a new buffer when we really need it. +Files: src/buffer.c, src/vim.h + +Patch 6.3b.027 +Problem: Win32: When enabling the menu in a maximized window, Vim uses more + lines than what is room for. (Shizhu Pan) +Solution: When deciding to call shell_resized(), also compare the text area + size with Rows and Columns, not just with screen_Rows and + screen_Columns. +Files: src/gui.c + +Patch 6.3b.028 +Problem: When in diff mode, setting 'rightleft' causes a crash. (Eddine) +Solution: Check for last column differently when 'rightleft' is set. +Files: src/screen.c + +Patch 6.3b.029 +Problem: Win32: warning for uninitialized variable. +Solution: Initialize to zero. +Files: src/misc1.c + +Patch 6.3b.030 +Problem: After Visually selecting four characters, changing it to other + text, Visually selecting and yanking two characters: "." changes + four characters, another "." changes two characters. (Robert Webb) +Solution: Don't store the size of the Visual area when redo is active. +Files: src/normal.c + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/vi_diff.txt b/en/vi_diff.txt new file mode 100644 index 000000000..036e56247 --- /dev/null +++ b/en/vi_diff.txt @@ -0,0 +1,884 @@ +*vi_diff.txt* For Vim version 6.3. Last change: 2004 Mar 26 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Differences between Vim and Vi *vi-differences* + +Throughout the help files differences between Vim and Vi/Ex are given in +curly braces, like "{not in Vi}". This file only lists what has not been +mentioned in other files and gives an overview. + +Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing +is ":open". There are probably a lot of small differences (either because Vim +is missing something or because Posix is beside the mark). + +1. Missing commands |missing-commands| +2. Missing options |missing-options| +3. Limits |limits| +4. The most interesting additions |vim-additions| +5. Other vim features |other-features| +6. Command-line arguments |cmdline-arguments| + +============================================================================== +1. Missing commands *missing-commands* + +This command is in Vi, but not in Vim: + +:o[pen] {Vi: start editing in open mode} *:o* *:op* *:open* + +============================================================================== +2. Missing options *missing-options* + +These options are in the Unix Vi, but not in Vim. If you try to set one of +them you won't get an error message, but the value is not used and cannot be +printed. + +autoprint (ap) boolean (default on) *'autoprint'* *'ap'* +beautify (bf) boolean (default off) *'beautify'* *'bf'* +flash (fl) boolean (default ??) *'flash'* *'fl'* +graphic (gr) boolean (default off) *'graphic'* *'gr'* +hardtabs (ht) number (default 8) *'hardtabs'* *'ht'* + number of spaces that a <Tab> moves on the display +mesg boolean (default on) *'mesg'* +novice boolean (default off) *'novice'* +open boolean (default on) *'open'* +optimize (op) boolean (default off) *'optimize'* *'op'* +prompt boolean (default on) *'prompt'* +redraw boolean (default off) *'redraw'* +slowopen (slow) boolean (default off) *'slowopen'* *'slow'* +sourceany boolean (default off) *'sourceany'* +window (wi) number (default 23) *'window'* *'wi'* +w300 number (default 23) *'w300'* +w1200 number (default 23) *'w1200'* +w9600 number (default 23) *'w9600'* + +============================================================================== +3. Limits *limits* + +Vim has only a few limits for the files that can be edited {Vi: can not handle +<Nul> characters and characters above 128, has limited line length, many other +limits}. + *E340* +Maximum line length On machines with 16-bit ints (Amiga and MS-DOS real + mode): 32767, otherwise 2147483647 characters. + Longer lines are split. +Maximum number of lines 2147483647 lines. +Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is + 32 bits. Much more for 64 bit longs. Also limited + by available disk space for the |swap-file|. + *E75* +Length of a file path Unix and Win32: 1024 characters, otherwise 256 + characters (or as much as the system supports). +Length of an expanded string option + Unix and Win32: 1024 characters, otherwise 256 + characters +Maximum display width Unix and Win32: 1024 characters, otherwise 255 + characters +Maximum lhs of a mapping 50 characters. +Number of highlighting different types: 223 + +Information for undo and text in registers is kept in memory, thus when making +(big) changes the amount of (virtual) memory available limits the number of +undo levels and the text that can be kept in registers. Other things are also +kept in memory: Command-line history, error messages for Quickfix mode, etc. + +Memory usage limits +------------------- + +The option 'maxmem' ('mm') is used to set the maximum memory used for one +buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for +all buffers (in kilobytes). The defaults depend on the system used. For the +Amiga and MS-DOS, 'maxmemtot' is set depending on the amount of memory +available. If you don't like Vim to swap to a file, set 'maxmem' and +'maxmemtot' to a very large value. The swap file will then only be used for +recovery. If you don't want a swap file at all, set 'updatecount' to 0, or +use the "-n" argument when starting Vim. Note that the 'maxmem' option is +only used when a buffer is created. Changing this option does not affect +buffers that have already been loaded. Thus you can set it to different +values for different files. 'maxmemtot' works always. + +============================================================================== +4. The most interesting additions *vim-additions* + +Vi compatibility. |'compatible'| + Although Vim is 99% Vi compatible, some things in Vi can be + considered to be a bug, or at least need improvement. But still, Vim + starts in a mode which behaves like the "real" Vi as much as possible. + To make Vim behave a little bit better, try resetting the 'compatible' + option: + :set nocompatible + Or start Vim with the "-N" argument: + vim -N + This is done automatically if you have a .vimrc file. See |startup|. + The 'cpoptions' option can be used to set Vi compatibility on/off for + a number of specific items. + +Support for different systems. + Vim can be used on: + - All Unix systems (it works on all systems it was tested on, although + the GUI and Perl interface may not work everywhere). + - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). + - MS-DOS in real-mode (no additional drivers required). + - In protected mode on Windows 3.1 and MS-DOS (DPMI driver required). + - Windows 95 and Windows NT, with support for long file names. + - OS/2 (needs emx.dll) + - Atari MiNT + - VMS + - BeOS + - Macintosh + - Risc OS + - IBM OS/390 + +Multi level undo. |undo| + 'u' goes backward in time, 'CTRL-R' goes forward again. Set option + 'undolevels' to the number of changes to be remembered (default 1000). + Set 'undolevels' to 0 for a vi-compatible one level undo. Set it to + -1 for no undo at all. + + When all changes in a buffer have been undone, the buffer is not + considered changed anymore. You can exit it with :q, without <!>. + +Graphical User Interface (GUI) |gui| + Included support for GUI: menu's, mouse, scrollbars, etc. You can + define your own menus. Better support for CTRL/SHIFT/ALT keys in + combination with special keys and mouse. Supported for various + platforms, such as X11 (with Motif and Athena interfaces), GTK, Win32 + (Windows 95 and later), BeOS, Amiga and Macintosh. + +Multiple windows and buffers. |windows.txt| + Vim can split the screen into several windows, each editing a + different buffer or the same buffer at a different location. Buffers + can still be loaded (and changed) but not displayed in a window. This + is called a hidden buffer. Many commands and options have been added + for this facility. + +Syntax highlighting. |:syntax| + Vim can highlight keywords, patterns and other things. This is + defined by a number of ":syntax" commands, and can be made to + highlight most languages and file types. A number of files are + included for highlighting the most common languages, like C, C++, + Java, Pascal, Makefiles, shell scripts, etc. The colors used for + highlighting can be defined for ordinary terminals, color terminals + and the GUI with the ":highlight" command. + +Folding |folding| + A range of lines can be shown as one "folded" line. This allows + overviewing a file and moving blocks of text around quickly. + Folds can be created manually, from the syntax of the file, by indent, + etc. + +Plugins |add-plugin| + The functionality can be extended by dropping a plugin file in the + right directory. That's an easy way to start using Vim scripts + written by others. Plugins can be for all kind of files, or + specifically for a filetype. + +Repeat a series of commands. |q| + "q{c}" starts recording typed characters into named register {c} + (append to the register if register name is uppercase). A subsequent + "q" stops recording. The register can then be executed with the + "@{c}" command. This is very useful to repeat a complex action. + +Flexible insert mode. |ins-special-special| + The arrow keys can be used in insert mode to move around in the file. + This breaks the insert in two parts as far as undo and redo is + concerned. + + CTRL-O can be used to execute a single command-mode command. This is + almost the same as hitting <Esc>, typing the command and doing "a". + +Visual mode. |Visual-mode| + Visual can be used to first highlight a piece of text and then give a + command to do something with it. This is an (easy to use) alternative + to first giving the operator and then moving to the end of the text + to be operated upon. "v" and "V" are used to start Visual mode. "v" + works on characters and 'V' on lines. Move the cursor to extend the + Visual part. It is shown highlighted on the screen. By typing "o" + the other end of the Visual text can be moved. The Visual text can + be affected by an operator: + d delete + c change + y yank + > or < insert or delete indent + ! filter through external program + = filter through indent + : start ":" command for the Visual lines. + gq format text to 'textwidth' columns + J join lines + ~ swap case + u make lowercase + U make uppercase + +Block operators. |visual-block| + With Visual a rectangular block of text can be selected. Start Visual + with CTRL-V. The block can be deleted ("d"), yanked ("y") or its case + can be changed ("~", "u" and "U"). A deleted or yanked block can be + put into the text with the "p" and "P" commands. + +Online help system. |:help| + Help is displayed in a window. The usual commands can be used to + move around, search for a string, etc. Tags can be used to jump + around in the help files, just like hypertext links. The ":help" + command takes an argument to quickly jump to the info on a subject. + <F1> is the quick access to the help system. The name of the help + index file can be set with the 'helpfile' option. + +Command-line editing and history. |cmdline-editing| + You can insert or delete at any place in the command-line using the + cursor keys. The right/left cursor keys can be used to move + forward/backward one character. The shifted right/left cursor keys + can be used to move forward/backward one word. CTRL-B/CTRL-E can be + used to go to the begin/end of the command-line. + + |cmdline-history| + The command-lines are remembered. The up/down cursor keys can be used + to recall previous command-lines. The 'history' option can be set to + the number of lines that will be remembered. There is a separate + history for commands and for search patterns. + +Command-line completion. |cmdline-completion| + While entering a command-line (on the bottom line of the screen) + <Tab> can be typed to complete + what example ~ + - command :e<Tab> + - tag :ta scr<Tab> + - option :set sc<Tab> + - option value :set hf=<Tab> + - file name :e ve<Tab> + - etc. + + If there are multiple matches, CTRL-N (next) and CTRL-P (previous) + will walk through the matches. <Tab> works like CTRL-N, but wraps + around to the first match. + + The 'wildchar' option can be set to the character for command-line + completion, <Tab> is the default. CTRL-D can be typed after an + (incomplete) wildcard; all matches will be listed. CTRL-A will insert + all matches. CTRL-L will insert the longest common part of the + matches. + +Insert-mode completion |ins-completion| + In insert mode the CTRL-N and CTRL-P keys can be used to complete a + word that has previously been used. |i_CTRL-N| + With CTRL-X another mode is entered, through which completion can be + done for: + |i_CTRL-X_CTRL-F| file names + |i_CTRL-X_CTRL-K| words from 'dictionary' files + |i_CTRL-X_CTRL-T| words from 'thesaurus' files + |i_CTRL-X_CTRL-I| words from included files + |i_CTRL-X_CTRL-L| whole lines + |i_CTRL-X_CTRL-]| words from the tags file + |i_CTRL-X_CTRL-D| definitions or macros + +Long line support |'wrap'| |'linebreak'| + If the 'wrap' option is off, long lines will not wrap and only part + of them will be shown. When the cursor is moved to a part that is not + shown, the screen will scroll horizontally. The minimum number of + columns to scroll can be set with the 'sidescroll' option. The "zh" + and "zl" commands can be used to scroll sideways. + Alternatively, long lines are broken in between words when the + 'linebreak' option is set. This allows editing a single-line + paragraph conveniently (e.g. when the text is later read into a DTP + program). Move the cursor up/down with the "gk" and "gj" commands. + +Text formatting. |formatting| + The 'textwidth' option can be used to automatically limit the line + length. This supplements the 'wrapmargin' option of Vi, which was not + very useful. The "gq" operator can be used to format a piece of text + (for example, "gqap" formats the current paragraph). Commands for + text alignment: ":center", ":left" and ":right". + +Extended search patterns |pattern| + There are many extra items to match various text items. Examples: + A "\n" can be used in a search pattern to match a line break. + "x\{2,4}" matches "x" 2 to 4 times. + "\s" matches a white space character. + +Edit-compile-edit speedup. |quickfix| + The ":make" command can be used to run the compilation and jump to + the first error. Alternatively Vim can be started with the "-q" + option from the compiler. A file with compiler error messages is + interpreted. Vim starts editing at the first error. + + Each line in the error file is scanned for the name of a file, line + number and error message. The 'errorformat' option can be set to a + list of scanf-like strings to handle output from many compilers. + + The ":cn" command can be used to jump to the next error. + ":cl" lists all the error messages. Other commands are available + (almost the same as with Manx's Z editor on the Amiga). + The 'makeef' option has the name of the file with error messages. + The 'makeprg' option contains the name of the program to be executed + with the ":make" command. + The 'shellpipe' option contains the string to be used to put the + output of the compiler into the errorfile. + +Improved indenting for C programs |'cindent'| + When the 'cindent' option is on the indent of each line is + automatically adjusted. C syntax is mostly recognized. The indent + for various styles can be set with 'cinoptions'. The keys to trigger + indenting can be set with 'cinkeys'. + + Comments can be automatically formatted. The 'comments' option can be + set to the characters that start and end a comment. This works best + for C code, but also works for e-mail (">" at start of the line) and + other types of text. The "=" operator can be used to re-indent + lines. + +Searching for words in include files |include-search| + The "[i" command can be used to search for a match of the word under + the cursor in the current and included files. The 'include' option + can be set the a pattern that describes a command to include a file + (the default is for C programs). + The "[I" command lists all matches, the "[ CTRL-I" command jumps to + a match. + The "[d", "[D" and "[ CTRL-D" commands do the same, but only for + lines where the pattern given with the 'define' option matches. + +Automatic commands |autocommand| + Commands can be automatically executed when reading a file, writing a + file, jumping to another buffer, etc., depending on the file name. + This is useful to set options and mappings for C programs, + documentation, plain text, e-mail, etc. This also makes it possible + to edit compressed files. + +Scripts and Expressions |expression| + Commands have been added to form up a simple but powerful script + language. + |:if| Conditional execution, which can be used for example + to set options depending on the value of $TERM. + |:while| Repeat a number of commands. + |:echo| Print the result of an expression. + |:let| Assign a value to an internal variable, option, etc. + |:execute| Execute a command formed by an expression. + etc. + +Viminfo |viminfo-file| + The command-line history, marks and registers can be stored in a file + that is read on startup. This can be used to repeat a search command + or command-line command after exiting and restarting Vim. It is also + possible to jump right back to where the last edit stopped with "'0". + The 'viminfo' option can be set to select which items to store in the + .viminfo file. This is off by default. + +Mouse support |mouse-using| + The mouse is supported in the GUI version, in an xterm for Unix, for + Linux with gpm, for MS-DOS, and Win32. It can be used to position the + cursor, select the visual area, paste a register, etc. + +Usage of key names |<>| |key-notation| + Special keys now all have a name like <Up>, <End>, etc. + This name can be used in mappings, to make it easy to edit them. + +Editing binary files |edit-binary| + Vim can edit binary files. You can change a few characters in an + executable file, without corrupting it. Vim doesn't remove NUL + characters (they are represented as <NL> internally). + |-b| command-line argument to start editing a binary file + |'binary'| Option set by "-b". Prevents adding an <EOL> for the + last line in the file. + +Multi-language support |multi-lang| + Files in double-byte or multi-byte encodings can be edited. There is + UTF-8 support to be able to edit various languages at the same time, + without switching fonts. |UTF-8| + Messages and menus are available in different languages. + +============================================================================== +5. Other vim features *other-features* + +A random collection of nice extra features. + + +When Vim is started with "-s scriptfile", the characters read from +"scriptfile" are treated as if you typed them. If end of file is reached +before the editor exits, further characters are read from the console. + +The "-w" option can be used to record all typed characters in a script file. +This file can then be used to redo the editing, possibly on another file or +after changing some commands in the script file. + +The "-o" option opens a window for each argument. "-o4" opens four windows. + +Vi requires several termcap entries to be able to work full-screen. Vim only +requires the "cm" entry (cursor motion). + + +In command mode: + +When the 'showcmd' option is set, the command characters are shown in the last +line of the screen. They are removed when the command is finished. + +If the 'ruler' option is set, the current cursor position is shown in the +last line of the screen. + +"U" still works after having moved off the last changed line and after "u". + +Characters with the 8th bit set are displayed. The characters between '~' and +0xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the +'isprint' option. + +"][" goes to the next ending of a C function ('}' in column 1). +"[]" goes to the previous ending of a C function ('}' in column 1). + +"]f", "[f" and "gf" start editing the file whose name is under the cursor. +CTRL-W f splits the window and starts editing the file whose name is under +the cursor. + +"*" searches forward for the identifier under the cursor, "#" backward. +"K" runs the program defined by the 'keywordprg' option, with the identifier +under the cursor as argument. + +"%" can be preceded with a count. The cursor jumps to the line that +percentage down in the file. The normal "%" function to jump to the matching +brace skips braces inside quotes. + +With the CTRL-] command, the cursor may be in the middle of the identifier. + +The used tags are remembered. Commands that can be used with the tag stack +are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack. + +The 'tags' option can be set to a list of tag file names. Thus multiple +tag files can be used. For file names that start with "./", the "./" is +replaced with the path of the current file. This makes it possible to use a +tags file in the same directory as the file being edited. + +Previously used file names are remembered in the alternate file name list. +CTRL-^ accepts a count, which is an index in this list. +":files" command shows the list of alternate file names. +"#<N>" is replaced with the <N>th alternate file name in the list. +"#<" is replaced with the current file name without extension. + +Search patterns have more features. The <NL> character is seen as part of the +search pattern and the substitute string of ":s". Vi sees it as the end of +the command. + +Searches can put the cursor on the end of a match and may include a character +offset. + +Count added to "~", ":next", ":Next", "n" and "N". + +The command ":next!" with 'autowrite' set does not write the file. In vi the +file was written, but this is considered to be a bug, because one does not +expect it and the file is not written with ":rewind!". + +In Vi when entering a <CR> in replace mode deletes a character only when 'ai' +is set (but does not show it until you hit <Esc>). Vim always deletes a +character (and shows it immediately). + +Added :wnext command. Same as ":write" followed by ":next". + +The ":w!" command always writes, also when the file is write protected. In Vi +you would have to do ":!chmod +w %" and ":set noro". + +When 'tildeop' has been set, "~" is an operator (must be followed by a +movement command). + +With the "J" (join) command you can reset the 'joinspaces' option to have only +one space after a period (Vi inserts two spaces). + +"cw" can be used to change white space formed by several characters (Vi is +confusing: "cw" only changes one space, while "dw" deletes all white space). + +"o" and "O" accept a count for repeating the insert (Vi clears a part of +display). + +Flags after Ex commands not supported (no plans to include it). + +On non-UNIX systems ":cd" command shows current directory instead of going to +the home directory (there isn't one). ":pwd" prints the current directory on +all systems. + +After a ":cd" command the file names (in the argument list, opened files) +still point to the same files. In Vi ":cd" is not allowed in a changed file; +otherwise the meaning of file names change. + +":source!" command reads Vi commands from a file. + +":mkexrc" command writes current modified options and mappings to a ".exrc" +file. ":mkvimrc" writes to a ".vimrc" file. + +No check for "tail recursion" with mappings. This allows things like +":map! foo ^]foo". + +When a mapping starts with number, vi loses the count typed before it (e.g. +when using the mapping ":map g 4G" the command "7g" goes to line 4). This is +considered a vi bug. Vim concatenates the counts (in the example it becomes +"74G"), as most people would expect. + +The :put! command inserts the contents of a register above the current line. + +The "p" and "P" commands of vi cannot be repeated with "." when the putted +text is less than a line. In Vim they can always be repeated. + +":noremap" command can be used to enter a mapping that will not be remapped. +This is useful to exchange the meaning of two keys. ":cmap", ":cunmap" and +":cnoremap" can be used for mapping in command-line editing only. ":imap", +":iunmap" and ":inoremap" can be used for mapping in insert mode only. +Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev" +":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev". + +In Vi the command ":map foo bar" would remove a previous mapping +":map bug foo". This is considered a bug, so it is not included in Vim. +":unmap! foo" does remove ":map! bug foo", because unmapping would be very +difficult otherwise (this is vi compatible). + +The ':' register contains the last command-line. +The '%' register contains the current file name. +The '.' register contains the last inserted text. + +":dis" command shows the contents of the yank registers. + +CTRL-O/CTRL-I can be used to jump to older/newer positions. These are the +same positions as used with the '' command, but may be in another file. The +":jumps" command lists the older positions. + +If the 'shiftround' option is set, an indent is rounded to a multiple of +'shiftwidth' with ">" and "<" commands. + +The 'scrolljump' option can be set to the minimum number of lines to scroll +when the cursor gets off the screen. Use this when scrolling is slow. + +The 'scrolloff' option can be set to the minimum number of lines to keep +above and below the cursor. This gives some context to where you are +editing. When set to a large number the cursor line is always in the middle +of the window. + +Uppercase marks can be used to jump between files. The ":marks" command lists +all currently set marks. The commands "']" and "`]" jump to the end of the +previous operator or end of the text inserted with the put command. "'[" and +"`[" do jump to the start. + +The 'shelltype' option can be set to reflect the type of shell used on the +Amiga. + +The 'highlight' option can be set for the highlight mode to be used for +several commands. + +The CTRL-A (add) and CTRL-X (subtract) commands are new. The count to the +command (default 1) is added to/subtracted from the number at or after the +cursor. That number may be decimal, octal (starts with a '0') or hexadecimal +(starts with '0x'). Very useful in macros. + +With the :set command the prefix "inv" can be used to invert boolean options. + +In both Vi and Vim you can create a line break with the ":substitute" command +by using a CTRL-M. For Vi this means you cannot insert a real CTRL-M in the +text. With Vim you can put a real CTRL-M in the text by preceding it with a +CTRL-V. + + +In Insert mode: + +If the 'revins' option is set, insert happens backwards. This is for typing +Hebrew. When inserting normal characters the cursor will not be shifted and +the text moves rightwards. Backspace, CTRL-W and CTRL-U will also work in +the opposite direction. CTRL-B toggles the 'revins' option. In replace mode +'revins' has no effect. Only when enabled at compile time. + +The backspace key can be used just like CTRL-D to remove auto-indents. + +You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs) +option includes "eol". You can backspace over the start of insert if the +'backspace' option includes "start". + +When the 'paste' option is set, a few option are reset and mapping in insert +mode and abbreviation are disabled. This allows for pasting text in windowing +systems without unexpected results. When the 'paste' option is reset, the old +option values are restored. + +CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter +what column the cursor is in. + +CTRL-@ (insert previously inserted text) works always (Vi: only when typed as +first character). + +CTRL-A works like CTRL-@ but does not leave insert mode. + +CTRL-R {0-9a-z..} can be used to insert the contents of a register. + +When the 'smartindent' option is set, C programs will be better auto-indented. +With 'cindent' even more. + +CTRL-Y and CTRL-E can be used to copy a character from above/below the +current cursor position. + +After CTRL-V you can enter a three digit decimal number. This byte value is +inserted in the text as a single character. Useful for international +characters that are not on your keyboard. + +When the 'expandtab' (et) option is set, a <Tab> is expanded to the +appropriate number of spaces. + +The window always reflects the contents of the buffer (Vi does not do this +when changing text and in some other cases). + +If Vim is compiled with DIGRAPHS defined, digraphs are supported. A set of +normal digraphs is included. They are shown with the ":digraph" command. +More can be added with ":digraph {char1}{char2} {number}". A digraph is +entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when +'digraph' option is set). + +When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin +for the first insert. Vim does it for all. + +A count to the "i" or "a" command is used for all the text. Vi uses the count +only for one line. "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi +but "abc<NL>defabc<NL>defabc<NL>def" in Vim. + + +In Command-line mode: + +<Esc> terminates the command-line without executing it. In vi the command +line would be executed, which is not what most people expect (hitting <Esc> +should always get you back to command mode). To avoid problems with some +obscure macros, an <Esc> in a macro will execute the command. If you want a +typed <Esc> to execute the command like vi does you can fix this with + ":cmap ^V<Esc> ^V<CR>" + +General: + +The 'ttimeout' option is like 'timeout', but only works for cursor and +function keys, not for ordinary mapped characters. The 'timeoutlen' option +gives the number of milliseconds that is waited for. If the 'esckeys' option +is not set, cursor and function keys that start with <Esc> are not recognized +in insert mode. + +There is an option for each terminal string. Can be used when termcap is not +supported or to change individual strings. + +The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix" +<NL> or "mac" <CR>. +When the 'fileformats' option is not empty, Vim tries to detect the type of +<EOL> automatically. The 'fileformat' option is set accordingly. + +On systems that have no job control (older Unix systems and non-Unix systems) +the CTRL-Z, ":stop" or ":suspend" command starts a new shell. + +If Vim is started on the Amiga without an interactive window for output, a +window is opened (and :sh still works). You can give a device to use for +editing with the |-d| argument, e.g. "-d con:20/20/600/150". + +The 'columns' and 'lines' options are used to set or get the width and height +of the display. + +Option settings are read from the first and last few lines of the file. +Option 'modelines' determines how many lines are tried (default is 5). Note +that this is different from the Vi versions that can execute any Ex command +in a modeline (a major security problem). |trojan-horse| + +If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode. +And it comes back there, when pressing <Esc>. + +Undo information is kept in memory. Available memory limits the number and +size of change that can be undone. This may be a problem with MS-DOS, is +hardly a problem on the Amiga and almost never with Unix and Win32. + +If the 'backup' or 'writebackup' option is set: Before a file is overwritten, +a backup file (.bak) is made. If the "backup" option is set it is left +behind. + +Vim creates a file ending in ".swp" to store parts of the file that have been +changed or that do not fit in memory. This file can be used to recover from +an aborted editing session with "vim -r file". Using the swap file can be +switched off by setting the 'updatecount' option to 0 or starting Vim with +the "-n" option. Use the 'directory' option for placing the .swp file +somewhere else. + +Vim is able to work correctly on filesystems with 8.3 file names, also when +using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted +filesystem under Unix. See |'shortname'|. + +Error messages are shown at least one second (Vi overwrites error messages). + +If Vim gives the |hit-enter| prompt, you can hit any key. Characters other +than <CR>, <NL> and <Space> are interpreted as the (start of) a command. (Vi +only accepts a command starting with ':'). + +The contents of the numbered and unnamed registers is remembered when +changing files. + +The "No lines in buffer" message is a normal message instead of an error +message, since that may cause a mapping to be aborted. + +The AUX: device of the Amiga is supported. + +============================================================================== +6. Command-line arguments *cmdline-arguments* + +Different versions of Vi have different command-line arguments. This can be +confusing. To help you, this section gives an overview of the differences. + +Five variants of Vi will be considered here: + Elvis Elvis version 2.1b + Nvi Nvi version 1.79 + Posix Posix 1003.2 + Vi Vi version 3.7 (for Sun 4.1.x) + Vile Vile version 7.4 (incomplete) + Vim Vim version 5.2 + +Only Vim is able to accept options in between and after the file names. + ++{command} Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}". + +- Nvi, Posix, Vi: Run Ex in batch mode. + Vim: Read file from stdin (use -s for batch mode). + +-- Vim: End of options, only file names are following. + +--cmd {command} Vim: execute {command} before sourcing vimrc files. + +--echo-wid Vim: GTK+ echoes the Window ID on stdout + +--help Vim: show help message and exit. + +--literal Vim: take file names literally, don't expand wildcards. + +--nofork Vim: same as |-f| + +--noplugin[s] Vim: Skip loading plugins. + +--remote Vim: edit the files in another Vim server + +--remote-expr {expr} Vim: evaluate {expr} in another Vim server + +--remote-send {keys} Vim: send {keys} to a Vim server and exit + +--remote-silent {file} Vim: edit the files in another Vim server if possible + +--remote-wait Vim: edit the files in another Vim server and wait for it + +--remote-wait-silent Vim: like --remote-wait, no complaits if not possible + +--role {role} Vim: GTK+ 2: set role of main window + +--serverlist Vim: Output a list of Vim servers and exit + +--servername {name} Vim: Specify Vim server name + +--socketid {id} Vim: GTK window socket to run Vim in + +--version Vim: show version message and exit. + +-? Vile: print usage summary and exit. + +-a Elvis: Load all specified file names into a window (use -o for + Vim). + +-A Vim: Start in Arabic mode (when compiled with Arabic). + +-b {blksize} Elvis: Use {blksize} blocksize for the session file. +-b Vim: set 'binary' mode. + +-C Vim: Compatible mode. + +-c {command} Elvis, Nvi, Posix, Vim: run {command} as an Ex command after + loading the edit buffer. + Vim: allow up to 10 "-c" arguments + +-d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled + without the |+diff| feature} +-d Vim: start with 'diff' set. |vimdiff| + +-dev {device} Vim: Use {device} for I/O (Amiga only). + +-D Vim: debug mode. + +-e Elvis, Nvi, Vim: Start in Ex mode, as if the executable is + called "ex". + +-E Vim: Start in improved Ex mode |gQ|, like "exim". + +-f Vim: Run GUI in foreground (Amiga: don't open new window). +-f {session} Elvis: Use {session} as the session file. + +-F Vim: Start in Farsi mode (when compiled with Farsi). + Nvi: Fast start, don't read the entire file when editing + starts. + +-G {gui} Elvis: Use the {gui} as user interface. + +-g Vim: Start GUI. +-g N Vile: start editing at line N + +-h Vim: Give help message. + Vile: edit the help file + +-H Vim: start Hebrew mode (when compiled with it). + +-i Elvis: Start each window in Insert mode. +-i {viminfo} Vim: Use {viminfo} for viminfo file. + +-L Vim: Same as "-r" (also in some versions of Vi). + +-l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options. + +-m Vim: Modifications not allowed to be written, resets 'write' + option. + +-M Vim: Modifications not allowed, resets 'modifiable' and the + 'write' option. + +-N Vim: No-compatible mode. + +-n Vim: No swap file used. + +-nb[args] Vim: open a NetBeans interface connection + +-O[N] Vim: Like -o, but use vertically split windows. + +-o[N] Vim: Open [N] windows, or one for each file. + +-P {parent-title} Win32 Vim: open Vim inside a parent application window + +-q {name} Vim: Use {name} for quickfix error file. +-q{name} Vim: Idem. + +-R Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option. + +-r Elvis, Nvi, Posix, Vi, Vim: Recovery mode. + +-S Nvi: Set 'secure' option. +-S {script} Vim: source script after starting up. + +-s Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode. + Elvis: Sets the 'safer' option. +-s {scriptin} Vim: Read from script file {scriptin}; only when not in Ex + mode. +-s {pattern} Vile: search for {pattern} + +-t {tag} Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}. +-t{tag} Vim: Idem. + +-T {term} Vim: Set terminal name to {term}. + +-u {vimrc} Vim: Read initializations from {vimrc} file. + +-U {gvimrc} Vim: Read GUI initializations from {gvimrc} file. + +-v Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi + terms). + Vile: View mode, no changes possible. + +-V Elvis, Vim: Verbose mode. +-V{nr} Vim: Verbose mode with specified level. + +-w {size} Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}. +-w{size} Nvi, Vi: Same as "-w {size}". +-w {name} Vim: Write to script file {name} (must start with non-digit). + +-W {name} Vim: Append to script file {name}. + +-x Vi, Vim: Ask for encryption key. See |encryption|. + +-X Vim: Don't connect to the X server. + +-y Vim: Start in easy mode, like |evim|. + +-Z Vim: restricted mode + +@{cmdfile} Vile: use {cmdfile} as startup file. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/vim.1 b/en/vim.1 new file mode 100644 index 000000000..d1fa54ad7 --- /dev/null +++ b/en/vim.1 @@ -0,0 +1,541 @@ +.TH VIM 1 "2002 Feb 22" +.SH NAME +vim \- Vi IMproved, a programmers text editor +.SH SYNOPSIS +.br +.B vim +[options] [file ..] +.br +.B vim +[options] - +.br +.B vim +[options] \-t tag +.br +.B vim +[options] \-q [errorfile] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH DESCRIPTION +.B Vim +is a text editor that is upwards compatible to Vi. +It can be used to edit all kinds of plain text. +It is especially useful for editing programs. +.PP +There are a lot of enhancements above Vi: multi level undo, +multi windows and buffers, syntax highlighting, command line +editing, filename completion, on-line help, visual selection, etc.. +See ":help vi_diff.txt" for a summary of the differences between +.B Vim +and Vi. +.PP +While running +.B Vim +a lot of help can be obtained from the on-line help system, with the ":help" +command. +See the ON-LINE HELP section below. +.PP +Most often +.B Vim +is started to edit a single file with the command +.PP + vim file +.PP +More generally +.B Vim +is started with: +.PP + vim [options] [filelist] +.PP +If the filelist is missing, the editor will start with an empty buffer. +Otherwise exactly one out of the following four may be used to choose one or +more files to be edited. +.TP 12 +file .. +A list of filenames. +The first one will be the current file and read into the buffer. +The cursor will be positioned on the first line of the buffer. +You can get to the other files with the ":next" command. +To edit a file that starts with a dash, precede the filelist with "--". +.TP +- +The file to edit is read from stdin. Commands are read from stderr, which +should be a tty. +.TP +-t {tag} +The file to edit and the initial cursor position depends on a "tag", a sort +of goto label. +{tag} is looked up in the tags file, the associated file becomes the current +file and the associated command is executed. +Mostly this is used for C programs, in which case {tag} could be a function +name. +The effect is that the file containing that function becomes the current file +and the cursor is positioned on the start of the function. +See ":help tag-commands". +.TP +-q [errorfile] +Start in quickFix mode. +The file [errorfile] is read and the first error is displayed. +If [errorfile] is omitted, the filename is obtained from the 'errorfile' +option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other +systems). +Further errors can be jumped to with the ":cn" command. +See ":help quickfix". +.PP +.B Vim +behaves differently, depending on the name of the command (the executable may +still be the same file). +.TP 10 +vim +The "normal" way, everything is default. +.TP +ex +Start in Ex mode. +Go to Normal mode with the ":vi" command. +Can also be done with the "-e" argument. +.TP +view +Start in read-only mode. You will be protected from writing the files. Can +also be done with the "-R" argument. +.TP +gvim gview +The GUI version. +Starts a new window. +Can also be done with the "-g" argument. +.TP +evim eview +The GUI version in easy mode. +Starts a new window. +Can also be done with the "-y" argument. +.TP +rvim rview rgvim rgview +Like the above, but with restrictions. It will not be possible to start shell +commands, or suspend +.B Vim. +Can also be done with the "-Z" argument. +.SH OPTIONS +The options may be given in any order, before or after filenames. +Options without an argument can be combined after a single dash. +.TP 12 ++[num] +For the first file the cursor will be positioned on line "num". +If "num" is missing, the cursor will be positioned on the last line. +.TP ++/{pat} +For the first file the cursor will be positioned on the +first occurrence of {pat}. +See ":help search-pattern" for the available search patterns. +.TP ++{command} +.TP +-c {command} +{command} will be executed after the +first file has been read. +{command} is interpreted as an Ex command. +If the {command} contains spaces it must be enclosed in double quotes (this +depends on the shell that is used). +Example: Vim "+set si" main.c +.br +Note: You can use up to 10 "+" or "-c" commands. +.TP +-S {file} +{file} will be sourced after the first file has been read. +This is equivalent to -c "source {file}". +{file} cannot start with '-'. +If {file} is omitted "Session.vim" is used (only works when -S is the last +argument). +.TP +--cmd {command} +Like using "-c", but the command is executed just before +processing any vimrc file. +You can use up to 10 of these commands, independently from "-c" commands. +.TP +-A +If +.B Vim +has been compiled with ARABIC support for editing right-to-left +oriented files and Arabic keyboard mapping, this option starts +.B Vim +in Arabic mode, i.e. 'arabic' is set. Otherwise an error +message is given and +.B Vim +aborts. +.TP +-b +Binary mode. +A few options will be set that makes it possible to edit a binary or +executable file. +.TP +-C +Compatible. Set the 'compatible' option. +This will make +.B Vim +behave mostly like Vi, even though a .vimrc file exists. +.TP +-d +Start in diff mode. +There should be two or three file name arguments. +.B Vim +will open all the files and show differences between them. +Works like vimdiff(1). +.TP +-d {device} +Open {device} for use as a terminal. +Only on the Amiga. +Example: +"\-d con:20/30/600/150". +.TP +-D +Debugging. Go to debugging mode when executing the first command from a +script. +.TP +-e +Start +.B Vim +in Ex mode, just like the executable was called "ex". +.TP +-E +Start +.B Vim +in improved Ex mode, just like the executable was called "exim". +.TP +-f +Foreground. For the GUI version, +.B Vim +will not fork and detach from the shell it was started in. +On the Amiga, +.B Vim +is not restarted to open a new window. +This option should be used when +.B Vim +is executed by a program that will wait for the edit +session to finish (e.g. mail). +On the Amiga the ":sh" and ":!" commands will not work. +.TP +--nofork +Foreground. For the GUI version, +.B Vim +will not fork and detach from the shell it was started in. +.TP +-F +If +.B Vim +has been compiled with FKMAP support for editing right-to-left +oriented files and Farsi keyboard mapping, this option starts +.B Vim +in Farsi mode, i.e. 'fkmap' and 'rightleft' are set. +Otherwise an error message is given and +.B Vim +aborts. +.TP +-g +If +.B Vim +has been compiled with GUI support, this option enables the GUI. +If no GUI support was compiled in, an error message is given and +.B Vim +aborts. +.TP +-h +Give a bit of help about the command line arguments and options. +After this +.B Vim +exits. +.TP +-H +If +.B Vim +has been compiled with RIGHTLEFT support for editing right-to-left +oriented files and Hebrew keyboard mapping, this option starts +.B Vim +in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set. +Otherwise an error message is given and +.B Vim +aborts. +.TP +-i {viminfo} +When using the viminfo file is enabled, this option sets the filename to use, +instead of the default "~/.viminfo". +This can also be used to skip the use of the .viminfo file, by giving the name +"NONE". +.TP +-L +Same as -r. +.TP +-l +Lisp mode. +Sets the 'lisp' and 'showmatch' options on. +.TP +-m +Modifying files is disabled. +Resets the 'write' option. +You can still modify the buffer, but writing a file is not possible. +.TP +-M +Modifications not allowed. The 'modifiable' and 'write' options will be unset, +so that changes are not allowed and files can not be written. Note that these +options can be set to enable making modifications. +.TP +-N +No-compatible mode. Reset the 'compatible' option. +This will make +.B Vim +behave a bit better, but less Vi compatible, even though a .vimrc file does +not exist. +.TP +-n +No swap file will be used. +Recovery after a crash will be impossible. +Handy if you want to edit a file on a very slow medium (e.g. floppy). +Can also be done with ":set uc=0". +Can be undone with ":set uc=200". +.TP +-nb +Become an editor server for NetBeans. See the docs for details. +.TP +-o[N] +Open N windows stacked. +When N is omitted, open one window for each file. +.TP +-O[N] +Open N windows side by side. +When N is omitted, open one window for each file. +.TP +-R +Read-only mode. +The 'readonly' option will be set. +You can still edit the buffer, but will be prevented from accidently +overwriting a file. +If you do want to overwrite a file, add an exclamation mark to the Ex command, +as in ":w!". +The -R option also implies the -n option (see below). +The 'readonly' option can be reset with ":set noro". +See ":help 'readonly'". +.TP +-r +List swap files, with information about using them for recovery. +.TP +-r {file} +Recovery mode. +The swap file is used to recover a crashed editing session. +The swap file is a file with the same filename as the text file with ".swp" +appended. +See ":help recovery". +.TP +-s +Silent mode. Only when started as "Ex" or when the "-e" option was given +before the "-s" option. +.TP +-s {scriptin} +The script file {scriptin} is read. +The characters in the file are interpreted as if you had typed them. +The same can be done with the command ":source! {scriptin}". +If the end of the file is reached before the editor exits, further characters +are read from the keyboard. +.TP +-T {terminal} +Tells +.B Vim +the name of the terminal you are using. +Only required when the automatic way doesn't work. +Should be a terminal known +to +.B Vim +(builtin) or defined in the termcap or terminfo file. +.TP +-u {vimrc} +Use the commands in the file {vimrc} for initializations. +All the other initializations are skipped. +Use this to edit a special kind of files. +It can also be used to skip all initializations by giving the name "NONE". +See ":help initialization" within vim for more details. +.TP +-U {gvimrc} +Use the commands in the file {gvimrc} for GUI initializations. +All the other GUI initializations are skipped. +It can also be used to skip all GUI initializations by giving the name "NONE". +See ":help gui-init" within vim for more details. +.TP +-V[N] +Verbose. Give messages about which files are sourced and for reading and +writing a viminfo file. The optional number N is the value for 'verbose'. +Default is 10. +.TP +-v +Start +.B Vim +in Vi mode, just like the executable was called "vi". This only has effect +when the executable is called "ex". +.TP +-w {scriptout} +All the characters that you type are recorded in the file +{scriptout}, until you exit +.B Vim. +This is useful if you want to create a script file to be used with "vim -s" or +":source!". +If the {scriptout} file exists, characters are appended. +.TP +-W {scriptout} +Like -w, but an existing file is overwritten. +.TP +-x +Use encryption when writing files. Will prompt for a crypt key. +.TP +-X +Don't connect to the X server. Shortens startup time in a terminal, but the +window title and clipboard will not be used. +.TP +-y +Start +.B Vim +in easy mode, just like the executable was called "evim" or "eview". +Makes +.B Vim +behave like a click-and-type editor. +.TP +-Z +Restricted mode. Works like the executable starts with "r". +.TP +-- +Denotes the end of the options. +Arguments after this will be handled as a file name. +This can be used to edit a filename that starts with a '-'. +.TP +--echo-wid +GTK GUI only: Echo the Window ID on stdout +.TP +--help +Give a help message and exit, just like "-h". +.TP +--literal +Take file name arguments literally, do not expand wildcards. Not needed on +Unix, the shell expand wildcards. +.TP +--noplugin +Skip loading plugins. Implied by -u NONE. +.TP +--remote +Connect to a Vim server and make it edit the files given in the rest of the +arguments. If no server is found a warning is given and the files are edited +in the current Vim. +.TP +--remote-expr {expr} +Connect to a Vim server, evaluate {expr} in it and print the result on stdout. +.TP +--remote-send {keys} +Connect to a Vim server and send {keys} to it. +.TP +--remote-silent +As --remote, but without the warning when no server is found. +.TP +--remote-wait +As --remote, but Vim does not exit until the files have been edited. +.TP +--remote-wait-silent +As --remote-wait, but without the warning when no server is found. +.TP +--serverlist +List the names of all Vim servers that can be found. +.TP +--servername {name} +Use {name} as the server name. Used for the current Vim, unless used with a +--remote argument, then it's the name of the server to connect to. +.TP +--socketid {id} +GTK GUI only: Use the GtkPlug mechanism to run gvim in another window. +.TP +--version +Print version information and exit. +.SH ON-LINE HELP +Type ":help" in +.B Vim +to get started. +Type ":help subject" to get help on a specific subject. +For example: ":help ZZ" to get help for the "ZZ" command. +Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion"). +Tags are present to jump from one place to another (sort of hypertext links, +see ":help"). +All documentation files can be viewed in this way, for example +":help syntax.txt". +.SH FILES +.TP 15 +/usr/local/lib/vim/doc/*.txt +The +.B Vim +documentation files. +Use ":help doc-file-list" to get the complete list. +.TP +/usr/local/lib/vim/doc/tags +The tags file used for finding information in the documentation files. +.TP +/usr/local/lib/vim/syntax/syntax.vim +System wide syntax initializations. +.TP +/usr/local/lib/vim/syntax/*.vim +Syntax files for various languages. +.TP +/usr/local/lib/vim/vimrc +System wide +.B Vim +initializations. +.TP +/usr/local/lib/vim/gvimrc +System wide gvim initializations. +.TP +/usr/local/lib/vim/optwin.vim +Script used for the ":options" command, a nice way to view and set options. +.TP +/usr/local/lib/vim/menu.vim +System wide menu initializations for gvim. +.TP +/usr/local/lib/vim/bugreport.vim +Script to generate a bug report. See ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script to detect the type of a file by its name. See ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script to detect the type of a file by its contents. See ":help 'filetype'". +.TP +/usr/local/lib/vim/*.ps +Files used for PostScript printing. +.PP +For recent info read the VIM home page: +.br +<URL:http://www.vim.org/> +.SH SEE ALSO +vimtutor(1) +.SH AUTHOR +Most of +.B Vim +was made by Bram Moolenaar, with a lot of help from others. +See ":help credits" in +.B Vim. +.br +.B Vim +is based on Stevie, worked on by: Tim Thompson, +Tony Andrews and G.R. (Fred) Walter. +Although hardly any of the original code remains. +.SH BUGS +Probably. +See ":help todo" for a list of known problems. +.PP +Note that a number of things that may be regarded as bugs by some, are in fact +caused by a too-faithful reproduction of Vi's behaviour. +And if you think other things are bugs "because Vi does it differently", +you should take a closer look at the vi_diff.txt file (or type :help +vi_diff.txt when in Vim). +Also have a look at the 'compatible' and 'cpoptions' options. diff --git a/en/vimdiff.1 b/en/vimdiff.1 new file mode 100644 index 000000000..e48728412 --- /dev/null +++ b/en/vimdiff.1 @@ -0,0 +1,46 @@ +.TH VIMDIFF 1 "2001 March 30" +.SH NAME +vimdiff \- edit two or three versions of a file with Vim and show differences +.SH SYNOPSIS +.br +.B vimdiff +[options] file1 file2 [file3] +.PP +.B gvimdiff +.SH DESCRIPTION +.B Vimdiff +starts +.B Vim +on two (or three) files. +Each file gets its own window. +The differences between the files are highlighted. +This is a nice way to inspect changes and to move changes from one version +to another version of the same file. +.PP +See vim(1) for details about Vim itself. +.PP +When started as +.B gvimdiff +the GUI will be started, if available. +.PP +In each window the 'diff' option will be set, which causes the differences +to be highlighted. +.br +The 'wrap' and 'scrollbind' options are set to make the text look good. +.br +The 'foldmethod' option is set to "diff", which puts ranges of lines without +changes in a fold. 'foldcolumn' is set to two to make it easy to spot the +folds and open or close them. +.SH OPTIONS +Vertical splits are used to align the lines, as if the "-O" argument was used. +To use horizontal splits intead, use the "-o" argument. +.PP +For all other arguments see vim(1). +.SH SEE ALSO +vim(1) +.SH AUTHOR +Most of +.B Vim +was made by Bram Moolenaar, with a lot of help from others. +See ":help credits" in +.B Vim. diff --git a/en/vimtutor.1 b/en/vimtutor.1 new file mode 100644 index 000000000..4b5aea64d --- /dev/null +++ b/en/vimtutor.1 @@ -0,0 +1,54 @@ +.TH VIMTUTOR 1 "2001 April 2" +.SH NAME +vimtutor \- the Vim tutor +.SH SYNOPSIS +.br +.B vimtutor [language] +.SH DESCRIPTION +.B Vimtutor +starts the +.B Vim +tutor. +It copies the tutor file first, so that it can be modified without changing +the original file. +.PP +The +.B Vimtutor +is useful for people that want to learn their first +.B Vim +commands. +.PP +The optional [language] argument is the two-letter name of a language, like +"it" or "es". +If the [language] argument is missing, the language of the current locale will +be used. +If a tutor in this language is available, it will be used. +Otherwise the English version will be used. +.PP +.B Vim +is always started in Vi compatible mode. +.SH FILES +.TP 15 +/usr/local/lib/vim/tutor/tutor[.language] +The +.B Vimtutor +text file(s). +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +The Vim script used to copy the +.B Vimtutor +text file. +.SH AUTHOR +The +.B Vimtutor +was originally written for Vi by Michael C. Pierce and Robert K. Ware, +Colorado School of Mines using ideas supplied by Charles Smith, +Colorado State University. +E-mail: bware@mines.colorado.edu. +.br +It was modified for +.B Vim +by Bram Moolenaar. +For the names of the translators see the tutor files. +.SH SEE ALSO +vim(1) diff --git a/en/visual.txt b/en/visual.txt new file mode 100644 index 000000000..8ad58cc0c --- /dev/null +++ b/en/visual.txt @@ -0,0 +1,487 @@ +*visual.txt* For Vim version 6.3. Last change: 2004 Jun 06 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Visual mode *Visual* *Visual-mode* *visual-mode* + +Visual mode is a flexible and easy way to select a piece of text for an +operator. It is the only way to select a block of text. + +This is introduced in section |04.4| of the user manual. + +1. Using Visual mode |visual-use| +2. Starting and stopping Visual mode |visual-start| +3. Changing the Visual area |visual-change| +4. Operating on the Visual area |visual-operators| +5. Blockwise operators |blockwise-operators| +6. Repeating |visual-repeat| +7. Examples |visual-examples| +8. Select mode |Select-mode| + +{Vi has no Visual mode, the name "visual" is used for Normal mode, to +distinguish it from Ex mode} +{not available when the |+visual| feature was disabled when compiling} + +============================================================================== +1. Using Visual mode *visual-use* + +Using Visual mode consists of three parts: +1. Mark the start of the text with "v", "V" or CTRL-V. + The character under the cursor will be used as the start. +2. Move to the end of the text. + The text from the start of the Visual mode up to and including the + character under the cursor is highlighted. +3. Type an operator command. + The highlighted characters will be operated upon. + +The 'highlight' option can be used to set the display mode to use for +highlighting in Visual mode. +The 'virtualedit' option can be used to allow positioning the cursor to +positions where there is no actual character. + +The highlighted text normally includes the character under the cursor. +However, when the 'selection' option is set to "exclusive" and the cursor is +after the Visual area, the character under the cursor is not included. + +With "v" the text before the start position and after the end position will +not be highlighted. However, All uppercase and non-alpha operators, except +"~" and "U", will work on whole lines anyway. See the list of operators +below. + + *visual-block* +With CTRL-V (blockwise Visual mode) the highlighted text will be a rectangle +between start position and the cursor. However, some operators work on whole +lines anyway (see the list below). The change and substitute operators will +delete the highlighted text and then start insertion at the top left +position. + +============================================================================== +2. Starting and stopping Visual mode *visual-start* + + *v* *characterwise-visual* +v start Visual mode per character. + + *V* *linewise-visual* +V start Visual mode linewise. + + *CTRL-V* *blockwise-visual* +CTRL-V start Visual mode blockwise. Note: Under Windows + CTRL-V could be mapped to paste text, it doesn't work + to start Visual mode then, see |CTRL-V-alternative|. + +If you use <Esc>, click the left mouse button or use any command that +does a jump to another buffer while in Visual mode, the highlighting stops +and no text is affected. Also when you hit "v" in characterwise Visual mode, +"CTRL-V" in blockwise Visual mode or "V" in linewise Visual mode. If you hit +CTRL-Z the highlighting stops and the editor is suspended or a new shell is +started |CTRL-Z|. + + new mode after typing: *v_v* *v_CTRL-V* *v_V* +old mode "v" "CTRL-V" "V" ~ + +Normal Visual blockwise Visual linewise Visual +Visual Normal blockwise Visual linewise Visual +blockwise Visual Visual Normal linewise Visual +linewise Visual Visual blockwise Visual Normal + + *gv* *v_gv* +gv Start Visual mode with the same area as the previous + area and the same mode. In Visual mode the current and + the previous Visual area are exchanged. + + *<LeftMouse>* +<LeftMouse> Set the current cursor position. If Visual mode is + active it is stopped. Only when 'mouse' option is + contains 'n' or 'a'. If the position is within 'so' + lines from the last line on the screen the text is + scrolled up. If the position is within 'so' lines from + the first line on the screen the text is scrolled + down. + + *<RightMouse>* +<RightMouse> Start Visual mode if it is not active. The text from + the cursor position to the position of the click is + highlighted. If Visual mode was already active move + the start or end of the highlighted text, which ever + is closest, to the position of the click. Only when + 'mouse' option contains 'n' or 'a'. + + Note: when 'mousemodel' is set to "popup", + <S-LeftMouse> has to be used instead of <RightMouse>. + + *<LeftRelease>* +<LeftRelease> This works like a <LeftMouse>, if it is not at + the same position as <LeftMouse>. In an older version + of xterm you won't see the selected area until the + button is released, unless there is access to the + display where the xterm is running (via the DISPLAY + environment variable or the -display argument). Only + when 'mouse' option contains 'n' or 'a'. + +If Visual mode is not active and the "v", "V" or CTRL-V is preceded with a +count, the size of the previously highlighted area is used for a start. You +can then move the end of the highlighted area and give an operator. The type +of the old area is used (character, line or blockwise). +- Linewise Visual mode: The number of lines is multiplied with the count. +- Blockwise Visual mode: The number of lines and columns is multiplied with + the count. +- Normal Visual mode within one line: The number of characters is multiplied + with the count. +- Normal Visual mode with several lines: The number of lines is multiplied + with the count, in the last line the same number of characters is used as + in the last line in the previously highlighted area. +The start of the text is the Cursor position. If the "$" command was used as +one of the last commands to extend the highlighted text, the area will be +extended to the rightmost column of the longest line. + +If you want to highlight exactly the same area as the last time, you can use +"gv" |gv| |v_gv|. + + *v_CTRL-C* +CTRL-C In Visual mode: Stop Visual mode. When insert mode is + pending (the mode message shows + "-- (insert) VISUAL --"), it is also stopped. + +============================================================================== +3. Changing the Visual area *visual-change* + + *v_o* +o Go to Other end of highlighted text: The current + cursor position becomes the start of the highlighted + text and the cursor is moved to the other end of the + highlighted text. The highlighted area remains the + same. + + *v_O* +O Go to Other end of highlighted text. This is like + "o", but in Visual block mode the cursor moves to the + other corner in the same line. When the corner is at + a character that occupies more than one position on + the screen (e.g., a <Tab>), the highlighted text may + change. + + *v_$* +When the "$" command is used with blockwise Visual mode, the right end of the +highlighted text will be determined by the longest highlighted line. This +stops when a motion command is used that does not move straight up or down. + +For moving the end of the block many commands can be used, but you cannot +use Ex commands, commands that make changes or abandon the file. Commands +(starting with) ".pPiIaAO&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I +and CTRL-O cause a beep and Visual mode continues. + +When switching to another window on the same buffer, the cursor position in +that window is adjusted, so that the same Visual area is still selected. This +is especially useful to view the start of the Visual area in one window, and +the end in another. You can then use <RightMouse> (or <S-LeftMouse> when +'mousemodel' is "popup") to move either end of the Visual area. + +============================================================================== +4. Operating on the Visual area *visual-operators* + +The operators that can be used are: + ~ switch case |v_~| + d delete |v_d| + c change (4) |v_c| + y yank |v_y| + > shift right (4) |v_>| + < shift left (4) |v_<| + ! filter through external command (1) |v_!| + = filter through 'equalprg' option command (1) |v_=| + gq format lines to 'textwidth' length (1) |v_gq| + +The objects that can be used are: + aw a word (with white space) |v_aw| + iw inner word |v_iw| + aW a WORD (with white space) |v_aW| + iW inner WORD |v_iW| + as a sentence (with white space) |v_as| + is inner sentence |v_is| + ap a paragraph (with white space) |v_ap| + ip inner paragraph |v_ip| + ab a () block (with parenthesis) |v_ab| + ib inner () block |v_ib| + aB a {} block (with braces) |v_aB| + iB inner {} block |v_iB| + a< a <> block (with <>) |v_a<| + i< inner <> block |v_i<| + a[ a [] block (with []) |v_a[| + i[ inner [] block |v_i[| + +Additionally the following commands can be used: + : start ex command for highlighted lines (1) |v_:| + r change (4) |v_r| + s change |v_s| + C change (2)(4) |v_C| + S change (2) |v_S| + R change (2) |v_R| + x delete |v_x| + D delete (3) |v_D| + X delete (2) |v_X| + Y yank (2) |v_Y| + p put |v_p| + J join (1) |v_J| + U make uppercase |v_U| + u make lowercase |v_u| + ^] find tag |v_CTRL-]| + I block insert |v_b_I| + A block append |v_b_A| + +(1): Always whole lines, see |:visual_example|. +(2): Whole lines when not using CTRL-V. +(3): Whole lines when not using CTRL-V, delete until the end of the line when + using CTRL-V. +(4): When using CTRL-V operates on the block only. + +Note that the ":vmap" command can be used to specifically map keys in Visual +mode. For example, if you would like the "/" command not to extend the Visual +area, but instead take the highlighted text and search for that: > + :vmap / y/<C-R>"<CR> +(In the <> notation |<>|, when typing it you should type it literally; you +need to remove the 'B' and '<' flags from 'cpoptions'.) + +If you want to give a register name using the """ command, do this just before +typing the operator character: "v{move-around}"xd". + +If you want to give a count to the command, do this just before typing the +operator character: "v{move-around}3>" (move lines 3 indents to the right). + + *{move-around}* +The {move-around} is any sequence of movement commands. Note the difference +with {motion}, which is only ONE movement command. + +============================================================================== +5. Blockwise operators *blockwise-operators* + +{not available when compiled without the |+visualextra| feature} + +Reminder: Use 'virtualedit' to be able to select blocks that start or end +after the end of a line or halfway a tab. + +Visual-block Insert *v_b_I* +With a blockwise selection, I{string}<ESC> will insert {string} at the start +of block on every line of the block, provided that the line extends into the +block. Thus lines that are short will remain unmodified. TABs are split to +retain visual columns. +See |v_b_I_example|. + +Visual-block Append *v_b_A* +With a blockwise selection, A{string}<ESC> will append {string} to the end of +block on every line of the block. There is some differing behavior where the +block RHS is not straight, due to different line lengths: + +1. Block was created with <C-v>$ + In this case the string is appended to the end of each line. +2. Block was created with <C-v>{move-around} + In this case the string is appended to the end of the block on each line, + and whitespace is inserted to pad to the end-of-block column. +See |v_b_A_example|. +Note: "I" and "A" behave differently for lines that don't extend into the +selected block. This was done intentionally, so that you can do it the way +you want. + +Visual-block change *v_b_c* +All selected text in the block will be replaced by the same text string. When +using "c" the selected text is deleted and Insert mode started. You can then +enter text (without a line break). When you hit <Esc>, the same string is +inserted in all previously selected lines. + +Visual-block Change *v_b_C* +Like using "c", but the selection is extended until the end of the line for +all lines. + + *v_b_<* +Visual-block Shift *v_b_>* +The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The +LHS of the block determines the point from which to apply a right shift, and +padding includes TABs optimally according to 'ts' and 'et'. The LHS of the +block determines the point upto which to shift left. + Note: v_< padding is buggy if the Visual Block starts and ends in the same + TAB. (Vim 5.4c). +See |v_b_>_example|. +See |v_b_<_example|. + +Visual-block Replace *v_b_r* +Every screen char in the highlighted region is replaced with the same char, ie +TABs are split and the virtual whitespace is replaced, maintaining screen +layout. +See |v_b_r_example|. + + +============================================================================== +6. Repeating *visual-repeat* + +When repeating a Visual mode operator, the operator will be applied to the +same amount of text as the last time: +- Linewise Visual mode: The same number of lines. +- Blockwise Visual mode: The same number of lines and columns. +- Normal Visual mode within one line: The same number of characters. +- Normal Visual mode with several lines: The same number of lines, in the + last line the same number of characters as in the last line the last time. +The start of the text is the Cursor position. If the "$" command was used as +one of the last commands to extend the highlighted text, the repeating will +be applied up to the rightmost column of the longest line. + + +============================================================================== +7. Examples *visual-examples* + + *:visual_example* +Currently the ":" command works on whole lines only. When you select part of +a line, doing something like ":!date" will replace the whole line. If you +want only part of the line to be replaced you will have to make a mapping for +it. In a future release ":" may work on partial lines. + +Here is an example, to replace the selected text with the output of "date": > + :vmap _a <Esc>`>a<CR><Esc>`<i<CR><Esc>!!date<CR>kJJ + +(In the <> notation |<>|, when typing it you should type it literally; you +need to remove the 'B' and '<' flags from 'cpoptions') + +What this does is: +<Esc> stop Visual mode +`> go to the end of the Visual area +a<CR><Esc> break the line after the Visual area +`< jump to the start of the Visual area +i<CR><Esc> break the line before the Visual area +!!date<CR> filter the Visual text through date +kJJ Join the lines back together + + *visual-search* +Here is an idea for a mapping that makes it possible to do a search for the +selected text: > + :vmap X y/<C-R>"<CR> + +(In the <> notation |<>|, when typing it you should type it literally; you +need to remove the 'B' and '<' flags from 'cpoptions') + +Note that special characters (like '.' and '*') will cause problems. + +Visual-block Examples *blockwise-examples* +With the following text, I will indicate the commands to produce the block and +the results below. In all cases, the cursor begins on the 'a' in the first +line if the test text. +The following modeline settings are assumed ":ts=8:sw=4:". + +It will be helpful to +:set hls +/<TAB> +where <TAB> ia a real TAB. This helps visualise the operations. + +The test text is: + +abcdefghijklmnopqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +1. fo<C-v>3jISTRING<ESC> *v_b_I_example* + +abcdefghijklmnSTRINGopqrstuvwxyz +abc STRING defghijklmnopqrstuvwxyz +abcdef ghi STRING jklmnopqrstuvwxyz +abcdefghijklmnSTRINGopqrstuvwxyz + +2. fo<C-v>3j$ASTRING<ESC> *v_b_A_example* + +abcdefghijklmnopqrstuvwxyzSTRING +abc defghijklmnopqrstuvwxyzSTRING +abcdef ghi jklmnopqrstuvwxyzSTRING +abcdefghijklmnopqrstuvwxyzSTRING + +3. fo<C-v>3j3l<.. *v_b_<_example* + +abcdefghijklmnopqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +4. fo<C-v>3j>.. *v_b_>_example* + +abcdefghijklmn opqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmn opqrstuvwxyz + +5. fo<C-v>5l3jrX *v_b_r_example* + +abcdefghijklmnXXXXXXuvwxyz +abc XXXXXXhijklmnopqrstuvwxyz +abcdef ghi XXXXXX jklmnopqrstuvwxyz +abcdefghijklmnXXXXXXuvwxyz + +============================================================================== +8. Select mode *Select* *Select-mode* + +Select mode looks like Visual mode, but the commands accepted are quite +different. This resembles the selection mode in Microsoft Windows. +When the 'showmode' option is set, "-- SELECT --" is shown in the last line. + +Entering Select mode: +- Using the mouse to select an area, and 'selectmode' contains "mouse". + 'mouse' must also contain a flag for the current mode. +- Using a non-printable movement command, with the Shift key pressed, and + 'selectmode' contains "key". For example: <S-Left> and <S-End>. 'keymodel' + must also contain "startsel". +- Using "v", "V" or CTRL-V command, and 'selectmode' contains "cmd". +- Using "gh", "gH" or "g_CTRL-H" command in Normal mode. +- From Visual mode, press CTRL-G. *v_CTRL-G* + +Commands in Select mode: +- Printable characters, <NL> and <CR> cause the selection to be deleted, and + Vim enters Insert mode. The typed character is inserted. +- Non-printable movement commands, with the Shift key pressed, extend the + selection. 'keymodel' must include "startsel". +- Non-printable movement commands, with the Shift key NOT pressed, stop Select + mode. 'keymodel' must include "stopsel". +- ESC stops Select mode. +- CTRL-O switches to Visual mode for the duration of one command. *v_CTRL-O* +- CTRL-G switches to Visual mode. + +Otherwise, typed characters are handled as in Visual mode. + +When using an operator in Select mode, and the selection is linewise, the +selected lines are operated upon, but like in characterwise selection. For +example, when a whole line is deleted, it can later be pasted halfway a line. + + +Mappings and menus in Select mode. *Select-mode-mapping* + +In Select mode the mappings and menus of Visual mode are used. Before it is +executed, Vim automatically switches to Visual mode, so that the same +behavior as in Visual mode is effective. + +After the mapping or menu finishes, the selection is enabled again and Select +mode entered, unless the selected area was deleted, another buffer became +the current one or the window layout was changed. + +When a character was typed that causes the selection to be deleted and Insert +mode started, Insert mode mappings are applied to this character. This may +cause some confusion, because it means Insert mode mappings apply to a +character typed in Select mode. Language mappings apply as well. + + *gV* *v_gV* +gV Avoid the automatic reselection of the Visual area + after a Select mode mapping or menu has finished. + Put this just before the end of the mapping or menu. + At least it should be after any operations on the + selection. + + *gh* +gh Start Select mode, characterwise. This is like "v", + but starts Select mode instead of Visual mode. + Mnemonic: "get highlighted". + + *gH* +gH Start Select mode, linewise. This is like "V", + but starts Select mode instead of Visual mode. + Mnemonic: "get Highlighted". + + *g_CTRL-H* +g CTRL-H Start Select mode, blockwise. This is like CTRL-V, + but starts Select mode instead of Visual mode. + Mnemonic: "get Highlighted". + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/windows.txt b/en/windows.txt new file mode 100644 index 000000000..5a38aa07b --- /dev/null +++ b/en/windows.txt @@ -0,0 +1,1123 @@ +*windows.txt* For Vim version 6.3. Last change: 2004 Apr 29 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Editing with multiple windows and buffers. *windows* *buffers* + +The commands which have been added to use multiple windows and buffers are +explained here. Additionally, there are explanations for commands that work +differently when used in combination with more than one window. + +The basics are explained in chapter 7 and 8 of the user manual |usr_07.txt| +|usr_08.txt|. + +1. Introduction |windows-intro| +2. Starting Vim |windows-starting| +3. Opening and closing a window |opening-window| +4. Moving cursor to other windows |window-move-cursor| +5. Moving windows around |window-moving| +6. Window resizing |window-resize| +7. Argument and buffer list commands |buffer-list| +8. Do a command in all buffers or windows |list-repeat| +9. Tag or file name under the cursor |window-tag| +10. The preview window |preview-window| +11. Using hidden buffers |buffer-hidden| +12. Special kinds of buffers |special-buffers| + +{Vi does not have any of these commands} +{not able to use multiple windows when the |+windows| feature was disabled at +compile time} +{not able to use vertically split windows when the |+vertsplit| feature was +disabled at compile time} + +============================================================================== +1. Introduction *windows-intro* + +A window is a viewport onto a buffer. You can use multiple windows on one +buffer, or several windows on different buffers. + +A buffer is a file loaded into memory for editing. The original file remains +unchanged until you write the buffer to the file. + +A buffer can be in one of three states: + + *active-buffer* +active: The buffer is displayed in a window. If there is a file for this + buffer, it has been read into the buffer. The buffer may have been + modified since then and thus be different from the file. + *hidden-buffer* +hidden: The buffer is not displayed. If there is a file for this buffer, it + has been read into the buffer. Otherwise it's the same as an active + buffer, you just can't see it. + *inactive-buffer* +inactive: The buffer is not displayed and does not contain anything. Options + for the buffer are remembered if the file was once loaded. It can + contain marks from the |viminfo| file. But the buffer doesn't + contain text. + +In a table: + +state displayed loaded ":buffers" ~ + in window shows ~ +active yes yes 'a' +hidden no yes 'h' +inactive no no ' ' + +Note: All CTRL-W commands can also be executed with |:wincmd|, for those +places where a Normal mode command can't be used or is inconvenient. + +============================================================================== +2. Starting Vim *windows-starting* + +By default, Vim starts with one window, just like Vi. + +The "-o" and "-O" arguments to Vim can be used to open a window for each file +in the argument list. The "-o" argument will split the windows horizontally; +the "-O" argument will split the windows vertically. If both "-o" and "-O" +are given, the last one encountered will be used to determine the split +orientation. For example, this will open three windows, split horizontally: > + vim -o file1 file2 file3 + +"-oN", where N is a decimal number, opens N windows split horizontally. If +there are more file names than windows, only N windows are opened and some +files do not get a window. If there are more windows than file names, the +last few windows will be editing empty buffers. Similarly, "-ON" opens N +windows split vertically, with the same restrictions. + +If there are many file names, the windows will become very small. You might +want to set the 'winheight' and/or 'winwidth' options to create a workable +situation. + +Buf/Win Enter/Leave |autocommand|s are not executed when opening the new +windows and reading the files, that's only done when they are really entered. + + *status-line* +A status line will be used to separate windows. The 'laststatus' option tells +when the last window also has a status line: + 'laststatus' = 0 never a status line + 'laststatus' = 1 status line if there is more than one window + 'laststatus' = 2 always a status line + +You can change the contents of the status line with the 'statusline' option. + +Normally, inversion is used to display the status line. This can be changed +with the 's' character in the 'highlight' option. For example, "sb" sets it to +bold characters. If no highlighting is used for the status line ("sn"), the +'^' character is used for the current window, and '=' for other windows. If +the mouse is supported and enabled with the 'mouse' option, a status line can +be dragged to resize windows. + +Note: If you expect your status line to be in reverse video and it isn't, +check if the 'highlight' option contains "si". In version 3.0, this meant to +invert the status line. Now it should be "sr", reverse the status line, as +"si" now stands for italic! If italic is not available on your terminal, the +status line is inverted anyway; you will only see this problem on terminals +that have termcap codes for italics. + +============================================================================== +3. Opening and closing a window *opening-window* *E36* + +CTRL-W s *CTRL-W_s* +CTRL-W S *CTRL-W_S* +CTRL-W CTRL-S *CTRL-W_CTRL-S* +:[N]sp[lit] [++opt] [+cmd] *:sp* *:split* + Split current window in two. The result is two viewports on + the same file. Make new window N high (default is to use half + the height of the current window). Reduces the current window + height to create room (and others, if the 'equalalways' option + is set and 'eadirection' isn't "hor"). + Note: CTRL-S does not work on all terminals and might block + further input, use CTRL-Q to get going again. + Also see |++opt| and |+cmd|. + +CTRL-W CTRL-V *CTRL-W_CTRL-V* +CTRL-W v *CTRL-W_v* +:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* + Like |:split|, but split vertically. If 'equalalways' is set + and 'eadirection' isn't "ver" the windows will be spread out + horizontally, unless a width was specified. + Note: In other places CTRL-Q does the same as CTRL-V, but here + it doesn't! + +CTRL-W n *CTRL-W_n* +CTRL-W CTRL_N *CTRL-W_CTRL-N* +:[N]new [++opt] [+cmd] *:new* + Create a new window and start editing an empty file in it. + Make new window N high (default is to use half the existing + height). Reduces the current window height to create room (and + others, if the 'equalalways' option is set and 'eadirection' + isn't "hor"). + Also see |++opt| and |+cmd|. + If 'fileformats' is not empty, the first format given will be + used for the new buffer. If 'fileformats' is empty, the + 'fileformat' of the current buffer is used. This can be + overridden with the |++opt| argument. + Autocommands are executed in this order: + 1. WinLeave for the current window + 2. WinEnter for the new window + 3. BufLeave for the current buffer + 4. BufEnter for the new buffer + This behaves like a ":split" first, and then a ":e" command. + +:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew* + Like |:new|, but split vertically. If 'equalalways' is set + and 'eadirection' isn't "ver" the windows will be spread out + horizontally, unless a width was specified. + +:[N]new [++opt] [+cmd] {file} +:[N]sp[lit] [++opt] [+cmd] {file} *:split_f* + Create a new window and start editing file {file} in it. + If [+cmd] is given, execute the command when the file has been + loaded |+cmd|. + Also see |++opt|. + Make new window N high (default is to use half the existing + height). Reduces the current window height to create room + (and others, if the 'equalalways' option is set). + +:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview* + Same as ":split", but set 'readonly' option for this buffer. + +:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfind* *splitfind* + Same as ":split", but search for {file} in 'path'. Doesn't + split if {file} is not found. + +CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^* +CTRL-W ^ Does ":split #", split window in two and edit alternate file. + When a count is given, it becomes ":split #N", split window + and edit buffer N. + +Note that the 'splitbelow' and 'splitright' options influence where a new +window will appear. + + *:vert* *:vertical* +:vert[ical] {cmd} + Execute {cmd}. If it contains a command that splits a window, + it will be split vertically. + +:lefta[bove] {cmd} *:lefta* *:leftabove* +:abo[veleft] {cmd} *:abo* *:aboveleft* + Execute {cmd}. If it contains a command that splits a window, + it will be opened left (vertical split) or above (horizontal + split) the current window. Overrules 'splitbelow' and + 'splitright'. + +:rightb[elow] {cmd} *:rightb* *:rightbelow* +:bel[owright] {cmd} *:bel* *:belowright* + Execute {cmd}. If it contains a command that splits a window, + it will be opened right (vertical split) or below (horizontal + split) the current window. Overrules 'splitbelow' and + 'splitright'. + + *:topleft* *E442* +:to[pleft] {cmd} + Execute {cmd}. If it contains a command that splits a window, + it will appear at the top and occupy the full width of the Vim + window. When the split is vertical the window appears at the + far left and occupies the full height of the Vim window. + + *:botright* +:bo[tright] {cmd} + Execute {cmd}. If it contains a command that splits a window, + it will appear at the bottom and occupy the full width of the + Vim window. When the split is vertical the window appears at + the far right and occupies the full height of the Vim window. + +These command modifiers can be combined to make a vertically split window +occupy the full height. Example: > + :vertical topleft edit tags +Opens a vertically split, full-height window on the "tags" file at the far +left of the Vim window. + + +Closing a window +---------------- + +CTRL-W q *CTRL-W_q* +CTRL-W CTRL-Q *CTRL-W_CTRL-Q* +:q[uit] Quit current window. When quitting the last window (not + counting a help window), exit Vim. + When 'hidden' is set, and there is only one window for the + current buffer, it becomes hidden. + When 'hidden' is not set, and there is only one window for the + current buffer, and the buffer was changed, the command fails. + (Note: CTRL-Q does not work on all terminals) + +:q[uit]! Quit current window. If this was the last window for a buffer, + any changes to that buffer are lost. When quitting the last + window (not counting help windows), exit Vim. The contents of + the buffer are lost, even when 'hidden' is set. + +CTRL-W c *CTRL-W_c* *:clo* *:close* +:clo[se][!] Close current window. When the 'hidden' option is set, or + when the buffer was changed and the [!] is used, the buffer + becomes hidden (unless there is another window editing it). + This command fails when: *E444* + - There is only one window on the screen. + - When 'hidden' is not set, [!] is not used, the buffer has + changes, and there is no other window on this buffer. + Changes to the buffer are not written and won't get lost, so + this is a "safe" command. + +CTRL-W CTRL-C *CTRL-W_CTRL-C* + You might have expected that CTRL-W CTRL-C closes the current + window, but that does not work, because the CTRL-C cancels the + command. + + *:hide* +:hid[e] Quit current window, unless it is the last window on the + screen. The buffer becomes hidden (unless there is another + window editing it or 'bufhidden' is "unload" or "delete"). + The value of 'hidden' is irrelevant for this command. + Changes to the buffer are not written and won't get lost, so + this is a "safe" command. + +:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of + 'hidden' is restored after {cmd} has been executed. + Example: > + :hide edit Makefile +< This will edit "Makefile", and hide the current buffer if it + has any changes. + +CTRL-W o *CTRL-W_o* *E445* +CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* +:on[ly][!] Make the current window the only one on the screen. All other + windows are closed. + When the 'hidden' option is set, all buffers in closed windows + become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are + never abandoned, so changes cannot get lost. + +============================================================================== +4. Moving cursor to other windows *window-move-cursor* + +CTRL-W <Down> *CTRL-W_<Down>* +CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j* +CTRL-W j Move cursor to Nth window below current one. Uses the cursor + position to select between alternatives. + +CTRL-W <Up> *CTRL-W_<Up>* +CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k* +CTRL-W k Move cursor to Nth window above current one. Uses the cursor + position to select between alternatives. + +CTRL-W <Left> *CTRL-W_<Left>* +CTRL-W CTRL-H *CTRL-W_CTRL-H* +CTRL-W <BS> *CTRL-W_<BS>* *CTRL-W_h* +CTRL-W h Move cursor to Nth window left of current one. Uses the + cursor position to select between alternatives. + +CTRL-W <Right> *CTRL-W_<Right>* +CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l* +CTRL-W l Move cursor to Nth window right of current one. Uses the + cursor position to select between alternatives. + +CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W* +CTRL-W CTRL-W Without count: move cursor to window below/right of the + current one. If there is no window below or right, go to + top-left window. + With count: go to Nth window (windows are numbered from + top-left to bottom-right). To obtain the window number see + |bufwinnr()| and |winnr()|. + + *CTRL-W_W* +CTRL-W W Without count: move cursor to window above/left of current + one. If there is no window above or left, go to bottom-right + window. With count: go to Nth window (windows are numbered + from top-left to bottom-right). + +CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T* +CTRL-W CTRL-T Move cursor to top-left window. + +CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B* +CTRL-W CTRL-B Move cursor to bottom-right window. + +CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P* +CTRL-W CTRL-P Go to previous (last accessed) window. + + *CTRL-W_P* *E441* +CTRL-W P Go to preview window. When there is no preview window this is + an error. + {not available when compiled without the |+quickfix| feature} + +If Visual mode is active and the new window is not for the same buffer, the +Visual mode is ended. If the window is on the same buffer, the cursor +position is set to keep the same Visual area selected. + + *:winc* *:wincmd* +These commands can also be executed with ":wincmd": + +:[count]winc[md] {arg} + Like executing CTRL-W [count] {arg}. Example: > + :wincmd j +< Moves to the window below the current one. + This command is useful when a Normal mode cannot be used (for + the |CursorHold| autocommand event). Or when a Normal mode + command is inconvenient. + The count can also be a window number. Example: > + :exe nr . "wincmd w" +< This goes to window "nr". + +============================================================================== +5. Moving windows around *window-moving* + +CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443* +CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes + the second one, the second one becomes the third one, etc. + The last window becomes the first window. The cursor remains + in the same window. + This only works within the row or column of windows that the + current window is in. + + *CTRL-W_R* +CTRL-W R Rotate windows upwards/leftwards. The second window becomes + the first one, the third one becomes the second one, etc. The + first window becomes the last window. The cursor remains in + the same window. + This only works within the row or column of windows that the + current window is in. + +CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X* +CTRL-W CTRL-X Without count: Exchange current window with next one. If there + is no next window, exchange with previous window. + With count: Exchange current window with Nth window (first + window is 1). The cursor is put in the other window. + When vertical and horizontal window splits are mixed, the + exchange is only done in the row or column of windows that the + current window is in. + +The following commands can be used to change the window layout. For example, +when there are two vertically split windows, CTRL-W K will change that in +horizontally split windows. CTRL-W H does it the other way around. + + *CTRL-W_K* +CTRL-W K Move the current window to be at the very top, using the full + width of the screen. This works like closing the current + window and then creating another one with ":topleft split", + except that the current window contents is used for the new + window. + + *CTRL-W_J* +CTRL-W J Move the current window to be at the very bottom, using the + full width of the screen. This works like closing the current + window and then creating another one with ":botright split", + except that the current window contents is used for the new + window. + + *CTRL-W_H* +CTRL-W H Move the current window to be at the far left, using the + full height of the screen. This works like closing the + current window and then creating another one with + ":vert topleft split", except that the current window contents + is used for the new window. + {not available when compiled without the +vertsplit feature} + + *CTRL-W_L* +CTRL-W L Move the current window to be at the far right, using the full + height of the screen. This works like closing the + current window and then creating another one with + ":vert botright split", except that the current window + contents is used for the new window. + {not available when compiled without the +vertsplit feature} + +============================================================================== +6. Window resizing *window-resize* + + *CTRL-W_=* +CTRL-W = Make all windows (almost) equally high and wide, but use + 'winheight' and 'winwidth' for the current window. + +:res[ize] -N *:res* *:resize* *CTRL-W_-* +CTRL-W - Decrease current window height by N (default 1). + If used after 'vertical': decrease width by N. + +:res[ize] +N *CTRL-W_+* +CTRL-W + Increase current window height by N (default 1). + If used after 'vertical': increase width by N. + +:res[ize] [N] +CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* +CTRL-W _ Set current window height to N (default: highest possible). + +z{nr}<CR> Set current window height to {nr}. + + *CTRL-W_<* +CTRL-W < Decrease current window width by N (default 1). + + *CTRL-W_>* +CTRL-W > Increase current window width by N (default 1). + +:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar* +CTRL-W | Set current window width to N (default: widest possible). + +You can also resize a window by dragging a status line up or down with the +mouse. Or by dragging a vertical separator line left or right. This only +works if the version of Vim that is being used supports the mouse and the +'mouse' option has been set to enable it. + +The option 'winheight' ('wh') is used to set the minimal window height of the +current window. This option is used each time another window becomes the +current window. If the option is '0', it is disabled. Set 'winheight' to a +very large value, e.g., '9999', to make the current window always fill all +available space. Set it to a reasonable value, e.g., '10', to make editing in +the current window comfortable. + +The equivalent 'winwidth' ('wiw') option is used to set the minimal width of +the current window. + +When the option 'equalalways' ('ea') is set, all the windows are automatically +made the same size after splitting or closing a window. If you don't set this +option, splitting a window will reduce the size of the current window and +leave the other windows the same. When closing a window, the extra lines are +given to the window above it. + +The 'eadirection' option limits the direction in which the 'equalalways' +option is applied. The default "both" resizes in both directions. When the +value is "ver" only the heights of windows are equalized. Use this when you +have manually resized a vertically split window and want to keep this width. +Likewise, "hor" causes only the widths of windows to be equalized. + +The option 'cmdheight' ('ch') is used to set the height of the command-line. +If you are annoyed by the |hit-enter| prompt for long messages, set this +option to 2 or 3. + +If there is only one window, resizing that window will also change the command +line height. If there are several windows, resizing the current window will +also change the height of the window below it (and sometimes the window above +it). + +The minimal height and width of a window is set with 'winminheight' and +'winminwidth'. These are hard values, a window will never become smaller. + +============================================================================== +7. Argument and buffer list commands *buffer-list* + + args list buffer list meaning ~ +1. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N +2. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf +3. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf +4. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf +5. :rewind / :first 15. :brewind / :bfirst to first arg/buf +6. :last 16. :blast to last arg/buf +7. :all 17. :ball edit all args/buffers + 18. :unhide edit all loaded buffers + 19. :[N]bmod [N] to Nth modified buf + + split & args list split & buffer list meaning ~ +21. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N +22. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf +23. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf +24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf +25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf +26. :slast 36. :sblast split + to last arg/buf +27. :sall 37: :sball edit all args/buffers + 38. :sunhide edit all loaded buffers + 39. :[N]sbmod [N] split + to Nth modified buf + +40. :args list of arguments +41. :buffers list of buffers + +The meaning of [N] depends on the command: + [N] is number of buffers to go forward/backward on ?2, ?3, and ?4 + [N] is an argument number, defaulting to current argument, for 1 and 21 + [N] is a buffer number, defaulting to current buffer, for 11 and 31 + [N] is a count for 19 and 39 + +Note: ":next" is an exception, because it must accept a list of file names +for compatibility with Vi. + + +The argument list and multiple windows +-------------------------------------- + +The current position in the argument list can be different for each window. +Remember that when doing ":e file", the position in the argument list stays +the same, but you are not editing the file at that position. To indicate +this, the file message (and the title, if you have one) shows +"(file (N) of M)", where "(N)" is the current position in the file list, and +"M" the number of files in the file list. + +All the entries in the argument list are added to the buffer list. Thus, you +can also get to them with the buffer list commands, like ":bnext". + +:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall* +:[N]sal[l][!] [N] + Rearrange the screen to open one window for each argument. + All other windows are closed. When a count is given, this is + the maximum number of windows to open. + When the 'hidden' option is set, all buffers in closed windows + become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are + never abandoned, so changes cannot get lost. + [N] is the maximum number of windows to open. 'winheight' + also limits the number of windows opened ('winwidth' if + |:vertical| was prepended). + Buf/Win Enter/Leave autocommands are not executed for the new + windows here, that's only done when they are really entered. + +:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument* + Short for ":split | argument [N]": split window and go to Nth + argument. But when there is no such argument, the window is + not split. Also see |++opt| and |+cmd|. + +:[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext* + Short for ":split | [N]next": split window and go to Nth next + argument. But when there is no next file, the window is not + split. Also see |++opt| and |+cmd|. + +:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious* +:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext* + Short for ":split | [N]Next": split window and go to Nth + previous argument. But when there is no previous file, the + window is not split. Also see |++opt| and |+cmd|. + + *:sre* *:srewind* +:sre[wind][!] [++opt] [+cmd] + Short for ":split | rewind": split window and go to first + argument. But when there is no argument list, the window is + not split. Also see |++opt| and |+cmd|. + + *:sfir* *:sfirst* +:sfir[st [++opt] [+cmd] + Same as ":srewind". + + *:sla* *:slast* +:sla[st][!] [++opt] [+cmd] + Short for ":split | last": split window and go to last + argument. But when there is no argument list, the window is + not split. Also see |++opt| and |+cmd|. + + *:dr* *:drop* +:dr[op] {file} .. + Edit the first {file} in a window. + - If the file is already open in a window change to that + window. + - If the file is not open in a window edit the file in the + current window. If the current buffer can't be |abandon|ed, + the window is split first. + The |argument-list| is set, like with the |:next| command. + The purpose of this command is that it can be used from a + program that wants Vim to edit another file, e.g., a debugger. + {only available when compiled with the +gui feature} + +============================================================================== +8. Do a command in all buffers or windows *list-repeat* + + *:windo* +:windo[!] {cmd} Execute {cmd} in each window. + It works like doing this: > + CTRL-W t + :{cmd} + CTRL-W w + :{cmd} + etc. +< When an error is detected on one window, further + windows will not be visited. + The last window (or where an error occurred) becomes + the current window. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not open or close windows or reorder them. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + Also see |:argdo| and |:bufdo|. + + *:bufdo* +:bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list. + It works like doing this: > + :bfirst + :{cmd} + :bnext + :{cmd} + etc. +< When the current file can't be |abandon|ed and the [!] + is not present, the command fails. + When an error is detected on one buffer, further + buffers will not be visited. + Unlisted buffers are skipped. + The last buffer (or where an error occurred) becomes + the current buffer. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not delete buffers or add buffers to the + buffer list. + Note: While this command is executing, the Syntax + autocommand event is disabled by adding it to + 'eventignore'. This considerably speeds up editing + each buffer. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + Also see |:argdo| and |:windo|. + +Examples: > + + :windo set nolist nofoldcolumn | normal zn + +This resets the 'list' option and disables folding in all windows. > + + :bufdo set fileencoding= | update + +This resets the 'fileencoding' in each buffer and writes it if this changed +the buffer. The result is that all buffers will use the 'encoding' encoding +(if conversion works properly). + +============================================================================== +9. Tag or file name under the cursor *window-tag* + + *:sta* *:stag* +:sta[g][!] [tagname] + Does ":tag[!] [tagname]" and splits the window for the found + tag. See also |:tag|. + +CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* +CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a + tag and jump to it in the new upper window. Make new window N + high. + + *CTRL-W_g]* +CTRL-W g ] Split current window in two. Use identifier under cursor as a + tag and perform ":tselect" on it in the new upper window. + Make new window N high. + + *CTRL-W_g_CTRL-]* +CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a + tag and perform ":tjump" on it in the new upper window. Make + new window N high. + +CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* +CTRL-W CTRL-F Split current window in two. Edit file name under cursor. + Like ":split ]f", but window isn't split if the file does not + exist. + Uses the 'path' variable as a list of directory names where to + look for the file. Also the path for current file is + used to search for the file name. + If the name is a hypertext link that looks like + "type://machine/path", only "/path" is used. + If a count is given, the count'th matching file is edited. + {not available when the |+file_in_path| feature was disabled + at compile time} + +Also see |CTRL-W_CTRL-I|: open window for an included file that includes +the keyword under the cursor. + +============================================================================== +10. The preview window *preview-window* + +The preview window is a special window to show (preview) another file. It is +normally a small window used to show an include file or definition of a +function. +{not available when compiled without the |+quickfix| feature} + +There can be only one preview window. It is created with one of the commands +below. The 'previewheight' option can be set to specify the height of the +preview window when it's opened. The 'previewwindow' option is set in the +preview window to be able to recognize it. The 'winfixheight' option is set +to have it keep the same height when opening/closing other windows. + + *:pta* *:ptag* +:pta[g][!] [tagname] + Does ":tag[!] [tagname]" and shows the found tag in a + "Preview" window without changing the current buffer or cursor + position. If a "Preview" window already exists, it is re-used + (like a help window is). If a new one is opened, + 'previewheight' is used for the height of the window. See + also |:tag|. + See below for an example. |CursorHold-example| + Small difference from |:tag|: When [tagname] is equal to the + already displayed tag, the position in the matching tag list + is not reset. This makes the CursorHold example work after a + |:ptnext|. + +CTRL-W z *CTRL-W_z* +CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* +:pc[lose][!] Close any "Preview" window currently open. When the 'hidden' + option is set, or when the buffer was changed and the [!] is + used, the buffer becomes hidden (unless there is another + window editing it). The command fails if any "Preview" buffer + cannot be closed. See also |:close|. + + *:pp* *:ppop* +:[count]pp[op][!] + Does ":[count]pop[!]" in the preview window. See |:pop| and + |:ptag|. {not in Vi} + +CTRL-W } *CTRL-W_}* + Use identifier under cursor as a tag and perform a :ptag on + it. Make the new Preview window (if required) N high. If N is + not given, 'previewheight' is used. + +CTRL-W g } *CTRL-W_g}* + Use identifier under cursor as a tag and perform a :ptjump on + it. Make the new Preview window (if required) N high. If N is + not given, 'previewheight' is used. + + *:ped* *:pedit* +:ped[it][!] [++opt] [+cmd] {file} + Edit {file} in the preview window. The preview window is + opened like with |:ptag|. The current window and cursor + position isn't changed. Useful example: > + :pedit +/fputc /usr/include/stdio.h +< + *:ps* *:psearch* +:[range]ps[earch][!] [count] [/]pattern[/] + Works like |:ijump| but shows the found match in the preview + window. The preview window is opened like with |:ptag|. The + current window and cursor position isn't changed. Useful + example: > + :psearch popen +< Like with the |:ptag| command, you can use this to + automatically show information about the word under the + cursor. This is less clever than using |:ptag|, but you don't + need a tags file and it will also find matches in system + include files. Example: > + :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>") +< Warning: This can be slow. + +Example *CursorHold-example* > + + :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>") + +This will cause a ":ptag" to be executed for the keyword under the cursor, +when the cursor hasn't moved for the time set with 'updatetime'. The "nested" +makes other autocommands be executed, so that syntax highlighting works in the +preview window. The "silent!" avoids an error message when the tag could not +be found. Also see |CursorHold|. To disable this again: > + + :au! CursorHold + +A nice addition is to highlight the found tag, avoid the ":ptag" when there +is no word under the cursor, and a few other things: > + + :au! CursorHold *.[ch] nested call PreviewWord() + :func PreviewWord() + : if &previewwindow " don't do this in the preview window + : return + : endif + : let w = expand("<cword>") " get the word under cursor + : if w =~ '\a' " if the word contains a letter + : + : " Delete any existing highlight before showing another tag + : silent! wincmd P " jump to preview window + : if &previewwindow " if we really get there... + : match none " delete existing highlight + : wincmd p " back to old window + : endif + : + : " Try displaying a matching tag for the word under the cursor + : try + : exe "ptag " . w + : catch + : return + : endtry + : + : silent! wincmd P " jump to preview window + : if &previewwindow " if we really get there... + : if has("folding") + : silent! .foldopen " don't want a closed fold + : endif + : call search("$", "b") " to end of previous line + : let w = substitute(w, '\\', '\\\\', "") + : call search('\<\V' . w . '\>') " position cursor on match + : " Add a match highlight to the word at this position + : hi previewWord term=bold ctermbg=green guibg=green + : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"' + : wincmd p " back to old window + : endif + : endif + :endfun + +============================================================================== +11. Using hidden buffers *buffer-hidden* + +A hidden buffer is not displayed in a window, but is still loaded into memory. +This makes it possible to jump from file to file, without the need to read or +write the file every time you get another buffer in a window. +{not available when compiled without the |+listcmds| feature} + + *:buffer-!* +If the option 'hidden' ('hid') is set, abandoned buffers are kept for all +commands that start editing another file: ":edit", ":next", ":tag", etc. The +commands that move through the buffer list sometimes make the current buffer +hidden although the 'hidden' option is not set. This happens when a buffer is +modified, but is forced (with '!') to be removed from a window, and +'autowrite' is off or the buffer can't be written. + +You can make a hidden buffer not hidden by starting to edit it with any +command. Or by deleting it with the ":bdelete" command. + +The 'hidden' is global, it is used for all buffers. The 'bufhidden' option +can be used to make an exception for a specific buffer. It can take these +values: + <empty> Use the value of 'hidden'. + hide Hide this buffer, also when 'hidden' is not set. + unload Don't hide but unload this buffer, also when 'hidden' + is set. + delete Delete the buffer. + + *hidden-quit* +When you try to quit Vim while there is a hidden, modified buffer, you will +get an error message and Vim will make that buffer the current buffer. You +can then decide to write this buffer (":wq") or quit without writing (":q!"). +Be careful: there may be more hidden, modified buffers! + +A buffer can also be unlisted. This means it exists, but it is not in the +list of buffers. |unlisted-buffer| + + +:files[!] *:files* +:buffers[!] *:buffers* *:ls* +:ls[!] Show all buffers. Example: + + 1 #h "/test/text" line 1 ~ + 2u "asdf" line 0 ~ + 3 %l+ "version.c" line 1 ~ + + When the [!] is included the list will show unlisted buffers + (the term "unlisted" is a bit confusing then...). + + Each buffer has a unique number. That number will not change, + so you can always go to a specific buffer with ":buffer N" or + "N CTRL-^", where N is the buffer number. + + Indicators (chars in the same column are mutually exclusive): + u an unlisted buffer (only displayed when [!] is used) + |unlisted-buffer| + % the buffer in the current window + # the alternate buffer for ":e #" and CTRL-^ + a an active buffer: it is loaded and visible + h a hidden buffer: It is loaded, but currently not + displayed in a window |hidden-buffer| + - a buffer with 'modifiable' off + = a readonly buffer + + a modified buffer + x a buffer with read errors + + *:bad* *:badd* +:bad[d] [+lnum] {fname} + Add file name {fname} to the buffer list, without loading it. + If "lnum" is specified, the cursor will be positioned at that + line when the buffer is first entered. Note that other + commands after the + will be ignored. + +:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* +:bd[elete][!] [N] + Unload buffer [N] (default: current buffer) and delete it from + the buffer list. If the buffer was changed, this fails, + unless when [!] is specified, in which case changes are lost. + The file remains unaffected. Any windows for this buffer are + closed. If buffer [N] is the current buffer, another buffer + will be displayed instead. This is the most recent entry in + the jump list that points into a loaded buffer. + Actually, the buffer isn't completely deleted, it is removed + from the buffer list |unlisted-buffer| and option values, + variables and mappings/abbreviations for the buffer are + cleared. + +:bdelete[!] {bufname} *E93* *E94* + Like ":bdelete[!] [N]", but buffer given by name. Note that a + buffer whose name is a number cannot be referenced by that + name; use the buffer number instead. Insert a backslash + before a space in a buffer name. + +:bdelete[!] N1 N2 ... + Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be + buffer numbers or buffer names (but not buffer names that are + a number). Insert a backslash before a space in a buffer + name. + +:N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M + |inclusive|. + +:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517* +:bw[ipeout][!] {bufname} +:N,Mbw[ipeout][!] +:bw[ipeout][!] N1 N2 ... + Like |:bdelete|, but really delete the buffer. All marks in + this buffer become invalid, option settings are lost, etc. + Don't use this unless you know what you are doing. + +:[N]bun[load][!] *:bun* *:bunload* *E515* +:bun[load][!] [N] + Unload buffer [N] (default: current buffer). The memory + allocated for this buffer will be freed. The buffer remains + in the buffer list. + If the buffer was changed, this fails, unless when [!] is + specified, in which case the changes are lost. + Any windows for this buffer are closed. If buffer [N] is the + current buffer, another buffer will be displayed instead. + This is the most recent entry in the jump list that points + into a loaded buffer. + +:bunload[!] {bufname} + Like ":bunload[!] [N]", but buffer given by name. Note that a + buffer whose name is a number cannot be referenced by that + name; use the buffer number instead. Insert a backslash + before a space in a buffer name. + +:N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M + |inclusive|. + +:bunload[!] N1 N2 ... + Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be + buffer numbers or buffer names (but not buffer names that are + a number). Insert a backslash before a space in a buffer + name. + +:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86* + Edit buffer [N] from the buffer list. If [N] is not given, + the current buffer remains being edited. See |:buffer-!| for + [!]. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. + +:[N]b[uffer][!] {filename} + Edit buffer for {filename} from the buffer list. See + |:buffer-!| for [!]. This will also edit a buffer that is not + in the buffer list, without setting the 'buflisted' flag. + +:[N]sb[uffer] [N] *:sb* *:sbuffer* + Split window and edit buffer [N] from the buffer list. If [N] + is not given, the current buffer is edited. Respects the + "useopen" setting of 'switchbuf' when splitting. This will + also edit a buffer that is not in the buffer list, without + setting the 'buflisted' flag. + +:[N]sb[uffer] {filename} + Split window and edit buffer for {filename} from the buffer + list. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. + + *:bn* *:bnext* *E87* +:[N]bn[ext][!] [N] + Go to [N]th next buffer in buffer list. [N] defaults to one. + Wraps around the end of the buffer list. + See |:buffer-!| for [!]. + If you are in a help buffer, this takes you to the next help + buffer (if there is one). Similarly, if you are in a normal + (non-help) buffer, this takes you to the next normal buffer. + This is so that if you have invoked help, it doesn't get in + the way when you're browsing code/text buffers. The next three + commands also work like this. + + *:sbn* *:sbnext* +:[N]sbn[ext] [N] + Split window and go to [N]th next buffer in buffer list. + Wraps around the end of the buffer list. Uses 'switchbuf' + +:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* +:[N]bp[revious][!] [N] + Go to [N]th previous buffer in buffer list. [N] defaults to + one. Wraps around the start of the buffer list. + See |:buffer-!| for [!] and 'switchbuf'. + +:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* +:[N]sbp[revious] [N] + Split window and go to [N]th previous buffer in buffer list. + Wraps around the start of the buffer list. + Uses 'switchbuf'. + + *:br* *:brewind* +:br[ewind][!] Go to first buffer in buffer list. If the buffer list is + empty, go to the first unlisted buffer. + See |:buffer-!| for [!]. + + *:bf* *:bfirst* +:bf[irst] Same as ":brewind". + + *:sbr* *:sbrewind* +:sbr[ewind] Split window and go to first buffer in buffer list. If the + buffer list is empty, go to the first unlisted buffer. + Respects the 'switchbuf' option. + + *:sbf* *:sbfirst* +:sbf[irst] Same as ":sbrewind". + + *:bl* *:blast* +:bl[ast][!] Go to last buffer in buffer list. If the buffer list is + empty, go to the last unlisted buffer. + See |:buffer-!| for [!]. + + *:sbl* *:sblast* +:sbl[ast] Split window and go to last buffer in buffer list. If the + buffer list is empty, go to the last unlisted buffer. + Respects 'switchbuf' option. + +:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84* + Go to [N]th next modified buffer. Note: this command also + finds unlisted buffers. If there is no modified buffer the + command fails. + +:[N]sbm[odified] [N] *:sbm* *:sbmodified* + Split window and go to [N]th next modified buffer. + Respects 'switchbuf' option. + Note: this command also finds buffers not in the buffer list. + +:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide* +:[N]sun[hide] [N] + Rearrange the screen to open one window for each loaded buffer + in the buffer list. When a count is given, this is the + maximum number of windows to open. + +:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball* +:[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in + the buffer list. When a count is given, this is the maximum + number of windows to open. 'winheight' also limits the number + of windows opened ('winwidth' if |:vertical| was prepended). + Buf/Win Enter/Leave autocommands are not executed for the new + windows here, that's only done when they are really entered. + +Note: All the commands above that start editing another buffer, keep the +'readonly' flag as it was. This differs from the ":edit" command, which sets +the 'readonly' flag each time the file is read. + +============================================================================== +12. Special kinds of buffers *special-buffers* + +Instead of containing the text of a file, buffers can also be used for other +purposes. A few options can be set to change the behavior of a buffer: + 'bufhidden' what happens when the buffer is no longer displayed + in a window. + 'buftype' what kind of a buffer this is + 'swapfile' whether the buffer will have a swap file + 'buflisted' buffer shows up in the buffer list + +A few useful kinds of a buffer: + +quickfix Used to contain the error list. See |:cwindow|. This command + sets the 'buftype' option to "quickfix". You are not supposed + to change this! 'swapfile' is off. + +help Contains a help file. Will only be created with the |:help| + command. The flag that indicates a help buffer is internal + and can't be changed. The 'buflisted' option will be reset + for a help buffer. + +directory Displays directory contents. Used by the |file-explorer| + plugin. The buffer is created with these settings: > + :set buftype=nowrite + :set bufhidden=delete + :set noswapfile +< The buffer name is the name of the directory and is adjusted + when using the |:cd| command. + +scratch Contains text that can be discarded at any time. It is kept + when closing the window, it must be deleted explicitly. + Settings: > + :set buftype=nofile + :set bufhidden=hide + :set noswapfile +< The buffer name can be used to identify the buffer. + + *unlisted-buffer* +unlisted The buffer is not in the buffer list. It is not used for + normal editing, but to show a help file, remember a file name + or marks. The ":bdelete" command will also set this option, + thus it doesn't completely delete the buffer. Settings: > + :set nobuflisted +< + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/workshop.txt b/en/workshop.txt new file mode 100644 index 000000000..b720d5eaa --- /dev/null +++ b/en/workshop.txt @@ -0,0 +1,98 @@ +*workshop.txt* For Vim version 6.3. Last change: 2004 Jan 08 + + + VIM REFERENCE MANUAL by Gordon Prieur + + +Sun Visual WorkShop Features *workshop* *workshop-support* + +1. Introduction |workshop-intro| +2. Commands |workshop-commands| +3. Compiling vim/gvim for WorkShop |workshop-compiling| +4. Configuring gvim for a WorkShop release tree |workshop-configure| +5. Obtaining the latest version of the XPM library |workshop-xpm| + +{Vi does not have any of these features} +{only available when compiled with the |+sun_workshop| feature} + +============================================================================== +1. Introduction *workshop-intro* + +Sun Visual WorkShop has an "Editor of Choice" feature designed to let users +debug using their favorite editors. For the 6.0 release we have added support +for gvim. A workshop debug session will have a debugging window and an editor +window (possibly others as well). The user can do many debugging operations +from the editor window, minimizing the need to switch from window to window. + +The version of vim shipped with Sun Visual WorkShop 6 (also called Forte +Developer 6) is vim 5.3. The features in this release are much more reliable +than the vim/gvim shipped with Visual WorkShop. VWS users wishing to use vim +as their editor should compile these sources and install them in their +workshop release tree. + +============================================================================== +2. Commands *workshop-commands* + + *:ws* *:wsverb* +:ws[verb] verb Pass the verb to the verb executor + +Pass the verb to a workshop function which gathers some arguments and +sends the verb and data to workshop over an IPC connection. + +============================================================================== +3. Compiling vim/gvim for WorkShop *workshop-compiling* + +Compiling vim with FEAT_SUN_WORKSHOP turns on all compile time flags necessary +for building a vim to work with Visual WorkShop. The features required for VWS +have been built and tested using the Sun compilers from the VWS release. They +have not been built or tested using Gnu compilers. This does not mean the +features won't build and run if compiled with gcc, just that nothing is +guaranteed with gcc! + +============================================================================== +4. Configuring gvim for a WorkShop release tree *workshop-configure* + +There are several assumptions which must be met in order to compile a gvim for +use with Sun Visual WorkShop 6. + + o You should use the compiler in VWS rather than gcc. We have neither + built nor tested with gcc and cannot guarantee it will build properly. + + o You must supply your own XPM library. See |workshop-xpm| below for + details on obtaining the latest version of XPM. + + o Edit the Makefile in the src directory and uncomment the lines for Sun + Visual WorkShop. You can easily find these by searching for the string + FEAT_SUN_WORKSHOP + + o We also suggest you use Motif for your gui. This will provide gvim with + the same look-and-feel as the rest of Sun Visual WorkShop. + +The following configuration line can be used to configure vim to build for use +with Sun Visual WorkShop: + + $ CC=cc configure --enable-workshop --enable-gui=motif \ + -prefix=<VWS-install-dir>/contrib/contrib6/<vim-version> + +The VWS-install-dir should be the base directory where your Sun Visual WorkShop +was installed. By default this is /opt/SUNWspro. It will normally require +root permissions to install the vim release. You will also need to change the +symlink <VWS-install-dir>/bin/gvim to point to the vim in your newly installed +directory. The <vim-version> should be a unique version string. I use "vim" +concatenated with the equivalent of version.h's VIM_VERSION_SHORT. + +============================================================================== +5. Obtaining the latest version of the XPM library *workshop-xpm* + +The XPM library is required to show images within Vim with Motif or Athena. +Without it the toolbar and signs will be disabled. + +The XPM library is provide by Arnaud Le Hors of the French National Institute +for Research in Computer Science and Control. It can be downloaded from +http://koala.ilog.fr/ftp/pub/xpm. The current release, as of this writing, is +xpm-3.4k-solaris.tgz, which is a gzip'ed tar file. If you create the directory +/usr/local/xpm and untar the file there you can use the uncommented lines in +the Makefile without changing them. If you use another xpm directory you will +need to change the XPM_DIR in src/Makefile. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/xxd.1 b/en/xxd.1 new file mode 100644 index 000000000..fba0521d6 --- /dev/null +++ b/en/xxd.1 @@ -0,0 +1,373 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> +.\" Changes by Bram Moolenaar <Bram@vim.org> +.SH NAME +.I xxd +\- make a hexdump or do the reverse. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH DESCRIPTION +.I xxd +creates a hex dump of a given file or standard input. +It can also convert a hex dump back to its original binary form. +Like +.BR uuencode(1) +and +.BR uudecode(1) +it allows the transmission of binary data in a `mail-safe' ASCII representation, +but has the advantage of decoding to standard output. +Moreover, it can be used to perform binary file patching. +.SH OPTIONS +If no +.I infile +is given, standard input is read. +If +.I infile +is specified as a +.RB \` \- ' +character, then input is taken from standard input. +If no +.I outfile +is given (or a +.RB \` \- ' +character is in its place), results are sent to standard output. +.PP +Note that a "lazy" parser is used which does not check for more than the first +option letter, unless the option is followed by a parameter. +Spaces between a single option letter and its parameter are optional. +Parameters to options can be specified in decimal, hexadecimal or octal +notation. +Thus +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +and +.B \-cols 8 +are all equivalent. +.PP +.TP +.IR \-a " | " \-autoskip +toggle autoskip: A single '*' replaces nul-lines. Default off. +.TP +.IR \-b " | " \-bits +Switch to bits (binary digits) dump, rather than hexdump. +This option writes octets as eight digits "1"s and "0"s instead of a normal +hexacecimal dump. Each line is preceded by a line number in hexadecimal and +followed by an ascii (or ebcdic) representation. The command line switches +\-r, \-p, \-i do not work with this mode. +.TP +.IR "\-c cols " | " \-cols cols" +.IR "\-c cols " | " \-cols cols" +format +.RI < cols > +octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. +.TP +.IR \-E " | " \-EBCDIC +Change the character encoding in the righthand column from ASCII to EBCDIC. +This does not change the hexadecimal representation. The option is +meaningless in combinations with \-r, \-p or \-i. +.TP +.IR "\-g bytes " | " \-groupsize bytes" +seperate the output of every +.RI < bytes > +bytes (two hex characters or eight bit-digits each) by a whitespace. +Specify +.I \-g 0 +to suppress grouping. +.RI < Bytes "> defaults to " 2 +in normal mode and \fI1\fP in bits mode. +Grouping does not apply to postscript or include style. +.TP +.IR \-h " | " \-help +print a summary of available commands and exit. No hex dumping is performed. +.TP +.IR \-i " | " \-include +output in C include file style. A complete static array definition is written +(named after the input file), unless xxd reads from stdin. +.TP +.IR "\-l len " | " \-len len" +stop after writing +.RI < len > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +output in postscript continuous hexdump style. Also known as plain hexdump +style. +.TP +.IR \-r " | " \-revert +reverse operation: convert (or patch) hexdump into binary. +If not writing to stdout, xxd writes into its output file without truncating +it. Use the combination +.I \-r \-p +to read plain hexadecimal dumps without line number information and without a +particular column layout. Additional Whitespace and line-breaks are allowed +anywhere. +.TP +.I \-seek offset +When used after +.I \-r +: revert with +.RI < offset > +added to file positions found in hexdump. +.TP +.I \-s [\+][\-]seek +start at +.RI < seek > +bytes abs. (or rel.) infile offset. +\fI\+ \fRindicates that the seek is relative to the current stdin file position +(meaningless when not reading from stdin). \fI\- \fRindicates that the seek +should be that many characters from the end of the input (or if combined with +\fI \+ \fR: before the current stdin file position). +Without \-s option, xxd starts at the current file position. +.TP +.I \-u +use upper case hex letters. Default is lower case. +.TP +.IR \-v " | " \-version +show version string. +.SH CAVEATS +.PP +.I xxd \-r +has some builtin magic while evaluating line number information. +If the ouput file is seekable, then the linenumbers at the start of each +hexdump line may be out of order, lines may be missing, or overlapping. In +these cases xxd will lseek(2) to the next position. If the output file is not +seekable, only gaps are allowed, which will be filled by null-bytes. +.PP +.I xxd \-r +never generates parse errors. Garbage is silently skipped. +.PP +When editing hexdumps, please note that +.I xxd \-r +skips everything on the input line after reading enough columns of hexadecimal +data (see option \-c). This also means, that changes to the printable ascii (or +ebcdic) columns are always ignored. Reverting a plain (or postscript) style +hexdump with xxd \-r \-p does not depend on the correct number of columns. Here an thing that looks like a pair of hex-digits is interpreted. +.PP +Note the difference between +.br +\fI% xxd \-i file\fR +.br +and +.br +\fI% xxd \-i \< file\fR +.PP +.I xxd \-s \+seek +may be different from +.I xxd \-s seek +, as lseek(2) is used to "rewind" input. A '+' +makes a difference if the input source is stdin, and if stdin's file position +is not at the start of the file by the time xxd is started and given its input. +The following examples may help to clarify (or further confuse!)... +.PP +Rewind stdin before reading; needed because the `cat' has already read to the +end of stdin. +.br +\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file +.PP +Hexdump from file position 0x480 (=1024+128) onwards. +The `+' sign means "relative to the current position", thus the `128' adds to +the 1k where dd left off. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file +.PP +Hexdump from file position 0x100 ( = 1024-768) on. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file +.PP +However, this is a rare situation and the use of `+' is rarely needed. +the author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. +.SH EXAMPLES +.PP +.br +Print everything but the first three lines (hex 0x30 bytes) of +.B file +\. +.br +\fI% xxd \-s 0x30 file +.PP +.br +Print 3 lines (hex 0x30 bytes) from the end of +.B file +\. +.br +\fI% xxd \-s \-0x30 file +.PP +.br +Print 120 bytes as continuous hexdump with 40 octets per line. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e544820585844203120224d616e75616c207061 +.br +676520666f7220787864220a2e5c220a2e5c2220 +.br +32317374204d617920313939360a2e5c22204d61 +.br +6e207061676520617574686f723a0a2e5c222020 +.br +2020546f6e79204e7567656e74203c746f6e7940 +.br +7363746e7567656e2e7070702e67752e6564752e +.br + +.br +Hexdump the first 120 bytes of this man page with 12 octets per line. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +000000c: 616e 7561 6c20 7061 6765 2066 anual page f +.br +0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\". +.br +0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May +.br +0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma +.br +000003c: 6e20 7061 6765 2061 7574 686f n page autho +.br +0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To +.br +0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent <t +.br +0000060: 6f6e 7940 7363 746e 7567 656e ony@sctnugen +.br +000006c: 2e70 7070 2e67 752e 6564 752e .ppp.gu.edu. +.PP +.br +Display just the date from the file xxd.1 +.br +\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +.br +0000028: 3231 7374 204d 6179 2031 3939 21st May 199 +.PP +.br +Copy +.B input_file +to +.B output_file +and prepend 100 bytes of value 0x00. +.br +\fI% xxd input_file | xxd \-r \-s 100 \> output_file\fR +.br + +.br +Patch the date in the file xxd.1 +.br +\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +.br +0000028: 3235 7468 204d 6179 2031 3939 25th May 199 +.PP +.br +Create a 65537 byte file with all bytes 0x00, +except for the last one which is 'A' (hex 0x41). +.br +\fI% echo '010000: 41' | xxd \-r \> file\fR +.PP +.br +Hexdump this file with autoskip. +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Create a 1 byte file containing a single 'A' character. +The number after '\-r \-s' adds to the linenumbers found in the file; +in effect, the leading bytes are suppressed. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to hexdump a region marked between `a' and `z'. +.br +\fI:'a,'z!xxd\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover a binary hexdump marked between `a' and `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover one line of a hexdump. Move the cursor over the line and type: +.br +\fI!!xxd \-r\fR +.PP +Read single characters from a serial line +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH "RETURN VALUES" +The following error values are returned: +.TP +0 +no errors encountered. +.TP +\-1 +operation not supported ( +.I xxd \-r \-i +still impossible). +.TP +1 +error while parsing options. +.TP +2 +problems with input file. +.TP +3 +problems with output file. +.TP +4,5 +desired seek position is unreachable. +.SH "SEE ALSO" +uuencode(1), uudecode(1), patch(1) +.br +.SH WARNINGS +The tools weirdness matches its creators brain. +Use entirely at your own risk. Copy files. Trace it. Become a wizard. +.br +.SH VERSION +This manual page documents xxd version 1.7 +.SH AUTHOR +.br +(c) 1990-1997 by Juergen Weigert +.br +<jnweiger@informatik.uni-erlangen.de> +.LP +Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me. +.PP +Manual page started by Tony Nugent +.br +<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> +.br +Small changes by Bram Moolenaar. +Edited by Juergen Weigert. +.PP From 2b2d02a742f744670263602dee31246304d90640 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Wed, 26 Jan 2005 18:55:05 +0000 Subject: [PATCH 003/783] add: filter tool and document git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@3 a429a4b8-4c93-91f1-de24-85204d8cde48 --- Makefile | 13 +++ ja/help.jax | 205 +++++++++++++++++++++++++++++++++++++++++++++ tools/doc_maker.pl | 122 +++++++++++++++++++++++++++ 3 files changed, 340 insertions(+) create mode 100644 Makefile create mode 100644 ja/help.jax create mode 100644 tools/doc_maker.pl diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..26c69a3f9 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +OUTDIR=build +TARGET_LANG=ja + +build: + perl tools/doc_maker.pl -v -p -d build/runtime/doc -e jax $(TARGET_LANG)/*.$(TARGET_LANG)x + +clean: + rm -rf $(OUTDIR)/runtime + +distclean: + rm -rf $(OUTDIR) + +.PHONY: build clean distclean diff --git a/ja/help.jax b/ja/help.jax new file mode 100644 index 000000000..d7f28fe6f --- /dev/null +++ b/ja/help.jax @@ -0,0 +1,205 @@ +COMMENT: リファレンスマニュアル目次 +STATUS: suspend +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*help.txt* For Vim version 6.3. Last change: 2004 May 04 + + VIM - メインヘルプファイル + k + 移動: カーソルを使用するか、"h" で左、"j" で下、 h l + "k" で上、"l" で右に移動できます。 j + ヘルプの終了: ":q<Enter>" とタイプします。 + Vimの終了: ":qa!<Enter>" とします(注意! 変更はすべて破棄される)。 + + 項目への移動: |bars|の間に挟まれているタグの箇所へカーソルを移動して + CTRL-]をタイプする。 +マウスでの項目移動: ":set mouse=a"と入力してマウスを有効にしてください(xterm + もしくはGUIでのみ可)。|bars|で左ボタンでダブルクリックす + ると、項目に移動できます。 + 事前の項目に戻る: CTRL-T もしくは CTRL-O をタイプします。 + + 指定項目のヘルプ: ":help"(|:help|を参照)の後に、調べたいコマンド名を入力す + ることにより、いつでも直接該当項目のヘルプを参照できます。 + また修飾子を使って各モードを指定することが出来ます。 + *help-context* + モード 修飾子 例 ~ + 通常モード時のコマンド (無し) :help x + ビジュアルモード時のコマンド v_ :help v_u + 挿入モード時のコマンド i_ :help i_<Esc> + コマンドラインのコマンド : :help :quit + コマンドラインの編集 c_ :help c_<Del> + Vim起動時の引数 - :help -r + オプション ' :help 'textwidth' + ヘルプを検索する: ":help word" とタイプしてから CTRL-D を押すと "word" に + マッチするヘルプ項目の一覧を見ることができます。 + +VIMはVi IMprovedからの由来です。VIMの殆どはBram Moolenaarによって作成されまし +たが、ヘルプには多くの人が関わっています。(|credits|を参照) +------------------------------------------------------------------------------ + *doc-file-list* *Q_ct* +基本: +|quickref| 頻繁に使う最も一般的なコマンド群の概要 +|tutor| 30分でできる!!初心者向けのトレーニングコース +|copying| 著作権について +|iccf| ウガンダの恵まれない子供達への支援 +|sponsor| Vim開発スポンサー制度、Vimの登録ユーザになろう +|www| World Wide Web上のVim情報 +|bugs| バグレポートの送信先 + +ユーザマニュアル: 以下のファイルでは各編集作業のやり方について述べています。 + +|usr_toc.txt| ユーザマニュアル目次 + +初めに ~ +|usr_01.txt| ユーザマニュアルについて +|usr_02.txt| Vimへの第一歩 +|usr_03.txt| カーソルを動かしてみよう +|usr_04.txt| 文章を少し変更してみる +|usr_05.txt| 好みの設定を行なう +|usr_06.txt| 構文強調を体験する +|usr_07.txt| 複数のファイルを編集するには +|usr_08.txt| ウィンドウ分割 +|usr_09.txt| GUIで使う +|usr_10.txt| 本格的に編集・変更する +|usr_11.txt| クラッシュからの生還 +|usr_12.txt| 巧妙な技の数々 + +効率的な編集 ~ +|usr_20.txt| Typing command-line commands quickly +|usr_21.txt| Go away and come back +|usr_22.txt| Finding the file to edit +|usr_23.txt| Editing other files +|usr_24.txt| Inserting quickly +|usr_25.txt| Editing formatted text +|usr_26.txt| Repeating +|usr_27.txt| Search commands and patterns +|usr_28.txt| Folding +|usr_29.txt| Moving through programs +|usr_30.txt| Editing programs +|usr_31.txt| Exploiting the GUI + +Tuning Vim ~ +|usr_40.txt| Make new commands +|usr_41.txt| Write a Vim script +|usr_42.txt| Add new menus +|usr_43.txt| Using filetypes +|usr_44.txt| Your own syntax highlighted +|usr_45.txt| Select your language + +Making Vim Run ~ +|usr_90.txt| Installing Vim + + +REFERENCE MANUAL: These files explain every detail of Vim. + +General subjects ~ +|intro.txt| general introduction to Vim; notation used in help files +|help.txt| overview and quick reference (this file) +|index.txt| alphabetical index of all commands +|help-tags| all the tags you can jump to (index of tags) +|howto.txt| how to do the most common editing tasks +|tips.txt| various tips on using Vim +|message.txt| (error) messages and explanations +|quotes.txt| remarks from users of Vim +|todo.txt| known problems and desired extensions +|develop.txt| development of Vim +|uganda.txt| Vim distribution conditions and what to do with your money + +Basic editing ~ +|starting.txt| starting Vim, Vim command arguments, initialisation +|editing.txt| editing and writing files +|motion.txt| commands for moving around +|scroll.txt| scrolling the text in the window +|insert.txt| Insert and Replace mode +|change.txt| deleting and replacing text +|indent.txt| automatic indenting for C and other languages +|undo.txt| Undo and Redo +|repeat.txt| repeating commands, Vim scripts and debugging +|visual.txt| using the Visual mode (selecting a text area) +|various.txt| various remaining commands +|recover.txt| recovering from a crash + +Advanced editing ~ +|cmdline.txt| Command-line editing +|options.txt| description of all options +|pattern.txt| regexp patterns and search commands +|map.txt| key mapping and abbreviations +|tagsrch.txt| tags and special searches +|quickfix.txt| commands for a quick edit-compile-fix cycle +|windows.txt| commands for using multiple windows and buffers +|syntax.txt| syntax highlighting +|diff.txt| working with two or three versions of the same file +|autocmd.txt| automatically executing commands on an event +|filetype.txt| settings done specifically for a type of file +|eval.txt| expression evaluation, conditional commands +|fold.txt| hide (fold) ranges of lines + +Special issues ~ +|remote.txt| using Vim as a server or client +|term.txt| using different terminals and mice +|digraph.txt| list of available digraphs +|mbyte.txt| multi-byte text support +|mlang.txt| non-English language support +|arabic.txt| Arabic language support and editing +|farsi.txt| Farsi (Persian) editing +|hebrew.txt| Hebrew language support and editing +|russian.txt| Russian language support and editing +|hangulin.txt| Hangul (Korean) input mode +|rileft.txt| right-to-left editing + +GUI ~ +|gui.txt| Graphical User Interface (GUI) +|gui_w16.txt| Windows 3.1 GUI +|gui_w32.txt| Win32 GUI +|gui_x11.txt| X11 GUI + +Interfaces ~ +|if_cscop.txt| using cscope with Vim +|if_perl.txt| Perl interface +|if_pyth.txt| Python interface +|if_sniff.txt| SNiFF+ interface +|if_tcl.txt| Tcl interface +|if_ole.txt| OLE automation interface for Win32 +|if_ruby.txt| Ruby interface +|debugger.txt| Interface with a debugger +|workshop.txt| Sun Visual Workshop interface +|netbeans.txt| NetBeans External Editor interface +|sign.txt| debugging signs + +Versions ~ +|vi_diff.txt| main differences between Vim and Vi +|version4.txt| differences between Vim version 3.0 and 4.x +|version5.txt| differences between Vim version 4.6 and 5.x +|version6.txt| differences between Vim version 5.7 and 6.x + *sys-file-list* +Remarks about specific systems ~ +|os_390.txt| OS/390 Unix +|os_amiga.txt| Amiga +|os_beos.txt| BeOS and BeBox +|os_dos.txt| MS-DOS and MS-Windows NT/95 common items +|os_mac.txt| Macintosh +|os_mint.txt| Atari MiNT +|os_msdos.txt| MS-DOS (plain DOS and DOS box under Windows) +|os_os2.txt| OS/2 +|os_qnx.txt| QNX +|os_risc.txt| RISC-OS +|os_unix.txt| Unix +|os_vms.txt| VMS +|os_win32.txt| MS-Windows 95/98/NT + +Standard plugins *standard-plugin-list* ~ +|pi_netrw.txt| Reading and writing files over a network +|pi_gzip.txt| Reading and writing compressed files +|pi_expl.txt| File explorer + +LOCAL ADDITIONS: + +------------------------------------------------------------------------------ +*bars* Bars example + +Now that you've jumped here with CTRL-] or a double mouse click, you can use +CTRL-T, CTRL-O, g<RightMouse>, or <C-RightMouse> to go back to where you were. +------------------------------------------------------------------------------ + vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl: diff --git a/tools/doc_maker.pl b/tools/doc_maker.pl new file mode 100644 index 000000000..120dd540e --- /dev/null +++ b/tools/doc_maker.pl @@ -0,0 +1,122 @@ +#!/usr/bin/perl + +use File::Basename; +use File::Path; + +our $OUTDIR = undef; +our $OUTEXT = 'out'; +our @INFILES = (); +our $MOD_SCRIPT = (stat($0))[9]; +our $MKDIR = 0; +our $VERBOSE = 0; + +for (my $i = 0; $i < @ARGV; ++$i) +{ + my $curr = $ARGV[$i]; + my $has_next = $i + 1 < @ARGV; + if ($curr =~ m/^-/) + { + if ($curr =~ m/^-v(?:=(\d+))?$/) + { + if (defined $1) + { + $VERBOSE = $1 + 0; + } + else + { + ++$VERBOSE; + } + } + elsif ($curr eq '-d' and $has_next) + { + $OUTDIR = $ARGV[++$i]; + } + elsif ($curr eq '-e' and $has_next) + { + $OUTEXT = $ARGV[++$i]; + } + elsif ($curr eq '-p') + { + $MKDIR = 1; + } + else + { + print STDERR "Unknown option: $curr\n"; + } + } + else + { + push @INFILES, $curr; + } +} + +for my $infile (@INFILES) +{ + if (not -e $infile) + { + print STDERR "Skip unexist: $infile\n"; + next; + } + my $outfile = &get_outfile($infile); + if ($outfile eq $infile) + { + print STDERR "Skip overwrite: $infile\n"; + next; + } + if (-e $outfile) + { + my $mod_out = (stat($outfile))[9]; + my $mod_in = (stat($infile))[9]; + if ($mod_out >= $mod_in and $mod_out >= $MOD_SCRIPT) + { + print STDERR "Skip newer: $infile\n" if $VERBOSE > 0; + next; + } + } + if ($MKDIR) + { + my $outdir = dirname($outfile); + mkpath([$outdir], $VERBOSE, 0755) if not -e $outdir; + } + if (not open(OUT, ">$outfile")) + { + print STDERR "Skip can't write: $outfile\n"; + next; + } + open IN, $infile; + print STDERR "Filter: $infile -> $outfile\n" if $VERBOSE > 0; + &filter_file($infile, $outfile, \*IN, \*OUT); + close IN; + close OUT; +} + +sub get_outfile +{ + my $infile = shift; + my ($name, $path, $ext) = fileparse($infile, qr{\..*$}); + $path = $OUTDIR if defined $OUTDIR; + $path =~ s/[\\\/]+$//; + $ext = $OUTEXT; + return "$path/$name.$ext"; +} + +sub filter_file +{ + my $infile = shift; + my $outfile = shift; + my $IN = shift; + my $OUT = shift; + binmode $IN; + binmode $OUT; + while (<$IN>) + { + $_ =~ s/\s+$//; + last if length($_) == 0; + # Parse as header. + } + while (<$IN>) + { + $_ =~ s/\s+$//; + print $OUT "$_\n"; + } +} From 97c68eca7339c7a01304cf7516ff3ad0164ae201 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Wed, 26 Jan 2005 19:14:53 +0000 Subject: [PATCH 004/783] add: 3 translated files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@4 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/pi_netrw.jax | 547 ++++++++++++++++++++++ ja/quickfix.jax | 975 +++++++++++++++++++++++++++++++++++++++ ja/windows.jax | 1151 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2673 insertions(+) create mode 100644 ja/pi_netrw.jax create mode 100644 ja/quickfix.jax create mode 100644 ja/windows.jax diff --git a/ja/pi_netrw.jax b/ja/pi_netrw.jax new file mode 100644 index 000000000..fc57cfad8 --- /dev/null +++ b/ja/pi_netrw.jax @@ -0,0 +1,547 @@ +COMMENT: プラグイン:ネットワーク越しの編集 +STATUS: finish 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*pi_netrw.txt* For Vim version 6.3. Last change: Apr 21, 2004 + + + VIMリファレンスマニュアル by Charles E. Campbell, Jr. + +*dav* *http* *network* *rcp* *scp* +*fetch* *netrw* *Nread* *rsync* *sftp* +*ftp* *netrw.vim* *Nwrite* *netrw-file* + +============================================================================== +0. コンテンツ *netrw-contents* + +1. Netrwリファレンス....................................|netrw-ref| +2. ネットワークファイル転送.............................|netrw-xfer| +3. 有効化...............................................|netrw-activate| +4. 暗黙のファイル転送...................................|netrw-transparent| +5. Exコマンド...........................................|netrw-ex| +6. 変数とオプション.....................................|netrw-var| +7. デバッグ.............................................|netrw-debug| +8. 新機能...............................................|netrw-new| +9. クレジット...........................................|netrw-credits| + +ここで説明されるのは|standard-plugin|(訳注: 標準プラグイン)の技術を使って実現 +されていることである。このプラグインは次のような設定がされているときだけ有効で +ある。 + + set nocp     " 'compatible' が設定されていない + filetype plugin on " プラグインが有効である + +# このプラグインは'compatible'が設定されていない時にだけ利用可能である。 + +.vimrcで変数"loaded_netrw"を設定することでプラグインが読み込まれないようにでき +る: > + :let loaded_netrw = 1 + +{Vi does not have any of this} + +============================================================================== +1. Netrwリファレンス *netrw-ref* + + オプション + let g:netrw_ftp =0 ftpを使う(デフォルト) (uid password) + =1 ftpの別方式を使う (user uid password) + ftpで問題があれば、<.vimrc>でこの変数の値を変更して違う方法を試し + てください。 + + let g:netrw_ignorenetrc= 1 + <.netrc>ファイルがうまく機能しないときや、それを無視したいときにこ + の変数を定義してください。この変数が定義されているだけで<.netrc>は + 無視される。(訳注: 値に意味はない) + + 外部アプリケーションの制御 + + プロトコル 変数 デフォルト + ---------- ---- ---------- + + dav: g:netrw_dav_cmd = "cadaver" + fetch: g:netrw_fetch_cmd = "fetch -o" + ftp: g:netrw_ftp_cmd = "ftp" + http: g:netrw_http_cmd = "fetch -o" 代替(可能なら) + http: g:netrw_http_cmd = "wget -q--O" デフォルト + rcp: g:netrw_rcp_cmd = "rcp" + rsync: g:netrw_rsync_cmd = "rsync -a" + scp: g:netrw_scp_cmd = "scp -q" + sftp: g:netrw_sftp_cmd = "sftp" + + 読み込み + :Nread ? ヘルプ + :Nread "machine:file" rcpを使う + :Nread "machine file" ftpを使う <.netrc>有効 + :Nread "machine id password file" ftpを使う + :Nread "dav://machine[:port]/file" cadaverを使う + :Nread "fetch://[user@]machine/file" fetchを使う + :Nread "ftp://[user@]machine[[:#]port]/file" ftpを使う <.netrc>オート + :Nread "http://[user@]machine/file" http(wget)を使う + :Nread "rcp://[user@]machine/file" rcpを使う + :Nread "rsync://[user@]machine[:port]/file" rsyncを使う + :Nread "scp://[user@]machine[[:#]port]/file" scpを使う + :Nread "sftp://[user@]machine/file" sftpを使う + + 書き込み + :Nwrite ? ヘルプ + :Nwrite "machine:file" rcpを使う + :Nwrite "machine file" ftpを使う <.netrc>有効 + :Nwrite "machine id password file" ftpを使う + :Nwrite "dav://machine[:port]/file" cadaverを使う + :Nwrite "ftp://[user@]machine[[:#]port]/file" ftpを使う <.netrc>オート + :Nwrite "rcp://[user@]machine/file" rcpを使う + :Nwrite "rsync://[user@]machine[:port]/file" rsyncを使う + :Nwrite "scp://[user@]machine[[:#]port]/file" scpを使う + :Nwrite "sftp://[user@]machine/file" sftpを使う + http: サポート無し! + + ユーザーとパスワードの変更 + ftpを使うとユーザーIDとパスワードを聞かれる。これはg:netrw_uidと + g:netrw_passwdに記憶され、次のftp使用時に使われる。他のユーザーIDや + パスワードを使いたいときはNetUserPass()を呼び出してください。 + + :NetUserPass [uid [password]] -- 必要事項を聞かれる + :call NetUserPass() -- IDとパスワードを聞かれる + :call NetUserPass("uid") -- パスワードを聞かれる + :call NetUserPass("uid","password") -- IDとパスワードをセットする + + 変数 + b:netrw_lastfile ネット上の読み書きした最後のファイル。バッファごと + に記憶される。 (:Nw のため) + s:netrw_line Nw/NetWriteの間、現在の行番号を記憶する + s:netrw_col Nw/NetWriteの間、現在のカラム番号を記憶する + s:netrw_lineとs:netrw_colはカーソルの位置を元に戻 + すのに使われる。 + g:netrw_ftp この変数がないときはデフォルトが使われる + =0 デフォルトのftpを使う (uid password) + =1 代替のftpを使う (user uid password) + g:netrw_ftpmode ="binary" (デフォルト) + ="ascii" (望むなら) + g:netrw_uid (ftpの)ユーザーID。セッションごとに記憶される。 + g:netrw_passwd (ftpの)パスワード。セッションごとに記憶される。 + g:netrw_win95ftp =0 win95/win98/winMEにおいてUNIXスタイルのftpを使う + =1 通常どおりにftpを使う + g:netrw_cygwin =1 scpがcygwinのものであると想定する + (ウィンドウズでデフォルト) + =0 scpがウィンドウズスタイルのパスを受け取れると + 想定する (ウィンドウズ以外でデフォルト) + g:netrw_use_nt_rcp=0 WinNT,Win2000,WinXPのrcpを使わない。(デフォルト) + =1 WinNT,...のrcpをバイナリモードで使う + + +============================================================================== +2. ネットワークファイル転送 *netrw-xfer* + +Vimの下でのネットワークファイル転送は、プラグイン技術を使ったVimスクリプト +(<netrw.vim>)によって実装されている。現在、rcp, scp, ftpやftpと<.netrc>, fetch, +dav/cadaver, rsync, sftp が読み書きとも適切に対応している。 + +httpは現在のところwgetやfetchによる読み込み専用です。 + +<netrw.vim> is a standard plugin which acts as glue between Vim and the +various file transfer programs. It uses autocommand events (BufReadCmd, +FileReadCmd, BufWriteCmd) to intercept reads/writes with url-like filenames. > + + ex. vim ftp://hostname/path/to/file +< +<netrw.vim>はVimと様々なファイル転送プログラムを結び付ける標準プラグインで +す。オートコマンドのイベント(BufReadCmd, FileReadCmd, BufWriteCmd)を使いURL +形式のファイル名に対する読み書きを横取りします。 > + + 例: vim ftp://hostname/path/to/file + +コロンの前の文字で使用するプロトコルを決定する。 +この例ではftpである。<netrw.vim>スクリプトは次に実際にファイルを転送するプロ +グラム(ftp, scp, etc)や(主にftpで)そのコマンドを決める。ファイルは一時ファイ +ル(Unix/Linuxでは、/tmp/...)を介して読み書きされ、<netrw.vim>スクリプトはそ +れを片付ける。 + +変数を設定することで各プロトコルを実装した外部アプリケーションを変更すること +ができる(例えばscpはデフォルトで"scp -q"と設定されたg:netrw_scp_cmd変数を使 +う)。 + +Ftpはたくさんの実装に恵まれた古いプロトコルである。不幸にもいくつかの実装は +余計な事(ファイルの終わりにゴミを付けるなど)をする。それが気になるようなら +NetReadFixup()関数を書いて、ftpを使った読み込みの後にそれをきれいにすること +ができる。いくつかのUnixシステム(FreeBSDなど)は<netrw.vim>の用途にはftpより +も便利で面倒のない"fetch"という、ftpプロトコルも使えるユーティリティを提供し +ている。したがって、"fetch"が実行可能なら、ftp://...(やhttp://...)を読み込む +のに使える。詳細は|netrw-var|を参照。 + +rcpとscpとsftpとhttpについては、次のようにしてネットワークファイルを普通のファ +イルのように取り扱える: > +> + vim rcp://[user@]machine/path + vim scp://[user@]machine/path +< +ftpが.netrcをサポートしている場合は、.netrcにマシン名とユーザ名とパスワードが +書かれていれば、同じ方法を使うことができる: > +> + vim ftp://[user@]machine[[:#]portnumber]/path +< +そうでない場合ftpにはユーザ名とパスワードを入力する必要がある。入力中のパス +ワード文字は隠蔽される; 実際に打ち込んだ文字に変わってアスタリスク'*'が表示さ +れる。Netrwは最後の転送に使用したユーザIDとパスワードを保持するので、それに続 +く同じマシンへの転送(読み/書き)には再度入力する必要はない。 + + *netrw-urls* + +=================================+============================+============+ + | 読み | 書き | コマンド | + +=================================+============================+============+ + | DAV: | | | + | dav://host/path | | cadaver | + | :Nread dav://host/path | :Nwrite dav://host/path | cadaver | + +---------------------------------+----------------------------+------------+ + | FETCH: | | | + | fetch://[user@]host/path | | | + | fetch://[user@]host:http/path | Not Available | fetch | + | :Nread fetch://[user@]host/path| | | + +---------------------------------+----------------------------+------------+ + | FILE: | | | + | file:///* | file:///* | | + | file://localhost/* | file://localhost/* | | + +---------------------------------+----------------------------+------------+ + | FTP: (*3) | (*3) | | + | ftp://[user@]host/path | ftp://[user@]host/path | ftp (*2) | + | :Nread ftp://host/path | :Nwrite ftp://host/path | ftp+.netrc | + | :Nread host path | :Nwrite host path | ftp+.netrc | + | :Nread host uid pass path | :Nwrite host uid pass path | ftp | + +---------------------------------+----------------------------+------------+ + | HTTP: wget is executable: (*4) | | | + | http://[user@]host/path | Not Available | wget | + +---------------------------------+----------------------------+------------+ + | HTTP: fetch is executable (*4) | | | + | http://[user@]host/path | Not Available | fetch | + +---------------------------------+----------------------------+------------+ + | RCP: | | | + | rcp://[user@]host/path | rcp://[user@]host/path | rcp | + +---------------------------------+----------------------------+------------+ + | RSYNC: | | | + | rsync://[user@]host/path | rsync://[user@]host/path | rsync | + | :Nread rsync://host/path | :Nwrite rsync://host/path | rsync | + | :Nread rcp://host/path | :Nwrite rcp://host/path | rcp | + +---------------------------------+----------------------------+------------+ + | SCP: | | | + | scp://[user@]host/path | scp://[user@]host/path | scp | + | :Nread scp://host/path | :Nwrite scp://host/path | scp (*1) | + +---------------------------------+----------------------------+------------+ + | SFTP: | | | + | sftp://[user@]host/path | sftp://[user@]host/path | sftp | + | :Nread sftp://host/path | :Nwrite sftp://host/path | sftp (*1) | + +=================================+============================+============+ + + (*1) 絶対パスの指定には scp://machine//path を使う。 + + (*2) <.netrc>が存在するならば、ftpクライアントでは.netrcを使うことがで + きるものと仮定する。そうでなければスクリプトはユーザIDとパスワー + ドの入力を要求する。 + + (*3)ftpでは、標準のftpポートと違うポートが必要とされるときは、 + "machine"ではなく"machine#port"か"machine:port"となるでしょう。 + + (*4) http:...の形式のとき、wgetが使えればwgetを使い、そうでないときは + fetchが使えるならfetchを使います。 + +:Nreadと:Nwriteの両Exコマンドには複数のファイル名を指定することもできる: + + :Nread rcp://machine/path1 rcp://machine/path2 +> + +NETRC設定ファイル *netrw-netrc* + +<.netrc>ファイルの典型的な書式は下で示すものである。通常UNIXのftpは<.netrc>を +サポートするが、Windowsのものはサポートしない。 > +> + machine {full machine name} login {user-id} password "{password}" + default login {user-id} password "{password}" + +ftpのクライアントは<.netrc>の使い方を自分で取り扱わなければならないが、 +<.netrc>ファイルが存在するならば、ftp転送ではユーザIDとパスワードを聞かれるこ +とは無くなる。 + + Note: + .netrcファイルにはパスワードが含まれていることから、そのファイルを他人 + に覗かれないよう厳重に確認する必要がある!。多くのプログラムは.netrcが + 他人に読める状態にあると、その使用を拒絶する。そのように読めない状態に + してもシステム管理者からは読めてしまうことは忘れてはいけない!。 + + +パスワード *netrw-passwd* + +スクリプトはftpのパスワードの入力に、その文字列が見えないようにVimの組み込み関 +数|inputsecret()|を使用する。一度ユーザIDとパスワードを設定した後にそれを変更 +するには|netrw-uidpass|を参照。 + +不幸にも、scp用のパスワードをnetrwに与える術はありません。ですのでscpでファイ +ルを転送するときは毎回、パスワードを入力しなければならないでしょう。 + +============================================================================== +3. 有効化 *netrw-activate* + +ネットワークファイル転送は'nocompatible'さえ設定されていればデフォルトで利用可 +能である。ファイル<netrw.vim>がシステムのVimプラグインディレクトリに存在してい +て、それがVimの起動時に自動的に読み込まれる。 + + +============================================================================== +4. 暗黙のファイル転送 *netrw-transparent* + +暗黙のファイル転送(訳注: 透明ファイル転送の意訳)は、通常のファイルの読み書きコ +マンドによって(|:autocmd| の |BufReadCmd| や|BufWriteCmd|イベントによって)行な +われる。なのでネットワークマシン上にあるファイルも、まるでローカルマシンにある +かのように取り扱うことができる。 > + + vim ftp://[user@]machine/path + ... + :wq + + +============================================================================== +5. Exコマンド *netrw-ex* + +通常の読み書きコマンドによるネットワーク転送ががサポートされている。それ以外に +も読み書き1組のコマンドが利用可能である。 + +:[range]Nw 指定された行範囲の内容をb:netrw_lastfileで指定される現在のファ + イルへ書き出す。 + +:[range]Nw {netfile} [{netfile}]... + 指定された行範囲の内容を{netfile}に書き出す。 + +:Nread + 指定された行範囲の内容をb:netrw_lastfileで指定されるファイルか + ら、現在のバッファへ読み込む。 + +:Nread {netfile} {netfile}... + Read the {netfile} after the current line.現在行の後ろに + {netfile}を読み込む + + *netrw-uidpass* +:call NetUserPass() + b:netrw_uidとb:netrw_passwdが存在しないならば、この関数はユー + ザにそれらを問い合わせる。 + +:call NetUserPass("userid") + この呼出しはb:netrw_uidを設定し、パスワードが存在しない場合 + は、それをユーザに問い合わせる。 + +:call NetUserPass("userid","passwd") + この呼出しはb:netrw_uidとb:netrw_passwdを設定する。ユーザIDと + パスワードはftp転送に使用される。ユーザ名とパスワードに空文字 + 列 "" を指定すれば、それらを削除できる。 + + +============================================================================== +6. 変数とオプション *netrw-options* *netrw-var* + +スクリプト<netrw.vim>はその動作に影響する幾つかの変数を使用する。これらの変数 +は通常、ユーザーの<.vimrc>ファイルで設定される: + + g:netrw_uid ftpの現在のユーザIDを保持する。 + g:netrw_passwd ftpの現在のパスワードを保持する。 + b:netrw_lastfile 最近のメソッド/マシン/パスを保持する。 + b:netrw_line (書込み時に)カーソルの行番号を保持する。 + b:netrw_col (書込み時に)カーソルの現在位置を保持する。 + g:netrw_ftp =0 デフォルトのftpを使う。 (uid password) + =1 代替のftpを使う。 (user uid password) + g:netrw_ftpmode ="binary" (デフォルト) + ="ascii" + g:netrw_ignorenetrc =1 (デフォルト) + <.netrc>ファイルがあるが、それを使いたくない + ときにこの変数を設定してください。これは + <.netrc>を無視するのに使われるだけです。 + g:netrw_win95ftp =0 Win95/98/MEなどでUnixスタイルのftpを使いま + す。 + =1 デフォルトの方法を使います。 + g:netrw_cygwin =1 ウインドウズでcygwinのscpを使うと想定しま + す。 + (ウインドウズでデフォルト) + =0 ウインドウズでscpがウインドウズスタイルのパ + スを受け付けると想定します。 + (ウインドウズ以外でデフォルト) + g:netrw_use_nt_rcp =0 WinNT/2K/XPのrcpを使いません。(デフォルト) + =1 WinNT/2K/XPのrcpをバイナリモードで使いま + す。 + +スクリプトは一時的な利用目的で内部的に以下の変数を作成する。 + + g:netrw_method プロトコル rcp/ftp+.netrc/ftp を示す。 + g:netrw_machine 入力から解析されたマシン名を保持する。 + g:netrw_fname アクセス中のファイル名を保持する。 + + + *netrw-options* + + -------------------------------------- + プロトコルをコントロールするオプション + -------------------------------------- + オプション 形式 設定 意味 ~ + --------- -------- -------------- --------------------------- > + netrw_ftp 変数 =doesn't exist "user userid" を使う + =0 "user usreid" を使う + =1 "userid" を使う + + NetReadFixup 関数 =doesn't exist 何も変更しない + =exists ftp経由で読み込んだファイル + をユーザが用意した + NetReadFixup()で処理すること + を許す。 + g:netrw_dav_cmd 変数 ="cadaver" + g:netrw_fetch_cmd 変数 ="fetch -o" + g:netrw_ftp_cmd 変数 ="ftp" + g:netrw_http_cmd 変数 ="fetch -o" else if fetch is executable + g:netrw_http_cmd 変数 ="wget -O" if wget is executable + g:netrw_rcp_cmd 変数 ="rcp" + g:netrw_rsync_cmd 変数 ="rsync -a" + g:netrw_scp_cmd 変数 ="scp -q" + g:netrw_sftp_cmd 変数 ="sftp" + +最初の2つのオプションはftpクライアントに何か問題があった時に役に立つ。ftpが問 +題を起こした時にこのオプションがどのように役に立つのかを最も良く理解するため +に、netrwがどのようにftpを読み込んでいるのかちょっとした議論が続く。 + +g:netrw_..._cmd変数はrcpやftpなどのプロトコルに関連した操作をする外部プログラ +ムを指定します。 + +Netrwは通常、一時ファイルに次のようなフォームを作成する: +> + g:netrw_ftpがないか(!exists)1以外のとき g:netrw_ftpが1のとき + --------------------------------------- -------------------- + open machine [port] open machine [port] + user userid password userid password + [g:netrw_ftpmode] password + get filename tempfile [g:netrw_ftpmode] + get filename tempfile +< +Netrwはこれをフィルタを使って実行します。 > + + :%! {g:netrw_ftp_cmd} -i [-n] +< + +そして + g:netrw_ftp_cmdは普通は"ftp"です。 + -i はftpに対話式でないことを知らせます。 + -n netrcを使わないことを意味します。これはメソッド番号3で使われます。 + (ftp w/o <.netrc>) + (訳注:下記のNetReadFixup()内でa:method==3という意味?) + +<.netrc>が存在する時にはユーザにIDとパスワードを問い合わせなくて済むように使用 +される。転送されたファイルは一時ファイルに記録される。ファイルはそれを必要とし +たメインの編集セッションウィンドウに読み込まれ、それから消去される。 + + +もしもftpが"user"コマンドを受け付けないで、即ユーザIDを入力することを必要とす +るならば、その時には"let netrw_ftp=1"をファイル<.vimrc>に記入してみてくださ +い。 + + *netrw-fixup* +ftpが理由はともかく望まない(AUTHメッセージのような)行を追加してしまうのならば、 +NetReadFixup()関数を書いても良い: +> + function! NetReadFixup(method, line1, line2) + " a:line1: カレントファイルの新しい行の最初 + " a:line2: カレントファイルの新しい行の最後 + if a:method == 1 "rcp + elseif a:method == 2 "ftpと<.netrc> + elseif a:method == 3 "ftpとmachine,uid,password,filename + elseif a:method == 4 "scp + elseif a:method == 5 "http/wget + elseif a:method == 6 "dav/cadaver + elseif a:method == 7 "rsync + elseif a:method == 8 "fetch + elseif a:method == 9 "sftp + else "complain(訳注:エラー?) + endif + endfunction +< +この関数NetReadFixup()は存在しさえすれば呼び出されるので、これにより読み込みの +プロセスをカスタマイズすることができる。よりよい例として、<netrw.vim>は +Windows95のftpを使うための関数を含んでいます。どういうわけかWindows95のftpは転 +送の最後に4行の空行を出力するので、自動的にそれを除去するのが望ましいです。こ +こにそのためのコードを<netrw.vim>から転載します。 +> + if has("win95") && g:netrw_win95ftp + fu! NetReadFixup(method, line1, line2) + let fourblanklines= a:line2 - 3 + silent fourblanklines.",".line2."g/^\s*/d" + endfunction + endif + +============================================================================== +7. デバッグ *netrw-debug* + +<netrw.vim>スクリプトは典型的には次の場所にあり: + + /usr/local/share/vim/vim6x/plugin/netrw.vim + +起動時に自動的に読み込まれる(:set nocp時のみ)。 + + 1. <Decho.vim>を入手。ここにある + + http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts + の"Decho, a vimL debugging aid" + もしくは + http://vim.sourceforge.net/scripts/script.php?script_id=120 + + これをプラグインディレクトリに置く。 + + 2. <netrw.vim>を次のようにして編集する: + + :DechoOn + + (元に戻すには :DechoOff とする) + + 3. vimでファイルの転送をする。<netrw.vim>がネットワーク越しにファイ + ルを読み書きする過程に関するメッセージが表示される。<netrw.vim>の + メンテナにその情報を送ってください。 + + drchipNOSPAM at campbellfamily.biz - NOSPAM + +============================================================================== +8. New Stuff *netrw-new* *netrw-newstuff* + + v43: * moved "Explanation" comments to <pi_netrw.txt> help file + as "Network Reference" (|netrw-ref|) + * <netrw.vim> now uses Dfunc() Decho() and Dret() for debugging + * removed superfluous NetRestorePosn() calls + v42: * now does BufReadPre and BufReadPost events on file:///* + and file://localhost/* + v41: * installed file:///* and file://localhost/* handling + v40: * prevents redraw when a protocol error occurs so that the + user may see it + v39: * sftp support + v38: * Now uses NetRestorePosn() calls with Nread/Nwrite commands + * Temporary files now removed via bwipe! instead of bwipe + (thanks to Dave Roberts) + v37: * Claar's modifications which test if ftp is successful, otherwise + give an error message + * After a read, the alternate file was pointing to the temp file. + The temp file buffer is now wiped out. + * removed silent from transfer methods so user can see what's + happening + +============================================================================== +9. Credits *netrw-credits* + + Vim editor by Bram Moolenaar (Thanks, Bram!) + dav support by C Campbell + fetch support by Bram Moolenaar and C Campbell + ftp support by C Campbell <NdrOchip@ScampbellPfamily.AbizM> - NOSPAM + http support by Bram Moolenaar <bram@moolenaar.net> + rcp + rsync support by C Campbell (suggested by Erik Warendorph) + scp support by raf <raf@comdyn.com.au> + sftp support by C Campbell + + inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell + + Jerome Auge -- also using new buffer method with ftp+.netrc + Bram Moolenaar -- obviously vim itself, :e and v:cmdarg use, fetch,... + Yasuhiro Matsumoto -- pointing out undo+0r problem and a solution + Erik Warendorph -- for several suggestions (g:netrw_..._cmd + variables, rsync etc) + Doug Claar -- modifications to test for success with ftp operation + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/quickfix.jax b/ja/quickfix.jax new file mode 100644 index 000000000..0cb0b9bb1 --- /dev/null +++ b/ja/quickfix.jax @@ -0,0 +1,975 @@ +COMMENT: クイックフィックス(プログラム開発支援) +STATUS: finish 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: mm + +*quickfix.txt* For Vim version 6.3. Last change: 2004 May 20 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +この話題に関してはユーザーマニュアルの|30.1|でも紹介されている。 + + +1. QuickFixコマンドの使い方 |quickfix| +2. エラーウィンドウ |quickfix-window| +3. 複数のエラーリストを使う |quickfix-error-lists| +4. :makeの使い方 |:make_makeprg| +5. :grepの使い方 |grep| +6. コンパイラを選択する |compiler-select| +7. エラーフォーマット |error-file-format| +8. ディレクトリスタック |quickfix-directory-stack| +9. 具体的なエラーファイルフォーマット |errorformats| + +{これらのコマンドはViには存在しない} + +コンパイル時に|+quickfix|機能が無効にされた場合は、QuickFixコマンドは使えない。 + + +============================================================================= +1. QuickFixコマンドの使い方 *quickfix* *Quickfix* *E42* + +Vimには編集-コンパイル-編集のサイクルを加速するための特別なモードがある。これ +はAmigaのManx's Aztec C compilerにインスパイアされた。Cコンパイラから出力され +たエラーメッセージをファイルに保存し、Vimで一つずつのエラーにジャンプする。全 +てのエラーメッセージを覚えることなくそれぞれの問題を検証し、修正することができ +る。 + +AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる方法について +|quickfix-manx|を見よ。別のコンパイラを使用するならば、エラーメッセージを一度 +ファイルに保存してVimを"vim -q filename"で起動する。これをする簡単な方法の1つ +はコマンド|:make|である(後述)。各コンパイラからのエラーメッセージを解釈させる +ためには、オプション'errorformat'をセットする(下の|errorformat|を参照)。 + +以下のQuickFixコマンドが使える。 + + *:cc* +:cc[!] [nr] エラー[nr]を表示する。[nr]が省略されると同じエラーが + 再度表示される。[!]が無く、現在のバッファに変更が有り + ウィンドウが1つしか無く、'hidden'も'autowrite'もoffで + ある場合には、他のバッファへジャンプする事は無い。 + [!]を使用して他のバッファに移る時、現在のバッファへの + 変更点は、'hidden'がセットされているか別のウィンドウが + 開いているかしない場合、破棄されてしまう。 + バッファ移動の際は設定'switchbuf'が関係してくる。 + + *:cn* *:cnext* *E553* +:[count]cn[ext][!] ファイル名を含むエラーリストで[count]個後のエラーを表 + 示する。ファイル名が無かった場合[count]個後のエラーに + 移動する。[!]と'switchbuf'については|:cc|を参照。 + +:[count]cN[ext][!] *:cp* *:cprevious* *:cN* *:cNext* +:[count]cp[revious][!] ファイル名を含むエラーリストで[count]個前のエラーを表 + 示する。ファイル名が無かった場合[count]個前のエラーに + 移動する。[!]と'switchbuf'については|:cc|を参照。 + + *:cnf* *:cnfile* +:[count]cnf[ile][!] ファイル名を含むエラーリストで[count]個後のファイルの + 最初のエラーを表示する。ファイル名が無いか後のファイル + が無い場合には、[count]後のエラーに移動する。[!]と + 'switchbuf'については|:cc|を参照。 + + +:[count]cNf[ile][!] *:cpf* *:cpfile* *:cNf* *:cNfile* +:[count]cpf[ile][!] ファイル名を含むエラーリストで[count]個前のファイルの + 最後のエラーを表示する。ファイル名が無いか後のファイル + が無い場合には、[count]個前のエラーに移動する。[!]と + 'switchbuf'については|:cc|を参照。 + + *:crewind* *:cr* +:cr[ewind][!] [nr] [nr]のエラーを表示する。[nr]が省略されると一番最初の + エラーが表示される。|:cc|を参照。 + +:cfir[st][!] [nr] ":crewind"と同じ。 + + *:clast* *:cla* +:cla[st][!] [nr] [nr]のエラーを表示する。[nr]が省略されると一番最後の + エラーが表示される。|:cc|を参照。 + + *:cq* *:cquit* +:cq[uit] Vimをエラーとして終了することで、コンパイラが同じ + ファイルをコンパイルする事が無くなる。 + + *:cf* *:cfile* +:cf[ile][!] [errorfile] エラーファイルを読みこみ最初のエラーへ移動する。Vimが + オプション-qで起動された時には自動的に行なわれる。 + コンパイルの間Vimを実行したままにしたい時に使うことが + できる。エラーファイルの名前を与えればオプション + 'errorfile'に[errorfile]が設定される。[!]については + |:cc|を参照。 + + *:cg* *:cgetfile* +:cg[etfile][!] [errorfile] + エラーファイルを読み込む。":cfile"に似ているが、最初のエ + ラーに移動しない。 + + *:cl* *:clist* +:cl[ist] [from] [, [to]] + 有効なエラーを全て列挙する|quickfix-valid|。[from]及び + もしくは[to]で行数を指定された場合、その範囲のエラーが + 表示される。負であった場合最後のエラーから数える。-1 + が最後のエラーとなる。設定'switchbuf'がバッファの移動 + に関係する。 + +:cl[ist]! [from] [, [to]] + 全てのエラーを表示する。 + +正しいエラーの位置は隠されたマークによって示されているので、例え行を挿入したり +削除したとしても問題はない(Manx's Z editorではそうではない)。時々マークが幾つ +かの理由で消されてしまう事があり、メッセージ"line changed"がその警告となる。 +一度Vimを終了し再起動した場合マークは失われ正しいエラー位置は把握できない。 + +============================================================================= +2. エラーウィンドウ *quickfix-window* + + *:cope* *:copen* +:cope[n] [height] 現在のエラーリストを表示するウィンドウを開く。 + [height]が与えられたとき、(余地があれば)ウィンドウの + 高さがその値になる。与えられなければウィンドウの高さは + 10行になる。 + ウィンドウは'buftype'の値が"quickfix"である特別なバッフ + ァを含んでいる。これを変更してはならない。 + すでにQuickFixウィンドウがある場合はそれがカレントウィ + ンドウになる。2個目のQuickFixウィンドウを開くことは出 + 来ない。 + *:ccl* *:cclose* +:ccl[ose] QuickFixウィンドウを閉じる。 + + *:cw* *:cwindow* +:cw[indow] [height] 認識されたエラーがあるときQuickFixウィンドウを開く。 + ウィンドウがすでに開いていて認識されたエラーがない + 場合はウィンドウを閉じる。 + +通常、QuickFixウィンドウはスクリーンの一番下に現れる。垂直分割したウィンドウが +ある場合は、一番右下に現れる。常に最大幅を占めるようにさせたい場合は + :botright cwindow +とする。このウィンドウを|window-moving|コマンドで移動させることもできる。 +例えば、一番上に移動させたければCTRL-W Kとする。 +'winfixheight'オプションが設定されれば、'winheight'と'equalalways'を無視し、た +いていその高さを維持する。高さを手動で変更することも出来る(例えばステータスラ +インをマウスで上へドラッグするなど)。 + +QuickFixウィンドウには各行に1個ずつエラーが表示される。その行数はエラー番号に +等しい。":.cc"でカーソル下のエラーに移動できる。<CR>キーを押すのと行をダブルク +リックするのは同じ効果がある。そのエラーを含むファイルがQuickFixウィンドウの上 +に開かれる。そのファイルがすでにウィンドウに開かれていたらそのウィンドウがアク +ティブになる。そのウィンドウにあるバッファが変更されていて、そのエラーが別のフ +ァイルにある場合はエラーへの移動は失敗する。まず、そのウィンドウが破棄してもよ +いバッファを含んでいることを確かめなければならない。 + +QuickFixウィンドウが一杯になったとき、2つの自動コマンドイベントが発生する。第 +一は'filetype'オプションが"qf"にセットされ、FileTypeイベントが発生する。それか +らBufReadPostイベントが発生する。これを使ってエラーリストに対して操作を行うこ +とができる。例: + au BufReadPost quickfix setlocal nomodifiable + \ | silent g/^/s//\=line(".")." "/ + \ | setlocal modifiable +これは各行に行番号を追加する。文字列の置換":s"コマンドの中で使われている"\="に +注目。これは式を評価するのに使われる。 + +注意:QuickFixウィンドウ内で変更を加えてもエラーのリストには何の影響もない。変 +更を防ぐために'modifiable'がオフになっている。それでも行を削除や挿入した場合は +、テキストとエラー番号の関係がめちゃくちゃになる。本当にエラーリストを変更した +いのなら、QuickFixウィンドウの内容をファイルに保存し、":cfile"を実行、ファイル +をパースさせ、新しいエラーリストとして使うこと。 + +============================================================================= +3. 複数のエラーリストを使う *quickfix-error-lists* + +これまでは一つだけのエラーリストがあると仮定してきた。実際は最後に使った10個 +迄のエラーリストが記憶される。新しいリストではじめた時には、以前のリストは自動 +的に保存される。古いエラーリストにアクセスするために、2つのコマンドが用意され +ている。これらは存在するエラーリストの内1つを現在のエラーリストに設定する。 + + *:colder* *:col* *E380* +:col[der] [count] 古いエラーリストへ移動する。[count]が与えられると、 + その回数繰り返し移動する。既に一番古いエラーリストに + いる場合、エラーメッセージが表示される。 + + *:cnewer* *:cnew* *E381* +:cnew[er] [count] 新しいエラーリストへ移動する。[count]が与えられると、 + その回数繰り返し移動する。既に一番新しいエラーリストに + いる場合、エラーメッセージが表示される。 + +新しいエラーリストが追加された時には、それがカレントリストとなる。 + +":colder"が実行された後で":make"や":grep"が実行され新しいエラーリストが追加さ +れたときは1個新しいリストが上書きされる。これは":grep"|grep|でブラウジングし +ているときに特に便利である。もっと最近のエラーリストを残しておきたい場合は初め +に":cnewer 99"を行うこと。 + +============================================================================= +4. :makeの使い方 *:make_makeprg* + +:mak[e][!] [arguments] 1. オプション'autowrite'がonならば変更のあるバッファは + 保存される。 + 2. 'makeef'からエラーファイルの名前が生成される。 + 'makeef'が"##"を含まずかつ既に名前が存在する場合 + それは削除される。 + 3. オプション'makeprg'で与えられたプログラム(省略時 + "make")が[argument]をオプションにして実行され、 + 出力がerrorfileに保存される(Unixではそれも画面に + echoされる)。 + 4. 'errorformat'を使ってerrorfileが読みこまれる。 + 5. [!]が与えられていないときは最初のエラーに移動する。 + 6. エラーファイルが削除される。 + 7.|:cnext|や|:cprevious|などのコマンドでエラー間を移動 + できる。上を参照。 + このコマンドは如何なるコメントも受けつけず、どんな " + という文字もargumentの一部とみなされる。 + +コマンド":make"はオプション'makeprg'で与えられるコマンドを実行する。これは +オプション'shell'で与えられたシェルにコマンドを渡す事で実行されている。以下を +タイピングするのとほぼ同じである。 + + ":!{makeprg} [arguments] {shellpipe} {errorfile}". + +{makeprg}は'makeprg'オプションで指定された文字列である。"make"に限らず、どんな +コマンドでも使用できる。'%'と'#'の文字は通常通りコマンドライン中で展開される。 +拡張子無しの現在ファイル名を表すのに"%<"、拡張子無しの代替ファイル名を表すのに +"#<"が使える。例えば: + + :set makeprg=make\ #<.o + +[arguments] ":make"より後に入力した全て。 +{shellpipe} オプション'shellpipe' +{errorfile} オプション'makeef'。"##"は一意な名前にする + +コマンドがargumentsの後にオプションを必要とするならば、{makeprg}の中で引数リス +トに展開される置換子"$*"が使用できる。$*は引数全てに置換えられる。例: + :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} +またはより単純に + :let &mp = 'latex \\nonstopmode \\input\{$*}' +"$*"は次の例のように何度でも与える事ができる: + :set makeprg=gcc\ -o\ $*\ $* + +オプション'shellpipe'の省略値はAmiga、MS-DOSとWin32では">"である。これはコンパ +イラの出力が直接ファイルに出力されスクリーンには出力されないことを意味する。 +Unixでは"| tee"が使用される。コンパイラがファイルに出力すると同時にスクリーン +にも表示される。使っているシェルに応じて標準エラーへの出力も含めるために +"|& tee"や"2>&1| tee"が省略値となる。 + +'shellpipe'が空の場合、{errorfile}が省略される。これはコンパイラ自身がエラー +ファイルを作成する場合(Manx's Amiga C)に便利である。 + +============================================================================== +5. :grepの使い方 *grep* *lid* + +Vimはコンパイラに対するのと同じ方法(|:make|参照)で"grep"やGNU id-utilsなどの +grepライクなプログラムと連携できる。 + +[Unix豆知識:Unixのコマンド"grep"の名前は":g/re/p"に由来している。"re"はRegular + Expression(正規表現)を意味する。] + + *:gr* *:grep* +:gr[ep][!] [arguments] ":make"と同じようにしかし'makeprg'の代りに'grepprg'が + 'errorformat'の代りに'grepformat'が使われる。|grep| + 参照。 + + *:grepa* *:grepadd* +:grepa[dd][!] [arguments] + ":grep"と似ているが、新しいエラーリストを作らず、解釈さ + れたエラーが現在のリストに追加される。 + Example: > + :grep nothing % + :bufdo grepadd! something % + 1番目のコマンドは新しい空のエラーリストを作成する。2 + 番目のコマンドはバッファリスト内の各バッファに対し + "grepadd"を実行する。最初のエラーへジャンプするのを避け + るために!を使っていることに注意。|:bufdo|でジャンプする + ことはできない。 + +5.1 grepをセットアップする + +標準的な"grep"プログラムがインストールされていれば:grepコマンドはデフォルトの +ままで動くだろう。使い方は標準的なコマンドにとてもよく似ている: + + :grep foo *.c + +これは拡張子.cの全てのファイルの中から部分文字列"foo"を検索する。:grepへの引数 +はそのまま"grep"プログラムに渡されるので、その"grep"がサポートするオプションは +なんでも使うことができる。 + +デフォルトでは:grepはgrepを-nオプションつきで呼び出す(これはファイル名と行番号 +を出力させる)。これは'grepprg'オプションで変更できる。次のような場合に'grepprg' +を変更する必要があるだろう: + +a) "grep"以外の名前のプログラムを使っているとき +b) grepをフルパスで呼ばなければならないとき +c) 他のオプションを自動的に渡したいとき(例:大文字・小文字の無視) + +"grep"が実行されると、Vimはその結果を'grepformat'オプションに従って解釈する。 +このオプションは'errorformat'オプションと同様にはたらくので詳細はそちらを参照 +すること。あなたのgrepが標準的でない書式で出力したり、あるいは特別な書式を持つ +他のプログラムを使っている場合は'grepformat'をデフォルト値から変更する必要が +あるだろう。 + +結果が解釈されると、|quickfix|モードにおけるコンパイルエラーと同様に、Vim +はマッチした部分を含む最初のファイルを読み込み、対応した行へジャンプする。その +後は|:cnext|,|:clist|などのコマンドを使って他のマッチにジャンプすることが出来 +る。 + + +5.2 id-utilsと共に:grepを使う + +:grepをGNU id-utilsと共に使うにはこのようにする: + + :set grepprg=lid\ -Rgrep\ -s + :set grepformat=%f:%l:%m + +そして + :grep (regexp) + +これで期待通りの動作をする。 +(最初にmkidをするのを忘れていなければ) + + +5.3 :grepを使ってソースコードをわたり歩く + +Vimが保存するエラーリストのスタックを使うことによって、ファイルをわたり歩き、 +関数とその関数が呼んでいる関数を探すことができる。例えば、read_file()関数に引 +数を加えたいとする。次のようにコマンドを打てばよい: + + :grep read_file *.c + +:cnでマッチのリストを巡り、引数を加えることが出来る。またあるとき上位の関数msg +()から新しい引数を得て、それを変更しなければならないとする。ならばこうするとよ +い: + :grep msg *.c + +msg()関数を変更しているときに、上位から引数を得なければならない関数をもう1個 +見つけたとする。ならばその関数を見つけるのにまた":grep"を使えばよい。1つの関 +数が終わったら、 + + :colder + +とすれば1つ前に戻ることができる。 + +これはツリーをわたるのに似ている:":grep"が1レベル深く進むにつれて、分岐のリ +ストが1つ作られる。":colder"は1つ上に戻る。":grep"と":colder"を使ってツリー +に似た方法ですべての場所をわたることができる。これを一貫して行えば、"todo"のリ +ストを書き留めることなく、すべての場所に行くことができる。 + +============================================================================= +6. コンパイラを選ぶ *compiler-select* + + *:comp* *:compiler* *E666* +:comp[iler][!] {name} コンパイラ{name}を使うときに機能するオプション + を設定する。"!"オプションがない場合は現在のバ + ッファに対して設定される。"!"がある場合はグロ + ーバルオプションが設定される。 + "file.foo"で":compiler foo"とし、その後別のバッ + ファで":compiler! bar"としたとき、Vimは"file.fo + o"では"foo"を使い続ける。 + {|+eval|機能なしでコンパイルされた場合には使用 + できない} + +"compiler"ディレクトリ内にあるVimプラグインによって、選択されたコンパイラを使 +うためのオプションが設定される。":compiler"はローカルオプションを設定し、"compi +ler!"はグローバルオプションを設定する。 + + *current_compiler* +Vimの古いバージョンをサポートするために、それらのプラグインは常に"b:current_com +piler"でなく"current_compiler"を使う。このコマンドが実際に行うことは次の通り: + +- 変数"current_compiler"と"b:current_compiler"を削除する +- ユーザーコマンド"CompilerSet"を定義する。"!"がついた場合は":set"を行い、"!"が + 無い場合は":setlocal"を実行する。 +- ":runtime! compiler/{name}.vim"を実行する。このプラグインは"CompilerSet"に伴 + うオプションを設定し、変数"current_compiler"をそのコンパイラの名前に設定する + と期待される。 +- ユーザーコマンド"CompilerSet"を削除する。 +- "b:current_compiler"を"current_compiler"の値に設定する。 +- "!"が無い場合は"current_compiler"の元の値を復元する。 + + +コンパイラプラグインを書くためには|write-compiler-plugin|を参照せよ。 + + +MANX AZTEC C *quickfix-manx* *compiler-manx* + +Amiga上でManx's Aztec C compilerとともにVimを使うには次のようにする: +- 環境変数CCEDITを次のコマンドで設定する: + mset "CCEDIT=vim -q" +- -qfオプションをつけてコンパイルする。もしコンパイラがエラーを見つけたらVimが + カーソルを最初のエラーの上に置いた状態で起動する。エラーメッセージは最後の行 + に表示される。上で述べたコマンドを使って他のエラーへ移動することができる。エ + ラーを修正し、ファイルを保存できる。 +- Vimを普通に終了するとコンパイラが同じファイルを再コンパイルする。:cqコマンド + で終了した場合はコンパイラは終了する。エラーを修正できないときや、まず他のフ + ァイルをコンパイルする必要があるときはそうするとよい。 + +AmigaにおけるQuickfixモードには他にも制限がある。コンパイラは最初の25個のエラ +ーしか出力しない(Manx'sのドキュメントにはそれ以上出力する方法が書かれていない) +。それ以上のエラーを探したいのならば、幾つかのエラーを修正しエディタを抜ける必 +要がある。再コンパイルの後残り25個のエラーが出てくる + +Vimがコンパイラから起動された場合、:shやいくつかの:!コマンドは機能しない。Vim +がコンパイラと同じプロセスの中で動いているため、標準出力が利用できないからで +ある。 + + +PYUNIT COMPILER *compiler-pyunit* + +これは実際にはコンパイラではなく、Python言語用のユニットテストフレームワークで +ある。PYUNITはバージョン2.0からPython標準ディストリビューションに含まれるよう +になった。それより古いバージョンは +http://pyunit.sourceforge.net +で入手できる。 + +フレームワークの助けを借りてテストを走らせるとき、エラーがあればVimによって解 +釈され、QuickFixモードで表示される。 + +残念ながら、テストを走らせる標準的な方法はない。alltests.pyスクリプトがよく使 +われると思われるが、それだけである。 +よって、'makeprg'に対する実用的な値は + setlocal makeprg=./alltests.py " テストスイートを走らせる + setlocal makeprg=python % " 1つのテストケースを走らせる +となる。 + +次も参照。 +http://vim.sourceforge.net/tip_view.php?tip_id=280. + + +TEX COMPILER *compiler-tex* + +ディストリビューションに含まれているTeX用のコンパイラスクリプト($VIMRUNTIME/com +piler/tex.vim)は、可能ならmakeコマンドを使う。コンパイラがカレントディレクトリ +に"Makefile"または"makefile"というファイルを見つけたら、*TeXファイルをmakeを使 +って処理しようとし、そのmakefile通りの動作をする。この場合コンパイラは'errorfor +mat'を*TeX出力用にセットし、'makeprg'は触らずにそのままにしておく。"Makefie"も" +makefile"も見つからない場合はコンパイラはmakeを使わない。 +makefileを無視するように指定することもできる。変数b:tex_ignore_makefileかg:tex_ +ignore_makefileを設定すればよい(これらは存在するかのみチェックされる)。 + +コンパイラがmakeを使わないことになったら、コンパイラは入力を処理するプログラム +を選択する。変数b:tex_flavorかg:tex_flavor(この順で探される)が存在すれば、そ +れが:makeコマンドのためのオプションを定義する。もし両方とも存在しなければ、既 +定値"latex"になる。例えば、AMS-TeXで書かれたmypaper.texから\input-ed chapter2.t +exを編集中に + + :let b:tex_flavor = 'amstex' + :compiler tex +< [editing...] > + :make mypaper + +処理するファイルの名前を引数に指定しなければならないことに注意(\input-edか\inc +lude-edファイルを編集中に正しいファイルを処理するため;%を引数なしに置換するポ +ータブルな方法もよい)。これはソースではなく、ターゲットを指定するというmakeの +意味論ではないが、拡張子".tex"を除いたファイル名を指定してもよい。その場合、 +「"filename.dviまたはfilename.pdfまたは filename.some_result_extension +をメイクしろ」ということを意味する。 + +注意:tex コマンドライン文法はMikTex(Srinath Avadhanulaによって提案された)とte +TeX(Artem Chuprinaによってチェックされた)の両方で使えるように設定されている。 +|errorformat-LaTeX|からの提案は他のシェルやOSで動かせるようにするには複雑すぎる +し、他のTeXオプションを使うことも許さない。もしあなたのTeXが"-interaction=nonst +opmode"をサポートしていなければ、コマンドラインから\nonstopmodeを表現する他の +方法とともにその旨を報告してください。 + +============================================================================= +7. エラーフォーマット *error-file-format* + + *errorformat* *E372* *E373* *E374* + *E375* *E376* *E377* *E378* +'errorformat'オプションは認識されるエラーフォーマットのリストを指定する。その +中からエラーメッセージにマッチした最初のフォーマットが使われる。コンパイラが生 +成する異なるメッセージのフォーマット用、あるいは複数のコンパイラに対応するために +複数のフォーマットを加えることができる。|efm-entries|を参照。 + +'errorformat'の各要素は、scanfに似たフォーマットを記述する文字列である。はじめ +に、scanfがどのようにはたらくか知る必要がある。Cコンパイラのドキュメントを読ん +でください。以下はVimが理解する%の項目である。他は無効になる。 + +'errorformat'中の特別な文字はコンマとバックスラッシュである。それがどう扱われ +るかは|efm-entries|を参照。"%%"はリテラル"%"にマッチする。よってこれはバック +スラッシュでエスケープしない。 + +注意:デフォルトでは大文字と小文字の違いは無視される。もし大文字・小文字の区別 +をしたいなら"\C"をパターンに付け加える|/\C|。 + + +基本要素 + + %f ファイル名(文字列を検索) + %l 行番号(数字を検索) + %c 桁番号(エラーの桁を表す数字(<Tab>1個は1桁と数える)) + %v 画面上の桁番号(エラーの画面上の桁を表す番号(<Tab>1個 + はスクリーン上8桁と数える) + %t エラーの種類(1文字を検索) + %n エラー番号(数字を検索) + %m エラーメッセージ(文字列を検索) + %r その行の残り全部 %O/%P/%Q + %p ポインタライン('-', '.', ' 'の列を検索し、その長さを桁 + 番号とする) + %*{conv} scanfに割り当てられない変換 + %% 1個のリテラル'%' + +"%f"の変換は現在の'isfname'の設定に依存する。 + +変換"%f"と"%m"は文字列の終端を発見しなければならない。よってそれらには文字列 +内にあり得ない終端文字が続く必要がある。その終端文字に達するまでの全てがマッチ +文字列に含まれる。注意:"%f%l"はファイル名中の最初の'%'に達するまでの全てを含む +だろう。"%f"や"%m"が行末まで達した場合、その行の終端までの全てが含まれる。 + +MS-DOS, MS-Windows and OS/2では、"C:"で始まる部分は"%f"に含まれる。"%f:"と指定 +したときでもそうなる。これはアルファベット1文字の名前のファイルは検出されない +ことを意味する。 + +"%p"の後には通常"^"をつける。これは、以下のような出力によってエラーの桁を示す +コンパイラ用に使える: + ^ +または > + ---------^ +これは複数行のエラーメッセージでも使える。実用的なサンプルとしては +|errorformat-javac|を参照。 + + +ディレクトリを変更する + +次の大文字の変換文字は、特別なフォーマット文字列のタイプを指定する。これらのう +ち高々1つをコンマ区切りのフォーマットパターンの先頭につけることができる。 +"%f"によって読まれるファイル名の前につけたす必要があるディレクトリ名を出力する +コンパイラがある(例:GNU make)。以下のコードはそれらのディレクトリ名を解釈す +るのに使われる。そのディレクトリ名は内部のディレクトリスタックに保存される。 + *E379* + %D "enter directory" フォーマット文字列。これ以下の%fはそ + のディレクトリ名を検索する。 + %X "leave directory" フォーマット文字列。これ以下の%fはデ + ィレクトリスタックの1つ前のディレクトリを検索する。 + +"enter directory"や"leave directory"フォーマットを定義する場合、"%D"や"%X"は部 +分文字列の最初に置かれなけれならない。Vimはディレクトリ変更を追跡し +相対パスによって指定されたファイル名の前にカレントディレクトリ名をつけたす。 +Tipsや制限など詳細は|quickfix-directory-stack|を参照。 + +複数行にわたるメッセージ *errorformat-multi-line* + +複数行メッセージにわたるメッセージを解釈することも可能である。取りうるプリフィ +ックスは: + %E 複数行エラーメッセージの開始 + %W 複数行警告メッセージの開始 + %I 複数行情報メッセージの開始 + %A 複数行メッセージの開始(種類指定なし) + %C 複数行メッセージの継続 + %Z 複数行メッセージの終了 +これらに対して'+'と'-'をつけることもできる。|efm-ignore|を参照。 + +例:コンパイラが次のフォーマットでエラーを出力したとする。 +(行頭の行番号は実際の出力の一部ではない): + + 1 Error 275 + 2 line 42 + 3 column 3 + 4 ' ' expected after '--' + +適切なエラーフォーマット文字列はこのようになる: + :set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m + +すると、このエラーに対し|:clist|が表示するエラーメッセージはこのようになる: + + 1:42 col 3 error 275: ' ' expected after '--' + +別の例:次のエラーメッセージを出力するPythonインタープリタを考える。 +(行頭の行番号は実際の出力の一部ではない): + + 1 ============================================================== + 2 FAIL: testGetTypeIdCachesResult (dbfacadeTest.DjsDBFacadeTest) + 3 -------------------------------------------------------------- + 4 Traceback (most recent call last): + 5 File "unittests/dbfacadeTest.py", line 89, in testFoo + 6 self.assertEquals(34, dtid) + 7 File "/usr/lib/python2.2/unittest.py", line 286, in + 8 failUnlessEqual + 9 raise self.failureException, \ + 10 AssertionError: 34 != 33 + 11 + 12 -------------------------------------------------------------- + 13 Ran 27 tests in 0.063s + +このメッセージに関する情報だけを|:clist|で表示させたいところだろう。 +このように: + 5 unittests/dbfacadeTest.py:89: AssertionError: 34 != 33 + +そのためにはエラーフォーマット文字列を次のように定義する: + :set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m + +"%C"を"%A"の前に置いていることに注意:' %.%#'(これは正規表現' .*'を意味する) +がスペースで始まるすべての行にマッチするので、それが7行目を以降を隠してくれる +。そうでないと7行目は別のエラーメッセージの始まりと解釈されてしまう。エラーフ +ォーマットは常に、リストの中から1つ1つ、最初のマッチが起こるまで試されていく。 + + +ファイル名を分割する *errorformat-separate-filename* + +1度現れたファイル名を複数のメッセージが参照する場合には、これらのプリフィ +ックスが有効である。 + %O 1行ファイルメッセージ:マッチ部分を読み込む(それ以前に + 記憶されていたものは消去される) + %P 1行ファイルメッセージ:ファイル%fをスタックにプッシュす + る。 + %Q 1行ファイルメッセージ:スタックから最後のファイル名をポ + ップする。 + +例:次のエラーログファイルを出力するコンパイラがあるとする(行番号は実際の出力 +ではない) + + 1 [a1.tt] + 2 (1,17) error: ';' missing + 3 (21,2) warning: variable 'z' not defined + 4 (67,3) error: end of file found before string ended + 5 + 6 [a2.tt] + 7 + 8 [a3.tt] + 9 NEW compiler v1.1 + 10 (2,2) warning: variable 'x' not defined + 11 (67,3) warning: 's' already defined + +このログファイルは[...]で囲まれたファイルに対し複数のメッセージを示している。 +これは次のエラーフォーマットで適切に解釈できる: + :set efm=%+P[%f],(%l\\,%c)%*[\ ]%t%*[^:]:\ %m,%-Q + +|:clist|を呼ぶとこれらをファイル名とともに適切に表示してくれる。: + 2 a1.tt:1 col 17 error: ';' missing + 3 a1.tt:21 col 2 warning: variable 'z' not defined + 4 a1.tt:67 col 3 error: end of file found before string ended + 8 a3.tt:2 col 2 warning: variable 'x' not defined + 9 a3.tt:67 col 3 warning: 's' already defined + +行全体にマッチする他のプリフィックスとは違い、%P, %Q, %Oは同一行の複数のパター +ンにマッチさせるのに使える。それゆえ、次のようにファイルがネストした場合を解釈 +することも出来る: + {"file1" {"file2" error1} error2 {"file3" error3 {"file4" error4 error5}}} +%Oはファイル名情報のプッシュ・ポップを含まない文字列を解釈する。発展例について +は|errorformat-LaTeX|を参照。 + + +メッセージ全体を無視する・使う *efm-ignore* + +'+','-'は大文字の指定文字と組み合わせて使う。'%+A'や'%-G'のように指定文字の前 +につける。 + %- 複数行のマッチを含まない。 + %+ エラー文字列%m中でマッチした行全体 + +プリフィックス%Gだけは'+'か'-'と組み合わせたときのみ意味を持つ。これはコンパイ +ラバージョンのような一般的な情報を含む行か、無視するべきヘッダを読み込む。 + %-G このメッセージを無視する + %+G 一般的なメッセージ + + +パターンマッチング + +古いバージョンのVimとの下位互換性の為にscanf()と同じ"%*[]"という記法がサポート +されている。しかし、フォーマット文字列にVimがサポートするほぼ全ての正規表現を +用いる事も可能である。正規表現言語のメタ文字は普通の文字列やファイル検索の一部 +と重なってしまうから(従って内部的にはエスケープされる必要がある)、メタシンボル +は'%'を付加して表記される必要がある: + %\ 単体の'\'という文字。これは":set errorformat="の定義の + 中ではエスケープされて("%\\")書かれなければならない。 + %. 単体の'.'という文字。 + %# 単体の'*'(!)という文字。 + %^ 単体の'^'という文字。 + %$ 単体の'$'という文字。 + %[ 単体の'['という文字。文字の範囲[]のために使われる。 + %~ 単体の'~'という文字。 +表現の中でキャラクタクラスを使用する場合(概要は|/\i|を参照)、数量子"\+"を含む +語はscanf()の中に"%*"という記法で書くことができる。例:"%\\d%\\+" ("\d\+", +"どんな数(字)でも")は"%*\\d"と等価である。重要:\(...\)のグループ表現は、内部 +変換に使うため予約されているからフォーマット指定内では使用することができない。 + + +'errorformat'内の複数の要素 *efm-entries* + +複数のコンパイラからの出力を見つけることを可能にするために、カンマで区切って +複数のフォーマットパターンを'errorformat'に設定することができるだろう(注: +カンマ直後の空白は無視される)。完全にマッチした最初のパターンが採択される。 +マッチするものが無い場合、最後にマッチした部分が使われるが、ファイルネームは +除外されエラーメッセージは全体のメッセージとして設定される。複数のコンパイラ +からの出力メッセージにマッチしてしまうパターンがあった(しかし正確には +一致しない)時には、より制限されたもの(訳注:他のメッセージにマッチし難いもの) +の後に置く。パターンの先頭にカンマを含めるにはバックスラッシュ(コマンドset中 +では2度タイプするべきだ)を添える。バックスラッシュを含めるためには2つ与える +(つまりコマンドsetの中では4つタイプする)。また、":set"コマンド内のスペースの前 +にはバックスラッシュを置く必要がある。 + + +有効なマッチ *quickfix-valid* + + +もし'errorformat'に完全には一致しない行が現れた場合、エラーメッセージ全体が +表示され、エントリーは無効とされコマンド":cn"や":cp"使用時にはスキップされる +(有効なエントリーが全く無い場合で無い限り)。エラーメッセージの全てはコマンド +":cl!"で表示する事ができる。 + +エラーフォーマットがファイル名を含んでいないとVimは正しいファイルへジャンプ +することができない。手動でやる必要がある。 + + +例 + +Aztec compilerのファイルの書式は: + + ファイル名>行:列:エラータイプ:識別番号:メッセージ + + ファイル名 エラーが見つかったファイルの名前 + 行 エラーが見つかった行の通し番号 + 列 エラーが見つかった場所の列数(行先頭からの文字数) + タイプ エラーの種類、通常は一文字で'E'か'W' + 識別番号 エラーの番号(マニュアルの検索用) + メッセージ エラーの説明 + +これは'errorformat'をこのように設定すればマッチできる: + %f>%l:%c:%t:%n:%m + +単行エラーを出力するCコンパイラのための幾つかの例: +%f:%l:\ %t%*[^0123456789]%n:\ %m Manx/Aztec C エラーメッセージ + (scanf()は[0-9]を理解しない) +%f\ %l\ %t%*[^0-9]%n:\ %m SAS C用 +\"%f\"\\,%*[^0-9]%l:\ %m generic C compilers用 +%f:%l:\ %m GCC用 +%f:%l:\ %m,%Dgmake[%*\\d]:\ Entering\ directory\ `%f', +%Dgmake[%*\\d]:\ Leaving\ directory\ `%f' + GCC with gmake用(行を連結すること!) +%f(%l)\ :\ %*[^:]:\ %m old SCO C compiler (pre-OS5) +%f(%l)\ :\ %t%*[^0-9]%n:\ %m idem, エラーの種類と番号つき +%f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m + いくつかの拡張つきGCC + +複数行メッセージを扱うために拡張した例が次の所で与えられる。 +|errorformat-Jikes|と|errorformat-LaTeX|を参照。 + +:setコマンドで使うときにはスペースとダブルクォートの前にバックスラッシュが必要 +なことに注意。コンマの前には2つのバックスラッシュを置く。1つは:setコマンド +のため、もう1つはコンマがエラーフォーマットの区切りと認識されるのを避けるため +である。 + + +メッセージをフィルタリングする + +もしコンパイラがフォーマットに合わないエラーメッセージを作成する場合、エラー +メッセージをこのフォーマットに変換するプログラムを書く方法もある。その時は +コマンド":make"によって起動されるプログラムオプション'makeprg'を変更することで +指定できる。例: +> :set mp=make\ \\\|&\ error_filter +パイプ(|)の前のバックスラッシュはコマンドセパレータとして認識されないために +必要。コマンド"set"では空白の前にバックスラッシュが必要。 + +============================================================================= +8. ディレクトリスタック *quickfix-directory-stack* + +Quickfixはmakeの出力を解釈し、使われたディレクトリ全てをスタックで保持する。 +GNU-Makeではディレクトリに入ったり出たりすると常に絶対パスで表示されるので、 +これはむしろシンプルである。これはmakefile中のcdコマンドか、起動パラメータ +"-C dir"(makefileの読みこみ前にディレクトリを変更)なのかには因らない。GNU-Make +に強制的に処理の前後にワーキングディレクトリを表示されるためにスイッチ"-w"を +使用するのは便利かもしれない。 + +GNU-makeを使用しない場合、正しいディレクトリを管理する事はもっと複雑になる。 +例えばAIX-makeはワーキングディレクトリに関してなんの情報も表示しない。 +よってmakefileに"Making {target} in {dir}"をエコーするような細工が必要となる。 +ここにはディレクトリを出る時の情報とその相対パスが表示されないという重要な +問題もある。 + +パスの関係とメッセージ"leave directory"が現れない問題のためにVimでは次の +アルゴリズムで対処している: + +1) 与えられたディレクトリがカレントディレクトリの子か調べる。真ならばそれを + カレントディレクトリとする。 +2) カレントディレクトリの子ディレクトリでなかった場合、上のディレクトリの子 + ディレクトリか(つまり兄弟ディレクトリ)を調べる。 +3) まだディレクトリが見つからない場合、これはVimのカレントディレクトリの子 + ディレクトリだと仮定される。 + +付け加えて、全てのファイルについて認識されたディレクトリに実際に存在するのか調 +べられる。もしもなければディレクトリスタックの中の全てのディレクトリ(サブディ +レクトリではない)について探す。これでも見つからなければVimのカレントディレクト +リにあるものと仮定される。 + +このアルゴリズムには制限がある。この例はmakeがディレクトリに入った時に +"Making all in dir"の形で情報を表示すると仮定している。 + +1) 次のようなディレクトリとファイルがあったとする + ./dir1 + ./dir1/file1.c + ./file1.c + + カレントディレクトリの前にmakeが"./dir1"を処理し"./file1.c"にエラーがあると + Vimは"./dir1/file.c"をロードしてしまう。 + + これはメッセージ"leave directory"があれば解決する事ができる。 + +2) 次のようなディレクトリとファイルがあったとする + ./dir1 + ./dir1/dir2 + ./dir2 + + 次のようになる: + + Makeの出力 Vimが解釈するディレクトリ + ------------------------ ---------------------------- + Making all in dir1 ./dir1 + Making all in dir2 ./dir1/dir2 + Making all in dir2 ./dir1/dir2 + + これはメッセージ"enter directory"に相対パスが記述されるか、メッセージ + "leave directory"が表示されれば解決される。 + +この問題を避けるため、ディレクトリの絶対パスとメッセージ"leave directory" +が表示されるようにすればよい。 + +Makefileの例: + +Unix: + libs: + for dn in $(LIBDIRS); do \ + (cd $$dn; echo "Entering dir '$$(pwd)'"; make); \ + echo "Leaving dir"; \ + done + +上の出力を取り扱うために + %DEntering\ dir\ '%f',%XLeaving\ dir +を'errorformat'につけ加える。 + +注意:Vimはメッセージ"leave directory"の中のディレクトリ名がカレント +ディレクトリかどうかはチェックしない。これが何故メッセージ"Leaveing dir"だけで +良いかの理由だ。 + +============================================================================= +9. 具体的なエラーファイルフォーマット *errorformats* + + *errorformat-Jikes* +IBM Researchによって公開されているJavaコンパイラーJikes(TM)はシンプルなマルチ +ラインエラーメッセージを出力する。 + +このメッセージにマッチする'errorformat'の文字列を下に示す。これをユーザの +|vimrc|に書くことでVimがデフォルトで認識するフォーマットを上書きする事が +できる。またデフォルトに追加インストールする方法は|:set+=|を参照。 + + :set efm=%A%f:%l:%c:%*\\d:%*\\d:, + \%C%*\\s%trror:%m, + \%+C%*[^:]%trror:%m, + \%C%*\\s%tarning:%m, + \%C%m + +Jikes(TM)はオプション"+E"とともに起動されたときは1行エラーメッセージを出力す +る。これは次によってマッチできる。 + + :set efm=%f:%l:%v:%*\\d:%*\\d:%*\\s%m + + *errorformat-javac* +この'errorformat'は、エラーの桁を示すのに"^"の行を出力するjavac用にうまく動作 +すると報告されている: + :set efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%# +または: + :set efm=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%# +< + *errorformat-ant* +ant(http://jakarta.apache.org/)用には、各javacの出力行の前につく[javac]を受け +取るために、上のエラーフォーマットを修正しなければならない: + :set efm=%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%# + +javacやjikesとantをともに扱うためにこの'errorformat'を調整することができる。jik +esを使っているなら、jikesの+Eコマンドラインスイッチを使うことをantに教えなけれ +ばならない(このスイッチはjikesに1行エラーメッセージを生成させる)。これがbuil +d.xmlファイルの2行目が行っていることである: + <property name = "build.compiler" value = "jikes"/> + <property name = "build.compiler.emacs" value = "true"/> + +javac、jikesと組み合わせたantを扱う'errorformat'はこうである: + + :set efm=\ %#[javac]\ %#%f:%l:%c:%*\\d:%*\\d:\ %t%[%^:]%#:%m, + \%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%# +< + *errorformat-jade* + +jade (http://www.jclark.com/参照)のエラーを解釈するのは簡単である: + :set efm=jade:%f:%l:%c:%t:%m + + *errorformat-LaTeX* +次のは複数行に渡ってエラーメッセージを表示する(La)TeXタイプセッティング +システム用の'errorformat'文字列を指定する一つの例である。":clist"や":cc" +等々のコマンドは先行する空白を削除して複数行のものを一行にまとめて表示する。 +以下のLaTeX用errorformatはマルチラインエラーを出力する他のコンパイラへ応用する +のは簡単だろう。 + +コマンドは|vimrc|ファイルか別のVimスクリプトファイルに書ける。例えばLaTeXに +関連した内容を含むスクリプトをLaTeXソースの編集時にだけ読みこまれるようにする。 +サンプルの全行をコピーしたことを確認する(順番もそのまま)。行の始まりに見ること +のできる'\'の表記は|line-continuation|を参照。 + + まず'makeprg'をLaTeXが最初のエラーで止まることなく複数のエラー + を返すように準備する。 + :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} + + マルチラインエラーメッセージの始まり: + :set efm=%E!\ LaTeX\ %trror:\ %m, + \%E!\ %m, + マルチライン警告メッセージの始まり;最初の2つは行番号も含んで + いる。幾つかの正規表現の意味: + - "%.%#" (".*") 文字列(空文字列も含む)にマッチ + - "%*\\d" ("\d\+") matches a number > + \%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#, + \%+W%.%#\ at\ lines\ %l--%*\\d, + \%WLaTeX\ %.%#Warning:\ %m, +< エラー/警告メッセージが続く可能性;最初の一つは行番号も含んで + いる: > + \%Cl.%l\ %m, + \%+C\ \ %m., + \%+C%.%#-%.%#, + \%+C%.%#[]%.%#, + \%+C[]%.%#, + \%+C%.%#%[{}\\]%.%#, + \%+C<%.%#>%.%#, + \%C\ \ %m, +< 次のパターンにマッチする行には重要な情報は含まれていない; + よってメッセージに含まないようにする。 > + \%-GSee\ the\ LaTeX%m, + \%-GType\ \ H\ <return>%m, + \%-G\ ...%.%#, + \%-G%.%#\ (C)\ %.%#, + \%-G(see\ the\ transcript%.%#), +< 通常、空白文字だけの行は表示しない: > + \%-G%*\\s, +< LaTeXの出力ログには個々のライン毎にエラーのあったファイル名が + 特定(記述)されているわけではない;ログのあらゆる所で与えられ、 + 括弧にくくられている。 + 続くパターンはそれらの名前を取り出し内部スタックに保存しようと + 試みる。パターンは時として一つの行を複数回走査(一つ目を + 見つけた後、同じ行に次のを発見しようと)するので、パターンの + 末尾の"%r"が行の残りの部分が次の試行で解釈の対象になることと、 + 行の末尾に達するまでそれが繰り返されることを示す。 + + '('...')'でくくられたファイル名を読み飛ばす;明らかにエラーを + 含まないファイルはスタックに積まない: > + \%+O(%f)%r, +< ファイル名をスタックに積む。名前は'('の後に与えられる。 > + \%+P(%f%r, + \%+P\ %\\=(%f%r, + \%+P%*[^()](%f%r, + \%+P[%\\d%[^()]%#(%f%r, +< ')'が見つかったらファイル名をスタックから取り崩す。 > + \%+Q)%r, + \%+Q%*[^()])%r, + \%+Q[%\\d%*[^()])%r + +幾つかのケースにおいてLaTeXの出力したログの中のファイル名を正確に取り出す事が +できないことに注意。括弧の対応が正しくつかない時パーサは混乱してしまう。上記の +サンプルはもっとも一般的なケースだけ検出できるようにしてある。目的に合わせて +このサンプルを変える事はできる。例えば全てのいまいましい"Overfull ..."という +警告メッセージがエラーとして認識されてしまう事を防ぐ事ができる。 +付け加えてLaTeXコンパイラの出力をフィルタリングするには、[La]TeXコンパイラに +よって生成されるファイル*.logを直接読むことも可能である。これは起こる可能性の +あるエラーについてより便利な情報を沢山含んでいる。しかしそのように複雑な +ファイルを正確に解釈するには、外部フィルタを使うほうが良い。そのようなVimに +識別されるフィルタの作り方はずっと以前に述べたので参照。 + + *errorformat-Perl* +$VIMRUNTIME/tools にefm_perl.plスクリプトがある。これはPerlのエラーメッセー +ジをフィルタし、QuickFixモードが理解できるフォーマットに変換する。使い方は +ファイルの先頭を参照。 + + + +vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/windows.jax b/ja/windows.jax new file mode 100644 index 000000000..511986e05 --- /dev/null +++ b/ja/windows.jax @@ -0,0 +1,1151 @@ +COMMENT: 複数のウィンドウとバッファの使用法 +STATUS: finish 6.3.054 +TRANSLATOR: 小野尾隆一 <onoo@lsidiv.kawasaki-steel.co.jp> +TRANSLATOR: nobi +TRANSLATOR: mm + +*windows.txt* For Vim version 6.3. Last Change: 2004 Apr 29 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +マルチウィンドウ、マルチバッファを使った編集 *windows* *buffers* + +ここではマルチウィンドウやマルチバッファを使用するために追加したコマンドについ +て説明する。さらに、2つ以上のウィンドウを組合せて使用するときに異なる動作をす +るコマンドについての説明もする。 + +基本についてはユーザーマニュアルの7章と8章で説明されている。 +|usr_07.txt| |usr_08.txt|. + +1. はじめに |windows-intro| +2. Vim の起動 |windows-starting| +3. ウィンドウのオープンとクローズ |opening-window| +4. ウィンドウ間のカーソル移動 |window-move-cursor| +5. ウィンドウの移動 |window-moving| +6. ウィンドウのサイズ変更 |window-resize| +7. コマンド引数とバッファリスト |buffer-list| +8. 全てのバッファ/ウィンドウに対してコマンド実行 |list-repeat| +9. カーソル位置のタグ名/ファイル名 |window-tag| +10. プレビューウィンドウ |preview-window| +11. 隠れ(hidden)バッファを使う |buffer-hidden| +12. 特殊なバッファ |special-buffers| + + +{Vi にはこれらのコマンドはない} +{コンパイル時に|+windows|機能が無効にされた場合は複数のウィンドウを使うことはで +きない} +{コンパイル時に|+vertsplit|機能が無効にされた場合は垂直分割ウィンドウを使うこと +はできない} + + +============================================================================== +1. はじめに *windows-intro* + +ウィンドウはバッファのビューポートである。 1つのバッファに対して複数のウィンド +ウを開くことができるし、異なる複数のバッファに対して複数のウィンドウを開くこと +もできる。 + +バッファは編集時にメモリ上にロードされたファイルのことを言う。 +オリジナルのファイルはバッファ内容をそのファイルに上書きするまで変更されずにいる。 + +バッファは以下の3つの状態のうちのどれか1つの状態にある。 + + *active-buffer* +アクティブ: バッファ内容はウィンドウに表示されている。このバッファに対応する + ファイルが存在する場合、ファイルがバッファに読み込まれている。 + バッファはそれ以降編集されていて、ファイルと異なっているかもしれ + ない。 + *hidden-buffer* +隠れ(hidden): バッファ内容はウィンドウに表示されていない。このバッファに対応す + るファイルが存在する場合、ファイルはバッファに読み込まれている。 + 見ることができないが、それ以外はアクティブなバッファと同じ。 + *inactive-buffer* +非アクティブ: バッファ内容はウィンドウに表示されていない。バッファには何もロー + ドされていない。ファイルが一度でもメモリにロードされていたなら、 + そのバッファのオプションは記憶されている。|viminfo|ファイルにより + マークを含んでいるかもしれない。 + +状態表: + +状態 ウィンドウ メモリ上に ":buffers" ~ + 表示 ロード 表示 ~ +アクティブ ○ ○ 'a' +隠れ(hidden) × ○ 'h' +非アクティブ × × ' ' + + +注意: ノーマルコマンドが利用できない、あるいは使い勝手が悪い状況のために、全て +のCTRL-Wコマンドは|:wincmd|によっても実行できる。 + +============================================================================== +2. Vim の起動 *windows-starting* + +デフォルトでは、Vim は Vi のように1つのウィンドウで起動する。 + +Vim のオプション引数に "-o" と "-O" を使うと、引数で指定した各ファイルのウィン +ドウがオープンする。オプション"-o" はウィンドウを水平分割し、"-O" オプションは +ウィンドウを垂直分割する。"-o" と "-O" の両方が与えられた場合は、後に現れた方 +が分割方向を決めるのに使われる。例えば、これは3つのウィンドウが垂直分割して +開かれる: > + vim -o file1 file2 file3 + +"-oN" (N は10進数)の場合は、N個のウィンドウが水平に分割して開く。ウィンドウの数 +(N)より引数で指定したファイルの数が多い場合、N個のウィンドウが開き、残りのファ +イルはウィンドウに表示されない。逆にウィンドウの数より引数で指定したファイルの +数が少ない場合、残りのウィンドウは空のバッファを表示する。同様に "-ON" はN個の +ウィンドウを垂直分割して開く。制限も同じである。 + +引数にたくさんのファイル名を指定した場合、ウィンドウは非常に小さくなる。もしか +したら、作業のできる環境にするために 'winheight' または 'winwidth' オプション +を設定したくなるかもしれない。 + +Buf/Win Enter/Leave 時のオートコマンド|autocommand|は、新しいウィンドウを開い +たりファイルを読み込んだりしても実行されない。そのオートコマンドはバッファ/ +ウィンドウへ入った時にのみ実行される。 + + *status-line* +ステータス行はウィンドウの分割に使われる。 'laststatus' オプションは一番下の +ウィンドウにステータス行を表示するかを設定する: + 'laststatus' = 0 常にステータス行を表示しない。 + 'laststatus' = 1 ウィンドウが2つ以上ある場合に表示する。 + 'laststatus' = 2 常にステータス行を表示する。 + +ステータス行の内容は 'statusline' オプションで変更できる。 + +通常、ステータス行は反転表示される。これは 'highlight' オプションの 's' キャラ +クタで変更できる。例えば、"sb" は太文字に設定する。ステータス行にハイライトを +使用しない場合("sn")、'^'がカレントウィンドウに使われ、'='が他のウィンドウに使 +われる。マウスがサポートされていて 'mouse' オプションでマウスが使用可能になっ +ている場合は、ステータス行をドラッグすることでウィンドウのリサイズを行なえる。 + +注: ステータス行が反転表示されるはずが反転表示されなければ、'highlight' オプ +ションに 'si' が含まれているか確認すること。version 3.0 では、'si' がステータ +ス行の反転表示を意味していた。今は反転表示には 'sr' を使用し、'si' はイタリッ +ク表示を意味している! イタリックを表示できない端末では、ステータス行は反転表 +示となる。イタリック表示のための termcap コードがある場合にのみ、この問題が見 +られる。 + +============================================================================== +3. ウィンドウのオープンとクローズ *opening-window* + +CTRL-W s *CTRL-W_s* +CTRL-W S *CTRL-W_S* +CTRL-W CTRL-S *CTRL-W_CTRL-S* +:[N]sp[lit] [++opt] [+cmd] *:sp* *:split* + カレントウィンドウを2つに分割する。その結果、同じファイル上に2 + つのビューポートができる。新しいウィンドウの高さはNになる(デ + フォルトの高さはカレントウィンドウの高さの半分)。新しいウィン + ドウの場所を確保するため、カレントウィンドウの高さは低くなる + ('equalalways' オプションがセットされていて、かつ'eadirection' + の値が"hor"でない場合、他のウィンドウも低くなる)。 + 注: CTRL-S は端末によっては使用できない。また、それ以上の入力 + をブロックしてしまうかもしれない。続けるためにはCTRL-Qを使うこ + と。 + |++opt|と|+cmd| も参照のこと。 + +CTRL-W CTRL-V *CTRL-W_CTRL-V* +CTRL-W v *CTRL-W_v* +:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* + |:split|と同様、ただし垂直分割する。'equalalways'がセットされ、 + 'eadirection'が"ver"でないならば、幅が指定されない限りウィンド + ウは水平に広げられる。 + 注意:他の局面ではCTRL-QはCTRL-Vと同じだが、ここではそうでな + い。 + +CTRL-W n *CTRL-W_n* +CTRL-W CTRL_N *CTRL-W_CTRL-N* +:[N]new [++opt] [+cmd] *:new* + 新しいウィンドウが作成して空のファイルの編集が始まる。新しい + ウィンドウの高さはNになる(デフォルトの高さはカレントウィンドウ + の高さの半分)。新しいウィンドウの場所を確保するため、カレント + ウィンドウの高さは低くなる。 ('equalalways' オプションがセット + されていてかつ'equalalways'オプションが"hor"でない場合、他のウ + ィンドウの高さも低くなる)。|++opt|と |+cmd| も参照のこと。 + 'fileformats' オプションが空でない場合は、与えられた最初のフォ + ーマットが新しいバッファにも使用される。 + 'fileformats' オプションが空の場合は、カレントバッファの + 'fileformat' が使用される。これは引数|++opt|によって上書きされ + うる。 + オートコマンドはこの順で実行される: + 1. カレントウィンドウに対する WinLeave + 2. 新しいウィンドウに対する WinEnter + 3. カレントバッファに対する BufLeave + 4. 新しいバッファに対する BufEnter + この動作は、はじめに ":split"、次に ":e" コマンドを実行した場 + 合と同じ動作である。 + +:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew* + |:new|と同様だが、垂直分割する。'equalalways'がセットされ、 + 'eadirection'が"ver"でないならば、幅が指定されない限りウィン + ドウは水平に広げられる。 + +:[N]new [++opt] [+cmd] {file} +:[N]sp[lit] [++opt] [+cmd] {file} *:split_f* + 新しいウィンドウを作成し、そのウィンドウでファイル {file} の編 + 集が始まる。 [+cmd] が指定された場合は、ファイルをロードしコマ + ンドを実行する |+cmd|。 + |++opt| も参照のこと。 + 新しいウィンドウの高さはNになる(デフォルトの高さはカレントウィ + ンドウの高さの半分)。新しいウィンドウの場所を確保するため、カ + レントウィンドウの高さは低くなる。('equalalways' オプションが + セットされていれば他のウィンドウも低くなる) + +:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview* + ":split" と同じ。ただし、バッファに対して 'readonly' オプショ + ンがセットされる。 + +:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfind* *splitfind* + ":split" と同じ。ただし、'path' から {file} を検索する。{file} + が見つからなければ、ウィンドウは分割されない。 + +CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^* +CTRL-W ^ ":split #" と同じ。つまり、ウィンドウを2つに分割してもう一方の + ファイルを編集する。カウントが指定された場合は ":split #N" と + 同じ。つまり、ウィンドウを分割してバッファNを編集する。 + +オプション'splitbelow'と'splitright'が新しいウィンドウが現れる場所に影響を及ぼ +すことに注意。 + + *:vert* *:vertical* +:vert[ical] {cmd} + {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで + いれば、垂直分割させる。 + +:lefta[bove] {cmd} *:lefta* *:leftabove* +:abo[veleft] {cmd} *:abo* *:aboveleft* + {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで + いる場合は、垂直分割ならば左側に、水平分割ならば上側にカレント + ウィンドウを出現させる。'splitbelow'と'splitright'を上書きする。 + +:rightb[elow] {cmd} *:rightb* *:rightbelow* +:bel[owright] {cmd} *:bel* *:belowright* + {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで + いる場合は、垂直分割ならば右側に、水平分割ならば下側にカレント + ウィンドウを出現させる。'splitbelow'と'splitright'を上書きする。 + + *:topleft* *E442* +:to[pleft] {cmd} + {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで + いる場合は、最上段に現れ、Vimのウィンドウの中で幅を最大にする。 + 垂直分割のときはウィンドウは最も左側に現れ、Vimウィンドウの中で + 高さを最大にする。 + + *:botright* +:bo[tright] {cmd} + {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで + いる場合は、最下段に現れ、Vimのウィンドウの中で幅を最大にす + る。垂直分割のときはウィンドウは最も右側に現れ、Vimウィンドウ + の中で高さを最大にする。 + +これらのコマンドモディファイヤを組み合わせて、最大高さの垂直分割したウィンドウ +を作ることができる。例: > + :vertical topleft edit tags +ウィンドウを垂直分割し、"tags"ファイルのウィンドウを最大の高さで最も左に開く。 + + +ウィンドウを閉じる +------------------ + +CTRL-W q *CTRL-W_q* +CTRL-W CTRL-Q *CTRL-W_CTRL-Q* +:q[uit] カレントウィンドウを終了する。最後のウィンドウ(ヘルプウィンド + ウを除く)を終了すると Vim が終了する。 'hidden' オプションが + セットされていて、かつ、カレントバッファを表示しているウィンド + ウが 1つしかない場合は、そのバッファは隠れ状態(hidden)となる。 + 'hidden' オプションがセットされていなくて、カレントバッファを + 表示しているウィンドウが1つしかなくて、かつ、そのバッファが編 + 集中の場合は、このコマンドは失敗する。 (注: CTRL-Q は総ての端 + 末で動作しない。) + +:q[uit]! カレントウィンドウを終了する。このウィンドウがバッファを表示し + ている最後のウィンドウの場合、このバッファに対する変更は総て失 + われる。最後のウィンドウ(ヘルプウィンドウを除く)を終了すると + Vim が終了する。たとえ 'hidden' オプションがセットされていたと + しても、バッファ内容は失われる。 + +CTRL-W c *CTRL-W_c* *:clo* *:close* +:clo[se][!] カレントウィンドウを閉じる。'hidden' オプションがセットされて + いる時、または、バッファが変更されていて[!]を使用した時は、( + バッファが他のウィンドウで編集中でなければ)バッファは隠れ状態 + (hidden)になる。 + このコマンドは以下の場合に失敗する: *E444* + - スクリーン上に1つのウィンドウしかない時 + - 'hidden' がセットされていなくて、[!]を使用せず、バッファが変 + 更されていて、かつ、このバッファが他のウィンドウで表示されて + いない場合 + バッファへの変更は保存されず、失われることもないため、このコマ + ンドは「安全な」コマンドである。 + +CTRL-W CTRL-C *CTRL-W_CTRL-C* + CTRL-W CTRL-C はカレントウィンドウを閉じると期待するかもしれな + いが、CTRL-C はコマンドをキャンセルするために期待通りには動作 + しない。 + + *:hide* +:hid[e] カレントウィンドウがスクリーン上の最後のウィンドウでなければ、 + カレントウィンドウを終了する。 (他のウィンドウがバッファを編集 + していなく、かつ 'bufhidden' の値が "unloaded" か"delete" でな + いならば)そのバッファは隠れ状態(hidden)となる。 + 'hidden' の値はこのコマンドには無関係である。 + バッファへの変更は保存されず、失われることもないため、このコマ + ンドは「安全な」コマンドである。 + +:hid[e] {cmd} {cmd} を実行し、同時に 'hidden' をセットする。{cmd} が実行され + た後に 'hidden' の以前の値が復旧される。 + 例: > + :hide edit Makefile + これはカレントバッファに変更があっても、それを隠しバッファにし + 、"Makefile" を編集する。 + +CTRL-W o *CTRL-W_o* *E445* +CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* +:on[ly][!] カレントウィンドウをスクリーン上にある唯一のウィンドウにする。 + 他の総てのウィンドウは閉じられる。 + 'hidden' オプションがセットされていれば、閉じられた総てのバッ + ファは隠れ状態(hidden)となる。 + 'hidden' オプションがセットされておらず、'autowrite' オプショ + ンがセットされている場合は、編集中のバッファは保存される。さも + なければ、編集中のバッファを表示しているウィンドウは閉じられる + ことはない。 ただし[!]が与えられていれば、それらのバッファは隠 + れ状態(hidden)となる。しかし、編集中のバッファは決して削除され + ないので、変更は失われない。 + +============================================================================== +4. ウィンドウ間のカーソル移動 *window-move-cursor* + +CTRL-W <Down> *CTRL-W_<Down>* +CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j* +CTRL-W j カーソルをカレントウィンドウのN個下のウィンドウに移動。 + 候補が複数ある場合は、現在のカーソル位置によって選択される。 + +CTRL-W <Up> *CTRL-W_<Up>* +CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k* +CTRL-W k カーソルをカレントウィンドウのN個上のウィンドウに移動。 + 候補が複数ある場合は、現在のカーソル位置によって選択される。 + +CTRL-W <Left> *CTRL-W_<Left>* +CTRL-W CTRL-H *CTRL-W_CTRL-H* +CTRL-W <BS> *CTRL-W_<BS>* *CTRL-W_h* +CTRL-W h カーソルをカレントウィンドウのN個左のウィンドウに移動。 + 候補が複数ある場合は、現在のカーソル位置によって選択される。 + +CTRL-W <Right> *CTRL-W_<Right>* +CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l* +CTRL-W l カーソルをカレントウィンドウのN個右のウィンドウに移動。 + 候補が複数ある場合は、現在のカーソル位置によって選択される。 + +CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W* +CTRL-W CTRL-W カウント指定なし: カーソルをカレントウィンドウの下/右のウィン + ドウに移動。下/右にウィンドウがなければ、一番上/左のウィンド + ウに移動。カウント指定有り: N番目のウィンドウに移動(ウィンド + ウは左上から右下へと番号が振られる)。ウィンドウの番号を知るに + は |bufwinnr()| と |winnr()| を参照。 + + *CTRL-W_W* +CTRL-W W カウント指定なし: カーソルをカレントウィンドウの上/左のウィン + ドウに移動。上/左にウィンドウがなければ、一番下/右のウィンド + ウに移動。カウント指定有り: N番目のウィンドウに移動(ウィンド + ウは左上から右下へと番号が振られる)。 + +CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T* +CTRL-W CTRL-T カーソルを一番左上のウィンドウに移動。 + +CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B* +CTRL-W CTRL-B カーソルを一番右下のウィンドウに移動。 + +CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P* +CTRL-W CTRL-P カーソルを直前の(最後にアクセスしていた)ウィンドウに移動。 + + *CTRL-W_P* *E441* +CTRL-W P プレビューウィンドウに移動。プレビューウィンドウがない場合には + エラーになる。 + {|+quickfix| 機能なしでコンパイルされた場合には使用できない} + +ビジュアルモードがアクティブで移動先のウィンドウがカレントバッファと同じバッ +ファを表示していない場合、ビジュアルモードは終了する。ウィンドウが同じバッファ +を表示している場合、カーソル位置は選択領域が保たれるようにセットされる。 + + *:winc* *:wincmd* +以上のコマンドは ":wincmd" によっても実行することができる: + +:[count]winc[md] {arg} + CTRL-W [count] {arg} を実行するのと同じ。例: > + :wincmd j +< 下のウィンドウに移動する。 + このコマンドは(|CursorHold| 自動コマンドイベントのため)ノー + マルモードが利用できないときやノーマルコマンドが不便なときに有 + 効である。 + count はウィンドウ番号であってもよい。例: > + :exe nr . "wincmd w" +< これは "nr" 番のウィンドウへ移動する。 + +============================================================================== +5. ウィンドウの移動 *window-moving* + +CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443* +CTRL-W CTRL-R ウィンドウ位置を下/右へ回転させる。1番のウィンドウは2番目に、 + 2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。 + カーソルは同じウィンドウにとどまる。 + この移動はカレントウィンドウと同じ段/列の中だけで行われる。 + + *CTRL-W_R* +CTRL-W R ウィンドウ位置を上/左へ回転させる。1番のウィンドウは2番目に、 + 2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。 + カーソルは同じウィンドウにとどまる。 + この移動はカレントウィンドウと同じ段/列の中だけで行われる。 + + +CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X* +CTRL-W CTRL-X カウント指定なし: カレントウィンドウと次(1つ下)のウィンドウを + 入れ替える。次のウィンドウがない(カレントウィンドウが一番下の) + 場合は、前(1つ上)のウィンドウと入れ替える。 + カウント指定有り: カレントウィンドウと上からN番目のウィンドウ + (一番上は1番目)を入れ替える。カーソルは入れ替えた相手のウィン + ドウに移動する。 + 水平分割と垂直分割が混ざっている場合には、カレントウィンドウと + 同じ段/列の中だけで入れ替えが行われる。 + +以下のコマンドはウィンドウのレイアウトを変更するために使える。例えば、2つの垂 +直分割されたウィンドウがある場合、 CTRL-W K はそれらを水平分割に変更する。 +CTRL-W H はその逆を行う。 + + *CTRL-W_K* +CTRL-W K カレントウィンドウを最上段に移動し、幅を最大にする。これは、カレ + ントウィンドウを閉じ、それから "topleft split" で別のウィンド + ウを作るのと同様で、違いは新しいウィンドウにカレントウィンドウ + の内容が表示されるということだけである。 + + *CTRL-W_J* +CTRL-W J カレントウィンドウを最下段に移動し、幅を最大にする。これは、カレ + ントウィンドウを閉じ、それから "botright split" で別のウィンド + ウを作るのと同様で、違いは新しいウィンドウにカレントウィンドウ + の内容が表示されるということだけである。 + + *CTRL-W_H* +CTRL-W H カレントウィンドウを最左列に移動し、高さを最大にする。これは、 + カレントウィンドウを閉じ、それから ":vert topleft split" で別 + のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント + ウィンドウの中身が使われるということだけである。 + {|+vertsplit| 機能なしでコンパイルされた場合は使用できない} + + *CTRL-W_L* +CTRL-W L カレントウィンドウを最右列に移動し、高さを最大にする。これは、 + カレントウィンドウを閉じ、それから ":vert botright split" で別 + のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント + ウィンドウの中身が使われるということだけである。 + {|+vertsplit| 機能なしでコンパイルされた場合は使用できない} + +============================================================================== +6. ウィンドウのサイズ変更 *window-resize* + + *CTRL-W_=* +CTRL-W = 総てのウィンドウの高さ・幅を(ほとんど)同じにする。ただしカレン + トウィンドウに対しては 'winheight' と 'winwidth' が適用される。 + +:res[ize] -N *:res* *:resize* *CTRL-W_-* +CTRL-W - カレントウィンドウの高さをN(デフォルトは1)行分低くする。 + 'vertical' の後に置かれたときは、幅を N 桁分減らす。 + +:res[ize] +N *CTRL-W_+* +CTRL-W + カレントウィンドウの高さをN(デフォルトは1)行分高くする。 + 'vertical' の後に置かれたときは、幅を N 桁分増やす。 + +:res[ize] [N] +CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* +CTRL-W _ カレントウィンドウの高さをN行にする(デフォルト: 可能な限り高く + する) + +z{nr}<CR> カレントウィンドウの高さを {nr} にする。 + + *CTRL-W_<* +CTRL-W < カレントウィンドウの幅を N(デフォルトは1)桁分減らす。 + + *CTRL-W_>* +CTRL-W > カレントウィンドウの幅を N(デフォルトは1)桁分増やす。 + +:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar* +CTRL-W | カレントウィンドウの幅を N桁にする(デフォルト:可能な限り広く + する) + +マウスでステータス行を上下にドラッグすることによってもウィンドウのサイズを変更 +できる。垂直セパレータ行を左右にドラッグしても同様。これができるのは、使用して +いる Vim がマウスをサポートしていて 'mouse' オプションでマウスが使えるように設 +定されているときである。 + +'winheight'('wh') オプションはカレントウィンドウの最小の高さを設定する。このオ +プションは他のウィンドウがカレントウィンドウになるたびに使用される。このオプ +ションが '0' に設定されている場合、オプションが無効になる。 'winheight' オプ +ションをかなり大きい値、例えば '9999' に設定すると、カレントウィンドウの高さは +常に可能な限り高くなる。このオプションを適当な値、例えば '10' に設定した場合、 +カレントウィンドウでの編集がやりやすくなる。 + +同様のオプション 'winwidth' ('wiw') がカレントウィンドウの最小幅を設定するのに +使える。 + +'equalalways'('ea') オプションをセットした場合、ウィンドウを分割したり閉じたり +した後は総てのウィンドウは自動的に同じ高さとなる。このオプションをセットしてい +ない場合、ウィンドウを分割するとカレントウィンドウが低くなり他のウィンドウの高 +さは変化しない。ウィンドウを閉じると、閉じたウィンドウの上のウィンドウの下の +ウィンドウが高くなる。 + +オプション'eadirection'は'equalalways'がどの方向に適用されるかを制限する。デフ +ォルトの"both"は両方の方向にリサイズする。その値が"ver"のときはウィンドウの高 +さだけが等しくされる。垂直分割したウィンドウを手動でリサイズし、この幅を保ちた +いときにこれを使うとよい。同じように、値が"hor"のときはウィンドウの幅だけが等 +しくされる。 + +'cmdheight'('ch') オプションはコマンド行の高さを設定する。長いメッセージの表示 +の際の |hit-enter| プロンプトをわずらわしいと感じたら、このオプションを2か3に +設定しなさい。 + +ウィンドウが1つしかない場合、ウィンドウの高さを変更するとコマンド行の高さも変 +化する。 2つ以上ウィンドウがある場合、カレントウィンドウの高さを変更するとその +下のウィンドウの高さも変化する(たまに上のウィンドウの高さが変化することもあ +る)。 + +ウィンドウの最小の高さと幅は 'winminheight' と 'winminwidth' によって設定され +る。これらは固定値で、ウィンドウはこれらより小さくなることはない。 +These are hard values, a window will never become smaller. + +============================================================================== +7. コマンド引数とバッファリスト *buffer-list* + + args list buffer list meaning ~ +1. :[N]argument [N] 11. :[N]buffer [N] N番目の引数/バッファに移動 +2. :[N]next [file ..] 12. :[N]bnext [N] N個先の引数/バッファに移動 +3. :[N]Next [N] 13. :[N]bNext [N] N個前の引数/バッファに移動 +4. :[N]previous [N] 14. :[N]bprevious [N] N個前の引数/バッファに移動 +5. :rewind / :first 15. :brewind / :bfirst 最初の引数/バッファに移動 +6. :last 16. :blast 最後の引数/バッファに移動 +7. :all 17. :ball 総ての引数/バッファを編集 + 18. :unhide 総ての読み込まれたバッファを編集 + 19. :[N]bmod [N] N個先の編集中のバッファへ移動 + + split & args list split & buffer list meaning ~ +21. :[N]sargument [N] 31. :[N]sbuffer [N] split + N番目の引数/バッファに移動 +22. :[N]snext [file ..] 32. :[N]sbnext [N] split + N個先の引数/バッファに移動 +23. :[N]sNext [N] 33. :[N]sbNext [N] split + N個前の引数/バッファに移動 +24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + N個前の引数/バッファに移動 +25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + 最初の引数/バッファに移動 +26. :slast 36. :sblast split + 最後の引数/バッファに移動 +27. :sall 37: :sball 総ての引数/バッファを編集 + 38. :sunhide 総ての読み込まれたバッファを編集 + 39. :[N]sbmod [N] split + N個先の編集中のバッファへ移動 + +40. :args コマンド引数の表示 +41. :buffers バッファの表示 + +[N] の意味はコマンドによって異なる。 + ?2、?3、?4のコマンドにおいては、[N]は前方/後方に移動するバッファ数 + 1、21のコマンドにおいては、[N]は引数番号、デフォルトはカレント引数 + 11、31のコマンドにおいては、[N]はバッファ番号、デフォルトはカレントバッファ + 19、39のコマンドにおいては、[N]はカウント + +注: ":next" は例外である。なぜならこのコマンドは Vi との互換性のためにファイル +名リストを受け付けなければならないからである。 + + +引数リストと複数のウィンドウ +---------------------------- + +引数リストのカレント位置は各ウィンドウ毎に異なっている可能性がある。 ":e file" +コマンドを実行した際には引数リストないのカレント位置は変化しないが、カレント位 +置のファイルを編集していないことを忘れないでほしい。この状態を示すために、ファ +イルメッセージに(もしあるならタイトルにも)「(file (N) of M)」と表示する。ここ +で、"(N)"はファイルリスト中のカレント位置を、"M"はファイルリスト中のファイルの +数を表している。 + +引数リストの総てはバッファリストに追加される。だから、":bnext"のようなバッファ +リストコマンドで引数リストを表示することができる。 + +:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall* +:[N]sal[l][!] [N] + 各引数に対して1つのウィンドウを開き、スクリーンを再構成する。 + 他の総てのウィンドウは閉じられる。カウントが指定された時は、開 + くウィンドウの最大数となる。 + 'hidden' オプションがセットされている場合は、閉じられるウィン + ドウで表示されている総てのバッファは隠れ状態(hidden)となる。 + 'hidden' オプションがセットされておらず 'autowrite' オプション + がセットされている場合は、編集中のバッファは保存される。さもな + ければ、編集中のバッファを表示しているウィンドウは閉じられな + い。ただし[!]が与えられていれば、それらのバッファは隠れ状態 + (hidden)となる。しかし、編集中のバッファは決して削除されないの + で、変更は失われない。 + [N] は開かれるウィンドウの数の最大値。'winheight'(|:vertical| + が前に与えられている場合は'winwidth')もまた開かれるウィンドウ + の数を制限する。 + この時点では Buf/Win Enter/Leave オートコマンドは新しいウィン + ドウに対して実行されない。実際にそのウィンドウに移ったときに実 + 行される。 + +:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument* + ":split | argument [N]" の短縮形: ウィンドウを分割し、N番目の + 引数へ移動する。しかし、N番目の引数がなければ、ウィンドウは分 + 割しない。|++opt| と |+cmd| も参照。 + +:[N]sn[ext][!] [file ..] *:sn* *:snext* + ":split | [N]next" の短縮形: ウィンドウを分割し、N個先の引数へ + 移動する。しかし、N個先の引数がなければ、ウィンドウは分割しな + い。|++opt| と |+cmd| も参照。 + +:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious* +:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext* + ":split | [N]Next" の短縮形: ウィンドウを分割し、N個前の引数へ + 移動する。しかし、N個前の引数がなければ、ウィンドウは分割しな + い。|++opt| と |+cmd| も参照。 + + *:sre* *:srewind* +:sre[wind][!] [++opt] [+cmd] + ":split | rewind" の短縮形: ウィンドウを分割し、最初の引数へ移 + 動する。しかし、引数がなければ、ウィンドウは分割しない。 + |++opt| と |+cmd| も参照。 + + *:sfir* *:sfirst* +:sfir[st [++opt] [+cmd] + ":srewind" と同じ。 + + *:sla* *:slast* +:sla[st][!] [++opt] [+cmd] + ":split | last" の短縮形: ウィンドウを分割し、最後の引数へ移動 + する。しかし、引数がなければ、ウィンドウは分割しない。 + |++opt| と |+cmd| も参照。 + + *:dr* *:drop* +:dr[op] {file} .. + 最初の {file} を編集する。 + - そのファイルがすでにあるウィンドウで開かれていたら、そのウィ + ンドウに移動する。 + - そのファイルがウィンドウで開かれていなければ、カレントウィン + ドウで開く。カレントバッファが破棄されえない(|abandon|)ならば + まずウィンドウが分割される。 + |:next| コマンドと同様に、|argument-list| がセットされる。 + このコマンドの目的は、Vimに別のファイルを開いてほしいプログラ + ム(例:デバッガ)から使われることである。 + {+gui 機能つきでコンパイルされたときのみ使用可能} + + +============================================================================== +8. 全てのバッファ/ウィンドウに対してコマンド実行 *list-repeat* + *:windo* +:windo[!] {cmd} 各ウィンドウに対して {cmd} を実行する。 + これは次のようにするのと同じ動作をする: > + CTRL-W t + :{cmd} + CTRL-W w + :{cmd} + etc. +< 1つのウィンドウに対してエラーが検出されると、それ以降 + のウィンドウに対しては実行されない。 + 最後のウィンドウ(またはエラーが起こったウィンドウ)が + カレントウィンドウになる。 + {cmd} は '|' を含んで複数のコマンドを連結していてもよ + い。 + {cmd} はウィンドウの開閉、並べ替えをしてはならない。 + {Vi にはない} {|+listcmds| 機能なしでコンパイルされた場 + 合は使用できない} + |:argdo| と |:budfo| も参照。 + + *:bufdo* +:bufdo[!] {cmd} {cmd} をバッファリスト内の各バッファに対して実行。 + これは次のようにするのと同じ動作をする: > + :bfirst + :{cmd} + :bnext + :{cmd} + etc. +< カレントファイルが破棄されえなく(|abandon|)かつ [!]が + 与えられない場合、このコマンドは失敗する。 + 1つのバッファに対してエラーが検出されると、それ以降 + のバッファに対しては実行されない。 + リストされていないバッファはスキップされる。 + 最後のバッファ(またはエラーが起こったバッファ)がカレ + ントウィンドウになる。 + {cmd} は '|' を含んで複数のコマンドを連結していてもよ + い。 + {cmd} はバッファリストにバッファを削除、追加してはなら + ない。 + 注意:このコマンドを実行している間、Syntax 自動コマンド + イベントが 'eventignore' に追加され、無効化される。 + これは各バッファの編集を大幅にスピードアップさせる。 + {Vi にはない} {|+listcmds| 機能なしでコンパイルされた + 場合は使用できない} + |:argdo| と |:windo| も参照。 + +例: > + + :windo set nolist nofoldcolumn | normal zn + +これは 'list' オプションをリセットし全てのウィンドウの折り畳みを無効化する。 + > + :bufdo set fileencoding= | update + +これは各バッファの 'fileencoding' をリセットし、バッファに変更があったらそれを +保存する。結果として、すべてのバッファが同じ 'encoding' のエンコーディングを使 +用する(変換がうまくいったとすれば)。 + +============================================================================== +9. カーソル位置のタグ名/ファイル名 *window-tag* + + *:sta* *:stag* +:sta[g][!] [tagname] + ":tag[!] [tagname]" を実行し見つかったタグの表示のためにウィン + ドウを分割する。 |:tag| を参照。 + +CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* +CTRL-W CTRL-] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ + として使用し、新しくできた上側のウィンドウでタグに移動する。新 + しいウィンドウの高さはNとなる。 + + *CTRL-W_g]* +CTRL-W g ] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ + として使用し、新しくできた上側のウィンドウで ":tselect" を実行 + する。新しいウィンドウの高さはNとなる。 + + *CTRL-W_g_CTRL-]* +CTRL-W g CTRL-] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ + として使用し、新しくできた上側のウィンドウで ":tjump" を実行す + る。新しいウィンドウの高さはNとなる。 + +CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* +CTRL-W CTRL-F カレントウィンドウを2つに分割する。カーソル位置のファイル名を + 編集する。":split ]f" と同様だが、ファイルが存在しなければウィ + ンドウを分割しない。 + ファイルを探すディレクトリのリストとして変数 'path' が使われる + 。また、カレントファイルのパスも探される。 + その名前が "type://machine/path" のようにハイパーテキストリン + クならば "/path" のみが使われる。 + count が与えられた場合、count 番目にマッチしたファイルが編集さ + れる。 + {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で + きない} + +|CTRL-W_CTRL-I| も参照:カーソル位置のキーワードを含むインクルードファイルを新 +しいウィンドウで開く。 + +============================================================================== +10. プレビューウィンドウ *preview-window* + +プレビューウィンドウは別のファイルをプレビューする特別なウィンドウである。通常 +はインクルードファイルや関数の定義を示すのに使われる小さなウィンドウである。 +{コンパイル時に |+quickfix| 機能が無効にされた場合は使用できない} + +プレビューウィンドウはただ1つだけ存在しうる。以下のコマンドの内どれかが実行さ +れたとき作成される。'previewheight' オプションによってプレビューウィンドウが開 +くときの高さを設定できる。プレビューウィンドウにおいて、それを認識するために +'previewwindow' オプションがセットされる。他のウィンドウを開いたり閉じたりした +ときにも同じ高さを保つために 'winfixheight' オプションがセットされる。 + + + *:pta* *:ptag* +:pta[g][!] [tagname] + ":tag[!] [tagname]" を実行し、現在のバッファまたはカーソル位置 + を変えずに「プレビュー」ウィンドウないで検索したタグを表示す + る。「プレビュー」ウィンドウがすでに存在していた場合は、(ヘル + プウィンドウのように)そのウィンドウに表示する。新しいウィンド + ウが開いたときは、'previewheight' の設定がそのウィンドウの高さ + になる。|:tag| も参照のこと。 + 例は下を参照。|CursorHold-example| + |:tag|とは小さな違いがある:[tagname] がすでに表示されているタ + グと同じ場合、マッチしたタグリスト内の位置はリセットされない。 + このおかげで |:ptnext| の後でも CursorHold の例がうまくいくよ + うになっている。 + +CTRL-W z *CTRL-W_j +CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* +:pc[lose][!] 現在開いている「プレビュー」ウィンドウを閉じる。 'hidden' オプ + ションがセットされている時、または、バッファが編集中で[!]が使 + われた時、(そのバッファを編集している他のウィンドウがなければ) + そのバッファは隠れ状態(hidden)となる。いずれかの「プレビュー」 + バッファを閉じることができない場合、このコマンドは失敗する。 + |:close| も参照のこと。 + + *:pp* *:ppop* +:[count]pp[op][!] + プレビューウィンドウで ":[count]pop[!]" を実行する。 |:pop| と + |:ptag| を参照。 {Vi にはない機能} + +CTRL-W } *CTRL-W_}* + カーソル位置の識別子をタグとして使用し、:ptag を実行する。 (必 + 要なら)高さNの新しいプレビューウィンドウを作成する。 Nが与えら + れなければ、'previewheight' が使われる。 + +CTRL-W g } *CTRL-W_g}* + カーソル位置の識別子をタグとして使用し、:ptjump を実行する。 + (必要なら)高さNの新しいプレビューウィンドウを作成する。 Nが与 + えられなければ、'previewheight' が使われる。 + + *:ped* *:pedit* +:ped[it][!] [++opt] [+cmd] {file} + {file} をプレビューウィンドウで編集する。プレビューウィンドウは + |:ptag| と同じように開かれる。カレントウィンドウとカーソル位置 + は変わらない。便利な例: > + :pedit +/fputc /usr/include/stdio.h + + *:ps* *:psearch* +:[range]ps[earch][!] [count] [/]pattern[/] + |:ijump| と同様だが、見つかったマッチをプレビューウィンドウで + 開く。プレビューウィンドウは |:ptag| と同じように開かれる。カ + レントウィンドウとカーソル位置は変わらない。便利な例: > + :psearch popen +< |:ptag| コマンドと同じように、これを使ってカーソル位置の単語に + 関する情報を自動的に表示させることが出来る。これは |:ptag| コ + マンドを使うほど賢くないが、tags ファイルが必要なく、システム + インクルードファイル内のマッチを見つけることも出来る。例: > + :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>") +< 注意:遅いかもしれない。 + + +例 *CursorHold-example* + + :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>") + +この例では、'updateimte' に設定された時間の間カーソルが動かなければ、カーソル +下のキーワードで ":ptag" が実行される。"nested" は他のオートコマンドを実行する +ので、シンタックスハイライトはプレビューウィンドウ内で動作する。"silent!" は +タグが見つからなかったときのエラーメッセージを抑止する。|CursorHold|も参照。 +この自動コマンドを再び無効化するには: > + + :au! CursorHold + +見つかったタグをハイライトさせる、カーソル位置に単語がないときに":ptag"を実行 +しない、などの改良をしたものが以下の通り: > + + :au! CursorHold *.[ch] nested call PreviewWord() + :func PreviewWord() + : if &previewwindow " プレビューウィンドウ内では実行しない + : return + : endif + : let w = expand("<cword>") " カーソル下の単語を得る + : if w =~ '\a' " その単語が文字を含んでいるなら + : + : " 別のタグを表示させる前にすでに存在するハイライトを消去する + : silent! wincmd P " プレビューウィンドウにジャンプ + : if &previewwindow " すでにそこにいるなら + : match none " 存在するハイライトを消去する + : wincmd p " もとのウィンドウに戻る + : endif + : + : " カーソル下の単語にマッチするタグを表示してみる + : try + : exe "ptag " . w + : catch + : return + : endtry + : + : silent! wincmd P " プレビューウィンドウにジャンプ + : if &previewwindow " すでにそこにいるなら + : if has("folding") + : silent! .foldopen " 閉じた折り畳みを開く + : endif + : call search("$", "b") " 前の行の最後へ + : let w = substitute(w, '\\', '\\\\', "") + : call search('\<\V' . w . '\>') " カーソルをマッチしたところへ + : " ここで単語にハイライトをつける + : hi previewWord term=bold ctermbg=green guibg=green + : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"' + : wincmd p " もとのウィンドウへ戻る + : endif + : endif + :endfun + +============================================================================== +11. 隠れ(hidden)バッファを使う *buffer-hidden* + +隠れ(hidden)バッファはウィンドウに表示されないが、メモリ上にはすでにロードされ +ている。これにより、毎回ファイルを保存したり読み込んだりしなくても、また、ウィ +ンドウ内にファイルを残しておかなくても、他のバッファをウィンドウに表示すること +が可能となる。 +{|+listcmds| 機能なしでコンパイルされた場合には使用できない} + + *:buffer-!* +'hidden' ('hi') オプションがセットされている場合は、":edit", ":next", ":tag" +等の他のファイルの編集をスタートさせる総てのコマンドに関して、いらないバッファ +は捨てられない。バッファリストで移動コマンドを実行すると、'hidden' オプション +がセットされていないにもかかわらず、バッファが隠れ状態(hidden)になることがあ +る。これはバッファが編集中で、ウィンドウが強制的に削除され('!' を使用)、 +'autowrite' がセットされていないかバッファを保存できなかったときに起こる。 + +隠れ状態の(hidden)バッファはそのバッファの編集を開始するコマンドで隠れ状態 +(hidden)ではなくなる。 ":bdelete" コマンドでバッファを削除しても隠れ状態 +(hidden)ではなくなる。 + +オプション 'hidden' はグローバルである、全てのバッファに適用される。オプション +'bufhidden' は特定のバッファを例外にするために使える。'bufhidden' はこれらの値 +をとりうる: + <empty> 'hidden' の値を使う。 + hide 'hidden' が設定されてなくてもこのバッファを隠れ状態に + する。 + unload 'hidden' が設定されているときでも隠れ状態にせず、この + バッファをアンロードする。 + delete バッファを削除する。 + + *hidden-quit* +編集中で隠れ状態(hidden)のバッファがあるときに Vim を終了しようとすると、エ +ラーが表示されてその編集中のバッファがカレントバッファになる。そして、バッファ +を保存するか(":wq")、保存しないで終了するか(":q!")を指定することができる。 +注意: 他にも編集中の隠れバッファ(hidden)や編集中のバッファがあるかも。 + +バッファはリストから除かれることもある。これは、存在しているがバッファのリスト内 +にはないことを意味する。|unlisted-buffer| + +:files[!] *:files* +:buffers[!] *:buffers* *:ls* +:ls[!] 全バッファを表示。例: + + 1 #h "/test/text" line 1 ~ + 2u "asdf" line 0 ~ + 3 %l+ "version.c" line 1 ~ + + [!] が含まれているときは、バッファリストにないバッファも表示さ + れる。 + + 各バッファは一意の番号が割り当てられている。この番号は変わらな + いので、 ":buffer N" や "N CTRL-^" を使ってある特定のバッファ + へ移動できる。Nはバッファの番号である。 + + 指標(同じ桁にある文字は互いに排他的): + u リストされていないバッファ([!] が使われたときのみ表示 + される)|unlisted-buffer| + % カレントウィンドウにあるバッファ + # ":e #" や CTRL_^ で使われる代替バッファ + a アクティブバッファ:ロードされていて、表示されている + h 隠れバッファ:ロードされているが、現在はウィンドウに表 + 示されていない |hidden-buffer| + - 'modifiable' がオフのバッファ + = リードオンリーのバッファ + + 変更のあるバッファ + x 読み込みエラーのあるバッファ + + *:bad* *:badd* +:bad[d] [+lnum] {fname} + ファイル名 {fname} をバッファリストに追加する。ただし、メモリ + 上には読み込まれない。 "lnum" が指定された場合、バッファに初め + て移動したときにカーソルが指定された行番号にジャンプする。 + + 以降の他のコマンドは無視されることに注意。 + +:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* +:bd[elete][!] [N] + バッファ[N](デフォルト: カレントバッファ)をメモリから取り除 + き、バッファリストから削除する。バッファが編集中の場合はこのコ + マンドは失敗する([!] が与えられた場合は成功する。そのとき変更 + は破棄される)。ファイルには影響はない。このバッファを表示し + ている総てのウィンドウは閉じられる。バッファ[N]がカレントバッ + ファの場合は、他のバッファが代わりに表示される。このバッファに + は、ジャンプリストの中のメモリ上にロードされているバッファを指 + し示している最も最近のエントリが使用される。 + 実際は、バッファは完全に削除されていない。バッファリストから削 + 除され |unlisted-buffer|、バッファに対するオプションの値、変数、 + マッピング・略語が消去される。 + +:bdelete[!] {bufname} *E93* *E94* + ":bdelete[!] [N]" と同様だが、バッファを名前で指定する。数字が + 名前になっているバッファは、その数字では参照されない。つまり、 + バッファ番号として使用されてしまう。バッファ名中のスペースの前 + にはバックスラッシュを入れる必要がある。 + +:bdelete[!] N1 N2 ... + ":bdelete[!]" をバッファN1、N2、等に対して実行する。引数には + バッファ番号かバッファ名(ただし数字のバッファ名は使用不可)を使 + 用できる。バッファ名中のスペースの前にはバックスラッシュを入れ + る必要がある。 + +:N,Mbdelete[!] ":bdelete[!]" を N から M まで(N,Mを含む)の総てのバッファに対 + して実行する。 + +:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517* +:bw[ipeout][!] {bufname} +:N,Mbw[ipeout][!] +:bw[ipeout][!] N1 N2 ... + |:bdelete| に似ているが、本当にバッファを削除する。このバッフ + ァ中のすべてのマークが無効になり、オプション設定が失われる等。 + このことの意味がわからなければ使わないこと。 + +:[N]bun[load][!] *:bun* *:bunload* *E515* +:bun[load][!] [N] + バッファ[N] (デフォルト:カレントバッファ)をメモリから取り除 + く。このバッファに割り当てられたメモリ領域を解放する。バッファ + はバッファリストには残る。バッファが編集中の場合は、このコマン + ドは失敗する([!] が与えられた場合は成功する。そのとき変更は破 + 棄される)。このバッファを表示しているどのウィンドウも閉じられ + る。バッファ[N]がカレントバッファの場合、他のバッファが代わり + に表示される。このバッファには、ジャンプリストの中のメモリ上に + ロードされているバッファを指し示している最も最近のエントリが使 + 用される。 + +:bunload[!] {bufname} + ":bunload[!] [N]" と同様だが、バッファを名前で指定する。数字が + 名前になっているバッファは、その数字では参照されない。つまり、 + バッファ番号として使用されてしまう。バッファ名中のスペースの前 + にはバックスラッシュを入れる必要がある。 + +:N,Mbunload[!] ":bunload[!]" を N から M まで(N,Mを含む)の総てのバッファに対 + して実行する。 + +:bunload[!] N1 N2 ... + ":bunload[!]" をバッファN1、N2、等に対して実行する。引数には + バッファ番号かバッファ名(ただし数字のバッファ名は使用不可)を使 + 用できる。バッファ名中のスペースの前にはバックスラッシュを入れ + る必要がある。 + +:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86* + バッファリストのバッファ[N]を編集する。 [N]が与えられなけれ + ば、そのままカレントバッファが編集される。 [!]については + |:buffer-!| を参照。これはバッファリストにないバッファも + 'buflisted' フラグを設定することなく編集する。 + +:[N]b[uffer][!] {filename} + バッファリストの {filename} のバッファを編集する。 [!]について + は |:buffer-!| を参照。これはバッファリストにないバッファも + 'buflisted' フラグを設定することなく編集する。 + + +:[N]sb[uffer] [N] *:sb* *:sbuffer* + ウィンドウを分割しバッファリストのバッファ[N]を編集する。 [N] + が与えられなければ、そのままカレントバッファが編集される。ウィ + ンドウ分割の際には、'switchbuf' の "useopen" の設定に従う。 + これはバッファリストにないバッファも'buflisted' フラグを設定す + ることなく編集する。 + + +:[N]sb[uffer] {filename} + ウィンドウを分割しバッファリストの {filename} バッファを編集す + る。これはバッファリストにないバッファも'buflisted' フラグを設 + 定することなく編集する。 + + + *:bn* *:bnext* +:[N]bn[ext][!] [N] + バッファリスト中の[N]個先のバッファへ移動する。 [N] のデフォル + ト値は1である。バッファリストの最後に到達したら、先頭に戻って + バッファを探す。 [!]については |:buffer-!| を参照。 + ヘルプバッファにいる場合、(もし有れば)次のヘルプバッファへ移動 + する。同様に、通常の(ヘルプではない)バッファにいる場合、次の通 + 常のバッファへ移動する。従って、ヘルプウィンドウを表示していて + も、コード/テキストバッファを次々と表示する際にヘルプが邪魔に + ならない。次の3つのコマンドも同じように動作する。 + + *:sbn* *:sbnext* +:[N]sbn[ext] [N] + ウィンドウを分割しバッファリストの[N]個先のバッファへ移動す + る。バッファリストの最後に到達したら、先頭に戻ってバッファを探 + す。ウィンドウ分割の際には、'switchbuf' の 'useopen' 設定に従 + う。 + +:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* +:[N]bp[revious][!] [N] + バッファリスト中の[N]個前のバッファへ移動する。 [N] のデフォル + ト値は1である。バッファリストの先頭に到達したら、最後に戻って + バッファを探す。 [!]については |:buffer-!| を参照。'switchbuf' + も参照。 + +:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* +:[N]sbp[revious] [N] + ウィンドウを分割しバッファリストの[N]個前のバッファへ移動す + る。バッファリストの先頭に到達したら、最後に戻ってバッファを探 + す。ウィンドウ分割の際には、'switchbuf' の 'useopen' 設定に従 + う。 + + *:br* *:brewind* +:br[ewind][!] バッファリスト中の先頭のバッファへ移動する。 [!]については + |:buffer-!| を参照。 + + *:bf* *:bfirst* +:bf[irst] ":brewind" と同じ。 + + *:sbr* *:sbrewind* +:sbr[ewind] ウィンドウを分割してバッファリスト中の先頭のバッファへ移動す + る。バッファリストが空の場合はリストされていない最初のバッファ + へ移動する。'switchbuf' オプションの設定に従う。 + + *:sbf* *:sbfirst* +:sbf[irst] ":sbrewind" と同じ。 + + *:bl* *:blast* +:bl[ast][!] バッファリスト中の最後のバッファへ移動する。 バッファリストが + 空の場合はリストされていない最初のバッファへ移動する。'[!]につ + いては|:buffer-!| を参照。 + + *:sbl* *:sblast* +:sbl[ast] ウィンドウを分割してバッファリスト中の最後のバッファへ移動す + る。バッファリストが空の場合はリストされていない最初のバッフ + ァへ移動する。'switchbuf' オプションの設定に従う。 + +:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84* + バッファリスト中の[N]個先の編集中のバッファへ移動する。 + 注意:このコマンドはリストされていないバッファも見つける。変更 + されているバッファがない場合はコマンドは失敗する。 + +:[N]sbm[odified] [N] *:sbm* *:sbmodified* + ウィンドウを分割し、バッファリスト中の[N]個先の編集中のバッフ + ァへ移動する。'switchbuf' オプションの設定に従う。 + 注意:このコマンドはリストされていないバッファも見つける。 + +:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide* +:[N]sun[hide] [N] + バッファリスト中のメモリ上にロードされた各バッファに対して1つ + のウィンドウが開かれているようにスクリーンを再構成する。カウン + トが与えられたら、開くウィンドウの最大数となる。 + +:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball* +:[N]sba[ll] [N] バッファリスト中のメモリ上にロードされた各バッファに対して1つ + のウィンドウが開かれているようにスクリーンを再構成する。カウン + トが与えられたら、開くウィンドウの最大数となる。'winheight' も + 開くウィンドウの数を制限する(|:vertical| が前に与えられている + ときは'winwidth')。この時点では、Buf/Win Enter/Leave オートコ + マンドは新しいウィンドウに対して実行されない。ウィンドウに移動 + したときにのみ実行される。 + +注: 上の総てのコマンドは他のバッファの編集を開始する。各バッファの 'readonly' +フラグは保存されている。 ":edit" コマンドと異なる点は、":edit" コマンドでは +ファイルが読まれた時点で 'readonly' フラグが設定される点である。 + +============================================================================== +12. 特殊なバッファ *special-buffers* + +バッファがファイルのテキストを保持するのでなく、他の目的のために使われることも +ある。バッファの振る舞いを変更するためにいくつかのオプションを設定することが出 +来る: + 'bufhidden' バッファがウィンドウに表示されなくなったときどうするか + 'buftype' どんな種類のバッファか + 'swapfile' バッファがスワップファイルを持つか + 'buflisted' バッファリストに現れるか + +2, 3の有用なバッファの種類: + +quickfix エラーリストを保持するのに使われる。|:cwindow| を参照。このコ + マンドは 'buftype' オプションを "quickfix" にセットする。これ + を変更してはならない。'swapfile' はオフ。 + +help ヘルプファイルを保持する。|:help| コマンドによってのみ作成され + る。ヘルプバッファを示すフラグは内部にあり、変更することは出来 + ない。ヘルプバッファに対する 'buflisted' オプションはリセット + される。 + +directory ディレクトリの内容を表示する。|file-explorer| プラグインで使わ + れる。このバッファは以下の設定で作成される: > + :set buftype=nowrite + :set bufhidden=delete + :set noswapfile +< バッファ名はディレクトリの名前になり、|:cd| コマンドを使ったと + きは変更される。 + +scratch いつでも破棄されうるテキストを保持する。ウィンドウを閉じても + 保たれ、明示的に削除されなければならない。 + Settings: > + :set buftype=nofile + :set bufhidden=hide + :set noswapfile +< このバッファを識別するためにはバッファ名が使われる。 + + *unlisted-buffer* +unlisted このバッファはバッファリストにない。通常の編集には使われず、 + ヘルプファイルを表示するためや、ファイル名やマークを記憶するた + めに使われる。":bdelete" コマンドによってもこのオプションがセ + ットされる。それゆえ、このコマンドは完全にはバッファを削除しな + い。設定は: > + :set nobuflisted +< + + vim:tw=78:ts=8:ft=help:norl: From 9f3da82d2cb6c541fc2133cfd9a8f37aa1c68216 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Thu, 27 Jan 2005 06:20:58 +0000 Subject: [PATCH 005/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@5 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/cmdline.jax | 951 ++++++++++++++++++++++++++++++++++++++++++++++++ ja/develop.jax | 402 ++++++++++++++++++++ ja/howto.jax | 102 ++++++ ja/if_pyth.jax | 299 +++++++++++++++ ja/intro.jax | 722 ++++++++++++++++++++++++++++++++++++ ja/map.jax | 779 +++++++++++++++++++++++++++++++++++++++ ja/mbyte.jax | 166 +++++++++ ja/os_amiga.jax | 143 ++++++++ ja/os_mac.jax | 104 ++++++ ja/os_mint.jax | 43 +++ ja/os_unix.jax | 68 ++++ ja/os_win32.jax | 320 ++++++++++++++++ ja/pattern.jax | 480 ++++++++++++++++++++++++ ja/recover.jax | 169 +++++++++ ja/uganda.jax | 169 +++++++++ ja/version4.jax | 373 +++++++++++++++++++ ja/vi_diff.jax | 919 ++++++++++++++++++++++++++++++++++++++++++++++ 17 files changed, 6209 insertions(+) create mode 100644 ja/cmdline.jax create mode 100644 ja/develop.jax create mode 100644 ja/howto.jax create mode 100644 ja/if_pyth.jax create mode 100644 ja/intro.jax create mode 100644 ja/map.jax create mode 100644 ja/mbyte.jax create mode 100644 ja/os_amiga.jax create mode 100644 ja/os_mac.jax create mode 100644 ja/os_mint.jax create mode 100644 ja/os_unix.jax create mode 100644 ja/os_win32.jax create mode 100644 ja/pattern.jax create mode 100644 ja/recover.jax create mode 100644 ja/uganda.jax create mode 100644 ja/version4.jax create mode 100644 ja/vi_diff.jax diff --git a/ja/cmdline.jax b/ja/cmdline.jax new file mode 100644 index 000000000..e20f310a9 --- /dev/null +++ b/ja/cmdline.jax @@ -0,0 +1,951 @@ +COMMENT: Ex、検索等のコマンド入力エリアでの操作 +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*cmdline.txt* For Vim version 6.3. Last change: 2004 Mar 31 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + *Cmdline-mode* *Command-line-mode* +コマンドラインモード *Cmdline* *Command-line* *mode-cmdline* *:* + +コマンドラインモードはExコマンド (":")、検索パターン ("/" と "?")、フィルタコ +マンド ("!") の入力に使われる。 + +コマンドライン編集の基本は、ユーザマニュアルの第20章で説明されている +|usr_20.txt|。 + +1. コマンドラインの編集 |cmdline-editing| +2. コマンドラインの補完 |cmdline-completion| +3. Exコマンドライン |cmdline-lines| +4. Exコマンドラインの範囲 |cmdline-ranges| +5. Exコマンド用の特別な文字 |cmdline-special| +6. コマンドラインウィンドウ |cmdline-window| + +============================================================================== +1. コマンドラインの編集 *cmdline-editing* + +通常、文字はカーソル位置の前に挿入される。コマンドラインでは左右のカーソルキー +で移動ができる。<Insert>キーで挿入と上書を切り替えることができる。 +{Vi: 行の最後の文字しか変更できない} + +Note キーボードに有効なカーソルキーまたは他の特殊なキーが一切ないときでも、コ +マンド ":cnoremap" を使って他のキーをそれらに割り当てられることに注意。 +例えば、tcsh風の編集キーを定義する方法は以下の通り。 *tcsh-style* > + :cnoremap <C-A> <Home> + :cnoremap <C-F> <Right> + :cnoremap <C-B> <Left> + :cnoremap <Esc>b <S-Left> + :cnoremap <Esc>f <S-Right> +(<> 記法を使っている |<>|.これらを全て文字通り打ち込むこと) + + *cmdline-too-long* +コマンドラインが長くなりすぎて画面に収まらなくなったときは、画面に入るだけの部 +分が表示される。カーソルはこの見える部分しか動けない。そのため、これ以上は編集 +できない。 + + *cmdline-history* *history* +ユーザの打ち込んだコマンドは、履歴表に記録される。これらの履歴は上下矢印キーで +呼び出せる。実際には4つの履歴表がある。 +履歴表: +- ':' コマンド用 +- 検索文字列用 +- 式 (expression) 用 +- インプット行 (関数 |input()| に対して入力されたテキスト) 用 +これらは全く別のものである。それぞれの履歴は同種の入力をしたときだけ使用できる。 +オプション 'history' で保存されるコマンド数を設定できる (既定値: 20)。 +NOTE: +- 以前と全く同じコマンドを打ち込んだときは、古い方の記録が消される (繰り返され + たコマンドが古いコマンドの履歴を追い出して消すのを避けるため)。 +- 打ち込んだコマンドだけが記録される。完全にマッピングから実行されたコマンドは + 履歴に残らない。 +- 全ての検索パターンは、コマンド "*" や "#" 等によるものも含め、検索用の履歴に + 記録される。しかしマッピングからの検索に対しては、最後の検索のみが記録される + (長いマッピングが履歴の内容を捨ててしまうのを避けるため)。 +{Vi: 履歴はない} +{Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} + +コマンドラインには名前の自動補完機能がある。|cmdline-completion| を参照。 + + *c_CTRL-V* +CTRL-V 次に打ち込まれた非数字文字を,その通りに挿入する。また最大3個 + の数字により,1バイト文字をコードの10進表現に基づいて入力でき + る。打ち込んだ非数字文字と3個の数字にはマッピングは適用されな + い。これは挿入モードと同じ働きをする (|i_CTRL-V| を参照)。 + NOTE: Windowsでは CTRL-V はテキストの張り付けにマッピングされ + ていることが多い。そのときは代わりに CTRL-Q を使うこと。 + *c_CTRL-Q* +CTRL-Q CTRL-V と同様だが、ターミナルによっては表示制御に使われている。 + その場合は使えない。 + + *c_<Left>* +<Left> カーソルを左へ + *c_<Right>* +<Right> カーソルを右へ + *c_<S-Left>* +<S-Left> または <C-Left> *c_<C-Left>* + カーソルを 1WORD 分左へ + *c_<S-Right>* +<S-Right> または <C-Right> *c_<C-Right>* + カーソルを 1WORD 分右へ +CTRL-B または <Home> *c_CTRL-B* *c_<Home>* + カーソルをコマンドライン先頭へ +CTRL-E または <End> *c_CTRL-E* *c_<End>* + カーソルをコマンドライン末尾へ + + *c_<LeftMouse>* +<LeftMouse> カーソルをマウスでクリックした所へ + +CTRL-H *c_<BS>* *c_CTRL-H* +<BS> カーソル前の文字を削除する (<BS> キーが思い通り働かないときは + |:fixdel| を参照)。 + *c_<Del>* +<Del> カーソル下の文字を削除する (行の最後では: カーソル前の文字) + (<Del> キーが思い通り働かないときは |:fixdel| を参照。) + *c_CTRL-W* +CTRL-W カーソルの前の word を削除 + *c_CTRL-U* +CTRL-U 行頭とカーソル位置の間の全ての文字を削除する。Vimの以前のヴァ + ージョンでは行内の文字を全て削除していた。その動作の方がよいな + ら、次の行をファイル .vimrc に加えること。 > + :cnoremap <C-U> <C-E><C-U> +< + Note: 削除コマンドによってコマンドラインの内容が空になったとき + は、コマンドラインモードは終了することに注意。 + *c_<Insert>* +<Insert> 挿入/上書の切り替え {Vi にはない} + +{char1} <BS> {char2} または *c_digraph* +CTRL-K {char1} {char2} *c_CTRL-K* + ダイグラフの入力 (|digraphs| を参照)。{char1} が特殊キーのとき + は、そのキーコードは <> 形式で挿入される。 {Vi にはない} + +CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>* + 番号/名前付きレジスタの内容を挿入する。CTRL-R を打ち込んで次 + の文字を打ち込むまでの間、レジスタ名の入力待ちであることを示す + ため '"' が表示される。 + テキストは打ち込まれた通りに挿入され、マッピングや略語展開は無 + 効である。'wildchar' によるコマンドライン補完も行われない。 + またコマンドラインを終了する文字 (<Esc>, <CR>, <NL>, <C-C>) も + 文字通り挿入される。<BS> や CTRL-W はコマンドラインを終了でき + るが、コマンドラインに残っている文字が違うモードで解釈されるこ + となるので、意図とは異なる動作になるかもしれない。 + 特殊なレジスタ: + '"' 無名レジスタ、最後の削除やコピーによるテキスト + を格納する。 + '%' カレントファイル名 + '#' 代替ファイル名 + '*' クリップボードの内容 (X11: primary selection) + '+' クリップボードの内容 + '/' 最後の検索パターン + ':' 最後のコマンドラインの内容 + '-' 最後の小規模な (1行未満の) 削除の内容 + '.' 最後に挿入されたテキスト + *c_CTRL-R_=* + '=' Expression レジスタ: Expression を入力するよう + 要求される (|expression| を参照) + レジスタに関しては |registers| を参照。 {Vi にはない} + +CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>* +CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>* +CTRL-R CTRL-W *c_CTRL-R_CTRL-W* *c_<C-R>_<C-W>* +CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>* + カーソル下にオブジェクトを挿入する。 + CTRL-F カーソル下のファイル名 + CTRL-P |gf| と同様に 'path' を使って展開された、カー + ソル下のファイル名 + CTRL-W カーソル下の word + CTRL-A カーソル下の WORD; |WORD| を参照 + {Vi にはない} + CTRL-F と CTRL-P: {Vi mが |+file_in_path| 機能付きでコンパイル + されたときのみ有効} + + *c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>* + *c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>* +CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} +CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} + カーソル下にレジスタの内容またはオブジェクトを挿入。|c_CTRL-R| + と同様の動作だが、テキストを文字通り挿入する。例えば、レジスタ + "a の内容が "xy^Hz" (ここで ^H はバックスペース) のとき、 + "CTRL-R a" は "xz" を挿入するのに対し、"CTRL-R CTRL-R a" は + "xy^Hz" を挿入する。 + +CTRL-\ e {expr} *c_CTRL-\_e* + コマンドラインを{expr}を評価した結果で置き換えます。式を入力し + <Enter>を押せば完了します。マッピングする時に使うと便利です。 + |expression|もご覧ください。 + 式の評価を挿入するには|c_CTRL-R_=|を使います。 + 便利な関数に|getcmdline()|と|getcmdpos()|があります。カーソル + が行末になければカーソル位置は変更されません。カーソルが行末に + あるときのコマンドライン変更後のカーソル位置は行末です。 + |setcmdpos()|を使うとカーソル位置を変更できます。 + 例を上げます。 > + :cmap <F7> <C-\>eAppendSome()<CR> + :func AppendSome() + :let cmd = getcmdline() . " Some()" + :" place the cursor on the ) + :call setcmdpos(strlen(cmd)) + :return cmd + :endfunc +< + *c_CTRL-Y* +CTRL-Y モードレスセレクションでテキストを選択中のとき、テキストをクリッ + プボードにコピーする。 |modeless-selection| + 選択中でないときは、CTRL-Y は文字として挿入される。 + +CTRL-J *c_CTRL-J* *c_<NL>* *c_<CR>* +<CR> または <NL> + 入力されたコマンドの実行 + *c_<Esc>* +<Esc> 打ち込まれたときにオプション 'cpoptions' にフラグ 'x' が含まれ + ていなければ、コマンドを実行せずにコマンドラインモードを終了す + る。マクロ内で使われたとき、または 'cpoptions' に 'x' が含まれ + ているときは、コマンドラインを実行する。 + *c_CTRL-C* +CTRL-C コマンドを実行せずにコマンドラインモードを終了する。 + + *c_<Up>* +<Up> 古いコマンドラインの内容のうち、先頭部分が現在のコマンドライン + とマッチするものを履歴から呼び出す (下を参照)。 + {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} + *c_<Down>* +<Down> さらに最近のコマンドラインの内容のうち、先頭部分が現在のコマン + ドラインとマッチするものを履歴から呼び出す (下を参照)。(訳注: + 変な訳ですが,<Up> で行き過ぎたら <Down> で戻るということです) + {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} + + *c_<S-Up>* *c_<PageUp>* +<S-Up> または <PageUp> + 履歴から古いコマンドラインの内容を呼び出す。 + {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} + *c_<S-Down>* *c_<PageDown>* +<S-Down> または <PageDown> + 履歴からさらに最近のコマンドラインの内容を呼び出す。 + {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} + +CTRL-D コマンドライン補完(|cmdline-completion|を参照) +オプション 'wildchar' で指定したキー + コマンドライン補完 (|cmdline-completion|を参照) +CTRL-N コマンドライン補完 (|cmdline-completion|を参照) +CTRL-P コマンドライン補完 (|cmdline-completion|を参照) +CTRL-A コマンドライン補完 (|cmdline-completion|を参照) +CTRL-L コマンドライン補完 (|cmdline-completion|を参照) + + *c_CTRL-_* +CTRL-_ 1. キーボードのヘブライ語モードと英語モードを切り替える。これ + はコマンドラインのみに適用され、'hkmap' とは関係ない。 + コマンドライン、検索や略語補完等にヘブライ語テキストの項目が必 + 要とされるときに便利である。Vimが |+rightleft| 機能付きでコン + パイルされ、'allowrevins' がオンのときのみ有効。 + |rileft.txt| を参照。 + + 2. キーボードのFarsi語モードと英語モードを切り替える。これはコ + マンドラインのみに適用され、オプション 'fkmap' には関係しない。 + Farsi語モードでは、文字は普段とは反対の方向に挿入される。コマ + ンドライン、検索や略語補完等にFarsi語テキストの項目が必要とさ + れるときに便利である。Vimが |+farsi| 機能付きでコンパイルされ + たときのみ有効。 + |farsi.txt|を参照。 + + *c_CTRL-^* +CTRL-^ 言語マッピング |:lmap| を切り替えたり、Input Method (IM) を切 + り替える。 + 検索コマンドのためにパターンを入力するとき、オプション + 'imsearch' が -1 でなければ VAL は 'imsearch' の値に、そうでな + ければ VAL は 'iminsert' の値になる。 + 言語マッピングが定義されているとき: + - VAL が 1 のとき (言語マッピングが使われているとき) 0 に変わ + る (言語マッピングは使われなくなる). + - VAL が 1 でなければ 1 に変わり、言語マッピングが有効になる。 + 言語マッピングが全く定義されていないとき: + - VAL が 2 のとき (IMが使われているとき) 0 に変わる (IMは使わ + れなくなる) + - VAL が 2 以外のときは 2 に変わり、IMが有効になる。 + 普通、言語マッピングは、キーボードが生成するのと違う文字を打ち + 込むのに使われる。オプション 'keymap' を使えばまとめて設定でき + る。 + コマンドラインに入ったときは、コマンドを打ち込むはずなので、言 + 語マッピングはオフに切り替えられる。CTRL-^ でオンにした後も、 + 次にコマンドや検索パターンを打ち込むときにはその状態は使われな + い。 + {Vi にはない} + +コマンドラインをEmacsスタイルで編集する方法については |emacs-keys| を参照。 + +キー <Up> と <Down> は現在のコマンドラインを検索文字列として扱う。次/以前のコ +マンドラインの先頭部分が、この文字列と比較される。マッチした最初の行が新しいコ +マンドラインとなる。これら2つのキーを繰り返し入力すると、同じ文字列が検索に使 +われる。例えば、以前の置換コマンドを見つけるためにはこうする: ":s" の後 <Up> +を打ち込むこと。同じことは、<S-Up> を望んだ行が出るまで数回打ち込むことでもで +きる。( Note: シフトキーと矢印キーとの同時押しは、全ての端末で機能するわけでは +ないことに注意) + + *his* *:history* +:his[tory] 最近入力されたコマンドの履歴を表示する。 + {Vi にはない} + {Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} + +:his[tory] [{name}] [{first}][, [{last}]] + {name} の種類の履歴内容を一覧表示する。{name} に入るものは: + c[md] または : コマンドラインの履歴 + s[earch] または / 検索文字列の履歴 + e[xpr] または = Expression レジスタの履歴 + i[nput] または @ 入力行の履歴 + a[ll] 上記のもの全て + {Viにはない} + + {first}や{last}が指定されたときは、履歴中の指定された範囲の + 項目が表示される。これらの数字は次の形式で指定する。 + *:history-indexing* + 正数は、":history" の一覧表示で最初の列に表示される、項目の絶 + 対的な番号を表す。この数字は、他の項目が削除されても固定された + ままである。 + + 負数は項目の相対的な位置を示す。これは最も新しい項目 (番号 -1 + を持つ) から後ろ向きに数えたものである。 + + 例: + 検索履歴の項目6から12までを一覧表示する。 > + :history / 6,12 +< + 全履歴の最近の5項目を一覧表示する。 > + :history all -5, + +============================================================================== +2. コマンドラインの補完 *cmdline-completion* + +コマンドラインの編集をしているとき、いくつかのコマンドを使ってカーソル前の単語 +を補完できる。補完は以下のものに対して有効である。 + +- コマンド名: コマンドラインの先頭で使われる +- タグ: コマンド ":tag" の後でのみ使われる +- ファイル名: ファイル名を取るコマンドの後、またはファイル名に対して設定される + オプションの設定時のみ使われる。これはファイル名補完と呼ばれる。 +- オプション: コマンド ":set" の後でのみ使われる。 +- マッピング: ":map" や類似コマンドの後でのみ使われる。 +- 変数/関数名: ":if", ":call" や類似コマンドの後でのみ使われる。 + +Vimが |+cmdline_compl| 機能付きでコンパイルされなかったときは、ファイル名、ディ +レクトリ名、ヘルプの項目のみが補完される。 + +補完に使えるコマンドは以下の通り。 + + *c_CTRL-D* +CTRL-D カーソルより前のパターンに一致する名前を一覧表示する。ファイル + 名を表示しているときには、ディレクトリは強調表示される (オプショ + ン 'highlight' を参照)。オプション 'suffixes' の値がマッチした + 名前は、末尾の方に移動される。 + *c_CTRL-I* *c_wildchar* *c_<Tab>* +オプション 'wildchar' で指定したキー + カーソルより前のパターンに対してマッチの検索が行われる。マッチ + (いくつかあるなら、最初のもの) が、そのパターンの位置に挿入さ + れる。( Note: これはマクロの中では機能しない。なぜなら <Tab> + と <Esc> は大抵 'wildchar' として使われ、またいくつかのマクロ + の中ではこれらが特別な意味を持つからである) このキーを再び入力 + すると、複数のマッチがあるときは、次のマッチが挿入される。最後 + のマッチの後には、最初のマッチが再び使われる (繰り返し)。 + この動作は、オプション 'wildmode' で変更できる。 + *c_CTRL-N* +CTRL-N 'wildchar' を使ったら複数のマッチがあったとき、その後に使うと + 次のマッチが挿入される。それ以外のときには、より最近使ったコマ + ンドラインを履歴から呼び出す。 +<S-Tab> *c_CTRL-P* *c_<S-Tab>* +CTRL-P 'wildchar' を使ったら複数のマッチがあったとき、その後に使うと + 前のマッチが挿入される。それ以外のときには、より昔に使ったコマ + ンドラインを履歴から呼び出す。<S-Tab> はGUI版、Amiga版と + MS-DOS版でのみ機能する。 + *c_CTRL-A* +CTRL-A カーソルより前のパターンに一致する、全ての名前が挿入される。 + *c_CTRL-L* +CTRL-L カーソルより前のパターンに対してマッチの検索が行われる。マッチ + が1個のときは、それがパターンの位置に挿入される。複数個のマッ + チがあったときは、最も長い共通部分がパターンの位置に挿入される。 + その結果がパターンより短い場合には、補完は行われない。 + +オプション 'wildchar' の既定値は <Tab> である (Vi互換モードの場合は CTRL-E で +ある。以前のヴァージョンでは <Esc> が使われていた)。パターン内では標準のワイル +ドカード '*' と '?' が使用できる。'*' はあらゆる文字列に一致し、'?' はちょうど +1文字に一致する。 + +tcshのautolist補完が好みなら、このマッピングが使える。 > + :cnoremap X <C-L><C-D> +(ここで X は使いたいコマンドキー。<C-L> は CTRL-L, <C-D> は CTRL-D のこと) +これは最長のマッチを見つけ、マッチしたファイルを全て一覧表示する。 + +tcshのautolist補完が好みなら、オプション 'wildmode' を使ってその動作をエミュレ +ートできる。例えば、次の設定は autolist=ambiguous という設定を真似る。 > + :set wildmode=longest,list +これは、最初の 'wildchar' で最長のマッチを見つけ、次はマッチするファイルを全て +一覧表示する。 + + *suffixes* +ファイル名補完では、オプション 'suffixes' を使い、ほぼ同じ名前のファイル名に優 +先度を設定できる。複数のマッチがあったとき、あるファイルの拡張子が 'suffixes' +の値に含まれていると、そのファイルは無視される。既定値は +".bak,~,.o,.h,.info,.swp" であり、これは ".bak", "~", ".o", ".h", ".info", +".swp" で終わるファイルが無視されることがあるということである。2つのドッ +トを持つ拡張子を無視することはできない。例: + + パターン: 存在するファイル: マッチ: ~ + test* test.c test.h test.o test.c + test* test.h test.o test.h and test.o + test* test.i test.h test.c test.i and test.c + +(オプション 'suffixes' による除外が行われた後で) マッチするファイルが複数個あ +るときは、最初のファイル名が挿入される。'wildchar' のキーを2度打ち込んでも補完 +されたマッチが同じだったら、マッチが1つしかないことが分かる。他のマッチは、 +'wildchar' のキーまたは CTRL-N, CTRL-P を入力することで得られる。それには +'suffixes' に設定された拡張子にマッチするものも含め、全てのファイルが含まれる。 + +ある拡張子のファイルを完全に無視するにはオプション 'wildignore' を使うこと。 + +オプションの、以前に設定された値は、'=' の後で 'wildchar' のキーを打ち込むこと +で得られる。例えば、":set dir=" の後で 'wildchar' のキーを打ち込むと、'dir' の +現在の値が挿入される。この動作は、ファイル名を取るオプションに対するファイル名 +補完より優先する。 + +xtermで <S-Tab> を CTRL-P として使いたいときは、このコマンドをユーザの .cshrc +に加えること。 > + xmodmap -e "keysym Tab = Tab Find" +そして次を .vimrc に加えること。 > + cmap <Esc>[1~ <C-P> + +============================================================================== +3. Exコマンドライン *cmdline-lines* + +Exコマンドはいくつかの特徴を持っている。 + + *:quote* +行の最初に '"' があると、その行全てが無視される。'"' がコマンドの後にあると、 +その行の残りの部分が無視される。これはコメントを加えるために使われる。例: > + :set ai "set 'autoindent' option +シェルコマンド ":!cmd", コマンド ":map" とその類似コマンドにはコメントを付ける +ことができない。これらのコマンドは '"' を引数の一部として認識するからである。 + + *:bar* *:\bar* +'|' を使ってコマンドを区切ることができる。これにより一行に複数のコマンドを書き +込める。引数に '|' を使いたいときは、'\' を前に置くこと。 + +以下のコマンドは '|' を引数として認識するため、後に他のコマンドを続けることは +できない。 + :argdo + :autocmd + :bufdo + :command + :cscope + :debug + :folddoopen + :folddoclosed + :function + :global + :help + :helpfind + :make + :normal + :perl + :perldo + :promptfind + :promptrepl + :pyfile + :python + :registers + :read ! + :scscope + :tcl + :tcldo + :tclfile + :vglobal + :windo + :write ! + :[range]! + 引数 "-bar" なしで定義されたユーザコマンド |:command| + +Note: (Viから継承されたのだが) 次の点は混乱を招きやすいので注意: '|' は ":g" +と共に使うとコマンドの引数に含まれるが、":s" ではコマンドの区切りになる。 + +どうしても他のコマンドを使いたいときは、コマンド ":execute" を使うこと。 +例 (バッファに外部コマンド "ls" の出力を追加し、最初の行にジャンプする): > + :execute 'r !ls' | '[ + +例外が1点ある: オプション 'cpoptions' にフラグ 'b' が含まれるときは、":map", +":abbr" またはその類似コマンドの引数に '|' を使うとき、'\' の代わりに CTRL-V +を使う必要がある。代わりに "<Bar>" を使うこともできる。|map_bar| も参照。 + +例: > + :!ls | wc 2つのコマンドの出力を見る + :r !ls | wc その出力をテキストに挿入する + :%g/foo/p|> 一致した全ての行をshiftwidth1個分ずらす + :%s/foo/bar/|> 1つの行をshiftwidth1個分ずらす + :map q 10^V| "q" に "10|" をマッピングする + :map q 10\| map \ l "q" に "10\" を、"\" に "l" をマッピングする + ('b' が 'cpoptions' に含まれるとき) +< +<NL> を使って、'|' と同様にコマンドを区切ることができる。<NL> を挿入するには +CTRL-V CTRL-J を使うこと。すると "^@" が表示される。'|' を使う方が好ましいが、 +外部コマンドに対しては、'|' が外部コマンドに含まれてしまうため、<NL> を使わな +ければならない。<NL> の特別な作用を避けるためには、前に '\' を置く必要がある。 +例: > + :r !date<NL>-join +これは現在の日時をファイルに読み込み、それを前の行につなげる。 + +Note: '|' の前のコマンドがエラーを起こしたときは、以降のコマンドは実行されない +ことに注意。 + + +Viとの互換性のために、以下の奇妙なコマンドがサポートされている。 > + :| 現在行を表示する (":p" と同様) + :3| 3行目を表示する (":3p" と同様) + :3 3行目に移動する + +範囲とコマンド名の間にコロンを入れることができる。このコロンは無視される (これ +はVi互換の動作である)。例: > + :1,$:s/パターン/文字列 + +ファイル名が入るべき場所に、文字 '%' または '#' が使われているときは、それらは +カレントファイル名、代替ファイル名に展開される ("ファイルの編集" の章を参照 +|:_%| |:_#|)。 + +Amigaでは、引数がファイル名1個になるはずのとき、空白を含むファイル名が使用でき +る。ファイル名末尾の空白は、'\' や CTRL-V でエスケープされていない限り無視され +る。 NOTE: コマンド ":next" では、ファイル名の区切りに空白を使うことに注意。ファ +イル名に空白を含むには、エスケープすること。例: > + :next foo\ bar goes\ to school\ +こうすると3個のファイル "foo bar", "goes to", "school " の編集を開始する。 + +コマンドで特別な文字 '"', '|' を使いたいとき、あるいはファイル名に '%', '#' を +使いたいときは、'\' を前に置く。範囲指定やコマンド ":substitute" では '\' は必 +要ない。 + + *:_!* +Exコマンドの後に文字 '!' (bang) を置くと、コマンドの動作方法が変わる。'!' はコ +マンドの直後に置かなければならず、間に空白を入れてはならない。空白を挿入すると、 +'!' はコマンドの引数と見なされ、違った意味を持つことになる。例: > + :w! name 現在のバッファをファイル "name" に保存し、ファイルがす + でに存在していると上書きする + :w !name 現在のバッファを、標準入力からの入力としてコマンド + "name" に送る + +============================================================================== +4. Exコマンドラインの範囲 *cmdline-ranges* *[range]* *E16* + +Exコマンドには、その前に行単位の範囲を指定できるものがある。これは [range] と +表記される。それは ',' か ';' で区切られた、1個以上の行指定子から成る。 + +基本事項はユーザマニュアルの |10.3| 章で説明されている。 + + *:,* *:;* +区切りに ';' を使うと、次の行指定子を解釈する前にカーソル位置がその行に移動 +する。',' ではこうならない。例: > + 4,/この行/ + 4行目から、カーソルより後の、"この行" がマッチする行まで。 + 5;/あの行/ + 5行目から、5行目より後の、"あの行" がマッチする行まで。 + +ほとんどのコマンドでは、範囲の既定値はカーソルのある行である。しかしコマンド +":write", ":global" での既定値はファイル全体 (1,$) である。 + +コマンドに必要以上の行指定子が指定されたときは、先頭の方に指定されたものから順 +に除外される。 + +行番号は以下の方法で指定できる: *:range* *E14* *{address}* + {number} 絶対的な行番号 + . 現在の行 *:.* + $ ファイルの最終行 *:$* + % 1,$と同じ (ファイル全体) *:%* + 't マーク tの位置 (小文字) *:'* + 'T マーク Tの位置 (大文字); マーク位置が別ファイルにある + ときには範囲指定には使えない + /{pattern}[/] 次に {pattern} のマッチする行 (下向き) *:/* + ?{pattern}[?] 次に {pattern} のマッチする行 (上向き) *:?* + \/ 次に直前の検索パターンのマッチする行 (下向き) + \? 次に直前の検索パターンのマッチする行 (上向き) + \& 次に直前の置換元パターンのマッチする行 (下向き) + +これらの後に '+' または '-' と数値を付けてもよい (複数も可)。この数は直前の行 +番号に加算または減算される。数が省略された場合は 1 が指定されたと見なされる。 + +{pattern} の後の "/" と "?" は、パターンとその後の項目とを区別するために必要と +なる。 + +"/" と "?" は別の場所指定の後に付くことがある。すると検索はそこから始まる。';' +との違いは、カーソルが移動しない点である。例: > + /pat1//pat2/ "pat1" を含む行より後の、"pat2" を含む行を見つける。こ + のときカーソルは移動しない。 + 7;/pat2/ 7行目より後の、"pat2" を含む行を見つける。このときカー + ソルは7行目に留まる。 + +{number} は 0 からファイルの行数までの数でなければならない。0 (零) を使うと、 +コマンドの大半では 1 と解釈される。その数をカウントとして使うコマンド (|:tag|, +|:pop| 等) では確かに 0 として使われる。0 を「先頭行の前」として解釈するコマン +ドもある (|:read|, 検索パターン等)。 + +Examples: > + .+3 カーソルの3行下 + /that/+1 次行より下の、"that"を含む行 + .,$ 現在行からファイル末尾まで + 0;/that "that" を含む最初の行 (第1行にもマッチ可能) + 1;/that 第1行より下の、"that" を含む行 + +いくつかのコマンドには、後にカウントを指定できる。そのコマンドは、最後の行指定 +子で指定された行 (既定値はカーソルの行) から始まる、そのカウントの行数の範囲に +使われる。カウントを取ることができるのは、範囲指定は取るがファイル名の引数を取 +らないコマンドである (ファイル名は数字でもよいから)。 + +例: > + :s/x/X/g 5 現在行から始まる5行で 'x' を 'X' に置換 + :23d 4 第23, 24, 25, 26行を削除 + + +折り畳みと範囲指定 + +折り畳みがアクティブなときは、閉じられた折り畳み全体を含むように範囲が切り上げ +/切り下げられる。 |fold-behavior| を参照。 + + +逆向きの範囲指定 + +範囲には小さい行番号を先に指定しなければならない。そうでないときは、Vimはその +行番号を入れ替えてよいかを尋ねる。ただしグローバルコマンド ":g" では尋ねない。 + + +カウントと範囲指定 *N:* + +":" を入力する前にカウントを指定すると、次のように変換される。 > + :.,.+(count - 1) +つまりカーソルの行から始まる [count] 行のことである。例: 3行を削除するにはこう +する。 > + 3:d<CR> は .,.+2d<CR> に変換される +< + +ヴィジュアルモードと範囲指定 *v_:* + +{Visual}: ヴィジュアルに選択された行を範囲として、コマンドライン入力を始 + める。この範囲指定にはコード ":'<,'>" が使われるので、コマンド + ライン履歴から同様のコマンド行を呼び出して、別のヴィジュアル選 + 択行にコマンドを繰り返すことができる。 + +============================================================================== +5. Exコマンド用の特別な文字 *cmdline-special* + +Exコマンドの、ファイル名が使えるところでは、以下の文字は特別な意味を持つ。これ +らは式や関数 |expand()| 内でも使うことができる。 + % カレントファイル名に置き換えられる。 *:_%* + # 代替ファイル名に置き換えられる。 *:_#* + #n (ここで n は数) バッファ n のファイル名に置き換えられる。 + "#0" は "#" と同じ。 + ## 引数リスト内の全てのファイル名を、空白で区切って *:_##* + 列挙したものに置き換えられる。ファイル名の中の空白には、 + 全て前に '\' が付けられる。 +Note: これらはユーザに打ち込まれた通りのファイル名を与えることに注意 (訳注: 普 +通、カレントディレクトリのファイルは、パスを付けずにファイル名のみを打ち込んで +編集を始めるはずだが、その形でファイル名が呼び出される)。絶対パスが必要なとき +(違うディレクトリのファイル名を使うとき) は、":p" を付け加える必要がある。 +|filename-modifiers|を参照。 + +'%' と '#' の特別な意味を避けるためには、その前に '\' を挿入する。 +詳細: これらの文字の特別な意味は、'\' がその前に置かれれば、それがいくつあるか +に関わらず、常にエスケープ (無効化) される。 + 打ち込むキー: 結果 ~ + # 代替ファイル名 + \# # + \\# \# + + *:<cword>* *:<cWORD>* *:<cfile>* *<cfile>* + *:<sfile>* *<sfile>* *:<afile>* *<afile>* + *:<abuf>* *<abuf>* *:<amatch>* *<amatch>* + *E495* *E496* *E497* *E498* *E499* *E500* +Note: これらは文字通りに打ち込まれる、これらは特別なキーではない! + <cword> カーソル下の word に置き換えられる (|star| と同様) + <cWORD> カーソル下の WORD に置き換えられる (|WORD| を参照) + <cfile> カーソル下のパス名に置き換えられる (|gf| が使うものと同様) + <afile> autocommand の実行時、ファイルの読み書き用のファイル名に置 + き換えられる + <abuf> autocommand の実行時、カレントバッファの番号に置き換えられ + る (":r file" のときにもカレントバッファの番号に置き換えら + れる。読み込まれているファイルはバッファ内にない) + <amatch> autocommand の実行時、この自動コマンドが実行されたときのマッ + チに置き換えられる。そのファイル名がマッチの検索に使われて + いないときのみ、<afile> と違う値になる (イベント FileType + や Syntax 用)。 + <sfile> コマンド ":source" の実行時、取り込まれたファイルのファイル + 名に置き換えられる。 + 関数の実行時、"関数 {関数名}" に置き換えられる。関数呼び出 + しのネスト (入れ子状態) はこのように表される: + "関数 {関数名1}..{関数名2}"。 Note: 関数内で <sfile> が使わ + れている場合、ファイル名修飾子は無効になることに注意。 + + *filename-modifiers* + *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* +ファイル名修飾子は "%", "#", "#n", "<cfile>", "<sfile>", "<afile>", "<abuf>" +の後で使うことができる。これらは関数 |fnamemodify()| と使うこともできる。Vim +が |+modify_fname| 機能付きでコンパイルされていなければ、これらの修飾子を使う +ことはできない。 +これらの修飾子は次の順で指定できる。 + :p ファイル名を完全パスにする。最初の修飾子でなければならない。 + また "~/" (およびUnixやVMSで使われる "~user/" の形式のもの) も + ホームディレクトリのパスに変換する。これが付けられたものがディ + レクトリ名に展開されるならば、パスの区切り文字が末尾に追加され + る。これが付けられたものが、ディスク上に存在せず絶対パスを持た + ないファイルに展開されるときは、結果は予期できない。 + :8 パスを短い8.3形式に変換する (現在のところWin32版でのみ)。既存 + のパス全てに適用される (訳注: 原文はWill act on as much of + a path that is an existing path)。 + :~ ファイル名をホームディレクトリについて相対的な名前に (可能なら + ば) 切り詰める。ファイルがホームディレクトリの下になければ、ファ + イル名は修正されない。 + :. ファイル名をカレントディレクトリについて相対的な名前に (可能な + らば) 切り詰める。ファイル名がカレントディレクトリの下になけれ + ば、ファイル名は修正されない。 + 最も短く切り詰めるには ":~:." を使う。 + :h ファイル名のヘッド (末尾の部分と全ての区切りが除かれたもの)。 + :e, :r, :t には使えない。 + 繰り返すと、末尾から順に複数の部分を取り除くことができる。 + ファイル名がパス区切りで終わるときは、パス区切りのみが取り除か + れる。そのためディレクトリ名に ":p:h" を使うと、(末尾にパス区 + 切りなしの) ディレクトリ名そのものが得られる。 + ファイル名が絶対パス (Unixでは "/"; MS-DOS, WIN32, OS/2では + "x:\"; Amigaでは"drive:" で始まるもの) のときは、この部分は取 + り除かれない。ヘッドがないときは (パスがカレントディレクトリに + 対して相対的なとき)、結果は空となる。 + :t ファイル名のテール (名前の末尾の部分)。:r または :e よりも前に + 指定しなければならない。 + :r ファイル名のルート (最後の拡張子が取り除かれたもの)。拡張子だ + けしかないときは ('.' で始まるファイル名、例えば ".vimrc" 等)、 + それは取り除かれない。繰り返し使うと、複数の拡張子を (最後のも + のから順に) 取り除くことができる。 + :e ファイル名の拡張子。単独で使われたときのみ意味を持つ。 + 拡張子がないときは、結果は空となる。 + 拡張子だけしかないときは ('.' で始まるファイル名)、結果は空と + なる。繰り返すと、複数の拡張子が得られる。繰り返した回数より拡 + 張子の数の方が少ないときは、可能なだけ取り込まれる (しかし最低 + でも1個はないと取り込まれない)。 + :s?pat?sub? + 最初に "pat" に一致したものを "sub" に置き換える。これはコマン + ド |:s| と同様に機能する。"pat" は正規表現である。'?' には任意 + の文字を使えるが、"pat" や "sub" 内に現れてはならない。 + この後、上述の修飾子を再び使うことができる。例えば、":p" では + 置換した後でフルパスに変える。 + :gs?pat?sub? + "pat" に一致したものを全て "sub" に置き換える。その他の点では + ":s" と同様に機能する。 + +ファイル名が "src/version.c"、カレントディレクトリが "/home/mool/vim" のときの +例: > + :p /home/mool/vim/src/version.c + :p:. src/version.c + :p:~ ~/vim/src/version.c + :h src + :p:h /home/mool/vim/src + :p:h:h /home/mool/vim + :t version.c + :p:t version.c + :r src/version + :p:r /home/mool/vim/src/version + :t:r version + :e c + :s?version?main? src/main.c + :s?version?main?:p /home/mool/vim/src/main.c + :p:gs?/?\\? \home\mool\vim\src\version.c + +ファイル名が "src/version.c.gz" のときの例: > + :p /home/mool/vim/src/version.c.gz + :e gz + :e:e c.gz + :e:e:e c.gz + :e:e:r c + :r src/version.c + :r:e c + :r:r src/version + :r:r:r src/version +< + *extension-removal* *:_%<* +"%", "#", "#n" または "CTRL-V p" に "<" を付け加えたとき、ファイル名の拡張子 +(ファイル名の最後の '.' とそれ以降の全て) は取り除かれる。これは +Vim version 3.0 との下位互換性のために残されており、":r" 形式を使う方がよい。 +例: > + + % カレントファイル名 + %< 拡張子なしのカレントファイル名 + # カレントウィンドウでの代替ファイル名 + #< 同上、ただし拡張子なし + #31 代替ファイル番号31 + #31< 同上、ただし拡張子なし + <cword> カーソル下の word + <cWORD> カーソル下の WORD (|WORD| を参照) + <cfile> カーソル下のパス名 + <cfile>< 同上、ただし拡張子なし + +Note: ファイル名が来る筈の所では、ワイルドカードの展開が行われる。Unixでは展開 +にはシェルが使われる。ただしVim内部でできない展開だけである (スピードのため)。 +バックティック '`' も次のように使える。 > + :n `echo *.c` +(バックティックの展開は |restricted-mode| ではできない) +しかし展開は、'%' や '#' 等が展開される前にワイルドカードが存在したときにのみ +行われる。これはファイル名に含まれるワイルドカードを展開しないためである。 +<cfile> の結果を展開したいときは、ワイルドカードの文字を追加すればよい。 +例: (代替ファイル名は "?readme?" とする) + コマンド 展開結果 ~ + :e # :e ?readme? + :e `ls #` :e {"?readme?" にマッチしたファイル全て} + :e #.* :e {"?readme?.*" にマッチしたファイル全て} + :cd <cfile> :cd {カーソル下のファイル名} + :cd <cfile>* :cd {カーソル下のファイル名に "*" を加え展開したもの} + +展開された後のコマンド引数に "!" に含まれていて、それがシェルコマンドに使われ +る (":!cmd", ":r !cmd" や ":w !cmd") とき、それは '\' でエスケープされ、前回の +コマンドに展開されるのを防ぐ。オプション 'shell' の値が "sh" を含むときは、エ +スケープは2回行われ、シェルが "!" を展開するのを防ぐ。 + + *filename-backslash* +'\' をディレクトリの区切りに使うファイルシステム (MS-DOS、Windows、OS/2) では、 +次のキャラクタの特別な意味をエスケープする目的の '\' を認識するのが少し困難で +ある。一般的な規則は次の通り。'\' が普通のファイル名の文字の後にある場合は、特 +別な意味を持たない。したがって、"\file\foo" は有効なファイル名であり、'\' を2 +度打つ必要はない。 + +例外は '$' 記号である。これはファイル名で有効な文字である。しかし "$home" のよ +うなファイル名が環境変数として解釈されるのを避けるため、'\' をこの前に付ける必 +要がある。従ってルートディレクトリのファイル "$home" の指定には、"/\$home" を +使う必要がある。いくつかの例: + + ファイル名 その解釈 ~ + $home 環境変数 $home の値に展開される + \$home カレントディレクトリのファイル "$home" + /\$home ルートディレクトリのファイル "$home" + \\$home "\\" の後に $home の値を付け加えた名前のファイル + +============================================================================== +6. コマンドラインウィンドウ *cmdline-window* *cmdwin* + +コマンドラインウィンドウでは、普通のウィンドウでテキストを編集するのと同じよう +にコマンドラインを編集できる。コマンドラインウィンドウは特殊なウィンドウで、普 +通の方法でそこから出ることはできない。 +{Vi mが |+cmdline_hist| 機能と |+vertsplit| 機能付きでコンパイルされたときのみ +有効である。} + + +開 始 + +コマンドラインウィンドウを開くには2通りの方法がある。 +1. コマンドラインモードで、オプション 'cedit' で指定されたキーを使う。 + 'compatible' がオフのときの既定値は CTRL-F である。 +2. ノーマルモードで、コマンド "q:", "q/" または "q?" を使う。 *q:* *q/* *q?* + "q:" でExコマンドラインの編集を始め、"q/" または "q?" で文字列を検索する。 + Note: 打ち込んだキーの記録中にはこの方法は使えないことに注意 (そのときは + "q" では記録が終了する)。 + +コマンドラインウィンドウが開かれたとき、中にはコマンドラインの履歴が並んでいる。 +末尾の行には、その時点までに打ち込まれたコマンドが含まれる。左の列には、編集さ +れているコマンドラインの種類を表す1文字が表示される。|cmdwin-char| を参照。 + +コマンドラインウィンドウが開かれたとき、Vimはノーマルモードに移るが、オプショ +ン 'insertmode' がオンのときは挿入モードに移る。 + +コマンドラインウィンドウの高さはオプション 'cmdwinheight' で指定できる (ただし +余裕がないとこれより低くなる)。常に幅は最大になり、場所はコマンドラインの直上 +である。 + + +編 集 + +コマンドラインウィンドウ内では、コマンドを使ってあちこちへ移動したり、ウィンド +ウ内のテキストを編集できる。ノーマルモードと挿入モードが使える。 + +":" や "/" を始めとする、コマンドラインを使うコマンドも使えるが、そこから別の +コマンドラインウィンドウを開くことはできない。コマンドラインウィンドウはネスト +(入れ子状になること) できない。 + *E11* +コマンドラインウィンドウは普通のウィンドウではないので、別のウィンドウに移動し +たり、別のバッファを編集したりはできない。コマンドラインウィンドウでは、それら +を行うコマンドは無効化されている。もちろんコマンドラインウィンドウで入力したコ +マンドならどんなものでも 実 行 可 能 である。 + + +終 了 *E199* + +コマンドラインウィンドウを終了するには、以下の通りの方法がある。 + +<CR> カーソル下のコマンドラインを実行する。挿入モードとNormalモー + ドの両方で有効である。 +CTRL-C コマンドラインモードとして継続する。カーソル下のコマンドライン + が引き継がれる。挿入モードとノーマルモードの両方で有効である。 + コマンド ":close" も使える。再描画は行われないので、ウィンドウ + は可視状態のままになる。 +:quit コマンドラインを破棄してノーマルモードに戻る。コマンド ":exit", + ":xit" や CTRL-\ CTRL-N も有効である。 +:qall Vimを終了する (他のバッファに変更がない限り)。 +:qall! Vimを終了し、どのバッファの変更も破棄する。 + +コマンドラインウィンドウが閉じられると、他のウィンドウのサイズは復元される。実 +行されたコマンドはコマンドラインウィンドウの開始元のウィンドウやバッファに適用 +される。これはコマンドラインウィンドウがなかったかのように動作するが、画面の再 +描画だけは余計に行われる。 +コマンドラインウィンドウに使われたバッファは削除される。<CR> で実行された行以 +外に対する変更は、全て失われる。 + + +そ の 他 + +コマンドラインウィンドウは、以下のときには使えない。 +- 既にコマンドラインウィンドウを開いているとき (ネストすなわち入れ子は不可) +- 暗号化キーの入力時や関数 |inputsecret()| の使用時 +- Vimが |+vertsplit| 機能付きでコンパイルされていないとき + +コマンドラインウィンドウが開かれると、以下のオプションの設定が変わる。 +'filetype' "vim" (Exコマンドラインの編集時に) これは、可能ならVimスクリプ + トに対する構文強調表示を開始する +'rightleft' オフ +'modifiable' オン +'buftype' "nofile" +'swapfile' オフ + +コマンドラインウィンドウの内容をファイルに書き出すことができる。こうすれば、簡 +単にコマンドライン履歴を保存し、後で読み込むことができる。 + +オプション 'wildchar' が <Tab> であり、コマンドラインウィンドウがExコマンドに +対して使われているときは、以下の2個のマッピングが追加され、コマンドラインウィ +ンドウ内でも <Tab> で補完ができるようになる。 > + :imap <buffer> <Tab> <C-X><C-V> + :nmap <buffer> <Tab> a<C-X><C-V> +Note: ノーマルモードで <Tab> を打ち込むと、カーソルの次の文字の位置で補完を行 +うことに注意。この方法なら行末でも補完が行われる。 +それらのマッピングを望まないなら、次のようにして無効化すること。 > + au CmdwinEnter [:>] iunmap <Tab> + au CmdwinEnter [:>] nunmap <Tab> +ユーザの .vimrc ファイルに上の行を書き込んでおけばよい。 + +コマンドラインウィンドウ内では、マウスでカーソルを別のウィンドウに移したり、別 +のウィンドウのステータスラインをドラッグしたりはできない。コマンドラインウィン +ドウ自身のステータスラインはドラッグできる。上向きにずっとドラッグすると、直上 +のウィンドウのステータスラインも動き、コマンドラインウィンドウがさらに広くなる。 + + +AUTOCOMMAND の 適 用 + +2種類の autocommand のイベントが使われる: |CmdwinEnter| と |CmdwinLeave|。コマ +ンドラインウィンドウは特別なウィンドウなので、イベント WinEnter, WinLeave, +BufEnter, BufLeave は発生しない。コマンドラインウィンドウに対して特別に設定を +するには、イベント Cmdwin を使う。副作用を引き起こさないよう注意! +例: > + :au CmdwinEnter : let b:cpt_save = &cpt | set cpt=v + :au CmdwinLeave : let &cpt = b:cpt_save +これは、挿入モードで CTRL-N によってコマンドライン補完を行うよう 'complete' を +設定する。 +別の例: > + :au CmdwinEnter [/?] startinsert +こうすれば、コマンドラインウィンドウではVimは挿入モードに移る。 + + *cmdwin-char* +パターンに使われる文字は、コマンドラインの種類を表す。 + : 普通のExコマンド + > デバッグモードのコマンド |debug-mode| + / 前方検索に使われる文字列 + ? 後方検索に使われる文字列 + = Expressionレジスタ "= 用の expression |expr-register| + @ 関数 |input()| に対して入力する文字列 + - コマンド |:insert| や |:append| に対して入力する文字列 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/develop.jax b/ja/develop.jax new file mode 100644 index 000000000..16525f65f --- /dev/null +++ b/ja/develop.jax @@ -0,0 +1,402 @@ +COMMENT: Vim自身の開発方針 +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*develop.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Vimの開発 *development* + +この文書は、Vimの更なる開発に参加しようという人にとって重要である。 + +1. 設計上の目標 |design-goals| +2. コーディングスタイル |coding-style| +3. 決定事項 |design-decisions| +4. 想定していること |design-assumptions| + +ソースコードの概要については"src"ディレクトリのREADME.txtを見てください。 + +Vimはオープンソースソフトウェアです。誰でもVimの開発に協力できます。パッチを送 +る時はなるべく"context diff"形式("diff -c"で作る)でお願いします。 +http://www.vim.org/tips/tip.php?tip_id=618 も見てください。 + +============================================================================== +1. 設計上の目標 *design-goals* + +重要度の順に従って書かれている(大雑把であるが)。 + +かなりの項目が矛盾していることを注意しておく。これは故意である。それらの +間で、バランスを取っていかねばならない。 + + +VIM IS... VI COMPATIBLE *design-compatible* + +なにより、VimはViの気軽な置き換えとして使うことができるべきである。ユーザ +が望むなら、Vimを、オリジナルのViとの区別がほとんど付かない互換モードで使う +ことができる。 + +例外: +- 明白なViのバグをVimに再現しない。 +- Viには異なるバージョンが存在する。私はバージョン3.7(6/7/85)を参考として + 使っている。しかし、他のバージョンのサポートも可能な限り取り込まれる。 + POSIXにおけるViのパートは、決定的な資料とは考えない。 +- Vimは新しいコマンドを持つため、Viにないコマンドを入力しても機能してしまう + 場合がある。 +- VimはViの持っていない多くの特徴を持つ。VimからViへ戻ることは問題を引き起こ + すが、これは避けられないことである。 +- いくつかの事柄はめったに使われた例がない(オープンモード、クラッシュ時の + e-mailの送信、など)。これらは、誰かが何らかの理由でそれを入れるべきだと考 + え、さらにその機能が働き過ぎない場合に限って取り入れられる。 +- いくつかの項目に関しては、Vi互換を保るべきかどうか、議論の余地がある。これ + らに関しては、オプションフラグが作られるだろう。 + + +VIM IS... IMPROVED *design-improved* + +Vimの改良点は、それをよりよいViにすべきであって、まったく違ったエディタに +してしまってはならない。拡張は"Viの精神"に従って行われる。 +- 可能な限りキーボードを使う。マウスは私たちの持たぬ第3の手を必要とする。 + 多くの端末はマウスを備えていない。 +- それでもマウスを使うようであれば、キーボードに切り替える必要をなくす。 + マウスとキーボードの操作の混在を避けよ。 +- コマンドとオプションを矛盾なく追加せよ。でなければ、それらを見つけ出し、思い + 出すのに、人々は苦労を強いられるだろう。後々、さらにコマンドやオプションが + 追加されることを忘れてはならない。 +- 特性は、人々が知らなければ役に立たない。目立たない特性は追加しない、あるいは、 + 少なくともその特性が存在するというヒントをドキュメントに追加すること。 +- CTRLや他の修飾子の使用は最小限に留めよ、これらはタイプしにくい。 +- 多くの初心者、不慣れなVimユーザがいる。Vimを使いはじめること、そしてより多く + を学んでいくことが、簡単にできるようにせよ。 +- 特性は限りなく追加できる。新しく追加される特性は、(1)ユーザが求めていること、 + (2)実装にどれほどの労力が必要か、そして(3)誰かが実際に実装している、といった + ことに基づいて選択される。 + + +VIM IS... MULTI PLATFORM *design-multi-platform* + +Vimは、可能な限り、多くのプラットホーム上の多くのユーザの助けでありたい。 +- 多くの種類の端末をサポートする。最低限の要求は、カーソルの配置機能と画面の + クリアである。コマンドはたいていのキーボードが持つキーのみを使う。マッピン + グには、キーボード上の全てのキーを使うことができる。 +- 多くのプラットホームをサポートする。必要条件は、誰かがそのプラットホーム上で + Vimの開発をしたいと考えること、それによってコードに混乱をきたさないこと、で + ある。 +- 多くのコンパイラとライブラリをサポートする。全ての人が、他のコンパイラや + GUIライブラリをインストールできるわけではないからである。 +- 人々は、あるプラットホームから別のプラットホームへ、そしてGUIから端末バー + ジョンへ移行する。特性は全てのバージョン、あるいは、少なくとも理に叶った労力 + でできる限りのバージョンで、提供されるべきである。ユーザが能率的に仕事を仕上 + げるために、プラットホームを切り替えねばならないような事態は避けたい。 +- いくつかのプラットホームでは実現できない、または、ただひとつのプラットホーム + でしか実現できないような特性も、実装できないというわけではない。[これは前項 + と故意に矛盾するものであり、両者の間でバランスが取られる。] + + +VIM IS... WELL DOCUMENTED *design-documented* + +- 文書化されていない特性は、役に立たない。新しい特性を含んだパッチには、必ず + ドキュメントが含まれているべきである。 +- ドキュメントは、わかりやすく、理解できるものであるべきだ。例を使うことが推 + 奨される。 +- 文章を不必要に長くしてはならない。短い文章は、その項目を見つけやすくする。 + + +VIM IS... HIGH SPEED AND SMALL IN SIZE *design-speed-size* + +Vimを使うことで、システムリソースに大打撃を与えてはならない。Vimを小さく、 +速く保つこと。 +- コンピュータは年毎により速く、大容量になっている。Vimも成長しうるが、コン + ピュータの成長速度より速くなってはならない。Vimを古いシステム上でも使える + よう保つ必要がある。 +- 多くのユーザは、Vimを頻繁にシェルから立ち上げる。起動は短時間でなくてはなら + ない。 +- コマンドは能率的に働く必要がある。コマンドが消費する時間は、可能な限り短く + あるべきだ。役に立つコマンドなら、多少時間がかかってもよい。 +- Vimを、遅い接続を通して使う人がいることを忘れてはならない。通信にかかるオー + バーヘッドは最小にすること。 +- サイズがかなり大きく、多くの人によって使われるわけではない項目は、無効化で + きる特性とすべきである。 +- Vimは、他のいろいろな構成要素の中にある、ひとつのコンポーネントである。巨大 + なアプリケーションに変えてはならない、むしろ他のプログラムとよく協調するよう + にせよ。 + + +VIM IS... MAINTAINABLE *design-maintain* + +- ソースコードは乱雑になってはならない。そして、信頼できるものでなくてはな + らない。 +- 読みやすくするため、すべてのファイルで同じレイアウトを取ること + |coding-style|。 +- 役に立つコメントをいれること! +- プラットホーム独立のコードに多くの変更を加える必要をなくし、他のプラットホ + ームへの移植を簡単にできるようにすること。 +- オブジェクト指向の精神を使う: データとコードを同じ場所に。コードの他の部分 + に関する知識は最小で済むように。 + + +VIM IS... FLEXIBLE *design-flexible* + +Vimは、そのユーザに特定の作業パターンを強いるよりは、ユーザの好むスタイルでの +作業を支援すべきである。これは大きなインパクトをもつ項目(例えば、'compatible' +オプション)や、その他の詳細によって実現される。デフォルトは、多くのユーザが +そのままのVimを楽しんで使えるように、慎重に選ばれている。コマンドとオプション +は、Vimをユーザの希望と環境に調整するために使われる。 + + +VIM IS... NOT *design-not* + +- Vimはシェルでも、オペレーティングシステムでもない。Vimの中でシェルを走らせた + り、デバッガを制御したりできるようにはならない。Vimは、もっと違った方法で機 + 能するものである: シェルやIDEの1つのコンポーネントとして使いなさい。 + これを皮肉をもって言うならば: "Emacsとは違い、Vimは流し台以外の全てのものを + 取り込もうとはしない、だが、VimでEmacsをきれいにすることはできるという ;-)" + Vim is not a shell or an Operating System. You will not be able to run a + shell inside Vim or use it to control a debugger. This should work the + other way around: Use Vim as a component from a shell or in an IDE. + A satirical way to say this: "Unlike Emacs, Vim does not attempt to include + everything but the kitchen sink, but some people say that you can clean one + with it. ;-)" +- Vimは、全てのプラットホームに渡って調和を欠くという代償を払って、見栄えをよ + くしようとする装飾的なGUIエディタではない。しかし、機能的なGUI特性は歓迎さ + れる。 + +============================================================================== +2. コーディングスタイル *coding-style* + +Vimのソースコードに変更を加える際、守るべきルールがある。ソースを読めるもの、 +保守できるものとして保つため、これらのルールに従って欲しい。 + +このリストは完全ではない。より多くの例は、ソースコードを見て欲しい。 + + +MAKING CHANGES *style-changes* + +コードに変更を加える基本的なステップは: +1. ドキュメントを調整する。最初にこれをやることで、あなたの行う変更がユーザに + 与える影響について、おおまかな印象をもつことができる。 +2. ソースコードに変更を加える。 +3. 変更がリストされた項目に影響を与えていないか、../doc/todo.txtをチェックす + る。 +4. 無修正のコードとドキュメントに対するパッチを、"diff -c"によって得る。 +5. 変更に関する注意書きを作り、パッチに含める。 + + +USE OF COMMON FUNCTIONS *style-functions* + +よく使われる関数のうち、特別なVimバージョンを持つものがある。これらは理由あっ +て導入されたものなので、常にVimバージョンを使うように意識すること。 + +NORMAL NAME VIM NAME DIFFERENCE OF VIM VERSION +free() vim_free() NULLの解放をチェックする +malloc() alloc() アウトオブメモリーの状況をチェックする +malloc() lalloc() alloc()に似ているが、長い引数を持つ +strcpy() STRCPY() char_u *引数を、(char *)へキャストする +strchr() vim_strchr() スペシャルキャラクタを受け入れる +strrchr() vim_strrchr() スペシャルキャラクタを受け入れる +isspace() vim_isspace() 128以上のキャラクタを扱うことができる +iswhite() vim_iswhite() Tabとスペースに対してのみTRUE +memcpy() vim_memmove() オーバーラップしたコピーを扱う +bcopy() vim_memmove() オーバーラップしたコピーを扱う +memset() vim_memset() 全てのシステムで一定である + + +NAMES *style-names* + +関数の名前に31文字より長い名前は使えません。(VMSのために) + +"delete"という名前の変数を使わないでください。C++で問題となります。 + +Vimができる限り多くのシステム上で走るという必要上、システムによってすでに定義 +されている名前を使うことは避けねばならない。これは、問題となることが知られて +いる名前のリストである。名前はregexpパターンとして与えられている。 + +is.*() POSIX, ctype.h +to.*() POSIX, ctype.h + +d_.* POSIX, dirent.h +l_.* POSIX, fcntl.h +gr_.* POSIX, grp.h +pw_.* POSIX, pwd.h +sa_.* POSIX, signal.h +mem.* POSIX, string.h +str.* POSIX, string.h +wcs.* POSIX, string.h +st_.* POSIX, stat.h +tms_.* POSIX, times.h +tm_.* POSIX, time.h +c_.* POSIX, termios.h +MAX.* POSIX, limits.h +__.* POSIX, system +_[A-Z].* POSIX, system +E[A-Z0-9]* POSIX, errno.h + +*_t POSIX, for typedefs, *_Tを使ってください。 + +wait types.hとコンフリクトするため、関数の引数として使わない +index グローバル宣言を覆い隠す +time グローバル宣言を覆い隠す +new C++の予約語 +try Borland C++は、これを変数として使うことを好まない + +basename() GNU 文字列関数(GNU string function) +dirname() GNU 文字列関数(GNU string function) +get_env_value() Linux システム関数 + + +VARIOUS *style-various* + +型の定義に使う名前は最後を"_t"にします: > + typedef int some_t; +マクロ定義はすべて大文字にします: > + #define SOME_THING +機能に関する定義は"FEAT_"で始めます: > + #define FEAT_FOO + +'\"'を使わない、あるコンパイラはこれを扱えない。'"'はうまく機能する。 + +次を使ってはならない: + #if HAVE_SOME +あるコンパイラはこれを扱えず、"HAVE_SAME"が定義されていないと訴える。 +次を使う + #ifdef HAVE_SOME +または + #if defined(HAVE_SOME) + + +STYLE *style-examples* + +一般的なルール: 1行に1つのステートメント。 + +間違い: if (cond) a = 1; + +OK: if (cond) + a = 1; + +間違い: while (cond); + +OK: while (cond) + ; + +間違い: do a = 1; while (cond); + +OK: do + a = 1; + while (cond); + + +関数は次のようにして始める: + +間違い: int function_name(int arg1, int arg2) + +OK: /* + * Explanation of what this function is used for. + * この関数が何に使われるかの説明。 + * + * Return value explanation. + * 戻り値の説明。 + */ + int + function_name(arg1, arg2) + int arg1; /* short comment about arg1 */ + int arg2; /* short comment about arg2 */ + { + int local; /* comment about local */ + + local = arg1 * arg2; + +注意: ANSIスタイルの関数宣言を使わないこと。いまだそれをサポートしていないコ +ンパイラを使わねばならない人が、少ないながらいるからである。 + + +SPACES AND PUNCTUATION *style-spaces* + +関数名とブラケットの間にスペースを入れないこと: + +間違い: func (arg); +OK: func(arg); + +if、while、switchなどの後には、スペースを入れること。 + +間違い: if(arg) for(;;) +OK: if (arg) for (;;) + +カンマ、セミコロンの後にはスペースを入れること: + +間違い: func(arg1,arg2); for (i = 0;i < 2;++i) +OK: func(arg1, arg2); for (i = 0; i < 2; ++i) + +'='、'+'、'/'などの前と後には、スペースを入れること。 + +間違い: var=a*5; +OK: var = a * 5; + +一般的なこと: コードの行をグループ分けするために、空行を使う。行グループのす +ぐ上にコメントを入れる。こうすることによって、何が行われるのかをより簡単に知 +ることができる。 + +OK: /* Prepare for building the table. */ + /* テーブルの作成の準備 */ + get_first_item(); + table_idx = 0; + + /* Build the table */ + /* テーブルの作成 */ + while (has_item()) + table[table_idx++] = next_item(); + + /* Finish up. */ + /* 仕上げ */ + cleanup_items(); + generate_hash(table); + +============================================================================== +3. 決定事項 *design-decisions* + +折畳(folding) + +同じバッファにいくつもの折畳状態を設定可能にする。例えば、あるウインドウに関 +数を折畳んだ状態で表示し、他のウインドウで関数の中身を表示するなど。 + +折畳はテキストを表示する方法である。テキストを変更すべきではない。したがってバッファ内のテキストをウインドウに表示する際のフィルタとして実行される。 + + +ウインドウの名前 + +"ウインドウ"という単語は一般にいくつかの意味で使われている。スクリーン上のウ +インドウ、xtermのウインドウ、Vimのバッファを表示するウインドウなど。 + +混乱を避けるため、時にウインドウと呼ばれる他の物には別の名前が付けられてい +る。ここに関連する物の概観を示す。 + +スクリーン(screen) ディスプレイ全体。GUIでは例えば1024x768ピクセルの画 + 面。Vimシェルはスクリーン全体を使うことも一部を使う + こともできる。 + +シェル(shell) Vimアプリケーション。スクリーン全体(例えばコンソール + で実行した時)、あるいはその一部(xtermやGUI)。 + +ウインドウ(window) バッファの表示画面。Vimは複数のウインドウを持つこと + ができる。ウインドウはコマンドラインやメニューバー、 + ツールバーなどといっしょに表示される。これらはシェル + に納まる。 + +To be continued... + +============================================================================== +4. Assumptions *design-assumptions* + +変数のサイズ: +char 8 bit signed +char_u 8 bit unsigned +int 16, 32 or 64 bit signed +unsigned 16, 32 or 64 bit unsigned +long 32 or 64 bit signed, can hold a pointer + +Note いくつかのコンパイラは長すぎる行は文字列をうまく扱えない。C89の標準規格で +は509文字までに制限されている。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/howto.jax b/ja/howto.jax new file mode 100644 index 000000000..cce79da5e --- /dev/null +++ b/ja/howto.jax @@ -0,0 +1,102 @@ +COMMENT: HOW TOマニュアル +STATUS: finished 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*howto.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +How to ... *howdoi* *how-do-i* *howto* *how-to* + +|tutor| 始めてみよう +|:quit| 終了したいな? 出られない、助けて! +|initialization| Vim を初期化する +|vimrc-intro| Vimスクリプトファイル(vimrc)を書く +|suspend| Vim をサスペンドする +|usr_11.txt| クラッシュした後にリカバリーする +|07.4| 上書きするときにバックアップファイルを作っておく + +|usr_07.txt| ファイルを編集する +|23.4| バイナリーファイルを編集する +|usr_24.txt| テキストを挿入する +|deleting| テキストを削除する +|usr_04.txt| テキストを変更する +|04.5| テキストをコピーしたり移動したりする +|usr_25.txt| テキストを整形する +|30.6| コメントを整形する +|30.2| C のプログラムをインデントする +|25.3| 自動的にインデントをセットする + +|usr_26.txt| コマンドを繰り返す +|02.5| アンドゥとリドゥ + +|usr_03.txt| 動き回る +|word-motions| 単語単位で移動 +|left-right-motions| 左右に移動 +|up-down-motions| 上下に移動 +|object-motions| オブジェクト単位で移動 +|various-motions| 様々な動き +|object-select| オブジェクト単位で選択 +|'whichwrap'| 行末をまたいだ移動 +|'virtualedit'| テキストのないところを移動する +|usr_27.txt| 検索のパターンを指定する +|tags-and-searches| タグを実行し特殊な検索を行う +|29.4| インクルードされるファイルを検索して変数や関 + 数やマクロを見つける +|K| カーソルの下の単語をキーワードにしてマニュアルを読む + +|03.7| スクロールする +|'sidescroll'| 垂直/横にスクロールする +|'scrolloff'| スクロール中に常に前後に表示する行数を決める。 + +|mode-switching| モードを変更する +|04.4| ビジュアルモードを使う +|'insertmode'| 挿入モードで Vim を起動する + +|40.1| キーをマップする +|24.7| 略語(abbreviations)を作る + +|ins-expandtab| 挿入モードでタブをスペースに広げる +|i_CTRL-R| 挿入モードでレジスターの内容を挿入する +|24.3| 挿入モードで単語の補完を行う +|25.1| 行が長くなりすぎる前に改行する + +|20.1| コマンドライン編集 +|20.3| コマンドライン補完 +|'cmdheight'| コマンドラインの高さを広げる +|10.3| コマンドラインの幅を指定する +|40.3| 自動的に実行されるコマンドを指定する。 + バッファー/ウィンドー を 読み込む/書き込む + 入る/離れる 前/後 に。 + +|'autowrite'| 自動的に書き込む +|30.1| 編集-コンパイル-編集のサイクルをスピードアップする + もしくは Vim でコンパイルしてエラーを修正する + +|options| オプションをセットする +|auto-setting| オプションを自動的にセットする +|term-dependent-settings| 端末の名前によってオプションをセットする +|save-settings| 設定を保存する +|:quote| exrc/vimrc/gvimrc ファイルでのコメント +|'helpheight'| ヘルプのデフォルトの高さを変更する +|'highlight'| さまざまなハイライティングモードをセットする +|'title'| ウインドーのタイトルをセットする +|'icon'| ウインドーのアイコンをセットする +|'report'| 行を編集する毎に表示されるメッセージをやめさせる +|'shortmess'| |hit-enter| プロンプトが出るのを避ける + +|mouse-using| Vim でマウスを使う +|usr_08.txt| 複数のウィンドーとバッファーを使う +|gui.txt| GUI を利用する + +|(まだ)できません| Vim を使って夕食を取る + +|usr_06.txt| 構文ハイライトを有効にする +|2html.vim| 色づけされたファイルを HTML に変換する +|less| Vimをlessやmoreと同じように使う + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_pyth.jax b/ja/if_pyth.jax new file mode 100644 index 000000000..b9e44f125 --- /dev/null +++ b/ja/if_pyth.jax @@ -0,0 +1,299 @@ +COMMENT: Pythonインターフェイス +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*if_pyth.txt* For Vim version 6.3. Last change: 2004 Feb 28 + + + VIM REFERENCE MANUAL by Paul Moore + + +VimのPythonインターフェイス *python* *Python* + +1. コマンド |python-commands| +2. vimモジュール |python-vim| +3. バッファオブジェクト |python-buffer| +4. レンジオブジェクト |python-range| +5. ウィンドウオブジェクト |python-window| + +{Vi はこれらのコマンド群を持たない} + +パイソンインターフェイスは、Vimが|+python|特性と共にコンパイルされたときのみ +機能する。 + +============================================================================== +1. コマンド *python-commands* + + *:python* *:py* +:[range]py[thon] {stmt} + パイソンのステートメント{stmt}を実行。 + +:[range]py[thon] << {endmarker} +{script} +{endmarker} + パイソンのスクリプト{script}を実行する。 + Note: このコマンドはPython用の機能を含めてコンパイルさ + れていないときは機能しない。エラーを抑制するには + |script-here|を参照してください。 + +{endmarker}の前に空白を置かないでください。"<<"の後に{endmarker}省略した時は +|:append|や|:insert|のように'.'が使われます。 +この形の|:python|コマンドはVimスクリプトにPythonコードを埋め込むのに特に便利で +す。 + +例: > + function! IcecreamInitialize() + python << EOF + class StrawberryIcecreame: + def __call__(self): + print 'EAT ME' + EOF + endfunction +< +Note: Python is very sensitive to the indenting. Also make sure the "class" +line and "EOF" do not have any indent. + + *:pyfile* *:pyf* +:[range]pyf[ile] {file} + {file}内のパイソンスクリプトを実行。引数はその まま一 + つのファイル名として使われる。{Vi にはない} + +これら2つのコマンドは、本質的には同じことを行う - つまり、パイソンのコードを、 +与えられた"現在の範囲"|python-range|に対して実行する。 + +:pythonの場合には、実行されるコードはコマンドラインで与えられたものです。 +:pyfileの場合には、実行されるコードは与えられたファイルの中身である。 + +Pythonのコマンドは|sandbox|の中では使えません。 + +引数を渡すためには明示的に sys.argv[] を使って設定してください。例: > + + :python import sys + :python sys.argv = ["foo", "bar"] + :pyfile myscript.py + +いくつかの例を挙げる *python-examples* > + + :python from vim import * + :python from string import upper + :python current.line = upper(current.line) + :python print "Hello" + :python str = current.buffer[42] + +(変更 - importsなど - は、パイソンインタープリタと同様に、次のコマンドに引き +継がれる。) + +============================================================================== +2. vimモジュール *python-vim* + +パイソンコードは、vimモジュールを通して、vimに自由にアクセスすることができる +(ただひとつの例外を除いて - 以下の|python-output|を参照)。vimモジュールは2つ +のメソッド、3つの定数、そして1つのエラーオブジェクトを実装している。これを使 +うにはvimモジュールをimportする必要がある。 > + :python import vim + +概要 > + print "Hello" # メッセージを表示 + vim.command(cmd) # exコマンドを実行 + w = vim.windows[n] # ウィンドウ"n"を得る + cw = vim.current.window # 現在のウィンドウを得る + b = vim.buffers[n] # バッファ"n"を得る + cb = vim.current.buffer # 現在のバッファを得る + w.height = lines # ウィンドウの高さを設定する + w.cursor = (row, col) # ウィンドウのカーソル位置を設定する + pos = w.cursor # (row, col)の組を得る + name = b.name # バッファのファイル名を得る + line = b[n] # バッファから1行を得る + lines = b[n:m] # バッファから一連の行を得る + num = len(b) # 行数を得る + b[n] = str # バッファ内の1行を設定する + b[n:m] = [str1, str2, str3] # 1度に数行を設定する + del b[n] # 1行を削除する + del b[n:m] # 数行を削除する + + +"vim"モジュールのメソッド + +vim.command(str) *python-command* + vim(exモード)のコマンドstrを実行する。戻り値はない。 + 例: > + vim.command("set tw=72") + vim.command("%s/aaa/bbb/g") +< ノーマルモードのコマンドを実行するには、次の定義が使われる: > + def normal(str): + vim.command("normal "+str) + # '...'は、2重引用符を含む文字列の境界に使われることに注意。 + normal('"a2dd"aP') +< *E659* + ":python"コマンドはPython 2.2かそれより古いものでは再帰的に使えない。 + Python 2.3 かそれより新しものを使ってください。 > + :python vim.command("python print 'Hello again Python'") + +vim.eval(str) *python-eval* + vim内の式評価を使って、式を評価する(|expression|を参照)。戻り値は、 + 式評価の結果の文字列。 + 例: > + text_width = vim.eval("'tw'") + str = vim.eval("12+12") # 結果は文字列であることに注意! + # 数に変換するには、 + # string.atoi()を使うこと。 + +"vim"モジュールのエラーオブジェクト + +vim.error *python-error* + vimのエラーに遭遇したとき、パイソンは型vim.errorの例外を発生させる。 + 例: > + try: + vim.command("put a") + except vim.error: + # レジスタaが空 + +定数 + これらは、実際には定数ではないことを注意しておく - これらは割り当て直 + すことができる。しかし、それは馬鹿げている、その変数が参照しているvim + オブジェクトへのアクセスができなくなるからだ。 + +vim.buffers *python-buffers* + 一連のvimバッファへのアクセスを提供するシーケンスオブジェクト。 + 次に示す操作がサポートされている: > + b = vim.buffers[i] # インデックス化する (読取り専用) + b in vim.buffers # メンバかどうか調べる + n = len(vim.buffers) # 要素の個数 + for b in vim.buffers: # シーケンシャルアクセス + +vim.windows *python-windows* + 一連のvimウィンドウへのアクセスを提供するシーケンスオブジェクト。 + このオブジェクトは次の操作をサポートしています: > + w = vim.windows[i] # インデックス化する (読取り専用) + w in vim.windows # メンバかどうか調べる + n = len(vim.windows) # 要素の個数 + for w in vim.windows: # シーケンシャルアクセス + +vim.current *python-current* + vim内で使える様々な"現在の"オブジェクトへの、(特定の属性を通した) + アクセスを提供するオブジェクト: > + vim.current.line 現在の行 (RW) String + vim.current.buffer 現在のバッファ (RO) Buffer + vim.current.window 現在のウィンドウ (RO) Window + vim.current.range 現在の行の範囲 (RO) Range +< + 最後のものに関しては、若干の説明が必要だろう。:python、:pyfileコマン + ドで、範囲が指定された場合、この行の範囲は、"現在の範囲"として扱われ + る。範囲はバッファに少し似ているが、全てのアクセスは行のサブセットに + 制限される。詳細は|python-range|を参照せよ。 + + +パイソンからの出力 *python-output* + パイソンコードからの全ての出力は、Vimのメッセージエリアに表示される。 + 標準出力はインフォメーションメッセージとして、エラー出力はエラーメッ + セージとして表示される。 + + 実装のレベルでいうと、これはsys.stdout(printステートメントによる出力 + も含む)に向けられる全ての出力が、インフォメーションメッセージとして + vimに表示され、sys.stderr(エラートレースバックを含む)に向けられる全 + ての出力が、エラーメッセージとしてvimに表示されるということである。 + + *python-input* + 入力(sys.stdinを通した入力、input()、raw_input()を含む)はサポートされ + ず、プログラムをクラッシュさせる可能性がある。これはたぶんフィックス + されるべき問題である。 + +============================================================================== +3. バッファオブジェクト *python-buffer* + +バッファオブジェクトは、vimのバッファを表現する。これらはいくつかの方法で得ら +れる: + - vim.current.bufferを介して (|python-current|) + - vim.buffersのインデックス化から (|python-buffers|) + - ウィンドウの"buffer"属性から (|python-window|) + +バッファオブジェクトは、ひとつの読取り専用属性 - name - そのバッファの完全な +ファイル名を持つ。これらは3つのメソッドを持っています(append、mark、range。以 +下参照)。 + +バッファオブジェクトは、シークエンスオブジェクトとして扱うこともできる。この +状況では、バッファオブジェクトは文字列のリスト(そう、それはとても変わりやす +い)のように振舞う、ただし、各要素はバッファの行なのである。有用なシークエン +ス操作の全て、つまり、インデックス化、インデックスの割当て、部分分けと部分の +割当てが期待通りに機能する。バッファのインデックス化(部分分け)の結果が、文字 +列(文字列のリスト)であることを注意しておく。これはひとつの例外的な結果をもた +らす - b[:]はbとは異なるのである。特に、"b[:] = None"はバッファの全てを削除 +するが、"b = None"は変数bを更新するだけで、バッファには何の影響も与えない。 + +バッファのインデックスは、パイソンでは普通はゼロから始まる。これは、1から始 +まるvimの行番号と異なる。これは、特にvimの行番号を使うmarks(以下を参照)を扱 +う際に問題となる。 + +バッファオブジェクトのメソッドは: + b.append(str) バッファに行を追加 + b.append(list) バッファに一連の行を追加 + appendメソッドに文字列のリストを与えるオプションは、 + パイソン組込みのリストオブジェクトの等価なメソッド + とは違うことに注意せよ + b.mark(name) 名前付きマークの位置を示す(row,col)の組を返す + (これは[]"<> marksでも得られる) + b.range(s,e) 与えられたバッファのs行目からe行目(s行とe行も含む + |inclusive|)を示すレンジオブジェクト(|python-range|を + 参照)を返す + +例 (bは現在のバッファに割り当てられている) > + print b.name # バッファのファイル名を出力 + b[0] = "hello!!!" # 先頭の行を置換 + b[:] = None # 全てのバッファを削除 + del b[:] # 全てのバッファを削除 (上と同じ) + b[0:0] = "add a line" # 先頭に行を追加 + del b[2] # 行を削除 (3番目) + b.append("bottom") # 最後に行を追加 + n = len(b) # 行数 + (row,col) = b.mark('a') # 名前付きマーク + r = b.range(1,5) # バッファの部分範囲 + +============================================================================== +4. レンジオブジェクト *python-range* + +レンジオブジェクトは、vimバッファのある部分を表現する。これらはいくつかの方 +法で得られる: + - vim.current.rangeを介して (|python-current|) + - バッファのrange()メソッドから (|python-buffer|) + +レンジオブジェクトの操作は、バッファオブジェクトのそれとほとんど同じである。 +しかし、全ての操作は範囲内の行に制限される(もちろん、行の範囲は部分の割当て、 +行の削除、あるいはrange.append()メソッドによって変更できる)。 + +レンジオブジェクトの属性: + r.start 選択範囲でのバッファ内の最初の行。 + r.end 選択範囲でのバッファ内の最後の行。 + +レンジオブジェクトのメソッド: + r.append(str) その範囲に行を追加する + r.append(list) その範囲にリストで与えられた複数行を追加する。 + これはパイソンのリストオブジェクトに対する操作とは異な + ることに注意してください。 + + +バッファと違い、レンジは"name"属性を持たず、また、mark()、range()メソッドも +持たない。そのかわり、レンジは範囲の最後に行を付け加えるappend()メソッドを持 +つ。 + +============================================================================== +5. ウィンドウオブジェクト *python-window* + +ウィンドウオブジェクトは、vimのウィンドウを表現する。これらはいくつかの方法 +で得られる: + - vim.current.windowを介して (|python-current|) + - vim.windowsのインデックス化から (|python-windows|) + +ウィンドウオブジェクトは、それらの属性を通してのみ操作できる。これらはメソッド +を持たず、シークエンスも他のインターフェイスもない。 + +ウィンドウの属性: + buffer (読取り専用) そのウィンドウに表示されているバッファ + cursor (読み書き) そのウィンドウの現在のカーソルの位置 + これは(row,col)の組で表される + height (読み書き) ウィンドウの高さ、行の数で + width (読み書き) ウインドウの幅、列の数で +heightはスクリーンがが水平方向に分割されているときのみ書き込み可能です。 +widthはスクリーンが垂直方向に分割されているときのみ書き込み可能です。 +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/intro.jax b/ja/intro.jax new file mode 100644 index 000000000..c15cbcc4e --- /dev/null +++ b/ja/intro.jax @@ -0,0 +1,722 @@ +COMMENT: Vimの紹介 +STATUS: finished 5.7a +TRANSLATOR: 北条耀 +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*intro.txt* For Vim version 5.7a. Last change: 2000 Jan 10 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Vimへのイントロダクション *ref* *reference* + +1. イントロダクション |intro| +2. インターネット上でのVim |internet| +3. クレジット |credits| +4. 表記法 |notation| +5. モードの入門 |vim-modes-intro| +6. モードの切り替え |mode-switching| +7. ウィンドウの表示内容 |window-contents| + +============================================================================== +1. イントロダクション *intro* + +Vim の名はVi IMprovedから来ています。それはかつてはVi IMitationであったもので +すが、とてもたくさんの改良点があることを考えれば、名称の変更は適切でしょう。 +VimはUNIXのプログラム"Vi"のほとんどのコマンドを含み、さらに多くのコマンドをサ +ポートするテキストエディタです。Vimはプログラムの編集やその他の8ビットアスキー +コードによるテキストの編集にたいへん役立ちます。全てのコマンドはキーボードから +与えることができます。このことによって、あなたは指をキーボードから、視点をスク +リーンから離さずにいることができます。ただ、もし望むのなら、マウスをサポートし +ますし、スクロールバーとメニューを持つGUIをサポートするバージョンもあります。 +(|gui.txt|を参照) + +このマニュアルの要約は"help.txt"にあります。|help.txt| Vimからは、<Help>か<F1> +キー、あるいは|:help|コマンドからアクセスできます(バーも引用符もなしで、単に +:helpと打つだけです)。ヘルプがデフォルトの位置に無い場合には、ヘルプファイルの +名前には、'helpfile'オプションが設定できます。タグによって項目にジャンプするこ +ともできます。項目にジャンプするためにはカーソルを合わせてCTRL-]、戻るためには +CTRL-Tを打ちます。 + +このマニュアルを通して、ViとVimの相違点は次のように中カッコの中で述べられます。 +{Viにはオンラインヘルプはありません}。VimとViの相違点についての要約は +|vi_diff.txt|を参照。 + +このマニュアルは様々なマシン上のVimについて触れています。違うコンピュータ、端 +末の間では、Vimにちょっとした違いがあります。さらなる注意はこの文書の中で与え +られています。それぞれのシステムのために個別の文書があります。 |sys-file-list| +を参照。 + +このマニュアルは全てのVimのコマンドとオプションのリファレンスです。ViやVimの使 +い方に関するイントロダクションではありません(それを入れるとあちこちで説明が込 +み入ってしまうので)。初心者のためには、実習|tutor|があります。好みに合わせて設 +定したり、Vimスクリプトを書くときには|vimrc-intro|を参照して下さい。 + +初心者のための内容を含んだViの本はたくさん出ています。"Learning the Vi editer" +(Linda Lamb、Arnold Robbins著、オライリー刊)がお薦めです。第6判にはVimに関する +章があります。ISBN:1-56592-426-6。他にドイツ語版があります。 + +============================================================================== +2. インターネット上でのVim *internet* + + *www* *faq* *FAQ* *ftp* *distribution* *download* +VimのページにはVimについての最新情報が載っています。最新バージョンのVimへのリ +ンクもあります。FAQはよく尋ねられる質問に対する回答集です。問題があったらまず +これを読むとよいでしょう。 + + VIMホームページ : http://www.vim.org/ + 最新ニュース : http://www.vim.org/news.html + VIM FAQ : http://www.vim.org/faq/ + ダウンロード : ftp://ftp.vim.org/pub/vim/MIRRORS + + +Usenet のVimに関する討論は: *news* *usenet* + comp.editors +http://www.vim.org/usenet.html を参照。このグループは、他のエディタのための物 +でもあります。Vim について書く場合は、その旨明記するのを忘れないでください。 + + *mail-list* *maillist* +Vimには5つのメーリングリストがあります。 +<vim@vim.org> + 現行バージョンのVimの使い方に関する議論: 使いやすいマッピング、質問、 + 回答、特定のバージョンはどこで手に入るかなど。 +<vim-dev@vim.org> *vim-dev* *vimdev* + Vimを変えていくための議論: 新しい機能、移植、パッチ、ベータテストバー + ジョンなど。 +<vim-announce@vim.org> *vim-announce* + Vimの新バージョンに関するアナウンス: ベータテストバージョンや異なるシ + ステムへの移植の話題もここ。 +<vim-multibyte@vim.org> *vim-multibyte* + Vimの多バイト機能の使用、改良に関する議論。 +<vim-mac@vim.org> *vim-mac* + Vimのマッキントッシュバージョンの使用、改良に関する議論。 + +http://www.vim.org/mail.html を参照。 + +注意: +- メーリングリストに投稿するにはそのリストに記名する必要があります! +- 投稿するときは記名したときと同じ場所からでなければなりません(スパムメールを + 避けるため)。 +- 最大メッセージサイズは40000文字までです。 + + *subscribe-maillist* +もし加わりたいと思ったら、次の場所へメールを送って下さい。 + <vim-help@vim.org> +あなたの"From:"のアドレスが正しいことを確認しましょう。次にリストサーバーが記 +名の仕方についてヘルプを送ります。 + +メールリストのソフトウェアから過去のメッセージとそれらの索引を得ることができま +す。そのやり方はvim-helpに指示があります。 + +アーカイブの場所: *maillist-archive* +http://www.egroups.com/group/vim +http://www.egroups.com/group/vimdev +http://www.egroups.com/group/vimannounce +http://www.egroups.com/group/vim-multibyte +http://www.egroups.com/group/vim-mac + +別のアーカイブが http://www.somelist.com の "Editeurs" セクションにあります(フ +ランス語のサイトです。メッセージは英語です)。 + +メーリングリストの追加: + +<vim-fr@club.voila.fr> *french-maillist* + Vimのフランス語のメーリングリスト。記名は、 + <vim-fr-subscribe@club.voila.fr> + にメールを送ってください。 + または http://www.egroups.com/group/vim-fr を参照して下さい。 + + +バグレポート: *bugs* *bug-reports* *bugreport.vim* + Bram Moolenaar <Bram@vim.org> +簡潔にお願いします; メールに回答する時間は、その分Vimを改良する時間を減らしま +す! 再現可能な例をつけて、どこの設定が(あるいは機能が)バグの発生に影響している +かを見つけてみてください。できることなら違うマシンでも試してみて下さい。そして、 +もし可能ならパッチを私に送って下さい。 (本家へのリポートは英語でお願いします。) + +バグの疑いがあるときは、次のコマンドを使って下さい: +> :so $VIMRUNTIME/bugreport.vim +このコマンドはカレントディレクトリにあなたの環境に関する多くの情報を持った +"bugreport.txt"というファイルを作ります。このファイルを送る前に、そこにいかな +る秘密の情報も含まれていないことを確認してください! + + *debug* +Vimがテストファイルの内のひとつでクラッシュしたとき、もしあなたがコンパイルに +gccを用いているなら、Vimがどこでクラッシュしたかを完全に調べることができます: + +1. Vimを"-g"オプションでコンパイル(Makefileにこのための行があるので、コメント + アウトしてください)。 + +2. 次のコマンドを実行 ("11"を失敗したテストファイルを置き換えて): +> cd testdir +> gdb ../vim +> run -u vimrc.unix -U NONE -s dotest.in test11.in + +3. Vimがどこでクラッシュしたか確認。gdbがメッセージを出すでしょう。 + +4. 次のコマンド実行して、gdbでスタックトレースを得る: +> where + 違う場所のスタックとレースは次のようにしてチェックできる: +> frame 3 + "3"はスタックトレースの内の番号と置き換えて下さい。 + + *year-2000* *Y2K* +Vimは内部的に編集に日付を使っていませんので、2000年問題はありません。Vimは +1970年1月1日(正午)からの秒形式での時間を使っています。この時間は、編集されたファ +イルとスワップファイルのタイムスタンプのチェックに使われますが、それは致命的な +問題を起こさず、ただ警告のメッセージを発するのみです。 + +しかし、32bit整数で秒があふれてしまう2038年問題はあるかもしれません。この問題 +は、コンパイラ、ライブラリ、オペレーティングシステムに依存します。time_t、 +ctime()関数が使われているときは特にそうです。time_tはスワップファイル内に4バイ +トで格納されます。しかし、これはファイルの回復時にファイルの日付、時間を求める +ためにのみ使われるので、通常の編集作業には決して影響しません。 + +Vimのstrftime()関数はstrftime()システムコールを直接使います。localtime()は +time()システムコールを、getftime()はstat()システムコールで返される時間をそれぞ +れ使用します。あなたのシステムライブラリが2000年対応ならば、Vimもそうです。 + +ユーザは外部コマンドを使用するVimスクリプトを作るかもしれません。このことが +Y2K問題を招くかもしれませんが、Vimそれ自身の問題ではありません。 + +============================================================================== +3. クレジット *credits* *author* + +Vimの大部分はBram Moolenaar<Bram@vim.org>の手によるものです。 + +ドキュメントの一部は以下の方々によって書かれたViのマニュアルによります: + W.N. Joy + Alan P.W. Hewett + Mark Horton + +Vim エディタはStevieをベースにしており、以下に書かれた人々の手になるソフトウェ +ア(のアイディア)も参考にしています。他の人々は私に意見やパッチを送ってくれたり、 +Vimの良い点、悪い点に関するフィードバックをしてくれました。 + +これらの人々の協力なくして、Vimは現在の姿にはならなかったことでしょう! + + Ron Aaron Win32 GUIに関する変更 + Dany St-Amant Macintosh 移植 + Tony Andrews Stevie + Gert van Antwerpen MS-DOS上のDJGPPに関する変更 + Berkeley DB(3) スワップファイルの実装に関するアイディア + Keith Bostic Nvi + Ralf Brown MS-DOS用のSPAWNOライブラリ + Robert Colon 多くの役立つアドバイス + Marcin Dalecki GTK+ GUIへの移植、ツールバーのアイコン + Kayhan Demirel ウガンダのニュースを送ってくれた + Chris & John Downey xvi (マルチウィンドウバージョンのアイディア) + Henk Elbers 最初のVMSへの移植 + Eric Fischer Macへの移植、'cindent'、その他の改良 + Bill Foster Athena GUIへの移植 + Loic Grenie xvim (マルチウィンドウバージョンのアイディア) + Sven Guckes Vim WWWページの管理 + Darren Hiebert Exuberant ctags + Bruce Hunsaker VMSへの移植版の改良 + Andy Kahn Cscopeサポート、GTK+ GUIへの移植 + Steve Kirkendall Elvis + Roger Knobbe オリジナルのWindows NTへの移植 + Sergey Laskavy モスクワからのVimのヘルプ + Felix von Leitner Vimメーリングリストの管理 + David Leonard UnixへのPython拡張の移植 + Avner Lottem ウィンドウでの右から左への編集 + Flemming Madsen さまざまな機能とパッチ + MicroSoft VimをコンパイルするDevStudioの提供 + Paul Moore Pythonインターフェイス拡張 + Katsuhito Nagano マルチバイトバージョンに関する作業 + Sung-Hyun Nam マルチバイトバージョンに関する作業 + Vince Negri Win32 GUIと一般的なコンソールの拡張 + George V. Reilly Win32移植、Win32 GUIへの移植を始める + Stephen Riehm バグ収集家 + Stefan Roemer さまざまなパッチとユーザへのヘルプ + Olaf Seibert DICEとBeBoxバージョン、regexpの改良 + Mortaza Shiran Farsiのパッチ + Peter da Silva termlib + Paul Slootman OS/2への移植 + Henry Spencer 正規表現に関して + Tim Thompson Stevie + G. R. (Fred) Walter Stevie + Sven Verdoolaege Perlインターフェイス + Robert Webb コマンドライン補完、GUIバージョン、そして + 多くのパッチ + Ingo Wilken Tclインターフェイス + Juergen Weigert Latticeバージョン、AUXの改良、UNIXとMS-DOSへ + の移植、autoconf + Stefan 'Sec' Zehl vim.orgの管理 + +バグレポートや提案を送ってくれた人々に感謝します。あまりにたくさんなので、ここ +で彼らの名前について触れることはできませんが。これらの人々のアイディアがなけれ +ば、Vimは今のVimにはならなかったことでしょう: 彼らがVimを生かしつづけたのです! + + +この文書には他のバ-ジョンのViに対するいくつかの参照があります。: + *Vi* +Vi "オリジナル"。特に注意しなければSun OS 4.xのバージョンのViを指す。 + ":version"は"Version 3.7, 6/7/85"を返す。時として別のバージョンにも触 + れることがある。Unix上でのみ動く。ソースコードはライセンスによってのみ + 利用可能。Viについての更なる情報は、以下の場所から得られる: + http://www.vim.org + *Posix* +Posix IEEE standard 1003.2, Part 2: Shell and utilitiesより。 + 一般に"Posix"として知られる。これは、Viはどのように機能すべきかという + 文書である。バージョンは1996年初めの草稿からとられているため、すべての + 注意はこれに"従うことが期待される"。別にどこを変更しても構わないのだ + が... + *Nvi* +Nvi "New" Vi。バージョンはBSD 4.4のものと、多くのフリーUnixのもの。使われ + ているのはバージョン1.79。":version"は"Version 1.79 (10/23/96)"を返す。 + ソースコードはフリーで使用できる。 + *Elvis* +Elvis 別のViクローン、Steve Kirkendallの手による。使われているのはバージョン + 2.1で、これは最新の公式リリース。ソースコードはフリーに使用できる。 + +============================================================================== +4. 表記法 *notation* + +この文章を読むとき、文法ハイライトが使用されていると、協調されるように打ち込ま +れたテキストは、特別なグループとしてハイライトされます。それらは[]、{}、<>、 +CTRL-Xで囲まれた項目です。 + +[] 角括弧で囲まれた文字は省略可能。 + + *count* *[count]* +[count] コマンドの前に置いて、そのコマンドを繰り返させたり、反復させる + ための省略可能な数字。与えられなかった場合、特に注意が無ければ + 1が与えられたものとする。このマニュアルでは、[count]はコマンド + の記述に書かれておらず、解説においてのみ書かれていることを注意 + しておく。これはコマンドを調べやすくするためである。'showcmd' + オプションが有効だと、(部分的に)入力されたカウントがウィンドウ + の下の方に表示される。最後の数字を削除するために、<Del>を使う + ことが出来る。(|N<Del>|) + + *[quotex]* +["x] テキストを保管できる場所を指す任意のレジスタ。|registers|を参 + 照。xは'a'から'z'、'A'から'Z'、または'"'、場合によっては(put + コマンドで使うとき)、'0'から'9'、'%'、'#'、':'、または'.'の内 + の1文字。大文字と小文字は同じレジスタを指すが、小文字が以前の + レジスタの内容を上書きするのに対し、大文字は以前のレジスタの内 + 容に追加する。""x"なしの場合、あるいは""""とした場合には、テキ + ストは名前なしのレジスタに入れられる。 + + *{}* +{} 中括弧は入力されるべきコマンドの部分を示すが、違った値も取るこ + とができるときに使われる。VimとViの違いも中括弧を用いて表され + る(これは文脈から明らかにわかる)。 + + *{char1-char2}* +{char1-char2} char1からchar2の範囲の一文字。例えば: {a-z}は小文字一文字。 + 複数範囲は結合可能。例えば、{a-zA-Z0-9}はアルファベット、数字 + 文字の内のどれか。 + + *{motion}* +{motion} カーソル移動コマンド。これらは、|motion.txt| で説明されていま + す。例: + w 次の単語の最初に移動 + 4j 4行下に移動 + /The<CR> つぎの "The" が、ある場所に移動 + これは演算コマンド|operator|の後で、演算を受けるテキストを選択 + するため使われる。 + 移動コマンドがカウントを含み、演算コマンドもカウントを含むとき + は、2つのカウントが掛け合わされる。例えば: "2d3w"は6単語を削除 + する。移動はマウスのクリックでもできる。マウスは今のところMS-D + OS、Win32、GPM付きLinuxコンソール、Unix上のxtermでのみサポート + されている。":omap"コマンドは、演算子が未解決のときキャラクタ + をマップするために使うことができる。 + + *{Visual}* +{Visual} 選択されたテキストの範囲。"v"、"V"、またはCTRL-Vコマンドで始ま + ります。それからカーソル移動コマンドをもちいて選択範囲の終わり + を変更することができます。演算コマンド|operator|の前に使われ、 + 演算を受けるテキストをハイライト強調する。|Visual-mode|を参照。 + + *<character>* +<character> 後で示す表の、省略可能な修飾子を伴うスペシャルキャラクタ1文字、 + または省略可能な修飾子を伴うASCIIキャラクタ1文字。 + + *'character'* +'c' ASCIIキャラクタ1文字。 + + *CTRL-{char}* +CTRL-{char} コントロールキャラクタとして打ち込まれた{char}; すなわち、 + CTRLキーを押しながら{char}をタイプしたもの。{char}の大文字 + 小文字の違いは区別されない; よってCTRL-AとCTRL-aは等価とな + る。しかし、ある端末ではSHIFTキーが別のコードを生成すること + があるため、シフトは使うべきでない。 + + *'option'* +'option' 値に設定できるオプション、引数は引用符で囲まれる。|options| + を参照。 + + *quotecommandquote* +"command" 入力することのできるコマンドへの参照は2重引用符で囲まれる。 + + *key-notation* *key-codes* *keycodes* +このドキュメントで使われているキーに対する名前。これらは":map"コマンドにおい +ても使われる。 + +表記 意味 等価表現 10進値 値 ~ +----------------------------------------------------------------------- +<Nul> ゼロ CTRL-@ 0 (10として保存) *<Nul>* +<BS> バックスペース CTRL-H 8 *backspace* +<Tab> タブ CTRL-I 9 *tab* *Tab* + *linefeed* +<NL> 復帰 CTRL-J 10 (<Nul>に使用) +<FF> フォームフィード CTRL-L 12 *formfeed* +<CR> 改行 CTRL-M 13 *carriage-return* +<Enter> <CR>と同じ *<Enter>* +<Esc> エスケープ CTRL-[ 27 *escape* *<Esc>* +<Space> スペース 32 *space* +<lt> 小なり(less-than) < 60 *<lt>* +<Bslash> バックスラッシュ \ 92 *backslash* *<Bslash>* +<Bar> 垂直バー | 124 *<Bar>* +<Del> 削除 127 + +<EOL> 行の終端 (<CR>、<LF>、または<CR><LF>であり得る。 + システムと'fileformat'による) *<EOL>* + +<Up> 上カーソル *cursor-up* *cursor_up* +<Down> 下カーソル *cursor-down* *cursor_down* +<Left> 左カーソル *cursor-left* *cursor_left* +<Right> 右カーソル *cursor-right* *cursor_right* +<S-Up> シフト + 上カーソル +<S-Down> シフト + 下カーソル +<S-Left> シフト + 左カーソル +<S-Right> シフト + 右カーソル +<C-Left> コントロール + 上カーソル +<C-Right> コントロール + 上カーソル +<F1> - <F12> ファンクションキー1から12 *function_key* *function-key* +<S-F1> - <S-F12> シフト + ファンクションキー1から12 + *<S-F1>* +<Help> ヘルプキー +<Undo> アンドゥキー +<Insert> 挿入キー +<Home> ホーム *home* +<End> エンド *end* +<PageUp> ページアップ *page_up* *page-up* +<PageDown> ページダウン *page_down* *page-down* +<kHome> テンキーのホーム(左上) *keypad-home* +<kEnd> テンキーのエンド(左下) *keypad-end* +<kPageUp> テンキーのページアップ(右上) *keypad-page-up* +<kPageDown> テンキーのページダウン(右下) *keypad-page-down* +<kPlus> テンキーの+ *keypad-plus* +<kMinus> テンキーの- *keypad-minus* +<kMultiply> テンキーの * *keypad-multiply* +<kDivide> テンキーの / *keypad-divide* +<kEnter> テンキーの Enter *keypad-enter* +<S-...> シフトキー *shift* +<C-...> コントロールキー *control* *ctrl* +<M-...> altまたはmetaキー *meta* *alt* +<t_xx> termcapで"xx"エントリを持つキー +----------------------------------------------------------------------- + +注意: シフトされたカーソルキー、ヘルプキー、アンドゥキーは数少ない端末でのみ +使えます。Amiga上では、シフトされたファンクションキー10はキーシーケンスに使わ +れるコード(CSI)を生成します。これは他のキーをタイプした後でのみ認識されます。 + +注意: 削除キーには2つのコードがあります。127は削除キーの10進ASCII値で、これは +常に認識されます。削除キーによっては別の値を送りますが、これはtermcapエントリ +の"kD"から得られる値です。どちらも同じ効果をもちます。|:fixdel|も参照してくだ +さい。 + +注意: テンキーのキーは、"普通"のキーと同じものとして使われます。例えば、<kHome> +は<Home>と同じ効果を持ちます。もしテンキーのキーが、テンキーでないそれと等価な +キーと同じキーコードをそのままで送るなら、それはテンキーでないコードとして認識 +されます。例えば、<kHome>が<Home>と同じキーコードを送るなら、<kHome>が押された +ときVimは<Home>が押されたと受け取ります。それゆえ、<kHome>へのマッピングは機能 +しません。 + + *<>* +例はしばしば<>の表記で与えられます。ときとしてこれは、あなたが何をタイプすべ +きかを明確にするだけということがありますが、たいていの場合、文字通り打つことが +できます。例、":map"コマンドと共に使われるときがそうです。その規則は: + 1. 出力可能な文字は、バックスラッシュと'<'を除いてそのまま打てる。 + 2. バックスラッシュはダブルバックスラッシュ"\\"、または"<Bslash>"で表される。 + 3. 実際の'<'は"\<"、または"<lt>"で表される。混乱を招く恐れがなければ、'<'は + そのまま使われる。 + 4. "<key>"はスペシャルキーを打つことを示す。これは上記の表で説明された表記で + ある。少々の例をあげる: + <Esc> エスケープキー + <C-G> CTRL-G + <Up> 上カーソルキー + <C-LeftMouse> コントロール + 左マウスクリック + <S-F11> シフト + ファンクションキー11 + <M-a> Meta + a ('a' with bit 8 set) + <M-A> Meta + A ('A' with bit 8 set) + <t_kd> "kd" termcapエントリ(下カーソルキー) + +もしVimで完全に<>の表記を使いたければ、'cpoptions'から'<'フラグを除く必要があ +ります('compatible'がセットされていない場合、デフォルトでそうなっています)。 +> :set cpo-=< +<>の表記には、キー名の特別な意味を避けるため<lt>を使います。バックスラッシュ +を使った方法も機能しますが、'cpoptions'が'B'フラグを含んでいないときだけです。 + +マッピングにおいて<Home>を文字通り使う場合の例です: +> :imap <C-H> \<Home> +> :imap <C-H> <lt>Home> +最初のものは'B'フラグが'cpoptions'に含まれていない場合のみ機能します。2番目の +ものは常に機能します。 +マッピングにおいて"<lt>"を文字通り得るためには: +> :map <C-L> <lt>lt> + +マッピング、略語補完、メニューコマンドについては、例をコピー&ペーストして、そ +のまま使うことができます。あるいは、'<'と'>'のキャラクタを含んでいたとしても、 +それらを文字通りに打つことができます。これは他のコマンド、":set"、":autocmd" +などのようなものでは機能しません! + +============================================================================== +5. モードの入門 *vim-modes-intro* *vim-modes* + +Vimは6つの基本モードを持っています: + + *Normal* *Normal-mode* *command-mode* +ノーマルモード ノーマルモードでは普通の編集コマンドを全て入力でき + ます。エディタをスタートするとこのモードに入ります + ('insertmode'オプションを設定していない限り。以下を + 参照)。これはコマンドモードとも呼ばれます。 + +ビジュアルモード これはノーマルモードのようですが、移動コマンドがハイ + ライト領域を広げます。非移動コマンドを使うと、ハイラ + イト領域に対して実行されます。|Visual-mode|を参照。 + 'showmode'オプションがオンなら、"-- VISUAL --"がウィ + ンドウの最下部に表示されます。 + +選択モード これは、MS-Windowsの選択モードによく似ています。出力 + 可能な文字が打ち込まれると、選択範囲を削除し、挿入モ + ードに入ります。|Select-mode|を参照。'showmode'オプ + ションがオンなら、"-- SELECT --"がウィンドウの最下部 + に表示されます。 + +挿入モード 挿入モードでは、タイプされたテキストはバッファに挿入 + されます。|Insert-mode|を参照。'showmode'オプションが + オンなら、"-- INSERT --"がウィンドウの最下部に表示さ + れます。 + +コマンド行モード コマンド行モード(Cmdline modeともいう)では、ウィンド +Cmdline mode ウの下部に1行のテキストを入力できる。これはExコマンド、 + ":"、パターン検索コマンド、"?"、"/"、そしてフィルタコ + マンド、"!"で使用する。|Cmdline-mode|を参照。 + +Exモード コマンド行モードに似ているが、コマンド入力後もExモー + ドに留まる。コマンドラインでの、非常に制限された編集 + 作業となる。|Ex-mode|を参照。 + +さらに追加として5つのモードがある: + + *Operator-pending* *Operator-pending-mode* +演算子未解決モード ノーマルモードに似ているが、演算子コマンドが開始され、 + Vimは{motion}により演算子適用範囲が決定するのを待って + いる状態にある。 + +置換モード 置換モードは挿入モードの特殊な場合を指す。挿入モード + と同様のことができるが、1文字入力するごとに、現存して + いるテキストの文字が1つ削除される。|Replace-mode|を + 参照。 + 'showmode'オプションがONになら、"-- REPLACE --"が + ウィンドウの最下部に表示される。 + +挿入ノーマルモード 挿入モードでCTRL-Oが与えられたとき、このモードに入る。 + ノーマルモードに似ているが、コマンドが実行された後、 + 挿入モードに戻る。 + 'showmode'オプションがONになら、"-- (insert) --"が + ウィンドウの最下部に表示される。 + +挿入ビジュアルモード 挿入モードでビジュアル選択を開始したとき、このモード + に入る。ビジュアル選択が終了したとき、Vimは挿入モード + に戻る。 + 'showmode'オプションがONになら、"-- (insert) VISUAL --" + がウィンドウの最下部に表示される。 + +挿入選択モード 挿入モードで選択モードを開始したとき、このモードに入る。 + 選択モードが終了すると、Vimは挿入モードに戻る。 + 'showmode'オプションがONになら、"-- (insert) SELECT --" + がウィンドウの最下部に表示される。 +============================================================================== +6. モードの切り替え *mode-switching* + +何らかの理由で自分が何のモードにいるのかわからなくなったとき、<Esc>を2度押す +ことで常にノーマルモードに戻ることができます。ノーマルモードに戻ったことを、 +<Esc>を押したときのスクリーンフラッシュ、またはベルの音で知ることができます。 +ただしExモードでは機能しませんので、":visual"を使ってください。 + + *i_esc* + TO mode ~ + Normal Visual Select Insert Replace Cmd-line Ex ~ +FROM mode ~ +ノーマル v V ^V *4 *1 R : / ? ! Q +ビジュアル *2 ^G c C -- : -- +選択 *5 ^O ^G *6 -- : -- +挿入 <Esc> -- -- <Insert> -- -- +置換 <Esc> -- -- <Insert> -- -- +コマンド行 *3 -- -- :start -- -- +Ex :vi -- -- -- -- -- + +- 無効 +-- 不可 + +*1 ノーマルモードから挿入モードへは、コマンド"i"、"I"、"a"、"A"、"o"、"O"、 + "c"、"C"、"s"、または"S"で入る。 +*2 ビジュアルモードからノーマルモードへは非移動コマンドで入るが、このときコマ + ンドは実行される。<Esc>、"v"、"V"、または"CTRL-V"(|v_v|を参照)の入力ならば、 + 副作用なしにビジュアルモードから出られる。 +*3 コマンド行モードからノーマルモードへ移行するには: + - <CR>か<NL>を打つ、このとき入力されているコマンドは実行される。 + - 行の全てを削除し(例、CTRL-Uを使う)、最後に<BS>を入れる。 + - CTRL-Cまたは<Esc>を打つ、このとき入力されているコマンドは実行されずに終了 + する。 + 最後の場合では、<Esc>は'wildchar'オプションで定義された文字でもよい、このと + きコマンド行補完が始まる。それを無視し、<Esc>を再び打つ。{Vi: <Esc>を入力す + ると、コマンド行は実行される。これは多くの人にとって予期しない動作である; + そのためVimでは変更された。しかし、<Esc>がマッピングの一部であるような場合 + には、コマンド行は実行される。<Esc>を入力したときも、Viのように振舞ってほし + いときは、":cmap ^V<Esc> ^V^M"を使うとよい} +*4 ノーマルモードから選択モードに移行するときは: + - 'selectmode'が"mouse"を含んでいるならば、マウスでテキストを選択する。 + - シフトキーを押しながら非表示コマンドでカーソルを移動させる、このとき + 'selectmode'は"key"を含んでいる必要がある。 + - 'selectmode'が"cmd"を含んでいるなら、"v"、"V"または"CTRL-V"を使う。 +*5 選択モードからノーマルモードに移行するには、シフトキーを押さずに非表示コマ + ンドでカーソルを動かせばよい。 +*6 選択モードから挿入モードへ移行するには、表示される文字を打てばよい。選択範 + 囲は削除され、文字が挿入される。 + +'insertmode'オプションがオンのときは、編集作業は挿入モードで始まる。 + + *CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N* +付け加えて、コマンドCTRL-\ CTRL-N、あるいは<C-\><C-N>は、他のあらゆるモードか +らノーマルモードへ移行する。これでVimがノーマルモードであることを、<Esc>のとき +のようにビープ音を出さずに確認することができる。 + + + *Q* *mode-Ex* *Ex-mode* *Ex* *EX* +Q "Ex"モードに切り替える。これは":"コマンドを一つ一つ打 + ち込むようなものである。ただし: + - ":"を押したままでいる必要がない。 + - 画面は各コマンドごとに更新されない。 + - 普通のコマンド行編集はない + - マッピングと略語補完を使うことはできない。 + 実際には、それらの行は"標準の"行入力編集コマンド(削除 + に<Del>または<BS>、行削除にCTRL-Uを使用する)で編集され + る。 + Vimはコマンド行で"ex"が実行された場合、標準でこのモー + ドに入る。 + "Ex"モードを出るには、":vi"コマンド|:visual|を使う。 + 注意: 古い Version の Vim では "Q" がテキストを整形す + るコマンドでしたが、いまは |gq| になっています。 + +============================================================================== +7. ウィンドウ表示の内容 *window-contents* + +ノーマルモードと挿入/置換モードでは、画面のウィンドウが現在のバッファの内容を +示しています: つまり、見ているものが得られるもの(WYSIWYG)です。しかし、2つの +例外があります: +- 'cpoption'オプションが'$'を含んでいて、変更が一行以内であるとき、テキストは + 直接削除されず、'$'が最後に削除された文字の位置に置かれます。 +- 一方のウィンドウでテキストを挿入しているとき、もう一方のウィンドウの同じテキ + ストは、挿入が終了するまで更新されません。 +{Vi: 遅い端末では画面が常に更新されるとは限りません} + +ウィンドウの幅より長い行は、'wrap'オプション(下記参照)がオフでない限り、折り返 +されます。'linebreak'オプションを設定すると、空白文字で折り返すことができます。 + +ウィンドウ内でバッファの最終行より後ろに余白がある場合、Vimはウィンドウ内の余白 +行の始めに、以下のように'~'を表示します: + +> some line +> last line +> ~ +> ~ + +このように、'~'はバッファの最後に到達したことを示します。 + +ウィンドウの最終行が入りきらない場合、Vimはそのウィンドウの最終行に、次のように +'@'を表示してそれを示します: + +> first line +> second line +> @ +> @ + +このように、'@'はウィンドウに収まりきらない行があることを知らせます。 + +'display'オプションに"lastline"フラグが存在する場合、'@'はウィンドウの左側に +表示されません。最終行がウィンドウ内に完全に収まらない場合は、収まる部分のみが +表示され、最後の3文字が次のように"@@@"で置き換えられます: + +> first line +> second line +> a very long line that d +> oesn't fit in the wi@@@ + +長すぎてウィンドウに収まりきらない単一の行があるときは、特別な場合として扱わ +れます。Vimはカーソルのある場所付近の部分のみを表示します。特殊文字は表示され +ませんので、この行の全ての部分を編集することができます。 +{Vi: ウィンドウに収まらない行に対しては"内部エラー"を起こします} + +'highlight'オプションの'@'設定は、'@'と'~'文字に対して特別なハイライトを +セットするために使われます。これは、それらの文字をバッファにある本当の文字 +と区別するために使われます。 + +'showbreak'オプションには、折り返し行の先頭につける文字列を入れます。 + + *wrap-off* +'wrap'オプションがオフの場合、長い行は折り返されません。スクリーンに収まる +分だけが表示されます。カーソルが表示されていない部分に移動すると、スクリーン +は水平方向にスクロールします。この方法の利点は、縦の列がありのままに表示され +ること、スクリーンに収まらない行も編集できることです。欠点としては、一行の +全ての文字を一度に見ることができないことが挙げられます。'sidescroll'オプショ +ンにはスクロールできる縦列(コラム)の最小列を設定します。 +{Vi: 'wrap'オプションがありません} + +全ての普通のASCII文字はスクリーンに直接表示されます。<Tab>は、それが表現する +数のスペースに置き換えられます。他の非表示文字は、"^{char}"に置き換えられます、 +このとき{char}には、その非表示文字に64が足された文字が入ります。それゆえ、 +キャラクタ7(ベル文字)は"^G"で表されます。127から160までの文字は"~{char}"で置 +き換えられます、このとき{char}には、その文字から64が引かれた文字が入ります。 +これらの文字はスクリーンの1ポジション以上を占有します。カーソルはその最初の +1つにのみ置くことができます。 + +'number'オプションをセットしているとき、全ての行はその行番号を先頭に持ちます。 +Tip: 行番号を混ぜた行の折り返しをしたくないときは、'showbreak'オプションに8つ +のスペースをセットします: + ":set showbreak=\ \ \ \ \ \ \ \ " + +'list'オプションをセットしているとき、<Tab>文字はいくつかのスペースとしてでは +なく、"^I"として表されます。'$'が行の最後に置かれるので、行の最後についた空白 +を見つけることができます。 + +コマンドラインモードでは、コマンドラインのみが正しく表示されます。バッファの +内容の表示は、コマンドラインモードから抜けると同時に更新されます。 + +ウィンドウの最後の行はステータスやその他のメッセージのために使われます。ステ +ータスメッセージが使われるのは、オプションがオンのときのみです: + +status message option default Unix default ~ +現在のモード 'showmode' on on +コマンドの文字 'showcmd' on off +カーソルの位置 'ruler' off off + +現在のモードとは、"-- INSERT --"または"-- REPLACE --"のことです、|'showmode'| +を参照。コマンドの文字とは、打ち込まれた、まだ適用されていないコマンドのこと +です。{Vi: 打ち込んだ文字やカーソルの位置を表しません} + +遅い端末を使用しているのであれば、ステータスメッセージのをオフにすることで編 +集のスピードをアップすることができます: + :set nosc noru nosm + +エラーが起こったとき、エラーメッセージは少なくとも一秒間は表示されます(逆再生 +で)。{Vi: エラーメッセージは読む機会がないうちに他のメッセージに上書きされます} + +いくつかのコマンドは何行に作用するかを表示します。何行以上でこれを行うかは、 +'report'オプションでコントロールできます(デフォルト 2)。 + +Amiga上では、VimはCLIウィンドウで実行されます。Vimの名前と現在のファイル名の +完全パスはタイトルバーに表示されます。ウィンドウがリサイズされると、Vimは自動 +的にウィンドウを再描画します。ウィンドウは好きなだけ小さくできますが、小さすぎ +ると1行のみで収まりきらなくなります。最終行に現れるたいていのメッセージが読め +るように、最低でも40文字の幅を取ってください。 + +ほとんどのUNIXシステム上で、ウィンドウのリサイズはVimによって正しく認識、把握さ +れます。{Vi: できません} + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/map.jax b/ja/map.jax new file mode 100644 index 000000000..fd715cd1d --- /dev/null +++ b/ja/map.jax @@ -0,0 +1,779 @@ +COMMENT: キーマッピング +STATUS: finished 5.7a +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +MAINTEINER: 村岡太郎<koron@tka.att.ne.jp> + +*map.txt* For Vim version 5.7a. Last change: 2000 May 03 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +キー・マッピングと略語補完 + +1. キー・マッピング |key-mapping| +2. 略語補完 |abbreviations| +3. ユーザー定義コマンド |user-commands| + +============================================================================== +1. キー・マッピング *key-mapping* *mapping* *macro* + +新しいマッピングを作成したり、マッピングを削除したり、マッピングをリストするコ +マンドがあります。様々な形式の "map" とそれらのモードとの関係に関しては +|map-overview| をご覧下さい。 + +:map {lhs} {rhs} *:map* +:nm[ap] {lhs} {rhs} *:nm* *:nmap* +:vm[ap] {lhs} {rhs} *:vm* *:vmap* +:om[ap] {lhs} {rhs} *:om* *:omap* +:map! {lhs} {rhs} *:map!* +:im[ap] {lhs} {rhs} *:im* *:imap* +:cm[ap] {lhs} {rhs} *:cm* *:cmap* + マップコマンドを割り当てられてるモードで、キーの連続 + {lhs} を {rhs} にマップします。その結果は、{rhs} も含 + め、他のマッピングも調べられ、このことによりマッピング + のネストと再帰が可能になります。 + + +:no[remap] {lhs} {rhs} *:no* *:noremap* +:nn[oremap] {lhs} {rhs} *:nn* *:nnoremap* +:vn[oremap] {lhs} {rhs} *:vn* *:vnoremap* +:ono[remap] {lhs} {rhs} *:ono* *:onoremap* +:no[remap]! {lhs} {rhs} *:no!* *:noremap!* +:ino[remap] {lhs} {rhs} *:ino* *:inoremap* +:cno[remap] {lhs} {rhs} *:cno* *:cnoremap* + マップコマンドを割り当てられてるモードで、キーの連続 + {lhs} を {rhs} にマップします。{rhs} へのマッピングを禁 + 止することで、マッピングのネストと再帰を避けることがで + きます。1つのコマンドを再定義するときによく使われます。 + {Vi にはない機能です} + + +:unm[ap] {lhs} *:unm* *:unmap* +:nun[map] {lhs} *:nun* *:nunmap* +:vu[nmap] {lhs} *:vu* *:vunmap* +:ou[nmap] {lhs} *:ou* *:ounmap* +:unm[ap]! {lhs} *:unm!* *:unmap!* +:iu[nmap] {lhs} *:iu* *:iunmap* +:cu[nmap] {lhs} *:cu* *:cunmap* + マップコマンドを割り当てられてるモードで、{lhs} への + マッピングを削除します。他のモードに適用されるマッピン + グは残っています。 + 注意: 後ろにスペースがある場合、それも {lhs} の一部と見 + なされます。ですのでこのアンマップコマンドはうまくいき + ません: +> :map @@ foo +> :unmap @@ | print + +:mapc[lear] *:mapc* *:mapclear* +:nmapc[lear] *:nmapc* *:nmapclear* +:vmapc[lear] *:vmapc* *:vmapclear* +:omapc[lear] *:omapc* *:omapclear* +:mapc[lear]! *:mapc!* *:mapclear!* +:imapc[lear] *:imapc* *:imapclear* +:cmapc[lear] *:cmapc* *:cmapclear* + マップコマンドが割り当てられているモードでのすべてのマ + ッピングを削除します。{Vi にはない機能です} + 警告: デフォルトのマッピングも削除されます。 + +:map +:nm[ap] +:vm[ap] +:om[ap] +:map! +:im[ap] +:cm[ap] + マップコマンドを割り当てているモードでのすべてのマッピ + ングをリストします。":map" と ":map!" が一番よく使われ + ます。というのもこれらは他のモードのものも全て含むから + です。 + +:map {lhs} *:map_l* +:nm[ap] {lhs} *:nmap_l* +:vm[ap] {lhs} *:vmap_l* +:om[ap] {lhs} *:omap_l* +:map! {lhs} *:map_l!* +:im[ap] {lhs} *:imap_l* +:cm[ap] {lhs} *:cmap_l* + マップコマンドを割り当てているモードでの {lhs} で始まる + キーの連続へのキー・マッピングをリストします。 + {Vi にはない機能です} + +これらのコマンドは一つのキーもしくはキーの連続を文字列にマップするのに使われま +す。機能キーにコマンドの連続を割りつけることもできますし、1つのキーを他のキー +に変換することなどもできます。現在のマッピングを保存し、そして復元する方法につ +いては |:mkexrc| をご覧下さい。 + +マッピングには5つのセットがあります: +- ノーマルモード: コマンドをタイプする時 +- ビジュアルモード: ビジュアル範囲がハイライトされている間にコマンドを打つ時 +- 演算待ち状態モード: 演算コマンドはタイプされていて移動コマンドはまだタイプさ + れていない時 ("d", "y", "c", などの後)。 +- 挿入モード。これらは上書きモードでも使われます。 +- コマンドラインモード: ":" もしくは "/" コマンドを打った時 + +選択モードには専用のマッピングはありません。ビジュアルモードと同じものが使われ +ます。|Select-mode-mapping| + + *map-overview* *map-modes* +どのコマンドがどのモードで動作するかの要約: + + コマンド: モード: ~ + ノーマル ビジュアル 演算待ち状態 ~ +:map :noremap :unmap :mapclear X X X +:nmap :nnoremap :nunmap :nmapclear X . . +:vmap :vnoremap :vunmap :vmapclear . X . +:omap :onoremap :ounmap :omapclear . . X + + 挿入 コマンドライン ~ +:map! :noremap! :unmap! :mapclear! X X +:imap :inoremap :iunmap :imapclear X . +:cmap :cnoremap :cunmap :cmapclear . X + +オリジナルの Vi はノーマル/ビジュアル/演算待ち状態モードと挿入/コマンドライン +モードにそれぞれ分かれたマッピングは持っていませんでした。ですので、":map" と +":map!" コマンドはいくつかのモードに対してマッピングを設定したり表示させたり +するのです。Vim では ":nmap", ":vmap", ":omap", ":cmap", ":imap" コマンドを使 +うことでそれぞれのモードに分けてマッピングを設定することができます。 + +1つのマッピングをノーマルモードとビジュアルモードに設定し、かつ演算待ち状態モー +ドには設定しない場合は、始めに3つすべてのモードに対して定義してから演算待ち状 +態モードへのマッピングを外します。 + :map xx something-difficult + :ounmap xx +ビジュアルモードと演算待ち状態モードのみの場合や、ノーマルモードと演算待ち状態 +モードのみの場合も同様にします。 + + *map-listing* +マッピングをリストするときの始めの2桁にある文字は: + + CHAR MODE ~ + <Space> ノーマル、ビジュアル、演算待ち状態 + n ノーマル + v ビジュアル + o 演算待ち状態 + ! 挿入とコマンドライン + i 挿入 + c コマンドライン + +{rhs} の直前の "*" は再マップすることができないことを示します。 + +{lhs} の後の最初の非空白文字から、行末(もしくは '|')までのすべては、{rhs} の一 +部とみなされます。このことで {rhs} がスペースで終わることができるようになって +います。 + +メモ: ビジュアルモードでマッピングを使うときは、"'<" マークを使うことができま +す。これは現在のバッファーで最後に選択されたビジュアル範囲の最初です |'<|。 + + *map_backslash* +ここでは CTRL-V のみが、マッピングと略語での特殊な文字として触れられているとい +うことに注意してください。'cpoptions' が 'B' を含んでいない場合は、バックスラッ +シュも CTRL-V のように使うことができます。そうすると <> 表記を完全に使うことが +できます |<>|。しかし、"<C-V>" を CTRL-V のように後に続くものの特殊な意味をエ +スケープするような使い方はできません。 + +バックスラッシュにマップしたり、バックスラッシュをそのまま {rhs} に使いたい場 +合は、特別なシーケンス "<Bslash>" を使うことができます。これを使うことで、ネス +トしているマッピングを使うときにバックスラッシュを重ねる必要がなくなります。 + + *map_CTRL_C* +{lhs} に CTRL-C を使うことはできません。つまり CTRL-C にマップすることはできな +いのです。CTRL-C は常に動作中のコマンドを中止するのに使えなければならない、と +いうのが理由です。 + + *map_space_in_lhs* +{lhs} にスペースを含めるには CTRL-V を前置してください(それぞれのスペースの前 +で CTRL-V を2回タイプしてください)。 + *map_space_in_rhs* +もし {rhs} をスペースで始めたければ "<Space>" を使ってください。Vi との互換性 +を完全に保ちたい場合は |<>| 表記は使わないで、{rhs} の前に CTRL-V (CTRL-V を2 +回タイプする必要があります)を前置してください。 + *map_empty_rhs* +CTRL-V を1つだけ打ち込んだ後に(実際には2回 CTRL-V をタイプする必要があります) +何もタイプしないことで空の {rhs} を作ることもできます。残念ながら vimrc でこれ +をする方法はありません。 + *<Nop>* +何もしないマッピングを作るより簡単な方法は、"<Nop>" を {rhs} に使うことです。 +これは |<>| 表記を使えるようにしていると動作します。例えば、ファンクション・キー +8は何もしないようにしたい場合は: +> :map <F8> <Nop> +> :map! <F8> <Nop> + + *map-comments* +'"' 文字も {lhs} か {rhs} の一部と見なされるため、これらのコマンドの後ろにコメ +ントを挿入することはできません。 + + *map_bar* +'|' 文字はマップコマンドを次のコマンドと分けるのに使われますので、'|' を +{rhs} に含めるにはなにか特別なことをする必要があります。3つの方法があって: + use works when example ~ + <Bar> '<' が'cpoptions'になければ :map _l :!ls <Bar> more^M + \| 'b' が'cpoptions'になければ :map _l :!ls \| more^M + ^V| Vim と Vi で常に :map _l :!ls ^V| more^M + +(ここで ^V は CTRL-V を表します; 1つの CTRL-V を挿入するには2回 CTRL-V をタイ +プする必要があります; ここで <> 表記を使って "<C-V>" とすることはできません)。 + +'cpoptions' をデフォルトの設定で使っていると、これら3つ全てうまく動作します。 + +'b' が 'cpoptions' にあると、"\|" は '\' で終わるマッピングとそれから別のコマ +ンドが続いているとみなされます。これは Vi コンパチブルではありますが、他のコマ +ンドと比べるとあまり論理的ではありません。 + + *map_return* +マッピングに Ex コマンドを含める場合、その後にそれを実行するために行を終了させ +るものを挿入する必要があります。これには <CR> を使うことが推奨されています(参 +照 |<>|)。例: +> :map _ls :!ls -l %<CR>:echo "the end"<CR> + +挿入もしくはコマンドラインモードで文字列へののマッピングを避けるには、始めに + CTRL-V をタイプしてください。'paste' オプションがオンになっていると挿入モード +でのマッピングは解除されます。 + +エラーが起きた場合は(エラーメッセージが出ます)、その後のマッピングは実行されな +いということに注意してください。これは Vi コンパチブルです。 + +azZtTfF[]rm'`"v と CTRL-X コマンドの次の文字(引数)には、マップされていないとい +うことを覚えておいてください。これは、すでにそのコマンドが同じ名前でマップされ +ていても、すべての名前付きレジスターとマークを使えるようにするために行われまし +た。 + + *map-which-keys* +なにかマップしようとしているときに、{lhs} にどのキーを使うかを選択する必要があ +ります。Vim コマンドで使われているキーは避けるようにする必要がありますし、そう +しないとそれらのコマンドを使うことができなくなります。そこでいくつかの提案とし +ては: +- ファンクション・キー <F2>, <F3> など。またShift+ファンクション・キー <S-F1>, + <S-F2> など。 <F1>は既にヘルプコマンド用に使われていることも注意してください。 +- Metaキー(ALTキーを押しながら)。 +- "_" か "," 文字とそれに続く文字を使う。"_" と "," コマンドはすでにVimには存 + 在していますが(参照|_|)、たぶん使うことはないでしょう。 +- 他のコマンドと同じ用途のキーを使う。例えば: CTRL-PとCTRL-N。もっとマッピング + をするためには、余分な文字を使います。 + + *map-examples* +いくつかの例(そのままタイプする形です。"<CR>" はそのまま4文字をタイプします; +この表記を使うには 'cpoptions' に '<' フラグがあってはいけません。 + +> :map <F3> o#include +> :map <M-g> /foo<CR>cwbar<Esc> +> :map _x d/END/e<CR> +> :map! qq quadrillion questions + + *map-typing* +Vim はマップされているシーケンスの最初とタイプされた文字を比較します。途中まで +マッチしているものが見つかれば、完全にマッチするかマッチするものがなくなるまで、 +さらにタイプされる文字を待ちます。例えば: "qq" に map! していると、最初にタイ +プした 'q' は、次の文字をタイプするまでスクリーンには表示されません。なぜなら、 +Vim は次にタイプされる文字が 'q' であるかそうでないかは知ることができないから +です。'timeout' オプションがオンになっていると(デフォルトでオンです)、Vim は1 +秒間だけ待ちます(もしくは 'timeoutlen' オプションで指定されている長さだけ)。そ +の後に、'q' はそのものを意味するのだとみなします。もしタイプする速さが遅かった +り、システム自体が遅い場合は 'timeout' オプションを外してください。それから +'ttimeout' オプションもセットしておきたいかもしれません。 + + *map-keys-fails* +ある状況では、キーコードが認識されないこともありえます: +- Vimがキーコードを部分的にしか読めない。たいていの場合、これは最初の文字だ + けです。一部のバージョンのUnixのxtermで起こります。 +- 文字(列)のあとのマップされたキーコードがある。例、"<F1><F1>"あるいは"g<F1>"。 +この状況においてはキーコードは認識されず、マッピングは失敗します。 +この問題を避けるには、2つの方法があります: +- 'cpoptions'から'K'フラグを除く。これで、Vimはファンクションキーの残りの文字 + 列を待つようになります。 +- <F1>から<F4>によって生成される実際のキーコードを使っているとき、<xF1>から + <xF4>に一致しているかもしれません。<xF1>から<F1>へ、<xF2>から<F2>へ、などの + マッピングが存在しますが、これらはマッピングのもう半分のあとでは認識されませ + ん。<F1>から<F4>のキーコードが正しいことを確認してください: +> :set <F1>=<type CTRL-V><type F1> + <F1>を4文字としてタイプします。"="の後の部分は文字通りにではなく、実際のキー + を打ち込んでください。 +別の解決法は、第2の特殊キーへのマッピングで実際のキーコードを使うことです: +> :map <F1><Esc>OP :echo "yes"<CR> +本物の<Esc>をタイプしないこと。Vimはキーコードを認識して無条件に<F1>と置き換え +てしまいます。 + + *recursive_mapping* +{rhs} の中に {lhs} を含める場合は、再帰的なマッピングを使うことができます。 +{lhs} がタイプされると、{rhs} に置き換えられます。{rhs} の中に {lhs} があらわ +れるとそれも置き換えられ、...。このことでコマンドを無限の回数繰り返すことがで +きます。エラーを生じさせないと止めることができないのが唯一の問題です。1つだけ +例外があります: {rhs} が {lhs} で始まっていると、始めの文字が再帰的にマップさ +れることはありません(これは Vi 互換です)。 +例えば: +> :map ab abcd +は "a" コマンドを実行して "bcd" をテキストに挿入します。{rhs} の中の "ab" は再 +帰的にマップされることはありません。 + +2つのキーの意味を入れ換えたければ :noremap コマンドを使ってください。例えば: +> :noremap k j +> :noremap j k +これは、カーソルの上下移動のコマンドを入れ換えます。 + +普通の :map コマンドで、'remap' オプションがオンになっていると、{lhs} の一部で +はないテキストが見つかるまでマッピングは起こります。例えば、次のようにしている +と: +> :map x y +> :map y x +Vim はまず x を y で置き換え、それから y を x で置き換え、...。これが +'maxmapdepth' 回数起こると、Vim は "recursive mapping" というエラーメッセージ +を表示します。 + +"index" ファイルを見て使われていないキーを探し、それらを使って実装されている機 +能を失うことなくマップすることができます。ファンクション・キーとメタキーを使うこ +とを勧めます。もし、ほとんど使わないコマンドは失ってもいいと思うなら、"_" もし +くは "-" で始まるマッピングを作ってもよいでしょう。また ":help {key}^D" とする +ことで、キーがなんらかのコマンドで使われているかどうか調べることもできます。 +({key}は探したいキーを指定し、^D はCTRL-Dです)。 + +マップされるシーケンスにアンドゥコマンドを含めたとすると、これはテキストをマク +ロが実行される前の状態に戻すことになります。マップされるシーケンスにアンドゥコ +マンドを1個のみ含める限り、このことはオリジナルの Vi 互換です(オリジナルの Vi +でアンドゥコマンドを2つ、マップされるシーケンスに含めても意味がありません。始 +めのアンドゥを実行する前のテキストの状態に戻るだけです)。 + +特殊なキーをマップに含めるのには、3つの方法があります: +1. Vi 互換の方法: キーコードをマップします。これは <Esc> で始まるシーケンスで + あることがよくあります。このようなマッピングを挿入するには、まず ":map " と + タイプしてから、機能キーを押す前に CTRL-V をタイプする必要があります。もし、 + そのキーのキーコードが termcap (t_options) にあれば、自動的に内部コードの形 + 式に変換され、二番目のような方法のマッピングになります('k' フラグが + 'cpoptions' に含められていない限り)。 +2. 2番目の方法は機能キーの内部コードを使う方法です。そうしたマッピングを挿入す + るには、まず CTRL-K を押してから機能キーを押してください。もしくは "#1", + "#2", .. "#9", "#0", "<Up>", "<S-Down>", "<S-F7>", などの形式を使ってくださ + い。(参照: キーの表 |key-notation|。<Up> からのすべてのキーを使うことができ + ます)。始めの10個のファンクション・キーは2つの方法で定義できます: "#2" のよ + うな番号だけの方法と、"<F>" と共に "<F2>" のように指定する方法です。この両 + 方がファンクション・キー2を表します。"#0" はファンクション・キー10を表し、 + t_f10 で定義されます。これはキーボードによってはファンクション・キー0である + かもしれません。'cpoptions' に '<' フラグが含められていると、<> 形式は使え + ません。 +3. termcap エントリーを <t_xx> という形式で使う方法です。"xx" は termcap エン + トリーの名前です。どんなエントリーの文字列も使うことができます。例えば: +> :map <t_F3> G + ファンクション・キー13を "G" にマップします。これは 'cpoptions' に '<' フラ + グが含められていると使えません。 + +二番目と三番目の方法の利点は、異なる端末で修正なしでマッピングが動作することで +す(機能キーは、端末によらずそれと同じ内部コード、もしくは実際のキーコードに変 +換されます。これが動作するには termcap が正しく動作しなければなりません。そし +て、同じマッピングを使っていなければなりません)。 + +詳細: まず Vim はキーボードから入力されるシーケンスがマップされているかどうか +を調べます。マップされていなければ、端末のキーコードが試されます(参照 +|terminal-options|)。もし端末のコードが見つかれば、内部コードで置き換えられま +す。それからさらに、マッピングのチェックが行われます(内部コードを他にマップで +きるように)。スクリプトファイルに書き込まれる内容は、どのように解釈されたかに +よります。もし端末のキーコードがマッピングとして解釈された場合は、キーコードそ +のものがスクリプトファイルに書き込まれます。端末のコードとして解釈された場合は、 +内部コードがスクリプトファイルに書き込まれます。 + +============================================================================== +2. 略語補完 *abbreviations* *Abbreviations* + +略語補完は、挿入モード、上書きモード、コマンドラインモードで使えます。略記とし +て登録されている単語を挿入した場合、それが表す単語に置き換えられます。これは、 +よく使う長い単語を打ち込むときのタイプ数を減らしてくれます。そして、明確なスペ +ルエラーを自動的に修正するのにも使えます。 +例: + + :iab ms MicroSoft + :iab tihs this + +略記には三つの種類があります: + +full-id "full-id" タイプは完全なキーワード文字から構成されます( 'iskeyword' + オプションに含まれる文字です)。最も一般的な略記です。 + + 例: "foo", "g3", "-1" + +end-id "end-id" タイプはキーワード文字で終わりますが、他の文字はキーワード + 文字ではないです。 + + 例: "#i", "..f", "$/7" + +non-id "non-id" タイプは非キーワード文字で終わります。他の文字はスペースと + タブ以外のどんなタイプの文字でもよいです。{Vi では、このタイプはサポ + ートされていません} + + 例: "def#", "4/7$" + +略記できない文字列の例: "a.b", "#def", "a b", "_$r" + +略記は非キーワード文字をタイプしたときに解釈されます。これは、挿入モードを終わ +らせる <Esc> をタイプしたり、コマンドを終わらせる <CR> をタイプしたときにも起 +こります。略記を終わらせる非キーワード文字は、略記が展開された後に挿入されます。 +例外は <C-]> 文字で、略記以外の文字を挿入せずに略記を展開するのに使われます。 + +例: +> :ab hh hello + "hh<Space>" で "hello<Space>" に展開されます。 + "hh<C-]>" で "hello" に展開されます。 + +カーソルの前の文字が略記にマッチしなければなりません。それぞれのタイプで、さら +に規則があります: + +full-id マッチしたものの前が非キーワード文字であるか、行もしくは挿入が始まっ + た場所。例外: 略記が1文字のみである場合、その前にスペースか <Tab> 以 + 外の非キーワード文字があると解釈されません。 + +end-id マッチしたものの前が非キーワード文字であるか、スペースもしくは <Tab> + であるか、行もしくは挿入が始まる場所。 + +non-id マッチしたものの前が<Tab> であるか、行もしくは挿入が始まる場所。 + +例: ({CURSOR}は非キーワード文字をタイプする場所です) +> :ab foo four old otters + " foo{CURSOR}" は " four old otters" に展開されます + " foobar{CURSOR}" は展開されません + "barfoo{CURSOR}" は展開されません + +> :ab #i #include + "#i{CURSOR}" は "#include" に展開されます + ">#i{CURSOR}" は展開されません + +> :ab ;; <endofline>" + "test;;" は展開されません + "test ;;" は "test <endofline>" に展開されます + +挿入モードで略記を避けるには: 略記の一部をタイプしてから挿入モードを <Esc> で +抜け、再度挿入モードに "a" で入って残りをタイプします。もしくは、略記の後の文 +字の前で CTRL-V をタイプします。 +コマンドラインモードで略記を避けるには: 略記の展開を避けるには、略記の途中で + CTRL-V を2回タイプしてください。普通の文字の前の CTRL-V はだいたい無視されま +す。 + +略記の後で、カーソルを動かすこともできます。 +> :iab if if ()<Left> +これは、'cpoptions' に '<' フラグが含まれていると、うまく動作しません。|<>| + +デフォルトで設定されている略記はありません。 + +略記の展開は再帰的には行われません。":ab f f-o-o" という略記を問題なく使うこと +ができます。しかし、略記をマップすることはできます。 {Vi ではいくつかのバージョ +ンで再帰的な略記をサポートしていますが、そこになんら明確な理由があるわけではな +いです} + +'paste' オプションがオンだと略記は使えなくなります。 + + *:ab* *:abbreviate* +:ab[breviate] すべての略記をリストします。1列目の文字は、略記が使わ + れるモードを示しています: 'i' は挿入モード、'c' はコマ + ンドラインモード、'!' はその両方。 + +:ab[breviate] {lhs} {lhs}で始まる略記をリストします。 + +:ab[breviate] {lhs} {rhs} + {rhs}の略記を{lhs}として定義します。既に{lhs}が定義さ + れていると、新しい{rhs}で置き換えられます。{rhs}はスペ + ースを含んでいてもかまいません。 + + *:una* *:unabbreviate* +:una[bbreviate] {lhs} {lhs}への略記をリストから全て削除します + + *:norea* *:noreabbrev* +:norea[bbrev] [lhs] [rhs] + ":ab" と同じですが、{rhs}への再帰的なマッピングを許し + ません。{Vi にはない機能です} + + *:ca* *:cabbrev* +:ca[bbrev] [lhs] [rhs] ":ab" と同じですが、コマンドラインモードのみで有効で + す。{Vi にはない機能です} + + *:cuna* *:cunabbrev* +:cuna[bbrev] {lhs} ":una" と同じですが、コマンドラインモードのみで有効で + す。{Vi にはない機能です} + + *:cnorea* *:cnoreabbrev* +:cnorea[bbrev] [lhs] [rhs] + ":ab" と同じですが、コマンドラインモードのみで有効で、 + {rhs}への再帰的なマッピングを許しません。{Vi にはない + 機能です} + + *:ia* *:iabbrev* +:ia[bbrev] [lhs] [rhs] ":ab" と同じですが、挿入モードのみで有効です。{Vi には + ない機能です} + + *:iuna* *:iunabbrev* +:iuna[bbrev] {lhs} ":una" と同じですが、挿入モードのみで有効です。{Vi に + はない機能です} + + *:inorea* *:inoreabbrev* +:inorea[bbrev] [lhs] [rhs] + ":ab" と同じですが、挿入モードのみで有効で、{rhs}への + 再帰的なマッピングを許しません。{Vi にはない機能です} + + *:abc* *:abclear* +:abc[lear] すべての略記を削除します。{Vi にはない機能です} + + *:iabc* *:iabclear* +:iabc[lear] 挿入モードでのすべての略記を削除します。{Vi にはない機 + 能です} + + *:cabc* *:cabclear* +:cabc[lear] コマンドラインモードでのすべての略記を削除します。 + {Vi にはない機能です} + + *using_CTRL-V* +特殊な文字を略記の <rhs> で使うことは可能です。ほとんどの印字可能ではない文字 +の特殊な意味を避けるのには、CTRL-V を使うことができるはずです。いくつの +CTRL-V を挿入すればよいかは、どのようにして略記を挿入するかによります。これは +マッピングに関しても同様です。いくつか例を使ってみましょう。 + +"esc" を実際の <Esc> 文字を挿入する略記にしたいとしましょう。Vim で ":ab" コマ +ンドを使うときには、次のようにしなければなりません: (ここで ^V は CTRL-V で、 +^[ は <Esc> です) + +タイプ: ab esc ^V^V^V^V^V^[ + + キーボードからのすべてのインプットは ^V クォート解釈される必要がありま + す。ですので、1番目と、3番目と、5番目の ^V 文字は単に2番目と4番目の ^V + と、^[ をコマンドラインで使えるようにします。 + +見え方: ab esc ^V^V^[ + + コマンドラインには実際には2つの ^V が ^[ の前に含まれています。もしそ + うするつもりがあれば、これは .exrc ファイルでの見え方になるはずです。 + 始めの ^V は2番目の ^V をクォートするためにあります; :ab コマンドは + ^V をクォート文字として扱いますので、略記の中でクォートされたホワイト + スペースもしくは | 文字を使うことができます。:ab コマンドは ^[ に対し + ては何も特殊な処理は行いません。ですので、クォートする必要もないです。 + (しかしながら、クォートしても問題はないです; 7(8はだめです!)個の ^V を + 挿入しても動作します). + +格納: esc ^V^[ + + 略記は解析された後、短い形式("esc")と長い形式("^V^[")の2文字として、略 + 記テーブルに格納されます。:ab コマンドを引数なしで実行したときに、この + 形で略記は表示されます。 + + 後に、ユーザーが "esc" をタイプしたことによって略記が展開されたとき、 + 長い形式はキーボードのインプットと同じようにように ^V 解釈される必要が + あります。^V が、^[ が "挿入モードから抜ける" 文字として解釈されること + を防ぐのです。その代わりに、^[ がテキストに挿入されます。 + +展開: ^[ + +[例は Steve Kirkendall によって提供されました] + +============================================================================== +3. ユーザー定義コマンド *user-commands* + +ユーザー独自の Ex コマンドを定義することができ、内蔵のコマンドと同様に動作しま +す(範囲指定や、引数を持つことができます。引数はファイル名、バッファー名、など +として補完することも可能です)。違いは、コマンドが実行されたときに、いったん普 +通の Ex コマンドに変換されてから実行されるということです。 + +すべてのユーザー定義コマンドは大文字で始まる必要があります。これは内蔵のコマン +ドと混同しないようにするためです。(とりわけ :Next や :Print などのいくつかの内 +蔵コマンドは、大文字で始まっています。こういった場合、内蔵のコマンドが常に優先 +されます)。ユーザーコマンドの始めの文字以外の文字は、大文字であっても小文字で +あっても、または数字であってもかまいません。数字を使う場合、数字を引数に取るほ +かのコマンドが曖昧になるかもしれない、ということに注意してください。例えば、 +"Cc2" コマンドは ":Cc2" という引数なしのユーザーコマンドでもありえますし、"2" +という引数を取った ":Cc" コマンドとしても解釈されうるのです。これらの問題を避 +けるには、コマンド名と引数の間にスペースを挿入することを勧めます。 + +ユーザー定義コマンドを使うときに、コマンドの省略形を使うこともできます。しかし +ながら、その省略形が唯一でなければエラーが起きます。さらには、内蔵コマンドの方 +が常に優先されます。 + +例: +> :command Rename ... +> :command Renumber ... +> :Rena " "Rename" を意味します +> :Renu " "Renumber" を意味します +> :Ren " エラー - 曖昧 +> :command Paste ... +> :P " 内蔵の :Print です + +スクリプトの中で使う場合は、完全な名前をユーザー定義コマンドにたいして用いるこ +とが勧められています。 + +:com[mand] *:com* *:command* + すべてのユーザー定義コマンドをリストします。コマンドを + リスとしているときの、始めの2列の文字は + ! -bang 属性を持つコマンド + " -register 属性を持つコマンド + (属性に関する詳細は下をご覧下さい) + +:com[mand] {cmd} {cmd} で始まるユーザー定義コマンドをリストする + +:com[mand][!] [{attr}...] {cmd} {rep} + ユーザーコマンドを定義する。コマンド名は {cmd} でそれ + を置き換えるテキストが {rep} です。コマンドの属性(下を + 参照)は {attr} です。既にコマンドが存在している場合は、 + ! が指定されていない限り(この場合は再定義されます)、エ + ラーが報告されます。 + +:delc[ommand] {cmd} *:delc* *:delcommand* + ユーザー定義コマンド {cmd} を削除します。 + +:comc[lear] *:comc* *:comclear* + すべてのユーザー定義コマンドを削除します。 + +コマンドの属性 + +Vim はユーザー定義コマンドを他の Ex コマンドと同じように扱います。引数を持った +り、範囲を指定することができます。引数はファイル名、バッファー、などに補完する +ことができます。正確には、これはコマンドが定義されたときに指定されたコマンドの +属性によります。 + +たくさんの属性があって、それらは4つの分野に分けることができます: 引数の扱い方、 +補完の仕方、範囲指定の仕方、特殊なケース。属性は分野毎に下に記述されています。 + +引数の扱い方 + +デフォルトでは、ユーザー定義コマンドは引数を取りません(引数が与えられた場合は +エラーを報告します)。しかしながら、-nargs 属性を使って、コマンドが引数を取るよ +うにすることはできます。有効なのは: + + -nargs=0 引数を取らない(デフォルト) + -nargs=1 1個だけ引数を要求する + -nargs=* いくつでも引数を取れる(0, 1, もしくはそれ以上) + -nargs=? 0もしくは1個の引数が取れる + -nargs=+ 引数が与えられる必要があるが、いくつでもよい + +この文脈では、引数は(エスケープされていない)スペースで分けられていると仮定され +ています。 + +補完の仕方 + +デフォルトでは、ユーザー定義コマンドは引数の補完を行おうとはしません。しかしな +がら、下記の属性を1つもしくは複数指定することで、引数の補完を行うことができる +ようになります。 + + -complete=augroup autocmd グループ + -complete=buffer バッファー名 + -complete=command Ex コマンド(と、引数) + -complete=dir ディレクトリ名 + -complete=event autocommand のイベント + -complete=file ファイルとディレクトリ名 + -complete=help ヘルプの主題 + -complete=highlight ハイライト・グループ + -complete=menu メニュー + -complete=option オプション + -complete=tag タグ + -complete=tag_listfiles CTRL-D を押した時にタグ、ファイル名を表示 + -complete=var ユーザー変数 + +範囲指定の仕方 + +デフォルトでは、ユーザー定義コマンドは行番号による範囲指定を受け付けません。し +かしながら、コマンドが範囲指定を受け付けるようにすることは可能です(-range 属性 +によって)。もしくは、任意のカウント値を取るようにすることもできます。この場合、 +行番号の位置(|:split| コマンドのように -range=N)で指定するか、"count" 引数 +(|:Next| コマンドのように -count=N)で指定するかです。可能な属性は: + + -range 範囲指定が可能になります、デフォルトは現在の行 + -range=% 範囲指定が可能になります、デフォルトはファイル全体(1,$) + -range=N 行番号位置で指定される(|:split| のように)カウント(デフォル + ト N) + -count=N 行番号位置で指定されるカウント(デフォルト N)か、初期化引数 + (|:Next| のように)。-count (デフォルトなしで)と指定すると + -count=0 のように動作します。 + +-range=N と -count=N は相互に排他的であるということに注意してください。- どち +らかのみを指定することができます。 + +特殊なケース + +いくつかの特殊なケースもあります: + + -bang コマンドは ! 修飾子を取ることができます(:q や :w のように) + -register コマンドの始めの引数はオプションとしてレジスター名を指定す + ることができます(:del, :put, :yank のように)。 + +-count と -register 属性の場合で、オプショナルな引数が与えられた場合、引数リス +トから削除されてそれぞれを置き換えるテキストが利用できるようになります。 + +置き換えテキスト + +ユーザー定義コマンドの置き換えテキストは、<...> 表記を使った特殊なエスケープシー +ケンスがあるかどうか調べられます。エスケープシーケンスは、コマンドラインから入 +力される値によって置き換えられ、他のテキストは全て変更なしでコピーされます。結 +果として生成される文字列が Ex コマンドとして実行されます。もしエスケープシーケ +ンスの最初の < にバックスラッシュが前置してあると、シーケンスは変更されず元の +ままコピーされます。 + +有効なエスケープシーケンスは + + *<line1>* + <line1> コマンド範囲の始めの行 + *<line2>* + <line2> コマンド範囲の最後の行 + *<count>* + <count> 与えられたカウント ('-range' と '-count' 属性で記述されている) + *<bang>* + <bang> ('-bang' 属性を参照) コマンドが ! 修飾子付きで実行された場合に + ! に展開され、それ以外は何にも展開されません。 + *<reg>* *<register>* + <reg> ('-register' 属性を参照) 指定されていれば、オプショナルなレジ + スター。それ以外は何にも展開されません。<register> もこれと同 + 義です。 + *<args>* + <args> 与えられた通りのコマンド引数。(しかし、上で述べられているよう + に、カウントかレジスターが引数の一部になり得るわけですが、そう + するとそれらは <args> の一部とはなりません)。 + <lt> 1つの '<' (小なり)文字。これは、これらエスケープシーケンスのう + ちのコピーを文字どおりに得たい場合に、必要となります。- 例えば、 + <bang> を得るには <lt>bang> として下さい。 + +エスケープシーケンスの始めの2文字が "q-" であると(例えば、<q-args>)、値はその +式で使うのに有効な値となるようにクォートされます。これは引数を1つの値として扱 +います。 + +コマンドが引数をユーザー定義関数に渡すことができるようにするために、特別な形式 + <f-args> ("function args")があります。これらはコマンドの引数をスペースの位置 +で区切り、それぞれの引数をここにクォートし、そして <f-args> シーケンスはコンマ +で区切られるクォートされた引数のリスとに置き換えられます。下のMycmdの例をご +覧下さい。引数がなければ、<f-args>もまた引数を持ちません。 + +例 + +> " ここから最後までのすべてを削除します +> :com Ddel +,$d + +> " 現在のバッファーをリネームします +> :com -nargs=1 -bang -complete=file Ren f <args>|w<bang> + +> " 指定された範囲をあるファイルの内容に置き換えます +> " (1行に書きます) +> :com -range -nargs=1 -complete=file +> Replace <line1>-pu_|<line1>,<line2>d|r <args>|<line1>d + +> " 指定された範囲の行数を数える +> com! -range -nargs=0 Lines :echo <line2> - <line1> + 1 "lines" + +> " ユーザー関数を呼びます(<f-args>の例) +> :com -nargs=* Mycmd call Myfunc(<f-args>) + +次のように実行された場合は: +> :Mycmd arg1 arg2 +次のものを起動します: +> :call Myfunc("arg1","arg2") + +> " より現実的な例 +> :function Allargs(command) +> : let i = 0 +> : while i < argc() +> : if filereadable(argv(i)) +> : execute "e " . argv(i) +> : execute a:command +> : endif +> : let i = i + 1 +> : endwhile +> :endfunction +> :command -nargs=+ -complete=command Allargs call Allargs(<q-args>) + +Allargs コマンドは、引数としてどのVimコマンドでも取ることができ、引数のリス +トのすべてのファイルに対して実行されます。使い方の例 ("e" フラグをつけてエラー +を無視しており、また "update" コマンドで変更されたバッファーを書き込んでいるこ +とに注意してください): +> :Allargs %s/foo/bar/ge|update +これは、次のものを起動します: +> :call Allargs("%s/foo/bar/ge|update") + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/mbyte.jax b/ja/mbyte.jax new file mode 100644 index 000000000..d19d6dafc --- /dev/null +++ b/ja/mbyte.jax @@ -0,0 +1,166 @@ +COMMENT: マルチバイト文字(旧:multibyte.txt) +STATUS: finished 5.6 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 + +*multibyte.txt* For Vim version 5.6. Last change: 1999 Sep 19 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +マルチバイトサポート *multibyte* *multi-byte* + +このファイルは、Vim で1つの文字が1バイトを超える文字が含まれるファイルを編集す +ることに関する情報を少しだけ記述してあります。 + +|+multi_byte| と |'fileencoding'| もご覧下さい。 + +1. XIM と X フォントセットのサポート |xim| +2. UTF-8 を XFree86 xterm で使う |UTF8-xterm| + +============================================================================== +1. XIM (X Input Method) と X フォントセットのサポート *xim* *x-input-method* + *xfontset* *x-fontset* + +-. メモ + GUI バージョンの Vim を使ってマルチバイト文字を使うことができます。この機能 + は |+multi_byte| を使っています。 + +-. あなたの言語をサポートしている X インプットサーバーが動いている必要がありま + す。X インプットサーバーがなくともあなたの言語で書かれたファイルを読むことは + できます。 + +-. 必要ならば次の3行を $HOME/.Xdefauts に追加してください。 + + *international: True + *.inputMethod: your_input_server_name + *.preeditType: your_input_method + + 次の2行もしくは3行は $HOME/.Xdefaults に書かれている必要があります: + マルチバイト言語を使う場合は 'guifontset' も設定する必要があります。 + + Vim.font: english_font,your_language_font + Vim*fontSet: english_font,your_language_font + Vim*fontList: your_language_font: + + + X11R6 を使っている場合は *international は必要ないかもしれません。 + X11R6 を使っている場合は *.inputMethod と *.preeditType はオプショナルです。 + + your_input_method は OnTheSpot、OverTheSpot、OffTheSpot、Root のどれかです。 + (いまのところ OnTheSpot はサポートされていません) + Vim.font はテキスト部分に関するものです。 + Vim*fontSet はメニュー部分に関するものです。 + Vim*fontList はメニュー部分(Motif)に関するものです(Athena バージョンでは必要 + ありません)。 + + マルチバイトを利用するには 'guifontset' をセットする必要があります。例: + + :set guifontset=english_font,your_language_font + + また、あなたが利用しているロケール(locale)での文字コードセットを表示できる + のであれば、フォントセットを XLFD として指定することもできます。例: + +> :set guifontset=-misc-fixed-medium-r-normal-* + + 注意) 'guifontset' を指定しないと IM を使うことはできません。ですので、ラテ + ン系の方でも IM を利用しようと思っている方は、'guifontset' を指定する + 必要があります。 + + そして 'guifont' を設定するべきではありません。もし設定されている場合は Vim + は 'guifontset' を無視します。つまり VIM はフォントセットのサポートなしで動 + 作することになり、英語しか見えなくなります。そしてあなたの言語は文字化けして + 表示されることになります。 + + 'fontset' 機能が有効にされた後、VIM は 'font' を使うことを許さなくなります。 + 例えば、もし次のように .gvimrc に書いているならば + :set guifontset=eng_font,your_font + シンタックスの指定では次のようにする必要があります + :hi Comment guifg=Cyan font=another_eng_font,another_your_font + もし単にこうした場合は + :hi Comment font=another_eng_font + たくさんのエラーメッセージが出ることになります。注意してください。 + +-. 必要ならば XMODIFIERS 環境変数を設定してください。 + + sh: export XMODIFIERS="@im=your_input_server_name" + csh: setenv XMODIFIERS "@im=your_input_server_name" + + input_server_name は XIM サーバーの名前です。 + +-. LANG 環境変数をあなたの言語に設定する必要があります。 + 設定を外したり C にセットしたりはしないでください。 + sh: export LANG=ko + csh: setenv LANG ko + +-. .vimrc に次の行を加えてください + set fileencoding=korea + 'korea' を japan や taiwan といった他の名前に変えることができます。 + +-. バグ & これからやるべきこと + *. your_language_font の幅は english_font の2倍の広さである必要があり + ます。これはバグとは考えたくないです。GVIM は固定幅のフォントを使う + 必要があるからです。 + 例) Vim.font: -*-fixed-*--14-*-*-*-*-70-*,-*-*-*-*--14-*-*-*-*-140-* + *. もしインプットメソッドの設定が失敗した場合は、下の方にもう1つのステ + ータス行は現れないはずです。また、Root スタイルで使っている場合も + そうです。 + *. 私のところでは時々 XIM サーバーの中でなんらかのボタンを押すと gvim + がハングします。 + *. ビジュアルモードでマウスを使って選択していると時折文字の半分しか選 + 択されているように見えない場合があります。 + *. それからまだ知られていない多くの副作用とバグがあります! + +-. コンパイル + ./configure --with-x --enable-multibyte --enable-fontset --enable-xim + make + run_your_X_input_server_if_not_currently_running + ./vim -g + + 注) もし Linux を使っている場合は CFLAGS に '-DX_LOCALE' をつける必要が + あります。うまく言った場合は自分の言語で幸せに GVim を使ってください。 + +私が出会った中で最高のエディター Vim を作ってくれた Bram さんに感謝します。 +hanIM という X インプットサーバーを作ってくれた YJSeo さんに感謝します。 + +その他のコメントやパッチや提案はこちらまで: + + Chi-Deok Hwang <cdhwang@sr.hei.co.kr> + Sung-Hyun Nam <namsh@lgic.co.kr> + K.Nagano <nagano@atese.advantest.co.jp> + +============================================================================== +2. UTF-8 を XFree86 xterm で使う *UTF8-xterm* + +これは Thomas Dickey によって提供される XFree86 xterm で、どのようにして +UTF-8 エンコードされた文字を利用するかについての簡単な説明です(文: Markus +Kuhn)。 + +注意: Vim の UTF-8 テキストの編集、閲覧はまだうまく機能していません! + +UTF-8 をサポートしている最新のバージョンの xterm を入手してください: + + http://www.clark.net/pub/dickey/xterm/xterm.tar.gz + +"./configure --enable-wide-chars ; make" としてコンパイルしてください。 + +また ISO 10646-1 バージョンの 6x13 フォントを入手してください: + + http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz + +それから README ファイルの記述に従ってフォントをインストールしてください。 + +そして xterm を起動します。 + +> xterm -u8 -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 + +そうすると UTF-8 ターミナル・エミュレーターが動作するでしょう。 +ucs-fonts.tar.gz に含まれている次の両方のデモ・ファイルを試して: + +> cat utf-8-demo.txt +> vim utf-8-demo.txt + +xterm で UTF-8 が問題なく動作しているかどうか確認してください。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_amiga.jax b/ja/os_amiga.jax new file mode 100644 index 000000000..1ad0450c4 --- /dev/null +++ b/ja/os_amiga.jax @@ -0,0 +1,143 @@ +COMMENT: +STATUS: suspend 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 村岡太郎<koron@tka.att.ne.jp> + +*os_amiga.txt* For Vim version 6.3. Last change: 2004 Apr 25 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *Amiga* +このファイルは Amiga version の Vim 特有の事柄に関して記述されています。 +下には特別に|MorphOS|についてのセクションが設けられています。 + +Amiga へのインストール: +- "VIm:" を Vim の "doc" ディレクトリがある場所に割り当てます。help コマンドで + "VIM:doc/help.txt" が検索されます。 + $VIM 環境変数を設定してもうまく動作します。他の方法では: $VIM が使われてい + て、定義されていないと "VIM:" が使われます。 +- DOS 1.3 かそれ以前では: "arp.library" を "libs:" に追加してください。|+ARP| + 機能を有効にしてコンパイルしている必要があります。newcli と run が "C:" に含 + まれていることを確認してください(外部コマンドを実行するため)。 +- "-c" を受け付ける shell (例えば、Fish disk 624 に含まれている "Csh")を "c:" + か他の検索パスが通っている場所においてください(外部コマンドを実行するため)。 + +もし十分なメモリーを積んでいれば、"rez csh vim" コマンドを実行し、Vim と csh +を resident にすることで起動の遅さを回避することができます。"rezlib.library" +を "libs:" ディレクトリにおく必要があるでしょう。2.0 以下では rez version 0.5 +が必要です。 + +digraph を使わない場合は、|+digraphs| 機能を無効にして再コンパイルすることでメ +モリーをいくらか節約することができます。他の端末で Vim を使いたい場合は +TERMCAP オプション付きで再コンパイルします。Manx 5.x と SAS 6.x つきでコンパイ +ルされます。makefile と feature.h を参照してください。 + +もし異なる色を使いたい場合は、termcap コードを設定してください: + t_mr (反転テキスト) + t_md (太字テキスト) + t_me (t_mr と t_md 後の普通のテキスト) + t_so (standout モード) + t_se (t_so 後の普通のテキスト) + t_us (下線付きテキスト) + t_ue (t_us 後の普通のテキスト) + t_ZH (イタリック・テキスト) + t_ZR (t_ZH 後の普通のテキスト) + +標準の ANSI エスケープ・シーケンスが使われます。コードは: +30 grey char 40 grey cell >0 grey background 0 all attributes off +31 black char 41 black cell >1 black background 1 boldface +32 white char 42 white cell >2 white background 2 faint +33 blue char 43 blue cell >3 blue background 3 italic +34 grey char 44 grey cell >4 grey background 4 underscore +35 black char 45 black cell >5 black background 7 reverse video +36 white char 46 white cell >6 white background 8 invisible +37 blue char 47 blue cell >7 blue background + +'>' つきのコードは最後になければなりません。cell と background の色は同じであ +る必要があります。コードはセミコロンで分割することで組み合わせることができます。 +例えば、青い背景に白のテキストにするには: > + :set t_me=^V<Esc>[0;32;43;>3m + :set t_se=^V<Esc>[0;32;43;>3m + :set t_ue=^V<Esc>[0;32;43;>3m + :set t_ZR=^V<Esc>[0;32;43;>3m + :set t_md=^V<Esc>[1;32;43;>3m + :set t_mr=^V<Esc>[7;32;43;>3m + :set t_so=^V<Esc>[0;31;43;>3m + :set t_us=^V<Esc>[4;32;43;>3m + :set t_ZH=^V<Esc>[3;32;43;>3m + +複数のコマンドをフィルターコマンドとして使う場合、例えば: > + :r! echo this; echo that +では、最後のコマンドの出力のみが使われます。この問題を回避するには、コマンドを +グループにする必要があります。そして、これは使っている shell に依存しています +(このため、Vim では自動的に行いません)。例: > + :r! (echo this; echo that) + :r! {echo this; echo that} + +1つのファイル名のみを受け付けるコマンドではファイル名にスペースが使われていて +もかまいません。しかしながら、複数のファイル名を引数として受け付けるコマンドで +は、スペースの前のバック・スラッシュをつける必要があります。 + +------------------------------------------------------------------------------ +Vim for MorphOS *MorphOS* + +[this section mostly by Ali Akcaagac] + +For the latest info about the MorphOS version: + http://www.akcaagac.com/index_vim.html + + +Problems ~ + +There are a couple of problems which are not MorphOS related but more Vim and +UN*X related. When starting up Vim in ram: it complains with a nag requester +from MorphOS please simply ignore it. Another problem is when running Vim as +is some plugins will cause a few problems which you can ignore as well. +Hopefully someone will be fixing it over the time. + +To pass all these problems for now you can either run: + + vim <file to be edited> + +or if you want to run Vim plain and enjoy the motion of Helpfiles etc. it then +would be better to enter: + + vim --noplugins <of course you can add a file> + + +Installation ~ + +1) Please copy the binary 'VIM' file to c: +2) Get the Vim runtime package from: + + ftp://ftp.vim.org/pub/vim/amiga/vim62rt.tgz + + and unpack it in your 'Apps' directory of the MorphOS installation. For me + this would create following directory hierarchy: + + MorphOS:Apps/Vim/Vim62/... + +3) Add the following lines to your s:shell-startup (Important!). + + ;Begin VIM + Set VIM=MorphOS:Apps/Vim/Vim62 + Assign HOME: "" + ;End VIM + +4) Copy the '.vimrc' file to s: + +5) There is also a file named 'color-sequence' included in this archive. This + will set the MorphOS Shell to show ANSI colors. Please copy the file to s: + and change the s:shell-startup to: + + ;Begin VIM + Set VIM=MorphOS:Apps/Vim/Vim62 + Assign HOME: "" + Execute S:Color-Sequence + Cls + ;End VIM + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_mac.jax b/ja/os_mac.jax new file mode 100644 index 000000000..f3f3c3af1 --- /dev/null +++ b/ja/os_mac.jax @@ -0,0 +1,104 @@ +COMMENT: OS特有情報:Apple Macintosh +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*os_mac.txt* For Vim version 6.3. Last change: 2004 Apr 27 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *mac* *Mac* *macintosh* *Macintosh* + +このファイルのドキュメントは、Vimのマッキントッシュバージョンに特有の事柄で +ある。 + +NOTE: このファイルの内容は少し古いです。つぎのサイトで役に立つ情報が得られます + http://macvim.swdev.org/ + +1. ファイル名の決まりごと |mac-filename| +2. .vimrc と .vim ファイル |mac-vimfile| +3. FAQ |mac-faq| +4. 知られている不足事項 |mac-lack| +5. Mac バグレポート |mac-bug| +6. Vim のコンパイル |mac-compile| + +以前には、Vimのバージョン3.0のMac移植版があった。ここに以前のファイルの最初 +の数行を示す: + +VIM Release Notes +Initial Macintosh release, VIM version 3.0 +19 October 1994 + +Eric Fischer +<enf1@midway.uchicago.edu>, <eric@jcp.uchicago.edu>, <etaoin@uchicago.edu> +5759 N. Guilford Ave +Indianapolis IN 46220 USA + +============================================================================== +1. ファイル名の決まりごと *mac-filename* + +ファイルパスの境界には、unixとmacの両方、さらにその混在したものが使える。指 +定されたファイル名がカレントフォルダからの相対パス(すなわち、"Desktop"からの +相対)か、絶対パスかを判断するには、次のアルゴリズムが使われる: + + パスが"/"から始まる場合は、絶対パス + パスが":"から始まる場合は、相対パス + パスが"/"でも":"でも始まらない場合、そして":"が"/"の前にある + ときは、絶対パス +> + :e /HD/text + :e HD:text +< ディスク"HD"のファイル"text"を編集。 > + :e :src:main.c + :e src/main.c +< カレントフォルダのフォルダ"src"内のファイル"main.c"を編集。 > + e os_mac.c +< カレントフォルダのファイル"os_mac.c"を編集。 + +変数 |$VIM|、または |$VIMRUNTIME| を使うこともできる。 > + + so $VIMRUNTIME:syntax:syntax.vim + +============================================================================== +2. .vimrc と .vim ファイル *mac-vimfile* + +Macでは、ドット"."で始まるファイルは推奨されない、そのため、rcファイルは、 +"vimrc"または"_vimrc"、"gvimrc"または"_gvimrc"という名前になっている。これ +らのファイルは、どんなフォーマットでもよい(mac、dos、unix)。|'nocompatible'| +オプションが設定されていれば、Vimはどんなファイルフォーマットも扱うことが +できるが、そうでなければ、macフォーマットファイルしか扱えない。 + +============================================================================== +3. Mac FAQ *mac-faq* + +Q: I can't enter non-ASCII character in Apple Terminal. +A: Under Window Settings, Emulation, make sure that "Escape non-ASCII + characters" is not checked. + +============================================================================== +4. 知られている不足事項 *mac-lack* + +-":"と"/"の両方を含むファイル名は、ときどき誤って解釈される。 + (このときはコマンドを再実行すればよい) +-Scrollbar are not scrolling live, and when only the arrow or scroll area, + a limit of 32 line or page is scrolled. +-シンタックスハイライトは68k Macでも機能するが、_本当に_ 遅い。 + +============================================================================== +5. Mac バグ レポート *mac-bug* + +Mac版の特定のバグや特性の変更をレポートするときは、vim-macメーリングリストを使 +ってください|vim-mac|。メーリングリストに登録したくないなら代わりにMacVimのメ +ンテナにメッセージを送ってください。 + + mac@vim.org + +============================================================================== +6. Vim のコンパイル *mac-compile* + +ソースファイルと一緒にある"src/INSTALLmac.txt"を見てください。 + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_mint.jax b/ja/os_mint.jax new file mode 100644 index 000000000..dca488d5a --- /dev/null +++ b/ja/os_mint.jax @@ -0,0 +1,43 @@ +COMMENT: OS特有情報:Atari MiNT +STATUS: finished 6.3.054 +TRANSLATOR: 西岡拓洋 +MAINTEINER: 村岡太郎<koron@tka.att.ne.jp> + +*os_mint.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + + VIM REFERENCE MANUAL by Jens M. Felderhoff + + + *MiNT* *Atari* +このファイルは Atari MiNT version の Vim に関する特殊な事柄について述べていま +す。 + +Vim を Atari 上で MiNT を走らせてコンパイルするには src ディレクトリの +"INSTALL" と "Makefile" を参照してください。 + +Vim for MiNT は Unix version とほとんど同じ動作をします。ドキュメントに記述さ +れている Unix 上での振る舞いは、明確に示されていない限り MiNT version の Vim +でも同じです。 + +<~> (ホーム・ディレクトリ)のワイルド・カード展開には、チルダを展開するシェルが +必要です。Vanilla Bourne Shell は展開しません。Csh と ksh はうまく動作します。 + +MiNT version の Vim は、/etc/termcap に端末にあった端末属性をふくんだ termcap +ファイルが必要です。vt52 端末は、内蔵 termcap でサポートされています。TOSWIN +ウインドウ・マネージャーと仮想コンソール端末の termcap エントリーが、Vim とと +もに配布されている termcap ファイルに追加されました。 + +<BS> と <Del> キーが入れ替わっている問題に遭遇した場合は、|:fixdel| を参照して +ください。 + +MiNT での端末の画面更新は、しばしば遅いため(例えば、シリアル・ライン端末)、 +'showcmd' と 'ruler' オプションはデフォルトではオフです。もしもっと速い端末を +使っているなら、これらをオンにしてみてください。'ttyfast' オプションもオンにし +たいかもしれません。 + +バグ・レポートはこちらに: + + Jens M. Felderhoff, e-mail: <jmf@infko.uni-koblenz.de> + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_unix.jax b/ja/os_unix.jax new file mode 100644 index 000000000..54e323e59 --- /dev/null +++ b/ja/os_unix.jax @@ -0,0 +1,68 @@ +COMMENT: OS特有情報:UNIX(BSD及びLinuxを含む) +STATUS: finished 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*os_unix.txt* For Vim version 6.3. Last change: 2003 Mar 15 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + *unix* *Unix* +このファイルは Unix のバージョンの Vim で特殊な事柄について書いてあります。 + +Vim を Unix でコンパイルするには src ディレクトリにある "INSTALL" と +"Makefile" をご覧下さい。 + +デフォルトのヘルプファイルの名前は "/usr/local/lib/vim/help.txt" です。 +"s:.vimrc" と "s:.exrc" のかわりに "$HOME/.vimrc" と "$HOME/.exrc" が使われま +す。さらに "/usr/local/etc/vimrc" が初めに使われます。もし "/usr/local/share" + があれば "/usr/local/lib" のかわりにそちらが使われます。 + +(フィルターを実行するときに使われる)一時的なファイルは "/tmp" に置かれます。も +しほかの場所におきたければ $TMPDIR 環境変数を自分の好みの場所に設定してくださ +い。 + +ワイルドカード展開と '~' (ホームディレクトリー)と '$' (環境変数)を使うことがで +きます。 + + *fork* *spoon* +可能であれば fork()/exec() が外部コマンドの実行に使われます、そうでない場合は +もう少し遅い system() が使われます。fork()/exec() が使われる場合は |+fork| が、 +system() が使われる場合は |+system()| が ":version" コマンドの出力に含まれます。 +これはコンパイルするときに変更することができます。 +(GUI バージョンのフォークに関しては |gui-fork| をご覧下さい) + +Unix では端末の更新がしばしば遅いので(例: シリアルライン端末、suntools でのシェ +ルウインドー)、'showcmd' と 'ruler' オプションはデフォルトでオフにしてあります。 +もし速い端末を使っているのであればこれらをオンにしてみてください。それと +'ttyfast' オプションもオンにしておきたいかもしれません。 + +Vim を xterm 上で使っている場合 'mouse' オプションを "a" にセットすることで + Vim でマウスクリックを使うことができるようになります。X-server へのアクセスが +あれば GUI スタイルのコピー/ペーストが利用できます。そしてマウスをドラッグして +いる間ビジュアルなフィードバックが得られるようになります。もしまだ xterm での +マウスを使ってのコピー/ペーストを行いたい場合はマウスを使うときに Shift キーを +押すようにしてください。参照 |mouse-using|。もし十分に新しい xterm を使っていれ +ば 'ttymouse' オプションを通してドラッグする間にビジュアルなフィードバックを得 +られます。 + + *terminal-colors* +Vim で色を使う場合は次のような例を使うことができます(もし端末が色をサポートし +てはいるけれど "T_Co" が空かゼロの場合): > + :set t_me=^[[0;1;36m " ノーマルモード(t_mr と t_md を消す) + :set t_mr=^[[0;1;33;44m " 反転表示モードオン + :set t_md=^[[1;33;41m " 太字表示モードオン + :set t_se=^[[1;36;40m " 強調表示モードから抜ける + :set t_so=^[[1;32;45m " 強調表示モード開始 + :set t_ue=^[[0;1;36m " 下線モードから抜ける + :set t_us=^[[1;32m " 下線モード開始 +[ ^[ は <Esc> で入力するには CTRL-V <Esc> とタイプします] + +本物の色端末では ":highlight" コマンドを使うこともできます。 + +"tools/Vim132" ファイルは Vim を vt100 もしくはそれによく似た端末上で 132カラ +ムモードで使うためのシェルスクリプトです。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_win32.jax b/ja/os_win32.jax new file mode 100644 index 000000000..b78504e5d --- /dev/null +++ b/ja/os_win32.jax @@ -0,0 +1,320 @@ +COMMENT: OS特有情報:Windows +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*os_win32.txt* For Vim version 6.3. Last change: 2004 May 01 + + + VIM REFERENCE MANUAL by George Reilly + + + *win32* *Win32* *MS-Windows* +このファイルはVim Win32バージョンに特有の事柄についての文書である。 + +Vim Win32バージョンはWindows NTとWindows 95上で実行可能である。コンソールバー +ジョンとGUIバージョンが存在する。Windows 3.1[1]のWin32sサブシステムで動くGUI +バージョンもある。32ビットDOSバージョンのVimを使うこともできる。 +|os_msdos.txt|を参照。 + +1. 知られている問題点 |win32-problems| +2. Vimの起動 |win32-startup| +3. スクリーン内容の復帰 |win32-restore| +4. マウスの使用 |win32-mouse| +5. Windows 3.1での使用 |win32-win3.1| +6. Win32 ミニ FAQ |win32-faq| + +付け加えて、Win32とDOS共通の項目がいくつかある: +ファイルの位置 |dos-locations| +バックスラッシュの使用 |dos-backslash| +標準のマッピング |dos-standard-mappings| +画面出力とカラー |dos-colors| +ファイルフォーマット |dos-file-formats| +:cd コマンド |dos-:cd| +割り込み(インタラプト) |dos-CTRL-Break| +一時ファイル |dos-temp-files| +Shellオプションのデフォルト |dos-shell| + +Win32 GUI |gui-w32| + +クレジット: +Win32バージョンはGeorge V. Reilly <george@reilly.org>による。 +オリジナルのWindows NTへの移植はRoger Knobbe <RogerK@wonderware.com>による。 +GUIバージョンはGeorge V. ReillyとRobert Webbによって作成された。 + +コンパイルする場合は"src/INSTALL.pc"を参照。 *win32-compiling* + +============================================================================== +1. 知られている問題点 *windows95* *win32-problems* + +Windows 95のコンソール内で実行する場合、いくつかの問題点が知られている。これは +我々の知る限りでは、Windows 98とWindows MEでも同じである。 + +Microsoftに勤務している誰かからのコメント: "Win95のコンソールサポートは今まで +ずっと怪しいものだったし、これからもそうだろう"。 +1. デッドキーサポートが機能しない。 +2. ":set columns=nn lines=nn"によるウィンドウのリサイズは機能するが、外部コマ + ンドを実行するとシステムはハングアップ、またはクラッシュする。 +3. 'columns'または'lines'の値を非DOS値に変えない限り、スクリーンの更新は遅い + だろう。しかし、このときは2番目の問題に該当する! + + +もしこれらの問題に悩んでいるなら、32ビットMS-DOSかWin32 GUIバージョンを使うと +よい。 + +ファイル名補完を行っているとき、Vimは短いファイル名への一致も見つける。しかし、 +それでもVimは長いファイル名への一致を見つけ、採用する。例えば、もしあなたが短 +いファイル名"this_i~1"を持つ、長いファイル名のファイル"this_is_a_test"を持って +いるなら、コマンド":e *1"は"this_is_a_test"の編集を始める。 + +============================================================================== +2. Vimの起動 *win32-startup* + +カレントディレクトリ *win32-curdir* + +Vimにフルパスのファイル名("x:\"の形で始まる)を指定したとき、Vimはエクスプロー +ラから起動されたと仮定してそのファイルのあるディレクトリをカレントディレクトリ +にします。そうならないようにするにはファイルのパスにバックスラッシュ(\)の代わ +りにスラッシュ(/)をを使ってください。 > + + vim c:\text\files\foo.txt + +これはカレントディレクトリを"C:\text\files"に変更します。 > + + vim c:/text\files\foo.txt + +こうすればカレントディレクトリを変更しません。 + + +端末オプション *win32-term* + +Win32バージョンのVimが認識できる唯一の端末の種類は"win32"であり、これは組み込 +みである。'term'に他の何かを設定すると、Vimはたぶんとても奇妙な振る舞いを見せ +ることだろう。それゆえ、Vimは'term'のデフォルト値を環境変数"TERM"から取得しな +い。 + +============================================================================== +3. スクリーン内容の復帰 *win32-restore* + +'restorescreen'がセットされているとき(これはデフォルト)、終了時、または外部コ +マンド実行時、Vimはコンソールの元の内容を復帰する。これを行いたくない場合は、 +":set nors"を使うとよい。|'restorescreen'| + +============================================================================== +4. マウスの使用 *win32-mouse* + +Win32バージョンのVimはマウスの使用をサポートする。2ボタンマウスを使用している +場合、中ボタンは左と右の両方のボタンを同時に押すことによってエミュレートでき +る - しかし、Win32 GUIで右ボタンクリックによるポップアップメニューを有効にし +ていると('mouse'を参照)、左ボタンを先にクリックした際、エラーが発生する。 + |mouse-using| + +マウスが機能しない場合には、コンソールの"Quick Edit Mode"特性を無効にしてみよ。 + +============================================================================== +5. Windows 3.1での使用 *win32-win3.1* + + *win32s* *windows-3.1* +Windows 3.1と3.11上で走るGvimの特殊なバージョンがある。Visual C++ 4.1でコンパ +イルしたgvim.exeが必要となる。 + +Windows 3.1上でWin32バージョンを動かすには、Win32sをインストールする必要がある。 +あなたは、他のWin32アプリケーションのインストールにより、すでにWin32sを持って +いるかもしれない。もしVimが正しく動いていないようであれば、最新バージョン:1.30c +を入手するとよいだろう。最新バージョンはここで得られる: + + http://support.microsoft.com/download/support/mslfiles/pw1118.exe + +(マイクロソフトはまたこれを移動した。もうどこにあるのか分からない) +ヽ(`Д´)ノ ウワァァン + +gvim.exeに2つのバージョンがあるのは、Win32sバージョンがVC++ 4.1でコンパイルさ +れているからである。これはWin32sプログラムをサポートするVC++の最新バージョンで +ある。VC++ 5.0はより良くなっているため、Win32バージョンにはこちらを使用してい +る。以上の点を除けば、2つのプログラムに違いはない。もし混在した環境にいるなら、 +Win32s用のgvim.exeを両方で使うことができる。 + +Win32sバージョンは、95/NT上ではWin32バージョンと同じように動く。Win32s上では、 +次の相違点がある: +- 長いファイル名が使用できない、Windows 3.1がサポートしていないためである! +- 外部コマンドを実行したとき、終了コードがリターンされない。":make"の後で、自 + 分で":cn"を行う必要がある。 + +============================================================================== +6. Win32 ミニ FAQ *win32-faq* + +Q. Windows 95上で、Win32バージョンのVimの画面更新が遅いのはなぜ? +A. Win32コンソールモードのアプリケーションのサポートは、Win95においては大変不 + 安定である。何らかの未知の理由で、Vimが標準解像度(80x25、80x43、80x50)のひ + とつで走っているとき画面更新が遅くなり、16ビットDOSバージョンの方がWin32バ + ージョンよりもはるかに速く画面更新を行うことになる。しかし、画面をその他の + 解像度、例えば、":set columns=100"や":set lines=40"など、に設定すると16ビッ + トバージョンと同じくらいの速度で更新するようになる。 + + 注意: 'columns'の変更はウィンドウの更新中にWindows 95をクラッシュさせる可能 + 性がある(不満があれば --> Microsoft)。これはたいていの場合は機能するので、 + 無効にされていないが、'columns'を変更するときは注意すること。 + + 画面解像度の変更は更新を速くするが、また別の問題を生じる。画面が非標準の解 + 像度に設定されているとき、特に'columns'が80以外の値のとき、外部コマンド(例、 + ":!dir")がVimをフリーズさせるというものである。Vimが外部コマンド実行前に、 + 画面解像度を起動時の値に戻すというのは不可能であるため、'lines'や'columns' + の値を変更するときは、細心の注意を払うように。実際のところ、'columns'の値が + 80以外である場合には、Vimは外部コマンドの実行を許可しない、その後でフリーズ + しやすいためである。 + + 以上のことは、Windows NT上では全く当てはまらない。画面更新は速く、'lines'や + 'columns'がどのような値であろうと、外部コマンドの実行がVimをフリーズさせる + ことはない。 + +Q. Win32バージョンのWindows 95上での画面更新が遅くて、16ビットDOSバージョンの + 画面更新が速いのならば、どうしてWin32バージョンを使う理由があるだろうか? +A. 第一に、画面が'lines'や'columns'の非標準の値に設定されているときは、Win32バ + ージョンは遅くはない。第二に、16ビットDOSバージョンはいくつかの厳しい制限を + 受けることになる: 大きな変更ができないことと、長いファイル名に対応していな + いことである。Win32バージョンはこれらの制限を持たない上、総合的に速い(32ビ + ットDJGPP DOSバージョンのVimにも同じことが言える)。Win32バージョンは32ビッ + トDJGPP DOSバージョンよりも画面、マウス、キーボードの扱いが簡潔である。 + +Q. 16ビットDOSバージョンとNT上のWin32バージョンについては? +A. NT上で16ビットDOSバージョンを使うべき理由は存在しない。Win32バージョンは、 + NT上の16ビットバージョンと同じくらいの速さで画面を更新する。DOSバージョンに + は上記の不利益がある。その上、DOSアプリケーションは起動に時間がかかり、また + 実行速度も遅い。非インテルのNTプラットホーム上では、DOSバージョンは到底使え + ない程に遅い、これは80x86エミュレータ上で実行されているからである。 + +Q. フォントを変える方法は? +A. GUIバージョンでは、'guifont'オプションを使用すればよい。 + コンソールバージョンでは、コンソール自体のフォントを設定する必要がある。 + これはVimから行うことはできない。 + +Q. コンソールウィンドウのサイズを':set lines=xx'などで変更したとき、フォントが + 変わってしまった!(Win95) +A. Vimの(もしくはMS-DOSプロンプトの)プロパティで、コンソールフォントを'Auto'に + 設定している。これは(悪いことに!)Win95に最適なフォントを選ばせる。かわりに + はっきりとフォントを指定すればよい。 + +Q. Windows 95上でVimへのペーストができないのだが? +A. MS-DOSウィンドウのプロパティダイアログボックスで、"MS-DOS プロンプト/その他 + /ファーストペースティング"がチェックされていないことを確認する。また、予期 + していない効果を避けるために、Vim内で":set paste"を行うべきである。|'paste'| + +Q. Windows 95上のコンソールバージョンでデッドキーを打つ方法は? + (デッドキーとは、鋭アクセント、低アクセント、ウムラウトのようなアクセントキ + ーのことで、キャラクタそのものとしては提供されないが、他のキーの後に続いて + 打たれて、a-acute、e-grave、u-umlaut、n-tildeなどのアクセントキャラクタを提 + 供するものである。多くのヨーロッパ言語で非常に有用である。われわれの知る限 + り、英語キーボードのレイアウトではデッドキーは使われない。) +A. できない。Windows 95ではコンソールモードの入力ルーチンは正しく機能せず、そ + れらを機能させることができたこともない。マイクロソフトの熟練した開発者の言 + 葉によれば: + Win95のコンソールサポートは、今まで常に、そしてこれからも怪しいものだ。 + + 我々はKEYB(これはデータを加工したがる; 国際化に重要である)のような + MS-DOSキーボードのTSRsの世界と、Win32の世界の間に置かれているため、こ + ういった怪しさは避けがたいものである。 + + ゆえに、MS-DOSの世界に"存在"していない(デッドキーのような)キーは、 + Win32コンソールの世界では非常に希薄な存在となる。MS-DOSの世界とWin32コ + ンソールの世界で、違った振舞いをする(capslockキーのような)キーは、怪し + げな振舞いを見せるだろう。 + + 多言語キーボードのレイアウトに関する問題については、考えたくもない... + + digraphsメカニズムによって、このような種類の働きを作り出すことができるかも + しれない。|digraphs| + + 最もよい解決法は、Win32 GUIバージョンのgvim.exeを使うことである。その他に、 + デッドキーがうまく機能しているといわれている、DOSバージョンのVimのひとつを + 試してみるという方法もある。 + +Q. Windows NT上でデッドキーを打つ方法は? +A. デッドキーはNT 3.51上で機能する。単に、他のアプリケーションでやっているのと + 同じようにすればよい。 + NT 4.0では、標準のロケール(コントロールパネルのキーボードで設定する)が、現 + 在アクティブなロケールと同じであることを確認する必要がある。そうしないと、 + NTのコードは混乱しクラッシュしてしまう! これはNT 4.0の問題であり、本質的に + Vimの問題ではない。 + +Q. VimでUnix NFSファイルサーバ上のシンボリックリンクファイルを編集している。 + ファイルを書込むとき、Vimはシンボリックリンクを"介して書込む"ことをしない。 + 代わりに、シンボリックリンクを削除し、その場所に新しいファイルを作成する。 + これは何故か? +A. Unixでは、Vimはリンク(シンボリック、ハード)に対応している。オリジナルファイ + ルのバックアップが作られ、そしてオリジナルファイルが上書きされる。これはフ + ァイルの全てのプロパティが保たれることを保証する。非Unixシステムでは、オリ + ジナルファイルは改名され、新しいファイルが書込まれる。保護ビットのみがオリ + ジナルファイルと同じように設定される。しかし、これはリンクなどの機構の存在 + する、NFSマウントされたファイルシステムにおいて適切に動作しない。現在のバー + ジョンにおいてこの問題を避ける唯一の方法は、":set nobackup nowritebackup"に + よって、バックアップファイルを作らないことである。 |'writebackup'| + +Q. ":make"の出力を実行中に見たい場合は? +A. 基本的には、入力(この場合はmakeの出力)を標準出力とエラーファイルの両方にコ + ピーする、teeプログラムを使えばよい。tee(とその他多くのGNUツール)は、 + http://gnuwin32.sourceforge.net か http://unxutils.sourceforge.net + から得られる。もしくは、最新のGNUツ ールのCygnusバージョン + http://www.cygwin.com を使ってみても + よい。その他のWin32用のUnixコマンドはこのサイトに列挙されている。 + http://directory.google.com/Top/Computers/Software/Operating_Systems/Unix/Win32/ + teeを手に入れたら、_vimrcに、以下のように設定する > + set shellpipe=\|\ tee +< + +Q. VisionFSが動いているリモートマシンにファイルを保存しておいたところ、それら + が消えてしまった! +A. VisionFSは、ある種のドット(.)と3文字の拡張子のファイル名を扱えない。SCOによ + れば、この振舞いは16ビットDOS/Windows環境との互換性のために必要とされるそう + である。以下の2つのコマンドで、この振舞いを実演できる: +> + echo Hello > file.bat~ + dir > file.bat +< + この結果、"dir"コマンドは新しい"file.bat"というファイルを作成しないで、 + "file.bat~"を更新する。Vimにおいても、"foo.bat"という名前の既存のファイルを + 編集するときにこれと同じことが起こる、Vimの標準の機能では、'~'をファイル名 + の後に付け加えてテンポラリファイルを作成するからである。ファイルが書込まれ + たとき、これは上書きされる羽目になる。 + + 解決法: _vimrcファイルに次のコマンドを加える: > + set backupext=.temporary + +Q. カーソルの点滅頻度を変更する方法は? +A. できない! これはNTコンソールの制限である。NT 5.0では全てのコンソールウィン + ドウに対して、同時に点滅頻度を設定できるようになるといわれている。 + + *:!start* +Q. 非同期的に外部コマンドやプログラムを実行するにはどうしたらよいか? +A. :!を使って外部コマンドを実行している場合、"start"と共に実行できる: > + :!start winfile.exe<CR> +< "start"を使うと、Vimは他のスクリーンに切り替えたり、新しいコンソールを開い + たり、プログラムが終了するまで待ったりしなくなる; つまり、走らせるプログラ + ムは編集中のファイルに何の影響も与えない。:!startで始まったプログラムは、 + Vimの開いたファイルハンドルを受け渡されないため、Vimより早く終了する必要は + ない。 + このような特別な動作を避けるには ":! start" を使う + +Q. Win32sを使っていて、"make"のような外部コマンドを実行すると、Vimはそれが終わ + るまでまってくれない! どうしたよいだろう! +A. この問題は、32ビットアプリケーション(Vim)が、16ビットアプリケーション(DOSの + セッション)が終わったという知らせを、Windowsから受け取ることができないとい + うことである。Vimはこのための働きも含んでいるが、それにはDOSコマンドをフル + スクリーンではなく、ウィンドウ内で実行するように設定しなければならない。不 + 運にも、Windowsをインストールしたデフォルトではフルスクリーンである。これを + 変更するには: + 1) PIFエディタを実行。(メインプログラムグループから) + 2) Windowsディレクトリの"_DEFAULT.PIF"ファイルを開く。 + 3) ディスプレイオプションを"Full Screen"から"Windowed"に変更。 + 4) 保存して終了。 + + 確かめるには、Vimを実行して次のように打つ > + ":!dir C:\<CR>" +< ディレクトリの一覧と共に、DOSボックスが短い間表示されるのを見るはずだ + +Q. Win32sとNTでVimを使っている。NTでは、コンソールをデフォルトから50行に変える + ことができ、':sh'で80x50のシェルを実行することができる。W3.1xでも同じことが + できるか、あるいは80x25のままでいるしかないか? +A. SYSTEM.INIを編集し、 [NonWindowsApp]のセクションに'ScreenLines=50'を付け加え + る。DOSプロンプトと外部DOSコマンドは50行のウィンドウで実行される。 + + vim:tw=78:fo=tcq2:ts=8:ft=help:norl: diff --git a/ja/pattern.jax b/ja/pattern.jax new file mode 100644 index 000000000..4f310a4fe --- /dev/null +++ b/ja/pattern.jax @@ -0,0 +1,480 @@ +COMMENT: 正規表現 +STATUS: finished 5.6 +TRANSLATOR: 北条耀 + +*pattern.txt* For Vim version 5.6. Last change: 1999 Oct 27 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +パターンと検索コマンド *pattern-searches* + +1. 検索コマンド |search-commands| +2. パターンの定義 |search-pattern| + +============================================================================== +1. 検索コマンド *search-commands* + + */* +/{pattern}[/]<CR> [count] 番目にマッチする {pattern} を前方に検索します。 + (排他的) + +/{pattern}/{offset}<CR> [count] 番目にマッチする {pattern} を前方に検索し + |{offset}| 行の分上/下に移動します。(行指向) + + */<CR>* +/<CR> [count]番目に、最後に検索したパターン|last-pattern|にマ + ッチするものを最後に使われた|{offset}|を使って前方に検 + 索します。 + +//{offset}<CR> [count]番目に、最後に検索したパターン|last-pattern|にマ + ッチするものを新しい|{offset}|を使って前方に検索します。 + {offset}が空であればオフセットは使われません。 + + *?* +?{pattern}[?]<CR> [count] 番目にマッチする {pattern} を後方に検索します。 + (排他的) + +?{pattern}?{offset}<CR> [count] 番目にマッチする {pattern} を後方に検索して + |{offset}| 行の分上/下に移動します。(行指向) + + *?<CR>* +?<CR> [count]番目に、最後に検索したパターン|last-pattern|に + マッチするものを最後に使われた|{offset}|を使って後方に + 検索します。 + +??{offset}<CR> [count]番目に、最後に検索したパターン|last-pattern|に + マッチするものを新しい|{offset}|を使って後方に検索しま + す。{offset}が空であればオフセットは使われません。 + + + *n* +n 最後の "/" か "?" を [count] 回繰り返します。 + |last-pattern| {Vi: カウントの前置を受け付けません} + + *N* +N 最後の "/" か "?" を逆方向に [count] 回繰り返します。 + |last-pattern| {Vi: カウントの前置を受け付けません} + + *star* +* [count] 番目にマッチする現在のカーソル位置にもっとも近 + い単語を前方に検索します。検索に使われる単語は、まず: + 1. カーソルの下のキーワード |'iskeyword'| + 2. 現在の行のカーソルの前方のキーワード + 3. カーソルの下の空白でない単語 + 4. 現在の行のカーソルの前方の空白でない単語 + "/\<keyword\>" コマンドで検索するように完全なキーワード + のみが検索できます。(排他的) {Vi にはない機能です} + + *#* +# "*" と同じですが、後方に検索します。ポンド記号(163 の文 + 字)でも動作します。"#" キーがバックスペースとして動作し + ている場合は Vim を起動する前に "stty erase <BS>" とし + てみてください(<BS> は CTRL-H もしくは本当のバックスペ + ースです)。 {Vi にはない機能です} + + *gstar* +g* "*" と似ていますが "\<" と "\>" を単語の回りに加えませ + ん。つまり単語の一部にマッチするものを検索することもで + きます。 {Vi にはない機能です} + + *g#* +g# "#" と似ていますが "\<" と "\>" を単語の回りに加えませ + ん。つまり単語の一部にマッチするものを検索することもで + きます。 {Vi にはない機能です} + + *gd* +gd ローカル宣言の場所に移動します。カーソルがローカル変数 + の上にあればこのコマンドはその宣言にジャンプします。は + じめに Vim は現在の関数の最初を("[[" コマンドのように) + 検索し、もし見つからなければ1行目で検索を中止します。見 + つかった場合は空行がある場所まで戻り、そこからカーソル + の下のキーワードを "*" コマンドのように検索します。しか + しこの場合コメントのように思われる行は無視されます + ( 'comments' オプションも参照してください)。 + しかし Vim は文法を実際にチェックしているわけではなく、 + キーワードにマッチするものを検索しているだけですので、 + これがうまく動作することは保証されないということに注意 + してください。インクルードされるファイルも検索したい場 + 合は |include-search| でリストされているコマンドを使っ + てください。 {Vi にはない機能です} + + *gD* +gD グローバル宣言の場所に移動します。カーソルがそのファイ + ルで定義されているグローバル変数の上にあればこのコマン + ドはその宣言に移動します。"gd" と同じように動作しますが + キーワードの検索が常に1行目から始められるところが違いま + す。 {Vi にはない機能です} + + *CTRL-C* +CTRL-C 現在の(検索)コマンドを中止します。MS-DOSではCTRL-Break + を使ってください |dos-CTRL-Break|。 + ノーマルモードではすべてのやりかけのコマンドが中止され + ます。 + + *:noh* *:nohlsearch* +:noh[lsearch] 'hlsearch' オプションで指定されたハイライトをやめさせま + す。検索コマンドを使うか 'hlsearch' オプションをオンに + するかすれば自動的に再びオンになります。 + このコマンドは、ハイライト状態が自動コマンドの実行時に + セーブ、リストアされるため、自動コマンド内では無効です。 + |autocmd-searchpat| + +'incsearch' オプションがセットされていると検索パターンを入力している間に現在マ +ッチするものが示されます。表示されているマッチした場所にカーソルを実際に移動さ +せるには <CR> を打って検索を終了させる必要があるということを覚えておいてくださ +い。また検索を中止するには <Esc> キーを使ってください。 + +もし 'hlsearch' オプションをセットしていれば最後に使った検索パターンはハイライ +トされていることになります。これを中断させたければ |:nohlsearch| コマンドを使っ +てください。 + + *search-offset* *{offset}* +これらのコマンドは指定されたパターンを検索するのですが、"/" と "?" ではさらに +オフセットを与えて検索することができます。2つのタイプのオフセットがあります: +行オフセットと文字オフセットです。 {Vi: 文字オフセットははありません} + +オフセットはマッチした場所から相対的にカーソルの場所を移動させます: + [num] [num] 行下の一桁目に + +[num] [num] 行下の一桁目に + -[num] [num] 行上の一桁目に + e[+num] [num] 文字右にマッチ部分の終わりの場所から移動 + e[-num] [num] 文字左にマッチ部分の終わりの場所から移動 + s[+num] [num] 文字右にマッチ部分の初めの場所(start)から移動 + s[-num] [num] 文字左にマッチ部分の初めの場所(start)から移動 + b[+num] [num] 文字右にマッチ部分の初めの場所(begin)から移動 + b[-num] [num] 文字左にマッチ部分の初めの場所(begin)から移動 + +'-' か '+' は与えられていて [num] が与えられていなければ、カウント1とみなされ +ます。オフセットに 'e' を含めている場合は、検索は包括的になります(カーソルが移 +動するであろう位置の文字まで操作の対象になります)。 + +例: + +pattern cursor position ~ +/test/+1 "test" の1行下の1桁目 +/test/e "test" の最後 +/test/s+2 "test" の 's' 文字 +/test/b-3 "test" の3文字前 + +もしこれらのコマンドが演算コマンドの後ろで用いられた場合、検索の前と後のカーソ +ル位置の間の文字が操作の対象となります。ただし、行オフセットが指定されている場 +合は2つのカーソルの位置の間の行全体が操作の対象となります。 + + *//;* +非常に特殊なオフセットとして ';' があり、これは検索コマンドに続けます。例えば: + +> /test 1/;/test +> /test.*/+1;?ing? + +最初のものは、初めに次に現れる "test 1" を見つけ、それからその後に最初に現れる +"test" を見つけます。 + +これは2つの検索コマンドをそれぞれの後に実行するようなものですが、次のところが +違います: +- 演算コマンドの後に1つの移動コマンドのように使うことができます。 +- 続く "n" もしくは "N" コマンドの方向は最初の検索コマンドの方向になります。 +- エラーが起きた場合カーソルはまったく動きません。 + + *last-pattern* +最後に使われたパターンとオフセットは記憶されておかれ、これらはあるいは方向を変 +えたり別のカウントを前置して検索を繰り返す場合に使うことができます。2つのパター +ンが記憶されておかれるということに注意してください: 1つは 'normal' 検索コマン +ドでもう1つは置換コマンド ":s" です。それぞれの場合で空のパターンが与えられた +場合、前に使われたパターンが使われます。 + +'magic'オプションは最後に使われたパターンを変更しません。'magic'を変更しても、 +最後に使われたパターンの解釈は変わりません。 +'ignorecase'オプションはそうではありません。'ignorecase'が変更されれば、最後 +のパターンは違うテキストにマッチすることになります。 + +'hlsearch' オプションをセットしている場合、最後に使われた検索パターンにマッチ +するものすべてがハイライトされます。 + +Vi ではタグが検索される場合は ":tag" コマンドは最後に検索されたパターンをセッ +トします。Vim ではこれは行われません、'cpoptions' に 't' フラグが付いていない +限り前の検索パターンが忘れられることはありません。検索パターンは常に検索履歴に +追加されます。 + +'wrapscan' オプションがオン(デフォルトの値はこれです)の場合、検索はバッファー +の最後から初めに戻って行われます。'wrapscan' オプションがセットされていない場 +合後方検索はバッファーの最初でストップし、前方検索はバッファーの最後でストップ +します。'wrapscan' がセットされていてパターンが見つからなかった場合、"pattern +not found" というメッセージがでて、カーソルは動きません。'wrapscan' がセットさ +れていない場合、前方に検索している場合はメッセージは"search hit BOTTOM without +match" となり、後方に検索している場合は "search hit TOP without match" というメ +ッセージが出ます。'wrapscan' がセットされている場合、検索がファイルの最後/最初 +から最初/最後に戻ったときには "search hit TOP, continuing at BOTTOM" もしくは +"search hit BOTTOM, continuing at TOP" というメッセージがそれぞれ後方検索/前方 +検索している場合に表示されます。このメッセージは 's' フラグを 'shortmess' オプ +ションにつけることで消すことができます。ハイライト方法の 'w' がこのメッセージ +に使われます(デフォルト: 標準出力)。 + + *search-range* +"/" では行の中のある範囲を指定して検索することはできません。とにかくこれを行い +たい場合は ":substitute" コマンドに 'c' フラグをつける方法があります。例: +> :.,300s/Pattern//gc +このコマンドはカーソルの位置と300行目までの間で "Pattern" を検索します。マッチ +した場所でなんらかの文字を押すように促されます。やめさせるには 'q' とタイプし、 +次にマッチするものを見つけるには 'n' をタイプします。 + +"*", "#", "g*", "g#" コマンドはカーソルに近い単語を次の順番で検索します。最初 +に検索に使われるものは: +- カーソルの下のキーワード +- 同じ行のカーソルの右側のキーワード +- カーソルの下の(空白で区切られる)単語 +- 同じ行のカーソルの右側の(空白で区切られる)単語 +キーワードは 'iskeyword' で定義されている文字のみを含みます。 +(空白で区切られる)単語は空白文字(<Tab> と <Space>)以外で構成されます。 +もし10本の指を使ってタイプを行っているなら、この文字は覚えやすいということも覚 +えておいてください: +"#" はあなたの左手の中指で押します(左上に検索します)。そして +"*" はあなたの右手の中指で押します(右下に検索します)。 + +============================================================================== +2. パターンの定義 *search-pattern* *pattern* *[pattern]* + *regular-expression* *regexp* *Pattern* + +パターンには特殊な文字を含めることができます。そしてこれは 'magic' オプションの +設定で変えることができます。'magic'には常にデフォルトの設定を使うことを推奨しま +す。これは移植上の問題を回避します。 + + */bar* */\bar* +1. パターンは "\|" で分けられた1つもしくは複数のブランチからなります。このパタ + ーンはブランチのうちのどれかにマッチするものにはすべてマッチします。例: + "foo\|beep" は "foo" と "beep" にマッチします。もし複数のブランチがマッチす + れば初めにマッチしたものが使われます。 + +2. ブランチは1つもしくは複数のピースの結合からなります。ブランチは初めにマッチ + するピースとそれに続く2番目にマッチするピースそれに続く...にマッチします。 + 例: "foo[0-9]beep" は初めに "foo" にマッチし、それから数字それから "beep" と + いう風にマッチします。 + +3. ピースはアトム(それ以上分割できないもの)であり、次のものを続けることができま + す: + 'magic' 'nomagic' ~ + */star* */\star* + * \* 前にあるアトムの0回以上の繰り返しに可能な限り多くの回数 + マッチします (最大 32767) + */\+* + \+ \+ 前にあるアトムの1回以上の繰り返しに可能な限り多くの回数 + マッチします (最大 32767) {Vi にはない機能です} + */\=* + \= \= 前にあるアトムの0回もしくは1回に可能な限り多くの回数マ + ッチします {Vi にはない機能です} + */\{* + \{n,m} \{n,m} 前にあるアトムのn回からm回までの繰り返しに可能な限り多 + くの回数マッチします {Vi にはない機能です} + \{n} \{n} 前にあるアトムのn回の繰り返しにマッチします + {Vi にはない機能です} + \{n,} \{n,} 前にあるアトムのn回以上の繰り返しに可能な限り多くの回数 + マッチします {Vi にはない機能です} + \{,m} \{,m} 前にあるアトムの0回からm回までの繰り返しに可能な限り多 + くの回数マッチします {Vi にはない機能です} + \{} \{} 前にあるアトムの0回以上の繰り返しに可能な限り多くの回数 + マッチします(* と同じです) {Vi にはない機能です} + */\{-* + \{-n,m} \{-n,m} 前にあるアトムのn回からm回までの繰り返しに可能な限り少 + ない回数マッチします {Vi にはない機能です} + \{-n} \{-n} 前にあるアトムのn回の繰り返しにマッチします + {Vi にはない機能です} + \{-n,} \{-n,} 前にあるアトムのn回以上の繰り返しに可能な限り少ない回数 + マッチします {Vi にはない機能です} + \{-,m} \{-,m} 前にあるアトムの0回からm回までの繰り返しに可能な限り少 + ない回数マッチします {Vi にはない機能です} + \{-} \{-} 前にあるアトムの0回以上の繰り返しに可能な限り少ない回数 + マッチします {Vi にはない機能です} + + (n と m は1から32767までの間の10進数です) + + "{" の後にすぐに "-" が現れている場合、もっとも短いものにマッチ + する高速なアルゴリズムが使われます(下の例をご覧下さい)。特に + "\{-}" は "*" と同じですが一番短いものにマッチする高速なアルゴ + リズムが使われます。しかし: 早くマッチしたものは短いマッチより + 優先されます: "a\{-}b" は "xaaab" の "aaab" にマッチすることに + なります。 + + 例: + .* .\* 空の文字列も含めてすべてにマッチします + ^.\+$ ^.\+$ 空行以外の行にマッチします + foo\= foo\= "fo" と "foo" にマッチします + ab\{2,3}c "abbc" か "abbbc" にマッチします + a\{5} "aaaaa" にマッチします + ab\{2,}c "abbc", "abbbc", abbbbc", ... にマッチします + ab\{,3}c "ac", "abc", "abbc", "abbbc" にマッチします + a[bc]\{3}d "abbbd","abbcd","acbcd","acccd"などなどにマッチします + a\(bc\)\{1,2}d "abcd" か "abcbcd" にマッチします + a[bc]\{-}[cd] "abcd" の中の "abc" にマッチします + a[bc]*[cd] "abcd" の中の "abcd" にマッチします。 + + +4. アトムは次のものです: + magic nomagic ~ + ^ ^ パターンの最初、もしくは "\|" の後、もしくは */^* + "\(" の後で行の最初にマッチします; ほかの場所 + では文字どおりの '^' にマッチします。 + \^ \^ どの場所でも文字どおりの '^' にマッチします */\^* + ^ ^ パターンの最初に置かれて行の最初にマッチします */^* + $ $ パターンの最後、もしくは "\|" の前、もしくは */$* + "\)" の前に置かれて<EOL>にマッチします; それ + 以外の場所では文字どおりの '$' にマッチします + \$ \$ どの場所でも文字どおりの '$' にマッチします */\$* + . \. 任意の一文字にマッチします */.* */\.* + \< \< 単語の最初にマッチします */\<* + \> \> 単語の最後にマッチします */\>* + + 文字クラス {Vi にはない機能です}: + \i \i 識別子文字 (参照: 'isident'オプション) */\i* + \I \I "\i" と似ていますが数字を除きます */\I* + \k \k キーワード文字(参照: 'iskeyword' オプション) */\k* + \K \K "\k" と似ていますが数字を除きます */\K* + \f \f ファイル名の文字(参照: 'isfname' オプション) */\f* + \F \F "\f" と似ていますが数字を除きます */\F* + \p \p 印字可能な文字(参照: 'isprint' オプション) */\p* + \P \P "\p" と似ていますが数字を除きます */\P* + + *whitespace* *white-space* + \s \s ホワイトスペース文字: <Space> と <Tab> */\s* + \S \S ホワイトスペース以外の文字; \s の反対です */\S* + \d \d 数字: [0-9] */\d* + \D \D 数字以外の文字: [^0-9] */\D* + \x \x 16進数: [0-9A-Fa-f] */\x* + \X \X 16進数でない文字: [^0-9A-Fa-f] */\X* + \o \o 8進数: [0-7] */\o* + \O \O 8進数でない文字: [^0-7] */\O* + \w \w 単語を構成する文字: [0-9A-Za-z_] */\w* + \W \W 単語を構成する文字以外の文字: [^0-9A-Za-z_] */\W* + \h \h 単語の先頭の文字: [A-Za-z_] */\h* + \H \H 単語の先頭の文字以外の文字: [^A-Za-z_] */\H* + \a \a アルファベット文字: [A-Za-z] */\a* + \A \A アルファベット以外の文字: [^A-Za-z] */\A* + \l \l 小文字: [a-z] */\l* + \L \L 小文字以外の文字: [^a-z] */\L* + \u \u 大文字: [A-Z] */\u* + \U \U 大文字以外の文字: [^A-Z] */\U* + 注: アトムを使った方が [] 形式を使うより高速です + 注: 'ignorecase' は文字クラスでは使われません + (文字クラス終わり) + + \e \e <Esc> にマッチします */\e* + \t \t <Tab> にマッチします */\t* + \r \r <CR> にマッチします */\r* + \b \b <BS> にマッチします */\b* + \n \n <NL> にマッチします(まだ使えません) 複数の行に */\n* + わたってパターンを指定するのに使われるでしょう + ~ \~ 最後に行われた置換文字列にマッチします */~* */\~* + \(\) \(\) エスケープされた括弧で囲まれたパターンです */\(\)* + (例: "\(^a\)") はそのパターンにマッチします */\)* + \1 \1 はじめの \( と \) で囲まれた副表現にマッチする */\1* + 文字列にマッチします {Vi にはない機能です} + 例: "\([a-z]\).\1" は "ata", "ehe", "tot", などにマッ + チします + \2 \2 "\1" に似ていますが2番目の副表現を使います */\2* + ... + \9 \9 "\1" に似ていますが9番目の副表現を使います */\9* + + x x 1つの文字です。特殊な意味は持ちません。それ自身にマッチ + します + \x \x バックスラッシュの後に1つの文字を続けます */\* */\\* + 特殊な意味は持ちません。将来の拡張のためにとっておかれ + ています。 + + [] \[] 範囲です。これは "[]" もしくは "\[]" で囲まれた */[]* + 一連の文字で、その中に含まれる任意の1文字にマッ */\[]* + チします。例えば: "[xyz]" は 'x', 'y', 'z' のどれかにマ + ッチします。 + - 文字列が "^" で始まっていると文字列に含まれない任意の + 1文字にマッチします: "[^xyz]" は 'x', 'y', 'z' 以外の + すべてにマッチします。 + - 文字列の中で2つの文字が '-' で分割されていると、その + 間の ASCII 文字すべてのリストの略記になります。例: + "[0-9]" は任意の10進数にマッチします。 + - 文字クラス表現はその文字クラスが属する文字セットに評 + 価されます。次の文字クラスがサポートされています: + Name Contents ~ +*[:alnum:]* [:alnum:] アルファベットとアラビア数字 +*[:alpha:]* [:alpha:] アルファベット +*[:blank:]* [:blank:] スペースとタブ文字 +*[:cntrl:]* [:cntrl:] 制御文字 +*[:digit:]* [:digit:] 10進数 +*[:graph:]* [:graph:] スペースを除いた印字可能な文字 +*[:lower:]* [:lower:] アルファベットの小文字 +*[:print:]* [:print:] スペースを含めた印字可能な文字 +*[:punct:]* [:punct:] 句読点文字 +*[:space:]* [:space:] ホワイトスペース文字 +*[:upper:]* [:upper:] アルファベットの大文字 +*[:xdigit:]* [:xdigit:] 16進数 +*[:return:]* [:return:] <CR> 文字 +*[:tab:]* [:tab:] <Tab> 文字 +*[:escape:]* [:escape:] <Esc> 文字 +*[:backspace:]* [:backspace:] <BS> 文字 + 文字クラス表現の括弧は範囲指定の括弧に加えてつけなけ + ればなりません。例を挙げると、次のものはもっともらし + い UNIX のファイル名の表現です: [-./[:alnum:]_~]\+ + つまり、'-', '.', '/',アルファベット,数字, '_', '~' + が少なくとも1回以上使われている文字列です。*/\]* + - ']', '^', '-', '\' をそのまま文字列に含めるにはバック + スラッシュを前においてください: "[xyz\]]","[\^xyz]", + "[xy\-z]","[xyz\\]"。(注:POSIXではこの方式のバックス + ラッシュをサポートしていません) + ']' に関しては括弧の最初に置くこともできます(後ろの例 + で示すように "^" でも可能です): "[]xyz]" か "[^]xyz]" + {Vi にはない機能です} + '-' に関しては最初もしくは最後に置くことができます: + "[-xyz]", "[^-xyz]", "[xyz-]" + '\' に関しては "^]-etrb" 以外の文字を後に続けることも + できます。"[\xyz]" は '\', 'x', 'y', 'z' にマッチし + ます。しかしながら "\\" を使った方がよいです。なぜな + ら将来の拡張で他の文字が '\' の後に使われるかもしれま + せんから。 + - 'cpoptions' に 'l' が含まれていなければ次のものも解釈 + されます {Vi にはない機能です} + \e <Esc> + \t <Tab> + \r <CR> + \b <BS> + - 範囲マッチングは遅くなりえます。可能ならば上記のアイ + テムを使ってください。 + +'ignorecase'オプションがオンであれば、大文字小文字の違いは無視されます。 +'smartcase'がセットされると、パターンが大文字のみなら、大文字小文字の違いを無視 +します。 + +パターンに改行を含めることはできません(ごめんなさい!)。 + +例: +^beep( たぶん C の関数の "beep" の初め + +[a-zA-Z]$ 行末の任意のアルファベット文字 + +\<\I\i* もしくは +\<\h\w* +\<[a-zA-Z_][a-zA-Z0-9_]* + 識別子 (例えば C プログラムの中で) + +\(\.$\|\. \) <EOL> かスペースが後に続くピリオド + "\(. \|\.$\)" は同じものを意味しないということに注意し + てください。なぜなら '\)' の前の '$' は <EOL> ではない + からです。これは Vi コンパチブルのためにそのままにして + あります。 + +[.!?][])"']*\($\|[ ]\) 文の最後を検索するパターンです。")" コマンドの定義とほ + とんど同じです。 + +技術的な説明: *NL-used-for-Nul* +ファイルの中の <Nul> 文字は <NL> としてメモリーに保持され、ディスプレイでは +"^@" と表示されます。この変換はファイルを読み込む時と書き込む時に行われます。 +検索パターンで <Nul> にマッチさせるには CTRL-@ もしくは "CTRL-V 000" と打ち込 +むだけでよいです。そしてこれがおそらくあなたが期待するものでしょう。内部ではそ +の文字は検索パターンの中で <NL> に置き換えられます。ちょっと普通ではないところ +があって CTRL-V CTRL-J とタイプすることでも <NL> を挿入します。ですので、ファ +イル中の <Nul> も検索してしまいます。 +{Vi はファイル中の <Nul> 文字をまったく扱えません} + + *CR-used-for-NL* +'fileformat' オプションに "mac" がセットされているとファイル中の <NL> 文字は +<CR> として保持されます。そしてディスプレイでは "^M" として表示されます。それ +以外はこれは <NL> の <Nul> に対する使い方と似た動作をします。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/recover.jax b/ja/recover.jax new file mode 100644 index 000000000..0232f07b5 --- /dev/null +++ b/ja/recover.jax @@ -0,0 +1,169 @@ +COMMENT: クラッシュ時の対応方法 +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*recover.txt* For Vim version 6.3. Last change: 2004 Apr 16 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +クラッシュ後のリカバリー *crash-recovery* + +あなたが明日の朝までに終わらせなければならない文書のタイプピングに数時間を費や +していたとき、悲劇があなたを襲う。: コンピュータがクラッシュした。 + + 慌てないで! + +あなたはVimがファイルの内容を蓄えていたファイルから、ほとんどの変更を回復でき +る。たいていの場合、あなたの仕事は1コマンドで回復できる。 + vim -r filename + +1. スワップファイル |swap-file| +2. リカバリー |recovery| + +============================================================================== +1. スワップファイル *swap-file* + +Vimは変更した箇所をスワップファイルに蓄える。編集を開始したオリジナルのファイ +ルとスワップファイルから、あなたのした作業は回復することができる。 + +現在使用しているスワップファイルの名前は、次のコマンド確認できる: + + :sw[apname] *:sw* *:swapname* + +スワップファイルの名前は、普通は編集中のファイルと同じで、拡張子が".swp"のもの +になる。 +- UNIXでは、スワップファイルは編集中のファイルと同じディレクトリ内に作られ、 + '.'が名前の前につけられる。これはディレクトリ表示からスワップファイルを隠す + ためである。 +- MS-DOS マシンで、'shortname' オプションがオンのときは、オリジナルファイルの + '.'は'_'に置き換えられる。 +- このファイルがすでに存在すると(たとえば、クラッシュから復帰した場合)、注意が + 表示され、違った拡張子、".swo"、".swn"、などが用いられる。 +- 存在しているファイルは決して上書きされない。 +- スワップファイルはVimが編集を終えるとすぐに削除される。 + +技術情報: '.'から'_'への置換はMS-DOS互換のファイルシステム(例、crossdos、 + multidos)での問題を避けるためである。もしVimがMS-DOSライクなファイ + ルシステムを探知すると、'shortname' オプションと同じ効果を持つフラ + グが設定される。このフラグは違うファイルの編集を始めたときにリセッ + トされる。 + *E326* + もし".swp"ファイルがすでに存在すると、同名のファイルが存在しなくな + るか、".saa"となるまで最後の文字をひとつ前の文字に戻す。".saa"まで + 存在するときは、スワップファイルは作られない。 + +'directory' オプションを設定することによって、スワップファイルを、編集している +ファイルとは別の場所に置くこともできる。 +利点: +- ディレクトリが".swp"ファイルで汚染されることがない。 +- 'directory' が別パーティションにある場合、ファイルのあるファイルシステムが + (クラッシュで)損傷を受けるリスクが減る。 +欠点: +- 別ディレクトリの同一名のファイルで名前の衝突を生じうる(Vimはパス名の比較でそ + れを避けようとするが)。 + これによって偽の注意メッセージが表示される。 +- あなたがホームディレクトリで作業をしていて、他の誰かが同じファイルを編集しよ + うとしたとき、その人はあなたのスワップファイルに気付かないし、注意のメッセー + ジも表示されない。 +Amigaでは、回復可能なramディスクを使えるが、それが100%働くという保証はない。 +スワップファイルを通常のramディスク(AmigaではRAM:など)に置いたり、リブートによ +って消されてしまう場所(Unixの/tmpなど)に置くことは無意味であり、クラッシュによ +ってスワップファイルは失われてしまう。 + +スワップファイルを固定ディスクに置きたいときは、あなたの.vimrcファイルに次に示 +す様なコマンドを入れる: + :set dir=dh2:tmp (Amigaの場合) + :set dir=~/tmp (Unixの場合) + :set dir=c:\\tmp (MS-DOS and Win32の場合) +これらの設定はフロッピー上で編集作業をしているときには負担となる。もちろん、こ +の様な設定で作業をするならば、"tmp"ディレクトリを作らねばならない。 + +読取専用属性のファイルに対しては、スワップファイルは使用されない。ファイルが大 +きくなければ、'maxmem'や'maxmemtot'で与えられた量より多くのメモリを使用するこ +とはない。読取専用属性のファイルについて何らかの変更が加えられたとき、スワップ +ファイルは無条件に作成される。 + +スワップファイルの作成を避けるために'swapfile'オプションをリセットできる。 + +既存のスワップファイルを削除する ~ + +ユーザーマニュアルの|11.3|をご覧ください。 + + +スワップファイルの更新 ~ + +スワップファイルは200文字を打ち込むか、4秒間何もしなかったときに更新される。こ +れはバッファが変更されたときのみ行われ、動き回っているだけでは行われない。なぜ +常に更新が行われないかといえば、それは通常の作業が大幅に遅くなるからである。 +200文字の設定は'updatecount'で、時間の設定は'updatetime'で変更できる。時間はミ +リ秒単位で与えられる。スワップファイルに書き込んだ後で、Vimはファイルとディス +クの同期を取る。これにはしばらく時間が掛かる(ビジーなUnixシステムにおいては特 +に時間がかかる)。もしこれを行って欲しくなければ、'swapsync'オプションに空文字 +列を設定すればよい。作業の成果を失う危険性は増すが。いくつかの非Unixシステム +(MS-DOS、Amigaなど)においては、スワップファイルはまったく書き込まれなくなるだ +ろう。 + +スワップファイルへの書き込みを望まないなら、'updatecount'を0に設定することで行 +われなくなる。Vimを"-n"オプションで起動することで、同じ結果が得られる。書き込 +みは'updatecount'を非0にすることでまた行われるようになる。これを行ったときはス +ワップファイルが全てのバッファに対して作られる。しかし、'updatecount'を0に設定 +したときは、存在しているスワップファイルは消されることはなく、次に開かれたファ +イルから有効になる。 + +行った編集がスワップファイルに書きこまれたかを確認するには、次のコマンドを使用 +する: + + *:pre* *:preserve* +:pre[serve] 全てのバッファの全てのテキストをスワップファイルに書き + 込む。回復のためにオリジナルが必要とされることはなくな + る。 + {Vi: emergency exit} + +Vimのスワップファイルは最初の6文字で認識される: "b0VIM"。 +この後に"3.0"などのバージョン番号が続く。 + +============================================================================== +2. リカバリー *recovery* + +基本的なファイルの回復方法はユーザーマニュアルの|usr_11.txt|をご覧ください。 + +ファイルを回復するためのもうひとつの方法は、Vimを起動して":recover"コマンドを +使うことである。 +これはVimを起動したときに"ATTENTION: Found a swap file ..."というメッセージを +受け取ったときには便利である。その場合には":recover"というコマンドひとつで全て +が済む。 +recoverコマンドにはファイル名かスワップファイル名を渡すことができる: + + *:rec* *:recover* +:rec[over] [file] スワップファイルから[file]を回復するよう試みる。もし + [file]が与えられていない場合は、現在のバッファの名前が + 用いられる。現在のバッファの内容は失われる。このコマン + ドはバッファが修正を加えられている場合に失敗する。 + +:rec[over]! [file] ":recover"と同じだが、現在のバッファに対するどんな変更 + も失われる。 + + *E312* *E309* *E310* +Vimはスワップファイルが何らかの理由で壊れているときに、いくつかの対処を提供す +る。Vimが見つかったものに疑問を持った場合、エラーメッセージが与えられ、"???"と +いうテキストが一緒に行に挿入される。回復中にエラーメッセージを受け取ったら、 +"???"を検索することによってどこに問題があったかを知ることができる。必要なテキ +ストを得るためには、カットやペーストを必要とするかもしれない。 + +ほとんどは"???LINES MISSING"のようなものです。これはVimがそのテキストをオリジ +ナルのファイルから読み込めないことを示します。これはシステムがクラッシュした時 +にファイルが正しくディスクに書き込まれなかったときに起こります。 + +オリジナルを上書きしたり、スワップファイルを削除する前に、回復が成功したことを +確認すること。回復されたファイルをどこか別の場所に保存して、'diff'によって変更 +を加えた箇所が、ちゃんと回復されたファイルに入っているか調べてみるとよい。 + +回復が成功したと確信したら、スワップファイルを削除する。そうしないと、".swp"が +存在するというメッセージが表示されつづけることになる。 + +{Vi: 違う方法で回復し、回復できそうなときはメールが送られる} + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/uganda.jax b/ja/uganda.jax new file mode 100644 index 000000000..63e51a0e5 --- /dev/null +++ b/ja/uganda.jax @@ -0,0 +1,169 @@ +COMMENT: ライセンス、寄付 +STATUS: finished 5.6 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 + +*uganda.txt* For Vim version 5.6. Last change: 1999 Dec 28 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *uganda* *Uganda* *copying* *copyright* +要約 +Vim はチャリティウェアです。好きなだけ使ってコピーすることができますが、ウガン +ダの孤児院に寄付を行うことが勧められています。下の |iccf| も参照してください。 + +もし CD-ROM に Vim を含められる場合は、私にそのコピーを送って頂けると嬉しいで +す。たんに世界でどの Vim のディストリビューションが存在しているか知りたいだけ +です(そして友人に見せびらかしたいのです :-))。 + +詳細 +なんらかの変更を加えていない Vim を配布することには何も制限はありません。Vim +の一部分だけを配布することもまた許されますが、このテキストは必ず含められなけれ +ばなりません。変更を加えられていない Vim のソースから作られた実行形式のファイ +ルや、独自の使い方の例や Vim スクリプトを含めることも許されています。 + +もし変更を加えたバージョンの Vim を配布する場合は、メインテナーにソースコード +を含めたコピーを送ることが推奨されます。もしくはメインテナーに ftp を通して入 +手できるようにしてください; そしてどこから入手できるか伝えてください。もし変更 +が小さければ(例: Makefile を変更したなど)差分をメールで送るだけでもよいです。 +また、もしメインテナーが要求した場合はあなたが加えた変更をソースコードを含めて +彼が入手できるようにしなければなりません。 + +メインテナーは Vim の公式バージョンに変更を含める権利を保持します。この権利は +譲渡することができます。メインテナーにそのソースコードを入手可能にしたくない場 +合は、変更を加えたバージョンの Vim を配布することは許されません。 + +現在のメインテナーは Bram Moolenaar <Bram@vim.org> です。もしメインテナーが変 +わった場合は、適切な場所(たぶん www.vim.org と comp.editors が、1番可能性が高 +いです)でアナウンスが行われるでしょう。メインテナーにコンタクトを取るのが完全 +に不可能である場合は、メインテナーに変更を加えたソースコードを送る義務は消滅し +ます。 + +Vim のソースコードもしくはその一部分の配布からこれらの制限を取り除くことは許さ +れません。この制限は、それがどんな文書を付加されていても、過去のVimのリリース +にも適用されます。 + + *iccf* +もし Vim に満足しているならば、このファイルの残りの部分を読むことでそれを表現 +してください。http://www.vim.org/iccf/ をご覧になることもできます。 + + *kcc* +Kibbale Children's Centre (KCC) はウガンダの南部にある小さな町 Kibbale にあり +ます。ウガンダは東アフリカに位置しており、タンザニアの近くに位置しています。そ +の地域は Rakai District として知られています。人口の大部分は農民で、貧乏ではあ +りますが食料は十分にあります。しかしこの地域は世界のほかの場所よりも AIDS で苦 +しんでいます。AIDS はここから始まったという人もいます。ウガンダ人の 10-30% が +HIV に感染していると推定されています。両親が死んでしまうので孤児がたくさんいま +す。この地域では人口 350.000 人のうちの 60.000 人の子供が親の片方もしくは両方 +をなくしており、この数値はまだ増え続けているのです。 + +子供たちは多くの援助を必要としています。KCC は食料、医療、教育を彼らに提供する +ために懸命に働いています。食料と医療は彼らを今健康にするために、そして教育は彼 +らの将来の手助けをするためです。KCC はクリスチャンがベースで行われていますが、 +子供たちの宗教にかかわらず援助は行われています。 + +この地域の問題を解決する鍵は教育です。過去数年にわたる Idi Amin 大統領の時代と +それに続く市民戦争によってこれは顧みられてきませんでした。今は政府が再び安定に +なりましたし、子供と親は自分自身の健康をどうやって保つか、そしてどうすれば感染 +を避けられるかを学ぶ必要があります。病気にかかっている人々や空腹を抱えている人 +々への援助もなされていますが、第一の目標は人々を病気から遠ざけることであり、そ +して体によい食料を育てる方法を彼らに教えることです。 + +だんだん大所帯になっていく家族の中で、ほとんどの孤児は生活しています。叔父か姉 +が彼らの世話をしています。これらの家族は大家族であるのに収入は少ないので、子供 +が体によい食料を得られるのは希です。まして衣類、医療、学校に通うことなどは無理 +なのです。これらの貧しい子供たちを助けるためにスポンサーシップ・プログラムが行 +われていました。子供は経済的に養子になるのです。月に数ドルのお金で KCC が子供 +たちが欠くことのできないものを得られるようにするのです。それは健康であり、また +学校に通うことです。また KCC は、その他子供とそれを支える家族が必要とするもの +の面倒を見ています。 + +子供を直接援助するほかに、子供が育つ環境を改善する必要があります。KCC は学校の +教育方法が改善されるよう援助を行っています。センターにはデモンストレーション学 +校があり教師の養成が行われています。保健に従事する人の教育も行われ、衛生教育も +行われており、一家に適切なトイレを作るように励まされています。私はセメントの厚 +い板を作る現場を設立する手助けを行いました。これらはよいトイレを作るのに使われ、 +そしてコスト以下の値段で売られています。 + +プロジェクトには小さな診療所があり、子供たちとその家族が医療を受けられるように +しています。そして必要があれば病院へ移ることを申し出ます。病気の予防プログラム +が実行されており、伝染病が発生した場合(風疹とコレラは悩みの種です)は援助が行わ +れます。 + +私は1994年の夏から1995年の夏までの丸1年間をボランティアとしてセンターで過ごし +ました。センターを拡大するための手助けを行い、そして飲料水の改善を行う地区と衛 +生設備の改善を行う地区で働いていました。そして KCC が提供している援助が本当に +役に立っていることを学んできました。いまはオランダに戻ってきているのですが +KCC のサポートを続けたいと思います。これを実行するために私は基金を設立し、そ +してスポンサーシップ・プログラムを組織化しました。下記のうちの1つを考慮してみ +てください: + +1. 1人の子供のスポンサーとなる: 月に15ドル (オランダ: fl 27,50) +2. 1人の子供のスポンサーとなりその環境を改善する: 月に25ドル + (オランダ: fl 45) +3. ヘルスチームのスポンサーになる: 月もしくは4半期ごとにいくらでも +4. 1度に限定した寄付(A one-time donation) + +他の組織に比べると子供のスポンサーシップの料金はかなり低いです。これはお金が直 +接センターに届くようになっているからです。5% 以下しか運営には使われていません。 +このことが可能になったのはこの組織が小さく、そしてボランティアで運営されている +からです。もし子供のスポンサーになろうと思っているのならば、少なくとも1年は続 +けるつもりがあるべきです。 + +お金が適切に使われていることをどうやって知ればいいのでしょう? まず、私は Vim +の作者として個人的に信用されています。そして私はセンターで働いている人々を信用 +していますし、彼らを個人的に知ってもいます。さらには、このセンターは World +Vision と Save the Children Fund と International Child Care Fund によって共 +同運営・監督されています。センターは少なくとも1年に1回は訪問を受けて進行をチェ +ックされています(自費で)。私自身1996年と1998年にセンターを訪問しました。 + +もし他に質問がありましたら、私にメールを送ってください: <Bram@vim.org> + +センターの住所: + Kibaale Childrens Centre + p.o. box 1658 + Masaka, Uganda, East Africa + +送金: + +USA とカナダ: Canada、SurreyのKibaale Children's Fund(KCF)とコンタクトを取っ + てください。彼らはKibaaleの子供たちのために、カナダのスポンサー + を世話しています。1度に限定した寄付の場合は、そこに直接送ること + ができます。Vimによってどのくらい寄付が行われているのかを知りた + いので、私に知らせてください。スポンサーシップについては KCFに + 尋ねてみてください。 + Kibaale Children's Fund c/o Pacific Academy + 10238-168 Street + Surrey, B.C. V4N 1Z4International Child Care Fund + Phone: 604-581-5353 + +オランダ: Venlo の "Stichting ICCF Holland" の口座に振り替えてください。 + こうすることで税金が控除されます(もしオランダに住んでいれば)。 + Postbank, nr. 4548774 + +ヨーロッパ: 銀行の手数料を避ける最良の方法は私に直接 Eurocheque を送ること + です。Dutch Guilders (DFL) の "Bram Moolenaar" に小切手を書い + てください。しかし他の方法でもよいはずです。スポンサーシップに + 関しては尋ねてみてください。 + stichting ICCF Holland + Bram Moolenaar + Clematisstraat 30 + 5925 BE Venlo + The Netherlands + +その他の地域: 可能であれば次のうちのどれかの口座に振り替えてください: + Postbank, nr. 4548774 + 名前は "stichting ICCF Holland", Venlo です。 + これがうまく行かなければ: Rabobank Venlo, nr. 3765.05.117 + 名前は "Bram Moolenaar", Venlo です。 + それ以外は、US ドルで小切手を上記のアドレスに送ってください。 + 最小の金額は: 70 ドルです(私が利用している銀行はそれ以下の海外 + からの小切手は受け付けないのです、ごめんなさい)。 + +もう一つの方法は郵便為替を送る方法です。この方法はどの国からも利用できるはずで +す。この名前を使ってください(私のパスポートに使われているものです): "Abraham +Moolenaar"。上記したVenloのアドレスと一緒です。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/version4.jax b/ja/version4.jax new file mode 100644 index 000000000..45a0fac83 --- /dev/null +++ b/ja/version4.jax @@ -0,0 +1,373 @@ +COMMENT: Version 4の新機能一覧表 +STATUS: finished 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +MAINTEINER: 村岡太郎<koron@tka.att.ne.jp> + +*version4.txt* For Vim version 6.3. Last change: 2004 Mar 12 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +このドキュメント Vim 3.0 と Vim 4.0 との違いを一覧にしています。4.0 と述べてい +ますが、これもまたバージョン 4.1, 4.2, などなどがあります。 + +Vim 3.0 からアップグレードしてきた人にはこのファイルは重要です。不測の問題を避 +けるために注意深く読んでおいてください。 + +'backup' オプションの初期値を変更 |backup-changed| +バックアップファイルの拡張子を変更 |backup-extension| +スワップファイルの構造を変更 |swapfile-changed| +"-w scriptout" 引数を変更 |scriptout-changed| +Backspace と Delete キーについて |backspace-delete| +| のエスケープの方法を変更 |escape-bar| +キーコードを変更 |key-codes-changed| +端末のオプションを変更 |termcap-changed| +'errorformat' オプションを変更 |errorformat-changed| +'graphic' オプションがなくなりました |graphic-option-gone| +'yankendofline' オプションがなくなりました |ye-option-gone| +'icon' と 'title' の初期値を変更 |icon-changed| +'highlight' オプションを変更 |highlight-changed| +'tildeop' と 'weirdinvert' の略記を変更 |short-name-changed| +"v", "V", "CTRL-V" をビジュアルモードで使う |use-visual-cmds| +挿入モードでの CTRL-B がなくなりました |toggle-revins| + + +'backup' オプションの初期値を変更 *backup-changed* +--------------------------------- + +'backup' オプションの初期値はいままではオンでした。この結果オリジナルのファイ +ルがが上書きされた場合はバックアップファイルが常に作られることになっていました。 + +いまは 'backup'の初期値はオフになっています。ファイルへの書き込みが成功次第バッ +クアップファイルは削除されます。バックアップファイルを取っておきたい場合は +'backup' オプションを vimrc でオンにしておいてください。この変更がなされた理由 +は多くの人がバックアップファイルが残ることに Vi-compatible ではない、と不満を +唱えたからです。 |'backup'| + + +バックアップファイルの拡張子を変更 *backup-extension* +---------------------------------- + +バックアップファイルの拡張子は今までは ".bak"でした。他のプログラムでもこの拡 +張子を使うものがあるのとユーザーでこの拡張子でファイルのコピーを作っておく人も +いるのでもうすこしあいまいな拡張子"~"に変更されました。もう一つの利点はファイ +ル名が短くなることで、ファイル名が短いことを要求されるようなシステムでは便利で +す。例えば、MS-DOSでは "longfile.c" と "longfile.h" のバックアップファイルはど +ちらも"longfile.bak" になっていましたが、いまはこれらは "longfile.c~" と +"longfile.h~" になります。 + +もし ".bak" という拡張子の方がよいなら 'backupext'オプションで設定することがで +きます。 > + :set bex=.bak |'backupext'| + + +スワップファイルの構造を変更 *swapfile-changed* +------------------------------ + +スワップファイルの内容はいくつかのパラメーターに関して拡張されました。Vim はユー +ザー名と編集されたファイルに関する情報を保持しています。これによって復元がより +簡単になり、またスワップファイルがどこで作成されたものかを知ることができるよう +になりました。現在はスワップファイルの最初の部分で異なるバイトオーダーか +sizeof(int) を持つマシーンを区別することができます。そういった異なるマシーン +間でリカバーを行おうとすると、できないという旨のエラーメッセージが出ます。 + +この変更のため3.0と4.0との間のスワップファイルには互換性がありません。もし3.0 +のセッションでクラッシュしたスワップファイルがあるなら Vim 3.0 を使ってそのファ +イルをリカバーして下さい(4.0は使わないでください)。 |swap-file| + + +"-w scriptout" 引数を変更 *scriptout-changed* +------------------------- + +"vim -w scriptout" は今まではスクリプトアウトファイルに追加するのに使われてい +ました。これはあまり合理的とは言えなかったので新しいファイルを作成するように変 +更されました。ファイルが存在する場合は上書きされません(この方法で追加するのに +なれている人が今まであったファイルを破壊するのを防ぐためです。) + |-w| + + +バックスペースとデリートキー *backspace-delete* +---------------------------- + +3.0ではデリートキーとバックスペースキーは挿入モードではどちらもバックスペース +のように機能していました。つまりカーソルの左側の文字を削除していました。4.0で +はデリートキーは新しい動作をするようになっています: コマンドラインでの動作がそ +うであるようにカーソルの下の文字を削除するのです。カーソルが行末の後に位置して +いて 'bs'オプションがセットされていると2つの行を連結します。 + |<Del>| |i_<Del>| + +3.0ではバックスペースキーは CTRL-H として定義されておりデリートキーは CTRL-? +と定義されていました。4.0ではバックスペースとデリートキーのキーコードは +termcap/termlib から読み込まれます。そして Unix では "stty erase" によって修 +正されます。このことは使っているキーボードによって削除するキーを決めている人に +とっては便利です。 + |<BS>| |i_<BS>| + +もしバックスペースとデリートキーの挿入モードでの動作が前の物がよければ次の行を +vimrc に加えてください。 + + inoremap ^? ^H + +また <BS> と <Del> キーの値を修正するのに次のものも必要かもしれません: + + set t_kb=^H + set t_kD=^? + +(^H を入力するには CTRL-V CTRL-H と入力し ^? を入力するには CTRL-V CTRL-? もし +くは <Del> と入力します。) + +もし t_kb の値が正しく t_kD の値が正しくなければ ":fixdel"コマンドを使ってくだ +さい、t_kb の値によって t_kDをセットします。これは複数の異なるターミナルを使っ +ているときに便利です。 |:fixdel| + +^H が <BS> か <Del> のように認識されると、バックスペースのように使われます。 + + +| のエスケープの方法を変更 *escape-bar* +-------------------------- + +'cpoptions' に 'b'フラグがあると、バックスラッシュによってマッピングと略記の中 +で '|'をエスケープするのにバックスラッシュを使うことはできません。CTRL-Vだけが +エスケープさせることができ、これは Vi と同じ仕様です。もし Viコンパチブルで + Vim を使っていて "\|"をバーを含めるためにマッピングで使っている場合、"^V|" に +することが必要です。参照 |:bar| + + +キーコードを変更 *key-codes-changed* +---------------- + +キーコードの内部表現が大幅に変わりました。3.0 では1バイトコードは1つのキーを表 +すのに用いられました。このことは他の文字セットですでにこれらのコードを使ってい +た場合に問題が生じました。4.0 では3バイトコードが使われ一つの文字が混同されな +いようにしました。 |key-notation| + +もし vimrc のマッピングに1バイトコードを使っているなら4.0のコードに置き換える +必要があるでしょう。また3バイトコードを直接使う代わりに <> 表記を用いるべきで +す。下の表をご覧下さい。表には3.0のドキュメントで使われていた古い名前も載せら +れています。 + +<> の中のキーの名前はマッピングで直接使うことができます。つまりこれらの例をコ +ピー/ペーストするかその通りにタイプすることができるのです。<>表記はこの |<>| +で紹介されています。これを動作させるには 'B' と '<'フラグが 'cpoptions' の中に +あってはいけません。|'cpoptions'| + +old name new name old code old MS-DOS code ~ + hex dec hex dec ~ +<ESC> <Esc> +<TAB> <Tab> +<LF> <NL> <NewLine> <LineFeed> +<SPACE> <Space> +<NUL> <Nul> +<BELL> <Bell> +<BS> <BS> <BackSpace> +<INSERT> <Insert> +<DEL> <Del> <Delete> +<HOME> <Home> +<END> <End> +<PAGE_UP> <PageUp> +<PAGE_DOWN> <PageDown> + +<C_UP> <Up> 0x80 128 0xb0 176 +<C_DOWN> <Down> 0x81 129 0xb1 177 +<C_LEFT> <Left> 0x82 130 0xb2 178 +<C_RIGHT> <Right> 0x83 131 0xb3 179 +<SC_UP> <S-Up> 0x84 132 0xb4 180 +<SC_DOWN> <S-Down> 0x85 133 0xb5 181 +<SC_LEFT> <S-Left> 0x86 134 0xb6 182 +<SC_RIGHT> <S-Right> 0x87 135 0xb7 183 + +<F1> <F1> 0x88 136 0xb8 184 +<F2> <F2> 0x89 137 0xb9 185 +<F3> <F3> 0x8a 138 0xba 186 +<F4> <F4> 0x8b 139 0xbb 187 +<F5> <F5> 0x8c 140 0xbc 188 +<F6> <F6> 0x8d 141 0xbd 189 +<F7> <F7> 0x8e 142 0xbe 190 +<F8> <F8> 0x8f 143 0xbf 191 +<F9> <F9> 0x90 144 0xc0 192 +<F10> <F10> 0x91 145 0xc1 193 + +<SF1> <S-F1> 0x92 146 0xc2 194 +<SF2> <S-F2> 0x93 147 0xc3 195 +<SF3> <S-F3> 0x94 148 0xc4 196 +<SF4> <S-F4> 0x95 149 0xc5 197 +<SF5> <S-F5> 0x96 150 0xc6 198 +<SF6> <S-F6> 0x97 151 0xc7 199 +<SF7> <S-F7> 0x98 152 0xc8 200 +<SF8> <S-F8> 0x99 153 0xc9 201 +<SF9> <S-F9> 0x9a 154 0xca 202 +<SF10> <S-F10> 0x9b 155 0xcb 203 + +<HELP> <Help> 0x9c 156 0xcc 204 +<UNDO> <Undo> 0x9d 157 0xcd 205 + + (not used) 0x9e 158 0xce 206 + (not used) 0x9f 159 0xcf 207 + + +端末のオプションを変更 *termcap-changed* +---------------------- + +端末のオプションの名前は、termcap でこれらのオプションに対応するエントリーの名 +前に変更されました。すべての端末のオプションは t_xx という形式の名前を持ち、 +xx が termcap でのエントリーの名前です。termcap の設定を誤っているか不完全であ +る場合か、ハイライトのオプションを他の値にセットしている場合でなければ普段はこ +れらのオプションは使われません。 |terminal-options| + +いくつかのキーに関しては termcap のエントリーに名前がないものがあるということ +に注意してください。そう言う場合は <> 表記を代わりに使ってください、またその表 +記をする方がどっちにしろよいです。 + +"t_ti" が "t_mr" (出力を逆にする/元に戻す)に変わり、"t_ts" が "t_ti"(端末を初 +期化する)に変わっていることに注意してください。また "t_ti"を使うときは十分に注 +意を払ってください。 + +old name new name meaning ~ +t_cdl t_DL 指定行数を削除 *t_cdl* +t_ci t_vi カーソルを見えなくする *t_ci* +t_cil t_AL 指定行数を挿入する *t_cil* +t_cm t_cm カーソルを移動 +t_cri t_RI カーソルを指定数右へ移動 *t_cri* +t_cv t_ve カーソルを見えるようにする *t_cv* +t_cvv t_vs カーソルを明確に見えるようにする*t_cvv* +t_dl t_dl 行を削除する +t_cs t_cs スクロールする範囲 +t_ed t_cl 画面をクリアする *t_ed* +t_el t_ce 行をクリアする *t_el* +t_il t_al 行を挿入する *t_il* + t_da スクリーンより上の描画が保存される + t_db スクリーンより下の描画が保存される +t_ke t_ke キーパッドモードから復帰 +t_ks t_ks キーパッドモードに移行 +t_ms t_ms 強調表示モードでカーソルの動きをセーブする +t_se t_se ノーマルモード(アンドゥ t_so) +t_so t_so シフトアウトモード(標準出力) +t_ti t_mr ハイライトを逆にする +t_tb t_md 太字モード *t_tb* +t_tp t_me ハイライト終わり *t_tp* +t_sr t_sr 逆にスクロールする +t_te t_te termcap モードから出る +t_ts t_ti termcap モードに移行 ョ *t_ts_old* +t_vb t_vb ビジュアルベル +t_csc t_CS スクロール範囲相対カーソル移動モード *t_csc* + +t_ku t_ku <Up> 上矢印キー +t_kd t_kd <Down> 下矢印キー +t_kr t_kr <Right> 右矢印キー +t_kl t_kl <Left> 左矢印キー +t_sku <S-Up> シフト+上矢印キー *t_sku* +t_skd <S-Down> シフト+下矢印キー *t_skd* +t_skr t_%i <S-Right> シフト+右矢印キー *t_skr* +t_skl t_#4 <S-Left> シフト+左矢印キー *t_skl* +t_f1 t_k1 <F1> ファンクションキー1 *t_f1* +t_f2 t_k2 <F2> ファンクションキー2 *t_f2* +t_f3 t_k3 <F3> ファンクションキー3 *t_f3* +t_f4 t_k4 <F4> ファンクションキー4 *t_f4* +t_f5 t_k5 <F5> ファンクションキー5 *t_f5* +t_f6 t_k6 <F6> ファンクションキー6 *t_f6* +t_f7 t_k7 <F7> ファンクションキー7 *t_f7* +t_f8 t_k8 <F8> ファンクションキー8 *t_f8* +t_f9 t_k9 <F9> ファンクションキー9 *t_f9* +t_f10 t_k; <F10> ファンクションキー10 *t_f10* +t_sf1 <S-F1> シフト+ファンクションキー1 *t_sf1* +t_sf2 <S-F2> シフト+ファンクションキー2 *t_sf2* +t_sf3 <S-F3> シフト+ファンクションキー3 *t_sf3* +t_sf4 <S-F4> シフト+ファンクションキー4 *t_sf4* +t_sf5 <S-F5> シフト+ファンクションキー5 *t_sf5* +t_sf6 <S-F6> シフト+ファンクションキー6 *t_sf6* +t_sf7 <S-F7> シフト+ファンクションキー7 *t_sf7* +t_sf8 <S-F8> シフト+ファンクションキー8 *t_sf8* +t_sf9 <S-F9> シフト+ファンクションキー9 *t_sf9* +t_sf10 <S-F10> シフト+ファンクションキー10 *t_sf10* +t_help t_%1 <Help> ヘルプキー *t_help* +t_undo t_&8 <Undo> アンドゥキー *t_undo* + + +'errorformat' オプションを変更 *errorformat-changed* +------------------------------ + +'errorformat'がコンマで区切っていくつかのフォーマットで定義できるようになりま +した。初めにマッチしたフォーマットが使われます。初期値で多くの一般的なフォーマッ +トを認識できるように調整されました。 |errorformat| + +コンマを含むフォーマットがある場合バックスラッシュを前置する必要があります。こ +の時 :set コマンドが一つ取ってしまうのでバックスラッシュは二つ重ねてください。 + + +'graphic' オプションがなくなりました *graphic-option-gone* +------------------------------------ + +'graphic' オプションは <~> と 0xa0の文字をスクリーンに直接表示させるために使わ +れていました。いまは 'isprint'オプションがこのかわりになりますし、もっと強化さ +れています。初期の設定は同じで前に'graphic' オプションを vimrc でセットしてい +る場合のみ気をつける必要があります。 |'isprint'| + + +'yankendofline' オプションがなくなりました *ye-option-gone* +------------------------------------------ + +'yankendofline'オプションがなくなりました。かわりに次のマッピングを使うことが +できます。 + :map Y y$ + + +'icon' と 'title' オプションの初期値を変更 *icon-changed* +------------------------------------------ + +'Thanks for flying Vim' のタイトルが残るのを避けるために、'title' オプションは +もとのタイトルを復元できる場合にのみ初期値でオンになるようになりました。 + |'title'| + +'icon' オプションの初期値は 'title'オプションのように元の値を復元できるかどう +かによるようになりました。もしアイコンのタイトルを変更するのが嫌であれば次の行 +をvimrc に加えてください。 |'icon'| + :set noicon + + +'highlight' オプションを変更 *highlight-changed* +---------------------------- + +'i'フラグは反転を意味するフラグではなく斜体のハイライトの意味になりました。今 +まで 'i' フラグが意味していた反転ハイライトには 'r'フラグが使われるようになり +ました。普通はこの変更による違いは気づかないかもしれません。というのはほとんど +の端末では斜体表示はサポートされていない上、斜体表示が使えないときは反転モード +が使われるからです。 |'highlight'| + +'highlight' オプションでセットされるアイテムのうち定義されていないアイテムは従 +来は反転モードで表示されていましたが、'highlight' でのそのアイテムのデフォルト +で設定されている値から引っ張ってきてそれが使われるようになりました。 + + +'tildeop' と 'weirdinvert' の略記名を変更 *short-name-changed* +----------------------------------------- + +'to' ( 'tildeop' の略記名) は 'top' に変更 |'tildeop'| +'wi' ( 'weirdinvert' の略記名) は 'wiv' に変更 |'weirdinvert'| + +これは Vi が 'wi' を 'window' の略記名に使っており 'to' を 'timeout'の略記名と +して使っているために変更されました。このことはこれらのオプションをセットしよう +とした場合エラーメッセージはでないけれども動作が違ってくることになります。 + + +ビジュアルモードで "v", "V", "CTRL-V" を使う *use-visual-cmds* +-------------------------------------------- + +ビジュアルモードにおいては "v", "V", "CTRL-V"はビジュアルモードを終了させるの +に使われてきました。いまはビジュアルモードが一致するタイプにおいてのみ終了させ +るのに使われるようになりました。そうでない場合はビジュアルモードのタイプが変わ +ります。どんな状況でもビジュアルモードをなにも行わずに終了させるにはESC キーを +利用してください。 |v_V| + + +挿入モードでの CTRL-B を削除 *toggle-revins* +---------------------------------- + +いままでは CTRL-B は 'revins'オプションのオン/オフをトグルするのにつかわれてい +ました。このことは、この動作を知らないで誤ってCTRL-Bを押してしまった場合、どう +やってアンドゥしてよいか気づくのが困難でした。ほとんどの人はこの機能を使ってい +ないので初期値では使えないようにしました。もしこの機能を使いたいならばコンパイ +ルするときにRIGHTLEFT を feature.h で define してください。 |'revins'| + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/vi_diff.jax b/ja/vi_diff.jax new file mode 100644 index 000000000..c4ab8d288 --- /dev/null +++ b/ja/vi_diff.jax @@ -0,0 +1,919 @@ +COMMENT: Viとの相違点 +STATUS: suspend 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +TRANSLATOR: 村岡太郎<koron@tka.att.ne.jp> + +*vi_diff.txt* For Vim version 6.3. Last change: 2004 Mar 26 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Vim と Vi の違い *vi-differences* + +ヘルプファイルを通して Vim と Vi/Exの違いはねじれ括弧の中で "{Vi にはない機能 +です}"のように示されています。このファイルは他のファイルで触れられていない部分 +のみを列挙します。それと違いの概略を説明します。 + +Vim は大体において POSIX 1003.2-1 に従っています。知られている唯一の足りないコ +マンドは ":open" コマンドです。細かな違いはたぶんたくさんあります。 + +1. なくなっているコマンド |missing-commands| +2. なくなっているオプション |missing-options| +3. 制限 |limits| +4. もっとも興味深い機能追加 |vim-additions| +5. Vim の他の特徴 |other-features| +6. コマンドライン引数 |cmdline-arguments| + +============================================================================== +1. なくなっているコマンド *missing-commands* + +このコマンドは Vi にはありますが Vim ではなくなっています: + +:o[pen] {Vi: オープンモードで編集を始める} *:o* *:op* *:open* + +============================================================================== +2. なくなっているオプション *missing-options* + +これらのオプションは Vi にはあって、Vim にはないものです。これらのオプションを +セットしてもエラーメッセージは出ませんが、設定した値は使われませんし表示もされ +ません。 + +autoprint (ap) 二者択一 (初期値 オン) *'autoprint'* *'ap'* +beautify (bf) 二者択一 (初期値 オフ) *'beautify'* *'bf'* +flash (fl) 二者択一 (初期値 ??) *'flash'* *'fl'* +graphic (gr) 二者択一 (初期値 オフ) *'graphic'* *'gr'* +hardtabs (ht) 数値 (初期値 8) *'hardtabs'* *'ht'* + ディスプレイ上で一つの <Tab> が移動するスペースの数 +mesg 二者択一 (初期値 オン) *'mesg'* +novice 二者択一 (初期値 ??) *'novice'* +open 二者択一 (初期値 オン) *'open'* +optimize (op) 二者択一 (初期値 オフ) *'optimize'* *'op'* +prompt 二者択一 (初期値 オン) *'prompt'* +redraw 二者択一 (初期値 オフ) *'redraw'* +slowopen (slow) 二者択一 (初期値 オフ) *'slowopen'* *'slow'* +sourceany 二者択一 (初期値 オフ) *'sourceany'* +window (wi) 数値 (初期値 23) *'window'* *'wi'* +w300 数値 (初期値 23) *'w300'* +w1200 数値 (初期値 23) *'w1200'* +w9600 数値 (初期値 23) *'w9600'* + +============================================================================== +3. 制限 *limits* + +Vim で編集できるファイルの制限はかなり少ないです。 {Vi: <Nul>文字を扱えず、ま +た 128をこえる文字を扱えません。行の長さにも制限がありますし、他にも多くの制限 +があります。} + + *E340* +行の最大の長さ 16-bit ints を使っているマシーン(Amiga と MS-DOS の + リアルモード): 32767 か 2147483647 文字。それより長 + い行は分割されます。 +最大行数 2147483647 行 +最大のファイルのサイズ long integer が32ビットである場合2147483647バイト(2 + ギガバイト)です。64ビットの長さであればもっと多くな + ります。またスワップファイル |swap-file| の為のディ + スクの空き容量にも制限されます。 + *E340* +ファイルのパスの長さ Unix と Win32: 1024 文字か 256 文字(もしくはシステム + がサポートしている長さ分だけ) +ファイル名の長さ Unix と Win32: 1024 文字か 256 文字 +展開されたオプションの文字列の長さ + Unix と Win32: 1024 文字か 256 文字 +表示される最大の長さ Unix と Win32: 1024 文字か 256 文字 +マッピングでの lhs の最大の長さ + 50 文字 +ハイライトの最大タイプ数: 223 + +アンドゥとレジスターの中のテキストに関する情報はメモリーに保持されます。ですの +で、使用可能な(仮想)メモリーの量を超えて(大きな)変更を行っている場合はアンドゥ +レベルの数とレジスターに保持されうるテキストは制限されることになります。コマン +ドライン履歴やクイックフィクスモードでのエラーメッセージなどの他のものもまたメ +モリーに保持されます。 + +メモリーの使い方を制限する +-------------------------- + +'maxmem' ( 'mm' ) オプションは一つのバッファーに使われるメモリーの最大の量(キ +ロバイトで)を決めるのに使います。'maxmemtot' はすべてのバッファーで使われるメ +モリーの最大の量(キロバイトで)を決めるのに使います。Amiga と MS-DOS では +'maxmemtot' は使えるメモリーの量に依存して設定されます。もし Vim がファイルに +スワップを行うのが嫌であれば 'maxmem' と 'maxmemtot' の値をかなり大きい値に設 +定しておきます。そうするとスワップファイルはリカバリーの時にのみ使われるように +なります。もしどんなスワップファイルも欲しくなければ 'updatecount' を 0 に設定 +するか、Vim を起動するときに "-n" 引数をつけます。'maxmem' オプションはバッファ +ーが作成されたときにのみ使われるということに注意してください。つまりこのオプショ +ンを変更してもすでにロードされているバッファーには影響がありません。ですのでそ +れぞれのファイルにそれぞれの値をセットすることもできます。'maxmemtot' は常に影 +響します。 + +============================================================================== +4. もっとも興味深い機能追加 *vim-additions* + +Vi コンパチビリティ |'compatible'| + + Vim には Vi の99%の機能が含まれますが、Vi のうちのいくつかはバグか少な + くとも改良が必要だと考えられるものがあります。しかしそれでもなお Vim は + 可能な限り「本当の」 Vi のように振る舞うモードで起動します。Vim にもう + 少しよい動作をして欲しい場合は 'compatible' オプションを解除してみてく + ださい。 + :set nocompatible + それか Vim を "-N" 引数つきで起動してください: + vim -N + もし .vimrc ファイルがあれば自動的にこれは行われます。|startup| も見て + ください。'cpoptions' オプションはたくさんの特定のアイテムに関する Vi + と同一の動作をするかどうかのオン/オフを切り替えることができます。 + +様々なシステムのサポート + Vim は次のシステムで利用できます: + - すべての Unix システム (テストされたすべてのシステムで動作しますが + GUI と Perl インターフェースはどこでも動作するわけではないかもしれま + せん)。 + - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). + - リアルモードの MS-DOS (他のドライバーは必要ありません) + - プロテクトモードの Windows 3.1 と MS-DOS (DPMI ドライバーが必要です) + - Windows 95 と Windows NT、ロングファイル名をサポート + - OS/2 (emx.dll が必要です) + - Atari MiNT + - VMS + - BeOS + - Macintosh + - RiscOS + - IMB OS/390 + +多段アンドゥ |undo| + 'u' は時をさかのぼり、'CTRL-R' は再び進めます。変更を覚えておく回数を + 'undolevels' オプションでセットしてください(初期値 1000)。'undolevels' + を0にセットすると Vi コンパチブルのアンドゥになります。-1 にセットする + とアンドゥできないようになります。 + + あるバッファーに対する変更をすべてアンドゥした場合は、バッファーはなに + も変更されていないと見做されます。つまり <!> なしで :q で終了させること + ができます。 + +グラフィカルユーザーインターフェース(GUI) |gui| + GUI (メニュー、マウス、スクロールバー、などなど)のサポートが含められま + した。独自のメニューを定義することもできます。CTRL/SHIFT/ALT とキーの組 + み合わではなく特殊なキーとマウスの組み合わせというよりよい方法がサポー + トされます。いまのところ X11 (Motif と Athena インターフェース)、Win32 + (Windows95 と WindowsNT),BeOS, Amiga, Macintoshでサポートされています。 + +複数のウインドーとバッファー |windows.txt| + Vim ではスクリーンをいくつかのウインドーに分けてそれぞれの中で異なるバ + ッファーを編集したり同じバッファーを別の場所で編集したりできます。バッ + ファーはウインドーに表示されていなくともロードして(変更を加えて)おくこ + ともできます。これは隠れたバッファーと呼ばれます。この機能のために多く + のコマンドやオプションが追加されています。 + +構文ハイライト |:syntax| + Vim ではキーワードやパターンやその他のものをハイライトすることができま + す。これは ":syntax" コマンドで定義し、ほとんどの言語やファイルのタイプ + に対してハイライトをつけることができます。C、C++、Java、Pascal、 + Makefiles、シェルスクリプト、などなどの多くの一般的な言語のうちのほとん + どのためのハイライト定義ファイルはすでに含まれています。ハイライトに使 + われる色は普通の端末で定義することができ、色端末と GUI では + ":highlight" コマンドで定義できます。 + +折畳み |folding| + 複数行の範囲を一行の「折畳まれた」行として表示することができます。これ + によりファイルを一望することができ、テキストブロック間を素早く移動する + ことが可能になります。折畳みの設定は手動、ファイルのシンタックス、イン + デント等々で設定することができます。 + +プラグイン |add-plugin| + プラグインファイルを正しいディレクトリにただ置くだけで機能追加ができま + す。これは他人が書いたVimスクリプトを使い始める簡単な方法です。プラグ + インは全ての種類のファイルについて設定することもできますし、ある1つの + ファイルタイプについて設定することも可能です。 + +一連のコマンドを繰り返す |q| + 'q'{c}で名前付きレジスター{c}にタイプする文字の記録を始めます(もしそ + のレジスターの名前が大文字であった場合はそのレジスターに追加します)。後 + に続く 'q' は記録を終了します。そしてレジスターにあるコマンドは '@'{c} + コマンドで実行することができます。これは複雑な動作を繰り返すときに非常 + に便利です。 + +柔軟な挿入モード |ins-special-special| + ファイルを動き回るのに矢印キーを挿入モードで使うことができます。このこ + とはアンドゥとリドゥを考えると挿入モードが二つに分かれることになります + + CTRL-O は一つのコマンドモードのコマンドを実行するのに使うことができま + す。これはつまり <Esc> キーを打ってコマンドを打ってからそれから 'a' を + 打ったのとほとんど同じことです。 + +ビジュアルモード |Visual-mode| + ビジュアルモードは、初めにいくつかのテキストを選択してからそれに対して + コマンドを実行するのに使うことができます。これは初めに演算コマンドを与 + えてからその演算を施すテキストの最後まで移動するコマンドを実行するもう + 一つの(簡単な)方法です。'v' と 'V' はビジュアルモードを開始します。'v' + は文字ごとに選択し 'V' は行ごとに選択します。カーソルを動かしてビジュ + アル部分を広げ、その部分はスクリーン上でハイライトされます。'o' を打つ + ことでビジュアルなテキスト部分の反対側の端が動かされることになります。 + ビジュアルなテキスト部分には次の演算を施すことができます: + d 削除 + c 変更 + y ヤンク + > or < インデントを挿入/削除 + ! 外部プログラムを使ってフィルターを施す + = インデントを通してフィルターを施す + : ビジュアルな行に対して ":" コマンドを始める + gq 'textwidth' 桁位置にテキストを整形する + J 行を連結する + ~ 大文字小文字を入れ換える + u 小文字にする + U 大文字にする + +ブロック演算コマンド |visual-block| + 長方形のテキストがビジュアルモードを使って選択することができます。 + CTRL-V でビジュアルモードを開始します。選択されたブロックは 'd' で削除 + したり 'y' でヤンクしたり大文字小文字を '~'、'u'、'U' で変えることがで + きます。削除もしくはヤンクされたブロックは 'p' か 'P' コマンドでテキス + トに挿入することができます。 + +オンラインヘルプシステム |:help| + ヘルプはウインドーの中に表示されます。検索したりするテキストの中を移動 + する普通のコマンドはそのまま使えます。タグも複数のヘルプファイルの間を + 移動するのに使え、ハイパーテキストのリンクをクリックするような感覚で + す。":help" コマンドは引数を取りますので検索したい情報に素早くジャンプ + できます。<F1> を押して素早くヘルプシステムにアクセスすることもできま + す。ヘルプファイルのインデックスファイルは 'helpfile' オプションで設定 + することができます。 + +コマンドライン編集/履歴 |cmdline-editing| + カーソルキーを使うことでコマンドラインのどの場所からでも挿入を行ったり + 削除を行ったりすることができます。右/左矢印キーは前/後に一つの文字移動 + するのに使うことができ、Shift キーを押しながら右/左矢印キーを押すと前/ + 後に一つの単語移動することができます。CTRL-B/CTRL-E はコマンドラインの + 初め/終わりに移動するのに使うことができます。 + + |cmdline-history| + コマンドラインは記録されます。上/下矢印キーを使うことで前のコマンドライ + ンを呼び出すことができます。'history' オプションで覚えておく行数を設定 + することができます。検索パターンのコマンド履歴はまた別に分かれていま + す。 + +コマンドライン補完 |cmdline-completion| + コマンドライン(スクリーンの一番下で)でなんらかの作業をしているときに + <Tab> キーを押すと補完を行うことができます。 + what example ~ + - コマンド :e<Tab> + - タグ :ta scr<Tab> + - オプション :set sc<Tab> + - オプションの値 :set hf=<Tab> + - ファイル名 :e ve<Tab> + - その他 + + 複数マッチしたものがある場合は、CTRL-N (次)と CTRL-P (前)でマッチしたも + のの間を移動することができます。<Tab> は CTRL-N のように振る舞います + が、マッチしたものの最後で押すと最初にマッチしたものに戻ります。 + + 'wildchar' オプションでコマンドライン補完に利用する文字を設定できま + す。デフォルトは<Tab>です。複数の補完候補がある不完全な状態でCTRL-Dを + タイプすることで、全ての補完候補を表示することができます。CTRL-Aではす + べての候補を入力することができます。CTRL-Lでは候補内で、一致する最長部 + 分までを入力します。 + +挿入モードでの補完 |ins-completion| + 挿入モードで CTRL-N と CTRL-P を使うことで前に使われた単語を補完するこ + とができます。 |i_CTRL-N| + CTRL-X を使うことでもう一つのモードに入ることができます。どの補完を行う + ことができるかというと: + |i_CTRL-X_CTRL-F| ファイル名 + |i_CTRL-X_CTRL-K| ディレクトリにある単語 + |i_CTRL-X_CTRL-I| インクルードされるファイルにある単語 + |i_CTRL-X_CTRL-L| すべての行 + |i_CTRL-X_CTRL-]| タグファイルにある単語 + |i_CTRL-X_CTRL-D| マクロ定義 + +長い行のサポート |'wrap'| |'linebreak'| + 'wrap' オプションがオフであれば、長い行は折り返されずに行の一部分だけが + 表示されます。カーソルが表示されていない部分に移動するとスクリーンも横 + にスクロールします。横にスクロールする桁数の最小の値を 'sidescroll' オ + プションで設定することができます。"zh" と "zl" コマンドは横スクロールに + 使うことができます。あるいは、'linebreak' オプションがセットされている + 場合は長い行は単語の間で切られます。こうすることで段落を一つの行にして + 編集することが容易になります(例: 後で編集中のテキストを DTP プログラム + に持っていく場合)。カーソルを上下するには "gk" と "gj" コマンドを使って + ください。 + +テキストの整形 |formatting| + 'textwidth' オプションを設定することで行の長さを自動的に制限することが + できます。このオプションはあまり便利ではなかった Vi での 'wrapmargin' + オプションを補助するものです。"gq" 演算コマンドはテキストの一部分を整 + 形するのに使うことができます(例えば、"gqap" は現在の段落を整形します)。 + テキストの位置に関するコマンドは ":center", ":left", ":right" です。 + +拡張正規表現 |pattern| + 様々なテキスト要素にマッチさせるための、多くの拡張正規表現の要素があり + ます。たとえば"\n"は改行にマッチします。 + "x\{2,4}"は、"x"が2個から4個続くテキストにマッチします。 + "\s"は空白文字にマッチします。 + +編集-コンパイル-編集 をスピードアップする |quickfix| + ":make" コマンドを使うことでコンパイルしてから初めのエラーにジャンプす + ることができます。あるいは Vim を "-q" オプションをつけてコンパイラーか + ら起動します。コンパイラーのエラーメッセージが含まれるファイルが解析さ + れて Vim は初めのエラーの場所から編集を開始します。 + + エラーファイルのそれぞれの行はファイルの名前、行番号、エラーメッセージ + という風に調べられます。'errorformat' オプションは多くのコンパイラーか + らの出力を扱うことができるように scanf のような形式の文字列のリストを指 + 定することができます。 + + ":cn" コマンドは次のエラーにジャンプするのに使うことができます。":cl" + コマンドはすべてのエラーメッセージをリストします。他のコマンドも使うこ + とができます(ほとんどは Amiga での Manx's Z というエディターのコマンド + と同じです)。'makeef' オプションはエラーメッセージが含まれるファイルの + 名前を指定します。'makeprg' オプションは ":make" コマンドで実行するプロ + グラムの名前を指定します。'shellpipe' オプションはコンパイラーからの出 + 力をエラーファイルに書き込むときに使われる文字列を指定します。 + +C プログラムのインデントを改善 |'cindent'| + 'cindent' オプションがオンの時はそれぞれのインデントは自動的に調整され + ます。C の文法はだいたい解釈されますし、さまざまなスタイルでのインデン + トは 'cinoptions' で設定することができます。インデントをするきっかけと + なるキーワードは 'cinkeys' で指定することができます。 + + コメントも自動的に整形することができ、'comments' オプションでどの文字が + コメントをスタートさせ終了させるのかを指定することができます。この機能 + は C のコードでもっともよく動作しますがメール(行の最初の ">")や他のタイ + プのテキストでもうまく動作します。"=" 演算コマンドで行を再インデントす + ることもできます。 + +インクルードされるファイルの中から単語を探す |include-search| + "[i" コマンドはカーソルのしたの単語をインクルードされるファイルの中から + 検索することができます。'include' オプションをセットすることでファイル + をインクルードするコマンドのパターンを記述することができます(デフォルト + では C のプログラムで検索できるように設定してあります)。 + "[I" コマンドはマッチしたすべてをリストし、"[ CTRL-I" コマンドはマッチ + した場所にジャンプするコマンドです。 + "[d", "[D", "[ CTRL-D" も同様ですが、'define' オプションで指定されるパ + ターンにマッチする行にのみします + +自動コマンド |autocommand| + ファイルを読み込んだり書き込んだり別のバッファーにジャンプしたりなどす + る時に、ファイル名によって自動的にコマンドを実行することができます。こ + れは C のプログラムを書いたり、ドキュメントを書いたり、普通のテキストを + 書いたりなどする時にオプションをセットしたりそれら特有のマッピングをし + たりするときに便利です。これを利用することで圧縮されたファイルを編集す + ることもできるようになります。 + +コマンドと表現 |expression| + 単純ではあるけれども強力なスクリプト言語を形成するようにいくつかコマン + ドが追加されました。 + |:if| 条件によって実行します。例えば $TERM の値によってオプ + ションを変更したりできます。 + |:while| コマンドを繰り返します。 + |:echo| 式の結果を表示します + |:let| 値を内部変数やオプションなどに割り当てます。 + |:execute| 式からなるコマンドを実行します。 + などなど + +Viminfo |viminfo-file| + コマンドライン履歴やマークやレジスターの内容を起動時に読み込まれるファ + イルに保存しておくことができます。Vim を終了させた後、再び Vim を起動し + たときでも検索コマンドを繰り返したりコマンドラインを繰り返したりできま + す。"'0" を使って最後に編集していた場所にジャンプすることもまた可能で + す。'viminfo' オプションで .viminfo ファイルに保存されるアイテムを選択 + することができます。初期値はオフです。 + +マウスサポート |mouse-using| + マウスは GUI バージョンと Unix、gpm がある Linux、MS-DOS、Win32 上の + xterm でサポートされています。カーソルの場所を変えたりビジュアル領域を + 選択したりレジスターの内容を張りつけたりするのに使うことができます。 + +キーの名前の使い方 |<>| |key-notation| + 特殊なキーはすべて <Up>、<End> などなどのような書き方ができるようになり + ました。この名前はマッピングでも使うことができますしそれらを編集するの + が容易になります。 + +バイナリーファイルを編集する |edit-binary| + Vim はバイナリーファイルを編集することができます。実行形式のファイルを + 壊すことなくいくつかの文字を変更することができます。Vim は NUL 文字を削 + 除しません(内部では <NL> と表されています)。 + |-b| バイナリーファイルの編集を始める時のコマンドライン引数 + |'binary'| "-b" によってセットされるオプションで、ファイルの最後の + 行に <EOL> を付加するのをやめさせます + +Multi-language support |multi-lang| + ダブルバイトやマルチバイトエンコーディングのファイルを編集できます。 + フォントを切り替えずに多言語を同時に編集可能なUTF-8をサポートしていま + す。 |UTF-8| + メッセージやメニューが多くの言語に翻訳されています。 + +============================================================================== +5. その他の Vim の機能 *other-features* + +その他の優れた機能をランダムに集めてみました。 + + +Vim が "-s scriptfile" 付きで起動された場合、"scriptfile" から読み込まれる文字 +は実際あなたがそれをタイプしたように扱われます。もしエディタが終了する前にスク +リプトファイルの終わりに到達した場合は、さらにコンソールから文字を読み込みます + +"-w" オプションはタイプした文字をすべてスクリプトファイルに記録するのに使うこ +とができます。このファイルは後で別のファイルでその編集を繰り返したり、スクリプ +トファイルをに修正を加えてから繰り返しを実行したりするのに使うことができます。 + +"-o" オプションはそれに続く引数の数だけウインドーを開きます。"-o4" は4つのウイ +ンドーを開きます。 + +viはフルスクリーンで動作するためにいくつかのtermcapのエントリが必要でした。Vim +が必要とするのは"cm"エントリ(cursor motion)だけです。 + + +コマンドモードで: + +'showcmd' オプションがセットされていると、スクリーンの最後の行にコマンドの文字 +列が表示されます。これらはコマンドが終了した後に削除されます。 + +'ruler' オプションがセットされているとスクリーンの最後の行に現在のカーソルの位 +置が表示されます。 + +'U' は最後に変更した行からはなれた後でも、また 'u' を実行した後でも動作します。 + +8bit 目がセットされている文字は表示されます。'graphic' オプションがセットされ +ていなければ、'~' と 0xa0 の間の文字は "~?"、"~@"、"~A"、などなどのように表示 +されます。 + +'][' は C の関数の次の終わりに移動します(一桁目が '}' の行)。 +'[]' は C の関数の前の終わりに移動します(一桁目が '}' の行)。 + +']f'、'[f' と 'gf' はカーソルの下のファイル名の編集を開始します。CTRL-W f はカ +ーソルの下のファイル名の編集をウインドーを分割してそこで開始します。 + +'*' はカーソルの下の識別子を前方に検索し、'#' は後方に検索します。 +'K' はカーソルの下の識別子を引数として "keywordprg" オプションに定義されている +プログラムを呼び出します。 + +'%' は前に数を前置することでそのファイルのパーセント数の場所にジャンプします。 +数を前置しない場合はくくられているテキストの中では対応する括弧に移動します。 + +CTRL-] コマンドでは、カーソルは識別子の真ん中にあります。 + +使ったタグは覚えておかれ、タグスタックに覚えておかれるコマンドは CTRL-T と + ':pop' と ':tag' です。 ':tags' はタグスタックの内容をリスとします。 + +'tags' オプションはタグファイル名のリストを設定することができます。ですので複 +数のタグファイルを使うことができます。ファイル名が '.' で始まる場合は '.' はそ +のファイルのパスに展開されます。こうすることで編集しているファイルがあるディレ +クトリと同じディレクトリのタグファイルを使うことができるようになります + +前に編集されたファイルは代替ファイルリストに覚えておかれます。CTRL-^ に数を前 +置することでこのリストのインデックスの番号のファイルにジャンプできます。 +":files"コマンドで開いたファイルの一覧を見ることができます。 +"#<N>"はリスト内の<N>番目のファイルの名前で置換されます。 +"#<"は現在のファイル名から拡張子を取り除いたもので置換されます。 + +検索パターンも強化されました。<NL> 文字を検索パターンや ":s" コマンドの文字列 +の一部に使うことができます。Vi では単にコマンドの終了と見做されます。 + +検索ではマッチした最後にカーソルをおくこともできますし、オフセット文字を使って +検索することもできます。 + +'~'、':next'、':Next'、'n'、'N' にカウントを前置することができるようになりまし +た。 + +'autowrite' オプションがセットされている場合でも ":next!" コマンドはファイルを +書き込みません。Vi ではファイルは上書きされましたが、これはバグだと思われます。 +というのもそういう動作は期待されませんし ':rewind!' コマンドでは書き込まれない +からです。 + +Vi では上書きモードで <CR> を打ち込んだときに文字を削除するのは 'ai' がセット +されている場合のみでした(しかし <Esc> キーが押されるまでは表示されませんでし +た)。Vim は常に文字を削除します(またすぐに表示します)。 + +:wnext コマンドが追加されました。":write" コマンドを実行して ":next" コマンド +を実行するのと同じです。 + +":w!" コマンドは上書き禁止されているファイルでも常に書き込みます。Vi では + ":!chmod+w %" してから ":set noro" としなければなりませんでした。 + +'tildeop' がセットされていると '~' は演算コマンドとして動作します(移動コマンド +を後に続けます)。 + +'J' (連結)コマンドを実行するときにピリオドの後でスペースを挿入するのを一つだけ +にするように 'joinspaces'(js) オプションを再セットすることができます(Vi では2 +つのスペースが挿入されます)。 + +'cw' はいくつかの文字で構成されるホワイトスペースを変更できます(Vi では 'cw' +はスペースを一つだけ変更するのに 'dw' はすべてのホワイトスペースを削除するとい +う紛らわしい仕様でした)。 + +'o' と 'O' は回数を前置することができます(Vi は表示の一部分を削除します)。 + +Ex コマンドの後につけるフラグはサポートされていません(予定もありません)。 + +UNIX システム以外ではでは ":cd" コマンドはホームディレクトリーに移動するのでは +なく(ホームディレクトリはないです)、現在のディレクトリを表示します。":pwd" はす +べてのシステムで現在のディレクトリを表示します。 + +":cd"コマンドの後でもファイル名(引数リストや開いたファイル)は元のファイルを指 +します。Viでは変更のあるファイルには":cd"できません。そうでなければファイル名 +の解釈が変わってしまうからです。 + +':source!' コマンドはファイルから Vi コマンドを読み込みます。 + +':mkexrc' コマンドは現在の変更されているオプションとマッピングを ".exrc" ファ +イルに書き出すコマンドです。':mkvimrc' は ".vimrc" ファイルに書き出します。 + +マッピングで「最後が再帰的であるかどうか」のチェックはされません。つまり次のよ +うなマッピングもできます。 +":map! foo ^]foo". + +マッピングが数字で始まる場合は、Vi ではそのカウントが失われてしまっていました +(例: ":map g 4G" というマッピングを使っていると "7g" は4行目に移動してしまいま +した)。これは Vi のバグだと考えられます。Vim では多くの人が期待する動作である +ようにカウントを連結します(この例の場合は "74G" になります。 + +:put! コマンドは現在の行の上にレジスターの内容を挿入します。 + +Vi での 'p' と 'P' コマンドは挿入されるテキストが一行より短い場合は '.' で繰り +返すことができませんでした。Vim では常に繰り返すことができます。 + +":noremap" コマンドは再マップされないマップを作るのに使うことができます。これ +は2つのキーの意味を交換するのに使うと便利です。":cmap",":cunmap",":cnoremap"は +コマンドライン編集でのみ動作するマッピングです。":imap",":iunmap",":inoremap" +は挿入モードのみで動作するマッピングを定義できます。同様なコマンドは略記にもあ +ります: ":noreabbrev",":iabbrev",":cabbrev", ":iunabbrev",":cunabbrev", +":inoreabbrev",":cnoreabbrev" + +Vi では ":map foo bar" は前の ":map bug foo" というマッピングを削除していまし +た。これはバグと思われますので Vim ではその仕様は含まれません。":unmap! foo" +は "map! bug foo" というマッピングを削除します。なぜならそうでなければマッピン +グを外すのが非常に困難になるからです(これは Vi と同じ動作です)。 + +':' レジスターは最後のコマンドラインを含んでいます。 +'%' レジスターは現在のファイル名を含んでいます。 +'.' レジスターは最後に挿入されたテキストを含んでいます。 + +':dis' コマンドはヤンクレジスターの内容を表示します。 + +CTRL-O/CTRL-I は古い/新しい場所に移動するのに使うことができます。これらの移動 +する場所は '' コマンドで移動する場所と同じですが他のファイルの中でもありえます。 +':jumps' コマンドは古い場所をリストします。 + +'shiftround' オプションがセットされていると '>' と '<' コマンドでは +'shiftwidth' の倍数になるようにインデントは調整されます。 + +'scrolljump' オプションはスクリーンからカーソルが出たときにスクロールする最小 +の行数を設定することができます。もしスクロールが遅い場合はこれをセットしてくだ +さい。 + +'scrolloff' オプションでカーソルの上や下に保持しておく最小の行数を設定できます。 +これを設定しておくとカーソルの前後を見渡せるようになります。かなり大きい数字に +セットしておけばカーソル行は常にウインドーの中央に来ることになります。 + +大文字のマークはファイルを越えてジャンプするのに使うことができます。':marks' +コマンドは現在セットされているすべてのマークをリストします。"']"と"`]"は前に操 +作を行った場所の最後か、テキストを挿入したかプットした場所の最後に移動します。 +"'[" と "`[" は初めに移動します。 + +'shelltype' オプションは Amiga 上で使われるシェルのタイプを反映させるのに使う +ことができます。 + +'highlight' オプションはいくつかのコマンドで使われるハイライトモードを設定する +ことができます。 + +CTRL-A (加算) と CTRL-X (減算) コマンドが新たに追加されました。カウントを前置 +することもでき(初期値 1)、カーソルの下もしくは後の数字をその値の分加算/減算す +るのに使うことができます。数は10進数、8進数(0で始まります)、16進数(0xで始まり +ます)でもよいです。マクロを使うときに非常に便利です。 + +:set コマンドでは "inv" を前置することで二者択一のオプションは逆の意味にするこ +とができます。 + +Vi と Vim の両方で ":substitute" コマンドで CTRL-M を使うことで改行を挿入する +ことができます。Vi ではこのためにテキストに実際の CTRL-M を挿入することができ +なかったのですが、Vim では CTRL-V を前に挿入してから実際の CTRL-M をおくことが +できます。 + + +挿入モードで: + +'revins' オプションがセットされていると挿入は逆方向に向かってなされます。これ +はヘブライ語を入力するためです。普通の文字を挿入するときはカーソルは逆方向にな +りませんしテキストは右方向に動きます。バックスペース、CTRL-W、CTRL-U もまた逆 +方向に動作します。上書きモードではなんら影響しません。コンパイル時にのみ有効に +することができます。 + +オートインデントを削除するのにバックスペースキーをちょうど CTRL-D のように使う +ことができます。 + +'backspace' (bs) オプションが"eol"を含んでいると改行をこえてバックスペースした +り CTRL-U したり CTRL-W することができます。'backspace'が"start"を含んでいると +挿入の初めをこえてバックスペースすることができます。 + +'paste' オプションがセットされているといくつかのオプションが解除され挿入モード +でのマッピングと略記が使用不可になります。こうすることでウインドーシステムでテ +キストを張りつけるときに不測の結果が生じるのを避けることができます。'paste'オ +プションが解除されればオプションの前の値が復元されます。 + +CTRL-T/CTRL-D はカーソルがどこの桁位置にあっても常に現在の行のインデントを挿 +入/削除します。 + +CTRL-@ (前に挿入したテキストを挿入する)は常に動作します(Vi: 初めの文字としてを +打ち込んだときにのみ)。 + +CTRL-A は CTRL-@ のように動作しますが挿入モードから抜けません。 + +CTRL-R {0-9a-z..} はレジスターの内容を挿入するのに使うことができます。 + +'smartindent' オプションがセットされていると、C プログラムはもっとうまく自動イ +ンデントされます。'cindent' オプションをセットしているとさらにうまくインデント +されます。 + +CTRL-Y と CTRL-E は現在のカーソルの上/下の文字をコピーするのに使うことができま +す。 + +CTRL-V を打った後に3桁の8進数を打つことができ、このバイトの値がテキストに一文 +字として挿入されます。キーボードからは打ち込めない内部の文字を使うときに便利で +す。 + +'expandtab' (et) がセットされていると <Tab> は適切な数のスペースに展開されま +す。 + +ウィンドーは常にバッファーの内容を反映します(Vi ではテキストを変更したりそのほ +かいくつかの場合では行われませんでした)。 + +Vim が DIGRAPHS を定義してコンパイルされていれば digraph がサポートされます。 +普通の digraph のセットが含まれるようになり、":digraph" コマンドで見ることがで +きます。":digraph {char1}{char2} {number}" でさらに追加することもできます。 +"CTRL-K {char1} {char2}" とするか "{char1} BS {char2}" とすることで digraph を +入力できます( 'digraph' オプションがセットされている場合のみです)。 + +挿入をカウントを前置して行う場合、例 "10atest <Esc>"、Vi は初めの挿入に対して +のみ wrapmargin を扱うことができましたが、Vim ではすべてに対して扱います。 + +'i' か 'a' コマンドでのカウント前置はすべてのテキストに対して利用できます。Vi +では一つの行に対してのみカウントを前置できました。"3iabc<NL>def<Esc>" は +"abcabcabc<NL>def" が Vi の動作で、"abc<NL>defabc<NL>defabc<NL>def" が Vim で +の動作です。 + + +コマンドラインモードで: + +<Esc> はコマンドラインを実行せずに抜けることができます。Vi ではコマンドライン +は実行されており、ほとんどの人が予測する動作とは違いました(<Esc> を打つことで +常にコマンドモードに戻るべきでしょう)。この問題をなんらかの曖昧なマクロで避け +るにはマクロでの <Esc> はコマンドを実行します。もし <Esc> で Vi のようにコマン +ドを実行したい場合は次のように修正できます。 + ":cmap ^V<Esc> ^V<CR>" + +一般: + +'ttimeout' オプションは 'timeout' オプションに似ていますが、カーソルかファンク +ションキーに対してのみ働きます。'timeoutlen' オプションは待つ時間をミリセコン +ド単位で指定することができます。'esckeys' オプションがセットされていない場合い、 +<Esc> キーで始まるカーソルとファンクションキーは挿入モードでは解釈されません。 + +端末文字列がそれぞれオプションとしてあります。termcap がサポートされていなかっ +たり独自の文字列に変更したい場合に利用することができます。 + +'fileformat' オプションは <EOL> を選択して設定するのに使います: "dos" +<CR><NL>, "unix" <NL>, "mac" <CR>。 +'fileformats' オプションが空でない場合、Vim は <EOL> のタイプを自動的に判断し +ようとします。'fileformat' オプションはそれに従ってセットされます。 + +ジョブコントロールを持たないシステム(古い Unix システムと Unix 以外のシステム) +ではCTRL-Z、":stop"、":suspend" コマンドは新しいシェルを起動します。 + +出力のための対話的なウインドーなしで Vim が Amiga 上で起動された場合、ウインドー +が開かれます(そうして :sh コマンドは動作します)。'-d' 引数で編集する装置を指定 +することができます(例: "-d con:20/20/600/150")。 + +'columns' と 'lines' オプションはディスプレイの幅と高さを指定するのに使うこと +ができます。 + +ファイルの最初と最後の数行はオプションをセットするために読み込まれます。 +'modelines' オプションがどれだけの数の行を読み込もうとするかを決めることができ +ます(初期値は5です)。モードラインでどんな Ex コマンドも実行できる(重大なセキュ +リティ問題です)バージョンの Vi がありますがそれとは違うということに注意してく +ださい。 |trojan-horse| + +'insertmode' オプションがセットされていると(例えば .exrc で) Vim は挿入モード +で起動します。<Esc> キーを押すと元に戻ります。 + +アンドゥの情報はメモリーに保持されます。使用可能なメモリーの量でアンドゥの回数 +とアンドゥ可能なサイズが制限されます。このことは MS-DOS では問題になるかもしれ +ません。Amiga ではほとんど問題にならないですし、Unix と Win32 では大体において +決して問題になることはないです。 + +'backup' か 'writebackup' オプションがセットされていると: ファイルを上書きする +前にバックアップファイル(.bak)が作られます。"backup" オプションがセットされて +いるとバックアップファイルは残されたままになります。 + +Vim は変更されたファイルの一部分やメモリーに入りきらないものをに保持するため +にファイルの最後が ".swp" であるファイルを作成します。このファイルはクラッシュ +した編集セッションを "vim -r file" として復元するのに使われます。'updatecount' +オプションを0にするか Vim を "-n" オプションをつけて起動するとスワップファイル +を使うのをやめさせることができます。.swp ファイルをどこか別の場所に作成させたい +場合は'directory' オプションを設定してください。 + +Vim は8.3形式のファイルシステムでも正しく動作することができます。また Amiga 上 +での汚い DOS もしくは 雑種の DOS ファイルシステムでも使うことができますし、8.3 +形式のファイルシステムを搭載したどんな Unix でも動作します。|'shortname'| もご +覧下さい。 + +エラーメッセージは少なくとも1秒は表示されます(Vi ではエラーメッセージは上書き +されます) + +|hit-return| プロンプトが出た場合でもどんなキーでも打つことができます。<CR>、 +<NL>、<Space> 以外の文字はコマンド(の最初)として解釈されます(Vi では ':' で始 +まるコマンドしか受け付けませんでした)。 + +番号付きレジスターと名前なしレジスターの内容はファイルが変更されたときに覚えて +おかれます。 + +"No lines in buffer" メッセージはマッピングが拒否された理由で表示される、エラー +メッセージではなく普通のメッセージです。 + +The AUX: Amiga のデバイスをサポートしています。 + +============================================================================== +6. コマンドライン引数 *cmdline-arguments* + +異なるバージョンの Vi では異なるコマンドライン引数があります。これはちょっと紛 +らわしいですので便宜のためにこの章では違いの概略を説明します。 + +5つの種類の Vi がここでは考慮されます: + Elvis Elvis version 2.1b + Nvi Nvi version 1.79 + Posix Posix 1003.2 + Vi Vi version 3.7 (Sun 4.1.x) + Vile Vile version 7.4 (不完全) + Vim Vim version 5.2 + +Vim だけがファイル名の後でもオプションを受け付けます。 + ++{command} Elvis, Nvi, Posix, Vi, Vim: "-c {command}" と同じです。 + +- Nvi, Posix, Vi: Ex をバッチモードで起動します + Vim: 標準入力からファイルを読み込みます(バッチモードを使うには + -s を利用してください)。 + +-- Vim: オプションの終わりです。この後はファイル名のみ書くことがで + きます。 + +--cmd {command} Vim: execute {command} before sourcing vimrc files. + +--echo-wid Vim: GTK+ echoes the Window ID on stdout + +--help Vim: ヘルプメッセージを表示して終了します。 + +--literal Vim: take file names literally, don't expand wildcards. + +--nofork Vim: same as |-f| + +--noplugin[s] Vim: Skip loading plugins. + +--remote Vim: edit the files in another Vim server + +--remote-expr {expr} Vim: evaluate {expr} in another Vim server + +--remote-send {keys} Vim: send {keys} to a Vim server and exit + +--remote-silent {file} Vim: edit the files in another Vim server if possible + +--remote-wait Vim: edit the files in another Vim server and wait for it + +--remote-wait-silent Vim: like --remote-wait, no complaits if not possible + +--role {role} Vim: GTK+ 2: set role of main window + +--serverlist Vim: Output a list of Vim servers and exit + +--servername {name} Vim: Specify Vim server name + +--socketid {id} Vim: GTK window socket to run Vim in + +--version Vim: バージョンメッセージを表示して終了します。 + +-? Vile: 簡単な使い方を表示して終了します。 + +-a Elvis: 指定されたファイル名をそれぞれ一つのウインドーに読み込み + ます(Vim では -o を使ってください)。 + +-A Vim: Start in Arabic mode (when compiled with Arabic). + +-b {blksize} Elvis: ファイルのセッションに {blksize} のブロックサイズを使い + ます。 +-b Vim: 'binary' モードをセットします。 + +-C Vim: Vi コンパチブルモードで起動します。 + +-c {command} Elvis, Nvi, Posix, Vim: ファイルを編集バッファーにロードした後 + {command} を Ex コマンドとして走らせます。 + Vim: 10個まで "-c" 引数をとることができます。 + +-d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled + without the |+diff| feature} +-d {device} Vim: I/O に {device} を使います(Amiga のみ)。 + +-dev {device} Vim: Use {device} for I/O (Amiga only). + +-D Vim: debug mode. + +-e Elvis, Nvi, Vim: あたかも "ex" が起動されたように Ex モードで起 + 動します。 + +-E Vim: Start in improved Ex mode |gQ|, like "exim". + +-f Vim: GUI をフォアグラウンドジョブとして起動します(Amiga: 新たに + ウインドーを開きません)。 +-f {session} Elvis: {session} をセッションファイルとして使います。 + +-F Vim: Farsi モードで起動します(Farsi 付きでコンパイルされている + 場合)。 + Nvi: 編集を開始するときにファイルのすべてを読み込まず素早く起動 + します。 + +-G {gui} Elvis: {gui} をユーザーインターフェイスとして使います。 + +-g Vim: GUI で起動します。 +-g N Vile: N 行目から編集を開始します。 + +-h Vim: ヘルプメッセージを表示します。 + Vile: ヘルプファイルを編集します。 + +-H Vim: ヘブライモードで起動します(ヘブライオプションをつけてコン + パイルされている場合)。 + +-i Elvis: それぞれのウインドーを挿入モードで起動します。 +-i {viminfo} Vim: {viminfo} を Viminfo ファイルとして使います。 + +-L Vim: "-r" と同じです(またいくつかのバージョンの Vi でもそうで + す)。 + +-l Nvi, Vi, Vim: 'lisp' と 'showmatch' オプションをセットします。 + +-M Vim: Modifications not allowed, resets 'modifiable' and the + 'write' option. + +-m Vim: 変更を加えることを禁止し、'write' オプションを解除します。 + +-N Vim: コンパチブルモードではないモードで起動します。 + +-n Vim: スワップファイルを使いません。 + +-nb[args] Vim: open a NetBeans interface connection + +-O[N] Vim: Like -o, but use vertically split windows. + +-o[N] Vim: [N] ウインドーを開きます。もしくはそれぞれにそれぞれのファ + イルを開きます。 + +-P {parent-title} Win32 Vim: open Vim inside a parent application window + +-q {name} Vim: {name} をクイックフィクスエラーファイルとして使います。 +-q{name} Vim: 同上。 + +-R Elvis, Nvi, Posix, Vile, Vim: 'readonly' オプションをセットしま + す。 + +-r Elvis, Nvi, Posix, Vi, Vim: 復元モード + +-S Nvi: 'secure' オプションをセットします。 +-S {script} Vim: source script after starting up. + +-s Nvi, Posix, Vim: Exモードでは "-"(サイレントモード)と同じです。 + Elvis: 'safer' オプションをセットします。 +-s {scriptin} Vim: {scriptin} からスクリプトを読み込みます; Ex モードでないと + きにのみ有効です。 +-s {pattern} Vile: {pattern} を検索します。 + +-t {tag} Elvis, Nvi, Posix, Vi, Vim: {tag} を含むファイルを編集します。 +-t{tag} Vim: 同上。 + +-T {term} Vim: {term} に端末名をセットします。 + +-u {vimrc} Vim: {vimrc} ファイルを初期化ファイルとして読み込みます。 + +-U {gvimrc} Vim: {gvimrc} ファイルを GUI 初期化ファイルとして読み込みます。 + +-v Nvi, Posix, Vi, Vim: ノーマルモードで起動します(Vi ではビジュア + ルモードを意味していました)。 + Vile: 閲覧モードで起動し、変更は不可です。 + +-V Elvis, Vim: 冗長なモードで起動します。 +-V{nr} Vim: Verbose mode with specified level. + +-w {size} Elvis, Posix, Nvi, Vi, Vim:'window'の値を{size}にセットします。 +-w{size} Nvi, Vi: "-w {size}"と同じです。 +-w {name} Vim: スクリプトファイル{name}に書き込みます(non-digit で起動し + なければなりません)。 + +-W {name} Vim: スクリプトファイル{name}に追加します。 + +-x Vi, Vim: 暗号鍵の入力を尋ねさせます。|encryption|もご覧下さい。 + +-X Vim: Don't connect to the X server. + +-y Vim: Start in easy mode, like |evim|. + +-Z Vim: restricted mode + +@{cmdfile} Vile: {cmdfile} を初期化ファイルに使います。 + + vim:tw=78:ts=8:ft=help:norl: From 2592cec2ca3728c96a5b2d3e92a4c0479329763b Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Thu, 27 Jan 2005 06:21:38 +0000 Subject: [PATCH 006/783] add: ignore Session.vim git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@6 a429a4b8-4c93-91f1-de24-85204d8cde48 From 9d8c8905a687e412ecfe8ceafb9a268a180fefe4 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Thu, 27 Jan 2005 10:17:47 +0000 Subject: [PATCH 007/783] add: files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@7 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/digraph.jax | 324 +++++++++++++ ja/farsi.jax | 272 +++++++++++ ja/hangulin.jax | 111 +++++ ja/if_ole.jax | 164 +++++++ ja/if_perl.jax | 268 +++++++++++ ja/if_sniff.jax | 102 ++++ ja/if_tcl.jax | 512 ++++++++++++++++++++ ja/message.jax | 765 ++++++++++++++++++++++++++++++ ja/motion.jax | 1188 +++++++++++++++++++++++++++++++++++++++++++++++ ja/os_os2.jax | 214 +++++++++ ja/quote.jax | 248 ++++++++++ ja/repeat.jax | 528 +++++++++++++++++++++ ja/starting.jax | 1160 +++++++++++++++++++++++++++++++++++++++++++++ 13 files changed, 5856 insertions(+) create mode 100644 ja/digraph.jax create mode 100644 ja/farsi.jax create mode 100644 ja/hangulin.jax create mode 100644 ja/if_ole.jax create mode 100644 ja/if_perl.jax create mode 100644 ja/if_sniff.jax create mode 100644 ja/if_tcl.jax create mode 100644 ja/message.jax create mode 100644 ja/motion.jax create mode 100644 ja/os_os2.jax create mode 100644 ja/quote.jax create mode 100644 ja/repeat.jax create mode 100644 ja/starting.jax diff --git a/ja/digraph.jax b/ja/digraph.jax new file mode 100644 index 000000000..8901f1060 --- /dev/null +++ b/ja/digraph.jax @@ -0,0 +1,324 @@ +COMMENT: 合わせ文字の解説(設定・入力方法) +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*digraph.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +*注意: DIGRAPHS、DIGRAPHを日本語に置き換えること(北条)* + +DIGRAPHS *digraphs* *Digraphs* + +DIGRAPHSは、通常のキーボードから普通に入力できないキャラクタを入力するために +使われる。これらは多くの場合、8ビットセットを持つアクセントされたキャラクタで +ある。DIGRAPHSは、CTRL-Vと共に入力される10進表記よりも覚えやすい(|i_CTRL-V|を +参照せよ)。 + +ユーザーマニュアルの|24.9|に簡単な説明があります。 +代わりに'keymap'オプションを使えます。 + +1. DIGRAPHSを定義する |digraphs-define| +2. DIGRAPHSを使う |digraphs-use| +3. 標準のDIGRAPHS |digraphs-default| + +{Vi はこれらのコマンドを持たない} + +============================================================================== +1. DIGRAPHSを定義する *digraphs-define* + + *:dig* *:digraphs* +:dig[raphs] 現在定義されているDIGRAPHSを表示する。 + *E104* *E39* +:dig[raphs] {char1}{char2} {number} ... + DIGRAPH{char1}{char2}をリストに追加する。{number}は + そのキャラクタを表す10進表記。 + 例: > + :digr e: 235 a: 228 +< DIGRAPHの定義をを無効にするには最初の文字に + '_'(underscore)を指定します。それは特別な意味を持ちま + す。 + +Vimは普通|+digraphs|特性を持ってコンパイルされる。この特性が無効である場合、 +":digraph"コマンドはエラーメッセージを表示する。 + +":digraphs"の出力例: > + TH Þ 222 ss ß 223 a! à 224 a' á 225 a> â 226 a? ã 227 a: ä 228 + +各欄の最初の2つのキャラクタは、そのDIGRAPHを入力するために打たねばならない +キャラクタである。 + +各欄の中央は、結果として表示されるキャラクタである。この表は、DIGRAPHSをサポ +ートしていないシステム上で閲覧した場合、また、このファイルをプリントアウトし +たときには乱れる可能性がある。 + +10進数はそのキャラクタのASCIIコードである。 + +============================================================================== +2. DIGRAPHSを使う *digraphs-use* + +DIGRAPHSの入力には2つの方法がある: *i_digraph* + CTRL-K {char1} {char2} または + {char1} <BS> {char2} +最初のものは常に使える; 2番目のものは'digraph'オプションが設定されているとき +のみ使える。 + +{char1}{char2}によるDIGRAPHが存在しない場合、Vimは{char2}{char1}による +DIGRAPHを検索する。これは、どちらのキャラクタが先か思い出せない場合に役立つ。 + +CTRL-K {char1}と入力したとき、{char1}がスペシャルキーであれば、Vimはスペシャ +ルキーに対するコードを入力する。これはDIGRAPHではない。 + +一旦DIGRAPHを入力してしまえば、Vimはそのキャラクタを、ファイル上でも画面上で +も1キャラクタぶんを占める、普通のキャラクタとして取り扱う。例えば: > + 'B' <BS> 'B' will enter the broken '|' character (166) + 'a' <BS> '>' will enter an 'a' with a circumflex (226) + CTRL-K '-' '-' will enter a soft hyphen (173) + +標準のDIGRAPHは、":digraphs"コマンドで一覧できる。いくつかの特徴的なシステムに +従って、以下の|digraph-table|に一覧してある。 + +CTRL-Kについて、ひとつの汎用的なDIGRAPHがある: CTRL-K <Space> {char}で、{char} +の最高位のビットを立てて入力する。これはメタキャラクタの入力に使える。 + +<Esc>キャラクタは、DIGRAPHの一部になることはできない。<Esc>を押すと、Vimは +DIGRAPHの入力を止め、DIGRAPHを使用していないときと同様に、挿入モード、あるい +はコマンドラインモードを終了する。meta-ESC (CSI) を入力するのに CTRL-V 155 を +使ってください。 + +'e'とタイプすべきところを'a'と間違ってしまったときには、'a' <BS> 'e'と打つだ +ろう。しかし、それはDIGARAPHであるので、望んだものは得られない。これを正しく +するためには、<BS> eをもう一度打ち込む必要がある。これを避けるためには、 +'digraph'オプションを設定せず、DIGRAPHの入力にCTRL-Kを使う。 + +ASCII値が128以上のキャラクタを持つキャラクタセットにおいて、Vimの使用は問題 +を生じる。例えば: 挿入モードでue(u-umlaut)を入力した際、エディタは\334を返す。 +挿入モードを抜ければ、全て正常になる。fmtは整形中のテキストから128以上のASCII +コードを持つ全てのキャラクタを取り除くことに注意せよ。いくつかのUnixシステム +においては、LC_CTYPE環境変数を定義する必要があるということである。cshを使っ +ているならば、.cshrcに次の1行を加える: > + setenv LC_CTYPE iso_8859_1 + +============================================================================== +3. 標準のDIGRAPHS *digraphs-default* + +Vimには標準のDIGRAPHキャラクタがある。":digraphs"の出力と見比べてください。 + +ほとんどのシステムでVimは同じDIGRAPHSを使います。それはUnicodeかISO-8859-1文 +字セットで使えます。デフォルトのDIGRAPHSの出典はRFC1345です。覚えやすいよう +に2番目の文字は標準的な意味を持っています。 + + char name char meaning ~ + Exclamation mark ! Grave + Apostrophe ' Acute accent + Greater-Than sign > Circumflex accent + Question Mark ? tilde + Hyphen-Minus - Macron + Left parenthesis ( Breve + Full Stop . Dot Above + Colon : Diaeresis + Comma , Cedilla + Underline _ Underline + Solidus / Stroke + Quotation mark " Double acute accent + Semicolon ; Ogonek + Less-Than sign < Caron + Zero 0 Ring above + Two 2 Hook + Nine 9 Horn + + Equals = Cyrillic + Asterisk * Greek + Percent sign % Greek/Cyrillic special + Plus + smalls: Arabic, capitals: Hebrew + Three 3 some Latin/Greek/Cyrillic letters + Four 4 Bopomofo + Five 5 Hiragana + Six 6 Katakana + +例: a: is ä and o: is ö + +これらはRFC1345における1バイト文字用のものです。他は":digraphs"の出力を見て +ください。255よりも大きい値の文字はVimが|+multi_byte|付きでコンパイルされた +ときのみ有効です。 + *digraph-table* +char digraph hex dec official name ~ +^@ NU 0x00 0 NULL (NUL) +^A SH 0x01 1 START OF HEADING (SOH) +^B SX 0x02 2 START OF TEXT (STX) +^C EX 0x03 3 END OF TEXT (ETX) +^D ET 0x04 4 END OF TRANSMISSION (EOT) +^E EQ 0x05 5 ENQUIRY (ENQ) +^F AK 0x06 6 ACKNOWLEDGE (ACK) +^G BL 0x07 7 BELL (BEL) +^H BS 0x08 8 BACKSPACE (BS) +^I HT 0x09 9 CHARACTER TABULATION (HT) +^@ LF 0x0a 10 LINE FEED (LF) +^K VT 0x0b 11 LINE TABULATION (VT) +^L FF 0x0c 12 FORM FEED (FF) +^M CR 0x0d 13 CARRIAGE RETURN (CR) +^N SO 0x0e 14 SHIFT OUT (SO) +^O SI 0x0f 15 SHIFT IN (SI) +^P DL 0x10 16 DATALINK ESCAPE (DLE) +^Q D1 0x11 17 DEVICE CONTROL ONE (DC1) +^R D2 0x12 18 DEVICE CONTROL TWO (DC2) +^S D3 0x13 19 DEVICE CONTROL THREE (DC3) +^T D4 0x14 20 DEVICE CONTROL FOUR (DC4) +^U NK 0x15 21 NEGATIVE ACKNOWLEDGE (NAK) +^V SY 0x16 22 SYNCRONOUS IDLE (SYN) +^W EB 0x17 23 END OF TRANSMISSION BLOCK (ETB) +^X CN 0x18 24 CANCEL (CAN) +^Y EM 0x19 25 END OF MEDIUM (EM) +^Z SB 0x1a 26 SUBSTITUTE (SUB) +^[ EC 0x1b 27 ESCAPE (ESC) +^\ FS 0x1c 28 FILE SEPARATOR (IS4) +^] GS 0x1d 29 GROUP SEPARATOR (IS3) +^^ RS 0x1e 30 RECORD SEPARATOR (IS2) +^_ US 0x1f 31 UNIT SEPARATOR (IS1) + SP 0x20 32 SPACE +# Nb 0x23 35 NUMBER SIGN +$ DO 0x24 36 DOLLAR SIGN +@ At 0x40 64 COMMERCIAL AT +[ <( 0x5b 91 LEFT SQUARE BRACKET +\ // 0x5c 92 REVERSE SOLIDUS +] )> 0x5d 93 RIGHT SQUARE BRACKET +^ '> 0x5e 94 CIRCUMFLEX ACCENT +` '! 0x60 96 GRAVE ACCENT +{ (! 0x7b 123 LEFT CURLY BRACKET +| !! 0x7c 124 VERTICAL LINE +} !) 0x7d 125 RIGHT CURLY BRACKET +~ '? 0x7e 126 TILDE +^? DT 0x7f 127 DELETE (DEL) +~@ PA 0x80 128 PADDING CHARACTER (PAD) +~A HO 0x81 129 HIGH OCTET PRESET (HOP) +~B BH 0x82 130 BREAK PERMITTED HERE (BPH) +~C NH 0x83 131 NO BREAK HERE (NBH) +~D IN 0x84 132 INDEX (IND) +~E NL 0x85 133 NEXT LINE (NEL) +~F SA 0x86 134 START OF SELECTED AREA (SSA) +~G ES 0x87 135 END OF SELECTED AREA (ESA) +~H HS 0x88 136 CHARACTER TABULATION SET (HTS) +~I HJ 0x89 137 CHARACTER TABULATION WITH JUSTIFICATION (HTJ) +~J VS 0x8a 138 LINE TABULATION SET (VTS) +~K PD 0x8b 139 PARTIAL LINE FORWARD (PLD) +~L PU 0x8c 140 PARTIAL LINE BACKWARD (PLU) +~M RI 0x8d 141 REVERSE LINE FEED (RI) +~N S2 0x8e 142 SINGLE-SHIFT TWO (SS2) +~O S3 0x8f 143 SINGLE-SHIFT THREE (SS3) +~P DC 0x90 144 DEVICE CONTROL STRING (DCS) +~Q P1 0x91 145 PRIVATE USE ONE (PU1) +~R P2 0x92 146 PRIVATE USE TWO (PU2) +~S TS 0x93 147 SET TRANSMIT STATE (STS) +~T CC 0x94 148 CANCEL CHARACTER (CCH) +~U MW 0x95 149 MESSAGE WAITING (MW) +~V SG 0x96 150 START OF GUARDED AREA (SPA) +~W EG 0x97 151 END OF GUARDED AREA (EPA) +~X SS 0x98 152 START OF STRING (SOS) +~Y GC 0x99 153 SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) +~Z SC 0x9a 154 SINGLE CHARACTER INTRODUCER (SCI) +~[ CI 0x9b 155 CONTROL SEQUENCE INTRODUCER (CSI) +~\ ST 0x9c 156 STRING TERMINATOR (ST) +~] OC 0x9d 157 OPERATING SYSTEM COMMAND (OSC) +~^ PM 0x9e 158 PRIVACY MESSAGE (PM) +~_ AC 0x9f 159 APPLICATION PROGRAM COMMAND (APC) +| NS 0xa0 160 NO-BREAK SPACE +¡ !I 0xa1 161 INVERTED EXCLAMATION MARK +¢ Ct 0xa2 162 CENT SIGN +£ Pd 0xa3 163 POUND SIGN +¤ Cu 0xa4 164 CURRENCY SIGN +¥ Ye 0xa5 165 YEN SIGN +¦ BB 0xa6 166 BROKEN BAR +§ SE 0xa7 167 SECTION SIGN +¨ ': 0xa8 168 DIAERESIS +© Co 0xa9 169 COPYRIGHT SIGN +ª -a 0xaa 170 FEMININE ORDINAL INDICATOR +« << 0xab 171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +¬ NO 0xac 172 NOT SIGN +­ -- 0xad 173 SOFT HYPHEN +® Rg 0xae 174 REGISTERED SIGN +¯ 'm 0xaf 175 MACRON +° DG 0xb0 176 DEGREE SIGN +± +- 0xb1 177 PLUS-MINUS SIGN +² 2S 0xb2 178 SUPERSCRIPT TWO +³ 3S 0xb3 179 SUPERSCRIPT THREE +´ '' 0xb4 180 ACUTE ACCENT +µ My 0xb5 181 MICRO SIGN +¶ PI 0xb6 182 PILCROW SIGN +· .M 0xb7 183 MIDDLE DOT +¸ ', 0xb8 184 CEDILLA +¹ 1S 0xb9 185 SUPERSCRIPT ONE +º -o 0xba 186 MASCULINE ORDINAL INDICATOR +» >> 0xbb 187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +¼ 14 0xbc 188 VULGAR FRACTION ONE QUARTER +½ 12 0xbd 189 VULGAR FRACTION ONE HALF +¾ 34 0xbe 190 VULGAR FRACTION THREE QUARTERS +¿ ?I 0xbf 191 INVERTED QUESTION MARK +À A! 0xc0 192 LATIN CAPITAL LETTER A WITH GRAVE +Á A' 0xc1 193 LATIN CAPITAL LETTER A WITH ACUTE + A> 0xc2 194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX +à A? 0xc3 195 LATIN CAPITAL LETTER A WITH TILDE +Ä A: 0xc4 196 LATIN CAPITAL LETTER A WITH DIAERESIS +Å AA 0xc5 197 LATIN CAPITAL LETTER A WITH RING ABOVE +Æ AE 0xc6 198 LATIN CAPITAL LETTER AE +Ç C, 0xc7 199 LATIN CAPITAL LETTER C WITH CEDILLA +È E! 0xc8 200 LATIN CAPITAL LETTER E WITH GRAVE +É E' 0xc9 201 LATIN CAPITAL LETTER E WITH ACUTE +Ê E> 0xca 202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX +Ë E: 0xcb 203 LATIN CAPITAL LETTER E WITH DIAERESIS +Ì I! 0xcc 204 LATIN CAPITAL LETTER I WITH GRAVE +Í I' 0xcd 205 LATIN CAPITAL LETTER I WITH ACUTE +Î I> 0xce 206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX +Ï I: 0xcf 207 LATIN CAPITAL LETTER I WITH DIAERESIS +Ð D- 0xd0 208 LATIN CAPITAL LETTER ETH (Icelandic) +Ñ N? 0xd1 209 LATIN CAPITAL LETTER N WITH TILDE +Ò O! 0xd2 210 LATIN CAPITAL LETTER O WITH GRAVE +Ó O' 0xd3 211 LATIN CAPITAL LETTER O WITH ACUTE +Ô O> 0xd4 212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX +Õ O? 0xd5 213 LATIN CAPITAL LETTER O WITH TILDE +Ö O: 0xd6 214 LATIN CAPITAL LETTER O WITH DIAERESIS +× *X 0xd7 215 MULTIPLICATION SIGN +Ø O/ 0xd8 216 LATIN CAPITAL LETTER O WITH STROKE +Ù U! 0xd9 217 LATIN CAPITAL LETTER U WITH GRAVE +Ú U' 0xda 218 LATIN CAPITAL LETTER U WITH ACUTE +Û U> 0xdb 219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX +Ü U: 0xdc 220 LATIN CAPITAL LETTER U WITH DIAERESIS +Ý Y' 0xdd 221 LATIN CAPITAL LETTER Y WITH ACUTE +Þ TH 0xde 222 LATIN CAPITAL LETTER THORN (Icelandic) +ß ss 0xdf 223 LATIN SMALL LETTER SHARP S (German) +à a! 0xe0 224 LATIN SMALL LETTER A WITH GRAVE +á a' 0xe1 225 LATIN SMALL LETTER A WITH ACUTE +â a> 0xe2 226 LATIN SMALL LETTER A WITH CIRCUMFLEX +ã a? 0xe3 227 LATIN SMALL LETTER A WITH TILDE +ä a: 0xe4 228 LATIN SMALL LETTER A WITH DIAERESIS +å aa 0xe5 229 LATIN SMALL LETTER A WITH RING ABOVE +æ ae 0xe6 230 LATIN SMALL LETTER AE +ç c, 0xe7 231 LATIN SMALL LETTER C WITH CEDILLA +è e! 0xe8 232 LATIN SMALL LETTER E WITH GRAVE +é e' 0xe9 233 LATIN SMALL LETTER E WITH ACUTE +ê e> 0xea 234 LATIN SMALL LETTER E WITH CIRCUMFLEX +ë e: 0xeb 235 LATIN SMALL LETTER E WITH DIAERESIS +ì i! 0xec 236 LATIN SMALL LETTER I WITH GRAVE +í i' 0xed 237 LATIN SMALL LETTER I WITH ACUTE +î i> 0xee 238 LATIN SMALL LETTER I WITH CIRCUMFLEX +ï i: 0xef 239 LATIN SMALL LETTER I WITH DIAERESIS +ð d- 0xf0 240 LATIN SMALL LETTER ETH (Icelandic) +ñ n? 0xf1 241 LATIN SMALL LETTER N WITH TILDE +ò o! 0xf2 242 LATIN SMALL LETTER O WITH GRAVE +ó o' 0xf3 243 LATIN SMALL LETTER O WITH ACUTE +ô o> 0xf4 244 LATIN SMALL LETTER O WITH CIRCUMFLEX +õ o? 0xf5 245 LATIN SMALL LETTER O WITH TILDE +ö o: 0xf6 246 LATIN SMALL LETTER O WITH DIAERESIS +÷ -: 0xf7 247 DIVISION SIGN +ø o/ 0xf8 248 LATIN SMALL LETTER O WITH STROKE +ù u! 0xf9 249 LATIN SMALL LETTER U WITH GRAVE +ú u' 0xfa 250 LATIN SMALL LETTER U WITH ACUTE +û u> 0xfb 251 LATIN SMALL LETTER U WITH CIRCUMFLEX +ü u: 0xfc 252 LATIN SMALL LETTER U WITH DIAERESIS +ý y' 0xfd 253 LATIN SMALL LETTER Y WITH ACUTE +þ th 0xfe 254 LATIN SMALL LETTER THORN (Icelandic) +ÿ y: 0xff 255 LATIN SMALL LETTER Y WITH DIAERESIS + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/farsi.jax b/ja/farsi.jax new file mode 100644 index 000000000..ae054e881 --- /dev/null +++ b/ja/farsi.jax @@ -0,0 +1,272 @@ +COMMENT: アラビア語テキストの取り扱い方 +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*farsi.txt* For Vim version 6.3. Last change: 2002 Oct 29 + + + VIM REFERENCE MANUAL by Mortaza Ghassab Shiran + + +右から左への書式とVimのイラン語マッピング *farsi* *Farsi* + +{Vi はこれらのコマンドを持たない} + + *E27* +右から左への書式と、イラン語マッピングをサポートをするには、Vimを|+farsi|特 +性と共にコンパイルする必要がある。 + +これらの機能はMortaza G. Shiran <shiran@jps.net>によって作られた。 + + +イントロダクション +------------------ +右から左への書式のファイルでは、文字は画面上右から左へと現れる。この種のファ +イルは、イラン語のドキュメントを書くとき、ファックスの作成、あるいはイラン語 +のメモ書きで、特に有用である。 + +コマンドのプロンプトとヘルプファイルはイラン語ではない、そのため、標準のViの +ユーザーインターフェイスは変わらない。 + + +特色 +---- +o 左から右への書式のファイルを、オリジナルのVimと変わりなく編集する。 + +o 右から左へのウィンドウで、ファイルを閲覧、編集する。ファイルの方向性は + ウィンドウごとであり、同じファイルを右から左モードと左から右モードの両方 + で、同時に見ることも可能である。 + +o オリジナルのVimとの互換性。ほとんど全ての機能が右から左モードで使える + (以下のバグを参照)。 + +o キーボードマッピングの変更と、反転挿入モードはコマンド1つで変更できる。 + +o 反転挿入モードから、ファイルの正しい位置へ(可能ならば)復帰する。 + +o イラン語モードでも、数字は左から右へと入力される。非数字キャラクタの入力 + されると、そのキャラクタは最後の数字のすぐ左に挿入される。 + +o 右から左への書式に対する特別な端末機能を必要としない。右から左への書式に + 関する変更は、完全にハードウェア非依存である。イラン語フォントのみが必要 + である。 + +o 反転挿入モードでのコマンドラインでは、イラン語キーマッピングが使われる。 + +o 左から右モードと右から左モードは、F8ファンクションキーで切り替える。 + +o イラン語ISIR-3342標準エンコードとVimイラン語は、F9ファンクションキーによ + って切り替える。これは右から左モードで書かれたテキストにおいてのみ意味を + 持つため、この機能は右から左モードでしかサポートされていない。 + +イラン語フォント *farsi fonts* +---------------- + +次のファイルは、"extra"アーカイブが解凍されているなら、'$VIM/farsi'ディレクトリのサブディレクトリに含まれている。 + + + far-a01.pcf Linuxを含むUnixシステムの、X Window System用フォント + + far-a01.bf SunOSのX Window System用フォント + + far-a01.f16 Linuxを含むUnixシステムのスクリーンフォント + + far-a01.fon Windows NT/95/98用のmonospacedフォント + + far-a01.com DOS用のスクリーンフォント + + +フォントのインストール +---------------------- + +o MS Windows (NT/95/98)でのフォントのインストール + + 'コントロールパネル'から、'フォント'を選択。'ファイル'メニューから + '新しいフォントのインストール...'を選択。'far-a01.fon'を参照、選択し、 + インストールのガイドに従う。 + NOTE: 何人かの人がこの方法でできなかったと言っている。 + 解決方法はまだわからない。 + +o X Window System (Unix/Linux)でのフォントのインストール + + システムに依って、far-a01.pcf.Z、またはfar-a01.pcf.gzを選んだディレクト + リにコピーする。イラン語フォントの入ったディレクトリに移動し、次のコマ + ンドを実行する: + + > mkfontdir + > xset +fp path_name_of_farsi_fonts_directory + +o X Window System (SunOS)でのフォントのインストール + + far-a01.bfフォントを選択したディレクトリにコピーする。far-a01.bfフォント + の入ったディレクトリに移動し、次のコマンドを実行する: + + > fldfamily + > xset +fp path_name_of_fonts_directory + +o ASCIIスクリーンフォント(Unix/Linux)のインストール + + Linuxシステムでは、far-a01.f16フォントを/usr/lib/kbd/consolefontsディレク + トリにコピーし、"setfont far-a01.f16"として、フォント設定プログラムを実行 + する。他のシステム(例、SCO Unix)については、システム管理マニュアルのフォン + トインストールのセクションを参照。 + +o ASCIIスクリーンフォント(DOS)のインストール + + システム電源投入後、VIMの最初の起動より早く、フォントアップロードプログラ + ムfar-a01.comを実行して、イラン語フォントをアップロードする。 + + +使い方 +------ +VIMの起動に先んじて、VIMがイラン語モードで実行できる環境を設定する必要がある。 +イラン語フォントのインストールに加えて、いくつかのシステム環境において、次の +点に関して設定する必要があるかも知れない: キーコードのマッピング、ASCIIスクリ +ーンモードでのグラフィックカードの読込み、8ビットクリーンモードでのIOドライ +バの設定など…。 + +o イラン語フォントを設定する + + + VIM GUIモードでは'guifont'にfar-a01を設定する。これはVIMウィンドウ + 内で':set guifont=far-a01'を入力すればよい。 + + .vimrcファイル(NT/95/98プラットホームでは_vimrc)に + ':set guifont far-a01'を加えることで、VIMの起動中に'guifont'を + far-a01に設定することができる。 + + X Window System環境では、'-fn far-a01'オプションでVIMを起動してもよ + い。 + + + xterm内でのVIMに関しては、xtermをイラン語フォントで起動する(例、 + kterm -fn far-a01)。それから、kterm内でVIMを起動する。 + + + DOS上のVIMに関しては、VIMを最初に起動する前に、far-a01.comフォントア + ップロードプログラムを実行して、イラン語フォントをアップロードする。 + +o イラン語キーマッピングを有効にする + + イラン語キーマッピングを有効にするために、'altkeymap'と'fkmap'を設定する。 + これは、VIMウィンドウ内で':set akm'、または':set fk'と入力すればよい。 + .vimrc、またはNT/95/98プラットホームでは_vimrcに、':set akm'、あるいは + ':set fk'を追加することで、'altkeymap'や'fkmap'をデフォルトで設定すること + ができる。 + + イラン語キーマッピングを、標準の第2言語キーマッピングとして切り替えるため + には、':set noakm'と入力して'altkeymap'をリセットする。 + +o 右から左への書式、イラン語モード + + デフォルトで、VIMは左から右への書式のモードで起動する。次の示すのは、ウィ + ンドウの方向性を変更する方法である: + + + VIMを-Fオプションで起動する(例、vim -F ...)。 + + + 左から右モードを右から左モードを切り替える、F8ファンクションキーを使用す + る。 + + + 左から右モードにいる間、'set rl'('rl'はrightleftの略語)をコマンドライン + で入力する。 + + + VIMを右から左モードで恒久的に起動するには、'set rl'という行を'.vimrc'に + 加えるとよい。 + +エンコーディング +---------------- + +使用されているエンコーディング方式は、VIM拡張ISIR-3342標準であり、組込み関数 +で、VIM拡張ISIR-3342とISIR-3342標準間の変換ができるようになっている。 + +文書の可搬性という理由から、エンコーディング方式は異なるプラットホーム間で同 +一に保たれる(例えば、UNIXとNT/95/98、MS DOS、などなど)。 + + +o キーボード + + + 挿入/置換モードでのCTRL-_は、イラン語(akm)/ラテンモードを次のように切り + 替える: + + + CTRL-_は、編集モードでタイプされたテキストの最後にカーソルを移動する。 + + + コマンドモードでのCTRL-_は、キーボードマッピングのみをイラン語(akm)/ラテ + ン語で切り替える。イラン語のテキストの入力は、反転入力モードで行われる。 + + + F8 - 左から右モードと右から左モードを切り替える。 + + + F9 - ISIR-3342標準エンコーディングとVIM拡張ISIR-3342エンコーディング(右 + から左モードでのみサポートされる)を切り替える。 + + + キーボードマッピングは、イラン語ISIR-2901標準に基づいている。 + 次の表は、イラン語モード(akm)が設定されている場合のキーボードマッピング + である: + + ------------------------------------- + ` 1 2 3 4 5 6 7 8 9 0 - = + � � � � � � � � � � � � � + ------------------------------------- + ~ ! @ # $ % ^ & * ( ) _ + + ~ � � � � � � � � � � � � + ------------------------------------- + q w e r t z u i o p [ ] + � � � � � � � � � � � � + ------------------------------------- + Q W E R T Z U I O P { } + � � � � � � � � [ ] { } + ------------------------------------- + a s d f g h j k l ; ' \ + � � � � � � � � � � � � + ------------------------------------- + A S D F G H J K L : " | + � �� � � � � � � � � � � + ------------------------------------- + < y x c v b n m , . / + � � � � � � � � � � � + ------------------------------------- + > Y X C V B N M < > ? + � � � � � � � � � � � + ------------------------------------- + +注意: + � はイラン語のPSPを意味する (スペースなしの中断) + + � はイラン語のPCNを意味する (HAMZE属性のため) + +制限事項 +-------- + +o 挿入/置換モードでfkmap(イラン語モード)が設定されている場合、CTRL-Bはサポ + ートされない。 + +o ラテン/イラン語でキャラクタマッピングを変更した場合、リドゥバッファはリ + セットされる(空になる)。すなわち、('.'を使った)リドゥは、1つのモードに + いる間のみ、有効であり、機能する。 + +o イラン語モードで数字が入力されると、リドゥバッファはリセットされる(空に + なる)。すなわち、数字を入力した後では最後の変更を('.'を使って)リドゥで + きない。 + +o 左から右モードで、イラン語モードがセットされているとき、CTRL-Rはサポート + されない。 + +o 右から左モードでは、反転入力によるパターン検索を除いて、'Latin'モードの + パターン検索は機能しない。 + +o コマンドモードでは、左から右への数字入力はサポートされておらず、さらに融 + 通を効かせるために、キーマッピングのロジックは制限される。 + +o X Winodw System環境で、xtermターミナルエミュレータ内でVIMを実行し、イラン + 語モードを設定したい場合は、ANSI互換のxtermターミナルエミュレータを使用す + る必要がある。これは、標準のxtermターミナルエミュレータでは、10進で128以 + 上の文字コードが何らかの意味を持ってしまうためである。 + + 注意: X Window System環境では、VIM GUIはイラン語モードで健全に動作する。 + これはxtermなどのターミナルエミュレータを必要としない。 + + +バグ +---- +イラン語モードが設定されていて、挿入/置換モードにいるとき、繰り返しカーソル位置 +を(カーソルの動きによって)変更し、新しいテキストを入力し、それから最後の変更を +アンドゥしようとすると、アンドゥは1つの変更の後に遅れる。しかし、アンドゥを続 +けようとすれば、変更前のテキストの行にまで戻る。Uで現在の行に行われた全ての変更 +をアンドゥすることもできる。 + +バグに関する詳細は、rileft.txtを参照。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/hangulin.jax b/ja/hangulin.jax new file mode 100644 index 000000000..736a33541 --- /dev/null +++ b/ja/hangulin.jax @@ -0,0 +1,111 @@ +COMMENT: ハングル入力方法 +STATUS: finished 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*hangulin.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + + VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam + +イントロダクション *hangul* +------------------ +これは GUI version の Vim でハングル(韓国語)を入力するための説明です。XIM プロ +グラムを持っている場合は、|+xim| 機能を使うことができます。基本的にこのファイ +ルは XIM プログラムを持っていない方向けの説明です。 + +コンパイル +---------- +次のオプションは最低限の指定であり、他の configure オプションを追加することも +できます。 > + + ./configure -with-x --enable-multibyte --enable-fontset --enable-hangulinput + +そして、|+hangul_input| 機能が configure によって有効になっているかどうか、 +feature.h をチェックすべきです。そして、他のオプションも選択することができます。 +たとえば、2 bulsik か 3 bulsik のどちらのキーボード・タイプを使うかなど。次の +ようなキーワードがファイルにはあります。 +> + #define HANGUL_DEFAULT_KEYBOARD 2 + #define ESC_CHG_TO_ENG_MODE + /* #define X_LOCALE */ + /* #define SLOW_XSERVER */ + +環境変数 +-------- +LANG 変数を、ko や ko_KR.euc のような韓国語ロカールに指定する必要があります。 +LC_ALL 変数をセットしている場合は、それも韓国語ロカールである必要があります。 + +VIM リソース +------------ +次の行を vimrc ($HOME/.vimrc) に加えてください。 > + + :set fileencoding=korea + +キーボード +---------- +VIM_KEYBOARD か HANGUL_KEYBOARD_TYPE 環境変数を使うことによって、キーボード・ +タイプ(2 bulsk か 3 bulsik)を変更することができます。sh の場合で、2 bulsik に +するには、次を実行してください: > + + export VIM_KEYBOARD="2" +もしくは: > + export HANGUL_KEYBOARD_TYPE="2" + +両方がセットされている場合は、VIM_KEYBOARD が優先されます。 + +ハングル・フォント +------------------ +$HOME/.Xdefaults か $HOME/.gvimrc でテキストのフォントを設定することができます。 +しかし、ハングルを使うには、vimrc で 'guifontset' を設定する必要があります。 + +$HOME/.Xdefaults: > + Vim.font: english_font + + ! 次の行は Athena version でのハングル・メニューに使われます + *international: True + Vim*fontSet: english_font,hangul_font + + ! 次の行は Motif version でのハングル・メニューに使われます + *international: True + Vim*fontList: english_font;hangul_font: + +$HOME/.gvimrc: > + set guifontset=english_font,hangul_font + +注意! , (コンマ) か ; (セミコロン)です。 + +そして ':set guifont' が設定されていてはいけません。もし設定されていると GVim +は ':set guifontset' を無視します。つまり、Vim がフォント・セットのサポートな +しで動作することになり、英語の文字だけが見えることになり、ハングルは正しくは表 +示されなくなります。 + +'fontset' 機能が有効にされた後では、Vim では 'font' は使えなくなります。例えば、 +もし .gvimrc で次のようにしている場合は: > + :set guifontset=eng_font,your_font +構文ハイライトの指定では次のようにする必要があります: > + :hi Comment guifg=Cyan font=another_eng_font,another_your_font +単に次のようにした場合は: > + :hi Comment font=another_eng_font +たくさんのエラー・メッセージが表示されることになります。注意してください! + +ハングル・フォントの幅は、英語フォントの幅の2倍である必要があります。 + +サポートされていない機能 +------------------------ +Johab フォントはサポートされていませんし、予定もありません。どうしても johab +フォントが使いたい場合は、gau パッケージの hanguldraw.c を使うことができます。 + +Hanja 入力はまだサポートされていませんし、予定もありません。どうしても Hanja +を入力したい場合は、hanterm で Vim を使ってください。 + +バグ・コメント +-------------- +コメント、パッチ、提案などはこちらに: + + Chi-Deok Hwang <hwang@mizi.co.kr> + Nam SungHyun <namsh@lge.com> + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_ole.jax b/ja/if_ole.jax new file mode 100644 index 000000000..32df8f51c --- /dev/null +++ b/ja/if_ole.jax @@ -0,0 +1,164 @@ +COMMENT: OLEインターフェイス +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*if_ole.txt* For Vim version 6.3. Last change: 2003 Jun 19 + + + VIM REFERENCE MANUAL by Paul Moore + + +VimへのOLEインターフェイス *ole-interface* + +1. アクティブにする |ole-activation| +2. メソッド |ole-methods| +3. "normal"コマンド |ole-normal| +4. 登録 |ole-registration| +5. MS Visual Studioとの統合 |MSVisualStudio| + +{Vi はこれらのコマンドを持たない} + +OLE は|+ole|機能と共にコンパイルされたときのみ有効である。 +src/if_ole.INSTALLを参照せよ。 +代わりにクライアント、サーバ型の通信を使うこともできる|clientserver|。 + +============================================================================== +1. アクティブにする *ole-activation* + +Vimは、あらゆるオートメーションクライアント、例えばVisual Basic、Python、 +Perlなどからアクセス可能な、OLEオートメーションサーバとして振舞う。Vimアプリ +ケーションの"名前"(これはOLE用語で言うところの"ProgID")は、"Vim.Application" +である。 + +したがって、Vimのインスタンスを起動する(あるいはすでに起動しているインスタン +スに接続する)には、次のようなコードが用いられることになる: + +[Visual Basic] > + Dim Vim As Object + Set Vim = CreateObject("Vim.Application") + +[Python] > + from win32com.client.dynamic import Dispatch + vim = Dispatch('Vim.Application') + +[Perl] > + use Win32::OLE; + $vim = new Win32::OLE 'Vim.Application'; + +Vimは、他の一部のOLEサーバがサポートしているような、"hidden"なOLEサーバとして +の機能をサポートしていない。クライアントがVimのインスタンスを起動する場合、そ +のインスタンスは即座に可視化される。単にVimインスタンスとのOLE接続を閉じるだ +けでは、Vimインスタンスを終了するに十分ではない - 明確に終了コマンド(例えば、 +:qa!、:wqa)を実行する必要がある。 + +============================================================================== +2. メソッド *ole-methods* + +Vimはクライアントに対して4つのメソッドを公開している。 + + *ole-sendkeys* +SendKeys(keys) 一連のキー操作を実行する。 + +このメソッドはひとつの引数、キーストロークの文字列、を取る。これらのキースト +ロークは、完全にキーボードから打ち込まれたもののように実行される。スペシャル +キーは、マッピングの右側に書かれる、<...>形式の名前で与えることができる。 +注意: Ex "normal"コマンドの実行はサポートされていない - 以下の|ole-normal|を +見よ。 + +例 (Visual Basic の文法) > + Vim.SendKeys "ihello<Esc>" + Vim.SendKeys "ma1GV4jy`a" + +これらの例は、Vimがノーマルモードで始まるものと仮定している。必ずノーマルモ +ードにするには、一連のキーを次のように CTRL-\ CTRL-N で始めるとよい > + + Vim.SendKeys "<C-\><C-N>ihello<Esc>" + +CTRL-\ CTRL-N は、挿入モード、コマンドラインモードにいるとき、Vimをノーマルモ +ードに戻す。これらはVimコマンドの途中に入れると機能しないことに注意せよ。 + + *ole-eval* +Eval(expr) 式(expr)を実行する。 + +このメソッドはひとつの引数、Vim標準フォーマットの式、を取る(|expression|を参 +照)。戻り値は、その式を評価した結果の文字列である。 + +Examples (Visual Basic の文法で) > + Line20 = Vim.Eval("getline(20)") + Twelve = Vim.Eval("6 + 6") ' これが文字列であることに注意 + Font = Vim.Eval("&guifont") +< + *ole-setforeground* +SetForeground() Vimウィンドウを最前面に持ってくる。 + +このメソッドは引数を持たない。戻り値はない。 + +例 (Visual Basic の文法で) > + Vim.SetForeground +< + + *ole-gethwnd* +GetHwnd() Vimのウインドウハンドルを得る。 + +このメソッドは引数を持たない。戻り値はVimウインドウのウインドウハンドルです。 +これはVimウインドウに対して何かの操作を行いたい時に使います。 + +例 (Visual Basic の文法で) > + Vim_Hwnd = Vim.GetHwnd +< + +============================================================================== +3. "normal" コマンド *ole-normal* + +VimがOLEオートメーションコマンドを処理する方法は、exコマンド :normal の実装と +統合されているため、OLEオートメーションから :normal コマンドを実行することは +できない。実際に実行しようとしても失敗する、たぶん害はないと思われるが、予期 +しない動作をする恐れはある。 + +この状況をトラップする現実的な方法は今のところ存在しないため、ユーザはこの制 +限に単に気をつけるようにする他ない。 +============================================================================== +4. 登録 *ole-registration* *E243* + +VimをOLEサーバとして動作させる前に、システムレジストリに登録する必要がある。 +これを行うには、Vimをひとつの引数"-register"で実行すればよい。 + *-register* > + gvim -register + + +OLEサーバーが登録されていないとき、OLEをサポートしたgvimを起動すると警告ダイア +ログが出ます。"Yes"をを選択するとレジストリに登録できます。 + +レジストリが書き込み可能でないときには登録はできません。もし登録できないときは +"Administrator"権限でgvimを起動してください。 + +いったんVimが登録されると、アプリケーションへのパスはレジストリに保存される。 +Vimを移動、削除、更新する前に、レジストリの項目を"-unregister"スイッチを使っ +て削除する必要がある。 + *-unregister* > + gvim -unregister + +OLEメカニズムは、登録されたVimの内、最初に見つけたものを使用する。Vimがすでに +実行されている場合は、そのVimが使用される。OLEコマンドに影響されないで、(いく +つかの)Vimセッションを張ろうとする場合は、非OLEバージョンを違うディレクトリに +置いて使用するとよい。そして、OLEバージョンをパスに含まれないディレクトリに置 +けば、"gvim"とタイプしたとき非OLEバージョンが起動するようになる。 + + *-silent* +結果を表示するメッセージボックスを表示したくないなら"-silent"を付けてくださ +い。 > + gvim -silent -register + gvim -silent -unregister + +============================================================================== +5. MS Visual Studio との統合 *MSVisualStudio* *VisVim* + +OLEバージョンにより、Microsoft Visual StudioのエディタとしてVimを実行すること +ができる。これは"VisVim"と呼ばれる。これはOLEバージョンを含んだアーカイブに同 +梱されている。ドキュメントは、ランタイムディレクトリに置かれている +README_VisVim.txtファイルにある。 + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_perl.jax b/ja/if_perl.jax new file mode 100644 index 000000000..a62fb2aea --- /dev/null +++ b/ja/if_perl.jax @@ -0,0 +1,268 @@ +COMMENT: Perlインターフェイス(外部スクリプト) +STATUS: finished 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*if_perl.txt* For Vim version 6.3. Last change: 2004 May 01 + + + VIM REFERENCE MANUAL by Sven Verdoolaege + and Matt Gerassimof + +Perl と Vim *perl* *Perl* + +1. Perl のファイルを編集する |perl-editing| +2. Perl インタフェイス付きのコンパイル |perl-compiling| +3. Perl インタフェイスを使う |perl-using| + +{Vi にはこれらのうちのどの機能もありません} + +Perl インタフェイスは、Vim を |+perl| 機能付きでコンパイルしている場合にのみ +利用できます。 + +============================================================================== +1. Perl のファイルを編集する *perl-editing* + +Vim の構文ハイライト(syntax highlighting)は Perl と POD のファイルもサポートし +ています。Vim はファイルの拡張子が .pl か .pm であると、Perl のコードだと想定 +します。また、ファイルの拡張しによらず、Vim はファイルの1行目を調べてファイル +が Perl スクリプトであるかどうか確認します(Vim の syntax ディレクトリにある +scripts.vim を参照してください)。ファイルの拡張子が .POD であると、Vim は POD +テキストであると想定します。 + +Perl でタグを使うには、最近のctagsが必要です。ここを訪れてください。 + http://ctags.sourceforge.net + +Perl スクリプトの"pltags.pl"を使うこともできます。これは $VIMRUNTIME/tools デ +ィレクトリにあります。これは今のところ最新のctagsよりも高機能です。 + +============================================================================== +2. Perl インタフェイス付きのコンパイル *perl-compiling* + +Perl インタフェイス付きで Vim をコンパイルするには、5.004 もしくはそれ以上のバー +ジョンの Perl が必要です。Perl は Vim をコンパイルする前にインストールしておか +なければなりません。Vim の Perl インタフェイスは、公式にリリースされたバージョ +ンである Perl 5.003 では動作しません! Perl 5.003_05 もしくはそれ以上であれば、 +たぶん動作するでしょう。 + +Vim への Perl パッチは、次の方によって作成されました: + Sven Verdoolaege <skimo@breughel.ufsia.ac.be> + Matt Gerassimof + +Perl for MS-Windows は、次の場所で見つけることができます: +http://www/perl.com/CPAN/ports/nt/Standard/x86/ + +============================================================================== +3. Perl インタフェイスを使う *perl-using* + + *:perl* *:pe* +:pe[rl] {cmd} Perl コマンド {cmd} を実行します。現在のパッケージは + "main" です。 + +:pe[rl] << {endpattern} +{script} +{endpattern} + Perlスクリプト {script} を実行します. + {endpattern} の前に空白を置いてはいけません。 + {endpattern} を省略した時は|:append|や|:insert|のよう + に'.'が使われます。これは関数の中で使う時に便利です。 + なぜなら"$i;"は|:insert|コマンドの開始と紛らわしいから + です。 + この方法はVimスクリプトの中にPerlスクリプトを埋め込む + 時に便利です。 + Note: Perl のサポートを有効にしてコンパイルされていな + いとこのコマンドは機能しません。エラーを回避するには + |script-here|を参照してください。 + + +Vimスクリプトの例: > + + function! WhitePearl() + perl << EOF + VIM::Msg("pearls are nice for necklaces"); + VIM::Msg("rubys for rings"); + VIM::Msg("pythons for bags"); + VIM::Msg("tcls????"); + EOF + endfunction +< + *:perldo* *:perld* + +:[range]perld[o] {cmd} Perl コマンド {cmd} を {range} のそれぞれの行に対して + 実行します。$_ はテキスト中のそれぞれの行のテキストに、 + 余計な <EOL> なしでセットされます。$_ をセットすること + でテキストを変更しますが、このコマンドを使って行を挿入 + したり、削除したりすることはできないということに注意し + てください。 + デフォルトの [range] はすべての行です: "1,$"。 + {Vi にはない機能です} + +いくつかの例をあげますと: > + + :perl $a=1 + :perldo $_ = reverse($_);1 + :perl VIM::Msg("hello") + :perl $line = $curbuf->Get(42) +< + *E299* +|sandbox|の中のPerlコマンドの実行は制限されています。":perldo"は常に使えません +。":perl"は安全な環境の中で、可能なら評価されます。 + + *perl-overview* +Perl で使える関数の一覧です: > + + :perl VIM::Msg("Text") # メッセージを表示します + :perl VIM::Msg("Error", "ErrorMsg") # エラーメッセージを表示します + :perl VIM::Msg("remark", "Comment") # ハイライトされたメッセージを表示します + :perl VIM::SetOption("ai") # Vim のオプションをセットします + :perl $nbuf = VIM::Buffers() # 全てのバッファー数を返す + :perl @buflist = VIM::Buffers() # 全てのバッファーの配列を返す + :perl $mybuf = (VIM::Buffers('qq.c'))[0] # 'qq.c' のバッファー・オブジェク + # トを返す + :perl @winlist = VIM::Windows() # 全てのウインドウの配列を返す + :perl $nwin = VIM::Windows() # ウインドウ数を返す + :perl ($success, $v) = VIM::Eval('&path') # $v: 'path' オプション、 + # $success: 1 + :perl ($success, $v) = VIM::Eval('&xyz') # $v: '' $sucess: 0 + :perl $v = VIM::Eval('expand("<cfile>")') # <cfile> を展開 + :perl $curwin->SetHeight(10) # ウインドーの高さを設定します + :perl @pos = $curwin->Cursor() # (行, 列) 配列を返します + :perl @pos = (10, 10) + :perl $curwin->Cursor(@pos) # カーソルを @pos にセットします + :perl $curwin->Cursor(10,10) # カーソルを10行10列目にセットします + :perl $mybuf = $curwin->Buffer() # ウインドウのバッファー・オブジェクト + # を返す + :perl $curbuf->Name() # バッファー名を返します + :perl $curbuf->Number() # returns buffer number + :perl $curbuf->Count() # 行数を返します + :perl $l = $curbuf->Get(10) # 10 行目を返します + :perl @l = $curbuf->Get(1 .. 5) # 1行目から5行目までを返します + :perl $curbuf->Delete(10) # 10行目を削除します + :perl $curbuf->Delete(10, 20) # 10行目から20行目までを削除します + :perl $curbuf->Append(10, "Line") # 行を挿入します + :perl $curbuf->Append(10, "Line1", "Line2", "Line3") # 3行挿入します + :perl @l = ("L1", "L2", "L3") + :perl $curbuf->Append(10, @l) # L1, L2, L3 を挿入します + :perl $curbuf->Set(10, "Line") # 10行目を置き換えます + :perl $curbuf->Set(10, "Line1", "Line2") # 10行目と11行目を置き換えます + :perl $curbuf->Set(10, @l) # 3行置き換えます + + *perl-Msg* +VIM::Msg({msg}, {group}?) + {msg} メッセージを表示する。オプショナルな {group} 引 + 数は、そのメッセージの Vim でのハイライトグループを指 + 定します。 + + *perl-SetOption* +VIM::SetOption({arg}) Vim のオプションをセットします。{arg} は ":set" コマン + ドで使える引数であればなんでもよいです。このことは、引 + 数の中にスペースを入れることは許されないということを意 + 味しますので、注意してください。参照: |:set| + + *perl-Buffers* +VIM::Buffers([{bn}...]) 引数なしだと、配列コンテキストではすべてのバッファーの + リストを、スカラーコンテキストではバッファーの数を返し + ます。バッファー名 {bn} もしくは、バッファー番号 {bn} + のリスとが与えられた場合は、{bn} にマッチするバッファ + ーのリストを返します。ここでは Vim の内蔵関数 + |bufname()| と同じルールが用いられます。 + + *perl-Windows* +VIM::Windows([{wn}...]) 引数なしだと、配列コンテキストではすべてのウインドーの + リストを返し、スカラーコンテキストではウインドーの数を + 返します。ウインドー数 {wn} にリスとが与えられた場合は、 + それらの番号のウインドーのリストを返します。 + + *perl-DoCommand* +VIM::DoCommand({cmd}) Ex コマンド {cmd} を実行します。 + + *perl-Eval* +VIM::Eval({expr}) {expr} を評価して (success, val) を返します。success=1 + だと、val は {expr} の値を含みます; success=0 だと、式 + の評価に失敗したことを示しています。'@x' はレジスター + x の内容を返し、'&x' はオプション x の値を返します。 + 'x' は内部変数 |variables| x を返し、'$x' は Perl の + $ENV{x} と同じです。コマンドラインからアクセスできるす + べての |functions| は {expr} に使うことができます。 + + *perl-SetHeight* +Window->SetHeight({height}) + ウインドーの高さをスクリーンの上限以内で {height} にセ + ットします。 + + *perl-GetCursor* +Window->Cursor({row}?, {col}?) + 引数なしだと、ウインドーの現在のカーソル位置の + (row, col) 配列を返します。{row} と {col} 引数をつけて + よばれると、ウインドーのカーソル位置を {row} と {col} + にセットします。{col} は Perl のように0から数えられま + すので、Vim のルーラーの値より1つ小さくなるということ + に注意してください。 + +Window->Buffer() *perl-Buffer* + 与えられたウインドーに対応するバッファーオブジェクトを + 返します。 + + *perl-Name* +Buffer->Name() バッファーのファイル名を返します。 + + *perl-Number* +Buffer->Number() バッファーの番号を返します。 + + *perl-Count* +Buffer->Count() バッファーの行数を返します。 + + *perl-Get* +Buffer->Get({lnum}, {lnum}?, ...) + バッファーの {lnum} 行目のテキストを、指定されているそ + れぞれの {lnum} に関して返します。{lnum} のリストとし + て配列を渡すこともできます。 + + *perl-Delete* +Buffer->Delete({lnum}, {lnum}?) + バッファーの {lnum} 行目を削除します。二つ目の {lnum} + が指定されていると、始めの {lnum} から二つ目の {lnum} + までの範囲の行が削除されます。 + + *perl-Append* +Buffer->Append({lnum}, {line}, {line}?, ...) + それぞれの {line} をバッファーの {lnum} 行目の後に挿入 + します。{line} のリストは配列でもよいです。 + + *perl-Set* +Buffer->Set({lnum}, {line}, {line}?, ...) + バッファーの行を1行以上 {line} で指定される行で置き換 + えます。置き換えは、{lnum} から始まり、{line} は配列で + もよいです。引数が有効でないものであれば、置き換えは起 + こりません。 + +$main::curwin + 現在のウインドーオブジェクト + +$main::curbuf + 現在のバッファーオブジェクト + + + *script-here* +Vimスクリプトにその他のスクリプトを埋め込むときに、その言語がサポートされてい +ないなら、その部分をスキップしたいでしょう。しかし、次のコードはうまく動きませ +ん。 > + if has('perl') + perl << EOF + this will NOT work! + EOF + endif +このようにしないで、関数の中にPerl/Python/Ruby/etcのコードを書き、その関数を呼 +ぶようにしてください。 > + if has('perl') + function DefPerl() + perl << EOF + this works + EOF + endfunction + call DefPerl() + endif +注意:"EOF"は行頭になければなりません。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_sniff.jax b/ja/if_sniff.jax new file mode 100644 index 000000000..2f4e3023d --- /dev/null +++ b/ja/if_sniff.jax @@ -0,0 +1,102 @@ +COMMENT: SNiFF+インターフェイス +STATUS: finished 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*if_sniff.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + + VIM REFERENCE MANUAL + by Anton Leherbauer (toni@takefive.co.at) + + +SNiFF+ と Vim *sniff* + +1. イントロダクション |sniff-intro| +2. コマンド |sniff-commands| +3. SNiFF+ インタフェイス付きコンパイル |sniff-compiling| + +{Vi には、これらのどのコマンドもありません} *E275* *E274* *E276* *E278* *E279* + +SNiFF+ インタフェイスは、|+sniff| 機能つきでコンパイルしていた場合にのみ有効で +す。 + +============================================================================== +1. イントロダクション *sniff-intro* + +SNiFF+ を使う以下の機能が利用できます: + + * 全ての編集リクエストに Vim を使うことができます + * Vim でファイルがセーブされると SNiFF+ はそれに気づいて、全てのブラウザ + を更新します + * SNiFF+ コマンドを Vim から直接実行できます + +Vim で SNiFF+ を使うには + 1. SNiFF+ が起動していることを確認してください。 + 2. Preferences ダイアログでの Editor ビューで、フィールド名の 'External + Editor' を 'Emacs/Vim' に変更してください。 + 4. Vim を起動します。 + 5. SNiFF+ に接続します。(:sniff 接続) + +いったん接続が確立されると、SNiFF+ は、ソース・コードを表示したり、編集した +りする全てのリクエストで Vim を使います。一方、:sniff コマンドで SNiFF+ にク +エリーを送ることができます。 + +============================================================================== +2. コマンド *sniff-commands* + + *:sniff* *:sni* +:sni[ff] request [symbol] sniff にリクエストを送信する、symbol はオプショナ + ル {Vi にはない機能です} +:sni[ff] 可能な全てのリクエストと接続状態を表示する。 + +ほとんどのリクエストは symbol (識別子)をパラメーターとして必要とします。省略さ +れた場合は、カーソルの下の単語が使われます。利用可能なリクエストの一覧を下に挙 +げます: + +リクエスト マッピング 説明 +------------------------------------------------------------------------------- +connect sc SNiFF+ との接続を確立します。 + Preference で、これが可能なように SNiFF+ を設 + 定ずみかどうか確認しておいてください。 +disconnect sq SNiFF+ との接続を切断します。:sniff connect + (もしくは 'sc')で、いつでも再接続できます。 +toggle st 実装と定義ファイルをトグルします。 +find-symbol sf シンボル・ブラウザーに symbol を読み込みます。 +browse-class sb クラス・ブラウザーに class を読み込みます。 +superclass ss symbol の superclass を編集します。 +overridden so symbol の上書きされた method を編集します。 +retrieve-file srf 現在のファイルの symbol を集めます。 +retrieve-project srp 現在のプロジェクトの symbol を集めます。 +retrieve-all-projects srP 全てのプロジェクトの symbol を集めます。 +retrieve-next sR 現在の Retriever の設定を使って symbol を集め + ます。 +goto-symbol sg symbol の定義もしくは実装に飛びます。 +hierarchy sh 回想ブラウザーに symbol を読み込みます。 +restr-hier sH 上と同じですが、関連する class のみを表示しま + す。 +xref-to sxt symbol に関する refers-to クエリーを開始し、結 + 果をクロス・リファレンサーに読み込む。 +xref-by sxb symbol に関する referred-by クエリーを開始する。 +xref-has sxh symbol に関する refers-to コンポーネント・クエ + リーを開始する。 +xref-used-by sxu symbol に関して、コンポーネントとして + referred-by クエリーを開始する。 +show-docu sd symbol のドキュメントを表示する。 +gen-docu sD symbol のドキュメントを生成する。 + +マッピングは 'sniff.vim' に定義されており、これは全ての SNiFF+ プロダクトの一 +部になります ($SNIFF_DIR/config/sniff.vim)。このファイルは Vim が SNiFF+ に接 +続するときには、常に読み込まれます。 + +============================================================================== +3. SNiFF+ インタフェイス付きコンパイル *sniff-compiling* + +Vim を SNiFF+ サポートつきでコンパイルするには、extra アーカイブに含まれる2つ +のソース・ファイルが必要になります: if_sniff.c と if_sniff.h。 +Unix 上: Makefile を編集して"--enable-sniff"の行のコメントを外します。もしくは +"--enable-sniff"を指定してconfigureを実行してください。 +NT 上: make コマンドで SNIFF=yes を指定します。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_tcl.jax b/ja/if_tcl.jax new file mode 100644 index 000000000..e327f87de --- /dev/null +++ b/ja/if_tcl.jax @@ -0,0 +1,512 @@ +COMMENT: Tclインターフェイス(外部スクリプト) +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*if_tcl.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + + VIM REFERENCE MANUAL by Ingo Wilken + + +VimへのTclインターフェイス *tcl* *Tcl* *TCL* + +1. コマンド |tcl-ex-commands| +2. Tcl コマンド |tcl-commands| +3. Tcl 変数 |tcl-variables| +4. Tcl ウィンドウコマンド |tcl-window-cmds| +5. Tcl バッファコマンド |tcl-buffer-cmds| +6. その他; Tcl からの出力 |tcl-misc| |tcl-output| +7. 既知のバグと問題点 |tcl-bugs| +8. 例 |tcl-examples| + +{Vi はこれらのコマンドを持たない} *E280* *E281* + +Tclインターフェイスは、Vimが|+tcl|機能と共にコンパイルされたときのみ機能する。 + +注意: 多分まだいくらかのバグが残っている。バグレポート、コメント、意見などが +あったら、<Ingo.Wilken@informatik.uni-oldenburg.de>まで送ってください。 + +============================================================================== +1. コマンド *tcl-ex-commands* *E571* *E572* + + *:tcl* *:tc* +:tc[l] {cmd} Tclコマンド{cmd}を実行する。 + +:[range]tc[l] << {endmarker} +{script} +{endmarker} + Tclスクリプト{script}を実行します。 + Note: このコマンドはTclの機能付きでコンパイルされてい + ないと使えません。エラーを抑制するには|script-here|を + 参照してください。 + +{endmarker}の前には空白を置いてはいけません。"<<"の後に{endmarker}が省略された +ときは|:append|や|:insert|のように'.'が使われます。 +この形式の|:tcl|コマンドはVimスクリプトの中にtclコードを埋め込むのに特に便利で +す。 + +例: > + function! DefineDate() + tcl << EOF + proc date {} { + return[clock format [clock seconds]] + } + EOF + endfunction +< + + *:tcldo* *:tcld* +:[range]tcld[o] {cmd} Tclコマンド{cmd}を、[range]内の各行に対し、変数"line" + に各行のテキストを順にセットし、変数"lnum"に各行番号 + をセットしながら実行する。"line"への設定はテキストを + 変更しするが、このコマンドの実行中に、行を追加したり + 削除したりすることはできない。{cmd}がエラーを返せば、 + コマンドは中断される。[range]の標準値はファイルの全て + ":1,$"である。|tcl-var-line|、|tcl-var-lnum|を参照せ + よ。 {Vi にはない} + + *:tclfile* *:tclf* +:tclf[ile] {file} {file}内のTclスクリプトを実行する。これは、 + ":tcl source {file}"と同じであるが、ファイル名の補完 + が有効である。{Vi にはない} + + +Tclオブジェクト(変数のようなもの)は、Tclシェル内でと同様、1つのコマンドから次 +のコマンドへと引き継がれることに注意せよ。 + +|sandbox|の中ではTclコマンドは実行できない。 + +============================================================================== +2. Tcl コマンド *tcl-commands* + +Tclコードからは、"::vim"名前空間のコマンドを介してvimの全てにアクセスできる。 +次のコマンドが実装されている: > + + ::vim::beep # 文字通りのbeep。 + ::vim::buffer {n} # Tclコマンドを1つのバッファに作る。 + ::vim::buffer list # Tclコマンドを全てのバッファに作る。 + ::vim::command [-quiet] {cmd} # exコマンドを実行する。 + ::vim::expr {expr} # Vimの式評価を使用する。 + ::vim::option {opt} # vimのオプションを得る。 + ::vim::option {opt} {val} # vimのオプションを設定する。 + ::vim::window list # 全てのウィンドウにTclコマンドを作る。 + +コマンド: + ::vim::beep *tcl-beep* + 音を鳴らす。戻り値はない。 + + ::vim::buffer {n} *tcl-buffer* + ::vim::buffer exists {n} + ::vim::buffer list + vimバッファへのアクセスを提供する。整数引数を伴い、その数に対応するバ + ッファへのバッファコマンド(|tcl-buffer-cmds|を参照)を作り、結果として + そのバッファの名前を返す。不正なバッファ番号は、標準Tclエラーを返す。 + 有効なバッファ番号を調べるには、vimの内部関数を使うとよい: > + set nbufs [::vim::expr bufnr("$")] + set isvalid [::vim::expr "bufexists($n)"] +< "list"オプションは、各有効バッファに対してバッファコマンドを作り、戻り + 値としてコマンドバッファの名前のリストを返す。 + 例: > + set bufs [::vim::buffer list] + foreach b $bufs { $b append end "The End!" } +< "exists"オプションは、与えられた番号のバッファが存在するかを確かめる。 + 例: > + if { [::vim::buffer exists $n] } { ::vim::command ":e #$n" } +< このコマンドは、将来のバージョンで変数に置き換えられるはずである。現在 + のバッファについては|tcl-var-current|も参照。 + + ::vim::command {cmd} *tcl-command* + ::vim::command -quiet {cmd} + vimの(exモードの)コマンド{cmd}を実行する。バッファ、ウィンドウに影響す + るexコマンドは、全て現在のバッファ/ウィンドウを対象とする。標準Tclエラ + ーコード以外の戻り値を返すことはない。このコマンドの終了後、 + "::vim"current"変数は更新される。 + "-quiet"フラグは、vimからの全てのエラーメッセージを抑制する。 + 例: > + ::vim::command "set ts=8" + ::vim::command "%s/foo/bar/g" +< ノーマルモードのコマンドの実行には、"normal"を使う(|:normal|を参照): > + set cmd "jj" + ::vim::command "normal $cmd" +< |tcl-window-command| と |tcl-buffer-command|も参照。 + + ::vim::expr {expr} *tcl-expr* + 式{expr}を、vimの内部式評価(|expression|を参照)を使って評価する。バッ + ファやウィンドウプロパティに問い合わせする種類の式は、全て現在のバッ + ファ/ウィンドウを対象とする。結果を文字列として返す。 + 例: > + set perl_available [::vim::expr has("perl")] +< |tcl-window-expr| と |tcl-buffer-expr|も参照。 + + ::vim::option {opt} *tcl-option* + ::vim::option {opt} {value} + 第2引数なしで、vimオプションの値を問い合わせる。この引数を伴えば、vim + オプションに{value}を設定し、以前の値を結果として返す。'バッファに固 + 有'、'ウィンドウに固有'と記されているオプションは、全て現在のバッファ/ + ウィンドウを対象とする。":set"コマンドでそれらを変更してもグローバルの + オプションは変更されません。真偽値のオプションでは、{value}は"0"か + "1"、あるいは"on"、"off"、"toggle"のキーワードの内のどれかでなくてはな + らない。オプションの一覧は、|option-summary|を参照。 + 例: > + ::vim::option ts 8 +< |tcl-window-option| と |tcl-buffer-option|も参照。 + + ::vim::window {option} *tcl-window* + vimウィンドウへのアクセスを提供する。今のところ、"list"オプションのみ + が実装されている。これは各ウィンドウに対し、ウィンドウコマンドを作り + (|tcl-window-cmds|を参照)、戻り値としてコマンドの名前のリストを返す。 + 例: > + set wins [::vim::window list] + foreach w $wins { $w height 4 } +< このコマンドは、将来のバージョンで変数と置き換えられるはずである。 + 現在のウィンドウについては、|tcl-var-current|を参照。 + +============================================================================== +3. Tcl 変数 *tcl-variables* + +::vim名前空間は、いくつかの変数を持っている。これらはvimにTclインタープリタが +呼び出されたときに作られ、現在の値が設定される。 > + + ::vim::current # "current"オブジェクトを含む配列 + ::vim::lbase # 最初の行番号 + ::vim::range # 現在の範囲の番号を含む配列 + line # 文字列形式での現在の行 (:tcldo のみ) + lnum # 現在の行番号 (:tcldo のみ) + +変数: + ::vim::current *tcl-var-current* + これは、vimから利用可能な様々な"current"オブジェクトへのアクセスを提 + 供する配列である。この配列の内容は、vimの現在の設定を変更(例、カレン + トバッファの削除など)する可能性のある、::vim::command"が呼び出された + 後に更新される。 + "buffer"要素は、カレントバッファへのバッファコマンドの名前を持つ。こ + れで、直接バッファコマンドを利用することができる(|tcl-buffer-cmds|を + 参照)。この要素は読取り専用である。 + 例: > + $::vim::current(buffer) insert begin "Hello world" +< "window"要素は、カレントウィンドウへのウィンドウコマンドの名前を持つ。 + これで、直接ウィンドウコマンドを利用することができる + (|tcl-window-cmds|を参照)。この要素は読取り専用である。 + 例: > + $::vim::current(window) height 10 +< + ::vim::lbase *tcl-var-lbase* + この変数は、Tclが行番号をどのように扱うかを制御する。これが'1'にセット + されていると、行と縦列は1から始まる。このとき、Tclコマンドからの行番 + 号とvimの表現は互換性を持つ。この変数が'0'にセットされた場合、Tclでは + 行番号、縦列は0から始まる。これは、バッファをTclのリスト、行をTclの文 + 字列として扱い、さらにインデックスを返す標準のTclコマンド(例えば、 + "lsort"や"string first")を使うときに役に立つ。標準値は'1'である。今の + ところ、非0の値は全て'1'として扱われるが、この事実に依存したスクリプト + を書くべきではない。|tcl-linenumbers|も参照。 + + ::vim::range *tcl-var-range* + これは3つの要素、"start"、"begin"、"end"から成る配列である。現在の範 + 囲の、最初と最後の行番号を持つ。"begin"は"start"と同じである。この変数 + は読取り専用である。|tcl-examples|を参照。 + + line *tcl-var-line* + lnum *tcl-var-lnum* + このグローバル変数は、exコマンド":tcldo"が実行されたときのみ利用可能で + ある。これらはテキストと現在の行の行番号を持つ。Tclコマンドが":tcldo" + により呼び出されて完了したとき、"line"変数がTclコマンドによって設定解 + 除されていないければ、現在の行は"line"変数の内容に設定される。"lnum" + 変数は読取り専用である。これらの変数は、"::vim"名前空間に属していない + ため、修飾なしで":tcldo"で使うことができる(これは将来のバージョンで変 + 更されるはずである)。|tcl-linenumbers|も参照。 + +============================================================================== +4. Tcl ウィンドウコマンド *tcl-window-cmds* + +ウィンドウコマンドは、vimのウィンドウの表現である。これらはいくつかの方法で作 +られる: + ::vim::window リスト |tcl-window| + バッファコマンドの"windows"オプション |tcl-buffer-windows| +::vim::current(window)変数は、現在のウィンドウのウィンドウコマンドの名前を持 +つ。ウィンドウコマンドは、vimウィンドウが閉じられるに従って、自動的に破棄され +る。 + +ウィンドウコマンドの名前がTcl変数"win"に格納される、すなわち、"$win"がコマンド +を呼び出す、と仮定しよう。次のオプションが利用可能である: > + + $win buffer # ウィンドウのバッファのTclコマンドを作る。 + $win command {cmd} # ウィンドウのコンテクストに、exコマンドを実行 + # する。 + $win cursor # 現在のカーソルの位置を得る。 + $win cursor {var} # 配列変数により、カーソルの位置を設定する。 + $win cursor {row} {col} # カーソルの位置を設定する。 + $win delcmd {cmd} # ウィンドウが閉じたら、Tclコマンドを呼出す。 + $win expr {expr} # ウィンドウのコンテクストに、vimの式評価を行 + # う。 + $win height # ウィンドウの高さを報告する。 + $win height {n} # ウィンドウの高さを設定する。 + $win option {opt} [val] # ウィンドウのコンテクストに、vimのオプション + # を取得/設定する + +オプション: + $win buffer *tcl-window-buffer* + ウィンドウのバッファのTclコマンドを作成し、戻り値としてその名前を返す。 + 名前は変数に格納されるべきである: > + set buf [$win buffer] +< $bufは有効なTclコマンドとなる。利用可能なオプションについては、 + |tcl-buffer-cmds|を参照。 + + $win cursor *tcl-window-cursor* + $win cursor {var} + $win cursor {row} {col} + 引数なしで、現在のカーソル位置を文字列として返す。これは、Tclの配列変 + 数へと変換することができる: > + array set here [$win cursor] +< このとき、"here(row)"と"here(column)"がカーソル位置を持つ。 + 1つの引数を伴うと、引数は2つの要素"row"と"column"を持つべき、Tcl配列 + 変数名と解釈される。これらはカーソルを新しい位置へセットするために使わ + れる。 > + $win cursor here ;# not $here ! +< 2つの引数を伴い、カーソルをrowとcolumで指定した位置へセットする: > + $win cursor $here(row) $here(column) +< 不正な位置指定は、"catch"にて捕捉可能な標準Tclエラーを返す。rowと + columnの値は、"::vim::lbase"変数に依存する。|tcl-var-lbase|を参照。 + + $win delcmd {cmd} *tcl-window-delcmd* + Tclコマンド{cmd}を、ウィンドウ破棄のコールバックとして登録する。この + コマンドはウィンドウが閉じられた直後に(グローバルスコープで)実行され + る。複雑なコマンドは、"list"により構成するとよい: > + $win delcmd [list puts vimerr "window deleted"] +< |tcl-buffer-delcmd|を参照。 + + $win height *tcl-window-height* + $win height {n} + 引数なしで、ウィンドウの現在の高さを報告する。引数を伴うと、ウィンド + ウの高さを{n}に設定しようと試み、戻り値として新しい高さ(これは{n}では + ないかもしれない)を返す。 + + $win command [-quiet] {cmd} *tcl-window-command* + $win expr {expr} *tcl-window-expr* + $win option {opt} [val] *tcl-window-option* + これらは、全てがカレントウィンドウの代わりに$winで表現されるウィンド + ウコンテキストにおいて実行されるという点を除けば、"::vim::command"な + どに似ている。例えば、'local to window'と記されたオプションの設定は、 + ウィンドウ$winに影響を与える。バッファへの影響、または問い合わせは、 + 全てこのウィンドウに表示されるバッファ(すなわち、"$win buffer"で表現 + されるバッファ)を対象とする。より詳しい情報は、|tcl-command|、 + |tcl-expr|、|tcl-option|を参照せよ。 + 例: > + $win option number on + +============================================================================== +5. Tcl バッファコマンド *tcl-buffer-cmds* + +バッファコマンドはvimのバッファを表現する。これらはいくつかの方法で作成される: + ::vim::buffer {N} |tcl-buffer| + ::vim::buffer リスト |tcl-buffer| + ウィンドウコマンドの"buffer"オプション |tcl-window-buffer| +::vim::current(バッファ)変数は、カレントバッファへのバッファコマンドの名前を +持っている。バッファコマンドはvimのバッファが破棄されると、それに合わせて自動 +的に削除される。バッファの内容が変更されると、バッファ内の全てのマークは自動 +的に調整される。Tclコマンドによるバッファ内容への変更は、vimの"undo"コマンド +で元に戻すことができる(|undo|を参照)。 + +バッファコマンドの名前がTcl変数"buf"に格納されている、すなわち、"$buf"がコマ +ンドを呼出すものと仮定しよう。次のオプションが利用可能である: > + + $buf append {n} {str} # バッファの行{n}の後に、行を追加する。 + $buf command {cmd} # バッファコンテクストでexコマンドを実行する。 + $buf count # バッファ内の行数を返す。 + $buf delcmd {cmd} # バッファが削除されたらTclコマンドを呼ぶ。 + $buf delete {n} # 1行を削除する。 + $buf delete {n} {m} # 数行を削除する。 + $buf expr {expr} # バッファコンテクストで、vimの式評価をする。 + $buf get {n} # 1行を文字列として取得する。 + $buf get {n} {m} # 数行をリストとして取得する。 + $buf insert {n} {str} # バッファに行{n}として、行を挿入する。 + $buf last # バッファの最終行の行番号を返す。 + $buf mark {mark} # バッファマークの位置を返す。 + $buf name # バッファ内のファイル名を返す。 + $buf number # そのバッファの番号を返す。 + $buf option {opt} [val] # バッファコンテクストでvimオプションを + # 取得/設定 + $buf set {n} {text} # 1行を置換する。 + $buf set {n} {m} {list} # 数行を置換する + $buf windows # バッファウィンドウのTclコマンドを作成する。 +< + *tcl-linenumbers* +ほとんどのバッファコマンドは引数として行番号を取る。Tclコマンドがこれらをどう +扱うかはm"::vim::lbase"変数に依っている(|tcl-var-lbase|を参照)。行番号の代わ +りに、いくつかのキーワードを使うこともできる: "top"、"start"、"begin"、 +"first"、"bottom"、"end"、"last"が使える。 + +オプション: + $buf append {n} {str} *tcl-buffer-append* + $buf insert {n} {str} *tcl-buffer-insert* + バッファに行を追加する。"insert"オプションを伴うと文字列は新しい行 + {n}になり、"append"オプションを伴うと行{n}の後に挿入される。 + 例: > + $buf insert top "ここが始まり。" + $buf append end "ここで終わり。" +< バッファに行にリストを追加するには、ループを使うとよい: > + foreach line $list { $buf append $num $line ; incr num } +< + $buf count *tcl-buffer-count* + バッファ内の行の総数を返す。 + + $buf delcmd {cmd} *tcl-buffer-delcmd* + Tclコマンド{cmd}を、バッファの削除に対するコールバックとして登録する。 + このコマンドは、バッファが削除された直後に(グローバルスコープで)実行 + される。複雑なコマンドは"list"として構成するべきである: > + $buf delcmd [list puts vimerr "buffer [$buf number] gone"] +< |tcl-window-delcmd|も参照。 + + $buf delete {n} *tcl-buffer-delete* + $buf delete {n} {m} + バッファから行{n}、または行{n}から{m}までを削除する。 + 次の例は、最終行を除く全ての行を削除する: > + $buf delete first [expr [$buf last] - 1] +< + $buf get {n} *tcl-buffer-get* + $buf get {n} {m} + バッファから1行以上を取得する。1行の場合、戻り値は文字列である; 数行 + の場合には文字列のリストが返される。 + 例: +> set topline [$buf get top] + + $buf last *tcl-buffer-last* + 最終行の行番号を返す。この値は"::vim::lbase"変数に依存する。 + |tcl-var-lbase|を参照。 + + $buf mark {mark} *tcl-buffer-mark* + 名前付きマークの位置を、ウィンドウコマンドの"cursor"オプションにで表 + されるカーソル位置に似た文字列として返す(|tcl-window-cursor|を参照)。 + これはTcl配列変数に変換される: > + array set mpos [$buf mark "a"] +< "mpos(column)"と"mpos(row)"はマークの位置を保持する。マークがセット + されていなければ、標準Tclエラーが返される。 + + $buf name + バッファ内のファイル名を返す。ファイルなしのバッファの場合、空文字列 + を返す。 + + $buf number + そのバッファの番号を返す。|:buffer|を参照。 + この例は、vimからバッファを削除する: > + ::vim::command "bdelete [$buf number]" +< + $buf set {n} {string} *tcl-buffer-set* + $buf set {n} {m} {list} + バッファ内の1行以上を置換する。リスト(list)が置換される行以上の要素を + 持っていた場合、それらはバッファに追加される。リストの要素が少ない場合 + には、置換されなかった行はバッファから削除される。 + + $buf windows *tcl-buffer-windows* + そのバッファに表示されている各ウィンドウに対し、ウィンドウコマンドを作 + 成し、コマンド名のリストを結果として返す。 + 例: > + set winlist [$buf windows] + foreach win $winlist { $win height 4 } +< 可能なオプションについては|tcl-window-cmds|を参照。 + + $buf command [-quiet] {cmd} *tcl-buffer-command* + $buf expr {exr} *tcl-buffer-expr* + $buf option {opt} [val] *tcl-buffer-option* + これらは、カレントバッファではなく、$bufで表されるバッファコンテクス + トにおいて全てが実行されるということ以外は、"::vim::command"などと同 + じである。例えば、'local to buffer"と記されたオプションの設定は、バッ + ファ$bufに作用する。ウィンドウへの作用、あるいは問い合わせは、全てvim + のウィンドウリストの内でこのバッファを表示している最初のウィンドウ(す + なわち、"$buf windows"で最初に返されるエントリ)に対して行われる。より + 詳しい情報は、|tcl-command|、|tcl-expr|、|tcl-option|を参照。 + 例: > + if { [$buf option modified] } { $buf command "w" } + +============================================================================== +6. その他; Tcl からの出力 *tcl-misc* *tcl-output* + +標準Tclコマンド"exit"と"catch"は、カスタムバージョンのものと置き換えられてい +る。"exit"は、現在のTclスクリプトを終了してvimに戻り、Tclインタープリタを破棄 +する。その後、":tcl"が呼出されたときに、新しいTclインタープリタが作成される。 +"exit"は、vimを終了させることはない! "catch"は、"exit"でのスクリプトの終了を +妨げることがない点を除けば、標準のものと同じである。終了コードが0でないとき +(exit code != 0)、Tclスクリプトを呼出したexコマンドはエラーを返す。 + +2つの新しいI/Oストリーム、"vimout"、"vimerr"がTclから利用可能である。これらに +向けられた全ての出力は、それぞれvimの情報メッセージとエラーメッセージとして、 +メッセージエリアに表示される。標準Tcl出力ストリームstdoutとstderrは、普通の +"puts"コマンドでvimにメッセージを表示できるよう、vimoutとvimerrに割当てられる。 + +============================================================================== +7. 既知のバグと問題点 *tcl-bugs* + +Tcl内部から、("::vim::command"を介して)Tclのexコマンドを呼出すと、予期できない +副作用を起こす可能性がある。このコマンドは、"::vim::command"を安全な子インター +プリタ内で利用可能にするため、その子インタープリタを不安定にして、標準のインタ +ープリタと同じ能力を持つ新しいインタープリタを作る。(ネストされた :tcl* 呼び出 +しをブロックしたり、安全なインタープリタから新しい安全なインタープリタのみを呼 +出すよう保証することは簡単なことだが、それは不適切である - vimの設定により、 +"::vim::command"は他の多くのスクリプト言語の任意のコードを実行することができる +からである。)この新しいインタープリタ内での"exit"呼出しは、古いインタープリタ +には影響しない; 新しいインタープリタのみを終了し、スクリプト処理は古いインター +プリタで正常に続けられる。 + +stdinからの入力は、今のところサポートされていない。 + +============================================================================== +8. 例: *tcl-examples* + +いくつかの小さな(そして、たぶん役に立つ)Tclスクリプトを紹介しよう。 + +このスクリプトはバッファ全体の行をソートする(名前のリストとか、そのようなも +のであると仮定する): + set buf $::vim::current(buffer) + set lines [$buf get top bottom] + set lines [lsort -dictionary $lines] + $buf set top bottom $lines + +このスクリプトは、バッファ内の行を反転する。"::vim::lbase"と"$buf last"は、 +どんな行番号の設定でも機能することに注目。 + set buf $::vim::current(buffer) + set t $::vim::lbase + set b [$buf last] + while { $t < $b } { + set tl [$buf get $t] + set bl [$buf get $b] + $buf set $t $bl + $buf set $b $tl + incr t + incr b -1 + } + +このスクリプトは、現在の範囲の各行に連続した番号を付け加える: + set buf $::vim::current(buffer) + set i $::vim::range(start) + set n 1 + while { $i <= $::vim::range(end) } { + set line [$buf get $i] + $buf set $i "$n\t$line" + incr i ; incr n + } + +同じことが、":tcldo"による2つのexコマンドで、より迅速に行える: + :tcl set n 1 + :[range]tcldo set line "$n\t$line" ; incr n + +このプロシージャは、各バッファでexコマンドを走らせる(Ron Aaron氏のアイディア): + proc eachbuf { cmd } { + foreach b [::vim::buffer list] { + $b command $cmd + } + } +こんな風に使う: + :tcl eachbuf %s/foo/bar/g +Tclの文字列とバックスラッシュの置換には気をつけてほしい。疑わしいときは、丸括 +弧でexコマンドを括っておくとよい。 + + +いくつかのTclコマンドをずっとvimで使いたいというなら、それらをファイル(例えば +Unixマシンでは"~/.vimrc.tcl"など)に入れておき、スタートアップファイル(Unixマ +シンなら標準で"~/.vimrc")に以下の行を付け加える: + if has("tcl") + tclfile ~/.vimrc.tcl + endif + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/message.jax b/ja/message.jax new file mode 100644 index 000000000..e45d47b15 --- /dev/null +++ b/ja/message.jax @@ -0,0 +1,765 @@ +COMMENT: メッセージ +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: mm + +*message.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +このファイルにはVimが表示するメッセージとエラーメッセージのリストが、アルファ +ベット順で紹介してある。メッセージの意味がわからなかった時にはこれを使って調べ +ることができる。だけど完璧ではない。 + +1. 古いメッセージ |:messages| +2. エラーメッセージ |error-messages| +3. メッセージ |messages| + +============================================================================== +1. 古いメッセージ *:messages* *:mes* *message-history* + +既に発生したメッセージを見るのに":messages"コマンドが使用できる。これはメッ +セージが上書きされてしまったり、スクロールで流れていってしまった時にとりわけ便 +利である。これは'shortmess'オプションに依存する。 + +見ることのできるメッセージ数は20に固定されている。 + +翻訳されたメッセージを使っているなら、誰がそのメッセージや翻訳をメンテナンスし +ているかが最初の行に表示される。間違いを見つけたときにはこれを使ってメンテナと +コンタクトすることができる。 + +特定の(エラー)メッセージに関するヘルプを見つけたいときは、メッセージの最初に表 +示されるIDを使う。例えば: > + + E72: Close error on swap file + +または翻訳版なら: > + + E72: Errore durante chiusura swap file + +というメッセージに関するヘルプを見つけるには: > + + :help E72 + +とすればよい。面倒ならシフトキーを使わないでもできる: > + + :help e72 + +============================================================================== +2. エラーメッセージ *error-messages* + +エラーメッセージが表示されたが、それを読む前に消えてしまった場合には、次のコマ +ンドでもう一度見ることができる: > + :echo errmsg +もしくは最近のメッセージのリストを見る: > + :messages + + +LIST OF MESSAGES + *E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317* + *E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322* + *E323* *E341* *E473* *E570* > + Add to read buffer + makemap: Illegal mode + Cannot create BalloonEval with both message and callback + Hangul automata ERROR + block was not locked + Didn't get block nr {N}? + ml_timestamp: Didn't get block 0?? + pointer block id wrong {N} + Updated too many blocks? + get_varp ERROR + u_undo: line numbers wrong + undo list corrupt + undo line missing + ml_get: cannot find line {N} + cannot find line {N} + line number out of range: {N} past the end + line count wrong in block {N} + Internal error + fatal error in cs_manage_matches + +これは内部エラーである。これを再現できる場合はバグレポートを送ってください。 +|bugs| + +> + ATTENTION + Found a swap file by the name ... + +|ATTENTION|を参照。 + + *E92* > + Buffer {N} not found + +あなたが要求したバッファは存在しない。これはマークを含んでいたり、その他の方法 +で参照されているバッファを完全に削除(wiped out)したときも起こりうる。 +|:bwipeout| + + *E95* > + Buffer with this name already exists + +同じ名前のバッファを2つ持つことは出来ない。 + + *E72* > + Close error on swap file + +編集中のテキストのコピーを保存するスワップファイル|swap-file|が適切にクローズ +できなかった。たいていは無害。 + + *E169* > + Command too recursive + +ExコマンドがExコマンドを実行するExコマンドを実行...(以下略)となったとき起こる。 +これは200回まで許されている。それ以上多いときはおそらく無限ループである。おそ +らく|:execute|か|:source|コマンドが関係しているだろう。 + + *E254* > + Cannot allocate color {name} + +色名{name}が不明。ほとんどのシステム上で利用可能な色のリストが|gui-colors|にあ +るので参照。 + + *E458* > + Cannot allocate colormap entry for "xxxx" + Cannot allocate colormap entry, some colors may be incorrect + +Vimに必要な色数が使用できないことを意味している。Vimは終了しないが、一部の色が +正しく表示されない。多くの色を使っていそうなアプリケーションを止めるか、もしく +はVimを起動した後で起動してみると良い。 +Netscapeは多くの色を浪費することで知られている。独自のcolormapを使うように指定 +することで回避できる: > + netscape -install +もしくは色数の制限をしてしまう(64くらいが良いらしい): > + netscape -ncols 64 +同じことをXdefaultsを使ってやるなら: > + Netscape*installColormap: Yes +もしくは > + Netscape*maxImageColors: 64 +< + *E79* > + Cannot expand wildcards + +ファイル名がおかしな文字の組み合わせを含んでいる。そのためVimはワイルドカード +を展開しようとしたが、失敗した。これはマッチするファイル名が見つからなかったと +いうことではなく、パターンが不正であることを意味している。 + + *E459* > + Cannot go back to previous directory + +ファイル名を展開中に、Vimが以前使われていたディレクトリに戻ることに失敗した。 +こうなると、使われている全てのファイル名が無効になるかもしれない。ユーザはカレ +ントディレクトリに実行パーミッションを持っている必要がある。 + + *E190* *E212* > + Cannot open "{filename}" for writing + Can't open file for writing + +なんらかの理由によって、あなたが書こうとしているファイルは作成または上書きがで +きない。理由は、そのディレクトリに書き込みパーミッションを持っていないか、ファ +イル名が無効であることかもしれない。 + + *E166* > + Can't open linked file for writing + +あなたは上書きできないファイルに書き込みをしようとしていて、そのファイルはリン +ク(ハードリンクまたはシンボリックリンク)である。そのリンクまたはファイルのある +ディレクトリが書き込み可能なら、それでも書き込むことは可能だが、あなたがそのリ +ンクを削除してその場所にファイルを書き込みたいのか、ファイルそのものを削除して +その場所に新しいファイルを書き込みたいのかVimにはわからない。もし本当にファイ +ルをこの名前で書き込みたいのなら、手動でリンクまたはファイルを削除するか、Vimが +それを上書きできるようにパーミッションを変更しなければならない。 + + *E46* > + Cannot set read-only variable "{name}" + +関数の引数|a:var|またはVim内部変数|v:var|に値を代入しようとした。これらはリー +ドオンリーである。 + + *E90* > + Cannot unload last buffer + +Vimは常に少なくとも1つのバッファをロードしていなければならない。そうでなければ +ウィンドウに表示するものが何もなくなってしまう。 + + *E40* > + Can't open errorfile <filename> +":make"や":grep"コマンドを使った時: エラーメッセージやgrepの結果を開くことがで +きなかった。これには幾つかの原因が考えられる: +- 'shellredir'に間違った値が入っている。 +- シェルがディレクトリを変更してしまったために、エラーファイルが違うディレクト + リに作られてしまった。'makeef'を変更することで修正できるが、makeコマンドは + 誤ったディレクトリで実行されてしまうことになる。 +- 'makeef'に間違った値が入っている。 +- 'grepprg'や'makeprg'を実行できない。これは必ず検出できるとは限らない(特に + Windowsでは)。$PATHをチェックすること。 + + > + Can't open file C:\TEMP\VIoD243.TMP + +MS-Windowsにおいて、外部コマンドの出力を読み込もうとしたが、コマンドが正常に動 +作しなかったときに現れる。これには多くの原因がありうる。'shell', 'shellquote', +'shellxquote', 'shellslash' やこれらに関連したオプションをチェックすること。外 +部コマンドが見つからなかったということもありうる。その場合の特別なエラーメッセ +ージは用意されていない。 + + *E12* > + Command not allowed from exrc/vimrc in current dir or tag search + +いくつかのコマンドはセキュリティ上の理由のために許可されていない。それらのコマ +ンドはたいていカレントディレクトリの.exrcや.vimrcまたはtagsファイルから来る。 +'secure'も参照。 + + *E74* > + Command too complex + +マッピングが非常に長いコマンド文字列に展開されてしまった。マッピングが間接的に +自分自身を呼ぶことによって起こった可能性がある。 + +> + CONVERSION ERROR + +ファイル書き込み時に"CONVERSION ERROR"という文字が現れたら、これは内部で使われ +ているUTF-8からファイルのフォーマットに変換するときにいくつかのビットが失われ +たことを意味する。このファイルにはunmodifiedのマークがされない。情報の欠落が気 +になるなら、バッファ中の文字を扱えるように'fileencoding'オプションを他の値にし +、再度書き込みを行うこと。気にしないならバッファを破棄したり'modified'オプショ +ンをリセットしてもよい。 + + *E302* > + Could not rename swap file + +ファイル名が変更されたとき、Vimは|swap-file|も同様にリネームしようとする。これ +が失敗し、以前のスワップファイルが引き続き使われる。多くの場合は無害。 + + *E43* *E44* > + Damaged match string + Corrupted regexp program + +Vim内部でなんらかの不具合が起こり、正規表現が壊れてしまった。この問題を再現で +きるなら報告してください。|bugs| + + *E208* *E209* *E210* > + Error writing to "{filename}" + Error closing "{filename}" + Error reading "{filename}" + +これはVimがファイルをリネームしようとしたが、ファイル名の単純な変更ができなか +ったときに起こる。するとファイルはコピーされるが、どういうわけかこれが失敗した +。結果として、元のファイルとコピー先のファイルの両方が存在するが、コピー先のフ +ァイルは不完全な可能性がある。 + +> + Vim: Error reading input, exiting... + +これは入力が求められているときにタイプされた文字が読み込めなかった場合に起こる +。Vimはどうにもならなくなり、終了するしかない。これは標準入力と標準出力の両方 +がリダイレクトされていて、かつVimを終了させないスクリプトを実行しているときに +起こりうる。 + + *E47* > + Error while reading errorfile + +エラーファイルの読み込みに失敗した。これは、エラーメッセージが認識できないこと +によって引き起こされるわけではない。 + + *E80* > + Error while writing + +ファイルの書き込みが正常に完了しなかった。そのファイルはおそらく不完全である。 + + *E13* *E189* > + File exists (use ! to override) + "{filename}" exists (use ! to override) + +間違ってファイルを上書きしてしまわないように保護されている。どうしても上書きし +たいのなら、同じコマンドの直後に"!"を付けて使用する。例: > + :w /tmp/test +これをこう変える: > + :w! /tmp/test +< + *E139* > + File is loaded in another buffer + +あなたは別のバッファで使われている名前をでファイルを書き込もうとしている。そう +すると同じファイルの2つの版が出来てしまう。 + + *E142* > + File not written: Writing is disabled by 'write' option + +'write'オプションがオフである。これはファイルを書き込もうとする全てのコマンド +が生成するメッセージである。コマンドライン引数で|-m|を指定することで同じメッ +セージを発生することができる。":set write"で'write'オプションを設定することが +できる。 + + *E25* > + GUI cannot be used: Not enabled at compile time + +GUIのためのコードを含んでいないVimのバージョンを実行している。従って"gvim"と +":gui"は機能しない。 + + *E49* > + Invalid scroll size + +これは'scroll', 'scrolljump', 'scrolloff'オプションに無効な値を設定することに +よって引き起こされる。 + + *E17* > + "{filename}" is a directory + +あなたは既存のディレクトリの名前でファイルを書き込もうとした。これは不可能であ +る。ファイル名を追加する必要があるだろう。 + + *E19* > + Mark has invalid line number + +存在しない行番号を持つマークを使用した。別のファイルのマークを持っているとき +か、別のプログラムがファイルからラインを消してしまった場合に起こり得る。 + + *E219* *E220* > + Missing {. + Missing }. + +ファイル名の中に{}を使っているが、{に対応する}がない、またはその逆。これは +{foo,bar}のように使わねばならない。これは"foo"と"bar"にマッチする。 + + *E315* > + ml_get: invalid lnum: + +Vimの内部エラー。どうしたらこれを再現できるかを発見して、バグレポートを送って +くれないだろうか |bugreport.vim|。 + + *E173* > + {number} more files to edit + +引数リストの最後の項目を編集していないのに終了しようとしている。これはまだ編集 +すべきファイルがあるのに誤って終了するのを防止する。|argument-list|を参照。もし +本当に終了したいのなら、もう1度繰り返せば終了できる。 + + *E23* *E194* > + No alternate file + No alternate file name to substitute for '#' + +裏ファイルがまだ定義されていない。|alternate-file|参照。 + + *E32* > + No file name + +現在のバッファに名前が存在していない。ファイルに保存するためには":w filename" +を使う。もしくは":file fname"でバッファに名前を付ける。 + + *E141* > + No file name for buffer {number} + +変更されたバッファの1つがファイル名を持っていない。そのためそのファイルを書き +込めない。そのバッファにファイル名を与える必要がある: > + :buffer {number} + :file {filename} +< + *E33* > + No previous substitute regular expression + +パターンに文字'~'を使用すると、以前に":substitute"コマンドで使われたパターンに +置き換えられる。そのようなコマンドがまだ使われていない時には、これは失敗する。 +|/~|参照。 + + *E35* > + No previous regular expression + +空の検索パターンを使用したときには、以前に使われた検索パターンが再度使用され +る。しかし、以前に検索が行われていないのならば無理な話だ。 + + *E24* > + No such abbreviation + +":unabbreviate"コマンドを、存在していない略語を引数にして実行した。 +"cunabbrev"、":iunabbrev"などのバリエーションも同じメッセージを与える。 +後ろに空白がついていないかチェックすること。 + +> + /dev/dsp: No such file or directory + +GnomeサポートつきのGTK GUIでのみ表示される。Gnomeがオーディオデバイスを使おう +としたが、利用可能でない。このエラーは無視してよい。 + + *E31* > + No such mapping + +":unmap"コマンドを、存在していないマップを引数にして実行した。":cunmap"、 +":unmap!"などの、このコマンドのバリエーションも同じメッセージを生成する。 +後ろに空白がついていないかチェックすること。 + + *E37* *E89* > + No write since last change (use ! to override) + No write since last change for buffer {N} (use ! to override) + +変更のあるファイルを放棄(|abandon|)しようとした。Vimは仕事(ファイル)を失ってし +まう危険から守ってくれる。変更されたファイルを":w"で保存するか、変更を失ったと +しても本当に放棄(|abandon|)するかのどちらかである。破棄するには、使ったコマン +ドに'!'を付けて実行すればよい。例: > + :e other_file +これをこう変える: > + :e! other_file +< + *E162* > + No write since last change for buffer "{name}" + +変更されたバッファがあるのにVimを終了しようとしたとき表示される。変更されたバ +ッファを|:w|で書き込むか、":qa!"などのバッファを強制的に破棄するコマンドを使う +かしなければならない。保存しておきたい変更を破棄しないように注意すること。特に +'hidden'をセットしているときは、バッファのことを忘れているかもしれない。 + + *E38* > + Null argument + +Vim内部で何か不具合が起こり、NULLポインタが現れてしまった。もしこの問題を再現 +できるなら報告してください。|bugs| + + *E172* > + Only one file name allowed + +":edit"コマンドは、1つのファイルしか受け付けない。複数のファイルを編集するため +に指定したいのなら":next"を使う |:next|。 + + *E41* *E82* *E83* *E342* > + Out of memory! + Out of memory! (allocating {number} bytes) + Cannot allocate any buffer, exiting... + Cannot allocate buffer, using other one... + +あ~あ… なにか厄介なことをしたか、別のプログラムがメモリを喰らい尽くしたか。 +気をつけて。Vimはメモリ不足の状況というのは、想定していない。まず、変更した +ファイルが保存されているか確認しよう。それからメモリを節約する方法を考えよう。 +安全に使いたいのならば、一度Vimを終了して、再度起動しなそう。 +|msdos-limitations|も参照。 + + *E339* > + Pattern too long + +int型が16ビットのシステム上でのみ起こる: コンパイルされた正規表現パターンの長 +さが65000文字以上である。もっと短いパターンを使ってみること。 + + *E45* > + 'readonly' option is set (use ! to override) + +読み込み専用とマークされたファイルに書き込もうとした。本当にファイルを書き込ん +でしまうには、'readonly'オプションをリセットするか、保存に使用したコマンドに +'!'を付けて実行し直すかのどちらか。例: > + :w +これはこう変える: > + :w! +< + *E294* *E295* *E301* > + Read error in swap file + Seek error in swap file read + Oops, lost the swap file!!! + +Vimが|swap-file|からテキストを読み込もうとしたが、何かまずいことが起こった。関 +係するバッファのテキストが破壊されているかもしれない。バッファを書き込む前に注 +意深くチェックすること。違いをチェックするために、別のファイルに書き出すといい +かもしれない。 + + *E192* > + Recursive use of :normal too deep + +"normal"コマンドの引数で再び":normal"コマンドを使い、再帰的になっている。これ +は'maxmapdepth'で回数が制限されている。この例ではどうやってそれを引き起こすか +を示している: > + :map gq :normal gq<CR> +"gq"とタイプすれば、このマッピングが実行され、その結果再び"gq"が呼び出される。 + + *E22* > + Scripts nested too deep + +スクリプトはコマンドライン引数の"-s"や、":source"コマンドで読み込むことができ +る。スクリプトは、他のスクリプトファイルを読み込むことができる。これは14段階ま +で続けることができる。それ以上に入れ子にした場合には、Vimは再帰的なループがあ +ると仮定し、このエラーメッセージを出して読み込みを止める。 + + *E319* > + Sorry, the command is not available in this version + +使用中のVimでは利用できないコマンドを使おうとした。Vimのコンパイル時に、いくつ +もの機能を有効/無効にすることができる。これはVimをどれだけ大きくするかの決定 +とOSに依存する。いつどの機能が利用できるのかを見るには|+feature-list|を参照。 +|:version|コマンドを使うとVimがどの機能つきでコンパイルされたかを表示できる。 + + *E300* > + Swap file already exists (symlink attack?) + +Vimがスワップファイルを開こうとしたが、それが既に存在するかその場所にシンボリ +ックリンクがあったとき表示される。これは本来起こってはならない。なぜならVimは +すでにそのファイルが存在しないことをチェックしたからである。他の誰かが同じファ +イルをちょうど同じ瞬間に開いたか(これはほぼありえない)、誰かがsymlink攻撃をし +ようとしているかである(/tmpにあるファイルを編集中か、'directory'が"/tmp"で始ま +っている場合に起こりうる。'directory'を"/tmp"以下に設定すべきではない)。 + + *E432* > + Tags file not sorted: {file name} + +Vim(およびVi)はtagsファイルがASCII順でソートされていることを期待する。そうすれ +ば線形探査よりもかなり高速な二分探査が可能になるからである。もしもtagsファイル +がソートされていなかったら、|'tagbsearch'|オプションをリセットする必要がある。 +このメッセージはVimがtagを探している時に問題があると表示される。tagsファイルが +ソートされていないにも関わらず、このメッセージが表示されないことも時々ある。 + + *E460* > + The resource fork would be lost (add ! to override) + +Macintosh(classic)においてファイルを書き込むとき、Vimはファイルについての情報 +すべて(resource forkを含む)を保存しようとする。それができない場合、このエラー +メッセージが表示される。それでも書き込むときはコマンド名の後に"!"をつけること +(すると情報は失われる)。 + + *E424* > + Too many different highlighting attributes in use + +Vimは約223種類までの強調表示を扱うことが出来る。この限界に達してしまったという +ことは、異なる引数に対して|:highlight|コマンドを使いすぎたことを意味する。 +":highlight link"はカウントされない。 + + *E77* > + Too many file names + +ファイル名を展開して、マッチが1個以上見つかった。直前に使われたコマンドに対し +てはマッチが1つしか許されない。 + + *E303* > + Unable to open swap file for "{filename}", recovery impossible + +Vimがスワップファイルを作成できなかった。ファイルを編集することはできるが、 +もしVimが不意に終了したら、変更は失われる。また、巨大なファイルを編集するとき +はメモリを多く消費するかもしれない。このエラーを回避するために'directory'オプ +ションを変更するとよいかもしれない。|swap-file|を参照。 + + *E140* > + Use ! to write partial buffer + +範囲選択をしてバッファの一部を書き込むとき、元のファイルを上書きしようとするこ +とはあまりない。これはおそらく誤りである(例えばビジュアルモードがアクティブな +ときに":w"を使った)。それゆえVimはコマンドの後に ! をつけることを要求する。例: +":3,10w!"。 +> + + Warning: Cannot convert string "<Key>Escape,_Key_Cancel" to type + VirtualBinding + +起動時にこのようなメッセージが現れた場合、これはVimの問題ではなく、X11の設定が +間違っている。この問題を解決するためのヒントがここにある: +http://groups.yahoo.com/group/solarisonintel/message/12179. + + *W10* > + Warning: Changing a readonly file + +ファイルが読み込み専用なのに、変更を加えようとしている。このメッセージを避ける +には、自動コマンドイベント|FileChangedRO|を使うことが出来る(自動コマンドは +'readonly'オプションをリセットしなければならない)。ファイルへの変更を完全に禁 +止するには'modifiable'を参照。 + + *W13* > + Warning: File "{filename}" has been created after editing started + +存在しないファイルの編集をしていたはずが、今は同名のファイルが存在する。現在開 +いているファイルの編集を続けるか、新しく作成されたファイルを開くか決めなければ +ならない。'buftype'が空でないときはこのメッセージは表示されない。 + + *W11* > + Warning: File "{filename}" has changed since editing started + +ファイルが編集を始めた時とは違うタイムスタンプを持っていて、その内容が変更され +ている(より正確には: 現在のオプション設定と自動コマンドでそのファイルを読み直 +した結果、異なるテキストになってしまったとき)多分他のプログラムがそのファイル +を書き換えたのだろう。何が起こったのか究明し、どっちの版を残したいのか決断する +必要がある。これを自動的に行わせたいのなら'autoread'オプションをセットすること +。'buftype'が空でないならばこのメッセージは表示されない。 + +なにも間違ったことをしていないのに、このメッセージを受け取る可能性が1つ考えら +れる: 夏時間が始まる日にWindowsでファイルを保存した場合である。この場合、次の +方法のうちどれかで修正できる: > +- 次の行をautoexec.batに加える: > + SET TZ=-1 +< タイムゾーンに"-1"の修正を施す。 +- "automatically adjust clock for daylight saving changes"を無効にする。 +- 単に、次の日にファイルを再び書き直す。または時計を次の日にセットし、ファイル + を2回書き込み、時計を戻す。 + + *W12* > + Warning: File "{filename}" has changed and the buffer was changed in Vim as well + +上のものと同様だが、Vim内のバッファも同様に変更された。Vim中の版とディスク上の +版のどちらを残すのか決めなければならない。'buftype'が空でない場合、このメッセ +ージは表示されない。 + + *W16* > + Warning: Mode of file "{filename}" has changed since editing started + +バッファのタイムスタンプが変更され、中身は同じだがモード(パーミッション)が変更 +されたとき。これは通常、読み込み専用ビットをリセットするようなバージョン管理シ +ステムからファイルをチェックアウトしたときに起こる。ファイルを読み直すのが安全 +である。自動的にファイルを読み直させるようにするには'autoread'をセットすること +。 + + *E211* > + Warning: File "{filename}" no longer available + +編集を始めているファイルが消え失せたか、もはやアクセスできない。変更が失われる +のを避けるため、バッファが書き込まれたか確認すること。'buftype'が空でないとき +はこのメッセージは表示されない。 + + *W14* > + Warning: List of file names overflow + +とてつもなくたくさんのバッファを使っている。こうなると2つのバッファに同じ番号 +が割り当てられるようになり、様々な問題を引き起こす。Vimを終了し、再起動すると +よいかもしれない。 + + *E296* *E297* > + Seek error in swap file write + Write error in swap file + +これはたいていディスクが一杯のときに起こる。Vimが|swap-file|にテキストを書き込 +むことが出来なかった。直接的には有害ではないが、Vimが不意に終了したとき、テキ +ストが失われ、復活の可能性もなくなってしまうかもしれない。この問題が持続する場 +合は、Vimがメモリを使い果たしているのかもしれない。 + + *connection-refused* > + Xlib: connection to "<machine-name:0.0" refused by server + +VimがXサーバへ接続を試みたが、接続を確立できなかった場合にこれが起こる。Xサー +バへの接続は、タイトルとxtermのクリップボードをサポートするために必要とされ +る。残念なことに、|+xterm_clipboard|と|+X11|の機能を無効にしない限り、このエ +ラーメッセージは避けることはできない。 + + *E10* > + \\ should be followed by /, ? or & + +コマンドラインがバックスラッシュで始まっているか、コマンドの範囲のおかしな場所 +にバックスラッシュが含まれている。これはしばしばコマンドラインの行継続が無効に +されているため引き起こされる。行継続を有効にするには'cpoptions'から'C'フラグを +除くこと。 + + *E471* > + Argument required + +引数を必要とするExコマンドに対し、引数を与えないで実行したとき起こる。 + + *E474* *E475* > + Invalid argument + +Exコマンドが実行されたが、無効な引数が指定された。 + + *E488* > + Trailing characters + +引数をつけてはならないExコマンドに引数が指定された。 + + *E477* *E478* > + No ! allowed + Don't panic! + +"!"をつけてはならないExコマンドに"!"をつけた。 + + *E481* > + No range allowed + +範囲指定を許可していないExコマンドに範囲を指定した。|cmdline-ranges|を参照。 + + *E482* *E483* > + Can't create file {filename} + Can't get temp file name + +Vimが一時ファイルを作成できなかった。 + + *E484* *E485* > + Can't open file %s" + Can't read file %s" + +Vimが一時ファイルを読み込めなかった。 + + *E464* > + Ambiguous use of user-defined command + +名前の先頭部分が一致するユーザ定義コマンドが2つあり、そのうちの1つを実行しよう +とコマンドライン補完をした。|user-cmd-ambiguous|を参照。 +例: > + :command MyCommand1 echo "one" + :command MyCommand2 echo "two" + :MyCommand +< + *E492* > + Not an editor command + +Exコマンドでもユーザ定義コマンドでもないコマンドを実行しようとした。 + +============================================================================== +3. メッセージ *messages* + +Vimがくれるさまざまなメッセージの(不完全な)概観である: + + *hit-enter* *press-enter* *hit-return* *press-return* > + + Hit ENTER or type command to continue + +このメッセージは読んでもらいたい何かがあって、スクリーンの再描画が中断されてい +るときに与えられる: +- 外部コマンドの実行直後(例えば":!ls"と"=")。 +- ウィンドウの幅よりも長い何かがステータスラインに表示されたか、'showcmd'か + 'ruler'の出力にまで達してしまった。 + +-> スクリーンを再描画し再開するには、<Enter>か<Space>(他の用途に使われていない + ことが条件)押す。 +-> 何かコマンドを使うために、":"か他のノーマルモードコマンドのキャラクタを叩 + く。 +-> <C-Y>を押し、モードレスセレクションをクリップボードレジスタにコピー(ヤンク) + する。 +-> メニューを使う。コマンドラインモード用に定義されている文字が使われる。 +-> 'mouse'が'r'フラグを含んでいる場合は、マウスの左クリックが<Space>を押すのと + 同様になる。ただし'r'フラグを含んでいるとテキストを選択できなくなる。 +-> GUIを使っているときは、最後の行で左クリックすると<Space>を押すのと同様にな + る。 +{Vi: ":"だけが割り込める} + +hit-enterのプロンプトの回数を減らすには: +- 'cmdheight'を2かそれ以上に設定する。 +- 'shortmess'にフラグを追加する。 +- 'showcmd'と'ruler'の両方か、もしくはどちらかをリセットする。 + +'mouse'も参照。hit-enterメッセージは|hl-Question|グループで強調される。 + + + *more-prompt* *pager* > + -- More -- + -- More -- (RET: line, SPACE: page, d: half page, q: quit) + -- More -- (RET/BS: line, SPACE/b: page, d/u: half page, q: quit) + +このメッセージはスクリーンがメッセージで埋め尽くされた時に表示される。'more'オ +プションがオンの時だけ与えられる。|hl-MoreMsg|グループで強調される。 + +種類 効果 ~ + <CR> or <NL> or j or <Down> 1行進める + <BS> or k or <Up> 1行戻る (*) + <Space> or <PageDown> 次のページ + b or <PageUp> 前のページ (*) + d 次の半ページ + u 前の半ページ (*) + q, <Esc> or CTRL-C リスト表示を止める + : リスト表示を止めコマンドラインに入る + <C-Y> モードレスセレクションをクリップボード + (レジスタ"*と"+)にヤンク(コピー)する。 + {メニューの項目} コマンドラインでメニューが定義されてい + ること + <LeftMouse> (**) 次のページ + +その他のキーは、これらのキーの意味が表示される。 + +(*) 逆スクロールコマンドは、このコマンドだけサポートされる: > + :clist +(**) 左クリックは次のときだけ機能する: + - GUI使用時:スクリーンの最後の行で + - 'mouse'が'r'を含んでいるとき(ただしこのときテキスト選択はできない) + +Note: タイプされたキーはターミナルから直接得られ、マップされずtypeaheadは無視 +される。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/motion.jax b/ja/motion.jax new file mode 100644 index 000000000..b4ac25d38 --- /dev/null +++ b/ja/motion.jax @@ -0,0 +1,1188 @@ +COMMENT: カーソル移動 +STATUS: finished 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +TRANSLATOR: mm +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*motion.txt* For Vim version 6.3. Last change: 2004 May 13 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +カーソルの動き *cursor-motions* *navigation* + +これらのコマンドはカーソルの位置を変えます。移動先の位置がスクリーンの外側であ +ればカーソルを表示するためにスクリーンをスクロールさせます( 'scrolljump' と +'scrolloff' オプションも参照してください)。 + +1. 動きと演算 |operator| +2. 左右の動き |left-right-motions| +3. 上下の動き |up-down-motions| +4. 単語単位の動き |word-motions| +5. オブジェクト単位で移動 |object-motions| +6. オブジェクト単位で選択 |object-select| +7. マーク |mark-motions| +8. ジャンプ |jump-motions| +9. 様々な動き |various-motions| + +一般的な注意: + +ファイルのどの場所にいるかを知るには "CTRL-G" コマンド |CTRL-G| か "g CTRL-G" +コマンド |g_CTRL-G| を使ってください。'ruler' オプションをセットしていればステ +ータス行にカーソルの位置が表示し続けられます(ちょっとだけ Vim を遅くします)。 + +経験を積んだユーザーは hjkl キーを使うのをそれらが常に指の下にあるという理由で +好みます。初心者はしばしば hjkl キーの動作を知らないので矢印キーを使うのを好み +ます。hjkl がどんな動きをするのか覚えるのはキーボードを見ればすぐわかります。j +を下矢印と見立ててみてください。 + +'virtualedit' オプションをセットすると、文字がない位置や文字の真ん中にもカーソ +ルを移動できるようになります。 + + +============================================================================== +1. 動きと演算 *operator* + +移動コマンドは演算コマンドの後に続けることができ、カーソルが移動する間のテキス +トにそのコマンドの演算を施すことができます。つまりは移動前と移動後のカーソル位 +置の間のテキストです。演算コマンドは一般的にテキストを削除したり変更したりする +のに使われます。下記の演算コマンドを使うことができます: + + |c| c 変更 + |d| d 削除 + |y| y レジスターにヤンクする(テキストは変更しません) + |~| ~ 大文字/小文字を入れ換える( 'tildeop'がセットされてれば) + |g~| g~ 大文字/小文字を入れ換える + |gu| gu 小文字にする + |gU| gU 大文字にする + |!| ! 外部コマンドを使ってフィルターに通す + |=| = 'equalprg' を使ってフィルターに通すか、値が空であれば + C のインデントを行う + |gq| gq テキストを整形する + |g?| g? ROT13 エンコーディング + |>| > 右にシフトする + |<| < 左にシフトする + |zf| zf 折り畳みを作成する + +移動コマンドにカウントが前置されていてかつ演算コマンドにカウントが前置されてい +れば2つのカウントが掛け合わされます。例: "2d3w" は6つの単語を削除します。 + +演算が終了すると、カーソルはだいたい演算を受けたテキストの始めに置かれます。例 +えば、"yfe"はカーソルを動かしませんが、"yFe"はカーソルをヤンクのスタートした +"e"の左側に移動します。 + *linewise* *characterwise* +演算はすべての行もしくは初めと終わりの位置の間の文字に対して施されます。一般的 +に、行ごとに移動するコマンドは行に対して施され(行指向)、行内を移動するコマンド +は文字ごとに施されます(文字指向)。しかしながらいくつかの例外はあります。 + + *exclusive* *inclusive* +文字指向の移動は内包的(inclusive)か排他的(exclusive)のどちらかです。内包的な場 +合は移動の最初と最後の位置が演算の対象に含まれますが、排他的な場合はバッファー +の最後に向かって最後の文字は演算に含まれません。行指向の移動は常に最初と最後の +位置が含まれます。 + +どの移動コマンドが行指向であり、内包的であり、排他的であるかは下に説明されてい +ます。しかしながら2つの例外があります: + +1. 移動コマンドが排他的で移動後の位置が1桁目であれば、移動の最後は一行前の行の + 最後に動かされ、移動コマンドは内包的になります。例: "}" は段落の後の最初の + 行まで移動しますが "d}" はその行を含めません。 + +2. 移動コマンドが排他的で、移動後の位置が1桁目でかつ移動初めの位置がその行の最 + 初の非空白文字かその手前の位置であれば、移動コマンドは行指向になります。 + 例: 段落が空白文字で始まっていて、カーソルが最初の非空白文字に位置している + とすれば "d}" は段落中のすべての行を最初の空白も含めて削除します。それから + put コマンドを行えば削除された行はカーソルの位置の下から挿入されます。 + +演算の途中であれば(演算コマンドはタイプされていて移動コマンドはまだタイプされ +ていない場合)特別なマッピングセットを使うことができます。 参照: |:omap| + +初めに演算コマンドを与えてそれから移動コマンドを打つ、という風にするかわりにビ +ジュアルモードを使うこともできます: テキストの最初を "v" でマークしてからカー +ソルをテキストの終わりまで移動させます。そうするとその範囲にたいして演算コマン +ドを打つことで演算を施すことができます。テキストの初めとカーソル位置の間はハイ +ライトされていますのでどの部分のテキストに演算が施されるのかを目で確認すること +ができます。こうすることで自由度が上がりますが、打ち込むキーストロークは増え、 +そしてリドゥ機能が制限されます。ビジュアルモードの章もご覧下さい。 +|Visual-mode| + +移動に ":" コマンドを使うことが出来ます。例えば "d:call FindEnd()"。しかし、コ +マンドが1行以上になると "." で繰り返すことが出来ません。 +これは繰り返せます: > + d:call search("f")<CR> +これは繰り返せません: > + d:if 1<CR> + call search("f")<CR> + endif<CR> + + +移動を行指向、文字指向、ブロック指向にする + +移動があなたの望むタイプと違う場合は、演算コマンドの後に "v", "V", CTRL-V を使 +うことで別のタイプにすることができます。 +例: > + dj +は2行を削除します。 > + dvj +はカーソル位置からカーソルの1個下の文字の手前までを削除します。 > + d<C-V>j +はカーソル位置とカーソルの1個下の文字を削除します。 > + +行指向の移動に文字指向・ブロック指向の移動をさせるときは注意してください。桁が +必ずしも定義されていないかもしれません。 + + *o_v* +v 演算コマンドと移動コマンドの間で使われたとき:移動コマンドが + 行指向であっても、演算コマンドが文字指向で機能するようにします。 + 移動コマンドが行指向のときは排他的 |exclusive| になります。 + 移動コマンドが既に文字指向の場合には、内包的/排他的を切り替え + ます。これによって排他的な移動を内包的にしたり、その逆にしたり + できます。 + + *o_V* +V 演算コマンドと移動コマンドの間で使われたとき:移動コマンドが + 文字指向であっても、演算コマンドが行指向で機能するようにします。 + + *o_CTRL-V* +CTRL-V 演算コマンドと移動コマンドの間で使われたとき:演算コマンドが + ブロック指向で機能するようにします。これは移動の前後のカーソル + 位置を端点とする矩形範囲を選択したのと同じように動作します。 + +============================================================================== +2. 左右の動き *left-right-motions* + +h or *h* +<Left> or *<Left>* +CTRL-H or *CTRL-H* *<BS>* +<BS> [count] 文字左に移動します|exclusive| + 注: <BS> キーには文字を削除させたければ次のマッピング + を使ってください: + :map CTRL-V<BS> X + ("CTRL-V<BS>" を入力するには CTRL-V キーをタイプした後 + <BS> キーをタイプしてください) + <BS> キーがうまく動作しない場合は |:fixdel| を参照して + ください。 + +l or *l* +<Right> or *<Right>* *<Space>* +<Space> [count] 文字右に移動します|exclusive| + + *0* +0 その行の最初の文字に移動します|exclusive|。 + 上下に移動するときはスクリーンの同一の桁位置に位置した + ままでいます(可能であれば)。 + + *<Home>* *<kHome>* +<Home> その行の最初の文字に移動します|exclusive|。 + 上下に移動するときはテキストの同じ桁位置に位置したまま + でいます(可能であれば)。"1|" と同じように動作し、"0" + との違いは行が <Tab> で始まる場合です。{Vi にはない機 + 能です} + + *^* +^ その行の最初の非空白文字に移動します|exclusive|。 + + *$* *<End>* *<kEnd>* +$ or <End> その行の最後に移動し、そして [count - 1] 行下に移動し + ます|exclusive|。 + ビジュアルモードではカーソルは行の最後の文字の後へ移動 + します。 + 'virtualedit' がオンのときには、"$" によってカーソルが + 行末の先から行の最後の文字へバックするかもしれません。 + + *g_* +g_ [count - 1]行下の最後の非空白文字へ移動|inclusive|。 + {Vi にはない} + + *g0* *g<Home>* +g0 or g<Home> 行が折り返されている場合( 'wrap' オン): スクリーン行の + 初めの文字に移動|exclusive|。スクリーンより広い行の + 場合に "0" と違う動作になります。 + 行が折り返されていない場合は( 'wrap' オフ): スクリーン上 + の現在の行でもっとも左の文字に移動します。最初の文字が + スクリーン上にない場合に "0" とは違う動作になります。 + {Vi にはない機能です} + + *g^* +g^ 行が折り返されている場合( 'wrap' オン): スクリーン行の + 最初の非空白文字に移動します|exclusive|。スクリーンよ + り広い行の場合に "^" とは違う動作になります。行が折り + 返されていない場合は( 'wrap' オフ): スクリーン上の現在 + の行でもっとも左側にある非空白文字に移動します。最初の + 非空白文字がスクリーン上にない場合に "^" とは違う動作 + になります。 {Vi にはない機能です} + + *gm* +gm "g0" とにていますがスクリーンの幅の真ん中に移動します + (もしくは可能な限り真ん中に向かって右に)。{Vi にはない + 機能です} + + *g$* *g<End>* +g$ or g<End> 行が折り返されている場合( 'wrap' オン): スクリーン行の + 最後の文字に、そして [count - 1] スクリーン行下に移動 + します|inclusive|。行がスクリーンより広い場合に "$" + と違う動作になります。 + 行が折り返されていない場合( 'wrap' オフ): スクリーン上 + に表示されている現在の行の文字のうち最も右に位置するも + のに移動します。行の最後の文字がスクリーン上にないかカ + ウントが使われた場合に "$" とは違う動作になります。 + さらに、縦方向への移動は、行末でなく同じ桁になります。 + {Vi にはない機能です} + + *bar* +| 現在の行の [count] スクリーン桁位置に移動します + |exclusive|。 + + *f* +f{char} 右に向かって [count] 番目に現れる {char} に移動し、カ + ーソルがその {char} 上に置かれます|inclusive|。 + {char} は digraph |digraph-arg| でも構いません。 + 'encoding' が Unicode にセットされているときは、 + composing character が使えます。|utf-8-char-arg| を参 + 照。 + |:lmap| マッピングが {char} に適用されます。インサート + モード時の CTRL-^ コマンドでこれの on/off を切り替え + られます|i_CTRL-^|。 + + *F* +F{char} 左に向かって [count] 番目に現れる {char} に移動し、カ + ーソルがその {char} 上に置かれます|inclusive|。 + {char} は |f| コマンドと同様に入力できます。 + + *t* +t{char} 右に向かって [count] 番目に現れる {char} まで移動しま + す。カーソルは {char} の右側の文字に置かれます + |inclusive|。 + {char} は |f| コマンドと同様に入力できます。 + + *T* +T{char} 左に向かって [count] 番目に現れる {char} まで移動しま + す。カーソルは {char} の右側の文字に置かれます + |inclusive|。 + {char} は |f| コマンドと同様に入力できます。 + + *;* +; [count] 回最後の f, t, F, T を繰り返します。 + + *,* +, [count] 回最後の f, t, F, T を反対方向に繰り返します。 + +これらのコマンドはカーソルを現在の行の特定の桁位置に動かします。次の行までも移 +動しうる "$" 以外は行の最初の桁位置か最後の桁位置でストップします。これらのコ +マンドのうち行の境をこえて移動させたいものがあれば 'whichwrap' オプションを参 +照してみてください。 + +============================================================================== +3. 上下の移動 *up-down-motions* + +k or *k* +<Up> or *<Up>* *CTRL-P* +CTRL-P [count] 行上に移動(行指向) + +j or *j* +<Down> or *<Down>* +CTRL-J or *CTRL-J* +<NL> or *<NL>* *CTRL-N* +CTRL-N [count] 行下に移動(行指向) + +gk or *gk* *g<Up>* +g<Up> [count] 表示行上に移動|exclusive|。行が折り返されている + 場合と演算コマンドとともに使われた場合は 'k' と違う動 + 作になります(行指向ですから)。{Vi にはない機能です} + +gj or *gj* *g<Down>* +g<Down> [count] 表示行下に移動|exclusive|。行が折り返されている + 場合と演算コマンドとともに使われた場合は 'j' と違う動 + 作になります(行指向ですから)。{Vi にはない機能です} + + *-* +- <minus> [count] 行上の最初の非空白文字に移動します(行指向) + ++ or *+* +CTRL-M or *CTRL-M* *<CR>* +<CR> [count] 行下の最初の非空白文字に移動します(行指向) + + *_* +_ <underscore> [count] -1 行下の最初の非空白文字に移動します(行指向) + + *G* +G [count] 行目の最初の非空白文字に移動します(行指向) + カウントの前置がなければ最後の行に移動します。 + 'startofline' がセットされていなければ同じ桁位置に移動 + します。 + + *<C-End>* +<C-End> [count] 行目へ移動|inclusive|。カウントの前置がなければ + 最後の行の最後の文字へ移動します。 + {Vi にはない} + +<C-Home> or *gg* *<C-Home>* +gg [count] 行目の最初に非空白文字に移動します(行指向) + カウントの前置がなければ最初の行に移動します。 + 'startofline' がセットされていなければ同じ桁位置に移動 + します。 + +:[range] カーソルを指定された行番号に移動します。複数の番号があ + る場合には、最後のものが使われます。 + + *N%* +{count}% ファイルの {count} パーセントの位置の最初の非空白文字 + にに移動します(行指向)。新しい行番号を計算するのに次の + 式が使われます: + ({count} * number-of-lines + 99) / 100 + 'startofline' オプションも参照してください。 + {Vi にはない機能です} + +:[range]go[to] [count] *:go* *:goto* *go* +[count]go バッファー中の {count} バイト目に移動します。デフォルト + では [count] は1で、ファイルの最初になっています。 + [range] が指定された場合は最後の数字が使われます。行の + 終わりを示す文字が数えられるかどうかは 'fileformat' の + 設定によります。 {Vi にはない機能です} + {|+byte_offset|機能なしでコンパイルされた場合は使えませ + ん} + +これらのコマンドは指定された行に移動します。最初の行もしくは最後の行に到達した +場合はそれ以上動きません。最初の2つのコマンドはカーソルを桁位置を変更する最後 +のコマンドの後の位置と(可能であれば)同じ桁位置に動かします。"$" コマンドは例外 +でカーソルは行の最後の位置に置かれます。 + +============================================================================== +4. 単語単位の移動 *word-motions* + +<S-Right> or *<S-Right>* *w* +w [count] word 前方に。|exclusive| + +<C-Right> or *<C-Right>* *W* +W [count] WORD 前方に。|exclusive| + + *e* +e [count] word 前方の単語の終わりに。|inclusive| + + *E* +E [count] WORD 前方の単語の終わりに。|inclusive| + +<S-Left> or *<S-Left>* *b* +b [count] word 後方に。|exclusive| + +<C-Left> or *<C-Left>* *B* +B [count] WORD 後方に。|exclusive| + + *ge* +ge [count] word 後方の単語の最後に。|inclusive| + + *gE* +gE [count] WORD 後方の単語の最後に。|inclusive| + +これらのコマンドは word もしくは WORD 単位で移動します。 + *word* +word はアルファベット、数字、アンダースコア、もしくは他の非空白文字の連続で構 +成され、ホワイトスペース(スペース、タブ、<EOL>)で区切られます。これらは +'iskeyword' オプションで変更することができます。 + *WORD* +WORD は非空白文字の連続で構成され、ホワイトスペースで区切られます。空行もまた +1つの word と WORD と見做されます。 + +折り畳まれた一連の行は1文字からなる1単語と数えられます。"w" と "W", "e" と"E" +は折り畳まれた行の範囲の後の最初の word や WORD の初め/終わりに移動します。 +"b" と "B" は折り畳みの前の最初の word や WORD の初めに移動します。 + +特殊なケース: カーソルが非空白文字の上にあれば "cw" と "cW" は "ce" と "cE" の +ように扱われます。これは "cw" が単語を変更するコマンドだと解釈されるからで、単 +語には続くホワイトスペースは含まれていないからです。{Vi: 後に空白文字が続く空 +白文字上で "cw" を実行した場合最初の空白文字のみが変更されました; これはおそら +くバグです。なぜなら "dw" はすべての空白文字を削除するからです} + +もう一つの特殊なケース: 演算コマンドと組み合わせて "w" 移動が使われて、かつカ +ーソルがその上を移動した最後の単語が行末にあった場合、その単語の終わりが演算の +対象になるテキストの終わりになります。次の行の最初の単語ではありません。 + +オリジナルの Vi の "e" の実装はかなりバギーでした。例えば、前の行が空行であっ +た場合 "e" コマンドを打っても行の最初の文字に止まったままになりました。しかし +"2e" と打つとこのことは起こりません。Vim では "ee" と "2e" は同じで、こちらの +方が理にかなっています。しかしながら、このことは Vi と Vim との間に少しインコ +ンパチビリティを生じさせていることになります。 + +============================================================================== +5. オブジェクト単位で移動 *object-motions* + + *(* +( [count] 文後方に。|exclusive| + + *)* +) [count] 文前方に。|exclusive| + + *{* +{ [count] 段落後方に。|exclusive| + + *}* +} [count] 段落前方に。|exclusive| + + *]]* +]] [count] セクション前方に、もしくは1桁目が '{' で始まる + 次の場所に。演算コマンドの後で使われた場合は1桁目が + '}' の場所に(行指向) + + *][* +][ [count] セクション前方に、もしくは1桁目が '}' で始まる + 次の場所に(行指向) + + *[[* +[[ [count] セクション後方に、もしくは1桁目が '{' で始まる + 前の場所に(行指向) + + *[]* +[] [count] セクション後方に、もしくは1桁目が '}' で始まる + 前の場所に(行指向) + +これらのコマンドは3種類のテキストのまとまりの単位で移動します。 + + *sentence* +文は '.', '!', '?' で終わり、その後に行末かスペースもしくはタブが続くものとし +て定義されます。任意の数の閉じ ')', ']', '"', ''' 文字が '.', '!', '?' の後に +、そして改行もしくはスペースかタブの前に現れてもよいです。段落とセクションの境 +界は文の境界でもあります。文の定義を変更することはできません。 +もし 'J' フラグが 'cpoptions' にある場合は句読点の後に少なくとも二つのスペース +がある必要があります; <Tab>s はホワイトスペースとして認識されません。文の定義 +を変更することはできません。 + + *paragraph* +段落はそれぞれ空行の後から始まり、そしてまた段落マクロのセットからそれぞれ始ま +ります。段落マクロは 'paragraphs' オプションで指定されている文字のペアです。デ +フォルトで "IPLPPPQPP LIpplpipbp" で、".IP", ".LP", などのマクロに一致します。 +(これらは nroff のマクロです。ですのでドットは1桁目になければなりません)。セク +ションの境界は段落の境界でもあります。これは '{' か '}' を1桁目には含んでいな +いということに注意してください。また、空行(ホワイト・スペースのみを含む行)は、 +パラグラフの境界ではないということにも注意してください。 + + *section* +セクションは1桁目の改ページ(form-feed)(<C-L>)の後から始まり、そしてセクション +マクロのセットからそれぞれ始まります。セクションマクロは 'sections' オプション +で定義される文字のペアです。デフォルトは "SHNHH HUnhsh" で ".SH", ".NH",".H", +".HU", ".nh", ".sh" といった nroff マクロでセクションを開始するものを定義して +います。 + +"]" と "[" コマンドは1桁目の '{' もしくは '}' でストップします。これは C のプ +ログラムで関数の最初か最後を見つけるのに便利です。2番目にタイプされたタイプの +括弧が探されるということに留意しておいてください。 + +もし '{' か '}' が1桁目にはないけれど、とにかく "[[" と "]]" を使って検索した +い場合は次のマッピングを使ってみてください: > + :map [[ ?{<CR>w99[{ + :map ][ /}<CR>b99]} + :map ]] j0[[%/{<CR> + :map [] k$][%?}<CR> +[これらはそのままタイプしてください。参照 |<>|] + +============================================================================== +6. オブジェクト単位で選択 *object-select* *text-objects* + *v_a* *v_i* + +次のものはビジュアルモードか演算コマンドの後でのみ使うことができる一連のコマン +ドを示しています。"a" で始まるコマンドは "a"n(1つの) まとまりをホワイトスペー +スを含めて選択します。"i" で始まるコマンドはまとまりの "inner"(内部)をホワイト +スペースを含まずに選択するか、もしくはホワイトスペースのみを選択します。ですの +で、"inner" コマンドはつねに "a" コマンドより少なくテキストを選択することにな +ります。 + +これらのコマンドは {Vi にはない機能です} +これらのコマンドはコンパイル時に |+textobjects| 機能を無効にしていた場合には +使えません。 + *v_aw* *aw* +aw "a word"、[count] word 選択します(参照 |word|)。 + 単語の前後に続いているホワイトスペースもともに含められ + ますがカウントはされません。 + 行指向ビジュアルモードで使われたときは、"aw" は文字単 + 位ビジュアルモードに切り替えます。 + + *v_iw* +iw "inner word"、[count] word 選択します(参照 |word|)。 + word の間のホワイトスペースもカウントされます。 + 行指向ビジュアルモードで使われたときは、"iw" は文字単 + 位ビジュアルモードに切り替えます。 + + *v_aW* +aW "a WORD"、[count] WORD 選択します(参照 |WORD|)。 + 単語の前後に続いているホワイトスペースも含められます + がカウントはされません。 + 行指向ビジュアルモードで使われたときは、"aW" は文字単 + 位ビジュアルモードに切り替えます。 + + *v_iW* +iW "inner WORD"、[count] WORD 選択します(参照 |WORD|)。 + ホワイトスペースもカウントされます。 + 行指向ビジュアルモードで使われたときは、"iW" は文字単 + 位ビジュアルモードに切り替えます。 + + *v_as* +as "a sentence" [count] 文選択します(参照 |sentence|)。 + ビジュアルモードで使われたときは、文字指向になります。 + + *v_is* +is "inner sentence" [count] 文の内部を選択します(参照 + |sentence|)。 + ビジュアルモードで使われたときは、文字指向になります。 + + *v_ap* +ap "a paragraph" [count] 段落選択します(参照 + |paragraph|)。 + 例外:空行(空白だけからなる)も段落の境界になります。 + ビジュアルモードで使われたときは、行指向になります。 + + *v_ip* +ip "inner paragraph" [count] 段落の内部を選択します(参照 + |paragraph|)。 + 例外:空行(空白だけからなる)も段落の境界になります。 + ビジュアルモードで使われたときは、行指向になります。 + +a] *v_a]* *v_a[* +a[ "a [] block" [count] '[' ']' block を選択します。この + コマンドは後方に [count] 番目に現れる '[' を探し、それ + から対応する ']' を探します。そしてその2つに囲まれたテ + キストを '[' と ']' も含めて選択します。 + ビジュアルモードで使われたときは、文字指向になります。 + +i] *v_i]* *v_i[* +i[ "inner [] block" [count] '[' ']' block の内部を選択し + ます。このコマンドは後方に [count] 番目に現れる '[' を + 探し、それから対応する ']' を探します。そしてその2つに + 囲まれたテキストを '[' と ']' を除いて選択します。 + ビジュアルモードで使われたときは、文字指向になります。 + +a) *v_a)* +a( *v_ab* *v_a(* +ab "a block" [count] block 選択します。"[count] [(" から + それに対応する ')' までで、'(' と ')' を含みます(参照 + |[(|)。括弧の外側の空白は含みません。 + ビジュアルモードで使われたときは、文字指向になります。 + +i) *v_i)* +i( *v_ib* *v_i(* +ib "inner block" [count] block の内部を選択します。 + "[count] [(" からそれに対応する ')' までで、'(' と ')' + を除きます(参照 |[(|)。 + ビジュアルモードで使われたときは、文字指向になります。 + +a> *v_a>* *v_a<* +a< "a <> block" [count] <> block 選択します。[count] 番 + 目に現れる '<' を検索し、それに対応する '>' までを '<' + と '>' を含めて選択します。 + ビジュアルモードで使われたときは、文字指向になります。 + +i> *v_i>* *v_i<* +i< "inner <> block" [count] <> block の内部を選択します。 + [count] 番目に現れる '<' を検索し、それに対応する '>' + までを '<' と '>' を除いて選択します。 + ビジュアルモードで使われたときは、文字指向になります。 + +a} *v_a}* +a{ *v_aB* *v_a{* +aB "a Block" [count] Block 選択します。"[count] [{" から + それに対応する '}' までで '{' と '}' を含みます(参照 + |[{|)。 + ビジュアルモードで使われたときは、文字指向になります。 + +i} *v_i}* +i{ *v_iB* *v_i{* +iB "inner Block" [count] Block 選択します。"[count] [{" か + らそれに対応する '}' までで '{' と '}' を除きます(参照 + |[{|)。 + ビジュアルモードで使われたときは、文字指向になります。 + +演算コマンドの後に使われた場合: +ブロック以外のオブジェクト: + "a" コマンド: 演算コマンドはオブジェクトとオブジェクトの後に続くホワイ + トスペースに対して施されます。オブジェクトの後にホワイトスペースがない + か、もしくはオブジェクトの前のホワイトスペースにカーソルが位置している + 場合オブジェクトの前のホワイトスペースも含まれます。 + "inner" コマンド: カーソルがオブジェクト上にあれば演算コマンドはオブジ + ェクトに対して施されます。カーソルがホワイトスペース上にあればホワイト + スペースにたいして施されます。 +ブロックオブジェクト: + 演算コマンドはカーソルがその内側に位置しているブロック、もしくは囲んで + いる括弧上にカーソルがあるブロックに対して施されます。"inner" コマンド + は囲んでいる括弧以外に対して施され、"a" コマンドの場合は括弧も含められ + ます。 + +ビジュアルモードで使われた場合: +ビジュアル範囲の初めと終わりが同一の場合(単に "v" と打っただけの場合): + 演算コマンドを使う場合と同様1つのオブジェクトが選択されます。 +ビジュアル範囲の初めと終わりが同一でない場合: + ブロック以外のオブジェクトの場合はビジュアル範囲を1オブジェクト分広げる + かもしくは次のオブジェクトまでのホワイトスペースまで広げます。"a" オブ + ジェクトの場合はそれら両方を含みます。広げる方向はカーソルがビジュアル + 範囲のどちら側にあるかによります。つまりブロックオブジェクトの場合はブ + ロックは1レベル外側に広げられます。 + +実例として削除コマンドのリストを挙げます。小さいオブジェクトから大きいオブジェ +クトの順で並べられています。1文字と行全体の削除については今までにも存在してい +た vi 移動コマンドが使われているということに注意してください。 + "dl" 1文字削除 ("x" と同じです) |dl| + "diw" inner word を削除 *diw* + "daw" a word を削除 *daw* + "diW" inner WORD を削除 (参照: |WORD|) *diW* + "daW" a WORD を削除 (参照: |WORD|) *daW* + "dd" 1行削除 |dd| + "dis" inner sentence を削除 *dis* + "das" a sentence を削除 *das* + "dib" inner '(' ')' block を削除 *dib* + "dab" a '(' ')' block を削除 *dab* + "dip" inner paragraph を削除 *dip* + "dap" a paragraph を削除 *dap* + "diB" inner '{' '}' Block を削除 *diB* + "daB" a '{' '}' Block を削除 *daB* + +移動コマンドを使う場合とオブジェクトを使う場合の違いに留意しておいてください。 +移動コマンドの場合はカーソルの位置から移動後の位置までに演算を施します。オブジ +ェクトを使った場合はカーソルがオブジェクトの中のどこに位置していても演算はオブ +ジェクト全体に施されます。例として "dw" と "daw" を比べてみましょう: "dw" はカ +ーソルの位置から次の word の初めまでを削除し、"daw" はカーソルの位置の単語と前 +後のスペースを削除します。 + +============================================================================== +7. マーク *mark-motions* *E20* *E78* + +マークへジャンプするには2つの方法があります: +1. ` (バッククォート)で : カーソルは指定された位置に置かれます。|exclusive| +2. ' (シングルクォート)で: カーソルは指定された位置の行の最初の非空白文字に置 + かれ移動は行指向です。 + + *m* *mark* *Mark* +m{a-zA-Z} カーソル位置を{a-zA-Z}にマークします(これは移動コマン + ドではありません。ですのでカーソルは動きません)。 + + *m'* *m`* +m' or m` 直前位置マークをセットします。"''" もしくは "``" コマン + ドでこの位置に移動できます。(移動コマンドではありませ + ん。ですのでカーソルは動きません)。 + + *m[* *m]* +m[ or m] マーク |'[| or |']| をセットします。演算コマンドが複数 + のコマンドでシミュレートされるときに便利です。(移動コ + マンドではありません。ですのでカーソルは動きません)。 + + *:ma* *:mark* *E191* +:[range]ma[rk] {a-zA-Z} [range]の範囲の最後の行番号の0桁目を{a-zA-Z}にマーク + します。デフォルトはカーソル行です。 + + *:k* +:[range]k{a-zA-Z} :mark コマンドと同じですが、マーク名の前のスペースは挿 + 入しなくてもよいです。 + + *'* *'a* *`* *`a* +'{a-z} `{a-z} マーク {a-z} へジャンプ。 + + *'A* *'0* *`A* *`0* +'{A-Z0-9} `{A-Z0-9} マーク {A-Z0-9} を含むファイル・位置へジャンプ。 + (別のファイルにある場合は移動コマンドにはなりません)。 + {Vi にはない機能です} + + *g'* *g'a* *g`* *g`a* +g'{mark} g`{mark} + {mark} へジャンプするが、カレントバッファ内で移動する + 場合にはジャンプリストを変更しない。例: > + g`" +< これはファイル内の最後の記憶している位置にジャンプする。 + $VIMRUNTIME/vimrc_example.vim を参照。{Vi にはない} + + *:marks* +:marks 現在のマークを全てリストします(移動コマンドではありませ + ん)。 + |'(|, |')|, |'{| と |'}| マークはリストされません。 + {Vi にはない機能です} + + *E283* +:marks {arg} {arg} で指定されるマークをリストします(移動コマンドでは + ありません)。例: > + :marks aB +< マーク 'a'と'B' をリストします。{Vi にはない機能です} + + +マークはどのようにしても見えません。マークは単に覚えておかれるファイル中の位置 +に過ぎません。マークと名前付きレジスターを混同しないようにしてください、まった +く別のものです。 + +'a - 'z 小文字のマークです。1つのファイル中で有効です。 +'A - 'Z 大文字のマークで、ファイルマークとも呼ばれます。ファイル間でも + 有効です。 +'0 - '9 番号マークです。.viminfo ファイルによってセットされます。 + +小文字のマーク 'a から 'z まではマークのあるファイルがバッファーリストに存在す +る限り覚えておかれます。もしファイルをバッファーリストから削除するとそのファイ +ルに関するマーク一は全て失われます。またマークを含んでいる行を削除するとそのマ +ークは消されます。 + +マークを削除するには:新しい行を作成し、そこにマークして、その行を削除する。 +例: "o<Esc>mxdd"。ただしこれはファイルも変更する。"u" はマークも復元するので +ここで使うと意味がない。 + +小文字のマークは演算コマンドとともに使うことができます。例: +"d't" は現在のカーソル位置からマーク 't' までの行を削除します。アイディア: マ +ーク 't' をTop 位置に設定したり、'b' を Bottom 位置に設定したりします。小文字 +のマークはアンドゥとリドゥによって復元することができます。 + +大文字のマーク 'A' から 'Z' はファイル名を含んでいます。{Vi: 大文字のマークは +ありません} ファイルからファイルに移動するのに使うことができます。大文字のマー +クを演算コマンドとともに使うにはマークは現在のファイルになければなりません。ま +た大文字のマークの場合は行を挿入/削除したり一時的に他のファイルを編集したりし +てもマークのある行番号は覚えておかれます。'viminfo' オプションの値が空でなけれ +ば大文字のマークは .viminfo ファイルに保持されます。参照: |viminfo-file-marks| + +番号マーク '0 から '9 まではこれらとはまったく異なります。直接セットすることは +できず、viminfo ファイル |viminfo-file| を使っている場合にのみ存在します。基本 +的に '0 は最後に Vim を終了したときのカーソル位置であり、'1 は最後から1個前の +位置、などなどです。特定のファイルを番号マークに保存しないようにするには +'viminfo'の "r" フラグを使ってください。参照: |viminfo-file-marks| + + + *'[* *`[* +'[ `[ 直前に変更またはヤンクされたテキストの最初の文字 + へ移動します。 + {Vi にはない機能です} + + *']* *`]* +'] `] 直前に変更またはヤンクされたテキストの最後の文字 + へ移動します。 + {Vi にはない機能です} + +なんらかの演算コマンドを実行した後は、カーソルは演算を施したテキストの初めに置 +かれます。プットコマンド("p" もしくは "P")の後は、カーソルは挿入された最初の行 +に位置する場合と最後に挿入された文字に位置する場合があります。上の4つのコマン +ドはカーソルをどちらかの終わりに位置させます。例: 10行ヤンクした後、その行の内 +の最後の行に移動したい場合は: "10Y']"。数行を "p" コマンドで挿入した後、1番下 +に挿入された行に移動したい場合は: "p']"。これはすでに挿入済みのテキストに関し +ても動作させることができます。 + +注: ブロック指向のビジュアルモードを使っているのでない限り、テキストの削除の後 +は始めと終わりの位置は同じです。これらのコマンドは、現在のファイルに対してまだ +変更がされていない場合は動作しません。 + + *'<* *`<* +'< `< 現在のバッファーで最後に選択されたビジュアルエリアの最 + 初の行の最初の文字に移動します。 + {Vi にはない機能です} + + *'>* *`>* +'> `> 現在のバッファーで最後に選択されたビジュアルエリアの最 + 後の行の最後の文字に移動します。 + {Vi にはない機能です} + + *''* *``* +'' `` カーソルがジャンプする直前にいた、もしくは最後の "m'" + か "m`" コマンドが行われた位置に移動します。 + |:keepjumps| コマンドモディファイヤが使われた場合には + セットされません。 + |restore-position| も参照。 + *'>* + + *'quote* *`quote* +'" `" 現在のバッファーを最後に終了した時のカーソル位置に + 移動します。デフォルトで最初の行の最初の文字に移動しま + す。それぞれの開いたファイルでこれをどのようにして使う + かについては |last-position-jump|をご覧下さい。 + ウィンドウごとに1つではなく、バッファに対して1つの位 + 置が記憶されます。バッファがあるウィンドウに表示されて + いる間はその位置は変わりません。 + {Vi にはない機能です} + + *'^* *`^* +'^ `^ 最後にインサートモードが終了したときのカーソル位置に移 + 動します。これは |gi| コマンドで使われます。 + |:keepjumps| コマンドモディファイヤが使われたときはセ + ットされません。 + {Vi にはない} + + *'.* *`.* +'. `. 最後に変更された場所に移動します。変更が始まった場所 + かその近くです。1つのコマンドが複数の変更をすることも + あります。その場合は、変更の最後の近くになります。例え + ば、単語を入力をしたときは、最後の文字の上になります。 + {Vi にはない} + + *'(* *`(* +'( `( |(| コマンドのように、現在の文の最初に移動します。 + {Vi にはない} + + *')* *`)* +') `) |)| コマンドのように、現在の文の最後に移動します。 + {Vi にはない} + + *'{* *`{* +'{ `{ |{| コマンドのように、現在の段落の最初に移動します。 + {Vi にはない} + + *'}* *`}* +'} `} |}| コマンドのように、現在の段落の最後に移動します。 + {Vi にはない} + +これらのコマンドは、それ自身はマークではなく、マークへジャンプします: + + *]'* +]' カーソルがある行から [count] 個先の小文字のマークがあ + る行の最初の非空白文字へ移動します。 + {Vi にはない} + + *]`* +]` カーソル位置以降の [count] 個先の小文字のマークへ移動 + します。 + {Vi にはない} + *['* +[' カーソルがある行から [count] 個前の小文字のマークがある + 行の最初の非空白文字へ移動します。 + {Vi にはない} + + *[`* +[` カーソル位置より [count] 個前の小文字のマークへ移動し + ます。 + {Vi にはない} + + +:loc[kmarks] {command} *:loc* *:lockmarks* + マークを調整することなく {command} を実行します。 + (訳注:普通にコマンドを実行したときはマーク位置が調整 + される) + これは、完了したときの行数が実行前と変わらないような変 + 更をするときに便利です。 + 注意:行数が変わった場合には、変更箇所以降のマークは以 + 前の行番号を持ち続けるので、別の行に移動することになり + ます。 + 以下のものが行の削除・挿入後に調整されません: + - 小文字のマーク 'a - 'z + - 大文字のマーク 'A - 'Z + - 番号マーク '0 - '9 + - 最後の挿入箇所 '^ + - 最後の変更箇所 '. + - ビジュアルエリア '< と '> + - 目印が設置された行の番号 + - quickfix 箇所の行番号 + - |jumplist| 内の位置 + - |tagstack| 内の位置 + 以下のものは調整されます: + - 直前の文脈マーク '' + - カーソル位置 + - the view of a window on a buffer + - 折り畳み + - diffs + +:kee[pmarks] {command} *:kee* *:keepmarks* + 現在のところ、フィルターコマンド |:range!| にだけ効果 + があります: + - フィルタリングの後の行数が実行前以上の場合、全ての + マークは同じ行番号を持ち続けます。 + - 行数が減る場合、削除された行中のマークは削除されま + す。 + どちらの場合にも、フィルタされたテキスト以降のマークは + 通常通りテキストに一致するよう調整されます。 + 'cpoptions' オプション中に 'R' フラグがない場合、これは + ":keepmarks" を使うのと同じ効果があります。 + + *:keepj* *:keepjumps* +:keepj[umps] {command} + マーク |''|, |'.|, |'^| と |jumplist| や |changelist| + を変更しません。自動的に変更やテキストの挿入を行い、 + ユーザがその位置に行きたくないという場合に便利です。 + 例:タイムスタンプ "Last change" を更新するとき: > + autocmd BufWritePre,FileWritePre *.abc keepjumps call SetLastChange() + +============================================================================== +8. ジャンプ *jump-motions* + +「ジャンプ」とは次のコマンドのどれかを意味します: 新しいファイルの編集を始める +コマンドと、"'", "`", "G", "/", "?","n", "N", "%", "(", ")", "[[", "]]", +"{","}", ":s", ":tag", "L", "M", "H" です。これらのコマンドのうちのどれかを使 +ってカーソルを「ジャンプ」させた場合、ジャンプする前のカーソルの位置は覚えてお +かれます。その位置を含む行を削除したり変更したりしていなければ、"''" と "``" +コマンドを使ってその位置に戻ることができます。 + + *CTRL-O* +CTRL-O ジャンプリストの中の [count] だけ古いカーソル位置に移 + 動します(移動コマンドではありません)。 + {Vi にはない機能です} + {+jumplist 機能なしのときは使用できない} + +<Tab> or *CTRL-I* *<Tab>* +CTRL-I ジャンプリストの中の [count] だけ新しいカーソル位置に + 移動します(移動コマンドではありません)。 + |quickfix-window| 内においては、カーソル下のエラーの位 + 置に移動します。 + {Vi にはない機能です} + {+jumplist 機能なしのときは使用できない} + + *:ju* *:jumps* +:ju[mps] ジャンプリストを表示させます(移動コマンドではありませ + ん)。{Vi にはない機能です} + {+jumplist 機能なしのときは使用できない} + + *jumplist* +ジャンプはジャンプリストに覚えておかれ、CTRL-O と CTRL-I コマンドで前の古い位 +置に移動し、そして再び新しい位置に戻ることができます。このようにしてジャンプリ +ストの中を上下に移動することができます。ジャンプリストはそれぞれのウインドーで +分かれており、エントリーの最大の数は50に固定されています。 +{+jumplist 機能なしのときは使用できない} + +例えば、3回ジャンプを行った後ではジャンプリストは次のようになっています: + + jump line col file/line ~ + 3 1 0 some text ~ + 2 70 0 another line ~ + 1 1154 23 end. ~ + > ~ + +"file/line" 欄はファイル名か現在のファイルであればジャンプするテキストを表示し +ています(インデントは取り除かれ、そして長い行はウインドーに合うように短くカッ +トされます)。 + +現在1167行目にいるとして、CTRL-O コマンドを使うとカーソルは1154行目に移動しま +す。結果として次のようになります: + + jump line file/line ~ + 2 1 some text ~ + 1 70 another line ~ + > 0 1154 end. ~ + 1 1167 foo bar ~ + +ポインターは最後に使われたジャンプ位置にセットされます。次の CTRL-O コマンドは +エントリーの上に、次の CTRL-I コマンドはエントリーの下に移動するのに使います。 +ポインターが最後のエントリーの下に位置している場合、このことは前に CTRL-I もし +くは CTRL-O を使っていないことを意味します。この場合 CTRL-O コマンドを使うとカ +ーソル位置がジャンプリストにくわえられます。そうしてその CTRL-O コマンドを使う +前の位置に戻ることもできます。この場合は1167行目です。 + +さらに CTRL-O コマンドを実行することで70行目と1行目に移動し、CTRL-I コマンドを +使うことで再び1154行目と1167行目に戻ることができます。"jump" 欄の数はこの場所 +に移動するのに何回の CTRL-O もしくは CTRL-I コマンドが必要なのかを示しているこ +とも覚えておいてください。 + +ジャンプコマンドを使うと現在の行がジャンプリストの最後に加えられます。同じ行が +すでにジャンプリストにあった場合はそれは削除され、結果としては CTRL-O を繰り返 +していると以前の場所には一度だけ戻ることになります。 + +|:keepjumps|コマンド修飾子が使われた場合、ジャンプ操作はリストに記憶されませ +ん。 + +CTRL-O コマンドを行って1154行目に移動した後、他のジャンプコマンド(例えば: "G") +を実行したとするとジャンプリストは次のようになります: + + jump line col file/line ~ + 4 1 0 some text ~ + 3 70 0 another line ~ + 2 1167 0 foo bar ~ + 1 1154 23 end. ~ + > ~ + +行が削除されたり挿入された場合は行番号も調整されますが、保存しないで(":n!" コ +マンドなどを使って)編集を中断した場合は失敗します。 + +ウィンドウを分割すると、ジャンプリストは新しいウィンドウにコピーされます。 + +'viminfo' オプションに項目 ' を含めていると、viminfo ファイルにジャンプリスト +が保存され、Vim を起動したときに復元されます。 + + +変更リストへのジャンプ *changelist* *change-list-jumps* *E664* + +変更がなされたとき、カーソル位置が記憶されます。アンドゥできる全ての変更に対し +、それが前の変更に近くない限り、1つの位置が記憶されます。変更点やアンドゥされ +た位置へジャンプするのに、以下の2つのコマンドを使うことができます。 + + *g;* *E662* +g; 変更リスト中の [count] 個前の位置に移動します。 + [count] が前の変更箇所の数より大きければ、最も古い変更 + 箇所へ移動します。 + それ以上古い変更が無ければエラーメッセージが表示されま + す。(移動コマンドではありません) + {Vi にはない} + {+jumplist 機能なしのときは使用できない} + + *g,* *E663* +g, 変更リスト中の [count] 個後の位置に移動します。 + |g;| の逆方向で、あとは同様です。 + (移動コマンドではありません) + {Vi にはない} + {+jumplist 機能なしのときは使用できない} + +count を使うと、可能な限り前/後にジャンプできます。つまり、"999g;" とすると +履歴に残っている最初の変更箇所へジャンプできます。変更リストのエントリの数は固 +定されていて、|jumplist| のものと同じです。 + +アンドゥ可能な変更が2回、同じ行の 'textwidth' よりも小さい桁で行われたときは、 +後者だけが記憶されます。これは "xxxxx" のような一連の小さな変更をリストに残す +のを避けるためです。'textwidth' が 0 のときは 'wrapmargin' が使われます。 +'wrapmargin' もセットされていないときは 79 となります。詳細:速度が落ちるのを +避けるため、計算には文字数でなくバイト数が使われます(これはマルチバイトエンコ +ーディングに対してのみ関係します)。 + +テキストが挿入または削除されると、カーソル位置が変更箇所と少しずれるかもしれま +せん。(特に行が削除されたときは) + +|:keepjumps| コマンドモディファイヤが使われたときは変更箇所は記憶されません。 + + *:changes* +:changes 変更リストを表示します。文字 ">" のついているエントリ + は現在の位置であることを示しています。変更が行われると + ">" は最新のエントリの下になり、"g;"で最新のエントリの + 場所に移動できることを表します。1列目はその場所に移動 + するのに必要な count を示しています。例: + + change line col text ~ + 3 9 8 bla bla bla + 2 11 57 foo is a bar + 1 14 54 the latest changed line + > + + "3g;" とすると9行目に移動します。すると次の ":changes" + の出力はこうなります: + + change line col text ~ + > 0 9 8 bla bla bla + 1 11 57 foo is a bar + 2 14 54 the latest changed line + + この状態で "g," とすると11行目に移動し、"2g," とすると + 14行目に移動します。 + +============================================================================== +9. 様々な動き *various-motions* + + *%* +% 現在の行のカーソルの後もしくは下の次のアイテムを検索し + その対応するものにジャンプします|inclusive|。アイテム + は次のものです: + ([{}]) 丸括弧もしくは(ねじれ/四角)括弧 + (これは 'matchpairs' オプションで変更で + きます) + /* */ C スタイルのコメントの始めと終わり + #if, #ifdef, #else, #elif, #endif + C プリプロセッサー条件命令(カーソルが + # の上にあるか ([{ が後にないとき) + 他のアイテムに対しては matchit プラグインが使えます。 + |matchit-install| を参照。 + + 'cpoptions' が "M" |cpo-m| を含んでいる場合、丸括弧と + 大括弧の前のバックスラッシュは考慮されません。"M" がな + い場合はバックスラッシュの数が考慮され、偶数個と奇数個 + は対応しないようになります。つまり、" ( \) )" や + "\( ( \)"となっているとき、それぞれ最初と最後の括弧が + 対応します。 + '%' 文字 |cpo-%| が 'cpoptions' にない場合、一つの行の + 中の丸括弧/大括弧の数が偶数ではなく、そして現在行と1 + つ前の行がバックスラッシュで終わっていない限り、二重引 + 用符の中の丸括弧と大括弧は無視されます。 + '(', '{', '[', ']', '}', ')も無視されます(シングル引用 + 符の中の丸括弧と大括弧)。このことは C ではうまく動作し + ますが Perl ではあんまりうまくないことに注意してくださ + い。Perl では文字列にシングル引用符も使われるのです。 + カウントの前置はできません({count}% はファイルの + {count} パーセントの位置に移動します)。'%' を + #if/#else/#endif 上で使うと動作は行指向になります。 + + *[(* +[( [count] 前のマッチするものがない '(' に移動します。 + |exclusive|{Vi にはない機能です} + + *[{* +[{ [count] 前のマッチするものがない '{' に移動します。 + |exclusive|{Vi にはない機能です} + + *])* +]) [count] 次のマッチするものがない ')' に移動します。 + |exclusive|{Vi にはない機能です} + + *]}* +]} [count] 次のマッチするものがない '}' に移動します。 + |exclusive|{Vi にはない機能です} + +上の4つのコマンドは現在のコードブロックの最初か最後に移動するのに使うことがで +きます。'(', ')', '{', '}' 上で "%" コマンドを実行するのに似ていますが、この場 +合コードブロック内のどこにいても実行することができます。C プログラムで非常に役 +に立ちます。例: "case x:" にいる時に "[{" を実行することで switch 文の所に戻り +ます。 + + *]m* +]m [count]次のメソッドの始めに移動します(Javaもしくは似た + ような構造の言語用)。メソッドの始まりの前でなければ、ク + ラスの始めか終わりに移動します。カーソルの後に'{' が見 + つからなければエラーとなります。|exclusive| + {Viにはない機能です} + *]M* +]M [count]次のメソッドの終わりに移動します(Javaもしくは似 + たような構造の言語用)。メソッドの終わりの前でなければ、 + クラスの始めか終わりに移動します。カーソルの後に'}'が + 見つからなけばエラーとなります。|exclusive| + {Viにはない機能です} + *[m* +[m [count]前のメソッドの始めに移動します(Javaもしくは似た + ような構造の言語用)。メソッドの始まりの後でなければ、ク + ラスの始めか終わりに移動します。カーソルの前に '{' が見 + つからなければエラーとなります。|exclusive| + {Viにはない機能です} + *[M* +[M [count]前のメソッドの終わりに移動します(Javaもしくは似 + たような構造の言語用)。メソッドの終わりの後でなければ、 + クラスの始めか終わりに移動します。カーソルの前に'}'が見 + つからなければエラーとなります。|exclusive| + {Viにはない機能です} + +上記の2つのコマンドはファイルがメソッドとともにクラスを含んでいることを前提と +しています。クラスの定義は '{' と '}' で囲まれていることです。クラスの中のそれ +ぞれのメソッドもまた '{' と '}' で囲まれています。このことはJava言語にも当て +はまります。ファイルは次のようなものです: > + + // comment + class foo { + int method_one() { + body_one(); + } + int method_two() { + body_two(); + } + } +"body_two()" にカーソルをおいて始めてみましょう。"[m" とすると "method_two()" +の始めの '{' に移動します(当然 method が長いともっと便利です)。"2[m" とすると +"method_one()" の始めに移動します。"3[m" とするとクラスの最初に移動します。 + + *[#* +[# [count] 前のマッチするものがない "#if" か "#else" に移 + 動します。|exclusive|{Vi にはない機能です} + + *]#* +]# [count] 次のマッチするものがない "#else" か "#endif" + に移動します。|exclusive|{Vi にはない機能です} + +これらの2つのコマンドは #if/#else/#endif を含む C のプログラムで使います。これ +を使うと #if/#else/#endif の最初か最後に移動することができます(その場合現在の +行も含みます)。それから "%" を使うことでマッチする行に移動することができます。 + + *[star* *[/* +[* or [/ [count] 前の C コメントの始まり "/*" に移動します。 + {Vi にはない機能です} + + *]star* *]/* +]* or ]/ [count] 次の C コメントの終わり "*/" に移動します。 + {Vi にはない機能です} + + + *H* +H スクリーンの最上行から [count] 行目(デフォルト: スクリ + ーンの最上行)の最初の非空白文字に移動します(行指向)。 + 'startofline' オプションも参照してください。カーソル位 + 置は 'scrolloff' オプションに合うように調整されます。 + + *M* +M スクリーンの中央の最初の非空白文字に移動します(行指 + 向)。'startofline' オプションも参照してください。 + + *L* +L スクリーンの最下行から [count] 行目(デフォルト: スクリ + ーンの最下行)の最初の非空白文字に移動します(行指向)。 + 'startofline' オプションも参照してください。カーソル位 + 置は 'scrolloff' オプションに合うように調整されます。 + +<LeftMouse> スクリーン上でマウスがクリックされた場所に移動します + |inclusive|。参照 |<LeftMouse>|。もしその位置がステー + タス行の中であると、そのウインドーがアクティブなウイン + ドーとなりカーソルは動きません。{Vi にはない機能です} + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_os2.jax b/ja/os_os2.jax new file mode 100644 index 000000000..7401d94e2 --- /dev/null +++ b/ja/os_os2.jax @@ -0,0 +1,214 @@ +COMMENT: OS特有情報:OS/2 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*os_os2.txt* For Vim version 6.3. Last change: 2004 Jan 09 + + + VIMリファレンスマニュアル by Paul Slootman + + + *os2* *OS2* *OS/2* +このファイルはVimのOS/2バージョンの詳細について述べている。 + +現在のところ、VimのGUIバージョンのネイティブPMは存在しない: OS/2バージョンはコ +ンソールアプリケーションである。しかしながら、Warp4(Win32sをサポートしている) +のユーザならば、Win-OS/2セッションで使用できるWin32sコンパチブルなGUIバージョ +ンが存在する。このファイルではネイティブのコンソールバージョンについて言及す +る。 + + +注意 ~ + +このOS/2への移植版や、私(訳注:筆者Paul Slootman)や、何人かのOS/2ユーザにとって +はちゃんと動作する;しかしフィードバックは少ししかもらえてないので、(OS/2特有 +の)バグがまったく(以下で言及するものを加えても)無いか、バグが現れるような状況 +にまだ誰も至っていないのか、のどちらかである。DosとUnixモードでのファイル入出 +力、バイナリモード、FATの取り扱いなどは、トラブルになっても良さそうだが、全て +正しく動いている。 + +知られている問題の一つは、Vimによって開かれたファイルが、Vimのシェルエスケープ +経由で起動されたプログラムによって、継承されてしまうことである。これは特に、そ +の時実行されていたほかのプログラムがあると、そのプログラムが終了するまで、Vim +がバッファに関連付けられたスワップファイルを消すことができないことを意味する。 +スワップファイルを消す時に、Vimは消去に失敗してしまうので結局消すことができな +い。そのファイルに対して再びVimセッションを開始しようとすると、警告メッセージ +を受け取ることになる。これは":!start epm"とすると再現できる。Vimを一度終了し、 +epmをスタートした時に編集していたファイルを開いてみよう。いま、これの修正を試 +みている。 + +2つ目の問題は、OS/2システムをUnixに対してtelnetしてVimを起動したように、ネット +ワーク経由で使用している状況を、Vimが検出できないことにある。OS/2が「時々」 +ファンクションやカーソルキーを認識し、対応する普通のPCのキーボードから生成され +るOS/2のコードへ変換することから、生じる問題のようである。既に幾つか実験はして +いる(OS/2コードを正しい機能にマッピングしたり)が、最終的なことは何も言えない +(余談だがこれはWarp 3で起こる)。そのうち正しく理解されるだろう。 + + +必要条件 ~ + +Vimを実行するために、emxのランタイム環境が必要になる(最新版は0.9b)。大体次の名 +前で存在する(それについてArchieに聞け(訳注:本当?)): + + emxrt.zip emx runtime package + +LIBPATHに示されるディレクトリのどれかに置くべき、emx.dllのコピーを同梱してあ +る。EmxはGPLに基づき配布されるが、emx.dllライブラリはそうではない(どういう意味 +かはCOPYING.EMXを参照すればわかる)。 + +このemx.dllは、emxfix04.zipパッケージの中にあったもので、残念なことにPOSIXの機 +能であるselect()にバグ持ちである。Vimの3.27よりも古いバージョンは起動する時に +ハングしてしまう(正確にはvimrcの読み込み中)。これが起こってしまうと、Vimが起動 +するまでに何回か<Enter>を叩くことになる。そんときゃVimを更新したほうが良い。 + + +ヘルプとVIMRCファイル ~ + +手に入れたVimのアーカイブを解凍し、解凍した場所からVimを直接起動すれば、Vimは +ランタイムに必要になるファイルや.vimrcを見つけることができるので、特に設定は要 +らない。 + +ランタイムファイルをバイナリとは別の場所に置くならば、環境変数VIMがヘルプファ +イルやシステムの.vimrcの場所を見つけるのに使用される。次のようなエントリーを +CONFIG.SYSに書く: > + + SET VIM=c:/local/lib/vim + +このディレクトリに.vimrcファイルと、その他のVim用ファイルを置く。runtimeディレ +クトリをこのディレクトリにコピーする。Vimはバージョン毎に独自のruntimeディレク +トリを持っている。それは"c:/local/lib/vim/vim54"のように呼ばれる。これでこのよ +うなVimのツリーができあがる: + c:/local/lib/vim/.vimrc + c:/local/lib/vim/vim54/filetype.vim + c:/local/lib/vim/vim54/doc/help.txt + etc. + +Note: OS/2をFATファイルシステムにインストールした場合に対応するため、.vimrc +ファイルは_vimrcでも構わない。Vimはまず.vimrcを探し、それに失敗したら同じ場所 +で_vimrcを探す。.vimrcもしくは_vimrcの存在が'compatible'オプションに影響を与 +え、思わぬ副作用を生むことがある。|'compatible'|参照。 + +OS/2でネットワークドライバを使用するならば、ネットワークドライブにVimをインス +トールすることができ(.vimrcファイルを含めて; これを「システム」vimrcファイルと +言う)、個人的な.vimrcのコピーを使う(これが「ユーザ」vimrcファイル)。ユーザ +vimrcファイルは環境変数HOMEに示されるディレクトリに置く。 + + +ファイル名内の環境変数 ~ + +環境変数HOMEは、ファイル名のなかで~が使用されたときにも使われ、":e ~/textfile" +はHOMEによって示されるディレクトリにある"textfile"を編集することになる。さらに +その他の環境変数も、":n $SRC/*.c"のようにファイル名の中に使用することができ +る。 + +環境変数HOMEha.viminfoファイルの位置を指定するのにも使われる(|viminfo-file|参 +照)。FATファイルシステム上に.viminfoを置くことには、申し訳ないがまだ対応してい +ない。しかし、-iの起動フラグ("vim -i $HOME/_viminfo"のように)を試すことはでき +る。 + +環境変数HOMEが指定されていない場合は、デフォルトとして"C:/"が使用される。 + + +バックスラッシュ ~ + +スラッシュ('/')とバックスラッシュ('\')を使うと、ちょっとした問題がある(詳しい +説明は|dos-backslash|)が、Vimは殆どの場合「正しい」判断をする。Vim自信もファイ +ル名にバックスラッシュを使うが、しかし幸いにも入力されれば普通のスラッシュも受 +け付ける(実際、そうしたほうが都合が良い事がある)。 + + +一時ファイル ~ + +一時ファイル(フィルタリング用)は次に示すディレクトリで、ファイルを作成できた最 +初のディレクトリに置かれる: + $TMP + $TEMP + C:\TMP + C:\TEMP + 現在のディレクトリ + current directory + + +端末設定 ~ + + *os2ansi* +環境変数TERMには"os2ansi"を用いる(もしくはなにもしない、デフォルトで正しく設定 +される)。他のアプリケーション用にTERMを別の値に設定しなければならない時には、. +vimrcの中で端末としてos2ansiを設定することができる。OS/2のANSIエミュレーション +にはかなり制限があることは問題である(例えば行単位での挿入や削除が無い)。 + +もしも(別のプログラムを使用しているとかで) TERMとして別の値を使いたいならば、 +TERMに設定する値が、termcapに適切なキーマッピングを持つエントリとして含まれて +いるか確認する。emxと一緒に配布されるtermcap.datが常にあるとは限らない。選択し +たtermcapエントリーに付け加えるのに適当な値の幾つかがこれである; これらはカー +ソルキーや、名前つき機能キー(pagedownとか)が効くようにしている。 + + :ku=\316H:kd=\316P:kl=\316K:kr=\316M:%i=\316t:#4=\316s:\ + :kD=\316S:kI=\316R:kN=\316Q:kP=\316I:kh=\316G:@7=\316O:\ + :k1=\316;:k2=\316<:k3=\316=:k4=\316>:k5=\316?:k6=\316@:\ + :k7=\316A:k8=\316B:k9=\316C:k;=\316D: + + +Paul Slootman + + +43行ウィンドウ ~ + +Steven Tryonが提案した、大きなウィンドウでVimを起動する方法: + +PMMailのようなOS/2 WPSのアプリケーションからVimを起動する時には、デフォルトの +25行モードで起動する。快適なウィンドウサイズで使うために、独自の拡張エディタを +"vimbig.cmd"として定義し、'vimbig2.cmd"を呼ぶようにする。多分、かなり強引な方 +法だけど、でもちゃんと動く。 + +vimbig.cmd: > + @echo off + start "Vi Improved" /f vimbig2.cmd %1 %2 %3 %4 + +vimbig2.cmd: > + @echo off + mode 80,43 + vim.exe %1 %2 %3 %4 + exit +< + +クリップボードを使う (Alexander Wagnerの提供) + +OS/2版のVimはシステムのクリップボードに直接アクセスできない。クリップボードを +使うにはほかのアプリケーションを経由する必要がある。これには Stefan Gruendel +によるフリーソフトのパッケージ clipbrd.zip が使える。コンパイルされたバイナリ +と全てのソースがここからダウンロードできる: + http://www.stellarcom.org/vim/index.html + +このパッケージのインストールは、パッケージに入っている二つの実行可能ファイルを +Vimから呼び出せるようにPATHが通ったディレクトリに置くだけである。 + +クリップボードからVimにコピーするには :r コマンドを使う。次のようにして +clipbrd.exeを呼び出すだけだ: > + + :r !clipbrd -r + +Vimからシステムのクリップボードにコピーするには普通にテキストを選択して次の +ようにする: > + + :!clipbrd -w + +これで選択したものをOS/2のクリップボードに書き込める。 + +簡単に使えるようにこのコマンドをマッピングしておくとよい。例えばクリップボー +ドからVimに張り付けるのに F11 を使い、選択したテキストをクリップボードにコ +ピーするのに F12 を使うなら: > + + if has("os2") + imap <F11> <ESC>:r !clipbrd -r<CR>i + vmap <F12> :!clipbrd -w<cr> + else + imap <F11> <ESC>"*p<CR>i + vmap <F12> "*y + endif + +これはOS/2では clipbrd を使い他のプラットフォームではVimの機能を使う。(この +機能をいつも有効にしておくには .vimrc に上記の内容を書いておく) + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/quote.jax b/ja/quote.jax new file mode 100644 index 000000000..d736fadc4 --- /dev/null +++ b/ja/quote.jax @@ -0,0 +1,248 @@ +COMMENT: Vimについての引用集 +STATUS: finished 5.7 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*quotes.txt* For Vim version 5.7. Last change: 1999 Jun 08 + + + VIMリファレンスマニュアル by Bram Moolenaar + + + *quotes* +ニュースやメールから集めた、VIMに関する素晴らしい引用を紹介する。 + + +vim (vim) 名刺 - 溢れんばかりのバイタリティとエネルギー。 [ラテン語, 『力』 +の直接目的格, 力] (辞書) + +VIMはviより大変優れているので、私の古いviの多くの偉大な:mapがすぐに廃れてし +まった! (Tony Nugent, オーストラリア) + +新しいのと修正された資料の準備の間、多くのプログラムが使用されたけれども、編 +集のほとんどはGNU-Linux(RedHat 4.2)上のVIMのバージョン4.5と5.0で行なわれ +た。 (Arnold Robbins, イスラエル, "Learning the Vi editor"の著者) + +魚が水のことを意識しないと思われるのと同様に、私はほとんどVIMについて意識し +ない。それは総ての中にある環境である。私は相当に忙しいシステム管理者で、多く +の異なるプラットホームを扱っている。VIMは私のシステム総てに共通して存在する +唯一のもので、「時々クラッシュする」ということもない唯一のものだ。新しいシス +テムにVIMが入っていなかったときには、私は真っ先にインストールする。どの環境 +でもまったく信頼のおける同じツールを使うことができることは素晴らしく、おかげ +でVIMについては無視することができ、その他のものについては考えることができる +のだ。 (Pete Schaeffer) + +最近ノキアの端末を通してtelnet経由でVIMを起動することに成功した、現在Palm +Pilotでも素晴らしく動いたことを報告できる。 (Allan Kelly, スコットランド) + +Bram! 'VIM'というなんてものすごい仕事をしたものだ! 使えば使うほど感動するよ +(私は古い'vi'のダイハードで1970年代後半の初期の'emacs'から使い始め、1983年に +初期のUNIXで'vi'を見つけることで救われた)。私の考えでは、標準のトップエディ +タとして'VIM'が'emacs'に置換わる時だよ。 (Bo Thide', スウェーデン) + +私もVIMを深く愛し使っている。 (Larry Wall (訳注:Perlの作者)) + +Viはまるでフェラーリだ。初心者にはまるで暴れ馬だが、いったんコツさえ掴んでし +まえば、非常に小さくパワフルかつ高速だ! (不明) +VIMはまるでフェラーリの新モデルだ。発音もそっくり - "VIIIIIIMMM!"。(Stephen +Riehm, ドイツ) + +Schon bei Nutzung eines Bruchteils der VIM-Funktionen wird der Benutzer recht +schnell die Vorzuege dieses Editors kennen- und schaetzenlernen. +翻訳: VIMの機能をほんの少し使うだけでも、ユーザはすぐに使うことができこのエ +ディタの強みを正しく評価するだろう。 (Garry Glendown, conclusion of an +article on VIM in iX magazine 9/1998) + +つい最近VIについてのオライリーの本を手に入れた(VIMについても深く言及されてい +た)。このアプリケーションがあまりにパワフルで驚愕した。 (Jeffrey Rankin) + +坊や、私は私自身VIMについてほとんど総てのことを知っていると考えていた。しか +しいつもオンラインドキュメントを眺めるたびに、それまで知らなかったVIMの機能 +の小さな、しかしクールな面を見つけるんだ!。これは私がみた中でも(多くの商業製 +品と比べてさえも)最高のドキュメントであると言わねばならない。 (Gautam +Mudunuri) + +VIM 4.5は本当に素晴らしい(ファンタスティックな)エディタだ。VIMにはものす +ごぉぉぉぉい多くの機能があり更に重要なことには、初期設定が素晴らしいので本当 +に何の変更も無しに使うことが出来るのだ!!。VIM作者への私の驚きと感謝の念はど +んな言葉をもっても語り尽くせない。この先もそうであって。 (Vikas, アメリカ合 +衆国) + +人々が他のViエディタをVIMのクローンと呼ぶようになるまでどのくらいかかるだろ +うか? (Darren Hiebert) + +"Perfect Programmer's Editor"のスレッドにある[makeのエラーに基づいて自動的に +ファイルの位置へ飛ぶ]というのを読んで、VIMは既にそれをサポートしているので嬉 +しかった。 (Brendan Macmillan, オーストラリア) + +VIM (5.0)を発見して多くの知人とそれについて話をした。VIMはVIの新世紀 +(Millenium)を象徴するんだ、と彼らに言い聞かせた。本当にありがとう! (Matt F. +Valentine) + +"vi"は今から"Vim Imitation(Vimのものまね)"と呼ばれるべきで、逆ではないと考え +る(訳注: VIMはもともとVi IMitationに端を発している)。 (Rungun Ramanathan) + +VIMの法則(訳注: 数学の公式風に): +プログラムPの考え得る限りの動作空間Bの中で各々の要素をbとした時、プログラムP +の全ユーザ空間Uのうち少なくとも1人のユーザuが、ある動作bを許された動作空間B' +に加えるように要求するまでにかかる時間は有限である。 (このときB'は B' <= B +となる) +言い換えれば: 遅かれ早かれ全員がオプションとして総てを欲しがるんだよ (Negri) + +あたらしい計算機プラットホームに移る時はいつも、決まってまず最初にやるのは +VIMを移植すること。後にconfigureを使った時にコンパイルの簡単さにビックリし +た。 (A.M. Sabuncu, トルコ) + +オプションが本当に優秀でとてもパワフルだ。 (Anish Maharaj) + +ユーザインターフェースのデザインは春であり、80x24テキスト専用モードのブ +ティックからの「言葉は復讐に戻った!」。ViエディタのクローンであるVIMは、5.0 +のシンタックスハイライトによって3月のデスクトップに眩暈のするパステルの景色 +をもたらした。金切り声とカスタマイズ性、VIMは伝統的なViのシングルキーマクロ +集に独自の解釈をすることで、我々を驚かせる。(訳注: 原文が難解でまったく自信 +無) +http://www.ntk.net/index.cgi?back=archive98/now0327.txt&line=179#l + +VIM 5の衝撃をどうしても伝えたかったんだ!。シンタックスハイライティング: これ +無しでどうやって生きろって?!。人類最高のエディタを作ってくれてありがとう! +(Mun Johl, アメリカ合衆国) + +重ね重ねVIMには感謝する。Linuxで毎日使っている。 (Eric Foster-Johnson, "UNIX +Programming Tools"の著者) + +史上最高のエディタ (Stuart Woolford) + +VIMの素晴らしい機能のほとんどを少なくとも1度は、ものによってはもう何度も頻繁 +に使ってきた。正直に白状しよう、どれ1つ欠けても生きていけない。viを使ってい +た頃の自分と生産性を比べると、優に倍にはなっている。 (Sitaram Chamarty) + +VIMを愛している。信じられないよ(incredible)。最初の子供にVimberlyと名づけ +た。 (Jose Unpingco, アメリカ合衆国) + +ヒント: "VIM"は"vi improved(vi改)"っていうほうが良い! (Sven Guckes, ドイツ) + +毎日VIMを使っている。他のどんなプログラムよりもVIMと共に過ごす時間が長い…。 +存在するviクローンの中で最高だ。とてもすごいよ。 (Craig Sanders, オーストラ +リア) + +その無限アンドゥ/リドゥで私を幾度となく悲しみから救ってくれた---VIMを使用す +るように強く薦める。 (Terry Brown) + +私の考えうるなかで、この惑星で最良のテキストエディタを書いて(作成して)くれた +ことにたいへん感謝する。次に猫を飼うときは"Vim"と命名したい。 (Bob Sheehan, +アメリカ合衆国) + +:set allとタイプすればオプションで画面が埋め尽くされる。画面全体のものが設定 +か非設定かされている。wrapmarginやmodelinesやshowmodeといった古い友人たちも +見つけたが、新しい友人たちで画面は埋め尽くされていた。私は彼らを愛している!! +私はVIMを愛している!! このエディタに出会えてとても幸せだ! この感じはかつてed +を数年使った後にviに出会った時感じたものに似ている。今まで私が愛したedや、ま +してviを捨て去る日が来るとは考えもしなかった…あぁ神様、viは偉大だった。でも +今は、VIM。 (Peter Jay Salzman,アメリカ合衆国) + +こんな素晴らしいソフトウェアパッケージがあるなんて、私は本当に幸せだ。どんな +高価なソフトよりも良質で、しかも在庫切れということがない。 (Jeff Walker) + +VIMのドキュメントを読むといつも、エディタのパワーに興奮し打ちのめされる。 +(William Edward Webber, オーストラリア) + +VIM万歳!! それはviのように"すぐ手の届くところにあり"、viがひどく必要とした拡 +張がなされている: コマンドを実行すべきブロックの強調表示、簡単に操作でき消化 +できるヘルプ画面、その他沢山。 (Paul Pax) + + +私がこの素晴らしく便利なマクロをもう使わない理由は、今はそれらが組み込まれて +いるVIMを使っているからだ。 (Stephen Riehm, ドイツ) + +私はVIMのユーザで、それを愛している。自分の総てのプログラミング、C、C++、 +HTML、そのほか総てにおいてVimを使用している。 (Tim Allwine) + +私はオリジナルのviと苦闘すること数年の後にVIMを発見し、もうそれなしでは生き +ていけなくなった。 (Emmanuel Mogenet, アメリカ合衆国) + +EmacsにはVimが活躍するほどに長く生き残るチャンスはこれっぽっちもない。加え +て、これほどまでに詳細に渡って記されたドキュメントをい持つソフトウェアを見た +ことがない---しかもそれは多くの商用ソフトウェアよりも素晴らしい! (Leiming +Qian) + +このVIMのバージョンは、それがどんなに素晴らしいものが発見するたびに人々を驚 +愕させるだろう! (Tony Nugent,オーストラリア) + +貴方のアドバイスに従い、ついにVIMを入手し、本当に感動した。すぐに転向した。 +(Patrick Killelea, アメリカ合衆国) + +VIMはとりわけ好きなシェアウェアで、特にバージョン3.0がお気に入りだ。これは本 +当にしっかりした仕事だ。 (Robert Colon, アメリカ合衆国) + +VIM is a joy to use, it is so well thought and practical that I wonder why +anybody would use visual development tools. (訳注: うまく訳せていない) +VIMを使用するのはたのしいし、とても良いもので役に立つ。何故ほかの人たちがビ +ジュアル開発ツールを使おうとするのか理解に苦しむ。VIMはパワフルで優雅で、一 +見単純だが実は747(訳注: ボーイングのジェット機)のように複雑で(とりわけ成長し +た私の.vimrc)、この素晴らしい仕事を続けて欲しいし、VIMはフリーソフトウェア界 +の中心だ。 (Louis-David Mitterand, アメリカ合衆国) + +VIMを使うことがこんなに素晴らしいなんて未だに信じられない。職場の仲間は私が +それを誉めちぎるのを聞かされ過ぎて疲れているだろう。他の人の目が輝きだす。 +(Rick Croote) + +Emacsは起動と実行にかなり時間がかかり、実際に使用するには大きくかさばってい +て、インターフェースは助けになるよりもむしろ混乱させる。しかしながらVIMは小 +さく、早く、パワフルで、素晴らしいインターフェースを持っていて、あらゆる用途 +に使うことができる。 (Paal Ditlefsen) + +VIM3.0を初めて得た時から、非常に熱狂した。ほとんど何の問題点もみあたらなかっ +た。スワップファイルの扱いとバックアップの可能性が非常に堅固で、ひとつのファ +イルを2重に編集することから守ってもくれる。VIとの互換性も非常に高い(この数年 +私の脳はすっかりVIに洗脳されているので、これは絶対条件である)。 (Gert van +Antwerpen,オランダ) + +VIMのビジュアルモードは、凄くパワフルな機能だ! (Tony Nugent, オーストラリア) + +VIMは今までネットに存在しなかった(訳注: 定冠詞THEが付く)唯一のもっとも偉大な +ソースコード作品と言わざるを得ないだろう。 (Jim Battle,アメリカ合衆国) + +実際、新しいviが必要ならばVIM-3.0をお奨めする。これは今まで見たなかで断然最 +高のバージョンのviだ。 (Albert W. Schueller) + +VIMは良いエディタで他の如何なるものにも匹敵するものだ、というべきだろう。 +(Ilya Beloozerov) + +実を言えば時々elvis、vile、xvi、calvinやその他の使っていた。だからこそVIMが +最高だと断言できる!! (Ferenc Deak, ハンガリー) + +VIMは私が長年使用してきた断然最高のエディタである。そして私が使用した総ての +プラットホームに存在するいろんなものをみてきた。それらのなかでもVIMは最高 +だ。 (Guy L. Oliver) + +VIMは石ミノ以来、最高のエディタです。 (Jose Unpingco, アメリカ合衆国) + +こう言いたい、VIMに出会って私はついにemacsからviに鞍替えした - あらゆる点で +優れたエディタだ:キーボードレイアウト、メモリ使用量、text alteration to name +3(訳注:訳不明)。 (Mark Adam) + +実際、今vi独特の設定について知りたいのならば、VIMを起動してそのヘルプを +チェックする! (Nikhil Patel, アメリカ合衆国) + +viユーザとして、VIMはテキストに関わる仕事を以前に遭遇していたよりも、はるか +に愉快なものにしてくれた。 (Steinar Knutsen, ノルウェー) + +VIMをバージョン3.0から使っている。そのころから、ソラリス、リナックス、そして +OS/2 Warpで使用した唯一のエディタだった。友達全員にVIMを使うように薦め、彼ら +はトライし、今も使い続けている。VIMはインターネットからダウンロードした中で +本当に最高のソフトウェアであり、知りうる限りで最高のエディタである。(Marco +Eccettuato, イタリア) + + +以上、要約すれば: (Vimが熱いぜ!) + __ ___ _ _ _ ___ _____ + \ \ / (_)_ __ ___ (_)___ | | | |/ _ \_ _| + \ \ / /| | '_ ` _ \ | / __| | |_| | | | || | + \ V / | | | | | | | | \__ \ | _ | |_| || | + \_/ |_|_| |_| |_| |_|___/ |_| |_|\___/ |_| + ____ _____ _ _ _____ _____ _ _ + / ___|_ _| | | | ___| ___| | | + \___ \ | | | | | | |_ | |_ | | | + ___) || | | |_| | _| | _| |_|_| + |____/ |_| \___/|_| |_| (_|_) (Tony Nugent, オーストラリア) + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/repeat.jax b/ja/repeat.jax new file mode 100644 index 000000000..5025f99cf --- /dev/null +++ b/ja/repeat.jax @@ -0,0 +1,528 @@ +COMMENT: コマンドの繰り返し方法 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*repeat.txt* For Vim version 6.3. Last change: 2004 Jun 22 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +繰り返しコマンド、Vimスクリプトとデバッグ *repeating* + +繰り返しについてはユーザーマニュアルの26章|usr_26.txt|に紹介があります。 + +1. 単発繰り返し |single-repeat| +2. 多重繰り返し |multi-repeat| +3. 複雑な繰り返し |complex-repeat| +4. Vimスクリプトを使う |using-scripts| +5. スクリプトのデバッグ |debug-scripts| + +============================================================================== +1. 単発繰り返し *single-repeat* + + *.* +. 最後の変更を繰り返す。変更の回数は[count]で指定した回 + 数で置き換えられる。'cpoptions'に'y'フラグが含まれてる + 時には、ヤンクコマンドも繰り返す + +単純な変更は"."コマンドで繰り返すことができる。回数を指定しなければ、最後の変 +更の回数が使用される。回数を指定した場合、最後のそれと置き換えられる。最後に行 +なわれた変更が番号付きレジスタの指定を含んでいた場合、レジスタ番号は増加され +る。これをどのように使うかの例は|redo-register|を参照。ビジュアル選択を使用し +たコマンドを繰り返す時は、同じ「サイズ」の範囲が使用されることに注意。 +|visual-repeat|を参照。 + + *@:* +@: 最後のコマンドラインを[count]回繰り返す。 + {|+cmdline_hist|が無効にされていると使えない} + + +============================================================================== +2. 多重繰り返し *multi-repeat* + + *:g* *:global* *E147* *E148* +:[range]g[lobal]/{pattern}/[cmd] + [range]の範囲で{pattern}にマッチする行に対して、Exコマ + ンド[cmd](省略した場合":p")を実行する。 + +:[range]g[lobal]!/{pattern}/[cmd] + [range]の範囲で{pattern}にマッチしない行に対して、Exコ + マンド[cmd](省略した場合":p")を実行する。 + + *:v* *:vglobal* +:[range]v[global]/{pattern}/[cmd] + Same as :g!. + +globalコマンドの動作はまず第1に[range]の行をスキャンしマッチした行すべてに印を +つける(複数行にかかるパターンではマッチの最初の行だけが重要である)。 +次のスキャンでマークされたすべての行の行番号が指定(前置)されて[cmd]が実行され +る。行が変更されたり削除された場合そのマークは消滅する。 +省略した場合の[range]はバッファ全体(1,$)である。コマンドを中断するには"CTRL-C" +を使用する。ある行についてエラーメッセージが与えられると、そのラインに対するコ +マンドは中断されglobalコマンドはマッチした次の行の処理を続ける。 + +非Exコマンドを繰り返すには":normal"コマンドを使用すれば良い: > + :g/pat/normal {commands} +{commands}が完全なコマンドとして終了することを確認すること。そうでないとVimは +全部のマッチに1つ1つについて、コマンドの残りを期待して貴方の入力を待ち続けるだ +ろう。画面は更新されないので、いま何をしているのかわからないだろう。|:normal| +を参照。 + +undo/redoコマンドはglobalコマンドを一度にundo/redoする。以前の文脈マークだけが +一度設定される("''"でグローバルコマンド実行前にカーソルがあった場所に戻ること +が出来る)。 + +globalコマンドは最後に使用した検索パターンと、最後に使用した置換パターンの両方 +を設定する(これはvi互換)。これにより全体に対して文字列置換を行なうのが簡単にな +る: + :g/pat/s//PAT/g +これは総ての"pat"を"PAT"に置き換える。同じことがこれでも可能: + :%s/pat/PAT/g +こっちのほうが2文字短い! + +============================================================================== +3. 複雑な繰り返し *complex-repeat* + + *q* *recording* +q{0-9a-zA-Z"} タイプした文字をレジスタ{0-9a-zA-Z"}にレコーディングす + る(大文字は追加する)。レジスタを実行中は'q'コマンドは + 無効になり、マッピングの中でも無効になる。{Vi: レコー + ディングはない} + +q レコーディングを終了する。(実装のメモ: レコーディング + を終了する'q'は、それがマッピングの結果であってもレジ + スタに記録されない) {Vi: レコーディングはない} + + *@* +@{0-9a-z".=*} レジスタ{0-9a-z".=*}の内容を[count]回実行する。レジス + タ'%'(現在のファイルの名前)と'#' (裏ファイルの名前)は + 使用できないことに留意。"@="を使用するとプロンプトが表 + 示されコマンドの評価式の入力モードになる。入力すると評 + 価の結果が実行される。|@:|も参照。{Vi: 名前付きレジス + タのみ} + + *@@* +@@ 直前の@{0-9a-z":*}を[count]回繰り返す。 + +:[addr]*{0-9a-z".=} *:@* *:star* +:[addr]@{0-9a-z".=*} レジスタ{0-9a-z".=*}の内容をExコマンドとして実行する。 + まず最初にカーソルを[addr]行に設定する(省略した場合現 + 在の行)。レジスタの最終行に<CR>が含まれない場合、 + 'cpoptions'に'e'フラグが含まれていれば自動的に追加され + る。 + ":*"コマンドは'cpoptions'に'*'フラグが含まれていた場合 + にだけ認識されることに留意。これは'nocompatible'が使用 + されている時にはデフォルトにはならない。 + ":@="には最後に評価された式が使用される。式の評価結果 + がExコマンドとして実行される。 + これらのコマンド内ではマッピングは行なわれない。 + {Vi: 幾つかのバージョンだけ} 将来: 指定された範囲の + 各々の行にたいしてレジスタの内容が実行されるだろう。 + + *:@:* +:[addr]@: 最後のコマンドラインを繰り返す。まずカーソルを[addr]行 + に設定する(省略した場合現在の行)。 {Vi にはない} + + *:@@* +:[addr]@@ 最後の:@{0-9a-z"}を繰り返す。まず最初にカーソルを + [addr]行に設定する(省略した場合現在の行)。 {Vi: 幾つか + のバージョンだけ} + +============================================================================== +4. Vimスクリプトを使う *using-scripts* + +Vimスクリプトの書き方はユーザーマニュアルの41章|usr_41.txt|を参照してくださ +い。 + + *:so* *:source* *load-vim-script* +:so[urce] {file} Exコマンドを{file}から読込む。これは":"で始まるコマン + ドを列挙したファイルです。 + (訳注:実際に":"を書く必要はない) + +:so[urce]! {file} Vimコマンドを{file}から読込む。ノーマルモードでファイ + ルの内容をあなたがタイプしたのと同じように実行されま + す。 + |:global|, |:argdo|, |:windo|, |:bufdo|で使ったとき、 + ループ中や他のコマンドが続けられたときは、コマンドの実 + 行中は表示は更新されません。 + {Vi にはない} + + *:ru* *:runtime* +:ru[ntime][!] {file} .. + 'runtimepath'で示された各ディレクトリの{file}からEx + コマンドを読み込みます。ファイルがなくてもエラーには + なりません。例: > + :runtime syntax/c.vim + +< {file}には空白で区切って複数のファイルを指定できます。 + 指定された{file}は'runtimepath'の最初のディレクト + リ、次に二番目のディレクトリ、と検索されます。{file} + に空白を含めるにはバックスラッシュを使います(しかし + ファイル名に空白を含めるのは望ましくありません。トラ + ブルのもとです)。 + + [!]を付けると見つかった全てのファイルを読み込みま + す。付けなければ最初に見つかったファイルだけを読み込 + みます。 + + {file}がワイルドカードを含んでいるとそれは展開されま + す。例: > + :runtime! plugin/*.vim +< これはVimが起動時にプラグインファイルを読み込むのに + 使っているものです。次のは似ていますが: > + :runtime plugin/*.vim +< これは最初に見つかったファイルだけを読み込みます。 + + 'verbose'が1以上ならファイルが見つからないときにメッ + セージが表示されます。 + 'verbose'が2以上なら見つかった全てのファイルについて + メッセージが表示されます。 + {Vi にはない} + +:scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167* + スクリプトで使われている文字コードを宣言します。 + それ以降の行は必要なら[encoding]から'encoding'オプ + ションの文字コードに変換されます。例: > + scriptencoding iso-8859-5 + scriptencoding cp932 +< + [encoding]が空のときは変換はされません。これは文字 + コードの変換を限定するために使います: > + scriptencoding euc-jp + ... 変換される ... + scriptencoding + ... 変換されない ... + +< 変換がシステムによって提供されない場合、エラーメッ + セージは表示されず変換もされません。 + + "ucs-2"や"ucs-4"を使わないでください。スクリプトをそ + の文字コードで書くことはできません(NULバイトが含まれ + てしまうため)。 + スクリプトの最初にutf-8のBOM(Byte Order Mark : バイ + トオーダーマーク)があるとVimはそれを認識します。 + ":scriptencoding utf-8"と書く必要はありません。 + + Vimが|+multi_byte|付きでコンパイルされていない場合、 + このコマンドは無視されます。 + {Vi にはない} + + *:scrip* *:scriptnames* +:scrip[tnames] 読み込まれているスクリプトを読み込まれた順番どおりに + 全て表示します。数字はスクリプトのID(識別子)|<SID>| + に使われています。 + {Vi にはない} {|+eval|付きでコンパイルしないと使えな + い} + + *:fini* *:finish* *E168* +:fini[sh] スクリプトの読み込みを停止します。スクリプトファイル + でのみ使えます。これはファイルの残りを読み込ませない + ための手軽な方法です。|:try|を使った後で|:finally|を + 見つける前に使われると、まず":finally"と|:endtry|の + 間のコマンドが実行されます。この手続きは入れ子になっ + ている全ての":try"に対して適用されます。入れ子の一番 + 外側の":endtry"に達するとスクリプトを停止します。 + {Vi にはない} + +総てのコマンドとコマンドシーケンスは、名前付きレジスタに格納することで繰り返し +実行することができる。レジスタにコマンドを格納する方法は2つある: +- 記録コマンド"q"を使用する。実際にコマンドをタイプし、実行しながらそれをレジ + スタに格納する。今、何が起こっているかを確認できるので簡単である。間違いをし + たならば、レジスタの内容をいったんファイルへ書き出("p"ut)して、コマンドシー + ケンスを編集して、それからそれを削除して再びレジスタに格納することができる。 + レジスタに追加することで継続してレコーディングすることができる(大文字を使用 + する)。 +- コマンドシーケンスを削除かヤンクしてレジスタに入れる。 + +良く使うコマンドは':map'コマンドでファンクションキーに割当てることができる: + +別の方法としてコマンドをファイルに記述しておき、それを':source!'コマンドで読込 +んで実行するという方法もある。長いコマンドシーケンスにとっては便利である。ファ +ンクションキーに複雑なコマンドを割当てるために':map'コマンドと組み合わせること +ができる。 + +':source'コマンドはファイルから一行ずつExコマンドを読込む。キーボード入力が必 +要になった場合にはタイプする必要が生じる。':source!'コマンドはスクリプトファイ +ルから一字一句読込む。各々のキャラクタはユーザがタイプしたものとして解釈され +る。 + +例: ":!ls"コマンドを実行したとすると|hit-enter|プロンプトが表示される。"!ls" +を含むファイルを':source'したならば、自分で<Enter>をタイプする必要がある +だろう。しかし':!ls'を含んだファイルを':source!'したならば、<CR>が見つかるまで +そのファイルから続く文字が読込まれる。":!ls"がファイルの最終行でない限り、<CR> +を自分でタイプする必要はないだろう + +スクリプトファイルの中で':source[!]'コマンドを使うことも可能なので、階層関係の +あるスクリプトファイルを作ることもできる。':source'コマンドは同時に開くことの +できるファイル数(だいたい15)と同じだけネスト(入れ子に)することができる。 +':source!'コマンドは15段までネストすることができる。 + +読込まれるファイルの中ではファイル名が必要なところに、"<sfile>"という文字列( +文字 通りであってスペシャルキーではない)を使うことができる。この文字列は読込ま +れた ファイルのファイル名に置き換えられる。例えば、".vimrc"ファイルと同じ場所 +に"other.vimrc"というファイルがあれば、".vimrc"から次のコマンドでそれを読込む +ことができる: > + :source <sfile>:h/other.vimrc + +スクリプトファイル内では端末依存のキーコードは端末非依存の2文字のコードで表現 +される。これは異なる種類の端末でも同じ方法で依存キーコードを使用できることを意 +味する。最初のキーコードの文字は0x80つまり128で、画面では"~@"と表される。2つ目 +のキャラクタは|key-notation|の表にて見ることができる。これらのコードはどれも +CTRL-Vに続けて3つの10進コードを叩くことで入力できる。これはtermcapコード<t_xx> +に対しては使用できない。これらはマッピングの中だけで使うことができる。 + + *:source_crnl* *W15* +MS-DOS, Win32 and OS/2: ":source"で読込まれるファイルは通常、行末に<CR><NL>を +持っている。これらは常に働く。もしも行末に<NL>を持つファイルを使っているならば +(例えばUNIXで作られたファイル)、'fileformats'が空でかつ先頭行が<CR>で終わって +なければ正しく認識される。しかしこれは先頭行が":map <F1> :help^M"(^Mは<CR>)み +たいな内容だった場合には失敗する。ファイルの先頭行が<CR>で終わっていてその1行 +限りの時、先頭行から<CR>が失われてしまうのでエラーメッセージが出るだろう。 + +Macintosh: ":source"で読み込まれるファイルは通常、行末に<CR>を持っている。これ +らは常に機能する。もしも行末に<NL>を持つファイルを使っているならば(例えばUNIX +で作られたファイル)、'fileformats'が空でかつ先頭行が<CR>で終わってなければ正し +く認識される。先頭行に<CR>を持ち<NL>で改行しているファイルを使用しないように気 +を付けてください。 + +その他のシステムでは、Vimは取込まれた(":source"ed)ファイルの行末は<NL>であるこ +とを期待する。これは常に働く。もしも行末が<CR><NL>であるファイル(例えばMS-DOS +で作られたファイル)を使っているならば、総ての行が末尾に<CR>を持っていることに +なる。これは幾つかのコマンドにとって問題となるだろう(例、マッピング)。自動的に +行末記号を検出する機構はない。なぜなら<CR>で終了するマッピングの定義をファイル +の先頭に書くことは一般的で、自動検出用の仕組みを作るのが難しいからである。 + + *line-continuation* +読込まれた(":source"d")Exコマンドスクリプトのファイル内の長い行は、行継続記号 +"\"(backslash)を次行の先頭に挿入することで分割できる。バックスラッシュの前に空 +白を挿入することも可能で、これらは無視される。 + +例: 次の記述は > + :set comments=sr:/*,mb:*,el:*/, + \://, + \b:#, + \:%, + \n:>, + \fb:- + +次の1行と同じ意味として解釈される: > + :set comments=sr:/*,mb:*,el:*/,://,b:#,:%,n:>,fb:- + +バックスラッシュの前に先行する空白文字は全部無視される。しかしながらバックス +ラッシュのある行の1つ前の行末には、自由に空白文字を挿入することはできない; 付 +加的な空白文字が許されるかどうかは、コマンドが分割される位置に依存する。 + +":append"と":insert"コマンドには1つ問題がある: > + :1append + \asdf + . +バックスラッシュは行継続シンボルに見えるが、コマンドの結果はこのようになる: > + :1appendasdf + . +これを避けるには、'cpoptions'に'C'フラグを追加することだ: > + :set cpo+=C + :function Foo() + :1append + \asdf + :. + :set cpo-=C + +Note 関数の中でその手のコマンドを実行するには、関数定義の際に'C'フラグを追加す +る必要があり、それが実行される際にではない。 + :set cpo+=C + :function Foo() + :1append + \asdf + . + :endfunction + :set cpo-=C + +解説: + 多くのプログラムは行継続を、継続する行の末尾にバックスラッシュを置くこ + とで表現する。その方法をVimで採用してしまうと、Viとの互換性に重大な欠 + 陥ができてしまう。たとえばこのようなViのマッピングを考えるとわかりやす + い: > + :map xx asdf\ +< 従って一般的ではないが行頭のバックスラッシュを採用している。 + +============================================================================== +5. スクリプトのデバッグ *debug-scripts* + +スクリプトの動作を知るためのコードを追加することができるのは当り前として、 +Vimはデバッグモードを提供しています。これはスクリプトファイルやユーザーファン +クションをステップ実行することやブレークポイントを仕掛けることを可能にします。 + +NOTE: デバッグモードは未完成です。デバッグはVimの動作に副作用をあたえます。全 +てをデバッグするのには使えません。例えば画面がデバッグメッセージで散乱するとき +など。 +{Vi にはデバッグモードはない} + +デバッグモードの代わりに'verbose'オプションが使えます。大きな値を設定するとV +imの動作についてより詳細なメッセージを得られます。 + + +デバッグモードを開始する *debug-mode* + +デバッグモードを開始するにはこれらの方法のうちどれかを使います: +1. Vimを|-D|引数付きで起動する: > + vim -D file.txt +< 最初にvimrcを読み込むところからデバッグを開始します。これはVimの起動時に何 + が起こっているのかを調査するのに便利です。副作用としてVimは初期化が完了する + 前に安全のためターミナルモードを切替えます。 + (WindowsやMacintoshの)GUI専用バージョンではGUIウインドウを開くとすぐにデバ + ッグが開始します。これを早めるにはvimrcファイルに":gui"と書いてください。 + *:debug* +2. ":debug"を前に付けてコマンドを実行します。そのコマンドを実行する間だけデバ + ッグできます。特定のスクリプトファイルやユーザー関数をデバッグするのに便利 + です。オートコマンドから呼び出されるスクリプトや関数にも便利です。 + 例: > + :debug edit test.txt.gz + +3. ブレークポイントをソースファイルやユーザーファンクションに設定します。コ + マンドラインから次のようにできます: > + vim -c "breakadd file */explorer.vim" +< これはVimを起動して"explorer.vim"の最初の行を読み込むところで停止します。 + デバッグモード中でもブレークポイントを設定できます。 + +デバッグモード中に実行されるコマンドはそれが実行される前に表示されます。コメン +トや空の行、実行されない行はとばされます。行が"|"を使って二つのコマンドを含ん +でいた場合には分けて表示されます。 + + +デバッグモード +-------------- + +デバッグモードに入ると、通常のExコマンドが使えます。例えば、変数の値を見るに +は: > + echo idx +ユーザーファンクション内では、これはローカル変数の"idx"を表示します。"g:"を頭 +に付けるとグローバル変数の値を表示します: > + echo g:idx +全てのコマンドは実行中の関数やスクリプトの文脈として実行されます。オプションを +設定することもできます。例えば何が起こっているのかを表示するために'verbose'を +設定することができます。興味のある部分を実行する前に次のようにするといいでしょ +う: > + :set verbose=20 + +スクリーンの更新を必要とするコマンドは避けるべきです。なぜならデバッグモードを +抜けるまでその作用に気付き難いからです。例えば: > + :help +これはとても不便です。 + +デバッグモードのためのコマンドラインヒストリが別に用意されています。 + +関数の行番号はその関数の始まりから数えます。見ている行の番号を数えるのに苦労す +る場合はその関数の書かれたファイルを別のVimで開き、その関数の始まりを探しだし +、"99j"を実行してください。"99"は実際の行番号に合わせて変えてください。 + +さらに、以下のコマンドが使えます: + *>cont* + cont 次のブレークポイントまで実行します。 + *>quit* + quit 異常停止します。これはCTRL-Cを使うことに似ていますが、 + 全てを停止するわけではありません。次のブレークポイント + で停止します。 + *>next* + next コマンドを実行しそれが終わるとデバッグモードに戻りま + す。ユーザー関数やソースファイルの呼び出し時には呼び + 出し元の次の行に進みます。 + *>step* + step コマンドを実行しそれが終わるとデバッグモードに戻りま + す。ユーザー関数やソースファイルの呼び出し時には呼び + 出し先の行に進みます。 + *>interrupt* + interrupt CTRL-Cを使うことに似ていますが、次のコマンドを実行する + ためにデバッグモードに戻る場所が">quit"と違います。例 + 外割り込みについて|:finally|や|:catch|をテストするのに + 便利です。 + *>finish* + finish 実行中のスクリプトやユーザー関数を終了し呼び出し元で + デバッグモードに戻ります。 + +デバッグモードのコマンドについて: +- 補間はできません。通常のExコマンドのみ補間できます。 +- 次の一文字に省略すことができます: "c", "n", "s" そして "f"。 +- <CR>を押すと前回のものを繰り返します。関係ないコマンドを使うとリセットされま + す(どうすべきかがわかりにくいため)。 +- 同じ名前のExコマンドを使うにはコロンを付けてください: + ":cont", ":next", ":finish" (省略時も) + + +ブレークポイントの定義 +---------------------- + *:breaka* *:breakadd* +:breaka[dd] func [lnum] {name} + 関数にブレークポイントを設定します。例: > + :breakadd func Explore +< 関数名が妥当かどうか検査しませので、関数定義の前にブレークポイ + ントを定義できます。 + +:breaka[dd] file [lnum] {name} + ソースファイルにブレークポイントを設定します。例: > + :breakadd file 43 .vimrc + +[lnum]はブレークポイントにする行番号です。Vimはその行かそれ以降で停止します。 +省略時すると1行目になります。 + +{name} はファイル名や関数名のパターンです。パターンはオートコマンドで使われる +ものと同じです。完全に一致しなければなりません(パターンが"^"で始まって"$"で終 +わるように)。"*"は全ての文字列に一致します。'ignorecase'は使われませんが、大文 +字と小文字を区別しないために"\c"を使うことができます|/\c|。関数名には()を付け +ないでください! + +ソースファイル名のパターン検査はファイルのフルネームに対して行われます。例: > + breakadd file explorer +パスが間違っているので一致しません。 > + breakadd file *explorer.vim +".../plugin/explorer.vim"と".../plugin/iexplorer.vim"に一致します。 > + breakadd file */explorer.vim +".../plugin/explorer.vim"だけに一致します。 + +関数名のパターン検査は";function"で表示される名前に対して行われます。ローカ +ル関数には"<SNR>99_"といったものが前に付くということです。 + + +ブレークポイントの削除 +---------------------- + *:breakd* *:breakdel* *E161* +:breakd[el] {nr} + ブレークポイント{nr}を削除します。|:breaklist|を使って番号を + 確認してください。 + +:breakd[el] func [lnum] {name} + 関数内のブレークポイントを削除します。 + +:breakd[el] file [lnum] {name} + ソースファイル内のブレークポイントを削除します。 + +[lnum]が省略されると関数、またはファイルの最初のブレークポイントが削除されま +す。 +{name}は":breakadd"で使った名前と完全に同じでなければなりません。"eplorer"と +"*explorer.vim"、"*explorer*"は違います。 + + +ブレークポイントを列挙する +-------------------------- + *:breakl* *:breaklist* +:breakl[ist] + 全てのブレークポイントを列挙します。 + + +その他 +------ + + *:debugg* *:debuggreedy* +:debugg[reedy] + デバッグモードのコマンドをユーザーから直接得るのではなく標準入 + 力から読み込みます。スクリプトのテストのときに便利です。 + 例: > + echo 'q^Mq' | vim -e -s -c debuggreedy -c 'breakadd file script.vim' -S script.vim + +:0debugg[reedy] + ":debuggreedy"を取り消します。それ以降のデバッグモードコマンド + を使わず、ユーザーから直接デバッグモードコマンドを受け取ります + 。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/starting.jax b/ja/starting.jax new file mode 100644 index 000000000..d285f2e8f --- /dev/null +++ b/ja/starting.jax @@ -0,0 +1,1160 @@ +COMMENT: 起動方法、起動引数、起動設定ファイル +STATUS: finished 5.7 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*starting.txt* For Vim version 5.7. Last change: 2000 Feb 14 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +Vimる *starting* + +1. Vimの起動引数 |vim-arguments| +2. Vim on the Amiga |starting-amiga| +3. xargsからVimを起動 |xargs| +4. 初期化 |initialization| +5. サスペンド |suspend| +6. The vimrcファイル |vimrc-intro| +7. The viminfoファイル |viminfo-file| + +============================================================================== +1. Vimの起動引数 *vim-arguments* + +大抵、Vimは一つのファイルを編集するために次のコマンドのように起動される。 + + vim filename *-vim* + +一般的にはVimはこのように起動することができる: + + vim [option | filename] .. + +オプション引数とファイル引数は混在でき、幾つでも与える事ができる。しかし引数を +取るオプションには注意が必要。 + +さまざまなViのバージョンとの互換性に付いては|cmdline-arguments|を参照。 + +正確には、どうやって編集をスタートするかには次の5つの方法のどれか1つが使われる +ことになる: + + *-file* *---* +filename 一つかそれ以上のファイル名。最初の一つが最初の編集ファイルとし + てバッファに読み込まれる。カーソルはバッファの最初の行に置かれ + る。 + '-'で始まるファイル名をオプションと区別するために、引数に"--" + を先行させることができる。例: + Vim -- -filename + "--"の後の全ての引数はファイル名として解釈されるので、その他の + オプションや引数"+command"は使用することができない。 + + *--* +- この引数には、Exモードを使用するかによって、2つの意味がある。 + + ノーマルモードで始める場合: +> vim - or ex -v - + 新しいバッファに、標準入力を読み込んで編集を始める。このコマン + ドを使用するとまず標準入力を読み込み、それから標準エラー出力を + 読み込む。例: +> find . -name "*.c" -print | vim - + バッファにはセーブを必要とするテキストが含まれるので、自動的に + 「変更」のマークがつけられる。ただし書き込み禁止モードでバッ + ファが変更されていない場合は除く。例: +> ls | view - + + Exモードで始める: +> ex - or vim -e - + サイレントモードで編集を開始するには|-s-ex|を参照。 + + *-t* *-tag* +-t {tag} タグを開く。"tag"がtagsファイルから検索され、関連づけられた + ファイルが現在のファイルとされ、関連づけられたコマンドが実行さ + れる。大抵これはCプログラムを編集するときに使用され、"tag"は関 + 数名である事が多い。それにより、その関数を含むファイルが自動的 + に開かれ、カーソルがその関数の定義位置に設定される(|tags|を参 + 照)。 + + *-q* *-qf* +-q [errorfile] クイックフィックスモードで起動。[errorfile]という名前のファイ + ルが読み込まれ最初のエラーが表示される。|quickfix|を参照。 + [errorfile]が与えられない場合、オプション'errorfile'がファイル + 名として使用される。省略値に関しては'errorfile'を参照。 + {not in Vi} + +(nothing) 上記の4つのうち、どれも指定せずにVimを起動すると、新しいバッ + ファが用意される。そのバッファは空で、ファイルネームを持たな + い。 + + +起動時のモードはプログラム名を"vim"とは別の名前にすることで指定でき、それは次 +のようにオプションを与えたのと同じである: +ex vim -e Exモードで起動(|Ex-mode|を参照)。 *ex* +view vim -R 読み込み専用モードで起動(|-R|を参照)。 *view* +gvim vim -g GUIで起動(|gui|を参照)。 *gvim* +gex vim -eg GUIのEXモードで起動。 *gex* +gview vim -Rg GUIの読み込み専用モードで起動。 *gview* +rvim vim -Z "vim"の制限モードで起動(|-Z|を参照)。 *rvim* +rview vim -RZ "view"の制限モード。 *rview* +rgvim vim -gZ "gvim"の制限モード。 *rgvim* +rgview vim -RgZ "gview"の制限モード。 *rgview* + +これらの別名の後ろに付けられる文字は無視される。たとえばGUIで起動するのに +"gvim-5"という名前を付けることができる。もちろんその名前で実行可能なファイルが +なければならない。 + +UNIXでは通常、Vimという名前の実行可能ファイルが一つあり、それにに対して違う名 +前のリンクが用意される。使用しているシステムがリンクをサポートせず、実行ファイ +ルのコピーを幾つも作りたくないのならば、リンクの代わりにエイリアスを使うことも +できる。例: +> alias view vim -R +> alias gvim vim -g + + *startup-options* +オプション引数はどんな順番で与えても良い。一文字のオプションは一つのダッシュ +(-)の後に組み合わせる。引数"--"の後にはオプション引数を置くことはできない。 + +--help *-h* *--help* +-h 使用法(ヘルプ)を表示して終了する。{Viにはない機能} + + *--version* +--version バージョン情報を表示して終了する。出力は|:version|コマンドと一 + 緒。{Viにはない機能} + + *-+* ++[num] 最初に編集されるファイルの"num"行目にカーソルを置いて開く。 + "num"がなかった場合には、カーソルは最終行に置かれる。 + + *-+/* ++/{pat} 最初に編集されるファイルの、"pat"を含む最初の行にカーソルを置 + いて起動する(指定可能な検索パターンについては|pattern|を参 + 照)。 + ++{command} *-+c* *-c* +-c {command} 最初のファイルが読み込まれた後(加えてそのファイルに適応される + autocommandとmodelineが処理された後)に"command"が実行される。 + "command"はExコマンドとして解釈される。"command"にスペースを含 + んでいる場合には、ダブルクォートで挟まれている必要がある(これ + は使われているシェルに依存する)。例: +> vim "+set si" main.c +> vim -c "set ff=dos" -c wq mine.mak + + Note: Vimコマンドの引数として"+"か"-c"をあわせ、最大10個まで使 + うことができる。これらの引数は与えられた順番で実行される。{Vi + は一つのコマンドしか許さない} + + *-r* +-r リカバリモード。ファイル名の引数なしで実行した場合には、存在す + るスワップファイルのリストが表示される。ファイルを指定すると、 + クラッシュしたセッションを復活させるために、スワップファイルが + 読み込まれる。|crash-recovery|を参照。 + + *-L* +-L -rと同じ。{幾つかのバージョンのViだけにある"復活可能な編集セッ + ションのリスト"の意味} + + *-R* +-R 読み込み専用モード。オプション'readonly'が、編集される全ての + ファイルに設定される。これにより、まだバッファを編集することは + できるが、偶然にファイルを上書きしてしまうようなことは防がれ + る。もしも、読み込み専用モードにいることを忘れてバッファへ変更 + を行ったとしても、":w!"のようにExコマンドに「ビックリマーク」 + を付けることで上書きすることが可能。'readonly'オプションは + ":set noro"によりリセットすることが可能(オプションの章|option| + を参照)。その後の編集は読み込みモードではなくなる。実行ファイ + ルを"view"として起動した場合は、この-R引数と同じ動作になる。オ + プション'updatecount'は10000に設定され、これはスワップファイル + がそう頻繁には自動更新されなくなるという意味になる。 + + *-m* +-m 変更が許されない。オプション'write'がリセットされ、ファイルを + 保存することができなくなる。オプション'write'をセットすれば、 + 再び保存することが可能になる。 + + *-Z* *restricted-mode* +-Z 制限モード。外部シェルを実行するあらゆるコマンドの使用を不許可 + にする。これにはサスペンドであるCTRL-Zや、":sh"、それにフィル + タリングその他も含まれる。 + + *-g* +-g VimをGUIモードで起動する。|gui|を参照。 + + *-v* +-v ExをViモードで起動する。実行ファイルが"ex"や"gvim"である時にだ + け、違いが現れる。gvimでは可能ならば"GUI"ではないモードで起動 + する。 + + *-e* +-e VimをExモードで起動する。実行ファイルが"ex"以外の名前の時に意 + 味がある。 + + *-s-ex* +-s サイレント、もしくはバッチモード。Vimが"ex"で起動されるか、こ + のオプションよりも先に"-e"が付いていた場合にだけ働く。そうでな + い場合には|-s|を参照。端末の替わりにファイルからExコマンドを実 + 行する場合に使用される。ほとんどのプロンプトとメッセージは抑制 + される。しかし警告とエラー以外のメッセージ、そして":print"や + ":list"のようなコマンドの出力結果は表示される。 + 初期化処理はスキップされる(このオプションが引数"-u"と一緒に使 + われた場合は除く)。 + + *-b* +-b バイナリモード。ファイルのI/Oが<NL>だけを行のセパレータとして + 認識するようになる。オプション'expandtab'は無効化される。オプ + ション'textwidth'は0に設定される。'modeline'はリセットされる。 + オプション'binary'がセットされる。これはvimrc/exrcのファイルが + 読み込まれた直後、引数で与えられたファイルが読み込まれるよりも + 前に行われる。|edit-binary|も参照。{Viにはない機能} + + *-l* +-l Lispモード。オプション'lisp'と'showmatch'をセットする。 + + *-F* +-F Farsiモード。'fkmap'と'rightleft'オプションをオンにする。 + (|+rightleft|と|+farsi|有効にしてコンパイルした時にだけ有効。 + そうでない場合Vimはエラーメッセージを表示して終了する)。{Viに + はない} + + *-H* +-H Hebrew(ヘブライ)モード。オプション'hkmap'と'rightleft'がセット + される。(|+rightleft|を有効にしてコンパイルした時にだけ使用 + 可。そうでない場合Vimはエラーメッセージを表示して終了する)。 + {Viにはない機能} + + *-V* *verbose* +-V[n] Verbose(多弁な/詳細)。オプション'verbose'を[n]に設定する(nを省 + 略した場合:10)。":source"が実行される度、viminfoの読み書きを行 + う度に情報が表示される。Vimの起動時と終了時に何が行われている + か、調べる時に使うことができる。{Viにはない機能} + + + *-C* +-C コンパチブルモード。オプション'compatible'をセットする。.vimrc + ファイルがある場合にもViとのコンパチブルを得る場合に使用でき + る。|compatible-default|も参照。{Viにはない機能} + + *-N* +-N 非コンパチブルモード。オプション'compatible'をリセットする。 + ファイル.vimrcがないときに、'nocomatible'にするためにこれを使 + うことができる。|compatible-default|も参照。{Viにはない機能} + + *-n* +-n スワップファイルを使用しない。クラッシュ時の編集ファイルを復旧 + することはできなくなる。非常に低速なメディア(たとえばフロッ + ピーディスク)のファイルを読んだり編集したい時に使える。 + ":set updatecount=0"とすることでスワップファイルを設定しない効 + 果がある。オプション'updatecount'に0以上の値を設定することで、 + 動作をオンにすることができる。例、":set uc=100" + ファイルvimrcの実行解釈の直後で、GUIが初期化される前に + 'updatecount'が0に設定される。よってファイルvimrcの中で設定さ + れるupdatecountは上書きされることになるが、gvimrcでの設定は上 + 書きされない。|startup|を参照。{Viにはない機能} + ディスクへのアクセスを減らしたいのならば(ノートPCを使用してい + る場合など)、"-n"を使用する替わりに、'updatetime'を設定し、 + 'updatecount'に非常に大きい値を設定し、編集中のファイルを保存 + する時に":preserve"とタイプすると良い。この方法だとクラッシュ + からの復旧の可能性を保てる。 + + *-o* +-o[N] N個のウィンドウを開く。[N]が与えられない場合には、引数で指定さ + れた全てのファイルに対して1個のウィンドウが開かれる。画面に十 + 分な広さがない場合には、始めのほうの数個のファイルだけがウィン + ドウを伴って表示される。逆にファイルの数よりもウィンドウの数が + 多く指定された場合、多い分のウィンドウは空ファイルの編集用とし + て開かれる。{Viにはない機能} + + *-T* +-T {terminal} 端末の種類を"terminal"に設定する。これはVimがユーザの端末へ送 + るコードに影響を与える。Vimはユーザが使用している端末の種類を + 自分で判断することができるので、通常これは必要がない + (|terminal-info|を参照)。{Vimにはない機能} + + *-d* +-d {device} Amiga専用機能: "device"が編集用に開かれる。普通、ウィンドウの + 位置とサイズを設定するために"-d con:x/y/width/height"の形式で + 指定する。例、"-d con:30/10/600/150"。しかしその他のAUX:のよう + なデバイスを編集を開始することにも使用できる。{Viにはない機能} + + *-f* +-f Amiga専用機能: Vimを新しいウィンドウを開いて起動しない。編集作 + 業が終わるのを待つプログラム(メールソフトやニュースリーダ)に + よってVimが起動される時に、このオプションは使用される。 + |amiga-window|を参照。{Viにはない機能} + + GUI: Vimを起動したプログラムと切断しない。'f'は"foreground"を + 意味する。省略されると、GUIバージョンは新しいプロセスへforkし + て、現在のプロセスは終了してしまう。gvimの編集セッションが終わ + るのを待つプログラム(メールソフトやニュースリーダなど)には、 + "-f"を使うべきだろう。gvimがforkしないようにするには、自分の. + gvimrcの中で'guioptions'に'f'を加えれば良い。 + Note: "-gf"でGUIをフォアグラウンドで実行開始できるが、"-fg"だ + と前景色の設定になってしまう。{Viにはない機能} |gui-fork|参 + 照。 + + *-u* +-u {vimrc} 初期化のためにファイル"vimrc"が読込まれる。その他の初期化はス + キップされる;|initialization|を参照。これによりVimを特殊なマッ + ピングと設定による、特殊なモードで起動することができる。これを + 簡単に使用するにはシェルのエイリアスが使えるだろう。例: +> alias vimc vim -u ~/.c_vimrc !* + autocommandsを使うことも考慮すべき;|autocommand|を参照。 + {vimrc}に"NONE"(全て大文字)が指定された時には、ファイルと環境 + 変数による全ての初期化、.gvimrcによるGUIの初期化も含め、スキッ + プされる。 + "-u"の引数を使用することで、暗にオプション'compatible'が設定さ + れる。これには予期しない副作用がある。|'compatible'|を参照。 + {Viにはない機能} + + *-U* +-U {gvimrc} GUIがスタートする時にファイル"gvimrc"が読込まれる。その他のGUI + 初期化はスキップされる。{gvimrc}にNONEが指定された場合、初期化 + ファイルは何も読込まれない。 + 例外: システムのメニューファイルは常に読込まれる。 + + *-i* +-i {viminfo} デフォルトのviminfoの替わりにファイル"viminfo"が使用される。名 + 前として"NONE"(全て大文字)が使用された場合、'viminfo'が指定さ + れたり、":rv"や":wv"が使われても、viminfoは読み書きともに使用 + されない。|viminfo-file|参照。{Viにはない機能} + + *-x* +-x ファイルの読み書き時に暗号化を施す。暗号の鍵としてオプション + 'key'に設定された値を使用する。全ての書き込みは、テキストに対 + して鍵を使って暗号化を行ってから なされる。ファイルを読込む時 + には、Vimは暗号化ファイルかチェックし、自動的に鍵を聞いてくる + ので、引数'-x'は必要でない。|encryption| + + *-s* +-s {scriptin} スクリプトファイル"scriptin"が読込まれる。ファイルの中のキャラ + クタは、全てユーザがタイプしたものとして解釈される。エディタが + 終了する前にファイルの終端に達した場合、以降のキャラクタはキー + ボードから読込まれる。Exモード動作時には働かない、|-s-ex|を参 + 照。|complex-repeat|も参照。{Viにはない機能} + + *-w* +-w {scriptout} Vimを終了するまで、ユーザがタイプした全部のキャラクタが記録さ + れ、ファイル"scriptout"に書き出される。これは"vim -s"や + ":source!"で読込まれるスクリプトファイルを 作成するのに役立 + つ。既にファイル"scriptout"が存在する場合、新しいキャラクタが + 追加される。|complex-repeat|も参照。{Viにはない機能} + + *-W* +-W {scriptout} -wに似ているが、アペンド(追加)せずに、既にあるファイルを上書き + する。{Viにはない機能} + + *-w_nr* +-w{number} なにもしない。これはViとの互換性のためにある。Viではオプション + 'window'が設定されるが、Vimでは実装されていない。 + +複数のファイル内の名前を変更するスクリプトファイルの例: + 置換コマンドと:wqコマンドを含んだファイル"subs.vi"を作る: +> :%s/Jones/Smith/g +> :%s/Allen/Peter/g +> :wq + + 変更をしたいファイル全てに対してVimを実行する: + +> foreach i ( *.let ) vim -s subs.vi $i + +実行ファイルが"view"だったならば、Vimは読込み専用モードで起動する。"view"から +"vim"へハードリンクかシンボリックリンクを作成できると便利だろう。"vim -R"とす +ることでも読込み専用モードで起動できる。 + +実行ファイルが"ex"ならば、VimはExモードで起動する。これは":"コマンドだけしか使 +えないことを意味している。しかし引数"-v"が与えられれば、Vimはとにかくノーマル +モードで起動する。 + +============================================================================== +2. Vim on the Amiga *starting-amiga* + +VimをWorkbenchから起動する *workbench* +-------------------------- + +Workbench上でアイコンを2度クリックすればVimを起動することができる。すると空の +バッファで起動するだろう。 + +"Project"アイコンを使用することで、1つ以上のファイルを編集するために起動するこ +とができる。アイコンの"Default Tool"にはVimの実行ファイルの完全なパスを設定し +なければならない。".info"ファイルの名前は、テキストファイルの名前と同じでなけ +ればならない。このアイコンを2度クリックすることで、そのファイル名を カレント +ファイルの名前として、バッファに読み込み起動する シフトキーを押しながらアイコ +ンをクリックし、最後のファイルを2度クリックすることで、複数のファイルを編集す +ることができる。これら全てのアイコンの"Default Tool"は同じでなければならない。 + +Workbenchからではファイル名以外の引数は、Vimへ与えることができない。 + +Vimウィンドウ *amiga-window* +---------- + +Vimは起動されたCLIウィンドウの中で動作する。Vimが"run"や"runback"コマンド、 +ワークベンチから起動された場合には、自分自身でウィンドウを開く。 + +技術的詳細: + 新しいウィンドウを開くためにちょっとしたトリックを使う。Vimは普通のCLI + ウィンドウの中で起動されていないことを検出するとすぐに、"t:"にあるスク + リプトファイルの作成する。このスクリプトファイルは起動されたVimと同じ + コマンドに、加えて"endcli"コマンドを持っている。このスクリプトファイル + は"newcli"コマンドと一緒に実行される (これが行われる時には"c:run"と + "c:newcli"コマンドが必要)。スクリプトファイルはリブートされるか、手動 + で消すまで存在しつづける。この方法には":sh"と":!"コマンドが正しく働く + 必要である。しかしVimが-fオプション(フォアグラウンドモード)で起動され + た時には、この方法は使われない。Vimを-fオプションで起動した時には、そ + の終了を待つからである。スクリプトのトリックを使うと、Vimを呼び出した + プログラムはその終了を知ることができない。オプション-fはメールプログラ + ムなど編集のセッションが終わったことを 検出したい場合に、Vimを起動する + 方法として使用される。だからオプション-fが指定された時には、":sh"と + ":!"コマンドは使用することができない。 + +Vimは自動的にWindowのサイズを認識して変更する。Amiga DOS 1.3の元では、表示の更 +新速度を上げるために、fastfontsのプログラム"FF"の支援を受けて動作する。 + +============================================================================== +3. xargsからVimを起動 *xargs* + +xargsは標準入力からの入力を引数として、プログラムを起動するためのプログラムで +ある。典型的な使い方は: + +> find . -name "*.c" -print | xargs vim + +問題はxargsが起動するプログラムのために標準入力のプロパティを設定しないこと +で、これがVimにとって問題を引き起こす。Vimが標準入力からの入力を期待するコマン +ドだからである。タイプした文字がechoされて<Return>を押すまで効力を発揮しないと +いう症状がでる。 + +これはxargsを使う上で忌々しき問題である。これを回避するために、次のような小さ +なプログラムを使うことができる: + +> #include <unistd.h> +> #include <stdio.h> +> +> main(argc, argv) +> int argc; +> char **argv; +> { +> close(0); /* close stdin */ +> dup(2); /* duplicate stdin from stderr */ +> execvp(argv[1], argv + 1); +> perror("could not execute program"); +> } + +これを"start.c"として保存し、"start"という名前でコンパイルし、検索パスのどこか +に置く。使っているシステムによっては修正が必要だろう。使い方の例: + +> find . -name "*.c" -print | xargs start vim + +============================================================================== +4. 初期化 *initialization* *startup* + +このセクションはVimの非GUIバージョンについて書く。GUIをスタートさせた時の追加 +の初期化は|gui-fork|を参照。 + +スタート時に、Vimは環境変数とファイルを調べ、然るべく値を設定する。Vimはこの順 +序で取り掛かる。 + +1. オプション'shell'を設定する *SHELL* *COMSPEC* + 環境変数SHELLが存在するならば、オプション'shell'を設定するのに使われ + る。MS-DOSとWin32ではSHELLが設定されていない場合COMPSPECの値が使用され + る。 + +2. オプション'term'を設定する *TERM* + 環境変数TERMが存在するならば、オプション'term'を設定するのに使われる。 + +3. 環境変数とファイルのExコマンドを実行する + 環境変数の値は一つのExコマンドラインとして読まれるので、複数のコマンド + を実行したい時には'|'か"<NL>"で区切る必要がある。 + *vimrc* *exrc* + "vimrc"ファイルは初期化コマンドを含んだファイルである。vimrcファイルは + 一行ずつExコマンドとして実行される。"exrc"とほぼ等価である。それらは同 + じタイプのファイルであるが、"exrc"が常にViによって使われるのに大して、 + "vimrc"はVim特有のものである。|vimrc-intro|も参照。 + + 個人の初期化ファイルの推奨される配置場所: + Unix $HOME/.vimrc + OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc) + MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc + Amiga s:.vimrc or $VIM/.vimrc + + Vimが"-u filename"で起動された場合、デフォルトのvimrcの代わりに + "filename"が使われる。続く初期化処理のの5.までがスキップされる。 + "vim -u NONE"によりこれらの初期化を省略することができる。|-u| + + 起動引数"-s"によりVimがExモードで起動されたならば、続く4.までの初期化 + 処理がスキップされる。オプション"-u"だけが割り込まれる。 + *system-vimrc* + a. Unix, OS/2, VMS, Macintosh, RISC-OSそしてAmigaでは、システムのvimrc + ファイルが初期化のために読み込まれる。このファイルのパスは":version"コ + マンドによって確認できる。 Note このファイルは'compatible'モードであっ + ても読み込まれる。'compatible'の自動リセットはこれが終わった後に行われ + ることになっている。必要ならば":set nocp"コマンドを追加する。 + + *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* + b. 初期化のために4つの場所が検索される。最初に見つかったものが使用され、 + 残りは無視される。 + - 環境変数VIMINIT(|compatible-default|も参照) (*) + - ユーザvimrcファイル: + "$HOME/.vimrc" (for Unix and OS/2) (*) + "s:.vimrc" (for Amiga) (*) + "home:.vimrc" (for Amiga) (*) + "$VIM/.vimrc" (for OS/2 and Amiga) (*) + "$HOME/_vimrc" (for MS-DOS and Win32) (*) + "$VIM\_vimrc" (for MS-DOS and Win32) (*) + Note: Unix, OS/2そしてAmigaでは、".vimrc"がなかった場合には、 + MS-DOS互換のファイルシステムを使用することを考え、"_vimrc"も試 + みられる。MS-DOSとWin32では"_vimrc"を探したあとで、ロングファ + イルネームの仕組みを使用して".vimrc"が探される。 + Note: MS-DOSとWin32では"$HOME"がまず検査される。"_vimrc"と + ".vimrc"のどちらもない場合には、"$VIM"が調べられる。$VIMが設定 + されていない場合については|$VIM|参照。 + - 環境変数EXINIT + - ユーザのexrcファイル。vimrcと同じだが、vimrcがexrcによって置き換え + られている。But without the (*)! + + c. 'exrc'オプションがオン(初期状態ではオフ)の場合、現在のディレクトリで4 + つのファイルが検索される。最初に見つかったものだけが使用され、残りは無 + 視される。 + - The file ".vimrc" (for Unix, Amiga and OS/2) (*) + "_vimrc" (for MS-DOS and Win32) (*) + - The file "_vimrc" (for Unix, Amiga and OS/2) (*) + ".vimrc" (for MS-DOS and Win32) (*) + - The file ".exrc" (for Unix, Amiga and OS/2) + "_exrc" (for MS-DOS and Win32) + - The file "_exrc" (for Unix, Amiga and OS/2) + ".exrc" (for MS-DOS and Win32) + + (*) このファイルを使用するか環境変数を使用した場合、自動的に'compatible' + オプションがオフに設定される。|compatible-default|を参照。 + +4. ファイルタイプ設定スクリプトがロードされる。 + このスクリプトはautocommandのFileTypeイベントに使用される。|FileType| + と|'filetype'|を参照。これはVimが|+autocmd|機能を伴ってコンパイルされ + た時にだけ行われる。 + Vimが"-u filename"で起動された時には、これはスキップされる。 |-u| + このファイルの名前はシステムに依存する: + Amiga $VIMRUNTIME/filetype.vim + Mac $VIMRUNTIME:filetype.vim + MS-DOS $VIMRUNTIME\filetype.vim + RiscOS Vim:Filetype + Unix $VIMRUNTIME/filetype.vim + VMS $VIMRUNTIME/filetype.vim + +5. 'shellpipe'と'shellredir'を設定する + それ以前に設定されていなければ、'shell'オプションに従って'shellpipe'と + 'shellredir'オプションが設定される。これは自分で設定しなくても、Vimが + 適切な'shellpipe'と'shellredir'の値を考えてくれることを意味している。 + +6. "-n"コマンド引数が使用されていたら、'updatecount'を0に設定する + +7. バイナリオプションを設定する + Vimの起動時に"-b"フラグが与えられた場合、この時点でバイナリ編集用のフ + ラグが設定される。|-b|参照。 + +8. GUIの初期化を行う + "gvim"として起動された場合、GUIの初期化が行われる。|gui-init|参照。 + +9. viminfoファイルを読み込む + 'viminfo'オプションが殻でなければ、viminfoファイルが読み込まれる。デ + フォルトでは空だから、これ以前の初期化によって'viminfo'は設定しておく + 必要がある。|viminfo-file|参照。 + +10. quickfixファイルを読み込む + Vimに"-q"フラグが与えられた場合、quickfixファイルが読み込まれる。これ + に失敗するとVimは終了する。 + +11. 全てのウィンドウを開く + |-o|フラグが与えられ場合、ウィンドウが開く(しかしまだ表示されない)。 + スクリーンが切り替えられると、描画が始まる。 + "-q"フラグがVimに与えられた場合、最初のエラーにジャンプする。全ての + バッファがロードされる。 + +12. スタートアップコマンドが実行される + "-t"フラグがVimに与えられた場合、タグにジャンプする。 + |-c|と|+cmd|引数で与えられたコマンドが実行される。 + 'insertmode'オプションがセットされていると、インサートモード入る。 + |VimEnter|のautocommandが実行される。 + +初期化の使い方のヒント: + +スタンダードセットアップ: +全ての編集セッションに有効な、デフォルト設定とキーマッピングを設定するvimrc +ファイルを作成する。それを既に3bで述べた位置に置く: + ~/.vimrc (Unix and OS/2) + s:.vimrc (Amiga) + $VIM\_vimrc (MS-DOS and Win32) +Note vimrcファイルを作るとデフォルトで'compatible'オプションがオフに設定され +る。|compatible-default|参照。 + +ローカルセットアップ: +特定のディレクトリだけにおいて編集時に必要になるコマンドを vimrcファイルに書 +き、そのディレクトリに".vimrc" (MS-DOSとWin32は"_vimrc")という名前で置く。 +NOTE: Vimに、これらのファイルを見るように指定するには、'exrc'オプションをオン +にする必要がある。|trojan-horse|(トロイの木馬)も参照。 + +システムセットアップ: +これは複数人で使うUNIXシステムを管理し、全員のデフォルト設定を行いたい時に適用 +される。デフォルト設定とキーマッピングを行うコマンドをvimrcファイルに記述し、 +":version"コマンドで表示される場所に置く。 + +Vimの現在状態をファイルに保存する: +オプションの値を変えたときや、キーマッピングを作成した時には、それらを後で再利 +用するためにvimrcファイルに保存したいだろう。現在の設定状態をファイルに保存す +るためには|save-settings|を参照。 + +Viユーザの設定の問題の回避: +Viは環境変数EXINITとファイル"~/.exrc"を初期化に使用する。もし(Vimの設定が)Viに +干渉して欲しくないならば、それらを使う替わりにVIMINITとvimrcを使用する。 + +Amigaの環境変数: +Amigaには2種類の環境変数が存在する。1つはDOS 1.3(かそれ以上)のsetenvコマンド +で、これはVimによって認識される。AmigaDos 1.3のマニュアルを参照。古いManxのSet +コマンド(バージョン5.0以前)の環境変数は、認識されない。 + +MS-DOSの行区切り文字: +MS-DOS風(MS-DOS自信、Win32、そしてOS/2)では、全てのvimrcファイルは行区切文字と +して<CR> <NL>を使用していると仮定する。<NL>だけを行区切文字として持つファイル +や、":map xx yy^M"のような設定のファイルを使う場合、問題を引き起こす。末尾の^M +は無視されてしまうだろう。 + + *compatible-default* +Vimが起動すると、オプション'compatible'がオンに設定される。これは起動の初期化 +時に使用される。ユーザのvimrcファイルが見つかるか、現在のディレクトリにvimrcが +見つかるか、もしくは環境変数"VIMINIT"が設定されている場合すぐに、 +'nocompatible'が設定される。これにはその他のオプションへの設定・非設定の副作用 +がある('compatible'参照)。しかし設定・非設定されないタイプのオプションだけが変 +えられるだろう。これはVimの起動時に持っている'compatible'の値と同様の効果であ +る。Note これはシステムvimrcファイルでは起こらない。 + +しかし'compatible'の有効・無効化が.vimrc内で見つかった場合には、副作用が発生す +る:キーマッピングは見つかるたびに解釈される。これは"<CR>"のようなものを使う時 +に違いを生じる。もしもマッピングが'compatible'のある値に依存している場合、その +マッピングを与える前に有効・無効化をする。 + +上記した振る舞いは次の方法で無効にすることができる: +- コマンドライン引数に"-N"を与えた場合、vimrcファイルが存在しなくても + 'nocompatible'が使用される。 +- コマンドライン引数に"-C"が与えられた場合、vimrcが存在しても'compatible'が使 + 用される。 +- 引数"-u {vimrc}"が使用された場合、'compatible'が使われる。 +- 実行ファイルの名前が"ex"で終わっていた場合、"-C"引数が与えられたのと同様に働 + く: vimrcファイルが存在しても'compatible'が使用される。これは"ex"としてVimが + 起動された時にはVimは"ex"のように振舞うようにするためである。 + +トロイの木馬を回避する: *trojan-horse* +現在のディレクトリにある"vimrc"や"exrc"を読み込むときに、'secure'オプションを +設定することで、安全性のために幾つかのコマンドを無効にすることができる。タグ +ファイル内のコマンドを実行する際にも常にこれが行われる。そうでないと他人が作成 +した悪意を持ったコマンドを、偶然実行してしまう可能性がある。使用不可になるコマ +ンドは、シェルを起動するものと、ファイルに書き込むものと、そして":autocmd"であ +る。":map"コマンドは表示され、どのようなマッピングがなされたか確認することがで +きる。 + ローカルなvimrcファイル内で全てのコマンドを実行したい場合には、EXINIT +かVIMINIT環境変数か、グローバルな"exrc"もしくは"vimrc"ファイルで'secure'オプ +ションをリ セットする。現在のディレクトリにある"vimrc"と"exrc"では、明らかな理 +由だが、これはできない。 + UNIXシステムで、vimrcファイルが自分のものではない時にだけ、これは起こ +る。警告: vimrcかexrcを含むアーカイブを展開したときには、そのファイルはあなた +自身のものになる。そこには安全性保護などない。Vimを起動する前に現在のディレク +トリにvimrcファイルがないかチェックするか、'exrc'オプションをリセットしたほう +が良い。幾つかのUNIXシステムでは一般ユーザがファイルに"chown"を行うことを許し +ているものがある。これは別のユーザが悪意に満ちたvimrcを作成し、所有者を貴方に +することを可能にしている。注意されたし! + タグサーチコマンドを使う時には、実行されるサーチコマンド(タグファイル +の各行の最後の部分)は常に安全なモードで行われる。これは現在のディレクトリにあ +る vimrc/exrcからコマンドが実行されるのと、ちょうど同じように働く。 + + *slow-start* +Vimの起動に時間がかかる場合、幾つかの理由が考えられる: +- UnixバージョンがGUIおよび/もしくはX11オプションと供にコンパイルされた場合 + (":version"の出力で"+GUI"と"+X11"をチェック)、共有ライブラリをロードしX11 + サーバに接続する必要がある。GUIとX11を無効にしてコンパイルしたバージョンを試 + して欲しい。これにより実行ファイルが小さくもなるだろう。 +- "viminfo"を使用している場合、viminfoファイル尾w読み込むのに少し時間がかか + る。viminfoが原因ならば一時的にviminfoを無効にすることによって確認することが + できる(Vimを引数"-i NONE"を使用する。|-i|)。":set viminfo='20\"50"で、レジス + タに保存される行数を減らすことを試すのも良い。 + |viminfo-file|. + + *:intro* +ファイル名を与えずにVimを起動した場合、(Vimが何だかしらない人に向けて)紹介メッ +セージが表示される。そのメッセージはなんらかの操作によって画面が再描画されると +すぐに消される。もう一度メッセージをみるには、":intro"コマンドを使用する。起動 +時に紹介メッセージを表示しないようにするには'shortmess'に'I'フラグを追加する。 + +============================================================================== +5. サスペンド *suspend* + + *iconise* *CTRL-Z* *v_CTRL-Z* +CTRL-Z ":stop"のようにVimをサスペンドする。 + ノーマルとビジュアルモードで動作する。挿入モードとコマ + ンドラインモードでは、CTRL-Zは通常のキャラクタ文字とし + て入力・挿入される。 + + +:sus[pend][!] or *:sus* *:suspend* *:st* *:stop* +:st[op][!] Vimをサスペンドする。 + もしも'!'を付けないで'autowrite'がセットされているなら + ば、変更とファイル名を持つ全てのバッファは保存される。 + もしも'!'をつけたか、'autowrite'がセットされていないな + らば、変更のあるバッファは保存されないので、後でVimを + フォアグラウンドに戻すのを忘れてはならない。 + +GUIモードでは、サスペンドはgvimのアイコン化として実装されている。Windows 95/NT +では、gvimは最小化される。 + +多くのUNIXシステムでは、VimをCTRL-Zでサスペンドすることが可能である。これは +ノーマルモードとビジュアルモードにおいて有効である(次の章|vim-modes|を参照)。 +Vimを再びフォアグラウンドに戻せば、続きの作業を行うことができる。それ以外のシ +ステムでは、CTRL-Zは新しいシェルをスタートさせる。これはコマンド":sh"と同じで +ある。この場合、シェルを終了させればVimで続きの作業を行うことができる。 + +============================================================================== +6. The vimrcファイル *vimrc-intro* *vim-script-intro* + +vimrcファイルは全てのVimセッション で使おうとしている設定をするために使われ +る。通常ファイルは$HOME/.vimrcとなるが、別のファイルを使用することも可能であ +る。詳細は|vimrc|。Vimは起動時にそれ(もしくは複数)を読み込み、中のコマンドを解 +釈する。 + +Vimスクリプトファイルを他の目的のために使用することもできる。シンタックスハイ +ライティングに使われるファイルが一例である。Vimにはあらゆるタスクを成し遂げる +に十分なコマンドが揃っている。 + + *vimrc_example.vim* +vimrcファイルのサンプルを$VIMRUNTIME/vimrc_example.vimに見つけることができるだ +ろう。これを独自のvimrcファイルとして使い始めることができる。他人の作ったvimrc +ファイルの中に沢山の例を見出すこともできる。http://www.vim.org/user.htmlを訪れ +てみよう。 + + +EXコマンドを使う ~ + +vimrcファイルはVimのコマンドラインで打ち込むことのできる全てを含むことができ +る。タイプする時に必要な先頭のコロンは、スクリプトファイルには要求されない。 +Vimのコマンドラインでは次のようにタイプするだろう +> :set number +同じことをvimrcファイルでは、単に次のようにすれば良い +> set number + +行末の文字はシステムに依存する。Unixでは一文字<NL>を使用する。MS-DOS、 +Windows、OS/2、そしてそれに類するシステムでは<CR><LF>が使用される。これは<CR> +で終わっているマッピングを使用するときには重要である。|:source_crnl|を参照。 + +長い行は、次行の書き出しに"\" (バックスラッシュ。訳注:Windows等では円記号)を置 +いて区切り、複数行に渡らせることができる。|line-continuation|参照。 +例: +> iabbr Http Hyper Text Transfer +> \ Protocol +Note これはVimスクリプトファイルでだけ有効。 + + +空白 ~ + +空の行を書くことが許され、そしてそれは無視される。 + +先行する空白文字(ブランクとタブ)は常に無視される。引数の間の空白文字(上記例で +言えば'set'と'number'の間)は1文字のブランク文字として解釈され、区切り文字とし +ての役割を担う。行末(最後の可視文字以降)の空白文字は、状況に応じて無視されたり +されなかったりする。下記参照。 + +"="記号を必要とする次のような":set"コマンドを考えると +> set cpoptions =aABceFst +"="記号の直前の空白文字は無視される。しかし"="以後には空白文字を置くことはでき +ない! + +オプションの値として空白文字を含むためには、次の例のように"\"(バックスラッ +シュ)によってエスケープしなければならない: +> set tags=my\ nice\ file +同様の例で次のように書いたものは +> set tags=my nice file +次のように解釈されてしまうので、エラーを出す: +> set tags=my +> set nice +> set file + + +コメント ~ + +文字"(ダブルクォーテーション記号)がコメントの開始記号である。この文字を含むそ +れ以降、行末まで全ての文字はコメントとみなされ無視される。但し以下に示す例のよ +うなコメントとは解釈されない場合を除く。コメントは行のどの位置からでも開始でき +る。 + +コマンドにコメントで簡単な注釈を付ける。その例: +> abbrev dev development " shorthand +> map <F3> o#include " insert include +> execute cmd " do it +> !ls *.c " list C files +短縮形'dev'は'development " shorthand'に展開される。<F3>のマッピングは実際 +には、'o# ....'以降の'" insert include'も、全体を含んだ形になる。"execute"コマ +ンドはエラーになる。"!"コマンドは、それ以降の全てをシェルに送るので、'"'文字が +マッチしない、というエラーを引き起こす。 +":map"、":abbreviate"、":execute"そして"!"コマンドの後には、一切のコメントを置 +くことはできない(その他にも幾つか、この制限があるコマンドがある)。"map"、 +":abbreviate"そして"execute"コマンドには、次のようなトリックを使うことでコメン +トを記述することができる: +> abbrev dev development|" shorthand +> map <F3> o#include|" insert include +> execute cmd |" do it +コマンドは文字'|'によって次のコマンドと区切られる。そしてその次のコマンドとは +単なるコメントになっている。 + +Note 略語設定(abbreviation)とマッピングの例の'|'の前には、空白文字が挿入されて +いない。これらのコマンドでは、行末もしくは'|'までの全ての文字がコマンドとして +解釈される。この振る舞いの結果、行末に空白文字が含まれて、それに気がつかない場 +合がある: +> map <F4> o#include +To avoid these problems, you can set the 'list' option when editing vimrc +files. +この問題を避けるために、vimrcファイルを編集して'list'オプションを設定すること +ができる。 + + +落とし穴 ~ + +さらに大きな問題が、次の例によって発生する: +> map ,ab o#include +> unmap ,ab +,abのマッピングはちゃんと',ab'にマッピングされ、これには続く空白文字は含まれな +い。しかし"unmap"が直接行末に達していない場合、Vimはマッピングされていない、存 +在しないシーケンス、',ab 'をマッピングから解除(unmap)しようと試みる。このエ +ラーがあった場合、'unmap ,ab 'の行末の空白文字は表示されないために、見つけるの +は非常に困難である。 + +これは'unmap'コマンドの後にコメントを使った場合に生じる問題と、まったく同一で +ある: +> unmap ,ab " comment +コメントの部分は無視される。しかしながらVimは存在しない',ab 'をマッピング +から解除しようと試みる。この問題を解決するには'b'以降の文字は、空白文字そして +コメントを含めゴッソリ消すことが最善である。 + +上記のような状況を除けば、次のようにVimが定義するように、コマンドとコメントを +同一行に書くことができる。 +> set number " display line numbers + + +ノーマルモードのコマンド ~ + +ノーマルモードのコマンドを実行するには、|:normal|コマンドを使用することができ +る。特殊文字に伴う問題を回避するには、|:execute|コマンドを使用する。その引数は +1つの式である(詳しいことはもっと下に記す)。例: +> exe "normal mxGOA test.\<Esc>`x" +この例ではテキストの最末尾に"A test."という行を追加し、カーソルを現在の位置に +戻す。Note "\<ESC>"はエスケープ文字へと変換される。バックスラッシュやダブル +クォートを此処に使う時には、その前にバックスラッシュを書く必要がある: +> exe "normal \"aYgg\"aP" +This yanks the current line and puts it above the first line in the file. To +do this without changing the cursor position and the text displayed in the +window, this has to be extended a bit: +この例では、現在の行をヤンクし、ファイルの先頭に挿入している。カーソル位置と +ウィンドウに表示されるテキストを変更せずに行うためには、これを少し拡張すればよ +い: +> exe "normal ma\"aYHmbgg\"aP`bzt`a" +詳しく見ると: + ma 現在の位置にマークaを設定 + "aY 現在行をヤンクしてレジスタaに保存 + Hmb ウィンドウの最上位行に移動し、マークbを設定 + gg ファイルの先頭に移動 + "aP カーソルのある行の上にヤンクした行を挿入 + `b 表示されていた最初の行へ移動 + zt ウィンドウのテキスト位置を復帰 + `a カーソルの位置を復帰 + + +IF - ELSE - ENDIF ~ + +ある状況下においてだけコマンドを実行したいことが時々あるだろう。そんな時には +|:if|コマンドを使用することができる。例: +> if &term == "xterm" +> echo "this is an xterm" +> endif +"if"コマンドの引数は「式」である。式が真(0以外)として評価されると、そこから +"endif"までの文が実行される。式が0(偽)として評価された場合、これらのコマンドは +スキップされる。|:echo|コマンドもまた式であり、その引数を表示する。 + +式には多くの構成を使用することができる。サンプルを参考にすると: + &term 'term'オプションの値。'&'で始まる名前は、その名前のオ + プションの値である。 + == "equal"、両側の文字列または数字を比較し、等しければ真 + として評価する。 + "xterm" 文字通りの文字列 +式について詳しい情報は|expression|を参照。 + +"else"も使用することができる: +> if &tabstop != 8 +> echo "tabstop is " . &tabstop +> else +> echo "tabstop is OK" +> endif +Note 最初のechoコマンドに使われている点"."は、文字列定数と'tabstop'オプション +の値を連結する。その際に連結できるように、数値は文字列に自動的に変換される。 + + +WHILE - ENDWHILE ~ + +コマンドのシーケンスを繰り返すために|:while|コマンドを使うことができる: +> let i = 1 +> while i < 10 +> echo i +> let i = i + 1 +> endwhile +これは内部変数"i"を使用する。内部変数は多くのプログラミング言語と同じように使 +われる。変数に値を代入するために|:let|コマンドが使用される。変数は前もって宣言 +しておく必要はないし、数値を保存するのか文字列なのかの区別も存在しない。 +"while"と"endwhile"の間の分は9回繰り返される。 +Note 変数"i"は"let i = i + 1"コマンドによって増加している。もしこれを忘れてし +まった場合、ループは永遠に回りつづけるだろう。不幸にもそのループに陥った場合に +は、CTRL-C(MS-DOSではCTRL-Break)で脱出することができる。 + + +組み込み関数 ~ + +Vim has builtin functions that you can use. Example: +Vimには便利に使うことのできる関数群が組み込まれている。例: +> echo exists("did_my_inits") +この例では変数"did_my_inits"が存在すれば1、存在しなかった場合には0を表示する。 +> if has("gui_running") +> syntax on +> endif +これはGUIモードで起動された時に、シンタックスハイライティング(構文強調)を有効 +にしている。has()関数はある機能がサポートされているかを確かめるために使うこと +ができる。 +> call append(0, hostname() . " - " . strftime("%Y %b %d")) +これはコンピュータの名前と現在時刻を記した行をカレントバッファの先頭に挿入す +る。 + +Vimにさせたい仕事を実現するための、多くの関数が用意されている。これらはノーマ +ルコマンドと一緒に使うことで、とても複雑になる。|functions|参照。 + + +ユーザ定義関数 ~ + +Vimを使いこなすにつれ、同じようなコマンドを何度も使うようになるだろう。そんな +時は関数を自分で定義して、必要な時にはそれを呼び出すようにする。例: +> function My_Func(name) +> if a:name ==? "john" +> let s = "Hello " +> else +> let s = "I don't know " +> endif +> echo s . a:name . "." +> endfun +解説: +関数"My_Func"は1つの引数を持つものとして定義されている。"a:name"が、その引数を +参照するために"a:name"が使用される。"==?"演算子は引数と文字列"john"を、大文字 +小文字の区別無しで比較する。こんな風に呼び出すことができる: +> call My_Func("John") +> Hello John. +> call My_Func("James") +> I don't know James. + +Note ユーザ関数の名前は、必ず大文字で始まらなければならない。引数はいくらでも +使うことができる。|:function|参照。 + + +パッケージ ~ + +To avoid your function names to interfere with functions that you get from +others, use this scheme: +他人の作った関数の名前と自分のものが衝突するのを避けるためには、次のスキーム +(仕組み)を使う: +- 各々の関数の前には、ただひとつと思われる文字列を付加する。慣用的に略語が使用 + される。例えばオプションウィンドウに関連する関数ならば"OW_"という具合であ + る。 +- ファイルに関数の定義を含める。既に関数が読み込まれたかは、グローバル変数を設 + 定することで知ることができる。ファイルを再び読み込んだ(|:source|)時には、予 + め関数を読み込み解除する。 +例: +> " This is the XXX package +> +> if exists("XXX_loaded") +> delfun XXX_one +> delfun XXX_two +> endif +> +> function XXX_one(a) +> ... body of function ... +> endfun +> +> function XXX_two(b) +> ... body of function ... +> endfun +> +> let XXX_loaded = 1 + + +自動コマンド実行 ~ + +ファイルの種類に応じてオプションやマッピングを設定したい場合があるだろう。幸運 +なことにVimは既にファイルの多くの種類を認識する。これは構文強調のために使用さ +れるが、もちろん他のことに使うこともできる。使うためには構文解析を有効にする +|:syn-on|か、このコマンドを使う必要がある: +> filetype on + +例えばCのソースに対して'cindent'オプションを、自動コマンドを実行するには: +> au FileType c set cindent +このautocommandは3つの部分から構成されている: + FileType 使われるイベントの名前 + c 検出されたファイルタイプの名前 + set cindent ファイルタイプが"c"でイベントが起こった時に実行される + コマンド +詳しい解説は|:autocmd|を参照。 + +'cindent'のようなバッファで局所的に働くオプションには、これでうまくいく。マッ +ピングを定義するために使用した場合には、複数ウィンドウで使用してしまうと正しく +働かない。例をあげると、あるウィンドウでfoo.txtを、他のウィンドウでfoo.cを編集 +したとすると、foo.cのために設定したマッピングがfoo.txtでも使用されることにな +る。foo.cに対してだけ働くマッピングを作るためには、ファイルfoo.cが現在のバッ +ファでなくなったらすぐにマッピング解除する必要がある。それはこの方法でできる: +> au BufEnter * if &ft == "c" | call CM_map() | endif +> au BufLeave * if &ft == "c" | call CM_unmap() | endif +> fun CM_map() +> set cindent +> imap { {<CR> <BS><CR>}<Up><End> +> endfun +> fun CM_unmap() +> iunmap { +> endfun +ここではある関数がマッピングを定義するために、別の一つがそれを解除するために使 +用されている。これにより、自動コマンドの部分を変更せずにマッピングを追加するこ +とが可能になる。 +関数を使うことで自動コマンドを短くすることができる。'|'はコマンド区切り文字で +ある。 +":imap"コマンド内の<>というコードは、コントロール文字の代替である。こうすると +入力も、確認も容易になる。" <BS>"は、<CR>がタイプされた時に字下げが消えてしま +うのを、回避するためのものである。 + +============================================================================== +7. The viminfoファイル *viminfo-file* + +いったんVimを終了させ、後に再び起動する時には、通常多くの情報が失われてしま +う。viminfoファイルは終了する時の情報を保存しておくのに使用され、それにより再 +起動した時には同じ状態で編集セッションを続けることができる。 + +viminfoファイルにはこんなものを記憶できる: +- コマンドラインの履歴 +- 検索文字列の履歴 +- 入力(|input()|)の履歴 +- レジスタの内容 +- 複数のファイルのマーク +- ファイルの中の位置を指し示すマーク +- 最後の検索/置換パターン('n'と'&'のため) +- バッファのリスト +- グローバル変数 + +コンパイル時に|+viminfo|機能が無効にされていたら、viminfoファイルはサポートさ +れない。 + +セッションファイルも使用することができる。viminfoファイルは「している仕事」に +依存しない、という点で異なる。通常viminfoファイルは一つしか存在しない。セッ +ションファイルは、ある特定の編集作業の状態を保存するのに使う。セッションファイ +ルは、作業しているプロジェクト毎に複数作成することが可能である。Viminfoもセッ +ションファイルどちらも、Vimをスタートしてすぐに好みの設定を行うという目的のた +めに、効果的に使用できる。 |session-file| + + + *viminfo-read* +Vimが起動した時に'viminfo'オプションが空でなかったら、viminfoファイルが読み込 +まれ、適切な情報が適用される。起動時にはマークは読み込まれない(しかしファイル +マークは読み込まれる)。起動時に'viminfo'オプションをどうやって設定するのかは +|initialization|を参照。 + + *viminfo-write* +Vimが終了する時に'viminfo'が空でなかったら、情報がviminfoファイルに保存される +(もし既にあった存在した場合には、それと混合させられる)。'viminfo'オプション +は、どのような情報が保存されるか、またどのくらいの量を保存するべきかその限界を +指定する為の情報を含む文字列である。('viminfo'参照)。 + +Unixの注意: +- viminfoファイルには入力したテキストや、使用したコマンドが記載されているの + で、他人に覗かれないように保護(パーミション設定)したほうが良い。 +- 複数のユーザでviminfoファイルを共有したい時(例えば他のユーザへ"su"する時な + ど)には、グループもしくは全員にviminfoファイルへの書き込み権限を与える。Vim + ファイルが新しいviminfoファイルを書くときには、これらの設定はそのままに保護 + する。しかし、誰にでもviminfoファイルを読ませたり書かせたりすべきではない + し、注意が必要。 +- 現在の"本当"のユーザによって書き込み不能なviminfoファイルは、Vimは決して上書 + きしない。これは"su"でrootユーザになった時、しかし$HOMEがまだ通常ユーザの + ホームディレクトリのままの時の支援となる。そうでないとVimはroot所有の、他の + 誰にも読めないviminfoファイルを作成してしまう。 + +マークは個々のファイル別々に保存される。ファイルが読み込まれ'viminfo'が空でな +い場合、viminfoファイルからマーク情報が読み込まれる。注意: マークはVimが終了す +る時にだけ保存され、Vimとのセッション中にオープンされ":bdel"されていないファイ +ル全てに対して、マークが記憶される。もしも":bdel"で破棄したファイルについて +マークを保存しておきたいのならば、":wv"を使う。'['と']'のマークは保存されない +が、'"'は保存される。'"'マークは最後にファイルを閉じた時にカーソルがあった場所 +に行くのに、非常に便利である。'viminfo'に文字"r"が与えられた時には、一切のマー +ク情報は記録されない。これはリムーバブルメディア上のファイルのマークが保存され +るのを避ける場合に使う(MS-DOSでは"ra:,rb:"を、Amigaでは"rdf0:,rdf1:,rdf2:"を使 +うと良い)。 + + *viminfo-file-marks* +大文字のマーク('Aから'Z)はviminfoファイルが書かれるときに、保存される。数字の +マーク('0から'9)はちょっと特別である。viminfoファイルが書き込まれる時(終了時、 +もしくは":wviminfo"コマンド実行時)に、'0が現在のファイルの現在のカーソル位置に +設定される。古い'0は'1になり、'1は'2になり、以下同様。"1から"9の削除レジスタに +起こることに似ている。'0に記憶する位置が'1から'9に既出であった時には、同じ位置 +が2度記憶されるのではなく、そのレジスタが'0に浮き上がってくる。結果として"'0" +を使用すると、最後にVimを終了した時のファイルとその行に戻ることができる。起動 +後直ちにそれを行うには、次のコマンドを試す: + +> vim -c "normal '0" + +シェルではエイリアスをこんな風に使用して: + +> alias lvim vim -c '"'normal "'"0'"' + +Viminfoファイルの名前: *viminfo-file-name* +- viminfoファイルの名前を特に指定しない時は、UnixとOS/2では"$HOME/.viminfo" + に、Amigaでは"s:.viminfo"に、MS-DOSとWin32では"$HOME\_viminfo"になる。MS-DOS + とWin32で、$HOMEが設定されていない時には、"$VIM\_viminfo"になる。$VIMも設定 + されていない時には"c:\_viminfo"が使われる。OS/2では、$HOMEが設定されず$VIMが + 設定されていれば"$VIM/.viminfo"となる。 +- 'viminfo'オプションの'n'フラグは、別の名前のviminfoファイルを使うために、そ + のファイル名を指定するのに使用される|'viminfo'|。 +- Vimの起動引数"-i"も、viminfoとして別のファイルを指定するのに使用できる|-i|。 + ファイル名として"NONE"(全て大文字)が与えられると、viminfoファイルは使用(読み + 込みも書き込みも)されない。 +- 起動後に、コマンドで別の名前を与えると、デフォルト名や'viminfo'や"-i"で与え + た名前を上書きすることができる("-i"はNONEが指定されていない時に限る)。 + +viminfoファイルを手動で読み書きするのに2つのコマンドが用意されている。これは同 +時に起動している複数のVim間で、レジスタの内容を交換するのに利用できる: まず片 +方で":wv"してから、もう片方で":rv"する。既にレジスタに何かを記憶している場合に +は、":rv!"する必要があることに注意。またこれを行うとコマンドラインの履歴を含む +全ての情報が、送り側のVimのもので上書きされてしまうことにも注意。 + +viminfoファイル自信を手で編集することもできるが、Vimによって作られる正しい +フォーマットのviminfoを元にすることを推奨する。一度そこに至ると、それはかなり +自己説明的である(訳注:この一文よくわからん)。これはVimを起動した時に設定されて +いて欲しい内容を含む、"~/.my_viminfo"と言われるファイルを作る目的で使うと重宝 +する。例としては、あるデータをレジスタに予め読み込んでおくとか、コマンドライン +履歴に特定のコマンドをいれるとか、そういう使い方がある。.vimrcファイルに次の一 +行を入れておけば +> rviminfo! ~/.my_viminfo +この情報を読み込むのに使うことができる。ファイルの種類によって(Cコードだとか +vimスクリプトだとか)、異なるviminfoを持ち、":autocmd"を組み合わせることでファ +イル名に基づいたりしながら、それらを使用することもできる(|:autocmd|)参照。 + + *viminfo-errors* +Vimがviminfoファイルを読み込み中にエラーを検出すると、ファイルの上書きはされな +くなる。もしも10個以上のエラーがある場合には、それ以上viminfoファイルを読み込 +むのを止める。こうするのはviminfoファイル内のファイル名が間違っている場合、突 +発的にそのファイルを破壊してしまうのを避けるためである。これは"vim -R file"と +したいときに、誤って"vim -i file"とタイプしてしまうと起こり得る(そう、偶然何人 +かが実際にそうしてしまったよ!!)。viminfoファイルにエラーがあったけれども +viminfoを上書きしたいのならば、エラーを修正するか、またはファイルを消すかのど +ちらかが必要(Vimの実行中は、殆どの情報が回復してしまう)。 + + *:rv* *:rviminfo* +:rv[iminfo][!] [file] viminfoファイルを[file](デフォルト:上記参照)から読込 + む。[!]が与えれらた場合、既に設定されている情報(レジス + タ、マーク、その他)は上書きされる。{Viにはない機能} + + + *:wv* *:wviminfo* +:wv[iminfo][!] [file] viminfoファイルを[file](デフォルト:上記参照)として保存 + する。ファイルに書き出される情報は、まず古い情報が読込 + まれ、次に新しい情報が読込まれマージ(混合)されたも の + となる。[!]が使用されると、古い情報は読込まれず、内 部 + の情報だけが出力される。'viminfo'に指定がない場合、100 + 個のファイルのマークが書き出される。{Viにはない機能} + + vim:tw=78:ts=8:ft=help:norl: From 79604ee2f5c9ac4b79fbdf75d67210427fe36548 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Thu, 27 Jan 2005 12:58:21 +0000 Subject: [PATCH 008/783] add: 6 files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@8 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/editing.jax | 1431 +++++++++++++++++++++++++++++++++++++++++++++++ ja/gui_w32.jax | 484 ++++++++++++++++ ja/gui_x11.jax | 576 +++++++++++++++++++ ja/insert.jax | 1040 ++++++++++++++++++++++++++++++++++ ja/rileft.jax | 180 ++++++ ja/variaous.jax | 396 +++++++++++++ 6 files changed, 4107 insertions(+) create mode 100644 ja/editing.jax create mode 100644 ja/gui_w32.jax create mode 100644 ja/gui_x11.jax create mode 100644 ja/insert.jax create mode 100644 ja/rileft.jax create mode 100644 ja/variaous.jax diff --git a/ja/editing.jax b/ja/editing.jax new file mode 100644 index 000000000..d08e891a7 --- /dev/null +++ b/ja/editing.jax @@ -0,0 +1,1431 @@ +COMMENT: テキストファイル編集全般にわたる解説 +STATUS: finished 6.3.054 +TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> +TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*editing.txt* For Vim version 6.3. Last change: 2004 Apr 28 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +ファイルの編集 *edit-files* + +1. はじめに |edit-intro| +2. ファイルの編集 |edit-a-file| +3. ダイアログ |edit-dialogs| +4. カレントディレクトリ |current-directory| +5. 引数リスト |argument-list| +6. 書き込み |writing| +7. 書き込みと終了 |write-quit| +8. バイナリファイルの編集 |edit-binary| +9. 暗号化 |encryption| +10. タイムスタンプ |timestamps| + +============================================================================== +1. はじめに *edit-intro* + +「Vimでファイルを編集する」とは、以下のことを表す。 + +1. 内部バッファへファイルを読み込む +2. 編集コマンドによりバッファの内容を変更する +3. バッファをファイルへ書き込む + + *current-file* +バッファを書き込まない限り、元のファイルは変更を受けないままで残っている。ファ +イルの編集を始めると (バッファにファイルを読み込むと)、そのファイルの名前は +「カレントファイル名」として記憶される。 + + *alternate-file* +カレントファイル名が既に存在したときは、前の方は「代替ファイル名」になる。全て +のファイル名はファイルリストに記憶される。編集 (例えば ":e filename") や保存 +(例えば ":w filename") のためにファイル名を入力すると、そのファイル名はリスト +に追加される。このリストを使えば、どのファイルを編集したかを覚えておいたり、コ +マンド CTRL-^ によってあるファイルから別のファイルへ素早く移行できる (例えばテ +キストをコピーするため)。まずファイルの番号を、次に CTRL-^ を打ち込む。 +{Vi: 代替ファイル名は1個だけ使える} + +CTRL-G または *CTRL-G* *:f* *:fi* *:file* +:f[ile] カレントファイル名 (これは打ち込まれた通り --訳注: 普 + 通、カレントディレクトリのファイルを編集するときはパス + を省いて打ち込むと思うが、そうするとパスなしのファイル + 名になる)、カーソル位置 (これはオプション 'ruler' がオ + フのとき) とファイルの状態 (読込専用、変更あり、読込エ + ラー、新規ファイル) を表示する。このメッセージを短くす + る方法については、オプション 'shortmess' を参照。 + {Vi では列番号が表示されない} + +{count}CTRL-G CTRL-G と同様だが、カレントファイル名をフルパスで表示 + する。{count} が2以上なら、カレントバッファの番号も表 + 示する。 {Vi にはない} + + *g_CTRL-G* *word-count* *byte-count* +g CTRL-G カーソルの現在の位置を、列、行、単語、バイト、の4種類 + の単位で表示する。行の中に画面上で1文字分以上の幅を占 + める文字 (<Tab> または特殊文字) があるときは、「実際」 + の列番号と画面上の列番号の両方が、ダッシュで区切られて + 表示される (訳注: 例えば、タブ幅 'tabstop' が8のとき、 + 行頭の <Tab> の次では「実際」の列番号は2、画面上の列番 + 号は9となり、"1-8" と表示される)。オプション 'ruler' + も参照。 {Vi にはない} + + *v_g_CTRL-G* +{Visual}g CTRL-G "g CTRL-G" と似ているが、単語、行、バイトの項目はビジュ + アル選択領域内で数えられて表示される。ビジュアルブロッ + クモードでは、何列目かも表示される ({Visual} について + は |Visual-mode| を参照)。 {Vi にはない} + + *:file_f* +:f[ile] {name} カレントファイル名を {name} に設定する。 + +:buffers +:files +:ls 現在認識しているファイル名を全て一覧表示する。 + |windows.txt| |:files| |:buffers| |:ls| を参照。 + {Vi にはない} + +Vimは入力したファイル名のフルパス名を記憶している。ファイル名が表示されるとき、 +大抵は打ち込んだ名前だけが表示されるが、コマンド |:cd| でディレクトリを移動し +た後では、フルパス名が使われる。 + + *home-replace* +環境変数 $HOME が設定されていて、ファイル名がその文字列で始まっているならば、 +ファイル名のその部分は "~" に置き換えられて表示される。これはファイル名を短く +するためである。ファイルを読み書きするときはフルパス名が使われ、"~" はファイル +名を表示するときだけ使われる。ファイル名の置き換えを行ったところ "~" だけになっ +てしまうときは、代わりに "~/" が使われる (オプション 'backupext' が "~" に設定 +されたときに混乱を防ぐため)。 + +バッファを書き出すとき、既定ではカレントファイル名を用いる。そのため、コマンド +"ZZ" や ":wq" を使うと、元のファイルは上書きされてしまうことになる。これを望ま +ないならば、コマンド ":write" の引数にファイル名を与えることで、バッファを別の +ファイルに書き出せる。例: > + + vim テスト用 (訳注: これはシェルに対して) + [コマンドでバッファを編集する] + :w 新ファイル + :q + +こうすると "新ファイル" が生成されるが、これは "テスト用" を編集してコピーした +ものである。ファイル "テスト用" は変更されないまま残る。しかしどちらにしろ、オ +プション 'backup' がオンのときは、Vimは元のファイルを上書きする前に、元のファ +イルの名前を変更するかコピーする。元のファイルが必要なことに気付いたときは、こ +のファイルを使える。'patchmode' も参照。普通、バックアップファイルの名前は元の +ファイル名に 'backupext' を追加したものである。既定値は "~" という妙なものだが、 +これは偶然に存在しているファイルに上書きするのを避けるためである。 ".bak" の方 +がよければ、'backupext' を変更すること。MS-DOS機等で、MS-DOS系のファイルシステ +ム (例えば、messydosやcrossdos) が使われていることが検出されたときや、 +'shortname' がオンのときには、余分なドットは '_' に置き換えられる。'backupdir' +を設定することで、バックアップファイルを他のディレクトリに置くことができる。 + + *auto-shortname* +技術的情報: Amigaではファイル名に30文字まで使える。しかしMS-DOS互換のファイル + システムで有効なのは8文字+3文字に過ぎない。Vimは ".swp" ファイル + を生成するときにファイルシステムのタイプの判別を試みる。MS-DOS系の + ファイルシステムと思われるときは、'shortname' をオンにするのと同じ + 効果を持つフラグがオンになる。このフラグは新ファイルの編集を開始す + るとすぐにオフにされる。このフラグはカレントファイルのための + ".swp" ファイルと ".~" ファイルの名前を作るときに使われる。しかし、 + ユーザが普通のファイルシステムで編集作業を行い、MS-DOS系のファイル + システムに保存するときには、フラグはオンにならない。そのときは、 + ".~" ファイルの生成が失敗してエラーメッセージが表示される。そのと + きはオプション 'shortname' を使うこと。 + +ファイル名を指定せずに編集を始めたときは、メッセージ欄に "[無題]" と表示される。 +コマンド ":write" がファイル名引数付きで使われたときは、そのファイル名がカレン +トファイルのファイル名に設定される。こうなるのはフラグ 'F' がオプション +'cpoptions' に含まれているときだけである (既定では含まれている)。これは空のバッ +ファにテキストを入力してから、それをファイルに保存するときに便利である。 +'cpoption' が 'f' を含んでいるときは (既定では含まれて「いない」)、 +":read file" でファイル名が設定される。これは引数なしでVimを起動してから、 +":read file" でファイルの編集を開始するときに便利である。 + *not-edited* +ファイル名が設定されるのはその名前のファイルの編集を本当に始めるより前なので、 +そのファイルを誤って上書きしないようになっている。これはフラグ "notedited" を +設定することで可能になる。このフラグの状態はコマンド CTRL-G か ":file" で確認 +できる。フラグ "notedited" がオンのときは "[Not edited]" と表示される。 +カレントファイルの名前でバッファ内容を書き出すとき (":w!" で)、フラグ +"notedited" はオフに設定される。 + + *abandon* +Vimはバッファが変更されたかどうかを記憶していて、変更点が誤って失われないよう +になっている。保存せずに終了しようとしたり、別のファイルの編集を開始しようとす +ると、Vimは拒否する。この保護を無効にするためには、コマンドに '!' を追加するこ +と。その場合、変更は失われる。例えばバッファの内容が変更されているとき、":q" +は使えないが ":q!" は使える。バッファの内容が変更されたかどうかを見るためには +コマンド CTRL-G を使うこと。バッファが変更されていたときは、メッセージに文字列 +"[変更あり]" が含まれる。 + +確認なしで変更を保存してほしいなら、オプション 'autowriteall' をオンにすること。 +関連するオプションには 'autowrite' があるが、これはVi互換で、全てのコマンドに +対して動作するわけではない。 + +変更されたバッファを保存せずにそのままにしておきたいなら、オプション 'hidden' +をオンにすること。 |hidden-buffer| を参照。 + +============================================================================== +2. ファイルの編集 *edit-a-file* + + *:e* *:edit* +:e[dit] [++opt] [+cmd] カレントファイルを編集する。これはVim外部でカレントファ + イルに変更が加えられたとき、再編集するのに便利である。 + カレントバッファに変更が加えられているのに、オプション + 'autowriteall' がオフであるか、ファイルが書き込み可能 + でないときは、実行に失敗する。 + |++opt| と |+cmd| も参照。 + {Vi: ++opt は使えない} + + *:edit!* +:e[dit]! [++opt] [+cmd] + どのような場合でもカレントファイルを編集する。カレント + バッファに対する変更は全て失われる。これは編集作業をも + う一度最初からやり直したいときに便利である。 + |++opt| と |+cmd| も参照。 + {Vi: ++opt は使えない} + + *:edit_f* +:e[dit] [++opt] [+cmd] {file} + {file} を編集する。 + カレントバッファに変更が加えられていると実行に失敗する。 + ただしオプション 'hidden' がオンであるときと、 + 'autowriteall' がオンであり、かつファイルが書き込み可 + 能なときには実行できる。 + |++opt| と |+cmd| も参照。 + {Vi: ++opt は使えない} + + +:e[dit]! [++opt] [+cmd] {file} *:edit!_f* + どのような場合でも {file} を編集する。カレントバッファ + に対する変更は全て失われる。 + |++opt| と |+cmd| も参照。 + {Vi: ++opt は使えない} + +:e[dit] [++opt] [+cmd] #[count] + [count] 番目の代替ファイル (コマンド |:files| で表示さ + れるもの) を編集する。このコマンドは [count] CTRL-^ と + 同じである。しかし代替バッファがファイル名を持たないと + ":e #" は機能しないが、CTRL-^ はそのときも機能する。 + |++opt| と |+cmd| も参照。 + {Vi: ++opt は使えない} + + *:ene* *:enew* +:ene[w] 無名のバッファの編集を新規に開始する。カレントバッファ + に変更が加えられていると実行に失敗する。ただしオプショ + ン 'hidden' がオンであるときと、'autowriteall' がオン + であり、かつファイルが書き込み可能なときには実行できる。 + 'fileformats' の値が空でないとき、その先頭の形式が新バッ + ファに適用される。'fileformats' の値が空のときは、カレ + ントバッファの 'fileformat' の値が使われる。 + {Vi にはない} + + *:ene!* *:enew!* +:ene[w]! 無名のバッファの編集を新規に開始する。カレントバッファ + に対する変更は全て失われる。 + オプション 'fileformat' の値はコマンド |:enew| と同様 + に設定される。 + {Vi にはない} + + *:fin* *:find* +:fin[d][!] [++opt] [+cmd] {file} + オプション 'path' 内のディレクトリから {file} を探し、 + それを |:edit| する。 + {Vi にはない} {Vi mが |+file_in_path| 機能付きでコンパ + イルされたときのみ有効} + +:{count}fin[d][!] [++opt] [+cmd] {file} + コマンド ":find" と同様だが、オプション 'path' 内のディ + レクトリで {count} にマッチしたファイルを編集する。つ + まり ":2find file" とすると 'path' 内で2番目に見つかっ + た "file" を編集する。'path' 内で見つかったマッチが + {count} より少ないと、エラーメッセージが表示される。 + + +:ex [++opt] [+cmd] [file] *:ex* + :editと同じ。 + + *:vi* *:visual* +:vi[sual][!] [++opt] [+cmd] [file] + Exモード内では: ExモードからNormalモードに戻る。そ + れ以外はコマンド |:edit| と同じ。 + + *:vie* *:view* +:vie[w] [++opt] [+cmd] file + Exモード内では: ExモードからNormalモードに戻る。それ以 + 外はコマンド |:edit| と同じだが、そのバッファに対して + オプション 'readonly' をオンにする。 {Vi にはない} + + *CTRL-^* *CTRL-6* +[count]CTRL-^ [count] 番目の代替ファイルを編集する (コマンド + ":e #[count]" と同じ)。[count] が指定されないと、前に + 編集したファイルを編集する。これを使うと2つ (かそれ以 + 上) のファイル間を素早く行き来できる。 + オプション 'autowrite' か 'autowriteall' がオンならば、 + バッファを移動するときに書き込みをする。 + たいていは"^"と"6"は同じキーです。CTRLを押しながら6の + キーを押せばCTRL-^を押したのと同じ効果を得られます。し + かし英語配列でないキーボードでは他のキーが割り当てられ + ます。 + +[count]]f *]f* *[f* +[count][f コマンド "gf" と同じ。推奨されない。 + + *gf* *E446* *E447* +[count]gf カーソルの下か後ろの名前のファイルを編集する。 + 覚え方: "goto file"。 + オプション 'isfname' により、どの文字がファイル名に使 + われるはずなのかを調べる。ファイル名に続く句読点の + ".,:;!" は無視される。 + 'path' により、ファイルを探すディレクトリ名のリストを + 調べる。カレントファイルに対して相対的なファイル名も使 + う。 + 'suffixesadd' により、拡張子を補ったファイル名を調べる。 + ファイルが見つからないと、'includeexpr' によってファイ + ル名を修正し、再びファイルを探す。 + [count] が指定されると、'path' 内で見つかった [count] + 番目のファイルを編集する。 + Vimがカレントファイルの破棄 |abandon| を拒否したときは、 + このコマンドの実行は失敗する。 + 新しいファイルを編集したいならば、次のようにする。 > + :e <cfile> +< どのような場合でもコマンド gf を機能させるには、次のよ + うにする。 > + :map gf :e <cfile><CR> +< カーソル下のファイル名が "type://machine/path" のよう + なハイパーテキスト・リンクであるならば、プラグイン + |netrw| が必要になる。 + Unixでは、文字 '~' は "~user/file" のように展開される。 + 環境変数も展開される |expand-env|。 + {Vi にはない} {Vi mが |+file_in_path| 機能付きでコンパ + イルされたときのみ有効} + + *v_gf* +{Visual}[count]gf コマンド "gf" と同様だが、編集するファイルの名前には強 + 調表示されたテキストが使われる。オプション 'isfname' + の値は無視される。先頭の空白は無視されるが、それ以外の + 空白や特殊文字はファイル名に含まれる。 + ({Visual} については |Visual-mode| を参照。) + {Vi にはない} + +以上のコマンドは1つのファイルの編集を開始するために使用される。これはファイル +がバッファに読み込まれ、カレントファイル名が設定されることを意味する。開かれる +ファイルはカレントディレクトリに依存する。コマンド |:cd| を参照。 + +ファイルが読み込まれた後に表示されるメッセージの説明については、 +|read-messages| を参照。 + +バッファ内がめちゃめちゃになって最初からもう1度やり直したいときには、コマンド +":e!" が使える。コマンド ":e" が便利なのは、カレントファイル名を変更したときだ +けである。 + + *:filename* *{file}* +Note UnixとMS-DOS以外のシステムに対する注意: 1つのファイル名を受け付けるコマン +ド (":edit file" 等) を使うときは、ファイル名に空白が入っていても構わないが、 +ファイル名末尾の空白は無視される。これは空白が含まれたファイル名を認めているシ +ステム (Amiga等、訳注: MS-Win32も) では便利である。例: コマンド +":e Long File Name " はファイル "Long File Name" を編集する。1つ以上のファイ +ル名を受け付けるコマンド (":next file1 file2" 等) を使うときは、ファイル名内の +空白は '\' でエスケープしなければならない。 + +{file} 内のワイルドカードは展開される。使用できるワイルドカードの種類は、シス +テムによって異なる。以下は標準的なものである。 + * 何もないのも含め、全てにマッチ + ? あらゆる1文字にマッチ + [abc] 'a', 'b' または 'c' にマッチ +ワイルドカードとしての特別な意味を無効にするには、前に '\' を置くこと。しかし +MS-Windowsでは '\' がパスの区切り文字なので、オプション 'isfname' の値に "[" +が含まれていると、"path\[abc]" はワイルドカード扱いになってしまう。これを避け +る単純な方法は、"path\[[]abc]" とすることである。すると文字通りのファイル +"path[abc]" を編集できる。 + + *backtick-expansion* *`-expansion* +Unixではファイル名にバッククォート '`' も使える。例: > + :e `find . -name ver\\*.c -print` +アスタリスク '*' の前の '\' は、"ver*.c" がプログラム find を実行する前にシェ +ルによって展開されるのを防ぐために必要となる。 +これは、必ず項目全体がバッククォートで括られているという制限付きで、他の多くの +システムでも機能する。最初のバッククォートの前や最後のバッククォート直後に、直 +接テキストを入れてはならない。 + +バッククォート内を、外部コマンドとしてではなくVimの expression として展開させ +ることもできる。そのためには `={expr}` という構文を使えばよい。例: > + :let foo='bar' + :e `=foo . ".c" ` +これは "bar.c" を編集する。 Note Expressionにバッククォートを含めることはでき +ないので注意。 + + *++opt* *[++opt]* +引数のうち [++opt] はオプション 'fileformat' または 'fileencoding' の値を、そ +のコマンドに限ってある値に指定するために使われる。指定の形式は次の通り。 > + ++{optname}={value} + +ここで {optname} は以下のうちのどれかである。 *++ff* *++enc* + ff または fileformat 'fileformat' を指定 + enc または encoding 'fileencoding' を指定 + bin または binary 'binary' を指定 + nobin または nobinary 'binary' を無効にする + +{value} に空白を含めてはいけない。値は、そのオプションに対して適切なものなら何 +でもよい。例: > + :e ++ff=unix +こうすると 'fileformat' を "unix" に設定して同じファイルを編集し直す。 > + + :w ++enc=latin1 newfile +こうするとカレントバッファの内容を latin1 の文字コードで "newfile" に書き出す。 + +Note 読み込み時に上の方法で 'fileformat' と 'fileencoding' を指定すると、それ +らは以後その値に設定されることに注意。書き込み時に設定してもそうはならず、次に +書き込むときには以前の値が使われる。'binary'オプションも同様。 + +引数 [++opt] は空白で区切って複数指定してもよい。それらはみな引数 |+cmd| より +前に指定しなければならない。 + + *+cmd* *[+cmd]* +引数 [+cmd] は、新しく開いたファイルでカーソルの位置を指定したり、他のあらゆる +コマンドを実行するために使われる: + + 最後の行で編集を開始する。 + +{num} {num} 行目で編集を開始する。 + +/{pat} {pat} を含んだ最初の行で編集を開始する。 + +{command} 新しいファイルを開いた後に {command} を実行する。 + {command} には任意のExコマンドが使える. +{pat} や {command} に空白を含めるためには、その前に '\' を付ける。'\' そのもの +を使うには、2回ずつ繰り返すこと。 > + :edit +/The\ book ファイル + :edit +/dir\ dirname\\ ファイル + :edit +set\ dir=c:\\\\temp ファイル +Note 最後の例では '\' の繰り返しが2回行われていることに注意."+cmd" の引数なの +で1回,コマンド ":set" のためにもう1回だ. + + *file-formats* +オプション 'fileformat' はファイルに対して <EOL> の形式を設定する。 +'fileformat' <EOL>の文字 形式の名称 ~ + "dos" <CR><NL> または <NL> DOS形式 *DOS-format* + "unix" <NL> Unix形式 *Unix-format* + "mac" <CR> Mac形式 *Mac-format* +以前はオプション 'textmode' が使われていた。現在ではそれは時代遅れである。 + +ファイルを読み込むときに、上で述べた文字は <EOL> として解釈される。DOS形式 +(MS-DOS、OS/2とWin32での既定値) では、<CR><NL> と <NL> の両方が <EOL> と解釈さ +れる。 Note DOS形式でファイルを保存するときには、<NL> 1個ごとに対して <CR> が +追加されることに注意。|file-read| も参照。 + +ファイルを書き込むときには、上で述べた文字が <EOL> として使われる。DOS形式では +<CR><NL> が使われる。|DOS-format-write| も参照。 + +DOS形式でファイルを読み込んで、Unix形式でそれを保存することも可能である。 +('fileformats' が "dos" を含んでいると仮定すると) 以下の操作は全ての <CR><NL> +の組を <NL> で置き換えることになる。 > + :e ファイル + :set fileformat=unix + :w +('fileformats' の値に "unix" が含まれているとき) Unix形式でファイルを読み込ん +で、DOS形式で保存すると、<NL> は全て <CR><NL> で置き換えられる。 > + :e ファイル + :set fileformat=dos + :w + +新しいファイルの編集を開始したときオプション 'fileformats' の値が空でない (こ +れが既定値) ならば、Vimはファイルが指定された形式で改行されているかどうか検出 +を試みる。値が "unix,dos" であるときは、Vimは1個の <NL> (UnixとAmigaで使われて +いる) か <CR><NL> の組 (MS-DOS) が使われるものとして行を調べる。全ての行が +<CR><NL> で終わっているときだけ、'fileformat' の値は "dos" に設定され、そうで +なければ "unix" に設定される。'fileformats' の値が "mac" を含んでいて、ファイ +ルに <NL> が1個も見つからないときは、'fileformat' の値は "mac" に設定される。 + +'fileformat' の値がMS-DOS以外のシステム上で "dos" に設定されると、普通でないこ +とが起きていることを気付かせるために、メッセージ "[dosフォーマット]" が表示さ +れる。'fileformat' の値が "unix" であると、MS-DOSシステムでは +"[unixフォーマット]" のメッセージが表示される。'fileformat' の値が "mac" であ +ると、Macintosh以外の全てのシステムでは、メッセージ "[macフォーマット]" が表示 +される。 + +オプション 'fileformats' の値が空で、DOS形式が使用されているが、ファイルを読み +込んでいるときにいくつかの行が <CR><NL> で終わっていなかったならば、ファイルの +メッセージ内に "[CR無]" が含まれる。 +'fileformats' の値が空で、Mac形式が使用されているが、ファイルを読み込んでいる +ときに <NL> が見つかったならば、ファイルの +メッセージ内に "[NL無]" が含まれる。 + +新しいファイルが存在しないと、'fileformats' の値が空のときにはカレントバッファ +の 'fileformat' の値が使われる。そうでなければ、'fileformats' 内の1番目の形式 +が新しいファイルに対して用いられる。 + +実行可能ファイルやバイナリファイル、Vimスクリプトファイルを編集する前には、オ +プション 'binary' をオンに設定するべきだ。これにはオプション "-b" を付けてVim +を起動するのが簡単である。こうすると 'fileformat' が使われなくなる。こうしない +と1個の <NL> が不意に <CR><NL> で置き換えられてしまうことを覚悟しなければなら +ない。 + +オプション 'key' をオンに設定することで、保存されるファイルを暗号化できる。こ +れは他人がユーザのファイルを読むことに対して、ある程度の安全を保障する。 +|encryption| + + +ファイル検索 *file-searching* + +{Vi mが |+path_extra| 機能付きでコンパイルされたときのみ有効} + +現在の所、オプション 'path', 'cdpath' と 'tags' でファイル検索が使われる。ファ +イル検索には以下の3種類がある。 + +1) 下向き検索: + 下向き検索にはワイルドカード '*' と '**' 及びユーザのOSがサポートするその他 + のものが使える。'*' と '**' はVim内部で扱われるので、全てのOSで機能する。 + + '*' の使用法はきわめて単純: 0 個以上の文字にマッチする。 + + '**' はもっときめ細かい。 + - これはディレクトリのみにマッチする。 + - これは 30 段階までの深さのディレクトリにマッチするので、ディレクトリ・ + ツリー全体の検索に使える。 + - マッチする深さの最大値は '**' の前に数字を付け加えて指定できる。 + だから '/usr/**2' は下のようにマッチする。 > + /usr + /usr/include + /usr/include/sys + /usr/include/g++ + /usr/lib + /usr/lib/X11 + .... +< '/usr/include/g++/std' には、深さが3なのでマッチしない。 + 指定可能な範囲は 0 ('**0' は無視される) から 255 である。 + 負数を指定すると 30 を、255 より大きい数を指定すると 255 を指定したも + のとされる。 + - '**' はパスの末尾にのみ使える。後ろにパス区切り文字か、数字とパス区切 + り文字の組み合わせを付けてもよい。 + + '*' と '**' を組み合わせる順番は自由である。 > + /usr/**/sys/* + /usr/*/sys/** + /usr/**2/sys/* + +2) 上向き検索: + この方法ではディレクトリを指定すると、そのディレクトリから上に遡ってファイ + ルを探す。上向き探索の上限となるディレクトリが指定できる。それはパス (オプ + ション 'path') かファイル名 (オプション 'tags') の末尾に ';' で区切って指定 + する。複数のディレクトリを指定したいときはそれらを ';' で区切る。上限ディレ + クトリを指定したくないときは (ルートディレクトリまで上向き検索したいとき) + ';' だけを付ける。 > + /usr/include/sys;/usr +< で検索されるディレクトリは: > + /usr/include/sys + /usr/include + /usr +< + 相対パスを使うと上向き検索はVimのカレントディレクトリから始まる。相対パスの + 指定が ',/' で始まり、'cpoptions' にフラグ 'd' が含まれていないときはカレン + トファイルのディレクトリから始まる。 + + Vimのカレントパスが /u/user_x/work/release のときに > + :set path=include;/u/user_x +< とすると、コマンド |gf| でファイルを探す範囲は: > + /u/user_x/work/release/include + /u/user_x/work/include + /u/user_x/include + +3) 複合検索: + Vimのカレントパスが /u/user_x/work/release のときに > + set path=**;/u/user_x +< とすると、コマンド |gf| でファイルを探す範囲は: > + /u/user_x/work/release/** + /u/user_x/work/** + /u/user_x/** +< + 注 意 ! これはかなりの時間を食うかもしれない。'/u/user_x/**' は + '/u/user_x/work/**' や '/u/user_x/work/release/**' を含むからだ。つまり + '/u/user_x/work/release/**' は3回、'/u/user_x/work/**' は2回繰り返して検索 + される。 + + 上の例では > + :set path=**,/u/user_x/** +< とした方がよいだろう。これに含まれる範囲は > + /u/user_x/work/release/** + /u/user_x/** +< となり、同じディレクトリだが順番が違う。 + +============================================================================== +3. ダイアログ *edit-dialogs* + + *:confirm* *:conf* +:conf[irm] {command} {command} を実行する際、確認が必要ならばダイアログを表 + 示する。コマンド ":q", ":qa" や ":w" と共に使える + (":w" では読み取り専用属性を無視するかどうかを尋ねる)。 + +例: > + :confirm w foo +< ファイル "foo" が既に存在するときに確認を取る。 > + :confirm q +< バッファに修正個所があるときに確認を取る。 > + :confirm qa +< 修正個所があり、保存されていないバッファがあるとき、各バッファについて + 保存するか破棄するか尋ねる。「全て保存」や「全て破棄」という選択肢もあ + る。 + +常に ":confirm" を使いたいなら、代わりにオプション 'confirm' をオンにすること。 + + *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* +:bro[wse] {command} {command} の引数のためにファイル選択ダイアログを開く。 + 現在の所,コマンド |:e|, |:w|, |:r|, |saveas|, |:sp|, + |:mkexrc|, + |:mkvimrc| や |:mksession| と共に使える。 + {Vi mのWin32版,Motif、Athena、GTKやMacのGUI版でのみ利 + 用可能.} + |:browse|が使えない時ははエラーが表示される。|+browse| + の機能がなかったり、{command}がサポート対象外だった場 + 合、{command} はダイアログなしで実行される。 + +使用法については、例を幾つか見るのが一番分かりやすい. > + :browse e $vim/foo +< ファイル選択ダイアログをディレクトリ $vim/foo 内で開き、選択さ + れたファイルを編集する。 > + :browse e +< ファイル選択ダイアログを'browsedir'で指定されたディレクトリ内 + で開き、選択されたファイルを編集する。 > + :browse w +< ファイル選択ダイアログをカレントファイルのディレクトリ内で、カ + レントファイルの名前を既定値として開き、選択されたファイル名を + 使ってバッファを保存する。 > + :browse w C:/bar +< ファイル選択ダイアログをディレクトリ C:/bar 内で、カレントファ + イルの名前を既定値として開き、選択されたファイル名を使ってバッ + ファを保存する。 +オプション 'browsedir' も参照すること。 +Vimのファイル選択ダイアログをサポートしないヴァージョンでは、コマンドはそのま +ま実行される。 + + *browsefilter* +MS-WindowsのVimでは、ファイル選択ダイアログで使われるフィルタを指定できる。グ +ローバル変数 g:browsefilter かローカル変数 b:browsefilter を設定すると、フィル +タをグローバルにまたはバッファについてローカルに変更できる。この変数を指定する +際の書式は "{filter label}\t{pattern};{pattern}\n" で、{filter label} はコンボ +ボックス「ファイルの種類」に使われるテキスト、{pattern} はファイル名を選別する +フィルタである。';' で区切れば複数のパターンを指定できる。 + +Motif上のVimでは同じ書式が使えるが、実際には1番目のパターンだけが使われる +(Motifではパターンは1種類しか使えないが,それをユーザが編集できる)。 + +例えばダイアログでVim関連ファイルだけを表示するには、以下のコマンドを使う. > + + let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n" + +フィルタは,変数 b:browsefilter を設定することでバッファ毎に設定できる. +b:browsefilter はファイルタイプ別のプラグインで設定することが一番多いだろう. +するとファイルブラウザ・ダイアログには現在編集中のファイルのタイプに関連した候 +補が表示される.弊害:別の種類のファイルの編集が始め辛くなる.対策は,フィルタ +の最後の項目に "All Files\t*.*\n" を加え,ユーザが望みのファイルにアクセスでき +る道を残すことだ. + +============================================================================== +4. カレントディレクトリ *current-directory* + +コマンド |:cd| や |:lcd| を使って別のディレクトリに移ることができる.すると +(訳注: そのディレクトリ内のファイルを編集するとき) そのディレクトリ名をファイ +ル名の前に付けなくても良くなる.また違いは ":!ls" 等の外部コマンドの実行の際に +も現れる. + + *:cd* *E472* +:cd Unix以外のシステムでは: カレントディレクトリ名を表示す + る。Unixシステムでは: カレントディレクトリをホームディ + レクトリに変更する。全てのシステムで,カレントディレク + トリの表示にはコマンド |:pwd| が使える. + +:cd {path} カレントディレクトリを {path} に変更する. + {path} が相対的な指定なら,オプション 'cdpath' 内に列 + 挙されたディレクトリを基準に判断される.既に開かれたファ + イルについては,フルパスが把握されているので変化はない. + しかし引数リスト |arglist| 内のファイルの意味は変わる + かもしれない! + MS-DOSではアクティブなドライブも変更する. + カレントファイルのディレクトリに移るにはこうする. > + :cd %:h +< + *:cd-* *E186* +:cd - 前のカレントディレクトリ (前にコマンド ":cd {path}" で + 移った所) に移る。 {Vi にはない} + + *:chd* *:chdir* +:chd[ir] [path] コマンド |:cd| と同じ。 + + *:lc* *:lcd* +:lc[d] {path} コマンド |:cd| と似ているが,カレントウィンドウのカレ + ントディレクトリのみを変更する.別のウィンドウのカレン + トディレクトリに変化はない. {Vi にはない} + + *:lch* *:lchdir* +:lch[dir] |:lcd| と同じ. {Vi にはない} + + *:pw* *:pwd* *E187* +:pw[d] カレントディレクトリ名を表示する。 {Vi: pwdはない} + |getcwd()| も参照。 + +コマンド |:lcd| が使われない限り,全てのウィンドウは同じカレントディレクトリを +共有する.別のウィンドウに移るコマンドを使ってもカレントディレクトリについての +変化は何もない. +コマンド |:lcd| があるウィンドウ内で使われると,指定されたディレクトリがそのウィ +ンドウに対してのカレントウィンドウになる.コマンド |:lcd| が使われたことのない +ウィンドウはグローバルなカレントウィンドウを使い続ける.別のウィンドウに移った +ときは,カレントディレクトリは (訳注: 移動先に対して) 最後に指定されたローカル +なカレントディレクトリになる.何も指定されていなかったら,グローバルなカレント +ディレクトリが使われる. +コマンド |:cd| が使われると,カレントウィンドウは固有のローカルなカレントディ +レクトリを失い,グローバルなカレントディレクトリを使うようになる. + +|:cd| を使った後は,ファイルの読み書きにはフルパス名が使われる.ネットワーク接 +続されたファイルシステムではこれが問題を起こすことがある.フルパス名を使った結 +果,現在使用中のファイル名は同じファイルを指し続けることになる.例: ファイル +a:test とディレクトリ a:vim があるとき,":e test" ":cd vim" ":w" とするとファ +イル a:test を上書きし,a:vim/test には書き込まない.しかし ":w test" とすると +ファイル a:vim/test が書き込まれる.それは新しいファイル名が指定され,":cd" 以 +前のファイル名には言及してないからだ. + +============================================================================== +5. 引数リスト *argument-list* *arglist* + +Vimの開始時に複数のファイル名を与えると,それらは引数リストとして記憶される. +リスト内のファイルにはどれでも移動できる. + +これをコマンド |:buffers| で表示されるバッファリストと混同してはいけない.引数 +リストはViから既にあったが,バッファリストはVimで新たに導入された.引数リスト +内のファイルはバッファリストにも含まれる (コマンド ":bdel" で消去されない限り). + +この話題はユーザマニュアルの第 |07.2| 章で紹介されている. + +グローバルな引数リストが1個あり,これは既定では全てのウィンドウに使われる.ウィ +ンドウについてローカルな引数リストを新たに創ることもできる.|:arglocal| を参照. + +引数リストは以下のコマンド及び expression 用関数 |argc()| と |argv()| で利用で +きる.これらはみなカレントウィンドウの引数リストに対して働く. + + *:ar* *:args* +:ar[gs] 引数リストを表示する.カレントファイルは '[' ']' で挟 + まれて表示される. + +:ar[gs] [++opt] [+cmd] {arglist} *:args_f* + {arglist} を新たな引数リストとして定義し,そのうち最初 + のファイルの編集を始める.変更点があり,Vimがカレント + バッファを放棄 |abandon| したくないときには失敗する. + |++opt| と |+cmd| も参照。 + {Vi: ++opt はない} + +:ar[gs]! [++opt] [+cmd] {arglist} *:args_f!* + {arglist} を新たな引数リストとして定義し,そのうち最初 + のファイルの編集を始める.カレントバッファに対する変更 + 点は全て失われる. + |++opt| と |+cmd| も参照。 + {Vi: ++opt はない} + +:[count]arge[dit][!] [++opt] [+cmd] {name} *:arge* *:argedit* + 引数リストに {name} を追加し,その編集を始める. + {name} が既に引数リスト内にあるときは,その編集を始め + る. + これはコマンド |:argadd| を使い,次に |:edit| を使うの + と同じである. + Note 指定できるファイルは1個であり,|:edit| と同様ファ + イル名の中に空白が使えることに注意.[count] は + |:argadd| と同様に使われる. + カレントファイルが放棄 |abandon| できないときは '!' が + 必要になる. + |++opt| と |+cmd| も参照。 + {Vi にはない} + +:[count]arga[dd] {name} .. *:arga* *:argadd* + 引数リストに {name} を追加する. + [count] が省かれると {name} は引数リストの現在の項目の + 次に挿入される.指定されると [count] 番目の項目の次に + 挿入される.引数リストが "a b c" で "b" が現在の引数の + 場合のコマンドの結果一覧: + コマンド 新たな引数リスト ~ + :argadd x a b x c + :0argadd x x a b c + :1argadd x a x b c + :99argadd x a b c x + 重複検査はないので,1個のファイルを引数リストに2回加え + ることもできる. + 現在編集中のファイルは変更されない. + {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル + されたときのみ有効} + Note 次の方法が使えることに注意. > + :args ## x +< これは項目 "x" を追加し,新たなリストを並び替える. + +:argd[elete] {pattern} .. *:argd* *:argdelete* *E480* + {pattern} にマッチするファイルを引数リストから削除する. + {pattern} の意味はファイルパターンと同様なので, + |file-pattern| を参照.現在の項目を削除するには "%" が + 使える. + このコマンドは現在編集中のファイルが引数リストから削除 + されたときでも,それをそのままに保つ. + {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル + されたときのみ有効} + +:{range}argd[elete] 引数リストから {range} の範囲のファイルを削除する. + 範囲の上限が大きすぎるときは,最後の引数までが削除され + る.例: > + :10,1000argdel +< とすると10以降が削除され,1から9は残る. + {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル + されたときのみ有効} + + *:argu* *:argument* +:[count]argu[ment] [count] [++opt] [+cmd] + 引数リスト内で [count] 番目のファイルを編集する. + [count] が省かれると現在の項目を編集する.変更点があり, + Vimがカレントバッファを放棄 |abandon| したくないときに + は失敗する. + |++opt| と |+cmd| も参照。 + {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル + されたときのみ有効} + +:[count]argu[ment]! [count] [++opt] [+cmd] + 引数リスト内で [count] 番目のファイルを編集する.カレ + ントバッファに対するいかなる変更も失われる.[count] が + 省かれると現在の項目を編集する. + |++opt| と |+cmd| も参照。 + {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル + されたときのみ有効} + +:[count]n[ext] [++opt] [+cmd] *:n* *:ne* *:next* *E165* *E163* + 引数リストの中で [count] 個次のファイルを編集する. + 変更点があり,Vimがカレントバッファを放棄 |abandon| し + たくないときには失敗する. + |++opt| と |+cmd| も参照. {Vi: count や ++opt はない} + +:[count]n[ext]! [++opt] [+cmd] + 引数リストの中で [count] 個次のファイルを編集する.カ + レントバッファに対するいかなる変更も失われる. + |++opt| と |+cmd| も参照. + {Vi: count や ++opt はない} + +:n[ext] [++opt] [+cmd] {arglist} *:next_f* + コマンド |:args_f| と同じ. + +:n[ext]! [++opt] [+cmd] {arglist} + コマンド |:args_f!| と同じ. + +:[count]N[ext] [count] [++opt] [+cmd] *:Next* *:N* *E164* + 引数リストの中で [count] 個前のファイルを編集する。変 + 更点があり,Vimがカレントバッファを破棄 |abandon| した + くないときには失敗する。 + |++opt| と |+cmd| も参照。 {Vi: count や ++opt はない} + +:[count]N[ext]! [count] [++opt] [+cmd] + 引数リスト内で [count] 個前のファイルを編集する.カレ + ントバッファに対するいかなる変更も失われる. + |++opt| と |+cmd| も参照. {Vi: count や ++opt はない} + +:[count]prev[ious] [count] [++opt] [+cmd] *:prev* *:previous* + コマンド |:Next| と同じ. + |++opt| と |+cmd| も参照. {Vi: 幾つかのヴァージョンに + のみ存在} + + *:rew* *:rewind* +:rew[ind] [++opt] [+cmd] + 引数リスト内で最初のファイルの編集を始める.変更点があ + り,Vimがカレントバッファを放棄 |abandon| したくないと + きには失敗する. + |++opt| と |+cmd| も参照。 {Vi: ++opt はない} + +:rew[ind]! [++opt] [+cmd] + 引数リスト内で最初のファイルを編集する.カレントバッフ + ァに対するいかなる変更も失われる. + |++opt| と |+cmd| も参照. {Vi: ++opt はない} + + *:fir* *:first* +:fir[st][!] [++opt] [+cmd] + コマンド |:rewind| の別名. {Vi にはない} + + *:la* *:last* +:la[st] [++opt] [+cmd] + 引数リスト内で最後のファイルの編集を始める.変更点があ + り,Vimがカレントバッファを放棄 |abandon| したくないと + きには失敗する. + |++opt| と |+cmd| も参照。 {Vi にはない} + +:la[st]! [++opt] [+cmd] + 引数リスト内で最初のファイルを編集する.カレントバッフ + ァに対するいかなる変更も失われる. + |++opt| と |+cmd| も参照。 {Vi にはない} + + *:wn* *:wnext* +:[count]wn[ext] [++opt] [+cmd] + カレントファイルを書き込み,引数リスト内で [count] 個 + 次のファイルの編集を始める. + |++opt| と |+cmd| も参照. {Vi にはない} + +:[count]wn[ext] [++opt] [+cmd] {file} + カレントファイルを {file} に書き込み,引数リスト内で + [count] 個次のファイルの編集を始める.ただし {file} が + 既に存在し,オプション 'writeany' がオフのときは失敗す + る. + |++opt| と |+cmd| も参照. {Vi にはない} + +:[count]wn[ext]! [++opt] [+cmd] {file} + カレントファイルを {file} に書き込み,引数リスト内で + [count] 個次のファイルの編集を始める. + |++opt| と |+cmd| も参照. {Vi にはない} + +:[count]wN[ext][!] [++opt] [+cmd] [file] *:wN* *:wNext* +:[count]wp[revous][!] [++opt] [+cmd] [file] *:wp* *:wprevious* + コマンド |:wnext| と同じだが,次でなく前のファイルに移 + る. {Vi にはない} + +上のコマンドの [count] の既定値は1である。[count] を2回使えるコマンドもある。 +最後 (最も右) のものが使われる。 + +引数 [+cmd] が存在しないならば、カーソルはそのファイルに対して最後に認識された +位置に置かれる。オプション 'startofline' がオンのときは、カーソルは行の最初の +非空白文字に置かれ、オフのときは最後に認識された列が使われる。最後に認識された +カーソル位置がないときは、カーソルは最初の行 (Exモードでは最後の行) に置かれる。 + +引数リスト内のワイルドカードは展開され、ファイル名は並び替えられる。だからCの +ソースファイルを全て編集するには,コマンド "vim *.c" が使える。 Vimの中でコマ +ンド ":n *.c" としても同じである。Unixではバッククォートも使える。例: > + :n `find . -name \\*.c -print` +アスタリスクの前の '\' は、"*.c" がプログラム find を実行する前にシェルで展開 +されるのを防ぐために必要となる。 + + *arglist-position* +引数リストがあるときは、ウィンドウのタイトル (それがあって、オプション 'title' +オンならば) やコマンド CTRL-G で出るファイル・メッセージで編集しているファイル +を知ることができる。次のようなものが表示されるだろう。 + (file 4 of 11) +オプション 'shortmess' の値が 'f' を含んでいるときは以下のようになる。 + (4 of 11) +実際は引数リスト内の現在の位置でないファイルを編集しているならば、以下のように +なる。 + (file (4) of 11) +これは、引数リストの中の4番目にいるが、編集中のファイルは引数リストの中の4番 +目でないことを意味する。これは ":e file" をするときに起こる。 + + +ローカルな引数リスト + +{Vi にはない} +{Vi mが |+windows| 機能と |+listcmds| 機能付きでコンパイルされたときのみ有効} + + *:arglocal* +:argl[ocal] グローバルな引数リストのローカルなコピーを作る. + 別のファイルの編集は始めない. + +:argl[ocal][!] [++opt] [+cmd] {arglist} + カレントウィンドウについてローカルな,新たな引数リスト + を定義する. + ウィンドウが1個のときは |:args_f| と同じである. + + *:argglobal* +:argg[lobal] カレントウィンドウにグローバルな引数リストを使う. + 別のファイルの編集は始めない. + +:argg[lobal][!] [++opt] [+cmd] {arglist} + カレントウィンドウにグローバルな引数リストを使う. + コマンド |:args_f| と同様,グローバルな引数リストを新 + たに定義する.グローバルな引数リストを使っているウィン + ドウは全てこの新しいリストを参照するようになる. + +複数の引数リストが存在可能であり,それらはウィンドウ同士で共有できる.共有され +ているときは,あるウィンドウ内で引数リストに変更を加えると,別のウィンドウの引 +数リストも影響を受ける. + +ウィンドウが分割されると,新しいウィンドウはカレントウィンドウから引数リストを +受け継ぐ.すると2個のウィンドウは,片方でコマンド |:argslocal| か +|:argsglobal| を使って別の引数リストを使うようになるまで,そのリストを共有する +ことになる. + + +引数リストを使う + + *:argdo* +:argdo[!] {cmd} 引数リスト内の全てのファイルで {cmd} を実行する. + 以下と同様の動作になる. > + :rewind + :{cmd} + :next + :{cmd} + etc. +< カレントファイルを放棄 |abandon| できず,'!' も付けら + れていないときは,実行は失敗する.どれかのファイル内で + エラーが検出されると,引数リスト内の以降のファイルには + 進まない. + 引数リスト末尾のファイル (またはエラーの起きたファイル) + がカレントファイルになる. + {cmd} の中では '|' で複数のコマンドを連結できる. + {cmd} は引数リストに変更を加えてはならない. + Note: このコマンドの実行中,オプション 'eventignore' + で autocommand のイヴェント Syntax を指定することでそ + れを無効化できる.こうすると各ファイルの処理がかなり高 + 速になる. + {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル + されたときのみ有効} + コマンド |:windo| や |:bufdo| も参照. + +例: > + :args *.c + :argdo set ff=unix | update +こうするとオプション 'fileformat' の値を "unix" に設定し,変更があったファイル +を保存する.それが全ての *.c ファイルについて行われる. + +例: > + :args *.[ch] + :argdo %s/\<my_foo\>/My_Foo/ge | update +こうすると全ての *.c ファイルと *.h ファイルで単語 "my_foo" を "My_Foo" に変え +る.コマンド ":substitute" でフラグ "e" を使って "my_foo" という単語の使われて +いないファイルでエラーが起きるのを防いでいる.コマンド ":update" は変更のあっ +たファイルのみを保存する. + +============================================================================== +6. 書き込み *writing* *save-file* + +Note: オプション 'write' がオフのときは,どのファイルも書き込めないことに注意. + + *:w* *:write* + *E502* *E503* *E504* *E505* + *E512* *E514* *E667* +:w[rite] バッファ全体をカレントファイルに書き込む.これはファイ + ルに対する変更点を保存するときの普通の方法である. + オプション 'readonly' がオンであるかファイルに書き込め + ない理由が何かあるときには実行に失敗する. + +:w[rite]! ":write" と似ているが,'readonly' がオンであったり書き + 込みが拒否される理由があっても無理矢理書き込みを行う. + Note: これはファイルの権限や所属を変更したり,(シンボ + リック) リンクを途切れさせるかもしれないので注意.それ + を避けるには 'cpoptions' にフラグ 'W' を追加すること. + +:[range]w[rite][!] 指定された範囲の行をカレントファイルに書き出す.これは + 普通の操作ではない.ファイルがバッファ内の全ての行を + 含むようにならないからだ. + + *:w_f* *:write_f* +:[range]w[rite] {file} 指定された範囲の行をファイル {file} に書き出す.ただし + それが既に存在し,かつオプション 'writeany' がオフのと + きは失敗する. + + *:w!* +:[range]w[rite]! {file} 指定された範囲の行をファイル {file} に書き出す.既存の + ファイルは上書きされる. + + *:w_a* *:write_a* *E494* +:[range]w[rite][!] >> 指定された範囲の行をカレントファイルに追加する. + +:[range]w[rite][!] >> {file} + 指定された範囲の行をファイル {file} に追加する.'!' を + 付けるとそのファイルがまだ存在しなくても書き込みを行う. + + *:w_c* *:write_c* +:[range]w[rite] !{cmd} [range] の行を標準入力として {cmd} を実行する ('!' の + 前の空白に注意).{cmd} は ":!{cmd}" のように実行され, + 全ての '!' は前回のコマンドに置き換えられる |:!|. + +コマンド ":w" での [range] の既定値はバッファ全体 (1,$) である.":w" にファイ +ル名が与えられるとそれが代替ファイルになる.これは例えば書き込みに失敗した後に +":w #" でもう一度試したいときに使える.オプション 'cpoptions' からフラグ 'A' +を取り除くとこれを無効化できる. + + *:sav* *:saveas* +:sav[eas][!] {file} カレントファイルをファイル名 {file} として保存し,カレ + ントバッファのファイル名を {file} に変える.それまでの + カレントファイルの名前は代替ファイルの名前になる. + 既存のファイルを上書きするには [!] が必要になる. + {Vi にはない} + + *:up* *:update* +:[range]up[date][!] [>>] [file] + ":write" と似ているが,バッファに変更点があるときのみ + 書き込みを行う. {Vi にはない} + + +複数バッファでの書き込み *buffer-write* + + *:wa* *:wall* +:wa[ll] 変更点のあるバッファを全て書き込む.ファイル名を持たな + いバッファや読み込み専用のバッファは書き込まれない. + {Vi にはない} + +:wa[ll]! 変更点のあるバッファを,読み込み専用であっても全て書き + 込む.ファイル名を持たないバッファは書き込まれない. + {Vi にはない} + + +Vimは別の場所で変更を受けたファイルを上書きしようとしたときには警告する. +|timestamp| を参照. + + *backup* *E207* *E506* *E507* *E508* *E509* *E510* +オプション 'backup', 'writebackup' または 'patchmode' がオンのときに既存のファ +イルに (追加でなく) 書き込もうとすると,元のファイルのバックアップが作られる. +ファイルは元のコピーかリネームしたものである ('backupcopy' を参照).ファイルの +書き込みに成功したとき 'writebackup' がオンで 'backup' がオフだと,バックアッ +プファイルは削除される.'patchmode' がオンのときはバックアップファイルはリネー +ムされるかも知れない. + + *backup-table* +'backup' 'writebackup' 動作 ~ + off off バックアップは作られない + off on カレントファイルをバックアップし,後で消去する (既定) + on off 古いバックアップを消去し,カレントファイルをバックアッ + プする + on on 古いバックアップを消去し,カレントファイルをバックアッ + プする + +'backupskip' に指定したパターンが書き込まれるファイルの名前にマッチしたときは, +バックアップファイルは作られない.その場合 'backup' と 'writebackup' の値は無 +視される. + +'backup' がオンのときは,古いバックアップファイル (新しいバックアップファイル +と同名) は削除される.'backup' がオフだが 'writebackup' がオンのときは,既存の +バックアップファイルは削除されない.ファイルの書き込み中に作られたバックアップ +ファイルは別の名前になる. + +ファイルシステムによってはクラッシュで新しいファイルとバックアップを両方失うこ +ともあり得る (新しいファイルは存在はしても中身が滅茶苦茶になっていたり).その +場合は復帰機能を試すこと.スワップファイルがまだディスクに残っているかもしれな +いからだ. |:recover| + +オプション 'backupdir' で指定されたディレクトリはバックアップファイルをしまう +のに使われる. (既定値: 書き込まれたファイルと同じディレクトリ) + +バックアップが,元のファイルのコピーである新規のファイルになるか,元のファイル +がリネームされたものになるかは,オプション 'backupcopy' で決まる.コピーが作ら +れるのがいつでファイルがリネームされるのがいつかについてはその箇所を参照. + +バックアップファイルの生成に失敗すると,書き込みは行われない.それでも書き込み +たいときにはコマンドに '!' を追加すること. + + *write-readonly* +オプション 'cpoptions' の値にフラグ 'W' が含まれるときは,Vimは読み込み専用フ +ァイルの上書きを拒否する.'W' が含まれないと,システムが許可すれば (ディレクト +リは書き込み可能でなければならない) ":w!" は読込専用ファイルを上書きする。 + + *write-fail* +新ファイルの書き込みに失敗したときは、変更点と元のファイルを同時に失わないよう +注意しなければならない。バックアップファイルがないときに書き込みに失敗すると、 +その時点で元のファイルはなくなっているのだ!ファイルを書き出すまでVIMを終了し +てはいけない!バックアップが作られていたら、それが元のファイルの所に戻される +(可能ならば)。Vimを終了して変更点が失われても、大抵は元のファイルはそこに残っ +ている。Vimが元のファイルを戻すのに失敗すると、元のファイルが失われた旨のエ +ラーメッセージが出る。 + + *DOS-format-write* +オプション 'fileformat' の値が "dos" のときは,<EOL> には <CR> <NL> が使われる +.これは MS-DOS, Win32とOS/2での既定値である.その他のシステムでは +"[dos format]" というメッセージが表示され,普通でない <EOL> が使われていること +を知らせてくれる. + *Unix-format-write* +'fileformat' の値が "unix" のときは,<EOL> には <NL> が使われる.MS-DOS, Win32 +とOS/2では "[unix format]" というメッセージが表示される. + *Mac-format-write* +'fileformat' の値が "mac" のときは,<EOL> には <CR> が使われる.Mac以外のシス +テムでは "[mac format]" というメッセージが表示される. + +|file-formats| やオプション 'fileformat' 及び 'fileformats' も参照. + + *ACL* +ACLは Access Control List を表す.これはファイルのアクセス権を制御するための先 +進的な手段である.新しいMS-WindowsとUnixシステムで使われるが,ファイルシステム +がそれをサポートするときのみである. +Vimはファイルを書き込むときにACL情報を保とうとする.バックアップファイルは元の +ファイルのACL情報を受け継ぐ. +ACL情報は (ファイルを開くときに) ファイルが読込専用かどうか調べるのにも使われる. + + *read-only-share* +MS-Windowsがネットワーク上でドライブを共有するとき,そこは読込専用にすることが +できる.つまりファイルに読込専用の属性がなく,NCネットワーク共有ドライブ上の +ACL設定が書き込みを許可していても,そのファイルには書き込みができない.Win32プ +ラットフォーム上のVimは読込専用のネットワークドライブを判別し,ファイルを読込 +専用とマークする.そのファイルは |:write| で上書きできない. + + *write-device* +ファイル名が実際はデヴァイス名のとき,Vimはバックアップを作ろうとはしない (無 +理な話だ).デヴァイスは既に存在するので,保存にはフラグ "!" が必要である. +Unixでの例: > + :w! /dev/lpt0 +MS-DOSやMS-Windowsでの例: > + :w! lpt0 +Unixでは,ファイル名が通常ファイルやディレクトリを指していないときにデヴァイス +と判断される.VimはFifo及び名前付きパイプもデヴァイスと判断する. +MS-DOSとMS-Windowsでは,デヴァイスは名前から判断される: + AUX + CON + CLOCK$ + NUL + PRN + COMn n=1,2,3... 等 + LPTn n=1,2,3... 等 +ファイル名は大文字でも小文字でもよい. + +============================================================================== +7. 書き込みと終了 *write-quit* + + *:q* *:quit* +:q[uit] カレントウィンドウを閉じる.最後のウィンドウで使うとを + Vimを終了させる.変更点があってVimがカレントバッファを + 放棄 |abandon| しようとしないときや,引数リスト内で末 + 尾にないファイルを編集しているときには失敗する. + +:conf[irm] q[uit] 終了だが,変更点があるときや,引数リスト内で末尾にない + ファイルを編集しているときにはプロンプトを表示する. + コマンド |:confirm| やオプション 'confirm' を参照. + {Vi にはない} + +:q[uit]! 可視なバッファに変更点があっても書き込みをせずに終了す + る.隠れバッファに変更点があると終了しない.必ず終了す + るにはコマンド |:qall!| を使うこと. + +:cq[uit] 書き込みをせずに必ず終了し,エラーコードを返す.コマン + ド |:cq| を参照.Manx の QuickFix モードで使われる + (|quickfix| を参照). {Vi にはない} + + *:wq* +:wq カレントファイルを書き込んでVimを終了する.ファイルが + 読込専用であるときや,バッファに名前が付いていないとき + には書き込みに失敗する.引数リスト内の末尾のファイルが + まだ編集されていないときには終了に失敗する. + +:wq! カレントファイルを書き込んでVimを終了する.バッファに + 名前が付いていないときには書き込みに失敗する. + +:wq {file} {file} に書き込んでVimを終了する.引数リスト内の末尾の + ファイルがまだ編集されていないときには終了に失敗する. + +:wq! {file} {file} に書き込んでVimを終了する. + +:[range]wq[!] [file] 上と同様だが,[range] の範囲内の行のみを書き込む. + + *:x* *:xit* +:[range]x[it][!] [file] + |:wq| と似ているが,変更点があるときのみ書き込む. + オプション 'hidden' がオンで複数のウィンドウが存在する + とき,ファイルを書き込んだ後はカレントバッファは隠れバ + ッファになる. + + *:exi* *:exit* +:[range]exi[t][!] [file] + |:xit| と同様. + + *ZZ* +ZZ 変更点があればカレントファイルを書き込み,Vimを終了す + る (コマンド |:x| と同様). Note: カレントファイルを複 + 数のウィンドウで開いているときは,ファイルに変更点があ + れば書き込まれ,そしてウィンドウが閉じられることに注意. + + *ZQ* +ZQ 変更点を確かめずに終了する (コマンド |:q!| と同様). + {Vi にはない} + +複数のウィンドウとバッファ *window-exit* + + *:qa* *:qall* +:qa[ll] 変更点のあるバッファがない限り,Vimを終了する (変更点のある次 + のバッファに移動するにはコマンド |:bmod| を使うこと). + オプション 'autowriteall' がオンのときは,|:wqall| と同様に変 + 更点のあるバッファが全て書き込まれる. {Vi にはない} + +:conf[irm] qa[ll] + Vimを終了する.変更点のあるバッファがあるときはプロンプトを表 + 示する.コマンド |:confirm| を参照すること. {Vi にはない} + +:qa[ll]! Vimを終了する.バッファの変更点は全て失われる. {Vi にはない} + + *:quita* *:quitall* +:quita[ll][!] コマンド |:qall| と同様. {Vi にはない} + +:wqa[ll] *:wqa* *:wqall* *:xa* *:xall* +:xa[ll] 変更点のあるバッファを全て書き込み,Vimを終了する.ファイル名 + のないバッファや読込専用または何らかの理由で書き込めないバッフ + ァがあるときは,Vimを終了しない. {Vi にはない} + +:conf[irm] wqa[ll] +:conf[irm] xa[ll] + 変更点のあるバッファを全て書き込み,Vimを終了する.読込専用ま + たは何らかの理由で書き込めないバッファがあるときは,プロンプト + を表示する.コマンド |:confirm| を参照. {Vi にはない} + +:wqa[ll]! +:xa[ll]! 変更点のあるバッファを,読込専用であっても全て書き込み,Vimを + 終了する.ファイル名のないバッファや何らかの理由で書き込めない + バッファがあるときは,Vimを終了しない. {Vi にはない} + +============================================================================== +8. バイナリファイルの編集 *edit-binary* + +Vimはテキストファイルの編集のために造られたが、バイナリファイルを編集すること +もできる。Vimの引数 |-b| (バイナリ"binary"の'b') はVimにファイル入出力をバイナ +リモードで行わせ、バイナリファイルの編集のためにいくつかのオプションを設定する +('binary' をオン、'textwidth' を0、'modeline' をオフ、'expandtab' をオフにす +る).オプション 'binary' をオンにすることも同じ効果を持つ.これはファイルの読 +み込み前にするということを忘れてはならない。 + +バイナリファイルを編集するときに忘れてはならないことがいくつかある: +- 実行可能ファイルを編集するときには、文字数が変わってはならない.テキストを変 + 更するには "R" か "r" だけを使用すること."x" やバックスペースで文字を削除し + てはならない。 +- オプション 'textwidth' の値を0に設定する。そうしないと行が不意に2つに分割さ + れてしまう。 +- <EOL> の数があまり多くないときは、一行は非常に長くなる。スクリーンに収まりき + らない行を編集したいならば、オプション 'wrap' をオフにすること.その時には水 + 平スクロールが使われる。行が余りにも長いならば (Amigaでは約32767文字以上、 + 32bitシステムではそれ以上、|limits| を参照)、その行は編集できない。ファイル + を読み込むときに、その行は分割される。ファイルを読み込むときに + "out of memory" エラーが出る可能性もある。 +- ファイルを読み込む前にオプション 'binary' がオンになっていることを確かめるこ + と。さもないと <CR> <NL> と <NL> の両方が行末とみなされ、ファイルが保存され + るときに <NL> が <CR> <NL> で置き換えられてしまう. +- <Nul> 文字はスクリーンでは ^@ として表示される.それは "CTRL-V CTRL-@" か + "CTRL-V 000" で入力できる。{Vi ファイル内で <Nul> 文字を扱えない} +- <NL> 文字を挿入すると,行が分割される.バッファをファイルに保存するときには、 + <NL> が <EOL> として保存される。 +- ファイルの終わりに <EOL> が一つもないとき、通常Vimはそれを追加する。これを防 + ぐにはオプション 'binary' をオンにすること。最後の <EOL> を追加したいならば、 + オプション 'endofline' をオンにする。最後の行に <EOL> があったかどうかを知る + ためにこのオプションの値を見てもよい (テキストからは判断できない). + +============================================================================== +9. 暗号化 *encryption* + +Vimはファイルを暗号化して保存し、再び読み取ることができる。暗号化されたテキス +トは正しい鍵がないと読むことができない。 + +Note: スワップファイルとメモリ内のテキストは暗号化されないので注意.ユーザがテ +キストを編集している間,システム管理者はそれを見ることができるだろう。 +テキストを ":!filter" や ":w !command" によってフィルタに通すときは,それは暗 +号化されておらず,他人から読まれることもありうる. + +警告: 鍵の入力時にタイプミスをしてファイルを保存し,Vimを終了すると,テキスト +は失われてしまう! + +暗号化を利用する通常の方法は、コマンド |:X| を使うことだ.これは鍵を入力するよ +う求める.次の保存コマンドでファイルを暗号化するためにその鍵が使われる.後で同 +じファイルを編集するときは、Vimは鍵の入力を求める。保存に使われたものと同じ鍵 +を打ち込むと、再びテキストを読み込むことができる.間違ったキーを使うと,テキス +トはめちゃめちゃになって表示される. + + *:X* +:X 暗号化キーを入力するよう求める。ディスプレイを見ている誰かが鍵を見ない + ように、打ち込むときには実際のテキストは表示されない. + 打ち込まれた鍵はオプション 'key' に保存される.これはファイルを書き込 + むときの暗号化に使われる.Vimの引数 |-x| も参照。 + +オプション 'key' の値はテキストが書き込まれるときに使われる.値が空でないとき、 +書き込まれたファイルは,その値を鍵として暗号化されている。Vimがファイルが暗号 +化されていることを認識できるよう,ファイル先頭に特殊な数が付加される. + +暗号化を無効にするには、オプション 'key' に空の値を入れてリセットする. > + :set key= + +暗号化されているファイルを読み込んだときにこのオプションの値がが空でないと,そ +の値が復号化に使われる.値が空のときは,鍵の入力を求められる。鍵を入力しないと、 +ファイルは復号化されずに編集される。 + +異なる鍵で暗号化したファイルの読み込みを始めたいときは、オプション 'key' の値 +に空文字列を設定すること.するとVimが新しい値の入力を求める.値の入力にコマン +ド ":set" を使ってはならない.他の人が肩越しにコマンドの入力を読むことができる +からだ. + +オプション 'key' の値は秘密であることになっているので、その値は決して見られて +はならない.vimrcファイル内でこのオプションを設定してはいけない. + +"/etc/magic", "/usr/share/misc/magic" 等,システムの持っている "magic" ファイ +ルならどれでもよいが、下の行を追加すると,暗号化されたファイルがコマンド +"file" に認識されるようになる. > + 0 string VimCrypt~ Vim encrypted file + +Note: +- オプション 'charconvert' でコード変換をしているときには暗号化はできない. +- コピーや削除したテキストは番号付きレジスタに格納される。レジスタの内容は + .viminfoファイル内に保存できるが,ここからは読み出せるかもしれない.安全のた + めオプション 'viminfo' を変更すること. +- コンピュータからしばらく離れているときには誰かがVimにコマンドを入力できるが、 + 鍵を入手できるようになっていてはいけない。 +- キーを入力しているときにタイプミスをすると、テキストを復元できなくなってしま + うだろう! +- コマンド ":set key=value" で鍵を入力すると,それは履歴の中に保存され, + viminfoファイル内に 'key' の値を晒すことになる. +- 100パーセント安全ということは決してない。Vimの暗号化は強度についてはテストさ + れていない。 +- 使われているアルゴリズムは破られやすい。4文字の鍵なら約1時間以内、6文字の鍵 + なら1日以内で破れる (Pentium 133 PCで)。これにはファイル内に必ず現れるはずの + テキストをいくつか知っていることが必要である。暗号破りの熟練者はどのような鍵 + であっても破ることができる。 + テキストが復号化されたということは鍵も明らかになったということで,同じ鍵で暗 + 号化されたテキストも復号化されうる. +- Pkzipは同じ暗号化を用いており、合衆国政府はその輸出に対して異議を唱えていな + い。Pkzipの公開ファイル APPNOTE.TXT はこのアルゴリズムを詳細に記述している。 +- Vimはオランダに起源を持つ.そこがソースの出処である。従って、暗号化コードは + アメリカ合衆国から輸出されてはいない。 + +============================================================================== +10. タイムスタンプ *timestamp* *timestamps* + +Vimは編集を始めたときのファイルの修正タイムスタンプを覚えている.これは同じフ +ァイルの別のヴァージョンを (知らずに) 作ってしまうのを防ぐためである. + +シェルコマンド (|:!cmd| |suspend| |:read!| |K|) の実行後,ウィンドウ内の全ての +バッファでタイムスタンプが比較される.Vimは変更を受けたファイルに関して,イヴェ +ント |FileChangedShell| に関連付けられた任意の自動コマンドを実行するか,警告を +表示する.GUIを使っているときは,それらはVimに入力フォーカスが戻ってきたときに +行われる. + + *E321* *E462* +ファイルがVimの外部で変更を受けたときに自動的に読み直して欲しいなら,オプショ +ン 'autoread' をオンにすること.しかしこれはファイルを書き込んだ時点では機能し +ない.ファイルがVim内部で変更されていないときだけだ. + +Note イヴェント |FileChangedShell| に自動コマンドが定義されていると,警告メッ +セージやプロンプトは表示されない.その自動コマンドが対処するものとされている. + +ディレクトリに関する警告はない (例えば |file-explorer| で).しかし新しいファイ +ルの編集を始めた後,同名のディレクトリが作られたときには警告される. + +ファイルのタイムスタンプが変更されたことにVimが気付いたとき,そのファイルがバ +ッファ内で編集されているがまだ変更されていないならば,Vimはファイルの中身が同 +じかどうかを調べる.このためにはファイルを読み直し,テキストを比較する (隠れバ +ッファに読み込むが,これはすぐに削除される).内容が同じならば警告は出ない. + +自動警告では足りないと思ったならば,以下のコマンドが使える. + + *:checkt* *:checktime* +:checkt[ime] Vimの外部で変更を受けたバッファがないかどうか調べる. + これはファイルのヴァージョンが2個になってしまわないか + どうかを調べ,警告する. + これが autocommand や ":global" コマンドから呼ばれたと + きや,直に打ち込まれたのではないときは,実際に調べるの + は副作用 (ファイルの再読み込み) が無害となる時点まで延 + 期される. + 読み込まれているバッファそれぞれについて関連付けられた + ファイルが変更を受けていないか調べる.変更を受けていた + ら, Vimは対処動作を行う.すなわちバッファに変更点が無 + く,かつオプション 'autoread' がオンのときは,バッファ + は読み直される.そうでなければ,ファイルを読み直すかど + うかの選択肢が与えられる.ファイルが削除されていたら, + エラーメッセージが表示される. + 以前には存在しなかったファイルが存在していたら,エラー + メッセージが表示される. + 一度ファイルが調べられるとタイムスタンプ情報が更新され, + 再び警告されることは無い. + +:[N]checkt[ime] {filename} +:[N]checkt[ime] [N] + 特定のバッファのタイムスタンプを調べる.バッファの指定 + は名前,番号またはパターンでもよい. + + +書き込み前にはタイムスタンプが調べられる.もし変更されていたら,Vimはそのファ +イルを本当に上書きするかどうかを尋ねる. + + 警告: 読込んだ後にファイルに変更がありました!!! + 本当に上書きしますか (y/n)? + +'y' を打ち込むと,Vimは続けて書き込みを行う.'n' を打ち込むと,書き込みは中止 +される.コマンド ":wq" や "ZZ" を使った場合にはVimは終了せず,書き込む機会が再 +び得られる. + +普通,メッセージは編集セッションが始まった後に誰かがファイルに書き込んだことを +示している.それは別の人物かもしれない.この場合,あなたの行った変更とその人物 +が行った変更が合併されるべきか調べたいことだろう.ファイルを別の名前で書き込み, +差分を調べること (これにはプログラム "diff" がつかえる). + +別の編集セッションや別のコマンドで (例えばフィルタコマンド) そのファイルに自分 +自身で変更を加えたということもあり得る.その場合,どちらのヴァージョンを保管し +たいかは自分でお分かりだろう. + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/gui_w32.jax b/ja/gui_w32.jax new file mode 100644 index 000000000..192c7e300 --- /dev/null +++ b/ja/gui_w32.jax @@ -0,0 +1,484 @@ +COMMENT: GUI機能:Windows 9x/Me/NT/2K/XP +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*gui_w32.txt* For Vim version 6.3. Last change: 2004 May 03 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +Win32でのVimのグラフィカルユーザインターフェース *gui-w32* *win32-gui* + +1. GUIを始める |gui-w32-start| +2. デフォルトエディタVim |vim-default-editor| +3. クリップボードを使う |gui-clipboard| +4. シェルコマンド |gui-shell-win32| +5. 特別な色 |win32-colors| +6. ダイアログとブラウズ |gui-w32-dialogs| +7. コマンドライン引数 |gui-w32-cmdargs| +8. その他色々 |gui-w32-various| + +その他の関連した文章: +|gui.txt| GUIの一般的な要素。 +|os_win32.txt| Win32特有の要素。 + +{Vi にはWindowsのGUIは無い} + +============================================================================== +1. GUIを始める *gui-w32-start* + +Win32のGUIバージョンは、どんな名前で起動されたかなんておかまい無しに、いつも +GUIでスタートする。 + +GUIは常にWindowsのサブシステムとして実行される。殆どのシェルはVimを起動した直 +後にコマンドプロンプトへ自動的に復帰する。そうでなかったら、"start"コマンドを +使うと良い: > + start gvim [options] file .. + +Note: 全てのフォント(太字、斜体)は同じ大きさでなければならない!!!。そうしない +場合、文字が欠けたり表示がゴチャゴチャになったりしてしまうだろう。Vimはフォン +トの大きさを検査していない。画面上でのピクセルサイズが同じでなければならない。 +同じポイントサイズのフォントでも、同じピクセルサイズのフォントだとは限らないこ +とに注意!。加えてフォントの位置情報(アセントとディセント)も同じでなければなら +ない。 + +Win32 GUIではメニューが拡張されている: "編集/フォント設定"。ウィンドウズの標準 +フォントセレクトダイアログが起動される。 + +メニューの高さ設定は、Win32 GUIでは動作しない。 + + *gui-win32-maximized* +Vimのウィンドウを最大化した状態で起動したいのならば、vimrcかgvimrcに次のコマン +ドを書き加える: > + au GUIEnter * simalt ~x + + *gui-w32s* +Win32sかWindows 3.1もしくは3.11で動くgvim.exeも存在する。|win32s|参照。 + +============================================================================== +2. デフォルトエディタVim *vim-default-editor* + +Vimをあるファイルタイプのデフォルトエディタにするには: +1. Windowsのエクスプローラを起動する +2. ツール/フォルダオプション -> ファイルタイプ (W2K + IE5.5) +3. Vimを使用したい全てのファイルタイプに対して、gvimのパスを設定する。(拡張子 + の無いファイルタイプに対しては、ファイルタイプを指定するフィールドに3つのス + ペースを置くことで対応できる) + アクションの"open"に: > + gvim "%1" +< ファイル名にスペースを含むファイルを正しく扱うためにクォート(")が必要。 + こういう方法もある: > + gvim "%L" +< これにより幾つかの状況で、短い形式のファイル名(8.3形式)を避けることができ + る。しかし、常に働くわけではない。 + +ファイルをダブルクリックしてVimで開いた時には、Vimはそのファイルのディレクトリ +へ移動する。 + +Vimを全画面で起動したい時には、openのアクションとして次のものを使用する: > + gvim -c "simalt ~x" "%1" + +新たにVimを違うディレクトリに置いた時(新しいバージョンを入手した時など)の、も +う一つの方法は: +1. Vimを使って開きたいファイルを選ぶ +2. <Shift-F10>を押す +3. メニューから"アプリケーションから開く"を選択する +4. "その他"をクリック +5. Vimの新しい位置を参照して、開くをクリックする。 +6. "いつもこのアプリケーションを使う"をチェックする +7. OKをクリック + + *send-to-menu* *sendto* +Vimを"送る"メニューに追加することもできる: +You can also install Vim in the "Send To" menu: +1. Windowsのエクスプローラを起動する。 +2. "送る"のためのディレクトリに移動する: + Windows 95: %windir%\sendto (e.g. "c:\windows\sendto") + Windows NT: %windir%\profiles\%user%\sendto (e.g. + "c:\winnt\profiles\mattha\sendto"). +3. ファイル表示枠の上で右クリックして新規作成→ショートカット。 +4. ショートカットウィザードに従ってVIM/GVIMへのフルパスを指定。 + +Vimにファイルを送ると、Vimはファイルのあるディレクトリに移動する。しかし長い +ディレクトリ名は短い(MS-DOS形式)で表示されてしまうことに注意。これはWindowsの" +送る"の仕組みによる制限である。 + + *notepad* +notepad.exe(メモ帳)をgvim.exeに置き換えてしまうこともできるが、これには副作用 +もある。いくつかのプログラムはnotepad.exeに依存していて、例えばファイルを印刷 +するために"notepad -p"を使っているからです。メモ帳(notepad)はそのままにしてお +いて、Vimを起動するためのほかの方法を使ったほうが良い。 + + *win32-popup-menu* +もっと抜本的なアプローチは、右マウスボタンメニューに"Edit with Vim"という項目 +を追加するものである。これを使うとあらゆるファイルをVimで編集できるようにな +る。 + +これは上述のファイルの関連付けと共存することができる。ファイルの関連付けは、 +Vimで開始することを「デフォルトのアクション」にしてしまう点が違う。"Edit with +Vim"メニュー項目を使うと、ダブルクリックで開ける既に存在するファイルの関連付け +はそのままにして、したい時にはいつでもVimでファイルを編集することができる。例 +えば、"*.mak"はmakeプログラムに関連付けることができる。この場合、そのファイル +をダブルクリックすればmakefileが実行されるし、"Edit with Vim"を選べばmakefile +を編集することができる。 + +どんなファイルでも選択し、右クリックで"Edit with gvim"と呼ばれるメニューオプ +ションを表示させることができる。このメニューオプションを選択すると、選択した +ファイルがgvimによって開かれる。複数のファイルを選択した場合には、二つのメ +ニューオプションが提示されるだろう: +"Edit with multiple gvims" -- 1つのファイルにつき1つのgvimが起動される +"Edit with single gvim" -- 選んだ全てのファイルが1つのgvimで開かれる +さらに、もしもすでにgvimが起動しているなら: +"Edit with existing gvim -- すでに起動しているgvimでそのファイルの編集を開 + 始する。 + + *install-registry* +"install.exe"プログラムを使用すれば、簡単に"Edit with Vim"メニュー項目を追加す +ることができる。これはレジストリに幾つかの項目を書き加える。 + +同じことを手動で行うことも出来る。これは非常に複雑である!。できればinstall.exe +を使うことをオススメする。 + +1. "regedit"でレジストリエディタを起動する。 +2. 次のキーを追加する: + キー キーの名前 値 ~ + HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99} + {default} Vim Shell Extension + HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\InProcServer32 + {default} {path}\gvimext.dll + ThreadingModel Apartment + HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim + {default} {51EEE242-AD87-11d3-9C1E-0090278BBD99} + HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved + {51EEE242-AD87-11d3-9C1E-0090278BBD99} + Vim Shell Extension + HKEY_LOCAL_MACHINE\Software\Vim\Gvim + path {path}\gvim.exe + HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 5.6 + DisplayName Vim 5.6: Edit with Vim popup menu entry + UninstallString {path}\uninstal.exe + + {path}は実行可能ファイルのあるディレクトリパスに置き換える。 + {default}はキー自信の値なので、タイプしない。 + +ポップアップメニューから"Edit with Vim"を削除するには、上記のレジストリ項目を +削除すればよい。uninstal.exeプログラムは同じことをしてくれる。Windows標準の"ア +プリケーションの追加と削除"のリストの、エントリーを使うことも出来る。 + +このエントリがファイルタイプの関連付けを抑制してしまうことに気が付いたら、手動 +で関連付けをやり直す(上記を参考に、Windowsのエクスプローラを使って)。これは +Windows NTの幾つかのバージョンでだけ起こるらしい(Windowsのバグ?)。手続き: +1. ファイルタイプの名前を見つける。これはレジストリエディタを起動し、 + \\HKEY_CLASSES_ROOTで拡張子を探すことで行える。 +2. Windowsエクスプローラでは、表示→オプション→ファイルタイプ。リストの中から + ファイルタイプを探し出し"編集"をクリック。アクションのリストで、デフォルト + として使用したいものを選択し(通常は"開く"アクション)、"標準"ボタンをクリッ + クする。 + +"アプリケーションから開く" コンテキストメニュー *win32-open-with-menu* +("Open With...") + +Vimのインストーラーを使うならエクスプローラのメニューの "アプリケーションか +ら開く" にVimを加えるか選択することができる。これはVimでいろんなファイルを編 +集するなら重要である。(不明瞭な理由で)全てのファイルには使えない。したがって +"Edit with Vim" メニューの方が使いやすい。 + +これを追加する理由の一つがインターネットエクスプローラから直接ファイルを編集 +できるようにするためである。これを有効にするには "Tools" メニューから +"Internet Options..." を選択し、出てきたダイアログウインドウの "Programs" タ +ブの "HTML editor" にVimを選択する。そこにVimがなければインストールは完了し +ていない。 + +このスクリプトを使って手作業で設定できる。 + +---------------------------------------------------------- +REGEDIT4 + +[HKEY_CLASSES_ROOT\Applications\gvim.exe] + +[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell] + +[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit] + +[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command] +@="c:\\vim\\vim62\\gvim.exe \"%1\"" + +[HKEY_CLASSES_ROOT\.htm\OpenWithList\gvim.exe] + +[HKEY_CLASSES_ROOT\*\OpenWithList\gvim.exe] + +---------------------------------------------------------- + +"c:\\vim\\vim62" をgvim.exeが実際にある場所に変更すること。 + +これをアンインストールするにはVimのアンインストーラーを使うか "regedit" を +使って手作業でレジストリエントリを削除する。 + +============================================================================== +3. クリップボードを使う *gui-clipboard* + +Windowsにはテキストを一時的に格納(コピー)し、取り出す(ペースト)できるクリップ +ボードがある。Vimでは幾つかの方法でクリップボードに対応している。他のシステム +については|gui-selections|を参照。 + +"*レジスタにはクリップボードの内容が反映される。|quotestar| + +'clipboard'オプションに文字列"unnamed"が含まれている時には、名前なしレジスタが +同じになる。こうすることで、ヤンク(Vimにおけるコピー"y")やペースト(Vimにおける +貼り付け"p")にクリップボードを、"*を付けることなく使用できる。 + +デフォルトでは'guioptions'に'a'フラグは含まれていない。これはその操作を行った +時にだけ、テキストがクリップボードへ送られるを意味している。単に視覚的に選択 +(Visualモード)しただけではクリップボードには送られない。'a'フラグを加えれば、 +(Visualモードで選択するだけで)操作をせずにもクリップボードへ送られる + + *mswin.vim* +標準的なMS-WindowsのCTRL-X、CTRL-CおよびCTRL-Vを使うには、 +$VIMRUNTIME/mswin.vimスクリプトを使用する。_vimrcファイルに次の一行を追加する: +> + source $VIMRUNTIME/mswin.vim + +CTRL-Cがクリップボードへのコピーになってしまうので、操作を停止すること(無限 +ループに陥ったスクリプトを停止するなど)が、できなくなってしまう。代わりに +CTRL-Breakが使える。 + + *CTRL-V-alternative* +CTRL-Vがペーストに使われてしまうので、方形視覚選択(Visualモードの一種)を開始す +ることができない。これにはCTRL-Qを代用できる。インサートモードやコマンドライン +モードにおいても、もともとのCTRL-Vの代わりにCTRL-Qを使用することができる。しか +しターミナルでCTRL-Qが制御のために使われる時はうまく機能しない。 + +NOTE: クリップボードのサポートにはまだかなりのバグがある。|todo|参照。 + +============================================================================== +4. シェルコマンド *gui-shell-win32* + +Vimは外部コマンドを実行するのに、どんなコマンドでも実行できるようにするために +Vimとは別個のウィンドウを使用する。外部コマンドはちょうどDOSプロンプトから実行 +されるように、独自の実行環境を獲得する。 + + *win32-vimrun* +外部コマンドの実行は"vimrun"コマンドを用いて間接的に行われる。これが働くために +は"vimrun.exe"コマンドが実行パスになければならない。そうでなければVimの実行 +ファイルと同じディレクトリになければならない。"vimrun"を見つけることができなけ +れば、コマンドは直接実行され、そのため外部コマンドの実行が終了するとすぐにDOS +ウィンドウが閉じられる。 +警告: もしも"X"ボタンでこのウィンドウを閉じてしまい、強制終了することを確認す +るウィンドウでアプリケーションを本当に終了してしまうと、Vimも一緒に強制終了し +てしまう! (":!start"で非同期的に起動されたアプリケーションには、これは当ては +まらない) + +Windows 95では、実行されるコマンドのウィンドウは、DOSとの可能な限りの互換性の +ため(これが問題!)常に80x25の大きさになってしまう。デフォルトのシステムフォント +が使用される。NTでは、コントロールパネルの"コンソール"によって設定された内容が +デフォルトで使用される。Win32sでは、DOSボックスのプロパティはWindowsのディレク +トリにある_default.pifで決定される。 + + *msdos-mode* +もしも外部プログラムを使用したときに、"このプログラムはMS-DOSモードで起動しま +す…"のようなダイアログが表示されたならば、関連付けられたショートカットのプロ +パティを変更することでこれを解消することができる: +- Windowsエクスプローラを使用して使用されたcommand.comを探す。恐らく + c:\command.com、c:\dos\command.com、c:\windows\command.comなどのどれか。 +- マウスの右ボタンで、command.comのプロパティを選択。 +- プログラムタブの"詳細設定"を選択。 +- "MS-DOSモードで起動する"をチェック解除。 +- "設定"を2度クリック。 + + *win32-!start* +通常、Vimはコマンドの実行が終了するのを待つ(これは多くのシェルコマンドの出力を +Vimが取り込んで使用できるようにするため)。Vimがプログラムを実行した後、その終 +了を待たないように望むのならば、W95とNTでは次の構文を使用することができる: > + :!start {command} +Win32sでは、代わりのウィンドウに移らなければならないだろう。Windows 3.1xにVim +に戻っている間にも、バックグラウンドでDOSコマンドを実行するように設定するのを +忘れないこと。 + +============================================================================== +5. 特別な色 *win32-colors* + +Win32では、通常のDOSでの色が使用される。|dos-colors|を参照。 + +付け加えて、システムが構成している色を使用することができる。それらはSys_XXXと +して知られ、XXXの部分は下のリストに示される、割り当てられているシステムカラー +名である(完全な解説はWin32の文章を参照)。大文字小文字は区別されない。注意: +Win32sではこれら全ての色がサポートされているわけではない。 + +Sys_3DDKShadow Sys_3DFace Sys_BTNFace +Sys_3DHilight Sys_3DHighlight Sys_BTNHilight +Sys_BTNHighlight Sys_3DLight Sys_3DShadow +Sys_BTNShadow Sys_ActiveBorder Sys_ActiveCaption +Sys_AppWorkspace Sys_Background Sys_Desktop +Sys_BTNText Sys_CaptionText Sys_GrayText +Sys_Highlight Sys_HighlightText Sys_InactiveBorder +Sys_InactiveCaption Sys_InactiveCaptionText Sys_InfoBK +Sys_InfoText Sys_Menu Sys_MenuText +Sys_ScrollBar Sys_Window Sys_WindowFrame +Sys_WindowText + +恐らく一番便利な値はこれらだろう + Sys_Window 通常のウィンドウの背景の色 + Sys_WindowText 通常のウィンドウの文字の色 + Sys_Highlight 選択されたテキストの背景の色 + Sys_HighlightText 選択されたテキストの文字の色 + +他にもこの様な色も存在する: +Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet, + + *rgb.txt* +付け加えて、"rgb.txt"で定義される色も使うことができる。このファイルはX11のもの +として知られている。何行かを抜粋する: > + + 255 218 185 peach puff + 205 133 63 peru + 255 181 197 pink + +これはファイルのレイアウトを示している: 最初に赤、緑、そして青の輝度を10進数で +記述し、続いて色の名前を定義している。4つのフィールドはスペースで区切られてい +る。 + +rgb.txtはX11のディストリビューションから手に入れることができる。 +"/usr/X11R6/lib/X11/"あたりのディレクトリにおいてあることが多い。Vimでは +$VIMRUNTIMEディレクトリに置く。だから"$VIMRUNTIME/rgb.txt"にファイルが見つける +ことができる。 + +============================================================================== +6. ダイアログとブラウズ *gui-w32-dialogs* *dialog* + +コンソールバージョンから受け継がれる伝統的なインターフェースはもちろん、さらに +Win32 GUIでは幾つかの操作に見慣れたWindowsのコンポーネントを使用することができ +る。 + + +6.1 ダイアログ + +その他のバージョンではコンソールベースで行われていた"confirm"ファミリ(すなわち +'confirm'オプションと|:confirm|コマンドと|confirm()|関数)で、GUIベースのダイア +ログが表示される。'guioptions'の'c'フラグでこれを変更できる。 + + +6.2 ファイルブラウザ + +ファイルを編集するコマンドの前に":browse"を付けると、存在するファイルを選択す +るためのウィンドウ選択ダイアログが使用される。|:browse|を参照。 + + +6.3 切取メニュー + +Win32 GUI版ではMotifの「切取メニュー」をエミュレートする。個々のメニューの最上 +位には、小さな「切り取り線」のグラフィックスが存在する。これを選択すると同じメ +ニューのエントリーがある、フローティングウィンドウが作成される。フローティング +メニューを使用すれば、いちいちメニューバーに移動することなく、オリジナルのメ +ニューの(サブメニューも含めた)項目にアクセスすることができる。 +これはサブメニューの奥の方のコマンドを頻繁に使用するときに非常に便利。 +切取メニューは好きなところに配置し、常にVimのメインウィンドウよりも手前に表示 +される。普通に閉じることで取り除くこともできる;もちろんVimを終了すれば自動的に +それらも閉じられる。 + + *:tearoff* *:te* +:te[aroff] {name} {name}というメニューを切り取る。指定されたメニューは少 + なくとも一つ以上のサブエントリを持たねばないが、メ + ニューバーに表示されている必要は無い。 + (|win32-hidden-menus|)を参照。 + +例: > + :tearoff ファイル(F) +"ファイル"メニューが(あれば)切取メニューとして表示される。 > + + :amenu ]Toolbar.Make :make<CR> + :tearoff ]Toolbar +メインのメニューバーには存在しないフローティングメニューを作成する。 + +']'で始まるメニューは表示されないことに注意。 + +============================================================================== +7. コマンドライン引数 *gui-w32-cmdargs* + +パラメータの中のコマンドラインの分析は MS Windows で標準化されていない。GVim +はコマンドラインの分析のロジックを提供しなければならない。このロジックはVim +をコンパイルするのに使われたシステムが提供するロジックとは異なるだろう。この +違いはダブルクォート(")の使い方が一般的でないのと関係する。 +引数の "C:\My Music\freude.txt" と "+/Sch\"iller" は同じように扱われる。引数 +"+/Sch""iller" はgvimやvim、それがどのようにコンパイルされたかによって、扱い +が変わります。 + +ルール: + a) パラメータは表示可能文字である + b) パラメータはスペースで区切られている + c) ダブルクォートで囲めばパラメータにスペースを含むことができる + d) バックスラッシュ(\)が一つ以上の後に続くダブルクォート(")は特別な文 + 字である。バックスラッシュの数を半分に割って小数を切捨てた数に意味が + ある。奇数ならバックスラッシュはスペースやタブの効果を変える。偶数な + らバックスラッシュはリテラルのダブルクォートを作る。 + +つまり: + " は特別なダブルクォート + \" はリテラルのダブルクォート + \\" はリテラルのバックスラッシュと特別なダブルクォート + \\\" はリテラルのバックスラッシュとリテラルのダブルクォート + \\\\" はリテラルのバックスラッシュ二つと特別なダブルクォート + \\\\\" はリテラルのバックスラッシュ二つとリテラルのダブルクォート + etc. + +例: > + gvim "C:\My Music\freude" +"set ignorecase" +/"\"foo\\" +\"bar\\\" + +は "C:\My Music\freude" を開き、次のコマンドを実行する: > + set ignorecase; /"foo\ and /bar\" + +============================================================================== +8. その他色々 *gui-w32-various* + + *gui-w32-printing* +"ファイル/印刷"メニューはシンタックスハイライトを使って印刷する。|:hardcopy|を +参照してください。もしもテキストを装飾なしで印刷したいのなら、デフォルトのプリ +ンタがインストールされていれば次のようにできるでしょう。 > + :w >>prn + +Vimでは多くのMS Windows標準の機能をサポートしている。それらの幾つかは別の場所 +で説明されている: |'mouse'|、|win32-hidden-menus|を参照。 + + *drag-n-drop-win32* +Vimのウィンドウに1つもしくは複数のファイルをドラッグ&ドロップすることができ、 +それらは普通に開かれる。|drag-n-drop|を参照。 + + *:simalt* *:si* +:si[malt] {key} simulate pressing {key} while holding Alt pressed. + {not in Vi} {only for Win32 versions} + Altと{key}の同時押しをシミュレートする。 + {Viにはない機能} {Win32バージョンだけの機能} + +通常、Vimでは使用可能なマッピングを増やすために、Alt-<Key>の全ての組み合わせを +使うことができる。これはメニューにアクセスするためのAltキーの標準的な使い方と +衝突する。 +標準的な振る舞いをさせるための近道は、'winaltkey'オプションに"yes"を設定するこ +とである。しかしこうするとAltを使用したマッピングは一切使えなくなる。 +もう一つの方法は'winaltkeys'に"menu"を指定することである。マッピングされていな +いALTキーだけが、メニューのショートカットとしてWindowsに解釈される。だけども現 +在の状態に依存することは許さない。 +これを回避するために、('winaltkeys'が"yes"でない時に):simaltコマンドで、 +WindowsのスタイルでAltキーを押すふりを、Vimにさせることができる。これを使って +Windows標準のアクションを興すための、Altキーの組み合わせ(ほかのものでも)をマッ +ピングすることができる。いくつか例を示そう: > + + :map <M-f> :simalt f<CR> +これでAlt-Fを押すとキーストロークのAlt→Fがシミュレートされ、'ファイル(F)'メ +ニュー(Menu.vimで定義される)が表示される。 > + :map <M-Space> :simalt ~<CR> +このマッピングによりAlt-SpaceでVimウィンドウのシステムメニューが表示される。 +'~'はsimaltにおいて文字<Space>を表現するのに使われることに注意。 > + :map <C-n> :simalt ~n<CR> +Control-Nに、Alt-SpaceにNを続けるマッピングを施す。これはシステムメニュー経由 +でVimのウィンドウを最小化する。 + + *intellimouse-wheel-problems* +インテリマウスのホイールを使用すると、Vimは入力を受け付けなくなることがある。 +次の場所へ行き: + コントロールパネル - マウス - ホイール - スクロール - 例外 + +アプリケーションのリストにgvimを追加する。この問題はIntellimouseのドライババー +ジョン2.2を使用し、"ユニバーサルスクロール"を有効にしている時にだけ起こる。 + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/gui_x11.jax b/ja/gui_x11.jax new file mode 100644 index 000000000..f3ed6d210 --- /dev/null +++ b/ja/gui_x11.jax @@ -0,0 +1,576 @@ +COMMENT: GUI機能:X11 +STATUS: finished 6.3.054 +TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*gui_x11.txt* For Vim version 6.3. Last change: 2004 Mar 16 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +Vimのグラフィカルユーザインタフェース *gui-x11* *GUI-X11* + *Athena* *Motif* +1. X11 GUIの開始 |gui-x11-start| +2. GUIリソース |gui-resources| +3. シェルコマンド |gui-pty| +4. 各種事項 |gui-x11-various| +5. GTKバージョン |gui-gtk| +6. GNOMEバージョン |gui-gnome| +7. コンパイル |gui-x11-compiling| +8. X11セレクション |x11-selection| + +他の重要なドキュメント: +|gui.txt| GUIの一般的な項目について。 + +{Vi にはこれらのどのコマンドもない} + +============================================================================== +1. X11 GUIの開始 *gui-x11-start* *E665* + +これらのどちらの方法でもVimのGUIバージョンを実行することができる: + gvim [options] [files...] + vim -g [options] [files...] + +であるから、実行可能な"gvim"を呼ぶか、あるいは"gvim"を実行可能なものとしてリン +クさせるならば、GUIバージョンが自動的に使用されるだろう。例えば"gvim-5"のよう +に、追加の文字が"gvim"の後に追加されてもよい。 + +これらのコマンドの1つを使用してターミナルバージョンの中からGUIを起動してもよ +い: + :gui [++opt] [+cmd] [-f|-b] [files...] *:gu* *:gui* + :gvim [++opt] [+cmd] [-f|-b] [files...] *:gv* *:gvim* +"-f"オプションはフォアグラウンドで実行する。 +"-b"オプションはバックグラウンドで実行する(これがデフォルト)。 +|++opt|と|+cmd|も参照してください。 + + *gui-fork* +GUIが開始されるときには、fork()して現在のプロセスを終了する。gvimがシェルから +開始されたときには、これでシェルが更にコマンドを受け入れられるようになる。これ +を望まない(例えば、メールプログラムでgvimを使用しているときにgvimが終了するの +を待つ)ならば、"gvim -f", "vim -gf"でかあるいは":gui -f"を使用して開始する。 +"-fg"は前景色の指定に用いられるので、"vim -fg"を使用してはならない。 + +"gvim -f"と":gui"を使用するときには、Vimはフォアグラウンドで実行されるだろう。 +"-f"引数は記憶されているだろう。Vimを強制的にバックグラウンドで実行するには、 +":gui -b"を使用するとよい。 + +"gvim --nofork"と"gvim -f"は同じです。 + +GUIをいつもフォアグラウンドで実行したければ、'guioptions'の中に'f'フラグを含め +るとよい|-f|。 + +============================================================================== +2. GUIリソース *gui-resources* *.Xdefaults* + +GUIのMotifかあるいはAthenaバージョン(GTK+やあるいはWin32バージョンについてでは +ない)を使用しているならば、多くのXのリソースが有効である。これらを設定するとき +には、Vimのクラス"Vim"を使用すべきである。それらは以下のようなものである: + + リソース名 意味 ~ + + reverseVideo ブール値: reverse videoが用いられるべきか? + background 背景色。 + foreground 通常のテキストの色。 + scrollBackground スクロールバーのくぼみ部分の色。 + scrollForeground スクロールバーのスライダと矢印部分の色。 + menuBackground メニューの背景色。 + menuForeground メニューの前景色。 + tooltipForeground ツールチップとバルーンの前景色。 + tooltipBackground ツールチップとバルーンの背景色。 + + font 通常のテキストに使用されるフォント名。 + boldFont ボールドのテキストに使用されるフォント名。 + italicFont イタリックのテキストに使用されるフォント名。 + boldItalicFont ボールド、イタリックのテキストに使用されるフォント名。 + menuFond |+xfontset|が無効なときに使われるメニューのフォント名。 + menuFontSet |+xfontset|が有効なときに使われるメニューのフォントセ + ット名。 + tooltipFont ツールチップとバルーンに使われるフォント名。 + |+xfontset|が有効なときはこれはフォントセット名です。 + + geometry gvimのウィンドウに用いられる初期サイズ(デフォルトはそ + れを開始したターミナルと同じサイズ)。 + scrollbarWidth スクロールバーの厚さ。 + borderWidth テキストエリアの周りのボーダの厚さ。 + menuHeight メニューバーの高さ(Athenaのみ)。 + +イタリック、ボールド、イタリック・ボールドのテキスト用の特別なフォントはユーザ +がリソースを通して指定されたものを持っている場合にだけ用いられるだろう。通常の +テキストのフォントに基づいたこれらのためにどのフォントが用いられるべきであるか +を推測しようとは試みない。 + +"Normal", "Menu", "Tooltip"と"Scrollbar"グループを使用して、":highlight"コマン +ドで色を設定することもできることを覚えておくとよい。 > + :highlight Menu guibg=lightblue + :highlight Tooltip guibg=yellow + :highlight Scrollbar guibg=lightblue guifg=blue + :highlight Normal guibg=grey90 +< + *font-sizes* +注意: (メニューとツールチップ以外では)全てのフォントは同じサイズでなければなら +ない!!! こうしなければ、テキストは表示されないか、あるいはめちゃくちゃに表示さ +れるだろう。Vimはフォントサイズをチェックしない。同じでなければならないのはス +クリ-ンのピクセルにおけるサイズである。いくつかのフォントが同じポイントサイズ +を持っていても、同じピクセルサイズを持っているとは限らないということに注意しな +くてはならない! さらにフォントの配置は同じ(アセントとディセント)でなければなら +ない。"xlsfonts -l {fontname}"でこれをチェックすることができる。 + +これらのことはいずれもVimコマンド、例えば":set guifont=Screen15"で設定されるな +らば、Xのリソースを無視するだろう(現在'guifont'がサポートされる唯一のオプショ +ンである)。 + +あなたの~/.Xdefaultsファイルに付加したいかもしれないものを例としてここに挙げ +る: > + + Vim*useSchemes: all + Vim*sgiMode: true + Vim*useEnhancedFSB: true + Vim.foreground: Black + Vim.background: Wheat + Vim*fontList: 7x13 + +これらの内の始めの3つはMotifアプリケーションをもっとよく見せるシリコングラ +フィックス製マシンにおける標準リソースであり、大いに推奨されている! + +"Vim*fontList"はMotif用のメニューフォントを設定するためのものである。例: > + Vim*menuBar*fontList: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* +Athenaでは: > + Vim*menuBar*SmeBSB*font: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* + Vim*menuBar*MenuButton*font: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* + +NOTE: MotifかAthenaでメニューのフォントを決めるのに、移植性が高く、本当に正し +いのは、リソースを使うことです。 > + Vim.menuFont: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* +|+xfontset|が有効にされているときは > + Vim.menuFontSet: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* + +defaultsの中で"Vim*geometry"を使用してはならない。これはメニューを壊すだろう。 +代わりに"Vim.geometry"を使用するとよい。 + +"Cannot allocate colormap entry for "gray60"のエラーメッセージを受け取ったなら +ば、Vimリソースにこれを(色は好みに変更して)追加してみるとよい。 > + + Vim*scrollBackground: Black + Vim*scrollForeground: Blue + +リソースはvimへの引数で設定することもできる: + + 引数 意味 ~ + *-gui* + -display {display} {display}上でvimを実行する *-display* + -iconic vimをアイコン化して開始する *-iconic* + -background {color} 背景に{color}を使用する *-background* + -bg {color} 同上 *-bg* + *-foreground* + -foreground {color} 通常のテキストに{color}を使用する + -fg {color} 同上 *-fg* + -ul {color} 同上 *-ul* + -font {font} 通常のテキストに{font}を使用する *-font* + -fn {font} 同上 *-fn* + -boldfont {font} 太字テキストに{font}を使用する *-boldfont* + *-italicfont* + -italicfont {font} 斜体のテキストに{font}を使用する + -menufont {font} メニュー項目に{font}を使用する *-menufont* + *-menufontset* + -menufontset {fontset} メニュー項目に{fontset}を使用する + -mf {font} 同上 *-mf* + -geometry {geom} 初期サイズに{geom}を使用する *-geometry* + -geom {geom} 同上。|-geometry-example|を参照 *-geom* + -borderwidth {width} {width}のボーダ幅を使用する *-borderwidth* + -bw {width} 同上 *-bw* + *-scrollbarwidth* + -scrollbarwidth {width} {width}のスクロールバー幅を使用する + -sw {width} 同上 *-sw* + *-menuheight* + -menuheight {height} {height}のメニューバー高を使用する + -mh {height} 同上 *-mh* + NOTE: Motifではこの値は無視される。メニューの高さは + ちょうど収まるように計算される。 + -reverse reverse video を使用する *-reverse* + -rv 同上 *-rv* + +reverse reverse video を使用しない *-+reverse* + +rv 同上 *-+rv* + -xrm {resource} 指定されたリソースを設定する *-xrm* + +reverse video についての注意: Vimは実際に暗い背景に明るいテキストになるか結果 +をチェックする。X11のあるバージョンは色を交換し、あるバージョンはしないからで +ある。これらの2つの例はどちらも青い背景に黄色のテキストを提供するだろう: + gvim -fg Yellow -bg Blue -reverse + gvim -bg Yellow -fg Blue -reverse + + *-geometry-example* +geometry引数の例: > + gvim -geometry 80x63+8+100 +これはウインドウを80カラム、63行で作り、左から8ピクセル、上から100ピクセルの位 +置に置きます。 + +============================================================================== +3. シェルコマンド *gui-pty* + +‘警告’: GUIからの外部コマンドの実行は常に動作するとは限らないだろう。"ls", +"grep"とか"make"のような"normal"コマンドはたいていうまく動作する。"less"とか +"ispell"のような知的ターミナルを要求するコマンドは動作しないだろう。あるものは +ハングさえするかもしれないし、他のターミナルからkillされる必要があるかもしれな +い。だから気を付けなくてはならない! + +シェルコマンドで入出力するには2つの方法がある: パイプと仮想端末(pseudo-tty)で +ある。デフォルトは仮想端末を使用する。これは大抵のシステムで最も良く動作するだ +ろう。 + +不幸にも、仮想端末の実装はUnixシステム毎に異なっている。そしていくつかのシステ +ムはroot権限を要求する。一番予期しないときに仮想端末における問題に出くわすのを +避けるには、ファイルを編集していないときにそれをテストをするとよい。開始したコ +マンドあるいはVimを"kill"する準備をしなくてはならない。":r !cat"のようなコマン +ドはハングするかもしれない! + +仮想端末を使用して動作しないならば、'guipty'オプションをリセットするとよい: > + + :set noguipty + +パイプの使用はいくつかのUnixシステムで動作するだろうが、いくつか不都合がある: +- いくつかのシェルコマンドはパイプが使用されていることを通知し、異なった振る舞 + いをするだろう。例えば、":!ls"はファイルの一覧を1桁で出力するだろう。 +- ":sh"コマンドは、多少動作するだろうが、プロンプトを表示しないだろう。 +- ":make"を使用するときには、CTRL-Cで中断できない。 + +外部コマンドを実行している間、先行入力された文字はしばしば失われる。これはパイ +プと仮想端末の両方で起こる。これは既知の問題だが、修正できない(かあるいは少な +くとも非常に難しい)と思われる。 + + *gui-pty-erase* +削除文字が外部コマンドに不適当であるときには、あなたの"~/.cshrc"ファイル、ある +いはあなたのシェルを初期化するために用いるどんなファイルででもこれを修正すべき +である。例えば、文字を削除するためにバックスペースを使用したいが、バックスペー +スを打ち込むことで代わりに"^H"が作り出されるときには、これをあなたの"~/.cshrc" +に追加してみるとよい: > + stty erase ^H +^Hは本当のCTRL-Hであり、CTRL-V CTRL-Hとタイプする。 + +============================================================================== +4. 各種事項 *gui-x11-various* + + *gui-x11-printing* +"File/Print"(訳注: 日本語化されたメニューでは、ファイル/印刷)メニューは単に現 +在のバッファを"lpr"に送る。オプションや何かは何もない。他に何かしたければ、あ +なた自身の印刷コマンドを定義することができる。例えば: > + + :10amenu File.Print :w !lpr -Php3 + :10vmenu File.Print :w !lpr -Php3 +< + *X11-icon* +MotifあるいはAthenaでコンパイルされたときには、Vimはデフォルトで白黒のアイコン +を用いる。色付きのVimアイコンは$VIMRUNTIME/vim32x32.xpmとして含まれる。GTK+に +ついては、組み込みのアイコンが用いられる。不幸にも、どのようにしてそれをインス +トールするかはあなたのウィンドウマネージャに依存する。これを使用するときには、 +白黒のアイコンを取り除くために、'guioptions'から'i'フラグを取り除くとよい: > + :set guioptions-=i + +fvwm*ファミリのウィンドウマネージャの1つを使用するならば、単にあなたの.fvwm2rc +構成ファイルにこの行を追加するとよい: > + + Style "vim" Icon vim32x32.xpm + +アイコンファイルの場所がウィンドウマネージャのImagePath文と一致することを確か +めなくてはならない。あなたの.fvwm2rcを修正するか、あるいは事前に定義されたディ +レクトリの1つにアイコンをドロップするとよい。 > + + ImagePath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps + +Note: 古いバージョンのfvwmでは"ImagePath"ではなく"IconPath"を使います。 + +CDE "dtwm"(Motifから派生)については、.Xdefaultsにこの行を追加するとよい: +> Dtwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm + +"mwm"(Motifウィンドウマネージャ)については、その行はこうなるだろう: > + Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm + +X11で利用できるマウスポインタ *X11_mouse_shapes* + +|'mouseshape'|オプションを使うと、Vimがモード(インサートモードやコマンドモー +ドなど)を変更するたびに自動的にマウスポインタを変更できる。現在、利用できる +ポインタは次の通り: + + arrow 左上向きの矢印 + beam 「I」のような垂直の棒 + size 上下を指す矢印 + busy 腕時計 + blank 透明なポインタ + crosshair 細い"+"印 + hand1 左上向きの暗い手のポインタ + hand2 左右向きの明るい手のポインタ + pencil 右下向きのペン型のポインタ + question クエスチョンマーク(?) + right_arrow 右上向きの矢印 + up_arrow 上向きの矢印 + +さらに、インクルードファイルのX11/cursorfont.hで定義された整数を指定して、 +X11に組み込まれたポインタを使うことができる。 + +他のシステムでは使えても、X11にない名前を指定すると、デフォルトの"arrow"ポイ +ンタが使われる。 + +============================================================================== +5. GTKバージョン *gui-gtk* *GTK+* *GTK* + +GUIのGTKバージョンはほんの少し異なった動作をする。 + +GTKは従来のXのリソース設定に使_わない_。したがって、~/.Xdefaultsや +app-defaultsは使われません。 +伝統的なXコマンドの引数はサポートされません。(例えば -bg, -fg, などの要素)。サ +ポートされているのは: + + コマンドライン引数 リソース名 意味 ~ + -fn or -font .font テキストのフォント名 + -geom or -geometry .geometry gvimウィンドウのサイズ + -rv or -reverse *reverseVideo 黒い背景に白いテキスト + -display 使用されるディスプレイ + -fg -foreground {color} 前景色 + -bg -background {color} 背景色 + +フォントを設定するには、|'guifont'|を参照。GTKについては、これをするメニューオ +プションもある。 + +さらに、GTKの内部で扱われるこれらのコマンドライン引数がある。それらがどのよう +に用いられるかはGTKのドキュメントを見るとよい。 + --sync + --gdk-debug + --gdk-no-debug + --no-xshm (GTK+ 2では使われない) + --xim-preedit (GTK+ 2では使われない) + --xim-status (GTK+ 2では使われない) + --gtk-debug + --gtk-no-debug + --g-fatal-warnings + --gtk-module + --display (GTK+の-displayに対応; 同じように動作する。) + --screen (スクリーン番号: GTK+ 2.2ではマルチスレッド対応) + +これらの引数は|+netbeans_intg|が有効なときは使われません。 + -xrm + -mf + +色については、Vimの(構文強調表示についての)色の設定はまだ従来のVimの方法でなさ +れている。より多くのヘルプについては|:highlight|を参照。 + +残りのguiコンポーネント(例えば、メニューバー、スクロールバー、どんなものでも) +の色を設定したければ、GTK特有の設定があり、何かgtkrcファイルの類にそれらを設定 +する必要がある。どのようにこれをすべきかについて、どんなに小さなものしかなくて +も、GTKドキュメントを参照しなければならないだろう。 + + *gtk-tooltip-colors* +ツールティップの色を明るい黄色の背景に黒のテキストに設定する例: > + + style "tooltips" + { + bg[NORMAL] = "#ffffcc" + fg[NORMAL] = "#000000" + } + + widget "gtk-tooltips*" style "tooltips" + +~/.gtkrcファイルの中にこれを書くとGTKで用いられるだろう。GTK+ 2では +~/.gtkrc-2.0を使わなければいけないかも知れない。環境による。 + +GTK+プラグインとしてVimを使う *gui-gtk-socketid* + +GTK+版のVimを普通に起動すると、Vimは自身のトップレベルウインドウを作成する(技 +術的には'GtkWindow')。GTK+はGtkSocket、GtkPlugウィジェットを使った埋め込み機能 +を提供している。あるGTK+アプリケーションが自分のウインドウにGtkSocketウィジェ +ットを作成していると、別のアプリケーションはトップレベルのGtkPlugウィジェット +をソケットIDを使って作成し、先のアプリケーションに自身を組み込める。 + +Vimのコマンドラインオプションに'--socketid'と10進数や16進数の値を指定すると +、Vimは通常のGtkWindowを使わず、指定された値を使いGtkPlugウィジェットを作成す +る。これはVimがGTK+プラグインとして振る舞うことを可能にする。 + +これはプログラマー向けのインターフェースであり、それをサポートするアプリケーシ +ョン無しではまったく役に立たない。GTK+ソケットについての詳細は次のURLを参考に +すること。 +http://www.gtk.org/api/ + +Note この機能は最新バージョンのGTKを必要とする。GTK 1.2.10はまだ若干問題があ +る。ソケットの機能はまだGTK+ 2ではテストされていない、自己責任でどうぞ。 + +============================================================================== +6. GNOME バージョン *gui-gnome* *Gnome* *GNOME* + +GNOME GUI は GTK+ バージョンと同じように機能する。どのように動作するかは上述 +の |GTK+| を参照。しかし若干の違いがあり、素の GTK+ GUI では利用できない重要 +な機能が 1 つ実装されている。それはセッションマネージャとの相互作用である。 +|gui-gnome-session| + +見た目の違い: +- GNOME ダイアログを使う (GNOME 1 だけ)。GNOME 2 GUI は同じく素敵な GTK+ 2 + バージョンのダイアログを使う。 +- GNOME ドックを使う。したがって、ツールバーとメニューバーは上以外の別の場所 + に移動することができる (例えばツールバーを左や右、上、もしくは下に置け + る)。メニューバーとツールバーの位置は GNOME 2 バージョンでのみ記憶される。 +- これはメニューバーとツールバーのハンドルが戻ってきたということだ! やった! + もちろんサイズ変更グリッドもまだ使える。 + +GNOME バージョンは configure が GNOME を認識すれば自動的にコンパイルされる。 +(FIXME: これはあってる? --enable-gnome-check を使うのが確実。) + +GNOME セッションサポート *gui-gnome-session* *gnome-session* + +ログアウト時、Vim はバッファのどれかが変更されていると、よく知られた終了確認 +ダイアログを表示する。[Cancel] をクリックするとログアウトが取り止めになる。 +そうしなかった場合は、現在のセッションが |:mksession| コマンドを使ってディス +クに保存され、次回のログオン時に復元される。 + +GNOME セッションサポートはおそらく KDE セッションマネージャでも機能する。も +しあなたが何かの問題に直面したらバグレポートを彼らに送ってください。 + +Note: 自動的なセッションの保存はあなたのセッションファイルやスクリプト、オー +トコマンドの衝突を避けるために実に適切に働く。その手段としては: +- セッションファイルは別のディレクトリに保存される (普通は $HOME/.gnome2)。 +- 'sessionoptions' は無視される。代わりにハードコードされた適切なフラグが使 + 用される: > + blank,curdir,folds,globals,help,options,winsize +- 内部変数の |v:this_session| はセッションの保存で変更されない。さらに、再び + ログインしたときに元の値に復元される。 + +GUI ウインドウの位置とサイズは保存されない、それはウインドウマネージャの仕事 +である。しかし、GTK+ 2 サポートを有効にしてコンパイルされていると、Vim はウ +インドウの役目を復元して WM がウインドウを識別するのを補佐する (コマンドライ +ン引数の|--role| を使う)。 + +============================================================================== +7. コンパイル *gui-x11-compiling* + +X11を使用しているならば、VimのMakefileはデフォルトでは最初にシステム上の必要と +なるGTK+ファイルを見つけようとするだろう。GTK+ファイルが見つけられなかったなら +ば、Motifファイルが検索されるだろう。最終的に、これが失敗するならば、Athena +ファイルが検索されるだろう。3つとも全て失敗するならば、GUIは無効になるだろう。 + +GTK+については、VimのコンフィギュレーションプロセスはGTK+が適切にインストール +されていることを要求する。つまり、シェルスクリプト'gtk-config'があなたの‘パ +ス’にあり、既にGTK+プログラムをコンパイル、ビルド、実行できなければならない。 +この理由はコンパイラフラグ(CFLAGS)とリンクフラグ(LDFLAGS)が'gtk-config'シェル +スクリプトを通して得られるからである。 + +もしもGTK+ 2を使いたいなら./configureの引数に--enable-gtk2-checkを渡してくださ +い。--enable-gnome-checkオプションも指定されたときはGNOME 2もサポートされま +す。GTK+ 2サポートはまだ試行中なので注意してください。しかしながら多くの人がう +まく動いていると報告しています。 + +そうではなくて、MotifあるいはAthenaを使用しているならば、configureが見に行かな +いないディレクトリにMotifあるいはAthenaファイルがあるときには、ディレクトリ名 +を記入するためにMakefileを編集しなくてはならない。Motifのディレクトリを設定す +る例については"GUI_INC_LOC"、Athenaについては"CONF_OPT_X"を検索するとよい。 + + *gui-x11-gtk* +これを書いている時点では、あなたはGTK+バージョン1.0.6か1.2のどちらかを使用して +いるかもしれない。v1.0.6を使用しているならば、Vimの全ての機能が存在する訳では +ないので、V1.2を使用することを勧める。例えば、v1.0.6にはティアオフ(tear off)メ +ニューが存在しない。GTK+のCVSツリーから持ってきたバージョンを使用すると動作す +るかもしれないし、動作しないかもしれない、したがってサポートされないし推奨され +ない。 + +GTK+ 2 GUIを試すには、GTK+ 2.0かGTK+ 2.2シリーズの最新版を使うことが推奨されま +す。ほとんどの場合でCVSツリーの最新版がうまく動くようです。 + +最後に、GTK+はWin32プラットフォームに恐らく移植されているけれども、これはVim +ではテストされていないし、サポートされてもいない。さらに、GTK+ GUI は一般的 +な X11 のコードを使うのでコンパイルできそうもない。これはいつの日か変更され +るかもしれない。特に中心の X11 のコードを取り除くことは GTK+ フレームバッ +ファのサポートにも必要なため。 + + *gui-x11-motif* +Motifについては、少なくともMotifバージョン1.2と/あるいはX11R5が必要である。 +Motif 2.0とX11R6はOKである。Motif 1.1とX11R4は動作するかもしれないが保証しない +(多少の問題があるかもしれないが、少しの作業でそれをコンパイルし実行させられる +かもしれない、もしあなたがそうするなら、どうか私にパッチを送って欲しい)。 +LessTifの最新リリースも問題なく動作すると報告を受けている。 + + *gui-x11-athena* +AthenaバージョンはデフォルトでXaw ウィジットセットを用いる。3Dバージョンを持っ +ているならば、代わりにXaw3dでリンクしたいかもしれない。これはメニューを少しよ +く見せるかもしれない。Makefileを編集して、"XAW_LIB"を見に行くようにするとよい +。スクロールバーは、Vimは既に3Dのそれ自体を持っているので(実際には、それらはも +っとMotifのように見える)、同じままだろう。 + + *gui-x11-neXtaw* +neXtawバージョンについては、異なるウィジェットを使うだけでほとんどAthenaと変わ +らない。 + + *gui-x11-misc* +一般的には、異なったGTK+, Motif, AthenaとX11のバージョンからのファイルを混ぜよ +うとしてはならない。これは問題を引き起こすだろう。例えば、X11R6用のライブラリ +でX11R5用のヘッダファイルを使用しても動作しないだろう(リンクがエラーメッセージ +を出さないとしても、Vimは後でクラッシュするだろう)。 + +============================================================================== +8. X11 セレクション *x11-selection* + +X11 を使っている場合、GUI や、xterm で Vim が X11 を認識している状態のとき、 +Vim から X11 のセレクションやクリップボードを扱える。それらは "* レジスタと +"+ レジスタを使用して取り扱う。 + +X11 は 2 つの基本的な共通記憶域、セレクションとカットバッファを提供してい +る。これらは重要な点が異なっている。セレクションはアプリケーションが所有し、 +Vim などのアプリケーションが終了するとなくなる、すなわちデータは失われる。一 +方、カットバッファは、X サーバが記憶し、上書きされるか、ログアウトするなどし +て X サーバが終了するまで保存される。 + +セレクションの内容はそのアプリケーションによって保存され (コピー)、別のアプリ +ケーションがそれを求めたときに渡される (ペースト)。 + +カットバッファの内容はすぐに上書きされ、その元のアプリケーションを介さずに、 +X サーバから直接読み込まれる。 + + *quoteplus* *quote+* +文書化された 3 つの X セレクションがある。プライマリ (Vim のビジュアルモード +での選択のような、現在の選択範囲を表す)、セカンダリ (不明瞭である)、クリップ +ボード (カット、コピー、ペーストに使われる)。 + +この 3 つの内、Vim は "* レジスタを読み書きするときにはプライマリを使う (X11 +セレクションが利用可能なとき、Vim は |'clipboard'| にデフォルトとして +"autoselect" を設定する)。"+ レジスタを読み書きするときにはクリップボードを +使う。Vim はセカンダリを使わない。 + +例: (オプションが標準設定のとき) +- Vim のビジュアルモードで URL を選択する。Netscape のテキストエリアに合わせ + てマウスのミドルボタンをクリックする。選択したテキストが入力される (うまく + いけば!)。 +- Netscape でマウスをドラッグしてテキストを選択する。Vim でマウスのミドルボ + タンをクリックすると選択したテキストが入力される。 +- Vim でテキストを選択して "+y を実行する。Netscape のテキストエリアでマウス + をドラッグしてテキストを選択する。そのまま右クリックしてポップアップメ + ニューから "Paste" を選択する。選択したテキストは Vim で選択したテキストに + 置き換わる。 +Note "+ レジスタのテキストはビジュアル選択しただけで変更されない。"* レジス +タは変更される。つまり選択したテキストを上書きできる。 + *x11-cut-buffer* +既定では 8 つのカットバッファがある。CUT_BUFFER0 から CUT_BUFFER7 まで。Vim +は CUTBUFFER0 のみを使う。これは xterm が標準的に使っているものである。 + +Vim が利用不可能な状態 (終了やサスペンド) になり、他のアプリケーションのセレ +クションの要求に応答できなくなるときはいつでも、Vim は選択されている内容を +CUT_BUFFER0 に書き込む。"+ クリップボードセレクションが Vim のものであると +き、それが優先して書き込まれる。そうでなければ、 "* プライマリセレクションが +Vim のものであるときに、それが書き込まれる。 + +同様に、Vim が "* や "+ からペーストしようとするとき (明示的、もしくはマウス +のミドルボタンをクリックしたときの暗黙的な "* レジスタの使用)、要求した X セ +レクションが空もしくは利用不可能なら、Vim は CUT_BUFFER0 の現在の値を読み込 +む。 + +Note これによってテキストが CUT_BUFFER0 にコピーされるときは、セレクションの +型情報 (文字、行、ブロック) は常に失われる。後にそれをペーストするのが Vim +であっても。 + +通常、Xterm は、選択したものをプライマリと CUT_BUFFER0 の両方に書き込む。 +ペースト時には、利用可能であればプライマリが使われ、それができなければ +CUT_BUFFER0 が使用される。このため、Vim と xterm の間でのカットやペーストに +は "* レジスタを使わなければならない。Xterm はクリップボードを使わないので +"+ レジスタは使えない。 + +最近のほとんどのアプリケーションでは範囲選択でプライマリ ("*) を、カット、コ +ピー、ペーストの操作でクリップボード ("+) を使用するようになっている。そのた +め "* レジスタか "+ レジスタを選択して使用することができる。 + + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/insert.jax b/ja/insert.jax new file mode 100644 index 000000000..d2ed5c75a --- /dev/null +++ b/ja/insert.jax @@ -0,0 +1,1040 @@ +COMMENT: 挿入・置換モード +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*insert.txt* For Vim version 6.3. Last change: 2004 Apr 09 + + + VIMリファレンスマニュアル by Bram Moolenaar + (訳 村岡太郎<koron@tka.att.ne.jp>) + + + *Insert* *Insert-mode* +テキストの挿入と置換 *mode-ins-repl* + +よく使われるコマンドの概要がユーザーマニュアルの24章|usr_24.txt|にあります。 + +このファイルの大部分は挿入と置換モードについて記述してある。終わりのほうにテキ +ストを挿入する別の方法を記述している。 + +1. 特別なキー |ins-special-keys| +2. もっと特別なキー |ins-special-special| +3. 'textwidth'と'wrapmargin'オプション |ins-textwidth| +4. 'expandtab'、'smarttab'それと'softtabstop'オプション |ins-expandtab| +5. 置換モード |Replace-mode| +6. 仮想置換モード |Virtual-Replace-mode| +7. 挿入モードの補完 |ins-completion| +8. 挿入モードのコマンド |inserting| +9. Exの挿入コマンド |inserting-ex| +10. ファイルを挿入する |inserting-file| + +文字のない場所にカーソルと移動するためには'virtualedit'も参照してください。表 +を編集するときに便利です。 + +============================================================================== +1. 特別なキー *ins-special-keys* + +挿入と置換モードでは、次の文字には特別な意味がある:その他の文字はそのまま入力 +される。それらの特別な文字をバッファに入力するには、CTRL-Vに続けて入力する。 +<Nul>文字を入力するには"CTRL-V CTRL-@"か"CTRL-V 000"を使用する。あるシステムで +は、CTRL-Cを入力するのに"CTRL-V 003"を使わなければならない。Note: CTRL-Vに他の +動作がマップされているときは、多くの場合、代わりにCTRL-Qを使います|i_CTRL-Q|。 + +テキストを入力中に特別な言語のモードを使用している場合には、いつもこのモードが +ON/OFFと切り替えられてしまうのをどう避けるかを示す、'langmap'オプション +|'langmap'|を参照する。 + +'insertmode'を設定した場合には、<Esc>と他の幾つかのキーに別の意味が与えられ +る。|'insertmode'|を参照。 + +文字 アクション ~ +----------------------------------------------------------------------- + *i_CTRL-[* *i_<Esc>* +<Esc> or CTRL-[ 挿入/置換モードを終了し、ノーマルモードに戻る。省略を終了す + る。 + Note: キーボードによっては<Esc>が押し難いかもしれないが、その + 時にはCTRL-[を使うようにする。 + *i_CTRL-C* +CTRL-C 挿入モードを終了し、ノーマルモードに戻る。省略語はチェックしな + い。 + + *i_CTRL-@* +CTRL-@ 直前に挿入されたテキストをもう一度挿入し、挿入を終了する。{Vi: + 最初に入力された時だけ、かつ最大128文字まで} + *i_CTRL-A* +CTRL-A 直前に挿入されたテキストをもう一度挿入する。 {Vi にはない} + + *i_CTRL-H* *i_<BS>* *i_BS* +<BS> or CTRL-H カーソルの前の文字を削除する(行同士の連結については + |i_backspacing|参照)。 + <BS>キーが想定するように働かない場合には|:fixdel|を参照。 + {Vi: 自動字下げは消すことができない} + *i_<Del>* *i_DEL* +<Del> カーソルの下の文字を削除する。カーソルが行末にあり、 + 'backspace'オプションに"eol"が含まれている場合には、<EOL>が削 + 除される; 現在の行の後ろに次の行が接続される。 + <Del>キーが想定するように働かない場合には|:fixdel|を参照。 + {Vi にはない} + *i_CTRL-W* +CTRL-W カーソルの前にある単語を削除する(行同士の連結については + |i_backspacing|参照)。単語の定義については"word motions"の節 + |word-motions|を参照。 + *i_CTRL-U* +CTRL-U 現在の行の入力済み文字全部を削除する(行同士の連結については + |i_backspacing|参照)。 + + *i_CTRL-I* *i_<Tab>* *i_Tab* +<Tab> or CTRL-I タブを挿入する。'expandtab'オプションが設定されていれば、同じ + 数の空白文字が挿入される(展開を避けるためにはCTRL-V <Tab>を使 + う。CTRL-Vに他の動作がマップされているときはCTRL-Q <Tab>を使 + う|i_CTRL-Q|)。'smarttab'オプションと|ins-expandtab|も参照。 + *i_CTRL-J* *i_<NL>* +<NL> or CTRL-J 新しい行を始める。 + *i_CTRL-M* *i_<CR>* +<CR> or CTRL-M 新しい行を始める。 + *i_CTRL-K* +CTRL-K {char1} [char2] + 合字(|digraphs|参照)を入力する。{char1}が特別なキーだった場 + 合、そのキーのコードが<>の形で挿入される。例えば、 + <C-K><S-Space>(キー2つ)と入力することで、文字列"<S-Space>"が入 + 力される。マッピングも考慮されない。 {Vi にはない} + +CTRL-N 次のキーワードを探す(|i_CTRL-N|を参照)。 {Vi にはない} +CTRL-P 前のキーワードを探す(|i_CTRL-P|を参照)。 {Vi にはない} + +CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* + レジスタの内容を挿入する。CTRL-Rをタイプしてから2つ目の文字を + タイプするまで、レジスタの名前の入力が期待されていることを示す + ため、'"'が表示される。 + テキストはタイプしたかのように挿入されるが、マッピングや省略の + 展開はされない。'textwidth'や'formatoptions'や'autoindent'のよ + うなオプションが設定されている場合には、入力されたテキストに対 + して効力を持つ。これは"p"コマンドやマウスによる貼り付けとは、 + 違う動作になる。 + 特別なレジスタ: + '"' 最後に削除されたりヤンクされたテキストの入って + いる、名前なしレジスタ + '%' 現在のファイル名 + '#' 裏バッファのファイル名 + '*' クリップボードの内容 (X11: プライマリセレクシ + ョン) + '+' クリップボードの内容 + '/' 最後に検索を行ったパターン + ':' 最後に実行したコマンドライン + '.' 最後に挿入したテキスト + '-' 最後に削除した小さい(行単位以下の)領域 + '=' 式評価レジスタ: 式評価の入力を求められる + (|expression|参照)。 + レジスタについては|registers|を参照。 {Vi にはない} + +CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* + レジスタの内容を挿入する。CTRL-Rが一つの時と同様に働くが、タイ + プされたようにではなく、テキストは文字通りに挿入される。これは + レジスタに<BS>のような文字が含まれていた場合に違いを生じる。例 + えば"ab^Hc"という内容のレジスタaがあった場合: > + CTRL-R a 結果は"ac". + CTRL-R CTRL-R a 結果は"ab^Hc". +< オプション'textwidth'、'formatoptons'その他はまだ適用される。 + これらも避けたいのならば下記の"<C-R><C-O>r"を使用する。'.'レジ + スタ(最後に挿入されたテキスト)は、まだタイプされたように扱われ + る。{Vi にはない} + +CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O* + レジスタの内容が文字通り挿入され、自動字下げも行われない。マウ + スによる貼り付け|<MiddleMouse>|と同様である。 + キャラクタは置き換えられない! + '.'レジスタ(最後に挿入されたテキスト)は、まだタイプされたよう + に扱われる。 + +CTRL-R CTRL-P {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-P* + レジスタの内容が文字通りに挿入され、インデントが + |[<MiddleMouse>|同様に修正される。 + キャラクタは置き換えられない! + '.'レジスタ(最後に挿入されたテキスト)は、まだタイプされたよう + に扱われる。 + + *i_CTRL-T* +CTRL-T 現在の行の先頭にshiftwidth一単位分の字下げを挿入する。字下げ幅 + は'shiftwidth'に丸められる(これはviと同じ)。{Vi: 字下げされて + いる時だけ} + *i_CTRL-D* +CTRL-D 現在の行の先頭の字下げを、shiftwidth一単位分削除する。字下げ幅 + は'shiftwidth'に丸められる(これはviと同じ)。{Vi: CTRL-Dは自動 + 字下げの適用後にしか使えない} + *i_0_CTRL-D* +0 CTRL-D 現在行の字下げを完全に削除する。{Vi: CTRL-Dは自動字下げの適用 + 後にしか使えない} + *i_^_CTRL-D* +^ CTRL-D 現在行の字下げを完全に削除する。次の行では字下げは元に戻され + る。これはラベルを入力する際に役に立つ。{Vi: CTRL-Dは自動字下 + げの適用後にしか使えない} + + *i_CTRL-V* +CTRL-V 続く非数字文字を文字通りに挿入する。特別なキーはターミナルコー + ドが挿入される。10進数、8進数、16進数、の数字で文字コードを直 + 接指定することもできる|i_CTRL-V_digit|。CTRL-Vの後の入力にはマ + ップは適用されない。{Vi: 数字文字をバイトに変換できない} + Note: CTRL-Vに他の動作がマップされているとき(例えばテキストを + ペーストするなど)、その場合には代わりにCTRL-Qを使用する + |i_CTRL-Q|。 + + *i_CTRL-Q* +CTRL-Q CTRL-Vと同じ。 + Note: ある種のターミナルではCTRL-Qを使用できない。GUIでは使え + る。 + +CTRL-X CTRL-Xモードに入る。これは単語の補完やウィンドウスクロールのコ + マンドを入力する、サブモードである。|i_CTRL-X|と + |ins-completoin|を参照。{Vi にはない} + + *i_CTRL-E* +CTRL-E カーソルの下の行の同じ位置の文字を挿入。{Vi にはない} + *i_CTRL-Y* +CTRL-Y カーソルの上の行の同じ位置の文字を挿入。{Vi にはない} + 'textwidth'はCTRL-EとCTRL-Yには、長い行から文字をコピーするこ + とを可能にするために、効力を発揮しないことに注意。 + + *i_CTRL-_* +CTRL-_ 次に示すように言語を切り替える: + - 右→左ウィンドウでは、revinsとnohkmapに切り替えられ、この場 + 合英語を挿入できるようになる。 + - 右→左ウィンドウ以外ではrevinsとhkmapに切り替えられ、この場 + 合ヘブライ語を挿入できるようになる。 + + CTRL-_はカーソルをタイプ済みテキストの末尾に移動させる。 + + このコマンドは'allowrevins'オプションが設定されている時のみ有 + 効。 + 右→左モードについての詳しい情報は|rileft.txt|を参照。 + {Vi にはない} + |+rightleft|機能を有効(デフォルトで有効)にしてコンパイルした時 + にだけ使用可能。 + *i_CTRL-^* +CTRL-^ 入力言語を切替える。 + 言語マッピング|:lmap|が定義されているとき: + 'iminsert'が1(言語マッピングが使われている)なら0(言語マッ + ピングを使わない)になる。 + 'iminsert'が他の値なら1になる。したがって言語マッピングが + 有効になる。 + 言語マッピングが定義されていないとき: + 'iminsert'が2(インプットメソッドが使われている)なら0(イン + プットメソッドを使わない)になる。 + 'iminsert'がその他の値なら2になる。したがってインプットメ + ソッドが有効になる。 + 'iminsert'を1にすると"b:keymap_name"の値、または'keymap'オプ + ションか"<lang>"がステータスラインに表示される。 + 言語マッピングは通常はキーボードにない文字を打つのに使われる。 + これらの値を設定するために'keymap'オプションを使える。 + {Vi にはない} + + *i_CTRL-]* +CTRL-] 文字を入れることなく、省略をトリガーする。{Vi にはない} + + *i_<Insert>* +<Insert> 挿入と置換モードを交互に切り替える。{Vi にはない} +----------------------------------------------------------------------- + + *i_backspacing* +<BS>、CTRL-WそしてCTRL-Uの効果は'backspace'オプションに依存している('revins'が +設定されていなければ)。これは下記の項目をカンマで区切ったリストになっている: + +項目 アクション ~ +indent 字下げをバックスペースで消去可能 +eol 行末をバックスペースで消去可能(行を連結) +start 挿入の開始点を超えてバックスペースで消去可能; CTRL-WとCTRL-Uは一度 + スタート地点で停止する。 + +'backspace'が空の時、Vi互換のバックスペースが使用される。自動字下げや、第1カラ +ムの前、そして挿入の開始点を超えてのバックスペースはできない。 + +下位互換性のために、値として"0"、"1"そして"2"を使用することもできる。 +|'backspace'|参照。 + +'backspace'オプションが"eol"を含まれている時に、カーソルが第1カラムにあり、3つ +のキーのうちどれかが押されると、現在の行が1行前の行に連結される。これはカーソ +ルの前にある<EOL>を事実上消している。 +{Vi: 行をまたいだり、挿入の開始点を超えての削除はできない} + + *i_CTRL-V_digit* +CTRL-Vに続けて、10進数、8進数、16進数のどれかで文字コードを直接入力することが +できます。この方法で改行(<NL>, 数値 10)以外のどんな文字でも入力することができ +ます。文字コードを入力するには5つの方法があります。 + +最初の文字 モード 最大文字数 最大値 ~ +(なし) 10進数 3 255 +o か O 8進数 3 255 +x か X 16進数 2 ff (255) +u 16進数 4 ffff (65535) +U 16進数 8 7fffffff (2147483647) + +入力できる文字数の最大まで入力すると、例えば<C-V>032と入力した場合にはスペー +ス(値32)が入る。一番上の桁のゼロは省略することができる。その場合には数値を入 +力した後に入力する文字は数字以外でなければならない。これは他のモードでも同じ +である。モード中で無効な文字を入力した場合には、それ以前に入力されたものが使 +われ無効な文字は通常の入力として扱われる。 + +値10を入力すると、それは0になってしまう。数値10は<NL>であり、内部で<Nul>文字 +を表すのに使われている。バッファをファイルに書き出すときに<NL>は<Nul>に変換 +される。<NL>は各行末に出力されるので、<NL>をファイルに書きたければ改行するこ +と。 + + *i_CTRL-X* *insert_expand* +CTRL-Xを押すと、幾つかのコマンドを使用することが出来る、サブモードに入る。これ +らのコマンドの多くはキーワードの補完である; |ins-completion|参照。Vimのコンパ +イル時に|+insert_expand|機能を無効にした場合には、この機能は使用できない。 + +次の2つのコマンドは、挿入モードを抜けることなくウィンドウを上下にスクロールさ +せることができる: + + *i_CTRL-X_CTRL-E* +CTRL-X CTRL-E ウィンドウを一行上にスクロール。 + + *i_CTRL-X_CTRL-Y* +CTRL-X CTRL-Y ウィンドウを一行下にスクロール。 + +CTRL-Xを押した後にCTRL-E(もしくはCTRL-Y)を押すと、現在のファイル内でカーソルを +現在の位置から動かすことなく、ウィンドウが一行上(下)にスクロールする。関係ない +キーが押されると、すぐにCTRL-Xモードは終了し、そのキーが挿入モードで押されたも +のとして解釈される。 + + +============================================================================== +2. もっと特別なキー *ins-special-special* + +下のキーは特別である。これらは現在の挿入を中断し、何かを行い、そして挿入を再開 +する。これは挿入モード出ることなく、何かをすることができることを意味している。 +これはモードが分かれていない普通のエディタのように、常に挿入モードを使用するの +が好みの場合には、とても便利である。これには'backspace'オプションに +"indent,eol,start"を設定し、'insertmode'オプションを設定すると良いだろう。コマ +ンドにファンクションキーをマップしたいならば、CTRL-Oを使うことができる。 + +これらのキーを使用する前後の変更(文字の挿入や削除)は、別々に取り消すことができ +る。最後の変更だけがやり直すことができ、常に"i"コマンドのように振舞う。 + +char action ~ +----------------------------------------------------------------------- +<Up> カーソルを1行上へ移動する *i_<Up>* +<Down> カーソルを1行下へ移動する *i_<Down>* +CTRL-G <Up> カーソルを1行上へ移動する *i_CTRL-G_<Up>* +CTRL-G k カーソルを1行上へ移動する *i_CTRL-G_k* +CTRL-G CTRL-K カーソルを1行上へ移動する *i_CTRL-G_CTRL-K* +CTRL-G <Down> カーソルを1行下へ移動する *i_CTRL-G_<Down>* +CTRL-G j カーソルを1行下へ移動する *i_CTRL-G_j* +CTRL-G CTRL-J カーソルを1行下へ移動する *i_CTRL-G_CTRL-J* +<Left> カーソルを1文字左へ移動する *i_<Left>* +<Right> カーソルを1文字右へ移動する *i_<Right>* +<S-Left> カーソルを1単語前へ("b"コマンドのように) *i_<S-Left>* +<C-Left> カーソルを1単語前へ("b"コマンドのように) *i_<C-Left>* +<S-Right> カーソルを1単語後へ("w"コマンドのように) *i_<S-Right>* +<C-Right> カーソルを1単語後へ("w"コマンドのように) *i_<C-Right>* +<Home> カーソルを行の最初の文字へ *i_<Home>* +<End> カーソルを行の最後の文字の後へ *i_<End>* +<C-Home> カーソルをファイルの最初の文字へ *i_<C-Home>* +<C-End> カーソルをファイルの最後の文字の後へ *i_<C-End>* +<LeftMouse> カーソルをマウスでクリックした位置へ *i_<LeftMouse>* +<S-Up> 1ページ上へ *i_<S-Up>* +<PageUp> 1ページ上へ *i_<PageUp>* +<S-Down> 1ページ下へ *i_<S-Down>* +<PageDown> 1ページ下へ *i_<PageDown>* +<MouseDown> 3行下へスクロール *i_<MouseDown>* +<S-MouseDown> 1ページ下へスクロール *i_<S-MouseDown>* +<MouseUp> 3行上へスクロール *i_<MouseUp>* +<S-MouseUp> 1ページ上へスクロール *i_<S-MouseUp>* +CTRL-O 1つコマンドを実行して、挿入モードに戻る *i_CTRL-O* +CTRL-G u それまでのundoのための記録を破棄する *i_CTRL-G_u* +----------------------------------------------------------------------- + +Note: カーソルキーを押した時に挿入モードから抜けてしまったら、'noesckeys'オプ +ションをチェックする。 + +CTRL-Oコマンドは時々副作用を生じる: カーソルが行末を越えている場合に、最後の文 +字をその行に表示してしまうかもしれない。マッピングでは<Esc>を使うのが無難です +(まず"x"を入力し、<Esc>を押すとカーソルは常にその文字の上に置かれます)。 + +Shiftキーを押しながらのカーソルキー操作は、全ての端末で可能なわけではない。 + +更に副作用として、"i"や"a"コマンドでの回数指定は無視される。そうしないと +CTRL-Oでのコマンドの繰り返しが複雑になってしまう。 + +CTRL-G u を使う例: > + + :inoremap <C-H> <C-G>u<C-H> + +これはアンドゥできるバックスペースキーを再定義している。これで以前の入力を変 +更することなく CTRL-O u を使ってバックスペースの結果を元に戻せる。 + +'whichwrap'オプションが適切に設定されているならば、行の先頭/末尾での<Left>と +<Right>キーは、カーソルを上の行や下の行へ移動させる。 + +CTRL-G j と CTRL-G k コマンドはカラムの前にテキストを挿入するのに使える。 +例: > + int i; + int j; +カーソルが最初の"int"にあるとき、"istatic <C-G>j "と入力するとこうなる: > + static int i; + int j; +全ての行のカラムに同じテキストを挿入するにはブロック選択コマンド "I"|v_b_I| +を使う。 + +============================================================================== +3. 'textwidth'と'wrapmargin'オプション *ins-textwidth* + +'textwidth'オプションは入力中の行が長くなりすぎる前に、自動的に改行を行うため +に使うことができる。'textwidth'オプションには望む最大行長を設定する。それを超 +えて文字(空白とタブを除く)を入力すると最後の単語が(それがその行の唯一の単語で +無いならば)次の行に置かれる。'textwidth'に0を設定すれば、この機能を無効にする +ことができる。 + +'wrapmargin'オプションはこれと殆ど同じことをする。違いは'textwidth'は固定幅な +のに対して、'wrapmargin'はスクリーンの幅に依存する。'wrapmargin'を使用すること +は、'textwidth'に(スクリーンのカラム数 - 'wrapmargin'に与えた値)を設定すること +に等しい。 + +'textwidth'と'wrapmargin'が両方とも設定されていた場合には、'textwidth'が使用さ +れる。 + +もしも本当には改行をしたくないけれども、見かけ上は具合の良い場所で折り返されて +ほしい場合には、'linebreak'オプションを参照。 + +自動的に改行されるのは、挿入モードを使用している時か、行に追加している時だけで +ある。置換モードで行の長さが代わらない時には、改行は行われない。 + +長い行は、マージンを超えて非空白文字を入力すると、改行される。この改行がなされ +る位置は、'formatoptions'オプションに与える文字で制御することが可能である: +"l" 挿入を始めた時に'textwidth'よりも既に長くない時にだけ、改行を行う。 +"v" 現在の挿入コマンドの間に挿入された空白文字の位置でのみ、改行を行う。これ + はほぼVi互換。 +"lv" 挿入を始めた時に'textwidth'よりも長くない行にだけ、かつその挿入コマンドの + 間に挿入された空白文字の位置でのみ、改行を行う。'textwidth'の境界を越えて + 非空白文字を入力した時に、"l"と違う。 + +テキストのブロックを整形(format)したいならば、"gq"オペレータを使うことができ +る。"gq"に続けて、ブロックの末尾までカーソルを動かす移動コマンドをタイプする。 +多くの場合、コマンド"gq}"が、望むこと(段落の最後までを整形)をしてくるだろう。 +代わりに、現在カーソルがどこにあるかに関わらず、パラグラフ全体をフォーマットし +てくれるコマンド、"gqap"を使うこともできる。またはビジュアル選択モードを使うこ +ともできる: "v"を押し、ブロックの最後まで移動し、"gq"とタイプする。|gq|も参 +照。 + +============================================================================== +4. 'expandtab'、'smarttab'それと'softtabstop'オプション *ins-expandtab* + +'expandtab'オプションがオンになっていると、タブ文字は空白文字(スペース)に展開 +され、その空白文字が挿入される。もし本当の<Tab>文字を挿入したいのならば、 +CTRL-Vを押してから入力する(CTRL-Vに他の動作がマップされているときはCTRL-Qを使 +う|i_CTRL-Q|)。 +'expandtab'は初期状態でオフになっている。置換モードでは、1文字が複数のスペース +で置換されることに注意。この結果、行の中の文字数は増える。バックスペースをする +と、1度に1つの空白が削除される。元々そこにあった文字は、1つのスペース(最後の1 +つ)を削除しただけで元に戻される。{Vi には'expandtabオプションは存在しない} + + *ins-smarttab* +'smarttab'オプションがオンの時には、1度の<Tab>で、行の先頭で<Tab>を1度押すと +'shiftwidth'の位置まで、その他の場所では'tabstop'の位置まで空白が挿入される。 +これは<Tab>文字の代わりに、度々スペースが挿入されることを意味している。 +'smarttab'がオフの時には、<Tab>では常に'tabstop'の位置まで空白が挿入され、 +'shiftwidth'は">>"などの時にだけ使用される。{Vi には無い機能} + + *ins-softtabstop* +'softtabstop'オプションが零ではない時、<Tab>は'softtabstop'で指定されるタブ位 +置まで空白を挿入し、<BS>は'softtabstop'で指定されるタブ位置までの空白を削除す +る。これは'softtabstop'に指定した値を'tabstop'に設定したのと同様に働くが、しか +し本当の<Tab>文字は依然'tabstop'の幅に展開されるので、他のアプリケーションでそ +のファイルを使う時にも正しく表示されるだろう。 + +もしも'softtabstop'がゼロでないならば、直前に挿入された文字が1つの空白文字(ス +ペース)で、そのカーソルの直前の(空白)文字だけを削除する時を除き、<BS>は空白文 +字を一つ前の'softtabstop'の位置まで削除しようと試みる。そうでないとカーソルの +直前の単一の文字を消すということができなくなってしまう。まず'softtabstop'の +キャラクタを消してから、それから望む場所にカーソルを持っていくために、余分な空 +白文字を置く必要がある。 + +============================================================================== +5. 置換モード *Replace* *Replace-mode* *mode-replace* + +ノーマルモードで"R"コマンドを使うと置換モードに入る。 + +置換モードでは、タイプされた全て文字のために行の文字が削除される。消す文字が無 +い場合(行末)、タイプされた文字は(挿入モードのように)追加される。このように行末 +に至るまで、行内のまとまった数の文字が同じままとどまる。<NL>がタイプされると、 +文字は消されずに改行が挿入される。 + +<Tab>文字には注意。<Tab>のある場所に通常の印刷可能文字をタイプすると、文字数は +同じだけど、見た目上のカラム数はより短くなってしまう。 + +置換モードで文字を消す(<BS>、CTRL-WもしくはCTRL-U)場合、変更を取り消すことにな +る。置き換えられてしまった文字が復帰する。存在していたテキストよりも多くタイプ +していた場合には、その追加した分は削除される。これは効果的に1度に1文字ずつの +UNDOになる。 + +'expandtab'オプションがオンの場合、<Tab>は幾つかのスペースで置き換えられる。結 +果として行中の文字数は増えることになる。バックスペースは一度に1つの文字を消 +す。もともとの文字は1つのスペース(最後の1つ)をバックスペースするだけで戻され +る。{Vi には'expandtab'オプションはない} + +============================================================================== +6. 仮想置換モード *vreplace-mode* *Virtual-Replace-mode* + +ノーマルモードで"gR"コマンドを使うと仮想置換モードに入る。 +{+vreplace機能を付けずにコンパイルした場合は利用できない} +{Vi には仮想置換モードはない} + +仮想置換モードは置換モードに良く似ているが、ファイルの実際の文字ごとにではな +く、スクリーン上の文字幅単位で置換することができ、そのためファイル内の他の文字 +の見た目の位置が移動することはない。 + +<Tab>をタイプすると通常のキャラクタを幾つか置換し、<Tab>の先頭で文字をタイプし +たならば、<Tab>は以前と同じ場所に存在することになるから、なにも置換されないこ +とになる。 + +<NL>をタイプしても、ファイル内の後の文字がその(見かけ上の)位置を変えることはな +い。現在行の残りの部分は<NL>によって置き換えられ(それはつまり、消されるという +こと)、次の行で置換が続行される。ファイルの終端に達するまで、新しい行は挿入さ +れない。 + +CTRL-TとCTRL-Dを使用したときには面白い効果がある。カーソルの前のキャラクタは普 +通に横にシフトされるが、しかしカーソルの後のキャラクタはそのままそこに残ろうと +する。CTRL-Tはシフトされた文字の下にある古い行を隠していくが、CTRL-Dはそれらを +再び表示してくれる。 + +置換モード同様に、<BS>他を使用すると置換されてしまった文字を戻すことができる。 +この機能は'smartindent', CTRL-TそれにCTRL-D, 'expandtab', 'smarttab', +'softtabstop', その他などが考慮される。 + +'list'モードで'cpoptions'に"L"が含まれない時には、仮想置換モードはまるで'list' +モードでないかのように振舞う。 + +TRANS_TODO +Note that the only times characters beyond the cursor should appear to move +are in 'list' mode, and occasionally when 'wrap' is set (and the line changes +length to become shorter or wider than the width of the screen), or +momentarily when typing over a CTRL character. +(訳注:ここ、どうしてもうまく訳せません…m(_ _)m) +コントロール文字は1文字でスクリーン文字を2文字占有する。それを通常の文字2文字 +で置換すると、最初の1文字目は挿入され2文字目がコントロール文字を置換する。 + +このモードは<Tab>でカラムが区切られた表へ、新しいデータをカラムを揃えて入力す +るような編集作業に便利である。 + +============================================================================== +7. 挿入モードの補完 *ins-completion* + +挿入・置換モードでは、既にタイプしたキーワードや行の一部を補完するコマンドを使 +用できる。これは複雑なキーワード(例えば大文字やアンダースコアを含む関数名など) +を使用しているときに便利である。 + +この機能はコンパイル時に|+insert_expand|機能を有効にしておかないと使用できな +い。 + +補完には次のような種類がある: + +1. 行全体 |i_CTRL-X_CTRL-L| +2. 現在のファイルのキーワード |i_CTRL-X_CTRL-N| +3. 'dictionary'のキーワード |i_CTRL-X_CTRL-K| +4. 'thesaurus'のキーワード, thesaurus-style |i_CTRL-X_CTRL-T| +5. 編集中と外部参照しているファイルのキーワード |i_CTRL-X_CTRL-I| +6. タグ |i_CTRL-X_CTRL-]| +7. ファイル名 |i_CTRL-X_CTRL-F| +8. 定義もしくはマクロ |i_CTRL-X_CTRL-D| +9. Vimのコマンドライン |i_CTRL-X_CTRL-V| +10. 'complete'のキーワード |i_CTRL-N| + +これら総て(2の「現在の..」を除く)はCTRL-Xモードで動作する。CTRL-Xモードとは挿 +入・置換モードのサブモードである。CTRL-XとCTRL-Xコマンドのどれか1つをタイプす +ることでCTRL-Xモードに移行する。CTRL-Xモードから抜けるにはコマンドとして有効で +はないキーをタイプする。有効なキーとはCTRL-Xコマンドそれ自身、CTRL-N(次の候 +補)、そしてCTRL-P(前の候補)である。 + +マッチの大文字/小文字を調節したいのならばオプション'infercase'を参照。 + +Note: CTRL-Xモードでの有効なキーはマップされない。これは":map ^F ^X^F"な指定を +可能にする(^Fと^XはそれぞれCTRL-FとCTRL-Xの意味)。これに対して、CTRL-Xモードを +終了させるキー(つまりCTRL-Xモードのコマンドとして有効ではないキー)はマップされ +る。'complete'を使って補完をするとき、マップは通常通りに適用される。 + +次のマッピングは補完コマンドのタイピングをちょっとだけ楽にしようと提案された +(これらは他のコマンドを覆い隠してしまうけれど): > + :inoremap ^] ^X^] + :inoremap ^F ^X^F + :inoremap ^D ^X^D + :inoremap ^L ^X^L + +例外として、レジスタの値を挿入するCTRL-RはCTRL-Xモードを終了しない。これは主 +に'='レジスタを使って関数などを呼び次の操作を決定することを可能にする。レジ +スタの内容(や'='レジスタの評価結果)がCTRL-Xモードで無効なキーだった場合、そ +れが入力されたものとしてCTRL-Xモードは終了する。 + +以下のものは現在の行がスペースだけなら<Tab>を入力し、違うならCTRL-Nの補間をす +る<Tab>をマッピングする例である: > + + function! CleverTab() + if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$' + return "\<Tab>" + else + return "\<C-N>" + endfunction + inoremap <Tab> <C-R>=CleverTab()<CR> + + +行全体を補完する *compl-whole-line* + + *i_CTRL-X_CTRL-L* +CTRL-X CTRL-L 現在行のカーソルの前にあるのと同じ文字で始まる行を、後 + 方(上方向)に探す。インデントは無視される。見つかった行 + がカーソルの前に挿入される。 + 'complete'オプションがどのバッファから探すのかを決める + のに使われます。しかし、読み込まれたバッファだけが使わ + れます。 + CTRL-L or + CTRL-P 後方に、次にマッチする行を探す。これによりみつかった行 + で、以前のマッチした行を置き換える。 + + CTRL-N 前方に、次のマッチする行を探す。これによりみつかった行 + で以前のマッチした行を置き換える。 + + CTRL-X CTRL-L 行を展開した後で再びCTRL-X CTRL-Lをタイプすれば、それ + に続けて付加的に行を取得でき、CTRL-Xを2回押すことで終 + 了する。 + +現在のファイルのキーワードで補完する *compl-current* + + *i_CTRL-X_CTRL-P* + *i_CTRL-X_CTRL-N* +CTRL-X CTRL-N カーソルの前にあるキーワードで始まる単語を、前方に検索 + する。みつかったキーワードはカーソルの前に挿入される。 + +CTRL-X CTRL-P カーソルの前にあるキーワードで始まる単語を、後方に検索 + する。みつかったキーワードはカーソルの前に挿入される。 + + CTRL-N 次にマッチするキーワードを前方に検索する。このキーワー + ドは前回マッチしたキーワードを置き換える。 + + CTRL-P 次にマッチするキーワードを後方に検索する。このキーワー + ドは前回マッチしたキーワードを置き換える。 + + CTRL-X CTRL-N or + CTRL-X CTRL-P 続けてCTRL-X CTRL-NやCTRL-X CTRL-Pを使用することで、 + 最後の展開に続けて違うコンテキストで単語を補完すること + ができる。これはCTRL-Xを2度押すことで終了できる。 + +カーソルの直前にあるキーワード(アルファベットと'iskeyword'の文字で構成される名 +前)が、直前に"\<"(単語の開始の意味)が補われて検索パターンとして使用される。 +キーワードがない場合には"\<\k\k"(少なくとも2文字以上のキーワードの開始位置)が +検索パターンに用いられる。 + +置換モードでは、置換される文字数はマッチした文字列の長さに依存する。これはマッ +チした文字列を置換モードでタイピングしたのと同じように振舞う。 + +カーソルの直前に有効なキーワードの文字がなかった場合、少なくとも2文字以上のあ +らゆるキーワードがマッチする。 + 例えば、次の結果を得るには: + printf("(%g, %g, %g)", vector[0], vector[1], vector[2]); + このようにタイプする: + printf("(%g, %g, %g)", vector[0], ^P[1], ^P[2]); + +同じ補完結果が繰り返される場合にはそれがスキップされる; そのためCTRL-NやCTRL-P +を押すたびに違うマッチ文字列が挿入されることになる(1つしかマッチするキーワード +がない場合は除く)。 + +マッチ結果が1文字のとなる補完候補文字列は、通常の使用で実際に補完して欲しいで +はないことがほとんどなので、補完候補に含まない。 + 例えば、次の結果を得るには: + printf("name = %s\n", name); + このようにタイプする: + printf("name = %s\n", n^P); + こうでも良い: + printf("name = %s\n", ^P); +'\n'の中の文字'n'はスキップされる。 + +単語補完を開始した後で、補完済み単語に続く単語を検索するのに、CTRL-X CTRL-Pも +しくはCTRL-X CTRL-Nを使うことができる。これらのシーケンスはテキストから探さ +れ、単語を拡張補完し、さらに拡張補完していくことができる。これは複雑な単語の +シーケンスを繰り返す必要があるときに役に立つ。CTRL-PとCTRL-Nは少なくとも2文字 +以上の文字列を探すけれども、CTRL-X CTRL-PとCTRL-X CTRL-Nは1文字の文字列も探し +出す。 + 例えば、次の結果を得るには: + México + このようにタイプする: + M^N^P^X^P^X^P +CTRL-Nは補完を開始し、CTRL-Pで最初の1文字"M"に戻し、次の2つのCTRL-X CTRL-Pが +"é"と";xico"を得る。 + +直前の補完が'textwidth'よりも長いために分裂している場合、現在の行のテキストだ +けが使用される。 + +マッチ文字列が行末で見つかった場合には、次の行の最初の単語が挿入され"word from +next line"というメッセージが表示される。さらに続けてCTRL-X CTRL-Pもしくは +CTRL-X CTRL-Nで検索を行なうと、その単語のある行で続く文字が検索される。 + + +'dictionary'のキーワードで補完する *compl-dictionary* + + *i_CTRL-X_CTRL-K* +CTRL-X CTRL-K カーソルの直前のキーワードで始まる単語をオプション + 'dictionary'で与えられたファイルから検索する。これは + CTRL-Nに似ているが、現在のファイル内は検索せずに辞書 + ファイル内だけを検索する。見つけたキーワードはカーソル + の直前に挿入される。最初のマッチが使用される前に総ての + マッチが検索されるので、かなり遅くなる可能性がある。オ + プション'dictionary'の初期値は空である。 + どこから単語リストを見つけ出すかについては、オプション + 'dictionary'を参照。 + + CTRL-K or + CTRL-N マッチするキーワードの前方検索。直前にマッチしたキー + ワードは新しいもので置き換えられる。 + + CTRL-P マッチするキーワードの後方検索。直前にマッチしたキー + ワードは新しいもので置き換えられる。 + + *i_CTRL-X_CTRL-T* +CTRL-X CTRL-T CTRL-X CTRL-Kと同じだが、'dictionary'ではなく + 'thesaurus'オプションを使う。たとえ単語が完全でなくて + も、類語ファイルの中に単語が見つかると、その行の他の単 + 語も一致とみなされる。したがって単語は完全に置き換えら + れる。 + + 例えば、'thesaurus'ファイルにこのような行があるし + て: > + angry furious mad enraged +< カーソルが"ang"の後にあり、CTRL-X CTRL-Tを押すと + "angry"が補間される。続けて補間すると + "furious"、"mad"、...、と置き換えられる。 + 他にも二つの言語間の単語の置き換えや、API関数をキー + ワードによってグループ分けするのに使える。 + + CTRL-T or + CTRL-N 次のキーワードを前方に探す。見つかったキーワードはそ + の前のキーワードを置き換える。 + + CTRL-P 次のキーワードを後方に探す。見つかったキーワードはそ + の前のキーワードを置き換える。 + + +編集中と外部参照しているファイルのキーワードで補完する *compl-keyword* + +'include'オプションは外部参照(インクルード)ファイルを含む行を指定するのに使 +う。'path'オプションはインクルードファイルを探す場所を指定するのに使う。 + + *i_CTRL-X_CTRL-I* +CTRL-X CTRL-I カーソルの直前と同じ文字で始まる最初のキーワードを、現 + 在のファイルとインクルードファイルから探し出す。マッチ + したキーワードはカーソルの直前に挿入される。 + + CTRL-N 次にマッチするキーワードを前方検索する。直前にマッチし + たキーワードは新しいもので置き換えられる。 + Note: CTRL-Iは補完が成功した時に入力する<Tab>と同じで + ある。従ってCTRL-Iを次のマッチを探すために使用すること + はできない。 + + CTRL-P 次にマッチするキーワードを後方検索する。直前にマッチし + たキーワードは新しいもので置き換えられる。 + + CTRL-X CTRL-I 直前の補完の文脈で続けてCTRL-X CTRL-Iによる単語補完を + 行なう。2連CTRL-Xが使用されるまで続く。 + + +タグで補完する *compl-tag* + *i_CTRL-X_CTRL-]* +CTRL-X CTRL-] カーソルの直前と同じ文字で始まる最初のタグを探し出す。 + マッチしたタグはカーソルの直前に挿入される。アルファ + ベットと'iskeyword'で指定される文字が、タグ名にどの文 + 字が含まれるかを決定する(これはキーワードと同じルー + ル)。|CTRL-]|も参照。'showfulltag'オプションはタグ定義 + の周辺からコンテキストに含めるために使用される。 + CTRL-] or + CTRL-N 次にマッチするタグを前方検索する。直前にマッチしたタグ + は新しいもので置き換えられる。 + + CTRL-P 次にマッチするタグを後方検索する。直前にマッチしたタグ + は新しいもので置き換えられる。 + + +ファイル名で補完する *compl-filename* + *i_CTRL-X_CTRL-F* +CTRL-X CTRL-F カーソルの直前と同じ文字で始まる最初のファイル名を探し + 出す。マッチしたファイル名はカーソルの直前に挿入され + る。アルファベットと'isfname'で指定される文字が、ファ + イル名にどの文字が名前に含まれるかを決定する。Note: こ + の段階では(まだ)'path'オプションは使用されない。 + CTRL-F or + CTRL-N 次にマッチするファイル名を前方検索する。直前にマッチし + たファイル名は新しいもので置き換えられる。 + + + CTRL-P 次にマッチするファイル名を後方検索する。直前にマッチし + たファイル名は新しいもので置き換えられる。 + + +定義もしくはマクロで補完する *compl-define* + +定義を含んだ行を特定するのに'define'オプションが使用される。インクルードファイ +ルを含んだ行を特定するのに'include'オプションが使用される。インクルードファイ +ルを探すのに'path'オプションが使用される。 + + *i_CTRL-X_CTRL-D* +CTRL-X CTRL-D カーソルの直前と同じ文字で始まる最初の定義(もしくはマ + クロ)名を、現在のファイルとインクルードファイルから探 + し出す。マッチした定義名はカーソルの直前に挿入される。 + CTRL-D or + CTRL-N 次にマッチするマクロ名を前方検索する。直前にマッチした + マクロ名は新しいもので置き換えられる。 + + CTRL-P 次にマッチするマクロ名を後方検索する。直前にマッチした + マクロ名は新しいもので置き換えられる。 + + CTRL-X CTRL-D 直前の補完の文脈で続けてCTRL-X CTRL-Dによる単語補完を + 行なう。2連CTRL-Xが使用されるまで続く。 + +Vimコマンドの補間 *compl-vim* + +補間は文脈に左右される。コマンドラインでの入力時のように機能する。Exコマンドと +その引数も補間する。 + + + *i_CTRL-X_CTRL-V* +CTRL-X CTRL-V カーソルの前に何があるかを推測し、最初に一致するもの + を探す。 + Note: CTRL-Vがマッピングに使われていれば、たいていは + CTRL-Qが変わりに使える|i_CTRL-Q|。 + CTRL-V or + CTRL-N 次の一致を前方に探す。そしてその前のものを置き換え + る。 + + CTRL-P 次の一致を後方に探す。そしてその前のものを置き換え + る。 + + CTRL-X CTRL-V 加えて言うと CTRL-X CTRL-V は CTRL-V と同じように働 + く。これはVimコマンドの補間をマッピングをするのに使 + える。例えば: > + :imap <Tab> <C-X><C-V> + + +キーワードを別のソースから補完する。 *compl-generic* + + *i_CTRL-N* +CTRL-N カーソルの直前と同じ文字で始まる単語を、'complete'オプ + ションで指定された場所から後方検索する。マッチしたキー + ワードはカーソルの直前に挿入される。 + + *i_CTRL-P* +CTRL-P カーソルの直前と同じ文字で始まる単語を、'complete'オプ + ションで指定された場所から前方検索する。マッチしたキー + ワードはカーソルの直前に挿入される。 + + CTRL-N 次にマッチするキーワードを前方検索する。直前にマッチし + たキーワードは新しいもので置き換えられる。 + + CTRL-P 次にマッチするキーワードを後方検索する。直前にマッチし + たキーワードは新しいもので置き換えられる。 + + CTRL-X CTRL-N or + CTRL-X CTRL-P 直前の補完の文脈で続けてCTRL-X CTRL-NもしくはCTRL-X + CTRL-Pによる単語補完を行なう。2連CTRL-Xが使用されるま + で続く。 + +============================================================================== +8. 挿入モードのコマンド *inserting* + +下のコマンドはバッファに新しいテキストを挿入するのに使うことができる。それらは +全て取り消すことができるし、"."コマンドで繰り返すことができる。 + + *a* +a カーソルの後ろにテキストを[count]回追加する。 + 'virtualedit'がセットされていないなら、カーソルが空行 + の最初のカラムにあるときはそこに挿入する。 + + *A* +A 行末にテキストを[count]回追加する。 + +<insert> or *i* *insert* *<Insert>* +i カーソルの前にテキストを[count]回挿入する。 + 挿入モード中のCTRL-O|i_CTRL-O|で使うときはカウントはサ + ポートされていない。 + + *I* +I 行の先頭の非空白文字の前にテキストを[count]回挿入す + る。 + + *gI* +gI カラム1からテキストを[count]回挿入する。{Vi にはない} + + *gi* +gi カレントバッファの最後に入力がされた場所にテキストを + 入力する。 + これは|'^|マークを使う。マークが行末を越えているとき + に"'^i"と動作が異なる。 + 行が挿入、削除されていると入力位置は調整されるが、文 + 字単位の変更は考慮されない。 + |:keepjumps|コマンドが使われると|'^|マークは変更され + る。 + {Vi にはない} + + *o* +o カーソルのある行の下に新しい行を作り、そこにテキストを + [count]回繰り返し挿入する。{Vi:空行を[count]行挿入す + る} + + *O* +O カーソルのある行の上に新しい行を作り、そこにテキストを + [count]回繰り返し挿入する。{Vi:空行を[count]行挿入す + る} + +これらのコマンドはテキストの挿入を開始するのに使われる。挿入モードは<Esc>で止 +めることができる。挿入モードでのその他の特殊な文字は|mode-ins-repl|を参照。 +[count]の効果は挿入モードから抜けた時に現れる。 + +'autoindent'が設定されている時には、新しい行のインデントに、前の行と同じものが +使用される。'smartindent'か'cindent'が設定されている時には、行のインデントはC +プログラム(ソースコード)のスタイルに、自動的に調整される。 + +'textwidth'は、行の最大幅(文字数)を設定することができる。文字を追加している時 +に行が長くなりすぎると、自動的に改行が挿入される。 + + +============================================================================== +9. Exの挿入コマンド *inserting-ex* + + *:a* *:append* +:{range}a[ppend] 指定された行の下に何行分かのテキストを挿入する。 + {range}が省略された場合、テキストは現在行の後から挿入 + される。 + + *:i* *:in* *:insert* +:{range}i[nsert] 指定された行の上に何行分かのテキストを挿入する。 + {range}が省略された場合、テキストは現在行の前から挿入 + される。 + +これら2つのコマンドは、"."だけを含んだ行を入力するまで、挿入すべきテキストを待 +ちつづける。バックスラッシュで始まる行には警戒すべし。参照 +|lines-continuation|。 +NOTE: ":append"と":insert"は":if"と":endif"の間では機能しません。 + + *:start* *:startinsert* +:star[tinsert][!] このコマンドの実行直後に挿入モードを開始する。ノーマル + モードで"i"をタイプしたように働く。!が含まれていた時に + は、行に追加する"A"のように働く。そうでなければ現在の + 位置から挿入が始まる。関数やスクリプトの中でこのコマン + ドを使用したときには、関数やスクリプトが終了してから挿 + 入が始まることに注意。 + {Vi にはない} + {+ex_extra機能を無効にしてコンパイルした場合は利用でき + ない} + + *:stopi* *:stopinsert* +:stopi[nsert] できるだけ早く挿入モードを中止します。挿入モードで + <Esc>を押したように機能します。 + オートコマンドで使うことができます。例: > + :au BufEnter scratch stopinsert + +============================================================================== +10. ファイルを挿入する *inserting-file* + + *:r* *:re* *:read* +:r[ead] [name] カーソルの後ろに、ファイル[name] (省略した場合:現在の + ファイル)を挿入する。 + +:{range}r[ead] [name] 指定したラインの下に、ファイル[name](省略した場合:現在 + のファイル)を挿入。 + + *:r!* *:read!* +:r[ead] !{cmd} カーソルの後ろに、{cmd}を実行したその標準出力の内容を + 挿入。コマンドの出力を蓄え、バッファに読み込むために、 + テンポラリファイルが使用される。コマンドの出力を保存す + るために'shellredir'が使用されるので、標準エラー出力も + 含めるか含めないか指定することができる。{cmd}は + ":!{cmd}と同じように実行されるので、'!'だけを指定した + 場合には、以前に実行された|:!|コマンドに置き換えられ + る。 + +これらのコマンドは、ファイルの内容、もしくはコマンドの出力をバッファへ挿入す +る。これらは取り消す(UNDO)ことができる。これらは"."コマンドで繰り返すことはで +きない。これらは行単位で行われる操作で、挿入はカーソルの直後のラインからか、指 +定したラインの直後から行われる。一番最初のラインより上(ファイルの先頭)に挿入す +るには":0r {name}"というコマンドを使う。 + +":read"コマンドの後には、新しいラインの左で、最初の空白でない文字にカーソルが +移動する。もしExモードでなければ、カーソルは新しい行の最後の左側に移動する(残 +念だがViとの互換性のため)。 + +":r"にファイル名が与えられた場合、それを裏バッファのファイルになる。これは例え +ば代わりにそのファイルを編集したい時に使うことができる: "e! #"。'cpoption'オプ +ションから'a'フラグを削除することで、オフに切り替えることができる。 + + *file-read* +'fileformat'オプションがファイルの<EOL>の流儀を決定する: +'fileformat' 文字 名前 ~ + "dos" <CR><NL> or <NL> DOS format + "unix" <NL> Unix format + "mac" <CR> Mac format +以前には'textmode'が使用された。それは現在では廃れている。 + +'fileformat'が"dos"の時には、<NL>の前の<CR>は無視され、ファイルの終端にある +CTRL-Zもまた無視される。 + +'fileformat'が"mac"の時には、ファイル内の<NL>は内部的に<CR>によって表現され +る。これは<NL>を表現するために使用される<NUL>との混同を避けるためである。 +|CR-used-for-NL|参照。 + +'fileformats'オプションが空でなかったら、Vimは<EOL>のタイプを識別しようと試み +る(|file-formats|参照)。しかしながら、'fileformat'オプションは変更されない。検 +出されたフォーマットはファイルの読み込みの際にだけ使用される。 +'fileencodings'についても同様。 + +MS-DOS、Win32そしてOS/2以外のシステムでは、DOSフォーマットのファイルを読み込ん +だときにはそれを知らせるために、"[dos format]"というメッセージが表示される。 +マッキントッシュ、MS-DOS、Win32そしてOS/2においては、ファイルがUnixフォーマッ +トであった場合に、"[unix format]"というメッセージが表示される。 +マッキントッシュ以外のシステムでは、ファイルがマックフォーマットであった場合 +に、"[Mac format]"というメッセージが表示される。 + +":r !”をどう使うかの例: > + :r !uuencode binfile binfile +このコマンドは"binfile"を読み込みuuencode化して、それを現在のバッファに読み込 +む。e-mailを編集していて、バイナリファイルを含めたい時に便利である。 + + *read-messages* +ファイルを読み込むときVimはその情報を表示する。いくつかのものについての説明 +をあげる。他のものは見ればわかる。ロングとショートのどちらを使うかは +'shortmess'オプションに依存する。 + + ロング ショート 意味 ~ + [readonly] {RO} ファイルは書き込み制限されている + [fifo/socket] ストリームを使っている + [fifo] FIFOストリームを使っている + [socket] ソケットストリームを使っている + [CR missing] "dos"ファイルフォーマットで読み込ん + でいてCRのないNLを見つけた + [NL found] "mac"ファイルフォーマットで読み込ん + でいてNLを見つけた(unixフォーマット + なのだろう) + [long lines split] 少なくとも一つの行が二つに分割された + [NOT converted] 'fileencoding'から'encoding'の変換が + 失敗した + [converted] 'fileencoding'から'encoding'への変換 + を実施した。 + [crypted] 暗号が解除された + [READ ERRORS] ファイルを全て読み込めなかった + +(訳注)以下日本語メッセージの場合 + ロング ショート 意味 ~ + [読込専用] [読専] ファイルは書き込み制限されている + [FIFO/ソケット] ストリームを使っている + [FIFO] FIFOストリームを使っている + [ソケット] ソケットストリームを使っている + [CR無] "dos"ファイルフォーマットで読み込ん + でいてCRのないNLを見つけた + [NL有] "mac"ファイルフォーマットで読み込ん + でいてNLを見つけた(unixフォーマット + なのだろう) + [長行分割] 少なくとも一つの行が二つに分割された + [未変換] 'fileencoding'から'encoding'の変換が + 失敗した + [変換済] 'fileencoding'から'encoding'の変換 + を実施した。 + [暗号化] 暗号が解除された + [読込エラー] ファイルを全ては読み込めなかった + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/rileft.jax b/ja/rileft.jax new file mode 100644 index 000000000..3cb0cdedb --- /dev/null +++ b/ja/rileft.jax @@ -0,0 +1,180 @@ +COMMENT: 左←右書きモードとヘブライ語の入力 +STATUS: finished 5.7 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*rightleft.txt* For Vim version 5.7. Last change: 1999 Jun 14 + + + VIMリファレンスマニュアル by Avner Lottem + updated by Nadim Shaikli + + +Vimにおける"右左"書きとヘブライマッピング *hebrew* + + +これらの関数はAvner Lottemによって作成された +E-mail: <alottem@iil.intel.com> +Phone: +972-4-8307322 + +{Vi にはこれらのコマンドはない} + + *E26* +ここの全ての機能は|+rightleft|機能がコンパイル時に有効にされていた場合に使用可 +能である。 + + +イントロダクション +------------------ +右左指向ファイルでは文字は画面の右から左へ書かれる。この種のファイルはヘブライ +語のドキュメントをTeX--XeT、troffh、fax文章、ヘブライ語のメモなど使って書いて +いる時にとても役に立つ。 + +全ての文字(もしくは文字のグループ)に方向がエンコードされた論理順序ファイル(原 +文: Logical order files)はサポートされない。この種のサポートは既存のエディタに +簡単に追加できるものではないので考慮していない。ヘブライ語のコマンドはないけれ +どもプロンプトとヘルプファイルが追加され、標準的なViのインターフェースが整備さ +れている。既存の近代的で生きたエディタにヘブライ語支援機能を組み込むことの狙い +は、それに続くバージョンでヘブライ語支援の試みを継続することである。多くのヘブ +ライ語支援パッケージが、個々のオリジナル(英語の)ソフトウェアに対してデザインさ +れてきた。そのオリジナルが開発を続ければヘブライ語は常に遅れを取ることになる。 +従ってVimのヘブライ語支援機能は可能な限りシンプルに(短く)なるように心がけ、そ +の結果オリジナルソースに組み込まれることが可能となった。 + + +概要 +---------- +o "左右"ファイルの編集はオリジナルのVimと同じで、変更はない + +o "右から左"ウィンドウでファイルを閲覧、編集できる。ファイルはウィンドウ単位 + で指向方向を選択できるので、同じファイルを"右左"と"左右"ウィンドウで同時に + 閲覧することが可能である。 + (これはTeX--XeT文書を編集する時に時々便利) + +o オリジナルのVimとの互換性。ほとんど全ての機能が"右左"モードでも使用できる。 + (下記「バグ」の章を参照) + +o キーボードマッピングの切替とインサートモードの反転が単一のコマンドで行なえ + る。 + +o 反転入力モードからの復帰がファイルの正しい場所で行なわれる(可能な限り)。 + +o "右左"機能を使用するのに特別な端末を必要としない。"右左"拡張機能は完全に + ハードウェア非依存である。ヘブライ文字のフォントが必要なだけである。 + + MITのXのディストリビューションには少なくとも2つのフォントが含まれている: + heb6x13とheb8x13。幾つかのフォントは次のURLにある + http://sunsite.unc.edu/pub/Linux/X11/fonts/hebxfonts-0.2.tgz + More pointers are in the Hebrew HOWTO on + ヘブライ語のHOWTOにさらにポインタがある + http://sunsite.unc.edu/pub/Linux/docs/HOWTO + MS-WindowのDOS窓でヘブライ語フォントを作成するには、次のを参照。 + ftp://tochna.technion.ac.il/pub/staff/lottem/doswin-0.1.tgz. + +o このサポートに手を加え他の"右左"言語(アラビア語など)に対応させるのは簡単だ + ろう。文字エンコードに合わせてキーボードマッピングを変更するだけで良い。 + + +変更の詳細 +-------------- ++ オプション: + + 'rightleft' ('rl') ウィンドウを"右から左"指向に設定する。 + + 'hkmap' ('hk') 挿入/置換モードでキーボードをヘブライ語にマップする。 + + 'aleph' ('al'), numeric, ヘブライ語のアルファベットコードの10進数を、キ + ーボードマッピングのために保持する。 + + ++ エンコーディング: + + UNIXではISO 8859-8エンコーディング(ヘブライ文字のコード: 224-250)。 + + MS DOSではPCエンコーディング(ヘブライ文字のコード: 128-154)。 + これらは初期値で'aleph'オプションを使えば上書きできる。 + ++ Vimの起動引数: + + 'vim -H file'でヘブライ語ファイルの編集を開始できる。すなわち'rightleft' + と'hkmap'が設定される。 + ++ キーボード: + + 'allowrevins'オプションが挿入とコマンドラインモードでのCTRL-_コマンドを + 有効化する。 + + + 挿入/置換モードでのCTRL-_は'revins'と'hkmap'を次のように切り替える: + + "右左"窓においては、英語が入力されることが仮定されるので'revins' + と'nohkmap'が切り替えられる。 + + 非"右左"ウィンドウにおいては、ヘブライ語が入力されることが仮定されるので + 'revins'と'hkmap'が切り替えられる。 + + CTRL-_を押すとカーソルはタイプされたテキストの末尾に移動する。 + + + コマンドモードでのCTRL-_はキーボードマッピングを切り替えるだけである(下 + 記「バグ」の章を参照)。この設定は'hkmap'オプションとは独立であり、 + 'hkmap'が適用されるのは挿入/置換モードだけである。 + + Note: 幾つかのキーボードでは、CTRL-_はCTRL-?にマップされる。 + + +バグ +---- +o "右左"ウィンドウではCTRL-AとCTRL-X(足し算、引き算)コマンドは正しく働かな + い。 + +o 逆挿入とコマンドラインでの"右左"モードはサポートされない。しかしながらマッ + ピング、短縮入力、ヘブライ語による検索、コマンドラインでの"左右"入力が可能 + なので、エディタの機能性はそこなわれない + +o "右左"モードでは多少遅くなる。"右左"の動作は端末制御ではなくVimでのエミュ + レーションによって実現されているため。 + +o 7ビット端末はサポートしない。完全なヘブライ語と英語フォント(ヘブライ語と英 + 語を切り替えるのにエスケープシーケンスを必要としない)のある端末だけがサポー + トされる。 + +o Athena GUIを使用すると、下スクロールバーが間違った方向に働く。これを修正す + るのは難しい。 + +o 'rightleft'と'revins'が両方とも有効になっていると: 'textwidth'が動作しない。 + 行が折り返されない; 長い行が作成される。 + + +後方タイピング *ins-reverse* + +もしも'revins'(逆挿入)オプションが有効になっていると、挿入した文字が後方に流れ +ていく。ヘブライ語を入力するのに使える。キャラクタを挿入すると、カーソルはその +場から動かずテキストが右へ流れていく。<BS>はカーソルの下の文字を削除する。 +CTRL-WとCTRL-Uも反対の方向へ働く。'backspace'オプションが指定されているかに関 +わらず<BS>、CTRL-W、CTRL-Uは入力の開始点や行末で停止しない。 + +(まだ)逆置換モードは実装されていない。 + +'showmode'オプションが設定されていると、逆挿入モードが有効になっている時には状 +態表示行(ステータスライン)に"-- REVERSE INSERT --"が表示されるだろう。 + +'allowrevins'オプションが有効になっていると、CTRL-_を入力することでも逆挿入 +モードに入ることができる。それには特別な機能がある: 第1に、キーボードのマッピ +ングがウィンドウの指向に合わせて変更される -- "左右"ウィンドウならば、ヘブライ +語を入力するために'revins'が設定され、キーボードはヘブライ語用に変更される +('hkmap'が有効化); "右左"ウィンドウならば、英語テキストを入力するために +'revins'が設定され、キーボードは英語用に変更される('hkmap'がリセット)。次に +CTRL-_で'revins'を終了すると、カーソルは(可能ならば)入力したテキストの末尾に移 +動する。 + + +"右左"ウィンドウでの貼り付け +---------------------------------- + +マウスでカットした文章を"右左"ウィンドウに貼り付けると、"左右"バッファからカッ +トされたバッファの文字を"右左"ファイルへ入力することになるので、テキストは反転 +される。これを避けるには貼り付け前に(CTRL-?かCTRL-_をタイプすることで)'revins' +を切り替える。 + + +ヘブライ文字と'isprint'の値 +-------------------------------------------- + +時々ヘブライ語のコードは'isprint'の値で定義される表示不可領域にある。例えば +Linuxのコンソールでは、ヘブライ語のフォントエンコーディングは128から始まり、 +'isprint'の初期値は@,161-255となっている。この結果全てのヘブライ文字は~xのよう +に表示される。この問題を解決するには、set isprint=@,128-255と設定する。 + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/variaous.jax b/ja/variaous.jax new file mode 100644 index 000000000..360ef39da --- /dev/null +++ b/ja/variaous.jax @@ -0,0 +1,396 @@ +COMMENT: 様々なコマンド(コマンド、ヘルプ、印刷) +STATUS: finished 5.7 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*various.txt* For Vim version 5.7. Last change: 2000 Apr 22 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +様々なコマンド *various* + +1. 様々なコマンド |various-cmds| +2. オンラインヘルプ |online-help| + +============================================================================== +1. 様々なコマンド *various-cmds* + + *CTRL-L* +CTRL-L 画面を消去して再描画する。 + + *N<Del>* +<Del> 数値を入力している時: 最後の数字を削除する。 + Note: これを行なうために<BS>を使用したい場合、次のマッ + ピングを自分の.vimrcに追加する: + :map CTRL-V <BS> CTRL-V <Del> + <Del>が望みどおりに働かない場合には|:fixdel|を参照。 + +:as[cii] または *ga* *:as* *:ascii* +ga カーソルの下の文字の文字コードを、10/16/8進数で表示す + る。例えばカーソルが'R'の上にあるときは: + <R> 82, Hex 52, Octal 122 + 文字が非ASCIIではあるが'isprint'オプションで指定され表 + 示可能である時には、表示不可能な形も同時に表示される。 + 文字コードが127よりも大きい時には<M-x>という形式も同時 + に表示される。例: + <~A> <M-^A> 129, Hex 81, Octal 201 + <p> <|~> <M-~> 254, Hex fe, Octal 376 + (<p>は特別な文字とみなす) + ファイルの中の<Nul>文字は内部的に<NL>として保存される + が、次のように表示される: + <^@> 0, Hex 00, Octal 000 + 覚え方: Get Ascii value(アスキーコードを取得) + {not in Vi} + + *:p* *:pr* *:print* +:[range]p[rint] [range]の範囲の行を表示する(省略時は現在行)。 + Note: テキストファイルを表示する方法を探しているなら + ば、外部プログラムが必要になる。GUIを使用しているなら + ばFile.Printメニュー項目を使うことができる。 + +:[range]p[rint] {count} + [range]から(省略時は現在行 |cmdline-ranges|)始まる + {count}行を表示する + + *:P* *:Print* +:[range]P[rint] [count] + ":print"と同様。シフトキーを長く押し続けてしまう人のた + めに追加された。 + + *:l* *:list* +:[range]l[ist] [count] + :printと同じだが、表示不可文字を'^'と一緒に表示する。 + + *:nu* *:number* +:[range]nu[mber] [count] + :printと同じだが、各行の先頭にその行番号を付加する。 + ('highlight'オプションも参照) + + *:#* +:[range]# [count] :numberと同じ。 + + *:z* +:{range}z[+-^.=]{count} {range}で指定される行、されなかった場合は現在行の周辺 + 数行を表示する。何行表示したいかを指定する場合{count} + を使用する; 指定しない場合には現在のウィンドウの大きさ + が使用される。 + + :zは単独で使うことも、修飾マークを付加して使うこともで + きる。それらには次のような効果がある。 + + 記号 開始行 終了行 新しい位置 ~ + ---- ------ ------ ---------- + + 現在行 1画面先 1画面先 + - 1画面前 現在行 現在行 + ^ 2画面前 1画面前 1画面前 + . 半画面前 半画面先 半画面先 + = 半画面前 半画面先 現在行 + + どのマークも指定しなかった場合、"+"を指定したことにな + る。マークが"="ならば、現在行の周りにマイナス記号で + 作った線が表示される。 + + *:=* +:= カーソルのある行番号を表示する。 + +:norm[al][!] {commands} *:norm* *:normal* + {commands}をノーマルモードコマンドとして実行する。これ + によりコマンドラインでタイプされたノーマルモードのコマ + ンドを実行することができる。{commands}はタイプされたよ + うに実行される。アンドゥ時には全てのコマンドが一度に取 + 消される。[!]が与えられた場合、マッピングは行なわれな + い。{commands}はコマンドとして完結するべきである。 + {commands}が完結していない場合には、更に文字がタイプさ + れる必要があるが、この間ディプレイは更新されない。これ + は挿入コマンドが完了されなければならないことを意味して + いる(インサートモードを始めるには|:startinsert|を参 + 照)。 + '|'はコマンドの一部として考えられてしまうので、続けて + 他のコマンドを書くことはできない。このコマンドは + 'maxmapdepth'で制限されるだけ再帰的に呼び出すことがで + きる。 + このコマンドが再マップ不可能マッピング|:noremap|から呼 + ばれたときには、引数は全くマッピングされない。 + |:execute|を使用して副次的に使用するときには、引数とし + て1つの式が使われる。これにより印刷可能文字を扱うこと + ができる。例: +> :exe "normal \<c-w>\<c-w>" + ヒント: {commands}が<Esc>で終わっている時、Vimはそれを + ファンクションキーの開始だと考え、'ttimeout'が適用され + るので、非常に遅くなるか、何か定義されないタイプがされ + るまで待機することになる。[!]を含む場合もこのケースに + なる。 + {Vi には、もちろんない} + コンパイル時に|+ex_extra|機能が無効化されていると使 + 用できない。 + +:{range}norm[al][!] {commands} *:normal-range* + {range}の各行に{commands}のノーマルモードコマンドを実 + 行する。{commands}を実行する前に、領域各行の最初のカラ + ムにカーソルが置かれる。その他の点については領域指定の + 無い":normal"コマンドと同じ意味である。 + {Vi にはない} + {not in Vi} + コンパイル時に|+ex_extra|機能が無効化されていると使 + 用できない。 + + *:sh* *:shell* +:sh[ell] このコマンドはシェルを起動する。シェルを終了した時に + ("exit"コマンドの後)Vimに戻ってくる。シェルコマンドの + 名前はオプション'shell'から与えられる。Note: これは + AmigaのVimにおいてコンパイラからQuickFixモードで起動さ + れた時には、コンパイラが標準出力を非インタラクティブ + モードにしてしまうので使用できない。 + + *:!cmd* *:!* +:!{cmd} シェルで{cmd}を実行する。'shell'と'shelltype'オプショ + ンも参照。 + {cmd}の中のあらゆる'!'は前の外部コマンドに置き換えられ + る('cpoptions'も参照)。しかし'!'の前にバックスラッシュ + がある時にはそれが削除され'!'は置き換えらない。 + 例: ":!ls"の後の":!echo !\! \\!"は"echo ls ! \!"と解釈 + 、実行される。 + コマンドが実行された後で、現在のファイルのタイムスタ + ンプがチェックされる|timestamp|。 + {cmd}の中に'|'を含めることはできない(|:bar|参照)。 + Unixでは通常コマンドは非インタラクティブモードで動作す + る。もしもインタラクティブに使いたい場合(aliasを使うな + ど))には、'shellcmdflag'に"-ic"を設定する。 + |shell-window|も参照。 + + *:!!* +:!! 最後の":!{cmd}"を繰り返す。 + + *:ve* *:version* +:ve[rsion] エディタのバージョン番号を表示する。コンパイラが + "__DATE__"を解釈できるならば、コンパイルされた日時が記 + 述される。できなければ最終修正日時が表示される。 + 続く行にはVimがコンパイルされた時にどの機能が有効にさ + れているかの情報を含む。機能名の前に'+'があればその機 + 能は有効であり、'-'があるときには無効になっている。こ + れを変えるにはfeature.hを編集してVimをコンパイルし直す + 必要がある。これを評価式の中でチェックするには、 + |has()|を参照。以下に機能の概要を示す: + + *+feature-list* +*+ARP* Amiga のみ: ARP サポートを含む +*+autocmd* |:autocmd|, 自動コマンド実行 +*+browse* |:browse| コマンド +*+builtin_terms* 幾つかの組み込み端末 |builtin-terms| +*++builtin_terms* 全部の組み込み端末 |builtin-terms| +*+byte_offset* 'statusline'オプション、"go"そして":goto"コマンドで'o' + フラグをサポート +*+cindent* |'cindent'|, C言語インデント +*+cmdline_compl* コマンドライン補完 |cmdline-completion| +*+cmdline_info* |'showcmd'| と |'ruler'| +*+comments* |'comments'| サポート +*+cryptv* 暗号化サポート |encryption| +*+cscope* |cscope| サポート +*+dialog_gui* |:confirm| のGUIダイアログをサポート +*+dialog_con* |:confirm| のコンソールダイアログをサポート +*+dialog_con_gui* |:confirm| GUIとコンソールダイアログをサポート +*+digraphs* |digraphs| +*+emacs_tags* |emacs-tags| ファイル +*+eval* 式評価(訳注:Vimスクリプト) |eval.txt| +*+ex_extra* Vimの拡張Exコマンド: |:center|, |:left|、 + |:normal|、|:retab| 及び |:right| +*+extra_search* |'hlsearch'| と |'incsearch'| オプション +*+farsi* |farsi| 言語 +*+file_in_path* |gf|, |CTRL-W_f| と |<cfile>| +*+find_in_path* include ファイル検索: |[I|, |:isearch|、 + |CTRL-W_CTRL-I|、|:checkpath|、その他 +*+fork* Unix のみ: |fork| シェルコマンド +*+GUI_Athena* Unix のみ: Athena |GUI| +*+GUI_BeOS* BeOS のみ: BeOS |GUI| +*+GUI_GTK* Unix のみ: GTK+ |GUI| +*+GUI_Motif* Unix のみ: Motif |GUI| +*+hangul_input* ハングル入力サポート |hangul| +*+insert_expand* |insert_expand| 挿入モード補完 +*+langmap* |'langmap'| +*+linebreak* |'linebreak'|、|'breakat'| と |'showbreak'| +*+lispindent* |'lisp'| +*+menu* |:menu| +*+mksession* |:mksession| +*+modify_fname* |filename-modifiers| +*+mouse* マウス操作 |mouse-using| +*+mouse_dec* Unix のみ: Dec端末マウス操作 |dec-mouse| +*+mouse_gpm* Unix のみ: Linuxコンソールマウス操作 |gpm-mouse| +*+mouse_netterm* Unix のみ: nettermマウス操作 |netterm-mouse| +*+mouse_xterm* Unix のみ: xtermマウス操作 |xterm-mouse| +*+multi_byte* マルチバイト文字(日韓中) |multibyte| +*+multi_byte_ime* Win32 IMEサポート +*+ole* Win32 GUI のみ: |ole-interface| +*+osfiletype* 自動コマンドでの'osfiletype'オプションとファイルタイプ + チェックのサポート |autocmd-osfiletypes| +*+perl* Perlインタフェース |perl| +*+python* Pythonインタフェース |python| +*+quickfix* |:make| と |quickfix| コマンド +*+rightleft* 右から左へタイプ |'rightleft'| +*+scrollbind* |'scrollbind'| +*+smartindent* |'smartindent'| +*+sniff* SniFFインターフェース (解説文章無し) +*+statusline* オプション'statusline'、'ruleformat'そして + 'titlestring'と'iconstring'の特殊フォーマット +*+syntax* 構文協調 |syntax| +*+system()* Unix のみ: |+fork|の反対 +*+tag_binary* タグファイル内の高速(二分探査)検索 |tag-binary-search| +*+tag_old_static* 静的タグの古い方法 |tag-old-static| +*+tag_any_white* tagsファイル内で空白文字を許す |tag-any-white| +*+tcl* Tclインターフェース |tcl| +*+terminfo* |terminfo|でtermcapを代替 +*+textobjects* |text-objects| 選択 +*+tgetent* 非Unix のみ: 外部termcapを使用可能 +*+title* ウィンドウタイトル設定 |'title'| +*+user_commands* ユーザ定義コマンド |user-commands| +*+viminfo* |'viminfo'| +*+visualextra* 拡張ビジュアルモードコマンド |blockwise-operators| +*+wildignore* |'wildignore'| +*+wildmenu* |'wildmenu'| +*+writebackup* |'writebackup'|がデフォルトで有効 +*+xim* Xインプットメソッド |xim| +*+xfontset* Xフォントセットサポート |xfontset| +*+xterm_clipboard* Unix のみ: xtermクリップボード操作 +*+xterm_save* xtermのスクリーンを保存と復帰 |xterm-screens| +*+X11* Unix のみ: ウィンドウタイトルを復帰可能 |X11| + +:ve[rsion] {nr} 現在は無視される。これはかつて.vimrcの中でバージョン番 + 号をチェックするために使われた。現在は":if"コマンドを + 使ってバージョン依存の振る舞いを記述できるので、削除さ + れている。 {Vi にはない} + + *:redi* *:redir* +:redi[r][!] > {file} メッセージをファイル{file}にリダイレクトする。リダイレ + クトを終了するまで、コマンド出力であるメッセージがファ + イルに書き出される。メッセージは画面にも表示される。 + [!]が含まれた時には、現在のファイルが上書きされる。[!] + が省略された時、既にファイル{file}が存在すると、コマン + ドは失敗する。 {Vi にはない} + +:redi[r] >> {file} メッセージをファイル{file}にリダイレクトする。{file} + が既に存在する時には追記する。 {Vi にはない} + +:redi[r] @{a-zA-Z} メッセージをレジスタ{a-z}にリダイレクトする。レジスタ + 名が大文字{A-Z}で与えられた時には、現在ある内容に追加 + する。 + +:redi[r] END メッセージのリダイレクトを終了する。 {Vi にはない} + + *K* +K カーソルの下の単語を参照するのにプログラムを実行する。 + プログラムの名前は'keywordprg' (kp) オプションで与えら + れる(省略地は"man")。キーワードはアルファベットと数字 + と'iskeyword'で示される文字から構成される。キーワード + はカーソルの直下、もしくは右が使用される。同じことは次 + のように行なえる +> :!{program} {keyword} + Vimのtoolsディレクトリにサンプルプログラムがある。それ + は簡易スペルチェックを行なう'ref'と呼ばれるものであ + る。 + 特別なケース: + - 'keywordprg'が空の時、":help"コマンドが使われる。よ + り効率的にヘルプを検索するために、'iskeyword'に文字 + を追加すると良い。 + - 'keywordprg'が"man"のとき、"K"の前に入力された数字 + が、"man"コマンドとキーワードの間に挿入される。例え + ば"mkdir"にカーソルがある時に"2K"を使うと、結果はこ + のようになる: +> !man 2 mkdir + - 'keywordprg'が"man -s"の時には、"K"の前に入力された + 数字は"-s"の後に挿入される。数字が与えられなかった場 + 合、"-s"は取り除かれる。 + {Vi には無い} + + *v_K* +{Visual}K "K"同様、しかしキーワードにはビジュアル選択されたテキ + ストが使用される。選択されたテキストが1行に収まる時に + しか機能しない。 {Vi にはない} + +[N]gs *gs* *:sl* *:sleep* +:[N]sl[eep] [N] [m] [N]秒間なにもしない。[m]が含まれていた時には、[N]ミリ + セカンドスリープする。 +> :sleep "sleep for one second +> :5sleep "sleep for five seconds +> :sleep 100m "sleep for hunderd millisonds + CTRL-Cで割込むことができる(MS-DOSではCTRL-Break)。"gs" + は"goto sleep"を意味する。スリープしている間カーソルは + (可視ならば)テキストの中に置かれる。 {Vi にはない} + + *g_CTRL-A* +g CTRL-A MEM_PROFILINGをdefine(非常に稀)してVimをコンパイルした + 時のみ: メモリ使用量の統計を表示する。Vimのデバッグ時 + に便利なくらい。 + +============================================================================== +2. オンラインヘルプ *online-help* + + *help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>* +<Help> or +:h[elp] ウィンドウを分割してヘルプファイルを読込専用モードで開 + く。ヘルプウィンドウが既に開かれている場合にはそれを使 + 用する。 {Vi にはない} + + *{subject}* +:h[elp] {subject} ":help"同様、加えて{subject}へタブジャンプする。 + {subject}には"*", "?" や "[a-z]"といったワイルドカード + を含むことができる。 + :help z? あらゆる"z"コマンドのヘルプへ + :help z. "z."のヘルプを開く + パターンに完全に一致する項目が無かった場合、及び複数の + 項目が一致した場合には、"最善"の一致が選ばれる。洗練さ + れたアルゴリズムでどの項目が一番最善かを決定する。これ + らの事項が計算において考慮される: + - 大小文字が一致したほうが、しない時よりも良い + - 始まりがアルファベットではない一致項目のほうが、部分 + 一致よりも優先される。 + - タグの開始位置かそれに近いほうが、そうでないものより + もより良い。 + - 多くのアルファベットが一致するほうが良い。 + - マッチしたもののうち短いほうが良い。 + 長い{subject}を与えても、より短いものにマッチしてしま + うことに注意。これがどのように働くかはコマンドラインの + 補完を考えるとわかりやすいだろう(":help subject"の後で + CTRL-Dをタイプしてみよう)。 + 複数のマッチがある場合には、CTRL-Dを押すことでそれらの + 一覧を見ることができる。例: +> :help cont<Ctrl-D> + 正規表現の|pattern|を使うには、まず":help"を行なってか + ら、ヘルプウィンドウで":tag {pattern}"を使う。":tnext" + コマンドでその他の項目へ移動することができ、":tselect" + で一致項目の一覧から選択をすることができる。 +> :help index| :tse z. + このコマンドは'|'で他のコマンドに繋ぐことができる。し + かしヘルプコマンド内では'|'をエスケープする必要はな + い。だからこれはどちらも正しく働く: +> :help | +> :help k| only + '|'の直前の空白は":help"の引数の一部に見えることに注 + 意。 + ヘルプコマンドと続くコマンドのセパレータには<LF>と<CR> + も使うことができる。<LF>や<CR>を入力するにはまずCTRL-V + をタイプする必要がある。例: +> :help so<C-V><CR>only + {Vi にはない} + +ヘルプファイルの名前はオプション'helpfile'に設定することができる。初期のヘルプ +ウィンドウの高さはオプション'helpheight'で設定することができる(初期値:20)。あ +る項目へ移動するにはタグを使う。これには2つの方法がある: +- オプションやコマンド名にカーソルをあわせて"CTRL-]"コマンド使う。これはタグが + キーワードの時にだけ使用できる。"<C-Leftmouse>"と"g<LeftMouse>"は"CTRL-]"と + 同じように働く。 +- ":ta {subject}"コマンドを使う。これはどのようなキャラクタにも使用できる。 + +戻るには"CTRL-T"を使う。 +ヘルプウィンドウを閉じるには":q"を使う。 + + *help-xterm-window* +他のxtermのウィンドウでヘルプを表示したいならば、このコマンドが使えるだろう: + :!xterm -e vim +help & + + + *:helpfind* *:helpf* +:helpf[ind] |:help|と同じだが、引数を入力するダイアログが表示され + る。{|+GUI_GTK|でコンパイルされた時のみ} + + vim:tw=78:ts=8:ft=help:norl: From daca75dc9a7fa174c32386828a803311fe614d55 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Thu, 27 Jan 2005 18:59:42 +0000 Subject: [PATCH 009/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@9 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/autocmd.jax | 920 ++++++++++++++++++++++++ ja/eval.jax | 1838 +++++++++++++++++++++++++++++++++++++++++++++++ ja/gui.jax | 761 ++++++++++++++++++++ ja/index.jax | 1290 +++++++++++++++++++++++++++++++++ ja/os_dos.jax | 299 ++++++++ ja/os_msdos.jax | 270 +++++++ ja/scroll.jax | 304 ++++++++ ja/tagsrch.jax | 794 ++++++++++++++++++++ ja/undo.jax | 125 ++++ ja/visual.jax | 476 ++++++++++++ 10 files changed, 7077 insertions(+) create mode 100644 ja/autocmd.jax create mode 100644 ja/eval.jax create mode 100644 ja/gui.jax create mode 100644 ja/index.jax create mode 100644 ja/os_dos.jax create mode 100644 ja/os_msdos.jax create mode 100644 ja/scroll.jax create mode 100644 ja/tagsrch.jax create mode 100644 ja/undo.jax create mode 100644 ja/visual.jax diff --git a/ja/autocmd.jax b/ja/autocmd.jax new file mode 100644 index 000000000..748f0702e --- /dev/null +++ b/ja/autocmd.jax @@ -0,0 +1,920 @@ +COMMENT: +STATUS: finished 6.3.054 +TRANSLATOR: GIMPAI +TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*autocmd.txt* For Vim version 6.3. Last change: 2004 Apr 20 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +自動コマンド *autocommand* + +基本的な説明については、ユーザマニュアルの |40.3| 章を参照。 + +1. はじめに |autocmd-intro| +2. autocommand の定義 |autocmd-define| +3. autocommand の削除 |autocmd-remove| +4. autocommand の列挙 |autocmd-list| +5. イベント |autocmd-events| +6. パターン |autocmd-patterns| +7. グループ |autocmd-groups| +8. autocommand の実行 |autocmd-execute| +9. autocommand の使用 |autocmd-use| + +{Vi にはこういったコマンドは全くない。} +{only: |+autocmd| の機能は、コンパイル時に有効にされていなければ使えない。} + +============================================================================== +1. はじめに *autocmd-intro* + +ファイルを読み込んだり書き込むときや、バッファやウィンドウに入ったり出た りし +たとき、あるいはVimを終了させるときに、コマンドを自動的に実行するように指定で +きる。 例えば "*.c" にマッチするファイルに対して、オプション 'cindent' をオン +にする autocommand を作ることができる。また autocommand でさらに高度な機能を実 +装することができる。圧縮ファイルを編集するといったような機能だ (|gzip-example| +を参照)。こういった autocommand はファイル .vimrc かファイル .exrc に書き込む。 + + *E203* *E204* *E143* +注意: autocommand は大変強力であるので、思いも寄らない副作用をもたらすことがあ +る。テキストを壊さないように注意しなければならない。 +- 捨ててもよいようなファイルのコピーに対して、最初にテストしておくのがよい。例 + えば、ファイルの編集開始時にファイルを解凍する autocommand を使うときには、 + 書き込みするときに圧縮を行う autocommand が正しく働くか確かめること。 +- 実行中のエラー (例えばディスクが満杯になる) に対して、対処の準備をしておかな + ければならない。バッファへの変更に対しては大抵アンドゥができるが、他のファイ + ルへの変更は、自分で処理しなければならないかもしれない (例えば、解凍されたファ + イルを圧縮する、等)。 +- もしイベント BufRead* の autocommand によって圧縮ファイルを編集できるなら、 + FileRead* でも同じ事ができるようにするべきである (こうすることで復旧可能にな + る場合がたまにある)。可能であれば、イベント File* や Buf* には同じ + autocommand を使うのはよい考えだ。 + +============================================================================== +2. autocommand の定義 *autocmd-define* + +Note: コマンド ":autocmd" には他のコマンドを続けることはできない。'|' はみなコ +マンドの一部と認識されるからである。 + + *:au* *:autocmd* +:au[tocmd] [group] {event} {pat} [nested] {cmd} + {pat} に一致するファイルで、{event} のときに自動的に実 + 行するコマンドのリストに、{cmd} を加える。{cmd} は常に + 既存の autocommand の後に追加されるので、autocommand + は指定された順に実行される。 [nested] については + |autocmd-nested| を参照。 + +Note ":autocmd" の引数の中の特別な文字 (例えば "%" や "<cword>" 等) は、 +autocommand が定義されたときに展開されるのではなく、イベントの発生が認識され、 +{cmd} が実行されるときに展開されることに注意せよ。唯一の例外は、"<sfile>" が +autocommand が定義されたときに展開されることである。例: > + + :au BufNewFile,BufRead *.html so <sfile>:h/html.vim + +ここで <sfile> は、この行を含むファイルの名前に展開される。 + +ファイル .vimrc が2回読み込まれるとき、autocommand は二度現れる。これを避ける +ため、このコマンドをファイル .vimrc の autocommand を定義する所の前に入れてお +く必要がある。 > + + :autocmd! " 現在のグループに対する「全て」の autocommand を削除。 + +もし全ての autocommand を消去したくなかったら、代わりに変数を使って +autocommand を読み込むのがただ1度だけにすることができる。 > + + :if !exists("autocommands_loaded") + : let autocommands_loaded = 1 + : au ... + :endif + +引数 [group] が指定されないと、現在のグループが使われる (":augroup" で定義さ +れたもの)。そうでなければ、Vimは [group] で定義されたグループを使う。 +Note [group] はあらかじめ定義されていなければならないことに注意。 +":au group ..." で新しいグループを定義することはできない。それには ":augroup" +を使うこと。 + +Autocommand をテストするとき、オプション 'verbose' が便利かもしれない。 > + :set verbose=9 +この設定により、Vimは autocommand が実行されるとそれらを表示するようになる。 + +スクリプト内で autocommand を定義するときには、スクリプト内でのみ有効なローカ +ル関数とローカルキーマップを利用できる。イベントが発生してコマンドが実行される +とき、コマンドは自分の定義されたスクリプト内での設定に従って働く。これはコマン +ドに |<SID>| が使われているときに問題になる。 + +コマンドを実行するとき、あるコマンドからのメッセージは前のメッセージを上書きし +てしまう。これはコマンドを手動で実行するときとは違う動作である。大抵、メッセー +ジスクリーンはスクロールしないので、「続けるには」というプロンプトは現れない。 +また1個のコマンドが2つのメッセージを出すときには、何にせよメッセージは上書きさ +れてしまう。 + +============================================================================== +3. autocommand の除去 *autocmd-remove* + +:au[tocmd]! [group] {event} {pat} [nested] {cmd} + {event} と {pat} に関連づけられた全ての autocommand を + 除去し、コマンド {cmd} を加える。 [nested] については + |autocmd-nested| を参照。 + +:au[tocmd]! [group] {event} {pat} + {event} と {pat} に関連づけられた全ての autocommand を + 除去する。 + +:au[tocmd]! [group] * {pat} + {pat} に関連づけられた、全てのイベントに関する + autocommand を全て除去する。 + +:au[tocmd]! [group] {event} + {event} に関連づけられた「全ての」autocommand を除去す + る。 + +:au[tocmd]! [group] 「全ての」autocommand を除去する。 + +引数 [group] が指定されないと、現在のグループが使われる (":augroup" で定義され +たもの)。そうでなければ、 [group] で定義されたグループが使われる。 + +============================================================================== +4. autocommand の列挙 *autocmd-list* + +:au[tocmd] [group] {event} {pat} + {event} と {pat} に関連づけられた全ての autocommand を + 表示する。 + +:au[tocmd] [group] * {pat} + {pat} に関連づけられた、全てのイベントに関する + autocommand を表示する。 + +:au[tocmd] [group] {event} + {event} に関連づけられた全ての autocommand を表示する。 + +:au[tocmd] [group] 全ての autocommand を表示する。 + +引数 [group] を指定すると、 [group] に関する autocommand のみが列挙される。そ +うでなければ、「全ての」グループに関する autocommand が表示される。Note ここで +の引数による動作の違いは、autocommand を定義したり除去するときとは違うことに注 +意。 + +============================================================================== +5. イベント *autocmd-events* *E215* *E216* + + *autocommand-events* *{event}* +Vimは以下のイベントを認識する。イベント名が大文字か小文字かは無視される (例え +ば "BufRead" の代わりに "BUFread" や "bufread" が使える)。 + + *BufNewFile* +BufNewFile 存在しないファイルの編集を始めたとき。スケルト + ンファイル (訳注: テンプレートファイルともいう) + に読み込むときに使える。 + *BufReadPre* *E200* *E201* +BufReadPre 新しいバッファの編集を始めたときの、ファイルを + バッファに読み込む前。読み込むファイルが存在し + ないときは使えない。 + *BufRead* *BufReadPost* +BufRead or BufReadPost 新しいバッファの編集を始めたときの、ファイルを + バッファに読み込んだ後で、モードラインを実行す + る前。モードラインを実行した後に何かするには + |BufWinEnter|を参照してください。これは ":r + file" には「動作しない」。ファイルが存在しない + ときも使えない。またファイルの復旧に成功したと + きにも使われる。 + *BufReadCmd* +BufReadCmd 新しいバッファの編集を始める前。ファイルをバッ + ファ内に読み込む役目を負う。 |Cmd-event| + *BufFilePre* +BufFilePre 現在のバッファの名前をコマンド ":file" または + ":saveas" で変更する前。 + *BufFilePost* +BufFilePost 現在のバッファの名前をコマンド ":file" または + ":saveas" で変更した後。 + *FileReadPre* +FileReadPre コマンド ":read" でファイルを読み込む前。 + *FileReadPost* +FileReadPost コマンド ":read" でファイルを読み込んだ後。 + Note 読み込んだテキストの先頭行と末尾行には、 + マーク '[ と '] が設定されることに注意。これは、 + 読み込まれた行に対して操作を行うのに使われる。 + *FileReadCmd* +FileReadCmd コマンド ":read" でファイルを読み込む前。ファ + イルを読み込む役目を負う。 |Cmd-event| + *FilterReadPre* *E135* +FilterReadPre フィルタコマンドからファイルを読み込む前。Vim + は、フィルタコマンドの出力である一時ファイルの + 名前ではなく、現在のバッファの名前に対してパター + ンを調べる。 + *FilterReadPost* +FilterReadPost フィルタコマンドからファイルを読み込んだ後。 + Vimは FilterReadPre と同様に、現在のバッファの + 名前に対してパターンを調べる。 + *FileType* +FileType オプション 'filetype' が設定されたとき。 + <afile> は 'filetype' が設定されたファイルの名 + 前として使える。<amatch> は 'filetype' の新し + い値として使える。 + |filetypes| を参照。 + *Syntax* +Syntax オプション 'syntax' が設定されたとき。 + <afile> は 'syntax' が設定されたファイルの名前 + として使える。<amatch> は 'syntax' の新しい値 + として使える。 + |:syn-on| を参照。 + *StdinReadPre* +StdinReadPre 標準入力からバッファへ読み込む前。Vimを開始し + たときに引数 "-" が指定された場合のみ使われる + (|--| 参照)。 + *StdinReadPost* +StdinReadPost 標準入力からバッファへ読み込んだ後で、モードラ + インを実行する前。Vimを開始したときに引数 "-" + が使われた場合のみ使われる (|--| 参照)。 + *BufWrite* *BufWritePre* +BufWrite or BufWritePre バッファ全体をファイルに書き込む前。 + *BufWritePost* +BufWritePost バッファ全体をファイルに書き込んだ後 (イベント + BufWritePre によるコマンドをアンドゥする役目を + 果たす)。 + *BufWriteCmd* +BufWriteCmd バッファ全体をファイルに書き込む前。ファイルへ + の書き込みの役目を負い、成功したときはオプショ + ン 'modified' をオフにする。バッファの内容を変 + 更すべきではない。 |Cmd-event| + *FileWritePre* +FileWritePre バッファ全体を書き込まない場合の、ファイルに書 + き込む前。 + *FileWritePost* +FileWritePost バッファ全体を書き込まない場合の、ファイルに書 + き込んだ後。 + *FileWriteCmd* +FileWriteCmd バッファ全体を書き込まない場合の、ファイルに書 + き込む前。ファイルへの書き込みの役目を負う。バッ + ファを変更すべきではない。 |Cmd-event| + *FileAppendPre* +FileAppendPre ファイルに追加する前。 + *FileAppendPost* +FileAppendPost ファイルに追加した後。 + *FileAppendCmd* +FileAppendCmd ファイルに追加する前。ファイルへの追加の役目を + 負う。 |Cmd-event| + *FilterWritePre* +FilterWritePre フィルタコマンド用のファイルを書き込んだり、差 + 分表示用のファイルを作る前。 + Vimはフィルタコマンドの出力である一時ファイル + の名前ではなく、現在のバッファの名前に対してパ + ターンをチェックする。 + *FilterWritePost* +FilterWritePost フィルタコマンド用のファイルを書き込んだり、差 + 分表示用のファイルを作った後。 + Vimは FilterWritePre と同様、現在のバッファの + 名前に対してパターンをチェックする。 + *FileChangedShell* +FileChangedShell ファイルのタイムスタンプが、ファイルの編集が始 + まってから変更されたことを発見したとき。 + ファイルの属性が変更されたときにも使われる。 + |timestamp| + 大抵はシェルコマンドの実行後に発生する。またコ + マンド |:checktime| の実行後や、Vimが入力フォー + カスを一度失い、再び得たときにも発生する。 + このイベントは変更されたファイルそれぞれに対し + て発生する。オプション 'autoread' がオンであり、 + かつバッファが変更されていないときには使われな + い。もし FileChangedShell の autocommand が存 + 在しても、警告メッセージやプロンプトは現れない。 + これは、単一のコマンドに影響を受ける、複数の関 + 連バッファを再読み込みするのに便利である。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + NOTE: この autocommand はカレントバッファを変 + 更したり、別のバッファにジャンプしたり、バッ + ファを消去してはいけない。 *E246* + NOTE: このイベントは、無限ループを避けるために + 決してネストしてはいけない (入れ子にならない)。 + つまり、FielChangedShellイベントの処理中は他の + FileChangedShellイベントは呼ばれない。 + *FileChangedRO* +FileChangedRO 読み込み専用ファイルに最初の変更を加える前。ソー + ス管理システム (訳注: CVSやRCS) からファイルを + チェックアウトするのに使われる。変更が + autocommand によるときには発生しない。 + 警告: このイベントが発生するのは変更を行い、そ + れがテキストに適用される直前である。 + Autocommand でカーソルが動かされるときの動作は、 + 定義されていない。 + *FocusGained* +FocusGained Vimが入力フォーカスを得たとき。GUI版と、入力 + フォーカスを認識できるいくつかのコンソール版で + のみ有効。 + *FocusLost* +FocusLost Vimが入力フォーカスを失ったとき。GUI版と、入力 + フォーカスを認識できるいくつかのコンソール版で + のみ有効。 + *FuncUndefined* +FuncUndefined ユーザ定義関数が使われたが、定義されていなかっ + たとき。必要なときのみ関数を定義するのに便利で + ある。<amatch> と <afile> の両方とも関数名に設 + 定される。 + *CursorHold* +CursorHold 'updatetime' の時間の間、ユーザがキーを押さな + かったとき。ユーザーが何かキーを押すまで、再び + 発生することはない (例えば、もしあなたがコーヒー + を入れるためにVimの前を離れても、その間の + 'updatetime' ミリ秒ごと発生することはない :-)。 + タグをプレビューするためには、 + |CursorHold-example| を参照。 + このイベントはノーマルモードのときのみ呼ばれる。 + Note: このイベントには対話的なコマンドは使えな + いことに注意。「続けるには」プロンプトは現れず、 + スクリーンは必要に応じて直接更新される。 + Note: 近いうちに、発生するまでの時間を設定する + 別のオプションができるだろう。 + ヒント: ステータスラインの更新を強制的に行うに + は、これを使うこと: > + :let &ro = &ro +< {Vi mのAmiga版、Unix版、Win32版、MSDOS版および + 全てのGUI 版でのみ有効} + *BufEnter* +BufEnter バッファに入った後。ファイルタイプに関するオプ + ションの設定に便利である。バッファの編集を始め + るときにも、BufReadPost の autocommand の後に + 実行される。 + *BufLeave* +BufLeave 他のバッファに移る前。カレントウィンドウを離れ + たり、閉じたりするときで、新しいカレントウィン + ドウが同じバッファを開いていないとき。":qa" や + "q" でVimを閉じるときには使われない。 + *BufWinEnter* +BufWinEnter バッファがウィンドウ内に表示された後。これはバッ + ファが読み込まれたとき (モードラインの処理後) + か、隠れ (hidden) バッファがウィンドウ内に表示 + されたとき (もう隠れバッファでなくなったとき) + か、既にあるウィンドウ内で表示中のバッファが別 + のウィンドウにも表示されるようになったときであ + る。 + *BufWinLeave* +BufWinLeave バッファがウィンドウから取り除かれる前。そのバッ + ファが別のウィンドウ内で表示中ならば発生しない。 + Vimの終了時にも発生する。イベント BufUnload や + BufHidden よりも前に発生する。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufUnload* +BufUnload バッファを解放する前。これは、バッファ内のテキ + ストが解放されるときである。BufWritePost の後 + で、BufDelete の前かもしれない。Vimが終了しよ + うとしているとき、読み込まれた全てのバッファに + ついて発生する。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufHidden* +BufHidden バッファが隠れ状態 (hidden) になった直後。つま + りそのバッファを表示するウィンドウがもう存在し + ないのに、バッファが解放されなかったり、削除さ + れないとき。":qa" や "q" でVimを終了するときに + は使われない。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufNew* +BufNew 新しいバッファを作った直後。バッファがリネーム + された直後にも発生する。バッファがバッファリス + トに追加されると、イベント BufAdd も発生する。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufCreate* *BufAdd* +BufAdd or BufCreate バッファリストに追加されるバッファを作った直後 + か、バッファをバッファリストに追加した直後。 + バッファリスト内のバッファがリネームされた直後 + にも発生する。 + イベント BufCreate は歴史上の理由で存在してい + る。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufDelete* +BufDelete バッファリストからバッファを削除する前。(バッ + ファが読み込まれているなら) BufUnload が最初に + 呼び出されるだろう。 + また、バッファリスト内のバッファがリネームされ + た直前にも使われる。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufWipeout* +BufWipeout バッファを完全に削除する前。イベント BufUnload + と BufDelete が先に発生するかもしれない (バッ + ファが読み込まれていて、バッファリスト内に存在 + するなら)。バッファがリネームされる直前にも発 + 生する (そのバッファがバッファリスト内になくと + も)。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *WinEnter* +WinEnter 別のウィンドウに入った後。Vimの開始直後、1個目 + のウィンドウに入ったときは発生しない。ウィンド + ウの高さを設定するのに便利である。 + そのウィンドウで他のバッファを開いていたときは、 + イベント Winenter の後に BufEnter が発生する。 + Note: ":split fname" を実行したとき、WinEnter + が発生するのは、ウィンドウ分割の後だがファイル + "fname" が読み込まれる前の時点である。 + *WinLeave* +WinLeave ウィンドウを離れる前。次に入るウィンドウで他の + バッファを開いていたときは、イベント WinLeave + の前に BufLeave が発生する (ただし ":new" を使っ + たときはそうならない)。 + ":qa" や"q" でVimを終了するときには発生しない。 + *CmdwinEnter* +CmdwinEnter Command-lineウィンドウに入った後。この特殊なウィ + ンドウに対してのみオプションを設定するのに便利 + である。このイベントはイベント BufEnter や + WinEnter の「代わりに」発生する。 + <afile> は、command-lineの種類を示す1文字に設 + 定される。 |cmdwin-char| + *CmdwinLeave* +CmdwinLeave Command-lineウィンドウから出る前。イベント + CmdwinEnter で行ったグローバル設定を消去するの + に便利である。このイベントは BufLeave や + WinLeave の「代わりに」発生する。 + <afile> は、command-lineの種類を示す1文字に設 + 定される。 |cmdwin-char| + *GUIEnter* +GUIEnter GUI の開始に成功し、ウィンドウを開いた後。 + gvim を使ったときは、VimEnter の前に発生する。 + ファイル .gvimrc からウィンドウの配置場所を設 + 定するために使うことができる。 > + :autocmd GUIEnter * winpos 100 50 +< *VimEnter* +VimEnter ファイル .vimrc の読み込みを含む、全てのスター + トアップ処理を行い、"-c cmd" の引数を実行し、 + 全てのウィンドウを構築し、それらにバッファを読 + み込んだ後。 + *VimLeavePre* +VimLeavePre Vim を終了する前で、ファイル .viminfo を書き込 + む直前。これは終了時にたまたまカレントバッファ + になったバッファの名前とマッチしたときに、ただ + 1度だけ実行される。 大抵、パターンには "*" を + 使うと便利である。 > + :autocmd VimLeavePre * call CleanupStuff() +< 異常終了の検出には |v:dying| を使うこと。 + *VimLeave* +VimLeave Vim を終了する前で、ファイル .viminfo を書き込 + んだ後。VimLeavePre のように、ただ1度だけ実行 + される。 + 異常終了の検出には |v:dying| を使うこと。 + *EncodingChanged* +EncodingChanged オプション 'encoding' が変更されたとき。例えば、 + フォント等の設定に便利である。 + *FileEncoding* +FileEncoding 時代遅れである。まだ有効だがイベント + |EncodingChanged| と同等である。 + *RemoteReply* +RemoteReply サーバとして働くVimからの応答を受け取ったとき + |server2client()|。 + <amatch> は応答が送られてきたサーバの + {serverid} になり、<afile> は応答の実際の内容 + になる。 + Note これに autocommand を定義したときも、応答 + を読み込むのには、読み込んだ応答を処理できるよ + うに関数 |remote_read()| を使うべきであること + に注意。 + *TermChanged* +TermChanged オプション 'term' を変更した後。色やフォント等、 + ターミナル依存の設定を更新するために構文定義ファ + イルを再読み込みするのに便利である。読み込まれ + たバッファ全てで発生する。 + *TermResponse* +TermResponse |t_RV| に対する応答をターミナルから受け取った + とき。Vim変数 |v:termresponse| の値を使って、 + ターミナルのヴァージョンに応じた処理ができる。 + *UserGettingBored* +UserGettingBored ユーザが CTRL-C を打ち込んだとき。 + ただの冗談! :-) + *User* +User 自動的に実行されることはない。コマンド + ":doautocmd" によってのみ実行される + autocommand のために使用される。 + + +複数のイベントをコンマ(,)で区切ったリストにして指定することもできる。そのリス +トにはスペースを含めてはいけません。そのコマンドは指定したリストにある全てのイ +ベントに適用されます。 + +「ファイル読み込み」には次の4種類のイベントが発生しうる。 + BufNewFile 存在しないファイルの編集を開始する。 + BufReadPre BufReadPost 既存のファイルの編集を開始する。 + FilterReadPre FilterReadPost フィルタの出力による一時ファイルを読み + 込む。 + FileReadPre FileReadPost その他のファイルを読み込む。 +Vimはファイルを読み込むときにこの4種類のうちどれか1つを利用する。"Pre"と"Post" +のイベントは、ファイル読み込みの前後で両方とも起動される。 + +Note イベント *ReadPre や、全てのイベント Filter に関する autocommand は、カレ +ントバッファを変更してはならないことに注意 (これが起きると、エラーメッセージが +表示される)。これは、間違ったバッファにファイルを読み込むのを防ぐためである。 + +Note オプション 'modified' は、BufReadPost と BufNewFile の autocommand を実行 +した「後に」オフに設定されることに注意。しかし 'modified' が autocommand から +オンに設定されたときはそうならない。 + +'eventignore' は、いくつかあるいは全てのイベントを無視するために使える。 + +============================================================================== +6. パターン *autocmd-patterns* *{pat}* + +ファイルパターン {pat} がファイル名とマッチするかどうかは、2通りの方法で調べら +れる。 +1. パターンに '/' が含まれないとき: Vimはファイル名の後ろの部分からのみマッチ + を調べる (ファイル名の前につくディレクトリパスは除く)。 +2. パターンに '/' が含まれるとき: Vimは短いファイル名 (ユーザが打ち込んだもの) + と長いファイル名 (短いファイル名をフルパスに展開し、シンボリックリンクなら + その実体を探したもの) との両方から一致を調べる。 + +例: > + :autocmd BufRead *.txt set et +全てのテキストファイルに対しオプション 'expandtab' をオンにする。 > + + :autocmd BufRead /vim/src/*.c set cindent +ディレクトリ /vim/src 内のC言語ファイルに対しオプション 'cindent' をオンにす +る。 > + + :autocmd BufRead /tmp/*.c set ts=5 +"/tmp/test.c" から "/home/nobody/vim/src/test.c" にリンクを張っていると、 +"/tmp/test.c" の編集を始めたとき、この autocommand は実行される。 + +Note: パスの途中だけにマッチさせ、ルートディレクトリにマッチさせたくないとき +は、最初の1文字目に '*' を使う。例: > + :autocmd BufRead */doc/*.txt set tw=78 +この autocommand は、例えば "/tmp/doc/xx.txt" や "/usr/home/piet/doc/yy.txt" +にマッチする。ここで、ディレクトリの深さは関係ない。 + + +パターンがマッチするファイル名は、ワイルドカードを展開した後のものである。その +ため、次のようなコマンドが使える。 > + :e $ROOTDIR/main.$EXT +まずコマンドの引数は、ファイル名が autocommand のパターンにマッチする前に、次 +のように展開される。 > + /usr/root/main.py +イベント FileReadCmd 等を使うときにはこれに注意すること。<amatch> の値が、ユー +ザの予期するものと違うかもしれない。 + + +パターンの中で環境変数を使うこともできる。 > + :autocmd BufRead $VIMRUNTIME/doc/*.txt set expandtab +環境変数 $HOME が定義されているなら、~ をホームディレクトリとして使うこともで +きる。 > + :autocmd BufWritePost ~/.vimrc so ~/.vimrc + :autocmd BufRead ~archive/* set readonly +環境変数は、autocommand が定義されるときに展開される。autocommand が実行される +ときではない。これは command とは違っている! + + *file-pattern* +パターンの解釈方法は、ファイル名の解釈方法と大体同じである。 + * はあらゆる文字の列にマッチ + ? はあらゆる1文字にマッチ + \? は '?' にマッチ + . は '.' にマッチ + ~ は '~' にマッチ + , はパターンを分割する + /, は ',' にマッチ + { } は |pattern| の \( \) と同様 + , ('{' '}' の内側では) |pattern| の \| と同様 + \ は |pattern| で使われるものと同様の特別な意味を持つ + [ch] は 'c' または 'h' にマッチ + [^ch] は 'c' と 'h' 以外の文字にマッチ + +'/' という文字は、全てのシステムでパスの区切り文字に使われることに注意すること +(MS-DOSとOS/2でさえも)。これは、パターン内でバックスラッシュを使うことが難しい +上に、別々のシステムでも autocommand が動作するようにするためである。 + + +パターンマッチの検索は、イベントの発生時に行われる。Autocommand のどれかでバッ +ファ名を変更しても、それどころかバッファを削除しても、実行される autocommand +は変わらない。例: > + + au BufEnter *.foo bdel + au BufEnter *.foo set modified + +これはカレントバッファを削除し、代わりにカレントバッファになったバッファ内でオ +プション 'modified' をオンにする。Vimは "*.foo" が新しいカレントバッファのバッ +ファ名にマッチしなくとも気にしない。"*.foo" はイベントが発生した時点でのバッファ +名にマッチする。 + +============================================================================== +7. グループ *autocmd-groups* + +Autocommand はグループにまとめることができる。これは一連の autocommand を取り +除いたり実行したりする際に便利である。例えば、構文強調表示のための全ての +autocommand はグループ "highlight" に入っていて、GUIの開始時に +":doautoall highlight BufRead" で実行できる。 + +特定のグループが選択されないとき、既定のグループが使われる。既定のグループには +名前がない。既定のグループから個別に autocommand を実行することはできない。そ +れらを実行できるのは、全てのグループに対する autocommand を実行するときのみで +ある。 + +普通、autocommand を自動的に実行するときは、全てのグループに対する autocommand +が使われる。グループが問題になってくるのは、":doautocmd" や ":doautoall" によっ +て autocommand を実行するときと、autocommand を定義したり削除するときである。 + +グループ名には空白を除く全ての文字が使える。"end" というグループ名は予約語になっ +ている (大文字も)。 + +グループ名では大文字と小文字を区別して扱う。イベントの名前とは違うことに注意し +てください。 + + *:aug* *:augroup* +:aug[roup] {name} 後に続くコマンド ":autocmd" のためのグループ名 + を定義する。{name} を "end" や "END" にすると + 既定のグループが選ばれる。 + + *:augroup-delete* *E367* +:aug[roup]! {name} Autocommand のグループ {name} を削除する。その + グループを使っている autocommand がまだあるな + ら、これは使わないこと!その点はチェックされな + い。 + +特定のグループとして autocommand を定義するには、次の手順に従うこと。 +1. ":augroup {name}" によってグループを選択する。 +2. ":au!" によって古い autocommand を全て消去する。 +3. autocommand を定義する。 +4. ":augroup END" によって既定のグループに戻る。 + +例: > + :augroup uncompress + : au! + : au BufEnter *.gz %!gunzip + :augroup END + +これで autocommand を (例えばファイル .vimrc を再び読み込んだ後) 2回定義するこ +とが防げる。 + +============================================================================== +8. autocommand の実行 *autocmd-execute* + +Autocommand は「自動的」でなくとも実行できる。これはあなたが autocommand を変 +更したときや、間違った autocommand が実行されたとき (つまりファイルパターンの +マッチングが間違っていたとき) に便利である。 + +NOTE オプション 'eventignore' はここにも適用されることに注意。ここに列挙された +イベントでは、どんな autocommand も実行されない。 + + *:do* *:doau* *:doautocmd* *E217* +:do[autocmd] [group] {event} [fname] + [fname] (省略するとカレントファイルの名前) にマッチす + る、{event} のための autocommand をカレントバッファに + 適用する。カレントファイル名が正しいファイルパターンに + マッチしないときや設定を変えた後、またはあるイベントの + ために autocommand を実行するために使用できる。 + これを autocommand の内部で実行することも可能である。 + だから、ある拡張子用の autocommand を元にして別の拡張 + 子用のものを作ることができる。例: > + :au Bufenter *.cpp so ~/.vimrc_cpp + :au Bufenter *.cpp doau BufEnter x.c +< 無限の循環に陥らないよう注意すること。また + |autocmd-nested| を参照すること。 + + 引数 [group] が省かれると、全てのグループの + autocommand が実行される。 [group] が指定されると、そ + れにマッチするグループの autocommand のみが実行される。 + NOTE 定義されていないグループ名を使うと、エラーメッセー + ジが表示される。 + + *:doautoa* *:doautoall* +:doautoa[ll] [group] {event} [fname] + ":doautocmd" と似ているが、読み込まれたバッファそれぞ + れに autocommand を適用する。{fname}はautocommandを選 + 択するのに使われます。コマンドを適用するバッファではあ + りません。(訳注: |:autocmd|の{pat}に使う?) + 注意: このコマンドで、バッファを削除したり、バッファを + 変えたり、バッファの内容を変えるような autocommand を + 実行しないこと。結果は予期できない。このコマンドは、オ + プションを設定したり、構文強調表示を変えたりする + autocommand のためのものである。 + +============================================================================== +9. autocommand を使う *autocmd-use* + +「ファイルの書き込み」には、4組のイベントが起こりうる。1回の書き込みコマンドで +は、これらのうち1組しか使われない。 + +BufWriteCmd BufWritePre BufWritePost バッファ全体を書き込む + FilterWritePre FilterWritePost フィルタ用一時ファイルに書込む +FileAppendCmd FileAppendPre FileAppendPost ファイルに追加する +FileWriteCmd FileWritePre FileWritePost その他の書き込み + +"*Cmd" にマッチする autocommand があるときは、それが書き込み作業を行うものと想 +定される。書き込みはそれ以上行われず、他のイベントも発生しない。 |Cmd-event| + +Note イベント *WritePost による autocommand は、イベント *WritePre による +autocommand の引き起こしたバッファに対する変化を、どのようなものでもアンドゥす +べきであることに注意。さもないと、ファイルの書き込みがバッファを変更するという +副作用を持ってしまう。 + +あるバッファの中の行をファイルに書き込むとき、autocommand を実行する前にそのバッ +ファが一時的にカレントバッファになる。Autocommand がカレントバッファを変更した +り、元のカレントバッファを消去しない限り、カレントバッファは再び元に戻る。 + +イベント *WritePre や *AppendPre による autocommand は、書き込み元のバッファを +削除してはならない。 + +マーク '[ と '] は特別な位置を記憶している。 +- イベント *ReadPre の前に、新しい行が挿入される所の上の行にマーク '[ が設定 + される。 +- イベント *ReadPost の前に、読み込まれた最初の行にマーク '[ が、最後の行にマー + ク '] が設定される。 +- イベント *WritePre と *AppendPre による autocommand が実行される前に、書き込 + まれる最初の行にマーク '[ が、最後の行にマーク '] が設定される。 +注意: バッファを変更するコマンドを使うと、'[ と '] の場所も変更される。 + +ファイル名を必要とするコマンドでは、読み込まれるファイル名に "<afile>" を使う +ことができる (カレントファイル名に "%" を使うこともできる) |:<afile>|。現在有 +効なバッファ番号には "<abuf>" を使うことができる。これは名前を持たないバッファ +に対しても有効だが、バッファを持たないファイルには使えない (例えば、":r file" +で読み込まれたファイル)。 + + *gzip-example* +圧縮されたファイルを読み書きする例: > + :augroup gzip + : autocmd! + : autocmd BufReadPre,FileReadPre *.gz set bin + : autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip + : autocmd BufReadPost,FileReadPost *.gz set nobin + : autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r") + : autocmd BufWritePost,FileWritePost *.gz !mv <afile> <afile>:r + : autocmd BufWritePost,FileWritePost *.gz !gzip <afile>:r +> + : autocmd FileAppendPre *.gz !gunzip <afile> + : autocmd FileAppendPre *.gz !mv <afile>:r <afile> + : autocmd FileAppendPost *.gz !mv <afile> <afile>:r + : autocmd FileAppendPost *.gz !gzip <afile>:r + :augroup END + +グループ "gzip" は、":autocmd!" で既存の autocommand を全て削除できるようにす +るために使われている。これはスクリプトファイルが2回読み込まれたときのためであ +る。 + +("<afile>:r" は拡張子のないファイル名である。|:_%:| を参照) + +イベント BufNewFile, BufRead/BufReadPost, BufWritePost, FileAppendPost, +VimLeave によって実行された autocommand は、バッファの被修正フラグを切り替えな +い。BufReadPost による autocommand で、圧縮されているバッファを解凍したときは、 +":q" でVimを終了することができる。BufWritePre による autocommand の起こした変 +更を戻すために BufWritePost で ":undo" を使ったときも、":q" を使うことができる +("ZZ" も可)。バッファが変更されたことにしたいなら、":set modified" とすること。 + +Autocommand からNormalモードのコマンドを実行したいときは、コマンド ":normal" +を使うこと。使うときは注意!Normalモードのコマンドが完結していないと、ユーザが +文字を打ち込まないといけない (例えば、":normal m" の後にはマーク名を打ち込まな +いといけない)。 + +バッファの内容を変更した後に、変更されていないことにしたいなら、オプション +'modified' をオフにすること。こうすると ":q!" ではなく ":q" でもVimを終了でき +る。 + + *autocmd-nested* *E218* +既定では、autocommand はネストしない (入れ子にならない)。Autocommand 内で ":e" +や ":w" を使っても、これらに対してはイベント BufRead や BufWrite による +autocommand は実行されない。もしこれを実行してほしいなら、ネストしてほしいコマ +ンド内でフラグ "nested" を使うこと。例: > + :autocmd FileChangedShell *.c nested e! +再帰的ループを避けるために、ネストは10段階までに制限されている。 + +Autocommand の中でコマンド ":au" を使うこともできる。これは自己修正的 (訳注: +原文 "self-modifying") なコマンドになりうる! これは1回だけ実行すべき +autocommand に便利である。 + +現在のところ、autocommand を無効にする方法はない。ファイルを書き込むとき、その +ファイルタイプに対して設定された autocommand を実行したくないならば、別のファ +イル名で書き込み、シェルコマンドでリネームすること。場合によっては +'eventignore'オプションが使える。 + +Note (":read file" やフィルタコマンドで) 読み込んだファイルの最後の行に <EOL> +がないとき、Vimはこのことを記憶する。その次の (":write file" やフィルタコマン +ドでの) 書き込みで、先ほどの最後の行が再び最後の行として書き込まれ、かつオプショ +ン 'binary' がオンになっていると、<EOL> は付け足されない。これにより、読み込ま +れた行に対するフィルタコマンドで、読み込まれた通りに書き出すことができる。また、 +フィルタ処理された行に対する書き込みのコマンドで、フィルタが出力した通りに書き +出すことができる。例えば、圧縮されたファイルを書き込むもう一つの例は以下のよう +になる。 > + + :autocmd FileWritePre *.gz set bin|'[,']!gzip + :autocmd FileWritePost *.gz undo|set nobin +< + *autocommand-pattern* +コンマで区切られた複数のパターンを指定することもできる。以下にいくつか例を挙げ +る。 > + + :autocmd BufRead * set tw=79 nocin ic infercase fo=2croq + :autocmd BufRead .letter set tw=72 fo=2tcrq + :autocmd BufEnter .letter set dict=/usr/lib/dict/words + :autocmd BufLeave .letter set dict= + :autocmd BufRead,BufNewFile *.c,*.h set tw=0 cin noic + :autocmd BufEnter *.c,*.h abbr FOR for (i = 0; i < 3; ++i)<CR>{<CR>}<Esc>O + :autocmd BufLeave *.c,*.h unabbr FOR + +Makefile (makefile, Makefile, imakefile, makefile.unix 等) にマッチさせるには +こうする。 > + + :autocmd BufEnter ?akefile* set include=^s\=include + :autocmd BufLeave ?akefile* set include& + +Cソースファイルを編集するとき、常に最初の関数から始めるにはこうする。 > + + :autocmd BufRead *.c,*.h 1;/^{ + +上の "1;" がないと、検索が始まる場所はファイルの最初ではなく、ファイルの挿入さ +れた場所になる。 + + *skeleton* *template* +新しいファイルを作るときにスケルトン (テンプレート) ファイルを読み込むにはこう +する。 > + + autocmd BufNewFile *.c 0r ~/vim/skeleton.c + autocmd BufNewFile *.h 0r ~/vim/skeleton.h + autocmd BufNewFile *.java 0r ~/vim/skeleton.java + +HTMLファイルを書き込むときに現在の日付と時刻を挿入したいならこうする (訳注: +KoRoN氏作成のautodate.vimを使った方がよい) > + + :autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s + :fun LastMod() + : if line("$") > 20 + : let l = 20 + : else + : let l = line("$") + : endif + : exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " . + : \ strftime("%Y %b %d") + :endfun + +これを機能させるためには、ファイルの先頭から20行以内に"Last modified: <date +time>" という行を入れる必要がある。Vimは <date time> (とその行内のそれ以後を) +を現在の日付と時刻に置き換える。説明: + ks 現在の位置をマーク 's' に設定する + call LastMod() 関数 LastMod() を呼び出して実際の作業を行う + 's カーソルを元の位置に戻す +関数 LastMod() はファイルの長さが20行以下であるかを調べ、キーワード +"Last modified: " の含まれる行を探すためにコマンド ":g" を実行する。キーワード +の含まれる行に対しては ":s" が実行され、既存の日付を現在のものに置き換える。 +":execute" は ":g" や ":s" で expression を使えるようにするためのものである。 +日付は関数 strftime() から得られる。 strftime() の引数を変更して、別の形の日付 +を得ることもできる。 + +コマンドラインから autocommand を入力すると、(<Tab> や CTRL-D などで) イベント +とコマンド名が適切に補完される。 + +Vimはマッチする全ての autocommand をユーザの指定した順に実行する。ユーザが実行 +させる最初の autocommand にはファイルパターンに "*" を使い、全てのファイルに適 +用されるようにするとよい。これはつまり、あらゆる設定のための既定を好きなように +定義することができ、もしマッチする autocommand が別にあれば、そちらの方が設定 +を上書きできるということである。しかしマッチする autocommand が他になければ、 +少なくともあなたの設定した既定は回復される (もし autocommand がマッチした別の +ファイルから、マッチしなかったファイルに移っても)。 Note Unixのシェルと違い、 +"*" は"." で始まるファイルにもマッチすることに注意。 + + *autocmd-searchpat* +autocommand は現在の検索パターンを変更しない。Vimは autocommand の実行前に現在 +の検索パターンを保存し、autocommand が終了してから復元する。つまり autocommand +はオプション 'hlsearch' で強調表示されている文字列に影響しないということである。 +Autocommand 内でも、例えばコマンド "n" 等で、検索パターンは普通に使用できる。 +もし autocommand の中で終了後に使う検索パターンを設定したいなら、 ":let @/ =" +とすること。 +Autocommand の中で ":nohlsearch" を使って、検索語の強調表示を無効にすることは +できない。Vimの開始時に検索語の強調表示を行わないためには、'viminfo' のフラグ +'h' を使うこと。 + + *Cmd-event* +イベント "*Cmd" のうちどれかを使うと、それによる autocommand が読み込みまたは +書き込みを行うものと想定される。これは特殊なファイル、例えばリモートシステム上 +のファイルに作業をするときに使える。 +注意: これらのイベントを誤った方法で使うと、そのイベントが発生するファイルの読 +み書きが不可能になってしまう。自分の autocommand をしっかりテストすること。最 +良の方法は、普通のファイル名には決してマッチしないパターン (例えば "ftp://*") +を使うことである。 + +BufReadCmd に対して autocommand を定義すると、クラッシュしたセッションの復旧が +難しくなる。元のファイルから復旧するとき、Vimはスワップファイル内に見つからな +かった部分のみを読み込む。それは BufReadCmd の autocommand を使ったときは不可 +能なので、コマンド |:preserve| を使って元のファイルが復旧に必要ないようにする +こと。そうするのはファイルが変更を受けたと判断したときのみでもよい。 + +Vim変数 |v:cmdarg| は引数 "++enc=" と "++ff=" の、有効だったものを保持している。 +これらはファイルを読み書きするコマンドで使われるべきである。 +Vim変数 |v:cmdbang|はコマンドに"!"が使われたときに 1。そうでないときに 0 が設 +定される。 + +例は標準プラグイン $VIMRUNTIME/plugin/netrw.vim を参照。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/eval.jax b/ja/eval.jax new file mode 100644 index 000000000..8636680c8 --- /dev/null +++ b/ja/eval.jax @@ -0,0 +1,1838 @@ +COMMENT: Vimスクリプト +STATUS: finished 5.7 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*eval.txt* For Vim version 5.7. Last change: 2000 Jun 07 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +Expression evaluation *expression* *expr* +(訳注:「式評価」が直訳として正しいがちょっと納まりが悪い) + +注意:式評価はコンパイル時に無効化できる。もしそうなっているとこのドキュメント +に書かれている事は有効ではない。|+eval|と後の最終章とを参照。 + +1. 変数 |variables| +2. 式の文法 |expression-syntax| +3. 内部変数 |internal-variables| +4. 組み込み関数 |functions| +5. 関数定義 |user-functions| +6. コマンド |expression-commands| +7. 例 |eval-examples| +8. +eval機能が無効 |no-eval-feature| + +{これらのコマンドはViには存在しない} + +============================================================================== +1. 変数 *variables* + +変数には2種類の型がある: + +数値 32ビット符合有整数 +文字列 終端がNUL文字である8ビットの符号無し文字 + +これらは文脈に応じて相互に変換される。 + +数値から文字列への変換は数字のASCII表現によって行なわれる。例: +> 数値 123 --> 文字列 "123" +> 数値 0 --> 文字列 "0" +> 数値 -1 --> 文字列 "-1" + +文字列から数値への変換は最初の数字を用いて数値に変換する。16進表記"0xf9"や8進 +表記"017"も認識される。文字列が数字で始まらない場合結果は0となる。例: +> 文字列 "456" --> 数値 456 +> 文字列 "6bar" --> 数値 6 +> 文字列 "foo" --> 数値 0 +> 文字列 "0xf1" --> 数値 241 +> 文字列 "0100" --> 数値 64 + +文字列を強制的に数値に変換するには0を足す: +> :echo "0100" + 0 + +ブール(真理値)演算には数値が使われる。0は偽を意味し、非0は真を表す。 + +Note 次のコマンドをみると + :if "foo" +"foo"は0に変換され、それは偽を意味する。文字列が空ではないか調べるためには +strlen()を使用して次のようにする。 + :if strlen("foo") + +オプション'viminfo'にフラグ'!'が含まれていたなら、大文字で始まり小文字を含まな +い名前のグローバル変数は、viminfoファイル|viminfo-file|に格納される。 + +オプション'sessionoptions'が"global"を含むなら、少なくとも一文字ずつ大文字と小 +文字を含む名前のグローバル変数はsessionファイル|session-file|に格納される。 + +変数名 何処に保存されるか ~ +my_var_6 されない +My_Var_6 sessionファイル +MY_VAR_6 viminfoファイル + +============================================================================== +2. 式の文法 *expression-syntax* + +式文法一覧、優先順位の低いものから高い順に: + +|expr1| expr2 || expr2 .. 論理和 + +|expr2| expr3 && expr3 .. 論理積 + +|expr3| expr4 == expr4 等しい + expr4 != expr4 等しくない + expr4 > expr4 より大きい + expr4 >= expr4 大きいか等しい + expr4 < expr4 より小さい + expr4 <= expr4 小さいか等しい + expr4 =~ expr4 正規表現にマッチする + expr4 !~ expr4 正規表現にマッチしない + expr4 ==? expr4 文字列として等しい(大文字/小文字区別無し) + expr4 ==# expr4 文字列として等しい(大文字/小文字区別有り) + etc. As above, append ? for ignoring case, # for matching case + +|expr4| expr5 + expr5 .. 足し算 + expr5 - expr5 .. 引き算 + expr5 . expr5 .. 文字列の連結 + +|expr5| expr6 * expr6 .. 掛け算 + expr6 / expr6 .. 割り算 + expr6 % expr6 .. 剰余(割った余り) + +|expr6| ! expr6 論理否定 + - expr6 単項のマイナス(訳注:-1等) + expr7 + +|expr7| expr8[expr1] 文字列内でのインデックス + +|expr8| number 数定数 + "string" 文字列定数 + 'string' リテラル文字列定数 + &option オプション変数 + (expr1) 式の入れ子 + variable 内部変数 + $VAR 環境変数 + @r レジスタ'r'の値 + function(expr1, ...) 関数呼出し + +".." はその演算が、その後に他の演算を続ける事が出来ることを示している。 +例: +> &nu || &list && &shell == "csh" + +一つのレベルにある全ての式は左から右に解釈される。 + + +expr1 and expr2 *expr1* *expr2* +--------------- + + *expr-barbar* *expr-&&* +演算子"||"と"&&"は左右に一つずつ引数を取る。引数は数値に変換される。結果は: + + 入力 出力 ~ + n1 n2 n1 || n2 n1 && n2 ~ + 零 零 零 零 + 零 非零 非零 零 + 非零 零 非零 零 + 非零 非零 非零 非零 + +演算子は続けて書く事ができる。例: + +> &nu || &list && &shell == "csh" + +Note "&&"は"||"よりも高い優先順位を持っている。これは次の事を意味する: + +> &nu || (&list && &shell == "csh") + +結果が決定した時点で残りの式は省略され、解釈されない。これはC言語で行なわれる +ことと似ている。例: + +> let a = 1 +> echo a || b + +これはaが非零で戻り値は絶対に非零であるから、変数bが宣言されていなくても有効で +ある。次のも同様に: + +> echo exists("b") && b == "yes" + +これもbが宣言されているいないに関わらず有効である。後半の項はbが定義されている +時にだけ評価される。 + + +expr3 *expr3* +----- + + expr4 {cmp} expr4 + +2つの表現expr4を比較し、結果が偽なら0を真なら1を返す。 + + *expr-==* *expr-!=* *expr->* *expr->=* + *expr-<* *expr-<=* *expr-=~* *expr-!~* + *expr-==#* *expr-!=#* *expr->#* *expr->=#* + *expr-<#* *expr-<=#* *expr-=~#* *expr-!~#* + *expr-==?* *expr-!=?* *expr->?* *expr->=?* + *expr-<?* *expr-<=?* *expr-=~?* *expr-!~?* + 'ignorecase'次第 大小文字考慮 大小文字無視 ~ +等しい == ==# ==? +等しくない != !=# !=? +より大きい > ># >? +より大きいか等しい >= >=# >=? +より小さい < <# <? +より小さいか等しい <= <=# <=? +正規表現マッチ =~ =~# =~? +正規表現非マッチ !~ !~# !~? + +Examples: + "abc" ==# "Abc" 0と評価される + "abc" ==? "Abc" 1と評価される + "abc" == "Abc" 'ignorecase'が設定されていれば1と、でなければ0と評価 + +文字列と数値を比較した場合、文字列が数値に変換され、数値として比較される。 + +文字列同士を比較した場合、strcmp()やstricmp()によって比較される。これは数値的 +に(バイトの値で)比較されるのであって、言語による文字種の違いである必要は無い。 + +'#'を付けた演算子を使うか、省略形かつ'ignorecase'が設定されていない場合、比較 +はstrcmp()で行なわれる。 + +'?'を付けた演算子を使うか、省略形かつ'ignorecase'が設定されている場合、比較は +stricmp()で行なわれる。 + +"=~"と"!~"演算子は右側の引数を正規表現のパターンとして左側の引数に対してマッチ +を試みる。正規表現のパターンに関しては|pattern|を参照。このマッチは'magic'が設 +定され'cpoptions'が空であるように振舞い、実際の'magic'や'cpoptions'に何が設定 +されているには依存しない。これがスクリプトをポータブルにしてくれる。正規表現中 +のバックスラッシュが重複してしまうのを避けるには、シングルクォーテーションの文 +字列を使用する。詳細は|literal-string| + + +expr4 and expr5 *expr4* *expr5* +--------------- + expr5 + expr5 .. number addition *expr-+* + expr5 - expr5 .. number subtraction *expr--* + expr5 . expr5 .. string concatenation *expr-.* + + expr6 * expr6 .. number multiplication *expr-star* + expr6 / expr6 .. number division *expr-/* + expr6 % expr6 .. number modulo *expr-%* + +"."を除く全ての演算子は自動的に文字列を数値に変換する。 + +"+"と"."の違いに注意: + "123" + "456" = 579 + "123" . "456" = "123456" + +'/'の右辺(除数)が0の場合、結果は0xfffffffになる。 +'%'の右辺(法)が0の場合、結果は0になる。 + + +expr6 *expr6* +----- + ! expr6 logical NOT *expr-!* + - expr6 unary minus *expr-unary--* + +'!'演算子では非零は0に、0は1になる。 +'-'では数値の符号が反転される。 + +文字列はまず数値に変換される。 + +これら2つは繰り返したり混ぜたりできる。例: + !-1 == 0 + !!8 == 1 + --9 == 9 + + +expr7 *expr7* +----- + expr8[expr1] index in String *expr-[]* + +これの結果は文字列expr8のexpr1番目の単一のキャラクタからなる文字列である。 +expr8は文字列、expr1は数である。 + +インデックスが0の場合、先頭のキャラクタが得られることに注意。これはC言語のよう +に働く。注意:カラム番号は1から始まる。例えばカーソルの下の文字を得るためには、 +次のようにする必要がある: +> c = getline(line("."))[col(".") - 1] + +文字列の長さよりも大きなインデックスが指定された場合、結果は空文字列になる。 + + *expr8* +数 +------ + number number constant *expr-number* + +10進数、16進数(0xか0Xで始まる)、もしくは8進数(0で始まる)の数定数。 + + +文字列 *expr-string* +------ + "string" string constant *expr-quote* + +ダブルクォートが使われていることに注意。 + +文字列定数には以下の特別文字が使用できる: +A string constant accepts these special characters: + \... 3桁の8進数字 (例 "\316") + \.. 2桁の8進数字 (非数字が続かなければならない) + \. 1桁の8進数字 (非数字が続かなければならない) + \x.. 2桁の16進数字 (例 "\x1f") + \x. 1桁の16進数字 (16進数字でないものが続かなければならない) + \X.. \x..に同じ + \X. \x.に同じ + \b バックスペース <BS> + \e エスケープ <Esc> + \f フォームフィード <FF> + \n 改行 <NL> + \r 改行(キャリッジリターン) <CR> + \t タブ <Tab> + \\ 円記号(バックスラッシュ) + \" ダブルクォート + \<xxx> "xxx"というなの特別キー。 例 "\<C-W>" は CTRL-W. + +Note "\000"と"\x00"は強制的に文字列の終端として扱われる。 + + +リテラル文字列 *literal-string* +--------------- + 'string' literal string constant *expr-'* + +Note シングルクォートが使われていることに注意。 + +この文字列は文字通りに扱われる。バックスラッシュは取り除かれないし、また特別な +意味を持ったりもしない。リテラル文字列中にはシングルクォートを含む事ができな +い。含む必要がある場合は普通の文字列(ダブルクォート)を使用すること。 + + +オプション *expr-option* +------ + &option option value + +ここにはあらゆるオプション名を使うことができる。|options|を参照。 + + +レジスタ *expr-register* +-------- + @r contents of register 'r' + +結果は、名前付けられたレジスタの内容が単一の文字列として与えられる。必要なとこ +ろには改行文字が挿入されている。無名レジスタの内容を取得するためには@@を使う。 +'='レジスタはここには使えない。どのようなレジスタがあるのかは、|registers|を参 +照。 + + +入れ子 *expr-nesting* +------- + (expr1) nested expression(式の入れ子) + + +環境変数 *expr-env* +-------------------- + $VAR environment variable(環境変数) + +環境変数の文字列。定義されていない環境変数を指定した場合、結果は空文字列。 + *expr-env-expand* +Note $VARを直接使用した場合とexpand("$VAR")を使用した場合では、動作に違いがあ +ることに注意。直接使用した場合には、現在のVimのセッション中で既知の値に展開さ +れるだけである。expand()を使用した場合、まず最初にVimのセッション中で既知の値 +に展開される。それが失敗した場合、変数の展開にシェルが使用されることになる。こ +れは遅くはなるが、シェルの知りうる総ての変数を展開することができる。例: +> echo $version +> echo expand("$version") +最初の一つは恐らく何も帰ってこず、2つ目は$versionの値が帰ってくるだろう(貴方の +シェルがサポートしていたとして) + + +内部変数 *expr-variable* +----------------- + variable internal variable(内部変数) +以下の|internal-variables|を参照。 + + +関数呼出 *expr-function* +------------- + function(expr1, ...) function call(関数呼出) +以下の|functions|を参照。 + + +============================================================================== +3. 内部変数 *internal-variables* + +内部変数の名前には文字と、数字とアンダーバー('_')を使うことができる。しかし数 +字で始めることはできない。 + +内部変数は":let"コマンドで作成される|:let|。":unlet"コマンドで内部変数を破棄す +ることができる|:unlet|。内部変数に使われてない名前か、既に破棄された内部変数を +使うとエラーとなる。 + +"b:"で始まる変数名は、カレントバッファに局所的な変数を意味する。このように一つ +一つのバッファ毎に、変数"b:foo"を別々に使用することができる。この種の変数は +バッファがアンロードされた時に破棄される。もしもそれを破棄したくない場合には、 +'hidden'オプションを設定することでバッファがアンロードされるのを避けることがで +きる。 + +"w:"で始まる変数名は、カレントウィンドウに局所的な変数を意味する。これはウィン +ドウを閉じるときに破棄される。 + +関数の中からグローバル変数へアクセスするには、"g:"を付けた名前を使用する。 + +Vimの定義済変数: + *v:count* *count-variable* +v:count 最後に実行されたノーマルモードコマンドに渡されたコマンドの実行 + 回数を返す。読出し専用。使用例: +> :map _x :<C-U>echo "the count is " . count<CR> + Note: <C-U>は、カウントの後に':'をタイプした時に示される、行範 + 囲指定を削除するために必要となる。 + また"count"は、以前の版のVimとの互換性の為に動作する。 + + *v:count1* *count1-variable* +v:count1 "v:count"と同じように、しかしカウントが指定されなかった時の省 + 略値として存在する。 + + *v:errmsg* *errmsg-variable* +v:errmsg 最後に表示されたエラーメッセージ。この変数はセットすることが許 + されている。例: +> :let errmsg = "" +> :next +> :if (errmsg != "") +> : ... + また"errmsg"は、以前の版のVimとの互換性の為に動作する。 + + *v:warningmsg* *warningmsg-variable* +v:warningmsg 最後に表示された警告メッセージ。この変数はセットすることが許さ + れている。 + + *v:statusmsg* *statusmsg-variable* +v:statusmsg 最後に表示されたステータスメッセージ。この変数はセットすること + が許されている。 + + *v:shell_error* *shell_error-variable* +v:shell_error 最後に実行したシェルコマンドの結果。シェルコマンドの実行時にな + にかエラーがあったならば、非零の値を取る。問題がなければ零にな + る。これはシェルがエラーコードをVimに通知する時のみ働く。コマ + ンドが実行されなかった時には、値として-1が良く使われる。読出し + 専用。 + 例: +> :!mv foo bar +> :if v:shell_error +> : echo 'could not rename "foo" to "bar"!' +> :endif + また"shell_error"は、以前の版のVimとの互換性の為に動作する。 + + *v:this_session* *this_session-variable* +v:this_session + 最後にロードされたか、セーブされたセッションファイルの完全な + ファイル名。|:mksession|を参照。この変数はセットすることが許さ + れている。それ以前にセーブされたセッションがなければ、この変数 + は空となる。 + また"this_session"は、以前の版のVimとの互換性の為に動作する。 + + *v:version* *version-variable* +v:version Vimのバージョン番号。メジャーバージョン番号は100倍され、マイ + ナーバージョン番号と足されている。Version 5.0は500。Version + 5.1 (5.01)は501となる。読出し専用。 + また"version"は、以前の版のVimとの互換性の為に動作する。 + +============================================================================== +4. 組み込み関数 *functions* + +(関数名の上でCTRL-]を使うことで、詳細な説明へ飛ぶことができる) + +使用法 結果 説明 ~ + +append( {lnum}, {string}) 数値 {string}を{lnum}行目に付け加える +argc() 数値 引数内のファイルの数 +argv( {nr}) 文字列 引数の第{nr}番目 +browse( {save}, {title}, {initdir}, {default}) + 文字列 ファイル選択ダイアログを表示 +bufexists( {expr}) 数値 バッファ{expr}が存在すればTRUE +bufloaded( {expr}) 数値 バッファ{expr}がロード済みならTRUE +bufname( {expr}) 文字列 バッファ{expr}の名前 +bufnr( {expr}) 数値 バッファ{expr}の番号 +bufwinnr( {nr}) 数値 バッファ{nr}のウィンドウ番号 +byte2line( {byte}) 数値 {byte}番目のバイトの行番号 +char2nr( {expr}) 数値 {expr}の先頭文字のASCIIコード +col( {expr}) 数値 カーソルかマークのカラム番号nr +confirm( {msg}, {choices} [, {default} [, {type}]]) + 数値 ユーザへの選択肢と番号 +delete( {fname}) 数値 ファイル{fname}を消す +did_filetype() 数値 FileTypeのautocommandが実行されたか? +escape( {string}, {chars}) 文字列 {string}内の{chars}を'\'でエスケープ +exists( {var}) 数値 変数{var}が存在したらTRUE +expand( {expr}) 文字列 {expr}内の特別なキーワードを展開 +filereadable( {file}) 数値 {file}が読みこみ可能ならTRUE +fnamemodify( {fname}, {mods}) 文字列 ファイル名を変更 +getcwd() 文字列 現在の作業ディレクトリ +getftime( {fname}) 数値 ファイルの最終更新時間 +getline( {lnum}) 文字列 現在のバッファから行の内容を取得 +getwinposx() 数値 GUI vim windowのX座標 +getwinposy() 数値 GUI vim windowのY座標 +glob( {expr} [, {flag}]) 文字列 {expr}内のfile wildcardを展開 +has( {feature}) 数値 機能{feature}がサポートならばTRUE +histadd( {history},{item}) 文字列 ヒストリに追加 +histdel( {history} [, {item}]) 文字列 ヒストリからitemを削除 +histget( {history} [, {index}]) 文字列 ヒストリから{index}アイテムを取得 +histnr( {history}) 数値 ヒストリの数 +hlexists( {name}) 数値 highligth group {name}が存在したらTRUE +hlID( {name}) 数値 highlight group {name}のID +hostname() 文字列 vimが動作しているマシンの名前 +input( {prompt}) 文字列 ユーザからの入力を取得 +isdirectory( {directory}) 数値 {directory}がディレクトリならばTRUE +libcall( {lib}, {func}, {arg} 文字列 ライブラリ{lib}の関数{func}をコール +line( {expr}) 数値 行番号の取得 +line2byte( {lnum}) 数値 行{lnum}のバイトカウント +localtime() 数値 現在時刻 +maparg( {name}[, {mode}]) 文字列 rhs of mapping {name} in mode {mode} +mapcheck( {name}[, {mode}]) 文字列 check for mappings matching {name} +match( {expr}, {pat}) 数値 {expr}内で{pat}のマッチした先頭位置 +matchend( {expr}, {pat}) 数値 {expr}内で{pat}のマッチした末尾位置 +matchstr( {expr}, {pat}) 文字列 {expr}で{pat}がマッチした文字列 +nr2char( {expr}) 文字列 ASCIIコード{expr}で示されるキャラクタ +rename({from}, {to}) 数値 {file}から{to}へファイル名変更 +setline( {lnum}, {line}) 数値 行{lnum}に{line}(文字列)をセット +strftime( {format}[, {time}]) 文字列 指定されたフォーマットでの時刻 +strlen( {expr}) 数値 文字列{expr}の長さ +strpart( {src}, {start}, {len}) 文字列 {src}内{start}から長さ{len}の部分 +strtrans( {expr}) 文字列 文字列を表示可能に変更 +substitute( {expr}, {pat}, {sub}, {flags}) + 文字列 {expr}の{pat}を{sub}に置換え +synID( {line}, {col}, {trans}) 数値 {line}と{col}のsyntax IDを取得 +synIDattr( {synID}, {what} [, {mode}]) + 文字列 syntax ID{synID}の属性{what}を取得 +synIDtrans( {synID}) 数値 {synID}の翻訳されたsyntax ID +system( {expr}) 文字列 シェルコマンド{expr}の出力結果 +tempname() 文字列 テンポラリファイルの名前 +virtcol( {expr}) 数値 カーソルのスクリーンカラム位置 +visualmode() 文字列 最後に使われたVisualモード +winbufnr( {nr}) 数値 ウィンドウ{nr}のバッファ番号 +winheight( {nr}) 数値 ウィンドウ{nr}の高さ +winnr() 数値 現在のウィンドウの番号 + +append({lnum}, {string} *append()* + 現在のバッファの{lnum}行の後に、テキスト{string}を付加する。 + バッファの先頭に行を追加する時は、{lnum}に0を使用する。失敗し + た場合、戻り値は1となる({lnum}が範囲外)。成功ならば0となる。 + + *argc()* +argc() 結果は引数のリスト内の、ファイルの数。|arglist|を参照。 + + *argv()* +argv({nr}) 結果は引数リスト内の、{nr}番目のファイル。|arglist|を参照。 + "argv(0)"は一番最初のファイルを示す。例: +> let i = 0 +> while i < argc() +> let f = substitute(argv(i), '\([. ]\)', '\\&', 'g') +> exe 'amenu Arg.' . f . ' :e ' . f . '<CR>' +> let i = i + 1 +> endwhile + + *browse()* +browse({save}, {title}, {initdir}, {default}) + ファイル選択ダイアログを起動。これは"has("browser")"が、非零を + 返す時(幾つかのGUIバージョンに限定)にだけ働く。 + 入力フィールドの意味は: + {save} 非零ならば書込み用ファイルの選択 + {title} ダイアログのタイトル + {initdir} ダイアログの始まるディレクトリ + {default} ファイル名の省略値 + ダイアログがキャンセルされるか、何かエラーがあるか、もしくはブ + ラウジングが不可能ならば、空文字列が戻ってくる。 + + *bufexists()* +bufexists({expr}) + 結果は数値で、{expr}と呼ばれるバッファが存在すれば非零となる。 + {expr}が文字列だった場合、バッファ名に正確にマッチしなければな + らない。{expr}が数値だった場合、比較にはバッファ番号が使用され + る。裏バッファ(#)があるかどうかをテストするには、bufexists(0) + を使用する。 + *buffer_exists()* + 以前の名前: buffer_exists(). + + *bufloaded()* +bufloaded({expr}) + 戻り値は数値で、{expr}と呼ばれるバッファが存在しロード済み( + ウィンドウに表示されているか、隠されているかは問わない)ならば + 結果は非零となる。引数{expr}はbufexists()と同じように扱われ + る。 + + *bufname()* +bufname({expr}) + 戻り値はバッファの名前。バッファ名はコマンド":ls"で表示される + ものと同様。 + {expr}が数値ならば、その番号のバッファ名が返される。0は現在の + ウィンドウの裏バッファを意味する。{expr}が文字列ならば、バッ + ファ名に対して正規表現マッチングを行なうパターンとなる。この + マッチングは常に、'magic'をセットし'cpoptions'を空にした状態で + 行なわれる。複数マッチしてしまった場合には空文字列が返される。 + ""や"%"は現在のバッファを意味し、"#"は裏バッファを意味する。 + {expr}が文字列のときに、それをバッファ番号として使いたいなら + ば、0を足すことによって強制的に数値にすることができる: +> echo bufname("3" + 0) + バッファが存在しないか名前を持っていない場合には、空文字列が返 + される。 +> bufname("#") alternate buffer name +> bufname(3) name of buffer 3 +> bufname("%") name of current buffer +> bufname("file2") name of buffer where "file2" matches. + *buffer_name()* + 以前の名前: buffer_name(). + + *bufnr()* +bufnr({expr}) + 結果はバッファの番号。バッファ番号はコマンド":ls"で表示される + ものと同様。{expr}の使い方は前述のbufname()を参照。バッファが + 存在しない場合-1が返される。bufnr("$")は最後のバッファを意味す + る: +> :let last_buffer = bufnr("$") + 結果は存在しているバッファのうちで、もっとも大きなバッファ番号 + となる。 Note そのバッファ番号より小さいバッファ番号を持つ(ハ + ズの)バッファが、必ずしも総て存在するとは限らない。なぜなら + ":bdel"がバッファを消すことができるからだ。バッファが存在する + かテストするにはbufexists()を使う。 + 以前の名前: buffer_number(). + *last_buffer_nr()* + bufnr("$")の以前の名前: last_buffer_nr(). + + *bufwinnr()* +bufwinnr({expr}) + 結果は数値で、バッファ{expr}に関連付けられた最初のウィンドウの + 番号。{expr}の使い方は前述のbufname()を参照。バッファ{expr}が + 存在しないか、ウィンドウが無い場合には-1が返される。例: +> echo "A window containing buffer 1 is " . (bufwinnr(1)) + + *byte2line()* +byte2line({byte}) + 現在のバッファの先頭から{byte}番目のキャラクタが、何行目に含ま + れるかを返す。これには現在のバッファの'fileformat'に依存した、 + 改行文字も含まれる。先頭の文字にはバイトカウント1が与えられ + る。 + |line2byte()|と|go|と|:goto|も参照。 + {|+byte_offset|機能を有効にしてコンパイルしなければ利用できな + い} + + *char2nr()* +char2nr({expr}) + {expr}の最初の文字のASCIIコードを返す。例: +> char2nr(" ") returns 32 +> char2nr("ABC") returns 65 + + *col()* +col({expr}) + 戻り値は数値で、{expr}で与えられるファイル上でのカラム番号。有 + 効な位置は: + . 現在の位置 + 'x マークxの位置(マークが設定されていない場合0) + Note 現在のファイルのマークしか使えないことに注意。 + 例: +> col(".") カーソルのカラム +> col("'t") マークtのカラム +> col("'" . markname) マークmarknameのカラム + 先頭のカラムは1になる。返された0はエラーを示す。 + + *confirm()* +confirm({msg}, {choices} [, {default} [, {type}]]) + confirm()はユーザに選択させるためのダイアログを提供する。戻り + 値は選択した番号になる。最初の選択肢が1である。 + Note: confirm()は、ダイアログサポートを有効にしてコンパイルし + た時にだけ動作する。|+dialog_con|と|+dialog_gui|を参照。 + ダイアログには{msg}に加えて{choices}の選択肢が表示される。 + {msg}は文字列で'\n'を改行として使用できる。幾つかのシステムで + は、長すぎる行は自動的に折り返される。 + {choices}は文字列で、個々の選択肢は'\n'によって区切られる。 + 例: +> confirm("Save changes?", "&Yes\n&No\n&Cancel") + '&'の後の文字は選択肢のショートカットキーになる。この場合 + "Cancel"を選択するのに'c'をタイプすることができる。ショート + カットキーは最初の文字である必要は無い: +> confirm("file has been modified", "&Save\nSave &All") + コンソールでは、デフォルトのショートカットキーとして、各選択肢 + の最初の文字が使われる。 + オプションの引数{default}は<CR>キーを叩いた時に選択される選択 + 肢の番号を指定する。最初の選択肢をデフォルトにするならば1を使 + 用する。デフォルトを設定したくないのならば0を使用する。 + {default}を省略した場合、0が使用される。 + オプションの引数{type}はダイアログのタイプを与える。これは + Win32 GUI版でアイコンを指定するのに使う。"Error", "Question", + "Info", "Warning", "Generic"のうちどれか一つを指定する。以上の + うちの先頭の文字だけで指定できる。{type}が省略された場合、 + "Generic"が使用される。 + ユーザが<Esc>やCTRL-Cや、その他の割りこみキーでダイアログを中 + 断した場合、confirm()は0を返す。 + + 例: +> :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2) +> :if choice == 0 +> : echo "make up your mind!" +> :elseif choice == 3 +> : echo "tasteful" +> :else +> : echo "I prefer bananas myself." +> :endif + GUIのダイアログではボタンが使用される。ボタンの配置は + 'guioptions'の'v'フラグに依存する。もしも'v'フラグが含まれてい + るのなら、ボタンは常に垂直に配置される。そうでなければ水平に配 + 置しようと試みられる。水平配置がうまくマッチしない場合は、垂直 + 配置が使われる。幾つかのシステムでは常に水平配置が使われる。 + + *delete()* +delete({fname}) {fname}という名前のファイルを削除する。戻り値は数値で、削除に + 成功したら0、失敗したら1が返る。 + + *did_filetype()* +did_filetype() autocommandが実行されFileTypeイベントが一度でも起こっていれ + ば、非零が返る。スクリプトのFileTypeイベントが、複数回呼び出さ + れるのを回避するのに使える。 |FileType| + +escape({string}, {chars}) *escape()* + {string}内に現れる{chars}のキャラクタをバックスラッシュでエス + ケープする。例: +> :echo escape('c:\program files\vim', ' \') + 結果: +> c:\\program\ files\\vim + + *exists()* +exists({expr}) 結果は数値で、変数{expr}が存在すれば1となり、そうでなければ0と + なる。引数{expr}は文字列で次のうちいずれかである。 + &option-name Vimオプション + $ENVNAME 環境変数(空文字列と比較することで、判 + 定が成される) + *funcname 組み込み関数(|functions|参照)かユーザ + が定義した関数(|user-functions|参照) + varname 内部変数(|internal-variables|) + + 例: +> exists("&shortname") +> exists("$HOSTNAME") +> exists("*strftime") +> exists("bufcount") + シンボルである&/$/*と名前の間には、空白文字があってはならな + い。 Note 引数は変数自信ではなくて、文字列でなければならないこ + とに注意。次の例は変数"bufcount"が存在するかのチェックにはなら + ない。この場合、存在するならば"bufcount"の中身で表わされる変数 + の存在をチェックする: + exists(bufcount) + + *expand()* +expand({expr} [, {flag}]) + ワイルドカードと{expr}内の特殊なキーワードを展開する。戻り値は + 文字列。 + + 複数の候補があった場合、それらは文字<NL>で区切られる。[注意: + バージョン5.0では空白文字が用いられ、スペースを含むファイル名 + について問題を引き起こしていた] + + 展開が失敗した場合、結果は空文字列となる。また存在しないファイ + ル名というのは、結果の文字列には含まれない。 + + {expr}が'%'か'#'か'<'で始まる場合には、展開は|cmdline-special| + のように、変換子を受け付け、それらに関連付けられた変換が施され + る。ここに簡単な概略を示す: + + % 現在のファイル名 + # 裏バッファのファイル名 + #n n番の裏バッファのファイル名 + <cfile> カーソルのしたのファイル名 + <afile> autocmdのファイル名 + <abuf> autocmdのバッファ名 + <sfile> 取り込み(source)中のファイル名 + <cword> カーソル下の単語(word) + <cWORD> カーソル下の単語(WORD) + 変換子: + :p フルパス名を展開 + :h ヘッド(ディレクトリ) + :t テイル(ファイル名だけ) + :r 拡張子が削除される + :e 拡張子だけ + + 例: +> :let &tags = expand("%:p:h") . "/tags" + '%'や'#'や'<'で始まる文字列を展開する時には、それに続くテキス + トは無視されることに注意。従ってこれは正しくない: +> :let doesntwork = expand("%:h.bak") + こうすると良い: +> :let doeswork = expand("%:h") . ".bak" + "<cfile>"やそれらを展開する時には、戻り値が完全な展開をされな + い参照名であることにも注意が必要。もしも"<cfile>"が"~/.cshrc" + であった場合、"~/"を展開してホームディレクトリにするために、も + う一度expand()を呼び出す必要がある: +> :echo expand(expand("<cfile>")) + + 変数と変換子の間には空白文字があってはならない。関数 + |fnamemodify()|が通常のファイル名の変換には使用可能である。 + + '%'や'#'を名前が未定義の現在や裏バッファのファイルに適用した場 + 合、空文字列が使用される。"%:p"を名無しのバッファに使用した場 + 合、結果はカレントディレクトリに'/'が付加されたものになる。 + + '%'や'#'や'<'で始まらない{expr}は、コマンドラインのファイル名 + と同じように展開される。オプションの{flag}が使用され、その値が + 非ゼロでない時以外は'suffixes'と'wildignore'が使用される。 + + Expand()は、シェルの持っている変数や環境変数を展開することがで + きる。しかしシェルが起動されなければならないので、遅くなる。 + |expr-env-expand|を参照。 + + 存在するファイルを探すには|glob()|を参照。外部コマンドの「生 + の」実行結果を扱うには|system()|を参照。 + + *filereadable()* +filereadable({file}) + 結果は数値で、{file}というファイルが存在し、読みこむことが可能 + ならばTRUEとなる。ファイル{file}が存在しないかディレクトリだっ + た場合には、結果はFALSEとなる。引数{file}は文字列として使えれ + ばどのような表現でもよい。 + *file_readable()* + 以前の名前: file_readable(). + + *fnamemodify()* +fnamemodify({fname}, {mods}) + ファイル名{fname}を{mods}にしたがって変更する。{mods}はコマン + ドラインで使われるのと同様な文字列である。詳細は + |filename-modifiers|を参照。 + 例: +> :echo fnamemodify("main.c", ":p:h") + 結果: +> /home/mool/vim/vim/src/ + + *getcwd()* +getcwd() 結果は文字列で、現在のディレクトリ名。 + + *getftime()* +getftime({fname}) + 結果は{fname}で与えられたファイルの、最終更新時間を示す数値。 + 1970年1月1日からの経過時間(病)で、strftime()に渡すことができる + だろう。|localtime()|と|strftime()|も参照。 + ファイル{fname}が見つからなかった場合には-1を返す。 + + *getline()* +getline({lnum}) 結果は現在のバッファの{lnum}行目の内容(文字列)。例: +> getline(1) + {lnum}が数字ではない文字で始まる文字列であった場合、line()に + よってその文字列が数字に変換される。よって、カーソルのある行の + 文字列を取得するには: +> getline(".") + {lnum}が1より小さいかバッファの行数よりも大きい数値の場合、空 + 文字列が返される。 + + *getwinposx()* +getwinposx() 結果はGUIのVimウィンドウの左端の、デスクトップ上でのX座標値(数 + 値)。情報が存在しない(コンソールの)場合は-1となる。 + + *getwinposy()* +getwinposy() 結果はGUIのVimウィンドウの上端の、デスクトップ上でのY座標値(数 + 値)。情報が存在しない(コンソールの)場合は-1となる。 + + *glob()* +glob({expr}) Expand the file wildcards in {expr}. The result is a String. + {expr}内のファイル名のワイルドカードを展開する。結果は文字列。 + 結果が複数存在する場合、各々が文字<NL>によって区切られる。 + 展開が失敗した場合、結果は空文字列。結果には、存在しないファイ + ル名は含まれない。 + + 多くのシステムではbackticks(「`」という文字のこと)を、外部コマ + ンドの実行結果からファイル名を取得するために使用できる。例: +> :let tagfiles = glob("`find . -name tags -print`") +> :let &tags = substitute(tagfiles, "\n", ",", "g") + backticks内のプログラムの実行結果は、一行に一つずつの項目が含 + まれてなければならない。項目内のスペースは許容される。 + + 特殊なVimの変数を展開するためには|expand()|を参照。外部コマン + ドの生の出力を得るためには|system()|を参照。 + + *has()* +has({feature}) 結果は機能{feature}がサポートされる場合1、されない場合0とな + る。引数{feature}は文字列。下記の|feature-list|を参照。 + + *histadd()* +histadd({history}, {item}) + 文字列{item}を履歴{history}に追加する。履歴{history}は以下のう + ちどれか一つから選択: *hist-names* + "cmd" or ":" コマンドライン履歴 + "search" or "/" 検索パターン履歴 + "expr" or "=" タイプされた表現の履歴 + "input" or "@" input()の履歴 + {item}が履歴内に既に存在する場合、それが最新の項目の位置へシフ + トされる。結果は数値:操作が成功した場合1、そうでなければ0 + + 例: +> :call histadd("input", strftime("%Y %b %d")) +> :let date=input("Enter date: ") + + *histdel()* +histdel({history} [, {item}]) + {history}の内容を削除する。例えば総てのエントリを消すこともで + きる。{history}の部分に可能な値は|hist-names|を参照。 + + パラメータ{item}が文字列として与えられた場合、これは正規表現と + して扱われる。その表現にマッチする総てのエントリがhistoryから + 削除される(複数あっても)。 + {item}が数値ならば、インデックスとして解釈される。インデックス + については|:history-indexing|を参照。関連するエントリ(訳注:The + respective entry)も、存在すれば削除される。 + + 結果は数値: 削除に成功すれば1を、そうでなければ0が返る。 + + 例: + 式レジスタの履歴を削除する: +> :call histdel("expr") + + 検索履歴から、"*"で始まるエントリを総て削除する: +> :call histdel("/", '^\*') + + 次の3つは等価である: +> :call histdel("search", histnr("search")) +> :call histdel("search", -1) +> :call histdel("search", '^'.histget("search", -1).'$') + + 最後の検索パターンを削除し、一つ前のパターンを"n"コマンド(次の + マッチへ移動)と'hlsearch'の為に設定する: +> :call histdel("search", -1) +> :let @/ = histget("search", -1) + + + *histget()* +histget({history} [, {index}]) + 結果は{history}の第{index}エントリーを表わす文字列。{history} + の部分に可能な値は|hist-names|を、{index}については + |:history-indexing|を参照。指定されたエントリが存在しない場合 + は空文字列が返される。{index}が省略された場合には、履歴中の最 + 新のエントリが戻り値として使用される。 + + 例: + 2つ前に行なわれた検索をやり直す: +> :execute '/' . histget("search", -2) + + |:history|によって出力される{num}番目のエントリを、再 + 度実行するための":H {num}"というコマンドを定義する。 +> :command -nargs=1 H execute histget("cmd",0+<args>) + + *histnr()* +histnr({history}) + 結果は数値で{history}の現在のエントリー数。{history}の部分に可 + 能な値は|hist-names|を参照。エラーが起こった場合、-1が返され + る。 + + 例: +> :let inp_index = histnr("expr") + + *hlexists()* +hlexists({name}) + 結果は数値で、{name}という名のハイライトグループが存在すれば、 + 非ゼロの値が返される。これはなんらかの方法でそのグループが既に + 定義されている時にのみ起こる。これの為に実際に何らかのハイライ + ティングアイテムが設定されている必要はなく、単にシンタックスの + アイテムとしても使われるだろう。 + *highlight_exists()* + 以前の名前: highlight_exists(). + + *hlID()* +hlID({name}) 結果は数値で、{name}という名前のハイライトグループのID番号。そ + のハイライトグループが存在しない場合は0が返される。 + これはハイライトグループについての情報を獲得するために使用され + る。例えば"Comment"グループの背景色を取得するにはこのようにす + る: +> :echo synIDattr(synIDtrans(hlID("Comment")), "bg") + *highlightID()* + 以前の名前: highlightID() + + *hostname()* +hostname() + 結果は文字列で、現在Vimが実行されているマシンの名前。名前が256 + 文字を超える場合、超えた部分は切り捨てられる。 + +input({prompt}) *input()* + 結果は文字列で、ユーザがコマンドラインに入力したものが返され + る。引数はプロンプト用文字列であり、プロンプトが必要なければ空 + 文字列でかまわない。新しい行から入力させるために'\n'をプロンプ + トに使用することができる。ハイライトセット|:echohl|はプロンプ + トにも適用される。入力はコマンドラインと同様に行え、幾つかの編 + 集コマンドやキーマップもそのまま使用できる。input()に入力され + た文字列には、他の履歴とは独立した履歴が与えられる。 + NOTE: この関数はGUIモードしか持たないバージョン(例、Win32 GUI) + のVimでは、スタートアップファイルの中で使用することはできな + い。 + + 例: +> :if input("Coffee or beer? ") == "beer" +> : echo "Cheers!" +> :endif + *isdirectory()* +isdirectory({directory}) + 結果は数値で、{directory}という名前のディレクトリが存在すれば + TRUEとなる。{directory}が存在しないか、存在したとしてもディレ + クトリではなかった場合には、FALSEが返される。文字列として解釈 + できるのならば{directory}の表現はどのようなものであってもかま + わない。 + + *libcall()* +libcall({libname}, {funcname}, {argument}) + ランタイムライブラリ{libname}の関数{funcname}を、引数 + {argument}として呼び出す。結果には、呼び出した関数から返された + 文字列が返される。もしも引数が数値ならば、関数にはint型の引数 + が1つ渡される。引数が文字列の場合には、関数にはヌル終端記号を + 持つ文字列が引数として渡される。呼び出した関数がNULLを返した場 + 合には、Vimには空文字列""が戻される。 + + libcall()によってVimを最コンパイルすることなく'plug-in'と呼ば + れる独自の拡張を行なうことができる用になる。それは(直接)システ + ムの関数を呼ぶ、ということではない。システム関数を呼んだらVim + がクラッシュするかもしれない。 + + Win32では、あなたが書いた関数をDLLに置かなければならず、また通 + 常のC呼出し規約を使用しなければならない(WindowsのシステムDLLが + 使うPascalではない)。関数は正確に1つのパラメータ、char型ポイン + タもしくはint型を取らなければならず、戻り値としてchar型ポイン + タかNULLを返さなければならない。返されるchar型ポインタは、関数 + 終了後も有効なポインタ(例えばDLL内の静的なデータ)を指さなけれ + ばならない。(malloc等で)割り当てられたメモリを保持していた場 + 合、それはリークしてしまう。DLL内のスタティックバッファを用い + る方法は動くかもしれないが、使用済みDLLがメモリから削除される + と同時に解放されてしまう。 + + 警告: もしも関数が有効ではないポインタを返すと、Vimはクラッ + シュしてしまう。関数が数値を返してしまった場合、Vimはそれをポ + インタとして扱ってしまうので、やはりクラッシュが起こる。 + Win32のシステムでは、{libname}はDLLのファイル名の拡張子".DLL" + を付けてはならない。通常の(パスの通った)場所にDLLがない場合に + は、フルパスで指定する必要がある。 + {Win32バージョン限定の機能} + + *line()* +line({expr}) 結果は数値で、{expr}で与えられた位置のファイル内での行番号。受 + け付けられる位置指定は次の通り: + . カーソルの位置 + $ 現在のバッファの最後の位置 + 'x マークxの位置(マークが設定されていない場合、0が返 + る) + 現在のファイルに対して設定されているマークだけが使用可能なこと + に注意。 + 例: +> line(".") カーソルの行番号 +> line("'t") マークtの位置の行番号 +> line("'" . marker) マークmarkerの位置の行番号 + *last-position-jump* + このautocommandはファイルを開いた時に、最後に開かれていた時の + 行へ自動的にジャンプするものである。これは'"マークがセットされ + ている時にのみ有効である: +> :au BufReadPost * if line("'\"") | exe "normal '\"" | endif + + *line2byte()* +line2byte({lnum}) + バッファの先頭から、{lnum}行目までのバイト数を返す。これには現 + 在のバッファのオプション'fileformat'に従った、end-of-line(行終 + 端)文字も含まれている。最初の行においては1が返る。 + 次のようにすることで最終行を含むバイトサイズを獲得することがで + きる: +> line2byte(line("$") + 1) + これはファイルの大きさプラス1になる。 + {lnum}が無効であるか、|+byte_offset|機能がコンパイル時に無効に + されている場合、-1が返される。 + |byte2line()|、|go|及び|:goto|も参照。 + + *localtime()* +localtime() + 現在の時刻、1970年1月1日からの経過秒数を返す。|strftime()|と + |getftime()|も参照。 + + *maparg()* +maparg({name}[, {mode}]) + モード{mode}におけるキーマップ{name}のrhsを返す。{name}という + キーマップが存在しない場合、空文字列が返される。{mode}には次の + 文字が使用可能: + "n" ノーマル + "v" ビジュアル + "o" モーション待ち (Operator-pending) + "i" インサート + "c" コマンドライン + "" ノーマル、ビジュアル、及びモーション待ち + {mode}が省略された場合、""が使用される。 + {name}には":map"コマンドで使用可能な、特殊なキー名が指定でき + る。結果の文字列内の特殊文字は、":map"コマンドでリスト表示した + 時のように変換される。 + + *mapcheck()* +mapcheck({name}[, {mode}]) + モード{mode}におけるキーマップ{name}が存在するかチェックする。 + {name}に指定できる特殊文字は|maparg()|を参照。 + {name}に対応するキーマップが存在しない時には、空文字列が返され + る。結果が一つならばマップされたrhsが返される。複数見つかった + 場合には、それらのうちどれか一つのrhsが返される。 + この関数はマッピングが曖昧にならないかチェックするために使うこ + とができる。例: +> if mapcheck("_vv") == "" +> map _vv :set guifont=7x13<CR> +> endif + "_vv"というマッピングは"_v"とか"_vvv"といったマッピングと衝突 + する可能性がある。 + + *match()* +match({expr}, {pat}) + 結果は数値で、正規表現パターン{pat}が文字列{expr}の何処にマッ + チしたか、そのインデックスを示す。最初の文字にマッチした場合に + は0を返す。マッチしなかった場合には-1が返される。例: +> :echo match("testing", "ing") + 結果は"4"。 + 受け付け可能なパターンは|pattern|を参照。 + オプション'ignorecase'が指定されていると大文字小文字は無視され + る。'smartcase'は使われない。マッチングは常に'magic'がセットさ + れ、'cpoptions'が指定されない状態で行なわれる。 + + *matchend()* +matchend({expr}, {pat}) + match()と同じだが、返されるのはマッチした部分文字列の終了後の + インデックスである。例: +> :echo matchend("testing", "ing") + 結果は"7"。 + + *matchstr()* +matchstr({expr}, {pat}) + match()と同じだが、返されるのはマッチした文字列。例: +> :echo matchstr("testing", "ing") + 結果は"ing"。 + マッチしなければ""が返される。 + + *nr2char()* +nr2char({expr}) + 結果はアスキーコード{expr}を持つ1文字からなる文字列となる。例: +> nr2char(64) "@"が返される +> nr2char(32) " "が返される + +rename({from}, {to}) *rename()* + ファイルの名前を{from}から{to}へ変える。ファイルシステムを超え + てファイルを移動するのにも使用できる。結果は数値で、成功すれば + 0、失敗すれば1になる。 + + *setline()* +setline({lnum}, {line}) + カレントバッファの{lnum}行目を{line}にする。成功した場合0が返 + される。失敗した(大抵は{lnum}に無効な値を設定したことによる)場 + 合には1が返される。例: +> :call setline(5, strftime("%c")) + + *strftime()* +strftime({format} [, {time}]) + 結果は文字列で、{format}に従って日付や時間がフォーマットされた + ものになる。{time}が与えられた場合にはそれを使うが、省略された + 場合には現在時刻を使用する。受け付け可能な文字列{format}は使用 + するシステムに依存するので、ポータブルとは言えない。フォーマッ + トについてはCの関数strftime()のマニュアルを参照。結果は最大80 + 文字に制限される。|localtime()|と|getftime()|も参照。例: +> :echo strftime("%c") Sun Apr 27 11:49:23 1997 +> :echo strftime("%Y %b %d %X") 1997 Apr 27 11:53:25 +> :echo strftime("%y%m%d %T") 970427 11:53:55 +> :echo strftime("%H:%M") 11:55 +> :echo strftime("%c", getftime("file.c")) +> file.cの更新時刻を表示 + + *strlen()* +strlen({expr}) 結果は数値で、文字列{expr}の長さ。 + + *strpart()* +strpart({src}, {start}, {len}) + 結果は文字列で、{src}の{start}番目の文字から始まる、長さ{len} + の部分文字列。存在しない文字を含むように範囲を指定しても、エ + ラーにはならない。単に文字が省略されるだけである。 +> strpart("abcdefg", 3, 2) == "de" +> strpart("abcdefg", -2, 4) == "ab" +> strpart("abcdefg", 5, 4) == "fg" + 注意: 文字列の最初の文字を指定するためには、{start}は0でなけれ + ばならない。カーソルのある位置から3文字を取得する例: +> strpart(getline(line(".")), col(".") - 1, 3) + + *strtrans()* +strtrans({expr}) + 結果は文字列で、{expr}内の表示不可能な文字を|'isprint'|で指定 + される、表示可能な文字に変換したもの。ウィンドウに表示すること + ができるようになる。例: +> echo strtrans(@a) + これはレジスタの中の改行を、改行として表示する変わりに"^@"と表 + 示する。 + + *substitute()* +substitute({expr}, {pat}, {sub}, {flags}) + 結果は文字列で、{expr}内で最初に{pat}にマッチした部分を{sub}に + 置換えたコピーになる。これはコマンド":substitute"(一切のフラグ + 無し)のように働く。しかしマッチングは常にオプション'magic'が設 + 定され、オプション'cpoptions'は空にして実行される(スクリプトを + ポータブルにするため)。加えて{sub}内の"~"は前回の{sub}に置換さ + れることはない。 + {sub}内の幾つかのコードには|sub-replaced-special|の特殊な意味 + があることに注意。例えば、何かの文字列をリテラルの"\n"に置換え + るためには、"\\\\n"か'\\n'を使う必要がある。 + {pat}が{expr}の何処にもマッチしなければ、{expr}が何の変更も受 + けずに返される。 + {flags}が"g"であれば{expr}内の{pat}にマッチする総ての部分が置 + 換される。それを希望しない場合には{flags}は""にすべきである。 + 例: +> :let &path = substitute(&path, ",\\=[^,]*$", "", "") + これはオプション'path'の最後のコンポーネントを削除する。 +> :echo substitute("testing", ".*", "\\U\\0", "") + 結果は"TESTING"。 + + *synID()* +synID({line}, {col}, {trans}) + 結果は数値で、現在のウィンドウ内での位置{line}と{col}の位置の + シンタックスID。 + シンタックスIDは|synIDattr()|と|synIDtrans()|に渡すことで、テ + キストについてのシンタックス情報を取得するのに使用できる。最左 + のカラムを指定するには{col}に1を、最初の行を指定するには{line} + に1を指定する。 + {trans}が非ゼロならば、透過属性のアイテムは省略され、実際に表 + 示されているアイテムが評価対象になる。これは実際に有効になって + いるカラーを知りたい時に役に立つ。{trans}がゼロならば、透過属 + 性のアイテムが返される。これはどのシンタックスアイテムが有効に + なっているかを知りたい時に役に立つ(例:カッコの中とか)。 + 警告: この関数は非常に遅い。ファイルを順方向に走査する時にだけ + ベストなスピードが得られる。 + + 例(カーソルの下のシンタックスアイテムの名前を表示する): +> :echo synIDattr(synID(line("."), col("."), 1), "name") + + *synIDattr()* +synIDattr({synID}, {what} [, {mode}]) + 結果は文字列で、{synID}の属性{what}の内容を示す。これはシン + タックスアイテムの情報を取得するのに使用できる。 + {mode}には取得したいモードの属性に応じて、"gui"か"cterm"か + "term"が指定できる。{mode}が省略されるか、無効な値が指定された + 場合、現在有効になっているハイライトモードが使用される(GUI、 + cterm、termのどれか) + ハイライトグループにリンクされた属性を取得するにはsynIDtrans() + を使用する。 + {what} 結果 + "name" シンタックスアイテムの名前 + "fg" 前景色(GUI:カラー名、cterm:文字列としてのカ + ラー番号、term空文字列) + "bg" 背景色("fg"同様) + "fg#" "fg"同様だが、"#RRGGBB"のフォーマットで + "bg#" "bg"同様だが、"#RRGGBB"のフォーマットで + "bold" 太字なら"1" + "italic" 斜体なら"1" + "reverse" 反転なら"1" + "inverse" 反転(原文inverse)なら"1"(reverseと等価) + "underline" 下線付きなら"1" + + GUIではなく、ctermモードが要求されていない場合、"fg#"は"fg"と + 同じに、"bg#"は"bg"と同じになる。 + + 例(カーソルの下のシンタックスアイテムの名前を表示する): +> :echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg") + + *synIDtrans()* +synIDtrans({synID}) + 結果は数値で、{synID}をシンタックスIDに変換したもの。キャラク + タをハイライト表示しているシンタックスグループのIDである。 + ":highlight link"によって与えられるハイライトのリンクはこれに + 従っている。 + + *system()* +system({expr}) シェルコマンド{expr}の実行結果を得る。注意: {expr}内の改行はコ + マンドを失敗させるだろう。対話的なコマンドを使用することはでき + ない。 + 結果は文字列。システムに依存しないような結果にするために、シェ + ルの出力にはマッキントッシュにおいては<CR>を<NL>に変換し、DOS + 系のシステムにおいては<CR><NL>を<NL>に変換するフィルタを作用さ + せている。 + コマンドの結果を取り込むためにオプション'shellredir'が使用され + る。オプション'shell'に応じて、標準出力を取りこむならば">"を、 + 標準出力に加えて標準エラー出力もとりこむならば">&"(csh系)、標 + 準エラー出力を取りこむならば"2>"(sh系)を使用する。 + エラーコードは|v:shell_error|に格納される。 + + *tempname()* *temp-file-name* +tempname() + 結果は文字列で、存在しないファイルのファイル名を示す。これはテ + ンポラリファイルの名前として使用可能である。少なくとも連続26回 + の呼出しまでは違う名前を生成することが保証される。例: +> let tmpfile = tempname() +> exe "redir > " . tmpfile + + *visualmode()* +visualmode() + 結果は文字列で、最後に使われたVisualモードを教えてくれる。初期 + 状態では単に空文字列を返すだけだが、一度でもVisualモードが使わ + れた場合、その種類によって"v"か"V"か"<CTRL-V>"(CTRL-Vのキャラ + クタが1文字で)返される。これはそれぞれキャラクタ選択、行選択、 + ブロック選択を意味している。 + 例: +> exe "normal " . visualmode() + これは最後に使われたのと同じVisualモードに入る。また、スクリプ + トの動作を、最後に使われたVisualモードに応じて変更したい場合に + も便利だろう。 + + *virtcol()* +virtcol({expr}) + 結果は数値で、{expr}で与えられるファイルの位置の、スクリーン上 + での列の位置を示す。返る値は、指定された位置にあるキャラクタの + 末尾が、スクリーン座標(の列)でどこに存在するかである。<Tab>(タ + ブ文字)が指定した位置にあった場合には、戻り値はそのタブの最後 + のカラム(列)位置になる。具体的に、'ts'が8に設定された状態でカ + ラム1に<Tab>があった場合、戻ってくる値は8になる。 + 可能な位置指定: + . カーソルの位置 + 'x マークxの位置(マークが設定されていない場合、0が返 + る) + 現在のファイルに対して設定されているマークだけが使用可能なこと + に注意。 + 例: +> virtcol(".") "foo^Lbar"の"^L"の位置にカーソル、戻り値5 +> virtcol("'t") " there"の'h'に'tを設定、戻り値6 + 最初の列は1となる。0はエラーとして返される。 + + *winbufnr()* +winbufnr({nr}) 結果は数値で、{nr}番目のウィンドウに関連付けられているバッファ + の番号。{nr}が0の場合、現在のウィンドウに関連付けられている + バッファの番号が返る。{nr}で存在しないウィンドウを指定した場合 + には-1が返る。 + 例: +> echo "The file in the current window is " . bufname(winbufnr(0)) + + *winheight()* +winheight({nr}) + 結果は数値で、{nr}で示されるウィンドウの高さ(行数)を示す。{nr} + が0ならば、現在のウィンドウの高さが返る。{nr}というウィンドウ + が存在しない場合、-1が返る。存在しているウィンドウは、絶対に0 + かそれ以上の高さを持っている。 + 例: +> echo "The current window has " . winheight(0) . " lines." + + *winnr()* +winnr() 結果は現在のウィンドウを示す数値。最上位のウィンドウは1であ + る。 + + *feature-list* +機能は大別して2つの系統に分けられる: +1. コンパイル時に|+feature-list|とした時にだけサポートされる機能。例: +> :if has("cindent") +2. ある状態の時にだけサポートされる機能。例: +> :if has("gui_running") + +all_builtin_terms 総ての組込みターミナルを有効にしてコンパイル +amiga AMIGAバージョン +arp ARPをサポート (Amiga) +autocmd autocommandsをサポート +beos BeOSバージョン +browse |:browse|をサポートし、browseが恐らく動作する +builtin_terms 幾つかの組込みターミナルが有効 +byte_offset 'statusline'において'o'がサポートされる +cindent 'cindent'をサポート +clipboard 'clipboard'をサポート +cmdline_compl |cmdline-completion| コマンドライン補完をサポート +cmdline_info 'showcmd'と'ruler'をサポート +comments |'comments'|をサポート +cryptv 暗号化をサポート |encryption| +cscope |cscope|をサポート +compatible Vi互換度を非常に高めてコンパイルされている +debug デバッグバージョンである +dialog_con コンソールダイアログのサポート +dialog_gui GUIダイアログのサポート +digraphs digraphsをサポート +dos32 32ビットDOSバージョン (DJGPP) +dos16 16ビットDOSバージョン +emacs_tags Emacs式のタグファイルをサポート +eval 式評価をサポート。もちろん常に真。 +ex_extra 拡張EXコマンドをサポート |+ex_extra|. +extra_search |'incsearch'|と|'hlsearch'|をサポート +farsi |farsi|をサポート +file_in_path |gf|と|<cfile>|をサポート +find_in_path includeファイル内の検索をサポート |+find_in_path| +fname_case ファイル名の大文字小文字が区別される(Amiga,MS-DOS, + そしてWindowsでは区別されないので偽) +fork system()の代わりにfork()/exec()を用いている +gui GUIが有効である +gui_athena AthenaのGUIが有効である +gui_beos BeOSのGUIが有効である +gui_gtk GTK+のGUIが有効である +gui_mac マッキントッシュのGUIが有効である +gui_motif MotifのGUIが有効である +gui_win32 Win32のGUIが有効である +gui_win32s Win32sのGUIが有効である (Windows 3.1) +gui_running VimがGUIモードで起動している、もしくは間もなくする +hangul_input ハングル入力サポート +insert_expand インサートモード時にCTRL-Xの展開がサポートされる +langmap 'langmap'サポート +linebreak 'linebreak', 'breakat'そして'showbreak'をサポート +lispindent lisp式のインデントをサポート +mac マッキントッシュバージョン +menu |:menu|をサポート +mksession |:mksession|をサポート +modify_fname ファイル名変換子をサポート |filename-modifiers| +mouse マウスをサポート +mouse_dec DECのターミナルマウスをサポート +mouse_gpm gpmをサポート (Linuxのコンソールマウス) +mouse_netterm nettermのマウスをサポート +mouse_xterm xtermのマウスをサポート +multi_byte 中国語・日本語・韓国語その他の言語をサポート +multi_byte_ime IMEによる入力をサポート +ole Win32にてOLEオートメーションをサポート +os2 OS/2バージョン +osfiletype osfiletypesをサポート |+osfiletype| +perl Perlインターフェースをサポート +python Pythonインターフェースをサポート +quickfix |quickfix|をサポート +rightleft 'rightleft'をサポート +scrollbind 'scrollbind'をサポート +showcmd 'showcmd'をサポート +smartindent 'smartindent'をサポート +sniff SniFFインターフェースをサポート +statusline 'statusline', 'rulerformat'そして'titlestring'と + 'iconstring'の特殊フォーマットをサポート +syntax シンタックスハイライティングをサポート +syntax_items 現在のバッファに有効なシンタックスが設定されている +system fork()/exec()の代わりにsystem()が使用されている +tag_binary タグファイル内のバイナリサーチ |tag-binary-search| +tag_old_static 旧式の静的tagsをサポート |tag-old-static| +tag_any_white タグファイル内の空白文字をサポート + files |tag-any-white|. +tcl TCLインターフェースをサポート +terminfo termcapの代わりにterminfoをサポート +textobjects |text-objects|をサポート +tgetent tgetentをサポート。termcapかterminfoファイルが使用可能 +title ウィンドウタイトルをサポート |'title'|. +unix UNIXバージョン +user_commands ユーザ定義コマンドをサポート +viminfo viminfoをサポート +vim_starting Vimの初期化プロセス中は真となる +visualextra 拡張Visualモードをサポート |blockwise-operators| +vms VMSバージョン +wildmenu オプション'wildmenu'を指定してコンパイル +wildignore オプション'wildignore'を指定してコンパイル +winaltkeys オプション'winaltkeys'を指定してコンパイル +win16 Win16バージョン(Windows 3.1) +win32 Win32バージョン(Windows 95/NT) +writebackup オプション'writebackup'が起動時にonになる +xim XIMをサポート |xim| +xfontset X fontsetをサポート |xfontset| +xterm_clipboard xtermのクリップボードサポート +xterm_save xtermのスクリーンの保存復帰をサポート +x11 X11をサポート + +============================================================================== +5. 関数定義 *user-functions* + +新しい関数を定義することができる。これらは組込み関数と同様に呼び出すことができ +る。 + +関数名は組込み関数との混同を避ける為、大文字で始まらなければならない。他のスク +リプトで同じ関数名を使用してしまうことを避ける為に、露骨に短い名前は避けるべき +である。関数名を例えば"HTMLcolor()"のように、スクリプトの名前から始めるという +のは良い習慣である。 + + *:fu* *:function* +:fu[nction] 総ての関数と、その引数を表示する。 + +:fu[nction] {name} 関数{name}を表示する。 + +:fu[nction][!] {name}([arguments]) [range] [abort] + {name}という名前で新しい関数を定義する。関数名はアル + ファベットと数字と'_'からなり、アルファベットの大文字 + で始まらなければならない。 + 引数は、与えられた名前によって定義される。関数のなかで + は"a:name"("a:"を引数に接頭)のようにして参照することが + できる。 + 引数はカンマで区切ることで、最大20まで与えることができ + る。最後の引数を"..."にすることで、可変長の引数を使用 + できる。関数の中では"a:1"や"a:2"のようにして可変長の引 + 数にアクセスできる。"a:0"は可変長引数が幾つあるかを示 + している(0であること、つまり引数がそれ以上ないこともあ + る)。 + "..."が使われていない時は、引数の数は名前付きの引数の + 個数を示す。"..."を使った時には引数の数は大きくなるだ + ろう。 + 関数を引数無しで定義することも可能である。その時でも() + は付けなければならない。 + 関数の本体は、宣言の次の行から始まり、対応する + |:endfunction|までになる。関数の中で別の関数を定義する + ことも可能である。 + この名前で定義される関数が既に定義済みで[!]が使用され + なかった場合、エラーとなる。[!]が使用されていれば、そ + れまで存在していた関数は、速やかに新しいものへ置換えら + れる。 + 引数[range]を追加した場合、関数は「領域」を管理するこ + とができる。「領域」は"a:firstline"と"a:lastline"に + よって渡される。[range]がなかった場合、":call"が「領 + 域」を指定されて実行されると、1行1行について、カーソル + をその行の先頭に置いた状態で関数を呼び出すことになる。 + |function-range-example|を参照。 + 引数[abort]を追加すると、関数の実行中にエラーに遭遇し + 次第、即関数は中断される。 + 関数の実行によって、最後に使用されたサーチパターン、及 + びredoコマンドの"."の内容は変更されない。 + + *:endf* *:endfunction* +:endf[unction] 関数定義の終了。 + + *:delf* *:delfunction* +:delf[unction] {name} 関数{name}を削除する。 + + *:retu* *:return* +:retu[rn] [expr] 関数から戻る。"[expr]"が与えられた場合、それは評価され + 関数の戻り値として呼出し側に渡される。"[expr]"が与えら + れない場合、数値0が呼出し側に渡される。 + 関数内に実行されない命令があるかどうかはチェックされな + いことに留意すること。つまり、たとえ":return"命令の後 + に何か命令があったとしても、警告も何も与えられない。 + +関数の中で変数を使うこともできる。これらは関数から戻ると消滅するローカル変数と +して振舞う。グローバル変数にアクセスするためには"g:"を付ける必要がある。 + +例: +> :function Table(title, ...) +> : echohl Title +> : echo a:title +> : echohl None +> : let idx = 1 +> : while idx <= a:0 +> : exe "echo a:" . idx +> : let idx = idx + 1 +> : endwhile +> : return idx +> :endfunction + +この関数は次のように呼ぶことが出きる: +> let lines = Table("Table", "line1", "line2") +> let lines = Table("Empty Table") + +一つ以上の値を返したい場合には、グローバル変数の名前を渡すようにする: +> :function Compute(n1, n2, divname) +> : if a:n2 == 0 +> : return "fail" +> : endif +> : exe "let g:" . a:divname . " = ". a:n1 / a:n2 +> : return "ok" +> :endfunction + +この関数は次のように呼ぶことができる: +> :let success = Compute(13, 1324, "div") +> :if success == "ok" +> : echo div +> :endif + +次の例は実行可能なコマンドを返すものである。これは関数呼出し内の局所変数と一緒 +にも働く。例: +> :function Foo() +> : execute Bar() +> : echo "line " . lnum . " column " . col +> :endfunction +> +> :function Bar() +> : return "let lnum = " . line(".") . " | let col = " . col(".") +> :endfunction + +"lnum"や"col"といった変数の名前もBar()への引数として渡すことが可能なので、呼出 +し側が指定することができる。 + + *:cal* *:call* +:[range]cal[l] {name}([arguments]) + 関数を呼び出す。関数の名前と引数は|:function|によって指定され + るものである。引数は最大20まで使用可能。 + 「領域」を受け付ける関数に「領域」を指定しなかった場合、関数は + カーソルの現在位置について一度だけ呼び出される。 + 「領域」を受け付けない関数に「領域」を指定した場合、その領域の + 一行ずつについて関数が呼び出される。その時カーソルは当該行の先 + 頭に設定される。カーソルは「領域」の最下行の左端になる(恐らく + 最後の関数呼出しの結果、動いた先である)。引数は各呼出しについ + て繰り返し評価される。それは次の例で確かめることができる: + *function-range-example* +> :function Mynumber(arg) +> : echo line(".") . " " . a:arg +> :endfunction +> :1,5call Mynumber(getline(".")) + + "a:firstline"と"a:lastline"はとにかく定義されるので、「領域」 + の最初や最後で何か違った事をするのにも用いることができる。 + + 「領域」自身を扱っている関数の例: + +> :function Cont() range +> : execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ ' +> :endfunction +> :4,8call Cont() + + この関数は「領域」の最初の行を除いた総ての行の先頭に、継続のた + めの文字"\"を挿入する。 + + +関数の再帰的な使用はオプション|'maxfuncdepth'|によって制限することができる。 + +============================================================================== +6. Commands *expression-commands* + +:let {var-name} = {expr1} *:let* + 内部変数{var-name}に式{expr1}の結果をセットする。変数 + の型は{expr1}によって決定される。{var-name}という変数 + がまだ存在しない場合、新たに作成される。 + +:let ${env-name} = {expr1} *:let-environment* *:let-$* + 環境変数{env-name}に式{expr1}の結果をセットする。型は + 常に文字列。 + +:let @{reg-name} = {expr1} *:let-register* *:let-@* + 式{expr1}の結果をレジスタ{reg-name}に書きこむ。 + {reg-name}は単一の文字でかつ、書きこむことのできるレジ + スタでなければならない(|registers|を参照)。"@@"は名前 + 無しレジスタとして使用でき、"@/"はサーチパターンとして + 使用できる。 + {expr1}の結果が<CR>か<NL>で終了していた場合、レジスタ + は行単位で設定され、そうでなければキャラクタ単位で設定 + される。 + +:let &{option-name} = {expr1} *:let-option* *:let-star* + オプション{option-name}に式{expr1}の結果をセットする。 + オプションの型が常に使用される。 + + *:unlet* *:unl* +:unl[et][!] {var-name} ... + 内部変数{var-name}を削除する。複数の場前を指定すること + もでき、それらは総て削除される。[!]を使えば、たとえ存 + 在しない変数を指定しても、エラーメッセージが表示される + ことはない。 + +:if {expr1} *:if* *:endif* *:en* +:en[dif] {expr1}が非ゼロと評価された場合に、対応する":else"か + ":endif"までの命令を実行する。 + + バージョン4.5から5.0まで間のVimは、":if"と":endif"の間 + の総てのExコマンドは無視する。この2つのコマンドは将来 + の拡張性を、下位互換と同時に提供するためのものである。 + ネスティング(入れ子)が可能である。":else"や":elseif"は + 無視され、"else"部分は一切実行されないことに注意。 + + あなたはこれを、旧バージョンとの互換性を保ったまま使用 + することができる: +> :if version >= 500 +> : version-5-specific-commands +> :endif + + *:else* *:el* +:el[se] 対応する":if"ブロックが実行されなかった場合には、これ + に対応する":else"か":endif"までのコマンドが実行され + る。 + + *:elseif* *:elsei* +:elsei[f] {expr1} ":else" ":if"の省略形。":endif"を付け加える(入れ子にす + る)手間を省くことができる。 + +:wh[ile] {expr1} *:while* *:endwhile* *:wh* *:endw* +:endw[hile] {expr1}が非ゼロとして評価される間、":while"と + ":endwhile"の間のコマンドを繰り返し実行する。 + ループの内側でエラーが生じた場合、endwhileの直後から実 + 行が再開される。 + + 注意: ":append"や":insert"コマンドは":while"ループの内側では正 + しく動かない。 + + *:continue* *:con* +:con[tinue] ":while"ループの内側で使用すると、残りの実行部分をキャ + ンセルし":while"に戻る。 + + *:break* *:brea* +:brea[k] ":while"ループの内側で使用すると、残りの部分の実行を + キャンセルし、対応する":endwhile"以降から実行を再開す + る。 + + *:ec* *:echo* +:ec[ho] {expr1} .. スペースで区切られ<EOL>で終了する引数{expr1}を表示す + る。|:comment|も参照。 + 改行が必要な場合"\n"を使用する。カーソルを第1列(カラ + ム)に持って行くには"\r"を使用する。 + コメント文を同じ行に続けることはできない。 + 例: +> :echo "the value of 'shell' is" &shell + + *:echon* +:echon {expr1} .. 改行を付けずに、{expr1}を表示する。|:comment|も参照。 + コメント文を同じ行に続けることはできない。 + 例: +> :echon "the value of 'shell' is " &shell + + Vimコマンドの":echo"と、外部のシェルコマンドである + ":!echo"との違いに注意: +> :!echo % --> filename + ":!"の引数は展開される。|:_%|を参照。 +> :!echo "%" --> filename or "filename" + 前の例のように働く。ダブルクォートが表示されるかどうか + は、使用している'shell'に依存する。 +> :echo % --> 何も表示されない + '%'は式として不当な文字である。 +> :echo "%" --> % + 単に文字'%'を表示する。 +> :echo expand("%") --> filename + '%'を展開するために関数expand()を呼び出している。 + + *:echoh* *:echohl* +:echoh[l] {name} 次の":echo[n]"コマンドから、ハイライトグループ{name}を + 適用する。例: +> :echohl WarningMsg | echo "Don't panic!" | echohl None + 使用した後にはグループを"None"に戻すことを忘れないよう + に。さもないとそれ以降のechoの表示総てがハイライトされ + てしまう。 + + *:exe* *:execute* +:exe[cute] {expr1} .. {expr1}の評価結果の文字列をExコマンドとして実行する。 + スペースで区切られた複数の引数は連結される。 + コメント文を同じ行に続けることはできない。 + 例: +> :execute "buffer " nextbuf +> :execute "normal " count . "w" + + Executeは'|'を受けつけないコマンドに、次のコマンドを続 + けて実行させるのにも使用できる。例: +> :execute '!ls' | echo "theend" + (訳注:普通の使い方では":!ls"の後には'|'を使って、Exコ + マンドを続けることはできない) + + 注意:executeに渡す文字列としては、"while"や"if"系のコ + マンドが始まったり終ったりするだけのようなものは不適格 + である。よって次のような例は認められない: + Note: The executed string may be any command-line, but + you cannot start or end a "while" or "if" command. + Thus this is illegal: +> :execute 'while i > 5' +> :execute 'echo "test" | break' + + 文字列の中に完全な"while"や"if"コマンドが含まれること + が求められる: +> :execute 'while i < 5 | echo i | let i = i + 1 | endwhile' + + + *:comment* + ":execute"や":echo"そして":echon"は、同一行に直接コメ + ントを続けることはできない。何故ならそれらのコマンドに + とって'"'は文字列の始まりに見えてしまうからである。し + かし'|'の後にコメントを書くことは可能である。例: +> :echo "foo" | "this is a comment + +============================================================================== +7. 例 *eval-examples* + +16進数で表示する ~ + +> " The function Nr2Hex() returns the Hex string of a number. +> func Nr2Hex(nr) +> let n = a:nr +> let r = "" +> while n +> let r = '0123456789ABCDEF'[n % 16] . r +> let n = n / 16 +> endwhile +> return r +> endfunc +> +> " The function String2Hex() converts each character in a string to a two +> " character Hex string. +> func String2Hex(str) +> let out = '' +> let ix = 0 +> while ix < strlen(a:str) +> let out = out . Nr2Hex(char2nr(a:str[ix])) +> let ix = ix + 1 +> endwhile +> return out +> endfunc + +使い方: +> echo Nr2Hex(32) +結果: "20" +> echo String2Hex("32") +結果: "3332" + + +行をソート(並べ替え)する (by Robert Webb) ~ + +これは行をソートするためのVimスクリプトである。Vimにおいて行を(Visualモードで) +選択し":Sort"とタイプする。これは如何なる外部プログラムも起動しない。よってど +のようなプラットホームであっても動作する。実は関数Sort()は、C言語のqsort()のよ +うに引数として比較関数を受けつける。よって、データ毎に必要となるソート順に応じ +た、異なった比較関数を与えることができる。 + +> " Function for use with Sort(), to compare two strings. +> func! Strcmp(str1, str2) +> if (a:str1 < a:str2) +> return -1 +> elseif (a:str1 > a:str2) +> return 1 +> else +> return 0 +> endif +> endfunction +> +> " Sort lines. SortR() is called recursively. +> func! SortR(start, end, cmp) +> if (a:start >= a:end) +> return +> endif +> let partition = a:start - 1 +> let middle = partition +> let partStr = getline((a:start + a:end) / 2) +> let i = a:start +> while (i <= a:end) +> let str = getline(i) +> exec "let result = " . a:cmp . "(str, partStr)" +> if (result <= 0) +> " Need to put it before the partition. Swap lines i and partition. +> let partition = partition + 1 +> if (result == 0) +> let middle = partition +> endif +> if (i != partition) +> let str2 = getline(partition) +> call setline(i, str2) +> call setline(partition, str) +> endif +> endif +> let i = i + 1 +> endwhile +> +> " Now we have a pointer to the "middle" element, as far as partitioning +> " goes, which could be anywhere before the partition. Make sure it is at +> " the end of the partition. +> if (middle != partition) +> let str = getline(middle) +> let str2 = getline(partition) +> call setline(middle, str2) +> call setline(partition, str) +> endif +> call SortR(a:start, partition - 1, a:cmp) +> call SortR(partition + 1, a:end, a:cmp) +> endfunc +> +> " To Sort a range of lines, pass the range to Sort() along with the name of a +> " function that will compare two lines. +> func! Sort(cmp) range +> call SortR(a:firstline, a:lastline, a:cmp) +> endfunc +> +> " :Sort takes a range of lines and sorts them. +> command! -nargs=0 -range Sort <line1>,<line2>call Sort("Strcmp") + + *sscanf* +Vimにはsscanf()に相当する関数が無い。もしも行の一部を取り出す必要があるのなら +ば、matchstr()やsubstitute()を使って行なうことができる。この例は"foobar.txt, +123, 45"のような行から、どうやってファイル名と行番号とカラム番号を取り出すかを +示している。 +> " Set up the match bit +> let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)' +> "get the part matching the whole expression +> let l = matchstr(line, mx) +> "get each item out of the match +> let file = substitute(l, mx, '\1', '') +> let lnum = substitute(l, mx, '\2', '') +> let col = substitute(l, mx, '\3', '') + +入力は変数"line"、結果は"file"と"lnum"と"col"に格納される(アイデアはMichael +Geddesによる)。 + +============================================================================== +8. +eval機能が無効 *no-eval-feature* + +コンパイル時に|+eval|機能が無効とされている場合、総ての式評価(eval)コマンドは +提供されない。その場合、Vimスクリプトが総ての種類のエラーを引き起こすことを避 +ける為、":if"と":endif"は解釈される。":if"とそれに対応する":endif"に挟まれた内 +容は無視される。":if"の後に続く引数も無視される。この":if"コマンドはネスティン +グが可能である。しかし必ず行の先頭に書かれている必要がある。":else"コマンドは +認識されない。 + +|+eval|機能が存在しなかった場合、どのようにコマンドが実行を免れるかの例: +> if 1 +> echo "Expression evaluation is compiled in" +> endif + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/gui.jax b/ja/gui.jax new file mode 100644 index 000000000..4aeb7c470 --- /dev/null +++ b/ja/gui.jax @@ -0,0 +1,761 @@ +COMMENT: GUI機能:一般事項 +STATUS: finished 5.7 +TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*gui.txt* For Vim version 5.7. Last change: 2000 Jun 22 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +Vimのグラフィカルユーザインタフェース *gui* *GUI* + +1. GUIの開始 |gui-start| +2. スクロールバー |gui-scrollbars| +3. マウス制御 |gui-mouse| +4. GUI選択の作成 |gui-selections| +5. メニュー |menus| +6. 付記 |gui-extras| +7. シェルコマンド |gui-shell| + +他のGUIドキュメント: +|gui_x11.txt| X11 GUIに特有の項目について。 +|gui_w32.txt| Win32 GUIに特有の項目について。 + +{Vi にはこれらのどのコマンドもない} + +============================================================================== +1. GUIの開始 *gui-start* + +最初に、本当にGUIのコードが含まれたVimのバージョンであるかを確かめなければなら +ない。":version"コマンドでこれを調べることができ、それは"+GUI_Athena", +"+GUI_BeOS", "+GUI_GTK", "+GUI_Motif"あるいは"MS-Windows ... 多少のGUIバージョ +ン"を含んでいるべきである。 + +どのようにGUIを始めるかは使用されているシステムに依存する。たいていはこれでVim +のGUIバージョンを実行することができる: + gvim [options] [files...] + +VimのX11バージョンはGUIとGUIでないモードの両方で実行することができる。 +|gui-x11-start| を参照。 + + *gui-init* *gvimrc* *.gvimrc* *_gvimrc* +GUIのスタートアップ時、初期化はこの順序で実行される: +- termcapオプションはGUIのためにデフォルト値にリセットされる。 +- システムメニューファイルが存在するのであれば、それが情報源にされる。このファ + イルの名前は通常"$VIMRUNTIME/menu.vim"である。":version"でこれを調べられる。 + |$VIMRUNTIME|も参照。システムメニューのロードを省略するには'guioptions'に'M' + を含める。 + *buffers-menu* *no_buffers_menu* + システムメニューファイルは"Buffers"メニューを含んでいる。これを望まないなら + ば、あなたの.vimrc (.gvimrcではない!)に"no_buffers_menu"を設定する: +> :let no_buffers_menu = 1 + ‘注意’: 構文強調表示をオンに切り替えることもメニューファイルをロードするた + め、":syntax on"の前にバッファメニューが無効にされなければならない。 +- Vimを開始するときに、"-U {gvimrc}"コマンドラインオプションが用いられているな + らば、{gvimrc}ファイルが初期化のために読み込まれるだろう。以下の初期化は省略 + される。 +- Unixに対しては、システムのgvimrcが存在するならば、それが情報源にされる。この + ファイルの名前は通常"$VIM/gvimrc"である。":version"でこれを調べられる。 + |$VIM|も参照。 +- 以下が試されて、存在する最初の1つだけが用いられる: + - GVIMINIT環境変数が存在し空でないならば、それがExコマンドとして実行される。 + - ユーザのgvimrcファイルが存在するならば、それが情報源にされる。このファイル + の名前は通常"$HOME/.gvimrc"である。":version"でこれを調べられる。 + - Win32に対しては、$HOMEが設定されないときには、"$VIM\_gvimrc"が用いられる。 + - "_gvimrc"ファイルが見つからないときには、".gvimrc"も試される。逆のときも同 + 様である。 +- 'exrc'オプションが設定されていて(これはデフォルト‘ではない’)、./.gvimrc + ファイルが存在しシステムかユーザのgvimrcファイルと同じファイルでないならば、 + それが情報源にされる。このファイルがあなたの所有しているものでないならば、い + くつかのセキュリティ上の制限が適用される。".gvimrc"が見つからないときには、 + "_gvimrc"も試される。MacintoshとDOS/Win32に対しては、"_gvimrc"が最初に試され + る。 + +‘注意’: "-U"引数が与えられずに"-u NONE"でVimが開始されたか、あるいは +"-U NONE"で開始されたならば、最初のもの以外は全て実行されない。 + +これは全て、あなたの.vimrcファイルを読み込むような、通常のVimの初期化‘の後’ +に起こる。|initialization|を参照。 +しかし、GUIウィンドウは全ての初期化が実行された後にだけ開かれる。 +GUIウィンドウを開いた直後にいくつかのコマンドを実行したいならば、|GUIEnter| +autocommandイベントを使用する。例えば: +> autocommand GUIEnter * winpos 100 50 + +あなた自身のカスタマイズされたメニュー(|:menu|を参照)をセットアップしたり、 +ターミナルバージョンとは異なったセットアップにしたい他のことを初期化するために +gvimrcファイルを使用することができる。 + +あなたの個人的なGUIの初期化のために推奨される場所: + Unix $HOME/.gvimrc + OS/2 $HOME/.gvimrcあるいは$VIM/.gvimrc + MS-DOSとWin32 $HOME/_gvimrcあるいは$VIM/_gvimrc + Amiga s:.gvimrcあるいは$VIM/.gvimrc + +VimのGUIバージョンでだけ意味を持つ多くのオプションがある。'guicursor', +'guifont', 'guipty'と'guioptions'である。それらは他の全てのオプションと共に +|options.txt|に文書化されている。 + +GUIのMotifかあるいはAthenaバージョン(GTK+やWin32バージョンではない)を使用して +いるならば、多くのXのリソースが有効である。|gui-resources|を参照。 + +異なる理由により色を設定する別の方法はhighlightグループで行うことである。 +"Normal"グループは背景色と前景色を設定するために用いられる。(よく見える)例: + +> :highlight Normal guibg=grey90 + +"guibg"と"guifg"の設定は通常の背景と前景の設定よりも優先される。Normal +highlightグループに対するその他の設定は用いられない。フォントを設定するには +'guifont'を使用する。 + +様々なモードでカーソルに色を設定するには、'guicursor'オプションも確認する。 + +Vimはスタートアップのときに、スクリーンにウィンドウを合せようとする。これはそ +の一部を見ることができなくならないようにする。X windowでは、これは少し憶測を必 +要とする。'guiheadroom'オプションでウィンドウタイトルとタスクバーに用いられる +高さを変更することができる。 + + *:winp* *:winpos* +:winp[os] + GUI vimウィンドウの左上隅の現在の位置をピクセルで表示する。全 + てのバージョンで機能する訳ではない。 + +:winp[os] {X} {Y} + 与えられた{X}と{Y}の座標にGUI vimウィンドウを配置する。座標は + ウィンドウの左上隅の位置をピクセルで指定すべきである。全てのバ + ージョンで機能する訳ではない。(新しい)xtermで機能する + |xterm-color|。 + + *:win* *:winsize* +:win[size] {width} {height} + {width}と{height}の文字によってウィンドウの高さを設定する。 + ":set lines="と":set columns="を使用するのは古いやり方である。 + + +============================================================================== +2. スクロールバー *gui-scrollbars* + +垂直スクロールバーと水平スクロールバーがある。'guioptions'オプションでどれが表 +示されるかを設定してもよい。 + +インタフェースは(":set guioptions=mlrb"で)このように見える: + + +------------------------------+ + | ファイル 編集 ヘルプ | <- メニューバー(m) + +-+--------------------------+-+ + |^| |^| + |#| テキストエリア |#| + | | | | + |v|__________________________|v| + Vimウィンドウ間の -> |-+ File.c 5,2 +-| + 通常のステータス行 |^|""""""""""""""""""""""""""|^| + | | | | + | | 別のファイルバッファ | | + | | | | + |#| |#| + 左スクロールバー(l)-> |#| |#| <- 右スクロールバー(r) + |#| |#| + | | | | + |v| |v| + +-+--------------------------+-+ + | |< #### >| | <- 下スクロールバー(b) + +-+--------------------------+-+ + +どのスクロールバーやメニューコンポーネントも'guioptions'文字列に適切な文字を付 +加しないことでオフに切り替えてもよい。下スクロールバーは'nowrap'が設定されてい +るときに便利なだけである。 + + +垂直スクロールバー *gui-vert-scroll* + +Vimウィンドウ毎に次へのスクロールバーを持っていて、そのバッファ内でテキスト全 +体を動かすためにスクロールアップ・ダウンすることができる。スクロールバーのつま +みのサイズはウィンドウに見えているバッファの割合を示している。スクロールバーが +ずっと下方にドラッグされると、ファイルの最後の行はウィンドウの最上部に表示され +るだろう。 + +ウィンドウが(他のウィンドウの拡大によって)高さゼロに縮小されたならば、そのスク +ロールバーは表示されなくなる。それはウィンドウが復元されるときに再び表示され +る。 + +水平スクロールバー *gui-horiz-scroll* + +(Vim GUIの最下段の)水平スクロールバーは、'wrap'オプションがオフに切り替えられ +るときに、横にテキストをスクロールするために使用することができる。スクロール +バーのつまみのサイズは、現在のカーソルのある行のテキストが左右に可能な限りずっ +とスクロールすることができるくらいである。 + + *athena-intellimouse* +インテリマウスを持っていて、Linuxを運用しており、Xサーバでホイールを使用するた +めの適切なパッチを持っているならば、gvimで上下にテキストをスクロールするために +ホイールを使用することができる。今のところ、それはathenaバージョンでしか機能し +ない。 + +これを使用するには、パッチの当たったXサーバがなくてはならない。以下のページに +はパッチとXサーバのバイナリへのリンクに加えて、Linux上でインテリマウスを使用す +ることについて多少の情報がある(けれども必要とするものはないかもしれない): + http://www.inria.fr/koala/colas/mouse-wheel-scroll/ + +ホイールを使用するには、カーソルをスクロールバーエリアに置きホイールを上下に動 +かす。これは上下に1行、テキストをスクロールするだろう。シフトキーを押したまま +にしておけば、一度に1ページ、スクロールするだろう。 + +============================================================================== +3. マウス制御 *gui-mouse* + +マウスは、'mouse'オプションの中に適切なフラグが設定されている場合にだけ機能す +る。GUIがオンに切り替えられて、'mouse'がまだ設定されていないときには、'mouse' +オプションは自動的に"a"に設定され、|hit-return|プロンプトを除いて全てのモード +で有効になる。これを望まないならば、"gvimrc"ファイルが'mouse'オプションを変更 +するにはよい場所である。 + +関連する他のオプション: +'mousefocus' ウィンドウフォーカスがマウスポインタに追従する + |gui-mouse-focus| +'mousemodel' マウスのどのボタンがどのような動作をするか +'mousehide' テキストをタイプしている間マウスポインタを隠す +'selectmode' SelectモードあるいはVisualモードを開始するかどうか + +素早くこれらを設定するには":behave"コマンドで行う。 + *:behave* *:be* +:be[have] {model} マウスと選択の動作を設定する。有効な引数は: + mswin MS-Windowsの動作 + xterm Xtermの動作 + + ":behave"を使用するとこれらのオプションが変更される: + option mswin xterm ~ + 'selectmode' "mouse,key" "" + 'mousemodel' "popup" "extend" + 'keymodel' "startsel,stopsel" "" + 'selection' "exclusive" "inclusive" + +$VIMRUNTIMEディレクトリの中に、MS-Windowsのcut/copy/pasteコマンドのためのいく +つかのキーもマップする"mswin.vim"と呼ばれるスクリプトがある。 +これは、CTRL-V, CTRL-XとCTRL-Cキーを用いるので、互換性が‘ない’。嫌でなけれ +ば、このコマンドを使用する: +> :so $VIMRUNTIME/mswin.vim + +マウスのホイールでスクロールするには、|scroll-mouse-wheel|を参照。 + + +3.1 マウスによるカーソルの移動 *gui-mouse-move* + +カーソルを持って行きたいテキストバッファのどこかでマウスの左ボタンをクリックす +ると、カーソルはそこに行く! +動作するモード 'mouse'が以下を含んでいるとき +Normal mode 'n' or 'a' +Visual mode 'v' or 'a' +Insert mode 'i' or 'a' + +SelectモードはVisualモードのように扱われる。 + +現在のカーソル位置からマウスで指示する位置までのテキストを削除するために'd'の +ようなオペレータと共にこれを使用してもよい。つまり、'd'を打ち込んでからどこか +でマウスをクリックする。 + + *gui-mouse-focus* +'mousefocus'オプションはキーボードフォーカスをマウスポインタに追従させるように +設定することができる。これはマウスポインタがあるウィンドウがアクティブウィンド +ウになることを意味する。警告: menuコマンドは常に一番上のウィンドウに適用される +だろうから、menuを使用しているときには、これは非常にうまく機能するという訳では +ない。 + +':'の行(あるいは'/'または'?')の上にあるならば、('mouse'が'c', 'a'あるいは'A'を +含んでいるならば)マウスの左かあるいは右ボタンをクリックすることで、':'の行に +カーソルが配置されるだろう。 + +どのような状況でも、現在の選択を貼り付けるために、マウスの中ボタンをクリックし +てもよい。 + + +3.2 マウスによる選択 *gui-mouse-select* + +マウスは選択を開始するために使用することができる。'mousemodel'オプションにどの +ように依存するかは: +'mousemodel'が"extend"である: マウスの右ボタンを使用する。 +'mousemodel'が"popup"である: Shiftキーが押されている間、マウスの左ボタンを使用 +する。 + +まだ何も選択していなければ、これはカーソルがあった位置からマウスで指示した位置 +までを選択し始める。すでに選択しているならば、最も近くの終端が延長されるだろ +う。 + +'selectmode'が"mouse"を含んでいるならば、選択はSelectモードであるだろう。これ +は選択がタイプする通常のテキストで置き換えられることを意味する。|Select-mode| +を参照。そうでなければ、選択はVisualモードであるだろう。 + +ダブルクリックで単語の選択、トリプルクリックで行の選択、クワドルプルクリック +(4回クリック)で矩形ブロックを選択することができる。 + +どのように選択が用いられるかに関しては|gui-selections|を参照。 + + +3.3 マウスによる他のテキスト選択 *gui-mouse-modeless* + +Command-lineモードのときには、|hit-return|プロンプトにおいて、あるいは現在の +モードが'mouse'オプションの中にないときはいつでも、異なった種類の選択が用いら +れる。選択がそこになく、選択に関連付けられたモードがないようにVimが継続するの +で、これはモードレス選択と呼ばれる。Vimウィンドウの中のどんなテキストでも選択 +することができる。開始点でマウスの左ボタンを押すことでテキストを選択し、終点ま +でドラッグして離す。選択を延長するには、'mousemodel'が"extend"のときにはマウス +の右ボタンを使用するか、あるいは'mousemodel'が"popup"のときにはシフトキーを押 +しながらマウスの左ボタンを使用する。マウスの中ボタンはテキストを貼り付ける。 + + +3.4 ステータス行でのマウスの使用 *gui-mouse-status* + +Vimウィンドウの下のステータス行でマウスの左かあるいは右のボタンをクリックする +ことでそのウィンドウが現在のウィンドウになる。さらにステータス行を動かすために +上下にマウスをドラッグしてもよく、このようにして上下にウィンドウのサイズを変更 +する。 + + +3.5 様々なマウスクリック *gui-mouse-various* + + <S-LeftMouse> マウスクリックで単語を前方検索する。'mousemodel'が + "popup"のときには、これは選択を開始するか、あるいは延 + 長する。 + <S-RightMouse> マウスクリックで単語を後方検索する。 + <C-LeftMouse> マウスクリックでタグ名へジャンプする。 + <C-RightMouse> 直前のタグジャンプの前の位置に戻る("CTRL-T"と同じ)。 + + +3.6 マウスマッピング *gui-mouse-mapping* + +修飾子付きのマウスイベントがマップされてもよい。例えば: +> :map <S-LeftMouse> <RightMouse> +> :map <S-LeftDrag> <RightDrag> +> :map <S-LeftRelease> <RightRelease> +> :map <2-S-LeftMouse> <2-RightMouse> +> :map <2-S-LeftDrag> <2-RightDrag> +> :map <2-S-LeftRelease> <2-RightRelease> +> :map <3-S-LeftMouse> <3-RightMouse> +> :map <3-S-LeftDrag> <3-RightDrag> +> :map <3-S-LeftRelease> <3-RightRelease> +> :map <4-S-LeftMouse> <4-RightMouse> +> :map <4-S-LeftDrag> <4-RightDrag> +> :map <4-S-LeftRelease> <4-RightRelease> +これらのマッピングは、恐らくマウスの右ボタンよりむしろシフト-左ボタンで視覚的 +な領域を拡張することを考慮しているMotifアプリケーションですべき方法で選択を機 +能させる。 + +修飾子を伴うマウスマッピングはモードレス選択では機能しない。 + +============================================================================== +4. GUI選択の作成 *gui-selections* + + *quotestar* +マウス(|gui-mouse-select|を参照)か、あるいはVimのVisualモード(|v|を参照)を使用 +して、選択を作成してもよい。'guioptions'に'a'が存在するならば、いつ選択が開始 +される(VisualあるいはSelectモード)としても、あるいは選択が変更されるときには、 +Vimがウィンドウシステムの主要な選択(MS-Windowsでは|gui-clipboard|が用いられる) +の所有者になる。 + +この選択を保存するための特別なレジスタがあり、それは"*レジスタである。どのテキ +ストが変更されようとして選択されているか(例えば、マウスの左ボタンでどこかをク +リックして)、あるいはいつ他のアプリケーションが選択されたテキストを貼り付けた +いのかという情報がない限りここには何も書き出されない。そのテキストは"*レジスタ +に書き出される。例えば、行を切り取って、それを現在の選択にする、あるいはクリッ +プボードにそれを書き出すためには: +> "*dd + +同様に、例えば、マウスの中ボタンをクリックすることで、他のアプリケーションから +選択を貼り付けたいときには、選択は始めに"*レジスタに書き出され、それから他のレ +ジスタのようなものに‘書き出す’。例えば、選択(クリップボードの内容)を書き出す +ためには: +> "*p + +あるVimから他の独立したVimにテキストを貼り付けたいときには、選択のタイプ(文 +字、行あるいはブロック)もコピーされることに注意する。他のアプリケーションにつ +いては、タイプは常に文字である。 + +'clipboard'オプションに"unnamed"文字列が含まれているときには、無名レジスタは"* +レジスタと同じである。したがってコマンドの前に"*を付けずに選択をコピーし貼り付 +けることができる。 + +============================================================================== +5. メニュー *menus* + +5.1 メニューの使用 *using-menus* + +基本的には、メニューは単にマッピングのように使用することができる。あなた自身の +メニューを好きなだけたくさん定義することができる。メニューのデフォルト設定があ +るので、無から始めなくてもよい。長い間Vimユーザ達はメニューを十分に使用してこ +なかった。しかしあなた自身のメニューとメニュー項目を追加すること中にその力があ +る。それらはキーシーケンスが何だったかを覚えられないようなときに最も便利であ +る。 + + *menu.vim* +デフォルトのメニューは"$VIMRUNTIME/menu.vim"ファイルから読み込まれる。パスがど +こを指すかについては|$VIMRUNTIME|を参照。あなた自身のメニューをセットアップす +ることができる。デフォルト設定をオフにして開始することができるのはよいアイデア +である。さらに項目を追加したり、あるいは、デフォルトが全く気に入らないなら、全 +てのメニューを取り除いて開始することができる|:unmenu-all|。あなたの.vimrcファ +イル(.gvimrcファイル‘ではない’!)にこの行を追加することでデフォルトのメニュー +がロードされないようにすることもできる: +> let did_install_default_menus = 1 +Syntaxメニューもロードされないようにしたいなら: +> let did_install_syntax_menu = 1 + +バッファのメニューの内容はbufmenu_fullpathとbufmenu_maxlen変数を設定することで +制御することができる。前者は、1に設定されるならば、メニューの中でファイルのフ +ルパスが用いられることを指定する。後者はメニューラベルの中のパスの長さの最大値 +を指定する。パスが長くなると、最初と最後以外のパスの要素は取り除かれる。次に、 +必要であれば、後ろと前の文字がこれらから取り除かれる。最後に全てのパスの要素が +取り除かれる。.gvimrcはmenu.vimの後に実行されるので、これらの変数は.vimrcかあ +るいは同様のファイルの中で設定されなければならない。デフォルト値は +bufmenu_fullpath=0とbufmenu_maxlen=50である。 + + *console-menus* +このドキュメントはGUIセクションの中にあるけれども、コンソールモードでも実際に +メニューを使用することができる。そのときには明示的に|menu.vim|をロードしなけれ +ばならないだろう、それはデフォルトではなされない。ほぼ実際のメニューシステムの +ようにメニューのエントリにアクセスするために'wildmenu'で|:emenu|コマンドとコマ +ンドライン補完を使用することができる。これをするには、あなたの.vimrcファイルに +これらのコマンドを付加しておく: +> :source $VIMRUNTIME/menu.vim +> :set wildmenu +> :set cpo-=< +> :set wcm=<C-Z> +> :map <F4> :emenu <C-Z> +<F4>を押すとメニューを開始するだろう。そのときにはメニューのエントリを選択する +ためにカーソルキーを使用することができる。それを実行するには<Return>を打ち込 +む。キャンセルしたいならば<Esc>を打ち込む。これはコンパイル時に|+menu|機能を有 +効にする必要がある。 + + *tear-off-menus* +GTK+とMotifはTear-offメニューをサポートする。これらは張り付いたメニューかある +いはいつも存在しているポップアップメニューのようなものである。サイズの変更が正 +確に機能しないならば、これはデフォルトで何か"Vim*geometry"のようなものを用いる +ことによって起こされるのかもしれない。代わりに"Vim.geometry"を使用する。 + +Win32 GUIバージョンはMotifのtear-offメニューをエミュレートする。実際には、 +Motifユーザーは容易に相違を見つけるであろうが、うまく行けばそれらは同じくらい +に便利である。メインメニューバーには現れないフローティングメニューを作成するた +めに|:tearoff|コマンドと共に|win32-hidden-menus|を使用することもできる。 + + +5.2 新しいメニューの作成 *creating-menus* + + *:me* *:menu* *:noreme* *:noremenu* + *:am* *:amenu* *:an* *:anoremenu* + *:nme* *:nmenu* *:nnoreme* *:nnoremenu* + *:ome* *:omenu* *:onoreme* *:onoremenu* + *:vme* *:vmenu* *:vnoreme* *:vnoremenu* + *:ime* *:imenu* *:inoreme* *:inoremenu* + *:cme* *:cmenu* *:cnoreme* *:cnoremenu* +新しいメニュー項目を作るには、":menu"コマンドを使用する。それらはまさにコマン +ドの":map"の設定と同様だが最初の引数はメニュー項目の名前であり、'.'で区切った +メニューとサブメニューのパスとして与えられる。例えば: +> :menu File.Save :w<CR> +> :inoremenu File.Save <C-O>:w<CR> +> :menu Edit.Big\ Changes.Delete\ All\ Spaces :%s/[ ^I]//g<CR> + +この最後の1つは"Edit"と呼ばれるメニューバーに新しい項目を作るだろう、そしてこ +の上でマウスのボタンを押し続けると"Big Changes"サブメニューを含んだメニューを +ポップアップするだろう、このサブメニューは"Delete All Spaces"の項目を含んでい +て、この項目を選択したとき、その操作を行う。 + +メニュー名での特殊文字: + & 次の文字はショートカットキーである。どのショートカットキーも + (サブ)メニューの中で1度だけしか使用されていないことを確認する + こと。 + <Tab> 右詰めされたテキストからメニュー名を分離する。これは同等のタイ + プするコマンドを表示するために使用することができる。"<Tab>"テ + キストは便宜上ここで使用してもよい。本当のTabを使用しているな + らば、その前にバックスラッシュを付け忘れてはならない! +例: +> :amenu &File.&Open<Tab>:e :browse e<CR> +[文字通りタイプする] +(<Alt>キーを押し続けている間に)"F"、それから"O"のショートカットで、この +メニューを使用することができる。2番目の部分は"Open :e"のように表示される。 +":e"は右詰めされ、それがショートカットであることを示すために、"O"には下線が引 +かれる。 + +":amenu"コマンドは1度で全てのモードにメニューのエントリを定義するために使用す +ることができる。コマンドを正確に機能させるために、いくつかのモードには文字が自 +動的に挿入される: + モード 挿入される文字 ~ + Normal なし + Visual <Esc> + Insert <C-O> + Cmdline <C-C> + Op-pending <Esc> + +例: +> :amenu File.Exit :qa!^M +は以下と同じ: +> :nmenu File.Exit :qa!^M +> :vmenu File.Exit ^[:qa!^M +> :imenu File.Exit ^O:qa!^M +> :cmenu File.Exit ^C:qa!^M +> :omenu File.Exit ^[:qa!^M + +注意: Insertモードでは、CTRL-Oのために、これは‘1つの’Normalモードのコマンド +に対してだけ機能する。2つかそれ以上のコマンドがあるならば、":imenu"コマンドを +使用する必要があるだろう。どのモードでもテキストを挿入するには、式のレジスタを +使用することができる: +> :amenu Insert.foobar "='foobar'<CR>P + +'cpoptions'の中の'<'と'k'フラグはここにも適用する(含まれていたときには、それら +は認識されずに<>の書式と生のキーコードを作る)ことに注意する。 + +Cmdlineモードでの<Esc>はマッピングの中にあるようにコマンドを実行することに注意 +する。これはVi互換である。Cmdlineモードを終了するにはCTRL-Cを使用する。 + + *menu-priority* +メニューに優先度を与えることができる。より高い優先度を与えられたメニューほど右 +に行く。優先度は":menu"コマンドの前の数字で与えれられる。 +例: +> :80menu Buffer.next :bn<CR> + +デフォルトのメニューはこれらの優先度を持つ: + File 10 + Edit 20 + Tools 40 + Syntax 50 + Buffers 60 + Window 70 + Help 9999 + +何も与えられないか、あるいはゼロの優先度が与えられるときには、500が用いられ +る。ポップアップメニューについては優先度は用いられない。 + +ヘルプメニューの後ろに置くために、9999より高い優先度を使用することができるが、 +それは非標準であり、推奨しない。優先度の取り得る値は最高で約32000である。最低 +は1である。 + + *sub-menu-priority* +同じ機構はサブメニューを配置するために使用してもよい。優先度は、メニュー名の前 +に、ドット区切りの優先度のリストとして与えられる: +> :menu 80.500 Buffer.next :bn<CR> +サブメニューの優先度を与える必要があるのは、項目が通常の位置に置かれないときだ +けである。例えば、他の項目の前にサブメニューを置くには: +> :menu 80.100 Buffer.first :brew<CR> +あるいは他の項目の後にサブメニューを置いて、それ以上のデフォルトの優先度を持つ +項目がその前に置かれるようにするには: +> :menu 80.900 Buffer.last :blast<CR> +数字が抜けているときには、デフォルト値の500が用いられる: +> :menu .900 myMenu.test :echo "text"<CR> +メニューの優先度は新しいメニューが生成されるときにだけ用いられる。それがすでに +存在するときには、例えば、別のモードでは、優先度は変わらないだろう。したがっ +て、優先度はメニューが使用される最初のときにだけ与えられる必要がある。 +例外はポップアップメニューである。モード毎(Normal, Op-pending, Visual, Insert, +Cmdline)に分かれたメニューがある。これらのメニュー毎での順序は異なってもよい。 +これはメニューバーメニューとは異なる。 +注意: サブメニューの優先度は現在全てのGUIのバージョンに対して機能する訳ではな +い。 + + *gui-toolbar* +現在、ツールバーはWin32とGTK+ (X11) GUIでだけ有効である。やがては他のGUIにも現 +れるべきである。サンプルのツールバーの定義はmenu.vimに与えられている。ツール +バーの表示は'guioptions'の文字'T'によって制御される。したがって、メニューと +ツールバーを同時に、あるいはいずれかを持つことができるし、またどちらも持たない +ようにすることもできる。 + +ツールバーは、1つのレベルだけを持つToolBarと呼ばれる特別なメニューとして定義さ +れている。Vimはこのメニューの項目を以下のように解釈する: +1) 'BuiltIn##'(##は数字である)と呼ばれる項目はVimで利用可能な組み込みのビット + マップの番号##と見なされる。現在、最も一般的な編集操作|builtin-tools|を包 + 含する、0から27まで振られた28の番号がある。 +2) 他の名前を持つ項目は最初に$VIM/bitmapsディレクトリから検索される。見つかっ + たならば、そのビットマップファイルがツールバーボタンのイメージとして用いら + れる。正確なファイル名はOS特有であることに注意する: 例えば、Win32でのコマ + ンド +> :amenu ToolBar.Hello :echo "hello"<CR> + は、'hello.bmp'ファイルを検索するだろう。GTK+/X11では'Hello.xpm'である。カ + スタムビットマップのロードはW95, NT4とGTK+でだけサポートされる。Win32では、 + ビットマップはボタンに合わせて大きさが調整されるが、GTK+ではされない。 + GTK+については、デフォルトのpixmapのサイズは20x20ピクセルが用いられる。 +3) $VIM/bitmapsにビットマップが見つからないならば、Vimは組み込みの名前のリス + トに対して同等のものを探す。どの組み込みのボタンイメージも名前を持ってい + る。だから、コマンド +> :amenu ToolBar.Open :e + は、open.bmpが存在しなければ、組み込みの"open a file"ボタンイメージを表示 + するだろう。全ての組み込みの名前はmenu.vimで用いられているのを見ることがで + きる。 +4) 他の全てが失敗するならば、空白だが、機能している、ボタンが表示される。 + + *builtin-tools* +番号 名前 通常の動作 ~ +00 New 新しいウィンドウを開く +01 Open 現在のウィンドウで開くためにファイルをブラウズする +02 Save バッファをファイルに保存する +03 Undo 最後の変更を取り消す +04 Redo 最後の取り消した変更をやり直す +05 Cut 選択されたテキストを削除しクリップボードへ送る +06 Copy 選択されたテキストをクリップボードにコピーする +07 Paste クリップボードからテキストをペーストする +08 Print 現在のバッファを印刷する +09 Help Vimの組み込みのヘルプでバッファを開く +10 Find 検索コマンドを開始する +11 SaveAll 全ての修正されたバッファをファイルに保存する +12 SaveSesn 現在の状態をセッションファイルに保存する +13 NewSesn 新しいセッションファイルに保存する +14 LoadSesn セッションファイルを読み込む +15 RunScript Vimスクリプトとして実行するためにファイルをブラウズ + する +16 Replace 置換コマンドのためのプロンプト +17 WinClose 現在のウィンドウを閉じる +18 WinMax 現在のウィンドウに使用する行数を最大にする +19 WinMin 現在のウィンドウに使用する行数を最小にする +20 WinSplit 現在のウィンドウを分割する +21 Shell シェルを開始する +22 FindPrev 後方に再検索する +23 FindNext 前方に再検索する +24 FindHelp ヘルプを検索する単語のためのプロンプト +25 Make makeを実行し最初のエラーにジャンプする +26 TagJump カーソルの下のtagにジャンプする +27 RunCtags 現在のディレクトリのファイルに対してtagsを作成する + + *win32-hidden-menus* +Win32 GUIでは、']'で始まるメニュー名はメインメニューバーから除外される。それを +表示するには|:tearoff|コマンドを使用しなければならない。 + + *popup-menu* +Win32, GTK, MotifとAthena GUIでは、特別なメニュー"PopUp"を定義することができ +る。これは、'mousemodel'がpopupあるいはpopup_setposに設定されているならば、マ +ウスの右ボタンが押されたときに表示されるメニューである。 + + +5.3 マップされているメニューの表示 *showing-menus* + +存在しているどのメニューがマップされているかを見るには、(":map"コマンドでする +のと全く同様に)menuコマンドの後にたった1つの引数を使用するだけである。指定され +たメニューがサブメニューならば、その階層の下の全てのメニューが表示されるだろ +う。:menuの後に全く何も引数が与えられなかったならば、適切なモードに対する‘全 +ての’メニュー項目が表示される(例えば、Command-lineモードに対して:cmenu)。 + +メニューコマンドの後にメニュー名を入力している間に<Tab>を打つことはメニュー項 +目の名前を補完するのに使われるかもしれないことに注意する。 + + +5.4 メニューの実行 *execute-menus* + + *:eme* *:emenu* +コマンドラインからメニュー項目を手動で実行するには、:emenuコマンドを使用する。 +例えば: +> :emenu File.Exit + +メニューに関連付けられた通常モードのコマンドが実行される(通常それがしたいこと +でなので)。コンソールモードのvimがWANT_MENUを定義されてコンパイルされている +ならば、GUIモードによって慣れてしまった便利なメニュー項目にアクセスするために +:emenuを使用することができる。これと共にうまく機能するオプションについては +'wildmenu'を参照。例については|console-menus|を参照。 + + +5.5 メニューの削除 *delete-menus* + + *:unme* *:unmenu* + *:aun* *:aunmenu* + *:nunme* *:nunmenu* + *:ounme* *:ounmenu* + *:vunme* *:vunmenu* + *:iunme* *:iunmenu* + *:cunme* *:cunmenu* +メニュー項目あるいは全てのサブメニューを削除するには、unmapコマンドに類似した +unmenuコマンドを使用する。例えば: + :unmenu! Edit.Paste + +これはInsertとCommand-lineモードに対してEditメニューからPaste項目を取り除くだ +ろう。 + +メニューコマンドの後にメニュー名を入力している間に<Tab>を打ち込むことは適切な +モードに対するメニュー項目の名前を補完するために使われるかもしれないことに注意 +する。 + +全てのメニューを取り除くには以下を使用する: *:unmenu-all* +> :unmenu * " Normalとvisualモードで全てのメニューを取り除く +> :unmenu! * " InsertとCommand-lineモードで全てのメニューを取り除く + + +5.6 メニューの例 *menu-examples* + +ここにあるのはメニューにメニュー項目を追加する方法の例である! カーソルの下の +キーワードに対してメニュー項目を追加することができる。レジスタ"z"が使用され +る。 + +> :nmenu Words.Add\ Var wb"zye:menu! Words.<C-R>z <C-R>z<CR> +> :nmenu Words.Remove\ Var wb"zye:unmenu! Words.<C-R>z<CR> +> :vmenu Words.Add\ Var "zy:menu! Words.<C-R>z <C-R>z <CR> +> :vmenu Words.Remove\ Var "zy:unmenu! Words.<C-R>z<CR> +> :imenu Words.Add\ Var <Esc>wb"zye:menu! Words.<C-R>z <C-R>z<CR>a +> :imenu Words.Remove\ Var <Esc>wb"zye:unmenu! Words.<C-R>z<CR>a + +(rhsは<>表記の中にあり、マッピングを試すためにこのテキストをコピー/ペーストす +るか、あるいはあなたのgvimrcにこれらの行を付加することができる; "<C-R>"は +CTRL-Rであり、"<CR>"は<CR>キーである。|<>|) + +ツールtipsとメニューtips + +これらは現在Win32 GUIでだけサポートされている。しかしながら、それらはそう遠く +ない未来に他のguiプラットホームのために現われるべきである。 + + *:tmenu* *:tm* +:tm[enu] {menupath} {rhs} メニューあるいはツールにtipを定義する。{GTK+と + Win32 GUIでだけ} + +:tm[enu] [menupath] メニューtipsをリストする。{GTK+とWin32 GUIでの + み} + +"tip"はどのメニュー項目にも定義することができる。例えば、このように項目を定義 +した後で: +> :amenu MyMenu.Hello :echo "Hello"<CR> +tipはこのように定義される: +> :tmenu MyMenu.Hello Displays a greeting. + +tipがメニュー項目に定義されるときには、マウスがその項目の上にあるとき、ステー +タスバーの標準Windowsメニューヒントとほとんど同様、Command-lineエリアに表示さ +れる。(VimがCommand-lineコマンドであるとき、もちろん何も表示されないときを除い +て。) +tipがツールバー項目に定義されるときには、普通の方法で、マウスがそのボタンの上 +で一旦止まったとき、ツールtipが表示される。 + +":tmenu"コマンドは他のメニューコマンドと全く同様に機能し、それは同じ引数を使用 +する。 + + *:tunmenu* *:tu* +:tu[nmenu] {menupath} メニューあるいはツールからtipを取り除く。{GTK+ + とWin32 GUIでだけ} + +:tunmenuは、他のunmenuコマンドと同じ方法で、存在するメニューtipを削除する。例: +> :tunmenu MyMenu.Hello +メニュー項目が無効になる(例えば、全てのモードでその動作が削除される)ならば、 +Vimはメニューtip(と項目)を削除する。これは:aunmenuがメニュー項目を削除する、つ +まり、同様に:tunmenuする必要はないことを意味する + +============================================================================== +6. 付記 *gui-extras* + +このセクションはGUIと関係がある他の機能を記述する。 + +- GUIでは、キーコードは<Esc>で始まらないため、エスケープを打ち込んだ後1秒待た + なくてよい。 + +- 用いられた内部の文字列は無意味なので、GUIで特殊キーが後に続く^Vをタイプする + ことは "<Key>"を挿入するだろう。修飾子もまた"<Modifiers-Key>"を得るために抑 + 制されるかもしれない。 + +- GUIでは、修飾子SHIFT, CTRLとALT(あるいはMETA)は特殊キーとマウスイベントの + マッピングなしで使用されるかもしれない。例えば: :map <M-LeftDrag> <LeftDrag> + +- GUIでは、いくつかの通常のキーはマッピング等で修飾子を持つかもしれない、これ + らは<Space>, <Tab>, <NL>, <CR>, <Esc>である。 + +============================================================================== +7. シェルコマンド *gui-shell* + +X11 GUIについては、外部コマンドはgvimウィンドウの中で実行される。|gui-pty|を参 +照。 + +‘警告’: X11 GUIから外部コマンドを実行することは常に機能するとは限らないだろ +う。"ls", "grep"と"make"のような"normal"コマンドはたいていよく機能する。"less" +と"ispell"のような知的ターミナルを要求するコマンドは機能しないだろう。あるもの +はハングさえするかもしれないし、他のターミナルからkillされる必要があるかもしれ +ない。だから気を付けなくてはならない! + +Win32 GUIについては、外部コマンドは分離されたウィンドウで実行される。 +|gui-shell-win32|を参照。 + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/index.jax b/ja/index.jax new file mode 100644 index 000000000..c53dc0541 --- /dev/null +++ b/ja/index.jax @@ -0,0 +1,1290 @@ +COMMENT: モード別コマンドによる索引 +STATUS: finished 5.7 +TRANSLATOR: 小野尾隆一(nobi) <onoo@k-micro.com> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*index.txt* For Vim version 5.7. Last change: 2000 Apr 01 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +このファイルには、タグと短い説明とともに各モードにおける総てのコマンドのリスト +が記述されている。リストはアスキーコード順になっている。 + +ヒント: 機能で検索するときは、検索コマンドを使用する。例えば、何かを削除するコ +マンドを検索したいなら、"/削除"を使用する。 + +1. 挿入モード |insert-index| +2. ノーマルモード |normal-index| + 2.1. テキストオブジェクト |objects| + 2.2. ウィンドウコマンド |CTRL-W| + 2.3. 大括弧コマンド |[| + 2.4. 'g' で始まるコマンド |g| +3. ビジュアルモード |visual-index| +4. コマンドライン編集 |ex-edit-index| +5. EX コマンド |ex-cmd-index| + +オプションの概略は help.txt を参照。|option-list| +各オプションの詳細な説明は options.txt を参照。|options| +全ヘルプ項目のリストは |help-tags| を参照。 + +============================================================================== +1. 挿入モード *insert-index* + +タグ 文字 動作 ~ +----------------------------------------------------------------------- +|i_CTRL-@| CTRL-@ 直前に挿入したテキストを挿入し、挿入モードを + 終了する。 +|i_CTRL-A| CTRL-A 直前に挿入したテキストを挿入する。 + CTRL-B 未使用 |i_CTRL-B-gone| +|i_CTRL-C| CTRL-C 'insertmode' がセットされていなければ、略語を + チェックせずに挿入モードを終了する。 +|i_CTRL-D| CTRL-D 現在の行から shiftwidth 分のインデントを削除 + する。 +|i_CTRL-E| CTRL-E カーソルの下にある文字を挿入する。 + CTRL-F 未使用 + CTRL-G 将来の拡張のために予約。 +|i_<BS>| <BS> カーソルの前にある文字を削除する。 +|i_digraph| {char1}<BS>{char2} + 2バイト文字を入力する。 ('digraph' オプション + がセットされているとき) +|i_CTRL-H| CTRL-H <BS> と同じ +|i_<Tab>| <Tab> <Tab> 文字を挿入 +|i_CTRL-I| CTRL-I <Tab> と同じ +|i_<NL>| <NL> <CR> と同じ +|i_CTRL-J| CTRL-J <CR> と同じ +|i_CTRL-K| CTRL-K {char1} {char2} + 2バイト文字を入力する。 +|i_CTRL-L| CTRL-L 'insertmode' がセットされているとき: 挿入モー + ドを終了する。 +|i_<CR>| <CR> 改行を入力。 +|i_CTRL-M| CTRL-M <CR> と同じ。 +|i_CTRL-N| CTRL-N カーソルの前にあるキーワードで前方検索し、一致 + した単語で補完する。 +|i_CTRL-O| CTRL-O 1回コマンドを実行し、挿入モードに戻る。 +|i_CTRL-P| CTRL-P カーソルの前にあるキーワードで後方検索し、一致 + した単語で補完する。 +|i_CTRL-Q| CTRL-Q CTRL-V と同じ。(端末制御に使用) +|i_CTRL-R| CTRL-R {0-9a-z"%#*:=} + レジスタに保存されている文字列を挿入。 +|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:=} + レジスタに保存されている文字列そのものを挿入。 +|i_CTRL-R_CTRL-O| CTRL-R CTRL-O {0-9a-z"%#*:=} + レジスタに保存されている文字列そのものを挿入。 + インデントは挿入しない。 +|i_CTRL-R_CTRL-P| CTRL-R CTRL-P {0-9a-z"%#*:=} + レジスタに保存されている文字列そのものを挿入。 + インデントは固定。 + CTRL-S (端末制御に使用) +|i_CTRL-T| CTRL-T 現在の行に shiftwidth 分のインデントを挿入する。 +|i_CTRL-U| CTRL-U 現在の行に挿入した総ての文字を削除する。 +|i_CTRL-V| CTRL-V {char} 次に入力する数字以外の文字を挿入する。 +|i_CTRL-V_digit| CTRL-V {number} 次に入力する3桁の10進数を1バイト文字として挿入 + する。12345 +|i_CTRL-W| CTRL-W カーソルの前にある単語を削除する。 +|i_CTRL-X| CTRL-X {mode} CTRL-X サブモードに移行する。詳しくは下を参照。 +|i_CTRL-Y| CTRL-Y カーソルの上にある文字を挿入する。 +|i_CTRL-Z| CTRL-Z 'insertmode' がセットされている場合: Vim をサ + スペンドする。 +|i_<Esc>| <Esc> 挿入モードを終了する。('insertmode' がセットさ + れていない場合) +|i_CTRL-[| CTRL-[ <Esc> と同じ。 +|i_CTRL-\_CTRL-N| CTRL-\ CTRL-N ノーマルモードへ移行。 + CTRL-\ a - z 将来の拡張のために予約。 + CTRL-\ others 未使用 +|i_CTRL-]| CTRL-] trigger abbreviation + CTRL-^ 未使用 +|i_CTRL-_| CTRL-_ 'allowrevins' がセットされている場合: 文字の挿 + 入方向を逆転させる(右から左(Hebrew)、左から右 + (Farsi)) {コンパイル時に +rightleft オプション + を有効にしたときのみ} + <Space> to '~' 未使用。ただし CTRL-D が後に続く '0' と '^' は + 除く。 + +|i_0_CTRL-D| 0 CTRL-D 現在の行の全インデントを削除する。 +|i_^_CTRL-D| ^ CTRL-D 現在の行の全インデントを削除し、次の行に復元。 + +|i_<Del>| <Del> カーソル位置の文字を削除。 + + Meta characters (0x80 to 0xff, 128 to 255) + 未使用 + +|i_<Left>| <Left> カーソルを1文字左へ移動。 +|i_<S-Left>| <S-Left> カーソルを1単語左へ移動。 +|i_<C-Left>| <C-Left> カーソルを1単語左へ移動。 +|i_<Right>| <Right> カーソルを1文字右へ移動。 +|i_<S-Right>| <S-Right> カーソルを1単語右へ移動。 +|i_<C-Right>| <C-Right> カーソルを1単語右へ移動。 +|i_<Up>| <Up> カーソルを1行上へ移動。 +|i_<S-Up>| <S-Up> <PageUp> と同じ。 +|i_<Down>| <Down> カーソルを1行下へ移動。 +|i_<S-Down>| <S-Down> <PageDown> と同じ。 +|i_<Home>| <Home> カーソルを行の先頭へ移動。 +|i_<C-Home>| <C-Home> カーソルを行の先頭へ移動。 +|i_<End>| <End> カーソルを行末へ移動。 +|i_<C-End>| <C-End> カーソルを行末へ移動。 +|i_<PageUp>| <PageUp> 1画面上へスクロール。 +|i_<PageDown>| <PageDown> 1画面下へスクロール。 +|i_<F1>| <F1> <Help> と同じ。 +|i_<Help>| <Help> 挿入モードを終了し、ヘルプウィンドウを表示する。 +|i_<Insert>| <Insert> 挿入/上書きモードをトグルする。 +|i_<LeftMouse>| <LeftMouse> カーソルをマウスクリックした位置へ移動。 +|i_<MouseDown>| <MouseDown> ウィンドウを3行下へスクロール。 +|i_<S-MouseDown>| <S-MouseDown> ウィンドウを1画面下ヘスクロール。 +|i_<MouseUp>| <MouseUp> ウィンドウを3行上へスクロール。 +|i_<S-MouseUp>| <S-MouseUp> ウィンドウを1画面上へスクロール。 + +commands in CTRL-X submode + +|i_CTRL-X_CTRL-D| CTRL-X CTRL-D 定義済みの識別子を補完。 +|i_CTRL-X_CTRL-E| CTRL-X CTRL-E ウィンドウを下へスクロール。 +|i_CTRL-X_CTRL-F| CTRL-X CTRL-F ファイル名を補完。 +|i_CTRL-X_CTRL-I| CTRL-X CTRL-I 識別子を補完。 +|i_CTRL-X_CTRL-K| CTRL-X CTRL-K 辞書の識別子を補完。 +|i_CTRL-X_CTRL-L| CTRL-X CTRL-L 行全体を補完。 +|i_CTRL-X_CTRL-L| CTRL-X CTRL-N 次の補完候補。 +|i_CTRL-X_CTRL-L| CTRL-X CTRL-P 前の補完候補。 +|i_CTRL-X_CTRL-Y| CTRL-X CTRL-Y ウィンドウを下へスクロール。 +|i_CTRL-X_CTRL-]| CTRL-X CTRL-] タグを補完。 +{コンパイル時に +insert_expand オプションを有効にしたときのみ利用可能} + +============================================================================== +2. ノーマルモード *normal-index* + +CHAR 空白以外の文字 +WORD 空白以外の文字からなる文字列 +N コマンドの前に入力される数字 +{motion} カーソル移動コマンド +Nmove {motion} でカーソルが通過するテキスト +SECTION もしかしたら '{' の代わりに '}' で始まる1段落 + +注: 1 = カーソル移動コマンド; 2 = アンドゥ/リドゥ可能 + +タグ 文字 注 ノーマルモードでの動作 ~ +------------------------------------------------------------------------------ + CTRL-@ 未使用 +|CTRL-A| CTRL-A 2 カーソル位置/カーソルより後ろにある数字に N + を加える。 +|CTRL-B| CTRL-B 1 ウィンドウを N 画面上へスクロール。 +|CTRL-C| CTRL-C 現在の(検索)コマンドを中断する。 +|CTRL-D| CTRL-D ウィンドウを N 行下へスクロールする。(デフォ + ルト:半画面) +|CTRL-E| CTRL-E ウィンドウを N 行下へスクロールする。 +|CTRL-F| CTRL-F 1 ウィンドウを N 画面下へスクロール。 +|CTRL-G| CTRL-G 現在のファイル名とカーソル位置を表示する。 +|<BS>| <BS> 1 "h" と同じ。 +|CTRL-H| CTRL-H 1 "h" と同じ。 +|<Tab>| <Tab> 1 N 個先のジャンプリストの場所へジャンプする。 +|CTRL-I| CTRL-I 1 <Tab> と同じ。 +|<NL>| <NL> 1 "j" と同じ。 +|CTRL-J| CTRL-J 1 "j" と同じ。 + CTRL-K 未使用 +|CTRL-L| CTRL-L 画面の再描画。 +|<CR>| <CR> 1 カーソルを N 行下の先頭の CHAR へ移動。 +|CTRL-M| CTRL-M> 1 <CR> と同じ。 +|CTRL-N| CTRL-N 1 "j" と同じ。 +|CTRL-O| CTRL-O 1 N 個前のジャンプリストの場所へジャンプする。 +|CTRL-P| CTRL-P 1 カーソルを N 行上へ移動。 + CTRL-Q (端末制御に使用) +|CTRL-R| CTRL-R 2 'u' でアンドゥした変更をリドゥする。 + CTRL-S (端末制御に使用) +|CTRL-T| CTRL-T N 個前のタグリストの場所へジャンプする。 +|CTRL-U| CTRL-U ウィンドウを N 行上へスクロール。(デフォル + トは半画面) +|CTRL-V| CTRL-V ブロック指定のビジュアルモードを開始する。 +|CTRL-W| CTRL-W {char} ウィンドウコマンド、|CTRL-W| を参照。 +|CTRL-X| CTRL-X 2 カーソル位置/カーソルより後ろにある数字に N + を減じる。 +|CTRL-Y| CTRL-Y ウィンドウを N 行下へスクロール。 +|CTRL-Z| CTRL-Z Vim の実行を中断。(新しいシェルを開始する) + CTRL-[ <Esc> 未使用 +|CTRL-\_CTRL-N| CTRL-\ CTRL-N ノーマルモードへ移行。(つまり何もしない) + CTRL-\ a - z 将来の拡張のために予約。 + CTRL-\ others 未使用 +|CTRL-]| CTRL-] カーソル位置の単語を :ta で検索する。 +|CTRL-^| CTRL-^ N 番目のファイルを編集する。(":e #N" と同じ) + CTRL-_ 未使用 + +|<Space>| <Space> 1 "l" と同じ。 +|!| !{motion}{filter} + 2 Nmove のテキストを {filter} コマンドでフィ + ルタする。 +|!!| !!{filter} 2 N 行を {filter} コマンドでフィルタする。 +|quote| "{a-zA-Z0-9.%#:-"} 削除、ヤンク、プットコマンドでバッファ + {a-zA-Z0-9.%#:-"} (大文字は既存のバッファに + 追加する)を指定するために使用する。({.%#:} + はプットコマンドでのみ有効) +|#| # 1 カーソル位置の単語で後方検索し、N 番目に見 + つかった場所へ移動。 +|$| $ 1 カーソルを N 行下の行末へ移動。 +|%| % 1 現在の行にある次の(小/大)括弧またはコメント + に対応する括弧の位置、対応するプリプロセッ + サの位置に移動。 +|N%| {count}% 1 ファイルの N パーセントの位置に移動。 +|&| & 2 最後に実行した :s コマンドを繰り返す。 +|'| '{a-zA-Z0-9} 1 {a-zA-Z0-9} でマークした行の先頭の CHAR へ + カーソルを移動。 +|''| '' 1 最後のジャンプの前にいた行の先頭の CHAR へ + カーソルを移動。 +|'<| '< 1 カレントバッファのハイライト領域の先頭行の + 先頭の CHAR へカーソルを移動。 +|'>| '> 1 カレントバッファのハイライト領域の最終行の + 先頭の CHAR へカーソルを移動。 +|'[| '[ 1 最後に編集したテキストまたは挿入したテキス + トの先頭行の先頭の CHAR へカーソルを移動。 +|']| '] 1 最後に編集したテキストまたは挿入したテキス + トの末尾行の先頭の CHAR へカーソルを移動。 +|(| ( 1 カーソルを N 文だけ戻す。 +|)| ) 1 カーソルを N 文だけ先に進める。 +|star| * 1 カーソル位置の単語を前方検索し、N 番目に見 + つかった位置へ移動。 +|+| + 1 カーソルを N 行下の先頭の CHAR へ移動。 +|,| , 1 最後に実行した f, t, F または T コマンドを + 逆向きに N 回繰り返す。 +|-| - 1 カーソルを N 行上の先頭の CHAR へ移動。 +|.| . 2 最後の編集を N 回繰り返す。 +|/| /{pattern}<CR> 1 {pattern} で前方検索し、N 番目に見つかった + 位置へ移動。 +|/<CR>| /<CR> 1 最後の検索の {pattern} で前方検索。 +|count| 0 1 カーソルを行頭文字へ移動。 +|count| 1 カウントを指定するためにコマンドの前に入力 +|count| 2 " +|count| 3 " +|count| 4 " +|count| 5 " +|count| 6 " +|count| 7 " +|count| 8 " +|count| 9 " +|:| : Ex コマンドの入力開始。 +|N:| {count}: カレント行から N 行下の行までの範囲で有効と + なる Ex コマンドの入力開始。 +|;| ; 1 最後の f, t, F または T を N 回繰り返す。 +|<| <{motion} 2 Nmove の行を 'shiftwidth' 分だけ左へシフト。 +|<<| << 2 N 行を 'shiftwidth' 分だけ左へシフト。 +|=| ={motion} 2 Nmove の行のインデントを調整する。 +|==| == 2 N 行のインデントを調整する。 +|>| >{motion} 2 Nmove の行を 'shiftwidth' 分だけ右へシフト。 +|>>| >> 2 N 行を 'shiftwidth' 分だけ右へシフト。 +|?| ?{pattern}<CR> 1 {pattern} で後方検索し、N 番目に見つかった + 位置へ移動。 +|?<CR>| ?<CR> 1 最後の検索の {pattern} で後方検索。 +|@| @{a-z} 2 バッファ {a-z} の内容を N 回実行する。 +|@:| @: 最後の ":" コマンドを N 回実行する。 +|@@| @@ 2 最後の @{a-z} コマンドを N 回実行する。 +|A| A 2 行末に N 回テキストを追加する。 +|B| B 1 カーソルを N WORDS だけ戻す。 +|C| ["x]C 2 カーソル位置から行末までと続く N-1 行のテキ + ストを削除し[バッファ x に保存して]、テキス + トを入力する; "c$" と同じ。 +|D| ["x]D 2 カーソル位置から行末までと続く N-1 行のテキ + ストを削除する[バッファ x に保存する]; "d$" + と同じ。 +|E| E 1 カーソルを N 先の WORD の末尾へ移動。 +|F| F{char} 1 カーソルを左方向へ N 個目の {char} に移動。 +|G| G 1 カーソルを N 行目に移動、デフォルトは最後の + 行。 +|H| H 1 カーソルを画面の上から N 行目に移動。 +|I| I 2 行の先頭の CHAR の前に N 回テキストを挿入。 +|J| J 2 N 行結合; デフォルトは2行。 +|K| K カーソル位置のキーワードを 'keywordprg' で + 調べる。 +|L| L 1 カーソルを画面の下から N 行目に移動。 +|M| M 1 カーソルを画面の中央の行に移動。 +|N| N 1 最後に実行した '/' または '?' を逆方向に N + 回実行する。 +|O| O 2 カーソルの上に新規に行を挿入し、テキストを + 入力、N 回繰り返す。 +|P| ["x]P 2 カーソルの前に[バッファ x の]テキストを N + 回挿入する。 +|Q| Q "Ex" モードに移行する。 +|R| R 2 上書きモードに移行する: 今ある文字を上書き + する、入力したテキストを N-1 回繰り返す。 +|S| ["x]S 2 N 行削除し[バッファ x に保存]、テキストの挿 + 入開始; "^cc" または "0cc" と同じ、オートイ + ンデントに依存。 +|T| T{char} 1 カーソルを左方向へ N 個目の {char} の直後ま + で移動。 +|U| U 2 1行中の最近の変更を総て取り消す。 +|V| V 行指定のビジュアルモードを開始する。 +|W| W 1 カーソルを N WORDS 先に進める。 +|X| ["x]X 2 カーソルの前にある N 文字を削除する[バッファ + x に保存]。 +|Y| ["x]Y N 行[バッファ x に]ヤンクする; "yy" と同じ。 +|ZZ| ZZ カレントファイルが編集されていたら、保存し + て編集を終了する。 +|ZQ| ZQ カレントファイルの編集を終了する。 +|[| [{char} 大括弧コマンド (下を参照) + \ 未使用 +|]| ]{char} 大括弧コマンド (下を参照) +|^| ^ 1 カーソルを行の先頭の CHAR へ移動。 +|_| _ 1 カーソルを N-1 行下の先頭の CHAR へ移動。 +|`| `{a-zA-Z0-9} 1 カーソルをマーク {a-zA-Z0-9} へ移動。 +|`<| `< 1 カーソルをハイライト領域の先頭に移動。 +|`>| `> 1 カーソルをハイライト領域の末尾に移動。 +|`[| `[ 1 最後に編集したテキストまたは挿入したテキス + トの先頭へカーソルを移動。 +|`]| `] 1 最後に編集したテキストまたは挿入したテキス + トの末尾へカーソルを移動。 +|``| `` 1 最後のジャンプの前にいた位置へカーソルを移 + 動。 +|a| a 2 カーソルの直後に N 回テキストを追加する。 +|b| b 1 カーソルを N ワードだけ戻す。 +|c| ["x]c{motion} 2 Nmove のテキストを削除[バッファ x に保存]し、 + 挿入モードへ移行。 +|cc| ["x]cc 2 N 行削除[バッファ x に保存]し、挿入モードへ + 移行。 +|d| ["x]d{motion} 2 Nmove のテキストを削除[バッファ x に保存]。 +|dd| ["x]dd 2 N 行削除[バッファ x に保存]。 +|e| e 1 カーソルを N 先のワードの末尾へ移動。 +|f| f{char} 1 カーソルを右方向へ N 個目の {char} に移動。 +|g| g{char} 拡張コマンド、下を参照。 +|h| h 1 カーソルを左へ N 文字移動。 +|i| i 2 カーソルの直前に N 回テキストを挿入する。 +|j| j 1 カーソルを N 行下へ移動する。 +|k| k 1 カーソルを N 行上へ移動する。 +|l| l 1 カーソルを右へ N 文字移動。 +|m| m{A-Za-z} カーソル位置にマーク {A-Za-z} をセットする。 +|n| n 1 最後の '/' or '?' を N 回繰り返す。 +|o| o 2 カーソルの下に新規に行を挿入し、テキストを + 入力、N 回繰り返す。 +|p| ["x]p 2 カーソルの後に[バッファ x の]テキストを N + 回挿入する。 +|q| q{0-9a-zA-Z"} 入力した文字をレジスタ {0-9a-zA-Z"} (大文字 + は既存のレジスタに追加する)に記録する。 +|q| q (記録中なら) レジスタへの記録を終了する。 +|r| r{char} 2 N 文字を {char} で置き換える。 +|s| ["x]s 2 (置換) N 文字削除[バッファ x に保存]し、挿 + 入モードに移行。 +|t| t{char} 1 カーソルを右方向へ N 個目の {char} の直前ま + で移動。 +|u| u 2 変更をアンドゥ。 +|v| v 文字指定のビジュアルモードを開始する。 +|w| w 1 カーソルを N ワード先へ移動。 +|x| ["x]x 2 カーソル位置と直後の N 文字を削除[バッファ + x に保存] +|y| ["x]y{motion} Nmove のテキストを[バッファ x へ]ヤンク。 +|yy| ["x]yy N 行[バッファ x へ]ヤンク。 +|z<CR>| z<CR> 画面の再描画、カーソル行をウィンドウの最上 + 部へ移動、カーソルは行のはじめの空白文字以 + 外の文字へ移動。 +|zN<CR>| z{height}<CR> 画面の再描画、ウィンドウの高さを {height} + にする。 +|z+| z+ カーソルを N 行目に移動(デフォルトはウィン + ドウの下の行)、その他は "z<CR>" と同じ。 +|z-| z- 画面の再描画、カーソル行をウィンドウの最下 + 部へ移動、カーソルは行のはじめの空白文字以 + 外の文字へ移動。 +|z.| z. 画面の再描画、カーソル行をウィンドウの中央 + 部へ移動、カーソルは行のはじめの空白文字以 + 外の文字へ移動。 +|z^| z^ カーソルを N 行目に移動(デフォルトはウィン + ドウの上の行)、その他は "z-" と同じ。 +|zb| zb 画面の再描画、カーソル行をウィンドウの最下 + 部へ移動。 +|ze| ze 'wrap' オプションがオフの時、カーソルがスク + リーンの右端になるように、水平方向にスクロー + ル。 +|zh| zh 'wrap' オプションがオフの時、水平方向に N + 文字分右へスクロール。 +|zl| zl 'wrap' オプションがオフの時、水平方向に N + 文字分左へスクロール。 +|zs| zs 'wrap' オプションがオフの時、カーソルがスク + リーンの左端になるように、水平方向にスクロー + ル。 +|zt| zt 画面の再描画、カーソル行をウィンドウの最上 + 部へ移動。 +|zz| zz 画面の再描画、カーソル行をウィンドウの中央 + 部へ移動。 +|z<Left>| z<Left> "zh" と同じ。 +|z<Right>| z<Right> "zl" と同じ。 +|{| { 1 カーソルを N 段落戻す。 +|bar| | 1 カーソルを N カラムへ移動。 +|}| } 1 カーソルを N 段落進める。 +|~| ~ 2 'tildeop' オフ: カーソル位置の N 文字の大文 + 字小文字を逆転し、カーソルを右へ N 文字移動 + する。 +|~| ~{motion} 'tildeop' オン: Nmove のテキストの大文字小 + 文字を逆転する。 +|<C-End>| <C-End> 1 "G" と同じ。 +|<C-Home>| <C-Home> 1 "gg" と同じ。 +|<C-Left>| <C-Left> 1 "b" と同じ。 +|<C-Home>| <C-Home> 2 "gg" と同じ。 +|<C-Left>| <C-Left> 2 "b" と同じ。 +|<C-LeftMouse>| <C-LeftMouse> マウスクリック位置のキーワードで ":ta" を実 + 行する。 +|<C-Right>| <C-Right> 1 "w" と同じ。 +|<C-RightMouse>| <C-RightMouse> "CTRL-T" と同じ。 +|<Del>| ["x]<Del> 2 "x" と同じ。 +|N<Del>| {count}<Del> 入力した {count} から最後の数字を削除する。 +|<Down>| <Down> 1 "j" と同じ。 +|<End>| <End> 1 "$" と同じ。 +|<F1>| <F1> <Help> と同じ。 +|<Help>| <Help> ヘルプウィンドウを開く。 +|<Home>| <Home> 1 "0" と同じ。 +|<Insert>| <Insert> 2 "i" と同じ。 +|<Left>| <Left> 1 "h" と同じ。 +|<LeftMouse>| <LeftMouse> 1 カーソルをマウスクリック位置へ移動。 +|<MiddleMouse>| <MiddleMouse> 2 マウスクリック位置で実行した "P" と同じ。 +|<PageDown>| <PageDown> CTRL-F と同じ。 +|<PageUp>| <PageUp> CTRL-B と同じ。 +|<Right>| <Right> 1 "l" と同じ。 +|<RightMouse>| <RightMouse> ビジュアルモードを開始、カーソルをマウスク + リック位置へ移動。 +|<S-Down>| <S-Down> 1 CTRL-F と同じ。 +|<S-Left>| <S-Left> 1 "b" と同じ。 +|<S-LeftMouse>| <S-LeftMouse> マウスクリック位置で実行した "*" と同じ。 +|<S-Right>| <S-Right> 1 "w" と同じ。 +|<S-RightMouse>| <S-RightMouse> マウスクリック位置で実行した "#" と同じ。 +|<S-Up>| <S-Up> 1 CTRL-B と同じ。 +|<Undo>| <Undo> 2 "u" と同じ。 +|<Up>| <Up> 1 "k" と同じ。 +|<MouseDown>| <MouseDown> ウィンドウを3行下へスクロール。 +|<S-MouseDown>| <S-MouseDown> ウィンドウを1画面下ヘスクロール。 +|<MouseUp>| <MouseUp> ウィンドウを3行上へスクロール。 +|<S-MouseUp>| <S-MouseUp> ウィンドウを1画面上へスクロール。 + +============================================================================== +2.1 テキストオブジェクト *objects* + +以下のコマンドは演算コマンドの後、もしくは、ビジュアルモードでオブジェクトを選 +択する際に使われる。 + +タグ コマンド ノーマルモードでの動作 ~ +------------------------------------------------------------------------------ +|v_a(| a( ab と同じ。 +|v_a)| a) ab と同じ。 +|v_a<| a< "a <>" '<' から '>' までを選択。 +|v_a>| a> a< と同じ。 +|v_aB| aB "a Block" "[{" から "]}" までを選択(括弧を + 含む)。 +|v_aW| aW "a WORD" (ホワイトスペースを含む) +|v_a[| a[ "a []" '[' から ']' までを選択。 +|v_a]| a] a[ と同じ。 +|v_ab| ab "a block" "[(" から "])" までを選択(括弧を + 含む)。 +|v_ap| ap "a paragraph" (ホワイトスペースを含む) +|v_as| as "a sentence" (ホワイトスペースを含む) +|v_aw| aw "a word" (ホワイトスペースを含む) +|v_a{| a{ aB と同じ。 +|v_a}| a} aB と同じ。 +|v_i(| i( ib と同じ。 +|v_i)| i) ib と同じ。 +|v_i<| i< "inner <>" '<' から '>' までを選択。 +|v_i>| i> i< と同じ。 +|v_iB| iB "inner Block" "[{" から "]}" までを選択。 +|v_iW| iW "inner WORD" +|v_i[| i[ "inner []" '[' から ']' までを選択。 +|v_i]| i] i[ と同じ。 +|v_ib| ib "inner block" "[(" から "])" までを選択。 +|v_ip| ip "inner paragraph" +|v_is| is "inner sentence" +|v_iw| iw "inner word" +|v_i{| i{ iB と同じ。 +|v_i}| i} iB と同じ。 + +============================================================================== +2.2 ウィンドウコマンド *CTRL-W* + +タグ コマンド ノーマルモードでの動作 ~ +------------------------------------------------------------------------------ +|CTRL-W_CTRL-B| CTRL-W CTRL-B "CTRL-W b" と同じ。 +|CTRL-W_CTRL-C| CTRL-W CTRL-C "CTRL-W c" と同じ。 +|CTRL-W_CTRL-D| CTRL-W CTRL-D "CTRL-W d" と同じ。 +|CTRL-W_CTRL-F| CTRL-W CTRL-F "CTRL-W f" と同じ。 + CTRL-W CTRL-G "CTRL-W g .." と同じ。 +|CTRL-W_CTRL-I| CTRL-W CTRL-I "CTRL-W i" と同じ。 +|CTRL-W_CTRL-J| CTRL-W CTRL-J "CTRL-W j" と同じ。 +|CTRL-W_CTRL-K| CTRL-W CTRL-K "CTRL-W k" と同じ。 +|CTRL-W_CTRL-N| CTRL-W CTRL-N "CTRL-W n" と同じ。 +|CTRL-W_CTRL-O| CTRL-W CTRL-O "CTRL-W o" と同じ。 +|CTRL-W_CTRL-P| CTRL-W CTRL-P "CTRL-W p" と同じ。 +|CTRL-W_CTRL-Q| CTRL-W CTRL-Q "CTRL-W q" と同じ。 +|CTRL-W_CTRL-R| CTRL-W CTRL-R "CTRL-W r" と同じ。 +|CTRL-W_CTRL-S| CTRL-W CTRL-S "CTRL-W s" と同じ。 +|CTRL-W_CTRL-T| CTRL-W CTRL-T "CTRL-W t" と同じ。 +|CTRL-W_CTRL-W| CTRL-W CTRL-W "CTRL-W w" と同じ。 +|CTRL-W_CTRL-X| CTRL-W CTRL-X "CTRL-W x" と同じ。 +|CTRL-W_CTRL-Z| CTRL-W CTRL-Z "CTRL-W z" と同じ。 +|CTRL-W_CTRL-]| CTRL-W CTRL-] "CTRL-W ]" と同じ。 +|CTRL-W_CTRL-^| CTRL-W CTRL-^ "CTRL-W ^" と同じ。 +|CTRL-W_CTRL-_| CTRL-W CTRL-_ "CTRL-W _" と同じ。 +|CTRL-W_+| CTRL-W + カレントウィンドウの高さを N 行高くする。 +|CTRL-W_-| CTRL-W - カレントウィンドウの高さを N 行低くする。 +|CTRL-W_=| CTRL-W = 総てのウィンドウの高さを同じにする。 +|CTRL-W_R| CTRL-W R ウィンドウ位置を上方へ N 回転させる。 +|CTRL-W_S| CTRL-W S "CTRL-W s" と同じ。 +|CTRL-W_W| CTRL-W W 上から N 番目のウィンドウに移動。N の指定が + なければ、カレントウィンドウの上のウィンド + ウ(なければ一番下のウィンドウ)に移動。 +|CTRL-W_]| CTRL-W ] ウィンドウを分割してカーソル位置のタグへジャ + ンプする。 +|CTRL-W_^| CTRL-W ^ カレントウィンドウを分割し、N 番目のファイ + ルを編集する。 +|CTRL-W__| CTRL-W _ カレントウィンドウの高さを N 行にする(デフォ + ルトは可能な限り高く)。 +|CTRL-W_b| CTRL-W b 一番下のウィンドウへ移動。 +|CTRL-W_c| CTRL-W c カレントウィンドウを閉じる(|:close| と同じ)。 +|CTRL-W_d| CTRL-W d ウィンドウを分割し、カーソル位置の定義へジャ + ンプする。 +|CTRL-W_f| CTRL-W f ウィンドウを分割し、カーソル位置のファイル + 名のファイルを編集する。 +|CTRL-W_g_CTRL-]| CTRL-W g CTRL-] ウィンドウを分割し、カーソル位置のタグに対 + し |:tjump| を実行する。 +|CTRL-W_g]| CTRL-W g ] ウィンドウを分割し、カーソル位置のタグに対 + し |:tselect| を実行する。 +|CTRL-W_g}| CTRL-W g } カーソル位置のタグに対し |:ptjump| を実行す + る。 +|CTRL-W_i| CTRL-W i ウィンドウを分割し、カーソル位置の識別子の + 宣言位置へジャンプする。 +|CTRL-W_j| CTRL-W j N 個下のウィンドウに移動(一番下のウィンドウ + でストップ) +|CTRL-W_k| CTRL-W k N 個上のウィンドウに移動(一番上のウィンドウ + でストップ) +|CTRL-W_n| CTRL-W n 高さが N 行の新しいウィンドウを開く。 +|CTRL-W_o| CTRL-W o カレントウィンドウを除く総てのウィンドウを + 閉じる(|:only| と同じ)。 +|CTRL-W_p| CTRL-W p 直前の(最後にアクセスしていた)ウィンドウへ + 移動。 +|CTRL-W_q| CTRL-W q カレントウィンドウを終了する(|:quit| と同 + じ)。 +|CTRL-W_r| CTRL-W r ウィンドウ位置を下方へ N 回転させる。 +|CTRL-W_s| CTRL-W s カレントウィンドウを2つに分割し、高さが N + 行の新しいウィンドウを作成する。 +|CTRL-W_t| CTRL-W t 一番上のウィンドウへ移動。 +|CTRL-W_w| CTRL-W w 下から N 番目のウィンドウに移動。N の指定が + なければ、カレントウィンドウの下のウィンド + ウ(なければ一番上のウィンドウ)に移動。 +|CTRL-W_x| CTRL-W x カレントウィンドウと上から N 番目のウィンド + ウ(デフォルトは1つ下のウィンドウ)を入れ替え + る。 +|CTRL-W_z| CTRL-W z プレビューウィンドウを閉じる。 +|CTRL-W_}| CTRL-W } カーソル位置のタグをプレビューウィンドウに + 表示する。 +|CTRL-W_<Down>| CTRL-W <Down> "CTRL-W j" と同じ。 +|CTRL-W_<Up>| CTRL-W <Up> "CTRL-W k" と同じ。 + +============================================================================== +2.3 大括弧コマンド *[* *]* + +タグ 文字 注 ノーマルモードでの動作 ~ +------------------------------------------------------------------------------ +|[_CTRL-D| [_CTRL-D カーソル位置の単語と一致する #define の文を + カレントファイルの先頭からカレントファイル + とインクルードファイルの中を探し、最初に一 + 致した場所へジャンプする。 +|[_CTRL-I| [_CTRL-I カーソル位置の単語を含む行をカレントファイ + ルの先頭から探し、最初に見つかった行へジャ + ンプする。 +|[#| [# 1 後方へ対応のとれていない #if, #else, #ifdef + を探し、N 個目に見つかった場所へジャンプ。 +|[(| [( 1 後方へ対応のとれていない '(' を探し、N 個目 + に見つかった場所へジャンプする。 +|[star| [* 1 "[/" と同じ。 +|[/| [/ 1 後方へ C コメントの始まりを探し、N 個目に見 + つかった場所へジャンプする。 +|[D| [D カーソル位置の単語にマッチする単語の定義を + カレントファイルとインクルードファイルの中 + から検索しリスト表示する。カレントファイル + の先頭から検索を開始する。 +|[I| [I カーソル位置の単語にマッチする単語を含む行 + をカレントファイルとインクルードファイルの + 中から検索しリスト表示する。カレントファイ + ルの先頭から検索を開始する。 +|[P| [P 2 "[p" と同じ。 +|[[| [[ 1 カーソルを N 段落後方へ移動 +|[]| [] 1 カーソルを N SECTIONS 後方へ移動 +|[d| [d カーソル位置の単語にマッチする単語の最初の + 定義(#define)をカレントファイルとインクルー + ドファイルの中から検索し表示する。カレント + ファイルの先頭から検索を開始する。 +|[f| [f "gf" と同じ。 +|[i| [i カーソル位置の単語にマッチする単語を含む最 + 初に見つかった行をカレントファイルとインク + ルードファイルの中から検索しリスト表示する。 + カレントファイルの先頭から検索を開始する。 +|[p| [p 2 "P" と同様、さらにカレントラインにインデン + トをあわせる +|[m| [m 1 後方へ N 番目に現れた関数の先頭へカーソルを + 移動。 +|[{| [{ 1 後方へ N 番目に現れた対応する括弧のない '{' + へカーソルを移動。 +|[<MiddleMouse> [<MiddleMouse> 2 "[p" と同じ。 + +|]_CTRL-D| ]_CTRL-D カーソル位置の単語にマッチする単語の最初の + 定義(#define)をカレントファイルとインクルー + ドファイルの中から検索しジャンプする。カー + ソル位置から検索を開始する。 +|]_CTRL-I| ]_CTRL-I カーソル位置の単語にマッチする単語を含む最 + 初に見つかった行をカレントファイルとインク + ルードファイルの中から検索しジャンプする。 + カーソル位置から検索を開始する。 +|]#| ]# 1 カーソルを N 先のマッチしていない #endif か + #else へ移動。 +|])| ]) 1 カーソルを N 先のマッチしていない ')' へ移動。 +|]star| ]* 1 "]/" と同じ。 +|]/| ]/ 1 カーソルを N 先の C のコメントの最後へ移動。 +|]D| ]D カーソル位置の単語にマッチする単語の定義 + (#define)をカレントファイルとインクルードファ + イルの中から総てリストする。カーソル位置か + ら検索を開始する。 +|]I| ]I カーソル位置の単語にマッチする単語を含む行 + をカレントファイルとインクルードファイルの + 中から総てリストする。カーソル位置から検索 + を開始する。 +|]P| ]P 2 "[p" と同じ。 +|][| ][ 1 カーソルを N SECTIONS 前方へ移動。 +|]]| ]] 1 カーソルを N 段落前方へ移動。 +|]d| ]d カーソル位置の単語にマッチする単語の最初の + 定義(#define)をカレントファイルとインクルー + ドファイルの中から検索し表示する。カーソル + 位置から検索を開始する。 +|]f| ]f "gf" と同じ。 +|]i| ]i カーソル位置の単語にマッチする単語を含む最 + 初に見つかった行をカレントファイルとインク + ルードファイルの中から検索しリスト表示する。 + カーソル位置から検索を開始する。 +|]p| ]p 2 "p" と同様、さらにカレントラインにインデン + トをあわせる +|]m| ]m 1 前方へ N 番目に現れた関数の末尾へカーソルを + 移動。 +|]}| ]} 1 カーソルを N 先のマッチしていない '}' へ移 + 動。 +|]<MiddleMouse> ]<MiddleMouse> 2 "]p" と同じ。 + +============================================================================== +2.4 'g' で始まるコマンド *g* + +タグ 文字 注 ノーマルモードでの動作 ~ +------------------------------------------------------------------------------ +|g_CTRL-A| g_CTRL-A only when compiled with MEM_PROFILE + defined: dump a memory profile +|g_CTRL-G| g_CTRL-G 現在のカーソル位置に関する情報を表示。 +|g_CTRL-H| g_CTRL-H ブロック選択モードの開始。 +|g_CTRL-]| g_CTRL-] カーソル位置のタグへ |:tjump| する。 +|g#| g# 1 "#" と同様、ただし "\<" と "\>" を使用しな + い。 +|g$| g$ 1 'wrap' がオフの時、カレント行の画面に表示さ + れている右端の文字へ移動。 + 'wrap' がオフの時、カレントスクリーン行の右 + 端の文字へ移動。 +|gstar| g* 1 "*" と同様、ただし "\<" と "\>" を使用しな + い。 +|g0| g0 1 'wrap' がオフの時、カレント行の画面に表示さ + れている左端の文字へ移動。 + 'wrap' がオフの時、カレントスクリーン行の左 + 端の文字へ移動。 +|g?| g? 2 Rot13 エンコード演算子。 +|g?g?| g?? 2 カレント行を Rot13 エンコード。 +|g?g?| g?g? 2 カレント行を Rot13 エンコード。 +|gD| gD 1 カーソル位置の単語の定義をカレントファイル + 内で検索し、移動。 +|gE| gE 1 直前の WORD の末尾に移動。 +|gH| gH 行選択モードの開始。 +|gI| gI 2 "I" と同様、ただし1カラム目より挿入開始。 +|gJ| gJ 2 スペースを挿入せずに行を連結。 +|gP| ["x]gP 2 (レジスタ x からの)テキストをカーソルの前に + 挿入、カーソルは挿入テキストの最後へ移動。 +|gR| gR 2 仮想置換モード開始。 +|gU| gU{motion} 2 Nmove テキストを大文字にする。 +|gV| gV don't reselect the previous Visual area + when executing a mapping or menu in Select + mode +|g]| g] カーソル位置の単語をタグとして :tselect + を実行する +|g^| g^ 1 'wrap' オプションがオフの時、スクリーン上に + あるカレント行のもっとも左のホワイトスペー + ス以外の文字へ移動 + 'wrap' オプションがオンの時、スクリーン表 + 示でのカレント行のもっとも左のホワイトスペー + ス以外の文字へ移動 +|ga| ga カーソル位置の文字の ASCII コード値を表示 +|gd| gd 1 カーソル位置の単語の定義を現在の関数内で探 + し、移動 +|ge| ge 1 直前の単語の末尾に移動 +|gf| gf カーソル位置のファイル名のファイルを編集開 + 始 +|gg| gg 1 N 行目へジャンプ、デフォルトは1行目 +|gh| gh セレクトモードの開始 +|gj| gj 1 "j" と同様、ただし 'wrap' がオンの時はスク + リーン行で N 行下へ移動 +|gk| gk 1 "k" と同様、ただし 'wrap' がオンの時はスク + リーン行で N 行上へ移動 +|gm| gm 1 スクリーン行の中央の文字へジャンプ +|go| go 1 バッファ中の N バイト目へジャンプ +|gp| ["x]gp 2 N 回カーソルの後に(レジスタxの)テキストを挿 + 入、カーソルは挿入テキストの直後へ移動 +|gq| gq{motion} 2 Nmove テキストを整形する +|gr| gr{char} 2 N 文字を {char} で仮想上書きする +|gs| gs N 秒間スリープする(デフォルト1秒) +|gu| gu{motion} 2 Nmove テキストを小文字にする +|gv| gv 前回のビジュアル領域を再選択する +|g~| g~{motion} 2 Nmove テキストの大文字、小文字を変換する +|g<Down>| g<Down> 1 "gj" と同じ。 +|g<End>| g<End> 1 "g$" と同じ。 +|g<Home>| g<Home> 1 "g0" と同じ。 +|g<LeftMouse>| g<LeftMouse> <C-LeftMouse> と同じ。 + g<MiddleMouse> <C-MiddleMouse> と同じ。 +|g<RightMouse>| g<RightMouse> <C-RightMouse> と同じ。 +|g<Up>| g<Up> 1 "gk" と同じ。 + +============================================================================== +3. ビジュアルモード *visual-index* + +ビジュアルモードでのほとんどのコマンドは、ノーマルモードと同じ。ノーマルモード +と異なるコマンドのみここに列挙した。 + +タグ コマンド 注 ビジュアルモードでの動作 ~ +------------------------------------------------------------------------------ +|v_CTRL-\_CTRL-N| CTRL-\ CTRL-N ビジュアルモードの停止 +|v_CTRL-G| CTRL-G ビジュアルモードとセレクトモードをトグル +|v_<BS>| <BS> 2 セレクトモード: ハイライト領域を削除 +|v_CTRL-H| CTRL-H 2 <BS> と同じ。 +|v_CTRL-O| CTRL-O セレクトモードからビジュアルモードへ1キーで + 移行 +|v_CTRL-V| CTRL-V ビジュアルモードをブロック指向にする。もし + くはブロック指向であれば、ビジュアルモード + を終了する +|v_CTRL-]| CTRL-] ハイライトされたタグへジャンプ +|v_!| !{filter} 2 ハイライトされた行を外部コマンド {filter} + でフィルタする +|v_:| : ハイライトされた行を対象範囲として、コマン + ドラインのコマンドを適用する +|v_<| < 2 ハイライトされた行を 'shiftwidth' 分だけ左 + へシフト +|v_=| = 2 'equalprg' で設定されている外部プログラムで + ハイライト行をフィルタする +|v_>| > 2 ハイライトされた行を 'shiftwidth' 分だけ右 + へシフト +|v_b_A| A 2 ブロックモードの時: ハイライトされた総ての + 行に対し、ハイライト領域の後に同じテキスト + を追加 +|v_C| C 2 ハイライトされた行を削除して、挿入開始 +|v_D| D 2 ハイライトされた行を削除 +|v_b_I| I 2 ブロックモードの時: ハイライトされた総ての + 行に対し、ハイライト領域の前に同じテキスト + を挿入 +|v_J| J 2 ハイライトされた行を連結 +|v_K| K ハイライト領域に対し 'keywordprg' を実行 +|v_O| O カーソルをハイライト領域の水平方向のもう一 + 方のコーナーに移動する + Q Ex モードに移行しない +|v_R| R 2 ハイライトされた行を削除し、挿入を開始 +|v_S| S 2 ハイライトされた行を削除し、挿入を開始 +|v_U| U 2 ハイライト領域の文字を大文字にする +|v_V| V ビジュアルモードを行指向にする。もしくは行 + 指向であれば、ビジュアルモードを終了する +|v_X| X 2 ハイライトされた行を削除 +|v_Y| Y ハイライトされた行をヤンク +|v_a(| a( ab と同じ。 +|v_a)| a) ab と同じ。 +|v_a<| a< ハイライト領域を < と > で囲まれた領域に拡 + 大する。 +|v_a>| a> a< と同じ。 +|v_aB| aB ハイライト領域を { と } で囲まれた領域に拡 + 大する。 +|v_aW| aW extend highlighted area with "a WORD" +|v_a[| a[ ハイライト領域を [ と ] で囲まれた領域に拡 + 大する。 +|v_a]| a] a[ と同じ。 +|v_ab| ab ハイライト領域を ( と ) で囲まれた領域に拡 + 大する。 +|v_ap| ap ハイライト領域を1段落に拡大する。 +|v_as| as ハイライト領域を1文に拡大する。 +|v_aw| aw extend highlighted area with "a word" +|v_a{| a{ aB と同じ。 +|v_a}| a} aB と同じ。 +|v_c| c 2 ハイライト領域を削除し、挿入開始 +|v_d| d 2 ハイライト領域を削除 +|v_gJ| gJ 2 ハイライトされた行をスペースを挿入せずに連 + 結 +|v_gq| gq 2 ハイライトされた行を整形する +|v_gv| gv 現在のハイライト領域と直前のハイライト領域 + を入れ替える +|v_i(| i( ib と同じ。 +|v_i)| i) ib と同じ。 +|v_i<| i< ハイライト領域を < と > で囲まれた内側の領 + 域に拡大する。 +|v_i>| i> i< と同じ。 +|v_iB| iB ハイライト領域を { と } で囲まれた内側の領 + 域に拡大する。 +|v_iW| iW extend highlighted area with "inner WORD" +|v_i[| i[ ハイライト領域を [ と ] で囲まれた内側の領 + 域に拡大する。 +|v_i]| i] i[ と同じ。 +|v_ib| ib ハイライト領域を ( と ) で囲まれた内側の領 + 域に拡大する。 +|v_ip| ip ハイライト領域を段落の内側の領域に拡大する。 +|v_is| is ハイライト領域を文の内側の領域に拡大する。 +|v_iw| iw extend highlighted area with "inner word" +|v_i{| i{ iB と同じ。 +|v_i}| i} iB と同じ。 +|v_o| o カーソルをハイライト領域の対角方向のもう一 + 方のコーナーに移動する +|v_r| r 2 ハイライト領域を削除し、挿入開始 +|v_s| s 2 ハイライト領域を削除し、挿入開始 +|v_u| u 2 ハイライト領域の文字を小文字にする。 +|v_v| v ビジュアルモードを文字指向とする。もしくは + 文字指向ならばビジュアルモードを終了する。 +|v_x| x 2 ハイライト領域を削除 +|v_y| y ハイライト領域をヤンク +|v_~| ~ 2 ハイライト領域の文字の大文字小文字を変換 + +============================================================================== +4. コマンドライン編集 *ex-edit-index* + +':' や '!', '/', '?' コマンドでコマンドライン入力となる。 +通常の文字はカーソル位置に挿入される。 +以下の説明にある「補完」は、前後関係に依存した補完を行なう。つまり、ファイル名 +やタグ、コマンド等適切な補完が行なわれる。 + + CTRL-@ 未使用 +|c_CTRL-A| CTRL-A カーソルより前のパタンで補完を行い、総ての候補 + を挿入 +|c_CTRL-B| CTRL-B カーソルをコマンドラインの先頭へ移動 +|c_CTRL-C| CTRL-C <ESC> と同じ。 +|c_CTRL-D| CTRL-D カーソルより前のパタンに一致する補完候補をリス + ト表示 +|c_CTRL-E| CTRL-E カーソルをコマンドラインの末尾へ移動 + CTRL-F 未使用 + CTRL-G 未使用 +|c_<BS>| <BS> カーソルの直前の文字を削除 +|c_digraph| {char1} <BS> {char2} + 'digraph' がオンの時、2バイト文字を入力する +|c_CTRL-H| CTRL-H <BS> と同じ。 +|c_<Tab>| <Tab> 'wildchar' が <Tab> の時: カーソルの前のパタンで + 補完を行なう +|c_<S-Tab>| <S-Tab> CTRL-P と同じ。 +|c_wildchar| 'wildchar' カーソルの前のパタンで補完を行なう (デフォルト: + <Tab>) +|c_CTRL-I| CTRL-I <Tab> と同じ。 +|c_<NL>| <NL> <CR> と同じ。 +|c_CTRL-J| CTRL-J <CR> と同じ。 +|c_CTRL-K| CTRL-K {char1} {char2} + 2バイト文字を入力 +|c_CTRL-L| CTRL-L カーソルの前のパタンで補完を行ない、最長一致部 + 分までを挿入 +|c_<CR>| <CR> 入力したコマンドを実行 +|c_<CR>| CTRL-M <CR> と同じ。 +|c_CTRL-N| CTRL-N 'wildchar' を使用して複数の補完候補があるとき: + 次の補完候補を表示 + その他: <Down> と同じ + CTRL-O 未使用 +|c_CTRL-P| CTRL-P 'wildchar' を使用して複数の補完候補があるとき: + 前の補完候補を表示 + その他: <Up> と同じ +|c_CTRL-Q| CTRL-Q CTRL-V と同じ (端末制御で使用) +|c_CTRL-R| CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A} + カーソル位置のオブジェクトまたはレジスタの内容 + をキー入力したかのように挿入 +|c_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A} + カーソル位置のオブジェクトまたはレジスタの内容 + を文字通りに挿入 + CTRL-S (端末制御に使用) +|c_CTRL-U| CTRL-U 総ての文字を削除 +|c_CTRL-V| CTRL-V 続いて入力される数字以外の文字を文字通りに挿入、 + もしくは3桁の十進数を1バイト文字として挿入 +|c_CTRL-W| CTRL-W カーソルより前にある単語を削除 + CTRL-X 未使用 (補完機能のために予約) + CTRL-Y 未使用 + CTRL-Z 未使用 (サスペンド機能のために予約) +|c_<Esc>| <Esc> コマンドラインを実行せずに破棄する +|c_<Esc>| CTRL-[ <Esc> と同じ。 +|c_CTRL-\_CTRL-N| CTRL-\ CTRL-N コマンドラインを破棄して、ノーマルモードへ移行 + CTRL-\ a - z 将来の拡張のために予約 + CTRL-\ others 未使用 + CTRL-] 未使用 + CTRL-^ 未使用 +|c_CTRL-_| CTRL-_ 'allowrevins' がセットされている場合: 入力方式 + を変更 (Hebrew:右から左、Farsi:左から右) +|c_<Del>| <Del> カーソル位置の文字を削除 +|c_<Left>| <Left> カーソルを左へ移動 +|c_<S-Left>| <S-Left> カーソルを1単語左へ移動 +|c_<C-Left>| <C-Left> カーソルを1単語左へ移動 +|c_<Right>| <Right> カーソルを右へ移動 +|c_<S-Right>| <S-Right> カーソルを1単語右へ移動 +|c_<C-Right>| <C-Right> カーソルを1単語右へ移動 +|c_<Up>| <Up> ヒストリの中でカーソルより前のパタンに一致する + 1つ前のコマンドラインを呼び出す +|c_<S-Up>| <S-Up> ヒストリから1つ前のコマンドラインを呼び出す +|c_<Down>| <Down> ヒストリの中でカーソルより前のパタンに一致する + 1つ次のコマンドラインを呼び出す +|c_<S-Down>| <S-Down> ヒストリから1つ次のコマンドラインを呼び出す +|c_<Home>| <Home> カーソルをコマンドラインの先頭へ移動 +|c_<End>| <End> カーソルをコマンドラインの末尾へ移動 +|c_<PageDown>| <PageDown> <S-Down> と同じ。 +|c_<PageUp>| <PageUp> <S-Up> と同じ。 +|c_<Insert>| <Insert> 挿入モード/上書きモードを変更 +|c_<LeftMouse>| <LeftMouse> カーソルをマウスクリック位置へ移動 + +============================================================================== +5. EX コマンド *ex-cmd-index* + +以下に簡単ではあるが総ての ":" コマンドを列挙し説明した。ただし、引数についての +説明はしていない。コマンド名で省略可能な部分を [] で囲った。コマンドはコマンド +名のうち省略できない部分を対象としてソートをした。 + +|:!| :! 行をフィルタにかける、または、外部コマンドを実 + 行する +|:!!| :!! 最後に実行した ":!" コマンドを繰り返す +|:#| :# ":number" と同じ。 +|:&| :& 最後に実行した ":substitute" を繰り返す +|:star| :* レジスタの内容を実行する +|:<| :< 'shiftwidth' 1つ分だけ行を左へシフト +|:=| := カーソルのある行の行番号を表示 +|:>| :> 'shiftwidth' 1つ分だけ行を右へシフト +|:@| :@ レジスタの内容を実行 +|:@@| :@@ 直前の ":@" を繰り返す +|:Next| :N[ext] 引数リス途中の1つ前のファイルを編集 +|:Print| :P[rint] 行を表示する +|:X| :X ask for encryption key +|:append| :a[ppend] テキストを追加する +|:abbreviate| :ab[breviate] enter abbreviation +|:abclear| :abc[lear] remove all abbreviations +|:all| :al[l] 引数リストの全ファイルをウィンドウ作成して表示 +|:amenu| :am[enu] 総てのモードに対してメニュー項目を追加 +|:anoremenu| :an[oremenu] 総てのモードに対してリマップされないメニュー項 + 目を追加 +|:args| :ar[gs] 引数リストを表示 +|:argument| :argu[ment] 引数リスト中の特定のファイルを編集 +|:ascii| :as[cii] カーソル位置の文字のアスキーコードを表示 +|:autocmd| :au[tocmd] オートコマンドの入力と表示 +|:augroup| :aug[roup] 使用するオートコマンドグループの選択と表示 +|:aunmenu| :aun[menu] 総てのモードに対してメニュー項目を削除 +|:buffer| :b[uffer] バッファリス途中の特定のバッファを編集 +|:bNext| :bN[ext] バッファリスト中の次のバッファを編集 +|:ball| :ba[ll] バッファリスト中の各ファイルに対しウィンドウを + 作成して表示 +|:badd| :bad[d] バッファリストにファイルを追加 +|:bdelete| :bd[elete] バッファリストから特定のファイルを削除 +|:behave| :be[have] set mouse and selection behavior + 目を追加 +|:blast| :bl[ast] バッファリスト中の最後のバッファを編集 +|:bmodified| :bm[odified] バッファリスト中の次の編集中のファイルを編集 +|:bnext| :bn[ext] バッファリスト中の次のバッファを編集 +|:bprevious| :bp[revious] バッファリスト中の前のバッファを編集 +|:brewind| :br[ewind] バッファリスト中の先頭のバッファを編集 +|:break| :brea[k] while ループを抜ける +|:browse| :bro[wse] ファイル選択ダイアログをポップアップする +|:buffers| :buffers バッファリストのファイル名をリスト表示 +|:bunload| :bun[load] 指定のバッファをアンロード +|:change| :c[hange] 1行または連続する複数行を上書きする +|:cNext| :cN[ext] 直前のエラーへジャンプ +|:cabbrev| :ca[bbrev] コマンドラインモードを対象とする ":abbreviate" + コマンド +|:cabclear| :cabc[lear] コマンドラインモードにおける総ての + abbrebiation を削除 +|:call| :cal[l] 関数をコール +|:cc| :cc 指定のエラーへジャンプ +|:cd| :cd ディレクトリの移動 +|:center| :ce[nter] 行を中央寄せに整形 +|:cfile| :cf[ile] read the file with error messages +|:change| :ch[ange] 行を削除し、テキストを挿入 +|:chdir| :chd[ir] ディレクトリの移動 +|:checkpath| :che[ckpath] インクルードファイルをリスト表示 +|:clist| :cl[ist] 総てのエラーをリスト表示 +|:clast| :cla[st] 指定のエラーへジャンプ、デフォルトは最後のエラー +|:close| :clo[se] カレントウィンドウを閉じる +|:cmap| :cm[ap] コマンドラインモードを対象とする ":map" コマン + ド +|:cmapclear| :cmapc[lear] コマンドラインモードの総てのマッピングを削除 +|:cmenu| :cme[nu] コマンドラインモードのメニューを追加 +|:cnext| :cn[ext] 次のエラーへジャンプ +|:cnewer| :cnew[er] go to newer error list +|:cnfile| :cnf[ile] 次のファイルの先頭エラーへジャンプ +|:cnoremap| :cno[remap] コマンドラインモードを対象とする ":noremap" コ + マンド +|:cnoreabbrev| :cnorea[bbrev] コマンドラインモードを対象とする ":noreabbrev" + コマンド +|:cnoremenu| :cnoreme[nu] コマンドラインモードを対象とする ":noremenu" + コマンド +|:copy| :co[py] 行のコピー +|:colder| :col[der] go to older error list +|:command| :com[mand] ユーザ定義コマンドの作成 +|:comclear| :comc[lear] 総てのユーザ定義コマンドの削除 +|:continue| :con[tinue] :while に戻って実行を続ける +|:confirm| :conf[irm] prompt user when confirmation required +|:cprevious| :cp[revious] 直前のエラーへジャンプ +|:cquit| :cq[uit] quit Vim with an error code +|:crewind| :cr[ewind] 指定のエラーへジャンプ、デフォルトは先頭のエラー +|:cscope| :cs[cope] cscope コマンドを実行 +|:cstag| :cst[ag] use cscope to jump to a tag +|:cunmap| :cu[nmap] コマンドラインモードを対象とする ":unmap" コマ + ンド +|:cunabbrev| :cuna[bbrev] コマンドラインモードを対象とする ":unabbrev" + コマンド +|:cunmenu| :cunme[nu] コマンドラインモードのメニューを削除 +|:delete| :d[elete] 行を削除 +|:delcommand| :delc[ommand] ユーザ定義コマンドの削除 +|:delfunction| :delf[unction] ユーザ定義ファンクションの削除 +|:display| :di[splay] レジスタの内容を表示 +|:digraphs| :dig[raphs] 2バイト文字の入力または表示 +|:djump| :dj[ump] #define へジャンプ +|:dlist| :dl[ist] #define をリスト表示 +|:doautocmd| :do[autocmd] カレントバッファに対しオートコマンドを適用する +|:doautoall| :doautoa[ll] ロードされているバッファ総てにオートコマンドを + 適用する +|:dsearch| :ds[earch] list one #define +|:dsplit| :dsp[lit] ウィンドウを分割し #define へジャンプ +|:edit| :e[dit] ファイルの編集 +|:echo| :ec[ho] 式の結果を表示する +|:echohl| :echoh[l] set highlighting for echo commands +|:echon| :echon :echo と同じ、ただし <EOL> を表示しない +|:else| :el[se] :if コマンドと一緒に使用する +|:elseif| :elsei[f] :if コマンドと一緒に使用する +|:emenu| :em[enu] 名前でメニューを実行 +|:endif| :en[dif] 直前の :if の終了 +|:endfunction| :endf[unction] ユーザファンクションの終了 +|:endwhile| :endw[hile] 直前の :while の終了 +|:ex| :ex ":edit" と同じ。 +|:execute| :exe[cute] 式の結果を実行する +|:exit| :exi[t] ":xit" と同じ。 +|:file| :f[ile] カレントファイル名の設定または表示 +|:files| :files バッファリスト中の全ファイルをリスト表示 +|:filetype| :filet[ype] ファイルタイプ検出の on/off 切換 +|:find| :fin[d] 'path' の中からファイルを検索し、編集する +|:fixdel| :fix[del] <Del> のキーコードを設定 +|:function| :fu[nction] ユーザファンクションを定義 +|:global| :g[lobal] execute commands for matching lines +|:goto| :go[to] バッファ内の指定したバイト数の場所へジャンプ +|:grep| :gr[ep] 'grepprg' を実行し、最初にマッチした位置へジャ + ンプ +|:gui| :gu[i] GUI をスタートする +|:gvim| :gv[im] GUI をスタートする +|:help| :h[elp] ヘルプウィンドウを表示 +|:helpfind| :helpf[ind] ヘルプのキーワードを入力するためのダイアログを + ポップアップする +|:highlight| :hi[ghlight] ハイライトルールを指定する +|:hide| :hid[e] hide current buffer for a command +|:history| :his[tory] コマンドのヒストリを表示 +|:insert| :i[nsert] テキストを挿入 +|:iabbrev| :ia[bbrev] 挿入モードを対象とする ":abbrev" コマンド +|:iabclear| :iabc[lear] 挿入モードを対象とする ":abclear" コマンド +|:if| :if 条件が成立した場合にコマンド群を実行 +|:ijump| :ij[ump] 識別子の定義へジャンプ +|:ilist| :il[ist] 識別子に一致した総ての行をリスト表示 +|:imap| :im[ap] 挿入モードを対象とした ":map" コマンド +|:imapclear| :imapc[lear] 挿入モードを対象とした ":mapclear" コマンド +|:imenu| :ime[nu] 挿入モードを対象にメニュー追加 +|:inoremap| :ino[remap] 挿入モードを対象とした ":noremap" コマンド +|:inoreabbrev| :inorea[bbrev] 挿入モードを対象とした ":noreabbrev" コマンド +|:inoremenu| :inoreme[nu] 挿入モードを対象とした ":noremenu" コマンド +|:intro| :int[ro] 起動直後のメッセージを表示 +|:isearch| :is[earch] 識別子と一致した最初の行を表示 +|:isplit| :isp[lit] ウィンドウを分割し、識別子の定義へジャンプ +|:iunmap| :iu[nmap] 挿入モードを対象とした ":unmap" コマンド +|:iunabbrev| :iuna[bbrev] 挿入モードを対象とした ":unabbrev" コマンド +|:iunmenu| :iunme[nu] 挿入モードを対象にメニュー削除 +|:join| :j[oin] 行の結合 +|:jumps| :ju[mps] ジャンプリストの表示 +|:k| :k マークを設定 +|:list| :l[ist] 行を表示 +|:last| :la[st] 引数リスト中の最後のファイルを編集 +|:left| :le[ft] 行を左寄せ +|:let| :let 変数またはオプションに値を設定する +|:ls| :ls 総てのバッファを表示 +|:move| :m[ove] 行を移動する +|:mark| :ma[rk] マークを設定 +|:make| :mak[e] execute external command 'makeprg' and parse + error messages +|:map| :map マッピングの設定または表示 +|:mapclear| :mapc[lear] ノーマルモードとビジュアルモードを対象にマッピ + ングをクリア +|:marks| :marks 総てのマークを表示 +|:menu| :me[nu] 新しいメニュー項目を追加 +|:messages| :mes[sages] 直前に表示されたメッセージの表示 +|:mkexrc| :mk[exrc] 現在のマッピングと設定をファイルに書き出す +|:mksession| :mks[ession] session情報をファイルに書き出す +|:mkvimrc| :mkv[imrc] 現在のマッピングと設定をファイルに書き出す +|:mode| :mod[e] スクリーンモードを表示または変更する +|:next| :n[ext] 引数リスト中の次のファイルを読み込む +|:new| :new 新規に空のウィンドウを作成する +|:nmap| :nm[ap] ノーマルモードを対象とする ":map" コマンド +|:nmapclear| :nmapc[lear] ノーマルモードの総てのマッピングを消去する +|:nmenu| :nme[nu] ノーマルモードのメニューを追加する +|:nnoremap| :nn[oremap] ノーマルモードを対象とする ":noremap" コマンド +|:nnoremenu| :nnoreme[nu] ノーマルモードを対象とする ":noremenu" コマン + ド +|: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 + remapped +|:noremenu| :noreme[nu] enter a menu that will not be remapped +|:normal| :norm[al] ノーマルモードのコマンドを実行する +|:number| :nu[mber] 行番号を表示 +|:nunmap| :nun[map] ノーマルモードを対象とする ":unmap" コマンド +|:nunmenu| :nunme[nu] ノーマルモードのメニューを削除 +|:open| :o[pen] open(Operator-pending?)モードを開始(未実装) +|:omap| :om[ap] Operator-pending モードを対象とする ":map" + コマンド +|:omapclear| :omapc[lear] Operator-pending モードのマッピングを総て削除 +|:omenu| :ome[nu] Operator-pending モードのメニューを追加 +|:only| :on[ly] カレントウィンドウ以外のウィンドウを総て閉じる +|:onoremap| :ono[remap] Operator-pending モードを対象とする ":noremap" + コマンド +|:onoremenu| :onoreme[nu] Operator-pending モードを対象とする + ":noremenu" コマンド +|:options| :opt[ions] オプションウィンドウを開く +|:ounmap| :ou[nmap] Operator-pending モードを対象とした ":unmap" + コマンド +|:ounmenu| :ounme[nu] Operator-pending モードのメニューを削除 +|:print| :p[rint] 行単位で印刷する +|:pclose| :pc[lose] プレビューウィンドウを閉じる +|:perl| :pe[rl] Perl コマンドを実行 +|:perldo| :perld[o] 1行ずつ Perl コマンドを実行 +|:pop| :po[p] タグスタックの1つ古いエントリへジャンプ +|:ppop| :pp[op] プレビューウィンドウで ":pop" を実行 +|:preserve| :pre[serve] 総てのテキストを swap ファイルに書き出す +|:previous| :prev[ious] 引数リスト中の前のファイルを読み込む +|:promptfind| :pro[mptfind] 検索ダイアログを開く +|:promptrepl| :promptr[epl] 検索/置換ダイアログを開く +|:ptag| :pt[ag] プレビューウィンドウにタグを表示 +|:ptNext| :ptN[ext] プレビューウィンドウで |:tNext| を実行 +|:ptjump| :ptj[ump] プレビューウィンドウで |:tjump| を実行、タグを + 表示 +|:ptlast| :ptl[ast] プレビューウィンドウで |:tlast| を実行 +|:ptnext| :ptn[ext] プレビューウィンドウで |:tnext| を実行 +|:ptprevious| :ptp[revious] プレビューウィンドウで |:tprevious| を実行 +|:ptrewind| :ptr[ewind] プレビューウィンドウで |:trewind| を実行 +|:ptselect| :pts[elect] プレビューウィンドウで |:tselect| を実行、タグ + を表示 +|:put| :pu[t] テキストにレジスタの内容を挿入 +|:pwd| :pw[d] カレントディレクトリを表示 +|:python| :py[thon] Python コマンドを実行 +|:pyfile| :pyf[ile] Python スクリプトファイルを実行 +|:quit| :q[uit] カレントウィンドウを終了、または Vim を終了 +|:qall| :qa[ll] Vim を終了 +|:read| :r[ead] テキストにファイルを挿入 +|:recover| :rec[over] swap ファイルからファイルを復元 +|:redo| :red[o] 1回のアンドゥをリドゥする +|:redir| :redi[r] ファイルまたはレジスタにメッセージをリダイレク + トする +|:registers| :reg[isters] レジスタの内容を表示 +|:resize| :res[ize] カレントウィンドウの高さを変更 +|:retab| :ret[ab] タブの大きさを変更 +|:return| :retu[rn] ユーザファンクションからリターンする +|:rewind| :rew[ind] 引数リスト中の先頭のファイルを読み込む +|:right| :ri[ght] right align text +|:rviminfo| :rv[iminfo] viminfo ファイルを読み込む +|:substitute| :s[ubstitute] テキストの置換 +|:sNext| :sN[ext] ウィンドウを分割して、引数リスト中の次のファイ + ルを読み込む +|:sargument| :sa[rgument] ウィンドウを分割して、引数リスト中の指定ファイ + ルを読み込む +|:sall| :sal[l] 引数リスト中の各ファイルをウィンドウを開いて読 + み込む +|:sbuffer| :sb[uffer] ウィンドウを分割して、バッファリスト中の指定ファ + イルを読み込む +|:sbNext| :sbN[ext] ウィンドウを分割して、バッファリスト中の前のファ + イルを読み込む +|:sball| :sba[ll] バッファリスト中の各ファイルをウィンドウを開い + て読み込む +|:sblast| :sbl[ast] ウィンドウを分割して、バッファリスト中の最後の + ファイルを読み込む +|:sbmodified| :sbm[odified] ウィンドウを分割して、バッファリスト中の編集 + 中のファイルを読み込む +|:sbnext| :sbn[ext] ウィンドウを分割して、バッファリスト中の次の + ファイルを読み込む +|:sbprevious| :sbp[revious] ウィンドウを分割して、バッファリスト中の前の + ファイルを読み込む +|:sbrewind| :sbr[ewind] ウィンドウを分割して、バッファリスト中の最初の + ファイルを読み込む +|:set| :se[t] オプションを表示または設定する +|:sfind| :sf[ind] ウィンドウを分割して、'path' にあるファイルを + 編集する +|:shell| :sh[ell] escape to a shell +|:simalt| :si[malt] Win32 GUI: Windows ALT キーをシミュレートする +|:sleep| :sl[eep] 数秒間なにもしない +|:slast| :sla[st] ウィンドウを分割して、引数リスト中の最後の + ファイルを読み込む +|:smagic| :sm[agic] 'magic' オプションの下で :substitute を実行 +|:snext| :sn[ext] ウィンドウを分割して、引数リスト中の次の + ファイルを読み込む +|:sniff| :sni[ff] send request to sniff +|:snomagic| :sno[magic] 'nomagic' オプションの下で :substitute を実行 +|:source| :so[urce] Vim or Ex コマンドをファイルから読み込む +|:split| :sp[lit] カレントウィンドウを分割 +|:sprevious| :spr[evious] ウィンドウを分割して、引数リスト中の前の + ファイルを読み込む +|:srewind| :sr[ewind] ウィンドウを分割して、引数リスト中の最初の + ファイルを読み込む +|:stop| :st[op] suspend the editor or escape to a shell +|:stag| :sta[g] ウィンドウを分割して、タグへジャンプする +|:startinsert| :star[tinsert] 挿入モードを開始する +|:stjump| :stj[ump] ウィンドウを分割して、":tjump" を実行 +|:stselect| :sts[elect] ウィンドウを分割して、":tselect" を実行 +|:sunhide| :sun[hide] ":unhide" と同じ。 +|:suspend| :sus[pend] ":stop" と同じ。 +|:sview| :sv[iew] ウィンドウを分割して、ファイルをリードオン + リーで開く +|:swapname| :sw[apname] 現在の swap ファイル名を表示 +|:syntax| :sy[ntax] 構文強調表示 (syntax highlighting) +|:syncbind| :sync[bind] sync scroll binding +|:t| :t ":copy" と同じ。 +|:tNext| :tN[ext] 後方へ検索し一致したタグ位置へジャンプ +|:tag| :ta[g] タグを検索しジャンプする +|:tags| :tags タグスタックの内容を表示 +|:tcl| :tc[l] Tcl コマンドを実行 +|:tcldo| :tcld[o] 各行の Tcl コマンドを実行 +|:tclfile| :tclf[ile] Tcl スクリプトファイルを実行 +|:tearoff| :te[aroff] メニューを tear-off する +|:tjump| :tj[ump] ":tselect" と同様、ただし一致したタグが1つし + かない場合、その場所へジャンプ +|:tlast| :tl[ast] 直前に一致したタグ位置へジャンプ +|:tmenu| :tm[enu] tooltip メニューを定義する +|:tnext| :tn[ext] タグを前方検索し、ジャンプ +|:tprevious| :tp[revious] タグを後方検索し、ジャンプ +|:trewind| :tr[ewind] 最初に一致したタグ位置へジャンプ +|:tselect| :ts[elect] 一致したタグをリスト表示し、ジャンプ先のタグ + を選択 +|:tunmenu| :tu[nmenu] tooltip メニューを削除 +|:undo| :u[ndo] 最後の変更を取り消す +|:unabbreviate| :una[bbreviate] abbreviation を削除 +|:unhide| :unh[ide] open a window for each loaded file in the + buffer list +|:unlet| :unl[et] 変数を削除 +|:unmap| :unm[ap] マッピングを削除 +|:unmenu| :unme[nu] メニューを削除 +|:update| :up[date] バッファ内容が変更されていれば、ファイルに書 + き出す +|:vglobal| :v[global] execute commands for not matching lines +|:version| :ve[rsion] バージョン番号その他の情報を表示 +|:visual| :vi[sual] ":edit" と同じ、ただし "Ex" モードから抜ける。 +|:view| :vie[w] リードオンリーでファイルを開く +|:vmap| :vm[ap] ビジュアルモードを対象とする ":map" コマンド +|:vmapclear| :vmapc[lear] ビジュアルモードのマッピングをすべて削除 +|:vmenu| :vme[nu] ビジュアルモードのメニューを追加 +|:vnoremap| :vn[oremap] ビジュアルモードを対象とする ":noremap" + コマンド +|:vnoremenu| :vnoreme[nu] ビジュアルモードを対象とする ":noremenu" + コマンド +|:vunmap| :vu[nmap] ビジュアルモードを対象とする ":unmap" コマン + ド +|:vunmenu| :vunme[nu] ビジュアルモードのメニューを削除 +|:write| :w[rite] ファイルに保存 +|:wNext| :wN[ext] ファイルに保存して、引数リストの直前のファイ + ルを編集 +|:wall| :wa[ll] (変更した)すべてのバッファを保存 +|:while| :wh[ile] 与えた条件を満足している限りループする +|:winsize| :wi[nsize] ウィンドウサイズを取得もしくはセットする(古 + いコマンド) +|:winpos| :winp[os] ウィンドウの位置を取得もしくはセットする +|:wnext| :wn[ext] ファイルに保存して、引数リストの次のファイル + を編集 +|:wprevious| :wp[revious] ファイルに保存して、引数リストの直前のファイ + ルを編集 +|:wq| :wq ファイルに保存して、ウィンドウもしくは Vim を終 + 了 +|:wqall| :wqa[ll] すべての編集されたバッファを保存し、Vim を終 + 了 +|:wviminfo| :wv[iminfo] viminfo ファイルに保存 +|:xit| :x[it] バッファが編集されていたら保存し、ウィンドウ + もしくは Vim を終了 +|:xall| :xa[ll] ":wqall" と同じ。 +|:yank| :y[ank] 行をレジスタへヤンク +|:z| :z 行を表示 +|:~| :~ 直前に実行した ":substitute" を実行 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_dos.jax b/ja/os_dos.jax new file mode 100644 index 000000000..4e4f07d70 --- /dev/null +++ b/ja/os_dos.jax @@ -0,0 +1,299 @@ +COMMENT: OS特有情報:MS-DOSとWindows +STATUS: finished 6.3.054 +TRANSLATOR: 首藤博昭(Noiz) +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*os_dos.txt* For Vim version 6.3. Last change: 2003 Dec 20 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *dos* *DOS* +このファイルはMS-DOSおよびWin32バージョンのVimに共通の特殊事項をまとめる。 +|os_win32.txt|や|os_msdos.txt|も参照すること。 + +1. ファイルの位置 |dos-locations| +2. バックスラッシュを使う |dos-backslash| +3. 標準マッピング |dos-standard-mappings| +4. 画面出力と色 |dos-colors| +5. ファイルの書式 |dos-file-formats| +6. :cdコマンド |dos-:cd| +7. 中断 |dos-CTRL-Break| +8. 一時ファイル |dos-temp-files| +9. 標準のシェルオプション |dos-shell| + +============================================================================== +1. ファイルの位置 *dos-locations* + +Vimの実行ファイルと同じディレクトリに、ヘルプおよび構文のサブディレクトリがあ +るならば、特に何もする必要はない。レジストリや環境変数も設定する必要はない。た +だVimのディレクトリが検索パスに含まれるか、デスクトップ上のショートカットを利 +用するだけでよい。 + +vimrcファイル("_vimrc"と"_gvimrc")は通常、ランタイムファイルがあるディレクトリ +の1つ上のディレクトリに置かれる。もしどこか違う場所に置きたいならば、環境変数 +$VIMにそのディレクトリを設定する。例: > + set VIM=C:\user\piet +これは"c:\user\piet\_vimrc"を見つけるだろう。 +Note: これはコンピュータを複数人で使う時のために用意されている。 + 普通はデフォルトの場所に _vimrc ファイルを置いてください。 + +実行ファイルを別の場所に移動したい場合は、環境変数$VIMを設定する必要がある。ラ +ンタイムファイルは"$VIM/vim{version}"から見つけられる。例: > + set VIM=E:\vim +これはバージョン5.4のランタイムファイルを"e:\vim\vim54"から見つけるだろう。 +Note: これは推奨しません。ランタイムディレクトリに実行ファイルを入れておくこと + をお勧めします。 + +実行ファイルを移動し、「かつ」"_vimrc"と"_gvimrc"を他の場所に置きたい場合は、 +$VIMにvimrcファイルの場所を、$VIMRUNTIMEにランタイムファイルの場所を設定する。 +例: > + set VIM=C:\usr\piet + set VIMRUNTIME=E:\vim\vim54 +これは"c:\user\piet\_vimrc"ファイルと"e:\vim\vim54"にあるランタイムファイルを +見つけるだろう。 + +さらに情報が欲しいときは|$VIM|と|$VIMRUNTIME|を参照すること。 + +Windows 95では、$VIMをC:\autoexec.batファイルに設定できる。例: > + set VIM=D:\vim +Windows NTでは、環境変数をユーザごとに別々に設定することができる。"スタート/設 +定/コントロールパネル->システム"、もしくは"マイ コンピュータ"のプロパティを通 +して、環境変数のタブに行く。 + +============================================================================== +2. バックスラッシュを使う *dos-backslash* + +ファイル名にバックスラッシュを使うことは問題となり得る。Viではいくつかのコマン +ドにおいて、バックスラッシュの数を半分にする。Vimはもう少し寛大で、ファイル名 +からバックスラッシュを取り除かないので、":e c:\foo\bar"は期待通りに機能する。 +しかしバックスラッシュが特別な文字(スペース、カンマ、バックスラッシュなど)の前 +に現れた場合は、Vimはバックスラッシュを取り除く。問題を避けるにはスラッシュを +使用する: ":e c:/foo/bar"はうまく機能する。MS-DOSプログラムやWin32プログラムの +なかにはこれが問題となるものもあるので、Vimは問題を避けるために内部でスラッシュ +をバックスラッシュに置き換える。 + +スラッシュを使うのを好むのなら、'shellslash'オプションを設定する。するとVimは +ファイル名を展開するときにバックスラッシュをスラッシュに置き換える。これは +Unix-likeの'shell'を使用しているときに特に有用である。 + +============================================================================== +3. 標準マッピング *dos-standard-mappings* + +CTRL-PageUp 画面上の先頭行にカーソルを移動する *<C-PageUp>* +CTRL-PageDown 画面上の最終行、最後の文字にカーソルを移動する *<C-PageDown>* + +以下のマッピングは同様の目的を果たす: + +キー キーコード Normal/Visualモード 挿入モード ~ +CTRL-PageUp <M-N><M-C-D> H <C-O>H +CTRL-PageDown <M-N>v L$ <C-O>L<C-O>$ + +さらに、次のキーがコピー/切り取り/貼り付けに利用できる。Win32とDJGPPバージョン +でのみ、これらはクリップボードを使用する。 + +Shift-Insert テキストを貼り付ける(クリップボードから) *<S-Insert>* + *<C-Insert>* +CTRL-Insert Visualモードでテキストをコピーする(クリップボードに) + *<C-Del>* +CTRL-Del Visualモードでテキストを切り取る(クリップボードに) + *<S-Del>* +Shift-Del Visualモードでテキストを切り取る(クリップボードに) + +以下のマッピングは同様の目的を果たす(VimのWin32とDJGPPバージョン): + +キー キーコード Normal Visual 挿入モード ~ +Shift-Insert <M-N><M-T> "*P "-d"*P <C-R><C-O>* +CTRL-Insert <M-N><M-U> "*y +Shift-Del <M-N><M-W> "*d +CTRL-Del <M-N><M-X> "*d + +もしくは次のマッピング(VimのWin32ではないバージョン): + +キー キーコード Normal Visual 挿入モード ~ +Shift-Insert <M-N><M-T> P d"0P <C-R><C-O>" +CTRL-Insert <M-N><M-U> y +Shift-Del <M-N><M-W> d +CTRL-Del <M-N><M-X> d + +クリップボードがサポートされているときは、レジスタの "* が使える。 + +============================================================================== +4. 画面出力と色 *dos-colors* + +画面出力の方法は、標準ではbiosコールを使用する。これはたいていのシステムで直ち +に機能する。ansi.sysは必要ない。現在の画面モードを設定するには":mode"を使う。 +|:mode|を参照すること。 + +Vimが使用する画面の色を変更するには|:highlight|コマンドを使用する。 Normal強調 +表示グループはVimが普通のテキストに使う色を特定する。例えば、背景色が青で文字 +色が灰色にするには: > + :hi Normal ctermbg=Blue ctermfg=grey +他に利用できるグループについては|highlight-groups|を参照すること。 + +DOSコンソールは太字や下線のような属性をサポートしていない。5つのモードで使用す +る色は9つのtermcapオプションで設定できる。":highlight"コマンドによって直接色を +設定した場合には必要ないので注意すること; これらのオプションは古いバージョンの +Vimに互換性がある。 |'highlight'|オプションは5つのモードがどの操作のときに使用 +されるかを特定する。 > + + :set t_mr=^V^[\|xxm 反転モードの開始 + :set t_md=^V^[\|xxm 太字モードの開始 + :set t_me=^V^[\|xxm 普通のテキストに戻る + + :set t_so=^V^[\|xxm standoutモードの開始 + :set t_se=^V^[\|xxm 普通のテキストに戻る + + :set t_us=^V^[\|xxm 下線モードの開始 + :set t_ue=^V^[\|xxm 普通のテキストに戻る + + :set t_ZH=^V^[\|xxm 斜字モードの開始 + :set t_ZR=^V^[\|xxm 普通のテキストに戻る + +^VはCTRL-V +^[は<Esc> +xxは前景色と背景色の数字を足した10進数の数値に置き換える: + +色 前景色 背景色 ~ +Black 0 0 +DarkBlue 1 16 +DarkGreen 2 32 +DarkCyan 3 48 +DarkRed 4 64 +DarkMagenta 5 80 +Brown, DarkYellow 6 96 +LightGray 7 112 +DarkGray 8 128 * +Blue, LightBlue 9 144 * +Green, LightGreen 10 160 * +Cyan, LightCyan 11 176 * +Red, LightRed 12 192 * +Magenta, LightMagenta 13 208 * +Yellow, LightYellow 14 224 * +White 15 240 * + +* ディスプレイモードによっては128以上の色コードは利用できず、コード128は文字を + 点滅させるだろう。 + +0を使用した場合は、Vimの開始時の色にリセットされる(普通は7で背景色が黒、文字色 +が淡い灰色であるが、これは上書きできる。もしコマンドプロンプトから標準色を上書 +きした場合は、vimrc内の強調表示色をいくつか調整する必要があるかもしれない---下 +を参照)。 +これがt_meのデフォルトである。 + +それぞれの強調表示モードの標準: + t_mr 112 反転モード: 文字色Black(0)、背景色LightGray(112) + t_md 15 太字モード: 文字色White(15)、背景色Black(0) + t_me 0 通常モード(標準に戻る) + + t_so 31 standoutモード: 文字色White(15)、背景色DarkBlue(16) + t_se 0 standoutモードの終了(標準に戻る) + + t_czh 225 斜字モード: 文字色DarkBlue(1)、背景色Yellow(224) + t_czr 0 斜字モードの終了(標準に戻る) + + t_us 67 下線モード: 文字色DarkCyan(3)、背景色DarkRed(64) + t_ue 0 下線モードの終了(標準に戻る) + +これらは反転表示でも良く見えるようために選ばれているが、好みで変更してよい。 + +例: > + :set t_mr=^V^[\|97m " 反転モードの開始: DarkBlue (1) on Brown (96) + :set t_md=^V^[\|67m " 太字モードの開始: DarkCyan (3) on DarkRed (64) + :set t_me=^V^[\|112m " ノーマルモードに戻る: Black (0) on LightGray (112) + + :set t_so=^V^[\|37m " standoutモードの開始: DarkMagenta (5) on DarkGreen + (32) + :set t_se=^V^[\|112m " ノーマルモードに戻る: Black (0) on LightGray (112) + +============================================================================== +5. ファイルの書式 *dos-file-formats* + +'fileformat'オプションに"dos"が設定されている場合(標準)、Vimは<NL>と<CR><NL>を +end-of-line (<EOL>)として認識する。ファイルを保存したときは、Vimは<CR><NL>を使 +用する。このため、ファイルを編集して保存した場合は、Vimは<NL>を<CR><NL>で置き +換える。 + +'fileformat'オプションが"unix"であるならば、Vimは<NL>を<EOL>として使用し、<CR> +を^Mと表示する。 + +Vimはどんなモードで読み込んでもDosモードで保存する(":se ff=dos")ことによって、 +<NL>を<CR><NL>に置き換えることができる。 +VimはDosモードで読み込み、Unixモードで保存する(":se ff=unix")ことによって、 +<CR><NL>を<NL>に置き換えることができる。 + +Vimは'fileformats'が設定されている(標準)ときには自動的に'fileformat'を設定する +ので、あなたがしていることについて全く悩む必要がない。 + |'fileformat'| |'fileformats'| + +スクリプトファイルやバイナリファイルを編集したいのならば、ファイルを読み込む前 +に'binary'オプションを設定するとよい。スクリプトファイルやバイナリファイルは +<NL>を含んでいて、Vimによって<CR><NL>に置き換えられてしまうかもしれない。 Vim +の起動時に"-b"(binary)オプションをつけることによって、自動的に'binary'を設定す +ることができる。 + +============================================================================== +6. :cdコマンド *dos-:cd* + +":cd"コマンドはドライブレターを認識し、カレントドライブを変更する。Cドライブに +するには":cd c:"とする。Dドライブの"foo"ディレクトリに移動するには":cd d:\foo" +とする。もしシステムがサポートしているならば、VimはUNC名も認識する; 例えば、 +":cd \\server\share\dir"。|:cd| + +============================================================================== +7. 中断 *dos-CTRL-Break* + +検索を中断するにはCTRL-Cの代わりにCTRL-Breakを使用する。Vimはキーを読み終える +までCTRL-Cを検知しない。 + +============================================================================== +8. 一時ファイル *dos-temp-files* + +16ビットもしくは32ビットのDOSのみ: +Vimは以下のリストの順番で、ディレクトリが存在し、かつVimがファイルを生成できる +最初のディレクトリに一時ファイル(フィルタ用)を置く: + $TMP + $TEMP + C:\TMP + C:\TEMP + 現在のディレクトリ + +Win32バージョン(コンソール、GUIともに): +Vimは標準的なWindows関数を使って一時ファイル名(フィルタ用)を取得する。以下のリ +ストの順番で、ディレクトリが存在し、かつVimがファイルを生成できる最初のディレ +クトリが使用される: + $TMP + $TEMP + 現在のディレクトリ + +============================================================================== +9. 標準のシェルオプション *dos-shell* + +'sh'('shell')オプションはWindows 95では"command.com"、Windows NTでは"cmd.exe" +が標準で設定されている。VimはSHELLが定義されている場合はSHELLを、SHELLが定義さ +れていない状態でCOMSPECが定義されている場合はCOMSPECを代わりに使用する。Vimは +外部コマンドを"<shell> /c <command_name>"として起動する。新しいコマンドシェルを +起動するにはCTRL-Zをタイプする。"exit"でVimに戻る。 |'shell'| |CTRL-Z| + +サードパーティのシェルを使用する場合は、|'shellcmdflag'| ('shcf')と +|'shellquote'| ('shq')か|'shellxquote'| ('sxq')オプションを設定する必要がある +かもしれない。不幸なことに、これは使っているVimのバージョンに依存する。例えば、 +MKS Kornシェルやbashでは、オプションの値を以下のようになる: + + DOS 16ビット DOS 32ビット Win32 ~ +'shellcmdflag' -c -c -c +'shellquote' " +'shellxquote' " + +Dos 16ビットの例は次のようにシェルを起動する: + <shell> -c "command name" >file +Win32の例: + <shell> -c "command name >file" +DOS 32ビットでは、DJGPPが内部的にどうにかして処理する。 + +起動時にVimは"sh"が'shell'オプション内のどこにあるかをチェックする。存在するな +らば、Vimは'shellcmdflag'と'shellquote'または'shellxquote'オプションを上記のよ +うに設定するだろう。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_msdos.jax b/ja/os_msdos.jax new file mode 100644 index 000000000..136b9344e --- /dev/null +++ b/ja/os_msdos.jax @@ -0,0 +1,270 @@ +COMMENT: OS特有情報:MS-DOS +STATUS: finished 6.3.054 +TRANSLATOR: 首藤博昭(Noiz) +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*os_msdos.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *msdos* *ms-dos* *MSDOS* *MS-DOS* +このファイルはVimのMS-DOSバージョンに関する特記事項を記述する。 + +1. MS-DOS向けの2つのバージョン |msdos-versions| +2. 既知の問題 |msdos-problems| +3. 長いファイル名 |msdos-longfname| +4. Termcapコード |msdos-termcap| +5. シフトされた矢印キー |msdos-arrows| +6. ファイル拡張子 |msdos-fname-extensions| +7. メモリ利用と制限 |msdos-limitations| +8. シンボリックリンクファイル |msdos-linked-files| +9. dosでのコピー/貼り付け |msdos-copy-paste| + +さらにWin32とDOSで共通の項目がいくつかある: +ファイルの位置 |dos-locations| +バックスラッシュを使う |dos-backslash| +標準マッピング |dos-standard-mappings| +画面出力と色 |dos-colors| +ファイルの書式 |dos-file-formats| +:cdコマンド |dos-:cd| +中断 |dos-CTRL-Break| +一時ファイル |dos-temp-files| +標準シェルオプション |dos-shell| + +Vimのコンパイルに関してはsrc/INSTALL.pcを参照。 *msdos-compiling* + +============================================================================== +1. MS-DOS向けの2つのバージョン *msdos-versions* + +MS-DOSマシンで利用できるVimには2つのバージョンがある: + + *dos16* +Dos16バージョン どんなMS-DOSシステム上でも使用でき、メモリは640 Kbyteまでしか + 使用しない。OS/2、Windows 95、NT上でも同様に動作する。いくつか + のVim-specific機能(オートコマンド、構文強調表示など)を除外して + ある。pre-386マシン上で使用することを推奨する。 + *dos32* +Dos32バージョン 386プロセッサと|DPMI|ドライバが必要であり、すべての利用可能な + メモリを使用する。長いファイル名とクリップボードをサポートして + いるが、Windows NTでは「ない」。MS-DOS、Windows 3.1および + Windows 95を推奨する。 + +Windows下で動作するVimも2つのバージョンがある: +Win32バージョン Windows 95かWindows NTが必要である、すべての利用可能なメモリを + 使用する、長いファイル名をサポートしている、など。Windows 95上 + ではいくつかの問題がある。Windows NTを推奨する。|os_win32.txt| + を参照。 +Win32 GUI Win32バージョンと同様なものが要求されるが、コンソールの代わりに + 独自のウィンドウで動作する。スクロールバー、メニュー、などがあ + る。Windows 95とWindows NTを推奨する。|gui-w32|を参照。 + +Dos32かWin32バージョンを使用することを推奨する。Dos16バージョンは大変大きなファ +イルでも編集できるが、大きな変更をした場合にメモリを枯渇しやすい。undoを無効に +するには: ":set ul=-1"。Dos16バージョンでの画面更新はDOS、Windows 95、Windows +NT上で最も速い; Windows NT上ではWin32バージョンも同じくらいの速さである。 + + *DPMI* +Dos32バージョンでは、MS-DOS上で動作するのにDPMIドライバが必要になるだろう。もし +Windowsが動作しているか、賢いメモリ管理がインストールしてあれば、おそらくすでに +機能しているだろう。もし"No DPMI"メッセージが出てきたら、DPMIドライバをインス +トールする必要がある。そのようなドライバは実行ファイルと共にCSDPMI4B.ZIPに含ま +れている。毎回Vimを起動する前に"cwsdpmi"を実行する。もしくは常駐させるように、 +autoexec.batに"cwsdpmi -p"を記述する。"CSDPMI*.ZIP"の最新版の入手先は: +"ftp.neosoft.com:pub/users/s/sandmann" + + *minimal-features* +16ビットバージョンのDOSは最小の機能でコンパイルされている。|+feature-list|を参 +照してください。"T"でマークされているのがそれです。 +feature.hを編集し、再コンパイルすることでこれら(のいくつか)を含めることができ +る。 + +============================================================================== +2. 既知の問題 *msdos-problems* + +(MS-DOS 6.xで)書き込みキャッシュを使ってスマートドライブを使っているとき、 +Vimには読み込み専用のファイルシステム(プロテクトされたフロッピーなど)にス +ワップファイルを作ることが可能である。しかしそうすると次のようなメッセージを +受け取るだろう > + A serious disk error has occurred .., Retry (r)? +こうなるとフロッピーのプロテクトを外すかコンピュータのスイッチを切る以外にはで +きる事がない。CTRL-ALT-DELも助けにならない。これはスマートドライブの問題であっ +てVimの問題では断じてない。他の点ではスマートドライブはうまく機能する。もしこ +れが困るようなら、書き込みキャッシュを使わないこと。 + +"share"コマンドが使われるまですでに開いているスワップファイルを読み込むことは +できない。すでにあるスワップファイルに関してよくわからない警告がでた場合には +"share"コマンドをconfig.sysかautoexec.batに書き込むとよい(MSDOSのドキュメント +を参照)。 + +Dos16バージョンでは同時に10ファイル(ウィンドウ内もしくはhidden)しか開くことが +できない。それ以上のファイルを扱おうとすると、ファイルを読んだときや書いたとき +にエラーになるだろう。それにはフィルタコマンドも含まれる。もしくはVimはメモリ +を枯渇し、不規則に問題が起きるだろう。 + +Dos32バージョンでは同時に開くことのできるファイル数は無制限ではない。制限数は +CONFIG.SYS内のFILES設定に依存する。標準では15である; もしたくさんのファイルを +編集する必要があるならば、この数を増やせばよい。 +もしFILESが十分に高く設定されていない場合には、奇妙なエラーが発生し、シェルコ +マンドは破損の原因になるかもしれない! + +Dos32バージョンでは長いファイル名が使用できる。ファイル名の補完を行なったとき、 +短いファイル名に一致したものが見つかるだろう。しかし、これは該当する長いファイ +ル名の結果である。例えば、"this_i~1"という短いファイル名で表わされる +"this_is_a_test"という長いファイル名があったとき、":e *1"コマンドは +"this_is_a_test"の編集を開始する。 + +Dos32バージョンを使っているときDPMIサポートで問題があるならリソースを消費し +ているプログラムがconfig.sysにあるかどうか確認すること。"netx"がこの問題を起 +こすことが知られている。これは"NetWare v. 3.26 Workstation shell"である。 +バージョン3.32にすることでこの問題は解決する。 + +Dos32バージョンはクォーテーションを扱うように引数を解析する。これはファイル名 +にスペースを含むファイルを編集するときに良い。例えば: > + vim "program files\accessories\ppp.scp" +副作用としてはシングルクォートが取り除かれてしまう。これはバックスラッシュをつ +けて回避する。例えば、"fi'le.txt"というファイルを編集するなら: > + vim fi\'le.txt + +============================================================================== +3. 長いファイル名 *msdos-longfname* + +Windows 95上で動作するDos32バージョンは長いファイル名が使用できる。それは標準 +で機能するだろう。使用不可にしたい場合は以下の設定をする: + set LFN=N +これはautoexec.batファイルに記述できる。 + +注: DJGPPをインストールしている場合は、おそらく"LFN=n"を含んだ"djgpp.env"ファ +イルがあるだろう。このとき、長いファイル名を使用可能にするには"LFN=Y"とする必 +要がある。 + +============================================================================== +4. Termcapコード *msdos-termcap* + +もし別の出力方法(例えば、COMポート上のターミナルを使うとき)を利用したいならば、 +ターミナル名を"pcansi"に設定する。必要ならばtermcapオプションを変更することが +できる(|terminal-options|を参照)。 通常のIBM ansi.sysはすべてのbuiltin pcansi +ターミナルのコードをサポートしていないので注意すること。もしansi.sysを使ってい +るのならば、以下のようにしてtermcapエントリt_alとt_dlを削除する必要がある。 > + :set t_al= t_dl= +そうでなければ、画面は正しく更新されないだろう。nansi.sysやnnansi.sys、もしく +はansi.sysに代わるようなものを使うほうが良い。 + +もしCOM:ポートに接続されたターミナル上でVimを使いたいのならば、'bioskey'オプショ +ンをリセットする。そうでなければ、コマンドはPCキーボードから読み込まれるだろう。 +CTRL-CとCTRL-Pは'bioskey'をリセットした状態では、正しく機能しないかもしれない。 + +============================================================================== +5. シフトされた矢印キー *msdos-arrows* + +SHIFT-左矢印とSHIFT-右矢印の代わりに、CTRL-左矢印とCTRL-右矢印を使用する。上矢 +印と下矢印はSHIFTやCTRLとともに使用することはできない。 + +============================================================================== +6. ファイル拡張子 *msdos-fname-extensions* + +MS-DOSはファイル名の拡張子を1つしか許可しない。したがって、拡張子を追加すると +きは、もとのファイル名にある'.'を'_'で置き換え、8文字に切り捨ててから新しい拡 +張子(例えば".swp")が追加される。2つの例: "test.c"は"test_c.bak"になり、 +"thisisat.est"は"thisisat.bak"になる。これらの問題を軽減するために、 +'backupext'は標準で".bak"の代わりに"~"となっている。このとき"thisisat.est"のバッ +クアップファイルは"thisisat.es~"となる。'shortname'オプションは常に設定されて +いるため、利用できない。 + +============================================================================== +7. メモリ利用と制限 *msdos-limitations* + +スワップファイルはテキストの大部分を保持するのによく使われる。大変大きなファイ +ルも編集できるだろう。しかしながら、メモリはundoやその他のことに使用される。も +し大量のテキストを削除したなら、Dos16バージョンではメモリが底をつくだろう。 + +もしVimが"Out of memory"の警告を出したなら、編集を中止すべきだ。その後の編集作 +業の結果は予想できない。'undolevels'を0に設定することでメモリをある程度節約す +る。大きな迷路上で迷走するマクロを動作させることは、メモリを枯渇させることを保 +証する。なぜなら各々の変更はundoとして記憶されるからである。このような場合は +'undolevels'を負の数に設定する。これによりundoを完全に機能させないようにするだ +ろう。 + + *msdos-clipboard-limits* +Dos32バージョンでは、これらの問題を避けるために拡張メモリを使用する。 +しかし、ウインドウズのクリップボードを使うにはDosメモリを使わなければならな +い。つまり多量のテキストをウインドウズのクリップボードとやり取りするのは使用で +きるDosメモリの量に制限されます。 + +普通は"config.sys"に以下の行を追加すれば使用できる最大限のメモリを使えるように +なります。 > + + DOS=HIGH,UMB + DEVICE=C:\WINDOWS\himem.sys + DEVICE=C:\WINDOWS\emm386.exe RAM + +Dos16バージョンにおいてconfig.sysをこのように変更することは、もしもそれだけの +メモリを装備していれば、利用可能なメモリを増やす役目も果たすだろう。 + +Dos16バージョンでは、1行の文字数がおよそ32000文字に制限されている。ファイルを +読み込んだ場合、行は自動的に分割される。しかし、1行が制限文字数を越えるような +編集すると予期しない結果になるかもしれない。 + +============================================================================== +8. シンボリックリンクファイル *msdos-linked-files* + +unix NFSファイルサーバ上でシンボリックリンクされたファイルを編集したとき、問題 +に突き当たるかもしれない。 +ファイルを保存したとき、Vimはシンボリックリンク先には書き出さない。代わりに、 +シンボリックリンクを削除して、その場所に新しいファイルを作成する。 +Unix上では、Vimはリンク(シンボリックまたはハード)に対して準備してある。もとの +ファイルのバックアップ用コピーが作成され、もとのファイルを上書きする。これによ +りファイルのすべてプロパティが同じように残ることを保証する。Unixではないシステ +ム上では、もとのファイルは名前を変更され、新しいファイルが書き出される。保護ビッ +トのみが基のファイルと同じように設定される。しかしながら、これはリンクや他のも +のが存在するNFSマウントされたファイルシステム上では適切に機能しない。現在のバー +ジョンでこれを解決する唯一の方法は、":set nobackup nowritebackup"によってバッ +クアップファイルを作成しないようにすることである。 |'writebackup'| + +============================================================================== +9. dosでのコピー/貼り付け *msdos-copy-paste* + + *E450* *E451* *E452* *E453* *E454* +32ビットバージョンではレジスタ "* を使ってウインドウズのクリップボードを使用で +きます。メモリの許す限り多量のテキストをコピーできます。 +|msdos-clipboard-limits|参照。Vimから他のVimにコピーする時は +(characterwise/linewise/blockwise)の特性も通知されます。 + +その他のバージョンでは以下を使うことができる。 + +(posted to comp.editors by John Velman <velman@igate1.hac.com>) + +dos上のvim から/へ テキストを コピー/貼り付け する方法: + +1) フルスクリーンからVIMが起動しているウィンドウを取得するにはalt+enterを押す。 + これはフルスクリーンとdosウィンドウを交互に切り替える。 + 注: Windows 95では"Fast Pasting"プロパティのチェックをはずさなければならな + い! MS-DOSウィンドウのプロパティダイアログボックス上で、"MS-DOS + Prompt/Misc/Fast pasting"へ行き、チェックされていないことを確認する。 + これを永続的にするには、"\windows\system\conagent.exe"のプロパティを変更す + る。(Philip Nelsonから、未確認). + +2) Vimに何かを貼り付けるには、Vimを挿入モードにする。 + +3) 貼り付けたいテキストをwindowsのクリップボード上に置く。 + +4) Vimウィンドウの左上にあるコントロールボックス(大きなマイナス符号に似ている) + をクリックする。マウスを使いたくないならば、alt+スペースキーで代用できる。 +5) ドロップダウンリストから"編集"を選ぶ。 +6) さらに開いたドロップダウンリストから"貼り付け"を選ぶ。 + +Vimウィンドウからクリップボードへコピーするには、 + +1) コントロールボックスを選択し、コントロールドロップダウンメニューを表示する。 +2) "編集"を選択する。 +3) "範囲指定"を選択する。 +4) キーボードやマウスを使って、コピーしたい部分をVimウィンドウから選択する。キー + ボードの場合は矢印キーを使用し、選択範囲を広げるにはシフトキーを押しながら + 矢印キーを使用する。 +5) 範囲を選択し終わったら'enter'キーを押す。これで選択範囲がwindowsのクリップ + ボードにコピーされる。この方法は、7-10行目の4-25列というように、どんな矩形 + 範囲でも選択できる。これはVIMウィンドウ内のどんなものでも含めることができる: + 例えば、:!dirの出力。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/scroll.jax b/ja/scroll.jax new file mode 100644 index 000000000..6ecefa2d2 --- /dev/null +++ b/ja/scroll.jax @@ -0,0 +1,304 @@ +COMMENT: スクロールコマンド +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*scroll.txt* For Vim version 6.3. Last change: 2002 May 24 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +スクロール *scrolling* + +これらのコマンドはウィンドウの内容を移動する。カーソルがウィンドウの外に移動し +ようとすると、カーソルはウィンドウに留まるように振舞う('scrolloff'のスクリーン +行をカーソルの周囲に確保する)。1ページとはウィンドウの行数から2引いた行数と定 +義する。これらのコマンドを覚えるのは少し厄介かもしれない。ウィンドウをバッファ +のうち貴方が見ている一部分と捉えて、ウィンドウの動きをバッファ内での上下の移動 +に関連付けてコマンドを覚えると良いだろう。例えばバッファの中でウィンドウが上に +動くと、ウィンドウのテキストはスクリーンの下の方へ移動していくことになる。 + +手始めにユーザーマニュアルの|03.7|を読んでください。 + +1. 下方スクロール |scroll-down| +2. 上方スクロール |scroll-up| +3. カーソル相関スクロール |scroll-cursor| +4. 水平スクロール |scroll-horizontal| +5. 同期スクロール |scroll-binding| +6. マウスホイールスクロール |scroll-mouse-wheel| + +============================================================================== +1. 下方スクロール *scroll-down* + +以下のコマンドは編集ウィンドウ(バッファ内の貴方が見ている一部分)を下に移動する +(つまりテキストバッファのより下にある行を見ることができる): + + *CTRL-E* +CTRL-E バッファの下へ[count]行ウィンドウをスクロールする。 + 覚え方: Extra lines (訳注: Extra=割増) + + *CTRL-D* +CTRL-D ウィンドウをバッファ内で下にスクロールする。スクロール + する行数は'scroll'オプションで指定される(省略した場合: + スクリーンの半分の行数)。[count]が指定された場合、 + 'scroll'オプションに[count]が設定されてからスクロール + する。カーソルもファイル内で同じ行数だけ下へ移動する + (もし可能ならば; 行が折り返されている場合やファイルの + 終端に達した時は違ってくる)。カーソルがバッファの最終 + 行にある時は何も起こらずビープ音が鳴る。'startofline' + オプションも参照。 + {Vi と異なる点: ファイルの物理行数スクロールさせる代わ + りに、Vimでは'scroll'行分スクリーンの論理行でスクロー + ルする; これは行が折り返されている時に違いを生む} + +<S-Down> or *<S-Down>* *<kPageDown>* +<PageDown> or *<PageDown>* *CTRL-F* +CTRL-F ウィンドウをバッファ内で[count]ページ前方(下方)にスク + ロールする。'startofline'オプションも参照。 + + *z+* +z+ [count]が無い時: 現在のウィンドウの最下行を最上行にし + て再描画する。カーソルはその行の、最初の非空白文字に合 + わせられる。 + [count]が有る時: ちょうど"z<CR>"と同じ。 + +============================================================================== +2. 上方スクロール *scroll-up* + +以下のコマンドは編集ウィンドウ(バッファ内の貴方が見ている一部分)を上に移動する +(つまりテキストバッファのより上にある行を見ることができる): + + *CTRL-Y* +CTRL-Y バッファの上へ[count]行ウィンドウをスクロールする。 + Note: MS-Windowsのキーバインディングを使っているときは + CTRL-Yはredoにマッピングされています。 + + *CTRL-U* +CTRL-U ウィンドウをバッファ内で上にスクロールする。スクロー + ルする行数は'scroll'オプションで指定される(省略した場 + 合: スクリーンの半分の行数)。[count]が指定された場合、 + 'scroll'オプションに[count]が設定されてからスクロール + する。カーソルもファイル内で同じ行数だけ上へ移動する + (もし可能ならば; 行が折り返されている場合やファイルの + 先頭に達した時は違ってくる)。カーソルがバッファの先頭 + 行にある時は何も起こらずビープ音が鳴る。'startofline' + オプションも参照。 + {Vi と異なる点: ファイルの物理行数スクロールさせる代わ + りに、Vimでは'scroll'行分スクリーンの論理行でスクロー + ルする; これは行が折り返されている時に違いを生む} + +<S-Up> or *<S-Up>* *<kPageUp>* +<PageUp> or *<PageUp>* *CTRL-B* +CTRL-B ウィンドウをバッファ内で[count]ページ後方(上方)にスク + ロールする。'startofline'オプションも参照。 + + *z^* +z^ [count]が無い時: 現在のウィンドウの最上行を最下行にし + て再描画する。カーソルはその行の、最初の非空白文字に合 + わせられる。 + [count]が有る時: まず[count]行がウィンドウの最下行に + なるようにスクロールし、次にウィンドウの最上行になっ + た行を最下行にして再描画する。カーソルはその行の最初 + の非空白文字に合わせられる。 + +============================================================================== +3. カーソル相関スクロール *scroll-cursor* + +下記のコマンドはカーソルの位置は変えずに編集ウィンドウ(バッファの見えている一 +部)の位置を変える: + + *z<CR>* +z<CR> [count]行(省略時はカーソルのある行)をウィンドウの最上 + 行にして再描画する。カーソルは行内の最初の非空白文字に + 置かれる。 + + *zt* +zt "z<CR>"と同様だが、カーソルは同じカラムに留める。 + {Vi にはない} + + *zN<CR>* +z{height}<CR> ウィンドウを高さ{height}行に変更して再描画する。スク + リーンの更新が非常に遅い時に、高さを減らすと有効であ + る。物理的なスクリーンの高さよりも高くすることはできな + い。 + + *z.* +z. [count]行(省略時はカーソルのある行)をウィンドウの中心 + にして再描画する。カーソルは行内の最初の非空白文字に置 + かれる。 + + *zz* +zz "z."と同様だが、カーソルは同じコラムに留める。注意: + caps-lockが有効になっていると、このコマンドは"ZZ"にな + り、バッファを書き出し終了してしまう。{Vi にはない} + + *z-* +z- [count]行(省略時はカーソルのある行)をウィンドウの最下 + 行にして再描画する。カーソルは行内の最初の非空白文字に + 置かれる。 + + *zb* +zb "z-"と同様だが、カーソルは同じコラムに留める。 + {Vi にはない} + +============================================================================== +4. 水平スクロール *scroll-horizontal* + +次の4つのコマンドはスクリーンに応じてカーソルが移動する。カーソルのある文字が +スクリーンが動いたために消えると、カーソルはスクリーン上の一番近い文字に移動す +る。'sidescroll'の値は使用されない。 + +z<Right> or *zl* *z<Right>* +zl スクリーンを[count]文字左へ移動する。これは'wrap'がオ + フの時にだけ働く。 {Vi にはない} + +z<Left> or *zh* *z<Left>* +zh スクリーンを[count]文字右へ移動する。これは'warp'がオ + フの時にだけ働く。 {Vi にはない} + + *zL* +zL スクリーンの幅の半分左へスクロールする。これは'wrap'が + オフの時にだけ働く。 {Vi にはない} + + *zH* +zH スクリーンの幅の半分右へスクロールする。これは'wrap'が + オフの時にだけ働く。 {Vi にはない} + +次の2つのコマンドではテキスト上でカーソルは移動せず、スクリーンのテキストだけ +がスクロールする。 + + *zs* +zs カーソルのある位置がスクリーンの始まり(左側)に来るよう + に画面を水平にスクロールする。これは'wrap'がオフの時に + だけ働く。 {Vi にはない} + + *ze* +ze カーソルのある位置がスクリーンの終わり(右側)に来るよう + に画面を水平にスクロールする。これは'wrap'がオフの時に + だけ働く。 {Vi にはない} + +============================================================================== +5. 同期スクロール *scroll-binding* + +時折、2つかそれ以上のウィンドウを結びつけて、1つがスクロールしたら他のウィンド +ウもスクロールして欲しいと思うことがある。Vimではウィンドウごとに'scrollbind' +オプションを設定することでこのような振る舞いをさせることが可能である。 +'scrollbind'が設定されたあるウィンドウがスクロールした場合、他の'scrollbind'が +設定されたウィンドウが可能なら同じ量だけスクロールする。'scrollbind'の振る舞い +は'scrollopt'オプションによって変更することができる。 + +スクロールバーを使っているとき、マウスでスクロールバーを操作しても他のウインド +ウはスクロールされない。これは少しの間だけ同期スクロールを使わないでスクロールし +たい時に使える。 + +ウインドウに'diff'オプションも設定されているとき、同期スクロールは二つのバッフ +ァの差分を考慮してスクロールする。以下の機能が使われなければこれはうまく機能す +る。 + + *scrollbind-relative* +'scrollbind'された各々のウィンドウは"相対的なオフセット"の量を監視し、それは現 +在のウィンドウの垂直スクロール位置とその他のウィンドウの垂直スクロール位置の間 +の違いと考えることができる。'scrollbind'ウィンドウの1つがテキストの最初もしく +は最後を超えてスクロールしようとすると、ウィンドウはもはやスクロールせず、しか +しどれだけ臨界を超えて移動しようとしたかは記憶される。ウィンドウはこの情報を持 +ち続けて同じオフセットを管理できるように、そのバッファの限界を超えてスクロール +を要求されたかにはかまわない。 +(訳注: 意味は理解できない) + +しかしながら、そのバッファの限界を超えるような相対オフセットを持つウィンドウに +カーソルフォーカスが与えられると、その他の'scrollbind'されたウィンドウは現在の +ウィンドウの有効な相対オフセットの位置にジャンプすることになる。この振る舞いは +'scrollopt'オプションから'jump'フラグを削除することで変えることができる。 + + *syncbind* *:syncbind* +:syncbind すべての'scrollbind'ウィンドウが同じ相対オフセットを持 + つように強制する。すなわち'scrollbind'ウィンドウがその + バッファの先頭にスクロールされた時、その他の + 'scrollbind'ウィンドウもまたそれぞれのバッファの先頭に + 持っていかれる。 + + *scrollbind-quickadj* +'scrollbind'フラグはウィンドウを垂直スクロールするキーボードコマンドを使う時に +意味があり、またカーソルフォーカスを持つウィンドウの垂直スクロールバーを使うと +きに意味がある。しかしながら、カーソルフォーカスを持たないウィンドウの垂直スク +ロールバーを使うときには、'scrollbind'は無視される。これを'scrollbind'された +ウィンドウの相対オフセットを修正する時に利用できる。 + +============================================================================== +6. マウスホイールスクロール *scroll-mouse-wheel* + +貴方のマウスにスクロールホイールがあるときには、GUIのVimでそれを使うことができ +る。どのように働くかは貴方のシステムに依存する。それはxtermでも動作する +|xterm-mouse-wheel|。 + +Win32 GUIではスクロールの動作はソースに埋め込まれている。それはちょうど現在の +ウィンドウのスクロールバーをドラッグした時のように働く。何行スクロールするかは +貴方のマウスドライバに依存する。スクロールの動作が入力フォーカスの問題を引き起 +こすならば、|intellimouse-wheel-problems|を参照。 + +X11GUI(Motif、AthenaそしてGTK)ではホイールを回すと<MouseDown>と<MouseUp>のキー +が押されたことになる。これらのキーのデフォルトの動作は次の通り: + <MouseDown> 3行下にスクロール *<MouseDown>* + <S-MouseDown> 1ページ下にスクロール *<S-MouseDown>* + <C-MouseDown> 1ページ下にスクロール *<C-MouseDown>* + <MouseUp> 3行上にスクロール *<MouseUp>* + <S-MouseUp> 1ページ上にスクロール *<S-MouseUp>* + <C-MouseUp> 1ページ上にスクロール *<C-MouseUp>* +これはコマンドラインを編集する以外の、全てのモードで動作するだろう。 + +<MouseDown>はホイールをまわしたときに、テキストをスクロールするために使われる +ことに注意してください。 + +キーマッピングによりこの振る舞いを変更することができる。例えば、ノーマルモード +でホイールによるスクロールを1行にしたり半画面にしたりできる: > + map <MouseDown> <C-Y> + map <S-MouseDown> <C-U> + map <MouseUp> <C-E> + map <S-MouseUp> <C-D> +AltやCtrlといった修飾も可能である。 + +これはもちろん、Vimがスクロールホイールのイベントを取得している時にだけ働く。 +この機能が働くかどうかは"xev"プログラムを使用すればチェックできる。 + +Xfree86を使っているときには、/etc/XF86Configに貴方のマウスの正しいエントリがな +ければならない。FreeBSDでは、このようなエントリーがロジテックのスクロールマウ +ス用に必要である。 > + Protocol "MouseMan" + Device "/dev/psm0" + ZAxisMapping 4 5 +詳しくはXfree86のドキュメントを参照すること。 + + *xterm-mouse-wheel* +新しいxtermでマウスホイールを使うには、上で書かれているようにXserverでスクロー +ルホイールマウスが動作するようにするだけで良い。 + +古いxtermでマウスホイールを使うにはこうする: +1. 上にかかれているように、Xserverで使えるようにする。 +2. xtermに変換を追加し、スクロールイベントをVimへエスケープシーケンスとして渡 + すようにする。 +3. Vimにマッピングを追加し、エスケープシーケンスが<MouseUp>もしくは<MouseDown> + キーになるようにする。 + +次のような内容をあなたの~/.Xdefaults(もしくは別名の貴方のXリソースファイル)に +追加すれば変換ができる。 > + + XTerm*VT100.Translations: #override \n\ + s<Btn4Down>: string("0x9b") string("[64~") \n\ + s<Btn5Down>: string("0x9b") string("[65~") \n\ + <Btn4Down>: string("0x9b") string("[62~") \n\ + <Btn5Down>: string("0x9b") string("[63~") \n\ + <Btn4Up>: \n\ + <Btn5Up>: + +これらのマッピングを貴方のvimrcファイルに追加しなさい: > + :map <M-Esc>[62~ <MouseDown> + :map! <M-Esc>[62~ <MouseDown> + :map <M-Esc>[63~ <MouseUp> + :map! <M-Esc>[63~ <MouseUp> + :map <M-Esc>[64~ <S-MouseDown> + :map! <M-Esc>[64~ <S-MouseDown> + :map <M-Esc>[65~ <S-MouseUp> + :map! <M-Esc>[65~ <S-MouseUp> +< + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/tagsrch.jax b/ja/tagsrch.jax new file mode 100644 index 000000000..b3a2ce3f6 --- /dev/null +++ b/ja/tagsrch.jax @@ -0,0 +1,794 @@ +COMMENT: タグジャンプ、検索 +STATUS: finished 6.3.054 +TRANSLATOR: Noiz +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*tagsrch.txt* For Vim version 6.3. Last change: 2004 Apr 29 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Tags and special searches *tags-and-searches* + +初めにユーザーマニュアルのセクション|29.1|をご覧ください。 + +1. タグへのジャンプ |tag-commands| +2. タグスタック |tag-stack| +3. タグマッチリスト |tag-matchlist| +4. タグの詳細 |tag-details| +5. タグファイルの書式 |tags-file-format| +6. インクルードファイルの検索 |include-search| + +============================================================================== +1. タグへのジャンプ *tag-commands* + + *tag* *tags* +タグとは"tags"ファイルに現われる識別子である。タグはラベルのようなものであり、 +そこにジャンプすることができる。例えば: Cのプログラムではそれぞれの関数名をタ +グとして使うことができる。タグ機能を使う前には、ctagsのようなプログラムによっ +て"tags"ファイルを生成しなければならない。 + +":tag"コマンドはカーソルをタグ上に移動する。CTRL-]コマンドはカーソルの下にある +キーワードをタグとして使用する。もしカーソルがキーワード上になければ、カーソル +位置から右側で最初に現れるキーワードを使用する。 + +":tag"コマンドはCプログラムでよく機能する。もし関数呼び出しを見つけた時にその +関数が何をするのか疑問に思ったら、カーソルを関数名の上に置いてCTRL-]を叩けばよ +い。これで関数定義に導いてもらえるだろう。簡単に戻る方法はCTRL-Tコマンドを使う +ことである。後述するタグスタックについても読むとよい。 + + *:ta* *:tag* *E426* *E429* +:ta[g][!] {ident} tagsファイル内の情報を用いて、{ident}の定義へジャンプ + する。{ident}はタグスタックに積まれる。[!]については + |tag-!|を参照。 + {ident}は正規表現を使用できる。|tag-regexp|を参照。 + {ident}に対してマッチするタグが複数ある場合、一番最初 + のタグへジャンプする。|:tnext|。 + +g<LeftMouse> *g<LeftMouse>* +<C-LeftMouse> *<C-LeftMouse>* *CTRL-]* +CTRL-] カーソルの下のキーワードを定義している場所にジャンプし + ます。":tag {ident}"と同様であるが、{ident}はカーソル + の下、もしくは次に現われるキーワードである。{Vi: + identifier after the cursor} + + *v_CTRL-]* +{Visual}CTRL-] ":tag {ident}"と同様であるが、{ident}はハイライトされ + ているテキストである。{Vi にはない} + + *telnet-CTRL-]* +CTRL-]はtelnetの標準エスケープキーである。タグにジャンプしようとCTRL-]を打つと、 +代わりにtelnetのプロンプトが立ち上がるだろう。telnetのたいていのバージョンは、 +標準エスケープキーを変更、もしくは使用不可能にできる。telnetのマニュアルを参照 +すること。エスケープキーを使用不可能にするには'telnet -E {ホスト名}'、エスケー +プ文字を他の文字にするには'telnet -e {エスケープ文字} {ホスト名}'を使用する。 +もし可能ならtelnetの代わりにrshを使うことで、この問題を回避できる。 + + *tag-priority* +タグのマッチが複数ある場合、以下の優先度が使われる: +1. "FSC" カレントファイル内の全一致するstaticタグ。 +2. "F C" カレントファイル内の全一致するglobalタグ。 +3. "F " 別のファイル内の全一致するglobalタグ。 +4. "FS " 別のファイル内の全一致するstaticタグ。 +5. " SC" カレントファイル内の大文字、小文字を無視した一致をするstaticタグ。 +6. " C" カレントファイル内の大文字、小文字を無視した一致をするglobalタグ。 +7. " " 別のファイル内の大文字、小文字を無視した一致をするglobalタグ。 +8. " S " 別のファイル内の大文字、小文字を無視した一致をするstaticタグ。 + +カレントファイルが変わっても、優先度のリストはほとんどの場合変化しないので注意 +すること。これは":tnext"を使うときの混乱を避けるためである。優先度のリストは +":tag {ident}"を使ったときに変化する。 + +'ignorecase'オプションがオフになっているときの":tag"コマンドでは、大文字、小文 +字を区別しないマッチは見つからない。'ignorecase'がオフになっていても、("/"で +始まる)パターンを使用し、かつ":tselect"を使ったときには見つけることができる。 +大文字、小文字を区別しないタグ検索を使うと、tagsファイル内で2分探索ができなく +なるため処理が遅くなる、ということに注意すること。これはタグファイルを大文字と +小文字を区別せずにソートすることで回避できます。'tagsearch'オプションの説明も +参照してください。 + +============================================================================== +2. タグスタック *tag-stack* *tagstack* *E425* + +タグスタック上にはジャンプ先のタグと、どこから来たのかという情報が記憶される。 +タグは'tagstack'オプションが設定されているときにだけ積まれる。 + +g<RightMouse> *g<RightMouse>* +<C-RightMouse> *<C-RightMouse>* *CTRL-T* +CTRL-T タグスタック中の[count]分だけ古いエントリにジャンプす + る(デフォルトは1)。 {Vi にはない} + + *:po* *:pop* *E555* *E556* +:[count]po[p][!] タグスタック中の[count]分だけ古いエントリにジャンプす + る(デフォルトは1)。 + [!]については|tag-!|を参照。 {Vi にはない} + +:[count]ta[g][!] タグスタック中の[count]分だけ新しいエントリにジャンプ + する(デフォルトは1)。 + [!]については|tag-!|を参照。 {Vi にはない} + + *:tags* +:tags タグスタックの内容を表示する。現在のエントリは'>'でマー + クされる。 {Vi にはない} + +":tags"の出力は以下のようになる: + + # TO tag FROM line in file/line + 1 1 main 1 harddisk2:text/vim/test + > 2 2 FuncA 58 i = FuncA(10); + 3 1 FuncC 357 harddisk2:text/vim/src/amiga.c + +このリストはジャンプ先のタグとジャンプ前のカーソル位置を表示する。上から順に古 +いタグが並び、一番下が最も新しいタグである。 + +'>'は現在のエントリを指している。これは次の":tag"コマンドで使われるタグである。 +CTRL-Tと":pop"コマンドは1つ上のタグを使う。 + +"TO"の列にはマッチリスト中の現在のマッチ数を表示する。これは":pop"や":tag"を使っ +ても変化しないので注意すること。 + +行番号とファイル名は、タグコマンドを実行する前にいた位置に戻ることができるよう +に記憶される。行番号は行の削除や挿入が行なわれた時にも正しく維持される。ただし、 +別のプログラム(例えば、Vimの別インスタンス)で編集した場合を除く。 + +ジャンプ前の位置がカレントファイル内であれば、"file/line"の列にその行が表示さ +れる。インデントは取り除かれ、長い行はウィンドウに収まるように切り詰められる。 + +前に使ったタグにジャンプするコマンドはいくつかある。例えば: + + ":pop" or CTRL-T ひとつ前に使われたタグにジャンプする。 + {count}CTRL-T {count}分だけ前のタグにジャンプする。 + ":tag" 現在のエントリより新しいタグにジャンプする。 + ":0tag" 最後に使われたタグにジャンプする。 + +これらの最も明白な利用方法は、プログラムの関数呼び出しをあちこち拾い読みするときである。次のような呼び出し図を考える: + + main ---> FuncA ---> FuncC + ---> FuncB + +(解説: mainはFuncAとFuncBを呼び出し、FuncAはFuncCを呼び出す)。 +FuncAの呼び出し部分の上でCTRL-]を使うことによって、mainからFuncAに行くことがで +きる。同様にCTRL-]を使ってFuncCへ行くことができる。mainに戻るにはCTRL-Tを2回 +使う。そこでCTRL-]を使ってFuncBに行くことができる。 + +":ta {ident}"やCTRL-]コマンドは、タグスタック上の現在の位置にタグを追加する。 +もしスタックが満たされていた場合(スタックは20エントリまで保持できる)、最も古い +エントリが削除され、古いものから順にひとつずつ上に移動する(インデックス番号は1 +ずつ減る)。もし最後に使われたエントリが一番下になかった場合、最後に使われたエ +ントリより下にあるものは削除される。つまり古いタグ経路は失われる。上のパラグラ +フの説明を実行したあとのタグスタックは次のような状態になる: + + # TO tag FROM line in file + 1 main 1 harddisk2:text/vim/test + 2 FuncB 59 harddisk2:text/vim/src/main.c + > + *E73* +タグスタックを使おうとしたとき、タグスタックになにも入っていないとエラーが表示 +されます。 + +============================================================================== +3. タグマッチリスト *tag-matchlist* *E427* *E428* + +以下のコマンドは複数のタグがマッチしたときに、タグの間を移動するために使うこと +ができる。これらのコマンドはタグスタックを変更せず、同じエントリを保つことに注 +意すること。 + + *:ts* *:tselect* +:ts[elect][!] [ident] タグファイルの情報を用いて、[ident]にマッチするタグをリ + スト表示する。 + [ident]を省略した場合、タグスタック上の最後のタグが使 + われる。 + 最初の列に'>'があるものはリスト中の現在の位置を指し示 + している(それがあるならば)。 + [ident]は正規表現を取り得る。|tag-regexp|を参照。 + リストに使われているプロパティは|tag-priority|を参照。 + {Vi にはない} + 出力例: + +> + nr pri kind tag file + 1 F f mch_delay os_amiga.c + mch_delay(msec, ignoreinput) + > 2 F f mch_delay os_msdos.c + mch_delay(msec, ignoreinput) + 3 F f mch_delay os_unix.c + mch_delay(msec, ignoreinput) + Enter nr of choice (<CR> to abort): +< + "pri"については|tag-priority|を参照。この例は現在のファ + イルに依存しているため、":tselect xxx"を使ったときには + 違う結果が得られることに注意すること。 + "kind"はタグファイルからタグの種類が得られる場合のみ、 + その情報を示す。 + "info"はタグファイルから得られる情報が表示される。この + 情報はタグファイルを生成したプログラムに依存する。 + リストが長い場合には|more-prompt|が表示される。もしす + でに使いたいタグを見つけているのなら、'q'のあとに"nr" + の番号を入力すればよい。 + + *:sts* *:stselect* +:sts[elect][!] [ident] ":stelect[!] [ident]"を実行し、ウィンドウを分割して選 + 択されたtagを表示する。(Viでは使えない。) + + *g]* +g] CTRL-]と動作は似ているが、":tag"の変わりに":tselect"を + 用いる。(Viでは使えない。) + + *v_g]* +{Visual}g] "g]"と同じ。ただし、選択されたテキストが検索に使われ + る。{Vi にはない} + *:tj* *:tjump* +:tj[ump][!] [ident] ":tselect"と動作は似ているが、適合するtagが1つだけの + ときには直接移動する。(Viでは使えない。) + + *:stj* *:stjump* +:stj[ump][!] [ident] ":tjump[!] [ident]"を実行し、ウィンドウを分割して選択 + されたtagを表示する。(Viでは使えない。) + + *g_CTRL-]* +g CTRL-] CTRL-]と動作は似ているが、":tag"の変わりに":tjump"を用 + いる。(Viでは使えない。) + + *v_g_CTRL-]* +{Visual}g CTRL-] "g CTRL-]"と同じ。ただし、選択されたテキストが検索に使 + われる。 + *:tn* *:tnext* +:[count]tn[ext][!] 適合するtagのうち、[count]番目のtagに移動する。(省略時 + は1。)[!]に関しては|tag-!|を参照。(Viでは使えない。) + + *:tp* *:tprevious* +:[count]tp[revious][!] 適合するtagのうち、[count]分だけ前のtagに移動する。( + 省略時は1。)[!]に関しては|tag-!|を参照。(Viでは使えな + い。) + + *:tN* *:tNext* +:[count]tN[ext][!] ":tprevious"と同様。(Viでは使えない。) + + *:tr* *:trewind* +:[count]tr[ewind][!] 適合したtagのうち最初のtagに移動する。もし[count]が与 + えられていたら、[count]番目のtagに移動する。[!]につい + ては|tag-!|を参照。(Viでは使えない。) + + *:tf* *:tfirst* +:[count]tf[irst][!] ":trewind"と同じ。{Vi にはない} + *:tl* *:tlast* +:tl[ast][!] 適合したtagのうち最後のtagに移動する。[!]に関しては + |tag-!|を参照。(Viでは使えない。) + + +他にメッセージがないとき、Vimは今までに移動したtagとtagの数を表示する: > + tag 1 of 3 or more +" or more"は、Vimがまだすべてのtagファイルを検索していないことを示すために用い +られる。":tnext"を数回用いるか、":tlast"を使用したとき、さらにtagが見つけられ +るだろう。 + +他のメッセージがあったときや、現在の場所を知りたいときには次のコマンドで再び +表示することができる。(最後に行なった移動と同じtagに移動する。): > + :0tn +< + *tag-skip-file* +マッチしたタグに対するファイルが見つからなかった場合、スキップされて次にマッチ +するタグが使われる。Vimはファイルがないことを通知する。もしリストの終端に達し +ていたならば、エラーメッセージが与えられる。 + +タグマッチリストはプレビューウィンドウ内でも使用できる。そのコマンドは上記のも +のに似ているが、先頭に"p"がつく。 +{|+quickfix|が無効なときは利用できない} + + *:pts* *:ptselect* +:pts[elect][!] [ident] ":tselect[!] [ident]"を実行し、"Preview"ウィンドウに新 + しいタグを表示する。詳細は|:ptag|を参照すること。 + {Vi にはない} + + *:ptj* *:ptjump* +:ptj[ump][!] [ident] ":tjump[!] [ident]"を実行し、"Preview"ウィンドウに新 + しいタグを表示する。詳細は|:ptag|を参照すること。 + {Vi にはない} + + *:ptn* *:ptnext* +:[count]ptn[ext][!] プレビューウィンドウで":tnext"を実行する。|:ptag|を参 + 照すること。{Vi にはない} + + *:ptp* *:ptprevious* +:[count]ptp[revious][!] プレビューウィンドウで":tprevious"を実行する。|:ptag| + を参照すること。{Vi にはない} + + *:ptN* *:ptNext* +:[count]ptN[ext][!] ":ptprevious"と同じ。{Vi にはない} + + *:ptr* *:ptrewind* +:[count]ptr[ewind][!] プレビューウィンドウで":trewind"を実行する。|:ptag|を + 参照すること。{Vi にはない} + + *:ptf* *:ptfirst* +:[count]ptf[irst][!] ":ptrewind"と同じ。{Vi にはない} + + *:ptl* *:ptlast* +:ptl[ast][!] プレビューウィンドウで":tlast"を実行する。|:ptag|を参 + 照すること。{Vi にはない} + +============================================================================== +4. タグの詳細 *tag-details* + + *static-tag* +staticタグは特別なファイルのために定義されたタグである。Cプログラムではstatic +関数が当てはまる。 + +Viはタグにジャンプするときに現在の検索パターンを設定する。これはタグにジャンプ +したあとの"n"コマンドは、その前の検索パターンと同じ検索を行わないということで +ある。Vimではこのようなバグとも考えられることはしない。検索履歴にある検索パター +ンで検索できる。もし古いViの振る舞いを望むならば、'cpoptions'に't'を設定する。 + + *tag-binary-search* +Vimは希望のタグをすばやく見つけるために、タグファイル内で二分検索を行う +(|+tag_binary|がコンパイル時に有効になっていれば)。しかしこれはタグファイルが +ASCIIコードでソートされている場合にのみ機能する。したがって、もし適合しないも +のが見つかった場合は、その他の方法として線形検索が行われる。もし線形検索のみを +利用したいならば、'tagbsearch'オプションをリセットすればよい。そうでなければ: +タグファイルをソートすること! + +検索が明確な名前をもったタグでない場合は二分検索は利用できないことに注意するこ +と。これは大文字小文字を無視した検索や固定文字列で始まらない正規表現による検索 +で発生する。そのときはタグ検索はかなり遅くなるだろう。先人はタグファイルを大文 +字と小文字を区別せずにソートすることで回避できた。詳細は'tagbsearch'を参照して +ください。 + + *tag-regexp* +":tag"と"tselect"コマンドは引数に正規表現を受け付ける。使用できる特殊文字につ +いては|pattern|を参照すること。引数が'/'で始まる場合はパターンとして使われる。 +もし引数が'/'で始まらなければ、完全なタグ名の文字列として扱われる。 +例: > + :tag main +< 最も優先度の高い"main"というタグにジャンプする。 > + :tag /^get +< 最も優先度の高い"get"で始まるタグにジャンプする。 > + :tag /norm +< "norm"を含むすべてのタグを列挙する。これは"id_norm"というタグも含まれる。 +もし引数と全く同じタグと、正規表現によってマッチしたタグがあった場合、引数と同 +じタグが優先される。例えば、":tag /open"は"open_file"や"file_open"よりも前に +"open"にマッチする。 + + *tag-!* +もしタグが現在のファイル上にあるならば、いつも機能するだろう。そうでなければ、 +実行結果は現在のファイルが変更されているか、コマンドに!がつけられているか、 +'autowrite'オプションが設定されているかに依存する: + +タグが現在の autowrite ~ + ファイル内 変更あり ! オプション 動作 ~ +----------------------------------------------------------------------------- + yes x x x タグに行く + no no x x 対象ファイルを読み込み、タグに行く + no yes yes x 現在のファイルを捨て、対象ファイルを読み込ん + でタグに行く + no yes no on 現在のファイルを保存し、対象ファイルを読み込 + んでタグに行く + no yes no off 失敗する +----------------------------------------------------------------------------- + +- タグが現在のファイル上にある場合は、コマンドはいつも機能する。 +- タグが他のファイル上にあり、現在のファイルが変更されていないならば、対象とな + るファイルがバッファに読み込まれる。 +- タグが他のファイル上にあり、現在のファイルが変更されていて、かつ!がコマンド + につけられている場合には、現在のファイルに対する変更は失われ、対象となるファ + イルがバッファに読み込まれる。 +- タグが他のファイル上にあり、現在のファイルが変更されていて、かつ'autowrite' + オプションが設定されている場合には、現在のファイルは保存され、対象となるファ + イルがバッファに読み込まれる。 +- タグが他のファイル上にあり、現在のファイルが変更されていて、かつ'autowrite' + オプションが設定されていない場合には、コマンドは失敗する。変更を保存したいな + らば":w"コマンドを使用し、そのあとで":tag"を引数なしで実行する。これはタグが + スタック上に残っているためにうまく機能する。変更を失ってもよいのならば、 + ":tag!"コマンドを使用できる。 + + *tag-security* +Vimはセキュリティの都合上、いくつかのコマンドを禁止していることに注意すること。 +これはちょうど現在のディレクトリにあるexrc/vimrcファイルに'secure'オプションが +使われているのと同じように機能する。|trojan-horse|と|sandbox|を参照すること。 +{tagaddress}がバッファを変更したとき、次のようなエラーメッセージが表示される: + "WARNING: tag command changed a buffer!!!" +将来のバージョンではバッファを変更することは不可能になるだろう。これらはすべて +セキュリティの理由である: 誰かが気付かれないように実行される厄介なコマンドをタ +グファイルに隠しているかもしれない。例えば: > + :$d|/tag-function-name/ +{Vi ではこのセキュリティ予防は提供されない}. + +Viでは":tag"コマンドによってタグを検索すると、最新の検索パターンを上書きする。 +Vimでは'cpoptions'に't'フラグが設定されていなければ、前の検索パターンは引き続 +き記憶される。検索パターンはいつも検索履歴にあるので、もし検索に失敗したらそこ +を修正するとよい。 + + *emacs-tags* *emacs_tags* *E430* +Emacsスタイルのタグファイルは、Vimのコンパイル時に|+emacs_tags|機能を有効にし +た場合にのみ使用できる。すまないが、Emacsタグファイルについての説明はここでは +しない。それは下位互換のためにのみ提供している :-)。 + + *tags-option* +'tags'オプションはファイル名のリストで構成される。これらのファイルからタグが検 +索される。デフォルトの"tags"ファイルよりも、異なるtagsファイルがよく使われるだ +ろう。共通のtagsファイルにもよくアクセスするだろう。 + +以下のようなときは、リストの次のファイルを使わない: +- 現在のバッファに対するstaticタグが見つかった場合。 +- globalタグが見つかった場合。 +これらは'ignorecase'オプションに依存する。もしオフにしてあり、tagsファイルに大 +文字小文字が一致するタグがない場合、一致するタグを次のtagsファイルで検索する。 +もし一致するタグが見つからなければ、大文字小文字を無視して最初にマッチしたもの +が使われる。もし'ignorecase'がオンの場合、大文字小文字の区別なく、globalタグが +見つかった時点でそのタグが使用され、それ以降のtagsファイルは検索されない。 + +タグファイル名が"./"で始まるとき、'.'は現在のファイルのパスで置き換えられる。 +これにより、現在のファイルがあるディレクトリのtagsファイルを使用することができ +る(たとえ現在のディレクトリがどこであろうと)。"./"を使用する概念は、どのタグ +ファイルを最初に検索するかを決定することである: 現在のディレクトリにするか +("tags,./tags")、現在のファイルがあるディレクトリにするか("./tags,tags")であ +る。 + +例: > + :set tags=./tags,tags,/home/user/commontags + +この例では、現在のファイルがあるディレクトリの"tags"ファイルがまず検索される。 +次に現在のディレクトリにある"tags"ファイルが検索される。もしまだ見つからなけれ +ば、"/home/user/commontags"が検索される。 + +これは'cpoptions'に'd'フラグを含めることでVi互換のようにすることができる。 +"./tags"は現在のファイルがあるディレクトリのtagsファイルではなく、現在のディレ +クトリのtagsファイルを意味するようになる。 + +カンマの変わりにスペースを使用してもよい。文字列オプションに含めるためにはスペー +スの前にバックスラッシュが必要となる: > + :set tags=tags\ /home/user/commontags + +ファイル名にスペースを含めるにはバックスラッシュを3つ並べる。カンマをファイル +名に使用する場合にはバックスラッシュを2つ並べる。例えば: > + :set tags=tag\\\ file,/home/user/common\\,tags + +"tag file"と"/home/user/common,tags"というファイルが指定できる。'tags'オプショ +ンは"tag\ file,/home/user/common\,tags"という値を持つだろう。 + +'tagrelative'オプションをオンにし(デフォルト)、他のディレクトリでタグファイル +を使用すると、タグファイル内に記述されたファイル名はタグファイルがあるディレク +トリを基準として相対パスになる。 + +============================================================================== +5. タグファイルの書式 *tags-file-format* *E431* + + *ctags* *jtags* +tagsファイルは"ctags"のような外部コマンドによって生成される。それはそれぞれの +関数へのタグを含んでいる。"ctags"のあるバージョンでは"#defined"マクロやtypedef、 +enumなどに対してもタグを作ることができる。 + +tagsファイルを生成するプログラム: +ctags ほとんどのUnixシステムにある。C言語のみ対応し、基本的な + 機能を提供する。 +exuberant ctags これはとてもよいものだ。C言語、C++、Java、Fortran、 + Eiffel、そしてその他に対応している。多くの項目にタグを + 生成することができる。 + http://ctags.sourceforge.net をご覧ください。 +etags Emacsに連携する。多言語に対応している。 +JTags For Java, in Java. + http://www.fleiner.com/jtags/で入手できる。 +ptags.py For Python, in Python. + PythonのソースディレクトリTools/scripts/ptags.pyにある。 +ptags PerlのためにPerlで使う。これはここで見つかる。 + http://www.eleves.ens.fr:8080/home/nthiery/Tags/ +gnatxref Ada用。http://www.gnuada.org/ をご覧ください。 + gnatxrefはgnatパッケージの一部です。 + +tagsファイルは次の3つの形式のどれかで構成されなければならない: + +1. {tagname} {TAB} {tagfile} {TAB} {tagaddress} +2. {tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress} +3. {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} .. + +最初の形式は通常のタグで、Viで完全に互換性がある。伝統的なctagsによってのみ作 +られる形式である。これはしばしばグローバルな関数や他のファイルを参照する場合に +使用される。 + +タグファイルの行は<LF>または<CR><LF>で終わる。Macintoshでは<CR>も機能します。 +<CR>と<NL>は行内に決して現れない。 + + *tag-old-static* +2番目の形式はstaticタグにのみ使用できる。現在では廃れており、3番目の形式に置 +き換えられている。これはElvis 1.xとVim、それといくつかのバージョンのctagsによっ +てのみサポートされている。staticタグはローカル関数によく用いられ、{tagfile}内 +のみ参照する。staticタグでは2つの{tagfile}は正確に一致していなければならない +ことに注意すること。staticタグがどのように使われるかについては|tags-option|を +参照すること。 + +3番目の形式は新しい。各行の任意のフィールドに伝統的な情報を含む。これは以前の +Viとも互換性がある。新しいバージョンのctagsにのみサポートされている(Exuberant +ctagsとか)。 + +{tagname} 識別子。普通は関数名であるが、どんな識別子でも構わない。<Tab> + を含めることはできない。 +{TAB} 1文字の<Tab>。 注: 以前のバージョンではここでどんな空白文字も + 許可していた。これは{tagfile}内にスペースを使うことを断念した + ためである。コンパイル時に|+tag_any_white|機能を付加すれば再び + 使えるようになる。 *tag-any-white* +{tagfile} {tagname}の定義を含むファイル名。絶対パスでも相対パスでも構わ + ない。環境変数やワイルドカードを含んでもよい(ワイルドカードの + 使用法方法はあいまいだが)。<Tab>を含むことはできない。 +{tagaddress} カーソルをタグ上に移動するExコマンド。制限(|tag-security|を参 + 照)はあるが、どんなExコマンドでも使用可能である。 + Posixでは主に使われる行番号と検索コマンドのみ許可する。 +{term} ;" セミコロンとダブルクォートの2文字。これはViによってコメント + とみなされ、続く文字列は無視される。以前のViとの互換性を保つた + めにある。これは続くフィールドを無視する。 +{field} .. 任意のフィールドのリスト。各フィールドは次の書式を持つ: + + <Tab>{fieldname}:{value} + + {fieldname}はフィールドの識別子であり、アルファベットのみ使用 + 可能である[a-zA-Z]。 + {value}は任意の文字列であるが、<Tab>は使用できない。 + 以下の特殊文字が使用できる: + "\t"は<Tab>を表す + "\r"は<CR>を表す + "\n"は<NL>を表す + "\\"は\を表す + + ':'を持たないフィールドがある。これはタグの一種である。"kind:" + を先頭につけたものとして扱われる。 + kindsについては、それを提供するctagsのドキュメントを参照。 + + 現在Vimが認識できるその他のフィールドは"file:"(値はなし)だけで + ある。これはstaticタグに使われる。 + +tagsファイルの先頭行には、 + !_TAG_ +で始まる行を含めることができる。 +これらは極稀な"!"で始まるタグを除けば先頭行にソートされる。Vimは2つのタグを認 +識します。1つはファイルがソートされているかどうかを示す行で、この行が見つかっ +た場合には、Vimはtagsファイルに対して二分検索を使用する: + !_TAG_FILE_SORTED<TAB>1<TAB>{anything} ~ + +'ignorecase'がonのときに線形検索を避けるために、大文字と小文字を区別せずにタグ +ファイルがソートされたかもしれません。。詳細は'tagbsearch'を参照してください。 +そのときは'2'が使われます。 + !_TAG_FILE_SORTED<TAB>2<TAB>{anything} ~ + +Vimが認識するもう1つのタグはタグファイルのエンコーディングを指定するものです。 +これは|+multi_byte|が有効なときだけ利用できます。 + !_TAG_FILE_ENCODING<Tab>utf-8<Tab>{anything} ~ +ここで"utf-8"はタグのエンコーディングです。Vimはタグを検索するときに検索するタ +グを'encoding'からタグファイルのエンコーディングに変換します。そして、タグをリ +ストするときに元に戻します。変換が失敗したときは元のままのタグが使われます。 + + *tag-search* +コマンドはどんなExコマンドでも使用可能であるが、検索コマンドがよく使われるであ +ろう。 +例: + tag1 file1 /^main(argc, argv)/ ~ + tag2 file2 108 ~ + +コマンドは常に'magic'がセットされない状態で実行される。検索パターンで使用でき +る特殊文字は"^"(行頭)と"$"(<EOL>)だけである。|pattern|を参照すること。検索文字 +列中のバックスラッシュの前にはバックスラッシュをつけなければならないことに注意 +すること。これは以前のViと互換性がある。 + + *E434* *E435* +もしコマンドが普通の検索コマンド("/"か"?"で始まり、終わる)であるならば、いくつ +かの特別な扱いをされる: +- 検索はファイルの1行目から開始する。 + 検索方向は"/"で前方、"?"で後方となる。 + 'wrapscan'は問題にならず、いつもファイル全体を検索することに注意。{Vi は + 'wrapscan'を使用するため、それが原因でタグが見つからないこともある)。 {Vi + は別のファイルの2行目から検索を開始する。'wrapscan'を設定しないときには、別 + のファイルの1行目にあるタグは見つけられない} +- 検索が失敗した場合は、大文字小文字を無視してもう一度検索する。それも失敗した + 場合には次の検索が行われる: + "^tagname[ \t]*(" + (タグの先頭に'^'、末尾に"[ \t]*("が追加される)。関数名の検索の場合には、これ + はカラム0の位置にある関数名を見つけるだろう。関数の引数がtagsファイルを作成 + したときから変更になったときなどに役立つだろう。この検索でも見つからない場合 + にはさらに次の検索が行われる: + "^[#a-zA-Z_].*\<tagname[ \t]*(" + この意味は: '#'もしくは識別子で始まり、空白文字と'('が続くタグを含む行である。 + これは型が先頭にあるマクロ名や関数名を見つけるだろう。{Vi には拡張検索はない} + +============================================================================== +6. インクルードファイルの検索 *include-search* *definition-search* + *E387* *E388* *E389* + +これらのコマンドは対象となる文字列を現在のファイルと、遭遇するすべてのインクルー +ドファイルを再帰的に探す。これは変数や関数、マクロの定義を探すのに利用できる。 +現在のバッファに対してだけ検索をしたいのならば、|pattern-searches|に列挙されて +いるコマンドを使うとよい。 + +これらのコマンドは、コンパイル時に|+find_in_path|機能を使用不可にした場合には +利用できない。 + +他のファイルをインクルードする行に遭遇すると、現在のバッファを続けて検索する前 +にインクルードファイルを検索する。インクルードファイルによってインクルードされ +るファイルも同様に検索される。インクルードファイルが見つからなかった場合は黙っ +て無視する。見つからなかったファイルを知りたいときは|:checkpath|コマンドを使う。 +たぶん'path'オプションが正しく設定されていないのだろう。注: インクルードファイ +ルはファイルが検索され、そのファイルを編集中のバッファが存在しても対象にならな +い。バッファにある行は、現在のファイルにのみ適用される。 + +検索文字列は任意のキーワードや定義されたマクロが指定できる。キーワードの場合は +マッチするものを見つける。定義されたマクロの場合は'define'オプションにマッチす +る行だけが見つけられる。デフォルトはCプログラム用の"^#\s*define"である。他の言 +語の場合はおそらく変更したいだろう。C++用の例は'define'を参照。その文字列に改 +行を含めることはできません。一行内にマッチするものだけが見つかります。 + +定義されたマクロが見つかった場合、行末がバックスラッシュのときは次の行も表示す +る。 + +"["で始まるコマンドは現在のファイルの先頭から検索を開始する。"]"で始まるコマン +ドは現在のカーソル位置から検索を開始する。 + +'include'オプションは他のファイルをインクルードする行を定義する。デフォルトはC +プログラム用の"\^#\s*include"である。注: VimはCの構文を認識しない。もし +'include'オプションにマッチする行が"#ifdef/#endif"の間やコメント行であっても、 +とにかく検索される。'isfname'オプションはマッチパターンに続くファイル名を認識 +するために使用される。 + +'path'オプションは絶対パスを持たないインクルードファイルを探すためのディレクト +リを指定する。 + +'comments'オプションは単一行を表示するコマンド、もしくは行にジャンプするコマン +ドで使用される。これはコメントの開始パターンを定義する。それらの行は[!]を使用 +しない限り検索において無視される。ひとつの例外: 行が"^# *define"というパターン +にマッチしたとき、コメントであるとはみなされない。 + +もしマッチしたリストを表示して、その中からジャンプ先を選択したいならば、マッピ +ングが利用できる。例: > + + :map <F4> [I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."[\t"<CR> +< + *[i* +[i カーソルの下にあるキーワードを含む1行を表示する。検索 + はファイルの先頭から開始する。コメントとみなせる行は無 + 視される('comments'オプションを参照すること)。数字が与 + えられた場合は、先頭から指定した個数目にマッチした行を + 表示する。この場合はコメント行は無視されない。 + {Vi にはない} + + *]i* +]i "[i"と同様だが、検索が現在のカーソル位置から開始される。 + {Vi にはない} + + *:is* *:isearch* +:[range]is[earch][!] [count] [/]pattern[/] + "[i"や"]i"と同様だが、[range]で指定された範囲から検索す + る(デフォルト: ファイル全体)。 + [/]と[!]については|:search-args|を参照。{Vi にはない} + + *[I* +[I カーソルの下にあるキーワードを含む行をすべて表示する。 + 結果にはファイル名と行番号が表示される。検索はファイル + の先頭から開始される。{Vi にはない} + + *]I* +]I "[I"と同様だが、検索が現在のカーソル位置から開始される。 + {Vi にはない} + + *:il* *:ilist* +:[range]il[ist][!] [/]pattern[/] + "[I"や"]I"と同様だが、[range]で指定された範囲から検索す + る(デフォルト: ファイル全体)。 + [/]と[!]については|:search-args|を参照。{Vi にはない} + + *[_CTRL-I* +[ CTRL-I カーソルの下にあるキーワードを含む最初の1行にジャンプ + する。検索はファイルの先頭から開始する。コメントとみな + せる行は無視される('comments'オプションを参照すること)。 + 数字が与えられた場合は、先頭から指定した個数目にマッチ + した行にジャンプする。この場合はコメント行は無視されな + い。{Vi にはない} + + *]_CTRL-I* +] CTRL-I "[ CTRL-I"と同様だが、検索が現在のカーソル位置から開始 + される。{Vi にはない} + + *:ij* *:ijump* +:[range]ij[ump][!] [count] [/]pattern[/] + "[ CTRL-I"や"] CTRL-I"と同様だが、[range]で指定された + 範囲から検索する(デフォルト: ファイル全体)。 + [/]と[!]については|:search-args|を参照。{Vi にはない} + +CTRL-W CTRL-I *CTRL-W_CTRL-I* *CTRL-W_i* +CTRL-W i 新しいウィンドウを開き、カーソルの下にあったキーワード + を含む最初の1行に移動する。検索はファイルの先頭から開 + 始する。コメントとみなせる行は無視される('comments'オ + プションを参照すること)。数字が与えられた場合は、先頭 + から指定した個数目にマッチした行にジャンプする。この場 + 合はコメント行は無視されない。{Vi にはない} + + *:isp* *:isplit* +:[range]isp[lit][!] [count] [/]pattern[/] + "CTRL-W i"や"CTRL-W i"と同様だが、[range]で指定された + 範囲から検索する(デフォルト: ファイル全体)。 + [/]と[!]については|:search-args|を参照。{Vi にはない} + + *[d* +[d カーソルの下にあるマクロを含む最初のマクロ定義を表示す + る。検索はファイルの先頭から開始する。数字が与えられた + 場合は、先頭から指定した個数目にマッチした行を表示する。 + {Vi にはない} + + *]d* +]d "[d"と同様だが、検索が現在のカーソル位置から開始される。 + {Vi にはない} + + *:ds* *:dsearch* +:[range]ds[earch][!] [count] [/]string[/] + "[d"や"]d"と同様だが、[range]で指定された範囲から検索 + する(デフォルト: ファイル全体)。 + [/]と[!]については|:search-args|を参照。{Vi にはない} + + *[D* +[D カーソルの下にあるマクロを含むすべてのマクロ定義を表示 + する。結果にはファイル名と行番号が表示される。検索はファ + イルの先頭から開始される。{Vi にはない} + + *]D* +]D "[D"と同様だが、検索が現在のカーソル位置から開始される。 + {Vi にはない} + + *:dl* *:dlist* +:[range]dl[ist][!] [/]string[/] + "[D"や"]D"と同様だが、[range]で指定された範囲から検索 + する(デフォルト: ファイル全体)。 + [/]と[!]については|:search-args|を参照。{Vi にはない} + + *[_CTRL-D* +[ CTRL-D カーソルの下にあるキーワードを含む最初のマクロ定義にジャ + ンプする。検索はファイルの先頭から開始する。数字が与え + られた場合は、先頭から指定した個数目にマッチした行にジャ + ンプする。 {Vi にはない} + + *]_CTRL-D* +] CTRL-D "[ CTRL-D"と同様だが、検索が現在のカーソル位置から開始 + される。{Vi にはない} + + *:dj* *:djump* +:[range]dj[ump][!] [count] [/]string[/] + "[ CTRL-D"や"] CTRL-D"と同様だが、[range]で指定された + 範囲から検索する(デフォルト: ファイル全体)。 + [/]と[!]については|:search-args|を参照。{Vi にはない} + +CTRL-W CTRL-D *CTRL-W_CTRL-D* *CTRL-W_d* +CTRL-W d 新しいウィンドウを開き、カーソルの下にあったキーワード + を含む最初のマクロ定義に移動する。検索はファイルの先頭 + から開始する。数字が与えられた場合は、先頭から指定した + 個数目にマッチした行にジャンプする。 {Vi にはない} + + *:dsp* *:dsplit* +:[range]dsp[lit][!] [count] [/]string[/] + "CTRL-W d"と同様だが、[range]で指定された範囲から検索 + する(デフォルト: ファイル全体)。 + [/]と[!]については|:search-args|を参照。{Vi にはない} + + *:che* *:checkpath* +:che[ckpath] ファイルが見つからないすべてのインクルードファイル名を + リスト表示する。 + {Vi にはない} + +:che[ckpath]! すべてのインクルードファイル名をリスト表示する。 + {Vi にはない} + + *:search-args* +上記コマンドに共通の引数: +[!] 使用した場合は、コメントとみなせる行に対しても検索をする。使用しなかった + 場合は'comments'によってコメントとみなされる行やCコメント("//"の後ろか + /* */の間)にあるものは無視される。コメントとみなされた行が、途中からコメ + ントでなくなるようなときは見逃すかもしれないことに注意。また、コメント行 + であっても、('comments'によって)認識されないでとにかくマッチするかもしれ + ない。例: > + /* comment + foobar */ +< "foobar"に対する検索はマッチする。これは行がコメントとして認識されないた + めである(たとえ構文強調表示が認識したとしても)。 + 注: マクロ定義はたいていコメントと誤認されることはないので、":dlist"や + ":dsearch"、":djump"に[!]を使用することは大差がない。 +[/] パターンは'/'で囲むことができる。'/'なしの場合、"\<pattern\>"というパ + ターンを使うことによって、完全な語だけがマッチする。2つ目の'/'の後にだ + け、'|'を使うことによって次のコマンドを追加できる。例: > + :isearch /string/ | echo "the last one" +< ":djump", ":dsplit", ":dlist", ":dsearch"コマンドではパターンは検索パ + ターンとしてではなく文字通りに使われる。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/undo.jax b/ja/undo.jax new file mode 100644 index 000000000..094dd74a3 --- /dev/null +++ b/ja/undo.jax @@ -0,0 +1,125 @@ +COMMENT: UNDO及びREDO +STATUS: finished 6.3.054 +TRANSLATOR: Tomoya Takeuchi(ペンペン草) <zag97684@oak.zero.ad.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*undo.txt* For Vim version 6.3. Last change: 2003 Oct 21 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +undo と redo *undo-redo* + +基本的なことは|02.5|で説明されている。 + +1. undo と redo コマンド |undo-commands| +2. 2つの undo |undo-two-ways| +3. undo についての解説 |undo-remarks| + +============================================================================== +1. undo と redo コマンド *undo-commands* + +<Undo> or *undo* *<Undo>* *u* +u undo [回数] 変更。 {Vi: 一度のみ} + + *:u* *:un* *:undo* +:u[ndo] undo 一度変更. {Vi: 一度のみ} + + *CTRL-R* +CTRL-R undo してしまった後 変更 [回数] を redo する。 + {Vi: 再描画} + + *:red* *:redo* *redo* +:red[o] undo してしまった後一度の変更を redo する。 + {Vi: redo はない} + + *U* +U 行中のすべての最新変更を undo する。 {Vi: その行から + 動かない間} + +最後の変更は憶えられている。あなたは Undo と Redo コマンド上で、それぞれ +変更する前にテキストを戻すのに使える。あなたはその上もう一度の変更を適用 +することができ、Undo の前にテキストを元に戻すことができる。 + +"U" コマンドは undo/redo することによって、ちょうどその他のコマンドのように +扱われる。このように、"u" コマンドは Undo であり "U" コマンドと 'CTRL-R' +コマンドは redo だ。 "U", "u" と 'CTRL-R' を混同すると、あなたは "U" +コマンドが以前の "U" コマンドを実行する前の一行の状態に戻すことに気づく +だろう。これは混乱することかもしれしない。慣れてしまうのに練習してほしい。 +"U" コマンドは変更したとして、いつもバッファをマークしているだろう。その時 +"U" はどのように変更なくすのに、バックバッファを変更する方法は、まだよく考えて +変更されている。 +Undo するのに バッファの変更が無くなるまで "u" を使いなさい。 + +============================================================================== +2. 2つの undo *undo-two-ways* + +どんな undo と redo コマンドは 'cpoptions' 内の 'u' フラグに依存している。 +Vim の方法 ('u' 含まない) と Vi 互換の方法 ('u' 含む) がある。 +Vim の方法、"uu" は2度の変更を undo する。Vi 互換の方法, "uu" は何もしない +(undo を undo する) + +'u' 含まない, Vim の方法: +あなたは undo コマンドで時間をさかのぼれる。その時、redo コマンドでまた前に +進むことができる。あなたは undo コマンドの後に新しい変更を加えた場合、 +redo はこれ以上できなくなるだろう。 + +'u' 含む, Vi 互換の方法: +undo コマンドは 前の変更を undo する。そして、前の undo コマンドもだ。 +redo コマンドは以前の undo コマンドを繰り返す。それは変更コマンドを +繰り返さないので、"." を使いなさい。 + +例 Vim の方法 Vi 互換の方法 ~ +"uu" 2回 undo 何もしない +"u CTRL-R" 何もしない 2回 undo + +原理: Nvi は CTRL-R 代わりに "." コマンドを使用する。あいにく、これは + Vi 互換ではない。例えば "dwdwu." Vi では 2単語削除する。 + Nvi では何もしない。 + +============================================================================== +3. undo についての解説 *undo-remarks* + +記録されている変更数は 'undolevels' オプションでセットされている。 +それがゼロの場合、Vi 互換の方法は常に使用される。できなければ undo +なしは可能なことだ。あなたはメモリが足りない場合これを使いなさい。 + +バッファ ('a から 'z) に関するマークはテキストと共に同様に保存修正されている。 +{Vi これは些細な違い} + +すべての変更を undo してしまった時、バッファは変更されたとはみなさない。 +その時 ":q!" の代わりに :q" で Vim を終了することができる。{これは vi には +ない} Note これはファイルの最終書き込みと比較する。 ":w" の後に "u" を +タイプすることはバッファを実際に変更し、何が書かれたか比較をし、それで +バッファはその時変更されたとみなす。 + +|folding|をマニュアルで使っている時、フォールドは保存されないし復元もされな +い。フォールドの最初の行と最後の行が変更されないならフォールドは保たれる。 + +割り振られたレジスタは undo しながら削除する使われ方もできる。 いつもあなたは +テキストを削除し、レジスタ "1 に挿入する。レジスタ "1 の内容は "2 にシフトし +, ete。レジスタ "9 の内容は失しなわれる。あなたはコマンド '"1P' で +一番新しい削除したテキストを今戻すことができる。 (同様に、削除した +テキストが最後の削除またはコピー作業の結果である場合、'P' または 'p'もまた +これは名無レジスタの内容を挿入するように働く)。あなたは、'"3P' で 3回削除 +する前のテキストに戻すことができる。 + + *redo-register* +あなたは削除したテキストの一部より多く戻したい場合、あなたは繰り返しコマンド + "." の特別な機能を使用できる。それはレジスタ使用量を増やすだろう。 +それで、あなたは最初の ""1P" にしたい場合、"." に従うことは '"2P' の結果となる +だろう。これを繰り返すことはすべての割り振られたレジスタは書き込ませる結果なる +だろう。 + +例: あなたは 'dd....' でテキストを削除する場合、それは '1P....' で + もどすことができる。 + +あなたはどのレジスターが削除されたテキストかわからない場合、あなたは +:display コマンドが使える。選択すべきことは '"1P'で最初のレジスターを +試すのに、 それと 'u' をしたいのではない場合だ。これは、最初の内容を削除し、 +それとセカンドレジスターに関するプットコマンドを繰り返す。あなたのほしい +結果が得られるまで、 'u' を繰り返しなさい。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/visual.jax b/ja/visual.jax new file mode 100644 index 000000000..3f81b6599 --- /dev/null +++ b/ja/visual.jax @@ -0,0 +1,476 @@ +COMMENT: ビジュアルモード +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*visual.txt* For Vim version 6.3. Last change: 2004 Jun 06 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +ビジュアルモード *Visual* *Visual-mode* *visual-mode* + +ビジュアルモードは利用者にとってテキストの部分を選択する柔軟で簡単な方法であ +る。矩形範囲のテキスト(ブロック)を選択する唯一の方法でもある。 + +ユーザーマニュアルの|04.4|で簡単に説明されている。 + +1. ビジュアルモードを使う |visual-use| +2. ビジュアルモードの開始と終了 |visual-start| +3. ビジュアル領域の変更 |visual-change| +4. ビジュアル領域での操作 |visual-operators| +5. 矩形範囲の操作 |blockwise-operators| +6. 繰り返し |visual-repeat| +7. 使用例 |visual-examples| +8. 選択モード |Select-mode| + +{Vi にはビジュアルモードは無く、"visual"という名前はExモードとは区別するため +に、ノーマルモードを指して使われている} +{コンパイル時に|+visual|が無効にされていると使えません} + +============================================================================== +1. ビジュアルモードを使う *visual-use* + +ビジュアルモードを使うには3つの部分から構成される: +1. 選択したいテキストの開始位置を"v"、"V"またはCTRL-Vでマークする。 + カーソルの下の文字が開始位置として使用される。 +2. 選択したいテキストの終了位置に移動する。 + ビジュアルモードの開始位置からカーソルの下の文字を含むテキストが強調され + る。 +3. 操作キー(オペレータ)を押す。 + 強調された文字が操作対象になる。 + +ビジュアルモードでの強調表示の仕方を設定するのに、'highlight'オプションを使用 +することができる。 +文字のない場所を選択するには'virtualedit'を設定する。 + +強調されたテキストにはカーソルの下の文字も含まれる。 +けれども、'selection'オプションが"exclusive"に設定されていて、カーソルが +Visualエリアの後にあるとき、カーソルの下の文字は含まれない。 + +"v"では開始位置より前と、終了位置より後のテキストは強調されない。しかし全ての +大文字とアルファベット以外のキーによる操作は、"~"と"U"を除いて、表示に関係なく +行単位で働く。下記の操作一覧を参照。 + + *visual-block* +CTRL-V(矩形ビジュアルモード)は開始位置からカーソルの位置まで、テキストを矩形に +強調する。しかし、幾つかの操作(下記のリストを参照)はそれとは関係無く行単位で適 +用される。「変更」と「置き換え」の操作は強調されたテキストを削除し、選択範囲の +左上より挿入を開始する。 + +============================================================================== +2. ビジュアルモードの開始と終了 *visual-start* + + *v* *characterwise-visual* +v 文字単位のビジュアルモードを開始する。 + + *V* *linewise-visual* +V 行単位のビジュアルモードを開始する。 + + *CTRL-V* *blockwise-visual* +CTRL-V 矩形ビジュアルモードを開始する。Note: ウィンドウズでは + CTRL-Vはテキストの貼り付けにマップされることがあり、そ + の際にはビジュアルモードを開始できない。 + |CTRL-V-alternative|を参照。 + +ビジュアルモードの最中に<Esc>を使用したり、マウスの右ボタンをクリックしたり、 +または他のバッファに移動するコマンドを使用した場合には、強調は停止しテキストに +は何の操作も行なわれない。文字単位のビジュアルモード中に"v"を叩いた時や、矩形 +ビジュアルモード時の"CTRL-V"、行単位のビジュアルモードでの"V"も同様である。 +CTRL-Zを押すと強調は停止し、エディタが一時停止するか新しいシェルが開始される +|CTRL-Z|。 + + タイプ後の新モード: *v_v* *v_CTRL-V* *v_V* +旧モード "v" "CTRL-V" "V" ~ + +Normal ビジュアル 矩形ビジュアル 行ビジュアル +Visual ノーマル 矩形ビジュアル 行ビジュアル +blockwise Visual ビジュアル ノーマル 行ビジュアル +linewise Visual ビジュアル 矩形ビジュアル ノーマル + + *gv* *v_gv* +gv 最後に使用したのと同じ範囲のビジュアルモードを開始す + る。ビジュアルモードで使用すると、現在の選択領域と以前 + のものとが交換される。 + + *<LeftMouse>* +<LeftMouse> 現在のカーソル位置を設定する。ビジュアルモードが活動中 + の場合は停止する。オプション'mouse'が'n'もしくは'a'を + 含むときだけ働く。指定した位置がスクリーンの下端から + 'so'行以内の時にはテキストがスクロールアップする。指定 + した位置がスクリーンの上端から'so'行以内の時にはテキス + トがスクロールダウンする。 + + *<RightMouse>* +<RightMouse> ビジュアルモードが活動していないのならば開始する。カー + ソルの位置からクリックした位置までのテキストが強調され + る。ビジュアルモードが既に活動しているならば、開始位置 + か終了位置のどちらか近いほうがクリックした位置になる。 + オプション'mouse'が'n'もしくは'a'を含むときだけ働く。 + + Note: 'mousemodel'が"popup"の時には<RightMouse>の代わ + りに<S-LeftMouse>を使用する。 + + *<LeftRelease>* +<LeftRelease> <LeftMouse>と同じ位置でなければ、これは<LeftMouse>のよ + うに働く。古いxtermでは実行されているディスプレイ(環境 + 変数DISPLAYもしくは-display引数による)へのアクセスが無 + い限り、xterm上ではボタンが離されるまで選択領域を見る + ことはできない。'mouse'オプションが'n'もしくは'a'を含 + むときだけ働く。 + +ビジュアルモードが活動していない時に"v"、"V"もしくはCTRL-Vが数字(カウント)の後 +に使用されると、以前の強調領域の大きさが開始位置から使用される。その時カーソル +は強調領域の終了位置へ移動し通常の操作を行なうことができる。領域の形式(文字、 +行、矩形)は過去のものが使用される。 +- 行ビジュアルモード: 行数がカウント倍される。 +- 矩形ビジュアルモード; 行数とカラム数がカウント倍される。 +- 1行内の通常ビジュアルモード: 文字数がカウント倍される。 +- 複数行にまたがる通常ビジュアルモード: 行数がカウント倍され、最終行だけは前回 + の強調領域の最終行と同じ文字数が使用される。 +テキストの開始位置はカーソルの位置となる。強調テキストを拡張するための最後のコ +マンドとして"$"コマンドが使用された場合、領域は最長の行の最右端のカラムまで拡 +張される。 + +前回の時と全く同じ領域を強調したいときには、"gv"を使用できる |gv| |v_gv|。 + + *v_CTRL-C* +CTRL-C ビジュアルモード: ビジュアルモードを停止する。挿入モー + ドがぶら下がっている時には(モードメッセージが"-- + (insert) VISUAL --"となる)、そちらも終了する。 + +============================================================================== +3. ビジュアル領域の変更 *visual-change* + + *v_o* +o 強調されたテキストのもう一方の端へ移動する: 現在のカー + ソルの位置が強調されたテキストの開始地点になり、カーソ + ルは強調されたテキストのもう一方の端に移動する。強調さ + れた領域は同じままに保たれる。 + + *v_O* +O 強調されたテキストのもう一方の端へ移動する: これは"o" + に近い動作だが、ビジュアル矩形モードではカーソルが同じ + 行内のもう一方のコーナーに移動する。移動した先のキャラ + クタが画面上で1つ以上の文字幅を占有している場合(例えば + <Tab>文字)、強調される範囲は変更・拡張される。 + + *v_$* +矩形(ブロック)選択モード時に"$"コマンドを使用すると、選択されるテキストの右終 +端は選択されているラインのうち一番長いものによって決定される。この状態は水平方 +向への移動コマンドを使うことで終了する。 + +ブロックの終端へ移動するために色々なコマンドを使うことができるが、Exコマンド、 +変更を加えるコマンド、もしくはファイルを放棄するコマンドは使用できない。次の文 +字で開始するコマンド".pPiIaAO&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I, +CTRL-O を使用するとブザー音が発生し、ビジュアルモードが継続される。 + +同じバッファを表示している別のウインドウに切り替えるとき、そのウインドウのカー +ソル位置はVisual選択に合わせて調整されます。これは特にVisual選択の開始位置や終 +了位置を確認するのに便利です。選択範囲を変更するのに<RightMouse>が使えます。 +('mousemodel'が"popup"に設定されているときは<S-LeftMouse>)。 + +============================================================================== +4. ビジュアル領域での操作 *visual-operators* + +施すことのできる操作: + ~ 大/小文字の切替 |v_~| + d 削除 |v_d| + c 変更 (4) |v_c| + y ヤンク |v_y| + > 右シフト (4) |v_>| + < 左シフト (4) |v_<| + ! 外部コマンドによるフィルタ (1) |v_!| + = 'equalprg'オプションで指定されたフィルタ (1) |v_=| + gq 'textwidth'の長さによる行の整形 (1) |v_gq| + +使用できるオブジェクト: + aw (空白文字を含む) 1語(訳注:|word|) |v_aw| + iw 1語(訳注:|word|) |v_iw| + aW (空白文字を含む) 1語(訳注:|WORD|) |v_aW| + iW 1語(訳注:|WORD|) |v_iW| + as (空白文字を含む) 1文 |v_as| + is 1文 |v_is| + ap (空白文字を含む) 1段落 |v_ap| + ip 1段落 |v_ip| + ab (丸括弧文字を含む) ()のブロック |v_ab| + ib ()のブロックの中身 |v_ib| + aB (波括弧文字を含む) {}のブロック |v_aB| + iB {}のブロックの中身 |v_iB| + a< (大小記号文字を含む) <>のブロック |v_a<| + i< <>のブロックの中身 |v_i<| + a[ (各カッコ文字を含む) []のブロック |v_a[| + i] []のブロックの中身 |v_i[| + +加えて続くコマンドが使用可能: + : 強調された行にExコマンドを適用 (1) |v_:| + r 変更 (4) |v_r| + s 変更 |v_s| + C 変更 (2)(4) |v_C| + S 変更 (2) |v_S| + R 変更 (2) |v_R| + x 削除 |v_x| + D 削除 (3) |v_D| + X 削除 (2) |v_X| + Y ヤンク (2) |v_Y| + p 貼り付け |v_p| + J 連結 (1) |v_J| + U 大文字化 |v_U| + u 小文字化 |v_u| + ^] タグ検索 |v_CTRL-]| + I ブロック挿入 |v_b_I| + A ブロック追加 |v_b_A| + +(1): 常に全部の行、|:visual_example|を参照。 +(2): CTRL-Vを使ってないときは全部の行。 +(3): CTRL-Vを使ってないときは全部の行、CTRL-Vを使っているときは行の最後までを + 削除。 +(4): CTRL-Vを使っているときにはブロックにのみ作用。 + +ビジュアルモードでは特別なキー割り当てを行なうために":vmap"コマンドを使うこと +が出来ることに注意。例えば、"/"をビジュアル領域を拡張するのではなくて、選択し +たテキストによる検索を行なわせたい場合には: > + :vmap / y/<C-R>"<CR> +(<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし +'cpoptions'から'B'と'<'のフラグを外しておく必要がある) + +"""コマンドを使用するときにレジスタ名を指定したい場合には、操作キーを入力する +前にタイプする: "v{move-around}"xd"。 + +コマンドの回数を指定したい場合には、操作キーを入力する前にタイプする: +"v{move-around}3>" (行を3単位、右へインデントする)。 + + *{move-around}* +{move-around}は一連の移動コマンドのシーケンス。1つの移動コマンドを意味する +{motion}とは異なるので注意。 + +============================================================================== +5. 矩形範囲の操作 *blockwise-operators* + +{|+visualextra|機能を無効にしてコンパイルした場合には利用できない} + +注意: 'virtualedit'オプションを設定して、行末を越えた選択や、Tab文字の(表示上 +の)途中での選択ができる。 + +ビジュアル矩形挿入 *v_b_I* +矩形選択中に、I文字列<ESC> を行なうとブロック内の全ての行のブロック先頭にその +文字列が挿入され、行の長さはその分拡張される。選択ブロックの左側のカラムより短 +い行は変更されない。タブは見た目のカラムを保つように分解される。 +|v_b_I_example|を参照。 + +ビジュアル矩形追加 *v_b_A* +矩形選択中に、A文字列<ESC> を行なうとブロック内の全ての行のブロック末尾ににそ +の文字列が挿入される。ブロックの右端が真っ直ぐでない時には、行の長さの違いに +よって異なる動作がある。 + +1. ブロックが <C-v>$ で作成された場合 + このケースでは各行の最後に文字列が追加される。 +2. ブロックが <C-v>{move-around}で作成された場合。 + このケースではブロック内の各行のブロック末尾に文字列が追加され、行長が拡張 + される。さらにブロックの末尾を揃えるために空白文字が挿入される。 +|v_b_A_example|を参照。 +Note: "I"と"A"は変更によって行が拡張されるときに違う動作をする。これはわざとそ +うなっていて、あなたがしたいようにできる。 + +ビジュアル矩形変更 *v_b_c* +矩形選択されたテキストの全てが同じテキスト文字列によって置き換えられる。"c"を +押した時には選択されたテキストが消去された後に挿入モードに入る。テキスト(改行 +を除く)を入力できる。<Esc>を叩くと、選択されていた行全てに同じ文字列が入力され +る。 + +ビジュアル矩形変更(大文字) *v_b_C* +小文字の"c"と同様だが、選択領域が各行の末尾まで拡張される。 + + *v_b_<* +ビジュアル矩形シフト *v_b_>* +ブロックが'shiftwidth'によりシフトされる。ブロックの右端には拠らない。ブロック +の左端がどのポイントから右シフトを適用するかを決定し、'ts'と'et'に従い最適なタ +ブ文字が埋め込まれる(パディング)。ブロックの左端が何処まで左シフトするかを決定 +する。 + Note: ビジュアル矩形が同じタブ文字で始まり終わっていた場合に v_< のパディ + ングの動作にはバグがある(Vim 5.4C)。 +|v_b_>_example|を参照。 +|v_b_<_example|を参照。 + +ビジュアル矩形置換 *v_b_r* +強調された領域の全ての画面上の文字が同じ文字で置き換えられ、タブ文字は画面上の +レイアウトを保持するために仮想的な空白文字に置き換えられる。 +|v_b_r_example|を参照。 + + +============================================================================== +6. 繰り返し *visual-repeat* + +ビジュアルモードの操作を繰り返して行なう時には、最後の時と同じ量のテキストに対 +して操作が適用されている: +- 行ビジュアルモード: 同じ行数 +- 矩形ビジュアルモード: 同じ行数とカラム数 +- 1行内の通常ビジュアルモード: 同じ文字数 +- 複数行にまたがる通常ビジュアルモード: 同じ行数で、最終行だけは前回の時の最 + 終行と同じ文字数。 +テキストの開始位置は現在の位置となる。最後のコマンドとして強調されたテキストを +拡張するために"$"が使用された場合には、繰り返されるコマンドへは一番長い行の右 +端のカラムが適用される。 + + +============================================================================== +7. 使用例 *visual-examples* + + *:visual_example* +現在":"コマンドは行全体に対して働くだけである。行の一部を選択して、":!date"の +ような何かを行なっても1行全体が置換わってしまう。行の一部だけを置き換えたい場 +合には何かマッピングのようなものを作らなければならないだろう。将来のリリースで +は":"は部分的に動作するようになるだろう。 + +ここに1つ、選択されたテキストを"date"の出力に置き換える例がある: > + :vmap _a <Esc>`>a<CR><Esc>`<i<CR><Esc>!!date<CR>kJJ + +(<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし +'cpoptions'から'B'と'<'のフラグを外しておく必要がある) + +これが何をしているかというと: +<Esc> ビジュアルモードを終了する +`> 選択領域の最後に移動する +a<CR><Esc> 選択領域の直後に改行を挿入する +`< 選択領域の先頭に移動する +i<CR><Esc> 選択領域の直前に改行を挿入する +!!date<CR> 選択されたテキストをdateでフィルタリングする +kJJ 分割した行を連結して1つにする + + *visual-search* +選択したテキストを検索に使用することを可能にするマッピングのアイデアがここにあ +る: > + :vmap X y/<C-R>"<CR> + +(<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし +'cpoptions'から'B'と'<'のフラグを外しておく必要がある) + +特別なキャラクタ('.'や'*'のようなもの)が問題を引き起こすことに注意。 + +矩形ビジュアルモードの例 *blockwise-examples* +以下のテキストを使って、矩形モードのコマンドの使用法と結果を示していく。どの +ケースでも、初めカーソルはテストテキストの最初の行の先頭の'a'の上にあるものと +する。 +以下、modelineの設定は ":ts=8:sw=4:" であることを仮定している。 + +次のように設定しておくと理解の助けになるだろう。 +:set hls +/<TAB> +<TAB>とかかれている場所は本物のタブに読み替える。これが操作を可視化してくれ +る。 + +テストテキストは: + +abcdefghijklmnopqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +1. fo<C-v>3jISTRING<ESC> *v_b_I_example* + +abcdefghijklmnSTRINGopqrstuvwxyz +abc STRING defghijklmnopqrstuvwxyz +abcdef ghi STRING jklmnopqrstuvwxyz +abcdefghijklmnSTRINGopqrstuvwxyz + +2. fo<C-v>3j$ASTRING<ESC> *v_b_A_example* + +abcdefghijklmnopqrstuvwxyzSTRING +abc defghijklmnopqrstuvwxyzSTRING +abcdef ghi jklmnopqrstuvwxyzSTRING +abcdefghijklmnopqrstuvwxyzSTRING + +3. fo<C-v>3j3l<.. *v_b_<_example* + +abcdefghijklmnopqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +4. fo<C-v>3j>.. *v_b_>_example* + +abcdefghijklmn opqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmn opqrstuvwxyz + +5. fo<C-v>5l3jrX *v_b_r_example* + +abcdefghijklmnXXXXXXuvwxyz +abc XXXXXXhijklmnopqrstuvwxyz +abcdef ghi XXXXXX jklmnopqrstuvwxyz +abcdefghijklmnXXXXXXuvwxyz + +============================================================================== +8. 選択モード *Select* *Select-mode* + +選択モードはビジュアルモードに似ているように見えるが、受け付けるコマンドが少し +異なる。これはMicrosoft Windowsの選択モードに似ている。オプション'showmode'が +設定されている時には、"-- SELECT --"が最下の行に表示される。 + +選択モードに入るには: +- 'selectmode'が"mouse"を含んだ状態で、マウスを使って領域を選択する。 + 'mouse'が現在のモードのフラグを含んでなければならない。 +- 'selectmode'が"key"を含んだ状態で、シフトキーを押しながら表示できない移動コ + マンドを使用する。例えば: <S-Left>や<S-End>。'keymodel'が"startsel"を含んで + いる必要もある。 +- 'selectmode'が"cmd"を含んだ状態で "v", "V" もしくはCTRL-Vを使用する。 +- ノーマルモードで "gh", "gH" もしくは "g_CTRL-H" コマンドを使用する。 +- ビジュアルモードでCTRL-Gを押す。 *v_CTRL-G* + +選択モードのコマンド: +- 表示可能な文字、及び<NL>と<CR>は選択領域を削除し、Vimは入力モードに移行す + る。タイプした文字は挿入される。 +- シフトキーを押しながらの表示不可能な移動コマンド、は選択領域を拡張する。 + 'keymodel'は"startsel"を含まねばならない。 +- シフトキーを押さずに表示不可能な移動コマンドを使用すると、選択モードを終了す + る。'keymodel'は"stopsel"を含まねばならない。 +- ESCは選択モードを終了する。 +- CTRL-Oでビジュアルモードに切り替え1つだけコマンドを実行する。 *v_CTRL-O* +- CTRL-Gでビジュアルモードに切り替える。 + +それ以外では、入力された文字はビジュアルモードと同様に扱われる。 + +選択モードで操作が行なわれると、行選択の時には、選択された行が操作対象になる +が、文字選択の時のように扱われる。例えば、行全体を削除した時には、後でその内容 +を行の中間に貼り付けることが出来る。 + + +選択モード時のマッピングとメニュー *Select-mode-mapping* + +選択モード時にはビジュアルモードのマッピングとメニューが使用される。それらが実 +行される直前にVimは自動的にビジュアルモードに切り替わるので、ビジュアルモード +と同じ動作が有効になる。 + +マッピング及びメニューが終了した後には、選択領域が削除されるか、他のバッファに +切り替わるか、ウィンドウのレイアウトが変更されない限り、選択領域が再び有効にな +り選択モードになる。 + +文字が入力されたとき、選択領域が削除され挿入モードにはいると挿入モードのマッピ +ングが適用されます。選択モードで入力された文字に挿入モードのマッピングが適用さ +れると言うのはおそらく混乱を招きます。そのうえ言語マッピングも適用されます。 + + *gV* *v_gV* +gV 選択モードのマッピング及びメニューが終了したあとでビ + ジュアル領域が再度自動的に選択されるのを抑制する。マッ + ピングやメニューの終わる直前にこれを使用する。少なくと + もセレクションのあらゆる操作の後に行なわれるべきであ + る。 + + *gh* +gh 文字選択モードを開始する。これは"v"に似ているが、ビ + ジュアルモードの代わりに選択モードを開始する。 + 覚え方: "get highlighted" + + *gH* +gH 行選択モードを開始する。これは"V"に似ているが、 + ビジュアルモードの代わりに選択モードを開始する。 + 覚え方: "get Highlighted". + + *g_CTRL-H* +g CTRL-H 矩形選択モードを開始する。これはCTRL-Vに似ているが、ビ + ジュアルモードの代わりに選択モードを開始する。 + 覚え方: "get Highlighted". + + vim:tw=78:ts=8:ft=help:norl: From 461f74c1220e3070a14fa6e02fcf906e3e5ee75a Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 29 Jan 2005 05:39:03 +0000 Subject: [PATCH 010/783] add: translated files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@10 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/change.jax | 1379 +++++++++++++++++++++++++++++++++++++++++++++++ ja/debugger.jax | 133 +++++ ja/diff.jax | 367 +++++++++++++ ja/filetype.jax | 529 ++++++++++++++++++ ja/fold.jax | 566 +++++++++++++++++++ ja/gui_w16.jax | 187 +++++++ ja/if_cscop.jax | 463 ++++++++++++++++ ja/if_ruby.jax | 191 +++++++ ja/indent.jax | 530 ++++++++++++++++++ ja/quickref.jax | 1332 +++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 5677 insertions(+) create mode 100644 ja/change.jax create mode 100644 ja/debugger.jax create mode 100644 ja/diff.jax create mode 100644 ja/filetype.jax create mode 100644 ja/fold.jax create mode 100644 ja/gui_w16.jax create mode 100644 ja/if_cscop.jax create mode 100644 ja/if_ruby.jax create mode 100644 ja/indent.jax create mode 100644 ja/quickref.jax diff --git a/ja/change.jax b/ja/change.jax new file mode 100644 index 000000000..84f7c1a67 --- /dev/null +++ b/ja/change.jax @@ -0,0 +1,1379 @@ +COMMENT: テキストファイルの修正(削除・変更) +STATUS: finished 6.3.054 +TRANSLATOR: 北条耀 +TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*change.txt* For Vim version 6.3. Last change: 2004 May 08 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +このファイルでは、テキストを削除したり変更するコマンドの説明をする。この文章の +中では、「テキストを変更する」とは、一つのコマンドでテキストを削除し、別のテキ +ストに置き換えることを意味する。これらのコマンドは全てアンドゥできる。非Exコマ +ンドはコマンド "." で繰り返すことができる。 + +1. テキストの削除 |deleting| +2. 削除と挿入 |delete-insert| +3. 単純な変更 |simple-change| *changing* +4. 複雑な変更 |complex-change| +5. テキストのコピーと移動 |copy-move| +6. テキストの整形 |formatting| + +テキストの挿入に関しては |insert.txt| を参照。 + +============================================================================== +1. テキストの削除 *deleting* *E470* + +["x]<Del> または *<Del>* *x* *dl* +["x]x カーソル下から後の [count] 文字を [レジスタ x に入れ] + 削除する (行単位ではない|linewise|)。"dl" と同じであ + る。<Del> キーには [count] が使えない。代わりに、 + [count] の最後の文字を削除する (訳注: はて?どういうこ + とだ?)。<Del> キーが思ったように動作しないときは、 + |:fixdel| を参照。<EOL> の削除 (行の連結) については、 + 'whichwrap'を参照。 {Vi では <Del> が使えない} + + *X* *dh* +["x]X カーソルから前の [count] 文字を [レジスタ x に入れ] 削 + 除する (行単位ではない|linewise|)。"dh" と同じである。 + 'whichwrap' も参照。 + + *d* +["x]d{motion} {motion} でカーソルが動く範囲のテキストを [レジスタ x + に入れ] 削除する。例外については以下を参照。 + + *dd* +["x]dd [count] 行を [レジスタ x に入れ] 削除する (行単位 + |linewise|)。 + + *D* +["x]D カーソル下から行の最後までの文字と、[count]-1 行を、 + [レジスタ x に入れ] 削除する。"d$" と同義 + (行単位ではない|linesize|)。 + +{Visual}["x]x または *v_x* *v_d* *v_<Del>* +{Visual}["x]d または +{Visual}["x]<Del> 強調表示されたテキストを [レジスタ x に入れ] 削除する + ({Visual} については |Visual-mode| を参照)。{Vi には + ない} + +{Visual}["x]CTRL-H または *v_CTRL-H* *v_<BS>* +{Visual}["x]<BS> 選択モード内で: 強調表示されたテキストを [レジスタ x + に入れ] 削除する。 + +{Visual}["x]X または *v_X* *v_D* *v_b_D* +{Visual}["x]D 強調表示された行を [レジスタ x に入れ] 削除する + ({Visual} については |Visual-mode| を参照)。ビジュアル + ブロックモードでは、"D" は強調表示されたテキストと行末 + までの全てのテキストを削除する。 {Vi にはない} + + *:d* *:de* *:del* *:delete* +:[range]d[elete] [x] [range] 行 (既定値: 現在行) を [レジスタ x に入れ] 削 + 除する。 + +:[range]d[elete] [x] {count} + [range] 行目 (既定: 現在行 |cmdline-ranges|) から + {count} 行を [レジスタ x に入れ] 削除する。 + +これらのコマンドはテキストを削除する。これらは (":d" を除いて) コマンド "." で +繰り返したり、アンドゥできる。テキストのブロックを削除するには、Visualモードを +使う。レジスタの説明については、|registers| を参照。 + +コマンド "d{motion}" に関する例外: 移動が行単位でなく、移動の開始点と終了点が +同じ行になく、移動の開始点の前と終了点の後に空白しかない場合には、削除は行単位 +となる。このときユーザは空白のみの行が残ると思うかもしれないが、共に削除される。 + +オプション 'cpoptions' がフラグ 'E' を含んでいるときは、テキストの空の範囲を削 +除しようとすると (例えば、1列目での "d0")、エラーになる。 + + *J* +J [count] 行を連結する (最低は 2 行)。インデントを削除し、 + 空白を最大 2 個まで挿入する (以下を参照)。 + + *v_J* +{Visual}J 強調表示された行を連結する (最低は 2 行)。インデントを + 削除し、空白を最大 2 個まで挿入する (以下を参照) + {Vi にはない} + + *gJ* +gJ [count] 行を連結する (最低は 2 行)。空白の挿入や削除を + 行わない。 {Vi にはない} + + *v_gJ* +{Visual}gJ 強調表示された行を連結する (最低は 2 行)。空白の挿入や + 削除を行わない。 {Vi にはない} + + *:j* *:join* +:[range]j[oin][!] [range] 行を連結する。"J" と同様だが、[!] と共に使うと + 空白の挿入や削除を行わない。[range] の開始点と終了点が + 同じときは、このコマンドは何もしない。既定の動作では、 + 現在行を次行と連結する。 {Vi にはない} + +:[range]j[oin][!] {count} + [range] 行目 (既定では現在行 |cmdline-ranges|) からの + {count} 行を連結する。"J" と同様だが、[!] と共に使うと + 空白の挿入や削除を行わない。 {Vi にはない} + +これらのコマンドは、行の間の <EOL> を削除する。この結果、複数行が1行に連結され +る。これらのコマンド (":j" 以外) は、繰り返しやアンドゥができる。 + +これらのコマンド ("gJ" 以外) は <EOL> の場所に空白を1個挿入する。ただし行末に +空白が付いていたり、次の行が ')' で始まるときは挿入しない。これらのコマンド +("gJ" 以外) は次行の先頭あたりにある空白を全て削除する。オプション +'joinspaces' がオンのときは、これらのコマンドは '.', '!', '?' の後に2個の空白 +を挿入する (しかし 'cpoptions' がフラグ 'j' を含んでいるときは、2個の空白は +'.' の後にしか挿入しない)。 +'formatoptions' のフラグ 'M' と 'B' は、マルチバイト文字の前後に空白を挿入する +ときの動作を変更する |fo-table|。 + + +============================================================================== +2. 削除と挿入 *delete-insert* *replacing* + + *R* +R 置換モードに入る。打ち込んだ文字がカーソル下の既存の文 + 字をどんどん置き換えていく。入力されたテキストを + [count]-1 回繰り返す。詳細は |Replace-mode| を参照。 + + *gR* +gR 仮想置換モードに入る。打ち込んだ文字が画面上の既存の文 + 字をどんどん置き換えていく。そのため <Tab> は数文字を + 一回で置き換えることができる。入力されたテキストを + [count]-1 回繰り返す。詳細は |Virtual-Replace-mode| を + 参照。 + {Vi mが |+vreplace| 機能付きでコンパイルされたときのみ + 有効} + + *c* +["x]c{motion} {motion} のテキストを [レジスタ x にいれ] 削除し、挿入 + を始める。'cpoptions' がフラグ 'E' を含むときは、削除 + すべきテキストがないと (例えば、"cTx" でカーソルが 'x' + の直後にあるとき)、エラーが発生しInsertモードは始まら + ない (これはVi互換である)。 + 'cpoptions' がフラグ 'E' を含まないときは、コマンド + "c" は削除すべきテキストがなくても、必ず挿入モードを始 + める。 + + *cc* +["x]cc [count] 行を [レジスタ x に入れ] 削除し、挿入を始める + (行単位|linewise|)。'autoindent' がオンのとき、最初の + 行のインデントを保持する。 + + *C* +["x]C カーソル位置から行の終わりまでと、[count]-1 行を [レジ + スタ x に入れ] 削除し、挿入を始める。"c$" と同義である + (行単位でない|linewise|)。 + + *s* +["x]s [count] 文字を [レジスタ x に入れ] 削除し、挿入を始め + る (s は Substitute --置換 を意味する)。"cl" と同義で + ある (行単位でない|linewise|)。 + + *S* +["x]S [count] 行を [レジスタ x に入れ] 削除し、挿入を始める。 + "cc"と同義である (行単位|linewise|)。 + +{Visual}["x]c または *v_c* *v_s* +{Visual}["x]s 強調表示されたテキストを [レジスタ x に入れ] 削除し、 + 挿入を始める ({Visual} については |Visual-mode| を参 + 照)。 {Vi にはない} + + *v_r* +{Visual}["x]r{char} 強調表示されたテキストを全て {char} に置き換える。 + + *v_C* +{Visual}["x]C 強調表示された行を [レジスタ x に入れ] 削除し、挿入を + 始める。Visual blockモードでは少し動作が違う |v_b_C|。 + {Vi にはない} + *v_S* +{Visual}["x]S 強調表示された行を [レジスタ x に入れ] 削除し、挿入を + 始める ({Visual} については |Visual-mode| を参照)。 + {Vi にはない} + *v_R* +{Visual}["x]R 現在のところ {Visual}["x]S と同じである。次のヴァージョ + ンでは動作が変わるかもしれない。 {Vi にはない} + +Note: +- 挿入モード、置換モードは <Esc> で終了できる。 +- これらのモードでの他の特殊文字については、「テキストの挿入と置換」の章 + |mode-ins-rep| を参照。 +- [count] の効果は、Vimが挿入モードや置換モードを抜けた後で発生する。 +- 'cpoptions' がフラグ '$' を含んでいて、変更が1行以内である場合、Vimは削除さ + れるテキストを表示しつづけ、最後に削除された文字の位置に '$' を置く。 + +レジスタに関する説明は |registers| を参照。 + +置換モードは挿入モードと似ているが、文字を打ち込むたびに一文字ずつ削除される点 +が違う。行の最後に達すると、Vimはそれ以降は (挿入モードと同様に) 文字を追加す +る。置換モードでは、バックスペースキーは (もしあれば) 以前のテキストを復元する +(「テキストの挿入と置換」の章 |mode-ins-rep| を参照すること)。 + + *cw* *cW* +特殊な場合: コマンド "cw" と "cW" は、カーソルが空白上になければ、"ce" と "cE" +と同じ働きをする。これはVimが "cw" を単語の変更change-wordとして解釈し、また +「単語」には後に続く空白は含まれないからである。 {Vi: 後に余白が続く余白上での +"cw" は、最初の余白のみを変更する。これは多分バグである。"dw" は全ての余白を削 +除するからだ。とにかくVi風に動作させるときには 'cpoptions' にフラグ 'w' を含め +ること} + +"cw" の変更範囲に単語の後の空白も含めたいときは、次のマッピングを使うこと。 > + :map cw dwi +< + *:c* *:ch* *:change* +:{range}c[hange] テキストを行単位で別のテキストと置き換える。 + "." のみを含む行を打ち込むことで置換を終了する。 + {range} なしの場合、現在行のみを変更する。 + +============================================================================== +3. 単純な変更 *simple-change* + + *r* +r{char} カーソル下の文字を {char} に置き換える。 + {char} が <CR> か <NL> のとき、文字は改行に置き換わる。 + 文字を本当の <CR> に置き換えるには、CTRL-V <CR> を使う。 + CTRL-V <NL> は文字を <Nul> に置き換える。 + {Vi: CTRL-V <CR> は改行に置き換わり、何かの文字を <CR> + に置き換えることはできない} + [count] を指定すると、[count] 文字が [count] 個の + {char} に置き換わる。しかし {char} が <CR> か <NL> の + 場合、挿入される <CR> はただ1個である。"5r<CR>" は5文 + 字を1個の改行に置き換える。 + {char} が <CR> か <NL> のとき、Vimは自動インデントを行 + う。これは置き換えるべき文字を削除した後 "i<CR><Esc>" + を実行したような動作になる。 + {char} はダイグラフでもよい |digraph-arg|。 + |:lmap| のマッピングは {char} に適用される。Inlertモー + ドでは、コマンド CTRL-^ を使ってマッピングを切り替えら + れる |i_CTRL-^|。オプション 'encoding' がUnicodeの一種 + のときに composing character を使うことについては + |utf-8-char-arg| を参照。 + + *gr* +gr{char} カーソル下の仮想文字を {char} に置き換える。このコマン + ドはファイル上の空白ではなく、画面上の空白を置き換える。 + 詳細は |gR| と |Visual-Replace-mode| を参照。|r| と同 + 様、回数を指定できる。 + {char} の入力方法は |r| と同様である。 + {Vi mが |+vreplace| 機能付きでコンパイルされたときのみ + 有効} + + *digraph-arg* +|r| や |t| 等のNormalモードコマンドの引数は、1個の文字である。オプション +'cpoptions' がフラグ 'D' を含まないとき、この文字はダイグラフ |digraphs| と同 +様に入力できる。まず CTRL-K を打ち込み、次にダイグラフの2文字を入力する。 +{Vi mが |+digraphs| 機能付きでコンパイルされたときのみ有効} + + *case* +以下のコマンドは、アルファベットの大文字/小文字を切り替える。現在有効なロケー +ル |locale| が使われる。|:language| を参照。環境変数 LC_CTYPE の値に影響される。 + + *~* +~ オプション 'tildeop' がオフのとき: カーソル下の文字の + 大文字/小文字を切り替え、カーソルを右に移動させる。 + [count] が指定されたときは、[count] 文字に作用する。 + {Vi: カウントが使えない} + +~{motion} オプション 'tildeop' がオンのとき: {motion} のテキスト + の大文字/小文字を切り替える。 {Vi: ティルデは + operator として使用できない} + + *g~* +g~{motion} {motion} のテキストの大文字/小文字を切り替える。 + {Vi にはない} + +g~g~ *g~g~* *g~~* +g~~ 現在行の大文字/小文字を切り替える。 {Vi にはない} + + *v_~* +{Visual}~ 強調表示されたテキストの大文字/小文字を切り替える + ({Visual} については |Visual-mode| を参照)。 {Vi には + ない} + + *v_U* +{Visual}U 強調表示されたテキストを大文字にする ({Visual} につい + ては |Visual-mode| を参照)。 {Vi にはない} + + *gU* *uppercase* +gU{motion} {motion} のテキストを大文字にする。{Vi にはない} + 例: > + :map! <C-F> <Esc>gUcw`]a +< これはInsertモードで機能する。カーソルの前の単語を大文 + 字にするときに CTRL-F を打ち込めばよい。単語は小文字で + 入力し、後から大文字にする方が楽だ。 + + +gUgU *gUgU* *gUU* +gUU 現在行を大文字にする。 {Vi にはない} + + *v_u* +{Visual}u 強調表示されたテキストを小文字にする ({Visual} につい + ては |Visual-mode| を参照)。 {Vi にはない} + + *gu* *lowercase* +gu{motion} {motion} のテキストを小文字にする。 {Vi にはない} + +gugu *gugu* *guu* +guu 現在行を小文字にする。 {Vi にはない} + + *g?* *rot13* +g?{motion} {motion} のテキストをRot13エンコードする。{Vi にはない} + + *v_g?* +{Visual}g? 強調表示されたテキストをRot13エンコードする ({Visual} + については |Visual-mode| を参照)。 {Vi にはない} + +g?g? *g?g?* *g??* +g?? 現在行をRot13エンコードする。 {Vi にはない} + + +加算と減算 ~ + *CTRL-A* +CTRL-A カーソルの下または後の数またはアルファベットに [count] + を加える。 {Vi にはない} + + *CTRL-X* +CTRL-X カーソルの下または後の数またはアルファベットから + [count] を減じる。 {Vi にはない} + +コマンド CTRL-A と CTRL-X は(符号付)10進数と符号なし8進/16進数、アルファベッ +トに対し機能する。この動作はオプション 'nrformats' に依存する。 +- 'nrformats' が "alpha" を含むときは、Vimはカーソルの下または後のアルファベッ + トを変更する。これはアルファベット番号の箇条書きを作るのに便利である。 +- 'nrformats' が "hex" を含むときは、Vimは '0x' か '0X' で始まる数を16進数とし + て取り扱う。その数の最も右の文字が大文字であるか小文字であるかによって、変更 + 結果の16進数が大文字か小文字かが決定する。対象となった数にアルファベットが含 + まれない場合、Vimは前回の決定を使う。 +- 'nrformats' が "octal" を含むときは、Vimは '0' で始まる数を8進数として取り扱 + う。他の数は10進数とみなされ、マイナス符号が付いてもよい。カーソルが数の上に + あれば、コマンドはその数に適用される。そうでなければ、カーソルの右の数に適用 + される。 + +ゼロから始まる数 (全ての8進数、16進数を含む) に対して、Vimはできる限りその数の +文字数を保とうとする。"0077" 上で CTRL-A を使うと "0100" となり、"0x100" 上で +CTRL-X を使うと "0x0ff" となる。 Note: 'nrformats' が "octal" を含んでいるとき +は、0で始まる10進数は、8進数と区別できないため使用できないことに注意。 + +コマンド CTRL-A はマクロ内でたいへん便利である。例: 番号付きリストを作るには、 +次の方法を使う。 + +1. リストの最初の項目を作る。番号から始まるようにすること。 +2. qa - レジスタ 'a' への記録を始める +3. Y - 項目をコピーする +4. p - 項目のコピーを最初の項目の後に貼り付ける +5. CTRL-A - 番号を増やす +6. q - 記録をストップする +7. <count>@a - コピー、貼り付け、番号増加を <count> 回繰り返す + + +行を左右にずらす *shift-left-right* + + *<* +<{motion} {motion} の行を 'shiftwidth' 1個分左にずらす。 + + *<<* +<< [count] 行を 'shiftwidth' 1個分左にずらす。 + + *v_<* +{Visual}[count]< 強調表示された行を、'shiftwidth' の [count] 個分左にず + らす ({Visual} については |Visual-mode| を参照)。 + {Vi にはない} + + *>* + >{motion} {motion} の行を 'shiftwidth' 1個分右にずらす。 + + *>>* + >> [count] 行を 'shiftwidth' 1個分右にずらす。 + + *v_>* +{Visual}[count]> 強調表示された行を、'shiftwidth' の [count] 個分右にず + らす ({Visual} については |Visual-mode| を参照)。 + {Vi にはない} + + *:<* +:[range]< [range] の行を、'shiftwidth' 1個分左にずらす。 + 'shiftwidth' の複数個分ずらすには、'<' を繰り返す。 + +:[range]< {count} [range] (既定は現在行 |cmdline-ranges|) から始まる + {count} 行を 'shiftwidth' 1個分左にずらす。 + 'shiftwidth' の複数個分ずらすには、'<' を繰り返す。 + +:[range]le[ft] [indent] [range] の行を左揃えする。行のインデントは [indent] + (既定値は 0) に設定される。 {Vi にはない} + + *:>* +:[range]> [range] の行を、'shiftwidth' 1個分右にずらす。 + 'shiftwidth' の複数個分ずらすには、'>' を繰り返す。 + +:[range]> {count} [range] (既定は現在の行 |cmdline-ranges|) から始まる + {count} 行を、'shiftwidth' 1個分右にずらす。 + 'shiftwidth' の複数個分ずらすには、'>' を繰り返す。 + +コマンド ">" と "<" は、プログラムに含まれるインデントを変更するのに便利である。 +オプション 'shiftwidth' には、これらのコマンドが挿入、削除する空白の幅を設定す +る。'shiftwidth' は既定では 8 だが、例えば 3 に設定して、インデントをもっと少 +なくすることもできる。左方向へのシフトは、インデントがなくなったときに終了する。 +右方向へのシフトは、空行には適用されない。 + +'shiftround' がオンのとき、インデントは 'shiftindent' の倍数に丸められる。 + +'shiftwidth' がオンのとき、あるいは 'cindent' がオンで 'cinkeys' が '#' を含む +とき、右方向へのシフトは '#' で始まる行に適用されない (これらの行は、行の最初 +に位置すべきCプリプロセッサ指令であると考えられる)。 + +'expandtab' がオフ (既定値) のとき、Vimはインデントにできる限り多くの <Tab> を +使う。">><<" によって、空白のみで構成されたインデントを、<Tab> (と必要ならばい +くつかの空白) で構成されたインデントに置換できる。'expandtab' がオンのときは、 +Vimは空白のみを使う。">><<" によって、インデント内の <Tab> を空白に置換できる +(あるいは ":retab!" を使う)。 + +行を 'shiftwidth' の複数個分ずらすには、ビジュアルモードかコマンド ":" を使う。 +例: > + Vjj4> 3行をインデント4個分右に移動 + :<<< 現在の行をインデント3個分左に移動 + :>> 5 5行をインデント2個分右へ移動 + :5>> 5行目をインデント2個分右に移動 + +============================================================================== +4. 複雑な変更 *complex-change* + + *!* *filter* +!{motion}{filter} {motion} のテキストを外部プログラム {filter} でフィル + タ処理する。 + + *!!* +!!{filter} [count] 行を外部プログラム {filter} でフィルタ処理する。 + + *v_!* +{Visual}!{filter} 強調表示された行を外部プログラム {filter} でフィルタ処 + 理する。({Visual} については |Visual-mode| を参照)。 + {Vi にはない} + +:{range}![!]{filter} [!][arg] *:range!* + {range} 行を外部プログラム {filter} でフィルタ処理する。 + {filter} の後ろには '!' を付けてもよい。これは最後に実 + 行されたコマンドに置き換えられる。さらに [arg] を付け + ると、それがコマンドに付け加えられる。 Vimはフィルタコ + マンドの出力を一時ファイルに保存し、そのファイルをバッ + ファに読み込む。フィルタの出力を一時ファイルにリダイレ + クトするときはオプション 'shellredir' が使われる。 + 'cpoptions'に'R'フラグが含まれるとき、フィルタ処理され + た行のマークは削除されます。|:keepmarks|コマンドを使う + と削除されません。例: > + :keepmarks '<,'>!sort +< フィルタ処理のあと行数が少なくなっていた場合、すでにな + い行を指しているマークは削除されます。 + + *=* +={motion} {motion} の行を、オプション 'equalprg' で指定された外 + 部プログラムでフィルタ処理する。'equalprg' が空のとき + (これが既定) は、内部の整形用関数を使う |C-indenting|。 + しかし 'indentexpr' が空でないときは、それが使われる + |indent-expression|。 + + *==* +== [count] 行を ={motion} と同様にフィルタ処理する。 + + *v_=* +{Visual}= 強調表示されたテキストを ={motion} と同様にフィルタ処 + 理する。 {Vi にはない} + +フィルタとは、テキストを標準入力から受け取り、何らかの変更を加え、標準出力に送 +るプログラムのことである。以上のコマンドにより、テキストの一部をフィルタにかけ +ることができる。フィルタの例としては、行をアルファベット順にソートする "sort"、 +Cのプログラムを整形する "indent" (ただし、フィルタ機能を持ったバージョンが必要。 +全てのバージョンでできるわけではない) などがある。オプション 'shell' は、Vimが +フィルタコマンドを実行するときに使うシェルを指定する ('shelltype' も参照)。フィ +ルタコマンドはコマンド "." で繰り返せる。Vimは ":!" の後のコメント ('"' で始ま +る行) を認識しない。 + + + *:s* *:su* *:substitute* +:[range]s[ubstitute]/{pattern}/{string}/[&][c][e][g][p][r][i][I] [count] + [range] の各行で {pattern} のマッチを {string} に置き + 換える。 + {pattern}については|pattern|を参照してください。 + {string} は普通の文字列でもよいし、特別な指定方法を使っ + てもよい。|sub-replace-special| を参照。 + [range] と [count] が指定されないと、現在行内でのみ置 + 換を行う。 + [count] が指定されると、[range] の最終行から数えて + [count] 行で置換を行う。[range] が指定されないと、現在 + 行から開始する。 + |cmdline-ranges| も参照。 + フラグについては |:s_flags| を参照。 + +:[range]s[ubstitute] [c][e][g][p][r][i][I] [count] +:[range]&[&][c][e][g][p][r][i][I] [count] *:&* + 最後の置換を同じパターンかつ同じ置換文字列で、フラグを + つけずに繰り返す。フラグを追加することもできる + (|:s_flags|を参照)。 + Note ":substitute" の後ではフラグ '&' は使えないことに + 注意。パターンの区切り文字だと認識されてしまう。 + ":substitute" とフラグ 'c', 'g', 'r' の間の空白は必要 + 不可欠ではない。しかしスクリプト内では、混乱しないよう + に空白を入れておくのはよい考えである。 + +:[range]~[&][c][e][g][p][r][i][I] [count] *:~* + 最後の置換を同じ置換文字列で、最後の検索パターン (訳注: + "/" で使ったもの) に対して繰り返す。":&r" に似ている。 + フラグについては |:s_flags| を参照。 + + *&* +& ":s//~/" と同義 (最後の置換を繰り返す)。 Note 同じフラ + グが使われるわけではないので注意。実際の動作は違うかも + しれない。フラグも同じにするには ":&&" を使うこと。 + + *g&* +g& ":%s//~/&" と同義 (全ての行に対し、同じフラグで最後の + 置換を繰り返す)。 + 覚え方: 「グローバル (global --全体的な) 置換」 + {Vi にはない} + + *:snomagic* *:sno* +:[range]sno[magic] ... ":substitute"と同じだが、常に 'nomagic' を使う。 + {Vi にはない} + + *:smagic* *:sm* +:[range]sm[agic] ... ":substitute"と同じだが、常に 'magic' を使う。 + {Vi にはない} + + *:s_flags* +置換コマンドで使えるフラグ: + +[&] 先頭に指定しなければならない。前回の置換コマンドと同じフラグを使う。例: > + :&& + :s/this/that/& +< Note コマンド ":s" と ":&" では、前回と同じフラグは使われない。 + {Vi にはない} + +[c] 置換前に毎回確認する。マッチしている文字列を (強調表示グループ + |hl-IncSearch| で) 強調表示する。確認を求められたら、ユーザは以下のよ + うに応答する。 *:s_c* + 'y' そのマッチを置換する ("yes") + 'l' そのマッチを置換し、置換を終了する ("last") + 'n' そのマッチを置換せず、次に移る ("no") + <Esc> 置換を終了する + 'a' そのマッチと、以降の全てのマッチを置換する {Vi にはない} + 'q' 置換を終了する {Vi にはない} + CTRL-E 画面を上にスクロールする {Vi にはない。Vimが + |+insert_expand| 機能付きでコンパイルされたときのみ有効} + CTRL-Y 画面を下にスクロールする {Vi にはない。Vimが + |+insert_expand| 機能付きでコンパイルされたときのみ有効} + オプション 'edcompatible' がオンのとき、Vimはフラグ [c] を記憶し、それ + が指定される度にオン/オフを切り替えるが、新しい検索パターンが使われる + とリセットする。 + {Vi にはないもの: マッチの強調表示、'y' と 'n' 以外の応答} + +[e] 検索パターンが何もマッチしなかったとき、エラーメッセージを表示しない。 + 特にマッピング内ではエラーが発生しなかったかのように続行される。これは + 「パターンは見つかりませんでした」のエラーによるマッピングの中断を防ぐ + のに使える。しかし以下のエラーの発生は抑制されない。 + 「正規表現は文字で区切ることができません」 + 「\\ の後は / か ? か & でなければなりません」 + 「正規表現置換がまだ実行されていません」 + 「余分な文字が後ろにあります」 + 「(割込まれました)」 + {Vi にはない} + +[g] 行中の全てのマッチを置換する。このフラグなしだと、各行の1個目のマッチ + のみが置換される。オプション 'edcompatible' がオンのとき、Vimはこのフ + ラグを記憶し、指定される度にオン/オフを切り替えるが、新しい検索パター + ンが使われるとリセットする。'gdefault' がオンのときは、このフラグはオ + ンが既定値になり、フラグ [g] を指定したときにはオフになる。 + +[i] パターンの大文字/小文字の区別をしない。オプション 'ignorecase' と + 'smartcase' は使われない。 + {Vi にはない} + +[I] パターンの大文字/小文字を区別する。オプション 'ignorecase' と + 'smartcase' は使われない。 + {Vi にはない} + +[p] 最後に置換を行った行を表示する。 + {Vi にはない} + +[r] 引数のない ":&" か ":s" との連携でのみ有効。":&r" は ":~" と同様に動作 + する。検索パターンが空のとき、最後の置換コマンドや ":global" でのパター + ンではなく、最後の検索パターンを使用する。最後に検索パターンを使用した + コマンドが置換や ":global" だったときは、何もしない。最後のコマンドが + "/" のような検索コマンドだったときは、そのコマンドの検索パターンを使う。 + 引数付きの ":s" では、すでにそう動作するようになっていた。 > + :s/blue/red/ + /green + :s//red/ または :~ または :&r +< 最後のコマンドは "green" を "red" に置き換える。 > + :s/blue/red/ + /green + :& +< 最後のコマンドは "blue" を "red" に置き換える。 + {Vi にはない} + +NOTE パターンに 'magic' が適用されるかどうかを変更するフラグはないことに注意。 +代わりに違うコマンドが用いられる。これは、パターン解釈を飛ばすことでのみフラグ +を認識できるが、その一方でパターン解釈を飛ばすには 'magic' の適用状態が知られ +ている必要があるためである。 Catch 22! (訳注: ?) + +置換コマンドで {pattern} が空のときは、最後に使われた置換コマンドまたはコマン +ド ":global" のパターンが使われる。フラグ [r] を指定すると、最後の置換または検 +索コマンド、または ":global" のパターンを使用する。 + +Viとの互換性のため、これら2つの例外が許される。 +"\/{string}/" と "\?{string}?" は "//{string}/r" と同様の効果。 +"\&{string}&" は "//{string}/" と同様の効果。 + *E146* +'/' でパターンと置換文字列を囲む代わりに、英数字や '\', '"', '|' 以外であれば、 +他の文字を使うことができる。これは検索パターンや置換文字列に '/' を含む場合に +有益である。例 > + :s+/+//+ + +パターンの定義については |pattern| を参照。 + + *sub-replace-special* *:s\=* +{string}が"\="で始まるときは、それは式として評価されます。 +|sub-replace-expression|を参照してください。そうでなければこれらの文字が +{string}のなかで特別な意味を持ちます。 + + magic nomagic 作用 ~ + & \& マッチしたパターン全体に置き換わる *s/\&* + \& & '&' に置き換わる + \0 マッチしたパターン全体に置き換わる *\0* *s/\0* + \1 1番目の () 内のマッチしたパターンに置き換わる *s/\1* + \2 2番目の () 内のマッチしたパターンに置き換わる *s/\2* + .. .. *s/\3* + \9 9番目の () 内のマッチしたパターンに置き換わる *s/\9* + ~ \~ 前回の置換の {string} に置き換わる *s~* + \~ ~ '~' に置き換わる *s/\~* + \u 次の文字が大文字になる *s/\u* + \U 後に続く文字が (\E まで) 大文字になる *s/\U* + \l 次の文字が小文字になる *s/\l* + \L 後に続く文字が (\E まで) 小文字になる *s/\L* + \e \u, \U, \l, \L の終わり ( NOTE: <Esc> の意味ではない!) + *s/\e* + \E \u, \U, \l, \L の終わり *s/\E* + <CR> ここで行を2つに分ける (<CR> は CTRL-V <Enter> と入力する) + *s<CR>* + \r 同上 *s/\r* + \<CR> キャリッジリターン (CTRL-M) の挿入 (<CR> は CTRL-V <Enter> + と入力する) *s/\<CR>* + \n <NL> (ファイル内では <NUL>) の挿入 (改行を「起こさない」) + *s/\n* + \b <BS> の挿入 *s/\b* + \t <Tab> の挿入 *s/\t* + \\ '\' の挿入 *s/\\* + \x ('x' は上で説明されていない文字) 将来の拡張用に予約済み + +例: > + :s/a\|b/xxx\0xxx/g "a b" を "xxxaxxx xxxbxxx" に置換 + :s/\([abc]\)\([efg]\)/\2\1/g "af fa bg" を "fa fa gb" に置換 + :s/abcde/abc^Mde/ "abcde" を "abc", "de" (2行) に置換 + :s/$/^V^M/ "abcde" を "abcde^M" に置換 + +NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。これはVi互換ではないの +で変更された。代わりに '\' を使うこと。 + +コマンド テキスト 置換結果 ~ +:s/aa/a^Ma/ aa a<line-break>a +:s/aa/a\^Ma/ aa a^Ma +:s/aa/a\\^Ma/ aa a\<line-break>a + +(ここで ^M を使うには CTRL-V <CR> と打ち込むこと) + +"\1", "\2"などの番号付けは、パターン内でどの "\(" が最初に来るかによって決まる +(左から右の順)。括弧でくくられたグループが複数回マッチするときは、最後のものが +"\1", "\2" 等に使われる。例: > + :s/\(\(a[a-d] \)*\)/\2/ "aa ab x" を "ab x" に置換 + +\([ab]\)\|\([cd]\) のように括弧を '|' と連携して使っているとき、1番目と2番目の +括弧内のパターンはマッチをしない、すなわち、\1 と \2 は空になる。例: > + :s/\([ab]\)\|\([cd]\)/\1x/g "a b c d" を "ax bx x x" に置換 +< + +式で置換する *sub-replace-expression* + +置換文字列が"\="で始まるとき、続きは式と解釈されます。これは再帰的に機能しませ +ん。ある式の中でのsubstitute()では置換文字列に"\="を使うことはできません。 + +"<CR>", "\<CR>", "\\" 以外の文字の特別な意味|sub-replace-special|は無効にな +る。そのためexpressionの結果の文字列内では、'\' を1個使いたいときには2個含め、 +<CR> を挿入するには前に '\' を置き、改行するには '\' を前に置かずに <CR> を置 +く必要がある。 + +利便性のため<NL>文字も改行として扱われるが、バックスラッシュ(訳注: 円記号)でエ +スケープすることで実際の<NL>文字(ファイル中でNULとして扱われる)を扱うことがで +きる。 + +マッチしたテキストの全体は "submatch(0)" で参照できる。1番目の () 内でマッチし +たテキストは "submatch(1)" で参照できる。以降の () 内でマッチしたテキストも同 +様に参照できる。 + +注意: 正規表現の区切り文字が expression 内に現れてはいけない!区切りには "@" +や "|" を使うよう検討すること。Expression の結果に区切り文字が現れても問題はな +い。 + +例: > + :s@\n@\="\r" . expand("$HOME") . "\r"@ +こうすると置換を行った行の下に、環境変数 $HOME の値を含む新しい行が挿入される。 + + + *:pro* *:promptfind* +:promptf[ind] [string] + 検索ダイアログを表示する。 [string] が与えられると、そ + れ初期検索文字列になる。 + {Vi mのWin32版、Motif版、GTKのGUI版のみ} + + *:promptr* *:promptrepl* +:promptr[epl] [string] + 検索/置換ダイアログを表示する。 [string] が与えられる + と、それが初期検索文字列になる。 + {Vi mのWin32版、Motif版、GTKのGUI版のみ} + + *:ret* *:retab* +:[range]ret[ab][!] [new_tabstop] + 新たに指定されたタブストップ (タブ幅) に基づき、<Tab> + を含む空白の連続を全て、新しい空白と <Tab> の列に置き + 換える。新たなタブストップの指定がないか0が指定された + ときは、Vimはオプション 'tabstop' の現在の値を使用す + る。'tabstop' の現在の値は、既存のタブの幅を計るために + 常に使用される。'!' を付けると、Vimは通常の空白のみの + 列も、適切なタブに置き換える。 + 'expandtab' がオンのとき、Vimは全てのタブを適切な数の + 空白に置き換える。 + このコマンドは 'tabstop' を新たに指定された値に設定す + る (訳注: この事実は重要である)。ファイル全体に適用さ + れたときは (それが既定の動作)、ファイルの見かけに変化 + が起こることはないはずだ。 + 注意: このコマンドはCプログラム中の文字列内部にある + <Tab> 文字も修正する。これを避けるためには、プログラム + 内では "\t" を使うとよい (そうでなくても、これはよい習 + 慣である)。 + ":retab!" も空白の連続を <Tab> 文字に変えてしまい、 + printf() の出力をめちゃくちゃにするかもしれない。 + {Vi にはなく、Vim が |+ex_extra| 機能付きでコンパイル + されたときのみ有効} + + *retab-example* +タブストップが 8 で保存され、タブストップが 4 で編集されたファイルを編集するた +めに autocommand と ":retab" を使う例。警告: 文字列内の空白は変わってしまうこ +とがある!オプション 'softtabstop' も参照。 > + + :auto BufReadPost *.xx retab! 4 + :auto BufWritePre *.xx retab! 8 + :auto BufWritePost *.xx retab! 4 + :auto BufNewFile *.xx set ts=4 + +============================================================================== +5. テキストのコピーと移動 *copy-move* + + *quote* +"{a-zA-Z0-9.%#:-"} 次の削除、コピーまたは張り付けにレジスタ + {a-zA-Z0-9.%#:-"} を使う (大文字を使うと、削除やコピー + で、レジスタの内容を置き換えずに、末尾に追加する) + ({.%#:} は張り付けにのみ使用可能)。 + + *:reg* *:registers* +:reg[isters] 名前や番号付きレジスタの内容を全て表示する。 + {Vi にはない} + +:reg[isters] {arg} 名前や番号付きレジスタで、{arg} で指定されたものの内容 + を出力する。例: > + :dis 1a +< は、レジスタ '1' と 'a' を表示する。{arg} の中では空白 + を用いてよい。 {Vi にはない} + + *:di* *:display* +:di[splay] [arg] :registers と同じ。 {Vi にはない} + + *y* *yank* +["x]y{motion} {motion} のテキストを [レジスタ x に] コピーする。コピー + されるテキストがないとき (例えば1桁目で "y0" を行う)、 + オプション 'cpoptions' がフラグ 'E' を含んでいるならエ + ラーになる。 + + *yy* +["x]yy [count] 行を [レジスタ x に] コピーする (行単位 + |linewise|)。 + + *Y* +["x]Y [count] 行を [レジスタ x に] コピーする ("yy" と同義、 + 行単位|linewise|)。"Y" でカーソル位置から行の終わりま + でコピーしたいときは、":map Y y$" を使うこと(この方が + 論理的と言えるが、Vi互換ではない)。 + + *v_y* +{Visual}["x]y 強調表示されたテキストを [レジスタ x に] コピーする + ({Visual} については |Visual-mode| を参照)。 {Vi には + ない} + + *v_Y* +{Visual}["x]Y 強調表示された行を [レジスタ x に] コピーする + ({Visual} については |Visual-mode| を参照)。 {Vi には + ない} + + *:y* *:yank* +:[range]y[ank] [x] [range] の行を [レジスタ x に] コピーする。 + +:[range]y[ank] [x] {count} + [range] の最後の行 (既定では現在行 |cmdline-ranges|) + から数えて {count} 行を [レジスタ x に] コピーする。 + + *p* *put* *E353* +["x]p カーソルの後に、テキストを [count] 回 [レジスタ x から] + 張り付ける。 {Vi: カウントが使えない} + + *P* +["x]P カーソルの前に、テキストを [count] 回 [レジスタ x から] + 張り付ける。 {Vi: カウントが使えない} + + *<MiddleMouse>* +["x]<MiddleMouse> カーソルの前に、テキストを [count] 回 [レジスタ x から] + 張り付ける。レジスタは、どれかが指定されない限り "* を + 使う。マウスは、オプション 'mouse' がフラグ 'n' か 'a' + を含むときのみ使える。 {Vi にはない} + もしあなたがスクロールホイールを持っていて意図せずにテ + キストを貼り付けてしまうのなら、次のマッピングでマウス + の真ん中のボタンを無効化できます。 > + :map <MiddleMouse> <Nop> + :imap <MiddleMouse> <Nop> +< 複数クリックも無効にしたいなら|double-click|も参照して + ください。 + + *gp* +["x]gp "p" と似ているが、カーソルを挿入したテキストの直後に置 + く。 {Vi にはない} + + *gP* +["x]gP "P" と似ているが、カーソルを挿入したテキストの直後に置 + く。 {Vi にはない} + + *:pu* *:put* +:[line]pu[t] [x] [line] 行目 (既定では現在行) の後にテキストを [レジス + タ x から] コピーする。このコマンドは常に行単位 + |linewise|の動作をするので、コピーされたブロックを新し + い行として挿入するときに使える。 + レジスタには、expression を伴った '=' を使ってもよい。 + Expression としての評価は、コマンドの行の最後まで続く。 + 文字 '|' と '"' をコマンドの末尾と誤認しないようにする + には、それらをエスケープする (訳注: 前に '\' を置く) + 必要がある。例: > + :put ='path' . \",/test\" +< '=' の後に expression がないとき、前回の expression が + 使われる。それはコマンド ":dis =" で見ることができる。 + +:[line]pu[t]! [x] [line] 行目 (既定では現在行) の前にテキストを [レジス + タ x から] コピーする. + +["x]]p または *]p* *]<MiddleMouse>* +["x]]<MiddleMouse> "p" と似ているが、現在行に合わせてインデントを行う。マ + ウスは、'mouse' が 'n' か 'a' を含むときだけ使える。 + {Vi にはない} + +["x][P または *[P* +["x]]P または *]P* +["x][p または *[p* *[<MiddleMouse>* +["x][<MiddleMouse> "P" と似ているが、現在行に合わせてインデントを行う。マ + ウスは、'mouse' が 'n' か 'a' を含むときだけ使える。 + {Vi にはない} + +これらのコマンドを使って、ある場所から別の場所へテキストをコピーできる。まずコ +ピー、削除または変更コマンドを使って、テキストをレジスタに蓄える。そしてレジス +タの内容を、張り付けコマンドで文章中に挿入する。これらのコマンドで、あるファイ +ルから別のファイルへテキストを移動させることもできる。Vim はバッファを変更する +際にも、全てのレジスタの内容を保っているからである (コマンド CTRL-^ は、2個の +バッファを素早く切り替えられる). + + *linewise-register* *characterwise-register* +張り付けコマンド (":put" 以外) は、"." で繰り返したり、アンドゥできる。テキス +トをレジスタに蓄えるのに使われたコマンドが行単位|linewise|のものだったら、テキ +ストはカーソルのある行の次の行 ("p" のとき) や前の行 ("P" のとき) に張り付けら +れる。そうでなければ、テキストはカーソルの後 ("p" のとき) や前 ("P" のとき) に +挿入される。コマンド ":put" を使ったときは、テキストは常に次の行へ挿入される。 +"xp" というコマンド列で、カーソル上の文字と次の文字との入れ替えができる。現在 +行と次の行との入れ替えには、コマンド列 "ddp" を使う。(カーソルが単語の前の空白 +の上にあるとき) 次の単語とその次の単語との入れ替えには、コマンド列 "deep" を使 +う。張り付けコマンドを使った後には、コマンド "']" か "`]" で挿入された行の終わ +りに移動でき、コマンド "'[" か "`[" で挿入された行の最初に移動できる。 + + *put-Visual-mode* *v_p* *v_P* +Visualモードで |p| や |P| 等の張り付けコマンドを使ったとき、Vimは選択されたテ +キストをレジスタの内容に置き換えようとする。これがうまく動作するかどうかは、選 +択領域の種類とレジスタ内のテキストの種類による。ブロック単位の選択では、ブロッ +クのサイズと、選択領域の角が既存の文字上にあるかどうかにもよる。(実装上の詳細: +実際の動作は、まずレジスタの内容を選択領域の後に張り付け、その後で選択領域を削 +除するようになっている) + + *blockwise-register* +Visual blockモードで、レジスタにテキストを蓄えるコマンドを使うと、テキストのブ +ロックはカーソルの前 ("P" のとき) または後 ("p" のとき) から、現在行と引き続く +行にわたって、挿入される。テキストのブロック全体は同じ列から始まるように挿入さ +れる。そのため挿入されたテキストはコピーや削除されたときと同じ形を保っている。 +Vimは、このようにするために <Tab> を空白で置き換えることがある。しかし、テキス +トのブロックの幅が <Tab> の幅の整数倍でなく、さらに挿入されたブロックの後のテ +キストが <Tab> を含むとき、列揃えがおかしくなることがある。 + +Note 文字単位のコピーコマンドの後、コピーされたテキストの中でバッファの先頭に +一番近い文字の上にカーソルが置かれることに注意。つまり "yl" ではカーソルは動か +ないが、"yh" ではカーソルは1文字左に動く。 +理論的説明: Viでは、後方移動を伴ったコマンド "y" ではコピーされたテキスト + の先頭にカーソルを移動させないことがあった。これは再表示が省か + れたためである。Vimでは Posix に定められた通り、常に先頭の文字 + にカーソルを移動させる。 +行単位のコピーコマンドではカーソルは選択の最初の行に置かれるが、カラムは変更さ +れない。なのでその位置はコピーされた最初の文字の上ではないかもしれない。 + +レジスタには 9 種類ある: *registers* *E354* +1. 無名レジスタ "" +2. 10個の番号付きレジスタ "0 から "9 +3. 小削除用レジスタ "- +4. 26個の名前付きレジスタ "a から "z または "A から "Z +5. 4個の読み取り専用レジスタ ": と ". と "% と "# +6. expression 用レジスタ "= +7. 選択領域用レジスタ "* と "+ と "~ +8. 消去専用レジスタ "_ +9. 最終検索パターン用レジスタ "/ + +1. 無名レジスタ "" *quote_quote* *quotequote* +このレジスタには、コマンド "d", "c", "s", "x" 等で削除されたテキストや、"y" 等 +のコピーコマンドでコピーされたテキストが蓄えられる。特定のレジスタが指定されて +いてもいなくても関係ない (例えば "xdd でもこれが使われる)。例外はレジスタ '_' +である。 "_dd は、削除されたテキストをどのレジスタにも蓄えない。このレジスタの +中身は、レジスタを指定しない張り付けコマンド (p や P) で使うことができる。加え +て、このレジスタは '"' という名前で使うことができる。これは、使うときには二重 +引用符 '"' を2 個打ち込むということである。レジスタ "" に対する書き込みはレジ +スタ "0 にも書き込むことになる。 +{Vi ではレジスタの内容はファイルを変更するときに失われ、'"' もない} + +2. 番号付きレジスタ "0 から "9 *quote_number* *quote0* *quote1* + *quote2* *quote3* *quote4* *quote9* +これらのレジスタには、コピーや削除コマンドによってテキストが蓄えられる。 +番号付きレジスタの 0 には、一番最近にコピーしたテキストが蓄えられるが、コピー +の際に ["x] として別のレジスタ名を指定したときは、これには蓄えられない。 +番号付きレジスタ 1 には、一番最近に削除したり変更したテキストが蓄えられるが、 +コマンドに別のレジスタ名を指定したり、削除や変更したテキストが1行以下だったり +したときは、これには蓄えられない (そのときは小削除用レジスタが使われる)。例外 +は、以下のコマンドを使ったときである。|%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, +|{|, |}|。このときは必ずレジスタ "1 が使われる (これはVi互換の動作である)。削 +除や変更したテキストが1行以下だったときは、レジスタ "- も使われる。 +削除や変更が行われるたびに、レジスタ 1 の内容はレジスタ 2 に、レジスタ 2 の内 +容はレジスタ 3 に、という風にずれていく。レジスタ 9 の内容は失われる。 +{Vi では番号付きレジスタの内容はファイルを変更する際に失われる。レジスタ 0 は +ない} + +3. 小削除用レジスタ "- *quote_-* *quote-* +このレジスタには、範囲が1行以下の削除コマンドで削除されたテキストが蓄えられる。 +ただし、コマンドに ["x] で別のレジスタ名を指定したときはこれには蓄えられない。 +{Vi にはない} + +4. 名前付きレジスタ "a から "z または "A から "Z *quote_alpha* *quotea* +これらのレジスタが使われるのは、ユーザに指定されたときのみである。コピーや削除 +の際にこれらのレジスタを小文字で指定すると、コピーや削除されたテキストが蓄えら +れ、元から入っていたテキストは消える。大文字で指定すると、元から入っていた内容 +の後ろに新しいテキストを付け加える。 + +5. 読みとり専用レジスタ ": と ". と "% と "# +読みとり専用レジスタには '%' と '#' と ':' と '.' がある。コマンド "p", "P", +":put" および CTRL-R でのみ使うことができる。 {Vi にはない} + *quote_.* *quote.* *E29* + ". 最後に挿入されたテキストが蓄えられる (Insertモードのコマンド + CTRL-A や CTRL-@ で挿入されるものと同じテキストである)。 Note: + これはコマンドライン上での CTRL-R では使えないことに注意。動作 + が少し異なり、テキストを張り付けるというより挿入するような動作 + をする (挿入されるテキストに 'textwidth' 等のオプションが影響 + する)。 + *quote_%* *quote%* + "% カレントファイルの名前が蓄えられる。 + *quote_#* *quote#* + "# 代替ファイルの名前が蓄えられる。 + *quote_:* *quote:* *E30* + ": 一番最近に実行されたコマンドラインの内容が蓄えられる。例: 前回 + のコマンドラインによるコマンドを実行するには、"@:" が使える。 + コマンドラインがこのレジスタに蓄えられるのは、コマンドライン内 + にコマンドが最低でも1文字打ち込まれたときである。そのため、コ + マンドが完全にキーマッピングから実行されたときには、この内容に + 変化はない。 + {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} + +6. Expression レジスタ "= *quote_=* *quote=* +これは、本当はテキストを蓄えるレジスタではないが、レジスタを使うコマンドで +expression を使うために使える。この expression レジスタは読み取り専用である。 +これにはテキストをコピーできない。'=' を打ち込むと、カーソルはコマンド行に移動 +し、あらゆる expression を入力することができる (|expression| を参照)。コマンド +ラインから入力できる普通の編集用コマンドは、expression 用の特別履歴も含め、全 +て使用可能である。<CR> を打ち込んでコマンドライン入力を終了させると、 +expression の結果が計算される。 <Esc> を打ち込んで終了させると、 expression は +捨てられる。 expression が入力されないときは、(コマンド "/" と同様) 前回の +expression が使われる。レジスタ "= が "p" で使われると、文字列は <NL> 文字 (訳 +注: New Line --改行) の所で分割される。文字列が <NL> で終わっていたら、これは +行単位のレジスタと見なされる。 {Vi にはない} + +7. 選択範囲レジスタ "* と "+ +これらのレジスタは、GUIで、選択されたテキストを蓄えたり取り出すために使われる。 +|quotestar| と |quoteplus| を参照。クリップボードが利用できないときは、無名レ +ジスタが代わりに使われる。 {Vi にはない} + +Note "* と "+ に区別があるのは X11 システムのみであることに注意。違いについて +は |x11-selection| を参照。MS-Windowsでは "* と "+ は実際には同義で、クリップ +ボード |gui-clipboard| を使用する。 + + *quote_~* *quote~* *<Drop>* +この読み込み専用の "~ レジスタは最後にドラッグアンドドロップされたテキストを +提供する。何かがVimにドロップされたとき、 "~ レジスタがそれで埋められ、 +<Drop>仮想キーが通知される。このキーをリマップして使うことができる。デフォル +トでは(全てのモードにおいて) "~ レジスタの内容をカーソルの位置に挿入する。 +{Vi にはない} +{|+dnd|付きでコンパイルされたときのみ有効。現在はGTK GUIでのみ使える。} + +Note: "~ レジスタはプレインテキストをVimにドロップしたときのみ使われる。URI +のリストは内部で扱われる。 + +8. 消去専用レジスタ "_ *quote_* +このレジスタを指定してテキストを削除しても、(訳注: レジスタには) 何も起こらな +い。そのため、普通のレジスタに影響を与えずに削除が行える。このレジスタから張り +付けようとしても、何も出てこない。 {Vi にはない} + +9. 最終検索パターン用レジスタ "/ *quote_/* *quote/* +最後に使われた検索パターンが蓄えられる。これはコマンド "n" やオプション +'hlsearch' による強調表示に使われる。 +このレジスタは ":let" で変更できるので、'hlsearch' による強調表示を、実際に検 +索を行わずに別のマッチに適用することができる。このレジスタを使ってコピーしたり +削除することはできない。 {Vi にはない} + + *@/* +レジスタには、コマンド ":let" で書き込むことができる |:let-@| 。例: > + :let @/ = "the" + +レジスタを指定せずに張り付けコマンドを使うと、最後に書き込みが行われたレジスタ +が使われる (その内容は無名レジスタと同じである)。混乱したときは、コマンド +":dis" を使うとレジスタの内容が分かる (このコマンドは、全てのレジスタの内容を +表示する。無名レジスタは '"' と示される)。 + +以下の3個のコマンドは、必ず行全体に対して働く。 + +:[range]co[py] {address} *:co* *:copy* + [range] 行を、{address} 行目の下にコピーする。 + + *:t* +:t ":copy" と同義。 + +:[range]m[ove] {address} *:m* *:mo* *:move* *E134* + [range] 行を、{address} 行目の下に移動する。 + +============================================================================== +6. テキストの整形 *formatting* + +:[range]ce[nter] [width] *:ce* *:center* + [range] の行を、幅 [width] (既定値は 'textwidth'、 + 'textwidth' が 0 のときは 80) に基づいて中央揃えする。 + {Vi にはなく、Vimが |+ex_extra| 機能付きでコンパイルさ + れたときのみ有効} + +:[range]ri[ght] [width] *:ri* *:right* + [range] の行を、幅 [width] (既定値は 'textwidth'、 + 'textwidth' が 0 のときは 80) に基づいて右揃えする。 + {Vi にはなく、Vimが |+ex_extra| 機能付きでコンパイルさ + れたときのみ有効} + + *:le* *:left* +:[range]le[ft] [indent] + [range] の行を左揃えする。行中のインデントを [indent] + (既定値 0) に設定する。 {Vi にはない} + {Vi mが |+ex_extra| 機能付きでコンパイルされたときのみ + 有効} + + *gq* +gq{motion} {motion} の行を整形する。オプション 'textwidth' + は整形された各行の長さを制御する (後述)。'textwidth' + が 0 なら、整形された行の長さは画面の幅となる (ただし、 + 最大で79)。 {Vi にはない} + 'formatoptions' は、整形の仕方を制御する |fo-table|。 + NOTE: 以前はコマンド "Q" でこの機能を行っていた。やは + り整形に "Q" を使いたいならば、次のマッピングを使うこ + と。 > + :nnoremap Q gq + +gqgq *gqgq* *gqq* +gqq 現在行を整形する。 {Vi にはない} + + *v_gq* +{Visual}gq 強調表示されたテキストを整形する。({Visual}については + |Visual-mode| を参照)。 {Vi にはない} + + *gw* +gw{motion} {motion}で動いた範囲の行を整形する。|gq|に似ているが + カーソルは元の位置に戻る。'formatprg'は使われない。 + {Vi にはない} + +例: 現在の段落を整形するには、次のようにする。 *gqap* > + gqap + +コマンド "gq" は、移動コマンドによってカーソルが動くはずの位置にカーソルを移動 +させる。このため、"." で整形を繰り返すことができる。これは、"gqj" (現在行と次 +行を整形) と、"gq}" (段落の最後までを整形) で有用である。 NOTE: 'formatprg' が +設定されているときは、"gq" を実行すると (フィルタコマンド使用時と同様に) カー +ソルは整形された最初の行に移動する。 + +カーソルのある位置の段落をフォーマットし、その位置からさらに編集を再開するには +こうします。 > + gwap +いつも段落をフォーマットしておきたいなら'formatoptions'に'a'フラグを追加してく +ださい。|auto-format|も参照してください。 + +オプション 'autoindent' がオンのとき、Vimは最初の行のインデントを続く行に対し +て適用する。 + +テキストの整形処理は空の行には変更を加えない (しかし、空白のみで構成された行に +は変更を行う!)。 + +オプション 'joinspaces' は、行が連結されるときに使われる。 + +オプション 'formatprg' には、Vimがテキストの整形に使う外部プログラムの名前を設 +定する。外部プログラムによる整形処理には、'textwidth' や他のオプションは何の影 +響も与えない。 + + *right-justify* +テキストを右揃えするコマンドは、Vimには存在しない。"par" 等の外部コマンド (例: +"!}par" で段落の最後までを整形する) を実行したり、'formatprg' に "par" を指定 +することで、これを行うことができる。 + + *format-comments* +Vimは特殊な方法でコメントを整形できる。Vimは行の最初の特定の文字列 (空白を無視 +する) によって、コメントを認識できる。コメントには3種類が使える。 + +- 各行の最初で繰り返されるコメント文字列。例えば、"#" で始まるシェルスクリプト + のコメントなど。 +- 最初の行にのみ現れ、続きの行には現れないコメント文字列。例えば、このリストに + おけるダッシュ '-'。 +- 最初の文字列、最後の文字列、そしてその間の行の3つの部分から成るコメント。開 + 始部分、中間部分、終了部分に使われる文字列は異なる。例えば、C言語形式のコメ + ント。 > + /* + * これは C のコメント + */ + +オプション 'comments' は要素のコンマ区切りのリストである。各要素はコメント文字 +列の種類を定義している。要素は次のように構成される。 + {flags}:{string} + +{string} は普通のテキストで、これがなければならない。 + +{flags}: + n 入れ子になったコメント。混在した要素の入れ子も有効である。'comments' + が "n:),n:>" であれば、"> ) >" で始まる行はコメント。 + + b {string} の後に余白 (<Space>、<Tab> または <EOL>) が必要。 + + f 最初の行のみがコメント文字列を持つ。次の行にはコメントを繰り返さないが、 + インデントは保持する(例、bullet-list)。 + + s 3部コメントの開始部分。 + + m 3部コメントの中間部分。 + + e 3部コメントの終了部分。 + + l 最初か最後の部分に対して、中間の部分を左揃えする (既定)。's'か 'e' と + 共に使われたときのみ認識される。 + + r 最初か最後の部分に対して、中間の部分を右揃えする。's' か 'e' と共に使 + われたときのみ認識される。 + + O コマンド "O" ではこのコメントを使わない。 + + x 3部コメントで、新しい行の先頭に、中間部分のコメントがすでに自動で挿入 + されたとき、終了部分のコメント文字列の最後の文字を打ち込むだけで、コメ + ントを終了させる。詳細は以下を参照。 + + {digits} + 's' か 'e' と一緒に使って: 中間の部分に余分にインデントを取る。これは、 + 開始部分か終了部分に基づいて中間部分を左揃えしておき、その後オフセット + を加えるという使い方が出来る。 + + -{digits} + {digits} に似ているが、インデントを減らす。開始部分と終了部分に減らす + べきインデントが存在しているときのみ機能する。 + +コメント文字列にフラグ 'f', 's', 'm', 'e' のいずれも指定しないとき、Vimはコメ +ント文字列を行の最初に繰り返すと仮定する。フラグ欄は空になる。 + +{string} の前や後にある余白は、{string} の一部とされる。コメント文字列に必要で +ない限り、余白を前や後に付けないこと。 + +あるコメント開始文字列が他のコメントの一部であるときは、共通部分の後で特定の部 +分を指定すること。例えば、"-" と "->" の両方を含みたいときは、次のようにする。 > + :set comments=f:->,f:- + +3部コメントには常に開始部分、中間部分、終了部分を指定しなければならない。そし +て、他の要素を間に入れてはならない。C言語での3部コメントの例は次の通り。 > + sr:/*,mb:*,ex:*/ +"*ptr" がコメントとして認識されないように、中間部分の文字列がフラグ 'b' を含ん +でいる。3部コメントでは、Vimは開始部分と中間部分の文字列の後のテキスト内に、最 +後の文字列が含まれていないかを調べる。終了部分の文字列が見つかると、コメントは +次の行には続かない。3部コメントには、Vimが中間の行を認識できるようにするために、 +中間部分の文字列を指定しなければならない。 + +上記の3部コメントの定義における、フラグ "x" の使用について注意しておく。Cコメ +ントでリターンを打てば、Vimは新しい行に対して " * " のようなコメントの中間部分 +の開始文字列を挿入する。このコメントを閉じるには、新しい行において何も打ち込む +前に "/" と打ち込めばよい。これは中間のコメント指示を最後のコメント指示に置き +換え、" */" とする。その前にバックスペースを打ち込む必要はない。 + +例: > + "b:*" "*" の後に非ブランク文字が付いていなければ、"*" で始まる行を + 含む。これはポインタの値への参照 "*str" が、コメントとして認識 + されるのを防ぐ。 + "n:>" ">", ">>", ">>>" などで始まる行を含む。 + "fb:-" "- " で始まるリストを整形する。 + +既定では "b:#" が含まれている。これは "#include" で始まる行がコメントとならな +いことを意味する。しかし、"# define" で始まる行はコメントとなる。これは妥協的 +解決である。 + +しばしば、左揃えから右揃えへ、余分なスペースを伴っての変更がなされる。例えば、 +Javadocのコメントでは次のものが使われる (":set" を使うときは空白の前に '\' を +入れること): > + s1:/*,mb:*,ex:*/ +中間部分が開始部分に基づいて左揃えされ、その後1文字のオフセットが加えられるよ +うにするため、オフセットは開始部分に含まれることに注意。これによって、次の構造 +で最初と中間部分を左揃えすることが可能になる。 > + /** + * コメント + */ + +{Vi mが |+comments| 機能付きでコンパイルされたときのみ有効} + + *fo-table* +テキストの整形方法はオプション 'foramatoptions' で調整できる。 'formatoptions' +は以下のフラグを含む文字列である。既定値は "tcq" である。読みやすくするために、 +フラグをコンマで区切ってもよい。 + +フラグ 'formatoptions' に指定されたときの作用 ~ + +t 'textwidth' を使ってテキストを自動折返しする (コメントには適用されな + い)。 +c 'textwidth' を使ってコメントを自動折返して、現在のコメント開始文字列を + 自動挿入する。 +r 挿入モードで <Enter> を打ち込んだ後に、現在のコメント開始文字列を自動 + 挿入する。 +o ノーマルモードで 'o', 'O' を打ち込んだ後に、現在のコメント開始文字列を + 自動的に挿入する。 +q "gq" でコメントを整形する。 + NOTE 整形は空行やコメント開始文字列のみの行は変更しないことに注意。新 + しい段落はそのような行の次、またはコメント開始文字列が変わった所から始 + まる。 +w 行末に空白が付いているとき、段落が次行に続いていると認識する。行末が空 + 白以外の行で段落が終わるとする。 +a 段落を自動整形する。テキストが挿入されたり削除されるたび、段落は再整形 + される。|auto-format| を参照。 + 'c'フラグも設定されているときはコメント挿入時のみ機能する。 +n テキストの整形時、番号付きリストを認識する。数字の後のテキストのインデ + ントが次の行に使われる。数字の後に '.', ':', ')', ']' や '}' が付いて + もよい。 オプション 'autoindent' がオンでなければならないことに注意。 + "2"と一緒には機能しません。例: > + 1. 一つ目の項目 + 折り返し + 2. 二つ目の項目 +2 テキストを整形するとき、段落の最初の行ではなく2番目の行のインデントを + 使ってそれ以降の行を整形する。これは最初の行のインデントが他の行と異な + るような段落をサポートする。'autoindent' もオンである必要がある。例: > + ここはある段落の一行目 + ここは上の行と同じ段落の二行目 + ここは三行目。 +v 挿入モードでVi互換の自動折返しを使う: 挿入モードに入って以来入力された + 空白でのみ折返しが行われる。( NOTE: これは100%のVi互換ではない。Viには + このあたりに「予期できない機能」、というかバグがあった。Viは実際のテキ + ストの列の代わりに画面上の列を使用する。) +b 'v' と同様だが、折返し余白の中または前で、空白を入力したときのみ自動折 + 返しをする。挿入開始時に 'textwidth' より行が長かったり、'textwidth' + に達するまで空白を入力しなかったときは、Vimは自動折返しをしない。 +l 挿入モードでは長い行は折り返されない: 挿入開始時に行が 'textwidth' よ + り長い場合、Vimは自動で整形を行わない。 +m 文字コードが 255 より後のマルチバイト文字の間でも改行する。これは文字 + 全てがそれだけで単語であるような、アジア言語のテキストで便利である。 +M 行の連結時に、マルチバイト文字の前後に空白を挿入しない。こちらの方がフ + ラグ 'B' より優先する。 +B 行の連結時に、マルチバイト文字同士の間に空白を挿入しない。こちらよりフ + ラグ 'M' の方が優先する。 +1 1文字の単語の後では改行しない。代わりにその前で改行される (可能ならば)。 + + +'t' と 'c' でVimが自動折返しを行うタイミングを指定できる。 +フラグ 作用 ~ +"" 自動整形しない ("gq" で手動の整形処理を行う) +"t" テキストを自動整形するが、コメントにはしない +"c" コメントを自動整形するが、テキストにはしない (C言語コードに適している) +"tc" テキストとコメントを自動整形する + +NOTE 'textwidth' が 0 のとき、Vimはいかなる整形も行わないので注意 ('comments' +によるコメント開始文字列の挿入はする)。 + +NOTE 'paste' がオンのとき、Vimは全ての整形処理を行わないので注意。 + +NOTE Vimに自動折返しをさせなくても、'textwidth' は非 0 であってよいことに注意。 +'textwidth' は "gq" による整形処理でも便利だからである。 + +'comments' が "/*" と ("*" と) "*/" を含んでいるときは、Vim組み込みの機能によ +りこれらのタイプのコメントをもう少し巧く扱うことができる。 +('formatoptions' に 'r' か'o' が含まれているとき) "/*" または "*/" の前か後で +新しい行を始めると、行の正しい開始位置が自動的に与えられる。同じことが整形処理 +と自動折返しでも行われる。"/*" や "*" で始まり、かつ "*/" を含む行の後で行を始 +めるときは、コメント開始文字列が挿入されず、新しい行のインデントはコメントの最 +初の行に合わせられる。 +例: + /* ~ + * 典型的なコメント。 ~ + */ ~ + この行のインデントは、上のコメントの先頭行と同じになる。 + +これら全ては、特に異なるファイルタイプに対する異なる設定に対応する際、新しい +autocommand と連携して、クールに振舞うはずである。 + +いくつかの例: + C言語コード用 (コメントの整形のみ): > + :set fo=croq +< メール/ネットニューズ用 (全て整形、コマンド "o" でコメントを始めない): > + :set fo=tcrq +< + +自動整形 *auto-format* + +オプション 'formatoptions' にフラグ 'a' が含まれると、テキストを挿入したり削除 +したときに自動整形が行われる。これはテキストの段落分けを編集するときに便利であ +る。以下では使い方についてのヒントをいくつか。 + +- 段落を適切に定義する必要がある。もっとも単純なものは、空行が区切りになる場合 + である。区切りとなる空行がないときは、フラグ 'w' を使い、段落の最終行以外の + 行末に空白を付けるようにしてみること。 + +- 'formatoptions' をファイルタイプ |filetype| に基づいて設定することができる。 + またはモードライン |modeline| で特定のファイルに対して設定することもできる。 + +- 'formatoptions' を "aw2tcq" に設定し、テキストのインデントを次のようにするこ + ともできる。 + + bla bla foobar bla + bla foobar bla foobar bla + bla bla foobar bla + bla foobar bla bla foobar + +- コメントだけを自動整形するには'c'フラグを追加する。ソースコードの編集向き。 + +次にいくつかの警告: + +- テキストの部分部分が段落内で適切に分割されていないとき、そのテキスト内で変更 + を行うと、有無をいわさず整形が始まってしまう。次のようにしてみること。 > + + :set fo-=a + +- フラグ 'w' (行末の空白で段落が終わっていないことを判断する) を使っているとき + に |dd| で段落の最終行を削除すると、その段落が次の段落とつながってしまう。 + +- 変更されたテキストは、アンドゥのために記憶される。整形も変更の一種である。そ + のため、整形を行う度にテキストがアンドゥ用に記憶される。すると大量のメモリを + 消費するかもしれない。 + +- 長い段落や、複雑なインデントの段落を整形するのには、時間がかかることがある。 + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/debugger.jax b/ja/debugger.jax new file mode 100644 index 000000000..a745be64d --- /dev/null +++ b/ja/debugger.jax @@ -0,0 +1,133 @@ +COMMENT: 統合開発環境(IDE)におけるデバッガとの協調 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*debugger.txt* For Vim version 6.3. Last change: 2001 Dec 22 + + + VIM リファレンスマニュアル by Gordon Prieur + + +デバッガ支援機能 *debugger-support* + +1. デバッガ機能 |debugger-features| +2. Vimのコンパイルオプション |debugger-compilation| +3. 統合デバッガ |debugger-integration| + +{Viにはこれらのコマンドは無い} + +============================================================================== +1. デバッガ機能 *debugger-features* + +以下の機能はデバッガ、統合プログラミング環境(IPE)、統合開発環境(IDE)との統合に +利用できる: + + もう1つのコマンド入力 |alt-input| + デバッグ目印 |debug-signs| + デバッグソースコード強調 |debug-highlight| + メッセージフッター |gui-footer| + バルーンウィンドウ |balloon-eval| + +これらの機能はMotifバージョンのgvimで使うために特別に追加された。しかしなが +ら、|alt-input| と |debug-highlight|はvimとgvimでも使用できるように書かれてい +る。その他の機能は非GUIバージョンのVimでもわずかな変更で使うことができる。だ +が、著者はそのような変更をしていないし、Motif GUIではないバージョンのVimではテ +ストしていない。 + + +1.1 もう1つのコマンド入力 *alt-input* + +Vimがデバッガと協調動作するには、最低限デバッガや外部ツールからの入力のための +接続が必要である。多くの場合は出力のための接続も必要であるがこれは絶対に必要と +いうわけではない。 + +外部デバッガがVimにコマンドを送ることが入力接続の目的である。デバッガから送ら +れるコマンドは現在のデバッグ環境や状態を表示するために充分である必要がある。 + +現在の実装はXツールキット(X Toolkit)の発送ループとXtAddInput()ファンクション +コールを基本にしている。 + + +1.2 デバッグ目印 *debug-signs* + +多くのデバッガは小さな目印を表示したりその行を色で強調することで特定の行に印を +付ける。デバッガは|:sign|コマンドを使って(Vimに)グラフィカルな目印を設定させる +ことができる。この機能の使われ方の一例は、デバッグしているプログラムの実行位置 +(プログラムカウンタ:PC)を表示するのにデバッガが表示する矢印に見る事ができる。 +別の例ではブレークポイントを示す小さな停止記号がある。これらの視覚的な強調は +ユーザがデバッガ状態の経過を追う助けになる。 + +この機能はデバッガ以外の用途にも使用できる。IPEはビルドエラー、検索したテキス +ト、その他を強調するのに何かしらの目印を使用する。この機能は印がより高い視認性 +を確保するために|debug-highlight|と一緒に利用できる。 + +デバッグ目印は|:sign|コマンドを使って定義、設置する。 + + +1.3 デバッグソースコード強調 *debug-highlight* + +この機能により行に優れた強調を施すことができる。これは特定の行を目立たせること +を目的としている。この強調はvimとgvim両方で動作させることができ、gvimに限り多 +くの場合デバッグ目印と一緒に使うことができる。唯一の例外はSun Microsystemの +dttermである。dttermには目印を表示するためのスペースがある。(訳注: なので、こ +れを利用する際はコンソールvimでも目印を利用可能となる) + + +1.4 メッセージフッター *gui-footer* + +メッセージフッターはデバッガやIPEからのメッセージを表示するのに使用する。また +メニューやツールバーのtips(一言ヒント)を表示するのにも使用できる。GUIウィンド +ウの下のフッターエリアは、Exコマンドを表示する行のさらに下に位置する。 + +フッターエリアの表示・非表示は'guioptions'の'F'フラグで制御する。 + + +1.5 バルーンウィンドウ *balloon-eval* + +この機能はデバッガや外部ツールに、マウスが指す位置に応じた動的な情報を表示する +機能を提供する。この機能は「Sun's Visual WorkShop」のデバッガに式の評価結果を +表示させることを目的とした。しかしながら、その他の情報を表示するのに利用できる +よう、可能な限り一般的な様式で実現されている。 + +バルーンウィンドウには幾つかの設定可能なパラメータがある。フォントリストと色は +Xリソース経由で設定される(XmNballoonEvalFontList, XmNballoonEvalBackground, +XmNballoonEvalForeground)。 +オプション'balloondelay'はバルーンを表示するまでの遅延時間を設定する。 +この機能を有効にするにはオプション'ballooneval'をオンにする必要がある。 + +バルーンウィンドウは|+balloon_eval|と|+sun_workshop|機能をコンパイル時にした時 +のみ利用できる。 + +バルーンウィンドウ関数はツールバーのツールチップを表示する際にも利用されてい +る。これにはオプション'ballooneval'を設定する必要はない。しかしその他の設定は +このツールチップにも適用される。 + +============================================================================== +2. Vimのコンパイルオプション *debugger-compilation* + +デバッガ機能はSunの「Visual WorkShop Integrated Programming Environment」(ipe) +と一緒に使うために明示的に加えられた。しかし、それらのSunのipeと供に使用する機 +能は他のデバッガも一部もしくは全部を使うことができるように、可能な限り一般的な +様式で実現されている。 + +以下のコンパイル時のプリプロセッサ変数で機能の有無効を制御する: + + もう1つのコマンド入力 ALT_X_INPUT + デバッグ目印 FEAT_SIGNS + デバッグソースコード強調 FEAT_SIGNS + メッセージフッター FEAT_FOOTER + バルーンウィンドウ FEAT_BEVAL + +最初の完全なIPE/IDEとの統合はSun Visual WorkShopである。gvimをVWSとのインター +フェイスを有効にしてコンパイルするには次のフラグを設定する。これにより上で述べ +た全てのフラグを設定される: + + Sun Visual WorkShop FEAT_SUN_WORKSHOP + +============================================================================== +3. 統合デバッガ *debugger-integration* + +現在のところ完全に統合されたデバッガ/IPE/IDEは、唯一Sunの「Visual WorkShop +Integrated Programming Environment」だけである。 + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/diff.jax b/ja/diff.jax new file mode 100644 index 000000000..10dc8d39d --- /dev/null +++ b/ja/diff.jax @@ -0,0 +1,367 @@ +COMMENT: 差分表示モード(+diff) +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*diff.txt* For Vim version 6.3. Last change: 2004 May 01 + + + VIMリファレンスマニュアル by Bram Moolenaar + + + *diff* *vimdiff* *gvimdiff* *diff-mode* +このファイルは+diff機能: 同じファイルの2つもしくは3つのバージョン間の違いを表 +示する機能 について解説している。 + +基本はユーザマニュアルのセクション|08.7|に記載されている。 + +1. 差分モードを開始する |vimdiff| +2. 差分を眺める |view-diffs| +3. 差分へ移動する |jumpto-diffs| +4. 差分を写す |copy-diffs| +5. 差分モードのオプション |diff-options| + +{Vi にはない} + +============================================================================== +1. 差分モードを開始する + +差分モードで編集を開始するいちばん簡単な方法は"vimdiff"コマンドである。これは +Vimを通常どおり起動して、加えて引数で与えたファイル間の違いを表示する。 > + + vimdiff file1 file2 [file3 [file4]] + +これは以下に等しい: > + + vim -d file1 file2 [file3 [file4]] + +"gvimdiff"もしくは"vim -d -g"を使うこともできる。その際はGUIがスタートする。 +"viewdiff"もしくは"gviewdiff"を使うこともできる。その際は読込専用モードでスタ +ートする。 +"r"が先頭に付け加われば制限モードになる(|-Z|参照)。 + +2つ目以降の引数にはディレクトリ名を指定することもできる。その際には第1引数の +ファイル名がそのディレクトリ名に追加され、ファイルを検索するのに利用される。 + +これは外部コマンドの"diff"が存在する場合にだけ動作する。'diffexpr'参照。 + +Vimが各ファイルについてウィンドウを開く時には何が起こることは、|-O|引数を使っ +た時に起こることに似ている。これには垂直分割が使用される。水平分割を行ないたい +ならば|-o|引数を追加する: > + + vimdiff -o file1 file2 [file3] + +編集される各ファイルには以下のオプションが設定される: + + 'diff' on + 'scrollbind' on + 'scrollopt' "hor" を含む + 'wrap' off + 'foldmethod' "diff" + 'foldcolumn' 2 + +これらのオプションはウィンドウローカルに設定される。別のファイルを開いた時に +り別のファイルを開いた時には、これらはグローバルの値へリセットされる。 + +表示される差分はバッファ内の違いである。だからファイルを読み込んだ後に変更を行 +なえば、その変更分は差分として表示される。全ての変更が即表示に反映されるわけで +はないので、時々":diffupdate"を行なうと良いだろう。 + +差分モードで起動した時の特別な設定を.vimrcファイルに記すことができる。このよう +にすれば良い: > + + if &diff + setup for diff mode + else + setup for non-diff mode + endif + +既にVimを利用している時には、3つの方法で差分モードへ移行することができる。 + + *E98* +:diffsplit {filename} *:diffs* *:diffsplit* + ファイル{filename}の新しいウィンドウを開く。現在と新しく開く + ウィンドウについて"vimdiff"と同様のオプションをセットする。 + 'diffexpr'も参照。 + + *:difft* *:diffthis* +:diffthis 現在のウィンドウを差分ウィンドウの1つにする。これにより + "vimdiff"と同じオプションが設定される。 + +:diffpatch {patchfile} *:diffp* *:diffpatch* + {patchfile}内の差分情報を現在のバッファへ適用し、結果を新しく + 作成したバッファへ出力する。オプションは"vimdiff"と同様に設定 + される。 + {patchexpr}の形式は"patch"プログラムか'patchexpr'が取り扱える + 形式ならどのようなものでもかまわない。 + {patchfile}は現在のファイルに対して適用可能な差分情報だけを含 + んでなければならないことに注意。もしも{patchfile}が他のファイ + ル用の差分情報を含んでいた場合は、結果は予想不可能となる。Vim + は現在のディレクトリのファイルが偶発的に書き換えられてしまうの + を避けるためディレクトリを/tmpへ変更する。しかし様々な".rej" + ファイルが作成されてしまう問題は依然としてある。また差分情報内 + にファイルが絶対パスとして与えられた場合には、やはり適用されて + しまう。 + +このコマンドを垂直分割で使うには、|:vertical|を先行させる。例: > + + :vert diffsplit main.c~ + :vert diffpatch /tmp/diff +< + *E96* +'diff'オプションは最大で4つのバッファにまで同時に設定できる。 + +オプションの値はバッファへ記憶されるので、しばらくの間異なるファイルを編集し、 +また同じファイルへ戻って再び差分モードを継続することができる。差分モードを終了 +するには'diff'オプションをリセットする。恐らく折畳表示カラムを解放することを望 +むだろう: > + + :set nodiff foldcolumn=0 + +============================================================================== +2. 差分を眺める *view-diffs* + +差分ウィンドウには同じテキストが、異なるハイライト方法で表示される。テキストを +スクロールした際には'scrollbind'オプションにより、他のウィンドウも同じようにス +クロールする。垂直分割をしている場合にはテキストは正しく同期する。 + +テキストの位置は次のような場合に狂っていく: +- 'wrap'が有効で、幾つかの行が折り返され複数行を占めている時 +- 折畳が一方のウィンドウでは開かれているが、もう一方では閉じられている +- 'scrollbind'が無効になっている +- テキストが変更された +- 'diffopt'に"filler"が指定されていず、削除・追加された行が配置を狂わせている + +'diff'オプションが設定されているウィンドウで編集されている全てのバッファが差分 +へ連結される。これは隠し(hidden)バッファにもあてはまる。これを可能にするには初 +めに1つのウィンドウでそれらが編集される必要がある。 + +'diff'はウィンドウローカルのオプションであるから、1つのバッファをあるウィンド +ウでは差分モードで、別のウィンドウでは通常のウィンドウで表示することも可能であ +る。バッファに対して行なった変更を表示することも可能だが、Vimは1つのファイルに +対して複数のバッファを持つことはできないから、オリジナルファイルのコピーを作成 +しそれとの差分を取る必要がある。例: > + :!cp % tempfile + :diffsplit tempfile + +アンロードされたバッファは差分に使用することができない。しかし隠しバッファにつ +いては私用できる。バッファをアンロードすることなくウィンドウを閉じるのに +":hide"コマンドを使うことができる。 + + + *:diffu* *:diffupdate* +テキストを変更した時には、Vimは差分情報を最新に保とうと試みる。これの大部分は +挿入と削除をされた行(複数も可)に着目して行なわれる。1行内で行なわれた変更、及び +それよりも複雑な変更に対しては差分情報は更新されない。差分情報を強制的に更新す +るには次のコマンドを使う: > + + :diffupdate + + +Vimは片方のウィンドウには存在しないがもう一方には存在する行については補充して +表示する。これらはもう一方のファイルで追加されたかこのファイルで削除された行で +ある。'diffopt'オプションから"filler"を削除するとVimはこのような行の補充は行な +わない。 + + +変更されていないテキストについては折畳を使用して隠される。折畳に使用できる全て +のコマンドについては|folding|を参照。 + +差分の近辺の折畳に含まれない領域はコンテキストと呼び、その行数を'diffopt'オプ +ションで設定できる。以下の例ではこのコンテキストを3行に設定している: > + + :set diffopt=filler,context:3 + + +差分は以下の強調グループで強調表示される: + +|hl-DiffAdd| DiffAdd 追加(挿入)された行。このバッファに存在する行 + は、別のバッファには存在しない。 +|hl-DiffChange| DiffChange 変更された行。 +|hl-DiffText| DiffText 変更された行の中の変更されたテキスト。Vimは異 + なる最初の文字と、最後の文字を発見する(検索は + 行末から行なわれる)。両バッファのテキストが強 + 調される。これはその間にあるテキストが例え同じ + だったとしても強調されることを意味する。 +|hl-DiffDelete| DiffDelete 削除された行。補充された行についても、実際その + バッファには存在していないことから、このグルー + プが適用される。 + +============================================================================== +3. 差分へ移動する *jumpto-diffs* + +差分へ移動するのに2つのコマンドを使える: + *[c* + [c 前(上方)の変更の先頭へ移動する。 + カウントが与えられた場合、その回数繰り返される。 + *]c* + ]c 次(下方)の変更の先頭へ移動する。 + カウントが与えられた場合、その回数繰り返される。 + +カーソルの動く方向に変更がなかった場合にはエラーになる。 + +============================================================================== +4. 差分を写す *copy-diffs* *E99* *E100* *E101* *E102* *E103* + +あるバッファから別のバッファへテキストを複写する2つのコマンドがある。結果的に +ある範囲について2つのバッファの内容は等しくなる。 + + *:diffg* *:diffget* +:[range]diffg[et] [bufspec] + 現在のバッファをもう1つのバッファと同じくなるように変更をす + る。 [bufspec]が与えられた時は、そのバッファが使用される。 + そうでなければ差分モードのバッファが他に1つしかない時にだけ動 + 作する。 + [range]については以下を参照。 + + *:diffpu* *:diffput* +:[range]diffpu[t] [bufspec] + もう1つのバッファを現在のバッファと同じくなるように変更する。 + ":diffget"と同様だが現在のバッファではなく、もう一方のバッファ + が変更を受ける。 + [range]については以下を参照。 + + *do* +do 引数と範囲のない":diffget"と同じ。"o" は "obtain"の意味( "dgg" + と区別できないので、"dg" は使えません) + + *dp* +dp 引数と範囲のない":diffput"と同じ。 + +[range]が与えられない場合にはカーソルの位置かその上の差分が適用される。[range] +が使われた時にはその範囲だけを適用(put/get)しようと試みる。削除された場合には +必ずしも可能なわけではない。 + +バッファの最後の行のさらに下方に削除された行があることも考えられる。そのときカ +ーソルが最終行にあり、最終行より上に差異がないとき、":diffget"と"do"コマンドは +それらの行を取得します。 + +超えた位置の行をもう一方のバッファから取得するには、最終行+1の行番号を指定す +る。次のコマンドはもう一方のバッファから完全な差分情報を受け取る: > + + :1,$+1diffget + +削除された行は画面に表示こそされているが、テキストラインとしては数えられていな +いことに注意。消された範囲にカーソルを移動することはできない。もう一方のバッ +ファから、削除された行を":diffget"で取得するには対象行の下方で行なう必要があ +る。 + +引数 [bufspec]にはバッファ番号、バッファ名のパターンもしくはバッファ名の一部を +使用できる。例: + + :diffget 差分モードにある別のバッファを使用する + :diffget 3 3番のバッファを使用する。 + :diffget v2 差分モードにある"v2"にマッチするバッファを使用 + する(例, "file.c.v2") + +============================================================================== +5. 差分モードオプション *diff-options* + +|'diffopt'|と|'fillchars'|の"diff"項目も参照。 + + +差分を発見する *diff-diffexpr* + +'diffexpr'オプションは、2つのファイルを比較し差分を取得する標準的な"diff"プロ +グラム以外の何かを利用する場合に設定する。 + +'diffexpr'が空ならば、Vimはfile1とfile2間の差分を得るために次のコマンドを使用 +する: > + + diff file1 file2 > outfile + +">" は 'shellredir'の値に置き換えられる。 + +"diff"の出力は通常の"ed"形式の差分でなければならない。コンテキスト差分を使用し +てはいけない。この例はVimが求めるフォーマットを示している: > + + 1a2 + > bbb + 4d4 + < 111 + 7c7 + < GGG + --- + > ggg + +項目"1a2" が 行"bbb"を追加する。 +項目"4d4" が 行"111"を削除する。 +項目"7c7" が 行"GGG"を 行"ggg" で置き換える。 + +'diffexpr'が空でなければ、差分ファイルを述べた形式で取得するためにそれを評価実 +行する。これらの変数がファイル名として設定される: + + v:fname_in 基準となるファイル + v:fname_new 同ファイルの新バージョン + v:fname_out 結果を出力する差分ファイル + +その上、'diffexpr' は 'diffopt'オプションの"icase" と "iwhite"についても考慮す +るべきだろう。'diffexpr'は'lines'と'columns'の値を変更できません。 + +例 (これは'diffexpr'が空の時とほぼ同じように働く): > + + set diffexpr=MyDiff() + function MyDiff() + let opt = "" + if &diffopt =~ "icase" + let opt = opt . "-i " + endif + if &diffopt =~ "iwhite" + let opt = opt . "-b " + endif + silent execute "!diff -a --binary" . opt . v:fname_in . " " . v:fname_new . + \ " > " . v:fname_out + endfunction + +引数の"-a"は強制的にテキストファイルとして比較するために使われる。バイナリでの +比較は使いにくい。引数の"--binary"はファイルをバイナリモードで読み込むために使 +われる。DOSでCTRL-Zをテキストの終わりとしないためである。 + + *E97* +Vimは差分の出力結果が妥当であるか検証する。妥当でない場合、エラーメッセージを +得るだろう。起こりうるエラーは: +- プログラム"diff"を実行できなかった。 +- プログラム"diff"が通常の"ed"スタイルの差分を出力しなかった(上記参照)。 +- 'shell'と関連するオプションが正しく設定されていなかった。":!sort"のようなフ + ィルタリングコマンドが正しく動作するか確認すること。 +- 'diffexpr'を使っているが動作しなかった。 +エラーメッセージがよくわからないときは'verbose'オプションを設定してより多くの +メッセージを見ることができる。 + + +パッチを使用する *diff-patchexpr* + +'patchexpr'オプションは、標準的な"patch"プログラム以外の何かを利用する場合に設 +定する。 + +'patchexpr'が空ならば、Vimは"patch"を次のように呼び出す: > + + patch -o outfile origfile < patchfile + +これはほとんどのバージョンの"patch"で正しく働くだろう。行中間のCRが、改行記号と +して解釈され問題を起こすことはあるかもしれない。 + +デフォルトが正しく働かないのならば、同様の働きをする式を'patchexpr'に設定す +る。これらの変数がファイル名として設定される。 + + v:fname_in 基準となるファイル + v:fname_diff パッチファイル + v:fname_out パッチ適用結果を出力するファイル + +例 (これは'patchexpr'を空にしたのと同じ働きをする): > + + let patchexpr=MyPatch + function MyPatch + :call system("patch -o " . v:fname_out . " " . v:fname_in . + \ " < " . v:fname_diff) + endfunction + +利用する"patch"プログラムが望んでいない副作用をしていないことを確認する必要が +ある。例えば消されるべき付加的なファイルが生成されていないか用心する必要があ +る。ファイルにパッチをあてる以上のことは何もすべきではない。 + Vimは'patchexpr'を実行する前に"/tmp"か他の一時ディレクトリへ現在のディレク +トリを移動する。これにはカレントディレクトリの別のファイルへ偶然にパッチがあ +たってしまうのを避ける狙いがある。Vimはv:fname_inで始まり".rej" や ".orig"で終 +わる名前のファイルを消すこともする。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/filetype.jax b/ja/filetype.jax new file mode 100644 index 000000000..f7f5509e8 --- /dev/null +++ b/ja/filetype.jax @@ -0,0 +1,529 @@ +COMMENT: ファイル形式の自動判別 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*filetype.txt* For Vim version 6.3. Last change: 2004 May 05 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +ファイル形式 *filetype* *file-type* + +1. ファイル形式 |filetypes| +2. ファイル形式別プラグイン |filetype-plugins| +3. 標準で付属する形式別プラグインの解説 |ftplugin-docs| + +|autocmd.txt|も参照。 + +{これらのコマンドはViには存在しない} + +============================================================================== +1. ファイル形式 *filetypes* *file-types* + +Vimは編集しているファイルの形式を検出することができる。これは特定のテキストに +対してファイル名をチェックしたり、場合によってはその内容を調べることで実現され +ている。 + + *:filetype* *:filet* +ファイル形式の検出を有効化するには、vimrcファイルでこのコマンドを使用する: > + :filetype on +新しいファイルや既存のファイルを編集する際には必ず、Vimはファイルの形式を認識 +し'filetype'オプションを設定しようと試みる。それが構文強調やオプションの設定、 +その他を行なうために使われるFileTypeイベントのきっかけとなる。 + +NOTE: Viコンパチブルとは全てのオプションがグローバルであることを意味するので、 +ファイル形式識別と'compatible'は同時に使うことはできない。既に'compatible'を設 +定している場合には、それを解除する必要がある。 + +詳細: ":filetype on"コマンドは次のファイルのうち1つをロードする。 + Amiga $VIMRUNTIME/filetype.vim + Mac $VIMRUNTIME:filetype.vim + MS-DOS $VIMRUNTIME\filetype.vim + RiscOS Vim:Filetype + Unix $VIMRUNTIME/filetype.vim + VMS $VIMRUNTIME/filetype.vim + このファイルはBufNewFileとBufReadイベントに対する自動実行コマンドを定 + 義するVimスクリプトファイルである。ファイル形式がファイル名から決定で + きない時には、ファイルの内容を検出するために$VIMRUNTIME/scripts.vimが + 使用される。 + +独自のファイルタイプを追加するには、下の|new-filetype|を参照。 + +ファイル形式を自動的に検出できなかった場合や、間違った形式になってしまった場合 +には、'filetype'オプションを手動で設定するか、ファイルにモード行(modeline)を追 +加する選択肢がある。例として、IDLファイルに設定するにはこのコマンドを使うか: + :set filetype=idl +この|modeline|をファイルに追加する: > + /* vim: set filetype=idl : */ +< + *:filetype-plugin-on* +ファイル形式別プラグインのロードを有効化するには: > + :filetype plugin on +まだファイル形式検出が有効になっていない時には、同時に有効化される。 +これは実際には'runtimepath'にある"ftplugin.vimをロードする。 +結果的にファイルが編集される時に対応するプラグインファイルがロードされる(ただ +し検出したファイル形式に合致するプラグインファイルがあった時のみ)。 +|filetype-plugin| + + *:filetype-plugin-off* +ファイル形式別プラグインを無効化するには: > + :filetype plugin off +ファイル形式の検出自体は無効にならない。しかしながらファイル形式の検出を無効に +した場合には、プラグインもロードされなくなる。 +これは実際には'runtimepath'にある"ftplugof.vim"をロードする。 + + *:filetype-indent-on* +ファイル形式別インデントのロードを有効化するには: > + :filetype indent on +まだファイル形式検出が有効になっていない時には、同時に有効化される。 +これは実際には'runtimepath'にある"indent.vimをロードする。 +結果的にファイルが編集される時に対応するインデントファイルがロードされる(ただ +し検出したファイル形式に合致するインデントファイルがあった時のみ)。 +|filetype-plugin| + + *:filetype-indent-off* +You can disable it again with: > +ファイル形式別インデントを無効化するには: > + :filetype indent off +ファイル形式の検出自体は無効にならない。しかしながらファイル形式の検出を無効に +した場合には、インデントファイルもロードされなくなる。 +これは実際には'runtimepath'にある"indoff.vim"をロードする。 + + *:filetype-off* +ファイル形式の検出を無効にするには、次のコマンドを使用する: > + :filetype off +これはプラグイン("plugin")とインデント("indent")のフラグを保持はするが、ファイ +ル形式は検出されなくなるので、次に":filetype on"をするまではそれらは動作しなく +なる。 + + +概要: *:filetype-overview* + +コマンド 検出 プラグイン インデント ~ +:filetype on 有効 変化なし 変化なし +:filetype off 無効 変化なし 変化なし +:filetype plugin on 有効 有効 変化なし +:filetype plugin off 変化なし 無効 変化なし +:filetype indent on 有効 変化なし 有効 +:filetype indent off 変化なし 変化なし 無効 +:filetype plugin indent on 有効 有効 有効 +:filetype plugin indent off 変化なし 無効 無効 + +現在の状態を知るには次のようにタイプする: > + :filetype +このような出力が得られる: > + filetype detection:ON plugin:ON indent:OFF + +ファイル形式は構文強調にも利用される。":syntax on"コマンドが使用されると、ファ +イル形式検出もインストールされる。":filetype on" の後に ":syntax on"を実行する +必要はない。 + +特定のファイル形式を無効にするには、自分のファイル形式ファイルに1行追加する。 +|remove-filetype|参照。 + + *filetype-detect* +再びファイル検出を有効化するには: > + :filetype detect +空のファイルから編集を始めて、ファイル形式を判定するのに充分なテキストをタイプ +してからコレを使用する。例えば、シェルスクリプトの中で"#!/bin/csh"を入力してか +らということ。 + ファイル形式検出が無効になっていた時には、引数"on"が指定された時のように、 +初めに有効化される。 + + *filetype-overrule* +同じ拡張子が2つのファイル形式で使用されている時には、Vimはファイルがどのような +種類であるかを推測する。これは常に動作するわけではない。ある拡張子に対してどの +ファイル形式を使うか明示的に指定するのに、幾つかのグローバル変数を使うことがで +きる: + + ファイル名 変数 ~ + *.asa g:filetype_asa |aspvbs-syntax| |aspperl-syntax| + *.asp g:filetype_asp |aspvbs-syntax| |aspperl-syntax| + *.asm g:asmsyntax |asm-syntax| + *.prg g:filetype_prg + *.pl g:filetype_pl + *.inc g:filetype_inc + *.w g:filetype_w |cweb-syntax| + *.i g:filetype_i |progress-syntax| + *.p g:filetype_p |pascal-syntax| + *.sh g:bash_is_sh |sh-syntax| + + *filetype-ignore* +特定のファイルが検査されないようにするには、g:ft_ignore_pat 変数を使います。こ +の変数はデフォルトで次のように設定されています。 > + :let g:ft_ignroe_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$' +この設定は圧縮ファイルを検査しないようにしています。 + + *new-filetype* +使いたいファイル形式がVimに検出されない(存在しない)場合には、その形式を追加す +る3つの方法がある。どちらにせよファイル$VIMRUNTIME/filetype.vimは変更するべき +ではない。そのファイルは新しいVimをインストールする際に上書されるのだから。 + +A. デフォルトのファイルタイプの検査をくつがえす。 + この方法はファイルタイプごとにファイルを作ることで機能する。不便な点は + ファイルがたくさんになってしまうこと。便利な点は適切なディレクトリにファ + イルを置くだけで機能すること。 + + 1. ユーザランタイムディレクトリを作成する。通常は'runtimepath'オプション + に記載される最初の項目使えば良い。次にそのディレクトリに"ftdetect"とい + うディレクトリを作成する。UNIXを例に挙げる: + :!mkdir ~/.vim + :!mkdir ~/.vim/ftdetect + + 2. ファイル形式を検出する自動実行コマンドを含むファイルを作成する。 + 例: > + au BufRead,BufNewFile *.mine set filetype=mine +< Note "augroup" コマンドは要らない。そのファイルを読み込むときに既に定 + 義されている。パターンに "*" を使いファイルの内容から判断することもで + きる。 + そのファイルを例えば "mine.vim" という名前で先程の "ftdetect" ディレク + トリに保存する。UNIXを例に挙げる: > + :w ~/.vim/ftdetect/mine.vim +< + 3. 新しいファイル形式の検出を有効化するためにVimを再起動する。 + + "ftdetect" ディレクトリの中のファイルはデフォルトの検査のあとに使われるの + で、それ以前に決定したファイルタイプを変更することができる。 + +B. デフォルトのファイルタイプの検査の後にファイルタイプを決定する。 + + 上と同様。ただし、':setfiletype'を使って無条件に'filetype'を設定する。 + これはまだファイルタイプがまだ認識されていないときだけ'filetype'を設定す + る。次に例を示す。 > + au BufRead,BufNewFile *.txt setfiletype text +< + すでに認識されたファイルタイプをコマンドから使うことができる。例えば、ファ + イルタイプが"pascal"だった時にファイルタイプを"mypascal"に設定するには。 > + au BufRead,BufNewFile * if &ft == 'pascal' | set ft=mypascal + | endif + +C. ファイル形式が名前だけで検出できる場合。 + 1. ユーザランタイムディレクトリを作成する。通常は'runtimepath'オプションに + 記載される最初の項目使えば良い。UNIXを例に挙げる: > + :!mkdir ~/.vim +< + 2. ファイル形式を検出する自動実行コマンドを含むファイルを作成する。 + 例: > + " 独自の filetype ファイル + if exists("did_load_filetypes") + finish + endif + augroup filetypedetect + au! BufRead,BufNewFile *.mine setfiletype mine + au! BufRead,BufNewFile *.xyz setfiletype drawing + augroup END +< このファイルを"filetype.vim"としてユーザランタイムディレクトリに保存す + る。UNIXを例にあげる: > + :w ~/.vim/filetype.vim +< + 3. 新しいファイル形式の検出を有効化するためにVimを再起動する。 + + 作成したfiletype.vimはデフォルトのFileType自動実行コマンドがインストールさ + れる前に読み込まれる。そのため新しく作成した自動自動コマンドが先に適合し、 + ":setfiletype"コマンドがこれ以後に他の自動実行コマンドにより'filetype'が設 + 定されないことを保証する。 + *new-filetype-scripts* +D. ファイル形式がファイルの内容を調べる事によってのみ検出可能な場合。 + + 1. ユーザランタイムディレクトリを作成する。通常は'runtimepath'オプションに + 記載される最初の項目使えば良い。UNIXを例に挙げる: > + :!mkdir ~/.vim +< + 2. ファイルの内容で形式を決定するVimスクリプトを作成する。例: > + if did_filetype() " 既にファイル形式が決定している + finish " ..その時はこのチェックは行なわない + endif + if getline(1) =~ '^#!.*\<mine\>' + setfiletype mine + elseif getline(1) =~? '\<drawing\>' + setfiletype drawing + endif +< より多くの例については$VIMRUNTIME/scripts.vimを参照。 + このファイルを"scripts.vim"としてユーザランタイムディレクトリに保存す + る。UNIXを例にあげる: > + :w ~/.vim/scripts.vim +< + 3. これだけで検出は正しく動作し、Vimを再起動する必要は無い。 + + 新しく作成したscripts.vimはデフォルトのファイル形式チェックの前に読み込まれ + ので、$VIMRUNTIME/scripts.vimに書かれたデフォルトの判定規則を上書することが + できる。 + + *remove-filetype* +ファイル形式が誤って検出されたならば、(上を参考に)それを補正するfiletype.vimか +scripts.vimをインストールする。'filetype'に存在しない形式の名前を設定すれば、 +それ以降の検出スクリプトで別の値が設定されてしまうのを避けることができる: > + :set filetype=ignored + +複数人で使用する環境を設定していて、個々のユーザにはファイル形式を追加/削除さ +せたくないならば、ランタイムディレクトリに置いて全ユーザが共有するように +filetype.vimとscripts.vimを書く必要がある。そのスクリプトを置くディレクトリに +は'runtimepath'の示すうちのどれか1つを選択する。'runtimepath'の中に設定を置き +たいディレクトリが見あたらなければ、|system-vimrc|内で正しく追加する必要があ +る。既に設定されているデフォルトのディレクトリを変更しないように注意。 + + + *autocmd-osfiletypes* +ファイルと共に「形式」を記録できるオペレーティングシステム(OS)では、ファイルが +ある「形式」だった時にだけ実行される自動コマンドを設定することができる。 + +実際の「形式」チェックはVimをどのプラットフォームで使用しているかに依存する; +詳細は使用しているシステムの解説書を参照のこと。 + +OSによる「形式」を利用するには自動実行コマンドの検出パターンの場所に、次の例に +示すように折カッコで囲んだ検出させたい「形式」のリストを書く: > + + :au BufRead *.html,<&faf;HTML> runtime! syntax/html.vim + +これは以下に適合する: + +- ファイル名が`.html'で終了するあらゆるファイル +- 「形式」が`&faf' か `HTML'である全てのファイル。ただしここでいう「形式」とは + Vimのバージョン(稼動しているOS)によって定義される。未知の形式は適合しないと + みなされる。 + +「形式」とパターンを同時に指定することもできる (そのような場合には、両方供マッ +チする必要がある): > + + :au BufRead <&fff>diff* + +これは「形式」が`&fff'で名前が`diff'で始まるファイルに適合する。 + +|+osfiletype|機能を有効にしてコンパイルしなければ、OSによる「形式」チェックは +スキップされる。 + + *plugin-details* +"plugin"ディレクトリは'runtimepath'オプションに示されているならば、どのディレ +クトリに置いても良い。そこに示された全てのディレクトリにあるプラグインが検索さ +れ読み込まれる。例えば、次のコマンドを実行すると: > + + set runtimepath + +次の内容が出力される: > + + runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 + +この時Vimは以下に示すディレクトリにある全てのプラグインを読み込む: > + + /etc/vim/plugin/ + ~/.vim/plugin/ + /usr/local/share/vim/vim60/plugin/ + +最後の1つは$VIMRUNTIMEが展開されたものであることに注意。 + +プラグインが読み込まれていないらしい場合はどうすれば良いのか? Vim起動時に|-V| +引数を使用すれば何が起こっているか知ることができる: > + vim -V1 +多くのメッセージが表示されるが、プラグインの読み込みの前には特定の記述がなされ +る。それは次のように始まる: + Searching for "plugin/*.vim" in +これを見ればVimがプラグインスクリプトをどこから探しているのかがわかる。 + +============================================================================== +2. ファイル形式別プラグイン *filetype-plugins* + +ファイル形式プラグインが有効になっていれば|:filetype-plugin-on|、プラグイン読 +込時にオプションが設定されキーマップが定義される。それらは全てバッファローカル +で、他のファイルに対しては決して作用しない。 + +ファイル形式により定義されるキーマップが自分で定義したキーマップの邪魔になるこ +ともあり得る。幾つかこれを回避する方法がある: +1. "maplocalleader"にキーマップの先頭に使用するキーシーケンスを設定する。例: > + :let maplocalleader = "," +< デフォルトのバックスラッシュ(\ 記号)に替えてカンマが全てのマップの始まりの + キーになる。|<LocalLeader>|も参照。 + +2. 独自のマップを定義する。例: > + :map ,p <Plug>MailQuote +< どのような機能が提供され、それにどのような文字列がキーマップされているの + か、プラグインファイルの説明をチェックする必要がある。 + 独自のキーマップはプラグインが読み込まれる (つまりその形式のファイルが読み + 込まれる) 前に定義する必要がある。そうすればプラグインはデフォルトキーマッ + ピングのインストールを行なわない。 + +3. 特定のファイル形式についてキーマップを無効化するならば、そのファイル形式名 + を含むある変数を設定する。ファイル形式"mail"のキーマップを無効にするには次 + のようにする: > + :let no_mail_maps = 1 + +4. ファイル形式による全てのキーマップを無効化するには次の変数を設定する: > + :let no_plugin_maps = 1 +< + + *ftplugin-overrule* +グローバルな($VIMRUNTIMEにある、システムが提供する)ファイル形式プラグインが +キッチリ望むように動作しない場合には、これを変更する方法が3通りある: + +1. 設定を追加する。 + 新しいファイル形式プラグインを作り、'runtimepath'の始めのほうに置く。一例と + して、UNIXではこのファイルを利用できる: > + vim ~/.vim/ftplugin/fortran.vim +< 追加したい設定やキーマップをこのファイルに記述する。グローバルプラグインは + これの後に読み込まれるので、ここで行なった設定は上書される可能性がある。そ + のような場合には以下の2つの方法のどちらかを利用する。 + +2. プラグインのコピーを作成し、そちらを変更する。 + 'runtimepath'の始めのほうにそのプラグインのコピーを置く。一例として、UNIXで + はこのように行なう: > + cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim +< そうすればコピーしたファイルを好きなように変更できる。これは変数 + b:did_ftpluginが設定されていれば、グローバルプラグインは読み込まれない仕組 + みになっていることによる。 + この方法には、配布されるプラグインが改良された際に、再びコピーし同じように + 変更しなければならない、という短所がある。 + +3. グローバルプラグインの後で読み込まれる設定で上書する。 + 'runtimepath'の最後に、新しいファイル形式プラグインを作成する。一例として、 + UNIXではこのファイルを利用できる: > + vim ~/.vim/after/ftplugin/fortran.vim +< このファイルの中では、変更したい設定をちょうど変更できる。 + +============================================================================== +3. 標準で付属する形式別プラグインの解説 *ftplugin-docs* + + +チェンジログ(CHANGELOG) *changelog-plugin* + +(訳注)エントリ=日付ごとの区切り アイテム=日付内の項目 + +チェンジログファイルを簡単に扱うことを可能にする。いくつかの便利なコマンドや +マッピング、変数がある。 + +オプション: +'comments' フォーマットを崩さないように空に設定される。 +'textwidth' 標準的な値である78に設定される。 +'formatoptions' テキストを折り返すために 't' が加えられる。 + +コマンド: +NewChangelogEntry 適切にアイテムを追加する(以下参照)。 + +ローカルマッピング: +<Leader>o 上と同様に適切にアイテムを追加する(以下参照)。 + +グローバルマッピング: + NOTE: グローバルマッピングはあらかじめ + frplugin/changelog.vim を実行することで有効になる。 + 例えば + runtime ftplugin/man.vim + と |.vimrc| に書くようにして。 + (訳注)この例だと間違えてこのまま書いちゃいそう。 +<Leader>o カレントディレクトリに"ChangeLog"というファイルがあ + れば開き、既に開かれていればバッファを切替える。そし + て上記のローカルマッピング<Leader>oと同じように働 + く。 + +変数: +g:changelog_timeformat エントリに入れる日付(と時間)の書式。 + 使えるフォーマットは |strftime()| と同じ。 + デフォルトでは標準的に使われている "%Y-%m-%d" が設定 + されている。 +g:changelog_username ユーザーの名前とメールアドレス。 + デフォルトは環境変数とシステムファイルから推定され + る。まずカレントユーザーについての情報を得るために + /etc/passwd を探す。そこの最初の区切りにユーザーの実 + 名があることを期待している。次に環境変数の$NAMEを + チェックする。最後にアドレスを得るために`whoami`と + `hostname`を実行する。最終的に次のような値を決定す + る。 > + Full Name <user@host> +< +g:changelog_new_date_format + エントリを作成するときの書式。 + 次の特別な文字が使える: + %% 一つの '%' が入る + %d 上記で定義した日付 + %u 上記で定義したユーザーの名前 + %c 作成後のカーソルの位置 + デフォルトは "%d %u\n\n\5* %c\n\n"。これは次のように + なる ( | はカーソルの位置を示している。しかし、行頭 + の | は行の始まりを表す) > + |2003-01-14 Full Name <user@host> + | + | * | +< +g:changelog_new_entry_format + アイテムを作成するときの書式。 + 次の特別な文字が使える: + %c 作成後のカーソルの位置 + デフォルトは "\t*\c"。これは次のようになる > + | * | +< +g:changelog_date_entry_search + エントリを探すための検索パターン。 + g:changelog_new_date_formatと同じ特別な文字が使え + る。デフォルトは '^/\s*%d\_s*%u' で、次のような行 > + |2003-01-14 Full Name <user@host> +< を見つける。 + +チェンジログエントリは適切な位置に挿入される。現在の日付とユーザーを得た後 +に、その日付とユーザーのエントリをファイルから探し、見つかればその下にアイテ +ムを加える。なければ新しいエントリとアイテムをファイルの先頭に加える。 + + +フォートラン(FORTRAN) *fortran-plugin* + +オプション: +'expandtab' .vimrcでfortran_have_tabsが指定されなければ、フォートラン標準 + に従ってタブ文字を避けるために有効にする。 +'textwidth' フォートラン標準に従って固定形式のソースでは72に、自由形式の + ソースでは80に設定される。 +'formatoptions' コードとコメントを分けて、長い行を保持するように設定される。 + これにより|gq|でコメントを整形できる。 +fortran_have_tabsについての議論とソース形式の判定法については|fortran-syntax| +を参照。 + + +メール(MAIL) *mail-plugin* + +オプション: +'modeline' トロイの木馬の危険を避けるのと、「件名」に含まれる"Vim:"がエ + ラーメッセージの原因となる可能性を排除するために、モード行はオ + フになる。 +'textwidth' 72に設定する。e-mailでは良く推奨される値。 +'formatoptions' テキストを折返し、新しい行ではコメントリーダを繰り返すをように + 設定。引用記号の">"が繰り返される。 + これにより|gq|で引用文を整形できる。 + +ローカルキーマップ: +<LocalLeader>q or \\MailQuote + ビジュアルモードでは選択されたテキストを、ノーマルモードではカーソルの + 位置からファイル末端までのテキストを引用する。これは全ての行に "> " が + 挿入されることを意味している。 + +MAN *man-plugin* *:Man* + +マニュアルページを洗練された方法で表示する。ユーザーマニュアルの +|find-manpage|もご覧ください。 + +マニュアルページを読み込む前に":Man"を利用するには、起動vimrcファイルでこのス +クリプトを読み込む必要がある: > + + runtime ftplugin/man.vim + +オプション: +'iskeyword' マニュアルページの名前の上でCTRL-]を使えるようにするために文字 + '.' が追加される。 + +コマンド: +Man {name} {name} についてのマニュアルページを表示する。 +Man {number} {name} + {number} セクションの {name} に付いてのマニュアルページを表示 + する。 + +グローバルキーマップ: +<Leader>K カーソル下の単語についてのマニュアルページを表示する。 + +ローカルキーマップ: +CTRL-] カーソルの下の単語についてのマニュアルページへ移動する。 +CTRL-T 直前のマニュアルページへ戻る。 + + +RPM SPEC *spec-plugin* + +このプラグインに関する説明は非常に多いので、別のファイル |pi_spec.txt| に記述 +してある。 + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/fold.jax b/ja/fold.jax new file mode 100644 index 000000000..fc3b3e482 --- /dev/null +++ b/ja/fold.jax @@ -0,0 +1,566 @@ +COMMENT: 折畳み機能 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*fold.txt* For Vim version 6.3. Last change: 2004 May 20 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +折畳(folding) *Folding* *folding* + +ユーザマニュアルの28章に折畳についての紹介がされている。|user_28.txt| + +1. 折畳方法 |fold-methods| +2. 折畳コマンド |fold-commands| +3. 折畳オプション |fold-options| +4. 折畳の振舞 |fold-behavior| + +{Viには折畳は無い} +{+folding機能無しでコンパイルした場合には利用できない} + +============================================================================== +1. 折畳方法 *fold-methods* + +折畳を行なう方法は'foldmethod'オプションで設定できる。 + +'foldmethod'を"manual"以外の値に設定すると、存在している折畳は総て削除され新た +な折畳が作成される。"manual"に切換えた時には既存の折畳は削除されない。これを利 +用すればまず自動的に折畳を定義し、それから手動で変更することが可能である。 + +折畳方法は6つの中から選択できる: + manual 手動で折畳を定義する + indent インデントの数を折畳のレベル(深さ)とする + expr 折畳を定義する式を指定する + syntax 構文強調により折畳を定義する + diff 変更されていないテキストを折畳対象とする + marker テキスト中の印で折畳を定義する + + +手動(MANUAL) *fold-manual* + +折畳領域を定義するためにコマンドを手動で利用する。これはテキスト中の折畳を行な +う箇所をスクリプトにより解析するのに使うこともできる。 + +折畳のレベルは折畳の入れ子の深さとなる。ある行範囲の折畳レベルを増やすには、折 +畳がある同じ範囲に対して再び折畳を設定する。 + +手動折畳はファイルを放棄すると失われる。折畳を保存するには|:mkview|コマンドを +使用する。後に復元するには|:loadview|を使用する。 + + +インデント(INDENT) *fold-indent* + +折畳は各行のインデントにより自動的に定義される。 + +折畳レベルは各行のインデント量を、'shiftwidth'で割る(端数切捨て)ことで計算され +る。同じかより高い折畳レベルを持った一続きの範囲は1つの折畳を形成し、より高い +レベルを持った範囲はその中で入れ子の折畳となる。 + +折畳の入れ子は'foldnestmax'によって制限される。 + +ある行ではインデントを無視して直ぐ上か下の行のうち、低いほうの折畳レベルが使用 +される。無視されるのは完全な空行か、空白文字だけからなる行、および'foldignore' +の文字で始まる行である。'foldignore'の文字の前に空白文字があっても無視される。 +Cではプリプロセッサ行を無視するために"#"を使用する。 + +他の方法で無視する行を定義するには、'expr'の方法を使用する。'foldexpr'の中で、 +ある行のインデントを取得するのに、関数|indent()|を使うことができる。 + + +式(EXPR) *fold-expr* + +折畳は"indent"方式のように、折畳レベルによって自動的に定義される。'foldexpr'オ +プションの値は、各行についてこの折畳レベルを計算するためにスクリプトとして実行 +される。例: +タブで始まる一連の行範囲を1つの折畳にまとめる: > + :set foldexpr=getline(v:lnum)[0]==\"\\t\" +折畳レベルを計算するのにVimスクリプトの関数を呼び出す: > + :set foldexpr=MyFoldLevel(v:lnum) +空行で仕切られた「段落」を折畳とする: > + :set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1 +同じ事(「段落」を折畳に)をする別の表現: > + :set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1 + +バックスラッシュ(日本では \ 記号)が":set"の流儀で、通常とは異なるキャラクタ(空 +白文字、バックスラッシュ、ダブルクオート、その他、詳細は|option-backslash|参 +照)をエスケープしていることに注意。 + +式が評価される際の前提条件は以下の通り: +- その行について現在のバッファとウィンドウが常に存在している。 +- 変数"v:lnum"には評価対象となる行番号が設定されている。 +- 式の結果(戻り値)は以下の形式で折畳レベルを示す: + 値 意味 ~ + 0 対象行は折畳に含まれない + 1, 2, .. 対象行はこのレベルの折畳に含まれる + -1 折畳レベルを未定義とし、対象行の直前か直後の行のうち低 + い方を、対象行のレベルとする。 + "=" 直前の行と同じレベルを使用する + "a1", "a2", .. 直前の行のレベルを+1, +2して設定する + "s1", "s2", .. 直前の行のレベルを-1, -2して設定する + "<1", "<2", .. 指定したレベルの折畳を対象行で終了する + ">1", ">2", .. 指定したレベルの折畳を対象行から開始する + +折畳は直前の行の折畳レベルより高い(低い)行から開始(終了)されるので、折畳の開始 +(終了)マーク">1" ("<1") は明示的に指定する必要は無い。 + +式に副作用があってはならない。バッファ内のテキストや、カーソルの位置や、検索パ +ターンん、オプションその他。どれひとつ変更してはならない。 + +式にエラーがあるか、結果が認識できない時には、何のエラーメッセージも表示せずに +折畳レベルは0に設定される。'debug'オプションに"msg"を設定すれば、エラーメッ +セージが表示されるようになるので、デバッグに利用できる。 + +NOTE: 各行について式評価が実行されるので、この折畳方式は非常に動作が遅くなる可 +能性がある! + +"=", "a", そして"s"は極力避けるようにする。なぜならVimはそれらが使われると、折 +畳レベルが定義された行が見つかるまで戻って、幾度も検索を行なわなければならない +からだ。これは動作が遅くなることがある。 + +フォールドレベルを調べるには|foldlevel()|を使うのが便利です。レベルがわからな +いときは-1を返すことに注意してください。フォールドがその行で終わっているときに +は行頭のレベルを返します。 + + +構文(SYNTAX) *fold-syntax* + +折畳が"fold"引数を持つ構文要素によって定義される。 |:syn-fold| + +折畳レベルは入れ子によって定義される。入れ子の深さは'foldnestmax'によって制限 +される。 + +シンタックスの同期の設定に注意してください。これが正しく設定されていないとフォ +ールドが間違ったハイライトで表示されます。これは特に複数行にマッチするシンタッ +クスで問題になります。そのようなときには次のような力技があります: > + :syn sync fromstart + + +差分(DIFF) *fold-diff* + +テキストの変更された箇所とその近辺以外が自動的に折畳として定義される。 + +この方法は現在のウィンドウに対して'diff'オプションが設定されている時にだけ正し +く働き、変更点が表示される。そうでない場合バッファ全体が1つの大きな折畳となる。 + +コンテキスト(の行数)を指定するのに'diffopt'を使うことができる。これにより変更 +点の近辺の折畳に含まない行数を指定できる。下の例では8行表示するように設定して +いる: > + :set diffopt=filler,context:8 +省略した場合には6行が表示される。 + +'scrollbind'が設定されているとき、Vimは他のウインドウと見た目が同じになるよう +にフォールドを開いた状態に保とうとします。 + +印(MARKER) *fold-marker* + +テキスト中の印により折畳の開始と終了地点を指定する。これにより明確に折畳を設定 +することができる。また誤った行を含むことなく、折畳を削除・設定できる。通常 +'foldtext'オプションは折畳の行に表示されるテキストとして、印の直前のテキスト設 +定する。これにより折畳に名前を設定することが可能になる。 + +印には折畳レベルを含むことができ、また開始と終了で対になる文字を使うこともでき +る。必ずしも終了の印を加える必要はなく、また対がない印が無い場合の問題も避けら +れるので、レベルを含んだほうがより簡単である。例: > + /* グローバル変数 {{{1 */ + int varA, varB; + + /* 関数 {{{1 */ + /* funcA() {{{2 */ + void funcA() {} + + /* funcB() {{{2 */ + void funcB() {} + +折畳は印"{{{"で開始する。印の後ろの番号は折畳レベルを示す。現在の折畳レベルと +異なるレベルが印によって与えられた時に何が起こるかは、そのレベルの差に依存す +る: +1. 同じ折畳レベルの印が与えられた時には、前の折畳は終了し同じレベルの新たな折 + 畳が開始する。 +2. 高い折畳レベルの印を見つけた時には、入れ子の折畳が開始する。 +3. 低い折畳レベルの印を見つけた時には、指定されたレベル以上の全部の折畳を終了 + し、指定されたレベルで新たな折畳が開始する。 + +番号は折畳レベルを示す。0を使うことはできない。特定のレベルの折畳を終了させる +ため "}}}" 数字を付けて使うことができる。その印の直後の行の折畳レベルは示され +たレベルよりも1つだけ低くなる。Vimは指定されたレベルにマッチする印を検索はしな +いことに注意(計算に時間がかかりすぎてしまうので)。例: > + + {{{1 + ここからレベル1の折畳 + {{{3 + ここからレベル3の折畳 + }}}3 + ここからレベル2の折畳 + +折畳を定義するのに対になる"{{{"と"}}}"を使用することもできる。折畳レベルは +"{{{"1つにつき1ずつ増加し、"}}}"1つにつき1ずつ減少する。印同士の対応関係を維持 +するように気をつけること!。例: > + + {{{ + ここからレベル1の折畳 + {{{ + ここからレベル2の折畳 + }}} + ここからレベル1の折畳 + +番号付きの印と番号無しの印を混ぜて使用することもできる。大きな折畳には番号付き +の印を使用し、関数中の小さな折畳などには番号無しの印を使うと便利だろう。一例を +挙げれば、ファイルの "構造体定義" や "ローカル変数" それから "関数定義" のよう +な部分にはレベル1(番号付き)の折畳を使用する。そして一つ一つの定義や関数実装に +はレベル2の折畳を使用し、関数内部(例えばあるブロックなど)には番号無しの印を使 +用する。こうしておけば関数の中で折畳を分割するような変更を行なう時に、印にレベ +ルを付け直す必要はなくなる。 + +印は'foldmarker'オプションにより変更できる。Vimユーザ間でファイルを交換できる +ようにするためには、このオプションのデフォルトである "{{{,}}}" は変更しないこ +とが推奨される。ファイルによってそれがどうしても必要な時(例えば別のエディタで +作成した折畳を示す異なる印を含んでいる時や、ファイル内容の制約によりデフォルト +の印が問題を起こすため、それを使うことができない場合)にだけ変えるように。 + + *fold-create-marker* +印による折畳を作成するのに "zf" コマンドを使用することができる。Vimがユーザに +代わって印を挿入する。Vimは'foldmarker'で指定された開始の印と終了の印を追加す +る。印は行末に追加される。'commentstring'が空でなければそれが使用される。 +これは次のような時には正しく働かない: +- 既に番号付き折畳が含まれている。Vimはそれをどのように扱えば良いか知らない。 +- 番号付き折畳の近くで、それらの印が邪魔になる場合。 +- 行がコメントの中で、'commentstring'が空ではなく、かつ入れ子コメントを使用で + きない場合。例えばC言語: /* {{{ */ を既に存在するコメントを消さずにその中に + 追加するようなこと。コメントの直前か直後に印を設定するか、もしくは手動で印を + 追加する必要がある。 +一般的に、既に番号付き折畳が存在する場合には、Vimに印を作成させるのは良いアイ +デアではない。 + + *fold-delete-marker* +印による折畳を削除するのに "zd" コマンドを使用することができる。Vimがユーザに +代わって印を削除する。Vimは'foldmarker'で指定された開始の印と終了の印を検索す +る。印の周りにある'commentstring'に適合するテキストは可能な限り削除される。 +これは次のような時には正しく働かない: +- ある行に印が1つ以上含まれていて、そのうち少なくとも1つがレベルを指定している + 場合。折畳を削除することで期待される効果どうりになるかどうかはチェックされる + ことなく、単に初めの折畳が1つ削除される。 +- 番号付き印で、複数の折畳を同時に開始したり終了するために使用されている場合。 + +============================================================================== +2. 折畳コマンド *fold-commands* *E490* + +全ての折畳コマンドは "z" で始まっている。ヒント: "z" は紙片を折った様子を横から +みた姿に見える。 + + +折畳の作成と削除 ~ + *zf* *E350* +zf{motion} or +{Visual}zf 折畳を作成する操作。 + 'foldmethod'が"manual" か "manual"の時だけ動作する。"manual"の + 時には新しい折畳は閉じられる。 + 'foldenable'がセット(有効化)される。 + |fold-create-marker|も参照。 + + *zF* +zF N行を折畳として作成する。"zf"と同じように動作する。 + +:{range}fo[ld] *:fold* *:fo* + {range}で示された範囲を折畳にする。"zf"と同様に動作する。 + + *zd* *E351* +zd カーソルの位置にある折畳を1つ削除する。カーソルが折畳になって + いる行にある場合には、その折畳が削除される。入れ子になった折畳 + は1レベル分が削除される。ビジュアルモードでは選択された範囲の + 全ての折畳(partially)が削除される。注意: これは期待したよりも + 余計に折畳を削除し易く、またアンドゥもできないので注意が必要。 + 'foldmethod'が"manual" か "manual"の時だけ動作する。 + |fold-delete-marker|も参照。 + + *zD* +zD カーソルの位置の折畳を再帰的に削除する。ビジュアルモードでは、 + 選択された範囲内の入れ子も含め全ての折畳(partially)が削除され + る。 + 'foldmethod'が"manual" か "manual"の時だけ動作する。 + |fold-delete-marker|も参照。 + + *zE* *E352* +zE ウィンドウにある全ての折畳を削除する。 + 'foldmethod'が"manual" か "manual"の時だけ動作する。 + |fold-delete-marker|も参照。 + + +折畳を開く・閉じる ~ + +'foldminlines'よりも少ない行数の折畳は常に開いたように表示される。従って以下の +コマンドは小さな折畳に関しては異なった働きを持つ。 + + *zo* +zo カーソルの下の折畳を一段階開く。カウントが与えられた場合には、 + 複数の深さの折畳が開かれる。ビジュアルモードでは、選択された範 + 囲にある全ての折畳が1レベル開かれる。 + + *zO* +zO カーソルの下の折畳を再帰的に全て開く。カーソルのある行を含まな + いフォールドは変更されない。 + ビジュアルモードでは、選択された範囲の全ての折畳が、部分的に選 + 択されていただけでも全て完全に開かれる。 + + *zc* +zc カーソルの下の折畳を一段階開く。カウントが与えられた場合には、 + 複数の深さの折畳が閉じられる。ビジュアルモードでは、選択された + 範囲にある全ての折畳が1レベル閉じられる。 + 'foldenable'がセット(有効化)される。 + + *zC* +zC カーソルの下の折畳を再帰的に全て閉じる。カーソルのある行を含まな + いフォールドは変更されない。 + ビジュアルモードでは、選択された範囲の全ての折畳が、部分的に選 + 択されていただけでも全て完全に閉じられる。'foldenable'がセット + (有効化)される。 + + *za* +za 折畳が閉じていた場合: それを開く。折畳が入れ子になっている時に + は、"za"を何度も使う必要がある。カウントが与えられた場合には、 + 複数の閉じられた折畳が開かれる。 + 折畳が開いていた場合: それを閉じ'foldenable'をセットする。繰り + 返し使っても閉じた折畳が開くだけだから、これは1レベル開くだけ + である。カウントが与えられた場合には、複数の折畳が閉じられる + (これは"za"を複数回繰り返した場合の動作と同じではない)。 + + *zA* +zA 折畳が閉じていた場合: 再帰的に開く。 + 折畳が開いていた場合: 再帰的に閉じ'foldenable'をセットする。 + + *zv* +zv カーソル行を表示する: カーソルのある行がちょうど表示されるレベ + ルまで折畳を開く。 + + *zx* +zx 折畳を更新する: 手動で行なった折畳の開閉操作をアンドゥする: + 'foldlevel'を再適用し、"zv"を行なう: カーソル行を表示する。 + + *zX* +zX 手動で行なった折畳の開閉操作をアンドゥする: 'foldlevel'を再適 + 用する。 + + *zm* +zm 折畳をより閉じる: 'foldlevel'を1減少させる。'foldlevel'が既に0 + ならば何も起こらない。 + 'foldenable'がセット(有効化)される。 + + *zM* +zM 全ての折畳を閉じる: 'foldlevel'に0を設定する。 + 'foldenable'がセット(有効化)される。 + + *zr* +zr 折畳をより開く: 'foldlevel'を1増加させる。 + + *zR* +zR 全ての折畳を開く: 'foldlevel'に最大の折畳レベルを設定する。 + + *:foldo* *:foldopen* +:{range}foldo[pen][!] + {range}の範囲の折畳を開く。[!]が付け加わると全ての折畳が開かれ + る。{range}範囲内の全てのテキストを見るのに役立つ。[!]が無い時 + は1レベル分の折畳が開かれる。 + + *:foldc* *:foldclose* +:{range}foldc[lose][!] + {range}の範囲の折畳を閉じる。[!]が付け加わると全ての折畳が閉じ + られる。{range}範囲内の全てのテキストを隠すのに役立つ。[!]が無 + い時は1レベル分の折畳が閉じられる。 + + *zn* +zn Fold none: reset 'foldenable'. All folds will be open. + 折畳しない: 'foldenable'をリセットする。全ての折畳が開かれる。 + + *zN* +zN 折畳する: 'foldenable'をセットする。全ての折畳が'foldenable'が + リセットされる以前と同様になる。 + + *zi* +zi 'foldenable'を反転する。 + + +折畳を超えて移動する ~ + *[z* +[z 現在の開いている折畳の先頭へ移動する。既に先頭にいるのならば、 + それを含む外側の折畳の先頭へ移動する。外側の折畳が無い場合は、 + コマンドは失敗する。 + カウントが与えられた場合には、N回繰り返される。 + + *]z* +]z 現在の開いている折畳の末尾へ移動する。既に末尾にいるのならば、 + それを含む外側の折畳の末尾へ移動する。外側の折畳が無い場合は、 + コマンドは失敗する。 + カウントが与えられた場合には、N回繰り返される。 + + *zj* +zj カーソルより下方の折畳へ移動する。閉じられた折畳が1つの折畳と + して数えられる。 + カウントが与えられた場合には、N回繰り返される。 + このコマンドは|operator|のように使うことができる。 + + *zk* +zk カーソルより上方の折畳へ移動する。閉じられた折畳が1つの折畳と + して数えられる。 + カウントが与えられた場合には、N回繰り返される。 + このコマンドは|operator|のように使うことができる。 + + +折畳に対してコマンドを実行する ~ + +:[range]foldd[oopen] {cmd} *:foldd* *:folddoopen* + 閉じた折畳の中以外の全ての行に対して{cmd}を実行する。[range]が + 与えられた時は、その範囲だけが対象となる。 + コマンドが各行に対して実行される時にはカーソルはその対象となる + 行に置かれている。 + これは":global"コマンドのように動作する: まず閉じられた折畳に + 入っていない全ての行がマークされる。それからマークされた全ての + 行に対して{cmd}が実行される。だから{cmd}が折畳に対して変更を加 + えても、コマンドの実行には影響が無い(もちろん行が消された時は + 除く)。 + 例: > + :folddoopen s/end/loop_end/ge +< "e"フラグには"end"がマッチしなかった時にエラーメッセージが表示 + させない効果がある。 + +:[range]folddoc[losed] {cmd} *:folddoc* *:folddoclosed* + Execute {cmd} on all lines that are in a closed fold. + 閉じた折畳の中にある全ての行に対して{cmd}を実行する。 + その他は":folddoopen"と同じ。 + +============================================================================== +3. 折畳オプション *fold-options* + +色 *fold-colors* + +閉じられた折畳の色はFoldedグループによって設定される|hl-Folded|。折畳表示カラ +ムの色はFoldColumnグループによって設定される|hl-FoldColumn|。 +色の設定例: > + + :highlight Folded guibg=grey guifg=blue + :highlight FoldColumn guibg=darkgrey guifg=white + + +折畳レベル *fold-foldlevel* + +'foldlevel'は数を設定するオプションである: 大きな数を設定するとより多くの折畳 +が開かれる。 +'foldlevel'が0の時には、全ての折畳が閉じられる。 +'foldlevel'が正の時には、幾つかの折畳が閉じられる。 +'foldlevel'が非常に大きい時は、全ての折畳が閉じられる。 +'foldlevel'は変更された時に適用される。その後に手動で折畳を開いたり閉じたりで +きる。 +値を増やした時には、新しいレベルの値以上の折畳が開かれる。手動で開かれていた折 +畳は閉じられない。 +値を減らした時には、新しいレベルの値以上の折畳が閉じられる。手動で閉じられてい +た折畳は開かれない。 + + +折畳テキスト *fold-foldtext* + +'foldtext'は式を指定する文字列オプションである。この式は閉じられた折畳を示すテ +キストを得るために評価実行される。例: > + + :set foldtext=v:folddashes.substitute(getline(v:foldstart),'/\\*\\\|\\*/\\\|{{{\\d\\=','','g') + +これは折畳の最初の1行を、"/*" と "*/" を追加し"{{{"を削除して表示する。多めの +バックスラッシュ(\ 記号)はある文字が":set"コマンドに解釈されてしまうのを避ける +ために使用されている。これは以下のように関数を定義するとより簡単になる: > + + :set foldtext=MyFoldText() + :function MyFoldText() + : let line = getline(v:foldstart) + : let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g') + : return v:folddashes . sub + :endfunction + +'foldtext'は|sandbox|環境下で実行評価される。現在のウィンドウはそのラインの属 +するウィンドウへ設定される。エラーは無視される。 + +省略値は|foldtext()|である。これはほとんどのタイプの折畳に対して妥当なテキスト +を返す。それが気に入らないのならば、独自の式を'foldtext'に設定することができ +る。その式中では以下の特別なVim変数を使用することができる: + v:foldstart 折畳の先頭の行番号 + v:foldend 折畳の末尾の行番号 + v:folddashes 折畳レベルを表現したダッシュ(-)記号を含む文字列。 + v:foldlevel 折畳のレベル + +結果の文字列中のタブ文字は1つの空白文字に置き換えられ、表示不可能な文字は表示 +可能な文字に作り変えられる。 + +結果の文字列はウィンドウに合うように切り捨てられ、折り返されることはない。 +テキストの後ろに余白があれば、'fillchars'で指定された文字で充たされる。 + +":set"コマンドが解釈してしまう文字: 空白、バックスラッシュ(\ 記号)そしてダブル +クォート を使う場合にはバックスラッシュが必要である。 |option-backslash| + + +折畳表示カラム *fold-foldcolumn* + +'foldcolumn'は、ウィンドウの端に確保される折畳を示すカラムの幅を指定する数。0 +ならば、折畳表示カラムは確保されない。通常は4から5が一般的。使い物になる最小値 +は2。最大値は12。 + +折畳表示カラムには、開いた折畳の先頭に'-' が続いて '|'が表示される。このカラム +は開いた折畳が終了した位置で終了する。入れ子になった折畳では、それを含む折畳の +1つ左側に表示される。 + +閉じた折畳は'+'で表示される。 + +全ての折畳を表示できないほど折畳表示カラムが狭いときには、入れ子のレベルが数字 +で表示される。 + +折畳表示カラムをクリックすることで、マウスにより折畳を開閉することができる: +- 閉じた折畳を開くにはその行の'+'をクリックする。 +- 開いた折畳を閉じるにはそれ以外の非空白文字をクリックする。 + + +その他のオプション + +'foldenable' 'fen': 無効に設定すると全ての折畳が開く。 +'foldexpr' 'fde': 式("expr')による折畳で使用される。 +'foldignore' 'fdi': インデントによる折畳で使用される。 +'foldmarker' 'fmr': 印による折畳で使用される印を定義する。 +'foldmethod' 'fdm': 現在の折畳方法の名称。 +'foldminlines' 'fml': 閉じた状態で表示されるべき折畳の、スクリーン上での最小 + 行数 +'foldnestmax' 'fdn': インデント及び構文折畳での最大入れ子数 +'foldopen' 'fdo': 閉じている折畳を開くコマンドの種類 +'foldclose' 'fcl': カーソルの下ではない折畳をいつ閉じるか。 + +============================================================================== +4. 折畳の振舞 *fold-behavior* + +カーソルを上下に移動させたりスクロールさせると、カーソルは一連の折畳行の先頭へ +移動する。カーソルが既に折畳の行にあれば、カーソルは次の折畳ではない行か、閉じ +られた折畳へ移動する。 + +折畳の行にカーソルがある時には、カーソルは常に先頭のカラムに表示される。ルー +ラーは実際のカーソルの位置を示すが、行が折畳の場合には、そこに実際に表示するこ +とはできない。 + +移動コマンドは一連の折畳を空行として扱う。例えば、"w"コマンドは一旦先頭のカラ +ムで停止する。 + +挿入モードでは、カーソルのある行は決して折畳にならない。このため何を入力してい +るかわからなくなることはない! + +オペレータを使用したときには、閉じた折畳は全体が含まれる。だから"dl"はカーソル +の下の閉じた折畳の全体を削除してしまう。 + +Exコマンドでは、開始位置と終了位置が折畳のそれに常に合わせられてしまう。 +だから次のコマンド: > + :s/foo/bar/g +カーソルを閉じた折畳に置いて実行すると、折畳内の全ての行にある"foo" が "bar"へ +置き換えられてしまう。 +これは|:folddoopen|と|:folddoclosed|に対してはあてはまらない。 + +(同一セッション中で)以前に編集したバッファに対しては、最後の折畳設定が再び使用 +される。手動折畳では以前に定義された折畳が復元される。全ての折畳方法で、手動で +開閉した折畳は復元される。同じウィンドウで同じバッファが編集される時は、以前の +編集時の値が使用される。そうでなければそのウィンドウで最後に編集されていたバッ +ファの値が使用される。 + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/gui_w16.jax b/ja/gui_w16.jax new file mode 100644 index 000000000..1387613f0 --- /dev/null +++ b/ja/gui_w16.jax @@ -0,0 +1,187 @@ +COMMENT: GUI機能:Windows 3.1以前 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*gui_w16.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +Vimのグラフィカルユーザインターフェース *gui-w16* *win16-gui* + +1. GUIを始める |win16-start| +2. デフォルトエディタVim |win16-default-editor| +3. クリップボードを使う |win16-clipboard| +4. シェルコマンド |win16-shell| +5. 特別な色 |win16-colors| +6. ダイアログとブラウズ |win16-dialogs| +7. その他色々 |win16-various| + +その他の関連文章: +|gui.txt| GUIの一般的な要素。 +|os_msdos.txt| DOSとWindows共通の要素。 +|gui_w32.txt| これに書いてある事の一部はWin16バージョンにも該当する。 + +{Vi にはWindowsのGUIは無い} + +Win16バージョンのVimはWindows 3.1以降で動作する。3.0ではテストされていないが、 +恐らく修正してコンパイルし直さないと動作しないだろう。(しかし、とにかく3.11に +バージョンアップするべきだろう ^^) + +素晴らしいことにフラットスタイルのツールバーを含めて、ほとんどWin32のGUIバー +ジョンと同じ振舞をする。主な違いは以下の通り: + +1) 再描画を高速化しリソース使用量を減らすために、太字と斜体のテキストは利用で + きない。(MSWIN16_FASTTEXTを定義しないでコンパイルすれば利用可能) +2) メニューの切り取りはエミュレーションしていない。 +3) OLEインターフェスな無い。 +4) (あたり前だが)長いファイル名には対応しない。 +5) ツールバーのボタンにツールチップが無い - その代わりにメニューの項目が行なう + ようにコマンドラインへ表示する。 +6) 一行の長さは32767文字に制限される。(16ビットDOSバージョンと同じ) + + +============================================================================== +1. GUIを始める *win16-start* + +Win16のGUIバージョンは、どんな名前で起動されたかなんておかまい無しに、いつも +GUIでスタートする。コンソールは存在しないが、DOS窓でDOSバージョンのvimを使うこ +とはできる。 + +Win16 GUIには拡張されたメニュー項目: "ウィンドウ/フォント選択" がある。これを +選択するとWindowsの標準フォント選択ダイアログが表示される。GDIの描画速度を最大 +限に得るために太字と斜体フォントはサポートされていないことに注意。 + +メニューの高さはWin16 GUIでは設定できない。 + + *win16-maximized* +Vimを最大化して起動したいのならば、次のコマンドをvimrcかgvimrcに書き加える: > + au GUIEnter * simalt ~x +< + +gvim.exeのバージョンにはWindows 3.1及び3.11のWin32sサブシステム下で動作するも +のもある。|win32s|を参照。 + +============================================================================== +2. デフォルトエディタVim *win16-default-editor* + +Vimをあるファイルタイプのデフォルトエディタとして設定するには、ファイルマネー +ジャーの"関連付け"機能を使用する。 + +ファイルをダブルクリックしてVimを起動したときには、Vimはそのファイルのあるディ +レクトリへ移動する。 + +|notepad|も参照。 + +============================================================================== +3. クリップボードを使う *win16-clipboard* + +Windowsにはテキストを一時的に格納(コピー)し、取り出す(ペースト)できるクリップ +ボードがある。Vimでは幾つかの方法でクリップボードに対応している。 +クリップボードはWin32バージョンと同様に動作する: |gui-clipboard|参照。 + +============================================================================== +4. シェルコマンド *win16-shell* + +どんなDOSコマンドでも実行できるようにするために、Vimは外部コマンドを実行するた +めにDOS窓を作成する。このDOS窓は_default.pifの設定を使用する。 + + *win16-!start* +通常、Vimは外部コマンドの実行が完了するのを待つ(これはVimが使用する出力を生成 +するコマンドを考えれば合理的である)。外部コマンドを実行してすぐに戻るようにし +たいならば、次のような方法がある: > + :!start {command} +これはWindowsプログラムにだけ利用できる。 +Vimに戻っている間時にバックグラウンドでDOSコマンドを実行できるように、Windows +3.1xを設定するのを忘れないこと。 + +============================================================================== +5. Special colors *win16-colors* + +Win16では、通常のDOSでの色が使用される。|dos-colors|を参照。 + +加えてシステムが構成している色を使用することができる。それらはSys_XXXとして知 +られ、XXXの部分は下のリストに示される、割り当てられているシステムカラー名であ +る(完全な解説はWin32の文章を参照)。大文字小文字は区別されない。 + +Sys_BTNFace Sys_BTNShadow Sys_ActiveBorder +Sys_ActiveCaption Sys_AppWorkspace Sys_Background +Sys_BTNText Sys_CaptionText Sys_GrayText +Sys_Highlight Sys_HighlightText Sys_InactiveBorder +Sys_InactiveCaption Sys_InactiveCaptionText Sys_Menu +Sys_MenuText Sys_ScrollBar Sys_Window +Sys_WindowFrame Sys_WindowText + +恐らく一番便利な値はこれらだろう + Sys_Window 通常のウィンドウの背景の色 + Sys_WindowText 通常のウィンドウの文字の色 + Sys_Highlight 選択されたテキストの背景の色 + Sys_HighlightText 選択されたテキストの文字の色 + +他にもこの様な色も存在する: +Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet, + + +|rgb.txt|も参照。 + +============================================================================== + *win16-dialogs* +6. ダイアログとブラウズ + +コンソールバージョンから受け継がれる伝統的なインターフェースはもちろん、さらに +Win16 GUIでは幾つかの操作に見慣れたWindowsのコンポーネントを使用することができ +る。 + + +6.1 ダイアログ + +その他のバージョンではコンソールベースで行われていた"confirm"ファミリ(すなわち +'confirm'オプションと|:confirm|コマンドと|confirm()|関数)で、GUIベースのダイア +ログが表示される。これを変更するオプションは存在しない。 + + +6.2 ファイルブラウザ + +ファイルを編集するコマンドの前に":browse"を付けると、存在するファイルを選択す +るためのウィンドウ選択ダイアログが使用される。|:browse|を参照。 + + +============================================================================== +7. その他色々 *win16-various* + + *win16-printing* +"ファイル/印刷"メニューは現在のバッファを印刷するのにNotepadを使用する。これは +ちょっと不器用だが、ポータブルである。もしも他の何かを使用したいのならば、独自 +の印刷コマンドを定義することができる。例えば、PrintFileの16ビットバージョンを +探すことができる。フォルトでどう働くかは$VIMRUNTIME/menu.vimを参照。 + +これも動作するだろう: > + :w >>prn + +Vimでは多くのMS Windows標準の機能をサポートしている。それらの幾つかは別の場所 +で説明されている: |'mouse'|、|win32-hidden-menus|を参照。 +|:simalt|も参照。 + + *win16-drag-n-drop* +Vimのウィンドウに1つもしくは複数のファイルをドラッグ&ドロップすることができ、 +それらは普通に開かれる。その時にShiftを押していると、Vimは(最初に)ドロップされ +たファイルのディレクトリに移動する。Ctrlを押しているとVimはそのファイルを開く +ために、新しいウィンドウを分割する。そうでなければ現在のバッファが、そのファイ +ルを開くために使用される。 +ディレクトリのアイコンをドロップすれば、ディレクトリ内の全てのファイルを開くの +ではなく(普通これは望まれる動作ではないだろう)、Vimはそのディレクトリに移動し +新しいファイルの編集を開始する。 +コマンドラインの編集中には、ドロップされたファイルやディレクトリの名前がカーソ +ルの位置に挿入される。これによりどんなExコマンド中にもこれらの名前を使用するこ +とができる。 + + *win16-truetype* +TrueTypeの固定ピッチフォントではなくラスターフォントを使うことが推奨される。例 +えば、Couier NewではなくCouierを使う。これはリソース使用量を減らすだけでなく、 +Win3.1xの固定ピッチTrueTypeの取り扱いには微妙なバグが存在するからである。とり +わけパイプ文字 '|'の上をカーソルが移動した時、カーソルが間違った大きさで少し左 +にズレて描画される。これはWin3.1x GDIのバグで、同じexeファイルを95/NTで実行し +た時には再現されない。 + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/if_cscop.jax b/ja/if_cscop.jax new file mode 100644 index 000000000..7aa6193ad --- /dev/null +++ b/ja/if_cscop.jax @@ -0,0 +1,463 @@ +COMMENT: Cscope(開発支援ツール)インターフェイス +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*fold.txt* For Vim version 6.3. Last change: 2004 May 20 + + + VIM リファレンスマニュアル by Andy Kahn + + + *cscope* *Cscope* +この文章はVimにおけるcscopeインターフェースを使い方について述べている。 + +cscopeはctagsのようなツールであるが、ctagsよりも多くの機能が提供されるので +ctagsの代わりとみなせる。Vimではタグにジャンプするように、cscopeクエリの結果へ +ジャンプすることができる; ジャンプの履歴はタグスタックに保存されいつものキー +マッピングにより、普段|tags|でやるように関数の間を行ったり来たりできる。 + +1. Cscopeの紹介 |cscope-intro| +2. Cscopeに関係するコマンド |cscope-commands| +3. Cscopeオプション |cscope-options| +4. Vimでのcscopeの使い方 |cscope-howtouse| +5. 制限事項 |cscope-limitations| +6. 使い方の提案 |cscope-suggestions| +7. 入手法と情報 |cscope-info| + +現在のところUNIXとWin32で使える。 +{Vi にはこれらのコマンドは無い} + +============================================================================== +1. Cscopeの紹介 *cscope-intro* + +以下の文章はあるバージョンのcscopeのマニュアルから引用した: + + ----- + + cscopeは貴方を助けるインタラクティブなスクリーン指向のツールです: + + いつ終わるかわからない厚いソースリストのぺジーをめくることなく、Cプログ + ラムがどのように働くかを知る。 + + プログラム全体を知らなくても、バグを修正するために変更すべきコードの位 + 置を見つける。 + + 列挙変数(enum)に値を追加するといった提案された変更の影響を検証する。 + + 既存の関数に引数を追加したというような全部のソースファイルに施された変 + 更を検証する。 + + 全部のソースファイルのグローバル変数の名前を変える。 + + ファイルの指定された行にある定数をプリプロセッサのシンボルに変更する。 + + これは次のような質問に答えるように意図されている: + どこでこのシンボルが使われたのか? + それがどこで定義されたのか? + この変数がどこでその値を得たのか? + このグローバルシンボルの定義は何か? + この関数はどのソースファイルのどこにあるのか? + どの関数がこの関数を呼んでいるのか? + どの関数がこの関数から呼ばれているか? + "メモリが足りない"というメッセージはどこから来たのか? + このソースファイルはディレクトリのどこにあるのか? + どんなファイルがこのヘッダーファイルをインクルードしているのか? + + cscopeは起動すると最初に1度だけソースファイルからシンボルデータベースを作成 + し、このデータベースを用いてこれらの質問に答える。2度目以降の起動では、ソー + スファイルが変更されたかソースファイルのリストが異なる時にだけデータベースが + 再構築される。データベースが再構築される時でも変更されていないファイルについ + ては過去のデータベースよりコピーされるので、初めからビルドし直すよりも高速に + ビルドできる。 + + ----- + +通常cscopeを起動すると、上のような問い合わせ(クエリ)を入力できるフルスクリーン +の選択画面が表示される。しかしながら、一度クエリが見つかりマッチを含むソース +ファイルを編集するためのエディタを指定してあると、普段viでCtrl-]や:tagコマンド +でやっているようなタグからタグへの単純なジャンプはできなくなる。 + +Vimのcscopeインターフェースはcscopeの行指向インターフェースを利用することでこ +れを行い、実クエリに対する出力を解釈する。cscopeのクエリの結果は最終的に通常の +tagsのようになるので、普通のタグのようなジャンプ操作(Ctrl-]や:tag)を行なうこと +ができ、タグスタックをCtrl-Tで逆に辿ることも可能になる。(しかしキーマップの再 +定義やコマンドやオプションの設定をしないで、まったく単純にCtrl-]や:tagと同じよ +うにジャンプできるわけではないことに注意して欲しい。cscopeインターフェースがど +のように働くのか、どういう使い方が提案されているのかは残りのセクションを参 +照。) + + +============================================================================== +2. Cscopeに関係するコマンド *cscope-commands* + + *:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560* +全てのcscopeのコマンドはメインコマンド":cscope"のサブコマンドとしてアクセスす +ることができる。最も短い省略形は":cs"である。":scscope"コマンドはウィンドウ分 +割を伴って同じ事を行なう(省略形: "scs")。 + +利用可能なサブコマンドは: + + *E563* *E564* *E566* *E568* *E569* *E622* *E623* + *E625* *E626* *E609* + add : 新しいcscopeデータベース/接続を追加する。 + + 使用法 :cs add {file|dir} [pre-path] [flags] + + [pre-path] cscopeに-Pコマンドで渡されるパス名 + + [flags] cscopeに引き渡す追加フラグ + + 例 > + :cs add /usr/local/cdb/cscope.out + :cs add /projects/vim/cscope.out /usr/local/vim + :cs add cscope.out /usr/local/vim -C +< + *cscope-find* *cs-find* + *E565* *E567* + find : cscopeに問い合わせる。#5オプション(grepパターンを変更する)以外の全 + cscopeクエリオプションが使用可能。 + + 使用法 :cs find {querytype} {name} + + {querytype}は実際のcscopeのラインインターフェース + の番号(デフォルトのnviコマンド)に対応する: + + 0 or s: Cのシンボルを検索 + 1 or g: 定義を検索 + 2 or d: 関数から呼ばれる関数を検索 + 3 or c: 関数を読んでいる関数を検索 + 4 or t: 文字列を検索 + 6 or e: egrepパターンを検索 + 7 or f: ファイルを検索 + 8 or i: ファイルを参照(#include)しているファイルを検索 + + EXAMPLES > + :cs find c vim_free + :cs find 3 vim_free +< + この2つの例は、同じクエリを実行する。 > + + :cs find 0 DEFAULT_TERM +< + 3番目の例をソースコードに対して行なうと、Vim 5.1は以下の出力を生成 + する。 + + + Cscope tag: DEFAULT_TERM + # line filename / context / line + 1 1009 vim-5.1-gtk/src/term.c <<GLOBAL>> + #define DEFAULT_TERM (char_u *)"amiga" + 2 1013 vim-5.1-gtk/src/term.c <<GLOBAL>> + #define DEFAULT_TERM (char_u *)"win32" + 3 1017 vim-5.1-gtk/src/term.c <<GLOBAL>> + #define DEFAULT_TERM (char_u *)"pcterm" + 4 1021 vim-5.1-gtk/src/term.c <<GLOBAL>> + #define DEFAULT_TERM (char_u *)"ansi" + 5 1025 vim-5.1-gtk/src/term.c <<GLOBAL>> + #define DEFAULT_TERM (char_u *)"vt52" + 6 1029 vim-5.1-gtk/src/term.c <<GLOBAL>> + #define DEFAULT_TERM (char_u *)"os2ansi" + 7 1033 vim-5.1-gtk/src/term.c <<GLOBAL>> + #define DEFAULT_TERM (char_u *)"ansi" + 8 1037 vim-5.1-gtk/src/term.c <<GLOBAL>> + # undef DEFAULT_TERM + 9 1038 vim-5.1-gtk/src/term.c <<GLOBAL>> + #define DEFAULT_TERM (char_u *)"beos-ansi" + 10 1042 vim-5.1-gtk/src/term.c <<GLOBAL>> + #define DEFAULT_TERM (char_u *)"mac-ansi" + 11 1335 vim-5.1-gtk/src/term.c <<set_termname>> + term = DEFAULT_TERM; + 12 1459 vim-5.1-gtk/src/term.c <<set_termname>> + if (STRCMP(term, DEFAULT_TERM)) + 13 1826 vim-5.1-gtk/src/term.c <<termcapinit>> + term = DEFAULT_TERM; + 14 1833 vim-5.1-gtk/src/term.c <<termcapinit>> + term = DEFAULT_TERM; + 15 3635 vim-5.1-gtk/src/term.c <<update_tcap>> + p = find_builtin_term(DEFAULT_TERM); + Enter nr of choice (<CR> to abort): + + 出力には幾つかの情報を示している: + 1. タグの数(例には15個ある) + 2. タグが在る行番号 + 3. タグの在るファイル名 + 4. タグのコンテキスト(例えばグローバルか関数名か) + 5. ファイルの該当行そのもの + + help : 短い解説を表示する。 + + 使用法 :cs help + + *E260* *E261* + kill : cscopeとの接続を切断する(もしくは全ての接続を切断する)。 + + 使用法 :cs kill {num|partial_name} + + cscopeとの接続を切断するには、接続番号か部分的な名前を指定しなけれ + ばならない。「部分的名前」とは単純にcscopeデータベースのパス名の一 + 部である。部分的名前を使用してcscope接続を切断する時には注意するこ + と! + + 接続番号-1を指定すると、全てのcscope接続が切断される。 + + reset : 全てのcscope接続を再初期化する。 + + 使用法 :cs reset + + show : cscope接続を表示する。 + + 使用法 :cs show + + *:cstag* *E257* *E562* +ctagsとcscopeを同じように使うのならば、両方を順に検索してジャンプを行なうのに +|:cstag|が利用できる。例えば、最初にcscopeデータベースを検索し、見つからなかっ +た時には、tagsファイルを検索することができる。どちらを先に検索するかは|csto|の +値で決まる。詳細は|cscope-options|を参照。 + +|:cstag|がcscopeデータベースを検索する時には、識別子に対して":cs find g"と同じ +ように働く。 + +|:cstag|がtagsファイルを検索する時には、識別子に対して|:tjump|と同じように働 +く。 + + +============================================================================== +3. Cscopeオプション *cscope-options* + +全てのcscopeのオプションは|:set|コマンドによって設定できる。理想的には起動ファ +イルのどれか1つ(例: .vimrc)で行なうであろう。cscopeに関係する幾つかの変数は +|.vimrc|の中だけで有効である。Vimが起動した後にそれらの変数を変更しても効果が +無い! + + *cscopeprg* *csprg* +'cscopeprg'にはcscopeを実行するコマンドを指定する。省略値は"cscope"。例: > + :set csprg=/usr/local/bin/cscope +< + *cscopequickfix* *csqf* *E469* +{|+quickfix|付きでコンパイルしないと利用できない} +'cscopequickfix'はcscopeの結果を表示するためにクイックフィックスウインドウを +使うかどうかを決める。これはコンマ区切りのリストである。要素は|cscope-find| +コマンド(s, g, d, c, t, e, f or i)とフラグ(+, - or 0)から成っている。 +'+' は結果がクイックフィックスウインドウに追加されることを示す。 +'-' はそれ以前の結果を消すことを意味する。'0'や何も指定していないコマンドは +クイックフィックスウインドウを使わない。探索は始まりから最初のコマンドを見つ +けるまで実行される。 +デフォルトの値は ""(クイックフィックスを使わない)。次の値が便利だろう: +"s-,c-,d-,i-,t-,e-"。 + + *cscopetag* *cst* +'cscopetag'が設定されていると、コマンド":tags"、CTRL-]、そして"vim -t"はデフォ +ルトの:tagの変わりに、常に":cstag"を使うようになる。事実上、tagファイルと同じ +ようにcscopeデータベースを検索することができるようになるだろう。省略した場合は +オフ。例: > + :set cst + :set nocst +< + *cscopetagorder* *csto* +'csto'の値は|:cstag|が検索を実行する順序を決定する。'csto'が0に設定されている +ならば、先にcscopeデータベースが検索され、cscopeでは見つからなかった時にだけ +tagファイルが検索される。'csto'が1ならば、cscopeデータベースの前にtagsファイル +が検索される。省略値は0。例: > + :set csto=0 + :set csto=1 +< + *cscopeverbose* *csverb* +'cscopeverbose'が設定されていないと(デフォルト)、cscopeデータベースを追加した +際の成否結果のメッセージが表示されない。理想的には、|.vimrc|の中でcscopeデータ +ベースを追加する前にリセットし、追加し終わった後で設定すべきである。設定してお +けば、Vim使用中にデータベースの追加に失敗した時、(望むらくは原因を特定するの +に)役立つメッセージが表示されるだろう。例: > + :set csverb + :set nocsverb +< + *cscopepathcomp* *cspc* +'cspc'の値はファイルパスのうち幾つの構成要素を表示するか決定する。省略値である +0を設定した時には完全なパスが表示される。値として1を設定すればファイル名だけが +表示される。その他の値であれば、その数だけ構成要素を表示する。例: > + :set cspc=3 +ファイルパスのうち最後の3つ(ファイル名と2段上までのディレクトリ名)を表示する。 + +============================================================================== +4. Vimでのcscopeの使い方 *cscope-howtouse* + +最初にやらなければならないことは、ソースコードに対してcscopeデータベースを構築 +することである。最も基本的なケースでは、単純に"cscope -b"とする。詳細について +はcscopeのマニュアル(manページ)を参照して欲しい。 + +cscopeデータベースがあるならば、次にそのデータベースをVimへ"add"しなければなら +ない。これはcscopeとの"接続"を確立し、それをVimが使えるような状態にする。これ +は.vimrcや、vim起動後に手動で行うことができる。例えば、cscopeデータベース +"cscope.out"を追加するには、次のようにする: > + + :cs add cscope.out +< +この結果は":cs show"を実行することでもう一度チェックすることができる。これは次 +のような出力を生成する: > + + # pid database name prepend path + 0 28806 cscope.out <none> + +Note: +Microsoftのランタイムライブラリの制限により、Win32バージョンでは本当のプロセス +IDではなく0が表示される。 + +一旦cscope接続が確立されれば、cscopeへクエリを送信でき、その結果を表示すること +ができる。クエリは":cs find"コマンドにより生成される。例: > + + :cs find g ALIGN_SIZE +< +これは最終的に結構な量のタイプを必要とするのでやっかいである。しかしながら、 +ショートカットキーをマッピングしてこれを避ける方法がある。その方法については +|cscope-suggestions|を参照のこと。 + +一致する項目が1つしかなければ、自動的にその場所へ移動する。複数の結果が得られ +た場合には、行きたい項目を選択できる画面が表示される。新しい場所へ移動した後 +は、単にCTRL-Tをタイプすることで以前の位置へ戻ることができる。 + + +============================================================================== +5. 制限事項 *cscope-limitations* + +Vimのcscope機能は4つのシステムコール:fork(), pipe(), execl(), waitpid() をサ +ポートしているシステムでのみ利用可能である。これはほとんどUNIXシステムだけに限 +られることを意味している。 + +加えて、CscopeはWin32でも動く。Win32で動くcscopeについて詳しくは次のサイトを見 +てください。 + + http://iamphet.nm.ru/cscope/index.html + +これにはコードに埋め込まれた2つの限界がある: + + 1. 最大cscope接続数は8。本当にこれ以上必要ですか? + + 2. |:cstag|がタグファイルを検索している時の|:tjump|は実装されていない。 + (例: 代わりとしてtselectも利用できない) + +============================================================================== +6. 使い方の提案 *cscope-suggestions* + +次のエントリを.vimrcに記述する(パス名は環境にあわせて然るべく変更すること): > + + if has("cscope") + set csprg=/usr/local/bin/cscope + set csto=0 + set cst + set nocsverb + " add any database in current directory + if filereadable("cscope.out") + cs add cscope.out + " else add database pointed to by environment + elseif $CSCOPE_DB != "" + cs add $CSCOPE_DB + endif + set csverb + endif + +'cscopetag'を設定することで、:tagコマンドの実体を:cstagで効率的に置き換えてい +る。これには:tags, CTRL-], そして"vim -t"も含まれる。こうすることで、通常のtag +コマンドはctagsが生成したtagファイルだけでなく、cscopeデータベースも検索するよ +うになる。 + +あるユーザは通常のtagの振る舞いはそのままに、:cstagへアクセスする異なった +ショートカットを望むかもしれない。例えば次のコマンドでCTRL-_(アンダースコア) +に:cstagをマップできる: > + + map <C-_> :cstag <C-R>=expand("<cword>")<CR><CR> + +良く使われる2つのcscopeのクエリ(":cs find"を使う)は、ある関数を読んでいる全て +の関数を探すのと、あるCのシンボルを使用している箇所全てを探すものである。これ +を行なうには、例としてこのようなマップを使うことができる: > + + map g<C-]> :cs find 3 <C-R>=expand("<cword>")<CR><CR> + map g<C-\> :cs find 0 <C-R>=expand("<cword>")<CR><CR> + +このマッピングによりCTRL-] (右角カッコ)とCTRL-\ (バックスラッシュ)を、カーソル +の下にある関数名やCシンボルを素早くcscopeに問い合わせ結果を得るのに利用できる +ようになる。 + +もしくは次の仕組みを使うこともできる。これは Vim/Cscope のチュートリアルに影響 +を受けました(http://cscope.sourceforge.net/)。 > + + nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> + nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR> + nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> + nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> + nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> + nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR> + nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> + nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> + + " 'CTRL-spacebar' を使うと結果を新しいウインドウで表示する。 + + nmap <C-Space>s :scs find s <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space>g :scs find g <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space>c :scs find c <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space>t :scs find t <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space>e :scs find e <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space>f :scs find f <C-R>=expand("<cfile>")<CR><CR> + nmap <C-Space>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> + nmap <C-Space>d :scs find d <C-R>=expand("<cword>")<CR><CR> + + " CTRL-space を2回連続して押すとウインドウを縦に開く + + nmap <C-Space><C-Space>s + \:vert scs find s <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space><C-Space>g + \:vert scs find g <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space><C-Space>c + \:vert scs find c <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space><C-Space>t + \:vert scs find t <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space><C-Space>e + \:vert scs find e <C-R>=expand("<cword>")<CR><CR> + nmap <C-Space><C-Space>i + \:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> + nmap <C-Space><C-Space>d + \:vert scs find d <C-R>=expand("<cword>")<CR><CR> + +============================================================================== +7. 入手法と情報 *cscope-info* + +まだcscopeを持っていない(あなたのコンパイラのライセンスやOSのディストリビュー +ションに含まれてない)のならば、次の場所から無料で入手できる: + http://cscope.sourceforge.net/ +cscopeはSCOによりBSDラインセンスの基づいて配布されている。 + +より新しいバージョンのcscopeを入手したいのならば、恐らく購入する必要があるだろ +う。(古い)nviのドキュメントによれば: + + バージョン13.3の無制限ライセンス付きのソースコードが、AT&Tソフトウェア + ソリューション(電話番号+1-800-462-8146)から400ドルで購入できる。 + +また cscope 13.x や mlcscope 14.x (他国後バージョンのcscopeで、C, C++, Java, +lex, yacc, breakpoint listing, Ingres, and SDL をサポートしている) を次のサイ +トからダウンロードできる。 + World-Wide Exptools Open Source packages page: + http://www.bell-labs.com/project/wwexptools/packages.html + +Solaris 2.xでは、Cコンパイラのライセンスを入手していれば、cscopeも入手している +だろう。どちらも通常は/opt/SUNWspro/binに格納される。 + +SGIの開発者もまた入手可能である。このページからCscopeを検索してください + http://freeware.sgi.com/index-by-alpha.html + https://toolbox.sgi.com/toolbox/utilities/cscope/ +2番目のアドレスはSGIツールボックスのパスワードを持っているユーザ用である。 + +古いcscopeのクローン("cs"という名)のソースコードがネットで入手可能である。ただ +し様々な理由で、これはVimではサポートされない。 + +オリジナルのcscopeインターフェース/サポートはAndy Kahn <ackahn@netapp.com>に +よって書かれた。元となった構造(かなり小さいコードだった)はnviのcscopeインター +フェースから改作された。問題、提案、パッチそのほか何でも、Vimでcscopeを使うの +に何か持っているものがあれば彼に送って欲しい。 +(訳注:もちろん日本語では送らないで下さい) + *cscope-win32* +Win32バージョンのcscopeについてはこのサイトをご覧ください + http://iamphet.nm.ru/cscope/index.html + +Win32への対応は Sergey Khorev <khorev@softlab.ru> してくれました。Win32に固有 +の問題については彼に問い合わせてください。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_ruby.jax b/ja/if_ruby.jax new file mode 100644 index 000000000..cbe57b2b1 --- /dev/null +++ b/ja/if_ruby.jax @@ -0,0 +1,191 @@ +COMMENT: Rubyインターフェイス(外部スクリプト) +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*if_ruby.txt* For Vim version 6.3. Last change: 2004 Mar 14 + + + VIM リファレンスマニュアル by Shugo Maeda + +Rubyインターフェイス *ruby* *Ruby* + + +1. コマンド |ruby-commands| +2. VIMモジュール |ruby-vim| +3. VIM::Buffer オブジェクト |ruby-buffer| +4. VIM::Window オブジェクト |ruby-window| +5. グローバル変数 |ruby-globals| + +{Viにはこれらのコマンドは無い} + *E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273* + +Rubyインターフェイスは|+ruby|機能を有効化してVimをコンパイルした時にのみ動作す +る。 + +Rubyのホームページは http://www.ruby-lang.org/ です。ここでRubyをダウンロード +できます。 + +MS-Windows用のRubyライブラリは以下のところで入手できる(訳補): + + http://www.dm4lab.to/~usa/ruby_en.html + +============================================================================== +1. コマンド *ruby-commands* + + *:ruby* *:rub* +:rub[y] {cmd} Rubyのコマンド{cmd}を実行する。 + +:rub[y] << {endpattern} +{script} +{endpattern} + Rubyスクリプト{script}を実行する。 + {endpattern}の行では直前に空白文字を先行させてはいけな + い。{endpattern}が省略された場合、|:append|や|:insert| + コマンド同様に'.'(ドット)がデフォルトである。この形式 + の|:ruby|コマンドは主にVimスクリプトにRubyコードを埋め + 込むのに便利。 + Note: このコマンドはRuby機能をコンパイル時に指定しな + かった時には動作しない。エラーを避けるには + |script-here|を参照。 + +Vimスクリプトの例: > + + function! RedGem() + ruby << EOF + class Garnet + def initialize(s) + @buffer = VIM::Buffer.current + vimputs(s) + end + def vimputs(s) + @buffer.append(@buffer.count,s) + end + end + gem = Garnet.new("pretty") + EOF + endfunction +< + + *:rubydo* *:rubyd* *E265* +:[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the + [range], with $_ being set to the text of each line in + turn, without a trailing <EOL>. Setting $_ will change + the text, but note that it is not possible to add or + delete lines using this command. + [range]の範囲の各行を1行ずつ$_へ、行末の<EOL>を削除し + て設定し、Rubyコマンド{cmd}を実行評価する。$_を変更す + るとバッファのテキストが変更をできるが、このコマンドを + 使って行を追加したり削除したりはできないことに注意。 + [range]を省略した場合ファイル全体が対象: "1,$" + + *:rubyfile* *:rubyf* +:rubyf[ile] {file} ファイル{file}のRubyスクリプトを実行する。ファイル名の + 補完が利用できる以外は、":ruby load 'file'"と同じ。 + +|sandbox|環境内ではRubyコマンドを実行できない。 + +============================================================================== +2. VIMモジュール *ruby-vim* + +Rubyのコードは全てのVimへのアクセスをVIMモジュール経由で行なう。 + +概要 > + print "Hello" # メッセージを表示する + VIM.command(cmd) # Exコマンドを実行する + num = VIM::Window.count # ウィンドウ数を取得する + w = VIM::Window[n] # ウィンドウ n を取得する + cw = VIM::Window.current # 現在のウィンドウを取得する + num = VIM::Buffer.count # バッファ数を取得する + b = VIM::Buffer[n] # バッファ n を取得する + cb = VIM::Buffer.current # 現在のバッファを取得する + w.height = lines # ウィンドウの高さ(行数)を設定する + w.cursor = [row, col] # ウィンドウのカーソル位置を設定する + pos = w.cursor # カーソルの位置を配列で受け取る + name = b.name # バッファのファイル名を取得する + line = b[n] # バッファから行の内容を取得する + num = b.count # バッファの行数を取得する + b[n] = str # バッファの行の内容を変更する + b.delete(n) # 行を削除する + b.append(n, str) # n行目の直後に行を追加する +< + +モジュール関数: + + *ruby-message* +VIM::message({msg}) + メッセージ{msg}を表示する。 + + *ruby-set_option* +VIM::set_option({arg}) + Sets a vim option. {arg} can be any argument that the ":set" command + accepts. Note that this means that no spaces are allowed in the + argument! See |:set|. + Vimのオプションを設定する。{arg}は":set"コマンドで使えるもののならば何 + でも良い。これが引数の中では空白文字が許されないと意味していることに注 + 意。|:set|を参照。 + + *ruby-command* +VIM::command({cmd}) + Exコマンド{cmd}を実行する。 + + *ruby-evaluate* +VIM::evaluate({expr}) + Vim内部の実行エンジンを使ってスクリプト{expr}を実行評価する + (|expression|参照)。実行結果は文字列で返される。 + +============================================================================== +3. VIM::Buffer オブジェクト *ruby-buffer* + +VIM::Buffer objects represent vim buffers. + +Class Methods: + +current Returns the current buffer object. +count Returns the number of buffers. +self[{n}] Returns the buffer object for the number {n}. The first number + is 0. + +Methods: + +name Returns the name of the buffer. +number Returns the number of the buffer. +count Returns the number of lines. +length Returns the number of lines. +self[{n}] Returns a line from the buffer. {n} is the line number. +self[{n}] = {str} + Sets a line in the buffer. {n} is the line number. +delete({n}) Deletes a line from the buffer. {n} is the line number. +append({n}, {str}) + Appends a line after the line {n}. + +============================================================================== +4. VIM::Window オブジェクト *ruby-window* + +VIM::Window オブジェクトはVimのウィンドウを表現している。 + +クラスメソッド: + +current 現在のウィンドウオブジェクトを返す。 +count ウィンドウの数を返す。 +self[{n}] 番号{n}のウィンドウオブジェクトを返す。番号は0から数え始める。 + +メソッド: + +buffer ウィンドウに表示されているバッファを返す。 +height ウィンドウの高さを返す。 +height = {n} ウィンドウの高さを{n}に設定する。 +cursor カーソルの位置を[行数, カラム]の形で配列にして返す。 +cursor = [{row}, {col}] + カーソルの位置を{row} 行の {col}カラムに設定する。 + +============================================================================== +4. グローバル変数 *ruby-globals* + +2つのグローバル変数がある。 + +$curwin 現在のウィンドウオブジェクト +$curbuf 現在のバッファオブジェクト + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/indent.jax b/ja/indent.jax new file mode 100644 index 000000000..9b1349287 --- /dev/null +++ b/ja/indent.jax @@ -0,0 +1,530 @@ +COMMENT: C言語自動インデントとプログラム可能な自動インデント +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*indent.txt* For Vim version 6.3. Last change: 2004 Apr 25 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +このファイルにはCソースコードとその他のファイルのインデント(字下げ)について書 +かれている。 + +1. Cソースコードのインデント |C-indenting| +2. スクリプトを用いたインデント |indent-expression| + +============================================================================== +1. Cソースコードのインデント *C-indenting* + +C言語ソースコード(以下、単に「C」)用インデントの基本はユーザマニュアルの|30.2| +節で説明されている。 + +VimにはCを自動的にインデントするためのオプションがある。これらのオプションはイ +ンデントだけに影響し、その他の整形には意味をなさない。コメントの整形については +|format-comments|を参照。 + +コンパイル時に|+smartindent| か |+cindent|機能を無効にした時には、これが動作し +ないことに注意。 + +実際のところインデントには4つの方法がある: +'autoindent' 一つ前の行に基づくインデント +'smartindent' 'autoindent'と同様だが幾つかのC構文を認識し、適切な箇所のイン + デントを増減させる。 +'cindent' 他の2つの方法よりも賢く動作し、設定することで異なるインデント + スタイルにも対応できる。 +'indentexpr' この中で一番融通が利く: ある行のインデントを計算するのにVimス + クリプトを実行する。この方法が有効である(空でない)時にはその他 + のインデントは抑制される。|indent-expression|参照 +この節の残りはオプション'cindent'について述べる。 + +'cindent'はあらゆるCソースを正しくインデントできるわけではないことに注意。Vim +はCコンパイラではない: だから全ての構文は認識できない。 + +Cのインデントはこの4つのオプションで制御されている: +'cindent' Cの自動インデントを有効化する。 +'cinkeys' 再インデントの引金となる挿入モードでのキーを指定する。 +'cinoptions' 好みのインデントスタイルを設定する。 +'cinwords' 次の行から特別なインデントを開始するキーワードを定義する。 + +オプション'lisp'がオフで'equalprg'が空ならば、オペレータ"="は外部プログラムで +はなくVimの内蔵アルゴリズムを使用してインデントを行なう。 + +Cのファイルに対して自動的に'cindent'をオンにしてそれ以外のファイルに対してはオ +フにする方法は|autocommand|を参照。 +(訳注: バージョン6.0以降はファイル形式プラグイン(|filetype|参照)とバッファロー +カルオプション(|:setlocal|)を使うことが推奨される。VimにはデフォルトでC用の +ファイル形式プラグイン($VIMRUNTIME/ftplug/c.vim)が付属しているから、これを行な +いたい時は単にファイル形式プラグインを有効化するだけで良い。) + + *cinkeys-format* *indentkeys-format* +オプション'cinkeys'はVimのインデントを制御する文字列で、どの文字がタイプされた +時に、どのような状況下でコマンドが実行されたかに応じてインデントを行なうかを定 +義する。これがCインデントの唯一の引金ではないことには注意する。'indentexpr'が +空でない時には代わりに'indentkeys'が使われる。'cinkeys'と'indentkeys'の書式は +同じ。 + +デフォルトは "0{,0},0),:,0#,!^F,o,O,e" で、これにより次のような時にインデント +が行なわれる: + + "0{" 行の先頭で '{' をタイプした時 + "0}" 行の先頭で '}' をタイプした時 + "0)" 行の先頭で ')' をタイプした時 + ":" ラベルやcase文のあとで ':' をタイプした時 + "0#" 行の先頭で '#' をタイプした時 + "!^F" CTRL-Fをタイプした時 (CTRL-F自体は入力されない) + "o" 挿入モードで<CR>をタイプした後、及びノーマルモードで "o" コマ + ンドを使用した時 + "O" ノーマルモードで "O" コマンドを使用した時 + "e" 行の先頭で "else" の2つ目の 'e' をタイプした時 + +各キーの前に置くことのできる文字は次の通り: +! '!' をキーの前に置くと、Vimはそのキーを挿入するのではなく替わりに現在 + の行のインデントを再調整する。これにより現在の行の再調整するためのコマ + ンドキーを定義することができる。CTRL-Fはそのデフォルトキーである。 + CTRL-Iは<Tab>のアスキーコードだから、CTRL-Iを定義する際に気をつけるこ + と。 +* '*' をキーの前に置くと、Vimはインデント再調整を行なってからそのキーを + 挿入する。'cinkeys' に "*<Return>"が含まれている時には、Vimは新しい行 + を作成する前に現在行のインデントを再調整する。 +0 '0' をキーの前 ('!' や '*'の後ということはあるが) に置くと、Vimはその + キーが行の先頭で入力された時だけインデント再調整を行なう。"=" の前に使 + われた時にはVimはその単語の前に空白文字しか無い時にだけ再調整が行なわ + れる。 + +'!' と '*'のいずれもキーの前に置かれていない時は、Vimはそのキーがタイプされた +時にインデント再調整を行なう。だから ';' を含めれば ';' が入力された行のインデ +ントが調整される。 + +特別なキーの名称: +<> 折カッコは書き下されたキーの名前を意味する。例: "<Up>" や "<Ins>" + (|key-notation|参照)。 +^ キャレット(^)が前に置かれた文字はコントロール文字。例: "^F"はCTRL-F +o "o"コマンドを使用した時もしくはVimが現在の行の下に新しい行を作成した時 + にインデント再調整をする(例えば、挿入モードで<Enter>をタイプした時)。 +O "O"コマンドを使用した時にインデント再調整をする。 +e "else"で始まる行の2つ目の'e'をタイプした時にインデント再調整をする。 +: ラベルやcase文の後に':'をタイプした時にインデント再調整をする。C++の + "class::method"内の":"では再調整しない。どんな":"でもインデントするに + は"<:>"を使用する。 +=word "word"の最後の文字をタイプした時にインデント再調整をする。"word"は実際 + は別の単語の一部かもしれない。"=end"のように設定すれば"endif" や + "endwhile" の "d"をタイプした時に再調整が起こる。しかし"bend"では起こ + らない。補完により"word"で始まる単語が提示された時にも再調整は起こる。 + "0=word"は単語の前に空白文字しかない時に再調整を行なう。 +=~word は =wordに似ているが、大文字小文字の区別がされない。 + +キー 'o', 'O', 'e', '0', '<', '>', '*', ':' それに '!' そのものを入力した時に +インデント再調整を行ないたいのならば、それぞれ "<o>", "<O>", "<e>", "<0>", +"<<>", "<>>", "<*>", "<:>" そして "<!>" を使用する。 + +Enterを押す度ではなくemacsのようにTabキーを押した時にだけインデントを行なうよ +うにするには、次の設定を提案する: > + :set cinkeys=0{,0},:,0#,!<Tab>,!^F +その時には'autoindent'もオフにしたほうが良いかもしれない。 + +NOTE: 現在の行のインデントを手動で変更すれば、Vimはその行についてはcindentの設 +定を無視する。これによりインデントの中で<BS>, <Tab> や <Space>を入力したり、 +CTRL-TやCTRL-Dを使用してインデントを変更した後では、Vimはインデントの再調整を +行なわなくなる。 + + *cinoptions-values* +オプション'cinoptions'ではVimがどのようなインデントを行なうのかを設定する。以 +下のリストでは、"N" は指定したい数値を意味する(数値は負でも良い)。数値のあとに +'s'がある時には、数値に'shiftwidth'の数を掛算して使用する: "1s"はshiftwidth'に +等しく、"2s"は'shiftwidth'の2倍になり、以下同様。小数を使うこともできる: +"-0.5s"は'shiftwidth'の半分の負の数である。以下の例では'shiftwidth'は4と想定し +ている。 + + >N 通常のインデントで追加される量。インデントを増やすべき行(ifで始 + まる行や、開き波カッコ等)の直後で使用される。 + (省略値 'shiftwidth') + + cino= cino=>2 cino=>2s > + if (cond) if (cond) if (cond) + { { { + foo; foo; foo; + } } } +< + eN 開き波カッコが行末にある(正確には行頭ではない)時に、カッコ内のイ + ンデントを通常よりも N 追加する。'{'が行頭ある場合と行末にある場 + 合とでインデント量を変更したい時に便利。 + (省略値 0) + + cino= cino=e2 cino=e-2 > + if (cond) { if (cond) { if (cond) { + foo; foo; foo; + } } } + else else else + { { { + bar; bar; bar; + } } } +< + nN "if", "while" その他の直後、波カッコのセットに囲まれていないなら + ば、その文のインデントを現行よりも N 追加する。文の前に '{' が無 + い時と有る時とでインデント量を変更したい時に便利。 + (省略値 0) + + cino= cino=n2 cino=n-2 > + if (cond) if (cond) if (cond) + foo; foo; foo; + else else else + { { { + bar; bar; bar; + } } } +< + fN 関数やその他のブロックを示す開き波カッコを N 列目に配置する。こ + れは他の波カッコの内側ではなく、かつ行頭である開き波カッコだけに + 適用される。波カッコの後の続くものはこの波カッコと相対的な位置に + 配置される。 + (省略値 0) + + cino= cino=f.5s cino=f1s > + func() func() func() + { { { + int foo; int foo; int foo; +< + {N 開き波カッコを現行のインデントから N の位置に配置する。これは他 + の波カッコの内側にある開き波カッコにのみ適用される。 + (省略値 0) + + cino= cino={.5s cino={1s > + if (cond) if (cond) if (cond) + { { { + foo; foo; foo; +< + }N 閉じ波カッコを対応する開き波カッコから N の位置に配置する。 + (省略値 0) + + cino= cino={2,}-0.5s cino=}2 > + if (cond) if (cond) if (cond) + { { { + foo; foo; foo; + } } } +< + ^N 開き波カッコが 0 列目にある波カッコセットの内側のインデントを現 + 行よりも N 追加する。これにより関数全体には異なるインデント量を + 指定することができる。 + (省略値 0) + + cino= cino=^-2 cino=^-s > + func() func() func() + { { { + if (cond) if (cond) if (cond) + { { { + a = b; a = b; a = b; + } } } + } } } +< + :N caseラベルをswitch()のインデントから N の位置に配置する。 + (省略値 'shiftwidth') + + cino= cino=:0 > + switch (x) switch(x) + { { + case 1: case 1: + a = b; a = b; + default: default: + } } +< + =N caseラベル後に現れる文をラベルのインデントから N の位置に配置す + る。 + (省略値 'shiftwidth') + + cino= cino==10 > + case 11: case 11: a = a + 1; + a = a + 1; b = b + 1; +< + lN N が 0 でなければVimはcaseラベル後の文の替わりに、caseラベルそ + のものを基本にして配置を行なう。 + (省略値 0) + + cino= cino=l1 > + switch (a) { switch (a) { + case 1: { case 1: { + break; break; + } } +< + bN N が 0 でなければVimは最後の"break"を基準にして配置を行う。 + ブロック状に整頓したように見える。 + (省略値 0) + cino= cino=b1 > + switch (x) switch(x) + { { + case 1: case 1: + a = b; a = b; + break; break; + + default: default: + a = 0; a = 0; + break; break; + } } +< + gN C++のスコープ宣言をそれが含まれるブロックのインデントから N の位 + 置へ配置する。"public:", "protected:", "private"がスコープ宣言に + なり得る。 + (省略値 'shiftwidth') + + cino= cino=g0 > + { { + public: public: + a = b; a = b; + private: private: + } } +< + hN C++スコープ宣言後に現れる文をそのラベルのインデントから N の位置 + に配置する。 + (省略値 'shiftwidth') + + cino= cino=h10 > + public: public: a = a + 1; + a = a + 1; b = b + 1; +< + pN K&Rスタイルの関数宣言の引数宣言を N 文字インデントする。 + (省略値 'shiftwidth') + + cino= cino=p0 cino=p2s > + func(a, b) func(a, b) func(a, b) + int a; int a; int a; + char b; char b; char b; +< + tN 関数の戻り型の宣言を N 文字インデントする。 + (省略値 'shiftwidth') + + cino= cino=t0 cino=t7 > + int int int + func() func() func() +< + iN C++の基底クラスの宣言やコンストラクタが新しい行で始まる時に N 文 + 字インデントする(そうでない時には右端の':'を基準にする)。 + (省略値 'shiftwidth') + + cino= cino=i0 > + class MyClass : class MyClass : + public BaseClass public BaseClass + {} {} + MyClass::MyClass() : MyClass::MyClass() : + BaseClass(3) BaseClass(3) + {} {} +< + +N 継続した行(次の行へと分割された行)を N でインデントする。 + (省略値 'shiftwidth') + + cino= cino=+10 > + a = b + 9 * a = b + 9 * + c; c; +< + cN コメント開始子の後のコメント本文を、配置すべきその他のテキストが + 無ければ、コメント開始子から N 文字でインデントする。 + (省略値 3) |format-comments|も参照。 + + cino= cino=c5 > + /* /* + text. text. + */ */ +< + CN N が0でなければ、コメント開始子の後に他のテキストがある場合で + も、コメントの行に c フラグで指定した量でインデントがされる。 + (省略値 0) + + cino=c0 cino=c0,C1 > + /******** /******** + text. text. + ********/ ********/ +< (":set comments& comments-=s1:/* comments^=s0:/*" を同時に設定) + + /N コメント行を N 文字インデントする. + (省略値 0) + + cino= cino=/4 > + a = b; a = b; + /* comment */ /* comment */ + c = d; c = d; +< + (N 閉じていない丸カッコ内では開き丸カッコのあるラインより N 文字イ + ンデントする。インデント量は1つの丸カッコにつき 'shiftwidth'ずつ + 増える。N が 0 であるか、閉じていない丸カッコが行頭にある時は、 + インデント位置はそのカッコ後の非空白文字の位置になる。 + (省略値 'shiftwidth' * 2) + + cino= cino=(0 > + if (c1 && (c2 || if (c1 && (c2 || + c3)) c3)) + foo; foo; + if (c1 && if (c1 && + (c2 || c3)) (c2 || c3)) + { { +< + uN Same as (N, but for one level deeper. (default 'shiftwidth'). + (N と同じだが、一段階内側の丸カッコについての設定。 + (省略値 'shiftwidth') + + cino= cino=u2 > + if (c123456789 if (c123456789 + && (c22345 && (c22345 + || c3)) || c3)) +< + UN N が 0 ではない時には、閉じていない丸カッコが行頭にある場合でも + ( や u で指定したインデントを無視しない。 + (省略値 0) + + cino= or cino=(s cino=(s,U1 > + c = c1 && c = c1 && + ( ( + c2 || c2 || + c3 c3 + ) && c4; ) && c4; +< + wN N が 0 ではなければ次に示すような場合の、閉じていない丸カッコ後 + の非空白文字ではなく、カッコ直後の位置がインデントに使用される: + - "(0" を使用している時の閉じていない丸カッコ + - "u0" を使用している時の閉じていない丸カッコ + - "U0" を使用している時の行頭の閉じていない丸カッコ + (省略値 0) + + cino=(0 cino=(0,w1 > + if ( c1 if ( c1 + && ( c2 && ( c2 + || c3)) || c3)) + foo; foo; +< + WN N が 0 でない時に、丸カッコが閉じてなくて、"(0"か"u0"のどちらか + が使われていて閉じていない開き丸カッコが行末にある時、続く行を最 + 初の行から相対的にインデントする。 + (省略値 0) + + cino=(0 cino=(0,W4 > + a_long_line( a_long_line( + argument, argument, + argument); argument); + a_short_line(argument, a_short_line(argument, + argument); argument); +< + mN N が 0 でない時には、閉じ丸カッコで始まる行を対応する開き丸カッ + コのある行頭に並べる。 + (省略値 0) + + cino=(s cino=(s,m1 > + c = c1 && ( c = c1 && ( + c2 || c2 || + c3 c3 + ) && c4; ) && c4; + if ( if ( + c1 && c2 c1 && c2 + ) ) + foo; foo; +< + *java-cinoptions* *java-indenting* + jN Javaの無名クラスを正しくインデントする。値 'N' は現在のところ使 + われていないが 0 以外(例 'j1')にするべきである。'j1'にすることで + 例として次のようなコードが正しくインデントされる: > + + object.add(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + do_something(); + } + }); +< + )N Vimは N 行まで遡って閉じていないカッコを探す。これはカッコを探す + のにかかる時間を制限する。 + (省略値 20) + + *N Vimは N 行まで遡って閉じられていないコメントを探す。これはコメン + トの始まりを探すのにかかる時間を制限する。 + (省略値 30行) + + +省略値を全て並べるとこうなる: + cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,gs,hs,ps,ts,+s,c3,C0,(2s,us, + \U0,w0,m0,j0,)20,*30 + +次のような場合にはVimは行頭を1列目に持っていく: +- 'cinkeys'が '#' を含み行が '#' (プリプロセッサ命令)で始まる場合 +- ラベルで始まる場合("case" と "default" 以外のキーワードの後に ':' があった場 + 合) +- インデントの組合わせの結果、その行のインデント量が0以下になった場合。 + +============================================================================== +2. スクリプトを用いたインデント *indent-expression* + +融通の利くインデントの基本はユーザマニュアルの|30.3|節で説明されている。 + +独自にインデントファイルを書きたいならば、オプション'indentexpr'を設定しなけれ +ばならない。同時にオプション'indentkeys'を設定すると便利だろう。インデントファ +イルの例は$VIMRUNTIME/indentディレクトリを参照。 + + +インデントファイルについての覚書 ~ + + +FORTRAN *fortran-indent* + +ifブロック、select case、そしてwhere構成物がインデントされる。コメント、ラベル +付き文、そして2行にまたがった行は、Fortranが自由形式のソースではインデントされ +るが、一方Fortranが固定形式ソースの場合には左余白が言語仕様により決定されてい +るのでインデントされない。それ故に固定形式ソースを使っている時にはラベル付き文 +と2行にまたがった行については手動でインデントを修正する必要がある。ソース形式 +の判定に使われている方法についてのさらなる議論は|fortran-syntax|を参照のこと。 + +Doループ ~ +デフォルトでは全てのdoループはインデントされない。Fortranでは、ループはラベル +付けされたほとんど任意の型の実行可能な文で(場合によっては多重に)終わるので、do +ループは非構造的になる。これを正しくインデントするにはコンパイラ級の構文解析が +必要になる。任意の型の実行可能文で終わるdoループを持っていたとしても、古いコー +ドであればTidy (http://www.unb.ca/chem/ajit/f_tidy.htm) のように念入りに作られ +たプログラムでインデントすることはできる。構造化do/continueループも、continue +文がdoループを終了する以外の目的でも使用されるので、インデントせずに残される。 +Tidyのようなプログラムは構造化do/continueループをdo/enddo形式に変換することが +できる。do/enddoタイプのdoループならばインデントすることができる。do/enddoの形 +の構造化されたループしか使わないのならば、.vimrcで以下のようにfortran_do_enddo +変数を設定してそのことを宣言するべきである: > + + let fortran_do_enddo=1 + +このようなすればdoループはインデントされる。例えば拡張子が.f90 であるファイル +の中にある全てのループがdo/enddoタイプだけならば、このようなautocommandを使っ +てのバッファフラグを設定することができる: > + + au! BufRead,BufNewFile *.f90 let b:fortran_do_enddo=1 + +こうすれば.f90のファイル内のdoループはインデントし、それ以外の拡張子、例えば +で.forであるFortranのファイルのループはインデントせずに残すことができる。 + + +VERILOG *verilog-indent* + +一般的なブロック文であるif, for, case, always, initial, function, specify, そ +してbegin等などはインデントされる。moduleブロック文(最初のレベルのブロック)は +デフォルトではインデントされない。次のように.vimrcで以下の変数を設定するとその +インデントを有効化できる: > + + let b:verilog_indent_modules = 1 + +これによりmoduleブロックがインデントされる。これをやめるには変数を削除すれば良 +い: > + + :unlet b:verilog_indent_modules + +Verilogのファイルにだけこの変数を設定するには、次の設定が使える: > + + au BufReadPost * if exists("b:current_syntax") + au BufReadPost * if b:current_syntax == "verilog" + au BufReadPost * let b:verilog_indent_modules = 1 + au BufReadPost * endif + au BufReadPost * endif + +その上、インデントの幅を変更するのに変数b:verilog_indent_widthを設定できる +(省略値 'shiftwidth'): > + + let b:verilog_indent_width = 4 + let b:verilog_indent_width = &sw * 2 + +さらに、デバッグ目的でverboseモードを有効化できる: > + + let b:verilog_indent_verbose = 1 + +メッセージを表示できるようにするために、先に":set cmdheight=2"を実行することを +確認すること。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/quickref.jax b/ja/quickref.jax new file mode 100644 index 000000000..7886b411b --- /dev/null +++ b/ja/quickref.jax @@ -0,0 +1,1332 @@ +COMMENT: クイックリファレンスガイド +STATUS: finished 6.0 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*quickref.txt* For Vim version 6.0. Last change: 2001 Sep 10 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + Quick reference guide + +smz めも:移動とジャンプを原文を見直して、区別しないといけない +smz めも:atomを文字と訳した所があるが、ウソになってるかも。要チェック +smz 特に正規表現のトコロ。\(....\)でぐるーぷ化したものがatomになるから +smz めも:identifierの訳が不明。有意な単語のことかな? +smz メモ:ヤンク+プットの組み合せか、コピー+ペーストの組合せか? +smz めも:grコマンドがよくわからない + + *quickref* *Contents* + tag subject tag subject ~ +|Q_ct| ヘルプファイルの一覧 |Q_re| 繰り返しコマンド +|Q_lr| 移動: 左右 |Q_km| キー割り付け(マッピング) +|Q_ud| 移動: 上下 |Q_ab| 短縮(省力入力) +|Q_tm| 移動: 文脈 |Q_op| オプション +|Q_pa| 移動: パターン検索 |Q_ur| Undo/Redoコマンド +|Q_ma| 移動: マーク |Q_et| 外部コマンド +|Q_vm| 移動: 雑多 |Q_qf| Quickfixコマンド? +|Q_ta| 移動: タグの利用 |Q_vc| その他の雑多なコマンド +|Q_sc| スクロール |Q_ce| Exモード: コマンド行編集 +|Q_in| 挿入: 文字列の挿入(?) |Q_ra| Exモード: 範囲指定 +|Q_ai| 挿入: キー(?) |Q_ex| Exモード: 特殊文字 +|Q_ss| 挿入: 特殊キー |Q_ed| ファイル編集 +|Q_di| 挿入: 合字(digraph) |Q_fl| 引数リストの使い方 +|Q_si| 挿入: 特殊な挿入 |Q_wq| 書き出しと終了 +|Q_de| 変更: 文字の削除 |Q_st| vimの起動方法 +|Q_cm| 変更: 複写と移動 |Q_ac| 自動コマンド +|Q_ch| 変更: 文字列の入れ換え |Q_wi| 複数ウィンドウのコマンド +|Q_co| 変更: 複雑な変更(?) |Q_bu| バッファ一覧コマンド +|Q_vi| ビジュアルモード |Q_sy| シンタックスハイライト +|Q_to| テキストオブジェクト |Q_gu| GUIコマンド + |Q_fo| 折り畳みコマンド + +------------------------------------------------------------------------------ +以下の説明中の N はコマンドの直前に回数指定ができることを示します。 +------------------------------------------------------------------------------ +*Q_lr* 左右の移動 + +|h| N h 左に N 桁移動 ( CTRL-H, <BS>, <Left> キーでも同じ) +|l| N l 右に N 桁移動 ( <Space>,<Right> キーでも同じ) +|0| 0 行の先頭に移動 ( <Home> キーでも同じ) +|^| ^ 行の先頭(但し空白文字類以外)に移動 +|$| N $ 行の末尾に移動。(N-1行、下に移動) + ( <End> キーでも同じ) +|g0| N g0 見た目が同じ行の先頭に移動。(複数行にまたがる時の + 動きが"0"と違います) +|g^| N g^ 見た目が同じ行の先頭(但し空白文字類以外)に移動。 + (複数行にまたがる時の動きが"^"と違います) +|g$| N g$ 行の末尾に移動。(複数行にまたがる時の動きが"$"と違 + います) +|gm| N gm 現在行の中央(端末の横巾の半分の桁位置)に移動 +|bar| N | N桁目に移動。(デフォルトは1) +|f| N f{char} 現在位置から右方向にあるN個目の{char}に移動 +|F| N F{char} 現在位置から左方向にあるN個目の{char}に移動 +|t| N t{char} 現在位置から右方向にあるN個目の{char}の左側に移動 +|T| N T{char} 現在位置から左方向にあるN個目の{char}の左側に移動 +|;| N ; 直前の"f", "F", "t", "T"を N 回繰り返す。 +|,| N , 直前の"f", "F", "t", "T"を逆方向に N 回繰り返す。 +smz ※ f,F,t,Tで指定する{char}は1文字分の文字だけです。 +------------------------------------------------------------------------------ +*Q_ud* 上下の移動 + +|k| N k 上に N 行移動 ( CTRL-P, <Up> キーでも同じ) +|j| N j 下に N 行移動 ( CTRL-J, CTRL-N, <NL>,<Down> でも同じ) +|-| N - 上に N 行移動し、行頭の非空白文字に移動 +|+| N + 下に N 行移動し、行頭の非空白文字に移動(CTRL-M, <CR> + キーでも同じ) +|_| N _ 下に N-1 行移動し,行頭の非空白文字に移動 +|G| N G N 行目(デフォルトは最後の行)に移動し、行頭の非空白文 + 字に移動 +|gg| N gg N 行目(デフォルトは1行目)に移動し、行頭の非空白文字 + に移動 +|N%| N % ファイルの N パーセント目に移動。このコマンドは N の + 指定が必須。無指定の場合は|%|コマンド扱い。 +|gk| N gk 画面上で N 行上に移動。(複数行にまたがる行がある場合 + の動きが"k"と異なる) +|gj| N gj 画面上で N 行下に移動。(複数行にまたがる行がある場合 + の動きが"j"と異なる) +------------------------------------------------------------------------------ +*Q_tm* テキスト文脈単位の移動(?) + +|w| N w N 個目の単語分、先に進む +|W| N W 空白で区切られた単語(=|WORD|) N 個分、先に進む +|e| N e N 個目の単語のお尻まで進む +|E| N E 空白で区切られた単語(=|WORD|) N 個目のお尻まで進む +|b| N b N 個目の単語分、前に戻る +|B| N B 空白で区切られた単語(=|WORD|) N 個分、前に戻る +|ge| N ge N 個目の単語のお尻まで戻る +|gE| N gE 空白で区切られた単語(=|WORD|) N 個目のお尻まで戻る + +|)| N ) N センテンス(文)分、先に進む +|(| N ( N センテンス分、前に戻る +|}| N } N パラグラフ(段落)分、先に進む +|{| N { N パラグラフ分、前に戻る +|]]| N ]] N セクション(章)分、先に進み、その先頭に移動 +|[[| N [[ N セクション(章)分、前に戻り、その先頭に移動 +|][| N ][ N セクション(章)分、先に進み、その末尾に移動 +|[]| N [] N セクション(章)分、前に戻り、その末尾に移動 +|[(| N [( N 個目の呼応していない'('まで戻る +|[{| N [{ N 個目の呼応していない'{'まで戻る +|[m| N [m N 個前のメソッドの先頭まで戻る(Java用) +|[M| N [M N 個前のメソッドの末尾まで戻る(Java用) +|])| N ]) N 個目の呼応していない')'まで進む +|]}| N ]} N 個目の呼応していない'}'まで進む +|]m| N ]m N 個先のメソッドの先頭まで進む(Java用) +|]M| N ]M N 個先のメソッドの末尾まで進む(Java用) +|[#| N [# N 個目の呼応していない"#if"や"#else"まで戻る +|]#| N ]# N 個目の呼応していない"#else"や"#endif"まで進む +|[star| N [* N 個前のコメントの先頭まで戻る +|]star| N ]* N 個先のコメントの末尾まで進む +------------------------------------------------------------------------------ +*Q_pa* Pattern searches + +|/| N /{pattern}[/[offset]]<CR> + N 回目の{pattern}を含む個所を順方向に検索 +|?| N ?{pattern}[?[offset]]<CR> + N 回目の{pattern}を含む個所を逆方向に検索 +|/<CR>| N /<CR> 直前と同じ条件の検索を同じ方向に対して実施 +|?<CR>| N ?<CR> 直前と同じ条件の検索を逆方向に対して実施 +|n| N n 直前の検索を再実行 +|N| N N 直前の検索を逆方向に再実行 +|star| N * カーソル位置にある識別子を順方向に検索 +|#| N # カーソル位置にあるパターン(?)を逆方向に検索 +|gstar| N g* "*"と同じだが、部分的な一致を検索 +|g#| N g# "#"と同じだが、部分的な一致を検索 +|gd| gd カーソル位置の識別子のローカル宣言に移動 +|gD| gD カーソル位置の識別子のグローバル宣言に移動 + +|pattern| 検索パターンでの特殊文字の扱い + + meaning magic nomagic ~ + 任意の1文字に一致 . \. + 行頭に一致 ^ ^ + <EOL>に一致 $ $ + 単語の先頭に一致 \< \< + 単語の末尾に一致 \> \> + 指定の範囲の1文字に一致 [a-z] \[a-z] + matches a single char not in the range [^a-z] \[^a-z] + 識別子の文字に一致 \i \i + 上の条件から数字を除いたもの \I \I + キーワード文字に一致 \k \k + 上の条件から数字を除いたもの \K \K + ファイル名(で使える)文字に一致 \f \f + 上の条件から数字を除いたもの \F \F + 表示可能文字に一致 \p \p + 上の条件から数字を除いたもの \P \P + 空白文字類に一致 \s \s + 空白文字類以外に一致 \S \S + + <Esc>に一致 \e \e + <Tab>に一致 \t \t + <CR>に一致 \r \r + <BS>に一致 \b \b + + 直前に指定したatomと0回以上一致 * \* + 直前に指定したatomと1回以上一致 \+ \+ + 直前に指定した文字と0回もしくは1回一致 \+ \+ + 直前に指定した文字と2回~5回一致 \{2,5} \{2,5} + 2種類の正規表現を列記 \| \| + パターンをグループ化してatomとする \(\) \(\) + +|search-offset| 検索パターンでのオフセット指定 + + [num] [num] 行下の1桁目 + +[num] [num] 行下の1桁目 + -[num] [num] 行上の1桁目 + e[+num] 一致した文字列の最後から [num] 桁右 + e[-num] 一致した文字列の最後から [num] 桁左 + s[+num] 一致した文字列の先頭から [num] 桁右 + s[-num] 一致した文字列の先頭から [num] 桁左 + b[+num] 一致した文字列の先頭(begin)から [num] 桁右 + b[-num] 一致した文字列の先頭(begin)から [num] 桁左 + ;{search-command} 次の{search-command}を実行する。 +smz s[num]とb[num]の違いがよくわからない。beginって何??? +smz ;コマンドの意図がよくわからない。??? +------------------------------------------------------------------------------ +*Q_ma* Marks and motions + +|m| m{a-zA-Z} 現在の場所を {a-zA-Z} としてマーク +|`a| `{a-z} 編集中のファイルのマーク{a-z} に移動 +|`A| `{A-Z} 任意のファイルのマーク{A-Z} に移動 +|`0| `{0-9} vimが前回終了した時の場所に移動 +|``| `` 直前のジャンプコマンドの前の場所に移動 +|`quote| `" 前回このファイルを編集した時の場所に移動 +|`[| `[ 直前に繰作もしくはペーストした文字列の先頭に移動 +|`]| `] 直前に繰作もしくはペーストした文字列の末尾に移動 +|`<| `< (直前の)ビジュアルエリアの先頭に移動 +|`>| `> (直前の)ビジュアルエリアの末尾に移動 +|`.| `. このファイルで最後に変更した場所に移動 +|'| '{a-zA-Z0-9[]'"<>.} + ` と同じだが、その行の先頭の非空白文字まで移動する + 点が異なる。 +|:marks| :marks 現在設定されているマークを一覧表示 +|CTRL-O| N CTRL-O ジャンプリストの N 番目に古い場所に移動 +|CTRL-I| N CTRL-I ジャンプリストの N 番目に新しい場所に移動 +|:ju| :ju[mps] ジャンプリストを一覧表示 +------------------------------------------------------------------------------ +*Q_vm* 雑他な移動コマンド + +|%| % 呼応するカッコ類("(","[","{")や、コメント、"#if"/ + "#else"/"#endif"のペアを検索して移動 +|H| N H 画面上で N 行目の最初の非空白文字に移動 +|M| M 画面上の真ん中の行の最初の非空白文字に移動 +|L| N L 画面上で下から N 行目の最初の非空白文字に移動 + +|go| N go 現バッファの N バイト目に移動 +|:go| :[range]go[to] [off] 現バッファの [off] バイト目に移動 +------------------------------------------------------------------------------ +*Q_ta* Using tags + +|:ta| :ta[g][!] {tag} {tag}で指定したタグにジャンプ +|:ta| :[count]ta[g][!] タグリストの[count]番目に新しいタグにジャンプ +|CTRL-]| CTRL-] 変更がされていない限り、カーソル位置にあるタ + グにジャンプ +|:ts| :ts[elect][!] [tag] タグに合致する一覧を表示し、ジャンプ先を選択 +|:tjump| :tj[ump][!] [tag] 指定のタグ [tag] にジャンプ。もし、合致する + タグが複数ある時は一覧から選択 + +|:tags| :tags タグリストを一覧表示 +|CTRL-T| N CTRL-T タグリストの N 番目に古いタグにジャンプ +|:po| :[count]po[p][!] タグリストの [count] 番目に古いタグにジャンプ +|:tnext| :[count]tn[ext][!] [count] 個分、次のタグにジャンプ +|:tp| :[count]tp[revious][!] [count]個分、前のタグにジャンプ +|:tr| :[count]tr[ewind][!] [count]番目に一致するタグにジャンプ +|:tl| :tl[ast][!] 直前に一致したタグにジャンプ + +|:ptag| :pt[ag] {tag} {tag}タグを見るためのプレビュー画面を開く +|CTRL-W_}| CTRL-W } CTRL-] と同様だがプレビュー画面にジャンプ +|:pts| :pts[elect] ":tselect"と同様だがプレビュー画面にジャンプ +|:ptjump| :ptj[ump] ":tjump"と同様だがプレビュー画面にジャンプ +|:pclose| :pc[lose] タグプレビュー画面を閉じる。 +|CTRL-W_z| CTRL-W z タグプレビュー画面を閉じる。 +------------------------------------------------------------------------------ +*Q_sc* スクロール + +|CTRL-E| N CTRL-E 画面を N 行逆方向スクロール(デフォルトは1) +|CTRL-D| N CTRL-D 画面を N 行逆方向スクロール(デフォルトは画面 + の半分) +|CTRL-F| N CTRL-F 画面を N ページ分先に進める +|CTRL-Y| N CTRL-Y 画面を N 行分スクロール(デフォルトは1) +|CTRL-U| N CTRL-U 画面を N 行分スクロール(デフォルトは画面の + 半分) +|CTRL-B| N CTRL-B 画面を N ページ分後ろに戻す +|z<CR>| z<CR> or zt 現在行を画面の1行目にして、再描画 +|z.| z. or zz 現在行を画面の中央にして、再描画 +|z-| z- or zb 現在行を画面の最下行にして、再描画 + +These only work when 'wrap' is off: +以下は'wrap'がoffになっている時のみ有効です。 +|zh| N zh 画面を N 文字、右へスクロール +|zl| N zl 画面を N 文字、左へスクロール +|zH| N zH 画面桁数の半分だけ、右へスクロール +|zL| N zL 画面桁数の半分だけ、左へスクロール +------------------------------------------------------------------------------ +*Q_in* Inserting text + +|a| N a カーソル位置の後に文字列を(N回)追加 +|A| N A 現在行の末尾に文字列を(N回)追加 +|i| N i カーソル位置の前に文字列を(N回)追加(<Insert>も同様) +|I| N I 現在行の最初の非空白文字の前に文字列を(N回)追加 +|gI| N gI 現在行の先頭に文字列を(N回)追加 +|o| N o 現在行の下に新たな行を追加し、文字列を(N回)追加する。 +|O| N O 現在行に新たな行を挿入し、文字列を(N回)追加する。 +|:startinsert| :star[tinsert][!] start Insert mode, append when [!] used + Insertモードを開始する。[!]を指定するとAppendモードと + なる。 + +ビジュアルモード用: +|v_b_I| I 選択している全行の前に、同じ文字列を挿入する。 +|v_b_A| A 選択している全行の後ろに、同じ文字列を挿入する。 +------------------------------------------------------------------------------ +*Q_ai* 挿入モードの扱い + +|insert-index| 挿入モードのアルファベット順目次 + +挿入モードの終了: +|i_<Esc>| <Esc> 挿入モードを終わって、通常モードへ復帰 +|i_CTRL-C| CTRL-C <Esc>と同様。ただし、短縮形は展開しない +|i_CTRL-O| CTRL-O {command} {command}を実行し、挿入モードへ復帰 + +移動: +|i_<Up>| cursor keys カーソルを上下左右に移動 +|i_<S-Left>| shift-left/right 1単語ごと左右に移動 +|i_<S-Up>| shift-up/down 1画面ごと前後に移動 +|i_<End>| <End> その行の最終桁に移動 +|i_<Home>| <Home> その行の先頭桁に移動 +------------------------------------------------------------------------------ +*Q_ss* 挿入モードでの特殊キー + +|i_CTRL-V| CTRL-V {char}.. insert character literally, or enter decimal +|i_CTRL-V| CTRL-V {char}.. 指定の{char}、もしくは10進数指定のバイト値 + を挿入 +|i_<NL>| <NL> or <CR> or CTRL-M or CTRL-J + 改行して、新しい行を作成 +|i_CTRL-E| CTRL-E カーソル位置の直下の行の内容を1文字挿入 +|i_CTRL-Y| CTRL-Y カーソル位置の真上の行の内容を1文字挿入 + +|i_CTRL-A| CTRL-A 直前に挿入した文字列をもう一度挿入 +|i_CTRL-@| CTRL-@ 直前に挿入した文字列をもう一度挿入し、挿入 + モードから復帰 +|i_CTRL-R| CTRL-R {0-9a-z%#:.-="} 指定のレジスタの内容を挿入 + +|i_CTRL-N| CTRL-N カーソルの前にあるキーワードと合致する単語 + を順方向に検索して挿入 +|i_CTRL-P| CTRL-P カーソルの前にあるキーワードと合致する単語 + を逆方向に検索して挿入 +|i_CTRL-X| CTRL-X ... カーソルの前にある単語をいろんな方法で補完 + する。 + +|i_<BS>| <BS> or CTRL-H カーソルの前の1文字を削除 +|i_<Del>| <Del> カーソル位置の1文字を削除 +|i_CTRL-W| CTRL-W カーソル位置の1単語を削除 +|i_CTRL-U| CTRL-U 現在行で入力した全部の文字を削除 +|i_CTRL-T| CTRL-T 'shiftwidth'での指定分のインデントを現在行 + の行頭に挿入 +|i_CTRL-D| CTRL-D 'shiftwidth'での指定分のインデントを現在行 + の行頭から削除 +|i_0_CTRL-D| 0 CTRL-D 現在行の全インデントを削除 +|i_^_CTRL-D| ^ CTRL-D 現在行の全インデントを削除。但し、次の行の + インデントには影響しない。 +------------------------------------------------------------------------------ +*Q_di* 合字(Digraphs) + +|:dig| :dig[raphs] 現在の合字(ダイグラフ)情報を一覧表示 +|:dig| :dig[raphs] {char1}{char2} {number} ... + 合字情報をリストに追加 + +挿入モード、又はコマンドラインモード: +|i_CTRL-K| CTRL-K {char1} {char2} + 合字の入力 +|i_digraph| {char1} <BS> {char2} + 'digraph'オプションがONの場合、合字を入力 +------------------------------------------------------------------------------ +*Q_si* 特殊な挿入コマンド + +|:r| :r [file] カーソル位置の後ろに [file] の内容を挿入 +|:r!| :r! {command} カーソル位置の後ろに {command} を実行した結果の + 標準出力の内容を挿入 +------------------------------------------------------------------------------ +*Q_de* 文字列の削除 + +|x| N x カーソル位置及びその後ろの N 文字を削除 +|<Del>| N <Del> カーソル位置及びその後ろの N 文字を削除 +|X| N X カーソル位置の前の N 文字を削除 +|d| N d{motion} {motion}で指定された範囲の文字列を削除 +|v_d| {visual}d ハイライト化された文字列を削除 +|dd| N dd N 行削除 +|D| N D (N-1 行後の)行末まで削除 +|J| N J N-1 行を結合して1行に(<EOL>を削除) +|v_J| {visual}J ハイライト化された文字列を結合 +|gJ| N gJ "J"と同じだが、行毎の空白は付けない。 +|v_gJ| {visual}gJ "{visual}J"と同じだが、行毎の空白は付けない。 +|:d| :[range]d [x] [range]で指定した範囲の行を削除 [それをレジスタxに] +------------------------------------------------------------------------------ +*Q_cm* Copying and moving text + +|quote| "{char} レジスタ{char}を指定。これに続いて、削除コマンドや + ヤンクコマンド、ペーストコマンドを指定 +|:reg| :reg 全レジスタの内容を表示 +|:reg| :reg {arg} {arg}で示されたレジスタの内容を表示 +|y| N y{motion} {motion}で指定された範囲の文字列をレジスタにヤンク + (コピー) +|v_y| {visual}y ハイライト化された文字列をレジスタにヤンク +|yy| N yy N 行をレジスタにヤンク +|Y| N Y N 行をレジスタにヤンク +|p| N p カーソル位置の後にレジスタ内容をN回プット(ペースト) +|P| N P カーソル位置の前にレジスタ内容をN回プット(ペースト) +|]p| N ]p pと同じだが、インデントを現在行に合せる +|[p| N [p Pと同じだが、インデントを現在行に合せる +|gp| N gp pと同じだが、挿入した文字列の後にカーソルを移動 +|gP| N gP Pと同じだが、挿入した文字列の後にカーソルを移動 +------------------------------------------------------------------------------ +*Q_ch* 文字列の変更 + +|r| N r{char} N 文字を{char}に置換 +|gr| N gr{char} N 文字をレイアウトに影響を与えずに置換??? +|R| N R 置換モードへ (入力文字列を N 回繰り返す) +|gR| N gR 仮想置換モードへ。置換モードと同じだが、レイアウト + に影響しない。??? +|v_b_r| {visual}r{char} + ビジュアルブロックモード用: 選択範囲の各文字を{char} + で、置換 + + (変更とは = 文字列を削除し、挿入モードに入ること) +|c| N c{motion} {motion}で指定した範囲の文字列を変更 +|v_c| {visual}c ハイライト化された文字列を変更 +|cc| N cc N 行を変更 +|S| N S N 行を変更 +|C| N C (N-1 行後の)行末までを変更 +|s| N s N 文字を変更 +|v_b_c| {visual}c ビジュアルブロックモード用:選ばれている各行の内容を + 入力した文字列に置き換え +|v_b_C| {visual}C ビジュアルブロックモード用:選ばれている各行の行末ま + でを入力した文字列に置き換え + +|~| N ~ N 文字分の英文字の大文字/小文字を変換し、カーソルを + 移動 +|v_~| {visual}~ ハイライト化された範囲の大文字/小文字を変換 +|v_u| {visual}u ハイライト化された範囲を小文字に変換 +|v_U| {visual}U ハイライト化された範囲を大文字に変換 +|g~| g~{motion} {motion}で指定した範囲の大文字/小文字を変換 +|gu| gu{motion} {motion}で指定した範囲を小文字に変換 +|gU| gU{motion} {motion}で指定した範囲を大文字に変換 +|v_g?| {visual}g? ハイライト化した範囲をrot13でエンコードする。 +|g?| g?{motion} {motion}で指定した範囲をrot13でエンコードする。 +smz ※ rot13というのはA->N,B->Oという置き換えのシーザ暗 +smz 号のこと。英語圏では昔から使われている。 + +|CTRL-A| N CTRL-A カーソル位置もしくは後ろにある数字にNを加算する +|CTRL-X| N CTRL-X カーソル位置もしくは後ろにある数字からNを減算する + +|<| N <{motion} move the lines that are moved over with {motion} one +|<| N <{motion} {motion}で指定した範囲を'shiftwidth'分、インデントを + 解除 +|<<| N << N 行分、インデントを解除 +|>| N >{motion} {motion}で指定した範囲を'shiftwidth'分、インデントを + 追加 +|>>| N >> N 行分、インデントを追加 +|gq| N gq{motion} {motion}で指定した範囲を'textwidth'で指定した長さに + フォーマット +|:ce| :[range]ce[nter] [width] + [range]の行範囲をセンタリング +|:le| :[range]le[ft] [indent] + [range]の行範囲を( [indent] 分)左寄せ +|:ri| :[range]ri[ght] [width] + [range]の行範囲を( [width] 桁まで)右寄せ +------------------------------------------------------------------------------ +*Q_co* 複雑な変更処理 + +|!| N !{motion}{command}<CR> + {motion}で指定した範囲を{command}の結果出力に置き換え +|!!| N !!{command}<CR> + N 行を{command}の結果出力に置き換え +|v_!| {visual}!{command}<CR> + ハイライト化された範囲を{command}の結果出力に置き換え +|:range!| :[range]! {command}<CR> + [range] の範囲を{command}の結果出力に置き換え +|=| N ={motion} + {motion}で指定した範囲を'equalprg'の結果出力に置き換え +|==| N == N 行を'equalprg'の結果出力に置き換え +|v_=| {visual}= + ハイライト化の範囲を'equalprg'の結果出力に置き換え +|:s| :[range]s[ubstitute]/{pattern}/{string}/[g][c] + [range]の範囲の{pattern}を{string}に置き換え + [g]を指定すると、見つかった全{pattern}を置き換える。 + [c]を指定すると、各置き換えを確認する +|:s| :[range]s[ubstitute] [g][c] + 直前の":s"を新たな範囲とオプションで繰り返す +|&| & 直前の":s"を現在行について繰り返す。(オプションなし) +|:ret| :[range]ret[ab][!] [tabstop] + 'tabstop'の値を変更し、それに従って空白、TABの類を + 適切な状態にする。 +------------------------------------------------------------------------------ +*Q_vi* ビジュルモード + +|visual-index| ビジュアルモードコマンドの目次 + +|v| v 文字単位のvisualモードを開始 } カーソルを動かして、 +|V| V 行単位のvisualモードを開始 } ハイライト化した範囲 +|CTRL-V| CTRL-V 矩形単位のvisualモードを開始 } に対しコマンドを実行 +|v_o| o カーソル位置とハイライト範囲の先頭を入れ替え +|gv| gv 直前の選択範囲を選んだ状態でビジュアルモードを開始 +|v_v| v 文字単位visualモードを開始、もしくは中断 +|v_V| V 行単位visualモードを開始、もしくは中断 +|v_CTRL-V| CTRL-V 単位visualモードを開始、もしくは中断 +------------------------------------------------------------------------------ +*Q_to* 文字列オブジェクト (visualモードか、オペレータ指定後 + +|v_aw| N aw "a word"を選択(単語の前後の空白も削除) +|v_iw| N iw "inner word"を選択(正味の単語だけを削除) +|v_aW| N aW "a |WORD|"を選択 +|v_iW| N iW "inner |WORD|"を選択 +|v_as| N as "a sentence"を選択 +|v_is| N is "inner sentence"を選択 +|v_ap| N ap "a paragraph"を選択 +|v_ip| N ip "inner paragraph"を選択 +|v_ab| N ab "a block"( "[("~"])"の範囲)を選択 +|v_ib| N ib "inner block" ( "[("~"])"の範囲)を選択 +|v_aB| N aB "a Block" ( "[{"~"]}"の範囲)を選択 +|v_iB| N iB "inner Block" ( "[{"~"]}"の範囲)を選択 +------------------------------------------------------------------------------ +*Q_re* 繰り返しコマンド + +|.| N . 直前のコマンドを繰り返す。(回数はN回となる) +|q| q{a-z} 入力された文字群をレジスタ{a-z}に記録 +|q| q{A-Z} 入力された文字群をレジスタ{a-z}に追加して記録 +|q| q 記録を終了 +|@| N @{a-z} レジスタ{a-z}の内容を N 回実行 +|@@| N @@ 直前の@{a-z} を N 回実行 +|:@| :@{a-z} レジスタ{a-z}の内容をExコマンドとみなして、N回実行 +|:@@| :@@ 直前の:@{a-z} を N 回実行 +|:g| :[range]g[lobal]/{pattern}/[cmd] + [range]の中で、指定の{pattern}に合致する各行に対して + [cmd]コマンド(デフォルトでは":p")を実行する。 +|:g| :[range]g[lobal]!/{pattern}/[cmd] + [range]の中で、指定の{pattern}に合致**しない**各行に + 対して[cmd]コマンド(デフォルトでは":p")を実行する。 +|:so| :so[urce] {file} + {file}からExコマンドを読み出す。 +|:so| :so[urce]! {file} + {file}からvimコマンドを読み出す。 +|:sl| :sl[eep] [sec] + [sec] 秒間の間、何もしない +|gs| N gs N 秒間の間、何もしない +------------------------------------------------------------------------------ +*Q_km* Key mapping + +|:map| :ma[p] {lhs} {rhs} 通常モード/visualモードで{lhs} を{rhs} + に割り付け +|:map!| :ma[p]! {lhs} {rhs} 挿入モード/コマンドラインモードで{lhs} を + {rhs} に割り付け +|:noremap| :no[remap][!] {lhs} {rhs} + ":map"と同じだが、{rhs}の再割り付けしない +|:unmap| :unm[ap] {lhs} 通常モード/visualモード用の{lhs} 定義を + 削除 +|:unmap!| :unm[ap]! {lhs} 挿入モード/コマンドラインモードの{lhs} + 定義を削除 +|:map_l| :ma[p] [lhs] 通常モード/visualモード用の( [lhs]で始まる) + マップを一覧表示 +|:map_l!| :ma[p]! [lhs] 挿入モード/コマンドラインモードの( [lhs] + で始まる) マップを一覧表示 +|:cmap| :cmap/:cunmap/:cnoremap + ":map!"/":unmap!"/":noremap!" と同じだが、 + コマンドラインモードのみ対象となる。 +|:imap| :imap/:iunmap/:inoremap + ":map!"/":unmap!"/":noremap!" と同じだが、 + 挿入モードのみ対象となる。 +|:nmap| :nmap/:nunmap/:nnoremap + ":map!"/":unmap!"/":noremap!" と同じだが、 + 通常モードのみ対象となる。 +|:vmap| :vmap/:vunmap/:vnoremap + ":map!"/":unmap!"/":noremap!" と同じだが、 + visualモードのみ対象となる。 +|:omap| :omap/:ounmap/:onoremap + ":map!"/":unmap!"/":noremap!" と同じだが、 + operator保留モードのみ対象となる。 +|:mapc| :mapc[lear] 通常モード/Visualモード用のマップを削除 +|:mapc| :mapc[lear]! 挿入モード/コマンドモード用のマップを削除 +|:imapc| :imapc[lear] 挿入モード用のマップを削除 +|:vmapc| :vmapc[lear] visualモード用のマップを削除 +|:omapc| :omapc[lear] Operator保留モード用のマップを削除 +|:nmapc| :nmapc[lear] 通常モード用のマップを削除 +|:cmapc| :cmapc[lear] コマンドラインモード用のマップを削除 +|:mkexrc| :mk[exrc][!] [file] 現在のマップ、短縮、設定を [file]に書き出 + す。(デフォルトは".exrc"で[!]指定すると + 上書きとなる) +|:mkvimrc| :mkv[imrc][!] [file] + ":mkexrc"と同じ。但しデフォルトは".vimrc" +|:mksession| :mks[ession][!] [file] + ":mkvimrc"と同じ。ただし、現在のセッション + を後で続けられるように、現在のファイル名、 + ウィンドウ情報などもいっしょに書き出す。 +------------------------------------------------------------------------------ +*Q_ab* 短縮形 + +|:abbreviate| :ab[breviate] {lhs} {rhs} 短縮形 {lhs} を {rhs} で定義 +|:abbreviate| :ab[breviate] {lhs} {lhs}で始まる短縮形を一覧表示 +|:abbreviate| :ab[breviate] 全短縮形を一覧表示 +|:unabbreviate| :una[bbreviate] {lhs} {lhs}の短縮形を削除 +|:noreabbrev| :norea[bbrev] [lhs] [rhs] ":ab"と同じだが、 [rhs]の再定義は + しない +|:iabbrev| :iab/:iunab/:inoreab ":ab"と同じだが、挿入モード用のみ + が対象 +|:cabbrev| :cab/:cunab/:cnoreab ":ab"と同じだが、コマンドライン + モード用のみが対象 +|:abclear| :abc[lear] 全短縮形を削除 +|:cabclear| :cabc[lear] コマンドライン用の全短縮形を削除 +|:iabclear| :iabc[lear] 挿入モード用の全短縮形を削除 +------------------------------------------------------------------------------ +*Q_op* Options + +|:set| :se[t] 変更した全オプションを表示 +|:set| :se[t] all termcap以外の全オプションを表示 +|:set| :se[t] termcap termcapオプションを表示 +|:set| :se[t] {option} 論理値タイプの場合はオプション設定 + (ONになる) + 文字列、数値タイプでは内容を表示 +|:set| :se[t] no{option} 論理値タイプのオプションをOFFに +|:set| :se[t] inv{option} 論理値タイプのオプションを反転。 +|:set| :se[t] {option}={value} 文字列/数値タイプのオプションの値 + を{value}に +|:set| :se[t] {option}+={value} 文字列タイプのオプションに{value} + を追加数値タイプなら加算 +|:set| :se[t] {option}-={value} 文字列タイプのオプションから{value} + を除去 + 数値タイプなら{value}を減算 +|:set| :se[t] {option}? {option}の値を表示 +|:set| :se[t] {option}& {option}の値をデフォルト値に + +|:setlocal| :setl[ocal] ":set"と同じ、ただしオプションに + ローカル値を与える。(???) +|:setglobal| :setg[lobal] ":set"と同じ、ただしローカルオプ + ションにグローバル値を与える。 + +|:fix| :fix[del] 't_kb'の値に従って、't_kD'の値を + セットする。 +|:options| :opt[ions] オプションの閲覧と設定を行うために + 新たなウィンドウを開く。一覧は機能 + 順に並べられ、各行にはオプションの + 説明とヘルプへのリンクをつけてある。 + +各オプションの簡易説明: *option-list* +|'aleph'| |'al'| Aleph文字(ヘブライ語)用のアスキーとする +|'allowrevins'| |'ari'| 挿入モードとコマンドラインモードで、 CTRL-_ を + 使うことを認める。 +|'altkeymap'| |'akm'| デフォルトの第2言語(Farsi/ヘブライ) +|'autoindent'| |'ai'| 直前の行から新しい行のインデントを得る +|'autoread'| |'ar'| vim以外でファイル変更した時に自動再読み込みする +|'autowrite'| |'aw'| 変更があったら、自動的に書き出す +|'autowriteall'| |'awa'| 'autowrite'と同様だが、より多くのコマンドと連動 +|'background'| |'bg'| "dark"/"light":ハイライト色の指定に使用 +|'backspace'| |'bs'| 1行目でのBackSpaceの振る舞い +|'backup'| |'bk'| 上書きした時にバックアップを作成する。 +|'backupcopy'| |'bkc'| ファイルをrenameするのではなく、コピーする。 +|'backupdir'| |'bdir'| バックアップファイル用のディレクトリを指定 +|'backupext'| |'bex'| バックアップファイル用の拡張子 +|'backupskip'| |'bsk'| 指定のパターンに合致するファイルはバックアップ + しない。 +|'balloondelay'| |'bdlay'| バルーンヘルプ(?)が出るまでの遅延時間(ms) +|'ballooneval'| |'beval'| バルーン評価のON/OFF +|'binary'| |'bin'| バイナリモードで、読み/書き/編集する +|'bioskey'| |'biosk'| MS-DOS専用: 文字入力にbiosコールを使う +|'bomb'| prepend a Byte Order Mark to the file (???) +|'breakat'| |'brk'| 改行の理由となる文字(???) +|'browsedir'| |'bsdir'| ブラウズを始めるディレクトリ +|'bufhidden'| |'bh'| ウィンドウに繋がったバッファがなくなった時の動き +|'buflisted'| |'bl'| バッファリストにバッファを表示するかどうか +|'buftype'| |'bt'| 特殊なタイプのバッファ +|'cdpath'| |'cd'| ":cd"コマンドで検索するディレクトリ +|'cedit'| コマンドラインウィンドウを開くためのキー +|'charconvert'| |'ccv'| expression for character encoding conversion +|'cindent'| |'cin'| C言語用のインデントを行う +|'cinkeys'| |'cink'| 'cindent'が有効な場合のインデントするキー +|'cinoptions'| |'cino'| 'cindent'が有効な場合のインデント方法 +|'cinwords'| |'cinw'| words where 'si' and 'cin' add an indent +|'clipboard'| |'cb'| use the clipboard as the unnamed register +|'cmdheight'| |'ch'| コマンドライン用に使う行数 +|'cmdwinheight'| |'cwh'| コマンドラインウィンドウの高さ(???何が違う?) +|'columns'| |'co'| 画面上の桁数 +|'comments'| |'com'| コメント行を開始できるパターン +|'commentstring'| |'cms'| コメント用テンプレート(foldマーカ用) +|'compatible'| |'cp'| 可能な限りVi互換で動く +|'complete'| |'cpt'| 挿入モードでの補完の動きを指定する +|'confirm'| |'cf'| 未保存ファイル、リードオンリファイルの確認方法 +|'conskey'| |'consk'| コンソールからの直接キー検出(MS-DOSのみ) +|'cpoptions'| |'cpo'| vi互換な振る舞いのフラグ集 +|'cscopepathcomp'| |'cspc'| how many components of the path to show +|'cscopeprg'| |'csprg'| cscopeを実行するためのコマンド定義 +|'cscopetag'| |'cst'| cscope for tag commands +|'cscopetagorder'| |'csto'| determines ":cstag" search order +|'cscopeverbose'| |'csverb'| give messages when adding a cscope database +|'debug'| set to "msg" to see all error messages +|'define'| |'def'| pattern to be used to find a macro definition +|'delcombine'| |'deco'| delete combining characters on their own +|'dictionary'| |'dict'| list of file names used for keyword completion +|'diff'| use diff mode for the current window +|'diffexpr'| |'dex'| expression used to obtain a diff file +|'diffopt'| |'dip'| options for using diff mode +|'digraph'| |'dg'| enable the entering of digraphs in Insert mode +|'directory'| |'dir'| list of directory names for the swap file +|'display'| |'dy'| list of flags for how to display text +|'edcompatible'| |'ed'| toggle flags of ":substitute" command +|'eadirection'| |'ead'| in which direction 'equalalways' works +|'encoding'| |'enc'| encoding used internally +|'endofline'| |'eol'| write <EOL> for last line in file +|'equalalways'| |'ea'| windows are automatically made the same size +|'equalprg'| |'ep'| external program to use for "=" command +|'errorbells'| |'eb'| ring the bell for error messages +|'errorfile'| |'ef'| name of the errorfile for the QuickFix mode +|'errorformat'| |'efm'| description of the lines in the error file +|'esckeys'| |'ek'| recognize function keys in Insert mode +|'eventignore'| |'ei'| autocommand events that are ignored +|'expandtab'| |'et'| use spaces when <Tab> is inserted +|'exrc'| |'ex'| read .vimrc and .exrc in the current directory +|'fileencoding'| |'fenc'| file encoding for multi-byte text +|'fileencodings'| |'fencs'| automatically detected character encodings +|'fileformat'| |'ff'| file format used for file I/O +|'fileformats'| |'ffs'| automatically detected values for 'fileformat' +|'filetype'| |'ft'| type of file, used for autocommands +|'fillchars'| |'fcs'| characters to use for displaying special items +|'fkmap'| |'fk'| Farsi keyboard mapping +|'foldclose'| |'fcl'| close a fold when the cursor leaves it +|'foldcolumn'| |'fdc'| width of the column used to indicate folds +|'foldenable'| |'fen'| set to display all folds open +|'foldexpr'| |'fde'| expression used when 'foldmethod' is "expr" +|'foldignore'| |'fdi'| ignore lines when 'foldmethod' is "indent" +|'foldlevel'| |'fdl'| close folds with a level higher than this +|'foldlevelstart'| |'fdls'| 'foldlevel' when startng to edit a file +|'foldmarker'| |'fmr'| markers used when 'foldmethod' is "marker" +|'foldmethod'| |'fdm'| folding type +|'foldminlines'| |'fml'| minimum number of lines for a fold to be closed +|'foldnestmax'| |'fdn'| maximum fold depth +|'foldopen'| |'fdo'| for which commands a fold will be opened +|'foldtext'| |'fdt'| expression used to display for a closed fold +|'formatoptions'| |'fo'| how automatic formatting is to be done +|'formatprg'| |'fp'| name of external program used with "gq" command +|'gdefault'| |'gd'| the ":substitute" flag 'g' is default on +|'grepformat'| |'gfm'| format of 'grepprg' output +|'grepprg'| |'gp'| program to use for ":grep" +|'guicursor'| |'gcr'| GUI: settings for cursor shape and blinking +|'guifont'| |'gfn'| GUI: Name(s) of font(s) to be used +|'guifontset'| |'gfs'| GUI: Names of multi-byte fonts to be used +|'guifontwide'| |'gfw'| list of font names for double-wide characters +|'guiheadroom'| |'ghr'| GUI: pixels room for window decorations +|'guioptions'| |'go'| GUI: Which components and options are used +|'guipty'| GUI: try to use a pseudo-tty for ":!" commands +|'helpfile'| |'hf'| name of this help file +|'helpheight'| |'hh'| minimum height of a new help window +|'hidden'| |'hid'| don't unload buffer when it is |abandon|ed +|'highlight'| |'hl'| sets highlighting mode for various occasions +|'hlsearch'| |'hls'| highlight matches with last search pattern +|'history'| |'hi'| number of command-lines that are remembered +|'hkmap'| |'hk'| Hebrew keyboard mapping +|'hkmapp'| |'hkp'| phonetic Hebrew keyboard mapping +|'icon'| let Vim set the text of the window icon +|'iconstring'| string to use for the Vim icon text +|'ignorecase'| |'ic'| ignore case in search patterns +|'imactivatekey'| |'imak'| key that activates the X input method +|'imcmdline'| |'imc'| use IM when starting to edit a command line +|'iminsert'| |'imi'| use :lmap or IM in Insert mode +|'imsearch'| |'ims'| use :lmap or IM when typing a search pattern +|'include'| |'inc'| pattern to be used to find an include file +|'includeexpr'| |'inex'| expression used to process an include line +|'incsearch'| |'is'| highlight match while typing search pattern +|'indentexpr'| |'inde'| expression used to obtain the indent of a line +|'indentkeys'| |'indk'| keys that trigger indenting with 'indentexpr' +|'infercase'| |'inf'| adjust case of match for keyword completion +|'insertmode'| |'im'| start the edit of a file in Insert mode +|'isfname'| |'isf'| characters included in file names and pathnames +|'isident'| |'isi'| characters included in identifiers +|'iskeyword'| |'isk'| characters included in keywords +|'isprint'| |'isp'| printable characters +|'joinspaces'| |'js'| two spaces after a period with a join command +|'key'| encryption key +|'keymap'| |'kmp'| name of a keyboard mapping +|'keymodel'| |'km'| enable starting/stopping selection with keys +|'keywordprg'| |'kp'| program to use for the "K" command +|'langmap'| |'lmap'| alphabetic characters for other language mode +|'langmenu'| |'lm'| language to be used for the menus +|'laststatus'| |'ls'| tells when last window has status lines +|'lazyredraw'| |'lz'| don't redraw while executing macros +|'linebreak'| |'lbr'| wrap long lines at a blank +|'lines'| number of lines in the display +|'linespace'| |'lsp'| number of pixel lines to use between characters +|'lisp'| automatic indenting for Lisp +|'lispwords'| |'lw'| words that change how lisp indenting works +|'list'| show <Tab> and <EOL> +|'listchars'| |'lcs'| characters for displaying in list mode +|'loadplugins'| |'lpl'| load plugin scripts when starting up +|'magic'| changes special characters in search patterns +|'makeef'| |'mef'| name of the errorfile for ":make" +|'makeprg'| |'mp'| program to use for the ":make" command +|'matchpairs'| |'mps'| pairs of characters that "%" can match +|'matchtime'| |'mat'| tenths of a second to show matching paren +|'maxfuncdepth'| |'mfd'| maximum recursive depth for user functions +|'maxmapdepth'| |'mmd'| maximum recursive depth for mapping +|'maxmem'| |'mm'| maximum memory (in Kbyte) used for one buffer +|'maxmemtot'| |'mmt'| maximum memory (in Kbyte) used for all buffers +|'menuitems'| |'mis'| maximum number of items in a menu +|'modeline'| |'ml'| recognize modelines at start or end of file +|'modelines'| |'mls'| number of lines checked for modelines +|'modifiable'| |'ma'| changes to the text are not possible +|'modified'| |'mod'| buffer has been modified +|'more'| pause listings when the whole screen is filled +|'mouse'| enable the use of mouse clicks +|'mousefocus'| |'mousef'| keyboard focus follows the mouse +|'mousehide'| |'mh'| hide mouse pointer while typing +|'mousemodel'| |'mousem'| changes meaning of mouse buttons +|'mouseshape'| |'mouses'| shape of the mouse pointer in different modes +|'mousetime'| |'mouset'| max time between mouse double-click +|'nrformats'| |'nf'| number formats recognized for CTRL-A command +|'number'| |'nu'| print the line number in front of each line +|'osfiletype'| |'oft'| operating system-specific filetype information +|'paragraphs'| |'para'| nroff macros that separate paragraphs +|'paste'| allow pasting text +|'pastetoggle'| |'pt'| key code that causes 'paste' to toggle +|'patchexpr'| |'pex'| expression used to patch a file +|'patchmode'| |'pm'| 最初のバージョンを保全する +|'path'| |'pa'| list of directories searched with "gf" et.al. +|'previewheight'| |'pvh'| height of the preview window +|'previewwindow'| |'pvw'| identifies the preview window +|'printdevice'| |'pdev'| name of the printer to be used for :hardcopy +|'printfont'| |'pfn'| name of the font to be used for :hardcopy +|'printheader'| |'pheader'| format of the header used for :hardcopy +|'printoptions'| |'popt'| controls the format of :hardcopy output +|'readonly'| |'ro'| disallow writing the buffer +|'remap'| allow mappings to work recursively +|'report'| threshold for reporting nr. of lines changed +|'restorescreen'| |'rs'| Win32: restore screen when exiting +|'revins'| |'ri'| inserting characters will work backwards +|'rightleft'| |'rl'| window is right-to-left oriented +|'ruler'| |'ru'| show cursor line and column in the status line +|'rulerformat'| |'ruf'| custom format for the ruler +|'runtimepath'| |'rtp'| list of directories used for runtime files +|'scroll'| |'scr'| lines to scroll with CTRL-U and CTRL-D +|'scrollbind'| |'scb'| scroll in window as other windows scroll +|'scrolljump'| |'sj'| minimum number of lines to scroll +|'scrolloff'| |'so'| minimum nr. of lines above and below cursor +|'scrollopt'| |'sbo'| how 'scrollbind' should behave +|'sections'| |'sect'| nroff macros that separate sections +|'secure'| secure mode for reading .vimrc in current dir +|'selection'| |'sel'| what type of selection to use +|'selectmode'| |'slm'| when to use Select mode instead of Visual mode +|'sessionoptions'| |'ssop'| options for |:mksession| +|'shell'| |'sh'| name of shell to use for external commands +|'shellcmdflag'| |'shcf'| flag to shell to execute one command +|'shellpipe'| |'sp'| string to put output of ":make" in error file +|'shellquote'| |'shq'| quote character(s) for around shell command +|'shellredir'| |'srr'| string to put output of filter in a temp file +|'shellslash'| |'ssl'| use forward slash for shell file names +|'shelltype'| |'st'| Amiga: influences how to use a shell +|'shellxquote'| |'sxq'| like 'shellquote', but include redirection +|'shiftround'| |'sr'| round indent to multiple of shiftwidth +|'shiftwidth'| |'sw'| number of spaces to use for (auto)indent step +|'shortmess'| |'shm'| list of flags, reduce length of messages +|'shortname'| |'sn'| non-MS-DOS: Filenames assumed to be 8.3 chars +|'showbreak'| |'sbr'| string to use at the start of wrapped lines +|'showcmd'| |'sc'| show (partial) command in status line +|'showfulltag'| |'sft'| show full tag pattern when completing tag +|'showmatch'| |'sm'| briefly jump to matching bracket if insert one +|'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 +|'smartindent'| |'si'| smart autoindenting for C programs +|'smarttab'| |'sta'| use 'shiftwidth' when inserting <Tab> +|'softtabstop'| |'sts'| number of spaces that <Tab> uses while editing +|'splitbelow'| |'sb'| new window from split is below the current one +|'splitright'| |'spr'| new window is put right of the current one +|'startofline'| |'sol'| commands move cursor to first blank in line +|'statusline'| |'stl'| custom format for the status line +|'suffixes'| |'su'| suffixes that are ignored with multiple match +|'suffixesadd'| |'sua'| suffixes added when searching for a file +|'swapfile'| |'swf'| whether to use a swapfile for a buffer +|'swapsync'| |'sws'| how to sync the swap file +|'switchbuf'| |'swb'| sets behavior when switching to another buffer +|'syntax'| |'syn'| syntax to be loaded for current buffer +|'tabstop'| |'ts'| number of spaces that <Tab> in file uses +|'tagbsearch'| |'tbs'| use binary searching in tags files +|'taglength'| |'tl'| number of significant characters for a tag +|'tagrelative'| |'tr'| file names in tag file are relative +|'tags'| |'tag'| list of file names used by the tag command +|'tagstack'| |'tgst'| push tags onto the tag stack +|'term'| name of the terminal +|'termencoding'| |'tenc'| character encoding used by the terminal +|'terse'| shorten some messages +|'textauto'| |'ta'| obsolete, use 'fileformats' +|'textmode'| |'tx'| obsolete, use 'fileformat' +|'textwidth'| |'tw'| maximum width of text that is being inserted +|'thesaurus'| |'tsr'| list of thesaurus files for keyword completion +|'tildeop'| |'top'| tilde command "~" behaves like an operator +|'timeout'| |'to'| time out on mappings and key codes +|'timeoutlen'| |'tm'| time out time in milliseconds +|'title'| let Vim set the title of the window +|'titlelen'| percentage of 'columns' used for window title +|'titleold'| old title, restored when exiting +|'titlestring'| string to use for the Vim window title +|'toolbar'| |'tb'| GUI: which items to show in the toolbar +|'ttimeout'| time out on mappings +|'ttimeoutlen'| |'ttm'| time out time for key codes in milliseconds +|'ttybuiltin'| |'tbi'| use built-in termcap before external termcap +|'ttyfast'| |'tf'| indicates a fast terminal connection +|'ttymouse'| |'ttym'| type of mouse codes generated +|'ttyscroll'| |'tsl'| maximum number of lines for a scroll +|'ttytype'| |'tty'| alias for 'term' +|'undolevels'| |'ul'| maximum number of changes that can be undone +|'updatecount'| |'uc'| after this many characters flush swap file +|'updatetime'| |'ut'| after this many milliseconds flush swap file +|'verbose'| |'vbs'| give informative messages +|'viewdir'| |'vdir'| directory where to store files with :mkview +|'viewoptions'| |'vop'| specifies what to save for :mkview +|'viminfo'| |'vi'| use .viminfo file upon startup and exiting +|'virtualedit'| |'ve'| when to use virtual editing +|'visualbell'| |'vb'| ビープの代わりにvisualベル(画面フラッシュ)を使用 +|'warn'| warn for shell command when buffer was changed +|'weirdinvert'| |'wi'| for terminals that have weird inversion method +|'whichwrap'| |'ww'| allow specified keys to cross line boundaries +|'wildchar'| |'wc'| command-line character for wildcard expansion +|'wildcharm'| |'wcm'| like 'wildchar' but also works when mapped +|'wildignore'| |'wig'| files matching these patterns are not completed +|'wildmenu'| |'wmnu'| use menu for command line completion +|'wildmode'| |'wim'| mode for 'wildchar' command-line expansion +|'winaltkeys'| |'wak'| when the windows system handles ALT keys +|'winheight'| |'wh'| minimum number of lines for the current window +|'winminheight'| |'wmh'| minimum number of lines for any window +|'winminwidth'| |'wmw'| minimal number of columns for any window +|'winwidth'| |'wiw'| minimal number of columns for current window +|'wrap'| long lines wrap and continue on the next line +|'wrapmargin'| |'wm'| chars from the right where wrapping starts +|'wrapscan'| |'ws'| searches wrap around the end of the file +|'write'| ファイルへの保存を許可する +|'writeany'| |'wa'| ファイルへの保存時は"!"がなくても上書きする。 +|'writebackup'| |'wb'| 上書きする時にはバックアップを作る。 +|'writedelay'| |'wd'| delay this many msec for each char (for debug) +------------------------------------------------------------------------------ +*Q_ur* Undo/Redo commands + +|u| N u 最後の N 回分の作業をアンドゥ +|CTRL-R| N CTRL-R 最後の N 回分のアンドゥを取り消す(redo) +|U| U 行全体への変更を取り消す +------------------------------------------------------------------------------ +*Q_et* 外部コマンド + +|:shell| :sh[ell] シェルを起動する +|:!| :!{command} {command}をシェルで起動する +|K| K カーソル下にある単語を'keywordprg' プログラム + で調べる。(デフォルトは"man") +------------------------------------------------------------------------------ +*Q_qf* Quickfix commands + +|:cc| :cc [nr] display error [nr] (default is the same again) +|:cnext| :cn 次のエラーを表示 +|:cprevious| :cp 1つ前のエラーを表示 +|:clist| :cl 全エラーの一覧を表示 +|:cfile| :cf 'errorfile'からエラーを読み込む +|:cquit| :cq 書き込まずにエラーコードを(コンパイラに)渡す + smz ??? さっぱりわからない。 +|:make| :make [args] makeする。エラーを開き最初のコンパイルエラー + にジャンプ +|:grep| :gr[ep] [args] 'grepprg'を実行し、合致する最初の行にジャンプ +------------------------------------------------------------------------------ +*Q_vc* さまざまなコマンド + +|CTRL-L| CTRL-L 画面の再描画 +|CTRL-G| CTRL-G 現在の(パス名+)ファイル名とカーソル位置を + 表示 +|ga| ga カーソル位置のASCII文字コードを10進、16進、 + 8進で表示 +|g_CTRL-G| g CTRL-G カーソル桁数、行数、単語数、文字数を表示 +|CTRL-C| CTRL-C 検索中:検索を中止 +|dos-CTRL-Break| CTRL-Break MS-DOS: 検索中:検索を中止 +|<Del>| <Del> 回数指定中: 最後の文字を削除 +|:version| :ve[rsion] バージョン情報を表示 +|:mode| :mode N MS-DOS: 画面モードを N (数字,C80,C4350,など) + に + +|:normal| :norm[al][!] {commands} + 通常モードコマンドを実行 +|Q| Q "Ex"モードに移行 + +|:redir| :redir >{file} メッセージを{file}にリダイレクト +|:silent| :silent[!] {command} {command} を寡黙に実行 +|:confirm| :confirm {command} 終了時、保存時などに保存していない + 変更やリードオンリーの確認をする +|:browse| :browse {command} ファイルを開く時や保存する時に選択 + ダイアログ画面を使う。 +------------------------------------------------------------------------------ +*Q_ce* コマンドラインの編集 + +|c_<Esc>| <Esc> コマンドラインを破棄する('wildchar'が<Esc> + の場合は2回押す) + +|c_CTRL-V| CTRL-V {char} {char}を文字として挿入する(CTRL文字など) +|c_CTRL-V| CTRL-V {number} 文字コードを10進数入力する(最大3桁まで) +|c_CTRL-K| CTRL-K {char1} {char2} + 合字を入力する(|Q_di|参照) +|c_CTRL-R| CTRL-R {0-9a-z"%#:-=} + レジスタの内容を挿入する + +|c_<Left>| <Left>/<Right> カーソルを左右に移動 +|c_<S-Left>| <S-Left>/<S-Right> カーソルを単語単位で左右に移動 +|c_CTRL-B| CTRL-B/CTRL-E カーソルを行頭、行末に移動 + +|c_<BS>| <BS> カーソルの直前の文字を削除 +|c_<Del>| <Del> カーソル位置の文字を削除 +|c_CTRL-W| CTRL-W カーソルの直前の文字を削除 +|c_CTRL-U| CTRL-U 全文字を削除 + +|c_<Up>| <Up>/<Down> 現在のコマンドで始まるコマンドラインの履歴 + を呼び出す +|c_<S-Up>| <S-Up>/<S-Down> コマンドラインの履歴を呼び出す +|:history| :his[tory] コマンドライン履歴を表示 + +文脈依存の補完機能 + +|c_wildchar| 'wildchar' (デフォルト: <Tab>) + カーソルの直前のパターンに合せた補完を実施 + 合致するものが複数ある場合は、ビープを鳴らし + 最初に合致したものを表示。さらに'wildchar'を + 押すと次に合致したものを表示。 +|c_CTRL-D| CTRL-D 現在のカーソルの直前のパターンに合致する全 + ての名前の一覧を表示 +|c_CTRL-A| CTRL-A 現在のカーソルの直前のパターンに合致する全 + ての名前を挿入 +|c_CTRL-L| CTRL-L 現在のカーソルの直前のパターンに合致するも + ののうち、共通部分を挿入 +smz 次の2つはわからん +|c_CTRL-N| CTRL-N after 'wildchar' with multiple matches: go + to next match +|c_CTRL-P| CTRL-P after 'wildchar' with multiple matches: go + to previous match +------------------------------------------------------------------------------ +*Q_ra* Ex ranges + +|:range| , 2つの行の範囲 +|:range| ; idem, set cursor to the first line number + before interpreting the second one + +|:range| {number} ファイル中の行番号 +|:range| . 現在行 +|:range| $ ファイルの最終行 +|:range| % 1,$と同じ(=ファイル全体) +|:range| * '<,'>と同じ(=visualモードの選択範囲) +|:range| 't マーク t の行 +|:range| /{pattern}[/] {pattern} に合致する行の次の行 +|:range| ?{pattern}[?] {pattern} に合致する行の前の行 + +|:range| +[num] 直前の行指定(デフォルト:1)に[num]を加算した + もの +|:range| -[num] 直前の行指定(デフォルト:1)から[num]を減算し + たもの +------------------------------------------------------------------------------ +*Q_ex* 特殊な Ex 文字 + +|:bar| | コマンドを2つに分割 (":global"と":!"では使用不可) +|:quote| " コメントの開始 + +|:_%| % 現在のファイル名(ファイル名を使うべき場所でのみ可) +|:_#| #[num] 別のファイル名[num] (ファイル名を使うべき場所でのみ可) + + Note: 以下の4つについては、そのまま打ち込みます。特殊キーの表記では + ありません。 +|:<cword>| <cword> カーソル下の単語(ファイル名を使うべき場所でのみ可) +|:<cWORD>| <cWORD> カーソル下の大単語(ファイル名を使うべき場所でのみ可) + ※ 大単語については|WORD|を参照) +|:<cfile>| <cfile> カーソルのあるファイルの名前(ファイル名を使うべき場 + 所でのみ使用可) +|:<afile>| <afile> 自動コマンドのファイルの名前(ファイル名を使うべき + 場所でのみ使用可) +|:<sfile>| <sfile> そのファイルで ":source"を使ったファイルの名前(ファ + イル名を使うべき場所でのみ使用可) + + "%", "#", "<cfile>", "<sfile>" , "<afile>" の後に以下の指定 + が可能 + |::p| :p フルパス + |::h| :h ディレクトリ部(ファイル名を削除) + |::t| :t ファイル名のみ + |::r| :r ルート (ファイル名の拡張子のみ削除) + |::e| :e 拡張子のみ + |::s| :s/{pat}/{repl}/ {pat}を{repl}に置換 +------------------------------------------------------------------------------ +*Q_ed* ファイルの編集 + + !なしの場合: 現バッファに変更が加わっている場合はコマンド失敗 + !ありの場合: 現在のバッファに対する変更は破棄して、コマンド実行 +|:edit_f| :e[dit][!] {file} {file}を編集 +|:edit| :e[dit][!] 現在のバッファ内容を再読み込み +|:enew| :ene[w][!] 新たな名前なしバッファを編集 +|:find| :fin[d][!] {file} {file} を'path' から探し、編集 + +|CTRL-^| N CTRL-^ 別ファイル N を編集(":e #N"と同じ) +|gf| gf or ]f カーソル下にある名前のファイルを編集 +|:pwd| :pwd カレントディレクトリを表示 +|:cd| :cd [path] カレントディレクトリを [path] に変更 +|:cd-| :cd - 直前のカレントディレクトリに戻る +|:file| :f[ile] 現在のファイル名とカーソル位置を表示 +|:file| :f[ile] {name} 現在のファイル名を{name}に変更 +|:files| :files 別ファイル一覧を表示 +------------------------------------------------------------------------------ +*Q_fl* 引数リストの使い方 |argument-list| + +|:args| :ar[gs] 引数一覧を表示。現在のファイルは[ ]で囲む +|:all| :all or :sall 引数一覧にある全ファイルをウィンドウで表示 +|:wn| :wn[ext][!] 現在のファイルを保存し、次のファイルを編集 +|:wn| :wn[ext][!] {file} {file}がなければ、現在のバッファを{file}に + 保存し、次のファイルを編集。"!"を使えば、 + 既存ファイルを上書き保存 +|:wN| :wN[ext][!] [file] 現在のファイルを保存し、1つ前のファイルを + 編集 + + in current window in new window ~ +|:argument| :argu[ment] N :sar[gument] N ファイル N を編集 +|:next| :n[ext] :sn[ext] 次のファイルを編集 +|:next_f| :n[ext] {arglist} :sn[ext] {arglist} 新たな引数リストを作り + 最初のファイルを編集 +|:Next| :N[ext] :sN[ext] 1つ前のファイルを編集 +|:first| :fir[st] :sfir[st] 最初のファイルを編集 +|:last| :la[st] :sla[st] 最後のファイルを編集 +------------------------------------------------------------------------------ +*Q_wq* 保存と終了 + +|:w| :[range]w[rite][!] 現在のファイルに保存 +|:w_f| :[range]w[rite] {file} {file}がなければ、{file}に保存。 +|:w_f| :[range]w[rite]! {file} {file}に保存。ファイルがあれば上書き。 +|:w_a| :[range]w[rite][!] >> 現在のファイルに追記 +|:w_a| :[range]w[rite][!] >> {file} {file}に追記 +|:w_c| :[range]w[rite] !{cmd} [range]の行を標準入力として{cmd}を + 実行。 +|:up| :[range]up[date][!] 変更されていれば、上書き保存 +|:wall| :wall[!] 変更のある全バッファを上書き保存 + +|:q| :q[uit] 変更がなければ、現在のバッファを終了。他に + ヘルプ以外のバッファがなければvimを終了。 +|:q| :q[uit]! 変更を破棄して、現在のバッファを終了。他に + ヘルプ以外のバッファがなければvimを終了。 +|:qa| :qall 変更がない限りvimを終了 +|:qa| :qall! 変更があってもvimを強制終了 +|:cq| :cq 保存せずに終了し、エラーコードを返す。 + +|:wq| :wq[!] 現ファイルを保存して終了 +|:wq| :wq[!] {file} {file}に保存して終了 +|:xit| :x[it][!] [file] ":wq"と同様だが、変更が加わっている場合のみ + 保存 +|ZZ| ZZ ":x"と同じ +|ZQ| ZQ ":q!"と同じ +|:xall| :xall[!] or :wqall[!] + 変更のある全バッファを保存して終了 + +|:stop| :st[op][!] vimをサスペンドし、新たなシェルを起動。'aw' + オプションがONで、[!]も指定していない場合は + バッファを保存 +|CTRL-Z| CTRL-Z ":stop"と同じ。 +------------------------------------------------------------------------------ +*Q_st* VIMの起動 + +smz 省略 +|-vim| vim [options] 空バッファで起動 +|-file| vim [options] {file} .. 最初の{file}を開いて起動 +|--| vim [options] - 標準入力からファイル内容を取り込む +|-tag| vim [options] -t {tag} {tag}にリンクされたファイルを開いて起動 +|-qf| vim [options] -q [fname] QuickFixモードで起動 + 最初のエラーを表示する + + Vim の引数 + +|-gui| -g GUIで起動 (他のオプションも許可) + +|-+| +[num] カーソルを[num]行目にして起動(デフォルト:最終行) +|-+c| +{command} ファイルの読み込み後に{command}を起動 +|-+/| +/{pat} {file} .. カーソルを最初の{pat}に合致するところに移動 +|-v| -v Vi モード, ex を通常モードで起動 +|-e| -e Ex モード, vimをEx(コマンドライン)モードで起動 +|-R| -R リードオンリーモードで起動。-nを含む。 +|-m| -m 変更を認めない('write' オプションをoffで起動) +|-b| -b バイナリモード +|-l| -l lisp モード +|-F| -F Farsi モード ('fkmap' と 'rightleft' をセット) +|-H| -H Hebrew モード ('hkmap' と 'rightleft' をセット) +|-V| -V 冗長モード +|-C| -C 互換モード, 'compatible' をセットして起動 +|-N| -N 非互換モード, 'compatible' をoffにして起動 +|-r| -r swapファイルの一覧を与える +|-r| -r {file} .. 異常終了したファイルのリカバリ +|-n| -n swapファイルを作らない +|-o| -o [num] [num]個のウィンドウを開く(default: one for each file) +smz よくわからない。 +|-f| -f GUI: foreground process, fork()しない。 + Amiga: ウィンドウを開くときにvimを再起動しない + (例:メールなど) +|-s| -s {scriptin} 最初のコマンド群を{scriptin}から読む。 +|-w| -w {scriptout} 入力した文字をファイル{scriptout} に保存(追記) +|-W| -W {scriptout} 入力した文字をファイル{scriptout} に保存(上書き) +|-T| -T {terminal} 端末名{terminal}を指定 +|-d| -d {device} Amiga: open {device} to be used as a console +|-u| -u {vimrc} read inits from {vimrc} instead of other inits +|-U| -U {gvimrc} 同上, GUIでの起動時用 +|-i| -i {viminfo} read info from {viminfo} instead of other files +|---| -- 引数の最後を示す。以降の引数は全部ファイル名 +|--help| --help 引数のヘルプを表示して終了 +|--version| --version バージョン情報を表示して終了 +|--| - 標準入力から読み込む +------------------------------------------------------------------------------ +*Q_ac* 自動コマンド + +|viminfo-file| 起動時にレジスタ、マーク、ヒストリを読み込み、終了時に保存 + +|:rviminfo| :rv[iminfo] [file] viminfoファイル [file] から情報を読む +|:rviminfo| :rv[iminfo]! [file] 同上。既存情報を破棄して読む +|:wviminfo| :wv[iminfo] [file] viminfoファイル [file] に情報を追記 +|:wviminfo| :wv[iminfo]! [file] viminfoファイル [file] に情報を上書き + +|modeline| ファイルを編集する時にautomaticオプションを設定 + +|modeline| vim:{set-arg}: .. ファイルの最初か最後の行にあれば、 + ('ml'オプションを参照) {set-arg}の + 内容を":set"への引数として与える。 + +|autocommand| 特定のイベントで自動的にコマンドを実行 + +|:autocmd| :au 自動コマンドの一覧表示 +|:autocmd| :au {event} {event}用の自動コマンドの一覧表示 +|:autocmd| :au {event} {pat} {event}用の自動コマンドのうち、{pat} + に合致するコマンドの一覧表示 + {pat} +|:autocmd| :au {event} {pat} {cmd} {event}と{pat}用の新たな自動コマンドを + {cmd}として登録 +|:autocmd| :au! 全ての自動コマンドを削除 +|:autocmd| :au! {event} {event}用の自動コマンドを削除 +|:autocmd| :au! * {pat} {pat}に合致する自動コマンドを削除 +|:autocmd| :au! {event} {pat} {event}と{pat}に合致する自動コマンド + を削除 +|:autocmd| :au! {event} {pat} {cmd} {event}と{pat}に合致する自動コマン + ドを削除後、{cmd}として再登録 +------------------------------------------------------------------------------ +*Q_wi* 複数ウィンドウコマンド + +|CTRL-W_s| CTRL-W s or :split ウィンドウを2つに分割 +|:split_f| :split {file} ウィンドウを2つに分割し、片方で + {file}を開く +|:sfind| :sf[ind] {file} ウィンドウを分割し、{file}を'path' + 中で探し、それを編集 +|CTRL-W_]| CTRL-W ] ウィンドウを分割し、カーソル下のタグ + にジャンプ +|CTRL-W_f| CTRL-W f ウィンドウを分割し、カーソル下のファ + イルにジャンプ +|CTRL-W_CTRL-^| CTRL-W CTRL-^ ウィンドウを分割し、別ファイルにジャ + ンプ +|CTRL-W_n| CTRL-W n or :new 新たな空ウィンドウを作成 +|CTRL-W_q| CTRL-W q or :q[uit] 編集を終了しウィンドウを閉じる +|CTRL-W_c| CTRL-W c or :cl[ose] バッファを隠しウィンドウを閉じる +|CTRL-W_o| CTRL-W o or :on[ly] 画面を現在ウィンドウ1つだけにする + +|CTRL-W_j| CTRL-W j カーソルを下のウィンドウに移動 +|CTRL-W_k| CTRL-W k カーソルを上のウィンドウに移動 +|CTRL-W_CTRL-W| CTRL-W CTRL-W カーソルを下のウィンドウに移動(wrap) +|CTRL-W_W| CTRL-W W カーソルを上のウィンドウに移動(wrap) +|CTRL-W_t| CTRL-W t カーソルを一番上のウィンドウに移動 +|CTRL-W_b| CTRL-W b カーソルを一番下のウィンドウに移動 +|CTRL-W_p| CTRL-W p カーソルを直前のアクティブウィンドウ + に移動 + +|CTRL-W_r| CTRL-W r ウィンドウを下側にローテートする。 +|CTRL-W_R| CTRL-W R ウィンドウを上側にローテートする。 +|CTRL-W_x| CTRL-W x 現在のウィンドウを次のウィンドウと + 入れ換え + +|CTRL-W_=| CTRL-W = 全ウィンドウの高さを同一に +|CTRL-W_-| CTRL-W - 現在のウィンドウの高さを減らす +|CTRL-W_+| CTRL-W + 現在のウィンドウの高さを増やす +|CTRL-W__| CTRL-W _ 現在のウィンドウの高さを変更する + (デフォルト:最大) +------------------------------------------------------------------------------ +*Q_bu* バッファ管理コマンド + +|:buffers| :buffers or :files 全バッファとファイル名の一覧 + +|:ball| :ball or :sball 全引数/バッファを編集 +|:unhide| :unhide or :sunhide 読み込み中の全バッファを編集 + +|:badd| :badd {fname} ファイル名{fname}をバッファ一覧に追加 +|:bunload| :bunload[!] [N] [N]番バッファをメモリから開放 +|:bdelete| :bdelete[!] [N] [N]番バッファを開放してバッファ一覧 + から削除 + + in current window in new window ~ +|:buffer| :[N]buffer [N] :[N]sbuffer [N] N 番バッファ/argへ +|:bnext| :[N]bnext [N] :[N]sbnext [N] N番分、次のバッファ/argへ +|:bNext| :[N]bNext [N] :[N]sbNext [N] N番分、次のバッファ/argへ +|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] 同上 +|:bfirst| :bfirst :sbfirst 最初のバッファ/argへ +|:blast| :blast :sblast 最後のバッファ/argへ +|:bmodified| :[N]bmod [N] :[N]sbmod [N] N番分、更新したバッファへ +------------------------------------------------------------------------------ +*Q_sy* シンタックスハイライト + +|:syn-on| :syntax on シンタックスハイライトの使用開始 +|:syn-off| :syntax off シンタックスハイライトの使用停止 + +|:syn-keyword| :syntax keyword {group-name} {keyword} .. + add a syntax keyword item +|:syn-match| :syntax match {group-name} {pattern} ... + add syntax match item +|:syn-region| :syntax region {group-name} {pattern} ... + add syntax region item +|:syn-sync| :syntax sync [ccomment | lines {N} | ...] + tell syntax how to sync +|:syntax| :syntax [list] list current syntax items +|:syn-clear| :syntax clear clear all syntax info + +|:highlight| :highlight clear clear all highlight info +|:highlight| :highlight {group-name} {key}={arg} .. + set highlighting for {group-name} + +|:filetype| :filetype on switch on file type detection, without + syntax highlighting +|:filetype| :filetype plugin indent on + switch on file type detection, with + automatic indenting and settings +------------------------------------------------------------------------------ +*Q_gu* GUI commands + +|:gui| :gui UNIX: GUI版を起動 +|:gui| :gui {fname} .. 同上、さらに{fname} .. を編集 + +|:menu| :menu 全メニューを表示 +|:menu| :menu {mpath} {mpath}で始まる全メニューを表示 +|:menu| :menu {mpath} {rhs} add menu {mpath}, giving {lhs} +|:menu| :menu {pri} {mpath} {rhs} + idem, with priorities {pri} +|:menu| :menu ToolBar.{name} {rhs} + add toolbar item, giving {lhs} +|:tmenu| :tmenu {mpath} {text} add tooltip to menu {mpath} +|:unmenu| :unmenu {mpath} remove menu {mpath} + +------------------------------------------------------------------------------ +*Q_fo* Folding + +|'foldmethod'| set foldmethod=manual manual folding + set foldmethod=indent folding by indent + set foldmethod=expr folding by 'foldexpr' + set foldmethod=syntax folding by syntax regions + set foldmethod=marker folding by 'foldmarkers' + +|zf| {motion}zf operator: Define a fold manually +|:fold| :{range}fold define a fold for {range} lines +|zd| zd delete one fold under the cursor +|zD| zD delete all folds under the cursor + +|zo| zo open one fold under the cursor +|zO| zO open all folds under the cursor +|zc| zc close one fold under the cursor +|zC| zC close all folds under the cursor + +|zm| zm fold more: decrease 'foldlevel' +|zM| zM close all folds: make 'foldlevel' zero +|zr| zr reduce folding: increase 'foldlevel' +|zR| zR open all folds: make 'foldlevel' max. + +|zn| zn fold none: reset 'foldenable' +|zN| zN fold normal set 'foldenable' +|zi| zi invert 'foldenable' + + vim:tw=78:ts=8:ft=help:norl: From 9231721c21b26f6335b3fbbfb44fda18f0f867ff Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 29 Jan 2005 06:31:11 +0000 Subject: [PATCH 011/783] add: translated 10 files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@11 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/mlang.jax | 211 ++++++++++++++++++++++++++++ ja/os_390.jax | 283 +++++++++++++++++++++++++++++++++++++ ja/os_beos.jax | 361 ++++++++++++++++++++++++++++++++++++++++++++++++ ja/os_qnx.jax | 141 +++++++++++++++++++ ja/pi_expl.jax | 205 +++++++++++++++++++++++++++ ja/pi_gzip.jax | 43 ++++++ ja/pi_spec.jax | 113 +++++++++++++++ ja/remote.jax | 188 +++++++++++++++++++++++++ ja/sign.jax | 196 ++++++++++++++++++++++++++ ja/workshop.jax | 105 ++++++++++++++ 10 files changed, 1846 insertions(+) create mode 100644 ja/mlang.jax create mode 100644 ja/os_390.jax create mode 100644 ja/os_beos.jax create mode 100644 ja/os_qnx.jax create mode 100644 ja/pi_expl.jax create mode 100644 ja/pi_gzip.jax create mode 100644 ja/pi_spec.jax create mode 100644 ja/remote.jax create mode 100644 ja/sign.jax create mode 100644 ja/workshop.jax diff --git a/ja/mlang.jax b/ja/mlang.jax new file mode 100644 index 000000000..33897bb18 --- /dev/null +++ b/ja/mlang.jax @@ -0,0 +1,211 @@ +COMMENT: 多言語対応 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*mlang.txt* For Vim version 6.3. Last change: 2004 Feb 24 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +多言語機能 *multilang* *multi-lang* + +このマニュアルはメッセージとメニューを様々な言語で使用する方法について書かれて +いる。マルチバイトテキストの編集については|multibyte|を参照。 + +基本的なことはユーザマニュアルでも説明されている: |user_45.txt|。 + +1. メッセージ |multilang-messages| +2. メニュー |multilang-menus| +3. スクリプト |multilang-scripts| + +多言語のヘルプ機能については|help-translated|をご覧ください。 + +{これらのコマンドはViには存在しない} +{|+multi_lang|機能を無効にしてコンパイルした場合には利用できない} + +============================================================================== +1. メッセージ *multilang-messages* + +Vimはシステム環境からロケール(地域情報)を判定する。ほとんどの場合これは、その +言語が利用可能な状態でさえあるならば、Vimを好みの言語で使うことができるを意味 +している。 + +システムによりサポートされるロケールの一覧を見るには、(UNIXでは)これらのディレ +クトリを見る: + /usr/lib/locale ~ + /usr/share/locale ~ +ロケール名には不幸にして大文字と小文字の違いがある。また"-" と "_"の使われ方に +も用心すること。 + + *:lan* *:lang* *:language* *E197* +:lan[guage] +:lan[guage] mes[sages] +:lan[guage] cty[pe] +:lan[guage] tim[e] + 現在の言語(言い換えればロケール)を表示する。 + 引数"message"を使用するとメッセージに利用されている言 + 語が表示される。専門的には: LC_MESSAGES + 引数"ctype"を使用すると文字エンコードに利用されている + 言語が表示される。専門的には: LC_CTYPE + 引数"time"を使用するとstrftime()が表示に利用する言語が + 表示される。専門的には: LC_TIME + 無引数ならばロケールの全体が表示される(どのように表示 + されるかはシステムに依存する)。 + 現在の言語は|v:lang|, |v:ctype| そして |v:lc_time|の各 + 変数で取得することもできる。 + +:lan[guage] {name} +:lan[guage] mes[sages] {name} +:lan[guage] cty[pe] {name} +:lan[guage] tim[e] {name} + 現在の言語(言い換えればロケール)を{name}に設定する。 + {name}というロケールがシステムに存在していなければなら + ない。あるシステムでは"en"とか"en_US"と言った別称を受 + け付けるが、中には"en_US.ISO_8859-1"のように完全な指定 + しか受け付けないシステムもある。 + 引数"message"を使用するとメッセージに利用する言語を設 + 定する。これにより例として日本語を編集中に英語メッセー + ジを使用するようなことができる。これは$LC_MESSAGESを設 + 定する。 + 引数"ctype"を使用すると文字エンコードに利用する言語を + 設定する。これはVimがリンクしているライブラリに影響を + 与える。'encoding'と異なる値を指定するのは一般的ではな + い。これは$LC_CTYPEを設定する。 + 引数"time"を使用すると時刻と日付のメッセージに利用され + る言語を設定する。strftime()に影響を与える。これは + $LC_TIMEを設定する。 + 無引数ならば両方が設定され、加えて$LANGが設定される。 + これは言語に依存した項目(メッセージや時刻日付の書式)を + 変更することができる。全てのシステムで完全にサポートさ + れるわけではない。 + 設定に失敗すればエラーメッセージが表示される。成功した + 場合には何も表示されない。例: > + :language + Current language: C + :language de_DE.ISO_8859-1 + :language mes + Current messages language: de_DE.ISO_8859-1 + :lang mes en +< + +MS-WINDOWSでのメッセージ翻訳 *win32-gettext* + +インストーラを利用した場合には、既にメッセージの翻訳が動作している。動作しない +のであればlibintl.dllを別途入手する必要がある: > + + http://sourceforge.net/projects/gettext + +これにはxgettext, msgformatその他のツールも含まれている。 + +libintl.dllは(g)vim.exeと同じディレクトリか、環境変数PATHに示されたディレクト +リのどれかに置く必要がある。メッセージファイル(vim.mo)は +"$VIMRUNTIME/lang/xx/LC_MESSAGES"に置かなければならない。"xx"はその言語名の省 +略形(ほとんどの場合2文字)に置き換えて考える。 + +独自の翻訳を書く場合には.poファイルを作成しそれを.moファイルに変換する必要があ +る。そのためにはVimのソースを取得してファイル"src/po/README.txt"を読む必要があ +る。 + +自動選択された言語を変更するには、$LANGに設定する。次の例は日本語メッセージを +選択する方法を示している: > + + :let $LANG = "ja" + +翻訳をしないようにするには"en"を指定する。 + +(このWindows向け文章は村岡太郎によって書かれた) +(訳注: 訳注として追加されたわけでなく原文にこの記述がある) + +============================================================================== +2. メニュー *multilang-menus* + +基本は|45.2|を参照。 + +メニューの翻訳が作られた後に元のメニューが変更された場合には、それらのメニュー +は英語のまま表示されることがある。そのような場合には翻訳のメンテナーに連絡を取 +り更新するように頼んで欲しい。翻訳者の名前とメールアドレスはファイル +"$VIMRUNTIME/lang/menu_<lang>.vim"の中に見つけることができる。 + +メニューに利用するフォント(もしくはフォントセット)を指定するには、|:highlight| +コマンドを使用する。例: > + + :highlight Menu font=k12,r12 + + +ロケールの省略名 + +あいにく、同じ言語に同じエンコードであっても、ロケール名がシステムによって異な +ることがある。期待した通りにメニューが翻訳されない時には、次のコマンドの実行結 +果を調べる: > + + echo v:lang + +次に"$VIMRUNTIME/lang"ディレクトリを調べて同じ言語に使われるメニュー翻訳ファイ +ル探す。"-" と "_"が違うだけでファイルは見つけられなくなる。良くある間違い +"iso8859-1" と "iso_8859-1"にも用心する。幸い、Vimは全ての名前を小文字にするの +で、大文字小文字の区別を心配する必要はない。名前中の空白文字はエスケープするの +ではなくアンダースコア("_")に変換される。 + +使いたい言語用の、それと異なる名前のメニュー翻訳ファイルを見つけた場合は、独自 +のランタイムディレクトリに読み込まれるようファイルを作成する。ファイルの名前は +次のようにする: > + + ~/.vim/lang/menu_<v:lang>.vim + +ファイルが検索されるディレクトリを指定するオプション'runtimepath'を確認する。 +そのファイルに別の名前のメニューファイルを読み込む、次のようなコマンドを記入す +る: > + + runtime lang/menu_<other_lang>.vim + + +メニューを翻訳する + +メニューを独自に翻訳したい場合は、以下で説明するように|:menutrans|コマンドを使 +うことができる。ある1つの言語の翻訳は1つのVimスクリプトにまとめられることが推 +奨される。まだ翻訳が存在しない言語については、メンテナーになりその翻訳を全ての +Vimユーザに提供することを是非とも考えていただきたい。Vimのメンテナーにメールを +送って欲しい。アドレスは<maintainer@vim.org>である。 + + *:menut* *:menutrans* *:menutranslate* +:menut[ranslate] clear + Clear all menu translations. + メニュー翻訳の全てを削除Sル。 + +:menut[ranslate] {english} {mylang} + メニュー名{english}を{mylang}に翻訳する。"&" と + "<Tab>"の特別な文字も全て含まれる必要がある。半角ス + ペースとピリオド('.')は|:menu|コマンドと同様に、バック + スラッシュ(訳注: '\')でエスケープする必要がある。 + +例は$VIMRUNTIME/langディレクトリを参照。 + +翻訳をテストするには一旦全てのメニューを削除する必要がある。次のはVimを再起動 +せずにそれを行なう方法である: > + :source $VIMRUNTIME/delmenu.vim + :source <your-new-menu-file> + :source $VIMRUNTIME/menu.vim + +メニューパスの各部位は個別に翻訳される。"Help"が"Hilfe"に、"Overview" が +"Überblick"に訳される時、結果的に"Help.Overview" は"Hilfe.Überblick"と翻訳され +る。 + +============================================================================== +3. スクリプト *multilang-scripts* + +Vimスクリプトでは現在の言語(ロケールを)取得するのに変数|v:lang|を使うことがで +きる。デフォルトの値は"C"か環境変数$LANGの値になる。 + +以下の例は、この変数を使ったユーザの好みの言語にメッセージを適合させる簡単な例 +を示している, > + + :if v:lang =~ "de_DE" + : echo "Guten Morgen" + :else + : echo "Good morning" + :endif +< + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/os_390.jax b/ja/os_390.jax new file mode 100644 index 000000000..9a4cda35e --- /dev/null +++ b/ja/os_390.jax @@ -0,0 +1,283 @@ +COMMENT: OS特有情報:OS/390 +STATUS: finished 6.1 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*os_390.txt* For Vim version 6.1. Last change: 2001 Sep 08 + + + VIMリファレンスマニュアル by Ralf Schandl + + + *OS390* *os390* +このファイルにはOS/390 Unix上のVimについての事項が書かれている。 + +1. ご意見募集中 |OS390-feedback| +2. OS/390 UnixでVimを構築する |OS390-building| +3. ASCII/EBCDIC依存のスクリプト |OS390-has-ebcdic| +4. XTermの問題 |OS390-xterm| +5. Motifの問題 |OS390-Motif| +6. 既知の問題点 |OS390-weaknesses| +7. 変更点 |OS390-changes| + +OS/390 Unixへの移植はRalf Schandl <schandl@de.ibm.com>によって後で述べる +Redbookのために行なわれた。 + +免責事項: +著者はIBMの関係者だが個人的な興味によるものであり、、IBMはこの移植について何の +責任も持たない。この移植について何か問題があれば著者に連絡を取って欲しい。 + +OS/390 Unixでもより多くのオープンソースソフトウェアを使用したいならば、以下の +Redbook (www.redbook.ibm.com) を参照すること: +(訳注:24-Jun-2002現在、このURLは存在しないようだ) + + Mike MacIsaak et al + "Open Source Software on OS/390 Unix" + SG24-5944-00 + +著者の知る限りではこのRedbookの新版は2001年にリリース予定である。 + +以下の方々からパッチやバグレポートを戴いた: + + David Moore + Anthony Giorgio + and others + +============================================================================== +1. ご意見募集中 *OS390-feedback* + +OS/390 UnixでVimを動かすために多くのコードを変更した。多くのUNIXプログラム同 +様、Vimは非常にASCIIに依存している。見逃したASCII依存性があったり、新機能やバ +グ修正で新たなものが付け加えらているかもしれない。多くのプログラマは +ASCII/EBCDICで起こり得る問題に、単に注意を払わない。もしもそれに関連する問題を +みつけたら、上に示した著者のemailアドレスへ気兼ねなく知らせて欲しい。 + +バグをレポートしてもらえれば、恐らく修正することができるだろう。誰か別の人がレ +ポートするとは期待しないで欲しい!。|bug-reports|のセクションも参照のこと。 + + +============================================================================== +2. OS/390 UnixでVimを構築する *OS390-building* + +まずデバッグコードについて一言: ~ + +普通にconfigureを実行すると、実行ファイルへデバッグ用の情報を付加するためにオ +プション'-g'が追加される。この情報は通常インストール時にstripコマンドによって +実行ファイルから取り除かれる。OS/390 Unixでは、実行ファイルからこの情報を取り +除くことはできない。stripコマンドはOS/390 Unixに存在するし、インストール時には +呼び出されはするが、実際には何もしない。 + +デバッグコード抜きでVimを構築したいならば、configureを実行する前に環境変数 +CFLAGSを空に設定する。 +> + export CFLAGS="" +< + + +X11無しで構築する: ~ + +NOTE: 著者はVimを構築するのにいつもccを使っている。c89は試したことが無い。 + +X11をサポートしないVimを構築するならば、コンパイルとビルドは一本道ではあるが、 +configureとmakeを実行する前に_CC_CCMODE=1を設定するのを忘れないこと。 +> + $ export _CC_CCMODE=1 + $./configure --with-features=big --without-x --enable-gui=no + $ make + $ make test +< + NOTE: gzipをインストールしていない場合は11番のテストが失敗する。42番は + OS/390 UnixのVimがマルチバイト文字に対応していないために失敗する。 + (David Moore曰く:『まだ』動かない!! :-) 何ができるかはわかるだろう) + 07-Sep-2001の時点では45番(折畳)が失敗する。 +> + + $ make install +< + + +X11付きで構築する: ~ + +X11をサポートするVimを構築する方法は2つある。X11と静的に結合する方法とX11のDLL +に動的に結合する方法とがある。静的結合は巨大な(約13MB)の実行ファイルを生成し、 +動的結合はそれよりも小さい(約4.5MB)の実行ファイルを生成する。 + +Motifを使う場合の手順を示す: + + a) 静的結合: > + $ configure --with-features=big --enable-gui=motif + $ make +< + これでX11ライブラリと静的に結合される。 + + b) 動的結合: + Vimを静的結合で述べた方法でメイクしする。それからauto/link.sedに以下を追 + 加する: > + s%-lXm *%/usr/lib/Xm.x %g + s%-lX11 *%/usr/lib/X11.x %g + s%-lSM *%/usr/lib/SM.x %g + s%-lICE *%/usr/lib/ICE.x %g +< + それから以下を実行する: > + $ rm vim + $ make +< + これでVimはX11のDLLと動的に結合される。 + +ファイルlink.sedがどのように働くかはMakefileとlink.shを参照。 + + +============================================================================== +3. 依存のスクリプト *OS390-has-ebcdic* + +Vimスクリプト用に"ebcdic"機能が追加された。ASCIIに依存したスクリプトは、以下の +ようにすることで修正可能である: > +> + if has("ebcdic") + let space = 64 + else + let space = 32 + endif +< + +============================================================================== +4. XTermの問題 *OS390-xterm* + +OS390 UnixのXTermには1つ問題がある。termlibデータベース内のカーソルを左に動か +す端末コードが間違っている。もしかしたら間違っていないのかもしれないが、Vimの +構文強調やコマンドラインでカーソルの移動が正しく動作しない。 + +入力中に強調が乱れそれでも<C-L>で修正できる場合や、コマンドラインでカーソルを +左に動かせない時には、次の設定: > + :set t_le=^H +< +をファイル.vimrcに試しに追加する。 NOTE: '^H'は1つの制御文字で、入力するには +<C-V><C-H>をタイプする。 + +============================================================================== +5. Motifの問題 *OS390-Motif* + +メニュー用に記憶されている文字の、MotifライブラリによるEBCDICからASCIIへの変換 +は、忘れられているように見える。手動で変換するように試してみたが、メニューを開 +くところ(ファイルメニューを開く<Alt-F>)までしか働かず、メニュー項目を選択する +こと(ファイルブラウザを開く<Alt-F>O)はできない。まだ解決法が見つかっていない。 + + +============================================================================== +6. 既知の問題点 *OS390-weaknesses* + +- タグファイルには二分検索を使っていない + /bin/sortはデフォルトでASCIIの値を使って並べ替えを行なう。このプログラムは + tagsを並べ替えるのにctagにより通常使われている。いつかはそれを正しく扱える + ctagsがリリースされるかもしれないが、いつになるかはわからない。もしかしたら + 永遠にリリースされないかもしれないし… + +- マルチバイト文字(utf-8)サポートは動作しない。コンパイル時に無効にしている。 + (|multibyte|) + + +テストされていない機能: + - Perl インターフェイス (|perl|) + - ハングル文字入力 (|hangul|) + - Cscope インターフェイス (|cscope|) + - 暗号化サポート (|encryption|) + - Langmap (|'langmap'|) + - Python インターフェース (|Python|) + - "右左"書きモード (|'rightleft'|) + - SNiFF+ インターフェイス (|sniff|) + - TCL インターフェイス (|tcl|) + .... + +もしもこれらを試してみて動いたならば著者に是非知らせてほしい!! + +============================================================================== +7. 変更点 *OS390-changes* + +これはEBCDIC/OS390のために成された全ての変更を含んでいるわけではない。単に著者 +の参照用メモである。 +(訳注: なので以下は翻訳しない) + +6.0au: + Changed configure.in + Changed documentation. + Anthony Giorgio fixed the errorbell. + + David Moore found some problems, which were fixed by Bram and/or David for + 6.0au. + +6.0q (alpha): + Minor changes for nrformats=alpha (see |'nrformats'|). + Problem with hardcoded keycode for the english pound sign. Added a define in + ascii.h + Disabled multibyte for EBCDIC in feature.h + +6.0f (alpha): + First compile of Vim 6 on OS/390 Unix. Some minor changes were needed. + + Finally found the reason why make from the toplevel didn't work (I must have + been blind before!). The Makefile contained a list of targets in one target + line. On all other Unixes the macro $@ evaluates to the first target in this + list, only on OS/390 Unix it evaluates to the last one :-(. + +5.6-390d: + Cleaned up some hacks. + +5.6-390c: + + I greped thru the source and examined every spot with a character + involved in a operation (+-). I hope I now found all EBCDIC/ASCII + stuff, but .... + + Fixed: + - fixed warning message in do_fixdel() + - fixed translation from Ctrl-Char to symbolic name (like ^h to CTRL-H) + for :help + - fixed yank/delete/... into register + - fixed :register command + - fixed viminfo register storing + - fixed quick-access table in findoptions() + - fixed 'g^H' select mode + - fixed tgetstr() 'get terminal capability string', ESC and + Ctrl chars where wrong. (Not used on OS 390 Unix) + + + ctags: + - added trigraphs support (used in prolog of system header files) + (get.c) + - fixed sorting order with LC_COLLATE=S390 to force EBCDIC sorting. + (sort.c) + + +5.6-390b: + Changed: + - configure.in: + - added test for OS/390 Unix + - added special compiler and linker options if building with X11 + - configure: + - after created via autoconf handedited it to make the test for + ICEConnectionNumber work. This is a autoconf problem. OS/390 Unix + needs -lX11 for this. + - Makefile + - Don't include the lib directories ('-L...') into the variable + ALL_LIBS. Use own variable ALL_LIB_DIRS instead. A fully POSIX + compliant compiler must not accept objects/libraries and options + mixed. Now we can call the linker like this: + + $(CC) $(LDFLAGS) $(ALL_LIB_DIRS) $(OBJ) $(ALL_LIBS) + + Fixed: + - Double quote couldn't be entered + Missed ASCII dependencies while setting up terminal + In ASCII 127 is the delete char, in EBCDIC codepage 1047 the value 127 + is the double quote. + - fixed ':fixdel' + +5.6-390a: + first alpha release for OS/390 Unix. + + Addition: + - For the internal script language I added the feature "ebcdic". + This can be queried with the has()-function of the internal + script language. + +------------------------------------------------------------------------------ + vim:tw=78:fo=tcq2:ts=8:ft=help:norl: diff --git a/ja/os_beos.jax b/ja/os_beos.jax new file mode 100644 index 000000000..f2b62732f --- /dev/null +++ b/ja/os_beos.jax @@ -0,0 +1,361 @@ +COMMENT: OS特有情報:BeOS +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*os_beos.txt* For Vim version 6.3. Last change: 2004 May 01 + + + VIMリファレンスマニュアル by Bram Moolenaar + + + *BeOS* *BeBox* +これはVim 5.1のBeOS Preview Release 2 (PR2として知られている)以降への移植であ +る。 +(訳注:どうやらこのファイルの内容は長いことメンテナンスされていないらしい。BeOS +自体が廃れてしまったOSであるから致し方ないところか) + +このファイルにはBeBox/BeOS向けのVimについての詳細が含まれている。このファイル +で議論されていないことについては、VimはUNIX|os_unix.txt|版とほとんど同じように +動作する。 + + 1. 概要 |beos-general| + 2. Vimのコンパイル |beos-compiling| + 3. Terminalでのタイムアウト |beos-timeout| + 4. Unicode vs. Latin1 |beos-unicode| + 5. BeOSのGUI |beos-gui| + 6. $VIMディレクトリ |beos-vimdir| + 7. ドラッグ&ドロップ |beos-dragndrop| + 8. Single Launch vs. Multiple + Launch |beos-launch| + 9. フォント |beos-fonts| +10. メタキー |beos-meta| +11. マウスキーマッピング |beos-mouse| +12. 色の名前 |beos-colors| +13. Perl機能をコンパイル |beos-perl| + + +============================================================================== +1. 概要 *beos-general* + +デフォルトの構文強調は大抵は強調する単位ごとに異なる前景色になる。これは +Terminalウィンドウの背景色を暗く、文字色を明るく設定した時に一番見栄えがする。 +中間くらいの灰色((R,G,B)=(168,168,168)くらいのもの)の背景と黒い文字でも素晴ら +しく見栄えがする。デフォルトの明るい背景に暗い文字を使っているならば、前景色と +背景色の設定を単純に反転すればより良く見えるようになるだろう。これを行なうに +は、次の設定をファイル.vimrcに追加する(例中の<Esc>はエスケープキャラクタで置き +換える必要がある): > + + :if &term == "beos-ansi" + : set t_AB=<Esc>[3%dm + : set t_AF=<Esc>[4%dm + :endif + +============================================================================== +2. Vimのコンパイル *beos-compiling* + +Advanced Access Preview Release (AAPR) 以降で、Vimは標準のconfigureスクリプトで +構成できるようになった。コンパイラを取得し、正しいフラグを設定するために次のコマンドをシェルで実行する(カット&ペーストすることができる)。 + +CC=$BE_C_COMPILER CFLAGS="$BE_DEFAULT_C_FLAGS -O7" \ + ./configure --prefix=/boot/home/config + +$BE_C_COMPILERは通常"mwcc"で、$BE_DEFAULT_C_FLAGSは"-I- -I."になる。 + +configureを実行する時に、GUIサポートを有効化したいならば、config.mkを編集して +GUI_xxxが$(NONE_xxx)ではなく$(BEOSGUI_xxx)を参照するように変更する必要がある。 +代わりにMakefileをこのように変更することもできる; そのほうが普遍的な影響を持 +つ。"NONE_"を検索すると良い。 + +コンパイルした後でバイナリにリソースを追加する必要がある。次の行をスクリプト +link.shの終わり(exit $exit_value"の手前)近くに付け加え、これを自動的に行なうよ +うにする。 > + + rmattr BEOS:TYPE vim + copyres os_beos.rsrc vim + mimeset vim + +"strip"のダミーファイルも作る: > + + #!/bin/sh + mimeset $1 + exit 0 + +これは"make install"でVimをインストールする時に必要になる。 + +Vimをコンパイルするために"make"とタイプし、インストールのために"make intall"と +する。 + +Vimを手動でインストールするならば、Vimを$HOME/config/binにコピーし、一連の +symlink({g,r,rg}{vim,ex,view})を作成しなければならない。その上Vimの構成ファイ +ル: vims-5.0s/{*.vim,doc,syntax}を$HOME/config/share/vimにコピーしなければなら +ない。完全にするためにはnroffのmanページも$HOME/config/man/man1にコピーする必 +要がある。それとctags/ctagsとxxd/xxdも忘れないように!。 + +明白だがVimを実際にリンクするには制限されていないリンカが必要だ。BeOS用の +CodeWarriorコンパイラを購入するならばhttp://www.metrowerks.com/を参照。現在の +ところをそれをこなせるほかのリンカは存在しない。 + +ただしそのリンカでは、PerlやPythonが正しくインストールされていたとしても、それ +らのインターフェースをVimに含めることはできない。 |beos-perl| + +============================================================================== +3. Terminalでのタイムアウト *beos-timeout* + +(訳注:恐らくTerminalとはアプリケーション名であるから端末と呼ぶのは不適切) +幾つかのPOSIX/UNIXの機能が未だ実装されていない[1]からBeOSは、Terminalにおいて +タイムアウトを伴う読み込みを行なうことを、直接にサポートはしていない。そのため +に: > + :set notimeout +をしない限り、1文字以上のキーをマップすることができないということに遭遇するだ +ろう。 ('timeout'参照) + +この問題を回避するために、1文字先を読み込む特別なスレッドを使用して、必要なタ +イムアウト付き入力を用意するワークアラウンドを追加した。その副作用として、 +Terminalウィンドウのサイズが変わった時(訳注:最小化など通常はキーボードフォーカ +スが失われる場合)でもVimはキー入力を認識するようになった。 + +Terminalではファンクションキーは非常に独特のキーシーケンスを生成するのでサポー +トしていない。 + +これらの問題はGUI版には存在しない。 + +[1]: ファイルディスクリプタに使えるselect()が無い; termiosのVMINとVTIMEの設定 +も正しく動作していないようだ。この問題はDR7から存在しPR2に至るまで修正されてい +ない。 + +============================================================================== + *beos-unicode* +4. Unicode vs. Latin1 *beos-utf8* + +BeOSは文字列にUnicodeとUTF-8を(16ビット文字を8ビット文字にエンコードして)使っ +ている。VimはISO-Latin1かその他の8ビットエンコーディングを前提としている。その +ため非ASCII文字に対して望む結果は得られない。それを確認するにはコマンド +:digraphs を試すことができる。ISO-Latin1の文字コード128-255の文字が乱れて表示 +されてしまうならば、 :set isprint=@ を使うと(ほんの少し)改善されるかもしれな +い。これにはGUIの方が良く、また使用しているフォントによって改善具合は異なる(以 +下も参照)。 + +ファイルをUTF-8とISO-Latin1の間でコンバートするのにはコマンド/boot/bin/xtouを +使う。xtou -f iso1 filename でUTF-8へ、逆に xtou -t iso1 filename でISO-Latin1 +へコンバートできる。 + +============================================================================== +5. BeOSのGUI *beos-gui* + +gvimかvim -gで起動した時には通常VimはGUIで起動する。BeOS版はTerminalではなく +Trackerから起動されたのならば、とにかくGUIを使うことにしている。しかしながら今 +ある検出機構は未熟なので、"vim - < /dev/null" や "vim filename&"といったコマン +ドを使用すると騙されてしまう。BSDスタイルのジョブ制御がないから、後者はその様 +に動作するだけだが仕様と呼ぶこともできるだろう。 + +まだ動作しない項目: + +- GUIでの外部コマンド実行は100%動作するわけではない(再びselect()への対応が足り + ないから)。コマンドの出力を取るか、割込めるようにするかの選択肢がある。実装 + は前者を選択している。またコマンドは不可解に落ちることさえある。どうやらBeの + fork()後のputenv()関数から呼ばれるmalloc_internal()に問題があるらしい。(デー + タアクセス例外が起こる: ec01b0ec:90e80000 *stw r7, 0x0000 (r8)) (:!lsは普通 + に動作するが、:r !lsは動作しない)。これは既に不具合 #971215-083826 として報 + 告済み。 +- ウィンドウタイトル +- Terminalのvimから:guiでGUIを起動した場合、それは常に:gui -fのように動作す + る。知り得る限りで、今のところこれを解決する方法はない。 +- 後に修正したい表示上の小さな問題があちこちにある。それらの多くはウィンドウの + 一部が覆い隠されていた時に起こる。それらの幾らかはTerminalでも見る事ができる + から、BeOSの不具合と考えられる。 +- ウィンドウの外でマウスボタンを離した時にはそれをイベントが生成されない。これ + はBeOSの不具合である。マウスでテキストを選択している時に、ウィンドウの外へ + カーソルを持って行きそこで離すことで再現できる。他にはスクロールバーをドラッ + グしている時に同じ操作をする方法もある。Vimはユーザがまだスクロールバーを + 使っていると考えているから、それをVim自身で変えるような事はしない。ウィンド + ウが有効化か無効化されたときにはそれを戻すワークアラウンドが施してある(だか + らフォーカスをマウスの下にあるウィンドウに自動的に写す仕組み(/boot/bin/ffm) + と一緒に使用すると都合が良い。 + +- カーソルが点滅しない(低優先度; 筆者はカーソルが点滅するのは好きではない) + +============================================================================== +6. $VIMディレクトリ *beos-vimdir* + +$VIMにはVim支援ファイルの格納場所が記憶されている。$VIMのデフォルトはコンパイ +ル時に設定され次のコマンドで確認することができる: > + + :version + +通常の値は/boot/home/config/share/vimである。これが気に入らなければ環境変数VIM +を設定することでこれを上書するか、.vimrcで'helpfile'を設定する: > + + :if version >= 500 + : set helpfile=~/vim/vim54/doc/help.txt + : syntax on + :endif + +============================================================================== +7. ドラッグ&ドロップ *beos-dragndrop* + +Vimのアイコン、ウィンドウどちらにでもファイルやディレクトリをドロップすること +ができる。アイコンにドロップした際には、アプリケーションFile Typeを使ってVimに +"Single Launch"を割り当てなくとも新しいVimが起動する。ウィンドウの場合はその +ファイルの編集が開始される。フォルダをドロップするとVimの現在の作業ディレクト +リがそのフォルダへ変更される。|:cd|や|:pwd|を参照。<Shift>を押しながらファイル +をドロップしたならば、ドロップされた最初のファイルのあるディレクトリに変更す +る。ドロップによりVimを起動する時には<Shift>は必要ない: Vimは自動的に移動する +から。 + +ファイルがドロップされると現在の引数リストが設定される。|argument-list| + +============================================================================== +8. Single Launch vs. Multiple Launch *beos-launch* + +Vimのアプリケーションフラグ(FileTypesの設定に見られる)はMultiple Launchに設定 +される。望むならSingle Launchに設定することもできる。それにより既に起動してい +るVimでファイルを開くのではなく2つ目のVimを起動するようになる。これはTrackerか +ら起動した場合にのみ適用され、コマンドラインにも適用される。その後者の場合、 +ファイル(やオプション)を設定しない起動はサポートされない + +NB: GUI版だけがBApplicationを持つ(だからアプリケーションフラグがある)。この非 +GUI版にはこのセクションは無いので、コンパイル時に設定する必要がある。 + +============================================================================== +9. フォント *beos-fonts* + +フォントは次のように設定する: > + + :set guifont=Courier10_BT/Roman/10 + +指定するフォント名はフォントファミリ、スタイル、大きさの3つの部分から構成され +る。ファミリ名とスタイル名の中のスペースはアンダースコア('_')で置き換えて使用 +する。 + +(Courierのような)等幅フォントを指定すると一番良い結果が得られる。Vimは全ての +フォントをB_FIXED_SPACINGモードで使用するよう試みるが、どうやらプロポーショナ +ルフォントについては(BeBookに書かれているにも関わらず)動作しない。 + +VimはISO Latin 1を意味するB_ISO8859_1エンコードを使用するようにも試みる。これ +も全てのフォントについては動作しない。Courierには動作するが、なんとも不思議だ +がProFontISOLatin1/Regularには動作しない。次のコマンドでこれを確かめることがで +きる: > + + :digraphs + +このコマンドはISO Latin 1エンコーディングで表現される文字の集合を表示する。例 +えばそれらの中に四角い文字があった場合や、最後の文字が点の付いたyでなかった場 +合には、そのフォントとエンコーディングの組み合わせは使えないことを意味する。 + +指定したフォントが存在しない場合、システムの固定幅フォントが利用される。 + +標準的な固定幅のシステムフォントは以下の通り: + + ProFontISOLatin1/Regular + Courier10_BT/Roman + Courier10_BT/Italic + Courier10_BT/Bold + Courier10_BT/Bold_Italic + +標準的なプロポーショナルシステムフォントは以下の通り: + + Swis721_BT/Roman + Swis721_BT/Italic + Swis721_BT/Bold + Swis721_BT/Bold_Italic + Dutch801_Rm_BT/Roman + Dutch801_Rm_BT/Italic + Dutch801_Rm_BT/Bold + Dutch801_Rm_BT/Bold_Italic + Baskerville/Roman + Baskerville/Italic + Baskerville/Bold + Baskerville/Bold_Italic + SymbolProp_BT/Regular + +幾つか試してみると面白いだろう。 + +============================================================================== +10. メタキー *beos-meta* + +META修飾キーは左右のOPTIONSによって代用される。これはALT(別名COMMAND)キーがア +プリケーションからは使えないための措置である。 + +============================================================================== +11. マウスキーマッピング *beos-mouse* + +Vimは各マウスボタンをLeftMouse, MiddleMouseそしてRightMouseと呼んでいる。 +デフォルトのマウス設定で使用しているならば、これらの名前はそのボタンの位置を正 +確に反映している。Vimは次のマッピングを行なっている: + + Button 1 -> LeftMouse, + Button 2 -> RightMouse, + Button 3 -> MiddleMouse. + +使っているマウスのボタンが3つより少ない場合には、クリックを修飾操作と同時に行 +なうことでそのボタンを利用できる。例としてはファイル +vim-5.x/macros/swapmous.vimを参照すること。 |gui-mouse-mapping| + +============================================================================== +12. 色の名前 *beos-colors* + +Vimには多くの色の名前が組み込まれている。さらに$VIMRUNTIME/rgb.txtが存在してい +れば、そこから追加の名前が読み込まれる。このファイルは基本的にX11の色データベ +ースである。このファイルの中にある名前は実行速度を確保するためにキャッシュされ +る。 + +============================================================================== +13. Perl機能をコンパイル *beos-perl* + +Perlをサポートするようコンパイルするには少しトリックが必要である。Metrowerksの +コンパイラにはインクルード文のファイルを探す場所について幾つかおかしな趣向があ +る。Perlのインクルードファイルには幾つかVimのヘッダファイルと同じ名前のものが +あり、間違ったものがインクルードされてしまう。これを修正するには、次のPerlスク +リプトをディレクトリvim-5.0/srcで実行する: > + + preproc.pl > perl.h + + #!/bin/env perl + # Simple #include expander, just good enough for the Perl header files. + + use strict; + use IO::File; + use Config; + + sub doinclude + { + my $filename = $_[0]; + my $fh = new IO::File($filename, "r"); + if (defined $fh) { + print "/* Start of $filename */\n"; + + while (<$fh>) { + if (/^#include "(.*)"/) { + doinclude($1); + print "/* Back in $filename */\n"; + } else { + print $_; + } + } + print "/* End of $filename */\n"; + + undef $fh; + } else { + print "/* Cannot open $filename */\n"; + print "#include \"$filename\"\n"; + } + } + + chdir $Config{installarchlib}."/CORE"; + doinclude "perl.h"; + +これはヘッダーファイル"perl.h"を、その他のPerl用ファイルを使って展開する。 + +これで--enable-perlinterpオプションをつけてconfigureとmakeをすることができる。 +これはVimのサイズを約616KB増やしてしまうことに注意!。Perlを追加しなければ、デ +フォルトの機能とGUIを備えたPerlは約575KBで、Perlを追加したものは約1191KBであ +る。 + +-Olaf Seibert + +[Note: これらのアドレスはもう機能していない] +<rhialto@polder.ubc.kun.nl> +http://polder.ubc.kun.nl/~rhialto/be + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_qnx.jax b/ja/os_qnx.jax new file mode 100644 index 000000000..7acdd6c60 --- /dev/null +++ b/ja/os_qnx.jax @@ -0,0 +1,141 @@ +COMMENT: OS特有情報:QNX +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*os_qnx.txt* For Vim version 6.3. Last change: 2004 Apr 23 + + + VIMリファレンスマニュアル by Julian Kinraid + + + *QNX* *qnx* + +1. 概要 |qnx-general| +2. Vimをコンパイルする |qnx-compiling| +3. 端末サポート |qnx-terminal| +4. Photon GUI |photon-gui| +5. Photon フォント |photon-fonts| +6. バグと今後の予定 + +============================================================================== + +1. 概要 *qnx-general* + +ONX上のVimはほとんどUNIXと同じように動作する。 |os_unix.txt| + +============================================================================== +2. Vimをコンパイルする *qnx-compiling* + +Vimは標準的なconfigure/makeのやり方でコンパイルすることができる。X11を使ってコ +ンパイルしたいならば、configureにオプション--with-xを渡す。そうではなく. +/configureに引数を渡さない場合や、--enable-gui=photonを渡した場合には、Photon +GUIをサポートする。その他の有/無効を指定できる機能については./configure --help +を実行することで知ることができる。 + +============================================================================== +3. 端末サポート *qnx-terminal* + +Vimはコンパイル時にオプションが指定されれば、ptermでのマウスとクリップをサポー +トしている。通常そのオプションは指定される。 + +マウスのサポートに関わるオプションには|'mouse'|と|'ttymouse'|がある。マウスを +使用時には、単純に左右のボタンのクリックとダブルクリックのみがサポートされる。 +マウス使用中に<Shift>, <Ctrl>, <Alt>を押下状態にすると、ptermはマウスを自分で +解釈してしまう。その結果、範囲選択が成されるが、これはVimが行なうのそれとは本 +質的に異なったものである。 + +マウス使用時には<Alt-RightMouse>でptermのメニューを開くことができる。vim側でマ +ウスを無効にするには、オプション|'mouse'|を空に設定する: > + :set mouse= + +============================================================================== +4. Photon GUI *photon-gui* + +GUIのVimを起動するには、gvimかvim -gを実行する。そうでなければ端末版が起動す +る。詳細な情報は - |gui-x11-start| + +サポートされる機能: + :browse コマンド |:browse| + :confirm コマンド |:confirm| + カーソルの点滅 |'guicursor'| + メニュー |:menu| + ポップアップメニュー |popup-menu| + メニューの優先順位 |menu-priority| + ツールバー |gui-toolbar| + |'toolbar'| + フォント選択ダイアログ (:set guifont=*) |photon-fonts| + マウスフォーカス |'mousefocus'| + マウスカーソルを隠す |'mousehide'| + マウスカーソルの形 |'mouseshape'| + クリップボード |gui-clipboard| + +未完成の機能: + 様々な国際化のサポート、アラビア語やヘブライ語のサポート、 + エンコードのサポート、その他諸々。 + + このヘルプファイル + +サポートされていない機能: + 検索/置換ウィンドウ |:promptfind| + 切り取りメニュー + + このリストに書こうとさえ思いつかない、だから書けない他のもの。 + +============================================================================== +5. Photon フォント *photon-fonts* + +オプション'guifont'でGUIのフォントを設定する: > + :set guifont=Lucida\ Terminal +< +指定するフォントは等幅でなければならず、フォント名の中の空白文字は'\'でエス +ケープする必要がある。PC端末で使われるデフォルトのフォントサイズは8である。 +フォント名に'*'を使用すると、フォント選択のためにPhotonの標準的なフォント選択 +ダイアログが開く。 + +フォント名に続いて、フォントのサイズとスタイルを制御するための補助設定を含める +ことができる。各補助設定は':'で区切る。フォントが全てが、全部のスタイルをサポ +ートしているわけではない。 + +補助設定: + s{size} フォントのサイズを{size}に設定する。 + b 太字 + a アンチエイリアス(縁が滑らかになる) + i 斜体 + +例:: + +monospaceフォントをサイズ10のアンチエイリアスで > + :set guifont=monospace:s10:a +< +Courierフォントをサイズ12の太字 + 斜体で > + :set guifont=Courier:s12:b:i +< +ダイアログでフォントを選択する > + :set guifont=* +< +============================================================================== +6. バグと今後の予定 + +既知の問題: + - 外部プログラムを実行すると時々Vimがハングする。回避方法: + 次の行を|vimrc|ファイルに追加する: > + set noguipty + +Bugs: + - メニューの強調にまだ少し問題がある + - phiditto/phinows/その他などの、太字をサポートしていないフォントを使 + 用すると、Vimが太字テキストを描画しようとした時に失敗してしまう。 + (訳注:phidittoやphinowsはフォント名だと推測される) + - カーソルが時々、見え難くなる。 + - 修正可能な相当数の一般的でない問題 + +Todo: + - 多言語対応を進める + - メニューとツールバーで使用されるフォントを設定するオプション + - 検索と置換のダイアログ + - クライアントサーバ通信の機能 + - 切り取りメニュー(予定) + + - 外部コマンドの実行をfork()からspawn()に切換える。 + + vim:tw=78:sw=4:ts=8:ts=8:ft=help:norl: diff --git a/ja/pi_expl.jax b/ja/pi_expl.jax new file mode 100644 index 000000000..db01c214d --- /dev/null +++ b/ja/pi_expl.jax @@ -0,0 +1,205 @@ +COMMENT: プラグイン:ファイルブラウザ +STATUS: finished 6.3.054 +TRANSLATOR: smoker <smoker@smokerz.zone.ne.jp> +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*pi_expl.txt* For Vim version 6.3. Last change: 2002 Nov 08 + + VIMリファレンスマニュアル by M A Aziz Ahmed + updated by Mark Waggoner + + + *file-explorer* *file-browser* +ディレクトリ及びファイルのブラウジングを行うプラグイン + +1. ファイルエクスプローラ |expl-statring| + +これは標準的なプラグインです |standard-plugin| +このプラグインは'compatible'モードの場合は無効です。 +もし貴方がこのプラグインを利用したい場合には環境変数"loaded_explorer"を設定し +て下さい: > + :let loaded_explorer = 1 + +{Vi にはこの機能はありません} + +================================================================================ +1. ファイルエクスプローラを使ってみましょう *expl-starting* + +このプラグインを使うとVim上でディレクトリを探索することが出来ます。ファイルエ +クスプローラはディレクトリを編集しようとすると起動されます。 + *:Explore* *:Sexplore* +現在のウィンドウでエクスプローラを起動するには: > + :Explore +もしウィンドウを分割してエクスプローラを起動するには: > + :Sexplore +ディレクトリを指定してエクスプローラを起動するには: > + :Explore dirname + :Sexplore dirname + +エクスプローラウィンドウでカーソルを動かし、ファイルやディレクトリを選択しま +す。選択して有効なコマンドは次のとおりです。: + + <enter> カレントウィンドウにファイルを開きます + 'o' ウィンドウを分割して、分割されたウィンドウにファイルを開きます + 'O' ウィンドウを分割して(もし既存のウィンドウがあればそれを使い)ファイルを + 開きます + 'p' ウィンドウを分割して(もし既存のウィンドウがあればそれを使い)プレビュー + します + 'x' システムのツールを使ってファイルを実行します。今のところMS-WindowsとKDE + のみのサポートです + +新しく分割するウィンドウの位置は環境変数を設定することで指定することが出来ます +g:explVertical, g:explSplitBelow及びg:explSplitRightで指定できます。 + + *g:explVertical* + *g:explSplitBelow* + *g:explSplitRight* + *g:explStartBelow* + *g:explStartRight* +水平分割や垂直分割を設定するには次のようにします: > + let g:explVertical=1 " 垂直分割 + let g:explVertical=0 " 水平分割 + +水平分割時にファイルを開くウィンドウを設定するには次のようにして下さい: > + let g:explSplitBelow=1 " エキスプローラの上のウィンドウに表示 + let g:explSplitBelow=0 " エキスプローラの下のウィンドウに表示 +これらの値はプラグインが読み込まれた時点で設定されます + +垂直分割時にファイルを開くウィンドウを指定するには次のようにしてて下さい: > + let g:explSplitRight=1 " エキスプローラの右のウィンドウに表示 + let g:explSplitRight=0 " エキスプローラの左のウィンドウに表示 +これらの値はプラグインが読み込まれた時点で設定されます + +エクスプローラウィンドウの詳細な設定は次のようにします: > + let g:explStartRight=1 " カレントウィンドウの右側に新しいウィンドウを開い + " て表示します + let g:explStartRight=0 " カレントウィンドウの左側に新しいウィンドウを開い + " て表示します +これらの値はプラグインが読み込まれた時点で設定されます + +エクスプローラウィンドウに異なる分割方法を適用するには次のようします: > + let g:explStartBelow=1 " 現在のウィンドウの前にエクスプローラウィンドウを + " 挿入します + let g:explStartBelow=0 " 現在のウィンドウの後にエクスプローラウィンドウを + " 挿入します +これらの値はプラグインが読み込まれた時点で設定されます + +Sexploreコマンドを実行した場合には、左側にディレクトリが、右側に内容が表示され +ます。このファイルブラウザタイプの配置では中にエクスプローラウィンドウが配置さ +れます。 + +プラグインを使用している時のウィンドウ分割は、通常のそれとは少し異なっている。 +ウィンドウを分割する時、通常は、現在のウィンドウが占めている空間を新しいウィン +ドウに分け与える。explorerは自分からではなく隣接するウィンドウから分割しようと +試みるので、explorer自身のウィンドウサイズは変わらない。分割しようとしている方 +向に隣接するウィンドウがなければ、explorerウィンドウから分割される。 +(訳注:結果としてexplorerウィンドウのサイズが変わる。) + + *g:explWinSize* +'o'コマンドでファイルを開いた場合にエキスプローラウィンドウの大きさを変更し +たい場合には次のようにすることで設定できます。 > + let g:explWinSize=N +nには水平分割の場合には行数を、垂直分割の場合にはカラム数を与えてください、も +し空文字列("")を与えた場合はリサイズを行いません。 g:explWindSizeのデフォルト +値は15です。 + + *g:explDetailedList* +ファイルサイズ(バイト単位)と更新時刻を表示したい場合には'i'を入力すると表示さ +れます、iを入力することによって、詳細表示と簡易表示が切り替わります。もしも標 +準で詳細表示を行いたい場合には次のように指定して下さい。 > + let g:explDetailedList=1 +この設定を行ったことで動作が遅くなるかもしれません。この時の遅くなる度合いは、 +ディレクトリがローカルなのかネットワークなのかや、それからディレクトリ自身のサ +イズ、に依存して異なる。 + + *g:explDateFormat* +日付の表示フォーマットを設定することが出来ます。g:explDateFormat エクスプローラ +は strftime()のフォーマットを使います。|strftime()| 表示の初期値は次のように +なっています > + let g:explDateFormat="%d %b %Y %H:%M" + +ソートすることを考慮して、日付はいつも生データ(訳注:エポック秒)の形で行末に置 +かれることに注意。構文強調を有効にしていると、この生データは見えなくなる。 + + *g:explHideFiles* +正規表現を使い、表示させたくないファイルを g:explHideFilesに設定することによっ +てそれらを非表示にすることが出来ます。次のようにします > + + let g:explHideFiles='\.,\.gz$,\.exe$,\.zip$' + +このように設定することで、"."で始まるファイルと、最後に .gz, .exe, .zipが付く +ファイルを全てのディレクトリにおいて非表示に出来ます。もし非表示にしているファ +イルを表示したくなった場合には'a'を押せば表示します + + *g:explDetailedHelp* +詳細なヘルプを表示させたくない場合には(少しだけ表示されますが)次のようにして下 +さい > + let g:explDetailedHelp=0 + +'?'を押すことによって何時でもヘルプの表示を切り替えられます。 + + + *explorer-delete* +'D'を押すことによってエクスプローラ内でファイルを削除することが出来ます。ビジ +ュアルモードで複数のファイルを選択してから 'D' を押して削除する事も出来ます。 +削除するときには、対話的に y/n/a/q と聞かれます。(なぜならばディレクトリを +削除することはVimでサポートされていないからです) + + *explorer-rename* +'R'を押すと、エクスプローラ内でファイル名を変更することが出来ます。 + + + *g:explSortBy* +エクスプローラで表示されるファイル一覧をファイル名によって昇順や降順、及びファ +イルサイズや更新時刻によってソートすることが可能です。もしソート順を変えたいな +ら次のオプションを使って設定できます。 > + let g:explSortBy='name' " ファイル名でソート + let g:explSortBy='reverse name' " ファイル名で逆ソート + let g:explSortBy='date' " 更新時刻でソート + let g:explSortBy='reverse date' " 更新時刻で逆ソート + let g:explSortBy='size' " ファイルサイズでソート + let g:explSortBy='reverse size" " ファイルサイズで逆ソート +エクスプローラ上では's'を押すと何時でもファイルのソートが可能です、そして逆 +ソートしたい場合には'r'を押すことで可能です。 もし詳細な表示にしている場合はそ +れらの値を利用してソートしたほうがファイル名でソートするよりもより効果的です。 +('i'かg:explDetailedHelpを利用して下さい) +エクスプローラ上部にソート規則が表示されます + + *g:explDirsFirst* +ファイルとディレクトリの混在表示の設定には,次のようにして下さい。 > + let g:explDirsFirst=1 "ディレクトリを先頭に表示(デフォルト) + let g:explDirsFirst=0 "ディレクトリとファイルを混在して表示 + let g:explDirsFirst=-1 "ディレクトリを最後に表示 +< + *g:explSuffixesLast* +特定の拡張子の混在表示/非表示の設定をするには,次のようにして下さい。 > + let g:explSuffixesLast=1 "特定の拡張子を持つファイルを最後尾に表示 + "する(デフォルト) + let g:explSuffixesLast=0 "特定の拡張子を持つファイルも混在して表示する + let g:explSuffixesLast=-1 "特定の拡張子を持つファイルを先頭に表示する +エクスプローラ上部に特定の拡張子を持つファイルの表示位置(先頭か最後尾)を表示 +します + + *g:explUseSeparators* +ディレクトリや特定の拡張子を持つファイルはハイライト表示されます、もしそれら +ディレクトリ、特定の拡張子を持つファイル、普通のファイルの間セパレータを表示 +したい場合は次のようにして下さい。 > + let g:explUseSeparators=1 "セパレータを表示 + let g:explUseSeparators=0 "セパレータを非表示 +< + *g:explFileHandler* +"g:explFileHandler"に関数の名前を設定すると'x'を押した時にその関数を呼びます。 +カーソルがある場所のファイル名(かディレクトリ名)が関数の引数に渡されます。もし +あなたがKDEを使っているなら次のように使えます。 > + + function MyFileHandler(fn) + exec "silent! !kfmclient exec " . escape(a:fn,' \%#') + endfunction + let g:explFileHandler = 'MyFileHandler' + +Win32では自動的に適切な値が設定されています。もしHTMLファイルの上で'x'を押せば +Microsoft Internet Explorer が起動するでしょう(またはその他の標準ブラウザ)。 + +============================================================================== + vim:tw=78:noet:ts=8:ft=help:norl: diff --git a/ja/pi_gzip.jax b/ja/pi_gzip.jax new file mode 100644 index 000000000..0d9ce5e2d --- /dev/null +++ b/ja/pi_gzip.jax @@ -0,0 +1,43 @@ +COMMENT: プラグイン:圧縮ファイルの編集 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*pi_gzip.txt* For Vim version 6.3. Last change: 2002 Oct 29 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +圧縮されたファイルをVimで編集する *gzip* *bzip2* *compress* + +1. 自動実行コマンド |gzip-autocmd| + +ここで説明されるのは|standard-plugin|(訳注: 標準プラグイン)である。 +このプラグインは'compatible'が設定されていない時にだけ利用可能である。 +変数"loaded_gzip"を設定することでプラグインが読み込まれないようにできる: > + :let loaded_gzip = 1 + +{これはViには存在しない} + +============================================================================== +1. 自動実行コマンド *gzip-autocmd* + +プラグインは以下の拡張子を持つファイルの読み書きに割込む自動実行コマンドをイン +ストールする: + + 拡張子 圧縮方法(コマンド) ~ + *.Z compress (Lempel-Ziv) + *.gz gzip + *.bz2 bzip2 + +実質、知っておかなければならないことは以上である。オプションはない。 + +ファイルが伸長(展開)された後で、再びファイル形式が判定される。これにより +"foo.c.gz"のようなファイルが"c"のファイル形式として判断される。 + +'patchmode'を設定した場合には、圧縮を示す拡張子の後に付け加えられる。このよう +にパッチモードで作成されたファイルを編集する際には自動伸長(展開)はされない。も +しもしたいのならばファイル名を修正しなければならない。 + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/pi_spec.jax b/ja/pi_spec.jax new file mode 100644 index 000000000..3c3ef399f --- /dev/null +++ b/ja/pi_spec.jax @@ -0,0 +1,113 @@ +COMMENT: プラグイン:RPMのspecファイル編集 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*pi_spec.txt* For Vim version 6.3. Last change: 2002 Oct 29 + +by Gustavo Niemeyer ~ + +ここではRPMのspecファイル用のプラグインについて解説する。 + +このプラグインを使用することでRPMのspecファイルの%changelogセクションを簡単に +更新することができる。まだセクションが存在していないならば、プラグインが作成し +てくれる。既に本日分のエントリがあるのならば、プラグインは本日のエントリに新し +い項目を追加する機会を与えてくれる。書式設定文字列(|spec_chglog_format|)を準備 +していないならば、プラグインはemailアドレスをユーザに問い合わせ、そこから書式 +文字列を構築する。 + +1. 使い方 |spec-how-to-use-it| +2. カスタマイズ |spec-customizing| + +============================================================================== +1. 使い方 *spec-how-to-use-it* + +spec_chglogプラグインは以下のようなキーマップを提供する: > + + :map <buffer> <LocalLeader>c <Plug>SpecChangelog +< +これはspecファイルではマップローカルリーダ(デフォルトは'\')に続いて'c'を押すこ +とでプラグインが起動することを意味している。|spec_chglog_format|を設定していな +い場合には、プラグインはユーザにemailアドレスを問い合わせこの編集セッションで +使用する。 + +プラグインを起動するたびに、changelogに本日分の項目が既に書かれているかを +チェックする。そのようなエントリが存在すれば、新しいchangelog項目が追加され、 +存在しない場合には新しいchangelogエントリが作成される。 +|spec_chglog_release_info|を有効化して実行した場合には、名前とバージョンとリ +リースも一致するかが確認される。プラグインは充分に賢いので、パッケージリリース +がアップデートされるべき時にはその旨を訊ねてくるから、ユーザはわざわざそれをす +る必要はない。 + +キーマップ定義 *spec-setting-a-map* +-------------- + +既に知っているように、あらゆるVimコマンド(その意味ではあらゆる事が可能)を実行 +するためのキーマップは簡単に定義できる。デフォルトのキーマップ<LocalLeader>cが +気に喰わないならば、独自のキーを設定するのも良いだろう。次はそれをファイル. +vimrcで行なう例で、プラグインを<F5>キーに割り当てている: +> + au FileType spec map <buffer> <F5> <Plug>SpecChangelog +< +NOTE: プラグインはユーザのマッピング変更の要望を尊重するので、再設定は行なわな + い。 + +このコマンドはspecファイルのバッファにのみ適用される。 + + +============================================================================== +2. カスタマイズ *spec-customizing* + +書式設定文字列 *spec_chglog_format* +-------------- + +specファイルがどのように表示されるかは簡単にカスタマイズできる。これを行なうに +はファイル.vimrcで次のように変数"spec_chglog_format"を設定する: > + + let spec_chglog_format = "%a %b %d %Y My Name <my@email.com>" + +"%a %b %d %Y"はもっとも頻繁に使用される時刻の書式であることに注意。書式文字列 +を準備していなければ、SpecChangelogコマンドを最初に実行した時に、ユーザにemail +アドレスを問い合わせアドレスから自動的に|spec_chglog_format|を構築する。この方 +法でユーザは一度emailアドレスを設定するだけで済む。 + +どのような書式を使うことができるのかを知るには、strftime()関数のマニュアルペー +ジを参照する。 +(訳注: |strftime()|も参照) + +新規項目の挿入箇所 *spec_chglog_prepend* +------------------ + +プラグインは通常新しい%changelogエントリの項目(エントリそのものではないこと +に注意)を、既に存在するものの後に挿入しようとする。変数spec_chglog_prependを設 +定すれば: > + + let spec_chglog_prepend = 1 + +既に存在するものの前に新規項目を挿入するようになる。 + +リリース情報の挿入 *spec_chglog_release_info* +------------------ + +望むのならば、プラグインはchangelogエントリごとのリリース情報を自動的に挿入す +ることができる。この機能を利用することの利点の1つは、最後の変更の後にリリース +を更新すべきかそうでないかをコントールできることである。パッケージのバージョン +かリリースを更新していない時には、パッケージリリースを更新すべきならばその旨を +ユーザに問い合わせてくれる。この機能を利用するには、.vimrcに次のコードを書き加 +える: > + + let spec_chglog_release_info = 1 + +こうすれば、changelogエントリの最初の項目が次のようなものの場合に問い合わせが +発生する: + + + name-1.0-1cl + +リリース更新機能が気に入らず、古いリリースを検出するたびに毎回"No"と答えるのに +嫌気が差したならば、次のようにして無効化できる: > + + let spec_chglog_never_increase_release = 1 + + +幸運を!! + +vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/remote.jax b/ja/remote.jax new file mode 100644 index 000000000..e2e040366 --- /dev/null +++ b/ja/remote.jax @@ -0,0 +1,188 @@ +COMMENT: +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*remote.txt* For Vim version 6.3. Last change: 2003 Nov 10 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +Vimクライアントサーバ通信 *client-server* + +1. 共通機能 |clientserver| +2. X11特有の項目 |x11-clientserver| +3. Win32特有の項目 |w32-clientserver| + +{これらのコマンドはViには存在しない} + +============================================================================== +1. 共通機能 *clientserver* + +オプション|+clientserver|でコンパイルした時には、Vimはコマンドサーバとして動作 +することができる。それによりクライアントからメッセージを受け取りそれを実行する +ことができる。同時に、Vimはクライアントの機能も持ち合わせVimサーバへメッセージ +を送ることもできる。 + +以下のコマンドライン引数が利用できる: + + 引数 意味 ~ + + --remote [+{cmd}] {file} ... *--remote* + ファイルをリモートのVimで開く。Vimサーバが無い + 時には、ローカルで実行される。オプションで + +{cmd}に一つだけExコマンドを指定できる。コマン + ドは"|"でつなげて複数指定できる。コマンドライン + の残りの部分はファイルのリストとして扱われる。 + だからファイルではない引数はこれよりも前に書か + なければならない。 + この方法で標準入力を開くことはできない|--|。 + 次のようにしなければリモートのVimが問題を起こ + すかもしれない。 > + vim --remote-send "<C-\><C-N>:n filename<CR>" +< --remote-silent [+{cmd}] {file} ... *--remote-silent* + 上と同様、しかしサーバが存在しなくてもエラーを + 報告しない。指定したファイルがすでにローカルで + 編集中であっても同様。 + --remote-wait [+{cmd}] {file} ... *--remote-wait* + --removteと同様、しかしリモートVimでファイルが + 完了(解放)されるまで待つ。 + --remote-wait-silent [+{cmd}] {file} ... *--remote-wait-silent* + --remote-waitと同様、しかしサーバが存在しなく + てもエラーを報告しない。 + *--servername* + --servername {name} サーバ名{name}になる。--remoteコマンドのどれか + 1つと併用すると、デフォルトのサーバではなく + {name}で指定されるサーバに接続する(下を参照)。 + *--remote-send* + --remote-send {keys} サーバに{keys}を送信して終了する。 + *--remote-expr* + --remote-expr {expr} サーバに{expr}を実行評価させ、その結果を標準出 + 力に印刷する。 + *--serverlist* + --serverlist サーバ名のリストを表示する。 + + +使用例 ~ + +既に起動しているgvimサーバで"file.txt"を編集する: > + gvim --remote file.txt + +既に起動しているFOOBARという名のサーバで"file.txt"を編集する: > + gvim --servername FOOBAR --remote file.txt + +既に起動しているFILESという名のサーバがあれば、FILESで"file.txt"を編集するが、 +無ければ自分がFILESになる: > + gvim --servername FILES --remote-silent file.txt + +--remoteの後の全ての引数がファイル名として解釈されるので動作しない: > + gvim --remote --servername FOOBAR file.txt + +リモートサーバで"+foo"という名のファイルを編集する("./"により先頭の"+"の特別な +意味が無効化されていることに注目): > + vim --remote ./+foo + +"BLA"という名のリモートサーバで編集中の全てのファイルを保存して終了する: > + vim --servername BLA --remote-send '<C-\><C-N>:wqa<CR>' + +サーバ名 ~ + +デフォルトではVimは自分が起動された時の名前(gvim, egvim ...)のサーバになろうと +する。これは引数--servernameで変更できる。指定した名前が利用できない場合には、 +利用できる名前になるように後置名が付加される。例えば、1つのX-Serverで2つ目の +gvimを起動したときには"gvim1"というようになる。その時のサーバ名へは組み込み変 +数|v:servername|によりアクセスできる。サーバ名の大文字小文字は区別されないの +で、"gvim" と "GVIM"は同じとみなされる。 + +Vimが引数--removeや--remove-waitまたは--remove-sendで起動された時には、上記の +ようにその名前で起動されたサーバを探そうと試みる。正確に一致するサーバがなかっ +た時には、数字の後置名を付けて見つかった最初のサーバを使用する。 +引数-- servernameに数字の後置を付けた名前を指定した場合には、それは正確に一致 +するものだけを対象とする。 + +サーバが見つからなく、--remoteか--remote-waitが使われた時には、Vimは残りのコマ +ンドラインに従い起動し、そのファイルの編集セッションを自分自身で取り持つ。この +方法ならgvimはコマンドを送信する時に、既に別のgvimが起動しているかどうかを知る +必要は無い。 + +引数--serverlistはVimに登録(実行)されている全てのコマンドサーバを、標準出力 +(stdout)に印刷して終了する。 + +Win32 NOTE: Vimサーバをアクティブアプリケーション(トップウィンドウ)にすること +は、MS-Windowsがそれを許していないので必ずしも成功するわけではない。クライアン +トは引数--remoteや--remote-waitを使用しサーバ名が"g"で始まる時には、サーバをア +クティブアプリケーションにすることを試みる。 + + +リモート編集 ~ + +引数--argumentは残りのコマンドラインから|:drop|コマンドを構成することをを引き +起こし、それを上記の方法で送信する。 +引数--remote-waitは同じ事をして、加えて全てのファイルの編集の完了を待つように +設定される。これはBufUnloadイベントを使用し、だからファイルがアンロードされる +とすぐに、Vimはファイルの編集が完了したと判断する。 +引数--remoteと--remote-waitは残りのコマンドライン全てを自分のものとして扱うこ +とに注意。言い換えれば残り全ての引数はファイル名とみなされる。そこにオプション +を置くことはできない! + + +Vimスクリプト関数 ~ + *E240* *E573* +Vimスクリプトにはコマンドサーバを操作するために幾つか関数がある。詳細な解説は +|eval.txt|を参照するか、関数名の上でCTRL-]を使って完全な解説を参照すること。 + + 概要 説明 ~ + remote_expr( server, string, idvar) 式を送信する + remote_send( server, string, idvar) キーシーケンスを送信する + serverlist() 利用可能なサーバのリストを得る + remote_peek( serverid, retvar) 結果文字列の有無確認する + remote_read( serverid) 結果文字列を取得する + server2client( serverid, string) 結果文字列を送信する + remote_foreground( server) サーバを前面に移動する + +|CTRL-\_CTRL-N|の説明も参照。キーシーケンスの先頭に使用すると便利。 +server2client()で使用するサーバIDはexpand("<client>")で取得できる。 + +============================================================================== +2. X11特有の項目 *x11-clientserver* + *E247* *E248* *E251* *E258* *E277* + +クライアントとサーバ間の通信はXサーバにより行なわれる。Vimサーバのディスプレイ +を指定する必要がある。Xサーバの通常の保護機能が使われているは、通信が成り立つ +ためにはそのXサーバでウィンドウを作成できなければならない。異なるマシン間での +通信も可能である。 + +デフォルトでは、GUI VimはXサーバに名前を登録する。 +By default, a GUI Vim will register a name on the X-server by which it can be +addressed for subsequent execution of injected strings. +Vimはクライアントとしても振舞い、同じX11ディスプレイで動作する別のVimインスタ +ンスに文字列を送ることができる。 + +X11のGUI Vim(gvim)が起動すると、ルートウィンドウの'VimRegistry'プロパティに +送信サーバ名を登録しようと試みる。 + +X11ディスプレイにアクセスできる非GUIのVim(|xterm-clipboard|が有効になっている) +も、サーバ名が引数--servernameで明示的に与えられればコマンドサーバとして振舞う +ことができる。 + +引数に--servernameサーバ名を与えなければコマンドサーバ機能を無効にできる。 + +異なるアプリケーションからVimサーバへコマンドを送るには、使われているプロトコ +ルの幾つかのヒントを含むソースコードsrc/if_xcmdsrv.cを参照のこと。 + +============================================================================== +3. Win32特有の項目 *w32-clientserver* + +全てのWin32版Vimはコンソールもサーバとして動作できる。OLEを組み込んでコンパイ +ルする必要は無い。どのMS-Windowsでも動作する、Windowsメッセージが使用されてい +る。しかしネットワークを通じてやり取りすることはできない。 + +MS-Windowsメッセージを使っているから、どのようなアプリケーションでもVimサーバ +と通信することができる。加えてOLEの機能を使うこともできる|ole-interface|。 + +gvimを使っている時には、--remote-waitは以下のようにしないと正しく動作しない: > + + start /w gvim --remote-wait file.txt +< + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/sign.jax b/ja/sign.jax new file mode 100644 index 000000000..8c98f7fdc --- /dev/null +++ b/ja/sign.jax @@ -0,0 +1,196 @@ +COMMENT: グラフィカルマーク +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*sign.txt* For Vim version 6.3. Last change: 2004 May 22 + + + VIMリファレンスマニュアル by Gordon Prieur + and Bram Moolenaar + + +目印機能 *sign-support* + +1. 機能紹介 |sign-intro| +2. コマンド |sign-commands| + +{Vi にはこの機能はない} +{コンパイル時に|+sign|機能を指定した場合にのみ利用可能} + +============================================================================== +1. 機能紹介 *sign-intro* *signs* + +デバッガやその他のIDE(訳注 統合開発環境)ツールはエディタをコントールする。その +エディタはユーザにファイルについての役立つ情報を素早く提供するために特別なハイ +ライトを表示できる必要がある。一例としては左のカラムにブレークポイントを示すア +イコンを持つデバッガを挙げることができる。別の例としてはプログラムカウンタ(PC) +を示す矢印が挙げられる。この目印機能により、ウィンドウの左端に目印やアイコン画 +像を置いたり、ある行に適用される強調を定義することができるようになる。画像によ +る目印はgvimでだけ利用で可能である(しかしSun Microsystemsのdttermはそれをサ +ポートしている。これは著者が知り得る限りで唯一の端末エミュレータである)。テキ +ストによる目印と色による強調表示は、あらゆるカラーの端末エミュレータで利用でき +る。 + +目印と強調はデバッガにとってだけ便利なわけではない。SunのVisual WorkShopはビル +ドエラーとSourceBrowserの検索一致箇所を示すのに目印と強調を使用する。加えて、 +デバッガは8個から10個の異なる目印と強調色をサポートする。|workshop|参照。 +Netbeansは|netbeans|を参照。 + +目印を使うには2つの段階がある: + +1. 目印を定義する。画像とテキストと強調色を指定する。例えば"break"の目印として + 道路の停止の画像を使用し、テキストとして"!!"を使用して定義することができ + る。 + +2. 目印を設置する。目印を設置したいファイルと行番号を指定する。定義された目印 + は異なるファイルと異なる位置に複数箇所に置くことができる。 + +ファイルに対して目印が定義されると、Vimは自動的に表示画面に2文字分のカラムを付 +け加える。全てのサインが取り除かれるとそのカラムは消滅する。そのカラムは +SignColumnの色を使う|hl-SignColumn|。色を設定するには次のようにする: > + + :highlight SignColumn guibg=darkgrey + +============================================================================== +2. コマンド *sign-commands* *:sig* *:sign* + +次の例ではカレントファイルの23行目に"piet"という目印を置いている。目印は">>"と +いう文字をともなって表示されます。 > + :sign define piet text=>> texthl=Search + :exe ":sign place 2 line=23 name=piet file=" . expand("%:p") + +それをもう一度消すコマンドを追記しておく: > + :sign unplace 2 + +":sign"コマンドの後には他のコマンドを続けられないことに注意してください。その +ようにするには|:execute|を使います。 + + +目印を定義する *:sign-define* *E255* *E160* *E612* + +:sign define {name} {argument}... + 新しい目印を定義するか既にある目印に属性を設定する。{name}は番 + 号(全て数字)か非数字で始まる名前である。 + 約120の異なる目印を定義することができる。 + + 利用可能な引数: + + icon={pixmap} + 目印に使用する画像ファイルを定義する。フルパス指定したほうが良 + い。画像は2文字の幅に納まるものでなければならない。これは + チェックされない。大きすぎる画像を使用すると再描画の際に問題が + 生じることがある。GTK2では画像がちょうど納まるように調整され + る。 + (訳注: Windowsでは自動的に調整される) + toolkit サポートフォーマット ~ + GTK 1 pixmap (.xpm) + GTK 2 many + Motif pixmap (.xpm) + + linehl={group} + 目印が設置された行全体を強調表示するのに使われるハイライトグ + ループを定義する。背景色を定義するのに良く利用される。 + + text={text} *E239* + アイコンが無いかGUIではない時に表示されるテキストを定義する。 + 表示可能な文字のみ指定できる。これは表示幅で1文字か2文字分の文 + 字を指定できる。 + (訳注: アルファベットなら1or2文字。漢字なら1文字) + + texthl={group} + テキスト部分に使用されるハイライトグループ。 + + +(定義した)目印を削除する *:sign-undefine* *E155* + +:sign undefine {name} + 既に定義された目印を削除する。{name}という名前の目印がまだ設置 + されたままの場合はトラブルを引き起こす。 + + +(定義した)目印を一覧表示する *:sign-list* *E156* + +:sign list 全部の定義済み目印とその属性を一覧表示する。 + +:sign list {name} + {name}という名で定義された目印とその属性を表示する。 + + +目印を設置する *:sign-place* *E158* + +:sign place {id} line={lnum} name={name} file={fname} + {name}として定義された目印をファイル{fname}の{lnum}行目に設置 + する。 + *sign-fname* + ファイル名{fname}は既に読込済みのバッファでなければなら + ない。正確なファイル名でなければならず、ワイルドカードや環境変 + 数そして"~"は展開されない。空白はエスケープされない。末尾の空 + 白は無視される。 + + 目印は{id}という識別子で記憶され、後の操作に使用される。{id}は + 番号でなければならない。 + ユーザは自分で、1つの{id}が各々のファイルに1つしか無いように気 + を付けなければならない(同じ{id}を複数回設置したときには解除も + 同じ回数だけ行なう必要がある。同じ{id}を使うことで目印の位置を + 変更しようという試みはうまく行かない)。 + +:sign place {id} line={lnum} name={name} buffer={nr} + 上に同じ。バッファ番号を使用していることが異なる。 + +:sign place {id} name={name} file={fname} + ファイル{fname}に{id}で設置された目印を、{name}で定義されてい + る目印に変更する。{fname}については上述の|:sign-fname|を参照し + てください。 + これは既に設置された目印を動かすことなく変更するのに使われる。 + (例: デバッガがブレークポイントで停止した時) + +:sign place {id} name={name} buffer={nr} + 上に同じ。バッファ番号を使用していることが異なる。 + + +(設置した)目印を解除する *:sign-unplace* *E159* + +:sign unplace {id} file={fname} + ファイル{fname}に{id}で設置された目印を解除する。 + {fname}については上述の|:sign-fname|を参照してください。 + + +:sign unplace {id} buffer={nr} + 上に同じ。バッファ番号を使用していることが異なる。 + +:sign unplace {id} + {id}で設置された目印を、全てのファイルから削除する。 + +:sign unplace * + 設置された全ての目印を解除する。 + +:sign unplace + カーソル位置に設置されている目印を解除する。 + + +(設置した)目印を一覧表示する + +:sign place file={fname} + ファイル{fname}に設置されている目印を一覧表示する。 + {fname}については上述の|:sign-fname|を参照してください。 + +:sign place buffer={nr} + バッファ{nr}に設置されている目印を一覧表示する。 + +:sign place 全てのファイルに設置されている全ての目印を一覧表示する。 + + +(設置した)目印へ移動する *:sign-jump* *E157* + +:sign jump {id} file={fname} + ファイル{fname}を開くか、{fname}を編集中のウィンドウへ移動し、 + 目印{id}の位置へカーソルを移動させる。 + {fname}については上述の|:sign-fname|を参照してください。 + ファイルがウィンドウに表示されておらず、現在のファイルを放棄で + きない時には、これは失敗する。 + +:sign jump {id} buffer={nr} + 上に同じ。バッファ番号を使用していることが異なる。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/workshop.jax b/ja/workshop.jax new file mode 100644 index 000000000..539f2a518 --- /dev/null +++ b/ja/workshop.jax @@ -0,0 +1,105 @@ +COMMENT: Visual WorkShopでの利用法 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*workshop.txt* For Vim version 6.3. Last change: 2004 Jan 08 + + + VIM リファレンスマニュアル by Gordon Prieur + + +Sun Visual WorkShop との連携機能 *workshop* *workshop-support* + +1. 機能紹介 |workshop-intro| +2. コマンド |workshop-commands| +3. WorkShop用vim/gvimのコンパイル |workshop-compiling| +4. Configuring gvim for a WorkShop release tree |workshop-configure| +5. 最新のXPMライブラリの取得方法 |workshop-xpm| + +{Vi にはこれらの機能はない} +{|+sun_workshop|機能を付けてコンパイルしたときのみ利用可能} + +============================================================================== +1. 機能紹介 *workshop-intro* + +Sun Visual WorkShopではデバッグに使用するエディタを"Editor of Choice" (訳注:エ +ディタの選択)によってユーザの好みのものに変更できる。バージョン6.0のリリースに +あたりgvimはこれに対応した。WorkShopのデバッグセッションにはデバッグウィンドウ +とエディタウィンドウが表示される(同じように他のウィンドウが表示される可能性も +ある)。ウィンドウを切換える必要は最低限で良く、ユーザはエディタウィンドウから +多くのデバッグ操作を行なうことができる。 + +Sun Visual WorkShop 6 (Forte Developer6とも呼ばれる)に付属するVimのバージョン +は5.3である。このリリース(訳注:Vim 6)の機能はVisual WorkShopに付属するvim/gvim +よりもかなり頼りになる。vimをエディタとして選択しているVWS(訳注:Visual +WorkShopの略)のユーザは、(訳注: Vim 6の)ソースをコンパイルしWorkShopのリリース +ツリーへインストールするべきだ。 + +============================================================================== +2. コマンド *workshop-commands* + + *:ws* *:wsverb* +:ws[verb] {verb} {verb}を命令実行エンジンに渡す + +WorkShop関数に{verb}を渡し、関数は幾つかの引数を集めて{verb}とデータをIPC接続 +を通じてWorkShopへ送る。 + +============================================================================== +3. WorkShop用vim/gvimのコンパイル *workshop-compiling* + +コンパイル時にFEAT_SUN_WORKSHOPを指定すると、Visual WorkShopに対応したVimを構 +築するのに必要なコンパイルフラグが全て有効化される。VWSのリリースに含まれるSun +のコンパイラを使って、VWSに必要な機能が構築されテストされる。GNUのコンパイラを +使っている場合は構築もテストもされない。これはgccでは決して構築し実行すること +ができないのではなく、単に保証ができないという意味である。 + +============================================================================== +4. Configuring gvim for a WorkShop release tree *workshop-configure* + +VimをSun Visual WorkShop 6と供に使えるようにするためには、幾つかの仮定をしなけ +ればならない。 + + o gccではなくVWSに付属のコンパイラを使わなければならない。gccでは構築もテ + ストもしていないので正しく構築できるかは保証できない。 + + o XPMライブラリを自分で用意しなければならない。最新のXPMの入手方法の詳細は + 下記の|workshop-xpm|を参照すること。 + + o ディレクトリsrc/の中のMakefileを編集し、Sun Visual WorkShopのための何行 + かのコメントを解除する。文字列FEAT_SUN_WORKSHOPを検索すれば簡単に見つけ + ることができる。 + + o GUIにはMotifを使用することを提案する。そうすればgvimの外見と感触がSun + Visual WorkShopの他の部分と同じようなものになる。 + +下のコマンドはSun Visual WorkShopに対応したvimを構築するよう構成したい時に使用 +できる: > + + $ CC=cc configure --enable-workshop --enable-gui=motif \ + -prefix=<VWS-install-dir>/contrib/contrib6/<vim-version> +< +<VWS-install-dir>にはSun Visual WorkShopをインストールしたベースディレクトリを +指定する。デフォルトでは/opt/SUNWsproである。通常Vimをインストールするには管理 +者権限が必要になる。<VWS-install-dir>/bin/gvimが新しくインストールしたgvimを指 +すようにsymlinkを変更する必要もある。<vim-version>にはバージョンを示す文字列を +指定する。著者は"vim"にversion.hの中のVIM_VERSION_SHORTと同じ物を付加して使っ +ている。 + +============================================================================== +5. 最新のXPMライブラリの取得方法 *workshop-xpm* + +XPMライブラリはVimで(MotifかAthenaを使って)画像を表示するために必要とされる。 +それ無しではツールバーと目印が利用できなくなる。 + +XPMライブラリは French National Institute for Research in Computer Science and +Control(訳注:フランス国立コンピュータ科学/制御研究所---通称INRIA) の Arnaud Le +Hors によって作成された。http://koala.ilog.fr/ftp/pub/xpm よりダウンロードでき +るこれを書いている時点(訳注:原文の書かれた時点、訳した時点ではない)での最新版 +はxpm-3.4k-solaris.tgzでgzipされたtarファイルである。ディレクトリ +/usr/local/xpmを作成してそこにファイルを伸長展開したならば、Makefile内のコメン +トアウトされた行を内容は変更せずにコメントを解除するだけで使うことができる。も +しもxpmを他のディレクトリに置いたならばsrc/Makefile内のXPM_DIRを変更する必要が +ある。 + + vim:tw=78:ts=8:ft=help:norl: From 27b4b2be6c32c5c455731793718aec212bdee9e6 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 29 Jan 2005 07:31:07 +0000 Subject: [PATCH 012/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@12 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/arabic.jax | 326 +++ ja/hebrew.jax | 149 ++ ja/help.jax | 2 +- ja/insert.jax | 1 - ja/netbeans.jax | 739 ++++++ ja/options.jax | 6450 +++++++++++++++++++++++++++++++++++++++++++++++ ja/os_risc.jax | 335 +++ ja/os_vms.jax | 789 ++++++ ja/russian.jax | 86 + ja/syntax.jax | 3622 ++++++++++++++++++++++++++ ja/term.jax | 812 ++++++ ja/tips.jax | 457 ++++ ja/version4.jax | 6 +- 13 files changed, 13769 insertions(+), 5 deletions(-) create mode 100644 ja/arabic.jax create mode 100644 ja/hebrew.jax create mode 100644 ja/netbeans.jax create mode 100644 ja/options.jax create mode 100644 ja/os_risc.jax create mode 100644 ja/os_vms.jax create mode 100644 ja/russian.jax create mode 100644 ja/syntax.jax create mode 100644 ja/term.jax create mode 100644 ja/tips.jax diff --git a/ja/arabic.jax b/ja/arabic.jax new file mode 100644 index 000000000..7781e6c8a --- /dev/null +++ b/ja/arabic.jax @@ -0,0 +1,326 @@ +COMMENT: アラビア語サポート +STATUS: suspend 6.3.054 +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*arabic.txt* For Vim version 6.3. Last change: 2003 May 11 + + + VIM REFERENCE MANUAL by Nadim Shaikli + + +Arabic Language support (options & mappings) for Vim *Arabic* + +{Vi does not have any of these commands} + + *E800* +In order to use right-to-left and Arabic mapping support, it is +necessary to compile VIM with the |+arabic| feature. + +These functions have been created by Nadim Shaikli <nadim-at-arabeyes.org> + +It is best to view this file with these settings within VIM's GUI: > + + :set encoding=utf-8 + :set arabicshape + + +Introduction +------------ +Arabic is a rather demanding language in which a number of special +features are required. Characters are right-to-left oriented and +ought to appear as such on the screen (ie. from right to left). +Arabic also requires shaping of its characters, meaning the same +character has a different visual form based on its relative location +within a word (initial, medial, final or stand-alone). Arabic also +requires two different forms of combining and the ability, in +certain instances, to either superimpose upto two characters on top +of another (composing) or the actual substitution of two characters +into one (combining). Lastly, to display Arabic properly one will +require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also +require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are +subsets within a so-called ISO-10646-1 font. + +The commands, prompts and help files are not in Arabic, therefore +the user interface remains the standard Vi interface. + + +Highlights +---------- +o Editing left-to-right files as in the original VIM hasn't changed. + +o Viewing and editing files in right-to-left windows. File + orientation is per window, so it is possible to view the same + file in right-to-left and left-to-right modes, simultaneously. + +o No special terminal with right-to-left capabilities is required. + The right-to-left changes are completely hardware independent. + Only Arabic fonts are necessary. + +o Compatible with the original VIM. Almost all features work in + right-to-left mode (there are liable to be bugs). + +o Changing keyboard mapping and reverse insert modes using a single + command. + +o Toggling complete Arabic support via a single command. + +o While in Arabic mode, numbers are entered from left to right. Upon + entering a none number character, that character will be inserted + just into the left of the last number. + +o Arabic keymapping on the command line in reverse insert mode. + +o Proper Bidirectional functionality is possible given VIM is + started within a Bidi capable terminal emulator. + + +Arabic Fonts *arabicfonts* +------------ + +VIM requires monospaced fonts of which there are many out there. +Arabic requires ISO-8859-6 as well as Presentation Form-B fonts +(without Form-B, Arabic will _NOT_ be usable). It is highly +recommended that users search for so-called 'ISO-10646-1' fonts. +Do an Internet search or check www.arabeyes.org for further +info on where to attain the necessary Arabic fonts. + + +Font Installation +----------------- + +o Installation of fonts for X Window systems (Unix/Linux) + + Depending on your system, copy your_ARABIC_FONT file into a + directory of your choice. Change to the directory containing + the Arabic fonts and execute the following commands: + + % mkfontdir + % xset +fp path_name_of_arabic_fonts_directory + + +Usage +----- +Prior to the actual usage of Arabic within VIM, a number of settings +need to be accounted for and invoked. + +o Setting the Arabic fonts + + + For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done + by entering the following command in the VIM window. +> + :set guifont=your_ARABIC_FONT +< + NOTE: the string 'your_ARABIC_FONT' is used to denote a complete + font name akin to that used in linux/unix system. + (eg. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1) + + You can append the 'guifont' set command to your .vimrc file + in order to get the same above noted results. In other words, + you can include ':set guifont=your_ARABIC_FONT' to your .vimrc + file. + + + Under the X Window environment, you can also start VIM with + '-fn your_ARABIC_FONT' option. + +o Setting the appropriate character Encoding + To enable the correct Arabic encoding the following command needs + to be appended, +> + :set encoding=utf-8 +< + to your .vimrc file (entering the command manually into you VIM + window is highly discouraged). In short, include ':set + encoding=utf-8' to your .vimrc file. + + Attempts to use Arabic without UTF-8 will result the following + warning message, + + *W17* > + Arabic requires UTF-8, do ':set encoding=utf-8' + +o Enable Arabic settings [short-cut] + + In order to simplify and streamline things, you can either invoke + VIM with the command-line option, + + % vim -A my_utf8_arabic_file ... + + or enable 'arabic' via the following command within VIM +> + :set arabic +< + The two above noted possible invocations are the preferred manner + in which users are instructed to proceed. Baring an enabled 'termbidi' + setting, both command options: + + 1. set the appropriate keymap + 2. enable the deletion of a single combined pair character + 3. enable rightleft mode + 4. enable rightleftcmd mode (affecting the command-line) + 5. enable arabicshape mode (do visual character alterations) + + You may also append the command to your .vimrc file and simply + include ':set arabic' to it. + + You are also capable of disabling Arabic support via +> + :set noarabic +< + which resets everything that the command had enabled without touching + the global settings as they could affect other possible open buffers. + In short the 'noarabic' command, + + 1. resets to the alternate keymap + 2. disables the deletion of a single combined pair character + 3. disables rightleft mode + + NOTE: the 'arabic' command takes into consideration 'termbidi' for + possible external bi-directional (bidi) support from the + terminal ("mlterm" for instance offers such support). + 'termbidi', if available, is superior to rightleft support + and its support is preferred due to its level of offerings. + 'arabic' when 'termbidi' is enabled only sets the keymap. + + If, on the other hand, you'd like to be verbose and explicit and + are opting not to use the 'arabic' short-cut command, here's what + is needed (ie. if you use ':set arabic' you can skip this section) - + + + Arabic Keymapping Activation + + To activate the Arabic keymap (ie. to remap your english/latin + keyboard to look-n-feel like a standard Arabic one), set the + 'keymap' command to "arabic". This is done by entering +> + :set keymap=arabic +< + in your VIM window. You can also append the 'keymap' set command to + your .vimrc file. In other words, you can include ':set keymap=arabic' + to your .vimrc file. + + To turn toggle (or switch) your keymapping between Arabic and the + default mapping (english), its advised that users use the 'CTRL-^' + key press while in insert (or add/replace) mode. The command-line + will display your current mapping by displaying an "Arabic" string + next to your insertion mode (eg. -- INSERT Arabic --) indicating + your current keymap. + + + Arabic deletion of a combined pair character + + By default VIM has the 'delcombine' option disabled. This option + allows the deletion of ALEF in a LAM_ALEF (LAA) combined character + and still retain the LAM (ie. it reverts to treating the combined + character as its natural two characters form -- this also pertains + to harakat and their combined forms). You can enable this option + by entering +> + :set delcombine +< + in our VIM window. You can also append the 'delcombine' set command + to your .vimrc file. In other words, you can include ':set delcombine' + to your .vimrc file. + + + Arabic right-to-left Mode + + By default VIM starts in Left-to-right mode. 'rightleft' is the + command that allows one to alter a window's orientation - that can + be accomplished via, + + - Toggling between left-to-right and right-to-left modes is + accomplished through ':set rightleft' and ':set norightleft'. + + - While in Left-to-right mode, enter ':set rl' in the command line + ('rl' is the abbreviation for rightleft). + + - Put the ':set rl' line in your '.vimrc' file to start the VIM in + right-to-left mode permanently. + + + Arabic right-to-left command-line Mode + + For certain commands the editing can be done in right-to-left mode. + Currently this is only applicable to search commands. + + This is controlled with the 'rightleftcmd' option. The default is + "search", which means that windows in which 'rightleft' is set will + edit search commands in right-left mode. To disable this behavior, +> + :set rightleftcmd= +< + To enable right-left editing of search commands again, +> + :set rightleftcmd& +< + + Arabic Shaping Mode + + To activate the required visual characters alterations (shaping, + composing, combining) which the Arabic language requires, enable + the 'arabicshape' command. This is done by entering +> + :set arabicshape +< + in our VIM window. You can also append the 'arabicshape' set + command to your .vimrc file. In other words, you can include + ':set arabicshape' to your .vimrc file. + + +Keymap/Keyboard *arabickeymap* +--------------- + +The character/letter encoding used in VIM is the standard UTF-8. +It is widely discouraged that any other encoding be used or even +attempted. + +Note: UTF-8 is an all encompassing encoding and as such is + the only supported (and encouraged) encoding with + regard to Arabic (all other proprietary encodings + should be discouraged and frowned upon). + +o Keyboard + + + CTRL-^ in insert/replace mode toggles between Arabic/Latin mode + + + Keyboard mapping is based on the Microsoft's Arabic keymap (the + defacto standard in the Arab world): + + +---------------------------------------------------------------------+ + |! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ | + |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ | + +---------------------------------------------------------------------+ + |Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > | + |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د | + +-----------------------------------------------------------+ + |A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" | + |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط | + +------------------------------------------------------+ + |Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ | + |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ | + +-------------------------------------------------+ + +Restrictions +------------ + +o VIM in its GUI form does not currently support Bi-directionality + (ie. the ability to see both Arabic and Latin intermixed within + the same line). + + +Known Bugs +---------- + +There is one known minor bug, + + 1. If you insert a haraka (eg. Fatha (U+064E)) after a LAM (U+0644) + and then insert an ALEF (U+0627), the appropriate combining will + not happen due to the sandwiched haraka resulting in something + that will NOT be displayed correctly. + + WORK-AROUND: Don't include harakats between LAM and ALEF combos. + In general, don't anticipate to see correct visual + representation with regard to harakats and LAM+ALEF + combined characters (even those entered after both + characters). The problem noted is strictly a visual + one, meaning saving such a file will contain all the + appropriate info/encodings - nothing is lost. + +No other bugs are known to exist. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/hebrew.jax b/ja/hebrew.jax new file mode 100644 index 000000000..3bb4b684f --- /dev/null +++ b/ja/hebrew.jax @@ -0,0 +1,149 @@ +COMMENT: ヘブライ語サポート +STATUS: suspend 6.3.054 +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*hebrew.txt* For Vim version 6.3. Last change: 2003 May 11 + + + VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem) + + +Hebrew Language support (options & mapping) for Vim *hebrew* + +The supporting 'rightleft' functionality was originally created by Avner +Lottem: + E-mail: alottem@iil.intel.com + Phone: +972-4-8307322 + +Ron Aaron <ron@ronware.org> is currently helping support these features. + +{Vi does not have any of these commands} + +All this is only available when the |+rightleft| feature was enabled at +compile time. + + +Introduction +------------ +Hebrew-specific options are 'hkmap', 'hkmapp' 'keymap'=hebrew and 'aleph'. +Hebrew-useful options are 'delcombine', 'allowrevins', 'revins', 'rightleft' +and 'rightleftcmd'. + +The 'rightleft' mode reverses the display order, so characters are displayed +from right to left instead of the usual left to right. This is useful +primarily when editing Hebrew or other Middle-Eastern languages. +See |rileft.txt| for further details. + +Details +-------------- ++ Options: + + 'rightleft' ('rl') sets window orientation to right-to-left. This means + that the logical text 'ABC' will be displayed as 'CBA', and will start + drawing at the right edge of the window, not the left edge. + + 'hkmap' ('hk') sets keyboard mapping to Hebrew, in insert/replace modes. + + 'aleph' ('al'), numeric, holds the decimal code of Aleph, for keyboard + mapping. + + 'hkmapp' ('hkp') sets keyboard mapping to 'phonetic hebrew' + + NOTE: these three ('hkmap', 'hkmapp' and 'aleph') are obsolete. You should + use ":set keymap=hebrewp" instead. + + + 'delcombine' ('deco'), boolean, if editing UTF-8 encoded Hebrew, allows + one to remove the niqud or te`amim by pressing 'x' on a character (with + associated niqud). + + + 'rightleftcmd' ('rlc') makes the command-prompt for searches show up on + the right side. It only takes effect if the window is 'rightleft'. + ++ Encoding: + + Under Unix, ISO 8859-8 encoding (Hebrew letters codes: 224-250). + + Under MS DOS, PC encoding (Hebrew letters codes: 128-154). + These are defaults, that can be overridden using the 'aleph' option. + + You should prefer using UTF8, as it supports the combining-characters + ('deco' does nothing if UTF8 encoding is not active). + ++ Vim arguments: + + 'vim -H file' starts editing a Hebrew file, i.e. 'rightleft' and 'hkmap' + are set. + ++ Keyboard: + + The 'allowrevins' option enables the CTRL-_ command in Insert mode and + in Command-line mode. + + + CTRL-_ in insert/replace modes toggles 'revins' and 'hkmap' as follows: + + When in rightleft window, 'revins' and 'nohkmap' are toggled, since + English will likely be inserted in this case. + + When in norightleft window, 'revins' 'hkmap' are toggled, since Hebrew + will likely be inserted in this case. + + CTRL-_ moves the cursor to the end of the typed text. + + + CTRL-_ in command mode only toggles keyboard mapping (see Bugs below). + This setting is independent of 'hkmap' option, which only applies to + insert/replace mode. + + Note: On some keyboards, CTRL-_ is mapped to CTRL-?. + + + Keyboard mapping while 'hkmap' is set (standard Israeli keyboard): + + q w e r t y u i o p + / ' ק ר א ט ו ן ם פ + + a s d f g h j k l ; ' + ש ד ג כ ע י ח ל ך ף , + + z x c v b n m , . / + ז ס ב ה נ מ צ ת ץ . + + This is also the keymap when 'keymap=hebrew' is set. The advantage of + 'keymap' is that it works properly when using UTF8, e.g. it inserts the + correct characters; 'hkmap' does not. The 'keymap' keyboard can also + insert niqud and te`amim. To see what those mappings are,look at the + keymap file 'hebrew.vim' etc. + + +Typing backwards + +If the 'revins' (reverse insert) option is set, inserting happens backwards. +This can be used to type Hebrew. When inserting characters the cursor is not +moved and the text moves rightwards. A <BS> deletes the character under the +cursor. CTRL-W and CTRL-U also work in the opposite direction. <BS>, CTRL-W +and CTRL-U do not stop at the start of insert or end of line, no matter how +the 'backspace' option is set. + +There is no reverse replace mode (yet). + +If the 'showmode' option is set, "-- REVERSE INSERT --" will be shown in the +status line when reverse Insert mode is active. + +When the 'allowrevins' option is set, reverse Insert mode can be also entered +via CTRL-_, which has some extra functionality: First, keyboard mapping is +changed according to the window orientation -- if in a left-to-right window, +'revins' is used to enter Hebrew text, so the keyboard changes to Hebrew +('hkmap' is set); if in a right-to-left window, 'revins' is used to enter +English text, so the keyboard changes to English ('hkmap' is reset). Second, +when exiting 'revins' via CTRL-_, the cursor moves to the end of the typed +text (if possible). + + +Pasting when in a rightleft window +---------------------------------- +When cutting text with the mouse and pasting it in a rightleft window +the text will be reversed, because the characters come from the cut buffer +from the left to the right, while inserted in the file from the right to +the left. In order to avoid it, toggle 'revins' (by typing CTRL-? or CTRL-_) +before pasting. + + +Hebrew characters and the 'isprint' variable +-------------------------------------------- +Sometimes Hebrew character codes are in the non-printable range defined by +the 'isprint' variable. For example in the Linux console, the Hebrew font +encoding starts from 128, while the default 'isprint' variable is @,161-255. +The result is that all Hebrew characters are displayed as ~x. To solve this +problem, set isprint=@,128-255. + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/help.jax b/ja/help.jax index d7f28fe6f..817842e7f 100644 --- a/ja/help.jax +++ b/ja/help.jax @@ -1,5 +1,5 @@ COMMENT: リファレンスマニュアル目次 -STATUS: suspend +STATUS: suspend 6.3 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> diff --git a/ja/insert.jax b/ja/insert.jax index d2ed5c75a..985fa4d19 100644 --- a/ja/insert.jax +++ b/ja/insert.jax @@ -7,7 +7,6 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> VIMリファレンスマニュアル by Bram Moolenaar - (訳 村岡太郎<koron@tka.att.ne.jp>) *Insert* *Insert-mode* diff --git a/ja/netbeans.jax b/ja/netbeans.jax new file mode 100644 index 000000000..2eae70680 --- /dev/null +++ b/ja/netbeans.jax @@ -0,0 +1,739 @@ +COMMENT: NetBeansの外部エディタ統合機能 +STATUS: suspend 6.3.054 +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*netbeans.txt* For Vim version 6.3. Last change: 2004 May 01 + + + VIM REFERENCE MANUAL by Gordon Prieur + + +NetBeans ExternalEditor Integration Features *netbeans* + *netbeans-support* +1. Introduction |netbeans-intro| +2. NetBeans Key Bindings |netbeans-keybindings| +3. Configuring Vim for NetBeans |netbeans-configure| +4. Downloading NetBeans |netbeans-download| +5. Preparing NetBeans for Vim |netbeans-preparation| +6. Obtaining the External Editor Module |obtaining-exted| +7. Setting up NetBeans to run with Vim |netbeans-setup| +8. Messages |netbeans-messages| +9. Running Vim from NetBeans |netbeans-run| +10. NetBeans protocol |netbeans-protocol| +11. Known problems |netbeans-problems| + +{Vi does not have any of these features} +{only available when compiled with the |+netbeans_intg| feature} + +============================================================================== +1. Introduction *netbeans-intro* + +NetBeans is an open source Integrated Development Environment developed +jointly by Sun Microsystems, Inc. and the netbeans.org developer community. +Initially just a Java IDE, NetBeans has had C, C++, and Fortran support added +in recent releases. + +For more information visit the main NetBeans web site http://www.netbeans.org +or the NetBeans External Editor site at http://externaleditor.netbeans.org. + +Sun Microsystems, Inc. also ships NetBeans under the name Sun ONE Studio. +Visit http://www.sun.com for more information regarding the Sun ONE Studio +product line. + +Current releases of NetBeans provide full support for Java and limited support +for C, C++, and Fortran. Current releases of Sun ONE Studio provide full +support for Java, C, C++, and Fortran. + +The interface to NetBeans is also supported by Agide, the A-A-P GUI IDE. +Agide is very different from NetBeans: +- Based on Python instead of Java, much smaller footprint and fast startup. +- Agide is a framework in which many different tools can work together. +See the A-A-P website for information: http://www.A-A-P.org. + +============================================================================== +2. NetBeans Key Bindings *netbeans-keybindings* + +Vim understands a number of key bindings that execute NetBeans commands. These +are typically all the Function key combinations. To execute a NetBeans command, +the user must press the Pause key followed by a NetBeans key binding. For +example, in order to compile a Java file, the NetBeans key binding is "F9". So, +while in vim, press "Pause F9" to compile a java file. To toggle a breakpoint +at the current line, press "Pause Shift F8". + +The Pause key is Function key 21. If you don't have a working Pause key and +want to use F8 instead, use: > + + :map <F8> <F21> + +The External Editor module dynamically reads the NetBeans key bindings so vim +should always have the latest key bindings, even when NetBeans changes them. + +============================================================================== +3. Configuring Vim for NetBeans *netbeans-configure* + +For more help installing vim, please read |usr_90.txt| in the Vim User Manual. + + +On Unix + +When running configure without arguments the NetBeans interface should be +included. That is, if the configure check to find out if your system supports +the required features succeeds. + +In case you do not want the NetBeans interface you can disable it by +uncommenting a line with "--disable-netbeans" in the Makefile. + +Currently, only gvim is supported in this integration as NetBeans does not +have means to supply a terminal emulator for the vim command. Furthermore, +there is only GUI support for GTK, GNOME, and Motif. + +If Motif support is required the user must supply XPM libraries. See +|workshop-xpm| for details on obtaining the latest version of XPM. + + +On MS-Windows + +The Win32 support is now in beta stage. + +To use XPM signs on Win32 (e.g. when using with NetBeans) you can compile +XPM by yourself or use precompiled libraries from http://iamphet.nm.ru/misc/ +(for MS Visual C++) or http://gnuwin32.sourceforge.net (for MinGW). + +============================================================================== +4. Downloading NetBeans *netbeans-download* + +The NetBeans IDE is available for download from netbeans.org. You can download +a released version, download sources, or use CVS to download the current +source tree. If you choose to download sources, follow directions from +netbeans.org on building NetBeans. + +Depending on the version of NetBeans you download, you may need to do further +work to get the required External Editor module. This is the module which lets +NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org +for details on downloading this module if your NetBeans release does not have +it. + +For C, C++, and Fortran support you will also need the cpp module. See +http://cpp.netbeans.org for information regarding this module. + +You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day +free trial. See http://www.sun.com for further details. + +============================================================================== +5. Preparing NetBeans for Vim *netbeans-preparation* + +In order for NetBeans to work with vim, the NetBeans External Editor module +must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition +then this module should be loaded and enabled. If you have a NetBeans release +you may need to find another way of obtaining this open source module. + +You can check if you have this module by opening the Tools->Options dialog +and drilling down to the "Modules" list (IDE Configuration->System->Modules). +If your Modules list has an entry for "External Editor" you must make sure +it is enabled (the "Enabled" property should have the value "True"). If your +Modules list has no External Editor see the next section on |obtaining-exted|. + +============================================================================== +6. Obtaining the External Editor Module *obtaining-exted* + +There are 2 ways of obtaining the External Editor module. The easiest way +is to use the NetBeans Update Center to download and install the module. +Unfortunately, some versions do not have this module in their update +center. If you cannot download via the update center you will need to +download sources and build the module. I will try and get the module +available from the NetBeans Update Center so building will be unnecessary. +Also check http://externaleditor.netbeans.org for other availability options. + +To download the External Editor sources via CVS and build your own module, +see http://externaleditor.netbeans.org and http://www.netbeans.org. +Unfortunately, this is not a trivial procedure. + +============================================================================== +7. Setting up NetBeans to run with Vim *netbeans-setup* + +Assuming you have loaded and enabled the NetBeans External Editor module +as described in |netbeans-preparation| all you need to do is verify that +the gvim command line is properly configured for your environment. + +Open the Tools->Options dialog and open the Editing category. Select the +External Editor. The right hand pane should contain a Properties tab and +an Expert tab. In the Properties tab make sure the "Editor Type" is set +to "Vim". In the Expert tab make sure the "Vim Command" is correct. + +You should be careful if you change the "Vim Command". There are command +line options there which must be there for the connection to be properly +set up. You can change the command name but thats about it. If your gvim +can be found by your $PATH then the VIM Command can start with "gvim". If +you don't want gvim searched from your $PATH then hard code in the full +Unix path name. At this point you should get a gvim for any source file +you open in NetBeans. + +If some files come up in gvim and others (with different file suffixes) come +up in the default NetBeans editor you should verify the MIME type in the +Expert tab MIME Type property. NetBeans is MIME oriented and the External +Editor will only open MIME types specified in this property. + +============================================================================== +8. Messages *netbeans-messages* + +These messages are specific for NetBeans: + + *E463* +Region is guarded, cannot modify + NetBeans defines guarded areas in the text, which you cannot + change. + + *E656* +NetBeans dissallows writes of unmodified buffers + NetBeans does not support writes of unmodified buffers that + were opened from NetBeans. + + *E657* +Partial writes disallowed for NetBeans buffers + NetBeans does not support partial writes for buffers that were + opened from NetBeans. + + *E658* +NetBeans connection lost for this buffer + NetBeans has become confused about the state of this file. + Rather than risc data corruption, NetBeans has severed the + connection for this file. Vim will take over responsibility + for saving changes to this file and NetBeans will no longer + know of these changes. + +============================================================================== +9. Running Vim from NetBeans *netbeans-run* + +NetBeans starts Vim with the |-nb| argument. Three forms can be used, that +differ in the way the information for the connection is specified: + + -nb={fname} from a file + -nb:{hostname}:{addr}:{password} directly + -nb from a file or environment + + *E660* *E668* +For security reasons, the best method is to write the information in a file +readable only by the user. The name of the file can be passed with the +"-nb={fname}" argument or, when "-nb" is used without a parameter, the +environment variable "__NETBEANS_CONINFO". The file must contain these three +lines, in any order: + + host={hostname} + port={addr} + auth={password} + +Other lines are ignored. The caller of Vim is responsible for deleting the +file afterwards. + +{hostname} is the name of the machine where NetBeans is running. When omitted +the environment variable "__NETBEANS_HOST" is used or the default "localhost". + +{addr} is the port number for NetBeans. When omitted the environment variable +"__NETBEANS_SOCKET" is used or the default 3219. + +{password} is the password for connecting to NetBeans. When omitted the +environment variable "__NETBEANS_VIM_PASSWORD" is used or "changeme". + +============================================================================== +10. NetBeans protocol *netbeans-protocol* + +The communication between NetBeans and Vim uses plain text messages. This +protocol was first designed to work with the external editor module of +NetBeans (see http://externaleditor.netbeans.org). Later it was extended to +work with Agide (A-A-P GUI IDE, see http://www.a-a-p.org). The extensions are +marked with "version 2.1". + +Version 2.2 of the protocol has several minor changes which should only +affect NetBeans users (ie, not Agide users). However, a bug was fixed which +could cause confusion. The netbeans_saved() function sent a "save" protocol +command. In protocol version 2.1 and earlier this was incorrectly interpreted +as a notification that a write had taken place. In reality, it told NetBeans +to save the file so multiple writes were being done. This caused various +problems and has been fixed in 2.2. To decrease the likelyhood of this +confusion happening again, netbeans_saved() has been renamed to +netbeans_save_buffer(). + +The messages are currently sent over a socket. Since the messages are in +plain UTF-8 text this protocol could also be used with any other communication +mechanism. + +10.1 Kinds of messages |nb-messages| +10.2 Terms |nb-terms| +10.3 Commands |nb-commands| +10.4 Functions and Replies |nb-functions| +10.5 Events |nb-events| +10.6 Special messages |nb-special| + +*E627* *E628* *E629* *E630* *E631* *E632* *E633* *E634* *E635* *E636* +*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646* +*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654* +These errors occur when a message violates the protocol. + + +10.1 Kinds of messages *nb-messages* + +There are four kinds of messages: + +kind direction comment ~ +Command IDE -> editor no reply necessary +Function IDE -> editor editor must send back a reply +Reply editor -> IDE only in response to a Function +Event editor -> IDE no reply necessary + +The messages are sent as a single line with a terminating newline character. +Arguments are separated by a single space. The first item of the message +depends on the kind of message: + +kind first item example ~ +Command bufID:name!seqno 11:showBalloon!123 "text" +Function bufID:name/seqno 11:getLength/123 +Reply seqno 123 5000 +Event bufID:name=123 11:keyCommand=123 "S-F2" + + +10.2 Terms *nb-terms* + +bufID Buffer number. A message may be either for a specific buffer + or generic. Generic messages use a bufID of zero. NOTE: this + buffer ID is assigned by the IDE, it is not Vim's buffer + number. The bufID must be a sequentially rising number, + starting at one. + +seqno The IDE uses a sequence number for Commands and Functions. A + Reply must use the sequence number of the Function that it is + associated with. A zero sequence number can be used for + Events (the seqno of the last received Command or Function can + also be used). + +string Argument in double quotes. Text is in UTF-8 encoding. This + means ASCII is passed as-is. Special characters are + represented with a backslash: + \" double quote + \n newline + \r carriage-return + \t tab (optional, also works literally) + \\ backslash + NUL bytes are not allowed! + +boolean Argument with two possible values: + T true + F false + +number Argument with a decimal number. + +optnum Argument with either a decimal number or "none" (without the + quotes). + +offset A number argument that indicates a byte position in a buffer. + The first byte has offset zero. Line breaks are counted for + how they appear in the file (CR/LF counts for two bytes). + Note that a multi-byte character is counted for the number of + bytes it takes. + +lnum/col Argument with a line number and column number position. The + line number starts with one, the column is the byte position, + starting with zero. Note that a multi-byte character counts + for several columns. + +pathname String argument: file name with full path. + + +10.3 Commands *nb-commands* + +actionMenuItem Not implemented. + +actionSensitivity + Not implemented. + +addAnno serNum typeNum off len + Place an annotation in this buffer. + Arguments: + serNum number serial number of this placed + annotation, used to be able to remove + it + typeNum number sequence number of the annotation + defined with defineAnnoType for this + buffer + off number offset where annotation is to be placed + len number not used + In version 2.1 "lnum/col" can be used instead of "off". + +balloonResult text + Not implemented. + +close Close the buffer. This leaves us without current buffer, very + dangerous to use! + +create Creates a buffer without a name. Replaces the current buffer + (it's hidden when it was changed). + NetBeans uses this as the first command for a file that is + being opened. The sequence of commands could be: + create + setCaretListener (ignored) + setModified (no effect) + setContentType (ignored) + startDocumentListen + setTitle + setFullName + +defineAnnoType typeNum typeName tooltip glyphFile fg bg + Define a type of annotation for this buffer. + Arguments: + typeNum number sequence number (not really used) + typeName string name that identifies this annotation + tooltip string not used + glyphFile string name of icon file + fg optnum foreground color for line highlighting + bg optnum background color for line highlighting + Vim will define a sign for the annotation. + When both "fg" and "bg" are "none" no line highlighting is + used (new in version 2.1). + When "glyphFile" is empty, no text sign is used (new in + version 2.1). + When "glyphFile" is one or two characters long, a text sign is + defined (new in version 2.1). + Note: the annotations will be defined in sequence, and the + sequence number is later used with addAnno. + +editFile pathname + Set the name for the buffer and edit the file "pathname", a + string argument. + Normal way for the IDE to tell the editor to edit a file. If + the IDE is going to pass the file text to the editor use these + commands instead: + setFullName + insert + initDone + New in version 2.1. + +enableBalloonEval + Not implemented. + +endAtomic End an atomic operation. The changes between "startAtomic" + and "endAtomic" can be undone as one operation. But it's not + implemented yet. Redraw when necessary. + +guard off len + Mark an area in the buffer as guarded. This means it cannot + be edited. "off" and "len" are numbers and specify the text + to be guarded. + +initDone Mark the buffer as ready for use. Implicitly makes the buffer + the current buffer. Fires the BufReadPost autocommand event. + +moveAnnoToFront serNum + Not implemented. + +netbeansBuffer isNetbeansBuffer + If "isNetbeansBuffer" is "T" then this buffer is ``owned'' by + NetBeans. + New in version 2.2. + +putBufferNumber pathname + Associate a buffer number with the Vim buffer by the name + "pathname", a string argument. To be used when the editor + reported editing another file to the IDE and the IDE needs to + tell the editor what buffer number it will use for this file. + Also marks the buffer as initialized. + New in version 2.1. + +raise Bring the editor to the foreground. + New in version 2.1. + +removeAnno serNum + Remove a previously place annotation for this buffer. + "serNum" is the same number used in addAnno. + +save Save the buffer when it was modified. The other side of the + interface is expected to write the buffer and invoke + "setModified" to reset the "changed" flag of the buffer. + The writing is skipped when one of these conditions is true: + - 'write' is not set + - the buffer is read-only + - the buffer does not have a file name + - 'buftype' disallows writing + New in version 2.2. + +setAsUser Not implemented. + +setBufferNumber pathname + Associate a buffer number with Vim buffer by the name + "pathname". To be used when the editor reported editing + another file to the IDE and the IDE needs to tell the editor + what buffer number it will use for this file. + Has the side effect of making the buffer the current buffer. + See "putBufferNumber" for a more useful command. + +setContentType + Not implemented. + +setDot off Make the buffer the current buffer and set the cursor at the + specified position. If there are folds they are opened to + make the cursor line visible. + In version 2.1 "lnum/col" can be used instead of "off". + +setExitDelay seconds + Set the delay for exiting to "seconds", a number. + This delay is used to give the IDE a chance to handle things + before really exiting. The default delay is two seconds. + New in version 2.1. + +setFullName pathname + Set the file name to be used for a buffer to "pathname", a + string argument. + Used when the IDE wants to edit a file under control of the + IDE. This makes the buffer the current buffer, but does not + read the file. "insert" commands will be used next to set the + contents. + +setLocAndSize Not implemented. + +setMark Not implemented. + +setModified modified + When the boolean argument "modified" is "T" mark the buffer as + modified, when it is "F" mark it as unmodified. + +setReadOnly Not implemented. + +setStyle Not implemented. + +setTitle name + Set the title for the buffer to "name", a string argument. + The title is only used for NetBeans functions, not by Vim. + +setVisible visible + When the boolean argument "visible" is "T", goto the buffer. + The "F" argument does nothing. + +showBalloon text + Show a balloon (popup window) at the mouse pointer position, + containing "text", a string argument. The balloon should + disappear when the mouse is moved more than a few pixels. + New in version 2.1. + +specialKeys Not implemented. + +startAtomic Begin an atomic operation. The screen will not be updated + until "endAtomic" is given. + +startCaretListen + Not implemented. + +startDocumentListen + Mark the buffer to report changes to the IDE with the + "insert" and "remove" events. The default is to report + changes. + +stopCaretListen + Not implemented. + +stopDocumentListen + Mark the buffer to stop reporting changes to the IDE. + Opposite of startDocumentListen. + +unguard off len + Opposite of "guard", remove guarding for a text area. + +version Not implemented. + + +10.4 Functions and Replies *nb-functions* + +getDot Not implemented. + +getCursor Return the current buffer and cursor position. + The reply is: + seqno bufID lnum col off + seqno = sequence number of the function + bufID = buffer ID of the current buffer (if this is unknown -1 + is used) + lnum = line number of the cursor (first line is one) + col = column number of the cursor (in bytes, zero based) + off = offset of the cursor in the buffer (in bytes) + New in version 2.1. + +getLength Return the length of the buffer in bytes. + Reply example for a buffer with 5000 bytes: + 123 5000 + TODO: explain use of partial line. + +getMark Not implemented. + +getModified When a buffer is specified: Return zero if the buffer does not + have changes, one if it does have changes. + When no buffer is specified (buffer number zero): Return the + number of buffers with changes. When the result is zero it's + safe to tell Vim to exit. + New in version 2.1. + +getText Return the contents of the buffer as a string. + Reply example for a buffer with two lines + 123 "first line\nsecond line\n" + NOTE: docs indicate an offset and length argument, but this is + not implemented. + +insert off text + Insert "text" before position "off". "text" is a string + argument, "off" a number. + Possible replies: + 123 no problem + 123 !message failed + Note that the message in the reply is not quoted. + +remove off length + Delete "length" bytes of text at position "off". Both + arguments are numbers. + Possible replies: + 123 no problem + 123 !message failed + Note that the message in the reply is not quoted. + +saveAndExit Perform the equivalent of closing Vim: ":confirm qall". + If there are no changed files or the user does not cancel the + operation Vim exits and no result is sent back. The IDE can + consider closing the connection as a successful result. + If the user cancels the operation the number of modified + buffers that remains is returned and Vim does not exit. + New in version 2.1. + + +10.5 Events *nb-events* + +balloonEval off len type + The mouse pointer rests on text for a short while. When "len" + is zero, there is no selection and the pointer is at position + "off". When "len" is non-zero the text from position "off" to + "off" + "len" is selected. + Only sent after "enableBalloonEval" was used for this buffer. + "type" is not yet defined. + Not implemented yet. + +balloonText text + Used when 'ballooneval' is set and the mouse pointer rests on + some text for a moment. "text" is a string, the text under + the mouse pointer. + New in version 2.1. + +buttonRelease button lnum col + Report which button was pressed and the location of the cursor + at the time of the release. Only for buffers that are owned + by NetBeans. This event is not sent if the button was + released while the mouse was in the status line or in a + separator line. If col is less than 1 the button release was + in the sign area. + New in version 2.2. + +fileClosed Not implemented. + +fileModified Not implemented. + +fileOpened pathname open modified + A file was opened by the user. + Arguments: + pathname string name of the file + open boolean always "T" + modified boolean always "F" + +geometry cols rows x y + Report the size and position of the editor window. + Arguments: + cols number number of text columns + rows number number of text rows + x number pixel position on screen + y number pixel position on screen + Only works for Motif. + +insert off text + Text "text" has been inserted in Vim at position "off". + Only fired when enabled, see "startDocumentListen". + +invokeAction Not implemented. + +keyCommand keyName + Reports a special key being pressed with name "keyName", which + is a string. + Supported key names: + F1 function key 1 + F2 function key 2 + ... + F12 function key 12 + + ' ' space (without the quotes) + ! exclamation mark + ... any other ASCII printable character + ~ tilde + + X any unrecognized key + + The key may be prepended by "C", "S" and/or "M" for Control, + Shift and Meta (Alt) modifiers. If there is a modifier a dash + is used to separate it from the key name. For example: + "C-F2". + ASCII characters are new in version 2.1. + +keyAtPos keyName lnum/col + Like "keyCommand" and also report the line number and column + of the cursor. + New in version 2.1. + +killed A file was closed by the user. Only for files that have been + assigned a number by the IDE. + +newDotAndMark off off + Reports the position of the cursor being at "off" bytes into + the buffer. Only sent just before a "keyCommand" event. + +quit Not implemented. + +remove off len + Text was deleted in Vim at position "off" with byte length + "len". + Only fired when enabled, see "startDocumentListen". + +revert Not implemented. + +save The buffer has been saved and is now unmodified. + Only fired when enabled, see "startDocumentListen". + +startupDone The editor has finished its startup work and is ready for + editing files. + New in version 2.1. + +unmodified The buffer is now unmodified. + Only fired when enabled, see "startDocumentListen". + +version vers Report the version of the interface implementation. Vim + reports "2.2" (including the quotes). + + +10.6 Special messages *nb-special* + +These messages do not follow the style of the messages above. They are +terminated by a newline character. + +ACCEPT Not used. + +AUTH password editor -> IDE: First message that the editor sends to the IDE. + Must contain the password for the socket server, as specified + with the |-nb| argument. No quotes are used! + +DISCONNECT IDE -> editor: break the connection. The editor will exit. + The IDE must only send this message when there are no unsaved + changes! + +DETACH IDE -> editor: break the connection without exiting the + editor. Used when the IDE exits without bringing down the + editor as well. + New in version 2.1. + +REJECT Not used. + +============================================================================== +11. Known problems *netbeans-problems* + +NUL bytes are not possible. For editor -> IDE they will appear as NL +characters. For IDE -> editor they cannot be inserted. + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/options.jax b/ja/options.jax new file mode 100644 index 000000000..6d83892f5 --- /dev/null +++ b/ja/options.jax @@ -0,0 +1,6450 @@ +COMMENT: 全オプション解説 +STATUS: finished 6.1 +TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> + +*options.txt* For Vim version 6.1. Last change: 2002 Apr 09 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +オプション *options* + +1. オプションの設定 |set-option| +2. オプションの自動設定 |auto-setting| +3. オプションの要約 |option-summary| + +オプションの概要については、help.txt |option-list| を参照すること。 + +Vimには、特別な働きをさせるための多くの内部変数とスイッチがある。それらのオプ +ションには3種類ある。 + 切替オプション boolean オンかオフかのどちらかの値をとる + 数値オプション number 数値の値を取る + 文字列オプション string 文字列の値を取る + +(訳注: このヘルプの中で多く出てくる語句で、分かりにくいものを説明する。 + +*ローカルな: + あるバッファまたはウィンドウにのみ適用されるような、という意味。 +*ローカルオプション: + あるバッファまたはウィンドウ内の設定のみを変え、その他のバッファまたは + ウィンドウの設定に影響しないようなオプション。 +*ウィンドウについてローカルな: + あるウィンドウにのみ適用されるような、という意味。バッファについてロー + カルな、も同様な意味を持つ。 +*グローバルな: + Vim全体に適用されるような、または、Vim全体で共通の値を使うような、とい + う意味。 +上の4項目については |option-summary| も参照。 +*バックスラッシュ: + 日本語Windozeで使われる文字のうち、いわゆる半角文字または英数字では、 + バックスラッシュ\ (左は実は全角バックスラッシュ。これではだめ) の代わ + りに円記号\が使われる。 + +訳語で、さらに相応しいものがあればご提案を下さい。) +============================================================================== +1. オプションの設定 *set-option* + + *:se* *:set* +:se[t] 既定値と違う設定のオプションを全て表示する。 + +:se[t] all ターミナルのオプション以外の全てのオプションを表示する。 + +:se[t] termcap ターミナルのオプションを全て表示する。Note GUIバージョ + ンでは、キーコードは表示されないので注意すること。なぜ + なら、キーコードは内部的に生成され、変更が不可能だから + だ。それに、GUIバージョンでターミナルコードを変更する + のは便利とは言えない... + +:se[t] {option}? {option} の値を表示する。 + +:se[t] {option} 切替オプション: セット、すなわちオンに切り替える。 + 数値オプション: 値を表示する。 + 文字列オプション: 値を表示する。 + +:se[t] no{option} 切替オプション: リセット、すなわちオフに切り替える。 + +:se[t] {option}! または +:se[t] inv{option} 切替オプション: オンとオフを切り替える。 {Vi にはない} + + *:set-default* *:set-&* *:set-&vi* *:set-&vim* +:se[t] {option}& オプションを既定の値に設定する。オプションによっては、 + オプション 'compatible' の値に影響を受けるかもしれない。 + {Vi にはない} +:se[t] {option}&vi オプションをViでの既定値に設定する。 + {Vi にはない} +:se[t] {option}&vim オプションをVimでの既定値に設定する。 + {Vi にはない} + +:se[t] all& ターミナルのオプション以外の全てのオプションを既定の値 + に設定する。オプション 'term', 'lines' と 'columns' の + 値は変更されない。 {Vi にはない} + +:se[t] {option}={value} または +:se[t] {option}:{value} + 数値および文字列オプションの値を {value} に設定する。 + *:set-args* + 数値オプションの値は、10進数、(0x を頭に付けて) 16進数、 + または ('0' を頭に付けて) 8進数で指定できる (16進数と8 + 進数は、strtol() 関数を持つマシンでのみ利用可能)。 + オプション 'wildchar' に指定された文字 ('compatible' が + オンになっているなら、既定では <Tab> か CTRL-E である) + を打ち込むと、古い値を挿入できる。|cmdline-completion| + を参照。 + {option} と '=' の間には空白を入れることができる。それ + らは無視される。'=' と {value} の間に空白を入れてはい + けない。{value} 内での空白やバックスラッシュの使用に関 + しては、 |option-backslash| を参照すること。 + +:se[t] {option}+={value} *:set+=* + 数値オプションに対しては {value} だけその値を増す。文 + 字列オプションに対しては後ろに {value} を追加する。オ + プションがコンマ区切りのリストであるときは、値が空でな + い限りコンマが前に付け加えられる。オプションがフラグの + リストであるときは、冗長で無駄なフラグは取り除かれる。 + そうでないときは、重複した値に関してチェックはなされな + い。それを防ぐためには、先に値を取り除いてからこのコマ + ンドを使えばよい。 + 例: > + :set guioptions-=T guioptions+=T +< 上の |:set-args| も参照すること。 + {Vi にはない} + +:se[t] {option}^={value} *:set^=* + 数値オプションに対してはその値を {value} 倍する。文字 + 列オプションに対しては前に {value} を追加する。オプショ + ンがコンマ区切りのリストであるときは、値が空でない限り + コンマが付け加えられる。 + 上の |:set-args| も参照すること。 + {Vi にはない} + +:se[t] {option}-={value} *:set-=* + 数値オプションに対しては {value} だけその値を減らす。 + 文字列オプションに対しては {value} の値を (それが含ま + れていたら) 取り除く。そのとき {value} が含まれていな + くても、警告やエラーは現れない。オプションがコンマ区切 + りのリストであり、取り除くオプションが唯一の値でない限 + り、コンマも削除される。オプションがフラグのリストであ + るときは、{value} は正確に指定しなければならない。問題 + が起こるのを避けるために、フラグを取り除くときは1個ず + つ指定すること。 + 上の |:set-args| も参照すること。 + {Vi にはない} + +1回のコマンド ":set" に対し、複数の {option} を引数に指定できる。例: > + :set ai nosi sw=3 ts=3 +引数の中にエラーがあると、エラーメッセージが現れ、エラーの元になったオプション +以降は無視される。 + + *:set-verbose* +オプション 'verbose' が 0 でないなら、オプションの値を表示する際、同時に、その +値が最後に設定されたのはどこであったかも分かる。例: > + :verbose set shiftwidth cindent? + shiftwidth=4 + Last set from modeline + cindent + Last set from /usr/local/share/vim/vim60/ftplugin/c.vim +これは特定のオプション名が指定されたときのみ機能する。コマンド ":set all" や、 +引数のないコマンド ":set" ではメッセージが現れない。 +オプションが手動で設定されていると、"Last set" メッセージは現れない。ある名前 +のローカルオプションが2通りの値を持つことはあり得ないので、メッセージはオプショ +ン名を表示しても、必ずしもその値までは表示しない。 +オプションが関数やユーザコマンド、オートコマンドautocommandの実行中に設定され +たときは、それらが定義されているスクリプト名が報告される。 +{Vi mが +eval 機能付きでコンパイルされたときのみ使用可能} + + *:set-termcap* +Termcapオプションを設定するには、{option} に "t_xx" の形式を使ってもよい。これ +は termcap によるオプションを上書きする。これはキーマッピングの中で利用するこ +ともできる。"xx" の部分が特別な文字を含むときは、<t_xx> の形式を使うこと: > + :set <t_#4>=^[Ot +これは、特殊なコードを普通のキーに変換する際にも使われる。例えば、Alt-b で +<Esc>b を入力するには、次の設定を使うこと: > + :set <M-b>=^[b +(ここで ^[ は本物の <Esc> である。それを入力するには、CTRL-V <Esc> を使うこと) +(the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it) +キーマッピングの利点は、どんなときにも機能することである。 + +コマンド ":set" によるリスト表示は、Viとは見かけが違う。長い文字列オプションは +リストの終わりに現れる。オプションの数も極めて多い。コマンド "set all" による表 +示は、スクリーンに収まらないだろう。そうしたとき、Vimは「継続」プロンプト +|more-prompt| を出す。 + + *option-backslash* +文字列オプションの値に空白を含めるには、バックスラッシュ (訳注: ファイルの頭を +参照) を空白の前に置く必要がある。値にバックスラッシュそのものを含めるには、バッ +クスラッシュを2個繰り返す。結果的には、オプションの値の中のバックスラッシュの +数は半分になる (端数は切り捨て)。 +例をいくつか挙げる: > + :set tags=tags\ /usr/tags の結果は "tags /usr/tags" + :set tags=tags\\,file の結果は "tags\,file" + :set tags=tags\\\ file の結果は "tags\ file" + +コマンド "|" という文字により ":set" を、後に続くコマンドと分けることができる。 +文字列オプションの値に "|" を含めるには、代わりに "\|" を用いること。次の例で +はオプション 'titlestring' の値を "hi|there" に設定している: > + :set titlestring=hi\|there +しかし次の例では、それぞれオプション 'titlestring' を "hi" に、'iconstring' オ +プションを "there" に設定している: > + :set titlestring=hi|set iconstring=there + +MS-DOSとWIN32では、ファイル名の中のバックスラッシュはほとんど取り除かれない。 +正確に言うと、ファイル名を取るオプション (環境変数が展開されるもの) では、通常 +のファイル名に使われる文字の前のバックスラッシュは取り除かれない。しかし、特別 +な文字 (空白、バックスラッシュそのもの、コンマなど) の前のバックスラッシュは、 +上で説明した通りの働きをする。 +オプションの値が "\\" で始まるときは、上とはまた違う特別な状態になる: > + :set dir=\\machine\path の結果は "\\machine\path" + :set dir=\\\\machine\\path の結果は "\\machine\path" + :set dir=\\path\\file の結果は "\\path\file" (間違い!) +最初の例では、始まりの部分のバックスラッシュはそのまま保たれている。しかし2番 +目の例では、バックスラッシュの数は半分になっている。つまり、バックスラッシュを +そのまま保ちたいときでも、半分にしたいときでも、どちらがよいか指定できることが +分かる。3番目の結果は、おそらく希望通りのものではないだろう。このやり方は避け +ること。 + + *add-option-flags* *remove-option-flags* +値がフラグのリストからなるオプションもある。そういったオプションにフラグを追加 +したいとき、既存の値を変更したくないならば、こうすること: > + :set guioptions+=a +オプションからフラグを取り除くには、こうすること: > + :set guioptions-=a +これはオプション 'guioptions' から 'a' フラグを取り除く。 +Note フラグを追加したり取り除いたりする際には、1個ずつ指定するよう注意すること。 +'guioptions' が "ab" という値であるとき、"set guioptions-=ba" は機能しない。な +ぜなら、"ba" という文字列は現れていないからである。 + + *:set_env* *expand-env* *expand-environment-var* +ほとんどの文字列オプションで、環境変数は展開される。'$' とそれに続く環境変数名 +が、その値に置き換えられる (その環境変数が存在するとき)。環境変数が存在しない +とき、'$' とそれに続く変数名は変更を受けない。識別子に使えない文字 non-id +character (英字、数字、'_' 以外) なら、どれでも環境変数名の後に続けることがで +きる。識別子に使えない文字とそれに続く文字は、環境変数の値の後ろにそのまま追加 +される。例: > + :set term=$TERM.new + :set path=/usr/$INCLUDE,$HOME/include,. +コマンド ":set opt-=" でオプションから文字列を取り除いたり、":set opt+=val" コ +マンドでオプションに文字列を追加したりするときには、環境変数の展開が行われてか +らそうした操作がなされる。 + + +ローカル変数の扱い *local-options* + +いくつかのオプションは、1つのウィンドウや1つのバッファのみに適用される。それぞ +れのウィンドウやバッファは、そうしたオプションの独自のコピーを保持しているため、 +その中に独自の値を持つことができる。これにより、あるウィンドウ内では 'list' オ +プションを設定するが、他のウィンドウでは設定しない、というようなことが可能にな +る。またオプション 'shiftwidth' を、あるバッファ内では 3 に設定し、他では 4 に +設定することもできる。 + +以降では、特定の状況下でそれらのローカル変数がどうなるかを説明する。実際には、 +それらを全て知る必要はない。なぜなら、Vimはおそらくユーザが予想する通りにオプ +ションの値を使うからである。残念ながら、ユーザの予想通りに働くのは、いくらか複 +雑なことである... + +ウィンドウを分割すると、ローカルオプションは新しいウィンドウにコピーされて引き +継がれる。そのため、ウィンドウを分割した直後には、2つのウィンドウの内容は同じ +である。 + +新しいバッファを編集するとき、そのバッファのローカルオプションは初期化されなけ +ればならない。その以前のカレントバッファのローカルオプションは、そのバッファの +みに適用すべきものかもしれないので、新しいバッファには適用されない。その代わり、 +バッファについてのローカルオプションはそれぞれグローバルな値を持っていて、それ +は新しいバッファに適用される。コマンド ":set" によって、ローカルな値とグローバ +ルな値の両方が変更される。コマンド "setlocal" はローカルな値のみを変更するので、 +それで指定した値は新しいバッファには適用されない。 + +すでに編集されたバッファを編集するときは、最後に使われたウィンドウ内のローカル +オプションが再び使われる。このバッファがこのウィンドウ内ですでに編集されていた +なら、そのときの値が再び用いられる。そうでなければ、そのバッファが最後に編集さ +れたウィンドウ内の値が用いられる。 + +特定のバッファの種類についてウィンドウ内のローカルオプションを設定することも可 +能である。同じウィンドウ内で別のバッファを編集するとき、ウィンドウ内のローカル +オプションを使い続けたくないときがある。そのためVimはウィンドウ内のローカルオ +プションのグローバルな値を記憶しており、別のバッファの編集時にはそれを用いる。 +ウィンドウはそれぞれ、それらの値の独自のコピーを持っている。そのため、それらの +オプションはウィンドウについてはローカルであるが、そのウィンドウ内の全てのバッ +ファについてグローバルである。それらを用いて、次のようなことが可能である: > + :e one + :set list + :e two +こうするとオプション 'list' はコマンド "two" にも適用される。":set list" によ +り、グローバルな値も変更されたからである。 > + :set nolist + :e one + :setlocal list + :e two +今度は "two" にはオプション 'list' は適用されない。なぜなら ":set nolist" コマ +ンドがグローバルな値をオフに切り替えたが、コマンド ":setlocal list" は "one" バッ +ファについてローカルな値をオンに切り替えただけで、":e two" によるバッファには +グローバルな値が適用されるからである。 Note 注意することは、次にこうすると: > + :e one +最後に "one" バッファを編集したときの通りにオプション 'list' の値が戻るわけで +はない。ウィンドウについてローカルなオプションは、バッファそれぞれに対して復元 +されるわけではないからである。 + + *:setl* *:setlocal* +:setl[ocal] ... コマンド ":set" と似ているが、カレントバッファやウィン + ドウについてローカルな値のみを設定する。全てのオプショ + ンがローカルな値を持つわけではない。オプションがローカ + ルな値を持たないときは、グローバルな値が設定される。引 + 数に "all" を伴うとき: 全てのローカルオプションのロー + カルな値を表示する。引数がないとき: 全てのローカルオプ + ションのローカルな値で、既定の値と異なるものを表示する。 + 特定のローカルオプションを表示しているとき、ローカルな + 値も表示する。グローバルオプションに対しては、グローバ + ルな値が表示される (しかし、これは将来変更されるかもし + れない)。 {Vi にはない} + +:setl[ocal] {option}< {option} のローカルな値をグローバルな値に設定する。 + {Vi にはない} + + *:setg* *:setglobal* +:setg[lobal] ... コマンド ":set" と似ているが、ローカルオプションのグロー + バルな値のみを設定する。ローカルな値は変更しない。オプ + ションを表示するときは、グローバルな値が表示される。引 + 数に "all" を伴うとき: 全てのローカルオプションのグロー + バルな値を表示する。引数がないとき: 全てのローカルオプ + ションのグローバルな値で、既定の値と異なるものを表示す + る。 {Vi にはない} + +バッファやウィンドウについてローカルなオプションに対して: + コマンド グローバルな値 ローカルな値 ~ + :set オプション=値 設定される 設定される + :setlocal オプション=値 なし 設定される +:setglobal オプション=値 設定される なし + :set オプション なし 表示される + :setlocal オプション なし 表示される +:setglobal オプション 表示される なし + + +ローカルな値を持つグローバルオプション *global-local* + +オプションがグローバルであるというのは、一つの値を全てのバッファに用いるような +場合である。いくつかのグローバルオプションでは、ローカルな別の値を持てると便利 +である。ローカルな値は、":setlocal" で設定できる。すると ":setlocal" を実行し +たバッファではローカルな値が用いられるが、他のバッファでは引き続きグローバルな +値が用いられる。 + +例えば、あなたは2つのウィンドウを開き、両方でC言語のソースファイルを編集してい +るとする。グローバルなオプション 'makeprg' は両方に適用される。そこでウィンド +ウの片方で > + :set makeprg=gmake +とすると、別のウィンドウでも同じ値が用いられる。別のウィンドウに移って +オプション 'makeprg' を設定する必要はない。 +しかし、新しいウィンドウでPerlのソースファイルの編集を始めると、'makeprg' に別 +の値を設定したくなる。しかしCソースに適用された値を変えたくはない。そんなとき +にはこうする: > + :setlocal makeprg=perlmake +ローカルな値を空にすると、グローバルな値に戻る: > + :setlocal makeprg= +ただし、この方法は文字列オプションにしか使えない。切替オプションには、次のよう +に "<" フラグを使う必要がある: > + :setlocal autoread< +Note: 切替オプションの変更で "<" を使うと、グローバルな値がローカルな値にコピー +されるが、それは値をグローバルなものに戻すのとは少し違うことに注意すること (こ +れは後でグローバルな値を変更する際に問題になる)。 +Note: 将来、値にグローバルとローカルの区別のあるオプションが増えたら、グローバ +ルオプションにコマンド ":setlocal" を使ったときの結果が変わるかもしれない。 + + +ファイルタイプの設定 + +:setf[iletype] {filetype} *:setf* *:setfiletype* + {filetype} に対して 'filetype' を設定する。ただし + autocommand の中 (入れ子になっているときは、外側も含め + て) において初めて実行されたときのみ有効である。これは + 次のコマンドを略したものである: > + :if !did_filetype() + : setlocal filetype={filetype} + :endif +< このコマンドは filetype.vim の中で使われ、'filetype' + オプションが 2度設定されて別の設定や構文ファイルが読み + 込まれることがないようにしている。 {Vi にはない} + +:bro[wse] se[t] *:set-browse* *:browse-set* *:opt* *:options* +:opt[ions] 全てのオプションを表示したり設定するためのウィンドウを + 開く。オプションは機能ごとにまとめられている。 + ここではオプションの短い説明が読める。その上で <CR> を + 打ち込むと、そのオプションについてのヘルプウィンドウが + 開き、詳しい説明が読める。 + 新しい値を設定するには、表示されている値を修正した後に + "set" という行の上で <CR> を打ち込む。ウィンドウやバッ + ファ固有のオプションについては、変更した値は最後に使用 + したウィンドウに適用される。そのウィンドウがヘルプウィ + ンドウだったときは、変更した値はヘルプウィンドウの (オ + プションウィンドウを抜かして) 1つ下のウィンドウに適用 + される。 + {Vi mが |+eval| または |+autocmd| 機能付きでコンパイル + されたときのみ使用可能} + + *$HOME* +"~" は "$HOME" と同様に扱われるが、こちらは値の先頭にあり、空白かコンマの後に +あるときのみ認識される。 + +Unix系のシステムでは "~user" も使える。これは "user" というユーザのホームディ +レクトリに置き換えられる。例: > + :set path=~mool/include,/usr/include,. + +Unix系のシステムでは "${HOME}" という形式も使える。ここで {} の間には識別子に +使えない文字 (訳注: 上を参照) が入ってもよい。 Note これをコマンド "gf" のため +に使いたいなら、オプション '{' と '}' の文字を 'isfname' に追加する必要がある。 + + +Note 展開されるオプションの値の長さ制限に注意すること。システムごとに異なるが、 +大抵は (訳注: 半角文字で、全角では半分) 256 文字か 1024 文字などの長さである。 + + *:fix* *:fixdel* +:fix[del] 't_kD' (訳注: デリートキー) の値を設定する: + 't_kb' が のとき 't_kD' は ~ + CTRL-? CTRL-H + CTRL-?以外 CTRL-? + + (CTRL-? は8進数で 0177、16進数で 0x7f) {Vi にはない} + + もしあなたのターミナルでデリートキーのキーコードが間違 + っていて、バックスペースのキーコードは正しかったら、こ + のコマンドを .vimrc に加えればよい: > + :fixdel +< これはバックスペースのキーコードが実際に何であっても機 + 能する。 + + バックスペースのキーコードが間違っていたら、このように + する: > + :if &term == "termname" + : set t_kb=^V<BS> + : fixdel + :endif +< ここで "^V" は CTRL-V 、 "<BS>" はバックスペースを表す + (実際に「^」「V」などのキーを押さないこと)。"termname" + にはあなたの使うターミナルの種類を当てはめる。 + + <Delete> キーが奇妙なキーコード列 (CTRL-? でも CTRL-H + でもない) を送るときは、 ":fixdel" ではなくこれを使う: > + :if &term == "termname" + : set t_kD=^V<Delete> + :endif +< ここで "^V" は CTRL-V 、 "<BS>" はデリートキーを表す + (実際に「^」「V」などのキーを押さないこと)。"termname" + にはあなたの使うターミナルの種類を当てはめる。 + + *Linux-backspace* + Note Linuxについての注意: そのままではバックスペースキ + ーは CTRL-? を送るが、これは間違っている。これを修正す + るには、 rc.local に次の行を加える: > + echo "keycode 14 = BackSpace" | loadkeys +< + *NetBSD-backspace* + Note NetBSDについての注意: バックスペースキーが正しい + キーコードを送らないとき、こうすると良いかもしれない: > + xmodmap -e "keycode 22 = BackSpace" +< これが有効だったら、 .Xmodmap ファイルに次の行を加える + こと: > + keysym 22 = BackSpace +< これを有効にするには、再起動する必要がある。 + +============================================================================== +2. オプションの自動設定 *auto-setting* + +コマンド ":set" によるオプションの設定のほか、3通りの方法を使って、1つまたは複 +数のファイルに自動的にオプションを設定できる。 + +1. Vimを起動したとき、様々な場所から初期化設定を読み込ませることができる。 + |initialization| を参照すること。多くの設定はセッション全てに適用されるが、 + いくつかはVimを起動したディレクトリによって異なる。初期化設定ファイルは + |:mkvimrc| や |:mkview| や |:mksession| コマンドで生成できる。 +2. 新しいファイルの編集を始めたとき、自動的に実行されるコマンドがある。 + これを使うと、特定のパターンにマッチするファイルに対してオプションを設定し + たり、様々なことが可能である。|autocommand| を参照すること。 +3. 新しいファイルの編集を始めたときオプション 'modeline' がオンなら、ファイル + の先頭と末尾の数行ずつがモードラインとして読み込まれる。それをここで説明す + る。 + + *modeline* *vim:* *vi:* *ex:* +モードラインには2つの形式がある。1つ目の形式は次の通りである: + [text]{white}{vi:|vim:|ex:}[white]{options} + +[text] 任意のテキスト、なくても良い +{white} 1個以上の空白 (<Space> または <Tab>) +{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 +[white] 空白、なくても良い +{options} オプション設定が、空白か ':' で区切られて並んだもので、':' の + 間の部分はコマンド ":set" の引数である + +例: > + vi:noai:sw=3 ts=6 + +2つ目の形式は次の通りである (Vi にはこの形式と互換性のあるバージョンがある): + + [text]{white}{vi:|vim:|ex:}[white]set {options}:[text] + +[text] 任意のテキスト、なくても良い +{white} 1個以上の空白 (<Space> または <Tab>) +{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 +[white] 空白、なくても良い +set "set " という文字列 (note 終わりの空白に注意) +{options} オプション設定が、空白で区切られて並んだもので、":set" コマン + ドの引数である +: コロン +[text] 任意のテキスト、なくても良い + +例: > + /* vim: set ai tw=75: */ + +{vi:|vim:|ex:} の前には空白が必要である。こうすることで "lex:" などの普通の言 +葉を誤認する可能性を低めることができる。ただし例外があり、 "vi:" と "vim:" は +行頭に来てもよい (バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モード +ラインとは見なされない ("example:" の略かもしれないから)。 + + *modeline-local* +オプションは ":setlocal" などで設定できる。そうして設定した値は、そのときウィ +ンドウで開かれていたバッファにのみ適用される (訳注: 違うかもしれない。原文は +The new value only applies to the buffer that contains the window.) 。モードラ +インからグローバルオプションを設定することは不可能ではないが、普通そういうこ +とはしない。2つのウィンドウを開いていて、それぞれのファイルが同じグローバル +オプションを違う値に設定しようとしたときは、後に開かれたウィンドウが優先される。 + + *modeline-version* +モードラインの内容が、Vimのバージョンによって使用可能だったり不可能だったりす +る場合には、"vim:" のところでバージョンを指定できる。 + vim{vers}: バージョン {vers} 以降 (そのバージョンを含む) + vim<{vers}: バージョン {vers} より前 + vim={vers}: バージョン {vers} のみ + vim>{vers}: バージョン {vers} より後 (そのバージョンを含まない) +{vers} に 600 を指定するとVim 6.0を表す (メジャー・バージョンナンバーの100倍足 +すマイナー・バージョンナンバー)。 +例えば、Vim 6.0またはそれより新しいバージョンでのみモードラインを使うには: > + /* vim600: set foldmethod=marker: */ +Vim 5.7より古いバージョンでのみモードラインを使うには: > + /* vim<570: set sw=4: */ +"vim" と ":" の間に空白があってはならない。 + + +モードラインかどうか調べられる行数はオプション 'modelines' で設定できる。 +オプション 'modeline' オプションがオフであるか 'modelines' が 0 であると、モー +ドラインは調べられない。 + +Note 1番目の形式では、行の終わりまでオプション指定に使われることに注意。そのた +め次のようにすると、行末の "*/" のためにエラーメッセージが現れる: > + /* vi:ts=4: */ +その代わり、こうすればよい: > + /* vi:set ts=4: */ + +エラーが検出されると、その行の残りは無視される。 + +コマンド "set" の引数に ':' を含めたいときは、その前に '\' を置くこと。':' の前 +のバックスラッシュ (訳注: 文書の頭を参照) は取り除かれる。例: > + /* vi:set dir=c\:\tmp: */ +これはオプション 'dir' を "c:\tmp" に変更する。':' の前にバックスラッシュが置 +かれたとき、取り除かれるのは1個だけである。だからオプションの値に "\:" を含め +たいなら "\\:" を指定すること。 + +安全上の理由から、コマンド "set" 以外は使用できない (誰かがテキストファイルで +「トロイの木馬」を作るかもしれないから) 。 + +ヒント: ファイルを読み込みときにオプション設定以外を行いたいなら、ファイル内の +特定の文字列を調べる autocommand を定義すればよい。例: > + au BufReadPost * if getline(1) =~ "VAR" | call SetVar() | endif +そして "VAR" を含む行に何かを行うための SetVar() 関数を定義すればよい。 + +============================================================================== +3. オプションの要約 *option-summary* + +以下のリストでは、全てのオプションが、正確な名前と (あれば) 略名で示されている。 +どちらの形を使ってもよい。 + +この文書内では、切替オプションを「オンに」するというのは ":set そのオプション" +を打ち込むことを表す。切り替えオプションを「オフに」するというのは +":set noそのオプション" を打ち込むことを表す。 + +いくつかのオプションには、既定値が2種類あるものがある: 1つ目は "Vim default" +つまりVimの既定値で、オプション 'compatible' がオフになっているときに使われる。 +2つ目は "Vi default" つまりViの既定値で、オプション 'compatible' がオンになって +いるときに使われる。 + +ほとんどのオプションは全てのウィンドウやバッファで共通である。さてその中には、 +テキストがウィンドウ内でどのように表示されるかを定めるものもある。そういったオ +プションは、ウィンドウごとに違う値に設定できる。例えばオプション 'list' は、あ +るウィンドウ内でオンにして、同じテキストを編集している別のウィンドウ内でオフに +することができる。すると同時に違った外観を得ることができる。また、ファイルごと +に特定の値に設定できるオプションもある。そういったオプションは、ファイルごとま +たはバッファごとに違う値に設定できる。例えばオプション 'textwidth' は、通常の +テキストファイルには78に設定し、Cプログラムのファイルには0に設定するようにでき +る。 + + グローバル: + 1つのオプションが全てのバッファやウィンドウに対して適用される + ウィンドウについてローカル: + ウィンドウがそれぞれ、そのオプションのコピーを独自に持つ + バッファについてローカル: + バッファがそれぞれ、そのオプションのコピーを独自に持つ +(訳注: 上の項目については、ファイルの頭も参照) + +新しいウィンドウを作るとき、ウィンドウ固有のオプションには、その前にアクティブ +だったウィンドウでの値がまず使われる。バッファ固有のオプションは、'cpoptions' +オプションの 's' フラグと 'S' フラグによって違ってくる。's' フラグが含まれてい +ると (既定ではこうなっている)、バッファのオプションの値には、その新しいバッファ +が最初にアクティブになったときに、その前にアクティブだったバッファでの値がコピー +される。'S' フラグが含まれていると、バッファがアクティブになる度に値がコピーさ +れる。これはほとんどグローバルオプションを持っているようなものである。's' フラ +グも 'S' フラグも含まれていないときは、バッファが作られるときに、その前にアク +ティブだったバッファでの値がコピーされる。 + + *E355* +|Q_op| にはオプションの短い説明が載った表があり、そこからヘルプにジャンプでき +る。 + + *'aleph'* *'al'* *aleph* *Aleph* +'aleph' 'al' 数値 (既定はMS-DOSでは128、それ以外では224) + グローバル + {Vi にはない} + {Vi mが |+rightleft| 機能付きでコンパイルされたときの + み使用可能} + ヘブライ語アルファベットの最初の文字を表すASCIIコード。挿入モード + ('hkmap' がオンになっているとき) と コマンドラインモード (CTRL-_ を打 + ち込んだとき) の両方において、ヘブライモードのキーボード配列をマップす + るルーチンは、[aleph..aleph+26] の範囲のヘブライ文字を出力する。 + aleph=128 はPCコード、 aleph=224 は ISO 8859-8 に使われる。 + |rileft.txt| を参照すること。 + + *'allowrevins'* *'ari'* *'noallowrevins'* *'noari'* +'allowrevins' 'ari' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+rightleft| 機能付きでコンパイルされたときの + み使用可能} + 挿入モードとコマンドラインモードで CTRL-_ を使用可能にする。これは既定 + ではオフになっている。ユーザが間違って SHIFT-_ ではなく CTRL-_ を打ち + 込み、右から左に書いていくモードに入って抜けられなくなる事態を防ぐため + である。'revins' を参照すること。 + NOTE: このオプションはオプション 'compatible' がオンになったときはオフ + になるので注意すること。 + + *'altkeymap'* *'akm'* *'noaltkeymap'* *'noakm'* +'altkeymap' 'akm' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+farsi| 機能付きでコンパイルされたときのみ使 + 用可能} + オンのとき、2番目の言語が Farsi. これってイラン語? + オプション 'allowrevins' がオンになっていると、 + 編集モードでは CTRL-_ で Farsi と英語のキーボードマップを切り替えられ + る。オフのとき、キーボードマップはヘブライ語と英語で切り替えられる。こ + れは普通の状態、すなわち英語モード (左から右に書く言語のモード) と既定 + の第2言語である Farsi またはヘブライ語モード (右から左に書く言語のモー + ド)を切り替えた上でVimをスタートさせるのに便利である。|farsi.txt| を参 + 照すること。 + + *'autoindent'* *'ai'* *'noautoindent'* *'noai'* +'autoindent' 'ai' 切替 (既定ではオフ) + バッファについてローカル + 新しい行を開始したとき (挿入モードで <CR> を打ち込むか、コマンド "o" ま + たはコマンド "O" を使ったとき)、新しい行のインデントを現在行と同じ量に + する。新しい行で <BS> か CTRL-D 以外を打ち込まずに <Esc> か <CR> を打 + ち込むと、その行のインデントは削除される。オプション 'autoindent' がオ + ンのときは、 テキストの整形処理 (コマンド "gq" を使ったり、挿入モードで + 1行の文字数が 'textwidth' に届いたとき) には最初の行のインデントが使わ + れる。 + オプション 'smartindent' オプションか 'cindent' がオンのときは、インデ + ントの方法は違ってくる。 + オプション 'paste' オプションがオンになると 'autoindent' はオフになる。 + {Vi との微妙な違い: <Esc> または <CR> を打ち込んでインデントが削除され + た後、上下に移動した後のカーソル位置は削除されたインデントの後ろになる。 + Viでは削除されたインデントの中のどこかになる} + + *'autoread'* *'ar'* *'noautoread'* *'noar'* +'autoread' 'ar' 切替 (既定ではオフ) + グローバルまたはバッファについてローカル |global-local| + {Vi にはない} + ファイルがVimの内部では変更されてないが、Vimの外部で変更されたことが判 + 明したとき、自動的に読み直す。ファイルが削除されたときにはこのようには + ならない。 |timestamp| + このオプションがローカルな値を持つとき、再びグローバルな値を使うように + するにはこのコマンドを使う: > + :set autoread< +< + *'autowrite'* *'aw'* *'noautowrite'* *'noaw'* +'autowrite' 'aw' 切替 (既定ではオフ) + グローバル + :next, :rewind, :last, :first, :previous, :stop, :suspend, :tag, :!, + :make, CTRL-], CTRL-^ のコマンドを実行するたび、ファイルが変更されて + いるなら保存する。また CTRL-O, CTRL-I, '{A-Z0-9}, `{A-Z0-9} のコマンド + の移動先が別のファイルのときも同様である。 + Noteオプション 'autowrite' が適用されないコマンドもあることに注意。そ + れには 'autowriteall' を参照すること。 + + *'autowriteall'* *'awa'* *'noautowriteall'* *'noawa'* +'autowriteall' 'awa' 切替 (既定ではオフ) + グローバル + {Vi にはない} + 'autowrite' と同様のオプションだが、さらに ":edit", ":quit", ":qall", + コマンド ":exit", ":xit", ":recover" でも、ファイルが変更されているなら + 保存する。またVimのウィンドウを閉じる際にも保存する。このオプションを + オンにすると、オプション 'autowrite' も同時にオンになったようになる + (訳注: このオプションはオプション 'autowrite' の適用されるコマンド全て + に適用されるので)。 + + *'background'* *'bg'* +'background' 'bg' 文字列 (既定は "dark" または "light") + グローバル + {Vi にはない} + "dark" に設定されていると、Vimは暗い背景によく合う色を使おうとする。 + "light" に設定されていると、Vimは明るい背景によく合う色を使おうとする。 + その他の値は無効である。 + Vimは使われているターミナルの種類に従って既定の値を定めるが、常に正し + いとは限らない。 + このオプションを変更しても背景色は変わらない。これはただVimに背景色が + どのよ うなものかを知らせるだけである。背景色の変更には |:hi-normal| + を参照すること。 + + オプション 'background' が変更されると、Vimは色設定をその値に合わせる。 + しかし構文強調表示に使われる色設定は変化しない。 + Color scheme が読み込まれているとき (つまり "colors_name" 変数が設定さ + れているとき)オプション 'background' を変更すると color scheme が再び + 読み込まれる。Color scheme がオプション 'background' に対応していれば + これは適用される。しかし color scheme が 'background' 自体を定めている + ときは効果はない。必要ならば "colors_name" 変数の値を消去すること。 + + オプション 'background' を次のようにして既定の値に戻したとき: > + :set background& +< Vimはその値を推測する。GUIがあればこれはうまくいくが、そうでなければ正 + しい値を推測できないだろう。 + + GUIを開始したとき、オプション 'background' の既定値は "light" である。 + 値が .gvimrc で定められておらず、Vimが背景色を暗いものと判断したときは、 + オプション 'background' は "dark" に設定される。しかしこれは .gvimrcファ + イルが読み込まれた「後に」行われる (実際の背景色を知るためにウィンドウ + が開かれる必要があるから)。これを避けるには、コマンド ":gui" を .gvimrc + の中のオプション 'background' の値が使われる前に置いて (つまり + ":syntax on" の前) GUIウィンドウを強制的に開かせればよい。 + Win32のGUIでは、GUIの開始前にオプション 'background' を設定すると、背 + 景色と文字色の組み合わせは black の上に lightgrey または white の上に + black となる。その他のシステムではオプション 'background' を変更しても + 背景色や文字色は変化しない。 + このオプションは普通 .vimrc ファイル内で設定される。ターミナル名によっ + て変わってくるかもしれない。例: > + :if &term == "pcterm" + : set background=dark + :endif +< このオプションが設定されると、強調表示の既定の設定が変更される。他の設 + 定を使いたいなら、コマンド ":highlight" をオプション 'background' を設 + 定した「後に」置くこと。 + このオプションは "$VIMRUNTIME/syntax/syntax.vim" ファイル内でも使われ、 + 構文強調表示のための色を選択するようになっている。このオプションを設定 + した後は syntax.vim を再読み込みしないと結果が分からない。これには + ":syntax on" を実行すればよい。 + + *'backspace'* *'bs'* +'backspace' 'bs' 文字列 (既定では "") + グローバル + {Vi にはない} + 挿入モードでの <BS>, <Del>, CTRL-W や CTRL-U の働きに影響する。値には + コンマ区切りのキーワードを並べたものが使われる。それぞれがバックスペー + スの働く対象を定めている。 + 値 効果 ~ + indent autoindent を超えてバックスペースを働かせる + eol 改行を超えてバックスペースを働かせる (行を連結する) + start 挿入区間の始めでバックスペースを働かせるが CTRL-W と CTRL-U は + 挿入区間の始めでいったん止まる + + 値が空のときは、Vi互換のバックスペーシングが使われる。 + + バージョン 5.4 またはそれ以前との互換性にはこう設定する: + 値 効果 ~ + 0 "" と同じ (Vi互換) + 1 "indent,eol" と同じ + 2 "indent,eol,start" と同じ + + <BS> や <Del> が望み通りの動作をしないときには |:fixdel| を参照するこ + と。 + NOTE: このオプションは、オプション 'compatible' をオンにすると "" に + 設定されるので注意すること。 + + *'backup'* *'bk'* *'nobackup'* *'nobk'* +'backup' 'bk' 切替 (既定ではオフ) + グローバル + {Vi にはない} + ファイルを上書きする前にバックアップファイルを作る。書き込みが成功した + らバックアップはそのまま置いておく。バックアップをずっと持っていたくは + ないが、書き込みの最中にはバックアップが欲しいときには、このオプション + をオフにしてオプション 'writebackup' をオンにすること (既定ではそうなっ + ている)。全くバックアップが要らないなら両方をオフにすること (あなたの + ファイルシステムがほとんど一杯ならこうするとよい)。詳しくは + |backup-table| を参照すること。 + どちらにしてもオプション 'backupskip' のパターンがマッチすると、バック + アップは作られない。オプション 'patchmode' がオンになっていると、バック + アップはリネームされて最も古いバージョンのファイルになることがある。 + NOTE: このオプションは、オプション 'compatible' をオンにするとオフにな + るので注意すること。 + + *'backupcopy'* *'bkc'* +'backupcopy' 'bkc' 文字列 (UnixでのViの既定値: "yes" 、それ以外: "auto") + グローバル + {Vi にはない} + ファイルに書き込みをしてバックアップが作られるとき、その方法をこのオプ + ションで決定する: + "yes" 先にファイルのコピーを作ってバックアップにして、更新した内容は + 元のファイルに上書きする + "no" 先に元のファイルをリネームしてバックアップにして、更新した内容 + は新しいファイルに書き出す + "auto" 上の2つのどちらかで、適切な方を選ぶ + + ファイルのコピーを作ってから元のファイルに上書きする方法は: + X ファイルのコピーに余計な時間がかかる。 + O 編集したファイルが特別な属性を持っているとき (例えばファイルがハー + ドリンクまたはシンボリックリンクだったり、リソースフォークを持って + いるとき)、全て元のまま保たれる。 + X 編集したファイルがリンクのとき、バックアップファイルの名前がリンク + 先の文書ファイルの名前でなく、リンクファイルの名前になってしまう。 + + ファイルをリネームしてから新しいファイルに書き出す方法は: + O 高速である。 + X 時々、元のファイルの持つ属性を新しいファイルにコピーしきれないこと + がある。 + X 編集したファイルがリンクのとき、新しいファイルはリンクにならない。 + + "auto" の値にすると折衷策を採る。Vimが副作用なしにリネームの方法が使え + ると判断したとき (属性がコピーでき、ファイルがリンクでないとき) は、そ + ちらが使われる。それでは問題がありそうなときはコピーの方法が使われる。 + + "no" と "auto" では問題が起きる場合がある。プログラムによっては、ファ + イルを開き、Vimを呼び出してそのファイルを編集させ、(ファイル区別プログ + ラムを使って) そのファイルが変更されたかどうかを調べるものがある。そう + したプログラムは新しく書き出されたファイルではなく、バックアップファイ + ルの方を調べてしまう。例としては "crontab -e" が挙げられる。 + + コピーの方法のときは、元のファイルの中身はいったん削除され、そこに新し + いテキストが書き込まれる。つまり、元のファイルの保護ビット、ファイル所 + 有者やシンボリックリンクは変更されない。しかし、新しく作られることにな + るバックアップファイルは、ファイルを編集したユーザの所有となる。またバ + ックアップファイルの属するグループは、元のファイルと同じグループに設定 + される。これが失敗すると、他の属性と同様に、そのグループでの保護ビット + が設定される。 + + リネームの方法のときは別のやり方が使われる。バックアップファイルは元の + ファイルと同じ属性を持ち、新しく書き出されたファイルは、ファイルを編集 + したユーザの所有となる。開いたファイルがハードリンクまたはシンボリック + リンクだった場合でも、新しく書き出されたファイルはリンクにならない!だ + から値が "auto" のとき、ファイルがリンクならリネームを行わないのである。 + 新しく書き出されたファイルの所有者と属するグループは、元のファイルと同 + じとして設定される。しかしシステムがこうすることを許さないかもしれない。 + その場合、値が "auto" ならもうファイルのリネームをしようとはしない。 + + *'backupdir'* *'bdir'* +'backupdir' 'bdir' 文字列 (Amigaでの既定値: ".,t:", + MS-DOSとWin32での既定値: ".,c:/tmp,c:/temp" + Unixでの既定値: ".,~/tmp,~/") + グローバル + {Vi にはない} + 値は、バックアップファイルを作るディレクトリを、コンマ区切りのリストに + したもの。 + - バックアップファイルは、リスト内の、使用可能な最初のディレクトリの中 + に作られる。 + - 値が空だと、バックアップファイルは作られない ('patchmode' は使えなく + なる!)。 + - ディレクトリに "." を指定するのは、バックアップファイルを、編集され + たファイルと同じディレクトリに作るということである。 + - ディレクトリが "./" で (MS-DOSなどでは ".\") 始まるのは、バックアッ + プファイルを作るディレクトリを、編集されたファイルとの相対的な位置で + 決めるということである。最初の "." は編集されたファイルのパス名で置 + き換えられる ("." がディレクトリ名の内部にあるなら、特別な意味はな + い)。 + - コンマの後の空白は無視されるが、他の場所の空白はディレクトリ名の一部 + として見なされる。ディレクトリ名の先頭に空白を使いたいなら、その空白 + の前にバックスラッシュを置くこと。 + - ディレクトリ名にコンマを使いたいなら、そのコンマの前にバックスラッシュ + (訳注: ファイル先頭を参照) を置くこと。 + - ディレクトリ名は '/' で終わってもよい。 + - 環境変数は展開される |:set_env| 。 + - '\' には注意すること。空白の前には1個置き、オプションの値に '\' 自身 + を含めたいなら2個置く (|option-backslash| を参照)。例: > + :set bdir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces +< - 古い Vim version 3.0 との互換性のため、値の先頭の '>' は取り除かれる。 + オプション 'backup' オプションおよび 'writebackup' も参照すること。 + Unixであなたのバックアップファイルを隠したいなら、こうするとよい: > + :set backupdir=./.backup,~/.backup,.,/tmp +< この方法を使うには、それぞれのディレクトリとあなたのホームディレクト + リに ".backup" というディレクトリを作らなければならない。 + リストにディレクトリを加えたり、リストから取り除いたりするときには、 + |:set+=| と |:set-=| を使うのがよい。こうすると将来のバージョンでの既 + 定値が変更されたときの問題を避けられる。 + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'backupext'* *'bex'* +'backupext' 'bex' 文字列 (既定では "~", VMSでは: "_") + グローバル + {Vi にはない} + バックアップファイルの名前を作る際、元のファイル名の後ろに付け加える文 + 字列。既定では普段使いそうもないものに定めてあるが、これは既存のファイ + ルをバックアップファイルで上書きするのを避けるためである。".bak" を使 + いたいかもしれないが、".bak" で終わるファイルに重要なものがないか確か + めること。 + + *'backupskip'* *'bsk'* +'backupskip' 'bsk' 文字列 (既定では: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") + グローバル + {Vi にはない} + {Vi mが |+wildignore| 機能付きでコンパイルされたときの + み使用可能} + ファイル名に対するパターンのリスト。この中に、書き込まれたファイルの名 + 前にマッチするパターンがあれば、そのファイルのバックアップは作られない。 + ファイル名を指定してもよいし、ファイルのフルパスを指定してもよい (訳注: + C:/temp/* という方法。既定値ではこの方法で、一時ファイル用のディレクト + リを指定している) 。 + パターンの指定方法は |:autocmd| と同じである。|autocmd-patterns| を参 + 照すること。また、特殊文字に注意するために |option-backslash| を参照す + ること。 + 環境変数の $TMPDIR, $TMP や $TEMP が定義されていないと、既定値には使わ + れない。"/tmp/*" はUnixでのみ使われる。 + + *'balloondelay'* *'bdlay'* +'balloondelay' 'bdlay' 数値 (既定では 600) + グローバル + {Vi にはない} + {Vi mが |+balloon_eval| 機能付きでコンパイルされたとき + の + み使用可能} + バルーン表示が出るまでの時間 (ミリ秒単位) 。|balloon-eval| を参照する + こと。 + + *'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'* +'ballooneval' 'beval' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+sun_workshop| 機能付きでコンパイルされたとき + のみ使用可能} + |balloon-eval| 機能を働かせる。 + + *'binary'* *'bin'* *'nobinary'* *'nobin'* +'binary' 'bin' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + バイナリファイルを編集する前には、このオプションをオンにする。Vimの引 + 数に |-b| を付けてもよい。このオプションがオンのときは、いくつかのオプ + ションの設定が変わる: + 'textwidth' は 0 + 'wrapmargin' は 0 + 'modeline' は オフ + 'expandtab' は オフ + またオプション 'fileformat' オプションと 'fileformats' の値は無視され、 + 読み込みと書き込みは 'fileformat' が "unix" のときのようになる (1個の + <NL> が改行になる)。 + さらにオプション 'fileencoding' オプションと 'fileencodings' の値も無 + 視され、ファイルは変換なしに読み込まれるようになる。 + NOTE:オプション 'bin' がオンのときにファイルを読み込むと、autocommand + によって設定が再び変えられ (例えば 'textwidth')、編集時に問題を起こす + ことがあるので注意すること。ファイルを読み込んだ後に再び 'bin' オプショ + ンをオンにするとよい。 + 変更されるオプションの値は記憶されているので、オプション 'bin' がオフに + 戻るとそれらの値も復元される。それらの値はバッファごと独自に記憶される。 + オプション 'bin' がオンならば、元のファイルにすでに <EOL> があるときだ + け、ファイルを書き込むときに最終行に <EOL> が付け加えられる (普通は、 + 最終行に <EOL> がないならVimはそれを付け加える。こうするとその分ファイ + ルが長くなる)。オプション 'endofline' を参照すること。 + + *'bioskey'* *'biosk'* *'nobioskey'* *'nobiosk'* +'bioskey' 'biosk' 切替 (既定ではオン) + グローバル + {Vi にはなく、MS-DOS版のみ} + オンのときは、キーボードの文字を得るためにバイオスが呼び出される。これ + はCTRL-C を認識するためにはよいが、コンソールでしか機能しない。ターミ + ナルをシリアルポートから利用する場合は、オフにすること。 + |'conskey'| も参照すること。 + + *'bomb'* *'nobomb'* +'bomb' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + {Vi mが |+multi_byte| 機能付きでコンパイルされたときの + み使用可能} + ファイルを書き込むときに以下の条件が満たされれば、BOM (Byte Order + Mark, バイト順マーク) がファイル先頭に付けられる: + - このオプションがオンであること + -オプション 'binary' がオフであること + -オプション 'fileencoding' が "utf-8", "ucs-2", "ucs-4" であるか、それ + らとリトルエンディアンとビッグエンディアンの違いを除いて同一のエンコー + ドであること + アプリケーションの中には、ファイルのエンコーディングを認識するために + BOM を使うものがある。MS-Windows で UCS-2 ファイルのためによく使われる。 + しかし、アプリケーションによってはこれが問題になることもある。例: + "cat file1 file2" とすると、file2の BOM がファイル途中に現れてしまう。 + ファイルを読み込むときにオプション 'fileencodings' の値が "ucs-bom" で + 始まるならば、 BOM が存在するかどうかが調べられ、その結果に従って + 'bomb' が設定される。'binary' がオンでなければ BOM は編集時には取り除 + かれ、ユーザの目には触れない。その後オプションを変更しなければ、ファイ + ルを書き込むときに再び BOM が復元される。 + + *'breakat'* *'brk'* +'breakat' 'brk' 文字列 (既定では " ^I!@*-+;:,./?") + グローバル + {Vi にはない} + {Vi mが |+linebreak| 機能付きでコンパイルされたときの + み使用可能} + オプション 'linebreak' がオンのとき、どの文字で自動改行が起きるかを、こ + のオプションで指定する。 + + *'browsedir'* *'bsdir'* +'browsedir' 'bsdir' 文字列 (既定では "last") + グローバル + {Vi にはなく、MotifとWin32のGUI版のみ} + ファイルブラウザにどのディレクトリを使うかを指定する: + last 前回にファイルブラウザを使ったディレクトリ + buffer バッファで開いているファイルのディレクトリ + current カレントディレクトリ + {path} {path} で指定されたディレクトリ + + *'bufhidden'* *'bh'* +'bufhidden' 'bh' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + {Vi mが |+quickfix| 機能付きでコンパイルされたときの + み使用可能} + このオプションは、バッファがウィンドウ内に表示されなくなったときの動作 + を指定する。 + <empty> グローバルなオプションの 'hidden' の値に従う + hide バッファを隠す (解放しない)。オプション 'hidden' がオン + でなくともそうする。 + unload バッファを解放する。オプション 'hidden' がオンであった + り、|:hide| コマンドを使ったときでもそうする。 + delete バッファをバッファリストから削除する。'hidden' オプショ + ンがオンだったり、|:hide| コマンドを使ったときでも、 + |:bdelete| コマンドを使ったときのように、リストからの + 削除を行う。 + + このオプションはオプション 'buftype' オプションや 'swapfile' と共に使 + われ、特殊な用途のバッファを指定する。|special-buffers| を参照すること。 + + *'buflisted'* *'bl'* *E85* +'buflisted' 'bl' 切替 (既定ではオン) + バッファについてローカル + {Vi にはない} + このオプションがオンならば、バッファはバッファリストに表示される。オフ + ならば、そのバッファはコマンド ":bnext" コマンドや ":ls" 、バッファメ + ニューなどの対象にならない。 + ファイル名やマークを思い出したりするためだけのバッファでは、このオプショ + ンはVimによってオフにされる。ファイルの編集のためにバッファを作ったと + きは、このオプションはVimによってオンにされる。しかし ":buffer" コマン + ドでバッファに移動したときはそうではない。 + + *'buftype'* *'bt'* *E382* +'buftype' 'bt' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + {Vi mが |+quickfix| 機能付きでコンパイルされたときの + み使用可能} + このオプションはバッファの種類を指定する。 + <empty> 普通のバッファ + nofile ファイルと関連がなく、書き込まれる予定のないバッファ + nowrite 書き込まれる予定のないバッファ + quickfix エラーリスト用の、quickfix バッファ |:cwindow| + help ヘルプバッファ (あなたが手動でこれに設定することはない + はずである) + + このオプションはオプション 'bufhidden' オプションや 'swapfile' と共に + 使われ、特殊な用途のバッファを指定する。|special-buffers| を参照すること。 + + このオプションの変更には十分注意すること。多くの副作用が起こるかもしれ + ない! + + "quickfix" バッファはエラーリストにのみ使われる。この値は |:cwindow| + コマンドで設定され、あなたが変更することはないはずである。 + + "nofile" バッファと "nowrite" バッファは似ている。 + 両方とも: バッファの内容はファイルに書き込まれない。":w" コマン + ドが使えない (コマンド ":w filename" は使える)。 + 両方とも: バッファの内容が変更された |'modified'| と認識されるこ + とがない。Vimを終了するときなど、変更点が失われるとき + でも、警告が現れない。 + 両方とも: スワップファイルはメモリを大量に消費したときのみ作られ + る (オプション 'swapfile' がオフだと、スワップファイル + は作られない)。 + nofile のみ: バッファ名は固定され、ファイル名のようには扱われない。 + |:cd| コマンドの結果としてバッファ名が変わることはない。 + + *'cdpath'* *'cd'* *E344* *E346* +'cdpath' 'cd' 文字列 (既定では環境変数 $CDPATH または ",,") + グローバル + {Vi にはない} + {Vi mが |+file_in_path| 機能付きでコンパイルされたとき + のみ使用可能} + このオプションの値は、|:cd| コマンドや |:lcd| コマンドを使ったときに検 + 索されるディレクトリのリストである。ただし検索されるディレクトリは相対 + パスで指定することはできない ("/", "./" や "../" で始まってはいけない)。 + オプション 'cdpath' の値には、|'path'| オプションと同様の指定方法を使う。 + |file-searching| も参照すること。 + 既定では、値は環境変数 $CDPATH から取り込まれるが、カレントディレクト + リを最初に探すために "," が先頭に挿入される。$CDPATH から取り込まれた + ものが望ましくないときは、値を上書きするために、次のコマンドを適当に修 + 正し、あなたの vimrc ファイルに加えること: > + :let &cdpath = ',' . substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g') +< 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない (オプション 'cdpath' の値の一部は、ファイル名を展開する + ためにシェルに渡すことができる)。 + + *'cedit'* +'cedit' 文字列 (Viの既定値: "", Vimの既定値: CTRL-F) + グローバル + {Vi にはない} + {Vi mが |+vertsplit| 機能付きでコンパイルされたときの + み使用可能} + コマンドラインモード Command-line Mode で、コマンドラインウィンドウを + 開くために使われるキー。オプション 'compatible' がオフならば、既定では + CTRL-F である。 + 印刷されない特殊なキー non-printable keys しか指定できない。キーは単一 + の文字として設定することもできるが、それでは入力しにくい。<> を使った + 表記が好まれる。例: > + :set cedit=<C-Y> + :set cedit=<Esc> +< |Nvi| もこのオプションを持っているが、最初の1文字だけが使用される。 + |cmdwin| を参照すること。 + + *'charconvert'* *'ccv'* *E202* *E214* +'charconvert' 'ccv' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+multi_byte| 機能および |+eval| 機能付きでコ + ンパイルされたときのみ使用可能} + 文字エンコーディングの変換に使われる expression を定める。これは読み込 + まれようとしているファイルや書き込みをしたファイルのエンコーディングが、 + 望むものと違うときに評価される。 + オプション 'charconvert' の値は、内部関数 iconv() がサポートされ、それ + による変換が可能ならば使われることはない。ずっと高速なため、iconv() の + 方が好まれる。 + 'charconvert' は標準入力 (stdin |--|) から読み込みときには使われない。 + なぜなら変換元のファイルが存在しないからだ。まずテキストの内容をファイ + ルに保存しなければいけない。 + 使われる expression は、変換成功時には空文字列または0、失敗時には非0を + 返さなければならない。 + 可能なエンコーディングの名前はオプション 'encoding' で設定されている + (訳注:よく分からない。原文は The possible encoding names encountered + are inオプション 'encoding'.)。それに加え、'fileencodings' と + オプション 'fileencoding' に設定されているエンコーディング名も使われる。 + "latin1", "unicode", "ucs-2", "ucs-4" や "utf-8" の間の変換はVimの内部 + で行われ、オプション 'charconvert' は使われない。'viminfo' の中に 'c' + フラグが含まれるならば、'charconvert' は viminfo ファイルの変換にも使 + われる。また Unicode の変換にも使われる。 + 例: > + set charconvert=CharConvert() + fun CharConvert() + system("recode " + \ . v:charconvert_from . ".." . v:charconvert_to + \ . " <" . v:fname_in . " >" v:fname_out) + return v:shell_error + endfun +< 関連する Vim 変数は: + v:charconvert_from 現在のエンコーディング名 + v:charconvert_to 希望するエンコーディング名 + v:fname_in 入力ファイル名 + v:fname_out 出力ファイル名 + Note v:fname_in と v:fname_out とは、決して同じになってはいけないので + 注意すること。 + Note 変数 v:charconvert_from と変数 v:charconvert_to の値は 'encoding' + オプションの値と異なるかもしれないので注意すること。Vim内部では UCS-2 + または UCS-4 の代わりには UTF-8 を使っている。 + Vim は 'charconvert' を用いたエンコーディング変換では暗号化をしない。 + 変換後に暗号化をしたいなら、'charconvert' でそのことを注意する必要があ + る。 + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'cindent'* *'cin'* *'nocindent'* *'nocin'* +'cindent' 'cin' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + {Vi mが |+cindent| 機能付きでコンパイルされたときのみ + 使用可能} + Cプログラムファイルの自動インデントを始める。挿入モード insert mode で + 再インデントを引き起こす文字列を指定するにはオプション 'cinkeys' を、 + 好みのインデントスタイルを設定するにはオプション 'cinoptions' を参照す + ること。 + オプション 'indentexpr' オプションの値が空でないなら、それは 'cindent' + に影響する。 + オプション 'lisp' オプションがオフで、'indentexpr' と 'equalprg' オプショ + ンの両方の値が空なら、"=" によるインデントはこのアルゴリズムを使い、外 + 部プログラムを使わない。 + |C-indenting| を参照すること。 + オプション 'cindent' の動作が気に入らないならば、'smartindent' か + オプション 'indentexpr' の設定を試してみること。 + このオプションはオプション 'paste' がオンのときには使われない。 + NOTE: このオプションはオプション 'compatible' をオンにするとオフにされ + るので注意すること。 + + *'cinkeys'* *'cink'* +'cinkeys' 'cink' 文字列 (既定では "0{,0},0),:,0#,!^F,o,O,e") + バッファについてローカル + {Vi にはない} + {Vi mが |+cindent| 機能付きでコンパイルされたときのみ + 使用可能} + 挿入モードで入力されたときに、現在行の再インデントを行わせる文字のリス + ト。オプション 'cindent' オプションがオンで、かつ 'indentexpr' が空の時 + のみ使われる。 + このオプションの指定方法については |cinkeys-format| を参照すること。 + また |C-indenting| を参照すること。 + + *'cinoptions'* *'cino'* +'cinoptions' 'cino' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + {Vi mが |+cindent| 機能付きでコンパイルされたときのみ + 使用可能} + このオプション 'cinoptions' は、C言語ソース内の行を 'cindent' で再イン + デントするときの方法に影響を与える。このオプションの値については + |cinoptions-values| を、一般的なC言語ソースのインデントの情報について + は |C-indenting| をそれぞれ参照すること。 + + + *'cinwords'* *'cinw'* +'cinwords' 'cinw' 文字列 (既定では "if,else,while,do,for,switch") + バッファについてローカル + {Vi にはない} + {Vi mが |+cindent| 機能と |+smartindent| 機能(両方)付 + きでコンパイルされたときのみ使用可能} + オプション 'smartindent' オプションか 'cindent' がオンのとき、ここに指 + 定したキーワードの次の行は、さらにインデントされる。'cindent' がオンの + ときには、適切な場所 ({} の内側) でのみ機能する。 + Noteオプション 'ignorecase' オプションは 'cinwords' の値には適用されな + いので注意すること。大文字か小文字かを区別したくないなら、値に両方を指 + 定すること。例: "if,If,IF" + + *'clipboard'* *'cb'* +'clipboard' 'cb' 文字列 (既定値はX-windowsでは + "autoselect,exclude:cons\|linux" + それ以外では "") + グローバル + {Vi にはない} + {Vi mのGUIバージョンか |+xterm_clipboard| 機能付きでコ + ンパイルされたもののみ使用可能} + このオプションには、コンマ区切りのキーワードのリストを指定する。 + 認識されるのは、これらのキーワードである: + + unnamed これが含まれると、コピー、削除、変更、ペーストなどの操 + 作で、普通なら無名レジスタが使われるところで、全てクリ + ップボードレジスタ "*" が使われるようになる。ただしレ + ジスタ名を陽に指定すれば、オプション 'clipboard' に + "unnamed" が含まれているかいないかに関わらず、指定され + たレジスタが使われる。またクリップボードレジスタは、"* + という記法を用いれば常にアクセスできる。 + |gui-clipboard| も参照すること。 + + autoselect オプション 'guioptions' の 'a' フラグのように働く: これ + が含まれると、Visualモードが開始されるたび、または + Visual選択範囲が変更されるたびに、Vimはウィンドウシス + テムのグローバルなクリップボードのオーナーになろうとす + るか、選択されたテキストをクリップボード用レジスタ "* + を使ってクリップボードにコピーしようとする。詳細につい + ては |guioptions_a| と |quotestar| を参照すること。GUI + 機能が有効のときはオプション 'guioptions' の 'a' フラ + グが使用され、無効のときはこの "autoselect" フラグが使 + 用される。 + また、モードレスなセレクションにも適用される。 + + autoselectml "autoselect" と似ているが、モードレスセレクションのみ + に適用される。オプション 'guioptions' の 'A' フラグと + 比較してみること。 + + exclude:{pattern} + ターミナルの名前 'term' にマッチするパターンを定義する。 + パターンがマッチすると、Xサーバとの通信がなされなくなる。 + このオプションは次のようなときに便利である。 + - Vimをコンソールで使用しているとき。 + - アプリケーションを別のディスプレイで使うため、環境変 + 数 $DISPLAY が設定されているとき。 + - コンソールでVimを使用している最中にXサーバが終了させ + られ、Vimをキルせざるを得ないかもしれないとき。 + Xサーバと全く通信しないようにするには、次のようにする: > + exclude:.* +< これは引数 |-X| を使用したのと同じ効果を持つ。 + Note 副作用として、ウィンドウのタイトルは復元されない + ので注意すること。 + オプション 'magic' の値は無視され、 {pattern} は + オプション 'magic' がオンのように解釈される。 + 残りのオプションの値は {pattern} に適用される。 this + must be the last entry. + + *'cmdheight'* *'ch'* +'cmdheight' 'ch' 数値 (既定では 1) + グローバル + {Vi にはない} + コマンドラインに使われるスクリーン上の行数。|hit-enter| プロンプトの出 + 現を避けるのに役立つ。 + + *'cmdwinheight'* *'cwh'* +'cmdwinheight' 'cwh' 数値 (既定では 7) + グローバル + {Vi にはない} + {Vi mが |+vertsplit| 機能付きでコンパイルされたときの + み使用可能} + コマンドライン・ウィンドウに使われるスクリーン上の行数。|cmdwin| を参 + 照すること。 + + *'columns'* *'co'* +'columns' 'co' 数値 (既定では 80 またはターミナルの幅) + グローバル + {Vi にはない} + スクリーン上の列幅。普通このオプションはターミナルの初期化の時点で設定 + され、手動で設定する必要はない。 + VimがGUI環境内やサイズ変更可能なウィンドウ内で実行されているときは、こ + のオプションを変更するとウィンドウサイズも変更されるかもしれない。 + あなたがこのオプションの値を変更したのに、Vimがディスプレイの列幅の物 + 理的な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそ + れがある。 + + *'comments'* *'com'* +'comments' 'com' 文字列 (既定では + "s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-") + バッファについてローカル + {Vi にはない} + {Vi mが |+comments| 機能付きでコンパイルされたときのみ + 使用可能} + コメント行の始まりとなる文字列の、コンマ区切りのリスト。 + |format-comments| を参照すること。バックスラッシュ(訳注: 文書先頭も参 + 照)を使って、値にスペースを含める方法については、|option-backslash| を + 参照すること。 + + *'commentstring'* *'cms'* +'commentstring' 'cms' 文字列 (既定では "/*%s*/") + バッファについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + コメント用のテンプレート(雛形)。値の中の "%s" はコメントの内容と置き換 + えられる。現在のところ、折り畳み用のマーカを追加するためにのみ使用され + ている。|fold-marker| を参照すること。 + + *'compatible'* *'cp'* *'nocompatible'* *'nocp'* +'compatible' 'cp' 切替 (既定では オン、 .vimrc ファイルが発見されたら + オフ) + グローバル + {Vi にはない} + このオプションは、VimをなるべくVi互換にするか、便利な機能を使えるよう + にするかを決定する。 + これは、特別な種類のオプションである。このオプションの値が変更されると、 + それに伴って他のオプションの値も変更されるからだ。*注意: このオプショ + ンの値を変更すると、予期しない効果が数多く現れる。キーマップの解釈は変 + わり、アンドゥも違った方法で行われる、等々。このオプションを vimrc ファ + イル内で設定するなら、一番先頭に置くこと。 + 既定ではこのオプションはオンになっていて、その他のオプションにはViの既 + 定値が使われる。この既定値は、VimをViと全く同じように使うことを望み、 + オプション 'compatible' について知りもしない、または知りたいとも思わな + い人たちのためのものである。 + Vimが立ち上がる間に ".vimrc" ファイルが見つかると、このオプションはオ + フにされ、その他のオプションで変更されていないものは、みなVimの既定値 + に設定される。要するに、Vimは ".vimrc" ファイルが存在するならVimの既定 + 値を、存在しないならViの既定値を使うのだ (Note: システム全体用の vimrc + ファイルは関係ないことに注意)。 |compatible-default| も参照すること。 + + このオプションは引数 "-C" でオンに、引数 "-N" でオフにできる。 |-C| と + |-N| を参照すること。 + このオプションをオフに設定すると、「Viの既定値」と「Vimの既定値」が異 + なっているオプションについて、Vimの既定値が用いられるようになる。下の + 表で '+' がついているものを参照すること。その他のオプションは影響を受 + けない。 + このオプションがオンに設定されると、他のオプションがいくつか変更され、 + Vimはできる限りVi互換になろうとする。下の表を参照すること。これはVi互 + 換の編集方法に戻りたいと思うときに使うことができる。 + 'cpoptions' も参照すること。 + + オプション + Viの既定値 効果 ~ + + 'allowrevins' オフ CTRL-_ コマンドなし + 'backupcopy' Unix: "yes" バックアップファイルがコピーになる + 他: "auto" バップアップはコピーまたはリネーム + 'backspace' "" 普通のバックスペース + 'backup' オフ バックアップファイルなし + 'cindent' オフ C言語ファイルにインデントなし + 'cedit' + "" |cmdwin| を開くキーなし + 'cpoptions' + (全フラグ) Vi互換のフラグ + 'cscopetag' オフ ":tag" に cscope を使わない + 'cscopetagorder' 0 |cscopetagorder| を参照 + 'cscopeverbose' オフ |cscopeverbose| を参照 + 'digraph' オフ ダイグラフなし + 'esckeys' + オフ Insertモードで <Esc>-キー なし + 'expandtab' オフ タブはスペースに展開されない + 'fileformats' + "" 自動ファイルタイプ決定なし + "dos,unix" ただし DOS, Windows と OS/2 以外で + 'formatoptions' + "vt" Vi互換の文書整形 + 'gdefault' オフ ":s" でフラグの既定値に 'g' なし + 'history' + 0 コマンドラインの履歴なし + 'hkmap' オフ ヘブライ語用キーボードマップなし + 'hkmapp' オフ phoneticヘブライ語用キーボードマップなし + 'hlsearch' オフ 検索でマッチした文字列に強調なし + 'incsearch' オフ インクリメンタル・サーチなし + 'indentexpr' "" expression によるインデントなし + 'insertmode' オフ Insertモードでの開始なし + 'iskeyword' + "@,48-57,_" キーワードはアルファベットと数字と '_' + 'joinspaces' オン ピリオドの後ろには空白を2個挿入 + 'modeline' + オフ モードラインなし + 'more' + オフ リスト表示は止まらない + 'revins' オフ 逆向き挿入なし + 'ruler' オフ ルーラなし + 'scrolljump' 1 ジャンプスクロールなし + 'scrolloff' 0 スクロールにオフセットなし + 'shiftround' オフ インデントは shiftwidth の整数倍でない + 'shortmess' + "" メッセージの短縮なし + 'showcmd' + オフ コマンドの文字は表示されない + 'showmode' + オフ 現在のモードは表示されない + 'smartcase' オフ 大文字小文字の無視は自動的にならない + 'smartindent' オフ 「賢い」インデントなし + 'smarttab' オフ 「賢い」タブ挿入なし + 'softtabstop' 0 タブは常に 'tabstop' を基準 + 'startofline' オン いくつかのコマンドでさらに行頭に移動する + 'tagrelative' + オフ タグファイル名は相対的でない + 'textauto' + オフ 自動改行コード決定なし + 'textwidth' 0 自動行分割なし + 'tildeop' オフ ティルデはオペレータではない + 'ttimeout' オフ ターミナルのタイムアウトなし + 'whichwrap' + "" 左から右への移動は行を超えない + 'wildchar' + CTRL-E 現在の値が <Tab> のときのみ、コマンド + ライン補完に CTRL-E を使う + 'writebackup' オンかオフ +writebackup 機能による + + *'complete'* *'cpt'* +'complete' 'cpt' 文字列 (既定では: ".,w,b,u,t,i") + バッファについてローカル + {Vi にはない} + このオプションは、CTRL-P コマンドや CTRL-N コマンドによるキーワード補 + 完 |ins-completion| の動作を指定する。このオプションは行全体の補完 + |i_CTRL-X_CTRL-L| にも適用される。このオプションは補完の方法と、キーワー + ド検索の対象となる場所を示す、コンマ区切りのフラグのリストである。 + . カレントバッファから検索 (オプション 'wrapscan' の値は無視) + w 別のウィンドウ内のバッファから検索 + b バッファリスト内の、現在読み込まれている別のバッファから検索 + u バッファリスト内の、現在読み込まれていない別のバッファから検索 + U バッファリストにないバッファから検索 + k オプション 'dictionary' で指定されたファイルから検索 + k{dict} {dict} で与えられたファイルから検索。 "k" フラグを複数指定して + もよい。ファイル名はパターンでも指定できる。例: > + :set cpt=k/usr/dict/*,k~/spanish +< s オプション 'thesaurus' で指定されたファイルから検索 + s{tsr} {tsr} で与えられたファイルから検索。 "s" フラグを複数指定して + もよい。ファイル名はパターンでも指定できる。 + i カレントファイルとインクルードされるファイルから検索 + d カレントファイルとインクルードされるファイルから、定義された名 + 前またはマクロを検索 |i_CTRL-X_CTRL-D| + ] タグ補完 + t "]" と同じ + + 読み込まれていないバッファでは、何しろ読み込まれていないのだから、 + |:autocmd| は実行されていない。そのため、ある種のファイルからは思いも + しないキーワードを補完してしまうことがある (gzip圧縮されたファイルな + ど)。読み込まれていないバッファは、行全体の補完には使われない。 + + 既定では ".,w,b,u,t,i" となっていて、これは検索対象を次のように指定し + ている。 + 1. カレントバッファ + 2. 別のウィンドウ内のバッファ + 3. 他の読み込まれたバッファ + 4. 読み込まれていないバッファ + 5. タグ + 6. インクルードされるファイル + + CTRL-N コマンドと CTRL-P コマンドはオプション 'iskeyword' を利用した全 + てのファイル名展開で使用できる (つまり辞書 |i_CTRL-X_CTRL-K| 、インク + ルードされるパターン |i_CTRL-X_CTRL-I|、タグ |i_CTRL-X_CTRL-]| および + 通常の展開)。 + + *'confirm'* *'cf'* *'noconfirm'* *'nocf'* +'confirm' 'cf' 切替 (既定ではオフ) + グローバル + {Vi にはない} + オプション 'confirm' がオンならば、バッファへの変更を保存していないと実 + 行に失敗する操作 (つまり ":q" と ":e") の際、ダイアログ |dialog| を開 + いてファイルを保存するかどうか尋ねる。これがオンになっていても、意図的 + に変更を廃棄したいなら ! を使える。 + オプション 'confirm' がオフでも、|:confirm| コマンドで個別に確認を求め + ることができる (これはキーマッピングでとても便利である)。 + 関数 |confirm()| とオプション 'guioptions' の 'v' フラグも参照すること。 + + *'conskey'* *'consk'* *'noconskey'* *'noconsk'* +'conskey' 'consk' 切替 (既定ではオフ) + グローバル + {Vi にはない} {Vi mのMS-DOS版のみ} + このオプションがオンのとき、キーボードの文字を受け取るのに直接コンソー + ル出入力が使われる。 + これはたいていの場合有効である。|'bioskey'| も参照すること。合わせて、 + 3種類のコンソール入力が使える: + 'conskey' 'bioskey' action ~ + オン オンかオフ 直接コンソール入力 + オフ オン BIOS + オフ オフ 標準入力 + + *'cpoptions'* *'cpo'* +'cpoptions' 'cpo' 文字列 (Vimの既定値: "aABceFs", + Viの既定値: 全てのフラグ) + グローバル + {Vi にはない} + 1文字のフラグの列で設定する。フラグが設定されると、対応する動作がVi互 + 換になる。このオプションは、大部分、またはある程度のVi互換が求められる + ときに使われる。 + 'cpoptions' は "compatible-options (互換オプション)" の意味である。 + 読みやすくするためにコンマを入れてもよい。 + 将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+=" + と "-=" を使うこと |add-option-flags| 。 + NOTE: このオプションは 'compatible' がオンのときはVi互換の方の値に設定 + され、オプション 'compatible' がオフのときはVim互換の方の値に設定される + ので注意すること。 + + フラグ 動作 ~ + a これが含まれると、コマンド ":read" にファイル名の引数を + 与えたとき、そのファイルをカレントウィンドウの代替ファ + イルに設定する。 + A これが含まれると、コマンド ":write" にファイル名の引数 + を与えたとき、そのファイルをカレントウィンドウの代替ファ + イルに設定する。 + b コマンド ":map" 内の "\|" がコマンドの終端と見なされる + ようになる。'\' がキーマッピングに含まれていても、'|' + の次のテキストは次のコマンドと見なされる。'|' をキーマッ + ピングに含めるには、バックスラッシュ (訳注: 文書先頭を + 参照) でなく CTRL-V を使うこと。キーマッピング、略語、 + メニュー、autocmd コマンドの全てに適用される。 + |map_bar| も参照すること。 + B バックスラッシュ (訳注: 文書先頭を参照) が、":menu" コ + マンドのメニューから実行される部分、キーマッピング、略 + 語において、特別な意味を持たなくなる。バックスラッシュ + を CTRL-V のように使いたいのならこのフラグを除くこと。 + 例えば、":map X \<Esc>" というコマンドで X がマップさ + れるのは: + 'B' が含まれたとき: "\^[" (^[ は本当の <Esc>) + 'B' が除かれたとき: "<Esc>" (5個の文字) + (どちらの場合も '<' フラグが除かれているとする) + c (訳注: 検索でマッチする文字列があった後) カーソル位置 + のマッチの終わりから次の検索を行う。このフラグが含まれ + ないと、次の検索はカーソル位置の1文字後から始まる。'c' + フラグが含まれると、"/abab" で検索したとき + "abababababab" には3回しかマッチしないが、'c' フラグが + 含まれないと5回マッチする。 + C コマンド ":source" で読み込まれたファイルのうち、バック + スラッシュ(訳注: 文書先頭を参照) で始まる行を連結しな + い。|line-continuation| を参照すること。 + d オプション 'tags' 内で "./" という記法を使ったとき、タ + グファイルはカレントファイルのディレクトリでなく、カレ + ントディレクトリから探す。 + D |r|, |f| や |t| コマンドのような、文字を引数に取る + Normalモードコマンドの後で、CTRL-K コマンドによるダイ + グラフの入力ができなくなる。 + e ":@r" でレジスタの内容を実行するとき、レジスタが行単位 + の効果を持たないときでも、常に最終行に <CR> を付け加え + る。このフラグが含まれないときは、レジスタの内容が行単 + 位の効果を持たず、かつ <CR> で終わらないならば、実行す + ると最終行はコマンドラインに表示され、<CR> を打ち込む + までは編集できる。 + E 空の範囲に "y", "d", "c", "g~", "gu", "gU" などのコマ + ンドを使うとエラーになる。オペレータは作用する対象が最 + 低でも1文字ないと使えない。例: + これが含まれると、最初の桁で "y0" を行うとエラーになる。 + f これが含まれると、カレントバッファにファイル名がまだ設 + 定されていないなら、コマンド ":read" にファイル名の引数 + を与えたとき、そのファイル名をカレントバッファのファイ + ル名に設定する。 + F これが含まれると、カレントバッファにファイル名がまだ設 + 定されていないなら、コマンド ":write" にファイル名の引 + 数を与えたとき、そのファイル名をカレントバッファのファ + イル名に設定する。 + g コマンド ":edit" を引数なしで使うと1行目に移動する。 + i これが含まれると、ファイルの読み込み中に中断が起きたと + き、ファイルは変更されたままになる。 + j 行の連結時に、'.' の後にのみ空白を2個追加し、'!' や + オプション '?' の後にはそうしない。'joinspaces' も参照 + すること。 + J 文 |sentence| は '.', '!' または '?' の後に2個の空白を + 伴わなければならない。<Tab> は空白とは見なされない。 + k コマンド ":menu" のメニューから実行される部分、キーマッ + ピング、略語において、直接入力されたキーコードを認識し + ない。例えば、<Key> が ^[OA を送るなら (ここで ^[ は + <Esc>)、":map X ^[OA" というコマンドで X がマップされ + るのは: + 'k' が含まれたとき: "^[OA" (3個の文字) + 'k' が除かれたとき: "<Key>" (1個のキーコード) + 下の '<' フラグも参照すること。 + K キーマッピングの途中で、キーコードが完全に入力されるの + を待たない。 + Don't wait for a key code to complete when it is + halfway a mapping. This breaks mapping <F1><F1> when + only part of the second <F1> has been read. こうすると + <F1><Esc> と打ち込めばマッピングをキャンセルできる。 + l 検索パターンの [] 範囲内で、バックスラッシュ (訳注: 文 + 書先頭を参照) は文字通りに解釈され、"\]" だけが特別な + 意味を持つ。|/[]| を参照すること。 + 'l' が含まれたとき: + "/[ \t]" がマッチするのは <Space>, '\' と 't' + 'l' が除かれたとき: + "/[ \t]" がマッチするのは <Space> と <Tab> + L オプション 'list' がオンのとき、 'wrapmargin' オプショ + ン、オプション 'textwidth' とVirtual replaceモード + (|gR| を参照) で、<Tab> の普通の数え方をせず、2文字に + 数える。 + m これが含まれると、対応する括弧の表示を1/2秒待つ。含ま + れていないと、対応する括弧の表示を1/2秒または次の文字 + が打ち込まれるまで待つ。|'showmatch'| を参照すること。 + n これが含まれると、オプション 'number' による行番号表示 + に使われる桁も、折り返された行の表示に使われる。 + o 検索コマンドの行オフセットを、次回の検索のために保存し + ない。 + O ファイルが上書きされたとき、編集を始めたときにはそのファ + イルが存在しなかった場合でも警告しない。これは別人に突 + 然作り出されたファイルに対する防御である。Viはこれに警 + 告を出さなかった。 + p Vi互換のLisp用インデント。これが含まれないと、いくらか + 良いアルゴリズムが使われる。 + r リドゥ (コマンド "." ) で検索を繰り返すとき、実際に以前 + 使われた検索文字列でなくコマンド "/" を使う。 + s バッファに初めて移動する時点でバッファのオプションが設 + 定される。これは Vim version 3.0 と同じ動作である。そ + して既定ではこの動作を行う。これが含まれないと、オプショ + ンはバッファが作られた時点で設定される。 + S バッファのオプションを常にバッファに移動する時点で設定 + する ('readonly', 'fileformat', 'filetype' と 'syntax' + オプション以外)。これは (ほとんど) Vi互換の設定である。 + オプションはカレントバッファ内で設定される。ユーザがオ + プションの値を変更し、その後で別のバッファに移ると、そ + の値はコピーされる。事実上、バッファのオプションを全て + のバッファに対しグローバルにしている。 + + 's' 'S' バッファのオプションをコピーするタイミング + オフ オフ バッファが作られた時点 + オン オフ バッファに初めて移動した時点 (既定) + なし オン バッファに移動するたび (vi互換) + + t タグコマンドの検索パターンがコマンド "n" にも使われる。 + これが含まれないと、検索パターンの履歴には加えられるが、 + 最終検索パターンは変化しない。 + u アンドゥがVi互換になる。|undo-two-ways| を参照すること。 + w 空白の上でコマンド "cw" を使ったとき、1文字だけ変更し + て、次の単語の始まりまでの空白は変更しない。 + W 読み込み専用ファイルを上書きしない。これが含まれないと、 + 可能であればコマンド ":w!" で読み込み専用ファイルも上 + 書きできる。 + x コマンドラインで <Esc> を打ち込むとコマンドを実行する。 + Vimでの既定ではコマンドライン入力を中止して元のモード + に戻る。それは <Esc> は普通はコマンドの中止に使われる + からである。|c_<Esc>| を参照すること。 + y コピーコマンドをコマンド "." でリドゥできる。 + ! フィルタコマンドをリドゥするとき、何であってもとにかく + 最後に実行された外部コマンドを使う。これが含まれないと、 + 最後に実行された「フィルタ」コマンドが使われる。 + $ 1行に対して変更をするとき、行を再描画せず、代わりに変 + 更されたテキストの最後に '$' を表示する。変更されたテ + キストはユーザが新しいテキストを入力したときに上書きさ + れる。その行はユーザがカーソルを挿入点から動かすコマン + ドを入力したときに再描画される。 + % コマンド "%" でVi互換の対応検索が行われる。 + "#if", "#endif" などを認識しない。 + "/*" と "*/" を認識しない。 + 単引用符または二重引用符の内部の括弧も数えられる。する + と括弧を含む文字列が対応を乱すことになる。例えば、 + "if (strcmp("foo(", s))" などでは最初の括弧と最後の括 + 弧はマッチしない。これが含まれないと、単引用符または二 + 重引用符の内部の括弧は特別な扱いを受ける。引用符の外部 + の括弧の対応を調べるときは、引用符の内部は一切無視され + る。引用符の内部の括弧の対応を調べるときは、対応する括 + 弧を探す (存在すれば)。これはC言語プログラムではとても + 良く機能する。 + * コマンド ":*" コマンドを ":@" と同じように扱う。これが + 含まれないと、コマンド ":*" は ":'<,'>" へのエイリアス + であり、Visualエリアを選択する。 + < コマンド ":menu" のメニューから実行される部分、キーマッ + ピング、略語において、|<>| 記法による特殊キーの認識を + 行わない。例えば、":map X <Tab>" というコマンドで X が + マップされるのは: + '<' が含まれたとき: "<Tab>" (5個の文字) + '<' が除かれたとき: "^I" (^I は本当の <Tab>) + 上の 'k' フラグも参照すること。 + + *'cscopepathcomp'* *'cspc'* +'cscopepathcomp' 'cspc' 数値 (既定では 0) + グローバル + {Vi にはない} + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 + 用可能} + タグのリストの中でいくつのパスのコンポーネントを表示するかを指定する。 + |cscopepathcomp| を参照すること。 + + *'cscopeprg'* *'csprg'* +'cscopeprg' 'csprg' 文字列 (既定では "cscope") + グローバル + {Vi にはない} + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 + 用可能} + Cscope を実行するコマンド名を指定する。|cscopeprg| を参照すること。 + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'* +'cscopetag' 'cst' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 + 用可能} + タグコマンドに cscope を使う。|cscope-options| を参照すること。 + NOTE: このオプションはオプション 'compatible' がオンに設定されたときに + オフに設定されるので注意すること。 + + *'cscopetagorder'* *'csto'* +'cscopetagorder' 'csto' 数値 (既定では 0) + グローバル + {Vi にはない} + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 + 用可能} + コマンド ":cstag" が検索を行う順番を指定する。|cscopetagorder| を参照す + ること。 + NOTE: このオプションはオプション 'compatible' がオンに設定されたときに + 0 に設定されるので注意すること。 + + *'cscopeverbose'* *'csverb'* + *'nocscopeverbose'* *'nocsverb'* +'cscopeverbose' 'csverb' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 + 用可能} + {Vi にはない} + Cscope のデータベースに情報を追加するときメッセージを表示する。 + |cscopeverbose| を参照すること。 + NOTE: このオプションはオプション 'compatible' がオンに設定されたときに + オフに設定されるので注意すること。 + + *'debug'* +'debug' 文字列 (既定では "") + グローバル + {Vi にはない} + 値が "msg" に設定されると、省かれるはずのエラーメッセージも表示される + ようになる。これはオプション 'foldexpr' オプションや 'indentexpr' をデ + バッグするのに便利である。 + + *'define'* *'def'* +'define' 'def' 文字列 (既定では "^#\s*define") + グローバル/バッファについてローカル |global-local| + {Vi にはない} + マクロ定義を発見するのに使われるパターンを指定する。値はコマンド "/" + で使うのと同様の検索パターンである。このオプションはコマンド "[i" や + コマンド "[d" など |include-search| に使われる。オプション 'isident' は + マッチした部分の後の定義された名前を認識するのに使われる: + {match with 'define'}{non-ID chars}{defined name}{non-ID char} + 値に空白やバックスラッシュを含めるためにバックスラッシュを挿入すること + に関しては、|option-backslash| を参照すること (訳注: 文書先頭も)。 + 値は既定ではC言語プログラム用である。C++言語プログラムには、定数定義を + 加えて次のようにすると便利だろう: > + ^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\) +< コマンド ":set" で設定するときは、バックスラッシュの数を2倍にする必要が + ある! + + *'delcombine'* *'deco'* +'delcombine' 'deco' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+multi_byte| 機能付きでコンパイルされたときの + み使用可能} + ユニコードのファイルを編集する際にこのオプションがオンならば、バックス + ペースとNormalモードのコマンド "x" はそれぞれの文字の上の combining + character のみを削除する。オフのときは (これが既定値である) combining + character と文字は同時に削除される。 + + このオプションは、ヘブライ語その他の言語で、ベースとなる文字の上に + combining character が付き、combining character のみを削除したいときに + 便利である。 + + *'dictionary'* *'dict'* +'dictionary' 'dict' 文字列 (既定では "") + グローバル/バッファについてローカル |global-local| + {Vi にはない} + コンマ区切りのファイル名のリスト。キーワード補完コマンド + |i_CTRL-X_CTRL-K| 用の単語を探すために使われる。単語のリストからなるファ + イルを指定する。その中では1行ごとに1語が並べられていてもよいし、1行に + キーワードでない文字 (空白文字を推奨) で区切られた数語が並んでいてもよ + い。1行の文字数の最大値は510バイト分である (訳注: 日本語のいわゆる全角 + 文字では半分の255文字)。 + ファイル名にコンマを含めるには、コンマの前にバックスラッシュを置くこと。 + コンマの後ろの空白は無視されるが、それ以外の空白はファイル名の一部とし + て扱われる。バックスラッシュの使い方については |option-backslash| を参 + 照すること (訳注: 文書先頭も参照すること)。 + 単語リストはどこで見つかるか? + - FreeBSDでは、"/usr/share/dict/words" というファイルがある。 + - Simtelアーカイブでは、"msdos/linguist" ディレクトリを探すこと。 + - GNUコレクションでは、"miscfiles" の中にある。 + リストにディレクトリを追加するときには |:set+=| コマンド、リストからディ + レクトリを除くときには |:set-=| コマンドを使うのがよい。こうすると将来 + のヴァージョンで異なった既定値が使われるようになったときに、問題が起き + るのを防げる。 + 安全上の理由から、バックティック (`) をこのオプションの値に使うことは + できない。 + + *'diff'* *'nodiff'* +'diff' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+diff| 機能付きでコンパイルされたときのみ使用 + 可能} + カレントウィンドウをファイル間の差異を示すウィンドウのグループに組み入 + れる。|vimdiff| を参照すること。 + + *'dex'* *'diffexpr'* +'diffexpr' 'dex' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+diff| 機能付きでコンパイルされたときのみ使用 + 可能} + 2個のファイル間の差異を求める際に、ed形式のdiffファイルを求めるために + 評価されるexpressionを指定する。|diff-diffexpr| を参照すること。 + + *'dip'* *'diffopt'* +'diffopt' 'dip' 文字列 (既定では "filler") + グローバル + {Vi にはない} + {Vi mが |+diff| 機能付きでコンパイルされたときのみ使用 + 可能} + Diffモード用のオプションを設定する。このオプションの値には、以下の文字 + 列をコンマで区切ったものが設定できる。 + + filler 片方のウィンドウ内のテキストのある位置に行が挿 + 入されていたときに、ウィンドウのスクロールを同 + 調させるために、埋め立て用の行を表示する。ウィ + ンドウが隣り合っていて、'scrollbind' オプショ + ンがオンのときには大抵便利である。 + + context:{n} 変更のあった行と、変更がなく折り畳まれている行 + の間に、{n} 行分の「コンテキスト」を表示する。 + これが設定されていないと、コンテキストは6行に + なる。|fold-diff| を参照すること。 + + icase テキストの大文字と小文字の違いを無視する。"a" + と "A" は同じものと見なされる。'diffexpr' オプ + ションの値が空なら、コマンド "diff" に "-i" フ + ラグを追加する。 + + iwhite 空白の数の違いを無視する。'diffexpr' オプショ + ンの値が空なら、コマンド "diff" に "-b" フラグ + を追加する。これが正確には何を指定しているのか + についてはコマンド "diff" のドキュメントを参照 + すること。これは後ろに追加された空白は無視する + が、前に追加された空白は無視しないはずである。 + + 例: > + + :set diffopt=filler,context:4 + :set diffopt= + :set diffopt=filler +< + *'digraph'* *'dg'* *'nodigraph'* *'nodg'* +'digraph' 'dg' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+digraphs| 機能付きでコンパイルされたときのみ + 使用可能} + Insertモードで{char1} <BS> {char2} でダイグラフを入力できるようにする。 + |digraphs| を参照すること。 + NOTE: このオプションはオプション 'compatible' がオンに設定されたときに + オフに設定されるので注意すること。 + + *'directory'* *'dir'* +'directory' 'dir' 文字列 (Amigaでの既定値: ".,t:", + MS-DOSとWin32での既定値: ".,c:\tmp,c:\temp" + Unixでの既定値: ".,~/tmp,/var/tmp,/tmp") + グローバル + スワップファイル用のディレクトリ名を、コンマで区切って指定する。 + - スワップファイルは、リスト内の利用できるディレクトリのうち、先頭のディ + レクトリの中に作られる。 + - 値が空だとスワップファイルは作られない (回復は不可能になる!)。 + - ディレクトリに "." を指定すると、編集されているファイルと同じディレ + クトリにスワップファイルが作られる。Unixではファイル名の先頭にドット + が追加されるので、ディレクトリ内のファイル一覧には表示されない。 + - "./" で始まるディレクトリ (MS-DOSなどでは ".\") を指定すると、編集さ + れているファイルからの相対的な位置にスワップファイルが作られる。先頭 + の "." は編集されているファイルのパス名に置換される。 + - UnixとWin32では、指定されたディレクトリ名の末尾がディレクトリの区切 + り記号2個で終わっていたら、スワップファイルの名前はフルパスに従って + 付けられる。スワップファイルのファイル名をフルパス形式で表し、ディレ + クトリの区切り文字をパーセント記号 '%' で置き換えたものが使われる。 + こうするとスワップファイル格納用ディレクトリの中でも、ファイル名の一 + 意性が保証される。 + - コンマの後の空白は無視されるが、その他の場所の空白はディレクトリ名の + 一部と見なされる。ディレクトリ名の先頭に空白を指定したいなら、バック + スラッシュを前に付けること。 + - コンマをディレクトリ名の一部に使いたいなら、バックスラッシュを前に付 + けること。 + - ディレクトリ名は ':' や '/' で終わっていてもよい。 + - 環境変数は展開される |:set_env|。 + - '\' の扱いには注意すること。空白の前には1個置く。値の中に指定するに + は2個置く (|option-backslash| を参照すること)。例: > + :set dir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces +< - Vim version 3.0 との後方互換性のために、値の先頭に '>' を置いてもそ + れは無視される。 + リストの先頭には "." を指定することを推奨する。こうすると、同じファイ + ルを2重に編集しようとすると警告が出る。Unixでディレクトリ "/tmp" を使 + うのはお勧めできない。システムがクラッシュすると、スワップファイルも失 + われてしまう。ディレクトリ "/var/tmp" の中はリブート時にも大抵クリアさ + れないので、ディレクトリ "/tmp" よりもよい選択である。しかしその中には + 多くのファイルが入っているかもしれないので、ユーザのスワップファイルは + 他のファイルに紛れて分からなくなってしまうかもしれない。ユーザのホーム + ディレクトリ内のディレクトリ "tmp" が最初に試されるのはそのためだ。 + リストにディレクトリを追加するときにはコマンド |:set+=|、リストからディ + レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来 + のヴァージョンで異なった既定値が使われるようになったときに、問題が起き + るのを防げる。 + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + {Vi: tempファイルを作るディレクトリを指定する。既定では "/tmp"} + + *'display'* *'dy'* +'display' 'dy' 文字列 (既定では "") + グローバル + {Vi にはない} + テキスト表示の方法を変える。値はフラグのコンマ区切りのリストである: + lastline これが含まれると、ウィンドウの最後の行ができる限りまで + 表示される。含まれないと、最後の行が収まりきらないなら + その行は "@" と表示される。 + uhex 印刷できない文字を (訳注: つまり、表示できる文字に対応 + していない文字コードを) <xx> という形式で16進数表示し、 + ^C や ~C の形式を使わない。 + + *'eadirection'* *'ead'* +'eadirection' 'ead' 文字列 (既定では "both") + グローバル + {Vi にはない} + {Vi mが |+vertsplit| 機能付きでコンパイルされたときの + み使用可能} + オプション 'equalalways' が適用されるときに、 + ver ウィンドウの高さにのみ影響がある + hor ウィンドウの幅にのみ影響がある + both ウィンドウの高さと幅、両方に影響がある + + *'ed'* *'edcompatible'* *'noed'* *'noedcompatible'* +'edcompatible' 'ed' 切替 (既定ではオフ) + グローバル + コマンド ":substitute" のフラグ 'g' とフラグ 'c' を、次に別の方を指定 + するまでずっと効力を持つようにする。|complex-change| を参照すること。 + オプション 'gdefault' も参照すること。 + このオプションをオンに設定するのは推奨できない! + + *'encoding'* *'enc'* +'encoding' 'enc' 文字列 (既定では "latin1" + または環境変数 $LANG によって決まる値) + グローバル + {Vi にはない} + {Vi mが |+multi_byte| 機能付きでコンパイルされたときの + み使用可能} + Vim内部で使われる文字エンコーディングを設定する。そのエンコーディング + はバッファやレジスタ内のテキスト、expression内の文字列、viminfo ファイ + ル内のテキストなどに適用される。つまり、このオプションはVimの通常扱う + 文字の種類を設定する。指定できる値については |encoding-names| を参照す + ること。 + + NOTE: このオプションの値を変更しても、Vim内部の既存のテキストのエンコー + ディングは変化しないので注意すること。マルチバイト文字がおかしくなる恐 + れもある。既定の値から変更しないか、Vimが立ち上がるときに限って設定す + ること。|multibyte| を参照すること。 + + 編集するファイルの文字エンコーディングはオプション 'encoding' の値と異 + なってもよい。そちらはオプション 'fileencoding' で設定される。エンコー + ディングの変換は組み込み関数 iconv() またはオプション 'charconvert' で + 指定される expression によってなされる。 + + 普通、オプション 'encoding' の値はユーザのカレントロケールと同じである。 + Vimがユーザの環境設定を認識したならば、それが既定値になる。オプション + 'encoding' の値がカレントロケールに設定されていなければ、入力されたテ + キストと表示されるテキストを変換するために、オプション 'termencoding' + が設定されていなければならない。|encoding-table| を参照すること。 + + このオプションを設定すると、必要に応じてフォントを設定できるように、 + |autocommand| のイベント |EncodingChanged| が発生する。 + + オプションが設定されると、値は小文字に変換される。そのため、値を大文字 + で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。 + エンコーディングが認識されると、値は標準の名前に変換される。例えば + "Latin-1" は "latin1" に、"ISO_88592" は "iso-8859-2" に、"utf8" は + "utf-8" になる。 + + Note: "latin1" という値は、エンコーディングを判別できなかったときにも + 使われるので注意すること。これが正しいのは、実際に latin1 エンコーディ + ングのファイルを編集するときだけである!実際の文字セットが latin1 でな + いときは、オプション 'fileencoding' とオプション 'fileencodings' の値 + が空であるのを確認すること。変換が必要なときは、utf-8 の使用に切り替え + ること。 + + 値が "unicode", "ucs-2" または "ucs-4" であるとき、Vim内部では utf-8が + 使われている。これにはユーザが編集中に注意を払うことはないが、 + |viminfo-file| については問題になる。またVimはターミナルも utf-8 を使 + うことを想定する。そのため、オプション 'encoding' の値を utf-8 でなく + 上記のいずれかの値に設定しても、オプション 'fileencoding' の値が空のと + きに編集するファイルのエンコーディングにしか影響がない。 + + オプション 'encoding' の値が Unicode の一種に設定され、オプション + 'fileencodings' がまだ設定されていなければ、オプション 'fileencodings' + の既定値は変更される。 + + *'endofline'* *'eol'* *'noendofline'* *'noeol'* +'endofline' 'eol' 切替 (既定ではオン) + バッファについてローカル + {Vi にはない} + ファイルを書き込むときに、このオプションがオフでオプション 'binary' が + オンならば、ファイルの最終行に <EOL> が書き込まれない。このオプション + はファイルの編集を始めるときには自動的にオンになる。ただし編集を始めた + ファイルの最終行に <EOL> がないときにはオフになる。普通はユーザがこの + オプションを設定する必要はない。オプション 'binary' がオフのときはこの + オプションの値は使われない。オプション 'binary' がオンのときには、ファ + イルの最終行に <EOL> があったかどうかを復元するためにこのオプションが + 使われる。そのため、ユーザがファイルを書き込むときに元のファイルの状態 + を保つことができる。しかし状態を変更することもできる。 + + *'equalalways'* *'ea'* *'noequalalways'* *'noea'* +'equalalways' 'ea' 切替 (既定ではオン) + グローバル + {Vi にはない} + オンのとき、ウィンドウを分割したり閉じたりした後、全てのウィンドウが自 + 動的に同じサイズになる。オフのときは、ウィンドウを分割するとカレントウィ + ンドウのサイズだけが減り、他のウィンドウに変化はない。ウィンドウを閉じ + ると、(オプション 'splitbelow' と 'splitright' の値に従って) 閉じたウィ + ンドウの隣のウィンドウの行数が増す。 + 水平に分割されたウィンドウと垂直に分割されたウィンドウが混ざっていると + きは、サイズの最小値が計算され、いくつかのウィンドウは (余裕があれば) + 大きくなる。オプション 'eadirection' はサイズの変化する方向を指定する。 + + *'equalprg'* *'ep'* +'equalprg' 'ep' 文字列 (既定では "") + グローバル/バッファについてローカル |global-local| + {Vi にはない} + コマンド "=" に使う外部プログラムを指定する。値が空のときは内部関数が + 整形に使われる (オプション 'lisp', 'cindent' または 'indentexpr')。 + 環境変数は展開される |:set_env|。値に空白やバックスラッシュ (訳注: 文 + 書先頭を参照すること) を含めることについては |option-backslash| を参照 + すること。 + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'errorbells'* *'eb'* *'noerrorbells'* *'noeb'* +'errorbells' 'eb' 切替 (既定ではオフ) + グローバル + エラーメッセージに伴ってベル (ビープ音または画面フラッシュ) を発生させ + る。このオプションはエラーメッセージにのみ適用され、メッセージのない多 + くのエラー (例えばNormalモードで <ESC> を打ち込んだとき) についてはベ + ルは常に使用される。ベルをビープ音にしたり、画面フラッシュにしたり、無 + 効にしたりするためにはオプション 'visualbell' を参照すること。 + + *'errorfile'* *'ef'* +'errorfile' 'ef' 文字列 (Amigaでの既定値: "AztecC.Err", + 他の既定値: "errors.err") + グローバル + {Vi にはない} + {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ + 使用可能} + QuickFixモードで使われるエラーファイルの名前 (|:cf| を参照すること)。 + コマンドライン引数 "-q" が指定されたときは、オプション 'errorfile' の + 値はそれに続く値に設定される。|-q| を参照すること。 + コマンド ":make" には「使われない」。それについてはオプション 'makeef' + を参照すること。 + 環境変数は展開される |:set_env|。値に空白やバックスラッシュ (訳注: 文 + 書先頭を参照すること) を含めることについては |option-backslash| を参照 + すること。 + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'errorformat'* *'efm'* +'errorformat' 'efm' 文字列 (既定値はとても長い) + グローバル/バッファについてローカル |global-local| + {Vi にはない} + {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ + 使用可能} + エラーファイルの内容の書式を、関数 scanf 風に指定する (|errorformat| + を参照すること)。 + + *'esckeys'* *'ek'* *'noesckeys'* *'noek'* +'esckeys' 'ek' (Vimの既定値: オン, Viの既定値: オフ) + グローバル + {Vi にはない} + このオプションをオンに設定すると、<Esc> で始まるファンクションキーも + Insertモードで認識されるようになる。このオプションがオフのときは、カー + ソルキーとファンクションキーは、<Esc> で始まるならInsertモードで使うこ + とができない。こうすることの利点は、 <Esc> を一回打ち込むだけですぐに + 認識され、1秒ほど待つ必要がないことだ。このオプションをオフにしなくて + も、オプション 'timeoutlen' とオプション 'ttimeoutlen' の値を変更して + もいいかもしれない。 Note オプション 'esckeys' がオフのときでも、どの + キーをマッピングすることもできるが、そのままではカーソルキーは使用でき + ないことに注意すること。 + NOTE: このオプションはオプション 'compatible' がオンに設定されたときに + はViの既定値に、オフに設定されたときにはVimの既定値に設定されるので注 + 意すること。 + + *'eventignore'* *'ei'* +'eventignore' 'ei' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+autocmd| 機能付きでコンパイルされたときのみ + 使用可能} + Autocommandのイベント名のうち、無視したいものをリストにして指定する。 + 値が "all" に設定されると、全ての autocommand のイベントが無視され、 + autocommand は実行されなくなる。 + そうしないとき、値にはイベント名のコンマ区切りのリストを指定する。例: > + :set ei=WinEnter,WinLeave +< + *'expandtab'* *'et'* *'noexpandtab'* *'noet'* +'expandtab' 'et' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + Insertモードで: <Tab> を挿入するのに、適切な数の空白を使う。また、コマ + ンド '>' や '<' によるインデントや、オプション 'autoindent' がオンのと + きのインデントでも空白を使う。オプション 'expandtab' がオンのときに本 + 当のタブを挿入するには、CTRL-V<Tab> を使うこと。|:retab| と + |ins-expandtab| も参照すること。 + NOTE: このオプションはオプション 'compatible' がオンに設定されたときオ + フに設定されるので注意すること。 + + *'exrc'* *'ex'* *'noexrc'* *'noex'* +'exrc' 'ex' 切替 (既定ではオフ) + グローバル + {Vi にはない} + カレントディレクトリ内のファイル .vimrc, .exrc や .gvimrc などの読み込 + みを行う。このオプションをオンにするなら、オプション 'secure' もオンに + するよう検討すること (|initialization| を参照すること)。ファイル + .exrc, .vimrc や .gvimrc でローカルなものを用いると潜在的な安全保護の + 漏れを招くので、注意して使うこと! + |.vimrc| と |gui-init| も参照すること。 + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'fileencoding'* *'fenc'* *E213* +'fileencoding' 'fenc' 文字列 (既定では "") + バッファについてローカル + {Vi mが |+multi_byte| 機能付きでコンパイルされたときの + み使用可能} + {Vi にはない} + カレントバッファ内のファイルの文字エンコーディングを設定する。 + オプション 'fileencoding' の値がオプション 'encoding' の値と異なるとき、 + ファイルの読み書きの際に文字エンコーディングの変換が行われる。 + オプション 'fileencoding' の値が空だと、オプション 'encoding' と同じ値 + が使われる (ファイルの読み書きの際に変換をしない)。 + 警告: 文字エンコーディングを変換すると、情報が失われるおそれが + ある!オプション 'encoding' の値が "utf-8" だと、変換は大抵成 + 功するし、逆変換をしても同じテキストになる。オプション + 'encoding' の値が "utf-8" でないときは、失われる文字があるかも + しれない! + 設定可能な値についてはオプション 'encoding' を参照すること。それらに加 + え、変換ツール (関数 iconv() またはオプション 'charconvert' に設定され + たもの) で変換可能なエンコーディングの値も設定できる。 + ファイルを読み込むときには、オプション 'fileencoding' の値はオプション + 'fileencodings' の値の中から設定される。 + あるエンコーディングのファイルを読み込むにはオプション 'fileencoding' + を設定してもだめで、引数 |++enc| を使う。 + "8bit-" や "2byte-" を頭に付けてもここでは意味がなく、無視される。 + オプションが設定されると、値は小文字に変換される。そのため、値を大文字 + で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。 + 値がオプション 'encoding' の値に含まれることが認識されると、値は標準の + 名前に変換される。例えば"ISO_88592" は "iso-8859-2" になる。 + ファイルの編集を始めた後にこのオプションを設定すると、オプション + 'modified' がオンになる。なぜならそのファイルの中身は、書き込まれると + きには違ったものになっているからである。 + このオプションは、オプション 'modifiable' がオフのときには設定できない。 + + *'fe'* + NOTE: Vim version 6.0 以前では、このオプションはVim全体の文字エンコー + ディングを指定していたことに注意すること。これは誤りだった。そのために + は代わりにオプション 'encoding' を使うこと。古い省略形式の名前は 'fe' + だが、これはもう使われていない。 + + *'fileencodings'* *'fencs'* +'fileencodings' 'fencs' 文字列 (既定値: "ucs-bom", + オプション 'encoding' の値がユニコードに設定さ + れたときは "ucs-bom,utf-8,latin1") + グローバル + {Vi mが |+multi_byte| 機能付きでコンパイルされたときの + み使用可能} + {Vi にはない} + このオプションには、ファイルの編集時に考慮される文字エンコーディングの + リストを指定する。 + ファイルが読み込まれたとき、Vimはこのオプションの値の先頭の文字エンコー + ディングを使おうとする。そのときエラーが発見されると、値のリスト内で次 + に並んでいるエンコーディングが試される。 + 有効なエンコーディングが見つかると、オプション 'fileencoding' の値がそ + れに設定される。 + 全て失敗した場合は、オプション 'fileencoding' の値は空に設定される。こ + れはオプション 'encoding' の値が使われていることを表す。 + 警告: 文字エンコーディングを変換すると、情報が失われるおそれが + ある!オプション 'encoding' の値が "utf-8" だと、変換は大抵成 + 功するし、逆変換をしても同じテキストになる。オプション + 'encoding' の値が "utf-8" でないときは、失われる文字があるかも + しれない! + ファイル先頭にユニコードの BOM (Byte Order Mark: バイト順マーク) があ + るかどうか調べるには、"ucs-bom" という特別な値が使える。この値を + "utf-8" 等のユニコード系の値よりも後に指定すると正しく機能しない。 + オプション 'fileencodings' の値が空のときにはオプション 'fileencoding' + の値は変更されない。設定可能な値についてはオプション 'encoding' を参照 + すること。それらに加え、変換ツール (関数 iconv() またはオプション + 'charconvert' に設定されたもの) で変換可能なエンコーディングの値も設定 + できる。 + 古いヴァージョンの GNU iconv() による変換は失敗することがある (Vimが与 + えがたいほど大きなバッファを要求するので)。別の実装の iconv() を手に入 + れてみること。 + オプション 'filecharcode' と違い、値を変更しても変換は行われない。 + + *'fileformat'* *'ff'* +'fileformat' 'ff' 文字列 (MS-DOS, MS-Windows, OS/2 での既定値: "dos", + Unix での既定値: "unix", + Macintosh での既定値: "mac") + バッファについてローカル + {Vi にはない} + バッファにファイルを読み込んだり、バッファからファイルに書き込んだりす + るときに使われる <EOL> を、カレントバッファについて設定する。 + dos <CR> <NL> + unix <NL> + mac <CR> + 値に "dos" が使われたとき、ファイル末尾の CTRL-Z は無視される。 + |file-formats| と |file-read| を参照すること。 + ファイルの文字エンコーディングについてはオプション 'fileencoding' を参 + 照すること。 + オプション 'binary' がオンのときは、オプション 'fileformat' の実際の値 + は無視され、ファイルの読み書きはこのオプションの値が "unix' に設定され + たように行われる。 + ファイルの編集を始めたときにオプション 'fileformats' の値が空でなく、 + オプション 'binary' がオフならば、オプション 'fileformat' は自動的に設 + 定される。 + ファイルの編集を始めた後にこのオプションを設定すると、オプション + 'modified' がオンになる。なぜならそのファイルの中身は、書き込まれると + きには違ったものになっているからである。 + このオプションは、オプション 'modifiable' がオフのときには設定できない。 + 後方互換性のために: このオプションの値が "dos" に設定されると、オプショ + ン 'textmode' がオンになり、それ以外ではオプション 'textmode' はオフに + なる。 + + *'fileformats'* *'ffs'* +'fileformats' 'ffs' 文字列 (default: + Vim+Vi MS-DOS, MS-Windows OS/2: "dos,unix", + Vim Unix: "unix,dos", + Vim Mac: "mac,unix,dos", + Vi Cygwin: "unix,dos", + Vi others: "") + グローバル + {Vi にはない} + This gives the end-of-line (<EOL>) formats that will be tried. It is + used when starting to edit a new buffer and when reading a file into + an existing buffer: + - When empty, the format defined with 'fileformat' will be used + always. It is not set automatically. + - When set to one name, that format will be used whenever a new buffer + is opened. 'fileformat' is set accordingly for that buffer. The + 'fileformats' name will be used when a file is read into an existing + buffer, no matter what 'fileformat' for that buffer is set to. + - When more than one name is present, separated by commas, automatic + <EOL> detection will be done when reading a file. When starting to + edit a file, a check is done for the <EOL>: + 1. If all lines end in <CR><NL>, and 'fileformats' includes "dos", + 'fileformat' is set to "dos". + 2. If a <NL> is found and 'fileformats' includes "unix", 'fileformat' + is set to "unix". Note that when a <NL> is found without a + preceding <CR>, "unix" is preferred over "dos". + 3. If 'fileformats' includes "mac", 'fileformat' is set to "mac". + This means that "mac" is only chosen when "unix" is not present, + or when no <NL> is found in the file, and when "dos" is not + present, or no <CR><NL> is present in the file. + Also if "unix" was first chosen, but the first <CR> is before + the first <NL> and there appears to be more <CR>'s than <NL>'s in + the file, then 'fileformat' is set to "mac". + 4. If 'fileformat' is still not set, the first name from + 'fileformats' is used. + When reading a file into an existing buffer, the same is done, but + this happens like 'fileformat' has been set appropriately for that + file only, the option is not changed. + When 'binary' is set, the value of 'fileformats' is not used. + + For systems with a Dos-like <EOL> (<CR><NL>), when reading files that + are ":source"ed and for vimrc files, automatic <EOL> detection may be + done: + - When 'fileformats' is empty, there is no automatic detection. Dos + format will be used. + - When 'fileformats' is set to one or more names, automatic detection + is done. This is based on the first <NL> in the file: If there is a + <CR> in front of it, Dos format is used, otherwise Unix format is + used. + Also see |file-formats|. + For backwards compatibility: When this option is set to an empty + 文字列 or one format (no comma is included), 'textauto' is reset, + otherwise 'textauto' is set. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'filetype'* *'ft'* +'filetype' 'ft' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + {Vi mが |+autocmd| 機能付きでコンパイルされたときのみ + 使用可能} + When this option is set, the FileType autocommand event is triggered. + All autocommands that match with the value of this option will be + executed. Thus the value of 'filetype' is used in place of the file + name. + Otherwise this option does not always reflect the current file type. + This option is normally set when the file type is detected. To enable + this use the ":filetype on" command. |:filetype| + Setting this option to a different value is most useful in a modeline, + for a file for which the file type is not automatically recognized. + Example, for in an IDL file: > + /* vim: set filetype=idl : */ +< |FileType| |filetypes| + Do not confuse this option with 'osfiletype', which is for the file + type that is actually stored with the file. + This option is not copied to another buffer, independent of the 's' or + 'S' flag in 'cpoptions'. + + *'fillchars'* *'fcs'* +'fillchars' 'fcs' 文字列 (default "vert:|,fold:-") + グローバル + {Vi にはない} + {not available when compiled without the |+windows| + and |+folding| features} + Characters to fill the statuslines and vertical separators. + It is a comma separated list of items: + + item default Used for ~ + stl:c ' ' or '^' statusline of the current window + stlnc:c ' ' or '-' statusline of the non-current windows + vert:c '|' vertical separators |:vsplit| + fold:c '-' filling 'foldtext' + diff:c '-' deleted lines of the 'diff' option + + Any one that is omitted will fall back to the default. For "stl" and + "stlnc" the space will be used when there is highlighting, '^' or '-' + otherwise. + + Example: > + :set fillchars=stl:^,stlnc:-,vert:\|,fold:-,diff:- +< This is similar to the default, except that these characters will also + be used when there is highlighting. + + The highlighting used for these items: + item highlight group ~ + stl:c StatusLine |hl-StatusLine| + stlnc:c StatusLineNC |hl-StatusLineNC| + vert:c VertSplit |hl-VertSplit| + fold:c Folded |hl-Folded| + diff:c DiffDelete |hl-DiffDelete| + + *'fkmap'* *'fk'* *'nofkmap'* *'nofk'* +'fkmap' 'fk' 切替 (既定ではオフ) *E198* + グローバル + {Vi にはない} + {Vi mが |+rightleft| 機能付きでコンパイルされたときの + み使用可能} + When on, the keyboard is mapped for the Farsi character set. + Normally you would set 'allowrevins' and use CTRL-_ in insert mode to + toggle this option |i_CTRL-_|. See |farsi.txt|. + + *'foldclose'* *'fcl'* +'foldclose' 'fcl' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + When set to "all", a fold is closed when the cursor isn't in it and + its level is higher than 'foldlevel'. Useful if you wants folds to + automatically close when moving out of them. + + *'foldcolumn'* *'fdc'* +'foldcolumn' 'fdc' 数値 (default 0) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + When non-zero, a column with the specified width is shown at the side + of the window which indicates open and closed folds. The maximum + value is 12. + See |folding|. + + *'foldenable'* *'fen'* *'nofoldenable'* *'nofen'* +'foldenable' 'fen' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + When off, all folds are open. This option can be used to quickly + switch between showing all text unfolded and viewing the text with + folds (including manually opened or closed folds). It can be toggled + with the |zi| command. The 'foldcolumn' will remain blank when + 'foldenable' is off. + This option is set by commands that create a new fold or close a fold. + See |folding|. + + *'foldexpr'* *'fde'* +'foldexpr' 'fde' 文字列 (既定では "0") + ウィンドウについてローカル + {Vi にはない} + {not available when compiled without the |+folding| + or |+eval| feature} + The expression used for when 'foldmethod' is "expr". It is evaluated + for each line to obtain its fold level. See |fold-expr|. Also see + |eval-sandbox|. + + *'foldignore'* *'fdi'* +'foldignore' 'fdi' 文字列 (既定では "#") + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + Used only when 'foldmethod' is "indent". Lines starting with + characters in 'foldignore' will get their fold level from surrounding + lines. White space is skipped before checking for this character. + The default "#" works well for C programs. See |fold-indent|. + + *'foldlevel'* *'fdl'* +'foldlevel' 'fdl' 数値 (既定では 0) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + Sets the fold level: Folds with a higher level will be closed. + Setting this option to zero will close all folds. Higher numbers will + close fewer folds. + This option is set by commands like |zm|, |zM| and |zR|. + See |fold-foldlevel|. + + *'foldlevelstart'* *'fdls'* +'foldlevelstart' 'fdls' 数値 (既定では -1) + グローバル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + Sets 'foldlevel' when starting to edit another buffer in a window. + Useful to always start editing with all folds closed (value zero), + some folds closed (one) or no folds closed (99). + This is done before reading any modeline, thus a setting in a modeline + overrules this option. Starting to edit a file for |diff-mode| also + ignores this option and closes all folds. + It is also done before BufReadPre autocommands, to allow an autocmd to + overrule the 'foldlevel' value for specific files. + When the value is negative, it is not used. + + *'foldmarker'* *'fmr'* +'foldmarker' 'fmr' 文字列 (既定では "{{{,}}}") + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + The start and end marker used when 'foldmethod' is "marker". There + must be one comma, which separates the start and end marker. The + marker is a literal string (a regular expression would be too slow). + See |fold-marker|. + + *'foldmethod'* *'fdm'* +'foldmethod' 'fdm' 文字列 (既定では "manual") + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + The kind of folding used for the current window. Possible values: + |fold-manual| manual Folds are created manually. + |fold-indent| indent Lines with equal indent form a fold. + |fold-expr| expr 'foldexpr' gives the fold level of a line. + |fold-marker| marker Markers are used to specify folds. + |fold-syntax| syntax Syntax highlighting items specify folds. + |fold-diff| diff Fold text that is not changed. + + *'foldminlines'* *'fml'* +'foldminlines' 'fml' 数値 (既定では 1) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + Sets the minimum number of screen lines for a fold to be displayed + closed. Also for manually closed folds. + Note that this only has an effect of what is displayed. After using + "zc" to close a fold, which is displayed open because it's smaller + than 'foldminlines', a following "zc" may close a containing fold. + + *'foldnestmax'* *'fdn'* +'foldnestmax' 'fdn' 数値 (既定では 20) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + Sets the maximum nesting of folds for the "indent" and "syntax" + methods. This avoids that too many folds will be created. Using more + than 20 doesn't work, because the internal limit is 20. + + *'foldopen'* *'fdo'* +'foldopen' 'fdo' 文字列 (既定では "block,hor,mark,percent,quickfix, + search,tag,undo") + グローバル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + Specifies for which type of commands folds will be opened, if the + command moves the cursor into a closed fold. It is a comma separated + list of items. + item commands ~ + all any + block "(", "{", "[[", "[{", etc. + hor horizontal movements: "l", "w", "fx", etc. + insert any command in Insert mode + jump far jumps: "G", "gg", etc. + mark jumping to a mark: "'m", CTRL-O, etc. + percent "%" + quickfix ":cn", ":crew", ":make", etc. + search search for a pattern: "/", "n", "*", "gd", etc. + tag jumping to a tag: ":ta", CTRL-T, etc. + undo undo or redo: "u" and CTRL-R + When the command is part of a mapping this option is not used. Add + the |zv| command to the mapping to get the same effect. + When a movement command is used for an operator (e.g., "dl" or "y%") + this option is not used. This means the operator will include the + whole closed fold. + Note that vertical movements are not here, because it would make it + very difficult to move onto a closed fold. + In insert mode the folds containing the cursor will always be open + when text is inserted. + To close folds you can re-apply 'foldlevel' with the |zx| command or + set the 'foldclose' option to "all". + + *'foldtext'* *'fdt'* +'foldtext' 'fdt' 文字列 (既定では "foldtext()") + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+folding| 機能付きでコンパイルされたときのみ + 使用可能} + An expression which is used to specify the text displayed for a closed + fold. See |fold-foldtext|. + + *'formatoptions'* *'fo'* +'formatoptions' 'fo' 文字列 (Vim default: "tcq", Vi default: "vt") + バッファについてローカル + {Vi にはない} + This is a sequence of letters which describes how automatic + formatting is to be done. See |fo-table|. When the 'paste' option is + on, no formatting is done (like 'formatoptions' is empty). Commas can + be inserted for readability. + To avoid problems with flags that are added in the future, use the + "+=" and "-=" feature of ":set" |add-option-flags|. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'formatprg'* *'fp'* +'formatprg' 'fp' 文字列 (既定では "") + グローバル + {Vi にはない} + The name of an external program that will be used to format the lines + selected with the "gq" command. The program must take the input on + stdin and produce the output on stdout. The Unix program "fmt" is + such a program. If this option is an empty string, the internal + format function will be used |C-indenting|. Environment variables are + expanded |:set_env|. See |option-backslash| about including spaces + and backslashes. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'gdefault'* *'gd'* *'nogdefault'* *'nogd'* +'gdefault' 'gd' 切替 (既定ではオフ) + グローバル + {Vi にはない} + When on, the ":substitute" flag 'g' is default on. This means that + all matches in a line are substituted instead of one. When a 'g' flag + is given to a ":substitute" command, this will toggle the substitution + of all or one match. See |complex-change|. + + command 'gdefault' on 'gdefault' off ~ + :s/// subst. all subst. one + :s///g subst. one subst. all + :s///gg subst. all subst. one + + NOTE: This option is reset when 'compatible' is set. + + *'grepformat'* *'gfm'* +'grepformat' 'gfm' 文字列 (default "%f:%l%m,%f %l%m") + グローバル + {Vi にはない} + Format to recognize for the ":grep" command output. + This is a scanf-like string that uses the same format as the + 'errorformat' option: see |errorformat|. + + *'grepprg'* *'gp'* +'grepprg' 'gp' 文字列 (default "grep -n ", + Unix: "grep -n $* /dev/null", + Win32: "findstr /n" or "grep -n", + VMS: "SEARCH/NUMBERS ") + グローバル/バッファについてローカル |global-local| + {Vi にはない} + Program to use for the ":grep" command. This option may contain '%' + and '#' characters, which are expanded like when used in a command- + line. The placeholder "$*" is allowed to specify where the arguments + will be included. Environment variables are expanded |:set_env|. See + |option-backslash| about including spaces and backslashes. + When your "grep" accepts the "-H" argument, use this to make ":grep" + also work well with a single file: > + :set grepprg=grep\ -nH +< See also the section |:make_makeprg|, since most of the comments there + apply equally to 'grepprg'. + For Win32, the default is "findstr /n" if "findstr.exe" can be found, + otherwise it's "grep -n". + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'guicursor'* *'gcr'* +'guicursor' 'gcr' 文字列 (default "n-v-c:block-Cursor/lCursor, + ve:ver35-Cursor, + o:hor50-Cursor, + i-ci:ver25-Cursor/lCursor, + r-cr:hor20-Cursor/lCursor, + sm:block-Cursor + -blinkwait175-blinkoff150-blinkon175") + グローバル + {Vi にはない} + {only available when compiled with GUI enabled, and + for MSDOS and Win32 console} + This option tells Vim what the cursor should look like in different + modes. The option is a comma separated list of parts. Each part + consist of a mode-list and an argument-list: + mode-list:argument-list,mode-list:argument-list,.. + The mode-list is a dash separated list of these modes: + n Normal mode + v Visual mode + ve Visual mode with 'selection' "exclusive" (same as 'v', + if not specified) + o Operator-pending mode + i Insert mode + r Replace mode + c Command-line Normal (append) mode + ci Command-line Insert mode + cr Command-line Replace mode + sm showmatch in Insert mode + a all modes + The argument-list is a dash separated list of these arguments: + hor{N} horizontal bar, {N} percent of the character height + ver{N} vertical bar, {N} percent of the character width + block block cursor, fills the whole character + [only one of the above three should be present] + blinkwait{N} *cursor-blinking* + blinkon{N} + blinkoff{N} + blink times for cursor: blinkwait is the delay before + the cursor starts blinking, blinkon is the time that + the cursor is shown and blinkoff is the time that the + cursor is not shown. The times are in msec. When one + of the numbers is zero, there is no blinking. The + default is: "blinkwait700-blinkon400-blinkoff250". + These numbers are used for a missing entry. This + means that blinking is enabled by default. To switch + blinking off you can use "blinkon0". The cursor only + blinks when Vim is waiting for input, not while + executing a command. + To make the cursor blink in an xterm, see + |xterm-blink|. + {group-name} + a highlight group name, that sets the color and font + for the cursor + {group-name}/{group-name} + Two highlight group names, the first is used when + no language mappings are used, the other when they + are. |language-mapping| + + Examples of parts: + n-c-v:block-nCursor in Normal, Command-line and Visual mode, use a + block cursor with colors from the "nCursor" + highlight group + i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150 + In Insert and Command-line Insert mode, use a + 30% vertical bar cursor with colors from the + "iCursor" highlight group. Blink a bit + faster. + + The 'a' mode is different. It will set the given argument-list for + all modes. It does not reset anything to defaults. This can be used + to do a common setting for all modes. For example, to switch off + blinking: "a:blinkon0" + + Examples of cursor highlighting: > + :highlight Cursor gui=reverse guifg=NONE guibg=NONE + :highlight Cursor gui=NONE guifg=bg guibg=fg +< + In an MSDOS or Win32 console, only the height of the cursor can be + changed. This can be done by specifying a block cursor, or a + percentage for a vertical or horizontal cursor. + + *'guifont'* *'gfn'* *E235* +'guifont' 'gfn' 文字列 (既定では "") + グローバル + {Vi にはない} + {only available when compiled with GUI enabled} + This is a list of fonts which will be used for the GUI version of Vim. + In its simplest form the value is just one font name. When + the font cannot be found you will get an error message. To try other + font names a list can be specified, font names separated with commas. + The first valid font is used. + When 'guifontset' is not empty, 'guifont' is not used. + Spaces after a comma are ignored. To include a comma in a font name + precede it with a backslash. Setting an option requires an extra + backslash before a space and a backslash. See also + |option-backslash|. For example: > + :set guifont=Screen15,\ 7x13,font\\,with\\,commas +< will make vim try to use the font "Screen15" first, and if it fails it + will try to use "7x13" and then "font,with,commas" instead. + *E236* + Note that the fonts must be mono-spaced (all characters have the same + width). + To preview a font on X11, you might be able to use the "xfontsel" + program. The "xlsfonts" program gives a list of all available fonts. + For Win32, GTK and Photon only: > + :set guifont=* +< will bring up a font requester, where you can pick the font you want. + If none of the fonts can be loaded, vim will keep the current setting. + If an empty font list is given, vim will try using other resource + settings (for X, it will use the Vim.font resource), and finally it + will try some builtin default which should always be there ("7x13" in + the case of X). The font names given should be "normal" fonts. Vim + will try to find the related bold and italic fonts. + For the Win32 GUI *E244* *E245* + - takes these options in the font name: + hXX - height is XX (points) + wXX - width is XX (points) + b - bold + i - italic + u - underline + s - strikeout + cXX - character set XX. valid charsets are: ANSI, ARABIC, + BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK, + HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS, + SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC. + + Use a ':' to separate the options. + - A '_' can be used in the place of a space, so you don't need to use + backslashes to escape the spaces. + - Example: > + :set guifont=courier_new:h12:w5:b:cRUSSIAN +< Have a look at <http://nova.bsuvc.bsu.edu/prn/monofont/> for + mono-spaced fonts and comments on them. + See also |font-sizes|. + + *'guifontset'* *'gfs'* *E250* *E252* *E234* +'guifontset' 'gfs' 文字列 (既定では "") + グローバル + {Vi にはない} + {only available when compiled with GUI enabled and + with the |+xfontset| feature} + When not empty, specifies two (or more) fonts to be used. The first + one for normal English, the second one for your special language. See + |xfontset|. + Setting this option also means that all font names will be handled as + a fontset name. Also the ones used for the "font" argument of the + |:highlight| command. + The fonts must match with the current locale. If fonts for the + character sets that the current locale uses are not included, setting + 'guifontset' will fail. + Note the difference between 'guifont' and 'guifontset': In 'guifont' + the comma-separated names are alternative names, one of which will be + used. In 'guifontset' the whole string is one fontset name, + including the commas. It is not possible to specify alternative + fontset names. + This example works on many X11 systems: > + :set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-* +< + *'guifontwide'* *'gfw'* *E231* +'guifontwide' 'gfw' 文字列 (既定では "") + グローバル + {Vi にはない} + {only available when compiled with GUI enabled} + When not empty, specifies a comma-separated list of fonts to be used + for double-width characters. The first font that can be loaded is + used. + Note: The size of these fonts must be exactly twice as wide as the one + specified with 'guifont' and the same height. + Only used when 'encoding' is set to "utf-8" and 'guifontset' is empty + or invalid. + When 'guifont' is set and a valid font is found in it and + 'guifontwide' is empty Vim will attempt to find a matching + double-width font and set 'guifontwide' to it. + + *'guiheadroom'* *'ghr'* +'guiheadroom' 'ghr' 数値 (既定では 50) + グローバル + {Vi にはない} {only for GTK and X11 GUI} + The number of pixels subtracted from the screen height when fitting + the GUI window on the screen. Set this before the GUI is started, + e.g., in your |gvimrc| file. When zero, the whole screen height will + be used by the window. When positive, the specified number of pixel + lines will be left for window decorations and other items on the + screen. Set it to a negative value to allow windows taller than the + screen. + + *'guioptions'* *'go'* +'guioptions' 'go' 文字列 (default "gmrLtT" (MS-Windows), + "agimrLtT" (GTK, Motif and Athena) + グローバル + {Vi にはない} + {only available when compiled with GUI enabled} + This option only has an effect in the GUI version of vim. It is a + sequence of letters which describes what components and options of the + GUI should be used. + To avoid problems with flags that are added in the future, use the + "+=" and "-=" feature of ":set" |add-option-flags|. + + Valid letters are as follows: + *guioptions_a* + 'a' Autoselect: If present, then whenever VISUAL mode is started, + or the Visual area extended, Vim tries to become the owner of + the windowing system's global selection. This means that the + Visually highlighted text is available for pasting into other + applications as well as into Vim itself. When the Visual mode + ends, possibly due to an operation on the text, or when an + application wants to paste the selection, the highlighted text + is automatically yanked into the "* selection register. + Thus the selection is still available for pasting into other + applications after the VISUAL mode has ended. + If not present, then Vim won't become the owner of the + windowing system's global selection unless explicitly told to + by a yank or delete operation for the "* register. + The same applies to the modeless selection. + + 'A' Autoselect for the modeless selection. Like 'a', but only + applies to the modeless selection. + + 'guioptions' autoselect Visual autoselect modeless ~ + "" - - + "a" yes yes + "A" - yes + "aA" yes yes + + 'c' Use console dialogs instead of popup dialogs for simple + choices. + 'f' Foreground: Don't use fork() to detach the GUI from the shell + where it was started. Use this for programs that wait for the + editor to finish (e.g., an e-mail program). Alternatively you + can use "gvim -f" or ":gui -f" to start the GUI in the + foreground. |gui-fork| + Note: Set this option in the vimrc file. The forking may have + happened already when the gvimrc file is read. + + 'i' Use a Vim icon. For GTK with KDE it is used in the left-upper + corner of the window. It's black&white on non-GTK, because of + limitations of X11. For a color icon, see |X11-icon|. + + 'm' Menu bar is present. + 'M' The system menu "$VIMRUNTIME/menu.vim" is not sourced. Note + that this flag must be added in the .vimrc file, before + switching on syntax or filetype recognition (when the .gvimrc + file is sourced the system menu has already been loaded; the + ":syntax on" and ":filetype on" commands load the menu too). + 'g' Grey menu items: Make menu items that are not active grey. If + 'g' is not included inactive menu items are not shown at all. + Exception: Athena will always use grey menu items. + + 't' Include tearoff menu items. Currently only works for Win32, + GTK+, and Motif 1.2 GUI. + 'T' Include Toolbar. Currently only in Win32, GTK+, Motif, and + Athena GUIs. + + 'r' Right-hand scrollbar is always present. + 'R' Right-hand scrollbar is present when there is a vertically + split window. + 'l' Left-hand scrollbar is always present. + 'L' Left-hand scrollbar is present when there is a vertically + split window. + 'b' Bottom (horizontal) scrollbar is present. + + And yes, you may even have scrollbars on the left AND the right if + you really want to :-). See |gui-scrollbars| for more information. + + 'v' Use a vertical button layout for dialogs. When not included, + a horizontal layout is preferred, but when it doesn't fit a + vertical layout is used anyway. + 'p' Use Pointer callbacks for X11 GUI. This is required for some + window managers. If the cursor is not blinking or hollow at + the right moment, try adding this flag. This must be done + before starting the GUI. Set it in your gvimrc. Adding or + removing it after the GUI has started has no effect. + 'F' Add a footer. Only for Motif. See |gui-footer|. + + *'guipty'* *'noguipty'* +'guipty' 切替 (既定ではオン) + グローバル + {Vi にはない} + {only available when compiled with GUI enabled} + Only in the GUI: If on, an attempt is made to open a pseudo-tty for + I/O to/from shell commands. See |gui-pty|. + + *'helpfile'* *'hf'* +'helpfile' 'hf' 文字列 (default (MSDOS) "$VIMRUNTIME\doc\help.txt" + (others) "$VIMRUNTIME/doc/help.txt") + グローバル + {Vi にはない} + Name of the help file. All help files should be placed together in + one directory. Environment variables are expanded |:set_env|. For + example: "$VIMRUNTIME/doc/help.txt". If $VIMRUNTIME is not set, $VIM + is also tried. Also see |$VIMRUNTIME| and |option-backslash| + about including spaces and backslashes. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'helpheight'* *'hh'* +'helpheight' 'hh' 数値 (既定では 20) + グローバル + {Vi にはない} + {Vi mが |+windows| 機能付きでコンパイルされたときのみ + 使用可能} + Minimal initial height of the help window when it is opened with the + ":help" command. The initial height of the help window is half of the + current window, or (when the 'ea' option is on) the same as other + windows. When the height is less than 'helpheight', the height is + set to 'helpheight'. Set to zero to disable. + + *'hidden'* *'hid'* *'nohidden'* *'nohid'* +'hidden' 'hid' 切替 (既定ではオフ) + グローバル + {Vi にはない} + When off a buffer is unloaded when it is |abandon|ed. When on a + buffer becomes hidden when it is |abandon|ed. If the buffer is still + displayed in another window, it does not become hidden, of course. + The commands that move through the buffer list sometimes make a buffer + hidden although the 'hidden' option is off: When the buffer is + modified, 'autowrite' is off or writing is not possible, and the '!' + flag was used. See also |windows.txt|. + This option is set for one command with ":hide {command}" |:hide|. + WARNING: It's easy to forget that you have changes in hidden buffers. + Think twice when using ":q!" or ":qa!". + + *'highlight'* *'hl'* +'highlight' 'hl' 文字列 (default (as a single string): + "8:SpecialKey,@:NonText,d:Directory, + e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg, + M:ModeMsg,n:LineNr,r:Question, + s:StatusLine,S:StatusLineNC,c:VertSplit + t:Title,v:Visual,w:WarningMsg,W:WildMenu, + f:Folded,F:FoldColumn") + グローバル + {Vi にはない} + This option can be used to set highlighting mode for various + occasions. It is a comma separated list of character pairs. The + first character in a pair gives the occasion, the second the mode to + use for that occasion. The occasions are: + |hl-SpecialKey| 8 Meta and special keys listed with ":map" + |hl-NonText| @ '~' and '@' at the end of the window and + characters from 'showbreak' + |hl-Directory| d directories in CTRL-D listing and other special + things in listings + |hl-ErrorMsg| e error messages + h (obsolete, ignored) + |hl-IncSearch| i 'incsearch' highlighting + |hl-Search| l last search pattern highlighting (see 'hlsearch') + |hl-MoreMsg| m |more-prompt| + |hl-ModeMsg| M Mode (e.g., "-- INSERT --") + |hl-LineNr| n line number for ":number" and ":#" commands + |hl-Question| r |hit-enter| prompt and yes/no questions + |hl-StatusLine| s status line of current window |status-line| + |hl-StatusLineNC| S status lines of not-current windows + |hl-Title| t Titles for output from ":set all", ":autocmd" etc. + |hl-VertSplit| c column used to separate vertically split windows + |hl-Visual| v Visual mode + |hl-VisualNOS| V Visual mode when Vim does is "Not Owning the + Selection" Only X11 Gui's |gui-x11| and + |xterm-clipboard|. + |hl-WarningMsg| w warning messages + |hl-WildMenu| W wildcard matches displayed for 'wildmenu' + |hl-Folded| f line used for closed folds + |hl-FoldColumn| F 'foldcolumn' + + The display modes are: + r reverse (termcap entry "mr" and "me") + i italic (termcap entry "ZH" and "ZR") + b bold (termcap entry "md" and "me") + s standout (termcap entry "so" and "se") + u underline (termcap entry "us" and "ue") + n no highlighting + - no highlighting + : use a highlight group + The default is used for occasions that are not included. + If you want to change what the display modes do, see |dos-colors| + for an example. + When using the ':' display mode, this must be followed by the name of + a highlight group. A highlight group can be used to define any type + of highlighting, including using color. See |:highlight| on how to + define one. The default uses a different group for each occasion. + See |highlight-default| for the default highlight groups. + + *'hlsearch'* *'hls'* *'nohlsearch'* *'nohls'* +'hlsearch' 'hls' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {not available when compiled without the + |+extra_search| feature} + When there is a previous search pattern, highlight all its matches. + The type of highlighting used can be set with the 'l' occasion in the + 'highlight' option. This uses the "Search" highlight group by + default. Note that only the matching text is highlighted, any offsets + are not applied. + See also: 'incsearch' and |:match|. + When you get bored looking at the highlighted matches, you can turn it + off with |:nohlsearch|. As soon as you use a search command, the + highlighting comes back. + When the search pattern can match an end-of-line, Vim will try to + highlight all of the matched text. However, this depends on where the + search starts. This will be the first line in the window or the first + line below a closed fold. A match in a previous line which is not + drawn may not continue in an newly drawn line. + NOTE: This option is reset when 'compatible' is set. + + *'history'* *'hi'* +'history' 'hi' 数値 (Vim default: 20, Vi default: 0) + グローバル + {Vi にはない} + A history of ":" commands, and a history of previous search patterns + are remembered. This option decides how many entries may be stored in + each of these histories (see |cmdline-editing|). + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'hkmap'* *'hk'* *'nohkmap'* *'nohk'* +'hkmap' 'hk' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+rightleft| 機能付きでコンパイルされたときの + み使用可能} + When on, the keyboard is mapped for the Hebrew character set. + Normally you would set 'allowrevins' and use CTRL-_ in insert mode to + toggle this option. See |rileft.txt|. + NOTE: This option is reset when 'compatible' is set. + + *'hkmapp'* *'hkp'* *'nohkmapp'* *'nohkp'* +'hkmapp' 'hkp' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+rightleft| 機能付きでコンパイルされたときの + み使用可能} + When on, phonetic keyboard mapping is used. 'hkmap' must also be on. + This is useful if you have a non-Hebrew keyboard. + See |rileft.txt|. + NOTE: This option is reset when 'compatible' is set. + + *'icon'* *'noicon'* +'icon' 切替 (default off, on when title can be restored) + グローバル + {Vi にはない} + {Vi mが |+title| 機能付きでコンパイルされたときのみ使 + 用可能} + When on, the icon text of the window will be set to the value of + 'iconstring' (if it is not empty), or to the name of the file + currently being edited. Only the last part of the name is used. + Overridden by the 'iconstring' option. + Only works if the terminal supports setting window icons (currently + only X11 GUI and terminals with a non-empty 't_IS' option - these are + Unix xterm and iris-ansi by default, where 't_IS' is taken from the + builtin termcap). + When Vim was compiled with HAVE_X11 defined, the original icon will be + restored if possible |X11|. See |X11-icon| for changing the icon on + X11. + + *'iconstring'* +'iconstring' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+title| 機能付きでコンパイルされたときのみ使 + 用可能} + When this option is not empty, it will be used for the icon text of + the window. This happens only when the 'icon' option is on. + Only works if the terminal supports setting window icon text + (currently only X11 GUI and terminals with a non-empty 't_IS' option). + Does not work for MS Windows. + When Vim was compiled with HAVE_X11 defined, the original icon will be + restored if possible |X11|. + When this option contains printf-style '%' items, they will be + expanded according to the rules used for 'statusline'. See + 'titlestring' for example settings. + {not available when compiled without the |+statusline| feature} + + *'ignorecase'* *'ic'* *'noignorecase'* *'noic'* +'ignorecase' 'ic' 切替 (既定ではオフ) + グローバル + Ignore case in search patterns. Also used when searching in the tags + file. + Also see 'smartcase'. + Can be overruled by using "\c" or "\C" in the pattern, see + |/ignorecase|. + + *'imactivatekey'* *'imak'* +'imactivatekey' 'imak' 文字列 (既定では "") + グローバル + {Vi にはない} + {only available when compiled with |+xim| and + |+GUI_GTK|} + Specifies the key that your Input Method in X-Windows uses for + activation. When this is specified correctly, vim can fully control + IM with 'imcmdline', 'iminsert' and 'imsearch'. + You can't use this option to change the activation key, the option + tells Vim what the key is. + Format: + [MODIFIER_FLAG-]KEY_STRING + + These characters can be used for MODIFIER_FLAG (case is ignored): + S Shift key + L Lock key + C Control key + 1 Mod1 key + 2 Mod2 key + 3 Mod3 key + 4 Mod4 key + 5 Mod5 key + Combinations are allowed, for example "S-C-space" or "SC-space" are + both shift+ctrl+space. + See <X11/keysymdef.h> and XStringToKeysym for KEY_STRING. + + Example: > + :set imactivatekey=S-space +< "S-space" means shift+space. This is the activation key for kinput2 + + canna (Japanese), and ami (Korean). + + *'imcmdline'* *'imc'* *'noimcmdline'* *'noimc'* +'imcmdline' 'imc' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {only available when compiled with the |+xim| + |+multi_byte_ime| or |global-ime| feature} + When set the Input Method is always on when starting to edit a command + line, unless entering a search pattern (see 'imsearch' for that). + Setting this option is useful when your input method allows entering + English characters directly, e.g., when it's used to type accented + characters with dead keys. + + *'imdisable'* *'imd'* *'nodisable'* *'noimd'* +'imdisable' 'imd' 切替 (既定ではオフ, on for some systems (SGI)) + グローバル + {Vi にはない} + {only available when compiled with the |+xim| + |+multi_byte_ime| or |global-ime| feature} + When set the Input Method is never used. This is useful to disable + the IM when it doesn't work properly. + Currently this option is on by default for SGI/IRIX machines. This + may change in later releases. + + *'iminsert'* *'imi'* +'iminsert' 'imi' 数値 (default 0, 2 when an input method is supported) + バッファについてローカル + {Vi にはない} + Specifies whether :lmap or an Input Method (IM) is to be used in + Insert mode. Valid values: + 0 :lmap is off and IM is off + 1 :lmap is ON and IM is off + 2 :lmap is off and IM is ON + 2 is available only when compiled with the |+multi_byte_ime|, |+xim| + or |global-ime|. + To always reset the option to zero when leaving Insert mode with <Esc> + this can be used: > + :inoremap <ESC> <ESC>:set iminsert=0<CR> +< This makes :lmap and IM turn off automatically when leaving Insert + mode. + Note that this option changes when using CTRL-^ in Insert mode + |i_CTRL-^|. + The value is set to 1 when setting 'keymap' to a valid keymap name. + It is also used for the argument of commands like "r" and "f". + The value 0 may not work correctly with Athena and Motif with some XIM + methods. Use 'imdisable' to disable XIM then. + + *'imsearch'* *'ims'* +'imsearch' 'ims' 数値 (default 0, 2 when an input method is supported) + バッファについてローカル + {Vi にはない} + Specifies whether :lmap or an Input Method (IM) is to be used when + entering a search pattern. Valid values: + -1 the value of 'iminsert' is used, makes it look like + 'iminsert' is also used when typing a search pattern + 0 :lmap is off and IM is off + 1 :lmap is ON and IM is off + 2 :lmap is off and IM is ON + Note that this option changes when using CTRL-^ in Insert mode + |c_CTRL-^|. + The value is set to 1 when it is not -1 and setting the 'keymap' + option to a valid keymap name. + The value 0 may not work correctly with Athena and Motif with some XIM + methods. Use 'imdisable' to disable XIM then. + + *'include'* *'inc'* +'include' 'inc' 文字列 (default "^#\s*include") + グローバル/バッファについてローカル |global-local| + {Vi にはない} + {not available when compiled without the + |+find_in_path| feature} + Pattern to be used to find an include command. It is a search + pattern, just like for the "/" command (See |pattern|). The default + value is for C programs. This option is used for the commands "[i", + "]I", "[d", etc.. The 'isfname' option is used to recognize the file + name that comes after the matched pattern. See |option-backslash| + about including spaces and backslashes. + + *'includeexpr'* *'inex'* +'includeexpr' 'inex' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + {not available when compiled without the + |+find_in_path| or |+eval| feature} + Expression to be used to transform the string found with the 'include' + option to a file name. Mostly useful to change "." to "/" for Java: > + :set includeexpr=substitute(v:fname,'\\.','/','g') +< The "v:fname" variable will be set to the file name that was detected. + Evaluated in the |sandbox|. + Also used for the |gf| command if an unmodified file name can't be + found. Allows doing "gf" on the name after an 'include' statement. + Also used for |<cfile>|. + + *'incsearch'* *'is'* *'noincsearch'* *'nois'* +'incsearch' 'is' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {not available when compiled without the + |+extra_search| feature} + While typing a search pattern, show immediately where the so far + typed pattern matches. The matched string is highlighted. If the + pattern is invalid or not found, nothing is shown. The screen will + be updated often, this is only useful on fast terminals. Note that + the match will be shown, but the cursor is not actually positioned + there. You still need to finish the search command with <CR> to move + the cursor. The highlighting can be set with the 'i' flag in + 'highlight'. See also: 'hlsearch'. + NOTE: This option is reset when 'compatible' is set. + + *'indentexpr'* *'inde'* +'indentexpr' 'inde' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + {not available when compiled without the |+cindent| + or |+eval| features} + Expression which is evaluated to obtain the proper indent for a line. + It is used when a new line is created, for the |=| operator and + in Insert mode as specified with the 'indentkeys' option. + When this option is not empty, it overrules the 'cindent' and + 'smartindent' indenting. + When 'paste' is set this option is not used for indenting. + The expression is evaluated with |v:lnum| set to the line number for + which the indent is to be computed. + The expression must return the number of spaces worth of indent. It + can return "-1" to keep the current indent (this means 'autoindent' is + used for the indent). + Functions useful for computing the indent are |indent()|, |cindent()| + and |lispindent()|. + The evaluation of the expression must not have side effects! It must + not change the text, jump to another window, etc. Afterwards the + cursor position is always restored, thus the cursor may be moved. + Normally this option would be set to call a function: > + :set indentexpr=GetMyIndent() +< Error messages will be suppressed, unless the 'debug' option contains + "msg". + See |indent-expression|. Also see |eval-sandbox|. + NOTE: This option is made empty when 'compatible' is set. + + *'indentkeys'* *'indk'* +'indentkeys' 'indk' 文字列 (default "0{,0},:,0#,!^F,o,O,e") + バッファについてローカル + {Vi にはない} + {Vi mが |+cindent| 機能付きでコンパイルされたときのみ + 使用可能} + A list of keys that, when typed in Insert mode, cause reindenting of + the current line. Only happens if 'indentexpr' isn't empty. + The format is identical to 'cinkeys', see |indentkeys-format|. + See |C-indenting| and |indent-expression|. + + *'infercase'* *'inf'* *'noinfercase'* *'noinf'* +'infercase' 'inf' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + When doing keyword completion in insert mode |ins-completion|, and + 'ignorecase' is also on, the case of the match is adjusted. If the + typed text contains a lowercase letter where the match has an upper + case letter, the completed part is made lowercase. If the typed text + has no lowercase letters and the match has a lowercase letter where + the typed text has an uppercase letter, and there is a letter before + it, the completed part is made uppercase. + + *'insertmode'* *'im'* *'noinsertmode'* *'noim'* +'insertmode' 'im' 切替 (既定ではオフ) + グローバル + {Vi にはない} + Makes Vim work in a way that Insert mode is the default mode. Useful + if you want to use Vim as a modeless editor. Used for |evim|. + These Insert mode commands will be useful: + - Use the cursor keys to move around. + - Use CTRL-O to execute one Normal mode command |i_CTRL-O|). When + this is a mapping, it is executed as if 'insertmode' was off. + Normal mode remains active until the mapping is finished. + *i_CTRL-L* + - Use CTRL-L to execute a number of Normal mode commands, then use + <Esc> to get back to Insert mode. + + These items change when 'insertmode' is set: + - when starting to edit of a file, Vim goes to Insert mode. + - <Esc> in Insert mode is a no-op and beeps. + - <Esc> in Normal mode makes Vim go to Insert mode. + - CTRL-L in Insert mode is a command, it is not inserted. + - CTRL-Z in Insert mode suspends Vim, see |CTRL-Z|. *i_CTRL-Z* + However, when <Esc> is used inside a mapping, it behaves like + 'insertmode' was not set. This was done to be able to use the same + mappings with 'insertmode' set or not set. + When executing commands with |:normal| 'insertmode' is not used. + + NOTE: This option is reset when 'compatible' is set. + + *'isfname'* *'isf'* +'isfname' 'isf' 文字列 (default for MS-DOS, Win32 and OS/2: + "@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,=" + for AMIGA: "@,48-57,/,.,-,_,+,,,$,:" + for VMS: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~" + for OS/390: "@,240-249,/,.,-,_,+,,,#,$,%,~,=" + otherwise: "@,48-57,/,.,-,_,+,,,#,$,%,~,=") + グローバル + {Vi にはない} + The characters specified by this option are included in file names and + path names. Filenames are used for commands like "gf", "[i" and in + the tags file. It is also used for "\f" in a |pattern|. + Multi-byte characters 256 and above are always included, only the + characters up to 255 are specified with this option. + For UTF-8 the characters 0xa0 to 0xff are included as well. + + Note that on systems using a backslash as path separator, Vim tries to + do its best to make it work as you would expect. That is a bit + tricky, since Vi originally used the backslash to escape special + characters. Vim will not remove a backslash in front of a normal file + name character on these systems, but it will on Unix and alikes. The + '&' and '^' are not included by default, because these are special for + cmd.exe. + + The format of this option is a list of parts, separated with commas. + Each part can be a single character number or a range. A range is two + character numbers with '-' in between. A character number can be a + decimal number between 0 and 255 or the ASCII character itself (does + not work for digits). Example: + "_,-,128-140,#-43" (include '_' and '-' and the range + 128 to 140 and '#' to 43) + If a part starts with '^', the following character number or range + will be excluded from the option. The option is interpreted from left + to right. Put the excluded character after the range where it is + included. To include '^' itself use it as the last character of the + option or the end of a range. Example: + "^a-z,#,^" (exclude 'a' to 'z', include '#' and '^') + If the character is '@', all characters where isalpha() returns TRUE + are included. Normally these are the characters a to z and A to Z, + plus accented characters. To include '@' itself use "@-@". Examples: + "@,^a-z" All alphabetic characters, excluding lower + case letters. + "a-z,A-Z,@-@" All letters plus the '@' character. + A comma can be included by using it where a character number is + expected. Example: + "48-57,,,_" Digits, command and underscore. + A comma can be excluded by prepending a '^'. Example: + " -~,^,,9" All characters from space to '~', excluding + comma, plus <Tab>. + See |option-backslash| about including spaces and backslashes. + + *'isident'* *'isi'* +'isident' 'isi' 文字列 (default for MS-DOS, Win32 and OS/2: + "@,48-57,_,128-167,224-235" + otherwise: "@,48-57,_,192-255") + グローバル + {Vi にはない} + The characters given by this option are included in identifiers. + Identifiers are used in recognizing environment variables and after a + match of the 'define' option. It is also used for "\i" in a + |pattern|. See 'isfname' for a description of the format of this + option. + Careful: If you change this option, it might break expanding + environment variables. E.g., when '/' is included and Vim tries to + expand "$HOME/.viminfo". Maybe you should change 'iskeyword' instead. + + *'iskeyword'* *'isk'* +'iskeyword' 'isk' 文字列 (Vim default for MS-DOS and Win32: + "@,48-57,_,128-167,224-235" + otherwise: "@,48-57,_,192-255" + Vi default: "@,48-57,_") + バッファについてローカル + {Vi にはない} + Keywords are used in searching and recognizing with many commands: + "w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See + 'isfname' for a description of the format of this option. For C + programs you could use "a-z,A-Z,48-57,_,.,-,>". + For a help file it is set to all non-blank printable characters except + '*', '"' and '|' (so that CTRL-] on a command finds the help for that + command). + When the 'lisp' option is on the '-' character is always included. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'isprint'* *'isp'* +'isprint' 'isp' 文字列 (default for MS-DOS, Win32, OS/2 and Macintosh: + "@,~-255"; otherwise: "@,161-255") + グローバル + {Vi にはない} + The characters given by this option are displayed directly on the + screen. It is also used for "\p" in a |pattern|. The characters from + space (ascii 32) to '~' (ascii 126) are always displayed directly, + even when they are not included in 'isprint' or excluded. See + 'isfname' for a description of the format of this option. + + Non-printable characters are displayed with two characters: + 0 - 31 "^@" - "^_" + 32 - 126 always single characters + 127 "^?" + 128 - 159 "~@" - "~_" + 160 - 254 "| " - "|~" + 255 "~?" + When 'encoding' is a Unicode one, illegal bytes from 128 to 255 are + displayed as <xx>, with the hexadecimal value of the byte. + When 'display' contains "uhex" all unprintable characters are + displayed as <xx>. + The NonText highlighting will be used for unprintable characters. + |hl-NonText| + + Multi-byte characters 256 and above are always included, only the + characters up to 255 are specified with this option. When a character + is printable but it is not available in the current font, a + replacement character will be shown. + Unprintable and zero-width Unicode characters are displayed as <xxxx>. + There is no option to specify these characters. + + *'joinspaces'* *'js'* *'nojoinspaces'* *'nojs'* +'joinspaces' 'js' 切替 (既定ではオン) + グローバル + {Vi にはない} + Insert two spaces after a '.', '?' and '!' with a join command. + When 'cpoptions' includes the 'j' flag, only do this after a '.'. + Otherwise only one space is inserted. + NOTE: This option is set when 'compatible' is set. + + *'key'* +'key' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + The key that is used for encrypting and decrypting the current buffer. + See |encryption|. + Careful: Do not set the key value by hand, someone might see the typed + key. Use the |:X| command. But you can make 'key' empty: > + :set key= +< It is not possible to get the value of this option with ":set key" or + "echo &key". This is to avoid showing it to someone who shouldn't + know. It also means you cannot see it yourself once you have set it, + be careful not to make a typing error! + + *'keymap'* *'kmp'* +'keymap' 'kmp' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + {Vi mが |+keymap| 機能付きでコンパイルされたときのみ使 + 用可能} + Name of a keyboard mapping. See |mbyte-keymap|. + Setting this option to a valid keymap name has the side effect of + setting 'iminsert' to one, so that the keymap becomes effective. + 'imsearch' is also set to one, unless it was -1 + + *'keymodel'* *'km'* +'keymodel' 'km' 文字列 (既定では "") + グローバル + {Vi にはない} + List of comma separated words, which enable special things that keys + can do. These values can be used: + startsel Using a shifted special key starts selection (either + Select mode or Visual mode, depending on "key" being + present in 'selectmode'). + stopsel Using a not-shifted special key stops selection. + Special keys in this context are the cursor keys, <End>, <Home>, + <PageUp> and <PageDown>. + The 'keymodel' option is set by the |:behave| command. + + *'keywordprg'* *'kp'* +'keywordprg' 'kp' 文字列 (default "man" or "man -s", DOS: "", + OS/2: "view /", VMS: "help") + グローバル + {Vi にはない} + Program to use for the |K| command. Environment variables are + expanded |:set_env|. When empty ":help" is used. + When "man" is used, Vim will automatically translate a count for the + "K" command to a section number. Also for "man -s", in which case the + "-s" is removed when there is no count. + See |option-backslash| about including spaces and backslashes. + Example: > + :set keywordprg=man\ -s +< 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'langmap'* *'lmap'* *E357* *E358* +'langmap' 'lmap' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+langmap| 機能付きでコンパイルされたときのみ + 使用可能} + This option allows switching your keyboard into a special language + mode. When you are typing text in Insert mode the characters are + inserted directly. When in command mode the 'langmap' option takes + care of translating these special characters to the original meaning + of the key. This means you don't have to change the keyboard mode to + be able to execute Normal mode commands. + This is the opposite of the 'keymap' option, where characters are + mapped in Insert mode. + This only works for 8-bit characters. The value of 'langmap' may be + specified with multi-byte characters (e.g., UTF-8), but only the lower + 8 bits of each character will be used. + + Example (for Greek): *greek* > + :set langmap=ÁA,ÂB,ØC,ÄD,ÅE,ÖF,ÃG,ÇH,ÉI,ÎJ,ÊK,ËL,ÌM,ÍN,ÏO,ÐP,QQ,ÑR,ÓS,ÔT,ÈU,ÙV,WW,×X,ÕY,ÆZ,áa,âb,øc,äd,åe,öf,ãg,çh,éi,îj,êk,ël,ìm,ín,ïo,ðp,qq,ñr,ós,ôt,èu,ùv,òw,÷x,õy,æz +< Example (exchanges meaning of z and y for commands): > + :set langmap=zy,yz,ZY,YZ +< + The 'langmap' option is a list of parts, separated with commas. Each + part can be in one of two forms: + 1. A list of pairs. Each pair is a "from" character immediately + followed by the "to" character. Examples: "aA", "aAbBcC". + 2. A list of "from" characters, a semi-colon and a list of "to" + characters. Example: "abc;ABC" + Example: "aA,fgh;FGH,cCdDeE" + Special characters need to be preceded with a backslash. These are + ";", ',' and backslash itself. + + This will allow you to activate vim actions without having to switch + back and forth between the languages. Your language characters will + be understood as normal vim English characters (according to the + langmap mappings) in the following cases: + o Normal/Visual mode (commands, buffer/register names, user mappings) + o Insert/Replace Mode: Register names after CTRL-R + o Insert/Replace Mode: Mappings + Characters entered in Command-line mode will NOT be affected by + this option. Note that this option can be changed at any time + allowing to switch between mappings for different languages/encodings. + Use a mapping to avoid having to type it each time! + + *'langmenu'* *'lm'* +'langmenu' 'lm' 文字列 (既定では "") + グローバル + {Vi にはない} + {only available when compiled with the |+menu| and + |+multi_lang| features} + Language to use for menu translation. Tells which file is loaded + from the "lang" directory in 'runtimepath': > + "lang/menu_" . &langmenu . ".vim" +< (without the spaces). For example, to always use the Dutch menus, no + matter what $LANG is set to: > + :set langmenu=nl_NL.ISO_8859-1 +< When 'langmenu' is empty, |v:lang| is used. + If your $LANG is set to a non-English language but you do want to use + the English menus: > + :set langmenu=none +< This option must be set before loading menus, switching on filetype + detection or syntax highlighting. Once the menus are defined setting + this option has no effect. But you could do this: > + :source $VIMRUNTIME/delmenu.vim + :set langmenu=de_DE.ISO_8859-1 + :source $VIMRUNTIME/menu.vim +< Warning: This deletes all menus that you defined yourself! + + *'laststatus'* *'ls'* +'laststatus' 'ls' 数値 (既定では 1) + グローバル + {Vi にはない} + The value of this option influences when the last window will have a + status line: + 0: never + 1: only if there are at least two windows + 2: always + The screen looks nicer with a status line if you have several + windows, but it takes another screen line. |status-line| + + *'lazyredraw'* *'lz'* *'nolazyredraw'* *'nolz'* +'lazyredraw' 'lz' 切替 (既定ではオフ) + グローバル + {Vi にはない} + When this option is set, the screen will not be redrawn while + executing macros, registers and other commands that have not been + typed. To force an update use |:redraw|. + + *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* +'linebreak' 'lbr' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {not available when compiled without the |+linebreak| + feature} + If on Vim will wrap long lines at a character in 'breakat' rather + than at the last character that fits on the screen. Unlike + 'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file, + it only affects the way the file is displayed, not its contents. The + value of 'showbreak' is used to put in front of wrapped lines. This + option is not used when the 'wrap' option is off or 'list' is on. + Note that <Tab> characters after an <EOL> are mostly not displayed + with the right amount of white space. + + *'lines'* +'lines' 数値 (default 24 or terminal height) + グローバル + 数値 of lines in the display. Normally you don't need to set this. + That is done automatically by the terminal initialization code. + When Vim is running in the GUI or in a resizable window, setting this + option may cause the window size to be changed. + When you set this option and Vim is unable to change the physical + 数値 of lines of the display, the display may be messed up. + + *'linespace'* *'lsp'* +'linespace' 'lsp' 数値 (default 0, 1 for Win32 GUI) + グローバル + {Vi にはない} + {only in the GUI} + 数値 of pixel lines inserted between characters. Useful if the font + uses the full character cell height, making lines touch each other. + When non-zero there is room for underlining. + + *'lisp'* *'nolisp'* +'lisp' 切替 (既定ではオフ) + バッファについてローカル + {Vi mが |+lispindent| 機能付きでコンパイルされたときの + み使用可能} + Lisp mode: When <Enter> is typed in insert mode set the indent for + the next line to Lisp standards (well, sort of). Also happens with + "cc" or "S". 'autoindent' must also be on for this to work. The 'p' + flag in 'cpoptions' changes the method of indenting: Vi compatible or + better. Also see 'lispwords'. + The '-' character is included in keyword characters. Redefines the + "=" operator to use this same indentation algorithm rather than + calling an external program if 'equalprg' is empty. + This option is not used when 'paste' is set. + {Vi: Does it a little bit differently} + + *'lispwords'* *'lw'* +'lispwords' 'lw' 文字列 (default is very long) + グローバル + {Vi にはない} + {Vi mが |+lispindent| 機能付きでコンパイルされたときの + み使用可能} + Comma separated list of words that influence the Lisp indenting. + + *'list'* *'nolist'* +'list' 切替 (既定ではオフ) + ウィンドウについてローカル + List mode: Show tabs as CTRL-I, show end of line with $. Useful to + see the difference between tabs and spaces and for trailing blanks. + Note that this will also affect formatting (set with 'textwidth' or + 'wrapmargin') when 'cpoptions' includes 'L'. See 'listchars' for + changing the way tabs are displayed. + + *'listchars'* *'lcs'* +'listchars' 'lcs' 文字列 (default "eol:$") + グローバル + {Vi にはない} + 文字列s to use in 'list' mode. It is a comma separated list of string + settings. + eol:c Character to show at the end of each line. When + omitted, there is no extra character at the end of the + line. + tab:xy Two characters to be used to show a Tab. The first + char is used once. The second char is repeated to + fill the space that the Tab normally occupies. + "tab:>-" will show a Tab that takes four spaces as + ">---". When omitted, a Tab is show as ^I. + trail:c Character to show for trailing spaces. When omitted, + trailing spaces are blank. + extends:c Character to show in the last column, when 'wrap' is + off and the line continues beyond the right of the + screen. + precedes:c Character to show in the first column, when 'wrap' + is off and there is text preceeding the character + visible in the first column. + + The characters ':' and ',' cannot be used. + Examples: > + :set lcs=tab:>-,trail:- + :set lcs=tab:>-,eol:< + :set lcs=extends:>,precedes:< +< The "NonText" highlighting will be used for "eol", "extends" and + "precedes". "SpecialKey" for "tab" and "trail". + + *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'* +'loadplugins' 'lpl' 切替 (既定ではオン) + グローバル + {Vi にはない} + When on the plugin scripts are loaded when starting up |load-plugins|. + This option can be reset in your |vimrc| file to disable the loading + of plugins. + Note that using the "-u NONE" and "--noplugin" command line arguments + reset this option. |-u| |--noplugin| + + *'magic'* *'nomagic'* +'magic' 切替 (既定ではオン) + グローバル + Changes the special characters that can be used in search patterns. + See |pattern|. + NOTE: To avoid portability problems with using patterns, always keep + this option at the default "on". Only switch it off when working with + old Vi scripts. In any other situation write patterns that work when + 'magic' is on. + + *'makeef'* *'mef'* +'makeef' 'mef' 文字列 (default: "") + グローバル + {Vi にはない} + {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ + 使用可能} + Name of the errorfile for the |:make| command (see |:make_makeprg|) + and the |:grep| command. + When it is empty, an internally generated temp file will be used. + When "##" is included, it is replaced by a number to make the name + unique. This makes sure that the ":make" command doesn't overwrite an + existing file. + NOT used for the ":cf" command. See 'errorfile' for that. + Environment variables are expanded |:set_env|. + See |option-backslash| about including spaces and backslashes. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'makeprg'* *'mp'* +'makeprg' 'mp' 文字列 (default "make", VMS: "MMS") + グローバル/バッファについてローカル |global-local| + {Vi にはない} + Program to use for the ":make" command. See |:make_makeprg|. This + option may contain '%' and '#' characters, which are expanded like + when used in a command-line. Environment variables are expanded + |:set_env|. See |option-backslash| about including spaces and + backslashes. Note that a '|' must be escaped twice: once for ":set" + and once for the interpretation of a command. When you use a filter + called "myfilter" do it like this: > + :set makeprg=gmake\ \\\|\ myfilter +< The placeholder "$*" can be given (even multiple times) to specify + where the arguments will be included, for example: > + :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} +< 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'matchpairs'* *'mps'* +'matchpairs' 'mps' 文字列 (default "(:),{:},[:]") + バッファについてローカル + {Vi にはない} + Characters that form pairs. The |%| command jumps from one to the + other. Currently only single character pairs are allowed, and they + must be different. The characters must be separated by a colon. The + pairs must be separated by a comma. Example for including '<' and '>' + (HTML): > + :set mps+=<:> + +< A more exotic example, to jump between the '=' and ';' in an + assignment, useful for languages like C and Java: > + :au FileType c,cpp,java set mps+==:; + +< For a more advanced way of using "%", see the matchit.vim plugin in + the $VIMRUNTIME/macros directory. |add-local-help| + + *'matchtime'* *'mat'* +'matchtime' 'mat' 数値 (既定では 5) + グローバル + {Vi にはない}{in Nvi} + Tenths of a second to show the matching paren, when 'showmatch' is + set. Note that this is not in milliseconds, like other options that + set a time. This is to be compatible with Nvi. + + *'maxfuncdepth'* *'mfd'* +'maxfuncdepth' 'mfd' 数値 (既定では 100) + グローバル + {Vi にはない} + Maximum depth of function calls for user functions. This normally + catches endless recursion. When using a recursive function with + more depth, set 'maxfuncdepth' to a bigger number. But this will use + more memory, there is the danger of failing when memory is exhausted. + See also |:function|. + + *'maxmapdepth'* *'mmd'* *E223* +'maxmapdepth' 'mmd' 数値 (既定では 1000) + グローバル + {Vi にはない} + Maximum number of times a mapping is done without resulting in a + character to be used. This normally catches endless mappings, like + ":map x y" with ":map y x". It still does not catch ":map g wg", + because the 'w' is used before the next mapping is done. See also + |key-mapping|. + + *'maxmem'* *'mm'* +'maxmem' 'mm' 数値 (default between 256 to 5120 (system + dependent) or half the amount of memory + available) + グローバル + {Vi にはない} + Maximum amount of memory (in Kbyte) to use for one buffer. When this + limit is reached allocating extra memory for a buffer will cause + other memory to be freed. Maximum value 2000000. Use this to work + without a limit. Also see 'maxmemtot'. + + *'maxmemtot'* *'mmt'* +'maxmemtot' 'mmt' 数値 (default between 2048 and 10240 (system + dependent) or half the amount of memory + available) + グローバル + {Vi にはない} + Maximum amount of memory (in Kbyte) to use for all buffers together. + Maximum value 2000000. Use this to work without a limit. Also see + 'maxmem'. + + *'menuitems'* *'mis'* +'menuitems' 'mis' 数値 (既定では 25) + グローバル + {Vi にはない} + {Vi mが |+menu| 機能付きでコンパイルされたときのみ使用 + 可能} + Maximum number of items to use in a menu. Used for menus that are + generated from a list of items, e.g., the Buffers menu. Changing this + option has no direct effect, the menu must be refreshed first. + + *'modeline'* *'ml'* *'nomodeline'* *'noml'* +'modeline' 'ml' 切替 (Vim default: on, Vi default: off) + バッファについてローカル + *'modelines'* *'mls'* +'modelines' 'mls' 数値 (既定では 5) + グローバル + {Vi にはない} + If 'modeline' is on 'modelines' gives the number of lines that is + checked for set commands. If 'modeline' is off or 'modelines' is zero + no lines are checked. See |modeline|. + NOTE: 'modeline' is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'modifiable'* *'ma'* *'nomodifiable'* *'noma'* +'modifiable' 'ma' 切替 (既定ではオン) + バッファについてローカル + {Vi にはない} *E21* + When off the buffer contents cannot be changed. The 'fileformat' and + 'fileencoding' options also can't be changed. + Can be reset with the |-M| command line argument. + + *'modified'* *'mod'* *'nomodified'* *'nomod'* +'modified' 'mod' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + When on, the buffer is considered to be modified. This option is set + when: + 1. A change was made to the text since it was last written. Using the + |undo| command to go back to the original text will reset the + option. But undoing changes that were made before writing the + buffer will set the option again, since the text is different from + when it was written. + 2. 'fileformat' or 'fileencoding' is different from its original + value. The original value is set when the buffer is read or + written. A ":set nomodified" command also resets the original + values to the current values and the 'modified' option will be + reset. + When 'buftype' is "nowrite" or "nofile" this option may be set, but + will be ignored. + + *'more'* *'nomore'* +'more' 切替 (Vim default: on, Vi default: off) + グローバル + {Vi にはない} + When on, listings pause when the whole screen is filled. You will get + the |more-prompt|. When this option is off there are no pauses, the + listing continues until finished. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'mouse'* +'mouse' 文字列 (default "", "a" for GUI, MS-DOS and Win32) + グローバル + {Vi にはない} + Enable the use of the mouse. Only works for certain terminals + (xterm, MS-DOS, Win32 |win32-mouse|, qnx pterm, and Linux console + with gpm). For using the mouse in the GUI, see |gui-mouse|. + The mouse can be enabled for different modes: + n Normal mode + v Visual mode + i Insert mode + c Command-line mode + h all previous modes when editing a help file + a all previous modes + r for |hit-enter| and |more-prompt| prompt + Normally you would enable the mouse in all four modes with: > + :set mouse=a +< When the mouse is not enabled, the GUI will still use the mouse for + modeless selection. This doesn't move the text cursor. + + See |mouse-using|. Also see |'clipboard'|. + + Note: When enabling the mouse in a terminal, copy/paste will use the + "* register if there is access to an X-server. The xterm handling of + the mouse buttons can still be used by keeping the shift key pressed. + Also see the 'clipboard' option. + + *'mousefocus'* *'mousef'* *'nomousefocus'* *'nomousef'* +'mousefocus' 'mousef' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {only works in the GUI} + The window that the mouse pointer is on is automatically activated. + When changing the window layout or window focus in another way, the + mouse pointer is moved to the window with keyboard focus. Off is the + default because it makes using the pull down menus a little goofy, as + a pointer transit may activate a window unintentionally. + + *'mousehide'* *'mh'* *'nomousehide'* *'nomh'* +'mousehide' 'mh' 切替 (既定ではオン) + グローバル + {Vi にはない} + {only works in the GUI} + When on, the mouse pointer is hidden when characters are typed. + The mouse pointer is restored when the mouse is moved. + + *'mousemodel'* *'mousem'* +'mousemodel' 'mousem' 文字列 (default "extend", "popup" for MS-DOS and Win32) + グローバル + {Vi にはない} + Sets the model to use for the mouse. The name mostly specifies what + the right mouse button is used for: + extend Right mouse button extends a selection. This works + like in an xterm. + popup Right mouse button pops up a menu. The shifted left + mouse button extends a selection. This works like + with Microsoft Windows + popup_setpos Like "popup", but the cursor will be moved to the + position where the mouse was clicked, and thus the + selected operation will act upon the clicked object. + If clicking inside a selection, that selection will + be acted upon, ie. no cursor move. This implies of + course, that right clicking outside a selection will + end Visual mode. + Overview of what button does what for each model: + mouse extend popup(_setpos) ~ + left click place cursor place cursor + left drag start selection start selection + shift-left search word extend selection + right click extend selection popup menu (place cursor) + right drag extend selection - + middle click paste paste + + In the "popup" model the right mouse button produces a pop-up menu. + You need to define this first, see |popup-menu|. + + Note that you can further refine the meaning of buttons with mappings. + See |gui-mouse-mapping|. But mappings are NOT used for modeless + selection (because that's handled in the GUI code directly). + + The 'mousemodel' option is set by the |:behave| command. + + *'mouseshape'* *'mouses'* +'mouseshape' 'mouses' 文字列 (default "i:beam,r:beam,s:updown,sd:cross, + m:no,v:rightup-arrow" + グローバル + {Vi にはない} + {Vi mが |+mouseshape| 機能付きでコンパイルされたときの + み使用可能} + This option tells Vim what the mouse pointer should look like in + different modes. The option is a comma separated list of parts, much + like used for 'guicursor'. Each part consist of a mode/location-list + and an argument-list: + mode-list:shape,mode-list:shape,.. + The mode-list is a dash separated list of these modes/locations: + In a normal window: ~ + n Normal mode + v Visual mode + ve Visual mode with 'selection' "exclusive" (same as 'v', + if not specified) + o Operator-pending mode + i Insert mode + r Replace mode + + Others: ~ + c appending to the command-line + ci inserting in the command-line + cr replacing in the command-line + m At the 'Hit ENTER' or 'More' prompts + e any mode, pointer below last window + s any mode, pointer on a status line + sd any mode, while dragging a status line + vs any mode, pointer on a vertical separator line + vd any mode, while dragging a vertical separator line + a everywhere + + The shape is one of the following: + avail name looks like ~ + w x arrow Normal mouse pointer + w x blank no pointer at all (use with care!) + w x beam I-beam + w x updown up-down sizing arrows + w x leftright left-right sizing arrows + w x busy The system's usual busy pointer + w x no The system's usual 'no input' pointer + x udsizing indicates up-down resizing + x lrsizing indicates left-right resizing + x crosshair like a big thin + + x hand1 white hand + x hand2 black hand + x pencil what you write with + x question big ? + x rightup-arrow arrow pointing right-up + w x up-arrow arrow pointing up + x <number> any X11 pointer number (see X11/cursorfont.h) + + The "avail" column contains a 'w' if the shape is available for Win32, + x for X11. + Any modes not specifed or shapes not available use the normal mouse + pointer. + + Example: > + :set mouseshape=s:size,m:no +< will make the mouse turn to a sizing arrow over the status lines and + indicate no input when the hit-enter prompt is displayed (since + clicking the mouse has no effect in this state.) + + *'mousetime'* *'mouset'* +'mousetime' 'mouset' 数値 (既定では 500) + グローバル + {Vi にはない} + Only for GUI, MS-DOS, Win32 and Unix with xterm. Defines the maximum + time in msec between two mouse clicks for the second click to be + recognized as a multi click. + + *'nrformats'* *'nf'* +'nrformats' 'nf' 文字列 (default "octal,hex") + バッファについてローカル + {Vi にはない} + This defines what bases Vim will consider for numbers when using the + CTRL-A and CTRL-X commands for adding to and subtracting from a number + respectively; see |CTRL-A| for more info on these commands. + alpha if included, single alphabetical characters will be + incremented or decremented. This is useful for a list with a + letter index a), b), etc. + octal if included, numbers that start with a zero will be considered + to be octal. Example: Using CTRL-A on "007" results in "010". + hex if included, numbers starting with "0x" or "0X" will be + considered to be hexadecimal. Example: Using CTRL-X on + "0x100" results in "0x0ff". + 数値s which simply begin with a digit in the range 1-9 are always + considered decimal. This also happens for numbers that are not + recognized as octal or hex. + + *'number'* *'nu'* *'nonumber'* *'nonu'* +'number' 'nu' 切替 (既定ではオフ) + ウィンドウについてローカル + Print the line number in front of each line. When the 'n' option is + excluded from 'cpoptions' a wrapped line will not use the column of + line numbers (this is the default when 'compatible' isn't set). + When a long, wrapped line doesn't start with the first character, '-' + characters are put before the number. + See |hl-LineNr| for the highlighting used for the number. + + *'osfiletype'* *'oft'* *E366* +'osfiletype' 'oft' 文字列 (RISC-OS default: "Text", + others default: "") + バッファについてローカル + {Vi にはない} + {Vi mが |+osfiletype| 機能付きでコンパイルされたときの + み使用可能} + Some operating systems store extra information about files besides + name, datestamp and permissions. This option contains the extra + information, the nature of which will vary between systems. + The value of this option is usually set when the file is loaded, and + use to set the file type when file is written. + It can affect the pattern matching of the automatic commands. + |autocmd-osfiletypes| + + *'paragraphs'* *'para'* +'paragraphs' 'para' 文字列 (default "IPLPPPQPP LIpplpipbp") + グローバル + Specifies the nroff macros that separate paragraphs. These are pairs + of two letters (see |object-motions|). + + *'paste'* *'nopaste'* +'paste' 切替 (既定ではオフ) + グローバル + {Vi にはない} + Put Vim in Paste mode. This is useful if you want to cut or copy + some text from one window and paste it in Vim. This will avoid + unexpected effects. + Setting this option is useful when using Vim in a terminal, where Vim + cannot distinguish between typed text and pasted text. In the GUI, Vim + knows about pasting and will mostly do the right thing without 'paste' + being set. The same is true for a terminal where Vim handles the + mouse clicks itself. + When the 'paste' option is switched on (also when it was already on): + - mapping in Insert mode and Command-line mode is disabled + - abbreviations are disabled + - 'textwidth' is set to 0 + - 'wrapmargin' is set to 0 + - 'autoindent' is reset + - 'smartindent' is reset + - 'softtabstop' is set to 0 + - 'revins' is reset + - 'ruler' is reset + - 'showmatch' is reset + - 'formatoptions' is used like it is empty + These options keep their value, but their effect is disabled: + - 'lisp' + - 'indentexpr' + - 'cindent' + NOTE: When you start editing another file while the 'paste' option is + on, settings from the modelines or autocommands may change the + settings again, causing trouble when pasting text. You might want to + set the 'paste' option again. + When the 'paste' option is reset the mentioned options are restored to + the value before the moment 'paste' was switched from off to on. + Resetting 'paste' before ever setting it does not have any effect. + Since mapping doesn't work while 'paste' is active, you need to use + the 'pastetoggle' option to toggle the 'paste' option with some key. + + *'pastetoggle'* *'pt'* +'pastetoggle' 'pt' 文字列 (既定では "") + グローバル + {Vi にはない} + When non-empty, specifies the key sequence that toggles the 'paste' + option. This is like specifying a mapping: > + :map {keys} :set invpaste<CR> +< Where {keys} is the value of 'pastetoggle'. + The difference is that it will work even when 'paste' is set. + 'pastetoggle' works in Insert mode and Normal mode, but not in + Command-line mode. + Mappings are checked first, thus overrule 'pastetoggle'. However, + when 'paste' is on mappings are ignored in Insert mode, thus you can do + this: > + :map <F10> :set paste<CR> + :map <F11> :set nopaste<CR> + :imap <F10> <C-O>:set paste<CR> + :imap <F11> <nop> + :set pastetoggle=<F11> +< This will make <F10> start paste mode and <F11> stop paste mode. + Note that typing <F10> in paste mode inserts "<F10>", since in paste + mode everything is inserted literally, except the 'pastetoggle' key + sequence. + + *'pex'* *'patchexpr'* +'patchexpr' 'pex' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+diff| 機能付きでコンパイルされたときのみ使用 + 可能} + Expression which is evaluated to apply a patch to a file and generate + the resulting new version of the file. See |diff-patchexpr|. + + *'patchmode'* *'pm'* *E206* +'patchmode' 'pm' 文字列 (既定では "") + グローバル + {Vi にはない} + When non-empty the oldest version of a file is kept. This can be used + to keep the original version of a file if you are changing files in a + source distribution. Only the first time that a file is written a + copy of the original file will be kept. The name of the copy is the + name of the original file with the string in the 'patchmode' option + appended. This option should start with a dot. Use a string like + ".org". 'backupdir' must not be empty for this to work (Detail: The + backup file is renamed to the patchmode file after the new file has + been successfully written, that's why it must be possible to write a + backup file). If there was no file to be backed up, an empty file is + created. + When the 'backupskip' pattern matches, a patchmode file is not made. + Using 'patchmode' for compressed files appends the extension at the + end (e.g., "file.gz.orig"), thus the resulting name isn't always + recognized as a compressed file. + + *'path'* *'pa'* *E343* *E345* *E347* +'path' 'pa' 文字列 (default on Unix: ".,/usr/include,," + on OS/2: ".,/emx/include,," + other systems: ".,,") + グローバル/バッファについてローカル |global-local| + {Vi にはない} + This is a list of directories which will be searched when using the + |gf|, [f, ]f, ^Wf, |:find| and other commands, provided that the file + being searched for has a relative path (not starting with '/'). The + directories in the 'path' option may be relative or absolute. + - Use commas to separate directory names: > + :set path=.,/usr/local/include,/usr/include +< - Spaces can also be used to separate directory names (for backwards + compatibility with version 3.0). To have a space in a directory + name, precede it with an extra backslash, and escape the space: > + :set path=.,/dir/with\\\ space +< - To include a comma in a directory name precede it with an extra + backslash: > + :set path=.,/dir/with\\,comma +< - To search relative to the directory of the current file, use: > + :set path=. +< - To search in the current directory use an empty string between two + commas: > + :set path=,, +< - A directory name may end in a ':' or '/'. + - Environment variables are expanded |:set_env|. + - When using |netrw.vim| URLs can be used. For example, adding + "http://www.vim.org" will make ":find index.html" work. + - Search upwards and downwards in a directory tree: + 1) "*" matches a sequence of characters, e.g.: > + :set path=/usr/include/* +< means all subdirectories in /usr/include (but not /usr/include + itself). > + :set path=/usr/*c +< matches /usr/doc and /usr/src. + 2) "**" matches a subtree, up to 100 directories deep. Example: > + :set path=/home/user_x/src/** +< means search in the whole subtree under "/home/usr_x/src". + 3) If the path ends with a ';', this path is the startpoint + for upward search. + See |file-searching| for more info and exact syntax. + {not available when compiled without the |+path_extra| feature} + - Careful with '\' characters, type two to get one in the option: > + :set path=.,c:\\include +< Or just use '/' instead: > + :set path=.,c:/include +< Don't forget "." or files won't even be found in the same directory as + the file! + The maximum length is limited. How much depends on the system, mostly + it is something like 256 or 1024 characters. + You can check if all the include files are found, using the value of + 'path', see |:checkpath|. + The use of |:set+=| and |:set-=| is preferred when adding or removing + directories from the list. This avoids problems when a future version + uses another default. To remove the current directory use: > + :set path-= +< To add the current directory use: > + :set path+= +< To use an environment variable, you probably need to replace the + separator. Here is an example to append $INCL, in which directory + names are separated with a semi-colon: > + :let &path = &path . "," . substitute($INCL, ';', ',', 'g') +< Replace the ';' with a ':' or whatever separator is used. Note that + this doesn't work when $INCL contains a comma or white space. + + *'previewheight'* *'pvh'* +'previewheight' 'pvh' 数値 (default 12) + グローバル + {Vi にはない} + {not available when compiled without the |+windows| or + |+quickfix| feature} + Default height for a preview window. Used for |:ptag| and associated + commands. Used for |CTRL-W_}| when no count is given. + + *'previewwindow'* *'nopreviewwindow'* *'pvw'* *'nopvw'* +'previewwindow' 'pvw' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {not available when compiled without the |+windows| or + |+quickfix| feature} + Identifies the preview window. Only one window can have this option + set. It's normally not set directly, but by using one of the commands + |:ptag|, |:pedit|, etc. + + *'printdevice'* *'pdev'* +'printdevice' 'pdev' 文字列 (default empty) + グローバル + {Vi にはない} + {Vi mが |+printer| 機能付きでコンパイルされたときのみ + 使用可能} + This defines the name of the printer to be used when the |:hardcopy| + command is issued with a bang (!) to skip the printer selection + dialog. On Win32, it should be the printer name exactly as it appears + in the standard printer dialog. + If the option is empty, then vim will use the system default printer + for ":hardcopy!" + + *'printexpr'* *'pexpr'* +'printexpr' 'pexpr' 文字列 (default: see below) + グローバル + {Vi にはない} + {only available when compiled with the |+printer| + and |+postscript| features} + Expression that is evaluated to print the PostScript produced with + ":hardcopy". + The file name to be printed is in |v:fname_in|. + The arguments to the ":hardcopy" command are in |v:cmdarg|. + The expression must take care of deleting the file after printing it. + When there is an error, the expression must return a non-zero number. + If there is no error, return zero or an empty string. + The default for non MS-Windows or VMS systems is to simply use "lpr" + to print the file: > + + system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) + . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error +< + On MS-Windows machines the default is to copy the file to the + currently specified printdevice: > + + system('copy' . ' ' . v:fname_in . ' "' . &printdevice . '"') + . delete(v:fname_in) +< + On VMS machines the default is to send the file to either the default + or currently specified printdevice: > + + system('print' . (&printdevice == '' ? '' : ' /queue=' . + &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) +< + If you change this option, using a function is an easy way to avoid + having to escape all the spaces. Example: > + + :set printexpr=PrintFile(v:fname_in) + :function PrintFile(fname) + : call system("ghostview " . a:fname) + : call delete(a:fname) + : return v:shell_error + :endfunc + +< Be aware that some print programs return control before they have read + the file. If you delete the file too soon it will not be printed. + These programs usually offer an option to have them remove the file + when printing is done. + *E365* + If evaluating the expression fails or it results in a non-zero number, + you get an error message. In that case Vim will delete the + file. In the default value for non-MS-Windows a trick is used: Adding + "v:shell_error" will result in a non-zero number when the system() + call fails. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'printfont'* *'pfn'* *E448* +'printfont' 'pfn' 文字列 (default "courier") + グローバル + {Vi にはない} + {Vi mが |+printer| 機能付きでコンパイルされたときのみ + 使用可能} + This is the name of the font that will be used for the |:hardcopy| + command's output. It has the same format as the 'guifont' option, + except that only one font may be named, and the special "guifont=*" + syntax is not available. + In the Win32 GUI version this specifies a font name with its extra + attributes, as with the 'guifont' option. + For other systems, only ":h11" is recognized, where "11" is the point + size of the font. When omitted, the points size is 10. + + *'printheader'* *'pheader'* +'printheader' 'pheader' string (default "%<%f%h%m%=Page %N") + グローバル + {Vi にはない} + {Vi mが |+printer| 機能付きでコンパイルされたときのみ + 使用可能} + This defines the format of the header produced in |:hardcopy| output. + The option is defined in the same way as the 'statusline' option. + If Vim has not been compiled with the |+statusline| feature, this + option has no effect and a simple default header is used, which shows + the page number. + + *'printoptions'* *'popt'* +'printoptions' 'popt' string (既定では "") + グローバル + {Vi にはない} + {only available when compiled with |+printer| feature} + This is a comma-separated list of items that control the format of + the output of |:hardcopy|: + + left:{spec} left margin (既定では 10pc) + right:{spec} right margin (既定では 5pc) + top:{spec} top margin (既定では 5pc) + bottom:{spec} bottom margin (既定では 5pc) + {spec} is a number followed by "in" for + inches, "pt" for points (1 point is 1/72 of an + inch), "mm" for millimetres or "pc" for a + percentage of the media size. + Weird example: + left:2in,top:30pt,right:16mm,bottom:3pc + If the unit is not recognized there is no + error and the default value is used. + + header:{nr} 数値 of lines to reserve for the header. + Only the first line is actually filled, thus + when {nr} is 2 there is one empty line. The + header is formatted according to + 'printheader'. + header:0 Do not print a header. + header:2 (default) Use two lines for the header + + syntax:n Do not use syntax highlighting. This is + faster and thus useful when printing large + files. + syntax:y Do syntax highlighting. + syntax:a (default) Use syntax highlighting if the printer appears + to be able to print color or grey. + + number:y Include line numbers in the printed output. + number:n (default) No line numbers. + + wrap:y (default) Wrap long lines. + wrap:n Truncate long lines. + + duplex:off Print on one side. + duplex:long (default) Print on both sides (when possible), bind on + long side. + duplex:short Print on both sides (when possible), bind on + short side. + + collate:y (default) Collating: 1 2 3, 1 2 3, 1 2 3 + collate:n No collating: 1 1 1, 2 2 2, 3 3 3 + + jobsplit:n (default) Do all copies in one print job + jobsplit:y Do each copy as a separate print job. Useful + when doing N-up postprocessing. + + portrait:y (default) Orientation is portrait. + portrait:n Orientation is landscape. + + + paper:A4 (default) Paper size: A4 + paper:{name} Paper size from this table: + {name} size in inch ~ + 10x14 10 x 14 + A3 11.69 x 16.54 + A4 8.27 x 11.69 + A5 5.83 x 8.27 + B4 10.12 x 14.33 + B5 7.17 x 10.12 + executive 7.25 x 10.5 + folio 8.27 x 13 + ledger 17 x 11 + legal 8.5 x 14 + letter 8.5 x 11 + quarto 8.5 x 10.83 + statement 5.5 x 8.5 + tabloid 11 x 17 + + The item indicated with (default) is used when the item is not + present. The values are not always used, especially when using a + dialog to select the printer and options. + Example: > + :set printoptions=paper:letter,duplex:off +< + *'readonly'* *'ro'* *'noreadonly'* *'noro'* +'readonly' 'ro' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + If on, writes fail unless you use a '!'. Protects you from + accidentally overwriting a file. Default on when Vim is started + in read-only mode ("vim -R") or when the executable is called "view". + {not in Vi:} When using the ":view" command the 'readonly' option is + set for the newly edited buffer. When using ":w!" the 'readonly' + option is reset for the current buffer. + + *'remap'* *'noremap'* +'remap' 切替 (既定ではオン) + グローバル + Allows for mappings to work recursively. If you do not want this for + a single entry, use the :noremap[!] command. + + *'report'* +'report' 数値 (既定では 2) + グローバル + Threshold for reporting number of lines changed. When the number of + changed lines is more than 'report' a message will be given for most + ":" commands. If you want it always, set 'report' to 0. + For the ":substitute" command the number of substitutions is used + instead of the number of lines. + + *'restorescreen'* *'rs'* *'norestorescreen'* *'nors'* +'restorescreen' 'rs' 切替 (既定ではオン) + グローバル + {Vi にはない} {Windows 95/NT console version only} + When set, the screen contents is restored when exiting Vim. This also + happens when executing external commands. + + For non-Windows Vim: You can set or reset the 't_ti' and 't_te' + options in your .vimrc. To disable restoring: + set t_ti= t_te= + To enable restoring (for an xterm): + set t_ti=^[7^[[r^[[?47h t_te=^[[?47l^[8 + (Where ^[ is an <Esc>, type CTRL-V <Esc> to insert it) + + *'revins'* *'ri'* *'norevins'* *'nori'* +'revins' 'ri' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+rightleft| 機能付きでコンパイルされたときの + み使用可能} + Inserting characters in Insert mode will work backwards. See "typing + backwards" |ins-reverse|. This option can be toggled with the CTRL-_ + command in Insert mode, when 'allowrevins' is set. + NOTE: This option is reset when 'compatible' or 'paste' is set. + + *'rightleft'* *'rl'* *'norightleft'* *'norl'* +'rightleft' 'rl' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+rightleft| 機能付きでコンパイルされたときの + み使用可能} + When on, display orientation becomes right-to-left, i.e., character + that are stored in the file appear from the right to the left. Using + this option, it is possible to edit files for languages that are + written from the right to the left such as Hebrew and Arabic. This + option is per window, so it is possible to edit mixed files + simultaneously, or to view the same file in both ways (this is + sometimes useful when editing Hebrew TeX--XeT files). See + |rileft.txt|. + + *'ruler'* *'ru'* *'noruler'* *'noru'* +'ruler' 'ru' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {not available when compiled without the + |+cmdline_info| feature} + Show the line and column number of the cursor position, separated by a + comma. When there is room, the relative position of the displayed + text in the file is shown on the far right: + Top first line is visible + Bot last line is visible + All first and last line are visible + 45% relative position in the file + If 'rulerformat' is set, it will determine the contents of the ruler. + Each window has its own ruler. If a window has a status line, the + ruler is shown there. Otherwise it is shown in the last line of the + screen. If the statusline is given by 'statusline' (ie. not empty), + this option takes precedence over 'ruler' and 'rulerformat' + If the number of characters displayed is different from the number of + bytes in the text (e.g., for a TAB or a multi-byte character), both + the text column (byte number) and the screen column are shown, + separated with a dash. + For an empty line "0-1" is shown. + For an empty buffer the line number will also be zero: "0,0-1". + This option is reset when the 'paste' option is set. + If you don't want to see the ruler all the time but want to know where + you are, use "g CTRL-G" |g_CTRL-G|. + NOTE: This option is reset when 'compatible' is set. + + *'rulerformat'* *'ruf'* +'rulerformat' 'ruf' 文字列 (default empty) + グローバル + {Vi にはない} + {Vi mが |+statusline| 機能付きでコンパイルされたときの + み使用可能} + When this option is not empty, it determines the content of the ruler + 文字列, as displayed for the 'ruler' option. + The format of this option, is like that of 'statusline'. + The default ruler width is 17 characters. To make the ruler 15 + characters wide, put "%15(" at the start and "%)" at the end. + Example: > + :set rulerformat=%15(%c%V\ %p%%%) +< + *'runtimepath'* *'rtp'* +'runtimepath' 'rtp' 文字列 (default: + Unix: "$HOME/.vim, + $VIM/vimfiles, + $VIMRUNTIME, + $VIM/vimfiles/after, + $HOME/.vim/after" + Amiga: "home:vimfiles, + $VIM/vimfiles, + $VIMRUNTIME, + $VIM/vimfiles/after, + home:vimfiles/after" + PC, OS/2: "$HOME/vimfiles, + $VIM/vimfiles, + $VIMRUNTIME, + $VIM/vimfiles/after, + $HOME/vimfiles/after" + Macintosh: "$VIM:vimfiles, + $VIMRUNTIME, + $VIM:vimfiles:after" + RISC-OS: "Choices:vimfiles, + $VIMRUNTIME, + Choices:vimfiles/after" + VMS: "sys$login:vimfiles, + $VIM/vimfiles, + $VIMRUNTIME, + $VIM/vimfiles/after, + sys$login:vimfiles/after" + グローバル + {Vi にはない} + This is a list of directories which will be searched for runtime + files: + filetype.vim filetypes by file name |new-filetype| + scripts.vim filetypes by file contents |new-filetype-scripts| + colors/ color scheme files |:colorscheme| + compiler/ compiler files |:compiler| + doc/ documentation |write-local-help| + ftplugin/ filetype plugins |write-filetype-plugin| + indent/ indent scripts |indent-expression| + keymap/ key mapping files |mbyte-keymap| + lang/ menu translations |:menutrans| + menu.vim GUI menus |menu.vim| + plugin/ plugin scripts |write-plugin| + syntax/ syntax files |mysyntaxfile| + tutor/ files for vimtutor |tutor| + + And any other file searched for with the |:runtime| command. + + The defaults for most systems are setup to search five locations: + 1. In your home directory, for your personal preferences. + 2. In a system-wide Vim directory, for preferences from the system + administrator. + 3. In $VIMRUNTIME, for files distributed with Vim. + 4. In the "after" directory in the system-wide Vim directory. This is + for the system administrator to overrule or add to the distributed + defaults (rarely needed) + 5. In the "after" directory in your home directory. This is for + personal preferences to overrule or add to the distributed defaults + or system-wide settings (rarely needed). + + Note that, unlike 'path', no wildcards like "**" are allowed. Normal + wildcards are allowed, but can significantly slow down searching for + runtime files. For speed, use as few items as possible and avoid + wildcards. + See |:runtime|. + Example: > + :set runtimepath=~/vimruntime,/mygroup/vim,$VIMRUNTIME +< This will use the directory "~/vimruntime" first (containing your + personal Vim runtime files), then "/mygroup/vim" (shared between a + group of people) and finally "$VIMRUNTIME" (the distributed runtime + files). + You probably should always include $VIMRUNTIME somewhere, to use the + distributed runtime files. You can put a directory before $VIMRUNTIME + to find files which replace a distributed runtime files. You can put + a directory after $VIMRUNTIME to find files which add to distributed + runtime files. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'scroll'* *'scr'* +'scroll' 'scr' 数値 (default: half the window height) + ウィンドウについてローカル + 数値 of lines to scroll with CTRL-U and CTRL-D commands. Will be + set to half the number of lines in the window when the window size + changes. If you give a count to the CTRL-U or CTRL-D command it will + be used as the new value for 'scroll'. Reset to half the window + height with ":set scroll=0". {Vi is a bit different: 'scroll' gives + the number of screen lines instead of file lines, makes a difference + when lines wrap} + + *'scrollbind'* *'scb'* *'noscrollbind'* *'noscb'* +'scrollbind' 'scb' boolean (default off) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+scrollbind| 機能付きでコンパイルされたときの + み使用可能} + See also |scroll-binding|. When this option is set, the current + window scrolls as other scrollbind windows (windows that also have + this option set) scroll. This option is useful for viewing the + differences between two versions of a file, see 'diff'. + See |'scrollopt'| for options that determine how this option should be + interpreted. + + *'scrolljump'* *'sj'* +'scrolljump' 'sj' 数値 (既定では 1) + グローバル + {Vi にはない} + Minimal number of lines to scroll when the cursor gets off the + screen (e.g., with "j"). Not used for scroll commands (e.g., CTRL-E, + CTRL-D). Useful if your terminal scrolls very slowly. + NOTE: This option is set to 1 when 'compatible' is set. + + *'scrolloff'* *'so'* +'scrolloff' 'so' 数値 (既定では 0) + グローバル + {Vi にはない} + Minimal number of screen lines to keep above and below the cursor. + This will make some context visible around where you are working. If + you set it to a very large value (999) the cursor line will always be + in the middle of the window (except at the start or end of the file or + when long lines wrap). + For scrolling horizontallly see 'sidescrolloff'. + NOTE: This option is set to 0 when 'compatible' is set. + + *'scrollopt'* *'sbo'* +'scrollopt' 'sbo' 文字列 (default "ver,jump") + グローバル + {Vi mが |+scrollbind| 機能付きでコンパイルされたときの + み使用可能} + {Vi にはない} + This is a comma-separated list of words that specifies how + 'scrollbind' windows should behave. + The following words are available: + ver Bind vertical scrolling for 'scrollbind' windows + hor Bind horizontal scrolling for 'scrollbind' windows + jump Applies to the offset between two windows for vertical + scrolling. This offset is the difference in the first + displayed line of the bound windows. When moving + around in a window, another 'scrollbind' window may + reach a position before the start or after the end of + the buffer. The offset is not changed though, when + moving back the 'scrollbind' window will try to scroll + to the desired position when possible. + When now making that window the current one, two + things can be done with the relative offset: + 1. When "jump" is not included, the relative offset is + adjusted for the scroll position in the new current + window. When going back to the other window, the + the new relative offset will be used. + 2. When "jump" is included, the other windows are + scrolled to keep the same relative offset. When + going back to the other window, it still uses the + same relative offset. + Also see |scroll-binding|. + + *'sections'* *'sect'* +'sections' 'sect' 文字列 (default "SHNHH HUnhsh") + グローバル + Specifies the nroff macros that separate sections. These are pairs of + two letters (See |object-motions|). The default makes a section start + at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh". + + *'secure'* *'nosecure'* +'secure' 切替 (既定ではオフ) + グローバル + {Vi にはない} + When on, ":autocmd", shell and write commands are not allowed in + ".vimrc" and ".exrc" in the current directory and map commands are + displayed. Switch it off only if you know that you will not run into + problems, or when the 'exrc' option is off. On Unix this option is + only used if the ".vimrc" or ".exrc" is not owned by you. This can be + dangerous if the systems allows users to do a "chown". You better set + 'secure' at the end of your ~/.vimrc then. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'selection'* *'sel'* +'selection' 'sel' 文字列 (default "inclusive") + グローバル + {Vi にはない} + This option defines the behavior of the selection. It is only used + in Visual and Select mode. + Possible values: + value past line inclusive ~ + old no yes + inclusive yes yes + exclusive yes no + "past line" means that the cursor is allowed to be positioned one + character past the line. + "inclusive" means that the last character of the selection is included + in an operation. For example, when "x" is used to delete the + selection. + + The 'selection' option is set by the |:behave| command. + + *'selectmode'* *'slm'* +'selectmode' 'slm' 文字列 (既定では "") + グローバル + {Vi にはない} + This is a comma separated list of words, which specifies when to start + Select mode instead of Visual mode, when a selection is started. + Possible values: + mouse when using the mouse + key when using shifted special keys + cmd when using "v", "V" or CTRL-V + See |Select-mode|. + The 'selectmode' option is set by the |:behave| command. + + *'sessionoptions'* *'ssop'* +'sessionoptions' 'ssop' 文字列 (default: "blank,buffers,curdir,folds, + help,options,winsize") + グローバル + {Vi にはない} + {Vi mが |+mksession| 機能付きでコンパイルされたときの + み使用可能} + Changes the effect of the |:mksession| command. It is a comma + separated list of words. Each word enables saving and restoring + something: + word save and restore ~ + blank empty windows + buffers hidden and unloaded buffers, not just those in windows + curdir the current directory + folds manually created folds, opened/closed folds and local + fold options + globals global variables that start with an uppercase letter + and contain at least one lowercase letter. + help the help window + localoptions options and mappings local to a window or buffer (not + グローバル values for local options) + options all options and mappings (also global values for local + options) + resize size of the Vim window: 'lines' and 'columns' + sesdir the directory in which the session file is located + will become the current directory (useful with + projects accessed over a network from different + systems) + slash backslashes in file names replaced with forward + slashes + unix with Unix end-of-line format (single <NL>), even when + on Windows or DOS + winpos position of the whole Vim window + winsize window sizes + + Don't include both "curdir" and "sesdir". + When "curdir" nor "sesdir" is included, file names are stored with + absolute paths. + "slash" and "unix" are useful on Windows when sharing session files + with Unix. The Unix version of Vim cannot source dos format scripts, + but the Windows version of Vim can source unix format scripts. + + *'shell'* *'sh'* *E91* +'shell' 'sh' 文字列 (default $SHELL or "sh", + MS-DOS and Win32: "command.com" or + "cmd.exe", OS/2: "cmd") + グローバル + Name of the shell to use for ! and :! commands. When changing the + value also check these options: 'shelltype', 'shellpipe', 'shellslash' + 'shellredir', 'shellquote', 'shellxquote' and 'shellcmdflag'. + It is allowed to give an argument to the command, e.g. "csh -f". + See |option-backslash| about including spaces and backslashes. + Environment variables are expanded |:set_env|. + If the name of the shell contains a space, you might need to enclose + it in quotes. Example: > + :set shell=\"c:\program\ files\unix\sh.exe\"\ -f +< Note the backslash before each quote (to avoid starting a comment) and + each space (to avoid ending the option value). Also note that the + "-f" is not inside the quotes, because it is not part of the command + name. And Vim automagically recognizes the backslashes that are path + separators. + For Dos 32 bits (DJGPP), you can set the $DJSYSFLAGS environment + variable to change the way external commands are executed. See the + libc.inf file of DJGPP. + Under MS-Windows, when the executable ends in ".com" it must be + included. Thus setting the shell to "command.com" or "4dos.com" + works, but "command" and "4dos" do not work for all commands (e.g., + filtering). + For unknown reasons, when using "4dos.com" the current directory is + changed to "C:\". To avoid this set 'shell' like this: > + :set shell=command.com\ /c\ 4dos +< 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'shellcmdflag'* *'shcf'* +'shellcmdflag' 'shcf' 文字列 (default: "-c", MS-DOS and Win32, when 'shell' + does not contain "sh" somewhere: "/c") + グローバル + {Vi にはない} + Flag passed to the shell to execute "!" and ":!" commands; e.g., + "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like + systems, the default is set according to the value of 'shell', to + reduce the need to set this option by the user. It's not used for + OS/2 (EMX figures this out itself). See |option-backslash| about + including spaces and backslashes. See |dos-shell|. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'shellpipe'* *'sp'* +'shellpipe' 'sp' 文字列 (default ">", "| tee", "|& tee" or "2>&1| tee") + グローバル + {Vi にはない} + {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ + 使用可能} + 文字列 to be used to put the output of the ":make" command in the + error file. See also |:make_makeprg|. See |option-backslash| about + including spaces and backslashes. + The name of the temporary file can be represented by "%s" if necessary + (the file name is appended automatically if no %s appears in the value + of this option). + For the Amiga and MS-DOS the default is ">". The output is directly + saved in a file and not echoed to the screen. + For Unix the default it "| tee". The stdout of the compiler is saved + in a file and echoed to the screen. If the 'shell' option is "csh" or + "tcsh" after initializations, the default becomes "|& tee". If the + 'shell' option is "sh", "ksh", "zsh" or "bash" the default becomes + "2>&1| tee". This means that stderr is also included. + The initialization of this option is done after reading the ".vimrc" + and the other initializations, so that when the 'shell' option is set + there, the 'shellpipe' option changes automatically, unless it was + explicitly set before. + When 'shellpipe' is set to an empty string, no redirection of the + ":make" output will be done. This is useful if you use a 'makeprg' + that writes to 'makeef' by itself. If you want no piping, but do + want to include the 'makeef', set 'shellpipe' to a single space. + Don't forget to precede the space with a backslash: ":set sp=\ ". + In the future pipes may be used for filtering and this option will + become obsolete (at least for Unix). + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'shellquote'* *'shq'* +'shellquote' 'shq' 文字列 (default: ""; MS-DOS and Win32, when 'shell' + contains "sh" somewhere: "\"") + グローバル + {Vi にはない} + Quoting character(s), put around the command passed to the shell, for + the "!" and ":!" commands. The redirection is kept outside of the + quoting. See 'shellxquote' to include the redirection. It's + probably not useful to set both options. + This is an empty string by default. Only known to be useful for + third-party shells on MS-DOS-like systems, such as the MKS Korn Shell + or bash, where it should be "\"". The default is adjusted according + the value of 'shell', to reduce the need to set this option by the + user. See |dos-shell|. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'shellredir'* *'srr'* +'shellredir' 'srr' 文字列 (default ">", ">&" or ">%s 2>&1") + グローバル + {Vi にはない} + 文字列 to be used to put the output of a filter command in a temporary + file. See also |:!|. See |option-backslash| about including spaces + and backslashes. + The name of the temporary file can be represented by "%s" if necessary + (the file name is appended automatically if no %s appears in the value + of this option). + The default is ">". For Unix, if the 'shell' option is "csh", "tcsh" + or "zsh" during initializations, the default becomes ">&". If the + 'shell' option is "sh", "ksh" or "bash" the default becomes + ">%s 2>&1". This means that stderr is also included. + For Win32, the Unix checks are done and additionally "cmd" is checked + for, which makes the default ">%s 2>&1". Also, the same names with + ".exe" appended are checked for. + The initialization of this option is done after reading the ".vimrc" + and the other initializations, so that when the 'shell' option is set + there, the 'shellredir' option changes automatically unless it was + explicitly set before. + In the future pipes may be used for filtering and this option will + become obsolete (at least for Unix). + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'shellslash'* *'ssl'* *'noshellslash'* *'nossl'* +'shellslash' 'ssl' 切替 (既定ではオフ) + グローバル + {Vi にはない} {only for MSDOS, MS-Windows and OS/2} + When set, a forward slash is used when expanding file names. This is + useful when a Unix-like shell is used instead of command.com or + cmd.exe. Backward slashes can still be typed, but they are changed to + forward slashes by Vim. + Note that setting or resetting this option has no effect for some + existing file names, thus this option needs to be set before opening + any file for best results. This might change in the future. + + *'shelltype'* *'st'* +'shelltype' 'st' 数値 (既定では 0) + グローバル + {Vi にはない} {only for the Amiga} + On the Amiga this option influences the way how the commands work + which use a shell. + 0 and 1: always use the shell + 2 and 3: use the shell only to filter lines + 4 and 5: use shell only for ':sh' command + When not using the shell, the command is executed directly. + + 0 and 2: use "shell 'shellcmdflag' cmd" to start external commands + 1 and 3: use "shell cmd" to start external commands + + *'shellxquote'* *'sxq'* +'shellxquote' 'sxq' 文字列 (default: ""; + for Win32, when 'shell' contains "sh" + somewhere: "\"" + for Unix, when using system(): "\"") + グローバル + {Vi にはない} + Quoting character(s), put around the command passed to the shell, for + the "!" and ":!" commands. Includes the redirection. See + 'shellquote' to exclude the redirection. It's probably not useful + to set both options. + This is an empty string by default. Known to be useful for + third-party shells when using the Win32 version, such as the MKS Korn + Shell or bash, where it should be "\"". The default is adjusted + according the value of 'shell', to reduce the need to set this option + by the user. See |dos-shell|. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'shiftround'* *'sr'* *'noshiftround'* *'nosr'* +'shiftround' 'sr' 切替 (既定ではオフ) + グローバル + {Vi にはない} + Round indent to multiple of 'shiftwidth'. Applies to > and < + commands. CTRL-T and CTRL-D in Insert mode always round the indent to + a multiple of 'shiftwidth' (this is Vi compatible). + NOTE: This option is reset when 'compatible' is set. + + *'shiftwidth'* *'sw'* +'shiftwidth' 'sw' 数値 (既定では 8) + バッファについてローカル + 数値 of spaces to use for each step of (auto)indent. Used for + |'cindent'|, |>>|, |<<|, etc. + + *'shortmess'* *'shm'* +'shortmess' 'shm' 文字列 (Vim default "filnxtToO", Vi default: "") + グローバル + {Vi にはない} + This option helps to avoid all the |hit-enter| prompts caused by file + messages, for example with CTRL-G, and to avoid some other messages. + It is a list of flags: + flag meaning when present ~ + f use "(3 of 5)" instead of "(file 3 of 5)" + i use "[noeol]" instead of "[Incomplete last line]" + l use "999L, 888C" instead of "999 lines, 888 characters" + m use "[+]" instead of "[Modified]" + n use "[New]" instead of "[New File]" + r use "[RO]" instead of "[readonly]" + w use "[w]" instead of "written" for file write message + and "[a]" instead of "appended" for ':w >> file' command + x use "[dos]" instead of "[dos format]", "[unix]" instead of + "[unix format]" and "[mac]" instead of "[mac format]". + a all of the above abbreviations + + o overwrite message for writing a file with subsequent message + for reading a file (useful for ":wn" or when 'autowrite' on) + O message for reading a file overwrites any previous message. + Also for quickfix message (e.g., ":cn"). + s don't give "search hit BOTTOM, continuing at TOP" or "search + hit TOP, continuing at BOTTOM" messages + t truncate file message at the start if it is too long to fit + on the command-line, "<" will appear in the left most column. + Ignored in Ex mode. + T truncate other messages in the middle if they are too long to + fit on the command line. "..." will appear in the middle. + Ignored in Ex mode. + W don't give "written" or "[w]" when writing a file + A don't give the "ATTENTION" message when an existing swap file + is found. + I don't give the intro message when starting Vim |:intro|. + + This gives you the opportunity to avoid that a change between buffers + requires you to hit <Enter>, but still gives as useful a message as + possible for the space available. To get the whole message that you + would have got with 'shm' empty, use ":file!" + Useful values: + shm= No abbreviation of message. + shm=a Abbreviation, but no loss of information. + shm=at Abbreviation, and truncate message when necessary. + + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'shortname'* *'sn'* *'noshortname'* *'nosn'* +'shortname' 'sn' 切替 (既定ではオフ) + バッファについてローカル + {not in Vi, not in MS-DOS versions} + Filenames are assumed to be 8 characters plus one extension of 3 + characters. Multiple dots in file names are not allowed. When this + option is on, dots in file names are replaced with underscores when + adding an extension (".~" or ".swp"). This option is not available + for MS-DOS, because then it would always be on. This option is useful + when editing files on an MS-DOS compatible filesystem, e.g., messydos + or crossdos. When running the Win32 GUI version under Win32s, this + option is always on by default. + + *'showbreak'* *'sbr'* +'showbreak' 'sbr' 文字列 (既定では "") + グローバル + {Vi にはない} + {not available when compiled without the |+linebreak| + feature} + 文字列 to put at the start of lines that have been wrapped. Useful + values are "> " or "+++ ". Only printable characters are allowed, + excluding <Tab> and comma (in a future version the comma might be used + to separate the part that is shown at the end and at the start of a + line). The characters are highlighted according to the '@' flag in + 'highlight'. + Note that tabs after the showbreak will be displayed differently. + If you want the 'showbreak' to appear in between line numbers, add the + "n" flag to 'cpoptions'. + + *'showcmd'* *'sc'* *'noshowcmd'* *'nosc'* +'showcmd' 'sc' 切替 (Vim default: on, off for Unix, Vi default: + off) + グローバル + {Vi にはない} + {not available when compiled without the + |+cmdline_info| feature} + Show (partial) command in status line. Set this option off if your + terminal is slow. + In Visual mode the size of the selected area is shown: + - When selecting characters within a line, the number of characters. + - When selecting more than one line, the number of lines. + - When selecting a block, the size in screen characters: linesxcolumns. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'showfulltag'* *'sft'* *'noshowfulltag'* *'nosft'* +'showfulltag' 'sft' 切替 (既定ではオフ) + グローバル + {Vi にはない} + When completing a word in insert mode (see |ins-completion|) from the + tags file, show both the tag name and a tidied-up form of the search + pattern (if there is one) as possible matches. Thus, if you have + matched a C function, you can see a template for what arguments are + required (coding style permitting). + + *'showmatch'* *'sm'* *'noshowmatch'* *'nosm'* +'showmatch' 'sm' 切替 (既定ではオフ) + グローバル + When a bracket is inserted, briefly jump to the matching one. The + jump is only done if the match can be seen on the screen. The time to + show the match can be set with 'matchtime'. + A Beep is given if there is no match (no matter if the match can be + seen or not). This option is reset when the 'paste' option is set. + When the 'm' flag is not included in 'cpoptions', typing a character + will immediately move the cursor back to where it belongs. + See the "sm" field in 'guicursor' for setting the cursor shape and + blinking when showing the match. + Note: For the use of the short form parental guidance is advised. + + *'showmode'* *'smd'* *'noshowmode'* *'nosmd'* +'showmode' 'smd' 切替 (Vim default: on, Vi default: off) + グローバル + If in Insert, Replace or Visual mode put a message on the last line. + Use the 'M' flag in 'highlight' to set the type of highlighting for + this message. + When |XIM| may be used the message will include "XIM". But this + doesn't mean XIM is really active, especially when 'imactivatekey' is + not set. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'sidescroll'* *'ss'* +'sidescroll' 'ss' 数値 (既定では 0) + グローバル + {Vi にはない} + The minimal number of columns to scroll horizontally. Used only when + the 'wrap' option is off and the cursor is moved off of the screen. + When it is zero the cursor will be put in the middle of the screen. + When using a slow terminal set it to a large number or 0. When using + a fast terminal use a small number or 1. Not used for "zh" and "zl" + commands. + + *'sidescrolloff'* *'siso'* +'sidescrolloff' 'siso' 数値 (default 0) + グローバル + {Vi にはない} + The minimal number of screen columns to keep to the left and to the + right of the cursor if 'nowrap' is set. Setting this option to a value + greater than 0 while having |'sidescroll'| also at a nonzero value + makes some context visible in the line you are scrolling in + horizontally (except at the end and beginning of the line). Setting + this option to a large value (like 999) has the effect of keeping the + cursor horizontally centered in the window, as long as one does not + come too close to the beginning or end of the line. + NOTE: This option is set to 0 when 'compatible' is set. + + Example: Try this together with 'sidescroll' and 'listchars' as + in the following example to never allow the cursor to move + onto the "extends" character: + + :set nowrap sidescroll=1 listchars=extends:>,precedes:< + :set sidescrolloff=1 + + + *'smartcase'* *'scs'* *'nosmartcase'* *'noscs'* +'smartcase' 'scs' 切替 (既定ではオフ) + グローバル + {Vi にはない} + Override the 'ignorecase' option if the search pattern contains upper + case characters. Only used when the search pattern is typed and + 'ignorecase' option is on. Used for the commands "/", "?", "n", "N", + ":g" and ":s". Not used for "*", "#", "gd", tag search, etc.. After + "*" and "#" you can make 'smartcase' used by doing a "/" command, + recalling the search pattern from history and hitting <Enter>. + NOTE: This option is reset when 'compatible' is set. + + *'smartindent'* *'si'* *'nosmartindent'* *'nosi'* +'smartindent' 'si' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + {not available when compiled without the + |+smartindent| feature} + Do smart autoindenting when starting a new line. Works for C-like + programs, but can also be used for other languages. 'cindent' does + something like this, works better in most cases, but is more strict, + see |C-indenting|. When 'cindent' is on, setting 'si' has no effect. + 'indentexpr' is a more advanced alternative. + Normally 'autoindent' should also be on when using 'smartindent'. + An indent is automatically inserted: + - After a line ending in '{'. + - After a line starting with a keyword from 'cinwords'. + - Before a line starting with '}' (only with the "O" command). + When typing '}' as the first character in a new line, that line is + given the same indent as the matching '{'. + When typing '#' as the first character in a new line, the indent for + that line is removed, the '#' is put in the first column. The indent + is restored for the next line. If you don't want this, use this + mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H. + When using the ">>" command, lines starting with '#' are not shifted + right. + NOTE: 'smartindent' is reset when 'compatible' is set. When 'paste' + is set smart indenting is disabled. + + *'smarttab'* *'sta'* *'nosmarttab'* *'nosta'* +'smarttab' 'sta' 切替 (既定ではオフ) + グローバル + {Vi にはない} + When on, a <Tab> in front of a line inserts blanks according to + 'shiftwidth'. 'tabstop' is used in other places. + When off a <Tab> always inserts blanks according to 'tabstop'. + 'shiftwidth' is only used for shifting text left or right + |shift-left-right|. + What gets inserted (a Tab or spaces) depends on the 'expandtab' + option. Also see |ins-expandtab|. When 'expandtab' is not set, the + 数値 of spaces minimized by using <Tab>s. + NOTE: This option is reset when 'compatible' is set. + + *'softtabstop'* *'sts'* +'softtabstop' 'sts' 数値 (既定では 0) + バッファについてローカル + {Vi にはない} + 数値 of spaces that a <Tab> counts for while performing editing + operations, like inserting a <Tab> or using <BS>. It "feels" like + <Tab>s are being inserted, while in fact a mix of spaces and <Tab>s is + used. This is useful to keep the 'ts' setting at its standard value + of 8, while being able to edit like it is set to 'sts'. However, + commands like "x" still work on the actual characters. + When 'sts' is zero, this feature is off. + 'softtabstop' is set to 0 when the 'paste' option is set. + See also |ins-expandtab|. When 'expandtab' is not set, the number of + spaces is minimized by using <Tab>s. + NOTE: This option is set to 0 when 'compatible' is set. + + *'splitbelow'* *'sb'* *'nosplitbelow'* *'nosb'* +'splitbelow' 'sb' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+windows| 機能付きでコンパイルされたときのみ + 使用可能} + When on, splitting a window will put the new window below the current + one. |:split| + + *'splitright'* *'spr'* *'nosplitright'* *'nospr'* +'splitright' 'spr' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+vertsplit| 機能付きでコンパイルされたときの + み使用可能} + When on, splitting a window will put the new window right of the + current one. |:vsplit| + + *'startofline'* *'sol'* *'nostartofline'* *'nosol'* +'startofline' 'sol' 切替 (既定ではオン) + グローバル + {Vi にはない} + When "on" the commands listed below move the cursor to the first + blank of the line. When off the cursor is kept in the same column + (if possible). This applies to the commands: CTRL-D, CTRL-U, CTRL-B, + CTRL-F, "G", "H", "M", "L", , and to the commands "d", "<<" and ">>" + with a linewise operator, with "%" with a count and to buffer changing + commands (CTRL-^, :bnext, :bNext, etc.). Also for an Ex command that + only has a line number, e.g., ":25" or ":+". + In case of buffer changing commands the cursor is placed at the column + where it was the last time the buffer was edited. + NOTE: This option is set when 'compatible' is set. + + *'statusline'* *'stl'* +'statusline' 'stl' 文字列 (default empty) + グローバル + {Vi にはない} + {Vi mが |+statusline| 機能付きでコンパイルされたときの + み使用可能} + When nonempty, this option determines the content of the status line. + Also see |status-line|. + + The option consists of printf style '%' items interspersed with + normal text. Each status line item is of the form: + %-0{minwid}.{maxwid}{item} + All fields except the {item} is optional. A single percent sign can + be given as "%%". + + Note that the only effect of 'ruler' when this option is set (and + 'laststatus' is 2) is controlling the output of |CTRL-G|. + + field meaning ~ + - Left justify the item. The default is right justified + when minwid is larger than the length of the item. + 0 Leading zeroes in numeric items. Overridden by '-'. + minwid Minimum width of the item, padding as set by '-' & '0'. + maxwid Maximum width of the item. Truncation occurs with a '<' + on the left for text items. Numeric items will be + shifted down to maxwid-2 digits followed by '>'number + where number is the amount of missing digits, much like + an exponential notation. + item A one letter code as described below. + + Following is a description of the possible statusline items. The + second character in "item" is the type: + N for number + S for string + F for flags as described below + - not applicable + + item meaning ~ + f S Path to the file in the buffer, relative to current directory. + F S Full path to the file in the buffer. + t S File name (tail) of file in the buffer. + m F Modified flag, text is " [+]" or " [-]" if 'modifiable' is off. + M F Modified flag, text is ",+" or ",-". + r F Readonly flag, text is " [RO]". + R F Readonly flag, text is ",RO". + h F Help buffer flag, text is " [help]". + H F Help buffer flag, text is ",HLP". + w F Preview window flag, text is " [Preview]". + W F Preview window flag, text is ",PRV". + y F Type of file in the buffer, e.g., " [vim]". See 'filetype'. + Y F Type of file in the buffer, e.g., ",VIM". See 'filetype'. + {not available when compiled without |+autocmd| feature} + k S Value of "b:keymap_name" or 'keymap' when |:lmap| mappings are + being used: "<keymap>" + n N Buffer number. + b N Value of byte under cursor. + B N As above, in hexadecimal. + o N Byte number in file of byte under cursor, first byte is 1. + Mnemonic: Offset from start of file (with one added) + {not available when compiled without |+byte_offset| feature} + O N As above, in hexadecimal. + N N Printer page number. (Only works in the 'printheader' option.) + l N Line number. + L N Number of lines in buffer. + c N Column number. + v N Virtual column number. + V N Virtual column number as -{num}. Not displayed if equal to 'c'. + p N Percentage through file in lines as in |CTRL-G|. + P S Percentage through file of displayed window. This is like the + percentage described for 'ruler'. Always 3 in length. + a S Argument list status as in default title. ({current} of {max}) + Empty if the argument file count is zero or one. + { NF Evaluate expression between '{' and '}' and substitute result. + ( - Start of item group. Can be used for setting the width and + alignment of a section. Must be followed by %) somewhere. + ) - End of item group. No width fields allowed. + < - Where to truncate line if too long. Default is at the start. + No width fields allowed. + = - Separation point between left and right aligned items. + No width fields allowed. + * - Set highlight group to User{N}, where {N} is taken from the + minwid field. eg. %1*. Restore normal highlight with %* or %0*. + The difference between User{N} and StatusLine will be applied + to StatusLineNC for the statusline of non-current windows. + The number N must be between 1 and 9. See |hl-User1..9| + + Display of flags are controlled by the following heuristic: + If a flag text starts with comma it is assumed that it wants to + separate itself from anything but preceding plaintext. If it starts + with a space it is assumed that it wants to separate itself from + anything but other flags. That is: A leading comma is removed if the + preceding character stems from plaintext. A leading space is removed + if the preceding character stems from another active flag. This will + make a nice display when flags are used like in the examples below. + + When all items in a group becomes an empty string (ie. flags that are + not set) and a minwid is not set for the group, the whole group will + become empty. This will make a group like the following disappear + completely from the statusline when none of the flags are set. > + :set statusline=...%(\ [%M%R%H]%)... +< + Beware that an expression is evaluated each and every time the status + line is displayed. The current buffer and current window will be set + temporarily to that of the window (and buffer) whose statusline is + currently being drawn. The expression will evaluate in this context. + The variable "actual_curbuf" is set to the 'bufnr()' number of the + real current buffer. The expression is evaluated in the |sandbox|. + + If the statusline is not updated when you want it (e.g., after setting + a variable that's used in an expression), you can force an update by + setting an option without changing its value. Example: > + :let &ro = &ro + +< A result of all digits is regarded a number for display purposes. + Otherwise the result is taken as flag text and applied to the rules + described above. + + Watch out for errors in expressions. They may render Vim unusable ! + If you are stuck, hold down ':' or 'Q' to get a prompt, then quit and + edit your .vimrc or whatever with "vim -u NONE" to get it right. + + Examples: + Display byte count and byte value, modified flag in red. > + :set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b' + :hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red +< Emulate standard status line with 'ruler' set > + :set statusline=%<%f%h%m%r%=%l,%c%V\ %P +< Idem, but add ascii value of char under the cursor (like "ga") > + :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P +< Display a ,GZ flag if a compressed file is loaded > + :set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h... +< In the |:autocmd|'s: > + :let b:gzflag = 1 +< And: > + :unlet b:gzflag +< And define this function: > + :function VarExists(var, val) + : if exists(a:var) | return a:val | else | return '' | endif + :endfunction +< + *'suffixes'* *'su'* +'suffixes' 'su' 文字列 (default ".bak,~,.o,.h,.info,.swp,.obj") + グローバル + {Vi にはない} + Files with these suffixes get a lower priority when multiple files + match a wildcard. See |suffixes|. Commas can be used to separate the + suffixes. Spaces after the comma are ignored. A dot is also seen as + the start of a suffix. To avoid a dot or comma being recognized as a + separator, precede it with a backslash (see |option-backslash| about + including spaces and backslashes). + See 'wildignore' for completely ignoring files. + The use of |:set+=| and |:set-=| is preferred when adding or removing + suffixes from the list. This avoids problems when a future version + uses another default. + + *'suffixesadd'* *'sua'* +'suffixesadd' 'sua' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + {not available when compiled without the + |+file_in_path| feature} + Comma separated list of suffixes, which are used when searching for a + file for the "gf", "[I", etc. commands. Example: > + :set suffixesadd=.java +< + *'swapfile'* *'swf'* *'noswapfile'* *'noswf'* +'swapfile' 'swf' 切替 (既定ではオン) + バッファについてローカル + {Vi にはない} + Use a swapfile for the buffer. This option can be reset when a + swapfile is not wanted for a specific buffer. For example, with + confidential information that even root must not be able to access. + Careful: All text will be in memory: + - Don't use this for big files. + - Recovery will be impossible! + A swapfile will only be present when |'updatecount'| is non-zero and + 'swapfile' is set. + When 'swapfile' is reset, the swap file for the current buffer is + immediately deleted. When 'swapfile' is set, and 'updatecount' is + non-zero, a swap file is immediately created. + Also see |swap-file| and |'swapsync'|. + + This option is used together with 'bufhidden' and 'buftype' to + specify special kinds of buffers. See |special-buffers|. + + *'swapsync'* *'sws'* +'swapsync' 'sws' 文字列 (default "fsync") + グローバル + {Vi にはない} + When this option is not empty a swap file is synced to disk after + writing to it. This takes some time, especially on busy unix systems. + When this option is empty parts of the swap file may be in memory and + not written to disk. When the system crashes you may lose more work. + On Unix the system does a sync now and then without Vim asking for it, + so the disadvantage of setting this option off is small. On some + systems the swap file will not be written at all. For a unix system + setting it to "sync" will use the sync() call instead of the default + fsync(), which may work better on some systems. + + *'switchbuf'* *'swb'* +'switchbuf' 'swb' 文字列 (既定では "") + グローバル + {Vi にはない} + This option controls the behavior when switching between buffers. + Possible values (comma separated list): + useopen If included, jump to the first open window that + contains the specified buffer (if there is one). + Otherwise: Do not examine other windows. + This setting is checked with |quickfix| commands, when + jumping to errors (":cc", ":cn", "cp", etc.). It is + also used in all buffer related split commands, for + example ":sbuffer", ":sbnext", or ":sbrewind". + split If included, split the current window before loading + a buffer. Otherwise: do not split, use current window. + Supported in |quickfix| commands that display errors. + + *'syntax'* *'syn'* +'syntax' 'syn' 文字列 (default emtpy) + バッファについてローカル + {Vi にはない} + {Vi mが |+syntax| 機能付きでコンパイルされたときのみ使 + 用可能} + When this option is set, the syntax with this name is loaded, unless + syntax highlighting has been switched off with ":syntax off". + Otherwise this option does not always reflect the current syntax (the + b:current_syntax variable does). + This option is most useful in a modeline, for a file which syntax is + not automatically recognized. Example, for in an IDL file: > + /* vim: set syntax=idl : */ +< To switch off syntax highlighting for the current file, use: > + :set syntax=OFF +< To switch syntax highlighting on according to the current value of the + 'filetype' option: > + :set syntax=ON +< What actually happens when setting the 'syntax' option is that the + Syntax autocommand event is triggered with the value as argument. + This option is not copied to another buffer, independent of the 's' or + 'S' flag in 'cpoptions'. + + *'tabstop'* *'ts'* +'tabstop' 'ts' 数値 (既定では 8) + バッファについてローカル + 数値 of spaces that a <Tab> in the file counts for. Also see + |:retab| command, and 'softtabstop' option. + + Note: Setting 'tabstop' to any other value than 8 can make your file + appear wrong in many places (e.g., when printing it). + + There are four main ways to use tabs in Vim: + 1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4 + (or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim + will use a mix of tabs and spaces, but typing Tab and BS will + behave like a tab appears every 4 (or 3) characters. + 2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use + 'expandtab'. This way you will always insert spaces. The + formatting will never be messed up when 'tabstop' is changed. + 3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a + |modeline| to set these values when editing the file again. Only + works when using Vim to edit the file. + 4. Always set 'tabstop' and 'shiftwidth' to the same value, and + 'noexpandtab'. This should then work (for initial indents only) + for any tabstop setting that people use. It might be nice to have + tabs after the first non-blank inserted as spaces if you do this + though. Otherwise aligned comments will be wrong when 'tabstop' is + changed. + + *'tagbsearch'* *'tbs'* *'notagbsearch'* *'notbs'* +'tagbsearch' 'tbs' 切替 (既定ではオン) + グローバル + {Vi にはない} + When searching for a tag (e.g., for the |:ta| command), Vim can either + use a binary search or a linear search in a tags file. Binary + searching makes searching for a tag a LOT faster, but a linear search + will find more tags if the tags file wasn't properly sorted. + Vim normally assumes that your tags files are sorted, or indicate that + they are not sorted. Only when this is not the case does the + 'tagbsearch' option need to be switched off. + + When 'tagbsearch' is on, binary searching is first used in the tags + files. In certain situations, Vim will do a linear search instead for + certain files, or retry all files with a linear search. When + 'tagbsearch' is off, only a linear search is done. + + Linear searching is done anyway, for one file, when Vim finds a line + at the start of the file indicating that it's not sorted: > + !_TAG_FILE_SORTED 0 /some command/ +< [The whitespace before and after the '0' must be a single <Tab>] + + When a binary search was done and no match was found in any of the + files listed in 'tags', and 'ignorecase' is set or a pattern is used + instead of a normal tag name, a retry is done with a linear search. + Tags in unsorted tags files, and matches with different case will only + be found in the retry. + + When 'tagbsearch' is off, tags searching is slower when a full match + exists, but faster when no full match exists. Tags in unsorted tags + files may only be found with 'tagbsearch' off. + When the tags file is not sorted, or sorted in a wrong way (not on + ASCII byte value), 'tagbsearch' should be off, or the line given above + must be included in the tags file. + This option doesn't affect commands that find all matching tags (e.g., + command-line completion and ":help"). + {Vi: always uses binary search in some versions} + + *'taglength'* *'tl'* +'taglength' 'tl' 数値 (既定では 0) + グローバル + If non-zero, tags are significant up to this number of characters. + + *'tagrelative'* *'tr'* *'notagrelative'* *'notr'* +'tagrelative' 'tr' 切替 (Vim default: on, Vi default: off) + グローバル + {Vi にはない} + If on and using a tag file in another directory, file names in that + tag file are relative to the directory where the tag file is. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'tags'* *'tag'* *E433* +'tags' 'tag' 文字列 (default "./tags,tags", when compiled with + |+emacs_tags|: "./tags,./TAGS,tags,TAGS") + グローバル/バッファについてローカル |global-local| + Filenames for the tag command, separated by spaces or commas. To + include a space or comma in a file name, precede it with a backslash + (see |option-backslash| about including spaces and backslashes). + When a file name starts with "./", the '.' is replaced with the path + of the current file. But only when the 'd' flag is not included in + 'cpoptions'. Environment variables are expanded |:set_env|. Also see + |tags-option|. + "*" and "**" Wildcards can be used to search for tags files in a + directory tree. See |file-searching|. {not available when compiled + without the |+path_extra| feature} + If Vim was compiled with the |+emacs_tags| feature, Emacs-style tag + files are also supported. They are automatically recognized. The + default value becomes "./tags,./TAGS,tags,TAGS", unless case + differences are ignored (MS-Windows). |emacs-tags| + The use of |:set+=| and |:set-=| is preferred when adding or removing + file names from the list. This avoids problems when a future version + uses another default. + {Vi: default is "tags /usr/lib/tags"} + + *'tagstack'* *'tgst'* *'notagstack'* *'notgst'* +'tagstack' 'tgst' 切替 (既定ではオン) + グローバル + {not in all versions of Vi} + When on, the |tagstack| is used normally. When off, a ":tag" or + ":tselect" command with an argument will not push the tag onto the + tagstack. A following ":tag" without an argument, a ":pop" command or + any other command that uses the tagstack will use the unmodified + tagstack, but does change the pointer to the active entry. + Resetting this option is useful when using a ":tag" command in a + mapping which should not change the tagstack. + + *'term'* +'term' 文字列 (default is $TERM, if that fails: + in the GUI: "builtin_gui" + on Amiga: "amiga" + on BeOS: "beos-ansi" + on Mac: "mac-ansi" + on MiNT: "vt52" + on MS-DOS: "pcterm" + on OS/2: "os2ansi" + on Unix: "ansi" + on VMS: "ansi" + on Win 32: "win32") + グローバル + Name of the terminal. Used for choosing the terminal control + characters. Environment variables are expanded |:set_env|. + For example: > + :set term=$TERM +< See |termcap|. + + *'termencoding'* *'tenc'* +'termencoding' 'tenc' 文字列 (既定では "") + グローバル + {Vi mが |+multi_byte| 機能付きでコンパイルされたときの + み使用可能} + {Vi にはない} + Encoding used for the terminal. This specifies what character + encoding the keyboard produces and the display will understand. For + the GUI it only applies to the keyboard ('encoding' is used for the + display). + When empty, the same encoding is used as for the 'encoding' option. + This is the normal value. + Not all combinations for 'termencoding' and 'encoding' are valid. See + |encoding-table|. + The value for this option must be supported by iconv(). When iconv() + cannot handle the value, no conversion will be done and you will + probably experience problems with non-ASCII characters. + Example: You are working with the locale set to euc-jp (Japanese) and + want to edit a UTF-8 file: > + :let &termencoding = &encoding + :set encoding=utf-8 +< You need to do this when your system has no locale support for UTF-8. + + *'terse'* *'noterse'* +'terse' 切替 (既定ではオフ) + グローバル + When set: Add 's' flag to 'shortmess' option (this makes the message + for a search that hits the start or end of the file not being + displayed). When reset: Remove 's' flag from 'shortmess' option. {Vi + shortens a lot of messages} + + *'textauto'* *'ta'* *'notextauto'* *'nota'* +'textauto' 'ta' 切替 (Vim default: on, Vi default: off) + グローバル + {Vi にはない} + This option is obsolete. Use 'fileformats'. + For backwards compatibility, when 'textauto' is set, 'fileformats' is + set to the default value for the current system. When 'textauto' is + reset, 'fileformats' is made empty. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'textmode'* *'tx'* *'notextmode'* *'notx'* +'textmode' 'tx' 切替 (MS-DOS, Win32 and OS/2: default on, + others: default off) + バッファについてローカル + {Vi にはない} + This option is obsolete. Use 'fileformat'. + For backwards compatibility, when 'textmode' is set, 'fileformat' is + set to "dos". When 'textmode' is reset, 'fileformat' is set to + "unix". + + *'textwidth'* *'tw'* +'textwidth' 'tw' 数値 (既定では 0) + バッファについてローカル + {Vi にはない} + Maximum width of text that is being inserted. A longer line will be + broken after white space to get this width. A zero value disables + this. 'textwidth' is set to 0 when the 'paste' option is set. When + 'textwidth' is zero, 'wrapmargin' may be used. See also + 'formatoptions' and |ins-textwidth|. + NOTE: This option is set to 0 when 'compatible' is set. + + *'thesaurus'* *'tsr'* +'thesaurus' 'tsr' 文字列 (既定では "") + グローバル/バッファについてローカル |global-local| + {Vi にはない} + List of file names, separated by commas, that are used to lookup words + for thesesaurus completion commands |i_CTRL-X_CTRL-T|. Each line in + the file should contain words with similar meaning, separated by + non-keyword characters (white space is preferred). Maximum line + length is 510 bytes. + To obtain a file to be used here, check out the wordlist FAQ at + http://www.hyphenologist.co.uk . + To include a comma in a file name precede it with a backslash. Spaces + after a comma are ignored, otherwise spaces are included in the file + name. See |option-backslash| about using backslashes. + The use of |:set+=| and |:set-=| is preferred when adding or removing + directories from the list. This avoids problems when a future version + uses another default. + Backticks cannot be used in this option for security reasons. + + *'tildeop'* *'top'* *'notildeop'* *'notop'* +'tildeop' 'top' 切替 (既定ではオフ) + グローバル + {Vi にはない} + When on: The tilde command "~" behaves like an operator. + NOTE: This option is reset when 'compatible' is set. + + *'timeout'* *'to'* *'notimeout'* *'noto'* +'timeout' 'to' 切替 (既定ではオン) + グローバル + *'ttimeout'* *'nottimeout'* +'ttimeout' 切替 (既定ではオフ) + グローバル + {Vi にはない} + These two options together determine the behavior when part of a + mapped key sequence or keyboard code has been received: + + 'timeout' 'ttimeout' action ~ + off off do not time out + on on or off time out on :mappings and key codes + off on time out on key codes + + If both options are off, Vim will wait until either the complete + mapping or key sequence has been received, or it is clear that there + is no mapping or key sequence for the received characters. For + example: if you have mapped "vl" and Vim has received 'v', the next + character is needed to see if the 'v' is followed by an 'l'. + When one of the options is on, Vim will wait for about 1 second for + the next character to arrive. After that the already received + characters are interpreted as single characters. The waiting time can + be changed with the 'timeoutlen' option. + On slow terminals or very busy systems timing out may cause + malfunctioning cursor keys. If both options are off, Vim waits + forever after an entered <Esc> if there are key codes that start + with <Esc>. You will have to type <Esc> twice. If you do not have + problems with key codes, but would like to have :mapped key + sequences not timing out in 1 second, set the 'ttimeout' option and + reset the 'timeout' option. + + NOTE: 'ttimeout' is reset when 'compatible' is set. + + *'timeoutlen'* *'tm'* +'timeoutlen' 'tm' 数値 (既定では 1000) + グローバル + {not in all versions of Vi} + *'ttimeoutlen'* *'ttm'* +'ttimeoutlen' 'ttm' 数値 (default -1) + グローバル + {Vi にはない} + The time in milliseconds that is waited for a key code or mapped key + sequence to complete. Normally only 'timeoutlen' is used and + 'ttimeoutlen' is -1. When a different timeout value for key codes is + desired set 'ttimeoutlen' to a non-negative number. + + ttimeoutlen mapping delay key code delay ~ + < 0 'timeoutlen' 'timeoutlen' + >= 0 'timeoutlen' 'ttimeoutlen' + + The timeout only happens when the 'timeout' and 'ttimeout' options + tell so. A useful setting would be + :set timeout timeoutlen=3000 ttimeoutlen=100 + (time out on mapping after three seconds, time out on key codes after + a tenth of a second). + + *'title'* *'notitle'* +'title' 切替 (default off, on when title can be restored) + グローバル + {Vi にはない} + {Vi mが |+title| 機能付きでコンパイルされたときのみ使 + 用可能} + When on, the title of the window will be set to the value of + 'titlestring' (if it is not empty), or to: + filename [+=-] (path) - VIM + Where: + filename the name of the file being edited + - indicates the file canot be modified, 'ma' off + + indicates the file was modified + = indicates the file is read-only + =+ indicates the file is read-only and modified + (path) is the path of the file being edited + - VIM the server name |v:servername| or "VIM" + Only works if the terminal supports setting window titles + (currently Amiga console, Win32 console, all GUI versions and + terminals with a non- empty 't_ts' option - these are Unix xterm and + iris-ansi by default, where 't_ts' is taken from the builtin termcap). + *X11* + When Vim was compiled with HAVE_X11 defined, the original title will + be restored if possible. The output of ":version" will include "+X11" + when HAVE_X11 was defined, otherwise it will be "-X11". This also + works for the icon name |'icon'|. + But: When Vim was started with the |-X| argument, restoring the title + will not work (except in the GUI). + If the title cannot be restored, it is set to the value of 'titleold'. + You might want to restore the title outside of Vim then. + When using an xterm from a remote machine you can use this command: + rsh machine_name xterm -display $DISPLAY & + then the WINDOWID environment variable should be inherited and the + title of the window should change back to what it should be after + exiting Vim. + + *'titlelen'* +'titlelen' 数値 (既定では 85) + グローバル + {Vi にはない} + {Vi mが |+title| 機能付きでコンパイルされたときのみ使 + 用可能} + Gives the percentage of 'columns' to use for the length of the window + title. When the title is longer, only the end of the path name is + shown. A '<' character before the path name is used to indicate this. + Using a percentage makes this adapt to the width of the window. But + it won't work perfectly, because the actual number of characters + available also depends on the font used and other things in the title + bar. When 'titlelen' is zero the full path is used. Otherwise, + values from 1 to 30000 percent can be used. + 'titlelen' is also used for the 'titlestring' option. + + *'titleold'* +'titleold' 文字列 (default "Thanks for flying Vim") + グローバル + {Vi にはない} + {Vi mが |+title| 機能付きでコンパイルされたときのみ使 + 用可能} + This option will be used for the window title when exiting Vim if the + original title cannot be restored. Only happens if 'title' is on or + 'titlestring' is not empty. + *'titlestring'* +'titlestring' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+title| 機能付きでコンパイルされたときのみ使 + 用可能} + When this option is not empty, it will be used for the title of the + window. This happens only when the 'title' option is on. + Only works if the terminal supports setting window titles (currently + Amiga console, Win32 console, all GUI versions and terminals with a + non-empty 't_ts' option). + When Vim was compiled with HAVE_X11 defined, the original title will + be restored if possible |X11|. + When this option contains printf-style '%' items, they will be + expanded according to the rules used for 'statusline'. + Example: > + :auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p") + :set title titlestring=%<%F%=%l/%L-%P titlelen=70 +< The value of 'titlelen' is used to align items in the middle or right + of the available space. + Some people prefer to have the file name first: > + :set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%) +< Note the use of "%{ }" and an expression to get the path of the file, + without the file name. The "%( %)" constructs are used to add a + separating space only when needed. + NOTE: Use of special characters in 'titlestring' may cause the display + to be garbled (e.g., when it contains a CR or NL character). + {not available when compiled without the |+statusline| feature} + + *'toolbar'* *'tb'* +'toolbar' 'tb' 文字列 (default "icons,tooltips") + グローバル + {only for |+GUI_GTK|, |+GUI_Athena|, |+GUI_Motif| and + |+GUI_Photon|} + The contents of this option controls various toolbar settings. The + possible values are: + icons Toolbar buttons are shown with icons. + text Toolbar buttons shown with text. + tooltips Tooltips are active for toolbar buttons. + Tooltips refer to the popup help text which appears after the mouse + cursor is placed over a toolbar button for a brief moment. + + If you want the toolbar to be shown with icons as well as text, do the + following: > + :set tb=icons,text +< Motif and Athena cannot display icons and text at the same time. They + will show icons if both are requested. + + If none of the strings specified in 'toolbar' are valid or if + 'toolbar' is empty, this option is ignored. If you want to disable + the toolbar, you need to set the 'guioptions' option. For example: > + :set guioptions-=T +< Also see |gui-toolbar|. + + *'ttybuiltin'* *'tbi'* *'nottybuiltin'* *'notbi'* +'ttybuiltin' 'tbi' 切替 (既定ではオン) + グローバル + {Vi にはない} + When on, the builtin termcaps are searched before the external ones. + When off the builtin termcaps are searched after the external ones. + When this option is changed, you should set the 'term' option next for + the change to take effect, for example: > + :set notbi term=$TERM +< See also |termcap|. + Rationale: The default for this option is "on", because the builtin + termcap entries are generally better (many systems contain faulty + xterm entries...). + + *'ttyfast'* *'tf'* *'nottyfast'* *'notf'* +'ttyfast' 'tf' 切替 (default off, on when 'term' is xterm, hpterm, + sun-cmd, screen, rxvt, dtterm or + iris-ansi; also on when running Vim in + a DOS console) + グローバル + {Vi にはない} + Indicates a fast terminal connection. More characters will be sent to + the screen for redrawing, instead of using insert/delete line + commands. Improves smoothness of redrawing when there are multiple + windows and the terminal does not support a scrolling region. + Also enables the extra writing of characters at the end of each screen + line for lines that wrap. This helps when using copy/paste with the + mouse in an xterm and other terminals. + + *'ttymouse'* *'ttym'* +'ttymouse' 'ttym' 文字列 (default depends on 'term') + グローバル + {Vi にはない} + {only in Unix and VMS, doesn't work in the GUI; not + available when compiled without |+mouse|} + Name of the terminal type for which mouse codes are to be recognized. + Currently these three strings are valid: + *xterm-mouse* + xterm xterm-like mouse handling. The mouse generates + "<Esc>[Mscr", where "scr" is three bytes: + "s" = button state + "c" = column plus 33 + "r" = row plus 33 + xterm2 Works like "xterm", but with the xterm reporting the + mouse position while the mouse is dragged. This works + much faster and more precise. Your xterm must at + least at patchlevel 88 / XFree 3.3.3 for this to + work. See below for how Vim detects this + automatically. + *netterm-mouse* + netterm NetTerm mouse handling. The mouse generates + "<Esc>}r,c<CR>", where "r,c" are two decimal numbers + for the row and column. + *dec-mouse* + dec DEC terminal mouse handling. The mouse generates a + rather complex sequence, starting with "<Esc>[". + *jsbterm-mouse* + jsbterm JSB term mouse handling. + *pterm-mouse* + pterm QNX pterm mouse handling. + + The mouse handling must be enabled at compile time |+mouse_xterm| + |+mouse_dec| |+mouse_netterm|. + Only "xterm"(2) is really recognized. NetTerm mouse codes are always + recognized, if enabled at compile time. DEC terminal mouse codes + are recognized if enabled at compile time, and 'ttymouse' is not + "xterm" (because the xterm and dec mouse codes conflict). + This option is automatically set to "xterm", when the 'term' option is + set to a name that starts with "xterm", and 'ttymouse' is not "xterm" + or "xterm2" already. The main use of this option is to set it to + "xterm", when the terminal name doesn't start with "xterm", but it can + handle xterm mouse codes. + The "xterm2" value will be set if the xterm version is reported to be + 95 of higher. This only works when compiled with the |+termresponse| + feature and if |t_RV| is set to the escape sequence to request the + xterm version number. Otherwise "xterm2" must be set explicitly. + If you do not want 'ttymouse' to be set to "xterm2" automatically, set + t_RV to an empty string: > + :set t_RV= +< + *'ttyscroll'* *'tsl'* +'ttyscroll' 'tsl' 数値 (既定では 999) + グローバル + Maximum number of lines to scroll the screen. If there are more lines + to scroll the window is redrawn. For terminals where scrolling is + very slow and redrawing is not slow this can be set to a small number, + e.g., 3, to speed up displaying. + + *'ttytype'* *'tty'* +'ttytype' 'tty' 文字列 (default from $TERM) + グローバル + Alias for 'term', see above. + + *'undolevels'* *'ul'* +'undolevels' 'ul' 数値 (default 100, 1000 for Unix, VMS, + Win32 and OS/2) + グローバル + {Vi にはない} + Maximum number of changes that can be undone. Since undo information + is kept in memory, higher numbers will cause more memory to be used + (nevertheless, a single change can use an unlimited amount of memory). + Set to 0 for Vi compatibility: One level of undo and "u" undoes + itself: > + set ul=0 +< But you can also get Vi compatibility by including the 'u' flag in + 'cpoptions', and still be able to use CTRL-R to repeat undo. + Set to a negative number for no undo at all: > + set ul=-1 +< This helps when you run out of memory for a single change. + Also see |undo-two-ways|. + + *'updatecount'* *'uc'* +'updatecount' 'uc' 数値 (default: 200) + グローバル + {Vi にはない} + After typing this many characters the swap file will be written to + disk. When zero, no swap file will be created at all (see chapter on + recovery |crash-recovery|). 'updatecount' is set to zero by starting + Vim with the "-n" option, see |startup|. When editing in readonly + mode this option will be initialized to 10000. + The swapfile can be disabled per buffer with |'swapfile'|. + When 'updatecount' is set from non-zero to zero, swap files are + created for all buffers that have 'swapfile' set. When 'updatecount' + is set to zero, existing swap files are not deleted. + Also see |'swapsync'|. + This option has no meaning in buffers where |'buftype'| is "nofile" + or "nowrite". + + *'updatetime'* *'ut'* +'updatetime' 'ut' 数値 (既定では 4000) + グローバル + {Vi にはない} + If this many milliseconds nothing is typed the swap file will be + written to disk (see |crash-recovery|). Also used for the + |CursorHold| autocommand event. + + *'verbose'* *'vbs'* +'verbose' 'vbs' 数値 (既定では 0) + グローバル + {not in Vi, although some versions have a boolean + verbose option} + When bigger than zero, Vim will give messages about what it is doing. + Currently, these messages are given: + >= 1 When the viminfo file is read or written. + >= 2 When a file is ":source"'ed. + >= 5 Every searched tags file. + >= 8 Files for which a group of autocommands is executed. + >= 9 Every executed autocommand. + >= 12 Every executed function + >= 15 Every executed Ex command (truncated at 200 characters) + + This option can also be set with the "-V" argument. See |-V|. + This option is also set by the |:verbose| command. + + *'viewdir'* *'vdir'* +'viewdir' 'vdir' 文字列 (default for Amiga, MS-DOS, OS/2 and Win32: + "$VIM/vimfiles/view", + for Unix: "~/.vim/view", + for Macintosh: "$VIM:vimfiles:view" + for VMS: "sys$login:vimfiles/view" + for RiscOS: "Choices:vimfiles/view") + グローバル + {Vi にはない} + {Vi mが |+mksession| 機能付きでコンパイルされたときの + み使用可能} + Name of the directory where to store files for |:mkview|. + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'viewoptions'* *'vop'* +'viewoptions' 'vop' 文字列 (default: "folds,options,cursor") + グローバル + {Vi にはない} + {Vi mが |+mksession| 機能付きでコンパイルされたときの + み使用可能} + Changes the effect of the |:mkview| command. It is a comma separated + list of words. Each word enables saving and restoring something: + word save and restore ~ + cursor cursor position in file and in window + folds manually created folds, opened/closed folds and local + fold options + options options and mappings local to a window or buffer (not + グローバル values for local options) + unix with Unix end-of-line format (single <NL>), even when + on Windows or DOS + + "slash" and "unix" are useful on Windows when sharing view files + with Unix. The Unix version of Vim cannot source dos format scripts, + but the Windows version of Vim can source unix format scripts. + + *'viminfo'* *'vi'* + +'viminfo' 'vi' 文字列 (Vi default: "", Vim default for MS-DOS, + Windows and OS/2: '20,"50,h,rA:,rB:, + for Amiga: '20,"50,h,rdf0:,rdf1:,rdf2: + for others: '20,"50,h) + グローバル + {Vi にはない} + {not available when compiled without the |+viminfo| + feature} + When non-empty, the viminfo file is read upon startup and written + when exiting Vim (see |viminfo-file|). The string should be a comma + separated list of parameters, each consisting of a single character + identifying the particular parameter, followed by a number or string + which specifies the value of that parameter. If a particular + character is left out, then the default value is used for that + parameter. The following is a list of the identifying characters and + the effect of their value. + CHAR VALUE ~ + ! When included, save and restore global variables that start + with an uppercase letter, and don't contain a lowercase + letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis" + and "_K_L_M" are not. + " Maximum number of lines saved for each register. If zero then + registers are not saved. When not included, all lines are + saved. Dont forget to put a backslash before the ", otherwise + it will be recognized as the start of a comment! + % When included, save and restore the buffer list. If Vim is + started with a file name argument, the buffer list is not + restored. If Vim is started without a file name argument, the + buffer list is restored from the viminfo file. Buffers + without a file name and buffers for help files are not written + to the viminfo file. + ' Maximum number of previously edited files for which the marks + are remembered. This parameter must always be included when + 'viminfo' is non-empty. + Including this item also means that the |jumplist| is stored + in the viminfo file. + / Maximum number of items in the search pattern history to be + saved. If non-zero, then the previous search and substitute + patterns are also saved. When not included, the value of + 'history' is used. + : Maximum number of items in the command-line history to be + saved. When not included, the value of 'history' is used. + @ Maximum number of items in the input-line history to be + saved. When not included, the value of 'history' is used. + c When included, convert the text in the viminfo file from the + 'encoding' used when writing the file to the current + 'encoding'. See |viminfo-encoding|. + f Whether file marks need to be stored. If zero, file marks ('0 + to '9, 'A to 'Z) are not stored. When not present or when + non-zero, they are all stored. '0 is used for the current + cursor position (when exiting or when doing ":wviminfo"). + h Disable the effect of 'hlsearch' when loading the viminfo + file. When not included, it depends on whether ":nohlsearch" + has been used since the last search command. + n Name of the viminfo file. The name must immediately follow + the 'n'. Must be the last one! If the "-i" argument was + given when starting Vim, that file name overrides the one + given here with 'viminfo'. Environment variables are expanded + when opening the file, not when setting the option. + r Removable media. The argument is a string (up to the next + ','). This parameter can be given several times. Each + specifies the start of a path for which no marks will be + stored. This is to avoid removable media. For MS-DOS you + could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:". Case is + ignored. Maximum length of each 'r' argument is 50 + characters. + + Example: > + :set viminfo='50,\"1000,:0,n~/vim/viminfo +< + '50 Marks will be remembered for the last 50 files you + edited. + "1000 Contents of registers (up to 1000 lines each) will be + remembered. + :0 Command-line history will not be saved. + n~/vim/viminfo The name of the file to use is "~/vim/viminfo". + no / Since '/' is not specified, the default will be used, + that is, save all of the search history, and also the + previous search and substitute patterns. + no % The buffer list will not be saved nor read back. + no h 'hlsearch' highlighting will be restored. + + 安全上の理由から、このオプションをモードライン |modeline| から設定する + ことはできない。 + + *'virtualedit'* *'ve'* +'virtualedit' 've' 文字列 (既定では "") + グローバル + {Vi にはない} + {not available when compiled without the + |+virtualedit| feature} + A comma separated list of these words: + block Allow virtual editing in Visual block mode. + insert Allow virtual editing in Insert mode. + all Allow virtual editing in all modes. + Virtual editing means that the cursor can be positioned where there is + no actual character. This can be halfway into a Tab or beyond the end + of the line. Useful for selecting a rectangle in Visual mode and + editing a table. + + *'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep* +'visualbell' 'vb' 切替 (既定ではオフ) + グローバル + {Vi にはない} + Use visual bell instead of beeping. The terminal code to display the + visual bell is given with 't_vb'. When no beep or flash is wanted, + use ":set vb t_vb=". + Note: When the GUI starts, 't_vb' is reset to its default value. You + might want to set it again in your |gvimrc|. + In the GUI, 't_vb' defaults to "<Esc>|f", which inverts the display + for 20 msec. If you want to use a different time, use "<Esc>|40f", + where 40 is the time in msec. + Does not work on the Amiga, you always get a screen flash. + Also see 'errorbells'. + + *'warn'* *'nowarn'* +'warn' 切替 (既定ではオン) + グローバル + Give a warning message when a shell command is used while the buffer + has been changed. + + *'weirdinvert'* *'wiv'* *'noweirdinvert'* *'nowiv'* +'weirdinvert' 'wiv' 切替 (既定ではオフ) + グローバル + {Vi にはない} + This option has the same effect as the 't_xs' termcap option. + It is provided for backwards compatibility with version 4.x. + Setting 'weirdinvert' has the effect of making 't_xs' non-empty, and + vice versa. Has no effect when the GUI is running. + + *'whichwrap'* *'ww'* +'whichwrap' 'ww' 文字列 (Vim default: "b,s", Vi default: "") + グローバル + {Vi にはない} + Allow specified keys that move the cursor left/right to wrap to the + previous/next line when the cursor is on the first/last character in + the line. Concatenate characters to allow this for these keys: + char key mode ~ + b <BS> Normal and Visual + s <Space> Normal and Visual + h "h" Normal and Visual + l "l" Normal and Visual + < <Left> Normal and Visual + > <Right> Normal and Visual + ~ "~" Normal + [ <Left> Insert and Replace + ] <Right> Insert and Replace + For example: > + :set ww=<,>,[,] +< allows wrap only when cursor keys are used. + When the movement keys are used in combination with a delete or change + operator, the <EOL> also counts for a character. This makes "3h" + different from "3dh" when the cursor crosses the end of a line. This + is also true for "x" and "X", because they do the same as "dl" and + "dh". If you use this, you may also want to use the mapping + ":map <BS> X" to make backspace delete the character in front of the + cursor. + When 'l' is included, you get a side effect: "yl" on an empty line + will include the <EOL>, so that "p" will insert a new line. + NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'wildchar'* *'wc'* +'wildchar' 'wc' 数値 (Vim default: <Tab>, Vi default: CTRL-E) + グローバル + {Vi にはない} + Character you have to type to start wildcard expansion in the + command-line, as specified with 'wildmode'. + The character is not recognized when used inside a macro. See + 'wildcharm' for that. + Although 'wc' is a number option, you can set it to a special key: > + :set wc=<Esc> +< NOTE: This option is set to the Vi default value when 'compatible' is + set and to the Vim default value when 'compatible' is reset. + + *'wildcharm'* *'wcm'* +'wildcharm' 'wcm' 数値 (default: none (0)) + グローバル + {Vi にはない} + 'wildcharm' works exactly like 'wildchar', except that it is + recognized when used inside a macro. You can find "spare" command-line + keys suitable for this option by looking at |ex-edit-index|. Normally + you'll never actually type 'wildcharm', just use it in mappings that + automatically invoke completion mode, e.g.: > + :set wcm=<C-Z> + :cmap ss so $vim/sessions/*.vim<C-Z> +< Then after typing :ss you can use CTRL-P & CTRL-N. + + *'wildignore'* *'wig'* +'wildignore' 'wig' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+wildignore| 機能付きでコンパイルされたときの + み使用可能} + A list of file patterns. A file that matches with one of these + patterns is ignored when completing file or directory names. + The pattern is used like with |:autocmd|, see |autocmd-patterns|. + Also see 'suffixes'. + Example: > + :set wildignore=*.o,*.obj +< The use of |:set+=| and |:set-=| is preferred when adding or removing + a pattern from the list. This avoids problems when a future version + uses another default. + + *'wildmenu'* *'wmnu'* *'nowildmenu'* *'nowmnu'* +'wildmenu' 'wmnu' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが |+wildmenu| 機能付きでコンパイルされたときのみ + 使用可能} + When 'wildmenu' is on, command-line completion operates in an enhanced + mode. On pressing 'wildchar' (usually <Tab>) to invoke completion, + the possible matches are shown just above the command line, with the + first match highlighted (overwriting the status line, if there is + one). Keys that show the previous/next match, such as <Tab> or + CTRL-P/CTRL-N, cause the highlight to move to the appropriate match. + When 'wildmode' is used, "wildmenu" mode is used where "full" is + specified. "longest" and "list" do not start "wildmenu" mode. + If there are more matches than can fit in the line, a ">" is shown on + the right and/or a "<" is shown on the left. The status line scrolls + as needed. + The "wildmenu" mode is abandoned when a key is hit that is not used + for selecting a completion. + While the "wildmenu" is active the following keys have special + meanings: + + <Left> <Right> - select previous/next match (like CTRL-P/CTRL-N) + <Down> - in filename/menu name completion: move into a + subdirectory or submenu. + <CR> - in menu completion, when the cursor is just after a + dot: move into a submenu. + <Up> - in filename/menu name completion: move up into + parent directory or parent menu. + + This makes the menus accessible from the console |console-menus|. + + If you prefer the <Left> and <Right> keys to move the cursor instead + of selecting a different match, use this: > + :cnoremap <Left> <Space><BS><Left> + :cnoremap <Right> <Space><BS><Right> +< + The "WildMenu" highlighting is used for displaying the current match + |hl-WildMenu|. + + *'wildmode'* *'wim'* +'wildmode' 'wim' 文字列 (Vim default: "full") + グローバル + {Vi にはない} + Completion mode that is used for the character specified with + 'wildchar'. It is a comma separated list of up to four parts. Each + part specifies what to do for each consecutive use of 'wildchar. The + first part specifies the behavior for the first use of 'wildchar', + The second part for the second use, etc. + These are the possible values for each part: + "" Complete only the first match. + "full" Complete the next full match. After the last match, + the original string is used and then the first match + again. + "longest" Complete till longest common string. If this doesn't + result in a longer string, use the next part. + "longest:full" Like "longest", but also start 'wildmenu' if it is + enabled. + "list" When more than one match, list all matches. + "list:full" When more than one match, list all matches and + complete first match. + "list:longest" When more than one match, list all matches and + complete till longest common string. + When there is only a single match, it is fully completed in all cases. + + Examples: > + :set wildmode=full +< Complete first full match, next match, etc. (the default) > + :set wildmode=longest,full +< Complete longest common string, then each full match > + :set wildmode=list:full +< List all matches and complete each full match > + :set wildmode=list,full +< List all matches without completing, then each full match > + :set wildmode=longest,list +< Complete longest common string, then list alternatives. + + *'winaltkeys'* *'wak'* +'winaltkeys' 'wak' 文字列 (default "menu") + グローバル + {Vi にはない} + {only used in Win32, Motif, GTK and Photon GUI} + Some GUI versions allow the access to menu entries by using the ALT + key in combination with a character that appears underlined in the + menu. This conflicts with the use of the ALT key for mappings and + entering special characters. This option tells what to do: + no Don't use ALT keys for menus. ALT key combinations can be + mapped, but there is no automatic handling. This can then be + done with the |:simalt| command. + yes ALT key handling is done by the windowing system. ALT key + combinations cannot be mapped. + menu Using ALT in combination with a character that is a menu + shortcut key, will be handled by the windowing system. Other + keys can be mapped. + If the menu is disabled by excluding 'm' from 'guioptions', the ALT + key is never used for the menu. + In the Win32 version, the <F10> key is handled like this too, since + Windows uses it to select a menu. + + *'winheight'* *'wh'* +'winheight' 'wh' 数値 (既定では 1) + グローバル + {Vi にはない} + {Vi mが |+windows| 機能付きでコンパイルされたときのみ + 使用可能} + Minimal number of lines for the current window. This is not a hard + minimum, Vim will use fewer lines if there is not enough room. If the + current window is smaller, its size is increased, at the cost of the + height of other windows. Set it to 999 to make the current window + always fill the screen. Set it to a small number for normal editing. + The height is not adjusted after one of the commands to change the + height of the current window. + 'winheight' applies to the current window. Use 'winminheight' to set + the minimal height for other windows. + + *'winminheight'* *'wmh'* +'winminheight' 'wmh' 数値 (既定では 1) + グローバル + {Vi にはない} + {Vi mが |+windows| 機能付きでコンパイルされたときのみ + 使用可能} + The minimal height of a window, when it's not the current window. + This is a hard minimum, windows will never become smaller. + When set to zero, windows may be "squashed" to zero lines (i.e. just a + status bar) if necessary. They will return to at least one line when + they become active (since the cursor has to have somewhere to go.) + Use 'winheight' to set the minimal height of the current window. + This option is only checked when making a window smaller. Don't use a + large number, it will cause errors when opening more than a few + windows. A value of 0 to 3 is reasonable. + + *'winminwidth'* *'wmw'* +'winminwidth' 'wmw' 数値 (既定では 1) + グローバル + {Vi にはない} + {Vi mが |+vertsplit| 機能付きでコンパイルされたときの + み使用可能} + The minimal width of a window, when it's not the current window. + This is a hard minimum, windows will never become smaller. + When set to zero, windows may be "squashed" to zero columns (i.e. just + a vertical separator) if necessary. They will return to at least one + line when they become active (since the cursor has to have somewhere + to go.) + Use 'winwidth' to set the minimal width of the current window. + This option is only checked when making a window smaller. Don't use a + large number, it will cause errors when opening more than a few + windows. A value of 0 to 12 is reasonable. + + *'winwidth'* *'wiw'* +'winwidth' 'wiw' 数値 (既定では 20) + グローバル + {Vi にはない} + {Vi mが |+vertsplit| 機能付きでコンパイルされたときの + み使用可能} + Minimal number of columns for the current window. This is not a hard + minimum, Vim will use fewer columns if there is not enough room. If + the current window is smaller, its size is increased, at the cost of + the width of other windows. Set it to 999 to make the current window + always fill the screen. Set it to a small number for normal editing. + The width is not adjusted after one of the commands to change the + width of the current window. + 'winwidth' applies to the current window. Use 'winminwidth' to set + the minimal width for other windows. + + *'wrap'* *'nowrap'* +'wrap' 切替 (既定ではオン) + ウィンドウについてローカル + {Vi にはない} + This option changes how text is displayed. It doesn't change the text + in the buffer, see 'textwidth' for that. + When on, lines longer than the width of the window will wrap and + displaying continues on the next line. When off lines will not wrap + and only part of long lines will be displayed. When the cursor is + moved to a part that is not shown, the screen will scroll + horizontally. + The line will be broken in the middle of a word if necessary. See + 'linebreak' to get the break at a word boundary. + To make scrolling horizontally a bit more useful, try this: > + :set sidescroll=5 + :set listchars+=precedes:<,extends:> +< See 'sidescroll', 'listchars' and |wrap-off|. + + *'wrapmargin'* *'wm'* +'wrapmargin' 'wm' 数値 (既定では 0) + バッファについてローカル + 数値 of characters from the right window border where wrapping + starts. When typing text beyond this limit, an <EOL> will be inserted + and inserting continues on the next line. When 'textwidth' is + non-zero, this option is not used. See also 'formatoptions' and + |ins-textwidth|. {Vi: works differently and less usefully} + + *'wrapscan'* *'ws'* *'nowrapscan'* *'nows'* +'wrapscan' 'ws' 切替 (既定ではオン) *E384* *E385* + グローバル + Searches wrap around the end of the file. + + *'write'* *'nowrite'* +'write' 切替 (既定ではオン) + グローバル + {Vi にはない} + Allows writing files. When not set, writing a file is not allowed. + Can be used for a view-only mode, where modifications to the text are + still allowed. Can be reset with the |-m| or |-M| command line + argument. Filtering text is still possible, even though this requires + writing a temporary file. + + *'writeany'* *'wa'* *'nowriteany'* *'nowa'* +'writeany' 'wa' 切替 (既定ではオフ) + グローバル + Allows writing to any file with no need for "!" override. + + *'writebackup'* *'wb'* *'nowritebackup'* *'nowb'* +'writebackup' 'wb' 切替 (default on with |+writebackup| feature, off + otherwise) + グローバル + {Vi にはない} + Make a backup before overwriting a file. The backup is removed after + the file was successfully written, unless the 'backup' option is + also on. Reset this option if your file system is almost full. See + |backup-table| for another explanation. + When the 'backupskip' pattern matches, a backup is not made anyway. + NOTE: This option is set to the default value when 'compatible' is + set. + + *'writedelay'* *'wd'* +'writedelay' 'wd' 数値 (既定では 0) + グローバル + {Vi にはない} + The number of microseconds to wait for each character sent to the + screen. When non-zero, characters are sent to the terminal one by + one. For MS-DOS pcterm this does not work. For debugging purposes. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_risc.jax b/ja/os_risc.jax new file mode 100644 index 000000000..a43e5cabe --- /dev/null +++ b/ja/os_risc.jax @@ -0,0 +1,335 @@ +COMMENT: OS特有情報:RISC OS +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> + +*os_risc.txt* For Vim version 6.3. Last change: 2004 May 01 + + + VIMリファレンスマニュアル by Thomas Leonard + + + *riscos* *RISCOS* *RISC-OS* +このファイルにはRISC OS版のVimについての詳細が書かれている。 + +RISC OSへの移植は完全に新しい移植であり、古い`archi'への移植には基づいていな +い。 + +1. ファイル配置場所 |riscos-locations| +2. ファイル名改変 |riscos-munging| +3. コマンドラインでの使用 |riscos-commandline| +4. GUIでの使用 |riscos-gui| +5. リモートでの使用(telnet) |riscos-remote| +6. テンポラリファイル |riscos-temp-files| +7. 割込み |riscos-interrupt| +8. メモリ使用量 |riscos-memory| +9. ファイルタイプ |riscos-filetypes| +10. シェル |riscos-shell| +11. 新リリースの移植 |riscos-porting| + +何か間違いを発見した場合、emailで著者に連絡をもらえれば修正する。実際にはそれ +が間違いがなかったとしてもとりあえずemailをもらえれば、これが実際に動いている +と言う確信を著者が持てるだろう!。 + +Thomas Leonard <tal197@ecs.soton.ac.uk> + + [以下のURLはリンク切れ] + 移植版サイト: http://www.ecs.soton.ac.uk/~tal197/ + あるいは: http://www.soton.ac.uk/~tal197/ + +============================================================================== + *riscos-locations* +1. ファイル配置場所 + +Vimの実行ファイルと共有リソースファイルは全てアプリケーションディレクトリ!Vim +に置かれる。 + +ファイラにより!Vimを最初に確認した時に、コマンドライン版のVimを実行するための +エイリアスコマンド*viや*exが作成される(|riscos-commandline|参照)。 + +!Vim.Resourcesと!Vim.Resources2には標準的なVimディストリビューションに含まれる +ファイルが含まれている。しかしADFSで正しく動作するように少し変更をし、またウィ +ンドウテンプレートのような幾つかのファイルが追加されている。 + +ユーザの選択(訳注:設定のことだと思われる)は`Choices:*'から読み込まれ +`<Choices$Write>.*'に保存される。もしも新しい!Boot構造を利用しているならばこれ +らは既に設定されている。そうでない場合、Choices$Pathにユーザのコンフィギュレー +ションファイルを探すべきディレクトリのリストを設定する。Choices$Writeにはファ +イルを保存したい場所を設定する(これにより使用した検索パターンや印(mark)がセッ +ションを終了しても記憶される)。 + +============================================================================== + *riscos-munging* +2. ファイル名改変 + +デフォルトで全てのパス名の改変は無効になっているから、Vimは普通のRISC OSアプリ +ケーションのように振舞うだろう。`doc/html'というファイルを編集したいのならば、 +現実には`*vi doc/html'とキー入力する。 + +次のような時にだけ改変が行なわれる: + +- Cプロウグラムでincludeされたファイルを探す時、それらのファイルは常に改変され + る。|[I|参照。 + NOTE: このコマンドを使用する時には正しいディレクトリ(例えば'c' や 'h'と言っ + たサブディレクトリ)に居ることを確認すること。 + +- |:so|を使ったファイルの読み込み。 + '$VIM/'で始まるパスは以下のように変更される: + + $VIM/syntax/help.vim -> Vim:syntax.help + + `.vim'で終わるファイル名は、拡張子が取り除かれ、スラッシュがピリオドに置き換 + えられる。 + +RISC OSでタグファイルやスクリプトファイルを動作させるためには修正する必要があ +るだろう。 + +============================================================================== + *riscos-commandline* +3. コマンドラインでの使用 + +コマンドラインでVimを使用するにはコマンド`*vi'を使用する(|Ex-mode|を使うには +`*ex')。 + +オプションのリストを表示するには`*vi -h'とキー入力する。 + +ハイカラーモードでVimのコマンドライン版を使うとスクロールが非常に遅くなるかも +しれない。その場合は色数の少ないモードに変更するかGUI版を使用することを推奨す +る。 + +また<Ctrl>を押しつづけるとさらに遅くなり、<Ctrl>と<Shift>を同時に押すと他のテ +キストベースのプログラムと同様に完全に止まってしまう。 + +============================================================================== + *riscos-gui* +4. GUIでの使用 + +制限事項: + +- 左のスクロールバーは正しく動作しない(右と下のには問題ない)。 +- スクロールバーを表示しなかったとしてもスクロールの速度は増さない。 + +たとえアイコンが表示されていなかったとしても、ウィンドウの右下隅をドラッグする +ことでウィンドウのサイズを変更することができる。 + +引数--rowsと--columnsを使うことで、起動時のVimウィンドウのサイズを指定すること +ができる。このように: > + + *Vi -g --rows 20 --columns 80 + +クリップボードに対応しているので、テキストを選択して他のアプリケーション(こち +らもクリップボードに対応している必要がある)へ直接貼り付けることができる。 + +メニューをクリックすれば普通のRISC OSプログラムと同様にメニューが開く。クリッ +クするときにシフトを押した状態にしておけばクリップボードの内容が貼り付けられ +る。 + +ウィンドウにファイルをドラッグした場合には現在のバッファ(カーソルのあるバッ +ファであり、ドラッグした場所ではない)をそのファイルで置き換える。 + +ファイルをドラッグする際に<Ctrl>を押した状態にしておけばそのファイルは新しい +Vimのウィンドウで開かれる(|:sp|参照)。 + +インサートモードで<Shift>を押した状態のままファイルをドラッグした際はファイル +のパス名が挿入される。 +> + :browse :w +< RISC OS標準の保存ダイアログを開く +> + :browse :e +< ディレクトリビュワーを開く + +フォントはシステムフォント、アウトラインフォント、ZapRedraw経由のシステムフォ +ント、ZapRedraw経由のZapフォントのうちから選択する: +> + :set guifont= +< VDU(訳注: Video Display Unit)ドライバのシステムフォン + トを使用する。太字と斜体がサポートされる。 +> + :set guifont=Corpus.Medium +< 与えられた名前のアウトラインフォントを使用する。どのよ + うなフォントでも使えるが、Corpusのように等幅でなければ + ならない。 +> + :set guifont=Corpus.Medium:w8:h12:b:i +< 上同様、しかし幅8、高さ12ポイントで太字かつ斜体。 + 幅か高さのどちらか一方しか与えられない場合には両方にそ + の値が使用される。どちらも指定しない場合は10ポイントが + 使用される。 + +John Kortinkのおかげで、VimはZapRedrawモジュールを使用できる。フォント名を'!' +で以下のように始めれば('!!'は2倍の高さ): +> + :set guifont=!! +< ZapRedraw経由でシステムフォントを使用する。これにより + StrongARMプロセッサでは再描画が高速になるが、太字と斜 + 体を使うことはできない。2倍の高さ。 +> + :set guifont=!script +< 名前つき(VimFont$Pathのディレクトリにある)Zapフォント + を使用する。再描画の速度は'!!'と同じだが、見た目は良く + なる。 + 現在のところ"man+" と "script"だけが利用可能だが、 + VimFont$Pathにある全てのZapフォントWを使用することがで + きる。 + Vimはその名前のディレクトリから'0', 'B', 'I'そして'IB' + という名前のファイルを読み込もうとする。'0'(通常のスタ + イル)だけは必須である。現在のところリンクファイルには + 対応していない。 + +ZapRedrawを使用している時には、編集バーがキャラクタの後ろではなく前に描画され +ることに注意。固有値0のスクリーンモードでも再描画は正しくされない。フォントに +コントロール文字が含まれる場合には、オプション'isprint'を変更することで表示さ +せることができる。 + +スクロールがあまりに遅すぎる場合には、オプション'scrolling' と 'ttyscroll'を実 +験的に試してみると良い。 + +とりわけStrongARMのユーザは: > + + :set ttyscroll=0 + +とするとハイカラーモードでのスクロールが速くなるだろう。 + +============================================================================= + *riscos-remote* +5. リモートでの使用(telnet) + +termcapエントリーが埋め込まれてはいるが、Vimを使うのに利用しているリモート端末 +用にコード追加したいのならtermcapファイルを編集することもできる。 + +インターネット経由でAcornを使用したことはないが、ループバック接続を使って +FreeTermウィンドウでVimを使うことはできた。 + +`*vi -T ansi'とすることで立派に動作するようだ。 + +============================================================================== + *riscos-temp-files* +6. テンポラリファイル + +Vimがクラッシュした際にはスワップとバックアップファイルが'directory'と 'bdir' +で設定されるディレクトリに作成されたままになる。デフォルトではスワップファイル +は<Wimp$ScrapDir>に(例えば!Scrapの中)置かれ、バックアップファイルは(オリジナル +ファイルが)保存されていたディレクトリに書かれる。Vimは次回そのファイルを編集し +ようとした時に、その内容を復帰しようと試みる。 + +スワップファイルのリストを見るには、<F12>を押してから`*vi -r'とキー入力する。 + +以前は違うディレクトリの同じ名前のファイルを編集しようとするとVimが警告を発し +たが、現在はもはや警告をしない。 + +しかしながら別々のVimでそれぞれ同じファイルを編集しようとした時の警告もまた表 +示されない。だから更新日時が変更されているファイルを保存する時には注意を払うよ +うにすること。 + +============================================================================== + *riscos-interrupt* +7. 割込み + +ループしているマクロに割込んだり、それに近い状況の場合には、コマンドライン版で +はEscapeを押し続け、GUI版では<Ctrl-C>を押す。 + +============================================================================== + *riscos-memory* +8. メモリ使用量 + +RISC OS 3.5以降で動くVimは動的領域のメモリを使用する。それ以前のマシンでそれら +を使うことができる場合は!RunTxtとGVimのファイルを編集する必要がある。著者は安 +全策を取っているので、これらのマシンでUnixLibがデフォルトでどのようにこれを行 +なっているかは知らない。 + +動作時にメモリ割り当てを変更することができなくなるので、動的領域無しでは正しく +動作しない。故に`!Vim.GVim' と `!Vim.!RunTxt'を編集して最適な大きさを設定する +べきである。恐らく最低でも約1400Kは必要になる。 + +============================================================================== + *riscos-filetypes* +9. ファイルタイプ + +特定の形式のファイルに対してだけ実行されるように自動実行コマンド(autocommand) +を設定することができる。ファイル形式(filetype)の指定は&xxxのようにxxxにファイ +ル形式名を当てはめて与える。 + +ファイル形式名は数値によって指定しなければならない(例: テキストなら&fff)。 + +バージョン5.3からシステムが変更になった。イベントの新しいシーケンスは: + +- ファイルが読み込まれた。|'osfiletype'|にRISC OSのファイル形式が選択されてい + る。 +- Vim形式のファイルはファイル形式とパス名に基づき、|'filetype'|を設定しようと + 試みる。 +- このオプションを設定することにより構文ファイルが読み込まれたりその他のアクシ + ョンが行なわれる。 +- ファイルを保存すると|'osfiletype'|のファイル形式が与えられる。 + +幾つか例を見れば判りやすいだろう: + + ファイルの種類 osfiletype filetype ~ + Cコード'c.hellow' テキスト (&fff) C + LaTeX 文章 LaTeX (&2a8) TeX + Draw 文章 DrawFile (&aff) (変更されない) + +============================================================================== + *riscos-shell* +10. シェル + +- エクスクラメーションマーク('!')は多くのパス名に使用されていることから、直後 + に空白文字がある時か、行末にあるときにだけ置換される。 + +- コマンドの前に'~'を全治すれば、あらゆる出力を表示されないようにできる。つま + りコマンド実行後に<Enter>を押す必要がなくなり、また画面が再描画されるのを回 + 避できることを意味している。 {GUI版専用} + +============================================================================== + *riscos-porting* +11. RISC OSへ新リリースを移植する + +必要な全てをダウンロードする: + +- 最新のソースコード (www.vim.org参照) +- ランタイム環境ファイル (このファイルを含むヘルプ一式) +- extraアーカイブ (RISC OS用ファイルが含まれている) +- RISC OSのバイナリディストリビューション (可能ならば) + + +アーカイブの伸長(解凍)・展開: + +- raFSのディスクを作成しアーカイブをそこに置く。 +- 次にgzipを伸長し +- それからtarを展開する (*tar xELf 50 archive/tar を用いる) + + +ソースを再コンパイルする: + +- c, s, そしてhというディレクトリを作成する。 +- 全てのヘッダファイルを`h'に置く \ +- 全てのCファイルを`c'に置く | 同時に拡張子は削除する +- アセンブラファイル(`swis/s')を`s'に置く / +- `proto'にある全てのファイルを以下のように名前を替えて`h'に置く: + raFS::VimSrc.source.proto.file/pro + これを以下のように変更 + raFS::VimSrc.source.h.file_pro +- 下に示すように、ファイル`h.proto'と`c.termlib'内の単語を検索し置き換える: + .pro" + これを以下のように変更 + _pro.h" +- 必要なら簡単なMakefileを作成し`*make -k'を行なう。 + Makefileでは`CC = gcc -DRISCOS -DUSE_GUI -O2 -x c'を使用する。 +- バイナリディストリビューションの中にバイナリを!Vim.Vimという名前で保存する。 + + +ランタイム環境を更新する: + +- !Vim.Resourcesの中身を新しいファイルで置き換える。存在しないファイルはコピー + する。 +- `doc'内の名前が`/txt'で終わらないファイルは、`tag'を除いて全て削除する。 +- `doc'内のファイルの名前から拡張子を取り去る。 +- `doc.tags'ファイルを編集する。第2カラムから拡張子を取り去る: > + :%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/ +- 構文ファイルから拡張子を取る。それらをADFSファイルシステムの77エントリの制限 + を避けるため2つのディレクトリに分ける。 +- `Vim:FileType'を`*.c.*'にマッチするように、`*/c'かそのように編集する。 + ファイル形式のチェックも追加する。 +- `Vim:Menu'を編集し、全てのキーをメニューから取り去る: > + :%s/<Tab>[^ \t]*// +< + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_vms.jax b/ja/os_vms.jax new file mode 100644 index 000000000..5c4ac9e65 --- /dev/null +++ b/ja/os_vms.jax @@ -0,0 +1,789 @@ +COMMENT: OS特有情報:VMS +STATUS: susupend 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*os_vms.txt* For Vim version 6.3. Last change: 2004 May 16 + + + VIMリファレンスマニュアル + + + *VMS* *vms* +このファイルにはVMS版のVimについての詳細が書かれている。 +この情報へはVimのコマンドプロンプトから:help VMSとキー入力することで辿り着くこ +とができる。 + + 1. はじめに |vms-started| + 2. ファイル入手 |vms-download| + 3. コンパイル |vms-compiling| + 4. 問題点 |vms-problems| + 5. 配置(インストール) |vms-deploy| + 6. 実践利用 |vms-usage| + 7. GUIモードの論点 |vms-gui| + 8. 利用時の覚書 |vms-notes| + 9. VMS関連の変更点 |vms-changes| +10. 著者 |vms-authors| + +============================================================================== + +1. はじめに *vms-started* + +Vim(Vi IMproved)はvi互換のテキストエディタで、人類にとって既知の殆ど全てのオペ +レーティングシステム(以下OS)で動作する。現在ではOpenVMS上でも文字ベース及び +X/Motif環境でVimを使用することができる。Vimの全機能が利用可能で、他のOS上のVim +と完全な互換性がある。 + +============================================================================== + +2. ファイル入手(ダウンロード) *vms-download* + +Vimのソースコードは公式サイトからftpでダウンロードすることができる: + ftp://ftp.vim.org/pub/vim/ +またはミラーサイトを利用しても良い: + ftp://ftp.vim.org/pub/vim/MIRRORS + +VMSでvim.exeを構築するにはUNIXとextraアーカイブの両方が必要である。Vimの全機能 +を利用するにはランタイムアーカイブも同様に必要となる。 + +コンパイル済み実行可能ファイルは以下のところで入手可能: + http://www.polarfox.com/vim/ + ftp://ftp.polarhome.com/pub/vim/ + +コンパイル済みバイナリを利用するには、以下のどれか1つのアーカイブが必要: + + vim-XX-exe-alpha-gui.zip Alpha GUI/Motif用実行可能ファイル + vim-XX-exe-alpha-gtk.zip Alpha GUI/GTK用実行可能ファイル + vim-XX-exe-alpha-term.zip Alpha console用実行可能ファイル + vim-XX-exe-vax-gui.zip VAX GUI用実行可能ファイル + vim-XX-exe-vax-term.zip VAX console用実行可能ファイル + +そしてもちろん + vim-XX-runtime.zip Vim用ランタイムファイル + +アーカイブには次のファイルが含まれる: vim.exe, ctags.exe, xxd.exe, mms_vim.exe + +============================================================================== + +3. コンパイル *vms-compiling* + +ファイル [.SRC]INSTALLVMS.TXT を参照。 + +============================================================================== + +4. 問題点 *vms-problems* + +コードはコンパイラDECCを用いて、Alpha及びVAXプラットホームの両Open VMSバージョ +ン 6.2 から 7.2 でテストされた。それらでは大きなも問題なく動作するだろう。 +利用しているシステムにインクルードライブラリの欠けがある場合には、ファイル +OS_VMS_CONF.Hを修正することで対応する。 + +Vimを+perlや+python、その他のオプションを追加して構築するならば、まず始めに +OpenVMS版のPerlやPythonを入手する必要がある。それらのライブラリを構築しインス +トールしファイルOS_VMS.MMS内の適切な箇所を変更する。Vimの方には何の問題もない +だろう。 + +NOTE: VAXではDEC Cコンパイラを使えば問題ない。VAXCコンパイラはプリプロセッサ命 +令の構文にANSI C非互換な部分がある。従ってプリプロセッサ部分をVAXCコンパイラの +解釈できる形へ変換するプログラムを使用しなければならない。詳細はINSTALLvms.txt +を参照。 + +MMS_VIM.EXEはVIM.EXEと一緒に構築されるが、CTAGS.EXEとXXD.EXEは手動でサブディレ +クトリ<.CTAGS>や<.XXD>へ移動して個別に構築しなければならない。CTAGSとXXDのVMS +用Makefileが常に最新のものとは限らないので注意を払う必要がある。 + +もはやCTAGSはVimとは独立したソフトウェアになっているが、以下で述べるように +OpenVMS特有のソースコードにはCTAGSのソースコードファイルも含まれている。 + +詳しいユーザならばファイルFEATURE.Hで曲芸的なことに挑戦しても良いだろう。 + ++xfontsetと+ximオプションを使用してコンパイルすることも可能だが、その際はGUIの +フォント等その他のものも正しく設定しなければならない。Vimのコマンドプロンプト +から:help ximを参照すること。 + +GUIでGTKアイコンを使いたい場合には、OpenVMS用のGTKをダウンロードしてインストー +ルする必要がある。もしくは polarhome.com で提供されるLIBGTKという共有可能なラ +ンタイムイメージが必要になるだろう。 + +これ以上に高度な質問は、Vim on VMSのメーリングリストに送って欲しい。アドレスは + <vim-vms@polarhome.com> +メーリングリストについての詳しいことは以下を参照すること: + http://www.polarhome.com/mailman/listinfo/vim-vms + +============================================================================== + +5. 配置(インストール) *vms-deploy* + +Vimはドキュメントとランタイムファイルを保持するのに特別なディレクトリ構成を採 +用している: + + vim (変更可能) + |- tmp + |- vim57 + |----- doc + |----- syntax + |- vim60 + |----- doc + |----- syntax + |- vim61 + |----- doc + |----- syntax + vimrc (システム設定ファイル) + gvimrc + +vim.exeがドキュメントやファイル形式や構文等のファイルを見つけ、どこに一時ファ +イルを作成すべきか知るためには: > + + define/nolog VIM device:[path.vim] + define/nolog VIMRUNTIME device:[path.vim.vim60] + define/nolog TMP device:[path.tmp] + +このようにしなければならない。Vimに付属の"runtime"サブディレクトリはvimruntime +にコピーする。 + +論理名$VIMRUNTIMEと$TMPはオプションになるが、推奨される。 + +$VIMRUNTIMEが設定されていない時はVimが推測し自動的に設定する。 +詳細は:help runtimeを参照。 + +$TMPが設定されていない時は、CTAGSやXXDや印刷などの一時ディレクトリを使用する機 +能を利用できなくなる。ディレクトリ$TMPはユーザが読み書き可能でなければいけな +い。一番簡単な$TMPの設定方法は論理名として定義することである。 > + + define/nolog TMP SYS$SCRATCH +もしくは: > + define/nolog TMP SYS$LOGIN + +============================================================================== + +6. 実践利用 *vms-usage* + +通常は1つのバージョンのVimだけが実行するから、Vimのためには1つのディレクトリを +使用するだけで充分である。 +全てのVimランタイムディレクトリ構造をインストール位置にコピーする。(SYS$LONG +ディレクトリにある)LOGIN.COMに以下の内容を付け加える。 +論理名$VIMを設定: > + + $ define VIM device:<path> + +幾つかシンボルを定義: > + + $ ! viはvimをキャラクタモードで起動する + $ vi*m :== mcr device:<path>VIM.EXE + + $ ! gviはvimをGUIモードで起動する + $ gv*im :== spawn/nowait mcr device:<path>VIM.EXE -g + +シンボルのカスタマイズとコンフィギュレーションについては以下で述べる NOTE も +チェックすること。 + +.vimrcと.gvimrcをホームディレクトリ(SYS$LOGIN)に作成する。 + +いちばん簡単な方法は設定例のファイルをリネームして利用することである。元の$VIM +ディレクトリにメニューファイル(MENU.VIM)やvimrcやgvimrcを置いても良いだろう。 +それらは全てのユーザにとってデフォルト設定として機能するので、ホームディレクト +リのファイル.vimrcと.gvimrcではユーザ独自の追加設定だけを行なえば充分となる。 +それらは問題なく動作する。 + +NOTE: システム設定ファイル(全てのユーザにとってのデフォルト)には先頭に"."が付 +かない。だからそれらの名前は: > + + VIM$:vimrc + VIM$:gvimrc + VIM$:menu.vim + +このようになる。そして各ユーザのカスタマイズ設定ファイルは: > + + sys$login:.vimrc + sys$login:.gvimrc + +となる。全てが正しい場所にあるかどうかはコマンド:versionにより確認できる。 + +LOGIN.COMの例: > + + $ define/nolog VIM RF10:[UTIL.VIM] + $ vi*m :== mcr VIM:VIM.EXE + $ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40 + $ set disp/create/node=192.168.5.223/trans=tcpip + +NOTE: 独立サーバやクラスタ環境で使用しているならばこの設定で充分であろう。しか +しノード間エディタとしてVimを使用する場合には次のようにした方がより使いやすい +だろう。ただ "完全な" パスを指定する必要がある: > + + $ define VIM "<server_name>[""user password""]::device:<path>" + $ vi*m :== "mcr VIM:VIM.EXE" + +例としては: > + + $ define VIM "PLUTO::RF10:[UTIL.VIM]" + $ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required + +異なるVimのバージョンを同環境にインストールしてあるならば、正しいVimのバージョ +ンを指すように論理名$VIMRUNTIMEを設定することもできる。$VIMRUNTIMEが設定されて +いないときは、Vimは論理名$VIMからその値を借りてくる。論理名$VIMRUNTIMEについて +のより詳しい情報はVimコマンド :help runtime をキー入力することで得ることができ +る。 + +システム管理者はシステム全体にVimをインストールしたいかもしれない。その場合に +は SYS$System:SYLOGICALS.COM に追加する。 > + + $ define/nolog/sys VIM device:<path> + $ define/nolog/sys TMP SYS$SCRATCH + +SYS$STARTUP:SYLOGIN.COM にも追加する > + + $ vi*m :== mcr VIM:VIM.EXE + $ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40 + + +これによりシステム全てのユーザあら通常のVimが利用可能になるだろう。 + +============================================================================== + +7. GUIモードの論点 *vms-gui* + +OpenVMS in a real mainframe OS, therefore even if it has a GUI console, most of +the users does not use a native X/Window environment during normal operation. +It is not possible to start Vim in GUI mode "just like that". But anyhow it is +not too complicate either. + +First of all: you will need an executable that is built with enabled GUI. + +Second: you need to have installed DECW/Motif on your VMS server, otherwise +you will get errors that some shareable libraries are missing. + +Third: If you choose to run Vim with extra feature as GUI/GTK then you need +GTK installation too or at least GTK runtime environment (LIBGTK etc.) + +1) VMS X/Motifコンソールを利用しているならば: + このコマンドでVimを起動する: > + + $ mc device:<path>VIM.EXE -g +< + もしくはVimコマンドプロンプトで :guiを キー入力する。詳細は:help gui。 + +2) UNIXやリモートX VMSのコンソールなど他のXウィンドウ環境を利用しているならば + ホストの表示設定を行なう: > + + $ set disp/create/node=<your IP address>/trans=<transport-name> +< + そして1)と同様にVimをスタートする。もっと助けになる情報はVIMの文章かVMSのプ + ロンプトで help set disp とキー入力すれば得ることができる。 + 例: > + + $ set disp/create/node=192.168.5.159 ! デフォルトはDECnet + $ set disp/create/node=192.168.5.159/trans=tcpip ! TCP/IPネットワーク + $ set disp/create/node=192.168.5.159/trans=local ! 同じノードに表示 + +NOTE: これらのうちからどれか1つを選ぶ必要がある。もっと情報が必要ならばVMS +プロンプトで $help set disp とキー入力する。 + +3) MS Windowや他の非Xウィンドウ環境の場合: + Xサーバを設定して2)と同様にする。 + MS WindowsではフリーのXサーバMIXや、Omni X等が利用可能である。 + +4) If you are working on MS Windows or other non X/Window environment + You need to set up one X server and run Vim as in point 2. + For MS Windows there are available free X servers as MIX , Omni X etc. + as well as excellent commercial products as eXcursion or ReflectionX with + buit in DEC support. + +Please note, that executables without GUI are slightly faster during startup +then with enabled GUI in character mode. Therefore, if you do not use GUI +features, it is worth to choose non GUI executables. + +============================================================================== + +8. 利用時の覚書 *vms-notes* + +8.1 backspace/delete +8.2 Filters +8.3 VMS file version numbers +8.4 Directory conversion +8.5 Remote host invocation +8.6 Terminal problems +8.7 Hex-editing and other external tools +8.8 Sourcing vimrc and gvimrc +8.9 Printing from Vim +8.10 Setting up the symbols +8.11 diff and other GNU programs +8.12 diff-mode +8.13 Allow '$' in C keywords +8.14 VIMTUTOR for beginners + +8.1 バックスペースとデリート + +VMSにはバックスペースとデリートキーについて矛盾がある。 +:fixdel ではこの問題を解決できないので、次のようにする必要がある: > + + :inoremap ^? ^H " for terminal mode + :inoremap <Del> ^H " for gui mode + +詳細は8.6章(端末の問題)を参照。 +(Bruce Hunsaker <BNHunsaker@chq.byu.edu> Vim 5.3) + + +8.2 フィルタ + +Vimはフィルタをサポートしている。UNIXのような入出力のリダイレクト +( < infile > outfileの仕組み)を取り扱えるソートプログラムがあれば: > + + :map \s 0!'aqsort<CR> + +このように使うことができる。 +(Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov> Vim 5.4) + + +8.3 VMSのファイルバージョン番号 + +Vimはファイルを1つ上のバージョン番号のファイルとして保存する。次の設定: > + + :set nobackup " バックアップファイル *.*_ backup を作らない + :set nowritebackup " VMSでは意味をなさない。デフォルト値。 + +を行なうと良い。クラッシュからのリカバリはデフォルトのスワップファイルを使って +いる時よりも完全に動作する。詳細は :help swapfile を参照。 + +(Claude Marinier <ClaudeMarinier@xwavesolutions.com> Vim 5.5, Zoltan Arpadffy +Vim 5.6 ) + + +8.4 ディレクトリ変換 + +VimはUNIXスタイルのパス名とUNIX/VMS混合スタイルのパス名を内部的にVMSスタイルに +変換している。典型的な変換には共通点がある: + + /abc/def/ghi -> abc:[def]ghi. + /abc/def/ghi.j -> abc:[def]ghi.j + /abc/def/ghi.j;2 -> abc:[def]ghi.j;2 + /abc/def/ghi/jkl/mno -> abc:[def.ghi.jkl]mno. + abc:[def.ghi]jkl/mno -> abc:[def.ghi.jkl]mno. + ./ -> 現在のディレクトリ + ../ -> 相対的な親ディレクトリ + [.def.ghi] -> 相対的な子ディレクトリ + ./def/ghi -> 相対的な子ディレクトリ + +NOTE: 折カッコ<,>を(device:<path>file.ext;version)のように使うこともできる。 +例: rf10:<user.zay.work>test.c;1 + +(David Elins <delins@foliage.com>, Jerome Lauret +<JLAURET@mail.chem.sunysb.edu> Vim 5.6 ) + + +8.5 リモートホストの実際 + +Vimをノード間エディタとして使用することができる。 +1. リモートノードのファイルを編集する: > + + vi "<server>""username passwd""::<device>:<path><filename>;<version>" + +例: > + vi "pluto""zay passwd""::RF10:<USER.ZAY.WORK>TEST.C;1" + +NOTE: 構文が非常に重要で、間違えるとVMSは複数パラメータと勘違いしてしまう(結果 +的にファイルがみつからない、ということになる)。 + +2. Vimをノード間エディタとして設定する。使用しているホストにVimがインストール +されていない場合、IPアドレスを設定し、サーバ名を含んで完全なVimのパスを指定し +下記のようなコマンドプロシージャを実行する: > + + $ if (p1 .eqs. "") .OR. (p2 .eqs. "") then goto usage + $ set disp/create/node=<your_IP_here>/trans=tcpip + $ define "VIM "<vim_server>""''p1' ''p2'""::<device>:<vim_path>" + $ vi*m :== "mcr VIM:VIM.EXE" + $ gv*im :== "spawn/nowait mcr VIM:VIM.EXE -g" + $ goto end + $ usage: + $ write sys$output " Please enter username and password as a parameter." + $ write sys$output " Example: @SETVIM.COM username passwd" + $ end: + + (訳注: 例中のコマンドで表示されるメッセージは翻訳していない) + +NOTE: これをクラスタ環境では使わない(その必要もない)。これを行なうと非常に遅く +なるが、それでもローカルで実行するEmacsよりは速いだろう。 :-) + +(Zoltan Arpadffy, <arpadffy@altavista.net> Vim 5.6) + + +8.6 端末の問題 + +利用している端末の名前をVimに指示していない場合、Vimは起動時に以下のメッセージ +を表示してデフォルトの端末を見つけようと試みる: > +--- +Terminal entry not found in termcap +'unknown-terminal' not known. Available built-in terminals are: + builtin_gui + builtin_riscos + builtin_amiga + builtin_beos-ansi + builtin_ansi + builtin_vt320 + builtin_vt52 + builtin_pcansi + builtin_win32 + builtin_xterm + builtin_iris-ansi + builtin_debug + builtin_dumb +defaulting to 'vt320' +--- +(訳注: メッセージの翻訳は省略しました。VMSでgettext()によりja.poが参照されるか +どうか不明なためです。翻訳が必要ならばsrc/po/ja.poを参照してください。) + +解決法はデフォルトの端末名を設定することである: > + + $ ! 不明な端末名。代わりにvt320かansiを使用する。 + $ ! 注意: この名前は大文字小文字が区別される。 + $ define term "vt320" + +VT100からVT320までの端末(VT300, VT220, VT200)については追加のキーボードマッピ +ングは必要ない。それらはカーソルキー、インサートキー、デリートキー等などを含め +て完全に動作する。ただしGUIモードでのバックスペースは除く。これを解決するには +以下の設定を.gvimrcに追加する: > + + inoremap <Del> <BS> + +Vimはそれらが高速な端末かどうかも認識する: + +ウィンドウ間のスクリーンの行ジャンプにイライラするようならば、次の設定をファイ +ル.vimrcに設定する: > + + set ttyfast " 高速端末を指定 + +NOTE: Vimをリモートホストで使用しているか接続が非常に低速な場合には、この高速 +端末のオプションは設定しないことが推奨される: > + + set nottyfast " set terminal to slow mode + +(Zoltan Arpadffy, <arpadffy@altavista.net> Vim 5.6) + + +8.7 16進数編集とその他のツール + +OpenVMSとその他のシステムとの間の重要な違いはVMSが実行ファイルを実行するのに特 +別なコマンドを使用しているということである: > + + RUN <path>filename + MCR <path>filename <parameters> + +OpneVMSのユーザはVimのコマンド :! が単にDCLプロンプトに落ちているだけだと意識 +する必要がある。この機能により全てのDCLコマンドを問題なく実行できるのだが、XXD +やCTAGS、JTAGS等のプログラムを実行する場合には、Vimの文章(:help xxd参照)にその +まま従ってしまうと問題になる。 + +解決方法: MCコマンドを実行し、実行ファイルのフルパスを追加する。 +例: コマンド :%!xxd の代わり: > + + :%!mc vim:xxd + +…一般化すれば: > + :!mc <path>filename <parameters> + +NOTE: XXDやCTAGSをGUIメニューから使うこともできる。 + +ctagsをカスタマイズするには論理名$CTAGSに標準的なパラメータをこのように設定す +る: > + + define/nolog CTAGS "--totals -o sys$login:tags" + +追加の情報は、:help tagsearch及びhttp://ctags.sourceforge.net/ctags.htmlにある +CTAGSの文章を読むこと。 + +(Zoltan Arpadffy, <arpadffy@altavista.net> Vim 5.6-70) + + +8.8 vimrcとgvimrcの読み込み + +他のプラットホーム(例: Windows)で使用している.vimrcと.gvimrcを使うには、その +ファイルをftpで転送すると問題が起こるだろう: VMSは異なる行末記号を採用してい +る。 +その兆候は次のようにしてもVimが.vimrc/.gvimrcを読み込まなくなることである: > +> + :so sys$login:.vimrc + +1つのトリックとしては他のプラットホーム上でファイルを圧縮し(例: zip)VMS上で伸 +長する方法がある。それでも同じ現象になるならばファイルをコピー&ペーストで作成 +することを試みる(この両操作を行なうためには、両方のシステムが1つのマシンから使 +えなければならない。例えばWindowsでXtermを使用するか、VMSからWindowsにtelnetす +るかのように)。 + +(Sandor Kopanyi, <sandor.kopanyi@altavista.net> Vim 6.0a) + + +8.9 Vimからの印刷 + +VMSで(GUIモードの)Vimからの印刷を可能にするには論理名$TMPを一時ディレクトリを +指すようにし論理名SYS$PRINTにデフォルトのプリントキューを指定する必要がある。 +例: > + + $define SYS$PRINT HP5ANSI + +バッファ全体を、またマークした範囲だけでも、印刷することができる。 +詳細は :help hardcopy にある。 + +(Zoltan Arpadffy, <arpadffy@altavista.net> Vim 6.0c) + +8.10 シンボルの設定 + +このようにGVIMを使用している際に、親となるターミナルで<CTRL-Y>を押すと、gvimが +終了してしまう問題がある。この問題は異なるシンボルを定義することで回避できるよ +うだ。それは: > + + $ GV*IM:==SPAWN/NOWAIT/INPUT=NLA0: MCR VIM:VIM.EXE -G -GEOMETRY 80X40 + +/INPUT=NLA0: が親ウィンドウからの停止信号をブロックするために、親の端末とgvim +のプロセスの標準入力を切り離す。 +-GEOMETRYがない場合、GVIMウィンドウのサイズは最小となり、大きさを修正したあと +でもメニューが混乱しておかしなことになるだろう。 + +(Carlo Mekenkamp, Coen Engelbarts, Vim 6.0ac) + + +8.11 diff and other GNU programs + +From 6.0 diff functionality has been implemented, but OpenVMS does not use +GNU/Unix like diff therefore built in diff does not work. +There is a simple solution to solve this anomaly. Install an Unix like diff +and Vim will work perfect in diff mode too. You just have to redefine your +diff program as: > + + define /nolog diff <GNU_PATH>diff.exe + +Another, more sophisticated solution is described below (8.12 diff-mode) +There are some other programs as patch, make etc that may cause same problems. +At www.polarhome.com is possible to download an GNU package for Alpha and VAX +boxes that is meant to solve GNU problems on OpenVMS. +( Zoltan Arpadffy, Vim 6.1) + + +8.12 diff-mode + +Vim 6.0 and higher supports vim diff-mode (See |new-diff-mode|, |diff-mode| +and |08.7|). This uses the external program 'diff' and expects a Unix-like +output format from diff. The standard VMS diff has a different output +format. To use vim on VMS in diff-mode, you need to: + 1 Install a Unix-like diff program, e.g. GNU diff + 2 Tell vim to use the Unix-like diff for diff-mode. + +You can download GNU diff from the VIM-VMS website, it is one of the GNU +tools in http://www.polarhome.com/vim/files/gnu_tools.zip. I suggest to +unpack it in a separate directory "GNU" and create a logical GNU: that +points to that directory. e.g: > + + DEFINE GNU <DISK>:[<DIRECTORY>.BIN.GNU] + +You may also want to define a symbol GDIFF, to use the GNU diff from the DCL +prompt: > + + GDIFF :== $GNU:DIFF.EXE + +Now you need to tell vim to use the new diff program. Take the example +settings from |diff-diffexpr| and change the call to the external diff +program to the new diff on VMS. Add this to your .vimrc file: > + + " Set up vimdiff options + if v:version >= 600 + " Use GNU diff on VMS + set diffexpr=MyDiff() + function MyDiff() + let opt = "" + if &diffopt =~ "icase" + let opt = opt . "-i " + endif + if &diffopt =~ "iwhite" + let opt = opt . "-b " + endif + silent execute "!mc GNU:diff.exe -a " . opt . v:fname_in . " " . v:fname_new . + \ " > " . v:fname_out + endfunction + endif + +You can now use vim in diff-mode, e.g. to compare two files in read-only +mode: > + + $ VIM -D/R <FILE1> <FILE2> + +You can also define new symbols for vimdiff, e.g.: > + + $ VIMDIFF :== 'VIM' -D/R + $ GVIMDIFF :== 'GVIM' -D/R + +You can now compare files in 4 ways: > + + 1. VMS diff: $ DIFF <FILE1> <FILE2> + 2. GNU diff: $ GDIFF <FILE1> <FILE2> + 3. VIM diff: $ VIMDIFF <FILE1> <FILE2> + 4. GVIM diff: $ GVIMDIFF <FILE1> <FILE2> + +( Coen Engelbarts, Vim 6.1) + + +8.13 Allow '$' in C keywords + +DEC C uses many identifiers with '$' in them. This is not allowed in ANSI C, +and vim recognises the '$' as the end of the identifier. You can change this +with the |iskeyword|command. +Add this command to your .vimrc file: > + + autocmd FileType c,cpp,cs set iskeyword+=$ + +You can also create the file(s) $VIM/FTPLUGIN/C.VIM (and/or CPP.VIM and +CS.VIM) and add this command: > + + set iskeyword+=$ + +Now word-based commands, e.g. the '*'-search-command and the CTRL-] +tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in +C keywords since ctags version 5.1.) + +( Coen Engelbarts, Vim 6.1) + +8.14 VIMTUTOR for beginners + +It exits VIMTUTOR.COM DCL script that can help Vim beginners to learn/make +first steps with Vim on OpenVMS. Depending of binary distribution you may start +it with: > + + @vim:vimtutor + +(Thomas.R.Wyant III, Vim 6.1) + +============================================================================== + +9. VMS関連の変更点 *vms-changes* + +(訳注: 翻訳対象から除外) + +Version 6.3 (2004 May 10) +- Improved vms_read function +- CTAGS v5.5.4 included +- Documentation corrected and updated + +Version 6.2 (2003 May 7) +- Corrected VMS system call results +- Low level character input is rewritten +- Correction in tag and quickfix handling +- First GTK build +- Make file changes + - GTK feature added + - Define for OLD_VMS + - OpenVMS version 6.2 or older +- Documentation updated with GTK features +- CTAGS v5.5 included +- VMS VIM tutor created + +Version 6.1 (2002 Mar 25) +- TCL init_tcl() problem fixed +- CTAGS v5.4 included +- GNU tools binaries for OpenVMS +- Make file changes + - PERL, PYTHON and TCL support improved + - InstallVMS.txt has a detailed description HOWTO build +- VMS/Unix file handling rewritten +- Minor casting and bug fixes + +Version 6.0 (2001 Sep 28) +- Unix and VMS code has been merged + - separated "really" VMS related code + - included all possible Unix functionality + - simplified or deleted the configuration files + - makefile MAKE_VMS.MMS reviewed +- menu changes (fixed printing, CTAGS and XXD usage) +- fixed variable RMS record format handling anomaly +- corrected syntax, ftplugin etc files load +- changed expand_wildcards and expandpath functions to work more general +- created OS_VMS_FILTER.COM - DECC->VAXC pre-processor directive convert + script. +- Improved code's VAXC and new DECC compilers compatibility +- changed quickfix parameters: + - errormessage format to suite DECC + - search, make and other commands to suite VMS system +- updated and renamed MMS make files for Vim and CTAGS. +- CTAGS has been removed from source distribution of Vim but it will remain + in OpenVMS binary distributions. +- simplified build/configuration procedure +- created INSTALLvms.txt - detailed compiling instructions under VMS. +- updated test scripts. + +Version 5.8 (2001 Jun 1) +- OS_VMS.TXT updated with new features. +- other minor fixes. +- documentation updated +- this version had been tested much more than any other OpenVMS version + earlier + +Version 5.7 (2000 Jun 24) +- New CTAGS v5.0 in distribution +- Documentation updated + +Version 5.6 (2000 Jan 17) +- VMS filename related changes: + - version handling (open everything, save to new version) + - correct file extension matching for syntax (version problem) + - handle <,> characters and passwords in directory definition + - handle internode/remote invocation and editing with passwords + - OpenVMS files will be treated case insensitive from now + - corrected response of expand("%:.") etc path related functions + (in one word: VMS directory handling internally) +- version command + - corrected (+,-) information data + - added compiler and OS version + - added user and host information + - resolving $VIM and $VIMRUNTIME logicals +- VMS port is in MAX_FEAT (maximum features) club with Unix, Win32 and OS/2. + - enabled farsi, rightleft etc. features + - undo level raised up to 1000 +- Updated OS_VMS.MMS file. + - maximum features ON is default + - Vim is compilable with +perl, +python and +tcl features. + - improved MMK compatibility +- Created MAKEFILE_VMS.MMS, makefile for testing Vim during development. +- Defined DEC terminal VT320 + - compatibility for VT3*0, VT2*0 and VT1*0 - ANSI terminals + backwards, but not VT340 and newer with colour capability. + - VT320 is default terminal for OpenVMS + - these new terminals are also fast ttys (default for OpenVMS). + - allowed dec_mouse ttym +- Updated files vimrc and gvimrc with VMS specific suggestions. +- OS_VMS.TXT updated with new features. + +Version 5.5 (1999 Dec 3) +- Popup menu line crash corrected. +- Handle full file names with version numbers. +- Directory handling (CD command etc.) +- Corrected file name conversion VMS to Unix and v.v. +- Correct response of expand wildcards +- Recovery is working from this version under VMS as well. +- Improved terminal and signal handing. +- Improved OS_VMS.TXT + +Version 5.4 (1999 Sep 9) +- Cut and paste mismatch corrected. +- Motif directories during open and save are corrected. + +Version 5.3 (1998 Oct 12) +- Minor changes in the code +- Standard distribution with +GUI option + +Version 5.1 (1998 Apr 21) +- Syntax and DEC C changes in the code +- Fixing problems with the /doc subdirectory +- Improve OS_VMS.MMS + +Version 4.5 (1996 Dec 16) +- First VMS port by Henk Elbers <henk@xs4all.nl> + +============================================================================== + +10. 著者 *vms-authors* + +OpenVMS documentation and executables are maintained by: +Zoltan Arpadffy <arpadffy@polarhome.com> + +アルファベット順: + Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov> + Bruce Hunsaker <BNHunsaker@chq.byu.edu> + Sandor Kopanyi <sandor.kopanyi@altavista.net> + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/russian.jax b/ja/russian.jax new file mode 100644 index 000000000..8ef08f2a4 --- /dev/null +++ b/ja/russian.jax @@ -0,0 +1,86 @@ +COMMENT: ロシア語ローカライゼーションとサポート +STATUS: suspend 6.3.054 +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*russian.txt* For Vim version 6.3. Last change: 2004 May 16 + + + VIM REFERENCE MANUAL by Vassily Ragosin + + +Russian language localization and support in Vim *russian* *Russian* + +1. Introduction |russian-intro| +2. Russian keymaps |russian-keymap| +3. Localization |russian-l18n| +4. Known issues |russian-issues| + +=============================================================================== +1. Introduction *russian-intro* + +Russian language is supported perfectly well in Vim. You can type and view +Russian text just as any other, without the need to tweak the settings. + +=============================================================================== +2. Russian keymaps *russian-keymap* + +To switch between languages you can use your system native keyboard switcher, +or use one of the russian keymaps, included in Vim distribution. For example, +> + :set keymap=russian-jcukenwin +< +In the later case, you can switch between languages even if you do not have +system Russian keyboard or independently from a system-wide keyboard settings. +See 'keymap'. You can also map a key to switch between keyboards, if you +choose the later option. See |:map|. + +For your convenience, to avoid switching between keyboards, when you need to +enter Normal mode command, you can also set 'langmap' option: +> + :set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ, + фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz + +This is in utf-8, you cannot read this if your 'encoding' is not utf-8. +You have to type this command in one line, it is wrapped for the sake of +readability. + +=============================================================================== +3. Localization *russian-l18n* + +If you wish to use messages, help files, menus and other items translated to +Russian, you will need to install RuVim Language Pack, available in different +codepages from + + http://www.sourceforge.net/projects/ruvim/ + +Make sure that your Vim is at least 6.2.506 and use ruvim 0.5 or later for +automatic installs. Vim also needs to be compiled with |+gettext| feature for +user interface items translations to work. + +After downloading an archive from RuVim project, unpack it into your +$VIMRUNTIME directory. We recommend using UTF-8 archive, if your version of +Vim is compiled with |+multi_byte| feature enabled. + +In order to use Russian documentation, make sure you have set 'helplang' +option to "ru". + +=============================================================================== +4. Known issues *russian-issues* + +-- If you are using Russian message translations in Win32 console, then + you may see the output produced by "vim --help", "vim --version" commands + and Win32 console window title appearing in a wrong codepage. This problem + is related to a bug in GNU gettext library and may be fixed in the future + releases of gettext. + +-- When using Win32 console version of Vim you may experience a problem with + many cyrillic glyphs being replaced by whitespaces for some unknown reason. + Sergey Khorev suggested a registry hack to avoid this: + + REGEDIT4 + + [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage] + "1252"="c_1251.nls" + +=============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/syntax.jax b/ja/syntax.jax new file mode 100644 index 000000000..ac2eefeec --- /dev/null +++ b/ja/syntax.jax @@ -0,0 +1,3622 @@ +COMMENT: 構文強調(テキストの色つけ) +STATUS: suspend 6.1 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*syntax.txt* For Vim version 6.1. Last change: 2002 Mar 24 + + + VIMリファレンスマニュアル by Bram Moolenaar + + +構文強調 *syntax* *syntax-highlighting* *coloring* + +Vimは構文強調によりテキストの一部を異なるフォントや色で表示することができるよ +うになる。強調する箇所はキーワードやテキストのパターンにより指定することができ +る。Vimはファイル全体を構文解析するわけではないから(動作を速く保つため)、この +強調方法には限界が存在する。単語(レキシカル)強調と呼ぶのがより正しいが、皆が構 +文強調と呼ぶのでそう呼び続けている。 + +Vimは全ての端末で構文強調をサポートしている。しかし多くの普通の端末には非常に +限られた強調効果しか提供されていないので、強調の最も良い効果はGUI版のgvimで動 +作する。 + +ユーザマニュアルにおける記述: +|usr_06.txt| 構文強調の紹介。 +|usr_44.txt| 構文ファイルの記述方法の紹介。 + +1. クイックスタート |:syn-qstart| +2. 構文強調ファイル |:syn-files| +3. 構文ファイル読込の手順 |syntax-loading| +4. 構文ファイルの覚書 |:syn-file-remarks| +5. Defining a syntax |:syn-define| +6. :syntax arguments |:syn-arguments| +7. Syntax patterns |:syn-pattern| +8. Syntax clusters |:syn-cluster| +9. Including syntax files |:syn-include| +10. Synchronizing |:syn-sync| +11. Listing syntax items |:syntax| +12. Highlight command |:highlight| +13. Linking groups |:highlight-link| +14. Cleaning up |:syn-clear| +15. Highlighting tags |tag-highlight| +16. Color xterms |xterm-color| + +{これらのコマンドはViには存在しない} + +コンパイル時に|+syntax|機能を無効にした場合には構文強調は利用することはできな +い。 + +============================================================================== +1. クイックスタート *:syn-qstart* + + *:syn-enable* *:syntax-enable* +次のコマンドで構文強調が有効になる: > + + :syntax enable + +このコマンドにより実際には次のコマンドが実行される > + :source $VIMRUNTIME/syntax/syntax.vim + +環境変数VIMが設定されていない場合は、Vimは別の方法(|$VIMRUNTIME|参照)でパスの +検索を試みる。通常これでうまくいく。もしもうまく動作しない場合、環境変数VIMに +Vimの構成ファイルが置いてあるディレクトリの設定を試みる。例えば、構文ファイル +がディレクトリ"/usr/vim/vim50/syntax"にあるならば、$VIMRUNTIMEに +"/usr/vim/vim50"を設定する。これはVimを起動する前に、シェルで設定しておかなけ +ればならない。 + + *:syn-on* *:syntax-on* +コマンド":syntax enable"は現在の色設定を保持する。これによりこのコマンドを使用 +する前後にコマンド":highlight"で好みの色を設定することが可能になる。Vimにより +強制的にデフォルトの色を設定させたい場合は次のコマンドを使用する: > + :syntax on +< + *:hi-normal* *:highlight-normal* +GUIを使用している場合は、次のコマンドで黒地に白文字を設定できる: > + :highlight Normal guibg=Black guifg=White +カラー端末については|:hi-normal-cterm|を参照。 +独自色の構文強調を設定する方法については|syncolor|を参照。 + +NOTE: MS-DOSとWindowsの構文ファイルは改行コードが<CR><NL>である。UNIXでは<NR> +である。これは使用しているシステムに合ったタイプのファイルを使わなければならな +いことを意味している。しかしながらMS-DOSとWindowsではオプション'fileformats'が +空でなければ正しい形式が自動的に選択される。 + +NOTE: 反転表示("gvim -fg white -bg black"、訳注:黒地に白文字)を使用する際は、. +gvimrcが読込まれた後で、GUIウィンドウが開かれるまでオプション'background'のデ +フォルト値が設定されない。そのせいで誤ったデフォルト強調手法が使用されてしま +う。強調表示を有効化する前に'background'のデフォルト値を設定するには、.gvimrc +にコマンド":gui"を含める: > + + :gui " ウィンドウを開き'background'にデフォルト値を設定する + :syntax on " 強調を有効化し、色を設定するのに'background'を使用する + +NOTE: .gvimrcの中で":gui"を使用すると"gvim -f"によりフォアグラウンドで開始する +ことができなくなる。その際は":gui -f"を使用すること。 + + +次のコマンドで構文強調の有・無効を切換えることができる > + :if exists("syntax_on") | syntax off | else | syntax enable | endif + +これをキーマップに設定するには、以下の設定を使うことができる: > + :map <F7> :if exists("syntax_on") <Bar> + \ syntax off <Bar> + \ else <Bar> + \ syntax enable <Bar> + \ endif <CR> +[|<>|表記を入力する際は、文字通りそのままキー入力する] + +詳細 ~ +コマンド":syntax"はファイルを取り込む(訳注:source)ことで実装されている。その際 +取り込まれるファイルの中身を見ることで、このコマンドがどのように動作しているの +か正確に知ることができる。 + コマンド ファイル ~ + :syntax enable $VIMRUNTIME/syntax/syntax.vim + :syntax on $VIMRUNTIME/syntax/syntax.vim + :syntax manual $VIMRUNTIME/syntax/manual.vim + :syntax off $VIMRUNTIME/syntax/nosyntax.vim +|syntax-loading|も参照。 + +============================================================================== +2. 構文強調ファイル *:syn-files* + +ある1つの言語用の構文と強調色定義コマンドは通常1つのファイル(以下構文ファイル) +に格納される。名前は"{name}.vim"と付ける慣習になっている。{name}はその言語の名 +前か短縮名となる(DOSファイルシステムで要求される、8.3文字の形式にあわせること +が望ましい)。 +例: + c.vim perl.vim java.vim html.vim + cpp.vim sh.vim csh.vim + +構文ファイルはvimrcファイルと同様にExコマンドを記述することができる。しかし1つ +のファイルには或る1つの言語用コマンドのみを記載するよう取り決めている。ある言 +語が別の言語のスーパーセットである時には、他のファイルを内包していても良く、例 +えば、ファイルcpp.vimはファイルc.vimを取り込むようになっている: > + :so $VIMRUNTIME/syntax/c.vim + +通常それら構文ファイル*.vimは自動実行コマンドにより読込まれる。例: > + :au Syntax c source $VIMRUNTIME/syntax/c.vim + :au Syntax cpp source $VIMRUNTIME/syntax/cpp.vim +通常このようなコマンドはファイル$VIMRUNTIME/syntax/synload.vimに在る。 + + +独自構文ファイルの作成 *mysyntaxfile* + +独自の構文ファイルを作成し、そのファイルを":syntax enable"によって自動的にVim +に使わせるようにするには、以下のようにする: + +1. ユーザランタイムディレクトリを作成する。通常はオプション'runtimepath'に示さ + れる最初のディレクトリを使用する。UNIXの例では: > + mkdir ~/.vim + +2. "syntax"という名のディレクトリを作成する。UNIXでは: > + mkdir ~/.vim/syntax + +3. Vimの構文ファイルを作成する。もしくはインターネットからダウンロードする。そ + のファイルはディレクトリsyntaxに置く。構文"mine"の例では: > + :w ~/.vim/syntax/mine.vim + +これで独自構文ファイルを手動で使うことはできるようになっている: > + :set syntax=mine +このコマンドを実行するためにVimを再起動する必要はない。 + +Vimにそのファイル形式を認識させたいならば、|new-filetype|を参照。 + +システム管理者としてユーザ全てに独自構文ファイルを使わせる際には、各ユーザに同 +じ構文ファイルをインストールさせる必要はなく、'runtimepath'に示される他の各 +ユーザ共通のディレクトリにインストールすることができる。 + + +既存の構文ファイルに設定を追加する *mysyntaxfile-add* + +既存の構文ファイルでほぼ満足だが、幾つかの設定を追加したり強調手法を変更したい +場合には、以下の手順に従う: + +1. 上同様、'runtimepath'に示されるユーザディレクトリを作成する。 + +2. "after/syntax"というディレクトリを作成する。UNIXの例: > + mkdir ~/.vim/after + mkdir ~/.vim/after/syntax + +3. 追加設定を行なうコマンドを含むVimスクリプトファイルを作成する。例として、C + 構文の色を変更するならば: > + highlight cComment ctermfg=Green guifg=Green + +4. その設定ファイルをディレクトリ"after/syntax"に置く。名前には構文名に".vim"を + 追加して使用する。Cの構文を拡張するならば: > + :w ~/.vim/after/syntax/c.vim + +以上。次回Cのファイルを編集する時にはコメントが異なった色で表示される。Vimを再 +起動する必要はない。 + + +既存の構文ファイルを置き換える *mysyntaxfile-replace* + +配布される構文ファイルが気に入らない場合や、新しいバージョンをダウンロードした +際には、上で述べた|mysyntaxfile|に従えば良い。ただ'runtimepath'内のより先に記 +されたディレクトリに構文ファイルを置くように気を付ければ良い。Vimは適合する構 +文ファイルのうち最初に見つけた1つだけを読込む。 + + +名前付けの慣習 + *group-name* +各ユーザが好みの色セットを使用できるように、多くの言語に共通する強調グループに +は優先名が与えられている。推奨されているグループ名は以下のとおり: + + *Comment コメント + + *Constant 定数 + String 文字列定数: "これは文字列です" + Character 文字定数: 'c', '\n' + Number 数値定数: 234, 0xff + Boolean ブール値の定数: TRUE, false + Float 不動小数点数の定数: 2.3e10 + + *Identifier 変数名 + Function 関数名(クラスメソッドを含む) + + *Statement 命令文 + Conditional if, then, else, endif, switch, その他 + Repeat for, do, while, その他 + Label case, default, その他 + Operator "sizeof", "+", "*", その他 + Keyword その他のキーワード + Exception try, catch, throw + + *PreProc 一般的なプリプロセッサ命令 + Include #include プリプロセッサ + Define #define プリプロセッサ + Macro Defineと同値 + PreCondit プリプロセッサの #if, #else, #endif, その他 + + *Type int, long, char, その他 + StorageClass static, register, volatile, その他 + Structure struct, union, enum, その他 + Typedef typedef宣言 + + *Special 特殊なシンボル + SpecialChar 特殊な文字定数 + Tag この上で CTRL-] を使うことができる + Delimiter 注意が必要な文字 + SpecialComment コメント内の特記事項 + Debug デバッグ命令 + + *Underlined 目立つ文章, HTMLリンク + + *Ignore (見た目上)空白, 不可視 + + *Error エラーなど、なんらかの誤った構造 + + *Todo 特別な注意がひつようなもの; 大抵はTODO FIXME XXXなどの + キーワード + +マーク(*)されている名前が優先グループ、その他はマイナーグループである。優先グ +ループには、"syntax.vim"によりデフォルトの強調手法が定義されている。マイナーグ +ループは優先グループにリンクされ、リンクした先と同じ強調手法になる。ファイル +"syntax.vim"が読込まれた後でコマンド":highlight"を使えば、そのデフォルトを上書 +することができる。 + +強調グループ名には大文字小文字の区別がないことに注意。"String" と "string"はど +ちらも同じグループを意味する。 + +以下の名前は予約されているのでグループ名として使用することはできない: + NONE ALL ALLBUT contains contained + +============================================================================== +3. 構文ファイル読込の手順 *syntax-loading* + +ここではコマンド":syntax enable"を実行した時に何が起こるかの詳細を説明する。 +Vimは初期化の時に、ランタイムファイルの在り処を自動的に発見する。ここでは変数 +|$VIMRUNTIME|にその場所が格納されているとする。 + +":syntax enable" と ":syntax on"では以下のことが起こる: + + $VIMRUNTIME/syntax/syntax.vimを読込む + | + +- $VIMRUNTIME/syntax/nosyntax.vimを読込んで古い構文を削除する + | + +- 'runtimepath'から$VIMRUNTIME/syntax/synload.vimを読込む + | | + | +- 構文強調の色を設定する。 + | | 色テーマが定義されている場合は":colors {name}"で再度読込む。 + | | そうでない場合は":runtime! syntax/syncolor.vim"が使用される。 + | | ":syntax on"は既存の色設定を上書設定し、":syntax enable"はまだ設定 + | | されていないグループのみを設定する。 + | | + | +- 適切な構文ファイルをオプション'syntax'が設定される時に読込む自動実 + | | 行コマンドを設定する。 *synload-1* + | | + | +- ユーザによる追加ファイルを変数|mysyntaxfile|から読込む。これは + | Vim 5.xとの互換性のためだけに存在する。 *synload-2* + | + +- ":filetype on"を実行し":runtime! filetype.vim"が実行される。これは見つ + | けることのできる全てのfiletype.vimを読込む。$VIMRUNTIME/filetype.vimは + | 常に読込まれ、以下のことが実行される。 + | | + | +- 拡張子に基づいてオプション'filetype'を設定する自動実行コマンドをイ + | | ンストールする。これにより既知のファイル形式に付いて、ファイル名と + | | 当該形式との関連付けが成される。 *synload-3* + | | + | +- ユーザによる追加ファイルを変数 *myfiletypefile* から読込む。これは + | | Vim 5.xとの互換性のためだけに存在する。 *synload-4* + | | + | +- ファイル形式が検出されなかった時にscripts.vimを読込むための自動実 + | | 行コマンドをインストールする。 *synload-5* + | | + | +- 構文メニュー設定のため$VIMRUNTIME/menu.vimを読込む。 |menu.vim| + | + +- ファイル形式が検出された時にオプション'syntax'を設定するためのFileType + | 自動実行コマンドを設定する。 *synload-6* + | + +- 既に読込まれているバッファに対して構文強調を行なうために、関連した自動 + 実行コマンドを実行する。 + + +ファイルを読込む時には、Vimは以下のように関連した構文ファイルを見つける: + + ファイルを読込むとBufReadPost自動実行コマンドが起動する。 + | + +- |synload-3|(既知ファイル形式)か|synload-4|(ユーザ定義ファイル形式)の自 + | 動実行コマンドがヒットした場合、オプション'filetype'にそのファイル形式 + | 名が設定される。 + | + +- |synload-5|の自動実行コマンドが実行される。まだファイル形式が決定され + | ていない場合は、'runtimepath'からscripts.vimが検索される。これは常に以 + | 下のことを行なう$VIMRUNTIME/scripts.vimを読込む。 + | | + | +- ユーザによる追加ファイルを変数 *myscriptsfile* から読込む。これは + | | Vim 5.xとの互換性のためだけに存在する。 *synload-4* + | | + | +- 未だにファイル形式が決定できない場合、ファイルの内容を検査する。検 + | 査は"getline(1) =~ pattern"のように認識できるファイル形式かどうか + | 行なわれ、認識できるならば'filetype'を設定する。 + | + +- ファイル形式が決定されて'filetype'が設定された時に、上記|synload-6|の + | FileType自動実行コマンドが実行される。決定したファイル形式名がそれによ + | り'syntax'へ設定される。 + | + +- 上記でオプション'syntax'が設定されると、|synload-1|(と|synload-2|)の自 + | 動実行コマンドが実行される。これにより次のコマンドでメインとなる構文 + | ファイルが'runtimepath'から読込まれる。 + | runtime! syntax/<name>.vim + | + +- ユーザがインストールしたその他のFileTypeおよびSyntax自動実行コマンドが + 実行される。これは特定の構文の強調を変更するのに使うことができる。 + +============================================================================== +4. 構文ファイルの覚書 *:syn-file-remarks* + + *b:current_syntax-variable* +Vimはロードした構文の名前を変数"b:current_syntax"に記憶している。どの構文が選 +択されたかに応じて他の設定を読込みたい時にはこれを使うことができる。例: > + :au BufReadPost * if b:current_syntax == "csh" + :au BufReadPost * do-some-things + :au BufReadPost * endif + + +2HTML *2html.vim* *convert-to-HTML* + +これは構文ファイルではなくて、現在のウィンドウの内容をHTMLに変換するスクリプト +である。Vimは新しいウィンドウを作成しそこにHTMLファイルを構築する。 + +使う際にはオプション'filetype'や'syntax'に"2html"を設定してはならない! +現在のファイルをコンバートするためにはこのスクリプトを読込む: > + + :runtime! syntax/2html.vim +< + 警告: この処理には時間がかかる! + +主力結果をファイルに保存すれば、あらゆるNetscapeのようなHTML Viewerでそれを観 +ることができる。Vimで表示されるのと寸分たがわぬ色が再現される。 + +オプション'number'が設定されている場合には、各行にNumberで強調された行番号が付 +加される。"html_number_lines"に非0の値を設定すればHTMLの出力へ強制的に行番号を +付加することができる: > + :let html_number_lines = 1 +値0を設定すれば行番号を強制的に省略することができる: > + :let html_number_lines = 0 +変数を削除すればデフォルトの'number'を使うように戻すことができる: > + :unlet html_number_lines + +デフォルトでは、古いブラウザ用に最適化されたHTMLが生成される。属性を表現するの +にカスケードスタイルシートを使用したい場合には次の設定を使用する(結果的にかな +り短いHTML 4に準拠したファイルが得られる): > + :let html_use_css = 1 + +覚書き: +- この機能はGUIをサポートしたバージョンでしか動作しない。(X11などの)GUIが実際 + に機能していない状況でも動作はするが、良い結果は得られない(色が異なってしま + う)。 +- 古いブラウザでは背景色が表示されないことがある。 +- 大半のブラウザでは(なんとカラーで)印刷することができる! + +ここではUNIXのシェル上で全ての.cと.hをコンバートする方法を例として示す: > + for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done +< + +ABEL *abel.vim* *abel-syntax* + +ABELの強調にはユーザが定義できるオプションが幾つかある。それらを有効化するには +それぞれの変数に何か値を設定すれば良い。例: > + :let abel_obsolete_ok=1 +無効化するには":unlet"を使用する。例: > + :unlet abel_obsolete_ok + +変数 強調 ~ +abel_obsolete_ok 古いキーワードをエラーでなく命令文として扱う +abel_cpp_comments_illegal '//'をインラインコメントリーダとして扱わない + + +ADA *ada.vim* *ada-syntax* + +このモードはオブジェクト指向プログラムや型保護等の機能がサポートされた、Adaの +1995年版("Ada95")を想定して作られている。Ada95で追加されたキーワードを使用して +いるAda83のコード(そのようなコードは修正をすべき)は誤った強調色で表示してしま +うものの、オリジナルのAda言語("Ada83"や"Ada87")で書かれたコードも概ね取り扱う +ことができる。Adaについての詳細はhttp://www.adapower.com/を参照。 + +Adaモードは多くの状況を綺麗に取り扱う。例えば、"-5"のなかの"-"は数字の一部とし +て認識するが、"A-5"という表記の中の同じ文字は演算子として認識される。通常、他 +のコンパイル単位を参照する"with"や"use"節は、Cにおける"#include"と同じ強調色で +表示される。"Conditional"や"Repeat"グループを異なる強調色に設定すれば、"end +if"と"end loop"はそれぞれのグループの強調色で表示される。これらにはコマンド +"highlight"を使って異なる強調色を設定することができる。 +(例:ループの色を変えるには":hi Repeat"に続けて強調色指定を続ける; 単純な端末上 +ではctermfg=Whiteという指定がしばしば見やすい) + +Adaモードではユーザが設定できる幾つかのオプションが存在する。有効化するには、 +オプションに値を設定する。あるオプションを有効化する例は: > + let ada_standard_types = 1 +無効化するには":unlet"を使用する。例: > + unlet ada_standard_types = 1 +Adaファイルを読込む前に、コマンドラインで":"とこれらコマンドをキー入力すること +で、設定することができる。ファイルに"~/.vimrc"、コロン(":")を除いて"let"コマン +ドを追加すれば、これらのオプション設定を永続化することができる。 + +以下、Adaモードのオプションの一覧: + +変数 動作 ~ +ada_standard_types 標準パッケージ内の型(例:"Float")を強調表示する +ada_space_errors 余分な空白文字をエラーとして強調表示する… +ada_no_trail_space_error ただし行末の空白はエラーから除外する +ada_no_tab_space_error ただしスペース後のタブ文字は除外する +ada_withuse_ordinary "with"と"use"を通常のキーワードで表示する + (これらが他のコンパイル単位への参照として使われた場 + 合には、特別に通常の強調として表示する)。 +ada_begin_preproc beginのようなキーワードの全てをCプリプロセッサ命令同 + 様の強調色を使用して表示する。 + +このモードは遅いコンピュータ(90MHz)上でも高速に動作するが、もしもパフォーマン +スが受け入れられないほど低いようならば、ada_withuse_ordinaryを有効化する。 + + +ANT *ant.vim* *ant-syntax* + +ANTの構文ファイルにはデフォルトでJavaScriptとPythonの構文強調が含まれている。 +関数AntSyntaxScript()の第1引数にタグ名を、第2引数にファイル名を指定することで +その他のスクリプト言語用構文強調をインストールすることができる。例: > + + :call AntSyntaxScript('perl', 'perl.vim') + +これは次のようなANTのコードにPerlの構文強調をインストールするものである > + + <script language = 'perl'><![CDATA[ + # everything inside is highlighted as perl + ]]></script> + +スクリプト言語を永続的にインストールするには|mysyntaxfile-add|を参照。 + + + *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* +アセンブラ言語 *asm-syntax* *asmh8300-syntax* *nasm-syntax* *masm-syntax* + *asm68k-syntax* + +"*.i"にマッチする名前のファイルはProgress(訳注:ファイル形式)かアセンブラであ +る。自動検出が動作しない場合や、Progressを編集しないことが判っている場合には、 +起動設定ファイルvimrcに次のコマンドを書くことができる: > + :let filetype_i = "asm" +"asm"には使用するアセンブラ言語の種類を指定する。 + +ファイル名の同じ拡張子を使用しているアセンブラ言語には沢山の種類がある。従って +ユーザは自分が使用する種類を選択するか、もしくはアセンブラファイルそのものに +Vimがそれと判断できるような行を追加しなければならない。現在は以下の構文ファイ +ルが利用可能: + asm GNUアセンブラ(デフォルト) + asm68k モトローラ680x0アセンブラ + asmh8300 日立H-8300用GNUアセンブラ + ia64 インテルItanium 64 + masm マイクロソフトアセンブラ(たぶん80x86用) + nasm ネットワイドアセンブラ(訳注:nasmのほうが認知度が高い?) + tasm ターボアセンブラ(80x86,Pentium,MMXの命令コードを含む) + pic PICアセンブラ(現在はPIC16F84用) + +アセンブラファイルに次のような行を書き加えるのが一番柔軟である: > + :asmsyntax=nasm +"nasm"は実際に使用するアセンブラ構文の名前に置き換える。このような記述はファイ +ルの先頭5行以内に書いてなければならない。 + +構文の種類はバッファ変数b:asmsyntaxを設定することで常にそちらが優先される: > + :let b:asmsyntax=nasm + +自動にしろ手動にしろb:asmsyntaxが設定されていないときには、グローバル変数 +asmsyntaxが使用される。これによりデフォルトのアセンブラ言語を設定することがで +きる: > + :let asmsyntax=nasm + +最後の手段として、何も設定されていない場合には、"asm"構文が使用される。 + + +ネットワイドアセンブラ(nasm.vim)の補助強調 ~ + +機能を有効化するには: > + :let {variable}=1|set syntax=nasm +無効化するには: > + :unlet {variable} |set syntax=nasm + +変数 強調内容 ~ +nasm_loose_syntax 非オフィシャルな拡張構文をエラーとしない + (パーザ依存; 非推奨) +nasm_ctx_outside_macro マクロ外のコンテキストをエラーとしない +nasm_no_warn 潜在的に危険な構文をToDoとして強調しない + + +ASPPERLとASPVBS *aspperl-syntax* *aspvbs-syntax* + +*.aspと*.aspという名のファイルはどちらもPerlもしくはVisual Basicのスクリプトた +りえる。Vimにとってこれを判別するのは難しいので、グローバル変数を設定すること +でどちらを使用するのか宣言することができる。どちらでもPerlスクリプトを使用する +なら: > + :let g:filetype_asa = "aspperl" + :let g:filetype_asp = "aspperl" +Visual Basicを使用するなら次のように設定する: > + :let g:filetype_asa = "aspvbs" + :let g:filetype_asp = "aspvbs" + + +BASIC *basic.vim* *vb.vim* *basic-syntax* *vb-syntax* + +Visual Basicも「通常の」BASICも、どちらも拡張子には".bas"が使用される。どちら +が使用されているか判別するのに、Vimはファイルの先頭5行以内に"VB_Name"という文 +字列が存在するかどうかを検査する。存在しなければ、ファイル形式は"basic"とな +り、そうでなければ"vb"となる。拡張子が".frm"のファイルは常にVisual Basicとして +扱われる。 + + +C *c.vim* *c-syntax* + +Cには幾つかの補助的な強調方法がある。それらを有効化するには対応した変数に値を +設定する。例: > +A few things in C highlighting are optional. To enable them assign any value +to the respective variable. Example: > + :let c_comment_strings=1 +To disable them use ":unlet". Example: > + :unlet c_comment_strings + +変数 強調内容 ~ +c_gnu GNU gcc固有の要素 +c_comment_strings コメント内の文字列と数値 +c_space_errors 行末の空白文字とタブ文字前のスペース文字 +c_no_trail_space_error ... 但し行末の空白文字は除外 +c_no_tab_space_error ... 但しタブも自前のスペース文字は除外 +c_no_bracket_error []の中の{}をエラーとして表示しない +c_no_ansi ANSI標準の型と定数を強調しない +c_ansi_typedefs ... 但し標準ANSI型は強調する +c_ansi_constants ... 但し標準ANSI定数は強調する +c_no_utf 文字列中の\uと\Uを強調しない +c_syntax_for_h ファイル*.hにC+ではなくCの構文を適用する +c_no_if0 "#if 0"のブロックをコメントとして強調しない +c_no_cformat 文字列中の"%"によるフォーマットを強調しない +c_no_c99 C99の標準要素を強調しない + +バックスクロール中に強調表示のエラーが生じて、そのエラーが<CTRL-L>の再描画で解 +消される場合には、内部変数"c_minlines"にもっと大きな値を設定すれば解消されるか +もしれない: > + :let c_minlines = 100 +これにより構文判定の同期位置が表示開始行の100行手前に設定される。初期設定の値 +は50行(c_no_if0を使用した場合は15行)である。ただしこれには、大きな値を設定する +と再描画が遅くなるという短所がある。 + +"#if 0" / "#endif"のブロックをコメントとして強調している場合には、"#if 0"が +ウィンドウのトップから"c_minlines"以内にある時にしか正しく動作しないことに注意 +する。長い"#if 0"のブロックを使用した場合には、それは正しく強調されない。 + +コメント内で追加要素にマッチを行なうには、クラスタcCommentGroupを使用する。 +例: > + :au Syntax c call MyCadd() + :function MyCadd() + : syn keyword cMyItem contained Ni + : syn cluster cCommentGroup add=cMyItem + : hi link cMyItem Title + :endfun + +ANSIの定数はグループ"cConstant"で強調される。これには"NULL", "SIG_IGN"やその他 +のものが含まれる。しかしANSI標準でないもの、例えば"TRUE"は含まれない。もしもこ +れが紛らわしいならば、cConstant用の強調を削除する: > + :hi link cConstant NONE + +文法上エラーではないはずの'{'と'}'がエラーとして強調されてしまう場合には、 +cErrInParen及びcErrInBracketの強調をリセットする。 + + +COBOL *cobol.vim* *cobol-syntax* + +既存のCOBOLコードに要求される強調方法と、新規に開発されるコードに要求されるそ +れには違いがある。この違いはコードのおかれている状況(保守 vs 開発)やその他の要 +素によって決定する。既存コードの強調を行なうには.vimrcに次の行を書き足す: > + :let cobol_legacy_code=1 +それを再び無効にするには次のようにする: > + :unlet cobol_legacy_code + + +COLD FUSION *coldfusion.vim* *coldfusion-syntax* + +ColdFusionには独自版のHTMLコメントが存在する。ColdFusionのコメント強調を有効化 +するには、次の行を起動設定ファイルに書き足す: > + + :let html_wrong_comments=1 + +ColdFusionの構文ファイルはHTML用構文ファイルに基づいている。 + + +CYNLIB *cynlib.vim* *cynlib-syntax* + +Cynlibファイルは、ハードウェアのモデリングとシミュレーションを行なうCynlibクラ +スライブラリを使用したC++ファイルである。通常Cynlibのファイルは.ccや.cppという +拡張子を持つので、CynlibではないC++ファイルと区別するのは非常に困難である。だ +から.ccファイルをCynlibで強調する際には、ファイル.vimrcに次の行を書き足す: > + + :let cynlib_cyntax_for_cc=1 + +cppファイルについても同様(この拡張子は通常Windowsだけで使用される) > + + :let cynlib_cyntax_for_cpp=1 + +これらを再び無効にするには次のコマンドを使用する: > + + :unlet cynlib_cyntax_for_cc + :unlet cynlib_cyntax_for_cpp +< + +CWEB *cweb.vim* *cweb-syntax* + +"*.i"にマッチする名前のファイルはProgress(訳注:ファイル形式)かCWEBである。自動 +検出が動作しない場合や、Progressを編集しないことが判っている場合には、起動設定 +ファイルvimrcに次のコマンドを書くことができる: > + :let filetype_w = "cweb" + + +DOSバッチファイル *dosbatch.vim* *dosbatch-syntax* + +DOSバッチファイルの強調にはオプションが1つある。このオプションによりWindows +2000で導入されたコマンドインタプリタの新しい拡張機能がカバーされ、変数 +dosbatch_cmdextversionによりその有/無効が制御される。Windows NTでは値1を設定 +し、Windows 2000では2を設定するのが良い。次のような行で使用するバージョンを選 +択できる: > + + :let dosbatch_cmdextversion = 1 + +変数が定義されていない際のデフォルトはWindows 2000をサポートする2となる。 + + +DTD *dtd.vim* *dtd-syntax* + +初期状態ではDTD構文強調は大/小文字を無視しない。無視する状態にするには、起動設 +定ファイルに次の行を書き足す: > + + :let dtd_ignore_case=1 + +DTD構文ファイルでは未知のタグをエラーとして強調する。これが煩わしいならば、構 +文ファイルdtd.vimが読込まれる前に: > + + :let dtd_no_tag_errors=1 + +と設定することで無効化することができる。定義部内のパラメータのエンティティ名は +強調グループ'Type'、句読点と'%'は'Comment'を使用して強調される。パラメータエン +ティティの実体は強調グループ'Constant'を、区切り文字の%と;は強調グループ'Type' +を使用して強調される。以下を設定するとこれを無効化できる: > + + :let dtd_no_param_entities=1 + +XML内の埋め込みDTDを強調表示するために、DTDの構文ファイルはxml.vimからも参照さ +れる。 + + +EIFFEL *eiffel.vim* *eiffel-syntax* + +Eiffelは大小文字の区別をしないけれども、スタイルガイドラインが示すように、構文 +強調ではそれらが区別される。これにより大小文字が違えば違うクラス名として強調表 +示することが可能になっている。大小文字の違いを無視して強調を行なうならば、起動 +設定ファイルに次の行を書き足す: > + + :let eiffel_ignore_case=1 + +これを行なってもコメント内のクラス名とTODOの印には大小文字の区別がなされる。 + +逆に、もっと厳密に検査するには、次の行のいずれかを書き足す: > + + :let eiffel_strict=1 + :let eiffel_pedantic=1 + +eiffel_strictを設定すると"Current", "Void", "Result", "Precursor"そして"NONE" +の5つの既定単語について、不正な大小文字の使用を捕捉し、機能やクラス名としてそ +れらが使用されれば警告を与えるようになる。 + +eiffel_pedanticを設定すると、Eiffelのスタイルガイドラインを相当に厳格に強制す +る。 +(キーワードの大小文字を決定する時代遅れの方法と同じくらい、大小文字の混在のよ +うな…訳不明) +(like arbitrary mixes of upper- and lowercase letters as well as outdated ways +to capitalize keywords). + +"Current", "Void", "Result"そして"Precursor"の小文字版を使用するには、大小文字 +を区別する強調方法を無効化する代わりに: > + + :let eiffel_lower_case_predef=1 + +という方法を使うことができる。 + +ISEが提案し、実験的に幾つかのコンパイラでは取り扱うことのできる、新しい生成構 +文は次のコマンドで使用できるようになる: > + + :let eiffel_ise=1 + +最後に幾つかのベンダは16進数定数値をサポートしている。それを取り扱うには: > + + :let eiffel_hex_constants=1 + +この行を起動設定ファイルに書き足す。 + + +ERLANG *erlang.vim* *erlang-syntax* + +これはErlang(ERicsson LANGuage: エリクソン言語)をサポートする構文強調ファイル +である。Erlangは大小文字を区別しデフォルトの拡張子は".erl"である。 + +キーワード強調を無効化するには、これを.vimrcに書き足す: > +If you want to disable keywords highlighting, put in your .vimrc: > + :let erlang_keywords = 1 +組み込み関数強調を無効化するには、これを.vimrcに書き足す: > + :let erlang_functions = 1 +特殊文字の強調を無効化するには、これを.vimrcに書き足す: > + :let erlang_characters = 1 + + +FORM *form.vim* *form-syntax* + +FORMファイルの構文要素に使用するカラースキームには、Conditional, Number, +Statement, Comment, PreProc, Type, そしてStringが、次の文献で定義される言語仕 +様に沿って行なわれる。 +文献: 'Symbolic Manipulation with FORM'' by J.A.M. Vermaseren, CAN, + Netherlands, 1991. + +初期設定の色に変更を加えるには、次の構文グループを再定義すれば良い: + + - formConditional + - formNumber + - formStatement + - formHeaderStatement + - formComment + - formPreProc + - formDirective + - formType + - formString + +構文ファイルform.vimではFORMプリプロセッサコマンドとディレクティブをそれぞれ、 +デフォルトでは同じ構文グループにしていることに注意。 + +FORM用の既定の拡張カラーモードではヘッダ命令ととFORMプログラム本体での命令を区 +別できるような色設定が利用可能である。拡張カラーモードを使用可能にするには、 +ファイルvimrcに次の設定を書き足す: > + + :let form_enhanced_color=1 + +拡張モードを使うことは、gvimで暗いディスプレイを使用した場合にも利点がある。命 +令文は黄色ではなく明るい黄色で表示され、条件文は視認性のため明るい青で表示され +る。 + + +FORTRAN *fortran.vim* *fortran-syntax* + +デフォルトの強調と方言 ~ +デフォルトではf95(Fortran 95)に相当する強調が行なわれる。Fortran 95はFortran +90のスーパーセットでかつFortran 77のだいたいのスーパーセットであるから、多くの +ユーザにとって多くのケースで適切な選択である。 + +Fortranソースコードの形式 ~ +Fortran 9xのソースコードには固定形式と自由形式が有る。形式が誤って設定されてい +ると構文強調が正しくされないことに注意。 + +新規にFortranのファイルを作成する場合には、構文ファイルは固定形式であると仮定 +する。常に自由形式を使う場合には > + :let fortran_free_source=1 +これを.vimrcでコマンド:syntaxを実行する前に行なう必要がある。 + +ソースコードの形式がファイル拡張子によって決定できる場合には、ftpluginファイル +の1つでfortran_free_sourceを設定すると便利になる。ftpluginファイルについての詳 +細は|ftplugin|を参照のこと。例えば、拡張子.f90を持つファイルについては全て自由 +形式として扱い、それ以外のもは固定形式とする場合には、次のコードをftpluginファ +イルに記述すれば良い。 > + let s:extfname = expand("%:e") + if s:extfname ==? "f90" + let fortran_free_source=1 + else + unlet! fortran_free_source + endif + +既存のFortranファイルを編集する時には、変数fortran_free_sourceが設定されていれ +ば構文ファイルは自由形式のソースであると仮定する。設定されていないときには、 +ファイルの先頭25行の行頭5カラムを調べて、その形式が固定なのか自由なのかを決定 +しようと試みる。自由形式コードの兆候が見られない場合には、ファイルは固定形式 +コードとして取り扱われる。このアルゴリズムはほとんどのケースにおいて有効に機能 +する。しかしいつかのケース、例えば先頭25行以上が行コメントで占められているよう +なファイルでは、構文ファイルが固定形式コードであると誤った判断をしてしまうだろ +う。そのような場合には、ファイルの先頭25行の行頭5カラムのどこかに、コメント以 +外の命令文を追加し、ファイルの保存(:w)そして再読込(:e!)を行なえば良い。 + +Fortranファイル内のタブ文字 ~ +標準のFortranではタブ文字は認識されない。固定カラム位置での境界を必要とする固 +定形式のFortranソースコードでTab文字を使用するのは良いアイデアではない。従って +タブ文字はエラーとして強調される。しかしながらプログラマーによってはタブ文字を +使用することを望む場合があるだろう。Fortranファイルにタブ文字が含まれている場 +合には、変数fortran_have_tabsをコマンド:syntaxが実行される前に > + :let fortran_have_tabs=1 +このように.vimrcで設定すれば良い。タブ文字を使う場合には残念ながら、構文ファイ +ルによって不正な余白を検出することができなくなる。 + +Fortranファイルの構文による強調 ~ +foldmethod=syntax(訳注:構文による折畳)を使用したいならば、まず変数fortran_fold +を > + :let fortran_fold=1 +このようなコマンドで設定しなければならない。これにより構文ファイルはプログラム +単位の領域、プログラム命令文で始まるメインプログラム、サブルーチン、関数、 +サブプログラム、ブロックデータサブプログラム、そしてモジュールといったプログラ +ム単位の領域で折畳を定義する。同時に変数fortran_fold_conditionalsを > + :let fortran_fold_conditionals=1 +このように設定すると、doループ、ifブロック、そしてselect-case構造の領域が折畳 +まれる。さらに変数fortran_fold_multilinecommentsも > + :let fortran_fold_multilinecomments=1 +このように設定すれば3行以上にわたり続くコメントの領域が折畳まれる。大きなファ +イルに対してこのように構文による折畳を使用した場合、非常に遅くなることに注意。 + +fortran_foldを設定し、fortran_fold_conditionalsか +fortran_fold_multilinecomments(どちらか片方でも両方でも)を設定した場合には、 +foldmethod=syntaxを設定してある時に、Vimはファイルを折畳む。2つのプログラム単 +位の間にあるコメントや空行は折畳まれない。なぜならそれらは構文によって定義され +るプログラム単位に属していないからである。 + +より正確なFortranの構文 ~ +変数fortran_more_preciseを > +If you set the variable fortran_more_precise with a command such as > + :let fortran_more_precise=1 +このようなコマンドで設定した場合には、構文強調がより正確になるが動作は遅くな +る。とりわけ、do、goto、そして算術if命令文に使用される命令ラベルが、do、if、 +selectもしくはforall構造の終端で使用される名前として認識されるようになる。 + +非標準のFortran方言 ~ +構文ファイルは5つのFotranの方言をサポートしている: f95, f90, f77, the Lahey +サブセットの elf90, そして Imagine1 サブセットの F. + +f77の拡張機能を使うときには、それがg77(GNU Fortran)を含む多くのコンパイラがサ +ポートしている一般的な、do/enddoループ、do/whileループ、自由形式ソースコード、 +拡張機能であるならば、恐らくデフォルトの強調で満足するだろう。しかしながら、拡 +張機能を使用せずに厳密なf77を使用する場合や、自由形式やMIL STD 1753(訳注:MIL +STDはアメリカ軍の定める標準規格でその1753号の意味)の拡張を用いない場合には問題 +がある。そのような時に方言としてf77を指定することには、SUMのようなf9xの持つ関 +数として認識されてしまう名前が、ユーザ変数として認識され強調されないという利点 +がある。また廃れてしまったASSIGN命令文のような構造も修正用TODOとしては強調され +なくなり、固定形式が仮定されるようになる。 + +elf90やFを使う場合には適切な方言を設定する。それにより、これらの方言においては +除外されるf90の機能はtodoとして強調され、これらの方言で必要とされる自由形式の +ソースコードが仮定される。 + +方言は変数fortran_dialectを設定することで選択できる。fortran_dialectに設定でき +る値には大小文字の区別があり"f95"、"f70"、"elf"もしくは"F"である。無効な値を +fortran_dialectへ設定した場合にはそれは無視される。 + +全てのFortranファイルで同じ方言を使用するならば、.vimrcでsyntax onが実行される +前にfortran_dialectを設定する。方言がファイルの拡張子に依存して決定する場合に +は、ftpluginファイル内で設定するのが最良の手段である。ftpluginファイル付いての +詳細な情報は、|ftplugin|を参照。例、全ての.f90という拡張子のファイルが"elf"サ +ブセットにより書かれているならば、ftpluginファイルに次のようなコードを書き足す +べきである > + let s:extfname = expand("%:e") + if s:extfname ==? "f90" + let fortran_dialect="elf" + else + unlet! fortran_dialect + endif + +拡張子が方言を一意に決定できない場合には、もっと良い制御方法が必要になる。各 +ファイルの先頭3行以内にコメントで"fortran_dialect=xx"という命令を書けば方言の +設定を上書することができる(xxにはf77やelfやFやf90やf95が入る)。これによりファ +イル毎に方言を設定できる。例えば、古い.fファイルはf77の拡張を使用して書かれて +いるが、新しい.fファイルがFで書かれている場合には > + ! fortran_dialect=F +このような形で新しいファイルの先頭3行以内にコメントを追加することで、Fで書かれ +ていることが判別できるようになる。Fとelfの両方が指定された場合には、Fの方が優 +先される。 + +制限事項 ~ +丸カッコチェックは閉じカッコが足りないことを捕捉できない。穿孔(訳注:パンチカー +ド?)文字列は認識できない。幾つかのキーワードはFortran90の予約語ではないので誤 +って強調される。 + +Fortranに関するその他の情報は|fortran-indent|や|fortran-plugin|を参照。 + + +FVWM CONFIGURATION FILES *fvwm.vim* *fvwm-syntax* + +Vimに*fvwmrc*や*fvwm2rc*などにマッチしないFvwmコンフィギュレーションファイルを +認識させるためには、ファイルmyfiletypefile.vimで適切な追加の認識パターンを設定 +しなければならない。このパターンでは変数"b:fvwm_version"にFvwmのメジャーバージ +ョンを指定し、オプション'filetype'にfvwmを設定しなければならない。 + +以下は/etc/X11/fvwm2/配下のファイルをFvwm2のコンフィギュレーションとして認識さ +せるための追加設定を示している: > + + :au! BufNewFile,BufRead /etc/X11/fvwm2/* let b:fvwm_version = 2 | + \ set filetype=fvwm + +有効な色の名前を全てVimに強調させたいならば、システムの色データベース(rgb.txt) +の在り処を知らせる必要がある。設定は変数"rgb_file"に行なう。色データベースが +/usr/X11/lib/X11/にあるとすれば: > + + :let rgb_file = "/usr/X11/lib/X11/rgb.txt" + +このような内容をファイル.vimrcに追加する。 + + +GSP *gsp.vim* + +GSPページのデフォルトカラーは|html.vim|にて定義され、Javaコード(Javaタグ内部や +インラインのバッククォート内)のカラーは|java.vim|にて定義される。|html.vim|で +定義される以下のHTMLグループは、インラインJavaコードを挿入したり強調するために +再定義されている: + + htmlString + htmlValue + htmlEndTag + htmlTag + htmlTagN + +書かれた大抵の場所のインラインJavaコードは適切に強調されるが、幾つかの特殊な +ケースではそうはならない。他のHTMLグループ内にインラインJavaコードを書いてそれ +が正しく強調されない場合には、必要な行を|html.vim|からコピーしてgspJavaを +constains節に加えれば、正しく強調されるようになる。 + +インラインJavaを示すバッククォートは、目立ちやすくするためにhtmlErrorグループ +で強調される。 + + +HTML *html.vim* *html-syntax* + +HTMLファイルのタグ用の構文ファイルは以下のように動作する。 + +開きタグの<>は、閉じタグの</>とは異なった色で強調される。これは意図的にそうし +てある!。開きタグには強調'Function'が使用され、閉じタグには強調'Type'が使用さ +れる(どのようにそれらがどのように定義されているかはsyntax.vimを参照)。 + +既知のタグ名はC命令文と同じように強調される。未知のタグ名は間違いを見分けやす +くするために、<>や</>と同じ強調がなされる。 + +引数(もしくは属性)名にも同じことが言える。既知の属性名と未知の属性名には異なる +強調がなされる。 + +幾つかのHTMLタグは表示する文字種を変更するために使用される。以下のタグは構文 +ファイルhtml.vimによって認識され、その内容は通常の文字種とは異なる文字種で表示 +される: <B> <I> <U> <EM> <STRONG> (<EM>は<I>のエイリアスとして使われ、<STRONG> +は<B>のエイリアス)、<H1> - <H6>、<HEAD>、<TITLE>そして<A>、ただしhrefが含まれ +ていてリンクとして使われている(例<A href="somefile.html">)場合。 + +それらのテキストの文字種を変更するには、以下の構文グループを再定義する必要があ +る: + + - htmlBold + - htmlBoldUnderline + - htmlBoldUnderlineItalic + - htmlUnderline + - htmlUnderlineItalic + - htmlItalic + - htmlTitle for titles + - htmlH1 - htmlH6 for headings + +To make this redefinition work you must redefine them all with the exception +of the last two (htmlTitle and htmlH[1-6], which are optional) and define the +following variable in your vimrc (this is due to the order in which the files +are read during initialization) > + :let html_my_rendering=1 + +If you'd like to see an example download mysyntax.vim at +http://www.fleiner.com/vim/mysyntax.vim + +You can also disable this rendering by adding the following line to your +vimrc file: > + :let html_no_rendering=1 + +HTML comments are rather special (see an HTML reference document for the +details), and the syntax coloring scheme will highlight all errors. +However, if you prefer to use the wrong style (starts with <!-- and +ends with --!>) you can define > + :let html_wrong_comments=1 + +JavaScript and Visual Basic embedded inside HTML documents are highlighted as +'Special' with statements, comments, strings and so on colored as in standard +programming languages. Note that only JavaScript and Visual Basic are currently +supported, no other scripting language has been added yet. + +Embedded and inlined cascading style sheets (CSS) are highlighted too. + +There are several html preprocessor languages out there. html.vim has been +written such that it should be trivial to include it. To do so add the +following two lines to the syntax coloring file for that language +(the example comes from the asp.vim file): + + runtime! syntax/html.vim + syn cluster htmlPreproc add=asp + +Now you just need to make sure that you add all regions that contain +the preprocessor language to the cluster htmlPreproc. + + +HTML/OS (by Aestiva) *htmlos.vim* *htmlos-syntax* + +The coloring scheme for HTML/OS works as follows: + +Functions and variable names are the same color by default, because VIM +doesn't specify different colors for Functions and Identifiers. To change +this (which is recommended if you want function names to be recognizable in a +different color) you need to add the following line to either your ~/.vimrc: > + :hi Function term=underline cterm=bold ctermfg=LightGray + +Of course, the ctermfg can be a different color if you choose. + +Another issues that HTML/OS runs into is that there is no special filetype to +signify that it is a file with HTML/OS coding. You can change this by opening +a file and turning on HTML/OS syntax by doing the following: > + :set syntax=htmlos + +Lastly, it should be noted that the opening and closing characters to begin a +block of HTML/OS code can either be << or [[ and >> or ]], respectively. + + +IA64 *ia64.vim* *intel-itanium* *ia64-syntax* + +Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for +how to recognize this filetype. + +To have *.inc files be recognized as IA64, add this to your .vimrc file: > + :let g:filetype_inc = "ia64" + + +INFORM *inform.vim* *inform-syntax* + +Inform highlighting includes symbols provided by the Inform Library, as +most programs make extensive use of it. If do not wish Library symbols +to be highlighted add this to your vim startup: > + :let inform_highlight_simple=1 + +By default it is assumed that Inform programs are Z-machine targetted, +and highlights Z-machine assembly language symbols appropriately. If +you intend your program to be targetted to a Glulx/Glk environment you +need to add this to your startup sequence: > + :let inform_highlight_glulx=1 + +This will highlight Glulx opcodes instead, and also adds glk() to the +set of highlighted system functions. + + +JAVA *java.vim* *java-syntax* + +The java.vim syntax highlighting file offers several options: + +In Java 1.0.2 it was never possible to have braces inside parens, so this was +flagged as an error. Since Java 1.1 this is possible (with anonymous +classes), and therefore is no longer marked as an error. If you prefer the old +way, put the following line into your vim startup file: > + :let java_mark_braces_in_parens_as_errors=1 + +All identifiers in java.lang.* are always visible in all classes. To +highlight them use: > + :let java_highlight_java_lang_ids=1 + +You can also highlight identifiers of most standard java packages if you +download the script at http://www.fleiner.com/vim/syntax/javaid.vim +If you prefer to only highlight identifiers of a certain package, say java.io +use the following: > + :let java_highligh_java_io=1 +Check the javaid.vim file for a list of all the packages that are supported. + +Function names are not highlighted, as the way to find functions depends on +how you write java code. The syntax file knows two possible ways to highlight +functions: + +If you write function declarations that are always indented by either +a tab, 8 spaces or 2 spaces you may want to set > + :let java_highlight_functions="indent" +However, if you follow the java guidlines about how functions and classes are +supposed to be named (with respect to upper and lowercase), use > + :let java_highlight_functions="style" +If both options do not work for you, but you would still want function +declarations to be highlighted create your own definitions by changing the +definitions in java.vim or by creating your own java.vim which includes the +original one and then adds the code to highlight functions. + +In java 1.1 the functions System.out.println() and System.err.println() should +only be used for debugging. Therefor it is possible to highlight debugging +statements differently. To do this you must add the following definition in +your startup file: > + :let java_highlight_debug=1 +The result will be that those statements are highlighted as 'Special' +characters. If you prefer to have them highlighted differently you must define +new highlightings for the following groups.: + Debug, DebugSpecial, DebugString, DebugBoolean, DebugType +which are used for the statement itself, special characters used in debug +strings, strings, boolean constants and types (this, super) respectively. I +have opted to chose another background for those statements. + +In order to help you to write code that can be easely ported between +java and C++, all C++ keywords are marked as error in a java program. +However, if you use them regularly, you may want to define the following +variable in your .vimrc file: > + :let java_allow_cpp_keywords=1 + +Javadoc is a program that takes special comments out of java program files and +creates HTML pages. The standard configuration will highlight this HTML code +similarly to HTML files (see |html.vim|). You can even add javascript +and CSS inside this code (see below). There are four differences however: + 1. The title (all characters up to the first '.' which is followed by + some white space or up to the first '@') is colored differently (to change + the color change the group CommentTitle). + 2. The text is colored as 'Comment'. + 3. HTML comments are colored as 'Special' + 4. The special javadoc tags (@see, @param, ...) are highlighted as specials + and the argument (for @see, @param, @exception) as Function. +To turn this feature off add the following line to your startup file: > + :let java_ignore_javadoc=1 + +If you use the special javadoc comment highlighting described above you +can also turn on special highlighting for javascript, visual basic +scripts and embedded CSS (stylesheets). This makes only sense if you +actually have javadoc comments that include either javascript or embedded +CSS. The options to use are > + :let java_javascript=1 + :let java_css=1 + :let java_vb=1 + +In order to highlight nested parens with different colors define colors +for javaParen, javaParen1 and javaParen2, for example with > + :hi link javaParen Comment +or > + :hi javaParen ctermfg=blue guifg=#0000ff + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "java_minlines" internal variable +to a larger number: > + :let java_minlines = 50 +This will make the syntax synchronization start 50 lines before the first +displayed line. The default value is 10. The disadvantage of using a larger +number is that redrawing can become slow. + + +LACE *lace.vim* *lace-syntax* + +Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the +style guide lines are not. If you prefer case insensitive highlighting, just +define the vim variable 'lace_case_insensitive' in your startup file: > + :let lace_case_insensitive=1 + + +LEX *lex.vim* *lex-syntax* + +Lex uses brute-force synchronizing as the "^%%$" section delimiter +gives no clue as to what section follows. Consequently, the value for > + :syn sync minlines=300 +may be changed by the user if s/he is experiencing synchronization +difficulties (such as may happen with large lex files). + + +LITE *lite.vim* *lite-syntax* + +There are two options for the lite syntax highlighting. + +If you like SQL syntax highligthing inside Strings, use this: > + + :let lite_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "lite_minlines" to the value you desire. Example: > + + :let lite_minlines = 200 + + +MAPLE *maple.vim* *maple-syntax* + +Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language +supports many packages of functions which are selectively loaded by the user. +The standard set of packages' functions as supplied in Maple V release 4 may be +highlighted at the user's discretion. Users may place in their .vimrc file: > + + :let mvpkg_all= 1 + +to get all package functions highlighted, or users may select any subset by +choosing a variable/package from the table below and setting that variable to +1, also in their .vimrc file (prior to sourcing +$VIMRUNTIME/syntax/syntax.vim). + + Table of Maple V Package Function Selectors > + mv_DEtools mv_genfunc mv_networks mv_process + mv_Galois mv_geometry mv_numapprox mv_simplex + mv_GaussInt mv_grobner mv_numtheory mv_stats + mv_LREtools mv_group mv_orthopoly mv_student + mv_combinat mv_inttrans mv_padic mv_sumtools + mv_combstruct mv_liesymm mv_plots mv_tensor + mv_difforms mv_linalg mv_plottools mv_totorder + mv_finance mv_logic mv_powseries + + +MOO *moo.vim* *moo-syntax* + +If you use C-style comments inside expressions and find it mangles your +highlighting, you may want to use extended (slow!) matches for C-style +comments: > + + :let moo_extended_cstyle_comments = 1 + +To disable highlighting of pronoun substitution patterns inside strings: > + + :let moo_no_pronoun_sub = 1 + +To disable highlighting of the regular expression operator '%|', and matching +'%(' and '%)' inside strings: > + + :let moo_no_regexp = 1 + +Unmatched double quotes can be recognized and highlighted as errors: > + + :let moo_unmatched_quotes = 1 + +To highlight builtin properties (.name, .location, .programmer etc.): > + + :let moo_builtin_properties = 1 + +Unknown builtin functions can be recognized and highlighted as errors. If you +use this option, add your own extensions to the mooKnownBuiltinFunction group. +To enable this option: > + + :let moo_unknown_builtin_functions = 1 + +An example of adding sprintf() to the list of known builtin functions: > + + :syn keyword mooKnownBuiltinFunction sprintf contained + + +MSQL *msql.vim* *msql-syntax* + +There are two options for the msql syntax highlighting. + +If you like SQL syntax highligthing inside Strings, use this: > + + :let msql_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "msql_minlines" to the value you desire. Example: > + + :let msql_minlines = 200 + + +NCF *ncf.vim* *ncf-syntax* + +There is one option for NCF syntax highlighting. + +If you want to have unrecognized (by ncf.vim) statements highlighted as +errors, use this: > + + :let ncf_highlight_unknowns = 1 + +If you don't want to highlight these errors, leave it unset. + + +NROFF *nroff.vim* *nroff-syntax* + +To mark trailing spaces as an error, use this: > + + :let nroff_space_errors = 1 + + +PAPP *papp.vim* *papp-syntax* + +The PApp syntax file handles .papp files and, to a lesser extend, .pxml +and .pxsl files which are all a mixture of perl/xml/html/other using xml +as the top-level file format. By default everything inside phtml or pxml +sections is treated as a string with embedded preprocessor commands. If +you set the variable: > + + :let papp_include_html=1 + +in your startup file it will try to syntax-hilight html code inside phtml +sections, but this is relatively slow and much too colourful to be able to +edit sensibly ;) + +The newest version of the papp.vim syntax file can usually be found at +http://papp.plan9.de. + + +PASCAL *pascal.vim* *pascal-syntax* + +Files matching "*.p" could be Progress or Pascal. If the automatic detection +doesn't work for you, or you don't edit Progress at all, use this in your +startup vimrc: > + + :let filetype_p = "pascal" + +The Pascal syntax file has been extended to take into account some extensions +provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler. +Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are +enabled. If you prefer to stick with the standard Pascal keywords, add the +following line to your startup file: > + + :let pascal_traditional=1 + +To switch on Delphi specific constructions (such as one-line comments, +keywords, etc): > + + :let pascal_delphi=1 + + +The option pascal_symbol_operator controls whether symbol operators such as +, +*, .., etc. are displayed using the Operator color or not. To colorize symbol +operators, add the following line to your startup file: > + + :let pascal_symbol_operator=1 + +Some functions are highlighted by default. To switch it off: > + + :let pascal_no_functions=1 + +Furthermore, there are specific variable for some compiler. Besides +pascal_delphi, there are pascal_gpc and pascal_fpc. Default extensions try to +match Turbo Pascal. > + + :let pascal_gpc=1 + +or > + + :let pascal_fpc=1 + +To ensure that strings are defined on a single line, you can define the +pascal_one_line_string variable. > + + :let pascal_one_line_string=1 + +If you dislike <Tab> chars, you can set the pascal_no_tabs variable. Tabs +will be highlighted as Error. > + + :let pascal_no_tabs=1 + + + +PERL *perl.vim* *perl-syntax* + +There are a number of possible options to the perl syntax highlighting. + +If you use POD files or POD segments, you might: > + + :let perl_include_POD = 1 + +To handle package references in variable and function names differently from +the rest of the name (like 'PkgName::' in '$PkgName::VarName'): > + + :let perl_want_scope_in_variables = 1 + +If you want complex things like '@{${"foo"}}' to be parsed: > + + :let perl_extended_vars = 1 + +The coloring strings can be changed. By default strings and qq friends will be +highlighted like the first line. If you set the variable +perl_string_as_statement, it will be highlighted as in the second line. + + "hello world!"; qq|hello world|; + ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) + S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^^N (let perl_string_as_statement) + +(^ = perlString, S = perlStatement, N = None at all) + +The syncing has 3 options. The first two switch off some triggering of +synchronization and should only be needed in case it fails to work properly. +If while scrolling all of a sudden the whole screen changes color completely +then you should try and switch off one of those. Let me know if you can figure +out the line that causes the mistake. + +One triggers on "^\s*sub\s*" and the other on "^[$@%]" more or less. > + + :let perl_no_sync_on_sub + :let perl_no_sync_on_global_var + +Below you can set the maximum distance VIM should look for starting points for +its attempts in syntax highlighting. > + + :let perl_sync_dist = 100 + +For the "<<xxx" construct (here Documents), Vim can check for any value of +"xxx". So currently Vim can highlight here Documents properly. +(訳注:原文では「取り扱えない」となっていますが、6.x現在では取り扱えるようにな +りました。) + +If you want to use folding with perl, set perl_fold: > + + :let perl_fold = 1 + + +PHP3 and PHP4 *php.vim* *php3.vim* *php-syntax* *php3-syntax* + +[note: previously this was called "php3", but since it now also supports php4 +it has been renamed to "php"] + +There are the following options for the php syntax highlighting. + +If you like SQL syntax hightlighting inside Strings: > + + let php_sql_query = 1 + +For highlighting the Baselib methods: > + + let php_baselib = 1 + +Enable HTML syntax highlighting inside strings: > + + let php_htmlInStrings = 1 + +Using the old colorstyle: > + + let php_oldStyle = 1 + +Enable highlighting ASP-style short tags: > + + let php_asp_tags = 1 + +Disable short tags: > + + let php_noShortTags = 1 + +For highlighting parent error ] or ): > + + let php_parent_error_close = 1 + +For skipping an php end tag, if there exists an open ( or [ without a closing +one: > + + let php_parent_error_open = 1 + +Enable folding for classes and functions: > + + let php_folding = 1 + +Selecting syncing method: > + + let php_sync_method = x + +x = -1 to sync by search (default), +x > 0 to sync at least x lines backwards, +x = 0 to sync from start. + + +PPWIZARD *ppwiz.vim* *ppwiz-syntax* + +PPWizard is a preprocessor for HTML and OS/2 INF files + +This syntax file has the options: + +- ppwiz_highlight_defs : determines highlighting mode for PPWizard's + definitions. Possible values are + + ppwiz_highlight_defs = 1 : PPWizard #define statements retain the + colors of their contents (e. g. PPWizard macros and variables) + + ppwiz_highlight_defs = 2 : preprocessor #define and #evaluate + statements are shown in a single color with the exception of line + continuation symbols + + The default setting for ppwiz_highlight_defs is 1. + +- ppwiz_with_html : If the value is 1 (the default), highlight literal + HTML code; if 0, treat HTML code like ordinary text. + + +PHTML *phtml.vim* *phtml-syntax* + +There are two options for the phtml syntax highlighting. + +If you like SQL syntax highligthing inside Strings, use this: > + + :let phtml_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "phtml_minlines" to the value you desire. Example: > + + :let phtml_minlines = 200 + + +POSTSCRIPT *postscr.vim* *postscr-syntax* + +There are several options when it comes to highlighting PostScript. + +First which version of the PostScript language to highlight. There are +currently three defined language versions, or levels. Level 1 is the original +and base version, and includes all extensions prior to the release of level 2. +Level 2 is the most common version around, and includes its own set of +extensions prior to the release of level 3. Level 3 is currently the highest +level supported. You select which level of the PostScript language you want +highlighted by defining the postscr_level variable as follows: > + + :let postscr_level=2 + +If this variable is not defined it defaults to 2 (level 2) since this is +the most prevalent version currently. + +Note, not all PS interpreters will support all language features for a +particular language level. In particular the %!PS-Adobe-3.0 at the start of +PS files does NOT mean the PostScript present is level 3 PostScript! + +If you are working with Display PostScript, you can include highlighting of +Display PS language features by defining the postscr_display variable as +follows: > + + :let postscr_display=1 + +If you are working with Ghostscript, you can include highlighting of +Ghostscript specific language features by defining the variable +postscr_ghostscript as follows: > + + :let postscr_ghostscript=1 + +PostScript is a large language, with many predefined elements. While it +useful to have all these elements highlighted, on slower machines this can +cause Vim to slow down. In an attempt to be machine friendly font names and +character encodings are not highlighted by default. Unless you are working +explicitly with either of these this should be ok. If you want them to be +highlighted you should set one or both of the following variables: > + + :let postscr_fonts=1 + :let postscr_encodings=1 + +There is a stylistic option to the highlighting of and, or, and not. In +PostScript the function of these operators depends on the types of their +operands - if the operands are booleans then they are the logical operators, +if they are integers then they are binary operators. As binary and logical +operators can be highlighted differently they have to be highlighted one way +or the other. By default they are treated as logical operators. They can be +highlighted as binary operators by defining the variable +postscr_andornot_binary as follows: > + + :let postscr_andornot_binary=1 +< + + *ptcap.vim* +PRINTCAP + TERMCAP *ptcap-syntax* *termcap-syntax* *printcap-syntax* + +This syntax file applies to the printcap and termcap databases. + +In order for Vim to recognize printcap/termcap files that do not match +the patterns *printcap*, or *termcap*, you must put additional patterns +appropriate to your system in your |myfiletypefile| file. For these +patterns, you must set the variable "b:ptcap_type" to either "print" or +"term", and then the 'filetype' option to ptcap. + +For example, to make Vim identify all files in /etc/termcaps/ as termcap +files, add the following: > + + :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" | + \ set filetype=ptcap + +If you notice highlighting errors while scrolling backwards, which +are fixed when redrawing with CTRL-L, try setting the "ptcap_minlines" +internal variable to a larger number: + + let ptcap_minlines = 50 + +(The default is 20 lines.) + + +PROGRESS *progress.vim* *progress-syntax* + +Files matching "*.w" could be Progress or cweb. If the automatic detection +doesn't work for you, or you don't edit cweb at all, use this in your +startup vimrc: > + :let filetype_w = "progress" +The same happens for "*.i", which could be assembly, and "*.p", which could be +Pascal. Use this if you don't use assembly and Pascal: > + :let filetype_i = "progress" + :let filetype_p = "progress" + + +PYTHON *python.vim* *python-syntax* + +There are four options to control Python syntax highlighting. + +For highlighted numbers: > + :let python_highlight_numbers = 1 + +For highlighted builtin functions: > + :let python_highlight_builtins = 1 + +For highlighted standard exceptions: > + :let python_highlight_exceptions = 1 + +If you want all possible Python highlighting (the same as setting the +preceding three options): > + :let python_highlight_all = 1 + + +REXX *rexx.vim* *rexx-syntax* + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable +to a larger number: > + :let rexx_minlines = 50 +This will make the syntax synchronization start 50 lines before the first +displayed line. The default value is 10. The disadvantage of using a larger +number is that redrawing can become slow. + + +RUBY *ruby.vim* *ruby-syntax* + +There are a few options to the Ruby syntax highlighting. + +By default, the "end" keyword is colorized according to the opening statement +of the block it closes. While useful, this feature can be expensive: if you +experience slow redrawing (or you are on a terminal with poor color support) +you may want to turn it off by defining the "ruby_no_expensive" variable: > + :let ruby_no_expensive = 1 +In this case the same color will be used for all control keywords. + +If you do want this feature enabled, but notice highlighting errors while +scrolling backwards, which are fixed when redrawing with CTRL-L, try setting +the "ruby_minlines" variable to a value larger than 50: > + :let ruby_minlines = 100 +Ideally, this value should be a number of lines large enough to embrace your +largest class or module. + +Finally, if you do not like to see too many color items around, you can define +"ruby_no_identifiers": > + :let ruby_no_identifiers = 1 +This will prevent highlighting of special identifiers like "ConstantName", +"$global_var", "@instace_var", "| iterator |", and ":symbol". + + +SDL *sdl.vim* *sdl-syntax* + +The SDL highlighting probably misses a few keywords, but SDL has so many +of them it's almost impossibly to cope. + +The new standard, SDL-2000, specifies that all identifiers are +case-sensitive (which was not so before), and that all keywords can be +used either completely lowercase or completely uppercase. To have the +highlighting reflect this, you can set the following variable: > + :let sdl_2000=1 + +This also sets many new keywords. If you want to disable the old +keywords, which is probably a good idea, use: > + :let SDL_no_96=1 + + +The indentation is probably also incomplete, but right now I am very +satisfied with it for my own projects. + +The last thing is a little PO-editing helper. It adds a couple of menu +entries. Though it doesn't do much, I find it extremely helpful for +translating PO files. I just won't use Emacs, you know. +(訳注:これは不明。別の形式(PO)についての記述だと思われる) + + +SED *sed.vim* *sed-syntax* + +To make tabs stand out from regular blanks (accomplished by using Todo +highlighting on the tabs), define "highlight_sedtabs" by putting > + + :let highlight_sedtabs = 1 + +in the vimrc file. (This special highlighting only applies for tabs +inside search patterns, replacement texts, addresses or text included +by an Append/Change/Insert command.) If you enable this option, it is +also a good idea to set the tab width to one character; by doing that, +you can easily count the number of tabs in a string. + +Bugs: + + The transform command (y) is treated exactly like the substitute + command. This means that, as far as this syntax file is concerned, + transform accepts the same flags as substitute, which is wrong. + (Transform accepts no flags.) I tolerate this bug because the + involved commands need very complex treatment (95 patterns, one for + each plausible pattern delimiter). + + +SGML *sgml.vim* *sgml-syntax* + +The coloring scheme for tags in the SGML file works as follows. + +The <> of opening tags are colored differently than the </> of a closing tag. +This is on purpose! For opening tags the 'Function' color is used, while for +closing tags the 'Type' color is used (See syntax.vim to check how those are +defined for you) + +Known tag names are colored the same way as statements in C. Unknown tag +names are not colored which makes it easy to spot errors. + +Note that the same is true for argument (or attribute) names. Known attribute +names are colored differently than unknown ones. + +Some SGML tags are used to change the rendering of text. The following tags +are recognized by the sgml.vim syntax coloring file and change the way normal +text is shown: <varname> <emphasis> <command> <function> <literal> +<replaceable> <ulink> and <link>. + +If you want to change how such text is rendered, you must redefine the +following syntax groups: + + - sgmlBold + - sgmlBoldItalic + - sgmlUnderline + - sgmlItalic + - sgmlLink for links + +To make this redefinition work you must redefine them all and define the +following variable in your vimrc (this is due to the order in which the files +are read during initialization) > + let sgml_my_rendering=1 + +You can also disable this rendering by adding the following line to your +vimrc file: > + let sgml_no_rendering=1 + +(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>) + + +SH *sh.vim* *sh-syntax* + +This covers the "normal" Unix (Borne) sh, bash and the korn shell. + +Vim attempts to determine which shell type is in use by specifying that +various filenames are of specific types: + + ksh : .kshrc* *.ksh + bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash + +If neither of these cases pertain, then the first line of the file is examined +(ex. /bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, +then that shelltype is used. However some files (ex. .profile) are known to +be shell files but the type is not apparent. One may specify buffer specific +variables prior to sourcing the <sh.vim> syntax file (b:is_kornshell, +b:is_bash, or b:is_sh) so that the associated shell type will be used. One +may also specify a global default by instantiating one of the following +three variables: + + ksh : is_kornshell + bash: is_bash + sh : is_sh + +One may also specify that what looks like the "sh" shell is actually +to be interpreted as a bash shell by setting 'bash_is_sh'. It is +best to set any of these global variables in your '.vimrc' file. + +To choose between the two ways to treat single-quotes inside a pair of +double-quotes, I have introduced a Vim variable "highlight_balanced_quotes". +By default (ie by not declaring this variable) single quotes can be used +inside double quotes, and are not highlighted. If you prefer balanced single +quotes as I do you just make the statement in your .vimrc file: > + :let highlight_balanced_quotes = 1 + +Similarly I have introduced another vim variable "highlight_function_name" to +be used to enable/disable highlighting of the function-name in function +declarations. The default is not to highlight the function name. If you want +to highlight function names, include this in your .vimrc file: > + :let highlight_function_name = 1 + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "sh_minlines" internal variable +to a larger number: > + :let sh_minlines = 200 +This will make the syntax synchronization start 200 lines before the first +displayed line. The default value is 100. The disadvantage of using a larger +number is that redrawing can become slow. + +If you don't have much to synchronize on, displaying can be very slow. To +reduce this, the "sh_maxlines" internal variable can be set: > + :let sh_maxlines = 100 +The default is to use the double of "sh_minlines". Set it to a smaller number +to speed up displaying. The disadvantage is that highlight errors may appear. + + +SPEEDUP (AspenTech plant simulator) *spup.vim* *spup-syntax* + +The Speedup syntax file has some options: + +- strict_subsections : If this variable is defined, only keywords for + sections and subsections will be highlighted as statements but not + other keywords (like WITHIN in the OPERATION section). + +- highlight_types : Definition of this variable causes stream types + like temperature or pressure to be highlighted as Type, not as a + plain Identifier. Included are the types that are usually found in + the DECLARE section; if you defined own types, you have to include + them in the syntax file. + +- oneline_comments : this value ranges from 1 to 3 and determines the + highlighting of # style comments. + + oneline_comments = 1 : allow normal Speedup code after an even + number of #s. + + oneline_comments = 2 : show code starting with the second # as + error. This is the default setting. + + oneline_comments = 3 : show the whole line as error if it contains + more than one #. + +Since especially OPERATION sections tend to become very large due to +PRESETting variables, syncing may be critical. If your computer is +fast enough, you can increase minlines and/or maxlines near the end of +the syntax file. + + +TEX *tex.vim* *tex-syntax* + +The tex highlighting supports TeX, LaTeX, and some AmsTeX. The +highlighting supports three primary zones: normal, texZone, and texMathZone. +Although a considerable effort has been made to have these zones terminate +properly, zones delineated by $..$ and $$..$$ cannot be synchronized as +there's no difference between start and end patterns. Consequently, a +special "TeX comment" has been provided > + %stopzone +which will forcibly terminate the highlighting of either a texZone or a +texMathZone. + +If you have a slow computer, you may wish to reduce the values for > + :syn sync maxlines=200 + :syn sync minlines=50 +(especially the latter). If your computer is fast, you may wish to +increase them. This primarily affects synchronizing (ie. just what group, +if any, is the text at the top of the screen supposed to be in?). + +The <tex.vim> supports lexical error checking of various sorts. Thus, +although the error checking is ofttimes very useful, it can indicate +errors where none actually are. If this proves to be a problem for you, +you may put in your <.vimrc> the following statement: > + let tex_no_error=1 +and all error checking by <tex.vim> will be suppressed. + + +TF *tf.vim* *tf-syntax* + +There is one option for the tf syntax highlighting. + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "tf_minlines" to the value you desire. Example: > + + :let tf_minlines = your choice + + +XF86CONFIG *xf86conf.vim* *xf86conf-syntax* + +The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both +variants are supported. Automatic detection is used, but is far from perfect. +You may need to specify the version manually. Set the variable +xf86conf_xfree86_version to 3 or 4 according to your XFree86 version in +your .vimrc. Example: > + :let xf86conf_xfree86_version=3 +When using a mix of versions, set the b:xf86conf_xfree86_version variable. + +Note that spaces and underscores in option names are not supported. Use +"SyncOnGreen" instead of "__s yn con gr_e_e_n" if you want the option name +highlighted. + + +XML *xml.vim* *xml-syntax* + +Xml namespaces are highlighted by default. This can be inhibited by +setting a global variable: > + + :let g:xml_namespace_transparent=1 +< + *xml-folding* +The xml syntax file provides syntax |folding| (see |:syn-fold|) between +start and end tags. This can be turned on by > + + :set foldmethod=syntax + + +X Pixmaps (XPM) *xpm.vim* *xpm-syntax* + +xpm.vim creates its syntax items dynamically based upon the contents of the +XPM file. Thus if you make changes e.g. in the color specification strings, +you have to source it again e.g. with ":set syn=xpm". + +To copy a pixel with one of the colors, yank a "pixel" with "yl" and insert it +somewhere else with "P". + +Do you want to draw with the mouse? Try the following: > + :function! GetPixel() + : let c = getline(line("."))[col(".") - 1] + : echo c + : exe "noremap <LeftMouse> <LeftMouse>r".c + : exe "noremap <LeftDrag> <LeftMouse>r".c + :endfunction + :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR> + :set guicursor=n:hor20 " to see the color beneath the cursor +This turns the right button into a pipette and the left button into a pen. +It will work with XPM files that have one character per pixel only and you +must not click outside of the pixel strings, but feel free to improve it. + +It will look much better with a font in a quadratic cell size, e.g. for X: > + :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* + +============================================================================== +5. Defining a syntax *:syn-define* *E410* + +Vim understands three types of syntax items: + +1. Keyword. + It can only contain keyword characters, according to the 'iskeyword' + option. It cannot contain other syntax items. It will only match with a + complete word (there are no keyword characters before or after the match). + The keyword "if" would match in "if(a=b)", but not in "ifdef x", because + "(" is not a keyword character and "d" is. + +2. Match. + This is a match with a single regexp pattern. + +3. Region. + This starts at a match of the "start" regexp pattern and ends with a match + with the "end" regexp pattern. Any other text can appear in between. A + "skip" regexp pattern can be used to avoid matching the "end" pattern. + +Several syntax ITEMs can be put into one syntax GROUP. For a syntax group +you can give highlighting attributes. For example, you could have an item +to define a "/* .. */" comment and another one that defines a "// .." comment, +and put them both in the "Comment" group. You can then specify that a +"Comment" will be in bold font and have a blue color. You are free to make +one highlight group for one syntax item, or put all items into one group. +This depends on how you want to specify your highlighting attributes. Putting +each item in its own group results in having to specify the highlighting +for a lot of groups. + +Note that a syntax group and a highlight group are similar. For a highlight +group you will have given highlight attributes. These attributes will be used +for the syntax group with the same name. + +In case more than one item matches at the same position, the one that was +defined LAST wins. Thus you can override previously defined syntax items by +using an item that matches the same text. But a keyword always goes before a +match or region. And a keyword with matching case always goes before a +keyword with ignoring case. + + +DEFINING CASE *:syn-case* *E390* + +:sy[ntax] case [match|ignore] + This defines if the following ":syntax" commands will work with + matching case, when using "match", or with ignoring case, when using + "ignore". Note that any items before this are not affected, and all + items until the next ":syntax case" command are affected. + + +DEFINING KEYWORDS *:syn-keyword* + +:sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] + + This defines a number of keywords. + + {group-name} Is a syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + {keyword} .. Is a list of keywords which are part of this group. + + Example: > + :syntax keyword Type int long char +< + The {options} can be given anywhere in the line. They will apply to + all keywords given, also for options that come after a keyword. + These examples do exactly the same: > + :syntax keyword Type contained int long char + :syntax keyword Type int long contained char + :syntax keyword Type int long char contained +< + When you have a keyword with an optional tail, like Ex commands in + Vim, you can put the optional characters inside [], to define all the + variations at once: > + :syntax keyword VimCommand ab[breviate] n[ext] +< + Don't forget that a keyword can only be recognized if all the + characters are included in the 'iskeyword' option. If one character + isn't, the keyword will never be recognized. + Multi-byte characters can also be used. These do not have to be in + 'iskeyword'. + + A keyword always has higher priority than a match or region, the + keyword is used if more than one item matches. Keywords do not nest + and a keyword can't contain anything else. + + Note that when you have a keyword that is the same as an option (even + one that isn't allowed here), you can not use it. Use a match + instead. + + The maximum length of a keyword is 80 characters. + + The same keyword can be defined multiple times, when its containment + differs. For example, you can define the keyword once not contained + and use one highlight group, and once contained, and use a different + highlight group. Example: > + :syn keyword vimCommand tag + :syn keyword vimSetting contained tag +< When finding "tag" outside of any syntax item, the "vimCommand" + highlight group is used. When finding "tag" in a syntax item that + contains "vimSetting", the "vimSetting" group is used. + + +DEFINING MATCHES *:syn-match* + +:sy[ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}] + + This defines one match. + + {group-name} A syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + [excludenl] Don't make a pattern with the end-of-line "$" + extend a containing match or region. Must be + given before the pattern. |:syn-excludenl| + {pattern} The search pattern that defines the match. + See |:syn-pattern| below. + Note that the pattern may match more than one + line, which makes the match depend on where + Vim starts searching for the pattern. You + need to make sure syncing takes care of this. + + Example (match a character constant): > + :syntax match Character /'.'/hs=s+1,he=e-1 +< + +DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* + *E398* *E399* +:sy[ntax] region {group-name} [{options}] + [matchgroup={group_name}] + [keepend] + [extend] + [excludenl] + start={start_pattern} .. + [skip={skip_pattern}] + end={end_pattern} .. + [{options}] + + This defines one region. It may span several lines. + + {group-name} A syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + [matchgroup={group-name}] The syntax group to use for the following + start or end pattern matches only. Not used + for the text in between the matched start and + end patterns. Use NONE to reset to not using + a different group for the start or end match. + See |:syn-matchgroup|. + keepend Don't allow contained matches to go past a + match with the end pattern. See + |:syn-keepend|. + extend Override a "keepend" for an item this region + is contained in. See |:syn-extend|. + excludenl Don't make a pattern with the end-of-line "$" + extend a containing match or item. Only + useful for end patterns. Must be given before + the patterns it applies to. |:syn-excludenl| + start={start_pattern} The search pattern that defines the start of + the region. See |:syn-pattern| below. + skip={skip_pattern} The search pattern that defines text inside + the region where not to look for the end + pattern. See |:syn-pattern| below. + end={end_pattern} The search pattern that defines the end of + the region. See |:syn-pattern| below. + + Example: > + :syntax region String start=+"+ skip=+\\"+ end=+"+ +< + The start/skip/end patterns and the options can be given in any order. + There can be zero or one skip pattern. There must be one or more + start and end patterns. This means that you can omit the skip + pattern, but you must give at least one start and one end pattern. It + is allowed to have white space before and after the equal sign + (although it mostly looks better without white space). + + When more than one start pattern is given, a match with one of these + is sufficient. This means there is an OR relation between the start + patterns. The last one that matches is used. The same is true for + the end patterns. + + The search for the end pattern starts right after the start pattern. + Offsets are not used for this. This implies that the match for the + end pattern will never overlap with the start pattern. + + The skip and end pattern can match across line breaks, but since the + search for the pattern can start in any line it often does not do what + you want. The skip pattern doesn't avoid a match of an end pattern in + the next line. Use single-line patterns to avoid trouble. + + Note: The decision to start a region is only based on a matching start + pattern. There is no check for a matching end pattern. This does NOT + work: > + :syn region First start="(" end=":" + :syn region Second start="(" end=";" +< The Second always matches before the First (last defined pattern has + higher priority). The Second region then continues until the next + ';', no matter if there is a ':' before it. Using a match does work: > + :syn match First "(\_.\{-}:" + :syn match Second "(\_.\{-};" +< This pattern matches any character or line break with "\_." and + repeats that with "\{-}" (repeat as few as possible). + + *:syn-keepend* + By default, a contained match can obscure a match for the end pattern. + This is useful for nesting. For example, a region that starts with + "{" and ends with "}", can contain another region. An encountered "}" + will then end the contained region, but not the outer region: + { starts outer "{}" region + { starts contained "{}" region + } ends contained "{}" region + } ends outer "{} region + If you don't want this, the "keepend" argument will make the matching + of an end pattern of the outer region also end any contained item. + This makes it impossible to nest the same region, but allows for + contained items to highlight parts of the end pattern, without causing + that to skip the match with the end pattern. Example: > + :syn match VimComment +"[^"]\+$+ + :syn region VimCommand start="set" end="$" contains=VimComment keepend +< The "keepend" makes the VimCommand always end at the end of the line, + even though the contained VimComment includes a match with the <EOL>. + + When "keepend" is not used, a match with an end pattern is retried + after each contained match. When "keepend" is included, the first + encountered match with an end pattern is used, truncating any + contained matches. + *:syn-extend* + The "keepend" behavior can be changed by using the "extend" argument. + When an item with "extend" is contained in an item that uses + "keepend", the "keepend" is ignored and the containing region will be + extended. + This can be used to have some contained items extend a region while + others don't. Example: > + + :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript + :syn match htmlItem +<[^>]*>+ contained + :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend + +< Here the htmlItem item does not make the htmlRef item continue + further, it is only used to highlight the <> items. The htmlScript + item does extend the htmlRef item. + + Another example: > + :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend +< This defines a region with "keepend", so that its end cannot be + changed by contained items, like when the "</a>" is matched to + highlight it differently. But when the xmlFold region is nested (it + includes itself), the "extend" applies, so that the "</a>" of a nested + region only ends that region, and not the one it is contained in. + + *:syn-excludenl* + When a pattern for a match or end pattern of a region includes a '$' + to match the end-of-line, it will make a region item that it is + contained in continue on the next line. For example, a match with + "\\$" (backslash at the end of the line) can make a region continue + that would normally stop at the end of the line. This is the default + behavior. If this is not wanted, there are two ways to avoid it: + 1. Use "keepend" for the containing item. This will keep all + contained matches from extending the match or region. It can be + used when all contained items must not extend the containing item. + 2. Use "excludenl" in the contained item. This will keep that match + from extending the containing match or region. It can be used if + only some contained items must not extend the containing item. + "excludenl" must be given before the pattern it applies to. + + *:syn-matchgroup* + "matchgroup" can be used to highlight the start and/or end pattern + differently than the body of the region. Example: > + :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ +< This will highlight the quotes with the "Quote" group, and the text in + between with the "String" group. + The "matchgroup" is used for all start and end patterns that follow, + until the next "matchgroup". Use "matchgroup=NONE" to go back to not + using a matchgroup. + + In a start or end pattern that is highlighted with "matchgroup" the + contained items of the region are not used. This can be used to avoid + that a contained item matches in the start or end pattern match. When + using "transparent", this does not apply to a start or end pattern + match that is highlighted with "matchgroup". + + Here is an example, which highlights three levels of parentheses in + different colors: > + :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2 + :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained + :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained + :hi par1 ctermfg=red guifg=red + :hi par2 ctermfg=blue guifg=blue + :hi par3 ctermfg=darkgreen guifg=darkgreen + +============================================================================== +6. :syntax arguments *:syn-arguments* + +The :syntax commands that define syntax items take a number of arguments. +The common ones are explained here. The arguments may be given in any order +and may be mixed with patterns. + +Not all commands accept all arguments. This table shows which arguments +can not be used for all commands: + *E395* *E396* + contains oneline fold display extend~ +:syntax keyword - - - - - +:syntax match yes - yes yes yes +:syntax region yes yes yes yes yes + +These arguments can be used for all three commands: + contained + containedin + nextgroup + transparent + skipwhite + skipnl + skipempty + + +contained *:syn-contained* + +When the "contained" argument is given, this item will not be recognized at +the top level, but only when it is mentioned in the "contains" field of +another match. Example: > + :syntax keyword Todo TODO contained + :syntax match Comment "//.*" contains=Todo + + +display *:syn-display* + +If the "display" argument is given, this item will be skipped when the +detected highlighting will not be displayed. This will speed up highlighting, +by skipping this item when only finding the syntax state for the text that is +to be dislayed. + +Generally, you can use "display" for match and region items that meet these +conditions: +- The item does not continue past the end of a line. Example for C: A region + for a "/*" comment can't contain "display", because it continues on the next + line. +- The item does not contain items that continue past the end of the line or + make it continue on the next line. +- The item does not change the size of any item it is contained in. Example + for C: A match with "\\$" in a preprocessor match can't have "display", + because it may make that preprocessor match shorter. +- The item does not allow other items to match that didn't match otherwise, + and that item may extend the match too far. Example for C: A match for a + "//" comment can't use "display", because a "/*" inside that comment would + match then and start a comment which extends past the end of the line. + +Examples, for the C language, where "display" can be used: +- match with a number +- match with a label + + +transparent *:syn-transparent* + +If the "transparent" argument is given, this item will not be highlighted +itself, but will take the highlighting of the item it is contained in. This +is useful for syntax items that don't need any highlighting but are used +only to skip over a part of the text. + +The "contains=" argument is also inherited from the item it is contained in, +unless a "contains" argument is given for the transparent item itself. To +avoid that unwanted items are contained, use "contains=NONE". Example, which +highlights words in strings, but makes an exception for "vim": > + :syn match myString /'[^']*'/ contains=myWord,myVim + :syn match myWord /\<[a-z]*\>/ contained + :syn match myVim /\<vim\>/ transparent contained contains=NONE + :hi link myString String + :hi link myWord Comment +Since the "myVim" match comes after "myWord" it is the preferred match (last +match in the same position overrules an earlier one). The "transparent" +argument makes the "myVim" match use the same highlighting as "myString". But +it does not contain anything. If the "contains=NONE" argument would be left +out, then "myVim" would use the contains argument from myString and allow +"myWord" to be contained, which will be highlighted as a Constant. This +happens because a contained match doesn't match inside itself in the same +position, thus the "myVim" match doesn't overrule the "myWord" match here. + +When you look at the colored text, it is like looking at layers of contained +items. The contained item is on top of the item it is contained in, thus you +see the contained item. When a contained item is transparent, you can look +through, thus you see the item it is contained in. In a picture: + + look from here + + | | | | | | + V V V V V V + + xxxx yyy more contained items + .................... contained item (transparent) + ============================= first item + +The 'x', 'y' and '=' represent a highlighted syntax item. The '.' represent a +transparent group. + +What you see is: + + =======xxxx=======yyy======== + +Thus you look through the transparent "....". + + +oneline *:syn-oneline* + +The "oneline" argument indicates that the region does not cross a line +boundary. It must match completely in the current line. However, when the +region has a contained item that does cross a line boundary, it continues on +the next line anyway. A contained item can be used to recognize a line +continuation pattern. + +When the start pattern includes a "\n" to match an end-of-line, the end +pattern must found in the same line as where the start pattern ends. The end +pattern may also include an end-of-line. Thus the "oneline" argument +means that the end of the start pattern and the start of the end pattern must +be within one line. This can't be changed by a skip pattern that matches a +line break. + + +fold *:syn-fold* + +The "fold" argument makes the fold level increased by one for this item. +Example: > + :syn region myFold start="{" end="}" transparent fold + :syn sync fromstart + :set foldmethod=syntax +This will make each {} block form one fold. + +The fold will start on the line where the item starts, and end where the item +ends. If the start and end are within the same line, there is no fold. +The 'foldnestmax' option limits the nesting of syntax folds. +{not available when Vim was compiled without |+folding| feature} + + + *:syn-contains* *E405* *E406* *E407* *E408* *E409* +contains={groupname},.. + +The "contains" argument is followed by a list of syntax group names. These +groups will be allowed to begin inside the item (they may extend past the +containing group's end). This allows for recursive nesting of matches and +regions. If there is no "contains" argument, no groups will be contained in +this item. The group names do not need to be defined before they can be used +here. + +contains=ALL + If the only item in the contains list is "ALL", then all + groups will be accepted inside the item. + +contains=ALLBUT,{group-name},.. + If the first item in the contains list is "ALLBUT", then all + groups will be accepted inside the item, except the ones that + are listed. Example: > + :syntax region Block start="{" end="}" ... contains=ALLBUT,Function + +contains=TOP + If the first item in the contains list is "TOP", then all + groups will be accepted that don't have the "contained" + argument. +contains=TOP,{group-name},.. + Like "TOP", but excluding the groups that are listed. + +contains=CONTAINED + If the first item in the contains list is "CONTAINED", then + all groups will be accepted that have the "contained" + argument. +contains=CONTAINED,{group-name},.. + Like "CONTAINED", but excluding the groups that are + listed. + + +The {group-name} in the "contains" list can be a pattern. All group names +that match the pattern will be included (or excluded, if "ALLBUT" is used). +The pattern cannot contain white space or a ','. Example: > + ... contains=Comment.*,Keyw[0-3] +The matching will be done at moment the syntax command is executed. Groups +that are defined later will not be matched. Also, if the current syntax +command defines a new group, it is not matched. Be careful: When putting +syntax commands in a file you can't rely on groups NOT being defined, because +the file may have been sourced before, and ":syn clear" doesn't remove the +group names. + +The contained groups will also match in the start and end patterns of a +region. If this is not wanted, the "matchgroup" argument can be used +|:syn-matchgroup|. The "ms=" and "me=" offsets can be used to change the +region where contained items do match. Note that this may also limit the +area that is highlighted + + +containedin={groupname}... *:syn-containedin* + +The "containedin" argument is followed by a list of syntax group names. The +item will be allowed to begin inside these groups. This works as if the +containing item has a "contains=" argument that includes this item. + +The {groupname}... can be used just like for "contains", as explained above. + +This is useful when adding a syntax item afterwards. An item can be told to +be included inside an already existing item, without changing the definition +of that item. For example, to highlight a word in a C comment after loading +the C syntax: > + :syn keyword myword HELP containedin=cComment contained +Note that "contained" is also used, to avoid that the item matches at the top +level. + +Matches for "containedin" are added to the other places where the item can +appear. A "contains" argument may also be added as usual. Don't forget that +keywords never contain another item, thus adding them to "containedin" won't +work. + + +nextgroup={groupname},.. *:syn-nextgroup* + +The "nextgroup" argument is followed by a list of syntax group names, +separated by commas (just like with "contains", so you can also use patterns). + +If the "nextgroup" argument is given, the mentioned syntax groups will be +tried for a match, after the match or region ends. If none of the groups have +a match, highlighting continues normally. If there is a match, this group +will be used, even when it is not mentioned in the "contains" field of the +current group. This is like giving the mentioned group priority over all +other groups. Example: > + :syntax match ccFoobar "Foo.\{-}Bar" contains=ccFoo + :syntax match ccFoo "Foo" contained nextgroup=ccFiller + :syntax region ccFiller start="." matchgroup=ccBar end="Bar" contained + +This will highlight "Foo" and "Bar" differently, and only when there is a +"Bar" after "Foo". In the text line below, "f" shows where ccFoo is used for +highlighting, and "bbb" where ccBar is used. > + + Foo asdfasd Bar asdf Foo asdf Bar asdf + fff bbb fff bbb + +Note the use of ".\{-}" to skip as little as possible until the next Bar. +when ".*" would be used, the "asdf" in between "Bar" and "Foo" would be +highlighted according to the "ccFoobar" group, because the ccFooBar match +would include the first "Foo" and the last "Bar" in the line (see |pattern|). + + +skipwhite *:syn-skipwhite* +skipnl *:syn-skipnl* +skipempty *:syn-skipempty* + +These arguments are only used in combination with "nextgroup". They can be +used to allow the next group to match after skipping some text: + skipwhite skip over space and Tab characters + skipnl skip over the end of a line + skipempty skip over empty lines (implies a "skipnl") + +When "skipwhite" is present, the white space is only skipped if there is no +next group that matches the white space. + +When "skipnl" is present, the match with nextgroup may be found in the next +line. This only happens when the current item ends at the end of the current +line! When "skipnl" is not present, the nextgroup will only be found after +the current item in the same line. + +When skipping text while looking for a next group, the matches for other +groups are ignored. Only when no next group matches, other items are tried +for a match again. This means that matching a next group and skipping white +space and <EOL>s has a higher priority than other items. + +Example: > + :syn match ifstart "if.*" nextgroup=ifline skipwhite skipempty + :syn match ifline "endif" contained + :syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained +Note that the last match, which matches any non-white text, is put last, +otherwise the "endif" of the indent would never match, because the "[^ \t].*" +would match first. +Note that this example doesn't work for nested "if"s. You need to add +"contains" arguments to make that work (omitted for simplicity of the +example). + +============================================================================== +7. Syntax patterns *:syn-pattern* *E401* *E402* + +In the syntax commands, a pattern must be surrounded by two identical +characters. This is like it works for the ":s" command. The most common to +use is the double quote. But if the pattern contains a double quote, you can +use another character that is not used in the pattern. Examples: > + :syntax region Comment start="/\*" end="\*/" + :syntax region String start=+"+ end=+"+ skip=+\\"+ + +See |pattern| for the explanation of what a pattern is. Syntax patterns are +always interpreted like the 'magic' options is set, no matter what the actual +value of 'magic' is. And the patterns are interpreted like the 'l' flag is +not included in 'cpoptions'. This was done to make syntax files portable and +independent of 'compatible' and 'magic' settings. + +Try to avoid patterns that can match an empty string, such as "[a-z]*". +This slows down the highlighting a lot, because it matches everywhere. + + *:syn-pattern-offset* +The pattern can be followed by a character offset. This can be used to +change the highlighted part, and to change the text area included in the +match or region (which only matters when trying to match other items). Both +are relative to the matched pattern. The character offset for a skip +pattern can be used to tell where to continue looking for an end pattern. + +The offset takes the form of "{what}={offset}" +The {what} can be one of seven strings: + +ms Match Start offset for the start of the matched text +me Match End offset for the end of the matched text +hs Highlight Start offset for where the highlighting starts +he Highlight End offset for where the highlighting ends +rs Region Start offset for where the body of a region starts +re Region End offset for where the body of a region ends +lc Leading Context offset past "leading context" of pattern + +The {offset} can be: + +s start of the matched pattern +s+{nr} start of the matched pattern plus {nr} chars to the right +s-{nr} start of the matched pattern plus {nr} chars to the left +e end of the matched pattern +e+{nr} end of the matched pattern plus {nr} chars to the right +e-{nr} end of the matched pattern plus {nr} chars to the left +{nr} (for "lc" only): start matching {nr} chars to the left + +Examples: "ms=s+1", "hs=e-2", "lc=3". + +Although all offsets are accepted after any pattern, they are not always +meaningful. This table shows which offsets are actually used: + + ms me hs he rs re lc ~ +match item yes yes yes yes - - yes +region item start yes - yes - yes - yes +region item skip - yes - - - - yes +region item end - yes - yes - yes yes + +Offsets can be concatenated, with a ',' in between. Example: > + :syn match String /"[^"]*"/hs=s+1,he=e-1 +< + some "string" text + ^^^^^^ highlighted + +Notes: +- There must be no white space between the pattern and the character + offset(s). +- The highlighted area will never be outside of the matched text. +- A negative offset for an end pattern may not always work, because the end + pattern may be detected when the highlighting should already have stopped. +- The start of a match cannot be in a line other than where the pattern + matched. This doesn't work: "a\nb"ms=e. You can make the highlighting + start in another line, this does work: "a\nb"hs=e. + +Example (match a comment but don't highlight the /* and */): > + :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1 +< + /* this is a comment */ + ^^^^^^^^^^^^^^^^^^^ highlighted + +A more complicated Example: > + :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1 +< + abcfoostringbarabc + mmmmmmmmmmm match + ssrrrreee highlight start/region/end ("Foo", "Exa" and "Bar") + +Leading context *:syn-lc* *:syn-leading* *:syn-context* + +Note: This is an obsolete feature, only included for backwards compatibility +with previous Vim versions. It's now recommended to use the |/\@<=| construct +in the pattern. + +The "lc" offset specifies leading context -- a part of the pattern that must +be present, but is not considered part of the match. An offset of "lc=n" will +cause Vim to step back n columns before attempting the pattern match, allowing +characters which have already been matched in previous patterns to also be +used as leading context for this match. This can be used, for instance, to +specify that an "escaping" character must not precede the match: > + + :syn match ZNoBackslash "[^\\]z"ms=s+1 + :syn match WNoBackslash "[^\\]w"lc=1 + :syn match Underline "_\+" +< + ___zzzz ___wwww + ^^^ ^^^ matches Underline + ^ ^ matches ZNoBackslash + ^^^^ matches WNoBackslash + +The "ms" offset is automatically set to the same value as the "lc" offset, +unless you set "ms" explicitly. + + +Multi-line patterns *:syn-multi-line* + +The patterns can include "\n" to match an end-of-line. Mostly this works as +expected, but there are a few exceptions. + +When using a start pattern with an offset, the start of the match is not +allowed to start in a following line. The highlighting can start in a +following line though. + +The skip pattern can include the "\n", but the search for an end pattern will +continue in the first character of the next line, also when that character is +matched by the skip pattern. This is because redrawing may start in any line +halfway a region and there is no check if the skip pattern started in a +previous line. For example, if the skip pattern is "a\nb" and an end pattern +is "b", the end pattern does match in the second line of this: > + x x a + b x x +Generally this means that the skip pattern should not match any characters +after the "\n". + + +External matches *:syn-ext-match* + +These extra regular expression items are available in region patterns: + + */\z(* */\z(\)* *E50* *E52* + \z(\) Marks the sub-expression as "external", meaning that it is can + be accessed from another pattern match. Currently only usable + in defining a syntax region start pattern. + + \z1 ... \z9 */\z1* */\z2* *\z9* *E66* *E67* + Matches the same string that was matched by the corresponding + sub-expression in a previous start pattern match. + +Sometimes the start and end patterns of a region need to share a common +sub-expression. A common example is the "here" document in Perl and many Unix +shells. This effect can be achieved with the "\z" special regular expression +items, which marks a sub-expression as "external", in the sense that it can be +referenced from outside the pattern in which it is defined. The here-document +example, for instance, can be done like this: > + :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" + +As can be seen here, the \z actually does double duty. In the start pattern, +it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it +changes the \1 back-reference into an external reference referring to the +first external sub-expression in the start pattern. External references can +also be used in skip patterns: > + :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" + +Note that normal and external sub-expressions are completely orthogonal and +indexed separately; for instance, if the pattern "\z(..\)\(..\)" is applied +to the string "aabb", then \1 will refer to "bb" and \z1 will refer to "aa". +Note also that external sub-expressions cannot be accessed as back-references +within the same pattern like normal sub-expressions. If you want to use one +sub-expression as both a normal and an external sub-expression, you can nest +the two, as in "\(\z(...\)\)". + +Note that only matches within a single line can be used. Multi-line matches +cannot be referred to. + +============================================================================== +8. Syntax clusters *:syn-cluster* *E400* + +:sy[ntax] cluster {cluster-name} [contains={group-name}..] + [add={group-name}..] + [remove={group-name}..] + +This command allows you to cluster a list of syntax groups together under a +single name. + + contains={group-name}.. + The cluster is set to the specified list of groups. + add={group-name}.. + The specified groups are added to the cluster. + remove={group-name}.. + The specified groups are removed from the cluster. + +A cluster so defined may be referred to in a contains=.., nextgroup=.., add=.. +or remove=.. list with a "@" prefix. You can also use this notation to +implicitly declare a cluster before specifying its contents. + +Example: > + :syntax match Thing "# [^#]\+ #" contains=@ThingMembers + :syntax cluster ThingMembers contains=ThingMember1,ThingMember2 + +As the previous example suggests, modifications to a cluster are effectively +retroactive; the membership of the cluster is checked at the last minute, so +to speak: > + :syntax keyword A aaa + :syntax cluster AandB contains=A + :syntax match Stuff "( aaa bbb )" contains=@AandB + :syntax cluster AandB add=B " now both keywords are matched in Stuff + +This also has implications for nested clusters: > + :syntax keyword A aaa + :syntax keyword B bbb + :syntax cluster SmallGroup contains=B + :syntax cluster BigGroup contains=A,@SmallGroup + :syntax match Stuff "( aaa bbb )" contains=@BigGroup + :syntax cluster BigGroup remove=B " no effect, since B isn't in BigGroup + :syntax cluster SmallGroup remove=B " now bbb isn't matched within Stuff + +============================================================================== +9. Including syntax files *:syn-include* *E397* + +It is often useful for one language's syntax file to include a syntax file for +a related language. Depending on the exact relationship, this can be done in +two different ways: + + - If top-level syntax items in the included syntax file are to be + allowed at the top level in the including syntax, you can simply use + the |:runtime| command: > + + " In cpp.vim: + :runtime! syntax/c.vim + :unlet b:current_syntax + +< - If top-level syntax items in the included syntax file are to be + contained within a region in the including syntax, you can use the + ":syntax include" command: + +:sy[ntax] include [@{grouplist-name}] {file-name} + + All syntax items declared in the included file will have the + "contained" flag added. In addition, if a group list is specified, + all top-level syntax items in the included file will be added to + that list. > + + " In perl.vim: + :syntax include @Pod <sfile>:p:h/pod.vim + :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod +< + When {file-name} is an absolute path (starts with "/", "c:", "$VAR" + or "<sfile>") that file is sourced. When it is a relative path + (e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'. + All matching files are loaded. Using a relative path is + recommended, because it allows a user to replace the included file + with his own version, without replacing the file that does the ":syn + include". + +============================================================================== +10. Synchronizing *:syn-sync* *E403* *E404* + +Vim wants to be able to start redrawing in any position in the document. To +make this possible it needs to know the syntax state at the position where +redrawing starts. + +:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...] + +There are four ways to synchronize: +1. Always parse from the start of the file. + |:syn-sync-first| +2. Based on C-style comments. Vim understands how C-comments work and can + figure out if the current line starts inside or outside a comment. + |:syn-sync-second| +3. Jumping back a certain number of lines and start parsing there. + |:syn-sync-third| +4. Searching backwards in the text for a pattern to sync on. + |:syn-sync-fourth| + + *:syn-sync-maxlines* *:syn-sync-minlines* +For the last three methods, the line range where the parsing can start is +limited by "minlines" and "maxlines". + +If the "minlines={N}" argument is given, the parsing always starts at least +that many lines backwards. This can be used if the parsing may take a few +lines before it's correct, or when it's not possible to use syncing. + +If the "maxlines={N}" argument is given, the number of lines that are searched +for a comment or syncing pattern is restricted to N lines backwards (after +adding "minlines". This is useful if you have few things to sync on and a +slow machine. Example: > + :syntax sync ccomment maxlines=500 +< + *:syn-sync-linebreaks* +When using a pattern that matches multiple lines, a change in one line may +cause a pattern to no longer match in a previous line. This means has to +start above where the change was made. How many lines can be specified with +the "linebreaks" argument. For example, when a pattern may include one line +break use this: > + :syntax sync linebreaks=1 +The result is that redrawing always starts at least one line before where a +change was made. The default value for "linebreaks" is zero. Usually the +value for "minlines" is bigger than "linebreaks". + + +First syncing method: *:syn-sync-first* +> + :syntax sync fromstart + +The file will be parsed from the start. This makes syntax highlighting +accurate, but can be slow for long files. Vim caches previously parsed text, +so that it's only slow when parsing the text for the first time. However, +when making changes some part of the next needs to be parsed again (worst +case: to the end of the file). + +Using "fromstart" is equivalent to using "minlines" with a very large number. + + +Second syncing method: *:syn-sync-second* *:syn-sync-ccomment* + +For the second method, only the "ccomment" argument needs to be given. +Example: > + :syntax sync ccomment + +When Vim finds that the line where displaying starts is inside a C-style +comment, the last region syntax item with the group-name "Comment" will be +used. This requires that there is a region with the group-name "Comment"! +An alternate group name can be specified, for example: > + :syntax sync ccomment javaComment +This means that the last item specified with "syn region javaComment" will be +used for the detected C comment region. This only works properly if that +region does have a start pattern "\/*" and an end pattern "*\/". + +The "maxlines" argument can be used to restrict the search to a number of +lines. The "minlines" argument can be used to at least start a number of +lines back (e.g., for when there is some construct that only takes a few +lines, but it hard to sync on). + +Note: Syncing on a C comment doesn't work properly when strings are used +that cross a line and contain a "*/". Since letting strings cross a line +is a bad programming habit (many compilers give a warning message), and the +chance of a "*/" appearing inside a comment is very small, this restriction +is hardly ever noticed. + + +Third syncing method: *:syn-sync-third* + +For the third method, only the "minlines={N}" argument needs to be given. +Vim will subtract {N} from the line number and start parsing there. This +means {N} extra lines need to be parsed, which makes this method a bit slower. +Example: > + :syntax sync minlines=50 + +"lines" is equivalent to "minlines" (used by older versions). + + +Fourth syncing method: *:syn-sync-fourth* + +The idea is to synchronize on the end of a few specific regions, called a +sync pattern. Only regions can cross lines, so when we find the end of some +region, we might be able to know in which syntax item we are. The search +starts in the line just above the one where redrawing starts. From there +the search continues backwards in the file. + +This works just like the non-syncing syntax items. You can use contained +matches, nextgroup, etc. But there are a few differences: +- Keywords cannot be used. +- The syntax items with the "sync" keyword form a completely separated group + of syntax items. You can't mix syncing groups and non-syncing groups. +- The matching works backwards in the buffer (line by line), instead of + forwards. +- A line continuation pattern can be given. It is used to decide which group + of lines need to be searched like they were one line. This means that the + search for a match with the specified items starts in the first of the + consecutive that contain the continuation pattern. +- When using "nextgroup" or "contains", this only works within one line (or + group of continued lines). +- When using a region, it must start and end in the same line (or group of + continued lines). Otherwise the end is assumed to be at the end of the + line (or group of continued lines). +- When a match with a sync pattern is found, the rest of the line (or group of + continued lines) is searched for another match. The last match is used. + This is used when a line can contain both the start end the end of a region + (e.g., in a C-comment like /* this */, the last "*/" is used). + +There are two ways how a match with a sync pattern can be used: +1. Parsing for highlighting starts where redrawing starts (and where the + search for the sync pattern started). The syntax group that is expected + to be valid there must be specified. This works well when the regions + that cross lines cannot contain other regions. +2. Parsing for highlighting continues just after the match. The syntax group + that is expected to be present just after the match must be specified. + This can be used when the previous method doesn't work well. It's much + slower, because more text needs to be parsed. +Both types of sync patterns can be used at the same time. + +Besides the sync patterns, other matches and regions can be specified, to +avoid finding unwanted matches. + +[The reason that the sync patterns are given separately, is that mostly the +search for the sync point can be much simpler than figuring out the +highlighting. The reduced number of patterns means it will go (much) +faster.] + + *syn-sync-grouphere* *E393* *E394* + :syntax sync match {sync-group-name} grouphere {group-name} "pattern" .. + + Define a match that is used for syncing. {group-name} is the + name of a syntax group that follows just after the match. Parsing + of the text for highlighting starts just after the match. A region + must exist for this {group-name}. The first one defined will be used. + "NONE" can be used for when there is no syntax group after the match. + + *syn-sync-groupthere* + :syntax sync match {sync-group-name} groupthere {group-name} "pattern" .. + + Like "grouphere", but {group-name} is the name of a syntax group that + is to be used at the start of the line where searching for the sync + point started. The text between the match and the start of the sync + pattern searching is assumed not to change the syntax highlighting. + For example, in C you could search backwards for "/*" and "*/". If + "/*" is found first, you know that you are inside a comment, so the + "groupthere" is "cComment". If "*/" is found first, you know that you + are not in a comment, so the "groupthere" is "NONE". (in practice + it's a bit more complicated, because the "/*" and "*/" could appear + inside a string. That's left as an exercise to the reader...). + + :syntax sync match .. + :syntax sync region .. + + Without a "groupthere" argument. Define a region or match that is + skipped while searching for a sync point. + + :syntax sync linecont {pattern} + + When {pattern} matches in a line, it is considered to continue in + the next line. This means that the search for a sync point will + consider the lines to be concatenated. + +If the "maxlines={N}" argument is given too, the number of lines that are +searched for a match is restricted to N. This is useful if you have very +few things to sync on and a slow machine. Example: > + :syntax sync maxlines=100 + +You can clear all sync settings with: > + :syntax sync clear + +You can clear specific sync patterns with: > + :syntax sync clear {sync-group-name} .. + +============================================================================== +11. Listing syntax items *:syntax* *:sy* *:syn* *:syn-list* + +This commands lists all the syntax items: > + + :sy[ntax] [list] + +To show the syntax items for one syntax group: > + + :sy[ntax] list {group-name} + +To list the syntax groups in one cluster: *E392* > + + :sy[ntax] list @{cluster-name} + +See above for other arguments for the ":syntax" command. + +Note that the ":syntax" command can be abbreviated to ":sy", although ":syn" +is mostly used, because it looks better. + +============================================================================== +12. Highlight command *:highlight* *:hi* *E28* *E411* *E415* + +There are three types of highlight groups: +- The ones used for specific languages. For these the name starts with the + name of the language. Many of these don't have any attributes, but are + linked to a group of the second type. +- The ones used for all syntax languages. +- The ones used for the 'highlight' option. + *hitest.vim* +You can see all the groups currently active with this command: > + :so $VIMRUNTIME/syntax/hitest.vim +This will open a new window containing all highlight group names, displayed +in their own color. + + *:colo* *:colorscheme* *E185* +:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' + for the file "colors/{name}.vim. The first one that + is found is loaded. + To see the name of the currently active color scheme: > + :echo colors_name + +:hi[ghlight] List all the current highlight groups that have + attributes set. + +:hi[ghlight] {group-name} + List one highlight group. + +:hi[ghlight] clear Reset all highlighting to the defaults. Removes all + highlighting for groups added by the user! + Uses the current value of 'background' to decide which + default colors to use. + +:hi[ghlight] clear {group-name} +:hi[ghlight] {group-name} NONE + Disable the highlighting for one highlight group. It + is _not_ set back to the default colors. + +:hi[ghlight] [default] {group-name} {key}={arg} .. + Add a highlight group, or change the highlighting for + an existing group. + See |highlight-args| for the {key}={arg} arguments. + See |:highlight-default| for the optional [default] + argument. + +Normally a highlight group is added once, in the *.vim file. This sets +the default values for the highlighting. After that, you can use additional +highlight commands to change the arguments that you want to set to +non-default values. The value "NONE" can be used to switch the value off or +go back to the default value. + +Example. The syntax.vim file contains this line: > + :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff + +You can change this by giving another ":highlight: command: > + :hi Comment gui=bold + +Note that all settings that are not included remain the same, only the +specified field is used, and settings are merged with previous ones. So, the +result is like this single command has been used: > + :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold +< + *highlight-args* *E416* *E417* *E423* +There are three types of terminals for highlighting: +term a normal terminal (vt100, xterm) +cterm a color terminal (MS-DOS console, color-xterm, these have the "Co" + termcap entry) +gui the GUI + +For each type the highlighting can be given. This makes it possible to use +the same syntax file on all terminals, and use the optimal highlighting. + +1. highlight arguments for normal terminals + +term={attr-list} *attr-list* *highlight-term* *E418* + attr-list is a comma separated list (without spaces) of the + following items (in any order): + bold + underline + reverse + inverse same as reverse + italic + standout + NONE no attributes used (used to reset it) + + Note that "bold" can be used here and by using a bold font. They + have the same effect. + +start={term-list} *highlight-start* *E422* +stop={term-list} *term-list* *highlight-stop* + These lists of terminal codes can be used to get + non-standard attributes on a terminal. + + The escape sequence specified with the "start" argument + is written before the characters in the highlighted + area. It can be anything that you want to send to the + terminal to highlight this area. The escape sequence + specified with the "stop" argument is written after the + highlighted area. This should undo the "start" argument. + Otherwise the screen will look messed up. + + The {term-list} can have two forms: + + 1. A string with escape sequences. + This is any string of characters, except that it can't start with + "t_" and blanks are not allowed. The <> notation is recognized + here, so you can use things like "<Esc>" and "<Space>". Example: + start=<Esc>[27h;<Esc>[<Space>r; + + 2. A list of terminal codes. + Each terminal code has the form "t_xx", where "xx" is the name of + the termcap entry. The codes have to be separated with commas. + White space is not allowed. Example: + start=t_C1,t_BL + The terminal codes must exist for this to work. + + +2. highlight arguments for color terminals + +cterm={attr-list} *highlight-cterm* + See above for the description of {attr-list} |attr-list|. + The "cterm" argument is likely to be different from "term", when + colors are used. For example, in a normal terminal comments could + be underlined, in a color terminal they can be made Blue. + Note: Many terminals (e.g., DOS console) can't mix these attributes + with coloring. Use only one of "cterm=" OR "ctermfg=" OR "ctermbg=". + +ctermfg={color-nr} *highlight-ctermfg* *E421* +ctermbg={color-nr} *highlight-ctermbg* + The {color-nr} argument is a color number. Its range is zero to + (not including) the number given by the termcap entry "Co". + The actual color with this number depends on the type of terminal + and its settings. Sometimes the color also depends on the settings of + "cterm". For example, on some systems "cterm=bold ctermfg=3" gives + another color, on others you just get color 3. + + For an xterm this depends on your resources, and is a bit + unpredictable. See your xterm documentation for the defaults. The + colors for a color-xterm can be changed from the .Xdefaults file. + Unfortunately this means that it's not possible to get the same colors + for each user. See |xterm-color| for info about color xterms. + + The MSDOS standard colors are fixed (in a console window), so these + have been used for the names. But the meaning of color names in X11 + are fixed, so these color settings have been used, to make the + highlighting settings portable (complicated, isn't it?). The + following names are recognized, with the color number used: + + NR-16 NR-8 COLOR NAME ~ + *cterm-colors* + 0 0 Black + 1 4 DarkBlue + 2 2 DarkGreen + 3 6 DarkCyan + 4 1 DarkRed + 5 5 DarkMagenta + 6 3 Brown, DarkYellow + 7 7 LightGray, LightGrey, Gray, Grey + 8 0* DarkGray, DarkGrey + 9 4* Blue, LightBlue + 10 2* Green, LightGreen + 11 6* Cyan, LightCyan + 12 1* Red, LightRed + 13 5* Magenta, LightMagenta + 14 3* Yellow, LightYellow + 15 7* White + + The number under "NR-16" is used for 16-color terminals ('t_Co' + greater than or equal to 16). The number under "NR-8" is used for + 8-color terminals ('t_Co' less than 16). The '*' indicates that the + bold attribute is set for ctermfg. In many 8-color terminals (e.g., + "linux"), this causes the bright colors to appear. This doesn't work + for background colors! Without the '*' the bold attribute is removed. + If you want to set the bold attribute in a different way, put a + "cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument. Or use + a number instead of a color name. + + The case of the color names is ignored. + Note that for 16 color ansi style terminals (including xterms), the + numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue + is 12, DarkGray is 8 etc. + + Note that for some color terminals these names may result in the wrong + colors! + + *:hi-normal-cterm* + When setting the "ctermfg" or "ctermbg" colors for the Normal group, + these will become the colors used for the non-highlighted text. + Example: > + :highlight Normal ctermfg=grey ctermbg=darkblue +< When setting the "ctermbg" color for the Normal group, the + 'background' option will be adjusted automatically. This causes the + highlight groups that depend on 'background' to change! This means + you should set the colors for Normal first, before setting other + colors. + When a colorscheme is being used, changing 'background' causes it to + be reloaded, which may reset all colors (including Normal). First + delete the "colors_name" variable when you don't want this. + + When you have set "ctermfg" or "ctermbg" for the Normal group, Vim + needs to reset the color when exiting. This is done with the "op" + termcap entry |t_op|. If this doesn't work correctly, try setting the + 't_op' option in your .vimrc. + *E419* *E420* + When Vim knows the normal foreground and background colors, "fg" and + "bg" can be used as color names. This only works after setting the + colors for the Normal group and for the MS-DOS console. Example, for + reverse video: > + :highlight Visual ctermfg=bg ctermbg=fg +< Note that the colors are used that are valid at the moment this + command are given. If the Normal group colors are changed later, the + "fg" and "bg" colors will not be adjusted. + + +3. highlight arguments for the GUI + +gui={attr-list} *highlight-gui* + These give the attributes to use in the GUI mode. + See |attr-list| for a description. + Note that "bold" can be used here and by using a bold font. They + have the same effect. + Note that the attributes are ignored for the "Normal" group. + +font={font-name} *highlight-font* + font-name is the name of a font, as it is used on the system Vim + runs on. For X11 this is a complicated name, for example: > + font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 +< + The font-name "NONE" can be used to revert to the default font. + When setting the font for the "Normal" group, this becomes the default + font (until the 'guifont' option is changed; the last one set is + used). + The following only works with Motif and Athena, not with other GUIs: + When setting the font for the "Menu" group, the menus will be changed. + When setting the font for the "Tooltip" group, the tooltips will be + changed. + All fonts used, except for Menu and Tooltip, should be of the same + character size as the default font! Otherwise redrawing problems will + occur. + +guifg={color-name} *highlight-guifg* +guibg={color-name} *highlight-guibg* + These give the foreground (guifg) and background (guibg) color to + use in the GUI. There are a few special names: + NONE no color (transparent) + bg use normal background color + background use normal background color + fg use normal foreground color + foreground use normal foreground color + To use a color name with an embedded space or other special character, + put it in single quotes. The single quote cannot be used then. + Example: > + :hi comment guifg='salmon pink' +< + *gui-colors* + Suggested color names (these are available on most systems): + Red LightRed DarkRed + Green LightGreen DarkGreen SeaGreen + Blue LightBlue DarkBlue SlateBlue + Cyan LightCyan DarkCyan + Magenta LightMagenta DarkMagenta + Yellow LightYellow Brown DarkYellow + Gray LightGray DarkGray + Black White + Orange Purple Violet + + In the Win32 GUI version, additional system colors are available. See + |win32-colors|. + + You can also specify a color by its Red, Green and Blue values. + The format is "#rrggbb", where + "rr" is the Red value + "bb" is the Blue value + "gg" is the Green value + All values are hexadecimal, range from "00" to "ff". Examples: > + :highlight Comment guifg=#11f0c3 guibg=#ff00ff +< + *highlight-groups* *highlight-default* +These are the default highlighting groups. These groups are used by the +'highlight' option default. Note that the highlighting depends on the value +of 'background'. You can see the current settings with the ":highlight" +command. + *hl-Cursor* +Cursor the character under the cursor + *hl-CursorIM* +CursorIM like Cursor, but used when in IME mode |CursorIM| + *hl-Directory* +Directory directory names (and other special names in listings) + *hl-DiffAdd* +DiffAdd diff mode: Added line |diff.txt| + *hl-DiffChange* +DiffChange diff mode: Changed line |diff.txt| + *hl-DiffDelete* +DiffDelete diff mode: Deleted line |diff.txt| + *hl-DiffText* +DiffText diff mode: Changed text within a changed line |diff.txt| + *hl-ErrorMsg* +ErrorMsg error messages on the command line + *hl-VertSplit* +VertSplit the column separating vertically split windows + *hl-Folded* +Folded line used for closed folds + *hl-FoldColumn* +FoldColumn 'foldcolumn' + *hl-IncSearch* +IncSearch 'incsearch' highlighting; also used for the text replaced with + ":s///c" + *hl-LineNr* +LineNr line number for ":number" and ":#" commands, and when 'number' + option is set. + *hl-ModeMsg* +ModeMsg 'showmode' message (e.g., "-- INSERT --") + *hl-MoreMsg* +MoreMsg |more-prompt| + *hl-NonText* +NonText '~' and '@' at the end of the window, characters from + 'showbreak' and other characters that do not really exist in + the text (e.g., ">" displayed when a double-wide character + doesn't fit at the end of the line). + *hl-Normal* +Normal normal text + *hl-Question* +Question |hit-enter| prompt and yes/no questions + *hl-Search* +Search last search pattern highlighting (see 'hlsearch') + *hl-SpecialKey* +SpecialKey Meta and special keys listed with ":map", also for text used + to show unprintable characters in the text, 'listchars'. + Generally: text that is displayed differently from what it + really is. + *hl-StatusLine* +StatusLine status line of current window + *hl-StatusLineNC* +StatusLineNC status lines of not-current windows + Note: if this is equal to "StatusLine" Vim will use "^^^" in + the status line of the current window. + *hl-Title* +Title titles for output from ":set all", ":autocmd" etc. + *hl-Visual* +Visual Visual mode selection + *hl-VisualNOS* +VisualNOS Visual mode selection when vim is "Not Owning the Selection". + Only X11 Gui's |gui-x11| and |xterm-clipboard| supports this. + *hl-WarningMsg* +WarningMsg warning messages + *hl-WildMenu* +WildMenu current match in 'wildmenu' completion + + *hl-User1* *hl-User1..9* +The 'statusline' syntax allows the use of 9 different highlights in the +statusline and ruler (via 'rulerformat'). The names are User1 to User9. + +For the GUI you can use these groups to set the colors for the menu, +scrollbars and tooltips. They don't have defaults. This doesn't work for the +Win32 GUI. Only three highlight arguments have any effect here: font, guibg, +and guifg. + + *hl-Menu* +Menu Current font, background and foreground colors of the menus. + Also used for the toolbar. + Applicable highlight arguments: font, guibg, guifg. + + NOTE: For Motif and Athena the font argument actually + specifies a fontset at all times, no matter if 'guifontset' is + empty, and as such it is tied to the current |:language| when + set. + + *hl-Scrollbar* +Scrollbar Current background and foreground of the main window's + scrollbars. + Applicable highlight arguments: guibg, guifg. + + *hl-Tooltip* +Tooltip Current font, background and foreground of the tooltips. + Applicable highlight arguments: font, guibg, guifg. + + NOTE: For Motif and Athena the font argument actually + specifies a fontset at all times, no matter if 'guifontset' is + empty, and as such it is tied to the current |:language| when + set. + +============================================================================== +13. Linking groups *:hi-link* *:highlight-link* *E412* *E413* + +When you want to use the same highlighting for several syntax groups, you +can do this more easily by linking the groups into one common highlight +group, and give the color attributes only for that group. + +To set a link: + + :hi[ghlight][!] [default] link {from-group} {to-group} + +To remove a link: + + :hi[ghlight][!] [default] link {from-group} NONE + +Notes: *E414* +- If the {from-group} and/or {to-group} doesn't exist, it is created. You + don't get an error message for a non-existing group. +- As soon as you use a ":highlight" command for a linked group, the link is + removed. +- If there are already highlight settings for the {from-group}, the link is + not made, unless the '!' is given. For a ":highlight link" command in a + sourced file, you don't get an error message. This can be used to skip + links for groups that already have settings. + + *:hi-default* *:highlight-default* +The [default] argument is used for setting the default highlighting for a +group. If highlighting has already been specified for the group the command +will be ignored. Also when there is an existing link. + +Using [default] is especially useful to overrule the highlighting of a +specific syntax file. For example, the C syntax file contains: > + :highlight default link cComment Comment +If you like Question highlighting for C comments, put this in your vimrc file: > + :highlight link cComment Question +Without the "default" in the C syntax file, the highlighting would be +overruled when the syntax file is loaded. + +============================================================================== +14. Cleaning up *:syn-clear* *E391* + +If you want to clear the syntax stuff for the current buffer, you can use this +command: > + :syntax clear + +This command should be used when you want to switch off syntax highlighting, +or when you want to switch to using another syntax. It's normally not needed +in a syntax file itself, because syntax is cleared by the autocommands that +load the syntax file. +The command also deletes the "b:current_syntax" variable, since no syntax is +loaded after this command. + +If you want to disable syntax highlighting for all buffers, you need to remove +the autocommands that load the syntax files: > + :syntax off + +What this command actually does, is executing the command > + :source $VIMRUNTIME/syntax/nosyntax.vim +See the "nosyntax.vim" file for details. Note that for this to work +$VIMRUNTIME must be valid. See |$VIMRUNTIME|. + +To clean up specific syntax groups for the current buffer: > + :syntax clear {group-name} .. +This removes all patterns and keywords for {group-name}. + +To clean up specific syntax group lists for the current buffer: > + :syntax clear @{grouplist-name} .. +This sets {grouplist-name}'s contents to an empty list. + + *:syntax-reset* *:syn-reset* +If you have changed the colors and messed them up, use this command to get the +defaults back: > + + :syntax reset + +This doesn't change the colors for the 'highlight' option. + +Note that the syntax colors that you set in your vimrc file will also be reset +back to their Vim default. +Note that if you are using a color scheme, the colors defined by the color +scheme for syntax highlighting will be lost. + +What this actually does is: > + + let g:syntax_cmd = "reset" + runtime! syntax/syncolor.vim + +Note that this uses the 'runtimepath' option. + + *syncolor* +If you want to use different colors for syntax highlighting, you can add a Vim +script file to set these colors. Put this file in a directory in +'runtimepath' which comes after $VIMRUNTIME, so that your settings overrule +the default colors. This way these colors will be used after the ":syntax +reset" command. + +For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: > + + if &background == "light" + highlight comment ctermfg=darkgreen guifg=darkgreen + else + highlight comment ctermfg=green guifg=green + endif + +Note that when a color scheme is used, there might be some confusion whether +your defined colors are to be used or the colors from the scheme. This +depends on the color scheme file. See |:colorscheme|. + + *syntax_cmd* +The "syntax_cmd" variable is set to one of these values when the +syntax/syncolor.vim files are loaded: + "on" ":syntax on" command. Highlight colors are overruled but + links are kept + "enable" ":syntax enable" command. Only define colors for groups that + don't have highlighting yet. Use ":syntax default". + "reset" ":syntax reset" command or loading a color scheme. Define all + the colors. + "skip" Dont' define colors. Used to skip the default settings when a + syncolor.vim file earlier in 'runtimepath' has already set + them. + +============================================================================== +15. Highlighting tags *tag-highlight* + +If you want to highlight all the tags in your file, you can use the following +mappings. + + <F11> -- Generate tags.vim file, and highlight tags. + <F12> -- Just highlight tags based on existing tags.vim file. +> + :map <F11> :sp tags<CR>:%s/^\([^ :]*:\)\=\([^ ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12> + :map <F12> :so tags.vim<CR> + +WARNING: The longer the tags file, the slower this will be, and the more +memory Vim will consume. + +Only highlighting typedefs, unions and structs can be done too. For this you +must use Exuberant ctags (found at http://ctags.sf.net). + +Put these lines in your Makefile: + +# Make a highlight file for types. Requires Exuberant ctags and awk +types: types.vim +types.vim: *.[ch] + ctags -i=gstuS -o- *.[ch] |\ + awk 'BEGIN{printf("syntax keyword Type\t")}\ + {printf("%s ", $$1)}END{print ""}' > $@ + +And put these lines in your .vimrc: > + + " load the types.vim highlighting file, if it exists + autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim' + autocmd BufRead,BufNewFile *.[ch] if filereadable(fname) + autocmd BufRead,BufNewFile *.[ch] exe 'so ' . fname + autocmd BufRead,BufNewFile *.[ch] endif + +============================================================================== +16. Color xterms *xterm-color* *color-xterm* + +Most color xterms have only eight colors. They should work with these +lines in your .vimrc: > + :if has("terminfo") + : set t_Co=8 + : set t_Sf=<Esc>[3%p1%dm + : set t_Sb=<Esc>[4%p1%dm + :else + : set t_Co=8 + : set t_Sf=<Esc>[3%dm + : set t_Sb=<Esc>[4%dm + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + +You might want to put these lines in an ":if" that checks the name of your +terminal, for example: > + :if &term =~ "xterm" +< put above lines here > + :endif + +Note: Do these settings BEFORE doing ":syntax on". Otherwise the colors may +be wrong. + *xiterm* *rxvt* +The above settings have been mentioned to work for xiterm and rxvt too. +But for using 16 colors in an rxvt these should work with terminfo: > + :set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm + :set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm +< + *colortest.vim* +To test your color setup, a file has been included in the Vim distribution. +To use it, execute these commands: > + :e $VIMRUNTIME/syntax/colortest.vim + :so % + +Some versions of xterm (and other terminals, like the linux console) can +output lighter foreground colors, even though the number of colors is defined +at 8. Therefore Vim sets the "cterm=bold" attribute for light foreground +colors, when 't_Co' is 8. + + *xfree-xterm* +To get 16 colors or more, get the newest xterm version (which should be +included with Xfree86 3.3 and later). You can also find the latest version +at: > + http://www.clark.net/pub/dickey/xterm +Here is a good way to configure it. This uses 88 colors and enables the +termcap-query feature, which allows Vim to ask the xterm how many colors it +supports. > + ./configure --disable-bold-color --enable-88-color --enable-tcap-query +If you only get 8 colors, check the xterm compilation settings. +(Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding). + +This xterm should work with these lines in your .vimrc: > + :if has("terminfo") + : set t_Co=16 + : set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm + : set t_AF=<Esc>[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm + :else + : set t_Co=16 + : set t_Sf=<Esc>[3%dm + : set t_Sb=<Esc>[4%dm + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + +Without |+terminfo|, Vim will recognize these settings, and automatically +translate cterm colors of 8 and above to "<Esc>[9%dm" and "<Esc>[10%dm". +Colors above 16 are also translated automatically. + +Or just set the TERM environment variable to "xterm-16color" and try if that +works. + +You probably want to use these X resources (in your ~/.Xdefaults file): + XTerm*color0: #000000 + XTerm*color1: #c00000 + XTerm*color2: #008000 + XTerm*color3: #808000 + XTerm*color4: #0000c0 + XTerm*color5: #c000c0 + XTerm*color6: #008080 + XTerm*color7: #c0c0c0 + XTerm*color8: #808080 + XTerm*color9: #ff6060 + XTerm*color10: #00ff00 + XTerm*color11: #ffff00 + XTerm*color12: #8080ff + XTerm*color13: #ff40ff + XTerm*color14: #00ffff + XTerm*color15: #ffffff + Xterm*cursorColor: Black + +[Note: The cursorColor is required to work around a bug, which changes the +cursor color to the color of the last drawn text. This has been fixed by a +newer version of xterm, but not everybody is it using yet.] + +To get these right away, reload the .Xdefaults file to the X Option database +Manager (you only need to do this when you just changed the .Xdefaults file): > + xrdb -merge ~/.Xdefaults +< + *xterm-blink* +To make the cursor blink in an xterm, see tools/blink.c. Or use Thomas +Dickey's xterm above patchlevel 107 (see above for where to get it), with +these resources: + XTerm*cursorBlink: on + XTerm*cursorOnTime: 400 + XTerm*cursorOffTime: 250 + XTerm*cursorColor: White + + *hpterm-color* +These settings work (more or less) for a hpterm, which only supports 8 +foreground colors: > + :if has("terminfo") + : set t_Co=8 + : set t_Sf=<Esc>[&v%p1%dS + : set t_Sb=<Esc>[&v7S + :else + : set t_Co=8 + : set t_Sf=<Esc>[&v%dS + : set t_Sb=<Esc>[&v7S + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + + *Eterm* *enlightened-terminal* +These settings have been reported to work for the Enlightened terminal +emulator, or Eterm. They might work for all xterm-like terminals that use the +bold attribute to get bright colors. Add an ":if" like above when needed. > + :set t_Co=16 + :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m + :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m +< + *TTpro-telnet* +These settings should work for TTpro telnet. Tera Term Pro is a freeware / +open-source program for MS-Windows. > + set t_Co=16 + set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm + set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm +Also make sure TTpro's Setup / Window / Full Color is enabled, and make sure +that Setup / Font / Enable Bold is NOT enabled. +(info provided by John Love-Jensen <eljay@Adobe.COM>) + + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/term.jax b/ja/term.jax new file mode 100644 index 000000000..349f44f17 --- /dev/null +++ b/ja/term.jax @@ -0,0 +1,812 @@ +COMMENT: 端末設定 +STATUS: supspend 6.3.054 +MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> + +*term.txt* For Vim version 6.3. Last change: 2004 Jan 09 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Terminal information *terminal-info* + +Vim uses information about the terminal you are using to fill the screen and +recognize what keys you hit. If this information is not correct, the screen +may be messed up or keys may not be recognized. The actions which have to be +performed on the screen are accomplished by outputting a string of +characters. Special keys produce a string of characters. These strings are +stored in the terminal options, see |terminal-options|. + +NOTE: Most of this is not used when running the |GUI|. + +1. Startup |startup-terminal| +2. Terminal options |terminal-options| +3. Window size |window-size| +4. Slow and fast terminals |slow-fast-terminal| +5. Using the mouse |mouse-using| + +============================================================================== +1. Startup *startup-terminal* + +When Vim is started a default terminal type is assumed. For the Amiga this is +a standard CLI window, for MS-DOS the pc terminal, for Unix an ansi terminal. +A few other terminal types are always available, see below |builtin-terms|. + +You can give the terminal name with the '-T' Vim argument. If it is not given +Vim will try to get the name from the TERM environment variable. + + *termcap* *terminfo* *E557* *E558* *E559* +On Unix the terminfo database or termcap file is used. This is referred to as +"termcap" in all the documentation. At compile time, when running configure, +the choice whether to use terminfo or termcap is done automatically. When +running Vim the output of ":version" will show |+terminfo| if terminfo is +used. Also see |xterm-screens|. + +On non-Unix systems a termcap is only available if Vim was compiled with +TERMCAP defined. + + *builtin-terms* *builtin_terms* +Which builtin terminals are available depends on a few defines in feature.h, +which need to be set at compile time: + define output of ":version" terminals builtin ~ +NO_BUILTIN_TCAPS -builtin_terms none +SOME_BUILTIN_TCAPS +builtin_terms most common ones (default) +ALL_BUILTIN_TCAPS ++builtin_terms all available + +You can see a list of available builtin terminals with ":set term=xxx" (when +not running the GUI). Also see |+builtin_terms|. + +If the termcap code is included Vim will try to get the strings for the +terminal you are using from the termcap file and the builtin termcaps. Both +are always used, if an entry for the terminal you are using is present. Which +one is used first depends on the 'ttybuiltin' option: + +'ttybuiltin' on 1: builtin termcap 2: external termcap +'ttybuiltin' off 1: external termcap 2: builtin termcap + +If an option is missing in one of them, it will be obtained from the other +one. If an option is present in both, the one first encountered is used. + +Which external termcap file is used varies from system to system and may +depend on the environment variables "TERMCAP" and "TERMPATH". See "man +tgetent". + +Settings depending on terminal *term-dependent-settings* + +If you want to set options or mappings, depending on the terminal name, you +can do this best in your .vimrc. Example: > + + if &term == "xterm" + ... xterm maps and settings ... + elseif &term =~ "vt10." + ... vt100, vt102 maps and settings ... + endif +< + *raw-terminal-mode* +For normal editing the terminal will be put into "raw" mode. The strings +defined with 't_ti' and 't_ks' will be sent to the terminal. Normally this +puts the terminal in a state where the termcap codes are valid and activates +the cursor and function keys. When Vim exits the terminal will be put back +into the mode it was before Vim started. The strings defined with 't_te' and +'t_ke' will be sent to the terminal. On the Amiga, with commands that execute +an external command (e.g., "!!"), the terminal will be put into Normal mode +for a moment. This means that you can stop the output to the screen by +hitting a printing key. Output resumes when you hit <BS>. + + *cs7-problem* +Note: If the terminal settings are changed after running Vim, you might have +an illegal combination of settings. This has been reported on Solaris 2.5 +with "stty cs8 parenb", which is restored as "stty cs7 parenb". Use +"stty cs8 -parenb -istrip" instead, this is restored correctly. + +Some termcap entries are wrong in the sense that after sending 't_ks' the +cursor keys send codes different from the codes defined in the termcap. To +avoid this you can set 't_ks' (and 't_ke') to empty strings. This must be +done during initialization (see |initialization|), otherwise it's too late. + +Some termcap entries assume that the highest bit is always reset. For +example: The cursor-up entry for the Amiga could be ":ku=\E[A:". But the +Amiga really sends "\233A". This works fine if the highest bit is reset, +e.g., when using an Amiga over a serial line. If the cursor keys don't work, +try the entry ":ku=\233A:". + +Some termcap entries have the entry ":ku=\E[A:". But the Amiga really sends +"\233A". On output "\E[" and "\233" are often equivalent, on input they +aren't. You will have to change the termcap entry, or change the key code with +the :set command to fix this. + +Many cursor key codes start with an <Esc>. Vim must find out if this is a +single hit of the <Esc> key or the start of a cursor key sequence. It waits +for a next character to arrive. If it does not arrive within one second a +single <Esc> is assumed. On very slow systems this may fail, causing cursor +keys not to work sometimes. If you discover this problem reset the 'timeout' +option. Vim will wait for the next character to arrive after an <Esc>. If +you want to enter a single <Esc> you must type it twice. Resetting the +'esckeys' option avoids this problem in Insert mode, but you lose the +possibility to use cursor and function keys in Insert mode. + +On the Amiga the recognition of window resizing is activated only when the +terminal name is "amiga" or "builtin_amiga". + +Some terminals have confusing codes for the cursor keys. The televideo 925 is +such a terminal. It sends a CTRL-H for cursor-left. This would make it +impossible to distinguish a backspace and cursor-left. To avoid this problem +CTRL-H is never recognized as cursor-left. + + *vt100-cursor-keys* *xterm-cursor-keys* +Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA, +<Esc>OB, etc. Unfortunately these are valid commands in insert mode: Stop +insert, Open a new line above the new one, start inserting 'A', 'B', etc. +Instead of performing these commands Vim will erroneously recognize this typed +key sequence as a cursor key movement. To avoid this and make Vim do what you +want in either case you could use these settings: > + :set notimeout " don't timeout on mappings + :set ttimeout " do timeout on terminal key codes + :set timeoutlen=100 " timeout after 100 msec +This requires the key-codes to be sent within 100msec in order to recognize +them as a cursor key. When you type you normally are not that fast, so they +are recognized as individual typed commands, even though Vim receives the same +sequence of bytes. + + *vt100-function-keys* *xterm-function-keys* +An xterm can send function keys F1 to F4 in two modes: vt100 compatible or +not. Because Vim cannot know what the xterm is sending, both types of keys +are recognized. The same happens for the <Home> and <End> keys. + normal vt100 ~ + <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* + <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* + <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* + <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* + <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* + <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* + +When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc. This means that +by default both codes do the same thing. If you make a mapping for <xF2>, +because your terminal does have two keys, the default mapping is overwritten, +thus you can use the <F2> and <xF2> keys for something different. + + *xterm-shifted-keys* +Newer versions of xterm support shifted function keys and special keys. Vim +recognizes most of them. Use ":set termcap" to check which are supported and +what the codes are. Mostly these are not in a termcap, they are only +supported by the builtin_xterm termcap. + + *xterm-scroll-region* +The default termcap entry for xterm on Sun and other platforms does not +contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm +entry in /etc/termcap and everything should work. + + *xterm-end-home-keys* +On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the +<End> and <Home> keys send contain a <Nul> character. To make these keys send +the proper key code, add these lines to your ~/.Xdefaults file: + +*VT100.Translations: #override \n\ + <Key>Home: string("0x1b") string("[7~") \n\ + <Key>End: string("0x1b") string("[8~") + + *xterm-8bit* *xterm-8-bit* +Xterm can be run in a mode where it uses 8-bit escape sequences. The CSI code +is used instead of <Esc>[. The advantage is that an <Esc> can quickly be +recognized in Insert mode, because it can't be confused with the start of a +special key. +For the builtin termcap entries, Vim checks if the 'term' option contains +"8bit" anywhere. It then uses 8-bit characters for the termcap entries, the +mouse and a few other things. You would normally set $TERM in your shell to +"xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting +automatically. +When Vim receives a response to the |t_RV| (request version) sequence and it +starts with CSI, it assumes that the terminal is in 8-bit mode and will +convert all key sequences to their 8-bit variants. + +============================================================================== +2. Terminal options *terminal-options* *E436* + +The terminal options can be set just like normal options. But they are not +shown with the ":set all" command. Instead use ":set termcap". + +It is always possible to change individual strings by setting the +appropriate option. For example: > + :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) + +{Vi: no terminal options. You have to exit Vi, edit the termcap entry and +try again} + +The options are listed below. The associated termcap code is always equal to +the last two characters of the option name. Only one termcap code is +required: Cursor motion, 't_cm'. + +The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap. +When the termcap flag is present, the option will be set to "y". But any +non-empty string means that the flag is set. An empty string means that the +flag is not set. 't_CS' works like this too, but it isn't a termcap flag. + +OUTPUT CODES + option meaning ~ + + t_AB set background color (ANSI) *t_AB* *'t_AB'* + t_AF set foreground color (ANSI) *t_AF* *'t_AF'* + t_AL add number of blank lines *t_AL* *'t_AL'* + t_al add new blank line *t_al* *'t_al'* + t_bc backspace character *t_bc* *'t_bc'* + t_cd clear to end of screen *t_cd* *'t_cd'* + t_ce clear to end of line *t_ce* *'t_ce'* + t_cl clear screen *t_cl* *'t_cl'* + t_cm cursor motion (required!) *E437* *t_cm* *'t_cm'* + t_Co number of colors *t_Co* *'t_Co'* + t_CS if non-empty, cursor relative to scroll region *t_CS* *'t_CS'* + t_cs define scrolling region *t_cs* *'t_cs'* + t_CV define vertical scrolling region *t_CV* *'t_CV'* + t_da if non-empty, lines from above scroll down *t_da* *'t_da'* + t_db if non-empty, lines from below scroll up *t_db* *'t_db'* + t_DL delete number of lines *t_DL* *'t_DL'* + t_dl delete line *t_dl* *'t_dl'* + t_fs set window title end (from status line) *t_fs* *'t_fs'* + t_ke exit "keypad transmit" mode *t_ke* *'t_ke'* + t_ks start "keypad transmit" mode *t_ks* *'t_ks'* + t_le move cursor one char left *t_le* *'t_le'* + t_mb blinking mode *t_mb* *'t_mb'* + t_md bold mode *t_md* *'t_md'* + t_me Normal mode (undoes t_mr, t_mb, t_md and color) *t_me* *'t_me'* + t_mr reverse (invert) mode *t_mr* *'t_mr'* + *t_ms* *'t_ms'* + t_ms if non-empty, cursor can be moved in standout/inverse mode + t_nd non destructive space character *t_nd* *'t_nd'* + t_op reset to original color pair *t_op* *'t_op'* + t_RI cursor number of chars right *t_RI* *'t_RI'* + t_Sb set background color *t_Sb* *'t_Sb'* + t_Sf set foreground color *t_Sf* *'t_Sf'* + t_se standout end *t_se* *'t_se'* + t_so standout mode *t_so* *'t_so'* + t_sr scroll reverse (backward) *t_sr* *'t_sr'* + t_te out of "termcap" mode *t_te* *'t_te'* + t_ti put terminal in "termcap" mode *t_ti* *'t_ti'* + t_ts set window title start (to status line) *t_ts* *'t_ts'* + t_ue underline end *t_ue* *'t_ue'* + t_us underline mode *t_us* *'t_us'* + t_ut clearing uses the current background color *t_ut* *'t_ut'* + t_vb visual bell *t_vb* *'t_vb'* + t_ve cursor visible *t_ve* *'t_ve'* + t_vi cursor invisible *t_vi* *'t_vi'* + t_vs cursor very visible *t_vs* *'t_vs'* + *t_xs* *'t_xs'* + t_xs if non-empty, standout not erased by overwriting (hpterm) + t_ZH italics mode *t_ZH* *'t_ZH'* + t_ZR italics end *t_ZR* *'t_ZR'* + +Added by Vim (there are no standard codes for these): + t_IS set icon text start *t_IS* *'t_IS'* + t_IE set icon text end *t_IE* *'t_IE'* + t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* + t_WS set window size (height, width) in characters *t_WS* *'t_WS'* + t_RV request terminal version string (for xterm) *t_RV* *'t_RV'* + |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| + +KEY CODES +Note: Use the <> form if possible + + option name meaning ~ + + t_ku <Up> arrow up *t_ku* *'t_ku'* + t_kd <Down> arrow down *t_kd* *'t_kd'* + t_kr <Right> arrow right *t_kr* *'t_kr'* + t_kl <Left> arrow left *t_kl* *'t_kl'* + <S-Up> shift arrow up + <S-Down> shift arrow down + t_%i <S-Right> shift arrow right *t_%i* *'t_%i'* + t_#4 <S-Left> shift arrow left *t_#4* *'t_#4'* + t_k1 <F1> function key 1 *t_k1* *'t_k1'* + <xF1> alternate F1 *<xF1>* + t_k2 <F2> function key 2 *<F2>* *t_k2* *'t_k2'* + <xF2> alternate F2 *<xF2>* + t_k3 <F3> function key 3 *<F3>* *t_k3* *'t_k3'* + <xF3> alternate F3 *<xF3>* + t_k4 <F4> function key 4 *<F4>* *t_k4* *'t_k4'* + <xF4> alternate F4 *<xF4>* + t_k5 <F5> function key 5 *<F5>* *t_k5* *'t_k5'* + t_k6 <F6> function key 6 *<F6>* *t_k6* *'t_k6'* + t_k7 <F7> function key 7 *<F7>* *t_k7* *'t_k7'* + t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* + t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* + t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* + t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* + t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* + t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* + t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* + t_F5 <F15> function key 15 *<F15>* *t_F5* *'t_F5'* + t_F6 <F16> function key 16 *<F16>* *t_F6* *'t_F6'* + t_F7 <F17> function key 17 *<F17>* *t_F7* *'t_F7'* + t_F8 <F18> function key 18 *<F18>* *t_F8* *'t_F8'* + t_F9 <F19> function key 19 *<F19>* *t_F9* *'t_F9'* + <S-F1> shifted function key 1 + <S-xF1> alternate <S-F1> *<S-xF1>* + <S-F2> shifted function key 2 *<S-F2>* + <S-xF2> alternate <S-F2> *<S-xF2>* + <S-F3> shifted function key 3 *<S-F3>* + <S-xF3> alternate <S-F3> *<S-xF3>* + <S-F4> shifted function key 4 *<S-F4>* + <S-xF4> alternate <S-F4> *<S-xF4>* + <S-F5> shifted function key 5 *<S-F5>* + <S-F6> shifted function key 6 *<S-F6>* + <S-F7> shifted function key 7 *<S-F7>* + <S-F8> shifted function key 8 *<S-F8>* + <S-F9> shifted function key 9 *<S-F9>* + <S-F10> shifted function key 10 *<S-F10>* + <S-F11> shifted function key 11 *<S-F11>* + <S-F12> shifted function key 12 *<S-F12>* + t_%1 <Help> help key *t_%1* *'t_%1'* + t_&8 <Undo> undo key *t_&8* *'t_&8'* + t_kI <Insert> insert key *t_kI* *'t_kI'* + t_kD <Del> delete key *t_kD* *'t_kD'* + t_kb <BS> backspace key *t_kb* *'t_kb'* + t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* + t_kh <Home> home key *t_kh* *'t_kh'* + t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* + <xHome> alternate home key *<xHome>* + t_@7 <End> end key *t_@7* *'t_@7'* + t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* + <xEnd> alternate end key *<xEnd>* + t_kP <PageUp> page-up key *t_kP* *'t_kP'* + t_kN <PageDown> page-down key *t_kN* *'t_kN'* + t_K1 <kHome> keypad home key *t_K1* *'t_K1'* + t_K4 <kEnd> keypad end key *t_K4* *'t_K4'* + t_K3 <kPageUp> keypad page-up key *t_K3* *'t_K3'* + t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* + t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* + t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* + t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* + t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* + t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* + t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* + t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* + t_KD <k1> keypad 1 *<k1>* *t_KD* *'t_KD'* + t_KE <k2> keypad 2 *<k2>* *t_KE* *'t_KE'* + t_KF <k3> keypad 3 *<k3>* *t_KF* *'t_KF'* + t_KG <k4> keypad 4 *<k4>* *t_KG* *'t_KG'* + t_KH <k5> keypad 5 *<k5>* *t_KH* *'t_KH'* + t_KI <k6> keypad 6 *<k6>* *t_KI* *'t_KI'* + t_KJ <k7> keypad 7 *<k7>* *t_KJ* *'t_KJ'* + t_KK <k8> keypad 8 *<k8>* *t_KK* *'t_KK'* + t_KL <k9> keypad 9 *<k9>* *t_KL* *'t_KL'* + <Mouse> leader of mouse code *<Mouse>* + +Note about t_so and t_mr: When the termcap entry "so" is not present the +entry for "mr" is used. And vice versa. The same is done for "se" and "me". +If your terminal supports both inversion and standout mode, you can see two +different modes. If your terminal supports only one of the modes, both will +look the same. + +The keypad keys, when they are not mapped, behave like the equivalent normal +key. + *xterm-codes* +There is a special trick to obtain the key codes which currently only works +for xterm. When |t_RV| is defined and a response is received which indicates +an xterm with patchlevel 141 or higher, Vim uses special escape sequences to +request the key codes directly from the xterm. The responses are used to +adjust the various t_ codes. This avoids the problem that the xterm can +produce different codes, depending on the mode it is in (8-bit, VT102, +VT220, etc.). The result is that codes like <xF1> are no longer needed. +Note: This is only done on startup. If the xterm options are changed after +Vim has started, the escape sequences may not be recognized any more. + + *termcap-colors* +Note about colors: The 't_Co' option tells Vim the number of colors available. +When it is non-zero, the 't_AB' and 't_AF' options are used to set the color. +If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used +to reset to the default colors. + + *termcap-title* +The 't_ts' and 't_fs' options are used to set the window title if the terminal +allows title setting via sending strings. They are sent before and after the +title string, respectively. Similar 't_IS' and 't_IE' are used to set the +icon text. These are Vim-internal extensions of the Unix termcap, so they +cannot be obtained from an external termcap. However, the builtin termcap +contains suitable entries for xterm and iris-ansi, so you don't need to set +them here. + *hpterm* +If inversion or other highlighting does not work correctly, try setting the +'t_xs' option to a non-empty string. This makes the 't_ce' code be used to +remove highlighting from a line. This is required for "hpterm". Setting the +'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice +versa. + + *scroll-region* +Some termcaps do not include an entry for 'cs' (scroll region), although the +terminal does support it. For example: xterm on a Sun. You can use the +builtin_xterm or define t_cs yourself. For example: > + :set t_cs=^V^[[%i%d;%dr +Where ^V is CTRL-V and ^[ is <Esc>. + +The vertical scroll region t_CV is not a standard termcap code. Vim uses it +internally in the GUI. But it can also be defined for a terminal, if you can +find one that supports it. The two arguments are the left and right column of +the region which to restrict the scrolling to. Just like t_cs defines the top +and bottom lines. Defining t_CV will make scrolling in vertically split +windows a lot faster. Don't set t_CV when t_da or t_db is set (text isn't +cleared when scrolling). + +Unfortunately it is not possible to deduce from the termcap how cursor +positioning should be done when using a scrolling region: Relative to the +beginning of the screen or relative to the beginning of the scrolling region. +Most terminals use the first method. A known exception is the MS-DOS console +(pcterm). The 't_CS' option should be set to any string when cursor +positioning is relative to the start of the scrolling region. It should be +set to an empty string otherwise. It defaults to "yes" when 'term' is +"pcterm". + +Note for xterm users: The shifted cursor keys normally don't work. You can + make them work with the xmodmap command and some mappings in Vim. + + Give these commands in the xterm: + xmodmap -e "keysym Up = Up F13" + xmodmap -e "keysym Down = Down F16" + xmodmap -e "keysym Left = Left F18" + xmodmap -e "keysym Right = Right F19" + + And use these mappings in Vim: + :map <t_F3> <S-Up> + :map! <t_F3> <S-Up> + :map <t_F6> <S-Down> + :map! <t_F6> <S-Down> + :map <t_F8> <S-Left> + :map! <t_F8> <S-Left> + :map <t_F9> <S-Right> + :map! <t_F9> <S-Right> + +Instead of, say, <S-Up> you can use any other command that you want to use the +shift-cursor-up key for. (Note: To help people that have a Sun keyboard with +left side keys F14 is not used because it is confused with the undo key; F15 +is not used, because it does a window-to-front; F17 is not used, because it +closes the window. On other systems you can probably use them.) + +============================================================================== +3. Window size *window-size* + +[This is about the size of the whole window Vim is using, not a window that is +created with the ":split" command.] + +If you are running Vim on an Amiga and the terminal name is "amiga" or +"builtin_amiga", the amiga-specific window resizing will be enabled. On Unix +systems three methods are tried to get the window size: + +- an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system) +- the environment variables "LINES" and "COLUMNS" +- from the termcap entries "li" and "co" + +If everything fails a default size of 24 lines and 80 columns is assumed. If +a window-resize signal is received the size will be set again. If the window +size is wrong you can use the 'lines' and 'columns' options to set the +correct values. + +One command can be used to set the screen size: + + *:mod* *:mode* *E359* *E362* +:mod[e] [mode] + +Without argument this only detects the screen size and redraws the screen. +With MS-DOS it is possible to switch screen mode. [mode] can be one of these +values: + "bw40" 40 columns black&white + "c40" 40 columns color + "bw80" 80 columns black&white + "c80" 80 columns color (most people use this) + "mono" 80 columns monochrome + "c4350" 43 or 50 lines EGA/VGA mode + number mode number to use, depends on your video card + +============================================================================== +4. Slow and fast terminals *slow-fast-terminal* + *slow-terminal* + +If you have a fast terminal you may like to set the 'ruler' option. The +cursor position is shown in the status line. If you are using horizontal +scrolling ('wrap' option off) consider setting 'sidescroll' to a small +number. + +If you have a slow terminal you may want to reset the 'showcmd' option. +The command characters will not be shown in the status line. If the terminal +scrolls very slowly, set the 'scrolljump' to 5 or so. If the cursor is moved +off the screen (e.g., with "j") Vim will scroll 5 lines at a time. Another +possibility is to reduce the number of lines that Vim uses with the command +"z{height}<CR>". + +If the characters from the terminal are arriving with more than 1 second +between them you might want to set the 'timeout' and/or 'ttimeout' option. +See the "Options" chapter |options|. + +If your terminal does not support a scrolling region, but it does support +insert/delete line commands, scrolling with multiple windows may make the +lines jump up and down. If you don't want this set the 'ttyfast' option. +This will redraw the window instead of scroll it. + +If your terminal scrolls very slowly, but redrawing is not slow, set the +'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the +screen instead of scrolling, when there are more than 3 lines to be scrolled. + +If you are using a color terminal that is slow, use this command: > + hi NonText cterm=NONE ctermfg=NONE +This avoids that spaces are sent when they have different attributes. On most +terminals you can't see this anyway. + +If you are using Vim over a slow serial line, you might want to try running +Vim inside the "screen" program. Screen will optimize the terminal I/O quite +a bit. + +If you are testing termcap options, but you cannot see what is happening, +you might want to set the 'writedelay' option. When non-zero, one character +is sent to the terminal at a time (does not work for MS-DOS). This makes the +screen updating a lot slower, making it possible to see what is happening. + +============================================================================== +5. Using the mouse *mouse-using* + +This section is about using the mouse on a terminal or a terminal window. How +to use the mouse in a GUI window is explained in |gui-mouse|. For scrolling +with a mouse wheel see |scroll-mouse-wheel|. + +Don't forget to enable the mouse with this commands: > + :set mouse=a +Otherwise Vim won't recognize the mouse in all modes (See 'mouse'). + +Currently the mouse is supported for Unix in an xterm window, in a Linux +console (with GPM |gpm-mouse|), for MS-DOS and in a Windows console. +Mouse clicks can be used to position the cursor, select an area and paste. + +These characters in the 'mouse' option tell in which situations the mouse will +be used by Vim: + n Normal mode + v Visual mode + i Insert mode + c Command-line mode + h all previous modes when in a help file + a all previous modes + r for |hit-enter| prompt + A auto-select in Visual mode + +The default for 'mouse' is empty, the mouse is not used. Normally you would +do: > + :set mouse=a +to start using the mouse (this is equivalent to setting 'mouse' to "nvich"). +If you only want to use the mouse in a few modes or also want to use it for +the two questions you will have to concatenate the letters for those modes. +For example: > + :set mouse=nv +Will make the mouse work in Normal mode and Visual mode. > + :set mouse=h +Will make the mouse work in help files only (so you can use "g<LeftMouse>" to +jump to tags). + +Whether the selection that is started with the mouse is in Visual mode or +Select mode depends on whether "mouse" is included in the 'selectmode' +option. + +In an xterm, with the currently active mode included in the 'mouse' option, +normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key +pressed go to the xterm. With the currently active mode not included in +'mouse' all mouse clicks go to the xterm. + + *xterm-clipboard* +In the Athena and Motif GUI versions, when running in a terminal and there is +access to the X-server (DISPLAY is set), the copy and paste will behave like +in the GUI. If not, the middle mouse button will insert the unnamed register. +In that case, here is how you copy and paste a piece of text: + +Copy/paste with the mouse and Visual mode ('mouse' option must be set, see +above): +1. Press left mouse button on first letter of text, move mouse pointer to last + letter of the text and release the button. This will start Visual mode and + highlight the selected area. +2. Press "y" to yank the Visual text in the unnamed register. +3. Click the left mouse button at the insert position. +4. Click the middle mouse button. + +Shortcut: If the insert position is on the screen at the same time as the +Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button +at the insert position. + +Note: When the |-X| command line argument is used, Vim will not connect to the +X server and copy/paste to the X clipboard (selection) will not work. Use the +shift key with the mouse buttons to let the xterm do the selection. + + *xterm-command-server* +When the X-server clipboard is available, the command server described in +|x11-clientserver| can be enabled with the --servername command line argument. + + *xterm-copy-paste* +NOTE: In some (older) xterms, it's not possible to move the cursor past column +95. This is an xterm problem, not Vim's. Get a newer xterm |color-xterm|. + +Copy/paste in xterm with (current mode NOT included in 'mouse'): +1. Press left mouse button on first letter of text, move mouse pointer to last + letter of the text and release the button. +2. Use normal Vim commands to put the cursor at the insert position. +3. Press "a" to start Insert mode. +4. Click the middle mouse button. +5. Press ESC to end Insert mode. +(The same can be done with anything in 'mouse' if you keep the shift key +pressed while using the mouse.) + +Note: if you lose the 8th bit when pasting (special characters are translated +into other characters), you may have to do "stty cs8 -istrip -parenb" in your +shell before starting Vim. + +Thus in an xterm the shift and ctrl keys cannot be used with the mouse. Mouse +commands requiring the CTRL modifier can be simulated by typing the "g" key +before using the mouse: + "g<LeftMouse>" is "<C-LeftMouse> (jump to tag under mouse click) + "g<RightMouse>" is "<C-RightMouse> ("CTRL-T") + + *mouse-mode-table* *mouse-overview* +A short overview of what the mouse buttons do, when 'mousemodel' is "extend": + +Normal Mode: +event position selection change action ~ + cursor window ~ +<LeftMouse> yes end yes +<C-LeftMouse> yes end yes "CTRL-]" (2) +<S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* +<LeftDrag> yes start or extend (1) no *<LeftDrag>* +<LeftRelease> yes start or extend (1) no +<MiddleMouse> yes if not active no put +<MiddleMouse> yes if active no yank and put +<RightMouse> yes start or extend yes +<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* +<C-RightMouse> no no change no "CTRL-T" +<RightDrag> yes extend no *<RightDrag>* +<RightRelease> yes extend no *<RightRelease>* + +Insert or Replace Mode: +event position selection change action ~ + cursor window ~ +<LeftMouse> yes (cannot be active) yes +<C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) +<S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) +<LeftDrag> yes start or extend (1) no like CTRL-O (1) +<LeftRelease> yes start or extend (1) no like CTRL-O (1) +<MiddleMouse> no (cannot be active) no put register +<RightMouse> yes start or extend yes like CTRL-O +<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) +<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" + +In a help window: +event position selection change action ~ + cursor window ~ +<2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) + +When 'mousemodel' is "popup", these are different: + +Normal Mode: +event position selection change action ~ + cursor window ~ +<S-LeftMouse> yes start or extend (1) no +<RightMouse> no popup menu no + +Insert or Replace Mode: +event position selection change action ~ + cursor window ~ +<S-LeftMouse> yes start or extend (1) no like CTRL-O (1) +<RightMouse> no popup menu no + +(1) only if mouse pointer moved since press +(2) only if click is in same buffer + +Clicking the left mouse button causes the cursor to be positioned. If the +click is in another window that window is made the active window. When +editing the command-line the cursor can only be positioned on the +command-line. When in Insert mode Vim remains in Insert mode. If 'scrolloff' +is set, and the cursor is positioned within 'scrolloff' lines from the window +border, the text is scrolled. + +A selection can be started by pressing the left mouse button on the first +character, moving the mouse to the last character, then releasing the mouse +button. You will not always see the selection until you release the button, +only in some versions (GUI, MS-DOS, WIN32) will the dragging be shown +immediately. Note that you can make the text scroll by moving the mouse at +least one character in the first/last line in the window when 'scrolloff' is +non-zero. + +In Normal, Visual and Select mode clicking the right mouse button causes the +Visual area to be extended. When 'mousemodel' is "popup", the left button has +to be used while keeping the shift key pressed. When clicking in a window +which is editing another buffer, the Visual or Select mode is stopped. + + *double-click* +Double, triple and quadruple clicks are supported when the GUI is active, +for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is +available). For selecting text, extra clicks extend the selection: + click select ~ + double word or % match *<2-LeftMouse>* + triple line *<3-LeftMouse>* + quadruple rectangular block *<4-LeftMouse>* +Exception: In a Help window a double click jumps to help for the word that is +clicked on. +A double click on a word selects that word. 'iskeyword' is used to specify +which characters are included in a word. A double click on a character +that has a match selects until that match (like using "v%"). If the match is +an #if/#else/#endif block, the selection becomes linewise. +For MS-DOS and xterm the time for double clicking can be set with the +'mousetime' option. For the other systems this time is defined outside of +Vim. +An example, for using a double click to jump to the tag under the cursor: > + :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR> + +Dragging the mouse with a double click (button-down, button-up, button-down +and then drag) will result in whole words to be selected. This continues +until the button is released, at which point the selection is per character +again. + + *gpm-mouse* +The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at +compile time. The GPM mouse driver (Linux console) does not support quadruple +clicks. + +In Insert mode, when a selection is started, Vim goes into Normal mode +temporarily. When Visual or Select mode ends, it returns to Insert mode. +This is like using CTRL-O in Insert mode. Select mode is used when the +'selectmode' option contains "mouse". + + *drag-status-line* +When working with several windows, the size of the windows can be changed by +dragging the status line with the mouse. Point the mouse at a status line, +press the left button, move the mouse to the new position of the status line, +release the button. Just clicking the mouse in a status line makes that window +the current window, without moving the cursor. If by selecting a window it +will change position or size, the dragging of the status line will look +confusing, but it will work (just try it). + + *<MiddleRelease>* *<MiddleDrag>* +Mouse clicks can be mapped. The codes for mouse clicks are: + code mouse button normal action ~ + <LeftMouse> left pressed set cursor position + <LeftDrag> left moved while pressed extend selection + <LeftRelease> left released set selection end + <MiddleMouse> middle pressed paste text at cursor position + <MiddleDrag> middle moved while pressed - + <MiddleRelease> middle released - + <RightMouse> right pressed extend selection + <RightDrag> right moved while pressed extend selection + <RightRelease> right released set selection end + <X1Mouse> X1 button pressed - *X1Mouse* + <X1Drag> X1 moved while pressed - *X1Drag* + <X1Release> X1 button release - *X1Release* + <X2Mouse> X2 button pressed - *X2Mouse* + <X2Drag> X2 moved while pressed - *X2Drag* + <X2Release> X2 button release - *X2Release* + +The X1 and X2 buttons refer to the extra buttons found on some mice. The +'Microsoft Explorer' mouse has these buttons available to the right thumb. +Currently X1 and X2 only work on Win32 environments. + +Examples: > + :noremap <MiddleMouse> <LeftMouse><MiddleMouse> +Paste at the position of the middle mouse button click (otherwise the paste +would be done at the cursor position). > + + :noremap <LeftRelease> <LeftRelease>y +Immediately yank the selection, when using Visual mode. + +Note the use of ":noremap" instead of "map" to avoid a recursive mapping. +> + :map <X1Mouse> <C-O> + :map <X2Mouse> <C-I> +Map the X1 and X2 buttons to go forwards and backwards in the jump list, see +|CTRL-O| and |CTRL-I|. + + *mouse-swap-buttons* +To swap the meaning of the left and right mouse buttons: > + :noremap <LeftMouse> <RightMouse> + :noremap <LeftDrag> <RightDrag> + :noremap <LeftRelease> <RightRelease> + :noremap <RightMouse> <LeftMouse> + :noremap <RightDrag> <LeftDrag> + :noremap <RightRelease> <LeftRelease> + :noremap g<LeftMouse> <C-RightMouse> + :noremap g<RightMouse> <C-LeftMouse> + :noremap! <LeftMouse> <RightMouse> + :noremap! <LeftDrag> <RightDrag> + :noremap! <LeftRelease> <RightRelease> + :noremap! <RightMouse> <LeftMouse> + :noremap! <RightDrag> <LeftDrag> + :noremap! <RightRelease> <LeftRelease> +< + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/tips.jax b/ja/tips.jax new file mode 100644 index 000000000..693ca9130 --- /dev/null +++ b/ja/tips.jax @@ -0,0 +1,457 @@ +COMMENT: +STATUS: finished 6.3.054 +TRANSLATOR: 西岡拓洋 +TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*tips.txt* For Vim version 6.3. Last change: 2004 Feb 17 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Vim を使うときのヒントとアイディア *tips* + +ユーザーマニュアルも参照してください。ユーザーマニュアルにはたくさんのtipsが含 +まれています|usr_toc.txt|。 + +C のプログラムを編集する |C-editing| +識別子が使われている場所を検索する |ident-search| +xterm でのスクリーンの切り替え |xterm-screens| +挿入モードでスクロールさせる |scroll-insert| +スムーズにスクロールさせる |scroll-smooth| +ありがちなタイプミスを修正する |type-mistakes| +単語や行の数を数える |count-items| +カーソルの位置を戻す |restore-position| +ファイルをリネームする |rename-files| +外部コマンドの実行速度を速くする |speed-up| +便利なマッピング |useful-mappings| +ヘルプファイルを圧縮する |gzip-helpfile| +16進編集 |hex-editing| +ウィンドーでシェルコマンドを実行する |shell-window| +オートコマンドで <> 表記を使う |autocmd-<>| + +============================================================================== +C のプログラムを編集する *C-editing* + +Vim には C のプログラムファイルを編集するのを手助けする機能がたくさんあります。 +詳細をジャンプして確認できるようにタグつきで機能のあらましを紹介しましょう。 + +|usr_29.txt| ユーザーマニュアルの「プログラム内の移動」 +|usr_30.txt| ユーザーマニュアルの「プログラムの編集」 +|C-indenting| テキストをタイプ中、自動的に行をインデントします。 +|=| 数行をインデントし直します。 +|format-comments| コメントを自動的にフォーマットします。 + +|:checkpath| 再帰的にインクルードされるファイルをすべて表示します。 +|[i| カーソルの下にある単語と同じものを現在のファイルとイン + クルードされるファイルから探します。 +|[_CTRL-I| "[i" でマッチした場所にジャンプします。 +|[I| カーソルの下にある単語と同じものを現在のファイルとイン + クルードされるファイルから探し出しその行のリストを表示 + します。 + +|[d| カーソルの下の単語の定義を現在のファイルとインクルード + されるファイルから探します +|CTRL-]| カーソルの下のタグにジャンプします。(例、関数の定義) +|CTRL-T| CTRL-]コマンドの前に戻ります。 +|:tselect| マッチしたタグのリストから一つ選びます。 + +|gd| カーソルの下のローカル変数の宣言にジャンプする。 +|gD| カーソルの下のグローバル変数の宣言にジャンプする。 + +|gf| カーソルの下のファイル名にジャンプする。 + +|%| 対応する(),{},[],/* */, #if, #else, #endifに移動する。 +|[/| 前のコメントが始まる場所に移動する。 +|]/| 次のコメントが終わる場所に移動する。 +|[#| 前の閉じられていない #if, #ifdef, #else に移動する。 +|]#| 次の閉じられていない #else, #endif に移動する。 +|[(| 前の閉じられていない '(' に移動する。 +|])| 次の閉じられていない ')' に移動する。 +|[{| 前の閉じられていない '{' に移動する。 +|]}| 次の閉じられていない '}' に移動する。 + +|v_ab| 「ブロック("[("から"])"まで)」を括弧を含めて選択する。 +|v_ib| 「ブロック("[("から"])"まで)の内部」を選択する。 +|v_aB| 「ブロック("[{"から"]}"まで)」を括弧を含めて選択する。 +|v_iB| 「ブロック("[{"から"]}"まで)の内部」を選択する。 + +============================================================================== +識別子が使われている場所を検索する *ident-search* + +|tags|が関数や変数の定義された場所へのジャンプに使えることはすでにわかりました +が、ときどき関数や変数が使われている場所にジャンプしたいことがあります。これ +は二つの方法で実現することができます: +1. |:grep|を使う方法。この方法はほとんどの Unix システムでうまく動作しますが遅 + いですし(全てのファイルを読むため)、一つのディレクトリの中だけしか検索でき + ません。 +2. ID ユーティリティを使う方法。この方法は速いですし複数のディレクトリを検索で + きます。この方法は位置を記憶するためにデータベースを使用します。いくつかの + プログラムを新たに入れる必要があります。そして、データベースを最新に保つこ + とが要求されます。 + +GNU id-tools と Vim を連動させる。 + +必要なもの: +- The GNU id-toolsがインストールされていること(IDを生成するにはmkidが必要でマ + クロを使うのにlidが必要です)。 +- 現在のディレクトリに "ID" と呼ばれる識別子データベースファイルがあること。 + シェルコマンド"mkid file1 file2 .."で作成可能です。 + +次の行を .vimrc に追加してください。 > + map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR> + map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR> + + function! ID_search() + let g:word = expand("<cword>") + let x = system("lid --key=none ". g:word) + let x = substitute(x, "\n", " ", "g") + execute "next " . x + endfun + +これを使うには、単語上にカーソルを置いて、"_u"とタイプすればvimは単語を含んだ +ファイルを読みこみます。同じファイルで次に単語が出てくるところを検索するには +"n"をタイプします。"_n"で次のファイルに行きます。 + +この方法は id-utils-3.2 を使って動作を確認しました (id-utlis-3.2 は id-tools +アーカイブの名前です。近くの gnu-ftp-mirror から入手してください。) + +[このアイディアはAndreas Kutscheraさんから頂いたものです] + +============================================================================== +xterm でのスクリーンの切り替え *xterm-screens* *xterm-save-screen* + +(comp.editors で質問に答えて Juergen Weigert 氏が投稿したもの) + +:> もう一つの質問は vim を終了させた後にスクリーンがそのまま残っている +:> ことに関してです。例えばいままで見ていた(編集していた)内容がスクリ +:> ーンに残っていますよね。そして前に行った ls などのコマンドの出力が +:> 消えてしまうのです(例えばスクロールバッファからなくなってしまう)。 +:> vim や他の vi 風のエディタでもどうにかして前の画面を復元する方法が +:> あるとは思うのですが、どのようにすれば実現できるのかわかりません。 +:> 教えていただけると嬉しいです。それでは。 +: +:どなたか詳しい方が答えて下さると思います。vim も vi も xterm の設定を +:みて同じことをそれぞれやっていると思うのですが。 + +これらは必ずしも同じ動作をするとは限りません、というのはこれは termcapと +terminfo の問題であるかもしれないからです。個々のタイプのターミナルの属性を記 +述するデータベースには termcap と terminfoという二つのデータベースがあるという +ことを知っておいてください。エントリーが異なっていて、かつ質問にあったプログラ +ムのどれかが termcapを使っていて他のものがterminfo を使っていた場合、違う動作 +をすることになりえます。 +(|+terminfo| も参照してください) + +この問題の場合、^[[?47h と ^[[?47l というコントロールシーケンスが答えになりま +す。これらはxtermのメインスクリーンバッファともう一方のバッファを切り替えるの +に用いられます。簡単に動作させてみるには次のコマンドを打ってみてください、 > + echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" +あなたが望む動作はこれかもしれません。 (ここで ^[ は ESC キャラクターを意味し +ます。このあとデータベースではこの記号の代わりに \E を使っていることがわかるで +しょう) + +起動時に vim は termcap の ti 変数(terminfo の場合: smcup) の値をecho し、終了 +時には te 変数(terminfo の場合: rmcup) の値をターミナルに echo します。という +わけで、これらの二つの変数が上記のコントロールシーケンスを設定する正しい場所で +す。 + +xterm の termcap エントリー(/etc/termcap にあります) と xterm のterminfo エン +トリー(/usr/5bin/infocmp -C xterm として入手します)とを比べてみてください。双 +方に次のようなエントリーが含まれている必要があります。 > + :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: + +追伸: もしなんらかの違いを見つけた場合、だれかが(システム管理者かな?) termcap + と terminfo データベースを継続的にチェックするようにした方がよいです。 + +注1: feature.h で定義される FEAT_XTERM_SAVE をつけて Vim を再コンパイルすると +内蔵の xterm は上記の "te" と "ti" エントリーを含むようになります。 + +注2: スクリーンのスイッチを行わないようにし、termcap の変更も行いたくない場合 +次の行を .vimrc に加えてください。 > + :set t_ti= t_te= + +============================================================================== +挿入モードでスクロールを行う *scroll-insert* + +挿入モードでスクリーンの外の部分を見たい場合、CTRL-X CTRL-E と CTRL-X CTRL-Y +を使うことでスクリーンをスクロールさせることができます。 + |i_CTRL-X_CTRL-E| + +これを簡単に行うには次のマッピングをすることができます: > + :inoremap <C-E> <C-X><C-E> + :inoremap <C-Y> <C-X><C-Y> +(文字通り入力するには、'<'フラグが'cpoptions'にないことを確認してください) +しかしこれを行うとカーソルの上/下の行のテキストをコピーする機能が使えなくなり +ます。 +|i_CTRL-E|. + +カーソルの回りの前後を常に見渡せるように 'scrolloff' オプションの値を大きい値 +に設定するのもよいです。'scrolloff' の値がウインドーの高さの半分以上に設定さ +れているとカーソルが常にスクリーンの中央にあることになりテキストはカーソルの +上下移動にあわせてスクロールすることになります。 + +============================================================================== +スムーズにスクロールさせる *scroll-smooth* + +もう少しスムーズにスクロールさせたい場合、次のマッピングを使うこともできます: +> + :map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y> + :map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E> + +(文字通り入力するには、'<'フラグが'cpoptions'にないことを確認してください) + +============================================================================== +ありがちなタイプミスを修正する *type-mistakes* + +しょっちゅう間違ってタイプする単語がいくつかあれば、略記を修正するのに利用しま +しょう。例えば: > + :ab teh the + :ab fro for + +============================================================================== +単語や行などの数を数える *count-items* + +バッファーの中になんらかのパターンがどのくらいの回数現れるのかを数えるには、ま +ず 'report' を 0 に設定してパターンをそれ自身に置換するコマンドを用います。報 +告される数がそのアイテムの数です。例: > + + :set report=0 + :%s/./&/g characters + :%s/\i\+/&/g words + :%s/^ lines + :%s/the/&/g "the" anywhere + :%s/\<the\>/&/g "the" as a word + +'hlsearch'をリセットするか、":nohlsearch"をしたくなるかもしれません。 + +これは'modifiable'オプションがオフのときは機能しません。代わりにビジュアルモー +ドで|v_g_CTRL-G|を使ってください。 + + *count-bytes* +バイト数を数えるにはこれを使ってください。 + + 文字列を選択してください(ブロック選択も使えます) + "y"でコピーしてください + そして、strlen()を使います > + :echo strlen(@") +改行は1バイトとして数えられます。 + +============================================================================== +カーソルの位置を戻す *restore-position* + +ときにはファイルのどこかに変更を加えて、テキストをスクロールすることなくカーソ +ルを元の位置に戻すようなマッピングを書きたくなることがあります。ファイルに書い +た日付を変更する例をあげます: + :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s + +位置を記憶する: + ms 's'マークにカーソルの位置を記録します + H ウインドウに表示された最初の行に移動します + mt その行を't'マークに記録します + +位置を元に戻す: + 't 先程のウインドウに表示された最初の行に移動します + zt その行がウインドウの最初に表示されるようにスクロールします + `s 最初の位置に戻ります + +============================================================================== +ファイルをリネームする *rename-files* + +例えば以下のようなファイルを含むディレクトリがあるとします(ディレクトリはラン +ダムに選び出したものです :-): + +buffer.c +charset.c +digraph.c +... + +そして *.c を *.bla にリネームしたい場合次のようなコマンドを実行します: > + + $ vim + :r! ls *.c + :%s/\(.*\).c/mv & \1.bla + :w !sh + :q! + +============================================================================== +外部コマンドの実行をスピードアップする *speed-up* + +いくつかの状況では外部コマンドの実行速度が非常に遅くなる場合があります。これは +Unix でのワイルドカード展開が行われた場合もそうです。いくつかのスピードアップ +する方法を紹介しましょう。 + +もし .cshrc (もしくは他のファイル、使っているシェルによります)が非常に長いなら +ばそれを対話的に使う部分とそうでない用途(セカンダリーシェルとよく呼ばれます)の +部分にわけるべきです。Vim から ":!ls" のようなコマンドを実行する場合、対話的に +行う必要はありませんよね(例えば、プロンプトを出させたり)。次の行の後にそれらを +おくようにしてください。 > + + if ($?prompt == 0) then + exit 0 + endif + +もう一つの方法は 'shell' オプションに "-f" フラグをつける方法です、例えば: > + + :set shell=csh\ -f + +(オプションの中にスペースを含めるにはバックスラッシュが必要です) +こうすると csh が .cshrc ファイルを読み込まないようにすることができます。しか +しこうすることでなんらかが動作しない場合もあるかもしれません。 + +============================================================================== +便利なマッピング *useful-mappings* + +ここでいくつか好んで使われるマッピングを紹介します。 + + *map-backtick* > + :map ' ` +シングル引用符の動作をバック引用符の動作のようにします。カーソルをマークがある +行の最初の非空白文字に移動させるのではなく、マークがある桁位置に移動させます。 + + *emacs-keys* +コマンドラインでのキーバインドを Emacs スタイルにします: > + " 行頭へ移動 + :cnoremap <C-A> <Home> + " 一文字戻る + :cnoremap <C-B> <Left> + " カーソルの下の文字を削除 + :cnoremap <C-D> <Del> + " 行末へ移動 + :cnoremap <C-E> <End> + " 一文字進む + :cnoremap <C-F> <Right> + " コマンドライン履歴を一つ進む + :cnoremap <C-N> <Down> + " コマンドライン履歴を一つ戻る + :cnoremap <C-P> <Up> + " 前の単語へ移動 + :cnoremap <Esc><C-B> <S-Left> + " 次の単語へ移動 + :cnoremap <Esc><C-F> <S-Right> + +注: これを利用するには'cpoptions'から'<'フラグを外しておく必要があります。|<>| + + *format-bullet-list* +このマッピングはブレットリストのフォーマットを整えるものです。それぞれのリスト +のエントリーの前後に空行がある必要があります。式が使われているのはマッピングを +部分的に解説するコメントを入れるためです。 > + + :let m = ":map _f :set ai<CR>" " 'autoindent' をセット + :let m = m . "{O<Esc>" " アイテムの上に空行を挿入 + :let m = m . "}{)^W" " ブレットの後のテキストに移動 + :let m = m . "i <CR> <Esc>" " インデントの為のスペースを挿入 + :let m = m . "gq}" " ブレットの後のテキストを整形 + :let m = m . "{dd" " 空行を削除 + :let m = m . "5lDJ" " ブレットの後にテキストを置く + :execute m |" マッピングを決定する + +(<> 表記法 |<>|。これらは文字どおりにタイプするということに注意してください。 +^W は "^" "W" で CTRL-W ではありません。'cpoptions' に '<' がなければ Vim にコ +ピー/ペーストすることができますよ。) + +最後のコメントは |" で始まっていることに注意してください、これは ":execute" コ +マンドが直接のコメントを受け付けないからです。 + +また 'textwidth' を 0 以外の値にしておく必要があります。例えば: > + set tw=70 + +最初の行からインデントすることになりますが次のようなマッピングでも同じことがで +きます (注: このマッピングは多くのスペースを含む長い一つの行です): > + :map _f :set ai<CR>}{a <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j +< + *collapse* +これら2つのマッピングは空行(;b)もしくは空白文字のみからなる行(;n)の連続を1行に +します。 > + :map ;b GoZ<Esc>:g/^$/.,/./-j<CR>Gdd + :map ;n GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd + +============================================================================== +ヘルプファイルを圧縮する *gzip-helpfile* + +ディスクスペースに空きがあまりない人はヘルプファイルを圧縮することができます。 +圧縮した後でもヘルプファイルを閲覧することはできます。ヘルプファイルへのアクセ +スは少し遅くなります。また "gzip" プログラムが必要です。 + +(1) すべてのヘルプファイルを圧縮するには: "gzip doc/*.txt" + +(2) "doc/tags" を編集して ".txt" を ".txt.gz" にします。 > + :%s=\(\t.*\.txt\)\t=\1.gz\t= + +(3) 次の行を vimrc に追加します: > + set helpfile={dirname}/help.txt/gz + +{dirname}はヘルプファイルのある場所です。|gzip|プラグインがファイルの解凍をし +ます。それともし圧縮された "doc" ディレクトリと同じ場所に他のVim ファイルがな +い場合、$VIMRUNTIME が他の Vim ファイルがある場所になるようにしておかなければ +なりません。|$VIMRUNTIME|も参照してください。 + +============================================================================== +ウィンドーでシェルコマンドを実行する *shell-window* + +Vim の中のウインドーでシェルを起動できるかという質問がいままでに何度かありまし +た。答えは、できないです。もしこれを実装しようとすればかなりおおくのコードを加 +えなければなりません、これが実装しない理由です。つまるところ、Vim はエディター +なのです、エディターとしてではない作業を実行するようには考えられていません。し +かしながら、同じようなことを実行するには "splitvt" プログラムを使って端末のス +クリーンもしくはウインドーの表示を分割することができます。このプログラムはたぶ +んどこかの ftp サーバーで見つけることができると思います。このプログラムに詳し +いのは Sam Lantinga <slouken@cs.ucdavis.edu> です。もう一つの方法は "window" +コマンドを利用する方法で、このコマンドは BSD Unix システムにあります。このコマ +ンドは複数のウインドーをオーバーラップさせることができます。それか "screen" プ +ログラムを使うかです。これは www.uni-erlangen.de で見つけることができ、このプ +ログラムでウインドーの積み重ねをすることができます。 + +============================================================================== +16進編集 *hex-editing* *using-xxd* + +ユーザーマニュアルの|23.4|を参照してください。 + +もしそのファイルがバイナリファイル特有の拡張子(exe、binなど)をしているときは、 +あなたの<.vimrc>に次のオートコマンドを加えることで、変換の過程を自動化しておく +こともできます。"*.bin"をあなたの編集したいファイルの拡張子の、カンマで区切ら +れたリストに変えてください: > + + " vim -b : edit binary using xxd-format! + augroup Binary + au! + au BufReadPre *.bin let &bin=1 + au BufReadPost *.bin if &bin | %!xxd + au BufReadPost *.bin set ft=xxd | endif + au BufWritePre *.bin if &bin | %!xxd -r + au BufWritePre *.bin endif + au BufWritePost *.bin if &bin | %!xxd + au BufWritePost *.bin set nomod | endif + augroup END + +============================================================================== +オートコマンドで <> 表記を使う *autocmd-<>* + +<> 表記は :autocmd の引数として使っても正しく解釈されません。特殊な文字を入力 +するのを避けるには、<> 表記をするための自己破壊的なマッピング行ってそれからオー +トコマンドの中でそのマッピングを呼び出すことで実現することもできます。例: + + *map-self-destroy* > + " この方法はファイル名を自動的にメニューリストに追加するものです。 + " 自己破壊的なマッピングを使っています! + " 1. ファイル名に含まれる 'dots' を \. に変更するためにバッファーの一つの + " 行を使います。 + " 2. それをレジスター '"' に格納します。 + " 3. その名前をバッファーメニューリストに追加します。 + " 警告: この方法にはいくらか副作用があります。現在のレジスターの内容を上書 + " きしたり "i" コマンドへのマッピングをすべて削除してしまったりします。 + " + autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR> + autocmd BufNewFile,BufReadPre * normal i + +もう一つのよりよい方法は ":execute" コマンドを使う方法です。文字列の中ではバッ +クスラッシュを前置することで <> 表記が使えます。それまであったバックスラッシュ +は \\ という風に2回重ねるのを忘れないでください。また '"' の前にもバックスラッ +シュを前置しなければなりません。 +> + autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>" + +実際のバッファメニューではユーザー定義関数を使うべきですが(|:function|を参照)、 +そうすると<>表記は使いませんので、ここでの例としてそれを使うのは不適切です。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/version4.jax b/ja/version4.jax index 45a0fac83..6c91ed781 100644 --- a/ja/version4.jax +++ b/ja/version4.jax @@ -2,7 +2,7 @@ COMMENT: Version 4の新機能一覧表 STATUS: finished 6.3.054 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 -MAINTEINER: 村岡太郎<koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> *version4.txt* For Vim version 6.3. Last change: 2004 Mar 12 @@ -85,7 +85,7 @@ sizeof(int) を持つマシーンを区別することができます。そう ました。これはあまり合理的とは言えなかったので新しいファイルを作成するように変 更されました。ファイルが存在する場合は上書きされません(この方法で追加するのに なれている人が今まであったファイルを破壊するのを防ぐためです。) - |-w| +[後に再び削除された] |-w| バックスペースとデリートキー *backspace-delete* @@ -316,7 +316,7 @@ t_undo t_&8 <Undo> アンドゥキー *t_undo* 'icon' と 'title' オプションの初期値を変更 *icon-changed* ------------------------------------------ -'Thanks for flying Vim' のタイトルが残るのを避けるために、'title' オプションは +"Thanks for flying Vim" のタイトルが残るのを避けるために、'title' オプションは もとのタイトルを復元できる場合にのみ初期値でオンになるようになりました。 |'title'| From 9cb43340e88d05386624e5aa62b1ee9181f759a0 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 29 Jan 2005 07:50:03 +0000 Subject: [PATCH 013/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@13 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/os_amiga.jax | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/ja/os_amiga.jax b/ja/os_amiga.jax index 1ad0450c4..89fb71c53 100644 --- a/ja/os_amiga.jax +++ b/ja/os_amiga.jax @@ -1,7 +1,7 @@ COMMENT: -STATUS: suspend 6.3.054 +STATUS: finished 6.3.054 TRANSLATOR: 西岡拓洋 -TRANSLATOR: 村岡太郎<koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> *os_amiga.txt* For Vim version 6.3. Last change: 2004 Apr 25 @@ -83,54 +83,55 @@ TERMCAP オプション付きで再コンパイルします。Manx 5.x と SAS 6 ------------------------------------------------------------------------------ Vim for MorphOS *MorphOS* -[this section mostly by Ali Akcaagac] +[このセクションの大部分は Ali Akcaagac による] -For the latest info about the MorphOS version: +MorphOS 版についての最新情報は: http://www.akcaagac.com/index_vim.html Problems ~ -There are a couple of problems which are not MorphOS related but more Vim and -UN*X related. When starting up Vim in ram: it complains with a nag requester -from MorphOS please simply ignore it. Another problem is when running Vim as -is some plugins will cause a few problems which you can ignore as well. -Hopefully someone will be fixing it over the time. +MorphOSではなくVimやUN*Xに関連した問題が2つあります。ram(訳注1)内のVimを起動す +るとMorphOSは小煩いrequester(訳注2)を出していろいろと不満を言いますが、それは +無視してください。もう1つ、普通にVimを起動するといくつかのプラグインが無視でき +るような問題を起こします。いつか誰かが直してくれることでしょう。 +訳注1: ram = RAM ディスク? +訳注2: requester = ダイアログ or メッセージボックス? -To pass all these problems for now you can either run: +とりあえずこれらの問題には目をつむり、次のように起動するか: - vim <file to be edited> + vim <編集するファイル> -or if you want to run Vim plain and enjoy the motion of Helpfiles etc. it then -would be better to enter: +もしくは、このヘルプの意向を享受し、質素に Vim を起動したいなら、次のように +するのが良いでしょう: - vim --noplugins <of course you can add a file> + vim --noplugin <もちろんファイルを指定することもできます> -Installation ~ +インストール ~ -1) Please copy the binary 'VIM' file to c: -2) Get the Vim runtime package from: +1) 'VIM' バイナリを c: にコピーしてください +2) Vim のランタイムパッケージを次から入手してください ftp://ftp.vim.org/pub/vim/amiga/vim62rt.tgz - and unpack it in your 'Apps' directory of the MorphOS installation. For me - this would create following directory hierarchy: + そしてそれを MorphOS がインストールされている場所の 'Apps' ディレクトリに + 展開してください。私の場合は次のような階層になってます: MorphOS:Apps/Vim/Vim62/... -3) Add the following lines to your s:shell-startup (Important!). +3) s:shell-startup に次の行を加えてください (重要!)。 ;Begin VIM Set VIM=MorphOS:Apps/Vim/Vim62 Assign HOME: "" ;End VIM -4) Copy the '.vimrc' file to s: +4) '.vimrc' ファイルを s: にコピーしてください。 -5) There is also a file named 'color-sequence' included in this archive. This - will set the MorphOS Shell to show ANSI colors. Please copy the file to s: - and change the s:shell-startup to: +5) アーカイブには 'color-sequence' というファイルも含まれています。これは + MorphOS のシェルで ANSI カラーを表示するようにします。このファイルを s: に + コピーし s:shell-startup を以下のように変更してください: ;Begin VIM Set VIM=MorphOS:Apps/Vim/Vim62 From 62d4e8d4fd5ffb5ecac2fd06f1f7e8fdb3f2ca38 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 29 Jan 2005 09:09:35 +0000 Subject: [PATCH 014/783] add 10 usermanual files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@14 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/usr_01.jax | 186 +++++++++++ ja/usr_02.jax | 513 +++++++++++++++++++++++++++++++ ja/usr_03.jax | 661 ++++++++++++++++++++++++++++++++++++++++ ja/usr_04.jax | 516 +++++++++++++++++++++++++++++++ ja/usr_05.jax | 635 ++++++++++++++++++++++++++++++++++++++ ja/usr_06.jax | 287 +++++++++++++++++ ja/usr_07.jax | 500 ++++++++++++++++++++++++++++++ ja/usr_08.jax | 512 +++++++++++++++++++++++++++++++ ja/usr_09.jax | 301 ++++++++++++++++++ ja/usr_10.jax | 830 ++++++++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 4941 insertions(+) create mode 100644 ja/usr_01.jax create mode 100644 ja/usr_02.jax create mode 100644 ja/usr_03.jax create mode 100644 ja/usr_04.jax create mode 100644 ja/usr_05.jax create mode 100644 ja/usr_06.jax create mode 100644 ja/usr_07.jax create mode 100644 ja/usr_08.jax create mode 100644 ja/usr_09.jax create mode 100644 ja/usr_10.jax diff --git a/ja/usr_01.jax b/ja/usr_01.jax new file mode 100644 index 000000000..dfb05055f --- /dev/null +++ b/ja/usr_01.jax @@ -0,0 +1,186 @@ +COMMENT: 付属マニュアルについて +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_01.txt* For Vim version 6.3. Last change: 2004 May 01 + + VIM USER MANUAL - by Bram Moolenaar + + マニュアルについて + + +この章ではvimといっしょに入手できるマニュアルを紹介します。 +どの章にどんなコマンドの説明があるかを知るのにお使いください。 + +|01.1| 2つのマニュアル +|01.2| インストール済みのvim +|01.3| vimチュートリアルの利用 +|01.4| 著作権(copyright) + + Next chapter: |usr_02.txt| vimの最初の一歩 +Table of contents: |usr_toc.txt| + +============================================================================== +*01.1* 2つのマニュアル + +vimのマニュアルは2部構成になっています。 + +1. ユーザーマニュアル + 簡単なものから複雑なものまで、具体的な例を使って説明しています。本のよう + に最初から順を追って読んでください。 + +2. リファレンスマニュアル + vimの動作の全てについての正確な説明書です。 + +このマニュアルの表記方法については |notation| をご覧ください。 + + +他のトピックへのジャンプ +------------------------ +2つのマニュアル間にはハイパーリンクが張ってあります。これを使うと、編集手順 +の説明とそこで使っているコマンド/オプションの正しい定義とを素早く行き来でき +ます。次のコマンドがあります。 + + CTRL-] : カーソル位置の項目にジャンプします。 + CTRL-O : ジャンプ先から戻ります。 + +リンクは |bars| のように縦棒で囲っています。またオプション名は 'number' のよ +うにアポストロフィで、コマンドは":write"のように引用符で囲っています。これ +以外の単語もリンクになっている場合があります。実験:カーソルを CTRL-] の上に +動かして、CTRL-] を押してみましょう。 + +他の項目は":help"コマンドで見つけることができます。|help.txt|をご覧ください。 + +============================================================================== +*01.2* インストール済みのvim + +マニュアルの大部分はvimがうまくインストールできていることを前提にしていま +す。まだインストールしていないとか、うまく動かない(ファイルが見つからない、 +GUIでメニューが出ないなど)とかであれば、まずインストールの章 |usr_90.txt| +を読んでください。 + *not-compatible* +このマニュアルでは「vi互換スイッチ('compatible')」がoffであることを前提にし +ている個所がたくさんあります。大部分のコマンドは関係ないのですが、重要なもの +(例:複数回アンドゥできる機能)もあります。正しい設定で使っていることを確かめ +るには、標準添付のサンプルvimrcをコピーするのが簡単です。次のようにvim中で実 +行すれば、どこにあるかを探す必要はありません。 +なお、コピーの方法はお使いのシステムによって異なります。 + +Unix: > + :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc +MS-DOS, MS-Windows, OS/2: > + :!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc +Amiga: > + :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc + +既にvimrcファイルがあるのなら、控えを取っておいた方がよいでしょう。 + +vimを起動したら、vi互換モードオプション'compatible'はoffにしておきます。現在 +の状況は次のコマンドで確認できます。 > + + :set compatible? + +"nocompatible"と表示されればOKです。"compatible"と表示されるようなら、問題 +があります。オプションがonである理由を突き止めないといけません。おそらく、 +前節で書きこんだファイルが見つからなかったのでしょう。次のコマンドで探しま +しょう。 + + :scriptnames + +このリストの中にあなたのvimrcファイルがないようなら、その場所と名前を調べ +ます。リストにあるようなら、そのリストの誰かが'compatible'オプションをonに +しているはずです。 + +もっと詳しくは|vimrc|と|compatble-default|をご覧ください。 + + Note: + このマニュアルはvimを普通に使うための説明書です。実は、evim(=easy vim) + という別のvimがあります。これもvimなのですが、Notepadのような + 「クリック&入力」方式であったり、常に挿入モードあったり、普通のvim + とはかなり雰囲気が違います。このユーザーマニュアルではevimには触れま + せん。(notepad形式だから)使えばわかるはずです。 + 詳しいことは|evim-keys|をご覧ください。 + +============================================================================== +*01.3* Vimtutorの使い方 *tutor* *vimtutor* + +テキストを読むだけじゃなく(退屈だし!)初めてvimを使ってみる人のために、 +vimtutorというのを用意しています。これは30分の演習コースで、最低限のvim +の使い方を繰作しながら覚えられます。 + +UnixやMS-Windowsで、vimを普通にインストールしてあれば、シェルから起動でき +ます。 > + + vimtutor + +このコマンドは演習用ファイルをバックアップします。ですから演習用ファイルを +壊してしまうことを気にせず、編集の練習ができます。 +各国語への翻訳バージョンもいくつかあります。あなたの国語用があるかどうかは +2文字の言語コードで確認できます。次はフランス語の場合の例です。 > + + vimtutor fr + +OpenVMSでは、VMSプロンプトから次のようにして起動できます。 > + + @VIM:vimtutor + +上の例と同じようにオプションで2文字の言語コードを指定できます。 + + +Unix以外のシステムでは、多少の作業が必要です。 + +1. 演習用ファイルをコピーします。これはvimでできます(どこにあるかを知っ + ていますから) +> + vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' +< + 上は、"TUTORCOPY"というファイルをカレントディレクトリに作ります。翻訳 + バージョンを使うなら、2文字の言語コードを追加します。これは、フランス語 + の場合の例です。 +> + vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q' +< +2. vimでコピーしたファイルを編集します。 +> + vim -u NONE -c "set nocp" TUTORCOPY +< + オマケの引数はvimをイイ感じで起動してくれます。 + +3. 練習が終わったら、コピーしたファイルを削除します。 +> + del TUTORCOPY +< +============================================================================== +*01.4* Copyright *manual-copyright* + +vimのユーザマニュアルとリファレンスマニュアルの著作権は以下の通りです。 + Copyright (c) 1988-2003 by Bram Moolenaar +これは Open Publication License, v1.0 以降での項目と条件に従って配布される +ものです。最新バージョンは以下で入手できます。 + http://www.opencontent.org/opl.shtml + +マニュアルに貢献する人々は上記の著作権通達に同意しなければなりません。 + + *frombook* +ユーザマニュアルの一部は以下の本から抽出しています。 + "Vi IMproved - Vim" Steve Oualline著 + (出版:New Riders Publishing, ISBN: 0735710015) +この本はOpen Publication License を適用します。一部分を引用していますが、 +変更を加えています。(図を削除したり、vim6.0用に書き直したり、間違いを訂正し +たりしています) |frombook|タグの漏れがあったとしても、この本からの引用がある +ことを否定するものではありません。 + +Steve Oualline と New Riders が、この本をOPLで出版していただいたことに深く +感謝します。ユーザマニュアルの執筆にあたり、大いに助けとなりました。単に文面 +の提供などではなく、格調や品位のある分章をいただきました。 + +もしこのマニュアルの販売で収益を上げた方がおられたら、是非その利益の一部を +寄付いただいて、ウガンダのAIDS犠牲者を助けてあげてください。詳しくは|iccf|を +ご覧ください。 + +============================================================================== + +Next chapter: |usr_02.txt| vimの最初の第一歩 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_02.jax b/ja/usr_02.jax new file mode 100644 index 000000000..a4279281c --- /dev/null +++ b/ja/usr_02.jax @@ -0,0 +1,513 @@ +COMMENT: 編集するために必要な最低限の情報 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_02.txt* For Vim version 6.3. Last change: 2003 May 04 + + VIM USER MANUAL - by Bram Moolenaar + + vimの最初の一歩 + + +この章では、vimを使ってファイルを編集するのにとりあえずこと足りるだけの +情報を提供します。上手でも速くもありませんが、とにかく編集はできます。 +ここで出てくるコマンドには多少の時間を取って練習してください。以降に出てくる +コマンドの基礎となるものですから。 + +|02.1| 初めてvimを使う +|02.2| 文字を挿入する +|02.3| 動き回る +|02.4| 文字を削除する +|02.5| アンドゥ(取り消し)とリドゥ(やり直し) +|02.6| 他の編集コマンド +|02.7| 終わり方 +|02.8| ヘルプの見つけ方 + + Next chapter: |usr_03.txt| カーソルの移動 + Previous chapter: |usr_01.txt| このマニュアルについて +Table of contents: |usr_toc.txt| + +============================================================================== +*02.1* 初めてvimを使う + +vimを動かすには次のコマンドを入力します。 > + + gvim file.txt + +UNIXでは、コマンドプロンプトで入力します。Microsoft Windows環境では、MS-DOS +プロンプトを開いて、入力してください。 +いずれの場合でも、vimは file.txt という名前のファイルの編集を開始します。 +画面には次のように表示されていることでしょう。 + + +---------------------------------------+ + |# | + |~ | + |~ | + |~ | + |~ | + |"file.txt" [New file] | + +---------------------------------------+ + ("#" はカーソル位置を示します) + +ティルド(~)の行は、ファイルにその行がないことを示します。いい換えれば、その +ファイルの末尾より後ろを表示する時はティルド表示になります。画面の下の方に、 +編集中のファイル名は"file.txt"で、新しいファイルであることを示しています。 +この行をメッセージ情報行と呼びます。メッセージ情報行の表示は一時的で、他の +メッセージを表示する時には前のメッセージに上書きして表示します。 + + +VIM コマンド +------------ + +gvimでは編集用に新たなウィンドウを生成します。一方、次のコマンドを +用いた場合、 > + + vim file.txt + +コマンドウィンドウの中で編集を行えます。言い換えると、xtermの中で実行すれば、 +vimはxtermウィンドウ内で動くのです。Microsoft Windows上でMS-DOSプロンプト +画面を使っていれば、エディタはそのウィンドウの中で動きます。 +ウィンドウ内の文字表示はどちら(gvimでもvimでも)のバージョンでも同じに見えま +すが、gvimにはメニューバーなどの追加機能があります。詳しくは後で述べます。 + +============================================================================== +*02.2* 文字列の挿入 + +vimはモード依存型のエディタです。そのため現在のモードによってエディタの動き +は異なります。一番よく使うモードは、「通常モード」と「挿入モード」です。通常 +モードでは入力した文字はコマンドとして扱われます。挿入モードでは入力した文字 +はそのまま挿入されます。 +vimを起動した時は通常モードから始まります。挿入モードに入るには、"i"コマンド +(iはInsertの意味です)を入力します。これで、文章を入力できるようになります。 +その文章はファイルに挿入されます。入力を間違っても気にしないようにしましょう。 +後で修正する方法も説明します。 +次のようなプログラマーのリメリック(詩の一種)を次のように入力したとしましょう。 +> + iA very intelligent turtle + Found programming UNIX a hurdle + +"turtle"を入力した後に<Enter>キーを押すと改行します。最後に<Esc>キーを押す +と、挿入モードを終了して、通常モードに戻ります。この時、vimウィンドウには +次のような2行を表示しています。 + + +---------------------------------------+ + |A very intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + + +今は何モード? +-------------- + +今現在のモードが何かを知りたければ、次のコマンドを入力してください。 > + + :set showmode + +":"(コロン記号)を入力すると、カーソルがウィンドウの最下段に移動します。ここ +はコロンコマンド(最初が":"で始まるコマンド)を入力する場所です。コマンドの最 +後に<Enter>キーを入力します(コロンで始まるコマンドは全てこの方法を使います) +さて、ここで"i"コマンドを入力すると、ウィンドウの最下段に"― 挿入 ―"という +表示が現れます。なお、以降ではこのようなコマンドのことを「コマンドラインモー +ドのコマンド」と呼びます。 + + + +---------------------------------------+ + |A very intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + |― 挿入 ― | + +---------------------------------------+ + +<Esc>を押すと通常モードに戻り、最下段は空白となります。 + + +トラブルを避ける +---------------- + +vimを使い始めた時にはモードを混同してしまいがちです。これは今のモードが解ら +なくなったり、間違ってモード変更を伴うコマンドを入力した時に起こります。 +どのモードにいる場合でも<Esc>を押すと通常モードに戻ります。時には<Esc>を2回 +押さないといけない場合もあります。通常モードで<Esc>を押すと、警告音が鳴りま +す。つまりvimが警告音を出したら通常モードだ、ということです。 + +============================================================================== +*02.3* 動き回る + +通常モードに戻ると、次のキーを使ってカーソルを動かすことができます。 + + h 左 *hjkl* + j 下 + k 上 + l 右 + +最初は、まるでランダムに選んだコマンドに見えるかもしれませんね。"L"キーで +「右(Right)」に移動するなんて聞いたことないですよね。でもこれには実に合理的 +な理由があります。エディタで一番よく使うコマンドはカーソル移動コマンドです。 +viでは右手のホームポジションの段にそのコマンドを集中させたのです。つまり、 +このコマンドは(特に10本の指を使ってタイプする人が)一番速く打てる場所にレイ +アウトしてあるのです。 + + Note: + なおカーソル移動は矢印キーでも行えます。でもそれだと、編集速度は大 + きく落ちます。これは矢印キーを押すのにメインキー(アルファベットの + ある部分)から手を動かさなければならないためです。 + 1時間に数百回もそれをすることを考えると、合計時間はバカにならない + 量となるでしょう。 + また、世の中には矢印キーのないキーボードや変な場所に配置してあるキー + ボードもあります。こんな場合でもhjklの使い方を知っていれば役に立つ + ことでしょう。 + +このコマンドは、"h"は左で、"l"は右、"j"は下を指している、とでも覚えておきま +しょう。図で示すと次の通りです。 > + + k + h l + j + +移動コマンドを覚える一番の方法は使ってみることです。"i"コマンドを使ってさら +に数行の文を打ちましょう。その上で、hjkl キーを使って動き回り、いろんな場所 +に文字を挿入してみましょう。通常モードに戻るのには<Esc>キーを押すのを忘れず +に。|vimtutor| を使うのも慣れるにはいい方法でしょう。 + +日本のユーザーへ、Hiroshi Iwataniさんは次のような提案をしています。 + + Komsomolsk + ^ + | + Huan Ho <--- ---> Los Angeles + (Yellow river) | + v + Java (ジャワ島。プログラミング言語のあれではない) + +============================================================================== +*02.4* 文字を削除する + +文字を削除するにはカーソルをその上に置いて"x"を押します。(これはずっと昔に +タイプライタで消したい文字の上に"xxxxxx"などとやっていたのと同じです)例えば +カーソルを1行目に動かして、xxxxxxx(xを7つ)打ち、"A very "を消しましょう。 +その結果は次のようになります。 + + +---------------------------------------+ + |intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + +さて、ここに新たに文を挿入しましょう。例えば次を入力します。 > + + iA young <Esc> + +これは挿入を"i"コマンドで始め、"A young "を入力します。次に(最後の<Esc>キー +で)挿入モードを抜けます。結果は次のようになります。 + + +---------------------------------------+ + |A young intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + + +行削除 +------ + +行全体を消すには"dd"コマンドを使います。以降の行は空白行を埋めるように +上に繰り上げられます。 + + +---------------------------------------+ + |Found programming UNIX a hurdle | + |~ | + |~ | + |~ | + | | + +---------------------------------------+ + + +改行を取る +---------- + +vimでは複数の行を1行にまとめられます。これは行と行の間にある改行を削除する +ことに他なりません。"J"コマンドでそれを行えます。 +例えば、次の2行があるとします。 + + A young intelligent ~ + turtle ~ + +最初の行にカーソルを動かし"J"を押すと次のようになります。 + + A young intelligent turtle ~ + +============================================================================== +*02.5* アンドゥ(取り消し)とリドゥ(やり直し) + +間違って削除しすぎたとしましょう。確かに、打ち直せばいいのですが、もっと簡単 +な方法があります。"u"コマンドは直前の編集結果をアンドゥ(取り消し)します。 +実例で見てみましょう。"dd"コマンドで1行目を削除した後で、"u"コマンドを実行 +します。すると削除した行が復元されます。 +もう一つの例。カーソルを1行目の A まで動かします。 + + A young intelligent turtle ~ + +ここで xxxxxxx を使い、"A young"を削除します。結果は次のようになります。 + + intelligent turtle ~ + +ここで、"u"を押すと、直前の削除が取り消されます。直前の削除では"g"を削除して +いました。それが取り消されて"g"が復活します。 + + g intelligent turtle ~ + +もう一度"u"を実行すると、最後の1つ前の削除("n")が取り消されます。 + + ng intelligent turtle ~ + +次の"u"コマンドは "u" の削除を、と同様に取り消します。 + + ung intelligent turtle ~ + oung intelligent turtle ~ + young intelligent turtle ~ + young intelligent turtle ~ + A young intelligent turtle ~ + + Note: + "u"を2回押した時に、最初の状態に戻ってしまったのであれば、きっとvi + 互換モードで動いています。|not-compatible|を見て、修正しておきま + しょう。 + このマニュアルでは「vim方式」でやることを前提にしています。もし古き + 良き時代のvi方式を望むのであれば、細かな違いが各所にありますので、 + 気をつけてください。 + + +リドゥ(やり直し) +---------------- + +もし、アンドゥをやり過ぎたら、CTRL-R(リドゥ)を押して直前のコマンドを反転させ +ることができます。言い換えると、アンドゥを取り消すのです。実際に2回CTRL-Rを +押してみましょう。"A "の2文字が消えます。 + + young intelligent turtle ~ + +アンドゥコマンドには特別バージョンがあります。"U"(行アンドゥ)コマンドです。 +行アンドゥコマンドは直前に編集した行の全変更を取り消します。このコマンドを +2回実行すると、1回目の"U"を取り消します。 + + A very intelligent turtle ~ + xxxx "very"を削除 + + A intelligent turtle ~ + xxxxxx "turtle"を削除 + + A intelligent ~ + "U"コマンドで行全体をアンドゥ + A very intelligent turtle ~ + "U"コマンドを"u"でアンドゥ + A intelligent ~ + +"u"がアンドゥで、 CTRL-R がリドゥであるのに対し、"U"コマンドはそれ自身が変更 +コマンドです。ちょっとわかりにくいかも知れませんが、心配はいりません。"u"と +CTRL-Rがあればどんな場合でも大丈夫だ、ってことです。 + +============================================================================== +*02.6* 他の編集コマンド + +vimには文章を編集する数多くのコマンドがあります。以下の|Q_in|をご覧ください。 +ここでは頻繁に使うものだけを述べます。 + + +APPEND(追記) +------------ + +"i"コマンドはカーソル位置の前に文字列を挿入します。でも**行末**に何か追加 +したい時にはどうしましょう?これをやるにはカーソル位置の後ろに文を挿入する +必要があります。これは"a"コマンドでできます。 +例えば、この行を + and that's not saying much for the turtle. ~ +次のように変更したいとします。 + and that's not saying much for the turtle!!! ~ + +まずカーソルを行末のピリオドの上に動かし、"x"でピリオドを消します。この時 +カーソルは 行末の turtle の "e"の上にあります。ここで、次のコマンドを入力 +します。 > + + a!!!<Esc> + +これでturtleの後ろに3つの"!"記号を追加します。 + + and that's not saying much for the turtle!!! ~ + + +新しい行を空ける +---------------- + +"o"コマンドは新しい行をカーソル位置の下に作り、vimを挿入モードにします。 +ここで、新たな行に文章を入力できます。 +以下のような2行があり、カーソルが最初の行のどこかにあるとします。 + + A very intelligent turtle ~ + Found programming UNIX a hurdle ~ + +ここで"o"コマンドを使って入力します。 + + oThat liked using Vim<Esc> + +結果は次の通りです。 + + A very intelligent turtle ~ + That liked using Vim ~ + Found programming UNIX a hurdle ~ + +"O"コマンド(大文字)もあり、こちらはカーソル行の上に空行を作ります。 + + +カウンタの利用 +-------------- + +9行上に移動するには、"kkkkkkkkk"と入力することもできますが、"9k"でもOKで +す。実はvimでは多くのコマンドの前に数値を指定できます。既に出てきたように +3つの"!"を追加するのに"a!!!<Esc>"と入力しました。これを"3a!<Esc>"としても +同じ結果になります。最初の"3"は以降のコマンドを3回実行することを示します。 +3文字削除するのであれば、"3x"というコマンドでできます。このような回数指定の +ことをカウンタと呼びます。カウンタは常に対象となるコマンドより前に指定します。 + +============================================================================== +*02.7* 終わり方 + +vimを終わるには、"ZZ"コマンドを使います。このコマンドはファイルを保存して、 +終了します。 + + Note: + 他の多くのエディタと違い、vimには自動的にバックアップを作成する機能 + はありません。"ZZ"と打つと、変更点は上書きされるため、以前のものを + 取り戻す方法はありません。もちろん設定さえ行えば、バックアップを生成 + するようにできます。|07.4|を見てください。 + + +変更を破棄する +-------------- + +何らかの変更を行った後で、突然もっと良い方法を思いつくこともあるでしょう。 +大丈夫です。vimには「全部投げ捨てて終了する」コマンドがあります。 > + + :q! + +コマンドを確定するには<Enter>キーが必要ですよ。お忘れなく。 + +詳しい内容に興味がある方に説明しておくと、このコマンドは3部構成になっていて +最初の":"はコマンドラインモードに入るため、次の"q"はエディタを終了するコマン +ド、最後の"!"は上書きのコマンドオプションです。 +上書きコマンドオプションはvimに変更内容を投げ捨てさせるために必要です。これ +を":q"とすると、vimは次のようなエラーを出して、終了を拒否します。 + + E37: No write since last change (use ! to override) ~ + E37: 最後の変更が保存されていません (! で変更を破棄) ~ + +上書きを指定することで、vimに「バカげたことをしてるように見えるのはわかって +る。でもボクは大人だし、本当にそうしたいんだ」と告げているわけです。 + +もし、vimでの編集を続けたいのであれば、":e!"コマンドで元のファイルを読み込 +み直してくれます。 + +============================================================================== +*02.8* ヘルプで探す + +知りたいことは何でもvimもヘルプファイルで見つけられます。 +聞くのを嫌がらないでください。 +全体的なヘルプは次のコマンドで見ることができます。 > + + :help + +ファンクションキー<F1>を使ってもいいです。キーボードに<Help>キーがあれば、 +それも使える場合があります。 +何も引数を与えなければ、":help"は全体的なヘルプウィンドウを表示します。vim +の作者はとっても賢い(いや、とっても怠け者かも)ので、ヘルプウィンドウには +普通の編集ウィンドウをそのまま使っています。そのおかげでヘルプの情報を探す +時にもvimの全コマンドが使えます。つまり、h , j , k , l で 上下左右に動ける +のです。 +ヘルプウィンドウを閉じるには、エディタを終わる時と同じコマンド、"ZZ"を使え +ます。この場合は、ヘルプウィンドウを閉じるだけで、vimは終わりません。 + +ヘルプを見ていると、縦棒"|"で囲まれた文字に気づくでしょう。(例:|help|) +これはハイパーリンクです。この場所にカーソルを置いて、CTRL-](タグジャンプ) +を押します。するとそのタイトルのヘルプにジャンプします。(理由は省きますが、 +vimではハイパーリンクのことをタグと呼びます) CTRL-] はカーソル下の単語を +タグとみなして、その場所にジャンプします。 +ジャンプを繰り返した後で、戻りたくなった場合は CTRL-T(タグをポップする)を +押せば直前の場所に戻ります。この場合はCTRL-O(古い場所へのジャンプ)もうまく +動くでしょう。 + +ヘルプ画面のトップには *help.txt* といった表記があります。"*"で囲まれた名前 +はヘルプシステム側でタグ(ハイパーリンクの飛び先)を定義する時に使っていま +す。タグの使い方の詳細は、|29.1|をご覧ください。 + +項目名を指定してヘルプを見るには次のコマンドを使います。 > + + :help {subject} + +例えば"x"コマンドのヘルプを見るには次のように指定します。 > + + :help x + +文字の削除方法を知りたければ次のコマンドです。 + + :help deleting + +vimコマンドの全目次を見るには次のコマンドです。 + + :help index + +コントロール文字のコマンド(例えば、CTRL-A)のヘルプを見るには、CTRL-に続けて +その文字を指定します。 > + + :help CTRL-A + +vimにはいろんなモードがあります。特に指定しなければ、ヘルプは通常モードのコ +マンドのヘルプを表示します。例えば、以下のコマンドは通常モードのCTRL-Hコマン +ドのヘルプを表示します。 + + :help CTRL-H + +他のモードであることを示したければ、プレフィクスを付けます。挿入モードのヘル +プが見たければ、"i_"を付けます。CTRL-Hの場合なら次のようになります。 > + + :help i_CTRL-H + +vimの起動時に、コマンドライン引数が指定できます。引数は先頭が"-"で始まりま +す。例えば、"-t"オプションの意味を知るには次のコマンドと使います。 > + + :help -t + +vimでは数多くのオプションがあり、それを設定することでカスタマイズができま +す。このオプションのヘルプが見たければ、アポストロフィでそれを囲ってくださ +い。例えば、'number'オプションの意味を知るには次のコマンドを使います。 > + + :help 'number' + +全モードのプレフックス一覧は |help-context| をご覧ください。 + +特殊キーを指定したければ、不等号"<",">"で囲みます。例えば、挿入モードでの上 +矢印キーのヘルプはこのコマンドです。 > + + :help i_<Up> + +次のようなエラーが出て、その意味がよくわからない場合、 + + E37: No write since last change (use ! to override) ~ + E37: 最後の変更が保存されていません (! で変更を破棄) ~ + +ヘルプの行頭に表示されるエラーIDを指定できます。 > + + :help E37 + +============================================================================== + +Next chapter: |usr_03.txt| 動いてみる + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_03.jax b/ja/usr_03.jax new file mode 100644 index 000000000..f09a30a0e --- /dev/null +++ b/ja/usr_03.jax @@ -0,0 +1,661 @@ +COMMENT: カーソル移動 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_03.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + VIM USER MANUAL - by Bram Moolenaar + + 動いてみる + + +文の入力や削除の前には、カーソルを目的の場所に動かさなくてはなりません。 +vimはカーソル移動のための数多くのコマンドを持っています。本章では、その中で +も重要なコマンドの使い方を述べます。一覧は|Q_lr|をご覧下さい。 + +|03.1| 単語ごとの移動 +|03.2| 行頭、行末への移動 +|03.3| 文字への移動 +|03.4| カッコ類の呼応 +|03.5| 特定の行への移動 +|03.6| 現在の場所を表示 +|03.7| スクロール +|03.8| 簡単な検索 +|03.9| 簡単なパターン検索 +|03.10| マークの使用 + + Next chapter: |usr_04.txt| 小さな変更 + Previous chapter: |usr_02.txt| vimの最初の一歩 +Table of contents: |usr_toc.txt| + +============================================================================== +*03.1* 単語ごとの移動 + +カーソルを1単語先に進めるには、"w"コマンドを使います。他のvimコマンドも +そうですが、複数の単語を一気に進めるために数値による回数指定(カウンタ) +ができます。例えば、"3w"では3単語進めます。図で示すと次のようになります。 + + This is a line with example text ~ + --->-->->-----------------> + w w w 3w + +"w"は次の単語の先頭に移動します。既にカーソルが単語の先頭にある場合も、その +次の単語の先頭に移動します。 +逆に"b"コマンドは直前の単語の先頭に戻ります。 + + This is a line with example text ~ + <----<--<-<---------<--- + b b b 2b b + +"e"コマンドは次の単語の末尾に移動します。"ge"は直前の単語の末尾に移動します。 + + This is a line with example text ~ + <- <--- -----> ----> + ge ge e e + +カーソルが行末の単語にある場合、"w"コマンドは次の行の最初の単語に進みます。 +これを使うと"l"よりもずっと早く文章の中を動けます。"b"なら逆方向に同じルールで動きます。 + +単語の末尾には"."や"-"、")"といったアルファベット以外の文字がきます。vimが +何を単語とみなすかは、'iskeyword'オプションの設定で変更できます。 +空白類で区切られた単語(WORD)間を移動することもできます。これは普通に使う +単語(word)とは若干違うため、大文字で書いています。WORD単位で動くコマンド +は全部大文字です。図で示すと次の通りです。 + + ge b w e + <- <- ---> ---> + This is-a line, with special/separated/words (and some more). ~ + <----- <----- --------------------> -----> + gE B W E + +小文字と大文字のコマンドを両方使うと、文章中をより素早く動けるようになり +ます。 + +============================================================================== +*03.2* 行頭、行末への移動 + +"$"コマンドはカーソルを行末に移動します。キーボード上に<End>キーがあれば、 +それも同じ意味で使えます。 + +"^"コマンドはカーソルを行頭の非空白文字に移動します。"0"(数字のゼロ)コマン +ドは行頭文字に移動します。<Home>キーも同じです。図で示しましょう。 + + ^ + <------------ + .....This is a line with example text ~ + <----------------- ---------------> + 0 $ + +("....." は空白文字があることを示します) + +"$"コマンドでも他の移動コマンドのようにカウンタの指定ができます。行末への移 +動を何度やっても意味がありませんので、"$"コマンドでのカウンタは他の行の行末 +への移動の意味になります。例えば、"1$"は"$"と同じで現在行の行末への移動です +が、"2$"は次の行末への移動、"3$"は2行下の行末への移動、となります。 +"0"コマンドは回数指定できません。これは、"0"自身が回数指定の一部になってしま +うからです。意外でしょうが、"^"に回数指定を行っても、何も起こりません。 + +============================================================================== +*03.3* 文字への移動 + +他のエディタにはあまりない、実に便利な移動コマンドがあります。1文字検索とい +うこのコマンド"fx"は、その行にある文字 x を検索します。(fはFindの意味です) +例えば、下図で示した行の先頭にカーソルがあり、 human の h に移動したいとしま +す。ここで"fh"コマンドを使うと、'h'の上にカーソルが進みます。 + + To err is human. To really foul up you need a computer. ~ + ---------->---------------> + fh fy + +同じように"fy"コマンドを使うと really の y まで進むのも示しています。 +これもカウンタ指定ができます。例えば下図で foul の l に進めたいのなら"3fl"で +できます。 + + To err is human. To really foul up you need a computer. ~ + ---------------------> + 3fl + +"F"コマンドは逆に左向きに検索します。 + + To err is human. To really foul up you need a computer. ~ + <--------------------- + Fh + +"tx"コマンドは"fx"コマンドに似た動きをします。違うのは検索した文字の上では +なく、その直前で止まる点です。(tはToの意味です) +このコマンドの逆方向版は"Tx"です。 + + To err is human. To really foul up you need a computer. ~ + <------------ -------------> + Th tn + +この4つのコマンドは";"コマンドで繰り返し実行ができます。また","コマンドで +は反対方向に繰り返します。なお、このコマンドではカーソルは他の行には動きま +せん。前後に行があってもです。 + +検索をしようとして、コマンドを打ち間違うこともあるでしょう。例えば、逆方向検 +索のつもりで("F"と打つべきところを)"f"と打ってしまったとしましょう。このコマ +ンドを中断するには<Esc>を押します。"f<Esc>"は<Esc>を探すのではなく、コマンド +をキャンセルします。 +Note:<Esc>は検索に限らず、ほとんどのコマンドをキャンセルするのに使えます。 + +============================================================================== +*03.4* カッコ類の呼応 + +プログラムを作っていると、呼応している( )を確認したくなる場合があります。 +これには"%"コマンドがとても便利です。このコマンドは対応するカッコ類を +探し、そこに移動します。カーソルが"("の上にある時は呼応する")"を探し、")"上 +にカーソルがある時は"("を逆方向に探します。 + + % + <-----> + if (a == (b * c) / d) ~ + <----------------> + % + +このコマンドは[ ]や{ }のペアでも動きます。(さらに'matchpairs'オプションで定義 +することもできます) + +カーソルがカッコ類の上にない場合、"%"はまず前方検索をしてカッコ類を探します。 +つまり、上図の例で行頭にカーソルがある場合、"%"は前方検索をして、"("を見つ +け、次に呼応するカッコ")"の場所に移動します。 + + if (a == (b * c) / d) ~ + ---+----------------> + % + +============================================================================== +*03.5* 特定の行に移動 + +CやC++のプログラマであれば、次のようなパターンのエラーメッセージはおなじみで +しょう。 + + prog.c:33: j undeclared (first use in this function) ~ + +何か33行目に修正しないといけない点がありそうです。では、どうやって33行目に +移動しましょうか?"9999k"などとしてファイルの先頭まで移動してから、"32j"で +32行下に移動するやり方もあります。確かに目的は達しますが、あまりいい方法とは +思えません。そこで"G"というコマンドを使いましょう。このコマンドはカウンタを +指定すると、その行にジャンプします。例えば、"33G"とすれば、33行目にジャンプ +できます。(実はコンパイラのエラーリストを使ってもっと簡単に移動する方法もあ +ります。|usr_30.txt| の":make"コマンドをご覧ください。) +カウンタを指定しないと、"G"はファイルの最終行にジャンプします。逆にファイル +の先頭にジャンプするには"gg"を使います。"1G"でも同じですが、ちょっと打ちに +くいですから。 + + | first line of a file ^ + | text text text text | + | text text text text | gg + 7G | text text text text | + | text text text text + | text text text text + V text text text text | + text text text text | G + text text text text | + last line of a file V + +特定行に移動するもう一つの方法はカウンタ付きの"%"コマンドです。例えば、"50%" +はそのファイルの真ん中まで移動します。"90%"だとファイルのほぼ最後(90%の場所) +に移動します。 + +以上述べたのは、画面上に見えているかどうかは関係なくファイル中の特定行に +移動したい場合のコマンドでした。では画面上に見えている行に移動したい場合は +どうしましょうか?下図はこういう時に使える3つのコマンドです。 + + +---------------------------+ + H --> | text sample text | + | sample text | + | text sample text | + | sample text | + M --> | text sample text | + | sample text | + | text sample text | + | sample text | + L --> | text sample text | + +---------------------------+ + +("H"はHome、"M"はMiddle、"L"はLastの意味です) + +============================================================================== +*03.6* 現在の場所を表示 + +ファイル中の現在の場所を知るには、次の3つの方法があります。 + +1. CTRL-Gコマンド。次のようなメッセージが表示されます。('ruler'オプション + がOffの場合) + + "usr_03.txt" line 233 of 650 --35%-- col 45-52 ~ + + 編集中のファイル名、カーソルのある行番号、全体の行数、ファイル全体を + 通してのパーセント、カーソル桁位置、を表示します。 + 場合によっては、"col 2-9"のようにカーソル桁位置が分けて表示される場合が + あります。この場合、カーソルは2文字目にあります。しかし、その場所の文字 + がTABである場合8桁分の場所を占めるため、画面上ではカーソルは9桁目に + 表示されるのです。 + +2. 'number'オプションの使用。このオプションは各行の行頭に行番号を付けます。 > + + :set number +< + その後、オプションをoffに戻します。 > + + :set nonumber +< + 'number'は論理値オプションなので、オプション名の先頭に"no"を付けると、 + offの意味になります。論理値オプションはonかoffの2つのいずれかになりま + す。vimには多数のオプションがあります。論理値オプションの他に、数値オプ + ションと文字列オプションがあります。そういったオプションを使う時に例を + お見せしましょう。 + +3. 'ruler'オプションを使います。これは現在のカーソル位置をvimウィンドウの + 右下隅に表示します。 > + + :set ruler +< + 'ruler'オプションは'number'より場所を取らないので、画面を広く使えます。 + +============================================================================== +*03.7* スクロール + +CTRL-Uコマンドは画面の高さの半分だけ逆スクロールします。文章を覗き窓を通して +見ていて、その窓の高さの半分だけ上に動いたと考えてください。つまり窓が文章の +上をファイルの逆方向に戻ったということです。どっちが上でどっちが +下かわかりにくいかと思いますが、気にすることはありません。みんな同じように +悩むことですから。 +CTRL-Dコマンドは覗き窓を半分だけ下に下げます。つまり文章は画面の半分だけス +クロールすることになります。 + + +----------------+ + | some text | + | some text | + | some text | + +---------------+ | some text | + | some text | CTRL-U --> | | + | | | 123456 | + | 123456 | +----------------+ + | 7890 | + | | +----------------+ + | example | CTRL-D --> | 7890 | + +---------------+ | | + | example | + | example | + | example | + | example | + +----------------+ + +1行だけスクロールするにはCTRL-E(スクロールアップ)とCTRL-Y(スクロールダウン) +を使います。CTRL-Eについても同様に考えてみてください。(MS-Windows互換のキー +マップをお使いの場合、CTRL-Yはスクロールではなく、再実行(redo)コマンドとなり +ます) + +1画面分(2行は重複します)スクロールするにはCTRL-Fを使います。逆方向用には +CTRL-Bコマンドを使います。幸いCTRL-FはForward、CTRL-BはBackward、ですから +覚えやすいでしょう。 + +"j"をたくさん使ったりして、カーソルが画面の最下段に移動した時に、その前後の +内容を見たいくなることがあります。これは"zz"コマンドで("z."でも可)できます。 + + +------------------+ +------------------+ + | some text | | some text | + | some text | | some text | + | some text | | some text | + | some text | zz --> | line with cursor | + | some text | | some text | + | some text | | some text | + | line with cursor | | some text | + +------------------+ +------------------+ + +"zt"コマンド("z<Enter>"でも可)はカーソル行を画面の1行目にし、"zb"コマンド +("z-"でも可)は画面の最下段にします。 +これ以外にもいくつかスクロールコマンドがあります。|Q_sc|をご覧ください。常に +カーソル近辺の数行を表示させたいのであれば、'scrolloff'オプションを使って +ください。 + +============================================================================== +*03.8* 簡単な検索 + +文字列を検索するには"/string"コマンドを使います。例えば、"include"という単語 +を探したいのであれば、次のように使います。 > + + /include + +"/"を押すとコマンドラインモードの時のように、カーソルがvimウィンドウの最下段 +に移動することに気付かれたかも知れません。ここで探したい単語を入力します。 +訂正したければ、バックスペースキー(逆矢印、<BS>キーも可)を使います。必要に +応じて<Left>と<Right>の矢印キーも使います。 +最後に<Enter>を押すとコマンドを実行します。 + + Note: + 文字のうち、 .*[]^%/\?~$ には特別な意味があります。検索時にこれらを + 使う場合はその文字の直前に \ を置いてください。これは後(|03.9|の + 最後)で述べます。 + +同じ文字列をもう一度探したい場合には"n"コマンドを使います。今のカーソル位置 +の後ろにある#includeを探すには次のコマンドを使います。 > + + /#include + +次に"n"を数回押すと、順々に #include にジャンプします。移動したい場所がいく +つ目か解っていれば、カウンタも使えます。だから、"3n"は3つ目の #include を探 +します。ただし、"/"ではカウンタは使えません。 + +"?"コマンドは"/"と同じですが、逆方向に検索します。 > + + ?word + +"N"コマンドは直前の検索とは反対の方向に検索を繰り返します。"/"の後で"N"を +すると逆方向検索になり、"?"の後で"N"を行うと、順方向の検索となります。 + + +大文字/小文字の無視 +------------------- + +普通は探したい文字列の大文字/小文字を正確に指定しなければなりません。それを +気にしないのであれば、'ignorecase'オプションをセットします。 > + + :set ignorecase + +これで、"word"を検索すると、"Word"も"WORD"もヒットします。大文字/小文字を区 +別するように戻すのは次のコマンドです。 > + + :set noignorecase + + +ヒストリ(履歴) +-------------- + +次のような3つの検索を行ったとします。 > + + /one + /two + /three + +ここで、"/"だけを入力し、<Enter>を押さずにおきます。<Up>(矢印キーの上向き) +を押すと、/threeとコマンド行に表示されます。ここで、<Enter>を押すと、"three" +を検索します。<Enter>を押さずに<Up>を押すとコマンド行には"/two"と表示されま +す。さらに<Up>を押すと"/one"となります。 +同じ様に<Down>キーを使って逆方向に検索のヒストリの中を動くこともできます。 + +以前に使ったパターンを覚えていれば、<Up>を押す前にその先頭文字を入力すれば、 +そのパターンを呼び出すことができます。上の例で言えば、"/o<Up>"と入力すると、 +vimはコマンドラインに"/one"と表示してくれます。 + +":"で始まるコマンドについてもヒストリを持っています。以前のコマンドを呼び +出して、再実行させることができます。検索用ヒストリと":"用ヒストリは独立し +ています。 + + +文章中の単語の検索 +------------------ + +"TheLongFunctionName" という単語が文章中にあり、次に現れる場所を探したいと +します。もちろん、"/TheLongFunctionName"として検索もできますが、たくさんの +打鍵が必要です。また間違って打った時にはうまく検索できません。 +もっと簡単な方法があります。カーソルを探したい単語の上に置いて、"*"コマンド +を使うのです。vimはカーソル位置の単語を抜き出してそれを検索文字列として使い +ます。 +"#"コマンドは同じことを逆方向に実行します。このコマンドもカウンタが指定でき +ます。例えば、"3*"はカーソル位置の単語が3回目に現われる場所を探します。 + + +単語全体が一致する場合の検索 +---------------------------- + +"/the"と検索を行うと、"there"などもヒットします。"the"で終わる単語だけを探 +したい場合には次のようにします。 > + + /the\> + +"\>"というのは特別なマーカで、単語がここで終わっている時だけヒットします。 +同じように"\<"は単語がここで始まっている時にだけヒットします。つまり、"the" +という単語だけを探したい場合は、次のようにします。 > + + /\<the\> + +これだと、"there"とか"soothe"にはヒットしません。なお、"*"と"#"コマンドは +上の「単語の先頭」と「単語の末尾」マーカを使って、完全に一致する単語だけを +探します。(単語の一部として検索したい時は"g*"と"g#"コマンドを使います) + + +ヒット結果のハイライト表示 +-------------------------- + +プログラムの編集中に、"nr"という変数を見つけ、その変数がどこで使われているか +を知りたいとします。"nr"の上にカーソルを移動して、"*"と"n"コマンドで片っ端 +から探すのもいいですが、他にも方法があります。次のコマンドを入力してください。 > + + :set hlsearch + +ここで、"nr"を検索すると、vimはヒットした全てのパターンをハイライト表示しま +す。これだと余計なコマンド入力が要りませんから、変数の使用箇所を確認したい +時にはとても便利でしょう。 +このオプションは次のコマンドでoffにできます。 > + + :set nohlsearch + +さて上のやり方では、検索を行う都度、いちいちオプションのon/offが必要になり +ます。単にハイライト表示を止めるだけなら、次のコマンドがあります。 > + + :nohlsearch + +これだとオプションはoffにせずに、ハイライト表示だけを取り消します。次に検索 +コマンドを実行すると、再度ハイライト表示を使うようになります。"n"や"N"を使っ +た時も同様です。 + + +検索のチューニング +------------------ + +検索時の動きについてのいくつかのオプションがあります。以下はその基本的なもの +です。 +> + :set incsearch + +これはいわゆるインクリメンタルサーチです。検索したい文字を入力している間にも +ヒットする文字列を探して画面に表示してくれます。これはヒットするパターンがあ +るかどうかのチェックに使えます。<Enter>を押すと実際にその場所にカーソル +を移動します。さらに文字を打って、検索を続けることもできます。 +> + :set nowrapscan + +これはファイルの末尾まで進んだら(逆方向検索の場合はファイルの先頭まで戻ったら) +検索を停止します。'wrapscan'オプションはデフォルトではonです。onの場合は、 +ファイルの末尾まで進んだら先頭に戻って検索を続けます。 + + +INTERMEZZO(間奏) +---------------- + +これまでに出てきたオプションでvimを使う時に毎回設定しておきたいものがあれば、 +vimのスタートアップファイルにそのコマンドを書くことができます。 +|not-compatible|にあるようにファイルを編集するか、次のコマンドを入力して、 +どこかにないかを確認してください。 > + + :scriptnames + +ファイルを編集するには、例えば次のようにします。 > + + :edit ~/.vimrc + +ここでオプションを設定するコマンド行を、vim内で実行する時と同じように入力し +て、追加します。例えば、次のようにします。 > + + Go:set hlsearch<Esc> + +"G"はファイルの末尾まで移動し、"o"は新しい行を挿入して ":set ....."のコマン +ド用の空行を作ります。挿入モードの終了は<Esc>です。ここでファイルを保存しま +しょう。 > + + ZZ + +次にvimを起動すると、'hlsearch'オプションは常にonの状態となります。 + +============================================================================== +*03.9* 簡単なパターン検索 + +vimでは、検索に正規表現(regular expressions)を使います。 +正規表現というのは検索パターンの指定のための、極めてパワフルでシンプルな方 +法です。残念ながら、これの実力を発揮させるには少々苦労していただくことにな +ります。というのは、正規表現はちょっとばかり書き方がトリッキーなんです。 +ここでは本当に基本的なものだけを述べます。パターン検索とコマンドについては +27章|usr_27.txt| でもっと詳しく説明します。全パターンの説明は|pattern|を +ご覧ください。 + + +行頭と行末 +---------- + +"^"は行頭を示します。英語(ASCII)キーボードでは6のキーに、日本語(JIS)キー +ボードでは0のキーの2つ右側に刻印してあります。 +例えば、"include"というパターンは 行のどこかに include という単語を含んでい +れば、ヒットします。一方、"^include"は行頭が include で始まっている場合だけ +ヒットします。 +"$"は同様に行末にヒットします。ですから、パターン"was$" は、行末が was で終 +わっている場合だけヒットします。 + +下の例では、"the"という単語を含んでいる箇所を"xxx"で示しています。 + + the solder holding one of the chips melted and the ~ + xxx xxx xxx + +"/the$"を実行すると、こうなります。 + + the solder holding one of the chips melted and the ~ + xxx + +また、"/^the"の場合はこうです。 + + the solder holding one of the chips melted and the ~ + xxx + +"/^the$"という指定もできます。この指定だと、"the"という単語だけの行にヒット +します。なお空白文字も意味を持ちます。ですから、"the "のように行末に空白文 +字を含んでいた場合は、"/the$"のパターンではヒットしません。 +こういう場合でもヒットさせる方法はあります。詳しくは27章|usr_27.txt|で。 + + +任意の1文字 +------------ + +"." はあらゆる文字にヒットします。例えば、"c.m"は最初が"c"で始まり、2文字 +目は何でも良くて、3文字目が"m"であるパターンにヒットします。 +例を示します。 + + We use a computer that became the cummin winter. ~ + xxx xxx xxx + + +特殊文字 +------- + +例えば"."という文字自体を探す時は、上で述べたような特殊な意味を"\"文字を +使って無効にします。 +"ter."というパターンで検索をすると、次の"xxx"の箇所でヒットします。 + + We use a computer that became the cummin winter. ~ + xxxx xxxx + +これを"ter\."で検索すると、上図の2つ目だけがヒットします。 + +============================================================================== +*03.10* マークの使用 + +"G"コマンドでジャンプすると、vimはその直前のカーソル位置を覚えています。これ +をマークと呼びます。元の場所に戻りたいなら、次のコマンドを使います。 > + + `` + +この ` は backtick とか open single-quote と呼ばれる(日本では「バッククオート」 +が多いでしょうか)ものです。 +このコマンドを2回実行すると、最初の場所に戻ります。これは ` コマンドもジャ +ンプコマンドだから、実行前の場所を覚えるためです。 + +通常、現在行以外にカーソルが動くようなコマンドを実行した場合、それをジャンプ +と呼びます。"/"や"n"もジャンプの一種です(ジャンプ先がどれだけ離れているかは +関係ありません)。逆に、文字検索である"fx"や"tx"、単語移動である"w"や"e"は +ジャンプではありません。 +"j"や"k"はカウンタを指定すればカーソルをはるか彼方に移動できますが、これも +ジャンプ扱いではありません。 + +``コマンドは2個所の間を交互にジャンプします。CTRL-Oコマンドはより古いマーク +( Oは Olderの意味です)にジャンプします。CTRL-Iはより新しいマーク("I"キーは +"O"キーのすぐ左隣りです)にジャンプします。次のコマンドを例にしましょう。 > + + 33G + /^The + CTRL-O + +まず33行目にジャンプします。次に"The"で始まる行を探します。ここでCTRL-Oを +使うと、33行目にジャンプします。もう一度CTRL-Oを使うと、最初の場所に戻りま +す。CTRL-Iを使うと33行目に戻り、さらにCTRL-Iを使うと行頭が"The"で始まる行に +戻ります。 + + | example text ^ | + 33G | example text | CTRL-O | CTRL-I + | example text | | + V line 33 text ^ V + | example text | | + /^The | example text | CTRL-O | CTRL-I + V There you are | V + example text + + Note: + CTRL-Iは<Tab>キーと同じです。 + +":jumps"コマンドは今までにジャンプした場所の一覧を表示します。最後に使った +エントリには">"記号がついています。 + + +名前付きマーク +-------------- + +vimでは文章中に自分でマークを付けることができます。"ma"コマンドは現在のカー +ソル位置をマークaとしてマークします。文章には26個(a~z)のマークを付け +られます。ただしvimに覚えさせたマーク以外は表示されません。 +マークへの移動は `{mark} コマンドを使います。{mark}はマーク文字のことです。 +つまり、マークaに移動するには次のようにします。 +> + `a +< + '{mark}(アポストロフィ+マーク名)コマンドはその{mark}を設定してある行の行頭 +に移動します。`{mark}の場合は{mark}を設定してあるその桁位置に移動します。 +います。 + +マーク機能はファイル中の関連している2箇所で作業をする場合に便利です。例えば、 +ファイルの最後の方を編集している時に、ファイルの最初の方の内容を確認する必要 +が生じた場合を考えてみましょう。 +この時、まずファイルの最初の方に移動して、マークs(startのつもり)を付けます。 +> + ms + +次に文章の末尾の編集したい場所に移動して、マークe(endのつもり)を付けます。 > + + me + +これで自由に行き来ができます。ファイルの先頭に移動したい時は、これでジャンプ +できます。 > + + 's + +ここで、 '' を使って戻ることもできますし、 'e を使って末尾のマークまでジャン +プすることもできます。 +ここで先頭にマークsを、末尾にマークeを使いましたが、その名前に特別な意味 +はありません。単に覚えやすいから使っただけです。 + +次のコマンドは設定してあるマークの一覧を表示します。 > + + :marks + +この一覧には次のような特殊なマークも表示されます。 + + ' ジャンプする直前のカーソル位置 + " 直前にファイルを編集した時のカーソル位置 + [ 直前の変更の開始位置 + ] 直前の変更の終了位置 + +============================================================================== + +Next chapter: |usr_04.txt| 小さな変更 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_04.jax b/ja/usr_04.jax new file mode 100644 index 000000000..07b71c7d2 --- /dev/null +++ b/ja/usr_04.jax @@ -0,0 +1,516 @@ +COMMENT: ちょっとした変更 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_04.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + VIM USER MANUAL - by Bram Moolenaar + + ちょっとした変更 + + +本章では、 文の修正方法や他の場所への移動方法の一部を述べます。 +また、変更する範囲を選択する3つ(カーソルモーション、Visualモード、テキスト +オブジェクト)の基本的な繰作方法についても説明します。 + +|04.1| オペレータとモーション +|04.2| 文字列の変更 +|04.3| 変更の繰り返し +|04.4| Visualモード +|04.5| 文の移動 +|04.6| 文の複写 +|04.7| クリップボードの利用 +|04.8| テキストオブジェクト +|04.9| 置換モード +|04.10| 終わりに + + Next chapter: |usr_05.txt| 自分用の設定 + Previous chapter: |usr_03.txt| 動いてみる +Table of contents: |usr_toc.txt| + +============================================================================== +*04.1* オペレータとモーション + +2章で学んだように、"x"は1文字削除コマンドです。カウンタを使って、"4x"とす +れば4文字を削除します。 +"dw"コマンドは単語を削除します。"w"が単語単位で移動するコマンドであることを +思い出してください。実際、"d"コマンドには何らかのモーション(移動)コマンドを +付けることができます。それによって、現在の場所から、モーションコマンドで移動 +する場所までを削除するわけです。 +例えば、"4w"コマンドはカーソルを4単語分、動かします。ということは、"d4w"は +4つの単語を削除するコマンドなわけです。 + + To err is human. To really foul up you need a computer. ~ + ------------------> + d4w + + To err is human. you need a computer. ~ + +vimではモーションコマンドでカーソルが動く範囲を削除します。というのは、モー +ションで動いた先の(5つ目の)単語の先頭文字を削除したくはないだろうと判断す +るためです。逆に"e"コマンドで単語の末尾までを範囲とした場合には、vimは移動 +先の文字も含めたいだろう、と推測します。 + + To err is human. you need a computer. ~ + --------> + d2e + + To err is human. a computer. ~ + +カーソル下の文字を含めるかどうかは使ったコマンドによって異なります。リファ +レンスマニュアルではその文字が含まれない場合には"exclusive"、含む場合には +"inclusive"と呼んでいます。 + +"$"コマンドは行末まで移動します。"d$"コマンドはカーソル位置から、行末まで +を削除します。これはinclusiveモーションなので行末の文字は削除処理の対象と +なります。 + + To err is human. a computer. ~ + ------------> + d$ + + To err is human ~ + +オペレータ->モーションというパターンがあります。最初にオペレータコマンドを +入力します。例えば、"d"は削除オペレータです。次に"4l"や"w"といったモーション +コマンドを入力します。この方法なら、動ける範囲のどんな文章でも操作ができます。 + +============================================================================== +*04.2* 文字列の変更 + +もう一つのオペレータは"C"、変更です。これも"d"オペレータと同じように動きま +す。違うのは挿入モードに遷移する点です。例えば、"cw"は単語を変更します。 +もっと厳密に言えば、単語を削除してから、挿入モードに遷移するのです。 + + To err is human ~ + -------> + c2wbe<Esc> + + To be human ~ + +"c2wbe<Esc>" には次の成分が含まれます。 + + c 変更オペレータ + 2w 2単語進む(これは削除され、挿入モードに遷移する) + be この文字列を挿入する + <Esc> 通常モードに戻る + +勘のいい人なら、ちょっと変だと感じるかも知れません。"human"の前の空白が削除 +されていないのです。"どんな問題に関しても単純で、明解で、間違った答えがある" +という格言があります。この"cw"コマンドを使った例が正にそういった場合です。 +"c"オペレータは"d"オペレータと全く同じように動きます。"cw"はその例外なので +す。実際にはこれは"ce"と同じく、単語末までを変更します。ですから、単語の後ろ +の空白は含まれないのです。これはかつてのviまでさかのぼる例外です。多くの人々 +がこれを使っていますので、vimでも不本意ながら残してあるのです。 + + +その他の変更コマンド +-------------------- + +"dd"が行を削除したのと同じように、"cc"は行全体を変更します。ただし、インデン +ト(行頭の空白類)は残しています。 + +"d$"が行末まで削除するのと同じように、"c$"は行末までを変更します。この機能は +"d$"で行末まで削除した上で、"a"で挿入モードに入り、文を追加するのと同じです。 + + +ショートカット +-------------- + +以下に述べるようなコマンドは、頻繁に使うため1文字コマンドとして用意してい +ます。 + + x は dl (カーソル位置の文字を削除) の意味です。 + X は dh (カーソルの左側の文字を削除) の意味です。 + D は d$ (行末まで削除) の意味です。 + C は c$ (行末まで変更) の意味です。 + s は cl (1文字変更) の意味です。 + S は cc (1行変更) の意味です。 + + +カウンタの使い方 +---------------- + +"3dw"も"d3w"も3つの単語を削除するコマンドです。細かいことが気になる方のため +に補足しておくと、最初の例(3dw)は1単語削除を3回実行し、2つ目の例(d3w)は +3単語の削除を1度だけ実行します。2つの違いは区別できません。やろうと思えば、 +カウンタを2個所で指定できます。例えば、"3d2w"は2単語の削除を3回繰り返し、 +結果として、6単語を削除します。 + + +1文字の置き換え +---------------- + +"r"コマンドはオペレータではありません。1文字の入力を待ち、カーソル位置の文 +字を入力された文字に置き換えます。同じことは"cl"とか"s"でもできますが、"r" +の場合は最後に<Esc>を押す必要はありません。 + + there is somerhing grong here ~ + rT rt rw + + There is something wrong here ~ + +"r"にカウンタを使うとその数分の文字を指定の文字に置き換えます。 + + There is something wrong here ~ + 5rx + + There is something xxxxx here ~ + +文字を改行に置き換えたければ、"r<Enter>"を使います。1文字を削除した上で、 +改行を挿入します。ただし、改行に対してはカウンタは無効で、削除する文字にのみ +有効となります。"4r<Enter>"は4文字削除し、1つの改行を挿入します。 + +============================================================================== +*04.3* 変更を繰り返す + +"."コマンドはvimで一番単純でありながら、一番パワフルなコマンドです。これは +直前の変更コマンドを繰り返します。HTMLファイルの編集中に、全ての<B>タグを削 +除するとしましょう。カーソルを最初の"<"に移動し、"df>"コマンドで<B>を削除し +ます。次に</B>の"<"を探し、それを削除するのに"."コマンドを使います。"."コ +マンドは直前の変更コマンド(この場合なら"df>")を実行します。他のタグの削除し +たければ、カーソルを"<"の上に置いて、"."を打てばよいのです。 + + To <B>generate</B> a table of <B>contents ~ + f< find first < ---> + df> delete to > --> + f< find next < ---------> + . repeat df> ---> + f< find next < -------------> + . repeat df> --> + +"."コマンドは"u"(アンドゥ)、CTRL-R(リドゥ)、先頭が":"のコマンド以外は全部で +使えます。 + +例2:文中に何度も出てくる単語"four"を"five"に変更したいとします。 + 次に示した手順でそれができます。 + + /four<Enter> 最初の"four"を探す。 + cwfive<Esc> その単語を"five"に変更する。 + n 次の"four"を探す + . 直前の変更を繰り返す。 + n 次の"four"を探す + . 直前の変更を繰り返す。 + 以下同文。 + +============================================================================== +*04.4* visualモード + +単純なパターンであれば、オペレータ=モーション方式は何の問題もなく動きます。 +しかしどのコマンドを使えば目的の範囲を選択できるかは、そう簡単に決められる +ことではありません。こんな時はvisualモードです。 + +visualモードに入るには、"v"を押します。ここでカーソルを動かして対象としたい +領域を選択します。選択中はその領域がハイライト表示になります。最後にオペ +レータコマンドを入力します。 +例えば、単語の途中から、次の単語の途中までを削除するには、次のようにします。 + + This is an examination sample of visual mode ~ + ----------> + velllld + + This is an example of visual mode ~ + +この方法だと、"l"を何回押せば目的の場所まで移動できるか?などと考える必要が +全くありません。その場で削除の範囲を確認してから、"d"を押すことができるので +す。 + +ハイライト表示になっている範囲に対して何もしたくなければ、<Esc>キーを押しま +す。すると何もせずにvisualモードから通常モードに戻ります。 + + +行を選択 +-------- + +行全体を対象としたければ、"V"コマンドでvisualモードを開始します。するといき +なり行末までがハイライト表示となります。ここで左右に移動しても何も起こりま +せん。上下に移動するとその行全体が選択範囲に入ります。 +例えば、"Vjj"で3行を選択してみましょう。 + + +------------------------+ + | text more text | + >> | more text more text | | + selected lines >> | text text text | | Vjj + >> | text more | V + | more text more | + +------------------------+ + + +ブロック選択 +------------ + +四角いブロック(矩形)の処理を行いたければ、CTRL-Vでvisualモードを開始します。 +このモードは表を編集するような場合に非常に便利です。 + + name Q1 Q2 Q3 + pierre 123 455 234 + john 0 90 39 + steve 392 63 334 + +例えば、上図の中央のQ2(第2四半期)の列を削除するには、カーソルを"Q1"と"Q2" +の間に置いてCTRL-Vを押し、ブロック選択のvisualモードに入ります。次にカーソ +ルを"3j"で3行下に動かし、"w"を押して1単語分右に移動します。この状態では、 +最後の列の先頭を範囲に含んでいますので、"h"でそれをはずします。これでOK +なので"d"を押します。すると、選択してあった範囲は削除されます。 + + +反対側に移動 +------------ + +visualモードで選択中に範囲の反対側(始点)にカーソルを動かしたい時は、"o"を押 +します(oは"other end"の意味です)。カーソルは始点に動き、始点を自由に変更 +できるようになります。もう一度"o"を押すと、元の終点側に戻ります。 + +ブロック指向選択時は4隅が存在します。"o"は始点と終点を斜めに動くだけです。 +"O"を使うと、同じ行の反対側に移動します。 + +Note: visualモードの"o"と"O"は通常モードの場合とかけ離れています。これは通常 + モードではカーソル行の上や下に空行を作る機能です。 + +============================================================================== +*04.5* 文を移動する + +"d"や"x"などを使って何かを削除しても、その内容はvimが保持しています。"p"コ +マンドを使えば、この内容をペースト(vimではこれをプットと呼びます)すること +ができます。 +どのように動くかを見てみましょう。まず、削除したい行にカーソルを移動し、"dd" +コマンドでその行全体を削除します。次にカーソルをプットしたい場所に動かして +"p"を押します。先ほど削除した行の内容がカーソルの下の行に挿入されます。 + + 最初 削除後 プット後 + a line a line a line + line 2 dd line 3 p line 3 + line 3 line 2 + +行全体を削除した時にその内容を保存していたので、"p"コマンドを使った時にその +内容がカーソルの下の行にプットされたわけです。行の一部(単語など)を削除した +場合は、"p"コマンドはカーソルの直後にそれをプットします。 + + Some more boring try text to out commands. ~ + ----> + dw + + Some more boring text to out commands. ~ + -------> + welp + + Some more boring text to try out commands. ~ + + + +その他のプット +-------------- + +"P"コマンドは"p"と同じですが、カーソルの前にプットします。直前に"dd"コマン +ドで削除をしていれば、"P"はカーソルの上にその行をプットします。"dw"で単語を +削除した場合は、カーソルの直前にプットします。 + +プットは何回でも好きなだけ繰り返しできます。同じ文が毎回使われます。 + +"p"も"P"もカウンタが指定できます。指定しただけ、プット処理を繰り返します。 +ですから、"dd"をして、"3p"とすると、削除した行のコピーが3つプットされます。 + + +2文字の入れ換え +---------------- + +入力している時には、指が頭を追い越してしまう場合がしばしばあります。その結果 +は、"the"が"teh"になるといった類のタイポ(打ち間違い)です。vimはこの種の間違 +いを簡単に修正できます。カーソルを"teh"の"e"の上に置いて、"xp"と打てばよいの +です。これは、"x"で"e"の文字を削除してレジスタに入れ、"p"でカーソル("h"の上 +にある)の後ろにレジスタ内容をプットするのです。 + + teh th the ~ + x p + +============================================================================== +*04.6* テキストの複写 + +文字列をある場所から別の場所に複写する時はどうしましょう。最初に削除して、 +"u"でそれを取り消し、"p"で別の場所にプットするのもひとつの方法です。でももっ +と簡単な方法があります。ヤンク(yank)です。"y"オペレータは文字列をレジスタに +コピーします。そして"p"を使ってプットするのです。 +コピーのことをvimではヤンクと呼びます。上で説明した変更オペレータの"c"と同 +じように"y"オペレータも使えます。ヤンクの"y"ですので、キー操作も覚えやすい +でしょう。 + +"y"はオペレータなので、"yw"とすれば単語のヤンクができます。カウンタも当然 +指定可能です。2単語をヤンクするには、"y2w"とします。例を示しましょう。 + + let sqr = LongVariable * ~ + --------------> + y2w + + let sqr = LongVariable * ~ + p + + let sqr = LongVariable * LongVariable ~ + +"yw"は単語の後の空白まで含みますので気をつけてください。それが嫌ならば、"ye" +っ使ってください。 + +JP: 上の例はあまり良くないですが、間違ってはいません。y2wでは実際には2単語 +JP: はヤンクされず、前後に空白文示を付けた" LongVariable "という文字列がヤン +JP: クされます。|04.2|をよく読んでみてください。 + +"yy"コマンドは"dd"が行削除するのと同様に、行全体をヤンクします。ただ、"D"は +行末まで削除するのに対して、"Y"は"yy"と同じ動きになります。この点は気をつけ +てください。行末までヤンクしたい時には"y$"を使ってください。 + + a text line yy a text line a text line + line 2 line 2 p line 2 + last line last line a text line + last line + +============================================================================== +*04.7* クリップボードの利用 + +GUIバージョンのvim(gvim)を使っている場合は、[編集]メニューに[コピー]コマンド +があります。最初にvisualモードで文字列を選択し、次にこの [編集]-[コピー]を使 +います。 +選択した文字列はクリップボードにコピーされます。これを他のプログラムにペースト +できます。もちろんvim自身でも使えます。 + +他のアプリケーションでクリップボードに文字列をコピーしておけば、vimで[編集]- +[貼り付け]コマンドでそれをペーストできます。これは通常モードでも挿入モードで +も動きます。visualモードでは選択中の文字列はペーストされる文字列に置き換わり +ます。 + +メニューの[編集]-[切り取り]はクリップボードにプットする前に文字列を削除しま +す。[コピー]、[切り取り]、[貼り付け]の3つはポップアップメニューでも(ポップ +アップメニューが出る時だけですよ、当り前ですが)使えます。お使いのvimにツール +バーがあれば、そこにも同じ項目があるはずです。 + +GUIを使っていない場合やメニューを使うのが嫌いな場合は他の方法を使うしかあり +ません。普通の"y"や"p"コマンドを使う前に"* (ダブルクオート+アステリスク)を +指定するのです。行を丸ごとクリップボードに入れるには次のようにします。 > + + "*yy + +クリップボードを経由でプットするのは、こうです。 > + + "*p + +この機能はクリップボードをサポートしたvimでのみ動きます。クリップボードにつ +いての詳細は|09.3|章 と |clipboard|をご覧ください。 + +============================================================================== +*04.8* テキストオブジェクト + +単語の真ん中にカーソルがあり、その単語を削除したい場合、"dw"をする前にカーソ +ルをその単語の先頭に戻す必要があります。でももっと簡単な方法があります。 +"daw"です。 + + this is some example text. ~ + daw + + this is some text. ~ + +"daw"の"d"は削除オペレータです。"aw"はテキストオブジェクトです。("aw"は +"a word"の意味です。つまり"daw"は"Delete A Word"という意味です。正確には単語の +後の空白も削除されます。) + +テキストオブジェクトの利用はvimでの第3の変更方法です。オペレータ+モーション +方式とvisualモードは既に述べました。そこにオペレータ+テキストオブジェクト方 +式を追加します。 +これはオペレータ+モーション方式と非常に似ています。ただオペレータ+モーション +方式では移動コマンドの前と後のカーソル位置がオペレータの範囲となっていたのに +対し、テキストオブジェクトではオブジェクト全体を対象とします。必ずしもカー +ソル位置のオブジェクトというわけではありませんが。 + +文全体を変更するのは"cis"です。次の文を使いましょう。 + + Hello there. aaaaa Just ~ + some text. ~ + +2行目の先頭に移動し、"cis"を実行します。 + + Hello there. Just ~ + some text. ~ + +カーソルは1行目の空白の間にあります。ここで新たな文 "Another line."を打ち +ます。 + + Hello there. Another line. Just ~ + some text. ~ + +"cis"は変更オペレータの"c"と、テキストオブジェクトの"is"に分けられます。"is" +は"Inner Sentence"の意味です。"as"(a sentence)オブジェクトもよく似ています。 +違うのは"as"では文の後の空白類を含むのに対して、"is"では含みません。 +文を削除する時に、前後の空白も同時に消したければ、"das"を使います。文の修正す +るため、空白を残しておいて欲しい場合は、"cis"を使えばよいでしょう。 + +テキストオブジェクトはvisualモードでも使えます。選択範囲の中にテキストオブ +ジェクトを追加することができます。この場合でもvisualモードは終わりませんか +ら、何度でもテキストオブジェクトを使えます。例えば"v"でvisualモードを開始し、 +"as"で文を選択した後に、"as"を繰り返してたくさんの文を追加できます。最後に +オペレータを使って、選択した文を対象として、何らかの処理を行います。 + +テキストオブジェクトの機能一覧は |text-objects| をご覧ください。 + +============================================================================== +*04.9* 置き換えモード + +"R"コマンドを使うと置き換えモードに入ります。このモードでは、カーソル位置の +文字が入力した文字に置き換わります。このモードは<Esc>を押すまで続きます。 +次の例では、"text"の1つ目の"t"で置き換えモードを開始します。 + + This is text. ~ + Rinteresting.<Esc> + + This is interesting. ~ + + +上の例では末尾の5文字を別の12文字に置き換えています。"R"コマンドは置き換 +えるべき文字がなくなると自動的に行末をずらします。ただし改行した次の行には影 +響を与えません。 + +<Insert>キーで挿入モードと置き換えモードを切り換えることができます。 + +<BS>キーで修正をしようとすると、元の文字が復元されます。直前に打った文字を +アンドゥした時のような動きとなります。 + +============================================================================== +*04.10* 最後に + +オペレータ、移動コマンド、テキストオブジェクトを組み合せると、とてつもない数 +のコンビネーションを生み出すことができます。既に説明したように、N個のオペ +レータとM個の移動コマンドを使えば、N*M個のコマンドが作れるのです! + +オペレータの一覧を探すのなら |operator| をご覧ください。 + +テキストの一部を削除するには数多くの方法があります。ほんの一部ですが、よく使 +うものを挙げておきましょう。 + +x カーソル位置の文字を削除("dl"と同じ) +X カーソル位置の直前の文字を削除("dh"と同じ) +D カーソル位置から行末までを削除("d$"と同じ) +dw カーソル位置から次の単語の先頭までを削除 +db カーソル位置から直前の単語の先頭までを削除 +diw カーソル位置の単語を削除(文の後の空白は除く) +daw カーソル位置の単語を削除(文の後の空白を含む) +dG ファイルの末尾まで削除 +dgg ファイルの先頭まで削除 + +"d"の代わりに"c"を使うと削除ではなく、変更コマンドとなります。"y"にすれば、 +ヤンクコマンドです。他のオペレータも同様です。 + + +他の章では触れる機会のない変更コマンドをいくつか挙げておきます。 + + ~ カーソル位置の大文字/小文字を変更し、カーソルを次に進めます。 + これは('tildeop'をセットしない限り)オペレータではありません。 + つまりモーションコマンドを使うことはできません。visualモード + で選択した文字列については全体が対象となります。 + + I (大文字の"i"です)カーソルを行の最初の非空白文字に移動して + 挿入モードを開始します。 + + A 行末にカーソルを動かして、挿入モードを開始します。 + +============================================================================== + +Next chapter: |usr_05.txt| 自分用の設定 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_05.jax b/ja/usr_05.jax new file mode 100644 index 000000000..874e6e299 --- /dev/null +++ b/ja/usr_05.jax @@ -0,0 +1,635 @@ +COMMENT: カスタマイズ設定方法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_05.txt* For Vim version 6.3. Last change: 2004 Mar 12 + + VIM USER MANUAL - by Bram Moolenaar + + Set your settings + + +vimはあなたの好みに合わせてチューニングができます。本章ではオプションの内容 +を変更して、その設定でvimを起動させる方法を述べます。また、vimの機能拡張プラ +グインを追加したり、独自のマクロを定義する方法についても触れます。 + +|05.1| vimrc ファイル +|05.2| vimrc ファイルの例の説明 +|05.3| 基本的なマップ +|05.4| プラグインの追加 +|05.5| ヘルプファイルの追加 +|05.6| オプションウィンドウ +|05.7| よく使うオプション + + Next chapter: |usr_06.txt| シンタックスハイライトを使う + Previous chapter: |usr_04.txt| ちょっとした変更 +Table of contents: |usr_toc.txt| + +============================================================================== +*05.1* vimrc ファイル *vimrc-intro* + +よく使うコマンドを入力するのが面倒に感じることもあるでしょう。好みのオプション +設定やマップを設定した状態で起動させるために、vimrcファイルと呼ばれるファイ +ルを書けます。vimはこのファイルを起動時に読み込みます。 + +vimrcファイルが見つからない場合は、次のコマンドを使います。 > + + :scriptnames + +一覧の最初に表示されるファイルは".vimrc"とか"_vimrc"というファイル名でホーム +ディレクトリに置きます。 +vimrcファイルをまだ作っていない場合は、|vimrc| を見てvimrcファイルを作る場所 +を確認してください。また、":version"コマンドを使うと、vimが探そうとするユーザ +vimrcファイルの格納ディレクトリがわかります。 + +Unixでは必ず次のファイルとなります。 > + + ~/.vimrc + +MS-DOSとMS-Windowsでは大低は次のどちらかです。 > + + $HOME/_vimrc + $VIM/_vimrc + +vimrcファイルにはコロン(:)に続く全コマンド(コマンドラインモードのコマンド)が +使えます。一番わかりやすいのはオプション設定です。例えば、'incsearch'オプ +ションを常にonにしたいのなら、ユーザvimrcファイルに次の一行を加えます。 > + + set incsearch + +この追加分を有効にするには、vimを終了し再起動します。再起動しないでこれを行 +う方法もありますが、これについては後で触れます。 + +この章はごく基本的な項目だけを説明しています。vimスクリプトのより詳しい情報 +については |usr_41.txt| をご覧ください。 + +============================================================================== +*05.2* 説明用のvimrcの例 *vimrc_example.vim* + +上の節ではサンプルのvimrc(vimの配布パッケージに入っています)を非互換モード +(詳しくは|not-compatible|をご覧ください)で利用する方法を述べました。このファ +イルは次のディレクトリにあります。 + + $VIMRUNTIME/vimrc_example.vim ~ + +この節ではこのファイルで使われている各種のコマンドを説明します。自分用のセッ +トアップをするときの助けとなると思います。ただし全てを説明できるわけではあり +ません。詳しいことは":help"コマンドで探してください。 + +> + set nocompatible + +第1章で述べたようにこのマニュアルではvimを「進化したvi」として、つまりviと +は完全互換でない使い方について説明しています。そのためには'compatible'オプ +ションをoffに('nocompatible'に)しておく必要があります。 + +> + set backspace=indent,eol,start +< +挿入モードで<BS>キーを押すとカーソルの直前の文字が消えます。ここでは、<BS> +キーが使える範囲を定義しています。カンマ(,)で分割された3つの部分はそれぞれ +次の意味となります。 + indent 行頭の空白類の削除を許す + eol 改行の削除を許す + start 挿入モードの開始位置での削除を許す +> + + set autoindent + +これは新しい行を、直前の行と同じインデント(段付け)とすることを指定します。 +新しい行の行頭に直前の行と同じだけの空白を付けるということです。例えば、挿入 +モードで<Enter>キーを押した時や"o"コマンドで新しい行ができた時が該当します。 +> + + if has("vms") + set nobackup + else + set backup + endif + +これはファイルに上書きする時にバックアップを作るように指定しています。ただし +VMSシステムではOSが古いバージョンを保持してくれますので、バックアップをoff +にします。バックアップファイルのファイル名はオリジナルの名前に"~"を加えたも +のとなります。|07.4|をご覧ください。 +> + + set history=50 + +コマンドを50個分、検索パターンを50個分、ヒストリ(履歴)として残します。覚えさ +せたい量を増減したい時はこの値を変更します。 +> + + set ruler + +現在のカーソル位置(行、桁)をvimのウィンドウの右下に常に表示します。 + +> + set showcmd + +入力中(まだ実行していない)コマンドをvimウィンドウの右下(rulerの左側)に表示 +します。例えば、"2f"とコマンドを入力した時、vimは検索したい文字の入力を待っ +ています。画面の右下には"2f"と表示します。次に"w"と入力すると、"2fw"という +コマンドが完成しますので、それを実行します。この時、画面の"2f"という表示も消 +去します。 + + +-------------------------------------------------+ + |text in the Vim window | + |~ | + |~ | + |-- VISUAL -- 2f 43,8 17% | + +-------------------------------------------------+ + ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + 'showmode' 'showcmd' 'ruler' + +> + set incsearch + +検索パターンを入力中に、その場で一致する文字列を検索し、その場所を表示します + +> + map Q gq + +これはキーマップを定義します。詳しくは次の節で述べます。ここでは、"gq"オペ +レータによるフォーマット機能を"Q"コマンドとして定義しています。 これはvim5.0 +以前で使われていたコマンドです。上の定義をしなければ"Q"はコマンドラインモード +(EXモード)への移行コマンドですが、それは必要ないでしょう。 + +> + vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc> + +これは複雑なマッピングです。ここでは動作の詳細は述べません。ここでやっている +ことは、visualモードでの"p"コマンドの定義です。直前にヤンクした文字列を現在 +の選択範囲に上書きするというものです。マッピングはこれだけ複雑なことにも使え +るということなのです。とはいっても、実際にコマンドを手入力するのと同じように +一連のコマンドを実行しているに過ぎません。 + +> + if &t_Co > 2 || has("gui_running") + syntax on + set hlsearch + endif + +色が使える場合に限って、シンタックスハイライトを有効にします。さらに検索パ +ターンと合致している箇所を全てハイライト表示にするために、'hlsearch'オプション +をonに設定します。上で使っている"if"コマンドは、特定の条件の時だけオプション +を設定したい時に重宝します。 詳しくは、|usr_41.txt|をご覧ください。 + + *vimrc-filetype* > + filetype plugin indent on + +これは次の3つの功妙な仕掛けをいずれもonに設定しています。 +1. ファイルタイプの検出 + ファイルの編集を始める時に、vimはそれがどういった種類のファイルかを判断 + しようとします。例えば"main.c"なら、vimはそのファイル名の拡張子が".c"で + あることから、ファイルタイプは"c"だと判断します。またファイルの1行目が + "#!/bin/sh"で始まっていれば、ファイルタイプは"sh"だと判断します。 + ファイルタイプの検出はシンタックスハイライトの他に次の2つの項目で使って + います。詳しくは|filetypes|をご覧ください。 + +2. ファイルタイププラグインファイルの利用 + ファイルタイプには多くの種類があり、それぞれが異なったオプションを用いま + す。例えば、"c"ファイルの場合なら自動的にインデント(段付け)をしてくれる + 'cindent'オプションは欠かせないでしょう。こういった、一般的に便利な設定が + ファイルタイププラグインの中に入っています。独自のプラグインも追加できま + す。詳しくは|write-filetype-plugin|をご覧ください。 + +3. インデント(段付け)ファイル + プログラムで使う行インデントというのはたいていは自動的に計算できるもので + す。vimでは多くのファイルタイプ用にインデントのルールを用意しています。 + 詳しくは|:filetype-indent-on| と 'indentexpr'オプションをご覧ください。 + +> + autocmd FileType text setlocal textwidth=78 + +ここでは、行が長くなりすぎないように78文字で分割するように指定しています。 +このルールはテキストファイルにだけ適用されます。実際の記述は2パートに分かれ +ています。最初の"autocmd FileType text"はオートコマンド定義です。ここでは +ファイルタイプが"text"の場合のみ、次の指令を登録するように定義しています。 +次の"setlocal textwidth=78"は、対象となるファイルタイプに限り、'textwidth' +オプションを78に設定しています。 +> + + autocmd BufReadPost * + \ if line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal g`\"" | + \ endif + +これは別のオートコマンドです。これはどのファイルの時も使います。その後の複 +雑な部分は、「'" マークが定義されているかどうかをチェックし、定義があれば、 +そこにジャンプする」です。各行の先頭の逆スラッシュ(日本語環境だと円記号)は +上の行の続きであることを示します。これは行がやたらと長くなるのを防ぎます。 +詳しくは|line-continuation|をご覧ください。 オートコマンドはvimスクリプト +ファイルに書かないと動きません。上のコマンドを直接コマンドラインモードで入力 +してもダメなのです。 + +============================================================================== +*05.3* 基本的なマップ + +マップを使うと、複数のコマンドを1つのキー繰作にまとめることができます。例え +ば、ある単語を{ }で囲むようにしたい("amount"を{amount}のように変更したい)場 +合を考えます。これを<F5>キーに定義するために:mapコマンドを使います。 +次のように書きます。 > + + :map <F5> i{<Esc>ea}<Esc> +< + Note: + このコマンドを入力する時にはちょっと注意してください。 + <F5>は4文字の文字列として入力してください。<Esc>も同じで、<Esc>キー + を押すのではなく、5文字の文字列として入力してください。このマニュ + アルを読む時にはその違いに注意してください ! + +この定義内容を分解してみましょう。 + <F5> ファンクションキーのF5です。このキーを押すと、定義してあるコ + マンドを実行します。 + + i{<Esc> "{"文字を挿入します。<Esc>キーで挿入モードから通常モードに戻 + ります。 + + e 単語の末尾にカーソルを移します。 + + a}<Esc> "}"文字を追加します。 + +この":map"コマンドを実行した後は、カーソルを単語の先頭に動かしてF5キーを押す +だけで単語の両側に{ }が追加されるようになります。 + +この例では、コマンドは1キーだけでしたが、複数文字でも使えます。但し、既に +vimが使っているコマンドと重なると、元のコマンドが使えなくなります。避ける方 +が賢明でしょう。 +逆スラッシュ(日本語環境では円記号)は複数キーのマップに使える文字です。 +いくつもマップが使いたくなった時には、複数文字にマップしましょう。例えば、 +単語を( )で囲む時は"\p"マップで、単語を{ }で囲む時は"\c"マップで、といった +ことができます。 > + + :map \p i(<Esc>ea)<Esc> + :map \c i{<Esc>ea}<Esc> + +"\"の直後に"p"を指定するようにします。こうすればvimは2文字のマップだと認識 +できます。 + +引数なしの":map"コマンドは現在のマップ(少なくとも通常モードの)定義の一覧 +を表示します。より詳しくは|40.1|章をご覧ください。 + +============================================================================== +*05.4* プラグインの追加 *add-plugin* *plugin* + +vimはプラグインを追加することで機能拡張ができます。プラグインといっても、vim +が起動された時に自動的に読み込まれるvimスクリプトでしかありません。プラグイン +を追加したい場合も、プラグイン用のディレクトリにファイルをドロップするだけで +すから、とても簡単です。 +{note:vimを|+eval|機能なしでコンパイルした場合は使えません} + +プラグインには次の2種類があります。 + + グローバルプラグイン 全種類のファイルで使われるプラグイン + ファイルタイププラグイン 特定タイプのファイルでのみ使われるプラグイン + +まず、グローバルプラグインについて説明し、次にファイルタイププラグインの説明 +|add-filetype-plugin|をしましょう。 + + +グローバルプラグイン *standard-plugin* +-------------------- + +vim起動時には自動的にいくつものグローバルプラグインを読み込みます。特に何も +しなくても大丈夫です。グローバルプラグインでは、ほとんどの人にとって有用な +機能を提供しています。ただし、これらはvimの中にコンパイルして組み込まれてい +るのではなく、vimスクリプトとして実装されています。 +そのリストはヘルプの目次|standard-plugin-list|にあります。|load-plugins|も +ご覧ください。 + + *add-global-plugin* +常に有効にしたい機能は、グローバルプラグインとして追加します。 +グローバルプラグインの追加は次の2つを行うだけです。 + 1. プラグインを入手する + 2. それを正しいディレクトリに入れる + + +グローバルプラグインの入手 +-------------------------- + +プラグインはどこで手に入れられるのでしょう? +- 一部はvimのパッケージに入っています。$VIMRUNTIME/macros以下のディレクトリ + をご覧ください +- インターネットからダウンロードする。http://vim.sf.net をどうぞ。 +- vimのメーリングリスト|maillist|に投稿されることもあります。 +- あなたが自作することもできます。プラグインの書き方|write-plugin|をどうぞ。 + + +グローバルプラグインの使い方 +---------------------------- + +まず、プラグイン自身のドキュメントを読んで、動作条件を確認してください。 +次にそれをプラグイン用ディレクトリにコピーします。 + + system plugin directory ~ + Unix ~/.vim/plugin/ + PC や OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin + Amiga s:vimfiles/plugin + Macintosh $VIM:vimfiles:plugin + Mac OS X ~/.vim/plugin/ + RISC-OS Choices:vimfiles.plugin + +Unixの場合の例(プラグイン用ディレクトリがない場合) > + + mkdir ~/.vim + mkdir ~/.vim/plugin + cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin + +これだけです。vimを再起動するとプラグインに定義されたコマンドが使えます。 + + +ファイルタイププラグイン *add-filetype-plugin* *ftplugins* +------------------------ + +vimの配布パッケージにはいろんなファイルタイプ用のプラグインが入っています。 +次のコマンドで利用開始できます。 > + + :filetype plugin on + +これだけです。|vimrc-filetype|もご覧ください。 + +編集したいファイル用のプラグインがない場合や標準より良いものを見つけた +場合は追加ができます。ファイルタイププラグインの追加は次の手順で行います。 + 1. プラグインを入手する + 2. それを正しいディレクトリに入れる + + +ファイルタイププラグインの入手 +------------------------------ + +ファイルタイププラグインもグローバルプラグインと同じ方法で入手できます。 +ファイルタイプの記載の有無でそのプラグインがグローバルかファイルタイプか区別 +できます。$VIMRUNTIME/macros はグローバルプラグイン用で、$VIMRUNTIME/ftplugin +はファイルタイププラグイン用のディレクトリです。 + + +ファイルタイププラグインの使い方 *ftplugin-name* +-------------------------------- + +ファイルタイププラグインは正しいディレクトリにドロップするだけで追加できます。 +このディレクトリ名はグローバルプラグインの場合と同様ですが、最後のディレクト +リ名が"ftplugin"となります。例えば"staff"ファイルタイプ用のプラグインを見つ +け、Unixシステムに入れるとしましょう。入手したファイルを次のコマンドで +ftpluginディレクトリに移します。 > + + mv thefile ~/.vim/ftplugin/stuff.vim + +既に"staff"用のプラグインが存在している場合、既存のプラグインと追加しようと +しているプラグインにコンフリクト(矛盾、衝突)がないことを確認してください。 +問題がなければ別の名前に変えましょう。 > + + mv thefile ~/.vim/ftplugin/stuff_too.vim + +アンダースコア(_)文字はファイルタイプ名とそれ以外の区別に使います。アンダー +スコア以降はどんな文字列でも構いません。しかし、例えば、"otherstuff.vim"と +いった名前にするとうまく動きません。これは"otherstuff"というファイルタイプ +の時にだけ読み込まれるからです。 + +MS-DOSでは長いファイル名が使えません。特にファイルタイプ名が6文字以上のプ +ラグインに2つ目を追加しようとすると問題が生じます。この回避のため、専用 +ディレクトリが使えます。 > + + mkdir $VIM/vimfiles/ftplugin/fortran + copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim + +ファイルタイププラグインの名前付けルールは次の通りです。 + + ftplugin/<filetype>.vim + ftplugin/<filetype>_<name>.vim + ftplugin/<filetype>/<name>.vim + +"<name>" の部分はどんな文字列でも構いません。 +以下はUnixでの"staff"ファイルタイププラグインのファイル名の例です。 + + ~/.vim/ftplugin/stuff.vim + ~/.vim/ftplugin/stuff_def.vim + ~/.vim/ftplugin/stuff/header.vim + +<filetype>にはプラグインが使われるファイルタイプ名を書きます。 +ファイルタイプが合致したファイルだけをプラグインとして使います。<name>部分は +無視します。<name>は同じファイルタイプのプラグインを複数登録する場合のプラグ +インの区別用です。なお、ファイル名の最後は".vim"でなければなりません。 + + +より詳しい情報は以下をご覧ください。 +|filetype-plugins| ファイルタイププラグインとマップで発生する問題の回避 + 方法についてのドキュメント +|load-plugins| 起動時に読み込まれるグローバルプラグイン +|ftplugin-overrule| グローバルプラグインの設定の上書き(overruling) +|write-plugin| プラグインスクリプトの書き方 +|plugin-details| プラグインの使い方やプラグインが動かない場合について + の詳細な情報 +|new-filetype| 新しいファイルタイプを追加するには + +============================================================================== +*05.5* ヘルプファイルの追加 *add-local-help* *matchit-install* + +運が良ければ、プラグインにはヘルプファイルが添付されています。ここでは、ヘル +プファイルのインストール方法を述べます。 そうすれば、新しいプラグインのヘル +プを簡単に探せますね。 +"matchit.vim"プラグイン(vimの配布パッケージに入っています)を例にやってみま +しょう。このプラグインは"%"コマンドで呼応するHTMLタグ間や、vimスクリプトの +if/else/endif間でジャンプできるようにするものです。とても便利なのですが、 +従来互換を失ってしまいます。(だからデフォルトでは有効になっていないのです) +このプラグインにはヘルプ"matchit.txt"が付いています。最初にプラグイン本体を +適切なディレクトリにコピーします。今回はvimの中でやってみます。ですので、 +$VIMRUNTIME が使えます。(ディレクトリがあれば、"mkdir"コマンドは省略できま +す) > + + :!mkdir ~/.vim + :!mkdir ~/.vim/plugin + :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin + +次に'runtimepath'のいずれかのディレクトリに"doc"ディレクトリを作ります。 > + + :!mkdir ~/.vim/doc + +"doc"ディレクトリにヘルプファイルをコピーします。 > + + :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc + +さらに新しいヘルプファイルの項目にジャンプできるように仕掛けをします。 +コマンド|:helptags|を使ってタグファイルを生成します。 > + + :helptags ~/.vim/doc + +さて、これで次のコマンドが使えます。 > + + :help g% + +これは上で追加したヘルプファイルの中から"g%"のヘルプを探すコマンドです。次の +コマンドでローカルヘルプの目次を見ることができます。 > + + :help local-additions + +上でインストールしたローカルなヘルプのタイトルが自動的に追加されています。ここ +を見ればどんなローカルヘルプが追加されたか解ります。ここからタグジャンプもでき +ます。 + +ローカルヘルプファイルの書き方については|write-local-help|をご覧ください。 + +============================================================================== +*05.6* オプションウィンドウ + +欲しいオプションを探すには、ヘルプファイルで|options|を探せばできます。 +もう一つ次のコマンドを使う方法もあります。 + + :options ~ + +これは各オプションに1行の解説が付いた新しいウィンドウを開きます。オプション +はサブジェクトでグループ化されていて、カーソルをサブジェクトの上に動かして +<Enter>を押すとそこにジャンプします。もう一度<Enter>を押すか、CTRL-Oを押すと +戻ってきます。 + +ここでオプションの値を変えられます。例えば、"displaying text"のサブジェクト +に移動し、カーソルを次の行まで持っていきます。 + + set wrap nowrap ~ + +ここで<Enter>を押すと、表示が次のようになります。 + + set nowrap wrap ~ + +このオプションはoffになりました。 + +この行の1つ上には'wrap'オプションの簡単な説明があります。説明のところにカー +ソルを動かして、<Enter>を押すと、'wrap'オプションの完全なヘルプにジャンプ +します。戻るのはCTRL-Oです。 + +数値や文字列を引数に取るオプションの場合、値を編集できます。修正後に<Enter> +キーを押すとそれが新しい値として設定されます。例えば、カーソルを次の行まで +数行上に動かします。 + + set so=0 ~ + +"$"コマンドでカーソルを"0"の上に動かし、"r5"で値を5に変更します。<Enter>を +押すと、その値が設定されます。ここでカーソルを動かすと、画面の端までカーソル +が達する前にスクロールが始まることに気づくでしょう。これは'scrolloff'オプ +ションのしわざです。設定した値はスクロールが始まる場所を画面の端から数えた +時のオフセット値なのでした。 + +============================================================================== +*05.7* よく使うオプション + +vimには本当に大量にオプションがあります。そのほとんどは使うことはないで +しょう。ここでは一部のよく使うものだけを説明します。以下で述べるオプション +についても、より詳しいヘルプが探せることをお忘れなく。オプションを探す時に +は、":help"に続けてアポストロフィで囲んだオプション名を指定します。 > + + :help 'wrap' + +オプションの値がごしゃごしゃになってきたら、デフォルトに戻すことができます。 +デフォルトに戻すのにはアンパサンド(&)を使います。 > + + :set iskeyword& + + +行の折り曲げの禁止 +------------------ + +vimは長い行があれば、画面の右端で折り曲げて(文の全体が見えるように)表示しま +す。しかしウィンドウの右にはみ出した方が良い場合もあります。その場合は左右への +スクロール機能が必要となります。折り曲げをするかどうかは次で設定します。 > + + :set nowrap + +vimは表示していない領域にカーソルを動かそうとすると自動的にスクロールします。 +10文字分を表示させようとするには、次のようにします。 > + + :set sidescroll=10 ~ + +これはファイルの内容には影響しません。表示の方法だけです。 + + +折り曲げ関係の移動コマンド +-------------------------- + +ほとんどの移動コマンドは行頭と行末で止まります。'whichwrap'オプションでこれ +を変更できます。次の例は'whichwrap'をデフォルト値にしています。 > + + :set whichwrap=b,s + +ここでは<BS>キーで行頭から1つ上の行の行末へ動くことを許可しています。 +また、<Space>キーは行末から次の行の行頭への移動を許可しています。 + +カーソルキーの<Left>と<Right>もこのコマンドで使用を許可できます。 > + + :set whichwrap=b,s,<,> + +この指定は通常モードでのみ有効です。挿入モードでも<Left>と<Right>を許可する +には次のように指定します。 > + + :set whichwrap=b,s,<,>,[,] + +他にもいくつかフラグがあります。詳しくは 'whichwrap'のヘルプをご覧ください。 + + +TABを見えるように +------------------ + +ファイル中にTAB(^I)があっても、通常表示では場所がわかりません。次のオプ +ションを使うと、見ることができるようになります。 + + :set list + +TAB記号は全部 ^I と表示され、行末には $ と表示されます。通常なら気付かない +ような、行末の空白類もよくわかるようになります。 +これの欠点はファイルにTABを多用していると見づらくなる点です。カラー端末かGUI +環境で使っているのであれば、空白とTABをハイライト表示にしてこの欠点を避ける +ことができます。この場合、'listchar'オプションを使います。 > + + :set listchars=tab:>-,trail:- + +TABは全て">---"と表示され、末尾の空白は"-"と表示されます。この方がずっとイイ +と思いませんか? + + +キーワード +---------- + +'iskeyword'オプションは単語に使える文字を定義します。 +まず、現在の設定状供を見てみましょう。 > + + :set iskeyword +< iskeyword=@,48-57,_,192-255 ~ + +"@"はアルファベットのことです。"48-57"はASCIIコード48〜57のことで、これは数 +字の"0"〜"9"です。また"192-255"はLatin-1に定義された文字(ヨーロッパの各言語 +で用いる特殊文字)です。 +例えば、"upper-case"を1つの単語と扱って欲しい場合、"-"をキーワードに追加し +ておきます。これは次のようにします。 > + + :set iskeyword+=- + :set iskeyword +< iskeyword=@,48-57,_,192-255,- ~ + +新しい値を見ると、"-"の直前に","を自動追加したのがわかります。 +逆にキーワードから削除するには "-="を使います。アンダースコアを削除するには +次のようにします。 > + + :set iskeyword-=_ + :set iskeyword +< iskeyword=@,48-57,192-255,- ~ + +この場合も"_"を削除する時に","が自動的に削除されています。 + + +メッセージ行 +------------ + +vimを起動した時、最終行はメッセージ用に使われます。 +メッセージが長い場合は、切り捨てるか、<Enter>を押した時にスクロールするかで +す。切り捨てた時は一部しか見ることができなくなります。'cmdheight'オプション +でメッセージ用に使う行数を指定できます。 > + + :set cmdheight=3 + +これは編集用領域を減らすわけですから、むやみに増やせばいいというわけではあり +ません。 + +============================================================================== + +Next chapter: |usr_06.txt| シンタックスハイライトの使用 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_06.jax b/ja/usr_06.jax new file mode 100644 index 000000000..edbc1e8aa --- /dev/null +++ b/ja/usr_06.jax @@ -0,0 +1,287 @@ +COMMENT: 構文強調(テキストの色つけ)の使用法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_06.txt* For Vim version 6.3. Last change: 2002 Jul 14 + + VIM USER MANUAL - by Bram Moolenaar + + シンタックスハイライトの使い方 + + +白黒だけのテキストは退屈です。カラーがあれば、ファイルも生き生きと見えます。 +これは単に見た目が良いだけではなく、作業のスピードアップにもなります。意味 +の違った文字列では色を変えましょう。そしてプリンタにも画面上と同じ色で印刷し +ましょう。 + +|06.1| シンタックスハイライトを使おう +|06.2| 色がつかない?変な色になる? +|06.3| 違った色 +|06.4| カラーを使う?使わない? +|06.5| カラー印刷 +|06.6| さらに + + Next chapter: |usr_07.txt| 2つ以上のファイルを扱う + Previous chapter: |usr_05.txt| 自分用の設定 +Table of contents: |usr_toc.txt| + +============================================================================== +*06.1* シンタックスハイライトを使おう + +次の簡単なコマンドで全てが始まります。 > + + :syntax enable + +たいていの場合はこれを実行すると、あなたが編集しているファイルに合った色情報 +が得られます。 +vimはファイルタイプを元に適切と思われるシンタックスハイライト定義を読み込み +ます。結果、コメントは青、キーワードは茶色、文字列は赤、といった具合にカラー +表示になります。 +これだと、ファイルをざっと見るのがになります。しばらくそれを使ってから、白黒 +に戻ると同じことをするのにも時間がかかることでしょう。 + +いつもシンタックスハイライトを使うのであれば、":syntax enable"というコマンドを +|vimrc|ファイルに追加しておきます。 + +カラー端末の時だけ使いたいのであれば、次のコマンドを|vimrc|ファイルに追加し +てください。 > + if &t_Co > 1 + syntax enable + endif + +GUIバージョンの時だけでよければ、":syntax enable"を |gvimrc| ファイルに追加し +てください。 + +============================================================================== +*06.2* 色が付かない?変になる? + +カラー表示がうまくいかない場合、いろいろな理由が考えられます。 + +- カラー端末じゃない。 + vimは、太字やイタリック、下線も使えます。でもそれだけではあまりカッコ + 良くはできません。カラー対応の端末を入手するのがいいでしょう。 + Unixなら、XFree86プロジェクト(|xfee-xterm|)のxtermがお勧めです。 + +- カラー端末であることをvimが解っていない。 + $TERMの設定が正しいかどうかを確認します。例えば、カラー対応のxtermを + 使っているのであれば、 > + + setenv TERM xterm-color +< + もしくは(シェルによっては) > + + TERM=xterm-color; export TERM + +< のようにします。 + 端末名と実際に使っている端末名は同じでないといけません。それを合せて + もうまく動かないのなら、|xterm-color|をご覧ください。この文書にはvim + の表示をカラー化する方法が書いてあります。(別にxtermに限った文書では + ありません) + +- ファイルタイプが識別できなかった。 + いくらvimでも古今東西のファイルタイプを知っているわけではありません。 + ファイルが使っている言語を伝えるのが難しい場合もあります。このコマン + ドを使ってみてください。 > + + :set filetype +< + この結果が"filetype="ならば、vimはそのファイルのタイプが理解できなか + ったということです。ファイルタイプの指定は手動でもできます。 > + + :set filetype=fortran + +< どんなタイプが使えるかは、$VIMRUNTIME/syntax のディレクトリを見て + ください。GUI版であれば、[シンタックス]メニューも使えます。 + ファイルタイプの設定はモード行(|modeline|)でも出来ます。モード行で + 指定すればそのファイルを編集する時には必ずハイライト表示になります。 + 例えば、Makefileならば次の行が使えます。(ファイルの先頭行か最終行に + 置きます) +> + # vim: syntax=make +< + vimによるファイルタイプの自動検出には通常はファイル名の拡張子("."以 + 降の部分)をよく使います。 + ファイルタイプを検出してvimに通知する方法については|new-filetype|を + ご覧ください。 + +- そのファイルタイプ用のシンタックス定義がない + 似たファイルタイプの設定を、上の手順で使ってみることができます。それ + でも不満な場合は、独自のシンタックス定義を書くこともできます。詳しく + は|mysyntaxfile|をご覧ください。 + + +色がおかしくなることもあるかも知れません。 + +- 色付きの文字が非常に読みづらい + vimは現在の背景色を推測し、それが黒(もしくは同様の暗色)だと思えば、 + 文字にはそれより明るい色を用います。逆に背景色が白(もしくは同様の + 明るい色)だと思えば、文字はそれより暗い色にします。vimの予想がはず + れた場合、文字が読みづらくなる可能性があります。これは'background' + オプションを設定することで解決できます。暗い背景色であれば、 > + + :set background=dark + +< とし、明るいバックグラウンドであれば、 > + + :set background=light + +< とします。 + このコマンドは":syntax enable"より*前*に置く必要がありますので注意 + してください。逆にすると、色は既に確定してしまっています。 + 'background'の指定の後に":syntax reset"を行うと、デフォルトの色に戻 + すことができます。 + +- 末尾から先頭に向ってスクロールした時の色が間違っている + vimは文脈解析の時にファイル全体を読み込むわけではありません。解析は + 画面上で見えている範囲に対して行います。これだと時間は大巾に節約でき + るのですが、時には色を間違ってしまいます。これには CTRL-L を打つか、 + ちょっとだけ逆スクロールとスクロールをさせることでば簡単に直せます。 + 完全な表示をさせるには、|:syn-sync|をご覧ください。一部のシンタック + ス定義ファイルでは、正確な表示を行うために、ずっと後ろの方まで戻って + 解析をしています。詳しくは個々のシンタックス定義ファイルのヘルプをご + 覧ください。例えば、TeX用の定義ファイル|tex.vim|がそれを行っています。 + +============================================================================== +*06.3* 違った色を使う *:syn-default-override* + +デフォルトの色が好みでなければ、他の色テーマを使うことができます。GUI版 +なら[編集]-[色テーマ]メニューが使えます。コマンドを入力することもできます。 > + + :colorscheme evening + +"evening"というのは色テーマの名前です。他にも試していただきたいテーマを用意 +しています。ディレクトリ $VIMRUNTIME/colors をご覧ください。 + +好みの色テーマを見つけたら、":colorscheme"コマンドで|vimrc|ファイルに追加で +きます。 + +自分で色テーマを作ることもできます。その手順は次の通りです。 + +1. 作りたいテーマに近い色テーマを選び、それを自分用のvimディレクトリにコピー + します。Unixなら、このようにします。 > + + !mkdir ~/.vim/colors + !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim +< + vim自身が$VIMRUNTIMEの値を知っていますので、上のコマンドはvim中で行います。 + +2. 色テーマファイルを編集します。よく使う項目を掲げておきます。 + + term 白黒端末の属性 + cterm カラー端末の属性 + ctermfg カラー端末の文字色 + ctermbg カラー端末の背景色 + gui GUI版での属性 + guifg GUI版での文字色 + guibg GUI版での背景色 + + 例えば、コメントを緑にするにはこのようにします。 > + + :highlight Comment ctermfg=green guifg=green +< + "cterm"と"gui"の属性には、"bold"と"underline"が指定できます。両方を指定し + たい場合は、"bold,underline"のように指停します。詳しくは|:highlight|をご + 覧ください。 + +3. 作った色テーマを使うようにvimに指定します。この行を|vimrc|に追加します。 > + + colorscheme mine + +一番よく使っている色の組み合せがどのように見えるか知りたければ、このコマンド +を使います。 > + + :edit $VIMRUNTIME/syntax/colortest.vim + :source % + +このファイルはいろんな色の組み合せを表示します。その中でどれが読み易くて見た +目が良いかをチェックしてください。 + +============================================================================== +*06.4* カラーか白黒か + +文章をカラー表示することには大きな効果があります。でも、表示が遅すぎる時など +ハイライト表示を一時的に止めたいこともあるでしょう。 > + + :syntax clear + +他のファイル(又は同じファイル)を再編集すると、元の色に戻ります。 + + *:syn-off* +ハイライト表示を完全に止めたい場合は、このようにします。 > + + :syntax off + +これで完全にハイライト表示を無効とし、全バッファのハイライト表示を除去します。 + + *:syn-manual* +特定のファイルに対してだけハイライト表示にする場合はこのようにします。 > + + :syntax manual + +これはハイライト表示を有効にしますが、編集を始める時に自動的にはハイライト表 +示にはなりません。現在のバッファをハイライト表示に切り換るには、このように +'syntax'オプションを設定します。 > + + :set syntax=ON +< +============================================================================== +*06.5* カラー印刷 *syntax-printing* + +MS-Windowsバージョンでは、編集中のファイルをこのコマンドで印刷できます。 > + + :hardcopy + +するといつもの印刷ダイアログが表示され、プリンタを選んだり、いくつかの設定 +を行ったりできます。カラープリンタがあれば、出力結果はvim上での表示と同じに +なるはずです。但し、背景色を暗い色にしている場合は、白い紙で丁度良く見える +ような色に変更されます。 + +vimでの印刷方法を変更するために、いくつかのオプションがあります。 + 'printdevice' + 'printheader' + 'printfont' + 'printoptions' + +一部の行範囲だけを印刷するには、visualモードでその範囲を選択して、このコマ +ンドを入力します。 > + + v100j:hardcopy + +"v"でvisualモードを開始し、"100j"で100行下まで移動します。この時その100行 +が反転表示になります。次の":hardcopy"でその範囲を印刷します。もちろん、visual +モードの時に他のコマンドを使って移動することもできます。 + +もしPostScriptプリンタがあれば、Unixでも同じようにできます。そうでなければ、 +多少の手間をかけなければなりません。まず文章をHTMLに変換し、次にそのHTMLを +Netscapeなどのブラウザで印刷するのです。 + +現在のファイルをHTMLに変換するにはこのコマンドを使います。 > + + :source $VIMRUNTIME/syntax/2html.vim + +もしかしたらクラッシュしたかと勘違いしてしまうかもしれませんが、特に巨大なファ +イルではかなりの時間がかかる場合があります。しばらくすると別ウィンドウにHTML +コードが表示されます。これをどこかに保存しましょう。(保存場所は気にしないでお +きましょう。印刷した後で捨てるだけのファイルですから) +> + :write main.c.html + +このファイルをお好みのブラウザで開いて印刷してください。うまくいけば、vimの +画面での表示と全く同じものが印刷されます。詳しくは|2html.vim|をご覧ください。 +全てが終わったら、HTMLファイルは削除してしまいましょう。 + +印刷の代りにそのHTMLファイルをwebサーバ上に置いて、他の人にカラー付きの文書 +として提供することもできます。 + +============================================================================== +*06.6* さらに詳しい情報は + +|usr_44.txt| 独自のシンタックスハイライト +|syntax| 全ての詳細 + +============================================================================== + +Next chapter: |usr_07.txt| 2つ以上のファイルを扱う + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_07.jax b/ja/usr_07.jax new file mode 100644 index 000000000..1951267cf --- /dev/null +++ b/ja/usr_07.jax @@ -0,0 +1,500 @@ +COMMENT: 複数のファイルを編集する +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_07.txt* For Vim version 6.3. Last change: 2004 Mar 12 + + VIM USER MANUAL - by Bram Moolenaar + + 2つ以上のファイルを扱う + + +どんなにファイルが多くても、心配はいりません。全てをvimの中で行えます。作業 +用のファイルリストを定義すれば、ファイル間を自由に移動できます。ファイル間で +文字列をコピー&ペーストするのも自由自在です。 + +|07.1| 他のファイルを編集する +|07.2| ファイル一覧 +|07.3| ファイル間ジャンプ +|07.4| バックアップファイル +|07.5| ファイル間のテキストコピー +|07.6| 読み込み専用モード +|07.7| ファイル名の変更 + + Next chapter: |usr_08.txt| ウィンドウの分割 + Previous chapter: |usr_06.txt| シンタックスハイライトの使用 +Table of contents: |usr_toc.txt| + +============================================================================== +*07.1* 他のファイルを編集する + +ここまでの章では、別のファイルを編集するにはvimの再起動が必要でした。実はこ +れはとても簡単なのです。別のファイルを編集したければ、このコマンドを使います。 > + + :edit foo.txt + +ファイル名は"foo.txt"に限らず何でも使えます。vimは現在のファイルを閉じて、指 +定のファイルを開きます。現在のファイルが変更されていて、それを保存していなけ +れば、エラーメッセージを表示します。この場合、新しいファイルは開かれません。 + + E37: No write since last change (use ! to override) ~ +JP: E37: 最後の変更が保存されていません (! で変更を破棄) ~ + + Note: + vimは各エラーメッセージの先頭にエラーIDを付けて表示します。もしエ + ラーの意味や、何が原因かがわからなければ、このIDでヘルプを引いてく + ださい。上の場合なら、このようにします。 > + + :help E37 + +ここで2つの選択肢が選べます。一つは次のコマンドでファイルを書き出す方法です。 > + + :write + +もう一つは今までの編集結果を破棄して、強制的に新しいファイルを開く方法です。 +これには強制文字(!)を使います。 > + + :edit! foo.txt + +現在編集中のファイルの変更の書き込みはまだしたくないけれど、他のファイルの編 +集は行いたい、といった場合は現ファイルを隠すことができます。 > + + :hide edit foo.txt + +変更のあったファイルはメモリ上に残っていますが、画面では見えません。この詳細 +はバッファリスト(|22.4|)の節で説明します。 + +============================================================================== +*07.2* ファイル一覧 + +vimは起動時に編集対象となるファイルを複数指定できます。例えばこのようにしま +す。 > + + vim one.c two.c three.c + +このコマンドはvimに3つのファイルを編集しようとしていることを伝えます。vimは +起動すると、1つ目ファイル(one.c)だけを表示します。このファイルの編集が終わ +り、次のファイル(two.c)を編集するにはこのコマンドを使います。 > + + :next + +現在のファイルでの変更を保存していない場合は、エラーメッセージを表示し":next" +コマンドを実行しません。前節で述べた":edit"の場合と同じです。保存せずに強制 +的に次のファイルを開くのはこのコマンドです。 > + + :next! + +でも、たいていは変更を保存してから次のファイルを開くことでしょう。ですので、 +そのための特別コマンドを用意しています。 > + + :wnext + +これは次の2つのコマンドを使うのと同じ結果となります。 > + + :write + :next + + +私はドコにいるの? +------------------ + +今編集しているのが引数リスト中のどのファイルなのかは、ウィンドウタイトルを見 +ればわかります。そこに"(2 of 3)"のような表示があります。これは全部で3つの +ファイルがあり、今は2つ目を編集しているという意味です。 +ファイルの一覧を見るのは、このコマンドです。 > + + :args + +これは"arguments"の省略形です。この結果は次のように表示されます。 + + one.c [two.c] three.c ~ + +ここではvim起動時に指定したファイルリストを表示します。編集中のファイル(ここ +では"two.c")は[ ]記号で囲んで表示します。 + + +他のファイルへの移動 +-------------------- + +これはファイルを一つ戻るコマンドです。 > + + :previous + +これは":next"コマンドに似ています。違うのは移動する方向です。繰り返しになり +ますが、このコマンドにもファイル保存してから移動したい時の省略コマンドがあり +ます。 > + + :wprevious + +一覧の最後のファイルに移動するコマンドもあります。 > + + :last + +逆に最初のファイルに戻るコマンドもあります。 > + + :first + +でも、":wlast"とか":wfirst"はありません。 + +":next"と":previous"についてはカウンタが指定できます。例えば、2ファイル先に +進むにはこのようにします。 > + + :2next + + +自動保存 +-------- + +ファイル内を動いて変更を加えた場合は、":write"を忘れてはいけません。そうで +ないとエラーメッセージが表示されます。変更部分を常にファイルに保存したいのな +ら、次のコマンドでvimに自動的に保存するように指示できます。 > + + :set autowrite + +保存して欲しくないファイルを編集する時はこれをoffに戻します。 > + + :set noautowrite + + +他のファイルリストで編集する +---------------------------- + +vimを終了、再起動しなくてもファイルリストは再定義できます。次のコマンドを使 +えば、編集対象のファイルを他のものに変更できます。 > + + :args five.c six.c seven.h + +シェルと同じようにワイルドカードを使うこともできます。 > + + :args *.txt + +vimはリストの最初のファイルを読み込みます。繰り返しになりますが、現在のファ +イルを変更してれば、それを保存することもできますし、":args!"(!が付いてい +ます)で変更を放棄することもできます。 + + +最後のファイルまで編集した? +---------------------------- + *arglist-quit* +ファイルリストを使うと、vimは全ファイルが編集対象だ、と考えます。利用者が間 +違って(ファイルが残っているのに)終わることがないように、リストの最後のファイ +ルを開くまでは、次のエラーメッセージを表示します。 + + E173: 46 more files to edit ~ +JP: E173: 編集すべきファイルがあと 46 個あります。 ~ + +本当に終わってよければ、もう一度終了コマンドを実行すると終了できます。(ただ +し、途中に他のコマンドを実行しない場合に限ります) + +============================================================================== +*07.3* ファイルからファイルへのジャンプ + +2つのファイル間を素早く移動するには、CTRL-^("^"はASCIIキーボードなら6の上 +です)を押します。例を示します。 +訳注: ※JISのキーボードでは'-'の右側にあります。 +訳注: 私見ですが、viはASCII配列で使う方が幸せになれると思います。 +訳注: 例えば、マークジャンプ(')やオリジナルviでの挿入モードでの行キャン +訳注: セル(@)などはJIS配列ではとても使いにくく感じていました。 +> + :args one.c two.c three.c + +上を実行すると1つ目の"one.c"が開きます。 > + + :next + +これで、"two.c"になりました。ここでCTRL-^を使うと"one.c"に戻ります。もう一度 +CTRL-^を押すと、"two.c"に戻ります。さらにCTRL-^を使うと"one.c"となります。 +さて、ここで次のコマンドを実行します。 > + + :next + +これで"three.c"になります。CTRL-^コマンドはファイルリスト中での場所は変更し +ません。それを変更できるのは":next"や":previous"だけです。 + +以前に編集したファイルは補欠ファイル("alternate" file)と呼びます。vimの起動 +直後は CTRL-^は動きません。これは補欠ファイルがまだないからです。 + + +定義済のマーク +-------------- + +他のファイルにジャンプすると、2つの定義済のマークが使えるようになります。 +これは非常に便利です。 > + + `" + +このコマンドは前のファイルから動いた時のカーソル位置に戻します。 +もう1つのマークは最後に変更を加えた場所です。 > + + `. + +"one.txt"を編集していて、ファイルのある場所で"x"を使って文字を削除したとし +ます。その後、"G"で最終行に移動して":w"でファイルを保存します。その後いく +つかのファイルを編集してから、":edit one.txt"を使って戻ってきたとします。こ +こで、 + `" ファイルの末尾にジャンプ。 + `. "x"を使って文字を削除した場所にジャンプ。 +となります。 +`" と `. はさらに変更を加えて、別ファイルにジャンプしない限り変化しません。 + + +ファイルマーク +-------------- + +4章(|4.1|)では"mx"でマークを付け、"`x"でその場所にジャンプする方法を述べま +した。このマークはそのファイルの編集中だけ使えます。別のファイルを開いて、そ +れに同じマークを付けても、マークはそのファイルに固有のものとなります。つまり +各ファイルは各々一組のマークを持っていて、ファイル内に閉じているということで +す。 +ここまでマークには小文字を使ってきました。ですが、大文字のマークも用意されて +います。大文字のマークはグローバルで、どのファイルからでも使えます。例えば +"foo.txt"というファイルの編集中に"50%"コマンドでファイルの真ん中にジャンプ +して、そこにF(大文字のf)というマークを付けたとします。 > + + 50%mF + +次に"bar.txt"を編集して最終行にマーク B を付けます。 +> + GmB + +さて、ここで"'F"コマンドを使うと、いきなりfoo.txtの真ん中にジャンプします。 +もちろん"bat.txt"内で"'B"を入力すると、bar.txt の行末にも移動できます。 + +ファイルマークは他の場所に設定し直さない限り、ずっと覚えてくれています。です +から一度マークを付ければ、何時間も編集を行ってからでもそのマークに戻って来るこ +とができるのです。 +マーク名にはマークを付けた場所から連想できるような単純なルールを決めておくと +よいでしょう。例えば、ヘッダファイルは H 、makeファイルは M 、Cのソースには +Cといった具合です。 + +あるマークがどこに定義されているかを見たければ、":marks"コマンドの引数にマー +クを指定します。 > + + :marks M + +マークを複数指定しても構いません。 > + + :marks MCP + +マークを付けていなくても CTRL-O と CTRL-I を使えば、古い場所と新しい場所の間 +をジャンプできることをお忘れなく。 + +============================================================================== +*07.4* バックアップファイル + +通常vimはバックアップファイルを作成しません。しかしバックアップが必要なら次 +のコマンドを実行するだけです。 > + + :set backup + +バックアップファイルは元のファイル名の後ろに"~"を加えた名前になります。 +ファイル名が、"data.txt"であれば、バックアップファイル名は"data.txt~"となり +ます。 + ~で終わるのが好みでなければ、このように変更できます。 > + + :set backupext=.bak + +上のように設定するとバックアップファイルは"data.txt~"ではなく"data.txt.bak" +になります。 +もう一つのオプション'backupdir'にも触れておきましょう。これはバックアップ +ファイルを作るディレクトリを指定するオプションです。デフォルトではバックアッ +プは元ファイルと同じディレクトリに作られます。たいていの場合はこれで問題ない +はずです。 + + Note: + 'backup'オプションがoffで、'writebackup'がonの場合、vimはバックアップ + を作ります。ただしそのバックアップは正常にファイルへの保存が行われた + 時に削除されます。この機能は何らかの理由(例えば、ディスクがいっぱい + になったというのが一番ありがちな理由です。雷にやられるというのも可能 + 性は低いですがありうることです)で書き込み処理に失敗した時、オリジナ + ルファイルを失ってしまう危険を回避するための機能なのです。 + + +オリジナルファイルの保全 +------------------------ + +ソースファイルの編集などで、変更を加える前のファイルを残しておきたい時もあり +ます。しかし、バックアップファイルはファイルを保存する都度に上書きされますか +ら、直前のバックアップしか残らず、最初のファイルはなくなってしまいます。 +変更前のファイルを残しておく場合は、'patchmode'オプションを設定します。これ +には変更を加える前のファイルバックアップ用の拡張子を指定します。普通はこのよ +うに指定します。 > + + :set patchmode=.orig + +data.txtを開いて編集をし、最初にファイルを保存しようとした時に、vimは変更前 +のファイルを"data.txt.orig"という名前にして保全してくれます。 +さらにファイルに変更を加えても、既に"data.txt.orig"があるので、そのままにし +て上書きはしません。この場合もバックアップは"data.txt~"(もしくは'backupext' +で指定された名前)で作成されます。 +'patchmode'が空のまま(これがデフォルト)だと、変更前ファイルを残しません。 + +============================================================================== +*07.5* ファイル間での文字列のコピー + +ここではファイルから別のファイルに文字列をコピーする方法を説明します。簡単な +例で始めましょう。まずコピーしたい文字列を含んだファイルを編集中とします。 +カーソルを対象となる文字列の先頭に動かして"v"を押します。visualモードに入り +ますので、カーソルを対象文字列の末尾に動かして"y"を押します。これで対象をヤン +ク(いわゆるコピー)しました。 +例えばこの上の段落をコピーしたければ次のようにします。 > + + :edit thisfile + /ここでは + vjjjjj$y + +次にこのテキストをプット(ペースト)したいファイルを編集します。文字列をプット +したい場所にカーソルを動かし、"p"コマンドでプットします。 > + :edit otherfile + /どこか + p + +当然ながら、文字列のヤンクには他にもいろんなコマンドが使えます。例えば、行 +全体を選択したければ、"V"で行単位のビジュアルモードを使えますし、矩形の選択 +ならCTRL-Vを使っても構いません。"Y"で1行のヤンクを使ってもいいですし、"yaw" +で単語をヤンクするなど、何でもOKです。 +"p"コマンドはカーソルの後に文字列をプットします。カーソルの前にプットしたけ +れば、 "P"を使います。なお、vimは行単位でヤンクしたのかブロック単位なのかを +覚えています。行単位でヤンクしたのならプットも行単位ですし、ブロック単位で +ヤンクしたのならプットもブロック単位です。 + + +レジスタの使用 +-------------- + +あるファイルから別のファイルに複数の文字列をコピーしたい場合、手間ひまをかけ +て何度も何度もファイルを切り換えなければなりません。これを避けるには、各文 +字列をレジスタにコピーします。 +レジスタというのはvimが文字列を保持する場所です。レジスタには a ~ z の名前 +がついていています(実はこれ以外にもあるのですが、それは後程)。では文字列をレ +ジスタ f (fはfirstのつもり)にヤンクしてみましょう。 > + + "fyas + +"yas"コマンドで文をヤンクします。"f はその文字列をレジスタ f に入れるための +指定です。この指定はヤンクコマンドの直前に指定します。 +さらに3行をレジスタ l (lはlineのつもり)にヤンクしてみましょう。 > + + "l3Y + +カウンタ(回数指定)は "l の直前に指定しても構いません。 +また、ブロック単位の文字列をレジスタ b (bはblockのつもり)にヤンクする場合は +このようにします。 > + + CTRL-Vjjww"by + +この場合でもレジスタ指定 "b を"y"コマンドの直前で指定している点に注意してく +ださい。これは必須事項です。これを"w"コマンドより前に置いてしまうとうまく動 +きません。 +さて、この時点でレジスタ f,l,b の3つにそれぞれ文字列が格納されました。 +ここで別のファイルを開いて、目的の場所に動いてからレジスタ内容をプットしま +す。 > + + "fp + +ヤンクの場合と同じく、レジスタ指定"f は"p"コマンドより前でなければなりませ +ん。どのレジスタからプットしても構いません。他の文字列をヤンクし直さない限り +レジスタの内容は変化しません。ですから、同じレジスタの内容を何度でも好きなだ +けプットできます。 + +ヤンク時だけでなく、削除の時もレジスタが使えます。これを使うと、複数の文字列 +を好きなように移動できます。例えば単語を削除しその内容をレジスタ w に入れるに +はこのようにします。 > + + "wdaw + +繰り返しですが、レジスタ指定は削除コマンドの前に置いてください。 + + +ファイルに追記する +------------------ + +編集中の文章を他のファイルにまとめたい場合は、このコマンドを使います。 > + + :write >> logfile + +これは編集中のファイル内容を"logfile"に追記します。これを使うと、1)コピーし +たい範囲を選択してヤンクし、2)"logfile"を開き、3)末尾にプットするという手間 +をかけなくて済みます。ただし、ファイルの末尾への追加しかできません。 +数行程度を追記したければ、visualモードでそれを選択してから":write"を実行し +ます。行範囲の選択方法は、10章でいろいろと説明します。 + +============================================================================== +*07.6* 読み込み専用モード + +ファイルの内容は見たいけれど、変更や保存はしたくないというケースもあります。 +ですが、うっかり":w"を実行してしまうと元のファイルに上書きされます。これは +危険です。これを避けるためファイルの読み込み専用モードを用意しています。 +vimを読み込み専用モードで起動するにはこのコマンドを使います。 > + + vim -R file + +Unix上なら、次のコマンドも同じ意味になります。 > + + view file + +これで"file"を読み込み専用モードで編集できます。":w"をしようとすると、エラー +メッセージが表示され、保存は行われません。 +また、ファイルに変更を加えようとすると、vimは次のような警告を表示します。 + + W10: Warning: Changing a readonly file ~ +JP: W10: 警告:読込専用ファイルを変更します ~ + +警告は出ますが、変更は可能です。これは例えば、内容を読み易くするためにフォー +マットを整えるといったことを許すためです。 +読み込み専用モードであることを忘れて、(保存したいような)変更を加えてしまった +場合でも保存はできます。writeコマンドに ! を付けて強制保存してください。 + +完全にファイルの変更を禁止したい時は、このようにします。 > + + vim -M file + +これで内容を変更しようとしてもエラーになります。例えばヘルプファイルを表示す +る時はこのモードになります。変更しようとすると、次のエラーメッセージが表示さ +れます。 + + E21: Cannot make changes, 'modifiable' is off ~ +JP: E21: 'modifiable'がオフなので、変更できません ~ + +vimを閲覧モードで動くように設定したければ-M を引数に与えます。とはいってもこ +れは自主規制みたいなものですから、次のコマンドを使えばプロテクトははずれてし +まいます。 > + + :set modifiable + :set write + +============================================================================== +*07.7* ファイル名の変更 + +新たなファイルの作成時に既存ファイルから必要な部分を抜き出して作るというやり +方があります。例えばファイル名を変更するプログラムを作りたいとしましょう。 +もし以前に作ったファイルコピーのプログラムがあれば、それを流用したいですよね。 +> + :edit copy.c + +新しいプログラムに不必要な部分は削除してしまいましょう。次に、このファイルに +新しい名前を付けましょう。そのためのコマンドが":saveas"です。 > + + :saveas move.c + +vimは内容を指定のファイル名で保存し、編集中のファイルもその名前にします。 +ですから次に":write"した時も"move.c"に上書き保存され、"copy.c"は変更されずに +残ります。 +保存しないで編集中のファイル名だけを変更する場合は、次のコマンドを使います。 > + + :file move.c + +vimはこのファイルを"未編集"として扱います。これは編集開始時とは違うファイル +となっているためです。ファイルを保存しようとすると、次のようなメッセージが +表示される場合があります。 + + E13: File exists (use ! to override) ~ + +これは間違って他のファイルに上書きしてしまうのを防ぐための防護策です。 + +============================================================================== + +Next chapter: |usr_08.txt| ウィンドウの分割 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_08.jax b/ja/usr_08.jax new file mode 100644 index 000000000..0f120944e --- /dev/null +++ b/ja/usr_08.jax @@ -0,0 +1,512 @@ +COMMENT: ウィンドウ分割(複数のファイルを表示する) +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_08.txt* For Vim version 6.3. Last change: 2004 Jun 04 + + VIM USER MANUAL - by Bram Moolenaar + + ウィンドウの分割 + + +関係のない2つの違ったファイルを表示したい。1つのファイルの2個所を同時に +見たい。2つのファイルを横に並べて差分を見てみたい。 +ウィンドウ分割を使えばどれもできてしまいます。 + +|08.1| ウィンドウの分割 +|08.2| 他のファイルでウィンドウを分割 +|08.3| ウィンドウのサイズ +|08.4| 縦分割 +|08.5| ウィンドウの移動 +|08.6| 全ウィンドウに対するコマンド +|08.7| vimdiffで差分を見る +|08.8| その他 + + Next chapter: |usr_09.txt| GUIを使う + Previous chapter: |usr_07.txt| 2つ以上のファイルを扱う +Table of contents: |usr_toc.txt| + +============================================================================== +*08.1* ウィンドウの分割 + +新しいウィンドウを開く一番簡単なコマンドはこれです。 > + + :split + +このコマンドは画面を2つのウィンドウに割って、カーソルを上側のウィンドウに +置きます。 + + +----------------------------------+ + |/* file one.c */ | + |~ | + |~ | + |one.c=============================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +画面には同じファイルが両方のウィンドウに表示されます。 "===="のラインは +ステータス行で、各ウィンドウの一番下にあってそのウィンドウの情報を表示しま +す。(実際にはステータス行は反転表示になります) +各ウィンドウには同じファイルの違う場所を表示できます。例えば、上側のウィンド +ウにはプログラムの変数宣言部を表示し、下の方にはその変数を使っている箇所を +表示させる、といったことができます。 + +CTRL-W w コマンドでウィンドウ間をジャンプできます。上側のウィンドウにカーソ +ルがある時にCTRL-W w を押すとその下のウィンドウにジャンプします。一番下の +ウィンドウにカーソルがある時は一番上のウィンドウに戻ります。(CTRL-W CTRL-Wも +同じですから、ちょっとだけCTRLキーを離すのが遅くても大丈夫です) + + +ウィンドウを閉じる +------------------ + +ウィンドウを閉じるのは次のコマンドです。 > + + :close + +":quit"とか"ZZ"のようなファイル編集の終了コマンドはどんな場合でも使えます。 +が、":close"では最後のウィンドウを閉じることができません。これは間違ってvim +を終了しないための防止策です。 + + +他ウィンドウを全部閉じる +------------------------ + +いくつものウィンドウを開いていて、今だけは1つに集中したいと思った場合は、 +次のコマンドが便利です。 > + + :only + +これはカーソルのあるウィンドウ以外を全部閉じます。他のウィンドウで変更がある +場合には、エラーメッセージが表示され、ウィンドウも閉じません。 + +============================================================================== +*08.2* 他のファイルでウィンドウを分割 + +下のコマンドは2つ目のウィンドウを開き、指定のファイルの編集を始めます。 +> + :split two.c + +one.cを編集している場合だと、結果は次のようになります。 + + +----------------------------------+ + |/* file two.c */ | + |~ | + |~ | + |two.c=============================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +新規の空ファイルのウィンドウを開くのは次のコマンドです。 + + :new + +":split"や":new"コマンドは作りたいウィンドウの数だけ繰り返し実行できます。 + +============================================================================== +*08.3* ウィンドウのサイズ + +":split"コマンドは数値を引数として取れます。その値は新しいウィンドウの高さと +なります。例えば、次のコマンドは3行分の高さのウィンドウを開き、そこでalpha.c +の編集を始めます。 > + + :3split alpha.c + +既存のウィンドウでもいくつかの方法でサイズを変更できます。マウスがあれば話 +は簡単です。ウィンドウを分割しているステータス行にマウスを動かし、上下にド +ラッグしてください。 + +ウィンドウサイズを増やすには、 > + + CTRL-W + + +逆に減らすには、 > + + CTRL-W - + +です。どちらのコマンドも数値を引数として取り、その行数分、ウィンドウサイズを +増減します。ですから、"4CTRL-W+"はウィンドウを4行分大きくします。 + +ウィンドウの高さを指定の行数とするのは次のコマンドです。 > + + {height}CTRL-W _ + +これは{height}、CTRL-W、_(アンダースコア)です。 +ウィンドウを最大限まで大きくするには、CTRL-W _ コマンドを数値指定なしで実行 +します。 + + +USING THE MOUSE [マウスを使う] + +vimは様々なことをキーボードから極めて素早く行うことができます。残念ながら、 +上で述べたウィンドウのサイズ変更コマンドは多少のタイピングが必要となりま +す。この場合、マウスを使う方が早いでしょう。マウスポインタをステータス行に +合せてから左ボタンを押してドラッグをしてください。ステータス行が動き、片方 +のウィンドウが大きくなり、もう片方は小さくなります。 + + +関連オプション + +'winheight'オプションでは希望する最小のウィンドウの高さを設定することができ、 +'winminheight'では最小のウィンドウの高さを強制することができます。 +同様に、'winwidth'オプションでは希望する最小のウィンドウの幅を設定することがで +き、'winminwidth'では最小のウィンドウの幅を強制することができます。 +'equalalways'オプションが設定されていると、ウィンドウが閉じたり開いたりするた +びに、全てのウィンドウのサイズが同じになるように調整されます。 + +============================================================================== +*08.4* 縦分割 + +":split"コマンドは新しいウィンドウを現在のウィンドウの上側に作ります。左側 +にウィンドウを表示させるには、 > + + :vsplit + +か、 > + :vsplit two.c + +を使います。実行後は次のようになります。 + + +--------------------------------------+ + |/* file two.c */ |/* file one.c */ | + |~ |~ | + |~ |~ | + |~ |~ | + |two.c===============one.c=============| + | | + +--------------------------------------+ + +中央の縦棒(|)は実際には反転表示されます。これを縦セパレータと呼び、左右の +ウィンドウを分割します。 + +また新しい空ファイル用ウィンドウを作る、":vnew"コマンドもあります。これは +次のようにしてもできます。 > + + :vertical new + +":vertical"コマンドはウィンドウ分割のコマンドの前に指定できます。これを +指定すると、ウィンドウは水平方向ではなく、垂直方向に分割されるようになり +ます。(ウィンドウを分割しないコマンドの場合は何も変わりません) + + +MOVING BETWEEN WINDOWS [ウィンドウ間の移動] + +水平方向でも垂直方向でも好きなだけウィンドウ分割できますから、ウィンドウ +を自在に配置できます。そのウィンドウ間を移動するには次のようなコマンドを +使います。 + + CTRL-W h 左側のウィンドウに移動 + CTRL-W j 下側のウィンドウに移動 + CTRL-W k 上側のウィンドウに移動 + CTRL-W l 右側のウィンドウに移動 + + CTRL-W t 一番上のウィンドウに移動 + CTRL-W b 一番下のウィンドウに移動 + +カーソル移動と同じ文字を使うことに気付いたことでしょう。使いたければ、 +矢印キーも同じように使えます。 +上記以外のウィンドウ間移動コマンドは|Q_wi|をご覧ください。 + +============================================================================== +*08.5* ウィンドウの移動 + +いくつかのウィンドウに分割したが、良くない場所にあるとします。そんな場合、 +ウィンドウをどこか別の場所に動かす必要があります。例えば、このように3つの +ウィンドウがあるとします。 + + +----------------------------------+ + |/* file two.c */ | + |~ | + |~ | + |two.c=============================| + |/* file three.c */ | + |~ | + |~ | + |three.c===========================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +明らかに一番下のウィンドウが一番上にくるべきです。そのウィンドウに(CTRL-W w +を使って)移動し、次のコマンドを入力してください。 > + + CTRL-W K + +ここでは大文字の"K"を使います。これを実行すると、そのウィンドウが一番上に移動 +します。ここでもKが上への移動で使われていることに気が付くでしょう。 +縦分割している場合に、CTRL-W K を押すと現在のウィンドウを一番上に移動し、その +ウィンドウが横巾いっぱいまで占有するようにします。例えば、このようなレイアウ +トになっているとします。 + + +-------------------------------------------+ + |/* two.c */ |/* three.c */ |/* one.c */ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |two.c=========three.c=========one.c========| + | | + +-------------------------------------------+ + +ここでCTRL-W Kを中央のウィンドウ(three.c)で使うと、結果はこうなります。 + + +-------------------------------------------+ + |/* three.c */ | + |~ | + |~ | + |three.c====================================| + |/* two.c */ |/* one.c */ | + |~ |~ | + |two.c==================one.c===============| + | | + +-------------------------------------------+ + +他に同じようなコマンドが3つあります。(多分内容は推測できるでしょう) + + CTRL-W H ウィンドウを左端に移動 + CTRL-W J ウィンドウを下端に移動 + CTRL-W L ウィンドウを右端に移動 + +============================================================================== +*08.6* 全ウィンドウを対象とするコマンド + +いくつかウィンドウを開いていて、vimを終わりたい場合は、個々のウィンドウを +一つづつ閉じることで終了できます。でも手っ取り早いのは次のコマンドです。 > + + :qall + +これは":quit all"の意味です。どれかのウィンドウに変更が加わっていれば、vimは +終了しません。カーソルは自動的に変更のあったウィンドウに移動します。":write" +を使ってそれぞれを保存することも、":quit!"でそれを破棄することもできます。 + +変更のあるウィンドウがあることがわかっていて、それを全部保存したいのなら、 +このコマンドが使えます。 > + + :wall + +これは":write all"の意味です。とはいっても、実際に保存するのは変更のあった +ファイルだけです。変更していないファイルを上書きしても意味がないことをvimは +わかってますから。 +で、さらに上のコマンド":qall"と":wall"を組み合せた"write and quit all"コマ +ンドがあります。 > + + :wqall + +これは変更のあったファイルを全部保存してからvimを終わります。 +最後に、全変更を投げ捨ててvimを終わるコマンドもあります。 > + + :qall! + +このコマンドはアンドゥできないので、使う時には慎重に! + + +OPENING A WINDOW FOR ALL ARGUMENTS [全引数のウィンドウを開く] + +引数で指定した各ファイル用のウィンドウを開くには、起動パラメタに"-o"を指定 +します。 > + + vim -o one.txt two.txt three.txt + +結果はこうなります。 + + +-------------------------------+ + |file one.txt | + |~ | + |one.txt========================| + |file two.txt | + |~ | + |two.txt========================| + |file three.txt | + |~ | + |three.txt======================| + | | + +-------------------------------+ + +起動パラメタ"-O"だと、ウィンドウが縦分割になります。 +vimが既に起動しているのであれば、":all"コマンドを使うと引数リストの各ファイ +ル毎にウィンドウを開きます。":vertical all"だと縦分割になります。 + +============================================================================== +*08.7* vimdiffでファイルの差分を見る + +vimには2つのファイル差分を見るための特別な起動方法があります。"main.c"とい +うファイルを開き、1行に数文字を挿入します。次に'backup'オプションを有効に +してからファイルを保存します。するとバックアップファイル"main.c~"には直前の +バージョンが入っています。 +シェルで(vim上ではありません)次のコマンドを入力します。 > + + vimdiff main.c~ main.c + +vimは2つのウィンドウを左右に並べた状態で起動します。画面には先ほど追加した +行とその前後の数行だけを表示します。 + + VV VV + +-----------------------------------------+ + |+ +--123 lines: /* a|+ +--123 lines: /* a| <- fold + | text | text | + | text | text | + | text | text | + | text | changed text | <- changed line + | text | text | + | text | ------------------| <- deleted line + | text | text | + | text | text | + | text | text | + |+ +--432 lines: text|+ +--432 lines: text| <- fold + | ~ | ~ | + | ~ | ~ | + |main.c~==============main.c==============| + | | + +-----------------------------------------+ + +(上の図ではハイライト部分がわからないので、ちゃんと見たければ、vimdiffコマ +ンドを実行してみてください) + +変更していない行は1行に圧縮しています。これをclosed foldと呼びます。 +上の図では "<- fold"とある行がそうです。最初のフォールド行は123行分のテキス +トを示し、この数字は両方のファイルで一致しています。 +"<- changed line"とある行はハイライト表示となり、挿入した文字列は別の色での +表示になります。こうすることで2つのファイル間で違っている場所を表示します。 +削除された行はmain.cのウィンドウにあるように"---"で表示します。上の図の、 +"<- deleted line"とある所を見てください。実際にはここには何も文字はありませ +ん。main.cに空行を埋めこんで、他のウィンドウと同じ行番号となるように表示し +ます。 + + +THE FOLD COLUMN [桁のフォールド] + +各ウィンドウの左側にちょっとバックグラウンドの変わった桁があります。上の図で +は、"VV"と書いてあります。フォールドしている行の前には、ここに"+"記号が表示 +されます。マウスポインタをその"+"記号に動かし、左ボタンを押します。フォール +ドが開き、その中にあったテキストを見ることができます。 +フォールドの桁には"-"記号が入ります。"-"をクリックするとフォールドは元のよ +うに閉じます。 +当り前ですが、これはマウスがある場合だけできます。キーボードを使って"zo"と +"zc"で開いたり、閉じたりできます。 + + +DIFFING IN VIM [vimの中で差分を取る] + +diffモードを始めるもう一つの方法はvimの中から実行できます。"main.c"を編集し +て、次に画面を分割し、差分を表示しましょう。 > + + :edit main.c + :vertical diffsplit main.c~ + +":vertical"コマンドはウィンドウを縦分割する時に使用します。これを省略すると、 +横分割になります。 + +パッチかdiffファイルがあれば、差分モードを第3の方法で始められます。最初に +パッチを適用するファイルを開き、次にvimにそのパッチファイルの名前を教えてや +ります。 > + + :edit main.c + :vertical diffpatch main.c.diff + +警告:パッチファイルには編集中のファイル用のパッチだけしか含んではなりません。 +でないと大量のエラーメッセージが表示されたり、思いもよらないパッチを他のファ +イルに当ててしまうかもしれません。 +パッチ処理はvimの中でファイルのコピーに対して行います。ハードディスク上のファ +イルは(vim上でそれを上書きしない限り)変更されないままです。 + + +SCROLL BINDING [同期スクロール] + +ファイル間の差分がたくさんある時も、あなたは普通の方法でスクロールできます。 +vimは2つのウィンドウが同じ行番号から始まるようにもう片方を自動的にスクロー +ルしてくれます。ですから、左右に並べておくと違いがよく解るでしょう。 +同期スクロールを止めたくなったら、次のコマンドを使います。 > + + :set noscrollbind + + +JUMPING TO CHANGES [差分の箇所にジャンプする] + +何らかの方法でフォールドをdisableにした時、差分の箇所を見つけるのが難しく +なります。このコマンドを使うと、次の差分を探してジャンプしてくれます。 > + + ]c + +逆方向に探すのはこれです。 > + + [c + +回数指定を使えば、さらに遠くまでジャンプします。 + + +REMOVING CHANGES [変更を取り止めにする] + +ウィンドウ間でのテキスト移動ができます。これによって、差分が増えたり、減った +りします。どんな場合であれ、vimはハイライト表示を更新しません。更新する場合 +は次のコマンドを入力します。 > + + :diffupdate + +差分を取り除くために、片方のウィンドウのハイライト領域をもう片方にコピーでき +ます。上で使った"main.c"と"macin.c~"を例にしてみましょう。カーソルを左側の +ウィンドウに動かし、もう片方のウィンドウでは削除された行に移動します。ここで +次のコマンドを入力します。 > + + dp + +現在のウィンドウのテキストをもう片方のウィンドウにプットして、差分をなしに +します。"dp"というのは"diff put"の意味です。 +同じことを違う方法でもできます。右側のウィンドウにカーソルを動かし、"changed" +が挿入された行にカーソルを動かし、次のコマンドを入力します。 > + + do + +もう片方のウィンドウから文字列を持ってくることで、変更はチャラになります。 +ファイルに違いがなくなってしまったので、vimは全行をclosed foldに押し込みま +す。"do"は"diff obtain"の意味です。意味的には"dg"の方が良いのですが、他で使 +われてしまっているためです。("dgg"で、カーソル位置から最初の行まで削除しま +す) + +diffモードの詳細は |vimdiff| をご覧ください。 + +============================================================================== +*08.8* その他 + +'laststatus'オプションは、最後のウィンドウにステータスラインを表示するかどうか +を制御します。 + + 0 決してしない。 + 1 分割ウィンドウがある時だけ(デフォルト) + 2 常に表示 + +他のファイルを編集する多くのコマンドでは、ウィンドウを分割するバージョン +があります。コマンドラインモードのコマンドでは先頭に"s"を付けます。例えば、 +":tag"はタグジャンプですが、":stag"だとウィンドウ分割をした上で、タグジャ +ンプします。 +通常モードのコマンドでは、CTRL-Wをコマンドの前に置きます。CTRL-^はオルタ +ネートファイルにジャンプしますが、CTRL-W CTRL-^ はウィンドウを分割した上 +で、そのウィンドウに移動します。 + +'splitbelow'オプションでは新しいウィンドウを現在のウィンドウの下に出すよう +にできます。'splitright'オプションでは、縦分割でウィンドウ分割した時に現在 +のウィンドウの右側に出るようにできます。 + +ウィンドウ分割をする時は、以下に示すオプション(正確にはmodifier)をコマンド +の前に指定することでウィンドウの表示位置を指定できます。 + + :leftabove {cmd} 現在ウィンドウの左か上に出る + :aboveleft {cmd} 同上 + :rightbelow {cmd} 現在ウィンドウの右か下に出る + :belowright {cmd} 同上 + :topleft {cmd} vimウィンドウの左か上に出る + :botright {cmd} vimウィンドウの右か下に出る + +============================================================================== + +Next chapter: |usr_09.txt| GUIを使う + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_09.jax b/ja/usr_09.jax new file mode 100644 index 000000000..61fcdbe70 --- /dev/null +++ b/ja/usr_09.jax @@ -0,0 +1,301 @@ +COMMENT: GUIの利用法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_09.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + VIM USER MANUAL - by Bram Moolenaar + + GUIを使う + + +vimは極く普通の端末で動きます。gvimは同じこともできますが、もうちょっとだけ +できることがあります。GUIではメニューやツールバー、スクロールバーといった部 +品を提供します。本章ではGUIが提供する追加事項について説明します。 + +|09.1| GUIの部品 +|09.2| マウスを使う +|09.3| クリップボード +|09.4| 選択モード + + Next chapter: |usr_10.txt| 大きな変更を行う + Previous chapter: |usr_08.txt| ウィンドウの分割 +Table of contents: |usr_toc.txt| + +============================================================================== +*09.1* GUIの部品 + +gVimを起動するためのアイコンがデスクトップにあるかもしれません。でなければ、 +次のコマンドのどちらかでそれができます。 > + + gvim file.txt + vim -g file.txt + +うまく動かないようであれば、GUIをサポートしていないバージョンのvimだという +ことです。まず最初にGUI版をインストールしてください。 +vimはウィンドウを開いて、そこに"file.txt"を表示します。ウィンドウの見た目は +お使いのvimのバージョンに依りますが、概ね次のような画面が出るはずです。 +(この図はASCIIで正しく表示されます) + + +----------------------------------------------------+ + | file.txt + (~/dir) - VIM X | <- window title + +----------------------------------------------------+ + | File Edit Tools Syntax Buffers Window Help | <- menubar + +----------------------------------------------------+ + | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- toolbar + | aaa bbb ccc ddd eee fff ggg hhh iii jjj | + +----------------------------------------------------+ + | file text | ^ | + | ~ | # | + | ~ | # | <- scrollbar + | ~ | # | + | ~ | # | + | ~ | # | + | | V | + +----------------------------------------------------+ + +一番大きな場所はファイル内容が占めています。これは端末での表示と同じやり方 +で表示しますが、色やフォントは違っているだろうと思います。 + + +THE WINDOW TITLE [ウィンドウタイトル] + +一番上はウィンドウタイトルです。この部分はウィンドウシステム(WindowsとかXの +ウィンドウマネージャとか)が描画します。vimは現在のファイル名をタイトルに設 +定します。一部の特殊文字やファイル名のディレクトリ部分はカッコで囲みます。 +特殊文字というのは以下の通りです。 + + - このファイルは変更不可である。(例:ヘルプファイル) + + このファイルは変更されている。 + = このファイルは読み込み専用である。 + =+ このファイルは読み込み専用だが、変更を含んでいる。 + +何も表示されていなければ、通常の変更していないファイルだということです。 + + +メニューバー +------------ + +メニューの使い方はわかりますよね? vimは便利な項目とプラスアルファがありま +す。メニューをざっと見て、何に使えそうかを理解しておいてください。 +[編集]-[全体設定]には関連したサブメニュー設定があります。次のようなエントリ +が見つかるでしょう。 + + ツールバー表示切替 ツールバーの表示のon/off + スクロールバー(下)表示切替 スクロールバー(下)の表示のon/off + スクロールバー(左)表示切替 スクロールバー(左)の表示のon/off + スクロールバー(右)表示切替 スクロールバー(右)の表示のon/off + +ほとんどのシステムではメニューの切り離しができます。メニューの最初にある点 +線のような項目を選択します。すると、メニューと同じ内容の別ウィンドウが表示 +されます。あなたがそれを閉じるまでは、そのウィンドウは開いたままです。 + + +ツールバー +---------- + +ここにはよく使われる機能をアイコンとして格納しています。うまくいけば、アイ +コンはそれを見れば意味がわかります。マウスをアイコンの上に動かして、クリック +せずに1秒ほど待つと、ツールチップと呼ばれるちょっとした説明を表示します。 + +メニューの[編集]-[全体設定]-[ツールバー表示切換]を使うとツールバーを表示しな +いようにできます。ツールバーを全く使わないのであれば、次のコマンドをvimrcに +書いておくこともできます。 > + + :set guioptions-=T + +これは'guioption'オプションから"T"フラグを取り除きます。GUIの他の部分につい +てもこのオプションを使って使用する/しないを指定できます。詳しくはこのオプ +ションのヘルプをご覧ください。 + + +スクロールバー +-------------- + +デフォルトでは右側にスクロールバーが1つあります。これの機能は明確です。 +ウィンドウを分割すると各ウィンドウ用のスクロールバーが作られます。 +メニュー[編集]-[全体設定]-[スクロールバー(下)表示切換]を使えば横スクロール +バーを表示できます。これはdiffモードで有効です。これは差分モードの時や'wrap' +オプションをoffにしている時に便利です。(詳しくは後で説明します) + +垂直分割しているウィンドウがある時は、右側のウィンドウにだけスクロールバーが +付きます。ただし、左側のウィンドウにカーソルを移動するとスクロールバーはその +ウィンドウの管理下に置かれます。 +縦分割ウィンドウを使う場合は左側にスクロールバーを付けるかどうか考えてくださ +い。これはメニューから選ぶか、'guioptions'で設定できます。 +> + :set guioptions+=l + +このコマンドは'guioptions'に'l'フラグを追加します。 + +============================================================================== +*09.2* マウスの利用 + +標準は素晴らしい。Microsoft Windowsでは文字列を選択する標準的な方法としてマ +ウスが使えます。X Windowでもマウスを使う標準的な方法が用意されています。 +ただ不幸なことにこの2つの標準は繰作方法などが同じではありません。 +幸運なことにvimではカスタマイズができます。マウスの振る舞いをX Windowsのマウ +ス方式とすることも、Microsoft Windowsのマウス方式とすることもできます。次の +コマンドはマウスの振る舞いをX Windowのマウス方式に設定します。 > + + :behave xterm + +The following command makes the mouse work like a Microsoft Windows mouse: > +次のコマンドはマウスの振る舞いをMicrosoft Windowsのマウス方式に設定します。 > + + :behave mswin + +UNIXシステムでのデフォルトのマウス方式は xterm です。一方、Microsoft Windows +システムでのデフォルトの方式はインストール中に選択できます。 +JP注: 村岡版のデストリビューションではmswin形式になっているようです。 +2つの振る舞いの詳細については|:behave|をご覧ください。以下では概要だけを説 +明します。 + + +XTERM 方式のマウスの振る舞い + +左ボタンクリック カーソルを移動 +左ボタンドラッグ visualモードで文字列を選択 +中ボタンクリック クリップボードから文字列をペースト +右ボタンクリック マウスポインタが指す場所まで選択範囲を拡張 + + +MSWIN 方式のマウスの振る舞い + +左マウスクリック カーソルを移動 +左マウスドラッグ 選択モードで文字列を選択(|09.4|をご覧ください) +左マウスクリック+シフトキー マウスポインタが指す場所まで選択範囲を拡張 +中ボタンクリック クリップボードから文字列をペースト +右ボタンクリック ポップアップメニューを表示 + + +マウスの動きはさらにチューンできます。マウスの動きを変更したければ、以下のオ +プションをチェックしてください。 + + 'mouse' vimのどのモードでマウスを使うのかを指定 + 'mousemodel' マウスクリックした時に何に影響があるかを指定 + 'mousetime' ダブルクリックのクリック間隔 + 'mousehide' 入力している間、マウスを隠すかどうかの指定 + 'selectmode' マウスでの選択がvisualモードか選択モードかの + 指定 + +============================================================================== +*09.3* クリップボード + +|04.7|の節ではクリップボードの基本的な使い方を説明しました。ここではX Window +での基本的なことについて説明します。X Windowではプログラム間で文字列をやり取 +り用に2つの場所があります。MS-Windowにはこれはありません。 + +X Windowではカレントセレクション("current selection")と呼ばれます。これは現 +在ハイライト表示されている文字列のことです。vimではこれはビジュアル範囲(vim +をデフォルトのオプション設定で使っている場合)と呼びます。この選択範囲は特に +何もせずに他のアプリケーションにペーストできます。 +例えば、この文章のいくつかの単語をマウスで選んだとします。vimは自動的にvisual +モードになり、その文字列をハイライト表示します。ここで別のvimをファイル名な +しで起動します。当然ウィンドウ内は空っぽで表示されます。ここで中央ボタンをク +リックします。選択してあった文字列が挿入されます。 + +カレントセレクションは他の文字列を選択しない限りずっと残っています。他のgvim +にペーストした後に、そのウィンドウの数文字を選択します。この時、先程まで選択 +してあった別ウィンドウのgvimでの単語の表示が違っていることに気付いたでしょう。 +もはや、先程の選択範囲はカレントセレクションではないのです。 + +文字列の選択はマウスでなくても構いません。visualモード用のコマンドをキーボー +ドで入力しても同じことになります。 + + +真のクリップボード +-------------------- + +さて、文字列のやり取り用のもう一つの方法についての番です。今までの説明との混 +同を避けるために、ここでは真のクリップボード("real clipboard")と呼びます。 +普通はカレントセレクションと真のクリップボードをいっしょにしてクリップボードと +呼んでいますが、ここでは真のクリップボードのことだけを指します。 +真のクリップボードに文字列をプットするために、動作中のgvimのウィンドウの一つ +でいくつかの単語を選択し、メニューの[編集]-[コピー]コマンドを実行します。 +これで文字列が真のクリップボードにコピーされました。クリップボードの内容は +それ用のアプリケーション(例えばKDEのklipper)がなければ見ることはできません。 +さて、ここでもうひとつのgvimを選び、カーソルを適当なところに置いて、[編集]- +[貼り付け]コマンドを実行します。真のクリップボードから挿入された文字列が表 +示されます。 + + +両方を使う +---------- + +このカレントセレクションと真のクリップボードの両方を使うことは混乱しそうに思 +われるかも知れません。でもこれはとても便利なのです。例で説明しましょう。 +テキストファイルをgvimを使って以下の処理を実行してみます。 + +- 2つの単語をvisualモードで選択します。 +- [編集]-[コピー]コマンドを実行して単語をクリップボードに入れます。 +- visualモードで別の1つの単語を選択します。 +- [編集]-[貼り付け]コマンドを実行します。この結果は選択している1つの単語が + クリップボードにある2つの単語と入れ替わります。 +- マウスポインタを他のところに動かして中央ボタンを押します。クリップボードで + 上書きした単語がその場所に挿入されます。 + +カレントセレクションと真のクリップボードは気を付けて使いさえすれば、非常に役立 +つテクニックとなります。 + + +キーボードの利用 +---------------- + +マウスを使うのが好きでなくても、カレントセレクションと真のクリップボードに、 +2種類のレジスタを通してアクセスできます。 最初にレジスタ"*"はカレントセレ +クションを示します。 +文字列をカレントセレクションにするにはvisualモードを使います。例えば行全体 +を選択したければ"V"を使います。 +カレントセレクションを現在のカーソル位置の前に挿入するなら、次のようにします。 +> + "*P + +大文字の"P"であることに気を付けてください。小文字の"p"だと文字列をカーソルの +後ろにプットします。 + +次にレジスタ"+"は真のクリップボードを示します。例えばカーソル位置から行末ま +でを真のクリップボードにコピーするのであれば、次のようにします。 > + + "+y$ + +"y"はヤンク、つまりvimでのコピーコマンドのことでしたね。 +真のクリップボードの内容をカーソルの前に挿入するには次のようにします。 > + + "+P + +これはカレントセレクションの場合とほとんど同じですが、レジスタ"*"の代わりに +レジスタ"+"を使っています。 + +============================================================================== +*09.4* 選択モード + +さて、これはX WindowよりもMS-Windowsでよく利用される機能です。ですがどちらのOS +でも利用可能です。Visualモードについては既に知っている通りです。選択モードは +Visualモードに似ています。というのはどちらも文字列を選択する時に使うものだから +です。しし、両者には明らかな違いがあります。文字列を入力している時、選択された +文字列は削除され、入力したものに置き換わります。 + +選択モードで作業を始めるには、最初にそれを有効にする必要があります。(MS- +Windows用ならば、多分、既に有効となっていますが、この方法でもできます。) > + + :set selectmode+=mouse + +ここで、マウスを使って文字列を選択してみてください。visualモードの時のように +ハイライト表示となります。さらに何かの文字を入力してください。すると選択され +ていた文字列は削除され、入力した文字に置き換わります。この時、挿入モードに +なっており、続けて入力を行うことができます。 + +普通に文字を入力することで選択されている文字列を削除するため、通常の移動コ +マンドの"hjkl"や"w"などは使えません。その代わりシフト+特殊キーが使えます。 +<S-Left>(シフト+左矢印キー)はカーソルを左に動かします。この時、選択された +文字列はvisualモードの時のように変化します。シフトキーと他の矢印キーの組み合 +せも使えます。<S-End>と<S-Home>も使えます。 + +選択モードでの動きについては'selectmode'オプションでカスタマイズできます。 + +============================================================================== + +Next chapter: |usr_10.txt| 大規摸な変更 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_10.jax b/ja/usr_10.jax new file mode 100644 index 000000000..d2a222a72 --- /dev/null +++ b/ja/usr_10.jax @@ -0,0 +1,830 @@ +COMMENT: テキストの大規模な修正方法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_10.txt* For Vim version 6.1. Last change: 2001 Sep 18 +*usr_10.txt* For Vim version 6.3. Last change: 2004 Mar 12 + + VIM USER MANUAL - by Bram Moolenaar + + 大規模な変更 + + +第4章では、ちょっとした変更を加える方法について説明しました。この章では変更 +を繰り返したり、大量の文書に影響を与えるような変更方法について説明いをしま +しょう。visualモードでは矩形のテキストに対していろいろな処理を行えます。また +本当に複雑なことを実行するような外部プログラムを使うこともできます。 + +|10.1| レコーディング(記録)とプレイバック(再現) +|10.2| 置換 +|10.3| コマンドの範囲 +|10.4| グローバル(global)コマンド +|10.5| visualブロックモード +|10.6| ファイルの一部の保存と読み込み +|10.7| テキストの整形 +|10.8| 大文字/小文字の変更 +|10.9| 外部プログラムの利用 + + Next chapter: |usr_11.txt| クラッシュからの回復 + Previous chapter: |usr_09.txt| GUIの利用 +Table of contents: |usr_toc.txt| + +============================================================================== +*10.1* レコーディング(記録)とプレイバック(再現) + +"."コマンドは直前の変更コマンドを繰り返します。しかし、一箇所だけではない、 +もう少し複雑なことを繰り返したい場合はどうすればよいでしょう?このために記録 +コマンドがあります。次の3つの手順を行います。 + +1. "q{register}" コマンドを実行すると、指定の{register}に一連のキー入力を記録 + し始めます。レジスタ名は"a"~"z"のいずれかです。 +2. 記録したいコマンドを入力します。 +3. 記録を終了させるには"q"を押します。 + +記録したマクロは"@{register}"コマンドで実行できます。 + +このコマンドをどのように使うか練習してみましょう。次のようなファイル名リスト +があるとします。 + + stdio.h ~ + fcntl.h ~ + unistd.h ~ + stdlib.h ~ + +これを次のように変更したいとします。 + + #include "stdio.h" ~ + #include "fcntl.h" ~ + #include "unistd.h" ~ + #include "stdlib.h" ~ + +まず1行目の行頭に移動します。そして次のコマンドを実行します。 + + qa マクロの記録をレジスタaに開始します。 + ^ 行頭に移動します。 + i#include "<Esc> 行頭に次の文字列を挿入します。 + #include " + $ 行末に移動します。 + a"<Esc> 行末に引用符(")を追加します。 + j カーソルを次の行に移動します。 + q マクロの記録を終了します。 + +さて、1回分の作業はこれで終りました。ここで"@a"コマンドを3回実行して、変更 +を繰り返すことができます。 +"@a"コマンドの前にはカウンタ指定ができます。指定するとその回数だけマクロを実 +行します。この場合なら、次のようにします。 > + + 3@a + + +移動と実行 +---------- + +変更したい行がいろんな場所に分散している場合は、カーソルを各場所に移動して、 +"@a"コマンドを使います。それを一度でも実行すれば、再実行は"@@"でできます。 +こっちの方がちょっとだけ入力が簡単です。今、レジスタbを実行するために"@b"を +使うと、次に"@@"を実行した時にはレジスタbのマクロが実行されます。 +このプレイバック方法と"."を使う方法を比べると、数点の違いがあります。まず最 +初に"."は1箇所の変更しか繰り返せないという点です。上の練習でも見たように、 +"@a"では複数の変更と移動がこなせます。次に"."は直前の変更しか繰り返せないと +いう点です。レジスタ内容を実行する方法なら、何らかの変更を加えた後でも"@a" +を使って記録したコマンドを再実行できます。最後に、26のレジスタを使える点で +す。つまり実行したいコマンド群を26個まで覚えておけるということです。 + + +レジスタの使用 +-------------- + +記録に用いるレジスタはヤンクや削除で使っているのと同じものです。これはレジス +タを操作して、記録内容を他のコマンドと合成することができるということです。 +レジスタnにいくつかのコマンドが記録されているとしましょう。ところが、それを +"@n"で実行しようとして何かミスがあることに気付きました。最初から記録をやり直 +すこともできますが、また他の間違いをしてしまうかもしれません。そうではなく、 +次のようなテクニックを使います。 + + G ファイルの最後にジャンプ + o<Esc> 空行を作成 + "np レジスタnの内容をプット。すると記録した + 時に入力したコマンドが文字列表示されます + {edits} 間違っている部分を修正。これは普通に編集して + 実施 + 0 その行の行頭に移動 + "ny$ 修正したコマンドをレジスタnに格納 + dd 不要になった最終行を削除 + +さて、これで"@n"すると正しいコマンドが実行されます。(記録されたコマンドが改 +行を含む場合は上記の最後の2項目はその全内容を含むようにしてください) + + +レジスタに追記 +-------------- + +ここまでレジスタ名には小文字を使ってきました。レジスタに追記するには大文字を +使います。 +単語を変更するためのコマンドがレジスタcに記録されているとします。これは目的 +通り動くのですが、次に変更すべき単語を探す処理を追加する場合、次のようにしま +す。 > + + qC/word<Enter>q + +このコマンドは、記録内容をレジスタcに追記するという"qC"で始まっています。 +つまり書き込むレジスタ名を大文字で書くと、その小文字のレジスタに追記すると +いう意味になるのです。 + +これは記録コマンドだけでなく、ヤンクや削除コマンドでも同じです。例えば、いく +つかの行をレジスタaに集めたいとします。最初の行では次のコマンドを実行し +ます。 > + + "aY + +次に2つ目の行に移動し、このように入力します。 > + + "AY + +これを該当する全ての行で実行します。レジスタaにはヤンクした順に全行が含ま +れています。 + +============================================================================== +*10.2* 置換 *find-replace* + +":substitute"コマンドはファイルの全行について文字列の置換を実行します。この +コマンドは次の形式で指定します。 > + + :[range]substitute/from/to/[flags] + +このコマンドは[range]で指定した行範囲の中で、文字列"from"を文字列"to"に変更 +します。例えば、次のコマンドを実行すると、全行の"Professor"を"Teacher"に置換 +します。 > + + :%substitute/Professor/Teacher/ +< + Note: + ":substitute"の綴りを完全に入力するような人はまずいません。たいてい + の場合、短縮形の":s"が使われます。以降ではこの短縮形を使います。 + +コマンドの前の"%"はファイル全体を対象とする指定です。範囲指定をしないと、 +":s"コマンドは現在行のみを対象とします。範囲指定については次の節で述べます。 +|10.3| + +デフォルトでは、":substitute" コマンドは各行の最初に見つかったものだけを変 +更します。例えば、上のコマンドは次のように動きます。 + + Professor Smith criticized Professor Johnson today. ~ + +これを次のように変更します。 + + Teacher Smith criticized Professor Johnson today. ~ + +その行にある全箇所を置換するには g(グローバル)フラグをコマンドに追加します。 +次のようになります。 > + + :%s/Professor/Teacher/g + +これを実行すると、先程の行は次のようになります。 + + Teacher Smith criticized Teacher Johnson today. ~ + +他にもフラグには p(print=出力) と c(confirm=確認)があります。pフラグは変更の +ある各行を画面に表示します。また cフラグは置換する前に本当に置き換えるかどう +かを確認します。次のように入力します。 > + + :%s/Professor/Teacher/c + +vimは最初に"Professor"が現れる箇所を見つけ、今まさに置換しようとしているテキス +トを表示し、次のようなプロンプトを表示します。 +> + replace with Teacher (y/n/a/q/l/^E/^Y)? + +ここでは次のいずれかの返答が必要です。 + + y Yes; 変更 + n No; 変更せずにスキップ + a All; これは変更し、以降のものは全て確認なしで変更 + q Quit; これも含めて、以降は変更しない + l Last; これを変更した上で置換を終了 + CTRL-E 画面を1行逆スクロールする + CTRL-Y 画面を1行スクロールする + + +置換コマンドの"from"の部分は実際にはパターンです。これは検索コマンドで使わ +れるのと同じ種類のものです。例えば次の例では、行頭に現れる"the"のみを置換 +の対象とします。 > + + :s/^the/these/ + +"from"や"to"にスラッシュ(/)を含むようなパターンを書きたいのであれば、その前 +に逆スラッシュ(\)を置きます。例えば次の通りです。 > + + :s/one\/two/one or two/ + +ここでは"one/two"という文字列を"one or two"に置換しています。 +もっと簡単な方法もあります。実は":s"コマンドの直後の文字は別にスラッシュ(/) +でなくてもいいのです。例えば、これをプラス(+)にするとこのようになります。 > + + :s+one/two+one or two+ + +この場合は、スラッシュの前に逆スラッシュを付ける必要はありません。 + +============================================================================== +*10.3* コマンドの範囲 + +":substitute"コマンドや多くのコマンドラインモードのコマンドでは一部の行に +対して実行させることができます。これを範囲(range)と呼びます。 +範囲指定の基本形式は {number},{number} です。 > + + :1,5s/this/that/g + +この例では置換コマンドを1行目~5行目に対して実行します。5行目も範囲に入 +ります。範囲指定は必ずコマンドの前に指定します。 + +数字が1つだけの場合は、特定の1行を指定する時に使います。 > + + :54s/President/Fool/ + +一部には範囲を指定しないとファイル全体を対象とするコマンドもあります。このよ +うなコマンドに現在行を対象とさせるには"."を使います。":write"コマンドはその +ように動きます。範囲を指定しないとファイル全体を保存し、現在行だけをファイル +に保存するには次のようにします。 > + + :.write otherfile + +最初の行は1行目となります。では最終行の指定は? それは"$"で示します。例え +ば、現在行から最終行を範囲として置換を行うのは次のとおりです。 > + + :.,$s/yes/no/ + +先程も使った"%"は実際には"1,$"、つまり最初の行から最終行までと同じことです。 + + +範囲でのカッコの使用 +-------------------- + +本のある章を編集していて、そこに出てくる"grey"を全て"gray"に置換したいとし +ましょう。ただしその章だけを対象とし、以降の章は対象にしたくありません。また +章の区切りは行頭が"Chapter"の行があるものとします。次のコマンドでそれができ +ます。 > + + :?^Chapter?,/^Chapter/s=grey=gray=g + +パターン検索を2回使っています。最初の"?^Chapter?"は現在行から逆方向に検索 +を行い、ヒットするパターンを探します。この ?pattern? という範囲の書き方は逆 +方向の検索に使います。同じように "/^Chapter/"は前方検索を行い、次の章の先 +頭を求めています。 +上の例では置換コマンドのセパレータには"="を使っています。これはスラッシュを +多用することによる解りにくさを避けるためです。スラッシュでもそれ以外の文字 +でも問題なく動きます。 + + +加算と減算 +---------- + +実は上のコマンドには、ちょっとだけ間違いがあります。もし次の章のタイトルに +"grey"の文字列がある場合も置換の対象となってしまいます。まあそれが期待して +いたことかも知れませんが、そうでなければ? その場合はオフセットを指定すれば +よいのです。 +パターンを探して、その直前の行までを対象とするには次のようにします。 > + + /Chapter/-1 + +数字は1でなくても構いません。次の例はヒットした行の2行下を指定するという意 +味になります。 > + + /Chapter/+2 + +オフセット値は範囲を示す他の項目にも使えます。次のようにも使えます。 > + + :.+3,$-5 + +これは、現在行の3行下から、最終行の5行上までの範囲を指定してます。 + + +マークの利用 +------------ + +特定の場所を示すのに行番号の代りに、その場所を覚えておいてそれを範囲として +使用するのにマークが使えます。 +マークについては第3章で触れました。例えば、選択範囲としたい領域の先頭で"mt" +でマークし、領域の末尾で"mb"でマークします。すると、マークを使って次のように +範囲指定をすることができます。(マークのある行も範囲に入ります) > + + :'t,'b + + +visualモードと範囲 + +visualモードでも範囲選択ができます。":"を押してコマンドラインモードに入った +時、次のような表示となります。 > + + :'<,'> + +ここでコマンドを入力すると、そのコマンドはビジュアルに選択した行範囲に対し +て適用されます。 + + Note: + 行の一部をvisualモードで選択した場合や、CTRL-Vで文字列を矩形選択し + た場合でも、コマンドラインモードのコマンドは行全体を対象とします。 + これは今後のバージョンのvimでは変更になるかも知れません。 + +'<と'>の実体はvisual選択範囲の始点と終点です。他の範囲をvisualモードで選択 +しない限り、この2つのマークの場所は残っています。ですから、"'<"コマンドを +使えば、visualモードで選択していた範囲の始点にジャンプできます。次のように +マークと他の項目を組み合せることもできます。 > + + :'>,$ + +これはvisual領域の終点から、ファイルの末尾までを行範囲を示します。 + + +行番号 +------ + +変更したい行数が分かっている場合、その数を入力してから":"を押します。例えば +"5:"と入力した場合、次のような表示となります。 > + + :.,.+4 + +続けて、使いたいコマンドを入力できます。範囲として、"."(現在行)~".+4"(4行 +下)が使われます。つまり範囲は5行ということです。 + +============================================================================== +*10.4* global(グローバル)コマンド + +ここで説明する":global"コマンドはvimの中でも最強の部類に属するコマンドです。 +これはパターンにヒットする行を探し、その行で任意のコマンドを実行します。コマン +ドの形式は次の通りです。 > + + :[range]global/{pattern}/{command} + +これは":substitute"コマンドに似ています。ただ、文字列を他のものに置き換える +のではなく、{command}コマンドを実行するのです。 + + Note: + ":global"で実行するコマンドは":"で始まるコマンドだけです。通常モード + のコマンドは直接は使えません。ただし、|:normal|コマンドについては実 + 行できます。 + +C++スタイルのコメント行にある"foobar"だけを"barfoo"に置換したいとしましょう。 +コメント行は"//"で始まる行とします。次のコマンドを使いましょう。 > + + :g+//+s/foobar/barfoo/g + +ここでの":g"は":global"の短縮形です。":substitute"を":s"と縮めるのと同じで +す。次に"+"記号で囲まれた文字があります。今回はスラッシュを含んだパターンを +検索するので、パターンのセパレータに"+"を使っています。その次は"foobar"を +"barfoo"に置換するコマンドがあります。 +グローバルコマンドの適用範囲はデフォルトではファイル全体です。ですから上の例 +では範囲指定をしていません。この点は":substitute"がデフォルトでは現在行だけ +を対象とするのと異なります。 +このコマンドは完全ではありません。というのは行の途中で"//"が出てきた場合も +ヒットするため、行頭から"//"までの間も置換の対象となってしまいます。 + +":substitute"と同じく、どんなパターンでも使えます。もっと複雑なパターンについ +て後で学べば、それも使えます。 + +============================================================================== +*10.5* ブロック選択のビジュアルモード + +CTRL-Vを使うと、テキストの矩形部分を選択することができます。ここではブロック +で使える特殊なコマンドについて説明します。 + +visualブロックモードでは、"$"コマンドには特殊な意味があります。直前のモーショ +ンコマンドに"$"を使ったのであれば、ビジュアル領域の全行が行末まで拡張されま +す。これは現在のカーソル行が他の行よりも短かくても全行の行末まで選択が拡張 +されます。この効果は左右のカーソル移動コマンドを使わない限り、残ります。 +つまり、"j"なら効果は残りますが、"h"では停止します。 + + +テキストの挿入 +-------------- + +"I{string}<Esc>"コマンドを使うと、ビジュアルブロックの各行の左側に{string}を +挿入します。CTRL-Vを押すと、ブロック選択のビジュアルモードに入ります。そこで +ブロックを決めるためにカーソルを動かします。次に"I"を押して挿入モードに入り、 +文字列の挿入を開始します。ここで文字を入力するとは最初の行にだけ表示されます。 +<Esc>を押して挿入モードを抜けると、上で入力した文字列が魔法のようにビジュア +ル領域の残りの行に挿入されます。例を示します。 + + include one ~ + include two ~ + include three ~ + include four ~ + +カーソルを"one"の"o"に合わせてCTRL-Vを押します。"3j"で、カーソルを"four"の +場所まで動かします。これで4行にまたがるブロック選択が出来ました。ここで、 +次のコマンドを入力します。 > + + Imain.<Esc> + +結果は次のようになります。 + + include main.one ~ + include main.two ~ + include main.three ~ + include main.four ~ + +もしブロックの途中に短かい行があって、ブロックに入っていない行があった場合、その +行には何も挿入されません。例えば、ビジュアル領域選択をする +もしブロックの矩形からはずれているような短かい行がブロックの範囲にあった場合 +は、その行は何も影響を受けません。次のように最初と最後の行に"long"という文字 +を含んだ行があって、2行目が短かい場合、2行目は選択されません。 + + This is a long line ~ + short ~ + Any other long line ~ + + ^^^^ selected block + +さて、ここで、"Ivery <Esc>"を入力すると、次の結果となります。 + + This is a very long line ~ + short ~ + Any other very long line ~ + +短かい行には何も挿入されません。入力した行で改行をした場合は、"I"は通常モー +ドでの挿入コマンドのようにブロックの最初の行にだけ挿入されます。 + +"A"コマンドも同じように動きます。違いは、追加されるのがブロックの左側ではな +く右側である点です。 +"A"にはひとつ、特別なケースがあります。ブロック選択のvisualモードで"$"を使っ +て各行の行末まで選択範囲を拡張した場合、"A"を使うと各行の行末に文字列を追加 +します。 +上と同じ例を使って、"$A XXX<Esc>"を入力すると、次のような結果となります。 + + This is a long line XXX ~ + short XXX ~ + Any other long line XXX ~ + +これは実際に"$"コマンドを使う必要があります。vimはそれを使ったことを覚えてい +ます。カーソルを使って一番長い行の行末までカーソルを移動させ、見た目の範囲を +同じにしても、結果は違ってきます。 + + +文字列の変更 +------------ + +ビジュアルブロックでの"c"コマンドはブロックを削除し、挿入モードに入って文字 +列を入力できるようにします。入力された文字列はブロックの各行に挿入されます。 +上での例と同様に"long"を選択している時に、"c_LONG_<Esc>"を入力すると、次のよ +うになります。 + + This is a _LONG_ line ~ + short ~ + Any other _LONG_ line ~ + +"I"コマンドの場合と同じく、短かい行は無視されます。また、新しい文字列には改 +行は入力できません。 + +"C"コマンドの場合は、ブロックの左端から行末までを削除します。次に挿入モード +に入り、文字列を入力できるようになります。その文字列は各行の行末に追加され +ます。 +また同じ例ですが、"Cnew text<Esc>"を入力すると次のようになります。 + + This is a new text ~ + short ~ + Any other new text ~ + +注意すべきは、"long"という単語だけが選択されていても、これを実行すると、行末 +まで全部消えてしまう点です。つまりビジュアルブロックの左端だけしか見ないとい +うことです。 +繰り返しですが、ブロックに含まれないような短かい行はここでも無視されます。 + +その他にブロック内の文字列を変更するコマンドには次のようなものがあります。 + + ~ 大文字/小文字切換え (a -> A and A -> a) + U 大文字化する (a -> A and A -> A) + u 小文字化する (a -> a and A -> a) + + +ひとつの文字で埋める +-------------------- + +ブロック全体を1つの文字で埋めるには"r"コマンドを使います。またまた、上で用 +いた例ですが、"long"を選択した上で"rx"と入力します。 + + This is a xxxx line ~ + short ~ + Any other xxxx line ~ + + + Note: + ブロック内の行末以降の文字も含めたい場合には、25章の'virtualedit' + 機能の説明をご覧ください。 + + +左シフト、右シフト +------------------ + +">"コマンドは選択範囲を決まった桁数だけ右にシフトして空白で埋めます。シフト +の開始位置はビジュアルブロックの左端となります。 +これまた同じ例ですが、">"を行うと次のようになります。 + + This is a long line ~ + short ~ + Any other long line ~ + +このシフト桁数は'shiftwidth'オプションで指定します。これを4に変更するには次 +のようにします。 > + + :set shiftwidth=4 + +"<"コマンドはブロックの左端にある空白類を決まった桁数だけ削除します。このコ +マンドはそこにある文字列の量によって制限を受けます。つまり、シフトできるだけ +の空白文字がない場合は、あるだけしか削除しません。 + + +行の結合 +-------- + +"J"コマンドは選択している全行を1行に連結します。つまり改行を削除します。 +正確には、改行記号、行頭の空白類、行末の空白類、の3つをまとめて1つの空白 +に置換します。(これは'joinspaces'オプションで変更できます) +さて、見慣れたいつもの例題を使ってみましょう。"J"の結果はこうなります。 + + This is a long line short Any other long line ~ + +"J"コマンドはブロック選択のvisualモードでなくても使えます。"v"や"V"でのvisual +モードの場合も全く同じ結果となります。 + +空白文字類を変更したくないの場合は、"gJ"コマンドを使います。 + +============================================================================== +*10.6* ファイルの一部の保存や読み込み + +Eメールを書く時に、他のファイルを取り込みたいことがあります。これは":read +{filename}"コマンドで実行できます。そのファイルの内容はカーソルの下にプット +されます。次の文章でやってみましょう。 + + Hi John, ~ + Here is the diff that fixes the bug: ~ + Bye, Pierre. ~ + +カーソルを2行目のに移動し、次のコマンドを入力します。 > + + :read patch + +"patch"という名前のファイルが挿入されます。その結果は次の通りです。 + + Hi John, ~ + Here is the diff that fixes the bug: ~ + 2c2 ~ + < for (i = 0; i <= length; ++i) ~ + --- ~ + > for (i = 0; i < length; ++i) ~ + Bye, Pierre. ~ + +":read"コマンドには範囲を指定できます。ファイル内容はこの範囲の後の数字の行 +の下にプットされます。例えば":$r patch"ならば、"patch"をファイルの最後に追加 +します。 +最初の行よりも上にファイルを読み込むにはどうすればいいのでしょう?これは行 +番号として0を指定すればできます。そんな行は本当はありませんから、ほとんどの +コマンドではエラーメッセージが出ます。ですが、このコマンドでなら使えるのです。 +> + :0read patch + +"patch"の内容はファイルの先頭にプットされます。 + + +行範囲を指定しての保存 +---------------------- + +行範囲を指定してファイルに保存するには、":write"コマンドを使います。 +範囲指定をしなければファイル全体を保存します。範囲指定するとその範囲内の行だ +けを保存します。 > + + :.,$write tempo + +上の例はカーソル位置の行から末尾までをファイル"tempo"に保存します。そのファ +イルが既に存在しているのであれば、エラーメッセージが出ます。vimは間違って既 +存のファイルに上書きするのを防止してくれます。もし上書きしても大丈夫なことが +わかっているのなら、次のように"!"を付けます。 > + + :.,$write! tempo + +注意:上の"!"は":write"の直後に(空白などを置かずに)指定しないといけません。 +でないと、この章の後半で説明するフィルタコマンドになってしまいます。 + + +ファイルに追記する +------------------ + +この章の最初の節で、レジスタaに複数の行内容を集める方法を説明しました。同じ +ように、ファイルでも行を集めることができます。次のコマンドで現在行だけを保存 +してください。 > + + :.write collection + +次にカーソルを2つ目に追記した行に移動し、次のように入力します。 > + + :.write >>collection + +">>"はvimに"collection"に新規ファイルとして保存するのではなく、ファイルの末 +尾に追記することを指示します。この指定は必要な回数分自由に繰り返すことができ +ます。 + +============================================================================== +*10.7* 文章の整形 + +プレインテキストを入力している時に、各行の長さを画面に合うように自動的に調整 +してくれれば助かります。文章の入力中にそれをさせるには'textwidth'オプション +を設定します。 > + + :set textwidth=72 + +サンプルのvimrcファイルではどのファイルでもこのコマンドを使っていることを覚 +えているかもしれません。つまり、vimrcファイルを使っていたのであれば、あなた +は既にこのコマンドを使っていたということです。次のコマンドで'textwidth'の現 +在の値を確認してみましょう。 > + + :set textwidth + +これで各行の長さは72文字までで分割されます。ただし、行の途中まで文章を挿入 +している時や、単語を削除している時には行が長くなったり短かくなったりします。 +vimは既存の文章を勝手に整形はしません。vimに現在の段落を整形させるには次の +ようにします。 > + + gqap + +これは"gq"というオペレータで始まるコマンドです。次に"ap"というテキストオブ +ジェクトが続きます。これは「1段落(=a paragraph)」という意味です。段落は、 +空行に囲まれた領域のことを示します。 + + Note: + 空行(改行文字だけの行)と空白行(空白文字だけの行)は違います。段落の + 区切りとなるのは「空行」だけです。見た目では気付きにくいので注意! + +"ap"の代りに任意のモーションやテキストオブジェクトが使えます。段落が正しく +分割されていれば、次のコマンドでファイル全体を整形できます。 +> + gggqG + +"gg"は1行目にカーソルを動かします。"gqG"の先頭の2文字は文章整形のオペレー +タ、"G"はファイルの末尾へのジャンプをするモーションです。 + +段落を明確に定義していない場合は、対象となる行を選択して整形することができ +ます。カーソルを整形したい範囲の最初の行に移動し、"gqj"コマンドを使います。 +これは現在行と次の行を整形します。もし最初の行が短かければ次の行の単語が追加 +されます。逆に長ければ、次の行にあふれた単語を追いやります。処理後のカーソル +は、2行目に移動します。ここで"."を使うとこのコマンドを繰り返します。これを +フォーマット化したい範囲の最後まで続ければよいのです。 + +============================================================================== +*10.8* 大文字/小文字変換 + +"section header"という小文字の文字列があり、そのうち、"section"を大文字にし +たい場合、"gU"オペレータで行います。まずカーソルをその単語の先頭に置きます。 +> + gUw +< section header ----> SECTION header + +"gu"オペレータは全く逆に動きます。 > + + guw +< SECTION header ----> section header + +同様に"g~"は大文字/小文字の入れ換えをします。これらは全てオペレータ、つまり +モーションコマンドやテキストオブジェクトやvisualモードが使えます。 +オペレータを行単位にするには2回指定します。例えば削除オペレータは"d"ですが、 +1行を削除するのは"dd"です。同じように"gugu"は行全体を小文字にします。これを +さらに短縮して"guu"でも構いません。"gUgU"も"gUU"となりますし、"g~g~"は"g~~" +です。次のようになります。 > + + g~~ +< Some GIRLS have Fun ----> sOME girls HAVE fUN ~ + +============================================================================== +*10.9* 外部プログラムの利用 + +vimにはパワフルなコマンドセットがありますから何でもできます。でも外部のコマ +ンドを使った方が良い場合や速く処理できる場合もあります。 +"!{motion}{program}"コマンドは文章のかたまりを与えて、外部コマンドにフィルタ +リングさせることができます。言い換えると{program}で指定されたシステムのコマ +ンドを実行し、それに{motion}で指定された範囲の文章を入力として与えます。その +コマンドの出力結果を受け取り、選択されていた範囲の文章と入れ換えます。 +UNIXのフィルタに慣染んでいない方には、要領を得ない説明かと思いますので、例を +挙げて説明します。ソート(並べ換え)プログラムはファイルをソートします。次のよ +うなコマンドを実行すると、ソートされていないinput.txtというファイルの内容を +並べ換えてoutput.txtというファイルに保存します。(この例はUNIXでもMicrosoft +Windowsでも動きます) > + + sort <input.txt >output.txt + +さて、ここで同じことをvimでやってみましょう。編集中のファイルの1~5行目を +ソートしたいとします。カーソルを1行目に動かしてから、次のコマンドを実行し +ます。 > + + !5G + +"!"コマンドはvimにフィルタを実行させるための指示です。これはオペレータですの +で、次にモーションコマンドが必要です。これによってフィルタに渡す範囲を指定し +ます。"5G"は5行目までジャンプするモーションコマンドです。これで1~5行目が +フィルタの範囲であることがわかりました。 +フィルタリングの場合、ここでカーソルが最下段に動き、画面の行頭には"!"と表示 +されます。ここでフィルタコマンド名を入力します。この場合なら、"sort"ですね。 +結局、このコマンドの全体は次のようになります。 > + + !5Gsort<Enter> + +この結果はソートプログラムが最初の5行について動作します。元の5行はプログラ +ムの出力によって置き換えられます。 + + line 55 line 11 + line 33 line 22 + line 11 --> line 33 + line 22 line 44 + line 44 line 55 + last line last line + +"!!"コマンドは現在のカーソル行をフィルタにかけるコマンドです。UNIXでは"date" +コマンドは日付と時刻を表示します。"!!date<Enter>"は現在の行内容を"date"の出 +力結果に置き換えます。これはファイルにタイムスタンプを追加するのに便利です。 + + +うまく動かない場合 +------------------ + +シェルを起動し、テキストを送りこみ、出力を取り込む、という処理を行うには、 +vimはどのようにシェルが動くかを完全に把握していることが必要です。フィルタ +処理に問題がある場合は、以下のオプションの内容をチェックしてください。 + + 'shell' vimが外部プログラムを実行するのに使うプログラムの指 + 定 + 'shellcmdflag' シェルにコマンドを渡すための引数 + 'shellquote' コマンド名を囲むためのクオート文字 + 'shellxquote' コマンド名とリダイレクトを囲むための文字 + 'shelltype' シェルの種類(Amiga専用) + 'shellslash' ファイル名のバックスラッシュをスラッシュにする + (MS-Windows系専用) + 'shellredir' コマンドの出力をファイルに保存するために指定する文字列 + +UNIXではこれはほとんど問題になりません。というのはシェルは2種類("sh"系と +"csh"系)に集約されるからです。vimは'shell'オプションをチェックし、関連オプ +ション値を自動的に設定します。その内容は'shell'のどこかに"csh"という文字があ +るかどうかで決めています。 +しかし、MS-Windowsでは多種のシェルが存在するため、フィルタ処理がうまく動くよ +うにオプション値を調整してやる必要があります。より詳しい情報はヘルプでご覧 +ください。 + + +コマンドの出力を読む +-------------------- + +カレントディレクトリの内容を読み込むには、次のようにします。 + +Unix系: > + :read !ls +MS-Windows系: > + :read !dir + +"ls"や"dir"コマンドの出力を取り込んで、カーソル以降に挿入します。これはファ +イルからの読み込みコマンドに似ていますが、"!"があることでコマンドが続くこと +を指定している点が違います。 +コマンドには引数が指定できます。範囲も指定できます。どこに処理結果をプットす +るかを指定できます。 > + + :0read !date -u + +これはファイルの先頭に現在の日付と時間をUTC形式で挿入します。("-u"引数が使え +るようなdateコマンドが必要ですよ。当たり前ですが...) なお、"!!date"は現在行 +を入れ換えるのに対して、":read !date"は行を挿入するという点が違います。 + + +コマンドにテキストを書き出す +---------------------------- + +UNIXの"wc"コマンドは単語数を返します。編集中のファイルの単語数をカウントする +には次のようにします。 > + + :write !wc + +これは既に述べたwriteコマンドと似ています。ただ、ファイル名の代わりに"!"と外 +部コマンド名が指定されています。ここで書き込んだ文字列は指定のコマンドの標準 +入力として渡されます。出力は次のようになります。 + + 4 47 249 ~ + +"wc"コマンドは冗長なメッセージを出しません。上の例は行数が4、単語数が47、 +文字数が249であることを示しています。 + +次のような間違いに気をつけてください。 > + + :write! wc + +これはカレントディレクトリの"wc"というファイルに強制的に上書きをするコマンド +です。writeの直後の空白は重要です! + + +画面の再描画 +------------ + +外部コマンドがエラーメッセージを出した場合、画面がめちゃくちゃになってしまう +かもしれません。vimは自身が再描画が必要な場所を把握しているため、最低限必要 +な領域だけを再描画します。しかし他のプログラムがどのようん描画をしたかまでは +把握できません。次のコマンドはvimに画面全体を再描画させます。 > + + CTRL-L + +============================================================================== + +Next chapter: |usr_11.txt| クラッシュから立ち直る + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: From e1f7937a061a99823e2d55426d333b91febbbad1 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 29 Jan 2005 13:00:38 +0000 Subject: [PATCH 015/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@15 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/usr_11.jax | 301 ++++++++++++++++++++++++ ja/usr_12.jax | 373 +++++++++++++++++++++++++++++ ja/usr_20.jax | 399 +++++++++++++++++++++++++++++++ ja/usr_21.jax | 473 +++++++++++++++++++++++++++++++++++++ ja/usr_22.jax | 377 ++++++++++++++++++++++++++++++ ja/usr_23.jax | 361 ++++++++++++++++++++++++++++ ja/usr_24.jax | 589 ++++++++++++++++++++++++++++++++++++++++++++++ ja/usr_25.jax | 592 ++++++++++++++++++++++++++++++++++++++++++++++ ja/usr_26.jax | 234 +++++++++++++++++++ ja/usr_27.jax | 580 +++++++++++++++++++++++++++++++++++++++++++++ ja/usr_28.jax | 447 +++++++++++++++++++++++++++++++++++ ja/usr_29.jax | 637 ++++++++++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 5363 insertions(+) create mode 100644 ja/usr_11.jax create mode 100644 ja/usr_12.jax create mode 100644 ja/usr_20.jax create mode 100644 ja/usr_21.jax create mode 100644 ja/usr_22.jax create mode 100644 ja/usr_23.jax create mode 100644 ja/usr_24.jax create mode 100644 ja/usr_25.jax create mode 100644 ja/usr_26.jax create mode 100644 ja/usr_27.jax create mode 100644 ja/usr_28.jax create mode 100644 ja/usr_29.jax diff --git a/ja/usr_11.jax b/ja/usr_11.jax new file mode 100644 index 000000000..69cf196fd --- /dev/null +++ b/ja/usr_11.jax @@ -0,0 +1,301 @@ +COMMENT: クラッシュ時の対処方法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_11.txt* For Vim version 6.3. Last change: 2004 Apr 23 + + VIM USER MANUAL - by Bram Moolenaar + + クラッシュから立ち直る + + +マシンがクラッシュした?しかも何時間もかけて編集していたところだった? +大丈夫!vimはあなたの作業のほとんどを復元できるだけの情報をハードディスク上 +に残しています。この章では復元方法を示し、さらにスワップファイルの使い方につ +いて説明をします。 + +|11.1| 基本的なリカバリ +|11.2| スワップファイルはどこにある? +|11.3| クラッシュかどうか? +|11.4| さらに詳しい情報 + + Next chapter: |usr_12.txt| ちょっとしたテクニック + Previous chapter: |usr_10.txt| 大規模な変更 +Table of contents: |usr_toc.txt| + +============================================================================== +*11.1* 基本的なリカバリ + +ほとんどの場合、編集中のファイル名さえ覚えていれば(そしてハードディスクが正 +しく動いていれば)ファイルのリカバリはとても簡単です。vimを起動する時にその +ファイル名に"-r"オプションを付けるだけです。 > + + vim -r help.txt + +vimはスワップファイル(編集中の文書を保持するのに使います)を読み込み、元ファ +イルのかけらを見つけます。全てがうまくいけば、次のようなメッセージが表示され +ます。(当たり前ですがファイル名は違います) + + Using swap file ".help.txt.swp" ~ + Original file "~/vim/runtime/doc/help.txt" ~ + Recovery completed. You should check if everything is OK. ~ + (You might want to write out this file under another name ~ + and run diff with the original file to check for changes) ~ + Delete the .swp file afterwards. ~ + +念のために、このファイルを別ファイル名で保存します。 > + + :write help.txt.recovered + +最終的にあなたが期待していたものになっているかどうかを調べるために元のファイ +ルと比較してください。このような場合はvimdiff(|08.7|)が便利です。オリジナルの +ファイルに新しいバージョン(クラッシュする前に保存してあったファイル)の内容を +含んでいることを確認します。なくなっている行がないかどうかも確認してください。 +(時々vimがリカバリできない場合もあります) +リカバリの時に警告メッセージが表示された場合は、気をつけて読んでください。 +まあ、こんなことは滅多にありませんが。 + +さて、うまくいった場合でもクラッシュ直前の変更内容はリカバリできないのが普通 +です。vimは4秒間入力をしないか、約200文字の入力があった場合に、ディスクに変 +更内容を書き出(フラッシュ)します。これは'updatetime'と'updatecount'オプション +で指定できます。ですから、システムがダウンする時に、それを保存するチャンスが +なければ、最後にフラッシュした以降の変更は失われてしまうのです。 + +ファイル名なしで編集していた場合は、引数として空文字列を与えます。 > + + vim -r "" + +これはクラッシュした時のディレクトリで実行しなくてはなりません。そうでないと +vimはスワップファイルを探し出せません。 + +============================================================================== +*11.2* スワップファイルはどこに? + +vimがスワップファイルを置く場所はいくつかあります。通常は元のファイルと同じ +ディレクトリにあります。それを探し出すには、そのファイルのあるディレクトリに +移動して、次のコマンドを使います。 > + + vim -r + +vimは発見したスワップファイルをリスト表示します。現在のディレクトリにある +ファイル用のスワップファイルが別ディレクトリにあれば、それも表示します。どの +ディレクトリでもスワップファイルが見つけられない場合でも、ディレクトリツリー +の検索は行いません。 +結果出力は次のようになります。 + + Swap files found: ~ + In current directory: ~ + 1. .main.c.swp ~ + owned by: mool dated: Tue May 29 21:00:25 2001 ~ + file name: ~mool/vim/vim6/src/main.c ~ + modified: YES ~ + user name: mool host name: masaka.moolenaar.net ~ + process ID: 12525 ~ + In directory ~/tmp: ~ + -- none -- ~ + In directory /var/tmp: ~ + -- none -- ~ + In directory /tmp: ~ + -- none -- ~ + +リカバリの対象に該当しそうなファイルがいくつもある場合には、スワップファイル +のリストを表示します。その中から使いたいファイルの番号を入力して、決定しま +す。 +どれが本当に必要なファイルかは日付を見て注意して決定してください。 +どれを指定したらよいかわからない場合には、1つづつ試してみて、期待していた結 +果となるファイルを探してください。 + + +スワップファイル名の直接指定 +------------------------ + +リカバリしたいスワップファイルが解っている場合には、そのスワップファイル名を +指定してリカバリさせることができます。vimはスワップファイルから元のファイル +名を復元します。 + +例えば次のとおりです。 > + vim -r .help.txt.swo + +これはスワップファイルが思っているのとは違うディレクトリにある場合に便利です。 +それでもうまく動かない場合、vimがリポートするファイル名が何かを見て、そのファ +イルに従ってください。'directory'オプションの値を見て、vimがスワップファイル +をどこに置くのかを確認してください。 + + Note: + vimは'dir'オプションで定義されたディレクトリを検索して"filename.sw?" + というパターンにヒットするスワップファイルを見つけます。ワイルドカー + ド拡張がうまく動かない(例えば'shell'オプションが無効であった)場合で + もvimはしつこく"filname.swp"というファイルを見つけようとします。 + それも失敗した場合は、ファイルをリカバリできるようなスワップファイル + 名を与えるしかありません。 + +============================================================================== +*11.3* クラッシュした?してない? *ATTENTION* *E325* + +vimはおバカをしてしまうことからあなたを守ろうとします。無邪気にファイルの内容 +を確認しようとして、ファイル編集を始めようとします。vimはその代わりに次のよう +な長いメッセージを表示します。 + + E325:注意 ~ + 次の名前でスワップファイルを見つけました。".main.c.swp" ~ + 所有者: mool ~ + 日付: Tue May 29 21:09:28 2001 ~ + ファイル名: ~mool/vim/vim6/src/main.c ~ + 変更状態: あり ~ + ユーザ名: mool ホスト名: masaka.moolenaar.net ~ + プロセスID: 12559 (still running) ~ + ファイルを開いている最中 "main.c" ~ + + (1) 別のプログラムが同じファイルを編集しているのでしょう. ~ + そうであるならば, 変更をした際に最終的に, 同じファイルの異なる ~ + 2つのインスタンスができてしまうことに注意してください. ~ + 終了するか, 注意しながら続けます. ~ + + (2) このファイルの編集セッションがクラッシュした. ~ + その場合には ":recover" か "vim -r main.c" ~ + を使用して変更をリカバーします(":help recover" を参照). ~ + 既にこれを行ったのならば, スワップファイル ".main.c.swp" ~ + を消せばこのメッセージを回避できます. ~ + +vimはファイルの編集を開始する時に、そのファイル用のスワップファイルがあるか +どうかをチェックします。既にそれがある場合には、何かがおかしくなっています。 +次のいずれかでしょう。 + +1. このファイルを編集している別のセッションがあります。上記のメッセージ中の + "プロセスID"の行を見てください。次のような形式になっているはずです。 + + process ID: 12559 (still running) ~ + + "(still running)" というのは、同じマシン上でこのファイルを編集しているプ + ロセスがあることを示しています。ただし、非Unixシステムではこれは表示され + ないでしょう。ネットワーク越しにファイルを編集している場合もこのメッセー + ジは表示されません。というのはそのプロセスは他のマシン上で動いているため + です。この2つのケースでは何が起こっているかを、あなたが調べなければなり + ません。 + 同じファイルを編集しているvimプロセスが他にいる場合に、編集を続けると同じ + ファイルに対して2つのバージョンができてしまいます。両者のうち、最後に書 + き込んだ時に、その前のを上書きしますから、変更内容(の一部)を失なうことに + なります。この場合は後で起動したvimを終わるのが良いでしょう。 + +2. スワップファイルはマシンやvimが前回クラッシュした時の結果かもしれません。 + メッセージに表示される日付を確認してください。スワップファイルの日付が + 編集しようとしているファイルよりも新しい場合は次のように表示されます。 + + modified: YES ~ + + この場合、リカバリすべきクラッシュしたセッションがある可能性が高いです。 + ファイルの日付の方がスワップファイルより新しいという場合もあります。、これ + はクラッシュした後に何らかの変更を加えたのでしょう(おそらく、以前にリカバリ + したのに、スワップファイルを消し忘れているのではないですか?)。もしくは、ス + ワップファイルが更新されてからクラッシュする前にファイルが保存されたのかも + しれません(そうならラッキーです。ふるいスワップファイルは必要ありません)。 + こういう場合、vimは次のような警告を表示します。 + + NEWER than swap file! ~ + + +読めないスワップファイル +------------------------ + +ときどき次の行が + + [読込めません] ([cannot be read]) + +スワップファイルの名前の下に表示されます。これは状況により、良い場合と悪い場 +合があります。 + +以前のセッションがファイルに変更を加えることなくクラッシュした場合は良い状態 +です。その場合ゼロバイトのファイルがスワップファイル用のディレクトリにあるで +しょう。それを削除して作業を続けてください。 + +あなたにスワップファイルの読み込み権限がない場合は少し悪い状態です。ファイル +をリードオンリーで開くか、そのまま終了してください。マルチユーザーシステム +で、あなたが最後に変更を加えたときに違う名前でログインしていたら、その名前で +ログインしなおせば"リードエラー"が直るかもしれません。あるいはそのファイルを +最後に変更した(している)人を見つけて話し合ってください。 + +スワップファイルを保存しているディスクの物理的な故障の場合はとても悪い状態で +す。幸いにもこれはほとんど起こりません。始めに(もしできるなら)どの変更が失わ +れたかを確認するために、リードオンリーでファイルを開いてください。あなたがそ +のファイルの責任者なら、変更をやり直す覚悟をしてください。 + + +どうしようか? +-------------- + +ダイアログが出た時は、次の5つからどれか1つを選びます。 + + Swap file ".main.c.swp" already exists! ~ + [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~ + +"O" ファイルを読み込み専用で開きます。これはリカバリは要らないが、ファイルの + 内容を確認したい場合に使います。これは、誰か他の人が編集しているのは解っ + ていて、それでも(変更をしないで)内容を確認したい時に使います。 + +"E" ファイルを普通に編集します。注意してください!ファイルを他のvimで編集し + ている場合、そのファイルの2つのバージョンを作ってしまう可能性がありま + す。このような現象が発生した場合vimは警告を発します。後でごめんなさい、 + するより、最初から安全な方法を選ぶのが良いでしょう。 + +"R" スワップファイルを使ってファイルを復元します。復元したい内容がスワップ + ファイルにあることがわかっている場合に使います。 + +"Q" 終わる。ファイル編集を取り止めます。同じファイルを編集しているvimが他に + ある場合に使います。 + vimを起動した時なら、vimが終了します。既にいくつかのウィンドウを開いてい + る場合はスワップファイルがあるようなウィンドウだけを終わります。":edit" + コマンドで開こうとした場合は、このファイルを開かずに直前に編集していた + ファイルに戻ります。 + +"A" 停止する。Quitに似ていますが、これはコマンドを即座に停止します。例えば複数 + のウインドウで作業している時に、スクリプトを使っていくつかのファイルを編集 + する時に便利です。 + (訳注)以下のスクリプトで確認するとわかりやすいと思います。 + func Test() + edit some_file.txt " すでに他のvimウインドウで開いているファイルを開く + call confirm("Hello") " Quit: 表示される Abort: 表示されない + endfunc + +"D" スワップファイルを削除します。スワップファイルが不要なことがはっきりして + いる時に使ってください。例えば、何も変更を加えていない場合や、ファイル本 + 体の日付がスワップファイルより新しい場合に使います。 + Unixではスワップファイルを生成したプロセスが見当らない場合だけこの選択肢 + を表示します。 + +サポート外のバージョンのvimを使っていて、このようなダイアログが出ない場合は、 +復元を手動で行わなければなりません。ファイル復元には次のコマンドを使います。 +> + :recover + + +vimはそのファイル用のスワップファイルが存在していることを必ず見つけ出せるわ +けではありません。他のセッションが別のディレクトリにスワップファイルを置いて +いる場合や、別のマシン上で編集している時にそのファイルのパスが違っていたりす +る場合などがそうです。ですからvimが常に警告してくれるとは考えないでください。 + +もしこのメッセージを全く見たくないのであれば、'shortmess'オプションに"A"フラ +グを追加してください。ただし、これが必要なのは非常に特殊な状況といえます。 + +============================================================================== +*11.4* さらなる情報 + +|swap-file| いつ、どんな名前のスワップファイルが作成されるかについての説 + 明。 +|:preserve| スワップファイルの内容をディスクに手動でフラッシュする。 +|:swapname| 現在のファイル用のスワップファイルの名前を見る。 +'updatecount' キーストロークの数。指定数の入力があれば、スワップファイルの + 内容をディスクにフラッシュする。 +'updatetime' タイムアウト値。指定の時間が過ぎたらスワップファイルの内容を + ディスクにフラッシュする。 +'swapsync' スワップファイルをフラッシュした時にそのディスク内容を同期さ + せるかどうか +'directory' スワップファイルを置くディレクトリ名のリスト +'maxmem' ファイルを書き込むまでにスワップファイルに使えるメモリの上限 +'maxmemtot' 同上。ただし、全ファイルの合計値。 + +============================================================================== + +Next chapter: |usr_12.txt| Clever tricks + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_12.jax b/ja/usr_12.jax new file mode 100644 index 000000000..9044bf63d --- /dev/null +++ b/ja/usr_12.jax @@ -0,0 +1,373 @@ +COMMENT: 使いやすくするちょっとした工夫 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_12.txt* For Vim version 6.3. Last change: 2004 May 01 + + VIM USER MANUAL - by Bram Moolenaar + + ちょっとしたテクニック + + +いくつかのコマンドを組み合わせれば、ほとんど何でもvimにさせることができます。 +この章では、多くの便利な組み合せについて説明します。ここでは、今までに紹介し +たコマンドの他にいくつか新しいコマンドも使います。 + +|12.1| 単語の置き換え +|12.2| "Last, First"を"First Last"に変更 +|12.3| リストの並べ替え +|12.4| 行の順を逆にする +|12.5| 単語数のカウント +|12.6| マニュアルを探す +|12.7| 空白文字をまとめる +|12.8| 単語を使っている場所を探す + + Next chapter: |usr_20.txt| コマンドラインのコマンドを素早く入力する + Previous chapter: |usr_11.txt| クラッシュから立ち直る +Table of contents: |usr_toc.txt| + +============================================================================== +*12.1* 単語の置き換え + +置換コマンドを使うとある単語を全て他の単語に置き換ることができます。 > + + :%s/four/4/g + +ここで"%"というのは全行という意味の範囲指定です。行末の"g"は1行内でヒットし +た全部を置き換えるという意味になります。 +JP注: 行末の"g"を付けないと、行の最初にヒットした個所だけを置換します。 +ですが、これだと"thirtyfour"のようなパターンも含まれ、思った結果になりません。 +この場合ですと、"thirty4"になります。これを避けるには"\<"を使って単語の先頭 +にヒットさせます。 > + + :%s/\<four/4/g + +これでもまだ、"fourty"のような場合はうまくいきません。今度は"\>"を使って単語 +の末尾にヒットさせましょう。 > + + :%s/\<four\>/4/g + +プログラムを作っている場合なら、コード中ではなくコメントにある"four"だけを置 +き換えたい場合もあるでしょう。これは指定するのが難しいですから、"c"フラグを +置換コマンドに与えて、置換する前に確認するようにします。 > + + + :%s/\<four\>/4/gc + + +複数のファイルで置換する +------------------------ + +2つ以上のファイルで単語の置換をしたい場合を考えます。各ファイルを開いて、手 +でコマンドを入力することもできます。でもレコーディング(記録)とプレイバック +(再現)を使うと、はるかに素早くできます。 +".cpp"で終わるC++ファイルの入ったディレクトリがあるとします。その中で使って +いる"GetResp"という関数を"GetAnswer"に名前を変更したいとします。 + + vim *.cpp 引数を全C++ファイルを対象としてvimを起動 + します。起動時はその最初のファイルから始まり + ます。 + qq レジスタ"q"にレコーディングを始めます。 + :%s/\<GetResp\>/GetAnswer/g + 最初のファイルで置換コマンドを実行します。 + :wnext このファイルを保存し次のファイルに移ります。 + q レコーディングを中止します。 + @q レジスタ"q"を実行します。これは置換コマンド + と":wnext"を繰り返します。ここでエラーメッセ + ージが表示されたりしないか確認します。 + 999@q (エラーがなければ)残りの全ファイルに対して、 + レジスタ"q"の内容をプレイバックします。 + +最後のファイルで実行した時には、":wnext"コマンドの対象となる次のファイルがな +いためにエラーメッセージが表示されます。ここで実行を中断し、全てが完了です。 + + Note: + 一連のレコーディング内容をプレイバックした時にエラーが発生すると実行 + を中断します。ですから、レコーディング中はエラーメッセージが出ないよ + うに注意してください。 + +一点気をつけてください。もし".cpp"の中に"GetResp"を使っていないファイルが一 +つでもあれば、置き換え時にエラーが発生し、処理を停止してしまいます。これを避 +けるには置換コマンドの最後に"e"フラグを付けてください。 > + + :%s/\<GetResp\>/GetAnswer/ge + +"e"フラグは":substitute"でヒットしなくてもエラーにしないという意味になります。 + +============================================================================== +*12.2* "Last, First"を"First Last"に置換 + +次のような形式で名前の一覧があるとします。 + + Doe, John ~ + Smith, Peter ~ + +これを次のように変更したいとします。 + + John Doe ~ + Peter Smith ~ + +これは次の1コマンドでできてしまいます。 > + + :%s/\([^,]*\), \(.*\)/\2 \1/ + +これを各部品にバラしてみましょう。最初が置換コマンドであることは明らかです +ね。"%"は行範囲でファイル全体を示します。ですから、次の置換はファイル中の各 +行に対して実施されます。 +置換コマンドの引数は"/from/to"ですね。スラッシュ(/)は"from"パターンと"to"パ +ターンのセパレータに使います。"from"パターンは次のようになっています。 + \([^,]*\), \(.*\) ~ + + 最初の\( と \) で囲まれた部分は"Last" \( \) + カンマ(,)以外の全文示にヒット [^,] + 何文字でもヒット * + ", "という文字パターンにヒット , + 2つ目の\( と \)に囲まれた部分は"First" \( \) + どんな文字でもヒット . + 何文字でもヒット * + +"to"部分には"\2"と"\1"という指定があります。これをバックリファレンスと呼びま +す。これは"from"パターンの"\( \)"部分にヒットした文字列を示します。"\2"は2つ +目の"\( \)"にヒットする文字列となります。この場合なら名("First" name)になりま +す。また、"\1"は最初の"\( \)"の文字列を示します。この場合なら姓("Last" name)で +す。 +置換コマンドの"to"部分には最大で9つのバックリファレンスが指定できます。 +"\0"はヒットしたパターン全体の意味となります。置換コマンドにはこの他にいくつ +か特殊なアイテムがあります。|sub-replace-special|をご覧ください。 + +============================================================================== +*12.3* リストの並び替え + +Makefileではファイル名リストをよく使います。例をあげます。 + + OBJS = \ ~ + version.o \ ~ + pch.o \ ~ + getopt.o \ ~ + util.o \ ~ + getopt1.o \ ~ + inp.o \ ~ + patch.o \ ~ + backup.o ~ + +このリストを並べ替えするには、外部のソートコマンドを使って文字列をフィルタリ +ングします。 > + + /^OBJS + j + :.,/^$/-1!sort + +まず"OBJS"を行頭に含む最初の行にジャンプします。次に1行下にカーソルを動かし +て次の空行までをフィルタに通します。行範囲をビジュアルモードで選択し"!sort" +コマンドを使うこともできます。この方法は入力しやすいですが、行がたくさんある +場合は作業量が多くなります。 +この結果、次のようになります。 + + OBJS = \ ~ + backup.o ~ + getopt.o \ ~ + getopt1.o \ ~ + inp.o \ ~ + patch.o \ ~ + pch.o \ ~ + util.o \ ~ + version.o \ ~ + + +各行の最後に行結合のためのバックスラッシュ(\)を使っている点に注意して下さい。 +並べ替えたために、これがうまくいかなくなっています!元々は"backup.o"は最後に +あったので行末にバックシュラッシュがありません。しかし並べ替えで他の場所に移 +動してしまったのでバックスラッシュが必要です。 +一番簡単な解決は"A \<Esc>"でバックスラッシュを追加することです。最後の行にあ +るバックスラッシュはそのままにしておいても、次の行を空白行にしておけば問題あ +りません。これで同じ問題は二度と起きないでしょう。 + +============================================================================== +*12.4* 行順序の逆転 + +|:global|コマンドは|:move|コマンドと組み合せて、全ての行を1行目の上に移動す +ることで、結果として行の順序が逆転したファイルを作ることができます。そのコマ +ンドは次の通りです。 > + + :global/^/m 0 +< +その短縮形はこの通りです。 > + + :g/^/m 0 +< + +"^"という正規表現は行の先頭に(その行が空行でも)合致します。|:move|コマンドは +合致した行を0行目(実際には存在しない仮想的な行)の後に移動します。ですから、 +現在の合致行はファイルの先頭行となるわけです。 +|:global|コマンドでは行番号が変更となることによる混乱が生じませんので、条件 +に合致する全ての行について、1つづつ最初の行としてプットすることになります。 + +これは行範囲を指定した時も正しく動きます。まず、範囲としたい最初の行にカーソ +ルを移動し、"mt"コマンドでマークします。次に範囲としたい最終行にカーソルを動 +かし、次のように入力します。 > + + :'t+1,.g/^/m 't + +============================================================================== +*12.5* 単語数のカウント + +時には単語数の最大値を気にしながら文章に書かなければならない場合もあるでしょ +う。vimは単語数を教えてくれます。 +ファイル全体の単語数をカウントしたい場合は、次のコマンドを使います。 > + + g CTRL-G + +"g"の後に空白キーを押さないでください。上の例で空白を使っているのはコマンド +を読み易くするためです。 +この出力結果は次のようになります。 + + Col 1 of 0; Line 141 of 157; Word 748 of 774; Byte 4489 of 4976 ~ +JP注: 日本語環境では 次のように出力される。 +JP注: 列 1 / 0; 行 141 of 157; 単語 748 / 774; 文字 4489 / 4976 +smz なんで行のトコロだけ"of"なんだろう^^ +KRN なんでだろうね? (^_^; + +これを見れば、カーソルが何番目の単語にあり(748)、ファイル全体でいくつの単語 +があるのか(774)がわかります。 + +ファイルの一部の文章だけの場合は、その先頭に移動し、"g CTRL-G"を入力し +ます。次に末尾に移動して"g CTRL-G"をもう一度押します。で、あとはあなたが、引 +き算で単語数を求めてください。これは頭の体操にはなりますが、あまり簡単とは言 +えません。ビジュアルモードを使えば、かぞえたい範囲を選んでから"g CTRL-G"を入 +力します。結果は次のようになります。 + + Selected 5 of 293 Lines; 70 of 1884 Words; 359 of 10928 Bytes ~ +JP注: 日本語環境では 次のように出力される。 +JP注: 選択 5 / 293 行; 70 / 1884 単語; 359 / 10928 文字 + +単語数や行数などをカウントする他の方法については、|count-items|をご覧くださ +い。 + +============================================================================== +*12.6* マニュアルページの参照 *find-manpage* + +シェルスクリプトやCプログラムを編集している時に、(Unix環境なら)使っているコ +マンドや関数のマニュアルページ(man pages)を参照したいでしょう。まずは簡単な +方法でやってみましょう。カーソルを見つけたい単語の上に移動して、次のコマンド +を入力します。 > + + K + +vimはカーソル位置の単語を"man"プログラムを使って探します。マニュアルページが +見つかった場合はそれを表示します。これは普通のページャ(ほとんど"more"コマン +ドと同じ)を使ってテキストをスクロール表示します。マニュアルの最後まで表示し +て、<Enter>を押すと、vimに戻ります。 + +これの欠点はマニュアルページと編集中の文章を同時に見れないことです。実はvim +ウィンドウの中にマニュアルページを表示させるテクニックもあります。最初に"man" +ファイルタイププラグインをロードします。 > + + :runtime! ftplugin/man.vim + +このコマンドをいつも使うのであれば、vimrcファイルに書いておけばよいでしょう。 +こうすると、":Man"コマンドを使ってマニュアルページ用のウィンドウを開くことが +できます。 > + + :Man csh + +ハイライト化されたテキストをスクロールして見ることができます。スクロールした +り、ハイライト化したりできます。これで探しているヘルプを見つけることができま +す。CTRL-W w を使うと、ウィンドウ間をジャンプして編集中のプログラムに戻れま +す。 +特定のセクションのマニュアルページを探すには、セクション番号を最初に付けま +す。例えば、セクション3にある"echo"を探すには次のようにします。 > + + :Man 3 echo + +ヘルプ本文中の他のマニュアルページ(例えば"word(1)"の形式)にジャンプするには、 +そこの上でCTRL-]を押します。もう一度":Man"コマンドを使った場合も同じウィンド +ウを使います。 + +カーソル下にある単語のマニュアルページを表示するのは次のコマンドです。 > + + \K + +(もし<Leader>を再定義しているのであれば、"\"ではなくそれを使います) +例えば、次の行を編集中に"strstr()"の復帰値を知りたくなれば、 + + if (strstr(input, "aap") == ) ~ + +カーソルを"strstr"の上に動かし、"\K"を入力します。ウィンドウが開いてstrstr() +のマニュアルページを表示してくれます。 + +============================================================================== +*12.7* 空白の圧縮(trim) + +一部には、行末にある空白やTABの類を無用であり、浪費であり、見苦しいものである +と考える人々がいます。各行の末尾の空白類を取り除くには、次のコマンドを使いま +す。 > + + :%s/\s\+$// + +ここでも行範囲に"%"を使っています。これはファイル全体を示します。 +":substitute"コマンドが探すパターンは"\s\+$"です。これは空白類の文字(\s)が +1文字以上続き(\+)、そこで行が終わる($)パターンを探します。 +後の章(|usr_27.txt|)で、このようなパターンの書き方を説明します。 +この置換コマンドの"to"部分は空っぽ("//")です。つまり、「無」に置き換えるわけ +で、結局空白類を削除することになるわけです。 + +もう一つの浪費パターンとして、TABの直前に空白文字を使っている場合があります。 +たいていは空白の(見た目の)量を変えずに削除できます。が、いつもというわけじゃ +ありません!ですから、これは手作業でやるのがベストです。次の検索コマンドを使 +います。 > + + / + +何も見えないですが、このコマンドではTAB文字の前に空白文字があります。つまり +これは"/<Space><Tab>"なのです。ここで、"x"コマンドを使って空白を削除して、 +TAB位置などに変化がないか確認します。次のヒットを探すために"n"を押し、同じ作 +業をヒットするものがなくなるまで繰り返します。 + +============================================================================== +*12.8* 単語を使っている場所を探す + +Unixユーザであれば、vimと"grep"コマンドを組み合せれば、ある単語を使っている全 +ファイルを編集することができます。これはプログラムを作っていて、特定の変数を +使っている全ファイルを編集したい場合に、もの凄く便利です。 +例えば、全Cプログラムファイル中の"frame_counter"という単語を含んでいる全て +のファイルを編集するとします。次のコマンドでそれができます。 > + + vim `grep -l frame_counter *.c` + +このコマンドを詳しく見てみましょう。"grep"コマンドは与えられたファイル一覧か +ら、指定の単語を検索します。"-l"オプションが付いていますので、合致する行自体 +を表示するのではなく、その単語を含んでいるファイル名だけを表示します。 +検索する単語は"frame_counter"です。実際にはここにあらゆる正規表現が使えます。 +(Note:grepで使える正規表現のパターンはvimとは完全には一致しません) +このコマンド全体をバッククオート(`)で囲んでいます。これはUNIXのシェルにこの +コマンドを先に実行し、その結果でコマンド行を置き換えます。ですからここでは +"grep"コマンドが実行して得たファイル一覧がvimのコマンド行に与えられます。 +この結果、"grep"の出力のファイル一覧をvimで編集することになります。vimの中で +は":next"や":first"を使ってファイル間を行き来できます。 + + +各行を探す +---------- + +上述のコマンドはその単語を含むファイルを見つけるだけでした。ファイル中の単語 +は自力で探す必要があります。 +vimには与えられた文字列をファイルリストから探すことのできる組み込みコマンド +があります。もし、全Cプログラムファイルから"error_string"が現れる場所を全て +探すのであれば、例えば次のコマンドを入力します。 > + + :grep error_string *.c + +これは全ての指定ファイル(*.c)から"error_string"という文字列を探し出します。 +vimはそのパターンを含んでいる最初のファイルを開き、カーソルを最初にヒットす +る場所に移動します。次にヒットしている場所に移動するには、(それが同じファイ +ルかどうかは気にせず)":cnext"コマンドを使います。一つ前に戻るには":cprev"コ +マンドを使います。":clist"を使うと、一致した全リストと現在位置を表示します。 +":grep"コマンドは、外部コマンドの"grep"(Unixの場合)か"findstr"(Windowsの場 +合)を使っています。実行するプログラムは'grepprg'オプションで設定できます。 + +============================================================================== + +Next chapter: |usr_20.txt| コマンド行のコマンドを素早く入力する + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_20.jax b/ja/usr_20.jax new file mode 100644 index 000000000..7f2381009 --- /dev/null +++ b/ja/usr_20.jax @@ -0,0 +1,399 @@ +COMMENT: コマンドラインの使用法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_20.txt* For Vim version 6.3. Last change: 2003 Apr 30 + 日本語訳:2002/07/12 清水 俊彦 + + VIM USER MANUAL - by Bram Moolenaar + + コマンド行のコマンドを素早く入力する + + + +vimはコマンドの入力を簡便に行うための汎用的な機能を持っています。コロン(:)コ +マンドでは短縮入力、行内編集、再利用ができます。補完機能もほとんど全てのケー +スで使えます。 + +|20.1| コマンド行の編集 +|20.2| コマンド行の短縮入力 +|20.3| コマンド行の補完 +|20.4| コマンド行の履歴 +|20.5| コマンド行ウィンドウ + + Next chapter: |usr_21.txt| 行ったり来たり + Previous chapter: |usr_12.txt| ちょっとしたテクニック +Table of contents: |usr_toc.txt| + +============================================================================== +*20.1* コマンド行の編集 + +コロン(:)コマンドや検索(/や?)コマンドを使うときには、カーソルが画面の一番下に +動きます。そこにコマンドや検索パターンを入力するわけです。この行を「コマンド +行」と呼びます。この呼び方は検索コマンドの場合にも使います。 + +入力したコマンドを編集する一番わかりやすい方法は<BS>キーを使うことです。これ +はカーソル位置の直前の文字を削除できます。それより左側の文字を削除したい場合 +は、まず矢印キーでカーソルをその場所まで動かします。 +例えば、次のように入力してあるとします。 > + + :s/col/pig/ +< +<Enter>キーを押す前になって、"col"が"cow"の入力ミスであることに気付きました。 +これを修正するには、左矢印キー(<Left>)を5回押し、"col"の直後にカーソルを動 +かします。次に<BS>キーと"w"を押して正しいものにします。 > + + :s/cow/pig/ + +修正したら、そこで<Enter>キーを押します。コマンドを実行するのに、わざわざ +カーソルを行末まで動かす必要はありません。 + +コマンド行でカーソルを動かすのに一番使うコマンドを掲げておきます。 + + <Left> 1文字左へ + <Right> 1文字右へ + <S-Left> or <C-Left> 1単語左へ + <S-Right> or <C-Right> 1単語右へ + CTRL-B or <Home> 行頭へ + CTRL-E or <End> 行末へ + + Note: + <S-Left> (シフトキーを押したまま左矢印キーを押す)と<C-Left> (コント + ロールキーを押したまま左矢印キーを押す)は使えないキーボードもありま + す。他のシフトキー、コントロールキーの組み合せも同様です。 + +カーソルはマウスを使っても動かせます。 + + +DELETING + +上で述べたように<BS>キーはカーソルの直前の文字を削除します。単語を削除するに +は、CTRL-W を使います。 + + /the fine pig ~ + + CTRL-W + + /the fine ~ + +また、行全体を最初から打ち直したい時には CTRL-U で行全体を消去できます。 + + +上書き +------ + +<Insert>キーは挿入モードと上書きモードを交互に切り換えます。次の例で説明しま +しょう。 + + /the fine pig ~ + +カーソルを<S-Left>を2回使って(<S-Left>が使えない場合は、<Left>を8回使って) +"fine"の最初まで動かします。ここで<Insert>を押すと上書きモードになります。 +ここで"great"と入力します。 + + /the greatpig ~ + +あれれ、空白文字がなくなってしまいました。でもここで<BS>を押すと"t"が消えて +しまいますから使えません。(これが上書きモードと挿入モードの違いです)。そこで +<Insert>キーをもう一度押して、上書きモードから挿入モードに戻してから、空白を +入力すればOKです。 + + /the great pig ~ + + +キャンセル処理 +-------------- + +":"や"/"コマンド実行しようとしたけれど、止めたくなった場合はどうしましょう? +既に入力したコマンドを実行せずに取り止めるにはCTRL-Cか<Esc>を押します。 + + Note: + <Esc>キーはどこでも使える「脱出」キーです。残念なことに、古き良きvi + ではコマンド行で<Esc>を押すとコマンドを実行してしまいます。これはバ + グであるように思われますので、vimでは<Esc>でコマンドをキャンセルする + 仕様としています。ただし、'cpoptions'オプションを使えば、vi互換にす + ることもできます。なお、マップを使う時は(vi用に書かれているかも知れ + ないので)viと同じように動きます。つまりコマンドを実行します。結局、 + CTRL-Cを使えばどちらでもうまく動くということです。 + +なお、コマンド行の先頭にカーソルがある時に<BS>キーを押すとコマンドをキャンセ +ルします。これは行頭にある":"や"/"を削除するような動きとなります。 + +============================================================================== +*20.2* コマンド行の短縮入力 + +":"コマンドはものによってとても長いものがあります。既に出てきた":subsititute" +は":s"と短縮して入力できます。全ての":"コマンドでは短縮入力するための一般的 +な仕掛けがあります。 + +コマンドをどれだけ短縮できるか?アルファベットは26文字ですが、コマンドはそれ +よりたくさんあります。例えば、":set"は":s"で始まりますが、":s"は":set"を実行 +するわけではありません。その代わり":set"は":se"と短縮入力できます。 +このように短縮形に合致するコマンドが2つ以上あっても、使えるのは1つのコマン +ドだけです。その選択基準に明確なルールはありませんので、覚えるいただくしかあ +りません。ヘルプファイルには各コマンドの最短入力方法を説明してあります。例え +ば、 > + + :s[ubstitute] + +これは":substitute"の最短入力形式が":s"であることを示しています。それ以降の +文字はオプションです。":su"でも":sub"でも正しく動きます。 + +ユーザマニュアルではコマンドのフル形式と短縮形式のどちらも使っています。た +だ、短縮形は読み易さを損わない範囲にとどめています。例えば、":function"とい +うコマンドは":fu"と略せますが、これだけだと大半の人が何の略なのか理解できな +いでしょう。ですからこのマニュアルでは":fun"を使っています。(vimには":funny" +コマンドなんてないですから。そうでなければ、":fun"でもやはり混乱を招きますよ +ね) + +vimスクリプトでは完全なコマンド名で記述することをお勧めします。そうしておけ +ば、後になって変更したい時に読み直すのが楽ですから。あまりに頻繁に用いるコ +マンド(保存コマンドの":w"とか読み込みコマンドの":r"とか)はその限りではありま +せんが。 +特にややこしいのは":end"です。これは":endif"の短縮形ですが、":endwhile"にも +":endfunction"にも見えます。ですから、常にフル形式を使うようにしましょう。 + + +オプション名の短縮形 +-------------------- + +ユーザマニュアルではオプション名はフル形式を使っています。実際には多くのオプ +ションに短縮名があります。":"コマンドと違い、オプションの短縮名はユニークに +なっています。例えば'autoindent'の短縮形は'ai'です。ですからこの2つのコマン +ドは同じ動きとなります。 > + + :set autoindent + :set ai + +オプション名のフル形式と短縮形式の全リストは|option-list|をご覧ください。 + +============================================================================== +*20.3* コマンド行の補完 + +コマンド行の補完機能は、これだけでもviからvimに乗り換えたる理由になる程の機 +能です。一度使ってしまえば、もうこれなしでは生きていけなくなります。 + +次のようなファイルを含むディレクトリがあるとします。 + + info.txt + intro.txt + bodyofthepaper.txt + +最後のbodyofthepaper.txtを編集するには、このコマンドを使います。 > + + :edit bodyofthepaper.txt + +でもいかにも打ち間違えそうです。これの方がずっと早くて確実です。 > + + :edit b<Tab> + +どちらも結果は同じコマンドになります。どういうことでしょうか?これは<Tab>キー +がカーソル位置にある単語(この場合なら"b")を補ってくれたためです。vimがディレ +クトリを見ると、"b"で始まるファイルは1つしかにことが解ります。これはあなたが +探しているファイルに違いありませんから、そのファイル名をvimが補ってくれたので +す。 + +さて、次はこのように入力してみます。 > + + :edit i<Tab> + +vimは警告音を鳴らし、次のように表示します。 > + + :edit info.txt + + +この警告音はvimがヒットしたファイルが2つ以上あったことを示します。そこで(ア +ルファベット順で)最初にヒットしたファイルを表示しています。もう一度<Tab>を押 +すと、次のようになります。 > + + :edit intro.txt + +つまり、最初の<Tab>で探しているファイルが出てこなければ、もう一度<Tab>を押せ +ば良いのです。もっとある場合は順に1つづつ表示してくれます。 +ヒットするものを全部表示した後に<Tab>を押すと、最初に<Tab>を押す直前に戻りま +す。 > + + :edit i + +次はまた最初から繰り返し、合致するリストをサイクリックに表示します。CTRL-Pを +押すと、逆方向にリストを表示します。 + + <------------------- <Tab> -------------------------+ + | + <Tab> --> <Tab> --> + :edit i :edit info.txt :edit intro.txt + <-- CTRL-P <-- CTRL-P + | + +---------------------- CTRL-P ------------------------> + + +文脈による違い +-------------- + +":edit i"ではなく":set i"と入力した時に<Tab>を押すとどうなるでしょう? > + + :set icon + +あれ?どうして":set info.txt"とならないのでしょう?vimは文脈を考慮して補完を +行っているからです。vimが探そうとする単語の種類はその前のコマンドに依るので +す。vimは":set"コマンドの直後にファイル名は使えなくて、オプション名なら使え +ることを解っているのです。 +さらに<Tab>の入力を繰り返すと、ヒットするものを順に表示します。ほとんどない +のですが、あらかじめ数文字を入力しておいた方がよいこともあります。 > + + :set isk<Tab> + +上の結果は、こうなります。 > + + :set iskeyword + +ここで"="を押してから<Tab>を押します。 > + + :set iskeyword=@,48-57,_,192-255 + +ここではオプションの古い値を挿入しています。この状態から、その値を編集すること +ができます。 +<Tab>を押した際に補完される内容は、Vimがその補完場所に期待する内容です。何が補 +完されるのかは、実際にやってみるのがわかりやすいでしょう。しかし状況によって +は、望んでいる結果が得られない場合もあります。そうなる原因は、1つはVimがあなた +のやりたいことを理解しているわけではないことであり、また単にその状況における補 +完が提供されていないだけなのかもしれません。そのような場合は、<Tab>文字(画面上 +では ^I として表示)が挿入されます。 + + +ヒットリスト +------------ + +ヒットしたものが大量にある場合は、概要を見たいでしょう。これをするにはCTRL-D +を押してください。例えば、次の状態でCTRL-Dを押してみましょう。 > + + :set is + +この結果はこのようになります。 > + + :set is + incsearch isfname isident iskeyword isprint + :set is + +vimはヒットした項目のリストを入力中のテキストに挿入します。このリストから欲 +しい項目をチェックできます。その中にもない場合、<BS>を押してまた別の単語を +探すことができます。ヒット項目が多い場合、残りの補完をするために<Tab>を押す +前にもう少し文字を入力してください。慎重に探せば"incsearch"は"is"で始まらな +いことに気付くでしょう。(多くのオプションには短縮名とフル形式名があります) +vimは,あなたがオプションの短縮名をフル形式に拡張して欲しいだろうと知っている +程度に賢明です。 + + +さらに他にも +------------ + +CTRL-Lコマンドを使うと、最長一致した単語まで補完してくれます。例えば":edit i" +と入力したところ、"info.txt"と"info_backup.txt"というファイルがあったとする +と、":edit info"という文字列が得られます。 + +'wildmode'オプションは補完の動作を変更します。 +'wildmenu'オプションはヒットしたリストをメニューのように表示させる時に使い +ます。 +'suffixes'オプションにはあまり大切でないファイルを指定しておいて、ファイル +リストの末尾に表示するようにします。 +'wildignore'オプションはファイルをリスト表示しない時に指定します。 + +この全部については|cmdline-completion|をご覧ください。 + +============================================================================== +*20.4* コマンド行の履歴 + +3章でも履歴について少しだけお話しました。基本的には以前に使ったコマンドを +<Up>キーで呼び出す時に使うものです。<Down>キーを押すとより最近のコマンドに +戻ります。 + +実際には履歴には4種類があります。ここで述べるのは":"コマンドと"/","?"検索コ +マンド用のものです。"/"と"?"はどちらも検索コマンドですので、同じ履歴を共有し +ます。これ以外の2つの履歴は式と、input()関数で使う入力行です。 +詳しくは|cmdline-history|をご覧ください。 + +":set"コマンドを実行してから、10個のコマンド行のコマンドを実行した後で、もう +一度":set"コマンドを実行したいとします。これは":"を押してから<Up>を10回押せ +ばできます。ですが、もっと素早い方法があります。 > + + :se<Up> + +Vimは "se" で始まった最近のコマンドにまで戻ります。その上で、それが求めていた +":set" コマンドであるか、確かめることができます。普通は何度も<Up>を押すような +ことはありません(入力したのが全部":set"コマンドででもない限り)。 + +<Up>キーを押すと、その行に入力されているパターン(ここでは"se")と履歴の各行を +較べて、一致する行だけを表示します。 +探している行に一致するものがなければ、<Down>キーで戻って入力した内容を変更し +ます。もちろんCTRL-Uで最初からやり直すこともできます。 + +履歴の全行を見るにはこのようにします。 > + + :history + +これはコロン(:)コマンドのヒストリを表示します。検索コマンドの履歴を表示する +には次のようにします。 > + + :history / + +矢印キーを使いたくない方は、<Up>の代わりにCTRL-Pを、また<Down>の代わりに +CTRL-Nが使えます。CTRL-Pは前(Previous)の意味で、CTRL-Nは次(Next)の意味です。 + +============================================================================== +*20.5* コマンド行のウィンドウ + +コマンド行での文字入力は通常の挿入モードでの入力とは違いがあります。コマンド +行では文字編集の多くのコマンドが使えません。たいていはあまり問題になりません +が、時に複雑なコマンドを入力したいこともあります。このような場合にはコマンド +行のウィンドウが便利です。 + +コマンド行のウィンドウを開くにはこのようにします。 > + + q: + +すると画面の下の方に(小さな)ウィンドウが開きます。ここにはコマンド行の履歴が +表示され、一番下には空行が表示されます。 + + +-------------------------------------+ + |other window | + |~ | + |file.txt=============================| + |:e c | + |:e config.h.in | + |:set path=.,/usr/include,, | + |:set iskeyword=@,48-57,_,192-255 | + |:set is | + |:q | + |: | + |command-line=========================| + | | + +-------------------------------------+ + +ここでは通常モードのコマンドが使えます。"hjkl"でカーソルが動かせます。上の例 +を使いましょう。まず"5k"を入力して":e config.h.in"の行まで動きます、次に"$h" +で行末の"in"の"i"にカーソルを置いてから、"cwout"と入力します。そうするとこの +ように行が変更されます。 + + :e config.h.out ~ + +ここで<Enter>を押すとコマンドを実行して、コマンド行のウィンドウは閉じられます。 +<Enter>キーを押した時に実行するのはカーソルのある行の内容です。その時にvimが +通常モードだったか、挿入モードだったかは関係ありません。 +コマンド行のウィンドウで変更した内容は保存されません。ですから履歴の内容も変 +化しません。ただ、実際に実行したコマンドは他の場合と同じく履歴に追加されます +から、その点は違うといえば違います。 + +コマンド行のウィンドウは履歴を一覧で見て、似たようなコマンドを探して、それを +ちょっと変更して再実行するような場合に便利です。コマンド行のウィンドウで検索 +コマンドを使って何かを探すのもできます。 +上の例の場合なら、"?config"という検索コマンドを実行すれば、以前に実行したコ +マンドの中から"config"という文字列を含むものを探します。これはちょっと妙な感 +じかも知れません。だってコマンド行ウィンドウの中を探すコマンド行を実行するわ +けですから。ただ、検索コマンドを入力している時は新たなコマンド行のウィンドウ +を開くことはできません。コマンド行ウィンドウは常に1つだけなのです。 + +============================================================================== + +Next chapter: |usr_21.txt| 行ったり来たり + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_21.jax b/ja/usr_21.jax new file mode 100644 index 000000000..ebe176a79 --- /dev/null +++ b/ja/usr_21.jax @@ -0,0 +1,473 @@ +COMMENT: 外部コマンドの使用法、およびモードライン +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_21.txt* For Vim version 6.3. Last change: 2004 Mar 29 + + VIM USER MANUAL - by Bram Moolenaar + + 行ったり来たり + + +この章ではvimから他のプログラムを呼び出す方法について説明します。vimの中から +外部プログラムを呼び出す方法とvimを一旦離れて、後で戻ってくる方法の両方を説 +明します。さらにvimの状態を覚えさせておき、後でそれを復元する方法についても +述べます。 + +|21.1| 退避(サスペンド)と復元(リジューム) +|21.2| シェルコマンドの実行 +|21.3| viminfoによる情報の記憶 +|21.4| セッション +|21.5| ビュー +|21.6| モード行 + + Next chapter: |usr_22.txt| 編集したいファイルを見つける + Previous chapter: |usr_20.txt| コマンドラインコマンドを素早く入力する +Table of contents: |usr_toc.txt| + +============================================================================== +*21.1* 退避(サスペンド)と復元(リジューム) + +他のUnixのアプリケーションと同じくvimでもCTRL-Zを押してサスペンドできます。 +CTRL-Zを押すと、vimを停止し、呼び元のシェルに制御を戻します。そこで嫌になる +まで他のコマンドを何でも実行できます。vimに戻ってくるにはシェルの"fg"コマン +ドを使います。 > + + CTRL-Z + {任意のシェルコマンドを実行} + fg + +vimに戻って来たときには、何一つ変化はありません。 +CTRL-Zがうまく動かない場合のために、":suspend"コマンドも用意しています。vim +をフォアグラウンドに戻すことを忘れないでください。でないと折角の変更内容を全 +て失ってしまうことになります。 + +なお、この機能はUnixでのみサポートされます。他システムのvimでは新たに別シェ +ルを起動します。これでもシェルのコマンドを使えるという機能に違いはありません。 +ただ、vimの呼び出し元のシェルではなく新たなシェルだという違いがあります。 +GUI版の場合は、vimを起動したシェルに戻ることができません。その代わりCTRL-Zを +押すとvimのウィンドウを最小化(ウィンドウシステムやOSによって表現は違います) +します。 + +============================================================================== +*21.2* シェルコマンドの実行 + +vimに単一のシェルコマンドを実行させるには":!{command}"を使います。例えばディ +レクトリの一覧を得るにはこのようにします。 > + + :!ls (Unix環境) + :!dir (MS-DOS/MS-Windows環境) + +vimは外部コマンドを実行します。 コマンドの実行が終わると<Enter>キー入力を促 +すメッセージが出ます。こうすることで編集中の文章に戻る前にコマンドの実行結果 +をちゃんと確認できるわけです。 +"!"コマンドは他の場所でも外部コマンドを動かすのに使えます。次の概略をご覧く +ださい。 + + :!{program} {program}を起動する + :r !{program} {program}を起動し、その出力をバッファに取込む + :w !{program} 現在の文章を標準入力として{program}を起動する + :[range]!{program} 指定の範囲を{program}の標準入力とする + +"!{program}"の前に範囲指定があるのとないのとで大違いである点には気を付けてく +ださい。範囲指定がなければ、単純にプログラムを実行するだけですが、範囲指定が +あると、その範囲の文字列はそのプログラムでフィルタ処理するのです。 + +プログラムの全行を実行するのもこの方法で可能です。しかし、シェルを使う方がよ +り良いでしょう。新たなシェルを起こすのはこのコマンドです。 > + + :shell + +これはCTRL-Zによるサスペンドと似ていますが、":shell"では新たなシェルを起動さ +せる点が異なります。 + +GUI版を使っている時にはシェルは標準入出力用にvimのウィンドウを使います。vim +は端末ソフト(Terminal emulator)ではないので、うまく動かないかも知れません。 +困った場合は'guipty'オプションを逆にしてみてください。それでもうまくいかない +場合は、新しい端末ウィンドウを開いてそこでシェルを動かしてください。例えば、 +次のようにします。 +> + :!xterm& + +============================================================================== +*21.3* viminfoで情報を記憶する + +しばらく編集作業をしていると、いろいろなファイルにレジスタやマークを定義した +り、手間をかけて作ったコマンド行がコマンド履歴に入ったりします。でもvimを終 +了すると、全てがなくなってしまいます。でも、実はこれを復元できるんです! + +次のような情報を保持するために設計されたviminfoというファイルがあります。 + + ・コマンド行と検索パターンの履歴 + ・レジスタに登録された文字列 + ・各ファイルに定義されたマーク + ・バッファリスト + ・グローバル変数 + +vimを終了する都度、上の内容をviminfoというファイルに保存します。vimを再起動 +する時にviminfoの内容を読み込んで上の項目を再設定します。 + +'viminfo'オプションはデフォルトでonになっていて、一定の項目数まで情報を保存 +します。この項目数をもっと大きく設定することもできます。それにはこのような +コマンドを使います。 > + + :set viminfo=string + +"string"の部分には何を保存したいかを指定します。これは1文字のオプション指定 +と引数という文法です。オプションと引数のペアはカンマ(,)で区切ります。 +独自のviminfo指定を行う方法を順を追って見ていきましょう。最初に ' オプション +はマークを覚えておくファイルの数を指定するのに使います。このオプションに丁度 +良い数字を決めましょう(例えば1000)。この時点ではこのようなコマンド指定となり +ます。 > + + :set viminfo='1000 +< + f オプションはグローバルマーク(A~Zと0~9)を覚えておくかどうかを指定し +ます。ここに0を指定すると何も保存しません。何も指定しないか、1を指定した場合 +はグローバルマークを保存します。これを保存するのであれば、コマンドはこのよう +になります。 > + + :set viminfo='1000,f1 + +次に < オプションは各ファイルのレジスタを合計でいくつ覚えておくかを指定しま +す。デフォルトでは全ての行を保存します。これが0であれば何も保存しません。何 +千行もの(使うこともなく、vimの起動を遅くするだけの)データをviminfoファイルに +追加しても仕方がないので、ここでは最大500個とします。 > + + :set viminfo='1000,f1,<500 +< + Note: + " 記号はコメントの開始記号ですので、必ず直前にバックスラッシュを付 + けてクオートしないといけません。 + +上記以外にも次のようなオプションがあります。 + : コマンド行の履歴として保存する行数 + @ 入力行の履歴として保存する行数 + / 検索コマンドの履歴として保存する行数 + r マーク情報を保存しないリムーバブルメディアの指定(このオプショ + ンは何度でも指定できます) + ! 全てが大文字で、小文字を含まないグローバル変数 + h 起動直後は'hlsearch'によるハイライト表示をしない + % バッファリスト(これはvimをファイル引数なしで起動した時のみ復 + 元します) + c 文章を'encoding'の指定に従って変換する + n viminfoファイルの名前を指定(このオプションは最後にしか指定で + きない) + +さらに詳しい内容は'viminfo'オプションや|viminfo-file|をご覧ください。 + +vimを複数個立ち上げている場合は、最後に終了したVimの情報が記憶されます。ですか +ら、それ以前に終了したVimが保存した内容は失われてしまいます。どの項目も記憶さ +れるのは1度きりなのです。 + + +前回の場所に戻る +---------------- + +ファイルの編集の途中で休暇で抜ける時間になってしまった場合、vimを終わって、 +休暇を満喫している時は仕事のことなどすっかり忘れてしまいます。2週間経って仕 +事に戻ったら、vimを立ち上げて、こう入力しましょう。 +> + '0 + +すると、最後にvimを終わった時の場所に戻ってくれます。これで仕事が続けられま +すよね。 +vimを終了する時に毎回マークを生成します。直前の終了時のが '0 です。その前の +'0 は '1 となり、 '1 は '2 という具合です。最後の '9 は消えてしまいます。 +":marks"コマンドは '0 ~ '9 がどこを示しているかを見るのに便利です。 + + +MOVE INFO FROM ONE VIM TO ANOTHER +1つのvimから他のへ情報移動(?) +------------------------------ + +":wviminfo"と":rviminfo"コマンドはvimの動作中にviminfoを保存したり、復元した +りするのに使えます。これは、vimが2つ起動している時にレジスタの内容を交換す +る時に便利です。1つ目のvimで次のようにして保存します。 > + + :wviminfo! ~/tmp/viminfo + +そして2つ目のvimではそれを読み込みます。 > + + :rviminfo! ~/tmp/viminfo + +分かりきったことでしょうが、"wviminfo"の"w"は"write"のことで、"rviminfo"の +"r"は"read"のことです。 +":wviminfo"に ! 記号を加えて、強制的に既存ファイルに上書きすることもできま +す。これを省略した場合はファイルが存在すれば、情報をマージしてファイルに保存 +します。 +また":rviminfo"に ! 記号を付けた場合は、ファイルの全情報を使うという意味にな +りますので、ファイルの内容を現在の設定状態に上書きします。! なしの場合はファ +イルの内容のうち現在使用していないものだけをセットします。 +上のコマンドは情報を保存し、後で再利用するのにも使えます。例えば、viminfo専 +用のディレクトリを作っておいて、目的ごとに使い分けるといったことも可能です。 + +============================================================================== +*21.4* セッション + +編集作業を一日中やっていて、まだ続きがあるような場合、中断個所を明日になって +思い出せるように、どこまでやったかを記録しておきたいことでしょう。これは編集 +中のセッションを保存して、翌日にそれを復元すれば可能です。 +vimのセッションにはあなたが編集していた全ての情報を含んでいます。ここには、 +例えばファイルリスト、ウィンドウのレイアウト、グローバル変数、オプションetc +といった情報を含んでいます。(正確には、後述するように'sessionoptions'で指定 +しているものが復元の対象となります) +このコマンドでセッションファイルを作れます。 > + + :mksession vimbook.vim + +後でこのセッション情報を復元するには、こうします。 > + + :source vimbook.vim + +vimを起動する時に指定のセッションを復元するには、起動時オプションをこのよう +に指定します。 > + + vim -S vimbook.vim + +これはvimの起動時に特定のファイルを読み込むように指示するものです。'S'はセッ +ションの意味です。(って、実は"-S"を使うとどんなvimスクリプトでも(sourceコマ +ンド同様に)読み込みできます。ですからこれは"source"の意味とも言えます) + +開いていたウィンドウは同じ大きさで同じ場所に開きます。マップやオプション値も +保存時と同じ値になります。 +正確には、復元される情報は'sessionoptions'オプションの内容によります。デフォ +ルト値は"blank,buffers,curdir,folds,help,options,winsize"となります。 + + blank 空のウィンドウ + buffers ウィンドウになっていないものも含めて全バッファ + curdir 現ディレクトリ + folds 手動で作成したものも含めてフォールド + help ヘルプウィンドウ + options 全オプションとマップ + winsize ウィンドウの大きさ + +好みに応じて変更してください。例えば、vim自身のウィンドウの大きさも復元した +いのであれば、このようにします。 > + + :set sessionoptions+=resize + + +こっちもセッション、あっちもセッション +-------------------------------------- + +セッションが便利に使えるわかりやすい例を挙げましょう。例えば複数のプロジェク +トに参加している時がそうです。セッションファイルを"~/.vim"ディレクトリ下に保 +存するとしましょう。現在の作業が"secret"プロジェクトで、それを別の"boring"と +いうプロジェクトに切り換えてみましょう。 > + + :wall + :mksession! ~/.vim/secret.vim + :source ~/.vim/boring.vim + +最初の":wall"は変更のあったファイルを全部保存します。次に現在のセッション情 +報を":mksession!"で保存します。これは前回のセッションファイルに上書き保存さ +れます。次回にこの"secret"セッションをロードすれば、ここで保存した時の状態か +ら作業を始められます。最後の1行で新たに"boring"セッションをロードしています。 + +ヘルプウィンドウを開いたり、ウィンドウ分割、ウィンドウクローズなどを繰り返し +てウィンドウのレイアウトがぐちゃぐちゃになった時は、最後に保存したセッション +に戻るのにも使えます。 > + + :source ~/.vim/boring.vim + +結局セッションファイルは、現在の状況を保存して次回に続きを行うという目的にも +ある種のスタート地点として使う目的にも、どちらでも好きなように使えるというこ +とです。 +これ以外にも、好みのウィンドウのレイアウトを作っておいてそれを保存するという +目的にもセッションが使えます。これならいつでも好きな時にそのレイアウトに戻る +ことができあますからね。 +例えば、こんなのは使いやすいレイアウトです。 + + +----------------------------------------+ + | VIM - main help file | + | | + |Move around: Use the cursor keys, or "h| + |help.txt================================| + |explorer | | + |dir |~ | + |dir |~ | + |file |~ | + |file |~ | + |file |~ | + |file |~ | + |~/=========|[No File]===================| + | | + +----------------------------------------+ + +これはヘルプがウィンドウの上部にあり、いつでも参照できます。左端の縦長のウィ +ンドウはファイルエクスプローラです。ファイルエクスプローラはディレクトリ内容 +を見たりできるvimプラグインです。ここで編集するファイルを選択できます。これ +については次章で詳しく説明します。 +このウィンドウをvim起動直後に作るには次のようにします。 > + + :help + CTRL-W w + :vertical split ~/ + +ウィンドウの大きさはお好みでどうぞ。さてここでセッションを保存します。 +> + :mksession ~/.vim/mine.vim + +これで、次のようにすればいつでもこのレイアウトが使えるようになりました。 > + + vim -S ~/.vim/mine.vim + +Hint: エクスプローラウィンドウに出ているリストで選択したファイルを右側の空 +ウィンドウで開くには、カーソルをファイル名のところに動かして"O"を押します。 +マウスでダブルクリックしても同じ結果となります。 + + +UnixとMS-Windows +---------------- + +ある日はMS-Windows上で作業を行い、また別の日はUnix上で作業を行うというのが必 +要な方もいるでしょう。あなたがそうなら、'sessionoptions'に"slash"と"unix"を +追加することを考えましょう。こうすれば、保存されるセッションファイルはどちら +のシステムでも使える形式になります。あなたのvimrcファイルに次の行を追加しま +しょう。 > + + :set sessionoptions+=unix,slash + +これでvimはUnix形式を使うようになりますから、MS-Windows側のvimはUnixファイル +の読み書きができるようになります。ただしUnix側のvimはMS-Windows形式のセッショ +ンファイルを読み込めません。 +同じように、MS-Windows側のvimはディレクトリの区切りの"/"を理解しますが、Unix +側のvimは"\"を理解できません。 + + +セッションとviminfo +------------------- + +セッションにはいろんなものが保存されますが、マークやレジスタ、コマンド行の履 +歴などは含まれません。こういった情報を保存するにはviminfo機能を使うしかあり +ません。 +たいていはセッションを使いたいシチュエーションはvininfoを使いたい時と違って +いるようです。例えば、他のセッションに切り換えたい場合でもコマンドの履歴はそ +のままにしておきたいでしょうし、あるセッションでレジスタにヤンクした文字列を +他のセッションにペーストしたい場合もそうでしょう。 +セッションにviminfoの内容も保存したほうがよい場合もあるかも知れませんが、そ +れはその時に手動でやるしかありません。こんな感じです。 > + + :mksession! ~/.vim/secret.vim + :wviminfo! ~/.vim/secret.viminfo + +これを復元する時も同様です。 > + + :source ~/.vim/secret.vim + :rviminfo! ~/.vim/secret.viminfo + +============================================================================== +*21.5* ビュー + +セッションではvim全体に関する保存を行います。1つのウィンドウについてのプロ +パティだけを保存したい場合には「ビュー」を使います。 +ビューを使うのは、特定の方法でファイルを編集する時のためです。例えば、行番号 +を表示するために'number'オプションを定義し、新たなフォールドを定義するとしま +す。セッションと同じようにこのファイル上のビューを憶えておき、後で復元して利 +用できます。実際、セッションの保存というのは各ウィンドウのビューを保存してい +ることに他なりません。 +ビューを使うには2つの基本的な方法があります。1つ目はvimにビューファイルの +名前を拾わせる方法です。後で同じファイルを編集する時にビューを復元することが +できます。カレントウィンドウのビューを保存するには、このようにします。 > + + :mkview + +vimはビューをどこに置くか自分で判断します。同じファイルを後で編集する時には +このコマンドでビューを呼び戻せます。 > + + :loadview + +ね、簡単でしょ? +さて、今度は'number'オプションをonにせず、全てのフォールドを開いた状態でファ +イルを見たいとします。まずオプションをそのように設定します。次にこのビューを +保存しましょう。 > + + :mkview 1 + +ご想像通り、これを呼び戻す時はこうなります。 > + + :loadview 1 + +さて、これで":loadview"の引数の有無で2つのビューを使い分けることができます。 +1つのファイルにつき最大で10のビューを定義できます。そのうち1つは番号なしで +のこりの9つは1~9の番号で指定します。 + + +名前付きのビュー +---------------- + +2つ目の基本的な方法はあなたが選んだ名前でファイルのビューを保存する方法です。 +このビューは他のファイルを編集する時にもロードできます。vimはビューで指定さ +れたファイルに切り換えます。ですから、これを使うと以前保存した時のファイルに +素早く切り換えることができます。 +例えば、現在のファイルをビューに保存するにはこのようにします。 > + + :mkview ~/.vim/main.vim + +それを戻すのはこうです。 > + + :source ~/.vim/main.vim + +============================================================================== +*21.6* モード行 + +あるファイルを編集する時に、いつもそのファイル用のオプションを設定したいこと +もあるでしょう。毎回そのコマンドを手入力するのはバカバカしい話です。セッショ +ンやビューを使ってもいいのですが、そのファイルを他のメンバと共有している場合 +は定義を共有できません。 +こういった場合はファイルにモード行を追加すれば解決します。これはvimにオプショ +ンの値を指定のファイルに対してだけ適用するように通知する行データです。 +Cプログラムでのインデント設定を4にするというのが典型的な使い方でしょう。 +この場合なら、'shiftwidth'オプションを4に設定します。このモード行は次のよう +にします。 + + /* vim:set shiftwidth=4: */ ~ + +上の行をファイルの先頭5行か末尾5行のどこかに置きます。このファイルを編集し +ようとすると、'shiftwidth'が4桁に設定されているのがわかるでしょう。他のファ +イルを編集すると、またデフォルトの8桁に戻ります。 +一部のファイルではモード行をヘッダに置くのがフィットします。そういう場合は +ファイルの先頭に置きましょう。テキストファイルなど、通常の文章の中に入れる +場合ならファイルの末尾に置くのがよいでしょう。 +'modelines'オプションを使うとファイルの先頭と末尾から、それぞれ何行分をモー +ド行を含みうるかを指定できます。これを10行とするにはこのようにします。 > + + :set modelines=10 + +'modeline'オプションはモード行の機能を禁止するのに使います。これはrootとして +作業を行う場合や編集しようとしているファイルが(セキュリティ的に)信用できない +場合に使います。 > + + :set nomodeline + +モード行の内容は次の形式で記述します。 + + any-text vim:set {option}={value} ... : any-text ~ + +vimが使う部分の前後にある"any-text"には、どんな文字列が来ても構いません。 +これはモード行の内容をコメント化したりするのに使います。最初の例であれば、 +/* と */ を使っています。 +" vim:"の部分で、vimはこれがモード行であることを認識します。vimの直前に空白 +文字があるか、vimが行頭で始まっていなければなりません。ですから"gvim:"といっ +た記述ではうまく動きません。 +":"に挟まれた部分は":set"コマンドです。これはvimの中で":set"コマンドを入力す +るのと同じように働きます。ただし":"記号を使う時はバックスラッシュ(\)でクオー +トする必要があります。(これをしないとここがモード行の最後とみなされてしまい +ます) + +もう一つの例です。 + + // vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here ~ + +ここでは最初のコロンの前にバックスラッシュがあります。ですからこれは":set"コ +マンドの一部です。ですが、2つ目のコロン以降はコメントとみなされますので +無視されます。 + +もっと詳しいことは|modeline|をご覧ください。 + +============================================================================== + +Next chapter: |usr_22.txt| 編集するファイルを見つける + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_22.jax b/ja/usr_22.jax new file mode 100644 index 000000000..11ef4ab95 --- /dev/null +++ b/ja/usr_22.jax @@ -0,0 +1,377 @@ +COMMENT: ファイルの検索(ファイルブラウザ) +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_22.txt* For Vim version 6.3. Last change: 2003 Mar 17 + + VIM USER MANUAL - by Bram Moolenaar + + 編集したいファイルを見つける + + +ファイルはどこにでもあります。ではどうやって見つけますか?vimではいろいろな +方法でディレクトリ構造を調べる方法を提供しています。既に他で説明したように、 +ファイルにジャンプするコマンドがあり、vimは以前に編集したことのあるファイル +を憶えています。 + +|22.1| ファイルエクスプローラ +|22.2| カレントディレクトリ +|22.3| ファイルを見つける +|22.4| バッファリスト + + Next chapter: |usr_23.txt| 他のファイルを編集する + Previous chapter: |usr_21.txt| 行ったり来たり +Table of contents: |usr_toc.txt| + +============================================================================== +*22.1* ファイルエクスプローラ + +vimにはディレクトリを編集できるようなプラグインがあります。これを実行してみ +てください。 > + + :edit . + +自動コマンドとvimスクリプトの魔法によって、ウィンドウにはディレクトリの内容 +が表示されているはずです。例えばこんな具合です。 + + " Press ? for keyboard shortcuts ~ + " Sorted by name (.bak,~,.o,.h,.info,.swp,.obj,.orig,.rej at end of list) ~ + "= /home/mool/vim/vim6/runtime/doc/ ~ + ../ ~ + check/ ~ + Makefile ~ + autocmd.txt ~ + change.txt ~ + eval.txt~ ~ + filetype.txt~ ~ + help.txt.info ~ + +次のような項目が表示されるでしょう。 +1. "?"の使い方についてのコメント。ファイルエクスプローラの機能についてのヘ + ルプ。 +2. 2行目はディレクトリ内の各項目をどのようにリストしているかの説明。ソート + 方法はいくつか用意されている。 +3. 3行目は現ディレクトリの名前 +4. "../"ディレクトリ。これは親ディレクトリのこと。 +5. 子ディレクトリの名前 +6. 通常ファイルの名前。2行目での説明の通り、ここではなく末尾に表示されるファ + イルもある。 +7. あまり重要でない通常ファイルの名前。あまり使わないようなファイルについて + は、このように末尾に移動できる。 + +シンタックスハイライトを有効にしている場合は、それぞれを違う色で表示しますか +ら見分けるのが簡単になります。 + +この画面ではリストの中を動くのvimの通常モードのコマンドが使えます。例えば、 +あるファイルの上にカーソルを動かして、<Enter>を押すと、そのファイルを編集で +きます。エクスプローラに戻るには":edit ."と入力します。CTRL-Oでも同じ意味に +なります。 +カーソルがディレクトリ名の上にある時に<Enter>を押してみましょう。すると、エ +クスプローラはその子ディレクトリに移動し、そのディレクトリ内のファイルなどを +表示します。最初に表示されている"../"ディレクトリで<Enter>を押すと、1つ上の +階層に移動します。その行まで移動しなくても、"-"を押しても同じ意味になります。 + +"?"を押すと、エクスプローラの使い方についての簡単なヘルプが出ます。 +このような表示となります。 + + " <enter> : open file or directory ~ + " o : open new window for file/directory ~ + " O : open file in previously visited window ~ + " p : preview the file ~ + " i : toggle size/date listing ~ + " s : select sort field r : reverse sort ~ + " - : go up one level c : cd to this dir ~ + " R : rename file D : delete file ~ + " :help file-explorer for detailed help ~ + +最初の数行は選択したファイルを表示するためのコマンドです。利用するコマンドに +よって、ファイルの表示のされ方が違います。 + + <Enter> 現在のウィンドウを使って表示 + o 新たなウィンドウを開く + O 直前に使っていたウィンドウを使う。 + p プレビューウィンドウを使う。カーソルはエクスプローラ + ウィンドウに戻ってくる。|preview-window|を参照。 + +次のコマンドはそれ以外の情報表示に使います。 + + i 指定のファイルの大きさと日付を表示します。もう一度"i" + を押すと非表示にします。 + s カーソルのあるフィールドを使って並べ替えを行います。 + まず、"i"コマンドで大きさと日付を表示します。次にカー + ソルをどれかのファイルの大きさフィールドに動かして、 + "s"を押します。するとファイルは大きさ順に並べ替えら + れます。カーソルが日付にあれば、日付順に並べ替えられ + ます。 + r 並べ替えの順序を逆にします(大きさでも日付でも) + +また、次のような特殊コマンドもあります。 + + c 表示されているディレクトリをカレントディレクトリとし + ます。そうすると":edit"コマンドでフルパスを指定しな + くてもよくなります。 + R カーソル下のファイル名を変更します。新しいファイル名 + を入力するためのプロンプトを表示します。 + D カーソル下のファイルを削除します。本当に実行してもよ + いかを確認するプロンプトを表示します。 + +============================================================================== +*22.2* カレントディレクトリ + +シェルと同じようにvimにもカレントディレクトリという概念があります。例えば、 +ホームディレクトリにいる時に、"VeryLongFileName"というディレクトリにあるファ +イルをいくつか編集したいとします。こうすればできますが、打ち込む文字数が多く +なります。 > + + :edit VeryLongFileName/file1.txt + :edit VeryLongFileName/file2.txt + :edit VeryLongFileName/file3.txt + +こんなに文字を打つのを止めたければ、このようにします。 > + + :cd VeryLongFileName + :edit file1.txt + :edit file2.txt + :edit file3.txt + +このように":cd"コマンドでカレントディレクトリを変更できます。カレントディレ +クトリが何かを知るには、":pwd"コマンドを使います。 > + + :pwd + /home/Bram/VeryLongFileName + +vimは直前のディレクトリ名を覚えています。":cd -"を使うとそのディレクトリに戻 +ることができます。 +例を示しましょう。 > + + :pwd + /home/Bram/VeryLongFileName + :cd /etc + :pwd + /etc + :cd - + :pwd + /home/Bram/VeryLongFileName + :cd - + :pwd + /etc + + +ウィンドウ毎のカレントディレクトリ + +ウィンドウを分割すると、両方のウィンドウのカレントディレクトリは同じになりま +す。でも新しく分割したウィンドウで別のディレクトリにあるファイル群を編集した +ければ、他のウィンドウのカレントディレクトリに影響を与えずに、ディレクトリ変 +更ができます。これをローカルディレクトリと呼びます。 > + + :pwd + /home/Bram/VeryLongFileName + :split + :lcd /etc + :pwd + /etc + CTRL-W w + :pwd + /home/Bram/VeryLongFileName + +":lcd"コマンドを使うまでは、全ウィンドウは同じカレントディレクトリを共有しま +す。ですから、あるウィンドウで":cd"コマンドを実行すれば、他の全ウィンドウの +カレントディレクトリも変更されます。 +でも、":lcd"を使って違ったディレクトリに変更されたウィンドウは違います。他の +ウィンドウで":cd"や":lcd"を行っても影響を受けません。 +他とは別のカレントディレクトリを使っているウィンドウで":cd"コマンドを実行す +ると、共有のディレクトリを使うようになります。 + +============================================================================== +*22.3* ファイルを見つける + +次のような行を含むCのプログラムを編集しているとします。 + + #include "inits.h" ~ + +この"inits.h"ファイルの内容を見たければ、カーソルをそのファイル名の上に動か +して、次のように入力します。 > + + gf + +vimはそのファイルを見つけて、開いてくれます。 +ファイルがカレントディレクトリにない場合はどうしましょうか?その場合は'path' +オプションを使ってそのファイルを探します。このオプションにはファイルを探す時 +に見にいくディレクトリのリストを入れておきます。 +例えば、インクルードファイルが"c:/prog/include"にあるのであれば、次のコマン +ドで'path'オプションにそのディレクトリを追加します。 > + + :set path+=c:/prog/include + +ここで指定しているディレクトリは絶対パスです。ですからカレントディレクトリが +どこであれ、常に同じ場所を示します。ではファイルのある場所のサブディレクトリ +にファイル群を配置してある場合はどうでしょうか。この場合は相対パスで指定がで +きます。相対パスはこのように、"."文字で始めます。 > + + :set path+=./proto + +この場合、"gf"を実行したファイルがあるディレクトリのサブディレクトリ"proto" +の中を探します。つまり、"inits.h"の上で"gf"と入力すると、vimは"proto/inits.h" +を探し、そのファイルのディレクトリで編集を開始します。 +"./"なしで、つまり"proto"だけだった場合、vimはカレントディレクトリの下にある +"proto"ディレクトリを探します。ただ、編集中のファイルがある場所と、カレント +ディレクトリが、いつも一致しているとは限りません。 + +'path'オプションでは、これ以外にもいろいろな方法で検索対象のディレクトリを指 +定することができます。詳しくはヘルプの'path'オプションをご覧ください。 +'isfname'オプションはファイル名に使える文字とそうでない文字を決めるのに使い +ます。(例えば、上の例にもあるように "(ダブルクオート)文字がそうです) + +ファイルの中では使っていないが、ファイル名を知っているようなファイルを探すに +は、次のコマンドを使います。 > + + :find inits.h + +vimは'path'オプションでそのファイルの場所を決めようとします。これは":edit"コ +マンドと似ていますが、'path'を使う点が違っています。 + +見つけたファイルを別ウィンドウで開くには"gf"コマンドの代わりにCTRL-W fコマン +ドを使います。また、":find"の代わりは":sfind"となります。 + +Vim起動時に'path'にあるファイルの編集を開始するにはこの方法が便利です。 > + + vim "+find stdio.h" + +こうすると"stdio.h"というファイルを'path'の中から探しだします。クオート(")は引 +数を一つにまとめるために必ず必要です|-+c|。 + +============================================================================== +*22.4* バッファリスト + +vimでは編集中のファイルを表すのにバッファという用語を使います。実際にはバッ +ファは編集しているファイルのコピーです。バッファの変更を終わる時にそのファイ +ルにバッファの内容を書き出すのです。バッファにはファイルの内容だけが入ってい +るわけではなく、マークや設定などバッファに属する情報も持っています。 + + +隠しバッファ +------------ + +ファイル"one.txt"を編集している時に"two.txt"を編集する必要があったとします。 +単純に":edit two.txt"と入力してもいいのですが、"one.txt"に変更を加えている時 +にはうまくいきません。でもまだ"one.txt"を書き出したくはないとします。こんな +場合、vimなら次のコマンドで解決できます。 > + + :hide edit two.txt + +"one.txt"というバッファは画面から消えますが、vimはそのバッファを編集中である +ことを覚えていて、変更されている内容も覚えています。これを隠しバッファと呼び +ます。このバッファに文章が含まれていますが、見ることはできません。 +パラメタ付きの":hide"コマンドは別のコマンドです。これは'hidden'オプションが +設定されている時のようにふるまいます。このオプションを自分で設定することもで +きます。これを設定しておくといずれかのバッファを破棄する時に、隠しバッファの +状態となります。 +気を付けてください。変更された隠しバッファがある時には全バッファを保存済であ +ることを確認してからvimを終了してください。 + + +非アクティブバッファ +-------------------- + +一度使ったバッファに関する情報はずっと覚えています。ウィンドウが表示されてい +ない時で隠しバッファでもない場合もバッファリストには出てきます。こういった +バッファを「非アクティブバッファ」と呼びます。バッファの種類を整理しておきま +しょう。 + + Active 文章ロード済でウィンドウを表示中 + Hidden 文章ロード済だがウィンドウは非表示 + Inactive 文章は未ロードでウィンドウも非表示 + +非アクティブバッファについてマークと同じようにvim側で情報を保持していますの +で覚えています。ファイル名を覚えていますので、編集したことのあるファイルを見 +ることができ、便利です。後で再編集できます。 + + +バッファリスト +-------------- + +バッファリストを見るのは次のコマンドです。 > + + :buffers + +同じことを行うコマンドがあります。これはバッファリストを表示するという意味に +は取りにくいですが、ずっと入力は楽です。 > + + :ls + +コマンドの実行結果は例えば次のようになります。 + + 1 #h "help.txt" line 62 ~ + 2 %l+ "usr_21.txt" line 1 ~ + 3 "usr_toc.txt" line 1 ~ + +最初のカラムはバッファ番号です。バッファ番号を使えば、後で述べるようにファイ +ル名を入力せずにそのバッファを編集できます。 +バッファ番号の次にはフラグ、そしてファイル名、最後に編集した時の行番号と続き +ます。フラグ部分には次のようなものが(左から右へ)表示されます。 + + u バッファはリストに入らない(|unlisted-buffer|をご覧ください) + % 現在のバッファ + # 直前のバッファ + l バッファはロード済で表示中 + h バッファはロード済ですが非表示 + = バッファは読み込み専用 + - バッファは未変更。'modifiable'オプションがoff + + バッファは変更済 + + +バッファを編集 +-------------- + +番号を指定してバッファを編集できます。ファイル名を入力する手間を省けます。 +> + :buffer 2 + +しかしバッファ番号を知る唯一の方法はバッファリストを見ることです。その代わり +に、名前の一部を使うこともできます。 > + + :buffer help + +vimは入力された名前に一番近いファイルを探します。その名前に合うバッファが1 +つだけの場合はそれになります。この例であれば、"help.txt"がそうです。 +新しいウィンドウを開いてバッファを開く時はこうします。 > + + :sbuffer 3 + +この場合も名前で指定ができます。 + + +バッファリストの利用 +-------------------- + +次のコマンド群を使って、バッファリスト内を動くことができます。 + + :bnext 次のバッファを開く + :bprevious 1つ前のバッファを開く + :bfirst 最初のバッファを開く + :blast 最後のバッファを開く + +バッファをリストからはずすには、このコマンドを使います。 > + + :bdelete 3 + +繰り返しですが、この場合も名前が使えます。 +アクティブ(ウィンドウ内に見えている)バッファを削除すると、そのウィンドウも閉 +じます。またカレントバッファを削除すると、カレントウィンドウを閉じます。ただ +し、1つしかウィンドウが残っていない場合は、編集する他のバッファを探します。 +何も編集しないわけにはいかないですからね! + + Note: + ":bdelete"でバッファを削除した後でもvimはそれを覚えています。実際に + はそれを"unlieted"にして、":buffers"で表示されるリストに現れないよう + にしているのです。":buffers!"コマンドを使うとこの"unlisted"なウィン + ドウも表示します。(そう、vimは不可能なことも可能にするのです) + バッファのことを本当に忘れてしまうようにするには":bwipe"を使います。 + 'buflisted'オプションも併せてご覧ください。 + +============================================================================== + +Next chapter: |usr_23.txt| 他の種類のファイルを編集する + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_23.jax b/ja/usr_23.jax new file mode 100644 index 000000000..0f739ab17 --- /dev/null +++ b/ja/usr_23.jax @@ -0,0 +1,361 @@ +COMMENT: ファイルの改行、ネットワーク、暗号、バイナリ、圧縮 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_23.txt* For Vim version 6.3. Last change: 2001 Sep 03 + + VIM USER MANUAL - by Bram Moolenaar + + 他の種類のファイルを編集する + + +この章では通常ファイル以外のファイルの編集方法を述べます。vimでは圧縮された +ファイルや暗号化されたファイルの編集ができます。時にはインターネット経由でア +クセスする必要もあるでしょう。また、多少の制限はありますが、バイナリファイル +の編集もやってのけます。 + +|23.1| DOS形式、Mac形式、Unix形式のファイル +|23.2| インターネット上のファイル +|23.3| 暗号化 +|23.4| バイナリファイル +|23.5| 圧縮済ファイル + + Next chapter: |usr_24.txt| 素早く挿入する + Previous chapter: |usr_22.txt| 編集するファイルを見つける +Table of contents: |usr_toc.txt| + +============================================================================== +*23.1* DOS形式、Mac形式、Unix形式のファイル + +ずっとずっと以前、旧いテレタイプを使っていた頃は新しい行を始めるのに2つの文 +字(コード)を使っていました。1つは最初の桁位置に戻すための文字<CR>(キャリッ +ジリターン、復帰ともいう)で、もう1つは用紙を1行送る文字<LF>(ラインフィード +改行ともいう)です。 +コンピュータが登場した頃、記憶装置はとても高価なものでした。そこで行末を示す +だけのために2つもの記憶領域を使うことはない、と判断する人々が出てきたのです。 +UNIXを設計した人々は行末を示す記号として<LF>だけとすることを決め、Macintosh +を設計した(Appleの)人々は<CR>を標準としました。またMS-DOS(MS Windowsも)の場 +合は古来の<CR><LF>を使い続けました。 +このような事情があるため、あるシステムのファイルを他のシステムに持っていこう +とすると、ラインブレイク問題が持ち上ります。vimは自動的にファイル形式を認識 +して、うまく処理してくれます。 +'fileformats'オプションには新しいファイルを編集する時にチェックすべきフォー +マットを指定できます。例えば、次のコマンドは最初にUnix形式、2番目にMS-DOS形 +式のチェックをするという指示になります。 > + + :set fileformats=unix,dos + +ファイルを編集する時に表示されるメッセージでファイル形式がわかります。そのシ +ステム用のファイル形式の時には何も表示されません。つまりUnix形式のファイルを +Unixシステムで編集するのは特別なことはないからです。しかしDOS形式のファイル +を編集する時には、次のようなメッセージを表示します。 + + "/tmp/test" [dos] 3L, 71C ~ + +Macintosh形式なら"[mac]"と表示します。 +検出したファイル形式は'fileformat'オプションに格納します。今のファイル形式を +確認するには次のコマンドを使います。 > + + :set fileformat? + +vimが使うのは次の3つの名前です + + unix <LF> + dos <CR><LF> + mac <CR> + + +Macintoshフォーマットを使う +--------------------------- + +Unixでは、<LF>が改行です。行の途中に<CR>文字がくることは普通はありません。余 +談ですが、Unixでもvi(vimも)スクリプトでは<CR>が頻繁に現れます。 +一方、Macintoshでは<CR>が改行記号ですから行の途中に<LF>文字が出てくることも +ありえます。 +ということは、<CR>と<LF>の両方を含んでいるようなファイルがMac形式かUnix形式 +かを100%確実には区別できないのです。ですから、Unix上ではMac形式のファイルを +編集することはないものとみなし、このタイプのファイルチェックを行いません。 +それでも、Mac形式をチェックしたいのであれば、'fileformats'オプションに"mac" +を追加してください。 > + + :set fileformats+=mac + +こうすれば、ファイル形式のチェックを行います。ただ、vimがミスをする可能性が +あることはお忘れなく。 + + +フォーマットルールの上書き (OVERRULING THE FORMAT) +-------------------------- + +MS-DOS形式のファイルを古き良き時代のviで編集すると各行の行末に^M(=<CR>)の文 +字が表示されます。自動検出はこうならないようにしてくれます。でも、敢えて^Mを +表字したいのであれば、フォーマットルールを上書きする必要があります。 > + + :edit ++ff=unix file.txt + +コマンドの中で"++"とオプションを指定して、オプションをデフォルト以外の値に設 +定することができます。"++ff"の"ff"は'fileformat'のことです。"++ff=mac"だとか +"++ff=dos"といった指定もできます。 +ただし、これはどのオプションでも使えるわけではありません。現在のところ"++ff" +と"++enc"だけを実装してあります。"++fileformat"と"++encoding" も使えます。 + + +フォーマット変換 +---------------- + +'fileformat'オプションを使ってあるフォーマットのファイルを別フォーマットに変 +換することができます。例えば、MS-DOS形式のREADME.TXTというファイルがあり、そ +れをUNIX形式に変換したいとします。まずMS-DOS形式のファイルを編集します。 > + + vim README.TXT + +vimはこれがDOS形式であることを認識します。次にこのファイル形式をUNIX形式に変 +換します。 > + + :set fileformat=unix + :write + +ファイルはUnix形式で保存されます。 + +============================================================================== +*23.2* インターネット上のファイル + +誰かからファイルのある場所をURLで指定したEメールを受けとったとします。それ +がこのようなメールだったとします。 + + そのことならここに情報があったよ。 ~ + ftp://ftp.vim.org/pub/vim/README ~ + +何らかのアプリケーションを使ってこのファイルをダウンロードし、自分のマシンに +保存してからvimで編集する方法もあります。 +もっと簡単な方法があります。カーソルをそのURLのどこかに動かしてこのコマンド +を入力するのです。 > + + gf + +運が良ければ、vimはファイルをダウンロードするアプリを見つけ出して、ファイル +をダウンロードし、それを編集します。別のウィンドウでそのファイルを開くのであ +れば、"CTRL-W f"コマンドを使います。 +エラーメッセージが出てうまくいかない場合は、次のどれかでしょう。 + ・URLが間違っている。 + ・そのファイルをダウンロードする権限がない。 + ・ネットワークがダウンしている。 + ・などなど +残念ながら、エラーの理由を正しく説明することはほとんど不可能です。ファイルの +ダウンロードを手作業で行いたい場合もあるかもしれません。 + +インターネット経由でのファイルアクセスは netrw プラグインで行います。今のと +ころ、次のような形式のURLを取り扱うことができます。 + + ftp:// ftpを使う + rcp:// rcpを使う + scp:// scpを使う + http:// wgetを使う (取り込みのみ) + +vimは自分自身で通信を行うわけではありません。あなたのマシン上で使用可能なア +プリに依存しています。ほとんどのUnixシステムでは"ftp"と"rcp"は標準で用意され +ています。"scp"と"wget"はインストールされていないかもしれません。 + +vimのコマンドで、ファイルの編集を開始するコマンドは上で述べたURLを認識します。 +例えば、":edit"とか":split"などがそういったコマンドです。保存コマンドでもURL +は使えます。但し、"http://"は保存には使えません。 + +パスワードの件も含めて、もっと詳しいことについては|netrw|をご覧ください。 + +============================================================================== +*23.3* 暗号化 + +情報によっては、自分自身で管理した方がよいものもあります。例えば、生徒も使う +マシン上でテスト問題を作成する場合を考えてください。テストが始まる前に問題を +読む方法を探し当ててしまうような賢い生徒は困りものです。vimではファイルを暗 +号化できます。これで多少なりとも防御になるでしょう。 + +暗号化したファイルを編集するにはvimの起動時に"-x"パラメタを指定します。例え +ば次の通りです。 > + + vim -x exam.txt + +vimは暗号を解く時に、暗号化に使った鍵の文字列の入力を促します。 + + Enter encryption key: ~ + +気をつけて秘密鍵を入力します。入力した文字は表示されず、代わりにアスタリスク +(*)を表示します。入力を間違った時にはエラーを発生するのではなく、次のような +再入力メッセージを表示します。 + + Enter same key again: ~ + +正しく入力すると、通常通りファイルを編集し、ないしょのことを全部書き込んでく +ださい。ファイルの編集を終え、vimを終了する時にはそのファイルは再度暗号化して +保存します。 +vimでこのファイルを再編集する時には、同じ鍵文字列の再入力を求められます。この +時は"-x"パラメタは不要です。もちろん":edit"コマンドも使えます。vimはファイル +に「魔法の文字列(magic string)」を埋め込むので、それが暗号化されているかどう +かを識別できるのです。 +他のプログラムからこのファイルを見ようとすると、全くのゴミファイルのように見 +えます。またvimでファイルを編集する時に違った鍵文字列を与えた場合もゴミファ +イルに見えます。vimではその鍵文字列が正しいかどうかをチェックする方法があり +ません。(これを実現するのは暗号を破るよりもはるかに難しいのです) + + +暗号化のon/offの切り換え +------------------------ + +ファイルの暗号化を止めるには'key'オプションの内容を空文字列に設定します。 +> + :set key= + +この指定の後にファイルを保存すると暗号化せずに保存します。暗号化のために、こ +の'key'オプションを設定すると、パスワードが平文で表示されてしまいます。 +これだと誰でも肩越しにパスワードを盗むことができてしまいます。 +これを避けるため":X"コマンドを提供しています。これだと"-x"パラメタを指定した +時と同じように暗号化の鍵文字列を聞いてきます。 > + + :X + Enter encryption key: ****** + Enter same key again: ****** + + +暗号化の限界 +------------ + +vimで利用している暗号アルゴリズムは決して強固なものではありません。お手軽な +クラッカーから内容を保護するには十分ですが、暗号のエキスパートがじっくり時間 +をかけて解析するのに耐えられる程ではありません。 +またスワップファイルが暗号化されない点も忘れてはいけません。Unixのようなマル +チユーザシステムではスーパーユーザ権限があれば、あなたが編集している文章を +スワップファイルを使えば暗号化していない状態で読めてしまいます。 +他の人がスワップファイルを見れないようにするため、敢えてスワップファイルを使 +わないという方法もあります。vimを実行する時に"-n"パラメタを指定すれば、スワッ +プファイルは作らなくなります(その代わり何でもメモリに置こうとします)例えば +暗号化した"file.txt"をスワップファイルなしで編集するには、このようなパラメタ +で起動します。 > + + vim -x -n file.txt + +既にファイルを編集中なら、こうすればスワップファイルを使わなくなります。 > + + :setlocal noswapfile + +スワップファイルがないということは、リカバリが不可能だということです。編集結 +果を失わないように普段よりもちょっと多い目に保存コマンドを実行する方がよいで +しょう。 + +メモリ上ではファイルの内容は暗号化されません。マシンのメモリ内容を見る権限が +あれば、誰でもファイルの内容を知ることは可能です。viminfoファイルを使ってい +るのであれば、テキストレジスタの内容も暗号化されずに書き込まれる点にご注意く +ださい。 +もし本気でファイル内容をガードしたいのなら、ネットワークから切り離したマシン +で編集作業を行い、もっと強力な暗号化ツールで暗号化して、そのマシンを使わない +時は金庫に入れて保管してください。 + +============================================================================== +*23.4* バイナリファイル + +Vimではバイナリファイルを編集することもできます。それ専用に作られているわけで +はないので、若干の制限があります。それでもファイルを読み込み、バイトシーケンス +を変更し、結果を保存することはできます。ただしバイナリファイルの編集では1バイ +トを変更しただけでも、ファイルとしての意味が全く別のものになってしまう場合があ +ります。 +Vimが変に気をきかさないようにするためには、vimを"-b"パラメタ付きで起動します。 +> + vim -b datafile + +これは'binary'オプションをonにします。その結果、予期しないような副作用が起こ +らないようにしてくれます。例えば、'textwidth'を0に初期化します。これは行桁 +数を自動的に揃えるのを避けるのに必要です。ファイルは常にUnix形式で読み込みま +れます。 + +バイナリモードはプログラム内のメッセージを変更する時などに使えます。文字数を +増やしたり減らしたりしないように気を付けてください。そうでないとプログラムが +動かなくなってしまうかもしれません。"R"の置換モードを使うのがよいでしょう。 + +ファイル内の文字の多くが非表示文字となっているでしょう。これを16進数で見るに +は、このようにします。 > + + :set display=uhex + +この他に、調べたい文字にカーソルを移動し"ga"コマンドを使うことで、その値を知 +る方法もあります。例えば、カーソルが<Esc>の上にあれば、次のような表示となり +ます。 + + <^[> 27, Hex 1b, Octal 033 ~ + +ファイルに多くの改行コードを含んでいるかも知れません。概略を見たいのなら、 +'wrap'オプションをoffにします。 > + + :set nowrap + + +バイト位置 +---------- + +今現在、ファイルの何バイト目にいるかを知るには、このコマンドを使います。 > + + g CTRL-G + +出力はやや長くなります。 + + Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~ + +最後の2つの数字がファイル中のバイト位置と、全バイト数です。例えばです、 +'fileformat'の設定で、どのように改行の数が変化してしまうかを数値で見ることが +できます。 +ファイルの特定のバイト位置に移動するには"go"コマンドを使います。例えば、2345 +バイト目にジャンプしたければ、このようにします。 > + + 2345go + + +XXDを使う +--------- + +本物のバイナリエディタでは内容を2通りで表示してくれます。1つは文字そのもの +で、もう1つは16進数表記です。vimでも標準添付の"xxd"プログラムを使ってファイ +ルを変換すれば、同じことができます。 +まず、ファイルをバイナリモードで開きます。 > + + vim -b datafile + +次にxxdを使って16進数ダンプ形式のファイルにします。 > + + :%!xxd + +ファイル内容は次のようになります。 + + 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ + 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ + 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ + +これで、ファイルを好きなように編集することができます。vimはこれを普通のテキ +ストと同じように扱います。16進数部分を変更しても右側の文字表示は変りませんし +その逆も同様です。 +> + :%!xxd -r + +xxdは16進数の部分だけに着目して処理を行います。右側の文字表示部分を変更して +も無視します。 + +See the manual page of xxd for more information. +さらに詳しいことについては"xxd"のマニュアル(man pages)をご覧ください。 + +============================================================================== +*23.5* 圧縮済ファイル + +これは簡単です。圧縮してあるファイルであっても他のファイルと全く同じように編 +集できます。ファイルを編集する時に、"gzip"プラグインが解凍の面倒を見てくれま +す。また保存する時はその逆をやってくれます。 +現バージョンでサポートしている圧縮形式は次の通りです。 + + .Z compress + .gz gzip + .bz2 bzip2 + +実際の圧縮/解凍作業には上に掲げたプログラムを使います。形式によっては最初に +プログラムをインストールする必要があるかもしれません。 + +============================================================================== + +Next chapter: |usr_24.txt| 素早く挿入する + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_24.jax b/ja/usr_24.jax new file mode 100644 index 000000000..eacfcad7a --- /dev/null +++ b/ja/usr_24.jax @@ -0,0 +1,589 @@ +COMMENT: 少ないキータイプ数で入力する方法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_24.txt* For Vim version 6.3. Last change: 2003 Aug 18 + + VIM USER MANUAL - by Bram Moolenaar + + 素早く挿入する + + +テキストを入力する時、キーを押す回数を減らし入力ミスを防ぐために、いろいろな +方法を提供しています。挿入モードで前回に入力した文字列を繰り返してくれる補完 +機能があります。長い文字列を短縮形で入力することもできます。キーボード上にな +いような文字を入力する方法もあります。 + +|24.1| 修正を行う +|24.2| 一致するものを表示する +|24.3| 補完 +|24.4| 挿入を繰り返す +|24.5| 他の行をコピーする +|24.6| レジスタ内容を挿入する +|24.7| 短縮形 +|24.8| 特殊な文字を入力する +|24.9| ダイグラフ(二重字) +|24.10| 通常モードのコマンド + + Next chapter: |usr_25.txt| フォーマット付きテキストを編集する + Previous chapter: |usr_23.txt| 他の種類のファイルを編集する +Table of contents: |usr_toc.txt| + +============================================================================== +*24.1* 修正を行う + +<BS>キーについては既に説明しました。これはカーソルの直前の文字を削除します。 +<Del>キーはカーソル下の(次の)文字について同じことを行います。 +入力した単語をまるごと削除するのであれば、CTRL-Wを使います。 + + The horse had fallen to the sky ~ + CTRL-W + The horse had fallen to the ~ + +行全体がグチャグチャになってしまって、行頭から全部を消すのなら、CTRL-Uを使い +ます。ただしカーソルの後ろにある文字列は消えません。行頭の非空白文示からカー +ソル位置までの文字だけが削除されます。カーソルが"fallen"の"f"にある時にCTRL-U +を押すと、このようになります。 + + The horse had fallen to the ~ + CTRL-U + fallen to the ~ + +いくつか前に入力した単語に誤りがあった場合、カーソルを動かして修正する必要が +あります。例えば、このような文があるとします。 + + The horse had follen to the ground ~ + +途中にある"follen"を"fallen"に直す必要があります。カーソルが行末にある場合、 +次のようにして修正ができます。 > + + <Esc>4blraA + +< 挿入モードを抜ける <Esc> + 4単語分戻る 4b + 最初の"o"に移動する l + "a"に置換する ra + 行末に移動して挿入モードを再開 A + +他にもこういった方法があります。 > + + <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End> + +< 4単語文戻る。 <C-Left><C-Left><C-Left><C-Left> + 最初の"o"に移動する <Right> + "o"を削除する <Del> + "a"を挿入する a + 行末に移動する <End> + +この場合は挿入モードのままで移動に特殊キーを使ます。これは普通のモードレスの +エディタと似ています。こちらの方が覚えやすいでしょうが、速くは入力できません。 +これは手を文字キーからカーソルキーや<End>キーのように、キーボードを見ないと +押せないような場所にあるキーを押す必要があるからです。 +特殊キーを使うと挿入モードから抜ける必要がないので、マップを書く時にとても便 +利です。ここでは打鍵数が増えることには触れないことにします。 +挿入モードで使える特殊キーの概要を次に示します。 + + <C-Home> ファイルの先頭に移動 + <PageUp> 1画面分、逆スクロール + <Home> 業頭 + <S-Left> 1単語左へ移動 + <C-Left> 1単語左へ移動 + <S-Right> 1単語右へ移動 + <C-Right> 1単語右へ移動 + <End> 行末へ移動 + <PageDown> 1画面分、スクロール + <C-End> ファイルの末尾に移動 + +さらなる情報が必要であれば、|ins-special-special|をご覧ください。 + +============================================================================== +*24.2* 呼応したものの表示 + +")"を入力した時に呼応する"("の場所にカーソルが動くと便利でしょう。vimでこれ +をやるには次のコマンドを入力します。 > + + :set showmatch +"(example)"といった文字列を入力した時、")"を入力した瞬間にカーソルを対応する +カッコ"("まで動かし、0.5秒間そこにいてから、元の入力位置に戻ります。 +呼応するカッコがない場合は警告音で知らせます。こういう時は"("をどこかで入力 +し忘れたか、")"が多すぎるかのどちらかだということがわかります。 +このような呼応のチェックは[ ]や{ }の組み合せでも動きます。カーソルが呼応する +カッコにある時でも次の文字を入力して構いません。その場合はすぐにカーソルが元 +の場所に戻って挿入処理を始めてくれます。 +呼応するカッコでの待ち時間は'matchtime'オプションで設定できます。例えば、次 +の例では1.5秒待つようになります。 > + + :set matchtime=15 + +時間は1/10秒単位で指定します。 + +============================================================================== +*24.3* 補完 + +vimは自動的に挿入時に補完を行います。単語の最初の部分を入力し、CTRL-Pを入力 +します。するとvimは残りを補ないます。 +例えば、Cプログラムを作っていて、次のように入力したいとします。 + + total = ch_array[0] + ch_array[1] + ch_array[2]; ~ + +まずこのように入力を行います。 + + total = ch_array[0] + ch_ ~ + +ここで、vimに単語の補完をさせるためにCTRL-Pコマンドを入力します。vimはカー +ソル位置にある単語の最初の部分と一致する単語を探そうとします。この場合なら、 +"ch_"がそうです。これに合致するパターンとして"ch_array"があります。ですか +ら、CTRL-Pを押すことで次のような結果となります。 + + total = ch_array[0] + ch_array ~ + +さらにちょっと入力をおこなって、こうなりました。(行末は空白文字です) + + total = ch_array[0] + ch_array[1] + ~ + +さて、ここでCTRL-Pを押すとvimは先ほどと同じようにカーソル位置にある単語と一 +致する単語を探そうとします。しかしカーソル位置には何も入力されていませんので +直前の単語、つまり"ch_array"を見つけます。もう一度CTRL-Pを押すと、さらに一つ +前の単語、つまり"total"を見つけます。さらにCTRL-Pを押すともう一つ前に逆登り +ます。それ以上単語がなくなると、最初の状態に戻ります。つまり何もしないわけ +です。CTRL-Pを4回押すと、また"ch_array"から始めます。 + +前方検索する場合はCTRL-Nを使います。ファイルの末尾まで(もしくは先頭)までたど +り着くと、ファイルの先頭(もしくは末尾)から処理を続けますので、CTRL-NとCTRL-P +は順序は違いますが、同じ単語を見つけることになります。 +Hint: CTRL-Nは次(Next)の意味で、CTRL-Pは直前(Previous)の意味です。 + +vimは補完できる単語を見つけるのに多大な努力を通過します。 +smz 意味不明(笑) なんでgo throughなの?結局、努力するの?しないの? +デフォルトでは、次の場所を探します。 + + 1. 編集中のファイル + 2. 他のウィンドウのファイル + 3. 他のロード済ファイル(隠しバッファ) + 4. ロードしていないファイル(非アクティブバッファ) + 5. タグファイル + 6. 現在のファイルから#include しているファイル + + +オプション +---------- + +検索する順序については'complete'オプションでカスタマイズできます。 + +また検索時には'ignorecase'オプションも使います。これがonの時は、検索する文字 +列の大文字小文字は無視します。 + +補完で使う特別オプションに'infercase'があります。これは大文字小文字を無視す +る('ignorecase'がonであるのが条件)が、その単語を実際に引用する時には入力済の +部分はそちらを使います。つまり、"For"と入力した時、"fortunately"が見つかった +とすると、その結果は"Fortunately"となるわけです。 + + +特定タイプの補完 +---------------- + +ある特定のタイプの項目を探している場合には、次のようなコマンドでそのタイプだ +けを検索することができます。 + + CTRL-X CTRL-F ファイル名 + CTRL-X CTRL-L 行全体 + CTRL-X CTRL-D マクロ定義(インクルードファイルの中も探す) + CTRL-X CTRL-I 現在のファイルとインクルードファイル + CTRL-X CTRL-K 辞書の単語 + CTRL-X CTRL-T 同義語辞書(シソーラス)の単語 + CTRL-X CTRL-] タグ + CTRL-X CTRL-V vimのコマンド行 + +上記のいずれかの指定の後でCTRL-Nを押すと次の一致項目を探し、CTRL-Pで1つ前の +項目を探します。 +各コマンドの詳しい説明は|ins-completion|をご覧ください。 + + +ファイル名の補完 +----------------- + +例としてCTRL-X CTRL-Fを取り上げましょう。これはファイル名を探すコマンドです。 +カレントディレクトリのファイルを検索し、カーソル位置の単語にヒットする単語を +順に表示します。 +例えば、カレントディレクトリにこのようなファイル群があるとしましょう。 + + main.c sub_count.c sub_done.c sub_exit.c + +vimを挿入モードにして、次のように入力します。 + + The exit code is in the file sub ~ + +ここでCTRL-X CTRL-Fを入力します。vimはカーソル位置の単語"sub"を補完しようと +して、カレントディレクトリにあるファイルを見ます。最初に見つかったのは、 +"sub_count.c"です。これは望みのファイルではなかったので、次のファイル名を表 +示させるために、CTRL-Nを押します。ここでヒットしたのは"sub_done.c"です。もう +一度CTRL-Nを押すと、"sub_exit.c"が出てきます。 +結局、次のような表示となります。 + + The exit code is in the file sub_exit.c ~ + +もしファイル名の先頭が"/"(Unix)やC:\(DOSやMS-Windows)の場合は、そのファイル +システムの全ファイルが対象となります。例えば、"/u"と入力した後で、CTRL-X +CTRL-F を入力します。これは例えば"/usr"(Unixの場合)にヒットするでしょう。 + + the file is found in /usr/ ~ + +もし、ここでCTRL-Nを押すと"/u"に戻ることでしょう。そうではなく"/usr/"を受け +入れた上で、さらに1つ深い階層でCTRL-X CTRL-Fを使うこともできます。 + + the file is found in /usr/X11R6/ ~ + +この結果はご利用のファイルシステムで何が見つかったかによって変わってきます。 +なお、ヒットした結果はアルファベット順にソートされます。 + +============================================================================== +*24.4* 挿入を繰り返す + +挿入モードでCTRL-Aを押すと、前回の挿入モードの時に入力した内容を挿入します。 +例えば、次のような内容で始まるファイルがあるとします。 + + "file.h" ~ + /* Main program begins */ ~ + +このファイルの1行目の行頭に"#include "という文字列を追加するように編集しま +す。 + + #include "file.h" ~ + /* Main program begins */ ~ + +ここで"j^"コマンドで次の行の行頭にカーソルを動かします。ここにもうひとつ +"#include "の行を追加しましょう。このようにします。 > + + i CTRL-A + +この結果はこうなります。 + + #include "file.h" ~ + #include /* Main program begins */ ~ + +上で述べたようにCTRL-Aは前回に入力した内容を挿入してくれますので、"#include " +が表示されます。ここで続けて"main.h<Enter>"と入力して行を完成させます。 + + #include "file.h" ~ + #include "main.h" ~ + /* Main program begins */ ~ + +CTRL-@ コマンドを使うと、CTRL-Aを実行してから挿入モードを抜けます。これは前 +回と全く同じことを繰り返したい時には便利な方法です + +============================================================================== +*24.5* 他の行からコピーする + +挿入モードでCTRL-Yを押すと、カーソルの直前の行から1文字複写します。これは直 +前の行内容をコピーしたい時に便利です。例えば、次のようなCコードがあるとしま +す。 + + b_array[i]->s_next = a_array[i]->s_next; ~ + +次にこの行の"s_next"を"s_prev"に置き換えた行を入力したいとします。まず新しい +行を開いて"next"の"n"の直前まで、CTRL-Yを14回押します。 +このように表示されているはずです。 + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_ ~ + +ここで"prev"と入力します。 + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_prev ~ + +続けて、次の"next"まで17回CTRL-Yを押します。 + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_prev = a_array[i]->s_ ~ + +ここで"prev;"と入力すれば、行が完成です。 + +CTRL-Yと似たコマンドにCTRL-Eがあります。こちらはカーソルの直後の行内容を複写 +してくれます。 + +============================================================================== +*24.6* レジスタ内容の挿入 + +CTRL-R {register}コマンドはレジスタの内容を挿入します。長い単語を入力する手間 +を省きたい時に便利です。例えば、次の行を入力したいとします。 + + r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~ + +関数名は違ったファイルで定義しています。そのファイルを開いてカーソルを関数名 +の先頭に合せて次のコマンドでレジスタvにヤンクします。 > + + "vyiw + +"vはレジスタの指定、"yiw"は現在位置の単語をヤンクするコマンドです。さて、目 +的の行を入力したいファイルに戻り、挿入モードを開始して次のように打ちます。 + + ir = ~ + +挿入モードのままで CTRL-R v を入力すると上でヤンクした関数名が挿入されます。 + + r = VeryLongFunction ~ + +こうして、関数のパラメタや関数名を入力し続けます。関数名の入力はCTRL-R vで行 +います。 +同じことを補完を使ってもできます。レジスタの利用は同じ文字で始まる単語がたく +さんある時に便利です。 + +もしレジスタ内に<BS>といった特殊な文字を含んでいる場合は、実際にその文示を +キーボードから入力されたかのうように処理します。そうなることを望まない場合、 +(例えば、"<BS>"という4文字を入力したい場合)はCTRL-R CTRL-R {register}と指定 +します。 + +============================================================================== +*24.7* 短縮形(abbreviation) + +短縮形(abbreviation)とは長い単語を置き換える短い単語のことです。"advertisement" +を例えば、"ad"と略したりするわけです。vimではこのような短縮形を入力して、そ +れを自動的に展開することができます。 +"ad"を入力する都度、それを"advertisement"に展開して欲しければ、次のコマンド +を実行します。 > + + :iabbrev ad advertisement + +これで、"ad"と入力すると、完全形の"advertisement"を文章中に挿入してくれます。 +この機能は単語の区切りとなるような文字、例えば空白文字を入力した時にだけ実行 +されます。 + + 入力した文字 画面上での見え方 + I saw the a I saw the a ~ + I saw the ad I saw the ad ~ + I saw the ad<Space> I saw the advertisement<Space> ~ + +この展開は"ad"を入力すると同時に行われるわけではありません。これは例えば、 +"add"のような単語を入力する時に展開させないためです。単語全体が入力された時 +に短縮形のチェックを行います。 + + +複数の単語の短縮形 +------------------ + +展開後に複数の単語となるような短縮形でも定義できます。例えば、"Jack Benny"の +短縮形を"JB"と定義するには、次のようなコマンドを使います。 > + + :iabbrev JB Jack Benny + +プログラマとして、私(Bram氏のこと)はちょっと変った短縮形を使っています。 > + + :iabbrev #b /**************************************** + :iabbrev #e <Space>****************************************/ + +これはコメントを四角い形にする時に使っています。最初の行を入力する時に"#b"を +使って、コメントを開始します。続けて、コメント本体を入力し最後に"#e"で最終行 +を作ります。 +短縮形"#e"の展開結果が空白文字で始まっている点に気を付けてください。言い代え +ると、展開結果の最初の2文字は「空白+"*"」です。普通はvimは短縮形と展開結果 +の間にある空白を無視します。上の例ではわざと"<Space>"と7文字で書いて、そう +ならないようにしています。 + + Note: + ":iabbrev"は入力するには長いので、":iab"でもうまく動きます。 + これは短縮コマンドの短縮形というわけですね! + + +入力ミスを直す +-------------- + +毎回、同じような入力ミスをしてしまうことってありますよね。例えば、"the"と入 +力するところを"teh"としてしまうとか。これを短縮形を使って直してしまうことが +できます。 > + + :abbreviate teh the + +こういった単語を全部追加してもいいです。よくやる間違いを見つけたらその都度 +その単語を追加しましょう。 + + +短縮形の一覧リスト +------------------ + +":abbreviate"コマンドで短縮形の一覧を表示してくれます。 + + :abbreviate + i #e ****************************************/ + i #b /**************************************** + i JB Jack Benny + i ad advertisement + ! teh the + +1桁目の"i"は挿入モード用の意味です。こういった短縮形は挿入モードの時だけ有 +効となります。他に使われる文字にはこのようなものがあります。 + + c Command-line mode :cabbrev + ! both Insert and Command-line mode :abbreviate + +コマンド行モードでは短縮形はそれほど使うことはありませんので、多くの場合は +"iabbrev"コマンドを使うことになるでしょう。このコマンドなら、次のようなコマ +ンドの場合に"ad"が展開されるのとを防ぐことができます。 > + + :edit ad + + +短縮形の削除 +------------ + +短縮形を取り除くには":unabbreviate"コマンドを使います。次のような短縮形を登 +録してあるとしましょう。 > + + :abbreviate @f fresh + +これを削除するにはこのコマンドを使います。 > + + :unabbreviate @f + +これを入力すると、@fが"fresh"に展開されてしまうのに気付くでしょう。これにつ +いては心配いりません。vimはどうにかしてそれを解ってくれます。(ただし、"fresh" +という短縮形が定義されている場合は例外です。そうあることではないでしょうが) +全部の短縮形を削除するにはこうします。 > + + :abclear + +":unabbreviate"と":abclear"にも、挿入モード用(":iunabbreviate"と":iabclear") +とコマンド行モード用(":cunabbreviate"と":cabclear")のバリエーションがありま +す。 + + +短縮形をマップする +------------------ + +短縮形を定義する時に注意すべき点がもう一つあります。登録された文字列をマップ +するべきではありません。例をあげましょう。 > + + :abbreviate @a adder + :imap dd disk-door + +ここで"@a"を入力すると、"adisk-doorer"になってしまいます。これは望んでいた結 +果ではないでしょう。これを避けるには、":noreabbrev"コマンドを使います。これ +は":abbreviate"と同じですが、展開した結果はマップの対象となりません。 > + + :noreabbrev @a adder + +これなら、短縮形の結果がマップされるようなことは起こらなくなります。 + +============================================================================== +*24.8* 特殊な文字を入力する + +CTRL-Vコマンドを使うと、その次に入力した文字をそのまま挿入できます。言い換え +ると、どんな特別な意味を持つキーであっても、その意味が無視されます。例えば、 +こうすると > + + CTRL-V <Esc> +< +<ESC>文字自身が挿入されるだけで、挿入モードからは抜けません。(上の例もそうで +すが、CTRL-Vの後にある空白は見やすくするためのもので、入力するものではありま +せん) + + Note: + MS-WindowsではCTRL-Vはテキストのペーストに使っています。CTRL-Qをその + 代わりに使ってください。Unixでは逆に一部の端末ではCTRL-Qに特別な意味 + づけをしているために使えません。 + +また、CTRL-V {digits} コマンドを使うと、文字コードを10進数で指定してその文字 +を挿入することができます。例えば、文字コード127は<Del>文字(必ずしも<Del>キー +とは限りませんよ)です。で、この文字を挿入するには次のように入力します。 > + + CTRL-V 127 + +同じやりかたで文字コード255までの文字を入力できます。文字コードが99以下の場 +合は、続けて数字以外の文字を入力すれば、それでコマンドは数値を認識できます。 +数字以外の文字を入力するのを避けたいのであれば、数値が3桁となるように1桁か +2桁の"0"を入力してください。 +次のコマンドはいずれも<Tab>と"."を挿入します。 + + CTRL-V 9. + CTRL-V 09. + CTRL-V 009. + +文字コードを16進数で指定もできます。その場合はCTRL-Vの直後に"x"を使います。 +> + CTRL-V x7f + +この場合もコード255の文字(CTRL-V xff)まで使えます。また、"o"で8進数の指定が +できます。この他にも"u"と"U"でそれぞれ16ビットと32ビットの文字コード(例えば +Unicodeの文字)が指定できます。 + + CTRL-V o123 + CTRL-V u1234 + CTRL-V U12345678 + +============================================================================== +*24.9* ダイグラフ(二重字) + +JP: 二重字というのは、例えば、"ae"がひっついたような記号が発音記号に使われて +JP: いるアレです。この節の記述はラテン語圏(例えばISO-8859-1)での8ビット文字 +JP: の使い方の説明で、ほとんどの日本語環境で意味がないと思います。 + +一部の文字はキーボード上にありません。例えば、コピーライトに使う文字(丸付き +の"c")がそうです。こういった文字をvimで扱うには2文字を1文字にしたダイグラ +フを使います。例えば、コピーライトの文字を出すには次のように入力します。 + + CTRL-K Co + +JP: このコマンドを使っても日本語環境ではいわゆる半角カナのウが表示されるだけ +JP: です。どうしても見たい方はvimの表示フォントを欧文フォントに変更してくだ +JP: さい。その場合は当然ですが、日本語は表示されません。あしからず。 + +使えるダイグラフを知りたければ、次のコマンドを入力してください。 > + + :digraphs + +ダイグラフの一覧表を表示します。(表及びその説明は省略) + + AC ~_ 159 NS | 160 !I ¡ 161 Ct ¢ 162 Pd £ 163 Cu ¤ 164 Ye ¥ 165 ~ + BB ¦ 166 SE § 167 ': ¨ 168 Co © 169 -a ª 170 << « 171 NO ¬ 172 ~ + -- ­ 173 Rg ® 174 'm ¯ 175 DG ° 176 +- ± 177 2S ² 178 3S ³ 179 ~ + +ポンド記号のダイグラフは"Pd"です。ほとんどのダイグラフは生成される文字から想 +像しやすい文字を選んであります。リストをご覧になれば、どういうルールか解って +いただけるでしょう。 +どのダイグラフもその組み合せを使っていなければ、1文字目と2文字目を入れ換え +ても構いません。ですからCTRL-K dPもポンド記号の意味になります。これは"dP"と +いうダイグラフはなく、"Pd"ダイグラフを探し当てるためです。 + + Note: + ダイグラフはvimが使用中と認識しているキャラクタセットに依存していま + す。MS-DOSのそれはMS-Windowsのとは違うでしょう。その時点でどのダイグ + ラフが有効かは":digraphs"コマンドで確認するようにしてください。 + +独自のダイグラフを定義することもできます。例えばこのようにします。 > + + :digraph a" ä + +これはCTRL-K a" を入力した時にaウムラウトとなる定義です。文字コードを10 +進数で指定することもできます。この指定は上での指定と同じことです。 > + + :digraph a" 228 + +ダイグラフについてより詳しいことは|digraphs|をご覧ください。 +他にもキーマップを使って特殊な文字を挿入することができます。詳しくは|45.5| +をご覧ください。 + +============================================================================== +*24.10* 通常モードのコマンド + +挿入モードで提供しているコマンドはそれほど多くはありません。通常モードに +はもっといろいろあります。通常コマンドを使いたければ、普通は一度<Esc>で挿 +入モードを抜けて、通常モードのコマンドを実行し、また"i"や"a"で挿入モード +に戻るという手順が必要です。 +ですが、もっと簡単な方法があります。CTRL-O {command}であれば、通常モード +のコマンドを挿入モードで実行できます。例えば、カーソル位置から行末までを +削除するには次のようにします。 > + + CTRL-O D + +この方法で実行できるのは1つのコマンドだけです。カウンタによる回数指定は +可能です。これはもう少し複雑な例です。 + + CTRL-O "g3dw + +これは3つの単語を削除してレジスタGに格納します。 + +============================================================================== + +Next chapter: |usr_25.txt| フォーマット付きテキストを編集する + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_25.jax b/ja/usr_25.jax new file mode 100644 index 000000000..1ff0248fa --- /dev/null +++ b/ja/usr_25.jax @@ -0,0 +1,592 @@ +COMMENT: 整形されたテキストの扱い(折返し、配置、インデント、表) +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_25.txt* For Vim version 6.3. Last change: 2003 Jun 21 + + VIM USER MANUAL - by Bram Moolenaar + + フォーマット付きテキストを編集する + + +文章が1行1文になっていることなどほとんどありません。この章ではページなどの +書式に合うように文を分割する方法について述べます。 +vimには1行の段落や表を編集する便利な機能もあります。 + +|25.1| 行を分割する +|25.2| テキストを揃える +|25.3| インデントとタブ +|25.4| 長い行の分割 +|25.5| 表の編集 + + Next chapter: |usr_26.txt| 繰り返し + Previous chapter: |usr_24.txt| 挿入を素早く行う +Table of contents: |usr_toc.txt| + +============================================================================== +*25.1* 行を分割する + +vimには文章をより簡単に分割するための機能がたくさんあります。デフォルトでは、 +自動的に改行することはありません。つまり、利用者が自分で<Enter>を押す必要が +あります。プログラムを作る時には、行末を自分で決められるこのやり方が使いやす +いでしょう。でも1行が最大70桁にしたい文書を作る時にはあまり良い方法ではあり +ません。 +'textwidth'オプションを設定すると、vimが自動的に改行を挿入してくれます。例え +ば、1行30桁以内のとても巾の狭いコラムを書きたい場合を考えてみましょう。その +場合はこのようなコマンドを実行します。 > + + :set textwidth=30 + +で、普通に入力を行います。(上の数字は桁数です) + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a whi ~ + +ここで、次に"l"を入力すると、1行が30桁の制限を越えますので、vimはこれに気付 +いて、改行を挿入します。その結果、このようになります。 + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + whil ~ + +さて、続けましょう。同様に残りのパラグラフを入力します。 + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ + +自分で改行を入力する必要はありんせん。vimが自動的にそれを置いてくれます。 + + Note: + 'wrap'オプションだと、行を改行して表示してくれます。でもこれはファイ + ルに改行文字を挿入するわけではありません。 + + +再桁揃え +-------- + +vimはワープロではありません。ワープロならば、段落の最初で何か削除すると、改 +行位置を再設定してくれます。vimはそうではありません。ですから、最初の行で +"programming"を削除するとその行だけが短かくなってしまいます。 + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ + +これではうまくありません。パラグラフの形を整えるには"gq"オペレータを使いま +す。 +まず、ビジュアルモードでこれを行ってみましょう。最初の行で次のように入力しま +す。 > + + v4jgq + +"v"はビジュアルモードの開始、"4j"でパラグラフの最後までを範囲とし、"gq"オペ +レータを実行します。この実行結果はこうなります。 + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + +Note: 自動的にフォーマットすることもできます。|auto-format|を見てください。 + +"gq"はオペレータですので、適用対象の範囲を選ぶのに3つの方法が使えます。 +ビジュアルモード、カーソルモーション、テキストオブジェクトの3つです。 +上の例なら"gq4j"でも同じことができます。これだと打鍵数は少ないですが、行数が +わかっていないといけません。"}"という便利なモーションコマンドがあります。こ +のコマンドは段落の最後までカーソルを移動します。 +"gq"でとても便利に使えるテキストオブジェクトがあります。これをやってみてくだ +さい。 > + + gqap + +"ap"はテキストオブジェクトで"a paragraph"の意味です。これは(空行で区切られた) +1つの段落のフォーマットを整えます。 +段落を空行で区切ってあれば、こうすれば、ファイル全体のフォーマットを整えるこ +とができます。 > + + gggqG + +"gg"はファイルの1行目に移動し、"gqG"は最後の行までのフォーマットを整えます。 +Warning: 段落がちゃんと区切られていないと、1つにつながってしまいます。よく +あるのは、空白やTABのみの行を作ってしまう場合です。これは空白行ですが、空行 +ではありません。 + +vimはプレインテキストを越えたフォーマット設定ができます。この変更のやり方は +|fo-table|をご覧ください。全停止した後ろの空白の数を変える方法については、 +'joinspaces'オプションの説明をご覧ください。 +フォーマットを整えるのに外部コマンドを使うのも可能です。vimの組み込みコマン +ドでは正しくフォーマットが整えられない場合に便利です。'formatprg'オプション +をご覧ください。 + +============================================================================== +*25.2* 文章の右寄せ、左寄せ + +ある範囲の行をセンタリングするには、このコマンドを使います。 > + + :{range}center [width] + +{range}は通常はコマンド行で指定した範囲です。[width] はオプションパラメタで +センタリングする行の桁数を指定できます。[width]が指定されていない場合は、デ +フォルト値として'textwidth'の値を用います。(もし'textwidth'が0なら、80とみな +します。例えば、次のように使います。 > + + :1,5center 40 + +この結果はこうなります。 + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + + +右寄せ +------ + +同じように右寄せするには":right"コマンドを使います。 > + + :1,5right 37 + +結果はこの通り。 + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + +左寄せ +------ + +最後はこのコマンドです。 + + :{range}left [margin] + +":center"や":right"と違うのは、":left"で指定するパラメタが行の長さではないと +いう点です。ここでの値は左マージンとなります。省略した場合は、文章は画面の左 +端に寄せることになります(つまりマージン値が0の時と同じです)これが5の場合 +は、文章は左端から5桁分のインデントが付きます。例えば、このようなコマンドを +実行してみます。 > + + :1left 5 + :2,5left + +この結果はこのようになります。 + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + + +文章の両方揃え +-------------- + +vimにはテキストを両揃えにする機能は組み込まれていません。とはいっても、それを +行ってくれる素晴らしいマクロパッケージがあります。このパッケージを使うには、 +次のコマンドを実行します。 > + + :runtime macros/justify.vim + +このvimスクリプトファイルでは新たなビジュアルコマンド"_j"を定義しています。 +このコマンドでブロックを指定するには、まずビジュアルモードで範囲を選択して +"_j"コマンドを実行します。 +より詳しい説明についてはファイルの内容をご覧ください。これは次の行で"gf"コ +マンドでジャンプしてください。 + +もう一つは外部プログラムてフィルタを通す方法です。こんな具合です。 > + + :%!fmt + +============================================================================== +*25.3* インデント(段付け)とタブ + +文章を他の部分より目立たせるのにインデントを使えます。例えば、このマニュアル +では例題の部分を空白8つか<Tab>でインデントしています。普通に各行で<Tab>キーを押 +して、入力しても構いません。次の文章を使いましょう。 + + the first line ~ + the second line ~ + +上の例は<Tab>を押してから文章を入力し、<Enter>、また<Tab>を押して文章を入力 +しています。'autoindent'オプションを使うと、自動的にインデントを補ってくれま +す。 > + + :set autoindent + +新しい行を入力しようとすると、その直前の行と同じ桁数のインデントを行います。 +上の例なら、<Enter>を押した後の<Tab>は入力する必要がありません。 + + +インデントを増やす +------------------ + +ある行のインデント量を増やすには">"オペレータを使います。よく使うのは">>"で +す。これは現在行のインデントを増やします。 +このコマンドで増えるインデント量は'shiftwidth'オプションで指定できます。この +デフォルト値は8です。">>"で増やすインデント量を例えば、空白4つにするには、 +このようにします。 > + + :set shiftwidth=4 + +上で示した例題の2行目で">>"を使うと、このような結果となります。 + + the first line ~ + the second line ~ + +なお、"4>>"は現在行から4行分のインデント量を増やす命令です。 + + +TABSTOP +------- + +インデントを4桁毎にインデントを設定したい場合には'shiftwidth'を4に設定しま +す。しかしこれだと<Tab>を押した時には8桁のインデントのままです。これを変更 +するには、'softtabstop'オプションを設定します。 > + + :set softtabstop=4 + +これは<Tab>キーを押すとインデント巾として空白を4つ挿入します。既に空白が4 +つある場合には、<Tab>文字に置き換えます。(ファイル上で7つ分の空白文示の領域 +を節約できます) +なお、常に空白文字を使い<Tab>文字を使わせたくない場合は'expandtab'オプション +を使います。 + + Note: + 'tabstop'オプションは4に設定できます。でも、他の時に'tabstop'の値を + デフォルト(=8)のままで再編集すると、正しく表示されないでしょう。また + 他のアプリケーションで編集する時やプリンタに印刷する時もうまくいかな + いでしょう。ですから'tabstop'の値は常にデフォルトの8のままにしておく + のが良いでしょう。8というのはどこに行っても通じる値ですから。 + + +TABを変更する +------------- + +TABが3であることを前提に書かれたファイルを編集すると、vimでは見苦しく表示さ +れます。普通はTABが8だからです。'tabstop'を3に設定すれば、表示は直ります。 +ですがこのファイルを編集する都度、この設定を行わなければなりません。vimでは +そのファイルのTABの数を変更できます。最初に'tabstop'を正しく見えるように設定 +し、次に":retab"コマンドを使います。 > + + :set tabstop=3 + :retab 8 + +":retab"コマンドは'tabstop'を8に変更し、それでも表示が同じになるように文章 +を変更します。これは連続する空白を<Tab>と空白記号に置き換えます。 その後で +ファイルの書き込みを行えば、以降はオプション設定を行わなくても正しくインデン +トされた状態で編集ができます。 +Warning: プログラムソースに対して":retab"を使うと、文字列定数の中にある空白 +記号が変更されてしまうかもしれません。ですから、文字列中では<TAB>を使わず、 +"\t"を使うようにした方が良いでしょう。 + +============================================================================== +*25.4* 長い行の分割 + +ウィンドウの横巾よりも長い行があるようなファイルを編集する場合には、その内容 +が画面に納まるように、長い行を途中で折り曲げて表示します。 +'wrap'オプションをoffにすると、ファイル中の各行は画面上でも1行に表示されま +す。ですから長い行の行末は画面のずっと右側にあって表示されなくなります。 +カーソルを表示されていない部分に動かそうとすると、vimはその部分を表示できる +ように画面をスクロールします。言ってみれば、文章を見る覗き窓が水平方向に移動 +するイメージです。 +デフォルトでは、GUI版のvimでは水平スクロールバーは表示しません。もし使いたけ +れば、このコマンドを使います。 > + + :set guioptions+=b + +vimウィンドウの下に水平スクロールバーが表示されます。 + +もしスクロールバーがなかったり、使いたくない場合は、次に示すようなコマンドを +使って文章をスクロールします。カーソルは同じ場所のままですが、必要に応じて文 +字のある場所に動くことはあります。 + + zh 右にスクロール + 4zh 右に4文字分スクロール + zH 右にウィンドウ巾の半分だけスクロール + ze カーソルが右端に来るように右スクロール + zl 左にスクロール + 4zl 左に4文字分スクロール + zL 左にウィンドウ巾の半分だけスクロール + zs カーソルが左端に来るように左スクロール + +1行の文章を使ってこれを試してみましょう。最初にカーソルは"which"の"w"の場所 +にあります。上にある"current window"は現在見えている範囲を示しています。その +下にある"window"の行は左に書いてあるコマンドを実行した後に見える範囲を示して +います。 + + |<-- current window -->| + some long text, part of which is visible in the window ~ + ze |<-- window -->| + zH |<-- window -->| + 4zh |<-- window -->| + zh |<-- window -->| + zl |<-- window -->| + 4zl |<-- window -->| + zL |<-- window -->| + zs |<-- window -->| + + +ラップしない場合の移動 +---------------------- + +'wrap'オプションがoffで水平スクロールされた状態の場合、画面に見えている範囲 +でカーソルを動かすコマンドを次に示します。つまり、画面の左右にあるはずの文は +無視します。言い換れば、以下のコマンド群はスクロールをしないということです。 + + g0 その行の右端の文字まで移動 + g^ その行の右端(ただし空白文字類を除く)の文字まで移動 + gm その行の中央に移動 + g$ その行の左端に見えている文字まで移動 + + |<-- window -->| + some long text, part of which is visible ~ + g0 g^ gm g$ + + +単語の分割 *edit-no-break* +---------- + +他のアプリケーションで使えるようにするため、1つの段落が改行されないようにし +なければならないかもしれません。'wrap'をoffにした場合にはこのような行の全体 +を見通すことができないという欠点があります。'wrap'をonにすると各単語の途中で +も行分割してしまいますから、読みづらくなってしまいます。 +この種の段落を編集する時は、'linebreak'オプションを設定しておくのが良いでしょ +う。これを使うと行を表示する時に適切な箇所で改行をします。'linebreak'がoffの +状態ではこのような表示となります。 + + +---------------------------------+ + |letter generation program for a b| + |ank. They wanted to send out a s| + |pecial, personalized letter to th| + |eir richest 1000 customers. Unfo| + |rtunately for the programmer, he | + +---------------------------------+ +> + :set linebreak + +上の設定を行った後は、このようになります。 + + +---------------------------------+ + |letter generation program for a | + |bank. They wanted to send out a | + |special, personalized letter to | + |their richest 1000 customers. | + |Unfortunately for the programmer,| + +---------------------------------+ + +これ以外にも、次のような関連オプションがあります。 + 'breakat' 改行を挿入しても良い文字を指定します。 + 'showbreak' 行分割した行の先頭に表示する文字を指定します。 + 'textwidth' これを0に設定すると段落を分割しなくなります。 + + + +分割された行内の移動 +-------------------- + +"j"と"k"コマンドはカーソルを前後の行に移動します。つまり'wrap'がonの時に長い +行があると、1つの"j"や"k"で何行もの行を一度に動いてしまいます。 +画面上での1行だけカーソルを動かしたい時には"gj"と"gk"コマンドを使います。 +行分割されていない行では"j"や"k"と同じ動きとなります。行が分割されている時は +画面上で1つ下か上の行に移動します。 +この移動コマンドを矢印キーに割り当てたい場合には、このようなマップ定義を行う +ことができます。 > + + :map <Up> gk + :map <Down> gj + + +1つの段落を1行にまとめる +-------------------------- + +MS-Wordのようなプログラムに文章を送り込もうとすると、各段落は1行に繋いでお +くべきでしょう。段落を空白行で区切ってある文章なら、次のようにすれば、各段落 +を1つの行に変換できます。 > + + :g/./,/^$/join + +なんだか複雑そうですね。ではこれを分解してみましょう。 + + :g/./ 何でもよいから1文字以上の文字を含む行を探す":global" + コマンド + ,/^$/ 上で見つけた行(空行でない行)から空白行までの範囲を示 + す。 + join 上で定めた範囲に対してそれを1行に繋ぐ":join"コマンド + +次のような8つの改行があるような文章があるとします。 + + +----------------------------------+ + |A letter generation program | + |for a bank. They wanted to | + |send out a special, | + |personalized letter. | + | | + |To their richest 1000 | + |customers. Unfortunately for | + |the programmer, | + +----------------------------------+ + +これが次の2行にまとまります。 +You end up with two lines: + + +----------------------------------+ + |A letter generation program for a | + |bank. They wanted to send out a s| + |pecial, personalized letter. | + |To their richest 1000 customers. | + |Unfortunately for the programmer, | + +----------------------------------+ + +この指定は段落と段落の間に空白やTABを含むような空白行で区切ってあるとうまく +動きません。次のコマンドはそういった空白行でもうまく動きます。 +> + :g/\S/,/^\s*$/join + +これでも、最後の段落を1行にまとめるのであれば、最後の行は空行か空白行でなけ +ればなりません。 + +============================================================================== +*25.5* 表の編集 + +次のような4つのカラムがあるような表を編集したいとしましょう。 + + nice table test 1 test 2 test 3 ~ + input A 0.534 ~ + input B 0.913 ~ + +3つ目のカラムには数値を入力する必要があるとします。2行目にカーソルを動かし +て"A"コマンドで空白を入力してからその数値を入力するのもやり方です。 +ですがこの種の編集をするための特殊オプションを用意しています。 > + + set virtualedit=all + +すると、実際に文字がない場所にもカーソルを動かすことができるようになります。 +これを「バーチャルスペース(空白)」と呼びます。これを使うと表の編集がすごく楽 +になります。 +まずカーソルを最後のカラムに動かすために、ヘッダ部を使って検索を行います。 > + + /test 3 + +次に"j"を押すと、"input A"の値を入力できる場所に動きますので、"0.693"と入力 +します。するとこのような表示となります。 + + nice table test 1 test 2 test 3 ~ + input A 0.534 0.693 ~ + input B 0.913 ~ + +vimは自動的に元の行末と入力した数値とのスキマを空白で埋めます。次に"Bj"コマ +ンドで次の行のカラムに移動します。"B"は空白類で区切られた単語の先頭に移動す +るコマンドです。続く"j"は次の行の値を入力すべき場所に移動します。 + + Note: + 表示されているどの場所にでもカーソルは移動できます。最終行の後ろでも + 移動できます。ただし、その場所で何か文字を入力しない限り、空白文字の + 挿入は行われません。 + + +カラムのコピー +-------------- + +上の表の3つ目のカラムを、"test 1"カラムの前に追加(挿入)するには、次のように +7つの手順でできます。 + + 1. カーソルをこのカラムの左上隅に移動します。例えば、"/test 3"を使います。 + 2. CTRL-Vを押してブロック選択のビジュアルモードを開始します。 + 3. "2j"でカーソルを2行下に移動します。この場所は"input B"の"test 3"カラム + ですので「バーチャルスペース」になります。 + 4. カーソルを右に移動しカラム全体が選択されるようにし、さらにカラム間の空白 + 分を選択します。例えば"9l"とすれば良いでしょう。 + 5. 選択範囲を"y"コマンドでヤンクします。 + 6. カーソルを"test 1"の場所、つまり新しいカラムを挿入したい場所に動かします。 + 7. "P"を押してプットします。 + +この結果は次のようになります。 + + nice table test 3 test 1 test 2 test 3 ~ + input A 0.693 0.534 0.693 ~ + input B 0.913 ~ + +"test 1"カラム全体が右側に押し出されます。挿入したカラムで空白しかない部分も +同じように右側に動いている点に注目してください。 + +さて、これで元のカーソル移動モードに戻しましょう。 > + + :set virtualedit= + + +バーチャル置換モード +-------------------- + +上の'virtualedit'モードの欠点は「違った感じ」がすることです。最終行より後に +カーソルを動かしても、空白やTABがあるかどうか判断できません。もう一つの方法 +があります。それが今から述べる「バーチャル置換モード」です。 +表の中にTABとそれ以外の文字が混在している行があるとします。その最初のTAB位置 +で、"rx"を実行するとこのようにレイアウトが崩れてしまいます。 + + inp 0.693 0.534 0.693 ~ + + | + rx | + V + + inpx0.693 0.534 0.693 ~ + +こうならないようにするには"gr"コマンドを使います。 + + inp 0.693 0.534 0.693 ~ + + | + grx | + V + + inpx 0.693 0.534 0.693 ~ + +このように"gr"コマンドは文字の置換によって画面レイアウトが変わらないようにし +てくれます。間を埋めるのに必要なTABや空白を自動的に補います。つまり実際には +元のTABは"x"に置き換えた上でレイアウトが崩れないように空白類を追加しているの +です。この場合ならTAB記号を挿入しています。 +2文字以上の置き換えを行いたい場合は、"R"コマンドで置換モード(|04.9|節をご覧 +ください)に入ります。これもレイアウトを崩したり意図しない置き換えを行ってし +まいます。 + + inp 0 0.534 0.693 ~ + + | + R0.786 | + V + + inp 0.78634 0.693 ~ + +このような場合は"gR"コマンドで「バーチャル置換モード」に入ります。これだとレ +イアウトを崩さないようにできます。 + + inp 0 0.534 0.693 ~ + + | + gR0.786 | + V + + inp 0.786 0.534 0.693 ~ + +============================================================================== + +Next chapter: |usr_26.txt| 繰り返し + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_26.jax b/ja/usr_26.jax new file mode 100644 index 000000000..64ba77bc7 --- /dev/null +++ b/ja/usr_26.jax @@ -0,0 +1,234 @@ +COMMENT: 同じコマンドを繰り返す方法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_26.txt* For Vim version 6.3. Last change: 2002 Oct 29 + + VIM USER MANUAL - by Bram Moolenaar + + 繰り返し + + +編集作業では統一しないといったことはまずありません。変更を行う場合には複数回 +それを繰り返さなければならないこともよくあります。この章では変更を繰り返して +行う便利な方法について説明します。 + +|26.1| ビジュアルモードでの繰り返し +|26.2| 加算と減算 +|26.3| 多くのファイルに変更を加える +|26.4| シェルスクリプトでvimを使う + + Next chapter: |usr_27.txt| 検索コマンドと正規表現 + Previous chapter: |usr_25.txt| フォーマット付きテキストを編集する +Table of contents: |usr_toc.txt| + +============================================================================== +*26.1* ビジュアルモードでの繰り返し + +ビジュアルモードはあらゆる組み合せに対して変更を加えるためのとてもお手軽な方 +法です。選択範囲はハイライト表示になりますから、変更を加えた行が正しいのかど +うかを確認できます。ですが、選択をするには多少の打鍵が必要です。"gv"コマンド +で同じ範囲の領域を再選択できます。これを使うと同じ範囲に対して別の処理を実行 +させることができます。 +例えば、以下の文の"2001"を"2002"に変更し"2000"を"2001"に変更したいとします。 + + The financial results for 2001 are better ~ + than for 2000. The income increased by 50%, ~ + even though 2001 had more rain than 2000. ~ + 2000 2001 ~ + income 45,403 66,234 ~ + +まず、"2001"を"2002"に変更します。ビジュアルモードで上の範囲を選択し、次のコ +マンドを実行します。 > + + :s/2001/2002/g + +次に"gv"で同じ範囲を選択します。その時のカーソル位置を気にする必要はありませ +ん。次に":s/2000/2001/g"で2回目の変更を行います。 +当然ながら、同じやり方で何度でも変更を繰り返すことができます。 + + +*26.2* 加算と減算 + +1つの値を別の値に変更することを繰り返すには、いくつも固定値を指定しなければ +なりません。上の例で言えば、各年を1づつ増やしたいわけです。何度も置き換えコ +マンドを入力して年を指定する代わりに、CTRL-A コマンドを使うことができます。 +上と同じ文章に対して年を検索するコマンドを実行します。 > + + /19[0-9][0-9]\|20[0-9][0-9]<Enter> + +ここでCTRL-Aを押します。するとカーソル位置の数字が1増えます。 + + The financial results for 2002 are better ~ + than for 2000. The income increased by 50%, ~ + even though 2001 had more rain than 2000. ~ + 2000 2001 ~ + income 45,403 66,234 ~ + + +次に"n"コマンドで次の年を探し、"."コマンドでCTRL-Aを繰り返し("."の方が少々打 +ちやすいですから)ます。"n"と"."を繰り返して文章中の全パターンを置き換えます。 +Hint: 変更しようとしているパターンに合うものを見たければ、'hlsearch'オプショ +ンをonにします。すると早くパターンを見つけられますから、作業もはかどるでしょ +う。 + +増加分を2以上にしたい場合はCTRL-Aの前に数を指定できます。次のような文章があ +るとします。 + + 1. item four ~ + 2. item five ~ + 3. item six ~ + +カーソルを"1."のところに動かし、こう入力します。 > + + 3 CTRL-A + +すると、"1."は"4."に変わります。これを繰り返すには他の数字で"."を使ってくだ +さい。 + +もう一つ例を示します。 + + 006 foo bar ~ + 007 foo bar ~ + +上の数字のところでCTRL-Aを使えば、結果はこうなります。 + + 007 foo bar ~ + 010 foo bar ~ + +7+1が10?何が起ったかというと、vimは"007"というのは先頭に"0"があるので8進数 +だと考えたためです。(8進数では7の次が10となりますよね) +これと同じことはCプログラムでもよく言われます。もし先頭に"0"がある数字を8 +進数として処理させたくないのであれば、こうしてください。 > + + :set nrformats-=octal + +なお、CTRL-Xコマンドは減算コマンドとして同じように使えます。 + +============================================================================== +*26.3* 多くのファイルに変更を加える + +あるプログラムで"x_cnt"という変数を使っており、これを"x_counter"に変更したい +としましょう。この変数はいくつかのCソースファイルで使っています。ですから、 +該当する全ファイルを変更しなければなりません。ここではその手順を説明します。 +まず関連しそうな全ファイルを引数(argument)リストに加えます。 > + + :args *.c +< +これで全Cソースファイルが対象となり、最初のファイルが編集画面に出てきます。 +ここで置換コマンドをその全ファイルに対して実行するのです。 > + + :argdo %s/\<x_cnt\>/x_counter/ge | update + +":argdo"コマンドは何らかの他のコマンドを引数に取ります。指定のコマンドは引数 +リストの全ファイルに対して実行されます。 +"%s"は全行を対象とした置換コマンドです。"\<x_cnt\>"の指定で"x_cnt"という単語 +を探します。"\<"と"\>"は"px_cnt"や"x_cnt2"を除外し、単語としてヒットするもの +だけを抽出します。 +置換コマンドで使っている"g"フラグは1つの行で複数回"x_cnt"が現われた時に全部 +を置換するという指定です。"e"フラグは"x_cnt"があるファイルで見つからない時に +エラーメッセージを表示するのを抑制します。これがないと、":argdo"は"x_cnt"が +含まれていないファイルを処理した時点で中断してしまいます。 +"|"はコマンド間のセパレータです。次の"update"コマンドは変更があった時にだけ +ファイルを保存します。"x_cnt"から"x_counter"への変更がない時には何も起りま +せん。 + +他に":windo"というコマンドがあります。これは全ウィンドウを引数として処理を実 +行します。また":bufdo"もあり、これは全バッファを引数とします。これを使うのは +気をつけてください。バッファリストにあるファイルは使っている人が思っている以 +上にある場合があります。 +":buffers"コマンド(か":ls"コマンド)で確認をしてください。 + +============================================================================== +*26.4* シェルスクリプトでvimを使う + +JP:注 この章の記述はUnix系OSでのみ有効です。 +例えば、"-person-"という文字列を"Jones"に置き換えて印刷する必要があり、対象 +となるファイルが大量にある場合を思い浮べてください。どのようにして実行すれば +よいでしょう?一つは大量のタイプを厭わない方法です。もう一つはそれを行うシェ +ルスクリプトを書く方法です。 +vimは通常モードのコマンドを使って、スクリーンエディタとしては見事にこの作業 +を片付けます。ですが、バッチ処理用としては通常モードコマンドはあまりにもわか +りにくいでしょう。ですから代りにExモードのコマンドを使います。このモードでは +バッチファイルとの親和性の高いコマンド行単位のインタフェースを提供します。 +("Exコマンド"というのはコマンド行コマンドとかコロンコマンドと呼ばれるものの +別称です) +必要となるExモードのコマンド例を示しましょう。 > + + %s/-person-/Jones/g + write tempfile + quit + +こういったコマンドを"change.vim"に格納しておきます。次にシェルスクリプトから +vimをバッチモードで起動します。 > + + for file in *.txt; do + vim -e -s $file < change.vim + lpr -r tempfile + done + +"for"~"done"のループは、間にある2つの行を繰り返し実行するシェル構文です。 +変数$fileには繰り返しの都度、違ったファイル名が入ります。 +2行目はvimを(-eパラメタで)Exモードで実行します。対象となるファイル名は$file +での指定となり、実行するコマンドは"change.vim"から読み込みます。"-s"パラメタ +はvimが寡黙モード(非会話モード)で実行します。言い換えると":" プロンプトやそ +の他のプロンプトは全く表示しないということです。 +"lpr -r tempfile"というコマンドは出力結果の"tempfile"を印刷した後でそれを削 +除します。("-r"パラメタがその意味です) + + +標準入力からの読み込み +---------------------- + +vimは標準入力から文章を取り込むことができます。通常は標準入力からはコマンド +を読み込みますので、そうでないことをvimに伝えなくてはなりません。これはファ +イル名の代わりにパラメタとして"-"を与えることで行います。例えばこうです。 > + + ls | vim - + +これで、"ls"コマンドの出力結果をファイルに保存したりせずに、直接編集できま +す。 +標準入力から文章を読み込む場合でも、"-S"パラメタを使えば、スクリプトを読み +込ませることができます。 > + + producer | vim -S change.vim - + + +通常モードのスクリプト +---------------------- + +どうしもてスクリプト中で通常モードのコマンドを使いたい場合は、このようにする +ことで可能です。 > + + vim -s script file.txt ... +< + Note: + "-s"パラメタを"-e"なしで使う場合は違った意味になります。つまり、スク + リプトを通常モードコマンドとみなして取り込みむという意味になります。 + "-e"といっしょに使った場合は寡黙モードであることを示し、ファイル名の + ようなパラメタは取りません。 + +"script"中のコマンドはvimを起動して実際に入力したのと同じように実行されます。 +スクリプト中の改行記号も実際にvimの編集中に<Enter>を押したのと同じように処理 +しますので注意してください。なお、<Enter>は通常モードではカーソルを次の行に +動かすコマンドです。 +スクリプトを作るにはそのファイルを開いて、コマンドを入力することで作成できま +す。ただ、そのコマンドの結果を頭でイメージしながらになりますので、多少難しい +でしょう。 +もう一つ方法があって、実際にその作業を行っている間コマンドをレコード(記録)す +るのです。その手順を説明しましょう。 > + + vim -w script file.txt ... + +これで入力した全ての操作は"script"ファイルに保存されます。多少のミスがあって +も操作を続けて、後でそのミスを思い出して、スクリプトを修正すれば良いでしょ +う。 +"-w"パラメタは既存のスクリプトに追加します。ですから、少しづつ少しづつスクリ +プトに記録したい時には便利でしょう。何もない状態から作り始めるのなら、"-W"パ +ラメタを使ってください。これは既存のファイルに上書きします。 + +============================================================================== + +Next chapter: |usr_27.txt| 検索コマンドと正規表現 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_27.jax b/ja/usr_27.jax new file mode 100644 index 000000000..fc43bb9e7 --- /dev/null +++ b/ja/usr_27.jax @@ -0,0 +1,580 @@ +COMMENT: 検索コマンドと正規表現 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_27.txt* For Vim version 6.3. Last change: 2003 Oct 28 + + VIM USER MANUAL - by Bram Moolenaar + + 検索コマンドと正規表現 + + +3章では、簡単な検索コマンドとパターンの指定方法について|03.9|節で述べまし +た。vimにはそこで述べたよりはるかに複雑な検索ができます。この章ではよく使わ +れる検索パターンについて説明します。詳細な仕様については|pattern|をご覧くだ +さい。 + +|27.1| 大文字/小文字を無視 +|27.2| ファイル終端に達した時のラップ処理 +|27.3| オフセット +|27.4| 複数回の一致 +|27.5| 複数条件の並記 +|27.6| 文字範囲 +|27.7| 文字クラス +|27.8| 改行記号に一致 +|27.9| 例 + + Next chapter: |usr_28.txt| フォールド(折り畳み) + Previous chapter: |usr_26.txt| 繰り返し +Table of contents: |usr_toc.txt| + +============================================================================== +*27.1* 大文字/小文字の無視 + +デフォルトでは、vimの検索は大文字/小文字を区別します。ですから、"include"と +"INCLUDE"と"Include"は3つの違った単語ですので、検索してもどれか一つとしか一 +致しません。 +では'ignorecase'オプションをonにしてみましょう。 > + + :set ignorecase + +もう一度、"include"で検索すると、"Include"にも"INCLUDE"にも"InClUDe"にもヒッ +トします。('hlsearch'オプションをonにしておくと、パターンに一致した個所がす +ぐに解ります。) +もう一度、これをoffにしてみましょう。 > + + :set noignorecase + +これを設定したままで"INCLUDE"を索してみます。すると"include"の場合と全く同じ +個所に一致します。では'smartcase'オプションをonにしましょう。 > + + :set ignorecase smartcase + +この指定だと、パターンに1つでも大文字がある時だけ、大文字/小文字を区別しま +す。これは、大文字/小文字を区別したい時で入力が必要にならない限り、大文字を +入力することはないだろうというアイデアに基づいています。そう、狡猾ですよね! +この2つのオプションを設定しておくと次のようにヒットします。 > + + パターン ヒット ~ + word word, Word, WORD, WoRd, etc. + Word Word + WORD WORD + WoRd WoRd + + +パターンでの大文字/小文字 +-------------------------- + +ある特定のパターンの時だけ大文字/小文字を無視したい場合は、文字列の前に"\c" +を置けばできます。"\C"は逆にパターンの大文字/小文字を区別します。 +このルールは'ignorecase'と'smartcase'オプションの設定より優先します。"\c"や +"\C"を用いた場合は上のオプション値は無視します。 + + パターン ヒット ~ + \Cword word + \CWord Word + \cword word, Word, WORD, WoRd, etc. + \cWord word, Word, WORD, WoRd, etc. + +"\c"や"\C"を使う大きな利点はパターンに張りついていることにあります。つまり、 +検索の履歴からパターンを再利用する時には、'ignorecase'や'smartcase'を変更し +ているかどうかに関わらず、常に同じ結果となるわけです。 + + Note: + 検索パターンでの"\"アイテムの利用は'magic'オプションに依存します。 + 'magic'はonであることが標準的かつ推奨された設定ですので、この章では + onを前提としています。変更している場合は多くの検索パターンで突然うま + く動かなくなるでしょう。 + + Note: + 思っているよりも検索に時間がかかる場合はUnixならCTRL-Cで、MS-DOSや + MS-WindowsではCTRL-Breakを押してください。 + +============================================================================== +*27.2* ファイル終端に達した時のラップ処理 + +デフォルトでは前方検索は現在のカーソル位置から指定の文字列を検索し始めます。 +するとそのうちにファイルの末尾まで到達します。その時に文字列が見つからかった +場合、カーソル位置をファイルの先頭に戻して最初から検索を再開します。 +"n"コマンドを繰り返して次々と文字列を探していると、結局は最初にヒットした場 +所に戻ってくるということを覚えておいてください。これに気が付かないと永遠に検 +索を続けることになります。ちょっとでも気付き易いように、vimはこのようなメッセ +ージを表示します。 + + search hit BOTTOM, continuing at TOP ~ + +"?"コマンドを使って、逆方向に検索している場合は、このメッセージとなります。 + + search hit TOP, continuing at BOTTOM ~ + +それでも最初に戻った時に気付かない場合もあります。これに気付かせる方法の1つ +に'ruler'オプションをonにするというのがあります。 > + + :set ruler + +vimはウィンドウの右下隅(ウィンドウが1つの時はステータス行)に現在のカーソル +位置を表示します。このように見えます。 + + 101,29 84% ~ + +最初の数字はカーソルのある行番号です。検索の開始前にこの行番号を覚えておきま +しょう。再びこの場所に戻ってきたら一周したことが確認できます。 + + +ラップ停止 +---------- + +検索時にラップしないようにするには、このコマンドを使います。 > + + :set nowrapscan + +この場合、検索の結果ファイルの末尾に達した時は次のエラーメッセージを表示しま +す。 + + E385: search hit BOTTOM without match for: forever ~ + +ですから、"gg"でファイルの先頭に移動してから上のメッセージが出るまで検索をし +続ければ、一致する全個所を探せることになります。 +なお、"?"を使って逆方向に検索する場合は、このエラーメッセージとなります。 + + E384: search hit TOP without match for: forever ~ + +============================================================================== +*27.3* オフセット + +デフォルトでは検索コマンドの実行後カーソルを該当のパターンの先頭に動きます。 +オフセットを指定することでそのカーソル位置を他の場所に変更することができま +す。前方検索コマンド"/"であれば、パターンの後に"/"と続けてオフセット値を指定 +します。 > + + /default/2 + +上の例では"default"というパターンを検索し、見つかったパターンの2つ後ろの行 +の先頭に移動します。このコマンドを今お読みのこの段落で実行すると、最初の行に +"default"がありますから、2行下のオフセット位置(つまりこの行)に移動します。 + +オフセット値が数値であれば、カーソルを検索結果位置から指定の行の先頭までカー +ソルを動かします。オフセット値には負の数も指定できます。正の数ならカーソルを +その数だけ下に動かし、負の数なら上に動かします。 + + +文字オフセット +-------------- + +"e"は一致パターンの末尾を示すオフセット指定です。カーソルを一致したパターン +の最後の文字に移動します。次のコマンドなら、"count"の最後の"t"にカーソルを動 +かします。 > + + /const/e + +さらに、数値でそこから何文字前に進めるかの指定を加えられます。 +このコマンドならば、一致した単語の直後にカーソルを動かします。 > + + /const/e+1 + +正の数の場合はカーソルが右に動き、負の数の場合は左に動きます。次の例の場合だ +とカーソルは"const"の"s"に移動します。 > + + /const/e-1 + +オフセットが"b"で始まる場合は、カーソルはパターンの先頭に移動します。これは +単体ではあまり使い道がありません。というのは"b"を指定しなくても同じ結果にな +るからです。この指定が役に立つのは後に数値指定を伴う場合です。こうすれば指定 +の数だけカーソルを前後に動かすことができます。例をあげましょう。 > + + /const/b+2 + +これはヒットした文字列の先頭から2文字右にカーソルを動かします。つまり"n"の +位置に来るわけです。 + + +繰り返し +-------- + +直前の検索で使ったパターンを繰り返す時にオフセット値を変更したい場合は、パ +ターン指定を省略します。 > + + /that + //e + +これは次の指定と同じ意味です。 > + + /that/e + +同じオフセットを使って繰り返す時はこうです。 > + + / + +"n"でも同じことです。直前のオフセット指定を取り消して、検索を繰り返す時にはこ +うします。 > + + // + + +後方(逆方向)検索 +---------------- + +"?"コマンドでも同じようにオフセット指定ができます。ただしこの場合はパターン +とオフセット指定の間には"/"ではなく"?"を使います。 > + + ?const?e-2 + +"b"と"e"の意味は変わりません。つまり"?"を使う場合でも逆の意味になったりしま +せん。 + + +検索開始位置 +------------ + +検索を始める時、通常は現在のカーソル位置から始めます。行オフセットを指定する +と問題となる可能性があります。例を示します。 > + + /const/-2 + +上の指定は"const"という単語を探し、その2行上にカーソルを動かします。次に"n" +で検索を繰り返すと、その時のカーソル位置から検索を行いますので、直前に見つけ +たのと同じ"const"を見つけることになり、さらにそこから2行上にカーソルを動か +すと、結局元と同じ場所に戻ってしまいますので、困ってしまうでしょう。 +もっとマズい場合もあります。例えば、現在行の次に"const"というパターンがある +場合、検索コマンドは次の行にパターンがあるのを見つけ、そこから2行上にカーソ +ルを動かします。ということはカーソルが逆方向に進むことになるのです! + +文字オフセットを指定する時はvimがそうならないように計らいます。つまり検索を +始める時に数文字分前か後ろから始めるようにするので、同じものが2度ヒットする +ことはありません。 + +============================================================================== +*27.4* 複数回の一致 + +"*"は、その直前にあるアイテムの任意回の繰り返しの意味となります。 > + + /a* + +上の例なら、"a"や"aa"や"aaa"のどれでも一致します。さらにいうと""(空文字列)に +も一致します。というのは0回というのも「任意回」の一種だからです。 +"*"の機能は直前にある項目に対してのみ有効です。つまり"ab*"にヒットするのは、 +"a" や "ab", "abb", "abbb" などです。文字列全体の繰り返しに一致させるには、 +1つの項目にグループ化しなければなりません。これには文字列の前に"\("を、後に +"\)"を置きます。ですから、こういうコマンドになります。 > + + /\(ab\)* + +上は"ab"や"abab"、"ababab"などに一致します。""にも一致します。 + +空文字列に一致するのを避けるには"\+"を使います。これだと直前の項目が1回以上 +繰り返している時にだけ一致します。 > + + /ab\+ + +上は"ab"や"abab"、"ababab"などに一致します。ですが、"b"が続いていない"a"には +ヒットしません。 + +あってもなくても良い場合には"\="を使います。例えば次の例は"folder"にもヒット +し、"folders"にもヒットします。 > + + /folders\= + + +カウンタの指定 +-------------- + +ある項目が指定の回数現れた時だけ一致させるには、"\{n,m}"を使います。"n"と"m" +には数値が入ります。これの直前に書いてある項目が"n"~"m"回続いた場合にヒット +します|inclusive|。例えば、この例では"abbb"や"abbbb"、"abbbbb"にヒットします。 > + + /ab\{3,5} + +"n"を省略した場合は、"n"はデフォルトの0となります。"m"が省略された場合は、 +デフォルトの「無限」になります。",m"を省略すると丁度"n"回の時だけヒットしま +す。 + + pattern match count ~ + \{,4} 0, 1, 2, 3 or 4 + \{3,} 3, 4, 5, etc. + \{0,1} 0 or 1, same as \= + \{0,} 0 or more, same as * + \{1,} 1 or more, same as \+ + \{3} 3 + + +最小一致原則 +------------ + +ある項目がとてもたくさんの文字にヒットするような場合があります。一致を可能な +限り小さくするには"\{-n,m}"を使います。これは"\{n,m}"と同じ意味ですが、最小 +値(minimal amount possible)を使っている点が違います。これはこのように使いま +す。 > + + /ab\{-1,3} + +上は"abbb"のうちの"ab"だけにヒットします。この場合、1つ以上の"b"には絶対に +一致しません。というのはそれ以上一致させる理由がないからです。最小値よりも +多い文字に強制的にヒットさせるには何か他の方法が必要です。 +"n"や"m"がない場合も同じルールが適用されます。両方の数字を取り除いて、"\{-}" +とすることも可能です。これはその直前の項目が0回かそれ以上繰り返されていて、 +可能な限り少ないパターンにヒットします。項目自身は常に0回にヒットします。 +これは他の何かと組み合せる場合に便利です。例えば、 > + + /a.\{-}b + +これは"axbxb"の中の"axb"にヒットします。次のパターンも考えてみましょう。 > + + /a.*b + +これですと可能な限り多くの文字にヒットさせようとしますから、"axbxb"の全部が +ヒットしてしまいます。 + +============================================================================== +*27.5* 選択肢 + +パターンの中での"\|"は「又は」の意味です。例をあげましょう。 > + + /foo\|bar + +これは"foo"か"bar"のどちらかにヒットします。さらに別条件を続けることもできま +す。 > + + /one\|two\|three + +これは"one"か"two"か"three"にヒットします。 +複数回にヒットさせるにはその全体を"\("と"\)"で囲みます。 > + + /\(foo\|bar\)\+ + +上のパターンは"foo"や"foobar"、"foofoo"、"barfoobar"といったパターンにヒット +します。もう一つの例です。 > + + /end\(if\|while\|for\) + +これは"endif"や"endwhile"、"endfor"といったパターンにヒットします。 + +これと同じような項目に"\&"があります。これは両方の条件が同じ文字列について両 +立しなければヒットしません。最終的なヒット範囲は最後の条件に会うものを使いま +す。 > + + /forever\&... + +これは"forever"のうちの"for"にヒットしますが、例えば "fortuin"にはヒットしま +せん。 + +============================================================================== +*27.6* 文字範囲 + +"a"、"b"、"c"のどれかにヒットさせるには"/a\|b\|c"と書くことができます。です +がこれだと"a"~"z"のどれかにヒットさせたい時に書くの大変です。で、もっと簡単 +な方法があります。 > + + /[a-z] + +[ ]はどれか1文字にヒットさせる時に使います。[ と ] の中にヒットさせたい文字 +を列記します。文字リストを含めることもできます。例をあげましょう。 > + + /[0123456789abcdef] + +上はこの中に入っている文字のどの文字にでもヒットします。マイナス記号を使うと +連続した文字範囲も指定できます。"0-3"は"0123"の意味ですし、"w-z"なら"wxyz"の +意味です。つまり次の指定は上に書いた例と同じ意味の短縮形なのです。 > + + /[0-9a-f] + +"-"の文字そのものをパターンに含めたい場合は[ ]の中の最初か最後に書きます。 +次のような特殊な文字については[]の中で簡単に使えるようにしてあります。(実際 +には検索パターンのどこででも使えます) + + \e <Esc> + \t <Tab> + \r <CR> + \b <BS> + +この他にも[]中で使える特殊文字がいくつかあります。その全ての説明は|/[]|をご +覧ください。 + + +補集合の範囲 + +指定の文字以外にヒットさせるには、"^"を範囲の最初に指定します。これを指定す +ると[]の中に指定されている文字以外の全てにヒットします。例をあげましょう。 > + + /"[^"]*" +< + " ダブルクオートの文字 + [^"] ダブルクオート以外の文字なら何でもOK + * 上が続く数だけ + " ダブルクオートの文字 + +上のパターンには"foo"とか"3!x"といった文字列が(ダブルクオートを含む)ヒットし +ます。 + + +PREDEFINED RANGES +定義済みの範囲 + +ある種の範囲は特によく使います。vimではあらかじめ定義済の範囲を用意していま +す。例えば、これは任意のアルファベットの意味になります。 > + + /\a + +これは"/[a-zA-Z]"という指定と同じ意味になります。他にもいくつか定義済のもの +があります。 + + item matches equivalent ~ + \d 数字 [0-9] + \D 数字以外 [^0-9] + \x 16進数の数字 [0-9a-fA-F] + \X 16進数の数字以外 [^0-9a-fA-F] + \s 空白文字 [ ] (<Tab>か<Space>) + \S 空白文字以外 [^ ] (<Tab>か<Space>以外) + \l 小文字アルファベット [a-z] + \L 小文字アルファベット以外 [^a-z] + \u 大文字アルファベット [A-Z] + \U 大文字アルファベット以外 [^A-Z] + + Note: + 定義済の範囲を使う方が同じ意味の範囲を記述するよりずっと早いです。 + 上の項目を使う時は[]の中には入れません。"[\d\l]"と書いても、それは数 + 字か小文字という意味にはなりません。この場合なら"(\(\d\l\)"と書いて + ください。 + +定義済の範囲の全リストは|/\s|をご覧ください。 + +============================================================================== +*27.7* 文字クラス + +文字範囲はある特定の文字の組み合せにヒットします。文字クラスも似ていますが、 +根本的な違いがあります。文字クラスでは検索パターンを変更せずに文字の組み合せ +を再定義できるのです。 +例えば、次のパターンで検索をするとします。 > + + /\f\+ + +"\f"というのはファイル名に使われる文字という意味です。ですから、これはファイ +ル名に使える文字集合にヒットします。 +ファイル名にどんな文字が使えるかは、お使いのシステムに依存します。MS-Windows +ならバックスラッシュを含みますが、Unixでは含みません。これは'isfname'オプショ +ンで指定します。Unixでのデフォルト値はこうです。 > + + :set isfname + isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,= + +他のシステムではデフォルト値が変わります。ですから"\f"を使えば、使っているシ +ステムで使えるファイル名にヒットするような検索パターンを作ることができるわけ +です。 + + Note: + 実際にはUnixではファイル名には空白文字を含むどんな文字でも使えます。 + ですから、'isfname'にこういった文字を含むことは理屈の上では正しいこ + とです。しかしそれだと文章の中からファイル名の終わりを見つけることが + できなくなります。なので'isfname'では妥協したデフォルト値となってい + るのです。 + +文字クラスには次のようなものがあります。 + + item matches option ~ + \i 識別子に使える文字 'isident' + \I \iから数字を抜いたもの + \k キーワードとなる文字 'iskeyword' + \K \kから数字を抜いたもの + \p 印刷可能文字 'isprint' + \P \pから数字を抜いたもの + \f ファイル名に使える文字 'isfname' + \F \fから数字を抜いたもの + +============================================================================== +*27.8* 行末との一致 + +vimでは改行を含んだパターンを検索することができます。今までに述べたパターン +ではどれも改行に一致しないので、自分でどこに改行が来るかを指定する必要があり +ます。 +改行のある場所を指定するには、"\n"を使います。 > + + /the\nword + +これは行末が"the"で終わって、次の行の先頭が"word"となっている行にヒットしま +す。"the word"の場合もヒットするためには、改行か空白かのどちらでもヒットする +ような指定が必要です。これを行うには"\_s"を使います。 > + + /the\_sword + +空白がいくつも続く場合も含むならこうします。 > + + /the\_s\+word + +この場合は行末が"the "で終わって、次の行の先頭が" word"であってもヒットし +ます。 + +"\s"は空白文字の意味で、"\_s"は空白か改行の意味です。 +同じように"\a"はアルファベット文字で、"\_a"はアルファベット文字か改行にヒッ +トします。これ以外の文字クラスや定義済範囲の場合も"_"を間に挟むことで改行文 +字を含む意味となります。 + +他にも多くのアイテムの最初に"\_"を付けると改行文字にヒットさせることができま +す。例えば、"\_."というのは改行を含む任意の文字にヒットします。 + + Note: + "\_.*"というパターンはファイルの末尾までの全てにヒットします。このよ + うなパターンを使うと検索コマンドがとても遅くなりますので注意してくだ + さい。 + +他にも"\_[]"というパターンを使えば改行を含んだ文字範囲の指定ができるようにな +ります。 > + + /"\_[^"]*" + +これはダブルクオートで囲まれた複数の行にまたがるパターンを探すことができます。 + +============================================================================== +*27.9* 例題 + +ここでは便利そうな検索パターンをいくつか示します。今までに説明した項目をどの +ように組み合せられるかを示しています。 + + +カリフォルニア州のナンバープレートを探す +---------------------------------------- + +例で使うナンバープレートは"1MGU103"だとします。これは先頭が数字、次の3桁が +アルファベット、さらに3桁の数字となっています。機械的にパターンに置き換える +とこうなります。 > + + /\d\u\u\u\d\d\d + +3桁の数字と文字と考えると次のような方法も使えます。 > + + /\d\u\{3}\d\{3} + +また、[]指定を使うとこうなります。 > + + /[0-9][A-Z]\{3}[0-9]\{3} + +さて、あなたならどれを使いますか?どれでも覚えやすいのを使ってください。一番 +覚えやすい方法を使う方がそうでないのを頑張って覚えるよりずっと早いですから。 +もし全部覚えられるのなら、最後の1つは使わないようにしましょう。最後のは入力 +する文字も多いし、実行も遅いからです。 + + +識別子を見つける + +C(や多くの他言語の)プログラムでは、識別子は英文字で始まってその後に英数字が +続きます。アンダースコア(_)も使えることでしょう。こういったパターンは次のよ +うに指定できます。 > + + /\<\h\w*\> + +"\<"と"\>"は単語全体が一致しているものを探すのに使います。"\h"は"[A-Za-z_]" +の意味で"\w"は"[0-9A-Za-z_]".の意味です。 + + Note: + "\<"と"\>" は'iskeyword'オプションによります。例えば、"-"を含んでい + れば、"ident-"はヒットしません。この場合は次のようにします。 > + + /\w\@<!\h\w*\w\@! +< + "\w"で識別子の前後にヒットしないかどうかをチェックします。 + |/\@<!|と|/\@!|をご覧ください。 + +============================================================================== + +Next chapter: |usr_28.txt| フォールド(折り畳み) + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_28.jax b/ja/usr_28.jax new file mode 100644 index 000000000..44cd4ffde --- /dev/null +++ b/ja/usr_28.jax @@ -0,0 +1,447 @@ +COMMENT: 折畳み +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_28.txt* For Vim version 6.3. Last change: 2003 Dec 21 + + VIM USER MANUAL - by Bram Moolenaar + + 折畳み + + +構造を持った文章であれば、セクションに分割することができます。各セクションに +はさらにサブセクションがあります。フォールドを使うと1つのセクションを1行に +表示することで、文書の概要を見やすくできます。この章では違った方法でこれを実 +行する方法も説明します。 + +|28.1| フォールドって何? +|28.2| 手動でのフォールド +|28.3| フォールドで作業する +|28.4| フォールドの保存と復元 +|28.5| 段付けを使ったフォールド +|28.6| マーク(?marker)を使ったフォールド +|28.7| 文法を使ったフォールド +|28.8| 式によるフォールド +|28.9| 変更していな行をフォールドする +|28.10| どのフォールド方法を使えばいいの? + + Next chapter: |usr_29.txt| プログラム内の移動 + Previous chapter: |usr_27.txt| 検索コマンドと正規表現 +Table of contents: |usr_toc.txt| + +============================================================================== +*28.1* フォールドって何? + +フォールドはバッファ中のある範囲の行を画面上で1行にまとめて表示する時に使い +ます。本物の紙のように一部を折り畳んでコンパクトにすることができます。 + + +------------------------+ + | line 1 | + | line 2 | + | line 3 | + |_______________________ | + \ \ + \________________________\ + / folded lines / + /________________________/ + | line 12 | + | line 13 | + | line 14 | + +------------------------+ + +フォールドしてもその文章はバッファに残ったままで変化ありません。画面に表示さ +れている行だけがフォールドの影響を受けます。 + +フォールドのメリットは文章の構造の見通しを良くしてくれる点にあります。1つの +セクションをフォールドすると、それがセクションであることを示す1行の表示とな +ります。 + +============================================================================== +*28.2* 手動でのフォールド + +まずはやってみましょう。カーソルをどこかの段落に動かしてこう入力しましょう。 +> + zfap + +段落がハイライト表示の行に置き換わったでしょう。これでフォールドを作ったわけ +です。|zf|はオペレータ、|ap|はテキストオブジェクト選択のコマンドです。ですか +ら、|zf|オペレータと好きなカーソル移動コマンドを組み合せて、対象としたい範囲 +を自由に指定することができます。|zf|コマンドはビジュアルモードでも使えます。 + +フォールドした文章を見るには、このコマンドを使います。 > + + zo + +再度フォールドするのはこのコマンドです。 > + + zc + +フォールド関連のコマンドは全て"z"で始まります。少し想像力を働かせると、折畳ん +だ紙を横から見た図に見えるでしょう。"z"に続く文字にはコマンドを覚えやすそうな +ものを選んでいます。 + + zf フォールド(Fold)を作る + zo フォールドを開く(Open) + zc フォールドを閉じる(Close) + +フォールドはネスト(多重化)できます。途中にフォールドがある範囲をさらにフォー +ルドすることもできます。例えば、この章の各段落をそれぞれフォールドしておいて +さらにこの章全体をフォールドできます。やってみましょう。章全体のフォールドを +解く(開く)とその中にあるフォールドは元の状態、つまり一部はフォールドしたまま +で、一部は開いた状態で表示されることがわかります。 + +いくつかのフォールドを作っていて、その全部を開きたい時はどうすればいいでしょ +うか。それぞれのフォールドにカーソルを動かして"zo"を使うのもできますが、この +コマンドを使えば、ずっと早くできます。 > + + zr + +これはフォールドを減らす(Reduce)という意味です。その逆は、 > + + zm + +です。これはフォールドを増やす(More)という意味です。"zr"と"zm"を繰り返すと多 +重化したフォールドを数回で開いたり閉じたりできます。 + +何重にも多重化したフォールドがある場合は、こうすれば全部を一気に開くことがで +きます。 > + + zR + +これは全てのフォールドが開いた状態になるまでフォールドを減らし(Reduces)続け +ます。この逆に全部を閉じるのはこのコマンドです。 > + + zM + +これは次々(More&More)とフォールドします。 + +|zn|コマンドを使うとフォールドを禁止できます。|zN|を使えば、それは解除され、 +元のフォールドした状態に戻ります。|zi|はフォールドの禁止をon/offします。こ +れは作業中に便利に使えます。 + - フォールドを作ってファイル全体を見通しやすくします。 + - 編集作業を行いたい場所を探してカーソルを動かします。 + - |zi|でフォールドを解除して編集作業を行います。 + - その場所の作業が終ると、もう一度|zi|を使って次の編集場所を探します。 + +手作業でのフォールドの詳しい説明はリファレンスマニュアル|fold-manual|をご覧 +ください。 + +============================================================================== +*28.3* フォールドで作業する + +一部のフォールドを閉じている時に"j"や"k"のようなカーソル移動コマンドでフォー +ルドの上を通ると、1行の空行のように扱われます。つまりフォールドした状態の文 +章は簡単に動かすことができるのです。 + +フォールドをヤンクするのも削除するのもプットするのも、普通の行のように扱えま +す。例えば、プログラム中の関数の順序を変えたりする時にはとても便利です。最初 +に'foldmethod'を正しく設定して、各フォールドが関数全体(か少ない目に)を含んで +いることを確認します。次にその関数を"dd"コマンドで削除し、カーソルを動かして +"p"でプットします。関数の一部の行がフォールドの上下にはみ出している時は次の +ようにビジュアル選択を使うこともできます。 + - カーソルを移動したい関数の最初の行に動かします。 + - "V"を押してビジュアルモードに移ります。 + - カーソルを移動する関数の最後に動かします。 + - "d"を押して選択した範囲の行を削除します。 + - カーソルを新たな場所に移動し、"p"を使って上で削除した行をプットします。 + +どこにフォールドがあるのか、つまり|zo|コマンドが使える場所がどこかを探したり +覚えたりするのが難しい時もあります。定義済のフォールドを見るのは次のコマンド +です。 > + + :set foldcolumn=4 + +これはフォールドが解りやすいようにウィンドウの左側に小さなカラムを表示しま +す。畳んだ状態のフォールドには"+"と表示されます。開いた状態のフォールドでは +先頭行に"-"が、それに続く行には"|"が表示されます。 + +マウスでフォールド表示位置にある"+"をクリックすると、そのフォールドが開きま +す。"-"や"|"の上でクリックすると、そこに開いていたフォールドは閉じます。 + +数字はフォールドのレベルを示します。 + +カーソル位置にある全フォールドを開くのは|zO| +カーソル位置にある全フォールドを閉じるには|zC| +カーソル位置にあるフォールドを削除するのは|zd| +カーソル位置にある全フォールドを削除するのは|zD| + +挿入モードの時はカーソル行にあるフォールドは絶対に閉じません。つまり入力した +ものを見ることができるのです。 + +カーソルをジャンプさせたり、左右に動かした時はフォールドは自動的に開きます。 +例えば、"0"コマンドはカーソル位置のフォールドを開きます。(ただし、'foldopen' +がデフォルト値の"hor"になっていた場合)'foldopen'オプションには特定のコマンド +の時にフォールドを開くように変更できます。 +フォールドの上にカーソルが来た時に常に開くようにしたければ、こうします。 > + + :set foldopen=all + +Warning: この場合、閉じたフォールドの上にカーソルを移動できなくなります。 +一時的にだけこの指定を使い、後で元に戻すようにも使えます。 > + + :set foldopen& + +フォールドの範囲からカーソルを移動させると自動的にフォールドを閉じることが +できるようにもできます。 > + + :set foldclose=all + +これはカーソルを含んでいない全てのフォールドに'foldlevel'を適用します。 +この感覚が好みかどうかはご自分で試してください。より多くフォールドしたい場合 +は|zm|を、フォールドを少なくしたい場合は|zr|を使いましょう。 + +なお、フォールドはウィンドウ毎に固有です。ですから同じファイルを2つのウィン +ドウで開き、片方でフォールドを使い、もう片方は使わないということができます。 +また、片方はフォールドを閉じておいて、もう片方は開いておくといったことも可能 +です。 + +============================================================================== +*28.4* フォールドの保存と復元 + +ファイルの変更を捨て(て、他のファイルを編集しようとす)る時、フォールドの情 +報はなくなります。後でそのファイルを編集しようとしても、手動で設定したフォー +ルドの開閉状態はデフォルトに戻ります。また手動で作成したフォールドについては +全てなくなります!フォールドを保存するには|:mkview|コマンドを使います。 > + + :mkview + +これはファイルの見かけに影響のある設定その他を保存するコマンドです。保存の対 +象となる項目は'viewoptions'オプションで変更できます。後でそのファイルに戻っ +てきた時にはこのコマンドで復元できます。 > + + :loadview + +1つのファイルについて10種類のビューを持つことができます。例えば今の設定を3 +つ目のビューにして保存し、それを2つ目のビューとしてロードできます。 > + + :mkview 3 + :loadview 2 + +行を挿入したり削除したりすると、ビューが無効になる場合がありますので気を付け +てください。また'viewdir'オプションにはビューを保存する時の場所を指定できま +すので、そちらも確認してください。いつ古くなったビューを削除したくなるかわか +りませんからね。 + +============================================================================== +*28.5* 段付けを使ったフォールド + +|zf|でフォールドを一つづつ定義するのは大変ですよね。もしフォールドを付けたい +文章が階層的に段付けしてあれば、その段付けを頼りにしてフォールドを設定させる +方法があります。この方法だと同じレベルの段付けをしてある行をまとめてフォール +ドを作成します。より深い段付けの部分は多重化したフォールドになります。このや +り方は、多くのプログラム言語に対応しています。 + +'foldmethod'オプションをこう設定してトライしてください。 > + + :set foldmethod=indent + +さて、ここで|zm|や|zr|コマンドを使うとフォールドを開いたり閉じたり簡単にでき +ます。これなら次の例のような文章を見るのも簡単です。 + +この行は段付けしていません。 + この行は1回段付けしています。 + この行は2回段付けしています。 + この行は2回段付けしています。 + この行は1回段付けしています。 +この行は段付けしていません。 + この行は1回段付けしています。 + この行は1回段付けしています。 + +段付けの量とフォールドの深さの関係は'shiftwidth'オプションの値に依存するとい +うことを覚えておいてください。'shiftwidth'の値の分だけ段付けが深なるとフォー +ルドの深さが1つ増えます。このことをフォールドレベルと呼びます。 + +|zr|や|zm|コマンドを使うと、内部的には'foldlevel'の値を増やしたり減らしたり +しています。これを直接設定することもできます。 > + + :set foldlevel=3 + +これは'shiftwidth'の段付けが3回分より深いフォールドを全て閉じるという意味で +す。フォールドレベルが小さくなると、より多くのフォールドを閉じます。 +'foldlevel'が0であれば、全てのフォールドは閉じます。|zM|は'foldlevel'を0に +設定するコマンドです。逆に|zR|は'foldlevel'をファイル中で最も深いレベルの値 +に設定するコマンドです。 + +つまり、フォールドを開いたり閉じたりするには2つの方法があるわけです。 +(A) フォールドレベルを設定する方法 + これを使うと、文章の構造を"ズームアウト"した上でカーソルを動かし、再度 + "ズームイン"することが可能です。 + +(B) |zo|や|zc|コマンドを使って個々のフォールドを開閉する方法 + これの場合は自分で開きたいフォールドだけを開き、それ以外は閉じたままにし + ておくことができます。 + +この両方は組み合せて使えます。最初に|zm|を数度使ってほとんどのフォールドを閉 +じ、次に|zo|で開きたいフォールドだけを開きます。もしくは|zR|で全部のフォール +ドを開いておいて、|zc|で一部のフォールドだけを閉じることもできます。 + +ただし、'foldmethod'が"indent"に設定されていると手動ではフォールドの定義がで +きません。これは段付けとフォールドレベルの関係を崩す可能性があるためです。 + +段付けを使ったフォールドの詳しい説明はリファレンスマニュアルの|fold-indent| +をご覧ください。 + +============================================================================== +*28.6* マーカを使ったフォールド + +文章中のマーカはフォールド範囲の始点と終点を指定するのに用います。これだとど +の行をフォールドに含むのかを正確に制御できます。逆に欠点は文章に変更を加える +必要があるという点です。 + +これを実行します。 > + + :set foldmethod=marker + +以下はCのプログラムっぽい例題です。 + + /* foobar () {{{ */ + int foobar() + { + /* return a value {{{ */ + return 42; + /* }}} */ + } + /* }}} */ + +フォールドした行にはマーカの前に書いてある文字列が表示されている点に気が付か +れたと思います。これだとフォールドしている内容がわかるのでとても便利です。 + +逆に行を移動させた後でマーカのペアが正しく呼応しなくなるととてもうっとおしく +なります。 + + /* global variables {{{1 */ + int varA, varB; + + /* functions {{{1 */ + /* funcA() {{{2 */ + void funcA() {} + + /* funcB() {{{2 */ + void funcB() {} + /* }}}1 */ + +それぞれ番号付きのマーカは指定のレベルでフォールドとなります。これは高いレベ +ルにあるフォールドをそこで停止します。フォールドの定義用として番号付きのマー +カはどこでも生成できます。他のフォールドの前で明示的にフォールドを止めたい場 +合には必ず終了マーカが必要となります。 + +マーカを使ったフォールドについての詳細はリファレンスマニュアル|fold-marker| +をご覧ください。 + +============================================================================== +*28.7* シンタックスを使ったフォールド + +vimではプログラム言語毎に個別のシンタックスファイルを用意しています。この +ファイルには各項目を何色で表示するかを定義しています。例えばこの文章をカラー +端末を使ってvimで見ると、"help"シンタックス用の指定色で表示されます。 +シンタックスファイルでは各項目に"fold"というパラメタを追加することができま +す。これにはシンタックスファイルを書いた上でその指定を追加しておかなければな +りません。決して簡単なことではありません。ですが一度それをやれば、完全に自動 +的にフォールドを行ってくれます。 +ここでは既存のシンタックスファイルを使うことを前提にしていますので、これ以上 +のことは説明しません。これまでに述べた方法でフォールドの開閉ができます。 +この時のフォールドはファイルの編集を始める時に自動的に生成/削除されます。 + +シンタックスを使ったフォールドについての詳細はリファレンスマニュアルの +|fold-syntax|をご覧ください。 + +============================================================================== +*28.8* 式を使ったフォールド + +これは段付けによるフォールドと同じような方法ですが、各行の段付けによって +フォールドレベルを求めるのではなく、フォールドレベルを計算するユーザ定義関数 +によって求めます。どの行が同じレベルに属するかを示すマーカのようなものを文章 +中に埋め込んでおいて使います。Eメールを例にあげましょう。メールでは引用部分 +の行頭に">"を付けます。引用部分をフォールドするにはこのようにします。 > + + :set foldmethod=expr + :set foldexpr=strlen(substitute(substitute(getline(v:lnum),'\\s','',\"g\"),'[^>].*','','')) + +これを実行すると次の文章はどうなるでしょう。 + +> 彼から来た返信(引用) +> 彼から来た返信(引用) +> > 私が書いた元の文章(二重引用) +> > 私が書いた元の文章(二重引用) +> 彼から来た返信(引用) + +上の例の'foldexpr'中の関数は次の意味です。(逆順です) + getline(v:lnum) 現在行を取得 + substitute(...,'\\s','','g') 行から空白類を削除 + substitute(...,'[^>].*','','')) 先頭の'>'以降を全て削除 + strlen(...) 文字列中で見つけた'>'の数をカウント + +":set"コマンドでは、全ての空白記号、ダブルクオート、バックスラッシュの前に +バックスラッシュが必要となります。注意してください。 +よくわからなくなってきたら、このコマンドで実際に設定されている内容をチェック +してください。 > + + :set foldexpr + +複雑な式を修正する時にはコマンド行補完を使いましょう。 > + + :set foldexpr=<Tab> +< +<Tab>の場所で実際にTAB記号を押します。vimは現在値を補いますから、それを自由 +に編集できます。 + +複雑な式を使いたい時は'foldexpr'にあなたが定義した関数を設定してください。 + +式を使ったフォールドの詳細についてはリファレンスマニュアルの|fold-expr|をご +覧ください。 + +============================================================================== +*28.9* 変更していな行をフォールドする + +同じウィンドウで'diff'オプションを設定するのは便利です。|vimdiff|コマンドは +これと同じことを行っています。例をあげしょう。 > + + setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1 + +これを同じファイルの異ったバージョンを表示している各ウィンドウで実行します。 +こうすると変更されていない行はフォールドされますので、両ファイルの差異がはっ +きりと解ります。 + +詳しくは|fold-diff|をご覧ください。 + +============================================================================== +*28.10* どのフォールド方法を使えばいいの? + +さてフォールドには述べてきたようないろいろな方法があるため、どの方法を使うの +が良いかわかりづらい場合があります。残念ながら、鉄則というのはないのですが、 +いくつか指針となりそうな点について述べます。 + +編集したい言語用にフォールドをサポートしたシンタックスファイルがあるのなら、 +おそらくそれを使うのがベストです。そういったファイルがなければ、それを書くの +もいいですが、これにはパターン検索のことをかなり知っている必要があります。 +これは簡単ではありませんが、一度作ってしまえば、手動でフォールドを定義しなく +てもよくなります。 + +手動でフォールドの範囲を指定する方法は構造を持たない文章に対しても使えます。 +その場合はフォールドの保存/復元に|:mkview|コマンドを使いましょう。 + +マーカを使う方法ではファイルを変更する必要があります。他の人とファイルを共有 +する場合や社内のコーディング基準に合わせる必要がある時には、この方法は使えな +いかもしれません。 +マーカを使った場合の最大の利点は、自分で明確にフォールドする場所を決められる +点です。このためフォールドをカット&ペーストした時に漏れを発生することを避け +られます。またフォールド行に表示するコメントの追加も可能です。 + +段付けを使ったフォールドはたいていのファイルで使えます。ですがいつもうまくい +くとは限りません。ですから他の方法ではできない場合に使うのが良いでしょう。 +とはいえ、アウトラインプロセッサとして使うのであれば、とても便利です。その場 +合は'shiftwidth'の1レベル=フォールドレベルとなるように指定しましょう。 + +式によるフォールドはほとんどどんな構造のテキストでもフォールドできます。指定 +方法も、フォールドの開始・終了を簡担に識別できる時には特に簡単です。 +ただし、フォールドを「式」方式で定義した場合でも、その方法が明確に定義できな +い部分については、「手動」方式に切り換えることができます。これを行っても既に +定義済のフォールドには影響ありません。ですから削除も追加も手動で行うことがで +きます。 + +============================================================================== + +Next chapter: |usr_29.txt| プログラム内の移動 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_29.jax b/ja/usr_29.jax new file mode 100644 index 000000000..a880c31da --- /dev/null +++ b/ja/usr_29.jax @@ -0,0 +1,637 @@ +COMMENT: プログラマー支援機能(tags、プレビュー、検索) +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_29.txt* For Vim version 6.1. Last change: 2001 Sep 09 + + VIM USER MANUAL - by Bram Moolenaar + + プログラム内の移動 + + +vimはコンピュータプログラマが作っています。ですからvimにプログラムを書くのを +補助する機能がたくさん入っているのは別に不思義なことではありません。識別子が +定義されている場所や使っている場所にジャンプする方法。別のウィンドウで宣言個 +所を参照する方法。この章と次の章ではこういった機能の説明をしましょう。 + +|29.1| タグの利用 +|29.2| プレビューウィンドウ +|29.3| プログラム内の移動コマンド +|29.4| グローバルな識別子の検索 +|29.5| ローカルな識別子の検索 + + Next chapter: |usr_30.txt| プログラムの編集 + Previous chapter: |usr_28.txt| フォールド(折り畳み) +Table of contents: |usr_toc.txt| + +============================================================================== +*29.1* タグの利用 + +タグって何でしょうか?これは何らかの識別子が宣言されている場所のことです。例 +えば、CやC++のプログラムの関数宣言がそうです。定義されたタグリストはタグ +ファイルの中に格納されます。vimはこのファイルにあるタグの定義を見てジャンプ +すべき場所を調べるのに使います。 +現在のディレクトリにある全Cソースのタグファイルを生成するには、このコマンド +を使います。 > + + ctags *.c + +"ctsgs"というのはvimとは独立した別コマンドです。たいていのUnixシステムには既 +に用意されています。もし入っていないのであれば、Exuberant ctags を次のサイト +で探してください。 + + http://ctags.sf.net ~ + +次にvimが動いている時に、ある関数の定義個所に移動したければ、このようなコマ +ンドでそれができます。 > + + :tag startlist + +このコマンドは"startlist"という関数を(別のファイルにあったとしても)探しま +す。またCTRL-] コマンドでは、カーソル下にある単語をタグとみなしてその定義場 +所にジャンプします。複数のCソースを調べてまわることを簡単にしてくれます。 +例えば、"write_block"という関数にいるとします。その中で"write_line"という関 +数を呼び出しています。でも"write_line"という関数はどこにあるのでしょう?そん +な時はカーソルを"write_line"の上に置いて、CTRL-] を押しましょう。その関数を +定義してある場所にジャンプすることでしょう。 +"write_line"関数の中でさらに"write_char"を呼び出しています。その関数の詳細を +調べる必要があります。今度も"write_char"の上にカーソルを動かして、CTRL-]を押 +しましょう。すると"write_char"の定義個所にジャンプするのです。 + + +-------------------------------------+ + |void write_block(char **s; int cnt) | + |{ | + | int i; | + | for (i = 0; i < cnt; ++i) | + | write_line(s[i]); | + |} | | + +-----------|-------------------------+ + | + CTRL-] | + | +----------------------------+ + +--> |void write_line(char *s) | + |{ | + | while (*s != 0) | + | write_char(*s++); | + |} | | + +--------|-------------------+ + | + CTRL-] | + | +------------------------------------+ + +--> |void write_char(char c) | + |{ | + | putchar((int)(unsigned char)c); | + |} | + +------------------------------------+ + +":tags"コマンドはそれまでに渡り歩いたタグを一覧で表示します。 + + :tags + # TO タグ FROM 行 in file/text ~ + 1 1 write_line 8 write_block.c ~ + 2 1 write_char 7 write_line.c ~ + > ~ + +では今度は戻りましょう。CTRL-Tコマンドを押すと直前のタグに戻ります。上の例で +あれば、"write_line"関数の中の"write_char"を呼んでいる個所に戻ります。 +このコマンドにはカウンタを付けていくつタグを戻るか指定できます。これでタグ先 +にジャンプするのも戻るのもできるようになりました。ではもう一度タグ先にジャン +プしましょう。次のコマンドはタグリストの先頭にあるタグにジャンプします。 > + + :tag + +コマンドの前にプレフィクスとして回数を与えていくつ先のタグにジャンプするか指 +定できます。例えば、":3tag"のように使います。CTRL-T でも同じように前に回数指 +定できます。 +結局、関数呼び出しを追いかけるのに CTRL-] を使い、逆に戻るのには CTRL-T を使 +うということです。自分がどこにいるのかを見るには":tags"が使えます。 + + +ウィンドウ分割 +-------------- + +":tag"コマンドはカレントウィンドウのファイルをジャンプ先の関数が書いてある +ファイルに置き換えます。しかし古いウィンドウばかりじゃなくて新しいウィンドウ +で見たいこともあると思いませんか?これにはまず":split"コマンドでウィンドウを +分割してから、続けて":tag"コマンドを使います。実はvimはこの両方をいっぺんに +やってくれる短縮コマンドを用意しています。 > > + + :stag tagname + +カレントウィンドウを分割してカーソル下にある単語にタグジャンプするのならこの +コマンドです。 > + + CTRL-W ] + +カウンタを指定した場合は、新しいウィンドウの行数がその値となります。 + + +追加のタグファイル +------------------ + +ファイルが多くのディレクトリに分れている場合、ディレクトリ毎にタグファイルを +作ることができます。その場合、vimはそのディレクトリの中で定義されているタグ +にしかジャンプできません。 +多数のタグファイルを探させるには、対象となるタグファイルが全て含まれるように +'tags'オプションを設定します。このようになります。 > + + :set tags=./tags,./../tags,./*/tags + +これは現在のファイルと同じディレクトリにある"tags"を探し、1つ親ディレクトリ +でも"tags"を探し、さらに全サブディレクトリの"tags"を探します。 +これはかなり多数の"tags"ファイルになりますが、これでも不十分かも知れません。 +例えば、"~/proj/src/"にあるファイルを編集している時に"~/proj/sub/tags"ファイ +ルを探し出せません。このような場合のためにvimではあるディレクトリ下の全ディ +レクトリを検索するように試みます。次のようにします。 > + + :set tags=~/proj/**/tags + + +1つのタグファイル +------------------ + +vimがタグファイルをいろんな場所から探そうとする場合、ハードディスクをガリガ +リとアクセスするのが聞こえるかも知れません。そのため多少遅く感じるかもしれま +せん。こういった場合は少々時間をかけてでも大きめのタグファイル1本を作った方 +が良いでしょう。夜中にやっても構いません。 +これには上で述べたディレクトリツリーの全体を検索してくれる"Exuberant ctags" +プログラムが必要です。 > + + cd ~/proj + ctags -R . + +この"Exuberant ctags"がいいのは、いろんなファイルタイプを認識してくれる点で +す。つまりCやC++のプログラムだけではなく、Eiffelやvimスクリプトでさえ正 +しく動くのです。このチューニング方法は"ctags"のドキュメントをご覧ください。 +さて、上で大きなタグファイルを作っておけば、後はvimにそれを教えるだけです。 > + + :set tags=~/proj/tags + + +多重定義 +-------- + +ある関数が何度も定義されている(いくつかのクラスでメソッド名が重複している場 +合も)場合、":tag"コマンドでは最初に見つかった場所にジャンプします。編集中の +ファイルで見つかった時はそれが使われます。 +この時、このコマンドで同じタグファイルの他の定義箇所にジャンプできます。 > + + :tnext + +さらに別の定義を探すにはこれを繰り返します。同じものが多数ある場合はどれにす +るかを選ぶことができます。 > + + :tselect tagname + +vimは次のような選択可能なリストを表示します。 + + # pri kind tag file ~ + 1 F f mch_init os_amiga.c ~ + mch_init() ~ + 2 F f mch_init os_mac.c ~ + mch_init() ~ + 3 F f mch_init os_msdos.c ~ + mch_init(void) ~ + 4 F f mch_init os_riscos.c ~ + mch_init() ~ + Enter nr of choice (<CR> to abort): ~ + +この一覧からジャンプしたい(行頭の)番号を入力してジャンプすることができます。 +他のカラムはその一致場所がどこにあるかについての情報が提示されます。 + +一致したタグ間を移動するには、このようなコマンド群を用います。 + + :tfirst 最初のヒット個所に移動 + :[count]tprevious [count]数分、前(previous)のヒット個所に移動 + :[count]tnext [count]数分、後ろ(next)のヒット個所に移動 + :tlast 最後のヒット個所に移動 + +[count] を省略した時は1を指定したものと扱います。 + + +タグ名の推測 +------------ + +長いタグ名の入力を省くにはコマンド行の補完を利用するのがよいでしょう。最初の +数文字を入力してから<Tab>キーを押します。 > + + :tag write_<Tab> + +すると、最初に見つかったタグ名を展開します。それが望みのものでない場合は、目 +的のタグが見つかるまで<Tab>キーを押してください。 +場合によっては関数名の一部しか知らない場合もあるでしょう。また、始めの数文字 +は同じで後半は違っているようなタグが大量にある場合もそうでしょう。こういった +場合はパターンを使ってタグを指定することができます。 +例えば、"block"という文字列をタグ名のどこかに含んでいるようなタグにジャンプ +したいとしましょう。最初にこう入力します。 > + + :tag /block + +ここで、コマンド行の補完をします。<Tab>キーを押しましょう。vimは"block"とい +う文字列を含んでいるタグを探し、最初にヒットしたものを表示します。 +タグ名の前にある"/"は、その指定が文字列ではなくパターン指定であることを示し +ます。ここでは検索パターンでの全ての機能が使えます。例えば、"write_"で始まる +タグを選びたければ、こうします。 > + + :tselect /^write_ + +最初の"^"はタグ名が"write_"で始まることを示します。この指定がないと、タグ名 +の途中に"write_"を含む文字列もヒットしてしまいます。同じように"$"を行末に使 +えば、タグ名の最後に合致するパターンを指定することもできます。 + + +タグブラウザ +------------ + +CTRL-]を使うと、カーソル下の識別子の定義場所にジャンプできるのを利用すると、 +識別子のリストを目次のように使えます。例を示しましょう。 +最初に識別子のリストを作ります。(これにはExuberant ctagsが必要です) > + + ctags --c-types=f -f functions *.c + +次にvimをファイル名指定なしで起動し、上で作ったファイル("functions")を縦分割 +したウィンドウで開きます。 > + + vim + :vsplit functions + +このウィンドウには全関数のリストが入っています。それ以外にもいろいろあります +が、ここでは無視します。":setlocal ts=99"を実行して少しだけ掃除しましょう。 +このウィンドウでこのようなマップを定義します。 > + + :nnoremap <buffer> <CR> 0ye<C-W>w:tag <C-R>"<CR> + +カーソルを移動したい関数名の行まで動かし、そこで<Enter>を押します。vimは他の +ウィンドウにカーソルを動かし、選択した関数にジャンプします。 + + +関連項目 +-------- + +タグ名の大文字/小文字を無視するようにしたければ、'ignorecase'をonにします。 + +'tagbsearch'オプションはタグファイルがソートしてあるかどうかを示します。デ +フォルトではタグファイルをソートしているものとみなします。これはタグの検索を +極めて高速に行いますが、逆にソートしていないタグファイルの場合はうまく動きま +せん。 + +'taglength'オプションはタグに識別に使う最大文字数を指定するのに使います。 + +"SNiFF+"プログラムを使う場合は、vimは|sniff|に対するインタフェースを用意して +います。なお、"SNiFF+"は商用のアプリケーションです。 + +"cscope"はフリーのプログラムです。これは識別子の宣言個所を探すだけではなく、 +それを使っている個所のリストも作成してくれます。|cscope|をご覧ください。 + +============================================================================== +*29.2* プレビューウィンドウ + +関数呼び出しがあるソースコードを書く時にはそのパラメタを正確に書くことが必要 +です。その関数に渡せる値を知るには、その関数の定義を見るのが良いでしょう。タ +グはこういった場合にとても便利に使えます。その場合は別ウィンドウにその定義を +表示する方が便利でしょう。このような場合にはプレビューウィンドウを使います。 +例えば、"write_char"関数の定義をプレビューウィンドウを開くにはこうします。 > + + :ptag write_char + +vimはウィンドウを開き、"write_char"のタグにジャンプします。そして最初の場所 +に戻ってきます。ですから、CTRL-Wコマンドを使うことなく、目的の入力を続けるこ +とができるのです。 +関数名が編集中のテキストにあるのなら、次のコマンドでプレビューウィンドウにそ +の定義を表示することができます。 > + + CTRL-W } + +カーソル下にある単語が定義されている場所のテキストを自動的に表示してくれる +スクリプトもあります。|CursorHold-example|をご覧ください。 + +プレビューウィンドウを閉じるにはこのコマンドを使います。 > + + :pclose + +プレビューウィンドウで指定のファイルを編集するには":pedit"を使います。これは +例えばヘッダファイルを編集したい時に便利です。 > + + :pedit defs.h + +最後に、":psearch"という検索コマンドがあります。これは現在編集しているファイ +ルとincludeしているファイルの中から指定の単語を探しヒットしたものをプレビュ +ーウィンドウに表示します。これは特にタグファイルを生成していないようなライブ +ラリ関数を使う時に便利です。このコマンドはこのように使います。 > + + :psearch popen + +これはプレビューウィンドウに"stdio.h"ファイルのpopen()関数のプロトタイプを表 +示します。 + + FILE *popen __P((const char *, const char *)); ~ + +プレビューウィンドウを開いた時の行数は'previewheight'オプションで指定するこ +とができます。 + +============================================================================== +*29.3* プログラム内の移動コマンド + +プログラムには構造があります。vimはそういった項目を認識します。一部のコマン +ドではそれを移動に使うことができます。 +例えば、Cのプログラムでは次のような構成の個所がよくあります。 + + #ifdef USE_POPEN ~ + fd = popen("ls", "r") ~ + #else ~ + fd = fopen("tmp", "w") ~ + #endif ~ + +ですが、とても長くなったり何重にも入れ子になったりする場合があります。この場 +合は"#ifdef"にカーソルを動かして % コマンドを使います。vimは"#else"の部分に +ジャンプします。もう一度 % を押すと、"#endif"に移動します。さらにもう一度 % +を押すと最初の"#ifdef"に戻ります。 +入れ子になっている場合は、vimは呼応する項目を探そうとします。これを使うと、 +"#endif"を忘れていないかどうかを簡単にチェックできます。 +"#if"~"#endif"の途中にカーソルがある場合は、その先頭に戻るコマンドがありま +す。 > + + [# + +もし"#if"や"#ifdef"が見つからなければvimは警告音を出します。逆に次の"#else" +や"#endif"にジャンプするコマンドもあります。 > + + ]# + +この2つのコマンドを使うと"#if"~"#endif"のブロックをスキップするこができま +す。例をあげましょう。 + + #if defined(HAS_INC_H) ~ + a = a + inc(); ~ + # ifdef USE_THEME ~ + a += 3; ~ + # endif ~ + set_width(a); ~ + +カーソルが最後の行にある時、"[#"を押すと最初の行に移動します。途中にある入れ +子の"#ifdef"~"#endif"のブロックはスキップされたわけです。 + + +コードブロック内の移動 +---------------------- + +Cではコードブロックを{ }で囲みます。これが多少長くなる場合もあります。外側 +のブロックの開始位置にジャンプするには"[["コマンドを使います。 逆に末尾を探 +すには"]["を使います。これは"{"や"}"が行頭にあるものとして動きます。 +"[{"コマンドは現在のブロックの先頭まで移動します。同じレベルにある"{"や"}"は +無視します。"]}"は末尾に移動します。 +整理するとこのようになります。 + + function(int a) + +-> { + | if (a) + | +-> { + [[ | | for (;;) --+ + | | +-> { | + | [{ | | foo(32); | --+ + | | [{ | if (bar(a)) --+ | ]} | + +-- | +-- break; | ]} | | + | } <-+ | | ][ + +-- foobar(a) | | + } <-+ | + } <-+ + +C++やJavaでプログラムを書く時には、一番外側の{ }はクラスを示すブロックです。 +次のレベルの{ }はメソッド用です。クラスの中で"[m"を使うと、直前にあるメソッ +ドの開始位置を探します。逆に"]m"は次のメソッドの末尾を探します。 + +さらに、"[]"は1つ前の関数の末尾まで戻り、"]]"は次の関数の最初に進みます。 +関数の末尾には1桁目が"}"となっているものとみなします。 + + int func1(void) + { + return 1; + +----------> } + | + [] | int func2(void) + | +-> { + | [[ | if (flag) + start +-- +-- return flag; + | ][ | return 2; + | +-> } + ]] | + | int func3(void) + +----------> { + return 3; + } + +カッコ類の呼応、( )や{ }や[ ]間を移動するのであれば、"%"も使えるのを忘れない +ようにしましょう。このコマンドは間に多くの行があっても正しく動きます。 + + +カッコ内の移動 +-------------- + +"[("と"])"コマンドは"[{"と"]}"とほとんど同じです。違っているのは、{ }ではな +く、( )に対して働く点です。 +> + [( +< <-------------------------------- + <------- + if (a == b && (c == d || (e > f)) && x > y) ~ + --------------> + --------------------------------> > + ]) + +コメント内の移動 +---------------- + +コメントの開始位置まで戻るには"[/"コマンドを使います。コメントの終了位置まで +進むには"]/"を使います。この機能は /* ~ */ 形式のコメントでのみ使えます。 + + +-> +-> /* + | [/ | * A comment about --+ + [/ | +-- * wonderful life. | ]/ + | */ <-+ + | + +-- foo = bar * 3; --+ + | ]/ + /* a short comment */ <-+ + +============================================================================== +*29.4* グローバルな識別子の検索 + +Cのプログラムを編集していて、ある変数が"int"で宣言していたか"unsigned"だっ +たか解らなくなりました。こういった時には"[I"コマンドを使います。カーソルが +"column"という単語の上にあったとしましょう。そこで、 > + + [I + +と入力するとvimは該当行のリストを表示します。これは現在のファイルだけではな +く、全インクルードファイルも対象となります。(さらにその中でインクルードして +いるファイルも含みます)例えば、次のようになります。 + + structs.h ~ + 1: 29 unsigned column; /* column number */ ~ + +これがタグやプレビューウィンドウを使うよりいいのはインクルードファイルも検索 +できる点です。ほとんどの場合は正しい場所を探し出してくれます。タグファイルが +古かったり、そのインクルードファイル用のタグがない場合でもうまく動いてくれま +す。 +ただし、"[I"コマンドを使う時には、いくつか守らなければならない点があります。 +まず最初に'include'オプションでどのようにファイルがインクルードされるのかを +定義しなければなりません。デフォルト値はCとC++用の値となっています。他の +言語では変更する必要があるかもしれません。 + + +インクルードファイルの場所 +-------------------------- + +vimは'path'オプションの指定に従ってインクルードファイルを検索します。ディレ +クトリがない場合、見つけられないインクルードファイルがあるかもしれません。 +このコマンドを使えばそういったパターンを見つけることができます。 > + + :checkpath + +これは見つけられなかったインクルードファイルのリストを表示します。インクルー +ドファイルの中にあるインクルードも見つけてくれます。出力結果はこのようになり +ます。 + + --- Included files not found in path --- ~ + <io.h> ~ + vim.h --> ~ + <functions.h> ~ + <clib/exec_protos.h> ~ + +現在のファイルがインクルードしている"io.h"は見つかりませんでした。"vim.h"は +見つかりましたので、":checkpath"はさらにその中でインクルードしているものも +チェックします。ですが、"vim.h"ががインクルードしている"functios.h"ファイル +も"clib/exec_protos.h"ファイルも見つかりませんでした。 + + Note: + vimはコンパイラではありません。"#ifdef"ステートメントについては考慮 + しません。つまり"#if NEVER"という記述があったとしても、"#include"ス + テートメントを全て調べるわけです。 + +見つけられなかったファイルを修正するには'path'オプションにディレクトリを追加 +します。これを見つけるにはMakefileを見るのが良いでしょう。"-I"というパターン +がある行、例えば"-I/usr/local/X11"といった行を探して、それを追加します。 > + + :set path+=/usr/local/X11 + +サブディレクトリが大量にある場合は、ワイルドカード"*"が使えます。このように +使います。 > + + :set path+=/usr/*/include + +上の例は"/usr/local/include"や"/usr/X11/include"といった場所にあるファイルを +探すようになります。 + +インクルードファイルが入っているディレクトリツリー全体を使うようなプロジェク +トでは、"**"という指定が便利でしょう。この指定はそのディレクトリ以下の全ての +サブディレクトリを探してくれます。例えばこのように指定します。 > + + :set path+=/projects/invent/**/include + +上の指定は次のようなディレクトリにあるファイルを探してくれます。 + + /projects/invent/include ~ + /projects/invent/main/include ~ + /projects/invent/main/os/include ~ + など + +これ以外にも可能性があります。'path'オプションの解説をチェックしてください。 +実際にどのインクルードファイルを探し出したのかを見たければ、こうします。 > + + :checkpath! + +これでインクルードファイルの(長大な)リストを得られます。リストを少しでも短か +くするため、既に展開結果を出力済のインクルードファイルが2回以上現われた場合 +は"(Already listed)"とだけ表示します。 + + +ヒット個所にジャンプする +------------------------ + +"[I"はテキストの1行だけをリストにします。最初の項目の詳細を見たければ、次の +コマンドでその場所にジャンプできます。 > + + [<Tab> +< +<Tab>というのはCTRL-Iのことですから、これは"[ CTRL-I"でも入力できます。 + +"[I"で生成するリストには各行の最初に番号がついています。最初の項目以外の他の +項目にジャンプしたければ、その番号をカウンタとして指定します。 > + + 3[<Tab> + +これはリストの3番目の項目にジャンプします。ジャンプする前の場所に戻る時には +CTRL-Oが使えますので、覚えておきましょう。 + + +関連コマンド +------------ + + [i 最初に一致したものだけをリスト化する + ]I カーソル位置以降のみをリスト化する + ]i カーソル下にある最初の項目だけをリスト化する + + +定義済の識別子の検索 +-------------------- + +"[I"コマンドはあらゆる識別子を探します。"#define"で定義してあるマクロだけを +探すのであれば、これを使います。 > + + [D + +繰り返しになりますが、これはインクルードファイルの中を検索します。"[D"がどの +ように項目を定義している行を対象とするのかは'define'オプションで指定します。 +CやC++以外の言語でも正しく動くように変更できます。 +この"[D"の関連コマンドには次のようなものがあります。 + + [d 最初に一致したものだけをリスト化 + ]D カーソル下の項目だけをリスト化 + ]d カーソル下にある最初の項目だけをリスト化 + +============================================================================== +*29.5* ローカルな識別子の検索 + +"[I"コマンドはインクルードファイルの中を探します。編集中のファイルだけを対象 +としてカーソル位置の単語を探し、最初に見つかった場所にジャンプするにはこのコ +マンドを使います。 > + + gD + +(このコマンドは「定義に移動(=Goto Definition)」の略と覚えましょう)このコマ +ンドはローカルに定義(Cの用語なら"static")された変数や関数を見つける時にとて +も便利です。例を示しましょう。(カーソルは"counter"の上にあるとします) + + +-> static int counter = 0; + | + | int get_counter(void) + gD | { + | ++counter; + +-- return counter; + } + +さらに検索範囲を制限して、現在の関数だけを探すのであればこのコマンドを使いま +す。 > + + gd + +これはカーソル位置の単語を探すときに、まず関数の先頭まで戻り、最初にその単語 +が現れる個所を探します。実際には、まず1桁目に"{"がある行の上の空白行まで戻 +ります。次にその単語を前方検索します。例を示します。(カーソルは"idx"の上にあ +るとします) + + int find_entry(char *name) + { + +-> int idx; + | + gd | for (idx = 0; idx < table_len; ++idx) + | if (strcmp(table[idx].name, name) == 0) + +-- return idx; + } + +============================================================================== + +Next chapter: |usr_30.txt| プログラムを編集する + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: From 337ce9929beb2570475ab355fc22eb8092f6f937 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 29 Jan 2005 13:01:27 +0000 Subject: [PATCH 016/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@16 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/usr_29.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/usr_29.jax b/ja/usr_29.jax index a880c31da..34d75388c 100644 --- a/ja/usr_29.jax +++ b/ja/usr_29.jax @@ -3,7 +3,7 @@ STATUS: finished 6.3.054 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_29.txt* For Vim version 6.1. Last change: 2001 Sep 09 +*usr_29.txt* For Vim version 6.3. Last change: 2004 Feb 12 VIM USER MANUAL - by Bram Moolenaar From 02912f54f4b857256324c173bde6740addff315b Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 29 Jan 2005 15:37:27 +0000 Subject: [PATCH 017/783] add: all of user manual files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@17 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/usr_30.jax | 662 ++++++++++++++++++ ja/usr_31.jax | 277 ++++++++ ja/usr_40.jax | 674 ++++++++++++++++++ ja/usr_41.jax | 1781 ++++++++++++++++++++++++++++++++++++++++++++++++ ja/usr_42.jax | 395 +++++++++++ ja/usr_43.jax | 179 +++++ ja/usr_44.jax | 760 +++++++++++++++++++++ ja/usr_45.jax | 433 ++++++++++++ ja/usr_90.jax | 522 ++++++++++++++ ja/usr_toc.jax | 344 ++++++++++ 10 files changed, 6027 insertions(+) create mode 100644 ja/usr_30.jax create mode 100644 ja/usr_31.jax create mode 100644 ja/usr_40.jax create mode 100644 ja/usr_41.jax create mode 100644 ja/usr_42.jax create mode 100644 ja/usr_43.jax create mode 100644 ja/usr_44.jax create mode 100644 ja/usr_45.jax create mode 100644 ja/usr_90.jax create mode 100644 ja/usr_toc.jax diff --git a/ja/usr_30.jax b/ja/usr_30.jax new file mode 100644 index 000000000..c82569308 --- /dev/null +++ b/ja/usr_30.jax @@ -0,0 +1,662 @@ +COMMENT: プログラマー支援機能(コンパイル、インデント、タブ、整形) +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_30.txt* For Vim version 6.3. Last change: 2004 Jan 17 + + VIM USER MANUAL - by Bram Moolenaar + + プログラムの編集 + + +vimにはコンピュータプログラムを書くのを助けるためのコマンドをいろいろと用意 +しています。プログラムをコンパイルしたり、そこで出たエラー行に直接ジャンプ +したりできます。また多くの言語で自動的な段付けの設定ができますし、コメント +の整形も簡単です。 + +|30.1| コンパイル +|30.2| Cのファイルの段付け(インデント) +|30.3| 自動段付け(インデント) +|30.4| その他の段付け(インデント) +|30.5| タブと空白 +|30.6| コメントの整形 + + Next chapter: |usr_31.txt| GUIの活用 + Previous chapter: |usr_29.txt| プログラム中を動く +Table of contents: |usr_toc.txt| + +============================================================================== +*30.1* コンパイル + +vimには"quickfix"と呼ばれるコマンド群があります。これはvimの中からコンパイル +をし、発生したエラー位置にジャンプして(直せるなら)修正するということを可能に +します。そして、コンパイルをしては新たなエラーを修正し、というのを最 +終的にエラーが出なくなるまで繰り返します。 + +次のコマンドは"make"(入力したパラメタもそのまま渡します)プログラムを実行し +て、結果を取り込みます。 > + + :make {arguments} + +エラーが発生した時は、それを取り込み、最初にエラーが発生した場所にカーソルを +移動します。 +次に":make"を実行した時の例を掲げます。(通常は:makeではもっと大量の意味のあ +るエラーを吐いてくれます)":make"を入力すると、このような表示が画面に出てき +ます。 + + :!make | &tee /tmp/vim215953.err ~ + gcc -g -Wall -o prog main.c sub.c ~ + main.c: In function 'main': ~ + main.c:6: too many arguments to function 'do_sub' ~ + main.c: At top level: ~ + main.c:10: parse error before '}' ~ + make: *** [prog] Error 1 ~ + + 2 returned ~ + "main.c" 11L, 111C ~ + (3 of 6): too many arguments to function 'do_sub' ~ + Hit ENTER or type command to continue ~ + +これを見ると、"main.c"でエラーが発生しているのがわかります。ここで<Enter>を +押すと、vimは"main.c"を表示した上でカーソルを最初のエラー位置の6行目に移動 +します。vimはエラーメッセージを見て、どこにジャンプすべきかを認識しますから +利用者側でファイル名や行番号を指定する必要はありません。 + + +---------------------------------------------------+ + |int main() | + |{ | + | int i=3; | + cursor -> | do_sub("foo"); | + | ++i; | + | return (0); | + |} | + |} | + | ~ | + |(3 of 12): too many arguments to function 'do_sub' | + +---------------------------------------------------+ + +次のコマンドで次のエラーの発生個所まで移動します。 > + + :cnext + +vimは10行目にジャンプします。これは最後の行です。ここに余分な"}"があります。 +メッセージが全部表示できなければ、vimはエラーメッセージを短かく省略します。 +全体メッセージを見るにはこうします。 > + + :cc + +また":clist"コマンドを使うと全エラーメッセージの概略を見ることができます。 +その出力は次のようになります。 > + + :clist +< 3 main.c: 6:too many arguments to function 'do_sub' ~ + 5 main.c: 10:parse error before '}' ~ + +ここで表示されるのはvimがファイル名と行番号を認識できた行だけです。vimにとっ +てはここに表示した行だけが意味のあるもので、残りはただの文字の羅列に過ぎない +のです。とはいっても、認識できなかった行に必要なことを含んでいる場合もありま +す。例えばリンカが出す未定義の関数に関する情報などです。こういったものも含め +て出力するにはコマンドに"!"を付けます。 > + + :clist! +< 1 gcc -g -Wall -o prog main.c sub.c ~ + 2 main.c: In function 'main': ~ + 3 main.c:6: too many arguments to function 'do_sub' ~ + 4 main.c: At top level: ~ + 5 main.c:10: parse error before '}' ~ + 6 make: *** [prog] Error 1 ~ + +vimは現在のエラー行をハイライトで表示します。1つ前のエラーに戻るにはこうしま +す。 +> + :cprevious + +他にも次のようなエラーリストを用いた移動コマンドがあります。 + + :cfirst 最初のエラー + :clast 最後のエラー + :cc 3 3つ目のエラー + + +他のコンパイラの使用 +-------------------- + +":make"コマンドを実行した時に動くプログラムの名称は'makeprg'オプションで定義 +します。通常は"make"に設定してありますが、例えば Visual C++ のユーザなら、次 +のコマンドを実行してこれを"nmake"に設定すべきでしょう。 > + + :set makeprg=nmake + +また、このオプションにはパラメタを含むこともできます。特殊文字はバックスラッ +シュでエスケープしてください。例を示します。 > + + :set makeprg=nmake\ -f\ project.mak + +また、コマンド指定には特別なvimキーワードが使えます。例えば、"%"文字は現在編 +集中のファイル名に置き換わります。次のようなコマンドを実行したとします。 > + + :set makeprg=make\ % + +main.cを編集している時であれば、":make"は次のようなコマンドを実行することに +なります。 > + + make main.c + +このままではあまり便利とはいえません。では、":r"修飾子(modifier)を使って少し +コマンドを改良しましょう。 > + + :set makeprg=make\ %:r.o + +これで、":make"を行うと次のコマンドを実行することになります。 > + + make main.o + +こういった修飾子についての詳細は|filename-modifiers|をご覧ください。 + + +古いエラーリスト +---------------- + +":make"でプログラムを作ったとします。あるファイルで警告メッセージが出、また +別のファイルでエラーが出たとします。修正したエラーが本当に直っているかを調べ +るために、再度":make"を実行します。次に警告メッセージを見たくなります。です +が直前のエラーリストには表示されていません。なぜなら警告が出ているだけのファ +イルは再コンパイルしないからです。この場合、このコマンドで前回のエラーリスト +に戻ることができます。 > + + :colder + +ここで":clist"と":cc {nr}"を使って警告が発生した場所にジャンプします。 +エラーリストを新しいものに切り換えるのはこうします。 > + + :cnewer + +vimは10個のエラーリストを覚えています。 + + +コンパイラの変更 +---------------- + +使っているコンパイラが出すエラーメッセージのフォーマットをvimに教えなければ +なりません。これは'errorformat'オプションで指定します。このオプションの記述 +方法はとても複雑ですが、ほとんどどんなコンパイラにも合せることができるもので +す。詳しい内容については|errorformat|をご覧ください。 + +様々なコンパイラを使っている場合'makeprg'オプションや'errorformat'オプション +を毎回設定していては大変です。vimではそのために簡便な方法を用意しています。 +例えば、Microsoft Visual C++ を使うように変更するのであればこのようにします。 +> + :compiler msvc + +このコマンドは"msvc"というコンパイラ用のvimスクリプトを読み込み、適切なオプ +ション設定をしてくれます。 +自力でコンパイラ用スクリプトを作ることもできます。|write-compiler-plugin|を +ご覧ください。 + + +出力のリダイレクト +------------------ + +":make"コマンドによって実行したプログラムの出力はエラーファイルにリダイレク +トされます。これがどのように動くかは'shell'オプションなどいろいろな要因に左 +右されます。":make"コマンドでうまくプログラムの出力を拾えない場合は'makeef' +オプションと'shellpipe'オプションを調べてください。また'shellquote'オプショ +ンと'shellxquote'オプションも調べた方が良いかもしれません。 + +":make"でエラーファイルをリダイレクトしてくれない場合は、他のウィンドウ(vim +の分割ウィンドウではなく別セッションのシェルなどのウィンドウ)でプログラムを +コンパイルして、その出力をファイルに落としておく方法もあります。そして、この +ようにファイルを読み込ませるのです。 > + + :cfile {filename} + +この場合も":make"の場合と同様にエラー行にジャンプしたりできます。 + +============================================================================== +*30.2* Cのファイルの段付け(インデント) + +行をきちんと段付けしてあるプログラムというのはとても読み易いものです。vimで +は段付けのサポート機能をいろいろと用意しています。 +Cのプログラムであれば'cindent'オプションをonに設定します。vimはCプログラム +のことをいろいろ解っていますので、自動的に段付けを行うという難業に挑みます。 +1レベル分の段付けでの文字数の指定は'shiftwidth'オプションで行います。4桁に +しておけば問題ないでしょう。1回の":set"コマンドで両方を設定できます。 > + + :set cindent shiftwidth=4 + +このオプションをonに設定しておくと例えば、"if (x)"と入力した次の行では自動的 +に1レベル分段付けされます。 + + if (flag) + Automatic indent ---> do_the_work(); + Automatic unindent <-- if (other_flag) { + Automatic indent ---> do_file(); + keep indent do_some_more(); + Automatic unindent <-- } + +また、波カッコ({ })をどこかで入力すると、"{"の時はその次の行を段付けし、"}" +の時は1レベル段付けを解除します。あなたが今から入力しようとしている文字を +vimは予測できませんので、"}"の入力があると直後に段付けの解除を行います。 + +自動段付けによる効用として、コードに潜むバグを早いうちにつぶす役に立つという +点があります。関数の最後で"}"を入力した時に、自動段付けで思っていたよりも多 +い段付けになっていれば、それだけで"}"を忘れているだろうというのがわかります。 +"%"コマンドを使って、入力した"}"と呼応している"{"を探しましょう。 +同じように")"や";"を忘れた場合も余分な段付けが残ります。つまり、思っていたよ +りも行頭の空白が多ければ、それより上を調べるようにしましょう。 + +フォーマットの汚ないコードや、挿入削除を繰り返したコードでは、行の段付けをや +り直す必要があります。"="オペレータでこれができます。一番単純なやり方はこう +です。 > + + == + +これは現在行の段付けを行います。他のオペレータと同様に3つの範囲指定の方法が +あります。ビジュアルモードでは"="で選択行を段付けします。また便利な"a{"とい +う現在の{ }で囲まれたブロックを選択できる便利なテキストオブジェクトがありま +す。これを使うとカーソルのある場所のコードブロックを段付けします。 > + + =a{ + +また、コード全体の段付けがまずいのなら、ファイル全体を最初から段付けさせるこ +ともできます。 > +> + gg=G + +ただ、手動で丁寧に段付けしてあるファイルに対してこれを実行しないでください。 +自動段付けはおおむね良い仕事をしますが、場合によってはそのルールに従わない書 +き方をしたい場合もあることでしょう。 + + +段付けのスタイル設定 +------------------------ + +段付けのスタイルは人によって様々です。デフォルトでもvimはプログラマーの90%が +やっているような方法で段付けをかなりうまくこなします。それでも違ったスタイル +というのは存在します。もし必要なら'cinoptions'オプションを使って段付けのスタ +イルをカスタマイズできます。 +デフォルトでは'cinoptions'は空です。その場合vimはデフォルトのスタイルで段付 +けします。デフォルトから変えたい点についていろいろな設定を追加できます。例え +ば、波カッコをこのようにレイアウトしたいとしましょう。 + + if (flag) ~ + { ~ + i = 8; ~ + j = 0; ~ + } ~ + +これにはこのコマンドを使います。 > + + :set cinoptions+={2 + +他にも多くの設定ができます。|cinoptions-values|をご覧ください。 + +============================================================================== +*30.3* 自動段付け + +Cのファイルを編集する都度、手で'cindent'オプションをonにするのはとても面倒 +です。このコマンドはこれを自動的に行ってくれます。 > + + :filetype indent on + +実は、これはCのファイルの時に'cindent'をonにするだけでなく、ずっといろんな +ことを行います。その第一はファイルタイプの認識を可能にする点です。これはシン +タックスハイライトに使っているのと同じ仕掛けです。 +既知のファイルタイプであれば、vimはこのタイプのファイルを処理できる段付け情 +報ファイルを探します。vimの配布物には様々なプログラム言語用のものを多数含ん +でいます。この段付け情報ファイルは編集しようとしているファイル用に自動段付け +を行うように準備します。 + +自動段付け処理が好みでなければ、こうしてoffに戻すこともできます。 > + + :filetype indent off + +ある特定タイプのファイルの時に段付けをしたくなければ、こうすれば実現できま +す。これを行う1行だけのファイルを作りましょう。 > + + :let b:did_indent = 1 + +次にこれをその特定の名前で保存する必要があります。 + + {directory}/indent/{filetype}.vim + +上の{filetype}は、"cpp"とか"java"といったファイルタイプ名です。実際にvimは検 +出する名称はこのコマンドで見ることができます。 > + + :set filetype + +このファイルの場合なら出力は次のようになります。 + + filetype=help ~ + +ですから、{filetype}には"help"を使うわけです。 +{directory}部分にはランタイムディレクトリを指定します。このコマンドの出力結 +果を見てください。 > + + set runtimepath + +出力されたうち、先頭から最初のカンマの前までを使います。つまり、上のコマンド +の実行結果がこうだったとしましょう。 + + runtimepath=~/.vim,/usr/local/share/vim/vim60/runtime,~/.vim/after ~ + +この場合なら{directory}には"~/.vim"を使います。結局ファイル名は次のようにな +ります。 + + ~/.vim/indent/help.vim ~ + +段付けをoffにするのではなく、独自の段付けファイルを書くこともできます。この +方法は|indent-expression|で説明しています。 + +============================================================================== +*30.4* その他の段付け + +自動段付けで一番シンプルなのは'autoindent'オプションを使うことです。これは直 +前の行と同じ段付けを行います。それよりほんの少し賢いのは'smartindent'オプ +ションです。これは段付けファイルが提供されていない言語では便利に使えるでしょ +う。'smartindent'は'cindent'ほどではありませんが、'autoindent'よりは賢いで +す。 +'smartindent'をonにすると、"{"毎に段付けレベルが1つづつ深くなり、"}"毎にレ +ベルが浅くなります。また、'cinwords'オプションで定義してある単語のどれかが現 +れる毎に段付けレベルが深くなります。行頭が"#"の行は特別扱いで、段付けは省か +れます。これはプリプロセッサのディレクティブが常に1桁目であるためです。その +次の行では段付けは元に戻ります。 + + +段付けの訂正 +------------ + +直前の行と同じ段付けをするために'autoindent'や'smartindent'を使っていると、 +その行の段付けを'shiftwidth'分だけ変更したいことが頻繁に起こります。これを素 +早くやるには挿入モードでCTRL-DとCTRL-Tを使いましょう。 +例えば、シェルスクリプトを編集中にこのように入力したいとしましょう。 + + if test -n a; then ~ + echo a ~ + echo "-------" ~ + fi ~ + +まずオプション設定を次のようにします。 > + + :set autoindent shiftwidth=3 + +次に最初の行から入力を始めます。行末で<Enter>を押して2行目に移ります。 + + if test -n a; then ~ + echo ~ + +ここで段付けが一つ必要です。CTRL-Tを押します。するとこうなります。 + + if test -n a; then ~ + echo ~ + +挿入モードでCTRL-Tコマンドを使うと、1つ分の'shiftwidth'の段付けを追加しま +す。行のどの場所にカーソルがあるかは関係ありません。 +2行目の入力を続けます。<Enter>を押して3行目にかかります。ここでは段付けに +問題ありません。<Enter>を押して最後の行となります。この時点でこのように見え +ているでしょう。 + + if test -n a; then ~ + echo a ~ + echo "-------" ~ + fi ~ + +余分な段付けを削るには最後の行でCTRL-Dを押します。これは段付け情報を1レベル +分'shiftwidth'を削除します。行のどこにカーソルがあっても構いません。 +通常モードの時は"<<"と">>"コマンドを使うと行が左右にシフトします。"<"と">"は +オペレータですので、いつもの3種類の方法で段付けの行範囲を指定できます。次の +ような組み合せは便利です。 > + + >i{ + +これはカーソルのあるブロック全体、{ }の中を1レベル段付けします。"{"と"}"の +行自体は段付けされませんが、">a{"コマンドなら段付けします。下の例ではカーソ +ルが"printf"にあるとします。 + + original text after ">i{" after ">a{" + + if (flag) if (flag) if (flag) ~ + { { { ~ + printf("yes"); printf("yes"); printf("yes"); ~ + flag = 0; flag = 0; flag = 0; ~ + } } } ~ + +============================================================================== +*30.5* タブ文字と空白文字 + +'tabstop'はデフォルトでは8になっています。変更はできますが、後でトラブルの +元になりやすいのです。他のプログラムからは、あなたが設定しているタブ桁数を知 +りようがありません。おそらくはデフォルトの8桁となるため、作ったテキストが +突然違ったもののように見えることでしょう。また、ほとんどのプリンタはタブ桁数 +が8桁固定です。つまり'tabstop'はそのままにしておくのが良いのです。(違ったタ +ブ桁数で書かれたファイルを修正する方法については|25.3|をご覧ください。) +プログラム内で段付けをするために1レベルを8桁づつにするとすぐにウィンドウの +右端に到達してしまいます。でも1レベルが1桁だと見た目の違いがわかりづらくな +ります。ですので1レベルを4桁にしている人が多いですが、これは手頃な妥協点だ +と思います。 +<Tab>は8桁分ですが、実際に段付けしたいのが4桁だとすると、段付けには<Tab>は +使えないということになります。この対処には2つの方法があります。 + +1. <Tab>と空白を混在して使う。<Tab>だと8桁分の空白となるため、ファイル中の + 無駄な文字数を削減できます。空白文字を8回打つより<Tab>の方が速く入力で + きますし、文字削除する時も速いです。 + +2. 空白文字だけを使う。これならタブ桁数が違うプログラムを使う時のトラブルを + 避けることができます。 + +vimはどちらの方法でもバッチリ使えます。 + + +空白とタブ +---------- + +If you are using a combination of tabs and spaces, you just edit normally. +タブと空白の組み合せを使っている場合は普通に編集します。vimはデフォルトで実 +にうまくこれを処理してくれます。 +'softtabstop'オプションを設定しておくと少しだけ作業を楽にしてくれます。この +オプションを設定すると、Tabキーがまるで'softtabstop'で設定した値であるかのよ +うにvimは振る舞いますが、実際にはタブと空白を組み合せてそう見せかけているの +です。 +以下のコマンドを実行した後は、<Tab>を押す都度カーソルが4桁づつ動きます。 +> + :set softtabstop=4 + +最初の桁で<Tab>を押すと、文章には4つの空白を挿入します。もう一度押すと、 +先ほどの4つの空白を取り除いて、<Tab>を1つ挿入します。(結局8桁になります) +つまり、vimは<Tab>を使えるだけ使い、残りは空白で埋めるのです。 +文字削除の時はまた違った動きとなります。<BS>を押すと'softtabstop'で指定して +いる桁数だけ削除します。この場合も<Tab>を使えるだけ使い、すき間を空白で埋め +るわけです。 +以下の図は<Tab>を数回押してから<BS>を使った時に何が起こるかを示しています。 +図中の"------->"は<Tab>記号、"."は空白記号を示します。。 + + type result ~ + <Tab> .... + <Tab><Tab> -------> + <Tab><Tab><Tab> ------->.... + <Tab><Tab><Tab><BS> -------> + <Tab><Tab><Tab><BS><BS> .... + +似たオプションで'smarttab'オプションというのがあります。これをonにしておくと +行の段付けする部分で<Tab>を押すと'shiftwidth'分の段付けを行いますが、行の最 +初の非空白文字より右側では本当に<Tab>記号となります。ただし、<BS>キーについ +ては'softtabstop'の場合のようになりません。 + + +空白文字 +-------- + +ファイル中にTAB記号が全くないようにしたければ、'expandtab'オプションをonにし +ます。 > + + :set expandtab + +このオプションをonにすると、<Tab>キーは一連の空白文字に置き換わります。 +つまり<Tab>文字と同じ量の空白文字が挿入されます。しかし、ファイル中に<Tab>文 +字が入ることはありません。 +<BS>で削除する時は1文字ずつとなります。ですから、<Tab>を1度押した後でそれ +を取り消すには<BS>キーを8回押さなければなりません。段付けしている場所であれ +ば、CTRL-Dを押せばとても早く入力できます。 + + +タブを空白に(または空白をタブに)変更 +------------------------------------ + +'expandtab'をonにしても既存のタブには何も影響ありません。つまり、文章中のタ +ブはタブのままです。既存のタブを空白に変換したければ、":retab"コマンドを使い +ます。このようにします。 > + + :set expandtab + :%retab + +これでタブの代わりに空白記号を使って全ての段付けを変更します。ですが、行頭の +最初の非空白文字以降のタブはそのままです。それも含めて全てを空白文字に変換す +るには、コマンド名に"!"を追加します。 > + + :%retab! + +これは少しばかり危険を伴います。というのは文字列中のタブも変更されてしまうた +めです。まずこのコマンドでそういったパターンがないか確認してください。 > + + /"[^"\t]*\t[^"]*" + +ですが、文字列の中には実際のTabコードを埋め込まないこをとお勧めします。こう +いったトラブルを避けるためにも"\t"などに変更した方が良いでしょう。 + +このようにしても全く同じことになります。 > + + :set noexpandtab + :%retab! + +============================================================================== +*30.6* コメントの整形 + +vimがすごい点のひとつにコメントを理解できるというのがあります。vimにコメント +の整形を頼めば、ちゃんとそれをしてくれます。 +例えば、次のようなコメントがあるとします。 + + /* ~ + * This is a test ~ + * of the text formatting. ~ + */ ~ + +ここでカーソルをコメントの開始位置に置いて、次のように入力してvimにコメント +整形を依頼します。 > + + gq]/ + +"gq"はテキストの整形を行うためのオペレータです。"]/"はコメントの末尾に移動す +るモーション(カーソル移動)コマンドです。結果はこのようになります。 + + /* ~ + * This is a test of the text formatting. ~ + */ ~ + +vimが各行の先頭を正しく処理している点に注目してください。 +整形対象となる文章を選択するにはビジュアルモードを使って"gq"を入力する方法も +あります。 + +コメントに新しい行を追加するには、カーソルを行の途中に移動して"o"を押します。 +その結果、次のようになります。 + + /* ~ + * This is a test of the text formatting. ~ + * ~ + */ ~ + +vimは自動的に"*"と空白を挿入しますので、すぐにコメントを入力することができま +す。長さが、'textwidth'を超えると、vimは行を分割します。その時も"*"と空白を +自動的に補います。 + + /* ~ + * This is a test of the text formatting. ~ + * Typing a lot of text here will make Vim ~ + * break ~ + */ ~ + +この機能を使うには'formatpiotions'でいくつか指定しなければならないフラグがあ +ります。 + + r 挿入モードで<Enter>を押した時に"*"を挿入する。 + o 通常モードで"o"か"O"を使った時に"*"を挿入する。 + c コメントについても'textwidth'の桁数で改行する + +これ以外のフラグについては|fo-table|をご覧ください。 + + +コメントの定義 + +コメントがどのような形かは'comment'オプションで定義できます。vimは1行コメン +トと、開始記号、終端記号、本文が違っているコメントとを違うものとして扱います。 +1行コメントの多くは特殊文字で始まります。C++では"//"ですし、Makefileでは +"#"です。vimスクリプトなら'"'(ダブルクオート1つ)です。例えば、vimでC++形 +式のコメントを使うにはこうします。 > + + :set comments=:// + +コロン(:)はフラブ部とコメント文字列部の識別に使っています。'comment'オプショ +ンはこういう構造となります。 + + {flags}:{text} + +{frags}部はこの例のように空っぽでも構いません。 + +複数の項目をカンマ(,)を使って繋ぐこともできます。これを使うと同時にタイプの +違うコメントを認識させることができます。例えば、Eメールを編集してみましょう。 +返事を書く時には、他の人の書いた部分の行頭には">"か"!"を補ってあるとします。 +次のコマンドはそういった動きになります。 > + + :set comments=n:>,n:! + +上では">"で始まるコメントと"!"で始まるコメントの2種類があります。どちらも +"n"フラグを指定しています。これはコメントがネスト(多重化)できることを示して +います。これでメッセージを次のようにフォーマットすることを認めます。 + + > ! Did you see that site? ~ + > ! It looks really great. ~ + > I don't like it. The ~ + > colors are terrible. ~ + What is the URL of that ~ + site? ~ + +'textwidth'を違った値(例えば80)にし、ビジュアル選択で引用部分を選択して"gq" +と入力します。結果はこうなります。 + + > ! Did you see that site? It looks really great. ~ + > I don't like it. The colors are terrible. ~ + What is the URL of that site? ~ + +あるコメントからもう1つのタイプのコメントに文章が動いていない点にお気付きで +しょう。2行目の"I"は1行目の末尾に入れることもできます。でも1行目は行頭が +"> !"で始まっていて、2行目は">"です。vimはこの2つが違った意味のコメントだ +と区別するのです。 + + +3部構成のコメント +------------------ + + +"/*"で始まって、途中は"*"で、最後が"*/"となるようなコメントもあります。この +場合の'comments'の内容は次のようになります。 > + + :set comments=s1:/*,mb:*,ex:*/ + +最初の部分は"s1:/*"です。"s"というのはこれが3部構成のコメントであることを示 +しています。":"はフラグとコメントとして認識される文字列("/*")のセパレータで +す。この他に"1"というフラグがあります。これは2つ目の項目にオフセットとして1 +つの空白があることを示します。 +2つ目の項目は"mb:*"です。"m"というのはこれが2つ目の項目であることを示して +います。"b"フラグは文字列の後に空白がなければならないことを示します。これが +ないと、"*pointer"で始まっているような行もコメントだと認識してしまいます。 +最後の項目は"ex:*/"です。この"e"は終端であることの識別子です。"x"フラグには +特別な意味があります。これはvimが自動的に"*"を挿入した直後に"/"を入力した場 +合、間にできる空白文字を削除する意味となります。 + +詳細は|format-comments|をご覧ください。 + +============================================================================== + +Next chapter: |usr_31.txt| GUIの活用 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_31.jax b/ja/usr_31.jax new file mode 100644 index 000000000..e457b8d27 --- /dev/null +++ b/ja/usr_31.jax @@ -0,0 +1,277 @@ +COMMENT: GUIコンポーネントの利用 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_31.txt* For Vim version 6.3. Last change: 2003 Oct 21 + + VIM USER MANUAL - by Bram Moolenaar + + GUIの活用 + + +vimは端末でもちゃんと動きますが、GUIバージョンではさらに追加機能がありま +す。ファイルブラウザではファイルを扱うコマンド群が使えます。ダイアログボック +スでいくつかの選択肢から選択することもできます。メニュー項目を使うためにキー +ボードショートカットも用意しています。 + +|31.1| ファイルブラウザ +|31.2| 確認 +|31.3| メニューのショートカット +|31.4| vimウィンドウ位置と大きさ +|31.5| その他 + + Next chapter: |usr_40.txt| 新しいコマンドを作る + Previous chapter: |usr_30.txt| プログラムの編集 +Table of contents: |usr_toc.txt| + +============================================================================== +*31.1* ファイルブラウザ + +[ファイル]メニューの[開く...]を使うとファイルブラウザが開きます。これを使え +ば、編集したいファイルを探すのが簡単になります。でも、ウィンドウを分割してそ +こで別のファイルを編集したい場合はどうでしょうか?このためのメニュー項目はあ +りません。最初に[ウィンドウ]-[分割]を選んでから、[ファイル]-[開く...]を選択 +すればできますが、余計な手間がかかります。 +vimでほとんどのコマンドを入力するのであれば、同様にコマンドを入力してファイ +ルブラウザを開くことができます。ファイルブラウザで分割コマンドを使うには先に +"browse"を指定します。 > + + :browse split + +ファイルを選択すると":split"コマンドがその結果に対して動きます。ファイルダイ +アログで「キャンセル」すれば何も起こらず、ウィンドウも開きません。 +ファイル名を引数に指定することもできます。これはファイルブラウザにどのディレ +クトリから始めるかを指定するのに使います。例をあげましょう。 > + + :browse split /etc + +ファイルブラウザは"/etc"ディレクトリを初期表示した状態でポップアップします。 + +":browse"コマンドはファイルを開くあらゆるコマンドに対して指定できます。 +ディレクトリを指定しない場合は初期ディレクトリをvimが判断します。デフォルト +では、直前に使ったのと同じディレクトリとなります。ですから、":browse split" +を使った時に"/usr/local;share"にあるファイルを選択したとすると、次にファイル +ブラウザを":browse split"で起動した時は"/usr/local/share"で始まります。 +この動作は'browsedir'オプションの指定で変更できます。ここでは以下の3つの値 +を指定できます。 + + last 直前に使ったディレクトリを使う(デフォルト) + buffer カレントバッファと同じディレクトリを使う + current カレントディレクトリを使う + +例えば、"/usr"ディレクトリにある時に"/usr/local/share/readme"を編集するには +次のコマンドを使います。 > + + :set browsedir=buffer + :browse edit + +この指定だと、"/usr/local/share"ディレクトリでブラウザが開始します。また、次 +のような指定ですと、"/usr"ディレクトリで開始します。 > + + :set browsedir=current + :browse edit +< + Note: + マウスを使わなくてもよいように、ファイルブラウザのほとんどの繰作で + キー入力をサポートしています。これはシステム毎に違っているためここで + は説明しません。vimはできるだけ標準ブラウザを用います。お使いのシス + テムのマニュアルなどのどこかにキーボードショートカットの説明があるこ + とでしょう。 + +GUIでないバージョンを使っている場合でも、ファイルエクスプローラのウィンド +ウを使えば、ファイルブラウザと同じようにファイル選択ができます。ですがその場 +合でも":browse"コマンドは使えません。|file-explorer|をご覧ください。 + +============================================================================== +*31.2* 確認 + +vimは間違ってファイルを上書きしたり、変更点を失ってしまうような様々なことか +らあなたを守ります。何かマズいことになりそうな時はvimはエラーメッセージで、 +本当にそれをやりたければ"!"を追加するように、と表示します。だから本当にやり +たければそうすればよいのです。 +"!"付きコマンドの再入力が嫌なら、vimにダイアログボックスを表示させることもで +きます。その画面で"OK"か"Cancel"を選んでやりたいことをvimに伝えることができ +ます。 +例えば、ファイルを編集して変更を加えたとします。ここで別のファイルを編集しよ +うとします。 > + + :confirm edit foo.txt + +vimは次のようなダイアログ画面を表示します。 + + +-----------------------------------+ + | | + | ? Save changes to "bar.txt"? | + | | + | YES NO CANCEL | + +-----------------------------------+ + +ここで選択ができます。ファイルを保存するのなら"YES"を選びます。変更内容を失 +くしてもよいのなら、"NO"を選びます。どんな変更を加えたか忘れてしまって、再確 +認したい場合には"CANCEL"を選びます。この場合は変更されたその状態のままで、同 +じファイルに戻ることができます。 + +":browse"の場合と同じく、":confirm"コマンドも別のファイルを編集するほとんど +のコマンドの前に指定できます。この両方を組み合せるのもOKです。 > + + :confirm browse edit + +これはカレントバッファを変更している場合にダイアログを表示します。次に編集す +るファイルを選択するためにファイルブラウザを表示します。 + + Note: + ダイアログの表示中はキーボードで選択ができます。たいていは<Tab>キー + と矢印キーで変更します。<Enter>キーを押すと選択結果を実行します。但 + しこの動きはシステムによって異なります。 + +GUIでないバージョンでも、":confirm"コマンドはきちんと動きます。ダイアログ +画面を表示する代わりに、vimはウィンドウの最下段にメッセージを表示し、選択肢 +を選ぶように促します。 > + + :confirm edit main.c +< Save changes to "Untitled"? ~ + [Y]es, (N)o, (C)ancel: ~ + +どれか1つの文字を押して選択ができます。他のコマンド行での場合と違い、ここで +は<Enter>キーを押す必要はありません。 + +============================================================================== +*31.3* メニューのショートカット + +キーボードでは全てのvimのコマンドが使えます。何を呼び出せばよいか知らない利 +用者のため簡単にコマンド選択できるメニューがあります。ですが、それにはキー +ボードから手を離し、マウスを動かす必要があります。 +メニューはキーを使っても問題なく使うことができます。これはシステムによります +が、ほとんどの場合にこの方法で動きます。メニューで下線の引いてある文字と<Alt> +キーを同時に押して使います。例えば、<A-w> (これは<Alt>と"w"のこと)を押すと、 +ウィンドウメニューをプルダウン(ポップアップ)します。 +ウィンドウメニューには"分割(P)"という項目があり、"P"に下線が引いてあります。 +これを選ぶには<Alt>キーと"p"を押しましょう。 + +最初に<Alt>キーでメニューを選んだ後で、カーソルキーを使ってメニュー内を移動 +することができます。<Right>はサブメニューを開き、<Left>はそれを閉じます。 +<Esc>もメニューを閉じます。<Enter>は選択した項目を実行します。 + +メニューを選ぶための<Alt>キーの利用と、マップのコンビネーションキーとしての +<Alt>キーの利用が重複することがあります。'winaltkeys'オプションでは、<Alt> +キーを使った時にvimが何をすべきかを定義できます。 +'winaltkeys'のデフォルト値、"menu"としておくのが良いでしょう。この場合、メ +ニューのショートカットにあるコンビネーションはマップとして登録できません。 +マップにはそれ以外の組み合せを用います。 +'winaltkeys'を"no"とすると、<Alt>キーではメニュー選択できなくなります。つま +り、メニューの選択にはマウスを使わなければなりません。その代わり<Alt>キーは +マップで自由に使えるようになります。 +"yes"とすると、<Alt>キーの全てがメニュー用となります。ただしメニュー選択以外 +に他の機能で使われる<Alt>キーコンビネーションもいくつかあります。 + +============================================================================== +*31.4* vimウィンドウの位置と大きさ + +スクリーン上の現在のvimウィンドウの位置を見るのはこのコマンドです。 > + + :winpos + +これはGUI版でのみ動きます。出力はこのようになります。 + + Window position: X 272, Y 103 ~ + +位置は画面のピクセル単位です。さてvimのウィンドウは数値指定で別の場所に移動 +できます。例えば、上の例で100ピクセル左に動かすにはこうします。 > + + :winpos 172 103 +< + Note: + 報告される座標とウィンドウが動いた場所とは多少の差異がある場合があり + ます。これはウィンドウ枠の巾があるためです。これはウィンドウマネー + ジャ側で算出されるものです。 + +このコマンドはvimを起動した時のスタートアップスクリプトでウィンドウを特定の +場所で開くコマンドとして使えます。 + +vimのウィンドウサイズは文字数で求めます。つまりウィンドウサイズのピクセル数 +は使用するフォントの大きさに依るということです。現在のウィンドウサイズはこの +コマンドで求められます。 > + + :set lines columns + +サイズを変更するには、'lines'と'columns'オプションに値を設定します。 > + + :set lines=50 + :set columns=80 + +端末で動かしている時でもGUI版と同様にサイズを得ることができます。ですが、 +ほとんどの端末ではサイズを変更することはできません。 + +gvimのX Window版では起動時にウィンドウの大きさと位置をパラメタで指定できま +す。 > + + gvim -geometry {width}x{height}+{x_offset}+{y_offset} + +{width}と{height}は文字数です。{x_offset}と{y_offset}はピクセル数です。 +例をあげましょう。 > + + gvim -geometry 80x25+100+300 + +============================================================================== +*31.5* その他 + +gvimはEメールの編集にも使えます。それにはお使いのメーラでエディタとしてgvim +を指定しなければなりません。ところがこれをやろうとしても、おそらくうまくいき +ません。gvimがまだ動いているにも関らず、メーラ側は編集が終わったと思い込むた +めです。 +これはgvimが起動する時にシェルから切り離しているために起こることです。 +これはvimを端末で動かすとよくわかります。というのはその端末で他のことが実行 +できるからです。ですが、gvimが終るまで待つようにさせたいのであれば、切断しな +いようにしなければなりません。これには"-f"パラメタを使います。 > + + gvim -f file.txt + +"-f"は"foreground"の意味です。これでvimの起動時から、編集が終わって終了する +までシェルをブロックします。 + + +GUIの遅延スタート +-------------------- + +Unixではvimを端末で使うこともできます。これは同じシェルでいろんな作業を行う +時には便利です。ファイルを編集している時に後になってGUIを使いたいと思った +場合は、こうします。 > + + :gui + +vimはGUIのウィンドウを開き、端末を開放します。端末では他の作業を続けるこ +とができます。GUI版をフォアグラウンドで動かすには"-f"パラメタを使います。 +":gui -f"も使えるということです。 + + +gvimのスタートアップファイル +---------------------------- + +gvimの起動時にはgvimrcファイルを読み込みます。これはvim起動時に使うvimrcファ +イルと同じようなものです。gvimrcファイルにはGUIを使って起動する時にだけ指 +定したいような設定やコマンドを実行させるのに使います。例えば、ウィンドウのサ +イズを変更するのに'lines'オプションに値をセットできます。 > + + :set lines=55 + +上の指定は(サイズ変更をサポートしているxtermででもない限り)端末では行桁数 +は固定ですから、GUI以外では不要でしょう。 +gvimrcファイルはvimrcファイルと同じ場所を探します。通常はUnixで"~/.gvimrc"、 +MS-Windowsでは"$VIM/_gvimrc"というファイル名となります。 +何らかの理由でいつものgvimrcファイルを使いたくない場合は、"-U"パラメタを使っ +て、他のファイルを指定することができます。 > + + gvim -U thisrc ... + +これだと例えばフォントサイズを変更するなっ、いつもと違う環境でgvimによる編集 +が行えます。 +完全にgvimrcファイルの読み込みをスキップさせるにはこうします。 > + + gvim -U NONE ... + +============================================================================== + +Next chapter: |usr_40.txt| 新しいコマンドを作る + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_40.jax b/ja/usr_40.jax new file mode 100644 index 000000000..6fe238069 --- /dev/null +++ b/ja/usr_40.jax @@ -0,0 +1,674 @@ +COMMENT: コマンド拡張(マッピング、コマンド定義、自動実行) +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_40.txt* For Vim version 6.3. Last change: 2004 Feb 13 + + VIM USER MANUAL - by Bram Moolenaar + + 新しいコマンドを作る + + +vimは拡張可能なエディタです。頻繁に使うコマンドシーケンスを新しいコマンド +に置きかえることができます。また既存のコマンドを再定義することもできます。 +自動コマンドを使えば自動的にコマンドを実行させることができます。 + +|40.1| キーマッピング +|40.2| コマンドラインのコマンドを定義する。 +|40.3| 自動コマンド + + Next chapter: |usr_41.txt| Write a Vim script + Previous chapter: |usr_31.txt| Exploiting the GUI +Table of contents: |usr_toc.txt| + +============================================================================== +*40.1* Key mapping + +単純なマッピングについては|05.3|で説明しました。原則として一連のキー入力を +違った一連のキー入力に変換するものです。単純ですが、パワフルな仕組です。 +一番単純なのは1つのキーに一連のキーを割り当てる方法です。<F1>以外のファン +クションキーはvimでは何も定義していませんので、自由に割り当てができます。 +例えば > + + :map <F2> GoDate: <Esc>:read !date<CR>kJ + +ここでは3つのモードをどのように使うかを示しています。最後の行まで"G"で +ジャンプして、oコマンドで新しい行を追加して挿入モードを開始します。そこで +"Date: "という文字列を挿入し、<Esc>で挿入モードから抜けます。 + <>で囲まれた特殊キーの使い方に注意してください。これを角カッコ表記と呼び +ます。これを使うとマッピングが読みやすいですし、コピー&ペーストしても変な +問題が起こりません。 + ":"文字はvimをコマンドラインにします。":read !date"コマンドは"date"コマン +ドの出力を読み込んでそれを現在行の下に追加します。<CR>は":read" を実行する +のに必要です。 + この時点までを実行すると次のようになります。 + + Date: ~ + Fri Jun 15 12:54:34 CEST 2001 ~ + +さらに、"kJ"でカーソルを上に上げて2つの行を1行に繋ぎます。 +割り当てに使えるキーを決めるには、|map-which-keys|を見て下さい。 + + +MAPPING AND MODES + +":map"コマンドは通常モードのキーの再割り当てを行います。他のモードの割り当て +を定義することもできます。例えば、":imap"は挿入モード用ですので、現在のカー +ソル位置に日付を挿入するのに使えます。 > + + :imap <F2> <CR>Date: <Esc>:read !date<CR>kJ + +これは通常モードでの<F2>の割り当てとほとんどいっしょです。違うのは最初だけ +です。通常モードでの<F2>割り当ても生きています。このように各モード用に同じ +キーで違う働きをするように定義できます。 +気をつけていただきたいのは、挿入モードでこのコマンドを実行すると終わった時 +には通常モードになっている点です。もし挿入モードのままにしておきたければ、 +マッピングの最後に"a"を追加しておきましょう。 + +どのmapコマンドがどのモードで動くかは次の通りです。 + + :map 通常モード、ビジュアルモード、 オペレータ保留モード + :vmap ビジュアルモード + :nmap 通常モード + :omap オペレータ保留モード + :map! 挿入モード、コマンドライン + :imap 挿入モード + :cmap コマンドライン + +オペレータ保留モードというのは、"d"とか"y"といったオペレータ文字を入力した後 +で、モーションコマンドやテキストオブジェクトを入力しようとしている時のモード +です。例えば、"dw"と入力する時に"w"を押す時がオペレータ依存モードです。 + +例えば、あなたが"d<F7>"とすると、Cのプログラムブロック(中カッコ{}で囲まれ +たテキスト)を削除できるように<F7>を定義したいとしましょう。y<F7>とすると +同じようにプログラムブロックを名前なしレジスタにコピーできます。この場合、 +やらなければならないのは、<F7>で現在のプログラムブロックを選択するように +定義することです。次のコマンドでできます。 > + + :omap <F7> a{ + +これはブロック選択の"a{"をオペレータ保留モードで実行するように<F7>を定義し +ます。このマッピングは"{"がちょっと入力しづらいようなキーボードでは便利で +すね。 + + +マッピング定義を見る + +現在のマッピング定義を見るには引数なしで":map"を実行します。もしくは、特定の +モード用のコマンド(例えば":vmap")を使います。結果は次のようになります。 + + _g :call MyGrep(1)<CR> ~ + v <F2> :s/^/> /<CR>:noh<CR>`` ~ + n <F2> :.,$s/^/> /<CR>:noh<CR>`` ~ + <xHome> <Home> + <xEnd> <End> + + +最初の桁にはそのマッピングがどのモードで有効かを示します。"n"は通常モード、 +"i"は挿入モード、などです。ここが空白の場合は":map"で定義されたことを示し +、通常モードでもビジュアルモードでも有効です。 +マッピングのリストを見れば、特殊キーが<>の書式で書けるかどうかがわかります。 +(ただしカラーをサポートしている場合に限ります)例えば、<Esc>がカラーで表示 +されていれば、エスケープ文字であることがわかります。他のテキストと同じ色の +場合は、"<Esc>"という5文字の文字列です。 + + +リマッピング + +マッピングには他のマッピングを含むことができます。例えば、 +<F2>のマッピングは次のように短くすることができます。 > + + :map <F2> G<F3> + :imap <F2> <Esc><F3> + :map <F3> oDate: <Esc>:read !date<CR>kJ + +通常モード用の<F2>は最後の行に移動してその後で<F3>が押されたかのように動き +ます。挿入モード用の<F2>は<Esc>で挿入モードを終わらせてから、同じように<F3> +を使います。そして、<F3>には実際にやりたいことを定義しておきます。 + +あなたがずっとExモードをヘビーに使っていて、"Q"をテキストの整形に使いたい +(vimの古いバージョンではそうでした)のなら、以下でそのようになります。 > + + :map Q gq + +でも時には、Exモードを使いたくない時もあるでしょう。"gQ"を"Q"に割り当てましょ +う。そうすればExモードに移行する手段を残せます。 > + + :map gQ Q + +今やったのは、"gQ"を入力した時にそれを"Q"にマップすることです。これはいいで +しょう。しかし"Q"が"gq"に割り当てられていますから、gQと入力すると結局、"gq"と +なります。これだとExモードにすることができません。 +再帰的なマップを避けるには":noremap"コマンドを使います。 > + + :noremap gQ Q + +これで、Vimは"Q"がそれ以降のマッピングの検査を必要としないことを知ります。同じ +ようなコマンドが各モード用に用意されています。 + + :noremap 通常モード、ビジュアルモード、 オペレータ保留モード + :vnoremap ビジュアルモード + :nnoremap 通常モード + :onoremap オペレータ保留モード + :noremap! 挿入モード、コマンドライン + :inoremap 挿入モード + :cnoremap コマンドライン + + +再帰的マッピング + +マッピングが自分自身を呼び出すと永遠に動きつづけます。これは同じ動きを無限 +回数繰り返すために使われます。 +例えば、ファイルの先頭行にバージョン番号があるようなファイルのリストを持って +いるとします。これを"vim *.txt"で編集できます。さて最初のファイルを編集しま +しょう。次のマッピングを定義します。 > + + :map ,, :s/5.1/5.2/<CR>:wnext<CR>,, + +さらに",,"を入力します。これで上記のマッピングが動き始めます。まず最初の行の +"5.1"を"5.2"に変更します。そして":wnext"で上書きして次のファイルを編集しま +す。マッピングの最後は",,"です。これは同じマッピングをもう一度呼び出します。 +そこで置き換えを行います。以下同文。 +これはエラーが発生するまで続きます。この場合なら、置き換え時に"5.1"が見つ +からないファイルがあるかもしれません。"5.1"をファイルに加える変更をして、 +",,"をもう一度入力して続けられます。もしくは最後のファイルに達したため、 +":wnext"がエラーになるかもしれません。 +マッピングの動作途中でエラーが起こると、マッピングの残りを無視します。 +マッピング動作中に割り込むにはCTRL-C(WindowsではCTRL-Break)を押します。 + + +マッピングの解除 + +マッピングを解除するには":unmap"コマンドを使います。繰り返しですが、マッピ +ングを解除するモードは使ったコマンドによります。 + + :unmap 通常モード、ビジュアルモード、 オペレータ保留モード + :vunmap ビジュアルモード + :nunmap 通常モード + :ounmap オペレータ保留モード + :unmap! 挿入モード、コマンドライン + :iunmap 挿入モード + :cunmap コマンドライン + +ビジュアルモードを除き通常モードとオペレータ保留モードでマッピングを定義するに +はちょっとしたトリックがあります。最初に3つの全モードで定義し、ビジュアルモー +ドのみ解除します。 > + + :map <C-A> /---><CR> + :vunmap <C-A> + +注意:<C-A>という5文字はCTRL-Aのことです。 + +全マッピングを解除するには|:mapclea|コマンドを使います。今現在とは違った +モードのバリエーションにも適用されます。このコマンドはundoできませんので、 +気を付けて下さい。 + + +特殊なキャラクタ + +":map"コマンドに他のコマンドを続けることができます。'|'文字で2つのコマ +ンドを区切ります。逆に言うと'|'文字はmapコマンドの中では使えないという +ことです。これを含ませたい場合には、<Bar>を使います。例を示します。 > +> + :map <F8> :write <Bar> !checkin %<CR> + +同じ問題は":unmap"コマンドにも言えます。こちらは末尾の空白に注目して追加し +なければなりません。以下の2つのコマンドは違うものです。 > +> + :unmap a | unmap b + :unmap a| unmap b + +最初のコマンドは末尾に空白の付いた"a "を解除しようとします。 + +なお、マッピングの中に空白を使いたい場合には、<Space>を使います。 > + + :map <Space> W + +これはスペースバーを押した時に空白類で区切られた次の単語までカーソルを移 +動します。 + +マッピング行の末尾にはコメントは付けられません。これは(コメントに使う) +" 文字がマッピングの一部として処理されるためです。代わりに |" を使うこと +ができます。これはマッピングの後にさらに何もしないコマンドを指定して、そ +の後にコメントを書きます。例をあげましょう。 + + :map <Space> W| " 次の単語に移動するのにスペースバーを使う + +マッピングと省略(ABBREVIATIONS) + +省略は挿入モードのマッピングと非常に似ています。引数は同じ方法で処理されま +す。大きな違いはその起動のし方です。省略は単語の後に空白類を入力すると起動 +されますが、マッピングは最後の文字を入力した時に起動します。 +その他にも、省略では入力した文字はテキスト上に表示される点が違います。省略 +を起動すると、入力した文字列は削除され、省略処理が生成したものに置き替え +られます。マッピングでは最後の文字を入力し、コマンドを実行させるまで何も +表示されません。'showcmd'オプションを設定してれば、マッピングで入力した +文字がVimウィンドウの最下行に表示されます。 +ただし、マッピングがあいまいな場合は例外です。例えば、次の2つのマッピング +があるとします。 > + + :imap aa foo + :imap aaa bar + +さて、"aa"と入力した時、vimは1つ目か2つ目のどちらを使うべきか決められま +せん。そこで次にタイプされる文字を待ちます。それが"a"であれば、2つ目の +マッピングを使い、"bar"という結果を返します。そうでなく、例えば空白だった +場合は、1つ目のマッピングを使って"foo"という結果を返し、さらに空白文字を +表示します。 + + +さらに.... + +<script>を使うと、マッピングをスクリプト内のローカルにできます。 +|:map-<script>|を見てください。 + +<buffer>を使うと、マッピングを特定のバッファ内のローカルにできます。 +|:map-<buffer>|を見てください。 + +<unique>を使うと、新しいマッピングを定義する時に既に存在していれば、登録 +できなくなります。そうでなければ、新しいマッピングは単純に以前のを上書き +します。|:map-<unique>|を見てください。 + +何もしないキーを定義するには、<Nop>を割り当てます。以下の例は<F7>キーを押 +しても何もしないようにします。 > + + :map <F7> <Nop>| map! <F7> <Nop> + +上の定義で、<Nop>の後には空白があってはいけません。 + +============================================================================== +*40.2* Defining command-line commands + +vimでは独自のコマンドを定義できます。定義したコマンドはコマンドラインモード +の他のコマンドと同じ様に使えます。 +コマンドの定義には":command"コマンドを次のように使います。 > + + :command DeleteFirst 1delete + +これで、":DeleteFirst"コマンドを実行すると、vimは":1delete"、つまり最初の +行を削除します。 + + Note: + ユーザ定義コマンドは必ず大文字で始まらなければなりません。ただし、 + ":X", ":Next" and ":Print"は使えませんし、アンダースコア("_")も使 + えません。数字は使えますが、推奨されません。 + +ユーザ定義コマンドの一覧を見るには、次のコマンドを実行します。 > + + :command + +組み込みコマンドと同じ様にユーザ定義コマンドも省略入力できます。他のコマンド +との区別に必要な文字を入力してください。コマンドライン補完で完全なコマンド名 +を得ることができます。 + + +引数の数 +-------- + +ユーザ定義コマンドでは引数を指定できます。引数の数は -nargs オプションで指定 +しなければなりません。例えば、上で例示した:DeleteFirstコマンドには引数は +ありません。つまり次のように指定できるわけです。 > + + :command -nargs=0 DeleteFirst 1delete + +もっとも、引数0はデフォルトですので、実際には"-nargs=0"を追加しなくても +かまいません。-naargsには次のような値を与えます。 + + -nargs=0 引数なし + -nargs=1 引数1つ + -nargs=* いくつでも + -nargs=? 引数なし、もしくは1つ + -nargs=+ 引数1つ以上(いくつでも) + + +引数の使い方 +------------ + +コマンド内では、引数を<args>キーワードで示します。例えば、 > + + :command -nargs=+ Say :echo "<args>" + +のように使います。ここで、以下を入力すると、 > + + :Say Hello World + +vimは "Hello World" と表示します。 ただし、引用符(")を使うと、 +うまく動きません。 > + + :Say he said "hello" + +特殊文字(訳注:"など)を文字列として得るには、スクリプトの式で使えるように適切に +エスケープするため、"<q-args>"を使います。 > + + :command -nargs=+ Say :echo <q-args> + +こうすれば、上で示した":Say"コマンドは次のような結果となります。 > + + :echo "he said \"hello\"" + +キーワード<f-args>は関数呼び出しとして使うのに適切な形式に整形する点を除けば +<args>と同じです。例を示しましょう。 > + + :command -nargs=* DoIt :call AFunction(<f-args>) + :DoIt a b c + +上記は以下のコマンドを実行します。 > + + :call AFunction("a", "b", "c") + + +行範囲 +------ + +一部のコマンドは引数として範囲を受け取ります。そのようなコマンドを定義する +には、-range オプションを使わなければなりません。このオプションの値は以下 +の通りです。 + + -range 範囲指定を許可。デフォルトは現在行 + -range=% 範囲指定を許可。デフォルトは現在のファイル全体 + -range={count} 範囲指定を許可。the last number in it is used as a + single number whose default is {count}. + +範囲を指定する場合、キーワード<line1>や<line2>は範囲の最初と最後の行を示し +ます。例えば、以下のコマンド定義では SaveIt というコマンドを定義します。 +これは、指定した範囲を"save_file"というファイルに書き出します。 > + + :command -range=% SaveIt :<line1>,<line2>write! save_file + + +他のオプション +-------------- + +その他のオプションやキーワードは次の通りです。 + + -count={number} コマンドが回数指定できるようにします。デフォ + ルト値は{number}です。指定の回数はキーワード + <count>で得られます。 + -bang !指定ができるようにします。指定の有無は<bang> + キーワードで得られます。 + -register 指用するレジスタを指定できます。デフォルト + は名前なしレジスタです。 + 指定されたレジスタは<reg>(もしくは<register>) + で得られます。 + -complete={type} コマンド行補完のタイプを指定します。タイプに + 指定できる値は、|:command-completion|を参照 + してください。 + -bar コマンドの後に | と別コマンドを続けることを + 許します。また、" とコメントも許します。 + -buffer このコマンドは現バッファに対してのみ有効で + あることを示します。 + +最後に、キーワード<lt>があります。これは文字"<"を示します。これは、<>アイテム +の特殊な意味を回避し、単なる文字として使いたい時に使います。 + + +再定義と削除 +------------ + +同じコマンドを再定義するには ! を使用します。 > + + :command -nargs=+ Say :echo "<args>" + :command! -nargs=+ Say :echo <q-args> + +ユーザ定義コマンドを削除するには":delcommand"を使います。このコマンドに削除 +したいコマンド名を1つだけ指定します。 > + + :delcommand SaveIt + +全部のユーザ定義コマンドを削除するには以下のようにします。 > + + :comclear + +このコマンドはアンドゥできませんから、気をつけて! + +ここで述べた内容の詳細については、リファレンスマニュアル |user-commands| +を参照してください。 + +============================================================================== +*40.3* 自動コマンド + +自動コマンド(Autocommand)はファイルの読み込み、書き出し、バッファの変更、と +いった何らかのイベントに対して、自動的に実行されるコマンドのことです。 +自動コマンドを使うと、例えば、圧縮されたファイルを編集できるようにvimを強化 +できるのです。これには |gzip| プラグインを使います。 +自動コマンドは非常に強力です。慎重に使えば、多くのコマンドを入力する手間を +省いてくれます。逆に言えば、不用意に使うととんでもないトラブルの原因となり +ます。 + +例えば、ファイルを書き込む時には必ずファイル末尾にある日付を置き換えるよう +にしたいというケースを考えてみましょう。 +まず、次のような関数を定義します。 > + + :function DateInsert() + : $delete + : read !date + :endfunction + +この関数を毎回、ファイルを書き出す直前に呼び出したいわけです。 +これには次のように指定します。 > + + :autocmd FileWritePre * call DateInsert() + +"FileWritePre" というのが自動コマンドのトリガとなるイベントです。このイベン +トは「まさしくファイルを書き出す直前」を示します。"*" はファイル名に合致す +るパターンです。ここでは全ファイルを対象にしています。 +このコマンドを有効にして、":write"を実行すると、vimは FileWritePre に合致 +する自動コマンドを探して、それを実行します。その後で":write"を実行します。 +一般的な :autocmd の指定形式は次の通りです。 > + + :autocmd [group] {events} {file_pattern} [nested] {command} + +上の [group] は無指定でも構いません。これはコマンド呼び出しを管理したい時に +使います。(詳しくは後述します) {events} パラメタにはコマンドをキックする +イベントを(","区切りで複数可)指定します。 + {file_pattern} はファイル名です。通常はワイルドカードとなります。例えば、 +"*.txt" を指定すれば、ファイル名の末尾が ".txt" となっている全ファイルに +対して自動コマンドが使われます。 [nested] フラグは自動コマンドの多重呼び +出し(下記参照)の可否を指定します。最後の {command} は実行させたいコマンド +です。 + + +イベント +-------- + +BufReadPostは最も強力な部類のイベントです。新規ファイルを編集した後でキック +されます。これはオプション値の定義によく使います。例えば、"*.gsm"はGNUの +アセンブリ言語のファイルです。シンタックスファイルを正しく読み込むために、 +次の自動コマンドを定義しておきます。 > + + :autocmd BufReadPost *.gsm set filetype=asm + +vimがファイルのタイプを検出できた時に、'filetype' オプションを"asm"に定義 +します。 +vimがファイルのタイプを検出できた時に、'filetype' オプションを"asm"に定義 +します。この定義はFiletypeイベントをキックします。特定の種類のファイルを編 +集する時に使います。例えば、テキストファイル用の省略定義ファイルを読み込む +には次のように定義します。 > + + :autocmd Filetype text source ~/.vim/abbrevs.vim + +新規ファイルの編集を始める時に、スケルトンを用意させることもできます。 > + + :autocmd BufNewFile *.[ch] 0read ~/skeletons/skel.c + +イベントの全リストについては|autocmd-events|を参照してください。 + + +パターン +-------- + +引数 {file_pattern} はファイル名のパターンを","区切りで羅列したものです。 +例えば、"*.c,*.h" という指定は、末尾が".c" と ".h" のファイルに合致します。 +一般的なファイルのワイルドカードが使えます。以下によく使うものを掲げておき +ます。 + + * 任意の文字の任意長の文字列 + ? 任意の1文字 + [abc] a か b か c + . "."文字自身 + a{b,c} ab もしくは ac + +パターンにスラッシュ(/)を含んでいる場合は、vimはディレクトリ名と比較します。 +スラッシュがない場合は、パス名の最後とだけ比較します。例えば、"*.txt"は、 +"/home/biep/readme.txt" と合致します。 "/home/biep/*" も同じように合致し +ます。でも、"home/foo/*.txt"では合致しません。 +スラシュを含んでいる場合は、vimはファイルの絶対パス("/home/biep/readme.txt") +と、相対パス(例えば"biep/readme.txt") の双方とパターン照合をします。 + + Note: + MS-Windowsのようなディレクトリのセパレータとしてバックスラッシュを使 + うシステム上であっても、自動コマンドではスラッシュを使います。こうす + ることで、バックスラッシュに特別な意味があってもパターンの指定が簡単 + になります。自動コマンドの汎用性も増します。 + + +削除 +---- + +自動コマンドの削除は定義した時と同ジコマンドを使います。ただし、{command} 指 +定は取り去った上で、! を使います。次のようになります。 > + + :autocmd! FileWritePre * + +これは、"FileWritePre"イベントで、"*"パターンを使っている自動コマンドを全部 +削除します。 + + +一覧 +---- + +現在定義されている自動コマンドの一覧を見るには次のようにします。 > + + :autocmd + +この一覧は filetype 検出を使っていると、とても長くなる場合があります。一部の +コマンドだけを見るには、グループやイベントやパターンを(組み合せて)指定し +ます。例えば、"BufNewFile" の自動コマンドの一覧を見るには以下のようにします。 +> + :autocmd BufNewFile + +パターン"*.c"に対する自動コマンドの一覧なら次のようになります。 > + + :autocmd * *.c + +イベントとして"*"を指定すると、全イベントが対象となります。cprogramsグループ +に関する自動コマンドの一覧は、次のように指定します。 > + + :autocmd cprograms + + +グループ +-------- + +{group} は自動コマンドの定義で使います。これは自動コマンドを関連したグループ +にまとめます。例えば、特定のグループの自動コマンドをまとめて削除することも出 +来ます。 +あるグループ用に自動コマンドを定義するには、":augroup"コマンドを使います。 +例えば、cprogramsグループに属する自動コマンドを定義してみましょう。 > + + :augroup cprograms + : autocmd BufReadPost *.c,*.h :set sw=4 sts=4 + : autocmd BufReadPost *.cpp :set sw=3 sts=3 + :augroup END + +次のようにしても同じです。 > + + :autocmd cprograms BufReadPost *.c,*.h :set sw=4 sts=4 + :autocmd cprograms BufReadPost *.cpp :set sw=3 sts=3 + +"cprograms"グループの自動コマンドを全部削除するには、次のようにします。 > + + :autocmd! cprograms + + +ネスト +------ + +通常はイベントによって起動されるコマンドからは新たなイベントをキックしま +せん。例えば、FileChangeShellイベントからキックされた処理でファイルを読み +込んでも、シンタックスを設定するための自動コマンドはキックされないのです。 +こういった場合でもイベントを発生させるには、"nested"指定を行います。 > + + :autocmd FileChangedShell * nested edit + + +自動コマンドの起動 +------------------ + +イベントが発生したかのように自動コマンドを起動させることもできます。自動コ +マンドから他の自動コマンドをキックする時に使われます。例を示します。 > + + :autocmd BufReadPost *.new execute "doautocmd BufReadPost " . expand("<afile>:r") + +上は新規ファイルを編集し始めた時にキックされる自動コマンドを定義します。ファ +イル名の末尾は".new"でなければなりません。":execute"コマンドは式の評価を行い +新たなコマンドを生成し、それを実行します。例えばファイル"tryout.c.new"を編集 +しようとした時に実行されるコマンドは次のようになります。 > + + :doautocmd BufReadPost tryout.c + +expand()関数は"<afile>"引数を取ります。これは自動コマンドが起動された時の +ファイル名を示します。さらに":r"指定で、ファイル名のルート部分(訳注:最後の +.newを除いた部分?)を得ます。 + +":doautocmd" は現在のバッファに対して起動されます。":doautoall"コマンドは +似ていますが、全バッファに対して起動される点が異なります。 + + +通常モードのコマンドの利用 +-------------------------- + +自動コマンドで起動されるコマンドはコマンドラインモードのコマンドです。もし +通常モードのコマンドが使いたければ、":normal"コマンドが使えます。例を示し +ます。 > + + :autocmd BufReadPost *.log normal G + +上は"*.log"というファイルを編集しようとした時にカーソルをファイルの末尾に +移動させる自動コマンド定義です。 +":normal"コマンドの使い方はちょっと難しいです。まず、引数にはそのコマンドの +引数も含めた完全なコマンド形式で指定します。例えば、挿入モードに遷移するため +に"i"を使うのであれば、そのモードから抜けるための<Esc>も必要となります。 +同様に検索を始めるのに"/"を使うのであれば、<CR>で実行するようにしなければ +なりません。 +":normal"コマンドの後ろに書いてある全内容を使用します。つまり | を使って他 +のコマンドを記述したりはできないということです。それをやりたければ、":normal" +コマンドを":execute"コマンドの中に置きます。この方法は、非表示文字を簡単 +に受け渡す方法でもあります。例を示します。 > + + :autocmd BufReadPost *.chg execute "normal ONew entry:\<Esc>" | + \ 1read !date + +上の例では、長いコマンドを複数行に分けるのに逆スラッシュ("\")を使っていま +す。この方法はvimスクリプトで使用できます。(コマンドラインモードでは使えま +せん) + +ファイルをあちこちとジャンプするといった複雑なことをする自動コマンドで、 +元の場所(訳注:カーソル位置?)に戻りたい場合には、ファイルのビューを復元 +すればいいかも知れません。その例は、|restore-position| を参照してください。 + + + +イベントの無効化 +---------------- + +時によって、自動コマンドをキックしたくない場合もあるでしょう。'eventignore' +オプションには、完全に無効にしたいイベントのリストを格納できます。例えば、 +以下ではウィンドウへの出入りについてのイベントは無視されます。 > + + :set eventignore=WinEnter,WinLeave + +全イベントを無視するには次のようにします。 > + + :set eventignore=all + +元に戻すには'eventignore'の内容を空にします。 + + :set eventignore= + +============================================================================== + +Next chapter: |usr_41.txt| vimスクリプトの書き方 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_41.jax b/ja/usr_41.jax new file mode 100644 index 000000000..09d457ee7 --- /dev/null +++ b/ja/usr_41.jax @@ -0,0 +1,1781 @@ +COMMENT: Vimスクリプト書法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_41.txt* For Vim version 6.3. Last change: 2004 May 06 + + VIM USER MANUAL - by Bram Moolenaar + + vimスクリプトの作り方 + + +vimスクリプト言語は、起動時のvimrcファイル、シンタックスファイル、などなどで +使われています。本章では、vimスクリプトで使える命令などについて説明します。 +説明することが大量にありますので、この章は長い目になっています。 + +|41.1| はじめに +|41.2| 変数 +|41.3| 式 +|41.4| 条件 +|41.5| 式の実行 +|41.6| 関数を使う +|41.7| 関数を定義する +|41.8| 例外 +|41.9| いろんな注釈 +|41.10| プラグインを書く +|41.11| ファイルタイププラグインを書く +|41.12| コンパイラプラグインを書く + + Next chapter: |usr_42.txt| 新たなメニューを作る + Previous chapter: |usr_40.txt| 新たなコマンドを作る +Table of contents: |usr_toc.txt| + +============================================================================== +*41.1* はじめに *vim-script-intro* + +一番最初に見るvimスクリプトはvimrc ファイルでしょう。vimは起動する時にこの +ファイルを読み込み、書いてあるコマンドを実行します。あなたの好みに合せて、 +オプションの値を変えることができます。この中では":"コマンド(先頭が":"で +始まるようなコマンド。Exコマンドとかコマンドラインコマンドと呼ぶ時もあり +ます。) +シンタックスファイルもvimスクリプトです。これは特定のファイルタイプ用にオプ +ションを設定するためのファイルです。複雑なマクロを複数のvimスクリプトファイ +ルに分けて定義したりもできます。他にもいろんな使い方を考案できるでしょう。 + +まず、簡単な例から始めましょう。 > + + :let i = 1 + :while i < 5 + : echo "count is" i + : let i = i + 1 + :endwhile +< + Note: + 本当はここでは":"はいりません。vim内でコマンドを入力する場合にだけ + 必要です。vimスクリプトファイルでは、取り除いても構いません。 + ここでは、これらが":"コマンドであり、通常コマンドとは違っていること + をハッキリさせるために使っています。 + +":let"コマンドは変数に値を代入します。一般的な書式は次の通りです。 > + + :let {variable} = {expression} + +この場合、変数名が"i"で、式が数字の1という単純な値です。 +":while"コマンドはループの開始を示します。一般的な書式は次のとおりです。 > + + :while {condition} + : {statements} + :endwhile + +呼応する":endwhile"までの間にある命令はwhileの条件({condition})が True であ +る間、繰り返して実行します。ここでの条件は"i < 5"という式です。これは変数 i +が5よりも小さい間は True となります。 +":echo"コマンドはパラメタの内容を表示します。ここでは"count is"という文字列 +と変数 i の内容となります。i が1であれば、このような結果となります。 + + count is 1 ~ + +ここにはさらに":let i ="というコマンドがあります。ここで使われる値は"i + 1" +という式です。結局、変数 i の内容に1を加え、その値を同じ変数の新たな値とし +て代入します。 +この例の実行結果は次のようになります。 + + count is 1 ~ + count is 2 ~ + count is 3 ~ + count is 4 ~ + + Note: + もし、whileループの中で動きっぱなしになってしまったら、CTRL-Cを + (MS-WindowsではCTRL-Break)を押して強制割込してください。 + + +3種類の数字 +----------- + +数字には10進数、16進数、8進数のいずれかを指定できます。16進数は先頭が"0x"か +"0X"で始まります。例えば"0x1f"は31のことです。8進数は先頭が"0"で始まります。 +例えば、"017"は15です。10進数のつもりで先頭に"0"を付けないように注意してくだ +さい。8進数として扱われてしまいます。 +":echo"コマンドは常に10進数で出力を行います。このようになります。 > + + :echo 0x7f 036 +< 127 30 ~ + +数値にはマイナス記号を付けると負数となります。負数は8進数や16進数でも使えま +す。マイナス記号は減算でも使います。この例を上の例と較べてください。 > + + :echo 0x7f -036 +< 97 ~ + +式の途中にある空白は無視します。とはいっても項目のセパレータに空白を使うと、 +式の可読性を高めることになりますのでお勧めします。例えば、負数であるかのよう +な誤解を防ぐために、マイナス記号に続く数値の前には空白を置きましょう。 > + + :echo 0x7f - 036 + +============================================================================== +*41.2* 変数 + +変数名にはアルファベット、数字、アンダースコア(_)が使えます。ただし先頭に数 +字は使えません。正しい変数名は例えば次のとおりです。 + + counter + _aap3 + very_long_variable_name_with_underscores + FuncLength + LENGTH + +逆に間違った名前は次の通りです。 + foo+var "+"は変数名に使えません。 + 6var 先頭に数字は使えません。 + +これらはグローバル変数です。定義されている変数名の一覧を見るのはこのコマンド +です。 > + + :let + +グローバル変数はどこでも使えます。あるスクリプトファイルで"count"という変数 +を使っていれば、他のスクリプトでもその変数が使えるということです。これは少な +くとも混乱を招きますし、実際に問題が発生すれば最悪です。これを避けるために変 +数がスクリプト内にローカルであるというマーク"s:"を付けることができます。 +例えば、あるスクリプトに次のようなコードがあるとします。 > + + :let s:count = 1 + :while s:count < 5 + : source other.vim + : let s:count = s:count + 1 + :endwhile + +"s:count"はスクリプト内にローカルですから、"other.vim"というスクリプトからは +この変数の内容を変更できません。もし"other.vim"も"s:count"変数を使っていたと +しても、それは"other.vim"の中でローカルな別の変数です。スクリプトローカルな +変数の詳細については|script-variable|をご覧ください。 + +変数には他にも多くの種類があります。|internal-variables|をご覧ください。中で +もよく使うものを掲げておきます。 + + b:name バッファローカルな変数 + w:name ウィンドウローカルな変数 + g:name グローバル変数(関数内でも利用可能) + v:name vimが事前に宣言している変数 + + +変数の削除 +---------- + +変数はメモリを占有していますので、":let"コマンドの出力にも現れます。変数を削 +除するには":unlet"コマンドを使います。例えば、 > + + :unlet s:count + +これはスクリプトローカルな変数"s:count"を削除して、占有していたメモリを開放 +します。変数が存在しているかどうかわからないけれど、なくてもエラーにはしたく +ない場合には次のように ! を追記します。 > + + :unlet! s:count + +スクリプトが終了すると使われなくなったローカル変数は自動的に削除されません。 +次にそのスクリプトを実行した時には、前回の終了時の値を使えます。例えば次の +とおりです。 > + + :if !exists("s:call_count") + : let s:call_count = 0 + :endif + :let s:call_count = s:call_count + 1 + :echo "called" s:call_count "times" + +"exists()"関数は変数が既に定義されているかどうかをチェックします。パラメタに +は調べたい変数の名前を指定します。変数自身じゃありません。変数自身を調べるに +はこのようにします。 > + + :if !exists(s:call_count) + +これで、s:callcountの内容がexists()関数でチェックすべき変数名となります。 +ビックリマーク(exclamation mark)は値を反転します。変数がTrueの場合はFalseと +なり、Falseの場合はTrueになります。これを"not"と呼いんでも構いません。つまり +"if !exists()"は"if not exists()"とも読めるということです。 +vimでは、0以外の値は全てTrueです。 + + +文字列変数と定数 +---------------- + +ここまでは、変数の値には数値だけを使ってきました。値には文字列も使えます。vim +で扱える型は数値と文字列の2種類だけです。 型は":let"コマンドで変数に値を代 +入する度に動的に変化します。 +変数に文字列値を代入するには文字列定数を使います。文字列定数には2つのタイプ +があります。1つ目はダブルクオート(")で囲った文字列です。 > + + :let name = "peter" + :echo name +< peter ~ + +文字列の中でダブルクオートを使いたければ、その直前にバックスラッシュを付け +ます。 > + + :let name = "\"peter\"" + :echo name +< "peter" ~ + +文字列をシングルクオート(')で囲めば、バックスラッシュを省くことができます。 > + + :let name = '"peter"' + :echo name +< "peter" ~ + +シングルクオートで囲った場合、全ての文字は見た目の通りの意味となります。この +ため、中にシングルクオートを含むことはできません。バックスラッシュも見た目の +通りに扱われるため、次の文字の特殊な意味を打ち消すといった働きをしません。 +ダブルクオートで囲った文字列には特殊な意味の文字が使えます。以下に便利なもの +を掲げておきます。 + + \t <Tab> + \n <NL>, line break + \r <CR>, <Enter> + \e <Esc> + \b <BS>, backspace + \" " + \\ \, backslash + \<Esc> <Esc> + \<C-W> CTRL-W + +最後の2つは単なる例です。"\<name>"形式で(nameで指定した)特殊キーを含むとい +う意味になります。 +文字列で使える特殊な表現についての詳細は|expr-quote|をご覧ください。 + +============================================================================== +*41.3* 式(expression) + +vimには豊富ながらもシンプルな方法で式の処理を行えます。厳密な定義については +|expression-syntax|をご覧ください。ここではごく基本的な機能にしぼって説明し +ます。 +既に述べたような、数値や文字列や変数はそれ自体が1つの式です。つまり式を書け +る場所であれば、数値でも文字列でも変数でも使えるということです。それ以外にも +式にはこのような基本アイテムがあります。 + + $NAME 環境変数 + &name オプション + @r レジスタ + +例を挙げましょう。 > + + :echo "The value of 'tabstop' is" &ts + :echo "Your home directory is" $HOME + :if @a > 5 + +"&name"形式はオプション値を保存したり、別の値に設定したり、古い値に戻したり、 +といったことに使えます。 > + + :let save_ic = &ic + :set noic + :/The Start/,$delete + :let &ic = save_ic + +'ignorecase'オプションをoffにすることで、"The Start"パターンの検索を明示的に +大文字と小文字を分別させています。また、保存しておいた値を後で戻しています。 + + +演算 +---- + +上で述べたような基本的なアイテムを組み合せるとより興味深くなります。数値演算 +を始めましょう。 + + a + b 加算 + a - b 減算 + a * b 乗算 + a / b 除算 + a % b 剰余演算(余りを得る) + +演算子の優先順位は普通の計算の場合と同じです。例を挙げましょう。 > + + :echo 10 + 5 * 2 +< 20 ~ + +カッコを使って優先順位を上げることもできます。別に普通のことですね。 > + + :echo (10 + 5) * 2 +< 30 ~ + +文字列は"."演算子を使って連結できます。 > + + :echo "foo" . "bar" +< foobar ~ + +":echo"コマンドに複数の文字列を与えると、空白文字1つでそれらを接続します。例で +はパラメタは1つの式になっていますから、そのような空白文字は挿入されていませ +ん。 + +C言語からは条件演算子を借りました。 > + + a ? b : c + +"a"の結果がTrueであれば、"b"となり、そうでなければ、"c"となります。 > + + :let i = 4 + :echo i > 5 ? "i is big" : "i is small" +< i is small ~ + +3つの部分は事前に評価(evaluate)されますので、このように動くと考えることも +できます。 + + (a) ? (b) : (c) + +============================================================================== +*41.4* 条件文 + +":if"コマンドは条件が成立した場合に限り、以降のステートメントを":endif"が見 +つかるまで実行します。記述形式はこのようになります。 + + :if {condition} + {statements} + :endif + +{condition}で与えられた式を評価してTrue(0以外)であれば、{statements}の内容 +を実行します。{condition}も{statements}も正しく記述したコマンドでなければな +りません。ここにゴミがあると、vimは":endif"をうまく見つけられなくなります。 +条件文では":else"も使えます。その場合の記述形式はこのようになります。 + + :if {condition} + {statements} + :else + {statements} + :endif + +2つ目の{statements}は最初の条件を満たさない場合にだけ実行されます。 +最後に":elseif"があります。 + + :if {condition} + {statements} + :elseif {condition} + {statements} + :endif + +これは":else"+"if"と全く同様に動きます。でもこれを使うと余分な":endif"を使 +わなくて済みます。 +vimrcファイルで便利に使えるサンプルを例にしましょう。これは'term'オプション +の内容によって、それぞれに依存する何かを行うためのスクリプトです。 > + + :if &term == "xterm" + : " Do stuff for xterm + :elseif &term == "vt100" + : " Do stuff for a vt100 terminal + :else + : " Do something for other terminals + :endif + + +論理演算子 +---------- + +既に述べた例の中でも論理演算子を使っています。最もよく使うものを示します。 + + a == b 等しい + a != b 等しくない + a > b より大きい + a >= b より大きいか等しい + a < b より小さい + a <= b より小さいか等しい + +この結果は条件に合致していれば1、そうでなければ0となります。例を示しま +しょう。 > + + :if v:version >= 600 + : echo "congratulations" + :else + : echo "you are using an old version, upgrade!" + :endif + +"v:version"というのはvimが定義している変数で、これにはvimのバージョン値が入 +ります。version6.0は600となります。version6.1なら601です。 +これはvimの複数のバージョンで動作するスクリプトを書く時に重宝します。 +|v:version|もどうぞ。 + +論理演算子は数値でも文字列でも使えます。2つの文字列を比較する時、数値差を使 +います。この数値にはバイト値を比べますが、一部の言語では必ずしも正しい結果と +ならない場合があります。 +文字列と数値を比較する時は、文字列をまず数値に変換します。ちょっとトリッキー +なんですが、文字列が数字列でない時は、その値が0とみなされます。例をあげま +しょう。 > + + :if 0 == "one" + : echo "yes" + :endif + +これは"yes"と表示されます。というのは"one"というのは数字列ではありませんから +その変換結果が0となるためです。 + +文字列にはさらに2つの論理演算子があります。 + + a =~ b パターンと合致する + a !~ b パターンと合致しない + +左辺の"a"は文字列として扱い、右辺の"b"は何か検索したいパターンとして扱います。 +次に例を示します。 > + + :if str =~ " " + : echo "str contains a space" + :endif + :if str !~ '\.$' + : echo "str dows not end in a full stop" + :endif + +パターンにシングルクオートで囲った文字列を使っているのがポイントです。これな +らバックスラッシュをそのまま使えるので便利です。これをダブルクオートで囲むと +バックスラッシュを2重に書く必要があるのでバックスラッシュだらけになってしま +います。 + +'ignorecase'オプションは文字列の比較でも影響を与えます。影響を避けるには、 +大文字小文字を区別する時は"#"、しない時は"?"を演算子につけます。つまり"==?" +とすれば、2つの文字列を大文字小文字を無視して同じ文字列かを返し、"!~#"なら +大文字小文字を区別した上でパターンに合致するかどうかをチェックします。論理演 +算子の全リストは|expr-==|をご覧ください。 + + +他のループコマンド +------------------ + +":while"コマンドについては既に述べましたが、":while"と":endwhile"の中で使え +るステートメントがまだ2つあります。 + + :continue ループの先頭に戻る。ループは脱けない。 + :break ":endwhile"まで進み、ループを脱ける。 + +例: > + + :while counter < 40 + : call do_something() + : if skip_flag + : continue + : endif + : if finished_flag + : break + : endif + : sleep 50m + :endwhile + +":sleep"コマンドを使うと一定時間、何もしないようにできます。"50m"という指定 +なら、50ミリ秒となります。また":sleep 4"であれば、4秒スリープします。 + +============================================================================== +*41.5* 式を実行する + +ここまではスクリプトのコマンドを直接実行するものばかりでした。":execute"コマ +ンドを使うと、式の評価結果をコマンドとして実行することができます。これは動的 +にコマンドを生成して実行させることのできる極めて強力な手法です。 +次の例は変数に格納した文字列をタグ名とみなしてタグジャンプするコマンドです。 > + + :execute "tag " . tag_name + +"."は文字列"tag "と変数"tag_name"の*内容*を連結します。変数"tag_name"には +"get_cmd"という値が入っていたとすると、実際にはこのようなコマンドを実行する +ことになります。 > + + :tag get_cmd + +":execute"コマンドはコマンド行のコマンド(コロンコマンド)のみ実行できます。 +":normal"コマンドを使うと、通常コマンドを実行できます。ただし、このコマンド +のパラメタは式ではなく、コマンド文字の集合として扱います。例を示します。 > + + :normal gg=G + +このコマンドは最初の行にジャンプして"="オペレータを使って全行のフォーマット +を整えます。 +":normal"のパラメタとして式を指定したい場合は、":execute"コマンドを組み合せ +ます。例をあげます。 > + + :execute "normal " . normal_commands + +"normal_commands"という変数には通常モード用のコマンドが入ってなければなりま +せん。 +また、":normal"には完全なコマンドをパラメタとして与えます。そうでないと、vim +はパラメタ数の最後まで走ってから中断してしまいます。例えば、挿入モードを使う +のであればかならずその挿入モードを終了しなくてはなりません。この例はちゃんと +動きます。 +> + :execute "normal Inew text \<Esc>" + +これは"new text "という文字列を現在行に追加します。末尾の"\<Esc>"をご覧くだ +さい。これはスクリプトの中での本当の<Esc>記号が入力されるのを避けるのに必要 +です。 + +============================================================================== +*41.6* 関数の利用 + +vimは多くの関数を定義しています。また膨大な数の機能をその方法で提供していま +す。この節ではいくつかの例を使って説明を行います。機能の全リストについては +|functions|をご覧ください。 + +関数の呼び出しは":call"コマンドで行います。パラメタは"("と")"の中に","で区切 +って指定します。このようになります。 > + + :call search("Date: ", "W") + +上の例では search() 関数を"Date:"と"W"をパラメタとして呼び出しています。 +search()関数は最初のパラメタが検索パターンで、2つ目がフラグ指定となります。 +"W"フラグはファイルの末尾に達した時に1行目に戻らない(ラップしない)という意 +味です。 + +関数は式の中で使うこともできます。例を示します。 > + + :let line = getline(".") + :let repl = substitute(line, '\a', "*", "g") + :call setline(".", repl) + +getline() 関数は現在のファイルから1行を抽出する関数です。パラメタには行番号を +指定します。この場合は"."ですが、これは現在カーソルのある行を示します。 +substitute()関数は":substitute"コマンドとほぼ同じです。最初のパラメタは置き換 +えを実行する文字列で、2つ目のパラメタはパターン、3つ目は置き換える文字列、最 +後のパラメタはフラグです。 +setline() 関数は1つ目のパラメタでの指定行を、2つ目のパラメタの文字列に設定し +ます。この例ではカーソル位置の行をsubstitute()の結果と置き換えます。ですから、 +この3つのステートメントの実行結果はこれと同じです。 > + + :substitute/\a/*/g + +関数の利用はsubtitute()呼び出しの前後でより多く動かすようになると、がぜん面白 +くなります。 + + +関数 *function-list* + +関数には多くの種類があります。ここで使われ方によって分類して説明します。アル +ファベット順のリストは|functions|にあります。関数名の上でCTRL-]を押せば詳細な +説明がご覧いただけます。 + +文字列繰作: + char2nr() 文字のASCII値を得る。 + nr2char() ASCII値から文字を得る + escape() '\'で始まるように文字をクオートする + strtrans() 文字列を印刷可能な状態とする。 + tolower() 文字列を小文字にする + toupper() 文字列を大文字にする + match() 文字列の中でパターンが一致する桁位置を返す + matchend() 文字列の中でパターンと一致する末尾の桁位置を + 返す + matchstr() 文字列の中で一致したパターンを返す + stridx() 長い文字列の中にある短かい文字列の最初の位置 + strridx() 長い文字列の中にある短かい文字列の最後の位置 + strlen() 文字列の長さ + substitute() パターンに合致する文字列を他のものに入れ換 + submatch() ":substitute"の中で合致した部分を得る + strpart() 文字列の一部分を得る + expand() 特定のキーワードを拡張する + type() 変数のタイプを得る + iconv() テキストのエンコーディングを変換する + +現在のバッファ内のテキストの繰作 + byte2line() 指定のバイト位置の行番号を得る + line2byte() 指定の行のバイト位置を得る + col() カーソル位置かマーク位置の桁位置を得る + virtcol() カーソル位置かマーク位置の画面上の桁位置を得る + line() カーソル位置かマーク位置の行番号を得る + wincol() カーソルのウィンドウカラム番号 + winline() カーソル位置の画面上での行数 + cursor() カーソルを指定した位置に移動させる + getline() バッファから行を得る + setline() バッファの行を入れ換える + append() {lnum}で指定した行の下に{string}を追加する + indent() 指定の行をインデントする + cindent() C言語のルールに基いてインデントを行う + lispindent() Lisp 言語のルールに基いてインデントを行う + nextnonblank() 次の空行を探す。 + prevnonblank() 逆方向に空行を探す + search() パターンに合致する場所を探す + searchpair() start/skip/endの呼応しているものを探す + +システム関数とファイル繰作 + browse() 指定のファイルを見る + glob() ワイルドカードを拡張する + globpath() 指定のディレクトリのワイルドカードを全部拡張 + resolve() ショートカットがどこを示しているか探す + fnamemodify() ファイル名を変更する。 + executable() 実行形式ファイルかどうかをチェックする + filereadable() ファイルが読み込み可能かどうかをチェックする + filewritable() ファイルが書き込み可能かどうかをチェックする + isdirectory() ディレクトリがあるかどうかをチェックする + getcwd() 現在のカレントディレクトリを得る + getfsize() ファイルのサイズを得る + getftime() ファイルの最終更新日時を得る + localtime() 現在時刻を得る + strftime() 時刻を文字列に変換する + tempname() テンポラリファイルの名前を得る。 + delete() ファイルを削除する + rename() ファイル名を変える + system() シェルコマンドを実行し、その結果を知る + hostname() システムの名称を得る + +バッファ、ウィンドウ、パラメタリストの繰作 + argc() パラメタリストの項目数 + argidx() パラメタリスト中の現在の位置 + argv() パラメタリストから1つを得る + bufexists() バッファがあるかどうかをチェックする + buflisted() バッファがあって、リストに入っていることを + チェックする + bufloaded() バッファがあって、ロードされていることを + チェックする + bufname() 指定バッファの名前を得る + bufnr() 指定バッファのバッファ番号を得る + winnr() 現在バッファのウィンドウ番号を得る + bufwinnr() 現在バッファのウィンドウ番号を得る + winbufnr() 指定ウィンドウのバッファ番号を得る + getbufvar() 指定バッファの変数値を得る + setbufvar() 指定バッファに変数を設定する + getwinvar() 指定ウィンドウの変数値を得る + setwinvar() 指定ウィンドウに変数を設定する + +フォールド(折り畳み処理) + foldclosed() 指定の行に閉じたフォールドがあるかチェック + foldclosedend() foldclosed()に似ている。最後の行番号を返す + foldlevel() 指定の行のフォールドレベルをチェック + foldtext() 閉じたフォールドの表示行を生成 + +シンタックスハイライト + hlexists() ハイライトグループがあるかチェック + hlID() ハイライトグループのIDを得る + synID() 指定の場所のシンタックスIDを得る + synIDattr() シンタックスIDの指定の属性を得る + synIDtrans() 変換したシンタックスIDを得る + +履歴 + histadd() 履歴に項目を追加 + histdel() 履歴から項目を削除 + histget() 履歴の項目を得る + histnr() 履歴の最大番号を得る + +会話処理 + confirm() 利用者に選択をさせる + getchar() 利用者の入力した文字を得る + getcharmod() 最後に入力した識別子(modifier)を得る + input() 利用者の入力した行を得る + inputsecret() 利用者の入力した行を得る。ただし表示はしない + inputdialog() ダイアログを使って利用者の入力した行を得る + inputsave() 先行した入力を保存して状態をクリアする + inputrestore() inputsave()で保存した状態に戻す + +vimサーバ + serverlist() サーバ名のリストを返す + remote_send() vimサーバにコマンド文字を送る + remote_expr() vimサーバで式を評価する + server2client() vimサーバのクライアントに返信を送付する + remote_peek() vimサーバから返信があったかどうかをチェック + remote_read() vimサーバからの返信を読み込む + foreground() vimのウィンドウを前面に持ってくる + remote_foreground() vimサーバのウィンドウを前面に持ってくる + +その他 + mode() 現在の編集モードを得る + visualmode() 最後にビジュアルモードを使った時の情報 + hasmapto() マップがあるかどうかをチェック + mapcheck() 合致するマップがあるかどうかをチェック + maparg() マップのrhsを得る + exists() 変数、関数などがあるかどうかチェック + has() vimが機能をサポートしているかをチェック + cscope_connection() cscope接続があるかどうかをチェック + did_filetype() FileType自動コマンドを使っているかをチェック + eventhandler() イベントハンドラによって起動されたかをチェック + getwinposx() GUI版vimウィンドウのX座標 + getwinposy() GUI版vimウィンドウのY座標 + winheight() 指定ウィンドウの高さを得る + winwidth() 指定ウィンドウの横巾を得る + libcall() 外部ライブラリの関数を呼ぶ + libcallnr() 同上、ただし、復帰値を見る + getreg() レジスタの値を得る + getregtype() レジスタのタイプを得る + setreg() レジスタの値を設定する + +============================================================================== +*41.7* 関数の定義 + +vimでは自作の関数を定義することができます。基本的な関数定義は次のような構造 +となります。 > + + :function {name}({var1}, {var2}, ...) + : {body} + :endfunction +< + Note: + 関数名は1文字目が必ず大文字にしなければなりません。 + +ここで2つの数値のうち小さい方を返す関数を作ってみましょう。関数は次のような +行で始まります。 > + + :function Min(num1, num2) + +ここで、関数名が"Min"であること。パラメタは2つで、それぞれ"num1"、"num2"と +いう名前であることがわかります。 +最初に行うのはどちらが小さいかをチェックすることです。 + > + : if a:num1 < a:num2 + +"a:"は特殊なプレフィクスで、この変数が関数のパラメタであることを示します。 +さて、ここで小さい方の値を変数"smaller"に代入しましょう。 > + + : if a:num1 < a:num2 + : let smaller = a:num1 + : else + : let smaller = a:num2 + : endif + +変数"smaller"はローカル変数です。関数内で使っている変数は、その関数内でロー +カルです。但し"g:"や"a:"や":s"といったプレフィクスを関数の前につけた場合は例 +外です。 + + Note: + 関数内からグローバル変数にアクセスするには、"g:"を変数名の前に付け + る必要があります。つまり、関数内では"g:count"はグローバル変数"count" + のことです。しかし"count"というのは関数内にローカルな別の変数です。 + +ここで呼び出し元に最少値を返すために":return"ステートメントを使います。そし +て、関数を終了します。 > + + : return smaller + :endfunction + +この関数を通して記述すると次のようになります。 > + + :function Min(num1, num2) + : if a:num1 < a:num2 + : let smaller = a:num1 + : else + : let smaller = a:num2 + : endif + : return smaller + :endfunction + +ユーザ定義関数は組み込み関数の場合と全く同じ方法で呼び出します。違いは名前だ +けです。上で定義した"Min"関数の場合なら次のように使います。 > + + :echo Min(5, 8) + +今だけは(??)、vimは関数の各行を解釈し、関数が実行されます。 +未定義の変数や関数を使うといった間違いがあれば、エラーメッセージを表示しま +す。関数を定義している時はエラーは検出されません。 + +関数が、パラメタなしの":endfunction"や":return"に辿り着くと、復帰値は0にな +ります。 + +既存の関数を定義し直すには":function"コマンドに"!"を付けます。 > + + :function! Min(num1, num2, num3) + + + +範囲の利用 +---------- + +":call"コマンドには行範囲を渡すことができます。これには2つの方法のうちどちらか +を適用します。1つは、関数を定義する時に"range"キーワードを使う方法です。これを +使うとコマンド自身に行範囲が指定できるようになります。 +関数は"a:firstline"と"a:lastline"という2つの変数を暗黙的に受け取ります。この2 +つの変数は関数が呼ばれた時の範囲の開始行番号、最終行番号になります。例を挙げま +しょう。 > + + :function Count_words() range + : let n = a:firstline + : let count = 0 + : while n <= a:lastline + : let count = count + Wordcount(getline(n)) + : let n = n + 1 + : endwhile + : echo "found " . count . " words" + :endfunction + +この関数はこのように呼び出すことができます。 > + + :10,30call Count_words() + +これを実行させると、関数を1度だけ実行し、単語数の合計を表示します。 + +もうひとつ、"range"キーワードを使わない関数で行範囲を使う方法があります。 +この場合、範囲の各行に対して1度づつ関数が呼び出されます。例を示しましょう。 +> + :function Number() + : echo "line " . line(".") . " contains: " . getline(".") + :endfunction + +この関数を次のように呼び出したとします。 > + + :10,15call Number() + +この場合ですと、関数は6回呼び出されます。 + + +可変個のパラメタ +---------------- + +vimではパラメタが可変個となるような関数を定義できます。例えば、次のコマンド +では少なくとも1つのパラメタ(start)と最大20個の追加パラメタを受けとります。 > + + :function Show(start, ...) + +変数"a:1"には1つ目のオプションパラメタ、"a:2"は2つ目、"a:3"は3つ目、とな +ります。変数"a:0"にはオプションパラメタの数が入ります。 +このようになります。 > + + :function Show(start, ...) + : echohl Title + : echo "Show is " . a:start + : echohl None + : let index = 1 + : while index <= a:0 + : echon " Arg " . index . " is " . a:{index} + : let index = index + 1 + : endwhile + : echo "" + :endfunction + +ここでは、後述の":echo"コマンドでハイライト表示をさせるために、":echohl"を使 +っています。":echohl None"はそれを停止しています。":echon"コマンドは":echo" +と同様ですが、最後の改行を出力しません。 + + +関数のリスト +------------ + +":function"コマンドは全てのユーザ定義関数のリストを出力します。 > + + :function +< function Show(start, ...) ~ + function GetVimIndent() ~ + function SetSyn(name) ~ + +関数が何を実行するかを見るには、":function"のパラメタに関数名を指定します。 > + + :function SetSyn +< 1 if &syntax == '' ~ + 2 let &syntax = a:name ~ + 3 endif ~ + endfunction ~ + + +デバッグ +-------- + +デバッグ中やエラーメッセージの表示時に行番号が表示されると助かります。 +デバッグモードについては|debug-scripts|をご覧ください。 +また、'verbose'オプションを12以上に設定すると全ての関数呼び出しを見ることが +できます。15以上にすると、実行する各行の内容も見ることができます。 + + +関数の削除 +---------- + +例えばShow() 関数を削除するのはこのようにします。 > + + :delfunction Show + +存在しない関数を削除しようとするとエラーとなります。 + +============================================================================== +*41.8* 例外 + +例題から始めましょう: > + + :try + : read ~/templates/pascal.tmpl + :catch /E484:/ + : echo "Sorry, the Pascal template file cannot be found." + :endtry + +":read"コマンドはファイルがなければ失敗します。このコードはエラーメッセージ +は生成せずに、ユーザーに代りのメッセージを表示します。 + +":try"と":endtry"コマンドの間のエラーは例外になります。例外は文字列です。エ +ラーのときには文字列がエラーメッセージを含んでいます。また、全てのエラーメッ +セージは番号を持っています。この例題のエラーは"E484:"を含んでいます。この番 +号は変わらないことが保証されています(テキストは翻訳されるなどして変わるかも +しれません)。 + +":read"コマンドが他のエラーを起こした場合、"E484:"というパターンはマッチしな +いでしょう。したがってその例外はキャッチされずに通常のエラーメッセージを表示 +します。 + +あなたはこのようにしたくなるかもしれません: > + + :try + : read ~/templates/pascal.tmpl + :catch + : echo "Sorry, the Pascal template file cannot be found." + :endtry + +これは全ての例外をキャッチするという意味です。しかしこれでは"E21: Cannot +make changes, 'modifiable' is off"のような有効なエラーに気づくことができませ +ん。 + +ほかにも便利な仕組みに":finally"コマンドがあります: > + + :let tmp = tempname() + :try + : exe ".,$write " . tmp + : exe "!filter " . tmp + : .,$delete + : exe "$read " . tmp + :finally + : call delete(tmp) + :endtry + +これはカーソル行からファイルの最後までフィルタを通します。"filter"コマンドは +ファイルの名前を引数に取ります。こうすれば、":try"と":finally"の間で問題が起 +こったときや、ユーザーがCTRL-Cを押して操作をキャンセルしたときにも"call +delete(tmp)"は必ず呼ばれます。一時ファイルを残す心配はありません。 + +例外についてさらに詳しい情報はリファレンスマニュアルの|exception-handling|を +参照してください。 + +============================================================================== +*41.9* いろいろな留意事項 + +ここではvimスクリプトに適用される項目の概要を述べます。他の場所でも同じよう +な説明を行っていますが、手頃なチェックリストに使えることでしょう。 + + +行末記号はシステムによって異なります。Unixでは<NL>文字を使いますが、MS-DOS +やWindows、OS/2などでは<CR><LF>を使います。末尾が<CR>となっているようなマッ +プを使う時には気を付けてください。|:source_crnl|もご覧ください。 + + +空白類 +------ + +空行は利用可能です。単に無視します。 + +行頭の空白類(空白文字とTAB)は常に無視します。パラメタ間の空白類(例えば、後述 +の"set"と"coptions"の間)は1つの空白文字に圧縮して、セパレータとなります。 +また、最後の文字より後にある空白類は場合によって、無視されたりされなかったり +します。次のようになるわけです。 + +次のような"="記号を含むような":set"コマンドがあるとします。 > + + :set cpoptions =aABceFst + +"="の直前にある空白類は無視されます。でも"="の後には空白がありません! + +オプション値に空白類を含ませるには、次のようにバックスラッシュ("\")でエス +ケープする必要があります。 > + + :set tags=my\ nice\ file + +同じ目的で次のように書くと、 > + + :set tags=my nice file + +これはエラーとなります。というのは上の行はこのように展開されるためです。 > + + :set tags=my + :set nice + :set file + + +コメント +-------- + +コメントは " (ダブルクオート)記号で始めます。この文字の後に書いてあるものは +行末に至るまで全てをコメントとみなし、無視します。但しコメントと考えないよう +なコマンドは例外です。例を下にあげておきます。 +コメントは行のどこからでも始めることができます。 + +コメントでちょっとした「キャッチ」を作ろうとして次のようにしたとします。 > + + :abbrev dev development " shorthand + :map <F3> o#include " insert include + :execute cmd " do it + :!ls *.c " list C files + +短縮形'dev'は'development " shorthand'に拡張されます。<F3>は実際には +'o# ....'以降、'" insert include'までの行全体となります。また"execute"コマン +ドはエラーとなり、"!"コマンドはそれ以降を全部シェルに渡すため、" 記号が1つ +しかない、というエラーになるでしょう。 +結局、":map"、":abbreviate"、":execute"、"!"コマンドでは(このような制限があ +るコマンドは他にもあります)コメントは使えないということです。 +":map"、":abbreviate"、":execute"に関しては、こういうズルイ方法を使うと、コ +メントを付けられます。 > + + :abbrev dev development|" shorthand + :map <F3> o#include|" insert include + :execute cmd |" do it + +'|'文字を使うと、コマンドを複数に分割できます。この場合、2つ目のコマンドに +はコメントしかないということになります。 + +":map"と":abbreviate"の場合は'|'の前に空白類を置かないように注意してくださ +い。このコマンドでは行末か'|'の前までの全文字が含まれてしまいます。この振舞 +いのため、次のように行末に空白があっても見えないわけです。 > + + :map <F4> o#include + +この問題を避けるには、vimrcを編集する時には'list'オプションをonにするのが +よいでしょう。 + + +落とし穴 +-------- + +次の例には大きな問題があります。 + + :map ,ab o#include + :unmap ,ab + +ここのunmapコマンドはうまく動きません。というのは",ab "(末尾に空白あり)を +unmapしようとするためです。 これはマップシーケンスに存在しません。エラーが発 +生しますが、理由を見つけるのが非常に難しいです。これは行末の空白類が見えない +からです。 + +":unmap"コマンドの後にコメントを追加した場合にも同じことが発生します。 > + + :unmap ,ab " comment + +確かにこのコマンドではコメント部は無視してくれます。でもvimは",ab "(空白 +5個付き)のマップを削除しようとしますが、そんなのはありません。これはこのよ +うに書き直せば大丈夫です。 > + + :unmap ,ab| " comment + + +ビューの復元 +------------ + +何らかの変更を加えてから、カーソルのあった場所に戻りたい時があります。 +場所自体はマークで復元できますが、画面に表示される行範囲は一致しません。 +単にマークした場所を復元するのもいいのですが、そうすると同じ行がウィンドウの最上段 +に表示されます。 +この例は現在行をヤンクして1行目の上にプットし、ビューを復元します。 > + + map ,p ma"aYHmbgg"aP`bzt`a + +これが何をするか見ていきましょう。 > + ma"aYHmbgg"aP`bzt`a +< ma 現在のカーソル位置をマーク a をつける + "aY 現在行をレジスタ a にヤンク + Hmb 画面の最上段にジャンプし、マーク b をつける + gg ファイルの1行目にジャンプ + "aP レジスタ a の内容を1行目の上にプット + `b マーク b にジャンプ + zt カーソル行を画面の1行目になるようにスクロール + `a 最初にマークした場所にジャンプ + + +PACKAGING +パッケージ + +あなたが作った関数の名前が他の人から入手したものとダブるのを避けるには、次の +ように行ってください。 +- 各関数名の前にユニークな文字列を付けます。私はよく短縮形を使っています。 + 例えば、"OW_"をオプションウィンドウ関数に使うといった具合です。 +- 自作の関数の定義を1つのファイルに入れます。その上で、関数がロードされたか + どうかをチェックするためのグローバル変数を設定します。そのファイルを再度 + 読み込もうとした時は、まずその関数をアンロードするようにします。 +例: > + + " これは XXX のパッケージです + + " 再ロードであれば、関数を削除します + if exists("XXX_loaded") + delfun XXX_one + delfun XXX_two + endif + + function XXX_one(a) + ... body of function ... + endfun + + function XXX_two(b) + ... body of function ... + endfun + + " ロードが完了した印として、グローバル変数に反映します + let XXX_loaded = 1 + +============================================================================== +*41.10* プラグインを書く *write-plugin* + +多くの人が使えるようなvimスクリプトを書くこともできます。これをプラグインと呼 +びます。vimのユーザはあなたが作ったプラグインを"plugin"ディレクトリにドロップ +するだけで、その機能をきちんと使えます。|add-plugin|も併せてご覧ください。 + +実際にはプラグインには2種類あります。 + + グローバルプラグイン : 全タイプのファイル用 + ファイルタイププラグイン: 特定タイプのファイル用 + +この節では1つ目のグローバルプラグインについて説明します。ほとんどの項目は、 +ファイルタイププラグインを書く時も利用できます。ファイルタイププラグイン独自 +の点については次節の|write-filetype-plugin|をご覧ください。 + + +名称 +---- + +何よりも最初にしなければならないのはプラグインの名称を決めることです。プラグ +インが提供する機能は名前から明らかになるべきです。また誰か他の人が書いたプラ +グインで名前は同じだけど、内容が違っているようなものは避けるべきです。 +名称は8文字以下にしてください。これは古いMS-Windowsシステムの抱える問題を避 +けるためです。 + +入力ミスを集めた"typecorr.vim"というスクリプトがあります。ここではそれを例題 +として利用します。 + +プラグインを誰でも使えるようにするには、いくつかのガイドラインに従ってくださ +い。ここでは1歩づつ説明します。このプラグインの完全なソースはこの節の末尾に +入っています。 + + +ボディ +------ + +では、プラグインの本体部分に入りましょう。行番行は実際の番号です。 > + + 14 iabbrev teh the + 15 iabbrev otehr other + 16 iabbrev wnat want + 17 iabbrev synchronisation + 18 \ synchronization + 19 let s:count = 4 + +もちろん、本当のリストはもっともっと長いです。 + +行番号は説明のために追加したものです。本当にプラグインを作る時には入力しない +でください。 + + +へッダ +------ + +おそらく、新しいセットをプラグインに追加し、いくつかのバージョンができてしまう +でしょう。このファイルを配布すると、それを使った人々は、誰がこの素晴らしいプラ +グインを書いたのかを知りたいと思うでしょうし、意見をメールで送りたい場合にどこ +に送ればよいのでしょうか? +そのため、次のようなヘッダをプラグインに書いておいてください。 > + + 1 " Vim global plugin for correcting typing mistakes + 2 " Last Change: 2000 Oct 15 + 3 " Maintainer: Bram Moolenaar <Bram@vim.org> + +著作権とライセンスについて。プラグインがとても便利で配布を制限するだけの価値が +あるのなら、どうか、ライセンスにパブリックドメインかVimライセンス|license|のど +ちらかを使うことを検討してみてください。次の短い宣言をプラグインの最初のほうに +書いておくだけで十分です。 > + + 4 " License: This file is placed in the public domain. + + +行連結、副作用の回避 *use-cpo-save* + +上の例の18行目では、行連結(|line-continuation|)を使っています。 +'compatible'オプションをonにしているユーザはこれが問題となるでしょう。ですが +様々な副作用があるため、システム側で勝手に'compatible'をoffにするわけにはい +きません。これを避けるには'cpoptions'オプションをvimのデフォルト値に設定し、 +後でそれを元に戻すようにします。これで行連結が使えますから、そのスクリプトは +たいていの環境で動くようになります。この設定は次のように行います。 > + + 11 let s:save_cpo = &cpo + 12 set cpo&vim + .. + 42 let &cpo = s:save_cpo + +最初に'cpoptions'の内容を変数"s:save_cpo"に保存します。プラグインの最後で、 +その値を元に戻すわけです。 + +スクリプトにローカルな変数は|s:var|となる点に注意してください。グローバル変 +数だと他のどこかで既に使っている可能性があります。スクリプト内だけで使うよう +な場合は常にスクリプトローカルな変数を使うようにしてください。 + + +ロードの禁止 +------------ + +あるプラグインをいつもではないけれど、時々ロードして利用したいと思うことがあ +ります。また、システム管理者が全員用のプラグインディレクトリにそのスクリプト +を入れたけれど、一般ユーザには自分で使いたいプラグインを使わせてあげたいこと +もあるでしょう。こういった場合、ユーザ側で特定のプラグインのロードを禁止でき +るように準備してあげないといけません。これは次のようにすれば実現できます。 +> + 6 if exists("loaded_typecorr") + 7 finish + 8 endif + 9 let loaded_typecorr = 1 + +これを使うとスクリプトの2重ロードを避けることもできます。2重ロードしてしま +うと、関数の2重定義エラーや自動コマンドを2回追加することによるトラブルを防 +ぐことになります。 +JP補: 要はユーザのvimrcなどで上記の"loaded_typecorr"というグローバル変数を定 +JP補: 義してしまえばよいわけです。(本当か?) + + +マップ +------ + +さて、プラグインをもっと魅力あるものに仕上げましょう。カーソル下の単語をコレ +クションに追加するようなマップを追加します。このマップ用の一連のキー入力を拾 +いますが、ユーザは既にそれを何か他の機能に使っているかもしれません。 プラグ +インを使う時にどのキーに割りあてるかをユーザ側に決めてもらうには、<Leader> +項目を使います。 > + + 22 map <unique> <Leader>a <Plug>TypecorrAdd + +"<Plug>TypecorrAdd"でも動くでしょうが、さらにできることがあります +訳注: The "<Plug>TypecorrAdd" thing will do the work, +訳注: more about that further on. + +ユーザは"mapleader"変数にマップさせたい最初のキーシーケンスを設定できます。 +ですから、ユーザが次のように実行したとします。 > + + let mapleader = "_" + +この機能は最終的に"_a"に定義されます。ユーザがこれをやらなければ、デフォルト +値(バックスラッシュ)を使います。この場合は"\a"がマップとして定義されます。 + +<unique>の指定があることに注意してください。これは指定のコマンドがマップ済で +ある場合に、エラーを表示します。|:map-<unique>|もご覧ください。 + +ではユーザが独自のシーケンスを定義したい場合はどうしましょうか?これは次のよ +うな仕組みで実現できます。 > + + 21 if !hasmapto('<Plug>TypecorrAdd') + 22 map <unique> <Leader>a <Plug>TypecorrAdd + 23 endif + +ここでは"<Plug>TypecorrAdd"に対するマップが既にあるかどうかを調べ、"<Leader>a" +が未定義の場合に限りそれにマップされまう。ユーザはこれを自分のvimrcファイル +に置く機会が与えられます。 > + + map ,c <Plug>TypecorrAdd + +こうすれば、キーシーケンスを"_a"や"\a"でなく",c"に(自由に)割り合てられます。 + + +パーツ +------ + +スクリプトが長大になってきた場合、これを複数に分割したくなります。これは関数 +やマップを使うことで可能です。ただし、そのような内部用の関数やマップは他のス +クリプトから呼ばれるのは好ましくありません。例えば、Add()という関数を定義で +きます。でも他のスクリプトでも同じ名前の関数を定義しようとする可能性がありま +す。これを避けるには関数に"s:"というプレフィクスを付けてスクリプト内にローカ +ルな関数を定義できます。 + +新たに入力コレクションを追加する関数を定義します。 > + + 30 function s:Add(from, correct) + 31 let to = input("type the correction for " . a:from . ": ") + 32 exe ":iabbrev " . a:from . " " . to + .. + 36 endfunction + +ここで、このスクリプトから s:Add() 関数を呼ぶことができます。他のスクリプト +も s:Add() 関数を定義できますが、いずれもそのスクリプトにローカルであり、同 +じスクリプトの中からのみ呼び出すことができる。これ以外にグローバルなAdd()関 +数を定義することもできます。これはまた上のいずれとも異なった関数です。 + +マップ定義では<SID>も使えます。これは現在のスクリプトを識別するためのスクリ +プトIDを生成します。"入力コレクション"プラグインでは次のように利用していま +す。 > + + 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add + .. + 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> + +ですから、ユーザが"\a"と入力すると次の手順でコマンドが起動します。 > + + \a -> <Plug>TypecorrAdd -> <SID>Add -> :call <SID>Add() + +もし、他のスクリプトが<SID>Add をマップしていても、スクリプトIDが違ったもの +になりますから、これは違ったマップとして定義できるのです。 + +ここでは s:Add() と書く代わりに <SID>Add() と書いている点に注意してください。 +これはマップはスクリプトの外側でユーザ自身が入力するものであるためです。 +<SID>はスクリプトIDに変換されますので、vimはどのスクリプトのAdd()関数をどの +スクリプトから探せばよいかわかるからです。 + +これはちょっと複雑です。ここではプラグインが別のプラグインと共同で処理を行う +ことを求められるためです。基本的なルールは2つです。1つはマップの<SID>Add() +を使うこと。もう1つは他の場所(スクリプトの中や自動コマンドやユーザ定義コマン +ド)にある s:Add() を使うことです。 + +メニュー項目を追加する方法でもマップと同じことができます。 > + + 26 noremenu <script> Plugin.Add\ Correction <SID>Add + +メニューにプラグインを追加するには"Plugin"ディレクトリを用いることをお勧めし +ます。この場合、選択できるのは1つの項目だけです。2つ以上を追加するにはサブ +メニューを作ることをお勧めします。例えば、"Plubin.CVS"というプラグインがあり +このプラグインはCVSの繰作をする"Plugin.CVS.checkin"と"Plugin.CVS.checkout"を +提供しているといった場合です。 + +28行目で":noremap"を使って他のマップが問題を引き起さないようにしているのに +注意してください。例えば、誰かが":call"を再マップしてしまうかも知れません。 +24行目でも":noremap"を使っています。しかしこの場合は <SID>Addを再マップした +いのです。ここで"<script>"を使っているのはこのためです。これを指定するとスク +リプトにローカルな定義だけがマップの対象となるのです(|:map-<script>|)。26行 +目でも":noremenu"で同じことをやっています。(|:menu-<script>|) + + +<SID>と<Plug> *using-<Plug>* +------------- + +<SID>と<Plug>はどちらも、入力したキーのマップが他のマップで使うためだけの +マップを防害するのを避けるのに使います。<SID>と<Plus>の違いに注意してくださ +い。 + +<Plug> これはスクリプトの見える側です。これはユーザが一連のキー繰作を割り当 + てたいマップで使います。<plug>は実際に入力されることのない特殊なコー + ドです。 + 他のプラグインが同じ文字シーケンスを使うのと非常に違っていて、次のよ + うな構造となります。 > + <Plug> スクリプト名 マップ名 +< 今までの例で言えば、スクリプト名は"Typecorr"であり、マップ名 は"Add" + です。ですから具体的にはこのようになります。 > + <Plug>TypecorrAdd +< スクリプト名とマップ名の1文字目だけを大文字にします。こうすれば、ど + こからがマップ名なのかがわかりやすくなります。 + +<SID> これはスクリプトIDです。スクリプトIDは個々のスクリプトに与えられるユ + ニークな識別子です。 + vimの内部では<SID>は"<SNR>123_"(123の部分はそれぞれ違う番号)に変換し + ます。ですから関数"<SID>Add()"はあるスクリプトでは"<SNR>11_ADD()"と + なり、また別のスクリプトでは"<SNR>22_And()"となります。 + これは実際に":function"コマンドを使って関数リストを表示すれば解りま + す。マップでの<SID>の変換も全く同じです。これはマップからスクリプト + ローカルな関数を呼び出す方法です。 + + +ユーザ定義コマンド +------------------ + +今度はユーザ定義コマンドをコレクションに追加しましょう。 > + + 38 if !exists(":Correct") + 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) + 40 endif + +ユーザ定義コマンドは同じ名前のコマンドがない場合のみ定義できます。そうでない +場合はエラーとなります。既存のユーザ定義コマンドを上書きするのに":command!" +を使うのは良くありません。ユーザは自分で定義したコマンドがどうして動かなく +なったのかわからなくなるであろうからです。|:command|をご覧ください。 + + +スクリプト変数 +-------------- + +先頭に"s:"が付いた変数はスクリプト変数です。これはスクリプトの中でだけ有効な +ものです。スクリプト外では変数として扱われませんこれは同じ変数名を複数のスク +リプトで使う時のトラブルを避けるための仕組です。変数はvimが稼動中はずっと存 +在しています。同じスクリプトを再読み込みしても同じ変数が使われます。 +|s:var|をご覧ください。 + +面白いのは変数はスクリプト内で定義されている関数や自動コマンド、ユーザ定義コ +マンドからでも使える点です。typecorrの例でも集めた単語の数をカウントできるよ +うに数行を追加してみましょう。 > + + 19 let s:count = 4 + .. + 30 function s:Add(from, correct) + .. + 34 let s:count = s:count + 1 + 35 echo s:count . " corrections now" + 36 endfunction + +最初に s:count をスクリプトの中で4に初期化します。その後、s:Add()関数を呼び +出すと、s:count の値を1増やします。どこから関数が呼ばれても関係ありません。 +それはこの関数が同じスクリプトの中で定義されているから、スクリプト内でローカ +ルな変数が使えるからです。 + + +最後に +------ + +今まで説明してきた例題の最終形はこのようになります。 > + + 1 " Vim global plugin for correcting typing mistakes + 2 " Last Change: 2000 Oct 15 + 3 " Maintainer: Bram Moolenaar <Bram@vim.org> + 4 " License: This file is placed in the public domain. + 5 + 6 if exists("loaded_typecorr") + 7 finish + 8 endif + 9 let loaded_typecorr = 1 + 10 + 11 let s:save_cpo = &cpo + 12 set cpo&vim + 13 + 14 iabbrev teh the + 15 iabbrev otehr other + 16 iabbrev wnat want + 17 iabbrev synchronisation + 18 \ synchronization + 19 let s:count = 4 + 20 + 21 if !hasmapto('<Plug>TypecorrAdd') + 22 map <unique> <Leader>a <Plug>TypecorrAdd + 23 endif + 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add + 25 + 26 noremenu <script> Plugin.Add\ Correction <SID>Add + 27 + 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> + 29 + 30 function s:Add(from, correct) + 31 let to = input("type the correction for " . a:from . ": ") + 32 exe ":iabbrev " . a:from . " " . to + 33 if a:correct | exe "normal viws\<C-R>\" \b\e" | endif + 34 let s:count = s:count + 1 + 35 echo s:count . " corrections now" + 36 endfunction + 37 + 38 if !exists(":Correct") + 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) + 40 endif + 41 + 42 let &cpo = s:save_cpo + +そうそう、33行目はまだ説明していませんでした。これはカーソル下の単語を新たな +コレクションとして適用します。マップと短縮形はここで拡張されることに気を付け +てください。たとえ":noremap"で定義したマップから呼び出された関数でも、です。 + +'fileformat'オプションに"unix"を設定する事を推奨します。そうすればVimスクリプ +トはどこでも動くでしょう。スクリプトの'fileformat'が"dos"に設定されていると +Unixでは動きません。|:source_crnl|も見て下さい。ファイルを書き込む前に次のよう +にすれば正しく設定されます。 + + :set fileformat=unix + + +ドキュメント *write-local-help* +------------ + +プラグイン用の何らかのドキュメントを作っておくのはとても良いことです。ユーザ +側でその動きを変更できるような場合は特に、です。|add-local-help|ではそれをど +のようにインストールされるかを説明しています。 + +"typecorr.txt"という名前のプラグイン用ヘルプファイルのサンプルを示します。 > + + 1 *typecorr.txt* Plugin for correcting typing mistakes + 2 + 3 If you make typing mistakes, this plugin will have them corrected + 4 automatically. + 5 + 6 There are currently only a few corrections. Add your own if you like. + 7 + 8 Mappings: + 9 <Leader>a or <Plug>TypecorrAdd + 10 Add a correction for the word under the cursor. + 11 + 12 Commands: + 13 :Correct {word} + 14 Add a correction for {word}. + 15 + 16 *typecorr-settings* + 17 This plugin doesn't have any settings. + +最初の行だけはフォーマットに気を付けてください。この行の記述を元に"help.txt" +の"LOCAL ADDSIONS:"の節に概要を埋め込みます|local-additions|。1行目の1桁目に +は必ず"*"がなくてはなりません。ヘルプを追加したら":help"を実行して正しく追加で +きたことを確認してください。 + +ヘルプファイルに**で囲んでタグを追加することができます。ただし既存のヘルプのタ +グと同じものを使わないように気を付けてください。タグには自分のプラグイン名を使 +えばよいでしょう。例えばこの例題であれば、"typecorr-setting"といった具合です。 + +ヘルプの他の部分を参照する時には || で囲みます。こうすれば簡単にリンク先のヘル +プを見ることができます。 + + +ファイルタイプの定義 *plugin-filetype* +-------------------- + +ファイルタイプの定義がVimによって提供されていない場合、簡単に定義ファイルを作 +ることができます。通常はファイル名がパターンにマッチしたときにファイルタイプを +セットするオートコマンドです。 +例: > + + au BufNewFile,BufRead *.foo set filetype=foofoo + +この一行を'runtimepath'の最初にあるディレクトリ内の"ftdetect/foofoo.vim"に保 +存してください。Unixなら"~/.vim/ftdetect/foofoo.vim"でしょう。ファイルタイプ +の名前をスクリプトファイルの名前にする決まりになっています。 + +もし望むならより複雑な検査をすることができます。例えばそのファイルに書かれた +言語を識別するためにファイルの中身を検査するなどです。|new-filetype|を参照し +てください。 + + +サマリー *plugin-special* + +プラグインで使える特殊な記述の概要を以下に示します。 + +s:name スクリプト内にローカルな変数 + +<SID> スクリプトID。マップや関数をスクリプトローカルにする + のに使う。 + +hasmapto() スクリプトが提供している機能と同じマップが既に定義さ + れているかどうかをチェックする関数 + +<Leader> ユーザ側でプラグイン用のマップ割り当てに使う1文字目 + の文字を"mapleader"で指定できる。<Leader>は"mapleader" + の値に置換される。 + +:map <unique> 既にその名前のマップ定義があれば警告を発する。 + +:noremap <script> グローバルマップではなく、スクリプト内でローカルな + マップを使う。 + +exists(":Cmd") ユーザ定義コマンドが既にあるかどうかをチェックする。 + +============================================================================== +*41.11* ファイルタイププラグインを書く *write-filetype-plugin* *ftplugin* + +ファイルタイププラグインはグローバルプラグインと似ています。違うのは現在の +バッファ専用のマップ定義やオプション設定が行える点です。ファイルタイププラグ +インがどのように使われるかについては|add-filetype-plugin|をご覧ください。 + +先に|41.10|節のグローバルプラグインをご覧ください。そこで説明してあることは全 +てファイルタイププラグインにも適用されます。この節ではファイルタイププラグ +イン独自の機能について説明します。ファイルタイププラグインで最も違うのは現在 +のバッファだけに影響を与えるという点です。 + + +ロードの禁止 +------------ + +多くの人々に使ってもらえるようなファイルタイププラグインを書くのであれば、 +そのロードを禁止する方法が必要です。プラグインの先頭に次のような記述を追加し +てください。 > + + " Only do this when not done yet for this buffer + if exists("b:did_ftplugin") + finish + endif + let b:did_ftplugin = 1 + +これは同じプラグインを同じバッファで2重ロード(これは":edit"コマンドをパラメ +タなしで実行した時に発生します)するのを避けるのにも使えます。 + +これでユーザは自分のファイルタイププラグインに次の一行を追加するだけで、デフォ +ルトプラグインのロードを完全に禁止することができます。 > + + let b:did_ftplugin = 1 + +これはファイルタイププラグインのディレクトリは'runtimepath'にある$VIMRUNTIME +よりも前に来なければなりません。 + +もしデフォルトプラグインを使いたいけれど、そのうちのひとつを無効にしたいのな +ら、違う設定をするスクリプトをこのように作ればよいのです。 > + + setlocal textwidth=70 + +こうして書いたファイルを"after"ディレクトリに入れておけば、"vim.vim"が全ての +ファイルタイププラグインをロードした後に実行されます|after-directory|。例えば +Unixなら"~/.vim/after/ftplugin/vim.vim"となります。デフォルトプラグインは +"b:did_ftplugin"をセットするので、つまり後で再読み込みしても何もしないのです。 + + +オプション +---------- + +ファイルタイププラグインでは現在のバッファでのみオプション設定が有効となるよ +うに、次のコマンドを使うようにします。 > + + :setlocal + +また、設定できるオプションはバッファにローカルなものに限ります。(どのオプ +ションがそうなのかはヘルプで確認してください) |:setlocal|コマンドを使ってグ +ローバルなオプションやウィンドウにローカルなオプションを設定しようとすると、 +値は多くのバッファで変更されます。これはファイルタイププラグインがすべきこと +ではありません。 + +オプションがフラグリストや項目リストの場合、"+="や"-="を使って、既存の値を守 +る考えましょう。ユーザが既に値を変更している可能性がある点に注意しましょう。 +最初にデフォルト値に再設定しておき、それから変更するというのは良い方法です。 +例を示しましょう。 > + + :setlocal formatoptions& formatoptions+=ro + + +マップ +------ + +カレントバッファでのみ動くマップを作るには次のコマンドを使います。 > + + :map <buffer> + +これは上でも説明したように2段階に分けてマップを作る必要があります。ファイル +タイププラグインでの機能定義の方法を以下に示します。 > + + if !hasmapto('<Plug>JavaImport') + map <buffer> <unique> <LocalLeader>i <Plug>JavaImport + endif + noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc> + +|hasmapto()| はユーザが既に<Plub>JavaImportというマップを定義しているかどうか +を調べます。未定義ならファイルタイププラグインでデフォルトマップを定義します。 +これは|<LocalLeader>|の文字で始まります。ユーザは<LocalLeader>キーを自分で定義 +できます。これはマップの最初の1文字目となります。デフォルトではバックスラッ +シュキーになっています。 +"<unique>"キーワードを使うと、そのマップが既に定義されている時や既存のマップに +上書きする時にエラーメッセージを出します。 +|:noremap|はユーザが既に定義しているマップが防害するのを避けるのに使います。こ +のスクリプトで定義されているマップで<SID>で始まっているを再定義できるようにす +るために":noremap <script>"を使いたくなることもあるでしょう。 + +利用者にはファイルタイププラグインで定義しているマップを禁止できる仕組みを提供 +しなければなりません。以下に"mail"ファイルタイプ用のプラグインでそれをどのよう +に実現しているかの例を示します。 > + + " Add mappings, unless the user didn't want this. + if !exists("no_plugin_maps") && !exists("no_mail_maps") + " Quote text by inserting "> " + if !hasmapto('<Plug>MailQuote') + vmap <buffer> <LocalLeader>q <Plug>MailQuote + nmap <buffer> <LocalLeader>q <Plug>MailQuote + endif + vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR> + nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR> + endif + +ここでは2つのグローバル変数を使っています。 + no_plugin_maps 全ファイルタイププラグインでのマップを禁止 + no_mail_maps 特定のファイルタイププラグインでのマップを禁止 + + +ユーザ定義コマンド +------------------ + +特定のファイルタイプ用のユーザ定義コマンドを1つのバッファでのみ実行するには +|:command|実行時に"-buffer" パラメタを用います。例えば次のように使います。 > + + :command -buffer Make make %:r.s + + +変数 +---- + +ファイルタイププラグインは合致するファイルタイプの各バッファ毎に読み込みます。 +スクリプト内にローカルな(|s:var|形式の)変数は全バッファで共有されます。バッ +ファ内にローカルな(|b:var|形式の)変数を使えば、バッファ毎に独立した変数が使 +用できます。 + + +関数 +---- + +関数の定義は1回だけ行えば、それ以上は必要ありません。しかし上でも述べたよう +に、ファイルタイププラグインは該当するタイプのファイルが開く毎に読み込まれま +す。ですから関数が1度だけ定義されるようにこのような構造としておく必要があり +ます。 > + + :if !exists("*s:Func") + : function s:Func(arg) + : ... + : endfunction + :endif +< + +アンドゥ *undo_ftplugin* +-------- + +ユーザーが ":setfiletype xyz" としたとき、それ以前のファイルタイプの効果は無 +効になるべきです。ファイルタイププラグインの設定を無効にするために +b:undo_ftplugin 変数を設定してください。例: > + + let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<" + \ . "| unlet b:match_ignorecase b:match_words b:match_skip" + +":setlocal"を使いオプションの名前の後に"<"を使うとそのオプションをグローバル +の値でリセットします。オプションをリセットするにはこの方法が一番です。 + +これにはコマンド行の連結を可能にするために'cpoptions'から"C"フラグを取り除く +ことが必要です。上述の|use-cpo-save|を参照してください。 + +ファイル名 +---------- + +ファイルタイププラグインのファイル名にはファイルタイプ名が含まれていなければ +なりません|ftplugin-name|。次の三つのうちのどれかにしてください。 + + .../ftplugin/stuff.vim + .../ftplugin/stuff_foo.vim + .../ftplugin/stuff/bar.vim + +"stuff"はファイルタイプ名。"foo"と"bar"は責任者の名前です。 + + +まとめ *ftplugin-special* +------ + +ファイルタイププラグインの特徴をまとめましょう。 + +<LocalLeader> "maplocalleader"の値となります。これを使うとファイル + タイププラグインのマップの最初に入力する文字がこの値 + に置き換わります。 + +:map <buffer> バッファローカルなマップ定義 + +:noremap <script> このスクリプトで定義しているうち、<SID>で始まっている + マップだけを再定義する。 + +:setlocal バッファローカルなオプション値の設定を行う。 + +:command -buffer バッファローカルなユーザ定義コマンドを定義する。 + +exists("*s:Func") 関数が既に定義済かどうかをチェック + +全プラグインで使える特別な項目については|plugin-special|も併せてご覧ください。 + +============================================================================== +*41.12* コンパイラプラグインを書く *write-compiler-plugin* + +コンパイラプラグインでは特定のコンパイラを使うためのオプション設定ができます。 +この呼び出しは|:compiler|コマンドで行います。この中心となるのは'errorformat' +と'makeprg'オプションの設定です。 + +次のようにすれば簡単に実例を見ることができます。このコマンドでデフォルトのコン +パイラプラグインを全て見ることができるでしょう。 > + + :next $VIMRUNTIME/compiler/*.vim + +|:next|を使って次のファイルに移ってください。 + +これらのファイルのための特別な仕組みが2つあります。1つはデフォルトファイルの +ルールを変更したり追加したりできる仕組です。デフォルトファイルは次のようになっ +ています。 > + + :if exists("current_compiler") + : finish + :endif + :let current_compiler = "mine" + +コンパイラファイルを書いて、個人用のランタイムディレクトリ(例えばUnixであれ +ば ~/vim/compiler)に置く時に"current_compiler"という変数を設定しておいて、デ +フォルトファイルの設定をスキップさせることができます。 + +2つめの仕組みは、":set"を使う":compiler!"と":setlocal"を使う":compiler"です。 +Vimはこのために":CompilerSet"というユーザーコマンドを定義します。しかしふ +るいVimではそうではないので、あなたのプラグインで定義してください。次に例を示 +します。 > + + if exists(":CompilerSet") != 2 + command -nargs=* CompilerSet setlocal <args> + endif + CompilerSet errorformat& " use the dfault 'errorformat' + CompilerSet makeprg=nmake + +vimの配布用やステム全体のランタイムディレクトリに置くようなコンパイラプラグ +インを書くのであれば、上で書いたような仕組を作っておいてください。つまり、 +"current_compiler"がユーザプラグインで既に設定されていれば、何もしないように +するわけです。 + +デフォルトプラグインのルールを変更するようなコンパイラプラグインを書くのであ +れば、"current_compiler"をチェックしないようにしてください。このプラグインは +最後にロードされるように、つまり'runtimepath'のディレクトリリストの最後に置 +くようにすべきです。例えば、Unixでは~/.vim/after/compilerなどが使えるでしょ +う。 + +============================================================================== + +Next chapter: |usr_42.txt| 新しいメニューの追加 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_42.jax b/ja/usr_42.jax new file mode 100644 index 000000000..3dc4abbba --- /dev/null +++ b/ja/usr_42.jax @@ -0,0 +1,395 @@ +COMMENT: メニューの追加方法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_42.txt* For Vim version 6.3. Last change: 2002 Oct 08 + + VIM USER MANUAL - by Bram Moolenaar + + 新しいメニューを追加する + + +これまでの説明でvimにはとても柔軟性があることはご存知と思います。これには +GUIでのプルダウンメニューも含みます。特定のコマンド群に簡単にアクセスでき +るように独自のプルダウンメニューを定義することができます。但しこれはマウス大 +好きなユーザ専用です。 + +|42.1| はじめに +|42.2| メニューコマンド +|42.3| その他いろいろ +|42.4| ツールバーとポップアップメニュー + + Next chapter: |usr_43.txt| ファイルタイプを使う + Previous chapter: |usr_41.txt| vimスクリプトの作り方 +Table of contents: |usr_toc.txt| + +============================================================================== +*42.1* はじめに + +vimが使っているメニューは"$VIMRUNTIME/menu.vim"ファイルで定義しています。独 +自のメニューを作りたい場合は最初にそのファイルに目を通したくなることでしょう。 +メニュー項目を定義 するには":menu"コマンドを使います。このコマンドの基本的な +形式はこの通りです。 > + + :menu {menu-item} {keys} + +{menu-item}にはどのメニューにその項目を置くのかを示します。{menu-item}の典形 +的な例は"File.Save"です。これは"File"メニューの中の"Save"項目であることを示 +します。途中の"."は名前の区切りに使います。例を示しましょう。 > + + :menu File.Save :update<CR> + +":update"コマンドはファイルが変更されていればそれを保存するコマンドです。 +レベルを1つ増やすこともできます。"Edit.Settings.Shiftwidth"であれば"Edit" +メニューの中に"Settings"というサブメニューを作ります。項目名は"Shiftwidth" +です。さらに増やすこともできます。ですが、使い過ぎると目的の項目を使うまでに +少しばかりたくさんマウスを動かさなければなりません。 +":menu"コマンドは":map"コマンドにとてもよく似ています。パラメタの左側にはト +リガとなる項目をどのように指定するかを示し、右側は実行するコマンドの定義を行 +います。{keys}は文字列で、実際にそれを手で入力したのと同じように扱います。 +つまり、挿入モードでは{keys}が通常の文字列であれば、その文章がそのまま挿入さ +れるのです。 + + +キーボードアクセラレータ +------------------------ + +アンパサンド文字(&)はアクセラレータの識別子です。例えば、Alt+Fで"File"メニュ +ーを選んで、S で"Save"を選択できます。(たとえ'winaltkeys'オプションをoffにし +ていても、です!)ですから、{menu-item}は"&File.&Save"のようになります。アク +セラレータ文字はメニュー中で下線付きで表示されます。 +各メニューでそれぞれのキーが一度だけしか使われないようにしなければなりませ +ん。そうでないと2つのうちどちらが実際に実行されるかわからなくなります。これ +についてvimは何も警告を行いません。 + + +優先順位 +-------- + +実際の"File.Save"メニューの定義はこのようになっています。 > + + :menu 10.340 &File.&Save<Tab>:w :confirm w<CR> + +10.340という数値は優先順位番号といいます。これはエディタがメニュー項目を置く +場所を決めるのに使います。最初の数字(10)はメニューバー上の位置を示します。 +数字が小さいほど左側に配置し、大きいほど右側に配置します。 +標準メニューではこの値は次のとおりです。 + + 日本語環境 + 10 20 40 50 60 70 9999 + +-----------------------------------------------------------------+ + | ファイル 編集 ツール シンタックス バッファ ウィンドウ ヘルプ | + +-----------------------------------------------------------------+ + + 英語環境 + 10 20 40 50 60 70 9999 + +------------------------------------------------------------+ + | File Edit Tools Syntax Buffers Window Help | + +------------------------------------------------------------+ + +ヘルプメニューがとても大きな値になっていて、一番右端に表示されていることを覚 +えておいてください。 +2つ目の数字(340)はプルダウンメニューの中での項目の表示位置を示します。小さ +い数字ほど上の方に置かれ、大きい数字ほど下の方に置かれます。ファイルメニュー +での各項目の値は次のとおりです。 + + 日本語環境 英語環境 + +-------------------+ +-----------------+ + 10.310 |開く... | |Open... | + 10.320 |分割して開く... | |Split-Open... | + 10.325 |新規作成 | |New | + 10.330 |閉じる | |Close | + 10.335 |------------------ | |---------------- | + 10.340 |保存 | |Save | + 10.350 |名前を付けて保存...| |Save As... | + 10.400 |------------------ | |---------------- | + 10.410 |差分表示... | |Split Diff with | + 10.420 |パッチ結果を表示...| |Split Patched By | + 10.500 |------------------ | |---------------- | + 10.510 |印刷 | |Print | + 10.600 |------------------ | |---------------- | + 10.610 |保存して終了 | |Save-Exit | + 10.620 |終了 | |Exit | + +-------------------+ +-----------------+ + +数値がいくつか飛びになっている点に気づきましたか。これは本当にやりたければ、 +独自のメニュー項目を好みの場所に挿入できるようにするためです。(ですが、多く +の場合は標準メニューには手を加えるより、その項目用に独立したメニューを追加す +るのが良いでしょう) +サブメニューを作る時は優先順位番号に".数字"を追加します。つまり{menu-item}の +それぞれが、優先順位番号を持っているということです。 + + +特殊文字 +-------- + +この例では{menu-item}に"ファイル(&F).保存(&S)<Tab>:w"と指定しました。この、 +「{menu-item}は1つの単語でなければならない」というのは重要なポイントです。 +もし、"."や空白やTabを含みたい場合は、<>で囲む(<Space>とか<Tab>)か、バックス +ラッシュで無効化するかしなくてはなりません。 > + + :menu 10.305 &File.&Do\ It\.\.\. :exit<CR> + +上の列ではメニュー項目に"Do It..."という空白を含んだ名前を使っていて、実行す +るコマンドは":exit<CR>"です。 + +メニューの名前に<Tab>文字を使っていると、メニュー項目名を定義する部分と利用 +者へのヒント情報を区別できます。<Tab>の後にある部分はメニューで右寄せして表 +示します。"ファイル.保存"メニューでは、名前は"ファイル(&F).保存(&S)<Tab>:w" +を使っています。つまり"ファイル.保存"は名前で、":w"がヒントということです。 + + +セパレータ +---------- + +セパレータは関連した項目をグループに見せる時に使います。これは例えば"-sep-" +のように名前の最初と最後に"-"を付けることで定義できます。複数のセパレータを +使う場合、名前は違うものでなければなりません。ですが、名前それ自身には意味は +ありません。 +セパレータに定義されたコマンドは永遠に実行されることはありませんが、何か定義 +は必要ですので、":"でも使いましょう。例をあげます。 > + + :amenu 20.510 Edit.-sep3- : + +============================================================================== +*42.2* メニューコマンド + +特定のモードに入った時にのみ存在するようなメニュー項目を定義できます。これは +":map"コマンドと全く同じバリエーションがあります。 + + + :menu 通常モード、ビジュアルモード、 オペレータ保留モード + :nmenu 通常モード + :vmenu ビジュアルモード + :omenu オペレータ保留モード + :menu! 挿入モード、コマンドライン + :imenu 挿入モード + :cmenu コマンドライン + :amenu 全モード + +メニュー項目のコマンドがマップされるのを避けるには":noremenu"、":nnoremenu" +":anoremenu"などを使います。 + + +:amenuの使い方 +-------------- + +":amenu"コマンドを使う時はちょっと気をつけてください。ここで指定した{keys}は +通常モードで実行するものとみなされます。こういったメニューコマンドをビジュア +ルモードや挿入モードの時に行うには、まず通常モードに戻らなければなりません。 +":amenu"はCTRL-CかCTRL-Oを挿入してくれます。例えば次のようなコマンドを使うこ +とを考えます。 +> + :amenu 90.100 Mine.Find\ Word * + +このコマンドを実行すると、こうなります。 + + 通常モード: * + ビジュアルモード: CTRL-C * + オペレータ保留モード: CTRL-C * + 挿入モード: CTRL-O * + コマンド行モード: CTRL-C * + +コマンド行モードではCTRL-Cは入力されたコマンドを捨てます。ビジュアルモードと +オペレータ保留モードではそのモードから抜けます。挿入モードでのCTRL-Oは指定の +コマンドを実行した後、挿入モードに戻ります。 +ただ、CTRL-Oは1つのコマンドしか指定できません。2つ以上のコマンドを指定する +必要がある場合は、それを関数化し、その関数を呼びます。例をあげましょう。 > + + :amenu Mine.Next\ File :call <SID>NextFile()<CR> + :function <SID>NextFile() + : next + : 1/^Code + :endfunction + +このメニューエントリは":next"でパラメタリスト中の次のファイルに移動し"Code" +で始まる行を検索します。 +関数名の前にある<SID>はスクリプトIDです。これは関数をスクリプトローカルな +関数とするのに使います。他のスクリプトファイルに定義されている関数名との重複 +があっても問題となりません。|<SID>|をご覧ください。 + + +非表示メニュー +------------------ + +メニューは{keys}があたかも入力されたかのように実行しまっ。例えば、":"コマン +ドであれば、実際にコマンド行にそのコマンドが表示されるのが見えるということで +す。それが長いコマンドであれば、Enterキーの入力を促すこともありえます。 こん +なのはうっとおしい限りです。 +これはメニューを非表示にすることで避けられます。<silent>パラメタを指定しま +す。例えば上で示したサンプルではNextFile()関数を呼び出しています。これを使う +と、コマンド行にこのような表示が出ます。 + + :call <SNR>34_NextFile() ~ + +このようにコマンド行に出力するのを避けるには最初のパラメタとして"<silent>"を +指定します。 > + + :amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR> + +"<silent>"は不必要に使わないでください。これはコマンドの短縮には不要です。他 +の人のためにメニューを作るのであれば、どんなコマンドを実行しているのか見れる +ようにしてください。そうすれば、それを使っている人がどんなコマンドを入力すれ +ばマウスを使わなくても良いかのヒントを出すことになります。 + + +メニューの一覧 +-------------- + +{keys}なしで"menu"コマンドを使うと、既に定義済のメニュー一覧を表示します。 +また、{menu-item}やその一部を指定して、特定のメニューの一覧を表示することも +できます。例をあげましょう。 > + + :amenu + +これは全てのメニューを表示します。とっても長いリストになります。ですから、メ +ニュー名を指定して短いリストにした方が良いでしょう。 > + + :amenu Edit <---- 英語環境の場合 + :amenu 編集(E) <----日本語環境の場合 + +これは全モード用の"Edit"メニュー項目のリストを表示します。例えば挿入モードで +の特定のメニューだけを表示するにはこうします。 > + + :imenu Edit.Undo <---- 英語環境の場合 + :imenu 編集(E).取り消す(U) <----日本語環境の場合 + +メニュー名を指定する時は完全な名前を入力するように気をつけてください。大文字 +小文字も区別します。ただし、アクセラレータ指定の'&'だけは省略できます。<Tab> +を押すとその後に続く文字も同じように省略できます。 + + +メニューの削除 +-------------- + +メニューを削除する時も一覧を出す時と似たコマンドを使います。違うのはコマンド +名が"menu"ではなく、"unmenu"になる点です。ですから、":menu"は":unmenu"に、 +":nmenu"は":nunmenu"にといった具合です。挿入モード用の"Tools.Make"項目を削除 +するのなら、このようにします。 > + + :iunmenu Tools.Make + :iunmenu ツール(T).メイク(M) <----日本語環境の場合 + +メニュー名を指定すると、その中の項目も含めて全てを削除できます。 > + + :aunmenu Syntax + :aunmenu シンタックス(S) <----日本語環境の場合 + +これはシンタックスのメニューとその中の全項目を削除します。 + +============================================================================== +*42.3* その他いろいろ + +'guioptions'のフラグを使うと、メニューの見た目を変えることができます。デフォ +ルト値では以下のいずれも含んでいます。各オプションは次のような指定ではずすこ +とができます。 > + + :set guioptions-=m +< + m これをはずすとメニューバーは表示しなくなります。 + + M これをはずすとデフォルトメニューをロードしなくなりま + す。 + + g これをはずすと非アクティブなメニュー項目をはグレイに + ならずに完全に削除されます。(どんなシステムでも動く + わけではありません) + + t これをはずすと、ティアオフ機能が使えなくなります。 + +メニューの一番上にある点線はセパレータではありません。この項目を選択すると、 +メニューは"ティアオフ(切り離し)"、つまり別ウィンドウでの表示となります。 +これをティアオフメニューと呼びます。同じメニュー項目を頻繁に使う場合に便利で +す。 + +メニュー項目を他の言語に変更する方法は|:menutrans|をご覧ください。 + +メニュー項目の選択を行うにはマウスを使う必要がありますから、ファイルの選択に +は":browse"コマンドを使うのは良い方法です。また":confirm"を使うとエラーメッ +セージの表示の代わりにダイアログが出ます。例えば、現在のバッファに変更を加え +ているのであれば、次の2つを組み合せることができます。 > + + :amenu File.Open :browse confirm edit<CR> + +":browse"コマンドは編集するファイルを選択するためにファイルブラウザを表示し +ます。":confirm"は現在のバッファに変更が加わっていれば、ダイアログをポップ +アップし、保存するか、保存しないか、取り止めにするかを選べます。もっと複雑な +項目では、confirm()関数とinputdialog()関数が使えます。デフォルトメニューには +いくつか例となるものがあります。 + +============================================================================== +*42.4* ツールバーとポップアップメニュー + +メニューには特殊なものが2つあります。ToolBar(ツールバー)とPopUp(ポップアッ +プ)です。このどちらかの名前で始まっている項目は普通のメニューバーには表示さ +れません。 + + +ツールバー +---------- + +ツールバーは'guioptions'オプションに"T"フラグが含まれている場合のみ表示され +まう。 +ツールバーはコマンドを文字列ではなくアイコンを使って示します。例えば、 +"ToolBar.New"という{menu-item}はツールバー上に新しいアイコンを作成します。 +vimには28個のアイコンが登録済です。その一覧は|builtin-tools|にあります。 +そのほとんどをデフォルトツールバーでは使っています。各アイコンがどんな働きを +するかを(デフォルトのメニューのセットアップ完了後に)再定義できます。 +ツールバー用に他のビットマップを追加することもできます。またビットマップ付き +の新しいツールバー項目も定義できます。例えば、新しいツールバー項目の定義は以 +下のように行います。 > + + :tmenu ToolBar.Compile Compile the current file + :amenu ToolBar.Compile :!cc % -o %:r<CR> + +ここでアイコンを作成する必要があります。MS-WIndowsでは"Compile.bmp"といった +bitmap形式でなければなりません。Unixでは"Compile.xpm"という名前のXPM形式を使 +います。ビットマップのサイズは18x18ドットでなくてはなりません。MS-Windowsで +は、他のサイズでも構いませんが、かなり汚なく見えるでしょう。 +ビットマップは'runtimepath'の中のどれかにある"bitmaps"ディレクトリにビット +マップを置きましょう。例えば、Unixでは"~/.vim/bitmaps/Compile.xpm"などです。 + +ツールバーの各項目にはツールチップ(ヒント情報)を定義できます。ツールチップは +そのツールバー項目が実行する内容を説明するための短かいテキストです。例えば +"ファイルを開く"といったものです。これはマウスポインタがその項目の上で暫くの +間動かなかった時に表示されます。 + + 大文字/小文字に注意してください。"Toolbar"と"toolbar"は、どちらも + "ToolBar"ではありません。 + +ツールチップを削除するには|:tunmenu|コマンドを使います。 + +'toolbar'オプションでは、ビットマップの代わりに文字列を表示したり、文字列と +ビットマップの両方を表示したりを指定できます。多くの人はビットマップだけを +使っています。文字列を使うと多少表示場所を食うからです。 + + +ポップアップメニュー +-------------------- + +ポップアップメニューはマウスポインタのある場所に表示されるメニューです。 +MS-Windowsではマウスの右ボタンクリックで表示できます。その中の項目を選択するの +はマウスの左ボタンです。Unixではマウスの右ボタンを押したままにします。 +ポップアップメニューは'mousemodal'が"popup"か"popup_setpos"のどちらかに設定さ +れている場合にだけ表示されます。"popup_setpos"の場合、マウスポインタの場所に +カーソルを動かすという点が両者の違いです。選択範囲の中でクリックした場合は選択 +範囲は変更しません。ですが、選択範囲がある時にその範囲外をクリックした場合は選 +択を解除します。 +各モード毎に別々のポップアップメニューがあります。ですから通常のメニューのよう +に選択できないグレイ状態の項目というのはあり得ません。 + +What is the meaning of life, the universe and everything? *42* +Douglas Adams, the only person who knew what this question really was about is +now dead, unfortunately. So now you might wonder what the meaning of death +is... + +訳注: 恐らく今は亡きダグラス・アダムスの著書 "The Hitchhiker's Guide to the +Galaxy" (銀河ヒッチハイク・ガイド)からの引用。なぜこの場所にそれがあるか?。そ +んなの知らないよ orz Bramに聞いてよ orz + + +============================================================================== + +Next chapter: |usr_43.txt| ファイルタイプを使う + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_43.jax b/ja/usr_43.jax new file mode 100644 index 000000000..83ea118ec --- /dev/null +++ b/ja/usr_43.jax @@ -0,0 +1,179 @@ +COMMENT: ファイル形式の使い方 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_43.txt* For Vim version 6.3. Last change: 2002 Jul 14 + + VIM USER MANUAL - by Bram Moolenaar + + ファイルタイプを使う + + +あるタイプのファイル、例えばCソースだとかシェルスクリプトなどを編集している +時には、同じようなオプション設定やマップをよく使います。これを毎回手作業で設 +定するのはうんざりですね。この章ではこれをどうやって自動化するかの説明をしま +しょう。 + +|43.1| ファイルタイプ用のプラグイン +|43.2| ファイルタイプの追加 + + Next chapter: |usr_44.txt| 独自のシンタックスハイライト + Previous chapter: |usr_42.txt| 新しいメニューの追加 +Table of contents: |usr_toc.txt| + +============================================================================== +*43.1* ファイルタイプ用のプラグイン *filetype-plugin* + +ファイルタイププラグインを使い始める方法については既に|add-filetype-plugin| +で説明しました。とはいえ、デフォルト設定は最低限の設定に絞り込んでいますか +ら、おそらく満足はできないでしょう。Cのファイルなら'softtabstop'オプション +を4にしたいでしょうし、3行コメントを挿入するようなマップも欲しいでしょう。 +これは実は次の2ステップだけでできるのです。 + + *your-runtime-dir* +1. 自分用のruntimeディレクトリを作ります。Unixなら普通は"~/.vim"とします。 + そのディレクトリの中に"ftplugin"ディレクトリを作ります。 > + + mkdir ~/.vim + mkdir ~/.vim/ftplugin +< + Unix以外のシステムでは、'runtimepath'オプションを見てvimが"ftplugin"ディ + レクトリを探す場所を確認してください。 > + + set runtimepath + +< 普通は最初のディレクトリ名(最初のカンマ(,)の左)を使います。デフォルト値が好 + みでなければ、|vimrc|ファイルで'runtimepath'オプションにディレクトリ名を後 + ろに追加した方が良いかもしれません。 + +2. 次の内容のファイル"~/.vim/ftplugin/c.vim"を作ります。 > + + setlocal softtabstop=4 + noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> + +これでCのファイルを編集してみましょう。まず'softtabstop'オプションが4に設 +定されているのがわかりますね。ですが、他の種類のファイルを開くとデフォルトの +0にリセットされます。これは":setlocal"コマンドを使っているためです。これは +そのバッファのみに対して'softtabstop'オプションを設定します。他のファイルに +切り換えた瞬間にそのバッファ用の値に再設定します。新しいバッファの場合はデ +フォルト値か最後に設定した":set"コマンドの値となります。 + +同じ様に"\c"マップも他のバッファを編集しようとした時になくなります。 +":map <buffer>"コマンドは現在のバッファにローカルなマップを作ります。この動 +きは":map!"や":vmap"などでも同じです。マッピング中の|<LocalLeader>|は +"maplocalleader"の値に置換します。 + +ファイルタイププラグインの例はこのディレクトリで探すことができます。 > + + $VIMRUNTIME/ftplugin/ + +ファイルタイププラグインを作成する方法の詳細は|write-plugin|をご覧ください。 + +============================================================================== +*43.2* ファイルタイプの追加 + +vimが認識してくれないタイプのファイルを使っている場合に認識させる方法を述べ +ます。まず自分用のランタイムディレクトリを用意します。これについては上述の +|your-rumtime-dir|をご覧ください。 + +次にそのファイルタイプ用の自動コマンドが入っている"filetype.vim"というファイ +ルを作ります。(自動コマンドについては|40.3|で説明しています) +例を示します。 > + + augroup filetypedetect + au BufNewFile,BufRead *.xyz setf xyz + augroup END + +ここでは".xyz"で終わっているファイルを全て"xyz"ファイルタイプと認識させます。 +":augroup"コマンドでこの自動コマンドを"filetypedetect"グループに置きます。こ +れは":filetype off"を実行した時にファイルタイプ検出用の自動コマンドを全て削 +除することを認めます。"self"マンドは'filetype'オプションが設定済でない限り、 +その引数を設定します。これは'filetype'が2重に設定されないようにしているとい +うことです。 + +ファイル名に合致するパターンにはいくつもの違ったパターンを使えます。ディレク +トリ名を含んでいても構いません。|autocmd-patterns|をご覧ください。例えば、 +"/usr/share/scripts/"にあるファイルが全部"ruby"のファイルであることはわかっ +ているが、ファイル名の拡張子が予測できない場合、上のサンプルに以下の記述を追 +加します。 > + + augroup filetypedetect + au BufNewFile,BufRead *.xyz setf xyz + au BufNewFile,BufRead /usr/share/scripts/* setf ruby + augroup END + +ただ、これだと"/usr/share/scripts/README.txt"を編集しようとした時は、これは +rubyのファイルではありません。"*"で終わるようなパターンでは、大量のファイル +に一致してしまう危険があります。これを避けるには、'runtimepath'の最後に指定 +したディレクトリに"filetype.vim"を置きます。例えばUnixでは、このように指定が +できます。 > + ~/.vim/after/filetype.vim +次にテキストファイルの検出を"~/.vim/filetype.vim"で行います。 > + + augroup filetypedetect + au BufNewFile,BufRead *.txt setf text + augroup END + +これは'runtimepath'の最初で見つけます。そして最後に見つかったファイル、 +"~/.vim/after/filetype.vim"の中で使います。 > + + augroup filetypedetect + au BufNewFile,BufRead /usr/share/scripts/* setf ruby + augroup END + +これだと、'runtimepath'の各ディレクトリにある"filetype.vim"ファイルをどのよ +うに探すのでしょう?まず、~/.vim/filetype.vimを見つけます。*.txtファイルを探 +す自動コマンドがここで定義してあります。次にvimは"filetype.vim"を$VIMRUNTIME +(これは'runtimepath'の中程にあります)から見つけます。最後に +"~/.vim/after/filetype.vim"が見つかり、/usr/share/scriptsにあるrubyファイル +を検出する自動コマンドを追加します。 +/usr/share/scripts/README.txtを編集する時は、定義された順で自動コマンドを +チェックします。"*.txt"のパターンが合致しますから、つまり"setf text"を実行し +ファイルタイプは"text"になります。rubyのパターンもうまく合致しますから、 +"setf ruby" を実行します。ただし、'filetype'は既に"text"に設定されているため +ここでは何も起こりません。 +ファイル"/usr/share/scripts/foobar"を編集する時にも同じ自動コマンドで確認を +行います。この場合は"ruby"に合致しますので"self ruby"を実行し、'filetype'は +rubyに設定されます。 + + +内容による判断 +-------------- + +ファイル名からはファイル種別を判断できなくても、内容で判断できる場合がありま +す。例えば、多くのスクリプト言語ではこのような行が最初にあります。 + + #!/bin/xyz ~ + +このスクリプトを認識するためにあなたのランタイムディレクトリ("filetype.vim" +と同じディレクトリ)に"scripts.vim"を作りましょう。この中身はこのようになりま +す。 > + + if did_filetype() + finish + endif + if getline(1) =~ '^#!.*[/\\]xyz\>' + setf xyz + endif + +最初にdid_filetype()を使って、既にファイル名からファイルタイプを検出済の場合 +にはファイル内容によるチェックを実行しないようにします。これは不必要な"self" +を実行するために無意味な時間を費やさないようにするためです。 +"scripts.vim"というファイルはデフォルトで"filetype.vim"ファイルの自動コマン +ドで読み込みます。ですから、チェックの手順はこのようになります。 + + 1. 'runtimepath'中の$VIMRUNTIMEの前にある"filetype.vim" + 2. "$VIMRUNTIME/filetype.vim"の最初の部分 + 3. 'runtimepath'中の全ての"scripts.vim"ファイル群 + 4. "$VIMRUNTIME/filetype.vim"の残りの部分 + 5. 'runtimepath'中の$VIMRUNTIMEの後にある"filetype.vim" + +もしこれで満足できないのであれば、全てのファイルとスクリプトを読み込むような +自動コマンドを追加するか、ファイルの内容をチェックするような関数を実行させて +ください。 + +============================================================================== + +Next chapter: |usr_44.txt| シンタックス定義の自作 + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_44.jax b/ja/usr_44.jax new file mode 100644 index 000000000..cdef6e42d --- /dev/null +++ b/ja/usr_44.jax @@ -0,0 +1,760 @@ +COMMENT: 独自の構文強調(テキストの色つけ)を定義する +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_44.txt* For Vim version 6.3. Last change: 2002 Oct 10 + + VIM USER MANUAL - by Bram Moolenaar + + 文法定義の自作 + + +vimでは200ものファイルタイプに対応した文法定義を用意しています。もし編集しよ +うとしているファイル用の定義が見つからない場合は本章を読んで、そのタイプの +ファイルをハイライト表示とする方法を理解してください。リファレンスマニュアル +の|:syn-define|も併せてご覧ください。 + +|44.1| 基本的な文法(syntax)コマンド +|44.2| キーワード +|44.3| 照合(matching) +|44.4| 範囲 +|44.5| 多重化(入れ子になった)項目 +|44.6| グループ指定?(Following groups) +|44.7| その他のパラメタ +|44.8| クラスタ +|44.9| 他の文法定義ファイルを取り込む +|44.10| 同期 +|44.11| 文法のインストール +|44.12| 可搬性の高い文法の配置 + + Next chapter: |usr_45.txt| 言語を選ぶ + Previous chapter: |usr_43.txt| ファイルタイプを使う +Table of contents: |usr_toc.txt| + +============================================================================== +*44.1* 基本的な文法(syntax)コマンド + +既存の文法ファイルを使えば、多くの時間を節約することができます。ですからまず +$VIMRUNTIME/syntaxディレクトリに目的の言語に似た文法ファイルファイルがないか +探してください。ここにあるファイルを見れば、文法ファイルの基本的なレイアウト +も解るでしょう。内容を理解するには以下を読破してください。 + +基本的なパラメタから始めましょう。新しい文法定義をする前に現状の全ての定義を +クリアする必要があります。 > + + :syntax clear + +これは最終的な文法ファイルでは不要ですが、いろいろ試す時には、とても便利な方 +法です。 + +この章の説明はできるだけ単純化しています。他の人に使ってもらうような文法定義 +を書くのであれば、詳細を理解できるまで全てを最後まで読んでください。 + + +定義済の項目の一覧 +------------------ + +現在定義されている文法項目を確認するにはこのコマンドを使います。 > + + :syntax + +これは実際にどの項目が定義されているかを確認する時に使います。新しい文法ファ +イルを作っている時には極めて重宝します。また各項目で使っている色も表示します +ので、それが希望通りかどうかを調べる時の助けとなります。 +ある特定の文法グループで使っている項目のリストを出すにはこうします。 > + + :syntax list {group-name} + +これはリストクラスタ(|44.8|で説明します)でも使うことができます。その場合は名 +前に"@"を含めます。 + + +MATCHING CASE +大文字小文字の識別 +------------------ + +例えばPascalのように大文字/小文字を区別しない言語があります。また逆にCのよ +うに区別する言語もあります。その言語のタイプによって次のいずれかを指定する必 +要があります。 > + :syntax case match (大文字/小文字を区別する) + :syntax case ignore (大文字/小文字を区別しない) + +"match"パラメタでは文法の各要素の大文字/小文字を区別します。ですから、"int" +と"Int"や"INT"は違ったものです。逆に"ignore"を使った場合は、"Procedure"と +"PROCEDURE"と"procedure"は同じものとして扱います。 +":syntax case"コマンドは文法ファイルのどこに現れても構いません。現わ +れた以降の文法定義がその対象となります。ほとんどの場合は、":syntax case"コ +マンドは文法ファイルの1個所だけで定義します。ですが、大文字/小文字を識別す +る部分と識別しない部分を持つような特殊な言語の場合は":syntax case"コマンドを +ファイルのあちこちにばらまくこともできるのです。 + +============================================================================== +*44.2* キーワード + +文法定義で最も基本的な要素はキーワードです。キーワードの定義は次のような形で +行います。 > + + :syntax keyword {group} {keyword} ... + +{group}は文法グループの名前です。":highlight"コマンドを使えば、{group}の色を +指定できます。{keyword}パラメタは実際のキーワード文字列です。いくつか例を示し +ましょう。 > + + :syntax keyword xType int long char + :syntax keyword xStatement if then else endif + +この例ではグループ名に"xType"と"xStatement"を使っています。解り易くするため +に、各グループ名の先頭には定義しようとしている言語のファイルタイプを付けま +す。この例ではX言語(面白い名前というのではなく例題(eXample)用言語)の文法定 +義という意味です。ですから"csh"スクリプト用の文法ファイルは"cshType"といった +名前になるでしょう。つまり'filetype'の値と同じものを先頭に付けるのです。 +この例題コマンドでは、"int","long","char"をある方法でハイライト表示し、"if" +"then","else","endif" は別の方法でハイライト表示します。 +次にこの"x"グループ名をvimの標準名と関連付ける必要があります。これには次のコ +マンドを使います。 > + + :highlight link xType Type + :highlight link xStatement Statement + +これは"xType"の時に"Type"でハイライト表示し、"xStatement"の時に"Statement"で +ハイライト表示することを示します。"Type"や"Statement"はvimの標準名です。詳し +くは|group-name|をご覧ください。 + + +特殊なキーワード +---------------- + +キーワードで用いう文字は'iskeyword'オプションで指定しなければなりません。そ +れ以外の文字を使っても、決して単語に合致することはありません。vimはこの点の +警告を行いません。 +例題のX言語では'-'の文字をキーワードとして使います。このようにして行います。 +> + :setlocal iskeyword+=- + :syntax keyword xStatement when-not + +":setlocal"コマンドはカレントバッファの'iskeyword'だけを変更します。なお、こ +れを使うと、"w"や"*"のようなコマンドの動作も変わってしまいます。こうなるのが +嫌ならば、キーワードを定義せずに照合(次の節で説明します)を使います。 + +X言語では短縮形が使えます。例えば、"next"は"n"や"ne"や"nex"に省略できます。 +このコマンドを使ってそれを定義できます。 +> + :syntax keyword xStatement n[ext] + +キーワードは常に単語全体に合致するので、"nextone"には合致しません。 + +============================================================================== +*44.3* 照合(match) + +もう少し複雑なものを定義してみましょう。普通の識別子に合致するようにしたいと +します。これを行うには文法項目の照合を定義します。次の例は全て小文字だけの単 +語に合致します。 > + + :syntax match xIdentifier /\<\l\+\>/ +< + Note: + キーワードは他の文法項目より優先されます。つまり、"if"や"then"といっ + たキーワード(上で述べた":syntax keyword"コマンドで定義したもの)は例 + えxIdentifierのパターンにも合致していても、キーワードとして扱います。 + +最後の部分は検索用と同じようなパターンです。パターンの前後には"/"と"/"で囲み +ます(":substitute"コマンドと同じやり方です)。他の文字、例えば"+"や"'"を使っ +ても構いません。 + +ではコメント用の照合を定義してみましょう。X言語では"#"の文字から行末までが +全てコメントとなります。 > + + :syntax match xComment /#.*/ + +検索パターンは全て使えるので、照合を使えばすごく複雑なものでもハイライト表示 +にできます。検索パターンについては|pattern|をご覧ください。 + +============================================================================== +*44.4* 範囲 + +このX言語では、ダブルクオート(")で囲った部分が文字列となります。 +文字列をハイライト表示するには範囲を定義します。範囲には開始(ダブルクオート) +と終了(これもダブルクオート)が必要です。その定義はこのようになります。 > + + :syntax region xString start=/"/ end=/"/ + +"start"指令と"end"指令で、範囲の開始位置と終了位置を探すためのパターンを定義 +します。でも次のような文字列があったらどうなるでしょう? + + "A string with a double quote (\") in it" ~ + +これは問題となります。文字列の途中にあるダブルクオートが文字列の終了位置に +なってしまいます。文字列中にあるダブルクオートをスキップするように指定する必 +要があります。これには"skip"指令を使います。 > + + :syntax region xString start=/"/ skip=/\\"/ end=/"/ + +バックスラッシュを2つ重ねることで1つのバックスラッシュの意味になります。こ +れはバックスラッシュという文字が検索パターンの中でも特殊な文字だからです。 + +照合と範囲はどう使い分ければよいのでしょうか?大きな違いは照合項目は1つのパ +ターン全体が合致しなければなりません。範囲は"start"のパターンに合致した場所 +から始まりますが、"end"のパターンがあるかどうかは関係ありません。つまり、項 +目が必ず"end"パターンに合致してほしい場合には範囲は使えません。逆に範囲の方 +が定義は簡単です。 +また、次の節でも述べるように、多重化(入れ子に)するのも簡単です。 + +============================================================================== +*44.5* 多重化(入れ子になった)項目 + +次のようなコマンドがあるとします。 + + %Get input TODO: Skip white space ~ + +行全体はコメントなので青く表示するのですが、中央の"TODO"はコメントの中でも黄 +色く目立つようにしたいとします。これを行うには次のような文法グループを定義し +ます。 > + + :syntax keyword xTodo TODO contained + :syntax match xComment /%.*/ contains=xTodo + +最初の行にある"contained"パラメタは、このキーワードが他の文法項目の中でのみ +有効となることを示します。次の行には"contains=xTodo"があります。これはxTodo +の文法項目がこの項目の中で使われることを示します。この結果、コメント行全体は +"xComment"の条件に合うため青い表示となり、その中にあるTODOという単語はxTodo +の指定に合致するので黄色の表示となります。(このためにxTodo用のハイライトを設 +定します) + + +再帰的な多重化 +-------------- + +X言語では波カッコ("{"と"}")でコードブロックを定義します。コードブロックの中 +にはさらにコードブロックがあっても構いません。この定義は次のようにします。 > + + :syntax region xBlock start=/{/ end=/}/ contains=xBlock + +ですから、次のようなコードがあるとすると、 + + while i < b { ~ + if a { ~ + b = c; ~ + } ~ + } ~ + +まず1行目の"{"でxBlockが開始となります。2行目には別の"{"があります。これは +xBlock項目の中にあり、その定義では自分自身を含んでいるため、2つ目のxBlockが +ここから始まります。つまり"b = c;"の行は第2レベルのxBlockの範囲に入ります。 +次の行にはパターンの末尾を示す"}"があります。これは2つ目のxBlockを閉じます。 +というのは2つ目の範囲には"}"が含まれていますから、最初のxBlockの範囲からは +隠されます。最後の行の"}"は最初のxBlockの範囲を閉じることになります。 + + +行末情報の保持 +-------------- + +次の2つの文法項目を見てみましょう。 > + + :syntax region xComment start=/%/ end=/$/ contained + :syntax region xPreProc start=/#/ end=/$/ contains=xComment + +"%"から行末までを全てコメントと定義します。また、"#"から行末までを全てプリプ +ロセッサ指令(xPreProc)と定義します。プリプロセッサの行にもコメントを置けます +から、プリプロセッサの定義には"contains=xComment"というパラメタを付けてあり +ます。では次のようなコードでは何が起こるのでしょう。 + + #define X = Y % Comment text ~ + int foo = 1; ~ + +この場合、2行目の内容までがxPreProcとして表示されてしまいます。プリプロセッ +サ指令は行末で終わります。上述のコマンドには"end=/$/"とちゃんと書いてありま +す。じゃあ何が悪いのでしょう? +問題はxCommentの"contained"の部分にあります。コメントは"%"で始まって、行末で +終わります。xCommentが閉じた後もxPreProcの指定は生きています。ですから、行末 +の続きを見て次の行もxPreProcの範囲に含んでしまうのです。 +内包した文法項目が必要となる行末情報を隠さないようにするには"keepend"パラメ +タを使います。これで、行末を2回チェックできるようになります。 > + + :syntax region xComment start=/%/ end=/$/ contained + :syntax region xPreProc start=/#/ end=/$/ contains=xComment keepend + + +CONTAINING MANY ITEMS +多くの項目の内包 +---------------- + +"contains="のパラメタには全項目の指定もできます。例えば、次のようにします。 > + + :syntax region xList start=/\[/ end=/\]/ contains=ALL + +上の例では全ての文法項目を含むことができます。これには同じ位置である場合を除 +いて自分自身も含みます。(同じ位置を除外するのは無限ループを避けるためです) +一部のグループを除外するような指定もできます。つまり一覧にある項目以外を全部 +含むというパターンです。 +> + :syntax region xList start=/\[/ end=/\]/ contains=ALLBUT,xString + +"TOP"を指定すると、"contained"パラメタを持たない全項目が対象となります。 +"CONTAINED"は逆に"contained"パラメタ付きの項目だけを対象とします。 +詳しくは|:syn-contains|をご覧ください。 + +============================================================================== +*44.6* グループ指定?(Following groups) + +X言語は次の形式でステートメントを記述します。 + + if (condition) then ~ + +この3つの項目をそれぞれ違った3色でハイライト表示したいとします。ですが、 +"(condition)"と"then"は違ったハイライト表示をするべき場所に現れるかもしれま +せん。これには次のようにします。 > + + :syntax match xIf /if/ nextgroup=xIfCondition skipwhite + :syntax match xIfCondition /([^)]*)/ contained nextgroup=xThen skipwhite + :syntax match xThen /then/ contained + +"nextgroup"パラメタで次にどの項目が来るかを指定します。これは必須ではありませ +ん。指定の項目がどれも見つからなかった場合は何も起こりません。例えば、次の場 +合を見てみましょう。 + + if not (condition) then ~ + +"if"はxIfの条件に合致します。ですが、"not"はnextgroupで指定のxIfConditionに +合致していません。結局、"if"だけがハイライト表示となります。 + +"skipwhite"パラメタを指定すると項目中に空白類(空白文字とTAB)が現れることを示 +します。同じようなパラメタに"skipnl"(項目中に改行がある)と"skipempty"(空行が +あってもよい)があります。"skipnl"では空行をスキップしない点にご注意ください。 +改行の後には何らかの文字が必要なのです。 + +============================================================================== +*44.7* その他のパラメタ + +MATCHGROUP +---------- + +範囲を指定した場合、その全体が指定にしたがった色で表示します。例えばxInside +というグループでカッコ( )で囲まれた文字列をハイライトにするには、このような +コマンドを使います。 > + + :syntax region xInside start=/(/ end=/)/ + +では、このカッコだけを違った表示にしたい場合はどうすればよいでしょう。もちろ +ん複雑怪奇な範囲コマンドを駆使してもできますが、"matchgroup"というパラメタを +使う方法があります。これは範囲の"start"と"end"部分を違ったグループ(次の例の +場合ならxParenグループ)の指定で表示することができるものです。 > + + :syntax region xInside matchgroup=xParen start=/(/ end=/)/ + +"matchgroup"パラメタは"start"や"end"で合致する部分をその後ろでの指定に従って +表示します。上の例では"start"部も"end"部もxParenの指定で表示します。"end"の +方をxParenEndで表示するにはこうのようにします。 > + + :syntax region xInside matchgroup=xParen start=/(/ + \ matchgroup=xParenEnd end=/)/ + +"matchgroup"を使った場合、入れ子になった項目では範囲の"start"と"end"に合致 +しなくなるという副作用があります。次の"transparent"の例ではこれを利用してい +ます。 + + +透過(transparent) +----------------- + +Cのソースファイルでは"while"の後の( )は"for"の後の( )と違った表示にしたいかも +しれません。どちらの場合でも、( )項目自体は同じ方法で定義すべきですので、いず +れにしても入れ子の項目と捕らえることができます。また、呼応する")"があれば、確 +実にハイライト表示を停止しなければなりません。以下はこれを実現する一つの方法で +す。 > + + :syntax region cWhile matchgroup=cWhile start=/while\s*(/ end=/)/ + \ contains=cCondNest + :syntax region cFor matchgroup=cFor start=/for\s*(/ end=/)/ + \ contains=cCondNest + :syntax region cCondNest start=/(/ end=/)/ contained transparent + +これならcWhileとcForには違ったハイライト属性を与えることができます。cCondNest +項目はどちらの定義にも現れますが、cCondNestのハイライト属性については、それを +含んだ項目(cWhile,cFor)のハイライト属性によって上書きされます。"transparent"パ +ラメタがこの動作を実現しているのです。 +"matchgroup"パラメタに自分自身を指定している点に注目してください。どうしてこの +ようなことをするのでしょう。それは "matchgroup" によりマッチグループに指定され +た項目は、すでにマッチしたテキストの中からは検索されないという副作用があるから +です。これによりcCondNestグループが、whileやforの後にあるすべての"("にマッチし +てしまうのを避けることができます。コレがない場合、対応する ")" まで全部のテキ +ストが領域として検出されてしまいます。なのでこうすることで、cCondNestはstart項 +目のパターンに合致した直後後の部分にだけ、つまり最初の"("の後にだけ合致するの +です。 + + +オフセット +---------- + +"if"の後にある"("と")"の間の文字列を範囲として定義したいが、"if"や"("、")"自 +体を含みたくないとします。これにはパターンにオフセットを使うことで指定できま +す。例をあげましょう。 > + + :syntax region xCond start=/if\s*(/ms=e+1 end=/)/me=s-1 + +"start"パターンには"ms=e+1"というオフセットを指定しています。"ms"というのは +Match Startの意味で、これは合致の開始位置からのオフセット量を定義しています。 +通常はパターンの開始位置です。"e+1"というのは合致したパターンの末尾から、さ +らに1文字進んだ個所を示します。 +"end"パターンのオフセットは"me=s-1"です。"me"はMatch Endの意味です。"s-1"は +合致したパターンの開始位置から1文字手前の意味となります。この結果を次の例に +示します。 + + if (foo == bar) ~ + +"foo == bar"の部分だけがxCondとしてハイライト表示となります。 + +オフセットの詳細については|:syn-pattern-offset|をご覧ください。 + + +単一行指定 +---------- + +"oneline"パラメタはその範囲指定が複数行に跨らないことを示します。例を示しま +しょう。 > + + :syntax region xIfThen start=/if/ end=/then/ oneline + +これは"if"で始まって"then"で終わる範囲の定義です。ただし、"if"と同じ行の後に +"then"が現われない場合、上の定義には合致しません。 + + Note: + "oneline"を用いた場合は、同じ行の中に開始パターンと終了パターンを含 + んでいなければ範囲とはみなしません。ですが、"oneline"がない場合は、 + vimは終了パターンがあるかどうかのチェックを行い**ません**。もし終了 + パターンに合致するものがない場合は、ファイルの末尾までその範囲として + 扱います。 + + +CONTINUATION LINES AND AVOIDING THEM +継続行とその回避 +---------------- + +さて、もう少し複雑なことに取り組みます。プリプロセッサの行を定義しましょう。 +プリプロセッサの行は1桁目が"#"で、その行の行末までとなります。ただし、行末 +がバックスラッシュ(\)で終わっている行は次の行を継続した行とみなします。これ +を処理するには、継続パターンを含むような文法項目を許すことが必要です。 > + + :syntax region xPreProc start=/^#/ end=/$/ contains=xLineContinue + :syntax match xLineContinue "\\$" contained + +この場合、xPreProcは普通は単一行となるのですが、その中に含んでいるグループ +(xLineContinueという名前)によって2行以上続けさせています。 +例えば、この定義で次の両方の行に合致します。 + + #define SPAM spam spam spam \ ~ + bacon and spam ~ + +これは望み通りの動きでしょう。もし違っているのであれば、、内包しているパター +ン(xLineContinue)に"excludenl"を加えることで範囲を単一行に制限することができ +ます。例えば、xPreProcで"end"が行末にある時だけハイライト表示したいとします。 +xPreProcがxLineContinueでのように次の行まで続けるのを避けるには、"excludenl" +を使います。 > + + :syntax region xPreProc start=/^#/ end=/$/ + \ contains=xLineContinue,xPreProcEnd + :syntax match xPreProcEnd excludenl /end$/ contained + :syntax match xLineContinue "\\$" contained + +"excludenl"指定はパターンの前に指定しなければなりません。xLineContinueにはこ +の指定がありませんから、複数行に跨るパターンに合致する場合は最初の例と同じよ +うに次の行まで拡張することとなります。 + +============================================================================== +*44.8* クラスタ + +文法ファイルを書き始める時に気をつけていただきたい点の1つに、文法グループの +数が大きく膨れあがってしまうというのがあります。vimではいくつもの文法グルー +プを1つにまとめて、「クラスタ」として定義することができます。 +forループ、if文、whileループ、関数といった要素を持つ言語があるとします。それ +ぞれが数字や識別子といった同じ文法要素を含むことができます。これを次のように +定義できます。 > + + :syntax match xFor /^for.*/ contains=xNumber,xIdent + :syntax match xIf /^if.*/ contains=xNumber,xIdent + :syntax match xWhile /^while.*/ contains=xNumber,xIdent + +この場合、同じ内容の"contains=..."行を毎回繰り返さなければなりません。他の項 +目を追加したくなった時は、3回それを行わなければなりません。クラスタを使って +複数の文法グループを1つにまとめると、このような定義が簡単になります。 +上の3つのグループで使っている2つの項目をクラスタとして定義するには、このよ +うなコマンドを使います。 > + + :syntax cluster xState contains=xNumber,xIdent + +クラスタは他のsyntaxの中で普通の文法項目と全く同じように使えますが、先頭に"@" +を付けます。ですから、上で示した3つの行はこのように定義できます。 +> + :syntax match xFor /^for.*/ contains=@xState + :syntax match xIf /^if.*/ contains=@xState + :syntax match xWhile /^while.*/ contains=@xState + +既存のクラスタに新たなグループ名を追加するには"add="パラメタを使います。 > + + :syntax cluster xState add=xString + +逆に"remove="パラメタを使うとリストからその文法グループを取り除きます。 > + + :syntax cluster xState remove=xNumber + +============================================================================== +*44.9* 他の文法定義ファイルを取り込む + +C++言語の文法はC言語を包含しています。ですから、2つの文法定義をする必要は +ありません。C++の文法ファイルの中で次のコマンドを使って、C言語の文法ファイ +ルを読み込むようにすることができます。 > + + :runtime! syntax/c.vim + +":runtime!"コマンドは'runtimepath'の中から全ての"syntax/c.vim"ファイルを探し +ます。これを使えばC言語用のファイルと同様にCの言語定義を行えます。"c.vim" +を入れ換えた場合や他のファイルに項目を追加した場合でも、問題なく定義を読み込 +んでくれます。 +Cの文法項目を読み込んだ後で、C++専用の項目を定義できます。例えば、Cで +は使わないようなキーワードを追加できます。 > + + :syntax keyword cppStatement new delete this friend using + +これは他の文法ファイルでも同じように動きます。 + +ではPerl言語の場合を考えてみましょう。Perlは独特の2パート構成になっていま +す。1つはPOD形式のドキュメントセクションで、もう1つはPerl自身で記述したプ +ログラムです。PODセクションは"=head"で始まり、"=cut"で終ります。 +PODの文法を1つの文法ファイルで行って、それをPerl自身の文法ファイルの中で使 +うようにできます。":syntax include"コマンドは文法ファイルを読み込み、文法ク +ラスタの中に定義内容を格納します。Perl用の場合は次のような命令となります。 > + + :syntax include @Pod <sfile>:p:h/pod.vim + :syntax region perlPOD start=/^=head/ end=/^=cut/ contains=@Pod + +"=head"がPerlソースの中に現れた場合、perlPODの範囲が開始されます。この範囲で +は@Podクラスタを包含しています。pod.vimファイルの第1レベルで定義してある全 +ての項目がその対象となります。"=cut"が現れると、perlPODの範囲は終了となり、 +Perlファイルで定義された項目に戻ります。 +":syntax include"では読み込もうとしているファイルの中":syntax clear"があって +もちゃんと無視してくれます。また"contains=ALL"のようなパラメタはそのファイル +の中で定義している項目だけを対象とし、呼び出し元での項目は対象外となります。 +"<sfile>:p:h/"の部分は現在のファイル名(<sfile>)をフルパスに拡張(:p)し、その +ヘッダ部分(:h)を取り出します。展開結果はカレントファイルのディレクトリ名とな +ります。つまり、ここでは同じディレクトリにある"pod.vim"ファイルを示している +ことになるわけです。 + +============================================================================== +*44.10* 表示のシンクロナイズ + +訳注: 以下、原文だけではわかりにくい概念のため、追補しました。 + +驚かれるかも知れませんが、vimではファイルの同じ個所を表示した時に常にそのハ +イライトが同じように表示されるとは限りません。(これをシンクロナイズと呼びま +す) 例えば次の例を考えてみましょう。 + + +------------------- ~ + |/* ~ + | * これはコメント ~ + | */ ~ + | ~ + +このようにウィンドウの1行目からにコメントがあれば、当然ながら全てが正しく出 +力されます。しかし、次のような場合はどうでしょうか。 + + +------------------- ~ + | * これはコメント ~ + | */ ~ + | ~ + +これだけを見ると、コメントの開始となる"/*"がないので、コメントとは識別できな +いはずですが、Vimはこれを正しく表示します。しかしコメントがあまりに長い場合 +は正しく表示されなくなります。一体何が起っているのでしょうか? + +訳注: 追補終り + +コンパイラにとっては簡単なことです。なぜならコンパイラはファイルの先頭から順番 +にだけ解釈しているだけで良いからです。Vimにとってはそう簡単ではありません。上 +記のように、その解釈がファイルの途中、今編集がなされている真っ最中の場所から始 +まるかも知れないからです。その場合Vimの解析機能が、今見ている場所にどのような +意味があるか、どうやって知ったらよいのでしょう。 +その秘密は":syntax sync"コマンドにあります。これはvimにどのようにしてその項目 +の開始場所を調べるかを示します。例えば、次のコマンドはvimにC形式のコメントの +最初か最後を逆方向検索し、その場所からハイライト表示を始めるという指示です。 +> + :syntax sync ccomment + +パラメタを使ってこの処理をチューニングすることができます。"minlines"パラメタ +では逆方向に検索をする最小行数を指定できます。"maxlines"では検索する最大行数 +を指定できます。 +例えば、次のコマンドは画面の最上段から少なくとも10行前までを検索する指示とな +ります。 > + + :syntax sync ccomment minlines=10 maxlines=500 + +この範囲で現在の状態を判断できなければ、さらにそれが解るまで逆昇ります。ただ +し、500行以上は探しません。("maxlines"を大きくすればそれだけ処理が遅くなりま +す。逆に小さすぎるとシンクロナイズに失敗することになります) +シンクロナイズを高速に行わせるには、どの文法項目が省略できるかをVimに教えてや +る必要があります。そのためには本当に表示が必要な照合や範囲にだけ"display"パラ +メタを付与します。 +デフォルトでは、探すべきコメントは"Comment"文法グループの一部として色付けされ +ています。他の方法で色を付けたい場合には、違った文法グループを指定することもで +きます。 > + + :syntax sync ccomment xAltComment + +お使いのプログラム言語がC言語形式のコメントをサポートしていない場合、他の同 +期方法を試すことができます。一番簡単なのはvimに逆方向に調べさせたい行数を指 +定することです。次のコマンドでは150行戻ってから解析を始めます。 > + + :syntax sync minlines=150 + +"minlines"を大きな値にすれば、vimの動作が遅くなるかもしれません。特にファイル +の始めの方にスクロールしている時に顕著でしょう。 +最後に、検索のために文法グループを定義することが、このコマンドを使ってできま +す: > + + :syntax sync match {sync-group-name} + \ grouphere {group-name} {pattern} + +これは、{group-name}という文法グループは与えられた{pattern}の後に始まるという +ことを、Vimに指示します。 +{sync-group-name}はこの同期指定に名前を付けるのに用います。例えば、シェルの +スクリプト言語ではif文は、次の例のように"if"で始まり"fi"で終ります。 + + if [ --f file.txt ] ; then ~ + echo "File exists" ~ + fi ~ + +この文法を"grouphere"指令を使って定義するには、このようにします。 > + + :syntax sync match shIfSync grouphere shIf "\<if\>" + +"grouphere"パラメタはそのパターンがグループの終了であることを示します。例え +ば、if/fiグループの終了は次の通りです。 > + + :syntax sync match shIfSync groupthere NONE "\<fi\>" + +この例では"NONE"がどんな文法範囲にも入っていないことを示します。特に、ifブ +ロックの中でないことを示します。 + +"grouphere"や"groupthere"パラメタなしでも照合や範囲を定義できます。こういっ +たグループは同期処理の途中では無視されます。例えば、次の例では{ }の中の全て +を無視します。仮に他の同期メソッドに合致していても無視されます。 > + + :syntax sync match xSpecial /{.*}/ + +同期についての詳細はリファレンスマニュアルの|:syn-sync|をご覧ください。 + +============================================================================== +*44.11* 文法ファイルをインストールする + +新しい文法ファイルが使えるようになったら、それを'runtimepath'の"syntax"ディ +レクトリに入れておきます。Unixなら"~/.vim/syntax"です。 +文法ファイルの名前はファイルタイプに".vim"を加えた名前でなければなりません。 +つまり"x"言語の場合なら、このファイルのフルパスはこうなります。 + + ~/.vim/syntax/x.vim ~ + +また、そのファイルタイプを認識できるようにしなければなりません。|43.2|をご覧 +ください。 + +作ったファイルがうまく動いた場合は、それを他のvimユーザにも使ってもらえるよ +うにしたいかもしれませんね。それには、まず次節を読んで他の人の環境でも正しく +動くことをよく確認します。次にvimのメインテナンス担当<maintainer@vim.org>に +電子メールを送ります。そのファイルタイプを検出する方法を説明してください。 +ちょっと運が良ければそのファイルはvimの次バージョンに組み込まれるでしょう。 + + +既存の文法ファイルへの追加 +-------------------------- + +上の説明は完全に新たな文法ファイルを追加する場合の方法です。既存の文法ファイ +ルがあっても、対応に洩れがある場合には別のファイルでそれを補なうことができま +す。配布版の文法ファイルを直接変更すると、vimの新バージョンをインストールした +時に上書きされる心配がなくなります。 +文法コマンドを独自のファイルに書いておき、出来れば既存の文法ファイルのグルー +プ名を使うようにします。例えば、Cの文法ファイルに新たな変数タイプを追加する +場合にはこうします。 +> + :syntax keyword cType off_t uint + +元の文法ファイルと同じ名前でファイルを保存します。この場合なら"c.vim"となり +ます。このファイルを'runtimepath'の最後の方に書いてあるディレクトリの中に置 +きます。こうすれば元の文法ファイルよりも後に読み込ませることができます。Unix +ではこうなります。 + + ~/.vim/after/syntax/c.vim ~ + +============================================================================== +*44.12* 可搬性の高い文法の配置 + +全てのvimユーザが文法ファイルを交換するというのは良いことですよね?これを実 +現するために、文法ファイルを作る時は以下のガイドラインを守らなくてはなりませ +ん。 + +ヘッダ部には何用の文法ファイルなのか、メインテナンス担当が誰か、最後に更新し +た日はいつか?を明記する必要があります。変更履歴にはあまりたくさんの情報を入 +れないようにしないと、誰も読んでくれなくなります。例えばこうします。 > + + " Vim syntax file + " Language: C + " Maintainer: Bram Moolenaar <Bram@vim.org> + " Last Change: 2001 Jun 18 + " Remark: Included by the C++ syntax. + +他の文法ファイルと同じレイアウトにしてください。既存の文法ファイルをサンプル +として使えば時間がずいぶん節約できます。 + +文法ファイルには内容のわかりやすい名前を選んでください。小文字と数字だけを +使ってください。たくさんの個所で使いますので、文法ファイルの名前("name.vim" +や'filetype'、b:current_syntax)にはあまり長い名前を付けないようにします。 +(例えば、nameType, nameStatement, nameStringなど) +"b:current_syntax"というのはバッファローカルな変数のことです。 + +最初に"b:current_syntax"を確認します。これが定義済であれば、'runtimepath'の +最初の方でシンタックスファイルをロード済です。さらにvim5.8との互換が必要なら +こうします。 > + + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + +処理の最後に"b:current_syntax"に文法名を設定します。インクルードファイルでも +同じように処理するのを忘れないようにします。2つのファイルをインクルードする +場合に"b:current_syntax"をリセットしなければならないかもしれません。 + +作った文法ファイルをvim5.xでも動くようにしたければ、"v:version"もちぇっくす +るようにしてください。実例は"yacc.vim"にあります。ご覧ください。 + +利用者が設定するような項目は含んではいけません。'tabstop'や'expandtab'を設定 +してはいけません。こういったことはファイルタイププラグインの領分です。 + +また、マップや短縮形も含んではいけません。ただし'iskeyword'だけは、キーワー +ドの識別にどうしても必要であれば、設定してもかまいません。 + +特定の色を使うことは避けてください。可能な限り標準ハイライトグループへのリン +クを使ってください。利用者の環境によって背景色が違っていたり、色数が8色しか +使えない場合もあるということを忘れないでください。 +vim5.8との後方互換を保つには次のような構文を使います。 > + + if version >= 508 || !exists("did_c_syn_inits") + if version < 508 + let did_c_syn_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + HiLink nameString String + HiLink nameNumber Number + ... etc ... + + delcommand HiLink + endif + +同期を取る時には使わない項目には"display"パラメタを与えることで、逆スクロー +ル時やCTRL-Lを実行した時のスピードアップを図ることができます。 + +============================================================================== + +Next chapter: |usr_45.txt| 言語を選ぶ + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_45.jax b/ja/usr_45.jax new file mode 100644 index 000000000..008554b1e --- /dev/null +++ b/ja/usr_45.jax @@ -0,0 +1,433 @@ +COMMENT: 利用言語を選択する(メニュー、メッセージ、エンコード) +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_45.txt* For Vim version 6.3. Last change: 2002 Oct 08 + + VIM USER MANUAL - by Bram Moolenaar + + 言語を選ぶ + + +vimでは各種のメッセージをいくつかの言語で表示することができます。この章では +表示に使用する言語を切り換える方法を説明します。また、様々な言語のファイルを +扱う時の違いについても説明します。 + +|45.1| メッセージ用の言語 +|45.2| メニュー用の言語 +|45.3| 他のエンコード方法の利用 +|45.4| 違ったエンコードを用いてのファイル編集 +|45.5| 各国語の文字入力 + + Next chapter: |usr_90.txt| vimのインストール + Previous chapter: |usr_44.txt| 文法定義の自作 +Table of contents: |usr_toc.txt| + +============================================================================== +*45.1* メッセージ用の言語 + +vimは起動時に環境をチェックし、あなたの利用している言語が何かを調べます。ま +ず間違いなくこの機能は正しく動いて、お使いの言語でのメッセージ(のセットが存 +在すれば)を表示します。現在の言語が何かを見るには、このコマンドを使います。 +> + :language + +もし結果が"C"であれば、デフォルトとなっていることを示します。この場合は言語 +は英語となります。 + + Note: + 異なった言語の扱いは、それを処理できるようにコンパイルした時にだけ使 + えます。その機能の有無は":version"コマンドを実行し、出力に"+gettext" + と"+multi_lang"があるかどうかを調べます。両方があれば、問題なしです。 + どちらかが"-gettext"とか"-multi_lang"となっている場合はそのvimでは残 + 念ながら使えません。 + +違った言語でメッセージを表示させたい場合はどうすればよいのでしょうか?これに +はいくつかの方法があります。どれを使うべきかはお使いのシステムの能力に依存し +ます。 +最初の方法は、vimを起動する前に環境変数に希望の言語を設定しておく方法です。 +例えばUnixではこのようにします。 > + + env LANG=de_DE.ISO_8859-1 vim + +この方法はお使いのシステムが言語サポートをしている場合にのみ使えます。この方 +法の利点はライブラリに入っているGUIのメッセージも含めて全てが正しい言語を使 +って表示されることです。逆に欠点はvimの起動前に環境変数の設定をしなければな +らない点です。vimを起動後に言語を変更するのであれば、2つ目の方法が使えます。 +> + + :language fr_FR.ISO_8859-1 + +この方法では言語をいくつかの名前で試してみることができます。お使いのシステム +でサポートしていない名前を指定するとエラーメッセージが出ます。翻訳されたメッ +セージが使えない場合にはエラーは表示しません。vimは何も言わずに言語として英 +語を使います。 +お使いのシステムでサポートされている言語を調べるには、その一覧が入っている +ディレクトリを探します。(以下の記述はUnix環境の方用です。windowsやMacOS環境 +の方は無視してください)私の環境では"/usr/share/locale"です。一部のシステムで +は、"/usr/lib/locale"になっています。"setlocale"のマニュアルページを調べると +そのような一覧がどこにあるかのヒントが掲っているでしょう。 +言語名は、そこにある通りに正確に入力するように気をつけてください。大文字/小 +文字、"-"と"_"、といった点には特に気をつけます。 + +メッセージ、編集するテキスト、時刻形式のそれぞれに言語を指定することができま +す。|:language|をご覧ください。 + + +あなた自身でのメッセージ翻訳 +---------------------------- + +お使いの言語用の翻訳メッセージが用意されていない場合、あなた自身で作成できま +す。まず、vimのソースコードとGNUのgettextパッケージを入手します。ソースを +展開すると、"src/po/"ディレクトリに手順書である"README.txt"があります。 +翻訳すること自体はそれほど難しくはありません。何もプログラマでなくても大丈夫 +です。でも当然ですが、英語と翻訳したい言語の両方を解っていることは必要です。 +翻訳結果が満足できるものであれば、それを他の人々に提供することを考えてくださ +い。vim-online(http://vim.sf.net)にアップロードするか、vimのメンテナンス担当 +にメールするか、(その両方でも)してください。 + +============================================================================== +*45.2* メニュー用の言語 + +デフォルトのメニューは英語です。他の言語でも使えるようにするには、これを翻訳 +しなければなりません。メッセージの場合と同様に、これも環境変数に定義をしてあ +れば、自動的にその言語を使います。そのためには何もする必要はありません。ただ +しこれが使えるのは、その言語用の翻訳結果がある場合に限ります。 + +例えばドイツ人で言語はドイツ語を使いたいが、"Datei"よりもメニューは"File"の +方がよいという場合を考えましょう。メニューを英語に戻すにはこのようにします。 +> + :set langmenu=none + +同じように言語を指定することもできます。 > + + :set langmenu=nl_NL.ISO_8859-1 + +メッセージと同様に、"-"と"_"は違った文字です。ですが、ここでは大文字と小文字 +の違いは無視します。 +'langmenu'オプションの定義はメニューをロードする前ん行わなければなりません。 +一度メニューを定義してしまうと、'langmenu'を変更しても何も起こりません。です +から、ユーザ用vimrcファイルに'langmenu'を設定するコマンドを書いておきます。 +vimを起動してからどうしてもメニューの言語を変更したいのであれば、次の手順で +行うことができます。 > + + :source $VIMRUNTIME/delmenu.vim + :set langmenu=de_DE.ISO_8859-1 + :source $VIMRUNTIME/menu.vim + +これには1つだけ問題があります。上の手順では独自に作成したメニューが全てなく +なってしまいます。ですからこれを再定義する必要があります。 + + +あなた自身でのメニュー翻訳 +-------------------------- + +どんな翻訳結果があるかを知るには次のディレクトリを見ます。 + + $VIMRUNTIME/lang ~ + +翻訳結果のファイル名はmenu_{language}.vimの形式です。この中に必要な言語がな +い場合、自身で翻訳することもできます。これを行う一番簡単な方法は既存の言語用 +ファイルをコピーして、それに変更を加えていく方法です。まずお使いの言語名を +":language"コマンドで見つけてください。その名前を(ただし全部小文字にして) +使います。次にそのファイルが'runtimepath'で早く見つかるように、ユーザ用の +ランタイムディレクトリにコピーします。例えば、Unixであれば、こうします。 > + + :!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim + +"$VIMRUNTIME/lang/README.txt"には翻訳のヒントとなることが載っています。一度 +ご覧ください。 + +============================================================================== +*45.3* 他のエンコード方法の利用 + +vimは編集しようとしているファイルがお使いの言語を使っているものとみなしま +す。多くのヨーロッパ系言語は"Latin1"となります。この場合、1バイトが1文字を +示しますので、最大256文字が表示できます。ですがアジア系言語ではこれでは不 +十分です。多くの場合は2バイトエンコードを用いて、1万文字を超す文字を提供し +ています。それでも、複数の言語を混在させるには不十分なのです。だからUnicode +が出てきたのです。Unicodeでは一般的に使われているほとんどの言語を網羅してい +ます。これは"全てを置き換えるスーパーエンコード"なのです。ですがまだ、広く普 +及しているとは言えない状態です。 +幸い、vimはこの3種類のエンコード方法を全てサポートしています。また多少の制 +限はありますが、ファイルとは違う言語を使っている環境でもこれを利用できます。 +とはいうものの、お使いの言語で書かれたファイルだけを使っている時には、デフォ +ルトのままで何もしなくてもうまく動くはずです。以下は、違った言語での編集を行 +う時にだけ意味があります。 + + Note: + 違ったエンコード方法が使えるのはvimがそれを扱えるようにコンパイルし + た時だけです。うまく動くかどうかを調べるには":version"コマンドを実行 + し、"+multi_byte"という出力があるかどうかを見ます。これがあればOK + です。もし"-multi_byte"となっていれば、残念ながらそのvimでは、この機 + 能は使えません。 + + +GUIでUnicodeを使う +--------------------- + +Unicodeには他のエンコードから変換したり他に戻したりしても情報が欠落しないと +いう長所があります。内部でUnicodeを使うようにvimをmakeすると、あらゆるエン +コードのファイルを編集することができます。 +残念ながら、まだUnicodeをサポートしているシステムはまだ限られています。です +から、お使いの言語がUnicodeを使っていることはまずありません。それを使いたいと +vimに教えてやり、他のシステムとインタフェースの取り方を教えてやる必要がありま +す。 +GUI版のvimをUnicode文字を表示できるように起動してみましょう。このように行 +います。 > + + :set encoding=utf-8 + :set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 + +'encoding'オプションで、vimに使いたい文字のエンコード方法を教えます。これは +バッファ(編集中のファイル)の文、レジスタ、vimスクリプトなどに適用されます。 +ですから、'encoding'の内容はvimの内部設定とみなすことができます。 +上の例は、お使いのシステムに必要なフォントがあるという前提に立っています。 +上の例で使っている名前はX-Windowのものです。このフォントはUnicodeをサポート +した拡張xtermで使うパッケージに入っています。このフォントをお持ちでなければ +こちらで見つけられます。 + + http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~ + +MS-Windowsでは、一部のフォントにはUnicode文字の部分が入っています。フォント +の"Courier New"を使ってみてください。これは"編集(E)/フォント選択(N)..."メ +ニューを使って、利用可能なフォントを試してください。等幅(非プロポーショナル) +フォントだけが使えます。例を示します。 > + + :set guifont=courier_new:h12 + +これがうまく動かなければ、フォントパックを入手してください。Microsoftが場所 +を変更していなければ、こちらにあります。 + + http://www.microsoft.com/typography/fontpack/default.htm ~ + +次にvimに内部でUnicodeを使い、その表示にUnicodeフォントを使うように指定しま +す。入力した文字列は元の言語のエンコードのままです。これをUnicodeに変換する +必要があります。どの言語から変換するかを'termencoding'オプションで指定しま +す。これは次の手順でできます。 > + + :let &termencoding = &encoding + :set encoding=utf-8 + +これは'encoding'の古い値を'termencoding'に設定してから、'encoding'を"utf-8" +に設定しています。あなたの環境で本当に動くかは試してみなければなりません。 +これは特にアジア系の言語でインプットメソッドを使っていて、Unicodeを使いたい +場合には確認を行うべきです。 + + +Unicode端末でUnicodeを使う +-------------------------- + +端末によっては直接Unicodeを扱えるものもあります。XFree86についてくる標準の +xtermもそういったもののひとつです。ここではこれを例として使います。 +まず何よりも、Unicodeサポート付きでコンパイルされたxtermでなくてはなりませ +ん。その確認方法や必要に応じたコンパイル手順については、|UTF8-xterm|をご覧く +ださい。 +ではxtermを"-u8"パラメタ付きで起動しましょう。併せてフォントを指定する必要が +あるかもしれません。例を示します。 > + + xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 + +これでこの端末でvimを使うことができます。上での例のように'encoding'を"utf-8" +にします。これでOKです。 + + +普通の端末でのUnicodeの利用 +--------------------------- + +Unicodeのファイルを扱いたいけれど、Unicodeをサポートした端末がないという場合 +はどうでしょう?。vimなら、端末がサポートしていなくて表示できないような文字 +でも扱うことができます。文章のレイアウトは保護されます。 > + + :let &termencoding = &encoding + :set encoding=utf-8 + +これはGUI版で用いたコマンドと全く同じです。ただし動きは異なります。vimは +表示すべき文字列を端末に送り込む前に変換します。これは端末におかしな文字が表 +示されてメチャクチャになるのを防ぎます。 +このためには、'termencoding'と'encoding'間の変換が正しく動くことが必須です。 +Latin1からUnicodeへの変換は常に正しく動きます。ですが、これ以外の変換を行う +には、|+iconv|機能が必要となります。 +Unicode文字を含むようなファイルを編集してみてください。vimはその端末で表示で +きない文字があるべき場所に、疑問符(やアンダスコアなどの文字)を表示します。 +カーソルを疑問符の上に動かし、このコマンドを実行します。 > + + ga + +vimはその文字の文字コード情報を1行表示します。これはその文字が何かを知る手 +がかりとなるでしょう。この文字コードをUnicodeの表を使って調べることが可能で +す。実際にその方法で膨大な時間の手作業を行えば、ファイルを閲覧することができ +ます。 + + Note: + 'encoding'はvim内の全文章で使いますから、これを変更すると全ての非ア + スキー文字は無効となります。特にレジスタを使う場合と'viminfo'オプ + ションを使う場合(例えば検索パターンを復元する場合など)には気を付けて + ください。ですから、'encoding'はユーザvimrcファイルで設定し、それ以 + 外では変更しないことを推奨します。 + +============================================================================== +*45.4* 違ったエンコードを用いてのファイル編集 + +Unicodeを使うようにvimを設定して、16-bitのUnicodeファイルを編集したいとしま +す。簡単そうですよね、本当でしょうか?vimは内部ではutf-8を使っていますから、 +16-bitエンコードされた情報は変換が必要なのです。つまり、文字セット(Unicode) +とエンコード方法(utf-8や16-bit)の間には違いがあるのです。 +vimは編集しようとしているファイルの種類が何かを検出しようとします。これには +'fileencodings'オプションで指定されたエンコード名を使います。Unicodeを使うの +であれば、デフォルト値は"ucs-bom,utf-8,latin1"です。つまりvimはそのファイル +がここに指定してあるエンコード方法のどれなのかをチェックするのです。 + + ucs-bom ファイルは必ずバイトオーダマーク(BOM)で初まらなくて + はなりません。これはUnicodeのうち、16-bit, 32-bit, + utf-8のエンコードを検出できます。 + utf-8 utf-8のUnicodeです。これはバイトシーケンスがutf-8で + あり得ないパターンが出てくると拒否します。 + latin1 古き良き時代の8ビットエンコード。常に有効です。 + +16-bitのUnicodeのファイルを編集しようとする時、BOMが正しければ、vimはこれを +検出して、ファイルを読み込む時にutf-8に変換しながら読み込みます。'fileencoding' +オプション(最後に"s"がない方)には検出したエンコード方法を設定します。この場 +合は"ucs-2le"というものです。これは2バイト系でリトルエンディアンに設定され +たUnicodeです。このファイル形式はMS-Windowsでは普通のものです。(例えばレジ +ストリファイルがそうです) +ファイルを書き出す時は、vimは'fileencoding'と'encoding'を比べます。内容に違 +いがあれば、文字列を変換します。 +'fileencoding'文字列が空の場合は、一切の変換を行いません。つまり、文字列は +'encoding'を使ってエンコードすべきだとみなされます。 + +デフォルトの'fileencodings'が良くないのであれば、チェックさせたいエンコード +を設定します。エンコード方法が間違っている場合はスキップします。"latin1"を最 +初に指定するとうまく動かなくなります。これはどんな文書も"latin1"には合致して +いると判断してしまうためです。次の例はBOMがなくてutf-8でもない場合にはシフト +JISと判断します。 > + + :set fileencodings=ucs-bom,utf-8,sjis + +エンコード方法の推奨値については|encoding-values|をご覧ください。他の値でも +同じように動くでしょう。これは使える変換に依存します。 + + +強制的なエンコード +------------------ + +自動検出がうまく動かない場合、どのエンコード方法を使うか指定しなければなりま +せん。例えばこのようにします。 > + + :edit ++enc=koi8-r russian.txt + +"++enc"を使って、このファイルでのみ用いるエンコード名を指定します。vimは指定 +のエンコード方法で(この場合ならキリル文字)ファイルを変換し、'encoding'にもそ +れを反映します。'fileencoding'にも指定のエンコード方法が設定されるため、ファ +イルを保存する時の逆変換も正しく行えます。 +同じパラメタをファイル保存時にも使えます。この方法であれば、vimをコード変換 +ソフトとして利用することができます。例えばこのようにします。 > + + :write ++enc=utf-8 russian.txt +< + Note: + 変換の結果、一部の文字が欠落する場合があります。任意のエンコードから + Unicodeへの変換とその逆変換については、間違った文字を使っていない限 + り、問題はほとんど出ません。しかし、Unicodeのファイルを他のエンコー + ドに変換した場合、元ファイルで複数の言語を用いていた場合、簡単に情報 + の欠落が生じます。 + +============================================================================== +*45.5* 各国語の文字入力 + +コンピュータのキーボードにはせいぜい100個程度のキーしかありません。一部の言 +語には数千の文字がありますし、Unicodeに至っては1万文字を超えています。これだ +けの文字をどのようにして入力するのでしょう? +まず、膨大な量の特殊文字を使うのでなければ、ダイグラフ(二重字)で何とかなるで +しょう。これについては|24.9|で説明した通りです。 +次にキーボードでの文字よりはるかに大量の文字を用いるような言語を使う場合は、 +インプットメソッド(IM)を使うことになるでしょう。これを使うには、キーボードか +ら入力したキーを目的の文字に変換する手順を覚える必要があります。あなたがIM +を必要とするのであれば、おそらくお使いのシステムには組み込まれていることで +しょう。vimでも他のプログラムと同様にIMが使えます。詳しくは、X-Windowに関 +しては|mbyte-XIM|を、MS-Windowsに関しては|mbyte-IME|をご覧ください。 + + +キーマップ +---------- + +一部の言語では、文字セットがラテン語とは違っていても同じような文字数のものが +あります。こういった場合は、キーと文字をマッピングすることができます。vimに +はキーマップというのがあります。 +例えば、ヘブライ語を使いたい場合であれば、こうしてキーマップを読み込みます。 +> + :set keymap=hebrew + +vimはキーマップファイルを探そうとします。これは'encoding'の内容に依ります。 +目的のファイルが見つけられない場合は、エラーメッセージを表示します。 + +うまく読み込みができれば、挿入モードでヘブライ語を入力できます。挿入モードで +":"コマンドを入力すると、自動的に英語に切り換わります。ヘブライ語と英語の切 +り換えはこのコマンドで行います。 > + + CTRL-^ + +これは挿入モードとコマンド行モードでのみ動作します。通常モードでは、全く別の +こと(別ファイルへのジャンプ)を実行します。 +キーマップを使っている場合、'showmode'オプションを設定しておくと、モードメッ +セージとしてそれを表示します。GUI版ではカーソルの色を変えることでキーマッ +プを使用中であることを示します。 +また、'iminsert'と'imsearch'オプションを使ってキーマップの状態を変更すること +ができます。 + +マップの一覧を見るにはこうします。 > + + :lmap + +利用できるキーマップファイルを調べるには、GUI版であれば、「編集(E)/キー +マップ(K)」メニューを使います。GUI版でなければ、このコマンドを使います。 +> + :echo globpath(&rtp, "keymap/*.vim") + + +あなた自身でのキーマップ作成 +---------------------------- + +自作のキーマップファイルを作成することができます。そんなに難しいことではあり +ません。使いたいと思っている言語に似たキーマップファイルを使って始めましょ +う。そのファイルを自分用のランタイムディレクトリの"keymap"ディレクトリにコ +ピーしましょう。例えば、Unix環境なら、"~/.vim/keymap"ディレクトリを使えば良 +いでしょう。 +キーマップファイルの名前は次のルールに従っていなければなりません。 + + keymap/{name}.vim ~ +もしくは + keymap/{name}_{encoding}.vim ~ + +{name}はキーマップの名前です。わかりやすい名前を選びましょう。ですが、既存の +キーマップとは違う名前にしてください。(既存のファイルを置き換えたい場合は別 +ですが) 名前にはアンダースコア(_)は使えません。また使用するエンコード方法を +オプションとして追加できます。次のように使います。 + + keymap/hebrew.vim ~ + keymap/hebrew_utf-8.vim ~ + +このファイルの内容については説明は不要でしょう。vimの配布物にあるキーマップ +をいくつか覗いてください。詳しくは|mbyte-keymap|をご覧ください。 + + +最後の手段 +---------- + +どの方法もダメだった場合でも、CTRL-Vを使えば、どんな文字でも入力することがで +きます。 + + エンコード 入力方法 入力できる範囲 ~ + 8ビット CTRL-V 123 10進数の 0~255 + 8ビット CTRL-V x a1 16進数の 00~ff + 16ビット CTRL-V u 013b 16進数の 0000~ffff + 31ビット CTRL-V U 001303a4 16進数の 00000000~7fffffff + +空白記号は入力しないでください。詳しくは|i_CTRL-V_digit| をご覧ください。 + + +============================================================================== + +Next chapter: |usr_90.txt| vimのインストール + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_90.jax b/ja/usr_90.jax new file mode 100644 index 000000000..b12ce8620 --- /dev/null +++ b/ja/usr_90.jax @@ -0,0 +1,522 @@ +COMMENT: Vimのインストール方法 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> + +*usr_90.txt* For Vim version 6.3. Last change: 2004 Mar 21 + + VIM USER MANUAL - by Bram Moolenaar + + vimのインストール + + *install* +vimを使うにはまずインストールをする必要があります。システムにも依りますが、 +とても簡単な作業です。この章では若干のヒントと新しいバージョンが出た時のアッ +プグレードの手順を説明します。 + +|90.1| Unix +|90.2| MS-Windows +|90.3| アップグレード +|90.4| インストールの共通事項 +|90.5| vimのアンインストール + + Previous chapter: |usr_45.txt| 言語を選ぶ +Table of contents: |usr_toc.txt| + +============================================================================== +*90.1* Unix + +まず最初に、vimをシステム全体で使えるようにするのか、一人のユーザだけが使え +るようにするのかを決めなければなりません。インストール手順はおおむね同じです +が、vimのインストール先となるディレクトリが異なります。 +システム全体で使えるようにインストールする時は、ベースディレクトリとして +"/usr/local"を使うことが多いでしょう。もちろんお使いのシステムによって違いが +あると思います。vim以外のパッケージがどこにインストールされているかを調べて +みてください。 +一方、単独ユーザ向けにインストールする時は、そのユーザのホームディレクトリを +ベースディレクトリに使えます。各ファイルは"bin"とか"shared/vim"といったサブ +ディレクトリ下に置くことになるでしょう。 + + +パッケージでインストール +------------------------ + +いろいろなUNIXシステム用のコンパイル済みバイナリがあります。次のページには多 +数のリンク先のリストがあります。 + + http://www.vim.org/binaries.html ~ + +バイナリのメンテナンスはボランティアベースです。ですから中には古いままになっ +ているものも多数あります。ですから自力でソースからコンパイルして専用のバー +ジョンを作るのも良いでしょう。また、ソースからコンパイルする場合はどの機能を +組み込むのかを自由に選択できます。当然ですがこれを行うにはコンパイラが必要と +なります。 + +Linuxのディストリビューションに入っている"vi"はおそらくvimの最少構成になって +います。シンタックスハイライトといった機能は組み込まれていません。そのディス +トリビューションから別のvimパッケージが配布されていないか、もしくはwebサイト +で公開されていないか調べてみましょう。 + + +ソースからインストール +---------------------- + +vimをコンパイルした上でインストールするには次の環境が必要となります。 + + - 何らかのCコンパイラ(GCC が望ましい) + - GZIPアーカイバ(www.gnu.orgで入手可能) + - Vimのソースとランタイムのアーカイブ + +vimのアーカイブを入手するには、次に示したファイルを見て近くの一番早くダウン +ロードできるミラーを見つけてください。 + + ftp://ftp.vim.org/pub/vim/MIRRORS ~ + +もしくはvimのホームサイト(ftp.vim.org)で十分ならばそれを使っていただいても結 +構です。そこにある"unix"ディレクトリに移動し、ファイルリストを見てください。 +各ファイル名にはバージョン番号が埋め込んであります。普通は最新バージョンを入 +手したいですよね。 +さて、Unix用のファイルを入手するには2つの方法があります。1つは全てを含んだ +大きな単一アーカイブ、もう一つはそれぞれフロッピに入るように分割した4つの小 +さ目のアーカイブです。例えばバージョン6.1の単一アーカイブのファイル名はこのよ +うになります。 + + vim-6.1.tar.bz2 ~ + +この解凍には"bzip2"プログラムが必要です。もし持っていなければ4つの小さ目の +ファイルを入手してください。これならgzipで解凍ができます。vim6.1の場合はこの +ようなファイル名となります。 + + vim-6.1-src1.tar.gz ~ + vim-6.1-src2.tar.gz ~ + vim-6.1-rt1.tar.gz ~ + vim-6.1-rt2.tar.gz ~ + + +コンパイル + +最初に作業用のトップディレクトリを作成します。例えばこのようにします。 > + + mkdir ~/vim + cd ~/vim + +次にここでアーカイブを解凍します。単一アーカイブを入手した場合なら解凍は次の +ようなコマンドで行います。 "path"の部分はあなたがファイルをダウンロードした +場所に読み替えてください。 > + + bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf - + +また、4つのアーカイブを入手した場合は次の通りです。 > + + gzip -d path/vim-6.1-src1.tar.gz | tar xf - + gzip -d path/vim-6.1-src2.tar.gz | tar xf - + gzip -d path/vim-6.1-rt1.tar.gz | tar xf - + gzip -d path/vim-6.1-rt2.tar.gz | tar xf - + +デフォルトの設定で満足していて、環境も適切にセットアップできているのであれ +ば、次のコマンドでvimをコンパイルできるはずです。 > + + cd vim61/src + make + +makeプログラムはconfigureを実行した上で全てをコンパイルしてくれます。設定を +変更してコンパイルする方法についてはこの後で説明します。 +コンパイル中にエラーが発生した場合は、エラーメッセージをよく見てください。 +何が悪かったのかを示す何らかのヒントが出ているはずです。きっとあなたならそれ +を見つけて修正できると思います。vimをコンパイルする時に一部の機能を禁止する +ことが必要かもしれません。Makefileを見て、お使いのシステム用の特記事項がない +か確認してください。 + + +テスト +------ + +コンパイルが無事終われば、正しくコンパイルできたかをチェックしましょう。 > + + make test + +ここではvimが所定の動きをするかどうかをチェックするための一連のテストスクリ +プトを実行します。vimが何回も起動し様々なメッセージや文字列が画面中に表示さ +れます。すべてが正しく動作していれば、最後にこのようなメッセージを表示しま +す。 + + test results: ~ + ALL DONE ~ + +テストに失敗したというメッセージが1つ2つ表示された場合は、vimは動いている +ものの完全ではありません。また大量のメッセージが出たり、vimがいつまでも終わ +らなかったりする場合は何か問題があります。その原因を自力で探すか、誰か解決で +きる人に頼みましょう。メーリングリストの過去ログ(|maillist-archive|)を見て解 +決できるかもしれません。それでもうまくいかない場合にはvimのメーリングリスト +(|maillist|)で聞いてみることもできます。助けてもらえるかもしれません。 + + +インストール *install-home* +------------ + +ホームディレクトリ下にインストールしたい場合は、Makefileの次の行を探してくだ +さい。 + + #prefix = $(HOME) ~ + +この行頭の"#"を削除します。 +システム全体で使えるようにインストールする場合は、適切と思われるインストール +ディレクトリを既に用意していあります。独自のディレクトリを指定する方法につい +ては後述します。なお、以下の作業を行うには"root"になる必要があります。 + +vimをインストールするには次のコマンドを使います。 > + + make install + +これで関連する全てのファイルは適切な場所に移動するはずです。さあ、vimを動か +して、ちゃんと動くことを確かめましょう。次の2つのテストで、ランタイムのファ +イルをちゃんと見つけられるかどうかが分かります。 > + + :help + :syntax enable + +うまく動かない場合は、次のコマンドでvimがランタイムファイルを探そうとする +ディレクトリをチェックしてください。 > + + :echo $VIMRUNTIME + +また、vimを起動する時に"-V"パラメタを付けておくと起動時に行っていることを +見ることができます。 > + + vim -V + +ユーザマニュアルの記述はvimが確実に動いていることを前提としていることを忘れ +ないでください。インストールが終われば|not-compatible|の手順に従って、vimの +設定をこのマニュアルの前提としている状態にしてください。 + + +機能の取捨選択 +-------------- + +vimには機能を選択する方法をいろいろ用意していまっ。簡単なのはMakefileを直接 +編集することです。ここには多くの使用方法や例題が載っています。機能の利用/禁 +止はその行をコメントにするかしないかで設定します。 +もう一つの方法は個別に"configure"を実行することです。これはコンフィギュレー +ションオプションを個々に指定できます。これの欠点は一つ一つ正確に指定しなけれ +ばならない点です。 +もっともよく使うパラメタを次に示します。これはMakefileから有効にすることもで +きます。 + + --prefix={directory} vimをインストールするトップディレクトリ + --with-features=tiny 多くの機能を禁止した状態でコンパイル + --with-features=small 一部の機能を禁止した状態でコンパイル + --with-features=big 多くの機能を有効にした状態でコンパイル + --with-features=huge ほとんどの機能を有効にした状態でコンパイル + この場合に有効となる機能のリストについては + |+feature-list|をご覧ください。 + + --enable-perlinterp Perlインタフェースを有効とする。同様にruby、 + python、tclのインタフェースを有効とするパラ + メタも使えます。 + + --disable-gui GUIインタフェースをコンパイルしない。 + --without-x X-windowsの機能をコンパイルしない + この両方を指定した場合はvimはXサーバに接続し + ないため、起動が早くなる。 + +この全リストを見るにはこうします。 > + + ./configure --help + +各機能についての簡単な説明とより詳しいリンク先情報については|feature-list|を +ご覧ください。 +冒険好きなら"feature.h"を編集してみましょう。もちろんソースコードを自分で変 +えていただいても構いませんよ! + +============================================================================== +*90.2* MS-Windows + +vimをMicrosoft Windows上にインストールするには2つの方法があります。いくつか +のアーカイブを解凍するか、自己解凍の大きなアーカイブを使うか、です。最新型の +コンピュータを使っている方であれば、第2の方法で問題ありません。第1の方法を +行うには、以下が必要となります。 + + - An archive with binaries for Vim. + - vimのバイナリが入ったアーカイブ + - vimのランタイムアーカイブ + - zipファイルを解凍できるプログラム + +vimのアーカイブを入手するには次に示したファイルから近くのダウンロードが一番 +速いミラーサイトを探してください。 + + ftp://ftp.vim.org/pub/vim/MIRRORS ~ + +速度に不満がなければ、vimのホームサイトである"ftp.vim.org"を使いましょう。 +その"pc"ディレクトリに移動し、ファイルのリストを見てください。ファイル名には +バージョン番号が埋め込んであります。普通は最新バージョンを入手したいですよね。 +ここではバージョン6.1の意味で"61"という文字列を使っています。 + + gvim61.exe 自己解凍形式のアーカイブ + +これは上で書いた第2の方法で必要な全てです。これは実行形式ですから、そのまま +実行して指示に従ってください。 + +第1の方法を取るにはバイナリアーカイブ群から1つを選ぶ必要があります。次のよ +うなアーカイブがあります。 + + gvim61.zip 通常のMS-WinsowsのGUIバージョン + gvim61ole.zip OLEサポート付きのMS-WindowsのGUIバージョン + メモリを食いますが他のOLEアプリケーションと + の通信をサポートしています。 + vim61w32.zip MS-Windows用の32ビットコンソールバージョン + Windows NT/2000/XPのコンソール用です。ただし + Windows 95/98/Meではうまく動きません。 + vim61d32.zip 32ビットのMS-DOSバージョン + Windows 95/98のコンソール画面で使えます。 + vim61d16.zip 16ビットのMS-DOSバージョン + ロングファイルネームをサポートしていない古い + システム専用です。 + +これらのうち1つだけが必要です。もっともGUIバージョンとコンソールバージョン +は両方インストールできます。いずれの場合でもランタイムファイルのアーカイブ +も入手する必要があります。 + + vim61rt.zip ランタイムファイルのアーカイブ + +このファイルを解凍するのにzipファイルを解凍できるプログラムが必要です。例え +ば"unzip"コマンドを使う場合であれば、このようにします。 > + + cd c:\ + unzip path\gvim61.zip + unzip path\vim61rt.zip + +ここでは"C:\vim\vim61"というディレクトリにファイルを展開しています。既に"vim" +というディレクトリが他にあって、そこに展開したいのであれば、その親ディレクト +リに移動してから上の"unzip"を実行してください。 +展開ができれば、"vim\vim61"ディレクトリに移動してインストールプログラムを実 +行します。 > + + install + +メッセージをよく読んで希望のオプションを選択してください。最後に"do it"を選 +択すると指定の処理を実行します。 +インストールプログラムはランタイムファイル群は移動しません。解凍したところに +残ったままです。 + +提供されたバイナリに含まれた機能に不満があれば、vimを自力でコンパイルするこ +とができます。バイナリがあったのと同じ場所からソースのアーカイブを入手してく +ださい。コンパイルを行うには対応するMakefileがあるコンパイラが必要です。 +Microsoft Visual Cでも動きますが高価です。無償のBorlandのコマンドラインコン +パイラ BC++5.5 は使えますし、やはり無償のMingWとCygwin のコンパイラも使えま +す。詳しくは"src/INSTALLpc.txt"をご覧ください。 + +============================================================================== +*90.3* アップグレード + +既にvimを使っていて、他をインストールしたい場合には、以下の作業が必要となり +ます。 + + +UNIX +---- + +"make install"と入力すると、そのバージョン用に指定したディレクトリにはランタ +イムファイル群もコピーします。つまり以前のバージョンを上書きすることはないと +いうことです。ですから2つ以上のバージョンの使い分けることは問題ありません。 +実行形式の"vim"は旧バージョンに上書きされます。もし古いバージョンを保全する +必要がないのであれば、"make install"でうまくいきます。古いバージョンのランタ +イムファイル群は手で削除します。次のようにバージョン番号を含んでいるディレク +トリを削除することで、その中にある全ファイルも自動的に削除できます。 > + + rm -rf /usr/local/share/vim/vim58 + +通常はこのディレクトリ下のファイルを変更することはありません。例えば +"filetype.vim"ファイルに変更を加えていた場合などは、削除する前に新バージョン +のファイルにその内容をマージしておくのが良いでしょう。 + +新しいバージョンに切り換える前に、少しの期間試用したい場合には新しいバージョ +ンを別の名前でインストールしてください。これは"configure"のパラメタで指定し +なければなりません。例えばこのようにします。 > + + ./configure --with-vim-name=vim6 + +"make install"を実行する前に"make -n install"をしておけば、現状のファイルに +上書きされることがないかどうかを確認できます。 +評価の結果、新しいバージョンに切り換えると決めた時には、実行形式のファイルを +"vim"に変更するだけです。このようにします。 > + + mv /usr/local/bin/vim6 /usr/local/bin/vim + + +MS-WINDOWS +---------- + +アップグレードは新しいバージョンをインストールするのとほとんどいっしょです。 +以前のバージョンと同じ場所でファイルを解凍してください。すると(例えば"vim61" +といった)新たなディレクトリを生成します。ランタイムファイル群や、vimrcファイ +ル、viminfoなどは元の場所に残ったままになります。 +もし古いバージョンの横にある新バージョンを実行するのなら、多少の手作業が必要 +となります。インストールプログラムを使わないでください。一部の旧バージョンの +ファイルを上書きしてしまいます。新しいバイナリをフルパス指定で実行してくださ +い。vimは適切なバージョンのランタイムファイルがある場所を自動的に検出するこ +とができます。ただし、$VIMRUNTIME変数をどこかで定義しているとうまく動きませ +ん。 +アップグレードの内容が満足のいくものであれば、旧バージョンのファイル群を削除 +してもかまいません。|90.5|節をご覧ください。 + +============================================================================== +*90.4* インストールの共通事項 + +このセクションではvimのインストール時に起きる問題点とその解決方法について説 +明します。またインストール時によくある質問とその回答についても触れます。 + + +Q: 私にはroot権限がありません。それでもvimをインストールできますか?(Unix) + +次のようなパラメタを付けて"configure"を実行してください。この例では$HOME/vim +というディレクトリにvimがインストールされます。 + + ./configure --prefix=$HOME + +これだとvimを個人用にセットアップします。エディタを動かすにはPATH変数に上で +指定した"$HOME/bin"を追加する必要があります。|install-home|もご覧ください。 + + +Q: 私の画面では表示される色が正しくありません(Unix) + +端末設定を見直してください。現在の端末設定はシェルから次のコマンドを使って +調べられます。 > + + echo $TERM + +表示される端末のタイプが正しくない場合はそれを修正します。もっと詳しくは +|06.2|をご覧ください。もう一つの方法はgvimと呼ばれるvimのGUIバージョンを使う +ことです。これだと端末を正しく設定する必要がありません。 + + +Q: BackSpaceキーとDeleteキーが正しく動いていないようです。 + +特にBackSpace<BS>とDelete<Del>は、どのキーを押した時にどのコードが送信されか +がとてもあいまいです。最初に$TERMの設定を確認してください。これが問題なけれ +ば、これを試してください。 > + + :set t_kb=^V<BS> + :set t_kD=^V<Del> + +最初の行の"^V<BS>"というのは CTRL-V を押してからキーボードのBackSpaceキーを +押すという意味です。2行目も同様に CTRL-V を押してからDeleteキーを押します。 +この2行をユーザvimrcファイルに置いておきます。詳しくは|05.1|をご覧ください。 +ただし、この方法だと後日端末を変えた時に動かなくなるかもしれないという欠点が +あります。これ以外の解決方法については|:fixdel|をご覧ください。 + + +Q: 私はRedHad Linuxを使っています。システムに添付されているvimは使えますか? + +bedHatのデフォルトでは最少構成のvimがインストールされています。RPMパッケージ +の中に"Vim-enhanced-version.rpm"といった名前のパッケージを探し、インストール +してください。 + + +Q: (シンタックスの)カラー化をするにはどうすればいいですか?また、どうすれば + プラグインが動くようにできますか? + +例題のvimrcスクリプトを使ってください。これの使い方については|not-compatible| +の説明をご覧ください。 +詳しくは「第6章 シンタックスハイライトを使う(|usr_06.txt|)」をご覧ください。 + + +Q: 使い易いvimrcファイルとは何ですか? + +webサイト(http://www.vim.org/)に良い例がいくつか置いてあります。 + + +Q: どこにいけば優れたvimプラグインが入手できますか? + +vim-onlineのサイト(http://vim.sf.net/)をご覧ください。多くのvimユーザが作っ +たスクリプトやプラグインがアップロードされています。 + + +Q: どこにいけばもっとTipsが見つけられますか? + +こちらもvim-onlineのサイト(http://vim.sf.net/)をご覧ください。vimユーザから +上ってきたいろいろなヒントのアーカイブがあります。この他にもメーリングリスト +のアーカイブ(|maillist-archive|)を検索するのも良いでしょう。 + +============================================================================== +*90.5* vimをアンインストールする + +あまり喜ばしいことではないですが、もしvimを完全にアンインストールしたければ +以下の手順でできます。 + + +UNIX +---- + +vimをパッケージとしてインストールしたのであれば、パッケージマネージャを使っ +て、そのパッケージを除去する方法を調べてください。 +ソースからインストールした場合は、このコマンドでアンインストールできます。 > + + make uninstall + +しかし、元のインストール用ファイル群を削除してしまった場合や、他の人が作った +アーカイブを使った場合はこれができません。この場合は手作業でファイルを削除し +てください。"/usr/local"下にroot権限でインストールされている場合の例を示し +ます。 > + + rm -rf /usr/local/share/vim/vim61 + rm /usr/local/bin/eview + rm /usr/local/bin/evim + rm /usr/local/bin/ex + rm /usr/local/bin/gview + rm /usr/local/bin/gvim + rm /usr/local/bin/gvim + rm /usr/local/bin/gvimdiff + rm /usr/local/bin/rgview + rm /usr/local/bin/rgvim + rm /usr/local/bin/rview + rm /usr/local/bin/rvim + rm /usr/local/bin/rvim + rm /usr/local/bin/view + rm /usr/local/bin/vim + rm /usr/local/bin/vimdiff + rm /usr/local/bin/vimtutor + rm /usr/local/bin/xxd + rm /usr/local/man/man1/eview.1 + rm /usr/local/man/man1/evim.1 + rm /usr/local/man/man1/ex.1 + rm /usr/local/man/man1/gview.1 + rm /usr/local/man/man1/gvim.1 + rm /usr/local/man/man1/gvimdiff.1 + rm /usr/local/man/man1/rgview.1 + rm /usr/local/man/man1/rgvim.1 + rm /usr/local/man/man1/rview.1 + rm /usr/local/man/man1/rvim.1 + rm /usr/local/man/man1/view.1 + rm /usr/local/man/man1/vim.1 + rm /usr/local/man/man1/vimdiff.1 + rm /usr/local/man/man1/vimtutor.1 + rm /usr/local/man/man1/xxd.1 + + +MS-WINDOWS + +自己解凍アーカイブを使ってvimをインストールした場合は、他のvimのプログラムと +同じディレクトリ(例えばc:\vim\vim61)にある"uninstall-gui"を実行してください。 +Windowsの"スタート"メニューにvimのエントリがあれば、そこにあるものを使っても +構いません。これはほとんどのファイルを削除し、メニューエントリやデスクトップ +上のショートカットも削除します。一部のファイルは残る場合があります。その場合 +は削除の前にWindowsを再起動しなければなりません。 +vimディレクトリをまるごと削除するというやり方もあります。この場合はユーザ用 +vimrcやあなたが作った他のランタイムファイルも全部消えてしまいますので、注意 +してください。 + +他方、zipアーカイブを使ってvimをインストールした場合は"uninstal"(最後の"l"が +1つ少ないので間違いなく)を使うのをお勧めします。これは"install"プログラムな +どと同じディレクトリ、例えば"c:\vim\vim61"で見つけられます。また、コントロー +ルパネルの「アプリケーションの追加と削除」でも削除できます。 +ただし、これはvim用のレジストリエントリを削除するだけです。ファイルは自分で +削除しなければなりません。単純に"vim\vim61"ディレクトリを選択して、削除する +だけです。このディレクトリ下にはあなたが変更を加えたファイルは入っていないは +ずですが、念のためチェックしておくのも良いでしょう。 +"vim"ディレクトリにはユーザ用のvimrcファイルや自作のランタイムファイル群が入 +っているでしょう。これを取っておいた方が良いかもしれません。 + +============================================================================== + +Table of contents: |usr_toc.txt| + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_toc.jax b/ja/usr_toc.jax new file mode 100644 index 000000000..aabd0a2c1 --- /dev/null +++ b/ja/usr_toc.jax @@ -0,0 +1,344 @@ +COMMENT: ユーザマニュアル目次 +STATUS: finished 6.3.054 +TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_toc.txt* For Vim version 6.3. Last change: 2003 Aug 18 + + VIM USER MANUAL - by Bram Moolenaar + + 目次 *user-manual* + +============================================================================== +Overview ~ + +vim入門 ~ +|usr_01.txt| マニュアルについて +|usr_02.txt| vimの最初の一歩 +|usr_03.txt| 動いてみる +|usr_04.txt| ちょっとした変更 +|usr_05.txt| 自分用の設定 +|usr_06.txt| シンタックスハイライトを使う +|usr_07.txt| 2つ以上のファイルを扱う +|usr_08.txt| ウィンドウの分割 +|usr_09.txt| GUIを使う +|usr_10.txt| 大規模な変更 +|usr_11.txt| クラッシュから立ち直る +|usr_12.txt| ちょっとしたテクニック + +効率良く編集する ~ +|usr_20.txt| コマンドラインコマンドを素早く入力する +|usr_21.txt| 行ったり、来たり +|usr_22.txt| 編集するファイルを見つける +|usr_23.txt| 他の種類のファイルを編集する +|usr_24.txt| 素早く挿入する +|usr_25.txt| フォーマット付きテキストを編集する +|usr_26.txt| 繰り返し +|usr_27.txt| 検索コマンドと正規表現 +|usr_28.txt| フォールド(折り畳み) +|usr_29.txt| プログラム内の移動 +|usr_30.txt| プログラムの編集 +|usr_31.txt| GUIの活用 + +vimのチューニング ~ +|usr_40.txt| 新しいコマンドを作る +|usr_41.txt| vimスクリプトの作り方 +|usr_42.txt| 新しいメニューの追加 +|usr_43.txt| ファイルタイプを使う +|usr_44.txt| 文法定義の自作 +|usr_45.txt| 言語を選ぶ + +vimを動くように設定する ~ +|usr_90.txt| Vimのインストール + +ユーザマニュアルは各章毎にHTML形式とPDF形式で印刷できる形で、次のサイトに置 +いてあります。 + http://vimdoc.sf.net + +============================================================================== +vim入門 ~ + +この章を最初から最後まで読んで基本的なコマンドを学びましょう。 + +|usr_01.txt| マニュアルについて + |01.1| 2つのマニュアル + |01.2| インストール済みのvim + |01.3| vimチュートリアルの利用 + |01.4| 著作権(copyright) + +|usr_02.txt| vimの最初の一歩 + |02.1| 初めてvimを使う + |02.2| 文字を挿入する + |02.3| 動き回る + |02.4| 文字を削除する + |02.5| アンドゥ(取り消し)とリドゥ(やり直し) + |02.6| 他の編集コマンド + |02.7| 終わり方 + |02.8| ヘルプの見つけ方 + +|usr_03.txt| 動いてみる + |03.1| 単語ごとの移動 + |03.2| 行頭、行末への移動 + |03.3| 文字への移動 + |03.4| カッコ類の呼応 + |03.5| 特定の行への移動 + |03.6| 現在の場所を表示 + |03.7| スクロール + |03.8| 簡単な検索 + |03.9| 簡単なパターン検索 + |03.10| マークの使用 + +|usr_04.txt| ちょっとした変更 + |04.1| オペレータとモーション + |04.2| 文字列の変更 + |04.3| 変更の繰り返し + |04.4| Visualモード + |04.5| 文の移動 + |04.6| 文の複写 + |04.7| クリップボードの利用 + |04.8| テキストオブジェクト + |04.9| 置換モード + |04.10| 終わりに + +|usr_05.txt| 自分用の設定 + |05.1| vimrc ファイル + |05.2| vimrc ファイルの例の説明 + |05.3| 基本的なマップ + |05.4| プラグインの追加 + |05.5| ヘルプファイルの追加 + |05.6| オプションウィンドウ + |05.7| よく使うオプション + +|usr_06.txt| シンタックスハイライトを使う + |06.1| シンタックスハイライトを使おう + |06.2| 色がつかない?変な色になる? + |06.3| 違った色 + |06.4| カラーを使う?使わない? + |06.5| カラー印刷 + |06.6| さらに + +|usr_07.txt| 2つ以上のファイルを扱う + |07.1| 他のファイルを編集する + |07.2| ファイル一覧 + |07.3| ファイル間ジャンプ + |07.4| バックアップファイル + |07.5| ファイル間のテキストコピー + |07.6| 読み込み専用モード + |07.7| ファイル名の変更 + +|usr_08.txt| ウィンドウの分割 + |08.1| ウィンドウの分割 + |08.2| 他のファイルでウィンドウを分割 + |08.3| ウィンドウのサイズ + |08.4| 縦分割 + |08.5| ウィンドウの移動 + |08.6| 全ウィンドウに対するコマンド + |08.7| vimdiffで差分を見る + |08.8| その他 + +|usr_09.txt| GUIを使う + |09.1| GUIの部品 + |09.2| マウスを使う + |09.3| クリップボード + |09.4| 選択モード + +|usr_10.txt| 大規模な変更 + |10.1| レコーディング(記録)とプレイバック(再現) + |10.2| 置換 + |10.3| コマンドの範囲 + |10.4| グローバル(global)コマンド + |10.5| visualブロックモード + |10.6| ファイルの一部の保存と読み込み + |10.7| テキストの整形 + |10.8| 大文字/小文字の変更 + |10.9| 外部プログラムの利用 + +|usr_11.txt| クラッシュから立ち直る + |11.1| 基本的なリカバリ + |11.2| スワップファイルはどこにある? + |11.3| クラッシュかどうか? + |11.4| さらに詳しい情報 + +|usr_12.txt| ちょっとしたテクニック + |12.1| 単語の置き換え + |12.2| "Last, First"を"First Last"に変更 + |12.3| リストの並べ替え + |12.4| 行の順を逆にする + |12.5| 単語数のカウント + |12.6| マニュアルを探す + |12.7| 空白文字をまとめる + |12.8| 単語を使っている場所を探す + +============================================================================== +効率良く編集する ~ + +ここの各項目はどこからでも読み進めることができます。 + +|usr_20.txt| コマンドラインコマンドを素早く入力する + |20.1| コマンド行の編集 + |20.2| コマンド行の短縮入力 + |20.3| コマンド行の補完 + |20.4| コマンド行の履歴 + |20.5| コマンド行ウィンドウ + +|usr_21.txt| 行ったり、来たり + |21.1| 退避(サスペンド)と復元(リジューム) + |21.2| シェルコマンドの実行 + |21.3| viminfoによる情報の記憶 + |21.4| セッション + |21.5| ビュー + |21.6| モード行 + +|usr_22.txt| 編集するファイルを見つける + |22.1| ファイルエクスプローラ + |22.2| カレントディレクトリ + |22.3| ファイルを見つける + |22.4| バッファリスト + +|usr_23.txt| 他の種類のファイルを編集する + |23.1| DOS形式、Mac形式、Unix形式のファイル + |23.2| インターネット上のファイル + |23.3| 暗号化 + |23.4| バイナリファイル + |23.5| 圧縮済ファイル + +|usr_24.txt| 素早く挿入する + |24.1| 修正を行う + |24.2| 一致するものを表示する + |24.3| 補完 + |24.4| 挿入を繰り返す + |24.5| 他の行をコピーする + |24.6| レジスタ内容を挿入する + |24.7| 短縮形 + |24.8| 特殊な文字を入力する + |24.9| ダイグラフ(二重字) + |24.10| 通常モードのコマンド + +|usr_25.txt| フォーマット付きテキストを編集する + |25.1| 行を分割する + |25.2| テキストを揃える + |25.3| インデントとタブ + |25.4| 長い行の分割 + |25.5| 表の編集 + +|usr_26.txt| 繰り返し + |26.1| ビジュアルモードでの繰り返し + |26.2| 加算と減算 + |26.3| 多くのファイルに変更を加える + |26.4| シェルスクリプトでvimを使う + +|usr_27.txt| 検索コマンドと正規表現 + |27.1| 大文字/小文字を無視 + |27.2| ファイル終端に達した時のラップ処理 + |27.3| オフセット + |27.4| 複数回の一致 + |27.5| 複数条件の並記 + |27.6| 文字範囲 + |27.7| 文字クラス + |27.8| 改行記号に一致 + |27.9| 例 + +|usr_28.txt| フォールド(折り畳み) + |28.1| フォールドって何? + |28.2| 手動でのフォールド + |28.3| フォールドで作業する + |28.4| フォールドの保存と復元 + |28.5| 段付けを使ったフォールド + |28.6| マーク(?marker)を使ったフォールド + |28.7| 文法を使ったフォールド + |28.8| 式によるフォールド + |28.9| 変更していな行をフォールドする + |28.10| どのフォールド方法を使えばいいの? + +|usr_29.txt| プログラム内の移動 + |29.1| タグの利用 + |29.2| プレビューウィンドウ + |29.3| プログラム内の移動コマンド + |29.4| グローバルな識別子の検索 + |29.5| ローカルな識別子の検索 + +|usr_30.txt| プログラムの編集 + |30.1| コンパイル + |30.2| Cのファイルの段付け(インデント) + |30.3| 自動段付け(インデント) + |30.4| その他の段付け(インデント) + |30.5| タブと空白 + |30.6| コメントの整形 + +|usr_31.txt| GUIの活用 + |31.1| ファイルブラウザ + |31.2| 確認 + |31.3| メニューのショートカット + |31.4| vimウィンドウ位置と大きさ + |31.5| その他 + +============================================================================== +vimのチューニング ~ + +vimをあなたの思い通りに動くようにしましょう。 + +|usr_40.txt| 新しいコマンドを作る + |40.1| キーマッピング + |40.2| コマンドラインのコマンドを定義する。 + |40.3| 自動コマンド + +|usr_41.txt| vimスクリプトの作り方 + |41.1| はじめに + |41.2| 変数 + |41.3| 式 + |41.4| 条件 + |41.5| 式の実行 + |41.6| 関数を使う + |41.7| 関数を定義する + |41.8| 例外 + |41.9| いろんな注釈 + |41.10| プラグインを書く + |41.11| ファイルタイププラグインを書く + |41.12| コンパイラプラグインを書く + +|usr_42.txt| 新しいメニューの追加 + |42.1| はじめに + |42.2| メニューコマンド + |42.3| その他いろいろ + |42.4| ツールバーとポップアップメニュー + +|usr_43.txt| ファイルタイプを使う + |43.1| ファイルタイプ用のプラグイン + |43.2| ファイルタイプの追加 + +|usr_44.txt| 文法定義の自作 + |44.1| 基本的な文法(syntax)コマンド + |44.2| キーワード + |44.3| 照合(matching) + |44.4| 範囲 + |44.5| 多重化(入れ子になった)項目 + |44.6| グループ指定?(Following groups) + |44.7| その他のパラメタ + |44.8| クラスタ + |44.9| 他の文法定義ファイルを取り込む + |44.10| 同期 + |44.11| 文法のインストール + |44.12| 可搬性の高い文法の配置 + +|usr_45.txt| 言語を選ぶ + |45.1| メッセージ用の言語 + |45.2| メニュー用の言語 + |45.3| 他のエンコード方法の利用 + |45.4| 違ったエンコードを用いてのファイル編集 + |45.5| 各国語の文字入力 + +============================================================================== +vimが動くようにする ~ + +vimを使う前に読みましょう。 + +|usr_90.txt| vimをインストールする + |90.1| Unix + |90.2| MS-Windows + |90.3| アップグレード + |90.4| インストールの共通事項 + |90.5| vimのアンインストール + +============================================================================== + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: From f72a29f94b78710175b1e99c660bdacf45909e61 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 30 Jan 2005 09:19:34 +0000 Subject: [PATCH 018/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@18 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/intro.jax | 371 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 261 insertions(+), 110 deletions(-) diff --git a/ja/intro.jax b/ja/intro.jax index c15cbcc4e..6f121ca84 100644 --- a/ja/intro.jax +++ b/ja/intro.jax @@ -1,9 +1,9 @@ COMMENT: Vimの紹介 STATUS: finished 5.7a TRANSLATOR: 北条耀 -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: mm -*intro.txt* For Vim version 5.7a. Last change: 2000 Jan 10 +*intro.txt* For Vim version 6.3. Last change: 2004 May 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -18,6 +18,7 @@ Vimへのイントロダクション *ref* *reference* 5. モードの入門 |vim-modes-intro| 6. モードの切り替え |mode-switching| 7. ウィンドウの表示内容 |window-contents| +8. 用語の定義 |definitions| ============================================================================== 1. イントロダクション *intro* @@ -25,14 +26,13 @@ Vimへのイントロダクション *ref* *reference* Vim の名はVi IMprovedから来ています。それはかつてはVi IMitationであったもので すが、とてもたくさんの改良点があることを考えれば、名称の変更は適切でしょう。 VimはUNIXのプログラム"Vi"のほとんどのコマンドを含み、さらに多くのコマンドをサ -ポートするテキストエディタです。Vimはプログラムの編集やその他の8ビットアスキー -コードによるテキストの編集にたいへん役立ちます。全てのコマンドはキーボードから -与えることができます。このことによって、あなたは指をキーボードから、視点をスク -リーンから離さずにいることができます。ただ、もし望むのなら、マウスをサポートし -ますし、スクロールバーとメニューを持つGUIをサポートするバージョンもあります。 -(|gui.txt|を参照) - -このマニュアルの要約は"help.txt"にあります。|help.txt| Vimからは、<Help>か<F1> +ポートするテキストエディタです。Vimはプログラムの編集やその他のプレインテキス +トの編集にたいへん役立ちます。全てのコマンドはキーボードから与えることができま +す。このことによって、あなたは指をキーボードから、視点をスクリーンから離さずに +いることができます。ただ、もし望むのなら、マウスをサポートしますし、スクロール +バーとメニューを持つGUIをサポートするバージョンもあります。(|gui.txt|を参照) + +このマニュアルの概要は"help.txt"にあります。|help.txt| Vimからは、<Help>か<F1> キー、あるいは|:help|コマンドからアクセスできます(バーも引用符もなしで、単に :helpと打つだけです)。ヘルプがデフォルトの位置に無い場合には、ヘルプファイルの 名前には、'helpfile'オプションが設定できます。タグによって項目にジャンプするこ @@ -50,34 +50,59 @@ CTRL-Tを打ちます。 このマニュアルは全てのVimのコマンドとオプションのリファレンスです。ViやVimの使 い方に関するイントロダクションではありません(それを入れるとあちこちで説明が込 -み入ってしまうので)。初心者のためには、実習|tutor|があります。好みに合わせて設 -定したり、Vimスクリプトを書くときには|vimrc-intro|を参照して下さい。 +み入ってしまうので)。初心者のためには、実習|tutor|があります。Vimの使い方を身 +につけるにはユーザーマニュアル|usr_toc.txt|を読んでください。 + + *book* +初心者向けの内容を含んだViの本はたくさん出ています。私が推薦できる本は2つあり +ます: + + "Vim - Vi Improved" by Steve Oualline + +訳注: 日本語版は +訳注: ViIMproved‐Vim完全バイブル , 高橋 則利 (翻訳) +訳注: 技術評論社 ; ISBN: 4774120189 + +これは完全にVimを取り扱った一番最初の本です。初心者にとてもよい本です。最もよ +く使われるコマンドが図と例を使って説明されています。それほど使われないコマンド +も説明され、さらに高度な機能は要約されています。総括的な索引とクイックリファレ +ンスがついています。この本の一部はユーザーマニュアルに含まれてます。|frombook| +Published by New Riders Publishing. ISBN: 0735710015 +より詳しい情報については、ここを見てみてください。 + http://iccf-holland.org/click5.html + http://www.vim.org/iccf/click5.html -初心者のための内容を含んだViの本はたくさん出ています。"Learning the Vi editer" -(Linda Lamb、Arnold Robbins著、オライリー刊)がお薦めです。第6判にはVimに関する -章があります。ISBN:1-56592-426-6。他にドイツ語版があります。 + "Learning the Vi editor" by Linda Lamb and Arnold Robbins + +訳注: 日本語版は +訳注: 入門vi 第6版 , 福崎 俊博 (翻訳) +訳注: オライリー・ジャパン ; ISBN: 4873110831 + +これはViについての本で、(第6版では)Vimの章が入っています。Viの第一歩がとてもよ +く説明されています。Vimで付け加えられたコマンドは単に簡単に言及されているだけ +です。ドイツ語の翻訳もあります。 +Published by O'Reilly. ISBN: 1-56592-426-6. ============================================================================== 2. インターネット上でのVim *internet* - *www* *faq* *FAQ* *ftp* *distribution* *download* + *www* *faq* *FAQ* *distribution* *download* VimのページにはVimについての最新情報が載っています。最新バージョンのVimへのリ ンクもあります。FAQはよく尋ねられる質問に対する回答集です。問題があったらまず これを読むとよいでしょう。 - VIMホームページ : http://www.vim.org/ - 最新ニュース : http://www.vim.org/news.html - VIM FAQ : http://www.vim.org/faq/ - ダウンロード : ftp://ftp.vim.org/pub/vim/MIRRORS + VIMホームページ: http://www.vim.org/ + VIM FAQ: http://vimdoc.sf.net/ + ダウンロード: ftp://ftp.vim.org/pub/vim/MIRRORS Usenet のVimに関する討論は: *news* *usenet* comp.editors -http://www.vim.org/usenet.html を参照。このグループは、他のエディタのための物 -でもあります。Vim について書く場合は、その旨明記するのを忘れないでください。 +このグループは、他のエディタのための物でもあります。Vim について書く場合は、そ +の旨明記するのを忘れないでください。 *mail-list* *maillist* -Vimには5つのメーリングリストがあります。 +Vimのメーリングリストがいくつかあります: <vim@vim.org> 現行バージョンのVimの使い方に関する議論: 使いやすいマッピング、質問、 回答、特定のバージョンはどこで手に入るかなど。 @@ -92,7 +117,7 @@ Vimには5つのメーリングリストがあります。 <vim-mac@vim.org> *vim-mac* Vimのマッキントッシュバージョンの使用、改良に関する議論。 -http://www.vim.org/mail.html を参照。 +最新の情報はhttp://www.vim.org/maillist.phpを参照。 注意: - メーリングリストに投稿するにはそのリストに記名する必要があります! @@ -110,14 +135,11 @@ http://www.vim.org/mail.html を参照。 す。そのやり方はvim-helpに指示があります。 アーカイブの場所: *maillist-archive* -http://www.egroups.com/group/vim -http://www.egroups.com/group/vimdev -http://www.egroups.com/group/vimannounce -http://www.egroups.com/group/vim-multibyte -http://www.egroups.com/group/vim-mac - -別のアーカイブが http://www.somelist.com の "Editeurs" セクションにあります(フ -ランス語のサイトです。メッセージは英語です)。 +http://groups.yahoo.com/group/vim +http://groups.yahoo.com/group/vimdev +http://groups.yahoo.com/group/vimannounce +http://groups.yahoo.com/group/vim-multibyte +http://groups.yahoo.com/group/vim-mac メーリングリストの追加: @@ -125,41 +147,43 @@ http://www.egroups.com/group/vim-mac Vimのフランス語のメーリングリスト。記名は、 <vim-fr-subscribe@club.voila.fr> にメールを送ってください。 - または http://www.egroups.com/group/vim-fr を参照して下さい。 + またはhttp://groups.yahoo.com/group/vim-frを参照してください。 バグレポート: *bugs* *bug-reports* *bugreport.vim* - Bram Moolenaar <Bram@vim.org> + +バグレポートはVim bugs <bugs@vim.org>に送ってください。 +これはメーリングリストではなく、メッセージはVim管理者に転送されます。 簡潔にお願いします; メールに回答する時間は、その分Vimを改良する時間を減らしま す! 再現可能な例をつけて、どこの設定が(あるいは機能が)バグの発生に影響している かを見つけてみてください。できることなら違うマシンでも試してみて下さい。そして、 もし可能ならパッチを私に送って下さい。 (本家へのリポートは英語でお願いします。) -バグの疑いがあるときは、次のコマンドを使って下さい: -> :so $VIMRUNTIME/bugreport.vim +バグの疑いがあるときは、次のコマンドを使って下さい: > + :so $VIMRUNTIME/bugreport.vim このコマンドはカレントディレクトリにあなたの環境に関する多くの情報を持った "bugreport.txt"というファイルを作ります。このファイルを送る前に、そこにいかな る秘密の情報も含まれていないことを確認してください! - *debug* + *debug-vim* Vimがテストファイルの内のひとつでクラッシュしたとき、もしあなたがコンパイルに gccを用いているなら、Vimがどこでクラッシュしたかを完全に調べることができます: 1. Vimを"-g"オプションでコンパイル(Makefileにこのための行があるので、コメント - アウトしてください)。 + 記号をとり除いてください)。 -2. 次のコマンドを実行 ("11"を失敗したテストファイルを置き換えて): -> cd testdir -> gdb ../vim -> run -u vimrc.unix -U NONE -s dotest.in test11.in +2. 次のコマンドを実行 ("11"を失敗したテストファイルを置き換えて): > + cd testdir + gdb ../vim + run -u unix.vim -U NONE -s dotest.in test11.in 3. Vimがどこでクラッシュしたか確認。gdbがメッセージを出すでしょう。 -4. 次のコマンド実行して、gdbでスタックトレースを得る: -> where - 違う場所のスタックとレースは次のようにしてチェックできる: -> frame 3 - "3"はスタックトレースの内の番号と置き換えて下さい。 +4. 次のコマンド実行して、gdbでスタックトレースを得る: > + where +< 違う場所のスタックトレースは次のようにしてチェックできる: > + frame 3 +< "3"はスタックトレースの内の番号と置き換えて下さい。 *year-2000* *Y2K* Vimは内部的に編集に日付を使っていませんので、2000年問題はありません。Vimは @@ -197,50 +221,59 @@ Vimの良い点、悪い点に関するフィードバックをしてくれま これらの人々の協力なくして、Vimは現在の姿にはならなかったことでしょう! Ron Aaron Win32 GUIに関する変更 - Dany St-Amant Macintosh 移植 + Zoltan Arpadffy VMS移植の作業 Tony Andrews Stevie Gert van Antwerpen MS-DOS上のDJGPPに関する変更 Berkeley DB(3) スワップファイルの実装に関するアイディア Keith Bostic Nvi + Walter Briscoe Makefileの更新、様々なパッチ Ralf Brown MS-DOS用のSPAWNOライブラリ Robert Colon 多くの役立つアドバイス Marcin Dalecki GTK+ GUIへの移植、ツールバーのアイコン + gettext() Kayhan Demirel ウガンダのニュースを送ってくれた Chris & John Downey xvi (マルチウィンドウバージョンのアイディア) Henk Elbers 最初のVMSへの移植 Eric Fischer Macへの移植、'cindent'、その他の改良 + Benji Fisher たくさんのユーザの質問に答えてくれた Bill Foster Athena GUIへの移植 Loic Grenie xvim (マルチウィンドウバージョンのアイディア) - Sven Guckes Vim WWWページの管理 + Sven Guckes Vimのプロモーター、 以前のWWWページ管理者 Darren Hiebert Exuberant ctags Bruce Hunsaker VMSへの移植版の改良 Andy Kahn Cscopeサポート、GTK+ GUIへの移植 + Oezguer Kesim Vimメーリングリストの管理者 + Axel Kielhorn Macintosh移植の仕事 Steve Kirkendall Elvis Roger Knobbe オリジナルのWindows NTへの移植 Sergey Laskavy モスクワからのVimのヘルプ Felix von Leitner Vimメーリングリストの管理 David Leonard UnixへのPython拡張の移植 Avner Lottem ウィンドウでの右から左への編集 - Flemming Madsen さまざまな機能とパッチ + Flemming Madsen X11 client-server, 様々な機能とパッチ MicroSoft VimをコンパイルするDevStudioの提供 - Paul Moore Pythonインターフェイス拡張 + Paul Moore Pythonインターフェイス拡張、たくさんのパッチ Katsuhito Nagano マルチバイトバージョンに関する作業 Sung-Hyun Nam マルチバイトバージョンに関する作業 Vince Negri Win32 GUIと一般的なコンソールの拡張 + Steve Oualline 最初のVimの本の著者|frombook| George V. Reilly Win32移植、Win32 GUIへの移植を始める Stephen Riehm バグ収集家 Stefan Roemer さまざまなパッチとユーザへのヘルプ + Ralf Schandl IBM OS/390への移植 Olaf Seibert DICEとBeBoxバージョン、regexpの改良 Mortaza Shiran Farsiのパッチ Peter da Silva termlib Paul Slootman OS/2への移植 Henry Spencer 正規表現に関して + Dany St-Amant Macintoshへの移植 Tim Thompson Stevie G. R. (Fred) Walter Stevie Sven Verdoolaege Perlインターフェイス Robert Webb コマンドライン補完、GUIバージョン、そして 多くのパッチ Ingo Wilken Tclインターフェイス + Mike Williams PostScriptの印刷 Juergen Weigert Latticeバージョン、AUXの改良、UNIXとMS-DOSへ の移植、autoconf Stefan 'Sec' Zehl vim.orgの管理 @@ -256,7 +289,7 @@ Vi "オリジナル"。特に注意しなければSun OS 4.xのバージョン ":version"は"Version 3.7, 6/7/85"を返す。時として別のバージョンにも触 れることがある。Unix上でのみ動く。ソースコードはライセンスによってのみ 利用可能。Viについての更なる情報は、以下の場所から得られる: - http://www.vim.org + http://vi-editor.org [現在機能していないようですが...] *Posix* Posix IEEE standard 1003.2, Part 2: Shell and utilitiesより。 一般に"Posix"として知られる。これは、Viはどのように機能すべきかという @@ -264,12 +297,15 @@ Posix IEEE standard 1003.2, Part 2: Shell and utilitiesより。 注意はこれに"従うことが期待される"。別にどこを変更しても構わないのだ が... *Nvi* -Nvi "New" Vi。バージョンはBSD 4.4のものと、多くのフリーUnixのもの。使われ - ているのはバージョン1.79。":version"は"Version 1.79 (10/23/96)"を返す。 +Nvi "New" Vi。バージョンはBSD 4.4のものと、FreeBSDのもの。オリジナルのViと + 高い互換性を持ち、少々の拡張がされている。使われているのはバージョン + 1.79。":version"は"Version 1.79 (10/23/96)"を返す。バージョン1.81の開 + 発があるが、ここ数年リリースされていない。 ソースコードはフリーで使用できる。 *Elvis* -Elvis 別のViクローン、Steve Kirkendallの手による。使われているのはバージョン - 2.1で、これは最新の公式リリース。ソースコードはフリーに使用できる。 +Elvis 別のViクローン、Steve Kirkendallの手による。とてもコンパクトだが、Vim + ほどフレキシブルではない。使われているのはバージョン2.1。まだ開発が続 + いている。ソースコードはフリーに使用できる。 ============================================================================== 4. 表記法 *notation* @@ -278,9 +314,13 @@ Elvis 別のViクローン、Steve Kirkendallの手による。使われてい れたテキストは、特別なグループとしてハイライトされます。それらは[]、{}、<>、 CTRL-Xで囲まれた項目です。 +Vimは可能な文字すべてをコマンドに使うということに注意。[], {}, <> を実際にタイ +プする場合もある。これは文脈によって判断できる。 + + [] 角括弧で囲まれた文字は省略可能。 - *count* *[count]* + *count* *[count]* *E489* [count] コマンドの前に置いて、そのコマンドを繰り返させたり、反復させる ための省略可能な数字。与えられなかった場合、特に注意が無ければ 1が与えられたものとする。このマニュアルでは、[count]はコマンド @@ -293,11 +333,11 @@ CTRL-Xで囲まれた項目です。 *[quotex]* ["x] テキストを保管できる場所を指す任意のレジスタ。|registers|を参 照。xは'a'から'z'、'A'から'Z'、または'"'、場合によっては(put - コマンドで使うとき)、'0'から'9'、'%'、'#'、':'、または'.'の内 - の1文字。大文字と小文字は同じレジスタを指すが、小文字が以前の - レジスタの内容を上書きするのに対し、大文字は以前のレジスタの内 - 容に追加する。""x"なしの場合、あるいは""""とした場合には、テキ - ストは名前なしのレジスタに入れられる。 + コマンドで使うとき)、'0'から'9'、'%'、'#'、その他。 + 大文字と小文字は同じレジスタを指すが、小文字が以前のレジスタの + 内容を上書きするのに対し、大文字は以前のレジスタの内容に追加す + る。""x"なしの場合、あるいは""""とした場合には、テキストは名前 + なしのレジスタに入れられる。 *{}* {} 中括弧は入力されるべきコマンドの部分を示すが、違った値も取るこ @@ -313,16 +353,29 @@ CTRL-Xで囲まれた項目です。 {motion} カーソル移動コマンド。これらは、|motion.txt| で説明されていま す。例: w 次の単語の最初に移動 + b 現在の単語の最初へ 4j 4行下に移動 /The<CR> つぎの "The" が、ある場所に移動 これは演算コマンド|operator|の後で、演算を受けるテキストを選択 するため使われる。 - 移動コマンドがカウントを含み、演算コマンドもカウントを含むとき - は、2つのカウントが掛け合わされる。例えば: "2d3w"は6単語を削除 - する。移動はマウスのクリックでもできる。マウスは今のところMS-D - OS、Win32、GPM付きLinuxコンソール、Unix上のxtermでのみサポート - されている。":omap"コマンドは、演算子が未解決のときキャラクタ - をマップするために使うことができる。 + - 移動コマンドがカウントを含み、演算コマンドもカウントを含むと + きは、2つのカウントが掛け合わされる。例えば: "2d3w"は6単語を + 削除する。 + - 移動はバックもできる。例: "db" は単語の最初までを削除する。 + - 移動はマウスのクリックでもできる。ただしマウスは全てのターミ + ナルでサポートされているわけではない。 + - ":omap"コマンドは、演算子が未解決のときキャラクタをマップす + るために使うことができる。 + - カーソル移動にExコマンドを使うことが出来る。これは複雑な移動 + をする関数を呼ぶことに使える。どんな":"コマンドが使われたか + によらず、移動は常に文字指向で排他的である。これは、改行なし + で行の最後の文字を含めることが不可能であることを意味する + ('virtualedit'をセットしていない限り)。 + 演算コマンドが始まる場所より前にあるテキストをExコマンドが変 + 更したり、他のバッファに移動した場合、結果は予測できない。 + それより下にあるテキストを変更することは可能である。カレント + バッファがアンロードされていなければ他のバッファにジャンプす + ることは可能である。 *{Visual}* {Visual} 選択されたテキストの範囲。"v"、"V"、またはCTRL-Vコマンドで始ま @@ -353,7 +406,8 @@ CTRL-{char} コントロールキャラクタとして打ち込まれた{char}; *key-notation* *key-codes* *keycodes* このドキュメントで使われているキーに対する名前。これらは":map"コマンドにおい -ても使われる。 +ても使われる(キーの名前を挿入するには、CTRL-Kを押し、続いて名前を入れたいキー +を押す)。 表記 意味 等価表現 10進値 値 ~ ----------------------------------------------------------------------- @@ -364,6 +418,7 @@ CTRL-{char} コントロールキャラクタとして打ち込まれた{char}; <NL> 復帰 CTRL-J 10 (<Nul>に使用) <FF> フォームフィード CTRL-L 12 *formfeed* <CR> 改行 CTRL-M 13 *carriage-return* +<Return> <CR>と同じ *<Return>* <Enter> <CR>と同じ *<Enter>* <Esc> エスケープ CTRL-[ 27 *escape* *<Esc>* <Space> スペース 32 *space* @@ -371,6 +426,8 @@ CTRL-{char} コントロールキャラクタとして打ち込まれた{char}; <Bslash> バックスラッシュ \ 92 *backslash* *<Bslash>* <Bar> 垂直バー | 124 *<Bar>* <Del> 削除 127 +<CSI> コマンドの開始バイト ALT-Esc 155 *<CSI>* +<xCSI> GUIにおけるCSI *<xCSI>* <EOL> 行の終端 (<CR>、<LF>、または<CR><LF>であり得る。 システムと'fileformat'による) *<EOL>* @@ -403,10 +460,14 @@ CTRL-{char} コントロールキャラクタとして打ち込まれた{char}; <kMinus> テンキーの- *keypad-minus* <kMultiply> テンキーの * *keypad-multiply* <kDivide> テンキーの / *keypad-divide* -<kEnter> テンキーの Enter *keypad-enter* -<S-...> シフトキー *shift* -<C-...> コントロールキー *control* *ctrl* -<M-...> altまたはmetaキー *meta* *alt* +<kEnter> テンキーのEnter *keypad-enter* +<kPoint> テンキーのピリオド *keypad-point* +<k0> - <k9> テンキーの0から9 *keypad-0* *keypad-9* +<S-...> シフトキー *shift* *<S-* +<C-...> コントロールキー *control* *ctrl* *<C-* +<M-...> altまたはmetaキー *meta* *alt* *<M-* +<A-...> <M-...>と同じ *<A-* +<D-...> コマンドキー (Macintosh のみ) *<D-* <t_xx> termcapで"xx"エントリを持つキー ----------------------------------------------------------------------- @@ -446,18 +507,18 @@ CTRL-{char} コントロールキャラクタとして打ち込まれた{char}; <t_kd> "kd" termcapエントリ(下カーソルキー) もしVimで完全に<>の表記を使いたければ、'cpoptions'から'<'フラグを除く必要があ -ります('compatible'がセットされていない場合、デフォルトでそうなっています)。 -> :set cpo-=< +ります('compatible'がセットされていない場合、デフォルトでそうなっています)。 > + :set cpo-=< <>の表記には、キー名の特別な意味を避けるため<lt>を使います。バックスラッシュ を使った方法も機能しますが、'cpoptions'が'B'フラグを含んでいないときだけです。 -マッピングにおいて<Home>を文字通り使う場合の例です: -> :imap <C-H> \<Home> -> :imap <C-H> <lt>Home> +CTRL-Hを"<Home>"の6文字にマッピングする例: > + :imap <C-H> \<Home> + :imap <C-H> <lt>Home> 最初のものは'B'フラグが'cpoptions'に含まれていない場合のみ機能します。2番目の ものは常に機能します。 -マッピングにおいて"<lt>"を文字通り得るためには: -> :map <C-L> <lt>lt> +マッピングにおいて"<lt>"を文字通り得るためには: > + :map <C-L> <lt>lt> マッピング、略語補完、メニューコマンドについては、例をコピー&ペーストして、そ のまま使うことができます。あるいは、'<'と'>'のキャラクタを含んでいたとしても、 @@ -501,7 +562,7 @@ Exモード コマンド行モードに似ているが、コマンド入力後 ドに留まる。コマンドラインでの、非常に制限された編集 作業となる。|Ex-mode|を参照。 -さらに追加として5つのモードがある: +さらに追加として5つのモードがある。これらは基本モードの変種である。 *Operator-pending* *Operator-pending-mode* 演算子未解決モード ノーマルモードに似ているが、演算子コマンドが開始され、 @@ -522,22 +583,28 @@ Exモード コマンド行モードに似ているが、コマンド入力後 ウィンドウの最下部に表示される。 挿入ビジュアルモード 挿入モードでビジュアル選択を開始したとき、このモード - に入る。ビジュアル選択が終了したとき、Vimは挿入モード - に戻る。 + に入る。例えばCTRL-Oを使い, その後"v", "V", CTRL-Vを使 + ったとき。ビジュアル選択が終了したとき、Vimは挿入モー + ドに戻る。 'showmode'オプションがONになら、"-- (insert) VISUAL --" がウィンドウの最下部に表示される。 挿入選択モード 挿入モードで選択モードを開始したとき、このモードに入る。 + 例: マウスをドラッグするか、<S-Right>を押したとき。 選択モードが終了すると、Vimは挿入モードに戻る。 'showmode'オプションがONになら、"-- (insert) SELECT --" がウィンドウの最下部に表示される。 + ============================================================================== 6. モードの切り替え *mode-switching* 何らかの理由で自分が何のモードにいるのかわからなくなったとき、<Esc>を2度押す -ことで常にノーマルモードに戻ることができます。ノーマルモードに戻ったことを、 -<Esc>を押したときのスクリーンフラッシュ、またはベルの音で知ることができます。 -ただしExモードでは機能しませんので、":visual"を使ってください。 +ことで常にノーマルモードに戻ることができます。ただしExモードでは機能しませんの +で、":visual"を使ってください。 +ノーマルモードに戻ったことを、<Esc>を押したときのスクリーンフラッシュ、または +ベルの音で知ることができます。ただ、インサートモードでCTRL-Oの後に<Esc>を押す +とビープ音が鳴るだけでインサートモードのままなので、もう一度<Esc>を押してくだ +さい。 *i_esc* TO mode ~ @@ -545,7 +612,7 @@ Exモード コマンド行モードに似ているが、コマンド入力後 FROM mode ~ ノーマル v V ^V *4 *1 R : / ? ! Q ビジュアル *2 ^G c C -- : -- -選択 *5 ^O ^G *6 -- : -- +選択 *5 ^O ^G *6 -- -- -- 挿入 <Esc> -- -- <Insert> -- -- 置換 <Esc> -- -- <Insert> -- -- コマンド行 *3 -- -- :start -- -- @@ -575,6 +642,7 @@ Ex :vi -- -- -- -- -- - シフトキーを押しながら非表示コマンドでカーソルを移動させる、このとき 'selectmode'は"key"を含んでいる必要がある。 - 'selectmode'が"cmd"を含んでいるなら、"v"、"V"または"CTRL-V"を使う。 + - "gh"、"gH"または"g CTRL-H"を使う。|g_CTRL-H| *5 選択モードからノーマルモードに移行するには、シフトキーを押さずに非表示コマ ンドでカーソルを動かせばよい。 *6 選択モードから挿入モードへ移行するには、表示される文字を打てばよい。選択範 @@ -585,10 +653,18 @@ Ex :vi -- -- -- -- -- *CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N* 付け加えて、コマンドCTRL-\ CTRL-N、あるいは<C-\><C-N>は、他のあらゆるモードか らノーマルモードへ移行する。これでVimがノーマルモードであることを、<Esc>のとき -のようにビープ音を出さずに確認することができる。 - - - *Q* *mode-Ex* *Ex-mode* *Ex* *EX* +のようにビープ音を出さずに確認することができる。しかし、これはExモードでは機能 +しない。|f|や|m|のように引数をとるコマンドの後で使われたとき、'ttimeoutlen'で +設定されたタイムアウトが適用される。 + + *CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G* +'insertmode'がセットされているなら、CTRL-\ CTRL-G や <C-\><C-G> でインサートモ +ードに入ることが出来る。セットされていなければノーマルモードに入る。これは現在 +どのモードにいるのかに関わらず、'insertmode'で指示されたモードに入るのに使える +。 + +ここまで + *Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501* Q "Ex"モードに切り替える。これは":"コマンドを一つ一つ打 ち込むようなものである。ただし: - ":"を押したままでいる必要がない。 @@ -602,7 +678,16 @@ Q "Ex"モードに切り替える。これは":"コマンドを一つ一つ打 ドに入る。 "Ex"モードを出るには、":vi"コマンド|:visual|を使う。 注意: 古い Version の Vim では "Q" がテキストを整形す - るコマンドでしたが、いまは |gq| になっています。 + るコマンドでしたが、いまは |gq| になっています。ただし + |vimrc_example.vim|スクリプトを使っているなら"Q"が"gq" + と同じ動作をします。 + + *gQ* +gQ "Ex"モードに切り替えます。これは":"コマンドを一つ一つ + 打ち込むのと同じに振る舞います。全てのコマンドライン編 + 集、補完などが利用可能です。 + "Ex"モードを抜けるには":vi"コマンド|:visual|を使ってく + ださい。{Vi にはない} ============================================================================== 7. ウィンドウ表示の内容 *window-contents* @@ -620,33 +705,39 @@ Q "Ex"モードに切り替える。これは":"コマンドを一つ一つ打 されます。'linebreak'オプションを設定すると、空白文字で折り返すことができます。 ウィンドウ内でバッファの最終行より後ろに余白がある場合、Vimはウィンドウ内の余白 -行の始めに、以下のように'~'を表示します: +行の始めに、以下のように'~'を表示します: > -> some line -> last line -> ~ -> ~ + +-----------------------+ + |some line | + |last line | + |~ | + |~ | + +-----------------------+ このように、'~'はバッファの最後に到達したことを示します。 ウィンドウの最終行が入りきらない場合、Vimはそのウィンドウの最終行に、次のように -'@'を表示してそれを示します: +'@'を表示してそれを示します: > -> first line -> second line -> @ -> @ + +-----------------------+ + |first line | + |second line | + |@ | + |@ | + +-----------------------+ このように、'@'はウィンドウに収まりきらない行があることを知らせます。 'display'オプションに"lastline"フラグが存在する場合、'@'はウィンドウの左側に 表示されません。最終行がウィンドウ内に完全に収まらない場合は、収まる部分のみが -表示され、最後の3文字が次のように"@@@"で置き換えられます: +表示され、最後の3文字が次のように"@@@"で置き換えられます: > -> first line -> second line -> a very long line that d -> oesn't fit in the wi@@@ + +-----------------------+ + |first line | + |second line | + |a very long line that d| + |oesn't fit in the wi@@@| + +-----------------------+ 長すぎてウィンドウに収まりきらない単一の行があるときは、特別な場合として扱わ れます。Vimはカーソルのある場所付近の部分のみを表示します。特殊文字は表示され @@ -678,7 +769,7 @@ Q "Ex"モードに切り替える。これは":"コマンドを一つ一つ打 'number'オプションをセットしているとき、全ての行はその行番号を先頭に持ちます。 Tip: 行番号を混ぜた行の折り返しをしたくないときは、'showbreak'オプションに8つ -のスペースをセットします: +のスペースをセットします: > ":set showbreak=\ \ \ \ \ \ \ \ " 'list'オプションをセットしているとき、<Tab>文字はいくつかのスペースとしてでは @@ -700,8 +791,8 @@ status message option default Unix default ~ を参照。コマンドの文字とは、打ち込まれた、まだ適用されていないコマンドのこと です。{Vi: 打ち込んだ文字やカーソルの位置を表しません} -遅い端末を使用しているのであれば、ステータスメッセージのをオフにすることで編 -集のスピードをアップすることができます: +遅い端末を使用しているのであれば、ステータスメッセージをオフにすることで編集の +スピードをアップすることができます: > :set nosc noru nosm エラーが起こったとき、エラーメッセージは少なくとも一秒間は表示されます(逆再生 @@ -719,4 +810,64 @@ Amiga上では、VimはCLIウィンドウで実行されます。Vimの名前と ほとんどのUNIXシステム上で、ウィンドウのリサイズはVimによって正しく認識、把握さ れます。{Vi: できません} +============================================================================== +8. 用語の定義 *definitions* + + スクリーン Vimが使う領域全体。ターミナルエミュレータウィンドウの + ときもある。"Vimウィンドウ"とも呼ばれる。 + ウィンドウ バッファを表示したもの + +1つのスクリーンは一つかそれ以上のウィンドウを含み、それらはステータスラインと +一番下のコマンドラインで区切られる。 + + +-------------------------------+ +screen | window 1 | window 2 | + | | | + | | | + |= status line =|= status line =| + | window 3 | + | | + | | + |==== status line ==============| + |command line | + +-------------------------------+ + +コマンドラインはメッセージを表示するのにも使われる。コマンドラインに十分な領域 +がない場合はスクリーンがスクロールする。 + +4つの行のタイプには次の違いがある: + + バッファ行 バッファ内の行。これはファイルに読み書きされる行と同じ。 + 数千の長さの文字であってもよい。 + 論理行 折り畳みが適用されたバッファ行。閉じた折り畳みに含まれ + るバッファ行は論理行1行となる:"+-- 99 lines folded"。 + 数千の長さの文字であってもよい。 + ウィンドウ行 ウィンドウ内で表示される行: 折り返し、ラインブレイクな + どが適用された後の論理行の一部。これらの長さはウィンド + ウの幅以下になる。それ以上長い行は折り返されるか切り詰 + められる。 + スクリーン行 Vimが使うスクリーンの行。全てのウィンドウ内のウィンドウ + 行とステータスライン、コマンドラインからなる。これらの + 長さはスクリーンの幅以下になる。コマンドラインがそれ以 + 上長くなったときは折り返して表示され、空スペースをつく + るために行がスクロールされる。 + +バッファ行 論理行 ウィンドウ行 スクリーン行 ~ + +1. one 1. one 1. +-- folded 1. +-- folded +2. two 2. +-- folded 2. five 2. five +3. three 3. five 3. six 3. six +4. four 4. six 4. seven 4. seven +5. five 5. seven 5. === status line === +6. six 6. aaa +7. seven 7. bbb + 8. ccc ccc c +1. aaa 1. aaa 1. aaa 9. cc +2. bbb 2. bbb 2. bbb 10. ddd +3. ccc ccc ccc 3. ccc ccc ccc 3. ccc ccc c 11. ~ +4. ddd 4. ddd 4. cc 12. === status line === + 5. ddd 13. (command line) + 6. ~ + +============================================================================== vim:tw=78:ts=8:ft=help:norl: From b9ca66f5e00fd3c7f3f72be1311040be199a2b70 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Mon, 31 Jan 2005 02:49:14 +0000 Subject: [PATCH 019/783] fix: update ja/quickref.jax to 6.3.054 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@19 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/quickref.jax | 674 +++++++++++++++++++++++++----------------------- 1 file changed, 346 insertions(+), 328 deletions(-) diff --git a/ja/quickref.jax b/ja/quickref.jax index 7886b411b..d21fe10a6 100644 --- a/ja/quickref.jax +++ b/ja/quickref.jax @@ -1,8 +1,9 @@ COMMENT: クイックリファレンスガイド -STATUS: finished 6.0 +STATUS: finished 6.3.034 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*quickref.txt* For Vim version 6.0. Last change: 2001 Sep 10 +*quickref.txt* For Vim version 6.3. Last change: 2004 May 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -14,7 +15,6 @@ smz めも:atomを文字と訳した所があるが、ウソになってるか smz 特に正規表現のトコロ。\(....\)でぐるーぷ化したものがatomになるから smz めも:identifierの訳が不明。有意な単語のことかな? smz メモ:ヤンク+プットの組み合せか、コピー+ペーストの組合せか? -smz めも:grコマンドがよくわからない *quickref* *Contents* tag subject tag subject ~ @@ -161,8 +161,8 @@ smz ※ f,F,t,Tで指定する{char}は1文字分の文字だけです。 <CR>に一致 \r \r <BS>に一致 \b \b - 直前に指定したatomと0回以上一致 * \* - 直前に指定したatomと1回以上一致 \+ \+ + 直前に指定したatomと0回以上一致 * \* + 直前に指定したatomと1回以上一致 \+ \+ 直前に指定した文字と0回もしくは1回一致 \+ \+ 直前に指定した文字と2回~5回一致 \{2,5} \{2,5} 2種類の正規表現を列記 \| \| @@ -177,11 +177,9 @@ smz ※ f,F,t,Tで指定する{char}は1文字分の文字だけです。 e[-num] 一致した文字列の最後から [num] 桁左 s[+num] 一致した文字列の先頭から [num] 桁右 s[-num] 一致した文字列の先頭から [num] 桁左 - b[+num] 一致した文字列の先頭(begin)から [num] 桁右 - b[-num] 一致した文字列の先頭(begin)から [num] 桁左 + b[+num] 上の s[+num] の別名 (begin の b) + b[-num] 上の s[-num] の別名 (begin の b) ;{search-command} 次の{search-command}を実行する。 -smz s[num]とb[num]の違いがよくわからない。beginって何??? -smz ;コマンドの意図がよくわからない。??? ------------------------------------------------------------------------------ *Q_ma* Marks and motions @@ -382,10 +380,12 @@ These only work when 'wrap' is off: *Q_ch* 文字列の変更 |r| N r{char} N 文字を{char}に置換 -|gr| N gr{char} N 文字をレイアウトに影響を与えずに置換??? +|gr| N gr{char} N 文字をレイアウトに影響を与えずに置換 +訳注: "あ"を"ra"で置換->"a" +訳注: "あ"を"gra"で置換->"a " |R| N R 置換モードへ (入力文字列を N 回繰り返す) |gR| N gR 仮想置換モードへ。置換モードと同じだが、レイアウト - に影響しない。??? + に影響しない。 |v_b_r| {visual}r{char} ビジュアルブロックモード用: 選択範囲の各文字を{char} で、置換 @@ -613,6 +613,11 @@ smz 号のこと。英語圏では昔から使われている。 |'allowrevins'| |'ari'| 挿入モードとコマンドラインモードで、 CTRL-_ を 使うことを認める。 |'altkeymap'| |'akm'| デフォルトの第2言語(Farsi/ヘブライ) +|'ambiwidth'| |'ambw'| Unicode文字の不明瞭な文字幅を決定する +|'antialias'| |'anti'| Mac OS X: フォントを滑らかに表示する。 +|'autochdir'| |'acd'| 現在編集中のファイルのディレクトリに変更する +|'arabic'| |'arab'| デフォルトでアラビア語を2番目の言語にする +|'arabicshape'| |'arshape'| アラビア文字を整える |'autoindent'| |'ai'| 直前の行から新しい行のインデントを得る |'autoread'| |'ar'| vim以外でファイル変更した時に自動再読み込みする |'autowrite'| |'aw'| 変更があったら、自動的に書き出す @@ -629,278 +634,290 @@ smz 号のこと。英語圏では昔から使われている。 |'ballooneval'| |'beval'| バルーン評価のON/OFF |'binary'| |'bin'| バイナリモードで、読み/書き/編集する |'bioskey'| |'biosk'| MS-DOS専用: 文字入力にbiosコールを使う -|'bomb'| prepend a Byte Order Mark to the file (???) +|'bomb'| ファイルの先頭にBOMを付加する |'breakat'| |'brk'| 改行の理由となる文字(???) |'browsedir'| |'bsdir'| ブラウズを始めるディレクトリ |'bufhidden'| |'bh'| ウィンドウに繋がったバッファがなくなった時の動き |'buflisted'| |'bl'| バッファリストにバッファを表示するかどうか |'buftype'| |'bt'| 特殊なタイプのバッファ +|'casemap'| |'cmp'| 文字の大小の変換方法を決める |'cdpath'| |'cd'| ":cd"コマンドで検索するディレクトリ |'cedit'| コマンドラインウィンドウを開くためのキー -|'charconvert'| |'ccv'| expression for character encoding conversion +|'charconvert'| |'ccv'| 文字コードの変換に使用する式 |'cindent'| |'cin'| C言語用のインデントを行う -|'cinkeys'| |'cink'| 'cindent'が有効な場合のインデントするキー -|'cinoptions'| |'cino'| 'cindent'が有効な場合のインデント方法 -|'cinwords'| |'cinw'| words where 'si' and 'cin' add an indent -|'clipboard'| |'cb'| use the clipboard as the unnamed register -|'cmdheight'| |'ch'| コマンドライン用に使う行数 -|'cmdwinheight'| |'cwh'| コマンドラインウィンドウの高さ(???何が違う?) +|'cinkeys'| |'cink'| 'cindent'が有効な際に押すとインデントするキー +|'cinoptions'| |'cino'| 'cindent'が有効な際のインデント方法 +|'cinwords'| |'cinw'| 'si'、'cin'によるインデントの開始文字 +|'clipboard'| |'cb'| 無名レジスタ操作でクリップボードを使う +|'cmdheight'| |'ch'| コマンドライン用に表示しておく行数 +|'cmdwinheight'| |'cwh'| コマンドライン編集に使う行数 |'columns'| |'co'| 画面上の桁数 -|'comments'| |'com'| コメント行を開始できるパターン +|'comments'| |'com'| コメント行の開始を示すパターン |'commentstring'| |'cms'| コメント用テンプレート(foldマーカ用) |'compatible'| |'cp'| 可能な限りVi互換で動く |'complete'| |'cpt'| 挿入モードでの補完の動きを指定する |'confirm'| |'cf'| 未保存ファイル、リードオンリファイルの確認方法 |'conskey'| |'consk'| コンソールからの直接キー検出(MS-DOSのみ) +|'copyindent'| |'ci'| 'autoindent'がすでにあるインデントを参考にする |'cpoptions'| |'cpo'| vi互換な振る舞いのフラグ集 -|'cscopepathcomp'| |'cspc'| how many components of the path to show -|'cscopeprg'| |'csprg'| cscopeを実行するためのコマンド定義 -|'cscopetag'| |'cst'| cscope for tag commands -|'cscopetagorder'| |'csto'| determines ":cstag" search order -|'cscopeverbose'| |'csverb'| give messages when adding a cscope database -|'debug'| set to "msg" to see all error messages -|'define'| |'def'| pattern to be used to find a macro definition -|'delcombine'| |'deco'| delete combining characters on their own -|'dictionary'| |'dict'| list of file names used for keyword completion -|'diff'| use diff mode for the current window -|'diffexpr'| |'dex'| expression used to obtain a diff file -|'diffopt'| |'dip'| options for using diff mode -|'digraph'| |'dg'| enable the entering of digraphs in Insert mode -|'directory'| |'dir'| list of directory names for the swap file -|'display'| |'dy'| list of flags for how to display text -|'edcompatible'| |'ed'| toggle flags of ":substitute" command -|'eadirection'| |'ead'| in which direction 'equalalways' works -|'encoding'| |'enc'| encoding used internally -|'endofline'| |'eol'| write <EOL> for last line in file -|'equalalways'| |'ea'| windows are automatically made the same size -|'equalprg'| |'ep'| external program to use for "=" command -|'errorbells'| |'eb'| ring the bell for error messages -|'errorfile'| |'ef'| name of the errorfile for the QuickFix mode -|'errorformat'| |'efm'| description of the lines in the error file -|'esckeys'| |'ek'| recognize function keys in Insert mode -|'eventignore'| |'ei'| autocommand events that are ignored -|'expandtab'| |'et'| use spaces when <Tab> is inserted -|'exrc'| |'ex'| read .vimrc and .exrc in the current directory -|'fileencoding'| |'fenc'| file encoding for multi-byte text -|'fileencodings'| |'fencs'| automatically detected character encodings -|'fileformat'| |'ff'| file format used for file I/O -|'fileformats'| |'ffs'| automatically detected values for 'fileformat' -|'filetype'| |'ft'| type of file, used for autocommands -|'fillchars'| |'fcs'| characters to use for displaying special items -|'fkmap'| |'fk'| Farsi keyboard mapping -|'foldclose'| |'fcl'| close a fold when the cursor leaves it -|'foldcolumn'| |'fdc'| width of the column used to indicate folds -|'foldenable'| |'fen'| set to display all folds open -|'foldexpr'| |'fde'| expression used when 'foldmethod' is "expr" -|'foldignore'| |'fdi'| ignore lines when 'foldmethod' is "indent" -|'foldlevel'| |'fdl'| close folds with a level higher than this -|'foldlevelstart'| |'fdls'| 'foldlevel' when startng to edit a file -|'foldmarker'| |'fmr'| markers used when 'foldmethod' is "marker" -|'foldmethod'| |'fdm'| folding type -|'foldminlines'| |'fml'| minimum number of lines for a fold to be closed -|'foldnestmax'| |'fdn'| maximum fold depth -|'foldopen'| |'fdo'| for which commands a fold will be opened -|'foldtext'| |'fdt'| expression used to display for a closed fold -|'formatoptions'| |'fo'| how automatic formatting is to be done -|'formatprg'| |'fp'| name of external program used with "gq" command -|'gdefault'| |'gd'| the ":substitute" flag 'g' is default on -|'grepformat'| |'gfm'| format of 'grepprg' output -|'grepprg'| |'gp'| program to use for ":grep" -|'guicursor'| |'gcr'| GUI: settings for cursor shape and blinking -|'guifont'| |'gfn'| GUI: Name(s) of font(s) to be used -|'guifontset'| |'gfs'| GUI: Names of multi-byte fonts to be used -|'guifontwide'| |'gfw'| list of font names for double-wide characters -|'guiheadroom'| |'ghr'| GUI: pixels room for window decorations -|'guioptions'| |'go'| GUI: Which components and options are used -|'guipty'| GUI: try to use a pseudo-tty for ":!" commands -|'helpfile'| |'hf'| name of this help file -|'helpheight'| |'hh'| minimum height of a new help window -|'hidden'| |'hid'| don't unload buffer when it is |abandon|ed -|'highlight'| |'hl'| sets highlighting mode for various occasions -|'hlsearch'| |'hls'| highlight matches with last search pattern -|'history'| |'hi'| number of command-lines that are remembered -|'hkmap'| |'hk'| Hebrew keyboard mapping -|'hkmapp'| |'hkp'| phonetic Hebrew keyboard mapping -|'icon'| let Vim set the text of the window icon -|'iconstring'| string to use for the Vim icon text -|'ignorecase'| |'ic'| ignore case in search patterns -|'imactivatekey'| |'imak'| key that activates the X input method -|'imcmdline'| |'imc'| use IM when starting to edit a command line -|'iminsert'| |'imi'| use :lmap or IM in Insert mode -|'imsearch'| |'ims'| use :lmap or IM when typing a search pattern -|'include'| |'inc'| pattern to be used to find an include file -|'includeexpr'| |'inex'| expression used to process an include line -|'incsearch'| |'is'| highlight match while typing search pattern -|'indentexpr'| |'inde'| expression used to obtain the indent of a line -|'indentkeys'| |'indk'| keys that trigger indenting with 'indentexpr' -|'infercase'| |'inf'| adjust case of match for keyword completion -|'insertmode'| |'im'| start the edit of a file in Insert mode -|'isfname'| |'isf'| characters included in file names and pathnames -|'isident'| |'isi'| characters included in identifiers -|'iskeyword'| |'isk'| characters included in keywords -|'isprint'| |'isp'| printable characters -|'joinspaces'| |'js'| two spaces after a period with a join command -|'key'| encryption key -|'keymap'| |'kmp'| name of a keyboard mapping -|'keymodel'| |'km'| enable starting/stopping selection with keys -|'keywordprg'| |'kp'| program to use for the "K" command -|'langmap'| |'lmap'| alphabetic characters for other language mode -|'langmenu'| |'lm'| language to be used for the menus -|'laststatus'| |'ls'| tells when last window has status lines -|'lazyredraw'| |'lz'| don't redraw while executing macros -|'linebreak'| |'lbr'| wrap long lines at a blank -|'lines'| number of lines in the display -|'linespace'| |'lsp'| number of pixel lines to use between characters -|'lisp'| automatic indenting for Lisp -|'lispwords'| |'lw'| words that change how lisp indenting works -|'list'| show <Tab> and <EOL> -|'listchars'| |'lcs'| characters for displaying in list mode -|'loadplugins'| |'lpl'| load plugin scripts when starting up -|'magic'| changes special characters in search patterns -|'makeef'| |'mef'| name of the errorfile for ":make" -|'makeprg'| |'mp'| program to use for the ":make" command -|'matchpairs'| |'mps'| pairs of characters that "%" can match -|'matchtime'| |'mat'| tenths of a second to show matching paren -|'maxfuncdepth'| |'mfd'| maximum recursive depth for user functions -|'maxmapdepth'| |'mmd'| maximum recursive depth for mapping -|'maxmem'| |'mm'| maximum memory (in Kbyte) used for one buffer -|'maxmemtot'| |'mmt'| maximum memory (in Kbyte) used for all buffers -|'menuitems'| |'mis'| maximum number of items in a menu -|'modeline'| |'ml'| recognize modelines at start or end of file -|'modelines'| |'mls'| number of lines checked for modelines -|'modifiable'| |'ma'| changes to the text are not possible -|'modified'| |'mod'| buffer has been modified -|'more'| pause listings when the whole screen is filled -|'mouse'| enable the use of mouse clicks -|'mousefocus'| |'mousef'| keyboard focus follows the mouse -|'mousehide'| |'mh'| hide mouse pointer while typing -|'mousemodel'| |'mousem'| changes meaning of mouse buttons -|'mouseshape'| |'mouses'| shape of the mouse pointer in different modes -|'mousetime'| |'mouset'| max time between mouse double-click -|'nrformats'| |'nf'| number formats recognized for CTRL-A command -|'number'| |'nu'| print the line number in front of each line -|'osfiletype'| |'oft'| operating system-specific filetype information -|'paragraphs'| |'para'| nroff macros that separate paragraphs -|'paste'| allow pasting text -|'pastetoggle'| |'pt'| key code that causes 'paste' to toggle -|'patchexpr'| |'pex'| expression used to patch a file +|'cscopepathcomp'| |'cspc'| 表示するファイルパスの深さ +|'cscopeprg'| |'csprg'| cscopeの実行ファイル +|'cscopequickfix'| |'csqf'| cscopeの結果の表示にquickfixウインドウを使う +|'cscopetag'| |'cst'| タグコマンドでcscopeを使う +|'cscopetagorder'| |'csto'| |:cstag|が検索する順番を決める +|'cscopeverbose'| |'csverb'| cscopeデータベースに追加時にメッセージを表示 +|'debug'| "msg"と設定すると全てのエラーが表示される +|'define'| |'def'| マクロ定義検索パターン +|'delcombine'| |'deco'| 合成文字の削除時に構成要素を全て消す +|'dictionary'| |'dict'| キーワード補完に使うファイルのリスト +|'diff'| そのウインドウでdiffモードを使う +|'diffexpr'| |'dex'| 差分取得に使う式 +|'diffopt'| |'dip'| diffモードに使うオプション +|'digraph'| |'dg'| 挿入モードで二重字の入力を有効にする +|'directory'| |'dir'| スワップファイル用のディレクトリのリスト +|'display'| |'dy'| テキストの表示方法を指定する +|'eadirection'| |'ead'| 'equalalways'の適用方向を決める +|'edcompatible'| |'ed'| |:substitute|のフラグを切替える +|'encoding'| |'enc'| 内部で使用する文字コード +|'endofline'| |'eol'| ファイル末尾に<EOL>を書く +|'equalalways'| |'ea'| ウインドウを自動で同じ大きさに調整する +|'equalprg'| |'ep'| |=|で使用する外部プログラム +|'errorbells'| |'eb'| エラー表示時にベルを鳴らす +|'errorfile'| |'ef'| QuickFixモードで使うファイルの名前 +|'errorformat'| |'efm'| エラーファイルの書式の定義 +|'esckeys'| |'ek'| 挿入モードで機能キーを有効にする +|'eventignore'| |'ei'| 無視するオートコマンドのイベント +|'expandtab'| |'et'| <Tab>入力でスペースを入力する +|'exrc'| |'ex'| カレントディレクトリの.vimrcと.exrcを読み込む +|'fileencoding'| |'fenc'| ファイルの文字コード指定 +|'fileencodings'| |'fencs'| 自動認識する'fileencoding'のリスト +|'fileformat'| |'ff'| ファイル入出力時のファイルのフォーマット +|'fileformats'| |'ffs'| 自動認識する'fileformat'のリスト +|'filetype'| |'ft'| オートコマンドで使うファイルタイプ名 +|'fillchars'| |'fcs'| 特殊な表示に使う文字 +|'fkmap'| |'fk'| ペルシア語のキーボードマッピング +|'foldclose'| |'fcl'| カーソル下以外の折畳みを閉じる +|'foldcolumn'| |'fdc'| 折畳みを示すのに使う列幅 +|'foldenable'| |'fen'| 全ての折畳みの開閉を設定する +|'foldexpr'| |'fde'| 'foldmethod'が"expr"の時に使う式 +|'foldignore'| |'fdi'| 'foldmethod'が"indent"の時に無視する行 +|'foldlevel'| |'fdl'| この値より高いレベルの折畳みを閉じる +|'foldlevelstart'| |'fdls'| 'foldlevel'の初期値 +|'foldmarker'| |'fmr'| 'foldmethod'が"marker"の時に使うマーカー +|'foldmethod'| |'fdm'| 折畳みの種類 +|'foldminlines'| |'fml'| 閉じることのできる折畳みの最小行数 +|'foldnestmax'| |'fdn'| 折畳みの深さの制限 +|'foldopen'| |'fdo'| 折畳みを開くことのできるコマンド +|'foldtext'| |'fdt'| 閉じた折畳みの表示に使う式 +|'formatoptions'| |'fo'| 自動整形の動作定義 +|'formatprg'| |'fp'| |gq|で使う外部プログラム +|'gdefault'| |'gd'| |:substitute|で"g"を既定で有効にする +|'grepformat'| |'gfm'| 'grepprg'の出力の書式 +|'grepprg'| |'gp'| |:grep|で使う外部プログラム +|'guicursor'| |'gcr'| GUI: カーソルの形と点滅を設定する +|'guifont'| |'gfn'| GUI: 使用するフォント(複数可) +|'guifontset'| |'gfs'| GUI: マルチバイト用のフォント +|'guifontwide'| |'gfw'| 全角文字用のフォントのリスト +|'guiheadroom'| |'ghr'| GUI: ウインドウ装飾用の余地。ピクセル単位 +|'guioptions'| |'go'| GUI: GUIに特化したオプション +|'guipty'| GUI: |:!|でpseudo-ttyの使用を試みる +|'helpfile'| |'hf'| メインのヘルプファイルのフルパス指定 +|'helpheight'| |'hh'| ヘルプウインドウの最小高さ +|'helplang'| |'hlg'| 優先するヘルプ用の言語 +|'hidden'| |'hid'| バッファが|abandon|(捨て)られても破棄しない +|'highlight'| |'hl'| 様々な対象に対する強調表示モードの設定 +|'hlsearch'| |'hls'| 最後に検索したパターンを強調表示する +|'history'| |'hi'| コマンドライン履歴の記録数 +|'hkmap'| |'hk'| ヘブライ語のキーボードマッピング +|'hkmapp'| |'hkp'| 発音に即したヘブライ語のキーボードマッピング +|'icon'| Vimのアイコン表示でテキストを変更するようにする +|'iconstring'| Vimのアイコン表示に使用するテキスト +|'ignorecase'| |'ic'| 検索パターンで大文字と小文字を区別しない +|'imactivatekey'| |'imak'| X のインプットメソッドを有効にするキー +|'imcmdline'| |'imc'| コマンドライン入力時にIMを有効にする +|'imdisable'| |'imd'| IMを使わない +|'iminsert'| |'imi'| 挿入モードで|:lmap|やIMを使う +|'imsearch'| |'ims'| 検索パターン入力時に|:lmap|やIMを使う +|'include'| |'inc'| インクルードファイルの検索パターン +|'includeexpr'| |'inex'| インクルード行を処理する式 +|'incsearch'| |'is'| 検索パターン入力中にその文字を強調表示する +|'indentexpr'| |'inde'| 行をインデントする式 +|'indentkeys'| |'indk'| 'indentexpr'でインデントを開始するキー +|'infercase'| |'inf'| キーワード補完で大文字小文字を調整する +|'insertmode'| |'im'| 挿入モードで編集を開始する +|'isfname'| |'isf'| ファイル名、パス名に含まれる文字 +|'isident'| |'isi'| 識別子に含まれる文字 +|'iskeyword'| |'isk'| キーワードに含まれる文字 +|'isprint'| |'isp'| 視覚可能な文字 +|'joinspaces'| |'js'| 行連結時にピリオドの後に空白を2つ入れる +|'key'| 暗号鍵 +|'keymap'| |'kmp'| キーボードマッピングの名前 +|'keymodel'| |'km'| 範囲選択を開始/終了するキー +|'keywordprg'| |'kp'| |K|で使う外部プログラム +|'langmap'| |'lmap'| 他の言語モードでの文字 +|'langmenu'| |'lm'| メニュー表示用言語 +|'laststatus'| |'ls'| 最下ウインドウにいつステータス行を表示するか +|'lazyredraw'| |'lz'| マクロ実行中に表示を更新しない +|'linebreak'| |'lbr'| 長い行を空白で折り返す +|'lines'| 表示行数 +|'linespace'| |'lsp'| 行間のピクセル数 +|'lisp'| Lisp用自動インデント +|'lispwords'| |'lw'| Lisp用インデントの動作定義 +|'list'| <Tab>や<EOL>を表示する +|'listchars'| |'lcs'| 'list'オン時に使う文字 +|'loadplugins'| |'lpl'| 起動時にプラグインスクリプトを読み込む +|'magic'| 検索パターン内の特殊文字を変更する +|'makeef'| |'mef'| |:make|用のエラーファイル +|'makeprg'| |'mp'| |:make|で使う外部プログラム +|'matchpairs'| |'mps'| |%|で探す文字ペア +|'matchtime'| |'mat'| 'showmatch'で対応カッコを表示する時間。0.1秒単位 +|'maxfuncdepth'| |'mfd'| ユーザ定義関数の再帰呼び出しの最大数 +|'maxmapdepth'| |'mmd'| マッピングの再帰定義の最大数 +|'maxmem'| |'mm'| 1つのバッファに使える最大メモリ(Kbyte単位) +|'maxmemtot'| |'mmt'| 全てのバッファに使える最大メモリ(Kbyte単位) +|'menuitems'| |'mis'| メニューに登録できる項目の最大数 +|'modeline'| |'ml'| ファイルの先頭や末尾のモードラインを許可する +|'modelines'| |'mls'| モードラインをチェックする行数 +|'modifiable'| |'ma'| ファイルの変更許可 +|'modified'| |'mod'| バッファが変更されているか +|'more'| スクリーンを埋めるような出力で一時停止するか +|'mouse'| マウスを使うか +|'mousefocus'| |'mousef'| マウスの移動でキーボードのフォーカスを移動する +|'mousehide'| |'mh'| 入力時にマウスポインタを非表示にする +|'mousemodel'| |'mousem'| マウスボタンの機能を変える +|'mouseshape'| |'mouses'| モード別にマウスポインタの形を変える +|'mousetime'| |'mouset'| ダブルクリックの間隔時間 +|'nrformats'| |'nf'| CTRL-A用の数値書式 +|'number'| |'nu'| 行番号を表示する +|'osfiletype'| |'oft'| オペレーティングシステムのファイル付加情報 +|'paragraphs'| |'para'| 段落を分けるためのnroffのマクロ +|'paste'| Pasteモードに移行 +|'pastetoggle'| |'pt'| 'paste'を切替えるキー +|'patchexpr'| |'pex'| パッチを適用するための式 |'patchmode'| |'pm'| 最初のバージョンを保全する -|'path'| |'pa'| list of directories searched with "gf" et.al. -|'previewheight'| |'pvh'| height of the preview window -|'previewwindow'| |'pvw'| identifies the preview window -|'printdevice'| |'pdev'| name of the printer to be used for :hardcopy -|'printfont'| |'pfn'| name of the font to be used for :hardcopy -|'printheader'| |'pheader'| format of the header used for :hardcopy -|'printoptions'| |'popt'| controls the format of :hardcopy output -|'readonly'| |'ro'| disallow writing the buffer -|'remap'| allow mappings to work recursively -|'report'| threshold for reporting nr. of lines changed -|'restorescreen'| |'rs'| Win32: restore screen when exiting -|'revins'| |'ri'| inserting characters will work backwards -|'rightleft'| |'rl'| window is right-to-left oriented -|'ruler'| |'ru'| show cursor line and column in the status line -|'rulerformat'| |'ruf'| custom format for the ruler -|'runtimepath'| |'rtp'| list of directories used for runtime files -|'scroll'| |'scr'| lines to scroll with CTRL-U and CTRL-D -|'scrollbind'| |'scb'| scroll in window as other windows scroll -|'scrolljump'| |'sj'| minimum number of lines to scroll -|'scrolloff'| |'so'| minimum nr. of lines above and below cursor -|'scrollopt'| |'sbo'| how 'scrollbind' should behave -|'sections'| |'sect'| nroff macros that separate sections -|'secure'| secure mode for reading .vimrc in current dir -|'selection'| |'sel'| what type of selection to use -|'selectmode'| |'slm'| when to use Select mode instead of Visual mode -|'sessionoptions'| |'ssop'| options for |:mksession| -|'shell'| |'sh'| name of shell to use for external commands -|'shellcmdflag'| |'shcf'| flag to shell to execute one command -|'shellpipe'| |'sp'| string to put output of ":make" in error file -|'shellquote'| |'shq'| quote character(s) for around shell command -|'shellredir'| |'srr'| string to put output of filter in a temp file -|'shellslash'| |'ssl'| use forward slash for shell file names -|'shelltype'| |'st'| Amiga: influences how to use a shell -|'shellxquote'| |'sxq'| like 'shellquote', but include redirection -|'shiftround'| |'sr'| round indent to multiple of shiftwidth -|'shiftwidth'| |'sw'| number of spaces to use for (auto)indent step -|'shortmess'| |'shm'| list of flags, reduce length of messages -|'shortname'| |'sn'| non-MS-DOS: Filenames assumed to be 8.3 chars -|'showbreak'| |'sbr'| string to use at the start of wrapped lines -|'showcmd'| |'sc'| show (partial) command in status line -|'showfulltag'| |'sft'| show full tag pattern when completing tag -|'showmatch'| |'sm'| briefly jump to matching bracket if insert one -|'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 -|'smartindent'| |'si'| smart autoindenting for C programs -|'smarttab'| |'sta'| use 'shiftwidth' when inserting <Tab> -|'softtabstop'| |'sts'| number of spaces that <Tab> uses while editing -|'splitbelow'| |'sb'| new window from split is below the current one -|'splitright'| |'spr'| new window is put right of the current one -|'startofline'| |'sol'| commands move cursor to first blank in line -|'statusline'| |'stl'| custom format for the status line -|'suffixes'| |'su'| suffixes that are ignored with multiple match -|'suffixesadd'| |'sua'| suffixes added when searching for a file -|'swapfile'| |'swf'| whether to use a swapfile for a buffer -|'swapsync'| |'sws'| how to sync the swap file -|'switchbuf'| |'swb'| sets behavior when switching to another buffer -|'syntax'| |'syn'| syntax to be loaded for current buffer -|'tabstop'| |'ts'| number of spaces that <Tab> in file uses -|'tagbsearch'| |'tbs'| use binary searching in tags files -|'taglength'| |'tl'| number of significant characters for a tag -|'tagrelative'| |'tr'| file names in tag file are relative -|'tags'| |'tag'| list of file names used by the tag command -|'tagstack'| |'tgst'| push tags onto the tag stack -|'term'| name of the terminal -|'termencoding'| |'tenc'| character encoding used by the terminal -|'terse'| shorten some messages -|'textauto'| |'ta'| obsolete, use 'fileformats' -|'textmode'| |'tx'| obsolete, use 'fileformat' -|'textwidth'| |'tw'| maximum width of text that is being inserted -|'thesaurus'| |'tsr'| list of thesaurus files for keyword completion -|'tildeop'| |'top'| tilde command "~" behaves like an operator -|'timeout'| |'to'| time out on mappings and key codes -|'timeoutlen'| |'tm'| time out time in milliseconds -|'title'| let Vim set the title of the window -|'titlelen'| percentage of 'columns' used for window title -|'titleold'| old title, restored when exiting -|'titlestring'| string to use for the Vim window title -|'toolbar'| |'tb'| GUI: which items to show in the toolbar -|'ttimeout'| time out on mappings -|'ttimeoutlen'| |'ttm'| time out time for key codes in milliseconds -|'ttybuiltin'| |'tbi'| use built-in termcap before external termcap -|'ttyfast'| |'tf'| indicates a fast terminal connection -|'ttymouse'| |'ttym'| type of mouse codes generated -|'ttyscroll'| |'tsl'| maximum number of lines for a scroll -|'ttytype'| |'tty'| alias for 'term' -|'undolevels'| |'ul'| maximum number of changes that can be undone -|'updatecount'| |'uc'| after this many characters flush swap file -|'updatetime'| |'ut'| after this many milliseconds flush swap file -|'verbose'| |'vbs'| give informative messages -|'viewdir'| |'vdir'| directory where to store files with :mkview -|'viewoptions'| |'vop'| specifies what to save for :mkview -|'viminfo'| |'vi'| use .viminfo file upon startup and exiting -|'virtualedit'| |'ve'| when to use virtual editing +|'path'| |'pa'| |gf|などでファイルを検索するディレクトリのリスト +|'preserveindent'| |'pi'| 再インデント時にインデントの構造を保つ +|'previewheight'| |'pvh'| プレビューウインドウの高さ +|'previewwindow'| |'pvw'| プレビューウインドウを決める +|'printdevice'| |'pdev'| |:hardcopy|で使うプリンタの名前 +|'printencoding'| |'penc'| 印刷で使う文字コード +|'printexpr'| |'pexpr'| |:hardcopy|でPostScriptを印刷するための式 +|'printfont'| |'pfn'| |:hardcopy|で使用するフォント +|'printheader'| |'pheader'| |:hardcopy|で使用するヘッダ +|'printoptions'| |'popt'| |:hardcopy|の出力をコントロールする +|'readonly'| |'ro'| バッファの書き込みを制限する +|'remap'| 再帰的マッピングを有効にする +|'report'| 変更された行の数の方向が出る最小値 +|'restorescreen'| |'rs'| Win32: 終了時スクリーンを更新する +|'revins'| |'ri'| 挿入モードで入力方向が逆になる +|'rightleft'| |'rl'| "右から左"指向のウインドウ +|'rightleftcmd'| |'rlc'| "右から左"に入力するコマンド +|'ruler'| |'ru'| ステータスラインにカーソルが位置する場所を表示する +|'rulerformat'| |'ruf'| 'ruler'用のフォーマット +|'runtimepath'| |'rtp'| ランタイムファイル用のディレクトリのリスト +|'scroll'| |'scr'| CTRL-UやCTRL-Dでスクロールする行数 +|'scrollbind'| |'scb'| 他のウインドウと同期してスクロールする +|'scrolljump'| |'sj'| スクロールする行数の最小値 +|'scrolloff'| |'so'| カーソルの上下に確保する表示行 +|'scrollopt'| |'sbo'| 'scrollbind'がどのように振舞うか +|'sections'| |'sect'| 節を分けるためのnroffのマクロ +|'secure'| カレントディレクトリの.vimrcを安全に読む +|'selection'| |'sel'| 選択時の動作を設定する +|'selectmode'| |'slm'| ビジュアルモードでなくセレクトモードを開始する条件 +|'sessionoptions'| |'ssop'| |:mksession|用のオプション +|'shell'| |'sh'| 外部プログラム使用時のシェル +|'shellcmdflag'| |'shcf'| シェル実行時のフラグ +|'shellpipe'| |'sp'| |:make|の出力をエラーファイルに入れるのに使う文字 +|'shellquote'| |'shq'| シェルで使う引用符 +|'shellredir'| |'srr'| フィルタの出力を一時ファイルに入れるのに使う文字 +|'shellslash'| |'ssl'| シェルで使うファイルのパス区切りに使う +|'shelltype'| |'st'| Amiga: シェルの使い方に影響する +|'shellxquote'| |'sxq'| 'shellquote'に似ているがリダイレクションを含む +|'shiftround'| |'sr'| インデントを'shiftwidth'の倍数に丸める +|'shiftwidth'| |'sw'| (自動的な)インデントにつかうシフト幅 +|'shortmess'| |'shm'| メッセージを短縮するフラグのリスト +|'shortname'| |'sn'| MS-DOS以外: ファイル名が8.3形式であると仮定する +|'showbreak'| |'sbr'| 折り返し表示された行の最初に表示する文字 +|'showcmd'| |'sc'| (未完の)コマンドをステータス行に表示する +|'showfulltag'| |'sft'| タグで補完する時完全なタグのパターンを表示する +|'showmatch'| |'sm'| 括弧入力時に対応する括弧を知らせる +|'showmode'| |'smd'| ステータスラインに現在のモードを表示する +|'sidescroll'| |'ss'| 水平スクロールの刻み幅 +|'sidescrolloff'| |'siso'| カーソルの左右に確保する表示幅 +|'smartcase'| |'scs'| パターンが大文字を含むときは文字の大小を区別する +|'smartindent'| |'si'| C言語用の高度な自動インデント +|'smarttab'| |'sta'| <Tab>入力時に'shiftwidth'を使う +|'softtabstop'| |'sts'| <Tab>で入力する空白の数 +|'splitbelow'| |'sb'| ウインドウの横分割で新規ウィンドウを下に作る +|'splitright'| |'spr'| ウインドウの縦分割で新規ウィンドウを右に作る +|'startofline'| |'sol'| あるコマンドで行の最初の余白にカーソルを移動する +|'statusline'| |'stl'| ステータスラインの表示内容を設定する +|'suffixes'| |'su'| ファイルが複数マッチした時に無視する拡張子 +|'suffixesadd'| |'sua'| 検索対象のファイルの拡張子 +|'swapfile'| |'swf'| スワップファイルを使うかどうか +|'swapsync'| |'sws'| スワップファイルの同期方法 +|'switchbuf'| |'swb'| バッファ切替え時の動作 +|'syntax'| |'syn'| カレントバッファの構文強調表示の定義 +|'tabstop'| |'ts'| <Tab>の表示幅 +|'tagbsearch'| |'tbs'| タグファイルの検索にバイナリサーチを使う +|'taglength'| |'tl'| 意味を持つタグ名の文字数 +|'tagrelative'| |'tr'| タグファイル内のファイル名が相対的になる +|'tags'| |'tag'| タグコマンドで使うファイルのリスト +|'tagstack'| |'tgst'| タグスタックにタグをプッシュする +|'term'| ターミナルの名前 +|'termbidi'| |'tbidi'| ターミナルが双方向性を持っている +|'termencoding'| |'tenc'| ターミナルが使用する文字コード +|'terse'| いくつかのメッセージを省略する +|'textauto'| |'ta'| 廃止。今は'fileformats'を使う +|'textmode'| |'tx'| 廃止。今は'fileformat'を使う +|'textwidth'| |'tw'| 入力されているテキストの最大幅 +|'thesaurus'| |'tsr'| キーワードの同義語補完に使うファイルのリスト +|'tildeop'| |'top'| "~"がoperatorのように振舞う +|'timeout'| |'to'| マッピングやキーコード入力の時間制限 +|'timeoutlen'| |'tm'| 入力をタイムアウトにするミリ秒単位の時間 +|'title'| ウインドウのタイトルを変更するようにする +|'titlelen'| ウインドウのタイトルの'columns'(列幅)の割合 +|'titleold'| 終了時に戻す古いタイトル +|'titlestring'| ウインドウのタイトル +|'toolbar'| |'tb'| GUI: ツールバーに表示する内容 +|'toolbariconsize'| |'tbis'| ツールバーアイコンのサイズ(GTK2だけ) +|'ttimeout'| マッピング入力の時間制限 +|'ttimeoutlen'| |'ttm'| キーコード入力をタイムアウトにするミリ秒単位の時間 +|'ttybuiltin'| |'tbi'| 外部のtermcapの前に組込みのtermcapを探す +|'ttyfast'| |'tf'| 高速ターミナル接続を行う +|'ttymouse'| |'ttym'| マウスコードの種類 +|'ttyscroll'| |'tsl'| 画面をスクロールする行数の最大値 +|'ttytype'| |'tty'| 'term'の別名 +|'undolevels'| |'ul'| アンドゥ可能な回数の最大値 +|'updatecount'| |'uc'| この回数だけ入力するとスワップファイルを更新する +|'updatetime'| |'ut'| この時間だけ入力がなければスワップファイルを更新する +|'verbose'| |'vbs'| 有益なメッセージを表示する +|'viewdir'| |'vdir'| |:mkview|によるファイルを格納するディレクトリ +|'viewoptions'| |'vop'| |:mkview|の保存内容を決める +|'viminfo'| |'vi'| 起動時と終了時に.viminfoファイルを使う +|'virtualedit'| |'ve'| フリーカーソルモードを使う場面 |'visualbell'| |'vb'| ビープの代わりにvisualベル(画面フラッシュ)を使用 -|'warn'| warn for shell command when buffer was changed -|'weirdinvert'| |'wi'| for terminals that have weird inversion method -|'whichwrap'| |'ww'| allow specified keys to cross line boundaries -|'wildchar'| |'wc'| command-line character for wildcard expansion -|'wildcharm'| |'wcm'| like 'wildchar' but also works when mapped -|'wildignore'| |'wig'| files matching these patterns are not completed -|'wildmenu'| |'wmnu'| use menu for command line completion -|'wildmode'| |'wim'| mode for 'wildchar' command-line expansion -|'winaltkeys'| |'wak'| when the windows system handles ALT keys -|'winheight'| |'wh'| minimum number of lines for the current window -|'winminheight'| |'wmh'| minimum number of lines for any window -|'winminwidth'| |'wmw'| minimal number of columns for any window -|'winwidth'| |'wiw'| minimal number of columns for current window -|'wrap'| long lines wrap and continue on the next line -|'wrapmargin'| |'wm'| chars from the right where wrapping starts -|'wrapscan'| |'ws'| searches wrap around the end of the file +|'warn'| バッファ変更済み時にシェル使用で警告する +|'weirdinvert'| |'wi'| 異なる表示方法を持つターミナル用 +|'whichwrap'| |'ww'| 行を越えて機能するキーを設定する +|'wildchar'| |'wc'| コマンドラインでワイルドカードの展開に使うキー +|'wildcharm'| |'wcm'| 'wildchar'に似た、マッピング内で使うもの +|'wildignore'| |'wig'| リスト内のどれかにマッチしたファイル名は補完しない +|'wildmenu'| |'wmnu'| コマンドラインで補完候補をメニュー表示する +|'wildmode'| |'wim'| 'wildchar'の補完モード +|'winaltkeys'| |'wak'| GUIでのALTキーの使い方 +|'winheight'| |'wh'| カレントウィンドウの行数の最小値 +|'winfixheight'| |'wfh'| ウィンドウの高さをキープする +|'winminheight'| |'wmh'| カレントウィンドウ以外のウィンドウの高さの最小値 +|'winminwidth'| |'wmw'| カレントウィンドウ以外のウィンドウの幅の最小値 +|'winwidth'| |'wiw'| カレントウィンドウの幅の最小値 +|'wrap'| 長い行を折り返して表示する +|'wrapmargin'| |'wm'| 折り返しを開始する右端からの文字数 +|'wrapscan'| |'ws'| 検索がファイル末尾まで進んだら先頭から再検索 |'write'| ファイルへの保存を許可する |'writeany'| |'wa'| ファイルへの保存時は"!"がなくても上書きする。 |'writebackup'| |'wb'| 上書きする時にはバックアップを作る。 -|'writedelay'| |'wd'| delay this many msec for each char (for debug) +|'writedelay'| |'wd'| 入力の延滞時間を1/1000秒単位で指定(デバッグ用) ------------------------------------------------------------------------------ *Q_ur* Undo/Redo commands @@ -912,18 +929,18 @@ smz 号のこと。英語圏では昔から使われている。 |:shell| :sh[ell] シェルを起動する |:!| :!{command} {command}をシェルで起動する -|K| K カーソル下にある単語を'keywordprg' プログラム - で調べる。(デフォルトは"man") +|K| K カーソル下にある単語を'keywordprg' 外部コマン + ドで調べる。(デフォルトは"man") ------------------------------------------------------------------------------ *Q_qf* Quickfix commands -|:cc| :cc [nr] display error [nr] (default is the same again) +|:cc| :cc [nr] [nr]番のエラーを表示(省略すると再表示) |:cnext| :cn 次のエラーを表示 |:cprevious| :cp 1つ前のエラーを表示 |:clist| :cl 全エラーの一覧を表示 |:cfile| :cf 'errorfile'からエラーを読み込む -|:cquit| :cq 書き込まずにエラーコードを(コンパイラに)渡す - smz ??? さっぱりわからない。 +|:cquit| :cq 書き込まずにエラーコードで終了する + (コンパイラのため) |:make| :make [args] makeする。エラーを開き最初のコンパイルエラー にジャンプ |:grep| :gr[ep] [args] 'grepprg'を実行し、合致する最初の行にジャンプ @@ -993,17 +1010,13 @@ smz 号のこと。英語圏では昔から使われている。 ての名前を挿入 |c_CTRL-L| CTRL-L 現在のカーソルの直前のパターンに合致するも ののうち、共通部分を挿入 -smz 次の2つはわからん -|c_CTRL-N| CTRL-N after 'wildchar' with multiple matches: go - to next match -|c_CTRL-P| CTRL-P after 'wildchar' with multiple matches: go - to previous match +|c_CTRL-N| CTRL-N 'wildchar'にて複数候補があるとき次の候補へ +|c_CTRL-P| CTRL-P 'wildchar'にて複数候補があるとき前の候補へ ------------------------------------------------------------------------------ -*Q_ra* Ex ranges +*Q_ra* Exコマンドの範囲 |:range| , 2つの行の範囲 -|:range| ; idem, set cursor to the first line number - before interpreting the second one +|:range| ; 同上。最初の指定行から次の指定範囲まで |:range| {number} ファイル中の行番号 |:range| . 現在行 @@ -1096,14 +1109,14 @@ smz 次の2つはわからん |:w_c| :[range]w[rite] !{cmd} [range]の行を標準入力として{cmd}を 実行。 |:up| :[range]up[date][!] 変更されていれば、上書き保存 -|:wall| :wall[!] 変更のある全バッファを上書き保存 +|:wall| :wa[ll][!] 変更のある全バッファを上書き保存 |:q| :q[uit] 変更がなければ、現在のバッファを終了。他に ヘルプ以外のバッファがなければvimを終了。 |:q| :q[uit]! 変更を破棄して、現在のバッファを終了。他に ヘルプ以外のバッファがなければvimを終了。 -|:qa| :qall 変更がない限りvimを終了 -|:qa| :qall! 変更があってもvimを強制終了 +|:qa| :qa[ll] 変更がない限りvimを終了 +|:qa| :qa[ll]! 変更があってもvimを強制終了 |:cq| :cq 保存せずに終了し、エラーコードを返す。 |:wq| :wq[!] 現ファイルを保存して終了 @@ -1112,7 +1125,7 @@ smz 次の2つはわからん 保存 |ZZ| ZZ ":x"と同じ |ZQ| ZQ ":q!"と同じ -|:xall| :xall[!] or :wqall[!] +|:xall| :xa[ll][!] or :wqall[!] 変更のある全バッファを保存して終了 |:stop| :st[op][!] vimをサスペンドし、新たなシェルを起動。'aw' @@ -1143,6 +1156,7 @@ smz 省略 |-m| -m 変更を認めない('write' オプションをoffで起動) |-b| -b バイナリモード |-l| -l lisp モード +|-A| -A Arabic モード ('arabic'をセット) |-F| -F Farsi モード ('fkmap' と 'rightleft' をセット) |-H| -H Hebrew モード ('hkmap' と 'rightleft' をセット) |-V| -V 冗長モード @@ -1151,8 +1165,8 @@ smz 省略 |-r| -r swapファイルの一覧を与える |-r| -r {file} .. 異常終了したファイルのリカバリ |-n| -n swapファイルを作らない -|-o| -o [num] [num]個のウィンドウを開く(default: one for each file) -smz よくわからない。 +|-o| -o [num] [num]個のウィンドウを開く + (通常は複数ファイルを開いてもウィンドウは1つ) |-f| -f GUI: foreground process, fork()しない。 Amiga: ウィンドウを開くときにvimを再起動しない (例:メールなど) @@ -1160,10 +1174,10 @@ smz よくわからない。 |-w| -w {scriptout} 入力した文字をファイル{scriptout} に保存(追記) |-W| -W {scriptout} 入力した文字をファイル{scriptout} に保存(上書き) |-T| -T {terminal} 端末名{terminal}を指定 -|-d| -d {device} Amiga: open {device} to be used as a console -|-u| -u {vimrc} read inits from {vimrc} instead of other inits +|-d| -d {device} Amiga: {device}をコンソールとして使う +|-u| -u {vimrc} vimrcファイルとして{vimrc}を読み込む |-U| -U {gvimrc} 同上, GUIでの起動時用 -|-i| -i {viminfo} read info from {viminfo} instead of other files +|-i| -i {viminfo} viminfoファイルとして{viminfo}を読み込む |---| -- 引数の最後を示す。以降の引数は全部ファイル名 |--help| --help 引数のヘルプを表示して終了 |--version| --version バージョン情報を表示して終了 @@ -1206,13 +1220,15 @@ smz よくわからない。 |CTRL-W_s| CTRL-W s or :split ウィンドウを2つに分割 |:split_f| :split {file} ウィンドウを2つに分割し、片方で {file}を開く +|:vsplit| :vsplit {file} 同上。ウインドウは縦分割。 +|vertical| :vertical {cmd} {cmd}が縦分割するようにする |:sfind| :sf[ind] {file} ウィンドウを分割し、{file}を'path' 中で探し、それを編集 |CTRL-W_]| CTRL-W ] ウィンドウを分割し、カーソル下のタグ にジャンプ |CTRL-W_f| CTRL-W f ウィンドウを分割し、カーソル下のファ イルにジャンプ -|CTRL-W_CTRL-^| CTRL-W CTRL-^ ウィンドウを分割し、別ファイルにジャ +|CTRL-W_^| CTRL-W ^ ウィンドウを分割し、別ファイルにジャ ンプ |CTRL-W_n| CTRL-W n or :new 新たな空ウィンドウを作成 |CTRL-W_q| CTRL-W q or :q[uit] 編集を終了しウィンドウを閉じる @@ -1266,67 +1282,69 @@ smz よくわからない。 |:syn-off| :syntax off シンタックスハイライトの使用停止 |:syn-keyword| :syntax keyword {group-name} {keyword} .. - add a syntax keyword item + シンタックスにキーワードを加える |:syn-match| :syntax match {group-name} {pattern} ... - add syntax match item + シンタックスにマッチを加える |:syn-region| :syntax region {group-name} {pattern} ... - add syntax region item + シンタックスにリージョンを加える |:syn-sync| :syntax sync [ccomment | lines {N} | ...] - tell syntax how to sync -|:syntax| :syntax [list] list current syntax items -|:syn-clear| :syntax clear clear all syntax info + 同期方法を指示する +|:syntax| :syntax [list] 現在のシンタックスのアイテムを一覧する +|:syn-clear| :syntax clear 全てのシンタックスを削除する -|:highlight| :highlight clear clear all highlight info +|:highlight| :highlight clear 全てのハイライトを削除する |:highlight| :highlight {group-name} {key}={arg} .. - set highlighting for {group-name} + {group-name} にハイライトを設定する -|:filetype| :filetype on switch on file type detection, without - syntax highlighting +|:filetype| :filetype on ファイルタイプの検出を有効にする + シンタックスハイライトは有効にならない |:filetype| :filetype plugin indent on - switch on file type detection, with - automatic indenting and settings + ファイルタイプの検出を有効にする + 各設定とオートインデントを有効にする ------------------------------------------------------------------------------ *Q_gu* GUI commands -|:gui| :gui UNIX: GUI版を起動 +|:gui| :gui UNIX: GUI 版を起動 |:gui| :gui {fname} .. 同上、さらに{fname} .. を編集 |:menu| :menu 全メニューを表示 |:menu| :menu {mpath} {mpath}で始まる全メニューを表示 -|:menu| :menu {mpath} {rhs} add menu {mpath}, giving {lhs} +|:menu| :menu {mpath} {rhs} {mpath}にメニューを加える。 + {mpath}選択で{rhs}実行。 |:menu| :menu {pri} {mpath} {rhs} - idem, with priorities {pri} + 同上、さらに{pri}による優先度指定 |:menu| :menu ToolBar.{name} {rhs} - add toolbar item, giving {lhs} -|:tmenu| :tmenu {mpath} {text} add tooltip to menu {mpath} -|:unmenu| :unmenu {mpath} remove menu {mpath} + ツールバーの項目を加える。 + {name}選択で{rhs}実行。 +|:tmenu| :tmenu {mpath} {text} {mpath}のメニューにツールチップを加える +|:unmenu| :unmenu {mpath} {mpath}のメニューを削除する ------------------------------------------------------------------------------ *Q_fo* Folding -|'foldmethod'| set foldmethod=manual manual folding - set foldmethod=indent folding by indent - set foldmethod=expr folding by 'foldexpr' - set foldmethod=syntax folding by syntax regions - set foldmethod=marker folding by 'foldmarkers' - -|zf| {motion}zf operator: Define a fold manually -|:fold| :{range}fold define a fold for {range} lines -|zd| zd delete one fold under the cursor -|zD| zD delete all folds under the cursor - -|zo| zo open one fold under the cursor -|zO| zO open all folds under the cursor -|zc| zc close one fold under the cursor -|zC| zC close all folds under the cursor - -|zm| zm fold more: decrease 'foldlevel' -|zM| zM close all folds: make 'foldlevel' zero -|zr| zr reduce folding: increase 'foldlevel' -|zR| zR open all folds: make 'foldlevel' max. - -|zn| zn fold none: reset 'foldenable' -|zN| zN fold normal set 'foldenable' -|zi| zi invert 'foldenable' +|'foldmethod'| set foldmethod=manual 手動で折畳み + set foldmethod=indent インデントで折畳み + set foldmethod=expr 'foldexpr'で折畳み + set foldmethod=syntax シンタックスのリージョンで折畳み + set foldmethod=marker 'foldmarkers'で折畳み + +|zf| zf{motion} 手動で折畳みを定義する +|:fold| :{range}fold {range}範囲の行を折畳む +|zd| zd カーソル下の1つの折畳みを削除する +|zD| zD カーソル下の全ての折畳みを削除する + +|zo| zo カーソル下の折畳みを1段開く +|zO| zO カーソル下の折畳みを全段開く +|zc| zc カーソル下の折畳みを1段閉じる +|zC| zC カーソル下の折畳みを全段閉じる + +|zm| zm 'foldlevel'を減らし、折畳みを増やす +|zM| zM 'foldlevel'を0にし、全て折畳む +|zr| zr 'foldlevel'を増やし、折畳を減らす +|zR| zR 'foldlevel'を最大にし、全て開く + +|zn| zn 'foldenable'を無効にし、折畳み無し +|zN| zN 'foldenable'を有効にし、折畳む +|zi| zi 'foldenable'を反転させる vim:tw=78:ts=8:ft=help:norl: From f53afe1fbeb7229882fc36016d4231b1b2c0aefe Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Mon, 31 Jan 2005 02:49:25 +0000 Subject: [PATCH 020/783] fix: update ja/quickref.jax to 6.3.054 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@20 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/quickref.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/quickref.jax b/ja/quickref.jax index d21fe10a6..2260390f4 100644 --- a/ja/quickref.jax +++ b/ja/quickref.jax @@ -1,5 +1,5 @@ COMMENT: クイックリファレンスガイド -STATUS: finished 6.3.034 +STATUS: finished 6.3.054 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> From 1911ccd477f1faf393f8506afe377370c883d42b Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Thu, 3 Feb 2005 03:22:08 +0000 Subject: [PATCH 021/783] fix: update 2 files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@21 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/os_vms.jax | 175 ++++++++++++++++++++++---------------------- ja/vi_diff.jax | 192 +++++++++++++++++++++++++------------------------ 2 files changed, 186 insertions(+), 181 deletions(-) diff --git a/ja/os_vms.jax b/ja/os_vms.jax index 5c4ac9e65..85a598557 100644 --- a/ja/os_vms.jax +++ b/ja/os_vms.jax @@ -1,5 +1,5 @@ COMMENT: OS特有情報:VMS -STATUS: susupend 6.3.054 +STATUS: finished 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> @@ -236,24 +236,24 @@ SYS$STARTUP:SYLOGIN.COM にも追加する > $ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40 -これによりシステム全てのユーザあら通常のVimが利用可能になるだろう。 +これによりシステム全てのユーザから通常のVimが利用可能になるだろう。 ============================================================================== 7. GUIモードの論点 *vms-gui* -OpenVMS in a real mainframe OS, therefore even if it has a GUI console, most of -the users does not use a native X/Window environment during normal operation. -It is not possible to start Vim in GUI mode "just like that". But anyhow it is -not too complicate either. +OpenVMS は本物のメインフレーム OS であり、したがって、GUI コンソールが備わっ +ていたとしても、大多数のユーザは日中の通常業務で X/Window 環境を使わない。 +Vim を GUI モードで「簡単に」起動することはできないが、しかし、極めて困難と +いうことでもない。 -First of all: you will need an executable that is built with enabled GUI. +まず始めに。GUI の機能を有効にしてコンパイルされた実行ファイルが必要だ。 -Second: you need to have installed DECW/Motif on your VMS server, otherwise -you will get errors that some shareable libraries are missing. +次に。VMS サーバに DECW/Motif がインストールされていなければならない。そうし +ないといくつかの共有ライブラリに関してエラーが生じるだろう。 -Third: If you choose to run Vim with extra feature as GUI/GTK then you need -GTK installation too or at least GTK runtime environment (LIBGTK etc.) +そして。GUI/GTK 対応の拡張機能を使って Vim を実行したいなら、GTK、もしくは +GTK ランタイム (LIBGTK など) もインストール必要がある。 1) VMS X/Motifコンソールを利用しているならば: このコマンドでVimを起動する: > @@ -278,46 +278,46 @@ GTK installation too or at least GTK runtime environment (LIBGTK etc.) NOTE: これらのうちからどれか1つを選ぶ必要がある。もっと情報が必要ならばVMS プロンプトで $help set disp とキー入力する。 -3) MS Windowや他の非Xウィンドウ環境の場合: +3) 別の簡潔な方法は、すでに OpenVMS に XDM がインストールされているならそれ + を使うことである。GUI コンソールを使うように XDM クライアントから作業でき + る。 + +4) MS Windowや他の非Xウィンドウ環境の場合: Xサーバを設定して2)と同様にする。 MS WindowsではフリーのXサーバMIXや、Omni X等が利用可能である。 + また、DEC により提供されている eXcursion や ReflectionX という素晴らしい + 商用製品もある。 -4) If you are working on MS Windows or other non X/Window environment - You need to set up one X server and run Vim as in point 2. - For MS Windows there are available free X servers as MIX , Omni X etc. - as well as excellent commercial products as eXcursion or ReflectionX with - buit in DEC support. - -Please note, that executables without GUI are slightly faster during startup -then with enabled GUI in character mode. Therefore, if you do not use GUI -features, it is worth to choose non GUI executables. +注意してほしいのだが、CUI での使用時には、GUI を無効にした物のほうが GUI を +有効にした物よりも若干起動時間が短い。したがって、GUI の機能を使わないのな +ら、非 GUI 版の実行ファイルを選ぶ価値はある。 ============================================================================== 8. 利用時の覚書 *vms-notes* -8.1 backspace/delete -8.2 Filters -8.3 VMS file version numbers -8.4 Directory conversion -8.5 Remote host invocation -8.6 Terminal problems -8.7 Hex-editing and other external tools -8.8 Sourcing vimrc and gvimrc -8.9 Printing from Vim -8.10 Setting up the symbols -8.11 diff and other GNU programs -8.12 diff-mode -8.13 Allow '$' in C keywords -8.14 VIMTUTOR for beginners +8.1 バックスペースとデリート +8.2 フィルタ +8.3 VMSのファイルバージョン番号 +8.4 ディレクトリ変換 +8.5 リモートホストの実際 +8.6 端末の問題 +8.7 16進数編集とその他のツール +8.8 vimrcとgvimrcの読み込み +8.9 Vimからの印刷 +8.10 シンボルの設定 +8.11 diff と その他の GNU プログラム +8.12 diff モード +8.13 C 言語のキーワードに '$' を認める +8.14 初心者のための VIMTUTOR 8.1 バックスペースとデリート VMSにはバックスペースとデリートキーについて矛盾がある。 :fixdel ではこの問題を解決できないので、次のようにする必要がある: > - :inoremap ^? ^H " for terminal mode - :inoremap <Del> ^H " for gui mode + :inoremap ^? ^H " CUI(端末)モード用 + :inoremap <Del> ^H " GUIモード用 詳細は8.6章(端末の問題)を参照。 (Bruce Hunsaker <BNHunsaker@chq.byu.edu> Vim 5.3) @@ -428,8 +428,8 @@ Terminal entry not found in termcap builtin_dumb defaulting to 'vt320' --- -(訳注: メッセージの翻訳は省略しました。VMSでgettext()によりja.poが参照されるか -どうか不明なためです。翻訳が必要ならばsrc/po/ja.poを参照してください。) +(訳注: メッセージの翻訳は省略します。実際には翻訳されて表示される可能性があり +ます。) 解決法はデフォルトの端末名を設定することである: > @@ -456,7 +456,7 @@ NOTE: Vimをリモートホストで使用しているか接続が非常に低 set nottyfast " set terminal to slow mode -(Zoltan Arpadffy, <arpadffy@altavista.net> Vim 5.6) +(Zoltan Arpadffy, Vim 5.6) 8.7 16進数編集とその他のツール @@ -496,9 +496,9 @@ CTAGSの文章を読むこと。 8.8 vimrcとgvimrcの読み込み 他のプラットホーム(例: Windows)で使用している.vimrcと.gvimrcを使うには、その -ファイルをftpで転送すると問題が起こるだろう: VMSは異なる行末記号を採用してい +ファイルをftpで転送すると問題が起こるだろう: VMSは異なる改行記号を採用してい る。 -その兆候は次のようにしてもVimが.vimrc/.gvimrcを読み込まなくなることである: > +そのため、次のようにしても.vimrc/.gvimrcは読み込めない: > > :so sys$login:.vimrc @@ -540,47 +540,46 @@ VMSで(GUIモードの)Vimからの印刷を可能にするには論理名$TMP (Carlo Mekenkamp, Coen Engelbarts, Vim 6.0ac) -8.11 diff and other GNU programs +8.11 diff と その他の GNU プログラム -From 6.0 diff functionality has been implemented, but OpenVMS does not use -GNU/Unix like diff therefore built in diff does not work. -There is a simple solution to solve this anomaly. Install an Unix like diff -and Vim will work perfect in diff mode too. You just have to redefine your -diff program as: > +Vim 6.0 から diff 用の機能が実装された。しかし OpenVMS の組込みの diff は +GNU/UNIX 互換ではないので機能しない。 +好ましくないが簡単な解決法としては、Unix 互換の diff をインストールすること +である。そうすれば Vim は diff モードでも完全に機能するだろう。それには diff +プログラムを次のように再定義しなければならない: > define /nolog diff <GNU_PATH>diff.exe -Another, more sophisticated solution is described below (8.12 diff-mode) -There are some other programs as patch, make etc that may cause same problems. -At www.polarhome.com is possible to download an GNU package for Alpha and VAX -boxes that is meant to solve GNU problems on OpenVMS. +もう 1 つの面倒な方法は以下の (8.12 diff モード) で説明する。 +他に問題の起こりそうなプログラムとして、patch や make などがある。 +www.polarhome.com では OpenVMS 上での GNU プログラムに関する問題を解決するた +めに、Alpha や VAX 向けの GNU パッケージを配布している。 ( Zoltan Arpadffy, Vim 6.1) -8.12 diff-mode +8.12 diff モード -Vim 6.0 and higher supports vim diff-mode (See |new-diff-mode|, |diff-mode| -and |08.7|). This uses the external program 'diff' and expects a Unix-like -output format from diff. The standard VMS diff has a different output -format. To use vim on VMS in diff-mode, you need to: - 1 Install a Unix-like diff program, e.g. GNU diff - 2 Tell vim to use the Unix-like diff for diff-mode. +Vim 6.0 以降では diff モードがサポートされている (|new-diff-mode|、 +|diff-mode|、|08.7|を参照)。これは 'diff' で指定した外部プログラムを使用し、 +その出力が Unix 互換であると想定している。しかし VMS 標準の diff はそれとは +違った書式で出力する。VMS で vim の diff モードを使うには、次のようにする: + 1 Unix 互換の diff をインストールする。例えば GNU diff。 + 2 vim に diff モードで Unix 互換の diff を使うことを教える。 -You can download GNU diff from the VIM-VMS website, it is one of the GNU -tools in http://www.polarhome.com/vim/files/gnu_tools.zip. I suggest to -unpack it in a separate directory "GNU" and create a logical GNU: that -points to that directory. e.g: > +GNU diff は VIM-VMS のウェブサイトからダウンロードできる。これは +http://www.polarhome.com/vim/files/gnu_tools.zip に含まれている GNU ツールの +1 つである。このアーカイブの中身を "GNU" というディレクトリに入れ、論理名 +GNU: をそのディレクトリを指すよう作成するといいだろう。例: > DEFINE GNU <DISK>:[<DIRECTORY>.BIN.GNU] -You may also want to define a symbol GDIFF, to use the GNU diff from the DCL -prompt: > +シンボル GDIFF を定義して、DCL プロンプトから GNU diff を使いたい場合には: > GDIFF :== $GNU:DIFF.EXE -Now you need to tell vim to use the new diff program. Take the example -settings from |diff-diffexpr| and change the call to the external diff -program to the new diff on VMS. Add this to your .vimrc file: > +そして、vim に新しい diff プログラムを使うことを教える必要がある。 +|diff-diffexpr| から設定例を持ってきて、外部の diff を呼び出す部分を VMS 上 +の新しい diff を呼び出すように変更する。これを .vimrc ファイルに加える: > " Set up vimdiff options if v:version >= 600 @@ -599,17 +598,17 @@ program to the new diff on VMS. Add this to your .vimrc file: > endfunction endif -You can now use vim in diff-mode, e.g. to compare two files in read-only -mode: > +これで vim の diff モードを使うことができる。例えば 2 つのファイルを読み込み +専用で開いて比較する: > $ VIM -D/R <FILE1> <FILE2> -You can also define new symbols for vimdiff, e.g.: > +vimdiff として新しいシンボルを定義することもできる。例: > $ VIMDIFF :== 'VIM' -D/R $ GVIMDIFF :== 'GVIM' -D/R -You can now compare files in 4 ways: > +これでファイルを比較するのに 4 つの方法が利用できる: > 1. VMS diff: $ DIFF <FILE1> <FILE2> 2. GNU diff: $ GDIFF <FILE1> <FILE2> @@ -619,31 +618,31 @@ You can now compare files in 4 ways: > ( Coen Engelbarts, Vim 6.1) -8.13 Allow '$' in C keywords +8.13 C 言語のキーワードに '$' を認める -DEC C uses many identifiers with '$' in them. This is not allowed in ANSI C, -and vim recognises the '$' as the end of the identifier. You can change this -with the |iskeyword|command. -Add this command to your .vimrc file: > +DEC C では識別子に '$' を使用できる。ANSI C では使用できない。また、vim は識 +別子の終わりを示す '$' を認めている。'iskeyword' を設定して取り扱いを変更で +きる。 +次のコマンドを .vimrc ファイルに追加する: > autocmd FileType c,cpp,cs set iskeyword+=$ -You can also create the file(s) $VIM/FTPLUGIN/C.VIM (and/or CPP.VIM and -CS.VIM) and add this command: > +もしくは $VIM/FTPLUGIN/C.VIM (あるいは CPP.VIM や CS.VIM) を作成してこのコマ +ンドを追加する: > set iskeyword+=$ -Now word-based commands, e.g. the '*'-search-command and the CTRL-] -tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in -C keywords since ctags version 5.1.) +これで、単語に基づくコマンド、例えば '*' 検索コマンドや CTRL-] タグ検索で正 +しい識別子を選択することができる。(VMS 上の Ctags もバージョン 5.1 から C 言 +語のキーワードに '$' を認めている) ( Coen Engelbarts, Vim 6.1) -8.14 VIMTUTOR for beginners +8.14 初心者のための VIMTUTOR -It exits VIMTUTOR.COM DCL script that can help Vim beginners to learn/make -first steps with Vim on OpenVMS. Depending of binary distribution you may start -it with: > +OpenVMS 上で Vim 初心者の最初の一歩を手助けするために DCL スクリプトの +VIMTUTOR.COM が用意されている。バイナリ配布物においては次のようにして開始で +きるだろう: > @vim:vimtutor @@ -778,10 +777,10 @@ Version 4.5 (1996 Dec 16) 10. 著者 *vms-authors* -OpenVMS documentation and executables are maintained by: +OpenVMSの文章とコンパイル済みバイナリは以下がメンテナンスしている: Zoltan Arpadffy <arpadffy@polarhome.com> -アルファベット順: +この文章には、初期の著者や貢献者の書いた部分や記述が含まれている: Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov> Bruce Hunsaker <BNHunsaker@chq.byu.edu> Sandor Kopanyi <sandor.kopanyi@altavista.net> diff --git a/ja/vi_diff.jax b/ja/vi_diff.jax index c4ab8d288..a43dbf4ca 100644 --- a/ja/vi_diff.jax +++ b/ja/vi_diff.jax @@ -1,8 +1,9 @@ COMMENT: Viとの相違点 -STATUS: suspend 6.3.054 +STATUS: finished 6.3.054 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: 村岡太郎<koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> *vi_diff.txt* For Vim version 6.3. Last change: 2004 Mar 26 @@ -17,7 +18,8 @@ Vim と Vi の違い *vi-differences* のみを列挙します。それと違いの概略を説明します。 Vim は大体において POSIX 1003.2-1 に従っています。知られている唯一の足りないコ -マンドは ":open" コマンドです。細かな違いはたぶんたくさんあります。 +マンドは ":open" コマンドです。細かな違いはたぶんたくさんあります(Vimが間違っ +ているか、Posixの指標がはずれているかのどちらか)。 1. なくなっているコマンド |missing-commands| 2. なくなっているオプション |missing-options| @@ -47,7 +49,7 @@ graphic (gr) 二者択一 (初期値 オフ) *'graphic'* *'gr'* hardtabs (ht) 数値 (初期値 8) *'hardtabs'* *'ht'* ディスプレイ上で一つの <Tab> が移動するスペースの数 mesg 二者択一 (初期値 オン) *'mesg'* -novice 二者択一 (初期値 ??) *'novice'* +novice 二者択一 (初期値 オフ) *'novice'* open 二者択一 (初期値 オン) *'open'* optimize (op) 二者択一 (初期値 オフ) *'optimize'* *'op'* prompt 二者択一 (初期値 オン) *'prompt'* @@ -73,9 +75,9 @@ Vim で編集できるファイルの制限はかなり少ないです。 {Vi: < 最大行数 2147483647 行 最大のファイルのサイズ long integer が32ビットである場合2147483647バイト(2 ギガバイト)です。64ビットの長さであればもっと多くな - ります。またスワップファイル |swap-file| の為のディ - スクの空き容量にも制限されます。 - *E340* + ります。またスワップファイル|swap-file|の為のディス + クの空き容量にも制限されます。 + *E75* ファイルのパスの長さ Unix と Win32: 1024 文字か 256 文字(もしくはシステム がサポートしている長さ分だけ) ファイル名の長さ Unix と Win32: 1024 文字か 256 文字 @@ -84,7 +86,7 @@ Vim で編集できるファイルの制限はかなり少ないです。 {Vi: < 表示される最大の長さ Unix と Win32: 1024 文字か 256 文字 マッピングでの lhs の最大の長さ 50 文字 -ハイライトの最大タイプ数: 223 +異なったタイプのハイライトの数: 223 アンドゥとレジスターの中のテキストに関する情報はメモリーに保持されます。ですの で、使用可能な(仮想)メモリーの量を超えて(大きな)変更を行っている場合はアンドゥ @@ -112,7 +114,6 @@ Vim で編集できるファイルの制限はかなり少ないです。 {Vi: < 4. もっとも興味深い機能追加 *vim-additions* Vi コンパチビリティ |'compatible'| - Vim には Vi の99%の機能が含まれますが、Vi のうちのいくつかはバグか少な くとも改良が必要だと考えられるものがあります。しかしそれでもなお Vim は 可能な限り「本当の」 Vi のように振る舞うモードで起動します。Vim にもう @@ -123,7 +124,7 @@ Vi コンパチビリティ |'compatible'| vim -N もし .vimrc ファイルがあれば自動的にこれは行われます。|startup| も見て ください。'cpoptions' オプションはたくさんの特定のアイテムに関する Vi - と同一の動作をするかどうかのオン/オフを切り替えることができます。 + と同一の動作をするかどうかのオン/オフを切り替えることができます。 様々なシステムのサポート Vim は次のシステムで利用できます: @@ -139,8 +140,8 @@ Vi コンパチビリティ |'compatible'| - VMS - BeOS - Macintosh - - RiscOS - - IMB OS/390 + - Risc OS + - IBM OS/390 多段アンドゥ |undo| 'u' は時をさかのぼり、'CTRL-R' は再び進めます。変更を覚えておく回数を @@ -156,8 +157,9 @@ Vi コンパチビリティ |'compatible'| GUI (メニュー、マウス、スクロールバー、などなど)のサポートが含められま した。独自のメニューを定義することもできます。CTRL/SHIFT/ALT とキーの組 み合わではなく特殊なキーとマウスの組み合わせというよりよい方法がサポー - トされます。いまのところ X11 (Motif と Athena インターフェース)、Win32 - (Windows95 と WindowsNT),BeOS, Amiga, Macintoshでサポートされています。 + トされます。さまざまなプラットフォーム、 X11 (Motif と Athena インター + フェース)、Win32 (Windows95 か、より最新のもの),BeOS, Amiga, Macintosh + でサポートされています。 複数のウインドーとバッファー |windows.txt| Vim ではスクリーンをいくつかのウインドーに分けてそれぞれの中で異なるバ @@ -188,9 +190,9 @@ Vi コンパチビリティ |'compatible'| ファイルタイプについて設定することも可能です。 一連のコマンドを繰り返す |q| - 'q'{c}で名前付きレジスター{c}にタイプする文字の記録を始めます(もしそ + "q{c}"で名前付きレジスター{c}にタイプする文字の記録を始めます(もしそ のレジスターの名前が大文字であった場合はそのレジスターに追加します)。後 - に続く 'q' は記録を終了します。そしてレジスターにあるコマンドは '@'{c} + に続く "q" は記録を終了します。そしてレジスターにあるコマンドは "@{c}" コマンドで実行することができます。これは複雑な動作を繰り返すときに非常 に便利です。 @@ -206,9 +208,9 @@ Vi コンパチビリティ |'compatible'| ビジュアルモードは、初めにいくつかのテキストを選択してからそれに対して コマンドを実行するのに使うことができます。これは初めに演算コマンドを与 えてからその演算を施すテキストの最後まで移動するコマンドを実行するもう - 一つの(簡単な)方法です。'v' と 'V' はビジュアルモードを開始します。'v' - は文字ごとに選択し 'V' は行ごとに選択します。カーソルを動かしてビジュ - アル部分を広げ、その部分はスクリーン上でハイライトされます。'o' を打つ + 一つの(簡単な)方法です。"v" と "V" はビジュアルモードを開始します。"v" + は文字ごとに選択し "V" は行ごとに選択します。カーソルを動かしてビジュ + アル部分を広げ、その部分はスクリーン上でハイライトされます。"o" を打つ ことでビジュアルなテキスト部分の反対側の端が動かされることになります。 ビジュアルなテキスト部分には次の演算を施すことができます: d 削除 @@ -226,9 +228,9 @@ Vi コンパチビリティ |'compatible'| ブロック演算コマンド |visual-block| 長方形のテキストがビジュアルモードを使って選択することができます。 - CTRL-V でビジュアルモードを開始します。選択されたブロックは 'd' で削除 - したり 'y' でヤンクしたり大文字小文字を '~'、'u'、'U' で変えることがで - きます。削除もしくはヤンクされたブロックは 'p' か 'P' コマンドでテキス + CTRL-V でビジュアルモードを開始します。選択されたブロックは "d" で削除 + したり 'y' でヤンクしたり大文字小文字を "~"、"u"、"U" で変えることがで + きます。削除もしくはヤンクされたブロックは "p" か "P" コマンドでテキス トに挿入することができます。 オンラインヘルプシステム |:help| @@ -280,7 +282,8 @@ Vi コンパチビリティ |'compatible'| CTRL-X を使うことでもう一つのモードに入ることができます。どの補完を行う ことができるかというと: |i_CTRL-X_CTRL-F| ファイル名 - |i_CTRL-X_CTRL-K| ディレクトリにある単語 + |i_CTRL-X_CTRL-K| 辞書'dictionary'ファイルにある単語 + |i_CTRL-X_CTRL-T| 類語辞典'thesaurus'ファイルにある単語 |i_CTRL-X_CTRL-I| インクルードされるファイルにある単語 |i_CTRL-X_CTRL-L| すべての行 |i_CTRL-X_CTRL-]| タグファイルにある単語 @@ -396,7 +399,7 @@ Viminfo |viminfo-file| |'binary'| "-b" によってセットされるオプションで、ファイルの最後の 行に <EOL> を付加するのをやめさせます -Multi-language support |multi-lang| +多言語のサポート |multi-lang| ダブルバイトやマルチバイトエンコーディングのファイルを編集できます。 フォントを切り替えずに多言語を同時に編集可能なUTF-8をサポートしていま す。 |UTF-8| @@ -419,8 +422,8 @@ Vim が "-s scriptfile" 付きで起動された場合、"scriptfile" から読 "-o" オプションはそれに続く引数の数だけウインドーを開きます。"-o4" は4つのウイ ンドーを開きます。 -viはフルスクリーンで動作するためにいくつかのtermcapのエントリが必要でした。Vim -が必要とするのは"cm"エントリ(cursor motion)だけです。 +Viはフルスクリーンで動作するためにいくつかのtermcapのエントリが必要でした。Vim +が必要とするのは"cm"エントリ(cursor motion)だけです。 コマンドモードで: @@ -431,20 +434,20 @@ viはフルスクリーンで動作するためにいくつかのtermcapのエ 'ruler' オプションがセットされているとスクリーンの最後の行に現在のカーソルの位 置が表示されます。 -'U' は最後に変更した行からはなれた後でも、また 'u' を実行した後でも動作します。 +"U" は最後に変更した行からはなれた後でも、また "u" を実行した後でも動作します。 -8bit 目がセットされている文字は表示されます。'graphic' オプションがセットされ -ていなければ、'~' と 0xa0 の間の文字は "~?"、"~@"、"~A"、などなどのように表示 -されます。 +8bit 目がセットされている文字は表示されます。その文字が'isprint'オプションに含 +まれていなければ、'~' と 0xa0 の間の文字は "~?"、"~@"、"~A"、などなどのように +表示されます。 -'][' は C の関数の次の終わりに移動します(一桁目が '}' の行)。 -'[]' は C の関数の前の終わりに移動します(一桁目が '}' の行)。 +"][" は C の関数の次の終わりに移動します(一桁目が '}' の行)。 +"[]" は C の関数の前の終わりに移動します(一桁目が '}' の行)。 -']f'、'[f' と 'gf' はカーソルの下のファイル名の編集を開始します。CTRL-W f はカ +"]f"、"[f" と "gf" はカーソルの下のファイル名の編集を開始します。CTRL-W f はカ ーソルの下のファイル名の編集をウインドーを分割してそこで開始します。 -'*' はカーソルの下の識別子を前方に検索し、'#' は後方に検索します。 -'K' はカーソルの下の識別子を引数として "keywordprg" オプションに定義されている +"*" はカーソルの下の識別子を前方に検索し、"#" は後方に検索します。 +"K" はカーソルの下の識別子を引数として 'keywordprg' オプションに定義されている プログラムを呼び出します。 '%' は前に数を前置することでそのファイルのパーセント数の場所にジャンプします。 @@ -453,7 +456,7 @@ viはフルスクリーンで動作するためにいくつかのtermcapのエ CTRL-] コマンドでは、カーソルは識別子の真ん中にあります。 使ったタグは覚えておかれ、タグスタックに覚えておかれるコマンドは CTRL-T と - ':pop' と ':tag' です。 ':tags' はタグスタックの内容をリスとします。 + ":pop" と ":tag" です。 ":tags" はタグスタックの内容をリスト表示します。 'tags' オプションはタグファイル名のリストを設定することができます。ですので複 数のタグファイルを使うことができます。ファイル名が '.' で始まる場合は '.' はそ @@ -472,12 +475,12 @@ CTRL-] コマンドでは、カーソルは識別子の真ん中にあります 検索ではマッチした最後にカーソルをおくこともできますし、オフセット文字を使って 検索することもできます。 -'~'、':next'、':Next'、'n'、'N' にカウントを前置することができるようになりまし +"~"、":next"、":Next"、"n"、"N" にカウントを前置することができるようになりまし た。 'autowrite' オプションがセットされている場合でも ":next!" コマンドはファイルを 書き込みません。Vi ではファイルは上書きされましたが、これはバグだと思われます。 -というのもそういう動作は期待されませんし ':rewind!' コマンドでは書き込まれない +というのもそういう動作は期待されませんし ":rewind!" コマンドでは書き込まれない からです。 Vi では上書きモードで <CR> を打ち込んだときに文字を削除するのは 'ai' がセット @@ -490,33 +493,33 @@ Vi では上書きモードで <CR> を打ち込んだときに文字を削除 ":w!" コマンドは上書き禁止されているファイルでも常に書き込みます。Vi では ":!chmod+w %" してから ":set noro" としなければなりませんでした。 -'tildeop' がセットされていると '~' は演算コマンドとして動作します(移動コマンド +'tildeop' がセットされていると "~" は演算コマンドとして動作します(移動コマンド を後に続けます)。 -'J' (連結)コマンドを実行するときにピリオドの後でスペースを挿入するのを一つだけ -にするように 'joinspaces'(js) オプションを再セットすることができます(Vi では2 -つのスペースが挿入されます)。 +"J" (連結)コマンドを実行するときにピリオドの後でスペースを挿入するのを一つだけ +にするように 'joinspaces'オプションを再セットすることができます(Vi では2つのス +ペースが挿入されます)。 -'cw' はいくつかの文字で構成されるホワイトスペースを変更できます(Vi では 'cw' -はスペースを一つだけ変更するのに 'dw' はすべてのホワイトスペースを削除するとい -う紛らわしい仕様でした)。 +"cw" はいくつかの文字で構成されるホワイトスペースを変更できます(Vi では "cw"は +スペースを一つだけ変更するのに "dw" はすべてのホワイトスペースを削除するという +紛らわしい仕様でした)。 -'o' と 'O' は回数を前置することができます(Vi は表示の一部分を削除します)。 +"o" と "O" は回数を前置することができます(Vi は表示の一部分を削除します)。 Ex コマンドの後につけるフラグはサポートされていません(予定もありません)。 -UNIX システム以外ではでは ":cd" コマンドはホームディレクトリーに移動するのでは -なく(ホームディレクトリはないです)、現在のディレクトリを表示します。":pwd" はす -べてのシステムで現在のディレクトリを表示します。 +UNIX システム以外では ":cd" コマンドはホームディレクトリーに移動するのではなく +(ホームディレクトリはないです)、現在のディレクトリを表示します。":pwd" はすべ +てのシステムで現在のディレクトリを表示します。 ":cd"コマンドの後でもファイル名(引数リストや開いたファイル)は元のファイルを指 -します。Viでは変更のあるファイルには":cd"できません。そうでなければファイル名 +します。Viではファイルに変更があると":cd"できません。そうでなければファイル名 の解釈が変わってしまうからです。 -':source!' コマンドはファイルから Vi コマンドを読み込みます。 +":source!" コマンドはファイルから Vi コマンドを読み込みます。 -':mkexrc' コマンドは現在の変更されているオプションとマッピングを ".exrc" ファ -イルに書き出すコマンドです。':mkvimrc' は ".vimrc" ファイルに書き出します。 +":mkexrc" コマンドは現在の変更されているオプションとマッピングを ".exrc" ファ +イルに書き出すコマンドです。":mkvimrc" は ".vimrc" ファイルに書き出します。 マッピングで「最後が再帰的であるかどうか」のチェックはされません。つまり次のよ うなマッピングもできます。 @@ -529,7 +532,7 @@ UNIX システム以外ではでは ":cd" コマンドはホームディレク :put! コマンドは現在の行の上にレジスターの内容を挿入します。 -Vi での 'p' と 'P' コマンドは挿入されるテキストが一行より短い場合は '.' で繰り +Vi での "p" と "P" コマンドは挿入されるテキストが一行より短い場合は "." で繰り 返すことができませんでした。Vim では常に繰り返すことができます。 ":noremap" コマンドは再マップされないマップを作るのに使うことができます。これ @@ -548,13 +551,13 @@ Vi では ":map foo bar" は前の ":map bug foo" というマッピングを削 '%' レジスターは現在のファイル名を含んでいます。 '.' レジスターは最後に挿入されたテキストを含んでいます。 -':dis' コマンドはヤンクレジスターの内容を表示します。 +":dis" コマンドはヤンクレジスターの内容を表示します。 CTRL-O/CTRL-I は古い/新しい場所に移動するのに使うことができます。これらの移動 する場所は '' コマンドで移動する場所と同じですが他のファイルの中でもありえます。 -':jumps' コマンドは古い場所をリストします。 +":jumps" コマンドは古い場所をリストします。 -'shiftround' オプションがセットされていると '>' と '<' コマンドでは +'shiftround' オプションがセットされていると ">" と "<" コマンドでは 'shiftwidth' の倍数になるようにインデントは調整されます。 'scrolljump' オプションはスクリーンからカーソルが出たときにスクロールする最小 @@ -565,7 +568,7 @@ CTRL-O/CTRL-I は古い/新しい場所に移動するのに使うことがで これを設定しておくとカーソルの前後を見渡せるようになります。かなり大きい数字に セットしておけばカーソル行は常にウインドーの中央に来ることになります。 -大文字のマークはファイルを越えてジャンプするのに使うことができます。':marks' +大文字のマークはファイルを越えてジャンプするのに使うことができます。":marks" コマンドは現在セットされているすべてのマークをリストします。"']"と"`]"は前に操 作を行った場所の最後か、テキストを挿入したかプットした場所の最後に移動します。 "'[" と "`[" は初めに移動します。 @@ -646,7 +649,7 @@ Vim が DIGRAPHS を定義してコンパイルされていれば digraph がサ 挿入をカウントを前置して行う場合、例 "10atest <Esc>"、Vi は初めの挿入に対して のみ wrapmargin を扱うことができましたが、Vim ではすべてに対して扱います。 -'i' か 'a' コマンドでのカウント前置はすべてのテキストに対して利用できます。Vi +"i" か "a" コマンドでのカウント前置はすべてのテキストに対して利用できます。Vi では一つの行に対してのみカウントを前置できました。"3iabc<NL>def<Esc>" は "abcabcabc<NL>def" が Vi の動作で、"abc<NL>defabc<NL>defabc<NL>def" が Vim で の動作です。 @@ -680,7 +683,7 @@ Vim が DIGRAPHS を定義してコンパイルされていれば digraph がサ ではCTRL-Z、":stop"、":suspend" コマンドは新しいシェルを起動します。 出力のための対話的なウインドーなしで Vim が Amiga 上で起動された場合、ウインドー -が開かれます(そうして :sh コマンドは動作します)。'-d' 引数で編集する装置を指定 +が開かれます(そうして :sh コマンドは動作します)。|-d| 引数で編集する装置を指定 することができます(例: "-d con:20/20/600/150")。 'columns' と 'lines' オプションはディスプレイの幅と高さを指定するのに使うこと @@ -719,7 +722,7 @@ Vim は8.3形式のファイルシステムでも正しく動作することが エラーメッセージは少なくとも1秒は表示されます(Vi ではエラーメッセージは上書き されます) -|hit-return| プロンプトが出た場合でもどんなキーでも打つことができます。<CR>、 +|hit-enter| プロンプトが出た場合でもどんなキーでも打つことができます。<CR>、 <NL>、<Space> 以外の文字はコマンド(の最初)として解釈されます(Vi では ':' で始 まるコマンドしか受け付けませんでした)。 @@ -756,37 +759,39 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -- Vim: オプションの終わりです。この後はファイル名のみ書くことがで きます。 ---cmd {command} Vim: execute {command} before sourcing vimrc files. +--cmd {command} Vim: vimrcファイルを読み込む前に{command}を実行します ---echo-wid Vim: GTK+ echoes the Window ID on stdout +--echo-wid Vim: GTK+がウインドウのIDを標準出力に書き出します。 --help Vim: ヘルプメッセージを表示して終了します。 ---literal Vim: take file names literally, don't expand wildcards. +--literal Vim: ファイル名のワイルドカードを処理しません ---nofork Vim: same as |-f| +--nofork Vim: |-f|と同じです ---noplugin[s] Vim: Skip loading plugins. +--noplugin[s] Vim: プラグインの読み込みをしません ---remote Vim: edit the files in another Vim server +--remote Vim: 他のVimサーバでそのファイルの編集をします ---remote-expr {expr} Vim: evaluate {expr} in another Vim server +--remote-expr {expr} Vim: 他のVimサーバで{expr}を評価します ---remote-send {keys} Vim: send {keys} to a Vim server and exit +--remote-send {keys} Vim: Vimサーバに{Keys}を送って終了します ---remote-silent {file} Vim: edit the files in another Vim server if possible +--remote-silent {file} Vim: 可能なら他のVimサーバでファイルの編集をします ---remote-wait Vim: edit the files in another Vim server and wait for it +--remote-wait Vim: 他のVimサーバでファイルの編集をして、それが終わるまで待機 + します ---remote-wait-silent Vim: like --remote-wait, no complaits if not possible +--remote-wait-silent Vim: --remote-waitと同じですが、それが不可能な場合でも + エラーをだしません。 ---role {role} Vim: GTK+ 2: set role of main window +--role {role} Vim: GTK+ 2: メインウインドウのroleを設定します ---serverlist Vim: Output a list of Vim servers and exit +--serverlist Vim: Vimサーバのリストを出力して終了します ---servername {name} Vim: Specify Vim server name +--servername {name} Vim: Vimサーバの名前を指定します ---socketid {id} Vim: GTK window socket to run Vim in +--socketid {id} Vim: Vimを起動するGTKウインドウのsocket --version Vim: バージョンメッセージを表示して終了します。 @@ -795,7 +800,8 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -a Elvis: 指定されたファイル名をそれぞれ一つのウインドーに読み込み ます(Vim では -o を使ってください)。 --A Vim: Start in Arabic mode (when compiled with Arabic). +-A Vim: アラビア語モードで起動します(その機能が組み込まれているな + ら) -b {blksize} Elvis: ファイルのセッションに {blksize} のブロックサイズを使い ます。 @@ -807,18 +813,18 @@ Vim だけがファイル名の後でもオプションを受け付けます。 {command} を Ex コマンドとして走らせます。 Vim: 10個まで "-c" 引数をとることができます。 --d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled - without the |+diff| feature} --d {device} Vim: I/O に {device} を使います(Amiga のみ)。 +-d {device} Vim: I/O に {device} を使います(Amiga のみ)。{|+diff|の機能を + 外してコンパイルされたときのみ} +-d Vim: 'diff'を設定して起動します|vimdiff| --dev {device} Vim: Use {device} for I/O (Amiga only). +-dev {device} Vim: I/O に {device} を使います(Amiga のみ) --D Vim: debug mode. +-D Vim: デバッグモード -e Elvis, Nvi, Vim: あたかも "ex" が起動されたように Ex モードで起 動します。 --E Vim: Start in improved Ex mode |gQ|, like "exim". +-E Vim: "exim"のように、より良いExモードで起動します|gQ| -f Vim: GUI をフォアグラウンドジョブとして起動します(Amiga: 新たに ウインドーを開きません)。 @@ -848,23 +854,23 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -l Nvi, Vi, Vim: 'lisp' と 'showmatch' オプションをセットします。 --M Vim: Modifications not allowed, resets 'modifiable' and the - 'write' option. +-m Vim: 変更を書き込むことを禁止し、'write' オプションを解除します。 --m Vim: 変更を加えることを禁止し、'write' オプションを解除します。 +-M Vim: 変更を加えることを禁止し、'write' オプションと + 'modifiable'オプションを解除します。 -N Vim: コンパチブルモードではないモードで起動します。 -n Vim: スワップファイルを使いません。 --nb[args] Vim: open a NetBeans interface connection +-nb[args] Vim: NetBeansへの接続を開きます --O[N] Vim: Like -o, but use vertically split windows. +-O[N] Vim: -oと同じですが、ウインドウを縦分割します -o[N] Vim: [N] ウインドーを開きます。もしくはそれぞれにそれぞれのファ イルを開きます。 --P {parent-title} Win32 Vim: open Vim inside a parent application window +-P {parent-title} Win32 Vim: 親となるアプリケーションの内側でVimを開きます -q {name} Vim: {name} をクイックフィクスエラーファイルとして使います。 -q{name} Vim: 同上。 @@ -875,7 +881,7 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -r Elvis, Nvi, Posix, Vi, Vim: 復元モード -S Nvi: 'secure' オプションをセットします。 --S {script} Vim: source script after starting up. +-S {script} Vim: 起動後にスクリプトを実行します。 -s Nvi, Posix, Vim: Exモードでは "-"(サイレントモード)と同じです。 Elvis: 'safer' オプションをセットします。 @@ -897,7 +903,7 @@ Vim だけがファイル名の後でもオプションを受け付けます。 Vile: 閲覧モードで起動し、変更は不可です。 -V Elvis, Vim: 冗長なモードで起動します。 --V{nr} Vim: Verbose mode with specified level. +-V{nr} Vim: 特定レベルの冗長なモードで起動します。 -w {size} Elvis, Posix, Nvi, Vi, Vim:'window'の値を{size}にセットします。 -w{size} Nvi, Vi: "-w {size}"と同じです。 @@ -908,11 +914,11 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -x Vi, Vim: 暗号鍵の入力を尋ねさせます。|encryption|もご覧下さい。 --X Vim: Don't connect to the X server. +-X Vim: Xサーバに接続しません。 --y Vim: Start in easy mode, like |evim|. +-y Vim: |evim|のように簡単モードで起動します。 --Z Vim: restricted mode +-Z Vim: 制限モード @{cmdfile} Vile: {cmdfile} を初期化ファイルに使います。 From 185be118d72d3da541b2a29f7b63aee2249a6149 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Fri, 4 Feb 2005 04:20:11 +0000 Subject: [PATCH 022/783] fix: update rileft to 6.3.054 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@22 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/rileft.jax | 172 +++++++++++++++++--------------------------------- 1 file changed, 58 insertions(+), 114 deletions(-) diff --git a/ja/rileft.jax b/ja/rileft.jax index 3cb0cdedb..0292949eb 100644 --- a/ja/rileft.jax +++ b/ja/rileft.jax @@ -1,44 +1,43 @@ COMMENT: 左←右書きモードとヘブライ語の入力 -STATUS: finished 5.7 +STATUS: finished 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*rightleft.txt* For Vim version 5.7. Last change: 1999 Jun 14 +*rileft.txt* For Vim version 6.3. Last change: 2003 May 07 VIMリファレンスマニュアル by Avner Lottem - updated by Nadim Shaikli + updated by Nadim Shaikli -Vimにおける"右左"書きとヘブライマッピング *hebrew* +Vimにおける"右左"書きとヘブライマッピング *rileft* -これらの関数はAvner Lottemによって作成された -E-mail: <alottem@iil.intel.com> -Phone: +972-4-8307322 +これらの機能はAvner Lottemによって作成された + E-mail: alottem@iil.intel.com + Phone: +972-4-8307322 {Vi にはこれらのコマンドはない} *E26* -ここの全ての機能は|+rightleft|機能がコンパイル時に有効にされていた場合に使用可 -能である。 +この機能は|+rightleft|がコンパイル時に有効にされていた場合に使用可能である。 -イントロダクション +はじめに ------------------ -右左指向ファイルでは文字は画面の右から左へ書かれる。この種のファイルはヘブライ -語のドキュメントをTeX--XeT、troffh、fax文章、ヘブライ語のメモなど使って書いて -いる時にとても役に立つ。 - -全ての文字(もしくは文字のグループ)に方向がエンコードされた論理順序ファイル(原 -文: Logical order files)はサポートされない。この種のサポートは既存のエディタに -簡単に追加できるものではないので考慮していない。ヘブライ語のコマンドはないけれ -どもプロンプトとヘルプファイルが追加され、標準的なViのインターフェースが整備さ -れている。既存の近代的で生きたエディタにヘブライ語支援機能を組み込むことの狙い -は、それに続くバージョンでヘブライ語支援の試みを継続することである。多くのヘブ -ライ語支援パッケージが、個々のオリジナル(英語の)ソフトウェアに対してデザインさ -れてきた。そのオリジナルが開発を続ければヘブライ語は常に遅れを取ることになる。 -従ってVimのヘブライ語支援機能は可能な限りシンプルに(短く)なるように心がけ、そ -の結果オリジナルソースに組み込まれることが可能となった。 +アラビア語、ペルシア語、ヘブライ語など、いくつかの言語では文章を右から左へ表示 +する。これらの言語で書かれたファイルは普通に記録され、右から左へ表示するのはグ +ラフィックエンジンの機能です(Unicodeを利用して)。右左指向ファイルでは文字は画 +面の右から左へ書かれる。 + +双方向性(Bidirectionality 略して bidi)はユニコードがこれらの言語を扱うために +提供しているものである。双方向性はユーザーが"右から左"のテキストと"左から右" +のテキストを同時に同じウインドウで適切に表示できるようにする。Vim は現在のと +ころ、簡素でいるために、双方向性を提供していない。単に"右から左"言語を表示、 +入力、使用する機能を提供している。古い混在方法、文字単位 (または複数文字) で +表示する方向を決める方法はサポートされていない。そして、この種のサポートは既 +存のエディタに簡単に加えることはできない (そしてユニコードでも承認されていな +い)。 概要 @@ -47,71 +46,57 @@ o "左右"ファイルの編集はオリジナルのVimと同じで、変更は o "右から左"ウィンドウでファイルを閲覧、編集できる。ファイルはウィンドウ単位 で指向方向を選択できるので、同じファイルを"右左"と"左右"ウィンドウで同時に - 閲覧することが可能である。 - (これはTeX--XeT文書を編集する時に時々便利) + 閲覧することが可能である。(これは表示方向の違う複数の言語が混在している時に + 便利です) o オリジナルのVimとの互換性。ほとんど全ての機能が"右左"モードでも使用できる。 (下記「バグ」の章を参照) -o キーボードマッピングの切替とインサートモードの反転が単一のコマンドで行なえ - る。 - o 反転入力モードからの復帰がファイルの正しい場所で行なわれる(可能な限り)。 o "右左"機能を使用するのに特別な端末を必要としない。"右左"拡張機能は完全に - ハードウェア非依存である。ヘブライ文字のフォントが必要なだけである。 - - MITのXのディストリビューションには少なくとも2つのフォントが含まれている: - heb6x13とheb8x13。幾つかのフォントは次のURLにある - http://sunsite.unc.edu/pub/Linux/X11/fonts/hebxfonts-0.2.tgz - More pointers are in the Hebrew HOWTO on - ヘブライ語のHOWTOにさらにポインタがある - http://sunsite.unc.edu/pub/Linux/docs/HOWTO - MS-WindowのDOS窓でヘブライ語フォントを作成するには、次のを参照。 - ftp://tochna.technion.ac.il/pub/staff/lottem/doswin-0.1.tgz. + ハードウェア非依存である。 -o このサポートに手を加え他の"右左"言語(アラビア語など)に対応させるのは簡単だ - ろう。文字エンコードに合わせてキーボードマッピングを変更するだけで良い。 +o たくさんの言語が"右左"言語サポートを必要とする。このサポートに手を加え他の" + 右左"言語(アラビア語など)に対応させるのは簡単だろう。文字エンコードに合わせ + てキーボードマッピングを変更したり、ほんの少しコードに手を加えればいい。現 + 在はこれら|arabic.txt|, |farsi.txt|, |hebrew.txt|の言語サポートを含んでいま + す。 -変更の詳細 +重要 -------------- -+ オプション: - + 'rightleft' ('rl') ウィンドウを"右から左"指向に設定する。 - + 'hkmap' ('hk') 挿入/置換モードでキーボードをヘブライ語にマップする。 - + 'aleph' ('al'), numeric, ヘブライ語のアルファベットコードの10進数を、キ - ーボードマッピングのために保持する。 - - -+ エンコーディング: - + UNIXではISO 8859-8エンコーディング(ヘブライ文字のコード: 224-250)。 - + MS DOSではPCエンコーディング(ヘブライ文字のコード: 128-154)。 - これらは初期値で'aleph'オプションを使えば上書きできる。 -+ Vimの起動引数: - + 'vim -H file'でヘブライ語ファイルの編集を開始できる。すなわち'rightleft' - と'hkmap'が設定される。 +o 機能を有効にするために + ----------- + + 'rightleft' ('rl') ウィンドウを"右から左"指向に設定する。 + + 'delcombine' ('deco')。真偽値。UTF-8 でエンコードされた言語を編集中に合 + 成文字を構成している文字を削除すると合成文字全体を削除する。 + + 'rightleftcmd' ('rlc') "右から左"指向で便利なように、あるモード (検索な + ど) のコマンドラインの入力方法を設定する。 -+ キーボード: - + 'allowrevins'オプションが挿入とコマンドラインモードでのCTRL-_コマンドを - 有効化する。 +o 後方タイピング *ins-reverse* + -------------- - + 挿入/置換モードでのCTRL-_は'revins'と'hkmap'を次のように切り替える: + 全面的に'rightleft'オプションを使うかわりに、もう一つ逆方向に挿入する方法が + ある。'revins'(逆挿入)オプションが有効になっていると、挿入した文字が後方に + 流れていく。"右左"方向のテキストを入力するのに使える。キャラクタを挿入する + と、カーソルはその場から動かずテキストが右へ流れていく。<BS>はカーソルの下 + の文字を削除する。CTRL-WとCTRL-Uも反対の方向へ働く。'backspace'オプションが + 指定されているかに関わらず<BS>、CTRL-W、CTRL-Uは入力の開始点や行末で停止し + ない。 - "右左"窓においては、英語が入力されることが仮定されるので'revins' - と'nohkmap'が切り替えられる。 + (まだ)逆置換モードは実装されていない。 - 非"右左"ウィンドウにおいては、ヘブライ語が入力されることが仮定されるので - 'revins'と'hkmap'が切り替えられる。 + 'showmode'オプションが設定されていると、逆挿入モードが有効になっている時に + は状態表示行(ステータスライン)に"-- REVERSE INSERT --"が表示されるだろう。 - CTRL-_を押すとカーソルはタイプされたテキストの末尾に移動する。 - - + コマンドモードでのCTRL-_はキーボードマッピングを切り替えるだけである(下 - 記「バグ」の章を参照)。この設定は'hkmap'オプションとは独立であり、 - 'hkmap'が適用されるのは挿入/置換モードだけである。 - - Note: 幾つかのキーボードでは、CTRL-_はCTRL-?にマップされる。 +o "右左"ウィンドウでの貼り付け + ---------------------------- + マウスでカットした文章を"右左"ウィンドウに貼り付けると、"左右"バッファから + カットされたバッファの文字を"右左"ファイルへ入力することになるので、テキス + トは反転される。これを避けるには貼り付け前に'revins'を切り替える。 バグ ---- @@ -119,8 +104,8 @@ o "右左"ウィンドウではCTRL-AとCTRL-X(足し算、引き算)コマン い。 o 逆挿入とコマンドラインでの"右左"モードはサポートされない。しかしながらマッ - ピング、短縮入力、ヘブライ語による検索、コマンドラインでの"左右"入力が可能 - なので、エディタの機能性はそこなわれない + ピング、短縮入力、検索、コマンドラインでの"左右"入力が可能なので、エディタ + の機能性はそこなわれない o "右左"モードでは多少遅くなる。"右左"の動作は端末制御ではなくVimでのエミュ レーションによって実現されているため。 @@ -136,45 +121,4 @@ o 'rightleft'と'revins'が両方とも有効になっていると: 'textwidth' 行が折り返されない; 長い行が作成される。 -後方タイピング *ins-reverse* - -もしも'revins'(逆挿入)オプションが有効になっていると、挿入した文字が後方に流れ -ていく。ヘブライ語を入力するのに使える。キャラクタを挿入すると、カーソルはその -場から動かずテキストが右へ流れていく。<BS>はカーソルの下の文字を削除する。 -CTRL-WとCTRL-Uも反対の方向へ働く。'backspace'オプションが指定されているかに関 -わらず<BS>、CTRL-W、CTRL-Uは入力の開始点や行末で停止しない。 - -(まだ)逆置換モードは実装されていない。 - -'showmode'オプションが設定されていると、逆挿入モードが有効になっている時には状 -態表示行(ステータスライン)に"-- REVERSE INSERT --"が表示されるだろう。 - -'allowrevins'オプションが有効になっていると、CTRL-_を入力することでも逆挿入 -モードに入ることができる。それには特別な機能がある: 第1に、キーボードのマッピ -ングがウィンドウの指向に合わせて変更される -- "左右"ウィンドウならば、ヘブライ -語を入力するために'revins'が設定され、キーボードはヘブライ語用に変更される -('hkmap'が有効化); "右左"ウィンドウならば、英語テキストを入力するために -'revins'が設定され、キーボードは英語用に変更される('hkmap'がリセット)。次に -CTRL-_で'revins'を終了すると、カーソルは(可能ならば)入力したテキストの末尾に移 -動する。 - - -"右左"ウィンドウでの貼り付け ----------------------------------- - -マウスでカットした文章を"右左"ウィンドウに貼り付けると、"左右"バッファからカッ -トされたバッファの文字を"右左"ファイルへ入力することになるので、テキストは反転 -される。これを避けるには貼り付け前に(CTRL-?かCTRL-_をタイプすることで)'revins' -を切り替える。 - - -ヘブライ文字と'isprint'の値 --------------------------------------------- - -時々ヘブライ語のコードは'isprint'の値で定義される表示不可領域にある。例えば -Linuxのコンソールでは、ヘブライ語のフォントエンコーディングは128から始まり、 -'isprint'の初期値は@,161-255となっている。この結果全てのヘブライ文字は~xのよう -に表示される。この問題を解決するには、set isprint=@,128-255と設定する。 - - vim:tw=78:ts=8:ft=help:norl: From aa923b497524256ccb9d92d5a04d135818d93e7d Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 5 Feb 2005 04:11:22 +0000 Subject: [PATCH 023/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@23 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/uganda.jax | 375 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 281 insertions(+), 94 deletions(-) diff --git a/ja/uganda.jax b/ja/uganda.jax index 63e51a0e5..daf98614a 100644 --- a/ja/uganda.jax +++ b/ja/uganda.jax @@ -1,91 +1,250 @@ COMMENT: ライセンス、寄付 -STATUS: finished 5.6 +STATUS: suspended 6.5.054 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*uganda.txt* For Vim version 5.6. Last change: 1999 Dec 28 +*uganda.txt* For Vim version 6.3. Last change: 2004 May 12 VIM REFERENCE MANUAL by Bram Moolenaar - *uganda* *Uganda* *copying* *copyright* + *uganda* *Uganda* *copying* *copyright* *license* 要約 + *iccf* *ICCF* Vim はチャリティウェアです。好きなだけ使ってコピーすることができますが、ウガン -ダの孤児院に寄付を行うことが勧められています。下の |iccf| も参照してください。 - -もし CD-ROM に Vim を含められる場合は、私にそのコピーを送って頂けると嬉しいで -す。たんに世界でどの Vim のディストリビューションが存在しているか知りたいだけ -です(そして友人に見せびらかしたいのです :-))。 - -詳細 -なんらかの変更を加えていない Vim を配布することには何も制限はありません。Vim -の一部分だけを配布することもまた許されますが、このテキストは必ず含められなけれ -ばなりません。変更を加えられていない Vim のソースから作られた実行形式のファイ -ルや、独自の使い方の例や Vim スクリプトを含めることも許されています。 - -もし変更を加えたバージョンの Vim を配布する場合は、メインテナーにソースコード -を含めたコピーを送ることが推奨されます。もしくはメインテナーに ftp を通して入 -手できるようにしてください; そしてどこから入手できるか伝えてください。もし変更 -が小さければ(例: Makefile を変更したなど)差分をメールで送るだけでもよいです。 -また、もしメインテナーが要求した場合はあなたが加えた変更をソースコードを含めて -彼が入手できるようにしなければなりません。 - -メインテナーは Vim の公式バージョンに変更を含める権利を保持します。この権利は -譲渡することができます。メインテナーにそのソースコードを入手可能にしたくない場 -合は、変更を加えたバージョンの Vim を配布することは許されません。 - -現在のメインテナーは Bram Moolenaar <Bram@vim.org> です。もしメインテナーが変 -わった場合は、適切な場所(たぶん www.vim.org と comp.editors が、1番可能性が高 -いです)でアナウンスが行われるでしょう。メインテナーにコンタクトを取るのが完全 -に不可能である場合は、メインテナーに変更を加えたソースコードを送る義務は消滅し -ます。 - -Vim のソースコードもしくはその一部分の配布からこれらの制限を取り除くことは許さ -れません。この制限は、それがどんな文書を付加されていても、過去のVimのリリース -にも適用されます。 - - *iccf* -もし Vim に満足しているならば、このファイルの残りの部分を読むことでそれを表現 -してください。http://www.vim.org/iccf/ をご覧になることもできます。 - - *kcc* +ダの孤児院に寄付を行うことが勧められています。下の |kcc| を参照するか、ICCFの +ウェブサイトを訪れてください。URLは以下のとおりです。 + + http://iccf-holland.org/ + http://www.vim.org/iccf/ + +Vimの開発のスポンサーに成ることもできます。Vimのスポンサーは機能要望に投票でき +ます。|sponsor|をご覧ください。 + +Vimのドキュメントには Open Publication License が適用されています。 +|manual-copyright|をご覧ください。 + +=== begin of license === + +VIM LICENSE + +I) There are no restrictions on distributing unmodified copies of Vim except + that they must include this license text. You can also distribute + unmodified parts of Vim, likewise unrestricted except that they must + include this license text. You are also allowed to include executables + that you made from the unmodified Vim sources, plus your own usage + examples and Vim scripts. + +II) It is allowed to distribute a modified (or extended) version of Vim, + including executables and/or source code, when the following four + conditions are met: + 1) This license text must be included unmodified. + 2) The modified Vim must be distributed in one of the following five ways: + a) If you make changes to Vim yourself, you must clearly describe in + the distribution how to contact you. When the maintainer asks you + (in any way) for a copy of the modified Vim you distributed, you + must make your changes, including source code, available to the + maintainer without fee. The maintainer reserves the right to + include your changes in the official version of Vim. What the + maintainer will do with your changes and under what license they + will be distributed is negotiable. If there has been no negotiation + then this license, or a later version, also applies to your changes. + The current maintainer is Bram Moolenaar <Bram@vim.org>. If this + changes it will be announced in appropriate places (most likely + vim.sf.net, www.vim.org and/or comp.editors). When it is completely + impossible to contact the maintainer, the obligation to send him + your changes ceases. Once the maintainer has confirmed that he has + received your changes they will not have to be sent again. + b) If you have received a modified Vim that was distributed as + mentioned under a) you are allowed to further distribute it + unmodified, as mentioned at I). If you make additional changes the + text under a) applies to those changes. + c) Provide all the changes, including source code, with every copy of + the modified Vim you distribute. This may be done in the form of a + context diff. You can choose what license to use for new code you + add. The changes and their license must not restrict others from + making their own changes to the official version of Vim. + d) When you have a modified Vim which includes changes as mentioned + under c), you can distribute it without the source code for the + changes if the following three conditions are met: + - The license that applies to the changes permits you to distribute + the changes to the Vim maintainer without fee or restriction, and + permits the Vim maintainer to include the changes in the official + version of Vim without fee or restriction. + - You keep the changes for at least three years after last + distributing the corresponding modified Vim. When the maintainer + or someone who you distributed the modified Vim to asks you (in + any way) for the changes within this period, you must make them + available to him. + - You clearly describe in the distribution how to contact you. This + contact information must remain valid for at least three years + after last distributing the corresponding modified Vim, or as long + as possible. + e) When the GNU General Public License (GPL) applies to the changes, + you can distribute the modified Vim under the GNU GPL version 2 or + any later version. + 3) A message must be added, at least in the output of the ":version" + command and in the intro screen, such that the user of the modified Vim + is able to see that it was modified. When distributing as mentioned + under 2)e) adding the message is only required for as far as this does + not conflict with the license used for the changes. + 4) The contact information as required under 2)a) and 2)d) must not be + removed or changed, except that the person himself can make + corrections. + +III) If you distribute a modified version of Vim, you are encouraged to use + the Vim license for your changes and make them available to the + maintainer, including the source code. The preferred way to do this is + by e-mail or by uploading the files to a server and e-mailing the URL. + If the number of changes is small (e.g., a modified Makefile) e-mailing a + context diff will do. The e-mail address to be used is + <maintainer@vim.org> + +IV) It is not allowed to remove this license from the distribution of the Vim + sources, parts of it or from a modified version. You may use this + license for previous Vim releases instead of the license that they came + with, at your option. + +=== end of license === + +=== ライセンス日本語訳 ここから === + +訳注: この日本語訳は参考のために示すものであり、法的効力を持ちません。 +訳注: 必ず上記の原文を参照してください。 + +VIM ライセンス + +I) Vim のコピーを変更せずに配布することは、このライセンス文を含めなければな + らないこと以外に制限されません。また、変更を加えていない Vim の一部分だ + けを配布することも同様に、このライセンス文を含めなければならないこと以外 + に制限されません。配布物には、変更を加えていない Vim のソースから作成し + た実行可能ファイルや、あなた独自の説明書や Vim スクリプトを含めることも + できます。 + +II) 以下の条件を満たす場合に限り、Vim に変更 (または拡張) を加えた物を、実行 + 可能ファイルやソースコードも含めて配布することが認められています: + 1) このライセンス文を変更せずに配布物に含めること。 + 2) 変更された Vim は以下の 5 つの方法のどれかで配布しなければならない。 + a) Vim に独自の変更を加えた場合、配布物にあなたの連絡先を明確に示して + ください。メンテナがあなたが配布した変更された Vim のコピーについ + て (何かを) 尋ねたときに、あなたが加えた変更を、ソースコードも含め + て、無償で、メンテナが利用できるようにしなければなりません。メンテ + ナは公式なバージョンの Vim にあなたの変更を取り込むために適切に保 + 存します。メンテナがあなたの変更をどのようにし、どういったライセン + スで配布するかを交渉することができます。交渉するものがなければ、こ + のライセンス、もしくはこれの新しいバージョンのライセンスがあなたの + 変更に適用されます。現在のメンテナは Bram Moolenaar <Bram@vim.org> + です。これが変更されるときは適切な場所で告知されます(おそらく + vim.sf.net やwww.vim.org そして comp.editors)。もし本当にメンテナ + と連絡が取れない場合には、あなたの変更を提出する義務はありません。 + 一旦、メンテナがあなたの変更を受け取ったことを確認できたなら、再度 + 提出する必要はありません。 + b) a) に基づいて配布された変更された Vim を受け取った場合、それを変更 + することなしに、I) に基づいて再配布できます。さらなる変更を加えた + 場合、その変更には a) が適用されます。 + c) 変更された Vim の配布物全てに、ソースコードも含めて、全ての変更点を + 提供してください。これは context diff の形式にしてください。あなた + が加えた新しいコードに対してどのライセンスを適用するか選択できます。 + その変更とライセンスは、公式なバージョンの Vim に取り込むことで、他 + のものを制限してはいけません。 + d) c) に基づいて配布された変更された Vim があるとき、次の条件を満たす場 + 合に限り、そのソースコードを含めずに配布することができます: + - その変更に適用されているライセンスが、その変更を無償で制限なしに + Vim のメンテナに提供することを認め、そして、Vim のメンテナがその + 変更を公式なバージョンの Vim に取り込むことを無償で制限なしに認 + めている。 + - その変更された Vim の変更点を、最後に配布したときから少なくとも + 3 年は保持してください。その期間内に、メンテナや誰かがその変更に + ついて (何かを) 尋ねた場合、彼らがその変更を利用できるようにしな + ければなりません。 + - その配布物にあなたの連絡先を明確に示してください。その連絡方法は、 + その変更された Vim に相当する配布物が最後に提供されてから、少なく + とも 3 年、そして可能な限り長く、有効でなければなりません。 + e) その変更に GNU General Public License (GPL) が適用されている場合、 + GNU GPL バージョン 2、またはそれより新しいバージョンに基づいて、その + 変更された Vim を配布することができます。 + 3) その変更された Vim を利用しているユーザーが、それが変更されていると確 + 認できるように、少なくとも、":version" コマンドや起動時の挨拶メッセー + ジに、変更されている旨を表示しなければなりません。その配布物が 2)e) + によるものである場合、そのライセンスが変更前のものと矛盾していない、 + という旨のメッセージだけが必要です。 + 4) 2)a) と 2)d) により要求されている連絡方法を、その本人が訂正する以外 + に、変更したり削除してはいけません。 + +III) 変更された Vim を配布する場合、あなたの変更に Vim のライセンスを使い、 + その変更を、ソースコードも含めて、メンテナが利用できるようにすることが奨 + 励されています。そのためには電子メールで送るか、サーバにアップロードして + その URL を電子メールで知らせるのが望ましいです。少しの変更なら (例えば + Makefile の変更など) context diff を電子メールで送るのがいいでしょう。電 + 子メールの送り先は <maintainer@vim.org> です。 + +IV) Vim のソースや、その一部、または変更された Vim、の配布物からこのライセン + スを削除することは認められていません。望むなら、以前の Vim リリースに、 + その時点のライセンスではなく、このライセンスを適用することができます。 + +=== ライセンス日本語訳 ここまで === + +Note: + +- Vim に満足しているならば、このファイルの残りの部分を読み、ウガンダの貧しい子 + 供たちを助けることを考えてみてください。 + +- さらにVimの開発に協力したいならスポンサーになることを検討してみてください + |sponsor|。 + +- Richard Stallman にならってVimのライセンスは GNU GPL互換です。彼がそれを確認 + してから多少の変更が加えられましたが、違いはないでしょう。 + +- もしVimに GNU GPL のライブラリをリンクするとそれの配布形態が GNU GPL に制 + 限されます。あなたがVimに何の変更も加えていなくてもそうです。 + +- 一度でも GNU GPL を含む変更を加えた場合、それ以降の変更も GNU GPL 互換のライ + センスを使うことを余儀なくされます。 + +- Vimに改良を加えたバージョンを配布するとしたら、configureの引数に + "--with-modified-by"を指定するかMODIFIED_BYを定義して、あなたの名前を連絡先 + に含めることができます。 + +============================================================================== +Kibaale Children's Centre *kcc* + Kibbale Children's Centre (KCC) はウガンダの南部にある小さな町 Kibbale にあり ます。ウガンダは東アフリカに位置しており、タンザニアの近くに位置しています。そ の地域は Rakai District として知られています。人口の大部分は農民で、貧乏ではあ りますが食料は十分にあります。しかしこの地域は世界のほかの場所よりも AIDS で苦 しんでいます。AIDS はここから始まったという人もいます。ウガンダ人の 10-30% が HIV に感染していると推定されています。両親が死んでしまうので孤児がたくさんいま -す。この地域では人口 350.000 人のうちの 60.000 人の子供が親の片方もしくは両方 +す。この地域では人口 350,000 人のうちの 60,000 人の子供が親の片方もしくは両方 をなくしており、この数値はまだ増え続けているのです。 子供たちは多くの援助を必要としています。KCC は食料、医療、教育を彼らに提供する ために懸命に働いています。食料と医療は彼らを今健康にするために、そして教育は彼 -らの将来の手助けをするためです。KCC はクリスチャンがベースで行われていますが、 -子供たちの宗教にかかわらず援助は行われています。 +らの将来の手助けをするためです。KCC はキリスト教の教えに基づいて活動しています +が、子供たちの宗教にかかわらず援助は行われています。 この地域の問題を解決する鍵は教育です。過去数年にわたる Idi Amin 大統領の時代と -それに続く市民戦争によってこれは顧みられてきませんでした。今は政府が再び安定に -なりましたし、子供と親は自分自身の健康をどうやって保つか、そしてどうすれば感染 -を避けられるかを学ぶ必要があります。病気にかかっている人々や空腹を抱えている人 -々への援助もなされていますが、第一の目標は人々を病気から遠ざけることであり、そ -して体によい食料を育てる方法を彼らに教えることです。 - -だんだん大所帯になっていく家族の中で、ほとんどの孤児は生活しています。叔父か姉 -が彼らの世話をしています。これらの家族は大家族であるのに収入は少ないので、子供 -が体によい食料を得られるのは希です。まして衣類、医療、学校に通うことなどは無理 -なのです。これらの貧しい子供たちを助けるためにスポンサーシップ・プログラムが行 -われていました。子供は経済的に養子になるのです。月に数ドルのお金で KCC が子供 -たちが欠くことのできないものを得られるようにするのです。それは健康であり、また -学校に通うことです。また KCC は、その他子供とそれを支える家族が必要とするもの -の面倒を見ています。 +それに続く市民戦争により、これは軽視されていました。今は政府が再び安定しました +し、子供と親は自分自身の健康をどうやって保つか、そしてどうすれば感染を避けられ +るかを学ぶ必要があります。病気にかかっている人々や空腹を抱えている人々への援助 +もなされていますが、第一の目標は人々を病気から遠ざけることであり、そして体によ +い食料を育てる方法を彼らに教えることです。 + +ほとんどの孤児は、だんだんと大所帯になっていく家庭で生活しています。叔父や姉が +彼らの世話をしています。このような家庭は大家族でありながら収入は少ないので、子 +供が体によい食料を得られるのは希です。まして衣類、医療、学校に通うことなどは無 +理なのです。このような貧しい子供たちを助けるために資金援助制度が設けられまし +た。子供は経済的に養子になるのです。KCC は、月に数ドルのお金で、子供たちに必要 +なもの、健康や学校に通うことなどを手配します。また KCC はその他にも、子供とそ +の世話をしている家族が必要とするものの面倒を見ています。 子供を直接援助するほかに、子供が育つ環境を改善する必要があります。KCC は学校の -教育方法が改善されるよう援助を行っています。センターにはデモンストレーション学 -校があり教師の養成が行われています。保健に従事する人の教育も行われ、衛生教育も -行われており、一家に適切なトイレを作るように励まされています。私はセメントの厚 -い板を作る現場を設立する手助けを行いました。これらはよいトイレを作るのに使われ、 -そしてコスト以下の値段で売られています。 +教育方法が改善されるよう援助を行っています。センターには実地教育をする学校 +(demonstration school) があり、教師を指導しています。保健に従事する人の育成も +されており、衛生教育も行われています。そして、各家庭が適切なトイレを作れるよう +に支援しています。私はセメントの厚い板を作る現場を設立する手伝いをしました。そ +の板はよいトイレを作るのに使われ、そしてコスト以下の値段で売られています。 プロジェクトには小さな診療所があり、子供たちとその家族が医療を受けられるように しています。そして必要があれば病院へ移ることを申し出ます。病気の予防プログラム @@ -96,39 +255,41 @@ HIV に感染していると推定されています。両親が死んでしま ました。センターを拡大するための手助けを行い、そして飲料水の改善を行う地区と衛 生設備の改善を行う地区で働いていました。そして KCC が提供している援助が本当に 役に立っていることを学んできました。いまはオランダに戻ってきているのですが -KCC のサポートを続けたいと思います。これを実行するために私は基金を設立し、そ -してスポンサーシップ・プログラムを組織化しました。下記のうちの1つを考慮してみ -てください: - -1. 1人の子供のスポンサーとなる: 月に15ドル (オランダ: fl 27,50) -2. 1人の子供のスポンサーとなりその環境を改善する: 月に25ドル - (オランダ: fl 45) -3. ヘルスチームのスポンサーになる: 月もしくは4半期ごとにいくらでも +KCC のサポートを続けたいと思っています。これを実行するために私は基金を設立し、 +そしてスポンサーシップ・プログラムを組織化しました。下記のうちの1つを考慮して +みてください: + +1. 1人の小学生のスポンサーとなる: 月に17ユーロ(か、もっと) +2. 1人の中学生のスポンサーとなる: 月に25ユーロ(か、もっと) +3. 診療所のスポンサーになる: 月もしくは4半期ごとにいくらでも 4. 1度に限定した寄付(A one-time donation) 他の組織に比べると子供のスポンサーシップの料金はかなり低いです。これはお金が直 接センターに届くようになっているからです。5% 以下しか運営には使われていません。 このことが可能になったのはこの組織が小さく、そしてボランティアで運営されている からです。もし子供のスポンサーになろうと思っているのならば、少なくとも1年は続 -けるつもりがあるべきです。 +ける心構えを持ってください。 -お金が適切に使われていることをどうやって知ればいいのでしょう? まず、私は Vim +お金が適切に使われていることをどうやって知ればいいのでしょう? まず、私は Vim の作者として個人的に信用されています。そして私はセンターで働いている人々を信用 していますし、彼らを個人的に知ってもいます。さらには、このセンターは World Vision と Save the Children Fund と International Child Care Fund によって共 -同運営・監督されています。センターは少なくとも1年に1回は訪問を受けて進行をチェ -ックされています(自費で)。私自身1996年と1998年にセンターを訪問しました。 +同運営・監督されています。センターは1年に約1回は訪問を受けて進行をチェックされ +ています(自費で)。私自身1996年、1998年、2000年、2001年、そして2003年にセンター +を訪問しました。ICCFのウェブサイトに訪問レポートがあります。 もし他に質問がありましたら、私にメールを送ってください: <Bram@vim.org> センターの住所: - Kibaale Childrens Centre + Kibaale Children's Centre p.o. box 1658 Masaka, Uganda, East Africa 送金: -USA とカナダ: Canada、SurreyのKibaale Children's Fund(KCF)とコンタクトを取っ +最新の情報はICCFのウェブサイトをご覧ください。ICCFのURLは|iccf|をご覧ください。 + +アメリカとカナダ:Canada、SurreyのKibaale Children's Fund(KCF)とコンタクトを取っ てください。彼らはKibaaleの子供たちのために、カナダのスポンサー を世話しています。1度に限定した寄付の場合は、そこに直接送ること ができます。Vimによってどのくらい寄付が行われているのかを知りた @@ -138,32 +299,58 @@ USA とカナダ: Canada、SurreyのKibaale Children's Fund(KCF)とコンタク 10238-168 Street Surrey, B.C. V4N 1Z4International Child Care Fund Phone: 604-581-5353 + Kibaale Children's Fund (KCF) に寄付をすると、税領収書を受け取 + ることができ、納税申告で提出することができます (自由貿易協定 + (Free Trade Agreement) により、カナダの公認団体により発行され + た税領収書は、少しの手続きでアメリカの米国税務局 (IRS) に受領 + されます)。 オランダ: Venlo の "Stichting ICCF Holland" の口座に振り替えてください。 こうすることで税金が控除されます(もしオランダに住んでいれば)。 Postbank, nr. 4548774 -ヨーロッパ: 銀行の手数料を避ける最良の方法は私に直接 Eurocheque を送ること - です。Dutch Guilders (DFL) の "Bram Moolenaar" に小切手を書い - てください。しかし他の方法でもよいはずです。スポンサーシップに - 関しては尋ねてみてください。 +ドイツ: 納税申告で寄付を考慮することができます。 + 最新の情報は ICCF のウェブサイトを御覧下さい: + http://iccf-holland.org/germany.html + +ワールド: 郵便為替を使ってください。ほとんどの国で、たいていは郵便局か + ら送れます。この名前を使ってください (これは私のパスポートの + ものです): "Abraham Moolenaar"。可能なら通過はユーロにしてく + ださい。 + +ヨーロッパ: 可能なら銀行振り込みを使ってください。あなたの銀行はそのための + 方法を用意しているはずです。swift codeとIBAN numberはこの下の + "Others"の項をご覧ください。 + 他の方法も使えると思います。スポンサーシップに関しては尋ねてみ + てください。 + +クレジットカード:PayPal を使ってクレジットカードで送金できます。これはイン + ターネット上でもっとも広く使われているシステムです。これは本 + 当に簡単です。詳細はこのリンク先を見てください: + https://www.paypal.com/affil/pal=Bram%40moolenaar.net + 送金のための e-mail アドレスは: + Bram@iccf-holland.org + 150 ドル以上の送金は小切手が望ましいです。 + +その他の地域: 可能であれば次のうちのどれかの口座に振り替えてください: + Postbank, account 4548774 + Swift code: INGB NL 2A + IBAN: NL47 PSTB 0004 5487 74 + under the name "stichting ICCF Holland", Venlo + これがうまく行かなければ: + Rabobank Venlo, account 3765.05.117 + Swift code: RABO NL 2U + under the name "Bram Moolenaar", Venlo + それ以外は、ユーロか US ドルで小切手を下記のアドレスに送って + ください。最小の金額は: 70 ドルです(私が利用している銀行はそ + れ以下の海外からの小切手は受け付けないのです、ごめんなさい)。 + + +小切手の送り先: stichting ICCF Holland Bram Moolenaar Clematisstraat 30 5925 BE Venlo The Netherlands -その他の地域: 可能であれば次のうちのどれかの口座に振り替えてください: - Postbank, nr. 4548774 - 名前は "stichting ICCF Holland", Venlo です。 - これがうまく行かなければ: Rabobank Venlo, nr. 3765.05.117 - 名前は "Bram Moolenaar", Venlo です。 - それ以外は、US ドルで小切手を上記のアドレスに送ってください。 - 最小の金額は: 70 ドルです(私が利用している銀行はそれ以下の海外 - からの小切手は受け付けないのです、ごめんなさい)。 - -もう一つの方法は郵便為替を送る方法です。この方法はどの国からも利用できるはずで -す。この名前を使ってください(私のパスポートに使われているものです): "Abraham -Moolenaar"。上記したVenloのアドレスと一緒です。 - vim:tw=78:ts=8:ft=help:norl: From ccc0a4736d8b06809f62db95b01b05921638f953 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Tue, 8 Feb 2005 18:29:14 +0000 Subject: [PATCH 024/783] fix: update and rename quotes git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@24 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/quote.jax | 248 ---------------------------------------------- ja/quotes.jax | 269 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 269 insertions(+), 248 deletions(-) delete mode 100644 ja/quote.jax create mode 100644 ja/quotes.jax diff --git a/ja/quote.jax b/ja/quote.jax deleted file mode 100644 index d736fadc4..000000000 --- a/ja/quote.jax +++ /dev/null @@ -1,248 +0,0 @@ -COMMENT: Vimについての引用集 -STATUS: finished 5.7 -TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> - -*quotes.txt* For Vim version 5.7. Last change: 1999 Jun 08 - - - VIMリファレンスマニュアル by Bram Moolenaar - - - *quotes* -ニュースやメールから集めた、VIMに関する素晴らしい引用を紹介する。 - - -vim (vim) 名刺 - 溢れんばかりのバイタリティとエネルギー。 [ラテン語, 『力』 -の直接目的格, 力] (辞書) - -VIMはviより大変優れているので、私の古いviの多くの偉大な:mapがすぐに廃れてし -まった! (Tony Nugent, オーストラリア) - -新しいのと修正された資料の準備の間、多くのプログラムが使用されたけれども、編 -集のほとんどはGNU-Linux(RedHat 4.2)上のVIMのバージョン4.5と5.0で行なわれ -た。 (Arnold Robbins, イスラエル, "Learning the Vi editor"の著者) - -魚が水のことを意識しないと思われるのと同様に、私はほとんどVIMについて意識し -ない。それは総ての中にある環境である。私は相当に忙しいシステム管理者で、多く -の異なるプラットホームを扱っている。VIMは私のシステム総てに共通して存在する -唯一のもので、「時々クラッシュする」ということもない唯一のものだ。新しいシス -テムにVIMが入っていなかったときには、私は真っ先にインストールする。どの環境 -でもまったく信頼のおける同じツールを使うことができることは素晴らしく、おかげ -でVIMについては無視することができ、その他のものについては考えることができる -のだ。 (Pete Schaeffer) - -最近ノキアの端末を通してtelnet経由でVIMを起動することに成功した、現在Palm -Pilotでも素晴らしく動いたことを報告できる。 (Allan Kelly, スコットランド) - -Bram! 'VIM'というなんてものすごい仕事をしたものだ! 使えば使うほど感動するよ -(私は古い'vi'のダイハードで1970年代後半の初期の'emacs'から使い始め、1983年に -初期のUNIXで'vi'を見つけることで救われた)。私の考えでは、標準のトップエディ -タとして'VIM'が'emacs'に置換わる時だよ。 (Bo Thide', スウェーデン) - -私もVIMを深く愛し使っている。 (Larry Wall (訳注:Perlの作者)) - -Viはまるでフェラーリだ。初心者にはまるで暴れ馬だが、いったんコツさえ掴んでし -まえば、非常に小さくパワフルかつ高速だ! (不明) -VIMはまるでフェラーリの新モデルだ。発音もそっくり - "VIIIIIIMMM!"。(Stephen -Riehm, ドイツ) - -Schon bei Nutzung eines Bruchteils der VIM-Funktionen wird der Benutzer recht -schnell die Vorzuege dieses Editors kennen- und schaetzenlernen. -翻訳: VIMの機能をほんの少し使うだけでも、ユーザはすぐに使うことができこのエ -ディタの強みを正しく評価するだろう。 (Garry Glendown, conclusion of an -article on VIM in iX magazine 9/1998) - -つい最近VIについてのオライリーの本を手に入れた(VIMについても深く言及されてい -た)。このアプリケーションがあまりにパワフルで驚愕した。 (Jeffrey Rankin) - -坊や、私は私自身VIMについてほとんど総てのことを知っていると考えていた。しか -しいつもオンラインドキュメントを眺めるたびに、それまで知らなかったVIMの機能 -の小さな、しかしクールな面を見つけるんだ!。これは私がみた中でも(多くの商業製 -品と比べてさえも)最高のドキュメントであると言わねばならない。 (Gautam -Mudunuri) - -VIM 4.5は本当に素晴らしい(ファンタスティックな)エディタだ。VIMにはものす -ごぉぉぉぉい多くの機能があり更に重要なことには、初期設定が素晴らしいので本当 -に何の変更も無しに使うことが出来るのだ!!。VIM作者への私の驚きと感謝の念はど -んな言葉をもっても語り尽くせない。この先もそうであって。 (Vikas, アメリカ合 -衆国) - -人々が他のViエディタをVIMのクローンと呼ぶようになるまでどのくらいかかるだろ -うか? (Darren Hiebert) - -"Perfect Programmer's Editor"のスレッドにある[makeのエラーに基づいて自動的に -ファイルの位置へ飛ぶ]というのを読んで、VIMは既にそれをサポートしているので嬉 -しかった。 (Brendan Macmillan, オーストラリア) - -VIM (5.0)を発見して多くの知人とそれについて話をした。VIMはVIの新世紀 -(Millenium)を象徴するんだ、と彼らに言い聞かせた。本当にありがとう! (Matt F. -Valentine) - -"vi"は今から"Vim Imitation(Vimのものまね)"と呼ばれるべきで、逆ではないと考え -る(訳注: VIMはもともとVi IMitationに端を発している)。 (Rungun Ramanathan) - -VIMの法則(訳注: 数学の公式風に): -プログラムPの考え得る限りの動作空間Bの中で各々の要素をbとした時、プログラムP -の全ユーザ空間Uのうち少なくとも1人のユーザuが、ある動作bを許された動作空間B' -に加えるように要求するまでにかかる時間は有限である。 (このときB'は B' <= B -となる) -言い換えれば: 遅かれ早かれ全員がオプションとして総てを欲しがるんだよ (Negri) - -あたらしい計算機プラットホームに移る時はいつも、決まってまず最初にやるのは -VIMを移植すること。後にconfigureを使った時にコンパイルの簡単さにビックリし -た。 (A.M. Sabuncu, トルコ) - -オプションが本当に優秀でとてもパワフルだ。 (Anish Maharaj) - -ユーザインターフェースのデザインは春であり、80x24テキスト専用モードのブ -ティックからの「言葉は復讐に戻った!」。ViエディタのクローンであるVIMは、5.0 -のシンタックスハイライトによって3月のデスクトップに眩暈のするパステルの景色 -をもたらした。金切り声とカスタマイズ性、VIMは伝統的なViのシングルキーマクロ -集に独自の解釈をすることで、我々を驚かせる。(訳注: 原文が難解でまったく自信 -無) -http://www.ntk.net/index.cgi?back=archive98/now0327.txt&line=179#l - -VIM 5の衝撃をどうしても伝えたかったんだ!。シンタックスハイライティング: これ -無しでどうやって生きろって?!。人類最高のエディタを作ってくれてありがとう! -(Mun Johl, アメリカ合衆国) - -重ね重ねVIMには感謝する。Linuxで毎日使っている。 (Eric Foster-Johnson, "UNIX -Programming Tools"の著者) - -史上最高のエディタ (Stuart Woolford) - -VIMの素晴らしい機能のほとんどを少なくとも1度は、ものによってはもう何度も頻繁 -に使ってきた。正直に白状しよう、どれ1つ欠けても生きていけない。viを使ってい -た頃の自分と生産性を比べると、優に倍にはなっている。 (Sitaram Chamarty) - -VIMを愛している。信じられないよ(incredible)。最初の子供にVimberlyと名づけ -た。 (Jose Unpingco, アメリカ合衆国) - -ヒント: "VIM"は"vi improved(vi改)"っていうほうが良い! (Sven Guckes, ドイツ) - -毎日VIMを使っている。他のどんなプログラムよりもVIMと共に過ごす時間が長い…。 -存在するviクローンの中で最高だ。とてもすごいよ。 (Craig Sanders, オーストラ -リア) - -その無限アンドゥ/リドゥで私を幾度となく悲しみから救ってくれた---VIMを使用す -るように強く薦める。 (Terry Brown) - -私の考えうるなかで、この惑星で最良のテキストエディタを書いて(作成して)くれた -ことにたいへん感謝する。次に猫を飼うときは"Vim"と命名したい。 (Bob Sheehan, -アメリカ合衆国) - -:set allとタイプすればオプションで画面が埋め尽くされる。画面全体のものが設定 -か非設定かされている。wrapmarginやmodelinesやshowmodeといった古い友人たちも -見つけたが、新しい友人たちで画面は埋め尽くされていた。私は彼らを愛している!! -私はVIMを愛している!! このエディタに出会えてとても幸せだ! この感じはかつてed -を数年使った後にviに出会った時感じたものに似ている。今まで私が愛したedや、ま -してviを捨て去る日が来るとは考えもしなかった…あぁ神様、viは偉大だった。でも -今は、VIM。 (Peter Jay Salzman,アメリカ合衆国) - -こんな素晴らしいソフトウェアパッケージがあるなんて、私は本当に幸せだ。どんな -高価なソフトよりも良質で、しかも在庫切れということがない。 (Jeff Walker) - -VIMのドキュメントを読むといつも、エディタのパワーに興奮し打ちのめされる。 -(William Edward Webber, オーストラリア) - -VIM万歳!! それはviのように"すぐ手の届くところにあり"、viがひどく必要とした拡 -張がなされている: コマンドを実行すべきブロックの強調表示、簡単に操作でき消化 -できるヘルプ画面、その他沢山。 (Paul Pax) - - -私がこの素晴らしく便利なマクロをもう使わない理由は、今はそれらが組み込まれて -いるVIMを使っているからだ。 (Stephen Riehm, ドイツ) - -私はVIMのユーザで、それを愛している。自分の総てのプログラミング、C、C++、 -HTML、そのほか総てにおいてVimを使用している。 (Tim Allwine) - -私はオリジナルのviと苦闘すること数年の後にVIMを発見し、もうそれなしでは生き -ていけなくなった。 (Emmanuel Mogenet, アメリカ合衆国) - -EmacsにはVimが活躍するほどに長く生き残るチャンスはこれっぽっちもない。加え -て、これほどまでに詳細に渡って記されたドキュメントをい持つソフトウェアを見た -ことがない---しかもそれは多くの商用ソフトウェアよりも素晴らしい! (Leiming -Qian) - -このVIMのバージョンは、それがどんなに素晴らしいものが発見するたびに人々を驚 -愕させるだろう! (Tony Nugent,オーストラリア) - -貴方のアドバイスに従い、ついにVIMを入手し、本当に感動した。すぐに転向した。 -(Patrick Killelea, アメリカ合衆国) - -VIMはとりわけ好きなシェアウェアで、特にバージョン3.0がお気に入りだ。これは本 -当にしっかりした仕事だ。 (Robert Colon, アメリカ合衆国) - -VIM is a joy to use, it is so well thought and practical that I wonder why -anybody would use visual development tools. (訳注: うまく訳せていない) -VIMを使用するのはたのしいし、とても良いもので役に立つ。何故ほかの人たちがビ -ジュアル開発ツールを使おうとするのか理解に苦しむ。VIMはパワフルで優雅で、一 -見単純だが実は747(訳注: ボーイングのジェット機)のように複雑で(とりわけ成長し -た私の.vimrc)、この素晴らしい仕事を続けて欲しいし、VIMはフリーソフトウェア界 -の中心だ。 (Louis-David Mitterand, アメリカ合衆国) - -VIMを使うことがこんなに素晴らしいなんて未だに信じられない。職場の仲間は私が -それを誉めちぎるのを聞かされ過ぎて疲れているだろう。他の人の目が輝きだす。 -(Rick Croote) - -Emacsは起動と実行にかなり時間がかかり、実際に使用するには大きくかさばってい -て、インターフェースは助けになるよりもむしろ混乱させる。しかしながらVIMは小 -さく、早く、パワフルで、素晴らしいインターフェースを持っていて、あらゆる用途 -に使うことができる。 (Paal Ditlefsen) - -VIM3.0を初めて得た時から、非常に熱狂した。ほとんど何の問題点もみあたらなかっ -た。スワップファイルの扱いとバックアップの可能性が非常に堅固で、ひとつのファ -イルを2重に編集することから守ってもくれる。VIとの互換性も非常に高い(この数年 -私の脳はすっかりVIに洗脳されているので、これは絶対条件である)。 (Gert van -Antwerpen,オランダ) - -VIMのビジュアルモードは、凄くパワフルな機能だ! (Tony Nugent, オーストラリア) - -VIMは今までネットに存在しなかった(訳注: 定冠詞THEが付く)唯一のもっとも偉大な -ソースコード作品と言わざるを得ないだろう。 (Jim Battle,アメリカ合衆国) - -実際、新しいviが必要ならばVIM-3.0をお奨めする。これは今まで見たなかで断然最 -高のバージョンのviだ。 (Albert W. Schueller) - -VIMは良いエディタで他の如何なるものにも匹敵するものだ、というべきだろう。 -(Ilya Beloozerov) - -実を言えば時々elvis、vile、xvi、calvinやその他の使っていた。だからこそVIMが -最高だと断言できる!! (Ferenc Deak, ハンガリー) - -VIMは私が長年使用してきた断然最高のエディタである。そして私が使用した総ての -プラットホームに存在するいろんなものをみてきた。それらのなかでもVIMは最高 -だ。 (Guy L. Oliver) - -VIMは石ミノ以来、最高のエディタです。 (Jose Unpingco, アメリカ合衆国) - -こう言いたい、VIMに出会って私はついにemacsからviに鞍替えした - あらゆる点で -優れたエディタだ:キーボードレイアウト、メモリ使用量、text alteration to name -3(訳注:訳不明)。 (Mark Adam) - -実際、今vi独特の設定について知りたいのならば、VIMを起動してそのヘルプを -チェックする! (Nikhil Patel, アメリカ合衆国) - -viユーザとして、VIMはテキストに関わる仕事を以前に遭遇していたよりも、はるか -に愉快なものにしてくれた。 (Steinar Knutsen, ノルウェー) - -VIMをバージョン3.0から使っている。そのころから、ソラリス、リナックス、そして -OS/2 Warpで使用した唯一のエディタだった。友達全員にVIMを使うように薦め、彼ら -はトライし、今も使い続けている。VIMはインターネットからダウンロードした中で -本当に最高のソフトウェアであり、知りうる限りで最高のエディタである。(Marco -Eccettuato, イタリア) - - -以上、要約すれば: (Vimが熱いぜ!) - __ ___ _ _ _ ___ _____ - \ \ / (_)_ __ ___ (_)___ | | | |/ _ \_ _| - \ \ / /| | '_ ` _ \ | / __| | |_| | | | || | - \ V / | | | | | | | | \__ \ | _ | |_| || | - \_/ |_|_| |_| |_| |_|___/ |_| |_|\___/ |_| - ____ _____ _ _ _____ _____ _ _ - / ___|_ _| | | | ___| ___| | | - \___ \ | | | | | | |_ | |_ | | | - ___) || | | |_| | _| | _| |_|_| - |____/ |_| \___/|_| |_| (_|_) (Tony Nugent, オーストラリア) - - vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/quotes.jax b/ja/quotes.jax new file mode 100644 index 000000000..ebb6ab1a9 --- /dev/null +++ b/ja/quotes.jax @@ -0,0 +1,269 @@ +COMMENT: Vimについての引用集 +STATUS: finished 6.3.054 +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*quotes.txt* For Vim version 6.3. Last change: 2004 May 06 + + + VIMリファレンスマニュアル by Bram Moolenaar + + + *quotes* +ニュースやメールから集めた、Vimに関する素晴らしい引用を紹介する。 + + +vim (vim) 名詞 - 溢れんばかりのバイタリティとエネルギー。 [ラテン語, 『力』の +直接目的格, 力] (辞書) + +Vimはviより大変優れているので、私の古いviの多くの偉大な:mapがすぐに廃れてし +まった! (Tony Nugent, オーストラリア) + +WindowsのGUI志向の強い影響で、Viを使う人々は実は人間の姿をしたエイリアンなん +じゃないかと思っていた。でも一度試してみるとそのパワーに病みつきになって、今で +はVim以外のソフトウェアでVimのようにキータイプするまでになってしまった。これ +が、テキストを編集するあらゆるアプリケーションにVimを埋め込まれて欲しいと願う +理由。 (José Fonseca) + +私は12年来のemacsユーザだったが、相次ぐ互換性のないバージョンアップや、役立た +ずの追加パッケージ群、一貫性のない操作方法などに嫌気がさして1年前にVimに乗り換 +えた。まさに生涯最高の選択の1つだった。 (Joel Burton) + +資料の作成や修正に多くのプログラムを使用したが、編集のほとんどはGNU-Linux +(RedHat 4.2)上のVimのバージョン4.5と5.0で行なわれた。 +(Arnold Robbins, イスラエル, "Learning the Vi editor"の著者) + +私は幾つものオープンソフトを使い、さらに多くのソフトを見てきたが、その中でも +Vimは大変使いやすく、とても完成度が高く、linux kernel に次ぐ最高の作品だ。 + (Peter Jay Salzman) + +SourceForgeの「全体が」VimとそのPHP用のイカシた構文強調を使って書かれている、 +ということはたいして重要ではない。大事なのはSF.netの技術スタッフ全員がVimを +使っているということであり、そして貴方がVimを使うことを大いに歓迎しているとい +うことだ! (Tim Perdue) + +Vimは私の七つ道具の一つで、代用品がありません。なんてすばらしい作品なんだろう! +(Biju Chacko) + +私の元カノはemacsに走りました。もちろん、彼女とはうまくいきませんでした。 +(Geoffrey Mann) + +魚が水のことを意識しないと思われるのと同様に、私はほとんどVimについて意識しな +い。それは総ての中にある環境である。私は相当に忙しいシステム管理者で、多くの異 +なるプラットホームを扱っている。Vimは私のシステム総てに共通して存在する唯一の +もので、「時々クラッシュする」ということもない唯一のものだ。新しいシステムに +Vimが入っていなかったときには、私は真っ先にインストールする。どの環境でもまっ +たく信頼のおける同じツールを使うことができることは素晴らしく、おかげでVimにつ +いては無視することができ、その他のものについては考えることができるのだ。 (Pete +Schaeffer) + +最近ノキアの端末を通してtelnet経由でVimを起動することに成功した、現在Palm +Pilotでも素晴らしく動いたことを報告できる。 (Allan Kelly, スコットランド) + +Bram! 'VIM'というなんてものすごい仕事をしたものだ! 使えば使うほど感動するよ +(私は古い'vi'のダイハードで1970年代後半の初期の'emacs'から使い始め、1983年に初 +期のUNIXで'vi'を見つけることで救われた)。私の考えでは、標準のトップエディタと +して'VIM'が'emacs'に置換わる時だよ。 (Bo Thide', スウェーデン) + +私もVIMを深く愛し使っている。 (Larry Wall (訳注:Perlの作者)) + +Viはまるでフェラーリだ。初心者にはまるで暴れ馬だが、いったんコツさえ掴んでしま +えば、非常に小さくパワフルかつ高速だ! (不明) +VIMはまるでフェラーリの新モデルだ。発音もそっくり - "VIIIIIIMMM!"。(Stephen +Riehm, ドイツ) + +Schon bei Nutzung eines Bruchteils der VIM-Funktionen wird der Benutzer recht +schnell die Vorzuege dieses Editors kennen- und schaetzenlernen. +翻訳: VIMの機能をほんの少し使うだけでも、ユーザはすぐに使うことができこのエ +ディタの強みを正しく評価するだろう。 (Garry Glendown, conclusion of an +article on VIM in iX magazine 9/1998) + +つい最近VIについてのオライリーの本を手に入れた(VIMについても深く言及されてい +た)。このアプリケーションがあまりにパワフルで驚愕した。 (Jeffrey Rankin) + +This guide was written using the Windows 9.x distribution of GVIM, which is +quite possibly the greatest thing to come along since God created the naked +girl. (Michael DiBernardo) + +坊主、私は私自身VIMについてほとんど総てのことを知っていると考えていた。しかし +いつもオンラインドキュメントを眺めるたびに、それまで知らなかったVIMの機能の小 +さな、しかしクールな面を見つけるんだ!。これは私がみた中でも(多くの商業製品と比 +べてさえも)最高のドキュメントであると言わねばならない。 (Gautam Mudunuri) + +VIM 4.5は本当に素晴らしい(ファンタスティックな)エディタだ。VIMにはものす +ごぉぉぉぉい多くの機能があり更に重要なことには、初期設定が素晴らしいので本当に +何の変更も無しに使うことが出来るのだ!!。VIM作者への私の驚きと感謝の念はどんな +言葉をもっても語り尽くせない。この先もそうであって。 (Vikas, アメリカ合衆国) + +人々が他のViエディタをVIMのクローンと呼ぶようになるまでどのくらいかかるだろう +か? (Darren Hiebert) + +"Perfect Programmer's Editor"のスレッドにある[makeのエラーに基づいて自動的に +ファイルの位置へ飛ぶ]というのを読んで、VIMは既にそれをサポートしているので嬉し +かった。 (Brendan Macmillan, オーストラリア) + +VIM (5.0)を発見して多くの知人とそれについて話をした。VIMはVIの新世紀 +(Millenium)を象徴するんだ、と彼らに言い聞かせた。本当にありがとう! (Matt F. +Valentine) + +"vi"は今から"Vim Imitation(Vimのものまね)"と呼ばれるべきで、逆ではないと考える +(訳注: VIMはもともとVi IMitationに端を発している)。 (Rungun Ramanathan) + +VIMの法則(訳注: 数学の公式風に): +プログラムPの考え得る限りの動作空間Bの中で各々の要素をbとした時、プログラムPの +全ユーザ空間Uのうち少なくとも1人のユーザuが、ある動作bを許された動作空間B'に加 +えるように要求するまでにかかる時間は有限である。 (このときB'は B' <= Bとなる) +言い換えれば: 遅かれ早かれ全員がオプションとして総てを欲しがるんだよ (Negri) + +あたらしい計算機プラットホームに移る時はいつも、決まってまず最初にやるのはVIM +を移植すること。後にconfigureを使った時にコンパイルの簡単さにビックリした。 +(A.M. Sabuncu, トルコ) + +オプションが本当に優秀でとてもパワフルだ。 (Anish Maharaj) + +ユーザインターフェースのデザインは春であり、80x24テキスト専用モードのブティッ +クからの「言葉は復讐に戻った!」。ViエディタのクローンであるVIMは、5.0のシン +タックスハイライトによって3月のデスクトップに眩暈のするパステルの景色をもたら +した。金切り声とカスタマイズ性、VIMは伝統的なViのシングルキーマクロ集に独自の +解釈をすることで、我々を驚かせる。(訳注: 原文が難解でまったく自信無) +http://www.ntk.net/index.cgi?back=archive98/now0327.txt&line=179#l + +VIM 5の衝撃をどうしても伝えたかったんだ!。シンタックスハイライティング: これ無 +しでどうやって生きろって?!。人類最高のエディタを作ってくれてありがとう! +(Mun Johl, アメリカ合衆国) + +重ね重ねVIMには感謝する。Linuxで毎日使っている。 (Eric Foster-Johnson, "UNIX +Programming Tools"の著者) + +史上最高のエディタ (Stuart Woolford) + +VIMの素晴らしい機能のほとんどを少なくとも1度は、ものによってはもう何度も頻繁に +使ってきた。正直に白状しよう、どれ1つ欠けても生きていけない。viを使っていた頃 +の自分と生産性を比べると、優に倍にはなっている。 (Sitaram Chamarty) + +VIMを愛している。信じられないよ(incredible)。最初の子供にVimberlyと名づけた。 +(Jose Unpingco, アメリカ合衆国) + +ヒント: "VIM"は"vi improved(vi改)"っていうほうが良い! (Sven Guckes, ドイツ) + +毎日VIMを使っている。他のどんなプログラムよりもVIMと共に過ごす時間が長い…。存 +在するviクローンの中で最高だ。とてもすごいよ。 (Craig Sanders, オーストラリア) + +その無限アンドゥ/リドゥで私を幾度となく悲しみから救ってくれた---VIMを使用す +るように強く薦める。 (Terry Brown) + +私の考えうるなかで、この惑星で最良のテキストエディタを書いて(作成して)くれたこ +とにたいへん感謝する。次に猫を飼うときは"Vim"と命名したい。 (Bob Sheehan,アメ +リカ合衆国) + +:set allとタイプすればオプションで画面が埋め尽くされる。画面全体のものが設定か +非設定かされている。wrapmarginやmodelinesやshowmodeといった古い友人たちも見つ +けたが、新しい友人たちで画面は埋め尽くされていた。私は彼らを愛している!!私は +VIMを愛している!! このエディタに出会えてとても幸せだ! この感じはかつてedを数年 +使った後にviに出会った時感じたものに似ている。今まで私が愛したedや、ましてviを +捨て去る日が来るとは考えもしなかった…あぁ神様、viは偉大だった。でも今は +、VIM。 (Peter Jay Salzman,アメリカ合衆国) + +こんな素晴らしいソフトウェアパッケージがあるなんて、私は本当に幸せだ。どんな高 +価なソフトよりも良質で、しかも在庫切れということがない。 (Jeff Walker) + +VIMのドキュメントを読むといつも、エディタのパワーに興奮し打ちのめされる。 +(William Edward Webber, オーストラリア) + +VIM万歳!! それはviのように"すぐ手の届くところにあり"、viがひどく必要とした拡張 +がなされている: コマンドを実行すべきブロックの強調表示、簡単に操作でき消化でき +るヘルプ画面、その他沢山。 (Paul Pax) + +私がこの素晴らしく便利なマクロをもう使わない理由は、今はそれらが組み込まれて +いるVIMを使っているからだ。 (Stephen Riehm, ドイツ) + +私はVIMのユーザで、それを愛している。自分の総てのプログラミング、C、C++、 +HTML、そのほか総てにおいてVimを使用している。 (Tim Allwine) + +私はオリジナルのviと苦闘すること数年の後にVIMを発見し、もうそれなしでは生きて +いけなくなった。 (Emmanuel Mogenet, アメリカ合衆国) + +EmacsにはVimが活躍するほどに長く生き残るチャンスはこれっぽっちもない。加えて、 +これほどまでに詳細に渡って記されたドキュメントをい持つソフトウェアを見たことが +ない---しかもそれは多くの商用ソフトウェアよりも素晴らしい! (Leiming Qian) + +このVIMのバージョンは、それがどんなに素晴らしいものが発見するたびに人々を驚愕 +させるだろう! (Tony Nugent,オーストラリア) + +貴方のアドバイスに従い、ついにVIMを入手し、本当に感動した。すぐに転向した。 +(Patrick Killelea, アメリカ合衆国) + +VIMはとりわけ好きなシェアウェアで、特にバージョン3.0がお気に入りだ。これは本当 +にしっかりした仕事だ。 (Robert Colon, アメリカ合衆国) + +VIMを使うは楽しいし、良く考えられていとても役に立つから、何故ほかの人たちがビ +ジュアル開発ツールを使おうとするのか理解に苦しむ。VIMはパワフルで優雅で、一見 +単純だが実は747(訳注: ボーイングのジェット機)のように複雑で(とりわけ成長した私 +の.vimrc)、この素晴らしい仕事を続けて欲しいし、VIMはフリーソフトウェア界の中心 +だ。 (Louis-David Mitterand, アメリカ合衆国) + +VIMを使うことがこんなに素晴らしいなんて未だに信じられない。職場の仲間は私がそ +れを誉めちぎるのを聞かされ過ぎて疲れているだろう。他の人の目が輝きだす。(Rick +Croote) + +Emacsは起動と実行にかなり時間がかかり、実際に使用するには大きくかさばってい +て、インターフェースは助けになるよりもむしろ混乱させる。しかしながらVIMは小さ +く、早く、パワフルで、素晴らしいインターフェースを持っていて、あらゆる用途に使 +うことができる。 (Paal Ditlefsen) + +VIM3.0を初めて得た時から、非常に熱狂した。ほとんど何の問題点もみあたらなかっ +た。スワップファイルの扱いとバックアップの可能性が非常に堅固で、ひとつのファイ +ルを2重に編集することから守ってもくれる。VIとの互換性も非常に高い(この数年私の +脳はすっかりVIに洗脳されているので、これは絶対条件である)。 (Gert van +Antwerpen,オランダ) + +VIMのビジュアルモードは、凄くパワフルな機能だ! (Tony Nugent, オーストラリア) + +VIMは今までネットに存在しなかった(訳注: 定冠詞THEが付く)唯一のもっとも偉大な +ソースコード作品と言わざるを得ないだろう。 (Jim Battle,アメリカ合衆国) + +実際、新しいviが必要ならばVIM-3.0をお奨めする。これは今まで見たなかで断然最高 +のバージョンのviだ。 (Albert W. Schueller) + +VIMは良いエディタで他の如何なるものにも匹敵するものだ、というべきだろう。 +(Ilya Beloozerov) + +実を言えば時々elvis、vile、xvi、calvinやその他の使っていた。だからこそVIMが最 +高だと断言できる!! (Ferenc Deak, ハンガリー) + +VIMは私が長年使用してきた断然最高のエディタである。そして私が使用した総てのプ +ラットホームに存在するいろんなものをみてきた。それらのなかでもVIMは最高。 +だ。 (Guy L. Oliver) + +VIMは石ミノ以来、最高のエディタです。 (Jose Unpingco, アメリカ合衆国) + +こう言いたい、VIMに出会って私はついにemacsからviに鞍替えした - あらゆる点で優 +れたエディタだ:キーボードレイアウト、メモリ使用量、text alteration to name 3 +(訳注:訳不明)。 (Mark Adam) + +実際、今vi独特の設定について知りたいのならば、VIMを起動してそのヘルプをチェッ +クする! (Nikhil Patel, アメリカ合衆国) + +viユーザとして、VIMはテキストに関わる仕事を以前に遭遇していたよりも、はるかに +愉快なものにしてくれた。 (Steinar Knutsen, ノルウェー) + +VIMをバージョン3.0から使っている。そのころから、Solaris、Linux、そしてOS/2 +Warpで使用した唯一のエディタだった。友達全員にVIMを使うように薦め、彼らはトラ +イし、今も使い続けている。VIMはインターネットからダウンロードした中で本当に最 +高のソフトウェアであり、知りうる限りで最高のエディタである。(Marco Eccettuato, +イタリア) + + +以上、要約すれば: (Vimが熱いぜ!) + __ ___ _ _ _ ___ _____ + \ \ / (_)_ __ ___ (_)___ | | | |/ _ \_ _| + \ \ / /| | '_ ` _ \ | / __| | |_| | | | || | + \ V / | | | | | | | | \__ \ | _ | |_| || | + \_/ |_|_| |_| |_| |_|___/ |_| |_|\___/ |_| + ____ _____ _ _ _____ _____ _ _ + / ___|_ _| | | | ___| ___| | | + \___ \ | | | | | | |_ | |_ | | | + ___) || | | |_| | _| | _| |_|_| + |____/ |_| \___/|_| |_| (_|_) (Tony Nugent, オーストラリア) + + vim:tw=78:ts=8:ft=help:norl: From 079c86a3d4eede6a4fa49aae6ac94a484226776a Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Thu, 24 Feb 2005 01:10:31 +0000 Subject: [PATCH 025/783] finished gui.jax, fix intro's status git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@25 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/gui.jax | 1077 ++++++++++++++++++++++++++++++-------------------- ja/intro.jax | 2 +- 2 files changed, 641 insertions(+), 438 deletions(-) diff --git a/ja/gui.jax b/ja/gui.jax index 4aeb7c470..86ec5206a 100644 --- a/ja/gui.jax +++ b/ja/gui.jax @@ -1,9 +1,9 @@ COMMENT: GUI機能:一般事項 STATUS: finished 5.7 TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*gui.txt* For Vim version 5.7. Last change: 2000 Jun 22 +*gui.txt* For Vim version 6.3. Last change: 2004 Jun 02 VIMリファレンスマニュアル by Bram Moolenaar @@ -26,120 +26,129 @@ Vimのグラフィカルユーザインタフェース *gui* *GUI* {Vi にはこれらのどのコマンドもない} ============================================================================== -1. GUIの開始 *gui-start* +1. GUIの開始 *gui-start* *E229* *E233* -最初に、本当にGUIのコードが含まれたVimのバージョンであるかを確かめなければなら -ない。":version"コマンドでこれを調べることができ、それは"+GUI_Athena", -"+GUI_BeOS", "+GUI_GTK", "+GUI_Motif"あるいは"MS-Windows ... 多少のGUIバージョ -ン"を含んでいるべきである。 +まずはVimがGUIに対応したバージョンであるか確認する必要がある。それは":version" +コマンドで調べることができる。その出力が +"+GUI_Athena"、"+GUI_BeOS"、"+GUI_GTK"、"+GUI_Motif"、"MS-Windows ... bit GUI +version"のどれかを含んでいれば問題ない。 -どのようにGUIを始めるかは使用されているシステムに依存する。たいていはこれでVim -のGUIバージョンを実行することができる: +どのようにGUIで起動するかは使用しているシステムに依存する。たいていはこのよう +にしてGUI版のVimを実行できる: gvim [options] [files...] VimのX11バージョンはGUIとGUIでないモードの両方で実行することができる。 |gui-x11-start| を参照。 *gui-init* *gvimrc* *.gvimrc* *_gvimrc* -GUIのスタートアップ時、初期化はこの順序で実行される: -- termcapオプションはGUIのためにデフォルト値にリセットされる。 -- システムメニューファイルが存在するのであれば、それが情報源にされる。このファ - イルの名前は通常"$VIMRUNTIME/menu.vim"である。":version"でこれを調べられる。 - |$VIMRUNTIME|も参照。システムメニューのロードを省略するには'guioptions'に'M' - を含める。 +GUIの初期化は次の順序で行われる: +- 端末の設定がGUI用の初期値に設定される。 +- システムのメニューファイルがあればそれが読み込まれる。このファイルの名前は通 + 常"$VIMRUNTIME/menu.vim"である。":version"でこれを確認できる。|$VIMRUNTIME| + も参照。システムのメニューの読み込みを省略するには'guioptions'に'M'を含める。 *buffers-menu* *no_buffers_menu* - システムメニューファイルは"Buffers"メニューを含んでいる。これを望まないなら - ば、あなたの.vimrc (.gvimrcではない!)に"no_buffers_menu"を設定する: -> :let no_buffers_menu = 1 - ‘注意’: 構文強調表示をオンに切り替えることもメニューファイルをロードするた - め、":syntax on"の前にバッファメニューが無効にされなければならない。 -- Vimを開始するときに、"-U {gvimrc}"コマンドラインオプションが用いられているな - らば、{gvimrc}ファイルが初期化のために読み込まれるだろう。以下の初期化は省略 - される。 -- Unixに対しては、システムのgvimrcが存在するならば、それが情報源にされる。この - ファイルの名前は通常"$VIM/gvimrc"である。":version"でこれを調べられる。 + システムのメニューファイルはメニュー項目"Buffers"(バッファ)の定義も含んでい + る。これを必要としないなら、ユーザーの.vimrc (.gvimrcではない!)で + "no_buffers_menu"を設定する: > + :let no_buffers_menu = 1 +< NOTE: 構文強調表示を有効にするとメニューファイルも読み込まれるため、メニュー + 項目Buffers(バッファ)を無効にするのは":syntax on"の前にする。 + メニューに表示されるバッファの名前は35文字で切り詰められる。違う長さで切り詰 + めるなら、例えば50文字にするなら、次のようにする: > + :let bmenu_max_pathlen = 50 +- Vimを起動するときのコマンドライン引数に"-U {gvimrc}"が指定されると、{gvimrc} + ファイルが初期化のために読み込まれ、以下の初期化処理は省略される。 +- UnixとMS-Windowsでは、システムのgvimrcが存在するなら、それが読み込まれる。こ + のファイルの名前は通常"$VIM/gvimrc"である。":version"でこれを確認できる。 |$VIM|も参照。 -- 以下が試されて、存在する最初の1つだけが用いられる: - - GVIMINIT環境変数が存在し空でないならば、それがExコマンドとして実行される。 - - ユーザのgvimrcファイルが存在するならば、それが情報源にされる。このファイル - の名前は通常"$HOME/.gvimrc"である。":version"でこれを調べられる。 - - Win32に対しては、$HOMEが設定されないときには、"$VIM\_gvimrc"が用いられる。 +- 次のものを試して、最初に見つかったものが使用される: + - GVIMINIT環境変数が存在し空でないなら、それがExコマンドとして実行される。 + - ユーザのgvimrcファイルが存在するなら、それが読み込まれる。このファイル + の名前は通常"$HOME/.gvimrc"である。":version"でこれを確認できる。 + - Win32では、$HOMEが設定されていないときは、"$VIM\_gvimrc"が読み込まれる。 - "_gvimrc"ファイルが見つからないときには、".gvimrc"も試される。逆のときも同 様である。 -- 'exrc'オプションが設定されていて(これはデフォルト‘ではない’)、./.gvimrc - ファイルが存在しシステムかユーザのgvimrcファイルと同じファイルでないならば、 - それが情報源にされる。このファイルがあなたの所有しているものでないならば、い - くつかのセキュリティ上の制限が適用される。".gvimrc"が見つからないときには、 - "_gvimrc"も試される。MacintoshとDOS/Win32に対しては、"_gvimrc"が最初に試され - る。 - -‘注意’: "-U"引数が与えられずに"-u NONE"でVimが開始されたか、あるいは -"-U NONE"で開始されたならば、最初のもの以外は全て実行されない。 - -これは全て、あなたの.vimrcファイルを読み込むような、通常のVimの初期化‘の後’ -に起こる。|initialization|を参照。 -しかし、GUIウィンドウは全ての初期化が実行された後にだけ開かれる。 -GUIウィンドウを開いた直後にいくつかのコマンドを実行したいならば、|GUIEnter| -autocommandイベントを使用する。例えば: -> autocommand GUIEnter * winpos 100 50 - -あなた自身のカスタマイズされたメニュー(|:menu|を参照)をセットアップしたり、 -ターミナルバージョンとは異なったセットアップにしたい他のことを初期化するために -gvimrcファイルを使用することができる。 - -あなたの個人的なGUIの初期化のために推奨される場所: +- 'exrc'オプションが設定されていて(これは標準設定ではない)、./.gvimrcファイル + が存在し、それがシステム、あるいはユーザーのgvimrcファイルではないなら、それ + が読み込まれる。このファイルがユーザーの所有しているものでないなら、いくつか + のセキュリティ上の制限が適用される。".gvimrc"が見つからないときには、 + "_gvimrc"も試される。MacintoshとDOS/Win32では、"_gvimrc"が最初に試される。 + +NOTE: Vimを起動するときに、"-U"引数を指定せずに"-u NONE"を指定するか、あるいは +"-U NONE"を指定して起動すると、最初のもの以外は全て実行されない。 + +これらは全て、ユーザーの.vimrcファイルを読み込む、というような、通常のVimの初 +期化の後に実行される。|initialization|を参照。 +しかし、GUIウィンドウは全ての初期化が実行された後に開かれる。 +GUIウィンドウを開いた直後にいくつかのコマンドを実行したいなら、オートコマンド +の|GUIEnter|イベントを使用する。例えば: > + :autocommand GUIEnter * winpos 100 50 + +カスタマイズしたメニュー(|:menu|を参照)をセットアップしたり、CUI版とは異なった +初期化をするために、gvimrcファイルを使用することができる。 + +ユーザーの個人的なGUI初期化ファイルを置くのに推奨される場所: Unix $HOME/.gvimrc OS/2 $HOME/.gvimrcあるいは$VIM/.gvimrc MS-DOSとWin32 $HOME/_gvimrcあるいは$VIM/_gvimrc Amiga s:.gvimrcあるいは$VIM/.gvimrc -VimのGUIバージョンでだけ意味を持つ多くのオプションがある。'guicursor', -'guifont', 'guipty'と'guioptions'である。それらは他の全てのオプションと共に -|options.txt|に文書化されている。 +GUI版のVimでだけ意味を持つオプションがある。'guicursor'、'guifont'、'guipty'、 +'guioptions'である。それらは他の全てのオプションと共に|options.txt|で説明され +ている。 -GUIのMotifかあるいはAthenaバージョン(GTK+やWin32バージョンではない)を使用して -いるならば、多くのXのリソースが有効である。|gui-resources|を参照。 +GUIのMotifかAthenaバージョン(GTK+やWin32バージョンではない)を使用しているなら +ば、多くのXのリソースが有効である。|gui-resources|を参照。 -異なる理由により色を設定する別の方法はhighlightグループで行うことである。 -"Normal"グループは背景色と前景色を設定するために用いられる。(よく見える)例: -> :highlight Normal guibg=grey90 +端末の設定をする以外に文字の色を設定する方法はハイライトを設定することである。 +ハイライトの"Normal"グループは背景色と前景色を設定するために用いられる。(ナイ +スな)例: > -"guibg"と"guifg"の設定は通常の背景と前景の設定よりも優先される。Normal -highlightグループに対するその他の設定は用いられない。フォントを設定するには + :highlight Normal guibg=grey90 + +"guibg"と"guifg"の設定は通常の背景と前景の設定よりも優先される。ハイライトの +Normalグループに対するその他の設定は使用されない。フォントを設定するには 'guifont'を使用する。 -様々なモードでカーソルに色を設定するには、'guicursor'オプションも確認する。 +モード別にカーソルの色を設定するには、'guicursor'オプションを参照。 -Vimはスタートアップのときに、スクリーンにウィンドウを合せようとする。これはそ -の一部を見ることができなくならないようにする。X windowでは、これは少し憶測を必 -要とする。'guiheadroom'オプションでウィンドウタイトルとタスクバーに用いられる -高さを変更することができる。 +Vimは起動時に、スクリーンに合わせてウィンドウの位置を調整しようとする。これは +ウィンドウの一部が隠れてしまわないようにするためである。X Window Systemでは、 +これは少し憶測を必要とする。'guiheadroom'オプションでウィンドウタイトルとタス +クバーに用いられる高さを変更することができる。 - *:winp* *:winpos* + *:winp* *:winpos* *E188* :winp[os] GUI vimウィンドウの左上隅の現在の位置をピクセルで表示する。全 てのバージョンで機能する訳ではない。 -:winp[os] {X} {Y} - 与えられた{X}と{Y}の座標にGUI vimウィンドウを配置する。座標は - ウィンドウの左上隅の位置をピクセルで指定すべきである。全てのバ - ージョンで機能する訳ではない。(新しい)xtermで機能する +:winp[os] {X} {Y} *E466* + 与えられた{X}と{Y}の座標にGUI vimウィンドウを移動する。座標は + ウィンドウの左上隅の位置をピクセル単位で指定する。全てのバー + ジョンで機能する訳ではない。(新しい)xtermで機能する |xterm-color|。 + GUIウィンドウがまだ開いていないとき、この値はウィンドウが開か + れるまで保留される。位置はスクリーンに合うように調整される(可 + 能なら)。 - *:win* *:winsize* + *:win* *:winsize* *E465* :win[size] {width} {height} {width}と{height}の文字によってウィンドウの高さを設定する。 - ":set lines="と":set columns="を使用するのは古いやり方である。 + ":set lines=11 columns=22"を使用するのは古いやり方である。 + 期待したよりも高さが低くなるなら、'guiheadroom'オプションを確 + 認する。 +X Window Systemでは、このコマンドでVimのウィンドウの情報を得ることができる: > + :!xwininfo -id $WINDOWID ============================================================================== 2. スクロールバー *gui-scrollbars* 垂直スクロールバーと水平スクロールバーがある。'guioptions'オプションでどれが表 -示されるかを設定してもよい。 +示されるかを設定することができる。 -インタフェースは(":set guioptions=mlrb"で)このように見える: +このような外観になっている(設定が":set guioptions=mlrb"のとき): +------------------------------+ | ファイル 編集 ヘルプ | <- メニューバー(m) @@ -162,60 +171,67 @@ Vimはスタートアップのときに、スクリーンにウィンドウを | |< #### >| | <- 下スクロールバー(b) +-+--------------------------+-+ -どのスクロールバーやメニューコンポーネントも'guioptions'文字列に適切な文字を付 -加しないことでオフに切り替えてもよい。下スクロールバーは'nowrap'が設定されてい -るときに便利なだけである。 +スクロールバーやメニューバーは'guioptions'から対応する文字を取り除くことで無効 +にできる。下スクロールバーは'nowrap'が設定されているときだけ有用である。 垂直スクロールバー *gui-vert-scroll* -Vimウィンドウ毎に次へのスクロールバーを持っていて、そのバッファ内でテキスト全 -体を動かすためにスクロールアップ・ダウンすることができる。スクロールバーのつま -みのサイズはウィンドウに見えているバッファの割合を示している。スクロールバーが -ずっと下方にドラッグされると、ファイルの最後の行はウィンドウの最上部に表示され -るだろう。 +各Vimウィンドウはとなりにスクロールバーを持っていて、上下にスクロールしてその +バッファ内のテキストの表示を移動できる。スクロールバーのつまみのサイズはウィン +ドウに見えているバッファの割合を示している。スクロールバーがずっと下方にドラッ +グされると、ファイルの最後の行はウィンドウの最上部に表示される。 -ウィンドウが(他のウィンドウの拡大によって)高さゼロに縮小されたならば、そのスク +ウィンドウが(他のウィンドウの拡大によって)高さゼロに縮小されると、そのスク ロールバーは表示されなくなる。それはウィンドウが復元されるときに再び表示され る。 +ウィンドウを縦分割しているとき、カレントウィンドウだけがスクロールバーを利用で +きる。そして、複数のウィンドウの真ん中のウィンドウを操作しているときは、スク +ロールバーは間のウィンドウを飛び越えて作用する。 +両側にスクロールバーがあるときに、複数のウィンドウの真ん中のカレントウィンドウ +が左半分に面していると、右側のスクロールバーは右端のウィンドウに影響する。左右 +が逆でも同様。 + + 水平スクロールバー *gui-horiz-scroll* -(Vim GUIの最下段の)水平スクロールバーは、'wrap'オプションがオフに切り替えられ -るときに、横にテキストをスクロールするために使用することができる。スクロール -バーのつまみのサイズは、現在のカーソルのある行のテキストが左右に可能な限りずっ -とスクロールすることができるくらいである。 +(Vim GUIの最下段の)水平スクロールバーは、'wrap'オプションがオフのときに、テキ +ストを横にスクロールするために使用する。スクロールバーのつまみのサイズは、左右 +にスクロールして一番長い行のテキストを全て表示できるくらいである。必要に応じて +カーソルが移動するとき、カーソルは表示されている文字の上にとどまる +('virtualedit'が設定されていなければ)。 + +一番長い行を計算するのは多少の処理時間を必要とする。そしてそれは何かが変更され +るときに毎回行われる。その時間が多すぎるようだったり、他の行へのカーソルジャン +プを好まないなら、'guioptions'に'h'を含めると、スクロールはカーソルのある行の +長さに制限される。 *athena-intellimouse* -インテリマウスを持っていて、Linuxを運用しており、Xサーバでホイールを使用するた -めの適切なパッチを持っているならば、gvimで上下にテキストをスクロールするために -ホイールを使用することができる。今のところ、それはathenaバージョンでしか機能し -ない。 - -これを使用するには、パッチの当たったXサーバがなくてはならない。以下のページに -はパッチとXサーバのバイナリへのリンクに加えて、Linux上でインテリマウスを使用す -ることについて多少の情報がある(けれども必要とするものはないかもしれない): +インテリマウスを持っていて、Xサーバがホイールをサポートしているなら、gvimでテ +キストを上下にスクロールするのにホイールを使うことができる。これはXFree86 4.0 +以降のバージョンで機能する。古いバージョンでもパッチを当てれば利用可能になる。 +|scroll-mouse-wheel|を参照。 + +古いバージョンのXFree86ではXサーバにパッチを当てなくてはならない。以下のページ +にはパッチとXサーバのバイナリへのリンクに加えて、Linux上でインテリマウスを使用 +することについて多少の情報がある(けれども必要とするものはないかもしれない): http://www.inria.fr/koala/colas/mouse-wheel-scroll/ -ホイールを使用するには、カーソルをスクロールバーエリアに置きホイールを上下に動 -かす。これは上下に1行、テキストをスクロールするだろう。シフトキーを押したまま -にしておけば、一度に1ページ、スクロールするだろう。 - ============================================================================== 3. マウス制御 *gui-mouse* -マウスは、'mouse'オプションの中に適切なフラグが設定されている場合にだけ機能す -る。GUIがオンに切り替えられて、'mouse'がまだ設定されていないときには、'mouse' -オプションは自動的に"a"に設定され、|hit-return|プロンプトを除いて全てのモード -で有効になる。これを望まないならば、"gvimrc"ファイルが'mouse'オプションを変更 -するにはよい場所である。 +マウスは、'mouse'オプションに適切なフラグが設定されている場合にだけ機能する。 +GUIに切り替わるときに、'mouse'がまだ設定されていなければ、'mouse'オプションは +自動的に"a"に設定され、|hit-enter|プロンプトを除いて全てのモードで有効になる。 +これを望まないならば、"gvimrc"ファイルで'mouse'オプションを変更する。 関連する他のオプション: -'mousefocus' ウィンドウフォーカスがマウスポインタに追従する +'mousefocus' マウスポインタが乗っているウィンドウをカレントウィンドウにする |gui-mouse-focus| -'mousemodel' マウスのどのボタンがどのような動作をするか -'mousehide' テキストをタイプしている間マウスポインタを隠す -'selectmode' SelectモードあるいはVisualモードを開始するかどうか +'mousemodel' マウスのボタンがどのような動作をするか +'mousehide' テキストを入力している間マウスポインタを隠す +'selectmode' 選択時に選択モードとビジュアルモードのどちらを使うか 素早くこれらを設定するには":behave"コマンドで行う。 *:behave* *:be* @@ -230,11 +246,11 @@ Vimウィンドウ毎に次へのスクロールバーを持っていて、そ 'keymodel' "startsel,stopsel" "" 'selection' "exclusive" "inclusive" -$VIMRUNTIMEディレクトリの中に、MS-Windowsのcut/copy/pasteコマンドのためのいく -つかのキーもマップする"mswin.vim"と呼ばれるスクリプトがある。 -これは、CTRL-V, CTRL-XとCTRL-Cキーを用いるので、互換性が‘ない’。嫌でなけれ -ば、このコマンドを使用する: -> :so $VIMRUNTIME/mswin.vim +$VIMRUNTIMEディレクトリの中に、MS-Windowsにあるようなcut/copy/paste機能のため +のキーマッピングを設定する|mswin.vim|と呼ばれるスクリプトがある。これは、 +CTRL-V、CTRL-X、CTRL-Cキーを用いるので、標準の操作と互換性がなくなってしまう。 +それでも構わないなら、このコマンドで使用する: > + :so $VIMRUNTIME/mswin.vim マウスのホイールでスクロールするには、|scroll-mouse-wheel|を参照。 @@ -243,47 +259,47 @@ $VIMRUNTIMEディレクトリの中に、MS-Windowsのcut/copy/pasteコマンド カーソルを持って行きたいテキストバッファのどこかでマウスの左ボタンをクリックす ると、カーソルはそこに行く! -動作するモード 'mouse'が以下を含んでいるとき -Normal mode 'n' or 'a' -Visual mode 'v' or 'a' -Insert mode 'i' or 'a' +動作するモード 'mouse'が以下を含んでいるとき ~ +ノーマルモード 'n' or 'a' +ビジュアルモード 'v' or 'a' +挿入モード 'i' or 'a' -SelectモードはVisualモードのように扱われる。 +選択モードはビジュアルモードのように扱われる。 現在のカーソル位置からマウスで指示する位置までのテキストを削除するために'd'の -ようなオペレータと共にこれを使用してもよい。つまり、'd'を打ち込んでからどこか -でマウスをクリックする。 +ようなオペレータと共にこれを使用してもよい。つまり、'd'を入力してからどこかを +マウスでクリックする。 *gui-mouse-focus* -'mousefocus'オプションはキーボードフォーカスをマウスポインタに追従させるように -設定することができる。これはマウスポインタがあるウィンドウがアクティブウィンド -ウになることを意味する。警告: menuコマンドは常に一番上のウィンドウに適用される -だろうから、menuを使用しているときには、これは非常にうまく機能するという訳では -ない。 +'mousefocus'オプションを設定してキーボードフォーカスがマウスポインタに追従する +ようにできる。これはマウスポインタが乗っているウィンドウがアクティブウィンドウ +になることを意味する。警告: メニューをうまく利用できなくなる。メニューを使用し +たときに、そのメニューに設定されたコマンドは常に一番上のウィンドウに適用されて +しまうだろう。 -':'の行(あるいは'/'または'?')の上にあるならば、('mouse'が'c', 'a'あるいは'A'を -含んでいるならば)マウスの左かあるいは右ボタンをクリックすることで、':'の行に -カーソルが配置されるだろう。 +('mouse'が'c'、'a'、'A'のどれかを含んでいるなら)コマンドラインモードや検索モー +ド中にマウスの左ボタンか右ボタンをクリックすることで、コマンドラインの行のク +リックした位置にカーソルを移動できる。 -どのような状況でも、現在の選択を貼り付けるために、マウスの中ボタンをクリックし -てもよい。 +どのような状況でも、マウスの中ボタンをクリックして、現在の選択を張り付けること +ができる。 3.2 マウスによる選択 *gui-mouse-select* -マウスは選択を開始するために使用することができる。'mousemodel'オプションにどの -ように依存するかは: +マウスを使って選択を開始できる。どのように使用するかは'mousemodel'オプションに +依存する: 'mousemodel'が"extend"である: マウスの右ボタンを使用する。 -'mousemodel'が"popup"である: Shiftキーが押されている間、マウスの左ボタンを使用 -する。 +'mousemodel'が"popup"である: Shiftキーを押しながら、マウスの左ボタンを使用す +る。 -まだ何も選択していなければ、これはカーソルがあった位置からマウスで指示した位置 -までを選択し始める。すでに選択しているならば、最も近くの終端が延長されるだろ -う。 +まだ何も選択していなければ、カーソルがあった位置からマウスで指示した位置まで選 +択する。すでに選択しているなら、マウスで指示した位置に近い方の選択範囲の終端が +指示した位置に変更される。 -'selectmode'が"mouse"を含んでいるならば、選択はSelectモードであるだろう。これ -は選択がタイプする通常のテキストで置き換えられることを意味する。|Select-mode| -を参照。そうでなければ、選択はVisualモードであるだろう。 +'selectmode'が"mouse"を含んでいるなら、選択モードが使用される。これは選択中に +入力した文字で選択範囲が置き換えられることを意味する。 +|Select-mode|を参照。そうでなければ、ビジュアルモードが使用される。 ダブルクリックで単語の選択、トリプルクリックで行の選択、クワドルプルクリック (4回クリック)で矩形ブロックを選択することができる。 @@ -291,24 +307,38 @@ SelectモードはVisualモードのように扱われる。 どのように選択が用いられるかに関しては|gui-selections|を参照。 -3.3 マウスによる他のテキスト選択 *gui-mouse-modeless* - -Command-lineモードのときには、|hit-return|プロンプトにおいて、あるいは現在の -モードが'mouse'オプションの中にないときはいつでも、異なった種類の選択が用いら -れる。選択がそこになく、選択に関連付けられたモードがないようにVimが継続するの -で、これはモードレス選択と呼ばれる。Vimウィンドウの中のどんなテキストでも選択 -することができる。開始点でマウスの左ボタンを押すことでテキストを選択し、終点ま -でドラッグして離す。選択を延長するには、'mousemodel'が"extend"のときにはマウス -の右ボタンを使用するか、あるいは'mousemodel'が"popup"のときにはシフトキーを押 -しながらマウスの左ボタンを使用する。マウスの中ボタンはテキストを貼り付ける。 +3.3 マウスによる他のテキスト選択 *gui-mouse-modeless* + *modeless-selection* +次のときには異なる選択方法が使われる: +- コマンドラインモード +- コマンドラインウィンドウを使用中に他のウィンドウを指したとき +- |hit-enter|プロンプト +- 現在のモードが'mouse'オプションで指定されていないときはいつでも +- GUIでCTRLキーとSHIFTキーを同時に押しているとき +テキストが選択されていても、選択されていないかのように、あるいは、選択に関連し +たモードが存在しないかのように、Vimが通常の動作を継続するので、これはモードレ +ス選択と呼ばれる。Vimウィンドウの中のどんなテキストでも選択することができる。 +開始点でマウスの左ボタンを押すことでテキストを選択し、終点までドラッグして離 +す。選択を延長するには、'mousemodel'が"extend"のときにはマウスの右ボタンを使用 +し、'mousemodel'が"popup"のときにはシフトキーを押しながらマウスの左ボタンを使 +用する。 +マウスの中ボタンでテキストを貼り付ける。 +選択したテキストが変更されると、選択は解除される。 +コマンドラインではCTRL-Yで選択範囲をクリップボードにコピーできる。インサート +モード中にコピーするにはCTRL-Oを使いCTRL-Y <CR>とする。 3.4 ステータス行でのマウスの使用 *gui-mouse-status* -Vimウィンドウの下のステータス行でマウスの左かあるいは右のボタンをクリックする -ことでそのウィンドウが現在のウィンドウになる。さらにステータス行を動かすために -上下にマウスをドラッグしてもよく、このようにして上下にウィンドウのサイズを変更 -する。 +Vimウィンドウの下のステータス行でマウスの左ボタンか右のボタンをクリックするこ +とでそのウィンドウがカレントウィンドウになる。これはボタンを放したときに起こる +(クリックとドラッグの操作を区別するため)。 + +左ボタンを使ってステータス行を上下にドラッグすると、ウィンドウのサイズを上下に +変更できる。この操作ではそのウィンドウはカレントウィンドウにならない。 + +ウィンドウの垂直の区切りも同様に機能する。クリックした区切りの左のウィンドウが +カレントウィンドウになる。左右にドラッグするとウィンドウの幅を変更できる。 3.5 様々なマウスクリック *gui-mouse-various* @@ -323,52 +353,80 @@ Vimウィンドウの下のステータス行でマウスの左かあるいは 3.6 マウスマッピング *gui-mouse-mapping* -修飾子付きのマウスイベントがマップされてもよい。例えば: -> :map <S-LeftMouse> <RightMouse> -> :map <S-LeftDrag> <RightDrag> -> :map <S-LeftRelease> <RightRelease> -> :map <2-S-LeftMouse> <2-RightMouse> -> :map <2-S-LeftDrag> <2-RightDrag> -> :map <2-S-LeftRelease> <2-RightRelease> -> :map <3-S-LeftMouse> <3-RightMouse> -> :map <3-S-LeftDrag> <3-RightDrag> -> :map <3-S-LeftRelease> <3-RightRelease> -> :map <4-S-LeftMouse> <4-RightMouse> -> :map <4-S-LeftDrag> <4-RightDrag> -> :map <4-S-LeftRelease> <4-RightRelease> -これらのマッピングは、恐らくマウスの右ボタンよりむしろシフト-左ボタンで視覚的 -な領域を拡張することを考慮しているMotifアプリケーションですべき方法で選択を機 -能させる。 - -修飾子を伴うマウスマッピングはモードレス選択では機能しない。 +修飾キー付きのマウスイベントをマッピングすることもできる。例えば: > + :map <S-LeftMouse> <RightMouse> + :map <S-LeftDrag> <RightDrag> + :map <S-LeftRelease> <RightRelease> + :map <2-S-LeftMouse> <2-RightMouse> + :map <2-S-LeftDrag> <2-RightDrag> + :map <2-S-LeftRelease> <2-RightRelease> + :map <3-S-LeftMouse> <3-RightMouse> + :map <3-S-LeftDrag> <3-RightDrag> + :map <3-S-LeftRelease> <3-RightRelease> + :map <4-S-LeftMouse> <4-RightMouse> + :map <4-S-LeftDrag> <4-RightDrag> + :map <4-S-LeftRelease> <4-RightRelease> +これらのマッピングは、Motifアプリケーションの作法にしたがって、選択領域を拡張 +するために、マウスの右ボタンを使わずに、Shiftキーを押しながら左ボタンを押す方 +法を設定している。 + +修飾キーを使ったマウス操作のマッピングはモードレス選択では機能しない。 + + +3.7 ドラッグ&ドロップ *drag-n-drop* + +Vimウィンドウに1つ、あるいは複数のファイルをドラッグ&ドロップすることができ +る。ファイルは|:drop|コマンドを使ったときのように開かれる。 + +Shiftキーを同時に押していると、Vimはカレントディレクトリをドロップされた最初の +ファイルがあるディレクトリに変更する。Ctrlキーを同時に押していると、ファイルを +開くためにウィンドウを分割する。押してなければカレントバッファが変更されていな +いときだけファイルは開かれる。 + +ディレクトリをVimにドロップすることもできる。この操作はexplorerプラグインでそ +のディレクトリを開く(それが利用可能だと想定している。無理ならエラーが表示され +るだろう)。Shiftキーを同時に押していれば、ディレクトリを開かずに、カレントディ +レクトリをそのディレクトリに変更する。 + +コマンドラインを編集中なら、ドロップされたファイルやディレクトリの名前がカーソ +ル位置に挿入される。これはExコマンドでそれらの名前を使うのに便利である。特別な +文字(スペース、タブ、ダブルクォート、'|'、MS-Windows以外ではバックスラッシュ +も)はエスケープされる。 ============================================================================== 4. GUI選択の作成 *gui-selections* *quotestar* -マウス(|gui-mouse-select|を参照)か、あるいはVimのVisualモード(|v|を参照)を使用 -して、選択を作成してもよい。'guioptions'に'a'が存在するならば、いつ選択が開始 -される(VisualあるいはSelectモード)としても、あるいは選択が変更されるときには、 -Vimがウィンドウシステムの主要な選択(MS-Windowsでは|gui-clipboard|が用いられる) -の所有者になる。 - -この選択を保存するための特別なレジスタがあり、それは"*レジスタである。どのテキ -ストが変更されようとして選択されているか(例えば、マウスの左ボタンでどこかをク -リックして)、あるいはいつ他のアプリケーションが選択されたテキストを貼り付けた -いのかという情報がない限りここには何も書き出されない。そのテキストは"*レジスタ -に書き出される。例えば、行を切り取って、それを現在の選択にする、あるいはクリッ -プボードにそれを書き出すためには: -> "*dd - -同様に、例えば、マウスの中ボタンをクリックすることで、他のアプリケーションから -選択を貼り付けたいときには、選択は始めに"*レジスタに書き出され、それから他のレ -ジスタのようなものに‘書き出す’。例えば、選択(クリップボードの内容)を書き出す -ためには: -> "*p +マウス(|gui-mouse-select|を参照)か、あるいはVimのビジュアルモード(|v|を参照)を +使用して、選択を作成できる。'guioptions'に'a'が指定されているなら、いつ選択(ビ +ジュアルモードや選択モード)が開始されるとしても、あるいは選択が変更されるとし +ても、Vimがウィンドウシステムの主要な選択の所有者になる(MS-Windowsでは +|gui-clipboard|が用いられる。X11では|x11-selection|が用いられる。ここの説明は +両方に共通している)。 + +選択を保存するための特別なレジスタがある。それは"*レジスタである。どのテキスト +が選択されているかという情報が(例えばマウスの左ボタンをクリックするなどして)変 +更されるか、あるいは他のアプリケーションが選択されたテキストを張り付けようとし +ない限りここには何も書き出されない。使用されるときにはテキストは"*レジスタに書 +き出される。例えば、行を切り取って、それを現在の選択にして、クリップボードにそ +れを書き出すためには次のようにする: > + + "*dd + +同様に、例えば、マウスの中ボタンをクリックするなどして、他のアプリケーションか +ら選択を貼り付けるときには、選択は始めに"*レジスタに書き出され、それから他のレ +ジスタと同じように挿入される。例えば、選択(クリップボードの内容)を張り付けるに +は: > + + "*p + +X11でこのレジスタを使うには、|x11-selection|も参照。これは深く関連した "+ レジ +スタについても説明している。 あるVimから他の独立したVimにテキストを貼り付けたいときには、選択のタイプ(文 字、行あるいはブロック)もコピーされることに注意する。他のアプリケーションにつ -いては、タイプは常に文字である。 +いては、タイプは常に文字である。|x11-cut-buffer|を介して得たテキストでも、その +選択のタイプは常に失われる。 'clipboard'オプションに"unnamed"文字列が含まれているときには、無名レジスタは"* レジスタと同じである。したがってコマンドの前に"*を付けずに選択をコピーし貼り付 @@ -377,63 +435,60 @@ Vimがウィンドウシステムの主要な選択(MS-Windowsでは|gui-clipboa ============================================================================== 5. メニュー *menus* +まずはユーザーマニュアルの|usr_42.txt|を御覧ください。 + 5.1 メニューの使用 *using-menus* -基本的には、メニューは単にマッピングのように使用することができる。あなた自身の -メニューを好きなだけたくさん定義することができる。メニューのデフォルト設定があ -るので、無から始めなくてもよい。長い間Vimユーザ達はメニューを十分に使用してこ -なかった。しかしあなた自身のメニューとメニュー項目を追加すること中にその力があ -る。それらはキーシーケンスが何だったかを覚えられないようなときに最も便利であ -る。 +基本的には、メニューは単にマッピングのように使用することができる。自分のメ +ニューを好きなだけたくさん定義することができる。 +長い間Vimユーザーはメニューを十分に使用してこなかった。しかし自分のメニューや +メニュー項目を追加することは大きな力を秘めている。ある一連のキー操作を覚えられ +ないようなときに最も便利である。 - *menu.vim* -デフォルトのメニューは"$VIMRUNTIME/menu.vim"ファイルから読み込まれる。パスがど -こを指すかについては|$VIMRUNTIME|を参照。あなた自身のメニューをセットアップす -ることができる。デフォルト設定をオフにして開始することができるのはよいアイデア -である。さらに項目を追加したり、あるいは、デフォルトが全く気に入らないなら、全 -てのメニューを取り除いて開始することができる|:unmenu-all|。あなたの.vimrcファ -イル(.gvimrcファイル‘ではない’!)にこの行を追加することでデフォルトのメニュー -がロードされないようにすることもできる: -> let did_install_default_menus = 1 -Syntaxメニューもロードされないようにしたいなら: -> let did_install_syntax_menu = 1 - -バッファのメニューの内容はbufmenu_fullpathとbufmenu_maxlen変数を設定することで -制御することができる。前者は、1に設定されるならば、メニューの中でファイルのフ -ルパスが用いられることを指定する。後者はメニューラベルの中のパスの長さの最大値 -を指定する。パスが長くなると、最初と最後以外のパスの要素は取り除かれる。次に、 -必要であれば、後ろと前の文字がこれらから取り除かれる。最後に全てのパスの要素が -取り除かれる。.gvimrcはmenu.vimの後に実行されるので、これらの変数は.vimrcかあ -るいは同様のファイルの中で設定されなければならない。デフォルト値は -bufmenu_fullpath=0とbufmenu_maxlen=50である。 +別の言語用にメニューを作成するには、|:menutrans|を参照。 + *menu.vim* +標準のメニューは"$VIMRUNTIME/menu.vim"ファイルから読み込まれる。パスがどこを指 +すかについては|$VIMRUNTIME|を参照。ユーザーは自分のメニューを設定することがで +きる。そのさいに標準のメニューを利用するのはいい考えである。メニューに項目を追 +加したり、あるいは、標準のメニューが気に入らなければ、全てのメニューを取り除く +ことができる|:unmenu-all|。.vimrcファイル(.gvimrcファイルではない!)にこの行を +追加することで標準のメニューが読み込まれないようにすることもできる: > + :let did_install_default_menus = 1 +メニュー項目のSyntax(シンタックス)も無効にしたいなら: > + :let did_install_syntax_menu = 1 +メニュー項目のSyntax(シンタックス)は欲しいが、利用可能なシンタックスファイルの +一覧はいらないなら(これを読み込むのは多少の時間を必要とするので): > + :let skip_syntax_sel_menu = 1 +< *console-menus* -このドキュメントはGUIセクションの中にあるけれども、コンソールモードでも実際に -メニューを使用することができる。そのときには明示的に|menu.vim|をロードしなけれ -ばならないだろう、それはデフォルトではなされない。ほぼ実際のメニューシステムの -ようにメニューのエントリにアクセスするために'wildmenu'で|:emenu|コマンドとコマ -ンドライン補完を使用することができる。これをするには、あなたの.vimrcファイルに -これらのコマンドを付加しておく: -> :source $VIMRUNTIME/menu.vim -> :set wildmenu -> :set cpo-=< -> :set wcm=<C-Z> -> :map <F4> :emenu <C-Z> -<F4>を押すとメニューを開始するだろう。そのときにはメニューのエントリを選択する -ためにカーソルキーを使用することができる。それを実行するには<Return>を打ち込 -む。キャンセルしたいならば<Esc>を打ち込む。これはコンパイル時に|+menu|機能を有 -効にする必要がある。 +このドキュメントはGUIの項目であるけれども、CUI版のVimでも実際にメニューを使用 +することができる。そのときには明示的に|menu.vim|を読み込まなければならないだろ +う。それは標準では設定されない。ほぼ実際のメニューシステムのようにメニューの項 +目にアクセスするために'wildmenu'を設定して|:emenu|コマンドの使用時にコマンドラ +イン補完を使用することができる。これをするには、.vimrcファイルに次のコマンドを +付加しておく: > + :source $VIMRUNTIME/menu.vim + :set wildmenu + :set cpo-=< + :set wcm=<C-Z> + :map <F4> :emenu <C-Z> +メニューを開始するには<F4>を押す。そのときにはメニューのエントリを選択するため +にカーソルキーを使用することができる。それを実行するには<Enter>を入力する。 +キャンセルするには<Esc>を入力する。これはコンパイル時に|+menu|機能を有効にする +必要がある。 *tear-off-menus* -GTK+とMotifはTear-offメニューをサポートする。これらは張り付いたメニューかある -いはいつも存在しているポップアップメニューのようなものである。サイズの変更が正 -確に機能しないならば、これはデフォルトで何か"Vim*geometry"のようなものを用いる -ことによって起こされるのかもしれない。代わりに"Vim.geometry"を使用する。 +GTK+とMotifは切取りメニュー(Tear-offメニュー)をサポートする。これは少し変わっ +たメニューで、ポップアップメニューが常に表示されるようなものである。メニューの +ウィンドウのサイズの変更が正確に機能しないなら、これはリソースに"Vim*geometry" +のように設定していることが原因かもしれない。もしそうなら代わりに"Vim.geometry" +を使用する。 -Win32 GUIバージョンはMotifのtear-offメニューをエミュレートする。実際には、 -Motifユーザーは容易に相違を見つけるであろうが、うまく行けばそれらは同じくらい -に便利である。メインメニューバーには現れないフローティングメニューを作成するた -めに|:tearoff|コマンドと共に|win32-hidden-menus|を使用することもできる。 +Win32 GUIバージョンはMotifの切取りメニューをエミュレートする。Motifユーザーな +ら簡単に違いを確認できるだろうが、同じように便利に使えると思う。|:tearoff|コマ +ンドと|hidden-menus|を利用して、メインのメニューバーに項目を作らずに切取りメ +ニューを作ることができる。 5.2 新しいメニューの作成 *creating-menus* @@ -445,72 +500,107 @@ Motifユーザーは容易に相違を見つけるであろうが、うまく行 *:vme* *:vmenu* *:vnoreme* *:vnoremenu* *:ime* *:imenu* *:inoreme* *:inoremenu* *:cme* *:cmenu* *:cnoreme* *:cnoremenu* -新しいメニュー項目を作るには、":menu"コマンドを使用する。それらはまさにコマン -ドの":map"の設定と同様だが最初の引数はメニュー項目の名前であり、'.'で区切った -メニューとサブメニューのパスとして与えられる。例えば: -> :menu File.Save :w<CR> -> :inoremenu File.Save <C-O>:w<CR> -> :menu Edit.Big\ Changes.Delete\ All\ Spaces :%s/[ ^I]//g<CR> - -この最後の1つは"Edit"と呼ばれるメニューバーに新しい項目を作るだろう、そしてこ -の上でマウスのボタンを押し続けると"Big Changes"サブメニューを含んだメニューを -ポップアップするだろう、このサブメニューは"Delete All Spaces"の項目を含んでい -て、この項目を選択したとき、その操作を行う。 + *E330* *E327* *E331* *E336* *E333* + *E328* *E329* *E337* +新しいメニュー項目を作るには、":menu"コマンドを使用する。これはほとんど":map" +のコマンド群と同じだが最初の引数はメニュー項目の名前であり、'.'で区切ったメ +ニューとサブメニューのパスとして与えられる。例えば: > + + :menu File.Save :w<CR> + :inoremenu File.Save <C-O>:w<CR> + :menu Edit.Big\ Changes.Delete\ All\ Spaces :%s/[ ^I]//g<CR> + +この最後の1つはメニューバーに"Edit"という新しい項目を作る、そしてその上でマウ +スのボタンを押すと"Big Changes"という項目を含んだメニューが表示されるだろう。 +"Big Changes"は"Delete All Spaces"という項目を含むサブメニューを持っていて、そ +の項目を選択すると操作が実行される。 メニュー名での特殊文字: - & 次の文字はショートカットキーである。どのショートカットキーも - (サブ)メニューの中で1度だけしか使用されていないことを確認する - こと。 - <Tab> 右詰めされたテキストからメニュー名を分離する。これは同等のタイ - プするコマンドを表示するために使用することができる。"<Tab>"テ - キストは便宜上ここで使用してもよい。本当のTabを使用しているな - らば、その前にバックスラッシュを付け忘れてはならない! -例: -> :amenu &File.&Open<Tab>:e :browse e<CR> + & この文字の次の文字はショートカットキーである。どのショートカッ + トキーも(サブ)メニューの中で1度だけしか使用されていないことを + 確認すること。メニュー名に"&"を入れるには"&&"とする。 + <Tab> メニューの名前をそこで区切って以降を右詰めにする。実行する操作 + をそろえて表示するのに便利である。使いやすいように文字として + "<Tab>"をそのまま書けばいいようになっている。本当のTab文字を使 + 用するなら、その前にバックスラッシュを付けること! +例: > + + :amenu &File.&Open<Tab>:e :browse e<CR> + [文字通りタイプする] -(<Alt>キーを押し続けている間に)"F"、それから"O"のショートカットで、この -メニューを使用することができる。2番目の部分は"Open :e"のように表示される。 -":e"は右詰めされ、それがショートカットであることを示すために、"O"には下線が引 -かれる。 - -":amenu"コマンドは1度で全てのモードにメニューのエントリを定義するために使用す -ることができる。コマンドを正確に機能させるために、いくつかのモードには文字が自 -動的に挿入される: - モード 挿入される文字 ~ - Normal なし - Visual <Esc> - Insert <C-O> - Cmdline <C-C> - Op-pending <Esc> - -例: -> :amenu File.Exit :qa!^M -は以下と同じ: -> :nmenu File.Exit :qa!^M -> :vmenu File.Exit ^[:qa!^M -> :imenu File.Exit ^O:qa!^M -> :cmenu File.Exit ^C:qa!^M -> :omenu File.Exit ^[:qa!^M - -注意: Insertモードでは、CTRL-Oのために、これは‘1つの’Normalモードのコマンド -に対してだけ機能する。2つかそれ以上のコマンドがあるならば、":imenu"コマンドを -使用する必要があるだろう。どのモードでもテキストを挿入するには、式のレジスタを -使用することができる: -> :amenu Insert.foobar "='foobar'<CR>P - -'cpoptions'の中の'<'と'k'フラグはここにも適用する(含まれていたときには、それら -は認識されずに<>の書式と生のキーコードを作る)ことに注意する。 - -Cmdlineモードでの<Esc>はマッピングの中にあるようにコマンドを実行することに注意 -する。これはVi互換である。Cmdlineモードを終了するにはCTRL-Cを使用する。 +(<Alt>キーと同時に)ショートカットキーの"F"を押し、それから"O"を押すと、このメ +ニューを使用できる。Openの項目は"Open :e"のように表示される。":e"は右詰め +され、"O"にはショートカットであることを示すために下線が引かれる。 + +":amenu"コマンドは全てのモードで使えるメニューの項目を1度に定義することができ +る。コマンドを正確に機能させるために、いくつかのモード用に自動的に文字が付加さ +れる: + モード 前に付加 後ろに付加 ~ + ノーマルモード なし なし + ビジュアルモード <C-C> <C-\><C-G> + 挿入モード <C-O> + コマンドラインモード <C-C> <C-\><C-G> + 演算子未解決モード <C-C> <C-\><C-G> + +後ろに付加されるCTRL-\ CTRL-Gは'insertmode'が設定されているときには挿入モード +に戻る。|CTRL-\_CTRL-G|を参照。 + +例: > + + :amenu File.Next :next^M + +は以下と同じである: > + + :nmenu File.Next :next^M + :vmenu File.Next ^C:next^M^\^G + :imenu File.Next ^O:next^M + :cmenu File.Next ^C:next^M^\^G + :omenu File.Next ^C:next^M^\^G + +注意: 挿入モードでは1つのノーマルモードのコマンドに対してだけ機能する。これは +CTRL-Oの仕様による。2つ以上のコマンドを使うには、":imenu"コマンドを使用する必 +要がある。どのモードでもテキストを挿入するために式レジスタ('='レジスタ)を使用 +することができる: > + + :amenu Insert.foobar "='foobar'<CR>P + +Note: 'cpoptions'の中の'<'フラグと'k'フラグが適用される(含まれていたときには、 +<>による特殊キーの書式や生のキーコードは認識されない)。 + +Note: コマンドラインモードでの<Esc>はマッピングで使用されたときと同様に(入力を +キャンセルするのではなく)コマンドを実行する。これはVi互換である。コマンドライ +ンモードを終了するにはCTRL-Cを使用する。 +訳注: |c_<Esc>|を参照 + + *:menu-<silent>* *:menu-silent* +実行したコマンドをコマンドラインに表示しないようなメニューを定義するには、最初 +の引数に"<silent>"を加える。例: > + :menu <silent> Settings.Ignore\ case :set ic<CR> +これでこのメニューを使っても":set ic"はコマンドラインに表示されない。それでも +実行したコマンドの出力は表示される。それを表示しないようにするには、":silent" +を付けてコマンドを実行する: > + :menu <silent> Search.Header :exe ":silent normal /Header\r"<CR> +< + *:menu-<script>* *:menu-script* +メニューに指定されたコマンドにはマッピングが適用される。適用しないようにするに +は、":noremenu"コマンド(とそれに類するモード別のコマンド)を使う。スクリプト +ローカルなマッピングを使うには":menu"コマンドの最初の引数、あるいは"<silent>" +の次に"<script>"と書く。 +訳注: これは<SID>で指定した部分だけがマッピングされる。例: +訳注: nnoremenu <script> AAA.BBB :echo "<SID>LM" "LM"<CR> +訳注: cnoremap <SID>LM 'This is script-local mapping' +訳注: cnoremap LM 'This is not used' +訳注: スクリプトファイルでこのように設定し、メニューのAAA.BBBを実行すると +訳注: 'This is script-local mapping' LM +訳注: と表示される。"<SID>LM"はマッピングされ、"LM"はマッピングされていない。 *menu-priority* メニューに優先度を与えることができる。より高い優先度を与えられたメニューほど右 -に行く。優先度は":menu"コマンドの前の数字で与えれられる。 -例: -> :80menu Buffer.next :bn<CR> +に配置される。優先度は":menu"コマンドの前の数字で与えれられる。 +例: > + :80menu Buffer.next :bn<CR> -デフォルトのメニューはこれらの優先度を持つ: +標準のメニューはこれらの優先度を持つ: File 10 Edit 20 Tools 40 @@ -519,63 +609,99 @@ Cmdlineモードでの<Esc>はマッピングの中にあるようにコマン Window 70 Help 9999 -何も与えられないか、あるいはゼロの優先度が与えられるときには、500が用いられ -る。ポップアップメニューについては優先度は用いられない。 +優先度を指定しない、あるいはゼロを指定すると、500が用いられる。 +ポップアップメニューに対しては優先度は意味を持たない。 + +メニューの「Help」の項目は、それをサポートしているシステム(MotifとGTK+)では、 +メニューバーの右端に寄せて置かれる。GTK+ 2では、メニューのHelpを右端に寄せるの +は今のところユーザーインターフェースデザインの妨げになっているので、もはやサ +ポートされない。 ヘルプメニューの後ろに置くために、9999より高い優先度を使用することができるが、 それは非標準であり、推奨しない。優先度の取り得る値は最高で約32000である。最低 は1である。 *sub-menu-priority* -同じ機構はサブメニューを配置するために使用してもよい。優先度は、メニュー名の前 -に、ドット区切りの優先度のリストとして与えられる: -> :menu 80.500 Buffer.next :bn<CR> -サブメニューの優先度を与える必要があるのは、項目が通常の位置に置かれないときだ -けである。例えば、他の項目の前にサブメニューを置くには: -> :menu 80.100 Buffer.first :brew<CR> -あるいは他の項目の後にサブメニューを置いて、それ以上のデフォルトの優先度を持つ -項目がその前に置かれるようにするには: -> :menu 80.900 Buffer.last :blast<CR> -数字が抜けているときには、デフォルト値の500が用いられる: -> :menu .900 myMenu.test :echo "text"<CR> -メニューの優先度は新しいメニューが生成されるときにだけ用いられる。それがすでに -存在するときには、例えば、別のモードでは、優先度は変わらないだろう。したがっ -て、優先度はメニューが使用される最初のときにだけ与えられる必要がある。 -例外はポップアップメニューである。モード毎(Normal, Op-pending, Visual, Insert, -Cmdline)に分かれたメニューがある。これらのメニュー毎での順序は異なってもよい。 -これはメニューバーメニューとは異なる。 -注意: サブメニューの優先度は現在全てのGUIのバージョンに対して機能する訳ではな -い。 +同様にサブメニューも配置を指定できる。優先度は、メニュー名の前に、ドット区切り +の優先度のリストとして指定する: > + :menu 80.500 Buffer.next :bn<CR> +サブメニューの優先度を与える必要があるのは、項目を配置する位置を指定したいときだ +けである。例えば、他の項目の前にサブメニューを置くには: > + :menu 80.100 Buffer.first :brew<CR> +あるいは他の項目の後にサブメニューを置いて、標準設定の優先度を持つ項目がその前 +に置かれるようにするには: > + :menu 80.900 Buffer.last :blast<CR> +数字が抜けているときには、標準設定の500が用いられる: > + :menu .900 myMenu.test :echo "text"<CR> +メニューの優先度はメニューを新しく生成するときだけ用いられる。すでにあるとき、 +例えば、別のモードで定義されていたときには、優先度は変更されない。したがって、 +優先度はメニューを最初に定義するときだけ与える必要がある。 +例外はポップアップメニューである。各モード(ノーマルモード、演算子未解決モー +ド、ビジュアルモード、挿入モード、コマンドラインモード)に別々のメニューがあ +る。これらのメニューは順序が異なってもよい。これはメニューバーのメニューとは異 +なる。メニューバーのメニューは全てのモードで同じ順序である。 +NOTE: サブメニューの優先度は現在全てのGUIのバージョンで機能する訳ではない。 + + *menu-separator* *E332* +メニューの各項目は特殊なメニュー項目を使って区切ることができる。それはシステム +によるが、線や点線として表示される。そのような項目の名前は'-'で始めて'-'で終わ +るように定義する。間には一意な名前を挟むことができる。普通のメニュー項目と同様 +に優先度を設定することもできる。 +例: > + :menu Example.item1 :do something + :menu Example.-Sep- : + :menu Example.item2 :do something different +Note: 区切りの定義にはコマンドの指定が必要である。そのメニュー項目は選択するこ +とができないので、内容はなんでも構わない。ただ単にコロン(:)を1つ書いておくだけ +でいい。 *gui-toolbar* -現在、ツールバーはWin32とGTK+ (X11) GUIでだけ有効である。やがては他のGUIにも現 -れるべきである。サンプルのツールバーの定義はmenu.vimに与えられている。ツール -バーの表示は'guioptions'の文字'T'によって制御される。したがって、メニューと -ツールバーを同時に、あるいはいずれかを持つことができるし、またどちらも持たない -ようにすることもできる。 - +ツールバーは今のところWin32、Athena、Motif、GTK+ (X11)、Photon GUIで利用可能で +ある。いずれは他のGUIでも使えるようになるだろう。標準のツールバーはmenu.vimで +定義されている。 +ツールバーの表示は'guioptions'の文字'T'によって制御される。したがって、メ +ニューとツールバーを同時に、あるいはどちらかだけを表示することもできるし、両方 +とも非表示にすることもできる。画像かテキスト、もしくは両方を表示するかを選ぶこ +とができる。 + + *toolbar-icon* ツールバーは、1つのレベルだけを持つToolBarと呼ばれる特別なメニューとして定義さ れている。Vimはこのメニューの項目を以下のように解釈する: -1) 'BuiltIn##'(##は数字である)と呼ばれる項目はVimで利用可能な組み込みのビット - マップの番号##と見なされる。現在、最も一般的な編集操作|builtin-tools|を包 - 含する、0から27まで振られた28の番号がある。 -2) 他の名前を持つ項目は最初に$VIM/bitmapsディレクトリから検索される。見つかっ - たならば、そのビットマップファイルがツールバーボタンのイメージとして用いら - れる。正確なファイル名はOS特有であることに注意する: 例えば、Win32でのコマ - ンド -> :amenu ToolBar.Hello :echo "hello"<CR> - は、'hello.bmp'ファイルを検索するだろう。GTK+/X11では'Hello.xpm'である。カ - スタムビットマップのロードはW95, NT4とGTK+でだけサポートされる。Win32では、 - ビットマップはボタンに合わせて大きさが調整されるが、GTK+ではされない。 - GTK+については、デフォルトのpixmapのサイズは20x20ピクセルが用いられる。 -3) $VIM/bitmapsにビットマップが見つからないならば、Vimは組み込みの名前のリス +1) "icon="引数が与えられたときは、そのファイルが使われる。ファイル名にはフル + パスか、ファイル名のみを指定する。後者の場合には、そのファイルは3)の場合と + 同じように'runtimepath'の"bitmaps"ディレクトリから検索される。例: > + :amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo"<CR> + :amenu icon=FooIcon ToolBar.Foo :echo "Foo"<CR> +< Note: 最初の例では拡張子も含めている。2番目の例では拡張子は省略されてい + る。 + ファイルが開けなければ2)を試す。 + ファイル名に空白を含めるにはバックスラッシュでエスケープする。 + メニューの優先度はiconの引数の後に指定する: > + :amenu icon=foo 1.42 ToolBar.Foo :echo "42!"<CR> +2) 'BuiltIn##'(##は数字である)という名前の項目はVimで利用可能な組み込みのビッ + トマップの番号##を使用するとみなされる。今のところ、0から30までの31個の一 + 般的な編集操作のものが用意されている|builtin-tools|: > + :amenu ToolBar.BuiltIn22 :call SearchNext("back")<CR> +3) 2)以外の名前を持つ項目は最初に'runtimepath'の"bitmaps"ディレクトリから検索 + される。もしあればそのビットマップファイルがツールバーボタンのイメージとし + て用いられる。正確なファイル名はOS特有であることに注意する。例えば、Win32 + でのコマンド > + :amenu ToolBar.Hello :echo "hello"<CR> +< は、'hello.bmp'ファイルを検索するだろう。GTK+/X11では'Hello.xpm'である。 + GTK+ 2では'Hello.png'、'Hello.xpm'、'Hello.bmp'がチェックされ、最初に見つ + かったものが使われる。 + MS-WindowsとGTK+ 2ではビットマップはボタンの大きさに合わせて拡大縮小され + る。MS-Windowsでは縦18横18のサイズがちょうどいいだろう。 + MS-Windowsではビットマップは16色の標準パレットを使った物である。明るい灰色 + はウィンドウのフレームの色に変更され、暗い灰色はウィンドウの影の色に変更さ + れる。システムに依存するが、16色よりも色が多くても問題ないだろう。 +4) ビットマップがまだ見つからないならば、Vimは組み込みの名前のリス トに対して同等のものを探す。どの組み込みのボタンイメージも名前を持ってい る。だから、コマンド -> :amenu ToolBar.Open :e + :amenu ToolBar.Open :e は、open.bmpが存在しなければ、組み込みの"open a file"ボタンイメージを表示 - するだろう。全ての組み込みの名前はmenu.vimで用いられているのを見ることがで - きる。 -4) 他の全てが失敗するならば、空白だが、機能している、ボタンが表示される。 + するだろう。全ての組み込みの名前はmenu.vimで用いられているので確認できる。 +5) 全てが失敗すると、空白だが、ちゃんと機能する、ボタンが表示される。 *builtin-tools* 番号 名前 通常の動作 ~ @@ -608,41 +734,55 @@ Cmdline)に分かれたメニューがある。これらのメニュー毎での 25 Make makeを実行し最初のエラーにジャンプする 26 TagJump カーソルの下のtagにジャンプする 27 RunCtags 現在のディレクトリのファイルに対してtagsを作成する +28 WinVSplit 現在のウィンドウを縦分割する +29 WinMaxWidth 現在のウィンドウの幅を最大化する +30 WinMinWidth 現在のウィンドウの幅を最小化する - *win32-hidden-menus* -Win32 GUIでは、']'で始まるメニュー名はメインメニューバーから除外される。それを -表示するには|:tearoff|コマンドを使用しなければならない。 + *hidden-menus* *win32-hidden-menus* +Win32とGTK+ GUIでは、']'で始まるメニュー名はメインのメニューバーから除外され +る。それを表示するには|:popup|か|:tearoff|コマンドを使用しなければならない。 *popup-menu* -Win32, GTK, MotifとAthena GUIでは、特別なメニュー"PopUp"を定義することができ -る。これは、'mousemodel'がpopupあるいはpopup_setposに設定されているならば、マ -ウスの右ボタンが押されたときに表示されるメニューである。 +Win32、GTK+、Motif、Athena、Photon GUIでは、特別なメニュー"PopUp"を定義するこ +とができる。これは、'mousemodel'がpopupあるいはpopup_setposに設定されていると +きに、マウスの右ボタンが押されると表示されるメニューである。 + +5.3 メニューの定義を表示する *showing-menus* -5.3 マップされているメニューの表示 *showing-menus* +メニューがどのように定義されているかを確認するには、(":map"コマンドでするのと +全く同様に)menuコマンドの後にたった1つの引数を指定するだけである。指定されたメ +ニューがサブメニューならば、その階層の下の全てのメニューが表示される。:menuの +後に引数を与えなければ、適切なモードに対する全てのメニュー項目が表示される(例 +えば、コマンドラインモードに対して:cmenu)。 -存在しているどのメニューがマップされているかを見るには、(":map"コマンドでする -のと全く同様に)menuコマンドの後にたった1つの引数を使用するだけである。指定され -たメニューがサブメニューならば、その階層の下の全てのメニューが表示されるだろ -う。:menuの後に全く何も引数が与えられなかったならば、適切なモードに対する‘全 -ての’メニュー項目が表示される(例えば、Command-lineモードに対して:cmenu)。 +メニュー項目の一覧には、指定されたコマンドの前に特別な文字が表示される: +* そのメニュー項目は再マッピングを避けるために"nore"を付けて定義された +& そのメニュー項目は再マッピングをスクリプトローカルに限定するために + "<script>"を付けて定義された +- そのメニュー項目は非表示である -メニューコマンドの後にメニュー名を入力している間に<Tab>を打つことはメニュー項 -目の名前を補完するのに使われるかもしれないことに注意する。 +NOTE: menuコマンドでメニューの名前を入力しているときに<Tab>を打つと名前が補完 +される(設定による)。 5.4 メニューの実行 *execute-menus* - *:eme* *:emenu* -コマンドラインからメニュー項目を手動で実行するには、:emenuコマンドを使用する。 -例えば: -> :emenu File.Exit + *:em* *:emenu* *E334* *E335* +:[range]em[enu] {menu} コマンドラインから{menu}を実行する。 + 通常はノーマルモードのメニューを実行する。実行 + 範囲が与えられたときは、ビジュアルモードのメ + ニューを実行する。 + <c-o>から実行されたときは、挿入モードのメ + ニューを実行する。例: > + :emenu File.Exit -メニューに関連付けられた通常モードのコマンドが実行される(通常それがしたいこと -でなので)。コンソールモードのvimがWANT_MENUを定義されてコンパイルされている -ならば、GUIモードによって慣れてしまった便利なメニュー項目にアクセスするために -:emenuを使用することができる。これと共にうまく機能するオプションについては -'wildmenu'を参照。例については|console-menus|を参照。 +CUI版のvimをWANT_MENUを定義してコンパイルしたなら、:emenuを使ってGUIのときと同 +じように便利なメニューを使用できる。そのさいに'wildmenu'を設定しておくと便利で +ある。使用例は|console-menus|を参照。 + +範囲を指定するとき、'<,'>と指定すると、最後にビジュアル選択した範囲に対して実 +行される。 5.5 メニューの削除 *delete-menus* @@ -654,108 +794,171 @@ Win32, GTK, MotifとAthena GUIでは、特別なメニュー"PopUp"を定義す *:vunme* *:vunmenu* *:iunme* *:iunmenu* *:cunme* *:cunmenu* -メニュー項目あるいは全てのサブメニューを削除するには、unmapコマンドに類似した -unmenuコマンドを使用する。例えば: +メニュー項目やサブメニュー全体を削除するには、unmapコマンドによく似たunmenuコ +マンドを使用する。例えば: > :unmenu! Edit.Paste -これはInsertとCommand-lineモードに対してEditメニューからPaste項目を取り除くだ -ろう。 +これは挿入モードとコマンドラインモードでの操作をEditメニューの項目Pasteから取 +り除く。 -メニューコマンドの後にメニュー名を入力している間に<Tab>を打ち込むことは適切な -モードに対するメニュー項目の名前を補完するために使われるかもしれないことに注意 -する。 +NOTE: umenuコマンドでメニューの名前を入力しているときに<Tab>を打つと名前が補完 +される(設定による)。 -全てのメニューを取り除くには以下を使用する: *:unmenu-all* -> :unmenu * " Normalとvisualモードで全てのメニューを取り除く -> :unmenu! * " InsertとCommand-lineモードで全てのメニューを取り除く +全てのメニューを取り除くには次のようにする: *:unmenu-all* > + :unmenu * " ノーマルモードとビジュアルモードの全てのメニューを取 + " り除く + :unmenu! * " 挿入モードとコマンドラインモードの全てのメニューを取 + " り除く + :aunmenu * " 全てのモードの全てのメニューを取り除く +メニューバーを非表示にするには: > + :set guioptions-=m -5.6 メニューの例 *menu-examples* -ここにあるのはメニューにメニュー項目を追加する方法の例である! カーソルの下の -キーワードに対してメニュー項目を追加することができる。レジスタ"z"が使用され -る。 +5.6 メニューを無効にする *disable-menus* -> :nmenu Words.Add\ Var wb"zye:menu! Words.<C-R>z <C-R>z<CR> -> :nmenu Words.Remove\ Var wb"zye:unmenu! Words.<C-R>z<CR> -> :vmenu Words.Add\ Var "zy:menu! Words.<C-R>z <C-R>z <CR> -> :vmenu Words.Remove\ Var "zy:unmenu! Words.<C-R>z<CR> -> :imenu Words.Add\ Var <Esc>wb"zye:menu! Words.<C-R>z <C-R>z<CR>a -> :imenu Words.Remove\ Var <Esc>wb"zye:unmenu! Words.<C-R>z<CR>a + *:menu-disable* *:menu-enable* +メニューを削除するのではなくて、一時的に無効にしたいときは、":menu"コマンドに +"disable"キーワードを指定する。有効にするには"enable"キーワードを指定する。 +例: > + :menu disable &File.&Open\.\.\. + :amenu enable * + :amenu disable &Tools.* -(rhsは<>表記の中にあり、マッピングを試すためにこのテキストをコピー/ペーストす -るか、あるいはあなたのgvimrcにこれらの行を付加することができる; "<C-R>"は -CTRL-Rであり、"<CR>"は<CR>キーである。|<>|) +このコマンドはmenuコマンド群が影響する各モードに適用される。"&"は翻訳された名 +前にも適用するために必要である。 +引数に"*"を使うと、全てのメニューに作用する。そうでなければ、指定したメニュー +項目とそのサブメニューに作用する。 -ツールtipsとメニューtips -これらは現在Win32 GUIでだけサポートされている。しかしながら、それらはそう遠く -ない未来に他のguiプラットホームのために現われるべきである。 +5.7 メニューの例 *menu-examples* + +これはメニューを使ってメニュー項目を追加する方法の例である! カーソルの下のキー +ワードをメニュー項目に追加することができる。作業用にレジスタ"z"を使用してい +る。 > + + :nmenu Words.Add\ Var wb"zye:menu! Words.<C-R>z <C-R>z<CR> + :nmenu Words.Remove\ Var wb"zye:unmenu! Words.<C-R>z<CR> + :vmenu Words.Add\ Var "zy:menu! Words.<C-R>z <C-R>z <CR> + :vmenu Words.Remove\ Var "zy:unmenu! Words.<C-R>z<CR> + :imenu Words.Add\ Var <Esc>wb"zye:menu! Words.<C-R>z <C-R>z<CR>a + :imenu Words.Remove\ Var <Esc>wb"zye:unmenu! Words.<C-R>z<CR>a + +(指定するコマンドには<>記法を使える。このテキストをそのままコピー/ペーストして +試してみたり、gvimrcに書き加えることができる。"<C-R>"はCTRL-Rであり、"<CR>"は +<CR>キーである。|<>|) - *:tmenu* *:tm* -:tm[enu] {menupath} {rhs} メニューあるいはツールにtipを定義する。{GTK+と - Win32 GUIでだけ} -:tm[enu] [menupath] メニューtipsをリストする。{GTK+とWin32 GUIでの - み} +5.8 ツールチップとメニューチップ -"tip"はどのメニュー項目にも定義することができる。例えば、このように項目を定義 -した後で: -> :amenu MyMenu.Hello :echo "Hello"<CR> -tipはこのように定義される: -> :tmenu MyMenu.Hello Displays a greeting. +ユーザーマニュアルの|42.4|を御覧ください。 -tipがメニュー項目に定義されるときには、マウスがその項目の上にあるとき、ステー -タスバーの標準Windowsメニューヒントとほとんど同様、Command-lineエリアに表示さ -れる。(VimがCommand-lineコマンドであるとき、もちろん何も表示されないときを除い -て。) -tipがツールバー項目に定義されるときには、普通の方法で、マウスがそのボタンの上 -で一旦止まったとき、ツールtipが表示される。 + *:tmenu* *:tm* +:tm[enu] {menupath} {rhs} メニューやツールバーにチップを定義する。 + {X11とWin32 GUIのみ} -":tmenu"コマンドは他のメニューコマンドと全く同様に機能し、それは同じ引数を使用 -する。 +:tm[enu] [menupath] メニューチップを一覧表示する。 + {X11とWin32 GUIのみ} *:tunmenu* *:tu* -:tu[nmenu] {menupath} メニューあるいはツールからtipを取り除く。{GTK+ - とWin32 GUIでだけ} +:tu[nmenu] {menupath} メニューやツールバーのチップを削除する。 + {X11とWin32 GUIのみ} + +メニューの項目にチップが定義されていて、マウスがその項目の上にあるとき、その +チップがコマンドラインに表示される。それはWindows標準でステータスバーに表示さ +れるメニューヒントに似ている(Vimがコマンドラインモードのときは除く、そのときは +もちろん何も表示されない)。 +ツールバーの項目にチップが定義されているときは、慣習にしたがって、マウスがその +ボタンの上で止まったときにツールチップが表示される。その表示に使う色を変更する +にはハイライトグループの|hl-Tooltip|を設定する。 + +チップはメニューの各項目に定義できる。例えば、次のようにメニュー項目を定義した +とき: > + :amenu MyMenu.Hello :echo "Hello"<CR> +次のようにチップを定義する: > + :tmenu MyMenu.Hello Displays a greeting. +そして次のように削除する: > + :tunmenu MyMenu.Hello + +ツールチップは今のところX11とWin32 GUIでサポートされている。近い内に他のGUI環 +境でもサポートされるだろう。 + +":tmenu"コマンドは他のmenuコマンド群と同じように機能し、同じ引数をとる。 +":tunmenu"は他のunmenuコマンド群と同じようにメニューチップを削除する。 + +メニュー項目が無効になる(例えば、全てのモードでその動作が削除される)ときには、 +Vimはメニューチップ(と項目)を削除する。つまり:aunmenuでメニュー項目を削除する +ときには、:tunmenuする必要はないということである。 + + +5.9 ポップアップメニュー + +Win32とGTK+ GUIでは、カーソルの位置にメニューをポップアップ表示することができ +る。これは「PopUp」メニューと同じように動作し、どんなメニューでも表示すること +ができる。 + +このコマンドは後方互換性のために残されていて、使用することは推奨されない。なぜ +ならこのコマンドのふるまいは好ましくないからである。 + + *:popup* *:popu* +:popu[p] {name} メニュー項目{name}をポップアップ表示する。その + メニューは少なくとも1つ以上の項目を持っている + 必要がある。メニューバーに表示されている必要は + ない。 + +例: > + :popup File +とすると"File"メニューを(もしあれば)カーソル位置に表示させる。 > + + :amenu ]Toolbar.Make :make<CR> + :popup ]Toolbar +これはメインのメニューバーにメニュー項目を作らずにポップアップメニューを作成す +る。 -:tunmenuは、他のunmenuコマンドと同じ方法で、存在するメニューtipを削除する。例: -> :tunmenu MyMenu.Hello -メニュー項目が無効になる(例えば、全てのモードでその動作が削除される)ならば、 -Vimはメニューtip(と項目)を削除する。これは:aunmenuがメニュー項目を削除する、つ -まり、同様に:tunmenuする必要はないことを意味する +Note: ']'で始まるメニュー項目はメニューバーに表示されない。 ============================================================================== 6. 付記 *gui-extras* -このセクションはGUIと関係がある他の機能を記述する。 +このセクションではGUIに関連したその他の特徴を説明する。 -- GUIでは、キーコードは<Esc>で始まらないため、エスケープを打ち込んだ後1秒待た +- GUIでは、キーコードは<Esc>で始まらないため、エスケープを入力した後に1秒待た なくてよい。 -- 用いられた内部の文字列は無意味なので、GUIで特殊キーが後に続く^Vをタイプする - ことは "<Key>"を挿入するだろう。修飾子もまた"<Modifiers-Key>"を得るために抑 - 制されるかもしれない。 +- GUIでCTRL-Vに続いて特殊なキーを入力すると"<Key>"のように入力される。そのよう + な特殊なキーは内部で意味を持たないためである。修飾キーを同時に押して + "<Modifiers-Key>"を得ることもできる。 +訳注: 例えば、挿入モードでCTRL-Vに続いてDelキーを押すと"<Del>"(見た通り5文字) +訳注: が入力される。Alt(META)キーを押しながらDelキーを押すと"<M-Del>"が入力さ +訳注: れる。Shiftキーなら"<S-Del>"。 + +- GUIでは、修飾キーのSHIFT、CTRL、ALT(META)は特殊キーやマウスイベントのマッピ + ングで使用できる。例えば、:map <M-LeftDrag> <LeftDrag> + +- GUIでは、いくつかの普通のキーにマッピング等で修飾キーを付けて使用できる。そ + のようなキーは<Space>、<Tab>、<NL>、<CR>、<Esc>である。 -- GUIでは、修飾子SHIFT, CTRLとALT(あるいはMETA)は特殊キーとマウスイベントの - マッピングなしで使用されるかもしれない。例えば: :map <M-LeftDrag> <LeftDrag> +- GUIが使われているかどうかをVimスクリプト内で調べるには次のようにする: > -- GUIでは、いくつかの通常のキーはマッピング等で修飾子を持つかもしれない、これ - らは<Space>, <Tab>, <NL>, <CR>, <Esc>である。 + if has("gui_running") + echo "yes, we have a GUI" + else + echo "Boring old console" + endif ============================================================================== 7. シェルコマンド *gui-shell* -X11 GUIについては、外部コマンドはgvimウィンドウの中で実行される。|gui-pty|を参 -照。 +X11 GUIでは外部プログラムはgvimウィンドウの中で実行される。 +|gui-pty|を参照。 -‘警告’: X11 GUIから外部コマンドを実行することは常に機能するとは限らないだろ -う。"ls", "grep"と"make"のような"normal"コマンドはたいていよく機能する。"less" -と"ispell"のような知的ターミナルを要求するコマンドは機能しないだろう。あるもの -はハングさえするかもしれないし、他のターミナルからkillされる必要があるかもしれ -ない。だから気を付けなくてはならない! +警告: X11 GUIで外部プログラムを実行することは常にうまく動作するとは限らない。 +"ls"、"grep"、"make"のような一般的なプログラムはたいていうまく機能する。"less" +や"ispell"のように高度なターミナルを要求するプログラムはうまく機能しないだろ +う。あるものはハングさえするかもしれないし、他のターミナルからkillする必要があ +るかもしれない。だから気を付けて! -Win32 GUIについては、外部コマンドは分離されたウィンドウで実行される。 +Win32 GUIでは外部プログラムは別のウィンドウで実行される。 |gui-shell-win32|を参照。 vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/intro.jax b/ja/intro.jax index 6f121ca84..fb9c75699 100644 --- a/ja/intro.jax +++ b/ja/intro.jax @@ -1,5 +1,5 @@ COMMENT: Vimの紹介 -STATUS: finished 5.7a +STATUS: finished 6.3.054 TRANSLATOR: 北条耀 TRANSLATOR: mm From 6116ee39fe871609ed596e0a748384aa653f4178 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Fri, 22 Apr 2005 15:23:53 +0000 Subject: [PATCH 026/783] finish starting.jax and 99% of syntax.jax git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@26 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/starting.jax | 1580 ++++++++++++--------- ja/syntax.jax | 3609 ++++++++++++++++++++++++++--------------------- 2 files changed, 2879 insertions(+), 2310 deletions(-) diff --git a/ja/starting.jax b/ja/starting.jax index d285f2e8f..ac88b187b 100644 --- a/ja/starting.jax +++ b/ja/starting.jax @@ -1,8 +1,8 @@ COMMENT: 起動方法、起動引数、起動設定ファイル -STATUS: finished 5.7 +STATUS: finished 6.3.54 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*starting.txt* For Vim version 5.7. Last change: 2000 Feb 14 +*starting.txt* For Vim version 6.3. Last change: 2004 May 28 VIMリファレンスマニュアル by Bram Moolenaar @@ -11,62 +11,67 @@ TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> Vimる *starting* 1. Vimの起動引数 |vim-arguments| -2. Vim on the Amiga |starting-amiga| -3. xargsからVimを起動 |xargs| +2. Amiga版のVim |starting-amiga| +3. eVimについて |evim-keys| 4. 初期化 |initialization| -5. サスペンド |suspend| -6. The vimrcファイル |vimrc-intro| -7. The viminfoファイル |viminfo-file| +5. $VIM と $VIMRUNTIME |$VIM| +6. サスペンド |suspend| +7. 設定の保存 |save-settings| +8. ビューとセッション |views-sessions| +9. viminfo ファイル |viminfo-file| ============================================================================== 1. Vimの起動引数 *vim-arguments* -大抵、Vimは一つのファイルを編集するために次のコマンドのように起動される。 +たいていは1つのファイルを編集するために次のようなコマンドでVimを起動する vim filename *-vim* -一般的にはVimはこのように起動することができる: +より一般的に言えば、Vimは次の書式で起動することができる: vim [option | filename] .. オプション引数とファイル引数は混在でき、幾つでも与える事ができる。しかし引数を -取るオプションには注意が必要。 +取るオプションには注意が必要である。 さまざまなViのバージョンとの互換性に付いては|cmdline-arguments|を参照。 -正確には、どうやって編集をスタートするかには次の5つの方法のどれか1つが使われる -ことになる: +正確には、以下の5つの項目から1つを選んで編集が開始される: *-file* *---* -filename 一つかそれ以上のファイル名。最初の一つが最初の編集ファイルとし - てバッファに読み込まれる。カーソルはバッファの最初の行に置かれ - る。 - '-'で始まるファイル名をオプションと区別するために、引数に"--" - を先行させることができる。例: - Vim -- -filename - "--"の後の全ての引数はファイル名として解釈されるので、その他の +filename 1つ以上のファイル名が与えられた場合。まずは最初の1つが編集ファ + イルとしてバッファに読み込まれる。カーソルはそのバッファの1行 + 目に置かれる。 + '-'で始まるファイル名を指定するには、オプションと区別するため + に、引数に"--"を置く。例: > + vim -- -filename +< "--"の後の全ての引数はファイル名として解釈されるので、その他の オプションや引数"+command"は使用することができない。 *--* -- この引数には、Exモードを使用するかによって、2つの意味がある。 +- この引数はExモードで起動するかどうかで意味が異なる。 - ノーマルモードで始める場合: -> vim - or ex -v - - 新しいバッファに、標準入力を読み込んで編集を始める。このコマン + ノーマルモードで起動する場合: > + vim - + ex -v - +< 新しいバッファに、標準入力を読み込んで編集を始める。このコマン ドを使用するとまず標準入力を読み込み、それから標準エラー出力を - 読み込む。例: -> find . -name "*.c" -print | vim - - バッファにはセーブを必要とするテキストが含まれるので、自動的に - 「変更」のマークがつけられる。ただし書き込み禁止モードでバッ - ファが変更されていない場合は除く。例: -> ls | view - - - Exモードで始める: -> ex - or vim -e - - サイレントモードで編集を開始するには|-s-ex|を参照。 + 読み込む。例: > + find . -name "*.c" -print | vim - +< バッファには未保存のテキストが含まれるので、「変更(modified)」 + のマークがつけられる。ただし読み込み専用モードで起動する場合は + 除く。例: > + ls | view - +< + Exモードで起動する場合: > + ex - + vim -e - + exim - + vim -E - +< サイレントモードで起動する。|-s-ex|を参照。 *-t* *-tag* --t {tag} タグを開く。"tag"がtagsファイルから検索され、関連づけられた +-t {tag} タグを開く。{tag}がtagsファイルから検索され、関連づけられた ファイルが現在のファイルとされ、関連づけられたコマンドが実行さ れる。大抵これはCプログラムを編集するときに使用され、"tag"は関 数名である事が多い。それにより、その関数を含むファイルが自動的 @@ -74,20 +79,21 @@ filename 一つかそれ以上のファイル名。最初の一つが最初の 照)。 *-q* *-qf* --q [errorfile] クイックフィックスモードで起動。[errorfile]という名前のファイ - ルが読み込まれ最初のエラーが表示される。|quickfix|を参照。 +-q [errorfile] クイックフィックスモードで起動。 [errorfile]に指定したファイル + が読み込まれ最初のエラーが表示される。|quickfix|を参照。 [errorfile]が与えられない場合、オプション'errorfile'がファイル 名として使用される。省略値に関しては'errorfile'を参照。 - {not in Vi} + {Vi にはない} (nothing) 上記の4つのうち、どれも指定せずにVimを起動すると、新しいバッ - ファが用意される。そのバッファは空で、ファイルネームを持たな - い。 + ファが用意される。それは名前のない空のバッファである。 -起動時のモードはプログラム名を"vim"とは別の名前にすることで指定でき、それは次 -のようにオプションを与えたのと同じである: +起動時のモードはプログラム名を"vim"とは別の名前にすることで指定できる。それは +次のようにオプションを与えたのと同じである: ex vim -e Exモードで起動(|Ex-mode|を参照)。 *ex* +exim vim -E 改良版Exモードで起動(|Ex-mode|を参照)。 *exim* + (通常はインストールされない) view vim -R 読み込み専用モードで起動(|-R|を参照)。 *view* gvim vim -g GUIで起動(|gui|を参照)。 *gvim* gex vim -eg GUIのEXモードで起動。 *gex* @@ -96,6 +102,10 @@ rvim vim -Z "vim"の制限モードで起動(|-Z|を参照)。 *rvim* rview vim -RZ "view"の制限モード。 *rview* rgvim vim -gZ "gvim"の制限モード。 *rgvim* rgview vim -RgZ "gview"の制限モード。 *rgview* +evim vim -y 簡易操作のVim(|-y|を参照) *evim* +eview vim -yR "evim"と同じ。読み込み専用モード。 *eview* +vimdiff vim -d 差分モードで起動|diff-mode| +gvimdiff vim -gd 差分モードで起動|diff-mode| これらの別名の後ろに付けられる文字は無視される。たとえばGUIで起動するのに "gvim-5"という名前を付けることができる。もちろんその名前で実行可能なファイルが @@ -104,20 +114,42 @@ rgview vim -RgZ "gview"の制限モード。 *rgview* UNIXでは通常、Vimという名前の実行可能ファイルが一つあり、それにに対して違う名 前のリンクが用意される。使用しているシステムがリンクをサポートせず、実行ファイ ルのコピーを幾つも作りたくないのならば、リンクの代わりにエイリアスを使うことも -できる。例: -> alias view vim -R -> alias gvim vim -g - +できる。例: > + alias view vim -R + alias gvim vim -g +< *startup-options* オプション引数はどんな順番で与えても良い。一文字のオプションは一つのダッシュ (-)の後に組み合わせる。引数"--"の後にはオプション引数を置くことはできない。 +VMSでは全てのオプション引数は小文字であるとみなされる。大文字を指定するにはス +ラッシュを前に置く。つまり"-R"でリカバリモード、"-/R"で読み込み専用となる。 + --help *-h* *--help* -h 使用法(ヘルプ)を表示して終了する。{Viにはない機能} + そのテキストを保存するには|info-message|を参照。 *--version* --version バージョン情報を表示して終了する。出力は|:version|コマンドと一 緒。{Viにはない機能} + そのテキストを保存するには|info-message|を参照。 + + *--noplugin* +--noplugin プラグインを読み込まない。'loadplugins'オプションをオフにす + る。{Vi にはない} + Note: |-u|引数でもプラグインを読み込まないようにできる: + 引数 vimrcファイル プラグイン ~ + なし yes yes + -u NONE no no + -u NORC no yes + --noplugin yes no + + *--literal* +--literal ファイル名を文字どおり解釈する。ワイルドカードを展開しない。 + Unixでは必要ない、Vimは常にファイル名を文字どおり解釈する(シェ + ルがワイルドカードを展開する)。 + 全てのファイル名に適用される。この引数の前に指定したものも同 + じ。 *-+* +[num] 最初に編集されるファイルの"num"行目にカーソルを置いて開く。 @@ -130,16 +162,35 @@ UNIXでは通常、Vimという名前の実行可能ファイルが一つあり +{command} *-+c* *-c* -c {command} 最初のファイルが読み込まれた後(加えてそのファイルに適応される - autocommandとmodelineが処理された後)に"command"が実行される。 + autocommandとmodelineが処理された後)に{command}が実行される。 "command"はExコマンドとして解釈される。"command"にスペースを含 んでいる場合には、ダブルクォートで挟まれている必要がある(これ - は使われているシェルに依存する)。例: -> vim "+set si" main.c -> vim -c "set ff=dos" -c wq mine.mak - + は使われているシェルに依存する)。例: > + vim "+set si" main.c + vim "+find stdio.h" + vim -c "set ff=dos" -c wq mine.mak +< Note: Vimコマンドの引数として"+"か"-c"をあわせ、最大10個まで使 - うことができる。これらの引数は与えられた順番で実行される。{Vi - は一つのコマンドしか許さない} + うことができる。これらの引数は与えられた順番で実行される。"-S" + 引数は"-c"として同じように数える。 + {Vi は一つのコマンドしか許さない} + +--cmd {command} *--cmd* + vimrcファイルを処理する前に{command}を実行する。それ以外は + -c {command} と同じである。"-c"引数とは別に、10個まで使うこと + ができる。 + + *-S* +-S {file} 最初のファイルが読み込まれた後に{file}を実行する。これは次のも + の簡単にしたものである: > + -c "source {file}" +< "-c"と混ぜて使うことができ、複数指定できる。"-c"と合わせて10個 + まで指定できる。 + {file}の先頭文字には"-"は使えない。 + {Vi にはない} + +-S "-S Session.vim"と同じ。最後の引数として使われたときや、その後 + に他のオプション引数が続いたときのみこのように解釈される。 *-r* -r リカバリモード。ファイル名の引数なしで実行した場合には、存在す @@ -148,8 +199,8 @@ UNIXでは通常、Vimという名前の実行可能ファイルが一つあり 読み込まれる。|crash-recovery|を参照。 *-L* --L -rと同じ。{幾つかのバージョンのViだけにある"復活可能な編集セッ - ションのリスト"の意味} +-L -rと同じ。{幾つかのバージョンのViだけにある: "List recoverable + edit sessions"(復活可能な編集セッションのリスト)のListのL} *-R* -R 読み込み専用モード。オプション'readonly'が、編集される全ての @@ -158,24 +209,35 @@ UNIXでは通常、Vimという名前の実行可能ファイルが一つあり る。もしも、読み込み専用モードにいることを忘れてバッファへ変更 を行ったとしても、":w!"のようにExコマンドに「ビックリマーク」 を付けることで上書きすることが可能。'readonly'オプションは - ":set noro"によりリセットすることが可能(オプションの章|option| - を参照)。その後の編集は読み込みモードではなくなる。実行ファイ - ルを"view"として起動した場合は、この-R引数と同じ動作になる。オ - プション'updatecount'は10000に設定され、これはスワップファイル - がそう頻繁には自動更新されなくなるという意味になる。 + ":set noro"としてオフに設定することが可能である(オプションを説 + 明した章|options|を参照)。その後の編集は読み込み専用モードでは + なくなる。実行ファイルを"view"として起動した場合は、この-R引数 + と同じ動作になる。オプション'updatecount'は10000に設定され、こ + れはスワップファイルがそう頻繁には自動更新されなくなるというこ + とである。 *-m* --m 変更が許されない。オプション'write'がリセットされ、ファイルを - 保存することができなくなる。オプション'write'をセットすれば、 - 再び保存することが可能になる。 +-m 変更を保存できなくする。オプション'write'がオフに設定され、 + ファイルを保存することができなくなる。オプション'write'をオン + すれば、再び保存することが可能になる。 + {Vi にはない} + + *-M* +-M 変更できないようにする。オプション'modifiable'がオフに設定さ + れ、変更を加えることができなくなる。さらに、オプション'write' + がオフに設定され、ファイルを保存することができなくなる。 + 'modifiable'と'write'をオンにすれば、変更を加えて保存できるよ + うになる。 + {Vi にはない} *-Z* *restricted-mode* -Z 制限モード。外部シェルを実行するあらゆるコマンドの使用を不許可 - にする。これにはサスペンドであるCTRL-Zや、":sh"、それにフィル - タリングその他も含まれる。 + にする。これにはサスペンドであるCTRL-Zや、":sh"、フィルタリン + グ、system()関数、バッククォートの評価、その他も含まれる。 + {Vi にはない} *-g* --g VimをGUIモードで起動する。|gui|を参照。 +-g VimをGUIモードで起動する。|gui|を参照。 {Vi にはない} *-v* -v ExをViモードで起動する。実行ファイルが"ex"や"gvim"である時にだ @@ -183,137 +245,192 @@ UNIXでは通常、Vimという名前の実行可能ファイルが一つあり する。 *-e* --e VimをExモードで起動する。実行ファイルが"ex"以外の名前の時に意 - 味がある。 +-e VimをExモードで起動する|Q|。実行ファイルの名前が"ex"以外の時に + 意味がある。 + + *-E* +-E Vimを改良版Exモードで起動する|gQ|。実行ファイルの名前が"exim" + 以外の時に意味がある。 + {Vi にはない} *-s-ex* --s サイレント、もしくはバッチモード。Vimが"ex"で起動されるか、こ +-s サイレント(もしくはバッチ)モード。Vimが"ex"で起動されるか、こ のオプションよりも先に"-e"が付いていた場合にだけ働く。そうでな - い場合には|-s|を参照。端末の替わりにファイルからExコマンドを実 - 行する場合に使用される。ほとんどのプロンプトとメッセージは抑制 - される。しかし警告とエラー以外のメッセージ、そして":print"や - ":list"のようなコマンドの出力結果は表示される。 + い場合には|-s|を参照。|-s|として使うときには引数をとる。 + 端末の替わりにファイルからExコマンドを実行する場合に使用され + る。ほとんどのプロンプトとメッセージは抑制される。警告とエラー + のメッセージも抑制される。":print"の出力は表示される。 + 'verbose'が0以外のときにはメッセージは抑制されずに表示される + (デバッグ用)。 + Vimが停止しているようだったら"qa!<Enter>"と入力してみてほし + い。Vimがユーザーの入力を待っているときでもプロンプトは表示さ + れない。 初期化処理はスキップされる(このオプションが引数"-u"と一緒に使 われた場合は除く)。 - + 例: > + vim -e -s < thefilter thefile +< *-b* --b バイナリモード。ファイルのI/Oが<NL>だけを行のセパレータとして - 認識するようになる。オプション'expandtab'は無効化される。オプ - ション'textwidth'は0に設定される。'modeline'はリセットされる。 - オプション'binary'がセットされる。これはvimrc/exrcのファイルが - 読み込まれた直後、引数で与えられたファイルが読み込まれるよりも - 前に行われる。|edit-binary|も参照。{Viにはない機能} +-b バイナリモード。ファイルを入出力する再に<NL>だけを行のセパレー + タとして認識するようになる。オプション'expandtab'は無効化され + る。オプション'textwidth'は0に設定される。'modeline'はオフに設 + 定される。オプション'binary'がオンに設定される。これは + vimrc/exrcのファイルが読み込まれた直後、引数で与えられたファイ + ルが読み込まれるよりも前に行われる。|edit-binary|も参照。 + {Vi にはない} *-l* --l Lispモード。オプション'lisp'と'showmatch'をセットする。 +-l Lispモード。オプション'lisp'と'showmatch'をオンに設定する。 + + *-A* +-A アラビア語モード。オプション'arabic'をオンに設定する。 + |+arabic|(これは|+rightleft|も含んでいる)が有効なときだけ使用 + できる。そうでないときにはVimはエラーメッセージを出力して終了 + する。 {Vi にはない} *-F* --F Farsiモード。'fkmap'と'rightleft'オプションをオンにする。 - (|+rightleft|と|+farsi|有効にしてコンパイルした時にだけ有効。 - そうでない場合Vimはエラーメッセージを表示して終了する)。{Viに - はない} +-F Farsi(ペルシア語)モード。'fkmap'と'rightleft'オプションをオン + に設定する。(|+rightleft|と|+farsi|有効にしてコンパイルした時 + にだけ有効。そうでない場合Vimはエラーメッセージを表示して終了 + する)。 + {Vi にはない} *-H* --H Hebrew(ヘブライ)モード。オプション'hkmap'と'rightleft'がセット - される。(|+rightleft|を有効にしてコンパイルした時にだけ使用 - 可。そうでない場合Vimはエラーメッセージを表示して終了する)。 - {Viにはない機能} +-H Hebrew(ヘブライ語)モード。オプション'hkmap'と'rightleft'をオン + に設定する。(|+rightleft|を有効にしてコンパイルした時にだけ使 + 用可。そうでない場合Vimはエラーメッセージを表示して終了する)。 + {Vi にはない} *-V* *verbose* --V[n] Verbose(多弁な/詳細)。オプション'verbose'を[n]に設定する(nを省 - 略した場合:10)。":source"が実行される度、viminfoの読み書きを行 - う度に情報が表示される。Vimの起動時と終了時に何が行われている - か、調べる時に使うことができる。{Viにはない機能} +-V[N] 詳細表示する。オプション'verbose'を[N]に設定する(Nを省略した場 + 合は10が設定される)。":source"が実行される度、viminfoの読み書 + きを行う度に情報が表示される。Vimの起動時と終了時の動作を調べ + るときに便利である。{Vi にはない} + *-D* +-D デバッグする。スクリプトの最初のコマンドを実行するところからデ + バッグを開始する。|debug-mode| + {|+eval|が有効な場合のみ利用可能} + {Vi にはない} *-C* --C コンパチブルモード。オプション'compatible'をセットする。.vimrc - ファイルがある場合にもViとのコンパチブルを得る場合に使用でき - る。|compatible-default|も参照。{Viにはない機能} +-C コンパチブルモード。オプション'compatible'をオンに設定する。 + ファイル.vimrcファイルが存在する場合にもViとの互換性を得ること + ができる。あとで":set nocompatible"として設定を変更することが + できる。|compatible-default|も参照。{Vi にはない} *-N* --N 非コンパチブルモード。オプション'compatible'をリセットする。 - ファイル.vimrcがないときに、'nocomatible'にするためにこれを使 - うことができる。|compatible-default|も参照。{Viにはない機能} +-N 非コンパチブルモード。オプション'compatible'をオフに設定する。 + ファイル.vimrcがないときに、'nocomatible'(Vimの拡張を有効)にす + ることができる。|compatible-default|も参照。{Vi にはない} + + *-y* *easy* +-y 簡易モード。|evim|や|eview|と同じ。'insertmode'をオンに設定し + て起動し、モードレスエディタのように振舞う。このスイッチを指定 + すると、$VIMRUNTIME/evim.vimが自動的に読み込まれ、一般的なエデ + ィタと同じ操作ができるようなマッピングが設定される。 + |evim-keys|を参照。利用可能ならGUIが使用される。 + {Vi にはない} *-n* --n スワップファイルを使用しない。クラッシュ時の編集ファイルを復旧 - することはできなくなる。非常に低速なメディア(たとえばフロッ - ピーディスク)のファイルを読んだり編集したい時に使える。 - ":set updatecount=0"とすることでスワップファイルを設定しない効 - 果がある。オプション'updatecount'に0以上の値を設定することで、 - 動作をオンにすることができる。例、":set uc=100" +-n スワップファイルを使用しない。クラッシュしたときに編集していた + ファイルを復旧することはできなくなる。フロッピーディスクのよう + な非常に低速なメディアのファイルを読んだり編集したいときに有用 + である。":set updatecount=0"と設定するのと同じである。オプショ + ン'updatecount'に0より大きい値を設定することで、スワップファイ + ルの使用を有効にすることができる。例、":set uc=100"。 ファイルvimrcの実行解釈の直後で、GUIが初期化される前に - 'updatecount'が0に設定される。よってファイルvimrcの中で設定さ - れるupdatecountは上書きされることになるが、gvimrcでの設定は上 - 書きされない。|startup|を参照。{Viにはない機能} - ディスクへのアクセスを減らしたいのならば(ノートPCを使用してい - る場合など)、"-n"を使用する替わりに、'updatetime'を設定し、 - 'updatecount'に非常に大きい値を設定し、編集中のファイルを保存 - する時に":preserve"とタイプすると良い。この方法だとクラッシュ - からの復旧の可能性を保てる。 + 'updatecount'が0に設定される。よってファイルvimrcの中で + 'updatecount'を設定しても上書きされてしまうが、gvimrcでの設定 + は上書きされない。|startup|を参照。ディスクへのアクセスを減ら + したいのならば(ノートPCを使用している場合など)、"-n"を使用する + 替わりに、'updatetime'を設定し、'updatecount'に非常に大きい値 + を設定して、編集中のファイルを保存する時に":preserve"を利用す + ると良い。この方法だとクラッシュからの復旧の可能性を保てる。 + {Vi にはない} *-o* --o[N] N個のウィンドウを開く。[N]が与えられない場合には、引数で指定さ - れた全てのファイルに対して1個のウィンドウが開かれる。画面に十 - 分な広さがない場合には、始めのほうの数個のファイルだけがウィン - ドウを伴って表示される。逆にファイルの数よりもウィンドウの数が - 多く指定された場合、多い分のウィンドウは空ファイルの編集用とし - て開かれる。{Viにはない機能} +-o[N] N個のウィンドウを水平分割して開く。[N]が与えられない場合には、 + 引数で指定された全てのファイルに対して1個のウィンドウが開かれ + る。画面に十分な広さがない場合には、始めのほうの数個のファイル + だけがウィンドウを伴って表示される。逆にファイルの数よりもウィ + ンドウの数が多く指定された場合、多い分のウィンドウは空ファイル + の編集用として開かれる。 + {Vi にはない} + + *-O* +-O[N] N個のウィンドウを垂直分割して開く。それ以外は|-o|と同じ。 + -oと-Oが両方指定されたときは最後に指定された方を使用する。 + {Vi にはない} *-T* -T {terminal} 端末の種類を"terminal"に設定する。これはVimがユーザの端末へ送 るコードに影響を与える。Vimはユーザが使用している端末の種類を 自分で判断することができるので、通常これは必要がない - (|terminal-info|を参照)。{Vimにはない機能} + (|terminal-info|を参照)。{Vi にはない機能} *-d* --d {device} Amiga専用機能: "device"が編集用に開かれる。普通、ウィンドウの - 位置とサイズを設定するために"-d con:x/y/width/height"の形式で - 指定する。例、"-d con:30/10/600/150"。しかしその他のAUX:のよう - なデバイスを編集を開始することにも使用できる。{Viにはない機能} - +-d diffモードで起動する。|vimdiff|と同じ。 + {Vi にはない} {|+diff|が有効な場合のみ利用可能} + +-d {device} Amiga専用機能。|+diff|が無効な場合のみ利用可能。|-dev|と同じよ + うに機能する。 + *-dev* +-d {device} Amiga専用機能: {device}が編集用に開かれる。 + 普通、ウィンドウの位置とサイズを設定するために"-d + con:x/y/width/height"の形式で指定する。例、"-d + con:30/10/600/150"。しかしその他のAUX:のようなデバイスの編集を + 開始することにも使用できる。{Vi にはない} *-f* --f Amiga専用機能: Vimを新しいウィンドウを開いて起動しない。編集作 - 業が終わるのを待つプログラム(メールソフトやニュースリーダ)に - よってVimが起動される時に、このオプションは使用される。 - |amiga-window|を参照。{Viにはない機能} - - GUI: Vimを起動したプログラムと切断しない。'f'は"foreground"を - 意味する。省略されると、GUIバージョンは新しいプロセスへforkし - て、現在のプロセスは終了してしまう。gvimの編集セッションが終わ - るのを待つプログラム(メールソフトやニュースリーダなど)には、 - "-f"を使うべきだろう。gvimがforkしないようにするには、自分の. - gvimrcの中で'guioptions'に'f'を加えれば良い。 +-f Amiga専用機能: Vimを新しいウィンドウで起動しない。編集作業が終 + わるのを待つプログラム(メールソフトやニュースリーダ)によって + Vimが起動される時に、このオプションは使用される。 + |amiga-window|を参照。 + + 一般的なGUI: Vimを起動したプログラム(プロセス)から独立しない。 + 'f'は"foreground"を意味する。省略すると、GUI版のVimは新しいプ + ロセスへforkして、現在のプロセスは終了してしまう。gvimの編集 + セッションが終わるのを待つプログラム(メールソフトやニュース + リーダなど)には、"-f"を使うべきだろう。gvimがforkしないように + するには、自分の. gvimrcの中で'guioptions'に'f'を加えれば良 + い。 Note: "-gf"でGUIをフォアグラウンドで実行開始できるが、"-fg"だ - と前景色の設定になってしまう。{Viにはない機能} |gui-fork|参 - 照。 - - *-u* --u {vimrc} 初期化のためにファイル"vimrc"が読込まれる。その他の初期化はス - キップされる;|initialization|を参照。これによりVimを特殊なマッ - ピングと設定による、特殊なモードで起動することができる。これを - 簡単に使用するにはシェルのエイリアスが使えるだろう。例: -> alias vimc vim -u ~/.c_vimrc !* - autocommandsを使うことも考慮すべき;|autocommand|を参照。 - {vimrc}に"NONE"(全て大文字)が指定された時には、ファイルと環境 - 変数による全ての初期化、.gvimrcによるGUIの初期化も含め、スキッ - プされる。 - "-u"の引数を使用することで、暗にオプション'compatible'が設定さ - れる。これには予期しない副作用がある。|'compatible'|を参照。 - {Viにはない機能} - - *-U* --U {gvimrc} GUIがスタートする時にファイル"gvimrc"が読込まれる。その他のGUI + と前景色の設定になってしまう。|gui-fork|参照。 + {Vi にはない} + + *--nofork* +--nofork GUI: forkしない。|-f|と同じ。 + + *-u* *E282* +-u {vimrc} 初期化のためにファイル{vimrc}が読込まれる。その他の初期化はス + キップされる。|initialization|を参照。これにより特殊なマッピン + グや設定をした、特殊なモードでVimを起動することができる。これ + を簡単に使用するにはシェルのエイリアスが使えるだろう。例: > + alias vimc vim -u ~/.c_vimrc !* +< autocommandを使うことも考慮すべきである。|autocommand|を参照。 + {vimrc}に"NONE"(全て大文字)が指定された時には、設定ファイルや + 環境変数による初期化、.gvimrcによるGUIの初期化も含め、全て省略 + される。プラグインも読み込まれない。 + {vimrc}が"NORC"(全部大文字)のときは"NONE"と同じように処理され + るが、プラグインは読み込まれる。 + "-u"引数を使用すると副作用としてオプション'compatible'がオンに + 設定される。これは予期せぬ動作を引き起こすかもしれない。 + |'compatible'|を参照。 + {Vi にはない} + + *-U* *E230* +-U {gvimrc} GUIがスタートする時にファイル{gvimrc}が読込まれる。その他のGUI 初期化はスキップされる。{gvimrc}にNONEが指定された場合、初期化 ファイルは何も読込まれない。 例外: システムのメニューファイルは常に読込まれる。 + {Vi にはない} *-i* --i {viminfo} デフォルトのviminfoの替わりにファイル"viminfo"が使用される。名 - 前として"NONE"(全て大文字)が使用された場合、'viminfo'が指定さ - れたり、":rv"や":wv"が使われても、viminfoは読み書きともに使用 - されない。|viminfo-file|参照。{Viにはない機能} +-i {viminfo} デフォルトのviminfoの代わりにファイル{viminfo}を使用する。 + "NONE"(全て大文字)が指定された場合には、'viminfo'が指定された + り、":rv"や":wv"が使われても、viminfoは読み書きともに使用され + ない。|viminfo-file|参照。 + {Vi にはない} *-x* -x ファイルの読み書き時に暗号化を施す。暗号の鍵としてオプション @@ -322,62 +439,151 @@ UNIXでは通常、Vimという名前の実行可能ファイルが一つあり には、Vimは暗号化ファイルかチェックし、自動的に鍵を聞いてくる ので、引数'-x'は必要でない。|encryption| + *-X* +-X Xサーバと通信しない。そうして、カレントウィンドウのタイトルを + 取得したり、Xのクリップボードを使ったコピー/ペーストを使用した + りしない。端末エミュレータでVimを使用するときにXサーバとの通信 + 速度が遅い場合にそれを回避できる。 + UnixかVMSで|+X11|が有効な場合のみ意味がある。 + 特定の端末を使用するときだけ通信を無効にするには、オプション + 'clipboard'を参照。 + X11 Session Management Protocol (XSMP) の処理が組み込まれてい + る場合、その通信にも大きな延滞が生じるため、無効にする。 + (例えばクライアントとサーバが通信するため)あとからXサーバとの + 通信をつなげるには|serverlist()|関数を呼び出す。ただしXSMPの処 + 理は有効にならない。 + {Vi にはない} + *-s* --s {scriptin} スクリプトファイル"scriptin"が読込まれる。ファイルの中のキャラ +-s {scriptin} スクリプトファイル{scriptin}が読込まれる。ファイルの中のキャラ クタは、全てユーザがタイプしたものとして解釈される。エディタが 終了する前にファイルの終端に達した場合、以降のキャラクタはキー ボードから読込まれる。Exモード動作時には働かない、|-s-ex|を参 - 照。|complex-repeat|も参照。{Viにはない機能} + 照。|complex-repeat|も参照。 + {Vi にはない} *-w* --w {scriptout} Vimを終了するまで、ユーザがタイプした全部のキャラクタが記録さ - れ、ファイル"scriptout"に書き出される。これは"vim -s"や - ":source!"で読込まれるスクリプトファイルを 作成するのに役立 - つ。既にファイル"scriptout"が存在する場合、新しいキャラクタが - 追加される。|complex-repeat|も参照。{Viにはない機能} +-w {scriptout} Vimを終了するまで、ユーザが入力した全部の文字が記録され、ファ + イル{scriptout}に書き出される。これは"vim -s"や":source!"で読 + 込まれるスクリプトファイルを作成するのに役立つ。既にファイル + "scriptout"が存在する場合には、そのファイルに追加保存する。 + |complex-repeat|も参照。{Vi にはない} *-W* -W {scriptout} -wに似ているが、アペンド(追加)せずに、既にあるファイルを上書き - する。{Viにはない機能} + する。 + {Vi にはない} *-w_nr* -w{number} なにもしない。これはViとの互換性のためにある。Viではオプション 'window'が設定されるが、Vimでは実装されていない。 -複数のファイル内の名前を変更するスクリプトファイルの例: - 置換コマンドと:wqコマンドを含んだファイル"subs.vi"を作る: -> :%s/Jones/Smith/g -> :%s/Allen/Peter/g -> :wq - - 変更をしたいファイル全てに対してVimを実行する: - -> foreach i ( *.let ) vim -s subs.vi $i +--remote [+{cmd}] {file} ... + サーバとして機能している他のVimで{file}を開く。 + この引数の前にファイルを指定することはできない。 + |--remote|を参照。 {Vi にはない} + +--remote-silent [+{cmd}] {file} ... + --remoteと同じ。ただしサーバがなくてもメッセージを出さない。 + |--remote-silent|を参照。 {Vi にはない} + +--remote-wait [+{cmd}] {file} ... + --remoteと同じ。ただしサーバが終了するまで待機する。 + |--remote-wait|を参照。 {Vi にはない} + +--remote-wait-silent [+{cmd}] {file} ... + --remote-waitと同じ。ただしサーバがなくてもメッセージを出さな + い。|--remote-wait-silent|を参照。 {Vi にはない} + +--servername {name} + Vimサーバの名前を指定する。これは通信先のサーバ名、あるいは起 + 動するVimが使用する名前である。 + |--servername|を参照。 {Vi にはない} + +--remote-send {keys} + {keys}をVimサーバに送り、終了する。 + |--remote-send|を参照。 {Vi にはない} + +--remote-expr {expr} + Vimサーバで{expr}を評価し、その結果を標準出力に出力する。 + |--remote-expr|を参照。 {Vi にはない} + +--serverlist + 稼働しているVimサーバの一覧を出力する。 + |--serverlist|を参照。 {Vi にはない} + +--socketid {id} *--socketid* + GTK+ GUIのVimのみ。GtkPlugを使用し、別アプリケーションのウィン + ドウで起動するようにする。詳細は|gui-gtk-socketid|を参照。 + {Vi にはない} + +--echo-wid *--echo-wid* + GTK+ GUIのVimのみ。ウィンドウのIDを標準出力に出力する。この値 + はgvimをkpartウィジェットに埋め込むのに使用できる。出力の書式 + は: > + WID: 12345\n +< {Vi にはない} + +--role {role} *--role* + GTK+ 2 GUIのみ。メインウィンドウの役割(role)を{role}に設定する + 。ウィンドウの役割はウィンドウマネージャがウィンドウを識別して + 、ウィンドウの位置等を復元するのに使われる。この引数はログイン + 時にセッションを復元するときに自動的に使用される。 + |gui-gnome-session|を参照。 + {Vi にはない} + +-P {parent-title} *-P* *MDI* *E671* *672* + Win32のみ。親になるアプリケーションのタイトルを指定する。可能 + であればVimはそのMDIアプリケーションのウィンドウ内で起動する。 + {parent-title}が親アプリケーションのウィンドウのタイトルに使わ + れていて、明確に区別できる必要がある。 + Note: まだ簡単に実装されているだけである。全てのアプリケーショ + ンで動くわけではない。メニューは機能しない。 + +-nb *-nb* +-nb={fname} +-nb:{hostname}:{addr}:{password} + Netbeansと接続し、エディタサーバになる。2番目の型は接続情報を + 格納したファイルを指定する。3番目の型はNetbeansに接続するため + のホスト名、アドレス、パスワードを指定する。|netbeans-run| + +複数のファイルに書かれた名前を変更するスクリプトファイルの例: + 置換コマンドと:wqコマンドを含んだファイル"subs.vi"を作る: > + :%s/Jones/Smith/g + :%s/Allen/Peter/g + :wq +< + 変更したいファイルに対してVimを実行する: > + + foreach i ( *.let ) vim -s subs.vi $i 実行ファイルが"view"だったならば、Vimは読込み専用モードで起動する。"view"から -"vim"へハードリンクかシンボリックリンクを作成できると便利だろう。"vim -R"とす -ることでも読込み専用モードで起動できる。 +"vim"へハードリンクかシンボリックリンクを作成すると便利だろう。"vim -R"とする +ことでも読込み専用モードで起動できる。 -実行ファイルが"ex"ならば、VimはExモードで起動する。これは":"コマンドだけしか使 -えないことを意味している。しかし引数"-v"が与えられれば、Vimはとにかくノーマル -モードで起動する。 +実行ファイルの名前が"ex"ならば、VimはExモードで起動する。これは":"コマンドだけ +しか使えないことを意味している。しかし引数"-v"が与えられれば、Vimは常にノーマ +ルモードで起動する。 + +unix互換のシステムでX11 GUIサポートが有効ならさらに多くの引数が利用可能であ +る。|gui-resources|を参照。 ============================================================================== -2. Vim on the Amiga *starting-amiga* +2. Amiga版のVim *starting-amiga* VimをWorkbenchから起動する *workbench* -------------------------- -Workbench上でアイコンを2度クリックすればVimを起動することができる。すると空の -バッファで起動するだろう。 +Workbench上でアイコンを2度クリックすればVimを起動することができる。そうすると +空のバッファで起動するだろう。 -"Project"アイコンを使用することで、1つ以上のファイルを編集するために起動するこ -とができる。アイコンの"Default Tool"にはVimの実行ファイルの完全なパスを設定し -なければならない。".info"ファイルの名前は、テキストファイルの名前と同じでなけ -ればならない。このアイコンを2度クリックすることで、そのファイル名を カレント -ファイルの名前として、バッファに読み込み起動する シフトキーを押しながらアイコ -ンをクリックし、最後のファイルを2度クリックすることで、複数のファイルを編集す -ることができる。これら全てのアイコンの"Default Tool"は同じでなければならない。 +"Project"アイコンを使用することで、1つ以上のファイルを開くことができる。アイコ +ンの"Default Tool"にはVimの実行ファイルの完全なパスを設定し、".info"ファイルの +名前には、編集するテキストファイルの名前を設定する。このアイコンを2度クリック +すると、Vimが起動してそのファイルを開く(そのファイルがあれば)。シフトキーを押 +しながらアイコンをクリックし、最後のファイルを2度クリックすることで、複数の +ファイルを開くことができる。これら全てのアイコンの"Default Tool"は同じでなけれ +ばならない。 Workbenchからではファイル名以外の引数は、Vimへ与えることができない。 @@ -385,60 +591,80 @@ Vimウィンドウ *amiga-window* ---------- Vimは起動されたCLIウィンドウの中で動作する。Vimが"run"や"runback"コマンド、 -ワークベンチから起動された場合には、自分自身でウィンドウを開く。 +あるいやWorkbenchから起動された場合には、自分自身でウィンドウを開く。 技術的詳細: 新しいウィンドウを開くためにちょっとしたトリックを使う。Vimは普通のCLI ウィンドウの中で起動されていないことを検出するとすぐに、"t:"にあるスク - リプトファイルの作成する。このスクリプトファイルは起動されたVimと同じ - コマンドに、加えて"endcli"コマンドを持っている。このスクリプトファイル - は"newcli"コマンドと一緒に実行される (これが行われる時には"c:run"と - "c:newcli"コマンドが必要)。スクリプトファイルはリブートされるか、手動 - で消すまで存在しつづける。この方法には":sh"と":!"コマンドが正しく働く - 必要である。しかしVimが-fオプション(フォアグラウンドモード)で起動され - た時には、この方法は使われない。Vimを-fオプションで起動した時には、そ - の終了を待つからである。スクリプトのトリックを使うと、Vimを呼び出した - プログラムはその終了を知ることができない。オプション-fはメールプログラ - ムなど編集のセッションが終わったことを 検出したい場合に、Vimを起動する - 方法として使用される。だからオプション-fが指定された時には、":sh"と + リプトファイルを作成する。このスクリプトファイルにはVimを起動したのと + 同じコマンドに加えて"endcli"コマンドが含まれている。このスクリプトファ + イルは"newcli"コマンドと一緒に実行される (これが行われる時には"c:run" + と"c:newcli"コマンドが必要)。スクリプトファイルはリブートするか、手動 + で消すまで存在しつづける。この方法は":sh"と":!"コマンドが正しく機能す + る必要がある。しかしVimが-fオプション(フォアグラウンドモード)で起動さ + れた時には、この方法は使われない。Vimを-fオプションで起動した時には、 + その終了を待つからである。スクリプトのトリックを使うと、Vimを呼び出し + たプログラムはその終了を知ることができない。オプション-fはメールプログ + ラムなど編集のセッションが終わったことを 検出したい場合に、Vimを起動す + る方法として使用される。だからオプション-fが指定された時には、":sh"と ":!"コマンドは使用することができない。 -Vimは自動的にWindowのサイズを認識して変更する。Amiga DOS 1.3の元では、表示の更 -新速度を上げるために、fastfontsのプログラム"FF"の支援を受けて動作する。 +Vimは自動的にウィンドウのサイズを認識して対応する。Amiga DOS 1.3の元では、表示 +の更新速度を上げるために、fastfontsのプログラム"FF"の支援を受けて動作する。 ============================================================================== -3. xargsからVimを起動 *xargs* - -xargsは標準入力からの入力を引数として、プログラムを起動するためのプログラムで -ある。典型的な使い方は: - -> find . -name "*.c" -print | xargs vim - -問題はxargsが起動するプログラムのために標準入力のプロパティを設定しないこと -で、これがVimにとって問題を引き起こす。Vimが標準入力からの入力を期待するコマン -ドだからである。タイプした文字がechoされて<Return>を押すまで効力を発揮しないと -いう症状がでる。 - -これはxargsを使う上で忌々しき問題である。これを回避するために、次のような小さ -なプログラムを使うことができる: - -> #include <unistd.h> -> #include <stdio.h> -> -> main(argc, argv) -> int argc; -> char **argv; -> { -> close(0); /* close stdin */ -> dup(2); /* duplicate stdin from stderr */ -> execvp(argv[1], argv + 1); -> perror("could not execute program"); -> } - -これを"start.c"として保存し、"start"という名前でコンパイルし、検索パスのどこか -に置く。使っているシステムによっては修正が必要だろう。使い方の例: - -> find . -name "*.c" -print | xargs start vim +3. eVimについて *evim-keys* + +EVimはVimをモードレスエディタとして実行する。これはViらしくない発想ではあるが +、Vimの操作方法を覚えられるほどには使用しない人の助けになる。ノーマルモードの +コマンドを覚えることで編集作業がより簡単になるということを利用者が感付いてくれ +れば幸いである。 + +Evimでは以下のオプションが標準設定から変更される: + + :set nocompatible ViにはないVim独自の機能を使う + :set insertmode 常時挿入モードを使用する + :set hidden 非表示になったバッファを開放しない + :set backup バックアップファイルを消さない(VMS以外) + :set backspace=2 どこでもバックスペースを使用できるようにする + :set autoindent 新しい行を入力するときに自動的にインデントする + :set history=50 Exコマンドの使用履歴を50回前まで記録する + :set ruler カーソルの位置を表示する + :set incsearch 検索時、入力途中にマッチ箇所を表示する + :set mouse=a 全てのモードでマウスを使う + :set hlsearch 検索した文字を強調表示する + :set whichwrap+=<,>,[,] <Left>と<Right>を使った左右の移動で行を跨ぐ + :set guioptions-=a 非Unixのみ。選択時に自動的にコピーしない + +キーマッピング: + <Down> 実際の行ではなく表示された行の単位で移動する + <Up> 同上 + Q "gq"コマンドで文章整形する。 + <BS> ビジュアルモードで選択範囲を削除する + CTRL-X ビジュアルモードで選択範囲を切り取ってクリップボードに + コピーする + <S-Del> 同上 + CTRL-C ビジュアルモードで選択範囲をクリップボードにコピーする + <C-Insert> 同上 + CTRL-V クリップボードから貼り付ける(どのモードでも) + <S-Insert> 同上 + CTRL-Q 本来のCTRL-Vの機能 + CTRL-Z 元に戻す(undo) + CTRL-Y やり直し(redo) + <M-Space> システムメニューを表示 + CTRL-A 全てを選択する + <C-Tab> 次のウィンドウへ。CTRL-W w と同じ + <C-F4> ウィンドウを閉じる。CTRL-W c と同じ + +追記: +- ":behave mswin"が使用される|:behave| +- 構文強調表示が有効になる +- ファイルタイプ別の機能が有効になる。ファイルタイプ用のプラグインやインデント + が使用される。 +- テキストファイルでは'textwidth'が78に設定される + +ヒント: ノーマルモードのコマンドを連続して使用するにはCTRL-Lを使用する。 +|i_CTRL-L| ============================================================================== 4. 初期化 *initialization* *startup* @@ -449,14 +675,16 @@ xargsは標準入力からの入力を引数として、プログラムを起動 スタート時に、Vimは環境変数とファイルを調べ、然るべく値を設定する。Vimはこの順 序で取り掛かる。 -1. オプション'shell'を設定する *SHELL* *COMSPEC* +1. オプション'shell'と'term'を設定する *SHELL* *COMSPEC* *TERM* 環境変数SHELLが存在するならば、オプション'shell'を設定するのに使われ - る。MS-DOSとWin32ではSHELLが設定されていない場合COMPSPECの値が使用され + る。MS-DOSとWin32ではSHELLが設定されていない場合COMSPECの値が使用され る。 - -2. オプション'term'を設定する *TERM* 環境変数TERMが存在するならば、オプション'term'を設定するのに使われる。 +2. 引数を処理する + Vimを起動するときに指定したオプション引数やファイル名を調べる。指定さ + れたファイルのバッファを作成する(まだ読み込まない)。 + 3. 環境変数とファイルのExコマンドを実行する 環境変数の値は一つのExコマンドラインとして読まれるので、複数のコマンド を実行したい時には'|'か"<NL>"で区切る必要がある。 @@ -473,22 +701,29 @@ xargsは標準入力からの入力を引数として、プログラムを起動 Amiga s:.vimrc or $VIM/.vimrc Vimが"-u filename"で起動された場合、デフォルトのvimrcの代わりに - "filename"が使われる。続く初期化処理のの5.までがスキップされる。 - "vim -u NONE"によりこれらの初期化を省略することができる。|-u| + "filename"が使われる。続く初期化処理の4.までがスキップされる。 + "vim -u NORC"によりファイルを読み込むことなくこれらの初期化を省略する + ことができる。"vim -u NONE"を使用するとさらにプラグインも読み込まな + い。|-u| 起動引数"-s"によりVimがExモードで起動されたならば、続く4.までの初期化 - 処理がスキップされる。オプション"-u"だけが割り込まれる。 - *system-vimrc* - a. Unix, OS/2, VMS, Macintosh, RISC-OSそしてAmigaでは、システムのvimrc - ファイルが初期化のために読み込まれる。このファイルのパスは":version"コ - マンドによって確認できる。 Note このファイルは'compatible'モードであっ - ても読み込まれる。'compatible'の自動リセットはこれが終わった後に行われ - ることになっている。必要ならば":set nocp"コマンドを追加する。 + 処理がスキップされる。オプション"-u"だけが処理される。 + *evim.vim* + a. Vimを|evim|や|eview|として、あるいは|-y|引数を指定して起動すると + $VIMRUNTIME/evim.vimが実行される。 + *system-vimrc* + b. Unix、MS-DOS、MS-Windows、OS/2、VMS、Macintosh、RISC-OSそしてAmigaで + は、システムのvimrcファイルが初期化のために読み込まれる。このファイル + のパスは":version"コマンドによって確認できる。普通は"$VIM/vimrc"であ + る。Note: このファイルは'compatible'モードであっても読み込まれる。 + 'compatible'の自動リセットはこれが終わった後に行われることになってい + る。必要ならば":set nocp"コマンドを追加する。 *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* - b. 初期化のために4つの場所が検索される。最初に見つかったものが使用され、 + c. 初期化のために4つの場所が検索される。最初に見つかったものが使用され、 残りは無視される。 - 環境変数VIMINIT(|compatible-default|も参照) (*) + その内容はExコマンドとして解釈される。 - ユーザvimrcファイル: "$HOME/.vimrc" (for Unix and OS/2) (*) "s:.vimrc" (for Amiga) (*) @@ -503,11 +738,12 @@ xargsは標準入力からの入力を引数として、プログラムを起動 Note: MS-DOSとWin32では"$HOME"がまず検査される。"_vimrc"と ".vimrc"のどちらもない場合には、"$VIM"が調べられる。$VIMが設定 されていない場合については|$VIM|参照。 - - 環境変数EXINIT + - 環境変数EXINIT。 + その内容はExコマンドとして解釈される。 - ユーザのexrcファイル。vimrcと同じだが、vimrcがexrcによって置き換え - られている。But without the (*)! + られている。(*)の注釈は適用されない。 - c. 'exrc'オプションがオン(初期状態ではオフ)の場合、現在のディレクトリで4 + d. 'exrc'オプションがオン(初期状態ではオフ)の場合、現在のディレクトリで4 つのファイルが検索される。最初に見つかったものだけが使用され、残りは無 視される。 - The file ".vimrc" (for Unix, Amiga and OS/2) (*) @@ -522,23 +758,24 @@ xargsは標準入力からの入力を引数として、プログラムを起動 (*) このファイルを使用するか環境変数を使用した場合、自動的に'compatible' オプションがオフに設定される。|compatible-default|を参照。 -4. ファイルタイプ設定スクリプトがロードされる。 - このスクリプトはautocommandのFileTypeイベントに使用される。|FileType| - と|'filetype'|を参照。これはVimが|+autocmd|機能を伴ってコンパイルされ - た時にだけ行われる。 - Vimが"-u filename"で起動された時には、これはスキップされる。 |-u| - このファイルの名前はシステムに依存する: - Amiga $VIMRUNTIME/filetype.vim - Mac $VIMRUNTIME:filetype.vim - MS-DOS $VIMRUNTIME\filetype.vim - RiscOS Vim:Filetype - Unix $VIMRUNTIME/filetype.vim - VMS $VIMRUNTIME/filetype.vim +4. プラグインスクリプトを読み込む *load-plugins* + 次のコマンドと同じことを実行する: > + :runtime! plugin/*.vim +< オプション'runtimepath'に指定された各ディレクトリのサブディレクトリ + "plugin"にある拡張子が".vim"となっているファイルを実行する(各ディレク + トリごとに名前順で実行される)。 + 次の場合にはプラグインを読み込まない: + - vimrcファイルでオプション'loadplugins'がオフに設定された。 + - 起動時の引数に|--noplugin|が指定された。 + - 起動時の引数に"-u NONE"が指定された。 + - |+eval|の機能を無効にしてVimをコンパイルした。 + Note: 引数に"-c set noloadplugins"と指定しても意味がない。このコマンド + はこの時点ではまだ実行されない。 5. 'shellpipe'と'shellredir'を設定する それ以前に設定されていなければ、'shell'オプションに従って'shellpipe'と - 'shellredir'オプションが設定される。これは自分で設定しなくても、Vimが - 適切な'shellpipe'と'shellredir'の値を考えてくれることを意味している。 + 'shellredir'オプションが設定される。つまり自分で設定しなくても、Vimが + 適切な'shellpipe'と'shellredir'の値を設定してくれる。 6. "-n"コマンド引数が使用されていたら、'updatecount'を0に設定する @@ -550,9 +787,8 @@ xargsは標準入力からの入力を引数として、プログラムを起動 "gvim"として起動された場合、GUIの初期化が行われる。|gui-init|参照。 9. viminfoファイルを読み込む - 'viminfo'オプションが殻でなければ、viminfoファイルが読み込まれる。デ - フォルトでは空だから、これ以前の初期化によって'viminfo'は設定しておく - 必要がある。|viminfo-file|参照。 + 'viminfo'オプションが空でなければ、viminfoファイルが読み込まれる。 + |viminfo-file|参照。 10. quickfixファイルを読み込む Vimに"-q"フラグが与えられた場合、quickfixファイルが読み込まれる。これ @@ -570,7 +806,7 @@ xargsは標準入力からの入力を引数として、プログラムを起動 'insertmode'オプションがセットされていると、インサートモード入る。 |VimEnter|のautocommandが実行される。 -初期化の使い方のヒント: +初期化のヒント: スタンダードセットアップ: 全ての編集セッションに有効な、デフォルト設定とキーマッピングを設定するvimrc @@ -613,20 +849,20 @@ MS-DOS風(MS-DOS自信、Win32、そしてOS/2)では、全てのvimrcファイ は無視されてしまうだろう。 *compatible-default* -Vimが起動すると、オプション'compatible'がオンに設定される。これは起動の初期化 -時に使用される。ユーザのvimrcファイルが見つかるか、現在のディレクトリにvimrcが -見つかるか、もしくは環境変数"VIMINIT"が設定されている場合すぐに、 -'nocompatible'が設定される。これにはその他のオプションへの設定・非設定の副作用 -がある('compatible'参照)。しかし設定・非設定されないタイプのオプションだけが変 -えられるだろう。これはVimの起動時に持っている'compatible'の値と同様の効果であ -る。Note これはシステムvimrcファイルでは起こらない。 - -しかし'compatible'の有効・無効化が.vimrc内で見つかった場合には、副作用が発生す -る:キーマッピングは見つかるたびに解釈される。これは"<CR>"のようなものを使う時 -に違いを生じる。もしもマッピングが'compatible'のある値に依存している場合、その -マッピングを与える前に有効・無効化をする。 - -上記した振る舞いは次の方法で無効にすることができる: +Vimが起動すると、オプション'compatible'がオンに設定される。これは初期化時に使 +用される。ユーザのvimrcファイルが見つかるか、現在のディレクトリにvimrcが見つか +るか、もしくは環境変数"VIMINIT"が設定されている場合にはすぐに、'nocompatible' +が設定される。これには副作用があって、設定が変更されてしまうオプションがある +('compatible'参照)。しかしその時点でユーザが値を設定していないオプションだけが +変更される。これはVimの起動時に'compatible'が設定された場合と同様である。 +Note: これはシステムのvimrcファイルが存在しても起こらない。 + +'compatible'を.vimrcで設定すると副作用が発生する。マッピングは見つかった時点で +解釈されるので、"<CR>"のようなものを使う時に違いが生じる。もしもマッピングが +'compatible'の値に依存している場合、そのマッピングを定義する前に'compatible'を +設定する。 + +以上の振る舞いは次の方法で無効にすることができる: - コマンドライン引数に"-N"を与えた場合、vimrcファイルが存在しなくても 'nocompatible'が使用される。 - コマンドライン引数に"-C"が与えられた場合、vimrcが存在しても'compatible'が使 @@ -646,54 +882,134 @@ Vimが起動すると、オプション'compatible'がオンに設定される きる。 ローカルなvimrcファイル内で全てのコマンドを実行したい場合には、EXINIT かVIMINIT環境変数か、グローバルな"exrc"もしくは"vimrc"ファイルで'secure'オプ -ションをリ セットする。現在のディレクトリにある"vimrc"と"exrc"では、明らかな理 -由だが、これはできない。 - UNIXシステムで、vimrcファイルが自分のものではない時にだけ、これは起こ -る。警告: vimrcかexrcを含むアーカイブを展開したときには、そのファイルはあなた -自身のものになる。そこには安全性保護などない。Vimを起動する前に現在のディレク -トリにvimrcファイルがないかチェックするか、'exrc'オプションをリセットしたほう -が良い。幾つかのUNIXシステムでは一般ユーザがファイルに"chown"を行うことを許し -ているものがある。これは別のユーザが悪意に満ちたvimrcを作成し、所有者を貴方に -することを可能にしている。注意されたし! +ションをオフに設定する。現在のディレクトリにある"vimrc"と"exrc"からは、理由は +明らだが、これは設定できない。 + UNIXシステムでは、vimrcファイルの所有権がユーザにないときだけ'secure' +が適用される。警告: vimrcかexrcを含むアーカイブを展開したときには、そのファイ +ルはあなた自身のものになる。そこには安全性保護などない。Vimを起動する前に現在 +のディレクトリにvimrcファイルがないかチェックするか、'exrc'オプションをオフに +設定したほうが良い。幾つかのUNIXシステムでは一般ユーザがファイルに"chown"を行 +うことを許しているものがある。これは別のユーザが悪意に満ちたvimrcを作成し、所 +有者を貴方にすることを可能にしている。注意されたし! タグサーチコマンドを使う時には、実行されるサーチコマンド(タグファイル の各行の最後の部分)は常に安全なモードで行われる。これは現在のディレクトリにあ -る vimrc/exrcからコマンドが実行されるのと、ちょうど同じように働く。 +るvimrc/exrcからコマンドが実行されるのと、ちょうど同じように働く。 *slow-start* Vimの起動に時間がかかる場合、幾つかの理由が考えられる: -- UnixバージョンがGUIおよび/もしくはX11オプションと供にコンパイルされた場合 - (":version"の出力で"+GUI"と"+X11"をチェック)、共有ライブラリをロードしX11 - サーバに接続する必要がある。GUIとX11を無効にしてコンパイルしたバージョンを試 - して欲しい。これにより実行ファイルが小さくもなるだろう。 -- "viminfo"を使用している場合、viminfoファイル尾w読み込むのに少し時間がかか +- UnixでGUIやX11を有効にしている場合(":version"の出力で"+GUI"と"+X11"をチェッ + ク)、共有ライブラリをロードしX11サーバに接続する必要がある。GUIとX11を無効に + してコンパイルしたバージョンを試して欲しい。これにより実行ファイルが小さくも + なるだろう。 + CUI端末でVimを起動するときの引数に|-X|を指定するとXサーバと接続しないように + できる。 +- "viminfo"を使用している場合、viminfoファイルを読み込むのに少し時間がかか る。viminfoが原因ならば一時的にviminfoを無効にすることによって確認することが - できる(Vimを引数"-i NONE"を使用する。|-i|)。":set viminfo='20\"50"で、レジス - タに保存される行数を減らすことを試すのも良い。 + できる(Vimを引数"-i NONE"で起動する。|-i|)。":set viminfo='20,<50,s10"と設定 + して、レジスタに保存される行数を減らしてみるのも良い。 |viminfo-file|. *:intro* -ファイル名を与えずにVimを起動した場合、(Vimが何だかしらない人に向けて)紹介メッ +ファイル名を与えずにVimを起動した場合、(Vimのことを知らない人に向けて)紹介メッ セージが表示される。そのメッセージはなんらかの操作によって画面が再描画されると -すぐに消される。もう一度メッセージをみるには、":intro"コマンドを使用する。起動 -時に紹介メッセージを表示しないようにするには'shortmess'に'I'フラグを追加する。 +すぐに消される。もう一度メッセージをみるには、":intro"コマンドを使用する(表示 +するスペースがなければ一部だけが表示される)。起動時に紹介メッセージを表示しな +いようにするには'shortmess'に'I'フラグを追加する。 + + *info-message* +起動引数に|--help|や|--version|を指定するとVimはメッセージを出力して終了する。 +通常はそのメッセージは標準出力に送られるので、リダイレクトしてファイルに書き込 +むことができる: > + + vim --help >file + +Vimでその出力を取り込むには: > + + :read !vim --help + +gvimは標準出力と標準エラー出力が端末に繋がってないときに、自身がデスクトップか +ら起動され、メッセージを出力する端末がないものと判断する。このせいで上記の +":read"コマンドを使用した例は使えない。使用できるようにするには'shellredir'を +標準設定の">&"から">"へ変更する: > + + :set shellredir=> + :read !gvim --help + +しかしこのようにしてもgvimが標準出力を使用しないようなシステムでは機能しない。 ============================================================================== -5. サスペンド *suspend* +5. $VIM と $VIMRUNTIME + *$VIM* +環境変数の"$VIM"は、設定ファイル".vimrc"のような、Vimが使用するさまざまなファ +イルの置き場所を見つけるために利用される。"$VIM"の値はシステムに依存する。 +|startup|を参照。 + +全てのユーザが環境変数$VIMを設定しなくてすむように、Vimは次の順番で$VIMの値を +決定する: +1. 環境変数$VIMが定義されていればそれを使う。$VIMを定義してVimが使用するファイ + ルをそのディレクトリから探し出すようにできる。例: > + setenv VIM /home/paul/vim +2. 'helpfile'が問題のある環境変数を含んでいなければその値を使う(標準設定は + "$VIMRUNTIME/doc/help.txt"であり、これはニワトリと卵の問題を含んでいる)。 + ファイル名("help.txt"など)の部分は取り除かれる。そしてディレクトリ名の最後 + が"doc"、"runtime"、"vim{version}"(例えば"vim54")、のどれかならそれも取り除 + かれる。 +3. MSDOS、Win32、OS/2、ではVimの実行可能ファイルがあるディレクトリを使用する。 + ディレクトリ名の最後が"/src"ならそれは取り除かれる。配布されているVim一式 + の.zipファイルをあるディレクトリに展開し、検索パスを調整して使っているよう + なら便利である。ディレクトリ名の最後が"runtime"か"vim{version}"(例えば + "vim54")ならそれは取り除かれる。 +4. Unixではコンパイル時に指定したインストール先のディレクトリを使用する + (":version"の出力を見て確認できる)。 + +このうちのどれかが使用できるならVimは環境変数$VIMを設定する。あとからその値を +変更するには":let"コマンドを次のように使う: > + :let $VIM = "/home/paul/vim/" +< + *$VIMRUNTIME* +環境変数の"$VIMRUNTIME"は、ヘルプファイルや構文強調表示の定義ファイルのよう +な、Vimが使用するさまざまな支援ファイルの置き場所を見つけるために使用される。 +例えば、主要なヘルプファイルは通常は"$VIMRUNTIME/doc/help.txt"である。 +普通はユーザが自分で$VIMRUNTIMEを設定せずに、Vimに設定させる。Vimは次の順番で +$VIMRUNTIMEの値を探す: +1. 環境変数$VIMRUNTIMEが設定されていればそれを使う。ランタイムファイルを特殊な + 場所に置くときに設定する。 +2. "$VIM/vim{version}"ディレクトリがあればそれを使う。{version}はVimのバージョ + ン番号から'-'や'.'を除いた物である。例えば"$VIM/vim54"。これは$VIMRUNTIMEと + して一般的な値である。 +3. "$VIM/runtime"ディレクトリがあればそれを使う。 +4. $VIMの値を使う。これは古いバージョンとの互換性のためである。 +5. オプション'helpfile'が設定されていて'$'を含んでいないとき、その値を使用す + る。最後の"doc/help.txt"は取り除かれる。 + +Unixでコンパイル時に$VIMRUNTIMEの初期値を設定した場合(":version"の出力をみて確 +認できる)、2から4は無視される。そして5を試したあとにコンパイル時に設定した値が +使用される。つまり$VIMの値を使わずにコンパイル時に設定した値を使用するというこ +とである。これは$VIMが"/etc"でランタイムファイルが"/usr/share/vim/vim54"にある +ような場合に便利である。 + +このうちのどれかが使用できるならVimは環境変数$VIMRUNTIMEを設定する。あとからそ +の値を変更するには":let"コマンドを次のように使う: > + :let $VIMRUNTIME = "/home/piet/vim/vim54" - *iconise* *CTRL-Z* *v_CTRL-Z* +============================================================================== +6. サスペンド *suspend* + + *iconize* *iconise* *CTRL-Z* *v_CTRL-Z* CTRL-Z ":stop"のようにVimをサスペンドする。 - ノーマルとビジュアルモードで動作する。挿入モードとコマ - ンドラインモードでは、CTRL-Zは通常のキャラクタ文字とし - て入力・挿入される。 + ノーマルモードとビジュアルモードで動作する。挿入モード + とコマンドラインモードでは、CTRL-Zは通常のキャラクタ文 + 字として入力・挿入される。ビジュアルモードで使用したと + きはサスペンドから復帰するとノーマルモードになる。 :sus[pend][!] or *:sus* *:suspend* *:st* *:stop* :st[op][!] Vimをサスペンドする。 - もしも'!'を付けないで'autowrite'がセットされているなら - ば、変更とファイル名を持つ全てのバッファは保存される。 - もしも'!'をつけたか、'autowrite'がセットされていないな - らば、変更のあるバッファは保存されないので、後でVimを - フォアグラウンドに戻すのを忘れてはならない。 + 'autowrite'がオンのときに'!'を付けなかったときには、 + ファイル名を持つ未保存のバッファは全て保存される。 + '!'を付けたときや、'autowrite'がオフのときには、未保存 + のバッファは保存されないので、後でVimをフォアグラウン + ドに戻すのを忘れてはならない。 GUIモードでは、サスペンドはgvimのアイコン化として実装されている。Windows 95/NT では、gvimは最小化される。 @@ -703,330 +1019,225 @@ GUIモードでは、サスペンドはgvimのアイコン化として実装さ Vimを再びフォアグラウンドに戻せば、続きの作業を行うことができる。それ以外のシ ステムでは、CTRL-Zは新しいシェルをスタートさせる。これはコマンド":sh"と同じで ある。この場合、シェルを終了させればVimで続きの作業を行うことができる。 +訳注: |vim-modes|に何がある? -============================================================================== -6. The vimrcファイル *vimrc-intro* *vim-script-intro* - -vimrcファイルは全てのVimセッション で使おうとしている設定をするために使われ -る。通常ファイルは$HOME/.vimrcとなるが、別のファイルを使用することも可能であ -る。詳細は|vimrc|。Vimは起動時にそれ(もしくは複数)を読み込み、中のコマンドを解 -釈する。 - -Vimスクリプトファイルを他の目的のために使用することもできる。シンタックスハイ -ライティングに使われるファイルが一例である。Vimにはあらゆるタスクを成し遂げる -に十分なコマンドが揃っている。 - - *vimrc_example.vim* -vimrcファイルのサンプルを$VIMRUNTIME/vimrc_example.vimに見つけることができるだ -ろう。これを独自のvimrcファイルとして使い始めることができる。他人の作ったvimrc -ファイルの中に沢山の例を見出すこともできる。http://www.vim.org/user.htmlを訪れ -てみよう。 - - -EXコマンドを使う ~ - -vimrcファイルはVimのコマンドラインで打ち込むことのできる全てを含むことができ -る。タイプする時に必要な先頭のコロンは、スクリプトファイルには要求されない。 -Vimのコマンドラインでは次のようにタイプするだろう -> :set number -同じことをvimrcファイルでは、単に次のようにすれば良い -> set number +X-windowsではVimをサスペンドするとセレクションの所有権が失われる。つまり選択し +ていた内容を他のアプリケーションにコピーすることができない(そうしないとVimが停 +止しているのでセレクションを得ようとしたプログラムがフリーズしてしまう)。 -行末の文字はシステムに依存する。Unixでは一文字<NL>を使用する。MS-DOS、 -Windows、OS/2、そしてそれに類するシステムでは<CR><LF>が使用される。これは<CR> -で終わっているマッピングを使用するときには重要である。|:source_crnl|を参照。 - -長い行は、次行の書き出しに"\" (バックスラッシュ。訳注:Windows等では円記号)を置 -いて区切り、複数行に渡らせることができる。|line-continuation|参照。 -例: -> iabbr Http Hyper Text Transfer -> \ Protocol -Note これはVimスクリプトファイルでだけ有効。 - - -空白 ~ - -空の行を書くことが許され、そしてそれは無視される。 - -先行する空白文字(ブランクとタブ)は常に無視される。引数の間の空白文字(上記例で -言えば'set'と'number'の間)は1文字のブランク文字として解釈され、区切り文字とし -ての役割を担う。行末(最後の可視文字以降)の空白文字は、状況に応じて無視されたり -されなかったりする。下記参照。 +============================================================================== +7. 設定の保存 *save-settings* -"="記号を必要とする次のような":set"コマンドを考えると -> set cpoptions =aABceFst -"="記号の直前の空白文字は無視される。しかし"="以後には空白文字を置くことはでき -ない! +多くの人はvimrcファイルを手作業で編集しているだろう。この機能はそのような人に +優れた利便性を提供する。vimrcファイルを自動的に作成するコマンドが用意されてい +て、作成したファイルをそのまま、もしくは一部分だけをコピーして使用することがで +きる。 -オプションの値として空白文字を含むためには、次の例のように"\"(バックスラッ -シュ)によってエスケープしなければならない: -> set tags=my\ nice\ file -同様の例で次のように書いたものは -> set tags=my nice file -次のように解釈されてしまうので、エラーを出す: -> set tags=my -> set nice -> set file + *:mk* *:mkexrc* +:mk[exrc] [file] 現在のキーマッピングと変更されているオプションを + [file]に保存する( [file]を省略するとカレントディレクト + リの".exrc"に保存される)。 [file]がすでにあるときには + 保存しない。 {Vi にはない} + +:mk[exrc]! [file] 現在のキーマッピングと変更されているオプションを + [file]に保存する( [file]を省略するとカレントディレクト + リの".exrc"に保存される)。 [file]がすでにあるときには + 上書き保存する。 {Vi にはない} + + *:mkv* *:mkvimrc* +:mkv[imrc][!] [file] ":mkexrc"と同じだが [file]を省略したときにカレントディ + レクトリの".vimrc"に保存する。コマンド":version"もファ + イルに書き込まれる。 {Vi にはない} + +これらのコマンドは":map"コマンドや":set"コマンドをファイルに書き込む。書き込ん +だコマンドを実行するとキーマッピングやオプションが現在と同じように設定される。 +オプションの'columns'、'endofline'、'fileformat'、'key'、'lines'、'modified'、 +'scroll'、'term'、'textmode'、'ttyfast'、'ttymouse'は端末やファイルに依存する +ため含まれない。Note: オプションの'binary'、'paste'、'readonly'が含まれるが、 +これは必ずしも望むような動作ではないかもしれない。 + +マッピングに特殊なキーが使われているときは、マッピングが正しく解釈されるよう +に、オプション'cpoptions'が一時的に初期値に戻される。Viとの互換性はなくなる +が、別の端末でもそのマッピングを使用できるようになる。 + +グローバルなマッピングだけが保存される。バッファローカルなマッピングは保存され +ない。 + +一般的な方法は、デフォルトの".vimrc"ファイルを使い、幾つかの":map"や":set"コマ +ンドを変更してそれを保存するというものである。 + +一般的な方法は、デフォルトの".vimrc"ファイルを使い、":map"や":set"コマンドで設 +定を変更し、それをファイルに保存するというものである。まず +":source ~piet/.vimrc.Cprogs"のようなコマンドでデフォルトの".vimrc"を読み込 +み、実際に設定を変更してから、":mkvimrc!"を使ってカレントディレクトリに設定を +保存する。もしもこのファイルをデフォルトの.vimrcにしたいならば、UNIXではホーム +ディレクトリへ、Amigaならばs:へ、MS-DOSならば$VIMディレクトリへそのファイルを +移動する。オートコマンド|autocommand|やモードライン|modeline|も、同じ方法を +使って設定することができる。 + +vimrcにオプションの設定を1つだけ加えるには次のようにする: +1. Vimでvimrcファイルを開く。 +2. 期待どおりになるようにオプションを設定する。例えば、'guifont'を設定していろ + んなフォントを試す。 +3. オプションを設定する行を追加する。値を入力するのに'='レジスタを使用する。 + 例えば、オプション'guifont'の設定を加えるには: > + o:set guifont=<C-R>=&guifont<CR><Esc> +< [<C-R>はCTRL-R、<CR>はエンターキー、<Esc>はエスケープキー] + +Note: .vimrcファイルを作成するときにはオプション'compatible'が持つ副作用の影響 +に注意する必要がある。|'compatible'|を参照。 +副作用を防ぐため、":mkvimrc"、":mkexrc"、":mksession"は最初にオプション +'compatible'の設定を出力する。 +============================================================================== +8. ビューとセッション(Views and Sessions) *views-sessions* + +ユーザーマニュアルの|21.4|と|21.5|で簡単に紹介されている。 + + *View* *view-file* +ビューとは、あるウィンドウに適用された設定の集合である。ビューを保存しておい +て、あとからそれを復元することで、開いていたテキストをまた同じように表示するこ +とができる。ウィンドウに関連したオプションやマッピングも復元されるので、ビュー +を保存したときと同じ状態で作業を再開することができる。 + + *Session* *session-file* +セッションとは、全てのウィンドウのビューとグローバルな設定のことである。セッ +ションを保存しておいて、あとからそれを復元することで、各ウィンドウのレイアウト +を元に戻すことができる。セッションを利用してすばやくプロジェクト(作業単位)を切 +り替えることが可能で、そのプロジェクトで開いていたファイルを自動的に開くことが +できる。 + +ビューとセッションはviminfoファイルを拡張した便利な機能である。ビューとセッ +ションをviminfoファイル(|viminfo-file|)と併用することで全ての情報を記録するこ +とができる。 + +保存しておいたビューやセッションを素早く再開するには引数|-S|を使う: > + vim -S Session.vim +< +これら全ては {Vi にはない} 機能である。{|+mksession|が有効な場合のみ利用可能} + + *:mks* *:mksession* +:mks[ession][!] [file] 現在のセッションを復元するためのVimスクリプトを作成す + る。 + [!]を付けたときはファイルを上書保存する。 + [file]を省略したときは"Session.vim"に保存する。 + +":mksession"の出力は":mkvimrc"の出力に似ているが、さらにいくつかのコマンドが追 +加されている。どのコマンドが出力されるかはオプション'sessionoptions'に依存す +る。保存したファイルは、コマンド":source"で実行すると次の効果がある: +1. 'sessionoptions'に"options"が含まれているときは、グローバルなマッピングとオ + プションを復元する。スクリプトローカルなマッピングは復元されない。 +2. 'sessionoptions'に"globals"が含まれているときは、大文字で始まって1つ以上の + 小文字を含む名前を持ったグローバルな変数を復元する。 +3. 現在読み込まれているバッファを全て開放する。 +4. 'sessionoptions'に"curdir"が含まれているときは、カレントディレクトリを復元 + する。あるいは、'sessionoptions'に"sesdir"が含まれているときは、カレント + ディレクトリをセッションファイルが保存されているディレクトリに変更する。 +5. 'sessionoptions'に"winpos"が含まれているときは、GUIウィンドウの位置を復元す + る。 +6. 'sessionoptions'に"resize"が含まれているときは、スクリーンのサイズを復元す + る。 +7. 'sessionoptions'に"buffers"が含まれているときは、バッファリストと各バッファ + におけるカーソルの位置を復元する。隠れ(hidden)バッファや開放済み(unloaded) + バッファも含めて、全てのバッファを復元する。"buffers"が含まれていないとき + は、ウィンドウに表示されているバッファのみが復元される。 +8. 全てのウィンドウとそのレイアウトを復元する。'sessionoptions'に"help"が含ま + れているときは、ヘルプウィンドウも復元する。'sessionoptions'に"blank"が含ま + れているときは、無名のバッファを編集していたウィンドウも復元する。 + 'sessionoptions'に"winsize"が含まれていて、ヘルプウィンドウや無名バッファの + ウィンドウが除外されていないときは、ウィンドウのサイズも復元する(スクリーン + サイズに比例する)。"winsize"が含まれていないときは、ウィンドウは妥当なサイ + ズになる。 +9. 各ウィンドウのビューを|:mkview|の機能と同じように復元する。しかし + 'viewoptions'ではなく'sessionoptions'が使われる。 +10. セッションファイルと同じ名前で最後が"x.vim"(eXtraのx)という名前のファイル + があればそのファイルを実行する。この仕組を使ってセッションに関連した処理や + 設定、例えばGUIのメニューを作成するなど、を行うことができる。 + 訳注:セッションファイルがSESSION.vimならSESSIONx.vimが実行される。 + +セッションを復元すると、内部変数の"v:this_session"(|this_session-variable|)を +使って現在のセッションの名前(フルパス)を利用できる。 +それを利用したマッピングの例: > + :nmap <F2> :wa<Bar>exe "mksession! " . v:this_session<CR>:so ~/sessions/ +これは現在のセッションを保存してから、別のセッションを開こうとするものである。 + + *:mkvie* *:mkview* +:mkvie[w][!] [file] 現在のウィンドウの状態を復元するためのVimスクリプトを + 作成する。 + [!]を付けたときはファイルを上書保存する。 + [file]を省略したり、1から9の数字を指定したときは、 + 'viewdir'に指定したディレクトリに適切な名前で保存され + る。'viewdir'に指定したディレクトリがないときには、そ + のディレクトリも作成される。 + [file]を省略、もしくは数字を指定した場合は、常に上書き + 保存される。そして、ビューを復元するときには + |:loadview|を使用する。 + [file]にファイル名を指定すると、編集を再開するためのコ + マンドがそのファイルに保存される(この場合は'viewdir'は + 使われない)。 + +":mkview"の出力は次の項目を含んでいる: +1. ウィンドウで使用している引数リストの復元する。グローバルな引数リスト使って + いるときにはそれが使用される。 + 引数リストのインデックスも復元される。 +2. ウィンドウで編集していたファイルを開く。編集していたファイルがなければ、空 + のウィンドウが作成される。 +3. 'viewoptions'が"localoptions"を含んでいるときは、そのバッファやウィンドウに + 特有な(ローカルな)、マッピング、短縮(abbreviations)、オプション、を復元す + る。セッションの一部としてビューを保存するときに、'sessionoptions'に + "options"が含まれているときは、オプションのグローバルな値とローカルな値が両 + 方保存される。 +4. 'viewoptions'が"folds"を含んでいるときは、手作業で設定した折畳みを復元す + る。折畳みの開閉状態も復元する。 +5. ファイルにおけるカーソルとスクロールの位置を復元する。閉じた折畳みがあると + うまく機能しない。 +6. ローカルなカレントディレクトリを復元する。グローバルなカレントディレクトリ + と違っている場合のみ。 +訳注: |current-directory| + +Note: ビューとセッションは完璧ではない: +- 全てを復元するわけではない。例えば、関数、オートコマンド、":syntax on"、など + は含まれない。レジスタやコマンドラインの履歴などは、ビューやセッションではな + く、viminfoに保存される。 +- グローバルなオプションの設定は、その値を初期設定から変更していた場合のみ保存 + される。現在の設定が初期設定とは違うときにセッションを復元しても、初期設定に + は戻らない。しかしながら、ローカルなオプションは初期設定に戻される。 +- 既存のマッピングは警告なく上書きされる。そのようなときはよく分からないエラー + が発生するだろう。 +- 手動で設定した折畳みや、その開閉状態を復元すると表示が乱れることがある。それ + はビューを保存してから復元する間に、編集していたファイルを変更した場合であ + る。 +- Vimスクリプトはまったくもって効率的ではない。しかしそうは言っても、自分でコ + マンドを再入力するよりは断然早い。 -コメント ~ + *:lo* *:loadview* +:lo[adview] [nr] 編集中のファイルに関連したビューを読み込む。 [nr]を省 + 略すると、":mkview"で保存したビューが読み込まれる。 + [nr]を付けた場合は、":mkview [nr]"で保存したビューが読 + み込まれる。 -文字"(ダブルクォーテーション記号)がコメントの開始記号である。この文字を含むそ -れ以降、行末まで全ての文字はコメントとみなされ無視される。但し以下に示す例のよ -うなコメントとは解釈されない場合を除く。コメントは行のどの位置からでも開始でき -る。 +":mkview"と":loadview"の組は、1つのファイルに対して全部で10コのビューを管理で +きる。ビューは'viewdir'で指定したディレクトリに保存される。ビューはファイル名 +を利用して管理されている。そのため、ファイルの名前を変更したり、(シンボリック) +リンクファイルを使ってアクセスした場合は、対応するビューを見つけることができな +い。 -コマンドにコメントで簡単な注釈を付ける。その例: -> abbrev dev development " shorthand -> map <F3> o#include " insert include -> execute cmd " do it -> !ls *.c " list C files -短縮形'dev'は'development " shorthand'に展開される。<F3>のマッピングは実際 -には、'o# ....'以降の'" insert include'も、全体を含んだ形になる。"execute"コマ -ンドはエラーになる。"!"コマンドは、それ以降の全てをシェルに送るので、'"'文字が -マッチしない、というエラーを引き起こす。 -":map"、":abbreviate"、":execute"そして"!"コマンドの後には、一切のコメントを置 -くことはできない(その他にも幾つか、この制限があるコマンドがある)。"map"、 -":abbreviate"そして"execute"コマンドには、次のようなトリックを使うことでコメン -トを記述することができる: -> abbrev dev development|" shorthand -> map <F3> o#include|" insert include -> execute cmd |" do it -コマンドは文字'|'によって次のコマンドと区切られる。そしてその次のコマンドとは -単なるコメントになっている。 - -Note 略語設定(abbreviation)とマッピングの例の'|'の前には、空白文字が挿入されて -いない。これらのコマンドでは、行末もしくは'|'までの全ての文字がコマンドとして -解釈される。この振る舞いの結果、行末に空白文字が含まれて、それに気がつかない場 -合がある: -> map <F4> o#include -To avoid these problems, you can set the 'list' option when editing vimrc -files. -この問題を避けるために、vimrcファイルを編集して'list'オプションを設定すること -ができる。 - - -落とし穴 ~ - -さらに大きな問題が、次の例によって発生する: -> map ,ab o#include -> unmap ,ab -,abのマッピングはちゃんと',ab'にマッピングされ、これには続く空白文字は含まれな -い。しかし"unmap"が直接行末に達していない場合、Vimはマッピングされていない、存 -在しないシーケンス、',ab 'をマッピングから解除(unmap)しようと試みる。このエ -ラーがあった場合、'unmap ,ab 'の行末の空白文字は表示されないために、見つけるの -は非常に困難である。 - -これは'unmap'コマンドの後にコメントを使った場合に生じる問題と、まったく同一で -ある: -> unmap ,ab " comment -コメントの部分は無視される。しかしながらVimは存在しない',ab 'をマッピング -から解除しようと試みる。この問題を解決するには'b'以降の文字は、空白文字そして -コメントを含めゴッソリ消すことが最善である。 - -上記のような状況を除けば、次のようにVimが定義するように、コマンドとコメントを -同一行に書くことができる。 -> set number " display line numbers - - -ノーマルモードのコマンド ~ - -ノーマルモードのコマンドを実行するには、|:normal|コマンドを使用することができ -る。特殊文字に伴う問題を回避するには、|:execute|コマンドを使用する。その引数は -1つの式である(詳しいことはもっと下に記す)。例: -> exe "normal mxGOA test.\<Esc>`x" -この例ではテキストの最末尾に"A test."という行を追加し、カーソルを現在の位置に -戻す。Note "\<ESC>"はエスケープ文字へと変換される。バックスラッシュやダブル -クォートを此処に使う時には、その前にバックスラッシュを書く必要がある: -> exe "normal \"aYgg\"aP" -This yanks the current line and puts it above the first line in the file. To -do this without changing the cursor position and the text displayed in the -window, this has to be extended a bit: -この例では、現在の行をヤンクし、ファイルの先頭に挿入している。カーソル位置と -ウィンドウに表示されるテキストを変更せずに行うためには、これを少し拡張すればよ -い: -> exe "normal ma\"aYHmbgg\"aP`bzt`a" -詳しく見ると: - ma 現在の位置にマークaを設定 - "aY 現在行をヤンクしてレジスタaに保存 - Hmb ウィンドウの最上位行に移動し、マークbを設定 - gg ファイルの先頭に移動 - "aP カーソルのある行の上にヤンクした行を挿入 - `b 表示されていた最初の行へ移動 - zt ウィンドウのテキスト位置を復帰 - `a カーソルの位置を復帰 - - -IF - ELSE - ENDIF ~ - -ある状況下においてだけコマンドを実行したいことが時々あるだろう。そんな時には -|:if|コマンドを使用することができる。例: -> if &term == "xterm" -> echo "this is an xterm" -> endif -"if"コマンドの引数は「式」である。式が真(0以外)として評価されると、そこから -"endif"までの文が実行される。式が0(偽)として評価された場合、これらのコマンドは -スキップされる。|:echo|コマンドもまた式であり、その引数を表示する。 - -式には多くの構成を使用することができる。サンプルを参考にすると: - &term 'term'オプションの値。'&'で始まる名前は、その名前のオ - プションの値である。 - == "equal"、両側の文字列または数字を比較し、等しければ真 - として評価する。 - "xterm" 文字通りの文字列 -式について詳しい情報は|expression|を参照。 - -"else"も使用することができる: -> if &tabstop != 8 -> echo "tabstop is " . &tabstop -> else -> echo "tabstop is OK" -> endif -Note 最初のechoコマンドに使われている点"."は、文字列定数と'tabstop'オプション -の値を連結する。その際に連結できるように、数値は文字列に自動的に変換される。 - - -WHILE - ENDWHILE ~ - -コマンドのシーケンスを繰り返すために|:while|コマンドを使うことができる: -> let i = 1 -> while i < 10 -> echo i -> let i = i + 1 -> endwhile -これは内部変数"i"を使用する。内部変数は多くのプログラミング言語と同じように使 -われる。変数に値を代入するために|:let|コマンドが使用される。変数は前もって宣言 -しておく必要はないし、数値を保存するのか文字列なのかの区別も存在しない。 -"while"と"endwhile"の間の分は9回繰り返される。 -Note 変数"i"は"let i = i + 1"コマンドによって増加している。もしこれを忘れてし -まった場合、ループは永遠に回りつづけるだろう。不幸にもそのループに陥った場合に -は、CTRL-C(MS-DOSではCTRL-Break)で脱出することができる。 - - -組み込み関数 ~ - -Vim has builtin functions that you can use. Example: -Vimには便利に使うことのできる関数群が組み込まれている。例: -> echo exists("did_my_inits") -この例では変数"did_my_inits"が存在すれば1、存在しなかった場合には0を表示する。 -> if has("gui_running") -> syntax on -> endif -これはGUIモードで起動された時に、シンタックスハイライティング(構文強調)を有効 -にしている。has()関数はある機能がサポートされているかを確かめるために使うこと -ができる。 -> call append(0, hostname() . " - " . strftime("%Y %b %d")) -これはコンピュータの名前と現在時刻を記した行をカレントバッファの先頭に挿入す -る。 +たまには'viewdir'を綺麗に掃除するといいだろう。 -Vimにさせたい仕事を実現するための、多くの関数が用意されている。これらはノーマ -ルコマンドと一緒に使うことで、とても複雑になる。|functions|参照。 - - -ユーザ定義関数 ~ - -Vimを使いこなすにつれ、同じようなコマンドを何度も使うようになるだろう。そんな -時は関数を自分で定義して、必要な時にはそれを呼び出すようにする。例: -> function My_Func(name) -> if a:name ==? "john" -> let s = "Hello " -> else -> let s = "I don't know " -> endif -> echo s . a:name . "." -> endfun -解説: -関数"My_Func"は1つの引数を持つものとして定義されている。"a:name"が、その引数を -参照するために"a:name"が使用される。"==?"演算子は引数と文字列"john"を、大文字 -小文字の区別無しで比較する。こんな風に呼び出すことができる: -> call My_Func("John") -> Hello John. -> call My_Func("James") -> I don't know James. - -Note ユーザ関数の名前は、必ず大文字で始まらなければならない。引数はいくらでも -使うことができる。|:function|参照。 - - -パッケージ ~ - -To avoid your function names to interfere with functions that you get from -others, use this scheme: -他人の作った関数の名前と自分のものが衝突するのを避けるためには、次のスキーム -(仕組み)を使う: -- 各々の関数の前には、ただひとつと思われる文字列を付加する。慣用的に略語が使用 - される。例えばオプションウィンドウに関連する関数ならば"OW_"という具合であ - る。 -- ファイルに関数の定義を含める。既に関数が読み込まれたかは、グローバル変数を設 - 定することで知ることができる。ファイルを再び読み込んだ(|:source|)時には、予 - め関数を読み込み解除する。 -例: -> " This is the XXX package -> -> if exists("XXX_loaded") -> delfun XXX_one -> delfun XXX_two -> endif -> -> function XXX_one(a) -> ... body of function ... -> endfun -> -> function XXX_two(b) -> ... body of function ... -> endfun -> -> let XXX_loaded = 1 - - -自動コマンド実行 ~ - -ファイルの種類に応じてオプションやマッピングを設定したい場合があるだろう。幸運 -なことにVimは既にファイルの多くの種類を認識する。これは構文強調のために使用さ -れるが、もちろん他のことに使うこともできる。使うためには構文解析を有効にする -|:syn-on|か、このコマンドを使う必要がある: -> filetype on - -例えばCのソースに対して'cindent'オプションを、自動コマンドを実行するには: -> au FileType c set cindent -このautocommandは3つの部分から構成されている: - FileType 使われるイベントの名前 - c 検出されたファイルタイプの名前 - set cindent ファイルタイプが"c"でイベントが起こった時に実行される - コマンド -詳しい解説は|:autocmd|を参照。 - -'cindent'のようなバッファで局所的に働くオプションには、これでうまくいく。マッ -ピングを定義するために使用した場合には、複数ウィンドウで使用してしまうと正しく -働かない。例をあげると、あるウィンドウでfoo.txtを、他のウィンドウでfoo.cを編集 -したとすると、foo.cのために設定したマッピングがfoo.txtでも使用されることにな -る。foo.cに対してだけ働くマッピングを作るためには、ファイルfoo.cが現在のバッ -ファでなくなったらすぐにマッピング解除する必要がある。それはこの方法でできる: -> au BufEnter * if &ft == "c" | call CM_map() | endif -> au BufLeave * if &ft == "c" | call CM_unmap() | endif -> fun CM_map() -> set cindent -> imap { {<CR> <BS><CR>}<Up><End> -> endfun -> fun CM_unmap() -> iunmap { -> endfun -ここではある関数がマッピングを定義するために、別の一つがそれを解除するために使 -用されている。これにより、自動コマンドの部分を変更せずにマッピングを追加するこ -とが可能になる。 -関数を使うことで自動コマンドを短くすることができる。'|'はコマンド区切り文字で -ある。 -":imap"コマンド内の<>というコードは、コントロール文字の代替である。こうすると -入力も、確認も容易になる。" <BS>"は、<CR>がタイプされた時に字下げが消えてしま -うのを、回避するためのものである。 +*.cファイルを編集するときにビューを自動的に保存、復元するには: > + au BufWinLeave *.c mkview + au BufWinEnter *.c silent loadview ============================================================================== -7. The viminfoファイル *viminfo-file* +9. viminfoファイル *viminfo* *viminfo-file* *E136* + *E575* *E576* *E577* いったんVimを終了させ、後に再び起動する時には、通常多くの情報が失われてしま う。viminfoファイルは終了する時の情報を保存しておくのに使用され、それにより再 起動した時には同じ状態で編集セッションを続けることができる。 +ユーザーマニュアルの|21.3|で簡単に紹介されている。 + viminfoファイルにはこんなものを記憶できる: - コマンドラインの履歴 - 検索文字列の履歴 @@ -1048,42 +1259,40 @@ viminfoファイルにはこんなものを記憶できる: ションファイルどちらも、Vimをスタートしてすぐに好みの設定を行うという目的のた めに、効果的に使用できる。 |session-file| - *viminfo-read* Vimが起動した時に'viminfo'オプションが空でなかったら、viminfoファイルが読み込 -まれ、適切な情報が適用される。起動時にはマークは読み込まれない(しかしファイル -マークは読み込まれる)。起動時に'viminfo'オプションをどうやって設定するのかは -|initialization|を参照。 +まれ、その情報は適切に使用される。起動時にはマークは読み込まれない(しかしファ +イルマークは読み込まれる)。起動時に'viminfo'オプションをどうやって設定するのか +は|initialization|を参照。 *viminfo-write* Vimが終了する時に'viminfo'が空でなかったら、情報がviminfoファイルに保存される -(もし既にあった存在した場合には、それと混合させられる)。'viminfo'オプション -は、どのような情報が保存されるか、またどのくらいの量を保存するべきかその限界を -指定する為の情報を含む文字列である。('viminfo'参照)。 +(もし既に存在した場合には、それと混合(マージ)される)。'viminfo'オプションは、 +どのような情報を保存するか、またどのくらいの量を保存するべきかその限界を指定す +る為の情報を含む文字列である。('viminfo'参照)。 -Unixの注意: +Note: Unixにおける注意点: - viminfoファイルには入力したテキストや、使用したコマンドが記載されているの で、他人に覗かれないように保護(パーミション設定)したほうが良い。 - 複数のユーザでviminfoファイルを共有したい時(例えば他のユーザへ"su"する時な ど)には、グループもしくは全員にviminfoファイルへの書き込み権限を与える。Vim - ファイルが新しいviminfoファイルを書くときには、これらの設定はそのままに保護 - する。しかし、誰にでもviminfoファイルを読ませたり書かせたりすべきではない - し、注意が必要。 + が新しくviminfoファイルを保存するときに、その設定を維持する。しかし、誰にで + もviminfoファイルを読ませたり書かせたりすべきではないし、注意が必要。 - 現在の"本当"のユーザによって書き込み不能なviminfoファイルは、Vimは決して上書 きしない。これは"su"でrootユーザになった時、しかし$HOMEがまだ通常ユーザの ホームディレクトリのままの時の支援となる。そうでないとVimはroot所有の、他の 誰にも読めないviminfoファイルを作成してしまう。 -マークは個々のファイル別々に保存される。ファイルが読み込まれ'viminfo'が空でな -い場合、viminfoファイルからマーク情報が読み込まれる。注意: マークはVimが終了す -る時にだけ保存され、Vimとのセッション中にオープンされ":bdel"されていないファイ -ル全てに対して、マークが記憶される。もしも":bdel"で破棄したファイルについて -マークを保存しておきたいのならば、":wv"を使う。'['と']'のマークは保存されない -が、'"'は保存される。'"'マークは最後にファイルを閉じた時にカーソルがあった場所 -に行くのに、非常に便利である。'viminfo'に文字"r"が与えられた時には、一切のマー -ク情報は記録されない。これはリムーバブルメディア上のファイルのマークが保存され -るのを避ける場合に使う(MS-DOSでは"ra:,rb:"を、Amigaでは"rdf0:,rdf1:,rdf2:"を使 -うと良い)。 +マークは個々のファイルに対して別々に保存される。ファイルが読み込まれ'viminfo' +が空でない場合、viminfoファイルからマーク情報が読み込まれる。NOTE: マークはVim +が正常に終了したときにだけ保存される。また、Vimの起動中に開かれた":bdel"されて +いないファイル全てのマークが記録される。もしも":bdel"で破棄したファイルについ +てマークを保存しておきたいのならば、":wv"を使う。'['と']'のマークは保存されな +いが、'"'は保存される。'"'マークはファイルを開いたときに前回のカーソル位置を復 +元するのに非常に便利である。'viminfo'に文字"r"が与えられた時には、一切のマーク +情報は記録されない。これはリムーバブルメディア上のファイルのマークが保存される +のを避ける場合に使う(MS-DOSでは"ra:,rb:"を、Amigaでは"rdf0:,rdf1:,rdf2:"を使う +と良い)。 *viminfo-file-marks* 大文字のマーク('Aから'Z)はviminfoファイルが書かれるときに、保存される。数字の @@ -1093,15 +1302,19 @@ Unixの注意: 起こることに似ている。'0に記憶する位置が'1から'9に既出であった時には、同じ位置 が2度記憶されるのではなく、そのレジスタが'0に浮き上がってくる。結果として"'0" を使用すると、最後にVimを終了した時のファイルとその行に戻ることができる。起動 -後直ちにそれを行うには、次のコマンドを試す: +後直ちにそれを行うには、次のコマンドを試す: > -> vim -c "normal '0" + vim -c "normal '0" -シェルではエイリアスをこんな風に使用して: +シェルではエイリアスをこんな風に使用して: > -> alias lvim vim -c '"'normal "'"0'"' + alias lvim vim -c '"'normal "'"0'"' + +特定のファイルのマークを保存しないようにするには'viminfo'に"r"フラグを追加す +る。 + +Viminfoファイルの名前 *viminfo-file-name* -Viminfoファイルの名前: *viminfo-file-name* - viminfoファイルの名前を特に指定しない時は、UnixとOS/2では"$HOME/.viminfo" に、Amigaでは"s:.viminfo"に、MS-DOSとWin32では"$HOME\_viminfo"になる。MS-DOS とWin32で、$HOMEが設定されていない時には、"$VIM\_viminfo"になる。$VIMも設定 @@ -1115,23 +1328,39 @@ Viminfoファイルの名前: *viminfo-file-name* - 起動後に、コマンドで別の名前を与えると、デフォルト名や'viminfo'や"-i"で与え た名前を上書きすることができる("-i"はNONEが指定されていない時に限る)。 +文字エンコーディング *viminfo-encoding* + +viminfoファイルのテキストはオプション'encoding'で指定したエンコーディングで保 +存される。通常は'encoding'の設定はいつも同じなので、問題なく機能する。しかしな +がら、もしもviminfoファイルを読み込むときに、'encoding'の設定がviminfoファイル +を保存したときとは違うエンコーディングに設定されていると、いくつかのテキスト +(ASCII以外の文字)は不正な文字になってしまう。それを回避するには、オプション +'viminfo'に'c'フラグを追加する: > + :set viminfo+=c +そうするとVimは、viminfoファイルを保存したときの'encoding'から現在の'encoding' +へとテキストを変換する。これを利用するには|+iconv|が有効になっている必要があ +る。ファイル名は変換されない。 + + +viminfoファイルを手動で読み書きする + viminfoファイルを手動で読み書きするのに2つのコマンドが用意されている。これは同 時に起動している複数のVim間で、レジスタの内容を交換するのに利用できる: まず片 方で":wv"してから、もう片方で":rv"する。既にレジスタに何かを記憶している場合に は、":rv!"する必要があることに注意。またこれを行うとコマンドラインの履歴を含む 全ての情報が、送り側のVimのもので上書きされてしまうことにも注意。 -viminfoファイル自信を手で編集することもできるが、Vimによって作られる正しい -フォーマットのviminfoを元にすることを推奨する。一度そこに至ると、それはかなり -自己説明的である(訳注:この一文よくわからん)。これはVimを起動した時に設定されて -いて欲しい内容を含む、"~/.my_viminfo"と言われるファイルを作る目的で使うと重宝 -する。例としては、あるデータをレジスタに予め読み込んでおくとか、コマンドライン -履歴に特定のコマンドをいれるとか、そういう使い方がある。.vimrcファイルに次の一 -行を入れておけば -> rviminfo! ~/.my_viminfo -この情報を読み込むのに使うことができる。ファイルの種類によって(Cコードだとか -vimスクリプトだとか)、異なるviminfoを持ち、":autocmd"を組み合わせることでファ -イル名に基づいたりしながら、それらを使用することもできる(|:autocmd|)参照。 +viminfoファイル自体を手で編集することもできるが、Vimによって作られる正しい +フォーマットのviminfoを元にすることを推奨する。一度試してみればどういう構造に +なっているかよく分かるだろう。これを覚えておけば、Vimを起動したときにいつでも +設定しておきたい内容を、"~/.my_viminfo"というようなファイルに用意しておくとき +に重宝する。例としては、あるデータをレジスタに予め読み込んでおくとか、コマンド +ライン履歴に特定のコマンドをいれるとか、そういう使い方がある。.vimrcファイルに +次の一行を入れておけば > + :rviminfo! ~/.my_viminfo +その情報を読み込むことができる。ファイルの種類によって(Cコードだとかvimスクリ +プトだとか)、異なるviminfoを持ち、":autocmd"を組み合わせることでファイル名に基 +づいたりしながら、それらを使用することもできる(|:autocmd|)参照。 *viminfo-errors* Vimがviminfoファイルを読み込み中にエラーを検出すると、ファイルの上書きはされな @@ -1143,18 +1372,25 @@ Vimがviminfoファイルを読み込み中にエラーを検出すると、フ viminfoを上書きしたいのならば、エラーを修正するか、またはファイルを消すかのど ちらかが必要(Vimの実行中は、殆どの情報が回復してしまう)。 - *:rv* *:rviminfo* -:rv[iminfo][!] [file] viminfoファイルを[file](デフォルト:上記参照)から読込 + *:rv* *:rviminfo* *E195* +:rv[iminfo][!] [file] viminfoファイルを [file](デフォルト:上記参照)から読込 む。[!]が与えれらた場合、既に設定されている情報(レジス - タ、マーク、その他)は上書きされる。{Viにはない機能} - - - *:wv* *:wviminfo* -:wv[iminfo][!] [file] viminfoファイルを[file](デフォルト:上記参照)として保存 - する。ファイルに書き出される情報は、まず古い情報が読込 - まれ、次に新しい情報が読込まれマージ(混合)されたも の - となる。[!]が使用されると、古い情報は読込まれず、内 部 - の情報だけが出力される。'viminfo'に指定がない場合、100 - 個のファイルのマークが書き出される。{Viにはない機能} + タ、マーク、その他)は上書きされる。{Vi にはない} + + + *:wv* *:wviminfo* *E137* *E138* *E574* +:wv[iminfo][!] [file] viminfoファイルを [file](デフォルト:上記参照)として保 + 存する。まず既存のファイルの(古い)情報が読み込まれ、 + Vim内部の(新しい)情報とマージ(混合)されてから、ファイ + ルに保存される。[!]を指定すると古い情報は読み込まれ + ず、Vim内部の情報だけが保存される。'viminfo'が空("")に + 設定されている場合は、100個のファイルのマークが書き出 + される。 + "E138: Can't write viminfo file"("E138: viminfoファイ + ルを保存できません")というエラーが出たときには古い一時 + ファイル(例えば~/.viminf*)が残っていないことを確か + め、.viminfoファイルを保存するディレクトリの書込み権限 + を確認すること。 + {Vi にはない} vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/syntax.jax b/ja/syntax.jax index ac2eefeec..42b829d56 100644 --- a/ja/syntax.jax +++ b/ja/syntax.jax @@ -1,9 +1,10 @@ -COMMENT: 構文強調(テキストの色つけ) -STATUS: suspend 6.1 +COMMENT: 構文強調(テキストの着色) +STATUS: suspend 6.3.54 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: mm -*syntax.txt* For Vim version 6.1. Last change: 2002 Mar 24 +*syntax.txt* For Vim version 6.3. Last change: 2004 Jun 04 VIMリファレンスマニュアル by Bram Moolenaar @@ -25,22 +26,22 @@ Vimは全ての端末で構文強調をサポートしている。しかし多 |usr_06.txt| 構文強調の紹介。 |usr_44.txt| 構文ファイルの記述方法の紹介。 -1. クイックスタート |:syn-qstart| -2. 構文強調ファイル |:syn-files| -3. 構文ファイル読込の手順 |syntax-loading| -4. 構文ファイルの覚書 |:syn-file-remarks| -5. Defining a syntax |:syn-define| -6. :syntax arguments |:syn-arguments| -7. Syntax patterns |:syn-pattern| -8. Syntax clusters |:syn-cluster| -9. Including syntax files |:syn-include| -10. Synchronizing |:syn-sync| -11. Listing syntax items |:syntax| -12. Highlight command |:highlight| -13. Linking groups |:highlight-link| -14. Cleaning up |:syn-clear| -15. Highlighting tags |tag-highlight| -16. Color xterms |xterm-color| +1. クイックスタート |:syn-qstart| +2. 構文強調ファイル |:syn-files| +3. 構文ファイル読込の手順 |syntax-loading| +4. 構文ファイルの覚書 |:syn-file-remarks| +5. 構文を定義する |:syn-define| +6. :syntaxの引数 |:syn-arguments| +7. syntaxのパターン |:syn-pattern| +8. クラスタ |:syn-cluster| +9. 構文ファイルのインクルード |:syn-include| +10. 表示のシンクロナイズ |:syn-sync| +11. 構文アイテムのリストを表示する |:syntax| +12. 強調コマンド |:highlight| +13. グループのリンク |:highlight-link| +14. 構文の消去 |:syn-clear| +15. タグの強調 |tag-highlight| +16. カラーxterms |xterm-color| {これらのコマンドはViには存在しない} @@ -77,16 +78,16 @@ GUIを使用している場合は、次のコマンドで黒地に白文字を カラー端末については|:hi-normal-cterm|を参照。 独自色の構文強調を設定する方法については|syncolor|を参照。 -NOTE: MS-DOSとWindowsの構文ファイルは改行コードが<CR><NL>である。UNIXでは<NR> +NOTE: MS-DOSとWindowsの構文ファイルは改行コードが<CR><NL>である。UNIXでは<NL> である。これは使用しているシステムに合ったタイプのファイルを使わなければならな いことを意味している。しかしながらMS-DOSとWindowsではオプション'fileformats'が 空でなければ正しい形式が自動的に選択される。 -NOTE: 反転表示("gvim -fg white -bg black"、訳注:黒地に白文字)を使用する際は、. -gvimrcが読込まれた後で、GUIウィンドウが開かれるまでオプション'background'のデ -フォルト値が設定されない。そのせいで誤ったデフォルト強調手法が使用されてしま -う。強調表示を有効化する前に'background'のデフォルト値を設定するには、.gvimrc -にコマンド":gui"を含める: > +NOTE: 反転表示("gvim -fg white -bg black")を使用する際は、.gvimrcが読込まれた +後で、GUIウィンドウが開かれるまでオプション'background'のデフォルト値が設定さ +れない。そのせいで誤ったデフォルト強調手法が使用されてしまう。強調表示を有効化 +する前に'background'のデフォルト値を設定するには、.gvimrcにコマンド":gui"を含 +める: > :gui " ウィンドウを開き'background'にデフォルト値を設定する :syntax on " 強調を有効化し、色を設定するのに'background'を使用する @@ -106,10 +107,10 @@ NOTE: .gvimrcの中で":gui"を使用すると"gvim -f"によりフォアグラ \ endif <CR> [|<>|表記を入力する際は、文字通りそのままキー入力する] -詳細 ~ -コマンド":syntax"はファイルを取り込む(訳注:source)ことで実装されている。その際 -取り込まれるファイルの中身を見ることで、このコマンドがどのように動作しているの -か正確に知ることができる。 +詳細 +コマンド":syntax"はファイルを取り込むことで実装されている。その際取り込まれる +ファイルの中身を見ることで、このコマンドがどのように動作しているのか正確に知る +ことができる。 コマンド ファイル ~ :syntax enable $VIMRUNTIME/syntax/syntax.vim :syntax on $VIMRUNTIME/syntax/syntax.vim @@ -200,55 +201,60 @@ Vimにそのファイル形式を認識させたいならば、|new-filetype|を 名前付けの慣習 *group-name* +強調や構文グループの名前はアスキー文字、数字、アンダースコアだけでつけなければ +ならない。正規表現では: "[a-zA-Z0-9_]*" + 各ユーザが好みの色セットを使用できるように、多くの言語に共通する強調グループに -は優先名が与えられている。推奨されているグループ名は以下のとおり: +は優先名が与えられている。推奨されているグループ名は以下のとおり(構文強調がち +ゃんと機能していれば、"Ignore"以外はそのグループに設定された色で表示されるだろ +う): - *Comment コメント + *Comment o コメント - *Constant 定数 - String 文字列定数: "これは文字列です" - Character 文字定数: 'c', '\n' - Number 数値定数: 234, 0xff - Boolean ブール値の定数: TRUE, false - Float 不動小数点数の定数: 2.3e10 + *Constant o 定数 + String o 文字列定数: "これは文字列です" + Character o 文字定数: 'c', '\n' + Number o 数値定数: 234, 0xff + Boolean o ブール値の定数: TRUE, false + Float o 不動小数点数の定数: 2.3e10 - *Identifier 変数名 - Function 関数名(クラスメソッドを含む) + *Identifier o 変数名 + Function o 関数名(クラスメソッドを含む) - *Statement 命令文 - Conditional if, then, else, endif, switch, その他 - Repeat for, do, while, その他 - Label case, default, その他 - Operator "sizeof", "+", "*", その他 - Keyword その他のキーワード - Exception try, catch, throw + *Statement o 命令文 + Conditional o if, then, else, endif, switch, その他 + Repeat o for, do, while, その他 + Label o case, default, その他 + Operator o "sizeof", "+", "*", その他 + Keyword o その他のキーワード + Exception o try, catch, throw - *PreProc 一般的なプリプロセッサ命令 - Include #include プリプロセッサ - Define #define プリプロセッサ - Macro Defineと同値 - PreCondit プリプロセッサの #if, #else, #endif, その他 + *PreProc o 一般的なプリプロセッサ命令 + Include o #include プリプロセッサ + Define o #define プリプロセッサ + Macro o Defineと同値 + PreCondit o プリプロセッサの #if, #else, #endif, その他 - *Type int, long, char, その他 - StorageClass static, register, volatile, その他 - Structure struct, union, enum, その他 - Typedef typedef宣言 + *Type o int, long, char, その他 + StorageClass o static, register, volatile, その他 + Structure o struct, union, enum, その他 + Typedef o typedef宣言 - *Special 特殊なシンボル - SpecialChar 特殊な文字定数 - Tag この上で CTRL-] を使うことができる - Delimiter 注意が必要な文字 - SpecialComment コメント内の特記事項 - Debug デバッグ命令 + *Special o 特殊なシンボル + SpecialChar o 特殊な文字定数 + Tag o この上で CTRL-] を使うことができる + Delimiter o 注意が必要な文字 + SpecialComment o コメント内の特記事項 + Debug o デバッグ命令 - *Underlined 目立つ文章, HTMLリンク + *Underlined o 目立つ文章, HTMLリンク - *Ignore (見た目上)空白, 不可視 + *Ignore o (見た目上)空白, 不可視 - *Error エラーなど、なんらかの誤った構造 + *Error o エラーなど、なんらかの誤った構造 - *Todo 特別な注意がひつようなもの; 大抵はTODO FIXME XXXなどの - キーワード + *Todo o 特別な注意がひつようなもの; 大抵はTODO FIXME XXXなど + のキーワード マーク(*)されている名前が優先グループ、その他はマイナーグループである。優先グ ループには、"syntax.vim"によりデフォルトの強調手法が定義されている。マイナーグ @@ -278,7 +284,7 @@ Vimは初期化の時に、ランタイムファイルの在り処を自動的 +- 'runtimepath'から$VIMRUNTIME/syntax/synload.vimを読込む | | | +- 構文強調の色を設定する。 - | | 色テーマが定義されている場合は":colors {name}"で再度読込む。 + | | カラースキームが定義されている場合は":colors {name}"で再度読込む。 | | そうでない場合は":runtime! syntax/syncolor.vim"が使用される。 | | ":syntax on"は既存の色設定を上書設定し、":syntax enable"はまだ設定 | | されていないグループのみを設定する。 @@ -366,9 +372,21 @@ Vimはロードした構文の名前を変数"b:current_syntax"に記憶して < 警告: この処理には時間がかかる! -主力結果をファイルに保存すれば、あらゆるNetscapeのようなHTML Viewerでそれを観 + *:TOhtml* +またはユーザコマンド":TOhtml"を使ってもよい。これは標準プラグイン中で定義され +ている。":TOhtml"は範囲指定やビジュアルモードにも対応している: > + + :10,40TOhtml + +出力結果をファイルに保存すれば、あらゆるNetscapeのようなHTML Viewerでそれを観 ることができる。Vimで表示されるのと寸分たがわぬ色が再現される。 +変換の範囲を指定するには、"html_start_line"と"html_end_line"をその範囲の最初と +最後に設定すること。例えば、最後に選択された範囲だけを変換するには: > + + :let html_start_line = line("'<") + :let html_end_line = line("'>") + オプション'number'が設定されている場合には、各行にNumberで強調された行番号が付 加される。"html_number_lines"に非0の値を設定すればHTMLの出力へ強制的に行番号を 付加することができる: > @@ -383,6 +401,29 @@ Vimはロードした構文の名前を変数"b:current_syntax"に記憶して り短いHTML 4に準拠したファイルが得られる): > :let html_use_css = 1 +デフォルトでは、テキストの周りに"<pre>"と"</pre>"がつけられる。これによって、 +ブラウザでも折り返しをせずに、Vimで表示される通りになる。一部が少々変わっても +いいから折り返しをさせたいなら、次のようにする: > + :let html_no_pre = 1 +こうすると、各行末に<br>を使い、連続するスペースに" "を使うようになる。 + +HTMLファイルの文字集合の指定には現在の'encoding'の値が使われる。ただしこれは +'encoding'の値が同値なHTML文字集合名を持つ場合だけ機能する。これを上書きするに +は、g:html_use_encodingを使用したい文字集合名にセットすればよい: > + :let html_use_encoding = "foobar" +文字集合指定の行を省略するには、g:html_use_encodingを空文字列にする: > + :let html_use_encoding = "" +自動的に判断する設定に戻したいなら、変数g:html_use_encodingを削除する: > + :unlet html_use_encoding +< + *convert-to-XML* *convert-to-XHTML* +代わりにXHTML(XML準拠のHTML)を生成するスクリプトを使うこともできる。そうするに +は変数"use_xhtml"をセットする: > :let use_xhtml = 1 +これを無効にするにはこの変数を削除する: > + :unlet use_xhtml +生成されたXHTMLファイルはDocBook XMLドキュメントで使用できる。次を参照: + http://people.mech.kuleuven.ac.be/~pissaris/howto/src2db.html + 覚書き: - この機能はGUIをサポートしたバージョンでしか動作しない。(X11などの)GUIが実際 に機能していない状況でも動作はするが、良い結果は得られない(色が異なってしま @@ -467,39 +508,49 @@ ANTの構文ファイルにはデフォルトでJavaScriptとPythonの構文強 スクリプト言語を永続的にインストールするには|mysyntaxfile-add|を参照。 +APACHE *apache.vim* *apache-syntax* + +apacheの構文ファイルはHTTPサーババージョンのApache(デフォルトでは1.3.x)に基づ +いた構文強調を提供する。他のバージョン用の構文強調を利用するには +"apache_version"にApacheのバージョンを文字列としてセットする。例: > + + :let apache_version = "2.0" +< + *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* -アセンブラ言語 *asm-syntax* *asmh8300-syntax* *nasm-syntax* *masm-syntax* +アセンブリ言語 *asm-syntax* *asmh8300-syntax* *nasm-syntax* *masm-syntax* *asm68k-syntax* -"*.i"にマッチする名前のファイルはProgress(訳注:ファイル形式)かアセンブラであ -る。自動検出が動作しない場合や、Progressを編集しないことが判っている場合には、 -起動設定ファイルvimrcに次のコマンドを書くことができる: > +"*.i"にマッチする名前のファイルのタイプはProgressかアセンブリである。自動検出 +が動作しない場合や、Progressを編集しないことが判っている場合には、起動設定ファ +イルvimrcに次のコマンドを書くことができる: > :let filetype_i = "asm" -"asm"には使用するアセンブラ言語の種類を指定する。 +"asm"には使用するアセンブリ言語の種類を指定する。 -ファイル名の同じ拡張子を使用しているアセンブラ言語には沢山の種類がある。従って -ユーザは自分が使用する種類を選択するか、もしくはアセンブラファイルそのものに +ファイル名の同じ拡張子を使用しているアセンブリ言語には沢山の種類がある。従って +ユーザは自分が使用する種類を選択するか、もしくはアセンブリファイルそのものに Vimがそれと判断できるような行を追加しなければならない。現在は以下の構文ファイ ルが利用可能: asm GNUアセンブラ(デフォルト) asm68k モトローラ680x0アセンブラ asmh8300 日立H-8300用GNUアセンブラ ia64 インテルItanium 64 - masm マイクロソフトアセンブラ(たぶん80x86用) - nasm ネットワイドアセンブラ(訳注:nasmのほうが認知度が高い?) + fasm Flat アセンブラ (http://flatassembler.net) + masm マイクロソフトアセンブラ(たぶん80x86汎用) + nasm ネットワイドアセンブラ tasm ターボアセンブラ(80x86,Pentium,MMXの命令コードを含む) pic PICアセンブラ(現在はPIC16F84用) -アセンブラファイルに次のような行を書き加えるのが一番柔軟である: > +アセンブリファイルに次のような行を書き加えるのが一番柔軟である: > :asmsyntax=nasm -"nasm"は実際に使用するアセンブラ構文の名前に置き換える。このような記述はファイ +"nasm"は実際に使用するアセンブリ構文の名前に置き換える。このような記述はファイ ルの先頭5行以内に書いてなければならない。 構文の種類はバッファ変数b:asmsyntaxを設定することで常にそちらが優先される: > :let b:asmsyntax=nasm 自動にしろ手動にしろb:asmsyntaxが設定されていないときには、グローバル変数 -asmsyntaxが使用される。これによりデフォルトのアセンブラ言語を設定することがで +asmsyntaxが使用される。これによりデフォルトのアセンブリ言語を設定することがで きる: > :let asmsyntax=nasm @@ -546,10 +597,8 @@ C *c.vim* *c-syntax* Cには幾つかの補助的な強調方法がある。それらを有効化するには対応した変数に値を 設定する。例: > -A few things in C highlighting are optional. To enable them assign any value -to the respective variable. Example: > :let c_comment_strings=1 -To disable them use ":unlet". Example: > +これを無効化するには":unlet"を使う。例: > :unlet c_comment_strings 変数 強調内容 ~ @@ -557,13 +606,13 @@ c_gnu GNU gcc固有の要素 c_comment_strings コメント内の文字列と数値 c_space_errors 行末の空白文字とタブ文字前のスペース文字 c_no_trail_space_error ... 但し行末の空白文字は除外 -c_no_tab_space_error ... 但しタブも自前のスペース文字は除外 +c_no_tab_space_error ... 但しタブ文字前のスペース文字は除外 c_no_bracket_error []の中の{}をエラーとして表示しない c_no_ansi ANSI標準の型と定数を強調しない c_ansi_typedefs ... 但し標準ANSI型は強調する c_ansi_constants ... 但し標準ANSI定数は強調する c_no_utf 文字列中の\uと\Uを強調しない -c_syntax_for_h ファイル*.hにC+ではなくCの構文を適用する +c_syntax_for_h ファイル*.hにC++ではなくCの構文を適用する c_no_if0 "#if 0"のブロックをコメントとして強調しない c_no_cformat 文字列中の"%"によるフォーマットを強調しない c_no_c99 C99の標準要素を強調しない @@ -572,9 +621,9 @@ c_no_c99 C99の標準要素を強調しない 消される場合には、内部変数"c_minlines"にもっと大きな値を設定すれば解消されるか もしれない: > :let c_minlines = 100 -これにより構文判定の同期位置が表示開始行の100行手前に設定される。初期設定の値 -は50行(c_no_if0を使用した場合は15行)である。ただしこれには、大きな値を設定する -と再描画が遅くなるという短所がある。 +これにより構文判定のシンクロナイズ位置が表示開始行の100行手前に設定される。初 +期設定の値は50行(c_no_if0を使用した場合は15行)である。ただしこれには、大きな値 +を設定すると再描画が遅くなるという短所がある。 "#if 0" / "#endif"のブロックをコメントとして強調している場合には、"#if 0"が ウィンドウのトップから"c_minlines"以内にある時にしか正しく動作しないことに注意 @@ -597,6 +646,39 @@ ANSIの定数はグループ"cConstant"で強調される。これには"NULL", 文法上エラーではないはずの'{'と'}'がエラーとして強調されてしまう場合には、 cErrInParen及びcErrInBracketの強調をリセットする。 +Cファイルで折り畳みをしたいなら、以下の行を'runtimepath'中の"after"ディレクト +リ内のファイルに加えるとよい。Unixなら~/.vim/after/syntax/c.vimに加えるとよい +だろう: > + syn region myFold start="{" end="}" transparent fold + syn sync fromstart + set foldmethod=syntax + + +CHILL *chill.vim* *chill-syntax* + +Chillの構文強調はCに似ている。設定に関しては|c.vim|を参照。それに加えて次のも +のがある: + +chill_syntax_for_h use Ch syntax for *.h files, instead of C or C++ +chill_space_errors like c_space_errors +chill_comment_string like c_comment_strings +chill_minlines like c_minlines + + +CHANGELOG *changelog.vim* *changelog-syntax* +ChangeLogでは行頭のスペースの強調できる。これをオフにしたいなら、次の行を +.vimrcに加える: > + let g:changelog_spacing_errors = 0 +これは次にchangelogファイルを編集するときから有効になる。バッファごとに設定し +たいなら"b:changelog_spacing_errors"が使える(構文ファイルを読み込む前に設定す +ること)。 + +例えばスペースをエラーとするかどうかなどの強調方法を変えることができる: > + :hi link ChangelogError Error +強調をやめるには: > + :hi link ChangelogError NONE +これは即座に有効になる。 + COBOL *cobol.vim* *cobol-syntax* @@ -618,6 +700,28 @@ ColdFusionには独自版のHTMLコメントが存在する。ColdFusionのコ ColdFusionの構文ファイルはHTML用構文ファイルに基づいている。 +CSH *csh.vim* *csh-syntax* + +これは"csh"という名前のシェルに対応している。いくつかのシステムでは実際には +tcshが使われていることに注意。 + +ファイルがcshかtcshかを判定するのは難しいことがよく知られている。いくつかのシ +ステムでは/bin/cshを/bin/tcshにシンボリックリンクしていることが、この判別をほ +ぼ不可能にしている。Vimが間違った判定をする場合には変数"filetype_csh"を設定す +ることが出来る。cshを使うには: > + + :let filetype_csh = "csh" + +tcshを使うには: > + + :let filetype_csh = "tcsh" + +拡張子がtcshであるか標準的なtcshファイル名(.tcshrc, tcsh.tcshrc, tcsh.login)を +持つスクリプトはすべてtcshファイル形式とされる。他のtcsh/cshスクリプトは、 +"filetype_csh"変数が存在しない限り、すべてtcshとみなされる。変数"filetype_csh" +が存在するならファイル形式はその値にセットされる。 + + CYNLIB *cynlib.vim* *cynlib-syntax* Cynlibファイルは、ハードウェアのモデリングとシミュレーションを行なうCynlibクラ @@ -639,12 +743,51 @@ cppファイルについても同様(この拡張子は通常Windowsだけで使 CWEB *cweb.vim* *cweb-syntax* -"*.i"にマッチする名前のファイルはProgress(訳注:ファイル形式)かCWEBである。自動 -検出が動作しない場合や、Progressを編集しないことが判っている場合には、起動設定 -ファイルvimrcに次のコマンドを書くことができる: > +"*.w"にマッチする名前のファイルのタイプはProgressかCWEBである。自動検出が動作 +しない場合や、Progressを編集しないことが判っている場合には、起動設定ファイル +vimrcに次のコマンドを書くことができる: > :let filetype_w = "cweb" +DESKTOP *desktop.vim* *desktop-syntax* + +この構文ファイルの本来の目的はfreedesktop.org標準: +http://pdx.freedesktop.org/Standards/の.desktopと.directoryファイルを構文強調 +することである。しかし実際にはこの標準を完全に実装したものはほとんどない。なの +でこれは全てのiniファイルを強調する。ただし次をvimrcファイルに書くことによって +厳格に標準に準拠した強調をさせることもできる: > + :let enforce_freedesktop_standard = 1 + + +DIRCOLORS *dircolors.vim* *dircolors-syntax* + +dircolorsユーティリティ用の強調定義には、Slackware GNU/Linuxディストリビューシ +ョン版のdircolorsに対応するためのオプションがある。このオプションはほとんどの +バージョンでは無視されるいくつかのキーワードを付け加える。しかしSlackwareシス +テムではdircolorsはこれらのキーワードを認め、処理に用いる。Slackwareキーワード +を有効化するには次を起動設定ファイルに付け加えればよい: > + let dircolors_is_slackware = 1 + + +DOCBOOK *docbk.vim* *docbk-syntax* *docbook* +DOCBOOK XML *docbkxml.vim* *docbkxml-syntax* +DOCBOOK SGML *docbksgml.vim* *docbksgml-syntax* + +DocBookファイルには2つの種類: SGMLとXMLがある。どちらのタイプを使用するのかを +指定するには変数"b:docbk_type"をセットする。Vimがそのタイプを認識できた場合に +はこれを自動的に行う。認識できなかった場合にはデフォルトはXMLになる。 +これを手動で設定するには: > + :let docbk_type = "sgml" +または: > + :let docbk_type = "xml" +これは構文ファイルを読み込む前に行う必要がある。しかし構文ファイルの読み込みは +込み入っている。より単純な方法はファイル形式を"docbkxml"または"docbksgml"にセ +ットすることである: > + :set filetype=docbksgml +または: > + :set filetype=docbkxml + + DOSバッチファイル *dosbatch.vim* *dosbatch-syntax* DOSバッチファイルの強調にはオプションが1つある。このオプションによりWindows @@ -702,11 +845,8 @@ eiffel_strictを設定すると"Current", "Void", "Result", "Precursor"そして れらが使用されれば警告を与えるようになる。 eiffel_pedanticを設定すると、Eiffelのスタイルガイドラインを相当に厳格に強制す -る。 -(キーワードの大小文字を決定する時代遅れの方法と同じくらい、大小文字の混在のよ -うな…訳不明) -(like arbitrary mixes of upper- and lowercase letters as well as outdated ways -to capitalize keywords). +る。(キーワードを大文字で書く時代遅れの方法と同様に、大小文字を任意にミックス +したようなものが補足される) "Current", "Void", "Result"そして"Precursor"の小文字版を使用するには、大小文字 を区別する強調方法を無効化する代わりに: > @@ -733,7 +873,6 @@ ERLANG *erlang.vim* *erlang-syntax* である。Erlangは大小文字を区別しデフォルトの拡張子は".erl"である。 キーワード強調を無効化するには、これを.vimrcに書き足す: > -If you want to disable keywords highlighting, put in your .vimrc: > :let erlang_keywords = 1 組み込み関数強調を無効化するには、これを.vimrcに書き足す: > :let erlang_functions = 1 @@ -789,24 +928,32 @@ Fortran 9xのソースコードには固定形式と自由形式が有る。形 新規にFortranのファイルを作成する場合には、構文ファイルは固定形式であると仮定 する。常に自由形式を使う場合には > :let fortran_free_source=1 -これを.vimrcでコマンド:syntaxを実行する前に行なう必要がある。 +これを.vimrcでコマンド:syntaxを実行する前に行なう必要がある。常に固定形式を使 +うには > + :let fortran_fixed_source=1 +これも.vimrcでコマンド:syntaxを実行する前に行う必要がある。 ソースコードの形式がファイル拡張子によって決定できる場合には、ftpluginファイル の1つでfortran_free_sourceを設定すると便利になる。ftpluginファイルについての詳 細は|ftplugin|を参照のこと。例えば、拡張子.f90を持つファイルについては全て自由 -形式として扱い、それ以外のもは固定形式とする場合には、次のコードをftpluginファ -イルに記述すれば良い。 > +形式として扱い、それ以外のものは固定形式とする場合には、次のコードをftpluginフ +ァイルに記述すれば良い。 > let s:extfname = expand("%:e") if s:extfname ==? "f90" let fortran_free_source=1 + unlet! fortran_fixed_source else + let fortran_fixed_source=1 unlet! fortran_free_source endif +これは.vimrcで"syntax on"より前に"filetype plugin indent on"が書かれていないと +機能しないことに注意。 既存のFortranファイルを編集する時には、変数fortran_free_sourceが設定されていれ -ば構文ファイルは自由形式のソースであると仮定する。設定されていないときには、 -ファイルの先頭25行の行頭5カラムを調べて、その形式が固定なのか自由なのかを決定 -しようと試みる。自由形式コードの兆候が見られない場合には、ファイルは固定形式 +ば構文ファイルは自由形式のソースであると仮定し、変数fortran_fixed_sourceが設定 +されていれば固定形式のソースであると仮定する。どちらも設定されていないときには +、ファイルの先頭25行の行頭5カラムを調べて、その形式が固定なのか自由なのかを決 +定しようと試みる。自由形式コードの兆候が見られない場合には、ファイルは固定形式 コードとして取り扱われる。このアルゴリズムはほとんどのケースにおいて有効に機能 する。しかしいつかのケース、例えば先頭25行以上が行コメントで占められているよう なファイルでは、構文ファイルが固定形式コードであると誤った判断をしてしまうだろ @@ -823,9 +970,8 @@ Fortranファイル内のタブ文字 ~ このように.vimrcで設定すれば良い。タブ文字を使う場合には残念ながら、構文ファイ ルによって不正な余白を検出することができなくなる。 -Fortranファイルの構文による強調 ~ -foldmethod=syntax(訳注:構文による折畳)を使用したいならば、まず変数fortran_fold -を > +Fortranファイルの構文による折畳み ~ +foldmethod=syntaxを使用したいならば、まず変数fortran_foldを > :let fortran_fold=1 このようなコマンドで設定しなければならない。これにより構文ファイルはプログラム 単位の領域、プログラム命令文で始まるメインプログラム、サブルーチン、関数、 @@ -846,7 +992,6 @@ foldmethod=syntaxを設定してある時に、Vimはファイルを折畳む。 より正確なFortranの構文 ~ 変数fortran_more_preciseを > -If you set the variable fortran_more_precise with a command such as > :let fortran_more_precise=1 このようなコマンドで設定した場合には、構文強調がより正確になるが動作は遅くな る。とりわけ、do、goto、そして算術if命令文に使用される命令ラベルが、do、if、 @@ -859,12 +1004,11 @@ selectもしくはforall構造の終端で使用される名前として認識 f77の拡張機能を使うときには、それがg77(GNU Fortran)を含む多くのコンパイラがサ ポートしている一般的な、do/enddoループ、do/whileループ、自由形式ソースコード、 拡張機能であるならば、恐らくデフォルトの強調で満足するだろう。しかしながら、拡 -張機能を使用せずに厳密なf77を使用する場合や、自由形式やMIL STD 1753(訳注:MIL -STDはアメリカ軍の定める標準規格でその1753号の意味)の拡張を用いない場合には問題 -がある。そのような時に方言としてf77を指定することには、SUMのようなf9xの持つ関 -数として認識されてしまう名前が、ユーザ変数として認識され強調されないという利点 -がある。また廃れてしまったASSIGN命令文のような構造も修正用TODOとしては強調され -なくなり、固定形式が仮定されるようになる。 +張機能を使用せずに厳密なf77を使用する場合や、自由形式やMIL STD 1753の拡張を用 +いない場合には問題がある。そのような時に方言としてf77を指定することには、SUMの +ようなf9xの持つ関数として認識されてしまう名前が、ユーザ変数として認識され強調 +されないという利点がある。また廃れてしまったASSIGN命令文のような構造も修正用 +TODOとしては強調されなくなり、固定形式が仮定されるようになる。 elf90やFを使う場合には適切な方言を設定する。それにより、これらの方言においては 除外されるf90の機能はtodoとして強調され、これらの方言で必要とされる自由形式の @@ -885,7 +1029,9 @@ fortran_dialectへ設定した場合にはそれは無視される。 let fortran_dialect="elf" else unlet! fortran_dialect - endif + endif +これは.vimrcで"syntax on"より前に"filetype plugin indent on"が書かれていないと +機能しないことに注意。 拡張子が方言を一意に決定できない場合には、もっと良い制御方法が必要になる。各 ファイルの先頭3行以内にコメントで"fortran_dialect=xx"という命令を書けば方言の @@ -898,9 +1044,8 @@ fortran_dialectへ設定した場合にはそれは無視される。 先される。 制限事項 ~ -丸カッコチェックは閉じカッコが足りないことを捕捉できない。穿孔(訳注:パンチカー -ド?)文字列は認識できない。幾つかのキーワードはFortran90の予約語ではないので誤 -って強調される。 +丸カッコチェックは、閉じカッコの不足については捕捉できない。ホレリス定数は認識 +されない。幾つかのキーワードはFortran90の予約語ではないので誤って強調される。 Fortranに関するその他の情報は|fortran-indent|や|fortran-plugin|を参照。 @@ -949,6 +1094,51 @@ constains節に加えれば、正しく強調されるようになる。 で強調される。 +GROFF *groff.vim* *groff-syntax* + +groff構文ファイルは|nroff.vim|のラッパーであり、使用例と設定例についてはそこの +下書かれている注意を参照。このラッパーの目的は、モードラインか個人用のファイル +定義ファイル(|filetype.txt|参照)からファイル形式をセットすることにより、groff +構文拡張を設定することである。 + + +HASKELL *haskell.vim* *lhaskell.vim* *haskell-syntax* + +Haskell構文ファイルはプレーンHaskellコードliterate Haskellコード両方をサポート +している。後者はBirdスタイルとTeXスタイル両方に対応している。Haskell用の構文強 +調はCプリプロセッサ命令も強調できる。 + +区切り文字も強調したいなら(明るい背景色を使っているなら便利)、次を.vimrcに書き +足す: > + :let hs_highlight_delimiters = 1 +TrueとFalseを通常の識別子と区別してキーワードとして扱うにはこれを書き足す: > + :let hs_highlight_boolean = 1 +プリミティブ型の名前をキーワードして扱うには: > + :let hs_highlight_types = 1 +より比較的一般的な型の名前をキーワードとして扱うには: > + :let hs_highlight_more_types = 1 +デバッグ関数の名前を強調したいなら、これを.vimrcに書き足す: > + :let hs_highlight_debug = 1 + +Haskell用の構文強調はCプリプロセッサ命令も強調し、#で始まるが命令として有効で +ない行をエラーとして警告する。Haskellの演算子の構文は#で始まることもあるため、 +これらが干渉する。これらをエラーでなく演算子として強調したいなら、次を.vimrcに +書く: > + :let hs_allow_hash_operator = 1 + +literate Haskellコード用の構文強調はファイルがTeXマークアップを含んでいるかど +うか、それに応じてTeX要素を強調するかどうかを自動的に推測しようとする。 +.vimrcに次のような行を書くと、これをグローバルに上書きすることができる > + :let lhs_markup = none +と書くとまったく強調しなくする。または > + :let lhs_markup = tex +と書くと常にTeXマークアップを強調するように強制する。より柔軟に、この変数のバ +ッファローカル版を使うことも出来る。例. > + :let b:lhs_markup = tex +と書くと特定のバッファにTeX強調させるようにする。これはそのバッファに構文強調 +を有効化するかファイルを読み込む前に設定しなければならない。 + + HTML *html.vim* *html-syntax* HTMLファイルのタグ用の構文ファイルは以下のように動作する。 @@ -981,89 +1171,90 @@ HTMLファイルのタグ用の構文ファイルは以下のように動作す - htmlTitle for titles - htmlH1 - htmlH6 for headings -To make this redefinition work you must redefine them all with the exception -of the last two (htmlTitle and htmlH[1-6], which are optional) and define the -following variable in your vimrc (this is due to the order in which the files -are read during initialization) > +この再定義が機能するためには最後の2つを除くすべてを再定義しなければならない。 +最後の2つ、htmlTitleとhtmlH[1-6]は任意である。そして次の変数をvimrcで設定しな +ければならない(初期化の際に読み込まれるファイルの順序のせい)。 > :let html_my_rendering=1 -If you'd like to see an example download mysyntax.vim at -http://www.fleiner.com/vim/mysyntax.vim +この例については以下からmysyntax.vimをダウンロードすること。 +http://www.fleiner.com/vim/download.html -You can also disable this rendering by adding the following line to your -vimrc file: > +次の行をvimrcに加えればこの描画を無効にできる: > :let html_no_rendering=1 -HTML comments are rather special (see an HTML reference document for the -details), and the syntax coloring scheme will highlight all errors. -However, if you prefer to use the wrong style (starts with <!-- and -ends with --!>) you can define > +HTMLコメントはむしろ特別で(詳細はHTMLリファレンスドキュメントを参照)、すべての +エラーを強調する。しかしその間違ったスタイル(<!--で始まり--!>で終わる)を使いた +いならこれを定義する > :let html_wrong_comments=1 -JavaScript and Visual Basic embedded inside HTML documents are highlighted as -'Special' with statements, comments, strings and so on colored as in standard -programming languages. Note that only JavaScript and Visual Basic are currently -supported, no other scripting language has been added yet. +HTMLドキュメント中に埋め込まれたJavaScriptやVisual Basicについては、文は +'Special'で強調され、コメントや文字列などは標準のプログラミング言語と同じよう +に色づけされる。現在のところサポートされているのはJapaScriptとVisual Basicだけ +であり、他のスクリプト言語はまだ加えられていない。 -Embedded and inlined cascading style sheets (CSS) are highlighted too. +カスケードスタイルシート(CSS)の埋め込みとインラインも強調される。 -There are several html preprocessor languages out there. html.vim has been -written such that it should be trivial to include it. To do so add the -following two lines to the syntax coloring file for that language -(the example comes from the asp.vim file): +htmlプロセッサ言語は複数ある。html.vimはインクルードしやすいように簡素に書かれ +ている。html.vimをインクルードするには以下の2行をその言語用の構文ファイルに書 +き足すこと(この例はasp.vimからとった): runtime! syntax/html.vim syn cluster htmlPreproc add=asp -Now you just need to make sure that you add all regions that contain -the preprocessor language to the cluster htmlPreproc. +そしてプリプロセッサ言語を含むすべての領域をクラスタhtmlPreprocに加えればよい。 HTML/OS (by Aestiva) *htmlos.vim* *htmlos-syntax* -The coloring scheme for HTML/OS works as follows: +HTML/OS用のカラースキームは以下のように機能する: -Functions and variable names are the same color by default, because VIM -doesn't specify different colors for Functions and Identifiers. To change -this (which is recommended if you want function names to be recognizable in a -different color) you need to add the following line to either your ~/.vimrc: > +デフォルトでは関数名と変数名は同じである。これは、Vimは関数と識別子に異なる色 +を指定しないためである。これを変えるには(関数名を違う色にしたいならこうすると +よい)次の行を~/.vimrcに書き加える: > :hi Function term=underline cterm=bold ctermfg=LightGray -Of course, the ctermfg can be a different color if you choose. +もちろん好みに応じてctermfgは違う色にしてよい。 -Another issues that HTML/OS runs into is that there is no special filetype to -signify that it is a file with HTML/OS coding. You can change this by opening -a file and turning on HTML/OS syntax by doing the following: > +HTML/OSに関するもう1つの問題は、ファイルがHTML/OSコーディングであることを示す +特別なファイル形式が存在しないことである。そのため、ファイルを開いた後に次のよ +うにしてHTML/OS構文をオンにしなければならない: > :set syntax=htmlos -Lastly, it should be noted that the opening and closing characters to begin a -block of HTML/OS code can either be << or [[ and >> or ]], respectively. +HTML/OSコードのブロックの開始と終了を示す文字は、それぞれ<<または[[, +>>または]]のどちらであってもよい。 IA64 *ia64.vim* *intel-itanium* *ia64-syntax* -Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for -how to recognize this filetype. - -To have *.inc files be recognized as IA64, add this to your .vimrc file: > +Intel Itanium 64アセンブリ言語用の強調。このファイル形式を認識させる方法につい +ては|asm.vim|を参照。 +*.incファイルをIA64と認識させるには次を.vimrcに書き足す: > :let g:filetype_inc = "ia64" INFORM *inform.vim* *inform-syntax* -Inform highlighting includes symbols provided by the Inform Library, as -most programs make extensive use of it. If do not wish Library symbols -to be highlighted add this to your vim startup: > +Inform構文強調はInform Libraryによって提供されるシンボルを含んでいる。ほとんど +のプログラムがそれを利用しているためである。Libraryのシンボルを強調させたくな +いなら、次をvim初期化ファイルに加える: > :let inform_highlight_simple=1 -By default it is assumed that Inform programs are Z-machine targetted, -and highlights Z-machine assembly language symbols appropriately. If -you intend your program to be targetted to a Glulx/Glk environment you -need to add this to your startup sequence: > +デフォルトではInformプログラムはZ-machineターゲットと仮定され、Z-machineアセン +ブリ言語シンボルが適切に強調される。もしプログラムがGlulx/Glk環境をターゲット +としたものなら、次を初期化ファイルに加える: > :let inform_highlight_glulx=1 -This will highlight Glulx opcodes instead, and also adds glk() to the -set of highlighted system functions. +こうすると代わりにGlulxオペコードを強調し、glk()をシステム関数として強調する。 + +Informコンパイラはある古いキーワードをエラーとみなす。それらのキーワードは通常 +エラーとして強調される。これをエラーとして強調するのをやめるには、次を初期化フ +ァイルに加える: > + :let inform_suppress_obsolete=1 + +デフォルトでは強調される言語機能はコンパイラのバージョン6.30とライブラリのバー +ジョン6.11に従う。これより古いInform開発環境を使っているなら、次の行を初期化フ +ァイルに加えるとよいかもしれない: > + :let inform_highlight_old=1 JAVA *java.vim* *java-syntax* @@ -1081,10 +1272,10 @@ highlight them use: > :let java_highlight_java_lang_ids=1 You can also highlight identifiers of most standard java packages if you -download the script at http://www.fleiner.com/vim/syntax/javaid.vim +download the javaid.vim script at http://www.fleiner.com/vim/download.html. If you prefer to only highlight identifiers of a certain package, say java.io use the following: > - :let java_highligh_java_io=1 + :let java_highlight_java_io=1 Check the javaid.vim file for a list of all the packages that are supported. Function names are not highlighted, as the way to find functions depends on @@ -1094,7 +1285,7 @@ functions: If you write function declarations that are always indented by either a tab, 8 spaces or 2 spaces you may want to set > :let java_highlight_functions="indent" -However, if you follow the java guidlines about how functions and classes are +However, if you follow the Java guidelines about how functions and classes are supposed to be named (with respect to upper and lowercase), use > :let java_highlight_functions="style" If both options do not work for you, but you would still want function @@ -1115,7 +1306,7 @@ which are used for the statement itself, special characters used in debug strings, strings, boolean constants and types (this, super) respectively. I have opted to chose another background for those statements. -In order to help you to write code that can be easely ported between +In order to help you to write code that can be easily ported between java and C++, all C++ keywords are marked as error in a java program. However, if you use them regularly, you may want to define the following variable in your .vimrc file: > @@ -1161,50 +1352,124 @@ number is that redrawing can become slow. LACE *lace.vim* *lace-syntax* -Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the -style guide lines are not. If you prefer case insensitive highlighting, just -define the vim variable 'lace_case_insensitive' in your startup file: > +Lace (Language for Assembly of Classes in Eiffel)は大文字・小文字を無視する。 +しかしスタイルガイドラインはそうでない。大文字・小文字を区別して強調させたいな +ら、vim変数'lace_case_insensitive'を初期化ファイル中で定義すればよい: > :let lace_case_insensitive=1 LEX *lex.vim* *lex-syntax* -Lex uses brute-force synchronizing as the "^%%$" section delimiter -gives no clue as to what section follows. Consequently, the value for > +"^%%$"セクションデリミタが、その後にどんなセクションが続くかの手がかりを与えな +いため、Lexはブルートフォースなシンクロナイズを行う。それゆえ(巨大なlexファイ +ルなどで)同期の問題が起こる場合には: > :syn sync minlines=300 -may be changed by the user if s/he is experiencing synchronization -difficulties (such as may happen with large lex files). +の値を変更するとよいかもしれない。 LITE *lite.vim* *lite-syntax* -There are two options for the lite syntax highlighting. +lite構文強調には2つのオプションがある。 -If you like SQL syntax highligthing inside Strings, use this: > +文字列中でSQL構文強調を行ってほしいならこうする: > :let lite_sql_query = 1 -For syncing, minlines defaults to 100. If you prefer another value, you can -set "lite_minlines" to the value you desire. Example: > +シンクロナイズの最小行数はデフォルトで100になっている。他の値に変えたいなら +"lite_minlines"をセットすればよい。例: > :let lite_minlines = 200 +LPC *lpc.vim* *lpc-syntax* + +LPCはシンプルでメモリ効率的な言語、Lars Pensj| Cの略である。LPCのファイル名は +通常*.cである。これらのファイルをLPCと認識するとCプログラムのみを書くユーザの +迷惑になる。LPC構文を使用したいなら、.vimrcでこの変数をセットすること: > + + :let lpc_syntax_for_c = 1 + +これでも適切に動作しないCまたはLPCのファイルに対してはモードラインを使うこと。 +LPCファイルには: + + // vim:set ft=lpc: + +LPCと認識されてしまうCファイルには: + + // vim:set ft=c: + +変数をセットしたくないなら全てのLPCファイルでモードラインを使うこと。 + +LPCには複数の実装がある。我々はもっとも広く使われているものをサポートしたいと +思っている。デフォルトのLPC文法はMudOSシリーズ用である。MudOS v22以前を使って +いるなら、次をセットすることによりsensible モディファイヤをオフにし、v22以降の +新しいefunを無効にするとよい。MudOSの最新版を使っているときはこの変数をセット +しないこと: > + + :let lpc_pre_v22 = 1 + +LPCのLpMud 3.2シリーズには: > + + :let lpc_compat_32 = 1 + +LPCのLPC4シリーズには: > + + :let lpc_use_lpc4_syntax = 1 + +LPCのuLPCシリーズには: +uLPCはPike用に開発されている。なのでPike構文を代わりに使い、ソースファイルの名 +前を.pikeとすること。 + + +LUA *lua.vim* *lua-syntax* + +この構文ファイルはLua 4.0とLua 5.0(デフォルト)用に使える。Lua 4.0でプログラミ +ングしているなら、こうする: > + + :let lua_version = 4 + +変数lua_versionが存在しない場合には5にセットされる。 + + +MAIL *mail.vim* + +Vimはemailの標準的な要素(ヘッダ、シグネチャ、引用文、URL / emailアドレス)の全 +てを強調する。標準的な慣習に従い、シグネチャは、"--"とそれに続く任意個の空白、そ +して改行のみからなる行で始まる。 + +Vimは']', '}', '|', '>'で始まる行または'>'が続く単語を引用文とみなす。 +引用文中のヘッダとシグネチャについては、テキストが'>'(1個のスペースが続いても +よい)で引用された場合のみ強調する。 + +デフォルトではmail.vimは先頭表示行の100行前までの構文をシンクロナイズさせる。 +遅いマシンを使っていて、一般的に短いヘッダのemailを扱っているなら、これをより +小さい値に変えることが出来る: > + + :let mail_minlines = 30 + + +MAKE *make.vim* *make-syntax* + +Makefileでは通常エラーを見つけやすくするためにコマンドが強調される。しかし、こ +れは色が多すぎるかもしれない。この機能をオフにするにはこうする: > + + :let make_no_commands = 1 + + MAPLE *maple.vim* *maple-syntax* -Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language -supports many packages of functions which are selectively loaded by the user. -The standard set of packages' functions as supplied in Maple V release 4 may be -highlighted at the user's discretion. Users may place in their .vimrc file: > +Waterloo Maple IncによるMaple Vは記号代数をサポートしている。その言語はユーザ +によって選択的にロードされる関数のパッケージをたくさんサポートしている。Maple +V release 4で供給される標準的なパッケージセットの関数がユーザの判断によって強 +調される。ユーザは.vimrcに以下を書くと、全てのパッケージ関数が強調される: > :let mvpkg_all= 1 -to get all package functions highlighted, or users may select any subset by -choosing a variable/package from the table below and setting that variable to -1, also in their .vimrc file (prior to sourcing -$VIMRUNTIME/syntax/syntax.vim). +あるいは以下の表から任意のサブセット変数/パッケージを選んで.vimrcファイル中で +その変数を1にセットしてもよい($VIMRUNTIME/syntax/syntax.vimを読み込む前に行う +必要がある)。 - Table of Maple V Package Function Selectors > + Maple V パッケージ関数選択肢の表 > mv_DEtools mv_genfunc mv_networks mv_process mv_Galois mv_geometry mv_numapprox mv_simplex mv_GaussInt mv_grobner mv_numtheory mv_stats @@ -1217,338 +1482,390 @@ $VIMRUNTIME/syntax/syntax.vim). MOO *moo.vim* *moo-syntax* -If you use C-style comments inside expressions and find it mangles your -highlighting, you may want to use extended (slow!) matches for C-style -comments: > +式の中でCスタイルのコメントを使っていて、それが強調を乱している場合は、Cスタイ +ル用の拡張マッチ(これは遅い!)を使うことが出来る: > :let moo_extended_cstyle_comments = 1 -To disable highlighting of pronoun substitution patterns inside strings: > +文字列中の代名詞置換パターンの強調を無効化したいなら: > :let moo_no_pronoun_sub = 1 -To disable highlighting of the regular expression operator '%|', and matching -'%(' and '%)' inside strings: > +正規表現演算子'%l'の強調と文字列中の'%('と'%)'のマッチを無効化したいなら: > :let moo_no_regexp = 1 -Unmatched double quotes can be recognized and highlighted as errors: > +対応していないダブルクォートを認識してエラーとして強調することが出来る: > :let moo_unmatched_quotes = 1 -To highlight builtin properties (.name, .location, .programmer etc.): > +組み込みプロパティ(.name, .location, .programmerなど)を強調するには :> :let moo_builtin_properties = 1 -Unknown builtin functions can be recognized and highlighted as errors. If you -use this option, add your own extensions to the mooKnownBuiltinFunction group. -To enable this option: > +未知の組み込み関数を認識してエラーとして強調することが出来る。このオプションを +使うなら、mooKnownBuiltinFunctionグループに自分自身の拡張を加えること。このオ +プションを有効化するには: > :let moo_unknown_builtin_functions = 1 -An example of adding sprintf() to the list of known builtin functions: > +既知の組み込み関数のリストにsprintf()を加える例: > :syn keyword mooKnownBuiltinFunction sprintf contained MSQL *msql.vim* *msql-syntax* -There are two options for the msql syntax highlighting. +msql構文強調には2つのオプションがある。 -If you like SQL syntax highligthing inside Strings, use this: > +文字列中でSQL構文強調をさせたいならこうする: > :let msql_sql_query = 1 -For syncing, minlines defaults to 100. If you prefer another value, you can -set "msql_minlines" to the value you desire. Example: > +シンクロナイズは、minlinesはデフォルトで100になっている。他の値にしたいなら +"msql_minlines"の望む値にすればよい。例: > :let msql_minlines = 200 NCF *ncf.vim* *ncf-syntax* -There is one option for NCF syntax highlighting. +NCF構文強調には1つのオプションがある。 -If you want to have unrecognized (by ncf.vim) statements highlighted as -errors, use this: > +ncf.vimによって認識されない文をエラーとして強調させたいならこうする: > :let ncf_highlight_unknowns = 1 -If you don't want to highlight these errors, leave it unset. +これらをエラーとして強調させたくないなら、この変数をセットしないでおく。 NROFF *nroff.vim* *nroff-syntax* -To mark trailing spaces as an error, use this: > +nroff構文ファイルはそのままでAT&T n/troffに対応している。構文ファイルに含まれ +ているGNU groff拡張機能を使うには、それを有効化する必要がある。 + +例えば、LinuxとBSDディストリビューションは、デフォルトではテキスト処理パッケー +ジとしてgroffを使う。groff用の拡張構文強調機能を有効化するには、次のオプション +を初期化ファイルに加える: > + + :let b:nroff_is_groff = 1 + +groffは、Solarisでまだ使われているかもしれない古いAT&T n/troffとは異なる。 +groffのマクロとリクエスト名は2文字以上の長さであってもよく、言語プリミティブに +拡張がされている。例えば、AT&T troffではリクエスト\(yrを使い、2桁の数で年にア +クセスする。groffでは互換性のために同じリクエストを使うことも出来るし、または +groffネイティブの構文,\[yr]を使うことも出来る。さらに、\[year]として4桁の年を +直接使うことも出来る。マクロリクエストは2文字以上の長さであってもよい。例えば +、GNU mmはverbatim環境を作るのに".VERBON"と".VERBOFF"というリクエストを受けつ +ける。 + +g/troffによって得られる最良の整形された出力を得るには、スペースと句読点に関す +るいくつかの単純なルールに従うべきである。 + +1. 行の末尾に空のスペースを置かないこと + +2. 文末のピリオド、エクスクラメーションマークなどの後にはちょうど1個のスペース + を置くこと。 - :let nroff_space_errors = 1 +3. 後述の理由により、全てのピリオドの後に改行(carriage return)を置くとよい。 + +これらの妙なtipsの理由は、g/n/troffが改行に、これらのルールに従わないとすぐに +混乱してしまうアルゴリズムを使っているためである。 + + +troffはTeXと違い、段落ごとでなく行ごとにテキストを書き込む。さらに、glueや +stretchの概念を持たず、入力に水平、垂直の空白があると全てそのまま出力される。 + +それゆえ、最終的なドキュメントで意図する以上の空白を文と文の間にはさまないよう +に注意すること。この理由のため、全ての句読点記号の後すぐに改行を入れるという習 +慣がある。最終的に処理された出力が「一様な」テキストになってほしければ、入力の +テキストで正しくスペースを置いておく必要がある。行末の空白と句読点の後の2個以 +上の空白をエラーとして強調したいならこうする: > + + :let nroff_space_errors = 1 + +正しい活字組みと干渉するかもしれないが、余分な空白や他のエラーを検出するもう1 +つの方法は、設定ファイル中で構文グループ"nroffDefinition"と"nroffDefSpecial"に +目立つ強調定義を定義することである。例: > + + hi def nroffDefinition term=italic cterm=italic gui=reverse + hi def nroffDefSpecial term=italic,bold cterm=italic,bold + \ gui=reverse,bold + +ソースファイル中のプリプロセッサのエントリをセクションマーカーと同じくらい容易 +に表示させたいなら、.vimrc中で次のオプションを有効化する: > + + let b:preprocs_as_sections = 1 + +同様に、構文ファイルはmsパッケージ中の拡張段落マクロ(.XP)用の余分な段落マーカー +も含んでいる。 + +最後に、構文ファイル|groff.vim|が存在する。これはデフォルトでfile basisとグロ +ーバルの両方でgroff構文強調することができる。 + + +OCAML *ocaml.vim* *ocaml-syntax* + +OCaml構文ファイルは以下の拡張子を持つファイルに対応している: .ml, .mli, .mll +.mly。以下の変数をセットすると、標準的OCaml構文からcamlp4プリプロセッサでサポ +ートされている修正構文に切り替えることが出来る: > + + :let ocaml_revised = 1 + +以下の変数をセットすると"end"をエラーとして強調するのをやめることが出来る。こ +れはVimがシンクロナイズできないほど長い構造を含むソースのとき便利である: > + + :let ocaml_noend_error = 1 PAPP *papp.vim* *papp-syntax* -The PApp syntax file handles .papp files and, to a lesser extend, .pxml -and .pxsl files which are all a mixture of perl/xml/html/other using xml -as the top-level file format. By default everything inside phtml or pxml -sections is treated as a string with embedded preprocessor commands. If -you set the variable: > +PApp構文ファイルは.pappファイルと、その小さな拡張、トップレベルのファイルフォ +ーマットとしてxmlを用いたperl/xml/html/その他の混合である.pxml, .pxslファイル +を扱う。デフォルトでは、phtmlやpxmlセクションの内側の全ては埋め込みプリプロセ +ッサコマンドつきの文字列として扱われる。次の変数を初期化ファイルで設定すると +phtmlセクションの内側のhtmlコードを構文強調しようとする: > :let papp_include_html=1 -in your startup file it will try to syntax-hilight html code inside phtml -sections, but this is relatively slow and much too colourful to be able to -edit sensibly ;) +しかしこれは比較的遅く、実用的に編集するにはカラフルすぎる。 -The newest version of the papp.vim syntax file can usually be found at -http://papp.plan9.de. +構文ファイルpapp.vimの最新版は、通常以下で得られる。 +http://papp.plan9.de PASCAL *pascal.vim* *pascal-syntax* -Files matching "*.p" could be Progress or Pascal. If the automatic detection -doesn't work for you, or you don't edit Progress at all, use this in your -startup vimrc: > +"*.p"にマッチするファイルのタイプはProgressかPascalである。自動判別が機能しな +いなら、またはProgressファイルを一切編集しないとわかっているなら、これをvimrc +ファイルに書くといい: > :let filetype_p = "pascal" -The Pascal syntax file has been extended to take into account some extensions -provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler. -Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are -enabled. If you prefer to stick with the standard Pascal keywords, add the -following line to your startup file: > +Pascal構文ファイルはTurbo Pascal, Free Pascal CompilerとGNU Pascal Compiler +で提供される拡張に対応するための拡張が施されてきた。Delphiのキーワードもサポー +トされている。デフォルトではTurbo Pascal 7.0の機能が有効化されている。標準的な +Pascalのキーワードだけを使いたいなら、次の行を初期化ファイルに加えること: > :let pascal_traditional=1 -To switch on Delphi specific constructions (such as one-line comments, -keywords, etc): > +Delphi固有の構文(1行コメント、キーワード等)を有効化したいなら: > :let pascal_delphi=1 -The option pascal_symbol_operator controls whether symbol operators such as +, -*, .., etc. are displayed using the Operator color or not. To colorize symbol -operators, add the following line to your startup file: > +オプションpascal_symbol_operatorは+, *などのような演算子記号がOperatorの色を使 +って表示されるかどうかをコントロールする。演算子記号を色づけするなら、次の行を +初期化ファイルに加えること: > :let pascal_symbol_operator=1 -Some functions are highlighted by default. To switch it off: > +いくつかの関数はデフォルトで強調される。これをオフにするには: > :let pascal_no_functions=1 -Furthermore, there are specific variable for some compiler. Besides -pascal_delphi, there are pascal_gpc and pascal_fpc. Default extensions try to -match Turbo Pascal. > +さらに、いくつかのコンパイラ用に個別の変数がある。pascal_delphi, +pascal_gpc, pascal_fpcがある。デフォルトの拡張はTurbo Pascalに合うようになって +いる。 > :let pascal_gpc=1 -or > +または > :let pascal_fpc=1 -To ensure that strings are defined on a single line, you can define the -pascal_one_line_string variable. > +文字列が1行で定義されるものとするなら、変数pascal_one_line_string variableを定 +義するとよい。 > :let pascal_one_line_string=1 -If you dislike <Tab> chars, you can set the pascal_no_tabs variable. Tabs -will be highlighted as Error. > +タブ文字が好きでないなら、変数pascal_no_tabsをセットするとよい。するとタブがエ +ラーとして強調される。 > :let pascal_no_tabs=1 - PERL *perl.vim* *perl-syntax* -There are a number of possible options to the perl syntax highlighting. +perl用の構文強調にはたくさんのオプションがある。 -If you use POD files or POD segments, you might: > +PODファイルやPODセグメントを使っているなら、こうするとよいかもしれない: > - :let perl_include_POD = 1 + :let perl_include_pod = 1 -To handle package references in variable and function names differently from -the rest of the name (like 'PkgName::' in '$PkgName::VarName'): > +変数名と関数名中のパッケージ参照('$PkgName::VarName'中の'PkgName::'のような)を +他の名前と区別したいなら: > :let perl_want_scope_in_variables = 1 -If you want complex things like '@{${"foo"}}' to be parsed: > +'@{${"foo"}}'のように複雑なものをパースさせたいなら: > :let perl_extended_vars = 1 -The coloring strings can be changed. By default strings and qq friends will be -highlighted like the first line. If you set the variable -perl_string_as_statement, it will be highlighted as in the second line. +文字列の色づけは変更できる。デフォルトでは文字列とqq friendsは第1行と同じよう +に強調される。変数perl_string_as_statementをセットすると第2行のように強調され +る。 "hello world!"; qq|hello world|; - ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) - S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^^N (let perl_string_as_statement) + ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) + S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN (let perl_string_as_statement) (^ = perlString, S = perlStatement, N = None at all) -The syncing has 3 options. The first two switch off some triggering of -synchronization and should only be needed in case it fails to work properly. -If while scrolling all of a sudden the whole screen changes color completely -then you should try and switch off one of those. Let me know if you can figure -out the line that causes the mistake. +シンクロナイズには3つのオプションがある。最初の2つは、シンクロナイズのトリガー +の一部をオフにするもので、強調が適切に機能しないときのみ必要になる。スクロール +中に突然スクリーン全体の色がすっかり変わってしまったらこれらのうち1つをオフに +してみること。その誤りを引き起こした行を特定できるなら、それを知らせてくださ +い。 -One triggers on "^\s*sub\s*" and the other on "^[$@%]" more or less. > +1つのトリガーは"^\s*sub\s*"に関するもので、もう1つはほぼ"^[$@%]"に関するもので +ある。 > :let perl_no_sync_on_sub :let perl_no_sync_on_global_var -Below you can set the maximum distance VIM should look for starting points for -its attempts in syntax highlighting. > +以下のようにして、どこから構文強調を始めるかの最大距離を設定できる: > :let perl_sync_dist = 100 -For the "<<xxx" construct (here Documents), Vim can check for any value of -"xxx". So currently Vim can highlight here Documents properly. -(訳注:原文では「取り扱えない」となっていますが、6.x現在では取り扱えるようにな -りました。) - -If you want to use folding with perl, set perl_fold: > +perlで折りたたみを使いたいならperl_foldをセットすること: > :let perl_fold = 1 PHP3 and PHP4 *php.vim* *php3.vim* *php-syntax* *php3-syntax* -[note: previously this was called "php3", but since it now also supports php4 -it has been renamed to "php"] +[注意: これは以前は"php3"と呼ばれていた。しかし現在はphp4もサポートしているの +で"php"と名前が変更された] -There are the following options for the php syntax highlighting. +php用の構文強調には以下のオプションがある。 -If you like SQL syntax hightlighting inside Strings: > +文字列中でSQL構文強調を行いたいなら: > let php_sql_query = 1 -For highlighting the Baselib methods: > +Baselibメソッドの強調を行いたいなら: > let php_baselib = 1 -Enable HTML syntax highlighting inside strings: > +文字列中でHTML構文強調を行いたいなら: > let php_htmlInStrings = 1 -Using the old colorstyle: > +古いカラースタイルを使いたいなら: > let php_oldStyle = 1 -Enable highlighting ASP-style short tags: > +ASPスタイルのショートタグを有効化したいなら: > let php_asp_tags = 1 -Disable short tags: > +ショートタグを無効化したいなら: > let php_noShortTags = 1 -For highlighting parent error ] or ): > +] や ) の対応エラーを強調したいなら: > let php_parent_error_close = 1 -For skipping an php end tag, if there exists an open ( or [ without a closing -one: > +対応する閉じ括弧がない開き括弧( や [が存在する場合、php終了タグをスキップさせ +たいなら: > let php_parent_error_open = 1 -Enable folding for classes and functions: > +クラスや関数の折り畳みを有効化するには: > let php_folding = 1 -Selecting syncing method: > +シンクロナイズ方法を選ぶには: > let php_sync_method = x -x = -1 to sync by search (default), -x > 0 to sync at least x lines backwards, -x = 0 to sync from start. +x = -1 で検索によるシンクロナイズ(デフォルト) +x > 0 少なくともx行上までシンクロナイズ +x = 0 最初からシンクロナイズ PPWIZARD *ppwiz.vim* *ppwiz-syntax* -PPWizard is a preprocessor for HTML and OS/2 INF files +PPWizardはHTMLとOS/2 INFファイル用のプリプロセッサである。 -This syntax file has the options: +構文ファイルは以下のオプションを持つ: -- ppwiz_highlight_defs : determines highlighting mode for PPWizard's - definitions. Possible values are +- ppwiz_highlight_defs : PPWizardの定義についての強調モードを決める。とりうる + 値は - ppwiz_highlight_defs = 1 : PPWizard #define statements retain the - colors of their contents (e. g. PPWizard macros and variables) + ppwiz_highlight_defs = 1 : #define 文においてその内容の色を保つ(例. PPWizard + マクロと変数) - ppwiz_highlight_defs = 2 : preprocessor #define and #evaluate - statements are shown in a single color with the exception of line - continuation symbols + ppwiz_highlight_defs = 2 : 行継続記号を除き、#defineと#evaluate文が単一の色 + で表示される。 - The default setting for ppwiz_highlight_defs is 1. + ppwiz_highlight_defsのデフォルトは1である。 -- ppwiz_with_html : If the value is 1 (the default), highlight literal - HTML code; if 0, treat HTML code like ordinary text. +- ppwiz_with_html : この値が1(デフォルト)なら、HTMLコードを強調する。0なら + HTMLコードを通常のテキストのように扱う。 PHTML *phtml.vim* *phtml-syntax* -There are two options for the phtml syntax highlighting. +phtml用の構文強調には2つのオプションがある。 -If you like SQL syntax highligthing inside Strings, use this: > +文字列中でSQL構文強調をさせたいならこうする: > :let phtml_sql_query = 1 -For syncing, minlines defaults to 100. If you prefer another value, you can -set "phtml_minlines" to the value you desire. Example: > +シンクロナイズについては、minlinesのデフォルトは100になっている。他の値にした +いなら"phtml_minlines"を望む値にセットすればよい。例: > :let phtml_minlines = 200 POSTSCRIPT *postscr.vim* *postscr-syntax* -There are several options when it comes to highlighting PostScript. +PostScript用の構文強調にはいくつかのオプションがある。 -First which version of the PostScript language to highlight. There are -currently three defined language versions, or levels. Level 1 is the original -and base version, and includes all extensions prior to the release of level 2. -Level 2 is the most common version around, and includes its own set of -extensions prior to the release of level 3. Level 3 is currently the highest -level supported. You select which level of the PostScript language you want -highlighted by defining the postscr_level variable as follows: > +第一はどのバージョンのPostScript言語を強調するかである。現在のところ、3つの言 +語バージョンあるいはレベルが定義されている。レベル1はオリジナルの基本バージョ +ンで、レベル2のリリース以前のすべての拡張を含んでいる。レベル2はもっとも一般的 +なバージョンで、レベル3リリース以前のすべての拡張を含んでいる。レベル3は現在の +ところサポートされている中でもっともレベルが高い。次のように変数postscr_level +を定義することによって、PostScript言語のどのレベルを強調するか選ぶことができる +: > :let postscr_level=2 -If this variable is not defined it defaults to 2 (level 2) since this is -the most prevalent version currently. +この変数が定義されていないときはデフォルトの2(レベル2)になる。これが現在のとこ +ろもっとも普及しているためである。 -Note, not all PS interpreters will support all language features for a -particular language level. In particular the %!PS-Adobe-3.0 at the start of -PS files does NOT mean the PostScript present is level 3 PostScript! +すべてのPSインタープリタがその言語レベルのすべての言語機能をサポートしているわ +けではないことに注意。とくに、PSファイルの先頭の%!PS-Adobe-3.0は現在の +PostScriptがレベル3であることを示すわけではない! -If you are working with Display PostScript, you can include highlighting of -Display PS language features by defining the postscr_display variable as -follows: > +以下のように変数postscr_displayを定義すればDisplay PostScriptの言語機能も強調 +させることができる: > :let postscr_display=1 -If you are working with Ghostscript, you can include highlighting of -Ghostscript specific language features by defining the variable -postscr_ghostscript as follows: > +以下のように変数postscr_ghostscriptを定義すればGhostscript固有の言語機能も強調 +させることができる: > :let postscr_ghostscript=1 -PostScript is a large language, with many predefined elements. While it -useful to have all these elements highlighted, on slower machines this can -cause Vim to slow down. In an attempt to be machine friendly font names and -character encodings are not highlighted by default. Unless you are working -explicitly with either of these this should be ok. If you want them to be -highlighted you should set one or both of the following variables: > +PostScriptはたくさんの定義済み要素を持つ巨大な言語である。これらの要素すべてを +強調するのは便利であるが、そうすると遅いマシンではVimの動作が遅くなってしまう +。マシンフレンドリーにするために、デフォルトではフォント名と文字エンコーディン +グは強調されない、これらを強調させたいなら、以下の変数のどちらかまたは両方をセ +ットすること: > :let postscr_fonts=1 :let postscr_encodings=1 -There is a stylistic option to the highlighting of and, or, and not. In -PostScript the function of these operators depends on the types of their -operands - if the operands are booleans then they are the logical operators, -if they are integers then they are binary operators. As binary and logical -operators can be highlighted differently they have to be highlighted one way -or the other. By default they are treated as logical operators. They can be -highlighted as binary operators by defining the variable -postscr_andornot_binary as follows: > +スタイル上のオプションが存在する。PostScriptではこれらの演算子の機能はそれらの +オペランドの型に依存する。オペランドが両方ブール型ならそれらは論理演算子となり +、それらが両方整数型なら2項演算子となる。2項演算子と論理演算子を区別して強調す +ることができるので、それらはどちらにしても強調されなければならない。変数 +postscr_andornot_binaryを定義すると、それらは2項演算子として強調される: > :let postscr_andornot_binary=1 < @@ -1556,490 +1873,587 @@ postscr_andornot_binary as follows: > *ptcap.vim* PRINTCAP + TERMCAP *ptcap-syntax* *termcap-syntax* *printcap-syntax* -This syntax file applies to the printcap and termcap databases. +この構文ファイルはprintcapとtermcapデータベースに適用される。 -In order for Vim to recognize printcap/termcap files that do not match -the patterns *printcap*, or *termcap*, you must put additional patterns -appropriate to your system in your |myfiletypefile| file. For these -patterns, you must set the variable "b:ptcap_type" to either "print" or -"term", and then the 'filetype' option to ptcap. +パターン*printcap*や*termcap*にマッチしないprintcap/termcapファイルを認識する +ためには、ファイル|myfiletypefile|において、あなたのシステムに合ったパターンを +追加しなければならない。これらのパターンには、変数"b:ptcap_type"を"print"か +"term"のどちらかにセットしなければならない。するとオプション'filetype'の値が +ptcapになる。 -For example, to make Vim identify all files in /etc/termcaps/ as termcap -files, add the following: > +例えば、/etc/termcaps/以下の全てのファイルをtermcapファイルと識別させるように +するには次を書き加える: > :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" | \ set filetype=ptcap -If you notice highlighting errors while scrolling backwards, which -are fixed when redrawing with CTRL-L, try setting the "ptcap_minlines" -internal variable to a larger number: +上にスクロールしているときに強調間違いが出て、それがCTRL-Lで再描画すると直るよ +うなら、変数"ptcap_minlines"の値を大きくしてみるとよい: > - let ptcap_minlines = 50 + :let ptcap_minlines = 50 -(The default is 20 lines.) +(デフォルトは20行) PROGRESS *progress.vim* *progress-syntax* -Files matching "*.w" could be Progress or cweb. If the automatic detection -doesn't work for you, or you don't edit cweb at all, use this in your -startup vimrc: > +"*.w"にマッチするファイルのタイプはProgressかCWEBである。自動判別がうまく機能 +しないなら、またはcwebファイルを一切編集しないとわかっているなら、次をvimrcに +加えるとよい: > :let filetype_w = "progress" -The same happens for "*.i", which could be assembly, and "*.p", which could be -Pascal. Use this if you don't use assembly and Pascal: > +同じことが"*.i"(アセンブリでもありうる)と"*.p"(Pascalでもありうる)にもいえる。 +アセンブリとPascalを使わないとわかっているならこれを使うこと: > :let filetype_i = "progress" :let filetype_p = "progress" + PYTHON *python.vim* *python-syntax* -There are four options to control Python syntax highlighting. +Python構文強調をコントロールするオプションは4つある。 -For highlighted numbers: > +数字の強調: > :let python_highlight_numbers = 1 -For highlighted builtin functions: > +組み込み関数の強調: > :let python_highlight_builtins = 1 -For highlighted standard exceptions: > +標準例外の強調: > :let python_highlight_exceptions = 1 -If you want all possible Python highlighting (the same as setting the -preceding three options): > +行末の空白と、スペースとタブの混在を強調: > + :let python_highlight_space_errors = 1 + +全ての強調を有効化したければ(これは上の3つのオプションをセットするのと同じ): > :let python_highlight_all = 1 +QUAKE *quake.vim* *quake-syntax* + +Quake構文定義はQuakeエンジンのどれかに基づくほとんど全てのFPS(First Person +Shooter)用に対応するはずである。しかし3つのゲーム(Quake, Quake 2, Quake 3 +Arena)間でコマンド名が少々異なる。そのため、どのコマンドが有効化を指定できるよ +うに構文定義は3つのグローバル変数の存在をチェックする。3つの変数には次のような +効果がある: + +Quakeでのみ利用可能なコマンドを強調するように設定: > + :let quake_is_quake1 = 1 + +Quake 2でのみ利用可能なコマンドを強調するように設定: > + :let quake_is_quake2 = 1 + +Quake 3 Arenaでのみ利用可能なコマンドを強調するように設定: > + :let quake_is_quake3 = 1 + +これら3つのコマンドを自由に組み合わせることが出来る。しかしゲームで利用できな +いコマンドも強調してしまうかもしれない。 + + +READLINE *readline.vim* *readline-syntax* + +readlineライブラリは主としてBASHシェルで使われ、BASHはかなりの数のコマンドとオ +プションを追加している。これらの項目を同様に強調するには次を|vimrc|に加えるか +、readline構文ファイルを読み込む前にこれをタイプすればよい: > + let readline_has_bash = 1 + +こうするとBASH(バージョン2.05a以降。一部それ以前)が追加するコマンドも強調する +ようになる。 + + REXX *rexx.vim* *rexx-syntax* -If you notice highlighting errors while scrolling backwards, which are fixed -when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable -to a larger number: > +上にスクロールしているときに強調間違いが出て、それがCTRL-Lで再描画すると直るよ +うなら、変数"rexx_minlines"の値を大きくしてみるとよい: > :let rexx_minlines = 50 -This will make the syntax synchronization start 50 lines before the first -displayed line. The default value is 10. The disadvantage of using a larger -number is that redrawing can become slow. +こうすると構文シンクロナイズが画面最上行の50行前から始まるようになる。値を大き +くすることの欠点は、再描画が遅くなることである。 RUBY *ruby.vim* *ruby-syntax* -There are a few options to the Ruby syntax highlighting. +Ruby構文強調にはいくつかのオプションがある。 -By default, the "end" keyword is colorized according to the opening statement -of the block it closes. While useful, this feature can be expensive: if you -experience slow redrawing (or you are on a terminal with poor color support) -you may want to turn it off by defining the "ruby_no_expensive" variable: > +デフォルトではキーワード"end"はそれに対応するブロック開始文にしたがって色づけ +される。この機能は便利だが、コストがかかる: 再描画が遅くなったら(または色機能 +の貧弱なターミナルを使っているなら)変数"ruby_no_expensive"を定義することによっ +てこの機能をオフにできる: > :let ruby_no_expensive = 1 -In this case the same color will be used for all control keywords. +この場合すべての制御キーワードに同じ色が使われる。 -If you do want this feature enabled, but notice highlighting errors while -scrolling backwards, which are fixed when redrawing with CTRL-L, try setting -the "ruby_minlines" variable to a value larger than 50: > +この機能を有効化したいが、 +上にスクロールしているときに強調間違いが出て、それがCTRL-Lで再描画すると直るよ +うなら、変数"ruby_minlines"を50以上の値にセットしてみるとよい: > :let ruby_minlines = 100 -Ideally, this value should be a number of lines large enough to embrace your -largest class or module. +理想的にはこの値はファイル中の最も大きいクラスやモジュールの長さよりも大きくし +ておくとよい。 -Finally, if you do not like to see too many color items around, you can define -"ruby_no_identifiers": > +最後に、色をつける単語をもっと少なくしたいなら"ruby_no_identifiers"を定義する +ことが出来る: > :let ruby_no_identifiers = 1 -This will prevent highlighting of special identifiers like "ConstantName", -"$global_var", "@instace_var", "| iterator |", and ":symbol". +こうすると"ConstantName", "$global_var", "@instance_var", "| iterator |", +":symbol".のような特別な識別子の強調をやめる。 SDL *sdl.vim* *sdl-syntax* -The SDL highlighting probably misses a few keywords, but SDL has so many -of them it's almost impossibly to cope. +SDL用の強調にはいくつかのキーワードが抜けているかもしれない。しかしSDLにはたく +さんのキーワードがあるので、すべてに対応することはほとんど不可能である。 -The new standard, SDL-2000, specifies that all identifiers are -case-sensitive (which was not so before), and that all keywords can be -used either completely lowercase or completely uppercase. To have the -highlighting reflect this, you can set the following variable: > +新しい標準SDL-2000ではすべての識別子の大文字・小文字が区別される(以前はそうで +はなかった)。また、すべてのキーワードが全部大文字または全部小文字であってもよ +い。構文強調にこれを反映させるには次の変数をセットすればよい: > :let sdl_2000=1 -This also sets many new keywords. If you want to disable the old -keywords, which is probably a good idea, use: > +これはたくさんの新しいキーワードもセットする。古いキーワードを無効にするには( +これはよい考えである)こうする: > :let SDL_no_96=1 - -The indentation is probably also incomplete, but right now I am very -satisfied with it for my own projects. - -The last thing is a little PO-editing helper. It adds a couple of menu -entries. Though it doesn't do much, I find it extremely helpful for -translating PO files. I just won't use Emacs, you know. -(訳注:これは不明。別の形式(PO)についての記述だと思われる) +インデントもおそらく不完全であるが、今のところ私はこれでとても満足している。 SED *sed.vim* *sed-syntax* -To make tabs stand out from regular blanks (accomplished by using Todo -highlighting on the tabs), define "highlight_sedtabs" by putting > +タブをTodoと同じようにハイライトさせ、通常の空白から目立つようにさせるには +次の行をvimrcに書き、"highlight_sedtabs"を定義する > :let highlight_sedtabs = 1 -in the vimrc file. (This special highlighting only applies for tabs -inside search patterns, replacement texts, addresses or text included -by an Append/Change/Insert command.) If you enable this option, it is -also a good idea to set the tab width to one character; by doing that, -you can easily count the number of tabs in a string. +(この特別な強調は検索パターン中、置換テキスト、アドレス、Append/Change/Insert +コマンドに含まれるテキスト内のタブにだけ適用される)。このオプションを有効化す +るなら、タブ幅を1文字にするとよい; そうすると文字列中のタブの数を数えやすくな +る。 -Bugs: +バグ: - The transform command (y) is treated exactly like the substitute - command. This means that, as far as this syntax file is concerned, - transform accepts the same flags as substitute, which is wrong. - (Transform accepts no flags.) I tolerate this bug because the - involved commands need very complex treatment (95 patterns, one for - each plausible pattern delimiter). + 変換コマンド(y)は置換コマンドとまったく同様に扱われる。つまり、この構文ファ + イルにおいては、変換は置換と同じフラグを受け取ると判断される。これは間違いで + ある(変換は一切フラグを受け取らない)。これに関係したコマンドは非常に複雑な処 + 理を要求するため(95パターン、もっともらしいパターンデリミタごとに1つ)、私は + このバグを容認している。 SGML *sgml.vim* *sgml-syntax* -The coloring scheme for tags in the SGML file works as follows. +SGMLファイル中のタグを強調する方法は以下のように動作する。 -The <> of opening tags are colored differently than the </> of a closing tag. -This is on purpose! For opening tags the 'Function' color is used, while for -closing tags the 'Type' color is used (See syntax.vim to check how those are -defined for you) +開きタグ<>と閉じタグ</>は異なる色がつけられる。これは意図されたものである。開 +きタグには'Function'の色が使われ、閉じタグには'Type'の色が使われる(これらがど +う定義されているかを確かめたいならsyntax.vimを見ること)。 -Known tag names are colored the same way as statements in C. Unknown tag -names are not colored which makes it easy to spot errors. +登録されているタグ名はCの文と同じ方法で色づけされる。エラーを見つけやすくする +ため、登録されていないタグ名は色づけされない。 -Note that the same is true for argument (or attribute) names. Known attribute -names are colored differently than unknown ones. +引数名(や属性名)も同様である。登録されている属性名は登録されていない属性名と異 +なる色がつけられる。 -Some SGML tags are used to change the rendering of text. The following tags -are recognized by the sgml.vim syntax coloring file and change the way normal -text is shown: <varname> <emphasis> <command> <function> <literal> -<replaceable> <ulink> and <link>. - -If you want to change how such text is rendered, you must redefine the -following syntax groups: +いくつかのSGMLタグはテキストの外見を変更するのに使われる。以下のタグは構文ファ +イルsgml.vimによって認識され、通常のテキストの表示法を変更する: + <varname> <emphasis> <command> <function> <literal> <replaceable> <ulink> + <link>。 +そのテキストの表示法を変えたいなら以下の構文グループを再定義しなければならない +: - sgmlBold - sgmlBoldItalic - sgmlUnderline - sgmlItalic - sgmlLink for links -To make this redefinition work you must redefine them all and define the -following variable in your vimrc (this is due to the order in which the files -are read during initialization) > +この再定義を機能させるにはこれらすべてを再定義し、以下の変数をvimrc中で定義し +なければならない(初期化の際にファイルが読み込まれる順序のため) > let sgml_my_rendering=1 -You can also disable this rendering by adding the following line to your -vimrc file: > +この表示法を無効にしたければ次の行をvimrcに加える: > let sgml_no_rendering=1 -(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>) +(Claudio Fleiner <claudio@fleiner.com>によるhtml.vimのヘルプテキストから一部借 +用した) SH *sh.vim* *sh-syntax* -This covers the "normal" Unix (Borne) sh, bash and the korn shell. +これは「普通の」Unix (Bourne) sh、bashそしてKornシェルをカバーしている。 -Vim attempts to determine which shell type is in use by specifying that -various filenames are of specific types: +Vimは様々なファイル名がどのタイプであるかを指定することによって、どのシェルが +使われているかを決定しようとする: > - ksh : .kshrc* *.ksh - bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash + ksh : .kshrc* *.ksh + bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash +< +これらのうちどれにも当てはまらなければ、ファイルの第一行によって判断される(例. +/bin/sh /bin/ksh /bin/bash)。第一行でシェルを指定されていれば、そのシェルが使 +用される。しかしいくつかのファイル(例. .profile)はシェルファイルであることはわ +かっていても、どのタイプか明らかではない。さらに、多くのシステムでshは +"bash"(linux)や"ksh"(posix)へのシンボリックリンクになっている。 -If neither of these cases pertain, then the first line of the file is examined -(ex. /bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, -then that shelltype is used. However some files (ex. .profile) are known to -be shell files but the type is not apparent. One may specify buffer specific -variables prior to sourcing the <sh.vim> syntax file (b:is_kornshell, -b:is_bash, or b:is_sh) so that the associated shell type will be used. One -may also specify a global default by instantiating one of the following -three variables: +以下の3つの変数のどれかを.vimrcで定義することにより、デフォルトを設定すること +が出来る: - ksh : is_kornshell - bash: is_bash - sh : is_sh + ksh: > + let is_kornshell = 1 +< bash: > + let is_bash = 1 +< sh: > + let is_sh = 1 -One may also specify that what looks like the "sh" shell is actually -to be interpreted as a bash shell by setting 'bash_is_sh'. It is -best to set any of these global variables in your '.vimrc' file. +.vimrcで以下のように設定すると > + let g:sh_fold_enabled= 1 -To choose between the two ways to treat single-quotes inside a pair of -double-quotes, I have introduced a Vim variable "highlight_balanced_quotes". -By default (ie by not declaring this variable) single quotes can be used -inside double quotes, and are not highlighted. If you prefer balanced single -quotes as I do you just make the statement in your .vimrc file: > - :let highlight_balanced_quotes = 1 +様々な構文要素(ヒアドキュメントと関数の中身)がsyntaxメソッドによって折り畳み可 +能になる(|:syn-fold|)。 -Similarly I have introduced another vim variable "highlight_function_name" to -be used to enable/disable highlighting of the function-name in function -declarations. The default is not to highlight the function name. If you want -to highlight function names, include this in your .vimrc file: > - :let highlight_function_name = 1 +上にスクロールしているときに強調間違いが出て、それがCTRL-Lで再描画すると直るよ +うなら、変数"sh_minlines"の値を大きくしてみるとよい。例: > -If you notice highlighting errors while scrolling backwards, which are fixed -when redrawing with CTRL-L, try setting the "sh_minlines" internal variable -to a larger number: > - :let sh_minlines = 200 -This will make the syntax synchronization start 200 lines before the first -displayed line. The default value is 100. The disadvantage of using a larger -number is that redrawing can become slow. + let sh_minlines = 500 + +こうすると構文シンクロナイズが画面最上行の500行前から始まるようになる。デフォ +ルトの値は200である。大きい値を使うことの欠点は、動作が遅くなるかもしれないこ +とである。 + +シンクロナイズさせるものがあまりないときは表示がとても遅くなるかもしれない。こ +れを減らすために、変数"sh_maxlines"をセットすることができる。例: > -If you don't have much to synchronize on, displaying can be very slow. To -reduce this, the "sh_maxlines" internal variable can be set: > - :let sh_maxlines = 100 -The default is to use the double of "sh_minlines". Set it to a smaller number -to speed up displaying. The disadvantage is that highlight errors may appear. + let sh_maxlines = 100 +< +デフォルトはsh_minlinesの2倍の値が使われる。表示を高速化するにはこれをもっと小 +さい値にすること。欠点は強調間違いが出るかもしれないことである。 SPEEDUP (AspenTech plant simulator) *spup.vim* *spup-syntax* -The Speedup syntax file has some options: +Speedup構文ファイルにはいくつかのオプションがある: + +- strict_subsections : この変数が定義されていると、セクションとサブセクション + 用のキーワードだけが文として強調され、他のキーワードにはされなくなる + (OPERATIONセクションのWITHINと同様)。 + +- highlight_types : この変数が定義されていると、温度や圧力のようなストリーム + 型が単純な識別子でなくTypeとして強調される。Includedは通常DECLAREセクション + 中に現れる型である;ユーザが自分用の型を定義しているならそれらを構文ファイル + に含めなければならない。 + +- oneline_comments : この値は1から3までの間になり、#スタイルのコメントの強調を + 決定する。 -- strict_subsections : If this variable is defined, only keywords for - sections and subsections will be highlighted as statements but not - other keywords (like WITHIN in the OPERATION section). + oneline_comments = 1 : 偶数個の#の後にも通常のSpeedupコードが現れることを許す -- highlight_types : Definition of this variable causes stream types - like temperature or pressure to be highlighted as Type, not as a - plain Identifier. Included are the types that are usually found in - the DECLARE section; if you defined own types, you have to include - them in the syntax file. + oneline_comments = 2 : 2番目の#で始まるコードをエラーとして表示する。これが + デフォルトの設定である。 + + oneline_comments = 3 : 1個以上の#を含む行全体をエラーとして強調する。 + +変数をPRESETするため、OPERATIONセクションはとても大きくなりがちであり、それゆ +えシンクロナイズがぎりぎりになりかもしれない。あなたのコンピュータが十分はない +なら構文ファイルの最後近くminlinesとmaxlinesの値を大きくするとよいかもしれな +い。 -- oneline_comments : this value ranges from 1 to 3 and determines the - highlighting of # style comments. - oneline_comments = 1 : allow normal Speedup code after an even - number of #s. +TCSH *tcsh.vim* *tcsh-syntax* - oneline_comments = 2 : show code starting with the second # as - error. This is the default setting. +これは"tcsh"という名前のシェルをカバーしている。これはcshのスーパーセットであ +る。ファイル形式がどのように判定されるかは|csh.vim|を参照。 - oneline_comments = 3 : show the whole line as error if it contains - more than one #. +tcshはシェル変数"backslash_quote"をセットしていない限り文字列中に\"が現れるこ +とを許さない。Vimにバックスラッシュクォート構文が存在しないと判断させたいな +ら、次の行を.vimrcに加えること: > -Since especially OPERATION sections tend to become very large due to -PRESETting variables, syncing may be critical. If your computer is -fast enough, you can increase minlines and/or maxlines near the end of -the syntax file. + :let tcsh_backslash_quote = 0 + +は上にスクロールしているときに強調間違いが出て、それがCTRL-Lで再描画すると直る +ようなら、変数"tcsh_minlines"の値を大きくしてみるとよい: > + + :let tcsh_minlines = 100 + +こうすると構文シンクロナイズが画面最上行の100行前から始まるようになる。大きな +値にすることの欠点は、再描画が遅くなることである。 TEX *tex.vim* *tex-syntax* -The tex highlighting supports TeX, LaTeX, and some AmsTeX. The -highlighting supports three primary zones: normal, texZone, and texMathZone. -Although a considerable effort has been made to have these zones terminate -properly, zones delineated by $..$ and $$..$$ cannot be synchronized as -there's no difference between start and end patterns. Consequently, a -special "TeX comment" has been provided > +追い込みコメント/Math? ~ + +tex用の構文強調はTeX, LaTeX, AmsTeXをサポートしている。normal, texZone, +texMathZoneの3つの主な区間がサポートされている。これらの区域を適切に区切るよう +かなりの努力がされたが、$..$と$$..$$で線引きされる区間は開始・終了のパターンと +まったく同じにシンクロナイズさせることは出来ない。その結果、特別な"TeX +comment"が提供されている > %stopzone -which will forcibly terminate the highlighting of either a texZone or a -texMathZone. +このコメントがあるとここで強制的にtexZoneまたはtexMathZoneの強調を終わらせる。 -If you have a slow computer, you may wish to reduce the values for > +構文強調が遅い? ~ + +遅いコンピュータを使っているなら、これらの値を減らすとよいかもしれない > :syn sync maxlines=200 :syn sync minlines=50 -(especially the latter). If your computer is fast, you may wish to -increase them. This primarily affects synchronizing (ie. just what group, -if any, is the text at the top of the screen supposed to be in?). - -The <tex.vim> supports lexical error checking of various sorts. Thus, -although the error checking is ofttimes very useful, it can indicate -errors where none actually are. If this proves to be a problem for you, -you may put in your <.vimrc> the following statement: > +(特に後者を)。速いコンピュータを使っているならこれらの値を増やしてもよい。これ +らは第一にシンクロナイズ(つまり、画面最上行のテキストがどのグループに入るか)に +影響を与える。 + +過度なエラー強調? ~ + +<tex.vim>は様々な種類のレキシカルエラーチェックをサポートしている。すなわち、 +エラーチェックは暇なときにはとても便利だが、実際にはエラーでない箇所もエラーと +示すかもしれない。それが嫌なら、次の行を<.vimrc>に置くとよい: > let tex_no_error=1 -and all error checking by <tex.vim> will be suppressed. +すると<tex.vim>によるすべてのエラーチェックが停止される。 + +新しいMathグループが必要? ~ + +新しいmathグループをLaTeXに含めたいなら、以下のコードがそうする例である: > + + syn cluster texMathZones add=texMathZoneLOCAL + syn region texMathZoneLOCAL start="\\begin\s*{\s*LOCALMATH\s*}" + \ end="\\end\s*{\s*LOCALMATH\s*}" keepend + \ contains=@texMathZoneGroup + if !exists("tex_no_math") + syn sync match texSyncMathZoneLOCAL grouphere texMathZoneLOCAL + \ "\\begin\s*{\s*LOCALMATH\*\s*}" + syn sync match texSyncMathZoneLOCAL groupthere NONE + \ "\\end\s*{\s*LOCALMATH\*\s*}" + endif + hi link texMathZoneLOCAL texMath +< +LOCALMATHをあなたが決めた新しいmathグループに書き換える必要がある。そしてこれ +を.vim/after/syntax/tex.vimに加えること。 + +新しいスタイルを始める? ~ + +*.texファイルで"\makeatletter"を使う人がいるかもしれないので、コマンド中で"@" +が使えるようになっている。しかし*.texファイルは次の拡張子: sty cls clo dtx ltx +を持たないので@をエラーと判断して強調する。これを解決するにはこうする: > + + :let b:tex_stylish = 1 + :set ft=tex + +"let g:tex_stylish=1"を<.vimrc>に書くと<syntax/tex.vim>は常にこのような@の使用 +法を受け入れるようになる。 TF *tf.vim* *tf-syntax* -There is one option for the tf syntax highlighting. +tfの構文強調には1つのオプションがある。 -For syncing, minlines defaults to 100. If you prefer another value, you can -set "tf_minlines" to the value you desire. Example: > +シンクロナイズについて、minlinesのデフォルトは100になっている。他の値にしたい +なら、"tf_minlines"を望む値にセットすればよい。例: > :let tf_minlines = your choice -XF86CONFIG *xf86conf.vim* *xf86conf-syntax* +VIM *vim.vim* *vim-syntax* + +より正確な構文強調と画面更新速度にはトレードオフがある。正確さを向上させるには +、変数g:vim_minlinesの値を大きくすればよい。変数g:vim_maxlinesは画面更新速度を +改善するのに使える(これについては|:syn-sync|を参照)。 + + g:vim_minlines : シンクロナイズの最小行数をセットするのに使う + g:vim_maxlines : シンクロナイズの最大行数をセットするのに使う + +g:vimembedscriptオプションは外部スクリプト言語(現在のところperl, python, ruby, +tcl)のサポートを犠牲にする代わりに、vimスクリプト用の構文強調の読み込みをいく +らか速くすることができる。 + + g:vimembedscript == 1 (デフォルト) <vim.vim>埋め込みスクリプト言 + g:vimembedscript が存在しない 語: perl, python, ruby, tclの + 強調を有効化する。 + + g:vimembedscript == 0 埋め込みスクリプト言語用の構 + 文強調を読み込まない。 -The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both -variants are supported. Automatic detection is used, but is far from perfect. -You may need to specify the version manually. Set the variable -xf86conf_xfree86_version to 3 or 4 according to your XFree86 version in -your .vimrc. Example: > - :let xf86conf_xfree86_version=3 -When using a mix of versions, set the b:xf86conf_xfree86_version variable. -Note that spaces and underscores in option names are not supported. Use -"SyncOnGreen" instead of "__s yn con gr_e_e_n" if you want the option name -highlighted. +XF86CONFIG *xf86conf.vim* *xf86conf-syntax* + +XF86Configファイルの構文はXFree86 v3.xとv4.xで異なっている。両方のバージョンが +サポートされている。自動的に判定がされるが、完全からはほど遠い。手動でバージョ +ンを設定する必要があるかもしれない。使用しているXFree86に応じて、.vimrc中で変 +数xf86conf_xfree86_versionを3または4にセットすること。例: > + :let xf86conf_xfree86_version=3 +複数のバージョンが混在しているときには +変数b:xf86conf_xfree86_versionをセットすること。 + +オプション名中のスペースとアンダースコアはサポートされていない。オプション名を +ハイライトさせたいなら"__s yn con gr_e_e_n"でなく"SyncOnGreen"と書くこと。 XML *xml.vim* *xml-syntax* -Xml namespaces are highlighted by default. This can be inhibited by -setting a global variable: > +Xml名前空間がデフォルトで強調される。次のグローバル変数をセットするとそれが無 +効化される: > :let g:xml_namespace_transparent=1 < *xml-folding* -The xml syntax file provides syntax |folding| (see |:syn-fold|) between -start and end tags. This can be turned on by > +xml構文ファイルを使うと、開始タグと終了タグの間を折りたたむ|folding|ことができ +る(|:syn-fold|を参照)。これをオンにするには > + :let g:xml_syntax_folding = 1 :set foldmethod=syntax +とする。 +構文による折り畳みは、構文強調を著しく遅くする可能性がある。特に巨大なファイル +ではそうである。 + X Pixmaps (XPM) *xpm.vim* *xpm-syntax* -xpm.vim creates its syntax items dynamically based upon the contents of the -XPM file. Thus if you make changes e.g. in the color specification strings, -you have to source it again e.g. with ":set syn=xpm". +xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を生成する。そのため、色 +設定文字列などを変更したときは":set syn=xpm"などとしてxpm.vimを読み直さなけれ +ばならない。 -To copy a pixel with one of the colors, yank a "pixel" with "yl" and insert it -somewhere else with "P". +色つきのピクセルをコピーするには"yl"で"pixel"をヤンクし、どこかで"P"としてそれ +を挿入する。 -Do you want to draw with the mouse? Try the following: > +マウスで図を描きたければ次のようにしてみるとよい: > :function! GetPixel() : let c = getline(line("."))[col(".") - 1] : echo c : exe "noremap <LeftMouse> <LeftMouse>r".c - : exe "noremap <LeftDrag> <LeftMouse>r".c + : exe "noremap <LeftDrag> <LeftMouse>r".c :endfunction :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR> :set guicursor=n:hor20 " to see the color beneath the cursor -This turns the right button into a pipette and the left button into a pen. -It will work with XPM files that have one character per pixel only and you -must not click outside of the pixel strings, but feel free to improve it. +これを行うと、右ボタンがピペットになり、左ボタンがペンになる。これは1ピクセル +につき1文字だけとなっているXPMファイルでうまく機能する。ピクセル文字列の外をク +リックしてはならない。これを自由に改良してください。 -It will look much better with a font in a quadratic cell size, e.g. for X: > +セルサイズが正方形のフォントを使うと見栄えがよくなる。Xの例: > :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* + ============================================================================== -5. Defining a syntax *:syn-define* *E410* +5. 構文を定義する *:syn-define* *E410* + +構文要素には3つのタイプがある。 + +1. キーワード + これはオプション'iskeyword'で定義されるキーワード文字だけからなる。他の構文 + 要素を含むことはできない。完全な単語(マッチの前後にキーワード文字が存在しな + い)にのみマッチする。キーワード"if"は"if(a=b)"にはマッチするが、"ifdef x"に + はマッチしない。"("はキーワード文字でなく、"d"はキーワード文字だから。 + +2. マッチ + 単一の正規表現パターンにマッチする。 -Vim understands three types of syntax items: +3. リージョン + 正規表現パターン"start"のマッチ位置から始まり、正規表現パターン"end"のマッ + チで終わる。その間にどんなテキストがあってもよい。正規表現パターン"skip"を + 使うとパターン"end"にマッチするのを避けることができる。 -1. Keyword. - It can only contain keyword characters, according to the 'iskeyword' - option. It cannot contain other syntax items. It will only match with a - complete word (there are no keyword characters before or after the match). - The keyword "if" would match in "if(a=b)", but not in "ifdef x", because - "(" is not a keyword character and "d" is. +複数の構文要素を1つの構文グループに入れることができる。構文グループには強調属 +性を与えることができる。例えば、"/* .. */"のコメントを定義する要素と"// .."の +コメントを定義する要素を作り、それらを"Comment"グループに入れることができる。 +そして"Comment"が青のボールドフォントになるように指定することができる。1つの構 +文要素に対し1つの構文グループを作ったり、すべての要素を1つのグループに入れても +よい。それは強調属性をどう指定したいかによる。各要素をそれ自身のグループに入れ +るとたくさんのグループに対して強調法を指定しなければならなくなる。 -2. Match. - This is a match with a single regexp pattern. +構文グループと強調グループは似ていることに注意。強調グループに対しては強調属性 +を与えることになる。それらの属性は同名の構文グループに対して使われる。 -3. Region. - This starts at a match of the "start" regexp pattern and ends with a match - with the "end" regexp pattern. Any other text can appear in between. A - "skip" regexp pattern can be used to avoid matching the "end" pattern. +同じ箇所に対して1個以上の要素がマッチする場合には、最後に定義されたものが使わ +れる。よって同じテキストにマッチする要素を使って、以前に定義された構文要素を上 +書きすることができる。大文字・小文字の違いも含めてマッチするキーワードがあれば +そうでないものより優先される。 -Several syntax ITEMs can be put into one syntax GROUP. For a syntax group -you can give highlighting attributes. For example, you could have an item -to define a "/* .. */" comment and another one that defines a "// .." comment, -and put them both in the "Comment" group. You can then specify that a -"Comment" will be in bold font and have a blue color. You are free to make -one highlight group for one syntax item, or put all items into one group. -This depends on how you want to specify your highlighting attributes. Putting -each item in its own group results in having to specify the highlighting -for a lot of groups. -Note that a syntax group and a highlight group are similar. For a highlight -group you will have given highlight attributes. These attributes will be used -for the syntax group with the same name. +優先順位 *:syn-priority* -In case more than one item matches at the same position, the one that was -defined LAST wins. Thus you can override previously defined syntax items by -using an item that matches the same text. But a keyword always goes before a -match or region. And a keyword with matching case always goes before a -keyword with ignoring case. +複数の構文要素がマッチするときはこれらのルールが適用される: +1. 複数のマッチまたはリージョン要素が同じ場所で始まるときは、後に定義されたも + のが優先される。 +2. マッチとリージョンよりキーワードが優先される。 +3. より前の位置から始まる要素が優先される。 -DEFINING CASE *:syn-case* *E390* + +大文字・小文字の区別 *:syn-case* *E390* :sy[ntax] case [match|ignore] - This defines if the following ":syntax" commands will work with - matching case, when using "match", or with ignoring case, when using - "ignore". Note that any items before this are not affected, and all - items until the next ":syntax case" command are affected. + これ以降の":syntax"コマンドが大文字・小文字を区別するかどうかを定義す + る。"match"を使うと区別し、"ignore"を使うと区別しなくなる。これ以前の + 要素には影響せず、次の":syntax case"コマンドまでのすべての要素に影響 + する。 -DEFINING KEYWORDS *:syn-keyword* +キーワードの定義 *:syn-keyword* :sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] - This defines a number of keywords. + キーワードを定義する。 - {group-name} Is a syntax group name such as "Comment". - [{options}] See |:syn-arguments| below. - {keyword} .. Is a list of keywords which are part of this group. + {group-name} "Comment"のような構文グループ名。 + [{options}] 後述の|:syn-arguments|を参照。 + {keyword} .. このグループに含めるキーワードのリスト。 - Example: > + 例: > :syntax keyword Type int long char < - The {options} can be given anywhere in the line. They will apply to - all keywords given, also for options that come after a keyword. - These examples do exactly the same: > + {options}は行のどこに置いてもよい。それらは与えられたキーワード全てに + 適用される。オプションがキーワードの後にあっても同じ。以下の例はまった + く同じことをする: > :syntax keyword Type contained int long char :syntax keyword Type int long contained char :syntax keyword Type int long char contained < - When you have a keyword with an optional tail, like Ex commands in - Vim, you can put the optional characters inside [], to define all the - variations at once: > - :syntax keyword VimCommand ab[breviate] n[ext] + VimのExコマンドのようにキーワードに短縮形があるとき、省略可能な部分を + []のでくくることによって受け入れるキーワードをいっぺんに定義することが + できる: > + :syntax keyword vimCommand ab[breviate] n[ext] < - Don't forget that a keyword can only be recognized if all the - characters are included in the 'iskeyword' option. If one character - isn't, the keyword will never be recognized. - Multi-byte characters can also be used. These do not have to be in - 'iskeyword'. - - A keyword always has higher priority than a match or region, the - keyword is used if more than one item matches. Keywords do not nest - and a keyword can't contain anything else. - - Note that when you have a keyword that is the same as an option (even - one that isn't allowed here), you can not use it. Use a match - instead. - - The maximum length of a keyword is 80 characters. - - The same keyword can be defined multiple times, when its containment - differs. For example, you can define the keyword once not contained - and use one highlight group, and once contained, and use a different - highlight group. Example: > + キーワードは文字全てがオプション'iskeyword'に含まれていないと認識され + ないことに注意。1文字でも含まれていないと、そのキーワードは認識されな + い。 + マルチバイト文字を使うこともできる。それらは'iskeyword'に含まれている + 必要はない。 + + キーワードは常にマッチやリージョンより優先される。キーワードは一要素以 + 上マッチしたとき使われる。キーワードは入れ子にならなく、それ以外のもの + を含むこともできない。 + + オプションと同じキーワードについては、それがその位置で利用できないもの + であったとしても、定義することはできない。マッチで代用すること。 + + キーワードの長さは最大80文字である。 + + containmentが異なれば、同じキーワードを複数回定義することができる。例 + えば、まずキーワードをcontainedでなく定義して1つの強調グループを設定 + し、次にcontainedとして定義して別の強調グループを設定することができ + る。例: > :syn keyword vimCommand tag :syn keyword vimSetting contained tag -< When finding "tag" outside of any syntax item, the "vimCommand" - highlight group is used. When finding "tag" in a syntax item that - contains "vimSetting", the "vimSetting" group is used. +< 構文要素の外側に"tag"があったときは強調グループ"vimCommand"が適用され + る。"vimSetting"を含む構文要素の中に"tag"があったときは"vimSetting"グ + ループが適用される。 -DEFINING MATCHES *:syn-match* +マッチの定義 *:syn-match* :sy[ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}] - This defines one match. - - {group-name} A syntax group name such as "Comment". - [{options}] See |:syn-arguments| below. - [excludenl] Don't make a pattern with the end-of-line "$" - extend a containing match or region. Must be - given before the pattern. |:syn-excludenl| - {pattern} The search pattern that defines the match. - See |:syn-pattern| below. - Note that the pattern may match more than one - line, which makes the match depend on where - Vim starts searching for the pattern. You - need to make sure syncing takes care of this. - - Example (match a character constant): > + これはマッチを定義する。 + + {group-name} "Comment"のような構文グループ名。 + [{options}] 以下の|:syn-arguments|を参照。 + [excludenl] 行末の"$"を含んでいるパターンに対して、行末以 + 降までマッチやリージョンを拡張しないようにす + る。パターンの前に置かなければならない。 + |:syn-excludenl| + {pattern} マッチを定義する検索パターン。|:syn-pattern|を + 後述の参照。 + パターンは複数行にもマッチする。よって検 + 索を開始する場所によってマッチが変わってくる可 + 能性がある。シンクロナイズが関係してくることに + 注意。 + + 例 (文字定数にマッチする): > :syntax match Character /'.'/hs=s+1,he=e-1 -< +< -DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* +リージョンの定義 *:syn-region* *:syn-start* *:syn-skip* *:syn-end* *E398* *E399* + :sy[ntax] region {group-name} [{options}] - [matchgroup={group_name}] + [matchgroup={group-name}] [keepend] [extend] [excludenl] @@ -2047,151 +2461,143 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* [skip={skip_pattern}] end={end_pattern} .. [{options}] - - This defines one region. It may span several lines. - - {group-name} A syntax group name such as "Comment". - [{options}] See |:syn-arguments| below. - [matchgroup={group-name}] The syntax group to use for the following - start or end pattern matches only. Not used - for the text in between the matched start and - end patterns. Use NONE to reset to not using - a different group for the start or end match. - See |:syn-matchgroup|. - keepend Don't allow contained matches to go past a - match with the end pattern. See - |:syn-keepend|. - extend Override a "keepend" for an item this region - is contained in. See |:syn-extend|. - excludenl Don't make a pattern with the end-of-line "$" - extend a containing match or item. Only - useful for end patterns. Must be given before - the patterns it applies to. |:syn-excludenl| - start={start_pattern} The search pattern that defines the start of - the region. See |:syn-pattern| below. - skip={skip_pattern} The search pattern that defines text inside - the region where not to look for the end - pattern. See |:syn-pattern| below. - end={end_pattern} The search pattern that defines the end of - the region. See |:syn-pattern| below. - - Example: > + + これはリージョンを定義する。複数行にわたってもよい。 + + {group-name} "Comment"のような構文グループ名。 + [{options}] 後述の|:syn-arguments|を参照。 + [matchgroup={group-name}] 以下の開始パターンと終了パターンのマッチに + のみ使われる構文グループ。マッチの開始パターン + と終了パターンには使われない。開始パターンと終 + 了パターン用に異なるグループを使わないようにリ + セットするにはNONEを使う。 + |:syn-matchgroup|を参照。 + keepend 内包されたマッチが終了パターンを越えないように + する。 + |:syn-keepend|を参照。 + extend このリージョンを含むアイテムの"keepend"を上書 + きする。|:syn-extend|を参照。 + excludenl 行末の"$"を含んでいるパターンに対して、行末以 + 降までマッチやアイテムを拡張しないようにする。 + 終了パターンに対してのみ使い道がある。適用する + パターンの前に置かねばならない。 + |:syn-excludenl| + start={start_pattern} リージョンの開始を定義する検索パターン。後述の + |:syn-pattern|を参照。 + skip={skip_pattern} その中ではリージョンの終了を探さないテキストを + 定義する検索パターン。|:syn-pattern|を参照。 + end={end_pattern} リージョンの終了を定義する検索パターン。 + 後述の|:syn-pattern|を参照。 + + 例: > :syntax region String start=+"+ skip=+\\"+ end=+"+ < - The start/skip/end patterns and the options can be given in any order. - There can be zero or one skip pattern. There must be one or more - start and end patterns. This means that you can omit the skip - pattern, but you must give at least one start and one end pattern. It - is allowed to have white space before and after the equal sign - (although it mostly looks better without white space). - - When more than one start pattern is given, a match with one of these - is sufficient. This means there is an OR relation between the start - patterns. The last one that matches is used. The same is true for - the end patterns. - - The search for the end pattern starts right after the start pattern. - Offsets are not used for this. This implies that the match for the - end pattern will never overlap with the start pattern. - - The skip and end pattern can match across line breaks, but since the - search for the pattern can start in any line it often does not do what - you want. The skip pattern doesn't avoid a match of an end pattern in - the next line. Use single-line patterns to avoid trouble. - - Note: The decision to start a region is only based on a matching start - pattern. There is no check for a matching end pattern. This does NOT - work: > + start/skip/endパターンとオプションはどんな順序で置かれてもよい。skip + パターンは0個か1個許される。startとendパターンは1個以上なければならな + い。つまりskipパターンは省略できるが、少なくとも1つのstartとendパター + ンを書かなければならない。等号記号の前後にはホワイトスペースがあっても + よい(たいていはホワイトスペースがないほうが見やすいが)。 + + 2個以上のstartパターンが与えられたときは、それらの1つがマッチすれば十 + 分である。つまりstartパターンらの間にはOR関係があることになる。最後に + マッチしたものが使われる。endパターンについても同じである。 + + endパターンの検索はstartパターンの直後から行われる。これはendパターン + のマッチとstartパターンは決して重ならないことを意味する。 + + skipとendパターンは改行をまたいでマッチしてもよい。しかしパターンの検 + 索はどの行からも始まりうるので、望みどおりにならないこともある。 + skipパターンは次の行のendパターンのマッチを回避しない。問題を避けるには + 単一行のパターンを使うこと。 + + 注意: リージョンの開始は、startパターンのマッチによってのみ決まる。 + endパターンの照合のチェックはされない。次のは機能しない: > :syn region First start="(" end=":" :syn region Second start="(" end=";" -< The Second always matches before the First (last defined pattern has - higher priority). The Second region then continues until the next - ';', no matter if there is a ':' before it. Using a match does work: > +< 2番目のは常にFirstより前にマッチする(最後に定義されたパターンが優先され + る)。こうすると、その前に':'があるかどうかに関わらず、2番目のリージョ + ンが次の';'まで続く。マッチを使うとうまくいく: > :syn match First "(\_.\{-}:" :syn match Second "(\_.\{-};" -< This pattern matches any character or line break with "\_." and - repeats that with "\{-}" (repeat as few as possible). +< このパターンは"\_."によって任意の文字と改行にマッチし、"\{-}"によって + 繰り返しにマッチする(最小限の個数の繰り返し)。 *:syn-keepend* - By default, a contained match can obscure a match for the end pattern. - This is useful for nesting. For example, a region that starts with - "{" and ends with "}", can contain another region. An encountered "}" - will then end the contained region, but not the outer region: - { starts outer "{}" region - { starts contained "{}" region - } ends contained "{}" region - } ends outer "{} region - If you don't want this, the "keepend" argument will make the matching - of an end pattern of the outer region also end any contained item. - This makes it impossible to nest the same region, but allows for - contained items to highlight parts of the end pattern, without causing - that to skip the match with the end pattern. Example: > - :syn match VimComment +"[^"]\+$+ - :syn region VimCommand start="set" end="$" contains=VimComment keepend -< The "keepend" makes the VimCommand always end at the end of the line, - even though the contained VimComment includes a match with the <EOL>. - - When "keepend" is not used, a match with an end pattern is retried - after each contained match. When "keepend" is included, the first - encountered match with an end pattern is used, truncating any - contained matches. + デフォルトでは内包されたマッチはendパターンのマッチを隠す。これはネス + ト用に便利である。例えば、"{"で始まり"}"で終わるリージョンがもう1つの + リージョンを含むことができる。"}"に出会うと内包されたリージョンが終わ + り、外側のリージョンは終了しない: + { 外側の"{}"リージョンの開始 + { 内包された"{}"リージョンの開始 + } 内包された"{}"リージョンの終了 + } 外側の"{}"リージョンの終了 + この挙動が望みでないなら、引数"keepend"をつければ、外側のリージョンの + endパターンのマッチによって内包されたアイテムも終了させることができる + 。そうすると同一リージョンのネストが不可能になるが、内包されたアイテム + でendパターンをスキップさせることなく、endパターンの一部を強調すること + ができる。例: > + :syn match vimComment +"[^"]\+$+ + :syn region vimCommand start="set" end="$" contains=vimComment keepend +< "keepend"によってvimCommandが常に行末で終わるようにしている。たとえ内 + 包されたvimCommentが<EOL>とのマッチを含んでいてもそのようになる。 + + "keepend"が使われないときは、内包されたマッチの後でendパターンのマッチ + が検索される。"keepend"が含まれているときは最初にendパターンにマッチし + たところで終了し、内包されたマッチもすべてそこで終了になる。 + *:syn-extend* - The "keepend" behavior can be changed by using the "extend" argument. - When an item with "extend" is contained in an item that uses - "keepend", the "keepend" is ignored and the containing region will be - extended. - This can be used to have some contained items extend a region while - others don't. Example: > + 引数"extend"を使うと"keepend"の挙動が変わる。"keepend"付きのアイテム中 + に"extend"付きのアイテムが内包されていると、"keepend"が無視され、外側 + のリージョンが拡張される。これによっていくつかのアイテムに対して例外的 + にリージョンを拡張させるようにできる。例: > :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript :syn match htmlItem +<[^>]*>+ contained :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend -< Here the htmlItem item does not make the htmlRef item continue - further, it is only used to highlight the <> items. The htmlScript - item does extend the htmlRef item. +< + この例では、htmlItemの位置でhtmlRefが終了する。htmlItemは<>要素を強調 + するためだけに使われる。htmlScriptアイテムはhtmlRefアイテムを拡張する。 - Another example: > + もう1つの例: > :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend -< This defines a region with "keepend", so that its end cannot be - changed by contained items, like when the "</a>" is matched to - highlight it differently. But when the xmlFold region is nested (it - includes itself), the "extend" applies, so that the "</a>" of a nested - region only ends that region, and not the one it is contained in. +< "</a>"を別の色で強調したいときなどのために、"keepend"つきでリージョン + を定義し、内包するアイテムによって終端が変更されないようにしている。 + ただしxmlFoldがネストしたとき(それ自身を含んだとき)、"extend"が適用さ + れ、内側の"</a>"はそのリージョン自身だけを終了させ、それを含んでいるリ + ージョンは終了しない。 *:syn-excludenl* - When a pattern for a match or end pattern of a region includes a '$' - to match the end-of-line, it will make a region item that it is - contained in continue on the next line. For example, a match with - "\\$" (backslash at the end of the line) can make a region continue - that would normally stop at the end of the line. This is the default - behavior. If this is not wanted, there are two ways to avoid it: - 1. Use "keepend" for the containing item. This will keep all - contained matches from extending the match or region. It can be - used when all contained items must not extend the containing item. - 2. Use "excludenl" in the contained item. This will keep that match - from extending the containing match or region. It can be used if - only some contained items must not extend the containing item. - "excludenl" must be given before the pattern it applies to. + マッチ用のパターンやリージョンの終了パターンが行末にマッチさせるために + '$'を含んでいると、それを含むリージョンアイテムが次の行まで継続するよ + うになる。例えば、"\\$"(行末のバックスラッシュ)とのマッチを使うと、通 + 常は行末で終了するはずのリージョンを継続させることができる。これはデフ + ォルトの挙動である。これが望みどおりでないなら、これをされる2つの方法 + がある: + 1. 外側のアイテムに"keepend"を使う。こうすると含んでいるアイテム全てに + 対して拡張しないようにする。含んでいるアイテム全てが外側のアイテム + を拡張してはならないときに使える。 + 2. 内側のアイテムに"excludenl"を使う。こうするとそのマッチに対して、そ + れを含んでいるマッチやリージョンを拡張しないようにする。これはいく + つかのアイテムだけが外側のアイテムを拡張してはならないときに使える。 + "excludenl"はそれを適用するパターンの前に置かねばならない。 *:syn-matchgroup* - "matchgroup" can be used to highlight the start and/or end pattern - differently than the body of the region. Example: > - :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ -< This will highlight the quotes with the "Quote" group, and the text in - between with the "String" group. - The "matchgroup" is used for all start and end patterns that follow, - until the next "matchgroup". Use "matchgroup=NONE" to go back to not - using a matchgroup. - - In a start or end pattern that is highlighted with "matchgroup" the - contained items of the region are not used. This can be used to avoid - that a contained item matches in the start or end pattern match. When - using "transparent", this does not apply to a start or end pattern - match that is highlighted with "matchgroup". - - Here is an example, which highlights three levels of parentheses in - different colors: > + "matchgroup"は、リージョンの本体とその開始・終了パターンに対して異なる + 強調をしたいときに使える。例: > + :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ +< こうすると引用符を"Quote"グループで強調し、その間にあるテキストを + "String"グループで強調することができる。 + "matchgroup"はそれが従うすべての開始・終了パターンに対して使われる。 + matchgroupを使わないように戻すには"matchgroup=NONE"を使う。 + + 開始・終了パターンが"matchgroup"で強調されるとき、そのリージョンに含ま + れているアイテムは無視される。これによって含まれているアイテムが開始・ + 終了パターンにマッチするのを避けることができる。"transparent"を使って + いる場合、これは"matchgroup"で強調される開始・終了パターンのマッチ部分 + には適用されない。 + + 次の例は、3段階の括弧を異なる色で強調する例である: > :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2 :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained @@ -2200,21 +2606,21 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* :hi par3 ctermfg=darkgreen guifg=darkgreen ============================================================================== -6. :syntax arguments *:syn-arguments* +6. :syntaxの引数 *:syn-arguments* -The :syntax commands that define syntax items take a number of arguments. -The common ones are explained here. The arguments may be given in any order -and may be mixed with patterns. +構文アイテムを定義する:syntaxコマンドはたくさんの引数をとる。 +ここでは共通のものを説明する。引数はどんな順序でもよく、パターンと混ざっていて +もよい。 -Not all commands accept all arguments. This table shows which arguments -can not be used for all commands: +全てのコマンドが全ての引数を受けいれるわけではない。次の表はどの引数がどのコマ +ンドに対して利用可能かを示している: *E395* *E396* - contains oneline fold display extend~ + contains oneline fold display extend ~ :syntax keyword - - - - - :syntax match yes - yes yes yes :syntax region yes yes yes yes yes -These arguments can be used for all three commands: +以下の引数は3つのコマンド全てに対して使える: contained containedin nextgroup @@ -2226,880 +2632,827 @@ These arguments can be used for all three commands: contained *:syn-contained* -When the "contained" argument is given, this item will not be recognized at -the top level, but only when it is mentioned in the "contains" field of -another match. Example: > +引数"contained"が与えられると、そのアイテムはトップレベルでは認識されず、他の +マッチの"contains"フィールドで指定されたときのみ認識される。例: > :syntax keyword Todo TODO contained :syntax match Comment "//.*" contains=Todo display *:syn-display* -If the "display" argument is given, this item will be skipped when the -detected highlighting will not be displayed. This will speed up highlighting, -by skipping this item when only finding the syntax state for the text that is -to be dislayed. - -Generally, you can use "display" for match and region items that meet these -conditions: -- The item does not continue past the end of a line. Example for C: A region - for a "/*" comment can't contain "display", because it continues on the next - line. -- The item does not contain items that continue past the end of the line or - make it continue on the next line. -- The item does not change the size of any item it is contained in. Example - for C: A match with "\\$" in a preprocessor match can't have "display", - because it may make that preprocessor match shorter. -- The item does not allow other items to match that didn't match otherwise, - and that item may extend the match too far. Example for C: A match for a - "//" comment can't use "display", because a "/*" inside that comment would - match then and start a comment which extends past the end of the line. - -Examples, for the C language, where "display" can be used: -- match with a number -- match with a label +引数"display"が与えられると、そのアイテムは検出された強調が表示されない時には +スキップされる。こうすることでアイテムがスキップされ、表示されるべきテキストの +構文状態だけが検索対象となり、強調がスピードアップされる。 + +通常は、以下の条件に合うときマッチとリージョンに"display"を使うとよい: +- アイテムが行末を越えて継続しない。Cの例: "/*"コメント用のリージョンは + "display"を含んではならない。なぜなら次の行に継続するからである。 +- アイテムが、行を越えて継続したり、そのコンテナを次行まで継続させる効果を持つ + 子アイテムを含んでいない。 +- それを含むどんなアイテムのサイズも変更しない。Cの例: プリプロセッサマッチ中 + の"\\$"とのマッチは"display"を含んではならない。なぜならこれによってプリプロ + セッサマッチが短くなるかもしれないからである。 +- 他のアイテムがマッチすることを許さず、そうでなければマッチせず、加えてマッチ + 自体が非常に長くなるようなアイテム。 + Cの例: "//"コメント用のマッチは"display"を使ってはならない。なぜならそのコメ + ントの内側の"/*"がマッチするかも知れず、そうなると行末をまたぐコメントが始ま + るからである。 + +例としてC言語では次のとき"display"が使える: +- 数字とのマッチ +- ラベルとのマッチ transparent *:syn-transparent* -If the "transparent" argument is given, this item will not be highlighted -itself, but will take the highlighting of the item it is contained in. This -is useful for syntax items that don't need any highlighting but are used -only to skip over a part of the text. +引数"transparent"が与えられると、そのアイテムはそれ自身では強調されず、それを +含むアイテムの強調を受け取る。これは強調はせず、テキストの一部をスキップするた +めだけに使われる構文アイテムに対して有効である。 -The "contains=" argument is also inherited from the item it is contained in, -unless a "contains" argument is given for the transparent item itself. To -avoid that unwanted items are contained, use "contains=NONE". Example, which -highlights words in strings, but makes an exception for "vim": > +transparentなアイテム自身に引数"contains"が与えられていない場合、引数 +"contains="も同様にそれを含むアイテムを受け継ぐ。望まないアイテムが含まれるの +を避けるには"contains=NONE"とすること。文字列中の単語を強調するが、"vim"だけは +例外とする例: > :syn match myString /'[^']*'/ contains=myWord,myVim :syn match myWord /\<[a-z]*\>/ contained :syn match myVim /\<vim\>/ transparent contained contains=NONE :hi link myString String :hi link myWord Comment -Since the "myVim" match comes after "myWord" it is the preferred match (last -match in the same position overrules an earlier one). The "transparent" -argument makes the "myVim" match use the same highlighting as "myString". But -it does not contain anything. If the "contains=NONE" argument would be left -out, then "myVim" would use the contains argument from myString and allow -"myWord" to be contained, which will be highlighted as a Constant. This -happens because a contained match doesn't match inside itself in the same -position, thus the "myVim" match doesn't overrule the "myWord" match here. - -When you look at the colored text, it is like looking at layers of contained -items. The contained item is on top of the item it is contained in, thus you -see the contained item. When a contained item is transparent, you can look -through, thus you see the item it is contained in. In a picture: - - look from here +マッチ"myVim"が"myWord"の後に来ているので、そちらが優先される(同じ場所中では最 +後のマッチがそれ以前のものを上書きする)。引数"transparent"により、"myVim"のマ +ッチは"myString"と同じ強調が使われるようになる。しかしそれは何も含まない。もし +引数"contains=NONE"が除かれると、"myVim"はmyStringから引数containsを受け継ぎ、 +"myWord"が含まれるのを許すようになり、それがConstantとして強調される。これは、 +内包されたマッチは同じ位置でそれ自身の内側でマッチしないためこうなる。つまり、 +ここではマッチ"myVim"は"マッチmyWord"を上書きしない。 + +色づけされたテキストは、内包されたアイテムの層のように見える。内包されたアイテ +ムはそれを含むアイテムの上にあり、よって内包されたアイテムを見ることができる。 +内包されたアイテムがtransparentなとき、それを透過して見ることができ、よってそ +れを含んでいるアイテムが見える。図にすると: + + ここから見る | | | | | | V V V V V V - xxxx yyy more contained items - .................... contained item (transparent) - ============================= first item + xxxx yyy さらに内包されたアイテム達 + .................... 内包されたアイテム (transparent) + ============================= 最初のアイテム -The 'x', 'y' and '=' represent a highlighted syntax item. The '.' represent a -transparent group. +'x', 'y', '='は強調された構文アイテムを表す。'.'はtransparentなグループを表し +ている。 -What you see is: +このとき次のように見える: =======xxxx=======yyy======== -Thus you look through the transparent "....". +つまりtransparentな"...."は透過して見える。 oneline *:syn-oneline* -The "oneline" argument indicates that the region does not cross a line -boundary. It must match completely in the current line. However, when the -region has a contained item that does cross a line boundary, it continues on -the next line anyway. A contained item can be used to recognize a line -continuation pattern. - -When the start pattern includes a "\n" to match an end-of-line, the end -pattern must found in the same line as where the start pattern ends. The end -pattern may also include an end-of-line. Thus the "oneline" argument -means that the end of the start pattern and the start of the end pattern must -be within one line. This can't be changed by a skip pattern that matches a -line break. +引数"oneline"をつけると、そのリージョンは行をまたがないという意味になる。つま +り現在行内で完全にマッチしなければならない。しかし、そのリージョンが行をまたぐ +アイテムを内包しているときは次の行に継続する。内包されたアイテムによって行継続 +パターンが認識される。しかしその場合でも"end"パターンは最初の行内でマッチしな +ければならない。そうでないとリージョンは開始すらしない。 +startパターンが行末にマッチする"\n"を含んでいるときは、startパターンの終了位置 +と同じ行にendパターンがなければならない。endパターンも行末を含むことができる。 +つまり引数"oneline"は、startパターンの終了位置とendパターンの開始位置が同一行 +にあることを意味する。改行にマッチするskipパターンを使ってもこの規則を変えるこ +とはできない。 fold *:syn-fold* -The "fold" argument makes the fold level increased by one for this item. -Example: > +引数"fold"はこのアイテムに対して折り畳みレベルを1増加させる。例: > :syn region myFold start="{" end="}" transparent fold :syn sync fromstart :set foldmethod=syntax -This will make each {} block form one fold. +これは{}ブロックごとに1つの折り畳みを作らせる。 -The fold will start on the line where the item starts, and end where the item -ends. If the start and end are within the same line, there is no fold. -The 'foldnestmax' option limits the nesting of syntax folds. -{not available when Vim was compiled without |+folding| feature} +折り畳みはそのアイテムの開始位置から始まり、アイテムの終了位置で終わる。開始位 +置と終了位置が同一行にある場合、折り畳みは作られない。 +オプション'foldnestmax'によって構文折り畳みのネストを制限できる。 +{|+folding|機能なしでコンパイルされた場合は利用できない} *:syn-contains* *E405* *E406* *E407* *E408* *E409* contains={groupname},.. -The "contains" argument is followed by a list of syntax group names. These -groups will be allowed to begin inside the item (they may extend past the -containing group's end). This allows for recursive nesting of matches and -regions. If there is no "contains" argument, no groups will be contained in -this item. The group names do not need to be defined before they can be used -here. +引数"contains"の後には構文グループ名のリストを続ける。これによって指定されたグ +ループがそのアイテムの内側で始まることを許可する(内包するグループによって外側 +のアイテムの範囲が拡張されることもある)。マッチとリージョンの再帰的なネストが +あってもよい。引数"contains"が与えられない場合、このアイテムはどんなグループも +内包しない。グループ名をここより前で定義する必要はない。 contains=ALL - If the only item in the contains list is "ALL", then all - groups will be accepted inside the item. + containsリストが"ALL"だけのとき、全てのグループがこのアイテム + の内側で許可される。 contains=ALLBUT,{group-name},.. - If the first item in the contains list is "ALLBUT", then all - groups will be accepted inside the item, except the ones that - are listed. Example: > + + containsリストの最初の要素が"ALLBUT"のとき、ここでリストされて + いるグループを除く全てのグループがこのアイテムの内側で許可され + る。例: > :syntax region Block start="{" end="}" ... contains=ALLBUT,Function contains=TOP - If the first item in the contains list is "TOP", then all - groups will be accepted that don't have the "contained" - argument. + containsリストの最初の要素が"TOP"のとき、引数"contained"を持た + ないグループ全てが許可される。 contains=TOP,{group-name},.. - Like "TOP", but excluding the groups that are listed. + "TOP"と同様だが、リストされたグループは除かれる。 contains=CONTAINED - If the first item in the contains list is "CONTAINED", then - all groups will be accepted that have the "contained" - argument. + containsリストの最初の要素が"CONTAINED"のとき、引数 + "contained"を持つグループ全てが許可される。 contains=CONTAINED,{group-name},.. - Like "CONTAINED", but excluding the groups that are - listed. + "CONTAINED"と同様だが、リストされたグループは除かれる。 + - -The {group-name} in the "contains" list can be a pattern. All group names -that match the pattern will be included (or excluded, if "ALLBUT" is used). -The pattern cannot contain white space or a ','. Example: > +"contains"リスト内の{group-name}はパターンであってもよい。そのパターンにマッチ +するグループ名全てが含まれる("ALLBUT"が使われたときはそれが除かれる)。パターン +はホワイトスペースや','を含んではならない。例: > ... contains=Comment.*,Keyw[0-3] -The matching will be done at moment the syntax command is executed. Groups -that are defined later will not be matched. Also, if the current syntax -command defines a new group, it is not matched. Be careful: When putting -syntax commands in a file you can't rely on groups NOT being defined, because -the file may have been sourced before, and ":syn clear" doesn't remove the -group names. +パターンの照合はそのsyntaxコマンドが実行されたときに行われる。それ以降に定義さ +れたグループは照合されない。また、現在のsyntaxコマンドが新しいグループを定義し +ている場合、そのグループは照合されない。ファイル内にsyntaxコマンドを書く場合、 +定義されていないグループを当てにすることはできないことに注意。これは、そのファ +イルは以前に読み込まれているかもしれず、":syn clear"はグループ名を削除しないた +めである。 -The contained groups will also match in the start and end patterns of a -region. If this is not wanted, the "matchgroup" argument can be used -|:syn-matchgroup|. The "ms=" and "me=" offsets can be used to change the -region where contained items do match. Note that this may also limit the -area that is highlighted +内包されたグループはリージョンのstartとendパターン内にもマッチする。これが望み +の挙動でないなら、引数"matchgroup"を使うとよい|:syn-matchgroup|。オフセット +"ms="と"me="によって内包されたアイテムがマッチする領域を変更することができる。 +これは強調される範囲も制限することに注意。 containedin={groupname}... *:syn-containedin* -The "containedin" argument is followed by a list of syntax group names. The -item will be allowed to begin inside these groups. This works as if the -containing item has a "contains=" argument that includes this item. +引数"containedin"の後には構文グループ名のリストを続ける。するとこのアイテムが +それらのグループの内側で始まることが許可される。これは外側のアイテムが引数 +"contains="でこのアイテムを指定したのと同じように動作する。 -The {groupname}... can be used just like for "contains", as explained above. +{group-name}...の指定の仕方は前述の"contains"と同様である。 -This is useful when adding a syntax item afterwards. An item can be told to -be included inside an already existing item, without changing the definition -of that item. For example, to highlight a word in a C comment after loading -the C syntax: > +これは構文アイテムを後から追加するときに便利である。既に定義されているアイテム +の定義を変更することなく、その内側にアイテムを含めることができる。例えば、Cの +構文を読み込んだ後で、Cコメント中の単語を強調したいときは: > :syn keyword myword HELP containedin=cComment contained -Note that "contained" is also used, to avoid that the item matches at the top -level. +このアイテムがトップレベルではマッチしないように"contained"を使っている。 -Matches for "containedin" are added to the other places where the item can -appear. A "contains" argument may also be added as usual. Don't forget that -keywords never contain another item, thus adding them to "containedin" won't -work. +"containedin"の照合は、このアイテムが現れる場所に追加される。引数"contains"も +通常通り追加される。注意: キーワードは他のアイテムを含むことができないため、 +"containedin"の先にキーワードを指定することは無意味である。 nextgroup={groupname},.. *:syn-nextgroup* -The "nextgroup" argument is followed by a list of syntax group names, -separated by commas (just like with "contains", so you can also use patterns). +引数"nextgroup"の後には構文グループ名のリストをカンマ区切りで続ける +("contains"と同様。パターンを使うこともできる)。 -If the "nextgroup" argument is given, the mentioned syntax groups will be -tried for a match, after the match or region ends. If none of the groups have -a match, highlighting continues normally. If there is a match, this group -will be used, even when it is not mentioned in the "contains" field of the -current group. This is like giving the mentioned group priority over all -other groups. Example: > +引数"nextgroup"が与えられると、マッチやリージョンの終了位置の後ろで、指定され +た構文グループにマッチする部分が探される。どのグループもマッチしなければ、強調 +は通常通り続けられる。マッチが見つかった場合はそのグループが使われる。現在のグ +ループの引数"contains"でそのグループが指定されていなくてもそうなる。つまり、こ +れは指定されたグループの優先度を最大にするイことと同じである。例: > :syntax match ccFoobar "Foo.\{-}Bar" contains=ccFoo :syntax match ccFoo "Foo" contained nextgroup=ccFiller :syntax region ccFiller start="." matchgroup=ccBar end="Bar" contained -This will highlight "Foo" and "Bar" differently, and only when there is a -"Bar" after "Foo". In the text line below, "f" shows where ccFoo is used for -highlighting, and "bbb" where ccBar is used. > +これは"Foo"の後に"Bar"が現れたときのみ、"Foo"と"Bar"に異なる強調をする。以下の +テキストにおいて、"f"と書いたところはccFooで強調され、"bbb"と書いたところは +ccBarで強調される。 > Foo asdfasd Bar asdf Foo asdf Bar asdf - fff bbb fff bbb + fff bbb fff bbb -Note the use of ".\{-}" to skip as little as possible until the next Bar. -when ".*" would be used, the "asdf" in between "Bar" and "Foo" would be -highlighted according to the "ccFoobar" group, because the ccFooBar match -would include the first "Foo" and the last "Bar" in the line (see |pattern|). +".\{-}"を使い、次のBarまでのスキップが最小になるようにしている。もし".*"を使う +と、最初の"Foo"と最後の"Bar"がccFooBarのマッチ部分に含まれるため、"Bar"と"Foo" +の間の"asdf"が"ccFoobar"グループとして強調されることになる(|pattern|を参照)。 skipwhite *:syn-skipwhite* skipnl *:syn-skipnl* skipempty *:syn-skipempty* -These arguments are only used in combination with "nextgroup". They can be -used to allow the next group to match after skipping some text: - skipwhite skip over space and Tab characters - skipnl skip over the end of a line - skipempty skip over empty lines (implies a "skipnl") +これらの引数は"nextgroup"と組み合わせたときのみ意味を持つ。これらを使うと、次 +のグループがあるテキストをスキップした後でマッチするのを許可する: + skipwhite スペースとタブ文字をスキップする + skipnl 行末をスキップする + skipempty 空行をスキップする(自動的に"skipnl"も含むことになる) -When "skipwhite" is present, the white space is only skipped if there is no -next group that matches the white space. +"skilwhite"が与えられると、どの次のグループもホワイトスペースにマッチしないな +らば、ホワイトスペースがスキップされる。 -When "skipnl" is present, the match with nextgroup may be found in the next -line. This only happens when the current item ends at the end of the current -line! When "skipnl" is not present, the nextgroup will only be found after -the current item in the same line. +"skipnl"が与えらると、nextgroupの照合が次の行からも探される。これは現在のアイ +テムが現在行の行末で終わったときのみ有効であることに注意。"skipnl"が指定されな +い場合、nextgroupは同一行のそのアイテム以降から照合される。 -When skipping text while looking for a next group, the matches for other -groups are ignored. Only when no next group matches, other items are tried -for a match again. This means that matching a next group and skipping white -space and <EOL>s has a higher priority than other items. +次のグループまでスキップされたテキストの中では他のグループの照合は無視される。 +次のグループの照合が見つからなかったとき、再び他のグループの照合が検索される。 +つまり、次のグループの照合と、ホワイトスペースと<EOL>のスキップは他のアイテム +より優先される。 -Example: > - :syn match ifstart "if.*" nextgroup=ifline skipwhite skipempty - :syn match ifline "endif" contained +例: > + :syn match ifstart "\<if.*" nextgroup=ifline skipwhite skipempty :syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained -Note that the last match, which matches any non-white text, is put last, -otherwise the "endif" of the indent would never match, because the "[^ \t].*" -would match first. -Note that this example doesn't work for nested "if"s. You need to add -"contains" arguments to make that work (omitted for simplicity of the -example). + :syn match ifline "endif" contained +マッチ"[^ \t].*"はホワイトスペース以外の全てのテキストにマッチする。よって +"endif"にもマッチする。そのためマッチ"endif"を最後に置き、優先順位を与えている +。 +この例はネストした"if"には機能しないことに注意。ネストに対応されるには引数 +"contains"を指定する必要がある(この例では簡単のため省略した)。 ============================================================================== -7. Syntax patterns *:syn-pattern* *E401* *E402* +7. syntaxのパターン *:syn-pattern* *E401* *E402* -In the syntax commands, a pattern must be surrounded by two identical -characters. This is like it works for the ":s" command. The most common to -use is the double quote. But if the pattern contains a double quote, you can -use another character that is not used in the pattern. Examples: > +syntaxコマンドでは、パターンの前後を同じ文字で囲まなければならない。これは +":s"コマンドと同様である。もっともよく使われるのはダブルクォートである。しかし +パターンがダブルクォートを含んでいる場合は、そのパターンが含んでいない他の文字 +を使ったほうがよい。例: > :syntax region Comment start="/\*" end="\*/" - :syntax region String start=+"+ end=+"+ skip=+\\"+ + :syntax region String start=+"+ end=+"+ skip=+\\"+ -See |pattern| for the explanation of what a pattern is. Syntax patterns are -always interpreted like the 'magic' options is set, no matter what the actual -value of 'magic' is. And the patterns are interpreted like the 'l' flag is -not included in 'cpoptions'. This was done to make syntax files portable and -independent of 'compatible' and 'magic' settings. +パターンの説明については|pattern|を参照。構文パターンは常に'magic'オプションが +セットされているのと同じように解釈される(実際の'magic'オプションの値とは無関係) +。また、'cpoptions'に'l' フラグが含まれていない場合と同じように解釈される。こ +れは構文ファイルの可搬性を高め、'compatible'と'magic'の設定と無関係にするため +である。 -Try to avoid patterns that can match an empty string, such as "[a-z]*". -This slows down the highlighting a lot, because it matches everywhere. +"[a-z]*"など空文字列にマッチするパターンは避けること。これは全ての位置にマッチ +するため、強調がとても遅くなる。 *:syn-pattern-offset* -The pattern can be followed by a character offset. This can be used to -change the highlighted part, and to change the text area included in the -match or region (which only matters when trying to match other items). Both -are relative to the matched pattern. The character offset for a skip -pattern can be used to tell where to continue looking for an end pattern. - -The offset takes the form of "{what}={offset}" -The {what} can be one of seven strings: - -ms Match Start offset for the start of the matched text -me Match End offset for the end of the matched text -hs Highlight Start offset for where the highlighting starts -he Highlight End offset for where the highlighting ends -rs Region Start offset for where the body of a region starts -re Region End offset for where the body of a region ends -lc Leading Context offset past "leading context" of pattern - -The {offset} can be: - -s start of the matched pattern -s+{nr} start of the matched pattern plus {nr} chars to the right -s-{nr} start of the matched pattern plus {nr} chars to the left -e end of the matched pattern -e+{nr} end of the matched pattern plus {nr} chars to the right -e-{nr} end of the matched pattern plus {nr} chars to the left -{nr} (for "lc" only): start matching {nr} chars to the left - -Examples: "ms=s+1", "hs=e-2", "lc=3". - -Although all offsets are accepted after any pattern, they are not always -meaningful. This table shows which offsets are actually used: - - ms me hs he rs re lc ~ -match item yes yes yes yes - - yes -region item start yes - yes - yes - yes -region item skip - yes - - - - yes -region item end - yes - yes - yes yes - -Offsets can be concatenated, with a ',' in between. Example: > +パターンに文字数のオフセットを指定することができる。これによって強調される部分 +を変更したり、マッチやリージョンに含まれるテキスト領域(これは他のアイテムを照 +合するときにだけ関係する)を変更することができる。どちらもマッチしたパターンに +相対的である。skipパターンに対して文字数のオフセットを指定すると、endパターン +の検索が始まる位置を決めることができる。 + +オフセットは"{what}={offset}"の形で指定する。 +{what}は次の7個の文字列のどれかである: + +ms Match Start マッチしたテキストの開始位置のオフセット +me Match End マッチしたテキストの終了位置のオフセット +hs Highlight Start 強調が始まる位置のオフセット +he Highlight End 強調が終わる位置のオフセット +rs Region Start リージョンの本体が始まる位置のオフセット +re Region End リージョンが終わる位置のオフセット +lc Leading Context パターンの"leading context"を過ぎた後のオフセット + +{offset}は次のうちのどれか: + +s パターンのマッチ部分の先頭 +s+{nr} パターンのマッチ部分の先頭から右へ{nr}文字目 +s-{nr} パターンのマッチ部分の先頭から左へ{nr}文字目 +e パターンのマッチ部分の末尾 +e+{nr} パターンのマッチ部分の末尾から右へ{nr}文字目 +e-{nr} パターンのマッチ部分の末尾から左へ{nr}文字目 +{nr} ("lc"専用): ら左へ{nr}文字目 + +例: "ms=s+1", "hs=e-2", "lc=3". + +どのパターンの後にどのオフセットを指定してもよいが、それが意味を持たない場合も +ある。次の表はどのオフセットが実際に使われるかを示している: + + ms me hs he rs re lc ~ +match item yes yes yes yes - - yes +region item start yes - yes - yes - yes +region item skip - yes - - - - yes +region item end - yes - yes - yes yes + +複数のオフセットの間に','を入れて連結することができる。例: > :syn match String /"[^"]*"/hs=s+1,he=e-1 -< +< some "string" text - ^^^^^^ highlighted - -Notes: -- There must be no white space between the pattern and the character - offset(s). -- The highlighted area will never be outside of the matched text. -- A negative offset for an end pattern may not always work, because the end - pattern may be detected when the highlighting should already have stopped. -- The start of a match cannot be in a line other than where the pattern - matched. This doesn't work: "a\nb"ms=e. You can make the highlighting - start in another line, this does work: "a\nb"hs=e. - -Example (match a comment but don't highlight the /* and */): > + ^^^^^^ ここが強調される + +注意: +- パターンとオフセットの間にホワイトスペースを挟んではならない。 +- 強調される領域がマッチしたテキストの外側にはみ出してはならない。 +- endパターンに対する負のオフセットは機能しない場合がある。これは強調が既に終 + わっているべきとき、endパターンは検出されない可能性があるからである。 +- マッチの開始位置が、パターンがマッチした位置と別の行になってはならない。つま + り"a\nb"ms=eというのは正常に機能しない。強調の開始位置は別の行にあってもかま + わない。"a\nb"hs=eというのは正常に機能する。 + +例(コメントにマッチするが /* と */ は強調しない): > :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1 < /* this is a comment */ - ^^^^^^^^^^^^^^^^^^^ highlighted + ^^^^^^^^^^^^^^^^^^^ ここが強調される -A more complicated Example: > +より複雑な例: > :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1 < abcfoostringbarabc - mmmmmmmmmmm match - ssrrrreee highlight start/region/end ("Foo", "Exa" and "Bar") + mmmmmmmmmmm マッチ部分 + ssrrrreee start/region/endとして強調される部分 ("Foo", "Exa", "Bar") Leading context *:syn-lc* *:syn-leading* *:syn-context* -Note: This is an obsolete feature, only included for backwards compatibility -with previous Vim versions. It's now recommended to use the |/\@<=| construct -in the pattern. +注意:これは古い機能であり、以前のバージョンとの後方互換性のためだけに残されて +いる。現在はパターン中の|/\@<=|コンストラクトを使うことが推奨されている。 -The "lc" offset specifies leading context -- a part of the pattern that must -be present, but is not considered part of the match. An offset of "lc=n" will -cause Vim to step back n columns before attempting the pattern match, allowing -characters which have already been matched in previous patterns to also be -used as leading context for this match. This can be used, for instance, to -specify that an "escaping" character must not precede the match: > +"lc"オフセットはリーディングコンテキストを指定する。これはパターンの一部になけ +ればならないが、マッチ部分の一部とは見なされないものである。"lc=n"のオフセット +を使うとパターンの照合を試みる前にn桁戻るようになる。リーディングコンテキスト +内に他のパターンにマッチしている文字が現れてもよい。これはマッチの前方にあって +はならない「エスケープ」文字を指定する場合などに使える: > :syn match ZNoBackslash "[^\\]z"ms=s+1 :syn match WNoBackslash "[^\\]w"lc=1 :syn match Underline "_\+" < ___zzzz ___wwww - ^^^ ^^^ matches Underline - ^ ^ matches ZNoBackslash - ^^^^ matches WNoBackslash + ^^^ ^^^ Underlineにマッチする + ^ ^ ZNoBackslashにマッチする + ^^^^ WNoBackslashにマッチする -The "ms" offset is automatically set to the same value as the "lc" offset, -unless you set "ms" explicitly. +"ms"を指定しないと自動的に"lc"と同じ値にセットされる。 Multi-line patterns *:syn-multi-line* -The patterns can include "\n" to match an end-of-line. Mostly this works as -expected, but there are a few exceptions. +パターンが"\n"を含むと改行にマッチするようになる。たいていの場合これは期待通り +に動作するが、少しだけ例外がある。 -When using a start pattern with an offset, the start of the match is not -allowed to start in a following line. The highlighting can start in a -following line though. +startパターンにオフセットをつけるとき、マッチ部分の開始位置が次の行の先頭であ +ってはならない。強調は次の行で始まってもよい。 -The skip pattern can include the "\n", but the search for an end pattern will -continue in the first character of the next line, also when that character is -matched by the skip pattern. This is because redrawing may start in any line -halfway a region and there is no check if the skip pattern started in a -previous line. For example, if the skip pattern is "a\nb" and an end pattern -is "b", the end pattern does match in the second line of this: > +skipパターンも"\n"を含んでよい。ただし次の行の最初の文字がskipパターンにマッチ +していても、そこからendパターンの検索が続けられる。これは、再描画は領域内のど +の行でも始まることができ、skipパターンが前の行から始まったかどうかはチェックさ +れないからである。例えば、skipパターンが"a\nb"で、endパターンが"b"のとき、次の +テキストの2行目でendパターンがマッチする。 > x x a b x x -Generally this means that the skip pattern should not match any characters -after the "\n". +つまり、skipパターンは"\n"以降の文字にはマッチしないことになる。 -External matches *:syn-ext-match* +外部マッチ *:syn-ext-match* -These extra regular expression items are available in region patterns: +リージョンパターンにおいては特別にこれらの正規表現が使える: */\z(* */\z(\)* *E50* *E52* - \z(\) Marks the sub-expression as "external", meaning that it is can - be accessed from another pattern match. Currently only usable - in defining a syntax region start pattern. - - \z1 ... \z9 */\z1* */\z2* *\z9* *E66* *E67* - Matches the same string that was matched by the corresponding - sub-expression in a previous start pattern match. - -Sometimes the start and end patterns of a region need to share a common -sub-expression. A common example is the "here" document in Perl and many Unix -shells. This effect can be achieved with the "\z" special regular expression -items, which marks a sub-expression as "external", in the sense that it can be -referenced from outside the pattern in which it is defined. The here-document -example, for instance, can be done like this: > + \z(\) 一部を「external」としてマークする。これをつけると他のパターン + からアクセスできるようになる。現在はリージョンのstartパターン + 内でのみ使用可能。 + + */\z1* */\z2* */\z3* */\z4* */\z5* + \z1 ... \z9 */\z6* */\z7* */\z8* */\z9* *E66* *E67* + startパターンにマッチしたテキスト中からマークしておいた部分を + 参照する。 + +リージョンのstartとendパターンで正規表現の一部を共有したい場合がある。 +一般的な例としてはPerlやUnixシェルのヒアドキュメントがある。これは特別な正規表 +現アイテム"\z"を使えば達成できる。これは正規表現の一部を"external"としてマーク +しておく。するとその部分を他のパターンから参照できるようになる。例えば、ヒアド +キュメントはこうすればよい: > :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" -As can be seen here, the \z actually does double duty. In the start pattern, -it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it -changes the \1 back-reference into an external reference referring to the -first external sub-expression in the start pattern. External references can -also be used in skip patterns: > +このように、\zは2つの役割を果たす。startパターンにおいては正規表現の一部 +"\(\I\i*\)"をexternalとしてマークする。endパターンでは\1によってstartパターン +中の最初のマークされた部分への外部参照とする。外部参照はskipパターン中でも使え +る: > :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" -Note that normal and external sub-expressions are completely orthogonal and -indexed separately; for instance, if the pattern "\z(..\)\(..\)" is applied -to the string "aabb", then \1 will refer to "bb" and \z1 will refer to "aa". -Note also that external sub-expressions cannot be accessed as back-references -within the same pattern like normal sub-expressions. If you want to use one -sub-expression as both a normal and an external sub-expression, you can nest -the two, as in "\(\z(...\)\)". +通常のマークとexternalなマークはまったく独立であり、別々に番号が振られる。例え +ば、文字列"aabb"に対してパターン"\z(..\)\(..\)"を適用すると、\1は"bb"を参照し +、\z1は"aa"を参照するようになる。externalなマークをした部分は、通常のマークと +違って、同一パターン内で後方参照することはできない。ある部分に対して通常のマー +ク、externalなマーク両方をつけたい場合は、"\(\z(...\)\)"のようにネストさせるこ +とができる。 -Note that only matches within a single line can be used. Multi-line matches -cannot be referred to. +一行内でマッチした部分しか参照できないことに注意。複数行にわたってマッチした部 +分は参照できない。 ============================================================================== -8. Syntax clusters *:syn-cluster* *E400* +8. クラスタ *:syn-cluster* *E400* :sy[ntax] cluster {cluster-name} [contains={group-name}..] [add={group-name}..] [remove={group-name}..] -This command allows you to cluster a list of syntax groups together under a -single name. +このコマンドを使うと、構文グループのリストを1つの名前のもとにまとめることがで +きる。このまとまりのことをクラスタと呼ぶ。 contains={group-name}.. - The cluster is set to the specified list of groups. + クラスタに含まれるグループを指定する。 add={group-name}.. - The specified groups are added to the cluster. + 指定したグループをクラスタに加える。 remove={group-name}.. - The specified groups are removed from the cluster. + 指定したグループをクラスタからとり除く。 -A cluster so defined may be referred to in a contains=.., nextgroup=.., add=.. -or remove=.. list with a "@" prefix. You can also use this notation to -implicitly declare a cluster before specifying its contents. +定義されたクラスタはcontains=..やnextgroup=..、add=..、remove=..などで使うこと +ができる。そのとき場合は"@"をつける。また、この記法によってクラスタの中身を定 +義する前にそのクラスタ名を使用することができる。 Example: > :syntax match Thing "# [^#]\+ #" contains=@ThingMembers :syntax cluster ThingMembers contains=ThingMember1,ThingMember2 -As the previous example suggests, modifications to a cluster are effectively -retroactive; the membership of the cluster is checked at the last minute, so -to speak: > +この例からわかるように、クラスタに対する変更はさかのぼって効果がある。クラスタ +の中身は直前になってチェックされる。言ってみれば: > :syntax keyword A aaa + :syntax keyword B bbb :syntax cluster AandB contains=A :syntax match Stuff "( aaa bbb )" contains=@AandB - :syntax cluster AandB add=B " now both keywords are matched in Stuff + :syntax cluster AandB add=B " これによって2つのキーワードがStuff内でマ + ッチするようになる -This also has implications for nested clusters: > +これはクラスタのネスト度にも関係がある: > :syntax keyword A aaa :syntax keyword B bbb :syntax cluster SmallGroup contains=B :syntax cluster BigGroup contains=A,@SmallGroup :syntax match Stuff "( aaa bbb )" contains=@BigGroup - :syntax cluster BigGroup remove=B " no effect, since B isn't in BigGroup - :syntax cluster SmallGroup remove=B " now bbb isn't matched within Stuff + :syntax cluster BigGroup remove=B " BはBigGroup内にないので無意味 + :syntax cluster SmallGroup remove=B " Stuff内でbbbがマッチしなくなる ============================================================================== -9. Including syntax files *:syn-include* *E397* +9. 構文ファイルのインクルード *:syn-include* *E397* -It is often useful for one language's syntax file to include a syntax file for -a related language. Depending on the exact relationship, this can be done in -two different ways: +構文ファイルの中で、それに関連した構文ファイルをインクルードしたい場合がある。 +そうするには、構文ファイルの関係によって2種類の方法がある: - - If top-level syntax items in the included syntax file are to be - allowed at the top level in the including syntax, you can simply use - the |:runtime| command: > + - インクルードされるファイル内のトップレベルのアイテムをそのままトップ + レベルとしたいなら、単に|:runtime|コマンドを使えばよい: > " In cpp.vim: :runtime! syntax/c.vim :unlet b:current_syntax -< - If top-level syntax items in the included syntax file are to be - contained within a region in the including syntax, you can use the - ":syntax include" command: +< - インクルードされるファイル内のトップレベルのアイテムをリージョンに内 + 包させたいなら、":syntax include"コマンドを使うとよい: > :sy[ntax] include [@{grouplist-name}] {file-name} - All syntax items declared in the included file will have the - "contained" flag added. In addition, if a group list is specified, - all top-level syntax items in the included file will be added to - that list. > + インクルードされるファイル中で宣言された構文アイテム全てに + "contained"フラグがつけられる。さらにグループのリストを指定すると、 + インクルードされるファイル中のトップレベルの構文アイテム全てに対して + そのリストがつけられる。 > " In perl.vim: :syntax include @Pod <sfile>:p:h/pod.vim :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod < - When {file-name} is an absolute path (starts with "/", "c:", "$VAR" - or "<sfile>") that file is sourced. When it is a relative path - (e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'. - All matching files are loaded. Using a relative path is - recommended, because it allows a user to replace the included file - with his own version, without replacing the file that does the ":syn - include". + {file-name}が絶対パスである場合("/", "c:", "$VAR", "<sfile>"のどれか + で始まる場合)そのファイルが読み込まれる(sourceされる)。相対パスの場 + 合(例:"syntax/pod.vim")、そのファイルが'runtimepath'中から探される。 + マッチしたファイル全てが読み込まれる。相対パスを使用することが推奨さ + れる。そうすればユーザが":syn include"を書き換えることなく、インクル + ードされるファイルを改変して別の場所におけるからである。 ============================================================================== -10. Synchronizing *:syn-sync* *E403* *E404* +10. 表示のシンクロナイズ *:syn-sync* *E403* *E404* -Vim wants to be able to start redrawing in any position in the document. To -make this possible it needs to know the syntax state at the position where -redrawing starts. +ドキュメント中のどの位置からでも再描画を開始できると望ましい。これを実現するに +は、再描画を開始する位置における構文の状態を知る必要がある。 :sy[ntax] sync [ccomment [group-name] | minlines={N} | ...] -There are four ways to synchronize: -1. Always parse from the start of the file. +シンクロナイズには4つのやり方がある: +1. 常にファイルの最初からパースする。 |:syn-sync-first| -2. Based on C-style comments. Vim understands how C-comments work and can - figure out if the current line starts inside or outside a comment. +2. Cスタイルのコメントに基づく。VimはCコメントの挙動を理解し、現在行がコメント + の内側から始まっているか外側から始まっているかを判定することができる。 |:syn-sync-second| -3. Jumping back a certain number of lines and start parsing there. +3. 一定行さかのぼり、そこからパースを開始する。 |:syn-sync-third| -4. Searching backwards in the text for a pattern to sync on. +4. テキストをさかのぼり、シンクロナイズを始める目印の正規表現を検索する。 |:syn-sync-fourth| *:syn-sync-maxlines* *:syn-sync-minlines* -For the last three methods, the line range where the parsing can start is -limited by "minlines" and "maxlines". +最後の3つの方法に関して、さかのぼる行数は"minlines"と"maxlines"で制限される。 -If the "minlines={N}" argument is given, the parsing always starts at least -that many lines backwards. This can be used if the parsing may take a few -lines before it's correct, or when it's not possible to use syncing. +引数"minlines={N}"が指定されると、常に少なくともその行数さかのぼってパースが開 +始される。パースする行数が少なすぎて正しく強調できないかもしれないとき、または +シンクロナイズを使うのが不可能であるとき、この引数を使うとよい。 -If the "maxlines={N}" argument is given, the number of lines that are searched -for a comment or syncing pattern is restricted to N lines backwards (after -adding "minlines". This is useful if you have few things to sync on and a -slow machine. Example: > +引数"maxlines={N}"が指定されると、コメントや正規表現を検索するためにさかのぼる +行数が最大N行になる。これは遅いマシンを使っていて、シンクロナイズする行数が少 +ないとわかっているときに便利である。例: > :syntax sync ccomment maxlines=500 -< +< *:syn-sync-linebreaks* -When using a pattern that matches multiple lines, a change in one line may -cause a pattern to no longer match in a previous line. This means has to -start above where the change was made. How many lines can be specified with -the "linebreaks" argument. For example, when a pattern may include one line -break use this: > +複数行にマッチする正規表現を使っているとき、ある行に変更を施すと、前の行でマッ +チしていた正規表現がマッチしなくなってしまうことがある。つまり、変更が施された +場所より上からシンクロナイズを始めなければならないことを意味する。引数 +"linebreaks"には行数を指定する。例えば、正規表現が改行を1個含んでいる場合はこ +のようにする: > :syntax sync linebreaks=1 -The result is that redrawing always starts at least one line before where a -change was made. The default value for "linebreaks" is zero. Usually the -value for "minlines" is bigger than "linebreaks". - +こうすると、常に変更が施された行の少なくとも1行前から再描画が開始される。 +"linebreaks"のデフォルト値は0。通常"minlines"の値は"linebreaks"の値より大きい。 -First syncing method: *:syn-sync-first* +第一の方法: *:syn-sync-first* > :syntax sync fromstart -The file will be parsed from the start. This makes syntax highlighting -accurate, but can be slow for long files. Vim caches previously parsed text, -so that it's only slow when parsing the text for the first time. However, -when making changes some part of the next needs to be parsed again (worst -case: to the end of the file). +ファイルの最初からパースする。これを使うと構文強調が正確になるが、長いファイル +に対しては遅くなる。Vimは以前にパースされたテキストをキャッシュしておく。その +ため、遅くなるのはファイルを最初にパースするときだけである。しかし、変更を施す +と、それ以降の一部をパースし直さなければならなくなる(最悪の場合はファイルの最 +後まで)。 -Using "fromstart" is equivalent to using "minlines" with a very large number. +"fromstart"を使うことは"minlines"を非常に大きな値にすることと同じ効果を持つ。 -Second syncing method: *:syn-sync-second* *:syn-sync-ccomment* +第二の方法: *:syn-sync-second* *:syn-sync-ccomment* -For the second method, only the "ccomment" argument needs to be given. -Example: > +第二の方法を使うには、単に引数"ccomment"をつければよい。 +例: > :syntax sync ccomment -When Vim finds that the line where displaying starts is inside a C-style -comment, the last region syntax item with the group-name "Comment" will be -used. This requires that there is a region with the group-name "Comment"! -An alternate group name can be specified, for example: > +画面最上行がCスタイルコメントの内側にあると判断される場合、グループ名が +"Comment"のリージョン構文アイテムが使われる。この方法を使うには"Comment"という +グループ名のリージョンがなければならないことに注意。他のグループ名を指定するこ +ともできる。例: > :syntax sync ccomment javaComment -This means that the last item specified with "syn region javaComment" will be -used for the detected C comment region. This only works properly if that -region does have a start pattern "\/*" and an end pattern "*\/". +こうすると、検出されたCコメントのリージョンに対して"syn region javaComment"で +指定されたアイテムのうち最後のものが使われる。ここで指定するリージョンのstart +パターンが"\/*"、endパターンが"*\/"となっていないと適切に機能しない。 -The "maxlines" argument can be used to restrict the search to a number of -lines. The "minlines" argument can be used to at least start a number of -lines back (e.g., for when there is some construct that only takes a few -lines, but it hard to sync on). +引数"maxlines"を使うと検索の行数を制限できる。引数"minlines"を使うと少なくとも +その行数だけさかのぼって開始させることができる(例:2,3行だけを受け取るコンスト +ラクトがある場合。ただしその場合シンクロナイズするのが困難) -Note: Syncing on a C comment doesn't work properly when strings are used -that cross a line and contain a "*/". Since letting strings cross a line -is a bad programming habit (many compilers give a warning message), and the -chance of a "*/" appearing inside a comment is very small, this restriction -is hardly ever noticed. +注意: "*/"を含む文字列で行をまたぐものがあると、Cコメントによるシンクロナイズ +は適切に機能しない。行をまたいで文字列を書くのは悪いプログラミング習慣である +(多くのコンパイラが警告を出す)。また、コメント中に"*/"が現れる機会はまれなので +、この制限は注意するほどのものではない。 -Third syncing method: *:syn-sync-third* +第三の方法: *:syn-sync-third* -For the third method, only the "minlines={N}" argument needs to be given. -Vim will subtract {N} from the line number and start parsing there. This -means {N} extra lines need to be parsed, which makes this method a bit slower. -Example: > +第三の方法を使うには引数"minlines={N}"を加えればよい。この方法を指定すると +、{N}行前からパースを開始する。これは{N}行余分にパースされることを意味する。そ +のためこの方法は少し遅くなる。 +例: > :syntax sync minlines=50 -"lines" is equivalent to "minlines" (used by older versions). - - -Fourth syncing method: *:syn-sync-fourth* - -The idea is to synchronize on the end of a few specific regions, called a -sync pattern. Only regions can cross lines, so when we find the end of some -region, we might be able to know in which syntax item we are. The search -starts in the line just above the one where redrawing starts. From there -the search continues backwards in the file. - -This works just like the non-syncing syntax items. You can use contained -matches, nextgroup, etc. But there are a few differences: -- Keywords cannot be used. -- The syntax items with the "sync" keyword form a completely separated group - of syntax items. You can't mix syncing groups and non-syncing groups. -- The matching works backwards in the buffer (line by line), instead of - forwards. -- A line continuation pattern can be given. It is used to decide which group - of lines need to be searched like they were one line. This means that the - search for a match with the specified items starts in the first of the - consecutive that contain the continuation pattern. -- When using "nextgroup" or "contains", this only works within one line (or - group of continued lines). -- When using a region, it must start and end in the same line (or group of - continued lines). Otherwise the end is assumed to be at the end of the - line (or group of continued lines). -- When a match with a sync pattern is found, the rest of the line (or group of - continued lines) is searched for another match. The last match is used. - This is used when a line can contain both the start end the end of a region - (e.g., in a C-comment like /* this */, the last "*/" is used). - -There are two ways how a match with a sync pattern can be used: -1. Parsing for highlighting starts where redrawing starts (and where the - search for the sync pattern started). The syntax group that is expected - to be valid there must be specified. This works well when the regions - that cross lines cannot contain other regions. -2. Parsing for highlighting continues just after the match. The syntax group - that is expected to be present just after the match must be specified. - This can be used when the previous method doesn't work well. It's much - slower, because more text needs to be parsed. -Both types of sync patterns can be used at the same time. - -Besides the sync patterns, other matches and regions can be specified, to -avoid finding unwanted matches. - -[The reason that the sync patterns are given separately, is that mostly the -search for the sync point can be much simpler than figuring out the -highlighting. The reduced number of patterns means it will go (much) -faster.] +"lines"は"minlines"と同じ意味である(古いバージョンで使われている)。 + + +第四の方法: *:syn-sync-fourth* + +シンクロナイズパターンと呼ばれる特定のリージョンの末尾でシンクロナイズするもの +である。行をまたげるのはリージョンだけなので、リージョンの末尾に出会ったら、ど +の構文アイテムの中にいるのかを知ることができる。再描画が始まる行のすぐ上から検 +索が始まり、ファイルの後方に向かって検索する。 + +これはシンクロナイズしない構文アイテムとちょうど同じように機能する。内包された +マッチ、nextgroupなどを使うことができる。ただし少しだけ違いがある。 +- キーワードを使うことはできない。 +- "sync"キーワード付きの構文アイテムは、完全に別の構文アイテムのグループを形成 + する。シンクロナイズするグループとしないグループを混ぜることはできない。 +- 照合はバッファ内で1行ごとに逆向きに行われる(前向きではない)。 +- 行継続パターンをつけることができる。これを使うと、あたかも1行であるかのよう + に検索する一連の行を指定することができる。これは、指定したアイテムとの照合が + 継続パターンを含む一連の行の最初から始まることを意味する。 +- "nextgroup"や"contains"は1行(または継続された一連の行)内でだけ有効。 +- リージョンは同一行(または継続された一連の行)内で開始・終了しなければならない + 。そうでないと行末(または継続された一連の行)内で終わるものとされる。 +- シンクロナイズパターンとのマッチが見つかると、その行(または継続された一連の + 行)の残りから再びマッチが探される。最後のマッチが使われる。 + これはリージョンの開始と終了が同一行内にあるとき使われる + (例: /* this */のようなCコメントでは、最後の"*/"が使われる)。 + +シンクロナイズパターンとのマッチは2通りの使い方がある。 +1. 再描画を始める場所(シンクロナイズパターンの検索が始まる場所でもある)から強 + 調のためのパースを始める。そこで有効であると期待される構文グループを指定し + なければならない。行をまたぐリージョンが他のリージョンを含んではならない場 + 合にこれはうまく機能する。 +2. 強調のためのパースはマッチの直後から継続される。マッチの直後に現れると期待 + される構文グループを指定しなければならない。 + これは前の方法がうまくいかないときに使われる。これは、より多くのテキストを + パースする必要があるため、とても遅い。 +両方のタイプを同時に使うこともできる。 + +シンクロナイズパターンだけでなく、他のマッチとリージョンを指定して望まないマッ +チが見つかるのを避けることができる。 + +[シンクロナイズパターンが別々に与えられる理由は、シンクロナイズポイントの検索 +はたいていの場合、強調するところを判別するよりずっと単純だからである。パターン +の数が減るとそれだけ速くなる。] *syn-sync-grouphere* *E393* *E394* :syntax sync match {sync-group-name} grouphere {group-name} "pattern" .. - - Define a match that is used for syncing. {group-name} is the - name of a syntax group that follows just after the match. Parsing - of the text for highlighting starts just after the match. A region - must exist for this {group-name}. The first one defined will be used. - "NONE" can be used for when there is no syntax group after the match. + + シンクロナイズ用に使うマッチを定義する。{group-name}はマッチのすぐ後に + 続く構文グループの名前である。強調のためのテキストのパースはマッチの直 + 後から始まる。この{group-name}がついたリージョンが存在しなければならな + い。最初に定義されたリージョンが使われる。マッチの後に構文グループが続 + かない場合は"NONE"を使う。 *syn-sync-groupthere* :syntax sync match {sync-group-name} groupthere {group-name} "pattern" .. - Like "grouphere", but {group-name} is the name of a syntax group that - is to be used at the start of the line where searching for the sync - point started. The text between the match and the start of the sync - pattern searching is assumed not to change the syntax highlighting. - For example, in C you could search backwards for "/*" and "*/". If - "/*" is found first, you know that you are inside a comment, so the - "groupthere" is "cComment". If "*/" is found first, you know that you - are not in a comment, so the "groupthere" is "NONE". (in practice - it's a bit more complicated, because the "/*" and "*/" could appear - inside a string. That's left as an exercise to the reader...). + "grouphere"と同様。ただし{group-name}はシンクロナイズポイントの検索が + 始まる行の行頭で使われる構文グループの名前である。マッチとシンクロナイ + ズパターンの検索が始まる位置との間のテキストは構文強調を変えてはならな + い。例えばCにおいて"/*"と"*/"を後方検索することができる。"/*"が先に見 + つかったら、今はコメントの内側にいるとわかる。なので"groupthere"は + "cComment"となる。"*/"が先に見つかったら今はコメントの中ではないとわか + る。なので"groupthere"は"NONE"となる。(実際は、文字列の中に"/*"と"*/" + があるかもしれないので、もう少し込み入っている。これは読者の練習問題と + しておく...)。 :syntax sync match .. :syntax sync region .. - Without a "groupthere" argument. Define a region or match that is - skipped while searching for a sync point. + 引数"groupthere"なしの場合。シンクロナイズポイントの検索の際にスキップ + されるリージョンやマッチを定義する。 :syntax sync linecont {pattern} - When {pattern} matches in a line, it is considered to continue in - the next line. This means that the search for a sync point will - consider the lines to be concatenated. + {pattern}とのマッチが次の行にも継続されるとみなされる。つまりシンクロ + ナイズポイントの検索の際、行は連結されているものと見なされる。 -If the "maxlines={N}" argument is given too, the number of lines that are -searched for a match is restricted to N. This is useful if you have very -few things to sync on and a slow machine. Example: > +引数"maxlines={N}"が同時に与えられると、マッチを検索する行がN行に制限される。 +これは遅いマシンを使っていて、シンクロナイズするものが少ないとわかっているとき +に便利。例: > :syntax sync maxlines=100 -You can clear all sync settings with: > +全てのシンクロナイズの設定をクリアするには: > :syntax sync clear -You can clear specific sync patterns with: > - :syntax sync clear {sync-group-name} .. +あるシンクロナイズパターンをクリアするには: > + :syntax sync clear {sync-group-name} .. ============================================================================== -11. Listing syntax items *:syntax* *:sy* *:syn* *:syn-list* +11. 構文アイテムのリストを表示する *:syntax* *:sy* *:syn* *:syn-list* -This commands lists all the syntax items: > +このコマンドは全ての構文アイテムのリストを表示する: > :sy[ntax] [list] -To show the syntax items for one syntax group: > +ある構文グループに属する構文アイテムを表示するには: > :sy[ntax] list {group-name} -To list the syntax groups in one cluster: *E392* > - +あるクラスタに属する構文グループを表示するには: *E392* +> :sy[ntax] list @{cluster-name} -See above for other arguments for the ":syntax" command. +":syntax"コマンドに対する他の引数については上を参照。 -Note that the ":syntax" command can be abbreviated to ":sy", although ":syn" -is mostly used, because it looks better. +":syntax"コマンドは":sy"とも略記できる。しかし":syn"の方が見栄えがよいため、普 +通はこちらが使われる。 ============================================================================== -12. Highlight command *:highlight* *:hi* *E28* *E411* *E415* - -There are three types of highlight groups: -- The ones used for specific languages. For these the name starts with the - name of the language. Many of these don't have any attributes, but are - linked to a group of the second type. -- The ones used for all syntax languages. -- The ones used for the 'highlight' option. +12. 強調コマンド *:highlight* *:hi* *E28* *E411* *E415* + +強調グループには3つのタイプがある: +- 特定の言語に使われるもの。名前がその言語の名前で始まる。このタイプのほとんど + は属性を持たず、2番目のタイプのグループにリンクされる。 +- 全ての構文言語に対して使われるもの。 +- 'highlight'オプションに使われるもの。 *hitest.vim* -You can see all the groups currently active with this command: > +現在有効な全てのグループを知るにはこのコマンドを使う: > :so $VIMRUNTIME/syntax/hitest.vim -This will open a new window containing all highlight group names, displayed -in their own color. +このコマンドは新しいウィンドウを開き、そこに全ての強調グループ名を、それ自身の +色を使って表示する。 *:colo* *:colorscheme* *E185* -:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' - for the file "colors/{name}.vim. The first one that - is found is loaded. - To see the name of the currently active color scheme: > - :echo colors_name +:colo[rscheme] {name} カラースキーム{name}を読み込む。これは'runtimepath'中 + から"colors/{name}.vim"というファイルを検索する。最初 + に見つかったものが読み込まれる。 + 現在使われているカラースキームの名前を見るには: > + :echo g:colors_name +< 再帰的な読み込みはされない。つまりカラースキームスクリ + プト中で":colorscheme"を使うことはできない。 -:hi[ghlight] List all the current highlight groups that have - attributes set. +:hi[ghlight] 属性がセットされた強調グループを全て表示する。 :hi[ghlight] {group-name} - List one highlight group. + 1つの強調グループを表示する。 -:hi[ghlight] clear Reset all highlighting to the defaults. Removes all - highlighting for groups added by the user! - Uses the current value of 'background' to decide which - default colors to use. +:hi[ghlight] clear 全ての強調をデフォルトに戻す。ユーザによって加えられた + グループに対する強調が全て消去される。 + 現在の'background'の値によってデフォルトの色が決まる。 :hi[ghlight] clear {group-name} :hi[ghlight] {group-name} NONE - Disable the highlighting for one highlight group. It - is _not_ set back to the default colors. + 1つの強調グループに対する強調を無効にする。デフォルト + の色に戻すのではない。 :hi[ghlight] [default] {group-name} {key}={arg} .. - Add a highlight group, or change the highlighting for - an existing group. - See |highlight-args| for the {key}={arg} arguments. - See |:highlight-default| for the optional [default] - argument. - -Normally a highlight group is added once, in the *.vim file. This sets -the default values for the highlighting. After that, you can use additional -highlight commands to change the arguments that you want to set to -non-default values. The value "NONE" can be used to switch the value off or -go back to the default value. - -Example. The syntax.vim file contains this line: > - :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff - -You can change this by giving another ":highlight: command: > + 強調グループを追加する、または既存のグループに対する強 + 調を変更する。 + 引数{key}={arg}については|highlight-args|を参照。 + オプショナルな引数[default]については + |:highlight-default|を参照。 + +通常、強調グループはスタートアップ時に一度だけ追加される。これは強調のデフォル +ト値をセットする。その後、強調コマンドを使うことによってデフォルトでない値に変 +えることができる。値"NONE"を使うとその値をオフにしたりデフォルト値に戻したりで +きる。 + +色を変える簡単な方法は|:colorscheme|コマンドを使うことである。これは次のような +":highlight"コマンドがいくつか書かれたファイルを読み込む: > + :hi Comment gui=bold -Note that all settings that are not included remain the same, only the -specified field is used, and settings are merged with previous ones. So, the -result is like this single command has been used: > +ファイルに含まれない設定は変更されないままである。指定されたフィールドだけが使 +われ、設定がそれ以前のものとマージされる。なのでその結果は次のコマンド1つが実 +行されるのと同じである: > :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold < *highlight-args* *E416* *E417* *E423* -There are three types of terminals for highlighting: -term a normal terminal (vt100, xterm) -cterm a color terminal (MS-DOS console, color-xterm, these have the "Co" - termcap entry) -gui the GUI +強調に関しては3種類のターミナルがある: +term 通常のターミナル(vt100, xterm) +cterm カラーターミナル(MS-DOS console, color-xterm, これらは"Co"という + termcapエントリをもつ) +gui GUI -For each type the highlighting can be given. This makes it possible to use -the same syntax file on all terminals, and use the optimal highlighting. +それぞれのタイプに対して強調を指定することができる。これによって同じ構文ファイ +ルを全てのターミナルに対して使用することができ、最善の強調を利用できるようにな +っている。 -1. highlight arguments for normal terminals +1. highlightコマンドの引数(通常のターミナル用) term={attr-list} *attr-list* *highlight-term* *E418* - attr-list is a comma separated list (without spaces) of the - following items (in any order): + attr-listはカンマ区切りのリスト(スペースは入れない)で、要素は以下の通 + り(順序はどうでもよい): bold underline reverse - inverse same as reverse + inverse reverseと同じ italic standout - NONE no attributes used (used to reset it) + NONE 属性を使用しない(属性をリセットするために使う) - Note that "bold" can be used here and by using a bold font. They - have the same effect. + ここで"bold"を指定してもよいし、太文字のフォントを使ってもよい。どちら + も同じことになる。 start={term-list} *highlight-start* *E422* stop={term-list} *term-list* *highlight-stop* - These lists of terminal codes can be used to get - non-standard attributes on a terminal. - - The escape sequence specified with the "start" argument - is written before the characters in the highlighted - area. It can be anything that you want to send to the - terminal to highlight this area. The escape sequence - specified with the "stop" argument is written after the - highlighted area. This should undo the "start" argument. - Otherwise the screen will look messed up. - - The {term-list} can have two forms: - - 1. A string with escape sequences. - This is any string of characters, except that it can't start with - "t_" and blanks are not allowed. The <> notation is recognized - here, so you can use things like "<Esc>" and "<Space>". Example: + これらのターミナルコードのリストを使ってターミナルについての標準的でな + い属性を得ることができる。 + + 引数"start"でエスケープシーケンスを指定すると、強調するテキストの前に + それが書き込まれる。そのテキストを強調する際にターミナルに送りたいもの + をなんでも指定できる。引数"stop"でエスケープシーケンスを指定すると、強 + 調されるテキストの後にそれが書き込まれる。"start"で行ったことを"stop" + で元に戻すべきである。そうしないとスクリーンがごちゃごちゃになってしま + うだろう。 + + {term-list}は2つの形を持つ: + + 1. エスケープシーケンス付きの文字列。 + これは"t_"で始まるものと空文字列を除く任意の文字列である。"<Esc>"や + "<Space>"のような<>記法が認識される。例: start=<Esc>[27h;<Esc>[<Space>r; - 2. A list of terminal codes. - Each terminal code has the form "t_xx", where "xx" is the name of - the termcap entry. The codes have to be separated with commas. - White space is not allowed. Example: + 2. ターミナルコードのリスト。 + ターミナルコードは"t_xx"の形を持つ。"xx"はtermcapエントリ名である。 + ターミナルコードはカンマで区切る。ホワイトスペースは使えない。例: start=t_C1,t_BL - The terminal codes must exist for this to work. + 対応するターミナルコードが存在しなければならない。 - -2. highlight arguments for color terminals +2. highlightコマンドの引数(カラーターミナル用) cterm={attr-list} *highlight-cterm* - See above for the description of {attr-list} |attr-list|. - The "cterm" argument is likely to be different from "term", when - colors are used. For example, in a normal terminal comments could - be underlined, in a color terminal they can be made Blue. - Note: Many terminals (e.g., DOS console) can't mix these attributes - with coloring. Use only one of "cterm=" OR "ctermfg=" OR "ctermbg=". + {attr-list}の説明は上を参照|attr-list|。 + 色を使う場合、引数"cterm"は"term"と異なる結果になる。例えば、通常のタ + ーミナルではコメントにアンダーラインを引き、カラーターミナルではコメン + トを青色で表示することができる。 + 注意:DOSコンソールなど多くのターミナルでは色づけの際にこれらの属性を混 + 在させることはできない。"cterm="か"ctermfg="が"ctermbg="のどれか1つだ + けを使うこと。 ctermfg={color-nr} *highlight-ctermfg* *E421* ctermbg={color-nr} *highlight-ctermbg* - The {color-nr} argument is a color number. Its range is zero to - (not including) the number given by the termcap entry "Co". - The actual color with this number depends on the type of terminal - and its settings. Sometimes the color also depends on the settings of - "cterm". For example, on some systems "cterm=bold ctermfg=3" gives - another color, on others you just get color 3. - - For an xterm this depends on your resources, and is a bit - unpredictable. See your xterm documentation for the defaults. The - colors for a color-xterm can be changed from the .Xdefaults file. - Unfortunately this means that it's not possible to get the same colors - for each user. See |xterm-color| for info about color xterms. - - The MSDOS standard colors are fixed (in a console window), so these - have been used for the names. But the meaning of color names in X11 - are fixed, so these color settings have been used, to make the - highlighting settings portable (complicated, isn't it?). The - following names are recognized, with the color number used: - + 引数{color-nr}で色番号を指定する。色番号の範囲は0からtermcapエントリ + "Co"で与えられる数(それ自身は含まない)までである。 + この色番号で実際に表示される色はターミナルの種類とその設定に依存する。 + "cterm"の設定によって色が変わる場合もある。例えば、あるシステムでは + "cterm=bold ctermfg=3"でそのまま3番の色を表示し、他のシステムでは異な + る色を表示することがある。 + + xtermにおいてはこれはユーザのリソースに依存し、やや予測ができない。デ + フォルトについてはxtermのドキュメントを参照のこと。カラーxterm用の色は + .Xdefaultsファイルで変更することができる。このため、ユーザごとに表示さ + れる色が異なるかもしれない。カラーxtermについては|xterm-color|を参照。 + + コンソールウィンドウ内のMSDOS標準色は固定されている。そのため、これら + の色を名前に使っている。一方、X11の色名の意味は固定されている。そこで + 強調の設定に可搬性を持たせるため、X11の色設定が使われている(複雑である + が)。以下の名前が認識され、色番号とともに使われる: + + *cterm-colors* NR-16 NR-8 COLOR NAME ~ - *cterm-colors* 0 0 Black 1 4 DarkBlue - 2 2 DarkGreen - 3 6 DarkCyan - 4 1 DarkRed - 5 5 DarkMagenta - 6 3 Brown, DarkYellow - 7 7 LightGray, LightGrey, Gray, Grey + 2 2 DarkGreen + 3 6 DarkCyan + 4 1 DarkRed + 5 5 DarkMagenta + 6 3 Brown, DarkYellow + 7 7 LightGray, LightGrey, Gray, Grey 8 0* DarkGray, DarkGrey 9 4* Blue, LightBlue 10 2* Green, LightGreen @@ -3109,95 +3462,88 @@ ctermbg={color-nr} *highlight-ctermbg* 14 3* Yellow, LightYellow 15 7* White - The number under "NR-16" is used for 16-color terminals ('t_Co' - greater than or equal to 16). The number under "NR-8" is used for - 8-color terminals ('t_Co' less than 16). The '*' indicates that the - bold attribute is set for ctermfg. In many 8-color terminals (e.g., - "linux"), this causes the bright colors to appear. This doesn't work - for background colors! Without the '*' the bold attribute is removed. - If you want to set the bold attribute in a different way, put a - "cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument. Or use - a number instead of a color name. + "NR-16"の下の番号は16色ターミナル('t_Co'が16以上のもの)用である。 + "NR-8"の下の番号は8色ターミナル('t_Co'が16以下のもの)用である。 + '*'はctermfgにbold属性がセットされることを意味している。"linux"な + ど多くの8色ターミナルでは明るい色になる。ただし背景色には適用され + ない。'*'がないものはbold属性なしになる。他の方法でbold属性をつけ + たいなら引数"cterm="を"ctermfg="や"ctermbg="の後に書くこと。または + 色名の代わりに番号を使うこと。 - The case of the color names is ignored. - Note that for 16 color ansi style terminals (including xterms), the - numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue - is 12, DarkGray is 8 etc. + 色名の大文字・小文字は無視される。 + 16色ansiスタイルターミナル(xtermを含む)ではNR-8の列の番号が使われ + ることに注意。ここで'*'は'add 8'という意味になる。つまりBlueが12 + に、DarkGrayが8になる。 - Note that for some color terminals these names may result in the wrong - colors! + カラーターミナルによっては、色名を使うと間違った色で表示される場合 + もあることに注意。 *:hi-normal-cterm* - When setting the "ctermfg" or "ctermbg" colors for the Normal group, - these will become the colors used for the non-highlighted text. - Example: > + Normalグループに対して"ctermfg"や"ctermbg"を設定すると、これらは強調さ + れないテキストに対する色になる。 + 例: > :highlight Normal ctermfg=grey ctermbg=darkblue -< When setting the "ctermbg" color for the Normal group, the - 'background' option will be adjusted automatically. This causes the - highlight groups that depend on 'background' to change! This means - you should set the colors for Normal first, before setting other - colors. - When a colorscheme is being used, changing 'background' causes it to - be reloaded, which may reset all colors (including Normal). First - delete the "colors_name" variable when you don't want this. - - When you have set "ctermfg" or "ctermbg" for the Normal group, Vim - needs to reset the color when exiting. This is done with the "op" - termcap entry |t_op|. If this doesn't work correctly, try setting the - 't_op' option in your .vimrc. +< Normalグループに対して"ctermbg"を設定すると、オプション'background'が + 自動的に調整される。これによって'background'に依存する強調グループが変 + 更される。そのため、まずNormalに対する色を設定し、それから他の色を設定 + するべきである。 + カラースキーム使用時に'background'を変更するとカラースキームが再読み込 + みされる。そしてNormalを含む全ての色がリセットされる。これが嫌なら最初 + に変数"colors_name"を削除すること。 + + Normalグループに対して"ctermfg"や"ctermbg"を設定すると、Vim終了時にそ + の色をリセットする必要がある。これはtermcapエントリ"op"|t_op|を使って + なされる。これがうまくいかない場合は.vimrc中で't_op'を設定してみるこ + と。 *E419* *E420* - When Vim knows the normal foreground and background colors, "fg" and - "bg" can be used as color names. This only works after setting the - colors for the Normal group and for the MS-DOS console. Example, for - reverse video: > + Vimが通常の文字色と背景色を知っているなら"fg"と"bg"を色名として使え + る。これはNormalグループの色とMS-DOSコンソールの色を設定しないと使えな + い。例えば反転表示をするには: > :highlight Visual ctermfg=bg ctermbg=fg -< Note that the colors are used that are valid at the moment this - command are given. If the Normal group colors are changed later, the - "fg" and "bg" colors will not be adjusted. +< このコマンドを実行した時点で有効な色が使われることに注意。この後で + Normalグループを変更しても"fg"と"bg"は調整されない。 -3. highlight arguments for the GUI +3. highlightコマンドの引数(GUI用) gui={attr-list} *highlight-gui* - These give the attributes to use in the GUI mode. - See |attr-list| for a description. - Note that "bold" can be used here and by using a bold font. They - have the same effect. - Note that the attributes are ignored for the "Normal" group. + これらはGUIモードで使われる属性を設定する。 + 説明は|attr-list|を参照。 + ここで"bold"を設定しても太字のフォントを使ってもよい。どちらも同じ効果 + を持つ。 + "Normal"グループに対する属性は無視される。 font={font-name} *highlight-font* - font-name is the name of a font, as it is used on the system Vim - runs on. For X11 this is a complicated name, for example: > + font-nameはVimを実行しているシステム上で使われるフォント名である。X11 + ではこれは複雑な名前になる。例えば: > font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 < - The font-name "NONE" can be used to revert to the default font. - When setting the font for the "Normal" group, this becomes the default - font (until the 'guifont' option is changed; the last one set is - used). - The following only works with Motif and Athena, not with other GUIs: - When setting the font for the "Menu" group, the menus will be changed. - When setting the font for the "Tooltip" group, the tooltips will be - changed. - All fonts used, except for Menu and Tooltip, should be of the same - character size as the default font! Otherwise redrawing problems will - occur. + フォント名"NONE"を使うとデフォルトのフォントに戻る。 + "Normal"グループに対してフォントを設定すると、これがデフォルトフォント + になる(オプション'guifont'が変更されるまでは; 最後に設定したものが使わ + れる)。 + 以下のものはMotifとAthena上でのみ動作し、他のGUI上では利用できない: + "Menu"グループに対してフォントを設定すると、メニューが変更される。 + "Tooltip"グループに対してフォントを設定するt、ツールチップが変更され + る。 + Menu用とTooltip用を除く全てのフォントのサイズがデフォルトフォントのサ + イズと同じでなければならない。そうでないと再描画の際に問題が発生する。 guifg={color-name} *highlight-guifg* guibg={color-name} *highlight-guibg* - These give the foreground (guifg) and background (guibg) color to - use in the GUI. There are a few special names: - NONE no color (transparent) - bg use normal background color - background use normal background color - fg use normal foreground color - foreground use normal foreground color - To use a color name with an embedded space or other special character, - put it in single quotes. The single quote cannot be used then. - Example: > + guifgは文字色、guibgは背景色を指定する。いくつか特別な名前がある: + NONE no color (透明) + bg 通常の背景色を使う + background 通常の背景色を使う + fg 通常の文字色を使う + foreground 通常の文字色を使う + 埋め込みスペースや他の特別な文字に対して色名を使うには、色名をシングル + クォートでくくる。それゆえシングルクォートを使うことはできない。 + 例: > :hi comment guifg='salmon pink' -< +< *gui-colors* - Suggested color names (these are available on most systems): + 推奨されている色名 (これらはほとんどのシステムで利用可能である) Red LightRed DarkRed Green LightGreen DarkGreen SeaGreen Blue LightBlue DarkBlue SlateBlue @@ -3208,218 +3554,208 @@ guibg={color-name} *highlight-guibg* Black White Orange Purple Violet - In the Win32 GUI version, additional system colors are available. See - |win32-colors|. + Win32 GUIバージョンでは他にもシステムカラーが利用できる。 + |win32-colors|を参照。 - You can also specify a color by its Red, Green and Blue values. - The format is "#rrggbb", where - "rr" is the Red value - "bb" is the Blue value - "gg" is the Green value - All values are hexadecimal, range from "00" to "ff". Examples: > + RGB値によって色を指定することもできる。 + フォーマットは"#rrggbb"、ここで + "rr" Red値 + "bb" Blue値 + "gg" Green値 + これらの値は16進であり、範囲は"00"から"ff"。例: > :highlight Comment guifg=#11f0c3 guibg=#ff00ff < *highlight-groups* *highlight-default* -These are the default highlighting groups. These groups are used by the -'highlight' option default. Note that the highlighting depends on the value -of 'background'. You can see the current settings with the ":highlight" -command. +以下はデフォルトの強調グループである。これらのグループはデフォルトでオプション +'highlight'によって使われる。ただし強調は'background'の値に依存することに注 +意。":highlight"コマンドで現在の設定を知ることができる。 *hl-Cursor* -Cursor the character under the cursor +Cursor カーソル下の文字 *hl-CursorIM* -CursorIM like Cursor, but used when in IME mode |CursorIM| +CursorIM Cursorと同じだが、IMEモードにいるとき使われる|CursorIM|。 *hl-Directory* -Directory directory names (and other special names in listings) +Directory ディレクトリ名(とリストにある特別な名前) *hl-DiffAdd* -DiffAdd diff mode: Added line |diff.txt| +DiffAdd diffモード: 追加された行 |diff.txt| *hl-DiffChange* -DiffChange diff mode: Changed line |diff.txt| +DiffChange diff モード: 変更された行 |diff.txt| *hl-DiffDelete* -DiffDelete diff mode: Deleted line |diff.txt| +DiffDelete diff モード: 削除された行 |diff.txt| *hl-DiffText* -DiffText diff mode: Changed text within a changed line |diff.txt| +DiffText diff モード: 変更された行中の変更されたテキスト |diff.txt| *hl-ErrorMsg* -ErrorMsg error messages on the command line +ErrorMsg コマンドラインに現れるエラーメッセージ *hl-VertSplit* -VertSplit the column separating vertically split windows +VertSplit 垂直分割したウィンドウの区切りとなる桁 *hl-Folded* -Folded line used for closed folds +Folded 閉じた折り畳みの行 *hl-FoldColumn* FoldColumn 'foldcolumn' + *hl-SignColumn* +SignColumn 目印|signs|が表示される行。 *hl-IncSearch* -IncSearch 'incsearch' highlighting; also used for the text replaced with - ":s///c" +IncSearch 'incsearch'の強調; ":s///c"で置換されたテキストにも使われる。 *hl-LineNr* -LineNr line number for ":number" and ":#" commands, and when 'number' - option is set. +LineNr ":number"と":#"コマンドの行番号。オプション'number'がセットさ + れているときはそれにも使われる。 *hl-ModeMsg* -ModeMsg 'showmode' message (e.g., "-- INSERT --") +ModeMsg 'showmode'のメッセージ (例. "-- INSERT --") *hl-MoreMsg* MoreMsg |more-prompt| *hl-NonText* -NonText '~' and '@' at the end of the window, characters from - 'showbreak' and other characters that do not really exist in - the text (e.g., ">" displayed when a double-wide character - doesn't fit at the end of the line). +NonText ウィンドウの端の'~'と'@'、'showbreak'で設定された文字など、実 + 際のテキストには存在しない文字(例. 倍幅文字が行末に収まらない + とき">"が表示される)。 *hl-Normal* -Normal normal text +Normal 通常のテキスト *hl-Question* -Question |hit-enter| prompt and yes/no questions +Question ヒットエンタープロンプト|hit-enter|とyes/noクエスチョン *hl-Search* -Search last search pattern highlighting (see 'hlsearch') +Search 最後に検索した語の強調('hlsearch')を参照。 + quickfixウィンドウ内の現在行の強調や、それに類するものにも使わ + れる。 *hl-SpecialKey* -SpecialKey Meta and special keys listed with ":map", also for text used - to show unprintable characters in the text, 'listchars'. - Generally: text that is displayed differently from what it - really is. +SpecialKey ":map"でリストされるメタキーと特別なキー。テキスト中の + unprintableな文字を表示するのにも使われる。 + 一般に: 実際とは異なる文字で表示されるテキスト *hl-StatusLine* -StatusLine status line of current window +StatusLine カレントウィンドウのステータスライン *hl-StatusLineNC* -StatusLineNC status lines of not-current windows - Note: if this is equal to "StatusLine" Vim will use "^^^" in - the status line of the current window. +StatusLineNC 非カレントウィンドウのステータスライン。 + Note: これが"StatusLine"に等しい場合、カレントウィンドウのステ + ータスラインに"^^^"が使われる。 *hl-Title* -Title titles for output from ":set all", ":autocmd" etc. +Title ":set all"、":autocmd"などによる出力のタイトル。 *hl-Visual* -Visual Visual mode selection +Visual ビジュアルモード選択 *hl-VisualNOS* -VisualNOS Visual mode selection when vim is "Not Owning the Selection". - Only X11 Gui's |gui-x11| and |xterm-clipboard| supports this. +VisualNOS vimが"Not Owning the Selection"のときのビジュアルモード選択。 + これをサポートしているのはX11GUI|gui-x11|と|xterm-clipboard|の + み。 *hl-WarningMsg* -WarningMsg warning messages +WarningMsg 警告メッセージ *hl-WildMenu* -WildMenu current match in 'wildmenu' completion +WildMenu 'wildmenu'補完における現在の候補 *hl-User1* *hl-User1..9* -The 'statusline' syntax allows the use of 9 different highlights in the -statusline and ruler (via 'rulerformat'). The names are User1 to User9. +'statusline'構文によってステータスラインとルーラー('rulerformat'によって)中で9 +個の強調が使えるようになっている。その名前はUser1からUser9である。 -For the GUI you can use these groups to set the colors for the menu, -scrollbars and tooltips. They don't have defaults. This doesn't work for the -Win32 GUI. Only three highlight arguments have any effect here: font, guibg, -and guifg. +GUI使用時には、これらのグループを使ってメニューやスクロールバー、ツールチップ +の色を設定することができる。これらにデフォルト値はない。これはWin32では利用で +きない。ここではhighlightの引数のうちfont, guibg, guifgの3つだけが効果を持つ。 *hl-Menu* -Menu Current font, background and foreground colors of the menus. - Also used for the toolbar. - Applicable highlight arguments: font, guibg, guifg. +Menu メニューのフォント、文字、背景。ツールバーにも使われる。 + 使用可能なhighlightの引数: font, guibg, guifg. - NOTE: For Motif and Athena the font argument actually - specifies a fontset at all times, no matter if 'guifontset' is - empty, and as such it is tied to the current |:language| when - set. + NOTE: MotifとAthenaでは'guifontset'が空かどうかに関わらず、常 + に引数fontで実際のフォントセットを指定する。そしてそれが現在の + |:language|に結び付けられる。 *hl-Scrollbar* -Scrollbar Current background and foreground of the main window's - scrollbars. - Applicable highlight arguments: guibg, guifg. +Scrollbar メインウィンドウのスクロールバーの文字と背景。 + 使用可能なhighlightの引数: guibg, guifg. *hl-Tooltip* -Tooltip Current font, background and foreground of the tooltips. - Applicable highlight arguments: font, guibg, guifg. - - NOTE: For Motif and Athena the font argument actually - specifies a fontset at all times, no matter if 'guifontset' is - empty, and as such it is tied to the current |:language| when - set. +Tooltip ツールチップのフォント、文字、背景。 + 使用可能なhighlightの引数: font, guibg, guifg. + + NOTE: MotifとAthenaでは'guifontset'が空かどうかに関わらず、常 + に引数fontで実際のフォントセットを指定する。そしてそれが現在の + |:language|に結び付けられる。 ============================================================================== -13. Linking groups *:hi-link* *:highlight-link* *E412* *E413* +13. グループのリンク *:hi-link* *:highlight-link* *E412* *E413* -When you want to use the same highlighting for several syntax groups, you -can do this more easily by linking the groups into one common highlight -group, and give the color attributes only for that group. +複数の構文グループに対して同じ強調をつけたいときは、それらのグループを共通の強 +調グループにリンクし、そのグループに対して色属性を与えると簡単である。 -To set a link: +リンクを作るには: :hi[ghlight][!] [default] link {from-group} {to-group} -To remove a link: +リンクを削除するには: :hi[ghlight][!] [default] link {from-group} NONE Notes: *E414* -- If the {from-group} and/or {to-group} doesn't exist, it is created. You - don't get an error message for a non-existing group. -- As soon as you use a ":highlight" command for a linked group, the link is - removed. -- If there are already highlight settings for the {from-group}, the link is - not made, unless the '!' is given. For a ":highlight link" command in a - sourced file, you don't get an error message. This can be used to skip - links for groups that already have settings. +- {from-group}か{to-group}のどちらかが存在しない場合、リンクは作成されない。こ + の場合エラーメッセージは表示されない。 +- リンクされたグループに対して":highlight"を使うと、即座にリンクが削除される。 +- 既に{from-group}に強調設定がされている場合、'!'をつけないとリンクは作成され + ない。sourceされたファイル中の":highlight link"コマンドに関して、エラーメッ + セージは表示されない。そのため既に設定を持つグループに対するリンクがスキップ + される。 *:hi-default* *:highlight-default* -The [default] argument is used for setting the default highlighting for a -group. If highlighting has already been specified for the group the command -will be ignored. Also when there is an existing link. +引数[default]によってグループに対するデフォルトの強調を設定することができる。 +そのグループに対して既に強調が指定されている場合、このコマンドは無視される。既 +にリンクが存在する場合も同様。 -Using [default] is especially useful to overrule the highlighting of a -specific syntax file. For example, the C syntax file contains: > +[default]は特定の構文ファイルの強調を上書きするのに特に便利である。例えばC構文 +ファイルは次の行を含んでいる: > :highlight default link cComment Comment -If you like Question highlighting for C comments, put this in your vimrc file: > +Cコメントに対してQuestionの強調をつけたい場合、これをvimrcファイルに加える: > :highlight link cComment Question -Without the "default" in the C syntax file, the highlighting would be -overruled when the syntax file is loaded. +もしC構文ファイル中の"default"がないと、構文ファイルが読み込まれた時点で強調が +上書きされてしまう。 ============================================================================== -14. Cleaning up *:syn-clear* *E391* +14. 構文の消去 *:syn-clear* *E391* -If you want to clear the syntax stuff for the current buffer, you can use this -command: > +カレントバッファに対する構文設定を消去したいときはこのコマンドを使う: > :syntax clear -This command should be used when you want to switch off syntax highlighting, -or when you want to switch to using another syntax. It's normally not needed -in a syntax file itself, because syntax is cleared by the autocommands that -load the syntax file. -The command also deletes the "b:current_syntax" variable, since no syntax is -loaded after this command. +このコマンドは、構文強調をオフにしたいときや他の構文を適用したいときに使う。通 +常、これを構文ファイル内で行う必要はない。なぜなら、構文ファイルを読み込む自動 +コマンドによって構文がクリアされる。 +また、このコマンドは変数"b:current_syntax"を削除する。このコマンドの実行後には +すべての構文がなくなるからである。 -If you want to disable syntax highlighting for all buffers, you need to remove -the autocommands that load the syntax files: > +全てのバッファに対して構文強調を無効にしたいときは、構文ファイルを読み込む自動 +コマンドを削除する必要がある: > :syntax off -What this command actually does, is executing the command > +このコマンドが実際に行うことは次のコマンドを実行するのと同じである: > :source $VIMRUNTIME/syntax/nosyntax.vim -See the "nosyntax.vim" file for details. Note that for this to work -$VIMRUNTIME must be valid. See |$VIMRUNTIME|. +詳細は"nosyntax.vim"を参照。これが正常に機能するためには$VIMRUNTIMEが正しく設 +定されている必要がある。|$VIMRUNTIME|を参照。 -To clean up specific syntax groups for the current buffer: > +カレントバッファに対する特定の構文グループを消去するには: > :syntax clear {group-name} .. -This removes all patterns and keywords for {group-name}. +これは{group-name}に対する全てのパターンとキーワードを消去する。 -To clean up specific syntax group lists for the current buffer: > +カレントバッファに対する特定の構文グループリストを消去するには: > :syntax clear @{grouplist-name} .. -This sets {grouplist-name}'s contents to an empty list. +これは{grouplist-name}の中身を空リストにセットする。 *:syntax-reset* *:syn-reset* -If you have changed the colors and messed them up, use this command to get the -defaults back: > +色を変えたため、色がごちゃごちゃになってしまったときは、次のコマンドを使うとデ +フォルトに戻る: > :syntax reset -This doesn't change the colors for the 'highlight' option. +これはオプション'highlight'に対する色は変更しない。 -Note that the syntax colors that you set in your vimrc file will also be reset -back to their Vim default. -Note that if you are using a color scheme, the colors defined by the color -scheme for syntax highlighting will be lost. +ユーザのvimrcファイル中で設定した構文色もVimのデフォルト値に戻ることに注意。 +カラースキームを使っている場合、カラースキームによって定義された色は失われるこ +とに注意。 -What this actually does is: > +このコマンドが実際に行うことは: > let g:syntax_cmd = "reset" runtime! syntax/syncolor.vim -Note that this uses the 'runtimepath' option. +ここでオプション'runtimepath'が使われていることに注意。 *syncolor* -If you want to use different colors for syntax highlighting, you can add a Vim -script file to set these colors. Put this file in a directory in -'runtimepath' which comes after $VIMRUNTIME, so that your settings overrule -the default colors. This way these colors will be used after the ":syntax -reset" command. +構文強調に別の色を使いたければ、その色を設定するVimスクリプトを作ればよい。そ +のファイルを'runtimepath'中('runtimepath'は$VIMRUNTIMEを含む)のディレクトリに +置くと、その設定がデフォルトの色設定を上書きする。こうして":syntax reset"コマ +ンドを実行すると、それらの色が有効になる。 -For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: > +Unixでは~/.vim/after/syntax/syncolor.vimファイルを使うとよい。例: > if &background == "light" highlight comment ctermfg=darkgreen guifg=darkgreen @@ -3427,51 +3763,49 @@ For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: > highlight comment ctermfg=green guifg=green endif -Note that when a color scheme is used, there might be some confusion whether -your defined colors are to be used or the colors from the scheme. This -depends on the color scheme file. See |:colorscheme|. +カラースキームを使用すると、ユーザ定義の色が使われるのか、それともカラースキー +ムで定義された色が使われるのかわからなくなる場合がある。これはカラースキーム +ファイルに依存する。|:colorscheme|を参照。 *syntax_cmd* -The "syntax_cmd" variable is set to one of these values when the -syntax/syncolor.vim files are loaded: - "on" ":syntax on" command. Highlight colors are overruled but - links are kept - "enable" ":syntax enable" command. Only define colors for groups that - don't have highlighting yet. Use ":syntax default". - "reset" ":syntax reset" command or loading a color scheme. Define all - the colors. - "skip" Dont' define colors. Used to skip the default settings when a - syncolor.vim file earlier in 'runtimepath' has already set - them. +syntax/syncolor.vimファイルが読み込まれると、変数"syntax_cmd"が次の3つの値のう +ちどれかにセットされる: + "on" ":syntax on" コマンド。強調色が上書きされるがリンクはそのまま。 + "enable" ":syntax enable" コマンド。まだ強調が定義されていないグループ + に対して色を定義するだけ。":syntax default"を使うこと。 + "reset" ":syntax reset" コマンドまたはカラースキームを読み込む。全ての + 色を定義する。 + "skip" 色を定義しない。'runtimepath'中で前にあるsyncolor.vimファイル + が既にデフォルト設定をセットしてあるとき、デフォルト設定をスキ + ップするために使われる。 ============================================================================== -15. Highlighting tags *tag-highlight* +15. タグの強調 *tag-highlight* -If you want to highlight all the tags in your file, you can use the following -mappings. +ファイル中の全てのタグを強調したければ、次のマッピングを使うとよい。 - <F11> -- Generate tags.vim file, and highlight tags. - <F12> -- Just highlight tags based on existing tags.vim file. + <F11> -- tags.vimファイルを生成し、タグを強調する。 + <F12> -- 既存のtags.vimファイルをもとに強調する。 > :map <F11> :sp tags<CR>:%s/^\([^ :]*:\)\=\([^ ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12> :map <F12> :so tags.vim<CR> -WARNING: The longer the tags file, the slower this will be, and the more -memory Vim will consume. +WARNING: tagsファイルが長くなるほどこの操作は遅くなり、消費するメモリ量も多く +なる。 -Only highlighting typedefs, unions and structs can be done too. For this you -must use Exuberant ctags (found at http://ctags.sf.net). +typedef、union、structだけを強調することもできる。そのためにはExuberant ctags +(http://ctags.sf.netで入手可能)を使わねばならない。 -Put these lines in your Makefile: +以下をあなたのMakefileに加える: -# Make a highlight file for types. Requires Exuberant ctags and awk +# 型用の強調ファイルを作成する。Exuberant ctagsとawkが必要 types: types.vim types.vim: *.[ch] ctags -i=gstuS -o- *.[ch] |\ awk 'BEGIN{printf("syntax keyword Type\t")}\ {printf("%s ", $$1)}END{print ""}' > $@ -And put these lines in your .vimrc: > +そして以下を.vimrcに加える: > " load the types.vim highlighting file, if it exists autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim' @@ -3480,59 +3814,56 @@ And put these lines in your .vimrc: > autocmd BufRead,BufNewFile *.[ch] endif ============================================================================== -16. Color xterms *xterm-color* *color-xterm* +16. カラーxterms *xterm-color* *color-xterm* -Most color xterms have only eight colors. They should work with these -lines in your .vimrc: > - :if has("terminfo") - : set t_Co=8 - : set t_Sf=<Esc>[3%p1%dm - : set t_Sb=<Esc>[4%p1%dm - :else - : set t_Co=8 - : set t_Sf=<Esc>[3%dm - : set t_Sb=<Esc>[4%dm +ほとんどのカラーxtermは8色しか持たない。デフォルト設定で色がつかない場合は以下 +を.vimrcに加えると正常に色がつくはずである: > + :if &term =~ "xterm" + : if has("terminfo") + : set t_Co=8 + : set t_Sf=<Esc>[3%p1%dm + : set t_Sb=<Esc>[4%p1%dm + : else + : set t_Co=8 + : set t_Sf=<Esc>[3%dm + : set t_Sb=<Esc>[4%dm + : endif :endif < [<Esc> is a real escape, type CTRL-V <Esc>] -You might want to put these lines in an ":if" that checks the name of your -terminal, for example: > - :if &term =~ "xterm" -< put above lines here > - :endif +最初の"if"を自分のターミナル名にマッチするように変更する必要があるかもしれない +e.g. "xterm"でなく"dtterm"。 -Note: Do these settings BEFORE doing ":syntax on". Otherwise the colors may -be wrong. +Note: これらの設定は":syntax on"の前に行うこと。そうでないと色がおかしくなって +しまう。 *xiterm* *rxvt* -The above settings have been mentioned to work for xiterm and rxvt too. -But for using 16 colors in an rxvt these should work with terminfo: > +上の設定はxitermとrxvtでも動作するように注意されている。しかしrxvtで16色を使う +場合にはterminfoを設定しなければならない: > :set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm :set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm -< + *colortest.vim* -To test your color setup, a file has been included in the Vim distribution. -To use it, execute these commands: > +色設定をテストするためのファイルがVimディストリビューションに入っている。これ +を使うには次のコマンドを実行する: > :e $VIMRUNTIME/syntax/colortest.vim :so % -Some versions of xterm (and other terminals, like the linux console) can -output lighter foreground colors, even though the number of colors is defined -at 8. Therefore Vim sets the "cterm=bold" attribute for light foreground -colors, when 't_Co' is 8. +xtermのあるバージョン(とlinuxコンソールのような他のターミナル)は、たとえ色数が +8に定義されていても、より明るい文字色を出力することができる。そのため't_Co'が +8のとき、Vimは明るい文字色に対して"cterm=bold"属性をセットする。 *xfree-xterm* -To get 16 colors or more, get the newest xterm version (which should be -included with Xfree86 3.3 and later). You can also find the latest version -at: > - http://www.clark.net/pub/dickey/xterm -Here is a good way to configure it. This uses 88 colors and enables the -termcap-query feature, which allows Vim to ask the xterm how many colors it -supports. > +16色以上を使うにはxtermの最新バージョンを入手すること(Xfree86 3.3以降に含まれ +ているはずである)。また、以下の場所でも最新バージョンが得られる: > + http://invisible-island.net/xterm/xterm.html +次にそれをconfigureするよい方法を示す。これは88色を使い、termcap-query機能を有 +効化する。これによってVimがxtermに何色をサポートしているか問い合わせることがで +きるようになる > ./configure --disable-bold-color --enable-88-color --enable-tcap-query -If you only get 8 colors, check the xterm compilation settings. -(Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding). +もし8色しか使えなかったらxtermのコンパイル設定を確認すること。 +(このxtermをUTF-8文字コーディングで使う場合には|UTF8-xterm|も参照)。 -This xterm should work with these lines in your .vimrc: > +以下を.vimrcに加えるとこのxtermで動くはずである(16色用): > :if has("terminfo") : set t_Co=16 : set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm @@ -3542,16 +3873,20 @@ This xterm should work with these lines in your .vimrc: > : set t_Sf=<Esc>[3%dm : set t_Sb=<Esc>[4%dm :endif -< [<Esc> is a real escape, type CTRL-V <Esc>] +< [<Esc> は実際のエスケープ, CTRL-V <Esc>とタイプする] + +|+terminfo|なしではVimはこれらの設定を認識し、自動的にctermの8色と上の設定を +"<Esc>[9%dm" と "<Esc>[10%dm"に変換する。16色以上も自動的に変換される。 + +以下の設定が256色用にうまくいくと報告されている: > -Without |+terminfo|, Vim will recognize these settings, and automatically -translate cterm colors of 8 and above to "<Esc>[9%dm" and "<Esc>[10%dm". -Colors above 16 are also translated automatically. + :set t_AB=<Esc>[48;5;%dm + :set t_AF=<Esc>[38;5;%dm -Or just set the TERM environment variable to "xterm-16color" and try if that -works. +または単にTERM環境変数を"xterm-color"または"xterm-16color"にセットし、うまくい +くか試してみるとよい。 -You probably want to use these X resources (in your ~/.Xdefaults file): +以下のX resourcesを(~/.Xdefaultsファイルで)使いたいかもしれない: XTerm*color0: #000000 XTerm*color1: #c00000 XTerm*color2: #008000 @@ -3570,26 +3905,24 @@ You probably want to use these X resources (in your ~/.Xdefaults file): XTerm*color15: #ffffff Xterm*cursorColor: Black -[Note: The cursorColor is required to work around a bug, which changes the -cursor color to the color of the last drawn text. This has been fixed by a -newer version of xterm, but not everybody is it using yet.] +[Note: cursorColorにはバグがある。カーソルの色が最後に描画されたテキストの色に +なってしまうというものである。これはxtermの新しいバージョンを使うと解決する +が、まだ全ての人がそれを使っているわけではない。] -To get these right away, reload the .Xdefaults file to the X Option database -Manager (you only need to do this when you just changed the .Xdefaults file): > +これらを即座に更新するには.XdefaultsファイルをXオプションデータベースマネー +ジャに再読み込みさせる(.Xdefaultsを変更したときはこれを行う必要がある): > xrdb -merge ~/.Xdefaults -< - *xterm-blink* -To make the cursor blink in an xterm, see tools/blink.c. Or use Thomas -Dickey's xterm above patchlevel 107 (see above for where to get it), with -these resources: + *xterm-blink* *xterm-blinking-cursor* +xtermでカーソルを点滅させるにはtools/blink.cを見ること。またはThomas Dickeyの +xtermのパッチレベル107以上を使い(入手場所は上を参照)、以下のリソースを設定す +る。 XTerm*cursorBlink: on XTerm*cursorOnTime: 400 XTerm*cursorOffTime: 250 XTerm*cursorColor: White *hpterm-color* -These settings work (more or less) for a hpterm, which only supports 8 -foreground colors: > +次の設定はhptermで(大体)うまく機能する。文字色は8色だけサポートしている: > :if has("terminfo") : set t_Co=8 : set t_Sf=<Esc>[&v%p1%dS @@ -3599,24 +3932,24 @@ foreground colors: > : set t_Sf=<Esc>[&v%dS : set t_Sb=<Esc>[&v7S :endif -< [<Esc> is a real escape, type CTRL-V <Esc>] +< [<Esc> は実際のエスケープ, CTRL-V <Esc>とタイプする] *Eterm* *enlightened-terminal* -These settings have been reported to work for the Enlightened terminal -emulator, or Eterm. They might work for all xterm-like terminals that use the -bold attribute to get bright colors. Add an ":if" like above when needed. > +次の設定がEnlightenedターミナルエミュレータまたはEtermで機能すると報告されてい +る。また、明るい色を表示するのにbold属性を使うxtermライクターミナル全てで機能 +すると思われる。必要なら前述のように":if"をつけること。 > :set t_Co=16 :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m < *TTpro-telnet* -These settings should work for TTpro telnet. Tera Term Pro is a freeware / -open-source program for MS-Windows. > +次の設定がTTpro telnet用にうまくいく。Tera Term ProはMS-Windows用のフリーウェ +ア/オープンソースプログラムである。 > set t_Co=16 set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm -Also make sure TTpro's Setup / Window / Full Color is enabled, and make sure -that Setup / Font / Enable Bold is NOT enabled. -(info provided by John Love-Jensen <eljay@Adobe.COM>) +また、TTproのSetup/Window/Full Colorが有効になっていることとSetup/Font/Enable +Boldが有効になっていないことを確認すること。 +(この情報はJohn Love-Jensen <eljay@Adobe.COM>によって提供された) vim:tw=78:sw=4:ts=8:ft=help:norl: From d64e16a8b0e7a4521cb4358b5a2f8ce83267d9df Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 23 Apr 2005 16:44:18 +0000 Subject: [PATCH 027/783] start to update eval.jax against 6.3.054 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@27 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/eval.jax | 713 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 530 insertions(+), 183 deletions(-) diff --git a/ja/eval.jax b/ja/eval.jax index 8636680c8..9a1e2930c 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -1,29 +1,34 @@ COMMENT: Vimスクリプト -STATUS: finished 5.7 +STATUS: suspended 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*eval.txt* For Vim version 5.7. Last change: 2000 Jun 07 +*eval.txt* For Vim version 6.3. Last change: 2004 May 18 VIMリファレンスマニュアル by Bram Moolenaar -Expression evaluation *expression* *expr* -(訳注:「式評価」が直訳として正しいがちょっと納まりが悪い) +Vimスクリプト *expression* *expr* *E15* *eval* -注意:式評価はコンパイル時に無効化できる。もしそうなっているとこのドキュメント -に書かれている事は有効ではない。|+eval|と後の最終章とを参照。 +Vimスクリプトの利用についてはユーザマニュアルの41章|user_41.txt|でも解説されて +いる。 -1. 変数 |variables| -2. 式の文法 |expression-syntax| -3. 内部変数 |internal-variables| -4. 組み込み関数 |functions| -5. 関数定義 |user-functions| -6. コマンド |expression-commands| -7. 例 |eval-examples| -8. +eval機能が無効 |no-eval-feature| +注意:Vimスクリプトはコンパイル時に無効化できる。もしそうなっているとこのドキュ +メントに書かれている事は有効ではない。|+eval|と後の最終章とを参照。 -{これらのコマンドはViには存在しない} +1. 変数 |variables| +2. 式の文法 |expression-syntax| +3. 内部変数 |internal-variables| +4. 組み込み関数 |functions| +5. 関数定義 |user-functions| +6. 波括弧{}の名前 |curly-braces-names| +7. コマンド |expression-commands| +8. 例外のハンドリング |exception-handling| +9. 例 |eval-examples| +10. +eval機能が無効 |no-eval-feature| +11. サンドボックス |eval-sandbox| + +{Vi にはこれらのコマンドは存在しない} ============================================================================== 1. 変数 *variables* @@ -35,135 +40,174 @@ Expression evaluation *expression* *expr* これらは文脈に応じて相互に変換される。 -数値から文字列への変換は数字のASCII表現によって行なわれる。例: -> 数値 123 --> 文字列 "123" -> 数値 0 --> 文字列 "0" -> 数値 -1 --> 文字列 "-1" +数値から文字列への変換は数字のASCII表現によって行なわれる。例: > + 数値 123 --> 文字列 "123" + 数値 0 --> 文字列 "0" + 数値 -1 --> 文字列 "-1" 文字列から数値への変換は最初の数字を用いて数値に変換する。16進表記"0xf9"や8進 -表記"017"も認識される。文字列が数字で始まらない場合結果は0となる。例: -> 文字列 "456" --> 数値 456 -> 文字列 "6bar" --> 数値 6 -> 文字列 "foo" --> 数値 0 -> 文字列 "0xf1" --> 数値 241 -> 文字列 "0100" --> 数値 64 - -文字列を強制的に数値に変換するには0を足す: -> :echo "0100" + 0 +表記"017"も認識される。文字列が数字で始まらない場合結果は0となる。例: > + 文字列 "456" --> 数値 456 + 文字列 "6bar" --> 数値 6 + 文字列 "foo" --> 数値 0 + 文字列 "0xf1" --> 数値 241 + 文字列 "0100" --> 数値 64 + 文字列 "-8" --> 数値 -8 + 文字列 "+8" --> 数値 0 + +文字列を強制的に数値に変換するには0を足す: > + :echo "0100" + 0 ブール(真理値)演算には数値が使われる。0は偽を意味し、非0は真を表す。 -Note 次のコマンドをみると +Note 次のコマンドをみると > :if "foo" "foo"は0に変換され、それは偽を意味する。文字列が空ではないか調べるためには -strlen()を使用して次のようにする。 +strlen()を使用して次のようにする。 > :if strlen("foo") -オプション'viminfo'にフラグ'!'が含まれていたなら、大文字で始まり小文字を含まな -い名前のグローバル変数は、viminfoファイル|viminfo-file|に格納される。 +変数や式の結果の型を知りたいのならば、関数|type()|を使う。 + +オプション'viminfo'にフラグ'!'が含まれるならば、大文字で始まり小文字を含まない +名前のグローバル変数は、viminfoファイル|viminfo-file|に格納される。 -オプション'sessionoptions'が"global"を含むなら、少なくとも一文字ずつ大文字と小 -文字を含む名前のグローバル変数はsessionファイル|session-file|に格納される。 +オプション'sessionoptions'が"global"を含むなら、大文字で始まり少なくとも一文字 +以上の小文字を含む名前のグローバル変数は、sessionファイル|session-file|に格納 +される。 変数名 何処に保存されるか ~ my_var_6 されない My_Var_6 sessionファイル MY_VAR_6 viminfoファイル + +波括弧を使って変数名を構成できる。詳細は|curly-braces-names|を参照。 + ============================================================================== 2. 式の文法 *expression-syntax* 式文法一覧、優先順位の低いものから高い順に: -|expr1| expr2 || expr2 .. 論理和 +|expr1| expr2 ? expr1 : expr1 if-then-else 条件式 + +|expr2| expr3 || expr3 .. 論理和 -|expr2| expr3 && expr3 .. 論理積 +|expr3| expr4 && expr4 .. 論理積 -|expr3| expr4 == expr4 等しい - expr4 != expr4 等しくない - expr4 > expr4 より大きい - expr4 >= expr4 大きいか等しい - expr4 < expr4 より小さい - expr4 <= expr4 小さいか等しい - expr4 =~ expr4 正規表現にマッチする - expr4 !~ expr4 正規表現にマッチしない - expr4 ==? expr4 文字列として等しい(大文字/小文字区別無し) - expr4 ==# expr4 文字列として等しい(大文字/小文字区別有り) - etc. As above, append ? for ignoring case, # for matching case +|expr4| expr5 == expr5 等しい + expr5 != expr5 等しくない + expr5 > expr5 より大きい + expr5 >= expr5 大きいか等しい + expr5 < expr5 より小さい + expr5 <= expr5 小さいか等しい + expr5 =~ expr5 正規表現にマッチする + expr5 !~ expr5 正規表現にマッチしない -|expr4| expr5 + expr5 .. 足し算 - expr5 - expr5 .. 引き算 - expr5 . expr5 .. 文字列の連結 + expr5 ==? expr5 文字列として等しい(大文字/小文字区別無し) + expr5 ==# expr5 文字列として等しい(大文字/小文字区別有り) + etc. 上記の各式は大小文字の区別を、?を付加すると行 + わず、#を付加すると行う -|expr5| expr6 * expr6 .. 掛け算 - expr6 / expr6 .. 割り算 - expr6 % expr6 .. 剰余(割った余り) +|expr5| expr6 + expr6 .. 足し算 + expr6 - expr6 .. 引き算 + expr6 . expr6 .. 文字列の連結 -|expr6| ! expr6 論理否定 - - expr6 単項のマイナス(訳注:-1等) - expr7 +|expr6| expr7 * expr7 .. 掛け算 + expr7 / expr7 .. 割り算 + expr7 % expr7 .. 剰余(割った余り) -|expr7| expr8[expr1] 文字列内でのインデックス +|expr7| ! expr7 論理否定 + - expr7 単項のマイナス(訳注:-1等) + + expr7 単項のプラス + expr8 -|expr8| number 数定数 +|expr8| expr9[expr1] 文字列内でのインデックス + +|expr9| number 数定数 "string" 文字列定数 'string' リテラル文字列定数 &option オプション変数 (expr1) 式の入れ子 variable 内部変数 + va{ria}ble 波括弧付きの内部変数 $VAR 環境変数 @r レジスタ'r'の値 function(expr1, ...) 関数呼出し + func{ti}on(expr1, ...) 波括弧付きの内部変数 ".." はその演算が、その後に他の演算を続ける事が出来ることを示している。 -例: -> &nu || &list && &shell == "csh" +例: > + &nu || &list && &shell == "csh" 一つのレベルにある全ての式は左から右に解釈される。 -expr1 and expr2 *expr1* *expr2* +expr1 *expr1* *E109* +----- + +expr2 ? expr1 : expr1 + +'?'より前の式は数値として評価される。その結果が非0であった場合、'?'と':'に挟ま +れた式の値がこの式全体の値となり、逆に0であった場合は':'以降の式の値が全体の値 +となる。 +例: > + :echo lnum == 1 ? "先頭" : lnum + +始めの式が"expr2"であるから、そこに別の?:を含むことはできない。残り二つの式に +ついては以下のように再帰的な?:の利用が許される。 +例: > + :echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum + +読み易くするために、行継続|list-continuation|を利用することが推奨される: > + :echo lnum == 1 + :\ ? "top" + :\ : lnum == 1000 + :\ ? "last" + :\ : lnum + + +expr2 and expr3 *expr2* *expr3* --------------- *expr-barbar* *expr-&&* 演算子"||"と"&&"は左右に一つずつ引数を取る。引数は数値に変換される。結果は: - 入力 出力 ~ - n1 n2 n1 || n2 n1 && n2 ~ - 零 零 零 零 - 零 非零 非零 零 - 非零 零 非零 零 - 非零 非零 非零 非零 + 入力 出力 ~ +n1 n2 n1 || n2 n1 && n2 ~ +零 零 零 零 +零 非零 非零 零 +非零 零 非零 零 +非零 非零 非零 非零 -演算子は続けて書く事ができる。例: +演算子は続けて書く事ができる。例: > -> &nu || &list && &shell == "csh" + &nu || &list && &shell == "csh" -Note "&&"は"||"よりも高い優先順位を持っている。これは次の事を意味する: +Note "&&"は"||"よりも高い優先順位を持っている。これは次の事を意味する: > -> &nu || (&list && &shell == "csh") + &nu || (&list && &shell == "csh") -結果が決定した時点で残りの式は省略され、解釈されない。これはC言語で行なわれる -ことと似ている。例: +結果が確定した時点で残りの式は省略され、解釈されない。これはC言語で行なわれる +ことに似ている。例: > -> let a = 1 -> echo a || b + let a = 1 + echo a || b これはaが非零で戻り値は絶対に非零であるから、変数bが宣言されていなくても有効で -ある。次のも同様に: +ある。次のも同様に: > -> echo exists("b") && b == "yes" + echo exists("b") && b == "yes" これもbが宣言されているいないに関わらず有効である。後半の項はbが定義されている 時にだけ評価される。 -expr3 *expr3* +expr4 *expr4* ----- - expr4 {cmp} expr4 +expr5 {cmp} expr5 -2つの表現expr4を比較し、結果が偽なら0を真なら1を返す。 +2つの式expr5を比較し、結果が偽なら0を、真なら1を返す。 *expr-==* *expr-!=* *expr->* *expr->=* *expr-<* *expr-<=* *expr-=~* *expr-!~* @@ -182,14 +226,16 @@ expr3 *expr3* 正規表現非マッチ !~ !~# !~? Examples: - "abc" ==# "Abc" 0と評価される - "abc" ==? "Abc" 1と評価される - "abc" == "Abc" 'ignorecase'が設定されていれば1と、でなければ0と評価 +"abc" ==# "Abc" 0と評価される +"abc" ==? "Abc" 1と評価される +"abc" == "Abc" 'ignorecase'が設定されていれば1と、でなければ0と評価 -文字列と数値を比較した場合、文字列が数値に変換され、数値として比較される。 +文字列と数値を比較した場合、文字列が数値に変換され、数値として比較される。これ +は"0 == 'x'"が、'x'が数値としては0であることから、真となることを意味する。 文字列同士を比較した場合、strcmp()やstricmp()によって比較される。これは数値的 -に(バイトの値で)比較されるのであって、言語による文字種の違いである必要は無い。 +に(バイトの値で)比較されるのであって、必ずしも言語に基づく文字種の違いではな +い。 '#'を付けた演算子を使うか、省略形かつ'ignorecase'が設定されていない場合、比較 はstrcmp()で行なわれる。 @@ -197,23 +243,28 @@ Examples: '?'を付けた演算子を使うか、省略形かつ'ignorecase'が設定されている場合、比較は stricmp()で行なわれる。 -"=~"と"!~"演算子は右側の引数を正規表現のパターンとして左側の引数に対してマッチ -を試みる。正規表現のパターンに関しては|pattern|を参照。このマッチは'magic'が設 -定され'cpoptions'が空であるように振舞い、実際の'magic'や'cpoptions'に何が設定 -されているには依存しない。これがスクリプトをポータブルにしてくれる。正規表現中 -のバックスラッシュが重複してしまうのを避けるには、シングルクォーテーションの文 -字列を使用する。詳細は|literal-string| +"=~"と"!~"演算子は右側の引数を正規表現のパターンとして、左側の引数に対してマッ +チを試みる。正規表現のパターンに関しては|pattern|を参照。このマッチは'magic'が +設定され'cpoptions'が空であるように振舞い、実際の'magic'や'cpoptions'に何が設 +定されているには依存しない。これがスクリプトをポータブルにしてくれる。正規表現 +中のバックスラッシュが重複してしまうのを避けるには、シングルクォーテーションの +文字列を使用する。詳細は|literal-string|を参照。 +文字列は単一行として扱われるので、複数行のパターン(\nを含むもの)はマッチしな +い。しかしながらリテラルなヌル文字(NL)を、普通の文字として代用することはでき +る。例: + "foo\nbar" =~ "\n" 1として評価される + "foo\nbar" =~ "\\n" 0として評価される -expr4 and expr5 *expr4* *expr5* +expr5 and expr6 *expr5* *expr6* --------------- - expr5 + expr5 .. number addition *expr-+* - expr5 - expr5 .. number subtraction *expr--* - expr5 . expr5 .. string concatenation *expr-.* +expr6 + expr6 .. 足し算 *expr-+* +expr6 - expr6 .. 引き算 *expr--* +expr6 . expr6 .. 文字列の連結 *expr-.* - expr6 * expr6 .. number multiplication *expr-star* - expr6 / expr6 .. number division *expr-/* - expr6 % expr6 .. number modulo *expr-%* +expr7 * expr7 .. 掛け算 *expr-star* +expr7 / expr7 .. 割り算 *expr-/* +expr7 % expr7 .. 剰余(割った余り) *expr-%* "."を除く全ての演算子は自動的に文字列を数値に変換する。 @@ -221,79 +272,84 @@ expr4 and expr5 *expr4* *expr5* "123" + "456" = 579 "123" . "456" = "123456" -'/'の右辺(除数)が0の場合、結果は0xfffffffになる。 +'/'の右辺(除数)が0の場合、結果は0x7ffffffになる。 '%'の右辺(法)が0の場合、結果は0になる。 -expr6 *expr6* +expr7 *expr7* ----- - ! expr6 logical NOT *expr-!* - - expr6 unary minus *expr-unary--* +! expr7 論理否定 *expr-!* +- expr7 単項マイナス *expr-unary--* ++ expr7 unary plus *expr-unary-+* '!'演算子では非零は0に、0は1になる。 '-'では数値の符号が反転される。 +'+"では変化はない。 文字列はまず数値に変換される。 これら2つは繰り返したり混ぜたりできる。例: - !-1 == 0 - !!8 == 1 - --9 == 9 + !-1 == 0 + !!8 == 1 + --9 == 9 -expr7 *expr7* +expr8 *expr8* ----- - expr8[expr1] index in String *expr-[]* +expr9[expr1] 文字列内でのインデックス *expr-[]* *E111* -これの結果は文字列expr8のexpr1番目の単一のキャラクタからなる文字列である。 -expr8は文字列、expr1は数である。 +これの結果は文字列expr9のexpr1番目の単一の文字からなる文字列である。expr9は文 +字列、expr1は数である。ただしマルチバイトエンコーディングの文字列については、 +単なるバイトコードであることに注意。 インデックスが0の場合、先頭のキャラクタが得られることに注意。これはC言語のよう に働く。注意:カラム番号は1から始まる。例えばカーソルの下の文字を得るためには、 -次のようにする必要がある: -> c = getline(line("."))[col(".") - 1] +次のようにする必要がある: > + :let c = getline(line("."))[col(".") - 1] 文字列の長さよりも大きなインデックスが指定された場合、結果は空文字列になる。 - *expr8* + *expr9* 数 ------ - number number constant *expr-number* +number 数定数 *expr-number* 10進数、16進数(0xか0Xで始まる)、もしくは8進数(0で始まる)の数定数。 -文字列 *expr-string* +文字列 *expr-string* *E114* ------ - "string" string constant *expr-quote* +"string" 文字列定数 *expr-quote* ダブルクォートが使われていることに注意。 -文字列定数には以下の特別文字が使用できる: -A string constant accepts these special characters: - \... 3桁の8進数字 (例 "\316") - \.. 2桁の8進数字 (非数字が続かなければならない) - \. 1桁の8進数字 (非数字が続かなければならない) - \x.. 2桁の16進数字 (例 "\x1f") - \x. 1桁の16進数字 (16進数字でないものが続かなければならない) - \X.. \x..に同じ - \X. \x.に同じ - \b バックスペース <BS> - \e エスケープ <Esc> - \f フォームフィード <FF> - \n 改行 <NL> - \r 改行(キャリッジリターン) <CR> - \t タブ <Tab> - \\ 円記号(バックスラッシュ) - \" ダブルクォート - \<xxx> "xxx"というなの特別キー。 例 "\<C-W>" は CTRL-W. +文字列定数には以下の特殊文字が使用できる: +\... 3桁の8進数字 (例 "\316") +\.. 2桁の8進数字 (非数字が続かなければならない) +\. 1桁の8進数字 (非数字が続かなければならない) +\x.. 2桁の16進数字 (例 "\x1f") +\x. 1桁の16進数字 (16進数字でないものが続かなければならない) +\X.. \x..に同じ +\X. \x.に同じ +\u.... 文字を4桁の16進数で表現したもので、実際の値は現在の'encoding'の値に依 + 存する (例えば "\u02a4") +\U.... \u....に同じ +\b バックスペース <BS> +\e エスケープ <Esc> +\f フォームフィード <FF> +\n 改行 <NL> +\r 改行(キャリッジリターン) <CR> +\t タブ <Tab> +\\ 円記号(バックスラッシュ) +\" ダブルクォート +\<xxx> "xxx"というなの特別キー。 例 "\<C-W>" は CTRL-W. Note "\000"と"\x00"は強制的に文字列の終端として扱われる。 -リテラル文字列 *literal-string* +リテラル文字列 *literal-string* *E115* --------------- - 'string' literal string constant *expr-'* +'string' リテラル文字列定数 *expr-'* Note シングルクォートが使われていることに注意。 @@ -302,16 +358,24 @@ Note シングルクォートが使われていることに注意。 い。含む必要がある場合は普通の文字列(ダブルクォート)を使用すること。 -オプション *expr-option* +オプション *expr-option* *E112* *E113* ------ - &option option value +&option オプション変数、ローカルなものが優先 +&g:option グローバルオプション変数 +&l:option ローカルオプション変数 + +例: > + echo "タブストップは " . &tabstop . " です" + if &insertmode -ここにはあらゆるオプション名を使うことができる。|options|を参照。 +ここにはあらゆるオプション名を使うことができる。|options|を参照。ローカル変数 +を使おうとして、実際にはバッファローカルもウィンドウローカルも存在しない場合に +は、グローバル変数が利用される。 レジスタ *expr-register* -------- - @r contents of register 'r' +@r レジスタ'r'の値 結果は、名前付けられたレジスタの内容が単一の文字列として与えられる。必要なとこ ろには改行文字が挿入されている。無名レジスタの内容を取得するためには@@を使う。 @@ -319,14 +383,14 @@ Note シングルクォートが使われていることに注意。 照。 -入れ子 *expr-nesting* +入れ子 *expr-nesting* *E110* ------- - (expr1) nested expression(式の入れ子) +(expr1) 式の入れ子 環境変数 *expr-env* -------------------- - $VAR environment variable(環境変数) +$VAR 環境変数 環境変数の文字列。定義されていない環境変数を指定した場合、結果は空文字列。 *expr-env-expand* @@ -334,52 +398,189 @@ Note $VARを直接使用した場合とexpand("$VAR")を使用した場合では ることに注意。直接使用した場合には、現在のVimのセッション中で既知の値に展開さ れるだけである。expand()を使用した場合、まず最初にVimのセッション中で既知の値 に展開される。それが失敗した場合、変数の展開にシェルが使用されることになる。こ -れは遅くはなるが、シェルの知りうる総ての変数を展開することができる。例: -> echo $version -> echo expand("$version") +れは遅くはなるが、シェルの知りうる総ての変数を展開することができる。例: > + :echo $version + :echo expand("$version") 最初の一つは恐らく何も帰ってこず、2つ目は$versionの値が帰ってくるだろう(貴方の シェルがサポートしていたとして) 内部変数 *expr-variable* ----------------- - variable internal variable(内部変数) +variable 内部変数 以下の|internal-variables|を参照。 -関数呼出 *expr-function* +関数呼出 *expr-function* *E116* *E117* *E118* *E119* *E120* ------------- - function(expr1, ...) function call(関数呼出) +function(expr1, ...) 関数呼出 以下の|functions|を参照。 ============================================================================== -3. 内部変数 *internal-variables* - +3. 内部変数 *internal-variables* *E121* + *E461* 内部変数の名前には文字と、数字とアンダーバー('_')を使うことができる。しかし数 -字で始めることはできない。 +字で始めることはできない。波括弧を使うこともできる。 +詳細は|curly-braces-names|を参照。 内部変数は":let"コマンドで作成される|:let|。":unlet"コマンドで内部変数を破棄す ることができる|:unlet|。内部変数に使われてない名前か、既に破棄された内部変数を 使うとエラーとなる。 +変数には幾つもの名前空間が存在する。実際にどれが利用されるかは、どのような前置 +子が使われたかで決まる: + + (無し) 関数の中では関数ローカル、それ以外ではグローバル +|buffer-variable| b: 現在のバッファにローカル +|window-variable| w: 現在のウィンドウにローカル +|global-variable| g: グローバル +|local-variable| l: 関数にローカル +|script-variable| s: |:source|されたVimスクリプトにローカル +|function-argument| a: 関数の引数(関数内のみ) +|vim-variable| v: グローバル、Vimがあらかじめ定義 + + *buffer-variable* *b:var* "b:"で始まる変数名は、カレントバッファに局所的な変数を意味する。このように一つ 一つのバッファ毎に、変数"b:foo"を別々に使用することができる。この種の変数は -バッファがアンロードされた時に破棄される。もしもそれを破棄したくない場合には、 -'hidden'オプションを設定することでバッファがアンロードされるのを避けることがで -きる。 +バッファが掃除(wipe out)された時や、":bdelete"で削除された時に一緒に削除され +る。 +1つのバッファローカル変数が定義済: + *b:changedtick-variable* *changetick* +b:changedtick 現在のバッファに対する総変更の回数。変更を行うたびに増加する。 + これには一回のアンドゥ操作もカウントされる。この変数はバッファ + に変更が行われた際にだけアクションを起こしたい時に利用できる。 + 例: > + :if my_changedtick != b:changedtick + : let my_changedtick = b:changedtick + : call My_Update() + :endif +< + *window-variable* *w:var* "w:"で始まる変数名は、カレントウィンドウに局所的な変数を意味する。これはウィン ドウを閉じるときに破棄される。 -関数の中からグローバル変数へアクセスするには、"g:"を付けた名前を使用する。 + *global-variable* *g:var* +関数の中からグローバル変数へアクセスするには、"g:"を付けた名前を使用する。これ +が省略された場合は関数ローカルな変数にアクセスする。ただし"g:"自体は、関数の外 +でも使うことができる。 + + *local-variable* *l:var* +関数の中からそのローカル変数にアクセスするには何も前置しなければ良い。しかし明 +示的に"l:"を付けることも可能。 + + *script-variable* *s:var* +In a Vim script variables starting with "s:" can be used. They cannot be +accessed from outside of the scripts, thus are local to the script. + +They can be used in: +- commands executed while the script is sourced +- functions defined in the script +- autocommands defined in the script +- functions and autocommands defined in functions and autocommands which were + defined in the script (recursively) +- user defined commands defined in the script +Thus not in: +- other scripts sourced from this one +- mappings +- etc. + +script variables can be used to avoid conflicts with global variable names. +Take this example: + + let s:counter = 0 + function MyCounter() + let s:counter = s:counter + 1 + echo s:counter + endfunction + command Tick call MyCounter() + +You can now invoke "Tick" from any script, and the "s:counter" variable in +that script will not be changed, only the "s:counter" in the script where +"Tick" was defined is used. + +Another example that does the same: > + + let s:counter = 0 + command Tick let s:counter = s:counter + 1 | echo s:counter + +When calling a function and invoking a user-defined command, the context for +script varialbes is set to the script where the function or command was +defined. + +The script variables are also available when a function is defined inside a +function that is defined in a script. Example: > + + let s:counter = 0 + function StartCounting(incr) + if a:incr + function MyCounter() + let s:counter = s:counter + 1 + endfunction + else + function MyCounter() + let s:counter = s:counter - 1 + endfunction + endif + endfunction + +This defines the MyCounter() function either for counting up or counting down +when calling StartCounting(). It doesn't matter from where StartCounting() is +called, the s:counter variable will be accessible in MyCounter(). + +When the same script is sourced again it will use the same script variables. +They will remain valid as long as Vim is running. This can be used to +maintain a counter: > + + if !exists("s:counter") + let s:counter = 1 + echo "script executed for the first time" + else + let s:counter = s:counter + 1 + echo "script executed " . s:counter . " times now" + endif + +Note that this means that filetype plugins don't get a different set of script +variables for each buffer. Use local buffer variables instead |b:var|. + + +Vimの定義済変数: *vim-variable* *v:var* + + *v:charconvert_from* *charconvert_from-variable* +v:charconvert_from + The name of the character encoding of a file to be converted. + Only valid while evaluating the 'charconvert' option. + + *v:charconvert_to* *charconvert_to-variable* +v:charconvert_to + The name of the character encoding of a file after conversion. + Only valid while evaluating the 'charconvert' option. + + *v:cmdarg* *cmdarg-variable* +v:cmdarg This variable is used for two purposes: + 1. The extra arguments given to a file read/write command. + Currently these are "++enc=" and "++ff=". This variable is + set before an autocommand event for a file read/write + command is triggered. There is a leading space to make it + possible to append this variable directly after the + read/write command. Note: The "+cmd" argument isn't + included here, because it will be executed anyway. + 2. When printing a PostScript file with ":hardcopy" this is + the argument for the ":hardcopy" command. This can be used + in 'printexpr'. + + *v:cmdbang* *cmdbang-variable* +v:cmdbang Set like v:cmdarg for a file read/write command. When a "!" + was used the value is 1, otherwise it is 0. Note that this + can only be used in autocommands. For user commands |<bang>| + can be used. -Vimの定義済変数: *v:count* *count-variable* v:count 最後に実行されたノーマルモードコマンドに渡されたコマンドの実行 - 回数を返す。読出し専用。使用例: -> :map _x :<C-U>echo "the count is " . count<CR> - Note: <C-U>は、カウントの後に':'をタイプした時に示される、行範 + 回数を返す。読出し専用。使用例: > + :map _x :<C-U>echo "the count is " . count<CR> +< Note: <C-U>は、カウントの後に':'をタイプした時に示される、行範 囲指定を削除するために必要となる。 また"count"は、以前の版のVimとの互換性の為に動作する。 @@ -387,22 +588,131 @@ v:count 最後に実行されたノーマルモードコマンドに渡され v:count1 "v:count"と同じように、しかしカウントが指定されなかった時の省 略値として存在する。 + *v:ctype* *ctype-variable* +v:ctype The current locale setting for characters of the runtime + environment. This allows Vim scripts to be aware of the + current locale encoding. Technical: it's the value of + LC_CTYPE. When not using a locale the value is "C". + This variable can not be set directly, use the |:language| + command. + See |multi-lang|. + + *v:dying* *dying-variable* +v:dying Normally zero. When a deadly signal is caught it's set to + one. When multiple signals are caught the number increases. + Can be used in an autocommand to check if Vim didn't + terminate normally. {only works on Unix} + Example: > + :au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif +< *v:errmsg* *errmsg-variable* v:errmsg 最後に表示されたエラーメッセージ。この変数はセットすることが許 - されている。例: -> :let errmsg = "" -> :next -> :if (errmsg != "") -> : ... - また"errmsg"は、以前の版のVimとの互換性の為に動作する。 - - *v:warningmsg* *warningmsg-variable* -v:warningmsg 最後に表示された警告メッセージ。この変数はセットすることが許さ - れている。 - - *v:statusmsg* *statusmsg-variable* -v:statusmsg 最後に表示されたステータスメッセージ。この変数はセットすること - が許されている。 + されている。例: > + :let errmsg = "" + :next + :if (errmsg != "") + : ... +< また"errmsg"は、以前の版のVimとの互換性の為に動作する。 + + *v:exception* *exception-variable* +v:exception The value of the exception most recently caught and not + finished. See also |v:throwpoint| and |throw-variables|. + Example: > + :try + : throw "oops" + :catch /.*/ + : echo "caught" v:exception + :endtry +< Output: "caught oops". + + *v:fname_in* *fname_in-variable* +v:fname_in The name of the input file. Only valid while evaluating: + option used for ~ + 'charconvert' file to be converted + 'diffexpr' original file + 'patchexpr' original file + 'printexpr' file to be printed + + *v:fname_out* *fname_out-variable* +v:fname_out The name of the output file. Only valid while + evaluating: + option used for ~ + 'charconvert' resulting converted file (*) + 'diffexpr' output of diff + 'patchexpr' resulting patched file + (*) When doing conversion for a write command (e.g., ":w + file") it will be equal to v:fname_in. When doing conversion + for a read command (e.g., ":e file") it will be a temporary + file and different from v:fname_in. + + *v:fname_new* *fname_new-variable* +v:fname_new The name of the new version of the file. Only valid while + evaluating 'diffexpr'. + + *v:fname_diff* *fname_diff-variable* +v:fname_diff The name of the diff (patch) file. Only valid while + evaluating 'patchexpr'. + + *v:folddashes* *folddashes-variable* +v:folddashes Used for 'foldtext': dashes representing foldlevel of a closed + fold. + Read-only. |fold-foldtext| + + *v:foldlevel* *foldlevel-variable* +v:foldlevel Used for 'foldtext': foldlevel of closed fold. + Read-only. |fold-foldtext| + + *v:foldend* *foldend-variable* +v:foldend Used for 'foldtext': last line of closed fold. + Read-only. |fold-foldtext| + + *v:foldstart* *foldstart-variable* +v:foldstart Used for 'foldtext': first line of closed fold. + Read-only. |fold-foldtext| + + *v:lang* *lang-variable* +v:lang The current locale setting for messages of the runtime + environment. This allows Vim scripts to be aware of the + current language. Technical: it's the value of LC_MESSAGES. + The value is system dependent. + This variable can not be set directly, use the |:language| + command. + It can be different from |v:ctype| when messages are desired + in a different language than what is used for character + encoding. See |multi-lang|. + + *v:lc_time* *lc_time-variable* +v:lc_time The current locale setting for time messages of the runtime + environment. This allows Vim scripts to be aware of the + current language. Technical: it's the value of LC_TIME. + This variable can not be set directly, use the |:language| + command. See |multi-lang|. + + *v:lnum* *lnum-variable* +v:lnum Line number for the 'foldexpr' and 'indentexpr' expressions. + Only valid while one of these expressions is being evaluated. + Read-only. |fold-expr| 'indentexpr' + + *v:prevcount* *prevcount-variable* +v:prevcount The count given for the last but one Normal mode command. + This is the v:count value of the previous command. Useful if + you want to cancel Visual mode and then use the count. > + :vmap % <Esc>:call MyFilter(v:prevcount)<CR> +< Read-only. + + *v:progname* *progname-variable* +v:progname Contains the name (with path removed) with which Vim was + invoked. Allows you to do special initialisations for "view", + "evim" etc., or any other name you might symlink to Vim. + Read-only. + + *v:register* *register-variable* +v:register The name of the register supplied to the last normal mode + command. Empty if none were supplied. |getreg()| |setreg()| + + *v:servername* *servername-variable* +v:servername The resulting registered |x11-clientserver| name if any. + Read-only. *v:shell_error* *shell_error-variable* v:shell_error 最後に実行したシェルコマンドの結果。シェルコマンドの実行時にな @@ -410,26 +720,63 @@ v:shell_error 最後に実行したシェルコマンドの結果。シェルコ る。これはシェルがエラーコードをVimに通知する時のみ働く。コマ ンドが実行されなかった時には、値として-1が良く使われる。読出し 専用。 - 例: -> :!mv foo bar -> :if v:shell_error -> : echo 'could not rename "foo" to "bar"!' -> :endif - また"shell_error"は、以前の版のVimとの互換性の為に動作する。 + 例: > + :!mv foo bar + :if v:shell_error + : echo 'could not rename "foo" to "bar"!' + :endif +< また"shell_error"は、以前の版のVimとの互換性の為に動作する。 + + *v:statusmsg* *statusmsg-variable* +v:statusmsg 最後に表示されたステータスメッセージ。この変数はセットすること + が許されている。 + + *v:termresponse* *termresponse-variable* +v:termresponse The escape sequence returned by the terminal for the |t_RV| + termcap entry. It is set when Vim receives an escape sequence + that starts with ESC [ or CSI and ends in a 'c', with only + digits, ';' and '.' in between. + When this option is set, the TermResponse autocommand event is + fired, so that you can react to the response from the + terminal. + The response from a new xterm is: "<Esc>[ Pp ; Pv ; Pc c". Pp + is the terminal type: 0 for vt100 and 1 for vt220. Pv is the + patch level (since this was introduced in patch 95, it's + always 95 or bigger). Pc is always zero. + {only when compiled with |+termresponse| feature} *v:this_session* *this_session-variable* -v:this_session - 最後にロードされたか、セーブされたセッションファイルの完全な +v:this_session 最後にロードされたか、セーブされたセッションファイルの完全な ファイル名。|:mksession|を参照。この変数はセットすることが許さ れている。それ以前にセーブされたセッションがなければ、この変数 は空となる。 また"this_session"は、以前の版のVimとの互換性の為に動作する。 + *v:throwpoint* *throwpoint-variable* +v:throwpoint The point where the exception most recently caught and not + finished was thrown. Not set when commands are typed. See + also |v:exception| and |throw-variables|. + Example: > + :try + : throw "oops" + :catch /.*/ + : echo "Exception from" v:throwpoint + :endtry +< Output: "Exception from test.vim, line 2" + *v:version* *version-variable* v:version Vimのバージョン番号。メジャーバージョン番号は100倍され、マイ ナーバージョン番号と足されている。Version 5.0は500。Version - 5.1 (5.01)は501となる。読出し専用。 - また"version"は、以前の版のVimとの互換性の為に動作する。 + 5.1 (5.01)は501となる。読出し専用。また"version"は、以前の版の + Vimとの互換性の為に動作する。 + 特定のパッチが摘要されているかを調べるには|has()|を使う。例: > + if has("patch123") +< 5.0と5.1には両方ともパッチ123が存在しているが、バージョンが違 + えば番号は同じでもパッチの内容は全く異なっている。 + + *v:warningmsg* *warningmsg-variable* +v:warningmsg 最後に表示された警告メッセージ。この変数はセットすることが許さ + れている。 ============================================================================== 4. 組み込み関数 *functions* From 9fc87c98644c8cb41e82aca0ab7bd26a166ad1f1 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 24 Apr 2005 02:56:38 +0000 Subject: [PATCH 028/783] add: description for JAVA syntax git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@28 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/syntax.jax | 123 ++++++++++++++++++++++++-------------------------- 1 file changed, 58 insertions(+), 65 deletions(-) diff --git a/ja/syntax.jax b/ja/syntax.jax index 42b829d56..14b20ce23 100644 --- a/ja/syntax.jax +++ b/ja/syntax.jax @@ -1259,95 +1259,88 @@ Informコンパイラはある古いキーワードをエラーとみなす。 JAVA *java.vim* *java-syntax* -The java.vim syntax highlighting file offers several options: +java.vim構文強調ファイルはいくつかのオプションを提供している: -In Java 1.0.2 it was never possible to have braces inside parens, so this was -flagged as an error. Since Java 1.1 this is possible (with anonymous -classes), and therefore is no longer marked as an error. If you prefer the old -way, put the following line into your vim startup file: > +Java 1.0.2では丸括弧の内側に波括弧が入ることは絶対になかったため、これはエラー +と判断された。Java1.1以降では(無名クラスとともに)これが可能になったため、エラ +ーと判断されなくなった。もし以前のようにしたいなら、vimの初期化ファイルに次の +行を加えること: > :let java_mark_braces_in_parens_as_errors=1 -All identifiers in java.lang.* are always visible in all classes. To -highlight them use: > +java.lang.*中の全ての識別子は常に全てのクラスから見える。それらを強調するには :let java_highlight_java_lang_ids=1 +とする。 -You can also highlight identifiers of most standard java packages if you -download the javaid.vim script at http://www.fleiner.com/vim/download.html. -If you prefer to only highlight identifiers of a certain package, say java.io -use the following: > +http://www.fleiner.com/vim/download.htmlにあるスクリプトjavaid.vimをダウンロー +ドすれば、ほとんどのJava標準パッケージの識別子を強調することもできる。 +java.ioなど特定のパッケージの識別子だけを強調したいならばこうする: > :let java_highlight_java_io=1 -Check the javaid.vim file for a list of all the packages that are supported. +対応している全パッケージのリストはjavaid.vimを参照のこと。 -Function names are not highlighted, as the way to find functions depends on -how you write java code. The syntax file knows two possible ways to highlight -functions: +関数の識別はJavaコードの書き方によるため、関数名は強調されない。構文ファイルは +関数を強調する方法を2つ備えている: -If you write function declarations that are always indented by either -a tab, 8 spaces or 2 spaces you may want to set > +関数宣言が常にタブ、スペース8個、スペース2個のいずれかでインデントされているな +ら > :let java_highlight_functions="indent" -However, if you follow the Java guidelines about how functions and classes are -supposed to be named (with respect to upper and lowercase), use > +とするとよいかもしれない。 +しかし、関数とクラスの命名(大文字・小文字についての)に関するJavaガイドラインに +したがっているなら > :let java_highlight_functions="style" -If both options do not work for you, but you would still want function -declarations to be highlighted create your own definitions by changing the -definitions in java.vim or by creating your own java.vim which includes the -original one and then adds the code to highlight functions. - -In java 1.1 the functions System.out.println() and System.err.println() should -only be used for debugging. Therefor it is possible to highlight debugging -statements differently. To do this you must add the following definition in -your startup file: > +とすること。 +もしどちらのオプションもだめで、それでも関数宣言を強調したいなら、java.vim中の +定義を変更するか、もとのjava.vimに関数を強調するコードを加えて自分用のjava.vim +を作るかして独自の定義を作るしかない。 + +Java 1.1ではSystem.out.println()とSystem.err.println()はデバッグのためだけに使 +われるものだった。そのためデバッグ用の文を区別して強調することができる。それに +は次の定義を初期化ファイルに加える: > :let java_highlight_debug=1 -The result will be that those statements are highlighted as 'Special' -characters. If you prefer to have them highlighted differently you must define -new highlightings for the following groups.: +するとデバッグ用の文が'Special'の文字として強調されるだろう。これらを別の色で +強調の色で強調したければ、以下のグループに対して新しい強調を定義すること: Debug, DebugSpecial, DebugString, DebugBoolean, DebugType -which are used for the statement itself, special characters used in debug -strings, strings, boolean constants and types (this, super) respectively. I -have opted to chose another background for those statements. - -In order to help you to write code that can be easily ported between -java and C++, all C++ keywords are marked as error in a java program. -However, if you use them regularly, you may want to define the following -variable in your .vimrc file: > +これらはそれぞれ、文、デバッグ文字列に使われる特別な文字、文字列、ブール型定 +数、型(this, super)に使われる。私はこれらの文に異なる背景色をつけることにして +いる。 + +JavaとC++間で移植が容易なコードを書くための補助として、Javaプログラム中のC++ +キーワードはエラーとして強調される。しかし、本当にそれらのキーワードを使いたい +ときは.vimrc中で次の変数を定義するとよい: > :let java_allow_cpp_keywords=1 -Javadoc is a program that takes special comments out of java program files and -creates HTML pages. The standard configuration will highlight this HTML code -similarly to HTML files (see |html.vim|). You can even add javascript -and CSS inside this code (see below). There are four differences however: - 1. The title (all characters up to the first '.' which is followed by - some white space or up to the first '@') is colored differently (to change - the color change the group CommentTitle). - 2. The text is colored as 'Comment'. - 3. HTML comments are colored as 'Special' - 4. The special javadoc tags (@see, @param, ...) are highlighted as specials - and the argument (for @see, @param, @exception) as Function. -To turn this feature off add the following line to your startup file: > +JavadocはJavaプログラム中から特別なコメントを抜き出してHTMLページを作成するプ +ログラムである。標準の設定ではこれらのHTMLコードをHTMLファイル(|html.vim|を参 +照)と同様に強調する。さらにこのコードの中にjavascriptとCSSを書くこともできる( +後述)。しかし4つの違いがある: + 1. タイトル(その後にホワイトスペースが続く最初の'.'まで、または最初の'@'まで + のすべての文字)は異なる色で強調される(この色を変更するにはCommentTitleを + 変えること)。 + 2. テキストは'Comment'として強調される。 + 3. HTMLコメントは'Special'として強調される。 + 4. 特別なJavadocタグ(@see, @param, ...)はSpecialとして、(@see, @param, + @exceptionなどの)引数はFunctionとして強調される。 +この機能をオフにするには初期化ファイルに次の行を加えること: > :let java_ignore_javadoc=1 -If you use the special javadoc comment highlighting described above you -can also turn on special highlighting for javascript, visual basic -scripts and embedded CSS (stylesheets). This makes only sense if you -actually have javadoc comments that include either javascript or embedded -CSS. The options to use are > +以上のjavadocコメントを使う場合、javascript、visual basicスクリプト、埋め込み +CSS(スタイルシート)の強調をすることもできる。これは実際にjavascriptや埋め込み +CSSを含むjavadocコメントがあるときだけ意味がある。これらを有効化するためのオプ +ションは > :let java_javascript=1 :let java_css=1 :let java_vb=1 -In order to highlight nested parens with different colors define colors -for javaParen, javaParen1 and javaParen2, for example with > +ネストした丸括弧に異なる色をつけるには、javaParen、javaParen1、javaParen2に異 +なる色を定義する。例えば > :hi link javaParen Comment -or > +あるいは > :hi javaParen ctermfg=blue guifg=#0000ff -If you notice highlighting errors while scrolling backwards, which are fixed -when redrawing with CTRL-L, try setting the "java_minlines" internal variable -to a larger number: > +上方向にスクロールしていて強調の間違いが現れた場合(CTRL-Lで再描画すると直る)、 +内部変数"java_minlines"を大きくしてみるとよい: > :let java_minlines = 50 -This will make the syntax synchronization start 50 lines before the first -displayed line. The default value is 10. The disadvantage of using a larger -number is that redrawing can become slow. +こうすると表示行の50行前から構文シンクロナイズが始まるようになる。デフォルト値 +は10である。大きな値にすることの不利点は、再描画が遅くなることである。 LACE *lace.vim* *lace-syntax* From 9b2048b95be84b571e60cee5d80c5d25d0774da6 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 24 Apr 2005 13:33:47 +0000 Subject: [PATCH 029/783] git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@29 a429a4b8-4c93-91f1-de24-85204d8cde48 From a6ab0343876e099d488cc786b368ae1b7b3b8a62 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Wed, 2 Aug 2006 16:01:41 +0000 Subject: [PATCH 030/783] Fix: update to nakadaira-san version. git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@30 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/debug.jax | 160 +++++ ja/farsi.jax | 290 ++++----- ja/help.jax | 259 ++++---- ja/pattern.jax | 1537 +++++++++++++++++++++++++++++++++------------ ja/pi_paren.jax | 55 ++ ja/pi_tar.jax | 64 ++ ja/pi_vimball.jax | 92 +++ ja/pi_zip.jax | 58 ++ ja/print.jax | 744 ++++++++++++++++++++++ ja/sponsor.jax | 213 +++++++ ja/tabpage.jax | 364 +++++++++++ ja/uganda.jax | 154 +++-- ja/usr_32.jax | 160 +++++ ja/variaous.jax | 396 ------------ ja/various.jax | 840 +++++++++++++++++++++++++ 15 files changed, 4274 insertions(+), 1112 deletions(-) create mode 100644 ja/debug.jax create mode 100644 ja/pi_paren.jax create mode 100644 ja/pi_tar.jax create mode 100644 ja/pi_vimball.jax create mode 100644 ja/pi_zip.jax create mode 100644 ja/print.jax create mode 100644 ja/sponsor.jax create mode 100644 ja/tabpage.jax create mode 100644 ja/usr_32.jax delete mode 100644 ja/variaous.jax create mode 100644 ja/various.jax diff --git a/ja/debug.jax b/ja/debug.jax new file mode 100644 index 000000000..601dac9d7 --- /dev/null +++ b/ja/debug.jax @@ -0,0 +1,160 @@ +COMMENT: Vimのデバッグ +STATUS: finished 7.0g +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*debug.txt* For Vim version 7.0g. Last change: 2006 May 01 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Vim のデバッグ *debug-vim* + +Vim のデバッグ方法についての説明です。 +Vim スクリプトや関数などのデバッグについては、|debug-scripts| を参照してくださ +い。 + +1. gcc と gdb を使ってクラッシュの場所を特定する |debug-gcc| +2. Windows でのバグレポート |debug-win32| + +============================================================================== + +1. gcc と gdb を使ってクラッシュの場所を特定する *debug-gcc* + +テストファイルで Vim がクラッシュした場合、gcc を使っているなら、以下の方法で +場所を特定できます。MinGW でも同じようにできます。 + +1. "-g" オプション付きで Vim をコンパイル (Makefile にそのための行があるのでコ + メントアウトしてください)。 + +2. 次のコマンドを実行 ("11" の所を失敗したテストの番号に変えてください): > + cd testdir + gdb ../vim + run -u unix.vim -U NONE -s dotest.in test11.in + +3. Vim のクラッシュを確認。gdb がメッセージを表示します。 + +4. 次のコマンドでスタックトレースを表示できます: > + where +< 次のコマンドで別の場所のスタックトレースを表示できます: > + frame 3 +< "3" のところをにスタックトレースの番号を指定してください。 + +============================================================================== + +2. Windows でのバグレポート *debug-win32* + +Windows版の Vim が再現可能な手段でクラッシュした場合、次の方法で有用なバグレ +ポートを作成できます。 + +一般事項 ~ + +実行ファイルに対応したデバッグシンボルファイル (PDB) を用意してください。 +gvim.exe には gvim.pdb、vim.exe には vim.pdb が必要です。あなたが実行ファイル +を入手したのと同じ場所に用意されているはずです。EXE に対応した (同じ日付の) +PDB でなければいけません。 + +Microsoft Visual C++ コンパイラを使って自分で実行ファイルを作成した場合は、PDB +は EXE といっしょに作成されています。 + +他の方法もあります。ソースファイルを入手し、Visual Studio のワークスペースに +Make_ivc.mak を取り込んでください。そして、デバッグの設定を選択し、ビルドして +ください。ブレイクポイントの設定や変数の監視など、すべてのデバッグ機能が使えま +す。 + +Visual Studio を持っている場合はそれを使ってください。VC Toolkit と WinDbg は +必要ありません。 + +他のコンパイラを使っている場合は、それぞれ適切なデバッガを使ってください。 +Borland コンパイラで作成した Vim 実行ファイルなら TD を使ってください。Cygwin +または MinGW のコンパイラなら gdb を使ってください (上記参照 |debug-gcc|)。 + + + *debug-vs2005* +2.2 Visual Studio 2005/Visual C++ 2005 Express で Vim をデバッグする ~ + +vim.exe か gvim.exe を起動し、Visual Studio を起動してください。(Visual Studio +を持っていない場合は、|get-ms-debuggers| の説明に従って、無料の Visual C++ +2005 Express Edition を入手してください。) + +メニューから「ツール/プロセスにアタッチ」を選択し、Vim のプロセスを選択します。 + +そして、Vim を操作してクラッシュを再現します。「ハンドルされていない例外が発生 +しました」という Visual Studio のダイアログが表示されるので、中断ボタンをクリ +ックしてプロセスを中断してください。 + +シンボルが読み込めず、ソースコードを表示できなかったときは、もう一つダイアログ +が表示されます。OK をクリックしてください。 + +ウィンドウがいくつか開きます。呼び出し履歴ウィンドウの右クリックメニューから +「シンボルの読み込み」を選択してください。シンボル検索ダイアログが開くので、 +(g)vim.pdb のあるディレクトリを選択してください。 + +このとき、呼び出し履歴ウィンドウには Vim の関数名や行番号が表示されているはず +です。どれかをダブルクリックするとソースの検索ダイアログが表示されます。Vim の +ソースがあるディレクトリを選択してください (もしソースがあるなら)。 + +さらに詳しくデバッグする方法が分からないときは、":help bug-reports" の説明に従 +ってください。バグレポートに呼び出し履歴を張り付けてください。 + +有料版の Visual Studio を使っている場合は、デバッグメニューから minidump を保 +存できるので、それをバグレポートに添付してください。minidump は 100KB 以下の小 +さなファイルで、Vim のプロセスに関する情報が入っています。 +Visual C++ 2005 Express Edition では minidump を保存できません。just-in-time +デバッガ (クラッシュを検出して自動的に起動されるデバッガ) もインストールされま +せん。それらが必要なときは WinDbg (|debug-windbg|) を使ってください。 + + *debug-windbg* +2.3 WinDbg を使って Vim をデバッグする ~ + +WinDbg の入手方法は |get-ms-debuggers| を参照してください。 + +Visual Studio IDE を使うのと同じように、WinDbg から Vim のプロセスにアタッチで +きます。プログラムがクラッシュしたときに、事後分析デバッガ (postmortem +debugger) として、WinDebug を自動的に起動することができます。事後分析デバッガ +として WinDeb を設定するには "windbg -I" を実行してください。 + +WinDbg から、実行中の Vim のプロセスにアタッチするには、WinDeb を起動し、File +メニューから「プロセスにアタッチ」を選択し、Vim のプロセスを選択して OK をク +リックします。 + +メニューから「File->Symbol File Path」を選択し、Vim PDB の入っているフォルダを +symbolpath に追加してください。Vim のソースファイルもある場合は、File メニュー +のSource File Path を使ってください。WinDbg でソースファイルを開いたり、ブレー +クポイントを設定したりできます。Vim をクラッシュさせると、クラッシュした場所の +ソースファイルが WinDbg で開かれます。View メニューを使って、コールスタック、 +ローカル変数、ウォッチウィンドウなどを見ることができます。 + +事後分析デバッガとして WinDbg を使っている場合、WinDbg から Vim のプロセスにア +タッチする必要はありません。Vim をクラッシュさせるだけで WinDbg が自動的に起動 +します。上述のように、シンボルファイルパスとソースファイルパスを設定してくださ +い。 + +minidump を保存するには、WinDbg コマンドラインで次のコマンドを入力します: > + .dump vim.dmp +< + *debug-minidump* +2.4 Minidump を開く ~ + +Visual Studio か WinDbg を使って minidump を開くことができます。 + +Visual Studio 2005 の場合: メニューから「ファイル->開く->プロジェクト/ソリュー +ション」選択し、.dmp ファイルを開いてください。F5 キーを押してデバッガを起動し +ます。Symbol File Path の設定について |debug-vs2005| の説明も参照してくださ +い。 + +WinDbg の場合: メニューから「File->Open Crash Dump」を選択します。Symbol File +Pathの設定について |debug-windbg| の説明も参照してください。 + + *get-ms-debuggers* +2.5 Microsoft デバッグツールの入手方法 ~ + +Windows 用のデバッグツールは次の場所からダウンロードできます + http://www.microsoft.com/whdc/devtools/debugging/default.mspx +これには WinDbg デバッガが含まれています。 + +Visual C++ 2005 Express Edition は次の場所からダウンロードできます。無料です。 + http://msdn.microsoft.com/vstudio/express/visualC/default.aspx + +========================================================================= + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/farsi.jax b/ja/farsi.jax index ae054e881..7aa72350d 100644 --- a/ja/farsi.jax +++ b/ja/farsi.jax @@ -2,199 +2,201 @@ COMMENT: アラビア語テキストの取り扱い方 STATUS: finished 6.3.054 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTEINER: nakadaira <hopper2@nanameue.jp> *farsi.txt* For Vim version 6.3. Last change: 2002 Oct 29 VIM REFERENCE MANUAL by Mortaza Ghassab Shiran +ペルシア語マッピングと右横書き *farsi* *Farsi* -右から左への書式とVimのイラン語マッピング *farsi* *Farsi* +{Vi にはない機能です} -{Vi はこれらのコマンドを持たない} + *E27* +ペルシア語マッピングと右横書きを使うには、Vimをコンパイルするときに |+farsi| +を有効にする必要があります。 - *E27* -右から左への書式と、イラン語マッピングをサポートをするには、Vimを|+farsi|特 -性と共にコンパイルする必要がある。 +これらの機能は Mortaza G. Shiran <shiran@jps.net> によって作成されました。 -これらの機能はMortaza G. Shiran <shiran@jps.net>によって作られた。 +はじめに +-------- +右横書きのファイルでは、画面の右から左へ向かって文字が表示されます。そのような +ファイルはペルシア語のドキュメントを書いたり、ファックスを作成したり、ペルシア +語のメモ書きなどをするときにとても便利です。 -イントロダクション ------------------- -右から左への書式のファイルでは、文字は画面上右から左へと現れる。この種のファ -イルは、イラン語のドキュメントを書くとき、ファックスの作成、あるいはイラン語 -のメモ書きで、特に有用である。 - -コマンドのプロンプトとヘルプファイルはイラン語ではない、そのため、標準のViの -ユーザーインターフェイスは変わらない。 +コマンド、プロンプト、ヘルプファイルなどはペルシア語ではないため、ユーザーイン +ターフェースは Vi 標準のインターフェースと変わりません。 特色 ---- -o 左から右への書式のファイルを、オリジナルのVimと変わりなく編集する。 +o 普通に Vim を使うように右横書きのファイルを編集できます。 -o 右から左へのウィンドウで、ファイルを閲覧、編集する。ファイルの方向性は - ウィンドウごとであり、同じファイルを右から左モードと左から右モードの両方 - で、同時に見ることも可能である。 +o 右横書きウィンドウでファイルを表示したり編集したりします。書字方向はウイン + ドウ単位で設定できます。そのため、同じファイルを右横書きと左横書きの両方で + 同時に表示できます。 -o オリジナルのVimとの互換性。ほとんど全ての機能が右から左モードで使える - (以下のバグを参照)。 +o 普通の Vim と互換性があります。ほとんどすべての機能は右横書きモードでも使え + ます。 (下記のバグを参照) -o キーボードマッピングの変更と、反転挿入モードはコマンド1つで変更できる。 +o キーマップと逆挿入モード (|ins-reverse|) はコマンド 1 つで切り替えできま + す。 -o 反転挿入モードから、ファイルの正しい位置へ(可能ならば)復帰する。 +o 逆挿入モード (|ins-reverse|) から切り替わったときに、正常な位置にカーソルを + 移動します (それが可能な場合のみ)。 -o イラン語モードでも、数字は左から右へと入力される。非数字キャラクタの入力 - されると、そのキャラクタは最後の数字のすぐ左に挿入される。 +o ペルシア語モードでも、数字は左横書きで挿入されます。そして、数字以外の文字 + が入力されると、その文字は数字の左側に挿入されます。 -o 右から左への書式に対する特別な端末機能を必要としない。右から左への書式に - 関する変更は、完全にハードウェア非依存である。イラン語フォントのみが必要 - である。 +o 特別な端末は必要ありません。右横書き機能はハードウェアにはまったく依存して + いません。必要なのはペルシア語フォントのみです。 -o 反転挿入モードでのコマンドラインでは、イラン語キーマッピングが使われる。 +o コマンドラインでも、ペルシア語キーマップを使って逆挿入モードで入力できます。 -o 左から右モードと右から左モードは、F8ファンクションキーで切り替える。 +o 左横書きモードと右横書きモードは F8 キーで切り替えられます。 -o イラン語ISIR-3342標準エンコードとVimイラン語は、F9ファンクションキーによ - って切り替える。これは右から左モードで書かれたテキストにおいてのみ意味を - 持つため、この機能は右から左モードでしかサポートされていない。 +o ペルシア語の ISIRI-3342 標準エンコーディングと、Vim拡張ISIRI-3342 を切り替 + えられます。変換キーは F9 ファンクションキーです。これは、右横書きのテキス + トに対してのみ意味をなすので、右横書きモードでのみ利用できます。 +訳注: 原文 ISIR-3342 は ISIRI-3342 の typo? -イラン語フォント *farsi fonts* ----------------- +ペルシア語フォント *farsi fonts* +訳注: *farsi fonts* <-これはタグとして無効 +------------------ -次のファイルは、"extra"アーカイブが解凍されているなら、'$VIM/farsi'ディレクトリのサブディレクトリに含まれている。 +次のファイルは "extra" アーカイブに含まれています。インストールされているな +ら、'$VIM/farsi' ディレクトリ以下にあります。 - + far-a01.pcf Linuxを含むUnixシステムの、X Window System用フォント - + far-a01.bf SunOSのX Window System用フォント - + far-a01.f16 Linuxを含むUnixシステムのスクリーンフォント - + far-a01.fon Windows NT/95/98用のmonospacedフォント - + far-a01.com DOS用のスクリーンフォント + + far-a01.pcf Linux や Unix システムの X Windows フォント + + far-a01.bf SunOS の X Windows フォント + + far-a01.f16 Linux や Unix システムのスクリーンフォント + + far-a01.fon Windows NT/95/98 の固定幅フォント + + far-a01.com DOS のスクリーンフォント フォントのインストール ---------------------- -o MS Windows (NT/95/98)でのフォントのインストール +o MS Windows (NT/95/98) にフォントをインストールする場合 - 'コントロールパネル'から、'フォント'を選択。'ファイル'メニューから - '新しいフォントのインストール...'を選択。'far-a01.fon'を参照、選択し、 - インストールのガイドに従う。 - NOTE: 何人かの人がこの方法でできなかったと言っている。 - 解決方法はまだわからない。 + 'コントロールパネル' から、'フォント' を選択します。'ファイル' メニューから + '新しいフォントのインストール...' を選択し、'far-a01.fon' を開きます。後は + インストールガイドに従ってください。 + NOTE: この方法でインストールできなかったという報告がいくつかありました。解 + 決方法は分かりません。 -o X Window System (Unix/Linux)でのフォントのインストール +o X Window System にフォントをインストールする場合 (Unix/Linux) - システムに依って、far-a01.pcf.Z、またはfar-a01.pcf.gzを選んだディレクト - リにコピーする。イラン語フォントの入ったディレクトリに移動し、次のコマ - ンドを実行する: + お使いのシステムに合わせて、far-a01.pcf.Z または far-a01.pcf.gz をインス + トールするディレクトリにコピーします。そのディレクトリに移動し、次のコマン + ドを実行します: > mkfontdir > xset +fp path_name_of_farsi_fonts_directory -o X Window System (SunOS)でのフォントのインストール +o X Window System にフォントをインストールする場合 (SunOS) - far-a01.bfフォントを選択したディレクトリにコピーする。far-a01.bfフォント - の入ったディレクトリに移動し、次のコマンドを実行する: + インストールするディレクトリに far-a01.bf をコピーします。そのディレクトリ + に移動し、次のコマンドを実行します: > fldfamily > xset +fp path_name_of_fonts_directory -o ASCIIスクリーンフォント(Unix/Linux)のインストール +o ASCII スクリーンフォントをインストールする場合 (Unix/Linux) - Linuxシステムでは、far-a01.f16フォントを/usr/lib/kbd/consolefontsディレク - トリにコピーし、"setfont far-a01.f16"として、フォント設定プログラムを実行 - する。他のシステム(例、SCO Unix)については、システム管理マニュアルのフォン - トインストールのセクションを参照。 + Linux システムでは、far-01.f16 を /usr/lib/kbd/consolefonts にコピーし、 + "setfont far-a01.f16" と、フォント設定プログラムを実行します。他のシステム + (SCO Unix など) では、システム管理マニュアルのフォントインストールの項目を + 参照してください。 -o ASCIIスクリーンフォント(DOS)のインストール +o ASCII スクリーンフォントをインストールする場合 (DOS) - システム電源投入後、VIMの最初の起動より早く、フォントアップロードプログラ - ムfar-a01.comを実行して、イラン語フォントをアップロードする。 + システム電源導入後、最初に VIM を起動する前に、フォントアップロードプログラ + ムの far-a01.com を実行して、ペルシア語フォントをアップロードします。 使い方 ------ -VIMの起動に先んじて、VIMがイラン語モードで実行できる環境を設定する必要がある。 -イラン語フォントのインストールに加えて、いくつかのシステム環境において、次の -点に関して設定する必要があるかも知れない: キーコードのマッピング、ASCIIスクリ -ーンモードでのグラフィックカードの読込み、8ビットクリーンモードでのIOドライ -バの設定など…。 +Vim を起動する前に、ペルシア語モードが実行できるように環境を設定してください。 +ペルシア語フォントのインストールに加えて、いくつかのシステム環境では、キーコー +ドマッピング、ASCII スクリーンモードでのグラフィックカードのロード、IO ドライ +バの 8 ビット透過設定などを設定する必要があります。 -o イラン語フォントを設定する +o ペルシア語フォントを設定する - + VIM GUIモードでは'guifont'にfar-a01を設定する。これはVIMウィンドウ - 内で':set guifont=far-a01'を入力すればよい。 + + GUI では、'guifont' に far-a01 を設定します。Vim のコマンドラインで + ':set guifont=far-a01' と入力してください。 - .vimrcファイル(NT/95/98プラットホームでは_vimrc)に - ':set guifont far-a01'を加えることで、VIMの起動中に'guifont'を - far-a01に設定することができる。 + Vim を起動したときに自動的に設定されるようにするには、.vimrc ファイルに + ':set guifont=far-a01' と書き加えます。 + NT/95/98 プラットホームでは .vimrc ではなく _vimrc です。 - X Window System環境では、'-fn far-a01'オプションでVIMを起動してもよ - い。 + X Window System では、'-fn far-a01' オプションで Vim を起動することもで + きます。 - + xterm内でのVIMに関しては、xtermをイラン語フォントで起動する(例、 - kterm -fn far-a01)。それから、kterm内でVIMを起動する。 + + xterm で Vim を使う場合は、xterm をペルシア語フォントで起動します (例 + kterm -fn far-a01)。そして、kterm内で Vim を起動します。 - + DOS上のVIMに関しては、VIMを最初に起動する前に、far-a01.comフォントア - ップロードプログラムを実行して、イラン語フォントをアップロードする。 + + DOS で Vim を使う場合は、最初に VIM を起動する前に、フォントアップロード + プログラムの far-a01.com を実行して、ペルシア語フォントをアップロードし + ます。 -o イラン語キーマッピングを有効にする +o ペルシア語キーマップを有効にする - イラン語キーマッピングを有効にするために、'altkeymap'と'fkmap'を設定する。 - これは、VIMウィンドウ内で':set akm'、または':set fk'と入力すればよい。 - .vimrc、またはNT/95/98プラットホームでは_vimrcに、':set akm'、あるいは - ':set fk'を追加することで、'altkeymap'や'fkmap'をデフォルトで設定すること - ができる。 + ペルシア語キーマップを有効にするには、'altkeymap' または 'fkmap' を設定しま + す。それには、Vim のコマンドラインで ':set akm' または ':set fk' と入力して + ください。常にこの設定を使うには、':set akm' または ':set fk' を、.vimrc + ファイルに書き加えてください。NT/95/98 プラットフォームでは .vimrc ではな + く_vimrc です。 - イラン語キーマッピングを、標準の第2言語キーマッピングとして切り替えるため - には、':set noakm'と入力して'altkeymap'をリセットする。 + 初期設定では第 2 言語としてペルシア語キーマップが使われますが、これを切り替 + えるには、':set noakm' と入力して 'altkeymap' をオフに設定します。 -o 右から左への書式、イラン語モード +o 右横書きのペルシア語モード - デフォルトで、VIMは左から右への書式のモードで起動する。次の示すのは、ウィ - ンドウの方向性を変更する方法である: + 初期設定では、Vim は左横書きモードで起動します。ウィンドウの書字方向を変え + るには次の方法があります。 - + VIMを-Fオプションで起動する(例、vim -F ...)。 + + -F オプションを使って Vim を起動する (例: vim -F ...)。 - + 左から右モードを右から左モードを切り替える、F8ファンクションキーを使用す - る。 + + F8 ファンクションキーを使って右横書きを左横書きを切り替える。 - + 左から右モードにいる間、'set rl'('rl'はrightleftの略語)をコマンドライン - で入力する。 + + 左横書きモードのときに、コマンドラインで 'set rl' と入力する ('rl' は + rightleft の省略形です)。 - + VIMを右から左モードで恒久的に起動するには、'set rl'という行を'.vimrc'に - 加えるとよい。 + + 常に右横書きモードで Vim を起動するには、'set rl' を .vimrc ファイルに書 + き加えます。 エンコーディング ---------------- -使用されているエンコーディング方式は、VIM拡張ISIR-3342標準であり、組込み関数 -で、VIM拡張ISIR-3342とISIR-3342標準間の変換ができるようになっている。 +テキストのエンコーディングは ISIRI-3342 を拡張したものです。Vim拡張ISIRI-3342 +と 標準ISIRI-3342 は、組み込み関数で変換できます。 -文書の可搬性という理由から、エンコーディング方式は異なるプラットホーム間で同 -一に保たれる(例えば、UNIXとNT/95/98、MS DOS、などなど)。 +文章の可搬性のため、どのプラットフォーム (UNIX、NT/95/98、MS DOS、...) でも同 +じエンコーディングが使われます。 o キーボード - + 挿入/置換モードでのCTRL-_は、イラン語(akm)/ラテンモードを次のように切り - 替える: + + 挿入/置換モードでは、CTRL-_ でペルシア語 (akm) とラテン語を切り替えま + す。以下のように動作します。 - + CTRL-_は、編集モードでタイプされたテキストの最後にカーソルを移動する。 + + CTRL-_ で切り替えると、編集モードで入力したテキストの最後の位置へカーソ + ルが移動します。 - + コマンドモードでのCTRL-_は、キーボードマッピングのみをイラン語(akm)/ラテ - ン語で切り替える。イラン語のテキストの入力は、反転入力モードで行われる。 + + コマンドラインモードでは、CTRL-_ はペルシア語 (akm) とラテン語のキーマッ + プのみ切り替えます。ペルシア語のテキストは逆挿入モードで入力されます。 - + F8 - 左から右モードと右から左モードを切り替える。 + + F8 キーで左横書きと右横書きを切り替えられます。 - + F9 - ISIR-3342標準エンコーディングとVIM拡張ISIR-3342エンコーディング(右 - から左モードでのみサポートされる)を切り替える。 + + F9 キーで 標準ISIRI-3342 と Vim拡張ISIRI-3342 のエンコーディングを切り替 + えられます (右横書きモードでのみ機能します)。 - + キーボードマッピングは、イラン語ISIR-2901標準に基づいている。 - 次の表は、イラン語モード(akm)が設定されている場合のキーボードマッピング - である: + + ペルシア語キーマップはイランの ISIRI-2901 標準がベースになっています。 + 次の表は、ペルシア語(akm) モードが設定されている場合のキーマップです: ------------------------------------- ` 1 2 3 4 5 6 7 8 9 0 - = @@ -222,51 +224,57 @@ o キーボード � � � � � � � � � � � ------------------------------------- -注意: - � はイラン語のPSPを意味する (スペースなしの中断) +訳注: 合成文字は表示のためにスペースと合成してあります。 +訳注: farsi->unicode変換がよくわからないので微妙に違うところがあると思います。 +訳注: http://www.farsiweb.info/table/2901-unicode.txt +訳注: http://www.farsiweb.info/table/3342.txt + +Note: + ‌ はペルシア語の PSP を意味します (スペースなしの区切り) + + ‍ はペルシア語の PCN を意味します (ハムゼ(HANZE)属性のため) - � はイラン語のPCNを意味する (HAMZE属性のため) +訳注: PSP (pseudo space) +訳注: PCN (pseudo connection) 制限事項 -------- -o 挿入/置換モードでfkmap(イラン語モード)が設定されている場合、CTRL-Bはサポ - ートされない。 +o 挿入モードと置換モードで 'fkmap' (ペルシア語モード) がオンのとき、CTRL-B は + 使えません。 -o ラテン/イラン語でキャラクタマッピングを変更した場合、リドゥバッファはリ - セットされる(空になる)。すなわち、('.'を使った)リドゥは、1つのモードに - いる間のみ、有効であり、機能する。 +o ペルシア語とラテン語のキーマップを切り替えた場合、繰り返しバッファはリセッ + トされて空になります。つまり、同じモードにいる間だけ ('.'を使って) 最後の変 + 更を繰り返せます。 -o イラン語モードで数字が入力されると、リドゥバッファはリセットされる(空に - なる)。すなわち、数字を入力した後では最後の変更を('.'を使って)リドゥで - きない。 +o ペルシア語モードで数字を入力すると、繰り返しバッファはリセットされて空にな + ります。つまり、数字を入力した後は、 ('.'を使って) 最後の変更を繰り返せませ + ん。 -o 左から右モードで、イラン語モードがセットされているとき、CTRL-Rはサポート - されない。 +o ペルシア語モードで左横書きしているときは CTRL-R は使えません。 -o 右から左モードでは、反転入力によるパターン検索を除いて、'Latin'モードの - パターン検索は機能しない。 +o 右横書きモードでは、'ラテン語' のパターンを検索できません。しかし、パターン + を逆向きに書けば検索できます。 -o コマンドモードでは、左から右への数字入力はサポートされておらず、さらに融 - 通を効かせるために、キーマッピングのロジックは制限される。 +o コマンドラインモードでは、数字を左横書きで入力することはできません。さら + に、使いやすくするために、キーマップのロジックは制限されています。 -o X Winodw System環境で、xtermターミナルエミュレータ内でVIMを実行し、イラン - 語モードを設定したい場合は、ANSI互換のxtermターミナルエミュレータを使用す - る必要がある。これは、標準のxtermターミナルエミュレータでは、10進で128以 - 上の文字コードが何らかの意味を持ってしまうためである。 +o X Window System 環境の端末エミュレータ xterm で Vim のペルシア語モードを使 + う場合、ANSI 互換の xterm を使う必要があります。これは、標準の xterm では、 + 文字番号が 128 より大きい文字は特別な意味を持ってしまうからです。 - 注意: X Window System環境では、VIM GUIはイラン語モードで健全に動作する。 - これはxtermなどのターミナルエミュレータを必要としない。 + Note: X Window System 環境の GUI Vim では、ペルシア語モードはうまく機能しま + す。xterm などの他の端末エミュレータは必要ありません。 バグ ---- -イラン語モードが設定されていて、挿入/置換モードにいるとき、繰り返しカーソル位置 -を(カーソルの動きによって)変更し、新しいテキストを入力し、それから最後の変更を -アンドゥしようとすると、アンドゥは1つの変更の後に遅れる。しかし、アンドゥを続 -けようとすれば、変更前のテキストの行にまで戻る。Uで現在の行に行われた全ての変更 -をアンドゥすることもできる。 +挿入モードか置換モードでペルシア語モードをオンにして、カーソルを移動するのと、 +文字を入力するのを何度か繰り返します。そしてアンドゥすると、カーソルを移動した +時点までしかアンドゥされません。しかし、何度もアンドゥすることで元のテキストま +で戻ることができます。現在行の変更をすべてアンドゥするために U を使うこともで +きます。 -バグに関する詳細は、rileft.txtを参照。 +バグについては |rileft.txt| も参照してください。 vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/help.jax b/ja/help.jax index 817842e7f..0fb1c9a22 100644 --- a/ja/help.jax +++ b/ja/help.jax @@ -1,10 +1,11 @@ COMMENT: リファレンスマニュアル目次 -STATUS: suspend 6.3 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*help.txt* For Vim version 6.3. Last change: 2004 May 04 +*help.txt* For Vim version 7.0. Last change: 2006 May 07 VIM - メインヘルプファイル k @@ -13,19 +14,18 @@ TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> ヘルプの終了: ":q<Enter>" とタイプします。 Vimの終了: ":qa!<Enter>" とします(注意! 変更はすべて破棄される)。 - 項目への移動: |bars|の間に挟まれているタグの箇所へカーソルを移動して - CTRL-]をタイプする。 -マウスでの項目移動: ":set mouse=a"と入力してマウスを有効にしてください(xterm - もしくはGUIでのみ可)。|bars|で左ボタンでダブルクリックす - ると、項目に移動できます。 + 項目へジャンプ: タグ (例:|bars|) にカーソルを合わせ、CTRL-] を押します。 + マウスでジャンプ: ":set mouse=a"と入力してマウスを有効にしてください(xterm + もしくはGUIでのみ可)。タグ (例:|bars|) をマウスの左ボタン + でダブルクリックすると、項目にジャンプできます。 事前の項目に戻る: CTRL-T もしくは CTRL-O をタイプします。 - 指定項目のヘルプ: ":help"(|:help|を参照)の後に、調べたいコマンド名を入力す - ることにより、いつでも直接該当項目のヘルプを参照できます。 - また修飾子を使って各モードを指定することが出来ます。 + 指定項目のヘルプ: |:help| コマンドに、調べたいコマンド名を入力することによ + り、いつでも直接該当項目のヘルプを参照できます。 また修飾 + 子を使って各モードを指定することが出来ます。 *help-context* モード 修飾子 例 ~ - 通常モード時のコマンド (無し) :help x + ノーマルモード時のコマンド (無し) :help x ビジュアルモード時のコマンド v_ :help v_u 挿入モード時のコマンド i_ :help i_<Esc> コマンドラインのコマンド : :help :quit @@ -67,139 +67,156 @@ VIMはVi IMprovedからの由来です。VIMの殆どはBram Moolenaarによっ |usr_12.txt| 巧妙な技の数々 効率的な編集 ~ -|usr_20.txt| Typing command-line commands quickly -|usr_21.txt| Go away and come back -|usr_22.txt| Finding the file to edit -|usr_23.txt| Editing other files -|usr_24.txt| Inserting quickly -|usr_25.txt| Editing formatted text -|usr_26.txt| Repeating -|usr_27.txt| Search commands and patterns -|usr_28.txt| Folding -|usr_29.txt| Moving through programs -|usr_30.txt| Editing programs -|usr_31.txt| Exploiting the GUI - -Tuning Vim ~ -|usr_40.txt| Make new commands -|usr_41.txt| Write a Vim script -|usr_42.txt| Add new menus -|usr_43.txt| Using filetypes -|usr_44.txt| Your own syntax highlighted -|usr_45.txt| Select your language - -Making Vim Run ~ -|usr_90.txt| Installing Vim - - -REFERENCE MANUAL: These files explain every detail of Vim. - -General subjects ~ -|intro.txt| general introduction to Vim; notation used in help files -|help.txt| overview and quick reference (this file) -|index.txt| alphabetical index of all commands -|help-tags| all the tags you can jump to (index of tags) -|howto.txt| how to do the most common editing tasks -|tips.txt| various tips on using Vim -|message.txt| (error) messages and explanations -|quotes.txt| remarks from users of Vim -|todo.txt| known problems and desired extensions -|develop.txt| development of Vim -|uganda.txt| Vim distribution conditions and what to do with your money - -Basic editing ~ -|starting.txt| starting Vim, Vim command arguments, initialisation -|editing.txt| editing and writing files -|motion.txt| commands for moving around -|scroll.txt| scrolling the text in the window -|insert.txt| Insert and Replace mode -|change.txt| deleting and replacing text -|indent.txt| automatic indenting for C and other languages -|undo.txt| Undo and Redo -|repeat.txt| repeating commands, Vim scripts and debugging -|visual.txt| using the Visual mode (selecting a text area) -|various.txt| various remaining commands -|recover.txt| recovering from a crash - -Advanced editing ~ -|cmdline.txt| Command-line editing -|options.txt| description of all options -|pattern.txt| regexp patterns and search commands -|map.txt| key mapping and abbreviations -|tagsrch.txt| tags and special searches -|quickfix.txt| commands for a quick edit-compile-fix cycle -|windows.txt| commands for using multiple windows and buffers -|syntax.txt| syntax highlighting -|diff.txt| working with two or three versions of the same file -|autocmd.txt| automatically executing commands on an event -|filetype.txt| settings done specifically for a type of file -|eval.txt| expression evaluation, conditional commands -|fold.txt| hide (fold) ranges of lines - -Special issues ~ -|remote.txt| using Vim as a server or client -|term.txt| using different terminals and mice -|digraph.txt| list of available digraphs -|mbyte.txt| multi-byte text support -|mlang.txt| non-English language support -|arabic.txt| Arabic language support and editing -|farsi.txt| Farsi (Persian) editing -|hebrew.txt| Hebrew language support and editing -|russian.txt| Russian language support and editing -|hangulin.txt| Hangul (Korean) input mode -|rileft.txt| right-to-left editing +|usr_20.txt| コマンド行のコマンドを素早く入力する +|usr_21.txt| Vimと他のプログラムを行ったり来たり +|usr_22.txt| 編集したいファイルを見つける +|usr_23.txt| 普通のテキストファイルではないファイルを編集する +|usr_24.txt| 素早く挿入する +|usr_25.txt| フォーマット付きテキストを編集する +|usr_26.txt| 繰り返し +|usr_27.txt| 検索コマンドと正規表現 +|usr_28.txt| 折畳み +|usr_29.txt| ソースコード内の移動 +|usr_30.txt| ソースコードの編集 +|usr_31.txt| GUIの活用 +|usr_32.txt| undo ツリー + +Vimをチューニングする ~ +|usr_40.txt| 新しいコマンドを作る +|usr_41.txt| Vimスクリプトの書き方 +|usr_42.txt| 新しいメニューを追加する +|usr_43.txt| ファイルタイプを使う +|usr_44.txt| 文法定義の自作 +|usr_45.txt| 言語を選ぶ + +Vimのインストール ~ +|usr_90.txt| Vimのインストール + + + *reference_toc* +リファレンスマニュアル: 以下のファイルではVimの全てを詳細に述べています。 + +一般的な事柄 ~ +|intro.txt| Vimについての前書き。と、ヘルプの表記について +|help.txt| 概観とクイックリファレンス (このファイル) +|index.txt| 全コマンド一覧。アルファベット順 +|help-tags| ジャンプできるタグ一覧 +|howto.txt| 一般的な編集操作についてのHow to +|tips.txt| さまざまなTips +|message.txt| (エラー)メッセージの説明 +|quotes.txt| Vimユーザーの感想 +|todo.txt| 既知のバグと、機能拡張の要望 +|debug.txt| Vimのデバッグについて +|develop.txt| Vimの開発に関して +|uganda.txt| Vimの配布条件と、あなたが支払ったお金の使い道について + +基本的な編集 ~ +|starting.txt| Vimの起動。起動引数や初期化に関して +|editing.txt| ファイルの編集と保存 +|motion.txt| 移動コマンド +|scroll.txt| ウィンドウのスクロール +|insert.txt| 挿入モードと上書きモード +|change.txt| テキストの削除と変更 +|indent.txt| C言語や、その他の言語の自動インデント +|undo.txt| アンドゥとリドゥ +|repeat.txt| 繰り返しコマンド、Vimスクリプト、スクリプトのデバッグ +|visual.txt| ビジュアルモード (テキストの選択) +|various.txt| その他の様々なコマンド +|recover.txt| クラッシュからの復帰 + +高度な編集 ~ +|cmdline.txt| コマンドラインの編集 +|options.txt| 全オプションの説明 +|pattern.txt| 検索コマンドと正規表現 +|map.txt| キーマップと短縮入力 +|tagsrch.txt| タグと特別な検索 +|quickfix.txt| 編集、コンパイル、修正、の流れを早くするコマンド +|windows.txt| マルチウィンドウとマルチバッファのコマンド +|tabpage.txt| タブページを操作するコマンド +|syntax.txt| 構文強調 +|spell.txt| スペルチェック +|diff.txt| バージョン違いのファイルの編集。差分モード +|autocmd.txt| イベントに応じて自動的にコマンドを実行する +|filetype.txt| ファイルタイプ別の設定 +|eval.txt| 式の評価。条件式。 (Vimスクリプトリファレンス) +|fold.txt| ある範囲を隠す(折り畳む) + +特別な事柄 ~ +|print.txt| 印刷 +|remote.txt| Vimのクライアント/サーバ機能 +|term.txt| いろいろな端末やマウスについて +|digraph.txt| 利用可能なDIGRAPHS(二重字)の一覧 +|mbyte.txt| マルチバイトテキストのサポート +|mlang.txt| 非英語のサポート +|arabic.txt| アラビア語のサポート +|farsi.txt| ペルシア語のサポート +|hebrew.txt| ヘブライ語のサポート +|russian.txt| ロシア語のサポート +|hangulin.txt| ハングル(韓国語)の入力 +|rileft.txt| 右横書き (書字方向が右から左になるモード) GUI ~ -|gui.txt| Graphical User Interface (GUI) +|gui.txt| グラフィカルユーザインターフェース (GUI) |gui_w16.txt| Windows 3.1 GUI |gui_w32.txt| Win32 GUI |gui_x11.txt| X11 GUI -Interfaces ~ -|if_cscop.txt| using cscope with Vim -|if_perl.txt| Perl interface -|if_pyth.txt| Python interface -|if_sniff.txt| SNiFF+ interface -|if_tcl.txt| Tcl interface -|if_ole.txt| OLE automation interface for Win32 -|if_ruby.txt| Ruby interface -|debugger.txt| Interface with a debugger -|workshop.txt| Sun Visual Workshop interface -|netbeans.txt| NetBeans External Editor interface -|sign.txt| debugging signs +拡張インターフェース ~ +|if_cscop.txt| cscopeを使う +|if_mzsch.txt| MzScheme インターフェース +|if_perl.txt| Perl インターフェース +|if_pyth.txt| Python インターフェース +|if_sniff.txt| SNiFF+ インターフェース +|if_tcl.txt| Tcl インターフェース +|if_ole.txt| Win32のOLEオートメーション +|if_ruby.txt| Ruby インターフェース +|debugger.txt| デバッガ用のインターフェース +|workshop.txt| Sun Visual Workshop インターフェース +|netbeans.txt| NetBeans External Editor インターフェース +|sign.txt| デバッグ用の目印 Versions ~ -|vi_diff.txt| main differences between Vim and Vi -|version4.txt| differences between Vim version 3.0 and 4.x -|version5.txt| differences between Vim version 4.6 and 5.x -|version6.txt| differences between Vim version 5.7 and 6.x +|vi_diff.txt| VimとViの主な違い +|version4.txt| Vim version 3.0 と 4.x の違い +|version5.txt| Vim version 4.6 と 5.x の違い +|version6.txt| Vim version 5.7 と 6.x の違い +|version7.txt| Vim version 6.4 と 7.x の違い *sys-file-list* -Remarks about specific systems ~ +システム依存の事柄 ~ |os_390.txt| OS/390 Unix |os_amiga.txt| Amiga -|os_beos.txt| BeOS and BeBox -|os_dos.txt| MS-DOS and MS-Windows NT/95 common items +|os_beos.txt| BeOS と BeBox +|os_dos.txt| MS-DOS と MS-Windows NT/95 の共通事項 |os_mac.txt| Macintosh |os_mint.txt| Atari MiNT -|os_msdos.txt| MS-DOS (plain DOS and DOS box under Windows) +|os_msdos.txt| MS-DOS (DOS と Windows の DOS プロンプト) |os_os2.txt| OS/2 |os_qnx.txt| QNX |os_risc.txt| RISC-OS |os_unix.txt| Unix |os_vms.txt| VMS |os_win32.txt| MS-Windows 95/98/NT + *standard-plugin-list* +標準プラグイン ~ +|pi_gzip.txt| 圧縮されたファイルの読み書き +|pi_netrw.txt| ネットワーク越しのファイルの読み書き +|pi_paren.txt| 対応するカッコの強調表示 +|pi_tar.txt| Tar ファイルエクスプローラ +|pi_zip.txt| Zip アーカイブエクスプローラ -Standard plugins *standard-plugin-list* ~ -|pi_netrw.txt| Reading and writing files over a network -|pi_gzip.txt| Reading and writing compressed files -|pi_expl.txt| File explorer - -LOCAL ADDITIONS: +LOCAL ADDITIONS: *local-additions* ------------------------------------------------------------------------------ *bars* Bars example -Now that you've jumped here with CTRL-] or a double mouse click, you can use -CTRL-T, CTRL-O, g<RightMouse>, or <C-RightMouse> to go back to where you were. +今、あなたはマウスのダブルクリックかCTRL-]でジャンプしました。CTRL-T、CTRL-O、 +g<RightMouse>、<C-RightMouse>のどれかで元の場所に戻れます。 + +Note: タグは | で囲まれていますが、強調表示している場合は非表示になります。読 +み易くするためにこうなっています。 + +実は、| で囲まれていない単語でも CTRL-] でジャンプできます。Vim はその単語に対 +応したヘルプを探し出します。 + ------------------------------------------------------------------------------ vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl: diff --git a/ja/pattern.jax b/ja/pattern.jax index 4f310a4fe..699c3ec1e 100644 --- a/ja/pattern.jax +++ b/ja/pattern.jax @@ -1,8 +1,9 @@ COMMENT: 正規表現 -STATUS: finished 5.6 +STATUS: finished 7.0e TRANSLATOR: 北条耀 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*pattern.txt* For Vim version 5.6. Last change: 1999 Oct 27 +*pattern.txt* For Vim version 7.0e. Last change: 2006 Apr 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -10,43 +11,54 @@ TRANSLATOR: 北条耀 パターンと検索コマンド *pattern-searches* +最も基本的な説明はユーザーマニュアルの |03.9| にあります。 +27章 |usr_27.txt| にも説明があります。 + 1. 検索コマンド |search-commands| 2. パターンの定義 |search-pattern| +3. Magic |/magic| +4. パターンの概要 |pattern-overview| +5. 量指定子 |pattern-multi-items| +6. 普通のアトム |pattern-atoms| +7. 大文字と小文字を無視する |/ignorecase| +8. 合成文字 |patterns-composing| +9. Perl のパターンとの比較 |perl-patterns| +10. マッチしたテキストを強調する|match-highlight| ============================================================================== -1. 検索コマンド *search-commands* +1. 検索コマンド *search-commands* *E486* */* -/{pattern}[/]<CR> [count] 番目にマッチする {pattern} を前方に検索します。 - (排他的) +/{pattern}[/]<CR> [count] 番目にマッチする {pattern} を前方検索します。 + |exclusive|(排他的) -/{pattern}/{offset}<CR> [count] 番目にマッチする {pattern} を前方に検索し - |{offset}| 行の分上/下に移動します。(行指向) +/{pattern}/{offset}<CR> [count] 番目にマッチする {pattern} を前方検索し、 + |{offset}| 行だけ上/下に移動します。|linewise|(行指向) */<CR>* -/<CR> [count]番目に、最後に検索したパターン|last-pattern|にマ - ッチするものを最後に使われた|{offset}|を使って前方に検 - 索します。 +/<CR> [count] 番目にマッチする最終検索パターン|last-pattern| + を、最後に使われた|{offset}|を使って、前方検索します。 -//{offset}<CR> [count]番目に、最後に検索したパターン|last-pattern|にマ - ッチするものを新しい|{offset}|を使って前方に検索します。 - {offset}が空であればオフセットは使われません。 +//{offset}<CR> [count] 番目にマッチする最終検索パターン|last-pattern| + を、新しい |{offset}| を使って前方検索します。 + {offset} を指定しなかった場合、 |{offset}| は使われま + せん。 *?* -?{pattern}[?]<CR> [count] 番目にマッチする {pattern} を後方に検索します。 - (排他的) +?{pattern}[?]<CR> [count] 番目にマッチする {pattern} を後方検索します。 + |exclusive|(排他的) -?{pattern}?{offset}<CR> [count] 番目にマッチする {pattern} を後方に検索して - |{offset}| 行の分上/下に移動します。(行指向) +?{pattern}?{offset}<CR> [count] 番目にマッチする {pattern} を後方検索して + |{offset}| 行だけ上/下に移動します。|linewise|(行指向) *?<CR>* -?<CR> [count]番目に、最後に検索したパターン|last-pattern|に - マッチするものを最後に使われた|{offset}|を使って後方に - 検索します。 +?<CR> [count]番目にマッチする最終検索パターン|last-pattern| + を、最後に使われた|{offset}|を使って、後方検索します。 -??{offset}<CR> [count]番目に、最後に検索したパターン|last-pattern|に - マッチするものを新しい|{offset}|を使って後方に検索しま - す。{offset}が空であればオフセットは使われません。 +??{offset}<CR> [count]番目にマッチする最終検索パターン|last-pattern| + を、新しい |{offset}| を使って後方検索します。 + {offset} を指定しなかった場合、 |{offset}| は使われま + せん。 *n* @@ -57,22 +69,25 @@ n 最後の "/" か "?" を [count] 回繰り返します。 N 最後の "/" か "?" を逆方向に [count] 回繰り返します。 |last-pattern| {Vi: カウントの前置を受け付けません} - *star* -* [count] 番目にマッチする現在のカーソル位置にもっとも近 - い単語を前方に検索します。検索に使われる単語は、まず: - 1. カーソルの下のキーワード |'iskeyword'| - 2. 現在の行のカーソルの前方のキーワード - 3. カーソルの下の空白でない単語 - 4. 現在の行のカーソルの前方の空白でない単語 - "/\<keyword\>" コマンドで検索するように完全なキーワード - のみが検索できます。(排他的) {Vi にはない機能です} + *star* *E348* *E349* +* [count] 番目にマッチする単語を前方検索します。検索され + る単語は、カーソルに最も近い単語です。次の順番で選択さ + れます: + 1. カーソル位置のキーワード |'iskeyword'| + 2. 現在行の、カーソルの前方のキーワード + 3. カーソル位置の単語 (|WORD|) + 4. 現在行の、カーソルの前方の単語 + "/\<keyword\>" と検索するのと同じように、完全なキー + ワードのみ検索されます。|exclusive|(排他的) + {Vi にはない機能です} + 'smartcase' ではなく 'ignorecase' の設定が使われます。 *#* -# "*" と同じですが、後方に検索します。ポンド記号(163 の文 - 字)でも動作します。"#" キーがバックスペースとして動作し - ている場合は Vim を起動する前に "stty erase <BS>" とし - てみてください(<BS> は CTRL-H もしくは本当のバックスペ - ースです)。 {Vi にはない機能です} +# "*" と同じですが、後方検索します。ポンド記号 (文字コー + ド 163) でも動作します。"#" キーがバックスペースとして + 動作する場合は、 Vim を起動する前に "stty erase <BS>" + としてみてください (<BS> は CTRL-Hもしくは本当のバック + スペースです)。 {Vi にはない機能です} *gstar* g* "*" と似ていますが "\<" と "\>" を単語の回りに加えませ @@ -85,396 +100,1146 @@ g# "#" と似ていますが "\<" と "\>" を単語の回りに加えませ きます。 {Vi にはない機能です} *gd* -gd ローカル宣言の場所に移動します。カーソルがローカル変数 - の上にあればこのコマンドはその宣言にジャンプします。は - じめに Vim は現在の関数の最初を("[[" コマンドのように) - 検索し、もし見つからなければ1行目で検索を中止します。見 - つかった場合は空行がある場所まで戻り、そこからカーソル - の下のキーワードを "*" コマンドのように検索します。しか - しこの場合コメントのように思われる行は無視されます - ( 'comments' オプションも参照してください)。 - しかし Vim は文法を実際にチェックしているわけではなく、 +gd ローカル宣言を検索します。カーソルがローカル変数の上に + ある場合、その変数の宣言にジャンプします。はじめに、 + Vim は現在の関数の開始行を検索します ("[[" コマンドと + 同じ)。見つからなかった場合は、ファイルの 1 行目に移動 + します。見つかった場合は、その場所から空行を後方検索し + ます。そして、"*" コマンドで検索するのと同じように、 + キーワードを検索します。このとき、コメントと判断した行 + は無視します('comments'オプション参照)。 + Note: Vim は文法を実際にチェックしているわけではなく、 キーワードにマッチするものを検索しているだけですので、 - これがうまく動作することは保証されないということに注意 - してください。インクルードされるファイルも検索したい場 - 合は |include-search| でリストされているコマンドを使っ - てください。 {Vi にはない機能です} + これがうまく動作するとは限りません。インクルードされて + いるファイル内も検索したい場合は、|include-search| で + 列挙されているコマンドを使ってください。 + このコマンドを実行した後、コマンド|n|で次のマッチを前 + 方検索できます。 + {Vi にはない機能です} *gD* -gD グローバル宣言の場所に移動します。カーソルがそのファイ - ルで定義されているグローバル変数の上にあればこのコマン - ドはその宣言に移動します。"gd" と同じように動作しますが - キーワードの検索が常に1行目から始められるところが違いま - す。 {Vi にはない機能です} +gD グローバル宣言を検索します。ファイル内で定義されている + グローバル変数の上にカーソルがある場合、その宣言にジャ + ンプします。"gd" と同じですが、このコマンドは常に 1 行 + 目からキーワードを検索します。 + {Vi にはない機能です} + + *1gd* +1gd "gd" と同じですが、現在のカーソル位置より前の {} ブ + ロック内を無視します。{Vi にはない機能です} + + *1gD* +1gD "gD" と同じですが、現在のカーソル位置より前の {} ブ + ロック内を無視します。{Vi にはない機能です} *CTRL-C* CTRL-C 現在の(検索)コマンドを中止します。MS-DOSではCTRL-Break を使ってください |dos-CTRL-Break|。 - ノーマルモードではすべてのやりかけのコマンドが中止され - ます。 + ノーマルモードでは、入力済みの、まだ実行されていないコ + マンドをすべて中止します。 *:noh* *:nohlsearch* -:noh[lsearch] 'hlsearch' オプションで指定されたハイライトをやめさせま - す。検索コマンドを使うか 'hlsearch' オプションをオンに - するかすれば自動的に再びオンになります。 - このコマンドは、ハイライト状態が自動コマンドの実行時に - セーブ、リストアされるため、自動コマンド内では無効です。 - |autocmd-searchpat| - -'incsearch' オプションがセットされていると検索パターンを入力している間に現在マ -ッチするものが示されます。表示されているマッチした場所にカーソルを実際に移動さ -せるには <CR> を打って検索を終了させる必要があるということを覚えておいてくださ -い。また検索を中止するには <Esc> キーを使ってください。 - -もし 'hlsearch' オプションをセットしていれば最後に使った検索パターンはハイライ -トされていることになります。これを中断させたければ |:nohlsearch| コマンドを使っ -てください。 +:noh[lsearch] 'hlsearch' オプションによる強調表示をやめます。検索コ + マンドを使うか、'hlsearch' をオンに設定すると、再び強 + 調表示されます。このコマンドはオートコマンド中は機能し + ません。オートコマンドを実行する時に強調表示の状態を保 + 存し、実行後に元に戻すからです。|autocmd-searchpat| + +'incsearch' オプションがオンの場合、検索パターンを入力している途中に、その時点 +でマッチしているものが強調表示されます。実際に、その場所にカーソルを移動させる +には <CR> を打って検索を終了する必要があります。検索を中止するには <Esc> キー +を使ってください。 + +'hlsearch' オプションがオンの場合、最後に使った検索パターンは強調表示されます。 +|:nohlsearch| コマンドを使うと、一時的に強調表示をやめさせることができます。 *search-offset* *{offset}* -これらのコマンドは指定されたパターンを検索するのですが、"/" と "?" ではさらに -オフセットを与えて検索することができます。2つのタイプのオフセットがあります: -行オフセットと文字オフセットです。 {Vi: 文字オフセットははありません} - -オフセットはマッチした場所から相対的にカーソルの場所を移動させます: - [num] [num] 行下の一桁目に - +[num] [num] 行下の一桁目に - -[num] [num] 行上の一桁目に - e[+num] [num] 文字右にマッチ部分の終わりの場所から移動 - e[-num] [num] 文字左にマッチ部分の終わりの場所から移動 - s[+num] [num] 文字右にマッチ部分の初めの場所(start)から移動 - s[-num] [num] 文字左にマッチ部分の初めの場所(start)から移動 - b[+num] [num] 文字右にマッチ部分の初めの場所(begin)から移動 - b[-num] [num] 文字左にマッチ部分の初めの場所(begin)から移動 - -'-' か '+' は与えられていて [num] が与えられていなければ、カウント1とみなされ -ます。オフセットに 'e' を含めている場合は、検索は包括的になります(カーソルが移 -動するであろう位置の文字まで操作の対象になります)。 +上記の検索コマンドは指定されたパターンを検索します。"/" と "?" ではさらにオフ +セットを指定できます。オフセットには、行オフセットと文字オフセットの 2 種類あ +ります。 {Vi には文字オフセットはありません} + +オフセットを指定して、マッチした場所から相対的にカーソルを移動できます: + [num] [num]行下、1 桁目に移動 + +[num] [num]行下、1 桁目に移動 + -[num] [num]行上、1 桁目に移動 + e[+num] [num]文字右に、マッチ部分の終わりの場所から移動 + e[-num] [num]文字左に、マッチ部分の終わりの場所から移動 + s[+num] [num]文字右に、マッチ部分の初めの場所(start)から移動 + s[-num] [num]文字左に、マッチ部分の初めの場所(start)から移動 + b[+num] [num] 上記 s[+num] と同じ (begin の b) + b[-num] [num] 上記 s[-num] と同じ (begin の b) + ;{pattern} さらに検索する。|//;|を参照。 + +'-' か '+' を指定して [num] を省略した場合は 1 が使われます。'e' を使ってオフ +セットを指定した場合、検索は包括的になります (カーソルが移動するであろう位置の +文字まで含めて操作の対象になります)。 例: -pattern cursor position ~ -/test/+1 "test" の1行下の1桁目 +パターン カーソルの位置 ~ +/test/+1 "test" の 1 行下の 1 桁目 /test/e "test" の最後 -/test/s+2 "test" の 's' 文字 -/test/b-3 "test" の3文字前 - -もしこれらのコマンドが演算コマンドの後ろで用いられた場合、検索の前と後のカーソ -ル位置の間の文字が操作の対象となります。ただし、行オフセットが指定されている場 -合は2つのカーソルの位置の間の行全体が操作の対象となります。 - - *//;* -非常に特殊なオフセットとして ';' があり、これは検索コマンドに続けます。例えば: - -> /test 1/;/test -> /test.*/+1;?ing? - -最初のものは、初めに次に現れる "test 1" を見つけ、それからその後に最初に現れる -"test" を見つけます。 - -これは2つの検索コマンドをそれぞれの後に実行するようなものですが、次のところが -違います: -- 演算コマンドの後に1つの移動コマンドのように使うことができます。 -- 続く "n" もしくは "N" コマンドの方向は最初の検索コマンドの方向になります。 -- エラーが起きた場合カーソルはまったく動きません。 +/test/s+2 "test" の 's' +/test/b-3 "test" の 3 文字前 + +これらのコマンドが演算コマンドに対して使われた場合、現在のカーソル位置から、検 +索後のカーソル位置までが、操作の対象となります。ただし、行オフセットが指定され +た場合は、2 つのカーソル位置の間の行全体が操作の対象となります。 + +パターンを検索して置換する例: > + /foo<CR> "foo" を検索 + c//e マッチした文字列を変更 + bar<Esc> 置換する文字を入力 + //<CR> 次のマッチへ移動 + c//e マッチした文字列を変更 + beep<Esc> 今度は別の文字で置換 + ... +< + *//;* *E386* +非常に特殊なオフセットですが、';' に続けて検索コマンドを指定できます。例: > + + /test 1/;/test + /test.*/+1;?ing? + +一つ目の例は、はじめに次の "test 1" を検索し、それから "test" を検索します。 + +これは、2 つの検索コマンドを分けて実行するのと似ていますが、次の点が違います: +- 合わせて 1 つの検索コマンドなので、演算コマンドに対して使うことができます。 +- "n"、"N" コマンドを使った場合、検索方向は最初の検索コマンドと同じです。 +- エラーが起きた場合、カーソルはまったく動きません。 *last-pattern* -最後に使われたパターンとオフセットは記憶されておかれ、これらはあるいは方向を変 -えたり別のカウントを前置して検索を繰り返す場合に使うことができます。2つのパター -ンが記憶されておかれるということに注意してください: 1つは 'normal' 検索コマン -ドでもう1つは置換コマンド ":s" です。それぞれの場合で空のパターンが与えられた -場合、前に使われたパターンが使われます。 - -'magic'オプションは最後に使われたパターンを変更しません。'magic'を変更しても、 -最後に使われたパターンの解釈は変わりません。 -'ignorecase'オプションはそうではありません。'ignorecase'が変更されれば、最後 -のパターンは違うテキストにマッチすることになります。 - -'hlsearch' オプションをセットしている場合、最後に使われた検索パターンにマッチ -するものすべてがハイライトされます。 - -Vi ではタグが検索される場合は ":tag" コマンドは最後に検索されたパターンをセッ -トします。Vim ではこれは行われません、'cpoptions' に 't' フラグが付いていない -限り前の検索パターンが忘れられることはありません。検索パターンは常に検索履歴に -追加されます。 - -'wrapscan' オプションがオン(デフォルトの値はこれです)の場合、検索はバッファー -の最後から初めに戻って行われます。'wrapscan' オプションがセットされていない場 -合後方検索はバッファーの最初でストップし、前方検索はバッファーの最後でストップ -します。'wrapscan' がセットされていてパターンが見つからなかった場合、"pattern -not found" というメッセージがでて、カーソルは動きません。'wrapscan' がセットさ -れていない場合、前方に検索している場合はメッセージは"search hit BOTTOM without -match" となり、後方に検索している場合は "search hit TOP without match" というメ -ッセージが出ます。'wrapscan' がセットされている場合、検索がファイルの最後/最初 -から最初/最後に戻ったときには "search hit TOP, continuing at BOTTOM" もしくは -"search hit BOTTOM, continuing at TOP" というメッセージがそれぞれ後方検索/前方 -検索している場合に表示されます。このメッセージは 's' フラグを 'shortmess' オプ -ションにつけることで消すことができます。ハイライト方法の 'w' がこのメッセージ -に使われます(デフォルト: 標準出力)。 +最後に使われた検索パターン (最終検索パターン) とオフセットは記憶され、同じ検索 +を繰り返すのに使うことができます。検索方向を変えたり、カウントを指定したりする +こともできます。Note: 記憶されるパターンは 2 つあります。1 つは 'normal' 検索 +コマンドのパターンです。もう 1 つは置換コマンド ":s" のパターンです。空のパ +ターンを使った場合に、それぞれ、以前のパターンが使われます。 + +'magic' オプションは最終検索パターンに影響しません。'magic' を変更しても、最終 +検索パターンの解釈は変わりません。 +'ignorecase' オプションは違います。'ignorecase' が変更された場合、最終検索パ +ターンは、違うテキストにマッチする可能性があります。 + +'hlsearch' オプションがオンの場合、最終検索パターンにマッチするテキストが強調 +表示されます。 + +最終検索パターンを消去するには次のようにします: > + :let @/ = "" +パターンに空文字列をセットしているのではありません。それだと全ての場所にマッチ +してしまいます。パターンは本当に消去され、Vim起動直後のように、何もない状態に +なります。 + +検索では通常、カーソル下のマッチはスキップされます。そのとき、すぐ隣の文字から +検索を開始するのか、スキップしたマッチの後ろから検索を開始するのかは、 +'cpoptions' の'c' フラグに依存します。|cpo-c|を参照。 + 'c' フラグがある場合: "/..." は 1 から 3 文字ずつ進みます。 + 'c' フラグがない場合: "/..." は 1 文字ずつ進みます。 +検索は行頭から開始され、カーソル位置を過ぎたマッチを見付けるまでスキップされま +す。そのため、'c' フラグを含んでいる場合の動作は予想外かもしれません。 +訳注: aaaaaa +訳注: カーソルが 2 桁目にある場合、/aaa は 4 桁目からの aaa にマッチする。 +訳注: これは、行頭から aaa aaa というマッチの区切りになり、 +訳注: カーソルを含んだ最初の aaa がスキップされるため。 + +後方検索するときも、検索は行頭から始まり、上述のように 'cpoptions' の 'c' フラ +グが使われます。そして、カーソル位置より前でマッチする最後のマッチが使われます。 + +Vi では、":tag" コマンドでタグを検索すると、最終検索パターンは上書きされます。 +Vim では、'cpoptions' に 't' フラグがある場合のみ、最終検索パターンが上書きさ +れます。どちらにしても、検索パターンは常に検索履歴に保存されます。 + +'wrapscan' オプションがオン (初期設定) の場合、検索がバッファーの端に到達した +ときに、もう一方の端に移動して検索が継続されます。オフの場合は、後方検索なら +バッファーの先頭、前方検索ならバッファーの末尾でストップします。 +パターンが見つからなかった場合、'wrapscan' がオンのときは、"pattern not found" +というメッセージが表示され、カーソルは動きません。オフのときは、後方検索なら +"search hit TOP without match"、前方検索なら"search hit BOTTOM without +match"、というメッセージが表示されます。 +'wrapscan' がオンのときに検索がバッファーの端から端へ継続した場合、後方検索な +ら"search hit TOP, continuing at BOTTOM"、前方検索なら"search hit BOTTOM, +continuing at TOP" というメッセージが表示されます。このメッセージを表示しない +ようにするには、'shortmess' オプションに 's' フラグを設定します。メッセージは +'highlight' オプションの 'w' で強調表示されます。 +訳注: The highlight method 'w' is used for this message (default: standout). +訳注: standout? *search-range* -"/" では行の中のある範囲を指定して検索することはできません。とにかくこれを行い -たい場合は ":substitute" コマンドに 'c' フラグをつける方法があります。例: -> :.,300s/Pattern//gc -このコマンドはカーソルの位置と300行目までの間で "Pattern" を検索します。マッチ -した場所でなんらかの文字を押すように促されます。やめさせるには 'q' とタイプし、 -次にマッチするものを見つけるには 'n' をタイプします。 +"/" コマンドで検索するとき、\%>l を含めることで検索の範囲を指定できます。 +例えば、199行目と300行目の間にある "limit" という単語を検索するには次のように +します: > + /\%>199l\%<300llimit +|/\%>l|も参照。 + +他にも、":substitute"コマンドに 'c' フラグをつける方法で、擬似的な範囲内検索が +できます。例: > + :.,300s/Pattern//gc +この例では、カーソル位置から 300 行目までの間で "Pattern" が検索されます。マッ +チした場所で、動作を指示するためのキーを入力必要があります。検索を停止するには +'q'を、次のマッチを検索するには 'n' を入力します。 "*", "#", "g*", "g#" コマンドはカーソルに近い単語を次の順番で検索します。最初 -に検索に使われるものは: -- カーソルの下のキーワード -- 同じ行のカーソルの右側のキーワード -- カーソルの下の(空白で区切られる)単語 -- 同じ行のカーソルの右側の(空白で区切られる)単語 -キーワードは 'iskeyword' で定義されている文字のみを含みます。 -(空白で区切られる)単語は空白文字(<Tab> と <Space>)以外で構成されます。 -もし10本の指を使ってタイプを行っているなら、この文字は覚えやすいということも覚 -えておいてください: -"#" はあなたの左手の中指で押します(左上に検索します)。そして -"*" はあなたの右手の中指で押します(右下に検索します)。 +に見つかったものが使われます: +- カーソル位置のキーワード +- 同じ行の、カーソルの右側のキーワード +- カーソル位置の単語 +- 同じ行の、カーソルの右側の単語 +キーワードは、'iskeyword' で定義されている文字だけを含む文字列です。 +単語 (|WORD|) は、空白文字 (<Tab> や <Space>) を含まない文字列です。 +Note: 10本の指を使ってタイプしているなら、このコマンドを覚えるのは簡単です: +"#" は左手の中指で押します (左上に向かって検索します)。 +"*" は右手の中指で押します (右下に向かって検索します)。 +訳注: これは英語キーボードでの話 ============================================================================== 2. パターンの定義 *search-pattern* *pattern* *[pattern]* *regular-expression* *regexp* *Pattern* + *E76* *E383* *E476* + +初心者の方はユーザーマニュアルの27章 |usr_27.txt| を読んでください。 + + */bar* */\bar* */pattern* +1. パターンは、"\|" で分けられた 1 つ以上のブランチからなります。ブランチがど + れか 1 つでもマッチすればマッチします。例えば、"foo\|beep" は "foo" と + "beep" にマッチします。複数のブランチがマッチした場合は、最初にマッチしたも + のが使われます。 + + pattern ::= branch + or branch \| branch + or branch \| branch \| branch + etc. + + */branch* */\&* +2. ブランチは、"\&" で分けられた1つ以上の連接からなります。全ての連接が同じ + 場所でマッチした場合に限り、最後の連接がマッチします。例: + "foobeep\&..." は "foobeep" の "foo" にマッチします。 + ".*Peter\&.*Bob" は "Peter" と "Bob" が両方ある行でマッチします。 + + branch ::= concat + or concat \& concat + or concat \& concat \& concat + etc. + + */concat* +3. 連接は、連続した 1 つ以上のピースからなります。ピースがすべて、順番どおり + マッチした場合にマッチします。たとえば、"f[0-9]b" は最初に "f" にマッチし、 + 次に数字、そして "b" にマッチします。 + + concat ::= piece + or piece piece + or piece piece piece + etc. + + */piece* +4. ピースはアトムです。アトムが何回マッチするかを指示する、量指定子を後ろに置 + くことができます。たとえば "a*" はいくつの "a" でもマッチします。 + ""、"a"、"aa" など。|/multi|を参照。 + + piece ::= atom + or atom multi + + */atom* +5. アトムはパターンアイテムを構成する要素です。ほとんどのアトムは 1 文字にマッ + チします。多くの場合、アトムは普通の文字か文字クラスです。カッコを使ってパ + ターンからアトムを作れます。"\z(\)" は構文強調専用です。 + + atom ::= ordinary-atom |/ordinary-atom| + or \( pattern \) |/\(| + or \%( pattern \) |/\%(| + or \z( pattern \) |/\z(| + + +============================================================================== +3. Magic */magic* + +パターンの中でリテラルとして扱われる文字は、テキストの同じ文字とマッチします。 +しかし、バックスラッシュが前置されると、特別な意味を持つようになります。 + +バックスラッシュを前置しなくても特別な意味を持つ文字があります。そのような文字 +をリテラル文字としてマッチさせるには、バックスラッシュを前置する必要がありま +す。 + +ある文字がリテラルとして処理されるかどうかは、オプション'magic'と、以下で説明 +するアイテムに依存します。 + */\m* */\M* +"\m" を使うと、それ以降のパターンは 'magic' がオンの状態で処理されます。 +オプション 'magic' の設定よりも優先されます。 +"\M"を使うと、それ以降のパターンは 'nomagic' の状態で処理されます。 + */\v* */\V* +"\v" を使うと、それ以降の、'0'-'9'、'a'-'z'、'A'-'Z'、'_'、以外のすべての +ASCII 文字は特別な意味を持ちます。 "very magic" + +"\V" を使うと、それ以降はバックスラッシュだけが特別な意味を持ちます。 +"very nomagic" + +例: +after: \v \m \M \V マッチするもの ~ + 'magic' 'nomagic' + $ $ $ \$ 行末 + . . \. \. 何か 1 文字 + * * \* \* 直前のアトムの繰り返し + () \(\) \(\) \(\) グループ化してアトムにする + | \| \| \| 選択の区切り + \a \a \a \a 英字 + \\ \\ \\ \\ リテラルのバックスラッシュ + \. \. . . リテラルのドット + \{ { { { リテラルの "{" + a a a a リテラルの 'a' + +{\m、\M、\v、\V、はVimだけの機能です} + +オプション 'magic' は初期設定のままにしておいてください。環境の違いによるトラ +ブルを回避できます。パターンが 'magic' の設定に影響されないようにするには、パ +ターンの先頭に "\m" か "\M" を置きます。 + + +============================================================================== +4. パターンの概要 *pattern-overview* + +量指定子の概要。 */multi* *E61* *E62* +詳しい説明や使用例は、リンク先を参照してください。 *E64* + + 量指定子 ~ + 'magic' 'nomagic' アトムがいくつマッチするか ~ +|/star| * \* 0 以上 最長一致 +|/\+| \+ \+ 1 以上 最長一致 (*) +|/\=| \= \= 0 か 1 最長一致 (*) +|/\?| \? \? 0 か 1 最長一致 (*) + +|/\{| \{n,m} \{n,m} n 以上 m 以下 最長一致 (*) + \{n} \{n} n 正確に指定した数だけ (*) + \{n,} \{n,} n 以上 最長一致 (*) + \{,m} \{,m} 0 以上 m 以下 最長一致 (*) + \{} \{} 0 以上 最長一致 (*と同じ) (*) + +|/\{-| \{-n,m} \{-n,m} n 以上 m 以下 最短一致 (*) + \{-n} \{-n} n 正確に指定した数だけ (*) + \{-n,} \{-n,} n 以上 最短一致 (*) + \{-,m} \{-,m} 0 以上 m 以下 最短一致 (*) + \{-} \{-} 0 以上 最短一致 (*) + + *E59* +|/\@>| \@> \@> 1 強欲な量指定子 (*) +|/\@=| \@= \@= なし 幅ゼロの肯定先読み |/zero-width| (*) +|/\@!| \@! \@! なし 幅ゼロの否定先読み |/zero-width| (*) +|/\@<=| \@<= \@<= なし 幅ゼロの肯定後読み |/zero-width| (*) +|/\@<!| \@<! \@<! なし 幅ゼロの否定後読み |/zero-width| (*) + +(*) {Vi にはない機能です} + + +普通のアトムの概要 */ordinary-atom* +詳しい説明や使用例は、リンク先を参照してください。 + + アトム ~ + magic nomagic マッチするもの ~ +|/^| ^ ^ 行頭 (パターンの先頭にある場合だけ) |/zero-width| +|/\^| \^ \^ リテラル文字 '^' +|/\_^| \_^ \_^ 行頭 (どこでも使える) |/zero-width| +|/$| $ $ 行末 (パターンの末尾にある場合だけ) |/zero-width| +|/\$| \$ \$ リテラル文字 '$' +|/\_$| \_$ \_$ 行末 (どこでも使える) |/zero-width| +|/.| . \. 何か 1 文字 (改行以外) +|/\_.| \_. \_. 何か 1 文字 (改行含む) +|/\<| \< \< 単語の先頭 |/zero-width| +|/\>| \> \> 単語の末尾 |/zero-width| +|/\zs| \zs \zs なし。マッチの開始地点を設定します +|/\ze| \ze \ze なし。マッチの終了地点を設定します +|/\%^| \%^ \%^ ファイルの先頭 |/zero-width| *E71* +|/\%$| \%$ \%$ ファイルの末尾 |/zero-width| +|/\%V| \%V \%V 選択範囲内 |/zero-width| +|/\%#| \%# \%# カーソル位置 |/zero-width| +|/\%'m| \%'m \%'m マーク m の位置 |/zero-width| +|/\%l| \%23l \%23l 23行目 |/zero-width| +|/\%c| \%23c \%23c 23列目 |/zero-width| +|/\%v| \%23v \%23v 23列目 (表示単位) |/zero-width| + +文字クラス {Vi にはない機能です}: */character-classes* +|/\i| \i \i 識別子文字 (オプション 'isident' を参照) +|/\I| \I \I "\i" と同じですが、数字は除外します +|/\k| \k \k キーワード文字 (オプション 'iskeyword' を参照) +|/\K| \K \K "\k" と同じですが、数字は除外します +|/\f| \f \f ファイル名の文字 (オプション 'isfname' を参照) +|/\F| \F \F "\f" と同じですが、数字は除外します +|/\p| \p \p 印字可能文字 (オプション 'isprint' を参照) +|/\P| \P \P "\p" と同じですが、数字は除外します +|/\s| \s \s 空白文字: <Space> と <Tab> +|/\S| \S \S 空白文字以外。\s の反対です +|/\d| \d \d 数字 [0-9] +|/\D| \D \D 数字以外 [^0-9] +|/\x| \x \x 16 進数字 [0-9A-Fa-f] +|/\X| \X \X 16 進数字以外 [^0-9A-Fa-f] +|/\o| \o \o 8 進数字 [0-7] +|/\O| \O \O 8 進数字以外 [^0-7] +|/\w| \w \w 単語を構成する文字 [0-9A-Za-z_] +|/\W| \W \W 単語を構成する文字以外 [^0-9A-Za-z_] +|/\h| \h \h 単語の先頭の文字 [A-Za-z_] +|/\H| \H \H 単語の先頭の文字以外 [^A-Za-z_] +|/\a| \a \a 英字 [A-Za-z] +|/\A| \A \A 英字以外 [^A-Za-z] +|/\l| \l \l 小文字英字 [a-z] +|/\L| \L \L 小文字英字以外 [^a-z] +|/\u| \u \u 大文字英字 [A-Z] +|/\U| \U \U 大文字英字以外 [^A-Z] +|/\_| \_x \_x x は上記の文字クラスのどれかです。文字クラスと改行が + マッチします。 +(文字クラスここまで) + +|/\e| \e \e <Esc> +|/\t| \t \t <Tab> +|/\r| \r \r <CR> +|/\b| \b \b <BS> +|/\n| \n \n 改行 +|/~| ~ \~ 最後に置換された文字列 +|/\1| \1 \1 最初の \(\) と同じ文字列 {Vi にはない機能です} +|/\2| \2 \2 "\1" と同じですが、2 番目の \(\) を使います + ... +|/\9| \9 \9 "\1" と同じですが、9 番目の \(\) を使います + *E68* +|/\z1| \z1 \z1 構文強調専用。|:syn-ext-match|を参照 + ... +|/\z1| \z9 \z9 構文強調専用。|:syn-ext-match|を参照 + + x x 特別な意味のない文字は、その文字自身とマッチします + +|/[]| [] \[] [] で囲んだ文字のうちどれか +|/\%[]| \%[] \%[] 任意にマッチするアトム列 + +|/\c| \c \c 大文字小文字を無視します +|/\C| \C \C 大文字小文字を区別します +|/\m| \m \m 以降のパターン文字を 'magic' がオンの状態で処理します +|/\M| \M \M 以降のパターン文字を 'magic' がオフの状態で処理します +|/\v| \v \v 以降のパターン文字を "very magic" で処理します +|/\V| \V \V 以降のパターン文字を "very nomagic" で処理します +|/\Z| \Z \Z ユニコードの合成文字かどうかを無視します。 + ヘブライ語やアラビア語で母音を検索するときに便利です。 + +|/\%d| \%d \%d 10進数指定の特定の文字 (例 \%d123) +|/\%x| \%x \%x 16進数指定の特定の文字 (例 \%x2a) +|/\%o| \%o \%o 8進数指定の特定の文字 (例 \%o040) +|/\%u| \%u \%u 特定のマルチバイト文字 (例 \%u20ac) +|/\%U| \%U \%U 特定の広範囲のマルチバイト文字 (例 \%U12345678) + +例 マッチするもの ~ +\<\I\i* or +\<\h\w* +\<[a-zA-Z_][a-zA-Z0-9_]* + 識別子 (例えば C 言語の識別子) + +\(\.$\|\. \) <EOL> かスペースの直前のピリオド + +[.!?][])"']*\($\|[ ]\) 文末。")" コマンドが認識する文末と同じ定義です。 + +cat\Z "cat" と "càt" ("a" + 0x0300) にマッチする。 + 見た目は似ていますが、"càt" (0x00e0)にはマッチしませ + ん。 + + +============================================================================== +5. 量指定子 (Multi items) *pattern-multi-items* + +アトムがどのように、何回マッチするかを指示するものを、量指定子 (multi) と呼び +ます。概要は |/multi| を参照してください。 + + */star* */\star* *E56* +* ('magic'がオフのときは \* ) + アトムの 0 回以上の繰り返し。最長一致。 + Example 'nomagic' マッチするもの ~ + a* a\* ""、"a"、"aa"、"aaa"、など。 + .* \.\* 改行以外の全て (空文字列も) + \_.* \_.\* バッファの末尾までの全て + \_.*END \_.\*END 一番最後の "END" までの全て + + 例外: パターンの最初と "^" の直後の "*" は、リテラルの "*" にマッチし + ます。 + + "\_." の繰り返しには注意してください。たくさんのテキストがマッチして、 + そして、時間が掛かります。たとえば、"\_.*END" は、カーソルの位置から 1 + 番最後の "END" までのすべてのテキストがマッチします。"*" は最長一致な + ので、まずファイルの末尾までスキップして、それから 1 文字ずつ後退しな + がら "END" を探します。 + + */\+* *E57* +\+ アトムの 1 回以上の繰り返し。最長一致。 {Vi にはない機能です} + Example マッチするもの ~ + ^.\+$ 空行以外の行 + \s\+ 1 文字以上の空白 -パターンには特殊な文字を含めることができます。そしてこれは 'magic' オプションの -設定で変えることができます。'magic'には常にデフォルトの設定を使うことを推奨しま -す。これは移植上の問題を回避します。 - - */bar* */\bar* -1. パターンは "\|" で分けられた1つもしくは複数のブランチからなります。このパタ - ーンはブランチのうちのどれかにマッチするものにはすべてマッチします。例: - "foo\|beep" は "foo" と "beep" にマッチします。もし複数のブランチがマッチす - れば初めにマッチしたものが使われます。 - -2. ブランチは1つもしくは複数のピースの結合からなります。ブランチは初めにマッチ - するピースとそれに続く2番目にマッチするピースそれに続く...にマッチします。 - 例: "foo[0-9]beep" は初めに "foo" にマッチし、それから数字それから "beep" と - いう風にマッチします。 - -3. ピースはアトム(それ以上分割できないもの)であり、次のものを続けることができま - す: - 'magic' 'nomagic' ~ - */star* */\star* - * \* 前にあるアトムの0回以上の繰り返しに可能な限り多くの回数 - マッチします (最大 32767) - */\+* - \+ \+ 前にあるアトムの1回以上の繰り返しに可能な限り多くの回数 - マッチします (最大 32767) {Vi にはない機能です} */\=* - \= \= 前にあるアトムの0回もしくは1回に可能な限り多くの回数マ - ッチします {Vi にはない機能です} - */\{* - \{n,m} \{n,m} 前にあるアトムのn回からm回までの繰り返しに可能な限り多 - くの回数マッチします {Vi にはない機能です} - \{n} \{n} 前にあるアトムのn回の繰り返しにマッチします - {Vi にはない機能です} - \{n,} \{n,} 前にあるアトムのn回以上の繰り返しに可能な限り多くの回数 - マッチします {Vi にはない機能です} - \{,m} \{,m} 前にあるアトムの0回からm回までの繰り返しに可能な限り多 - くの回数マッチします {Vi にはない機能です} - \{} \{} 前にあるアトムの0回以上の繰り返しに可能な限り多くの回数 - マッチします(* と同じです) {Vi にはない機能です} +\= 0 回または 1 回のアトム。最長一致。 {Vi にはない機能です} + Example マッチするもの ~ + foo\= "fo" と "foo" + + */\?* +\? \= と同じ。"?" コマンドによる後方検索では使えません。 + {Vi にはない機能です} + + */\{* *E58* *E60* *E554* +\{n,m} アトムの n 以上 m 以下の繰り返し。最長一致 +\{n} アトムの n 回 の繰り返し +\{n,} アトムの n 回以上 の繰り返し。最長一致 +\{,m} アトムの 0 以上 m 以下の繰り返し。最長一致 +\{} アトムの 0 回以上 の繰り返し。最長一致 (*と同じ) */\{-* - \{-n,m} \{-n,m} 前にあるアトムのn回からm回までの繰り返しに可能な限り少 - ない回数マッチします {Vi にはない機能です} - \{-n} \{-n} 前にあるアトムのn回の繰り返しにマッチします - {Vi にはない機能です} - \{-n,} \{-n,} 前にあるアトムのn回以上の繰り返しに可能な限り少ない回数 - マッチします {Vi にはない機能です} - \{-,m} \{-,m} 前にあるアトムの0回からm回までの繰り返しに可能な限り少 - ない回数マッチします {Vi にはない機能です} - \{-} \{-} 前にあるアトムの0回以上の繰り返しに可能な限り少ない回数 - マッチします {Vi にはない機能です} - - (n と m は1から32767までの間の10進数です) - - "{" の後にすぐに "-" が現れている場合、もっとも短いものにマッチ - する高速なアルゴリズムが使われます(下の例をご覧下さい)。特に - "\{-}" は "*" と同じですが一番短いものにマッチする高速なアルゴ - リズムが使われます。しかし: 早くマッチしたものは短いマッチより - 優先されます: "a\{-}b" は "xaaab" の "aaab" にマッチすることに - なります。 - - 例: - .* .\* 空の文字列も含めてすべてにマッチします - ^.\+$ ^.\+$ 空行以外の行にマッチします - foo\= foo\= "fo" と "foo" にマッチします - ab\{2,3}c "abbc" か "abbbc" にマッチします - a\{5} "aaaaa" にマッチします - ab\{2,}c "abbc", "abbbc", abbbbc", ... にマッチします - ab\{,3}c "ac", "abc", "abbc", "abbbc" にマッチします - a[bc]\{3}d "abbbd","abbcd","acbcd","acccd"などなどにマッチします - a\(bc\)\{1,2}d "abcd" か "abcbcd" にマッチします - a[bc]\{-}[cd] "abcd" の中の "abc" にマッチします - a[bc]*[cd] "abcd" の中の "abcd" にマッチします。 - - -4. アトムは次のものです: - magic nomagic ~ - ^ ^ パターンの最初、もしくは "\|" の後、もしくは */^* - "\(" の後で行の最初にマッチします; ほかの場所 - では文字どおりの '^' にマッチします。 - \^ \^ どの場所でも文字どおりの '^' にマッチします */\^* - ^ ^ パターンの最初に置かれて行の最初にマッチします */^* - $ $ パターンの最後、もしくは "\|" の前、もしくは */$* - "\)" の前に置かれて<EOL>にマッチします; それ - 以外の場所では文字どおりの '$' にマッチします - \$ \$ どの場所でも文字どおりの '$' にマッチします */\$* - . \. 任意の一文字にマッチします */.* */\.* - \< \< 単語の最初にマッチします */\<* - \> \> 単語の最後にマッチします */\>* - - 文字クラス {Vi にはない機能です}: - \i \i 識別子文字 (参照: 'isident'オプション) */\i* - \I \I "\i" と似ていますが数字を除きます */\I* - \k \k キーワード文字(参照: 'iskeyword' オプション) */\k* - \K \K "\k" と似ていますが数字を除きます */\K* - \f \f ファイル名の文字(参照: 'isfname' オプション) */\f* - \F \F "\f" と似ていますが数字を除きます */\F* - \p \p 印字可能な文字(参照: 'isprint' オプション) */\p* - \P \P "\p" と似ていますが数字を除きます */\P* +\{-n,m} アトムの n 以上 m 以下の繰り返し。最短一致 +\{-n} アトムの n 回 の繰り返し +\{-n,} アトムの n 回以上 の繰り返し。最短一致 +\{-,m} アトムの 0 以上 m 以下の繰り返し。最短一致 +\{-} アトムの 0 回以上 の繰り返し。最短一致 + {すべてViにはない機能です} + + n と m には 10 進数正数、またはゼロを指定できます。 + + "{" の直後に "-" がある場合は、最短一致のアルゴリズムが使われます (下 + 記の例を参照)。特に、"\{-}" は "*" と同じですが、最短一致のアルゴリズ + ムが使われます。しかし、早い位置でマッチするものが、短いマッチよりも優 + 先されます。たとえば、"a\{-}b" は "xaaab" の "aaab" にマッチします。 + + Example マッチするもの ~ + ab\{2,3}c "abbc" または "abbbc" + a\{5} "aaaaa" + ab\{2,}c "abbc"、"abbbc"、"abbbbc"、など + ab\{,3}c "ac"、"abc"、"abbc"、"abbbc" + a[bc]\{3}d "abbbd"、"abbcd"、"acbcd"、"acccd"、など + a\(bc\)\{1,2}d "abcd" または "abcbcd" + a[bc]\{-}[cd] "abcd" の "abc" + a[bc]*[cd] "abcd" の "abcd" + + } にバックスラッシュを前置するかどうかは任意です: \{n,m\} + + */\@=* +\@= 幅ゼロの肯定先読み。{Vi にはない機能です} + Perl の "(?=pattern)" と同じです。 + Example マッチするもの ~ + foo\(bar\)\@= "foobar" の "foo" + foo\(bar\)\@=foo なにもマッチしない + */zero-width* + "\@=" (や、"^"、"$"、"\<"、"\>"、など) を使った場合、その文字はマッチ + に含まれません。これらのアイテムは、マッチすることができるかどうかの + チェックだけに使われます。続くアイテムが同じ場所でマッチすることに注意 + してください。上記の最後の例は "foobarfoo" にはマッチしません。"bar" + がマッチしたのと同じ場所で "foo" とマッチしようとするからです。 + + Note: "\&" は "\@=" と同じような働きをします。"foo\&.." と + "\(foo\)\@=.." は同じです。カッコを書かなくていいので "\&" の方が簡単 + です。 + + + */\@!* +\@! 幅ゼロの否定先読み。 |/zero-width| {Vi にはない機能です} + Perl の "(?!pattern)" と同じです。 + Example マッチするもの ~ + foo\(bar\)\@! 後ろに "bar" のない "foo" + a.\{-}p\@! 後ろに "p" のない "a"、"ap"、"app"、など + if \(\(then\)\@!.\)*$ 後ろに "then" のない "if" + + "\@!" を使うには注意が必要です。パターンにマッチしない場所、というのは + そこらじゅうにあるからです。"a.*p\@!" は "a" から行末までマッチしま + す。なぜなら、".*" が全ての文字にマッチし、"p" は行末にマッチしないか + らです。"a.\{-}p\@!" は後ろに "p" のない文字列、"a"、"ap"、"aap"、など + にマッチします。なぜなら、"." が "p" にもマッチし、"p\@!" がその後ろに + マッチする(つまり "p" がマッチしない) からです。 + + 直前がマッチしないことを調べるために "\@!" を使うことはできません。 + "\(foo\)\@!bar" は "foobar" の "bar" にマッチします。なぜなら、"foo" + がマッチしなかった場所で、"bar" がマッチするからです。"foobar" がマッ + チしないように、"\(foo\)\@!...bar" とすることもできますが、これは行頭 + の "bar" にはマッチしません。"\(foo\)\@<!bar" を使ってください。 + + */\@<=* +\@<= 幅ゼロの肯定後読み。|/zero-width| {Vi にはない機能です} + Perl の "(?<=pattern)" と同じですが、Vimでは可変長パターンも使えます。 + Example マッチするもの ~ + \(an\_s\+\)\@<=file "an" と空白文字 (改行含む) の後の "file" + + 処理速度を気にするなら、この量指定子は避けたほうが無難です。代わりに + "\zs" を使ってください |/\zs|。次のものは上記の例と同じものにマッチし + ます: + an\_s\+\zsfile + + "\@<=" と "\@<!" は直前の文字がマッチしているかどうかをチェックしま + す。理論上は、マッチの現在位置よりも前ならどこでもマッチできます。しか + し、処理時間を制限するために、マッチの現在行と、(もしあれば) 1 つ前の + 行だけが検索されます。ほとんどの場合はこれで十分ですし、遅くなり過ぎる + こともありません。 + "\@<=" や "\@<!" の後にくるパターンは最初にチェックされます。そのため、 + "\1" のような、\(\) の前方参照は機能しません。そのときは次のようにしま + す: + Example マッチするもの ~ + \1\@<=,\([a-z]\+\) "abc,abc" の ",abc" + + */\@<!* +\@<! 幅ゼロの否定後読み。マッチの現在位置の直前の文字列が、アトムにマッチし + ない場合にマッチします。現在行と 1 つ前の行だけがチェックされます。 + |/zero-width| {Vi にはない機能です} + Perl の "(?<!pattern)" と同じですが、Vimでは可変長パターンも使えます。 + 対象のアトムは、続くアトムの直前までがマッチの範囲になるため、最後が + ".*" で終わっているアトムも機能します。 + 注意: これは遅くなることがあります (マッチするかどうかを多くの場所で + チェックする必要があるため)。 + Example マッチするもの ~ + \(foo\)\@<!bar "foobar" 以外の "bar" + \(\/\/.*\)\@\<!in "//" の後ろ以外の "in" + + */\@>* +\@> 強欲な量指定子。 {Vi にはない機能です} + Perlの "(?>pattern)" と同じです。 + Example マッチするもの ~ + \(a*\)\@>a なにもマッチしない ("a*" が全ての "a" を取るので、その + 後に "a" があることはありません) + + パターンがそのアトムだけであるかのようにマッチします。そして、パターン + 全体がマッチしなくても、そのアトムのマッチを短くして再トライしたりはし + ません (バックトラックしません)。次の違いに注意してください。"a*b" と + "a*ab" は両方とも "aaab" にマッチします。このとき、後者の "a*" は先頭 + の "aa" にマッチしています。"\(a*\)\@>ab" は "aaab" にマッチしません。 + なぜなら、"a*"が"aaa"にマッチする (最長一致する) ため、"ab" がマッチで + きないからです。 + + +============================================================================== +6. 普通のアトム *pattern-atoms* + +普通のアトムは次のものです: + + */^* +^ パターンの先頭にある場合、行頭にマッチします。"\|"、"\("、"\%(" の直後 + でも構いません。他の場所にある場合は、リテラル文字の '^' にマッチしま + す。|/zero-width| + Example マッチするもの ~ + ^beep( (おそらく) C 言語の関数 "beep" の開始。 + + */\^* +\^ リテラル文字 '^' にマッチします。パターンのどの場所でも使えます。 + + */\_^* +\_^ 行頭にマッチします。|/zero-width| パターンのどの場所でも使えます。 + Example マッチするもの ~ + \_s*\_^foo 空白文字や空行の直後の、行頭の "foo" + + */$* +$ パターンの末尾にある場合、行末 (<EOL>) にマッチします。"\|" と "\)" + ("\v" を使ったときは "|" または")") の直前でも構いません。他の場所にあ + る場合は、リテラル文字の '$' にマッチします。 |/zero-width| + + */\$* +\$ リテラル文字の '$' にマッチします。パターンのどの場所でも使えます。 + + */\_$* +\_$ 行末にマッチします。|/zero-width| パターンのどの場所でも使えます。 + Note: "a\_$b" はどこにもマッチしません。"b" は行末とはマッチしないから + です。代わりに、"a\nb" を使ってください |/\n|。 + Example マッチするもの ~ + foo\_$\_s* 行末の "foo" と、それに続く空白や空行 + +. ('nomagic'なら \.) */.* */\.* + 改行以外のすべての文字がマッチします。 + + */\_.* +\_. 改行も含め、すべての文字がマッチします。 + 注意: "\_.*" はバッファの末尾までのすべてのテキストがマッチします。 + + */\<* +\< 単語の先頭にマッチします。このアトムの次の文字は単語の 1 文字目です。 + どの文字が単語を構成するかは、オプション 'iskeyword' で設定します。 + |/zero-width| + + */\>* +\> 単語の末尾にマッチします。このアトムの前の文字は単語の最後の文字です。 + どの文字が単語を構成するかは、オプション 'iskeyword' で設定します。 + |/zero-width| + + */\zs* +\zs どこにでもマッチして、マッチの開始地点を設定します。このアトムの次の文 + 字は、マッチした文字列の 1 文字目です。|/zero-width| + 例: > + /^\s*\zsif +< これは、行頭からスペースを無視して、"if" にマッチします。 + 複数回の繰り返しで使った場合は、最後にマッチしたものが使われます。 + 例: > + /\(.\{-}\zsFab\)\{3} +< これは、3 番目に現れた "Fab" にマッチします。 + {Vi にはない機能です} {|+syntax|が有効な場合のみ利用できます} + */\ze* +\ze どこにでもマッチして、マッチの末尾を設定します。このアトムの前の文字 + は、マッチした文字列の最後の文字です。|/zero-width| + 複数回の繰り返しで使った場合は、最後にマッチしたものが使われます。 + 例: > + /end\ze\(if\|for\) +< これは、"endif" または "endfor" の "end" にマッチします。 + {Vi にはない機能です} {|+syntax|が有効な場合のみ利用できます} + + */\%^* *start-of-file* +\%^ ファイルの先頭にマッチします。文字列 (|expr-string|) とマッチングする + 場合は、文字列の先頭にマッチします。{Vi にはない機能です} + 例: > + /\%^\_.\{-}\zsVIM +< これは、ファイルの最初にある "VIM" にマッチします。 + + */\%$* *end-of-file* +\%$ ファイルの末尾にマッチします。文字列 (|expr-string|) とマッチングする + 場合は、文字列の末尾にマッチします。{Vi にはない機能です} + Note: 次のパターンでは、ファイルの最後の "VIM" を検索できません: > + /VIM\_.\{-}\%$ +< これは、カーソル位置から次の "VIM" を検索します。"VIM" の後の + "\_.\{-}\%$" が常にマッチするからです。ファイルの最後の "VIM" を検索す + るには、次のようにします: > + /VIM\ze\(\(VIM\)\@!\_.\)*\%$ +< "VIM" の後に "VIM" がないことを確実にするために|/\@!|を使っています。 + ファイルの末尾から後方検索する方が簡単です。 + + */\%V* +\%V 選択範囲内にマッチします。ビジュアルモードでないときは、|gv| で再選択 + できる範囲にマッチします。 + カレントバッファでのみ機能します。 + + */\%#* *cursor-position* +\%# カーソルの位置にマッチします。ウィンドウに表示されているバッファ内で + マッチングする場合のみ機能します。{Vi にはない機能です} + 注意: パターンが使われた後で、カーソルを移動した場合、マッチの結果は正 + 確ではなくなってしまいます。マッチの結果は自動的に更新されません。これ + は特に、構文強調と 'hlsearch' に関係します。 + カーソルが移動しても、表示は自動的に更新されません。表示が更新されるの + は、行を変更したため行全体が更新されたときや、|CTRL-L| コマンドを使っ + てスクリーン全体を更新したときです。カーソル位置の単語を強調表示するに + は次のようにします: > + /\k*\%#\k* +< 'hlsearch' をオンにして、カーソルを移動し、テキストを変更してみて、表 + 示が更新されるかどうか確認してください。 + + */\%'m* */\%<'m* */\%>'m* +\%'m マーク m の位置にマッチします。 +\%<'m マーク m より前の位置にマッチします。 +\%>'m マーク m より後の位置にマッチします。 + 例えば、マーク 's から 'e までを強調するには次のようにします: > + /.\%>'s.*\%<'e.. +< Note: マーク 'e の位置をマッチに含めるには 'e の後に二つのドットが必要 + です。なぜなら、"\%<'e" はマーク 'e の前の文字にマッチし、そしてそれは + ゼロ幅マッチ|/zero-width| なので、その文字は結果に含まれないからです。 + {Vi にはない機能です} + 注意: マークを検索した後にマークを移動した場合、その結果は正しくなくな + ります。Vim は自動的にマッチの強調表示を更新したりしません。 + |\%#| で検索した後にカーソルを動かした場合と似ています。 + + */\%l* */\%>l* */\%<l* +\%23l 指定した行にマッチします。 +\%<23l 指定した行より上にマッチします。 +\%>23l 指定した行より下にマッチします。 + この 3 つを使って、バッファの特定の行にマッチできます。"23" の所に行番 + 号を指定してください。先頭の番号は 1 です。{Vi にはない機能です} + 注意: 行を挿入したり削除したりしても、マッチの結果は自動的に更新されま + せん。そのため、このアトムを使った構文強調は、すぐに誤った表示になって + しまいます。 + 現在行を強調表示するには次のようにします: > + :exe '/\%' . line(".") . 'l.*' +< 'hlsearch' をオンにして、カーソルを移動し、テキストを変更してみて、表 + 示が更新されるかどうか確認してください。 + + */\%c* */\%>c* */\%<c* +\%23c 指定した列にマッチします。 +\%<23c 指定した列より前にマッチします。 +\%>23c 指定した列より後にマッチします。 + この 3 つを使って、バッファの特定の列にマッチできます。"23" の所に列番 + 号を指定してください。先頭の番号は 1 です。実際には、何バイト目かを指 + 定するので、マルチバイト文字を扱うときには、"列番号" という表現は正確 + ではありません。{Vi にはない機能です} + 注意: 行を挿入したり削除したりしても、マッチの結果は自動的に更新されま + せん。そのため、このアトムを使った構文強調は、すぐに誤った表示になって + しまいます。 + カーソル位置の列を強調表示するには次のようにします: > + :exe '/\%' . col(".") . 'c' +< 'hlsearch' をオンにして、カーソルを移動し、テキストを変更してみて、表 + 示が更新されるかどうか確認してください。 + 44 バイト目を強調表示するには次のようにします: > + /\%>43c.\%<46c +< Note: "." が 44 バイト目にマッチした場合、"%<46c" は 45 列目にマッチし + ます。 + */\%v* */\%>v* */\%<v* +\%23v 指定した表示列にマッチします。 +\%<23v 指定した表示列より前にマッチします。 +\%>23v 指定した表示列より後にマッチします。 + この 3 つを使って、バッファの特定の表示列にマッチできます。文字列 + (|expr-string|) とマッチングするときは、カレントウィンドウの、 + 'tabstop' などの設定が使われます。 + "23" の所に表示列番号を指定してください。先頭の番号は 1 です。 + Note: Tab 文字や全角文字などの、複数列で表示される文字の途中の列を指定 + した場合は、マッチしません {Vi にはない機能です} + 注意: 行を挿入したり削除したりしても、マッチの強調表示は自動的に更新さ + れません。そのため、このアトムを使った構文強調は、すぐに誤った表示に + なってしまいます。 + 表示列の 72 桁目以降の文字を強調表示するには次のようにします: > + /\%>72v.* +< 'hlsearch' をオンにして、カーソルを移動し、テキストを変更してみて、表 + 示が更新されるかどうか確認してください。 + 次のものはテキストの 17 列までマッチします: > + /.*\%17v +< 17 桁目の文字はマッチに含まれません。"\%17v" はマッチしますが、それは + 幅ゼロのマッチだからです |/zero-width|。 + 17 桁目もマッチに含めるには次のようにします: > + /.*\%<18v + +文字クラス: {Vi にはない機能です} +\i 識別子文字 ('isident'参照) */\i* +\I "\i" と同じですが、数字は除外します */\I* +\k キーワード文字 ('iskeyword'参照) */\k* +\K "\k" と同じですが、数字は除外します */\K* +\f ファイル名の文字 ('isfname'参照) */\f* +\F "\f" と同じですが、数字は除外します */\F* +\p 印字可能文字 ('isprint'参照) */\p* +\P "\p" と同じですが、数字は除外します */\P* + +NOTE: 上記のものはマルチバイト文字に対しても機能します。次のものは、示された範 +囲の ASCII 文字だけがマッチします。 *whitespace* *white-space* - \s \s ホワイトスペース文字: <Space> と <Tab> */\s* - \S \S ホワイトスペース以外の文字; \s の反対です */\S* - \d \d 数字: [0-9] */\d* - \D \D 数字以外の文字: [^0-9] */\D* - \x \x 16進数: [0-9A-Fa-f] */\x* - \X \X 16進数でない文字: [^0-9A-Fa-f] */\X* - \o \o 8進数: [0-7] */\o* - \O \O 8進数でない文字: [^0-7] */\O* - \w \w 単語を構成する文字: [0-9A-Za-z_] */\w* - \W \W 単語を構成する文字以外の文字: [^0-9A-Za-z_] */\W* - \h \h 単語の先頭の文字: [A-Za-z_] */\h* - \H \H 単語の先頭の文字以外の文字: [^A-Za-z_] */\H* - \a \a アルファベット文字: [A-Za-z] */\a* - \A \A アルファベット以外の文字: [^A-Za-z] */\A* - \l \l 小文字: [a-z] */\l* - \L \L 小文字以外の文字: [^a-z] */\L* - \u \u 大文字: [A-Z] */\u* - \U \U 大文字以外の文字: [^A-Z] */\U* - 注: アトムを使った方が [] 形式を使うより高速です - 注: 'ignorecase' は文字クラスでは使われません - (文字クラス終わり) - - \e \e <Esc> にマッチします */\e* - \t \t <Tab> にマッチします */\t* - \r \r <CR> にマッチします */\r* - \b \b <BS> にマッチします */\b* - \n \n <NL> にマッチします(まだ使えません) 複数の行に */\n* - わたってパターンを指定するのに使われるでしょう - ~ \~ 最後に行われた置換文字列にマッチします */~* */\~* - \(\) \(\) エスケープされた括弧で囲まれたパターンです */\(\)* - (例: "\(^a\)") はそのパターンにマッチします */\)* - \1 \1 はじめの \( と \) で囲まれた副表現にマッチする */\1* - 文字列にマッチします {Vi にはない機能です} - 例: "\([a-z]\).\1" は "ata", "ehe", "tot", などにマッ - チします - \2 \2 "\1" に似ていますが2番目の副表現を使います */\2* - ... - \9 \9 "\1" に似ていますが9番目の副表現を使います */\9* - - x x 1つの文字です。特殊な意味は持ちません。それ自身にマッチ - します - \x \x バックスラッシュの後に1つの文字を続けます */\* */\\* - 特殊な意味は持ちません。将来の拡張のためにとっておかれ - ています。 - - [] \[] 範囲です。これは "[]" もしくは "\[]" で囲まれた */[]* - 一連の文字で、その中に含まれる任意の1文字にマッ */\[]* - チします。例えば: "[xyz]" は 'x', 'y', 'z' のどれかにマ - ッチします。 - - 文字列が "^" で始まっていると文字列に含まれない任意の - 1文字にマッチします: "[^xyz]" は 'x', 'y', 'z' 以外の - すべてにマッチします。 - - 文字列の中で2つの文字が '-' で分割されていると、その - 間の ASCII 文字すべてのリストの略記になります。例: - "[0-9]" は任意の10進数にマッチします。 - - 文字クラス表現はその文字クラスが属する文字セットに評 - 価されます。次の文字クラスがサポートされています: - Name Contents ~ -*[:alnum:]* [:alnum:] アルファベットとアラビア数字 -*[:alpha:]* [:alpha:] アルファベット -*[:blank:]* [:blank:] スペースとタブ文字 -*[:cntrl:]* [:cntrl:] 制御文字 -*[:digit:]* [:digit:] 10進数 -*[:graph:]* [:graph:] スペースを除いた印字可能な文字 -*[:lower:]* [:lower:] アルファベットの小文字 -*[:print:]* [:print:] スペースを含めた印字可能な文字 -*[:punct:]* [:punct:] 句読点文字 -*[:space:]* [:space:] ホワイトスペース文字 -*[:upper:]* [:upper:] アルファベットの大文字 -*[:xdigit:]* [:xdigit:] 16進数 +\s 空白文字: <Space> と <Tab> */\s* +\S 空白文字以外。\s の反対です */\S* +\d 数字: [0-9] */\d* +\D 数字以外: [^0-9] */\D* +\x 16 進数字: [0-9A-Fa-f] */\x* +\X 16 進数字以外: [^0-9A-Fa-f] */\X* +\o 8 進数字: [0-7] */\o* +\O 8 進数字以外: [^0-7] */\O* +\w 単語を構成する文字: [0-9A-Za-z_] */\w* +\W 単語を構成する文字以外: [^0-9A-Za-z_] */\W* +\h 単語の先頭の文字: [A-Za-z_] */\h* +\H 単語の先頭の文字以外: [^A-Za-z_] */\H* +\a 英字: [A-Za-z] */\a* +\A 英字以外: [^A-Za-z] */\A* +\l 小文字英字: [a-z] */\l* +\L 小文字英字以外: [^a-z] */\L* +\u 大文字英字: [A-Z] */\u* +\U 大文字英字以外: [^A-Z] */\U* + + NOTE: これらのアトムは |/[]| を使うよりも高速です。 + + NOTE: 'ignorecase'、"\c"、"\C" は、文字クラスには影響しません。 + + */\_* *E63* */\_i* */\_I* */\_k* */\_K* */\_f* */\_F* + */\_p* */\_P* */\_s* */\_S* */\_d* */\_D* */\_x* */\_X* + */\_o* */\_O* */\_w* */\_W* */\_h* */\_H* */\_a* */\_A* + */\_l* */\_L* */\_u* */\_U* +\_x x は上記の文字クラスのどれかです。文字クラスと改行がマッチします。 +(文字クラスここまで) + +\e <Esc> にマッチします */\e* +\t <Tab> にマッチします */\t* +\r <CR> にマッチします */\r* +\b <BS> にマッチします */\b* +\n 改行にマッチします */\n* + バッファのテキストではなく、文字列 (|expr-string|) とマッチングすると + きは、リテラルの改行文字がマッチします。 + +~ 最後に置換された文字列とマッチします */~* */\~* + +\(\) パターンをカッコでまとめます */\(* */\(\)* */\)* + たとえば、"\(^a\)" は行頭の 'a' にマッチします。 *E51* *E54* *E55* + +\1 \( と \) に囲まれた最初の部分正規表現が */\1* *E65* + マッチした文字列と同じ文字列にマッチします。{Vi にない機能です} + たとえば、"\([a-z]\).\1" は "ata"、"ehe"、"tot"、などにマッチします。 +\2 "\1" と同じですが、2 番目の部分正規表現を使います */\2* + ... */\3* +\9 "\1" と同じですが、9 番目の部分正規表現を使います */\9* + Note: 部分正規表現の番号は、最初の "\(" から数えて、左から右へ、順番に + 番号が付けられます。マッチする順番ではありません。 + +\%(\) パターンをカッコでまとめます */\%(\)* */\%(* *E53* + \(\) と同じですが、部分正規表現としてカウントされません。たくさんのグ + ループを作ることができますし、処理が少し高速です。 + {Vi にはない機能です} + +x 特別な意味のない文字は、その文字自身とマッチします + + */\* */\\* +\x バックスラッシュと文字の組合せで、現在、特別な意味を持っていない文字 + は、将来の拡張のために予約されています。 + +[] ('nomagic' のときは \[]) */[]* */\[]* */\_[]* */collection* +\_[] + コレクションです。複数の文字を角カッコで囲みます。コレクションに含まれ + る任意の 1 文字とマッチします。 + Example マッチするもの ~ + [xyz] 'x'、'y'、'z' のどれか + [a-zA-Z]$ 行末の英字 + \c[a-z]$ 同上 + + "\_" を付けた場合、コレクションは改行も含みます。コレクションに "\n" + を含めた場合と同じですが、"\_" を付けた場合は、コレクションの先頭が + "^" の場合でも改行にマッチします。つまり、"\_[^ab]" は "a" と "b" と改 + 行にマッチします。 + これは Vi 互換です。"\_" や "\n" を使わなければ、改行にはマッチしませ + ん。 + + *E769* + ']' がない場合、Vim はエラーを表示せず、コレクションが使われているので + はないと判断します。'[' を検索するときに便利です。しかし、Vim 内部での + 検索では E769 のエラーがでます。 + When the ']' is not there Vim will not give an error message but + assume no collection is used. Useful to search for '['. However, you + do get E769 for internal searching. + + コレクション文字列の先頭が "^" の場合、 コレクションに含まれている文字 + 以外の文字がマッチします。"[^xyz]" は 'x'、'y'、'z' 以外の文字にマッチ + します。 + - 2 つの文字で '-' を挟んで 、ASCII 文字の範囲を指定できます。たとえ + ば、"[0-9]" はすべての数字にマッチします。 + - 文字クラス表現を使って、その文字クラスが含んでいる文字を取り込むこと + ができます。次の文字クラスがサポートされています。 + 名前 含んでいるもの ~ +*[:alnum:]* [:alnum:] 英数字 +*[:alpha:]* [:alpha:] 英字 +*[:blank:]* [:blank:] スペースと Tab 文字 +*[:cntrl:]* [:cntrl:] コントロール文字 +*[:digit:]* [:digit:] 10 進数字 +*[:graph:]* [:graph:] スペース以外の印字可能文字 +*[:lower:]* [:lower:] 小文字英字 ('ignorecase' がオンのとき + はすべての英字) +*[:print:]* [:print:] スペースを含む印字可能文字 +*[:punct:]* [:punct:] 句読点 +*[:space:]* [:space:] 空白文字 (スペース、Tab、改ページ文字) +*[:upper:]* [:upper:] 大文字英字 ('ignorecase' がオンのとき + はすべての英字) +*[:xdigit:]* [:xdigit:] 16 進数字 *[:return:]* [:return:] <CR> 文字 *[:tab:]* [:tab:] <Tab> 文字 *[:escape:]* [:escape:] <Esc> 文字 *[:backspace:]* [:backspace:] <BS> 文字 - 文字クラス表現の括弧は範囲指定の括弧に加えてつけなけ - ればなりません。例を挙げると、次のものはもっともらし - い UNIX のファイル名の表現です: [-./[:alnum:]_~]\+ - つまり、'-', '.', '/',アルファベット,数字, '_', '~' - が少なくとも1回以上使われている文字列です。*/\]* - - ']', '^', '-', '\' をそのまま文字列に含めるにはバック - スラッシュを前においてください: "[xyz\]]","[\^xyz]", - "[xy\-z]","[xyz\\]"。(注:POSIXではこの方式のバックス - ラッシュをサポートしていません) - ']' に関しては括弧の最初に置くこともできます(後ろの例 - で示すように "^" でも可能です): "[]xyz]" か "[^]xyz]" - {Vi にはない機能です} - '-' に関しては最初もしくは最後に置くことができます: - "[-xyz]", "[^-xyz]", "[xyz-]" - '\' に関しては "^]-etrb" 以外の文字を後に続けることも - できます。"[\xyz]" は '\', 'x', 'y', 'z' にマッチし - ます。しかしながら "\\" を使った方がよいです。なぜな - ら将来の拡張で他の文字が '\' の後に使われるかもしれま - せんから。 - - 'cpoptions' に 'l' が含まれていなければ次のものも解釈 - されます {Vi にはない機能です} - \e <Esc> - \t <Tab> - \r <CR> - \b <BS> - - 範囲マッチングは遅くなりえます。可能ならば上記のアイ - テムを使ってください。 - -'ignorecase'オプションがオンであれば、大文字小文字の違いは無視されます。 -'smartcase'がセットされると、パターンが大文字のみなら、大文字小文字の違いを無視 -します。 - -パターンに改行を含めることはできません(ごめんなさい!)。 + 角カッコで囲んだ文字クラス表現を、コレクションの角カッコ内に書きま + す。たとえば、"[-./[:alnum:]_~]\+" は、UNIX のファイル名として妥当な + パターンです。このパターンは、'-'、'.'、'/'、英数字、'_'、'~'、のど + の文字の組合せでも、1 文字以上の文字列にマッチします。 + これらのものは、8 ビット文字のみマッチします。 + */[[=* *[==]* + - 等価クラス。これはその文字とほぼ同じ文字にマッチします。例えば、アク + セントを無視するなど。次のように書きます: + [=a=] + 現在、これは latin1 でのみ利用できます。utf-8 と latin9 での latin1 + の文字も機能します。 + */[[.* *[..]* + - collation element。現在は単に一文字だけ指定できます: + [.a.] +訳注: see re_format(7) + */\]* + - リテラル文字の ']'、'^'、'-'、'\' をコレクションに含めるには、バック + スラッシュを前置して、"[xyz\]]"、"[\^xyz]"、"[xy\-z]"、"[xyz\\]" と + 書きます。 + Note: POSIX ではこのようなバックスラッシュの使い方はサポートされてい + ません。 + ']' は、コレクションの先頭、または '^' の直後にそのまま書いて、 + "[]xyz]" や "[^]xyz]" とすることができます。 + {Vi にはない機能です} + '-' も、先頭や末尾にそのまま書いて、"[-xyz]"、"[^-xyz]"、"[xyz-]"、 + とすることができます。'\' も、この文字 "^]-\bertn" 以外の文字の前で + は、そのまま書けます。"[\xyz]" は、'\'、'x'、'y'、'z'、の文字にマッ + チします。しかし、常に "\\" と書くようにした方がいいでしょう。'\' と + 何かの文字の組合せは、将来、拡張に使われる可能性があります。 + - 'cpoptions' が 'l' フラグを含んでいない場合、次のものが特別に解釈さ + れます。{Vi にはない機能です}: + \e <Esc> + \t <Tab> + \r <CR> (改行文字ではありません) + \b <BS> + \d123 10進数の文字番号 + \o40 8 進数の文字番号 (最大値 0377) + \x20 16進数の文字番号 (最大値 0xff) + \u20AC 16進数のマルチバイト文字番号 (最大値 0xffff) + \U1234 16進数のマルチバイト文字番号 (最大値 0xffffffff) + NOTE: 他のバックスラッシュによる特殊文字の表記は、[] の中では機能し + ません。 + - コレクションを使ったマッチングは遅くなることがあります。 コレクショ + ンの文字と、テキストの文字を、それぞれ 1 文字ずつ比較する必要がある + からです。同じ意味のアトムが他にある場合は、それを使ってください。た + とえば、"\d" は "[0-9]" よりも速く、同じ文字にマッチします。 + + */\%[]* *E69* *E70* *E369* +\%[] 任意にマッチするアトム列です。これは常にマッチします。アトム単位で最長 + 一致し、最初にアトムがマッチしなかったところでストップします。例: > + /r\%[ead] +< これは、"r"、"re"、"rea"、"read" にマッチします。1 番長いマッチが使わ + れます。Ex コマンドの "function" は、"fu" が必須で、"nction" は省略可 + 能ですが、次の例は、そのようなものにマッチします: > + /\<fu\%[nction]\> +< "full" の "fu" にマッチするようなことがないように、単語末尾のアトム + "\>" が使われています。使う機会はあまりないかもしれませんが、普通の文 + 字以外のアトムを使って、さらに複雑なものも表現できます。例: > + /\<r\%[[eo]ad]\> +< これは、"r"、"re"、"ro"、"rea"、"roa"、"read"、"road" にマッチします。 + {|+syntax| が有効な場合のみ利用可能} + + */\%d* */\%x* */\%o* */\%u* */\%U* *E678* + +\%d123 10進数で指定した文字にマッチします。このアトムの後ろには数字以外の文字 + を置いてください。 +\%o40 8 進数で指定した文字にマッチします (最大値 0377)。040 より小さい値を指 + 定するとき、このアトムの後ろには8進数字以外の文字か、数字以外の文字を + 置いてください。 +\%x2a 16進数で指定した文字にマッチします。2桁まで。 +\%u20AC 16進数で指定した文字にマッチします。4桁まで。 +\%U1234abcd 16進数で指定した文字にマッチします。8桁まで。 + +============================================================================== +7. 大文字と小文字を無視する */ignorecase* + +オプション 'ignorecase' がオンの場合、普通の英字の大文字と小文字の違いは無視さ +れます。'smartcase' がオンの場合、パターンが大文字を含んでいないときだけ、大文 +字と小文字が無視されます。 + */\c* */\C* +"\c" はパターン中のどこにでも置くことができ、パターン全体が、'ignorecase' をオ +ンにした状態で処理されます。実際の 'ignorecase' と 'smartcase' の設定は無視さ +れます。"\C" は "\c" の反対の意味で、大文字と小文字は必ず区別されます。 +{Vim だけが \c と \C をサポートしています} +Note: 'ignorecase'、"\c"、"\C" は、文字クラスには作用しません。 例: -^beep( たぶん C の関数の "beep" の初め + パターン 'ignorecase' 'smartcase' マッチするもの ~ + foo off - foo + foo on - foo Foo FOO + Foo on off foo Foo FOO + Foo on on Foo + \cfoo - - foo Foo FOO + foo\C - - foo -[a-zA-Z]$ 行末の任意のアルファベット文字 +技術的な説明: *NL-used-for-Nul* +ファイル中の <Nul> 文字は、<NL> 文字としてメモリに保存され、ディスプレイには +"^@" と表示されます。これは、ファイルを読み書きする時に変換されます。検索パ +ターンに <Nul> をマッチさせるには、CTRL-@ か "CTRL-V 000" を入力します。この動 +作はそれほど違和感がないはずです。検索パターンの <Nul> 文字は内部で <NL> に変 +換されています。CTRL-V CTRL-J をタイプした場合も <NL> が入力されるので、ファイ +ル中の <Nul> を検索するのに使えますが、この動作は不自然に感じるかもしれませ +ん。{Vi はファイル中の <Nul> 文字を扱えません} -\<\I\i* もしくは -\<\h\w* -\<[a-zA-Z_][a-zA-Z0-9_]* - 識別子 (例えば C プログラムの中で) + *CR-used-for-NL* +'fileformat' が "mac" の場合、ファイル中の <NL> は内部では <CR> で保存され、 +ディスプレイには "^M" と表示されます。他は、<NL> と <Nul> の場合と同じように扱 +われます。 -\(\.$\|\. \) <EOL> かスペースが後に続くピリオド - "\(. \|\.$\)" は同じものを意味しないということに注意し - てください。なぜなら '\)' の前の '$' は <EOL> ではない - からです。これは Vi コンパチブルのためにそのままにして - あります。 +スクリプトでは、パターン中の <NL> は、文字列中の <NL> とマッチします。"\n" ( +バックスラッシュと n) は <NL> とはマッチしません。バッファ中のテキストとのマッ +チの場合のみ、"\n" は改行とマッチします。 -[.!?][])"']*\($\|[ ]\) 文の最後を検索するパターンです。")" コマンドの定義とほ - とんど同じです。 + *pattern-multi-byte* +マルチバイト文字を使ったパターンは、たいていは、ユーザーが期待したとおりに機能 +します。しかし、不正なバイトでトラブルが起こることもあります。不正なバイトを含 +むパターンはおそらく、決してマッチしません。 -技術的な説明: *NL-used-for-Nul* -ファイルの中の <Nul> 文字は <NL> としてメモリーに保持され、ディスプレイでは -"^@" と表示されます。この変換はファイルを読み込む時と書き込む時に行われます。 -検索パターンで <Nul> にマッチさせるには CTRL-@ もしくは "CTRL-V 000" と打ち込 -むだけでよいです。そしてこれがおそらくあなたが期待するものでしょう。内部ではそ -の文字は検索パターンの中で <NL> に置き換えられます。ちょっと普通ではないところ -があって CTRL-V CTRL-J とタイプすることでも <NL> を挿入します。ですので、ファ -イル中の <Nul> も検索してしまいます。 -{Vi はファイル中の <Nul> 文字をまったく扱えません} +============================================================================== +8. Composing characters *patterns-composing* - *CR-used-for-NL* -'fileformat' オプションに "mac" がセットされているとファイル中の <NL> 文字は -<CR> として保持されます。そしてディスプレイでは "^M" として表示されます。それ -以外はこれは <NL> の <Nul> に対する使い方と似た動作をします。 + */\Z* +パターンに "\Z" が含まれている場合、合成文字は無視されます。そのため、どの合成 +文字が、いくつ結合されていても、基底文字とマッチするだけでマッチします。 +'encoding' が "utf-8" の場合だけ使用します。 + +合成文字と合成されないアイテムの直後に合成文字がある場合、その合成文字を含んで +いるすべての文字がマッチします。 +訳注: x が合成文字として /x/ /\(x\)/ /\zsx/ など + +ドットと合成文字を使うと、どの文字に合成されていても、その合成文字にマッチしま +す。 +訳注: x が合成文字として /.x/ と書く +合成文字の順番を変更して文字の外見が変わらなかったとしても、合成文字の順番は重 +要です。これは将来変更されるかもしれません。 + +============================================================================== +9. Perl のパターンとの比較 *perl-patterns* + +Vim と Perl の正規表現は、とても似ていて、同じ事ができます。違いは表記だけで +す。違いの要約を示します: + +効果 Vim の表記 Perl の表記 ~ +---------------------------------------------------------------- +大文字と小文字を区別しない \c (?i) +大文字と小文字を区別する \C (?-i) +前方参照しないグループ \%(atom\) (?:atom) +最短一致の量指定子 \{-n,m} *?, +?, ??, {}? +幅ゼロの肯定先読み atom\@= (?=atom) +幅ゼロの否定先読み atom\@! (?!atom) +幅ゼロの肯定後読み atom\@<= (?<=atom) +幅ゼロの否定後読み atom\@<! (?<!atom) +強欲な量指定子 atom\@> (?>atom) + +Vim と Perl では文字列中の改行の扱いが少し違います: + +Perl では、'^' と '$' はテキストの最先頭と最末尾にマッチしますが、'm' フラグを +使うと、テキストの中間の改行にもマッチするようになります。's' フラグを使うと、 +'.' が改行にもマッチするようなります。'm' と 's' のフラグは、上記の(?i) フラグ +のように、パターン中で設定することもできます。 + +Vim では、'^' と '$' は常に中間の改行にもマッチします。最先頭と最末尾にはそれ +ぞれ、'\%^' と '\%$' がマッチします。Perl の 's' フラグに対応するのは '\_' 修 +飾子です。'.' や文字クラスの前に '\_' を付けると、改行にもマッチするようになり +ます。 + +次のものは Perl だけの機能です: +- 正規表現中で任意のコードを実行する: (?{perl code}) +- 条件式: (?(condition)true-expr|false-expr) + +次のものは Vim だけの機能です: +- パターンのマジックを変更する: \v \V \m \M + (バックスラッシュだらけになるのを防げます) +- 任意にマッチするアトム列: \%[atoms] +- \& ("\&" と "\|" は、"and" と "or" の関係です。複数のブランチを同じ場所で + マッチさせることができます) +- 行や列を指定してマッチングする: \%5l \%5c \%5v +- 正規表現にマッチしたものとして返される範囲を設定する: \zs \ze + +============================================================================== +10. マッチしたテキストを強調する *match-highlight* + + *:mat* *:match* +:mat[ch] {group} /{pattern}/ + カレントウィンドウ内で強調表示するパターンを定義します。強調に + は {group} が使われます。例: > + :highlight MyGroup ctermbg=green guibg=green + :match MyGroup /TODO/ +< {pattern} の区切りには // 以外の文字を使うことができます。'"' + や '|' などの特別な文字を使うときは注意してください。 + + {group} は、コマンドを実行する前に定義しておく必要があります。 + + {group} の強調は、'hlsearch' の強調よりも優先されます。 + + Note: 'hlsearch' の強調はすべてのウィンドウに適用されますが、 + ":match" はカレントウィンドウだけです。ウィンドウのバッファを + 切り替えても、強調表示は維持されます。 + + 'ignorecase' の設定は使われません。大文字と小文字は区別されま + す。大文字と小文字の違いを無視するには、|/\c| を使います。 + + :match コマンドによって設定された強調グループとパターンを得る + には |matcharg()| を使います。 + + 次の例は、表示桁で 72 列目以降の文字をすべて強調表示します: > + :highlight rightMargin term=bold ctermfg=blue guifg=blue + :match rightMargin /.\%>72v/ +< 表示桁で 7 列目の文字をすべて強調表示するには次のようにします: > + :highlight col8 ctermbg=grey guibg=grey + :match col8 /\%<8v.\%>7v/ +< Note: TAB のような文字は、1 桁を超えて表示されます。 + +:mat[ch] +:mat[ch] none + 以前に定義したマッチパターンを消去します。 + + +:2mat[ch] {group} /{pattern}/ *:2match* +:2mat[ch] +:2mat[ch] none +:3mat[ch] {group} /{pattern}/ *:3match* +:3mat[ch] +:3mat[ch] none + 上述の |:match| と同じですが、別々のマッチを設定します。そのた + め、同時に三つのマッチを表示できます。同じ場所でマッチした場合 + は、数値の低いものが優先されます。 + ":3match" コマンドは |matchparen| プラグインで使用されていま + す。あなたが手動でマッチを設定するときは ":match" を使ってくだ + さい。他のプラグインでは ":2match" を使ってください。 + +訳注: 訳語 +訳注: concat 連接 +訳注: multi >量指定子< 量指定詞 数量子 数量詞 +訳注: ordinary atom 普通のアトム +訳注: a sequence of optionally matched atoms 任意にマッチするアトム列 +訳注: last search pattern 最終検索パターン vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/pi_paren.jax b/ja/pi_paren.jax new file mode 100644 index 000000000..5c669267f --- /dev/null +++ b/ja/pi_paren.jax @@ -0,0 +1,55 @@ +COMMENT: 対応するカッコの強調表示 +STATUS: finished 7.0d +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*pi_paren.txt* For Vim version 7.0d. Last change: 2006 Apr 03 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +対応するカッコの強調表示 *matchparen* + +このプラグインは標準プラグイン |standard-plugin| です。 +'compatible' がオフのときだけ利用できます。 + +このプラグインが読み込まれないようにするには変数 "loaded_matchparen" を設定し +てください: > + :let loaded_matchparen = 1 + +このプラグインはオートコマンドの CursorMoved イベントを使って、対応するカッコ +の強調表示を再設定します。 + +このプラグインの機能を無効にするには次のコマンドを使います: > + + :NoMatchParen + +機能を有効に戻すには次のコマンドを使います: > + + :DoMatchParen + +強調表示には MatchParen が使われます。":highlight" コマンドを使って好きな色を +設定できます。例: > + + :hi MatchParen ctermbg=blue guibg=lightblue + +オプション 'matchpairs' に設定されている文字が強調表示されます。このオプション +を設定し、別の文字を強調表示することができます。Note: 設定しても機能しない文字 +もあります。例えば、シングルクオートやダブルクオートのペアなどは、始点と終点が +同じなので強調表示できません。 + +対応するカッコを探すときには構文強調の属性が使われます。カーソル位置の文字が、 +文字列やコメント以外のときは、文字列やコメントの中は無視されます。名前に +"string" や comment"が含まれている構文強調アイテムはすべて、文字列やコメントと +して扱われます。 + +カーソルの移動が遅くならないように、対応するカッコの検索には次の制限がありま +す: +- ウィンドウに表示されている範囲だけ検索されます。 +- 閉じた折り畳みがあると処理に時間がかかるので、カーソル位置から 100 行以内の + 範囲だけ検索されます。 +- 長い行が構文強調表示されていると処理に時間がかかるので、カーソル位置から + 'synmaxcol' の二倍の範囲の文字だけ検索されます。 + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/pi_tar.jax b/ja/pi_tar.jax new file mode 100644 index 000000000..bc4518267 --- /dev/null +++ b/ja/pi_tar.jax @@ -0,0 +1,64 @@ +COMMENT: tarファイルインターフェース +STATUS: suspend 7.0e +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*pi_tar.txt* For Vim version 7.0e. Last change: 2006 Apr 22 + + +====================+ + | Tar File Interface | + +====================+ + +Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> + (remove NOSPAM from Campbell's email first) +Copyright: The GPL (gnu public license) applies to *tar-copyright* + tarPlugin.vim, and pi_tar.txt. + No warranty, express or implied. Use At-Your-Own-Risk. + +============================================================================== +1. 目次 *tar* *tar-contents* + 1. 目次......................................................|tar-contents| + 2. 使い方....................................................|tar-usage| + 3. オプション................................................|tar-options| + 4. 開発履歴..................................................|tar-history| + +============================================================================== +2. 使い方 *tar-usage* *tar-manual* + + tar ファイルを開くと、このプラグインが動作し、ファイル一覧が表示されます。 + カーソルを動かして、開きたいファイルを選択し、<return> キーを押してくださ + い。編集後に保存することもできます。tar ファイルに新しいファイルを追加する + ことはまだできません。 + +============================================================================== +3. オプション *tar-options* + + これらの変数を <.vimrc> ファイルなどで設定してください。 + 変数 初期設定 説明 + *g:tar_browseoptions* "Ptf" ファイル一覧を取得するために使います + *g:tar_readoptions* "OPxf" tar ファイルを展開するために使います + *g:tar_cmd* "tar" tar プログラムの名前 + *g:tar_writeoptions* "uf" ファイルを更新するために使います + + +============================================================================== +4. 開発履歴 *tar-history* + + v7 Mar 22, 2006 * work on making tar plugin work across network + Mar 27, 2006 * g:tar_cmd now available for users to change the name + of the tar program to be used. By default, of course, + its "tar". + v6 Dec 21, 2005 * writing to files not in directories caused problems - + fixed (pointed out by Christian Robinson) + v5 Nov 22, 2005 * report option workaround installed + v3 Sep 16, 2005 * handles writing files in an archive back to the + archive + Oct 18, 2005 * <amatch> used instead of <afile> in autocmds + Oct 18, 2005 * handles writing to compressed archives + Nov 03, 2005 * handles writing tarfiles across a network using + netrw#NetWrite() + v2 * converted to use Vim7's new autoload feature by + Bram Moolenaar + v1 (original) * Michael Toren (see http://michael.toren.net/code/) + +============================================================================== +vim:tw=78:ts=8:ft=help diff --git a/ja/pi_vimball.jax b/ja/pi_vimball.jax new file mode 100644 index 000000000..4231eaf01 --- /dev/null +++ b/ja/pi_vimball.jax @@ -0,0 +1,92 @@ +COMMENT: Vimballアーカイバ +STATUS: suspend 7.0f +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*pi_vimball.txt* For Vim version 7.0f. Last change: 2006 Apr 27 + + ---------------- + Vimball Archiver + ---------------- + +Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> + (remove NOSPAM from Campbell's email first) +Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* + The VIM LICENSE applies to Vimball.vim, and Vimball.txt + (see |copyright|) except use "Vimball" instead of "Vim". + No warranty, express or implied. + Use At-Your-Own-Risk! + +============================================================================== +1. 目次 *vimball* *vimball-contents* + + 1. 目次..........................................: |vimball-contents| + 2. 使い方........................................: |vimball-manual| + 3. 開発履歴......................................: |vimball-history| + + +============================================================================== +2. 使い方 *vimball-manual* + + *:MkVimball* + :[range]MkVimball[!] filename + + vimball ファイルに含めるファイルのパスを書いた行を指定してこのコマンド + を実行します。例: > + plugin/something.vim + doc/something.txt +< これらの行を指定して MkVimball を呼び出すと "filename.vba" というファ + イルが作成されます。このファイルは、Vimball.vim を使うことで、元のファ + イルに戻すことができます。"filename.vba" がすでに存在する場合、 + MkVimball は警告メッセージを表示し、ファイルを作成しません。Note: ファ + イルのパスは、.vim (vimfile) ディレクトリからの相対パスで指定します。 + ファイルはそのディレクトリの中に置いてください。vimball プラグインは、 + 'runtimepath' から実際に存在するディレクトリを探し、最初に見つかったも + のを相対パスのルートとして使います。絶対パスを使うことはできません。 + + 感嘆符 (!) を付けた場合は、"filename.vba" が存在した場合でもファイルが + 作成されます。この動作は |:w| と同じです。 + + *vimball-extract* + vim filename.vba + + ファイルを展開するには、Vimball ファイルを Vim で開き、そのファイルを + 実行 (:source %) してください。 + + Vimball ファイルの一行目が "Vimball Archiver by Charles E. Campbell, + Jr., Ph.D." となっている場合のみ、ファイルを展開できます。 + + :VimballList *vimball-vimballlist* + + このコマンドを実行すると、Vimball ファイルに含まれているファイルと、そ + れぞれの行数が表示されます。 + + +============================================================================== +3. 開発履歴 *vimball-history* {{{1 + + 11 : Apr 27, 2006 * VimballList would create missing subdirectories that + the vimball specified were needed. Fixed. + 10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of + functions. Included some more settings in them + which frequently cause trouble. + 9 : Apr 26, 2006 * various changes to support Windows prediliction + for backslashes and spaces in file and directory + names. + 7 : Apr 25, 2006 * bypasses foldenable + * uses more exe and less norm! (:yank :put etc) + * does better at insuring a "Press ENTER" prompt + appears to keep its messages visible + 4 : Mar 31, 2006 * BufReadPost seems to fire twice; BufReadEnter + only fires once, so the "Source this file..." + message is now issued only once. + 3 : Mar 20, 2006 * removed query, now requires sourcing to be + extracted (:so %). Message to that effect + included. + * :VimballList now shows files that would be + extracted. + 2 : Mar 20, 2006 * query, :UseVimball included + 1 : Mar 20, 2006 * initial release + + +============================================================================== +vim:tw=78:ts=8:ft=help:fdm=marker diff --git a/ja/pi_zip.jax b/ja/pi_zip.jax new file mode 100644 index 000000000..9d3b5d50f --- /dev/null +++ b/ja/pi_zip.jax @@ -0,0 +1,58 @@ +COMMENT: zipファイルインターフェース +STATUS: suspend 7.0e +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*pi_zip.txt* For Vim version 7.0e. Last change: 2006 Apr 22 + + +====================+ + | Zip File Interface | + +====================+ + +Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> + (remove NOSPAM from Campbell's email first) +Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr {{{1 *zip-copyright* + Permission is hereby granted to use and distribute this code, + with or without modifications, provided that this copyright + notice is copied with it. Like anything else that's free, + zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is* + and it comes with no warranty of any kind, either expressed or + implied. By using this plugin, you agree that in no event will + the copyright holder be liable for any damages resulting from + the use of this software. + +============================================================================== +1. 目次 *zip* *zip-contents* + 1. 目次......................................................|zip-contents| + 2. 使い方....................................................|zip-usage| + 3. 開発履歴..................................................|zip-history| + +============================================================================== +2. 使い方 *zip-usage* *zip-manual* + + zip ファイルを開くと、このプラグインが動作し、ファイル一覧が表示されます。 + カーソルを動かして、開きたいファイルを選択し、<return> キーを押してくださ + い。編集後に保存することもできます。zip ファイルに新しいファイルを追加する + ことはまだできません。 + +============================================================================== +3. 開発履歴 *zip-history* + v8 Apr 10, 2006 * Bram Moolenaar reported that he received an error message + due to "Pattern not found: ^.*\%0c"; this was caused by + stridx finding a Name... at the beginning of the line; + zip.vim tried 4,$s/^.*\%0c//, but that doesn't work. + Fixed. + v7 Mar 22, 2006 * escaped some characters that can cause filename handling + problems. + v6 Dec 21, 2005 * writing to files not in directories caused problems - + fixed (pointed out by Christian Robinson) + v5 Nov 22, 2005 * report option workaround installed + v3 Oct 18, 2005 * <amatch> used instead of <afile> in autocmds + v2 Sep 16, 2005 * silenced some commands (avoiding hit-enter prompt) + * began testing under Windows; works thus far + * filetype detection fixed + Nov 03, 2005 * handles writing zipfiles across a network using + netrw#NetWrite() + v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing + +============================================================================== +vim:tw=78:ts=8:ft=help diff --git a/ja/print.jax b/ja/print.jax new file mode 100644 index 000000000..0295dc8ed --- /dev/null +++ b/ja/print.jax @@ -0,0 +1,744 @@ +COMMENT: 印刷機能 +STATUS: finished 7.0e +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*print.txt* For Vim version 7.0e. Last change: 2006 Apr 21 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +印刷 *printing* + +1. はじめに |print-intro| +2. 印刷オプション |print-options| +3. PostScript 印刷 |postscript-printing| +4. PostScript 印字エンコーディング |postscript-print-encoding| +5. PostScript CJK 印刷 |postscript-cjk-printing| +6. PostScript 印刷トラブルシューティング|postscript-print-trouble| +7. PostScript ユーティリティ |postscript-print-util| +8. 改ページ文字 |printing-formfeed| + +{Vi にはない機能です} +{|+printer| が有効な場合のみ利用できます} + +============================================================================== +1. はじめに *print-intro* + +MS-Windows では、インストールされているプリンタを使ってテキストを印刷すること +ができます。他のシステムでは PostScript ファイルが生成されます。そのファイルは +直接 PostScript プリンタに送ることができます。非PostScript プリンタを使うには +ghostscript のようなプログラムが必要です。 + + *:ha* *:hardcopy* *E237* *E238* *E324* +:[range]ha[rdcopy][!] [arguments] + 範囲 [range] の行 (省略時はファイル全体) をプリンタへ + 出力します。 + + MS-Windows ではプリンタの選択やページサイズの設定など + をするためのダイアログが表示されます。ダイアログを省略 + するには [!] を付けてください。その場合、'printdevice' + に設定したプリンタが使われます。未設定の場合はシステム + 標準のプリンタが使われます。 + + MS-Windows 以外のシステムでは、PostScript が一時ファイ + ルに書き込まれ、それを実際に印刷するために 'printexpr' + が実行されます。そのとき、[arguments] は |v:cmdarg| と + して 'printexpr' の中で使うことができます。[arguments] + は無視することもできます。用紙サイズや両面印刷などの指 + 定を 'printoptions' に設定できます。 + +:[range]ha[rdcopy][!] >{filename} + 上記と同じですが、PostScript を {filename} に保存しま + す。 + "%" のような文字は展開されます |cmdline-special|。 + 注意: すでにファイルが存在する場合は、警告なしに上書き + されます。 + {|+postscript| が有効な場合のみ利用できます} + MS-Windows では、プリンタドライバの "ファイルに保存" + の機能を使ってください。 + +印刷している間、印刷中のページ番号や進行率などの印刷状況が表示されます。印刷を +中止するには中断キーを押してください (CTRL-C、MS-Windows では CTRL-Break)。 + +プリンタの出力は 'printfont' と 'printoptions' の設定で制御できます。ページ +ヘッダの書式は 'prinhtheader' に設定します。 + +ファイルの印刷は常に余白の設定に影響を受けます。カレントウィンドウの'wrap' や +'linebreak' の設定は影響しません。行の折り返しをしないようにするには +'printoptions' の設定で "wrap" をオフにしてください。 +印刷には現在の強調表示の色が使われます。次のように処理されます: +1) 通常テキストの背景色は常に白色で出力されます (つまり白紙)。 +2) 通常テキストと同じ前景色の文字や、白色の文字は、それが視認できるようにする + ために、黒色で出力されます。 +3) 'background' が "dark" の場合、文字色が明るすぎて、白紙に印刷するとはっきり + 視認できなくなるため、文字色は暗い色に調整されます。 + +============================================================================== +2. 印刷オプション *print-options* + +印刷の動作を変更するためのオプションについて説明します。設定についての大まかな +説明は |options.txt| を参照してください。 + + *pdev-option* +'printdevice' 'pdev' 文字列 (初期値は空) + グローバル設定 +プリンタの名前を設定します。|:hardcopy| が ! 付きで実行され、プリンタ選択ダイ +アログが省略されたときに使われます。Win32 では、標準印刷ダイアログで表示される +プリンタの名前を正確に指定してください。 +このオプションが空のときに ":hardcopy!" が実行されると、システム標準のプリンタ +が使われます。 + + *penc-option* *E620* +'printencoding' 'penc' 文字列 (初期値は空。あるいは次のとおり: + Windows, OS/2: cp1252, + Macintosh: mac-roman, + VMS: dec-mcs, + HPUX: hp-roman8, + EBCDIC: ebcdic-uk) + グローバル設定 +印刷に使う文字エンコーディングを設定します。'runtimepath' の "print" ディレク +トリにある、このオプションに対応した印刷文字エンコーディングファイルが印刷に使 +われます。 + +このオプションには |encoding-names| に列挙されているエンコーディングを設定でき +ます。エンコーディング名は Vim が規定している名前に変換されます。詳しくは +'encoding' を参照してください。Vim が認識できないエンコーディング名は、すべて +小文字に変換され、アンダースコアは '-' に置換されます。 + +'printencoding' が空、もしくは印刷エンコーディングファイルが見つからなかった場 +合は、'encoding' に対応した印刷エンコーディングファイルを探します +(|+multi_byte| が有効で、8-bit エンコーディングが設定されている場合のみ)。それ +でも印刷エンコーディングファイルが見つからなかった場合は、"latin1" の印刷エン +コーディングファイルが使われます。 + +'encoding' にマルチバイトエンコーディングが設定されている場合、印刷のときに、 +'encoding' から印刷エンコーディングに文字が変換されます ('printencoding' が空 +のときは latin1 に変換されます)。印刷エンコーディングが latin1 以外のときは、 +|+iconv| が有効になっている必要があります。エンコーディングの変換が利用できな +いときは、印刷は失敗します。変換できない文字は、逆さクエスチョンマークに置換さ +れます。 + +Mac、VMS、HPUX、EBCDIC、環境の標準エンコーディングのための、印刷エンコーディン +グファイルが用意されています。それは初期設定として使われます。Windows と OS/2 +では、コードページ1252 の印刷エンコーディングファイルが標準で使われます。 + + *pexpr-option* +'printexpr' 'pexpr' 文字列 (初期設定は下記参照) + グローバル設定 +|:hardcopy| で PostScript を印刷するためのスクリプトを設定します。 +印刷する PostScript ファイルは |v:fname_in| に設定されます。 +":hardcopy" コマンドの引数は |v:cmdarg| に設定されます。 +印刷をした後で、スクリプトから PostScript ファイルを削除してください。 +エラーが起きたときは、スクリプトは 0 以外の値を返す必要があります。 +エラーがないときは、0 か 空文字列を返してください。 +MS-Windows と VMS 以外の環境の初期設定では、単純に "lpr" を使ってファイルを印 +刷します: > + + system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) + . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error + +MS-Dos、MS-Windows、OS/2、での初期設定は、指定されている印刷デバイスにファイル +をコピーします: > + + system('copy' . ' ' . v:fname_in . (&printdevice == '' + ? ' LPT1:' : (' \"' . &printdevice . '\"'))) + . delete(v:fname_in) + +VMS での初期設定は、標準の印刷デバイスか、指定されている印刷デバイスにファイル +を送ります: > + + system('print' . (&printdevice == '' ? '' : ' /queue=' . + &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + +このオプションを設定するときは、関数を使うと、スペースをエスケープしなくてもい +いので簡単です。例: > + + :set printexpr=PrintFile(v:fname_in) + :function PrintFile(fname) + : call system("ghostview " . a:fname) + : call delete(a:fname) + : return v:shell_error + :endfunc + +ファイルを読み込む前に制御を返す印刷プログラムもあるので注意してください。ファ +イルをすぐに削除してしまうと、印刷できないかもしれません。ほとんどの場合、その +ようなプログラムには、印刷した後でファイルを削除するオプションが用意されていま +す。 + *E365* +スクリプトを実行できなかったり、スクリプトが 0 以外の値を返したときは、エラー +メッセージが表示されます。その場合は、Vim が PostScript ファイルを削除します。 +MS-Windows 以外のシステムの初期設定では、"v:shell_error" を足す、というトリッ +クを使っています。"v:shell_error" には system() の呼び出しでエラーが起きたとき +に 0 以外の値が入ります。 + +セキュリティ上の理由により、このオプションは、|modeline| や |sandbox| の中では +設定できません。 + + *pfn-option* *E613* +'printfont' 'pfn' 文字列 (初期設定は "courier") + グローバル設定 +|:hardcopy| コマンドの出力で使われるフォント名を設定します。このオプションは +'guifont' と同じ書式で指定します。ただし、フォントは一つだけ指定可能です。 +"guifont=*" と同じ特別な指定方法は使えません。 + +Win32 GUI では、'guifont' と同じように、フォントの属性を追加指定できます。 + +他のシステムでは、"h11" という指定のみ受け付けます。"11" の所にはフォントのサ +イズをポイントで指定します。省略時のフォントサイズは 10 です。 + + *pheader-option* +'printheader' 'pheader' 文字列 (初期値は "%<%f%h%m%=Page %N") + グローバル設定 +|:hardcopy| の出力で使われるヘッダーの書式を設定します。このオプションは +'statusline' と同じ書式で指定します。|+statusline| が無効な場合には、このオプ +ションは機能しません。その場合は、初期設定の、ページ番号を表示するだけのシンプ +ルなヘッダが使われます。 + + *pmbcs-option* +'printmbcharset' 'pmbcs' 文字列 (初期設定は "") + グローバル設定 +|:hardcopy| で漢字 (CJK文字) を出力するための文字セットを設定します。 +現在 Vim は、以下で定義されている文字セットを認識します。 + + 設定値 説明 ~ + Chinese GB_2312-80 + (Simplified) GBT_12345-90 + MAC Apple Mac Simplified Chinese + GBT-90_MAC GB/T 12345-90 Apple Mac Simplified + Chinese + GBK GBK (GB 13000.1-93) + ISO10646 ISO 10646-1:1993 + + Chinese CNS_1993 CNS 11643-1993, Planes 1 & 2 + (Traditional) BIG5 + ETEN Big5 with ETen extensions + ISO10646 ISO 10646-1:1993 + + Japanese JIS_C_1978 + JIS_X_1983 + JIS_X_1990 + MSWINDOWS Win3.1/95J (JIS X 1997 + NEC + + IBM extensions) + KANJITALK6 Apple Mac KanjiTalk V6.x + KANJITALK7 Apple Mac KanjiTalk V7.x + + Korean KS_X_1992 + MAC Apple Macintosh Korean + MSWINDOWS KS X 1992 with MS extensions + ISO10646 ISO 10646-1:1993 + +上記の文字セットと 'printencoding' は、決められた組合せのみ利用可能です。可能 +な組合せは以下のとおり: + + euc-cn gbk ucs-2 utf-8 ~ + Chinese GB_2312-80 x + (Simplified) GBT_12345-90 x + MAC x + GBT-90_MAC x + GBK x + ISO10646 x x + + euc-tw big5 ucs-2 utf-8 ~ + Chinese CNS_1993 x + (Traditional) BIG5 x + ETEN x + ISO10646 x x + + euc-jp sjis ucs-2 utf-8 ~ + Japanese JIS_C_1978 x x + JIS_X_1983 x x + JIS_X_1990 x x x + MSWINDOWS x + KANJITALK6 x + KANJITALK7 x + + euc-kr cp949 ucs-2 utf-8 ~ + Korean KS_X_1992 x + MAC x + MSWINDOWS x + ISO10646 x x + +日本語のテキストを印刷するには、次のように、適切なエンコーディングと文字セット +を設定してください: > + :set printencoding=euc-jp + :set printmbcharset=JIS_X_1983 + +'printmbcharset' が上記のどれでもないときは、独自のマルチバイト文字セットであ +ると判断されます。'printencoding' と互換性があるかどうかはチェックされません。 +Vim は、'runtimepath' の "print" ディレクトリから、指定された文字セット用の +ファイルを探します。 + + *pmbfn-option* +'printmbfont' 'pmbfn' 文字列 (初期値は "") + グローバル設定 +|:hardcopy| で漢字 (CJK) を出力するために使われるフォントのリストを設定しま +す。リストはコンマで区切ります。フォント名には、そのフォントがどのスタイルで使 +われるかを指示する文字を前置します: + + r:{font-name} 普通文字のフォント + b:{font-name} 太字 (bold) のフォント + i:{font-name} 斜体文字 (italic) のフォント + o:{font-name} 太字斜体文字 (bold-italic) のフォント + +CJK 印刷をするには r: 指定のフォントを必ず設定してください。その他のフォントの +指定は省略できます。省略した場合は次のとおりに処理されます: + + b: がないときは、r: を使います。 + i: がないときは、r: を使います。 + o: がないときは、b: を使います。 + +CJK フォントが ASCII 文字を持っていない場合があります。また、CJK の ASCII 文字 +のうちいくつかの文字が、通常の ASCII 文字とは違う場合があります。ASCII コード +の範囲の文字をどのように印刷するかを指定することができます。 + + c:yes ASCII 文字を Courier フォントで出力します。 + c:no (初期値) + + a:yes ASCIIコードの範囲を ASCII 文字セットで出力します。 + a:no (初期値) + +次の例では、二つのマルチバイトフォントを指定しています。一つは普通文字と斜体文 +字、もう一つは太字と太字斜体文字の印刷に使われます。そして、ASCII コードの範囲 +の文字は、国内標準文字セットを使って、Courier で印刷されます: > + :set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,c:yes +< + *popt-option* +'printoptions' 'popt' string (default "") + global +|:hardcopy| の出力を制御するためのオプションのリストを設定します。リストはコン +マで区切ります: + + left:{spec} 左余白 (標準設定: 10pc) + right:{spec} 右余白 (標準設定: 5pc) + top:{spec} 上余白 (標準設定: 5pc) + bottom:{spec} 下余白 (標準設定: 5pc) + {spec} には数値を指定します。数値には単位を付けてくだ + さい。インチなら "in"、ポイントなら "pt" (1 ポイントは + 1/72 インチ)、ミリメートルなら "mm"、用紙サイズに対す + る割合なら "pc"、を指定します。 + (例示のための) 例: + left:2in,top:30pt,right:16mm,bottom:3pc + 上記以外の単位を指定した場合は標準設定が使われます。エ + ラーは表示されません。 + + header:{nr} ヘッダーの印刷に使う行数を指定します。 + 実際には最初の行だけに文字が印刷されます。つまり、{nr} + に 2 を指定した場合は空行が印刷されます。ヘッダーの書 + 式は 'printheader' で指定します。 + header:0 ヘッダーを印刷しません。 + header:2 (標準設定) ヘッダーの印刷に二行使います。 + + syntax:n 構文強調を使わない。大きなファイルを印刷するときでも、 + 速く印刷できます。 + syntax:y 構文強調を使う。 + syntax:a (標準設定) カラー印刷かグレースケール印刷が可能なプリンタを使って + いるようなら、構文強調を使います。 + + number:y 行番号を印刷する。 + number:n (標準設定) 行番号を印刷しない。 + + wrap:y (標準設定) 長い行を折り返す。 + wrap:n 長い行を切り詰める。 + + duplex:off 片面印刷。 + duplex:long (標準設定)両面印刷 (可能なら)。長い辺で閉じます。 + duplex:short 両面印刷 (可能なら)。短い辺で閉じます。 + + collate:y (標準設定) ページを順番にそろえる: 1 2 3, 1 2 3, 1 2 3 + collate:n そのまま: 1 1 1, 2 2 2, 3 3 3 + + jobsplit:n (標準設定) すべてを一回で印刷する。 + jobsplit:y 印刷ジョブを部ごとに分ける。N-up 印刷をする場合に便利 + です。 + + portrait:y (標準設定) 縦置きの用紙に印刷する。 + portrait:n 横置きの用紙に印刷する。 + *a4* *letter* + paper:A4 (標準設定) 用紙サイズ: A4 + paper:{name} 次の中から用紙サイズを選んでください: + {name} センチメートル単位 インチ単位 ~ + 10x14 25.4 x 35.57 10 x 14 + A3 29.7 x 42 11.69 x 16.54 + A4 21 x 29.7 8.27 x 11.69 + A5 14.8 x 21 5.83 x 8.27 + B4 25 x 35.3 10.12 x 14.33 + B5 17.6 x 25 7.17 x 10.12 + executive 18.42 x 26.67 7.25 x 10.5 + folio 21 x 33 8.27 x 13 + ledger 43.13 x 27.96 17 x 11 + legal 21.59 x 35.57 8.5 x 14 + letter 21.59 x 27.96 8.5 x 11 + quarto 21.59 x 27.5 8.5 x 10.83 + statement 13.97 x 21.59 5.5 x 8.5 + tabloid 27.96 x 43.13 11 x 17 + + formfeed:n (標準設定) 改ページ文字 (0x0c) を普通の文字として処理します。 + formfeed:y 改ページ文字を処理し、現在の行を新しいページに印刷しま + す。 + +設定を省略した場合は、それぞれの設定項目で (標準設定) となっているものが使われ +ます。設定ダイアログでプリンタの選択やオプションを設定したときなど、指定した設 +定が使われないこともあります。 +例: > + :set printoptions=paper:letter,duplex:off + +============================================================================== +3. PostScript 印刷 *postscript-printing* + *E455* *E456* *E457* *E624* +十分なディスクスペースがあれば、問題なく PostScript ファイルを出力できます。ラ +ンタイムファイルを正しくインストールする必要もあります (ヘルプを見れるなら正し +くインストールされているでしょう)。 + +現在、PostScript 印刷には次の制限があります: + +- 'printfont' - フォント名は無視され、フォントサイズだけが使われます。(Courier + ファミリが常に使われます。これはすべての PostScript プリンタで利用可能なはず + です)。 + +- 'printoptions' - PostScript は両面印刷の設定を使って出力されますが、プリンタ + によっては機能しない場合があります。両面印刷をサポートしていないプリンタの場 + 合、両面印刷の設定は静かに無視されます。何も印刷しないプリンタもあります。 + +- 8-bit サポート。8-bit エンコーディングの印刷はサポートされていますが、いくつ + かの文字が印刷されない場合もあります。文字が印刷されるかどうかは、プリンタの + フォントにその文字があるかどうかに依存しています。印刷できない文字は逆さのク + エスチョンマークに置き換えられます。その文字もない場合にはスペースに置き換え + られます。新しい Courier フォントファミリをインストールすれば、エンコーディ + ングのすべての文字を印刷できるようになるかもしれません。 + +- マルチバイトサポート。現在、Vim はマルチバイト文字を 'printencoding' で指定 + された 8-bit エンコーディングに変換しようとします ('printencoding' が空のと + きは latin1 が使われます)。変換できない文字は未知の文字として印刷されます。 + マルチバイトから 8-bit エンコーディングへの変換を実行できないときは、印刷は + 失敗します。 + +============================================================================== +4. 独自 8-bit 印字エンコーディング *postscript-print-encoding* + *E618* *E619* +独自の 8-bit 印字エンコーディングを使って 8-bit テキストを印刷することができま +す。それには PostScript フォントエンコーディングベクタを自分で定義する必要があ +ります。フォントエンコーディングベクタの定義方法はこのヘルプの範囲外なので説明 +しません。詳細は Addison-Wesley から出版されている PostScript リファレンスマ +ニュアル第三版を参照してください。http://www.adobe.com/ には PDF ファイルが用 +意されています。次に、独自の印字エンコーディングを使用する方法を説明します。 +訳注: PostScriptリファレンスマニュアル第3版 ASCII電子出版シリーズ +訳注: Adobe Systems (著), 桑沢 清志 (翻訳) +訳注: ISBN: 4756138225 + +i. エンコーディングベクタのためのユニークな名前を決めてください。Vim が使う + 標準エンコーディング名 (|encoding-names|参照) は使えません。他の人が使わ + ないような名前を付けてください。 +ii. $VIMRUNTIME/print/latin1.ps をあなたの 'runtimepath' の print ディレクト + リにコピーし、ファイル名を自分のエンコーディング名に変更してください。 +iii. 名前を変更した latin1.ps を編集し、ファイル内に表れる latin1 という文字を + すべて、あなたのエンコーディング名に置換してください (%%Title: で始まる行 + も忘れずに)。そして、グリフ名の配列を変更し、新しいエンコーディングベクタ + を定義してください。配列の長さは 256 でなければいけません。それ以外では印 + 刷できません。 +iv. 'printencoding' に新しい印字エンコーディングを設定し印刷します。あなたの + 独自印字エンコーディングを使って印刷されます。 + +リソースファイルの最初の三行の内容や順番が変更されているとエラーが表示されま +す。%%Title: と %%Version: で始まる行は変更しても構いません。 + +PostScript を知っている人への技術的な説明。Vim は印刷に使うエンコーディングと +同じ名前のファイルを探します。そのファイルは /Vim-name という名前の新しい +PostScript エンコーディングを定義しています。name の部分は Vim が使用する印字 +エンコーディングの名前です。 + +============================================================================== +5. PostScript CJK 印刷 *postscript-cjk-printing* + *E673* *E674* *E675* + +中国語、日本語、韓国語のファイルを印刷することができます。CJK ファイルを正しく +印刷するために、いくつかのオプションを設定する必要があります。 + +日中韓の国々には標準文字セットとエンコーディングがたくさんあります。印刷するに +は、その両方を正しく設定する必要があります。CJK フォントには一般的に、斜体グリ +フという概念がありません。また、強調して印刷するために、字間や文字の太さが違う +フォントを使います。適切なフォントで印刷するためには適切な設定が必要です。 + +エンコーディングと文字セットはオプションの 'printencoding' と 'printmbcharset' +で指定します。'printencoding' を設定しなかった場合は、'encoding' が使われま +す。'printencoding' を設定した場合は、印刷する文字が、指定したエンコーディング +に変換されます。エンコーディングには、ファイルを印刷するための文字セットと互換 +性のあるエンコーディングを設定してください。あるいは、互換性のない文字が印刷さ +れないようなエンコーディングを設定してください。 + +CJK 印刷に使うフォントは 'printmbfont' に設定します。このオプションでは、構文 +強調の、普通の文字、斜体文字、太字、斜体太字、に対して別々のフォントを指定でき +ます。 + +CJK フォントは Vim に付属していません。韓国語、日本語、繁体中国語、の無料で使 +えるフォントが次の場所にあります: + + http://examples.oreilly.com/cjkvinfo/adobe/samples/ + +フォントについての説明は readme ファイルを読んでください: + + http://examples.oreilly.com/cjkvinfo/adobe/00README + +フォントのインストール方法については、プリンタの説明書を読んでください。 + +CJK フォントにはたくさんのグリフが含まれていますが、国内標準文字セットだけを +持っているフォントも珍しくありません。ASCII 文字を含んでいないこともよくありま +す。もし、半角英数が印刷されないときは、'printmbfont' を設定し、Courierフォン +トを使って、半角 ASCII 文字を印刷するようにしてください。他にも印刷されない文 +字がある場合は、別のフォントを探す必要があるでしょう。 + +ASCII 文字についてもう一つ。国内標準文字セットによっては、ASCII 文字の範囲に +ASCII 文字とは別の文字を定義している場合があります。そのため、国内標準文字セッ +トを使って ASCII テキストを印刷すると、予期しない文字が印刷されるかもしれませ +ん。ASCII コードの範囲が ASCII 文字として印刷されるようにするには、 +'printmbfont' を設定してください。 + +独自のマルチバイト文字セットを定義することができまが、それは簡単ではありませ +ん。その方法についてはこのヘルプの範囲を越えるので説明しません。CMap +(character map) ファイルについての詳細は、'Adobe CMap and CIDFont Files +Specification, Version 1.0' を参照してください。http://www.adobe.com に PDF +ファイルがあります。 + +============================================================================== +6. PostScript 印刷トラブルシューティング *postscript-print-trouble* + *E621* +ほとんどの場合、印刷されない、ということだけが、PostScript印刷で問題が起きてい +る合図です。 運が良ければ、どの PostScript 命令がエラーを起こしたのかが印刷さ +れるかもしれません。 + +印刷が失敗する原因として考えられるものをいくつか上げます: + +- prolog リソースファイルのバージョンが間違っている。prolog リソースファイルに + は、印刷に必要な PostScript が含まれています。Vim のバージョンに対応したリ + ソースファイルが必要です。ランタイムファイルが正しくインストールされているこ + とを確認してください。また、古いバージョンの prolog ファイルが 'runtimepath' + ディレクトリに残っている場合は除外してください。 + +- 用紙サイズ。対応していない用紙サイズを指定すると、印刷を中断する PostScript + プリンタがあります。標準設定では、A4 用紙が使われます。プリンタが対応してい + る用紙サイズを確認して 'printoptions' を設定してください。用紙サイズの名前が + 分からない場合は、使用する紙の寸法を計り、'printoptions' の説明にある用紙サ + イズと見比べて、一番近いものを選択してください。 + Note: 実際の用紙サイズは、一覧されているものとわずかに違うことがあります。 + 十分に近い用紙サイズがない場合は、下記で説明している PSUtils の psresize を + 試してください。 + +- 両面印刷 (duplex)。両面印刷に対応していないほとんどの PostScript プリンタ + は、両面印刷の命令を無視しますが、印刷を中断してしまう PostScript プリンタも + あります。その場合は、両面印刷の設定をオフにして印刷してください。 + Note: PSUtils を使って手動で両面印刷することもできます。下記参照。 + +- 丁合 (collate、用紙の整列)。複数部印刷する場合、丁合をサポートしていないほと + んどの PostScript プリンタは、丁合の命令を無視しますが、そうでないプリンタも + あります。その場合は、丁合の設定をオフにして印刷してください。 + +- 構文強調。構文強調が有効になっているとき、使われている色が黒一色だけの場合で + も、生成された PostScript ファイルがモノクロプリンタで印刷されないように、印 + 刷を中断する印刷管理プログラムがあります。その場合は、構文強調をオフにして印 + 刷してください。 + +安全な printoptions の設定は次のようなものです: > + + :set printoptions=paper:A4,duplex:off,collate:n,syntax:n + +"A4" の部分を適切な用紙サイズに変更してください。 + +============================================================================== +7. PostScript ユーティリティ *postscript-print-util* + +7.1 Ghostscript + +Ghostscript は PostScript と PDF のインタプリタです。PostScript と PDF ファイ +ルを表示したり、非PostScript プリンタで印刷することができます。PostScript から +PDF ファイルを生成することもできます。 + +Ghostscript はさまざまな環境で動作します。 + +次の三つのバージョンが利用可能です: + +- AFPL Ghostscript (かつての Aladdin Ghostscript)。非商用利用ではフリー。 + 次の場所から入手できます: + + http://www.cs.wisc.edu/~ghost/ + +- GNU Ghostscript。 GNU General Public License に従って利用可能。 + 次の場所から入手できます: + + ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/ + +- 商用利用可能な販売品。 + +Ghostscript についての詳細は次の場所を見てください: + + http://www.ghostscript.com/ + +標準の配布物には、たくさんの非PostScript プリンタのサポートが含まれています。 +あなたのプリンタがサポートされていない場合は、Ghostscript のサイトを確認してみ +てください。 + + +7.2 Ghostscript プレビューア + +Ghostscript の操作方法はとても原始的なので、たくさんの GUI フロントエンドが作 +成されました。PostScript ファイルを選択したり、いろんな大きさで表示したり、印 +刷したりすることが簡単にできます。詳細は付属の説明書を参照してください。 + +X11 + +- Ghostview。次の場所から入手できます: + + http://www.cs.wisc.edu/~ghost/gv/ + +- gv。Ghostview から派生。次の場所から入手できます: + + http://wwwthep.physik.uni-mainz.de/~plass/gv/ + + (最新版ではないかもしれませんが) 次の場所からも入手できます: + + http://www.cs.wisc.edu/~ghost/gv/ + +OpenVMS + +- 次のものが利用できます (試してません): + + http://wwwthep.physik.uni-mainz.de/~plass/gv/ + +Windows and OS/2 + +- GSview。次の場所から入手できます: + + http://www.cs.wisc.edu/~ghost/gsview/ + +DOS + +- ps_view。次の場所から入手できます: + + ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/ + ftp://ftp.dante.de/tex-archive/support/ps_view/ + +Linux + +- GSview。Windows や OS/2 で人気のあるプレビューアの Linux 版。 + 次の場所から入手できます: + + http://www.cs.wisc.edu/~ghost/gsview/ + +- BMV。Ghostview や gv とは違い、X ではなく、svgalib を使用します。 + 次の場所から入手できます: + + ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz + + +7.3 PSUtils + +PSUtils は。 PostScript ドキュメントを処理するための便利なプログラム集です。た +くさんのプラットフォーム向けのバイナリが配布されています。ソースも公開されてい +ます。PSUtils は次の場所にあります: + + http://knackered.org/angus/psutils + +次のものは特に便利です: + +- psnup. PS ファイルを変換し、N-up 印刷する。 +- psselect. 印刷する範囲や順番を選択する。 +- psresize. 用紙サイズを変更する。 +- psbook. 製本のためにレイアウトを調整する。 + +これらのプログラムの出力は、他のプログラムに入力にできるので、複雑な印刷物も作 +成できます。 + + +N-UP 印刷 +訳注: 複数のページを一ページにまとめて印刷。 + +Vim が生成した PostScript ファイルを psnum で処理し、n-up 版の PostScript を作 +成できます。2-up 印刷をするには、まず、次のように PostScript を作成します: > + + :hardcopy > test.ps + +そして、シェルのコマンドラインで次のコマンドを実行します: > + + psnup -n 2 test.ps final.ps + +Note: psnum が生成したファイルを Ghostscript プレビューアで表示すると警告が表 +示されることがありますが、無視して問題ないでしょう。 + +そして、環境に合わせた方法で、final.ps を PostScript プリンタで印刷します。(印 +刷後、必要なら二つの PostScript ファイルを自分で削除してください)。'printexpr' +を設定し、印刷前にこの特別な処理をするように設定できます。 + + +両面印刷の代用品 + +PSUtils の psselect を使って、両面印刷を安価に実現できます。このユーティリティ +の引数に -e と -o を指定して、偶数ページと奇数ページを別々のファイルに出力でき +ます。 + +まず、|:hardcopy| コマンドで PostScript ファイルを生成します。そして、そのファ +イルを偶数ページと奇数ページに分けます: > + + psselect -o test.ps odd.ps + psselect -e test.ps even.ps + +次に、環境に合わせた方法で odd.ps を印刷します。そして、できあがった印刷物を +ひっくり返し、再びプリンタの給紙トレーにセットし、even.ps を印刷します。これ +で、偶数ページが奇数ページの裏面に印刷されます。 + +次のことを気に留めておいてください: + +1. 最初のページの位置。奇数ページを印刷したときに、最初のページが印刷物の上面 + にある場合、偶数ページの印刷順を逆にする必要があります。これは、psselect + に-rを指定すればできます。これで二ページ目が一ページ目の裏に印刷されます。 + Note: 元の PostScript ファイルのページ数が奇数の場合は、偶数ページを逆順に + 印刷するよりも、奇数ページを逆順に印刷したほうがいいでしょう。 + +2. 紙のひっくり返し方。奇数ページを印刷した紙をひっくり返すとき、水平方向 (長 + い辺に沿って)、または垂直方向 (短い辺に沿って) に裏返すだけでなく、180 度回 + 転させる必要があるかもしれません。これはプリンタによって違います。デスク + トップ用インクジェットプリンタであれば、紙の通り道が見えないスモールオフィ + ス用レーザープリンタとは違い、確認しやすいでしょう。 + + +============================================================================== +8. 改ページ文字 *printing-formfeed* + +標準設定では、Vim は |formfeed| 制御文字 (改ページ文字) の特別な処理を一切しま +せん。'printoptions' の formfeed を設定すると、Vim は改ページ文字を認識するよ +うになります。改ページ文字を含む行は新しいページの一行目に印刷されます。改ペー +ジ文字を使って原始的な印刷制御ができますが、いくつか気を付けることがあります。 + +たとえ行頭の文字が改ページ文字であっても、その行は常に通常の位置から (設定に +よっては行番号をともなって) 印刷されます。そのため、そのような行が (たまたま) +ページの一行目だった場合、空白のページが印刷されます。 + +行番号は、改ページ文字を含む行の印刷が開始したところに印刷されるので、その行の +(改ページ文字以降の) 残りの部分が新しいページに印刷されるときには、行番号は印 +刷されません ('printoptions' の wrap がオンのときに、長い行が折り返して印刷さ +れる場合も同じです)。 + +改ページ文字が行の最後の文字だった場合、次の行は、新しいページの二行目に印刷さ +れます。これは、Vim が改ページ文字を処理した後で改行を処理し、カーソルを下へ移 +動して、次の行を印刷するからです。 + +上記の理由により、改ページ文字を使用する場合には、行番号印刷をオフにして、改 +ページ文字を行末に置かないことが望ましいです。その場合でも、予期しない空白ペー +ジが印刷されないように、行数を変更して改ページ文字の位置を調整する必要があるか +もしれません。 + +訳注: 例: +訳注: 1: aaa<0c>bbb (<0c> == <C-L> == formfeed) +訳注: 2: <0c>ccc<0c> +訳注: 3: ddd +訳注: は次のように印刷されます。 +訳注: 1: aaa +訳注: - new page - +訳注: bbb +訳注: 2: +訳注: - new page - +訳注: ccc +訳注: - new page - +訳注: +訳注: 3: ddd + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/sponsor.jax b/ja/sponsor.jax new file mode 100644 index 000000000..541a096b6 --- /dev/null +++ b/ja/sponsor.jax @@ -0,0 +1,213 @@ +COMMENT: 開発支援(スポンサー)について +STATUS: finished 7.0c +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*sponsor.txt* For Vim version 7.0c. Last change: 2006 Mar 29 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + +開発支援 (スポンサー) *sponsor* + +バグの修正や新機能の追加には多くの時間と努力が必要です。その仕事に対するあなた +の評価を形にするために、また、Bram や他の人の Vim を開発しようとする気持ちを継 +続させるために、寄付をお願いしています。 + +Bram は再び就職したため、寄付金はウガンダの子供達を援助するために使われます。 +|uganda| を参照してください。寄付は Bram が Vim の開発を継続するための励みにも +なっています。 + +開発支援に関する最新の情報は Vim のウェブサイトを参照ください。 + + http://www.vim.org/sponsor/ + +|sponsor-faq| にさらに説明があります。 + + +ユーザー登録 *register* + +10 ユーロ以上の送金で Vim の登録ユーザーになれます。これは開発支援と似たような +ものです。上記 |sponsor| を参照してください。上司や帳簿係はソフトウェアに出費 +してくれるが、"開発支援" や "寄付"という名目では問題がある、という場合に使って +ください。 + +|register-faq| にさらに説明があります。 + + +機能への投票 *vote-for-features* + +登録ユーザーやスポンサーには、Bram がするべき作業を決定するための投票権が与え +られます。投票の手順は次のとおりです。 + +1. 10 ユーロ以上送金をしてください。送金方法は下記を参照してください。 + |send-money| + +2. 登録キーが送られてくるので、そのキーを Vim のウェブサイトにあるご自身のア + カウントページで入力してください。アカウントを持っていなかったとしても、簡 + 単に作ることができます。 + +3. 投票ページで投票します。登録キーを入力すると、投票ページへのリンクがアカウ + ントページに作成されます。票は二年間有効です。 + +4. 結果は投票結果ページで確認できます。このページはだれでも見ることができま + す。http://www.vim.org/sponsor/vote_results.php + +送金額が合計で 100 ユーロを越えると、名誉の殿堂 (Vim hall of honour) にあなた +の名前が載ります。http://www.vim.org/sponsor/hall_of_honour.php +しかしそれは、あなたが自分のアカウントページでそれを許可した場合のみです。 + + +送金方法 *send-money* + +クレジットカード + クレジットカードでの送金には PayPal を使ってください。詳しいこ + とは PayPal のサイトを参照してください: + https://www.paypal.com + 開発支援の送金のためのメールアドレスはこれです: + donate@vim.org + ユーザー登録のためのメールアドレスはこれです: + register@vim.org + なるべくユーロを使って欲しいのですが、他の通貨も受け付けていま + す。ヨーロッパ在住なら銀行振込の方が手数料が安いです。 + +他の方法 |iccf-donations| を参照してください。 + 送金するときにコメント欄に "Vim sponsor" か "Vim registration" + と記入してください。あなたが Vim の登録ユーザーやスポンサーで + あることを他の人に分かるようにしたり、機能へ投票したい場合は、 + いくら送金したのかを、私にメールで知らせてください。 + +現金 少額の場合は郵送することもできます。お金は、外から見えないよう + に、何かで包装してください。あなたが Vim の登録ユーザーやスポ + ンサーであることを他の人に分かるようにしたり、機能へ投票したい + 場合は、あなたのメールアドレスを書き添えてください。 + +送付先の住所は次のとおりです: + Bram Moolenaar + Molenstraat 2 + 2161 HP Lisse + The Netherlands + + + +質問と回答 *sponsor-faq* *register-faq* + +なぜ送金しないといけないの? + +Vim に対する評価を形にしなかった場合、バグを修正したり新機能を追加しようとする +Bram の動機が弱まります。彼は何か他のことをするでしょう。 + + +いくら送金すればいいの? + +いくらでも結構です。たくさん送金すれば、たくさんの子供達が救われます。目安とし +ては、ホームユーザーなら年に 10 ユーロ、仕事で使う場合は一人あたり年に 30 ユー +ロほどでしょうか。10 ユーロ以上送金すると機能へ投票できるようになります。 + + +何かいいことあるの? + +10 ユーロ以上寄付した登録ユーザーとスポンサーは新機能へ投票できます。投票に +よって Vim 開発の優先順位が決まります。票は二年間有効です。金額が大きいほど投 +票得点が大きくなります |votes-counted|。 + +送金額が合計で 100 ユーロ以上になると、名誉の殿堂 (Vim hall of honour) にあな +たの名前が載ります。しかしそれは、あなたが自分のアカウントページでそれを許可し +た場合のみです。金額を表示するかどうかを選択することもできます。 + + +登録ユーザーやスポンサーになるにはどうすればいいの? + +上記 |send-money| に従って送金し、メールアドレスを知らせてください。送金が完了 +すると、登録キーが送付されます。登録キーは Vim のウェブサイトのアカウントで、 +機能へ投票できるようにするために使います。登録キーを使うと、投票ページが追加さ +れます。あなたが寄付したことを他の人が確認できるかどうかを設定することもできま +す。そのページへのリンクは "My Account" ページにあります。 + + +登録ユーザーとスポンサーの違いは? + +名前が違うだけです。あなたの上司が "開発支援" や "寄付" を好まない場合に "ユー +ザー登録" という名目を使ってください。特典は同じです。 + + +どうやって送金するの? + +|send-money| を参照してください。最新情報はウェブサイトで確認してください: +http://www.vim.org/sponsor/ + + +なぜ SourceForge の寄付システムを使わないの? + +SourceForge は寄付金の 5% を手数料として取るからです。SouceForge を支援したい +場合は直接彼らに送金してください。 + + +私には送金するほど経済的余裕がありません。それでも Vim を使えますか? + +はい。 + + +私はユーザー登録してません。すべての機能を使えますか? + +はい。 + + +バグを発見しました。報告するにはユーザー登録が必要ですか? + +必要ありません。Vim をより良くするための提案はいつでも歓迎します。改良に関して +は開発メーリングリスト |maillist| を使ってください。バグ報告に関しては |bugs| +を参照してください。 + + +私の投票はどのように集計されるのですか? *votes-counted* + +10 ユーロ以上送金すると投票できるようになります。10 票まで投票できます。複数の +ポイントを入れるために、同じ項目に複数の票を入れることもできます。3 票の反対票 +を入れることもできます。 + +30 ユーロ以上送金するとポイントが倍になります。100 ユーロなら 4 倍、300 ユーロ +なら 6 倍、1000 ユーロ以上なら 10 倍です。 + + +投票先を変更できますか? + +いつでも好きなときに投票先を変更できます。票は送金してから二年間有効です。ポイ +ントはただちに反映されます。 + + +投票したい項目を追加できますか? + +直接はできません。投票したい項目について Bram に相談してください。その項目を一 +覧に加えるかどうかは彼が判断します + + +チャリティーウェアとは? + +現在、Vim への寄付金は |uganda| に送金されます。そのため、Vim を支援するのと +ICCFを支援するのは、機能へ投票できるかどうかの違いしかありません。 + + +私は $$$ 円寄付しました。XYZ の機能を加えてください。 + +Bram の作業と寄付の間に直接的な関係はありません。対価が仕事に対して支払われる +とすると、私たちはその寄付に関して納税しなければなりません。特定の仕事のために +Bram を雇いたい場合は、寄付ではなく、彼に直接連絡してください。 + + +寄付金は税金控除の対象になりますか? + +国によって違います。|Uganda| の子供達を援助するための寄付は、オランダ、ドイ +ツ、カナダ、アメリカ、で税金が控除されます。ICCF のウェブサイトを参照してくだ +さい http://www.iccf.nl/donate.html。 Vim を使用することに対して寄付したことを +メールで Bram に知らせてください。 + + +明細書はもらえますか? + +いいえ。なぜなら、寄付金と仕事の間には関係がないからです。領収書なら発行できま +す。 + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/tabpage.jax b/ja/tabpage.jax new file mode 100644 index 000000000..748073ec7 --- /dev/null +++ b/ja/tabpage.jax @@ -0,0 +1,364 @@ +COMMENT: タブページの使い方 +STATUS: finished 7.0f +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*tabpage.txt* For Vim version 7.0f. Last change: 2006 Apr 26 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +タブページの使い方 *tab-page* *tabpage* + +タブページを使うために追加されたコマンドについて説明します。複数のタブページを +開いていると違う働きをするコマンドについても説明します。 + +1. はじめに |tab-page-intro| +2. コマンド |tab-page-commands| +3. その他 |tab-page-other| +4. 'tabline' の設定 |setting-tabline| +5. 'guitablabel' の設定 |setting-guitablabel| + +{Vi にはこれらのコマンドはありません} +{|+windows| が有効な場合のみ利用できます} + +============================================================================== +1. はじめに *tab-page-intro* + +タブページは複数のウィンドウを持てます。タブページを使うと、作業別のウィンドウ +の集合を簡単に切り替えることができます。 + +通常、Vim ウィンドウの最上部にタブページを表すラベルの一覧が表示されます。その +ラベルをマウスでクリックすると、そのタブページにジャンプできます。他の方法でも +タブページを移動できます。 + +ほとんどのコマンドは作業中のタブページ内だけで動作します。|CTRL=W| コマンド +や、|:tab| を前置しない |:windo|、|:all|、|:ball| なども同様です。カレントタブ +ページ以外にも作用するコマンドについては以下で説明しています。 + +タブページを使うと、一時的なバッファを使用するときに、作業中のウィンドウレイア +ウトを変更しなくてすみます。新しいタブページを開いて、何か作業をし、そのタブ +ページを閉じる、という具合です。 + +============================================================================== +2. コマンド *tab-page-commands* + +タブページを開くには: + +Vim を "vim -p filename ..." と起動すると、それぞれのファイルごとに +('tabpagemax' までの) タブページを開けます。|-p| + +CUI の Vim でタブページラインをダブルクリックすると新しいタブページが作成され +ます。新しいタブページはクリックした場所の左に作成されます。最初のクリックが他 +のタブページの選択になってしまうときは、スクリーンが余計に更新されます。 + +この機能は Win32 と Motif の GUI でも使えます。ただし、ラベルの右をクリックし +た場合のみです。 + +GUI でタブページラインを右クリックするとメニューが表示されます。|tabline-menu| + +:tabe[dit] *:tabe* *:tabedit* *:tabnew* +:tabnew カレントタブページの後ろに空のウィンドウを持った新しいタブペー + ジを作成します。 + +:tabe[dit] [++opt] [+cmd] {file} +:tabnew [++opt] [+cmd] {file} + {file} を新しいタブページで開きます。|:edit| と同じです。 + +:tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* + 'path' 内の {file} を新しいタブページで開きます。|:find| と同 + じです。 + {|+file_in_path| が有効な場合のみ利用できます} + +:[count]tab {cmd} *:tab* + {cmd} を実行します。そのコマンドが新しいウィンドウを作成すると + きは、その代わりに新しいタブページを作成します。|:diffsplit| + と |:diffpatch| に対しては機能しません。[count] を省略すると、 + 新しいタブページはカレントタブページの後ろに作成されます。 + [count] を指定すると、[count] 番目のタブページの後ろに作成され + ます。タブページを一番左に作成するには ":0tab cmd" とします。 + 例: > + :tab split " opens current buffer in new tab page + :tab help gt " opens tab page with help for "gt" + +CTRL-W gf カーソル下のファイル名のファイルを新しいタブページで開きます。 + |CTRL-W_gf| を参照してください。 + +CTRL-W gF カーソル下のファイル名のファイルを新しいタブページで開きます。 + そして、ファイル名の後ろに指定された行番号にジャンプします。 + |CTRL-W_gF| を参照してください。 + +タブページを閉じるには: + +複数のタブページを開いているときは、タブページ内の最後のウィンドウを閉じると、 +そのタブページが閉じられます。 + +タブページラインが表示されているときは、右上に表示されている "X" をマウスでク +リックすると、カレントタブページが閉じます。|'tabline'| を設定しているときは、 +他の何かが表示されているかもしれません。 + + *:tabc* *:tabclose* +:tabc[lose][!] カレントタブページを閉じます。 + このコマンドは次のときに失敗します: + - タブページが一つしかないとき。 *E784* + - 'hidden' がオフのときに [!] を使わず、バッファに変更があり、 + そのバッファを表示しているウィンドウが他にない場合。 + バッファの変更はファイルに保存されませんが、失われることもあり + ません。このコマンドは安全なコマンドです。 + +:tabc[lose][!] {count} + {count} 番目のタブページを閉じます。|:tabclose| と同じ理由で失 + 敗することがあります。 + + *:tabo* *:tabonly* +:tabo[nly][!] カレントタブページ以外のすべてのタブページを閉じます。 + オプション 'hidden' がオンのとき、閉じたウィンドウのバッファは + すべて隠しバッファになります。 + 'hidden' がオフ、'autowrite' がオンのときは、変更のあるバッ + ファはファイルに保存されます。そうでないときは、変更のあるバッ + ファを表示しているウィンドウは閉じません。[!] を指定した場合 + は、変更のあるバッファは隠しバッファになります。変更のあるバッ + ファは絶対に破棄されないので、変更を失うことはありません。 + + +タブページを切り替えるには: + +タブページラインが表示されているときは、タブページラベルをマウスでクリックする +と、そのタブページに移動できます。ラベルが表示されていない場所をクリックする +と、次のタブページに移動できます。 |'tabline'| + +:tabn[ext] *:tabn* *:tabnext* *gt* +gt *CTRL-<PageDown>* *<C-PageDown>* +<C-PageDown> *i_CTRL-<PageDown>* *i_<C-PageDown>* + 次のタブページに移動します。次のタブページがない場合は、最初の + タブページに移動します。 + +:tabn[ext] {count} *CTRL-<PageUp>* *<C-PageUp>* +{count}gt *i_CTRL-<PageUp>* *i_<C-PageUp>* +<C-PageUp> {count} 番目のタブページに移動します。最初のタブページの番号は + 1 です。 + + +:tabp[revious] *:tabp* *:tabprevious* *gT* +:tabN[ext] *:tabN* *:tabNext* +gT 前のタブページに移動します。前のタブページがない場合は、最後の + タブページに移動します。 + +:tabp[revious] {count} +:tabN[ext] {count} +{count}gT {count} の数だけ前のタブページに移動します。前のタブページがな + い場合は最後のタブページに移動します。 + +:tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind* +:tabfir[st] 最初のタブページに移動します。 + + *:tabl* *:tablast* +:tabl[ast] 最後のタブページに移動します。 + + +その他のコマンド: + *:tabs* +:tabs タブページと、含まれているウィンドウの一覧を表示します。 + ">" と表示されるのはカレントウィンドウです。 + "+" と表示されるのは変更のあるバッファです。 + + +タブページを並べ替えるには: + +:tabm[ove] [N] *:tabm* *:tabmove* + カレントタブページを N 番目のタブページの後ろに移動します。カ + レントタブページを一番目のタブページにするにはゼロを指定します。 + N を省略すると最後に移動します。 + + +タブページごとにコマンドを実行するには: + + *:tabd* *:tabdo* +:tabd[o] {cmd} タブページごとにコマンドを実行します。 + これは次のような動作をします: > + :tabfirst + :{cmd} + :tabnext + :{cmd} + etc. +< このコマンドは各タブページのカレントウィンドウで実行されます。 + いずれかのタブページでエラーが起きたときは、その場で実行を中断 + します。 + 最後のタブページ (またはエラーが起きたタブページ) がカレントタ + ブページになります。 + {cmd} は '|' を使って複数のコマンドを繋げることができます。 + {cmd} はタブページを開いたり閉じたり並べ替えたりしてはいけませ + ん。 + {Vi にはない機能です} + {|+listcmds| が有効な場合のみ利用できます} + |:windo|、|:argdo|、|:bufdo| も参照してください。 + +============================================================================== +3. その他 *tab-page-other* + + *tabline-menu* +GUI のタブページラインにはポップアップメニューがあります。右クリックで次のメ +ニューが表示されます: + Close マウスポインタの下のタブページを閉じます。マウスがラベ + ルの上にないときは、カレントタブページを閉じます。 + New Tab タブページを新規バッファで開きます。マウスポインタの左 + 側に作成されます。 + Open Tab... "New Tab" と同じですが、ファイル選択ダイアログを使っ + て選択したファイルを新しいタブページで開きます。 + +Diff モードはタブページ単位で機能します。一つのタブページ内でファイル間の差分 +を表示できます。そして、他のタブページでは他のファイルとの差分を表示することが +できます。 + +タブページローカル変数は "t:" で始まります。|tabpage-variable| + +現在、タブページローカルなオプションは 'cmdheight' だけです。 + +オートコマンドイベントの TabLeave と TabEnter を使って、タブページを切り替える +ときにコマンドを実行できます。イベントが起きる正確な順番は何をしたかによって変 +わります。新しいタブページを作成したときは、例えば、編集中のバッファを新しい +ウィンドウで開き、それからそのウィンドウで別のバッファを開いたときと同じような +動きをします。つまり、":tabnew" では次の順番でイベントが実行されます: + WinLeave カレントウィンドウから離れる + TabLeave カレントタブページから離れる + TabEnter 新しいタブページに入る + WinEnter 新しいタブページのウィンドウに入る + BufLeave カレントバッファから離れる + BufEnter 新しい空のバッファに入る + +タブページを切り替えたときは次の順番です: + BufLeave + WinLeave + TabLeave + TabEnter + WinEnter + BufEnter + +============================================================================== +4. 'tabline' の設定 *setting-tabline* + +オプション 'tabline' を設定してタブページラベルの表示方法を指定できます。これ +は CUI の タブページラインで使います。 + +オプション 'showtabline' を設定してタブページラインを表示するかどうかを指定で +きます。表示しない、タブページが複数あるときだけ表示する、常に表示する、から選 +べます。 + +タブページラインの強調表示には TabLine、TabLineSel、TabLineFill が使われます。 +|hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| + +オプション 'tabline' を使って、タブページラベルを好みの表示に設定できます。こ +れはあまり簡単ではないので、サンプルを用意してあります。 + +基本的には 'statusline' を参照してください。同じアイテムが 'tabline' で使用で +きます。加えて、|tabpagebuflist()|、|tabpagenr()|、|tabpagewinnr()| という関数 +も使えます。 + +タブページラベルの数は変化するので、オプションには式を使う必要があります。次の +ように設定します: > + :set tabline=%!MyTabLine() + +では、関数 MyTabLine() を定義して、すべてのタブページラベルを表示するようにし +ます。タブページラベル全体の作成と、個々のタブページラベルの作成、という二つの +段階に分けると簡単です。 > + + function MyTabLine() + let s = '' + for i in range(tabpagenr('$')) + " 強調表示グループの選択 + if i + 1 == tabpagenr() + let s .= '%#TabLineSel#' + else + let s .= '%#TabLine#' + endif + + " タブページ番号の設定 (マウスクリック用) + let s .= '%' . (i + 1) . 'T' + + " ラベルは MyTabLabel() で作成する + let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' + endfor + + " 最後のタブページの後は TabLineFill で埋め、タブページ番号をリセッ + " トする + let s .= '%#TabLineFill#%T' + + " カレントタブページを閉じるボタンのラベルを右添えで作成 + if tabpagenr('$') > 1 + let s .= '%=%#TabLine#%999Xclose' + endif + + return s + endfunction + +関数 MyTabLabel() は個々のタブページラベルを得るために呼ばれます。 > + + function MyTabLabel(n) + let buflist = tabpagebuflist(a:n) + let winnr = tabpagewinnr(a:n) + return bufname(buflist[winnr - 1]) + endfunction + +このサンプルは単純なものです。生成されるのは未設定時のタブページラインとほぼ同 +じですが、変更のあるバッファに + が付けたり、名前を切り詰めたりはしません。十 +分な表示領域がない場合など、なんらかのうまい方法でラベルの幅を減らしたいでしょ +う。利用できる表示領域はオプション 'columns' を確認してください。 + +============================================================================== +5. 'guitablabel' の設定 *setting-guitablabel* + +GUI のタブページラインが表示されているとき、'guitablabel' を設定してタブページ +ラベルの表示方法を指定できます。'tabline' とは違い、一度にタブページライン全体 +を指定するのではなく、個々のラベルを得るために 'guitablabel' が使われます。 + +'guitabtooltip' という良く似たオプションがあります。これはラベルのツールチップ +を表示するために使われます。ツールチップはマウスポインタがラベルの上に乗ってい +るときだけ表示されるので、普通は、長い文字を表示します。いくつかのシステムだけ +サポートされています。 + +書式についてはオプション 'statusline' を参照してください。 + +"%N" はカレントタブページ番号になります。このオプションを評価するときに、 +|v:lnum| にも同じ番号が設定されます。ファイル名を参照するアイテムにはタブペー +ジのカレントウィンドウのものが使われます。 + +Note: このオプションでは強調表示は使えません。%T と %X は無視されます。 + +簡単な例として、次のものはタブページ番号とバッファ名をラベルに表示します: > + :set guitablabel=%N\ %f + +次の例は 'guitablabel' の標準設定の動作と似た動作をします。タブページのウィン +ドウ数と、変更のあるバッファがあるときには '+' を表示します: > + + function GuiTabLabel() + let label = '' + let bufnrlist = tabpagebuflist(v:lnum) + + " このタブページに変更のあるバッファがるときには '+' を追加する + for bufnr in bufnrlist + if getbufvar(bufnr, "&modified") + let label = '+' + break + endif + endfor + + " ウィンドウが複数あるときにはその数を追加する + let wincount = tabpagewinnr(v:lnum, '$') + if wincount > 1 + let label .= wincount + endif + if label != '' + let label .= ' ' + endif + + " バッファ名を追加する + return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) + endfunction + + set guitablabel=%{GuiTabLabel()} + +Note: この関数はオプションを設定する前に定義しておく必要があります。そうしない +と、関数未定義のエラーが表示されてしまいます。 + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/uganda.jax b/ja/uganda.jax index daf98614a..bfdd7c484 100644 --- a/ja/uganda.jax +++ b/ja/uganda.jax @@ -1,10 +1,10 @@ COMMENT: ライセンス、寄付 -STATUS: suspended 6.5.054 +STATUS: finished 7.0c TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*uganda.txt* For Vim version 6.3. Last change: 2004 May 12 +*uganda.txt* For Vim version 7.0c. Last change: 2006 Mar 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -13,15 +13,15 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> *uganda* *Uganda* *copying* *copyright* *license* 要約 *iccf* *ICCF* -Vim はチャリティウェアです。好きなだけ使ってコピーすることができますが、ウガン -ダの孤児院に寄付を行うことが勧められています。下の |kcc| を参照するか、ICCFの -ウェブサイトを訪れてください。URLは以下のとおりです。 +Vim はチャリティウェアです。好きなだけコピーして使うことができますが、ウガンダ +の孤児院への寄付を推奨しています。下記の |kcc| を参照するか、ICCFのウェブサイ +トを訪れてください。URLは以下のとおりです。 http://iccf-holland.org/ http://www.vim.org/iccf/ -Vimの開発のスポンサーに成ることもできます。Vimのスポンサーは機能要望に投票でき -ます。|sponsor|をご覧ください。 +Vimの開発のスポンサーになることもできます。スポンサーは機能要望に投票できま +す。|sponsor|をご覧ください。集めたお金はウガンダへ送金されます。 Vimのドキュメントには Open Publication License が適用されています。 |manual-copyright|をご覧ください。 @@ -188,44 +188,44 @@ IV) Vim のソースや、その一部、または変更された Vim、の配 Note: -- Vim に満足しているならば、このファイルの残りの部分を読み、ウガンダの貧しい子 - 供たちを助けることを考えてみてください。 +- Vim に満足していただけたのなら、このファイルをさらに読み進め、ウガンダの貧し + い子供たちへの援助を検討してください。 -- さらにVimの開発に協力したいならスポンサーになることを検討してみてください - |sponsor|。 +- Vimの開発に協力したいとお考えなら、スポンサーになることを検討してください + |sponsor|。集めたお金はウガンダへ送金されます。 - Richard Stallman にならってVimのライセンスは GNU GPL互換です。彼がそれを確認 してから多少の変更が加えられましたが、違いはないでしょう。 -- もしVimに GNU GPL のライブラリをリンクするとそれの配布形態が GNU GPL に制 - 限されます。あなたがVimに何の変更も加えていなくてもそうです。 +- Vimに GNU GPL のライブラリをリンクした場合、配布形態が GNU GPL に制限されま + す。あなたがVimに何の変更も加えていなくてもです。 -- 一度でも GNU GPL を含む変更を加えた場合、それ以降の変更も GNU GPL 互換のライ - センスを使うことを余儀なくされます。 +- 一度でも GNU GPL を含む変更を加えた場合、それ以降の変更は GNU GPL 互換のライ + センスを使わなければいけません。 -- Vimに改良を加えたバージョンを配布するとしたら、configureの引数に +- Vimに改良を加えたバージョンを配布するときは、configureの引数に "--with-modified-by"を指定するかMODIFIED_BYを定義して、あなたの名前を連絡先 に含めることができます。 ============================================================================== Kibaale Children's Centre *kcc* -Kibbale Children's Centre (KCC) はウガンダの南部にある小さな町 Kibbale にあり -ます。ウガンダは東アフリカに位置しており、タンザニアの近くに位置しています。そ -の地域は Rakai District として知られています。人口の大部分は農民で、貧乏ではあ -りますが食料は十分にあります。しかしこの地域は世界のほかの場所よりも AIDS で苦 -しんでいます。AIDS はここから始まったという人もいます。ウガンダ人の 10-30% が -HIV に感染していると推定されています。両親が死んでしまうので孤児がたくさんいま -す。この地域では人口 350,000 人のうちの 60,000 人の子供が親の片方もしくは両方 -をなくしており、この数値はまだ増え続けているのです。 +Kibaale Children's Centre (KCC) はウガンダの南部にある小さな町 Kibaale にあり +ます。ウガンダは東アフリカのタンザニアの近くに位置しています。その地域はRakai +地区として知られています。人口の大部分は農民で、貧乏ではありますが食料は十分に +あります。しかしこの地域は世界のほかの場所よりも AIDS で苦しんでいます。AIDS +はここから始まったという人もいます。ウガンダ人の 10-30% がHIV に感染していると +推定されています。両親が死んでしまうので孤児がたくさんいます。この地域では人口 +350,000 人のうちの 60,000 人の子供が親をどちらか、または両方をなくしており、そ +の数は増え続けています。 子供たちは多くの援助を必要としています。KCC は食料、医療、教育を彼らに提供する -ために懸命に働いています。食料と医療は彼らを今健康にするために、そして教育は彼 -らの将来の手助けをするためです。KCC はキリスト教の教えに基づいて活動しています -が、子供たちの宗教にかかわらず援助は行われています。 +ために懸命に働いています。食料と医療は彼らの健康を保つために、そして教育は彼ら +の将来を手助けするためです。KCC はキリスト教の教えに基づいて活動していますが、 +子供たちの宗教にかかわらず援助が行われています。 この地域の問題を解決する鍵は教育です。過去数年にわたる Idi Amin 大統領の時代と -それに続く市民戦争により、これは軽視されていました。今は政府が再び安定しました +それに続く市民戦争により、教育は軽視されていました。今は政府が再び安定しました し、子供と親は自分自身の健康をどうやって保つか、そしてどうすれば感染を避けられ るかを学ぶ必要があります。病気にかかっている人々や空腹を抱えている人々への援助 もなされていますが、第一の目標は人々を病気から遠ざけることであり、そして体によ @@ -251,32 +251,32 @@ HIV に感染していると推定されています。両親が死んでしま が実行されており、伝染病が発生した場合(風疹とコレラは悩みの種です)は援助が行わ れます。 + *donate* 私は1994年の夏から1995年の夏までの丸1年間をボランティアとしてセンターで過ごし ました。センターを拡大するための手助けを行い、そして飲料水の改善を行う地区と衛 生設備の改善を行う地区で働いていました。そして KCC が提供している援助が本当に 役に立っていることを学んできました。いまはオランダに戻ってきているのですが -KCC のサポートを続けたいと思っています。これを実行するために私は基金を設立し、 -そしてスポンサーシップ・プログラムを組織化しました。下記のうちの1つを考慮して -みてください: +KCC のサポートを続けたいと思っています。それを実行するために私は基金を設立し、 +そしてスポンサーシップ・プログラムを組織化しました。次のどれかが可能かどうか検 +討してみてください: -1. 1人の小学生のスポンサーとなる: 月に17ユーロ(か、もっと) -2. 1人の中学生のスポンサーとなる: 月に25ユーロ(か、もっと) +1. 1人の小学生のスポンサーになる: 月に17ユーロ(か、もっと) +2. 1人の中学生のスポンサーになる: 月に25ユーロ(か、もっと) 3. 診療所のスポンサーになる: 月もしくは4半期ごとにいくらでも 4. 1度に限定した寄付(A one-time donation) 他の組織に比べると子供のスポンサーシップの料金はかなり低いです。これはお金が直 接センターに届くようになっているからです。5% 以下しか運営には使われていません。 -このことが可能になったのはこの組織が小さく、そしてボランティアで運営されている -からです。もし子供のスポンサーになろうと思っているのならば、少なくとも1年は続 -ける心構えを持ってください。 +それが可能になのはこの組織が小さく、そしてボランティアで運営されているからで +す。子供のスポンサーになるのなら、少なくとも1年は続ける心構えを持ってください。 お金が適切に使われていることをどうやって知ればいいのでしょう? まず、私は Vim の作者として個人的に信用されています。そして私はセンターで働いている人々を信用 していますし、彼らを個人的に知ってもいます。さらには、このセンターは World Vision と Save the Children Fund と International Child Care Fund によって共 -同運営・監督されています。センターは1年に約1回は訪問を受けて進行をチェックされ -ています(自費で)。私自身1996年、1998年、2000年、2001年、そして2003年にセンター -を訪問しました。ICCFのウェブサイトに訪問レポートがあります。 +同運営・監督されています。センターは1年に約1回は視察を受けて進行をチェックして +もらっています(自費で)。私自身1996年、1998年、2000年、2001年、2003年にセンター +を視察しました。ICCFのウェブサイトに視察レポートがあります。 もし他に質問がありましたら、私にメールを送ってください: <Bram@vim.org> @@ -285,54 +285,69 @@ Vision と Save the Children Fund と International Child Care Fund によって p.o. box 1658 Masaka, Uganda, East Africa -送金: +送金: *iccf-donations* 最新の情報はICCFのウェブサイトをご覧ください。ICCFのURLは|iccf|をご覧ください。 -アメリカとカナダ:Canada、SurreyのKibaale Children's Fund(KCF)とコンタクトを取っ - てください。彼らはKibaaleの子供たちのために、カナダのスポンサー - を世話しています。1度に限定した寄付の場合は、そこに直接送ること - ができます。Vimによってどのくらい寄付が行われているのかを知りた - いので、私に知らせてください。スポンサーシップについては KCFに - 尋ねてみてください。 +アメリカ: 下記で説明する方法も使えますが、他にも、Nehemiah Group + Outreach Society (NGOS) に小切手を送ることもできます。この方法 + なら、銀行の手数料を節約できますし、国税庁 (IRS) の税領収書を + 得られます。NGOS は資金を直接、ウガンダの Kibaale プロジェクト + に送金します。小切手の支払い先は NGOS にしてください。そして、 + 小切手に "donation Kibaale" と記載してください。次の住所へ送っ + てください: + NGOS + P.O. Box 50862 + Indianapolis, IN 45250 + Nehemiah Group Outreach Society (NGOS) に関しては、エグゼク + ティブディレクターの Ross deMerchant + (r.demerchant AT sbcglobal DOT net) に直接質問してください。 + 子供のスポンサーになるにはカナダの KCF (下記参照) に連絡し、 + Indianapolis の NGOS に小切手を送ってください。 + +カナダ: カナダのSurreyにあるKibaale Children's Fund(KCF)に連絡してくだ + さい。彼らはKibaaleの子供たちのために、カナダのスポンサーを世 + 話しています。KCF が集めたお金は100%、ウガンダのプロジェクトに + 送金されます。1度に限定した寄付の場合は、そこに直接送ることが + できます。Vimによってどのくらい寄付されているか知りたいので、 + よろしければ、送金したことを私に知らせてください。スポンサー + シップについては KCF に尋ねてください。 Kibaale Children's Fund c/o Pacific Academy 10238-168 Street Surrey, B.C. V4N 1Z4International Child Care Fund Phone: 604-581-5353 Kibaale Children's Fund (KCF) に寄付をすると、税領収書を受け取 - ることができ、納税申告で提出することができます (自由貿易協定 - (Free Trade Agreement) により、カナダの公認団体により発行され - た税領収書は、少しの手続きでアメリカの米国税務局 (IRS) に受領 - されます)。 + れるので、確定申告で提出できます。 オランダ: Venlo の "Stichting ICCF Holland" の口座に振り替えてください。 - こうすることで税金が控除されます(もしオランダに住んでいれば)。 + オランダ在住の方は税金が控除されます。 Postbank, nr. 4548774 -ドイツ: 納税申告で寄付を考慮することができます。 +ドイツ: 寄付により、確定申告で税金が控除されます。 最新の情報は ICCF のウェブサイトを御覧下さい: http://iccf-holland.org/germany.html ワールド: 郵便為替を使ってください。ほとんどの国で、たいていは郵便局か ら送れます。この名前を使ってください (これは私のパスポートの - ものです): "Abraham Moolenaar"。可能なら通過はユーロにしてく + ものです): "Abraham Moolenaar"。可能なら通貨はユーロにしてく ださい。 ヨーロッパ: 可能なら銀行振り込みを使ってください。あなたの銀行はそのための - 方法を用意しているはずです。swift codeとIBAN numberはこの下の - "Others"の項をご覧ください。 - 他の方法も使えると思います。スポンサーシップに関しては尋ねてみ - てください。 + 方法を用意しているはずです。swift codeとIBAN numberは下記の"そ + の他"の項を参照してください。 + 他の方法も使えると思います。スポンサーシップについてはお問い合 + わせください。 -クレジットカード:PayPal を使ってクレジットカードで送金できます。これはイン - ターネット上でもっとも広く使われているシステムです。これは本 +クレジットカード: クレジットカードでの送金には PayPal が使えます。これはイン + ターネットでの決算で最も広く使われているシステムです。これは本 当に簡単です。詳細はこのリンク先を見てください: - https://www.paypal.com/affil/pal=Bram%40moolenaar.net + https://www.paypal.com/affil/pal=Bram%40iccf-holland.org 送金のための e-mail アドレスは: - Bram@iccf-holland.org - 150 ドル以上の送金は小切手が望ましいです。 + Bram@iccf-holland.org + 400 ユーロ (500ドル) より大きな送金は、小切手で送るようにして + ください。 -その他の地域: 可能であれば次のうちのどれかの口座に振り替えてください: +その他: 可能であれば次のうちのどれかの口座に振り替えてください: Postbank, account 4548774 Swift code: INGB NL 2A IBAN: NL47 PSTB 0004 5487 74 @@ -341,16 +356,19 @@ Vision と Save the Children Fund と International Child Care Fund によって Rabobank Venlo, account 3765.05.117 Swift code: RABO NL 2U under the name "Bram Moolenaar", Venlo - それ以外は、ユーロか US ドルで小切手を下記のアドレスに送って - ください。最小の金額は: 70 ドルです(私が利用している銀行はそ - れ以下の海外からの小切手は受け付けないのです、ごめんなさい)。 + それ以外は、ユーロか US ドルの小切手を下記の住所に送ってくださ + い。最小の金額は 70 ドルです(私が利用している銀行はそれ以下の + 海外からの小切手は受け付けないのです、ごめんなさい)。 小切手の送り先: stichting ICCF Holland Bram Moolenaar - Clematisstraat 30 - 5925 BE Venlo + Molenstraat 2 + 2161 HP Lisse The Netherlands +この住所はとうぶん先まで使えると思います。Venlo の住所は 2006年 7月以降は使え +ません。 + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_32.jax b/ja/usr_32.jax new file mode 100644 index 000000000..6f9063307 --- /dev/null +++ b/ja/usr_32.jax @@ -0,0 +1,160 @@ +COMMENT: UNDOツリー +STATUS: finished 7.0c +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*usr_32.txt* For Vim version 7.0c. Last change: 2006 Mar 24 + + VIM USER MANUAL - by Bram Moolenaar + + undo ツリー + + +Vim は多段 undo を提供しています。ユーザーが変更を undo した後で新たな変更を加 +えると、undo ツリーに枝が作成されます。このテキストでは、枝を移動する方法を説 +明します。 + +|32.1| 変更の番号付け +|32.2| ツリーを飛び回る +|32.3| タイムトラベリング + +次章: |usr_40.txt| 新しいコマンドを作る +前章: |usr_31.txt| GUI の活用 +目次: |usr_toc.txt| + +============================================================================== +*32.1* 変更の番号付け (Numbering changes) + +セクション |02.5| では一本の undo/redo について説明しましたが、実は、undo/redo +を分岐させることができます。それは、変更を undo した後で新たな変更を加えた場合 +に起こります。新たな変更は undo ツリーの枝になります。 + +まずは "one" というテキストから始めます。最初に " too" を追加します。次に、 +(tooの)最初の 'o' に移動し、'w' に変更します。そうすると、1、2、と番号が付けら +れた二つの変更と、テキストの三つの状態ができます。 + + one ~ + | + change 1 + | + one too ~ + | + change 2 + | + one two ~ + +一つだけ変更を undo し、"one too" の状態に戻ります。そして、"one" を "me" に変 +更します。すると、undo ツリーに枝が作成されます。 + + one ~ + | + change 1 + | + one too ~ + / \ + change 2 change 3 + | | + one two me too ~ + +この状態で |u| コマンドを使って undo します。二回 undo すると "one" に戻りま +す。|CTRL-R| で redo すると "one too" になります。もう一度 |CTRL-R| を実行する +と "me too" になります。このように、最後に使われた枝を使って undo や redo を実 +行し、ツリーを上下に移動できます。 + +変更が作成される順番に注目してください。今は undo と redo の動作は重要ではあり +ません。それぞれの変更の後にはテキストの新しい状態があります。 + +Note: 変更だけが番号付けされます。上の説明でツリーに表示されている"テキスト"は +個別に保存されていません。テキストは、そのテキストより上の変更によって表されま +す。また、ツリーを上に移動しているときなどは、変更を undo するのと同じように、 +テキストは、そのテキストより下の変更によって表されます。 +訳注: 自信なし +訳注: Note that only the changes are numbered, the text shown in the tree +訳注: above has no identifier. They are mostly referred to by the number of +訳注: the change above it. But sometimes by the number of one of the changes +訳注: below it, especially when moving up in the tree, so that you know which +訳注: change was just undone. + +============================================================================== +*32.2* ツリーを飛び回る (Jumping around the tree) + +今の状態から "one two" に行くにはどうすればいいでしょう。次のコマンドが使えま +す: > + + :undo 2 + +すると、テキストは "one two" になります。あなたは change 2 の下にいます。 +|:undo| コマンドを使ってツリーの任意の変更の下にジャンプできます。 + +さらに他の変更を加えてみましょう。"one" を "not" に変更します: + + one ~ + | + change 1 + | + one too ~ + / \ + change 2 change 3 + | | + one two me too ~ + | + change 4 + | + not two ~ + +そして、何か考えが変わって "me too" に戻りたいとします。|g-| コマンドを使って +ください。このコマンドは時間を基準にして戻ります。ツリーを上がったり下がったり +せず、以前の変更に移動します。 + +|g-| を繰り返し実行すると、テキストが次のように変化していきます: + me too ~ + one two ~ + one too ~ + one ~ + +|g+| を使えば時間を進めることができます: + one ~ + one too ~ + one two ~ + me too ~ + not two ~ + +ジャンプしたい変更点が分かっているときには |:undo| が便利です。変更番号がよく +分からないときには |g-| と |g+| が便利です。 + +|g-| と |g+| の前にカウントを入力して実行する回数を指定できます。 + +============================================================================== +*32.3* タイムトラベリング (Time travelling) + +しばらくテキストを編集していると、ツリーは大きくなってきます。そして、数分前の +テキストに戻りたいと思うことがあるかもしれません。 + +undo ツリーにどのような枝があるか確認するには次のコマンドを使います: > + + :undolist +< number changes time ~ + 3 2 16 seconds ago + 4 3 5 seconds ago + +枝に付いている葉の数と、変更された時間が確認できます。今、change 4 の下の +"not two" にいるとして、10 秒前に戻るには次のようにします: > + + :earlier 10s + +指定した時間だけ戻り、ツリーの特定の位置へ移動できます。|:earlier| コマンドの +引数は "m" で分、"h" で時間を指定することもできます。すべての変更を元に戻すに +は大きな値を指定します: > + + :earlier 10h + +時間を進めるには |:later| コマンドを使います: > + + :later 1m + +|:earlier| と同じように "s"、"m"、"h" で時間を指定します。 + +============================================================================== + +次章: |usr_40.txt| 新しいコマンドを作る + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/variaous.jax b/ja/variaous.jax deleted file mode 100644 index 360ef39da..000000000 --- a/ja/variaous.jax +++ /dev/null @@ -1,396 +0,0 @@ -COMMENT: 様々なコマンド(コマンド、ヘルプ、印刷) -STATUS: finished 5.7 -TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -TRANSLATOR: nakadaira <hopper2@nanameue.jp> - -*various.txt* For Vim version 5.7. Last change: 2000 Apr 22 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -様々なコマンド *various* - -1. 様々なコマンド |various-cmds| -2. オンラインヘルプ |online-help| - -============================================================================== -1. 様々なコマンド *various-cmds* - - *CTRL-L* -CTRL-L 画面を消去して再描画する。 - - *N<Del>* -<Del> 数値を入力している時: 最後の数字を削除する。 - Note: これを行なうために<BS>を使用したい場合、次のマッ - ピングを自分の.vimrcに追加する: - :map CTRL-V <BS> CTRL-V <Del> - <Del>が望みどおりに働かない場合には|:fixdel|を参照。 - -:as[cii] または *ga* *:as* *:ascii* -ga カーソルの下の文字の文字コードを、10/16/8進数で表示す - る。例えばカーソルが'R'の上にあるときは: - <R> 82, Hex 52, Octal 122 - 文字が非ASCIIではあるが'isprint'オプションで指定され表 - 示可能である時には、表示不可能な形も同時に表示される。 - 文字コードが127よりも大きい時には<M-x>という形式も同時 - に表示される。例: - <~A> <M-^A> 129, Hex 81, Octal 201 - <p> <|~> <M-~> 254, Hex fe, Octal 376 - (<p>は特別な文字とみなす) - ファイルの中の<Nul>文字は内部的に<NL>として保存される - が、次のように表示される: - <^@> 0, Hex 00, Octal 000 - 覚え方: Get Ascii value(アスキーコードを取得) - {not in Vi} - - *:p* *:pr* *:print* -:[range]p[rint] [range]の範囲の行を表示する(省略時は現在行)。 - Note: テキストファイルを表示する方法を探しているなら - ば、外部プログラムが必要になる。GUIを使用しているなら - ばFile.Printメニュー項目を使うことができる。 - -:[range]p[rint] {count} - [range]から(省略時は現在行 |cmdline-ranges|)始まる - {count}行を表示する - - *:P* *:Print* -:[range]P[rint] [count] - ":print"と同様。シフトキーを長く押し続けてしまう人のた - めに追加された。 - - *:l* *:list* -:[range]l[ist] [count] - :printと同じだが、表示不可文字を'^'と一緒に表示する。 - - *:nu* *:number* -:[range]nu[mber] [count] - :printと同じだが、各行の先頭にその行番号を付加する。 - ('highlight'オプションも参照) - - *:#* -:[range]# [count] :numberと同じ。 - - *:z* -:{range}z[+-^.=]{count} {range}で指定される行、されなかった場合は現在行の周辺 - 数行を表示する。何行表示したいかを指定する場合{count} - を使用する; 指定しない場合には現在のウィンドウの大きさ - が使用される。 - - :zは単独で使うことも、修飾マークを付加して使うこともで - きる。それらには次のような効果がある。 - - 記号 開始行 終了行 新しい位置 ~ - ---- ------ ------ ---------- - + 現在行 1画面先 1画面先 - - 1画面前 現在行 現在行 - ^ 2画面前 1画面前 1画面前 - . 半画面前 半画面先 半画面先 - = 半画面前 半画面先 現在行 - - どのマークも指定しなかった場合、"+"を指定したことにな - る。マークが"="ならば、現在行の周りにマイナス記号で - 作った線が表示される。 - - *:=* -:= カーソルのある行番号を表示する。 - -:norm[al][!] {commands} *:norm* *:normal* - {commands}をノーマルモードコマンドとして実行する。これ - によりコマンドラインでタイプされたノーマルモードのコマ - ンドを実行することができる。{commands}はタイプされたよ - うに実行される。アンドゥ時には全てのコマンドが一度に取 - 消される。[!]が与えられた場合、マッピングは行なわれな - い。{commands}はコマンドとして完結するべきである。 - {commands}が完結していない場合には、更に文字がタイプさ - れる必要があるが、この間ディプレイは更新されない。これ - は挿入コマンドが完了されなければならないことを意味して - いる(インサートモードを始めるには|:startinsert|を参 - 照)。 - '|'はコマンドの一部として考えられてしまうので、続けて - 他のコマンドを書くことはできない。このコマンドは - 'maxmapdepth'で制限されるだけ再帰的に呼び出すことがで - きる。 - このコマンドが再マップ不可能マッピング|:noremap|から呼 - ばれたときには、引数は全くマッピングされない。 - |:execute|を使用して副次的に使用するときには、引数とし - て1つの式が使われる。これにより印刷可能文字を扱うこと - ができる。例: -> :exe "normal \<c-w>\<c-w>" - ヒント: {commands}が<Esc>で終わっている時、Vimはそれを - ファンクションキーの開始だと考え、'ttimeout'が適用され - るので、非常に遅くなるか、何か定義されないタイプがされ - るまで待機することになる。[!]を含む場合もこのケースに - なる。 - {Vi には、もちろんない} - コンパイル時に|+ex_extra|機能が無効化されていると使 - 用できない。 - -:{range}norm[al][!] {commands} *:normal-range* - {range}の各行に{commands}のノーマルモードコマンドを実 - 行する。{commands}を実行する前に、領域各行の最初のカラ - ムにカーソルが置かれる。その他の点については領域指定の - 無い":normal"コマンドと同じ意味である。 - {Vi にはない} - {not in Vi} - コンパイル時に|+ex_extra|機能が無効化されていると使 - 用できない。 - - *:sh* *:shell* -:sh[ell] このコマンドはシェルを起動する。シェルを終了した時に - ("exit"コマンドの後)Vimに戻ってくる。シェルコマンドの - 名前はオプション'shell'から与えられる。Note: これは - AmigaのVimにおいてコンパイラからQuickFixモードで起動さ - れた時には、コンパイラが標準出力を非インタラクティブ - モードにしてしまうので使用できない。 - - *:!cmd* *:!* -:!{cmd} シェルで{cmd}を実行する。'shell'と'shelltype'オプショ - ンも参照。 - {cmd}の中のあらゆる'!'は前の外部コマンドに置き換えられ - る('cpoptions'も参照)。しかし'!'の前にバックスラッシュ - がある時にはそれが削除され'!'は置き換えらない。 - 例: ":!ls"の後の":!echo !\! \\!"は"echo ls ! \!"と解釈 - 、実行される。 - コマンドが実行された後で、現在のファイルのタイムスタ - ンプがチェックされる|timestamp|。 - {cmd}の中に'|'を含めることはできない(|:bar|参照)。 - Unixでは通常コマンドは非インタラクティブモードで動作す - る。もしもインタラクティブに使いたい場合(aliasを使うな - ど))には、'shellcmdflag'に"-ic"を設定する。 - |shell-window|も参照。 - - *:!!* -:!! 最後の":!{cmd}"を繰り返す。 - - *:ve* *:version* -:ve[rsion] エディタのバージョン番号を表示する。コンパイラが - "__DATE__"を解釈できるならば、コンパイルされた日時が記 - 述される。できなければ最終修正日時が表示される。 - 続く行にはVimがコンパイルされた時にどの機能が有効にさ - れているかの情報を含む。機能名の前に'+'があればその機 - 能は有効であり、'-'があるときには無効になっている。こ - れを変えるにはfeature.hを編集してVimをコンパイルし直す - 必要がある。これを評価式の中でチェックするには、 - |has()|を参照。以下に機能の概要を示す: - - *+feature-list* -*+ARP* Amiga のみ: ARP サポートを含む -*+autocmd* |:autocmd|, 自動コマンド実行 -*+browse* |:browse| コマンド -*+builtin_terms* 幾つかの組み込み端末 |builtin-terms| -*++builtin_terms* 全部の組み込み端末 |builtin-terms| -*+byte_offset* 'statusline'オプション、"go"そして":goto"コマンドで'o' - フラグをサポート -*+cindent* |'cindent'|, C言語インデント -*+cmdline_compl* コマンドライン補完 |cmdline-completion| -*+cmdline_info* |'showcmd'| と |'ruler'| -*+comments* |'comments'| サポート -*+cryptv* 暗号化サポート |encryption| -*+cscope* |cscope| サポート -*+dialog_gui* |:confirm| のGUIダイアログをサポート -*+dialog_con* |:confirm| のコンソールダイアログをサポート -*+dialog_con_gui* |:confirm| GUIとコンソールダイアログをサポート -*+digraphs* |digraphs| -*+emacs_tags* |emacs-tags| ファイル -*+eval* 式評価(訳注:Vimスクリプト) |eval.txt| -*+ex_extra* Vimの拡張Exコマンド: |:center|, |:left|、 - |:normal|、|:retab| 及び |:right| -*+extra_search* |'hlsearch'| と |'incsearch'| オプション -*+farsi* |farsi| 言語 -*+file_in_path* |gf|, |CTRL-W_f| と |<cfile>| -*+find_in_path* include ファイル検索: |[I|, |:isearch|、 - |CTRL-W_CTRL-I|、|:checkpath|、その他 -*+fork* Unix のみ: |fork| シェルコマンド -*+GUI_Athena* Unix のみ: Athena |GUI| -*+GUI_BeOS* BeOS のみ: BeOS |GUI| -*+GUI_GTK* Unix のみ: GTK+ |GUI| -*+GUI_Motif* Unix のみ: Motif |GUI| -*+hangul_input* ハングル入力サポート |hangul| -*+insert_expand* |insert_expand| 挿入モード補完 -*+langmap* |'langmap'| -*+linebreak* |'linebreak'|、|'breakat'| と |'showbreak'| -*+lispindent* |'lisp'| -*+menu* |:menu| -*+mksession* |:mksession| -*+modify_fname* |filename-modifiers| -*+mouse* マウス操作 |mouse-using| -*+mouse_dec* Unix のみ: Dec端末マウス操作 |dec-mouse| -*+mouse_gpm* Unix のみ: Linuxコンソールマウス操作 |gpm-mouse| -*+mouse_netterm* Unix のみ: nettermマウス操作 |netterm-mouse| -*+mouse_xterm* Unix のみ: xtermマウス操作 |xterm-mouse| -*+multi_byte* マルチバイト文字(日韓中) |multibyte| -*+multi_byte_ime* Win32 IMEサポート -*+ole* Win32 GUI のみ: |ole-interface| -*+osfiletype* 自動コマンドでの'osfiletype'オプションとファイルタイプ - チェックのサポート |autocmd-osfiletypes| -*+perl* Perlインタフェース |perl| -*+python* Pythonインタフェース |python| -*+quickfix* |:make| と |quickfix| コマンド -*+rightleft* 右から左へタイプ |'rightleft'| -*+scrollbind* |'scrollbind'| -*+smartindent* |'smartindent'| -*+sniff* SniFFインターフェース (解説文章無し) -*+statusline* オプション'statusline'、'ruleformat'そして - 'titlestring'と'iconstring'の特殊フォーマット -*+syntax* 構文協調 |syntax| -*+system()* Unix のみ: |+fork|の反対 -*+tag_binary* タグファイル内の高速(二分探査)検索 |tag-binary-search| -*+tag_old_static* 静的タグの古い方法 |tag-old-static| -*+tag_any_white* tagsファイル内で空白文字を許す |tag-any-white| -*+tcl* Tclインターフェース |tcl| -*+terminfo* |terminfo|でtermcapを代替 -*+textobjects* |text-objects| 選択 -*+tgetent* 非Unix のみ: 外部termcapを使用可能 -*+title* ウィンドウタイトル設定 |'title'| -*+user_commands* ユーザ定義コマンド |user-commands| -*+viminfo* |'viminfo'| -*+visualextra* 拡張ビジュアルモードコマンド |blockwise-operators| -*+wildignore* |'wildignore'| -*+wildmenu* |'wildmenu'| -*+writebackup* |'writebackup'|がデフォルトで有効 -*+xim* Xインプットメソッド |xim| -*+xfontset* Xフォントセットサポート |xfontset| -*+xterm_clipboard* Unix のみ: xtermクリップボード操作 -*+xterm_save* xtermのスクリーンを保存と復帰 |xterm-screens| -*+X11* Unix のみ: ウィンドウタイトルを復帰可能 |X11| - -:ve[rsion] {nr} 現在は無視される。これはかつて.vimrcの中でバージョン番 - 号をチェックするために使われた。現在は":if"コマンドを - 使ってバージョン依存の振る舞いを記述できるので、削除さ - れている。 {Vi にはない} - - *:redi* *:redir* -:redi[r][!] > {file} メッセージをファイル{file}にリダイレクトする。リダイレ - クトを終了するまで、コマンド出力であるメッセージがファ - イルに書き出される。メッセージは画面にも表示される。 - [!]が含まれた時には、現在のファイルが上書きされる。[!] - が省略された時、既にファイル{file}が存在すると、コマン - ドは失敗する。 {Vi にはない} - -:redi[r] >> {file} メッセージをファイル{file}にリダイレクトする。{file} - が既に存在する時には追記する。 {Vi にはない} - -:redi[r] @{a-zA-Z} メッセージをレジスタ{a-z}にリダイレクトする。レジスタ - 名が大文字{A-Z}で与えられた時には、現在ある内容に追加 - する。 - -:redi[r] END メッセージのリダイレクトを終了する。 {Vi にはない} - - *K* -K カーソルの下の単語を参照するのにプログラムを実行する。 - プログラムの名前は'keywordprg' (kp) オプションで与えら - れる(省略地は"man")。キーワードはアルファベットと数字 - と'iskeyword'で示される文字から構成される。キーワード - はカーソルの直下、もしくは右が使用される。同じことは次 - のように行なえる -> :!{program} {keyword} - Vimのtoolsディレクトリにサンプルプログラムがある。それ - は簡易スペルチェックを行なう'ref'と呼ばれるものであ - る。 - 特別なケース: - - 'keywordprg'が空の時、":help"コマンドが使われる。よ - り効率的にヘルプを検索するために、'iskeyword'に文字 - を追加すると良い。 - - 'keywordprg'が"man"のとき、"K"の前に入力された数字 - が、"man"コマンドとキーワードの間に挿入される。例え - ば"mkdir"にカーソルがある時に"2K"を使うと、結果はこ - のようになる: -> !man 2 mkdir - - 'keywordprg'が"man -s"の時には、"K"の前に入力された - 数字は"-s"の後に挿入される。数字が与えられなかった場 - 合、"-s"は取り除かれる。 - {Vi には無い} - - *v_K* -{Visual}K "K"同様、しかしキーワードにはビジュアル選択されたテキ - ストが使用される。選択されたテキストが1行に収まる時に - しか機能しない。 {Vi にはない} - -[N]gs *gs* *:sl* *:sleep* -:[N]sl[eep] [N] [m] [N]秒間なにもしない。[m]が含まれていた時には、[N]ミリ - セカンドスリープする。 -> :sleep "sleep for one second -> :5sleep "sleep for five seconds -> :sleep 100m "sleep for hunderd millisonds - CTRL-Cで割込むことができる(MS-DOSではCTRL-Break)。"gs" - は"goto sleep"を意味する。スリープしている間カーソルは - (可視ならば)テキストの中に置かれる。 {Vi にはない} - - *g_CTRL-A* -g CTRL-A MEM_PROFILINGをdefine(非常に稀)してVimをコンパイルした - 時のみ: メモリ使用量の統計を表示する。Vimのデバッグ時 - に便利なくらい。 - -============================================================================== -2. オンラインヘルプ *online-help* - - *help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>* -<Help> or -:h[elp] ウィンドウを分割してヘルプファイルを読込専用モードで開 - く。ヘルプウィンドウが既に開かれている場合にはそれを使 - 用する。 {Vi にはない} - - *{subject}* -:h[elp] {subject} ":help"同様、加えて{subject}へタブジャンプする。 - {subject}には"*", "?" や "[a-z]"といったワイルドカード - を含むことができる。 - :help z? あらゆる"z"コマンドのヘルプへ - :help z. "z."のヘルプを開く - パターンに完全に一致する項目が無かった場合、及び複数の - 項目が一致した場合には、"最善"の一致が選ばれる。洗練さ - れたアルゴリズムでどの項目が一番最善かを決定する。これ - らの事項が計算において考慮される: - - 大小文字が一致したほうが、しない時よりも良い - - 始まりがアルファベットではない一致項目のほうが、部分 - 一致よりも優先される。 - - タグの開始位置かそれに近いほうが、そうでないものより - もより良い。 - - 多くのアルファベットが一致するほうが良い。 - - マッチしたもののうち短いほうが良い。 - 長い{subject}を与えても、より短いものにマッチしてしま - うことに注意。これがどのように働くかはコマンドラインの - 補完を考えるとわかりやすいだろう(":help subject"の後で - CTRL-Dをタイプしてみよう)。 - 複数のマッチがある場合には、CTRL-Dを押すことでそれらの - 一覧を見ることができる。例: -> :help cont<Ctrl-D> - 正規表現の|pattern|を使うには、まず":help"を行なってか - ら、ヘルプウィンドウで":tag {pattern}"を使う。":tnext" - コマンドでその他の項目へ移動することができ、":tselect" - で一致項目の一覧から選択をすることができる。 -> :help index| :tse z. - このコマンドは'|'で他のコマンドに繋ぐことができる。し - かしヘルプコマンド内では'|'をエスケープする必要はな - い。だからこれはどちらも正しく働く: -> :help | -> :help k| only - '|'の直前の空白は":help"の引数の一部に見えることに注 - 意。 - ヘルプコマンドと続くコマンドのセパレータには<LF>と<CR> - も使うことができる。<LF>や<CR>を入力するにはまずCTRL-V - をタイプする必要がある。例: -> :help so<C-V><CR>only - {Vi にはない} - -ヘルプファイルの名前はオプション'helpfile'に設定することができる。初期のヘルプ -ウィンドウの高さはオプション'helpheight'で設定することができる(初期値:20)。あ -る項目へ移動するにはタグを使う。これには2つの方法がある: -- オプションやコマンド名にカーソルをあわせて"CTRL-]"コマンド使う。これはタグが - キーワードの時にだけ使用できる。"<C-Leftmouse>"と"g<LeftMouse>"は"CTRL-]"と - 同じように働く。 -- ":ta {subject}"コマンドを使う。これはどのようなキャラクタにも使用できる。 - -戻るには"CTRL-T"を使う。 -ヘルプウィンドウを閉じるには":q"を使う。 - - *help-xterm-window* -他のxtermのウィンドウでヘルプを表示したいならば、このコマンドが使えるだろう: - :!xterm -e vim +help & - - - *:helpfind* *:helpf* -:helpf[ind] |:help|と同じだが、引数を入力するダイアログが表示され - る。{|+GUI_GTK|でコンパイルされた時のみ} - - vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/various.jax b/ja/various.jax new file mode 100644 index 000000000..486da3443 --- /dev/null +++ b/ja/various.jax @@ -0,0 +1,840 @@ +COMMENT: 様々なコマンド(コマンド、ヘルプ、印刷) +STATUS: finished 7.0e +TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> + +*various.txt* For Vim version 7.0e. Last change: 2006 Apr 22 + + + VIM リファレンスマニュアル by Bram Moolenaar + +様々なコマンド *various* + +1. 様々なコマンド |various-cmds| +2. オンラインヘルプ |online-help| +3. less、more の代わりに Vim を使う |less| + +============================================================================== +1. 様々なコマンド *various-cmds* + + *CTRL-L* +CTRL-L 画面を消去して再描画します。すでに入力されているキーを + すべて処理してから再描画します。 + + *:redr* *:redraw* +:redr[aw][!] 画面をすぐに再描画します。! を付けたときは、画面を消去 + してから再描画します。 + スクリプトや関数を実行している途中で画面を更新するのに + 便利です。マップの実行中や、'lazyredraw' がオンに設定 + されているときでも更新できます。 + + *:redraws* *:redrawstatus* +:redraws[tatus][!] カレントウィンドウのステータスラインを再描画します。 + ! を付けたときは、すべてのステータスラインを再描画しま + す。 + 'statusline' に自動更新されない項目が含まれている場合 + に、ステータスラインを更新するのに便利です。 + + *N<Del>* +<Del> ノーマルモードで数値 (|count|) を入力しているときは、 + 数字の最後の桁を削除します。 + Note: 同じことをするにの <BS> を使いたい場合は、次の + マップを .vimrc に追加してください: > + :map CTRL-V <BS> CTRL-V <Del> +< <Del> が望みどおりに機能しない場合には|:fixdel|を参照。 +訳注: "CTRL-V <BS>"はCTRL-Vを押してから<BS>を押す。 + +:as[cii] *ga* *:as* *:ascii* +ga カーソル位置の文字の文字コードを、10/16/8 進数で表示し + ます。カーソルが 'R' の上にあるときは次のように表示さ + れます: + <R> 82, Hex 52, Octal 122 ~ + ASCII 以外の文字がオプション 'isprint' に設定されてい + て、表示可能になっている場合には、特殊な表示形式もいっ + しょに表示されます。文字コードが 127 より大きいときに + は <M-x> という形式も表示されます。例: + <~A> <M-^A> 129, Hex 81, Octal 201 ~ + <p> <|~> <M-~> 254, Hex fe, Octal 376 ~ + (<p> には実際の特殊文字が表示されます。) + ファイル中の <Nul> 文字は内部的には <NL> として保存さ + れていますが、次のように表示されます: + <^@> 0, Hex 00, Octal 000 ~ + 合成文字も表示されます。'maxcombine' の設定は影響しま + せん。 + 覚え方: Get Ascii value (アスキーコードを取得) + {Vi にはない} + + *g8* +g8 カーソル位置の文字のバイト列を 16 進数で表示します。エ + ンコーディングが |UTF-8| の場合のみ正しく機能します。 + 合成文字も表示されます。'maxcombine' の設定は影響しま + せん。 + 2 文字の合成文字が結合されている文字の表示例: + e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ + {Vi にはない} {|+multi_byte| が有効な場合のみ利用でき + ます} + + *8g8* +8g8 カーソル以降の不正な UTF-8 バイト列を検索します。 + 次の二つの状況で機能します。 + 1. 'encoding' が 8-bit エンコーディングの場合。 + 2. 'encoding' が "utf-8" で、'fileencoding' が 8-bit + エンコーディングの場合。 + UTF-8 のファイルを開いたはずが、不正なバイト列が含まれ + ていて、別の 8-bit エンコーディングとして開かれてし + まった場合などに使ってください。 + 検索がファイル末尾に達しても、ファイル先頭に戻って検索 + を継続しません。 + Note: カーソルがすでに不正なバイト列の上にある場合は、 + カーソルは移動しません。 + {Vi にはない} {|+multi_byte| が有効な場合のみ利用でき + ます} + + *:p* *:pr* *:print* +:[range]p[rint] [flags] + 範囲 [range] の行を表示します (省略時は現在行を表示)。 + Note: テキストファイルを印刷する方法については + |:hardcopy| を参照してください。GUI を使用している場合 + は、メニューの File.Print から印刷できます。 + [flags] については |ex-flags| を参照してください。 + +:[range]p[rint] {count} [flags] + [range] の開始行から {count} 行を表示します([range]を + 省略した場合は現在行から開始 |cmdline-ranges|)。 + [flags] については |ex-flags| を参照してください。 + + *:P* *:Print* +:[range]P[rint] [count] [flags] + :print と同じです。シフトキーを長く押し続けてしまう人 + のために追加されました。 + [flags] については |ex-flags| を参照してください。 + + *:l* *:list* +:[range]l[ist] [count] [flags] + :print と同じですが、表示できない文字は '^'を付けて表 + 示し、行末に $ を置きます。 + [flags] については |ex-flags| を参照してください。 +訳注: 表示は 'list'、'listchars'、'display' などの設定に影響されるみたい。 + + *:nu* *:number* +:[range]nu[mber] [count] [flags] + :print と同じですが、先頭に行番号を付加します。 + (オプション 'highlight' と 'numberwidth' も参照) + [flags] については |ex-flags| を参照してください。 + + *:#* +:[range]# [count] [flags] + :number と同じです。 + + *:z* *E144* +:{range}z[+-^.=]{count} {range}に指定した行の周辺を表示します。{range} を省略 + した場合は現在行の周辺を表示します。行の範囲をどれだけ + 表示するかは {count} に指定します。{count} を省略した + 場合は、オプション 'window' の設定が使われます。ウィン + ドウが一つしかない場合は、カレントウィンドウの高さが使 + われます。 + + :z は修飾マークを付加して使うこともできます。次の効果 + があります。 + + 記号 開始行 終了行 新しいカーソル位置 ~ + ---- ------ ------ ---------- + + 現在行 1画面先 1画面先 + - 1画面前 現在行 現在行 + ^ 2画面前 1画面前 1画面前 + . 半画面前 半画面先 半画面先 + = 半画面前 半画面先 現在行 + + マークを省略した場合は、"+" が使われます。マークが "=" + の場合は、現在行の周りにマイナス記号で作った線が表示さ + れます。 + +:{range}z#[+-^.=]{count} *:z#* + ":z" と同じですが、行番号も表示します。 + {この機能が使えない Vi クローンもあります。引数が違う + 場合もあります} + + *:=* +:= [flags] 最終行の行番号を表示します。 + [flags] については |ex-flags| を参照してください。 + +:{range}= [flags] {range} で指定した範囲の最終行の行番号を表示します。た + とえば、次のコマンドは現在行の行番号を表示します。 + :.= + [flags] については |ex-flags| を参照してください。 + +:norm[al][!] {commands} *:norm* *:normal* + ノーマルモードコマンド {commands} を実行します。コマン + ドラインからノーマルモードのコマンドを実行できます。 + {commands} は、ノーマルモードで入力されたときと同じよ + うに実行されます。{commands} による変更は、一回のアン + ドゥで取り消されます。 + [!] を付けた場合はマップは適用されません。 + {commands} は実行を完了する (ノーマルモードに戻る) 必 + 要があります。 + {commands} が完了しない場合は、最後のコマンドが<Esc> + や <C-C> で終了したのと同じように動作します。 + ":normal" の実行中は画面は更新されません。挿入モードも + 必ず完了します (挿入モードを開始するには + |:startinsert| を参照)。":" コマンドも必ず完了します。 + "Q" や "gQ" を使って Ex モードを開始することはできませ + ん。 + {commands} の最初にスペースは置けません。そうしたい場 + 合はスペースの前に 1 (数字の 1) を置いてください。 + {command} の実行ではオプション 'insertmode' は無視され + ます。'|' は :normal コマンドの一部として処理されるの + で、他のコマンドを続けて書けません。:normal コマンドは + 'maxmapdepth' の制限内で再帰的に呼び出すことができま + す。 + このコマンドが再マップされないマップ|:noremap|から呼ば + れた場合でも、([!] を付けない限り) {commands} は再マッ + プされます + |:execute| コマンドには Vim スクリプトの式を指定できる + ので、印字可能文字を使って制御文字を入力することもでき + ます。例: > + :exe "normal \<c-w>\<c-w>" +< {Vi には、もちろんない} + {|+ex_extra|が有効な場合のみ利用できます} + +:{range}norm[al][!] {commands} *:normal-range* + {range} の各行に対してノーマルモードコマンド{commands} + を実行します。{commands} はカーソルが行頭にある状態で + 実行されます。その他は範囲指定の無い ":normal" コマン + ドと同じです。 + {Vi にはない} + {|+ex_extra|が有効な場合のみ利用できます} + + *:sh* *:shell* *E371* +:sh[ell] シェルを起動します。シェルを終了 ("exit"コマンドを実 + 行) すると Vim に戻ってきます。オプション 'shell' に設 + 定されているシェルコマンドを使います。 + *E360* + Note: Amiga では、コンパイラから QuickFix モードで Vim + が起動された場合には、コンパイラが標準入力を非対話型 + モードにしてしまうので使用できません。 + + *:!cmd* *:!* *E34* +:!{cmd} シェルで {cmd} を実行します。'shell' と 'shelltype'も + 参照。 + {cmd} の中の '!' は以前使用した外部プログラムに置 + き換えられます ('cpoptions' も参照)。'!' の前にバック + スラッシュがある場合はバックスラッシュが削除され '!' + は置き換えられません。 + 例: ":!ls" を実行後の ":!echo !\! \\!" は "echo ls ! + \!" と解釈、実行されます。 + 外部プログラムを実行した後で、開いているファイルのタイ + ムスタンプがチェックされます |timestamp|。 + {cmd} の中に '|' を含めることはできません(|:bar|参 + 照)。 + {cmd} の終わりを示す改行文字 (newline) 以降の文字は、 + 次の ":" コマンドとして解釈されます。改行文字の前に + バックスラッシュがある場合は、バックスラッシュは削除さ + れ、改行文字は {cmd} の一部として解釈されます。改行文 + 字の前にバックスラッシュがいくつあっても、一つだけが削 + 除されます。 + Unix ではシェルを非対話型モードで起動します。対話型 + モードで起動したい場合 (aliasを使いたい場合など) は、 + 'shellcmdflag' に "-ic" を設定してください。 + Win32の場合は|:!start|も参照。 + 外部プログラムはメッセージを出力するかもしれないので、 + 外部プログラムを実行した後にスクリーンが再描画されます。 + そのため、プログラムの出力を見逃してしまわないように、 + hit-enter プロンプトが表示されます。プロンプトを表示し + たくない場合は、次のようにします: > + :silent! !{cmd} +< これでスクリーンは再描画されません。外部プログラムが何 + かを出力した場合は CTRL-L や ":redraw!" で再描画できま + す。|shell-window|も参照。 + + *:!!* +:!! 最後の ":!{cmd}" を繰り返します。 + + *:ve* *:version* +:ve[rsion] エディタのバージョンを表示します。コンパイル時に + "__DATE__" が利用可能だった場合には、コンパイルされた + 日時も表示されます。利用不可だった場合は、リリースの最 + 終修正日時が表示されます。 + Vim の、どの機能が有効になっているかも表示されます。機 + 能名の前に '+' があれば、その機能は有効になっていま + す。'-' のときは無効になっています。 + 機能の有無を変えるには features.h を編集して、Vim をコ + ンパイルし直す必要があります。Vim スクリプトから機能の + 有無を確認するには |has()| を使います。以下に、機能の + 概要を示します。 + 行頭の文字はその機能が含まれる最小構成です: + T tiny + S small + N normal + B big + H huge + m 手動で組み込むか他の機能に依存 + (none) システム依存 + 例えば "N" と書いてあれば、その機能は + normal、big、huge バージョンの Vim に含まれます。 + + *+feature-list* + *+ARP* Amiga のみ: ARP サポートを含む +B *+arabic* |Arabic|言語サポート +N *+autocmd* |:autocmd|, 自動コマンド実行 +m *+balloon_eval* |balloon-eval| サポート。GUI が有効で、Netbeans/Sun + Workshop (|+sun_workshop|) または |+eval| が有効な場合 + に利用できます。 +N *+browse* |:browse| コマンド +N *+builtin_terms* 幾つかの組み込み端末 |builtin-terms| +B *++builtin_terms* 全部の組み込み端末 |builtin-terms| +N *+byte_offset* 'statusline'の'o'フラグ、|go|、|:goto|をサポート +N *+cindent* |'cindent'|, C言語インデント +N *+clientserver* UnixとWin32: リモート呼び出し |clientserver| + *+clipboard* |clipboard|サポート +N *+cmdline_compl* コマンドライン補完 |cmdline-completion| +N *+cmdline_hist* コマンドライン履歴 |cmdline-history| +N *+cmdline_info* |'showcmd'| と |'ruler'| +N *+comments* |'comments'| サポート +N *+cryptv* 暗号化サポート |encryption| +B *+cscope* |cscope| サポート +m *+cursorshape* |termcap-cursor-shape| サポート +m *+debug* Vim がデバッグ用にコンパイルされた +N *+dialog_gui* |:confirm| のGUIダイアログをサポート +N *+dialog_con* |:confirm| のコンソールダイアログをサポート +N *+dialog_con_gui* |:confirm| GUIとコンソールダイアログをサポート +N *+diff* |vimdiff|と'diff' +N *+digraphs* |digraphs| + *+dnd* "~レジスタ |quote_~|を使ったDnDのサポート +B *+emacs_tags* |emacs-tags| ファイル +N *+eval* 式評価(訳注:Vimスクリプト) |eval.txt| +N *+ex_extra* Vimの拡張Exコマンド: |:center|, |:left|、 + |:normal|、|:retab| 及び |:right| +N *+extra_search* |'hlsearch'| と |'incsearch'| オプション +B *+farsi* |farsi| 言語 +N *+file_in_path* |gf|, |CTRL-W_f| と |<cfile>| +N *+find_in_path* include ファイル検索: |[I|、|:isearch|、 + |CTRL-W_CTRL-I|、|:checkpath|、その他 +N *+folding* |folding| + *+footer* |gui-footer| + *+fork* Unix のみ: |fork| シェルコマンド +N *+gettext* メッセージの翻訳 |multi-lang| + *+GUI_Athena* Unix のみ: Athena |GUI| + *+GUI_neXtaw* Unix のみ: neXtaw |GUI| + *+GUI_GTK* Unix のみ: GTK+ |GUI| + *+GUI_Motif* Unix のみ: Motif |GUI| + *+GUI_Photon* QNX のみ: Photon |GUI| +m *+hangul_input* ハングル入力サポート |hangul| + *+iconv* iconv() 関数が組み込まれている + *+iconv/dyn* |iconv-dynamic| |/dyn| と同じ +N *+insert_expand* |insert_expand| 挿入モード補完 +N *+jumplist* |jumplist| +B *+keymap* |'keymap'| +B *+langmap* |'langmap'| +N *+liball* |libcall()| +N *+linebreak* |'linebreak'|、|'breakat'| と |'showbreak'| +N *+lispindent* |'lisp'| +N *+listcmds* バッファリストや引数リストに対するVimコマンド + |buffer-hidden| |:argdelete| +N *+localmap* バッファローカルなマップのサポート |:map-local| +N *+menu* |:menu| +N *+mksession* |:mksession| +N *+modify_fname* |filename-modifiers| +N *+mouse* マウス操作 |mouse-using| +N *+mouseshape* |'mouseshape'| +B *+mouse_dec* Unix のみ: Dec端末マウス操作 |dec-mouse| +N *+mouse_gpm* Unix のみ: Linuxコンソールマウス操作 |gpm-mouse| +B *+mouse_netterm* Unix のみ: nettermマウス操作 |netterm-mouse| +N *+mouse_pterm* QNX のみ: ptermマウス操作 |qnx-terminal| +N *+mouse_xterm* Unix のみ: xtermマウス操作 |xterm-mouse| + *+multi_byte* マルチバイト文字(日韓中) |multibyte| +N *+multi_byte_ime* Win32 IMEサポート +m *+mzscheme* Mzscheme インターフェース |mzscheme| +m *+mzscheme/dyn* Mzscheme インターフェース |mzscheme-dynamic| |/dyn| +m *+netbeans_intg* |netbeans| +m *+ole* Win32 GUI のみ: |ole-interface| + *+osfiletype* オートコマンドでの'osfiletype'オプションとファイルタイ + プチェックのサポート |autocmd-osfiletypes| +N *+path_extra* 'path'や'tags'での上下階の検索 +m *+perl* Perl インターフェース |perl| +m *+perl/dyn* Perl インターフェース |perl-dynamic| |/dyn| + *+postscript* |:hardcopy| でPostScriptファイルの書き出し +N *+printer* |:hardcopy| コマンド +H *+profile* |:profile| コマンド +m *+python* Python インターフェース |python| +m *+python/dyn* Python インターフェース |python-dynamic| |/dyn| +N *+quickfix* |:make| と |quickfix| コマンド +N *+reltime* |reltime()| 関数 +B *+rightleft* 右から左へタイプ |'rightleft'| +m *+ruby* Ruby インターフェース |ruby| +m *+ruby/dyn* Ruby インターフェース |ruby-dynamic| |/dyn| +N *+scrollbind* |'scrollbind'| +B *+signs* |:sign| +N *+smartindent* |'smartindent'| +m *+sniff* SniFFインターフェース |sniff| +N *+statusline* オプション'statusline'、'rulerformat'と、 + 'titlestring'と'iconstring'の特殊フォーマット +m *+sun_workshop* |workshop| +N *+syntax* 構文強調 |syntax| + *+system()* Unix のみ: |+fork|の反対 +N *+tag_binary* タグファイル内の高速(二分探査)検索 |tag-binary-search| +N *+tag_old_static* 静的タグの古い方法 |tag-old-static| +m *+tag_any_white* tagsファイル内で空白文字を許す |tag-any-white| +m *+tcl* Tcl インターフェース |tcl| +m *+tcl/dyn* Tcl インターフェース |tcl-dynamic| |/dyn| + *+terminfo* |terminfo|でtermcapを代替 +N *+textobjects* |text-objects| 選択 + *+tgetent* 非Unix のみ: 外部termcapを使用可能 +N *+title* ウィンドウタイトル設定 |'title'| +N *+toolbar* |gui-toolbar| +N *+user_commands* ユーザ定義コマンド |user-commands| +N *+viminfo* |'viminfo'| +N *+vertsplit* ウィンドウの垂直分割 |:vsplit| +N *+vertualedit* |'virtualedit'| +S *+visual* ビジュアルモード |Visual-mode| +N *+visualextra* 拡張ビジュアルモードコマンド |blockwise-operators| +N *+vreplace* |gR|と|gr| +N *+wildignore* |'wildignore'| +N *+wildmenu* |'wildmenu'| +S *+windows* 複数ウィンドウ +m *+writebackup* |'writebackup'|がデフォルトで有効 +m *+xim* Xインプットメソッド |xim| + *+xfontset* Xフォントセットサポート |xfontset| + *+xsmp* XSMP(X session management)サポート + *+xsmp_interact* 対話型XSMP(X session management)サポート +N *+xterm_clipboard* Unix のみ: xtermクリップボード操作 +m *+xterm_save* xtermのスクリーンを保存と復帰 |xterm-screens| +N *+X11* Unix のみ: ウィンドウタイトルを復帰可能 |X11| + + */dyn* *E370* *E448* + 機能が動的ライブラリを利用する場合には機能名に"/dyn" + が付加されます。 + +:ve[rsion] {nr} 現在は無視されます。これはかつて .vimrc の中でバージョ + ン番号をチェックするために使われていました。現在は + ":if" コマンドを使ってバージョン依存の振る舞いを記述で + きるので、削除されています。{Vi にはない} + + *:redi* *:redir* +:redi[r][!] > {file} コマンドの出力 (メッセージ) を {file} にリダイレクトし + ます。メッセージは、リダイレクトを終了するまで、ファイ + ルに出力されます。メッセージは画面にも表示されます。 + [!] を付けたときは、既存のファイルが上書きされます。 + [!] を省略した場合は、すでに {file} が存在していると、 + コマンドは失敗します。 + ":redir" を同時に複数使用することはできません。 + ":redir" を実行すると、新しいリダイレクトを開始する前 + に、すでに実行されている他のリダイレクトは閉じられま + す。 + 実行中のコマンドやメッセージがスクリーンに表示されない + ようにするには、コマンドを関数の中に書き、その関数を + ":silent call Function()" と実行してください。 + このコマンドの代わりに、オプション 'verbosefile' を使 + うこともできます。":redir" と同時に使うこともできま + す。 + {Vi にはない} + +:redi[r] >> {file} メッセージを {file} にリダイレクトします。 + {file} が既に存在する場合は追記します。 {Vi にはない} + +:redi[r] @{a-zA-Z}> メッセージをレジスタ {a-z} にリダイレクトします。レジ + スタ名が大文字 {A-Z} の場合は、そのレジスタに追記され + ます。互換性のため、レジスタ名の後ろの ">" は省略でき + ます。{Vi にはない} +:redi[r] @{a-z}>> メッセージをレジスタ {a-z} に追記します。 {Vi にはない} + +:redi[r] @*> メッセージをクリップボードにリダイレクトします。互換性 + のため、レジスタ名の後ろの ">" は省略できます。{Viには + ない} +:redi[r] @*>> メッセージをクリップボードに追記します。 {Vi にはない} + +:redi[r] @"> メッセージを無名レジスタにリダイレクトします。互換性の + ため、レジスタ名の後ろの ">" は省略できます。 + {Vi にはない} +:redi[r] @">> メッセージを無名レジスタに追記します。{Vi にはない} + +:redi[r] => {var} メッセージを変数にリダイレクトします。変数が存在しない + 場合は、作成されます。変数がすでにある場合は、空文字列 + で初期化されます。文字列変数のみ使えます。リダイレクト + を開始した後で変数を変更したり、ロックしたり、変数タイ + プを変更したりすると、それ以降のコマンドがメッセージを + 出力するときにエラーが起こります。{Vi にはない} +:redi[r] =>> {var} メッセージを変数に追記します。文字列変数のみ使えます。 + {Vi にはない} + +:redi[r] END メッセージのリダイレクトを終了します。 {Vi にはない} + + *:sil* *:silent* +:sil[ent][!] {command} {command} を静かに実行します。メッセージは表示されず、 + メッセージ履歴にも残りません。 + [!] を付けた場合は、エラーが起きたときでもエラーメッ + セージは表示されず、コマンドやマップは中断されません。 + その場合でも |v:errmsg| はセットされます。 + [!] を付けない場合は、エラーメッセージは通常どおりに表 + 示されます。 + |:redir| によるリダイレクトは通常どおり機能します。 + |:silent| を使うとコマンドの出力をスクリーンに表示する + ことなくリダイレクトすることができます。例: > + :redir >/tmp/foobar + :silent g/Aap/p + :redir END +< ノーマルモードコマンドを静かに実行するには|:normal|コ + マンドを使用します。例えばメッセージを表示することなく + 文字列を検索するには: > + :silent exe "normal /path\<CR>" +< ":silent!" は失敗するかもしれないコマンドを実行すると + きには便利ですが、エラーが無視されてしまいます。例: > + :let v:errmsg = "" + :silent! /^begin + :if v:errmsg != "" + : ... パターンが見付からなかった +< ":silent" は hit-enter プロンプトも抑制します。外部プ + ログラムを実行したとき、その出力は表示されたままになっ + てしまいます。その場合は|CTRL-L|でスクリーンを綺麗にで + きます。 + ":silent menu ..." はコマンドをコマンドラインにエコーし + ないメニューを定義できます。しかしメニューに割り当てた + コマンドのメッセージは表示されます。表示しないようにす + るにはそのコマンド自身に ":silent" を付けてください: + ":silent menu .... :silent command" + + *:verb* *:verbose* +:[count]verb[ose] {command} + 'verbose' に [count] を設定した状態で {command} を実行 + します。[count] を省略した場合は1が設定されます。 + ":0verbose" として 'verbose' をゼロにすることもできま + す。 + ":silent" と一緒に使用すると、メッセージは生成されます + が、表示はされません。 + ":silent" と ":verbose" を一緒に使用するとメッセージを + 生成して |v:statusmsg| を確認することができます。例: > + :let v:statusmsg = "" + :silent verbose runtime foobar.vim + :if v:statusmsg != "" + : " foobar.vim が見付からない + :endif +< コマンドを連続させた場合は、":verbose"は最初のコマンド + だけに適用されます: > + :4verbose set verbose | set verbose +< verbose=4 ~ + verbose=0 ~ + メッセージをログファイルに出力するには 'verbosefile' + を使ってください。 + + *:verbose-cmd* +Vim のオプション、マップ、短縮入力、ユーザー定義関数、ユーザー定義コマンド、強 +調グループ、オートコマンド、を表示するとき、'verbose' がゼロ以外だと、それが設 +定された場所も表示されます。手動で設定したときは "Last set" メッセージは表示さ +れません。関数、ユーザーコマンド、オートコマンド、を実行中に設定された場合に +は、そのコマンドを定義したスクリプトが表示されます。 +{|+eval| が有効な場合のみ利用できます} + + *K* +K カーソル位置のキーワードを調べるためのプログラムを実行 + します。プログラムの名前はオプション 'keywordprg' (kp) + で設定します (初期設定は "man")。キーワードはアルファ + ベット、数字、'iskeyword' に設定された文字から構成され + ます。 + カーソルの下、もしくは右側のキーワード使用されます。次 + のコマンドで同じことができます: > + :!{program} {keyword} +< Vim の tools ディレクトリにサンプルプログラムがありま + す。'ref' という簡易スペルチェックプログラムです。 + 特別なケース: + - 'keywordprg' が空の場合は、":help" コマンドが使われ + ます。検索しやすくするために 'iskeyword' に文字を追 + 加すると良いでしょう。 + - 'keywordprg' が "man" の場合は、"K" の前に入力された + カウントが "man" とキーワードの間に挿入されます。例 + えば、"mkdir" にカーソルがあって、"2K" をを実行する + と、結果はこのようになります: > + !man 2 mkdir +< - 'keywordprg' が "man -s" の場合は、"K" の前に入力さ + れたカウントは "-s" の後に挿入されます。カウントを省 + 略した場合は、"-s" は除去されます。 + {Vi にはない} + + *v_K* +{Visual}K "K" と同じですが、キーワードにはビジュアル選択されたテ + キストが使用されます。複数行を選択したときは機能しませ + ん。{Vi にはない} + +[N]gs *gs* *:sl* *:sleep* +:[N]sl[eep] [N] [m] [N] 秒間なにもしません。[m] を付けると、[N] ミリ秒間ス + リープします。"gs" に指定する数値は常に秒単位です。省 + 略時は 1 秒間スリープします。 > + :sleep " 1 秒スリープ + :5sleep " 5 秒スリープ + :sleep 100m " 100 ミリ秒スリープ + 10gs " 10 秒スリープ +< CTRL-C で割り込むことができます(MS-DOSではCTRL-Break)。 + "gs" は "goto sleep" の略です。 + カーソルが表示可能な位置にある場合は、スリープしている + 間、カーソルはテキスト中に表示されます。 + {Vi にはない} + + *g_CTRL-A* +g CTRL-A MEM_PROFILING を define して Vim をコンパイルしたとき + み使えます (通常は使いません)。メモリ使用量の統計を表 + 示します。Vim をデバッグするときなどに使います。 + +============================================================================== +2. オンラインヘルプ *online-help* + + *help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>* +<Help> or +:h[elp] 新しいウィンドウを作成し、ヘルプファイルを読み込み専用 + で開きます。ヘルプウィンドウがすでに開いているときはそ + のウィンドウを使います。カレントウィンドウの幅がスク + リーンと同じか、 80 文字分以上のときにはヘルプウィンド + ウはカレントウィンドウのすぐ上に作成されます。そうでな + いときには、ヘルプウィンドウは最上部に作成されます。 + 複数言語のヘルプが利用可能なときは、言語を選択するため + に、オプション 'helplang' が参照されます。 + {Vi にはない} + + *{subject}* *E149* *E661* +:h[elp] {subject} ":help"と同じですが、加えて、{subject} へタブジャンプ + します。 + {subject} には "*", "?"、"[a-z]" といったワイルドカー + ドも指定できます。 + :help z? "z" コマンドのいずれかのヘルプを開く + :help z. "z." のヘルプを開く + パターンに完全に一致する項目が無かった場合、または、複 + 数の項目が一致した場合には、"最善"の一致が選択されま + す。洗練されたアルゴリズムで最善な項目が決定されます。 + 次のような優先順位が使われます: + - 大小文字が一致したほうが、しない時よりも良い + - 非英数字のあとにマッチするほうが、単語の真ん中にマッ + チするものよりも良い。 + - タグ名の先頭でマッチするか、なるべく先頭に近いほう + が、そうでないものよりも良い。 + - より多くの英数字がマッチするほうが良い。 + - 短いマッチが良い。 + + {subject} のヘルプが複数の言語にある場合には、言語を選 + 択するために、オプション 'helplang' が参照されます。 + 言語を指定してタグを検索するには {subject} に "@ab" を + 付加します。"ab" は2文字の言語コードです。 + |help-translated| を参照。 + + 長い {subject} を与えても、より短いものにマッチするこ + ともあります。この動作はコマンドラインの補完を考えると + わかりやすいでしょう (":help subject" の後でCTRL-Dをタ + イプしてみてください)。 + 複数の候補がある場合には、CTRL-Dを押すことで一覧を見る + ことができます。例: > + :help cont<Ctrl-D> +< 正規表現 (|pattern|) を使うには、まず":help"を実行し、 + ヘルプウィンドウで ":tag {pattern}" を実行します。 + ":tnext"コマンドでその他の項目へ移動することができ、 + ":tselect"でマッチした候補の一覧から選択することができ + ます。 > + :help index| :tse z. +< :help コマンドの後ろには '|' で他のコマンドを続けるこ + とができます。しかし、'|' のヘルプを引くのに '|' をエ + スケープする必要はありません。したがって、次の例はどち + らも正しく機能します: > + :help | + :help k| only +< Note: '|' の直前の空白があると ":help" コマンドの引数 + の一部として解釈されてしまいます。 + ヘルプコマンドと続くコマンドを区切るには <LF> と <CR> + も使えます。<LF> や <CR> を入力するには、CTRL-V を使い + ます。例: > + :help so<C-V><CR>only +< {Vi にはない} + +:h[elp]! [subject] ":help" と同じですが、非英語のヘルプファイルを開いてい + るときには、それと同じ言語を優先します。 + |help-translated|も参照。 + + *:helpg* *:helpgrep* +:helpg[rep] {pattern}[@xx] + すべてのヘルプファイルから {pattern} を検索して、マッ + チした行の一覧を作成します。そして最初にマッチした行へ + ジャンプします。 + [@xx] を指定した場合は、言語 "xx" のヘルプのみマッチし + ます。 + |quickfix|コマンドを使ってマッチした行の一覧を順に移動 + できます。例えば、|:cnext|で次の項目へジャンプしたり、 + |:cwindow|でマッチした行の一覧をクイックフィックスウィ + ンドウに表示できます。 + {pattern} には Vim の正規表現を使用できます|pattern|。 + 'ignorecase' は影響しません。大文字と小文字を区別する + には "\c" を使ってください。 + 大文字と小文字を区別して検索する例: > + :helpgrep Uganda +< 区別しない例: > + :helpgrep uganda\c +< フランス語のヘルプを検索: > + :helpgrep backspace@fr +< 他のコマンドを後ろに続けることはできません。すべての文 + 字はパターンの一部として解釈されます。必要なら + |:execute| を使ってコマンドを並べることができます。 + 圧縮されたヘルプファイルは検索されません(Debianはヘル + プファイルを圧縮します)。 + {Vi にはない} + + *:lh* *:lhelpgrep* +:lh[elpgrep] {pattern}[@xx] + ":helpgrep" と同じですが、クイックフィックスリストでは + なく、ロケーションリストを使います。ヘルプウィンドウが + すでに開いている場合は、そのウィンドウのロケーションリ + ストを使います。開いていない場合は、新しいヘルプウィン + ドウを作成し、そのウィンドウのロケーションリストをセッ + トします。カレントウィンドウのロケーションリストは変更 + されません。 + + *:exu* *:exusage* +:exu[sage] Ex コマンドのヘルプを表示します。Nvi との互換性のため + 追加されました。{Vi にはない} + + *:viu* *:viusage* +:viu[sage] ノーマルモードコマンドのヘルプを表示します。Nvi との互 + 換性のため追加されました。{Vi にはない} + +|:help|に引数を指定しなかった場合には 'helpfile' に設定されたファイルが開かれ +ます。引数を与えた場合には 'runtimepath' に設定されたすべてのディレクトリの +"doc/tags" から検索されます。 + +ヘルプウィンドウの高さの初期値は 'helpheight' で設定できます (標準設定: 20)。 + +ある項目へジャンプするにはタグを使います。これには2つの方法があります: +- オプションやコマンド名にカーソルをあわせて "CTRL-]" コマンド使う。これはタグ + がキーワードの時にだけ使用できます。"<C-Leftmouse>" と "g<LeftMouse>" は + "CTRL-]" と同じ動作をします。 +- ":ta {subject}" コマンドを使う。これはどのような文字でも使用できます。 + +ジャンプ先から戻るには CTRL-T か CTRL-O を使います。 +ヘルプウィンドウを閉じるには ":q" を使います。 + +探しているものが複数の項目にマッチする場合には、次のようにして各項目にジャンプ +できます: +1. ヘルプウィンドウを開く +2. 調べるタグにスラッシュを付けて ":tag" コマンドを実行する。例: > + :tag /min +3. ":tnext" を実行してマッチした次の項目へジャンプする。 + +プラグインなどのために、ヘルプを追加できます。そのために、配布されているヘルプ +ファイルに変更を加える必要はありません。|add-local-help|を参照。 + +ローカルヘルプファイルを書くには |write-local-help|を参照。 + +Note: ローカルヘルプファイルのタイトル行 (1 行目) は自動的にヘルプファイル +"help.txt" のセクション "LOCAL ADDITIONS" に追加されます|local-additions|。こ +れは Vim でファイルを開いたときに追加されるので、ヘルプファイル自体は変更され +ません。すべてのヘルプファイルの 1 行目が "LOCAL ADDITIONS" に追加されますが、 +$VIMRUNTIME/docにあるファイルは対象外です。 + + *help-xterm-window* +他の xterm ウィンドウでヘルプを表示するには、このコマンドを使ってください: > + :!xterm -e vim +help & +< + + *:helpfind* *:helpf* +:helpf[ind] |:help|と同じですが、引数を入力するためのダイアログを + 使います。後方互換性のために残さされています。現在は組 + み込みのダイアログを使用せず、メニューの + ToolBar.FindHelp を使います。{|+GUI_GTK|が有効な場合の + み利用できます} + {Vi にはない} + + *:helpt* *:helptags* + *E154* *E150* *E151* *E152* *E153* *E670* +:helpt[ags] {dir} ディレクトリ {dir} のヘルプタグファイルを作成します。 + "*.txt" と "*.??x" というファイル内のスター (*) で囲ま + たタグがすべてスキャンされます。"*.??x" というファイル + は翻訳ヘルプです。"tags-??" というタグファイルが生成さ + れます。|help-translated|を参照。 + 作成されたタグファイルはソートされます。 + タグの重複があるときはエラーメッセージが表示されます。 + すでにあるタグファイルは警告なしに上書きされます。 + ランタイムディレクトリのヘルプタグファイルを作成し直す + には次のようにします (ファイルの書き込み権限が必要): > + :helptags $VIMRUNTIME/doc +< {Vi にはない} + + +翻訳ヘルプ (TRANSLATED HELP) *help-translated* + +翻訳ヘルプを追加し、英語のヘルプファイルと共存させることができます。 +'runtimepath' の "doc" ディレクトリにあるすべてのヘルプが検索対象になります。 +{|+multi_lang|が有効な場合のみ利用できます} + +今のところ、以下の翻訳が利用可能です: + Chinese - 共同翻訳 + French - 翻訳者 David Blanchet + Italian - 翻訳者 Antonio Colombo + Polish - 翻訳者 Mikolaj Machowski + Russian - 翻訳者 Vassily Ragosin +詳しくは Vim のウェブサイトを参照してください: + http://www.vim.org/translations.php + +翻訳ヘルプファイルの名前は次のようになってます: + + help.abx + howto.abx + ... + tags-ab + +"ab" は 2 文字の言語コードでです。例えばイタリア語なら次のような名前になりま +す: + + help.itx + howto.itx + ... + tags-it + +訳注: 日本語の言語コードは ja です。help.jax + +オプション 'helplang' に言語の優先順位を指定できます。初期設定は環境から自動的 +に設定されます。ヘルプを検索するときはまず、優先の高い言語からタグが検索されま +す。見つからなかった場合は、英語のヘルプが使われます。 + +言語を指定してタグを検索するには "@ab" をタグ名に付け加えます。"ab" は 2 文字 +の言語コードです。例: > + :he user-manual@it + :he user-manual@en +最初の例は、'helplang' が未設定の場合でも、イタリア語のユーザマニュアルを検索 +します。 +2 番目の例は、'helplang' が "it" に設定されている場合でも、英語のユーザマニュ +アルを検索します。 + +":help" コマンドでコマンドライン補完をするとき、複数の言語でタグが見つかった場 +合には "@en" が付加されます。タグが英語だけにある場合には、"@en" は省略されま +す。 + +翻訳ヘルプで |CTRL-]| や ":help!" を使うと、同じ言語のタグが検索されます。見つ +からなかった場合は、言語を選択するために 'helplang' が参照されます。 + +ヘルプファイルのエンコーディングは latin1 か utf-8 にしてください。非 ASCII 文 +字が 1 行目にある場合、そのヘルプファイルは utf-8 であると判断されます。ヘッダ +の "For Vim version" を翻訳しておくとよいでしょう。 + +一つのディレクトリの一つの言語のヘルプファイルはすべて同じエンコーディングを +使ってください。。別の言語なら別のエンコーディングを使用できます。ディレクトリ +を分けた場合は、同じ言語で別のエンコーディングを使用できます。 + +翻訳のヒント: +- タグは翻訳しない。そうすれば 'helplang' を使って言語の優先順位を指定できま + す。言語用の新しいタグを追加するのは構いません。 +- ファイルの一部を翻訳しない場合は、英語のままタグを追加し、"tag@en" 表記を使 + えるようしてください。 +- ヘルプファイルとタグファイルをまとめてダウンロードできるようにしてください。 + そうすれば、ユーザはそれを "doc" ディレクトリにコピーするだけで使えます。 + www.vim.org からリンクしたいので、Bramに連絡してください。 +- タグファイルを作成するには |:helptags| を使います。指定したディレクトリのす + べての言語のファイルが処理されます。 + +============================================================================== +3. less、more の代わりに Vim を使う *less* + +less や more ではファイルを構文強調表示できません。代わりに、Vim を使うことが +できます。それには、シェルスクリプト "$VIMRUNTIME/macros/less.sh" を使います。 + +このシェルスクリプトは Vim スクリプト "$VIMRUNTIME/macros/less.vim" を使って、 +less のコマンドをシミュレートするためのマップを設定します。less コマンド以外は +通常どおり、Vim のコマンドを使うことができます。 + +完璧に同じ動作ではありません。例えば、短いファイルを表示する場合でも、Vim はス +クリーンを占有します。しかし、ほとんどの場合は満足に機能します。それにとにか +く、構文強調表示することができます。 + +"h" キーを押すと使用できるコマンドのショートヘルプが表示されます。 + + vim:tw=78:ts=8:ft=help:norl: From 2d7ceca61a5c68d2c4bbefd6c93ee5a10e4cade0 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Wed, 2 Aug 2006 16:11:07 +0000 Subject: [PATCH 031/783] Add: translation guide (beta). git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@31 a429a4b8-4c93-91f1-de24-85204d8cde48 --- guide.txt | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 guide.txt diff --git a/guide.txt b/guide.txt new file mode 100644 index 000000000..786309d6f --- /dev/null +++ b/guide.txt @@ -0,0 +1,201 @@ + + + Vim ドキュメント翻訳者の手引き + + +- 半角と全角 + ASCII文字は半角文字を使う + カタカナは全角文字を使う + +- 数字 + 漢数字(一、二)ではなく、算用数字(1, 2)を使う + ただし、一時的、統一、など、日本語の一部は漢数字 + +- 文中に英数字がある場合には前後に空白を入れる。 + 例: 文の中に 1 つの English が混ざる。But 句読点の前後は空白なし。 + 他の翻訳プロジェクトでも空白を入れているところ多し + ただ、空白を入れないほうが書きやすいし読みやすいと感じる + +- 口調 + 「だ、である」調にする + 個人的には「です、ます」調が好み + リファレンスマニュアルとユーザーマニュアルで使い分けるのもあり? + +- 句読点は「、」と「。」を使用する + +- 訳注 + 注釈には、原文を捕捉するものと、翻訳者の作業用メモ、の 2 種類がある + 行単位で書くと小細工できて都合がいい +訳注: 原文が分かり難いようだったら +訳注: このように注釈を入れ捕捉する +訳注メモ: こんな感じでリリースに含めないようなメモを書く +訳注メモ: 作業ログ、疑問、注意点など、他の翻訳者が後で参照できるようにする +訳注メモ: リリースに含めないと利用者からのフィードバックを得られないか? +訳注メモ: 消さないほうが利用者にとって分かりやすいか? +訳注メモ: 名前も入れておくと分かりやすい? + +- ファイル形式 + 文字コードは UTF-8 + 改行文字は UNIX 形式(\n) + :set fileencoding=utf-8 fileformat=unix + +- _not_ や ALL などの強調表現 + 全角のバッククォート (‘) で始まり、シングルクォート (’) で終わりを括る。 + 日本語的な表現ではないのでなにもしなくていいのではないか? + というか非日常的な記号は使いたくない + +- 命令形で書かれている文 + リファレンスマニュアルなので、命令しているというよりは操作の手順を簡潔に述 + べているだけであって、特に命令形だからという意識はしなくて良い。 + +- backtick(`) + バッククォート + +- backslash(\) + バックスラッシュ + マニュアルのどこかで円記号との関連についての注意書きをした上で、あとはバッ + クスラッシュに統一する。 + +- カッコの名前 + square brackets([]) + brace({}) + parenthesis(()) + () 丸カッコ + [] 角カッコ + {} 波カッコ + <> 折カッコ + 漢字と記号がわかれば、どれがどれだかハッキリわかる + +- dot(.) + ドット + +- Introduction + はじめに + +- {not in Vi} + {Vi にはない} + +- {not available when compiled without the |+cindent| feature} + {} + +- external command + |:!|で使用するような、"ls"や"cat"などいわゆる普通のプログラム + Vimのコマンドと特に区別して + 「外部プログラム」 + +- syntax highlighting + 構文強調表示 + シンタックスハイライティング + シンタックス強調表示 + 構文ハイライト + +- Vim の表記 + 一般名称として、ソフトウェア、エディタとしてのVimを指す時には「Vim」と書く。 + シェルなどで入力されるコマンドとしては「vim」もしくは「gvim」と書く。 + +- ファイル、オプションその他の表記 + 'compatible' option ... == オプション'compatible' + .vimrc file == ファイル.vimrc + というように型というかクラスというか、そういうものを書くときはその名前の前 + に前置するよう統一する。ただし現状では徹底してない。 + the spec file buffers + specがファイルの名前ではなく一般的なファイルのクラスを定義するようなものの + 場合はこの限りではない。 + 表記や文脈から'compatible'や.vimrcでもわかる?省略したほうがすっきりする + +- Selection (X11の) + セレクション + +- default + 標準設定、標準の、初期設定、デフォルト + なるべくデフォルトはさけたい + + +意見 + +どのような利用者を想定するか。それによって表現が変わる。 + +{not in Vi} +のような表記には翻訳マニュアル独自のシンタックスファイルで対応してはどうか + +Ex コマンドやオプションに使われるような単語はそのままカタカナにしたほうが +分かりやすいのではないか? +ただしカタカナばかりでは読みにくい分かりにくい + +モードの名前は漢字かカタカナか統一したほうがいいと思う +思い切って Normal モードとか Insert モードとかでもいい気がする + +コマンドラインはVimのコマンドラインとシェルのコマンドラインで紛らわしい +まぁ分かるか + +専門用語は無理せずそのままカタカナにする +必要なら別のファイルに説明を書いておく? + + +参考資料 + +辞書.辞典.翻訳.語学検索:翻訳のためのインターネットリソース + http://www.kotoba.ne.jp/ + +IBM 情報処理用語英和対訳集 + http://www-6.ibm.com/jp/manuals/nlsdic/nlsdic.html + +Excite エキサイト 翻訳 (機械翻訳) + http://www.excite.co.jp/world/english/ + +Linux JF (Japanese FAQ) Project + http://www.linux.or.jp/JF/ +JF 文章文体ガイド + http://www.linux.or.jp/JF/JFdocs/jf-styleguide.html +JF で翻訳できるぞ mini HOWTO + http://www.linux.or.jp/JF/JFdocs/JFhonyaku.html + +JM Project + http://www.linux.or.jp/JM/ +JM 翻訳作業の手引き + http://www.linux.or.jp/JM/guidance/index.html +翻訳の指針 + http://www.linux.or.jp/JM/guidance/translation_note.html + +Japanese Manual Project for FreeBSD + http://www.jp.freebsd.org/man-jp/ +JPMANマニュアル校正ガイドライン + http://www.jp.freebsd.org/man-jp/docs/guideline.html +共通な訳語の対訳表 + http://www.jp.freebsd.org/man-jp/docs/wordlist.txt + +The FreeBSD Japanese Documentation Project + http://www.jp.freebsd.org/doc-jp/index.html +対訳表 + http://www.jp.freebsd.org/doc-jp/tt.html + +WIDE IPv6 WG による訳語集 + http://www.v6.wide.ad.jp/Documents/glossary.txt + +FreeBSD Security Advisory 翻訳メモ + http://home.jp.freebsd.org/%7Ehrs/doc-jp/freebsd-sa.txt + +X Japanese Documentation Project + http://xjman.dsl.gr.jp/ +翻訳の手引 + http://xjman.dsl.gr.jp/translation.html +訳語リスト + http://xjman.dsl.gr.jp/dist/word.txt +Xlib - C Language X Interface + http://xjman.dsl.gr.jp/X11R6/X11/index.html +用語集 + http://xjman.dsl.gr.jp/X11R6/X11/glossary.html + +Mozilla Japan 翻訳部門 + http://www.mozilla-japan.org/jp/td/ +参考資料 + http://www.mozilla-japan.org/jp/td/links.html + +Pythonドキュメント翻訳プロジェクト + http://www.python.jp/Zope/pythondoc_jp/index_html + +翻訳通信 + http://homepage3.nifty.com/hon-yaku/tsushin/ +仁平和夫(にひら かずお)『翻訳のコツ』 + http://homepage3.nifty.com/hon-yaku/tsushin/bn/200209SAp2.pdf + From 1a802af756ae8515fcb5c5e80276ffe00767f2a2 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Tue, 15 Aug 2006 17:01:56 +0000 Subject: [PATCH 032/783] *add some notes git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@32 a429a4b8-4c93-91f1-de24-85204d8cde48 --- guide.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/guide.txt b/guide.txt index 786309d6f..987be0b2a 100644 --- a/guide.txt +++ b/guide.txt @@ -16,6 +16,16 @@ 他の翻訳プロジェクトでも空白を入れているところ多し ただ、空白を入れないほうが書きやすいし読みやすいと感じる +- 行末の「 >」及び行頭の「<」 + これらはサンプルを示すsyntax hightlightをかけるためのキーワードになっている + 。helpIgnoreグループになっているので、見落とさないように色を変えておいた方が + よい。 + :hi Ignore ctermfg=red + :syn match Error /\%>79v.*/ + +- 1行は78カラム以内 + kaoriya版に付属のformat.vimを入れてgqを使うとそのように整形できる。 + - 口調 「だ、である」調にする 個人的には「です、ます」調が好み From c71ea49bdc4425ca4234ed6a97a5590409dcb745 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 19 Aug 2006 14:57:46 +0000 Subject: [PATCH 033/783] fix: update farsi to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@33 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/farsi.txt | 72 ++++++++++++++++++++++++++-------------------------- ja/farsi.jax | 30 +++++++++++----------- 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/en/farsi.txt b/en/farsi.txt index 47872e255..d655caf0c 100644 --- a/en/farsi.txt +++ b/en/farsi.txt @@ -1,4 +1,4 @@ -*farsi.txt* For Vim version 6.3. Last change: 2002 Oct 29 +*farsi.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Mortaza Ghassab Shiran @@ -42,7 +42,7 @@ o Changing keyboard mapping and reverse insert modes using a single o Backing from reverse insert mode to the correct place in the file (if possible). -o While in Farsi mode, numbers are entered from left to right. Upon entering +o While in Farsi mode, numbers are entered from left to right. Upon entering a none number character, that character will be inserted just into the left of the last number. @@ -54,8 +54,8 @@ o Farsi keymapping on the command line in reverse insert mode. o Toggling between left-to-right and right-to-left via F8 function key. -o Toggling between Farsi ISIR-3342 standard encoding and VIM Farsi via F9 - function key. Since this makes sense only for the text written in +o Toggling between Farsi ISIR-3342 standard encoding and Vim Farsi via F9 + function key. Since this makes sense only for the text written in right-to-left mode, this function is also supported only in right-to-left mode. @@ -66,7 +66,7 @@ If the "extra" archive has been unpacked, the following files are found in the subdirectories of the '$VIM/farsi' directory: + far-a01.pcf X Windows fonts for Unix including Linux systems - + far-a01.bf X Windows fonts for SunOs + + far-a01.bf X Windows fonts for SunOS + far-a01.f16 a screen fonts for Unix including Linux systems + far-a01.fon a monospaced fonts for Windows NT/95/98 + far-a01.com a screen fonts for DOS @@ -77,8 +77,8 @@ Font Installation o Installation of fonts for MS Window systems (NT/95/98) - From 'Control Panel' folder, start the 'Fonts' program. Then from 'file' - menu item select 'Install New Fonts ...'. Browse and select the + From 'Control Panel' folder, start the 'Fonts' program. Then from 'file' + menu item select 'Install New Fonts ...'. Browse and select the 'far-a01.fon', then follow the installation guide. NOTE: several people have reported that this does not work. The solution is unknown. @@ -92,7 +92,7 @@ o Installation of fonts for X Window systems (Unix/Linux) > mkfontdir > xset +fp path_name_of_farsi_fonts_directory -o Installation of fonts for X Window systems (SunOs) +o Installation of fonts for X Window systems (SunOS) Copy far-a01.bf font into a directory of your choice. Change to the directory containing the far-a01.fb fonts and @@ -104,19 +104,19 @@ o Installation of fonts for X Window systems (SunOs) o Installation of ASCII screen fonts (Unix/Linux) For Linux system, copy the far-a01.f16 fonts into /usr/lib/kbd/consolefonts - directory and execute the setfont program as "setfont far-a01.f16". For + directory and execute the setfont program as "setfont far-a01.f16". For other systems (e.g. SCO Unix), please refer to the fonts installation section of your system administration manuals. o Installation of ASCII screen fonts (DOS) - After system power on, prior to the first use of VIM, upload the Farsi + After system power on, prior to the first use of Vim, upload the Farsi fonts by executing the far-a01.com font uploading program. Usage ----- -Prior to starting VIM, the environment in which VIM can run in Farsi mode, +Prior to starting Vim, the environment in which Vim can run in Farsi mode, must be set. In addition to installation of Farsi fonts, following points refer to some of the system environments, which you may need to set: Key code mapping, loading graphic card in ASCII screen mode, setting the IO @@ -124,26 +124,26 @@ driver in 8 bit clean mode ... . o Setting the Farsi fonts - + For VIM GUI set the 'guifont' to far-a01. This is done by entering - ':set guifont=far-a01' in the VIM window. + + For Vim GUI set the 'guifont' to far-a01. This is done by entering + ':set guifont=far-a01' in the Vim window. - You can have 'guifont' set to far-a01 by VIM during the VIM startup + You can have 'guifont' set to far-a01 by Vim during the Vim startup by appending the ':set guifont=far-a01' into your .vimrc file (in case of NT/95/98 platforms _vimrc). - Under the X Window environment, you can also start the VIM with + Under the X Window environment, you can also start Vim with the '-fn far-a01' option. - + For the VIM within a xterm, start a xterm with the Farsi fonts (e.g. - kterm -fn far-a01). Then start the VIM inside the kterm. + + For Vim within a xterm, start a xterm with the Farsi fonts (e.g. + kterm -fn far-a01). Then start Vim inside the kterm. - + For VIM under DOS, prior to the first usage of VIM, upload the Farsi + + For Vim under DOS, prior to the first usage of Vim, upload the Farsi fonts by executing the far-a01.com fonts uploading program. o Farsi Keymapping Activation To activate the Farsi keymapping, set either 'altkeymap' or 'fkmap'. - This is done by entering ':set akm' or ':set fk' in the VIM window. + This is done by entering ':set akm' or ':set fk' in the Vim window. You can have 'altkeymap' or 'fkmap' set as default by appending ':set akm' or ':set fk' in your .vimrc file or _vimrc in case of NT/95/98 platforms. @@ -152,24 +152,24 @@ o Farsi Keymapping Activation o right-to-left Farsi Mode - By default VIM starts in Left-to-right mode. Following are ways to change + By default Vim starts in Left-to-right mode. Following are ways to change the window orientation: - + Start the VIM with -F option (e.g. vim -F ... ). + + Start Vim with the -F option (e.g. vim -F ...). - + Use F8 function key to toggle between left-to-right and right-to-left. + + Use the F8 function key to toggle between left-to-right and right-to-left. + While in Left-to-right mode, enter 'set rl' in the command line ('rl' is the abbreviation for rightleft). - + Put the 'set rl' line in your '.vimrc' file to start the VIM in + + Put the 'set rl' line in your '.vimrc' file to start Vim in right-to-left mode permanently. Encoding -------- -The letter encoding used is the VIM extended ISIR-3342 standard with a built -in function to convert between VIM extended ISIR-3342 and ISIR-3342 standard. +The letter encoding used is the Vim extended ISIR-3342 standard with a built +in function to convert between Vim extended ISIR-3342 and ISIR-3342 standard. For document portability reasons, the letter encoding is kept the same across different platforms (i.e. UNIX's, NT/95/98, MS DOS, ...). @@ -183,11 +183,11 @@ o Keyboard + CTRL-_ moves the cursor to the end of the typed text in edit mode. + CTRL-_ in command mode only toggles keyboard mapping between Farsi(akm)/ - Latin. The Farsi text is then entered in reverse insert mode. + Latin. The Farsi text is then entered in reverse insert mode. + F8 - Toggles between left-to-right and right-to-left. - + F9 - Toggles the encoding between ISIR-3342 standard and VIM extended + + F9 - Toggles the encoding between ISIR-3342 standard and Vim extended ISIR-3342 (supported only in right-to-left mode). + Keyboard mapping is based on the Iranian ISIRI-2901 standard. @@ -231,28 +231,28 @@ o In insert/replace mode and fkmap (Farsi mode) set, CTRL-B is not supported. o If you change the character mapping between Latin/Farsi, the redo buffer - will be reset (emptied). That is, redo is valid and will function (using + will be reset (emptied). That is, redo is valid and will function (using '.') only within the mode you are in. o While numbers are entered in Farsi mode, the redo buffer will be reset - (emptied). That is, you can not redo the last changes (using '.') after + (emptied). That is, you cannot redo the last changes (using '.') after entering numbers. -o While in left-to-right and Farsi mode set, CTRL-R is not supported. +o While in left-to-right mode and Farsi mode set, CTRL-R is not supported. o While in right-to-left mode, the search on 'Latin' pattern does not work, except if you enter the Latin search pattern in reverse. -o In the command mode, there is no support for entering the numbers from left - to right and also for the sake of the flexibility the keymapping logic is +o In command mode there is no support for entering numbers from left + to right and also for the sake of flexibility the keymapping logic is restricted. -o Under X Window environment, if you want to run the VIM within a xterm +o Under the X Window environment, if you want to run Vim within a xterm terminal emulator and Farsi mode set, you need to have an ANSI compatible - xterm terminal emulator. This is because the letter codes above 128 decimal + xterm terminal emulator. This is because the letter codes above 128 decimal have certain meanings in the standard xterm terminal emulator. - Note: Under X Window environment, VIM GUI works fine in Farsi mode. + Note: Under X Window environment, Vim GUI works fine in Farsi mode. This eliminates the need of any xterm terminal emulator. @@ -261,7 +261,7 @@ Bugs While in insert/replace and Farsi mode set, if you repeatedly change the cursor position (via cursor movement) and enter new text and then try to undo the last change, the undo will lag one change behind. But as you continue to -undo, you will reach the original line of text. You can also use U to undo all +undo, you will reach the original line of text. You can also use U to undo all changes made in the current line. For more information about the bugs refer to rileft.txt. diff --git a/ja/farsi.jax b/ja/farsi.jax index 7aa72350d..5f6f02300 100644 --- a/ja/farsi.jax +++ b/ja/farsi.jax @@ -1,10 +1,10 @@ COMMENT: アラビア語テキストの取り扱い方 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> MAINTEINER: nakadaira <hopper2@nanameue.jp> -*farsi.txt* For Vim version 6.3. Last change: 2002 Oct 29 +*farsi.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Mortaza Ghassab Shiran @@ -31,7 +31,7 @@ MAINTEINER: nakadaira <hopper2@nanameue.jp> 特色 ----- +----- o 普通に Vim を使うように右横書きのファイルを編集できます。 o 右横書きウィンドウでファイルを表示したり編集したりします。書字方向はウイン @@ -113,7 +113,7 @@ o ASCII スクリーンフォントをインストールする場合 (Unix/Linu o ASCII スクリーンフォントをインストールする場合 (DOS) - システム電源導入後、最初に VIM を起動する前に、フォントアップロードプログラ + システム電源導入後、最初に Vim を起動する前に、フォントアップロードプログラ ムの far-a01.com を実行して、ペルシア語フォントをアップロードします。 @@ -139,7 +139,7 @@ o ペルシア語フォントを設定する + xterm で Vim を使う場合は、xterm をペルシア語フォントで起動します (例 kterm -fn far-a01)。そして、kterm内で Vim を起動します。 - + DOS で Vim を使う場合は、最初に VIM を起動する前に、フォントアップロード + + DOS で Vim を使う場合は、最初に Vim を起動する前に、フォントアップロード プログラムの far-a01.com を実行して、ペルシア語フォントをアップロードし ます。 @@ -200,28 +200,28 @@ o キーボード ------------------------------------- ` 1 2 3 4 5 6 7 8 9 0 - = - � � � � � � � � � � � � � + ‍ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰ - = ------------------------------------- ~ ! @ # $ % ^ & * ( ) _ + - ~ � � � � � � � � � � � � + ~ ! ٬ ٫ ﷼ ٪ × ، * ( ) ـ + ------------------------------------- q w e r t z u i o p [ ] - � � � � � � � � � � � � + ض ص ث ق ف ظ ع ه خ ح ج چ ------------------------------------- Q W E R T Z U I O P { } - � � � � � � � � [ ] { } + ْ ٌ ٍ ً ُ ك َ ّ ] [ { } ------------------------------------- a s d f g h j k l ; ' \ - � � � � � � � � � � � � + ش س ی ب ل ا ت ن م ک گ \ ------------------------------------- A S D F G H J K L : " | - � �� � � � � � � � � � � + ؤ ئ ي إ أ آ ة » « : ؛ | ------------------------------------- < y x c v b n m , . / - � � � � � � � � � � � + < غ ط ز ر ذ د پ و . / ------------------------------------- > Y X C V B N M < > ? - � � � � � � � � � � � + > ِ ط ژ ر ‌ د ء < > ؟ ------------------------------------- 訳注: 合成文字は表示のためにスペースと合成してあります。 @@ -251,7 +251,7 @@ o ペルシア語モードで数字を入力すると、繰り返しバッフ ります。つまり、数字を入力した後は、 ('.'を使って) 最後の変更を繰り返せませ ん。 -o ペルシア語モードで左横書きしているときは CTRL-R は使えません。 +o 左横書きモードとペルシア語モードを使っているときは CTRL-R は使えません。 o 右横書きモードでは、'ラテン語' のパターンを検索できません。しかし、パターン を逆向きに書けば検索できます。 @@ -268,7 +268,7 @@ o X Window System 環境の端末エミュレータ xterm で Vim のペルシ バグ ----- +----- 挿入モードか置換モードでペルシア語モードをオンにして、カーソルを移動するのと、 文字を入力するのを何度か繰り返します。そしてアンドゥすると、カーソルを移動した 時点までしかアンドゥされません。しかし、何度もアンドゥすることで元のテキストま From ac68b8791e28295d7d5780bd0a00632ff7b70b4a Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 19 Aug 2006 15:23:26 +0000 Subject: [PATCH 034/783] add: getscript version 7.0 fix: update usr_01 to 7.0 update usr_02 to 7.0 update usr_03 to 7.0 update usr_04 to 7.0 update usr_05 to 7.0 update usr_06 to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@34 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/getscript.txt | 303 +++++++++++++++++++ en/usr_01.txt | 10 +- en/usr_02.txt | 10 +- en/usr_03.txt | 10 +- en/usr_04.txt | 8 +- en/usr_05.txt | 63 ++-- en/usr_06.txt | 7 +- ja/getscript.jax | 294 ++++++++++++++++++ ja/usr_01.jax | 167 +++++----- ja/usr_02.jax | 271 +++++++++-------- ja/usr_03.jax | 354 +++++++++++----------- ja/usr_04.jax | 389 ++++++++++++------------ ja/usr_05.jax | 771 ++++++++++++++++++++++++----------------------- ja/usr_06.jax | 279 +++++++++-------- 14 files changed, 1764 insertions(+), 1172 deletions(-) create mode 100644 en/getscript.txt create mode 100644 ja/getscript.jax diff --git a/en/getscript.txt b/en/getscript.txt new file mode 100644 index 000000000..d43b9be73 --- /dev/null +++ b/en/getscript.txt @@ -0,0 +1,303 @@ +*getscript.txt* For Vim version 7.0. Last change: 2006 Apr 30 + + Get the Latest VimScripts + +Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz> + (remove NOSPAM from the email address) + *GetLatestVimScripts-copyright* +Copyright: (c) 2004-2005 by Charles E. Campbell, Jr. + The VIM LICENSE applies to GetLatestVimScripts.vim and + GetLatestVimScripts.txt (see |copyright|) except use + "GetLatestVimScripts" instead of "Vim". + No warranty, express or implied. Use At-Your-Own-Risk. + + +============================================================================== +1. Contents *glvs-contents* + + 1. Contents.......................................: |glvs-contents| + 2. GetLatestVimScripts Usage......................: |glvs| + 3. GetLatestVimScripts Data File..................: |glvs-data| + 4. GetLatestVimScripts Plugins....................: |glvs-plugins| + 5. GetLatestVimScripts AutoInstall................: |glvs-autoinstall| + 6. GetLatestVimScripts Algorithm..................: |glvs-alg| + 7. GetLatestVimScripts History....................: |glvs-hist| + + +============================================================================== +2. GetLatestVimScripts Usage *getlatestvimscripts* *getscript* *glvs* + + While in vim, type +> + :GetLatestVimScripts +< + Unless its been defined elsewhere, +> + :GLVS +< + will also work. + + The script will attempt to update and, if so directed, automatically + install scripts from http://vim.sourceforge.net/. To do so it will + peruse a file, [.vim|vimfiles]/GetLatest/GetLatestVimScripts.dat + (see |glvs-data|), and examine plugins in your [.vim|vimfiles]/plugin + directory (see |glvs-plugins|). + + Scripts which have been downloaded will appear in the .../GetLatest + subdirectory. + + The <GetLatestVimScripts.dat> file will be automatically be updated to + reflect the latest version of script(s) so downloaded. + + +============================================================================== +3. GetLatestVimScripts Data File *getlatestvimscripts-data* *glvs-data* + + The Data file has a header which should appear as: +> + ScriptID SourceID Filename + -------------------------- +< + Below that are three columns; the first two are numeric followed by a + text column. + + The first number on each line gives the script's ScriptID. When + you're about to use a web browser to look at scripts on + http://vim.sf.net/, just before you click on the script's link, you'll + see a line resembling + + http://vim.sourceforge.net/scripts/script.php?script_id=40 + + The "40" happens to be a ScriptID that GetLatestVimScripts needs to + download the associated page. + + The second number on each line gives the script's SourceID. The + SourceID records the count of uploaded scripts as determined by + vim.sf.net; hence it serves to indicate "when" a script was uploaded. + Setting the SourceID to 1 insures that GetLatestVimScripts will assume + that the script it has is out-of-date. + + The SourceID is extracted by GetLatestVimScripts from the script's + page on vim.sf.net; whenever its greater than the one stored in the + GetLatestVimScripts.dat file, the script will be downloaded. + + If your script's author has included a special comment line in his/her + plugin, the plugin itself will be used by GetLatestVimScripts to build + your <GetLatestVimScripts.dat> file, including any dependencies on + other scripts it may have. + + If your comment field begins with :AutoInstall:, GetLatestVimScripts + will attempt to automatically install the script. Thus, + GetLatestVimScripts thus provides a comprehensive ability to keep your + plugins up-to-date! + +============================================================================== +4. GetLatestVimScripts Plugins *getlatestvimscripts-plugins* *glvs-plugins* + + + If a plugin author includes the following comment anywhere in their + plugin, GetLatestVimScripts will find it and use it to build user's + GetLatestVimScripts.dat files: +> + src_id + v + " GetLatestVimScripts: ### ### yourscriptname + ^ + scriptid +< + As an author, you should include such a line in to refer to your own + script plus any additional lines describing any plugin dependencies it + may have. Same format, of course! + + If your command is auto-installable (see |glvs-autoinstall|), and most + scripts are, then you may include :AutoInstall: at the start of + "yourscriptname". + + GetLatestVimScript commands for those scripts are then appended, if + not already present, to the user's GetLatest/GetLatestVimScripts.dat + file. Its a relatively painless way to automate the acquisition of + any scripts your plugins depend upon. + + Now, as an author, you probably don't want GetLatestVimScripts to + download your own scripts for you yourself, thereby overwriting your + not-yet-released hard work. GetLatestVimScripts provides a solution + for this: put +> + 0 0 yourscriptname +< + into your <GetLatestVimScripts.dat> file and GetLatestVimScripts will + skip examining the "yourscriptname" scripts for those + GetLatestVimScript comment lines. As a result, those lines won't be + inadvertently installed into your <GetLatestVimScripts.dat> file and + subsequently used to download your own scripts. This is especially + important to do if you've included the :AutoInstall: option. + + Be certain to use the same "yourscriptname" in the "0 0 + yourscriptname" line as you've used in your GetLatestVimScript + comment! + + +============================================================================== +5. GetLatestVimScripts AutoInstall *getlatestvimscripts-autoinstall* + *glvs-autoinstall* + + GetLatestVimScripts now supports "AutoInstall". Not all scripts are + supportive of auto-install, as they may have special things you need + to do to install them (please refer to the script's "install" + directions). On the other hand, most scripts will be + auto-installable. + + To let GetLatestVimScripts do an autoinstall, the data file's comment + field should begin with (surrounding blanks are ignored): + + :AutoInstall: + + Both colons are needed, and it should begin the comment + (yourscriptname) field. + + One may prevent any autoinstalling by putting the following line + in your <.vimrc>: +> + let g:GetLatestVimScripts_allowautoinstall= 0 +< + + With :AutoInstall: enabled, as it is by default, files which end with + + ---.tar.bz2 : decompressed and untarred in [.vim|vimfiles] directory + ---.tar.gz : decompressed and untarred in [.vim|vimfiles] directory + ---.vim.bz2 : decompressed and moved to the .vim/plugin directory + ---.vim.gz : decompressed and moved to the .vim/plugin directory + ---.zip : unzipped in [.vim|vimfiles] directory + ---.vim : moved to [.vim|vimfiles]/plugin directory + + and which merely need to have their components placed by the + untar/gunzip or move-to-plugin-directory process should be + auto-installable. + + When is a script not auto-installable? Let me give an example: +> + [.vim|vimfiles]/after/syntax/blockhl.vim +< + The <blockhl.vim> script provides block highlighting for C/C++ + programs; it is available at: +> + http://vim.sourceforge.net/scripts/script.php?script_id=104 +< + Currently, vim's after/syntax only supports by-filetype scripts (in + blockhl.vim's case, that's after/syntax/c.vim). Hence, auto-install + would possibly overwrite the current user's after/syntax/c.vim file. + + In my own case, I use <aftersyntax.vim> (renamed to + after/syntax/c.vim) to allow a after/syntax/c/ directory: +> + http://vim.sourceforge.net/scripts/script.php?script_id=1023 +< + The script allows multiple syntax files to exist separately in the + after/syntax/c subdirectory. I can't bundle aftersyntax.vim in and + build an appropriate tarball for auto-install because of the potential + for the after/syntax/c.vim contained in it to overwrite a user's + c.vim. + + +============================================================================== +6. GetLatestVimScripts Algorithm *getlatestvimscripts-algorithm* + *glvs-alg* + + The Vim sourceforge page dynamically creates a page by keying off of + the so-called script-id. Within the webpage of + + http://vim.sourceforge.net/scripts/script.php?script_id=40 + + is a line specifying the latest source-id (src_id). The source + identifier numbers are always increasing, hence if the src_id is + greater than the one recorded for the script in GetLatestVimScripts + then its time to download a newer copy of that script. + + GetLatestVimScripts will then download the script and update its + internal database of script ids, source ids, and scriptnames. + + The AutoInstall process will: + + Move the file from GetLatest/ to the following directory + Unix : $HOME/.vim + Windows: $HOME\vimfiles + + if the downloaded file ends with ".bz2" + bunzip2 it + else if the downloaded file ends with ".gz" + gunzip it + if the resulting file ends with ".zip" + unzip it + else if the resulting file ends with ".tar" + tar -oxvf it + else if the resulting file ends with ".vim" + move it to the plugin subdirectory + + +============================================================================== +7. GetLatestVimScripts History *getlatestvimscripts-history* *glvs-hist* + + v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use; + unzip needs the -o flag to overwrite. + v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong + script! Fixed. + v18 Mar 21, 2005 : * bugfix to automatic database construction + * bugfix - nowrapscan caused an error + (tnx to David Green for the fix) + Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in + :AutoInstall:s, even though its o/s is windows + Apr 01, 2005 * when downloading errors occurred, GLVS was + terminating early. It now just goes on to trying + the next script (after trying three times to + download a script description page) + Apr 20, 2005 * bugfix - when a failure to download occurred, + GetLatestVimScripts would stop early and claim that + everything was current. Fixed. + v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which + defaults to 1, can be used to prevent all + :AutoInstall: + v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent + * fixed bug with :AutoInstall: use of helptags + v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't + always preventing downloads (just usually). Fixed. + v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than + s:dotvim. Fixed. + v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid + is zero. Useful for script authors; that way their + own GetLatestVimScripts activity won't overwrite + their scripts. + v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that + was intended only for testing. Removed, now works. + * :AutoInstall: implemented + v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin: + * :GetLatestVimScripts command + * (runtimepath)/GetLatest/GetLatestVimScripts.dat + now holds scripts that need updating + v10 Apr 19, 2004 : * moved history from script to doc + v9 Jan 23, 2004 : windows (win32/win16/win95) will use + double quotes ("") whereas other systems will use + single quotes ('') around the urls in calls via wget + v8 Dec 01, 2003 : makes three tries at downloading + v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id=" + not found in downloaded webpage + Uses t_ti, t_te, and rs to make progress visible + v6 Aug 06, 2003 : final status messages now display summary of work + ( "Downloaded someqty scripts" or + "Everything was current") + Now GetLatestVimScripts is careful about downloading + GetLatestVimScripts.vim itself! + (goes to <NEW_GetLatestVimScripts.vim>) + v5 Aug 04, 2003 : missing an endif near bottom + v4 Jun 17, 2003 : redraw! just before each "considering" message + v3 May 27, 2003 : Protects downloaded files from errant shell + expansions with single quotes: '...' + v2 May 14, 2003 : extracts name of item to be obtained from the + script file. Uses it instead of comment field + for output filename; comment is used in the + "considering..." line and is now just a comment! + * Fixed a bug: a string-of-numbers is not the + same as a number, so I added zero to them + and they became numbers. Fixes comparison. + +============================================================================== +vim:tw=78:ts=8:ft=help diff --git a/en/usr_01.txt b/en/usr_01.txt index 817a8db7c..fc3b3ee7f 100644 --- a/en/usr_01.txt +++ b/en/usr_01.txt @@ -1,4 +1,4 @@ -*usr_01.txt* For Vim version 6.3. Last change: 2004 May 01 +*usr_01.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -104,11 +104,13 @@ Instead of reading the text (boring!) you can use the vimtutor to learn your first Vim commands. This is a 30 minute tutorial that teaches the most basic Vim functionality hands-on. -On Unix and MS-Windows, if Vim has been properly installed, you can start it -from the shell: +On Unix, if Vim has been properly installed, you can start it from the shell: > vimtutor +On MS-Windows you can find it in the Program/Vim menu. Or execute +vimtutor.bat in the $VIMRUNTIME directory. + This will make a copy of the tutor file, so that you can edit it without the risk of damaging the original. There are a few translated versions of the tutor. To find out if yours is @@ -150,7 +152,7 @@ filename. For French: *01.4* Copyright *manual-copyright* The Vim user manual and reference manual are Copyright (c) 1988-2003 by Bram -Moolenaar. This material may be distributed only subject to the terms and +Moolenaar. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later. The latest version is presently available at: http://www.opencontent.org/opl.shtml diff --git a/en/usr_02.txt b/en/usr_02.txt index 89e614f6f..2b3dd788a 100644 --- a/en/usr_02.txt +++ b/en/usr_02.txt @@ -1,4 +1,4 @@ -*usr_02.txt* For Vim version 6.3. Last change: 2003 May 04 +*usr_02.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -166,7 +166,7 @@ insert some more lines of text. Then use the hjkl keys to move around and insert a word somewhere. Don't forget to press <Esc> to go back to Normal mode. The |vimtutor| is also a nice way to learn by doing. -For Japanse users, Hiroshi Iwatani suggested using this: +For Japanese users, Hiroshi Iwatani suggested using this: Komsomolsk ^ @@ -302,7 +302,7 @@ edited. Typing this command twice cancels the preceding "U". The "U" command is a change by itself, which the "u" command undoes and CTRL-R redoes. This might be a bit confusing. Don't worry, with "u" and CTRL-R you -can go to any of the situations you had. +can go to any of the situations you had. More about that in section ||. ============================================================================== *02.6* Other editing commands @@ -425,7 +425,7 @@ the editor: "ZZ". This will only close the help window, not exit Vim. As you read the help text, you will notice some text enclosed in vertical bars (for example, |help|). This indicates a hyperlink. If you position the cursor anywhere between the bars and press CTRL-] (jump to tag), the help -system takes you to the indicated subject. (For reasons not discussed here, +system takes you to the indicated subject. (For reasons not discussed here, the Vim terminology for a hyperlink is tag. So CTRL-] jumps to the location of the tag given by the word under the cursor.) After a few jumps, you might want to go back. CTRL-T (pop tag) takes you @@ -484,7 +484,7 @@ example, use the following command: > The table with all mode prefixes can be found here: |help-context|. -Special keys are enclosed in angle brackets. To find help on the up-arrow key +Special keys are enclosed in angle brackets. To find help on the up-arrow key in Insert mode, for instance, use this command: > :help i_<Up> diff --git a/en/usr_03.txt b/en/usr_03.txt index e1c4b9d91..9f15540bc 100644 --- a/en/usr_03.txt +++ b/en/usr_03.txt @@ -1,4 +1,4 @@ -*usr_03.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*usr_03.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -13,7 +13,7 @@ these commands below |Q_lr|. |03.1| Word movement |03.2| Moving to the start or end of a line |03.3| Moving to a character -|03.4| Matching a paren +|03.4| Matching a parenthesis |03.5| Moving to a specific line |03.6| Telling where you are |03.7| Scrolling around @@ -145,7 +145,7 @@ aborted forward search and doesn't do anything. Note: <Esc> cancels most operations, not just searches. ============================================================================== -*03.4* Matching a paren +*03.4* Matching a parenthesis When writing a program you often end up with nested () constructs. Then the "%" command is very handy: It moves to the matching paren. If the cursor is @@ -332,7 +332,7 @@ the <Left> and <Right> cursor keys when necessary. Pressing <Enter> executes the command. Note: - The characters .*[]^%/\?~$ have special meaning. If you want to use + The characters .*[]^%/\?~$ have special meanings. If you want to use them in a search you must put a \ in front of them. See below. To find the next occurrence of the same string use the "n" command. Use this @@ -601,7 +601,7 @@ The ":jumps" command gives a list of positions you jumped to. The entry which you used last is marked with a ">". -NAMED MARKS +NAMED MARKS *bookmark* Vim enables you to place your own marks in the text. The command "ma" marks the place under the cursor as mark a. You can place 26 marks (a through z) in diff --git a/en/usr_04.txt b/en/usr_04.txt index dd9667d8c..403a86146 100644 --- a/en/usr_04.txt +++ b/en/usr_04.txt @@ -1,4 +1,4 @@ -*usr_04.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*usr_04.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -270,7 +270,7 @@ where they open a new line below or above the cursor. *04.5* Moving text When you delete something with the "d", "x", or another command, the text is -saved. You can paste it back by using the p command. (The Vim name for +saved. You can paste it back by using the p command. (The Vim name for this is put). Take a look at how this works. First you will delete an entire line, by putting the cursor on the line you want to delete and typing "dd". Now you @@ -333,7 +333,7 @@ for the change operator, and "y" was still available. Calling this operator "yank" made it easier to remember to use the "y" key. Since "y" is an operator, you use "yw" to yank a word. A count is possible as -usual. To yank two workds use "y2w". Example: +usual. To yank two words use "y2w". Example: let sqr = LongVariable * ~ --------------> @@ -457,7 +457,7 @@ you type <Esc>. This is interesting. ~ You may have noticed that this command replaced 5 characters in the line with -twelve others. The "R" command automatically extends the line if it runs out +twelve others. The "R" command automatically extends the line if it runs out of characters to replace. It will not continue on the next line. You can switch between Insert mode and Replace mode with the <Insert> key. diff --git a/en/usr_05.txt b/en/usr_05.txt index 19b3c0921..8d2b88e28 100644 --- a/en/usr_05.txt +++ b/en/usr_05.txt @@ -1,4 +1,4 @@ -*usr_05.txt* For Vim version 6.3. Last change: 2004 Mar 12 +*usr_05.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -7,7 +7,7 @@ Vim can be tuned to work like you want it to. This chapter shows you how to make Vim start with options set to different values. Add plugins to extend -Vims capabilities. Or define your own macros. +Vim's capabilities. Or define your own macros. |05.1| The vimrc file |05.2| The example vimrc file explained @@ -25,27 +25,27 @@ Table of contents: |usr_toc.txt| *05.1* The vimrc file *vimrc-intro* You probably got tired of typing commands that you use very often. To start -with all your favorite option settings and mappings, you write them in what is -called the vimrc file. Vim reads this file when it starts up. +Vim with all your favorite option settings and mappings, you write them in +what is called the vimrc file. Vim executes the commands in this file when it +starts up. -If you have trouble finding your vimrc file, use this command: > +If you already have a vimrc file (e.g., when your sysadmin has one setup for +you), you can edit it this way: > - :scriptnames + :edit $MYVIMRC -One of the first files in the list should be called ".vimrc" or "_vimrc" and -is located in your home directory. - If you don't have a vimrc file yet, see |vimrc| to find out where you can +If you don't have a vimrc file yet, see |vimrc| to find out where you can create a vimrc file. Also, the ":version" command mentions the name of the "user vimrc file" Vim looks for. -For Unix this file is always used: > +For Unix and Macintosh this file is always used and is recommended: - ~/.vimrc + ~/.vimrc ~ -For MS-DOS and MS-Windows it is mostly one of these: > +For MS-DOS and MS-Windows you can use one of these: - $HOME/_vimrc - $VIM/_vimrc + $HOME/_vimrc ~ + $VIM/_vimrc ~ The vimrc file can contain all the commands that you type after a colon. The most simple ones are for setting options. For example, if you want Vim to @@ -150,12 +150,11 @@ it worked before Vim 5.0. Otherwise the "Q" command starts Ex mode, but you will not need it. > - vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc> + vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR> -This is a complicated mapping. It will not be explained how it works here. -What it does is to make "p" in Visual mode overwrite the selected text with -the previously yanked text. You can see that mappings can be used to do quite -complicated things. Still, it is just a sequence of commands that are +This mapping yanks the visually selected text and searches for it in C files. +This is a complicated mapping. You can see that mappings can be used to do +quite complicated things. Still, it is just a sequence of commands that are executed like you typed them. > @@ -252,8 +251,8 @@ you use an existing Vim command, that command will no longer be available. You better avoid that. One key that can be used with mappings is the backslash. Since you probably want to define more than one mapping, add another character. You -could map "\p" to add parens around a word, and "\c" to add curly braces, for -example: > +could map "\p" to add parentheses around a word, and "\c" to add curly braces, +for example: > :map \p i(<Esc>ea)<Esc> :map \c i{<Esc>ea}<Esc> @@ -301,10 +300,13 @@ GETTING A GLOBAL PLUGIN Where can you find plugins? - Some come with Vim. You can find them in the directory $VIMRUNTIME/macros and its sub-directories. -- Download from the net, check out http://vim.sf.net. +- Download from the net. There is a large collection on http://www.vim.org. - They are sometimes posted in a Vim |maillist|. - You could write one yourself, see |write-plugin|. +Some plugins come as a vimball archive, see |vimball|. +Some plugins can be updated automatically, see |getscript|. + USING A GLOBAL PLUGIN @@ -328,6 +330,11 @@ Example for Unix (assuming you didn't have a plugin directory yet): > That's all! Now you can use the commands defined in this plugin to justify text. +Instead of putting plugins directly into the plugin/ directory, you may +better organize them by putting them into subdirectories under plugin/. +As an example, consider using "~/.vim/plugin/perl/*.vim" for all your Perl +plugins. + FILETYPE PLUGINS *add-filetype-plugin* *ftplugins* @@ -369,8 +376,8 @@ adding. If it's OK, you can give the new one another name: > mv thefile ~/.vim/ftplugin/stuff_too.vim The underscore is used to separate the name of the filetype from the rest, -which can be anything. If you would use "otherstuff.vim" it wouldn't work, it -would be loaded for the "otherstuff" filetype. +which can be anything. If you use "otherstuff.vim" it wouldn't work, it would +be loaded for the "otherstuff" filetype. On MS-DOS you cannot use long filenames. You would run into trouble if you add a second plugin and the filetype has more than six characters. You can @@ -427,6 +434,8 @@ you already have the directory.) > :!mkdir ~/.vim/plugin :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin +The "cp" command is for Unix, on MS-DOS you can use "copy". + Now create a "doc" directory in one of the directories in 'runtimepath'. > :!mkdir ~/.vim/doc @@ -505,7 +514,7 @@ before and after the option name. For example: > :help 'wrap' In case you have messed up an option value, you can set it back to the -default by putting a ampersand (&) after the option name. Example: > +default by putting an ampersand (&) after the option name. Example: > :set iskeyword& @@ -514,8 +523,8 @@ NOT WRAPPING LINES Vim normally wraps long lines, so that you can see all of the text. Sometimes it's better to let the text continue right of the window. Then you need to -scroll the text left-right to see all of a long line. Switch wrapping of with -this command: > +scroll the text left-right to see all of a long line. Switch wrapping off +with this command: > :set nowrap diff --git a/en/usr_06.txt b/en/usr_06.txt index b4020e6bc..cd40be477 100644 --- a/en/usr_06.txt +++ b/en/usr_06.txt @@ -1,4 +1,4 @@ -*usr_06.txt* For Vim version 6.3. Last change: 2002 Jul 14 +*usr_06.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -179,10 +179,9 @@ You could also write your own color scheme. This is how you do it: colorscheme mine If you want to see what the most often used color combinations look like, use -these commands: > +this command: > - :edit $VIMRUNTIME/syntax/colortest.vim - :source % + :runtime syntax/colortest.vim You will see text in various color combinations. You can check which ones are readable and look nice. diff --git a/ja/getscript.jax b/ja/getscript.jax new file mode 100644 index 000000000..f297533e9 --- /dev/null +++ b/ja/getscript.jax @@ -0,0 +1,294 @@ +COMMENT: GetLatestVimScripts プラグイン +STATUS: finished 7.0 +TRANSLATOR: nakadaira <hopper2@nanameue.jp> +MAINTEINER: nakadaira <hopper2@nanameue.jp> + +*getscript.txt* For Vim version 7.0. Last change: 2006 Apr 30 + + Get the Latest VimScripts + +Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz> + (remove NOSPAM from the email address) + *GetLatestVimScripts-copyright* +Copyright: (c) 2004-2005 by Charles E. Campbell, Jr. + The VIM LICENSE applies to GetLatestVimScripts.vim and + GetLatestVimScripts.txt (see |copyright|) except use + "GetLatestVimScripts" instead of "Vim". + No warranty, express or implied. Use At-Your-Own-Risk. + + +============================================================================== +1. 目次 *glvs-contents* + + 1. 目次...........................................: |glvs-contents| + 2. GetLatestVimScripts の使い方...................: |glvs| + 3. GetLatestVimScripts データファイル.............: |glvs-data| + 4. GetLatestVimScripts プラグイン.................: |glvs-plugins| + 5. GetLatestVimScripts 自動インストール...........: |glvs-autoinstall| + 6. GetLatestVimScripts アルゴリズム...............: |glvs-alg| + 7. GetLatestVimScripts 開発履歴...................: |glvs-hist| + + +============================================================================== +2. GetLatestVimScripts の使い方 *getlatestvimscripts* *getscript* *glvs* + + Vim から次のように入力してください。 +> + :GetLatestVimScripts +< + 次のコマンドでも同じです。ただし、他の場所で既に定義されていた場合は使 + えません。 +> + :GLVS +< + このコマンドは、http://vim.sourceforge.net/ を確認して、スクリプトを更 + 新し、指定がある場合には、自動的にインストールしようとします。そのため + に、[.vim|vimfiles]/GetLatest/GetLatestVimScripts.dat を調べ + (|glvs-data|参照)、[.vim|vimfiles]/plugin ディレクトリのプラグインを検 + 査します(|glvs-plugins|参照)。 + + ダウンロードしたファイルは .../GetLatest ディレクトリに保存されます。 + + <GetLatestVimScripts.dat> は、ダウンロードしたスクリプトのバージョンを + 反映し、自動的に更新されます。 + + +============================================================================== +3. GetLatestVimScripts データファイル *getlatestvimscripts-data* *glvs-data* + + データファイルには次のヘッダが付きます: +> + ScriptID SourceID Filename + -------------------------- +< + その下に、数値 数値 テキスト、の三列の行が続きます。 + + 各行の一番目の数値はスクリプト番号 ScriptID です。ウェブブラウザを使っ + て http://vim.sf.net/ にあるスクリプトを見るときに、スクリプトへのリン + クをクリックすると、次のようなurlが確認できると思います。 + + http://vim.sourceforge.net/scripts/script.php?script_id=40 + + "40" が ScriptID です。GetLatestVimScripts はこの番号のページからスク + リプトをダウンロードします。 + + 二番目の数値はスクリプトのソース番号 SouceID です。vim.sf.net にスクリ + プトがアップロードされた順番に番号が付けられるので、SourceID を見れば + スクリプトがアップロードされた時期がわかります。SourceID に 1 を指定し + た場合、そのスクリプトはまだ最新の状態に更新されていないと判断されま + す。 + + GetLatestVimScripts は、vim.sf.net のスクリプトのページから SourceIDを + 抜き出して、GetLatestVimScripts.dat に記録された番号よりも大きいような + ら、そのスクリプトをダウンロードします。 + + スクリプトの作者が、プラグインに特殊なコメント行を書いていた場合、その + コメント行を使って <GetLatestVimScripts.dat> が生成されます。スクリプ + トの依存関係も扱えます。 + + コメントフィールド が :AutoInstall: で始まっている場合、 + GetLatestVimScripts は、そのスクリプトを自動的にインストールしようとし + ます。これを使うと、プラグインを最新の状態に保つことができます。 + +============================================================================== +4. GetLatestVimScripts プラグイン *getlatestvimscripts-plugins* *glvs-plugins* + + + プラグインの作者が、プラグインのどこかに以下のようなコメントを書いてい + た場合、GetLatestVimScripts はそれを見付けて、GetLatestVimScripts.dat + ファイルを生成します: +> + src_id + v + " GetLatestVimScripts: ### ### yourscriptname + ^ + scriptid +< + プラグインの作者は、上記のような行を書いて自分のプラグインを参照させて + ください。複数行書けるので、依存している別のプラグインを参照させること + もできます。その場合でも書式は同じです。 + + プラグインが、自動インストール (|glvs-autoinstall|参照) 可能なら、 + "yourscriptname" の直前に :AutoInstall: と書いてもいいでしょう。 + + 未登録の GetLatestVimScript 命令は、ユーザーの + GetLatest/GetLatestVimScripts.dat ファイルに追加されます。 + プラグインが依存しているスクリプトの入手を比較的簡単に自動化できます。 + + 自分でプラグインを製作している場合、そのプラグインをダウンロードして欲 + しくはないと思います。まだリリースしていない作業中のスクリプトを上書き + して欲しくはないでしょう。GetLatestVimScripts にはそのための仕組があり + ます。次の行を <GetLatestVimScripts.dat> に書いてください。 +> + 0 0 yourscriptname +< + スクリプト "yourscriptname" に対する GetLatestVimScript 命令は処理され + なくなります。その命令行が <GetLatestVimScripts.dat> にうっかり登録さ + れることもなくなり、スクリプトはダウンロードされなくなります。これは + :AutoInstall: を指定しているときには特に重要です。 + + "0 0 yourscriptname" の指定では必ず、スクリプトに書いた + "yourscriptname" と同じにしてください。 + + +============================================================================== +5. GetLatestVimScripts 自動インストール *getlatestvimscripts-autoinstall* + *glvs-autoinstall* + + GetLatestVimScripts には自動インストール機能があります。インストールに + 特別な作業が必要なスクリプトもあるので、すべてを自動インストールできる + わけではありません (スクリプトの "インストール" の説明を参照してくださ + い)。しかし、ほとんどのスクリプトは自動インストール可能です。 + + 自動インストールするには、データファイルのコメントフィールドを次のテキ + ストで開始してください (前後の空白は無視されます): + + :AutoInstall: + + 両端のコロンは必要です。必ずコメントフィールド (yourscriptname) の最初 + に書いてください。 + + 以下の行を <.vimrc> に書くと、自動インストールを抑止できます: +> + let g:GetLatestVimScripts_allowautoinstall= 0 +< + + :AutoInstall: を有効にした場合には、ファイルの拡張子が次のどれかで、 + + ---.tar.bz2 : 解凍して [.vim|vimfiles] ディレクトリ以下に展開 + ---.tar.gz : 解凍して [.vim|vimfiles] ディレクトリ以下に展開 + ---.vim.bz2 : 解凍して .vim/plugin ディレクトリに移動 + ---.vim.gz : 解凍して .vim/plugin ディレクトリに移動 + ---.zip : 解凍して [.vim|vimfiles] ディレクトリ以下に展開 + ---.vim : [.vim|vimfiles]/plugin ディレクトリに移動 + + 単に、圧縮ファイルを解凍したり、ファイルをプラグインディレクトリにコ + ピーするだけでインストール可能でなければなりません。 + + 自動インストールできないのはどんな場合でしょう?例を示します: +> + [.vim|vimfiles]/after/syntax/blockhl.vim +< + <blockhl.vim> は C/C++ のブロックを強調表示するスクリプトです。次の場 + 所から入手できます: +> + http://vim.sourceforge.net/scripts/script.php?script_id=104 +< + 現在、Vim の after/syntax はファイルタイプと同じ名前のスクリプトしかサ + ポートしてません (blockhl.vim の場合は、after/syntax/c.vim)。そのた + め、自動的にインストールすると、ユーザーの after/syntax/c.vim を上書き + する可能性があります。 + + 私は個人的に、<aftersyntax.vim> を after/syntax/c.vim にコピーして、 + after/syntax/c/ ディレクトリを使えるようにしています: +> + http://vim.sourceforge.net/scripts/script.php?script_id=1023 +< + このスクリプトを使うと、after/syntax/c ディレクトリにある複数のファイ + ルをシンタックスファイルとして使えます。ユーザーの after/syntax/c.vim + を上書きしてしまう可能性があるため、配布物には含めていません。 + + +============================================================================== +6. GetLatestVimScripts アルゴリズム *getlatestvimscripts-algorithm* + *glvs-alg* + + Vim のサイトでは、以下のように ScriptID を受けて動的にページを生成して + います。 + + http://vim.sourceforge.net/scripts/script.php?script_id=40 + + ページ内には最新の SourceID (src_id) が書かれた行があります。 + SourceID にはファイルがアップロードされた順番に大きな番号が付けられる + ので、SourceID が GetLatestVimScripts.dat に記録された番号より大きけれ + ば、新しいスクリプトをダウンロードします。 + + スクリプトをダウンロードしたら、内部データベースのScriptID、SourceID、 + scriptnameを更新します。 + + 自動インストールの手順は以下の通り: + + ファイルを GetLatest/ から以下のディレクトリに移動する + Unix : $HOME/.vim + Windows: $HOME\vimfiles + + ファイルの拡張子が ".bz2" なら + bunzip2 を実行 + ファイルの拡張子が ".gz" なら + gunzip を実行 + 続いて、 + ファイルの拡張子が ".zip" なら + unzip を実行 + ファイルの拡張子が ".tar" なら + tar -oxvf を実行 + ファイルの拡張子が ".vim" なら + plugin ディレクトリに移動 + + +============================================================================== +7. GetLatestVimScripts 開発履歴 *getlatestvimscripts-history* *glvs-hist* + + v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use; + unzip needs the -o flag to overwrite. + v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong + script! Fixed. + v18 Mar 21, 2005 : * bugfix to automatic database construction + * bugfix - nowrapscan caused an error + (tnx to David Green for the fix) + Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in + :AutoInstall:s, even though its o/s is windows + Apr 01, 2005 * when downloading errors occurred, GLVS was + terminating early. It now just goes on to trying + the next script (after trying three times to + download a script description page) + Apr 20, 2005 * bugfix - when a failure to download occurred, + GetLatestVimScripts would stop early and claim that + everything was current. Fixed. + v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which + defaults to 1, can be used to prevent all + :AutoInstall: + v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent + * fixed bug with :AutoInstall: use of helptags + v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't + always preventing downloads (just usually). Fixed. + v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than + s:dotvim. Fixed. + v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid + is zero. Useful for script authors; that way their + own GetLatestVimScripts activity won't overwrite + their scripts. + v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that + was intended only for testing. Removed, now works. + * :AutoInstall: implemented + v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin: + * :GetLatestVimScripts command + * (runtimepath)/GetLatest/GetLatestVimScripts.dat + now holds scripts that need updating + v10 Apr 19, 2004 : * moved history from script to doc + v9 Jan 23, 2004 : windows (win32/win16/win95) will use + double quotes ("") whereas other systems will use + single quotes ('') around the urls in calls via wget + v8 Dec 01, 2003 : makes three tries at downloading + v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id=" + not found in downloaded webpage + Uses t_ti, t_te, and rs to make progress visible + v6 Aug 06, 2003 : final status messages now display summary of work + ( "Downloaded someqty scripts" or + "Everything was current") + Now GetLatestVimScripts is careful about downloading + GetLatestVimScripts.vim itself! + (goes to <NEW_GetLatestVimScripts.vim>) + v5 Aug 04, 2003 : missing an endif near bottom + v4 Jun 17, 2003 : redraw! just before each "considering" message + v3 May 27, 2003 : Protects downloaded files from errant shell + expansions with single quotes: '...' + v2 May 14, 2003 : extracts name of item to be obtained from the + script file. Uses it instead of comment field + for output filename; comment is used in the + "considering..." line and is now just a comment! + * Fixed a bug: a string-of-numbers is not the + same as a number, so I added zero to them + and they became numbers. Fixes comparison. + +============================================================================== +vim:tw=78:ts=8:ft=help diff --git a/ja/usr_01.jax b/ja/usr_01.jax index dfb05055f..832027d1b 100644 --- a/ja/usr_01.jax +++ b/ja/usr_01.jax @@ -1,71 +1,70 @@ COMMENT: 付属マニュアルについて -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_01.txt* For Vim version 6.3. Last change: 2004 May 01 +*usr_01.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar マニュアルについて -この章ではvimといっしょに入手できるマニュアルを紹介します。 -どの章にどんなコマンドの説明があるかを知るのにお使いください。 +この章では、Vim のマニュアルを紹介します。著作権についてもお読み下さい。 -|01.1| 2つのマニュアル -|01.2| インストール済みのvim -|01.3| vimチュートリアルの利用 -|01.4| 著作権(copyright) +|01.1| 二つのマニュアル +|01.2| Vim の準備 +|01.3| チュートリアル +|01.4| 著作権 (copyright) - Next chapter: |usr_02.txt| vimの最初の一歩 -Table of contents: |usr_toc.txt| +次章: |usr_02.txt| 初めての Vim +目次: |usr_toc.txt| ============================================================================== -*01.1* 2つのマニュアル +*01.1* 二つのマニュアル -vimのマニュアルは2部構成になっています。 +Vim のマニュアルは二部構成になっています。 1. ユーザーマニュアル 簡単なものから複雑なものまで、具体的な例を使って説明しています。本のよう に最初から順を追って読んでください。 2. リファレンスマニュアル - vimの動作の全てについての正確な説明書です。 + Vim がどのように動作するかを詳しく説明しています。 -このマニュアルの表記方法については |notation| をご覧ください。 +マニュアルの表記方法については |notation| をご覧ください。 他のトピックへのジャンプ ------------------------ -2つのマニュアル間にはハイパーリンクが張ってあります。これを使うと、編集手順 -の説明とそこで使っているコマンド/オプションの正しい定義とを素早く行き来でき -ます。次のコマンドがあります。 +二つのマニュアルにはハイパーリンクが張ってあります。それを使えば、編集手順の説 +明と、その説明で使われているコマンドやオプションの正しい定義とを素早く行き来で +きます。次のコマンドを使ってください。 CTRL-] : カーソル位置の項目にジャンプします。 CTRL-O : ジャンプ先から戻ります。 -リンクは |bars| のように縦棒で囲っています。またオプション名は 'number' のよ -うにアポストロフィで、コマンドは":write"のように引用符で囲っています。これ -以外の単語もリンクになっている場合があります。実験:カーソルを CTRL-] の上に -動かして、CTRL-] を押してみましょう。 +リンクは |bars| のように縦棒で囲まれています。オプション名は 'number' のように +アポストロフィで、コマンドは ":write" のように引用符で囲まれています。これ以外 +の単語もリンクになっている場合があります。試しに、カーソルを CTRL-] の上に動か +して、CTRL-] を押してみましょう。 他の項目は":help"コマンドで見つけることができます。|help.txt|をご覧ください。 ============================================================================== -*01.2* インストール済みのvim +*01.2* Vim の準備 -マニュアルの大部分はvimがうまくインストールできていることを前提にしていま -す。まだインストールしていないとか、うまく動かない(ファイルが見つからない、 -GUIでメニューが出ないなど)とかであれば、まずインストールの章 |usr_90.txt| -を読んでください。 +マニュアルの大部分は Vim が正しくインストールされていることを前提にしていま +す。まだインストールしていなかったり、うまく動いていない(ファイルが見つからな +い、GUI でメニューが出ないなどの)場合は、インストールの章 |usr_90.txt| を読ん +でください。 *not-compatible* -このマニュアルでは「vi互換スイッチ('compatible')」がoffであることを前提にし +このマニュアルでは「vi互換スイッチ('compatible')」がオフであることを前提にし ている個所がたくさんあります。大部分のコマンドは関係ないのですが、重要なもの -(例:複数回アンドゥできる機能)もあります。正しい設定で使っていることを確かめ -るには、標準添付のサンプルvimrcをコピーするのが簡単です。次のようにvim中で実 -行すれば、どこにあるかを探す必要はありません。 -なお、コピーの方法はお使いのシステムによって異なります。 +(例: 複数回アンドゥできる機能)もあります。正しく設定されていることを確実にする +には、サンプル設定ファイルをコピーするのが簡単です。次のように、Vim からコマン +ドを実行すれば、どこにあるかを探す必要はありません。なお、コピーの方法はお使い +のシステムによって異なります。 Unix: > :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc @@ -74,90 +73,92 @@ MS-DOS, MS-Windows, OS/2: > Amiga: > :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc -既にvimrcファイルがあるのなら、控えを取っておいた方がよいでしょう。 +既に vimrc ファイルがあるのなら、控えを取っておいた方がよいでしょう。 -vimを起動したら、vi互換モードオプション'compatible'はoffにしておきます。現在 -の状況は次のコマンドで確認できます。 > +Vim を起動すると、オプション 'compatible' はオフになっているはずです。次のコマ +ンドで現在の設定を確認できます。 > :set compatible? -"nocompatible"と表示されればOKです。"compatible"と表示されるようなら、問題 -があります。オプションがonである理由を突き止めないといけません。おそらく、 -前節で書きこんだファイルが見つからなかったのでしょう。次のコマンドで探しま -しょう。 +"nocompatible" と表示されれば大丈夫です。"compatible" と表示された場合は、問題 +があります。オプションがオンになっている理由を確認してください。もしかしたら、 +先程保存した設定ファイルが見つからなかったのかもしれません。次のコマンドで確認 +できます: > :scriptnames -このリストの中にあなたのvimrcファイルがないようなら、その場所と名前を調べ -ます。リストにあるようなら、そのリストの誰かが'compatible'オプションをonに -しているはずです。 +あなたの vimrc ファイルがこの一覧にないようなら、vimrc ファイルの名前と場所を +確認してください。一覧に入っている場合は、その一覧の他のファイルがオプション +'compatible' をオンに設定してしまっています。 -もっと詳しくは|vimrc|と|compatble-default|をご覧ください。 +詳しくは|vimrc|と|compatble-default|をご覧ください。 Note: - このマニュアルはvimを普通に使うための説明書です。実は、evim(=easy vim) - という別のvimがあります。これもvimなのですが、Notepadのような - 「クリック&入力」方式であったり、常に挿入モードあったり、普通のvim - とはかなり雰囲気が違います。このユーザーマニュアルではevimには触れま - せん。(notepad形式だから)使えばわかるはずです。 + このマニュアルはVimを普通に使うための説明書です。実は evim(=easy vim) + という別の Vim があります。これも Vim なのですが、メモ帳 のように + 「クリック&入力」方式であったり、常に挿入モードあったり、普通の Vim + とはかなり雰囲気が違います。このユーザーマニュアルでは evim には触れま + せん。(メモ帳形式だから)使えばわかるはずです。 詳しいことは|evim-keys|をご覧ください。 ============================================================================== -*01.3* Vimtutorの使い方 *tutor* *vimtutor* +*01.3* チュートリアル *tutor* *vimtutor* -テキストを読むだけじゃなく(退屈だし!)初めてvimを使ってみる人のために、 -vimtutorというのを用意しています。これは30分の演習コースで、最低限のvim -の使い方を繰作しながら覚えられます。 +テキストを読むだけじゃなく(退屈だし!)初めて Vim を使う人のために、vimtutor +というのを用意しています。これは 30 分の演習コースで、最低限の Vim の使い方を +繰作しながら覚えられます。 -UnixやMS-Windowsで、vimを普通にインストールしてあれば、シェルから起動でき -ます。 > +Unix では、Vim が適切にインストールしてあれば、シェルから起動できます: > vimtutor -このコマンドは演習用ファイルをバックアップします。ですから演習用ファイルを -壊してしまうことを気にせず、編集の練習ができます。 -各国語への翻訳バージョンもいくつかあります。あなたの国語用があるかどうかは -2文字の言語コードで確認できます。次はフランス語の場合の例です。 > +MS-Windows では、スタートメニューの Program/Vim から起動できます。あるいは、 +$VIMRUNTIME ディレクトリにある vimtutor.bat を実行してください。 - vimtutor fr +演習ファイルのコピーを使って演習するので、オリジナルの演習ファイルを壊してしま +う心配はありません。 +チュートリアルはいくつかの言語に翻訳されています。翻訳されたチュートリアルを使 +うには、二文字の言語コードを指定します。日本語の場合は次のようにします: > -OpenVMSでは、VMSプロンプトから次のようにして起動できます。 > + vimtutor ja + +OpenVMS では、VMS プロンプトから次のようにして起動できます。 > @VIM:vimtutor -上の例と同じようにオプションで2文字の言語コードを指定できます。 +上の例と同じようにオプションで二文字の言語コードを指定できます。 -Unix以外のシステムでは、多少の作業が必要です。 +Unix 以外のシステムでは、多少の作業が必要です。 -1. 演習用ファイルをコピーします。これはvimでできます(どこにあるかを知っ - ていますから) +1. 演習用ファイルをコピーします。これは Vim でできます(どこにあるかを知ってい + ますから) > vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' < - 上は、"TUTORCOPY"というファイルをカレントディレクトリに作ります。翻訳 - バージョンを使うなら、2文字の言語コードを追加します。これは、フランス語 - の場合の例です。 + "TUTORCOPY" というファイルがカレントディレクトリに作成されます。翻訳された + 演習ファイルを使うには、二文字の言語コードを指定します。日本語の場合は次の + ようにします: > > - vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q' + vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.ja' -c 'w! TUTORCOPY' -c 'q' < -2. vimでコピーしたファイルを編集します。 +2. コピーしたファイルを Vim で開きます。 > vim -u NONE -c "set nocp" TUTORCOPY < - オマケの引数はvimをイイ感じで起動してくれます。 + オマケの引数は Vim をイイ感じで起動してくれます。 3. 練習が終わったら、コピーしたファイルを削除します。 > del TUTORCOPY < ============================================================================== -*01.4* Copyright *manual-copyright* +*01.4* 著作権 (Copyright) *manual-copyright* -vimのユーザマニュアルとリファレンスマニュアルの著作権は以下の通りです。 +Vim のユーザマニュアルとリファレンスマニュアルの著作権は以下の通りです。 Copyright (c) 1988-2003 by Bram Moolenaar これは Open Publication License, v1.0 以降での項目と条件に従って配布される -ものです。最新バージョンは以下で入手できます。 +ものです。ライセンスの最新バージョンは以下で入手できます。 http://www.opencontent.org/opl.shtml マニュアルに貢献する人々は上記の著作権通達に同意しなければなりません。 @@ -166,21 +167,21 @@ vimのユーザマニュアルとリファレンスマニュアルの著作権 ユーザマニュアルの一部は以下の本から抽出しています。 "Vi IMproved - Vim" Steve Oualline著 (出版:New Riders Publishing, ISBN: 0735710015) -この本はOpen Publication License を適用します。一部分を引用していますが、 -変更を加えています。(図を削除したり、vim6.0用に書き直したり、間違いを訂正し -たりしています) |frombook|タグの漏れがあったとしても、この本からの引用がある -ことを否定するものではありません。 +この本には Open Publication License が適用されています。必要な部分のみ引用し、 +変更も加えています。(図を削除したり、vim6.0用に書き直したり、間違いを訂正した +りしています) |frombook|タグの漏れがあったとしても、この本からの引用があること +を否定するものではありません。 -Steve Oualline と New Riders が、この本をOPLで出版していただいたことに深く -感謝します。ユーザマニュアルの執筆にあたり、大いに助けとなりました。単に文面 -の提供などではなく、格調や品位のある分章をいただきました。 +この本を OPL で出版してくださった Steve Oualline 氏と New Riders に深く感謝し +ます。ユーザマニュアルの執筆にあたり、大いに助けとなりました。文章の提供という +だけではなく、スタイルや文体も参考にさせていただきました。 -もしこのマニュアルの販売で収益を上げた方がおられたら、是非その利益の一部を -寄付いただいて、ウガンダのAIDS犠牲者を助けてあげてください。詳しくは|iccf|を -ご覧ください。 +このマニュアルの販売で収益を上げた方は、利益の一部を寄付してくださるようお願い +します。ウガンダのAIDS犠牲者を助けてあげてください。詳しくは|iccf|をご覧くださ +い。 ============================================================================== -Next chapter: |usr_02.txt| vimの最初の第一歩 +次章: |usr_02.txt| 初めての Vim Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_02.jax b/ja/usr_02.jax index a4279281c..6ffa78e3b 100644 --- a/ja/usr_02.jax +++ b/ja/usr_02.jax @@ -1,43 +1,43 @@ COMMENT: 編集するために必要な最低限の情報 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_02.txt* For Vim version 6.3. Last change: 2003 May 04 +*usr_02.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - vimの最初の一歩 + 初めての Vim -この章では、vimを使ってファイルを編集するのにとりあえずこと足りるだけの +この章では、Vim を使ってファイルを編集するのにとりあえずこと足りるだけの 情報を提供します。上手でも速くもありませんが、とにかく編集はできます。 ここで出てくるコマンドには多少の時間を取って練習してください。以降に出てくる コマンドの基礎となるものですから。 -|02.1| 初めてvimを使う -|02.2| 文字を挿入する -|02.3| 動き回る -|02.4| 文字を削除する +|02.1| Vim の起動方法 +|02.2| 文字の挿入 +|02.3| カーソル移動 +|02.4| 文字の削除 |02.5| アンドゥ(取り消し)とリドゥ(やり直し) |02.6| 他の編集コマンド -|02.7| 終わり方 -|02.8| ヘルプの見つけ方 +|02.7| Vim の終了 +|02.8| ヘルプの引き方 - Next chapter: |usr_03.txt| カーソルの移動 - Previous chapter: |usr_01.txt| このマニュアルについて -Table of contents: |usr_toc.txt| +次章: |usr_03.txt| カーソルの移動 +前章: |usr_01.txt| マニュアルについて +目次: |usr_toc.txt| ============================================================================== -*02.1* 初めてvimを使う +*02.1* Vim の起動方法 -vimを動かすには次のコマンドを入力します。 > +Vim を起動するには次のコマンドを入力します。 > gvim file.txt UNIXでは、コマンドプロンプトで入力します。Microsoft Windows環境では、MS-DOS プロンプトを開いて、入力してください。 -いずれの場合でも、vimは file.txt という名前のファイルの編集を開始します。 +いずれの場合でも、Vim は file.txt という名前のファイルの編集を開始します。 画面には次のように表示されていることでしょう。 +---------------------------------------+ @@ -50,46 +50,44 @@ UNIXでは、コマンドプロンプトで入力します。Microsoft Windows +---------------------------------------+ ("#" はカーソル位置を示します) -ティルド(~)の行は、ファイルにその行がないことを示します。いい換えれば、その -ファイルの末尾より後ろを表示する時はティルド表示になります。画面の下の方に、 -編集中のファイル名は"file.txt"で、新しいファイルであることを示しています。 -この行をメッセージ情報行と呼びます。メッセージ情報行の表示は一時的で、他の -メッセージを表示する時には前のメッセージに上書きして表示します。 +ティルド(~)の行は、ファイルにその行がないことを示しています。Vimは、ファイルの +末尾より後ろを表示する場合に、ティルドを表示します。画面の下の方に、編集中の +ファイル名は"file.txt"で、新しいファイルであることが表示されています。この行を +メッセージ情報行と呼びます。メッセージ情報行の表示は一時的で、他のメッセージが +表示されると消えてしまいます。 VIM コマンド ------------ -gvimでは編集用に新たなウィンドウを生成します。一方、次のコマンドを -用いた場合、 > +gvimは編集用に新たなウィンドウを生成します。次のコマンドを用いた場合は、 > vim file.txt -コマンドウィンドウの中で編集を行えます。言い換えると、xtermの中で実行すれば、 -vimはxtermウィンドウ内で動くのです。Microsoft Windows上でMS-DOSプロンプト -画面を使っていれば、エディタはそのウィンドウの中で動きます。 -ウィンドウ内の文字表示はどちら(gvimでもvimでも)のバージョンでも同じに見えま -すが、gvimにはメニューバーなどの追加機能があります。詳しくは後で述べます。 +コマンドウィンドウの中で編集を行えます。すなわち、xtermの中で実行すれば、Vimは +xtermウィンドウ内で動くのです。Microsoft Windows上でMS-DOSプロンプト画面を使っ +ていれば、エディタはそのウィンドウの中で動きます。どちらのバージョンでも同じよ +うに表示されますが、gvimにはメニューバーなどの追加機能があります。詳しくは後で +述べます。 ============================================================================== -*02.2* 文字列の挿入 - -vimはモード依存型のエディタです。そのため現在のモードによってエディタの動き -は異なります。一番よく使うモードは、「通常モード」と「挿入モード」です。通常 -モードでは入力した文字はコマンドとして扱われます。挿入モードでは入力した文字 -はそのまま挿入されます。 -vimを起動した時は通常モードから始まります。挿入モードに入るには、"i"コマンド -(iはInsertの意味です)を入力します。これで、文章を入力できるようになります。 -その文章はファイルに挿入されます。入力を間違っても気にしないようにしましょう。 -後で修正する方法も説明します。 -次のようなプログラマーのリメリック(詩の一種)を次のように入力したとしましょう。 +*02.2* 文字の挿入 + +Vimはモード型エディタです。モードによって挙動が変わります。一番よく使うモード +は、「ノーマルモード」と「挿入モード」です。ノーマルモードでは、入力した文字は +コマンドとして扱われます。挿入モードでは、入力した文字はそのまま挿入されます。 +Vimを起動した直後はノーマルモードになっています。挿入モードに入るには、"i"コマ +ンド(iはInsertの意味です)を入力します。これで、文章を入力できるようになりま +す。入力した文章はファイルに挿入されます。入力を間違っても気にしないようにしま +しょう。後で修正する方法も説明します。次のように、プログラマーのリメリック(詩 +の一種)を入力したとしましょう。 > iA very intelligent turtle Found programming UNIX a hurdle -"turtle"を入力した後に<Enter>キーを押すと改行します。最後に<Esc>キーを押す -と、挿入モードを終了して、通常モードに戻ります。この時、vimウィンドウには -次のような2行を表示しています。 +"turtle"を入力した後に<Enter>キーを押すと改行されます。最後に<Esc>キーを押す +と、挿入モードが終了し、ノーマルモードに戻ります。このとき、Vimウィンドウには +次のような2行が表示されています。 +---------------------------------------+ |A very intelligent turtle | @@ -103,7 +101,7 @@ vimを起動した時は通常モードから始まります。挿入モード 今は何モード? -------------- -今現在のモードが何かを知りたければ、次のコマンドを入力してください。 > +現在のモードを確認できるようにするには、次のコマンドを入力してください。 > :set showmode @@ -111,8 +109,7 @@ vimを起動した時は通常モードから始まります。挿入モード はコロンコマンド(最初が":"で始まるコマンド)を入力する場所です。コマンドの最 後に<Enter>キーを入力します(コロンで始まるコマンドは全てこの方法を使います) さて、ここで"i"コマンドを入力すると、ウィンドウの最下段に"― 挿入 ―"という -表示が現れます。なお、以降ではこのようなコマンドのことを「コマンドラインモー -ドのコマンド」と呼びます。 +表示が現れます。これは、あなたが挿入モードにいることを示しています。 +---------------------------------------+ @@ -123,22 +120,22 @@ vimを起動した時は通常モードから始まります。挿入モード |― 挿入 ― | +---------------------------------------+ -<Esc>を押すと通常モードに戻り、最下段は空白となります。 +<Esc>を押すとノーマルモードに戻り、最下段は空白となります。 トラブルを避ける ---------------- -vimを使い始めた時にはモードを混同してしまいがちです。これは今のモードが解ら -なくなったり、間違ってモード変更を伴うコマンドを入力した時に起こります。 -どのモードにいる場合でも<Esc>を押すと通常モードに戻ります。時には<Esc>を2回 -押さないといけない場合もあります。通常モードで<Esc>を押すと、警告音が鳴りま -す。つまりvimが警告音を出したら通常モードだ、ということです。 +Vimを使い始めたときにはモードを混同してしまいがちです。これは今のモードが解ら +なくなったり、間違ってモード変更を伴うコマンドを入力した時に起こります。どの +モードにいる場合でも<Esc>を押すとノーマルモードに戻ります。時には<Esc>を2回押 +さないといけない場合もあります。ノーマルモードで<Esc>を押すと、警告音が鳴りま +す。つまりVimが警告音を出したらノーマルモードだ、ということです。 ============================================================================== -*02.3* 動き回る +*02.3* カーソル移動 -通常モードに戻ると、次のキーを使ってカーソルを動かすことができます。 +ノーマルモードに戻ると、次のキーを使ってカーソルを動かすことができます。 h 左 *hjkl* j 下 @@ -149,18 +146,18 @@ vimを使い始めた時にはモードを混同してしまいがちです。 「右(Right)」に移動するなんて聞いたことないですよね。でもこれには実に合理的 な理由があります。エディタで一番よく使うコマンドはカーソル移動コマンドです。 viでは右手のホームポジションの段にそのコマンドを集中させたのです。つまり、 -このコマンドは(特に10本の指を使ってタイプする人が)一番速く打てる場所にレイ -アウトしてあるのです。 +このコマンドは、あなた(特に10本の指を使ってタイプする人)が一番速く打てる場所 +に配置してあるのです。 Note: - なおカーソル移動は矢印キーでも行えます。でもそれだと、編集速度は大 - きく落ちます。これは矢印キーを押すのにメインキー(アルファベットの - ある部分)から手を動かさなければならないためです。 - 1時間に数百回もそれをすることを考えると、合計時間はバカにならない - 量となるでしょう。 + カーソル移動は矢印キーでも行えます。でもそれだと、編集速度は大きく落ち + ます。これは矢印キーを押すのにメインキー(アルファベットのある部分)か + ら手を動かさなければならないためです。 + 1時間に数百回もそれをすることを考えると、合計時間はバカにならない量と + なるでしょう。 また、世の中には矢印キーのないキーボードや変な場所に配置してあるキー - ボードもあります。こんな場合でもhjklの使い方を知っていれば役に立つ - ことでしょう。 + ボードもあります。そんな場合でもhjklの使い方を知っていれば役に立つこと + でしょう。 このコマンドは、"h"は左で、"l"は右、"j"は下を指している、とでも覚えておきま しょう。図で示すと次の通りです。 > @@ -171,8 +168,8 @@ viでは右手のホームポジションの段にそのコマンドを集中さ 移動コマンドを覚える一番の方法は使ってみることです。"i"コマンドを使ってさら に数行の文を打ちましょう。その上で、hjkl キーを使って動き回り、いろんな場所 -に文字を挿入してみましょう。通常モードに戻るのには<Esc>キーを押すのを忘れず -に。|vimtutor| を使うのも慣れるにはいい方法でしょう。 +に文字を挿入してみましょう。ノーマルモードに戻るのには<Esc>キーを押すのを忘れ +ずに。|vimtutor| を使うのも慣れるにはいい方法でしょう。 日本のユーザーへ、Hiroshi Iwataniさんは次のような提案をしています。 @@ -185,7 +182,7 @@ viでは右手のホームポジションの段にそのコマンドを集中さ Java (ジャワ島。プログラミング言語のあれではない) ============================================================================== -*02.4* 文字を削除する +*02.4* 文字の削除 文字を削除するにはカーソルをその上に置いて"x"を押します。(これはずっと昔に タイプライタで消したい文字の上に"xxxxxx"などとやっていたのと同じです)例えば @@ -234,7 +231,7 @@ viでは右手のホームポジションの段にそのコマンドを集中さ 改行を取る ---------- -vimでは複数の行を1行にまとめられます。これは行と行の間にある改行を削除する +Vimでは複数の行を1行にまとめられます。これは行と行の間にある改行を削除する ことに他なりません。"J"コマンドでそれを行えます。 例えば、次の2行があるとします。 @@ -249,14 +246,14 @@ vimでは複数の行を1行にまとめられます。これは行と行の *02.5* アンドゥ(取り消し)とリドゥ(やり直し) 間違って削除しすぎたとしましょう。確かに、打ち直せばいいのですが、もっと簡単 -な方法があります。"u"コマンドは直前の編集結果をアンドゥ(取り消し)します。 +な方法があります。"u"コマンドで直前の編集結果をアンドゥ(取り消し)できます。 実例で見てみましょう。"dd"コマンドで1行目を削除した後で、"u"コマンドを実行 します。すると削除した行が復元されます。 もう一つの例。カーソルを1行目の A まで動かします。 A young intelligent turtle ~ -ここで xxxxxxx を使い、"A young"を削除します。結果は次のようになります。 +xxxxxxx と入力し、"A young"を削除します。結果は次のようになります。 intelligent turtle ~ @@ -281,7 +278,7 @@ vimでは複数の行を1行にまとめられます。これは行と行の "u"を2回押した時に、最初の状態に戻ってしまったのであれば、きっとvi 互換モードで動いています。|not-compatible|を見て、修正しておきま しょう。 - このマニュアルでは「vim方式」でやることを前提にしています。もし古き + このマニュアルでは「Vim方式」でやることを前提にしています。もし古き 良き時代のvi方式を望むのであれば、細かな違いが各所にありますので、 気をつけてください。 @@ -295,9 +292,9 @@ vimでは複数の行を1行にまとめられます。これは行と行の young intelligent turtle ~ -アンドゥコマンドには特別バージョンがあります。"U"(行アンドゥ)コマンドです。 -行アンドゥコマンドは直前に編集した行の全変更を取り消します。このコマンドを -2回実行すると、1回目の"U"を取り消します。 +アンドゥコマンドには特別なバージョン、"U"(行アンドゥ)コマンドがあります。行ア +ンドゥコマンドは直前に編集した行の全変更を取り消します。このコマンドを2回実行 +すると、1回目の"U"が取り消されます。 A very intelligent turtle ~ xxxx "very"を削除 @@ -313,33 +310,35 @@ vimでは複数の行を1行にまとめられます。これは行と行の "u"がアンドゥで、 CTRL-R がリドゥであるのに対し、"U"コマンドはそれ自身が変更 コマンドです。ちょっとわかりにくいかも知れませんが、心配はいりません。"u"と -CTRL-Rがあればどんな場合でも大丈夫だ、ってことです。 +CTRL-Rがあればどんな場合でも大丈夫だ、ってことです。詳細は || にあります。 +訳注: 原文抜け ============================================================================== *02.6* 他の編集コマンド -vimには文章を編集する数多くのコマンドがあります。以下の|Q_in|をご覧ください。 -ここでは頻繁に使うものだけを述べます。 +Vimには文章を編集するための数多くのコマンドがあります。下記、または|Q_in|を参 +照してください。ここでは頻繁に使うものだけを述べます。 -APPEND(追記) ------------- +APPENDING(追記) +-------------- + +"i"コマンドはカーソルの前に文字列を挿入しますが、**行末**に何か追加したい時に +はどうしましょう?カーソルの後ろに文を挿入しないといけません。"a" (append) コ +マンドでそれを行います。 +例えば、次の行を -"i"コマンドはカーソル位置の前に文字列を挿入します。でも**行末**に何か追加 -したい時にはどうしましょう?これをやるにはカーソル位置の後ろに文を挿入する -必要があります。これは"a"コマンドでできます。 -例えば、この行を and that's not saying much for the turtle. ~ -次のように変更したいとします。 +このように変更したいとします。 and that's not saying much for the turtle!!! ~ まずカーソルを行末のピリオドの上に動かし、"x"でピリオドを消します。この時 -カーソルは 行末の turtle の "e"の上にあります。ここで、次のコマンドを入力 +カーソルは行末の turtle の "e" の上にあります。ここで、次のコマンドを入力 します。 > a!!!<Esc> -これでturtleの後ろに3つの"!"記号を追加します。 +これでturtleの後ろに3つの"!"記号が追加されます。 and that's not saying much for the turtle!!! ~ @@ -347,14 +346,14 @@ APPEND(追記) 新しい行を空ける ---------------- -"o"コマンドは新しい行をカーソル位置の下に作り、vimを挿入モードにします。 -ここで、新たな行に文章を入力できます。 -以下のような2行があり、カーソルが最初の行のどこかにあるとします。 +"o"コマンドは、カーソルの下に新しい行を作り、Vimを挿入モードにします。 +続けて、新たな行に文章を入力できます。 +以下のような二行があり、カーソルが一行目のどこかにあるとします。 A very intelligent turtle ~ Found programming UNIX a hurdle ~ -ここで"o"コマンドを使って入力します。 +"o"コマンドを実行し、テキストを入力すると: > oThat liked using Vim<Esc> @@ -364,27 +363,27 @@ APPEND(追記) That liked using Vim ~ Found programming UNIX a hurdle ~ -"O"コマンド(大文字)もあり、こちらはカーソル行の上に空行を作ります。 +"O"コマンド(大文字)もあり、こちらはカーソルの上に空行を作ります。 カウンタの利用 -------------- 9行上に移動するには、"kkkkkkkkk"と入力することもできますが、"9k"でもOKで -す。実はvimでは多くのコマンドの前に数値を指定できます。既に出てきたように -3つの"!"を追加するのに"a!!!<Esc>"と入力しました。これを"3a!<Esc>"としても -同じ結果になります。最初の"3"は以降のコマンドを3回実行することを示します。 -3文字削除するのであれば、"3x"というコマンドでできます。このような回数指定の -ことをカウンタと呼びます。カウンタは常に対象となるコマンドより前に指定します。 +す。実はVimでは多くのコマンドの前に数値を指定できます。上にあげた例で、3つの +"!"を追加するのに"a!!!<Esc>"と入力しましたが、"3a!<Esc>"でも同じ結果になりま +す。最初の"3"は以降のコマンドを3回実行することを示します。3文字削除するので +あれば、"3x"というコマンドでできます。このような回数指定のことをカウンタと呼び +ます。カウンタは常に対象となるコマンドより前に指定します。 ============================================================================== -*02.7* 終わり方 +*02.7* Vim の終了 -vimを終わるには、"ZZ"コマンドを使います。このコマンドはファイルを保存して、 -終了します。 +Vimを終了するには、"ZZ"コマンドを使います。このコマンドは、ファイルを保存し +て、終了します。 Note: - 他の多くのエディタと違い、vimには自動的にバックアップを作成する機能 + 他の多くのエディタと違い、Vimには自動的にバックアップを作成する機能 はありません。"ZZ"と打つと、変更点は上書きされるため、以前のものを 取り戻す方法はありません。もちろん設定さえ行えば、バックアップを生成 するようにできます。|07.4|を見てください。 @@ -394,7 +393,7 @@ vimを終わるには、"ZZ"コマンドを使います。このコマンドは -------------- 何らかの変更を行った後で、突然もっと良い方法を思いつくこともあるでしょう。 -大丈夫です。vimには「全部投げ捨てて終了する」コマンドがあります。 > +大丈夫です。Vimには「全部投げ捨てて終了する」コマンドがあります。 > :q! @@ -403,51 +402,51 @@ vimを終わるには、"ZZ"コマンドを使います。このコマンドは 詳しい内容に興味がある方に説明しておくと、このコマンドは3部構成になっていて 最初の":"はコマンドラインモードに入るため、次の"q"はエディタを終了するコマン ド、最後の"!"は上書きのコマンドオプションです。 -上書きコマンドオプションはvimに変更内容を投げ捨てさせるために必要です。これ -を":q"とすると、vimは次のようなエラーを出して、終了を拒否します。 +上書きコマンドオプションはVimに変更内容を投げ捨てさせるために必要です。これ +を":q"とすると、Vimは次のようなエラーを出して、終了を拒否します。 E37: No write since last change (use ! to override) ~ E37: 最後の変更が保存されていません (! で変更を破棄) ~ -上書きを指定することで、vimに「バカげたことをしてるように見えるのはわかって +上書きを指定することで、Vimに「バカげたことをしてるように見えるのはわかって る。でもボクは大人だし、本当にそうしたいんだ」と告げているわけです。 -もし、vimでの編集を続けたいのであれば、":e!"コマンドで元のファイルを読み込 +もし、Vimでの編集を続けたいのであれば、":e!"コマンドで元のファイルを読み込 み直してくれます。 ============================================================================== -*02.8* ヘルプで探す +*02.8* ヘルプの引き方 -知りたいことは何でもvimもヘルプファイルで見つけられます。 -聞くのを嫌がらないでください。 -全体的なヘルプは次のコマンドで見ることができます。 > +知りたいことは何でもVimのヘルプから見付けられるでしょう。 +どんどん調べてください! +次のコマンドでヘルプの総合案内が表示されます。 > :help ファンクションキー<F1>を使ってもいいです。キーボードに<Help>キーがあれば、 -それも使える場合があります。 -何も引数を与えなければ、":help"は全体的なヘルプウィンドウを表示します。vim -の作者はとっても賢い(いや、とっても怠け者かも)ので、ヘルプウィンドウには -普通の編集ウィンドウをそのまま使っています。そのおかげでヘルプの情報を探す -時にもvimの全コマンドが使えます。つまり、h , j , k , l で 上下左右に動ける -のです。 -ヘルプウィンドウを閉じるには、エディタを終わる時と同じコマンド、"ZZ"を使え -ます。この場合は、ヘルプウィンドウを閉じるだけで、vimは終わりません。 +それも使えるかもしれません。 +":help" に調べたい項目を指定しなかった場合は、総合案内がヘルプウィンドウに表示 +されます。Vimの作者はとっても賢い(いや、とっても怠け者かも)ので、ヘルプウィ +ンドウには普通の編集ウィンドウをそのまま使っています。そのおかげでヘルプの情報 +を探す時にもVimの全コマンドが使えます。つまり、h , j , k , l で 上下左右に動け +るのです。 +ヘルプウィンドウを閉じるには、エディタを終了する時と同じコマンド、"ZZ"が使えま +す。この場合は、ヘルプウィンドウを閉じるだけで、Vimは終了しません。 ヘルプを見ていると、縦棒"|"で囲まれた文字に気づくでしょう。(例:|help|) これはハイパーリンクです。この場所にカーソルを置いて、CTRL-](タグジャンプ) を押します。するとそのタイトルのヘルプにジャンプします。(理由は省きますが、 -vimではハイパーリンクのことをタグと呼びます) CTRL-] はカーソル下の単語を +Vimではハイパーリンクのことをタグと呼びます) CTRL-] はカーソル下の単語を タグとみなして、その場所にジャンプします。 ジャンプを繰り返した後で、戻りたくなった場合は CTRL-T(タグをポップする)を 押せば直前の場所に戻ります。この場合はCTRL-O(古い場所へのジャンプ)もうまく 動くでしょう。 -ヘルプ画面のトップには *help.txt* といった表記があります。"*"で囲まれた名前 -はヘルプシステム側でタグ(ハイパーリンクの飛び先)を定義する時に使っていま -す。タグの使い方の詳細は、|29.1|をご覧ください。 +ヘルプ画面のトップには*help.txt*といった表記があります。"*"で囲まれた名前はヘ +ルプシステム側でタグ(ハイパーリンクの飛び先)を定義する時に使っています。タグ +の使い方の詳細は、|29.1|をご覧ください。 -項目名を指定してヘルプを見るには次のコマンドを使います。 > +指定した項目のヘルプを見るには次のコマンドを使います。 > :help {subject} @@ -455,38 +454,38 @@ vimではハイパーリンクのことをタグと呼びます) CTRL-] はカ :help x -文字の削除方法を知りたければ次のコマンドです。 +文字の削除方法を知りたければ次のコマンドです。 > :help deleting -vimコマンドの全目次を見るには次のコマンドです。 +Vimコマンドの全目次を見るには次のコマンドです。 > :help index -コントロール文字のコマンド(例えば、CTRL-A)のヘルプを見るには、CTRL-に続けて +コントロール文字のコマンド(例えば、CTRL-A)のヘルプを見るには、"CTRL-"に続けて その文字を指定します。 > :help CTRL-A -vimにはいろんなモードがあります。特に指定しなければ、ヘルプは通常モードのコ -マンドのヘルプを表示します。例えば、以下のコマンドは通常モードのCTRL-Hコマン -ドのヘルプを表示します。 +Vimにはいろんなモードがあります。特に指定がなければ、ノーマルモードのコマンド +のヘルプが表示されます。例えば、以下のコマンドはノーマルモードのCTRL-Hコマンド +のヘルプを表示します。 > :help CTRL-H -他のモードであることを示したければ、プレフィクスを付けます。挿入モードのヘル -プが見たければ、"i_"を付けます。CTRL-Hの場合なら次のようになります。 > +他のモードを指定するには、プレフィクスを付けてください。例えば、挿入モードのヘ +ルプが見たいときには、"i_"を付けます。CTRL-Hの場合なら次のようになります。 > :help i_CTRL-H -vimの起動時に、コマンドライン引数が指定できます。引数は先頭が"-"で始まりま -す。例えば、"-t"オプションの意味を知るには次のコマンドと使います。 > +Vimの起動時に、コマンドライン引数が指定できます。引数は先頭が"-"で始まりま +す。例えば、"-t"オプションの意味を知るには次のコマンドを使います。 > :help -t -vimでは数多くのオプションがあり、それを設定することでカスタマイズができま -す。このオプションのヘルプが見たければ、アポストロフィでそれを囲ってくださ -い。例えば、'number'オプションの意味を知るには次のコマンドを使います。 > +Vimでは数多くのオプションがあり、それを設定することでカスタマイズができます。 +オプションのヘルプを見るには、アポストロフィでそれを囲ってください。例えば、 +'number'オプションの意味を知るには次のコマンドを使います。 > :help 'number' @@ -497,17 +496,17 @@ vimでは数多くのオプションがあり、それを設定することで :help i_<Up> -次のようなエラーが出て、その意味がよくわからない場合、 +次のようなエラーが出て、その意味がよくわからない場合は、 E37: No write since last change (use ! to override) ~ E37: 最後の変更が保存されていません (! で変更を破棄) ~ -ヘルプの行頭に表示されるエラーIDを指定できます。 > +行頭のエラーIDを使えば、そのヘルプを検索できるでしょう。 > :help E37 ============================================================================== -Next chapter: |usr_03.txt| 動いてみる +次章: |usr_03.txt| カーソルの移動 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_03.jax b/ja/usr_03.jax index f09a30a0e..471d64564 100644 --- a/ja/usr_03.jax +++ b/ja/usr_03.jax @@ -1,23 +1,23 @@ COMMENT: カーソル移動 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_03.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*usr_03.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - 動いてみる + カーソルの移動 文の入力や削除の前には、カーソルを目的の場所に動かさなくてはなりません。 -vimはカーソル移動のための数多くのコマンドを持っています。本章では、その中で +Vimはカーソル移動のための数多くのコマンドを持っています。本章では、その中で も重要なコマンドの使い方を述べます。一覧は|Q_lr|をご覧下さい。 |03.1| 単語ごとの移動 |03.2| 行頭、行末への移動 |03.3| 文字への移動 -|03.4| カッコ類の呼応 +|03.4| カッコの対応 |03.5| 特定の行への移動 |03.6| 現在の場所を表示 |03.7| スクロール @@ -25,14 +25,14 @@ vimはカーソル移動のための数多くのコマンドを持っていま |03.9| 簡単なパターン検索 |03.10| マークの使用 - Next chapter: |usr_04.txt| 小さな変更 - Previous chapter: |usr_02.txt| vimの最初の一歩 -Table of contents: |usr_toc.txt| +次章: |usr_04.txt| 簡単な編集 +前章: |usr_02.txt| 初めての Vim +目次: |usr_toc.txt| ============================================================================== *03.1* 単語ごとの移動 -カーソルを1単語先に進めるには、"w"コマンドを使います。他のvimコマンドも +カーソルを1単語先に進めるには、"w"コマンドを使います。他のVimコマンドも そうですが、複数の単語を一気に進めるために数値による回数指定(カウンタ) ができます。例えば、"3w"では3単語進めます。図で示すと次のようになります。 @@ -55,13 +55,14 @@ Table of contents: |usr_toc.txt| ge ge e e カーソルが行末の単語にある場合、"w"コマンドは次の行の最初の単語に進みます。 -これを使うと"l"よりもずっと早く文章の中を動けます。"b"なら逆方向に同じルールで動きます。 +これを使うと"l"よりもずっと早く文章の中を動けます。"b"なら逆方向に同じルールで +動きます。 -単語の末尾には"."や"-"、")"といったアルファベット以外の文字がきます。vimが -何を単語とみなすかは、'iskeyword'オプションの設定で変更できます。 -空白類で区切られた単語(WORD)間を移動することもできます。これは普通に使う -単語(word)とは若干違うため、大文字で書いています。WORD単位で動くコマンド -は全部大文字です。図で示すと次の通りです。 +単語は"."や"-"、")"といったアルファベット以外の文字で区切られます。Vimが何を単 +語とみなすかは、'iskeyword'オプションの設定で変更できます。 +空白を区切りとした単語(WORD)を移動することもできます。これは普段意識する単語 +(word)とは若干違うため、大文字で書いています。WORD単位で動くコマンドは全部大文 +字です。図で示すと次の通りです。 ge b w e <- <- ---> ---> @@ -75,11 +76,11 @@ Table of contents: |usr_toc.txt| ============================================================================== *03.2* 行頭、行末への移動 -"$"コマンドはカーソルを行末に移動します。キーボード上に<End>キーがあれば、 -それも同じ意味で使えます。 +"$"コマンドはカーソルを行末に移動します。キーボードに<End>キーがあれば、それも +同じ意味で使えます。 -"^"コマンドはカーソルを行頭の非空白文字に移動します。"0"(数字のゼロ)コマン -ドは行頭文字に移動します。<Home>キーも同じです。図で示しましょう。 +"^"コマンドはカーソルを行頭から最初の非空白文字に移動します。"0"(数字のゼロ)コ +マンドは行頭に移動します。<Home>キーも同じです。図で示しましょう。 ^ <------------ @@ -99,54 +100,53 @@ Table of contents: |usr_toc.txt| ============================================================================== *03.3* 文字への移動 -他のエディタにはあまりない、実に便利な移動コマンドがあります。1文字検索とい -うこのコマンド"fx"は、その行にある文字 x を検索します。(fはFindの意味です) +特に便利な移動コマンドはいくつかありますが、一文字検索コマンドもその一つです。 +コマンド "fx" はその行にある文字 x を前方検索します。(f は Find の意味です)。 例えば、下図で示した行の先頭にカーソルがあり、 human の h に移動したいとしま -す。ここで"fh"コマンドを使うと、'h'の上にカーソルが進みます。 +す。"fh"コマンドを実行すると、'h'の上にカーソルが進みます。 To err is human. To really foul up you need a computer. ~ ---------->---------------> fh fy -同じように"fy"コマンドを使うと really の y まで進むのも示しています。 -これもカウンタ指定ができます。例えば下図で foul の l に進めたいのなら"3fl"で -できます。 +続いて、"fy"コマンドで really の y まで移動しています。 +これもカウンタ指定ができます。例えば下図で foul の l に進むには "3fl" です。 To err is human. To really foul up you need a computer. ~ ---------------------> 3fl -"F"コマンドは逆に左向きに検索します。 +"F"コマンドは左向きに検索します。 To err is human. To really foul up you need a computer. ~ <--------------------- Fh -"tx"コマンドは"fx"コマンドに似た動きをします。違うのは検索した文字の上では -なく、その直前で止まる点です。(tはToの意味です) +"tx"コマンドは"fx"コマンドに似た動きをしますが、検索した文字の上ではなく、その +直前で止まります。(tはToの意味です) このコマンドの逆方向版は"Tx"です。 To err is human. To really foul up you need a computer. ~ <------------ -------------> Th tn -この4つのコマンドは";"コマンドで繰り返し実行ができます。また","コマンドで -は反対方向に繰り返します。なお、このコマンドではカーソルは他の行には動きま -せん。前後に行があってもです。 +この4つのコマンドは ";" コマンドで繰り返せます。反対方向に繰り返すには "," コ +マンドです。このコマンドは、カーソルが他の行に移動することはありません。文が次 +行に続いていても移動しません。 -検索をしようとして、コマンドを打ち間違うこともあるでしょう。例えば、逆方向検 -索のつもりで("F"と打つべきところを)"f"と打ってしまったとしましょう。このコマ -ンドを中断するには<Esc>を押します。"f<Esc>"は<Esc>を探すのではなく、コマンド -をキャンセルします。 -Note:<Esc>は検索に限らず、ほとんどのコマンドをキャンセルするのに使えます。 +検索をしようとして、コマンドを打ち間違うこともあるでしょう。例えば、逆方向検索 +のつもりで("F"と打つべきところを)"f"と打ってしまったとしましょう。コマンドの実 +行を取り止めるには<Esc>を押します。"f<Esc>"は<Esc>を探すのではなく、コマンドを +キャンセルします。Note:<Esc>は検索に限らず、ほとんどのコマンドをキャンセルする +のに使えます。 ============================================================================== -*03.4* カッコ類の呼応 +*03.4* カッコの対応 -プログラムを作っていると、呼応している( )を確認したくなる場合があります。 -これには"%"コマンドがとても便利です。このコマンドは対応するカッコ類を -探し、そこに移動します。カーソルが"("の上にある時は呼応する")"を探し、")"上 -にカーソルがある時は"("を逆方向に探します。 +プログラムを書いていると、入れ子になった () を書くことがよくあります。そのよう +な場合には、"%" コマンドがとても便利です。このコマンドを使うと対応するカッコに +移動できます。カーソルが "(" の上なら対応する ")" に、")" の上なら対応する "(" +に移動できます。 % <-----> @@ -154,12 +154,12 @@ Note:<Esc>は検索に限らず、ほとんどのコマンドをキャンセル <----------------> % -このコマンドは[ ]や{ }のペアでも動きます。(さらに'matchpairs'オプションで定義 -することもできます) +このコマンドは [] や {} のペアでも機能します。(これは'matchpairs'オプションで +定義できます) -カーソルがカッコ類の上にない場合、"%"はまず前方検索をしてカッコ類を探します。 -つまり、上図の例で行頭にカーソルがある場合、"%"は前方検索をして、"("を見つ -け、次に呼応するカッコ")"の場所に移動します。 +カーソルがカッコの上にない場合、"%"はまず前方検索をしてカッコを探します。上図 +の例と同じ行の行頭にカーソルがあった場合、"%" は前方検索をして "(" を見つけ、 +それから、対応するカッコ ")" に移動します。 if (a == (b * c) / d) ~ ---+----------------> @@ -173,16 +173,16 @@ CやC++のプログラマであれば、次のようなパターンのエラー prog.c:33: j undeclared (first use in this function) ~ -何か33行目に修正しないといけない点がありそうです。では、どうやって33行目に -移動しましょうか?"9999k"などとしてファイルの先頭まで移動してから、"32j"で -32行下に移動するやり方もあります。確かに目的は達しますが、あまりいい方法とは -思えません。そこで"G"というコマンドを使いましょう。このコマンドはカウンタを -指定すると、その行にジャンプします。例えば、"33G"とすれば、33行目にジャンプ -できます。(実はコンパイラのエラーリストを使ってもっと簡単に移動する方法もあ -ります。|usr_30.txt| の":make"コマンドをご覧ください。) -カウンタを指定しないと、"G"はファイルの最終行にジャンプします。逆にファイル -の先頭にジャンプするには"gg"を使います。"1G"でも同じですが、ちょっと打ちに -くいですから。 +何か33行目に修正しないといけない点がありそうです。では、どうやって33行目に移動 +しましょうか?"9999k"などとしてファイルの先頭まで移動してから、"32j"で32行下に +移動するやり方もあります。確かに目的は達しますが、あまりいい方法とは思えませ +ん。そこで"G"というコマンドを使います。このコマンドにカウンタを指定すると、そ +の行にジャンプできます。例えば、"33G"とすれば、33行目にジャンプできます。(実は +コンパイラのエラーリストを使ってもっと簡単に移動する方法もあります。 +|usr_30.txt| の":make"コマンドをご覧ください。) +カウンタを指定しなかった場合はファイルの最終行にジャンプします。ファイルの先頭 +にジャンプするには"gg"を使います。"1G"でも同じですが、ちょっと打ちにくいですか +ら。 | first line of a file ^ | text text text text | @@ -199,9 +199,9 @@ CやC++のプログラマであれば、次のようなパターンのエラー はそのファイルの真ん中まで移動します。"90%"だとファイルのほぼ最後(90%の場所) に移動します。 -以上述べたのは、画面上に見えているかどうかは関係なくファイル中の特定行に -移動したい場合のコマンドでした。では画面上に見えている行に移動したい場合は -どうしましょうか?下図はこういう時に使える3つのコマンドです。 +以上述べたのは、画面上に見えているかどうかに関係なくファイルの特定行に移動した +い場合のコマンドでした。では画面上に見えている行に移動したい場合はどうしましょ +うか?そういう時に使える3つのコマンドを下図に示します。 +---------------------------+ H --> | text sample text | @@ -223,48 +223,48 @@ CやC++のプログラマであれば、次のようなパターンのエラー ファイル中の現在の場所を知るには、次の3つの方法があります。 1. CTRL-Gコマンド。次のようなメッセージが表示されます。('ruler'オプション - がOffの場合) + がオフの場合) "usr_03.txt" line 233 of 650 --35%-- col 45-52 ~ 編集中のファイル名、カーソルのある行番号、全体の行数、ファイル全体を 通してのパーセント、カーソル桁位置、を表示します。 - 場合によっては、"col 2-9"のようにカーソル桁位置が分けて表示される場合が - あります。この場合、カーソルは2文字目にあります。しかし、その場所の文字 - がTABである場合8桁分の場所を占めるため、画面上ではカーソルは9桁目に - 表示されるのです。 + 場合によっては、カーソル桁位置が 2 つに分けて表示されます。例えば、 + "col 2-9" の場合、カーソルは 2 文字目にあります。2 文字のうち、1 文字がタ + ブ文字で、8 文字分で表示されているため、画面上では 9 桁目にある、というこ + とです。 -2. 'number'オプションの使用。このオプションは各行の行頭に行番号を付けます。 > +2. 'number'オプションを設定する。行頭に行番号が表示されるようになります: > :set number < - その後、オプションをoffに戻します。 > + オプションをオフに戻すには: > :set nonumber < - 'number'は論理値オプションなので、オプション名の先頭に"no"を付けると、 - offの意味になります。論理値オプションはonかoffの2つのいずれかになりま - す。vimには多数のオプションがあります。論理値オプションの他に、数値オプ + 'number'は論理値オプションなので、オプション名の先頭に"no"を付けると、オフ + の意味になります。論理値オプションにはオンかオフの2つの状態しかありませ + ん。 + Vimには多数のオプションがあります。論理値オプションの他に、数値オプ ションと文字列オプションがあります。そういったオプションを使う時に例を お見せしましょう。 -3. 'ruler'オプションを使います。これは現在のカーソル位置をvimウィンドウの - 右下隅に表示します。 > +3. 'ruler'オプションを設定する。現在のカーソル位置が、Vimウィンドウの右下隅に + 表示されるようになります: > :set ruler < - 'ruler'オプションは'number'より場所を取らないので、画面を広く使えます。 +'ruler' は表示に場所を取らないので、画面を広く使えます。 ============================================================================== *03.7* スクロール -CTRL-Uコマンドは画面の高さの半分だけ逆スクロールします。文章を覗き窓を通して -見ていて、その窓の高さの半分だけ上に動いたと考えてください。つまり窓が文章の -上をファイルの逆方向に戻ったということです。どっちが上でどっちが -下かわかりにくいかと思いますが、気にすることはありません。みんな同じように -悩むことですから。 -CTRL-Dコマンドは覗き窓を半分だけ下に下げます。つまり文章は画面の半分だけス -クロールすることになります。 +CTRL-U コマンドは画面の半分だけ下にスクロールします。窓を通してテキストを見て +いて、その窓を高さの半分だけ上に動かす、と考えてください。窓が上に動き、さっき +より上の位置のテキストが表示されます。どっちが上でどっちが下かわかりにくいかと +思いますが、気にすることはありません。みんな同じように悩むことですから。 +CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが画面の半分だけスクロール +することになります。 +----------------+ | some text | @@ -289,12 +289,12 @@ CTRL-Dコマンドは覗き窓を半分だけ下に下げます。つまり文 マップをお使いの場合、CTRL-Yはスクロールではなく、再実行(redo)コマンドとなり ます) -1画面分(2行は重複します)スクロールするにはCTRL-Fを使います。逆方向用には -CTRL-Bコマンドを使います。幸いCTRL-FはForward、CTRL-BはBackward、ですから +1画面分スクロールするにはCTRL-Fを使います(2行は重複します)。逆方向へのスク +ロールはCTRL-Bコマンドを使います。CTRL-FはForward、CTRL-BはBackward、ですから 覚えやすいでしょう。 -"j"をたくさん使ったりして、カーソルが画面の最下段に移動した時に、その前後の -内容を見たいくなることがあります。これは"zz"コマンドで("z."でも可)できます。 +"j" で何行も下に移動して、カーソルが画面の最下段にあるとします。そして、カーソ +ル前後の行を確認したいと思うかもしれません。それには "zz" コマンドを使います。 +------------------+ +------------------+ | some text | | some text | @@ -306,11 +306,10 @@ CTRL-Bコマンドを使います。幸いCTRL-FはForward、CTRL-BはBackward | line with cursor | | some text | +------------------+ +------------------+ -"zt"コマンド("z<Enter>"でも可)はカーソル行を画面の1行目にし、"zb"コマンド -("z-"でも可)は画面の最下段にします。 -これ以外にもいくつかスクロールコマンドがあります。|Q_sc|をご覧ください。常に -カーソル近辺の数行を表示させたいのであれば、'scrolloff'オプションを使って -ください。 +"zt" コマンドはカーソル行を画面の1行目に置きます。"zb"コマンドなら画面の最下 +段です。これ以外にもいくつかスクロールコマンドがあります。|Q_sc|をご覧くださ +い。常にカーソル近辺の数行を表示させたいのであれば、'scrolloff'オプションを +使ってください。 ============================================================================== *03.8* 簡単な検索 @@ -320,11 +319,11 @@ CTRL-Bコマンドを使います。幸いCTRL-FはForward、CTRL-BはBackward /include -"/"を押すとコマンドラインモードの時のように、カーソルがvimウィンドウの最下段 -に移動することに気付かれたかも知れません。ここで探したい単語を入力します。 -訂正したければ、バックスペースキー(逆矢印、<BS>キーも可)を使います。必要に -応じて<Left>と<Right>の矢印キーも使います。 -最後に<Enter>を押すとコマンドを実行します。 +"/"を押すと、コマンドラインモードの時のように、カーソルがVimウィンドウの最下段 +に移動します。そこで検索したい単語を入力します。入力した文字を訂正するには、 +バックスペースキー (逆矢印 または <BS>) を使います。必要に応じて<Left>や +<Right>の矢印キーも使います。 +<Enter>を押すとコマンドが実行されます。 Note: 文字のうち、 .*[]^%/\?~$ には特別な意味があります。検索時にこれらを @@ -336,23 +335,23 @@ CTRL-Bコマンドを使います。幸いCTRL-FはForward、CTRL-BはBackward /#include -次に"n"を数回押すと、順々に #include にジャンプします。移動したい場所がいく -つ目か解っていれば、カウンタも使えます。だから、"3n"は3つ目の #include を探 -します。ただし、"/"ではカウンタは使えません。 +次に"n"を数回押すと、順々に #include にジャンプします。移動したい場所がいくつ +目かわかっているなら、カウンタも使えます。例えば、"3n"なら3つ目の #include を +探します。"/" にはカウンタを指定できません。 "?"コマンドは"/"と同じですが、逆方向に検索します。 > ?word -"N"コマンドは直前の検索とは反対の方向に検索を繰り返します。"/"の後で"N"を -すると逆方向検索になり、"?"の後で"N"を行うと、順方向の検索となります。 +"N"コマンドは直前の検索とは反対の方向に検索を繰り返します。"/"の後で"N"を使う +と後方検索になり、"?"の後で"N"を使うと前方検索になります。 大文字/小文字の無視 ------------------- -普通は探したい文字列の大文字/小文字を正確に指定しなければなりません。それを -気にしないのであれば、'ignorecase'オプションをセットします。 > +普通は探したい文字列の大文字/小文字を正確に指定しなければなりません。大文字と +小文字を区別したくないのであれば、'ignorecase'オプションを設定します。 > :set ignorecase @@ -371,36 +370,35 @@ CTRL-Bコマンドを使います。幸いCTRL-FはForward、CTRL-BはBackward /two /three -ここで、"/"だけを入力し、<Enter>を押さずにおきます。<Up>(矢印キーの上向き) -を押すと、/threeとコマンド行に表示されます。ここで、<Enter>を押すと、"three" -を検索します。<Enter>を押さずに<Up>を押すとコマンド行には"/two"と表示されま -す。さらに<Up>を押すと"/one"となります。 -同じ様に<Down>キーを使って逆方向に検索のヒストリの中を動くこともできます。 +ここで、"/"だけを入力し、<Enter>を押さずにおきます。<Up>(上矢印キー)を押す +と、コマンド行に /three と表示されます。ここで、<Enter>を押すと、"three"が検索 +されます。<Enter>を押さずに<Up>を押すとコマンド行には"/two"と表示されます。さ +らに<Up>を押すと"/one"となります。 +同じように<Down>キーを使って逆方向に検索ヒストリを移動できます。 -以前に使ったパターンを覚えていれば、<Up>を押す前にその先頭文字を入力すれば、 -そのパターンを呼び出すことができます。上の例で言えば、"/o<Up>"と入力すると、 -vimはコマンドラインに"/one"と表示してくれます。 +以前に使ったパターンを覚えていて、それをまた使いたい場合には、そのパターンの先 +頭文字を入力してから <Up> を押してください。上の例で言えば、"/o<Up>"と入力する +と、Vimはコマンドラインに"/one"と表示してくれます。 -":"で始まるコマンドについてもヒストリを持っています。以前のコマンドを呼び -出して、再実行させることができます。検索用ヒストリと":"用ヒストリは独立し -ています。 +":"で始まるコマンドにもヒストリがあります。以前のコマンドを呼び出して、再実行 +できます。検索用ヒストリと":"コマンドヒストリは分かれています。 文章中の単語の検索 ------------------ "TheLongFunctionName" という単語が文章中にあり、次に現れる場所を探したいと -します。もちろん、"/TheLongFunctionName"として検索もできますが、たくさんの -打鍵が必要です。また間違って打った時にはうまく検索できません。 -もっと簡単な方法があります。カーソルを探したい単語の上に置いて、"*"コマンド -を使うのです。vimはカーソル位置の単語を抜き出してそれを検索文字列として使い -ます。 +します。もちろん、"/TheLongFunctionName"として検索もできますが、たくさんの打鍵 +が必要です。それに、打ち間違えてしまうとうまく検索できません。 +もっと簡単な方法があります。探したい単語の上にカーソルを置いて、"*"コマンドを +使うのです。Vimはカーソル位置の単語を抜き出してそれを検索文字列として使いま +す。 "#"コマンドは同じことを逆方向に実行します。このコマンドもカウンタが指定でき ます。例えば、"3*"はカーソル位置の単語が3回目に現われる場所を探します。 -単語全体が一致する場合の検索 ----------------------------- +単語全体を一致させる検索 +------------------------ "/the"と検索を行うと、"there"などもヒットします。"the"で終わる単語だけを探 したい場合には次のようにします。 > @@ -418,8 +416,8 @@ vimはコマンドラインに"/one"と表示してくれます。 探します。(単語の一部として検索したい時は"g*"と"g#"コマンドを使います) -ヒット結果のハイライト表示 --------------------------- +検索結果の強調表示 +------------------ プログラムの編集中に、"nr"という変数を見つけ、その変数がどこで使われているか を知りたいとします。"nr"の上にカーソルを移動して、"*"と"n"コマンドで片っ端 @@ -427,50 +425,49 @@ vimはコマンドラインに"/one"と表示してくれます。 :set hlsearch -ここで、"nr"を検索すると、vimはヒットした全てのパターンをハイライト表示しま -す。これだと余計なコマンド入力が要りませんから、変数の使用箇所を確認したい -時にはとても便利でしょう。 -このオプションは次のコマンドでoffにできます。 > +ここで、"nr"を検索すると、Vimはヒットした全てのパターンを強調表示します。これ +だと余計なコマンド入力が要りませんから、変数の使用箇所を確認したい時にはとても +便利でしょう。 +このオプションは次のコマンドでオフにできます。 > :set nohlsearch -さて上のやり方では、検索を行う都度、いちいちオプションのon/offが必要になり -ます。単にハイライト表示を止めるだけなら、次のコマンドがあります。 > +さて上のやり方では、検索を行うたびに、いちいちオプションの切替えが必要になりま +す。単に強調表示を止めるだけなら、次のコマンドを使ってください。 > :nohlsearch -これだとオプションはoffにせずに、ハイライト表示だけを取り消します。次に検索 -コマンドを実行すると、再度ハイライト表示を使うようになります。"n"や"N"を使っ -た時も同様です。 +これならオプションはオフになりません。強調表示だけを取り消せます。次に検索コマ +ンドを実行すると、ふたたび強調表示を使うようになります。"n"や"N"を使った時も同 +様です。 検索のチューニング ------------------ -検索時の動きについてのいくつかのオプションがあります。以下はその基本的なもの -です。 -> +検索の挙動を変更するオプションがいくつかあります。重要なのは次のものです: > + :set incsearch これはいわゆるインクリメンタルサーチです。検索したい文字を入力している間にも -ヒットする文字列を探して画面に表示してくれます。これはヒットするパターンがあ -るかどうかのチェックに使えます。<Enter>を押すと実際にその場所にカーソル -を移動します。さらに文字を打って、検索を続けることもできます。 +ヒットする文字列を探して画面に表示してくれます。これはヒットするパターンがある +かどうかのチェックに使えます。<Enter>を押すと実際にその場所にカーソルがジャン +プします。 > :set nowrapscan -これはファイルの末尾まで進んだら(逆方向検索の場合はファイルの先頭まで戻ったら) -検索を停止します。'wrapscan'オプションはデフォルトではonです。onの場合は、 -ファイルの末尾まで進んだら先頭に戻って検索を続けます。 +ファイルの末尾まで進んだら(後方検索の場合はファイルの先頭まで戻ったら)検索を停 +止します。'wrapscan'オプションの初期設定はオンです。オンの場合は、ファイルの末 +尾まで進んだら先頭に戻って検索を続けます。 -INTERMEZZO(間奏) ----------------- +ところで... +----------- -これまでに出てきたオプションでvimを使う時に毎回設定しておきたいものがあれば、 -vimのスタートアップファイルにそのコマンドを書くことができます。 -|not-compatible|にあるようにファイルを編集するか、次のコマンドを入力して、 -どこかにないかを確認してください。 > +これまでに出てきたオプションでVimを使う時に毎回設定しておきたいものがあれば、 +Vimのスタートアップファイルにそのコマンドを書いておくといいでしょう。 +|not-compatible|の説明のどおりにファイルを編集するか、次のコマンドを入力して、 +ファイルがどこにあるか確認してください。 > :scriptnames @@ -478,29 +475,28 @@ vimのスタートアップファイルにそのコマンドを書くことが :edit ~/.vimrc -ここでオプションを設定するコマンド行を、vim内で実行する時と同じように入力し -て、追加します。例えば、次のようにします。 > +そして、オプションを設定するためにVim上で実行したのと同じコマンドを書き加えま +す。例えば、次のようにします。 > Go:set hlsearch<Esc> -"G"はファイルの末尾まで移動し、"o"は新しい行を挿入して ":set ....."のコマン -ド用の空行を作ります。挿入モードの終了は<Esc>です。ここでファイルを保存しま -しょう。 > +"G" でファイルの末尾まで移動し、"o" で新しい行を挿入して ":set" コマンドを書く +ための空行を作っています。挿入モードの終了は<Esc>です。そして、ファイルを保存 +しましょう。 > ZZ -次にvimを起動すると、'hlsearch'オプションは常にonの状態となります。 +次にVimを起動すると、'hlsearch'オプションが最初からオンになっています。 ============================================================================== *03.9* 簡単なパターン検索 -vimでは、検索に正規表現(regular expressions)を使います。 -正規表現というのは検索パターンの指定のための、極めてパワフルでシンプルな方 -法です。残念ながら、これの実力を発揮させるには少々苦労していただくことにな -ります。というのは、正規表現はちょっとばかり書き方がトリッキーなんです。 +Vimでは、検索に正規表現(regular expressions)を使います。 +正規表現というのは検索パターンを指定するための、極めてパワフルでシンプルな方法 +です。残念ながら、これの実力を発揮させるには少々苦労していただくことになりま +す。というのも、正規表現はちょっとばかりトリッキーなんです。 ここでは本当に基本的なものだけを述べます。パターン検索とコマンドについては -27章|usr_27.txt| でもっと詳しく説明します。全パターンの説明は|pattern|を -ご覧ください。 +27章|usr_27.txt|でもっと詳しく説明します。完全な説明は|pattern|にあります。 行頭と行末 @@ -514,17 +510,17 @@ vimでは、検索に正規表現(regular expressions)を使います。 "$"は同様に行末にヒットします。ですから、パターン"was$" は、行末が was で終 わっている場合だけヒットします。 -下の例では、"the"という単語を含んでいる箇所を"xxx"で示しています。 +下の例では、"the"にマッチする箇所を"xxx"で示しています。 the solder holding one of the chips melted and the ~ xxx xxx xxx -"/the$"を実行すると、こうなります。 +"/the$"の場合は次のようになります。 the solder holding one of the chips melted and the ~ xxx -また、"/^the"の場合はこうです。 +"/^the"の場合はこうです。 the solder holding one of the chips melted and the ~ xxx @@ -532,7 +528,6 @@ vimでは、検索に正規表現(regular expressions)を使います。 "/^the$"という指定もできます。この指定だと、"the"という単語だけの行にヒット します。なお空白文字も意味を持ちます。ですから、"the "のように行末に空白文 字を含んでいた場合は、"/the$"のパターンではヒットしません。 -こういう場合でもヒットさせる方法はあります。詳しくは27章|usr_27.txt|で。 任意の1文字 @@ -547,7 +542,7 @@ vimでは、検索に正規表現(regular expressions)を使います。 特殊文字 -------- +-------- 例えば"."という文字自体を探す時は、上で述べたような特殊な意味を"\"文字を 使って無効にします。 @@ -561,15 +556,15 @@ vimでは、検索に正規表現(regular expressions)を使います。 ============================================================================== *03.10* マークの使用 -"G"コマンドでジャンプすると、vimはその直前のカーソル位置を覚えています。これ -をマークと呼びます。元の場所に戻りたいなら、次のコマンドを使います。 > +"G"コマンドでジャンプすると、Vimはその直前のカーソル位置を覚えています。これ +をマークと呼びます。元の場所に戻るには、次のコマンドを使います。 > `` この ` は backtick とか open single-quote と呼ばれる(日本では「バッククオート」 が多いでしょうか)ものです。 -このコマンドを2回実行すると、最初の場所に戻ります。これは ` コマンドもジャ -ンプコマンドだから、実行前の場所を覚えるためです。 +このコマンドを2回実行すると、最初の場所に戻ります。これは ` コマンドもジャン +プコマンドなので、実行前の場所が記録されるためです。 通常、現在行以外にカーソルが動くようなコマンドを実行した場合、それをジャンプ と呼びます。"/"や"n"もジャンプの一種です(ジャンプ先がどれだけ離れているかは @@ -607,29 +602,30 @@ vimでは、検索に正規表現(regular expressions)を使います。 エントリには">"記号がついています。 -名前付きマーク +名前付きマーク *bookmark* -------------- -vimでは文章中に自分でマークを付けることができます。"ma"コマンドは現在のカー -ソル位置をマークaとしてマークします。文章には26個(a~z)のマークを付け -られます。ただしvimに覚えさせたマーク以外は表示されません。 +Vimでは文章中に自分でマークを付けることができます。"ma"コマンドは現在のカー +ソル位置をマーク a に記録します。文章には26個(aからzまで)のマークを付け +られます。マークは Vim が記録している位置情報です。何かが表示されるわけではあ +りません。 マークへの移動は `{mark} コマンドを使います。{mark}はマーク文字のことです。 -つまり、マークaに移動するには次のようにします。 +マーク a に移動するには次のようにします。 > `a < - '{mark}(アポストロフィ+マーク名)コマンドはその{mark}を設定してある行の行頭 -に移動します。`{mark}の場合は{mark}を設定してあるその桁位置に移動します。 -います。 +'{mark}(アポストロフィ+マーク名)コマンドはその{mark}を設定してある行の行頭 +に移動します。`{mark}の場合は{mark}を設定した桁位置に移動します。 マーク機能はファイル中の関連している2箇所で作業をする場合に便利です。例えば、 ファイルの最後の方を編集している時に、ファイルの最初の方の内容を確認する必要 が生じた場合を考えてみましょう。 -この時、まずファイルの最初の方に移動して、マークs(startのつもり)を付けます。 -> +この時、まずファイルの最初の方に移動して、マーク s (startのつもり) を付けま +す。 > + ms -次に文章の末尾の編集したい場所に移動して、マークe(endのつもり)を付けます。 > +次に編集したい場所に移動して、マーク e (endのつもり) を付けます。 > me @@ -640,8 +636,8 @@ vimでは文章中に自分でマークを付けることができます。"ma" ここで、 '' を使って戻ることもできますし、 'e を使って末尾のマークまでジャン プすることもできます。 -ここで先頭にマークsを、末尾にマークeを使いましたが、その名前に特別な意味 -はありません。単に覚えやすいから使っただけです。 +先頭にマーク s を、末尾にマーク e を使いましたが、その名前に特別な意味はありま +せん。単に覚えやすいから使っただけです。 次のコマンドは設定してあるマークの一覧を表示します。 > @@ -656,6 +652,6 @@ vimでは文章中に自分でマークを付けることができます。"ma" ============================================================================== -Next chapter: |usr_04.txt| 小さな変更 +次章: |usr_04.txt| 簡単な編集 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_04.jax b/ja/usr_04.jax index 07b71c7d2..fdafea04c 100644 --- a/ja/usr_04.jax +++ b/ja/usr_04.jax @@ -1,43 +1,42 @@ COMMENT: ちょっとした変更 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_04.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*usr_04.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - ちょっとした変更 + 簡単な編集 本章では、 文の修正方法や他の場所への移動方法の一部を述べます。 -また、変更する範囲を選択する3つ(カーソルモーション、Visualモード、テキスト +また、変更する範囲を選択する3つ(カーソルモーション、ビジュアルモード、テキスト オブジェクト)の基本的な繰作方法についても説明します。 |04.1| オペレータとモーション -|04.2| 文字列の変更 +|04.2| テキストの変更 |04.3| 変更の繰り返し -|04.4| Visualモード -|04.5| 文の移動 -|04.6| 文の複写 -|04.7| クリップボードの利用 +|04.4| ビジュアルモード +|04.5| テキストの移動 +|04.6| テキストのコピー +|04.7| クリップボード |04.8| テキストオブジェクト |04.9| 置換モード |04.10| 終わりに - Next chapter: |usr_05.txt| 自分用の設定 - Previous chapter: |usr_03.txt| 動いてみる -Table of contents: |usr_toc.txt| +次章: |usr_05.txt| 設定の変更 +前章: |usr_03.txt| カーソルの移動 +目次: |usr_toc.txt| ============================================================================== *04.1* オペレータとモーション 2章で学んだように、"x"は1文字削除コマンドです。カウンタを使って、"4x"とす れば4文字を削除します。 -"dw"コマンドは単語を削除します。"w"が単語単位で移動するコマンドであることを -思い出してください。実際、"d"コマンドには何らかのモーション(移動)コマンドを -付けることができます。それによって、現在の場所から、モーションコマンドで移動 -する場所までを削除するわけです。 +"dw"コマンドは単語を削除します。"w"が単語単位で移動するコマンドであることを思 +い出してください。"d"コマンドにモーション(移動)コマンドを続けることで、現在の +場所から、モーションコマンドで移動した場所までを削除できます。 例えば、"4w"コマンドはカーソルを4単語分、動かします。ということは、"d4w"は 4つの単語を削除するコマンドなわけです。 @@ -47,10 +46,9 @@ Table of contents: |usr_toc.txt| To err is human. you need a computer. ~ -vimではモーションコマンドでカーソルが動く範囲を削除します。というのは、モー -ションで動いた先の(5つ目の)単語の先頭文字を削除したくはないだろうと判断す -るためです。逆に"e"コマンドで単語の末尾までを範囲とした場合には、vimは移動 -先の文字も含めたいだろう、と推測します。 +モーションコマンドでカーソルが移動した場所までが削除されます。移動先の単語の先 +頭文字が削除されないのは、そのほうが便利だろうと判断したからです。"e" コマンド +で単語の末尾まで移動した場合は、末尾の文字も削除したほうが便利でしょう: To err is human. you need a computer. ~ --------> @@ -58,12 +56,12 @@ vimではモーションコマンドでカーソルが動く範囲を削除し To err is human. a computer. ~ -カーソル下の文字を含めるかどうかは使ったコマンドによって異なります。リファ -レンスマニュアルではその文字が含まれない場合には"exclusive"、含む場合には -"inclusive"と呼んでいます。 +カーソル下の文字が範囲に含まれるかどうかは、移動に使ったコマンドによって異なり +ます。リファレンスマニュアルでは、移動先の文字が含まれないことを "exclusive" +(排他的)、含まれることを "inclusive" (包括的) と呼んでいます。 "$"コマンドは行末まで移動します。"d$"コマンドはカーソル位置から、行末まで -を削除します。これはinclusiveモーションなので行末の文字は削除処理の対象と +を削除します。これは包括的モーションなので行末の文字は削除処理の対象と なります。 To err is human. a computer. ~ @@ -72,16 +70,16 @@ vimではモーションコマンドでカーソルが動く範囲を削除し To err is human ~ -オペレータ->モーションというパターンがあります。最初にオペレータコマンドを -入力します。例えば、"d"は削除オペレータです。次に"4l"や"w"といったモーション -コマンドを入力します。この方法なら、動ける範囲のどんな文章でも操作ができます。 +オペレータ-モーション というのは定型操作です。最初にオペレータコマンドを入力し +ます。例えば、"d" は削除オペレータです。次に "4l" や "w" といったモーションコ +マンドを入力します。この方法なら、動ける範囲のどんな文章でも操作ができます。 ============================================================================== -*04.2* 文字列の変更 +*04.2* テキストの変更 -もう一つのオペレータは"C"、変更です。これも"d"オペレータと同じように動きま -す。違うのは挿入モードに遷移する点です。例えば、"cw"は単語を変更します。 -もっと厳密に言えば、単語を削除してから、挿入モードに遷移するのです。 +"c" は「変更」オペレータです。"d" オペレータと同じように使えますが、挿入モード +に入る点が違います。例えば、"cw" は単語を変更します。もっと正確に言うと、単語 +を削除してから挿入モードに入ります。 To err is human ~ -------> @@ -92,24 +90,24 @@ vimではモーションコマンドでカーソルが動く範囲を削除し "c2wbe<Esc>" には次の成分が含まれます。 c 変更オペレータ - 2w 2単語進む(これは削除され、挿入モードに遷移する) + 2w 2単語進む (単語が削除され、挿入モードに入る) be この文字列を挿入する - <Esc> 通常モードに戻る + <Esc> ノーマルモードに戻る -勘のいい人なら、ちょっと変だと感じるかも知れません。"human"の前の空白が削除 -されていないのです。"どんな問題に関しても単純で、明解で、間違った答えがある" -という格言があります。この"cw"コマンドを使った例が正にそういった場合です。 -"c"オペレータは"d"オペレータと全く同じように動きます。"cw"はその例外なので -す。実際にはこれは"ce"と同じく、単語末までを変更します。ですから、単語の後ろ -の空白は含まれないのです。これはかつてのviまでさかのぼる例外です。多くの人々 -がこれを使っていますので、vimでも不本意ながら残してあるのです。 +勘のいい人なら、ちょっと変だと感じるかも知れません。"human" の前の空白が削除さ +れていないのです。"どんな問題に関しても単純で、明解で、間違った答えがある" と +いう格言があります。この "cw" コマンドを使った例がまさにそれです。"c" オペレー +タは "d" オペレータと全く同じように使えますが、"cw" はその例外なのです。実際に +はこれは"ce"と同じく、単語末までを変更します。ですから、単語の後ろの空白は含ま +れないのです。これはかつての Vi までさかのぼる例外です。多くの人々がこれを使っ +ていますので、Vim でも不本意ながら残してあるのです。 その他の変更コマンド -------------------- -"dd"が行を削除したのと同じように、"cc"は行全体を変更します。ただし、インデン -ト(行頭の空白類)は残しています。 +"dd" が行を削除するのと同じように、"cc" は行全体を変更します。ただし、インデン +ト(行頭の空白類)は残されます。 "d$"が行末まで削除するのと同じように、"c$"は行末までを変更します。この機能は "d$"で行末まで削除した上で、"a"で挿入モードに入り、文を追加するのと同じです。 @@ -118,15 +116,15 @@ vimではモーションコマンドでカーソルが動く範囲を削除し ショートカット -------------- -以下に述べるようなコマンドは、頻繁に使うため1文字コマンドとして用意してい -ます。 +いくつかのオペレータ-モーションの組合せは頻繁に使われるため、1文字コマンドと +して用意されています。 - x は dl (カーソル位置の文字を削除) の意味です。 - X は dh (カーソルの左側の文字を削除) の意味です。 - D は d$ (行末まで削除) の意味です。 - C は c$ (行末まで変更) の意味です。 - s は cl (1文字変更) の意味です。 - S は cc (1行変更) の意味です。 + x は dl (カーソル下の文字を削除) + X は dh (カーソルの左側の文字を削除) + D は d$ (行末まで削除) + C は c$ (行末まで変更) + s は cl (1文字変更) + S は cc (1行変更) カウンタの使い方 @@ -142,16 +140,17 @@ vimではモーションコマンドでカーソルが動く範囲を削除し 1文字の置き換え ---------------- -"r"コマンドはオペレータではありません。1文字の入力を待ち、カーソル位置の文 -字を入力された文字に置き換えます。同じことは"cl"とか"s"でもできますが、"r" -の場合は最後に<Esc>を押す必要はありません。 +"r" コマンドはオペレータではありません。文字が入力されるまで待機し、入力された +文字で、カーソル下の文字を置き換えます。"cl" や "s" でも同じ事ができますが、 +"r" の場合は最後に <Esc> を押す必要がありません。 there is somerhing grong here ~ rT rt rw There is something wrong here ~ -"r"にカウンタを使うとその数分の文字を指定の文字に置き換えます。 +"r" にカウンタを指定すると、指定した数の文字がすべて、同じ文字に置き換えられま +す。 There is something wrong here ~ 5rx @@ -163,14 +162,14 @@ vimではモーションコマンドでカーソルが動く範囲を削除し 有効となります。"4r<Enter>"は4文字削除し、1つの改行を挿入します。 ============================================================================== -*04.3* 変更を繰り返す +*04.3* 変更の繰り返し -"."コマンドはvimで一番単純でありながら、一番パワフルなコマンドです。これは -直前の変更コマンドを繰り返します。HTMLファイルの編集中に、全ての<B>タグを削 -除するとしましょう。カーソルを最初の"<"に移動し、"df>"コマンドで<B>を削除し -ます。次に</B>の"<"を探し、それを削除するのに"."コマンドを使います。"."コ -マンドは直前の変更コマンド(この場合なら"df>")を実行します。他のタグの削除し -たければ、カーソルを"<"の上に置いて、"."を打てばよいのです。 +"." コマンドはもっともシンプルでパワフルなコマンドの一つです。これは直前の変更 +コマンドを繰り返します。例えば、HTMLファイルの編集中に、全ての<B>タグを削除す +るとしましょう。カーソルを最初の"<"に移動し、"df>"コマンドで<B>を削除します。 +次に</B>の"<"を探し、それを削除するのに"."コマンドを使います。"."コマンドは直 +前の変更コマンド(この場合なら"df>")を実行します。他のタグの削除したければ、 +カーソルを"<"の上に置いて、"."を打てばよいのです。 To <B>generate</B> a table of <B>contents ~ f< find first < ---> @@ -180,8 +179,8 @@ vimではモーションコマンドでカーソルが動く範囲を削除し f< find next < -------------> . repeat df> --> -"."コマンドは"u"(アンドゥ)、CTRL-R(リドゥ)、先頭が":"のコマンド以外は全部で -使えます。 +"." コマンドはすべての変更操作を繰り返せますが、 "u" (アンドゥ)、CTRL-R (リ +ドゥ)、先頭が ":" のコマンドは繰り返せません。 例2:文中に何度も出てくる単語"four"を"five"に変更したいとします。 次に示した手順でそれができます。 @@ -195,15 +194,15 @@ vimではモーションコマンドでカーソルが動く範囲を削除し 以下同文。 ============================================================================== -*04.4* visualモード +*04.4* ビジュアルモード -単純なパターンであれば、オペレータ=モーション方式は何の問題もなく動きます。 -しかしどのコマンドを使えば目的の範囲を選択できるかは、そう簡単に決められる -ことではありません。こんな時はvisualモードです。 +単純なものならオペレータ-モーション方式で簡単に変更できますが、どのコマンドを +使えば目的の範囲を選択できるか簡単には決められないこともよくあります。そんなと +きは ビジュアルモードを使ってください。 -visualモードに入るには、"v"を押します。ここでカーソルを動かして対象としたい -領域を選択します。選択中はその領域がハイライト表示になります。最後にオペ -レータコマンドを入力します。 +ビジュアルモードに入るには "v" を押します。ここでカーソルを動かして対象とした +い領域を選択します。選択中はその領域が強調表示されます。最後にオペレータコマン +ドを入力します。 例えば、単語の途中から、次の単語の途中までを削除するには、次のようにします。 This is an examination sample of visual mode ~ @@ -216,22 +215,22 @@ visualモードに入るには、"v"を押します。ここでカーソルを 全くありません。その場で削除の範囲を確認してから、"d"を押すことができるので す。 -ハイライト表示になっている範囲に対して何もしたくなければ、<Esc>キーを押しま -す。すると何もせずにvisualモードから通常モードに戻ります。 +選択されている範囲に対して何もしたくない場合は <Esc> キーを押してください。 +ビジュアルモードが終了し、なにも変更されません。 -行を選択 --------- +行選択 +------ -行全体を対象としたければ、"V"コマンドでvisualモードを開始します。するといき -なり行末までがハイライト表示となります。ここで左右に移動しても何も起こりま -せん。上下に移動するとその行全体が選択範囲に入ります。 +行全体を対象としたければ、"V" コマンドでビジュアルモードを開始してください。ただ +ちに、行全体が選択されます。ここで左右に移動しても何も起こりません。上下に移動 +すると、選択範囲が行単位で拡張されます。 例えば、"Vjj"で3行を選択してみましょう。 +------------------------+ | text more text | >> | more text more text | | - selected lines >> | text text text | | Vjj + 選択された行 >> | text text text | | Vjj >> | text more | V | more text more | +------------------------+ @@ -240,43 +239,44 @@ visualモードに入るには、"v"を押します。ここでカーソルを ブロック選択 ------------ -四角いブロック(矩形)の処理を行いたければ、CTRL-Vでvisualモードを開始します。 -このモードは表を編集するような場合に非常に便利です。 +四角いブロック(矩形)の処理を行いたければ、CTRL-V でビジュアルモードを開始しま +す。このモードは表を編集するような場合に非常に便利です。 name Q1 Q2 Q3 pierre 123 455 234 john 0 90 39 steve 392 63 334 -例えば、上図の中央のQ2(第2四半期)の列を削除するには、カーソルを"Q1"と"Q2" -の間に置いてCTRL-Vを押し、ブロック選択のvisualモードに入ります。次にカーソ -ルを"3j"で3行下に動かし、"w"を押して1単語分右に移動します。この状態では、 -最後の列の先頭を範囲に含んでいますので、"h"でそれをはずします。これでOK -なので"d"を押します。すると、選択してあった範囲は削除されます。 +例えば、中央の Q2 の列を削除するには、カーソルを "Q2" の "Q" に移動します。 +CTRL-V を押し、ブロック選択ビジュアルモードに入ります。次にカーソルを "3j" で +3行下に動かし、"w"を押して1単語分右に移動します。この状態では、最後の列の先 +頭を範囲に含んでいますので、"h" でそれをはずします。"d" を押すと、選択してあっ +た範囲が削除されます。 反対側に移動 ------------ -visualモードで選択中に範囲の反対側(始点)にカーソルを動かしたい時は、"o"を押 -します(oは"other end"の意味です)。カーソルは始点に動き、始点を自由に変更 -できるようになります。もう一度"o"を押すと、元の終点側に戻ります。 +ビジュアルモードで選択中に、選択範囲の反対側(始点)にカーソルを動かしたい時は、 +"o"を押します (o は "other end" の意味です) 。カーソルは始点に動き、始点を自由 +に変更できるようになります。もう一度 "o" を押すと、元の終点側に戻ります。 -ブロック指向選択時は4隅が存在します。"o"は始点と終点を斜めに動くだけです。 -"O"を使うと、同じ行の反対側に移動します。 +ブロック選択のときは4隅が存在します。"o" は始点と終点を斜めに動くだけです。同 +じ行の反対側に移動するには "O" を使ってください。 -Note: visualモードの"o"と"O"は通常モードの場合とかけ離れています。これは通常 - モードではカーソル行の上や下に空行を作る機能です。 +Note: ビジュアルモードの "o" と "O" はノーマルモードのコマンドとはまったく違う +動作なので注意してください。ノーマルモードではカーソル行の上や下に空行を作る機 +能です。 ============================================================================== -*04.5* 文を移動する +*04.5* テキストの移動 -"d"や"x"などを使って何かを削除しても、その内容はvimが保持しています。"p"コ -マンドを使えば、この内容をペースト(vimではこれをプットと呼びます)すること -ができます。 +"d" や "x" などのコマンドで何かを削除すると、そのテキストは記録されます。"p" +コマンドを使うと、そのテキストをペースト (張り付け。Vimではこれをプットと呼び +ます) できます。 どのように動くかを見てみましょう。まず、削除したい行にカーソルを移動し、"dd" -コマンドでその行全体を削除します。次にカーソルをプットしたい場所に動かして -"p"を押します。先ほど削除した行の内容がカーソルの下の行に挿入されます。 +コマンドでその行を削除します。次にプットしたい場所にカーソルを動かして "p" を +押します。先ほど削除した行の内容がカーソルの下の行に挿入されます。 最初 削除後 プット後 a line a line a line @@ -306,37 +306,37 @@ Note: visualモードの"o"と"O"は通常モードの場合とかけ離れて ドで削除をしていれば、"P"はカーソルの上にその行をプットします。"dw"で単語を 削除した場合は、カーソルの直前にプットします。 -プットは何回でも好きなだけ繰り返しできます。同じ文が毎回使われます。 +プットは何回でも好きなだけ繰り返せます。同じ文が毎回使われます。 -"p"も"P"もカウンタが指定できます。指定しただけ、プット処理を繰り返します。 -ですから、"dd"をして、"3p"とすると、削除した行のコピーが3つプットされます。 +"p"も"P"もカウンタを指定できます。指定しただけ、プット処理を繰り返します。例え +ば、"dd"の後に、"3p"を実行すると、削除した行のコピーが3つプットされます。 2文字の入れ換え ---------------- -入力している時には、指が頭を追い越してしまう場合がしばしばあります。その結果 -は、"the"が"teh"になるといった類のタイポ(打ち間違い)です。vimはこの種の間違 -いを簡単に修正できます。カーソルを"teh"の"e"の上に置いて、"xp"と打てばよいの -です。これは、"x"で"e"の文字を削除してレジスタに入れ、"p"でカーソル("h"の上 -にある)の後ろにレジスタ内容をプットするのです。 +入力している時には、指が頭を追い越してしまうことがしばしばあります。その結果 +は、"the"が"teh"になるといった類のタイポ(打ち間違い)です。Vimではこの種の間違 +いを簡単に修正できます。カーソルを"teh"の"e"の上に置いて、"xp"と打てばよいので +す。これは、"x"で"e"の文字を削除してレジスタに入れ、"p"でカーソル ("h"の上にあ +る) の後ろにレジスタ内容をプットするのです。 teh th the ~ x p ============================================================================== -*04.6* テキストの複写 +*04.6* テキストのコピー -文字列をある場所から別の場所に複写する時はどうしましょう。最初に削除して、 -"u"でそれを取り消し、"p"で別の場所にプットするのもひとつの方法です。でももっ -と簡単な方法があります。ヤンク(yank)です。"y"オペレータは文字列をレジスタに -コピーします。そして"p"を使ってプットするのです。 -コピーのことをvimではヤンクと呼びます。上で説明した変更オペレータの"c"と同 -じように"y"オペレータも使えます。ヤンクの"y"ですので、キー操作も覚えやすい -でしょう。 +テキストを別の場所にコピーするには、それを削除して、"u" で削除を取り消し、他の +場所で "p" を使いプットすることもできますが、ヤンク (yank) を使えばもっと簡単 +です。"y" オペレータは文字列をレジスタにコピーします。その文字列は "p" コマン +ドでプットできます。 +コピーのことを Vim ではヤンクと呼びます。文字 "c" は既に変更オペレータのために +使われていましたが、"y" は利用可能でした。"y" キーを覚えやすくするするために、 +コピー操作をヤンク (yank) と呼びます。 -"y"はオペレータなので、"yw"とすれば単語のヤンクができます。カウンタも当然 -指定可能です。2単語をヤンクするには、"y2w"とします。例を示しましょう。 +"y" はオペレータなので、"yw" とすれば単語をヤンクできます。カウンタも当然指定 +可能です。2単語をヤンクするには、"y2w" とします。例を示しましょう。 let sqr = LongVariable * ~ --------------> @@ -347,16 +347,12 @@ Note: visualモードの"o"と"O"は通常モードの場合とかけ離れて let sqr = LongVariable * LongVariable ~ -"yw"は単語の後の空白まで含みますので気をつけてください。それが嫌ならば、"ye" -っ使ってください。 - -JP: 上の例はあまり良くないですが、間違ってはいません。y2wでは実際には2単語 -JP: はヤンクされず、前後に空白文示を付けた" LongVariable "という文字列がヤン -JP: クされます。|04.2|をよく読んでみてください。 +"yw" は単語の後の空白まで含むので気をつけてください。それが嫌なら、"ye" を使っ +てください。 -"yy"コマンドは"dd"が行削除するのと同様に、行全体をヤンクします。ただ、"D"は -行末まで削除するのに対して、"Y"は"yy"と同じ動きになります。この点は気をつけ -てください。行末までヤンクしたい時には"y$"を使ってください。 +"yy" コマンドは "dd" が行削除するのと同様に、行全体をヤンクします。ただ、"D"は +行末まで削除するのに対して、"Y" は "yy" と同じ動きになります。この点は気をつけ +てください。行末までヤンクしたい時には "y$" を使ってください。 a text line yy a text line a text line line 2 line 2 p line 2 @@ -364,115 +360,114 @@ JP: クされます。|04.2|をよく読んでみてください。 last line ============================================================================== -*04.7* クリップボードの利用 +*04.7* クリップボード -GUIバージョンのvim(gvim)を使っている場合は、[編集]メニューに[コピー]コマンド -があります。最初にvisualモードで文字列を選択し、次にこの [編集]-[コピー]を使 -います。 -選択した文字列はクリップボードにコピーされます。これを他のプログラムにペースト -できます。もちろんvim自身でも使えます。 +GUI版の Vim (gvim) を使っている場合は、[編集] メニューに [コピー] コマンドがあ +ります。ビジュアルモードで文字列を選択してから、メニューの [編集]-[コピー] を +使ってください。選択文字列がクリップボードにコピーされるので、それを他のプログ +ラムにペーストできます。もちろん Vim 自身でも使えます。 -他のアプリケーションでクリップボードに文字列をコピーしておけば、vimで[編集]- -[貼り付け]コマンドでそれをペーストできます。これは通常モードでも挿入モードで -も動きます。visualモードでは選択中の文字列はペーストされる文字列に置き換わり -ます。 +他のアプリケーションでクリップボードに文字列をコピーしておけば、Vim の [編集]- +[貼り付け] メニューでそれをペーストできます。これはノーマルモードでも挿入モー +ドでも機能します。ビジュアルモードでは、選択文字列がペーストされた文字列に置換 +されます。 -メニューの[編集]-[切り取り]はクリップボードにプットする前に文字列を削除しま -す。[コピー]、[切り取り]、[貼り付け]の3つはポップアップメニューでも(ポップ -アップメニューが出る時だけですよ、当り前ですが)使えます。お使いのvimにツール -バーがあれば、そこにも同じ項目があるはずです。 +メニューの [編集]-[切り取り] はクリップボードにプットする前に文字列を削除しま +す。[コピー]、[切り取り]、[貼り付け] の3つはポップアップメニューでも (ポップ +アップメニューが出る時だけですよ、当り前ですが) 使えます。お使いの Vim にツー +ルバーがあれば、そこにも同じ項目があるはずです。 -GUIを使っていない場合やメニューを使うのが嫌いな場合は他の方法を使うしかあり -ません。普通の"y"や"p"コマンドを使う前に"* (ダブルクオート+アステリスク)を -指定するのです。行を丸ごとクリップボードに入れるには次のようにします。 > +GUI を使っていない場合やメニューを使うのが嫌いな場合は他の方法を使うしかありま +せん。普通の "y" や "p" コマンドを使う前に "* (ダブルクオート+アステリスク)を +指定するのです。行を丸ごとクリップボードにコピーするには次のようにします: > "*yy -クリップボードを経由でプットするのは、こうです。 > +クリップボードからプットするにはこうします: > "*p -この機能はクリップボードをサポートしたvimでのみ動きます。クリップボードにつ +この機能はクリップボードをサポートした Vim でのみ動きます。クリップボードにつ いての詳細は|09.3|章 と |clipboard|をご覧ください。 ============================================================================== *04.8* テキストオブジェクト -単語の真ん中にカーソルがあり、その単語を削除したい場合、"dw"をする前にカーソ -ルをその単語の先頭に戻す必要があります。でももっと簡単な方法があります。 -"daw"です。 +単語の真ん中にカーソルがあり、その単語を削除したい場合、"dw" をする前にカーソ +ルをその単語の先頭に戻す必要があります。"daw" を使うともっと簡単です。 this is some example text. ~ daw this is some text. ~ -"daw"の"d"は削除オペレータです。"aw"はテキストオブジェクトです。("aw"は -"a word"の意味です。つまり"daw"は"Delete A Word"という意味です。正確には単語の -後の空白も削除されます。) +"daw" の "d" は削除オペレータです。"aw" はテキストオブジェクトです。"aw" は"a +word" の意味です。つまり "daw" は "Delete A Word" という意味になります。正確に +は、単語の後の空白も削除されます (単語が行末にある場合は、行末までのすべての空 +白が削除されます)。 -テキストオブジェクトの利用はvimでの第3の変更方法です。オペレータ+モーション -方式とvisualモードは既に述べました。そこにオペレータ+テキストオブジェクト方 -式を追加します。 -これはオペレータ+モーション方式と非常に似ています。ただオペレータ+モーション -方式では移動コマンドの前と後のカーソル位置がオペレータの範囲となっていたのに -対し、テキストオブジェクトではオブジェクト全体を対象とします。必ずしもカー -ソル位置のオブジェクトというわけではありませんが。 +テキストオブジェクトの利用は Vim での第3の変更方法です。オペレータ-モーション +方式とビジュアルモードは既に述べました。そこにオペレータ+テキストオブジェクト +方式を追加します。 +これはオペレータ-モーション方式と非常に似ていますが、オペレータ-モーション方式 +では移動コマンドの前と後のカーソル位置がオペレータの範囲となっていたのに対し、 +テキストオブジェクトではオブジェクト全体を対象とします。オブジェクトのどこに +カーソルがあっても構いません。 -文全体を変更するのは"cis"です。次の文を使いましょう。 +文全体を変更するのは "cis" です。次の文を使いましょう: - Hello there. aaaaa Just ~ + Hello there. This ~ + is an example. Just ~ some text. ~ -2行目の先頭に移動し、"cis"を実行します。 +2行目の先頭、"is an" の上に移動し、"cis"を実行してください: Hello there. Just ~ some text. ~ -カーソルは1行目の空白の間にあります。ここで新たな文 "Another line."を打ち -ます。 +カーソルは1行目の空白の間にあります。ここで新たな文 "Another line." を入力し +ます: Hello there. Another line. Just ~ some text. ~ -"cis"は変更オペレータの"c"と、テキストオブジェクトの"is"に分けられます。"is" -は"Inner Sentence"の意味です。"as"(a sentence)オブジェクトもよく似ています。 -違うのは"as"では文の後の空白類を含むのに対して、"is"では含みません。 -文を削除する時に、前後の空白も同時に消したければ、"das"を使います。文の修正す -るため、空白を残しておいて欲しい場合は、"cis"を使えばよいでしょう。 - -テキストオブジェクトはvisualモードでも使えます。選択範囲の中にテキストオブ -ジェクトを追加することができます。この場合でもvisualモードは終わりませんか -ら、何度でもテキストオブジェクトを使えます。例えば"v"でvisualモードを開始し、 -"as"で文を選択した後に、"as"を繰り返してたくさんの文を追加できます。最後に -オペレータを使って、選択した文を対象として、何らかの処理を行います。 +"cis" は変更オペレータの "c" と、テキストオブジェクトの "is" に分けられます。 +"is" は "Inner Sentence" の意味です。"as" (a sentence) オブジェクトというのも +あります。"as" では文の後の空白を含みますが、"is" は含みません。文を削除する時 +に、前後の空白も同時に消したい場合は、"das" を使います。文を修正するため、空白 +を残しておきたい場合は、"cis"を使えばよいでしょう。 + +テキストオブジェクトはビジュアルモードでも使えます。テキストオブジェクトを選択 +範囲に含めることができます。テキストオブジェクトを指定してもビジュアルモードは +終了しないので、何度でもテキストオブジェクトを使えます。例えば、"v" でビジュア +ルモードを開始して、"as" で文を選択した後に、"as" を繰り返してたくさんの文を追 +加できます。最後にオペレータを使って、選択した文を対象として、何らかの処理を行 +います。 テキストオブジェクトの機能一覧は |text-objects| をご覧ください。 ============================================================================== -*04.9* 置き換えモード +*04.9* 置換モード -"R"コマンドを使うと置き換えモードに入ります。このモードでは、カーソル位置の -文字が入力した文字に置き換わります。このモードは<Esc>を押すまで続きます。 -次の例では、"text"の1つ目の"t"で置き換えモードを開始します。 +"R" コマンドを使うと置換モードに入ります。このモードでは、入力した文字が、カー +ソル下の文字を置き換えます。このモードは <Esc> を押すまで続きます。 +例えば、"text" の1つ目の "t" で置換モードを開始したとします: This is text. ~ Rinteresting.<Esc> This is interesting. ~ +末尾の 5 文字が 12 文字の他の文字に置き換えられています。"R" コマンドは置換す +る文字がなくなると自動的に行末をずらします。次の行へ移動したりはしません。 -上の例では末尾の5文字を別の12文字に置き換えています。"R"コマンドは置き換 -えるべき文字がなくなると自動的に行末をずらします。ただし改行した次の行には影 -響を与えません。 - -<Insert>キーで挿入モードと置き換えモードを切り換えることができます。 +<Insert> キーで挿入モードと置換モードを切り換えることができます。 -<BS>キーで修正をしようとすると、元の文字が復元されます。直前に打った文字を -アンドゥした時のような動きとなります。 +<BS> キーで修正をしようとすると、元の文字が復元されます。直前に打った文字をア +ンドゥするような働きをします。 ============================================================================== -*04.10* 最後に +*04.10* 終わりに オペレータ、移動コマンド、テキストオブジェクトを組み合せると、とてつもない数 のコンビネーションを生み出すことができます。既に説明したように、N個のオペ @@ -483,34 +478,34 @@ GUIを使っていない場合やメニューを使うのが嫌いな場合は テキストの一部を削除するには数多くの方法があります。ほんの一部ですが、よく使 うものを挙げておきましょう。 -x カーソル位置の文字を削除("dl"と同じ) -X カーソル位置の直前の文字を削除("dh"と同じ) -D カーソル位置から行末までを削除("d$"と同じ) +x カーソル位置の文字を削除 ("dl"と同じ) +X カーソル位置の直前の文字を削除 ("dh"と同じ) +D カーソル位置から行末までを削除 ("d$"と同じ) dw カーソル位置から次の単語の先頭までを削除 db カーソル位置から直前の単語の先頭までを削除 -diw カーソル位置の単語を削除(文の後の空白は除く) -daw カーソル位置の単語を削除(文の後の空白を含む) +diw カーソル位置の単語を削除 (文の後の空白は除く) +daw カーソル位置の単語を削除 (文の後の空白を含む) dG ファイルの末尾まで削除 dgg ファイルの先頭まで削除 -"d"の代わりに"c"を使うと削除ではなく、変更コマンドとなります。"y"にすれば、 -ヤンクコマンドです。他のオペレータも同様です。 +"d" の代わりに "c" を使うと削除ではなく、変更コマンドになります。"y" にすれ +ばヤンクコマンドです。他のオペレータも同様です。 他の章では触れる機会のない変更コマンドをいくつか挙げておきます。 ~ カーソル位置の大文字/小文字を変更し、カーソルを次に進めます。 - これは('tildeop'をセットしない限り)オペレータではありません。 - つまりモーションコマンドを使うことはできません。visualモード - で選択した文字列については全体が対象となります。 + これは('tildeop'がオフの場合は)オペレータではありません。つま + りモーションコマンドを使うことはできません。ビジュアルモードで + 選択した文字列については全体が対象となります。 - I (大文字の"i"です)カーソルを行の最初の非空白文字に移動して + I (大文字の"i"です) カーソルを行の最初の非空白文字に移動して 挿入モードを開始します。 A 行末にカーソルを動かして、挿入モードを開始します。 ============================================================================== -Next chapter: |usr_05.txt| 自分用の設定 +次章: |usr_05.txt| 設定の変更 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_05.jax b/ja/usr_05.jax index 874e6e299..663b282be 100644 --- a/ja/usr_05.jax +++ b/ja/usr_05.jax @@ -1,283 +1,278 @@ COMMENT: カスタマイズ設定方法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_05.txt* For Vim version 6.3. Last change: 2004 Mar 12 +*usr_05.txt* For Vim version 7.0. Last change: 2006 Apr 24 - VIM USER MANUAL - by Bram Moolenaar + VIM USER MANUAL - by Bram Moolenaar - Set your settings + 設定の変更 -vimはあなたの好みに合わせてチューニングができます。本章ではオプションの内容 -を変更して、その設定でvimを起動させる方法を述べます。また、vimの機能拡張プラ -グインを追加したり、独自のマクロを定義する方法についても触れます。 +Vim は、あなたの好みに合わせてチューニングできます。本章では、好みの設定で Vim +を起動する方法を述べます。Vim にプラグインを追加して機能拡張したり、自分でマク +ロを定義する方法も説明します。 |05.1| vimrc ファイル -|05.2| vimrc ファイルの例の説明 -|05.3| 基本的なマップ +|05.2| 見本 vimrc ファイルの解説 +|05.3| 簡単なマップ |05.4| プラグインの追加 |05.5| ヘルプファイルの追加 |05.6| オプションウィンドウ |05.7| よく使うオプション - Next chapter: |usr_06.txt| シンタックスハイライトを使う - Previous chapter: |usr_04.txt| ちょっとした変更 -Table of contents: |usr_toc.txt| +次章: |usr_06.txt| 構文強調表示 +前章: |usr_04.txt| 簡単な編集 +目次: |usr_toc.txt| ============================================================================== *05.1* vimrc ファイル *vimrc-intro* -よく使うコマンドを入力するのが面倒に感じることもあるでしょう。好みのオプション -設定やマップを設定した状態で起動させるために、vimrcファイルと呼ばれるファイ -ルを書けます。vimはこのファイルを起動時に読み込みます。 +よく使うコマンドを入力するのが面倒に感じたことがあるでしょう。好みのオプション +やマップを設定した状態で Vim を起動するには、vimrc というファイルに設定を書い +てください。そのファイルに書いたコマンドは、Vim が起動するときに実行されます。 -vimrcファイルが見つからない場合は、次のコマンドを使います。 > +すでに vimrc ファイルがある場合 (例えばシステム管理者が設置した場合など) は、 +次のコマンドでそのファイルを開くことができます: > - :scriptnames + :edit $MYVIMRC -一覧の最初に表示されるファイルは".vimrc"とか"_vimrc"というファイル名でホーム -ディレクトリに置きます。 -vimrcファイルをまだ作っていない場合は、|vimrc| を見てvimrcファイルを作る場所 -を確認してください。また、":version"コマンドを使うと、vimが探そうとするユーザ -vimrcファイルの格納ディレクトリがわかります。 +vimrc ファイルがまだない場合は |vimrc| を参照し、vimrc ファイルを作る場所を確 +認してください。":version" コマンドを使っても、"ユーザ vimrc" の場所を表示でき +ます。 -Unixでは必ず次のファイルとなります。 > +Unix と Macintosh ではこのファイルを使ってください。 - ~/.vimrc + ~/.vimrc ~ -MS-DOSとMS-Windowsでは大低は次のどちらかです。 > +MS-DOS と MS-Windows では次のどちらかです。 - $HOME/_vimrc - $VIM/_vimrc + $HOME/_vimrc ~ + $VIM/_vimrc ~ -vimrcファイルにはコロン(:)に続く全コマンド(コマンドラインモードのコマンド)が -使えます。一番わかりやすいのはオプション設定です。例えば、'incsearch'オプ -ションを常にonにしたいのなら、ユーザvimrcファイルに次の一行を加えます。 > +vimrc ファイルには、コロン (:) を押してから入力するコマンドなら、どのコマンド +でも書くことができます。一番わかりやすいのはオプション設定です。例えば、毎回 +'incsearch' オプションをオンに設定したい場合は、vimrc ファイルに次の一行を加え +ます。 > - set incsearch + set incsearch -この追加分を有効にするには、vimを終了し再起動します。再起動しないでこれを行 -う方法もありますが、これについては後で触れます。 +この新しい行を有効にするには、Vim を終了し、再起動する必要があります。再起動し +ないで設定を反映する方法は後で説明します。 -この章はごく基本的な項目だけを説明しています。vimスクリプトのより詳しい情報 -については |usr_41.txt| をご覧ください。 +この章では、ごく基本的な項目だけを説明します。Vim スクリプトのより詳しい情報に +ついては |usr_41.txt| を参照してください。 ============================================================================== -*05.2* 説明用のvimrcの例 *vimrc_example.vim* +*05.2* 見本 vimrc ファイルの解説 *vimrc_example.vim* -上の節ではサンプルのvimrc(vimの配布パッケージに入っています)を非互換モード -(詳しくは|not-compatible|をご覧ください)で利用する方法を述べました。このファ -イルは次のディレクトリにあります。 +第一章では、Vim の配布物に付属の見本 vimrc ファイルを使って、非互換モード +(|not-compatible|参照) で Vim を起動する方法を説明しました。見本 vimrc ファイ +ルは次のディレクトリにあります: - $VIMRUNTIME/vimrc_example.vim ~ + $VIMRUNTIME/vimrc_example.vim ~ -この節ではこのファイルで使われている各種のコマンドを説明します。自分用のセッ -トアップをするときの助けとなると思います。ただし全てを説明できるわけではあり -ません。詳しいことは":help"コマンドで探してください。 +この節では、このファイルで使われているコマンドを説明します。自分用の設定をする +ときの参考になると思います。しかし、全てを説明するわけではないので、詳しいこと +は ":help" コマンドで調べてください。 > - set nocompatible + set nocompatible -第1章で述べたようにこのマニュアルではvimを「進化したvi」として、つまりviと -は完全互換でない使い方について説明しています。そのためには'compatible'オプ -ションをoffに('nocompatible'に)しておく必要があります。 +第一章で述べたように、このマニュアルでは「Vim」について説明しているので、Vi と +は完全に互換性がない部分があります。動作を同じにするには、'compatible' オプ +ションをオフに設定する必要があります。 > - set backspace=indent,eol,start + set backspace=indent,eol,start < -挿入モードで<BS>キーを押すとカーソルの直前の文字が消えます。ここでは、<BS> -キーが使える範囲を定義しています。カンマ(,)で分割された3つの部分はそれぞれ -次の意味となります。 - indent 行頭の空白類の削除を許す - eol 改行の削除を許す - start 挿入モードの開始位置での削除を許す +挿入モードで <BS> を使った場合に、どの文字を削除できるかを指定しています。コン +マで区切られた三つの部分はそれぞれ次の文字の削除を許可しています。 + indent 行頭の空白 + eol 改行 + start 挿入モード開始位置より手前の文字 > - set autoindent + set autoindent -これは新しい行を、直前の行と同じインデント(段付け)とすることを指定します。 -新しい行の行頭に直前の行と同じだけの空白を付けるということです。例えば、挿入 -モードで<Enter>キーを押した時や"o"コマンドで新しい行ができた時が該当します。 +新しい行を作成したときに、直前の行と同じだけインデントされるようになります。つ +まり、新しい行の行頭に直前の行と同じだけの空白が挿入されます。例えば、挿入モー +ドで <Enter> キーを押したときや、"o" コマンドで新しい行を作成したときに機能し +ます。 > - if has("vms") - set nobackup - else - set backup - endif + if has("vms") + set nobackup + else + set backup + endif -これはファイルに上書きする時にバックアップを作るように指定しています。ただし -VMSシステムではOSが古いバージョンを保持してくれますので、バックアップをoff -にします。バックアップファイルのファイル名はオリジナルの名前に"~"を加えたも -のとなります。|07.4|をご覧ください。 +ファイルを上書きしたときに、バックアップファイルを削除しないように指定していま +す。ただし VMS システムでは OS が古いバージョンを保持してくれるので、オフにし +ています。バックアップファイルのファイル名はオリジナルの名前に "~" を加えたも +のになります。|07.4|を参照してください。 > - set history=50 + set history=50 コマンドを50個分、検索パターンを50個分、ヒストリ(履歴)として残します。覚えさ -せたい量を増減したい時はこの値を変更します。 +せたい量を増減したいときはこの値を変更してください。 > - set ruler + set ruler -現在のカーソル位置(行、桁)をvimのウィンドウの右下に常に表示します。 +現在のカーソル位置(行、桁)を Vim ウィンドウの右下に常に表示します。 > - set showcmd - -入力中(まだ実行していない)コマンドをvimウィンドウの右下(rulerの左側)に表示 -します。例えば、"2f"とコマンドを入力した時、vimは検索したい文字の入力を待っ -ています。画面の右下には"2f"と表示します。次に"w"と入力すると、"2fw"という -コマンドが完成しますので、それを実行します。この時、画面の"2f"という表示も消 -去します。 - - +-------------------------------------------------+ - |text in the Vim window | - |~ | - |~ | - |-- VISUAL -- 2f 43,8 17% | - +-------------------------------------------------+ - ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ - 'showmode' 'showcmd' 'ruler' + set showcmd + +入力途中の (まだ実行していない) コマンドを Vim ウィンドウの右下 (rulerの左側) +に表示します。例えば、"2f" と入力したとき、Vim は検索したい文字の入力を待って +いて、画面の右下には "2f" と表示されます。次に "w" と入力すると、"2fw" という +コマンドが完成するので、それが実行され、画面の "2f" という表示も消去されます。 + + +-------------------------------------------------+ + |text in the Vim window | + |~ | + |~ | + |-- VISUAL -- 2f 43,8 17% | + +-------------------------------------------------+ + ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + 'showmode' 'showcmd' 'ruler' > - set incsearch + set incsearch -検索パターンを入力中に、その場で一致する文字列を検索し、その場所を表示します +検索パターンを入力中に、入力途中のパターンにマッチする文字列を表示します。 > - map Q gq + map Q gq -これはキーマップを定義します。詳しくは次の節で述べます。ここでは、"gq"オペ -レータによるフォーマット機能を"Q"コマンドとして定義しています。 これはvim5.0 -以前で使われていたコマンドです。上の定義をしなければ"Q"はコマンドラインモード -(EXモード)への移行コマンドですが、それは必要ないでしょう。 +キーマップを定義しています。詳しくは次の節で述べます。ここでは、"gq" オペレー +タのフォーマット機能を "Q" コマンドとして定義しています。"Q" の動作が Vim 4.0 +以前と同じになります。上の定義をしなければ "Q" は EX モードへの移行コマンドで +すが、それは必要ないでしょう。 > - vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc> + vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR> -これは複雑なマッピングです。ここでは動作の詳細は述べません。ここでやっている -ことは、visualモードでの"p"コマンドの定義です。直前にヤンクした文字列を現在 -の選択範囲に上書きするというものです。マッピングはこれだけ複雑なことにも使え -るということなのです。とはいっても、実際にコマンドを手入力するのと同じように -一連のコマンドを実行しているに過ぎません。 +このマップは、選択されたテキストをヤンクして、それを C ファイルの中から検索し +ます。これは複雑なマップです。マップを使ってとても難しいことができるということ +が分かってもらえたと思います。とはいっても、実際にコマンドを手入力するのと同じ +ように一連のコマンドを実行しているに過ぎません。 > - if &t_Co > 2 || has("gui_running") - syntax on - set hlsearch - endif + if &t_Co > 2 || has("gui_running") + syntax on + set hlsearch + endif -色が使える場合に限って、シンタックスハイライトを有効にします。さらに検索パ -ターンと合致している箇所を全てハイライト表示にするために、'hlsearch'オプション -をonに設定します。上で使っている"if"コマンドは、特定の条件の時だけオプション -を設定したい時に重宝します。 詳しくは、|usr_41.txt|をご覧ください。 +カラー表示が使えるかどうかを確認し、構文強調表示を有効にしています。さらに、 +'hlsearch' オプションをオンにして、検索にマッチした箇所が強調表示されるように +しています。特定の条件のときだけオプションを設定したい場合は "if" コマンドが便 +利です。 詳しくは、|usr_41.txt|を参照してください。 - *vimrc-filetype* > - filetype plugin indent on + *vimrc-filetype* > + filetype plugin indent on -これは次の3つの功妙な仕掛けをいずれもonに設定しています。 +三つの便利な機能を有効にしています: 1. ファイルタイプの検出 - ファイルの編集を始める時に、vimはそれがどういった種類のファイルかを判断 - しようとします。例えば"main.c"なら、vimはそのファイル名の拡張子が".c"で - あることから、ファイルタイプは"c"だと判断します。またファイルの1行目が - "#!/bin/sh"で始まっていれば、ファイルタイプは"sh"だと判断します。 - ファイルタイプの検出はシンタックスハイライトの他に次の2つの項目で使って - います。詳しくは|filetypes|をご覧ください。 - -2. ファイルタイププラグインファイルの利用 - ファイルタイプには多くの種類があり、それぞれが異なったオプションを用いま - す。例えば、"c"ファイルの場合なら自動的にインデント(段付け)をしてくれる - 'cindent'オプションは欠かせないでしょう。こういった、一般的に便利な設定が - ファイルタイププラグインの中に入っています。独自のプラグインも追加できま - す。詳しくは|write-filetype-plugin|をご覧ください。 - -3. インデント(段付け)ファイル - プログラムで使う行インデントというのはたいていは自動的に計算できるもので - す。vimでは多くのファイルタイプ用にインデントのルールを用意しています。 - 詳しくは|:filetype-indent-on| と 'indentexpr'オプションをご覧ください。 + ファイルを開いたときに、そのファイルの種類を特定します。例えば、"main.c" を + 開いた場合は、拡張子の ".c" を見てファイルタイプは "c" だと判断します。ファ + イルの一行目が "#!/bin/sh" で始まっていた場合は、ファイルタイプは "sh" だと + 判断します。 + 検出されたファイルタイプは構文強調と次の2つの項目で使われます。 + |filetypes|参照。 + +2. ファイルタイププラグインファイルを使う + ファイルを開いたときに、ファイルタイプに応じたオプションが設定されます。例 + えば、"c" ファイルの場合なら自動的にインデントしてくれる'cindent' オプショ + ンは欠かせないでしょう。こういった、一般的に便利な設定がファイルタイププラ + グインの中に入っています。自分でプラグインを追加することもできます。 + |write-filetype-plugin|参照。 + +3. インデントファイルを使う + プログラミング言語のインデントはほとんど自動的に計算できます。Vim にはファ + イルタイプに応じたインデントルールが数多く用意されています。 + |:filetype-indent-on| と 'indentexpr' 参照。 > - autocmd FileType text setlocal textwidth=78 - -ここでは、行が長くなりすぎないように78文字で分割するように指定しています。 -このルールはテキストファイルにだけ適用されます。実際の記述は2パートに分かれ -ています。最初の"autocmd FileType text"はオートコマンド定義です。ここでは -ファイルタイプが"text"の場合のみ、次の指令を登録するように定義しています。 -次の"setlocal textwidth=78"は、対象となるファイルタイプに限り、'textwidth' -オプションを78に設定しています。 + autocmd FileType text setlocal textwidth=78 + +行が長くなりすぎないように78文字で分割するように指定しています。このルールはテ +キストファイルにだけ適用されます。この記述には二つの要素があります。"autocmd +FileType text" はオートコマンド定義です。この場合、ファイルタイプが "text" に +設定されたときに、指定したコマンドが自動的に実行されます。"setlocal +textwidth=78" はそのファイルの 'textwidth' オプションを 78 に設定しています。 > - autocmd BufReadPost * - \ if line("'\"") > 0 && line("'\"") <= line("$") | - \ exe "normal g`\"" | - \ endif + autocmd BufReadPost * + \ if line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal g`\"" | + \ endif -これは別のオートコマンドです。これはどのファイルの時も使います。その後の複 -雑な部分は、「'" マークが定義されているかどうかをチェックし、定義があれば、 -そこにジャンプする」です。各行の先頭の逆スラッシュ(日本語環境だと円記号)は -上の行の続きであることを示します。これは行がやたらと長くなるのを防ぎます。 -詳しくは|line-continuation|をご覧ください。 オートコマンドはvimスクリプト -ファイルに書かないと動きません。上のコマンドを直接コマンドラインモードで入力 -してもダメなのです。 +オートコマンドをもう一つ。ファイルを読み込んだ直後に実行されるオートコマンドを +定義しています。後ろのごちゃごちゃした部分は「'" マークが定義されているかどう +かをチェックし、定義があれば、そこにジャンプする」という意味です。コマンドを複 +数行に分けて書くために、行頭に "\" を書いています。行がやたらと長くなるのを防 +ぐためです。|line-continuation|参照。"\" は Vim スクリプト内でのみ使えます。コ +マンドラインで入力するときは使えません。 ============================================================================== -*05.3* 基本的なマップ +*05.3* 簡単なマップ マップを使うと、複数のコマンドを1つのキー繰作にまとめることができます。例え -ば、ある単語を{ }で囲むようにしたい("amount"を{amount}のように変更したい)場 -合を考えます。これを<F5>キーに定義するために:mapコマンドを使います。 -次のように書きます。 > +ば、ある単語を {} で囲みたいとします。つまり、"amount" を "{amount}" にしたい +わけです。:map コマンドを使って、その操作を <F5> キーに割り当てることができま +す。次のように書きます。 > - :map <F5> i{<Esc>ea}<Esc> + :map <F5> i{<Esc>ea}<Esc> < Note: このコマンドを入力する時にはちょっと注意してください。 <F5>は4文字の文字列として入力してください。<Esc>も同じで、<Esc>キー を押すのではなく、5文字の文字列として入力してください。このマニュ - アルを読む時にはその違いに注意してください ! + アルを読むときはその違いに注意してください ! この定義内容を分解してみましょう。 - <F5> ファンクションキーのF5です。このキーを押すと、定義してあるコ - マンドを実行します。 + <F5> ファンクションキーのF5です。このキーを押すと、定義してあるコマ + ンドが実行されます。 - i{<Esc> "{"文字を挿入します。<Esc>キーで挿入モードから通常モードに戻 - ります。 + i{<Esc> "{" 文字を挿入し、<Esc> キーで挿入モードから抜けます。 - e 単語の末尾にカーソルを移します。 + e 単語の末尾に移動します。 - a}<Esc> "}"文字を追加します。 + a}<Esc> "}" 文字を追加します。 -この":map"コマンドを実行した後は、カーソルを単語の先頭に動かしてF5キーを押す -だけで単語の両側に{ }が追加されるようになります。 +この ":map" コマンドを実行した後は、カーソルを単語の先頭に動かして F5 キーを押 +すだけで単語の両側に {} を追加できます。 -この例では、コマンドは1キーだけでしたが、複数文字でも使えます。但し、既に -vimが使っているコマンドと重なると、元のコマンドが使えなくなります。避ける方 -が賢明でしょう。 -逆スラッシュ(日本語環境では円記号)は複数キーのマップに使える文字です。 -いくつもマップが使いたくなった時には、複数文字にマップしましょう。例えば、 -単語を( )で囲む時は"\p"マップで、単語を{ }で囲む時は"\c"マップで、といった -ことができます。 > +この例では、コマンドは1キーでしたが、どの文字列でも割り当てることができます。 +ただし、Vim のコマンドと同じ文字列を割り当てると、元のコマンドが使えなくなるの +で、それは避けた方がいいでしょう。 +複数キーを組み合わせるときには、バックスラッシュ(日本語環境では円記号)がよく使 +われます。マップをたくさん定義したい場合は、複数文字を使ってください。例えば、 +単語を () で囲むには "\p" で、単語を {} で囲むには "\c" で、といったことができ +ます。 > - :map \p i(<Esc>ea)<Esc> - :map \c i{<Esc>ea}<Esc> + :map \p i(<Esc>ea)<Esc> + :map \c i{<Esc>ea}<Esc> -"\"の直後に"p"を指定するようにします。こうすればvimは2文字のマップだと認識 -できます。 +"\" と "p" はくっつけてください。こうすれば Vim は2文字のマップだと認識できま +す。 -引数なしの":map"コマンドは現在のマップ(少なくとも通常モードの)定義の一覧 -を表示します。より詳しくは|40.1|章をご覧ください。 +引数なしの ":map" コマンドは現在のマップ定義の一覧を表示します。表示されたマッ +プは、少なくともノーマルモードで使えます。より詳しくは|40.1|章を参照してくださ +い。 ============================================================================== *05.4* プラグインの追加 *add-plugin* *plugin* -vimはプラグインを追加することで機能拡張ができます。プラグインといっても、vim -が起動された時に自動的に読み込まれるvimスクリプトでしかありません。プラグイン -を追加したい場合も、プラグイン用のディレクトリにファイルをドロップするだけで -すから、とても簡単です。 -{note:vimを|+eval|機能なしでコンパイルした場合は使えません} +Vim はプラグインを追加することで機能拡張できます。プラグインといっても、Vimが +起動されたときに自動的に読み込まれる、ただの Vim スクリプトファイルです。ファ +イルをプラグインディレクトリにコピーするだけで簡単にプラグインを追加できます。 +{|+eval|が有効な場合のみ利用できます} プラグインには次の2種類があります。 @@ -285,351 +280,359 @@ vimはプラグインを追加することで機能拡張ができます。プ ファイルタイププラグイン 特定タイプのファイルでのみ使われるプラグイン まず、グローバルプラグインについて説明し、次にファイルタイププラグインの説明 -|add-filetype-plugin|をしましょう。 +|add-filetype-plugin|をします。 グローバルプラグイン *standard-plugin* -------------------- -vim起動時には自動的にいくつものグローバルプラグインを読み込みます。特に何も -しなくても大丈夫です。グローバルプラグインでは、ほとんどの人にとって有用な -機能を提供しています。ただし、これらはvimの中にコンパイルして組み込まれてい -るのではなく、vimスクリプトとして実装されています。 -そのリストはヘルプの目次|standard-plugin-list|にあります。|load-plugins|も -ご覧ください。 +Vim を起動すると、自動的にいくつものグローバルプラグインがロードされます。特に +何もしなくて大丈夫です。グローバルプラグインは、ほとんどの人が欲しいと思うだろ +う機能を提供しています。それらの機能は Vim の中にコンパイルして組み込まれてい +るのではなく、Vim スクリプトとして実装されています。ヘルプの目次にプラグインの +一覧があります|standard-plugin-list|。|load-plugins|も参照してください。 *add-global-plugin* -常に有効にしたい機能は、グローバルプラグインとして追加します。 +グローバルプラグインを追加すると、いつでもその機能を使えるようになります。 グローバルプラグインの追加は次の2つを行うだけです。 - 1. プラグインを入手する - 2. それを正しいディレクトリに入れる +1. プラグインを入手する +2. それを正しいディレクトリに入れる -グローバルプラグインの入手 --------------------------- +グローバルプラグインを入手する +------------------------------ -プラグインはどこで手に入れられるのでしょう? -- 一部はvimのパッケージに入っています。$VIMRUNTIME/macros以下のディレクトリ - をご覧ください -- インターネットからダウンロードする。http://vim.sf.net をどうぞ。 -- vimのメーリングリスト|maillist|に投稿されることもあります。 +プラグインはどこにありますか? +- Vim の配布物にいくつか含まれています。$VIMRUNTIME/macros ディレクトリをご覧 + ください +- インターネットからダウンロードする。たくさんのプラグインが + http://www.vim.org にあります。 +- Vim のメーリングリスト|maillist|に投稿されることもあります。 - あなたが自作することもできます。プラグインの書き方|write-plugin|をどうぞ。 +いくつかのプラグインは vimball アーカイブで配布されています。|vimball|参照。 +いくつかのプラグインは自動更新可能です。|getscript|参照。 -グローバルプラグインの使い方 ----------------------------- + +グローバルプラグインを使う +-------------------------- まず、プラグイン自身のドキュメントを読んで、動作条件を確認してください。 -次にそれをプラグイン用ディレクトリにコピーします。 +次にそれをプラグインディレクトリにコピーします。 - system plugin directory ~ - Unix ~/.vim/plugin/ - PC や OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin - Amiga s:vimfiles/plugin - Macintosh $VIM:vimfiles:plugin - Mac OS X ~/.vim/plugin/ - RISC-OS Choices:vimfiles.plugin + system plugin directory ~ + Unix ~/.vim/plugin/ + PC や OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin + Amiga s:vimfiles/plugin + Macintosh $VIM:vimfiles:plugin + Mac OS X ~/.vim/plugin/ + RISC-OS Choices:vimfiles.plugin -Unixの場合の例(プラグイン用ディレクトリがない場合) > +Unixの場合の例 (プラグインディレクトリがまだない場合) > - mkdir ~/.vim - mkdir ~/.vim/plugin - cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin + mkdir ~/.vim + mkdir ~/.vim/plugin + cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin -これだけです。vimを再起動するとプラグインに定義されたコマンドが使えます。 +これだけです。vimを再起動するとプラグインで定義されたコマンドが使えます。 + +plugin/ ディレクトリ以下にファイルを置く代わりに、それらのファイルを plugin/ +ディレクトリ以下のサブディレクトリに置くこともできます。例えば、Perl 用のプラ +グインをすべて "~/.vim/plugin/perl/*.vim" に置くのはどうでしょうか。 ファイルタイププラグイン *add-filetype-plugin* *ftplugins* ------------------------ -vimの配布パッケージにはいろんなファイルタイプ用のプラグインが入っています。 +Vim の配布パッケージにはいろんなファイルタイプ用のプラグインが入っています。 次のコマンドで利用開始できます。 > - :filetype plugin on + :filetype plugin on -これだけです。|vimrc-filetype|もご覧ください。 +これだけです。|vimrc-filetype|も参照してください。 -編集したいファイル用のプラグインがない場合や標準より良いものを見つけた -場合は追加ができます。ファイルタイププラグインの追加は次の手順で行います。 - 1. プラグインを入手する - 2. それを正しいディレクトリに入れる +使いたいファイルタイププラグインがない場合や、標準より良いものを見つけた場合 +は、追加できます。ファイルタイププラグインの追加は次の手順で行います: +1. プラグインを入手する +2. それを正しいディレクトリに入れる -ファイルタイププラグインの入手 ------------------------------- +ファイルタイププラグインを入手する +---------------------------------- -ファイルタイププラグインもグローバルプラグインと同じ方法で入手できます。 -ファイルタイプの記載の有無でそのプラグインがグローバルかファイルタイプか区別 -できます。$VIMRUNTIME/macros はグローバルプラグイン用で、$VIMRUNTIME/ftplugin -はファイルタイププラグイン用のディレクトリです。 +ファイルタイププラグインもグローバルプラグインと同じ方法で入手できます。プラグ +インの種類が記載されているのでそれを見て、そのプラグインがグローバルプラグイン +かファイルタイププラグインか確認してください。$VIMRUNTIME/macros に入っている +のはグローバルプラグインです。$VIMRUNTIME/ftplugin に入っているのはファイルタ +イププラグインです。 -ファイルタイププラグインの使い方 *ftplugin-name* --------------------------------- +ファイルタイププラグインを使う *ftplugin-name* +------------------------------ -ファイルタイププラグインは正しいディレクトリにドロップするだけで追加できます。 -このディレクトリ名はグローバルプラグインの場合と同様ですが、最後のディレクト -リ名が"ftplugin"となります。例えば"staff"ファイルタイプ用のプラグインを見つ +ファイルタイププラグインは正しいディレクトリにコピーするだけで追加できます。 +ディレクトリの場所はグローバルプラグインと同じですが、ディレクトリ名の最後の部 +分が "ftplugin" となります。例えば "staff" ファイルタイプ用のプラグインを見つ け、Unixシステムに入れるとしましょう。入手したファイルを次のコマンドで -ftpluginディレクトリに移します。 > +ftplugin ディレクトリに移します: > - mv thefile ~/.vim/ftplugin/stuff.vim + mv thefile ~/.vim/ftplugin/stuff.vim -既に"staff"用のプラグインが存在している場合、既存のプラグインと追加しようと -しているプラグインにコンフリクト(矛盾、衝突)がないことを確認してください。 -問題がなければ別の名前に変えましょう。 > +そのファイルがすでにある場合は、既存のプラグインと追加しようとしているプラグイ +ンを同時に使っても問題ないかどうか確認してください。問題がなければ別の名前に変 +えましょう: > - mv thefile ~/.vim/ftplugin/stuff_too.vim + mv thefile ~/.vim/ftplugin/stuff_too.vim -アンダースコア(_)文字はファイルタイプ名とそれ以外の区別に使います。アンダー -スコア以降はどんな文字列でも構いません。しかし、例えば、"otherstuff.vim"と -いった名前にするとうまく動きません。これは"otherstuff"というファイルタイプ -の時にだけ読み込まれるからです。 +アンダースコアはファイルタイプの名前とそれ以外を区切るのに使います。アンダース +コア以降はどんな文字列でも構いません。"otherstuff.vim" といった名前にしてもう +まく動きません。そのファイルは "otherstuff" というファイルタイプのときにだけ +ロードされます。 -MS-DOSでは長いファイル名が使えません。特にファイルタイプ名が6文字以上のプ -ラグインに2つ目を追加しようとすると問題が生じます。この回避のため、専用 -ディレクトリが使えます。 > +MS-DOS では長いファイル名が使えません。2 つ目のプラグインを追加するときに、 +ファイルタイプ名が 6 文字以上だと問題が生じます。そういうときはさらにディレク +トリを掘ってください: > - mkdir $VIM/vimfiles/ftplugin/fortran - copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim + mkdir $VIM/vimfiles/ftplugin/fortran + copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim -ファイルタイププラグインの名前付けルールは次の通りです。 +ファイルタイププラグインの名前付けルールは次の通りです: > - ftplugin/<filetype>.vim - ftplugin/<filetype>_<name>.vim - ftplugin/<filetype>/<name>.vim + ftplugin/<filetype>.vim + ftplugin/<filetype>_<name>.vim + ftplugin/<filetype>/<name>.vim "<name>" の部分はどんな文字列でも構いません。 -以下はUnixでの"staff"ファイルタイププラグインのファイル名の例です。 - - ~/.vim/ftplugin/stuff.vim - ~/.vim/ftplugin/stuff_def.vim - ~/.vim/ftplugin/stuff/header.vim - -<filetype>にはプラグインが使われるファイルタイプ名を書きます。 -ファイルタイプが合致したファイルだけをプラグインとして使います。<name>部分は -無視します。<name>は同じファイルタイプのプラグインを複数登録する場合のプラグ -インの区別用です。なお、ファイル名の最後は".vim"でなければなりません。 - +以下は Unix での "staff" ファイルタイプの例です: > -より詳しい情報は以下をご覧ください。 -|filetype-plugins| ファイルタイププラグインとマップで発生する問題の回避 - 方法についてのドキュメント -|load-plugins| 起動時に読み込まれるグローバルプラグイン -|ftplugin-overrule| グローバルプラグインの設定の上書き(overruling) -|write-plugin| プラグインスクリプトの書き方 -|plugin-details| プラグインの使い方やプラグインが動かない場合について - の詳細な情報 -|new-filetype| 新しいファイルタイプを追加するには + ~/.vim/ftplugin/stuff.vim + ~/.vim/ftplugin/stuff_def.vim + ~/.vim/ftplugin/stuff/header.vim +< +<filetype> の部分はプラグインの対象になっているファイルタイプ名です。同じファ +イルタイプのファイルだけがそのプラグインを使います。<name> の部分は無視されま +す。一つのファイルタイプに複数のプラグインを登録する場合に使ってください。 +Note: ファイルの拡張子は必ず ".vim" にしてください。 + + +詳しくは以下を参照してください: +|filetype-plugins| ファイルタイププラグインについてのドキュメントと、マッ + プで問題が発生した場合の対処方法。 +|load-plugins| 起動時にロードされるグローバルプラグイン。 +|ftplugin-overrule| 標準のファイルタイププラグインの設定を上書きする。 +|write-plugin| プラグインスクリプトの書き方。 +|plugin-details| プラグインの使い方やプラグインが動かない場合について + の詳細な情報。 +|new-filetype| 新しいファイルタイプを追加するには。 ============================================================================== -*05.5* ヘルプファイルの追加 *add-local-help* *matchit-install* +*05.5* ヘルプファイルの追加 *add-local-help* *matchit-install* 運が良ければ、プラグインにはヘルプファイルが添付されています。ここでは、ヘル プファイルのインストール方法を述べます。 そうすれば、新しいプラグインのヘル プを簡単に探せますね。 -"matchit.vim"プラグイン(vimの配布パッケージに入っています)を例にやってみま -しょう。このプラグインは"%"コマンドで呼応するHTMLタグ間や、vimスクリプトの -if/else/endif間でジャンプできるようにするものです。とても便利なのですが、 -従来互換を失ってしまいます。(だからデフォルトでは有効になっていないのです) -このプラグインにはヘルプ"matchit.txt"が付いています。最初にプラグイン本体を -適切なディレクトリにコピーします。今回はvimの中でやってみます。ですので、 -$VIMRUNTIME が使えます。(ディレクトリがあれば、"mkdir"コマンドは省略できま -す) > +"matchit.vim" プラグイン (Vim の配布パッケージに入っています) を例にやってみま +しょう。このプラグインは "%" コマンドを拡張し、対応する HTML タグや、Vim スク +リプトの if/else/endif間でジャンプできるようになります。これはとても便利です。 +後方互換ではないので、標準では有効になっていません。 +このプラグインにはヘルプ "matchit.txt" が付属しています。最初にプラグイン本体 +を適切なディレクトリにコピーしましょう。今回は Vim の中からやってみます。です +ので、$VIMRUNTIME が使えます。(ディレクトリがすでにある場合は、"mkdir" コマン +ドを省略してください。) > + + :!mkdir ~/.vim + :!mkdir ~/.vim/plugin + :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin - :!mkdir ~/.vim - :!mkdir ~/.vim/plugin - :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin +"cp" は Unix のコマンドです。MS-DOS では "copy" を使ってください。 -次に'runtimepath'のいずれかのディレクトリに"doc"ディレクトリを作ります。 > +次に 'runtimepath' のいずれかのディレクトリに "doc" ディレクトリを作ります。 > - :!mkdir ~/.vim/doc + :!mkdir ~/.vim/doc -"doc"ディレクトリにヘルプファイルをコピーします。 > +"doc" ディレクトリにヘルプファイルをコピーします。 > - :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc + :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc -さらに新しいヘルプファイルの項目にジャンプできるように仕掛けをします。 -コマンド|:helptags|を使ってタグファイルを生成します。 > +続いて、新しいヘルプファイルの項目にジャンプできるように仕掛けをします。 +|:helptags|コマンドを使ってタグファイルを生成してください。 > - :helptags ~/.vim/doc + :helptags ~/.vim/doc さて、これで次のコマンドが使えます。 > - :help g% + :help g% -これは上で追加したヘルプファイルの中から"g%"のヘルプを探すコマンドです。次の +これは上で追加したヘルプファイルの中から "g%" のヘルプを探すコマンドです。次の コマンドでローカルヘルプの目次を見ることができます。 > - :help local-additions + :help local-additions -上でインストールしたローカルなヘルプのタイトルが自動的に追加されています。ここ -を見ればどんなローカルヘルプが追加されたか解ります。ここからタグジャンプもでき -ます。 +ここには、インストールしたローカルヘルプのタイトルが自動的に追加されます。ここ +を見れば、どんなローカルヘルプが追加されているかわかります。ここからタグジャン +プもできます。 -ローカルヘルプファイルの書き方については|write-local-help|をご覧ください。 +ローカルヘルプファイルの書き方については|write-local-help|を参照してください。 ============================================================================== *05.6* オプションウィンドウ -欲しいオプションを探すには、ヘルプファイルで|options|を探せばできます。 -もう一つ次のコマンドを使う方法もあります。 +何かのオプションを探しているなら、ヘルプファイル |options| から見つけることが +できるでしょう。もう一つ、次のコマンドを使う方法もあります: > - :options ~ + :options -これは各オプションに1行の解説が付いた新しいウィンドウを開きます。オプション -はサブジェクトでグループ化されていて、カーソルをサブジェクトの上に動かして -<Enter>を押すとそこにジャンプします。もう一度<Enter>を押すか、CTRL-Oを押すと -戻ってきます。 +新しいウィンドウが開き、一行解説付きのオプションの一覧が表示されます。オプショ +ンは種類別にグループ化されています。カーソルを目次の上に動かして <Enter> を押 +すとそこにジャンプできます。もう一度 <Enter> を押すか、CTRL-O を押すと戻れま +す。 -ここでオプションの値を変えられます。例えば、"displaying text"のサブジェクト -に移動し、カーソルを次の行まで持っていきます。 +ここでオプションの値を変えられます。例えば、"displaying text" グループに移動 +し、カーソルを次の行まで持っていきます: - set wrap nowrap ~ + set wrap nowrap ~ -ここで<Enter>を押すと、表示が次のようになります。 +ここで <Enter> を押すと、表示が次のようになります: - set nowrap wrap ~ + set nowrap wrap ~ -このオプションはoffになりました。 +このオプションはオフになりました。 -この行の1つ上には'wrap'オプションの簡単な説明があります。説明のところにカー -ソルを動かして、<Enter>を押すと、'wrap'オプションの完全なヘルプにジャンプ -します。戻るのはCTRL-Oです。 +この行の上には 'wrap' オプションの簡単な説明があります。説明のところにカーソル +を動かして、<Enter> を押すと、'wrap' オプションのヘルプにジャンプできます。 数値や文字列を引数に取るオプションの場合、値を編集できます。修正後に<Enter> キーを押すとそれが新しい値として設定されます。例えば、カーソルを次の行まで -数行上に動かします。 +('wrap'の少し上に) 動かしてください。 - set so=0 ~ + set so=0 ~ -"$"コマンドでカーソルを"0"の上に動かし、"r5"で値を5に変更します。<Enter>を -押すと、その値が設定されます。ここでカーソルを動かすと、画面の端までカーソル -が達する前にスクロールが始まることに気づくでしょう。これは'scrolloff'オプ -ションのしわざです。設定した値はスクロールが始まる場所を画面の端から数えた -時のオフセット値なのでした。 +"$" コマンドでカーソルを "0" の上に動かし、"r5" で値を 5 に変更します。<Enter> +を押すと、その値が設定されます。カーソルを動かしてみると、画面の端までカーソル +が達する前にスクロールが始まることに気づくでしょう。これは 'scrolloff' オプ +ションのしわざです。ウィンドウの端からのオフセットを設定し、スクロールが開始す +る位置を指定しています。 ============================================================================== *05.7* よく使うオプション -vimには本当に大量にオプションがあります。そのほとんどは使うことはないで -しょう。ここでは一部のよく使うものだけを説明します。以下で述べるオプション -についても、より詳しいヘルプが探せることをお忘れなく。オプションを探す時に -は、":help"に続けてアポストロフィで囲んだオプション名を指定します。 > +Vim には本当に大量のオプションがあります。ほとんどのオプションは使う機会がない +と思います。ここでは一部のよく使うものだけを説明します。これらのオプションには +より詳しいヘルプがあることをお忘れなく。ヘルプを見るには、":help" に続けてアポ +ストロフィで囲んだオプション名を指定してください: > - :help 'wrap' + :help 'wrap' -オプションの値がごしゃごしゃになってきたら、デフォルトに戻すことができます。 -デフォルトに戻すのにはアンパサンド(&)を使います。 > +オプションの値がごしゃごしゃになってしまったら、初期設定に戻すことができます。 +初期設定に戻すのにはアンパサンド(&)を使います: > - :set iskeyword& + :set iskeyword& 行の折り曲げの禁止 ------------------ -vimは長い行があれば、画面の右端で折り曲げて(文の全体が見えるように)表示しま -す。しかしウィンドウの右にはみ出した方が良い場合もあります。その場合は左右への -スクロール機能が必要となります。折り曲げをするかどうかは次で設定します。 > +長い行は、文の全体が見えるように、画面の右端で折り曲げて表示されます。しかし +ウィンドウの右にはみ出した方が良い場合もあります。その場合は、左右にスクロール +して長い行を表示することになります。次のコマンドで折り曲げしないようになりま +す: > - :set nowrap + :set nowrap -vimは表示していない領域にカーソルを動かそうとすると自動的にスクロールします。 -10文字分を表示させようとするには、次のようにします。 > +表示されていない領域にカーソルを動かすと自動的にスクロールされます。10 文字ず +つスクロールするには、次のようにします: > - :set sidescroll=10 ~ + :set sidescroll=10 -これはファイルの内容には影響しません。表示の方法だけです。 +これはファイルの内容には影響しません。表示方法を変更するだけです。 -折り曲げ関係の移動コマンド +折り返して移動するコマンド -------------------------- -ほとんどの移動コマンドは行頭と行末で止まります。'whichwrap'オプションでこれ -を変更できます。次の例は'whichwrap'をデフォルト値にしています。 > +ほとんどの移動コマンドは行頭と行末で移動を停止します。'whichwrap' オプションで +それを変更できます。次の例では、'whichwrap' を初期設定に設定しています: > - :set whichwrap=b,s + :set whichwrap=b,s -ここでは<BS>キーで行頭から1つ上の行の行末へ動くことを許可しています。 -また、<Space>キーは行末から次の行の行頭への移動を許可しています。 +ここでは、<BS> キーで行頭から1つ上の行の行末へ動くことを許可しています。ま +た、<Space> キーで行末から次の行の行頭への移動することを許可しています。 -カーソルキーの<Left>と<Right>もこのコマンドで使用を許可できます。 > +カーソルキーの <Left> と <Right> もこのコマンドで折り返しを許可できます: > - :set whichwrap=b,s,<,> + :set whichwrap=b,s,<,> -この指定は通常モードでのみ有効です。挿入モードでも<Left>と<Right>を許可する -には次のように指定します。 > +この指定はノーマルモードでのみ有効です。挿入モードでも <Left> と <Right> を許 +可するには次のように指定します: > :set whichwrap=b,s,<,>,[,] -他にもいくつかフラグがあります。詳しくは 'whichwrap'のヘルプをご覧ください。 +他にもいくつかフラグがあります。詳しくは 'whichwrap' を参照してください。 -TABを見えるように ------------------- +TAB を表示する +-------------- -ファイル中にTAB(^I)があっても、通常表示では場所がわかりません。次のオプ -ションを使うと、見ることができるようになります。 +ファイル中に Tab 文字があっても、それを視認することはできません。Tab 文字が表 +示されるようにしましょう: > - :set list + :set list -TAB記号は全部 ^I と表示され、行末には $ と表示されます。通常なら気付かない -ような、行末の空白類もよくわかるようになります。 -これの欠点はファイルにTABを多用していると見づらくなる点です。カラー端末かGUI -環境で使っているのであれば、空白とTABをハイライト表示にしてこの欠点を避ける -ことができます。この場合、'listchar'オプションを使います。 > +Tab 文字が ^I と表示されます。行末には $ と表示され、通常なら気付かないよう +な、行末の空白もよくわかるようになります。 +これの欠点はファイルに Tab 文字がたくさんあると見づらくなる点です。カラー端末 +か GUI を使っている場合は、空白と Tab 文字を別の文字に置き換えて強調表示するこ +とができます。'listchar' オプションを使ってください: > :set listchars=tab:>-,trail:- -TABは全て">---"と表示され、末尾の空白は"-"と表示されます。この方がずっとイイ -と思いませんか? +Tab 文字は全て ">---" と表示され、行末の空白は "-" と表示されます。この方が +ずっとイイと思いませんか? キーワード ---------- -'iskeyword'オプションは単語に使える文字を定義します。 -まず、現在の設定状供を見てみましょう。 > +'iskeyword' オプションは単語に使える文字を定義しています: > - :set iskeyword -< iskeyword=@,48-57,_,192-255 ~ + :set iskeyword +< iskeyword=@,48-57,_,192-255 ~ -"@"はアルファベットのことです。"48-57"はASCIIコード48〜57のことで、これは数 -字の"0"〜"9"です。また"192-255"はLatin-1に定義された文字(ヨーロッパの各言語 -で用いる特殊文字)です。 -例えば、"upper-case"を1つの単語と扱って欲しい場合、"-"をキーワードに追加し -ておきます。これは次のようにします。 > +"@" は「すべてのアルファベット」を表しています。"48-57" は ASCII コード の 48 +から 57 までの文字、つまり "0" から "9" までの数字を表しています。"192-255" は +印字可能なラテン文字です。 +例えば、"upper-case" を1つの単語と扱って欲しい場合は、"-" をキーワードに追加 +します。次のように設定してください: > - :set iskeyword+=- - :set iskeyword -< iskeyword=@,48-57,_,192-255,- ~ + :set iskeyword+=- + :set iskeyword +< iskeyword=@,48-57,_,192-255,- ~ -新しい値を見ると、"-"の直前に","を自動追加したのがわかります。 -逆にキーワードから削除するには "-="を使います。アンダースコアを削除するには -次のようにします。 > +新しい設定をみると、"-" の直前に "," が自動的に追加されています。 +キーワードから文字を削除するには "-=" を使います。アンダースコアを削除するには +次のようにします: > - :set iskeyword-=_ - :set iskeyword -< iskeyword=@,48-57,192-255,- ~ + :set iskeyword-=_ + :set iskeyword +< iskeyword=@,48-57,192-255,- ~ -この場合も"_"を削除する時に","が自動的に削除されています。 +"_" を削除すると "," も自動的に削除されました。 メッセージ行 ------------ -vimを起動した時、最終行はメッセージ用に使われます。 -メッセージが長い場合は、切り捨てるか、<Enter>を押した時にスクロールするかで -す。切り捨てた時は一部しか見ることができなくなります。'cmdheight'オプション -でメッセージ用に使う行数を指定できます。 > +初期設定では、最下段の一行がメッセージの表示に使われます。メッセージが長いとき +は、メッセージを切り詰めて一部だけ表示するか、メッセージをスクロールして表示 +し、最後に <Enter> を押してもらうかのどちらかです。 +メッセージの表示に使う行数は 'cmdheight' オプションで設定できます: > - :set cmdheight=3 + :set cmdheight=3 -これは編集用領域を減らすわけですから、むやみに増やせばいいというわけではあり -ません。 +編集画面が狭くなってしまうので、ほどほどの値を設定してください。 ============================================================================== -Next chapter: |usr_06.txt| シンタックスハイライトの使用 +次章: |usr_06.txt| 構文強調表示 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_06.jax b/ja/usr_06.jax index edbc1e8aa..51bb5eeda 100644 --- a/ja/usr_06.jax +++ b/ja/usr_06.jax @@ -1,287 +1,278 @@ COMMENT: 構文強調(テキストの色つけ)の使用法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_06.txt* For Vim version 6.3. Last change: 2002 Jul 14 +*usr_06.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - シンタックスハイライトの使い方 + 構文強調表示 -白黒だけのテキストは退屈です。カラーがあれば、ファイルも生き生きと見えます。 -これは単に見た目が良いだけではなく、作業のスピードアップにもなります。意味 -の違った文字列では色を変えましょう。そしてプリンタにも画面上と同じ色で印刷し -ましょう。 +白黒だけのテキストは退屈です。カラー表示すれば、ファイルも生き生きと見えます。 +これは単に見た目が良いだけではなく、作業のスピードアップにもつながります。意味 +のある文字列は違う色で表示しましょう。そして、画面と同じ色で印刷しましょう。 -|06.1| シンタックスハイライトを使おう +|06.1| 構文強調表示を有効にする |06.2| 色がつかない?変な色になる? -|06.3| 違った色 +|06.3| 色を変える |06.4| カラーを使う?使わない? |06.5| カラー印刷 -|06.6| さらに +|06.6| 詳しい情報 - Next chapter: |usr_07.txt| 2つ以上のファイルを扱う - Previous chapter: |usr_05.txt| 自分用の設定 -Table of contents: |usr_toc.txt| +次章: |usr_07.txt| 複数のファイルを開く +前章: |usr_05.txt| 設定の変更 +目次: |usr_toc.txt| ============================================================================== -*06.1* シンタックスハイライトを使おう +*06.1* 構文強調表示を有効にする 次の簡単なコマンドで全てが始まります。 > :syntax enable -たいていの場合はこれを実行すると、あなたが編集しているファイルに合った色情報 -が得られます。 -vimはファイルタイプを元に適切と思われるシンタックスハイライト定義を読み込み -ます。結果、コメントは青、キーワードは茶色、文字列は赤、といった具合にカラー -表示になります。 -これだと、ファイルをざっと見るのがになります。しばらくそれを使ってから、白黒 -に戻ると同じことをするのにも時間がかかることでしょう。 +これで、カラー表示になるはずです。ファイルタイプが自動的に特定され、適切な構文 +強調がロードされます。すると、コメントは青、キーワードは茶色、文字列は赤、と +いった具合にカラー表示になります。ファイルが見やすくなりましたね。しばらくする +と、白黒のテキストがあなたを遅くしていたことに気づくでしょう。 -いつもシンタックスハイライトを使うのであれば、":syntax enable"というコマンドを -|vimrc|ファイルに追加しておきます。 +常に構文強調表示を使いたい場合は、":syntax enable" コマンドを|vimrc|ファイルに +追加してください。 -カラー端末の時だけ使いたいのであれば、次のコマンドを|vimrc|ファイルに追加し -てください。 > +カラー端末のときだけ使いたい場合は、次のコマンドを|vimrc|ファイルに追加してく +ださい。 > if &t_Co > 1 syntax enable endif -GUIバージョンの時だけでよければ、":syntax enable"を |gvimrc| ファイルに追加し -てください。 +GUI バージョンのときだけ使いたい場合は、":syntax enable" を |gvimrc| ファイル +に追加してください。 ============================================================================== *06.2* 色が付かない?変になる? -カラー表示がうまくいかない場合、いろいろな理由が考えられます。 +カラー表示がうまくいかない理由はいろいろあります: - カラー端末じゃない。 - vimは、太字やイタリック、下線も使えます。でもそれだけではあまりカッコ + Vim は、太字やイタリック、下線も使えます。でもそれだけではあまりカッコ 良くはできません。カラー対応の端末を入手するのがいいでしょう。 Unixなら、XFree86プロジェクト(|xfee-xterm|)のxtermがお勧めです。 -- カラー端末であることをvimが解っていない。 - $TERMの設定が正しいかどうかを確認します。例えば、カラー対応のxtermを - 使っているのであれば、 > +- カラー端末であることを Vim が認識できない + $TERM の設定が正しいかどうかを確認してください。例えば、カラー対応の + xterm なら次のように設定します: > setenv TERM xterm-color < - もしくは(シェルによっては) > + シェルによってはこうかもしれません: > TERM=xterm-color; export TERM -< のようにします。 - 端末名と実際に使っている端末名は同じでないといけません。それを合せて - もうまく動かないのなら、|xterm-color|をご覧ください。この文書にはvim - の表示をカラー化する方法が書いてあります。(別にxtermに限った文書では - ありません) +< 端末名と実際に使っている端末名は同じでないといけません。それでも + うまく動かない場合は、|xterm-color|を参照してください。この文書には + Vim をカラー表示にする方法がいくつか書いてあります。(xtermに限った文書 + ではありません) - ファイルタイプが識別できなかった。 - いくらvimでも古今東西のファイルタイプを知っているわけではありません。 - ファイルが使っている言語を伝えるのが難しい場合もあります。このコマン - ドを使ってみてください。 > + いくら Vim でも古今東西のファイルタイプを知っているわけではありませ + ん。ファイルが使っている言語を伝えるのが難しい場合もあります。このコマ + ンドを使ってみてください。 > :set filetype < - この結果が"filetype="ならば、vimはそのファイルのタイプが理解できなか - ったということです。ファイルタイプの指定は手動でもできます。 > + この結果が"filetype="ならば、ファイルタイプが認識できなかったというこ + とです。ファイルタイプの指定は手動でもできます。 > :set filetype=fortran < どんなタイプが使えるかは、$VIMRUNTIME/syntax のディレクトリを見て - ください。GUI版であれば、[シンタックス]メニューも使えます。 + ください。GUI なら、[シンタックス]メニューも使えます。 ファイルタイプの設定はモード行(|modeline|)でも出来ます。モード行で - 指定すればそのファイルを編集する時には必ずハイライト表示になります。 - 例えば、Makefileならば次の行が使えます。(ファイルの先頭行か最終行に - 置きます) -> + 指定すればそのファイルを開くと必ずカラー表示になります。例えば、 + Makefileならば次の行が使えます。(ファイルの最初か最後に近い場所に書い + てください): > + # vim: syntax=make -< - vimによるファイルタイプの自動検出には通常はファイル名の拡張子("."以 - 降の部分)をよく使います。 - ファイルタイプを検出してvimに通知する方法については|new-filetype|を - ご覧ください。 -- そのファイルタイプ用のシンタックス定義がない - 似たファイルタイプの設定を、上の手順で使ってみることができます。それ - でも不満な場合は、独自のシンタックス定義を書くこともできます。詳しく - は|mysyntaxfile|をご覧ください。 +< あなたはファイルタイプの判定方法を知っているかもしれませんね。ほとんど + のファイルは拡張子を見ればファイルタイプがわかります。 + ファイルタイプを検出して Vim に通知する方法については|new-filetype|を + 参照してください。 +- そのファイルタイプ用の構文定義がない + 似ているファイルタイプを手動で設定して使ってみてください。それでも不満 + な場合は、自分で構文定義ファイルを書くこともできます。詳しくは + |mysyntaxfile|を参照してください。 -色がおかしくなることもあるかも知れません。 + +色がおかしくなる場合もあります: - 色付きの文字が非常に読みづらい - vimは現在の背景色を推測し、それが黒(もしくは同様の暗色)だと思えば、 - 文字にはそれより明るい色を用います。逆に背景色が白(もしくは同様の - 明るい色)だと思えば、文字はそれより暗い色にします。vimの予想がはず - れた場合、文字が読みづらくなる可能性があります。これは'background' - オプションを設定することで解決できます。暗い背景色であれば、 > + Vim は使われている背景色を推測します。黒 (もしくは同様の暗色) なら、明 + るい色で文字を表示します。白 (もしくは同様の明るい色) なら、暗い色で文 + 字を表示します。Vim の予想がはずれると、文字は読みづらくなります。 + これは 'background' オプションを設定することで解決できます。暗い背景色 + を使っている場合は、次のように設定してください: > :set background=dark -< とし、明るいバックグラウンドであれば、 > +< 明るい背景色なら次のように設定してください: > :set background=light -< とします。 - このコマンドは":syntax enable"より*前*に置く必要がありますので注意 - してください。逆にすると、色は既に確定してしまっています。 - 'background'の指定の後に":syntax reset"を行うと、デフォルトの色に戻 - すことができます。 - -- 末尾から先頭に向ってスクロールした時の色が間違っている - vimは文脈解析の時にファイル全体を読み込むわけではありません。解析は - 画面上で見えている範囲に対して行います。これだと時間は大巾に節約でき - るのですが、時には色を間違ってしまいます。これには CTRL-L を打つか、 - ちょっとだけ逆スクロールとスクロールをさせることでば簡単に直せます。 - 完全な表示をさせるには、|:syn-sync|をご覧ください。一部のシンタック - ス定義ファイルでは、正確な表示を行うために、ずっと後ろの方まで戻って - 解析をしています。詳しくは個々のシンタックス定義ファイルのヘルプをご - 覧ください。例えば、TeX用の定義ファイル|tex.vim|がそれを行っています。 +< このコマンドは ":syntax enable" より *前* に実行してください。色が設 + 定された後では意味がありません。後から 'background' を設定した場合は、 + ":syntax reset" を実行すると、標準色に戻すことができます。 + +- 上に向ってスクロールしたときに色が間違っている + 構文解析は、ファイル全体を読んでるわけではありません。画面に表示されて + いるところから、解析は始まります。これだと時間を大幅に節約できるのです + が、時には色を間違ってしまいます。直すには単に CTRL-L を押してくださ + い。あるいは、少し多めに上スクロールしてから戻ると直ります。 + 根本的に解決するには、|:syn-sync|を参照してください。一部の構文ファイ + ルは、ずっと上の方まで戻って解析をしています。詳しくは個々の構文定義 + ファイルのヘルプを参照してください。例えば、TeX 用の定義ファイル + |tex.vim|がそれを行っています。 ============================================================================== -*06.3* 違った色を使う *:syn-default-override* +*06.3* 色を変える *:syn-default-override* -デフォルトの色が好みでなければ、他の色テーマを使うことができます。GUI版 -なら[編集]-[色テーマ]メニューが使えます。コマンドを入力することもできます。 > +標準色が好みでなければ、他の色テーマを使うことができます。GUI ならメニューの +[編集]-[色テーマ] が使えます。コマンドで指定することもできます: > :colorscheme evening -"evening"というのは色テーマの名前です。他にも試していただきたいテーマを用意 -しています。ディレクトリ $VIMRUNTIME/colors をご覧ください。 +"evening" というのは色テーマの名前です。色テーマは他にもたくさんあります。ディ +レクトリ $VIMRUNTIME/colors をご覧ください。 -好みの色テーマを見つけたら、":colorscheme"コマンドで|vimrc|ファイルに追加で -きます。 +好みの色テーマを見つけたら、":colorscheme" コマンドを|vimrc|ファイルに追加して +ください。 自分で色テーマを作ることもできます。その手順は次の通りです。 -1. 作りたいテーマに近い色テーマを選び、それを自分用のvimディレクトリにコピー - します。Unixなら、このようにします。 > +1. 作りたいテーマに近い色テーマを選び、それを自分の Vim ディレクトリにコピーし + ます。Unix なら次のとおりです: > !mkdir ~/.vim/colors !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim < - vim自身が$VIMRUNTIMEの値を知っていますので、上のコマンドはvim中で行います。 + $VIMRUNTIME は Vim が設定する環境変数なので、このコマンドは Vim から実行し + てください。 -2. 色テーマファイルを編集します。よく使う項目を掲げておきます。 +2. 色テーマファイルを編集します。この一覧が役に立つでしょう: - term 白黒端末の属性 - cterm カラー端末の属性 - ctermfg カラー端末の文字色 - ctermbg カラー端末の背景色 - gui GUI版での属性 - guifg GUI版での文字色 - guibg GUI版での背景色 + term 白黒端末での属性 + cterm カラー端末での属性 + ctermfg カラー端末での文字色 + ctermbg カラー端末での背景色 + gui GUI での属性 + guifg GUI での文字色 + guibg GUI での背景色 例えば、コメントを緑にするにはこのようにします。 > :highlight Comment ctermfg=green guifg=green < - "cterm"と"gui"の属性には、"bold"と"underline"が指定できます。両方を指定し - たい場合は、"bold,underline"のように指停します。詳しくは|:highlight|をご - 覧ください。 + "cterm"と"gui"の属性には、"bold"と"underline"が指定できます。両方を指定した + い場合は、"bold,underline"のように指定します。詳しくは|:highlight|を参照し + てください。 -3. 作った色テーマを使うようにvimに指定します。この行を|vimrc|に追加します。 > +3. 作った色テーマが使われるように設定します。この行を|vimrc|に追加してくださ + い: > colorscheme mine -一番よく使っている色の組み合せがどのように見えるか知りたければ、このコマンド -を使います。 > +次のコマンドで、よく使われる色の組み合わせの見栄えを確認できます: > - :edit $VIMRUNTIME/syntax/colortest.vim - :source % + :runtime syntax/colortest.vim -このファイルはいろんな色の組み合せを表示します。その中でどれが読み易くて見た -目が良いかをチェックしてください。 +いろんな色の組み合せが表示されます。どれが読みやすくて見た目が良いかチェックし +てください。 ============================================================================== -*06.4* カラーか白黒か +*06.4* カラーを使う?使わない? -文章をカラー表示することには大きな効果があります。でも、表示が遅すぎる時など -ハイライト表示を一時的に止めたいこともあるでしょう。 > +テキストをカラーで表示するには、たくさんの計算が必要です。表示が遅すぎると感じ +たときは、構文強調表示を一時的に止めてみてください: > :syntax clear -他のファイル(又は同じファイル)を再編集すると、元の色に戻ります。 +他のファイル (又は同じファイル) を開くと、再びカラー表示されます。 *:syn-off* -ハイライト表示を完全に止めたい場合は、このようにします。 > +構文強調表示を完全に無効にするには、このようにします: > :syntax off -これで完全にハイライト表示を無効とし、全バッファのハイライト表示を除去します。 +これで、構文強調表示が無効になり、すべてのバッファが白黒表示になります。 *:syn-manual* -特定のファイルに対してだけハイライト表示にする場合はこのようにします。 > +特定のファイルだけ構文強調表示するには、このようにします: > :syntax manual -これはハイライト表示を有効にしますが、編集を始める時に自動的にはハイライト表 -示にはなりません。現在のバッファをハイライト表示に切り換るには、このように -'syntax'オプションを設定します。 > +構文強調表示は有効になりますが、ファイルを開いても、自動的にはカラー表示になり +ません。'syntax' オプションを設定すると、カレントバッファがカラー表示になりま +す: > :set syntax=ON < ============================================================================== *06.5* カラー印刷 *syntax-printing* -MS-Windowsバージョンでは、編集中のファイルをこのコマンドで印刷できます。 > +MS-Windows では、次のコマンドでファイルを印刷できます: > :hardcopy -するといつもの印刷ダイアログが表示され、プリンタを選んだり、いくつかの設定 -を行ったりできます。カラープリンタがあれば、出力結果はvim上での表示と同じに -なるはずです。但し、背景色を暗い色にしている場合は、白い紙で丁度良く見える -ような色に変更されます。 +通常の印刷ダイアログが表示されるので、プリンタを選択し、設定してください。カ +ラープリンタを使っている場合は、画面に表示されているのと同じように印刷されま +す。ただし、背景色を暗い色にしている場合は、白い紙に適した色に変更されます。 -vimでの印刷方法を変更するために、いくつかのオプションがあります。 +印刷方法を変更するには、以下のオプションを設定してください: 'printdevice' 'printheader' 'printfont' 'printoptions' -一部の行範囲だけを印刷するには、visualモードでその範囲を選択して、このコマ -ンドを入力します。 > +一部の範囲だけ印刷するには、ビジュアルモードで印刷したい範囲を選択し、印刷コマ +ンドを実行してください: > v100j:hardcopy -"v"でvisualモードを開始し、"100j"で100行下まで移動します。この時その100行 -が反転表示になります。次の":hardcopy"でその範囲を印刷します。もちろん、visual -モードの時に他のコマンドを使って移動することもできます。 +"v" でビジュアルモードを開始して、"100j" で 100 行下まで移動すると、その範囲が +選択されます。":hardcopy" で選択範囲が印刷されます。もちろん、ビジュアルモード +では他のコマンドを使って移動することもできます。 -もしPostScriptプリンタがあれば、Unixでも同じようにできます。そうでなければ、 -多少の手間をかけなければなりません。まず文章をHTMLに変換し、次にそのHTMLを -Netscapeなどのブラウザで印刷するのです。 +PostScript プリンタを使っている場合は、Unix でも同様に印刷できます。PostScript +を印刷できない場合は、多少の手間がかかります。テキストを HTML に変換してから、 +Netscape などの Web ブラウザで印刷してください。 -現在のファイルをHTMLに変換するにはこのコマンドを使います。 > +現在のファイルを HTML に変換するにはこのコマンドを使います: > :source $VIMRUNTIME/syntax/2html.vim -もしかしたらクラッシュしたかと勘違いしてしまうかもしれませんが、特に巨大なファ -イルではかなりの時間がかかる場合があります。しばらくすると別ウィンドウにHTML -コードが表示されます。これをどこかに保存しましょう。(保存場所は気にしないでお -きましょう。印刷した後で捨てるだけのファイルですから) +カリカリと音を立て処理が開始します。巨大なファイルの変換にはしばらく時間がかか +ります。しばらくすると別ウィンドウに HTMLコードが表示されるので、どこかに保存 +してください (後で削除するファイルなので、適当な場所に保存してください): > :write main.c.html -このファイルをお好みのブラウザで開いて印刷してください。うまくいけば、vimの -画面での表示と全く同じものが印刷されます。詳しくは|2html.vim|をご覧ください。 -全てが終わったら、HTMLファイルは削除してしまいましょう。 +このファイルをお好みのブラウザで開いて印刷してください。うまくいけば、Vim の画 +面での表示と全く同じものが印刷されます。詳しくは|2html.vim|を参照してくださ +い。全てが終わったら、HTMLファイルは削除してしまいましょう。 -印刷の代りにそのHTMLファイルをwebサーバ上に置いて、他の人にカラー付きの文書 -として提供することもできます。 +印刷する代りに、HTML ファイルを Web サーバに置いて、他の人にカラー付きの文書と +して提供することもできます。 ============================================================================== -*06.6* さらに詳しい情報は +*06.6* 詳しい情報 -|usr_44.txt| 独自のシンタックスハイライト +|usr_44.txt| 構文定義の自作 |syntax| 全ての詳細 ============================================================================== -Next chapter: |usr_07.txt| 2つ以上のファイルを扱う +次章: |usr_07.txt| 複数のファイルを開く Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: From d85b32edb43d9a774be4f8b67b88e9a3b7ea7137 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 19 Aug 2006 17:12:25 +0000 Subject: [PATCH 035/783] fix: update gui to 6.3 update if_cscop to 6.3 update index to 6.3 update insert to 6.3 update mbyte to 6.3 update mlang to 6.3 update motion to 6.3 update quickfix to 6.3 update remote to 6.3 update syntax to 6.3 update usr_90 to 6.3 update intro to 7.0 update map to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@35 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/intro.txt | 69 +- en/map.txt | 652 ++++++++++++----- ja/gui.jax | 14 +- ja/if_cscop.jax | 2 +- ja/index.jax | 1043 +++++++++++++++------------ ja/insert.jax | 14 +- ja/intro.jax | 940 +++++++++++++------------ ja/map.jax | 1781 +++++++++++++++++++++++++++++++---------------- ja/mbyte.jax | 1403 ++++++++++++++++++++++++++++++++++--- ja/mlang.jax | 3 +- ja/motion.jax | 39 +- ja/quickfix.jax | 4 +- ja/remote.jax | 4 +- ja/syntax.jax | 2 +- ja/usr_90.jax | 2 +- 15 files changed, 4083 insertions(+), 1889 deletions(-) diff --git a/en/intro.txt b/en/intro.txt index f554eeccd..0dcbeb7f3 100644 --- a/en/intro.txt +++ b/en/intro.txt @@ -1,4 +1,4 @@ -*intro.txt* For Vim version 6.3. Last change: 2004 May 01 +*intro.txt* For Vim version 7.0. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -75,7 +75,7 @@ Published by O'Reilly. ISBN: 1-56592-426-6. ============================================================================== 2. Vim on the internet *internet* - *www* *faq* *FAQ* *distribution* *download* + *www* *WWW* *faq* *FAQ* *distribution* *download* The Vim pages contain the most recent information about Vim. They also contain links to the most recent version of Vim. The FAQ is a list of Frequently Asked Questions. Read this if you have problems. @@ -94,13 +94,15 @@ mention that. There are several mailing lists for Vim: <vim@vim.org> For discussions about using existing versions of Vim: Useful mappings, - questions, answers, where to get a specific version, etc. + questions, answers, where to get a specific version, etc. There are + quite a few people watching this list and answering questions, also + for beginners. Don't hesitate to ask your question here. <vim-dev@vim.org> *vim-dev* *vimdev* For discussions about changing Vim: New features, porting, patches, beta-test versions, etc. <vim-announce@vim.org> *vim-announce* Announcements about new versions of Vim; also for beta-test versions - and ports to different systems. + and ports to different systems. This is a read-only list. <vim-multibyte@vim.org> *vim-multibyte* For discussions about using and improving the multi-byte aspects of Vim. @@ -151,31 +153,19 @@ example and try to find out which settings or other things influence the appearance of the bug. Try different machines, if possible. Send me patches if you can! -In case of doubt, use: > +It will help to include information about the version of Vim you are using and +your setup. You can get the information with this command: > :so $VIMRUNTIME/bugreport.vim This will create a file "bugreport.txt" in the current directory, with a lot of information of your environment. Before sending this out, check if it doesn't contain any confidential information! - *debug-vim* -When Vim crashes in one of the test files, and you are using gcc for -compilation, here is what you can do to find out exactly where Vim crashes: +If Vim crashes, please try to find out where. You can find help on this here: +|debug.txt|. -1. Compile Vim with the "-g" option (there is a line in the Makefile for this, - which you can uncomment). - -2. Execute these commands (replace "11" with the test that fails): > - cd testdir - gdb ../vim - run -u unix.vim -U NONE -s dotest.in test11.in - -3. Check where Vim crashes, gdb should give a message for this. - -4. Get a stack trace from gdb with this command: > - where -< You can check out different places in the stack trace with: > - frame 3 -< Replace "3" with one of the numbers in the stack trace. +In case of doubt or when you wonder if the problem has already been fixed but +you can't find a fix for it, become a member of the vim-dev maillist and ask +your question there. |maillist| *year-2000* *Y2K* Since Vim internally doesn't use dates for editing, there is no year 2000 @@ -198,7 +188,7 @@ The user may create scripts for Vim that use external commands. These might introduce Y2K problems, but those are not really part of Vim itself. ============================================================================== -3. Credits *credits* *author* +3. Credits *credits* *author* *Bram* *Moolenaar* Most of Vim was written by Bram Moolenaar <Bram@vim.org>. @@ -226,12 +216,14 @@ Vim would never have become what it is now, without the help of these people! Kayhan Demirel sent me news in Uganda Chris & John Downey xvi (ideas for multi-windows version) Henk Elbers first VMS port + Daniel Elstner GTK+ 2 port Eric Fischer Mac port, 'cindent', and other improvements Benji Fisher Answering lots of user questions Bill Foster Athena GUI port Loic Grenie xvim (ideas for multi windows version) Sven Guckes Vim promotor and previous WWW page maintainer Darren Hiebert Exuberant ctags + Jason Hildebrand GTK+ 2 port Bruce Hunsaker improvements for VMS port Andy Kahn Cscope support, GTK+ GUI port Oezguer Kesim Maintainer of Vim Mailing Lists @@ -276,7 +268,7 @@ the ideas from all these people: They keep Vim alive! In this documentation there are several references to other versions of Vi: - *Vi* + *Vi* *vi* Vi "the original". Without further remarks this is the version of Vi that appeared in Sun OS 4.x. ":version" returns "Version 3.7, 6/7/85". Sometimes other versions are referred @@ -287,8 +279,7 @@ Vi "the original". Without further remarks this is the version Posix From the IEEE standard 1003.2, Part 2: Shell and utilities. Generally known as "Posix". This is a textual description of how Vi is supposed to work. - The version used is a draft from beginning 1996, so all remarks are - "expected to comply to" this. Anything can change though... + See |posix-compliance|. *Nvi* Nvi The "New" Vi. The version of Vi that comes with BSD 4.4 and FreeBSD. Very good compatibility with the original Vi, with a few extensions. @@ -329,11 +320,11 @@ and <> are part of what you type, the context should make this clear. ["x] An optional register designation where text can be stored. See |registers|. The x is a single character between 'a' and 'z' or 'A' and 'Z' or '"', and in some cases (with the put - command) between '0' and '9', '%', '#', or others. The + command) between '0' and '9', '%', '#', or others. The uppercase and lowercase letter designate the same register, but the lowercase letter is used to overwrite the previous register contents, while the uppercase letter is used to - append to the previous register contents. Without the ""x" or + append to the previous register contents. Without the ""x" or with """" the stored text is put into the unnamed register. *{}* @@ -348,7 +339,7 @@ and <> are part of what you type, the context should make this clear. concatenated. For example, {a-zA-Z0-9} is any alphanumeric character. - *{motion}* + *{motion}* *movement* {motion} A command that moves the cursor. These are explained in |motion.txt|. Examples: w to start of next word @@ -357,7 +348,7 @@ and <> are part of what you type, the context should make this clear. /The<CR> to next occurrence of "The" This is used after an |operator| command to move over the text that is to be operated upon. - - If the motion includes a count and the operator also had a + - If the motion includes a count and the operator also has a count, the two counts are multiplied. For example: "2d3w" deletes six words. - The motion can be backwards, e.g. "db" to delete to the @@ -373,7 +364,7 @@ and <> are part of what you type, the context should make this clear. include the last character of a line without the line break (unless 'virtualedit' is set). If the Ex command changes the text before where the operator - start or jumps to another buffer the result is + starts or jumps to another buffer the result is unpredictable. It is possible to change the text further down. Jumping to another buffer is possible if the current buffer is not unloaded. @@ -486,10 +477,10 @@ values have the same effect. Also see |:fixdel|. Note: The keypad keys are used in the same way as the corresponding "normal" keys. For example, <kHome> has the same effect as <Home>. If a keypad key -sends the same raw key code as it non-keypad equivalent, it will be recognized -as the non-keypad code. For example, when <kHome> sends the same code as -<Home>, when pressing <kHome> Vim will think <Home> was pressed. Mapping -<kHome> will not work then. +sends the same raw key code as its non-keypad equivalent, it will be +recognized as the non-keypad code. For example, when <kHome> sends the same +code as <Home>, when pressing <kHome> Vim will think <Home> was pressed. +Mapping <kHome> will not work then. *<>* Examples are often given in the <> notation. Sometimes this is just to make @@ -689,9 +680,9 @@ Q Switch to "Ex" mode. This is a bit like typing ":" |vimrc_example.vim| script "Q" works like "gq". *gQ* -gQ Switch to "Ex" mode, but really behave like typing ":" - commands after another. All command line editing, - completion etc. is available. +gQ Switch to "Ex" mode like with "Q", but really behave + like typing ":" commands after another. All command + line editing, completion etc. is available. Use the ":vi" command |:visual| to exit "Ex" mode. {not in Vi} diff --git a/en/map.txt b/en/map.txt index 268b47c4f..62515cc61 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 6.3. Last change: 2004 May 21 +*map.txt* For Vim version 7.0. Last change: 2006 May 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -10,6 +10,17 @@ This subject is introduced in sections |05.3|, |24.7| and |40.1| of the user manual. 1. Key mapping |key-mapping| + 1.1 MAP COMMANDS |:map-commands| + 1.2 Special arguments |:map-arguments| + 1.3 Mapping and modes |:map-modes| + 1.4 Listing mappings |map-listing| + 1.5 Mapping special keys |:map-special-keys| + 1.6 Special characters |:map-special-chars| + 1.7 What keys to map |map-which-keys| + 1.8 Examples |map-examples| + 1.9 Using mappings |map-typing| + 1.10 Mapping alt-keys |:map-alt-keys| + 1.11 Mapping an operator |:map-operator| 2. Abbreviations |abbreviations| 3. Local mappings and functions |script-local| 4. User-defined commands |user-commands| @@ -22,7 +33,10 @@ is to define a sequence commands for a function key. Example: > :map <F2> a<C-R>=strftime("%c")<CR><Esc> -This appends the current date and time after the cursor. (in <> notation |<>|) +This appends the current date and time after the cursor (in <> notation |<>|). + + +1.1 MAP COMMANDS *:map-commands* There are commands to enter new mappings, remove mappings and list mappings. See |map-overview| for the various forms of "map" and their relationships with @@ -31,42 +45,48 @@ modes. {lhs} means left-hand-side *{lhs}* {rhs} means right-hand-side *{rhs}* -:map {lhs} {rhs} *:map* -:nm[ap] {lhs} {rhs} *:nm* *:nmap* -:vm[ap] {lhs} {rhs} *:vm* *:vmap* -:om[ap] {lhs} {rhs} *:om* *:omap* -:map! {lhs} {rhs} *:map!* -:im[ap] {lhs} {rhs} *:im* *:imap* -:lm[ap] {lhs} {rhs} *:lm* *:lmap* -:cm[ap] {lhs} {rhs} *:cm* *:cmap* +:map {lhs} {rhs} |mapmode-nvo| *:map* +:nm[ap] {lhs} {rhs} |mapmode-n| *:nm* *:nmap* +:vm[ap] {lhs} {rhs} |mapmode-v| *:vm* *:vmap* +:xm[ap] {lhs} {rhs} |mapmode-x| *:xm* *:xmap* +:smap {lhs} {rhs} |mapmode-s| *:smap* +:om[ap] {lhs} {rhs} |mapmode-o| *:om* *:omap* +:map! {lhs} {rhs} |mapmode-ic| *:map!* +:im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap* +:lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lmap* +:cm[ap] {lhs} {rhs} |mapmode-c| *:cm* *:cmap* Map the key sequence {lhs} to {rhs} for the modes where the map command applies. The result, including {rhs}, is then further scanned for mappings. This allows for nested and recursive use of mappings. -:no[remap] {lhs} {rhs} *:no* *:noremap* -:nn[oremap] {lhs} {rhs} *:nn* *:nnoremap* -:vn[oremap] {lhs} {rhs} *:vn* *:vnoremap* -:ono[remap] {lhs} {rhs} *:ono* *:onoremap* -:no[remap]! {lhs} {rhs} *:no!* *:noremap!* -:ino[remap] {lhs} {rhs} *:ino* *:inoremap* -:ln[oremap] {lhs} {rhs} *:ln* *:lnoremap* -:cno[remap] {lhs} {rhs} *:cno* *:cnoremap* +:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap* +:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap* +:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap* +:xn[oremap] {lhs} {rhs} |mapmode-x| *:xn* *:xnoremap* +:snor[emap] {lhs} {rhs} |mapmode-s| *:snor* *:snoremap* +:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap* +:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!* +:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap* +:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap* +:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap* Map the key sequence {lhs} to {rhs} for the modes where the map command applies. Disallow mapping of {rhs}, to avoid nested and recursive mappings. Often used to redefine a command. {not in Vi} -:unm[ap] {lhs} *:unm* *:unmap* -:nun[map] {lhs} *:nun* *:nunmap* -:vu[nmap] {lhs} *:vu* *:vunmap* -:ou[nmap] {lhs} *:ou* *:ounmap* -:unm[ap]! {lhs} *:unm!* *:unmap!* -:iu[nmap] {lhs} *:iu* *:iunmap* -:lu[nmap] {lhs} *:lu* *:lunmap* -:cu[nmap] {lhs} *:cu* *:cunmap* +:unm[ap] {lhs} |mapmode-nvo| *:unm* *:unmap* +:nun[map] {lhs} |mapmode-n| *:nun* *:nunmap* +:vu[nmap] {lhs} |mapmode-v| *:vu* *:vunmap* +:xu[nmap] {lhs} |mapmode-x| *:xu* *:xunmap* +:sunm[ap] {lhs} |mapmode-s| *:sunm* *:sunmap* +:ou[nmap] {lhs} |mapmode-o| *:ou* *:ounmap* +:unm[ap]! {lhs} |mapmode-ic| *:unm!* *:unmap!* +:iu[nmap] {lhs} |mapmode-i| *:iu* *:iunmap* +:lu[nmap] {lhs} |mapmode-l| *:lu* *:lunmap* +:cu[nmap] {lhs} |mapmode-c| *:cu* *:cunmap* Remove the mapping of {lhs} for the modes where the map command applies. The mapping may remain defined for other modes where it applies. @@ -75,38 +95,44 @@ modes. :map @@ foo :unmap @@ | print -:mapc[lear] *:mapc* *:mapclear* -:nmapc[lear] *:nmapc* *:nmapclear* -:vmapc[lear] *:vmapc* *:vmapclear* -:omapc[lear] *:omapc* *:omapclear* -:mapc[lear]! *:mapc!* *:mapclear!* -:imapc[lear] *:imapc* *:imapclear* -:lmapc[lear] *:lmapc* *:lmapclear* -:cmapc[lear] *:cmapc* *:cmapclear* +:mapc[lear] |mapmode-nvo| *:mapc* *:mapclear* +:nmapc[lear] |mapmode-n| *:nmapc* *:nmapclear* +:vmapc[lear] |mapmode-v| *:vmapc* *:vmapclear* +:xmapc[lear] |mapmode-x| *:xmapc* *:xmapclear* +:smapc[lear] |mapmode-s| *:smapc* *:smapclear* +:omapc[lear] |mapmode-o| *:omapc* *:omapclear* +:mapc[lear]! |mapmode-ic| *:mapc!* *:mapclear!* +:imapc[lear] |mapmode-i| *:imapc* *:imapclear* +:lmapc[lear] |mapmode-l| *:lmapc* *:lmapclear* +:cmapc[lear] |mapmode-c| *:cmapc* *:cmapclear* Remove ALL mappings for the modes where the map command applies. {not in Vi} Warning: This also removes the default mappings. -:map -:nm[ap] -:vm[ap] -:om[ap] -:map! -:im[ap] -:lm[ap] -:cm[ap] +:map |mapmode-nvo| +:nm[ap] |mapmode-n| +:vm[ap] |mapmode-v| +:xm[ap] |mapmode-x| +:sm[ap] |mapmode-s| +:om[ap] |mapmode-o| +:map! |mapmode-ic| +:im[ap] |mapmode-i| +:lm[ap] |mapmode-l| +:cm[ap] |mapmode-c| List all key mappings for the modes where the map command applies. Note that ":map" and ":map!" are used most often, because they include the other modes. -:map {lhs} *:map_l* -:nm[ap] {lhs} *:nmap_l* -:vm[ap] {lhs} *:vmap_l* -:om[ap] {lhs} *:omap_l* -:map! {lhs} *:map_l!* -:im[ap] {lhs} *:imap_l* -:lm[ap] {lhs} *:lmap_l* -:cm[ap] {lhs} *:cmap_l* +:map {lhs} |mapmode-nvo| *:map_l* +:nm[ap] {lhs} |mapmode-n| *:nmap_l* +:vm[ap] {lhs} |mapmode-v| *:vmap_l* +:xm[ap] {lhs} |mapmode-x| *:xmap_l* +:sm[ap] {lhs} |mapmode-s| *:smap_l* +:om[ap] {lhs} |mapmode-o| *:omap_l* +:map! {lhs} |mapmode-ic| *:map_l!* +:im[ap] {lhs} |mapmode-i| *:imap_l* +:lm[ap] {lhs} |mapmode-l| *:lmap_l* +:cm[ap] {lhs} |mapmode-c| *:cmap_l* List the key mappings for the key sequences starting with {lhs} in the modes where the map command applies. {not in Vi} @@ -116,6 +142,25 @@ characters. You can use this to put command sequences under function keys, translate one key into another, etc. See |:mkexrc| for how to save and restore the current mappings. + *map-ambiguous* +When two mappings start with the same sequence of characters, they are +ambiguous. Example: > + :imap aa foo + :imap aaa bar +When Vim has read "aa", it will need to get another character to be able to +decide if "aa" or "aaa" should be mapped. This means that after typing "aa" +that mapping won't get expanded yet, Vim is waiting for another character. +If you type a space, then "foo" will get inserted, plus the space. If you +type "a", then "bar" will get inserted. +{Vi does not allow ambiguous mappings} + + +1.2 SPECIAL ARGUMENTS *:map-arguments* + +"<buffer>", "<silent>", "<special>", "<script>", "<expr>" and "<unique>" can +be used in any order. They must appear right after the command, before any +other arguments. + *:map-local* *:map-<buffer>* *E224* *E225* If the first argument to one of these commands is "<buffer>" it will apply to mappings locally to the current buffer only. Example: > @@ -141,6 +186,12 @@ Prompts will still be given, e.g., for inputdialog(). Using "<silent>" for an abbreviation is possible, but will cause redrawing of the command line to fail. + *:map-<special>* *:map-special* +Define a mapping with <> notation for special keys, even though the "<" flag +may appear in 'cpoptions'. This is useful if the side effect of setting +'cpoptions' is not desired. Example: > + :map <special> <F12> /Header<CR> +< *:map-<script>* *:map-script* If the first argument to one of these commands is "<script>" and it is used to define a new mapping or abbreviation, the mapping will only remap characters @@ -162,24 +213,66 @@ already exists which is equal. Example of what will fail: > :map ,w /[#&!]<CR> :map <buffer> <unique> ,w /[.,;]<CR> - -"<buffer>", "<silent>", "<script>" and "<unique>" can be used in any order. -They must appear right after the command, before any other arguments. - - -MAPPING AND MODES +If you want to map a key and then have it do what it was originally mapped to, +have a look at |maparg()|. + + *:map-<expr>* *:map-expression* +If the first argument to one of these commands is "<expr>" and it is used to +define a new mapping or abbreviation, the argument is an expression. The +expression is evaluated to obtain the {rhs} that is used. Example: > + :inoremap <expr> . InsertDot() +The result of the InsertDot() function will be inserted. It could check the +text before the cursor and start omni completion when some condition is met. + +Be very careful about side effects! The expression is evaluated while +obtaining characters, you may very well make the command dysfunctional. +For this reason the following is blocked: +- changing the buffer text |textlock| +- editing another buffer +- the |:normal| command +- moving the cursor is allowed, but it is restored afterwards +If you want the mapping to do any of these let the returned characters do +that. + +Here is an example that inserts a list number that increases: > + let counter = 0 + inoremap <expr> <C-L> ListItem() + inoremap <expr> <C-R> ListReset() + + func ListItem() + let g:counter += 1 + return g:counter . '. ' + endfunc + + func ListReset() + let g:counter = 0 + return '' + endfunc + +CTRL-L inserts the next number, CTRL-R resets the count. CTRL-R returns an +empty string, so that nothing is inserted. + +Note that there are some tricks to make special keys work and escape CSI bytes +in the text. The |:map| command also does this, thus you must avoid that it +is done twice. This does not work: > + :imap <expr> <F3> "<Char-0x611B>" +Because the <Char- sequence is escaped for being a |:imap| argument and then +again for using <expr>. This does work: > + :imap <expr> <F3> "\u611B" +Using 0x80 as a single byte before other text does not work, it will be seen +as a special key. + + +1.3 MAPPING AND MODES *:map-modes* There are five sets of mappings - For Normal mode: When typing commands. - For Visual mode: When typing commands while the Visual area is highlighted. - For Operator-pending mode: When an operator is pending (after "d", "y", "c", etc.). Example: ":omap { w" makes "y{" work like "yw" and "d{" like "dw". -- For Insert mode. These are also used in Replace mode. +- For Insert mode. These are also used in Replace mode. - For Command-line mode: When entering a ":" or "/" command. -There are no separate mappings for Select mode. The same as for Visual mode -are used |Select-mode-mapping|. - Special case: While typing a count for a command in Normal mode, mapping zero is disabled. This makes it possible to map zero without making it impossible to type a count with a zero. @@ -187,13 +280,30 @@ to type a count with a zero. *map-overview* *map-modes* Overview of which map command works in which mode: + *mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o* + commands: modes: ~ + Normal Visual+Select Operator-pending ~ +:map :noremap :unmap :mapclear yes yes yes +:nmap :nnoremap :nunmap :nmapclear yes - - +:vmap :vnoremap :vunmap :vmapclear - yes - +:omap :onoremap :ounmap :omapclear - - yes + +:nunmap can also be used outside of a monastery. + *mapmode-x* *mapmode-s* +Some commands work both in Visual and Select mode, some in only one. Note +that quite often "Visual" is mentioned where both Visual and Select mode +apply. |Select-mode-mapping| + commands: modes: ~ - Normal Visual Operator-pending ~ -:map :noremap :unmap :mapclear yes yes yes -:nmap :nnoremap :nunmap :nmapclear yes - - -:vmap :vnoremap :vunmap :vmapclear - yes - -:omap :onoremap :ounmap :omapclear - - yes + Visual Select ~ +:vmap :vnoremap :vunmap :vmapclear yes yes +:xmap :xnoremap :xunmap :xmapclear yes - +:smap :snoremap :sunmap :smapclear - yes + *mapmode-ic* *mapmode-i* *mapmode-c* *mapmode-l* +Some commands work both in Insert mode and Command-line mode, some not: + + commands: modes: ~ Insert Command-line Lang-Arg ~ :map! :noremap! :unmap! :mapclear! yes yes - :imap :inoremap :iunmap :imapclear yes - - @@ -232,25 +342,13 @@ command line (not a search pattern) the mappings are disabled until a CTRL-^ is typed. The state last used is remembered for Insert mode and Search patterns separately. The state for Insert mode is also used when typing a character as an argument to command like "f" or "t". - When adding a ":lmap" mapping the use of these mappings in Insert mode and -for Search patterns will be switched on. Language mappings will never be applied to already mapped characters. They are only used for typed characters. This assumes that the language mapping was already done when typing the mapping. - *map-multibyte* -It is possible to map multibyte characters, but only the whole character. You -cannot map the first byte only. This was done to prevent problems in this -scenario: > - :set encoding=latin1 - :imap <M-C> foo - :set encoding=utf-8 -The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3 -byte. If you type the character � (0xea <M-a>) in UTF-8 encoding this is the -two bytes 0xc3 0xa1. You don't want the 0xc3 byte to be mapped then, -otherwise it would be impossible to type the � character. - *map-listing* +1.4 LISTING MAPPINGS *map-listing* + When listing mappings the characters in the first two columns are: CHAR MODE ~ @@ -275,6 +373,58 @@ with a space. Note: When using mappings for Visual mode, you can use the "'<" mark, which is the start of the last selected Visual area in the current buffer |'<|. + *:map-verbose* +When 'verbose' is non-zero, listing a key map will also display where it was +last defined. Example: > + + :verbose map <C-W>* + n <C-W>* * <C-W><C-S>* + Last set from /home/abcd/.vimrc + +See |:verbose-cmd| for more information. + + +1.5 MAPPING SPECIAL KEYS *:map-special-keys* + +There are three ways to map a special key: +1. The Vi-compatible method: Map the key code. Often this is a sequence that + starts with <Esc>. To enter a mapping like this you type ":map " and then + you have to type CTRL-V before hitting the function key. Note that when + the key code for the key is in the termcap (the t_ options), it will + automatically be translated into the internal code and become the second + way of mapping (unless the 'k' flag is included in 'cpoptions'). +2. The second method is to use the internal code for the function key. To + enter such a mapping type CTRL-K and then hit the function key, or use + the form "#1", "#2", .. "#9", "#0", "<Up>", "<S-Down>", "<S-F7>", etc. + (see table of keys |key-notation|, all keys from <Up> can be used). The + first ten function keys can be defined in two ways: Just the number, like + "#2", and with "<F>", like "<F2>". Both stand for function key 2. "#0" + refers to function key 10, defined with option 't_f10', which may be + function key zero on some keyboards. The <> form cannot be used when + 'cpoptions' includes the '<' flag. +3. Use the termcap entry, with the form <t_xx>, where "xx" is the name of the + termcap entry. Any string entry can be used. For example: > + :map <t_F3> G +< Maps function key 13 to "G". This does not work if 'cpoptions' includes + the '<' flag. + +The advantage of the second and third method is that the mapping will work on +different terminals without modification (the function key will be +translated into the same internal code or the actual key code, no matter what +terminal you are using. The termcap must be correct for this to work, and you +must use the same mappings). + +DETAIL: Vim first checks if a sequence from the keyboard is mapped. If it +isn't the terminal key codes are tried (see |terminal-options|). If a +terminal code is found it is replaced with the internal code. Then the check +for a mapping is done again (so you can map an internal code to something +else). What is written into the script file depends on what is recognized. +If the terminal key code was recognized as a mapping the key code itself is +written to the script file. If it was recognized as a terminal code the +internal code is written to the script file. + + +1.6 SPECIAL CHARACTERS *:map-special-chars* *map_backslash* Note that only CTRL-V is mentioned here as a special character for mappings and abbreviations. When 'cpoptions' does not contain 'B', a backslash can @@ -286,23 +436,12 @@ To map a backslash, or use a backslash literally in the {rhs}, the special sequence "<Bslash>" can be used. This avoids the need to double backslashes when using nested mappings. - *map-ambiguous* -When two mappings start with the same sequence of characters, they are -ambiguous. Example: > - :imap aa foo - :imap aaa bar -When Vim has read "aa", it will need to get another character to be able to -decide if "aa" or "aaa" should be mapped. This means that after typing "aa" -that mapping won't get expanded yet, Vim is waiting for another character. -If you type a space, then "foo" will get inserted, plus the space. If you -type "a", then "bar" will get inserted. -{Vi does not allow ambiguous mappings} - - *map_CTRL_C* -It's not possible to use a CTRL-C in the {lhs}. You just can't map CTRL-C. -The reason is that CTRL-C must always be available to break a running command. -Exception: When using the GUI version on MS-Windows CTRL-C can be mapped to -allow a Copy command to the clipboard. Use CTRL-Break to interrupt Vim. + *map_CTRL-C* +Using CTRL-C in the {lhs} is possible, but it will only work when Vim is +waiting for a key, not when Vim is busy with something. When Vim is busy +CTRL-C interrupts/breaks the command. +When using the GUI version on MS-Windows CTRL-C can be mapped to allow a Copy +command to the clipboard. Use CTRL-Break to interrupt Vim. *map_space_in_lhs* To include a space in {lhs} precede it with a CTRL-V (type two CTRL-Vs for @@ -322,6 +461,18 @@ example, to make sure that function key 8 does nothing at all: > :map <F8> <Nop> :map! <F8> <Nop> < + *map-multibyte* +It is possible to map multibyte characters, but only the whole character. You +cannot map the first byte only. This was done to prevent problems in this +scenario: > + :set encoding=latin1 + :imap <M-C> foo + :set encoding=utf-8 +The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3 +byte. If you type the character � (0xea <M-a>) in UTF-8 encoding this is the +two bytes 0xc3 0xa1. You don't want the 0xc3 byte to be mapped then, +otherwise it would be impossible to type the � character. + *<Leader>* *mapleader* To define a mapping which uses the "mapleader" variable, the special string "<Leader>" can be used. It is replaced with the string value of "mapleader". @@ -409,14 +560,16 @@ and CTRL-X is not mapped. This was done to be able to use all the named registers and marks, even when the command with the same name has been mapped. - *map-which-keys* + +1.7 WHAT KEYS TO MAP *map-which-keys* + If you are going to map something, you will need to choose which key(s) to use for the {lhs}. You will have to avoid keys that are used for Vim commands, otherwise you would not be able to use those commands anymore. Here are a few suggestions: - Function keys <F2>, <F3>, etc.. Also the shifted function keys <S-F1>, <S-F2>, etc. Note that <F1> 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 @@ -427,7 +580,9 @@ losing any builtin function. You can also use ":help {key}^D" to find out if a key is used for some command. ({key} is the specific key you want to find out about, ^D is CTRL-D). - *map-examples* + +1.8 EXAMPLES *map-examples* + A few examples (given as you type them, for "<CR>" you type four characters; the '<' flag must not be present in 'cpoptions' for this to work). > @@ -436,7 +591,9 @@ the '<' flag must not be present in 'cpoptions' for this to work). > :map _x d/END/e<CR> :map! qq quadrillion questions < - *map-typing* + +1.9 USING MAPPINGS *map-typing* + Vim will compare what you type with the start of a mapped sequence. If there is an incomplete match, it will get more characters until there either is a complete match or until there is no match at all. Example: If you map! "qq", @@ -449,14 +606,15 @@ you type slowly, or your system is slow, reset the 'timeout' option. Then you 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., "<F1><F1>" or "g<F1>". + 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 <F1> to <F4> the actual key code generated may correspond to @@ -472,6 +630,9 @@ special key: > Don't type a real <Esc>, Vim will recognize the key code and replace it with <F1> 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 @@ -508,43 +669,104 @@ the original Vi, as long as there is only one undo command in the mapped sequence (having two undo commands in a mapped sequence did not make sense in the original Vi, you would get back the text before the first undo). - *:map-special-keys* -There are three ways to map a special key: -1. The Vi-compatible method: Map the key code. Often this is a sequence that - starts with <Esc>. To enter a mapping like this you type ":map " and then - you have to type CTRL-V before hitting the function key. Note that when - the key code for the key is in the termcap (the t_ options), it will - automatically be translated into the internal code and become the second - way of mapping (unless the 'k' flag is included in 'cpoptions'). -2. The second method is to use the internal code for the function key. To - enter such a mapping type CTRL-K and then hit the function key, or use - the form "#1", "#2", .. "#9", "#0", "<Up>", "<S-Down>", "<S-F7>", etc. - (see table of keys |key-notation|, all keys from <Up> can be used). The - first ten function keys can be defined in two ways: Just the number, like - "#2", and with "<F>", like "<F2>". Both stand for function key 2. "#0" - refers to function key 10, defined with option 't_f10', which may be - function key zero on some keyboards. The <> form cannot be used when - 'cpoptions' includes the '<' flag. -3. Use the termcap entry, with the form <t_xx>, where "xx" is the name of the - termcap entry. Any string entry can be used. For example: > - :map <t_F3> G -< Maps function key 13 to "G". This does not work if 'cpoptions' includes - the '<' flag. - -The advantage of the second and third method is that the mapping will work on -different terminals without modification (the function key will be -translated into the same internal code or the actual key code, no matter what -terminal you are using. The termcap must be correct for this to work, and you -must use the same mappings). -DETAIL: Vim first checks if a sequence from the keyboard is mapped. If it -isn't the terminal key codes are tried (see |terminal-options|). If a -terminal code is found it is replaced with the internal code. Then the check -for a mapping is done again (so you can map an internal code to something -else). What is written into the script file depends on what is recognized. -If the terminal key code was recognized as a mapping the key code itself is -written to the script file. If it was recognized as a terminal code the -internal code is written to the script file. +1.10 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 can work that way, such as xterm, aterm and +rxvt. If your <A-k> 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 should work well by default. Aterm and rxvt should work well +when started with the "--meta8" argument. You can also 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. + + +1.11 MAPPING AN OPERATOR *:map-operator* + +An operator is used before a {motion} command. To define your own operator +you must create mapping that first sets the 'operatorfunc' option and then +invoke the |g@| operator. After the user types the {motion} command the +specified function will be called. + + *g@* *E774* *E775* +g@{motion} Call the function set by the 'operatorfunc' option. + The '[ mark is positioned at the start of the text + moved over by {motion}, the '] mark on the last + character of the text. + The function is called with one String argument: + "line" {motion} was |linewise| + "char" {motion} was |characterwise| + "block" {motion} was |blockwise-visual|| + Although "block" would rarely appear, since it can + only result from Visual mode where "g@" is not useful. + {not available when compiled without the +eval + feature} + +Here is an example that counts the number of spaces with <F4>: > + + nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@ + vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR> + + function! CountSpaces(type, ...) + let sel_save = &selection + let &selection = "inclusive" + let reg_save = @@ + + if a:0 " Invoked from Visual mode, use '< and '> marks. + silent exe "normal! `<" . a:type . "`>y" + elseif a:type == 'line' + silent exe "normal! '[V']y" + elseif a:type == 'block' + silent exe "normal! `[\<C-V>`]y" + else + silent exe "normal! `[v`]y" + endif + + echomsg strlen(substitute(@@, '[^ ]', '', 'g')) + + let &selection = sel_save + let @@ = reg_save + endfunction + +Note that the 'selection' option is temporarily set to "inclusive" to be able +to yank exactly the right text by using Visual mode from the '[ to the '] +mark. + +Also note that there is a separate mapping for Visual mode. It removes the +"'<,'>" range that ":" inserts in Visual mode and invokes the function with +visualmode() and an extra argument. ============================================================================== 2. Abbreviations *abbreviations* *Abbreviations* @@ -615,7 +837,7 @@ Examples: ({CURSOR} is where you type a non-keyword character) > < "#i{CURSOR}" is expanded to "#include" ">#i{CURSOR}" is not expanded > - :ab ;; <endofline>" + :ab ;; <endofline> < "test;;" is not expanded "test ;;" is expanded to "test <endofline>" @@ -633,7 +855,7 @@ This does not work if 'cpoptions' includes the '<' flag. |<>| You can even do more complicated things. For example, to consume the space typed after an abbreviation: > func Eatchar(pat) - let c = nr2char(getchar()) + let c = nr2char(getchar(0)) return (c =~ a:pat) ? '' : c endfunc iabbr <silent> if if ()<Left><C-R>=Eatchar('\s')<CR> @@ -658,15 +880,26 @@ used in a |filetype-plugin| file. Example for a C plugin file: > mode, '!' for both. These are the same as for mappings, see |map-listing|. + *:abbreviate-verbose* +When 'verbose' is non-zero, listing an abbreviation will also display where it +was last defined. Example: > + + :verbose abbreviate + ! teh the + Last set from /home/abcd/vim/abbr.vim + +See |:verbose-cmd| for more information. + :ab[breviate] {lhs} list the abbreviations that start with {lhs} You may need to insert a CTRL-V (type it twice) to avoid that a typed {lhs} is expanded, since command-line abbreviations apply here. -:ab[breviate] {lhs} {rhs} +:ab[breviate] [<expr>] {lhs} {rhs} add abbreviation for {lhs} to {rhs}. If {lhs} already existed it is replaced with the new {rhs}. {rhs} may contain spaces. + See |:map-<expr>| for the optional <expr> argument. *:una* *:unabbreviate* :una[bbreviate] {lhs} Remove abbreviation for {lhs} from the list. If none @@ -676,12 +909,13 @@ used in a |filetype-plugin| file. Example for a C plugin file: > expansion insert a CTRL-V (type it twice). *:norea* *:noreabbrev* -:norea[bbrev] [lhs] [rhs] +:norea[bbrev] [<expr>] [lhs] [rhs] same as ":ab", but no remapping for this {rhs} {not in Vi} *:ca* *:cabbrev* -:ca[bbrev] [lhs] [rhs] same as ":ab", but for Command-line mode only. {not +:ca[bbrev] [<expr>] [lhs] [rhs] + same as ":ab", but for Command-line mode only. {not in Vi} *:cuna* *:cunabbrev* @@ -689,19 +923,20 @@ used in a |filetype-plugin| file. Example for a C plugin file: > in Vi} *:cnorea* *:cnoreabbrev* -:cnorea[bbrev] [lhs] [rhs] +:cnorea[bbrev] [<expr>] [lhs] [rhs] same as ":ab", but for Command-line mode only and no remapping for this {rhs} {not in Vi} *:ia* *:iabbrev* -:ia[bbrev] [lhs] [rhs] same as ":ab", but for Insert mode only. {not in Vi} +:ia[bbrev] [<expr>] [lhs] [rhs] + same as ":ab", but for Insert mode only. {not in Vi} *:iuna* *:iunabbrev* :iuna[bbrev] {lhs} same as ":una", but for insert mode only. {not in Vi} *:inorea* *:inoreabbrev* -:inorea[bbrev] [lhs] [rhs] +:inorea[bbrev] [<expr>] [lhs] [rhs] same as ":ab", but for Insert mode only and no remapping for this {rhs} {not in Vi} @@ -737,7 +972,7 @@ You see: ab esc ^V^V^[ how it should appear in your .exrc file, if you choose to go that route. The first ^V is there to quote the second ^V; the :ab command uses ^V as its own quote character, so you can include quoted - whitespace or the | character in the abbreviation. The :ab command + whitespace or the | character in the abbreviation. The :ab command doesn't do anything special with the ^[ character, so it doesn't need to be quoted. (Although quoting isn't harmful; that's why typing 7 [but not 8!] ^Vs works.) @@ -752,7 +987,7 @@ Stored as: esc ^V^[ Later, when the abbreviation is expanded because the user typed in the word "esc", the long form is subjected to the same type of ^V interpretation as keyboard input. So the ^V protects the ^[ - character from being interpreted as the "exit input-mode" character. + character from being interpreted as the "exit Insert mode" character. Instead, the ^[ is inserted into the text. Expands to: ^[ @@ -780,7 +1015,7 @@ make it local to the script. But when a mapping is executed from outside of the script, it doesn't know in which script the function was defined. To avoid this problem, use "<SID>" instead of "s:". The same translation is done as for mappings. This makes it possible to define a call to the function in -mapping. +a mapping. When a local function is executed, it runs in the context of the script it was defined in. This means that new functions and mappings it defines can also @@ -795,11 +1030,10 @@ local function or uses a local mapping. Otherwise, using "<SID>" outside of a script context is an error. If you need to get the script number to use in a complicated script, you can -use this trick: > - :map <SID>xx <SID>xx - :let s:sid = maparg("<SID>xx") - :unmap <SID>xx -And remove the trailing "xx". +use this function: > + function s:SID() + return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$') + endfun The "<SNR>" will be shown when listing functions and mappings. This is useful to find out what they are defined to. @@ -813,7 +1047,7 @@ feature}. ============================================================================== 4. User-defined commands *user-commands* -It is possible to define your own Ex commands. A user-defined command can act +It is possible to define your own Ex commands. A user-defined command can act just like a built-in command (it can have a range or arguments, arguments can be completed as filenames or buffer names, etc), except that when the command is executed, it is transformed into a normal ex command and then executed. @@ -822,7 +1056,7 @@ For starters: See section |40.2| in the user manual. *E183* *user-cmd-ambiguous* All user defined commands must start with an uppercase letter, to avoid -confusion with builtin commands. (There are a few builtin commands, notably +confusion with builtin commands. (There are a few builtin commands, notably :Next, :Print and :X, which do start with an uppercase letter. The builtin will always take precedence in these cases). The other characters of the user command can be uppercase letters, lowercase letters or digits. When using @@ -831,8 +1065,8 @@ ambiguous. For example, the command ":Cc2" could be the user command ":Cc2" without an argument, or the command ":Cc" with argument "2". It is advised to put a space between the command name and the argument to avoid these problems. -When using a user-defined command, the command can be abbreviated. However, if -an abbreviation is not unique, an error will be issued. Furthermore, a +When using a user-defined command, the command can be abbreviated. However, if +an abbreviation is not unique, an error will be issued. Furthermore, a built-in command will always take precedence. Example: > @@ -848,7 +1082,7 @@ It is recommended that full names for user-defined commands are used in scripts. :com[mand] *:com* *:command* - List all user-defined commands. When listing commands, + List all user-defined commands. When listing commands, the characters in the first two columns are ! Command has the -bang attribute " Command has the -register attribute @@ -857,11 +1091,22 @@ scripts. :com[mand] {cmd} List the user-defined commands that start with {cmd} + *:command-verbose* +When 'verbose' is non-zero, listing a command will also display where it was +last defined. Example: > + + :verbose command TOhtml +< Name Args Range Complete Definition ~ + TOhtml 0 % :call Convert2HTML(<line1>, <line2>) ~ + Last set from /usr/share/vim/vim-7.0/plugin/tohtml.vim ~ + +See |:verbose-cmd| for more information. + *E174* *E182* :com[mand][!] [{attr}...] {cmd} {rep} Define a user command. The name of the command is - {cmd} and its replacement text is {rep}. The command's - attributes (see below) are {attr}. If the command + {cmd} and its replacement text is {rep}. The command's + attributes (see below) are {attr}. If the command already exists, an error is reported, unless a ! is specified, in which case the command is redefined. @@ -873,20 +1118,20 @@ scripts. Command attributes -User-defined commands are treated by Vim just like any other ex commands. They -can have arguments, or have a range specified. Arguments are subject to -completion as filenames, buffers, etc. Exactly how this works depends upon the +User-defined commands are treated by Vim just like any other ex commands. They +can have arguments, or have a range specified. Arguments are subject to +completion as filenames, buffers, etc. Exactly how this works depends upon the command's attributes, which are specified when the command is defined. There are a number of attributes, split into four categories: argument -handling, completion behavior, range handling, and special cases. The +handling, completion behavior, range handling, and special cases. The attributes are described below, by category. Argument handling *E175* *E176* By default, a user defined command will take no arguments (and an error is -reported if any are supplied). However, it is possible to specify that the -command can take arguments, using the -nargs attribute. Valid cases are: +reported if any are supplied). However, it is possible to specify that the +command can take arguments, using the -nargs attribute. Valid cases are: -nargs=0 No arguments are allowed (the default) -nargs=1 Exactly one argument is required @@ -924,6 +1169,7 @@ completion can be enabled: -complete=event autocommand events -complete=expression Vim expression -complete=file file and directory names + -complete=shellcmd Shell command -complete=function function name -complete=help help subjects -complete=highlight highlight groups @@ -934,26 +1180,38 @@ completion can be enabled: -complete=tag_listfiles tags, file names are shown when CTRL-D is hit -complete=var user variables -complete=custom,{func} custom completion, defined via {func} + -complete=customlist,{func} custom completion, defined via {func} -Custom completion *:command-completion-custom* - *E467* *E468* + +Custom completion *:command-completion-custom* + *:command-completion-customlist* + *E467* *E468* It is possible to define customized completion schemes via the "custom,{func}" -completion argument. The {func} part should be a function with the following -prototype > +or the "customlist,{func}" completion argument. The {func} part should be a +function with the following prototype > :function {func}(ArgLead, CmdLine, CursorPos) -The function need not use all these arguments, but it should provide the -completion candidates as the return value, one per line in a newline separated -string. The function arguments are: +The function need not use all these arguments. The function should provide the +completion candidates as the return value. + +For the "custom" argument, the function should return the completion +candidates one per line in a newline separated string. + +For the "customlist" argument, the function should return the completion +candidates as a Vim List. Non-string items in the list are ignored. + +The function arguments are: ArgLead the leading portion of the argument currently being completed on CmdLine the entire command line - CursorPos the cursor position in it -The function may use these for determining context. It is not necessary to -filter candidates against the (implicit pattern in) ArgLead. Vim will do -filter the candidates with its regexp engine after function return, and this -is probably more efficient in most cases. + CursorPos the cursor position in it (byte index) +The function may use these for determining context. For the "custom" +argument, it is not necessary to filter candidates against the (implicit +pattern in) ArgLead. Vim will do filter the candidates with its regexp engine +after function return, and this is probably more efficient in most cases. For +the "customlist" argument, Vim will not filter the returned completion +candidates and the user supplied function should filter the candidates. The following example lists user names to a Finger command > :com -complete=custom,ListUsers -nargs=1 Finger !finger <args> @@ -961,20 +1219,29 @@ The following example lists user names to a Finger command > : return system("cut -d: -f1 /etc/passwd") :endfun +The following example completes filenames from the directories specified in +the 'path' option: > + :com -nargs=1 -bang -complete=customlist,EditFileComplete + \ EditFile edit<bang> <args> + :fun EditFileComplete(A,L,P) + : return split(globpath(&path, a:ArgLead), "\n") + :endfun +< + Range handling *E177* *E178* -By default, user-defined commands do not accept a line number range. However, +By default, user-defined commands do not accept a line number range. However, it is possible to specify that the command does take a range (the -range attribute), or that it takes an arbitrary count value, either in the line number position (-range=N, like the |:split| command) or as a "count" -argument (-count=N, like the |:Next| command). Possible attributes are: +argument (-count=N, like the |:Next| command). Possible attributes are: -range Range allowed, default is current line -range=% Range allowed, default is whole file (1,$) -range=N A count (default N) which is specified in the line number position (like |:split|) -count=N A count (default N) which is specified either in the line - number position, or as an initial argument (like |:Next|) + number position, or as an initial argument (like |:Next|). Specifying -count (without a default) acts like -count=0 Note that -range=N and -count=N are mutually exclusive - only one should be @@ -999,10 +1266,11 @@ replacement text separately. Replacement text The replacement text for a user defined command is scanned for special escape -sequences, using <...> notation. Escape sequences are replaced with values -from the entered command line, and all other text is copied unchanged. The -resulting string is executed as an Ex command. If the initial < of an escape -sequence is preceded by a backslash, the sequence is copied unchanged. +sequences, using <...> notation. Escape sequences are replaced with values +from the entered command line, and all other text is copied unchanged. The +resulting string is executed as an Ex command. To avoid the replacement use +<lt> in plade of the initial <. Thus to include "<bang>" literally use +"<lt>bang>". The valid escape sequences are @@ -1019,7 +1287,7 @@ The valid escape sequences are expands to nothing. *<reg>* *<register>* <reg> (See the '-register' attribute) The optional register, - if specified. Otherwise, expands to nothing. <register> + if specified. Otherwise, expands to nothing. <register> is a synonym for this. *<args>* <args> The command arguments, exactly as supplied (but as @@ -1034,13 +1302,13 @@ The valid escape sequences are If the first two characters of an escape sequence are "q-" (for example, <q-args>) then the value is quoted in such a way as to make it a valid value for use in an expression. This uses the argument as one single value. +When there is no argument <q-args> is an empty string. To allow commands to pass their arguments on to a user-defined function, there -is a special form <f-args> ("function args"). This splits the command +is a special form <f-args> ("function args"). This splits the command arguments at spaces and Tabs, quotes each argument individually, and the <f-args> sequence is replaced by the comma-separated list of quoted arguments. -See the Mycmd example below. When there is no argument, <f-args> also has no -argument. +See the Mycmd example below. If no arguments are given <f-args> is removed. Examples > @@ -1056,7 +1324,7 @@ Examples > Replace <line1>-pu_|<line1>,<line2>d|r <args>|<line1>d " Count the number of lines in the range - :com! -range -nargs=0 Lines :echo <line2> - <line1> + 1 "lines" + :com! -range -nargs=0 Lines echo <line2> - <line1> + 1 "lines" " Call a user function (example of <f-args>) :com -nargs=* Mycmd call Myfunc(<f-args>) diff --git a/ja/gui.jax b/ja/gui.jax index 86ec5206a..dd90d9f99 100644 --- a/ja/gui.jax +++ b/ja/gui.jax @@ -1,5 +1,5 @@ COMMENT: GUI機能:一般事項 -STATUS: finished 5.7 +STATUS: finished 6.3 TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> @@ -134,10 +134,11 @@ Vimは起動時に、スクリーンに合わせてウィンドウの位置を *:win* *:winsize* *E465* :win[size] {width} {height} - {width}と{height}の文字によってウィンドウの高さを設定する。 - ":set lines=11 columns=22"を使用するのは古いやり方である。 + {width}(幅)と{height}(高さ)を指定してウィンドウの大きさを設定 + する。このコマンドは古いコマンド(Obsolate)なので、 + ":set lines=11 columns=22"を使用するようにしてください。 期待したよりも高さが低くなるなら、'guiheadroom'オプションを確 - 認する。 + 認してください。 X Window Systemでは、このコマンドでVimのウィンドウの情報を得ることができる: > :!xwininfo -id $WINDOWID @@ -293,9 +294,8 @@ CTRL-V、CTRL-X、CTRL-Cキーを用いるので、標準の操作と互換性 'mousemodel'が"popup"である: Shiftキーを押しながら、マウスの左ボタンを使用す る。 -まだ何も選択していなければ、カーソルがあった位置からマウスで指示した位置まで選 -択する。すでに選択しているなら、マウスで指示した位置に近い方の選択範囲の終端が -指示した位置に変更される。 +選択を開始するときには、カーソルの位置からマウスで指示した位置までが選択され +る。すでに選択されている状態で選択の操作をすると、選択範囲が拡張される。 'selectmode'が"mouse"を含んでいるなら、選択モードが使用される。これは選択中に 入力した文字で選択範囲が置き換えられることを意味する。 diff --git a/ja/if_cscop.jax b/ja/if_cscop.jax index 7aa6193ad..128d198c6 100644 --- a/ja/if_cscop.jax +++ b/ja/if_cscop.jax @@ -3,7 +3,7 @@ STATUS: finished 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*fold.txt* For Vim version 6.3. Last change: 2004 May 20 +*if_cscop.txt* For Vim version 6.3. Last change: 2004 Jan 17 VIM リファレンスマニュアル by Andy Kahn diff --git a/ja/index.jax b/ja/index.jax index c53dc0541..20c5d7735 100644 --- a/ja/index.jax +++ b/ja/index.jax @@ -1,17 +1,18 @@ COMMENT: モード別コマンドによる索引 -STATUS: finished 5.7 +STATUS: finished 6.3 TRANSLATOR: 小野尾隆一(nobi) <onoo@k-micro.com> TRANSLATOR: nakadaira <hopper2@nanameue.jp> MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> -*index.txt* For Vim version 5.7. Last change: 2000 Apr 01 +*index.txt* For Vim version 6.3. Last change: 2004 May 24 VIM REFERENCE MANUAL by Bram Moolenaar -このファイルには、タグと短い説明とともに各モードにおける総てのコマンドのリスト -が記述されている。リストはアスキーコード順になっている。 + *index* +このファイルには各モードのすべてのコマンドが列挙されており、タグと短い説明が示 +されている。一覧はアスキーコード順に並んでいる。 ヒント: 機能で検索するときは、検索コマンドを使用する。例えば、何かを削除するコ マンドを検索したいなら、"/削除"を使用する。 @@ -20,15 +21,17 @@ MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> 2. ノーマルモード |normal-index| 2.1. テキストオブジェクト |objects| 2.2. ウィンドウコマンド |CTRL-W| - 2.3. 大括弧コマンド |[| + 2.3. 角括弧コマンド |[| 2.4. 'g' で始まるコマンド |g| + 2.5. 'z' で始まるコマンド |z| 3. ビジュアルモード |visual-index| 4. コマンドライン編集 |ex-edit-index| 5. EX コマンド |ex-cmd-index| オプションの概略は help.txt を参照。|option-list| -各オプションの詳細な説明は options.txt を参照。|options| -全ヘルプ項目のリストは |help-tags| を参照。 +ビルトイン関数の詳細は|functions|を参照。 +Vim変数の一覧は|vim-variable|を参照。 +全ヘルプ項目の一覧は |help-tags| を参照。 ============================================================================== 1. 挿入モード *insert-index* @@ -39,26 +42,32 @@ MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> 終了する。 |i_CTRL-A| CTRL-A 直前に挿入したテキストを挿入する。 CTRL-B 未使用 |i_CTRL-B-gone| -|i_CTRL-C| CTRL-C 'insertmode' がセットされていなければ、略語を - チェックせずに挿入モードを終了する。 +|i_CTRL-C| CTRL-C 'insertmode' がセットされていなければ、短縮入 + 力をチェックせずに挿入モードを終了する。 |i_CTRL-D| CTRL-D 現在の行から shiftwidth 分のインデントを削除 する。 -|i_CTRL-E| CTRL-E カーソルの下にある文字を挿入する。 - CTRL-F 未使用 - CTRL-G 将来の拡張のために予約。 +|i_CTRL-E| CTRL-E 下の行のカーソルと同じ位置にある文字を挿入する + CTRL-F 未使用 (しかし標準設定では'cinkeys'の設定によ + りカーソル行を再インデントするのに使用される) +|i_CTRL-G_j| CTRL-G CTRL-J 下の行へ移動。カーソルは挿入開始位置と同じ列へ +|i_CTRL-G_j| CTRL-G j 下の行へ移動。カーソルは挿入開始位置と同じ列へ +|i_CTRL-G_j| CTRL-G <Down> 下の行へ移動。カーソルは挿入開始位置と同じ列へ +|i_CTRL-G_k| CTRL-G CTRL-K 上の行へ移動。カーソルは挿入開始位置と同じ列へ +|i_CTRL-G_k| CTRL-G k 上の行へ移動。カーソルは挿入開始位置と同じ列へ +|i_CTRL-G_k| CTRL-G <Up> 上の行へ移動。カーソルは挿入開始位置と同じ列へ +|i_CTRL-G_u| CTRL-G u アンドゥで元に戻す地点を新たに設定 |i_<BS>| <BS> カーソルの前にある文字を削除する。 |i_digraph| {char1}<BS>{char2} - 2バイト文字を入力する。 ('digraph' オプション - がセットされているとき) + 二重字(digraph)を入力する。 ('digraph' オプ + ションがオンのとき) |i_CTRL-H| CTRL-H <BS> と同じ |i_<Tab>| <Tab> <Tab> 文字を挿入 |i_CTRL-I| CTRL-I <Tab> と同じ |i_<NL>| <NL> <CR> と同じ |i_CTRL-J| CTRL-J <CR> と同じ |i_CTRL-K| CTRL-K {char1} {char2} - 2バイト文字を入力する。 -|i_CTRL-L| CTRL-L 'insertmode' がセットされているとき: 挿入モー - ドを終了する。 + 二重字(digraph)を入力する。 +|i_CTRL-L| CTRL-L 'insertmode'がオンのとき、挿入モードを終了する |i_<CR>| <CR> 改行を入力。 |i_CTRL-M| CTRL-M <CR> と同じ。 |i_CTRL-N| CTRL-N カーソルの前にあるキーワードで前方検索し、一致 @@ -66,7 +75,8 @@ MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> |i_CTRL-O| CTRL-O 1回コマンドを実行し、挿入モードに戻る。 |i_CTRL-P| CTRL-P カーソルの前にあるキーワードで後方検索し、一致 した単語で補完する。 -|i_CTRL-Q| CTRL-Q CTRL-V と同じ。(端末制御に使用) +|i_CTRL-Q| CTRL-Q CTRL-V と同じ。端末制御に使用されている場合を + 除く。 |i_CTRL-R| CTRL-R {0-9a-z"%#*:=} レジスタに保存されている文字列を挿入。 |i_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:=} @@ -79,27 +89,27 @@ MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> インデントは固定。 CTRL-S (端末制御に使用) |i_CTRL-T| CTRL-T 現在の行に shiftwidth 分のインデントを挿入する。 -|i_CTRL-U| CTRL-U 現在の行に挿入した総ての文字を削除する。 -|i_CTRL-V| CTRL-V {char} 次に入力する数字以外の文字を挿入する。 -|i_CTRL-V_digit| CTRL-V {number} 次に入力する3桁の10進数を1バイト文字として挿入 - する。12345 +|i_CTRL-U| CTRL-U 現在の行に挿入したすべての文字を削除する。 +|i_CTRL-V| CTRL-V {char} 続いて入力する数字以外の文字をそのまま挿入する +|i_CTRL-V_digit| CTRL-V {number} 続いて入力する3桁の10進数で1バイト文字を指定 + して挿入 |i_CTRL-W| CTRL-W カーソルの前にある単語を削除する。 |i_CTRL-X| CTRL-X {mode} CTRL-X サブモードに移行する。詳しくは下を参照。 -|i_CTRL-Y| CTRL-Y カーソルの上にある文字を挿入する。 +|i_CTRL-Y| CTRL-Y 上の行のカーソルと同じ位置にある文字を挿入する |i_CTRL-Z| CTRL-Z 'insertmode' がセットされている場合: Vim をサ スペンドする。 |i_<Esc>| <Esc> 挿入モードを終了する。('insertmode' がセットさ れていない場合) |i_CTRL-[| CTRL-[ <Esc> と同じ。 -|i_CTRL-\_CTRL-N| CTRL-\ CTRL-N ノーマルモードへ移行。 +|i_CTRL-\_CTRL-N| CTRL-\ CTRL-N ノーマルモードへ移行。 +|i_CTRL-\_CTRL-G| CTRL-\ CTRL-G 'insertmode'に合わせたモードへ移行。 CTRL-\ a - z 将来の拡張のために予約。 CTRL-\ others 未使用 -|i_CTRL-]| CTRL-] trigger abbreviation - CTRL-^ 未使用 -|i_CTRL-_| CTRL-_ 'allowrevins' がセットされている場合: 文字の挿 - 入方向を逆転させる(右から左(Hebrew)、左から右 - (Farsi)) {コンパイル時に +rightleft オプション - を有効にしたときのみ} +|i_CTRL-]| CTRL-] 短縮入力を適用する + CTRL-^ マップ|:lmap|の有効無効を切り替える +|i_CTRL-_| CTRL-_ 'allowrevins' がオンのとき、言語を切り替える。 + (ヘブライ語、ペルシア語) {コンパイル時に + |+rightleft| オプションを有効にしたときのみ} <Space> to '~' 未使用。ただし CTRL-D が後に続く '0' と '^' は 除く。 @@ -136,19 +146,20 @@ MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> |i_<MouseUp>| <MouseUp> ウィンドウを3行上へスクロール。 |i_<S-MouseUp>| <S-MouseUp> ウィンドウを1画面上へスクロール。 -commands in CTRL-X submode +CTRL-X サブモードで使用するコマンド |i_CTRL-X_CTRL-D| CTRL-X CTRL-D 定義済みの識別子を補完。 -|i_CTRL-X_CTRL-E| CTRL-X CTRL-E ウィンドウを下へスクロール。 +|i_CTRL-X_CTRL-E| CTRL-X CTRL-E ウィンドウを上へスクロール。 |i_CTRL-X_CTRL-F| CTRL-X CTRL-F ファイル名を補完。 |i_CTRL-X_CTRL-I| CTRL-X CTRL-I 識別子を補完。 |i_CTRL-X_CTRL-K| CTRL-X CTRL-K 辞書の識別子を補完。 |i_CTRL-X_CTRL-L| CTRL-X CTRL-L 行全体を補完。 -|i_CTRL-X_CTRL-L| CTRL-X CTRL-N 次の補完候補。 -|i_CTRL-X_CTRL-L| CTRL-X CTRL-P 前の補完候補。 +|i_CTRL-X_CTRL-N| CTRL-X CTRL-N 次の補完候補。 +|i_CTRL-X_CTRL-P| CTRL-X CTRL-P 前の補完候補。 +|i_CTRL-X_CTRL-T| CTRL-X CTRL-T 類語による補完 |i_CTRL-X_CTRL-Y| CTRL-X CTRL-Y ウィンドウを下へスクロール。 |i_CTRL-X_CTRL-]| CTRL-X CTRL-] タグを補完。 -{コンパイル時に +insert_expand オプションを有効にしたときのみ利用可能} +{コンパイル時に|+insert_expand|オプションを有効にしたときのみ利用可能} ============================================================================== 2. ノーマルモード *normal-index* @@ -158,9 +169,9 @@ WORD 空白以外の文字からなる文字列 N コマンドの前に入力される数字 {motion} カーソル移動コマンド Nmove {motion} でカーソルが通過するテキスト -SECTION もしかしたら '{' の代わりに '}' で始まる1段落 +SECTION セクション。'{'ではなく'}'の場合もある|section| -注: 1 = カーソル移動コマンド; 2 = アンドゥ/リドゥ可能 +Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 タグ 文字 注 ノーマルモードでの動作 ~ ------------------------------------------------------------------------------ @@ -169,8 +180,8 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 を加える。 |CTRL-B| CTRL-B 1 ウィンドウを N 画面上へスクロール。 |CTRL-C| CTRL-C 現在の(検索)コマンドを中断する。 -|CTRL-D| CTRL-D ウィンドウを N 行下へスクロールする。(デフォ - ルト:半画面) +|CTRL-D| CTRL-D ウィンドウを N 行下へスクロールする。 + (省略時は半画面) |CTRL-E| CTRL-E ウィンドウを N 行下へスクロールする。 |CTRL-F| CTRL-F 1 ウィンドウを N 画面下へスクロール。 |CTRL-G| CTRL-G 現在のファイル名とカーソル位置を表示する。 @@ -183,16 +194,16 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 CTRL-K 未使用 |CTRL-L| CTRL-L 画面の再描画。 |<CR>| <CR> 1 カーソルを N 行下の先頭の CHAR へ移動。 -|CTRL-M| CTRL-M> 1 <CR> と同じ。 +|CTRL-M| CTRL-M 1 <CR> と同じ。 |CTRL-N| CTRL-N 1 "j" と同じ。 |CTRL-O| CTRL-O 1 N 個前のジャンプリストの場所へジャンプする。 -|CTRL-P| CTRL-P 1 カーソルを N 行上へ移動。 +|CTRL-P| CTRL-P 1 "k" と同じ。 CTRL-Q (端末制御に使用) |CTRL-R| CTRL-R 2 'u' でアンドゥした変更をリドゥする。 CTRL-S (端末制御に使用) |CTRL-T| CTRL-T N 個前のタグリストの場所へジャンプする。 -|CTRL-U| CTRL-U ウィンドウを N 行上へスクロール。(デフォル - トは半画面) +|CTRL-U| CTRL-U ウィンドウを N 行上へスクロール。 + (省略時は半画面) |CTRL-V| CTRL-V ブロック指定のビジュアルモードを開始する。 |CTRL-W| CTRL-W {char} ウィンドウコマンド、|CTRL-W| を参照。 |CTRL-X| CTRL-X 2 カーソル位置/カーソルより後ろにある数字に N @@ -201,6 +212,7 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |CTRL-Z| CTRL-Z Vim の実行を中断。(新しいシェルを開始する) CTRL-[ <Esc> 未使用 |CTRL-\_CTRL-N| CTRL-\ CTRL-N ノーマルモードへ移行。(つまり何もしない) +|CTRL-\_CTRL-G| CTRL-\ CTRL-G 'insertmode'に合わせたモードへ移行。 CTRL-\ a - z 将来の拡張のために予約。 CTRL-\ others 未使用 |CTRL-]| CTRL-] カーソル位置の単語を :ta で検索する。 @@ -212,35 +224,38 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 2 Nmove のテキストを {filter} コマンドでフィ ルタする。 |!!| !!{filter} 2 N 行を {filter} コマンドでフィルタする。 -|quote| "{a-zA-Z0-9.%#:-"} 削除、ヤンク、プットコマンドでバッファ - {a-zA-Z0-9.%#:-"} (大文字は既存のバッファに +|quote| "{a-zA-Z0-9.%#:-"} 削除、ヤンク、プットコマンドでレジスタ + {a-zA-Z0-9.%#:-"} (大文字は既存のレジスタに 追加する)を指定するために使用する。({.%#:} はプットコマンドでのみ有効) |#| # 1 カーソル位置の単語で後方検索し、N 番目に見 つかった場所へ移動。 |$| $ 1 カーソルを N 行下の行末へ移動。 -|%| % 1 現在の行にある次の(小/大)括弧またはコメント - に対応する括弧の位置、対応するプリプロセッ - サの位置に移動。 +|%| % 1 現在の行にある次の括弧やC風コメント(/* */) + の対、対応するプリプロセッサなどに移動 |N%| {count}% 1 ファイルの N パーセントの位置に移動。 |&| & 2 最後に実行した :s コマンドを繰り返す。 |'| '{a-zA-Z0-9} 1 {a-zA-Z0-9} でマークした行の先頭の CHAR へ カーソルを移動。 |''| '' 1 最後のジャンプの前にいた行の先頭の CHAR へ カーソルを移動。 -|'<| '< 1 カレントバッファのハイライト領域の先頭行の - 先頭の CHAR へカーソルを移動。 -|'>| '> 1 カレントバッファのハイライト領域の最終行の - 先頭の CHAR へカーソルを移動。 +|'(| '( 1 現在の文の文頭がある行の先頭の CHAR へ移動 +|')| ') 1 現在の文の文末がある行の先頭の CHAR へ移動 +|'<| '< 1 カレントバッファで選択されていた選択範囲の + 最初の行の先頭の CHAR へカーソルを移動。 +|'>| '> 1 カレントバッファで選択されていた選択範囲の + 最後の行の先頭の CHAR へカーソルを移動。 |'[| '[ 1 最後に編集したテキストまたは挿入したテキス トの先頭行の先頭の CHAR へカーソルを移動。 |']| '] 1 最後に編集したテキストまたは挿入したテキス トの末尾行の先頭の CHAR へカーソルを移動。 +|'{| '{ 1 現在の段落の最初の行の先頭の CHAR へ移動 +|'}| '} 1 現在の段落の最後の行の先頭の CHAR へ移動 |(| ( 1 カーソルを N 文だけ戻す。 |)| ) 1 カーソルを N 文だけ先に進める。 |star| * 1 カーソル位置の単語を前方検索し、N 番目に見 つかった位置へ移動。 -|+| + 1 カーソルを N 行下の先頭の CHAR へ移動。 +|+| + 1 <CR>と同じ。 |,| , 1 最後に実行した f, t, F または T コマンドを 逆向きに N 回繰り返す。 |-| - 1 カーソルを N 行上の先頭の CHAR へ移動。 @@ -258,9 +273,9 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |count| 7 " |count| 8 " |count| 9 " -|:| : Ex コマンドの入力開始。 -|N:| {count}: カレント行から N 行下の行までの範囲で有効と - なる Ex コマンドの入力開始。 +|:| : 1 Ex コマンドの入力開始。 +|N:| {count}: カレント行から N-1 行下の行までの範囲で有効 + となる Ex コマンドの入力開始。 |;| ; 1 最後の f, t, F または T を N 回繰り返す。 |<| <{motion} 2 Nmove の行を 'shiftwidth' 分だけ左へシフト。 |<<| << 2 N 行を 'shiftwidth' 分だけ左へシフト。 @@ -271,11 +286,11 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |?| ?{pattern}<CR> 1 {pattern} で後方検索し、N 番目に見つかった 位置へ移動。 |?<CR>| ?<CR> 1 最後の検索の {pattern} で後方検索。 -|@| @{a-z} 2 バッファ {a-z} の内容を N 回実行する。 +|@| @{a-z} 2 レジスタ {a-z} の内容を N 回実行する。 |@:| @: 最後の ":" コマンドを N 回実行する。 |@@| @@ 2 最後の @{a-z} コマンドを N 回実行する。 |A| A 2 行末に N 回テキストを追加する。 -|B| B 1 カーソルを N WORDS だけ戻す。 +|B| B 1 カーソルを N WORD だけ戻す。 |C| ["x]C 2 カーソル位置から行末までと続く N-1 行のテキ ストを削除し[バッファ x に保存して]、テキス トを入力する; "c$" と同じ。 @@ -284,11 +299,10 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 と同じ。 |E| E 1 カーソルを N 先の WORD の末尾へ移動。 |F| F{char} 1 カーソルを左方向へ N 個目の {char} に移動。 -|G| G 1 カーソルを N 行目に移動、デフォルトは最後の - 行。 +|G| G 1 カーソルを N 行目に移動、省略時は最後の行。 |H| H 1 カーソルを画面の上から N 行目に移動。 |I| I 2 行の先頭の CHAR の前に N 回テキストを挿入。 -|J| J 2 N 行結合; デフォルトは2行。 +|J| J 2 N 行結合。省略時は2行。 |K| K カーソル位置のキーワードを 'keywordprg' で 調べる。 |L| L 1 カーソルを画面の下から N 行目に移動。 @@ -307,9 +321,9 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 ンデントに依存。 |T| T{char} 1 カーソルを左方向へ N 個目の {char} の直後ま で移動。 -|U| U 2 1行中の最近の変更を総て取り消す。 +|U| U 2 1行中の最近の変更をすべて取り消す。 |V| V 行指定のビジュアルモードを開始する。 -|W| W 1 カーソルを N WORDS 先に進める。 +|W| W 1 カーソルを N WORD 先に進める。 |X| ["x]X 2 カーソルの前にある N 文字を削除する[バッファ x に保存]。 |Y| ["x]Y N 行[バッファ x に]ヤンクする; "yy" と同じ。 @@ -322,14 +336,18 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |^| ^ 1 カーソルを行の先頭の CHAR へ移動。 |_| _ 1 カーソルを N-1 行下の先頭の CHAR へ移動。 |`| `{a-zA-Z0-9} 1 カーソルをマーク {a-zA-Z0-9} へ移動。 -|`<| `< 1 カーソルをハイライト領域の先頭に移動。 -|`>| `> 1 カーソルをハイライト領域の末尾に移動。 +|`(| `( 1 現在の文の文頭へ移動 +|`)| `) 1 現在の文の文末へ移動 +|`<| `< 1 最後に選択されていた選択範囲の先頭に移動 +|`>| `> 1 最後に選択されていた選択範囲の末尾に移動 |`[| `[ 1 最後に編集したテキストまたは挿入したテキス トの先頭へカーソルを移動。 |`]| `] 1 最後に編集したテキストまたは挿入したテキス トの末尾へカーソルを移動。 |``| `` 1 最後のジャンプの前にいた位置へカーソルを移 動。 +|`{| `{ 1 現在の段落の最初へ移動 +|`}| `} 1 現在の段落の最後へ移動 |a| a 2 カーソルの直後に N 回テキストを追加する。 |b| b 1 カーソルを N ワードだけ戻す。 |c| ["x]c{motion} 2 Nmove のテキストを削除[バッファ x に保存]し、 @@ -338,6 +356,8 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 移行。 |d| ["x]d{motion} 2 Nmove のテキストを削除[バッファ x に保存]。 |dd| ["x]dd 2 N 行削除[バッファ x に保存]。 +|do| do 2 ":diffget" と同じ。 +|dp| dp 2 ":diffput" と同じ。 |e| e 1 カーソルを N 先のワードの末尾へ移動。 |f| f{char} 1 カーソルを右方向へ N 個目の {char} に移動。 |g| g{char} 拡張コマンド、下を参照。 @@ -352,9 +372,15 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 入力、N 回繰り返す。 |p| ["x]p 2 カーソルの後に[バッファ x の]テキストを N 回挿入する。 -|q| q{0-9a-zA-Z"} 入力した文字をレジスタ {0-9a-zA-Z"} (大文字 - は既存のレジスタに追加する)に記録する。 +|q| q{0-9a-zA-Z"} 入力した文字をレジスタ {0-9a-zA-Z"} に記録 + する。(大文字なら既存のレジスタに追加) |q| q (記録中なら) レジスタへの記録を終了する。 +|q:| q: コマンドラインウィンドウで : のコマンドライ + ンを編集する。 +|q/| q/ コマンドラインウィンドウで / のコマンドライ + ンを編集する。 +|q?| q? コマンドらインウィンドウで ? のコマンドライ + ンを編集する。 |r| r{char} 2 N 文字を {char} で置き換える。 |s| ["x]s 2 (置換) N 文字削除[バッファ x に保存]し、挿 入モードに移行。 @@ -367,39 +393,7 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 x に保存] |y| ["x]y{motion} Nmove のテキストを[バッファ x へ]ヤンク。 |yy| ["x]yy N 行[バッファ x へ]ヤンク。 -|z<CR>| z<CR> 画面の再描画、カーソル行をウィンドウの最上 - 部へ移動、カーソルは行のはじめの空白文字以 - 外の文字へ移動。 -|zN<CR>| z{height}<CR> 画面の再描画、ウィンドウの高さを {height} - にする。 -|z+| z+ カーソルを N 行目に移動(デフォルトはウィン - ドウの下の行)、その他は "z<CR>" と同じ。 -|z-| z- 画面の再描画、カーソル行をウィンドウの最下 - 部へ移動、カーソルは行のはじめの空白文字以 - 外の文字へ移動。 -|z.| z. 画面の再描画、カーソル行をウィンドウの中央 - 部へ移動、カーソルは行のはじめの空白文字以 - 外の文字へ移動。 -|z^| z^ カーソルを N 行目に移動(デフォルトはウィン - ドウの上の行)、その他は "z-" と同じ。 -|zb| zb 画面の再描画、カーソル行をウィンドウの最下 - 部へ移動。 -|ze| ze 'wrap' オプションがオフの時、カーソルがスク - リーンの右端になるように、水平方向にスクロー - ル。 -|zh| zh 'wrap' オプションがオフの時、水平方向に N - 文字分右へスクロール。 -|zl| zl 'wrap' オプションがオフの時、水平方向に N - 文字分左へスクロール。 -|zs| zs 'wrap' オプションがオフの時、カーソルがスク - リーンの左端になるように、水平方向にスクロー - ル。 -|zt| zt 画面の再描画、カーソル行をウィンドウの最上 - 部へ移動。 -|zz| zz 画面の再描画、カーソル行をウィンドウの中央 - 部へ移動。 -|z<Left>| z<Left> "zh" と同じ。 -|z<Right>| z<Right> "zl" と同じ。 +|z| z{char} 'z'で始まるコマンドの実行。下記参照|z| |{| { 1 カーソルを N 段落戻す。 |bar| | 1 カーソルを N カラムへ移動。 |}| } 1 カーソルを N 段落進める。 @@ -490,31 +484,41 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 タグ コマンド ノーマルモードでの動作 ~ ------------------------------------------------------------------------------ -|CTRL-W_CTRL-B| CTRL-W CTRL-B "CTRL-W b" と同じ。 -|CTRL-W_CTRL-C| CTRL-W CTRL-C "CTRL-W c" と同じ。 -|CTRL-W_CTRL-D| CTRL-W CTRL-D "CTRL-W d" と同じ。 -|CTRL-W_CTRL-F| CTRL-W CTRL-F "CTRL-W f" と同じ。 +|CTRL-W_CTRL-B| CTRL-W CTRL-B "CTRL-W b" と同じ。 +|CTRL-W_CTRL-C| CTRL-W CTRL-C "CTRL-W c" と同じ。 +|CTRL-W_CTRL-D| CTRL-W CTRL-D "CTRL-W d" と同じ。 +|CTRL-W_CTRL-F| CTRL-W CTRL-F "CTRL-W f" と同じ。 CTRL-W CTRL-G "CTRL-W g .." と同じ。 -|CTRL-W_CTRL-I| CTRL-W CTRL-I "CTRL-W i" と同じ。 -|CTRL-W_CTRL-J| CTRL-W CTRL-J "CTRL-W j" と同じ。 -|CTRL-W_CTRL-K| CTRL-W CTRL-K "CTRL-W k" と同じ。 -|CTRL-W_CTRL-N| CTRL-W CTRL-N "CTRL-W n" と同じ。 -|CTRL-W_CTRL-O| CTRL-W CTRL-O "CTRL-W o" と同じ。 -|CTRL-W_CTRL-P| CTRL-W CTRL-P "CTRL-W p" と同じ。 -|CTRL-W_CTRL-Q| CTRL-W CTRL-Q "CTRL-W q" と同じ。 -|CTRL-W_CTRL-R| CTRL-W CTRL-R "CTRL-W r" と同じ。 -|CTRL-W_CTRL-S| CTRL-W CTRL-S "CTRL-W s" と同じ。 -|CTRL-W_CTRL-T| CTRL-W CTRL-T "CTRL-W t" と同じ。 -|CTRL-W_CTRL-W| CTRL-W CTRL-W "CTRL-W w" と同じ。 -|CTRL-W_CTRL-X| CTRL-W CTRL-X "CTRL-W x" と同じ。 -|CTRL-W_CTRL-Z| CTRL-W CTRL-Z "CTRL-W z" と同じ。 -|CTRL-W_CTRL-]| CTRL-W CTRL-] "CTRL-W ]" と同じ。 -|CTRL-W_CTRL-^| CTRL-W CTRL-^ "CTRL-W ^" と同じ。 -|CTRL-W_CTRL-_| CTRL-W CTRL-_ "CTRL-W _" と同じ。 +|CTRL-W_CTRL-H| CTRL-W CTRL-H "CTRL-W h" と同じ。 +|CTRL-W_CTRL-I| CTRL-W CTRL-I "CTRL-W i" と同じ。 +|CTRL-W_CTRL-J| CTRL-W CTRL-J "CTRL-W j" と同じ。 +|CTRL-W_CTRL-K| CTRL-W CTRL-K "CTRL-W k" と同じ。 +|CTRL-W_CTRL-L| CTRL-W CTRL-L "CTRL-W l" と同じ。 +|CTRL-W_CTRL-N| CTRL-W CTRL-N "CTRL-W n" と同じ。 +|CTRL-W_CTRL-O| CTRL-W CTRL-O "CTRL-W o" と同じ。 +|CTRL-W_CTRL-P| CTRL-W CTRL-P "CTRL-W p" と同じ。 +|CTRL-W_CTRL-Q| CTRL-W CTRL-Q "CTRL-W q" と同じ。 +|CTRL-W_CTRL-R| CTRL-W CTRL-R "CTRL-W r" と同じ。 +|CTRL-W_CTRL-S| CTRL-W CTRL-S "CTRL-W s" と同じ。 +|CTRL-W_CTRL-T| CTRL-W CTRL-T "CTRL-W t" と同じ。 +|CTRL-W_CTRL-V| CTRL-W CTRL-V "CTRL-W v" と同じ。 +|CTRL-W_CTRL-W| CTRL-W CTRL-W "CTRL-W w" と同じ。 +|CTRL-W_CTRL-X| CTRL-W CTRL-X "CTRL-W x" と同じ。 +|CTRL-W_CTRL-Z| CTRL-W CTRL-Z "CTRL-W z" と同じ。 +|CTRL-W_CTRL-]| CTRL-W CTRL-] "CTRL-W ]" と同じ。 +|CTRL-W_CTRL-^| CTRL-W CTRL-^ "CTRL-W ^" と同じ。 +|CTRL-W_CTRL-_| CTRL-W CTRL-_ "CTRL-W _" と同じ。 |CTRL-W_+| CTRL-W + カレントウィンドウの高さを N 行高くする。 |CTRL-W_-| CTRL-W - カレントウィンドウの高さを N 行低くする。 -|CTRL-W_=| CTRL-W = 総てのウィンドウの高さを同じにする。 -|CTRL-W_R| CTRL-W R ウィンドウ位置を上方へ N 回転させる。 +|CTRL-W_<| CTRL-W < カレントウィンドウの幅を N 列狭める +|CTRL-W_=| CTRL-W = すべてのウィンドウの高さを同じにする。 +|CTRL-W_>| CTRL-W > カレントウィンドウの幅を N 列広くする。 +|CTRL-W_H| CTRL-W H カレントウィンドウを最も左に移動する。 +|CTRL-W_J| CTRL-W J カレントウィンドウを最も下に移動する。 +|CTRL-W_K| CTRL-W K カレントウィンドウを最も上に移動する。 +|CTRL-W_L| CTRL-W L カレントウィンドウを最も右に移動する。 +|CTRL-W_P| CTRL-W P プレビューウィンドウへ移動する。 +|CTRL-W_R| CTRL-W R ウィンドウ位置を後方へ N 回転させる。 |CTRL-W_S| CTRL-W S "CTRL-W s" と同じ。 |CTRL-W_W| CTRL-W W 上から N 番目のウィンドウに移動。N の指定が なければ、カレントウィンドウの上のウィンド @@ -523,8 +527,8 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 ンプする。 |CTRL-W_^| CTRL-W ^ カレントウィンドウを分割し、N 番目のファイ ルを編集する。 -|CTRL-W__| CTRL-W _ カレントウィンドウの高さを N 行にする(デフォ - ルトは可能な限り高く)。 +|CTRL-W__| CTRL-W _ カレントウィンドウの高さを N 行にする + (省略時は可能な限り高く)。 |CTRL-W_b| CTRL-W b 一番下のウィンドウへ移動。 |CTRL-W_c| CTRL-W c カレントウィンドウを閉じる(|:close| と同じ)。 |CTRL-W_d| CTRL-W d ウィンドウを分割し、カーソル位置の定義へジャ @@ -537,65 +541,77 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 し |:tselect| を実行する。 |CTRL-W_g}| CTRL-W g } カーソル位置のタグに対し |:ptjump| を実行す る。 +|CTRL-W_h| CTRL-W h N 個左のウィンドウに移動(一番左のウィンドウ + でストップ) |CTRL-W_i| CTRL-W i ウィンドウを分割し、カーソル位置の識別子の 宣言位置へジャンプする。 |CTRL-W_j| CTRL-W j N 個下のウィンドウに移動(一番下のウィンドウ でストップ) |CTRL-W_k| CTRL-W k N 個上のウィンドウに移動(一番上のウィンドウ でストップ) +|CTRL-W_l| CTRL-W l N 個右のウィンドウに移動(一番右のウィンドウ + でストップ) |CTRL-W_n| CTRL-W n 高さが N 行の新しいウィンドウを開く。 -|CTRL-W_o| CTRL-W o カレントウィンドウを除く総てのウィンドウを - 閉じる(|:only| と同じ)。 +|CTRL-W_o| CTRL-W o カレントウィンドウを除くすべてのウィンドウ + を閉じる(|:only| と同じ)。 |CTRL-W_p| CTRL-W p 直前の(最後にアクセスしていた)ウィンドウへ 移動。 |CTRL-W_q| CTRL-W q カレントウィンドウを終了する(|:quit| と同 じ)。 -|CTRL-W_r| CTRL-W r ウィンドウ位置を下方へ N 回転させる。 +|CTRL-W_r| CTRL-W r ウィンドウ位置を後方へ N 回転させる。 |CTRL-W_s| CTRL-W s カレントウィンドウを2つに分割し、高さが N 行の新しいウィンドウを作成する。 |CTRL-W_t| CTRL-W t 一番上のウィンドウへ移動。 +|CTRL-W_v| CTRL-W v カレントウィンドウを垂直分割する。新しい + ウィンドウの幅は N 列。 |CTRL-W_w| CTRL-W w 下から N 番目のウィンドウに移動。N の指定が なければ、カレントウィンドウの下のウィンド ウ(なければ一番上のウィンドウ)に移動。 |CTRL-W_x| CTRL-W x カレントウィンドウと上から N 番目のウィンド - ウ(デフォルトは1つ下のウィンドウ)を入れ替え - る。 + ウ(省略時は1つ下のウィンドウ)を入れ替える。 |CTRL-W_z| CTRL-W z プレビューウィンドウを閉じる。 +|CTRL-W_bar| CTRL-W | ウィンドウの幅を N 列にする。 |CTRL-W_}| CTRL-W } カーソル位置のタグをプレビューウィンドウに 表示する。 -|CTRL-W_<Down>| CTRL-W <Down> "CTRL-W j" と同じ。 +|CTRL-W_<Down>| CTRL-W <Down> "CTRL-W j" と同じ。 |CTRL-W_<Up>| CTRL-W <Up> "CTRL-W k" と同じ。 +|CTRL-W_<Left>| CTRL-W <Left> "CTRL-W h" と同じ。 +|CTRL-W_<Right>| CTRL-W <Right> "CTRL-W l" と同じ。 ============================================================================== -2.3 大括弧コマンド *[* *]* +2.3 角括弧コマンド *[* *]* タグ 文字 注 ノーマルモードでの動作 ~ ------------------------------------------------------------------------------ -|[_CTRL-D| [_CTRL-D カーソル位置の単語と一致する #define の文を - カレントファイルの先頭からカレントファイル - とインクルードファイルの中を探し、最初に一 - 致した場所へジャンプする。 -|[_CTRL-I| [_CTRL-I カーソル位置の単語を含む行をカレントファイ +|[_CTRL-D| [ CTRL-D カーソル位置の単語と一致する #define の文を + カレントファイルとインクルードファイルの中 + から探し、最初に見つけた場所へジャンプす + る。カレントファイルの先頭から検索する +|[_CTRL-I| [ CTRL-I カーソル位置の単語を含む行をカレントファイ ルの先頭から探し、最初に見つかった行へジャ ンプする。 |[#| [# 1 後方へ対応のとれていない #if, #else, #ifdef を探し、N 個目に見つかった場所へジャンプ。 +|['| [' 1 後方の小文字マークがある行の最初の非空白 + 文字へ移動する。 |[(| [( 1 後方へ対応のとれていない '(' を探し、N 個目 に見つかった場所へジャンプする。 |[star| [* 1 "[/" と同じ。 +|[`| [` 1 後方の小文字マークがある行へ移動する。 |[/| [/ 1 後方へ C コメントの始まりを探し、N 個目に見 つかった場所へジャンプする。 |[D| [D カーソル位置の単語にマッチする単語の定義を カレントファイルとインクルードファイルの中 - から検索しリスト表示する。カレントファイル + から検索し一覧表示する。カレントファイル の先頭から検索を開始する。 |[I| [I カーソル位置の単語にマッチする単語を含む行 をカレントファイルとインクルードファイルの - 中から検索しリスト表示する。カレントファイ + 中から検索し一覧表示する。カレントファイ ルの先頭から検索を開始する。 |[P| [P 2 "[p" と同じ。 |[[| [[ 1 カーソルを N 段落後方へ移動 -|[]| [] 1 カーソルを N SECTIONS 後方へ移動 +|[]| [] 1 カーソルを N SECTION 後方へ移動 +|[c| [c 1 カーソル後方へ N 個目の変更箇所へ移動 |[d| [d カーソル位置の単語にマッチする単語の最初の 定義(#define)をカレントファイルとインクルー ドファイルの中から検索し表示する。カレント @@ -603,40 +619,45 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |[f| [f "gf" と同じ。 |[i| [i カーソル位置の単語にマッチする単語を含む最 初に見つかった行をカレントファイルとインク - ルードファイルの中から検索しリスト表示する。 + ルードファイルの中から検索し一覧表示する。 カレントファイルの先頭から検索を開始する。 -|[p| [p 2 "P" と同様、さらにカレントラインにインデン - トをあわせる +|[p| [p 2 "P" と同様、さらに現在の行と同じインデント + にする |[m| [m 1 後方へ N 番目に現れた関数の先頭へカーソルを 移動。 +|[z| [z 1 開いている折畳の最初の行へ移動 |[{| [{ 1 後方へ N 番目に現れた対応する括弧のない '{' へカーソルを移動。 |[<MiddleMouse> [<MiddleMouse> 2 "[p" と同じ。 -|]_CTRL-D| ]_CTRL-D カーソル位置の単語にマッチする単語の最初の +|]_CTRL-D| ] CTRL-D カーソル位置の単語にマッチする単語の最初の 定義(#define)をカレントファイルとインクルー ドファイルの中から検索しジャンプする。カー ソル位置から検索を開始する。 -|]_CTRL-I| ]_CTRL-I カーソル位置の単語にマッチする単語を含む最 +|]_CTRL-I| ] CTRL-I カーソル位置の単語にマッチする単語を含む最 初に見つかった行をカレントファイルとインク ルードファイルの中から検索しジャンプする。 カーソル位置から検索を開始する。 -|]#| ]# 1 カーソルを N 先のマッチしていない #endif か +|]#| ]# 1 前方の対応の取れていないN個目の#endifか #else へ移動。 -|])| ]) 1 カーソルを N 先のマッチしていない ')' へ移動。 +|]'| ]' 1 前方の小文字マークがある行の最初の非空白文 + 字へ移動する。 +|])| ]) 1 前方の対応の取れていないN個目の')'へ移動 |]star| ]* 1 "]/" と同じ。 +|]`| ]` 1 前方の小文字マークがある行へ移動する。 |]/| ]/ 1 カーソルを N 先の C のコメントの最後へ移動。 |]D| ]D カーソル位置の単語にマッチする単語の定義 (#define)をカレントファイルとインクルードファ - イルの中から総てリストする。カーソル位置か + イルの中から探して表示する。カーソル位置か ら検索を開始する。 |]I| ]I カーソル位置の単語にマッチする単語を含む行 をカレントファイルとインクルードファイルの - 中から総てリストする。カーソル位置から検索 + 中から探して表示。カーソル位置から検索 を開始する。 |]P| ]P 2 "[p" と同じ。 -|][| ][ 1 カーソルを N SECTIONS 前方へ移動。 +|][| ][ 1 カーソルを N SECTION 前方へ移動。 |]]| ]] 1 カーソルを N 段落前方へ移動。 +|]c| ]c 1 カーソル前方へ N 個目の変更箇所へ移動 |]d| ]d カーソル位置の単語にマッチする単語の最初の 定義(#define)をカレントファイルとインクルー ドファイルの中から検索し表示する。カーソル @@ -644,12 +665,13 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |]f| ]f "gf" と同じ。 |]i| ]i カーソル位置の単語にマッチする単語を含む最 初に見つかった行をカレントファイルとインク - ルードファイルの中から検索しリスト表示する。 + ルードファイルの中から検索し一覧表示する。 カーソル位置から検索を開始する。 |]p| ]p 2 "p" と同様、さらにカレントラインにインデン トをあわせる |]m| ]m 1 前方へ N 番目に現れた関数の末尾へカーソルを 移動。 +|]z| ]z 1 開いている折畳の最後の行へ移動 |]}| ]} 1 カーソルを N 先のマッチしていない '}' へ移 動。 |]<MiddleMouse> ]<MiddleMouse> 2 "]p" と同じ。 @@ -659,55 +681,51 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 タグ 文字 注 ノーマルモードでの動作 ~ ------------------------------------------------------------------------------ -|g_CTRL-A| g_CTRL-A only when compiled with MEM_PROFILE - defined: dump a memory profile -|g_CTRL-G| g_CTRL-G 現在のカーソル位置に関する情報を表示。 -|g_CTRL-H| g_CTRL-H ブロック選択モードの開始。 -|g_CTRL-]| g_CTRL-] カーソル位置のタグへ |:tjump| する。 +|g_CTRL-A| g CTRL-A MEM_PROFILEを定義してコンパイルしたときのみ + メモリプロファイルをダンプする +|g_CTRL-G| g CTRL-G 現在のカーソル位置に関する情報を表示。 +|g_CTRL-H| g CTRL-H セレクトモードで矩形選択を開始 +|g_CTRL-]| g CTRL-] カーソル位置のタグへ |:tjump| する。 |g#| g# 1 "#" と同様、ただし "\<" と "\>" を使用しな い。 -|g$| g$ 1 'wrap' がオフの時、カレント行の画面に表示さ - れている右端の文字へ移動。 - 'wrap' がオフの時、カレントスクリーン行の右 - 端の文字へ移動。 +|g$| g$ 1 本当の行末ではなく、表示されたとおりの、見 + ため上の行末へ移動 +|g&| g& 2 最後に実行した":s"をすべての行で実行する +|g'| g'{mark} 1 |'|と同じだがジャンプリストを更新しない +|g`| g`{mark} 1 |`|と同じだがジャンプリストを更新しない |gstar| g* 1 "*" と同様、ただし "\<" と "\>" を使用しな い。 -|g0| g0 1 'wrap' がオフの時、カレント行の画面に表示さ - れている左端の文字へ移動。 - 'wrap' がオフの時、カレントスクリーン行の左 - 端の文字へ移動。 +|g0| g0 1 本当の行頭ではなく、表示されたとおりの、見 + ため上の行頭へ移動 +|g8| g8 UTF-8環境でカーソル位置の文字のバイト列を16 + 進数で表示する |g?| g? 2 Rot13 エンコード演算子。 -|g?g?| g?? 2 カレント行を Rot13 エンコード。 -|g?g?| g?g? 2 カレント行を Rot13 エンコード。 +|g?g?| g?? 2 現在の行を Rot13 エンコード。 +|g?g?| g?g? 2 現在の行を Rot13 エンコード。 |gD| gD 1 カーソル位置の単語の定義をカレントファイル 内で検索し、移動。 |gE| gE 1 直前の WORD の末尾に移動。 -|gH| gH 行選択モードの開始。 +|gH| gH セレクトモードで行選択を開始。 |gI| gI 2 "I" と同様、ただし1カラム目より挿入開始。 |gJ| gJ 2 スペースを挿入せずに行を連結。 |gP| ["x]gP 2 (レジスタ x からの)テキストをカーソルの前に 挿入、カーソルは挿入テキストの最後へ移動。 |gR| gR 2 仮想置換モード開始。 |gU| gU{motion} 2 Nmove テキストを大文字にする。 -|gV| gV don't reselect the previous Visual area - when executing a mapping or menu in Select - mode +|gV| gV セレクトモードでマップやメニューを使用した + 後、選択していた選択範囲を再選択しない。 |g]| g] カーソル位置の単語をタグとして :tselect を実行する -|g^| g^ 1 'wrap' オプションがオフの時、スクリーン上に - あるカレント行のもっとも左のホワイトスペー - ス以外の文字へ移動 - 'wrap' オプションがオンの時、スクリーン表 - 示でのカレント行のもっとも左のホワイトスペー - ス以外の文字へ移動 +|g^| g^ 1 本当の行頭ではなく、表示されたとおりの、見 + ため上の行頭から最初の非空白文字へ移動 |ga| ga カーソル位置の文字の ASCII コード値を表示 |gd| gd 1 カーソル位置の単語の定義を現在の関数内で探 し、移動 |ge| ge 1 直前の単語の末尾に移動 -|gf| gf カーソル位置のファイル名のファイルを編集開 - 始 -|gg| gg 1 N 行目へジャンプ、デフォルトは1行目 +|gf| gf カーソル位置のファイル名のファイルを開く +|gg| gg 1 N 行目へジャンプ、省略時は1行目 |gh| gh セレクトモードの開始 +|gi| gi 2 "i"と同じだがその前に|'^|マークへ移動する |gj| gj 1 "j" と同様、ただし 'wrap' がオンの時はスク リーン行で N 行下へ移動 |gk| gk 1 "k" と同様、ただし 'wrap' がオンの時はスク @@ -718,9 +736,10 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 入、カーソルは挿入テキストの直後へ移動 |gq| gq{motion} 2 Nmove テキストを整形する |gr| gr{char} 2 N 文字を {char} で仮想上書きする -|gs| gs N 秒間スリープする(デフォルト1秒) +|gs| gs N 秒間スリープする(省略時は1秒) |gu| gu{motion} 2 Nmove テキストを小文字にする -|gv| gv 前回のビジュアル領域を再選択する +|gv| gv 前回の選択範囲を再選択する +|gw| gw{motion} 2 Nmove テキストを整形する。カーソル移動なし |g~| g~{motion} 2 Nmove テキストの大文字、小文字を変換する |g<Down>| g<Down> 1 "gj" と同じ。 |g<End>| g<End> 1 "g$" と同じ。 @@ -730,6 +749,69 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |g<RightMouse>| g<RightMouse> <C-RightMouse> と同じ。 |g<Up>| g<Up> 1 "gk" と同じ。 +============================================================================== +2.5 'z' で始まるコマンド *z* + +タグ 文字 注 ノーマルモードでの動作 ~ +------------------------------------------------------------------------------ +|z<CR>| z<CR> 画面の再描画、カーソル行をウィンドウの最上 + 部へ移動、カーソルは行のはじめの空白文字以 + 外の文字へ移動。 +|zN<CR>| z{height}<CR> 画面の再描画、ウィンドウの高さを {height} + にする。 +|z+| z+ カーソルを N 行目に移動(省略時はウィンドウ + の下の行)、その他は "z<CR>" と同じ。 +|z-| z- 画面の再描画、カーソル行をウィンドウの最下 + 部へ移動、カーソルは行のはじめの空白文字以 + 外の文字へ移動。 +|z.| z. 画面の再描画、カーソル行をウィンドウの中央 + 部へ移動、カーソルは行のはじめの空白文字以 + 外の文字へ移動。 +|zA| zA 折畳を再帰的に開閉する +|zC| zC 折畳を再帰的に閉じる +|zD| zD 折畳を再帰的に削除する +|zE| zE 折畳をすべて削除する +|zF| zF N 行の折畳を作成する +|zM| zM 'foldlevel'を0に設定する +|zN| zN 'foldenable'をオンにする +|zO| zO 折畳を再帰的に開く +|zR| zR 'foldlevel'を最も深い折畳と同じレベルに設 + 定する +|zX| zX 'foldlevel'を再適用する +|z^| z^ カーソルを N 行目に移動(省略時はウィンドウ + の上の行)、その他は "z-" と同じ。 +|za| za 折畳を開閉する +|zb| zb 画面の再描画、カーソル行をウィンドウの最下 + 部へ移動。 +|zc| zc 折畳を閉じる +|zd| zd 折畳を削除する +|ze| ze 'wrap' オプションがオフの時、カーソルがスク + リーンの右端になるように、水平方向にスクロー + ル。 +|zf| zf{motion} Nmoveテキストの折畳を作成する +|zh| zh 'wrap' オプションがオフの時、水平方向に N + 文字分右へスクロール。 +|zi| zi 'foldenable'を切り替える +|zj| zj 1 次の折畳の始めに移動する +|zk| zk 1 前の折畳の最後に移動する +|zl| zl 'wrap' オプションがオフの時、水平方向に N + 文字分左へスクロール。 +|zm| zm 'foldlevel'を1低くする +|zn| zn 'foldenable'をオフにする +|zo| zo 折畳を開く +|zr| zr 'foldlevel'を1高くする +|zs| zs 'wrap' オプションがオフの時、カーソルがスク + リーンの左端になるように、水平方向にスクロー + ル。 +|zt| zt 画面の再描画、カーソル行をウィンドウの最上 + 部へ移動。 +|zv| zv カーソル行が表示されるように折畳を開く +|zx| zx 'foldlevel'を最適用して"zv"を実行する +|zz| zz 画面の再描画、カーソル行をウィンドウの中央 + 部へ移動。 +|z<Left>| z<Left> "zh" と同じ。 +|z<Right>| z<Right> "zl" と同じ。 + ============================================================================== 3. ビジュアルモード *visual-index* @@ -739,98 +821,88 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 タグ コマンド 注 ビジュアルモードでの動作 ~ ------------------------------------------------------------------------------ |v_CTRL-\_CTRL-N| CTRL-\ CTRL-N ビジュアルモードの停止 -|v_CTRL-G| CTRL-G ビジュアルモードとセレクトモードをトグル -|v_<BS>| <BS> 2 セレクトモード: ハイライト領域を削除 +|v_CTRL-\_CTRL-G| CTRL-\ CTRL-G 'insertmode'に合わせたモードに移行する +|v_CTRL-G| CTRL-G ビジュアルモードとセレクトモードを + 切り替える +|v_<BS>| <BS> 2 セレクトモードのとき: 選択範囲の内容を削除 |v_CTRL-H| CTRL-H 2 <BS> と同じ。 |v_CTRL-O| CTRL-O セレクトモードからビジュアルモードへ1キーで 移行 -|v_CTRL-V| CTRL-V ビジュアルモードをブロック指向にする。もし - くはブロック指向であれば、ビジュアルモード - を終了する -|v_CTRL-]| CTRL-] ハイライトされたタグへジャンプ -|v_!| !{filter} 2 ハイライトされた行を外部コマンド {filter} +|v_CTRL-V| CTRL-V ビジュアルモードを矩形選択にする。すでに + 矩形選択であれば、ビジュアルモードを終了する +|v_CTRL-]| CTRL-] 選択した文字のタグへジャンプ +|v_!| !{filter} 2 選択範囲の行を外部コマンド {filter} でフィルタする -|v_:| : ハイライトされた行を対象範囲として、コマン - ドラインのコマンドを適用する -|v_<| < 2 ハイライトされた行を 'shiftwidth' 分だけ左 - へシフト +|v_:| : 選択範囲の行を対象範囲としてコマンドライン + のコマンドを適用する +|v_<| < 2 選択範囲の行を'shiftwidth'分だけ左へシフト |v_=| = 2 'equalprg' で設定されている外部プログラムで - ハイライト行をフィルタする -|v_>| > 2 ハイライトされた行を 'shiftwidth' 分だけ右 - へシフト -|v_b_A| A 2 ブロックモードの時: ハイライトされた総ての - 行に対し、ハイライト領域の後に同じテキスト - を追加 -|v_C| C 2 ハイライトされた行を削除して、挿入開始 -|v_D| D 2 ハイライトされた行を削除 -|v_b_I| I 2 ブロックモードの時: ハイライトされた総ての - 行に対し、ハイライト領域の前に同じテキスト - を挿入 -|v_J| J 2 ハイライトされた行を連結 -|v_K| K ハイライト領域に対し 'keywordprg' を実行 -|v_O| O カーソルをハイライト領域の水平方向のもう一 - 方のコーナーに移動する - Q Ex モードに移行しない -|v_R| R 2 ハイライトされた行を削除し、挿入を開始 -|v_S| S 2 ハイライトされた行を削除し、挿入を開始 -|v_U| U 2 ハイライト領域の文字を大文字にする -|v_V| V ビジュアルモードを行指向にする。もしくは行 - 指向であれば、ビジュアルモードを終了する -|v_X| X 2 ハイライトされた行を削除 -|v_Y| Y ハイライトされた行をヤンク + 選択範囲の行をフィルタする +|v_>| > 2 選択範囲の行を'shiftwidth'分だけ右へシフト +|v_b_A| A 2 矩形選択のとき: 選択範囲のすべての行末に同 + じテキストを追加する +|v_C| C 2 選択範囲の行を削除して、挿入開始 +|v_D| D 2 選択範囲の行を削除 +|v_b_I| I 2 矩形選択のとき: 選択範囲のすべての行頭に同 + じテキストを挿入する +|v_J| J 2 選択範囲の行を連結 +|v_K| K 選択した文字で 'keywordprg' を実行 +|v_O| O 選択範囲のもう一方の端にカーソルを移動する + Q Ex モードに移行しない(未使用) +|v_R| R 2 選択範囲の行を削除し、挿入を開始 +|v_S| S 2 選択範囲の行を削除し、挿入を開始 +|v_U| U 2 選択範囲の文字を大文字にする +|v_V| V ビジュアルモードを行選択にする。すでに + 行選択であれば、ビジュアルモードを終了する +|v_X| X 2 選択範囲の行を削除 +|v_Y| Y 選択範囲の行をヤンク |v_a(| a( ab と同じ。 |v_a)| a) ab と同じ。 -|v_a<| a< ハイライト領域を < と > で囲まれた領域に拡 - 大する。 +|v_a<| a< 選択範囲を < と > で囲まれた領域に拡大する。 |v_a>| a> a< と同じ。 -|v_aB| aB ハイライト領域を { と } で囲まれた領域に拡 - 大する。 -|v_aW| aW extend highlighted area with "a WORD" -|v_a[| a[ ハイライト領域を [ と ] で囲まれた領域に拡 - 大する。 +|v_aB| aB 選択範囲を { と } で囲まれた領域に拡大する。 +|v_aW| aW 選択範囲を"a WORD"だけ拡張する +|v_a[| a[ 選択範囲を [ と ] で囲まれた領域に拡大する。 |v_a]| a] a[ と同じ。 -|v_ab| ab ハイライト領域を ( と ) で囲まれた領域に拡 - 大する。 -|v_ap| ap ハイライト領域を1段落に拡大する。 -|v_as| as ハイライト領域を1文に拡大する。 -|v_aw| aw extend highlighted area with "a word" +|v_ab| ab 選択範囲を ( と ) で囲まれた領域に拡大する。 +|v_ap| ap 選択範囲を1段落に拡大する。 +|v_as| as 選択範囲を1文に拡大する。 +|v_aw| 選択範囲を"a word"だけ拡張する |v_a{| a{ aB と同じ。 |v_a}| a} aB と同じ。 -|v_c| c 2 ハイライト領域を削除し、挿入開始 -|v_d| d 2 ハイライト領域を削除 -|v_gJ| gJ 2 ハイライトされた行をスペースを挿入せずに連 - 結 -|v_gq| gq 2 ハイライトされた行を整形する -|v_gv| gv 現在のハイライト領域と直前のハイライト領域 - を入れ替える +|v_c| c 2 選択範囲を削除し、挿入開始 +|v_d| d 2 選択範囲を削除 +|v_gJ| gJ 2 選択範囲の行をスペースを挿入せずに連結 +|v_gq| gq 2 選択範囲の行を整形する +|v_gv| gv 現在の選択範囲と直前に選択していた範囲を入 + れ替える |v_i(| i( ib と同じ。 |v_i)| i) ib と同じ。 -|v_i<| i< ハイライト領域を < と > で囲まれた内側の領 - 域に拡大する。 +|v_i<| i< 選択範囲を < と > で囲まれた内側の領域に拡 + 大する。 |v_i>| i> i< と同じ。 -|v_iB| iB ハイライト領域を { と } で囲まれた内側の領 - 域に拡大する。 -|v_iW| iW extend highlighted area with "inner WORD" -|v_i[| i[ ハイライト領域を [ と ] で囲まれた内側の領 - 域に拡大する。 +|v_iB| iB 選択範囲を { と } で囲まれた内側の領域に拡 + 大する。 +|v_iW| iW 選択範囲を"inner WORD"だけ拡張する +|v_i[| i[ 選択範囲を [ と ] で囲まれた内側の領域に拡 + 大する。 |v_i]| i] i[ と同じ。 -|v_ib| ib ハイライト領域を ( と ) で囲まれた内側の領 - 域に拡大する。 -|v_ip| ip ハイライト領域を段落の内側の領域に拡大する。 -|v_is| is ハイライト領域を文の内側の領域に拡大する。 -|v_iw| iw extend highlighted area with "inner word" +|v_ib| ib 選択範囲を ( と ) で囲まれた内側の領域に拡 + 大する。 +|v_ip| ip 選択範囲を段落の内側の領域に拡大する。 +|v_is| is 選択範囲を文の内側の領域に拡大する。 +|v_iw| iw 選択範囲を"inner word"だけ拡張する |v_i{| i{ iB と同じ。 |v_i}| i} iB と同じ。 -|v_o| o カーソルをハイライト領域の対角方向のもう一 - 方のコーナーに移動する -|v_r| r 2 ハイライト領域を削除し、挿入開始 -|v_s| s 2 ハイライト領域を削除し、挿入開始 -|v_u| u 2 ハイライト領域の文字を小文字にする。 -|v_v| v ビジュアルモードを文字指向とする。もしくは - 文字指向ならばビジュアルモードを終了する。 -|v_x| x 2 ハイライト領域を削除 -|v_y| y ハイライト領域をヤンク -|v_~| ~ 2 ハイライト領域の文字の大文字小文字を変換 +|v_o| o 選択範囲のもう一方の端にカーソルを移動する +|v_r| r 2 選択範囲の文字を削除し、挿入開始 +|v_s| s 2 選択範囲の文字を削除し、挿入開始 +|v_u| u 2 選択範囲の文字を小文字にする。 +|v_v| v ビジュアルモードを文字選択とする。すでに + 文字選択ならばビジュアルモードを終了する。 +|v_x| x 2 選択範囲の文字を削除 +|v_y| y 選択範囲の文字をヤンク +|v_~| ~ 2 選択範囲の文字の大文字小文字を切り替える ============================================================================== 4. コマンドライン編集 *ex-edit-index* @@ -841,31 +913,29 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 やタグ、コマンド等適切な補完が行なわれる。 CTRL-@ 未使用 -|c_CTRL-A| CTRL-A カーソルより前のパタンで補完を行い、総ての候補 - を挿入 +|c_CTRL-A| CTRL-A カーソル直前の文字を補完し、すべての候補を挿入 |c_CTRL-B| CTRL-B カーソルをコマンドラインの先頭へ移動 |c_CTRL-C| CTRL-C <ESC> と同じ。 -|c_CTRL-D| CTRL-D カーソルより前のパタンに一致する補完候補をリス - ト表示 +|c_CTRL-D| CTRL-D カーソル直前の文字に一致する補完候補を一覧表示 |c_CTRL-E| CTRL-E カーソルをコマンドラインの末尾へ移動 - CTRL-F 未使用 +|'cedit'| CTRL-F 'cedit'が標準設定なら、コマンドラインウィンド + ウを開く。そうでないなら未使用 CTRL-G 未使用 -|c_<BS>| <BS> カーソルの直前の文字を削除 +|c_<BS>| <BS> カーソル直前の文字を削除 |c_digraph| {char1} <BS> {char2} - 'digraph' がオンの時、2バイト文字を入力する + 'digraph'がオンの時、二重字(digraph)を入力する |c_CTRL-H| CTRL-H <BS> と同じ。 -|c_<Tab>| <Tab> 'wildchar' が <Tab> の時: カーソルの前のパタンで - 補完を行なう +|c_<Tab>| <Tab> 'wildchar' が <Tab> の時: カーソル直前の文字を + 補完する |c_<S-Tab>| <S-Tab> CTRL-P と同じ。 -|c_wildchar| 'wildchar' カーソルの前のパタンで補完を行なう (デフォルト: - <Tab>) +|c_wildchar| 'wildchar' カーソル直前の文字を補完する('wildchar'は標準 + 設定なら<Tab>) |c_CTRL-I| CTRL-I <Tab> と同じ。 |c_<NL>| <NL> <CR> と同じ。 |c_CTRL-J| CTRL-J <CR> と同じ。 |c_CTRL-K| CTRL-K {char1} {char2} - 2バイト文字を入力 -|c_CTRL-L| CTRL-L カーソルの前のパタンで補完を行ない、最長一致部 - 分までを挿入 + 二重字(digraph)を入力 +|c_CTRL-L| CTRL-L カーソル直前の文字を補完し、最も長い候補を挿入 |c_<CR>| <CR> 入力したコマンドを実行 |c_<CR>| CTRL-M <CR> と同じ。 |c_CTRL-N| CTRL-N 'wildchar' を使用して複数の補完候補があるとき: @@ -875,7 +945,7 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |c_CTRL-P| CTRL-P 'wildchar' を使用して複数の補完候補があるとき: 前の補完候補を表示 その他: <Up> と同じ -|c_CTRL-Q| CTRL-Q CTRL-V と同じ (端末制御で使用) +|c_CTRL-Q| CTRL-Q CTRL-V と同じ (端末制御で使用されていなければ) |c_CTRL-R| CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A} カーソル位置のオブジェクトまたはレジスタの内容 をキー入力したかのように挿入 @@ -883,22 +953,27 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 カーソル位置のオブジェクトまたはレジスタの内容 を文字通りに挿入 CTRL-S (端末制御に使用) -|c_CTRL-U| CTRL-U 総ての文字を削除 -|c_CTRL-V| CTRL-V 続いて入力される数字以外の文字を文字通りに挿入、 - もしくは3桁の十進数を1バイト文字として挿入 + CTRL-T 未使用 +|c_CTRL-U| CTRL-U すべての文字を削除 +|c_CTRL-V| CTRL-V 続いて入力する、数字以外の文字をそのまま挿入 + もしくは3桁の十進数で1バイト文字を指定して挿入 |c_CTRL-W| CTRL-W カーソルより前にある単語を削除 CTRL-X 未使用 (補完機能のために予約) - CTRL-Y 未使用 + CTRL-Y モードレス選択をコピー(ヤンク)する CTRL-Z 未使用 (サスペンド機能のために予約) |c_<Esc>| <Esc> コマンドラインを実行せずに破棄する |c_<Esc>| CTRL-[ <Esc> と同じ。 -|c_CTRL-\_CTRL-N| CTRL-\ CTRL-N コマンドラインを破棄して、ノーマルモードへ移行 - CTRL-\ a - z 将来の拡張のために予約 +|c_CTRL-\_CTRL-N| CTRL-\ CTRL-N コマンドラインを破棄して、ノーマルモードへ移行 +|c_CTRL-\_CTRL-G| CTRL-\ CTRL-G コマンドラインを破棄して、'insertmode'に合わせ + たモードへ移行 + CTRL-\ a - d 将来の拡張のために予約 +|c_CTRL-\_e| CTRL-\ e {expr} コマンドラインを{expr}の結果で置き換える + CTRL-\ f - z 将来の拡張のために予約 CTRL-\ others 未使用 CTRL-] 未使用 - CTRL-^ 未使用 -|c_CTRL-_| CTRL-_ 'allowrevins' がセットされている場合: 入力方式 - を変更 (Hebrew:右から左、Farsi:左から右) +|c_CTRL-^| CTRL-^ マップ|:lmap|の有効無効を切り替える +|c_CTRL-_| CTRL-_ 'allowrevins' がオンのとき、言語を切り替える。 + (ヘブライ語、ペルシア語) |c_<Del>| <Del> カーソル位置の文字を削除 |c_<Left>| <Left> カーソルを左へ移動 |c_<S-Left>| <S-Left> カーソルを1単語左へ移動 @@ -919,12 +994,14 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |c_<Insert>| <Insert> 挿入モード/上書きモードを変更 |c_<LeftMouse>| <LeftMouse> カーソルをマウスクリック位置へ移動 +You found it, Arthur! *holy-grail* + ============================================================================== -5. EX コマンド *ex-cmd-index* +5. EX コマンド *ex-cmd-index* *:index* -以下に簡単ではあるが総ての ":" コマンドを列挙し説明した。ただし、引数についての -説明はしていない。コマンド名で省略可能な部分を [] で囲った。コマンドはコマンド -名のうち省略できない部分を対象としてソートをした。 +以下に簡単ではあるがすべての ":" コマンドを列挙した。引数についての説明はして +いない。コマンド名の省略可能な部分を [] で囲った。コマンドはコマンド名のうち省 +略できない部分を対象としてソートした。 |:!| :! 行をフィルタにかける、または、外部コマンドを実 行する @@ -937,134 +1014,192 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |:>| :> 'shiftwidth' 1つ分だけ行を右へシフト |:@| :@ レジスタの内容を実行 |:@@| :@@ 直前の ":@" を繰り返す -|:Next| :N[ext] 引数リス途中の1つ前のファイルを編集 +|:Next| :N[ext] 引数リストの1つ前のファイルを編集 |:Print| :P[rint] 行を表示する -|:X| :X ask for encryption key +|:X| :X 暗号鍵を設定する |:append| :a[ppend] テキストを追加する -|:abbreviate| :ab[breviate] enter abbreviation -|:abclear| :abc[lear] remove all abbreviations +|:abbreviate| :ab[breviate] 短縮入力を登録する +|:abclear| :abc[lear] すべての短縮入力を削除する +|:aboveleft| :abo[veleft] ウィンドウが左もしくは上に分割されるようにする |:all| :al[l] 引数リストの全ファイルをウィンドウ作成して表示 -|:amenu| :am[enu] 総てのモードに対してメニュー項目を追加 -|:anoremenu| :an[oremenu] 総てのモードに対してリマップされないメニュー項 - 目を追加 +|:amenu| :am[enu] すべてのモードに対してメニュー項目を追加 +|:anoremenu| :an[oremenu] すべてのモードに対して再マップされないメニュー + 項目を追加 |:args| :ar[gs] 引数リストを表示 -|:argument| :argu[ment] 引数リスト中の特定のファイルを編集 +|:argadd| :arga[dd] 引数リストにファイルを追加する +|:argdelete| :argd[elete] 引数リストからファイルを削除する +|:argedit| :arge[dit] 引数リストにファイルを追加し、開く +|:argdo| :argdo 引数リストのすべてのファイルに対してコマンドを + 実行する +|:argglobal| :argg[lobal] グローバル引数リストを使用する +|:arglocal| :argl[ocal] ローカル引数リストを使用する +|:argument| :argu[ment] 引数リストの指定したファイルを開く |:ascii| :as[cii] カーソル位置の文字のアスキーコードを表示 |:autocmd| :au[tocmd] オートコマンドの入力と表示 |:augroup| :aug[roup] 使用するオートコマンドグループの選択と表示 -|:aunmenu| :aun[menu] 総てのモードに対してメニュー項目を削除 -|:buffer| :b[uffer] バッファリス途中の特定のバッファを編集 -|:bNext| :bN[ext] バッファリスト中の次のバッファを編集 -|:ball| :ba[ll] バッファリスト中の各ファイルに対しウィンドウを - 作成して表示 -|:badd| :bad[d] バッファリストにファイルを追加 -|:bdelete| :bd[elete] バッファリストから特定のファイルを削除 -|:behave| :be[have] set mouse and selection behavior - 目を追加 -|:blast| :bl[ast] バッファリスト中の最後のバッファを編集 -|:bmodified| :bm[odified] バッファリスト中の次の編集中のファイルを編集 -|:bnext| :bn[ext] バッファリスト中の次のバッファを編集 -|:bprevious| :bp[revious] バッファリスト中の前のバッファを編集 -|:brewind| :br[ewind] バッファリスト中の先頭のバッファを編集 +|:aunmenu| :aun[menu] すべてのモードに対してメニュー項目を削除 +|:buffer| :b[uffer] バッファリストの指定したバッファを開く +|:bNext| :bN[ext] バッファリストの前のバッファを開く +|:ball| :ba[ll] バッファリストのすべてのバッファをウィンドウを + 作成して開く +|:badd| :bad[d] バッファリストにバッファを追加 +|:bdelete| :bd[elete] バッファリストからバッファを削除 +|:behave| :be[have] マウス操作や選択の動作を設定する +|:belowright| :bel[owright] ウィンドウが右もしくは下に分割されるようにする +|:bfirst| :bf[irst] バッファリストの最初のバッファを開く +|:blast| :bl[ast] バッファリストの最後のバッファを開く +|:bmodified| :bm[odified] バッファリストの次の変更済みバッファを開く +|:bnext| :bn[ext] バッファリストの次のバッファを開く +|:botright| :bo[tright] ウィンドウが最も右もしくは最も下に分割されるよ + うにする +|:bprevious| :bp[revious] バッファリストの前のバッファを開く +|:brewind| :br[ewind] バッファリストの先頭のバッファを開く |:break| :brea[k] while ループを抜ける +|:breakadd| :breaka[dd] デバッガのブレークポイントを追加する +|:breakdel| :breakd[el] デバッガのブレークポイントを削除する +|:breaklist| :breakl[ist] デバッガのブレークポイントを一覧表示する |:browse| :bro[wse] ファイル選択ダイアログをポップアップする +|:bufdo| :bufdo バッファリストのすべてのバッファに対してコマン + ドを実行する |:buffers| :buffers バッファリストのファイル名をリスト表示 |:bunload| :bun[load] 指定のバッファをアンロード +|:bwipeout| :bw[ipeout] バッファの一切を削除する |:change| :c[hange] 1行または連続する複数行を上書きする |:cNext| :cN[ext] 直前のエラーへジャンプ +|:cNfile| :cNf[ile] エラーリストの前のファイルの最後のエラーへ移動 + する |:cabbrev| :ca[bbrev] コマンドラインモードを対象とする ":abbreviate" コマンド -|:cabclear| :cabc[lear] コマンドラインモードにおける総ての - abbrebiation を削除 -|:call| :cal[l] 関数をコール +|:cabclear| :cabc[lear] コマンドラインモードにおけるすべての + 短縮入力を削除 +|:call| :cal[l] 関数を実行する +|:catch| :cat[ch] :tryコマンドの一部 |:cc| :cc 指定のエラーへジャンプ +|:cclose| :ccl[ose] クイックフィックスウィンドウを閉じる |:cd| :cd ディレクトリの移動 |:center| :ce[nter] 行を中央寄せに整形 -|:cfile| :cf[ile] read the file with error messages +|:cfile| :cf[ile] エラーファイルを読み込み最初のエラーへジャンプ +|:cfirst| :cfir[st] 指定のエラーへジャンプ。省略時は先頭のエラー +|:cgetfile| :cg[etfile] エラーファイルを読み込む |:change| :ch[ange] 行を削除し、テキストを挿入 |:chdir| :chd[ir] ディレクトリの移動 -|:checkpath| :che[ckpath] インクルードファイルをリスト表示 -|:clist| :cl[ist] 総てのエラーをリスト表示 -|:clast| :cla[st] 指定のエラーへジャンプ、デフォルトは最後のエラー +|:checkpath| :che[ckpath] インクルードファイルを一覧表示 +|:checktime| :checkt[ime] 開いているファイルのタイムスタンプを確認する +|:clist| :cl[ist] すべてのエラーを一覧表示 +|:clast| :cla[st] 指定のエラーへジャンプ、省略時は最後のエラー |:close| :clo[se] カレントウィンドウを閉じる -|:cmap| :cm[ap] コマンドラインモードを対象とする ":map" コマン - ド -|:cmapclear| :cmapc[lear] コマンドラインモードの総てのマッピングを削除 +|:cmap| :cm[ap] コマンドラインモードを対象とする":map"コマンド +|:cmapclear| :cmapc[lear] コマンドラインモードのすべてのマップを削除 |:cmenu| :cme[nu] コマンドラインモードのメニューを追加 |:cnext| :cn[ext] 次のエラーへジャンプ -|:cnewer| :cnew[er] go to newer error list -|:cnfile| :cnf[ile] 次のファイルの先頭エラーへジャンプ -|:cnoremap| :cno[remap] コマンドラインモードを対象とする ":noremap" コ - マンド +|:cnewer| :cnew[er] より新しいエラーリストを使用する +|:cnfile| :cnf[ile] エラーリストの次のファイルの先頭エラーへ + ジャンプ +|:cnoremap| :cno[remap] コマンドラインモードを対象とする ":noremap" + コマンド |:cnoreabbrev| :cnorea[bbrev] コマンドラインモードを対象とする ":noreabbrev" コマンド |:cnoremenu| :cnoreme[nu] コマンドラインモードを対象とする ":noremenu" コマンド |:copy| :co[py] 行のコピー -|:colder| :col[der] go to older error list +|:colder| :col[der] より古いエラーリストを使用する +|:colorscheme| :colo[rscheme] 指定した色テーマをロードする |:command| :com[mand] ユーザ定義コマンドの作成 -|:comclear| :comc[lear] 総てのユーザ定義コマンドの削除 +|:comclear| :comc[lear] すべてのユーザ定義コマンドの削除 +|:compiler| :comp[iler] 指定したコンパイラ用の設定をする |:continue| :con[tinue] :while に戻って実行を続ける -|:confirm| :conf[irm] prompt user when confirmation required +|:confirm| :conf[irm] コマンドを実行し、ユーザの確認が必要ならプロン + プトを表示する +|:copen| :cope[n] クイックフィックスウィンドウを開く |:cprevious| :cp[revious] 直前のエラーへジャンプ -|:cquit| :cq[uit] quit Vim with an error code -|:crewind| :cr[ewind] 指定のエラーへジャンプ、デフォルトは先頭のエラー +|:cpfile| :cpf[ile] エラーリストの前のファイルの最後のエラーへ + ジャンプ +|:cquit| :cq[uit] Vimを終了しエラーコードを返す +|:crewind| :cr[ewind] 指定のエラーへジャンプ。省略時は先頭のエラー |:cscope| :cs[cope] cscope コマンドを実行 -|:cstag| :cst[ag] use cscope to jump to a tag +|:cstag| :cst[ag] cscope を使用してタグへジャンプする |:cunmap| :cu[nmap] コマンドラインモードを対象とする ":unmap" コマ ンド |:cunabbrev| :cuna[bbrev] コマンドラインモードを対象とする ":unabbrev" コマンド |:cunmenu| :cunme[nu] コマンドラインモードのメニューを削除 +|:cwindow| :cw[indow] クイックフィックスウィンドウを開閉する |:delete| :d[elete] 行を削除 +|:debug| :deb[ug] コマンドをデバッグモードで実行する +|:debuggreedy| :debugg[reedy] デバッグモードのコマンドを標準入力から読み込む |:delcommand| :delc[ommand] ユーザ定義コマンドの削除 -|:delfunction| :delf[unction] ユーザ定義ファンクションの削除 +|:delfunction| :delf[unction] ユーザ定義関数の削除 +|:diffupdate| :dif[fupdate] 'diff'バッファを更新する +|:diffget| :diffg[et] カレントバッファの差異を他方に合わせる +|:diffpatch| :diffp[atch] パッチを適用した新しい差分バッファを作成する +|:diffput| :diffpu[t] 他方の差異をカレントバッファに合わせる +|:diffsplit| :diffs[plit] ファイルを開きその違いを表示する +|:diffthis| :diffthis カレントウィンドウを差分ウィンドウにする +|:digraphs| :dig[raphs] 二重字(digraph)の入力または表示 |:display| :di[splay] レジスタの内容を表示 -|:digraphs| :dig[raphs] 2バイト文字の入力または表示 |:djump| :dj[ump] #define へジャンプ |:dlist| :dl[ist] #define をリスト表示 |:doautocmd| :do[autocmd] カレントバッファに対しオートコマンドを適用する -|:doautoall| :doautoa[ll] ロードされているバッファ総てにオートコマンドを - 適用する -|:dsearch| :ds[earch] list one #define +|:doautoall| :doautoa[ll] ロードされているバッファすべてにオートコマンド + を適用する +|:drop| :dr[op] 指定したファイルが表示されているウィンドウに + ジャンプするか、カレントウィンドウで開く +|:dsearch| :ds[earch] マクロ定義(#define)を表示する |:dsplit| :dsp[lit] ウィンドウを分割し #define へジャンプ |:edit| :e[dit] ファイルの編集 |:echo| :ec[ho] 式の結果を表示する -|:echohl| :echoh[l] set highlighting for echo commands -|:echon| :echon :echo と同じ、ただし <EOL> を表示しない +|:echoerr| :echoe[rr] :echoと同じだが、エラー表示し、履歴に残す +|:echohl| :echoh[l] echoコマンドで使用する強調表示を設定する +|:echomsg| :echom[sg] :echoと同じだが、履歴に残す +|:echon| :echon :echo と同じ、ただし <EOL> を出力しない |:else| :el[se] :if コマンドと一緒に使用する |:elseif| :elsei[f] :if コマンドと一緒に使用する -|:emenu| :em[enu] 名前でメニューを実行 +|:emenu| :em[enu] 名前を指定してメニューを実行 |:endif| :en[dif] 直前の :if の終了 -|:endfunction| :endf[unction] ユーザファンクションの終了 +|:endfunction| :endf[unction] ユーザ定義関数の終了 +|:endtry| :endt[ry] 直前の:tryを終了する |:endwhile| :endw[hile] 直前の :while の終了 +|:enew| :ene[w] 新しい名無しバッファを開く |:ex| :ex ":edit" と同じ。 |:execute| :exe[cute] 式の結果を実行する |:exit| :exi[t] ":xit" と同じ。 -|:file| :f[ile] カレントファイル名の設定または表示 -|:files| :files バッファリスト中の全ファイルをリスト表示 +|:file| :f[ile] カレントファイルの名前を設定または表示 +|:files| :files バッファリストの全ファイルを一覧表示 |:filetype| :filet[ype] ファイルタイプ検出の on/off 切換 -|:find| :fin[d] 'path' の中からファイルを検索し、編集する +|:find| :fin[d] 'path' の中からファイルを検索し、開く +|:finally| :fina[lly] :try コマンドの一部 +|:finish| :fini[sh] Vimスクリプトの読み込みを終了する +|:first| :fir[st] 引数リストの最初のファイルを開く |:fixdel| :fix[del] <Del> のキーコードを設定 -|:function| :fu[nction] ユーザファンクションを定義 -|:global| :g[lobal] execute commands for matching lines +|:fold| :fo[ld] 折畳を作成する +|:foldclose| :foldc[lose] 折畳を閉じる +|:folddoopen| :foldd[oopen] 閉じている折畳以外の行にコマンドを実行する +|:folddoclosed| :folddoc[losed] 閉じている折畳の中の行にコマンドを実行する +|:foldopen| :foldo[pen] 折畳を開く +|:function| :fu[nction] ユーザ定義関数を定義 +|:global| :g[lobal] パターンにマッチした行でコマンドを実行する |:goto| :go[to] バッファ内の指定したバイト数の場所へジャンプ |:grep| :gr[ep] 'grepprg' を実行し、最初にマッチした位置へジャ ンプ +|:grepadd| :grepa[dd] grepと同じだが、結果を現在のリストへ加える |:gui| :gu[i] GUI をスタートする |:gvim| :gv[im] GUI をスタートする +|:hardcopy| :ha[rdcopy] テキストをプリンタに出力する |:help| :h[elp] ヘルプウィンドウを表示 |:helpfind| :helpf[ind] ヘルプのキーワードを入力するためのダイアログを ポップアップする -|:highlight| :hi[ghlight] ハイライトルールを指定する -|:hide| :hid[e] hide current buffer for a command -|:history| :his[tory] コマンドのヒストリを表示 +|:helpgrep| :helpg[rep] ヘルプファイル検索用の":grep" +|:helptags| :helpt[ags] 指定したディレクトリのヘルプタグを作成する +|:highlight| :hi[ghlight] 強調表示を定義する +|:hide| :hid[e] コマンドを実行し、必要ならカレントバッファを + 隠れ(hidden)バッファにする +|:history| :his[tory] コマンドラインの履歴を表示 |:insert| :i[nsert] テキストを挿入 |:iabbrev| :ia[bbrev] 挿入モードを対象とする ":abbrev" コマンド |:iabclear| :iabc[lear] 挿入モードを対象とする ":abclear" コマンド |:if| :if 条件が成立した場合にコマンド群を実行 |:ijump| :ij[ump] 識別子の定義へジャンプ -|:ilist| :il[ist] 識別子に一致した総ての行をリスト表示 +|:ilist| :il[ist] 識別子に一致したすべての行をリスト表示 |:imap| :im[ap] 挿入モードを対象とした ":map" コマンド |:imapclear| :imapc[lear] 挿入モードを対象とした ":mapclear" コマンド |:imenu| :ime[nu] 挿入モードを対象にメニュー追加 @@ -1080,48 +1215,64 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |:join| :j[oin] 行の結合 |:jumps| :ju[mps] ジャンプリストの表示 |:k| :k マークを設定 +|:keepmarks| :kee[pmarks] マークを変更せずにコマンドを実行する +|:keepjumps| :keepj[jumps] マークやジャンプリストを変更せずにコマンドを実 + 行する |:list| :l[ist] 行を表示 -|:last| :la[st] 引数リスト中の最後のファイルを編集 -|:left| :le[ft] 行を左寄せ +|:last| :la[st] 引数リストの最後のファイルを編集 +|:language| :lan[guage] 言語(ロケール)を設定する +|:lcd| :lc[d] ウィンドウのカレントディレクトリを変更する +|:lchdir| :lch[dir] ウィンドウのカレントディレクトリを変更する +|:left| :le[ft] 行を左寄せに整形 +|:leftabove| :lefta[bove] ウィンドウが左もしくは上に分割されるようにする |:let| :let 変数またはオプションに値を設定する -|:ls| :ls 総てのバッファを表示 +|:lmap| :lm[ap] ":map!"と同だが、Lang-Argモードも対象 +|:lmapclear| :lmapc[lear] ":mapclear!"と同じだが、Lang-Argモードも対象 +|:lnoremap| :ln[oremap] ":noremap!"と同じだが、Lang-Argモードも対象 +|:loadkeymap| :loadk[eymap] 次の行からEOFまでキーマップをロードする +|:loadview| :lo[adview] カレントウィンドウにビューを読み込む +|:lockmarks| :loc[kmarks] マークを調整せずにコマンドを実行する +|:lunmap| :lu[nmap] ":unmap!"と同じだが、Lang-Argモードも対象 +|:ls| :ls すべてのバッファを表示 |:move| :m[ove] 行を移動する |:mark| :ma[rk] マークを設定 -|:make| :mak[e] execute external command 'makeprg' and parse - error messages -|:map| :map マッピングの設定または表示 -|:mapclear| :mapc[lear] ノーマルモードとビジュアルモードを対象にマッピ - ングをクリア -|:marks| :marks 総てのマークを表示 +|:make| :mak[e] 外部プログラム'makeprg'を実行し、エラーメッ + セージを解釈する +|:map| :map マップの設定または表示 +|:mapclear| :mapc[lear] ノーマルモードとビジュアルモードを対象にマップ + をクリア +|:marks| :marks すべてのマークを表示 +|:match| :mat[ch] 指定したパターンの文字を強調表示する |:menu| :me[nu] 新しいメニュー項目を追加 +|:menutranslate| :menut[ranslate] 翻訳したメニュー項目を追加する |:messages| :mes[sages] 直前に表示されたメッセージの表示 -|:mkexrc| :mk[exrc] 現在のマッピングと設定をファイルに書き出す -|:mksession| :mks[ession] session情報をファイルに書き出す -|:mkvimrc| :mkv[imrc] 現在のマッピングと設定をファイルに書き出す +|:mkexrc| :mk[exrc] 現在のマップと設定をファイルに書き出す +|:mksession| :mks[ession] セッション情報をファイルに書き出す +|:mkview| :mkvie[w] カレントウィンドウのビューをファイルに保存する +|:mkvimrc| :mkv[imrc] 現在のマップと設定をファイルに書き出す |:mode| :mod[e] スクリーンモードを表示または変更する -|:next| :n[ext] 引数リスト中の次のファイルを読み込む +|:next| :n[ext] 引数リストの次のファイルを開く |:new| :new 新規に空のウィンドウを作成する |:nmap| :nm[ap] ノーマルモードを対象とする ":map" コマンド -|:nmapclear| :nmapc[lear] ノーマルモードの総てのマッピングを消去する +|:nmapclear| :nmapc[lear] ノーマルモードのすべてのマップを削除する |:nmenu| :nme[nu] ノーマルモードのメニューを追加する |:nnoremap| :nn[oremap] ノーマルモードを対象とする ":noremap" コマンド |:nnoremenu| :nnoreme[nu] ノーマルモードを対象とする ":noremenu" コマン ド -|: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 - remapped -|:noremenu| :noreme[nu] enter a menu that will not be remapped +|:noremap| :no[remap] 再マップされないマップを定義する +|:nohlsearch| :noh[lsearch] 一時的に'hlsearch'の強調表示をやめる +|:noreabbrev| :norea[bbrev] 再マップされない短縮入力を定義する +|:noremenu| :noreme[nu] 再マップされないメニューを定義する |:normal| :norm[al] ノーマルモードのコマンドを実行する |:number| :nu[mber] 行番号を表示 |:nunmap| :nun[map] ノーマルモードを対象とする ":unmap" コマンド |:nunmenu| :nunme[nu] ノーマルモードのメニューを削除 -|:open| :o[pen] open(Operator-pending?)モードを開始(未実装) +|:open| :o[pen] openモードを開始(未実装) |:omap| :om[ap] Operator-pending モードを対象とする ":map" コマンド -|:omapclear| :omapc[lear] Operator-pending モードのマッピングを総て削除 +|:omapclear| :omapc[lear] Operator-pending モードのマップをすべて削除 |:omenu| :ome[nu] Operator-pending モードのメニューを追加 -|:only| :on[ly] カレントウィンドウ以外のウィンドウを総て閉じる +|:only| :on[ly] カレントウィンドウ以外のウィンドウをすべて閉じる |:onoremap| :ono[remap] Operator-pending モードを対象とする ":noremap" コマンド |:onoremenu| :onoreme[nu] Operator-pending モードを対象とする @@ -1132,16 +1283,21 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |:ounmenu| :ounme[nu] Operator-pending モードのメニューを削除 |:print| :p[rint] 行単位で印刷する |:pclose| :pc[lose] プレビューウィンドウを閉じる +|:pedit| :ped[it] プレビューウィンドウでファイルを開く |:perl| :pe[rl] Perl コマンドを実行 |:perldo| :perld[o] 1行ずつ Perl コマンドを実行 |:pop| :po[p] タグスタックの1つ古いエントリへジャンプ +|:popup| :pop[up] 指定した名前のメニューをポップアップ表示する |:ppop| :pp[op] プレビューウィンドウで ":pop" を実行 -|:preserve| :pre[serve] 総てのテキストを swap ファイルに書き出す +|:preserve| :pre[serve] すべてのテキストをスワップファイルに書き出す |:previous| :prev[ious] 引数リスト中の前のファイルを読み込む |:promptfind| :pro[mptfind] 検索ダイアログを開く |:promptrepl| :promptr[epl] 検索/置換ダイアログを開く -|:ptag| :pt[ag] プレビューウィンドウにタグを表示 +|:psearch| :ps[earch] ":ijump"と同じだが、結果をプレビューウィンドウ + で表示する +|:ptag| :pt[ag] プレビューウィンドウでタグを表示 |:ptNext| :ptN[ext] プレビューウィンドウで |:tNext| を実行 +|:ptfirst| :ptf[irst] プレビューウィンドウで|:trewind| を実行 |:ptjump| :ptj[ump] プレビューウィンドウで |:tjump| を実行、タグを 表示 |:ptlast| :ptl[ast] プレビューウィンドウで |:tlast| を実行 @@ -1154,74 +1310,98 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |:pwd| :pw[d] カレントディレクトリを表示 |:python| :py[thon] Python コマンドを実行 |:pyfile| :pyf[ile] Python スクリプトファイルを実行 -|:quit| :q[uit] カレントウィンドウを終了、または Vim を終了 +|:quit| :q[uit] カレントウィンドウを閉じる(ウィンドウが1つなら + Vim を終了) +|:quitall| :quita[ll] Vim を終了 |:qall| :qa[ll] Vim を終了 |:read| :r[ead] テキストにファイルを挿入 -|:recover| :rec[over] swap ファイルからファイルを復元 +|:recover| :rec[over] スワップファイルからファイルを復元 |:redo| :red[o] 1回のアンドゥをリドゥする +|:redraw| :redr[aw] 画面を再描画する +|:redrawstatus| :redraws[tatus] ステータスラインを再描画する |:redir| :redi[r] ファイルまたはレジスタにメッセージをリダイレク トする |:registers| :reg[isters] レジスタの内容を表示 |:resize| :res[ize] カレントウィンドウの高さを変更 |:retab| :ret[ab] タブの大きさを変更 |:return| :retu[rn] ユーザファンクションからリターンする -|:rewind| :rew[ind] 引数リスト中の先頭のファイルを読み込む -|:right| :ri[ght] right align text +|:rewind| :rew[ind] 引数リストの先頭のファイルを開く +|:right| :ri[ght] テキストを右寄せに整形 +|:rightbelow| :rightb[elow] ウィンドウが右もしくは下に分割されるようにする +|:ruby| :rub[y] Rubyのコマンドを実行する +|:rubydo| :rubyd[o] 各行に対してRubyのコマンドを実行する +|:rubyfile| :rubyf[ile] Rubyスクリプトファイルを実行する +|:runtime| :ru[ntime] Vimスクリプトを'runtimepath'から探して実行する |:rviminfo| :rv[iminfo] viminfo ファイルを読み込む |:substitute| :s[ubstitute] テキストの置換 -|:sNext| :sN[ext] ウィンドウを分割して、引数リスト中の次のファイ - ルを読み込む -|:sargument| :sa[rgument] ウィンドウを分割して、引数リスト中の指定ファイ - ルを読み込む -|:sall| :sal[l] 引数リスト中の各ファイルをウィンドウを開いて読 - み込む -|:sbuffer| :sb[uffer] ウィンドウを分割して、バッファリスト中の指定ファ - イルを読み込む -|:sbNext| :sbN[ext] ウィンドウを分割して、バッファリスト中の前のファ - イルを読み込む -|:sball| :sba[ll] バッファリスト中の各ファイルをウィンドウを開い - て読み込む -|:sblast| :sbl[ast] ウィンドウを分割して、バッファリスト中の最後の - ファイルを読み込む -|:sbmodified| :sbm[odified] ウィンドウを分割して、バッファリスト中の編集 - 中のファイルを読み込む -|:sbnext| :sbn[ext] ウィンドウを分割して、バッファリスト中の次の - ファイルを読み込む -|:sbprevious| :sbp[revious] ウィンドウを分割して、バッファリスト中の前の - ファイルを読み込む -|:sbrewind| :sbr[ewind] ウィンドウを分割して、バッファリスト中の最初の - ファイルを読み込む +|:sNext| :sN[ext] ウィンドウを分割して、引数リストの前のファイル + を開く +|:sargument| :sa[rgument] ウィンドウを分割して、引数リストの指定ファイル + を開く +|:sall| :sal[l] 引数リストのすべてのファイルをウィンドウを作成 + して開く +|:saveas| :sav[eas] 別の名前でファイルを保存する +|:sbuffer| :sb[uffer] ウィンドウを分割してバッファリストの指定した + バッファを開く +|:sbNext| :sbN[ext] ウィンドウを分割してバッファリストの前の + バッファを開く +|:sball| :sba[ll] バッファリストのすべてのバッファをウィンドウを + 作成して開く +|:sbfirst| :sbf[irst] ウィンドウを分割してバッファリストの最初の + バッファを開く +|:sblast| :sbl[ast] ウィンドウを分割してバッファリストの最後の + バッファを開く +|:sbmodified| :sbm[odified] ウィンドウを分割してバッファリストの変更済み + バッファを開く +|:sbnext| :sbn[ext] ウィンドウを分割してバッファリストの次の + バッファを開く +|:sbprevious| :sbp[revious] ウィンドウを分割してバッファリストの前の + バッファを開く +|:sbrewind| :sbr[ewind] ウィンドウを分割してバッファリストの最初の + バッファを開く +|:scriptnames| :scrip[tnames] 実行済みVimスクリプトの名前を一覧表示する +|:scriptencoding| :scripte[ncoding] Vimスクリプトが使用しているエンコー + ディングを指定する +|:scscope| :scs[cope] ウィンドウを分割してcscopeコマンドを実行する |:set| :se[t] オプションを表示または設定する +|:setfiletype| :setf[iletype] まだ設定されていなければ'filetype'を設定する +|:setglobal| :setg[lobal] グローバルオプションを表示もしくは設定する +|:setlocal| :setl[ocal] ローカルオプションを表示もしくは設定する |:sfind| :sf[ind] ウィンドウを分割して、'path' にあるファイルを - 編集する -|:shell| :sh[ell] escape to a shell + 開く +|:sfirst| :sfir[st] ウィンドウを分割して引数リストの最初のファイル + を開く +|:shell| :sh[ell] シェルを実行する |:simalt| :si[malt] Win32 GUI: Windows ALT キーをシミュレートする +|:sign| :sig[n] 目印を取り扱うコマンド +|:silent| :sil[ent] 実行したコマンドの出力を抑制する |:sleep| :sl[eep] 数秒間なにもしない -|:slast| :sla[st] ウィンドウを分割して、引数リスト中の最後の - ファイルを読み込む +|:slast| :sla[st] ウィンドウを分割して引数リストの最後のファイル + を開く |:smagic| :sm[agic] 'magic' オプションの下で :substitute を実行 -|:snext| :sn[ext] ウィンドウを分割して、引数リスト中の次の - ファイルを読み込む -|:sniff| :sni[ff] send request to sniff +|:snext| :sn[ext] ウィンドウを分割して引数リストの次のファイルを + 開く +|:sniff| :sni[ff] sniffにリクエストを送信する |:snomagic| :sno[magic] 'nomagic' オプションの下で :substitute を実行 |:source| :so[urce] Vim or Ex コマンドをファイルから読み込む |:split| :sp[lit] カレントウィンドウを分割 -|:sprevious| :spr[evious] ウィンドウを分割して、引数リスト中の前の - ファイルを読み込む -|:srewind| :sr[ewind] ウィンドウを分割して、引数リスト中の最初の - ファイルを読み込む -|:stop| :st[op] suspend the editor or escape to a shell +|:sprevious| :spr[evious] ウィンドウを分割して引数リストの前のファイルを + 開く +|:srewind| :sre[wind] ウィンドウを分割して引数リストの最初のファイル + を開く +|:stop| :st[op] Vimをサスペンドする |:stag| :sta[g] ウィンドウを分割して、タグへジャンプする |:startinsert| :star[tinsert] 挿入モードを開始する +|:stopinsert|| :stopi[nsert] 挿入モードを終了する |:stjump| :stj[ump] ウィンドウを分割して、":tjump" を実行 |:stselect| :sts[elect] ウィンドウを分割して、":tselect" を実行 |:sunhide| :sun[hide] ":unhide" と同じ。 |:suspend| :sus[pend] ":stop" と同じ。 -|:sview| :sv[iew] ウィンドウを分割して、ファイルをリードオン - リーで開く -|:swapname| :sw[apname] 現在の swap ファイル名を表示 +|:sview| :sv[iew] ウィンドウを分割してファイルを読み込み専用 + で開く +|:swapname| :sw[apname] 現在のスワップファイルの名前を表示 |:syntax| :sy[ntax] 構文強調表示 (syntax highlighting) -|:syncbind| :sync[bind] sync scroll binding +|:syncbind| :sync[bind] ウィンドウのスクロール状態を同期する |:t| :t ":copy" と同じ。 |:tNext| :tN[ext] 後方へ検索し一致したタグ位置へジャンプ |:tag| :ta[g] タグを検索しジャンプする @@ -1229,58 +1409,69 @@ SECTION もしかしたら '{' の代わりに '}' で始まる1段落 |:tcl| :tc[l] Tcl コマンドを実行 |:tcldo| :tcld[o] 各行の Tcl コマンドを実行 |:tclfile| :tclf[ile] Tcl スクリプトファイルを実行 -|:tearoff| :te[aroff] メニューを tear-off する +|:tearoff| :te[aroff] メニューを切り離す +|:tfirst| :tf[irst] 複数一致した内の最初のタグへジャンプ +|:throw| :th[row] 例外を投げる |:tjump| :tj[ump] ":tselect" と同様、ただし一致したタグが1つし かない場合、その場所へジャンプ |:tlast| :tl[ast] 直前に一致したタグ位置へジャンプ -|:tmenu| :tm[enu] tooltip メニューを定義する +|:tmenu| :tm[enu] ツールチップメニューを定義する |:tnext| :tn[ext] タグを前方検索し、ジャンプ |:tprevious| :tp[revious] タグを後方検索し、ジャンプ +|:topleft| :to[pleft] ウィンドウが最も左もしくは最も上に分割されるよ + うにする |:trewind| :tr[ewind] 最初に一致したタグ位置へジャンプ -|:tselect| :ts[elect] 一致したタグをリスト表示し、ジャンプ先のタグ +|:tselect| :ts[elect] 一致したタグを一覧表示し、ジャンプ先のタグ を選択 -|:tunmenu| :tu[nmenu] tooltip メニューを削除 +|:tunmenu| :tu[nmenu] ツールチップメニューを削除 +|:try| :try コマンドを実行し発生したエラーや例外を処理する |:undo| :u[ndo] 最後の変更を取り消す -|:unabbreviate| :una[bbreviate] abbreviation を削除 -|:unhide| :unh[ide] open a window for each loaded file in the - buffer list +|:unabbreviate| :una[bbreviate] 短縮入力を削除 +|:unhide| :unh[ide] バッファリストのメモリにロードされているすべて + のバッファをウィンドウを作成して開く |:unlet| :unl[et] 変数を削除 -|:unmap| :unm[ap] マッピングを削除 +|:unmap| :unm[ap] マップを削除 |:unmenu| :unme[nu] メニューを削除 |:update| :up[date] バッファ内容が変更されていれば、ファイルに書 き出す -|:vglobal| :v[global] execute commands for not matching lines +|:vglobal| :v[global] パターンにマッチしない行でコマンドを実行する |:version| :ve[rsion] バージョン番号その他の情報を表示 +|:verbose| :verb[ose] 'verbose'を一時設定してコマンドを実行する +|:vertical| :vert[ical] ウィンドウが垂直分割されるようにする |:visual| :vi[sual] ":edit" と同じ、ただし "Ex" モードから抜ける。 -|:view| :vie[w] リードオンリーでファイルを開く +|:view| :vie[w] 読み込み専用でファイルを開く |:vmap| :vm[ap] ビジュアルモードを対象とする ":map" コマンド |:vmapclear| :vmapc[lear] ビジュアルモードのマッピングをすべて削除 |:vmenu| :vme[nu] ビジュアルモードのメニューを追加 |:vnoremap| :vn[oremap] ビジュアルモードを対象とする ":noremap" コマンド +|:vnew| :vne[w] 新しいウィンドウを垂直分割して作る |:vnoremenu| :vnoreme[nu] ビジュアルモードを対象とする ":noremenu" コマンド +|:vsplit| :vs[plit] カレントウィンドウを垂直分割する |:vunmap| :vu[nmap] ビジュアルモードを対象とする ":unmap" コマン ド |:vunmenu| :vunme[nu] ビジュアルモードのメニューを削除 +|:windo| :windo 各ウィンドウに対してコマンドを実行する |:write| :w[rite] ファイルに保存 |:wNext| :wN[ext] ファイルに保存して、引数リストの直前のファイ - ルを編集 + ルを開く |:wall| :wa[ll] (変更した)すべてのバッファを保存 -|:while| :wh[ile] 与えた条件を満足している限りループする +|:while| :wh[ile] 与えた条件を満たしている限りループする |:winsize| :wi[nsize] ウィンドウサイズを取得もしくはセットする(古 いコマンド) |:winpos| :winp[os] ウィンドウの位置を取得もしくはセットする +|:wincmd| :winc[md] ウィンドウコマンド(CTRL-W)を実行する |:wnext| :wn[ext] ファイルに保存して、引数リストの次のファイル - を編集 + を開く |:wprevious| :wp[revious] ファイルに保存して、引数リストの直前のファイ - ルを編集 + ルを開く |:wq| :wq ファイルに保存して、ウィンドウもしくは Vim を終 了 -|:wqall| :wqa[ll] すべての編集されたバッファを保存し、Vim を終 - 了 +|:wqall| :wqa[ll] すべての変更済みバッファを保存し、Vim を終了 |:wviminfo| :wv[iminfo] viminfo ファイルに保存 -|:xit| :x[it] バッファが編集されていたら保存し、ウィンドウ +|:wsverb| :ws[verb] workshopに命令をIPCで送信する +|:xit| :x[it] バッファが変更されていたら保存し、ウィンドウ もしくは Vim を終了 |:xall| :xa[ll] ":wqall" と同じ。 |:yank| :y[ank] 行をレジスタへヤンク diff --git a/ja/insert.jax b/ja/insert.jax index 985fa4d19..a7a04de07 100644 --- a/ja/insert.jax +++ b/ja/insert.jax @@ -315,12 +315,12 @@ char action ~ ----------------------------------------------------------------------- <Up> カーソルを1行上へ移動する *i_<Up>* <Down> カーソルを1行下へ移動する *i_<Down>* -CTRL-G <Up> カーソルを1行上へ移動する *i_CTRL-G_<Up>* -CTRL-G k カーソルを1行上へ移動する *i_CTRL-G_k* -CTRL-G CTRL-K カーソルを1行上へ移動する *i_CTRL-G_CTRL-K* -CTRL-G <Down> カーソルを1行下へ移動する *i_CTRL-G_<Down>* -CTRL-G j カーソルを1行下へ移動する *i_CTRL-G_j* -CTRL-G CTRL-J カーソルを1行下へ移動する *i_CTRL-G_CTRL-J* +CTRL-G <Up> 1行上の、挿入開始位置と同じ列へ移動 *i_CTRL-G_<Up>* +CTRL-G k 1行上の、挿入開始位置と同じ列へ移動 *i_CTRL-G_k* +CTRL-G CTRL-K 1行上の、挿入開始位置と同じ列へ移動 *i_CTRL-G_CTRL-K* +CTRL-G <Down> 1行下の、挿入開始位置と同じ列へ移動 *i_CTRL-G_<Down>* +CTRL-G j 1行下の、挿入開始位置と同じ列へ移動 *i_CTRL-G_j* +CTRL-G CTRL-J 1行下の、挿入開始位置と同じ列へ移動 *i_CTRL-G_CTRL-J* <Left> カーソルを1文字左へ移動する *i_<Left>* <Right> カーソルを1文字右へ移動する *i_<Right>* <S-Left> カーソルを1単語前へ("b"コマンドのように) *i_<S-Left>* @@ -341,7 +341,7 @@ CTRL-G CTRL-J カーソルを1行下へ移動する *i_CTRL-G_CTRL-J* <MouseUp> 3行上へスクロール *i_<MouseUp>* <S-MouseUp> 1ページ上へスクロール *i_<S-MouseUp>* CTRL-O 1つコマンドを実行して、挿入モードに戻る *i_CTRL-O* -CTRL-G u それまでのundoのための記録を破棄する *i_CTRL-G_u* +CTRL-G u アンドゥで元に戻す地点を新たに設定 *i_CTRL-G_u* ----------------------------------------------------------------------- Note: カーソルキーを押した時に挿入モードから抜けてしまったら、'noesckeys'オプ diff --git a/ja/intro.jax b/ja/intro.jax index fb9c75699..4f87006eb 100644 --- a/ja/intro.jax +++ b/ja/intro.jax @@ -1,61 +1,62 @@ COMMENT: Vimの紹介 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: mm -*intro.txt* For Vim version 6.3. Last change: 2004 May 01 +*intro.txt* For Vim version 7.0. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar -Vimへのイントロダクション *ref* *reference* +序文 *ref* *reference* -1. イントロダクション |intro| -2. インターネット上でのVim |internet| +1. はじめに |intro| +2. インターネットの Vim 情報 |internet| 3. クレジット |credits| -4. 表記法 |notation| -5. モードの入門 |vim-modes-intro| +4. ヘルプの表記法 |notation| +5. モードの紹介 |vim-modes-intro| 6. モードの切り替え |mode-switching| -7. ウィンドウの表示内容 |window-contents| +7. ウィンドウに表示される内容 |window-contents| 8. 用語の定義 |definitions| ============================================================================== -1. イントロダクション *intro* - -Vim の名はVi IMprovedから来ています。それはかつてはVi IMitationであったもので -すが、とてもたくさんの改良点があることを考えれば、名称の変更は適切でしょう。 -VimはUNIXのプログラム"Vi"のほとんどのコマンドを含み、さらに多くのコマンドをサ -ポートするテキストエディタです。Vimはプログラムの編集やその他のプレインテキス -トの編集にたいへん役立ちます。全てのコマンドはキーボードから与えることができま -す。このことによって、あなたは指をキーボードから、視点をスクリーンから離さずに -いることができます。ただ、もし望むのなら、マウスをサポートしますし、スクロール -バーとメニューを持つGUIをサポートするバージョンもあります。(|gui.txt|を参照) - -このマニュアルの概要は"help.txt"にあります。|help.txt| Vimからは、<Help>か<F1> -キー、あるいは|:help|コマンドからアクセスできます(バーも引用符もなしで、単に -:helpと打つだけです)。ヘルプがデフォルトの位置に無い場合には、ヘルプファイルの -名前には、'helpfile'オプションが設定できます。タグによって項目にジャンプするこ -ともできます。項目にジャンプするためにはカーソルを合わせてCTRL-]、戻るためには -CTRL-Tを打ちます。 - -このマニュアルを通して、ViとVimの相違点は次のように中カッコの中で述べられます。 -{Viにはオンラインヘルプはありません}。VimとViの相違点についての要約は +1. はじめに *intro* + +Vim は Vi IMproved (Viの改良版) です。かつては Vi IMitation (Viの模造品) でし +たが、多くの改良が加えられたので適切な名前に変更されました。Vim はテキストエ +ディタです。Unix のプログラム "Vi" のほとんどのコマンドと、さらに多くの新しい +コマンドを備えています。プログラムを書いたりテキストを編集するのにとても便利で +す。 +すべてのコマンドはキーボードから入力します。そのため、キーボードから手を離す必 +要も、スクリーンから目を離す必要もありません。お望みなら、マウスを使うこともで +きますし、GUIではスクロールバーやメニューを使うこともできます(|gui.txt|参照)。 + +このマニュアルの概要は |help.txt| にあります。Vim から <Help> や <F1> キー、 +|:help| コマンドで開くことができます (単に :help と入力してください。引用符も +バーも必要ありません)。 +ヘルプファイルが標準の位置にインストールされていない場合は、ヘルプファイルの名 +前をオプション 'helpfile' に設定してください。タグでジャンプするのと同じように +ヘルプの項目へジャンプできます。ジャンプしたい項目にカーソルを合わせて CTRL-] +でジャンプできます。CTRL-T で元の場所に戻れます。 + +このマニュアルでは、Vi と Vim の相違点を次のように中カッコの中に記述していま +す。{Vi にはオンラインヘルプはありません}。Vim と Vi の相違点についての要約は |vi_diff.txt|を参照。 -このマニュアルは様々なマシン上のVimについて触れています。違うコンピュータ、端 -末の間では、Vimにちょっとした違いがあります。さらなる注意はこの文書の中で与え -られています。それぞれのシステムのために個別の文書があります。 |sys-file-list| -を参照。 +このマニュアルの内容は Vim が実行されるほとんどの環境で通用しますが、コン +ピュータや端末によって、少し違う動作をする場合があります。このドキュメントから +外れる内容については、システムごとに個別の説明があります。|sys-file-list| を参 +照。 -このマニュアルは全てのVimのコマンドとオプションのリファレンスです。ViやVimの使 -い方に関するイントロダクションではありません(それを入れるとあちこちで説明が込 -み入ってしまうので)。初心者のためには、実習|tutor|があります。Vimの使い方を身 -につけるにはユーザーマニュアル|usr_toc.txt|を読んでください。 +このマニュアルは全ての Vim コマンドとオプションのリファレンスです。Vi や Vim +の入門書ではありません (それを入れるとあちこちで説明が込み入ってしまうので)。 +初心者には、実習 |tutor| があります。Vim の使い方を身につけるにはユーザーマ +ニュアル |usr_toc.txt| を読んでください。 *book* -初心者向けの内容を含んだViの本はたくさん出ています。私が推薦できる本は2つあり -ます: +初心者向けの内容を含んだ Vi の本はたくさん出ています。私が推薦できる本は二つあ +ります: "Vim - Vi Improved" by Steve Oualline @@ -63,11 +64,11 @@ CTRL-Tを打ちます。 訳注: ViIMproved‐Vim完全バイブル , 高橋 則利 (翻訳) 訳注: 技術評論社 ; ISBN: 4774120189 -これは完全にVimを取り扱った一番最初の本です。初心者にとてもよい本です。最もよ -く使われるコマンドが図と例を使って説明されています。それほど使われないコマンド -も説明され、さらに高度な機能は要約されています。総括的な索引とクイックリファレ -ンスがついています。この本の一部はユーザーマニュアルに含まれてます。|frombook| -Published by New Riders Publishing. ISBN: 0735710015 +これは Vim のみを取り扱った最初の本です。初心者にとてもよい本です。最もよく使 +われるコマンドが、図と例を使って説明されています。それほど使われないコマンドも +説明され、さらに高度な機能は要約されています。総括的な索引とクイックリファレン +スがついています。この本の一部はユーザーマニュアルに含まれてます。|frombook| +New Riders Publishing から出版されています。ISBN: 0735710015 より詳しい情報については、ここを見てみてください。 http://iccf-holland.org/click5.html http://www.vim.org/iccf/click5.html @@ -78,147 +79,136 @@ Published by New Riders Publishing. ISBN: 0735710015 訳注: 入門vi 第6版 , 福崎 俊博 (翻訳) 訳注: オライリー・ジャパン ; ISBN: 4873110831 -これはViについての本で、(第6版では)Vimの章が入っています。Viの第一歩がとてもよ -く説明されています。Vimで付け加えられたコマンドは単に簡単に言及されているだけ -です。ドイツ語の翻訳もあります。 -Published by O'Reilly. ISBN: 1-56592-426-6. +これは Vi についての本で、(第6版では) Vim に関する章もあります。Vi の第一歩が +とてもよく説明されています。Vim 独自のコマンドは簡単に言及されているだけです。 +ドイツ語の翻訳もあります。 +O'Reilly から出版されています。ISBN: 1-56592-426-6. ============================================================================== -2. インターネット上でのVim *internet* +2. インターネットの Vim 情報 *internet* - *www* *faq* *FAQ* *distribution* *download* -VimのページにはVimについての最新情報が載っています。最新バージョンのVimへのリ -ンクもあります。FAQはよく尋ねられる質問に対する回答集です。問題があったらまず -これを読むとよいでしょう。 + *www* *WWW* *faq* *FAQ* *distribution* *download* +Vim のページには Vim についての最新情報が載っています。最新バージョンの Vim へ +のリンクもあります。FAQ はよく尋ねられる質問に対する回答集です。問題があったら +まずこれを読むとよいでしょう。 VIMホームページ: http://www.vim.org/ VIM FAQ: http://vimdoc.sf.net/ ダウンロード: ftp://ftp.vim.org/pub/vim/MIRRORS -Usenet のVimに関する討論は: *news* *usenet* +Vim について討論している Usenet News グループ *news* *usenet* comp.editors -このグループは、他のエディタのための物でもあります。Vim について書く場合は、そ -の旨明記するのを忘れないでください。 +このグループでは他のエディタについても話し合われています。Vim について書く場合 +は、そのことを必ず明記してください。 *mail-list* *maillist* -Vimのメーリングリストがいくつかあります: +Vim のメーリングリストがいくつかあります: <vim@vim.org> - 現行バージョンのVimの使い方に関する議論: 使いやすいマッピング、質問、 - 回答、特定のバージョンはどこで手に入るかなど。 + 現行バージョンの Vim の使い方に関する議論: 使いやすいマップ、質問、回 + 答、特定のバージョンはどこで手に入るかなど。このメーリングリストにはた + くさんの人が参加していて、(初心者の) 質問にも答えてくれます。遠慮せず + どんどん質問してください。 <vim-dev@vim.org> *vim-dev* *vimdev* - Vimを変えていくための議論: 新しい機能、移植、パッチ、ベータテストバー - ジョンなど。 + Vim の開発に関する議論: 新しい機能、移植、パッチ、ベータ版など。 <vim-announce@vim.org> *vim-announce* - Vimの新バージョンに関するアナウンス: ベータテストバージョンや異なるシ - ステムへの移植の話題もここ。 + Vim の新バージョンに関するアナウンス: ベータ版や他システムへの移植につ + いてもアナウンスがあります。このメーリングリストは購読専用です。 <vim-multibyte@vim.org> *vim-multibyte* - Vimの多バイト機能の使用、改良に関する議論。 + Vim のマルチバイト機能の使用、改良に関する議論。 <vim-mac@vim.org> *vim-mac* - Vimのマッキントッシュバージョンの使用、改良に関する議論。 + Vim のマッキントッシュバージョンの使用、改良に関する議論。 -最新の情報はhttp://www.vim.org/maillist.phpを参照。 +最新の情報は http://www.vim.org/maillist.php を参照。 -注意: -- メーリングリストに投稿するにはそのリストに記名する必要があります! -- 投稿するときは記名したときと同じ場所からでなければなりません(スパムメールを - 避けるため)。 -- 最大メッセージサイズは40000文字までです。 +NOTE: +- メーリングリストに投稿するにはそのリストに登録する必要があります! +- 登録したアドレスと同じアドレスで投稿する必要があります(スパムメールを避ける + ため)。 +- 最大メッセージサイズは 40000 文字です。 *subscribe-maillist* -もし加わりたいと思ったら、次の場所へメールを送って下さい。 +メーリングリストに参加したい場合は、次の場所へメールを送って下さい。 <vim-help@vim.org> -あなたの"From:"のアドレスが正しいことを確認しましょう。次にリストサーバーが記 -名の仕方についてヘルプを送ります。 +"From:" のアドレスが正しいことを確認してください。メーリングリストのサーバーか +ら登録方法についてのヘルプが送られてきます。 -メールリストのソフトウェアから過去のメッセージとそれらの索引を得ることができま -す。そのやり方はvim-helpに指示があります。 +メーリングリストから過去のメッセージと、それらの索引を得ることができます。その +方法は vim-help に尋ねてください。 -アーカイブの場所: *maillist-archive* +過去ログのアーカイブの場所: *maillist-archive* http://groups.yahoo.com/group/vim http://groups.yahoo.com/group/vimdev http://groups.yahoo.com/group/vimannounce http://groups.yahoo.com/group/vim-multibyte http://groups.yahoo.com/group/vim-mac -メーリングリストの追加: +その他のメーリングリスト: <vim-fr@club.voila.fr> *french-maillist* - Vimのフランス語のメーリングリスト。記名は、 + Vim のフランス語のメーリングリスト。登録は、 <vim-fr-subscribe@club.voila.fr> にメールを送ってください。 - またはhttp://groups.yahoo.com/group/vim-frを参照してください。 + または http://groups.yahoo.com/group/vim-fr を参照してください。 バグレポート: *bugs* *bug-reports* *bugreport.vim* -バグレポートはVim bugs <bugs@vim.org>に送ってください。 -これはメーリングリストではなく、メッセージはVim管理者に転送されます。 -簡潔にお願いします; メールに回答する時間は、その分Vimを改良する時間を減らしま -す! 再現可能な例をつけて、どこの設定が(あるいは機能が)バグの発生に影響している -かを見つけてみてください。できることなら違うマシンでも試してみて下さい。そして、 -もし可能ならパッチを私に送って下さい。 (本家へのリポートは英語でお願いします。) +バグレポートは Vim bugs <bugs@vim.org> に送ってください。 +これはメーリングリストではありません、メッセージは Vim 管理者に転送されます。 +メッセージは簡潔にお願いします。メールに回答する時間は、Vim を改良する時間から +消費されています! 常に再現可能な例をつけてください。できれば、どこの設定が (あ +るいは機能が) バグの発生に影響しているかを探してください。可能なら、違うマシン +でも試してみて下さい。そして、もし修正できた場合はパッチを私に送って下さい。 +(本家へのリポートは英語でお願いします) -バグの疑いがあるときは、次のコマンドを使って下さい: > +Vim のバージョンや設定情報を含めてくれると助かります。次のコマンドで情報を得る +ことができます: > :so $VIMRUNTIME/bugreport.vim このコマンドはカレントディレクトリにあなたの環境に関する多くの情報を持った -"bugreport.txt"というファイルを作ります。このファイルを送る前に、そこにいかな +"bugreport.txt" というファイルを作ります。このファイルを送る前に、そこにいかな る秘密の情報も含まれていないことを確認してください! - *debug-vim* -Vimがテストファイルの内のひとつでクラッシュしたとき、もしあなたがコンパイルに -gccを用いているなら、Vimがどこでクラッシュしたかを完全に調べることができます: +Vim がクラッシュした場合は、クラッシュした場所を探してみてください。詳しくは +|debug.txt| を参照してください。 -1. Vimを"-g"オプションでコンパイル(Makefileにこのための行があるので、コメント - 記号をとり除いてください)。 - -2. 次のコマンドを実行 ("11"を失敗したテストファイルを置き換えて): > - cd testdir - gdb ../vim - run -u unix.vim -U NONE -s dotest.in test11.in - -3. Vimがどこでクラッシュしたか確認。gdbがメッセージを出すでしょう。 - -4. 次のコマンド実行して、gdbでスタックトレースを得る: > - where -< 違う場所のスタックトレースは次のようにしてチェックできる: > - frame 3 -< "3"はスタックトレースの内の番号と置き換えて下さい。 +よく分からなかったり、その問題がすでに解決済みかどうか知りたい場合には、 +vim-dev メーリングリストで質問してください。|maillist| *year-2000* *Y2K* -Vimは内部的に編集に日付を使っていませんので、2000年問題はありません。Vimは -1970年1月1日(正午)からの秒形式での時間を使っています。この時間は、編集されたファ -イルとスワップファイルのタイムスタンプのチェックに使われますが、それは致命的な -問題を起こさず、ただ警告のメッセージを発するのみです。 +Vim の内部では、テキストの編集に日付を使っていないので、2000 年問題はありませ +ん。Vim は 1970 年 1 月 1 日 (正午) からの秒形式で時間を使います。これは、開い +ているファイルとスワップファイルのタイムスタンプをチェックするために使われます +が、致命的な問題は起きません。ただ警告メッセージが表示されるだけでしょう。 -しかし、32bit整数で秒があふれてしまう2038年問題はあるかもしれません。この問題 -は、コンパイラ、ライブラリ、オペレーティングシステムに依存します。time_t、 -ctime()関数が使われているときは特にそうです。time_tはスワップファイル内に4バイ -トで格納されます。しかし、これはファイルの回復時にファイルの日付、時間を求める -ためにのみ使われるので、通常の編集作業には決して影響しません。 +しかし、32bit 整数で秒があふれてしまう 2038 年問題はあるかもしれません。この問 +題は、コンパイラ、ライブラリ、オペレーティングシステムに依存しています。 +time_t、ctime() 関数が使われているときは特にそうです。time_t はスワップファイ +ル内に 4 バイトで格納されますが、これはファイルの回復時にファイルの日付、時間 +を求めるために使われるだけなので、通常の編集作業には決して影響しません。 -Vimのstrftime()関数はstrftime()システムコールを直接使います。localtime()は -time()システムコールを、getftime()はstat()システムコールで返される時間をそれぞ -れ使用します。あなたのシステムライブラリが2000年対応ならば、Vimもそうです。 +Vim の strftime() 関数は strftime() システムコールを直接使います。localtime() +は time() システムコールを、getftime() は stat() システムコールで返される時間 +をそれぞれ使用します。システムライブラリが 2000 年対応なら、Vim もそうです。 -ユーザは外部コマンドを使用するVimスクリプトを作るかもしれません。このことが -Y2K問題を招くかもしれませんが、Vimそれ自身の問題ではありません。 +ユーザは外部コマンドを使用する Vim スクリプトを作るかもしれません。このことが +Y2K 問題を招くかもしれませんが、Vim 自身の問題ではありません。 ============================================================================== -3. クレジット *credits* *author* +3. クレジット *credits* *author* *Bram* *Moolenaar* -Vimの大部分はBram Moolenaar<Bram@vim.org>の手によるものです。 +Vim の大部分は Bram Moolenaar<Bram@vim.org> によって書かれました。 -ドキュメントの一部は以下の方々によって書かれたViのマニュアルによります: +ドキュメントの一部は以下の方々によって書かれた Vi のマニュアルによります: W.N. Joy Alan P.W. Hewett Mark Horton -Vim エディタはStevieをベースにしており、以下に書かれた人々の手になるソフトウェ -ア(のアイディア)も参考にしています。他の人々は私に意見やパッチを送ってくれたり、 -Vimの良い点、悪い点に関するフィードバックをしてくれました。 +Vim エディタは Stevie をベースにしており、下記の方々のソフトウェア (のアイディ +ア) も参考にしています。他の人々は私に意見やパッチを送ってくれたり、Vim の良い +点、悪い点に関するフィードバックをしてくれました。 -これらの人々の協力なくして、Vimは現在の姿にはならなかったことでしょう! +これらの人々の協力なくして、Vim は現在の姿にはならなかったことでしょう! Ron Aaron Win32 GUIに関する変更 Zoltan Arpadffy VMS移植の作業 @@ -234,12 +224,14 @@ Vimの良い点、悪い点に関するフィードバックをしてくれま Kayhan Demirel ウガンダのニュースを送ってくれた Chris & John Downey xvi (マルチウィンドウバージョンのアイディア) Henk Elbers 最初のVMSへの移植 + Daniel Elstner GTK+ 2 への移植 Eric Fischer Macへの移植、'cindent'、その他の改良 Benji Fisher たくさんのユーザの質問に答えてくれた Bill Foster Athena GUIへの移植 Loic Grenie xvim (マルチウィンドウバージョンのアイディア) Sven Guckes Vimのプロモーター、 以前のWWWページ管理者 Darren Hiebert Exuberant ctags + Jason Hildebrand GTK+ 2 への移植 Bruce Hunsaker VMSへの移植版の改良 Andy Kahn Cscopeサポート、GTK+ GUIへの移植 Oezguer Kesim Vimメーリングリストの管理者 @@ -280,157 +272,157 @@ Vimの良い点、悪い点に関するフィードバックをしてくれま バグレポートや提案を送ってくれた人々に感謝します。あまりにたくさんなので、ここ で彼らの名前について触れることはできませんが。これらの人々のアイディアがなけれ -ば、Vimは今のVimにはならなかったことでしょう: 彼らがVimを生かしつづけたのです! +ば、Vim は今の Vim にはならなかったことでしょう: 彼らが Vim を生かしつづけたの +です! -この文書には他のバ-ジョンのViに対するいくつかの参照があります。: - *Vi* -Vi "オリジナル"。特に注意しなければSun OS 4.xのバージョンのViを指す。 - ":version"は"Version 3.7, 6/7/85"を返す。時として別のバージョンにも触 - れることがある。Unix上でのみ動く。ソースコードはライセンスによってのみ - 利用可能。Viについての更なる情報は、以下の場所から得られる: +この文書には他のバ-ジョンの Vi に対するいくつかの参照があります: + *Vi* *vi* +Vi "オリジナル"。特に指定がなければSun OS 4.xのバージョンのViを指す。 + ":version"は"Version 3.7, 6/7/85"を返す。別のバージョンに言及すること + もある。Unix 上でのみ動く。ソースコードは許可を得れば利用可能。Vi につ + いての更なる情報は、以下の場所から得られる: http://vi-editor.org [現在機能していないようですが...] *Posix* Posix IEEE standard 1003.2, Part 2: Shell and utilitiesより。 - 一般に"Posix"として知られる。これは、Viはどのように機能すべきかという - 文書である。バージョンは1996年初めの草稿からとられているため、すべての - 注意はこれに"従うことが期待される"。別にどこを変更しても構わないのだ - が... + 一般に "Posix" として知られる。Vi の動作仕様の原典です。 + |posix-compliance| を参照。 *Nvi* -Nvi "New" Vi。バージョンはBSD 4.4のものと、FreeBSDのもの。オリジナルのViと - 高い互換性を持ち、少々の拡張がされている。使われているのはバージョン - 1.79。":version"は"Version 1.79 (10/23/96)"を返す。バージョン1.81の開 - 発があるが、ここ数年リリースされていない。 - ソースコードはフリーで使用できる。 +Nvi "New" Vi。BSD 4.4、FreeBSD に付属の Vi。オリジナルの Vi と高い互換性を + 持ち、少々の拡張がされている。使われているのはバージョン1.79。 + ":version" は "Version 1.79 (10/23/96)" を返す。バージョン 1.81 が開発 + 中だが、ここ数年リリースされていない。 + ソースコードは自由に利用できる。 *Elvis* -Elvis 別のViクローン、Steve Kirkendallの手による。とてもコンパクトだが、Vim - ほどフレキシブルではない。使われているのはバージョン2.1。まだ開発が続 - いている。ソースコードはフリーに使用できる。 +Elvis 別の Vi クローン、Steve Kirkendallの手による。とてもコンパクトだが、 + Vim ほど高機能ではない。使われているのはバージョン 2.1。まだ開発が続い + ている。ソースコードは自由に利用できる。 ============================================================================== -4. 表記法 *notation* +4. ヘルプの表記法 *notation* -この文章を読むとき、文法ハイライトが使用されていると、協調されるように打ち込ま -れたテキストは、特別なグループとしてハイライトされます。それらは[]、{}、<>、 -CTRL-Xで囲まれた項目です。 +この文章を構文強調を使って表示すると、見たままの意味ではないテキストは特別に強 +調表示されます。[]、{}、<>、で囲まれた項目や CTRL-X などです。 -Vimは可能な文字すべてをコマンドに使うということに注意。[], {}, <> を実際にタイ -プする場合もある。これは文脈によって判断できる。 +Note: Vim は入力可能な文字はすべてコマンドで使います。実際に、[]、{}、<> を入 +力する場合もあります。それは文脈によって判断できるでしょう。 -[] 角括弧で囲まれた文字は省略可能。 +[] 角カッコで囲まれた文字は省略可能。 *count* *[count]* *E489* -[count] コマンドの前に置いて、そのコマンドを繰り返させたり、反復させる - ための省略可能な数字。与えられなかった場合、特に注意が無ければ - 1が与えられたものとする。このマニュアルでは、[count]はコマンド - の記述に書かれておらず、解説においてのみ書かれていることを注意 - しておく。これはコマンドを調べやすくするためである。'showcmd' - オプションが有効だと、(部分的に)入力されたカウントがウィンドウ - の下の方に表示される。最後の数字を削除するために、<Del>を使う - ことが出来る。(|N<Del>|) +[count] コマンドに前置して、そのコマンドを繰り返したり、反復したりする + ための省略可能な数字。省略した場合、特に注意が無ければ 1 を指 + 定したのと同じになります。Note: このマニュアルでは、[count] は + コマンドの説明では言及されません。解説する場合だけ説明します。 + これはコマンドを調べ安くするためです。'showcmd'オプションが有 + 効だと、(部分的に) 入力されたカウントがウィンドウの下の方に表 + 示されます。<Del> を使って末尾の数字を削除できます(|N<Del>|)。 *[quotex]* -["x] テキストを保管できる場所を指す任意のレジスタ。|registers|を参 - 照。xは'a'から'z'、'A'から'Z'、または'"'、場合によっては(put - コマンドで使うとき)、'0'から'9'、'%'、'#'、その他。 - 大文字と小文字は同じレジスタを指すが、小文字が以前のレジスタの - 内容を上書きするのに対し、大文字は以前のレジスタの内容に追加す - る。""x"なしの場合、あるいは""""とした場合には、テキストは名前 - なしのレジスタに入れられる。 +["x] テキストの保管場所として、任意のレジスタを指定できること示す。 + |registers| を参照。x は 'a' から 'z'、'A' から 'Z'、'"'、のど + れか一文字です。場合によっては (put コマンドで使うときなど)、 + '0' から '9'、'%'、'#'、その他の文字も使えます。大文字でも小文字 + でも同じレジスタを指しますが、小文字を使ったときはレジスタの内 + 容が上書きされ、大文字を使ったときはレジスタの内容に追加されま + す。"x を指定しなかった場合や、"" を指定した場合は、無名レジス + タが使われます。 *{}* -{} 中括弧は入力されるべきコマンドの部分を示すが、違った値も取るこ - とができるときに使われる。VimとViの違いも中括弧を用いて表され - る(これは文脈から明らかにわかる)。 +{} 中括弧の表記は、コマンドの一部として入力する必要があって、そ + こには、いろいろな値を入力することができるときに使われます。 + Vim と Vi の違いを示す場合も中括弧で表記されます (これは文脈か + ら区別できます)。 *{char1-char2}* -{char1-char2} char1からchar2の範囲の一文字。例えば: {a-z}は小文字一文字。 - 複数範囲は結合可能。例えば、{a-zA-Z0-9}はアルファベット、数字 - 文字の内のどれか。 +{char1-char2} char1 から char2 の範囲のどれか一文字。例えば、{a-z} は小文字 + 一文字。複数の範囲が指定される場合もあります。例えば、 + {a-zA-Z0-9} は英数字のどれか一文字です。 - *{motion}* + *{motion}* *movement* {motion} カーソル移動コマンド。これらは、|motion.txt| で説明されていま す。例: w 次の単語の最初に移動 b 現在の単語の最初へ 4j 4行下に移動 /The<CR> つぎの "The" が、ある場所に移動 - これは演算コマンド|operator|の後で、演算を受けるテキストを選択 - するため使われる。 + 演算コマンド (|operator|) を入力した後で、演算対象のテキストを + 選択するため使われます。 - 移動コマンドがカウントを含み、演算コマンドもカウントを含むと - きは、2つのカウントが掛け合わされる。例えば: "2d3w"は6単語を - 削除する。 - - 移動はバックもできる。例: "db" は単語の最初までを削除する。 - - 移動はマウスのクリックでもできる。ただしマウスは全てのターミ - ナルでサポートされているわけではない。 - - ":omap"コマンドは、演算子が未解決のときキャラクタをマップす - るために使うことができる。 - - カーソル移動にExコマンドを使うことが出来る。これは複雑な移動 - をする関数を呼ぶことに使える。どんな":"コマンドが使われたか - によらず、移動は常に文字指向で排他的である。これは、改行なし - で行の最後の文字を含めることが不可能であることを意味する - ('virtualedit'をセットしていない限り)。 - 演算コマンドが始まる場所より前にあるテキストをExコマンドが変 - 更したり、他のバッファに移動した場合、結果は予測できない。 - それより下にあるテキストを変更することは可能である。カレント - バッファがアンロードされていなければ他のバッファにジャンプす - ることは可能である。 + きは、二つのカウントが掛け合わされる。例えば、"2d3w" は 6 単 + 語を削除する。 + - 移動はバックもできる。例えば、"db" は単語の最初までを削除す + る。 + - 移動はマウスのクリックでもできる。ただし、マウスをサポートし + ていない端末もあります。 + - ":omap" コマンドを使って、演算子コマンドに対して移動コマンド + を入力しているときに働くマップを定義できます。 + - Ex コマンドを使ってカーソルを移動できます。関数を使って複雑 + な移動をすることもできます。どの ":" コマンドが使われても、 + 移動は常に文字指向で排他的です。そのため、改行を含めずに行末 + の文字を選択することはできません ('virtualedit' を設定すれば + 可能)。 + Ex コマンドで、演算コマンドを使った場所より前にあるテキスト + を変更したり、他のバッファに移動した場合、結果は予測できませ + ん。演算コマンドを使った場所以降のテキストなら変更できます。 + カレントバッファがアンロードされないなら、他のバッファにジャ + ンプすることも可能です。 *{Visual}* -{Visual} 選択されたテキストの範囲。"v"、"V"、またはCTRL-Vコマンドで始ま - ります。それからカーソル移動コマンドをもちいて選択範囲の終わり - を変更することができます。演算コマンド|operator|の前に使われ、 - 演算を受けるテキストをハイライト強調する。|Visual-mode|を参照。 +{Visual} 選択されたテキストの範囲。"v"、"V"、CTRL-V コマンドで選択を開 + 始し、カーソル移動コマンドで選択範囲を変更できます。 + 演算コマンド (|operator|) を実行する前に使って、演算対象のテキ + ストを選択することができます。|Visual-mode| を参照。 *<character>* -<character> 後で示す表の、省略可能な修飾子を伴うスペシャルキャラクタ1文字、 - または省略可能な修飾子を伴うASCIIキャラクタ1文字。 +<character> 下記の表に示した特殊文字。修飾キーが付くこともあります。修飾 + キーと ASCII 文字の組合せもこのように表記されます。 *'character'* -'c' ASCIIキャラクタ1文字。 +'c' ASCII 文字 1 文字。 *CTRL-{char}* -CTRL-{char} コントロールキャラクタとして打ち込まれた{char}; すなわち、 - CTRLキーを押しながら{char}をタイプしたもの。{char}の大文字 - 小文字の違いは区別されない; よってCTRL-AとCTRL-aは等価とな - る。しかし、ある端末ではSHIFTキーが別のコードを生成すること - があるため、シフトは使うべきでない。 +CTRL-{char} 制御文字として入力された文字 {char}。CTRL キーを押しながら + {char} を押す場合です。{char} は大文字でも小文字でも区別されま + せん。CTRL-A と CTRL-a は同じです。SHIFT キーを使うと別のコー + ドを生成する端末もあるため、シフトキーは使わないでください。 *'option'* -'option' 値に設定できるオプション、引数は引用符で囲まれる。|options| - を参照。 +'option' オプション (設定) はシングルクォートで囲んで表記されます。オプ + ションは設定値を変更できます。|options| を参照。 *quotecommandquote* -"command" 入力することのできるコマンドへの参照は2重引用符で囲まれる。 +"command" 説明の中にでてくる入力可能なコマンドは、ダブルクォートで囲んで + 表記されます。 *key-notation* *key-codes* *keycodes* -このドキュメントで使われているキーに対する名前。これらは":map"コマンドにおい -ても使われる(キーの名前を挿入するには、CTRL-Kを押し、続いて名前を入れたいキー -を押す)。 +このドキュメントでは、キーの名前として以下のものが使われます。これらは ":map" +コマンドでも使うことができます (キーの名前を挿入するには、CTRL-K を押してか +ら、名前を挿入したいキーを押します)。 -表記 意味 等価表現 10進値 値 ~ +表記 意味 等価表現 10進数値 ~ ----------------------------------------------------------------------- <Nul> ゼロ CTRL-@ 0 (10として保存) *<Nul>* <BS> バックスペース CTRL-H 8 *backspace* <Tab> タブ CTRL-I 9 *tab* *Tab* *linefeed* -<NL> 復帰 CTRL-J 10 (<Nul>に使用) +<NL> ラインフィード CTRL-J 10 (<Nul>に使用) <FF> フォームフィード CTRL-L 12 *formfeed* -<CR> 改行 CTRL-M 13 *carriage-return* +<CR> キャリッジリターン CTRL-M 13 *carriage-return* <Return> <CR>と同じ *<Return>* <Enter> <CR>と同じ *<Enter>* <Esc> エスケープ CTRL-[ 27 *escape* *<Esc>* <Space> スペース 32 *space* -<lt> 小なり(less-than) < 60 *<lt>* +<lt> 小なり(less-than) < 60 *<lt>* <Bslash> バックスラッシュ \ 92 *backslash* *<Bslash>* <Bar> 垂直バー | 124 *<Bar>* -<Del> 削除 127 +<Del> デリート 127 <CSI> コマンドの開始バイト ALT-Esc 155 *<CSI>* <xCSI> GUIにおけるCSI *<xCSI>* -<EOL> 行の終端 (<CR>、<LF>、または<CR><LF>であり得る。 - システムと'fileformat'による) *<EOL>* +<EOL> 行の終端 (<CR>、<LF>、<CR><LF> のどれか。 + システムや 'fileformat' に依存) *<EOL>* <Up> 上カーソル *cursor-up* *cursor_up* <Down> 下カーソル *cursor-down* *cursor_down* @@ -471,32 +463,33 @@ CTRL-{char} コントロールキャラクタとして打ち込まれた{char}; <t_xx> termcapで"xx"エントリを持つキー ----------------------------------------------------------------------- -注意: シフトされたカーソルキー、ヘルプキー、アンドゥキーは数少ない端末でのみ -使えます。Amiga上では、シフトされたファンクションキー10はキーシーケンスに使わ -れるコード(CSI)を生成します。これは他のキーをタイプした後でのみ認識されます。 +Note: シフトされたカーソルキー、ヘルプキー、アンドゥキーを使える端末はあまりあ +りません。Amiga上では、シフトされたファンクションキー 10 は、キーシーケンスに +使われるコード (CSI) を生成します。このコードを入力すると、他のキーを入力する +まで待機状態になります。 -注意: 削除キーには2つのコードがあります。127は削除キーの10進ASCII値で、これは -常に認識されます。削除キーによっては別の値を送りますが、これはtermcapエントリ -の"kD"から得られる値です。どちらも同じ効果をもちます。|:fixdel|も参照してくだ -さい。 +Note: 削除キーのコードは二つあります。127 は削除キーの 10 進 ASCII 値で、これ +は常に認識されます。削除キーが別の値を生成することもあり、その場合は、termcap +エントリの "kD" からその値を得ます。どちらも同じ効果をもちます。|:fixdel|も参 +照してください。 -注意: テンキーのキーは、"普通"のキーと同じものとして使われます。例えば、<kHome> -は<Home>と同じ効果を持ちます。もしテンキーのキーが、テンキーでないそれと等価な -キーと同じキーコードをそのままで送るなら、それはテンキーでないコードとして認識 -されます。例えば、<kHome>が<Home>と同じキーコードを送るなら、<kHome>が押された -ときVimは<Home>が押されたと受け取ります。それゆえ、<kHome>へのマッピングは機能 -しません。 +Note: テンキーのキーは、"普通"のキーと同じ用途に使われます。例えば、<kHome>は +<Home>と同じ効果を持ちます。テンキーのキーから、普通のキーと同じキーコードが送 +信される場合、それは普通のキーとして認識されます。例えば、<kHome> から<Home> +と同じコードが送信される場合、<kHome> が押されたとしても、<Home> が押されたと +認識されます。その場合、<kHome> へのマッピングは機能しません。 *<>* -例はしばしば<>の表記で与えられます。ときとしてこれは、あなたが何をタイプすべ -きかを明確にするだけということがありますが、たいていの場合、文字通り打つことが -できます。例、":map"コマンドと共に使われるときがそうです。その規則は: - 1. 出力可能な文字は、バックスラッシュと'<'を除いてそのまま打てる。 - 2. バックスラッシュはダブルバックスラッシュ"\\"、または"<Bslash>"で表される。 - 3. 実際の'<'は"\<"、または"<lt>"で表される。混乱を招く恐れがなければ、'<'は - そのまま使われる。 - 4. "<key>"はスペシャルキーを打つことを示す。これは上記の表で説明された表記で - ある。少々の例をあげる: +例ではよく <> 表記が使われます。これは、何を入力すべきかを明確に表記するために +つかわれますが、文字どおりに入力する必要がある場合もあります。例えば、":map" +コマンドで使う場合など。規則は以下のとおりです: + 1. バックスラッシュと '<' 以外の印字可能文字はそのまま表記される。 + 2. バックスラッシュは "\\" (ダブルバックスラッシュ)、または "<Bslash>" と表 + 記される。 + 3. 実際の '<' は "\<"、または "<lt>" と表記される。混乱を招く恐れがなけれ + ば、'<' はそのまま使われる。 + 4. "<key>" は特殊キーを打つことを示す。これは上記の表で説明している表記で + す。いくつか例を挙げます: <Esc> エスケープキー <C-G> CTRL-G <Up> 上カーソルキー @@ -506,206 +499,211 @@ CTRL-{char} コントロールキャラクタとして打ち込まれた{char}; <M-A> Meta + A ('A' with bit 8 set) <t_kd> "kd" termcapエントリ(下カーソルキー) -もしVimで完全に<>の表記を使いたければ、'cpoptions'から'<'フラグを除く必要があ -ります('compatible'がセットされていない場合、デフォルトでそうなっています)。 > +<> 表記を使うには、'cpoptions' から '<' フラグを除く必要があります +('compatible' がオフのときは、初期設定でそうなっています)。 > :set cpo-=< -<>の表記には、キー名の特別な意味を避けるため<lt>を使います。バックスラッシュ -を使った方法も機能しますが、'cpoptions'が'B'フラグを含んでいないときだけです。 + <> 表記の特別な意味をなくすには <lt> を使います。バックスラッシュを使う方法 +も機能しますが、それは 'cpoptions' が 'B' フラグを含んでいないときだけです。 -CTRL-Hを"<Home>"の6文字にマッピングする例: > +CTRL-H を "<Home>" の 6 文字にマップする例: > :imap <C-H> \<Home> :imap <C-H> <lt>Home> -最初のものは'B'フラグが'cpoptions'に含まれていない場合のみ機能します。2番目の -ものは常に機能します。 -マッピングにおいて"<lt>"を文字通り得るためには: > +最初の例は 'cpoptions' に 'B' フラグが含まれていない場合のみ機能します。2 番目 +の例は常に機能します。 +マップで "<lt>" を文字どおりに使うには 次のようにします: > :map <C-L> <lt>lt> -マッピング、略語補完、メニューコマンドについては、例をコピー&ペーストして、そ -のまま使うことができます。あるいは、'<'と'>'のキャラクタを含んでいたとしても、 -それらを文字通りに打つことができます。これは他のコマンド、":set"、":autocmd" -などのようなものでは機能しません! +マップ、短縮入力、メニューコマンドについては、例をコピー&ペーストして、そ +のまま使うことができます。あるいは、'<' と '>' も含めて、そのまま入力してくだ +さい。これは ":set" や ":autocmd" などの他のコマンドでは機能しません! ============================================================================== -5. モードの入門 *vim-modes-intro* *vim-modes* +5. モードの紹介 *vim-modes-intro* *vim-modes* -Vimは6つの基本モードを持っています: +Vim には 6 つの基本モードがあります。 *Normal* *Normal-mode* *command-mode* ノーマルモード ノーマルモードでは普通の編集コマンドを全て入力でき ます。エディタをスタートするとこのモードに入ります - ('insertmode'オプションを設定していない限り。以下を - 参照)。これはコマンドモードとも呼ばれます。 - -ビジュアルモード これはノーマルモードのようですが、移動コマンドがハイ - ライト領域を広げます。非移動コマンドを使うと、ハイラ - イト領域に対して実行されます。|Visual-mode|を参照。 - 'showmode'オプションがオンなら、"-- VISUAL --"がウィ - ンドウの最下部に表示されます。 - -選択モード これは、MS-Windowsの選択モードによく似ています。出力 - 可能な文字が打ち込まれると、選択範囲を削除し、挿入モ - ードに入ります。|Select-mode|を参照。'showmode'オプ - ションがオンなら、"-- SELECT --"がウィンドウの最下部 - に表示されます。 + (オプション 'insertmode' を設定しているときは違います。 + 以下を参照)。これはコマンドモードとも呼ばれます。 + +ビジュアルモード ノーマルモードに似ていますが、移動コマンドで選択領域が + 拡大されます。移動コマンド以外のコマンドを使うと、選択 + 領域に対してそのコマンドが実行されます。|Visual-mode| + を参照。 + オプション 'showmode' がオンなら、"-- VISUAL --" が + ウィンドウの最下部に表示されます。 + +セレクトモード これは、MS-Windows でテキストを選択するときの動作に似 + ています。印字可能文字が入力されると、選択範囲を削除 + し、挿入モードに入ります。|Select-mode|を参照。 + オプション 'showmode' がオンなら、"-- SELECT --" が + ウィンドウの最下部に表示されます。 挿入モード 挿入モードでは、タイプされたテキストはバッファに挿入 - されます。|Insert-mode|を参照。'showmode'オプションが - オンなら、"-- INSERT --"がウィンドウの最下部に表示さ - れます。 + されます。|Insert-mode|を参照。 + オプション 'showmode' がオンなら、"-- INSERT --" が + ウィンドウの最下部に表示されます。 -コマンド行モード コマンド行モード(Cmdline modeともいう)では、ウィンド -Cmdline mode ウの下部に1行のテキストを入力できる。これはExコマンド、 - ":"、パターン検索コマンド、"?"、"/"、そしてフィルタコ - マンド、"!"で使用する。|Cmdline-mode|を参照。 +コマンドラインモード コマンドラインモードでは、ウィンドウの下部に 1 行のテ + キストを入力できます。これは Ex コマンド、":"、パター + ン検索コマンド、"?"、"/"、そしてフィルタコマンド、"!" + で使用します。|Cmdline-mode|を参照。 -Exモード コマンド行モードに似ているが、コマンド入力後もExモー - ドに留まる。コマンドラインでの、非常に制限された編集 - 作業となる。|Ex-mode|を参照。 +Ex モード コマンドラインモードに似てますが、コマンド入力後も Ex + モードに留まります。コマンドライン編集は、かなり制限さ + れます。|Ex-mode|を参照。 -さらに追加として5つのモードがある。これらは基本モードの変種である。 +加えて、5 つのモードがあります。これらは基本モードの変種です。 *Operator-pending* *Operator-pending-mode* -演算子未解決モード ノーマルモードに似ているが、演算子コマンドが開始され、 - Vimは{motion}により演算子適用範囲が決定するのを待って - いる状態にある。 - -置換モード 置換モードは挿入モードの特殊な場合を指す。挿入モード - と同様のことができるが、1文字入力するごとに、現存して - いるテキストの文字が1つ削除される。|Replace-mode|を - 参照。 - 'showmode'オプションがONになら、"-- REPLACE --"が - ウィンドウの最下部に表示される。 - -挿入ノーマルモード 挿入モードでCTRL-Oが与えられたとき、このモードに入る。 - ノーマルモードに似ているが、コマンドが実行された後、 - 挿入モードに戻る。 - 'showmode'オプションがONになら、"-- (insert) --"が - ウィンドウの最下部に表示される。 - -挿入ビジュアルモード 挿入モードでビジュアル選択を開始したとき、このモード - に入る。例えばCTRL-Oを使い, その後"v", "V", CTRL-Vを使 - ったとき。ビジュアル選択が終了したとき、Vimは挿入モー - ドに戻る。 - 'showmode'オプションがONになら、"-- (insert) VISUAL --" - がウィンドウの最下部に表示される。 - -挿入選択モード 挿入モードで選択モードを開始したとき、このモードに入る。 - 例: マウスをドラッグするか、<S-Right>を押したとき。 - 選択モードが終了すると、Vimは挿入モードに戻る。 - 'showmode'オプションがONになら、"-- (insert) SELECT --" - がウィンドウの最下部に表示される。 +演算子未解決モード ノーマルモードに似てますが、演算コマンドが実行された後 + で、その演算の適用範囲を決定するための移動コマンド + ({motion}) を得るために、Vim が待機している状態です。 + +置換モード 置換モードは挿入モードの特別版です。挿入モード + と同様のことができますが、一文字入力するごとに、その + 場所にある文字が一つ削除されます。|Replace-mode|を参 + 照。 + オプション 'showmode' がオンなら、"-- REPLACE --" が + ウィンドウの最下部に表示されます。 + +挿入ノーマルモード 挿入モードで CTRL-O を入力すると、このモードに入りま + す。ノーマルモードに似てますが、コマンドが実行された + 後、挿入モードに戻ります。 + オプション 'showmode' がオンなら、"-- (insert) --" が + ウィンドウの最下部に表示されます。 + +挿入ビジュアルモード 挿入モードでビジュアル選択を開始すると、このモードに入 + ります。例えば、CTRL-O を使い, その後 "v"、"V"、CTRL-V + を使ったときです。 + ビジュアル選択が終了すると、挿入モードに戻ります。 + オプション 'showmode' がオンなら、 + "-- (insert) VISUAL --" がウィンドウの最下部に表示され + ます。 + +挿入セレクトモード 挿入モードでセレクトモードを開始すると、このモードに入 + ります。例えば、マウスをドラッグしたり、<S-Right> を押 + したときです。 + セレクトモードが終了すると、挿入モードに戻ります。 + オプション 'showmode' がオンなら、 + "-- (insert) SELECT --" がウィンドウの最下部に表示され + ます。 ============================================================================== 6. モードの切り替え *mode-switching* -何らかの理由で自分が何のモードにいるのかわからなくなったとき、<Esc>を2度押す -ことで常にノーマルモードに戻ることができます。ただしExモードでは機能しませんの -で、":visual"を使ってください。 -ノーマルモードに戻ったことを、<Esc>を押したときのスクリーンフラッシュ、または -ベルの音で知ることができます。ただ、インサートモードでCTRL-Oの後に<Esc>を押す -とビープ音が鳴るだけでインサートモードのままなので、もう一度<Esc>を押してくだ -さい。 +何らかの理由で、現在のモードがわからなくなったときは、<Esc> を 2 度押すことで +常にノーマルモードに戻ることができます。Ex モードでは機能しないので、その場合 +は":visual" を使ってください。 +<Esc> を押したとき、スクリーンフラッシュや、ベルの音で、ノーマルモードに戻った +ことを知ることができます。挿入モードで CTRL-O の後に <Esc> を押した場合、ビー +プ音は鳴りますが、まだ挿入モードの中なので、もう一度 <Esc> を押してください。 *i_esc* - TO mode ~ + 移動先のモード ~ Normal Visual Select Insert Replace Cmd-line Ex ~ -FROM mode ~ +現在のモード ~ ノーマル v V ^V *4 *1 R : / ? ! Q ビジュアル *2 ^G c C -- : -- -選択 *5 ^O ^G *6 -- -- -- +セレクト *5 ^O ^G *6 -- -- -- 挿入 <Esc> -- -- <Insert> -- -- 置換 <Esc> -- -- <Insert> -- -- -コマンド行 *3 -- -- :start -- -- +コマンドライン *3 -- -- :start -- -- Ex :vi -- -- -- -- -- -- 無効 +- なし -- 不可 -*1 ノーマルモードから挿入モードへは、コマンド"i"、"I"、"a"、"A"、"o"、"O"、 - "c"、"C"、"s"、または"S"で入る。 -*2 ビジュアルモードからノーマルモードへは非移動コマンドで入るが、このときコマ - ンドは実行される。<Esc>、"v"、"V"、または"CTRL-V"(|v_v|を参照)の入力ならば、 - 副作用なしにビジュアルモードから出られる。 -*3 コマンド行モードからノーマルモードへ移行するには: - - <CR>か<NL>を打つ、このとき入力されているコマンドは実行される。 - - 行の全てを削除し(例、CTRL-Uを使う)、最後に<BS>を入れる。 - - CTRL-Cまたは<Esc>を打つ、このとき入力されているコマンドは実行されずに終了 - する。 - 最後の場合では、<Esc>は'wildchar'オプションで定義された文字でもよい、このと - きコマンド行補完が始まる。それを無視し、<Esc>を再び打つ。{Vi: <Esc>を入力す - ると、コマンド行は実行される。これは多くの人にとって予期しない動作である; - そのためVimでは変更された。しかし、<Esc>がマッピングの一部であるような場合 - には、コマンド行は実行される。<Esc>を入力したときも、Viのように振舞ってほし - いときは、":cmap ^V<Esc> ^V^M"を使うとよい} -*4 ノーマルモードから選択モードに移行するときは: - - 'selectmode'が"mouse"を含んでいるならば、マウスでテキストを選択する。 - - シフトキーを押しながら非表示コマンドでカーソルを移動させる、このとき - 'selectmode'は"key"を含んでいる必要がある。 - - 'selectmode'が"cmd"を含んでいるなら、"v"、"V"または"CTRL-V"を使う。 - - "gh"、"gH"または"g CTRL-H"を使う。|g_CTRL-H| -*5 選択モードからノーマルモードに移行するには、シフトキーを押さずに非表示コマ - ンドでカーソルを動かせばよい。 -*6 選択モードから挿入モードへ移行するには、表示される文字を打てばよい。選択範 - 囲は削除され、文字が挿入される。 - -'insertmode'オプションがオンのときは、編集作業は挿入モードで始まる。 +*1 ノーマルモードから挿入モードへは、コマンド "i"、"I"、"a"、"A"、"o"、"O"、 + "c"、"C"、"s"、"S" で入ります。 +*2 ビジュアルモードからノーマルモードへは非移動コマンドで入れますが、そのコマ + ンドは実行されてしまいます。<Esc>、"v"、"V"、"CTRL-V" (|v_v|を参照) を入力 + すれば、副作用なしにビジュアルモードから出られます。 +*3 コマンドラインモードからノーマルモードへ移行するには次のようにします: + - <CR> か <NL> を入力する。入力途中のコマンドは実行されます。 + - 行の全てを削除し (例、CTRL-Uを使う)、そして、<BS> を入力する。 + - CTRL-C または <Esc> を入力する、入力途中のコマンドを実行せずに終了できま + す。 + 最後の方法ですが、<Esc> が 'wildchar' に設定されている場合があります。その + 場合、コマンドライン補完が実行されますが、それを無視して、再び <Esc> を入力 + してください。{Vi では、<Esc> を入力すると、そのコマンドラインが実行されま + す。これは多くの人が期待するような動作ではないので、Vim では変更されまし + た。しかし、その <Esc> がマップの一部であるような場合には、コマンドラインは + 実行されます。<Esc> を入力したときに、Vi と同じように動作して欲しいときは、 + ":cmap ^V<Esc> ^V^M" を使ってください} +*4 ノーマルモードからセレクトモードに移行するには次のようにします: + - 'selectmode' が "mouse" を含んでいるときは、マウスでテキストを選択する。 + - 'selectmode' が "key" を含んでいるときは、シフトキーを押しながら、特殊 + キーでカーソルを動かします。(:set keymodel+=startsel が必要) + - 'selectmode' が "cmd" を含んでいるときは、"v"、"V"、"CTRL-V" を使う。 + - "gh"、"gH"、"g CTRL-H" を使う。|g_CTRL-H| +*5 セレクトモードからノーマルモードに移行するには、シフトキーを押さずに特殊 + キーでカーソルを動かします。(:set keymodel+=stopsel が必要) +*6 セレクトモードから挿入モードへ移行するには、印字可能文字 (普通の文字) を入 + 力します。選択範囲は削除され、入力した文字が挿入されます。 + +'insertmode' がオンのときは、編集作業は挿入モードで始まります。 *CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N* -付け加えて、コマンドCTRL-\ CTRL-N、あるいは<C-\><C-N>は、他のあらゆるモードか -らノーマルモードへ移行する。これでVimがノーマルモードであることを、<Esc>のとき -のようにビープ音を出さずに確認することができる。しかし、これはExモードでは機能 -しない。|f|や|m|のように引数をとるコマンドの後で使われたとき、'ttimeoutlen'で -設定されたタイムアウトが適用される。 +CTRL-\ CTRL-N と <C-\><C-N> を使って、どのモードからでもノーマルモードに移行で +きます。このコマンドを使えば、確実にノーマルモードになることができます。<Esc> +のときのようにビープ音はなりません。ただし、Ex モードでは機能しません。|f|や +|m|のように引数をとるコマンドの後で使われたときは、'ttimeoutlen' で設定された +タイムアウトが適用されます。 *CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G* -'insertmode'がセットされているなら、CTRL-\ CTRL-G や <C-\><C-G> でインサートモ -ードに入ることが出来る。セットされていなければノーマルモードに入る。これは現在 -どのモードにいるのかに関わらず、'insertmode'で指示されたモードに入るのに使える -。 +'insertmode' がオンのときは、CTRL-\ CTRL-G や <C-\><C-G> で挿入モードに移行で +きます。オフのときはノーマルモードに移行します。このコマンドを使えば、現在どの +モードにいるのかに関わらず、'insertmode' に設定されたモードに移行することがで +きます。 -ここまで *Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501* -Q "Ex"モードに切り替える。これは":"コマンドを一つ一つ打 - ち込むようなものである。ただし: - - ":"を押したままでいる必要がない。 - - 画面は各コマンドごとに更新されない。 - - 普通のコマンド行編集はない - - マッピングと略語補完を使うことはできない。 - 実際には、それらの行は"標準の"行入力編集コマンド(削除 - に<Del>または<BS>、行削除にCTRL-Uを使用する)で編集され - る。 - Vimはコマンド行で"ex"が実行された場合、標準でこのモー - ドに入る。 - "Ex"モードを出るには、":vi"コマンド|:visual|を使う。 - 注意: 古い Version の Vim では "Q" がテキストを整形す +Q "Ex" モードに切り替えます。このモードは ":" コマンドを + 続けて入力するようなものですが、次の点が違います: + - 毎回 ":" を押す必要がない。 + - コマンドを実行するごとに画面が更新されない。 + - 通常のコマンドライン編集機能は使えない。 + - マップと短縮入力は使えない。 + つまり、"標準の" 行編集コマンドだけを使って入力します + (削除に<Del>または<BS>、行削除に CTRL-U を使用する)。 + Vim が "ex" という名前で実行された場合には、このモード + で起動します。 + "Ex" モードを抜けるには、":vi" コマンド |:visual| を使 + います。 + Note: Vim の昔のバージョンでは "Q" がテキストを整形す るコマンドでしたが、いまは |gq| になっています。ただし - |vimrc_example.vim|スクリプトを使っているなら"Q"が"gq" - と同じ動作をします。 + |vimrc_example.vim| を使っている場合は、"Q" と "gq" は + 同じ動作をします。 *gQ* -gQ "Ex"モードに切り替えます。これは":"コマンドを一つ一つ - 打ち込むのと同じに振る舞います。全てのコマンドライン編 - 集、補完などが利用可能です。 - "Ex"モードを抜けるには":vi"コマンド|:visual|を使ってく - ださい。{Vi にはない} +gQ "Ex" モードに切り替えます。"Q" と同じですが、実際に + ":" コマンドでコマンドを入力するのと同じように動作しま + す。コマンドライン編集や補完などがすべて利用可能です。 + "Ex" モードを抜けるには、":vi" コマンド |:visual| を使 + います。{Vi にはない} ============================================================================== -7. ウィンドウ表示の内容 *window-contents* - -ノーマルモードと挿入/置換モードでは、画面のウィンドウが現在のバッファの内容を -示しています: つまり、見ているものが得られるもの(WYSIWYG)です。しかし、2つの -例外があります: -- 'cpoption'オプションが'$'を含んでいて、変更が一行以内であるとき、テキストは - 直接削除されず、'$'が最後に削除された文字の位置に置かれます。 -- 一方のウィンドウでテキストを挿入しているとき、もう一方のウィンドウの同じテキ - ストは、挿入が終了するまで更新されません。 +7. ウィンドウに表示される内容 *window-contents* + +ノーマルモードと挿入/置換モードでは、スクリーンに現在のバッファの内容が表示さ +れます。つまり、見ているものが得られるもの (WYSIWYG) です。しかし、例外が二つ +があります: +- オプション 'cpoption' が '$' を含んでいて、一行に収まる範囲を変更 (|c|) する + ときは、テキストはすぐに削除されず、削除される文字の最後の位置に '$' が表示 + されます。 +- あるウィンドウでテキストを挿入していて、別のウィンドウでも同じテキストを表示 + しているとき、挿入を完了するまでそのウィンドウの表示は更新されません。 +訳注: 確認できず {Vi: 遅い端末では画面が常に更新されるとは限りません} -ウィンドウの幅より長い行は、'wrap'オプション(下記参照)がオフでない限り、折り返 -されます。'linebreak'オプションを設定すると、空白文字で折り返すことができます。 +ウィンドウの幅より長い行は、折り返して表示されます。'wrap' がオフのときは折り +返されません (下記参照)。'linebreak' を設定すると空白文字で折り返すことができ +ます。 -ウィンドウ内でバッファの最終行より後ろに余白がある場合、Vimはウィンドウ内の余白 -行の始めに、以下のように'~'を表示します: > +ウィンドウ内でバッファの最終行より下に表示領域ある場合、以下のように、それらの +行の始めに '~' が表示されます: > +-----------------------+ |some line | @@ -716,8 +714,8 @@ gQ "Ex"モードに切り替えます。これは":"コマンドを一つ一 このように、'~'はバッファの最後に到達したことを示します。 -ウィンドウの最終行が入りきらない場合、Vimはそのウィンドウの最終行に、次のように -'@'を表示してそれを示します: > +ウィンドウに表示されている最後の行が表示しきれない場合、以下のように、最終行の +場所に '@' が表示されます: > +-----------------------+ |first line | @@ -726,11 +724,11 @@ gQ "Ex"モードに切り替えます。これは":"コマンドを一つ一 |@ | +-----------------------+ -このように、'@'はウィンドウに収まりきらない行があることを知らせます。 +このように、'@'はウィンドウに収まりきらない行があることを示します。 -'display'オプションに"lastline"フラグが存在する場合、'@'はウィンドウの左側に -表示されません。最終行がウィンドウ内に完全に収まらない場合は、収まる部分のみが -表示され、最後の3文字が次のように"@@@"で置き換えられます: > +'display' に "lastline" フラグが含まれている場合、'@' はウィンドウの左側に表示 +されません。最終行がウィンドウに完全に収まらない場合は、収まる部分のみが表示さ +れ、最後の 3 文字が次のように"@@@"で置き換えられます: > +-----------------------+ |first line | @@ -739,86 +737,86 @@ gQ "Ex"モードに切り替えます。これは":"コマンドを一つ一 |oesn't fit in the wi@@@| +-----------------------+ -長すぎてウィンドウに収まりきらない単一の行があるときは、特別な場合として扱わ -れます。Vimはカーソルのある場所付近の部分のみを表示します。特殊文字は表示され -ませんので、この行の全ての部分を編集することができます。 -{Vi: ウィンドウに収まらない行に対しては"内部エラー"を起こします} +長すぎてウィンドウに収まりきらない単一の行があるときは、特別な場合として扱われ +ます。Vim はカーソルのある場所付近のみを表示します。特殊記号は表示されません。 +その行のどの部分でも編集できます。 +{Vi はウィンドウに収まらない行に対しては "内部エラー" を起こします} -'highlight'オプションの'@'設定は、'@'と'~'文字に対して特別なハイライトを -セットするために使われます。これは、それらの文字をバッファにある本当の文字 -と区別するために使われます。 +'@' と '~' の強調表示を設定するには、オプション 'highlight' の '@' を設定しま +す。それらの文字と、バッファの中の本物の文字を区別することができます。 -'showbreak'オプションには、折り返し行の先頭につける文字列を入れます。 +折り返された行の先頭には 'showbreak' に設定した文字が表示されます。 *wrap-off* -'wrap'オプションがオフの場合、長い行は折り返されません。スクリーンに収まる -分だけが表示されます。カーソルが表示されていない部分に移動すると、スクリーン -は水平方向にスクロールします。この方法の利点は、縦の列がありのままに表示され -ること、スクリーンに収まらない行も編集できることです。欠点としては、一行の -全ての文字を一度に見ることができないことが挙げられます。'sidescroll'オプショ -ンにはスクロールできる縦列(コラム)の最小列を設定します。 -{Vi: 'wrap'オプションがありません} - -全ての普通のASCII文字はスクリーンに直接表示されます。<Tab>は、それが表現する -数のスペースに置き換えられます。他の非表示文字は、"^{char}"に置き換えられます、 -このとき{char}には、その非表示文字に64が足された文字が入ります。それゆえ、 -キャラクタ7(ベル文字)は"^G"で表されます。127から160までの文字は"~{char}"で置 -き換えられます、このとき{char}には、その文字から64が引かれた文字が入ります。 -これらの文字はスクリーンの1ポジション以上を占有します。カーソルはその最初の -1つにのみ置くことができます。 - -'number'オプションをセットしているとき、全ての行はその行番号を先頭に持ちます。 -Tip: 行番号を混ぜた行の折り返しをしたくないときは、'showbreak'オプションに8つ -のスペースをセットします: > +'wrap' がオフの場合、長い行は折り返されません。スクリーンに収まる分だけ表示さ +れます。カーソルが表示されていない部分に移動すると、スクリーンは水平方向にスク +ロールします。この方法の利点は、縦の列がありのままに表示されること、スクリーン +に収まらない行も編集できることです。欠点としては、一行の全ての文字を一度に見る +ことができないことが挙げられます。'sidescroll' にはスクロールする最小の列(カラ +ム)数を設定します。 +{Vi には 'wrap' オプションはありません} + +全ての普通のASCII文字はスクリーンに直接表示されます。<Tab> は、それが表現する +数のスペースに置き換えられます。他の非表示文字は、"^{char}" に置き換えられま +す、このとき {char} には、その非表示文字に 64 を足した文字が入ります。つまり、 +文字 7 (ベル文字) は "^G" と表示されます。127 から 160 までの文字は "~{char}" +で置き換えられます、このとき {char} には、その文字から 64 を引いた文字が入りま +す。これらの文字はスクリーン上では複数幅で表示されます。カーソルはその複数幅の +先頭にのみ移動させることができます + +'number' がオンの場合、全ての行の先頭に行番号が表示されます。 +Tip: 行を折り返したときに、行番号と行の表示を混ぜたくないときは、'showbreak' +に 8 つのスペースをセットします: > ":set showbreak=\ \ \ \ \ \ \ \ " -'list'オプションをセットしているとき、<Tab>文字はいくつかのスペースとしてでは -なく、"^I"として表されます。'$'が行の最後に置かれるので、行の最後についた空白 -を見つけることができます。 +'list' がオンの場合、<Tab> 文字はいくつかのスペースとしてではなく、"^I" として +表示されます。'$' が行末に表示されるので、行の最後についた空白を見つけることが +できます。 コマンドラインモードでは、コマンドラインのみが正しく表示されます。バッファの -内容の表示は、コマンドラインモードから抜けると同時に更新されます。 +内容の表示は、コマンドラインモードから抜けたときに更新されます。 -ウィンドウの最後の行はステータスやその他のメッセージのために使われます。ステ -ータスメッセージが使われるのは、オプションがオンのときのみです: +ウィンドウの最下行はステータスやその他のメッセージのために使われます。ステータ +スメッセージが使われるのは、オプションがオンのときのみです: -status message option default Unix default ~ +ステータスメッセージ オプション 初期設定 Unixの初期設定 ~ 現在のモード 'showmode' on on コマンドの文字 'showcmd' on off カーソルの位置 'ruler' off off -現在のモードとは、"-- INSERT --"または"-- REPLACE --"のことです、|'showmode'| -を参照。コマンドの文字とは、打ち込まれた、まだ適用されていないコマンドのこと -です。{Vi: 打ち込んだ文字やカーソルの位置を表しません} +現在のモードとは、"-- INSERT --" や "-- REPLACE --" のことです、'showmode' +を参照。コマンドの文字とは、入力されて、まだ実行されていないコマンドのことで +す。{Vi は入力した文字やカーソルの位置を表示しません} -遅い端末を使用しているのであれば、ステータスメッセージをオフにすることで編集の -スピードをアップすることができます: > +遅い端末を使っている場合は、ステータスメッセージをオフにすることで編集のスピー +ドを上げることができます: > :set nosc noru nosm -エラーが起こったとき、エラーメッセージは少なくとも一秒間は表示されます(逆再生 -で)。{Vi: エラーメッセージは読む機会がないうちに他のメッセージに上書きされます} +エラーが起きたとき、エラーメッセージは少なくとも一秒間は表示されます(反転表示 +で)。{Vi ではエラーメッセージが読む間もなく他のメッセージに上書きされる場合が +あります} -いくつかのコマンドは何行に作用するかを表示します。何行以上でこれを行うかは、 -'report'オプションでコントロールできます(デフォルト 2)。 +いくつかのコマンドでは、そのコマンドが作用する行数が表示されます。何行以上でそ +の表示をするかは、'report' で設定できます (初期設定は 2)。 -Amiga上では、VimはCLIウィンドウで実行されます。Vimの名前と現在のファイル名の -完全パスはタイトルバーに表示されます。ウィンドウがリサイズされると、Vimは自動 -的にウィンドウを再描画します。ウィンドウは好きなだけ小さくできますが、小さすぎ -ると1行のみで収まりきらなくなります。最終行に現れるたいていのメッセージが読め -るように、最低でも40文字の幅を取ってください。 +Amiga 上では、Vim は CLI ウィンドウで実行されます。Vim の名前と現在のファイル +名の絶対パスがタイトルバーに表示されます。ウィンドウがリサイズされると、Vim は +自動的にウィンドウを再描画します。ウィンドウは好きなだけ小さくできますが、小さ +すぎると1行のみで収まりきらなくなります。最下行に表示されるメッセージが読める +ように、最低でも40文字の幅を取ってください。 -ほとんどのUNIXシステム上で、ウィンドウのリサイズはVimによって正しく認識、把握さ -れます。{Vi: できません} +ほとんどの UNIX システム上で、Vim はウィンドウのリサイズを正しく認識、把握でき +ます。{Vi ではできません} ============================================================================== 8. 用語の定義 *definitions* - スクリーン Vimが使う領域全体。ターミナルエミュレータウィンドウの - ときもある。"Vimウィンドウ"とも呼ばれる。 - ウィンドウ バッファを表示したもの + スクリーン Vim が使う領域全体。端末ウィンドウを指す場合もある。 + "Vimウィンドウ" とも呼ばれる。 + ウィンドウ バッファが表示される場所。 -1つのスクリーンは一つかそれ以上のウィンドウを含み、それらはステータスラインと -一番下のコマンドラインで区切られる。 +一つのスクリーンは一つ以上のウィンドウを内包し、それらはステータスラインで区切 +られ、最下行にはコマンドラインが表示されます。 +-------------------------------+ screen | window 1 | window 2 | @@ -832,25 +830,25 @@ screen | window 1 | window 2 | |command line | +-------------------------------+ -コマンドラインはメッセージを表示するのにも使われる。コマンドラインに十分な領域 -がない場合はスクリーンがスクロールする。 - -4つの行のタイプには次の違いがある: - - バッファ行 バッファ内の行。これはファイルに読み書きされる行と同じ。 - 数千の長さの文字であってもよい。 - 論理行 折り畳みが適用されたバッファ行。閉じた折り畳みに含まれ - るバッファ行は論理行1行となる:"+-- 99 lines folded"。 - 数千の長さの文字であってもよい。 - ウィンドウ行 ウィンドウ内で表示される行: 折り返し、ラインブレイクな - どが適用された後の論理行の一部。これらの長さはウィンド - ウの幅以下になる。それ以上長い行は折り返されるか切り詰 - められる。 - スクリーン行 Vimが使うスクリーンの行。全てのウィンドウ内のウィンドウ - 行とステータスライン、コマンドラインからなる。これらの - 長さはスクリーンの幅以下になる。コマンドラインがそれ以 - 上長くなったときは折り返して表示され、空スペースをつく - るために行がスクロールされる。 +コマンドラインはメッセージを表示するためにも使われます。コマンドラインに十分な +表示領域がない場合はスクリーンがスクロールします。 + +行には 4 種類あり、次の違いがあります: + + バッファ行 バッファ内の行。ファイルに読み書きする行のこと。 + 行の長さは制限なし。 + 論理行 折り畳みが適用されたバッファ行。複数のバッファ行が折り + 畳まれ論理行 1 行となり、次のように表示される: + "+-- 99 lines folded"。 + 行の長さは制限なし。 + ウィンドウ行 ウィンドウに表示される行: 折り返し、ラインブレイクなど + が適用された後の論理行の一部。長さはウィンドウの幅以 + 下。それ以上長い行は折り返されるか切り詰められる。 + スクリーン行 Vim が使うスクリーンの行。全てのウィンドウのウィンドウ + 行とステータスライン、コマンドラインからなる。長さはス + クリーンの幅以下。コマンドラインがそれ以上長くなったと + きは折り返して表示され、表示領域を作るために行がスク + ロールされる。 バッファ行 論理行 ウィンドウ行 スクリーン行 ~ diff --git a/ja/map.jax b/ja/map.jax index fd715cd1d..e7dbac948 100644 --- a/ja/map.jax +++ b/ja/map.jax @@ -1,779 +1,1334 @@ COMMENT: キーマッピング -STATUS: finished 5.7a +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 MAINTEINER: 村岡太郎<koron@tka.att.ne.jp> -*map.txt* For Vim version 5.7a. Last change: 2000 May 03 +*map.txt* For Vim version 7.0. Last change: 2006 May 03 VIM REFERENCE MANUAL by Bram Moolenaar -キー・マッピングと略語補完 +キーマップ、短縮入力、ユーザ定義コマンドについて。 -1. キー・マッピング |key-mapping| -2. 略語補完 |abbreviations| -3. ユーザー定義コマンド |user-commands| +ユーザマニュアルの|05.3|、|24.7|、|40.1|でこの機能について紹介しています。 + +1. マップ |key-mapping| + 1.1 マップコマンド |:map-commands| + 1.2 特別な引数 |:map-arguments| + 1.3 マップとモード |:map-modes| + 1.4 マップの一覧表示 |map-listing| + 1.5 特殊キーのマップ |:map-special-keys| + 1.6 特殊文字 |:map-special-chars| + 1.7 マップに使うキー |map-which-keys| + 1.8 例 |map-examples| + 1.9 マップを使う |map-typing| + 1.10 Altキーを使ったマップ |:map-alt-keys| + 1.11 オペレーターの作成 |:map-operator| +2. 短縮入力 |abbreviations| +3. ローカルマップとローカル関数 |script-local| +4. ユーザ定義コマンド |user-commands| ============================================================================== -1. キー・マッピング *key-mapping* *mapping* *macro* - -新しいマッピングを作成したり、マッピングを削除したり、マッピングをリストするコ -マンドがあります。様々な形式の "map" とそれらのモードとの関係に関しては -|map-overview| をご覧下さい。 - -:map {lhs} {rhs} *:map* -:nm[ap] {lhs} {rhs} *:nm* *:nmap* -:vm[ap] {lhs} {rhs} *:vm* *:vmap* -:om[ap] {lhs} {rhs} *:om* *:omap* -:map! {lhs} {rhs} *:map!* -:im[ap] {lhs} {rhs} *:im* *:imap* -:cm[ap] {lhs} {rhs} *:cm* *:cmap* - マップコマンドを割り当てられてるモードで、キーの連続 - {lhs} を {rhs} にマップします。その結果は、{rhs} も含 - め、他のマッピングも調べられ、このことによりマッピング - のネストと再帰が可能になります。 - - -:no[remap] {lhs} {rhs} *:no* *:noremap* -:nn[oremap] {lhs} {rhs} *:nn* *:nnoremap* -:vn[oremap] {lhs} {rhs} *:vn* *:vnoremap* -:ono[remap] {lhs} {rhs} *:ono* *:onoremap* -:no[remap]! {lhs} {rhs} *:no!* *:noremap!* -:ino[remap] {lhs} {rhs} *:ino* *:inoremap* -:cno[remap] {lhs} {rhs} *:cno* *:cnoremap* - マップコマンドを割り当てられてるモードで、キーの連続 - {lhs} を {rhs} にマップします。{rhs} へのマッピングを禁 - 止することで、マッピングのネストと再帰を避けることがで - きます。1つのコマンドを再定義するときによく使われます。 +1. マップ (Key mapping) *key-mapping* *mapping* *macro* + +マップは入力したキーの働きを変更するために使います。ファンクションキーにコマン +ドを割り当てたりするのによく使われます。例: > + + :map <F2> a<C-R>=strftime("%c")<CR><Esc> + +このマップはカーソルの位置に現在の日時を挿入します。(<F2>などは|<>|表記法を参照) + + +1.1 マップコマンド *:map-commands* + +マップを新しく作成、削除、一覧表示するコマンドがあります。モード別に数種類の +マップコマンドが用意されています。マップコマンドとモードの関係については +|map-overview|を参照してください。 + +{lhs} left-hand-sideの略(左辺値) *{lhs}* +{rhs} right-hand-sideの略(右辺値) *{rhs}* + +:map {lhs} {rhs} |mapmode-nvo| *:map* +:nm[ap] {lhs} {rhs} |mapmode-n| *:nm* *:nmap* +:vm[ap] {lhs} {rhs} |mapmode-v| *:vm* *:vmap* +:xm[ap] {lhs} {rhs} |mapmode-x| *:xm* *:xmap* +:smap {lhs} {rhs} |mapmode-s| *:smap* +:om[ap] {lhs} {rhs} |mapmode-o| *:om* *:omap* +:map! {lhs} {rhs} |mapmode-ic| *:map!* +:im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap* +:lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lmap* +:cm[ap] {lhs} {rhs} |mapmode-c| *:cm* *:cmap* + キー入力 {lhs} を {rhs} に割り当てます。作成したマップ + は、マップコマンドに対応したモードで使用できます。マッ + プが使用されたときに {rhs} が調べられ、再マップされま + す。マップを入れ子にしたり再帰的にすることができます。 + + +:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap* +:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap* +:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap* +:xn[oremap] {lhs} {rhs} |mapmode-x| *:xn* *:xnoremap* +:snor[emap] {lhs} {rhs} |mapmode-s| *:snor* *:snoremap* +:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap* +:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!* +:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap* +:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap* +:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap* + キー入力 {lhs} を {rhs} に割り当てます。作成したマッ + プ、はマップコマンドに対応したモードで使用できます。 + {rhs} は再マップされないので、マップが入れ子になったり + 再帰的になることはありません。コマンドを再定義するとき + によく使われます。 {Vi にはない機能です} -:unm[ap] {lhs} *:unm* *:unmap* -:nun[map] {lhs} *:nun* *:nunmap* -:vu[nmap] {lhs} *:vu* *:vunmap* -:ou[nmap] {lhs} *:ou* *:ounmap* -:unm[ap]! {lhs} *:unm!* *:unmap!* -:iu[nmap] {lhs} *:iu* *:iunmap* -:cu[nmap] {lhs} *:cu* *:cunmap* - マップコマンドを割り当てられてるモードで、{lhs} への - マッピングを削除します。他のモードに適用されるマッピン - グは残っています。 - 注意: 後ろにスペースがある場合、それも {lhs} の一部と見 - なされます。ですのでこのアンマップコマンドはうまくいき - ません: -> :map @@ foo -> :unmap @@ | print - -:mapc[lear] *:mapc* *:mapclear* -:nmapc[lear] *:nmapc* *:nmapclear* -:vmapc[lear] *:vmapc* *:vmapclear* -:omapc[lear] *:omapc* *:omapclear* -:mapc[lear]! *:mapc!* *:mapclear!* -:imapc[lear] *:imapc* *:imapclear* -:cmapc[lear] *:cmapc* *:cmapclear* - マップコマンドが割り当てられているモードでのすべてのマ - ッピングを削除します。{Vi にはない機能です} - 警告: デフォルトのマッピングも削除されます。 - -:map -:nm[ap] -:vm[ap] -:om[ap] -:map! -:im[ap] -:cm[ap] - マップコマンドを割り当てているモードでのすべてのマッピ - ングをリストします。":map" と ":map!" が一番よく使われ - ます。というのもこれらは他のモードのものも全て含むから - です。 - -:map {lhs} *:map_l* -:nm[ap] {lhs} *:nmap_l* -:vm[ap] {lhs} *:vmap_l* -:om[ap] {lhs} *:omap_l* -:map! {lhs} *:map_l!* -:im[ap] {lhs} *:imap_l* -:cm[ap] {lhs} *:cmap_l* - マップコマンドを割り当てているモードでの {lhs} で始まる - キーの連続へのキー・マッピングをリストします。 +:unm[ap] {lhs} |mapmode-nvo| *:unm* *:unmap* +:nun[map] {lhs} |mapmode-n| *:nun* *:nunmap* +:vu[nmap] {lhs} |mapmode-v| *:vu* *:vunmap* +:xu[nmap] {lhs} |mapmode-x| *:xu* *:xunmap* +:sunm[ap] {lhs} |mapmode-s| *:sunm* *:sunmap* +:ou[nmap] {lhs} |mapmode-o| *:ou* *:ounmap* +:unm[ap]! {lhs} |mapmode-ic| *:unm!* *:unmap!* +:iu[nmap] {lhs} |mapmode-i| *:iu* *:iunmap* +:lu[nmap] {lhs} |mapmode-l| *:lu* *:lunmap* +:cu[nmap] {lhs} |mapmode-c| *:cu* *:cunmap* + マップコマンドに対応したモードの {lhs} というマップを + 削除します。他のモードのマップは残ります。 + Note: 末尾の空白は {lhs} に含まれます。次の unmap コマ + ンドは機能しません: > + :map @@ foo + :unmap @@ | print + +:mapc[lear] |mapmode-nvo| *:mapc* *:mapclear* +:nmapc[lear] |mapmode-n| *:nmapc* *:nmapclear* +:vmapc[lear] |mapmode-v| *:vmapc* *:vmapclear* +:xmapc[lear] |mapmode-x| *:xmapc* *:xmapclear* +:smapc[lear] |mapmode-s| *:smapc* *:smapclear* +:omapc[lear] |mapmode-o| *:omapc* *:omapclear* +:mapc[lear]! |mapmode-ic| *:mapc!* *:mapclear!* +:imapc[lear] |mapmode-i| *:imapc* *:imapclear* +:lmapc[lear] |mapmode-l| *:lmapc* *:lmapclear* +:cmapc[lear] |mapmode-c| *:cmapc* *:cmapclear* + マップコマンドに対応したモードのすべてのマップを削除し + ます。{Vi にはない機能です} + 警告: 標準設定のマップも削除されます。 + +:map |mapmode-nvo| +:nm[ap] |mapmode-n| +:vm[ap] |mapmode-v| +:xm[ap] |mapmode-x| +:sm[ap] |mapmode-s| +:om[ap] |mapmode-o| +:map! |mapmode-ic| +:im[ap] |mapmode-i| +:lm[ap] |mapmode-l| +:cm[ap] |mapmode-c| + マップコマンドに対応したモードのすべてのマップを一覧表 + 示します。Note: 複数のモードを一度に表示できるため、 + ":map" と ":map!" がよく使用されます。 + +:map {lhs} |mapmode-nvo| *:map_l* +:nm[ap] {lhs} |mapmode-n| *:nmap_l* +:vm[ap] {lhs} |mapmode-v| *:vmap_l* +:xm[ap] {lhs} |mapmode-x| *:xmap_l* +:sm[ap] {lhs} |mapmode-s| *:smap_l* +:om[ap] {lhs} |mapmode-o| *:omap_l* +:map! {lhs} |mapmode-ic| *:map_l!* +:im[ap] {lhs} |mapmode-i| *:imap_l* +:lm[ap] {lhs} |mapmode-l| *:lmap_l* +:cm[ap] {lhs} |mapmode-c| *:cmap_l* + マップコマンドに対応したモードの {lhs} で始まるマップ + を一覧表示します。 {Vi にはない機能です} -これらのコマンドは一つのキーもしくはキーの連続を文字列にマップするのに使われま -す。機能キーにコマンドの連続を割りつけることもできますし、1つのキーを他のキー -に変換することなどもできます。現在のマッピングを保存し、そして復元する方法につ -いては |:mkexrc| をご覧下さい。 - -マッピングには5つのセットがあります: -- ノーマルモード: コマンドをタイプする時 -- ビジュアルモード: ビジュアル範囲がハイライトされている間にコマンドを打つ時 -- 演算待ち状態モード: 演算コマンドはタイプされていて移動コマンドはまだタイプさ - れていない時 ("d", "y", "c", などの後)。 -- 挿入モード。これらは上書きモードでも使われます。 -- コマンドラインモード: ":" もしくは "/" コマンドを打った時 - -選択モードには専用のマッピングはありません。ビジュアルモードと同じものが使われ -ます。|Select-mode-mapping| +マップコマンドを使うと、キー入力、または連続したキー入力を別の文字列の入力とし +て割り当てることができます。ファンクションキーに複数のコマンド入力を割り当てる +こともできますし、あるキーを別のキーに変換することもできます。マップを保存、復 +元する方法については |:mkexrc| を参照してください。。 + + *map-ambiguous* +始まりが同じマップが二つあると、どちらを使用するかがあいまいになってしまう場合 +があります。例: > + :imap aa foo + :imap aaa bar +"aa" まで入力した場合、"aa"と"aaa"のどちらを使用するかを決定するためには、次の +文字を入力する必要があります。つまり、"aa" が入力された時点では、まだ使用する +マップが決定されず、次の入力まで待機状態になります。例えば空白文字を入力すれば +"foo"と空白文字が挿入されます。"a" を入力すれば "bar" が挿入されます。 +{Vi はあいまいなマップを許可しません} + + +1.2 特別な引数 *:map-arguments* + +引数に "<buffer>"、"<silent>"、"<special>"、"<script>"、"<expr>"、"<unique>"、 +を指定できます。マップコマンドと他の引数({rhs})の間に指定してください。 + + *:map-local* *:map-<buffer>* *E224* *E225* +カレントバッファだけで使用できるマップを作成するには、マップコマンドの引数に +"<buffer>" を指定します。例: > + :map <buffer> ,w /[.,;]<CR> +この場合、他のバッファで、",w" に対して別の操作を割り当てることができます: > + :map <buffer> ,w /[#&!]<CR> +バッファローカルなマップは通常のマップよりも優先して使用されます。 +"<buffer>" はマップを削除するときにも指定できます: > + :unmap <buffer> ,w + :mapclear <buffer> +バッファローカルのマップはそのバッファが削除されるときにいっしょに消去されま +す。アンロード(|:bunload|)では消去されません。ローカルオプションと同じです。 + + *:map-<silent>* *:map-silent* +実行するコマンドがコマンドラインに表示されないようにするには、マップコマンドの +引数に "<silent>" を指定します。例: > + :map <silent> ,h /Header<CR> +このマップを使用するとき、検索文字列はコマンドラインに表示されません。しかし、 +実行するコマンドが出力するメッセージは表示されてしまいます。それを静かにさせる +には ":silent" を使います。 + :map <silent> ,h :exe ":silent normal /Header\r"<CR> +それでもまだ、例えば inputdialog() のプロンプトなどは表示されます。 +"<silent>" は短縮入力にも使えますが、コマンドラインで使うと表示が乱れてしまい +ます。 + + *:map-<special>* *:map-special* +'cpoptions' に "<" フラグが入っている場合でも、<> 表記を使って特殊キーを記述で +きます。'cpoptions' を設定することで副作用を発生させたくない場合に使ってくださ +い。例: > + :map <special> <F12> /Header<CR> +< + *:map-<script>* *:map-script* +マップコマンドの引数に "<script>" を指定すると、"<SID>" で始まる、スクリプト +ローカルなマップだけが再マップされるようになります。短縮入力を定義するときにも +"<script>" を指定できます。スクリプトでマップを定義するときに、別の場所で定義 +されたマップが影響してしまうのを防ぐことができます。例えば、mswin.vim が使用さ +れて、CTRL-V が別のキーに割り当てられても、その影響を受けることはありません。 +その場合でも、スクリプトローカルなマップを再マップすることができます。 +Note: ":map <script>" と ":noremap <script>" に違いはありません。どちらを使っ +ても"<script>" の効果が優先されます。ただ、":noremap <script>" を使用するほう +がいいでしょう。そのほうが、再マップが制限されることが明確になるからです。 + + *:map-<unique>* *E226* *E227* +マップや短縮入力を定義するときの引数に "<unique>" を指定すると、同じ名前のもの +がすでに定義されていた場合に、コマンドは失敗します。例: > + :map <unique> ,w /[#&!]<CR> +バッファローカルのマップを定義するときは、通常のマップも検査の対象となります。 +失敗する例: > + :map ,w /[#&!]<CR> + :map <buffer> <unique> ,w /[.,;]<CR> +すでにマップされているキーの機能をそのままに、新たにマップを設定したい場合は、 +|maparg()| を参照してください。 + + *:map-<expr>* *:map-expression* +マップコマンドに "<expr>" を指定すると、マップや短縮入力の引数に式(スクリプト) +を指定できます。マップが実行されたときに、式を評価し、その値が {rhs} として使 +われます。例: > + :inoremap <expr> . InsertDot() +関数 InsertDot() の戻り値が挿入されます。カーソルの前のテキストをチェックし +て、ある条件に一致するなら omni 補完を開始する、というようなことができます。 + +副作用に注意してください。マップする文字を得るために式を評価するのですが、簡単 +に異常動作を起こせてしまいます。そのため、次のものは使用できません: +- バッファのテキストの変更 |textlock| +- 他のバッファの編集 +- |:normal| コマンド +- カーソルは移動できますが、式を評価した後に元に戻されます。 +以上のことを実現したい場合は、そのためのコマンド文字列を返してください。 + +例を示します。リストの番号を、自動的に増加させつつ挿入できます: > + let counter = 0 + inoremap <expr> <C-L> ListItem() + inoremap <expr> <C-R> ListReset() + + func ListItem() + let g:counter += 1 + return g:counter . '. ' + endfunc + + func ListReset() + let g:counter = 0 + return '' + endfunc + +CTRL-L で次の番号を挿入し、CTRL-R で番号をリセットします。CTRL-R は空文字列を +返すので、なにも挿入されません。 + +Note: 特殊キーが機能するようにしたり、テキスト中の CSI バイトをエスケープした +りするために、特別な処理が行われています。|:map| コマンドも同様の処理を行うの +で、それが二重に実行されるのを防ぐ必要があります。次のものは機能しません: > + :imap <expr> <F3> "<Char-0x611B>" +なぜなら、<Char- で表記した文字 (あるいは本物の文字) のバイト列は |:imap| コマ +ンドが解釈されるときにエスケープされ、<expr> で使われるときにもう一度エスケー +プされるからです。次のものは機能します: > + :imap <expr> <F3> "\u611B" +テキストの末尾以外で 0x80 をシングルバイトとして使った場合、それは機能しませ +ん。特殊キーとして認識されます。 + + +1.3 マップとモード *:map-modes* + +マップは以下の 5 つのモード別に管理されています。 +- ノーマルモード: ノーマルモードのコマンドを入力するとき。 +- ビジュアルモード: ビジュアルモードのコマンドを入力するとき。 +- 演算子未解決モード: コマンドを入力した後で、移動 (|{motion}|) を待っている + とき("d"、"y"、"c"、などの後)。例えば、":omap { w" と定義すると、"y{" は + "yw" として、"d{" は "dw" として機能します。 +- 挿入モード: 上書きモードでも使われます。 +- コマンドラインモード: ":" もしくは "/" コマンドを入力したとき。 + +例外として、ノーマルモードでカウント(コマンドの繰り返し回数)を入力しているとき +は、0 (ゼロ)に対するマップは適用されません。これは 0 がマップされていても、カ +ウントの指定でゼロを入力できるようにするためです。 *map-overview* *map-modes* -どのコマンドがどのモードで動作するかの要約: - - コマンド: モード: ~ - ノーマル ビジュアル 演算待ち状態 ~ -:map :noremap :unmap :mapclear X X X -:nmap :nnoremap :nunmap :nmapclear X . . -:vmap :vnoremap :vunmap :vmapclear . X . -:omap :onoremap :ounmap :omapclear . . X - - 挿入 コマンドライン ~ -:map! :noremap! :unmap! :mapclear! X X -:imap :inoremap :iunmap :imapclear X . -:cmap :cnoremap :cunmap :cmapclear . X - -オリジナルの Vi はノーマル/ビジュアル/演算待ち状態モードと挿入/コマンドライン -モードにそれぞれ分かれたマッピングは持っていませんでした。ですので、":map" と -":map!" コマンドはいくつかのモードに対してマッピングを設定したり表示させたり -するのです。Vim では ":nmap", ":vmap", ":omap", ":cmap", ":imap" コマンドを使 -うことでそれぞれのモードに分けてマッピングを設定することができます。 - -1つのマッピングをノーマルモードとビジュアルモードに設定し、かつ演算待ち状態モー -ドには設定しない場合は、始めに3つすべてのモードに対して定義してから演算待ち状 -態モードへのマッピングを外します。 +マップコマンドとモードの対応表: + + *mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o* + コマンド: モード: ~ + ノーマル ビジュアル+セレクト 演算待ち状態~ +:map :noremap :unmap :mapclear yes yes yes +:nmap :nnoremap :nunmap :nmapclear yes - - +:vmap :vnoremap :vunmap :vmapclear - yes - +:omap :onoremap :ounmap :omapclear - - yes + +:nunmap は修道院の外でも使えます。 + *mapmode-x* *mapmode-s* +いくつかのマップコマンドはビジュアルモードとセレクトモードの両方に働きますが、 +どちらか一方にしか働かないマップコマンドもあります。Note: 「ビジュアル」という +言葉がビジュアルモードとセレクトモードの両方を指している場合が多々あります。 +|Select-mode-mapping| + + コマンド: モード: ~ + ビジュアル セレクト ~ +:vmap :vnoremap :vunmap :vmapclear yes yes +:xmap :xnoremap :xunmap :xmapclear yes - +:smap :snoremap :sunmap :smapclear - yes + + *mapmode-ic* *mapmode-i* *mapmode-c* *mapmode-l* +Some commands work both in Insert mode and Command-line mode, some not: + + コマンド: モード: ~ + 挿入 コマンドライン Lang-Arg ~ +:map! :noremap! :unmap! :mapclear! yes yes - +:imap :inoremap :iunmap :imapclear yes - - +:cmap :cnoremap :cunmap :cmapclear - yes - +:lmap :lnoremap :lunmap :lmapclear yes* yes* yes* + +訳注: Lang-Argについては |language-mapping| を参照 + +オリジナルの Vi はノーマルモード、ビジュアルモード、演算待ち状態モード、でひと +まとまり、挿入モード、コマンドラインモード、でさらにひとまとまりのマップを持 +ち、それぞれ区別されていませんでした。そのため、Vim の ":map" と ":map!" コマ +ンドはいくつかのモードに対してマップを設定したり表示したりします。 +Vim では ":nmap"、":vmap"、":omap"、":cmap"、":imap" を使い分けることで、それ +ぞれのモード別にマップを設定することができます。 + +あるマップをノーマルモードとビジュアルモードで使用し、そして、演算待ち状態モー +ドでは使用しないという場合は、3つのモードに対してマップを定義してから演算待ち +状態モードのマップだけを削除します: > :map xx something-difficult :ounmap xx -ビジュアルモードと演算待ち状態モードのみの場合や、ノーマルモードと演算待ち状態 -モードのみの場合も同様にします。 - - *map-listing* -マッピングをリストするときの始めの2桁にある文字は: - - CHAR MODE ~ - <Space> ノーマル、ビジュアル、演算待ち状態 - n ノーマル - v ビジュアル - o 演算待ち状態 - ! 挿入とコマンドライン - i 挿入 - c コマンドライン - -{rhs} の直前の "*" は再マップすることができないことを示します。 - -{lhs} の後の最初の非空白文字から、行末(もしくは '|')までのすべては、{rhs} の一 -部とみなされます。このことで {rhs} がスペースで終わることができるようになって -います。 - -メモ: ビジュアルモードでマッピングを使うときは、"'<" マークを使うことができま -す。これは現在のバッファーで最後に選択されたビジュアル範囲の最初です |'<|。 - +ビジュアルモードと演算待ち状態モードの場合や、ノーマルモードと演算待ち状態モー +ドの場合も同様にします。 + + *language-mapping* +":lmap" で定義したマップ(以下、言語マップ)は次の場面で利用できます: +- 挿入モード +- コマンドラインモード +- 検索パターンを入力するとき +- "r" や "f" などのコマンドに続いて文字を入力するとき +- input() の入力 +大まかに説明すると、Vim コマンドとしてではなく、テキストの一部として入力すると +きにはいつでも利用できます。"Lang-Arg" は別個のモードではなく、そのような場面 +の総称です。 + ある言語用の言語マップをロードするには、オプション 'keymap' を設定するのが +簡単です。|45.5|を参照してください。 + 挿入モードとコマンドラインモードでは CTRL-^ で言語マップの使用の有無を切り替 +えることができます|i_CTRL-^| |c_CTRL-^|。(検索パターンの入力ではなく)コマンド +ラインに入力するときには CTRL-^ で切り替えるまで言語マップは無効になっています。 +挿入モードと検索パターンの入力における使用状態は別々に記録されます。挿入モード +用に記録された状態は "f" や "t" などのコマンドで文字を入力するときにも使用され +ます。 + 言語マップは、すでに定義されている(通常の)マップが使用されるときには適用さ +れません。実際に文字を入力するときだけ利用できます。マップコマンドを入力する時 +点で言語マップを使用してください。 + + +1.4 マップの一覧表示 *map-listing* +マップを一覧表示したときの行頭の2文字は使用できるモードを表しています: + + CHAR MODE ~ + <Space> ノーマルモード、ビジュアルモード、演算待ち状態モード + n ノーマルモード + v ビジュアルモード + o 演算待ち状態モード + ! 挿入モード、コマンドラインモード + i 挿入モード + l Lang-Argモード。|language-mapping| + c コマンドラインモード + +{rhs} の直前に特殊な文字が表示されているものは次のことを意味します: + * 再マップされません + & スクリプトローカルなマップだけが再マップされます + @ バッファローカルなマップです。 + +{lhs} の最後の非空白文字から行末 (もしくは'|') までのすべての空白文字は {rhs} +の一部とみなされます。そのため {rhs} の末尾を空白文字にすることができます。 + +Note: ビジュアルモードでマップを使うときは "'<" マークが活用できます。これはカ +レントバッファで選択されていた範囲の開始位置を示しています|'<|。 + + *:map-verbose* +'verbose' がゼロ以外のときにマップ一覧を表示すると、どこで定義されたのかも表示 +されます。例: > + + :verbose map <C-W>* + n <C-W>* * <C-W><C-S>* + Last set from /home/abcd/.vimrc + +詳しくは |:verbose-cmd| を参照してください。 + + +1.5 特殊キーのマップ *:map-special-keys* + +特殊キーをマップに含めるのには次の 3 つの方法があります: +1. Vi 互換の方法: 生のキーコードをマップします。それはほとんどの場合 <Esc> で + 始まるキーコード列です。このようなマップを入力するには、まず ":map " と入力 + し、CTRL-V を押してからファンクションキーを押します。Note: そのキーのキー + コードが termcap(t_options) にある場合は、自動的に内部コードの形式に変換さ + れ、次の 2. のようなマップになります ('cpoptions' に 'k' フラグが指定されて + いる場合は除く) +2. ファンクションキーの内部コードを使います。そのようなマップを入力するには、 + CTRL-K を押してからファンクションキーを押します。もしくは、 + "#1"、"#2"、.."#9"、"#0"、"<Up>"、"<S-Down>"、"<S-F7>"、などの形式で指定し + ます。(参照: キーの表 |key-notation|。<Up> 以下のすべてのキーを使うことがで + きます)。1 から 10 までのファンクションキーは二つの方法で定義できます: "#2" + のような番号だけの方法と、"<F2>" という表記で指定する方法です。この両方が + ファンクションキー 2 を表します。"#0" はファンクションキー 10 を表し、 + 't_f10' で定義されます。"#0" は、キーボードによってはファンクションキー 0に + なることがあります。'cpoptions' に '<' フラグが指定されている場合は、|<>|表 + 記は使えません。 +3. termcap エントリを <t_xx> という形式で指定します。"xx" は termcap エントリ + の名前です。どんなエントリの文字列も使うことができます。例: > + :map <t_F3> G +< これはファンクションキー 3 を "G" にマップします。'cpoptions' に '<' フラグ + が指定されている場合は使えません。 +訳注: > Maps function key 13 to "G". +訳注: Maps function key 3 to "G".のtypo? + +2. と 3. の方法の利点は、異なる端末でもマップを修正する必要がないことです(ファ +ンクションキーは、同じ意味の内部コード、もしくは実際のキーコードに変換されま +す。使用している端末に依存しません。termcap が正しく設定されていれば、異なる端 +末で同じマップを共有できます)。 + +詳細: まず Vim はキーボードから送られたキーコードがマップされているかどうかを +調べます。マップされていなければ、端末のキーコードかどうか調べます(参照 +|terminal-options|)。端末コードであれば、内部コードで置き換えます。それからも +う一度、マップされているかどうかをチェックします (内部コードをマップできるよう +に)。スクリプトファイルに書き込まれる内容は、どのように解釈されたかによりま +す。もし端末のキーコードがマップとして解釈された場合は、キーコードそのものがス +クリプトファイルに書き込まれます。端末コードとして解釈された場合は、内部コード +がスクリプトファイルに書き込まれます。 +訳注: > スクリプトファイルに書き込まれる... +訳注: |save-settings|のことか? + + +1.6 特殊文字 *:map-special-chars* *map_backslash* -ここでは CTRL-V のみが、マッピングと略語での特殊な文字として触れられているとい -うことに注意してください。'cpoptions' が 'B' を含んでいない場合は、バックスラッ -シュも CTRL-V のように使うことができます。そうすると <> 表記を完全に使うことが -できます |<>|。しかし、"<C-V>" を CTRL-V のように後に続くものの特殊な意味をエ -スケープするような使い方はできません。 +Note: このドキュメントでは、マップや短縮入力を定義するときに、CTRL-V だけが特 +殊な文字として触れられていますが、'cpoptions' が 'B' を含んでいない場合は、 +バックスラッシュも CTRL-V と同様の特殊な働きをします。|<>| 表記も問題なく使用 +できます。しかし、"<C-V>" を CTRL-V と同じように、(マップを入力するときに)次の +文字をエスケープする目的で使うことはできません。 バックスラッシュにマップしたり、バックスラッシュをそのまま {rhs} に使いたい場 -合は、特別なシーケンス "<Bslash>" を使うことができます。これを使うことで、ネス -トしているマッピングを使うときにバックスラッシュを重ねる必要がなくなります。 +合に、特別な文字 "<Bslash>" を使うことができます。マップを入れ子にした場合など +にバックスラッシュを二重にする必要がなくなります。 *map_CTRL_C* -{lhs} に CTRL-C を使うことはできません。つまり CTRL-C にマップすることはできな -いのです。CTRL-C は常に動作中のコマンドを中止するのに使えなければならない、と -いうのが理由です。 +CTRL-C を {lhs} で使うことはできますが、それは Vim がキー入力を待機中のときだ +け機能します。Vim がビジー状態 (何かを実行中) のときは機能しません。Vim がビ +ジー状態の場合、CTRL-C は実行中のコマンドを中断します。 +MS-Windows の GUI 環境では、CTRL-C にマップすることができるので、クリップボー +ドにコピーする機能を割り当てることができます。Vim の動作を中断するには +CTRL-Break を使います。 *map_space_in_lhs* -{lhs} にスペースを含めるには CTRL-V を前置してください(それぞれのスペースの前 -で CTRL-V を2回タイプしてください)。 +{lhs} に空白文字を含めるには CTRL-V を前置してください (空白文字の前で CTRL-V +を二度押しで入力)。 *map_space_in_rhs* -もし {rhs} をスペースで始めたければ "<Space>" を使ってください。Vi との互換性 -を完全に保ちたい場合は |<>| 表記は使わないで、{rhs} の前に CTRL-V (CTRL-V を2 -回タイプする必要があります)を前置してください。 +{rhs} を空白文字で開始するには "<Space>" を使ってください。Vi との互換性を完全 +に保ちたい場合は |<>| 表記を使わずに、{rhs} の直前に CTRL-V (CTRL-V を二度押し +で入力)を前置してください。 *map_empty_rhs* -CTRL-V を1つだけ打ち込んだ後に(実際には2回 CTRL-V をタイプする必要があります) -何もタイプしないことで空の {rhs} を作ることもできます。残念ながら vimrc でこれ -をする方法はありません。 +CTRL-V を1つだけ入力した後に (実際にはCTRL-Vを2度押しで入力) 何も入力しないこ +とで空の {rhs} を作ることもできます。残念ながらvimrcファイル内ではこの方法は使 +用できません。 *<Nop>* -何もしないマッピングを作るより簡単な方法は、"<Nop>" を {rhs} に使うことです。 -これは |<>| 表記を使えるようにしていると動作します。例えば、ファンクション・キー -8は何もしないようにしたい場合は: -> :map <F8> <Nop> -> :map! <F8> <Nop> +空のマップを作るには {rhs} に "<Nop>" を指定する方法が簡単です。これは |<>| 表 +記を使えるようにしていれば動作します。例えば、ファンクションキー 8 は何もしな +い、としたい場合は次のようにします: > + :map <F8> <Nop> + :map! <F8> <Nop> +< + *<Leader>* *mapleader* +マップコマンドで特別な文字列 "<Leader>" を使用すると、その部分が変数 +"mapleader" に設定された文字列で置き換わります。"mapleader" が空文字列のときや +設定されていない場合にはバックスラッシュが使用されます。例: > + :map <Leader>A oanother line<Esc> +これは次のものと同じ意味です: > + :map \A oanother line<Esc> +しかし次のように設定したあとでは: > + :let mapleader = "," +次のものと同じ意味になります: > + :map ,A oanother line<Esc> + +Note: 変数 "mapleader" はマップを定義するときに使用されます。"mapleader"を変更 +しても、すでに定義されているマップには影響しません。 + + *<LocalLeader>* *maplocalleader* +<Leader> と同じですが、"mapleader" ではなく "maplocalleader" を使用します。 +<LocalLeader> はバッファローカルのマップに使用するといいでしょう。例: > + :map <LocalLeader>q \DoItNow +< +グローバルプラグインでは <Leader> を使用し、ファイルタイププラグインでは +<LocalLeader> を使用といいでしょう。"mapleader" と "maplocalleader" の設定は同 +じでも構いませんが、別の値を設定すれば、グローバルプラグインとファイルタイププ +ラグインのマップが重なる可能性が低くなります。設定例としては、"mapleader" を +バックスラッシュのままにしておいて、"maplocalleader" をアンダースコア (_) にす +るなど。 + + *map-<SID>* +特別な文字列 "<SID>" を使ってスクリプトローカルなマップを定義できます。詳細は +|<SID>|を参照してください。 + + *<Plug>* +特別な文字列 "<Plug>" を使ってスクリプトの内部作業用のマップを定義できます。こ +れはどのキー入力にもマッチしません。プラグインを作成するときに便利です +|using-<Plug>|。 + + *<Char>* *<Char->* +<Char> を使って、文字を10進数、8進数、16進数の数値指定でマップできます: + <Char-123> character 123 + <Char-033> character 27 + <Char-0x7f> character 127 +これは 'keymap' ファイルで (マルチバイト) 文字を定義するのに便利です。表記は大 +文字でも小文字でも構いません。 *map-comments* -'"' 文字も {lhs} か {rhs} の一部と見なされるため、これらのコマンドの後ろにコメ -ントを挿入することはできません。 +マップコマンドでは '"' (ダブルクオート) も {lhs} や {rhs} の一部と見なされるた +め、マップコマンドの後ろにコメントを挿入することはできません。 *map_bar* -'|' 文字はマップコマンドを次のコマンドと分けるのに使われますので、'|' を -{rhs} に含めるにはなにか特別なことをする必要があります。3つの方法があって: - use works when example ~ - <Bar> '<' が'cpoptions'になければ :map _l :!ls <Bar> more^M - \| 'b' が'cpoptions'になければ :map _l :!ls \| more^M - ^V| Vim と Vi で常に :map _l :!ls ^V| more^M +'|' 文字は、マップコマンドに次のコマンドを続けて書くために使われています。'|' +文字を {rhs} に含めるには次の3つの方法があります: + 方法 使用できる条件 例 ~ + <Bar> 'cpoptions'に'<'が含まれていない :map _l :!ls <Bar> more^M + \| 'cpoptions'に'b'が含まれていない :map _l :!ls \| more^M + ^V| VimとViで常に使用できる :map _l :!ls ^V| more^M -(ここで ^V は CTRL-V を表します; 1つの CTRL-V を挿入するには2回 CTRL-V をタイ -プする必要があります; ここで <> 表記を使って "<C-V>" とすることはできません)。 +(ここで ^V は CTRL-V を表します。一つの CTRL-V を挿入するには CTRL-V を二度押 +しで入力します。この用途では、|<>|表記を使って"<C-V>"とすることはできません)。 -'cpoptions' をデフォルトの設定で使っていると、これら3つ全てうまく動作します。 +'cpoptions' が標準設定のままなら、三つ全ての方法が使用できます。 -'b' が 'cpoptions' にあると、"\|" は '\' で終わるマッピングとそれから別のコマ -ンドが続いているとみなされます。これは Vi コンパチブルではありますが、他のコマ -ンドと比べるとあまり論理的ではありません。 +'cpoptions' に 'b' が含まれている場合、"\|" は、 '\' で終わるマップコマンドの +後に、別のコマンドが続いているとみなされます。これは Vi 互換ですが、他のコマン +ドの場合を考えるとあまり論理的ではありません。 *map_return* -マッピングに Ex コマンドを含める場合、その後にそれを実行するために行を終了させ -るものを挿入する必要があります。これには <CR> を使うことが推奨されています(参 -照 |<>|)。例: -> :map _ls :!ls -l %<CR>:echo "the end"<CR> - -挿入もしくはコマンドラインモードで文字列へののマッピングを避けるには、始めに - CTRL-V をタイプしてください。'paste' オプションがオンになっていると挿入モード -でのマッピングは解除されます。 - -エラーが起きた場合は(エラーメッセージが出ます)、その後のマッピングは実行されな -いということに注意してください。これは Vi コンパチブルです。 - -azZtTfF[]rm'`"v と CTRL-X コマンドの次の文字(引数)には、マップされていないとい -うことを覚えておいてください。これは、すでにそのコマンドが同じ名前でマップされ -ていても、すべての名前付きレジスターとマークを使えるようにするために行われまし -た。 - - *map-which-keys* -なにかマップしようとしているときに、{lhs} にどのキーを使うかを選択する必要があ -ります。Vim コマンドで使われているキーは避けるようにする必要がありますし、そう -しないとそれらのコマンドを使うことができなくなります。そこでいくつかの提案とし -ては: -- ファンクション・キー <F2>, <F3> など。またShift+ファンクション・キー <S-F1>, - <S-F2> など。 <F1>は既にヘルプコマンド用に使われていることも注意してください。 -- Metaキー(ALTキーを押しながら)。 -- "_" か "," 文字とそれに続く文字を使う。"_" と "," コマンドはすでにVimには存 - 在していますが(参照|_|)、たぶん使うことはないでしょう。 -- 他のコマンドと同じ用途のキーを使う。例えば: CTRL-PとCTRL-N。もっとマッピング - をするためには、余分な文字を使います。 - - *map-examples* -いくつかの例(そのままタイプする形です。"<CR>" はそのまま4文字をタイプします; -この表記を使うには 'cpoptions' に '<' フラグがあってはいけません。 - -> :map <F3> o#include -> :map <M-g> /foo<CR>cwbar<Esc> -> :map _x d/END/e<CR> -> :map! qq quadrillion questions - - *map-typing* -Vim はマップされているシーケンスの最初とタイプされた文字を比較します。途中まで -マッチしているものが見つかれば、完全にマッチするかマッチするものがなくなるまで、 -さらにタイプされる文字を待ちます。例えば: "qq" に map! していると、最初にタイ -プした 'q' は、次の文字をタイプするまでスクリーンには表示されません。なぜなら、 -Vim は次にタイプされる文字が 'q' であるかそうでないかは知ることができないから -です。'timeout' オプションがオンになっていると(デフォルトでオンです)、Vim は1 -秒間だけ待ちます(もしくは 'timeoutlen' オプションで指定されている長さだけ)。そ -の後に、'q' はそのものを意味するのだとみなします。もしタイプする速さが遅かった -り、システム自体が遅い場合は 'timeout' オプションを外してください。それから -'ttimeout' オプションもセットしておきたいかもしれません。 +マップに Ex コマンドを含める場合、そのコマンドラインを実行するために改行文字を +挿入する必要があります。これには <CR> を使うことが推奨されています(参照|<>|)。 +例: > + :map _ls :!ls -l %<CR>:echo "the end"<CR> + +挿入モードやコマンドラインモードで、入力する文字がマップされないようにするに +は、その文字を入力する前に CTRL-V を (1回) 押してください。'paste' がオンの場 +合には、挿入モードでマップを使用できません。 + +Note: マップを使用したときに、エラーが起きた場合 (エラーメッセージやビープ音が +出ます)、マップのまだ実行されていない部分は実行されません。これはVi互換です。 + +Note: コマンド「@zZtTfF[]rm'`"v」と CTRL-X の引数にはマップは適用されません。 +どのようなマップがあっても、レジスタやマークを指定できるようにするためです。 + +1.7 マップに使うキー *map-which-keys* + +マップを定義するとき、{lhs} に指定するキーを、選ぶことができますが、Vim のコマ +ンドに使われているキーをマップしてしまうとそれらのコマンドを使用できなくなりま +す。そこで、いくつかの提案があります: +- ファンクションキー (<F2>、<F3>など) や Shift+ファンクションキー(<S-F1>、 + <S-F2>など) を使用する。<F1> には既にヘルプコマンドが割り当てられています。 +- Meta キー (ALTキー) を使用する。 |:map-alt-keys| +- "_" や "," などの文字と別の文字を組み合わせて使用する。コマンド "_" と"," は + すでに存在していますが (|_|と|,|を参照)、使う機会はあまりないでしょう。 +- 同じような動作をするコマンドのキーを使用する。例えば、CTRL-P と CTRL-N。さら + に多くのマップを使用するには、複数文字を使用します。 + +標準のキー操作を損なうことなくマップできるキーや、使われていないキーを探すには +|index.txt| を参照してください。":help {key}^D" を使用してそのキーが使われてい +るかどうかを調べることもできます ({key}は調べたいキー、^DはCTRL-Dの入力)。 + + +1.8 例 *map-examples* + +マップの例をいくつか示します (見た通り入力してください。"<CR>" は 4 文字です。 +このような表記(|<>|)は 'cpoptions' に '<' が含まれていると使用できません)。 > + + :map <F3> o#include + :map <M-g> /foo<CR>cwbar<Esc> + :map _x d/END/e<CR> + :map! qq quadrillion questions +< +1.9 マップを使う *map-typing* + +Vim は、入力されたキーで始まるマップがあるかどうか調べ、そのようなマップがある +場合は、入力とマップが完全に一致するか一致しないと判断できるまで、次の入力を待 +ちます。例えば、"qq" というマップがあるとして、最初に入力した'q' は、次の文字 +を入力するまで実際に入力されません。なぜなら、Vim には次に入力される文字が 'q' +であるかそうでないかを知ることができないからです。'timeout' がオンになっている +と (標準設定はオンです)、Vim は一秒間 (または 'timeoutlen' で指定されている時 +間) だけ待機します。待機した後に、'q' という文字が入力されたのだと判断します。 +ゆっくり入力したい場合や、遅いシステムを使用している場合は、'timeout' をオフに +してください。'ttimeout'を設定するのもいいでしょう。 *map-keys-fails* -ある状況では、キーコードが認識されないこともありえます: -- Vimがキーコードを部分的にしか読めない。たいていの場合、これは最初の文字だ - けです。一部のバージョンのUnixのxtermで起こります。 -- 文字(列)のあとのマップされたキーコードがある。例、"<F1><F1>"あるいは"g<F1>"。 -この状況においてはキーコードは認識されず、マッピングは失敗します。 -この問題を避けるには、2つの方法があります: -- 'cpoptions'から'K'フラグを除く。これで、Vimはファンクションキーの残りの文字 - 列を待つようになります。 -- <F1>から<F4>によって生成される実際のキーコードを使っているとき、<xF1>から - <xF4>に一致しているかもしれません。<xF1>から<F1>へ、<xF2>から<F2>へ、などの - マッピングが存在しますが、これらはマッピングのもう半分のあとでは認識されませ - ん。<F1>から<F4>のキーコードが正しいことを確認してください: -> :set <F1>=<type CTRL-V><type F1> - <F1>を4文字としてタイプします。"="の後の部分は文字通りにではなく、実際のキー - を打ち込んでください。 -別の解決法は、第2の特殊キーへのマッピングで実際のキーコードを使うことです: -> :map <F1><Esc>OP :echo "yes"<CR> -本物の<Esc>をタイプしないこと。Vimはキーコードを認識して無条件に<F1>と置き換え +次のような状況では、キーコードが認識されないことがあります: +- Vim がキーコードを部分的にしか読めない。これは最初の文字だけ読める場合が多い + です。一部の Unix の xterm で起こります。 +- 文字(列)の後にキーコードがあるマップ。例、"<F1><F1>" や "g<F1>"。 + +このように、キーコードが認識されない状況では、そのようなマップを使用することが +できません。対処方が2つあります: + +- 'cpoptions' から 'K' フラグを除く。そうすると Vim はファンクションキーの残り + のコードを待つようになります。 +- <F1> から <F4> のキーによって生成される実際のキーコードが、<xF1> から <xF4> + と同じ場合があります。<xF1> を <F1> へ、<xF2> を <F2>へ、といったマップが存 + 在しますが、これはマップの後半では認識されません。<F1> から <F4> のキーの + キーコードを正しく設定してください: > + :set <F1>=<type CTRL-V><type F1> +< <F1> を四文字として入力してください。"=" の後の部分は文字通りにではなく、実 + 際のキーを入力してください。 +マップを定義するときに二番目の特殊キーを実際のキーコードで指定することでも解決 +できます: > + :map <F1><Esc>OP :echo "yes"<CR> +本物の <Esc> を入力しないでください。Vim がキーコードを認識し、<F1> に置き換え てしまいます。 +他にも、ALT や Meta キーを押しながらキーを入力したときに、コードの 8 ビット目 +をセットする代わりに、 そのキーに ESC を前置するような端末で、問題が起こること +があります。|:map-alt-keys| を参照。 + *recursive_mapping* -{rhs} の中に {lhs} を含める場合は、再帰的なマッピングを使うことができます。 -{lhs} がタイプされると、{rhs} に置き換えられます。{rhs} の中に {lhs} があらわ -れるとそれも置き換えられ、...。このことでコマンドを無限の回数繰り返すことがで -きます。エラーを生じさせないと止めることができないのが唯一の問題です。1つだけ -例外があります: {rhs} が {lhs} で始まっていると、始めの文字が再帰的にマップさ -れることはありません(これは Vi 互換です)。 -例えば: -> :map ab abcd -は "a" コマンドを実行して "bcd" をテキストに挿入します。{rhs} の中の "ab" は再 -帰的にマップされることはありません。 - -2つのキーの意味を入れ換えたければ :noremap コマンドを使ってください。例えば: -> :noremap k j -> :noremap j k +{rhs} の中に {lhs} を含めて、再帰マップを作成できます。{lhs} を入力すると +{rhs} に置き換えられ、{rhs} の中に {lhs} があるとその {lhs} がさらに {rhs} に +置き換えられ、さらに {rhs} の中の {lhs} が置き換えられ...。というようにコマン +ドを無限に繰り返すことができます。エラーを生じさせないと止めることができないの +が唯一の問題です。例外として、{rhs} が {lhs} で始まっている場合は、その文字は +再帰的にマップされません (これは Vi 互換です)。 +例えば次のマップは: > + :map ab abcd +"a" コマンドを実行して "bcd" を挿入します。{rhs} の中の "ab" は再帰的にマップ +されません。 + +二つのキーの意味を入れ換えるような場合は :noremap を使ってください。例えば: > + :noremap k j + :noremap j k これは、カーソルの上下移動のコマンドを入れ換えます。 -普通の :map コマンドで、'remap' オプションがオンになっていると、{lhs} の一部で -はないテキストが見つかるまでマッピングは起こります。例えば、次のようにしている -と: -> :map x y -> :map y x -Vim はまず x を y で置き換え、それから y を x で置き換え、...。これが -'maxmapdepth' 回数起こると、Vim は "recursive mapping" というエラーメッセージ -を表示します。 - -"index" ファイルを見て使われていないキーを探し、それらを使って実装されている機 -能を失うことなくマップすることができます。ファンクション・キーとメタキーを使うこ -とを勧めます。もし、ほとんど使わないコマンドは失ってもいいと思うなら、"_" もし -くは "-" で始まるマッピングを作ってもよいでしょう。また ":help {key}^D" とする -ことで、キーがなんらかのコマンドで使われているかどうか調べることもできます。 -({key}は探したいキーを指定し、^D はCTRL-Dです)。 - -マップされるシーケンスにアンドゥコマンドを含めたとすると、これはテキストをマク -ロが実行される前の状態に戻すことになります。マップされるシーケンスにアンドゥコ -マンドを1個のみ含める限り、このことはオリジナルの Vi 互換です(オリジナルの Vi -でアンドゥコマンドを2つ、マップされるシーケンスに含めても意味がありません。始 -めのアンドゥを実行する前のテキストの状態に戻るだけです)。 - -特殊なキーをマップに含めるのには、3つの方法があります: -1. Vi 互換の方法: キーコードをマップします。これは <Esc> で始まるシーケンスで - あることがよくあります。このようなマッピングを挿入するには、まず ":map " と - タイプしてから、機能キーを押す前に CTRL-V をタイプする必要があります。もし、 - そのキーのキーコードが termcap (t_options) にあれば、自動的に内部コードの形 - 式に変換され、二番目のような方法のマッピングになります('k' フラグが - 'cpoptions' に含められていない限り)。 -2. 2番目の方法は機能キーの内部コードを使う方法です。そうしたマッピングを挿入す - るには、まず CTRL-K を押してから機能キーを押してください。もしくは "#1", - "#2", .. "#9", "#0", "<Up>", "<S-Down>", "<S-F7>", などの形式を使ってくださ - い。(参照: キーの表 |key-notation|。<Up> からのすべてのキーを使うことができ - ます)。始めの10個のファンクション・キーは2つの方法で定義できます: "#2" のよ - うな番号だけの方法と、"<F>" と共に "<F2>" のように指定する方法です。この両 - 方がファンクション・キー2を表します。"#0" はファンクション・キー10を表し、 - t_f10 で定義されます。これはキーボードによってはファンクション・キー0である - かもしれません。'cpoptions' に '<' フラグが含められていると、<> 形式は使え - ません。 -3. termcap エントリーを <t_xx> という形式で使う方法です。"xx" は termcap エン - トリーの名前です。どんなエントリーの文字列も使うことができます。例えば: -> :map <t_F3> G - ファンクション・キー13を "G" にマップします。これは 'cpoptions' に '<' フラ - グが含められていると使えません。 - -二番目と三番目の方法の利点は、異なる端末で修正なしでマッピングが動作することで -す(機能キーは、端末によらずそれと同じ内部コード、もしくは実際のキーコードに変 -換されます。これが動作するには termcap が正しく動作しなければなりません。そし -て、同じマッピングを使っていなければなりません)。 - -詳細: まず Vim はキーボードから入力されるシーケンスがマップされているかどうか -を調べます。マップされていなければ、端末のキーコードが試されます(参照 -|terminal-options|)。もし端末のコードが見つかれば、内部コードで置き換えられま -す。それからさらに、マッピングのチェックが行われます(内部コードを他にマップで -きるように)。スクリプトファイルに書き込まれる内容は、どのように解釈されたかに -よります。もし端末のキーコードがマッピングとして解釈された場合は、キーコードそ -のものがスクリプトファイルに書き込まれます。端末のコードとして解釈された場合は、 -内部コードがスクリプトファイルに書き込まれます。 +普通の :map コマンドでマップを定義した場合、'remap' オプションがオンになってい +ると、そのマップが使用された後のテキスト ({rhs}) に {lhs} が含まれている限り、 +マップが再帰的に繰り返されます。例えば、次のようなマップを使用する場合: > + :map x y + :map y x +Vim はまず、 x を y で置き換え、それから y を x で置き換え、...。これを +'maxmapdepth' に設定した回数だけ (標準設定は1000回) 繰り返し、"recursive +mapping" というエラーメッセージを表示します。 + + *:map-undo* +マップされたもの({rhs})がアンドゥコマンドを含んでいると、その操作を実行する前 +の状態に戻すことになります。アンドゥが1回だけなら、その動作はオリジナルのVi互 +換です(オリジナルのViでは、2回アンドゥしても意味がなく、最初のアンドゥを実行す +る前の状態に戻るだけです)。 + + +1.10 ALT キーを使ったマップ *:map-alt-keys* + +GUI では、Vim は Alt キーを直接取り扱うので、ALT キーを使ったマップは常に機能 +します。CUI 端末では、Vim は受け取ったバイト列から、ALT キーが押されているかど +うかを割り出さなければなりません。 + +初期設定では、ALT キーが押されているときは、文字の 8 ビット目が設定されるもの +と仮定しています。xterm、aterm、rxvt など、ほとんどの端末はこの方法で問題あり +ません。<A-k> のようなマップが動作しない場合は、その端末が、文字の前に ESC を +付けているのかもしれません。ユーザーが文字の前に ESC を入力することもできます +から、Vim はその違いを知ることはできません (ただし、ESC と文字の間に延滞がある +かどうかをチェックする方法はあります。確実な方法ではありませんが)。 + +現在、gnome-terminal や konsole などの主要な端末が ESC を前置します。代わりに +8 ビット目を使うように設定する方法はないようです。Xterm では設定なしで機能しま +す。Aterm と rxvt では "--meta8" 引数を使えば機能します。"metaSendsEscape"、 +"eightBitInput"、eightBitOutput" のようなリソースを設定することでも動作を変更 +できます。 + +Linux コンソールでは、"setmetamode" コマンドで動作を切り替えることができます。 +ESC の前置を使わないようにすると、他のプログラムで問題が起こると思うので気を付 +けてください。bash の "convert-meta" が "on" になっていることを確認し、Meta +キーバインディングが動作するようにしてください。(システム固有の設定変更をして +いなければ、これは readline の標準の動作です)次の行を ~/.inputrc に追加する +と、その設定をすることができます: > + + set convert-meta on + +ファイルをはじめて作成した場合は、システム全体の設定を維持するために、次の行を +最初に加える必要があるかもしれません(そのファイルがシステムにある場合): > + + $include /etc/inputrc + +このように設定すると、ウムラウトのような特殊な文字を入力できなくなるかもしれま +せん。その場合は、文字の前に CTRL-V を入力してください。 + +convert-meta は UTF-8 ロケールでは問題を起こすことがすでに報告されています。 +xterm のような端末では、起動しているときに、メニューの "Main Options" から +"metaSendsEscape" リソースを設定できます。メニューは端末を Ctrl-LeftClick する +と表示できます。他のアプリケーションでは ESC を使い、Vim では使いたくない、と +いう場合にこのリソースを使うと便利です。 + + +1.11 オペレーターの作成 *:map-operator* + +オペレーターは {motion} コマンドと合わせて使われます。独自のオペレーターを定義 +するには、最初に 'operatorfunc' を設定し、そして、|g@| オペレーターを呼びま +す。ユーザーが {motion} コマンドを実行した後、設定した関数が実行されます。 + + *g@* *E774* *E775* +g@{motion} 'operatorfunc' に設定された関数を実行します。 + '[ マークに {motion} で選択された範囲の最初の位置が設 + 定されます。'] マークには選択範囲の最後の位置が設定さ + れます。 + 関数の引数には、文字列が一つ渡されます: + "line" {motion} が行単位の場合 |linewise| + "char" {motion} が文字単位の場合 |characterwise| + "block" {motion} がブロック選択の場合 |blockwise-visual|| + "block" はたまにしか使われません。ビジュアルモードの場 + 合だけ渡されるのですが、"g@" と合わせてもそれほど便利 + ではないからです。 + {|+eval| が有効な場合のみ利用できます} + +例を示します。これは <F4> を使ってスペースの数を数えます: > + + nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@ + vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR> + + function! CountSpaces(type, ...) + let sel_save = &selection + let &selection = "inclusive" + let reg_save = @@ + + if a:0 " Invoked from Visual mode, use '< and '> marks. + silent exe "normal! `<" . a:type . "`>y" + elseif a:type == 'line' + silent exe "normal! '[V']y" + elseif a:type == 'block' + silent exe "normal! `[\<C-V>`]y" + else + silent exe "normal! `[v`]y" + endif + + echomsg strlen(substitute(@@, '[^ ]', '', 'g')) + + let &selection = sel_save + let @@ = reg_save + endfunction + +Note: 一時的に 'selection' を "inclusive" に設定し、'[ から '] まで選択した範 +囲を正しくヤンクできるようにしています。 + +Note: ビジュアルモードのために別のマップを定義しています。ビジュアルモードで +":" を押した場合に挿入される "'<,'>" を削除し、関数に visualmode() の値と追加 +の引数を渡しています。 ============================================================================== -2. 略語補完 *abbreviations* *Abbreviations* +2. 短縮入力 (Abbreviations) *abbreviations* *Abbreviations* -略語補完は、挿入モード、上書きモード、コマンドラインモードで使えます。略記とし -て登録されている単語を挿入した場合、それが表す単語に置き換えられます。これは、 -よく使う長い単語を打ち込むときのタイプ数を減らしてくれます。そして、明確なスペ -ルエラーを自動的に修正するのにも使えます。 +短縮入力は、挿入モード、上書きモード、コマンドラインモードで使えます。短縮入力 +として登録されている単語を入力すると、それが表す単語に置き換えられます。よく使 +う長い単語を打ち込むときのタイプ数を減らしたり、明確なスペルミスを自動的に修正 +するのに使えます。 例: :iab ms MicroSoft :iab tihs this -略記には三つの種類があります: +短縮入力には三つの種類があります: full-id "full-id" タイプは完全なキーワード文字から構成されます( 'iskeyword' - オプションに含まれる文字です)。最も一般的な略記です。 + オプションに含まれる文字です)。最も一般的な短縮入力です。 例: "foo", "g3", "-1" end-id "end-id" タイプはキーワード文字で終わりますが、他の文字はキーワード - 文字ではないです。 + 文字ではありません。 例: "#i", "..f", "$/7" non-id "non-id" タイプは非キーワード文字で終わります。他の文字はスペースと - タブ以外のどんなタイプの文字でもよいです。{Vi では、このタイプはサポ - ートされていません} + タブ文字以外のどんな文字でもよいです。{Vi では、このタイプはサポート + されていません} 例: "def#", "4/7$" -略記できない文字列の例: "a.b", "#def", "a b", "_$r" +短縮入力にできない文字列の例: "a.b", "#def", "a b", "_$r" -略記は非キーワード文字をタイプしたときに解釈されます。これは、挿入モードを終わ -らせる <Esc> をタイプしたり、コマンドを終わらせる <CR> をタイプしたときにも起 -こります。略記を終わらせる非キーワード文字は、略記が展開された後に挿入されます。 -例外は <C-]> 文字で、略記以外の文字を挿入せずに略記を展開するのに使われます。 +短縮入力は非キーワード文字を入力したときに展開されます。これは、挿入モードを終 +わらせる<Esc>を入力したり、コマンドを終わらせる<CR>を入力したときにも起こりま +す。短縮入力を終わらせる非キーワード文字は、短縮入力を展開した後に挿入されま +す。<C-]>文字は例外で、短縮入力だけが展開され挿入されます。 -例: -> :ab hh hello - "hh<Space>" で "hello<Space>" に展開されます。 +例: > + :ab hh hello +< "hh<Space>" で "hello<Space>" に展開されます。 "hh<C-]>" で "hello" に展開されます。 -カーソルの前の文字が略記にマッチしなければなりません。それぞれのタイプで、さら -に規則があります: +カーソルの前の文字が短縮入力とマッチする場合のみ機能します。短縮入力の種類に +よって、さらに条件があります: -full-id マッチしたものの前が非キーワード文字であるか、行もしくは挿入が始まっ - た場所。例外: 略記が1文字のみである場合、その前にスペースか <Tab> 以 - 外の非キーワード文字があると解釈されません。 +full-id 短縮入力の文字の前が非キーワード文字、行頭、挿入を開始した場所、であ + ること。例外: 短縮入力が1文字の場合、その前の文字がスペース、<Tab>、 + 以外の非キーワード文字なら短縮入力は展開されません。 -end-id マッチしたものの前が非キーワード文字であるか、スペースもしくは <Tab> - であるか、行もしくは挿入が始まる場所。 +end-id 短縮入力の文字の前が非キーワード文字、スペース、<Tab>、行頭、挿入を + 開始した場所、であること。 -non-id マッチしたものの前が<Tab> であるか、行もしくは挿入が始まる場所。 +non-id 短縮入力の文字の前が<Tab>、行頭、挿入を開始した場所、であること。 -例: ({CURSOR}は非キーワード文字をタイプする場所です) -> :ab foo four old otters - " foo{CURSOR}" は " four old otters" に展開されます +例: ({CURSOR}は非キーワード文字を入力する場所です) > + :ab foo four old otters +< " foo{CURSOR}" は " four old otters" に展開されます " foobar{CURSOR}" は展開されません "barfoo{CURSOR}" は展開されません - -> :ab #i #include - "#i{CURSOR}" は "#include" に展開されます +> + :ab #i #include +< "#i{CURSOR}" は "#include" に展開されます ">#i{CURSOR}" は展開されません - -> :ab ;; <endofline>" - "test;;" は展開されません +> + :ab ;; <endofline> +< "test;;" は展開されません "test ;;" は "test <endofline>" に展開されます -挿入モードで略記を避けるには: 略記の一部をタイプしてから挿入モードを <Esc> で -抜け、再度挿入モードに "a" で入って残りをタイプします。もしくは、略記の後の文 -字の前で CTRL-V をタイプします。 -コマンドラインモードで略記を避けるには: 略記の展開を避けるには、略記の途中で - CTRL-V を2回タイプしてください。普通の文字の前の CTRL-V はだいたい無視されま -す。 - -略記の後で、カーソルを動かすこともできます。 -> :iab if if ()<Left> -これは、'cpoptions' に '<' フラグが含まれていると、うまく動作しません。|<>| - -デフォルトで設定されている略記はありません。 - -略記の展開は再帰的には行われません。":ab f f-o-o" という略記を問題なく使うこと -ができます。しかし、略記をマップすることはできます。 {Vi ではいくつかのバージョ -ンで再帰的な略記をサポートしていますが、そこになんら明確な理由があるわけではな -いです} - -'paste' オプションがオンだと略記は使えなくなります。 - +挿入モードで短縮入力の展開を避けるには、短縮入力の一部を入力してから挿入モード +を <Esc> で抜け、再度挿入モードに "a" で入って残りを入力します。もしくは、 +CTRL-V を押してから短縮入力の後の文字を入力します。 +コマンドラインモードで短縮入力の展開を避けるには、短縮入力の文字の途中でCTRL-V +を入力します (CTRL-V を2度押し)。展開されなかった場合、普通の文字の前のCTRL-V +は普通は無視されます。 +訳注: > コマンドラインモードで... +訳注: 動作確認できず + +短縮入力の後で、カーソルを動かすこともできます: > + :iab if if ()<Left> +これは、'cpoptions'に'<'フラグが含まれていると、うまく動作しません。|<>| + +さらに手の込んだこともできます。例えば、短縮入力を展開するときに入力したスペー +スを消してしまうには: > + func Eatchar(pat) + let c = nr2char(getchar(0)) + return (c =~ a:pat) ? '' : c + endfunc + iabbr <silent> if if ()<Left><C-R>=Eatchar('\s')<CR> + +標準設定されている短縮入力はありません。 + +短縮入力の展開は再帰的には行われません。":ab f f-o-o" という短縮入力を問題なく +使うことができます。しかし、展開された文字にはマップが適用されます。 {Vi のい +くつかのバージョンで再帰的な短縮入力をサポートしていますが、そこになんら明確な +理由はありません} + +'paste'オプションがオンの場合、短縮入力は使用できません。 + + *:abbreviate-local* *:abbreviate-<buffer>* +マップと同じように、バッファローカルな短縮入力を作成できます。これは主に +|filetype-plugin|などで使用されます。C言語用プラグインの例: > + :abb <buffer> FF for (i = 0; i < ; ++i) +< *:ab* *:abbreviate* -:ab[breviate] すべての略記をリストします。1列目の文字は、略記が使わ - れるモードを示しています: 'i' は挿入モード、'c' はコマ - ンドラインモード、'!' はその両方。 - -:ab[breviate] {lhs} {lhs}で始まる略記をリストします。 - -:ab[breviate] {lhs} {rhs} - {rhs}の略記を{lhs}として定義します。既に{lhs}が定義さ - れていると、新しい{rhs}で置き換えられます。{rhs}はスペ - ースを含んでいてもかまいません。 +:ab[breviate] すべての短縮入力を一覧表示します。行頭の文字は、その短 + 縮入力を使用できるモードを示しています: 'i' は挿入モー + ド、'c' はコマンドラインモード、'!' はその両方。マップ + の一覧表示と同じです。|map-listing|を参照。 + + *:abbreviate-verbose* +'verbose' がゼロ以外のときに短縮入力一覧を表示すると、どこで定義されたのかも表 +示されます。例: > + + :verbose abbreviate + ! teh the + Last set from /home/abcd/vim/abbr.vim + +詳しくは |:verbose-cmd| を参照してください。 + +:ab[breviate] {lhs} {lhs} で始まる短縮入力を一覧表示します。 + {lhs} に入力した文字が短縮入力として展開されないように + するには CTRL-V (2度押しで入力する) を入力します。そう + しないとコマンドライン用の短縮入力があった場合にそれが + 展開されてしまいます。 +訳注: 2つの短縮入力"abc"と"abcdef"があるとき:ab abc^V^V^Mだと"abc"のみ表示され +訳注: る。:ab abc^V ^Mで両方表示される。 + +:ab[breviate] [<expr>] {lhs} {rhs} + {rhs} の短縮入力を {lhs} として定義します。既に {lhs} + が定義されていると、新しい {rhs} で置き換えられます。 + {rhs} はスペースを含んでいてもかまいません。 + <expr> 引数については|:map-<expr>|を参照してください。 *:una* *:unabbreviate* -:una[bbreviate] {lhs} {lhs}への略記をリストから全て削除します +:una[bbreviate] {lhs} {lhs} という短縮入力を全て削除します。見つからなかった + 場合は、{lhs} に入力した文字を各短縮入力の {rhs} から + 探して見つかったものを削除します。これは短縮入力が展開 + されてしまった状態でも削除できるようにするためです。短 + 縮入力の展開を防ぐには CTRL-V (2度押しで入力する) を入 + 力します。 +訳注: "abc"という短縮入力があるとき:una abc^V^V^Mでは削除できず。:una abc^V ^M +訳注: で削除できた。 *:norea* *:noreabbrev* -:norea[bbrev] [lhs] [rhs] - ":ab" と同じですが、{rhs}への再帰的なマッピングを許し - ません。{Vi にはない機能です} +:norea[bbrev] [<expr>] [lhs] [rhs] + ":ab" と同じですが、展開後にマップを適用しません。 + {Vi にはない機能です} *:ca* *:cabbrev* -:ca[bbrev] [lhs] [rhs] ":ab" と同じですが、コマンドラインモードのみで有効で - す。{Vi にはない機能です} +:ca[bbrev] [<expr>] [lhs] [rhs] + ":ab" と同じですが、コマンドラインモード用の短縮入力の + み対象です。{Vi にはない機能です} *:cuna* *:cunabbrev* -:cuna[bbrev] {lhs} ":una" と同じですが、コマンドラインモードのみで有効で - す。{Vi にはない機能です} +:cuna[bbrev] {lhs} ":una" と同じですが、コマンドラインモード用の短縮入力 + のみ対象です。{Vi にはない機能です} *:cnorea* *:cnoreabbrev* -:cnorea[bbrev] [lhs] [rhs] - ":ab" と同じですが、コマンドラインモードのみで有効で、 - {rhs}への再帰的なマッピングを許しません。{Vi にはない - 機能です} +:cnorea[bbrev] [<expr>] [lhs] [rhs] + ":ab" と同じですが、コマンドラインモード用の短縮入力の + み対象で、展開後にマップを適用しません。{Vi にはない機 + 能です} *:ia* *:iabbrev* -:ia[bbrev] [lhs] [rhs] ":ab" と同じですが、挿入モードのみで有効です。{Vi には - ない機能です} +:ia[bbrev] [<expr>] [lhs] [rhs] + ":ab" と同じですが、挿入モード用の短縮入力のみ対象で + す。{Vi にはない機能です} *:iuna* *:iunabbrev* -:iuna[bbrev] {lhs} ":una" と同じですが、挿入モードのみで有効です。{Vi に - はない機能です} +:iuna[bbrev] {lhs} ":una" と同じですが、挿入モード用の短縮入力のみ対象で + す。{Vi にはない機能です} *:inorea* *:inoreabbrev* -:inorea[bbrev] [lhs] [rhs] - ":ab" と同じですが、挿入モードのみで有効で、{rhs}への - 再帰的なマッピングを許しません。{Vi にはない機能です} +:inorea[bbrev] [<expr>] [lhs] [rhs] + ":ab" と同じですが、挿入モード用の短縮入力のみ対象で、 + 展開後にマップを適用しません。{Vi にはない機能です} *:abc* *:abclear* -:abc[lear] すべての略記を削除します。{Vi にはない機能です} +:abc[lear] すべての短縮入力を削除します。{Vi にはない機能です} *:iabc* *:iabclear* -:iabc[lear] 挿入モードでのすべての略記を削除します。{Vi にはない機 - 能です} +:iabc[lear] 挿入モード用の短縮入力を削除します。 + {Vi にはない機能です} *:cabc* *:cabclear* -:cabc[lear] コマンドラインモードでのすべての略記を削除します。 +:cabc[lear] コマンドラインモード用の短縮入力を削除します。 {Vi にはない機能です} *using_CTRL-V* -特殊な文字を略記の <rhs> で使うことは可能です。ほとんどの印字可能ではない文字 -の特殊な意味を避けるのには、CTRL-V を使うことができるはずです。いくつの -CTRL-V を挿入すればよいかは、どのようにして略記を挿入するかによります。これは -マッピングに関しても同様です。いくつか例を使ってみましょう。 +特殊な文字を短縮入力の{rhs}で使うことができます。非印字可能文字の特殊な意味を +打ち消す(クォートする)には、CTRL-Vを使用します。必要なCTRL-Vの数は、どのような +短縮入力を作成するかによります。これはマップでも同様です。例を示します. -"esc" を実際の <Esc> 文字を挿入する略記にしたいとしましょう。Vim で ":ab" コマ -ンドを使うときには、次のようにしなければなりません: (ここで ^V は CTRL-V で、 -^[ は <Esc> です) +"esc"を実際の<Esc>文字を挿入する短縮入力にしたいとしましょう。Vim で":ab"コマ +ンドを使うときには、次のようにしなければなりません: (ここで^VはCTRL-Vで、^[は +<Esc>です) -タイプ: ab esc ^V^V^V^V^V^[ +入力: ab esc ^V^V^V^V^V^[ - キーボードからのすべてのインプットは ^V クォート解釈される必要がありま - す。ですので、1番目と、3番目と、5番目の ^V 文字は単に2番目と4番目の ^V - と、^[ をコマンドラインで使えるようにします。 + キー入力はすべて^Vによるクォートが適用されます。つまり、1番目、3番目、 + 5番目の^Vは、2番目と4番目の^Vと、^[がコマンドラインに入力されるように + しています。 見え方: ab esc ^V^V^[ - コマンドラインには実際には2つの ^V が ^[ の前に含まれています。もしそ - うするつもりがあれば、これは .exrc ファイルでの見え方になるはずです。 - 始めの ^V は2番目の ^V をクォートするためにあります; :ab コマンドは - ^V をクォート文字として扱いますので、略記の中でクォートされたホワイト - スペースもしくは | 文字を使うことができます。:ab コマンドは ^[ に対し - ては何も特殊な処理は行いません。ですので、クォートする必要もないです。 - (しかしながら、クォートしても問題はないです; 7(8はだめです!)個の ^V を - 挿入しても動作します). + コマンドラインには実際には2つの^Vと^[が表示されています。もしそうする + つもりがあれば、これは .exrc ファイルでの見え方になるはずです。始めの + ^Vは2番目の^Vをクォートするためにあります。:abコマンドは^Vをクォート文 + 字として扱いますので、短縮入力の中で、クォートされた空白文字や'|'文字 + を使うことができます。:abコマンドは^[に対しては何も特殊な処理は行いま + せん。だからクォートする必要もないです。(クォートしても問題はありませ + ん。上の例は7(8はだめです!)個の^Vを入力しても動作します)。 格納: esc ^V^[ - 略記は解析された後、短い形式("esc")と長い形式("^V^[")の2文字として、略 - 記テーブルに格納されます。:ab コマンドを引数なしで実行したときに、この - 形で略記は表示されます。 + コマンドが解析された後、短い形式("esc")と長い形式("^V^["の2文字)とし + て、短縮入力の一覧に加えられます。:ab コマンドを引数なしで実行したとき + に、この形の短縮入力が表示されます。 - 後に、ユーザーが "esc" をタイプしたことによって略記が展開されたとき、 - 長い形式はキーボードのインプットと同じようにように ^V 解釈される必要が - あります。^V が、^[ が "挿入モードから抜ける" 文字として解釈されること - を防ぐのです。その代わりに、^[ がテキストに挿入されます。 + あとで、ユーザが"esc"を入力し、短縮入力が展開されたとき、長い形式は実 + 際のキー入力と同様に^Vによるクォートが適用されます。つまり、^Vが^[を + クォートし、 "挿入モードから抜ける"文字として解釈されることを防ぐので + す。その代わりに、^[がテキストに挿入されます。 展開: ^[ [例は Steve Kirkendall によって提供されました] ============================================================================== -3. ユーザー定義コマンド *user-commands* - -ユーザー独自の Ex コマンドを定義することができ、内蔵のコマンドと同様に動作しま -す(範囲指定や、引数を持つことができます。引数はファイル名、バッファー名、など -として補完することも可能です)。違いは、コマンドが実行されたときに、いったん普 -通の Ex コマンドに変換されてから実行されるということです。 - -すべてのユーザー定義コマンドは大文字で始まる必要があります。これは内蔵のコマン -ドと混同しないようにするためです。(とりわけ :Next や :Print などのいくつかの内 -蔵コマンドは、大文字で始まっています。こういった場合、内蔵のコマンドが常に優先 -されます)。ユーザーコマンドの始めの文字以外の文字は、大文字であっても小文字で -あっても、または数字であってもかまいません。数字を使う場合、数字を引数に取るほ -かのコマンドが曖昧になるかもしれない、ということに注意してください。例えば、 -"Cc2" コマンドは ":Cc2" という引数なしのユーザーコマンドでもありえますし、"2" -という引数を取った ":Cc" コマンドとしても解釈されうるのです。これらの問題を避 -けるには、コマンド名と引数の間にスペースを挿入することを勧めます。 - -ユーザー定義コマンドを使うときに、コマンドの省略形を使うこともできます。しかし -ながら、その省略形が唯一でなければエラーが起きます。さらには、内蔵コマンドの方 -が常に優先されます。 +3. ローカルマップとローカル関数(Local mappings and functions) *script-local* -例: -> :command Rename ... -> :command Renumber ... -> :Rena " "Rename" を意味します -> :Renu " "Renumber" を意味します -> :Ren " エラー - 曖昧 -> :command Paste ... -> :P " 内蔵の :Print です +いくつかのVimスクリプトを併用すると、あるスクリプトで使われているマップや関数 +と同じ名前のものが別のスクリプトでも使用される恐れがあります。それを避けるに +は、スクリプトローカルなマップや関数を使用します。 -スクリプトの中で使う場合は、完全な名前をユーザー定義コマンドにたいして用いるこ -とが勧められています。 + *<SID>* *<SNR>* *E81* +マップやメニューに "<SID>" という特別な文字列を使用できます。これは'cpoptions' +にフラグ '<' が含まれていると利用できません。マップコマンドを実行すると、 +"<SID>" は、<SNR> という特別なキーコードとスクリプト固有の番号、そしてアンダー +スコアに置換されます。例: > + :map <SID>Add +これは"<SNR>23_Add"といったマップを定義します。 -:com[mand] *:com* *:command* - すべてのユーザー定義コマンドをリストします。コマンドを - リスとしているときの、始めの2列の文字は - ! -bang 属性を持つコマンド - " -register 属性を持つコマンド - (属性に関する詳細は下をご覧下さい) +スクリプトで関数を作成するときに、関数名の前に"s:"を付けると、ローカル関数を作 +成できます。しかし、その関数をマップで使用する場合、そのマップをスクリプト以外 +の場所で実行すると、その関数がどのスクリプトで定義されたのか分かりません。これ +を解決するには、マップ中で"s:"ではなく"<SID>"を使用します。この場合も"<SID>"は +上記の例と同じように置換されます。これでローカル関数の呼び出しを含むマップを定 +義できます。 -:com[mand] {cmd} {cmd} で始まるユーザー定義コマンドをリストする +ローカル関数は、その関数を定義したスクリプトのコンテキストで実行されます。その +ため、その関数内で新たに定義した関数やマップにも "s:" や "<SID>" を使用できま +す。その場合、その関数自身と同じスクリプト番号が使用されます。"s:var" といった +スクリプトローカル変数も同様です。 -:com[mand][!] [{attr}...] {cmd} {rep} - ユーザーコマンドを定義する。コマンド名は {cmd} でそれ - を置き換えるテキストが {rep} です。コマンドの属性(下を - 参照)は {attr} です。既にコマンドが存在している場合は、 - ! が指定されていない限り(この場合は再定義されます)、エ - ラーが報告されます。 +オートコマンドやユーザ定義コマンドもそれを定義したスクリプトのコンテキストで実 +行されます。そのコマンドからローカル関数を呼び出したり、ローカルマップを使用す +ることができます。 -:delc[ommand] {cmd} *:delc* *:delcommand* - ユーザー定義コマンド {cmd} を削除します。 +スクリプト以外の場所で "<SID>" を使うとエラーになります。 -:comc[lear] *:comc* *:comclear* - すべてのユーザー定義コマンドを削除します。 +複雑な処理をするスクリプトで、スクリプト番号が必要な場合は、次の関数で番号を得 +られます: > + function s:SID() + return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$') + endfun + +関数やマップを一覧表示するときには "<SNR>" も表示されます。それらがどのように +定義されているのか調べるときに便利です。 + +コマンド|:scriptnames|を使って、それまでに実行されたスクリプトとそのスクリプト +番号を確認できます。 + +これらはすべて {Vi にはない機能です}。 +{|+eval|が有効な場合のみ利用できます} + +============================================================================== +4. ユーザ定義コマンド (User-defined command) *user-commands* + +ユーザ独自のExコマンドを定義することできます。ユーザ定義コマンドはビルトインコ +マンドと同様に振る舞うことができます(範囲指定や、引数を取ることができます。引 +数の入力では、ファイル名、バッファ名などを補完できます)。違いは、コマンドが実 +行されたときに、いったんビルトインコマンドに変換されてから実行されるということ +です。 + +まずはユーザマニュアルの|40.2|を参照してください。 + + *E183* *user-cmd-ambiguous* +すべてのユーザ定義コマンドは大文字で開始してください。これはビルトインコマンド +と混同しないようにするためです。(:Next、:Print、:X、などのいくつかのビルトイン +コマンドは、大文字で始まっていますが、こういった場合、ビルトインコマンドが常に +優先されます)。ユーザコマンドの開始文字以外は、大文字であっても小文字であって +も、数字であってもかまいません。数字を使う場合、数字を引数に取るほかのコマンド +が曖昧になるかもしれないので注意してください。例えば、"Cc2"コマンドは ":Cc2" +という引数なしのユーザーコマンドとしても、"2"という引数を取った ":Cc" コマンド +としても解釈できます。これらの問題を避けるため、コマンド名と引数の間にスペース +を挿入することを勧めます。 + +ユーザ定義コマンドを使うときに、コマンドの省略形を使うこともできます。しかしな +がら、その省略形が唯一でなければエラーが起きます。加えて、ビルトインコマンドが +常に優先されます。 + +例: > + :command Rename ... + :command Renumber ... + :Rena " "Rename" を意味します + :Renu " "Renumber" を意味します + :Ren " エラー - 曖昧 + :command Paste ... + :P " ビルトインコマンドの:Print です + +スクリプトの中で使うときは、ユーザ定義コマンドの完全な名前を使うようにしましょ +う。 -コマンドの属性 +:com[mand] *:com* *:command* + すべてのユーザ定義コマンドを一覧表示します。表示中の行 + 頭の2文字は次の意味です + ! -bang 属性を持つコマンド + " -register 属性を持つコマンド + b カレントバッファのローカルコマンド + (属性に関する詳細は下記参照) -Vim はユーザー定義コマンドを他の Ex コマンドと同じように扱います。引数を持った -り、範囲を指定することができます。引数はファイル名、バッファー、などに補完する -ことができます。正確には、これはコマンドが定義されたときに指定されたコマンドの -属性によります。 +:com[mand] {cmd} {cmd} で始まるユーザ定義コマンドを一覧表示します。 -たくさんの属性があって、それらは4つの分野に分けることができます: 引数の扱い方、 -補完の仕方、範囲指定の仕方、特殊なケース。属性は分野毎に下に記述されています。 + *:command-verbose* +'verbose' がゼロ以外のときにコマンド一覧を表示すると、どこで定義されたのかも表 +示されます。例: > -引数の扱い方 + :verbose command TOhtml +< Name Args Range Complete Definition ~ + TOhtml 0 % :call Convert2HTML(<line1>, <line2>) ~ + Last set from /usr/share/vim/vim-7.0/plugin/tohtml.vim ~ -デフォルトでは、ユーザー定義コマンドは引数を取りません(引数が与えられた場合は -エラーを報告します)。しかしながら、-nargs 属性を使って、コマンドが引数を取るよ -うにすることはできます。有効なのは: +詳しくは |:verbose-cmd| を参照してください。 - -nargs=0 引数を取らない(デフォルト) - -nargs=1 1個だけ引数を要求する - -nargs=* いくつでも引数を取れる(0, 1, もしくはそれ以上) - -nargs=? 0もしくは1個の引数が取れる - -nargs=+ 引数が与えられる必要があるが、いくつでもよい + *E174* *E182* +:com[mand][!] [{attr}...] {cmd} {rep} + ユーザ定義コマンドを定義します。コマンド名は {cmd} で + それを置き換えるテキストが {rep} です。{attr} はコマン + ド属性(下記参照)です。既にコマンドが存在している場合は + エラーになります。! を指定した場合は再定義されます。 + +:delc[ommand] {cmd} *:delc* *:delcommand* *E184* + ユーザ定義コマンド {cmd} を削除します。 -この文脈では、引数は(エスケープされていない)スペースで分けられていると仮定され -ています。 +:comc[lear] *:comc* *:comclear* + すべてのユーザ定義コマンドを削除します。 -補完の仕方 +コマンド属性 -デフォルトでは、ユーザー定義コマンドは引数の補完を行おうとはしません。しかしな -がら、下記の属性を1つもしくは複数指定することで、引数の補完を行うことができる -ようになります。 +ユーザ定義コマンドは、他のビルトインコマンドと同様に扱われます。引数や範囲も指 +定できます。引数の入力時にはファイル名やバッファ名などを補完することができま +す。どのように動作するかはコマンドを定義するときに指定したコマンド属性に依存し +ます。 - -complete=augroup autocmd グループ - -complete=buffer バッファー名 +たくさんの属性がありますが、それらは、引数の扱い方、補完の種類、範囲指定の仕 +方、特殊なケース、の4つの分野に分けることができます。以下、分野別に説明しま +す。 + +引数の扱い方 *E175* *E176* + +属性を指定しなかった場合、ユーザ定義コマンドは引数を取りません(引数が与えられ +た場合はエラーになります)。-nargs属性を指定すると、ユーザ定義コマンドが引数指 +定できるようになります。次の属性が指定できます: + + -nargs=0 引数を取らない (指定なしと同じ) + -nargs=1 1個の引数をとれる (必ず引数が必要) + -nargs=* いくつでも引数を取れる (0個以上) + -nargs=? 0 もしくは 1 個の引数が取れる + -nargs=+ 引数が必ず必要。数はいくつでもよい + +ここでは、引数は (エスケープされていない) スペースやタブ文字で分けられているも +のとしています。 + +Note: 引数はVimスクリプトの式としてではなく、テキストとして解釈されることに注 +意してください。具体的な例を上げると、"s:var"を引数として渡すと、そのコマンド +を実行したスクリプトのローカル変数ではなく、そのコマンドを定義したスクリプトの +ローカル変数が使用されます。例: + script1.vim: > + :let s:error = "None" + :command -nargs=1 Error echoerr <args> +< script2.vim: > + :source script1.vim + :let s:error = "Wrong!" + :Error s:error +script2.vimを実行すると"None"が表示されます。期待した結果とは違うでしょう。 +代わりに関数呼び出しを使ってください。 + +補完の種類 *:command-completion* + *E179* *E180* *E181* + +属性を指定しない場合、ユーザ定義コマンドの入力時に引数は補完されません。下記の +属性を1つ以上指定することで、引数が補完されるようになります。 + + -complete=augroup オートコマンドのグループ + -complete=buffer バッファ -complete=command Ex コマンド(と、引数) - -complete=dir ディレクトリ名 - -complete=event autocommand のイベント - -complete=file ファイルとディレクトリ名 + -complete=dir ディレクトリ + -complete=environment 環境変数 + -complete=event オートコマンドのイベント + -complete=expression Vimの式 + -complete=file ファイルとディレクトリ + -complete=shellcmd シェルコマンド + -complete=function 関数 -complete=help ヘルプの主題 - -complete=highlight ハイライト・グループ + -complete=highlight 強調グループ + -complete=mapping マップ -complete=menu メニュー -complete=option オプション -complete=tag タグ -complete=tag_listfiles CTRL-D を押した時にタグ、ファイル名を表示 - -complete=var ユーザー変数 - -範囲指定の仕方 - -デフォルトでは、ユーザー定義コマンドは行番号による範囲指定を受け付けません。し -かしながら、コマンドが範囲指定を受け付けるようにすることは可能です(-range 属性 -によって)。もしくは、任意のカウント値を取るようにすることもできます。この場合、 -行番号の位置(|:split| コマンドのように -range=N)で指定するか、"count" 引数 -(|:Next| コマンドのように -count=N)で指定するかです。可能な属性は: - - -range 範囲指定が可能になります、デフォルトは現在の行 - -range=% 範囲指定が可能になります、デフォルトはファイル全体(1,$) - -range=N 行番号位置で指定される(|:split| のように)カウント(デフォル - ト N) - -count=N 行番号位置で指定されるカウント(デフォルト N)か、初期化引数 - (|:Next| のように)。-count (デフォルトなしで)と指定すると - -count=0 のように動作します。 - --range=N と -count=N は相互に排他的であるということに注意してください。- どち -らかのみを指定することができます。 + -complete=var ユーザ変数 + -complete=custom,{func} {func}によるユーザ定義の補完 + -complete=customlist,{func} {func}によるユーザ定義の補完 + + +ユーザ定義の補完 *:command-completion-custom* + *:command-completion-customlist* + *E467* *E468* +補完方法に"custom,{func}"、"customlist,{func}"を指定すると独自の補完を使用でき +ます。{func}には次のような関数を指定します。 > + + :function {func}(ArgLead, CmdLine, CursorPos) + +すべての引数を使う必要はありません。関数の返り値として、補完候補のリストを返し +てください。 + +"custom" を使った場合は、補完候補のリストを一つずつ改行で区切ってください。 + +"customlist" を使った場合は、補完候補のリストを |List| で返してください。リス +ト中の文字列以外の変数は無視されます。 + +引数には次の意味があります: + ArgLead すでに入力されている補完対象の文字列 + CmdLine コマンドライン全体 + CursorPos カーソル位置 (バイト単位のインデックス) +これらの引数を使えば文脈を判断することができるでしょう。"custom" を使った場 +合、補完候補のリストからArgLeadにそぐわない候補(ArgLeadで始まらない文字)を取り +除く必要はありません。Vimは補完関数を実行した後にふさわしくない候補を取り除き +ます。おそらくその方がほとんどの場面で有用です。"customlist" を使った場合、Vim +は補完候補のリストをフィルタしません。補完候補のリストを自分でフィルタしてくだ +さい。 + +次の例はFingerコマンドでユーザ名を補完します > + :com -complete=custom,ListUsers -nargs=1 Finger !finger <args> + :fun ListUsers(A,L,P) + : return system("cut -d: -f1 /etc/passwd") + :endfun + +次の例では、'path' に指定されたディレクトリのファイル名を補完しています: > + :com -nargs=1 -bang -complete=customlist,EditFileComplete + \ EditFile edit<bang> <args> + :fun EditFileComplete(A,L,P) + : return split(globpath(&path, a:ArgLead), "\n") + :endfun +< + +範囲指定 *E177* *E178* + +属性を指定しない場合、ユーザ定義コマンドは行番号による範囲指定を受け付けませ +ん。-range属性を指定して、コマンドが範囲指定を受け付けるようにできます。任意の +カウント値を取るようにすることもできます。この場合、行番号の位置(|:split|コマ +ンドのように。-range=N)で指定するか、"count" 引数(|:Next|コマンドのように。 +-count=N)で指定します。指定できる属性は: + + -range 範囲指定が可能になります、無指定時は現在行 + -range=% 範囲指定が可能になります、無指定時はファイル全体(1,$) + -range=N カウント(無指定時はN)を行番号位置に指定できます + (|:split|のように) + -count=N カウント(無指定時はN)を行番号位置か、初期化引数に(|:Next| + のように)指定できます。-count(無指定時の値なし)とした場合 + は-count=0と同じです。 + +Note: -range=Nと-count=Nは相互に排他的であるということに注意してください。どち +らか一方のみを指定することができます。 特殊なケース -いくつかの特殊なケースもあります: +特殊なケースがいくつかあります: - -bang コマンドは ! 修飾子を取ることができます(:q や :w のように) - -register コマンドの始めの引数はオプションとしてレジスター名を指定す - ることができます(:del, :put, :yank のように)。 + -bang コマンドは!修飾子を取ることができます(:qや:wのように) + -bar コマンドは"|"を使用して別のコマンドを続けて実行することが + できます。引数に"|"を含めることはできなくなります。"がコメ + ントの開始になってしまうことにも注意してください。 +訳注: '|'も'"'もエスケープすれば引数に指定できる。 + -register コマンドの1つ目の引数にレジスタ名を指定することができます + (:del、:put、:yankのように)。 + -buffer コマンドはカレントバッファでのみ利用できます。 --count と -register 属性の場合で、オプショナルな引数が与えられた場合、引数リス -トから削除されてそれぞれを置き換えるテキストが利用できるようになります。 +ユーザ定義コマンドの定義に-countや-registerが指定された場合に、その省略可能な +引数が与えられた場合、それは引数リストから削除され、それぞれの引数に対応する特 +別な文字列が利用できるようになります。 置き換えテキスト -ユーザー定義コマンドの置き換えテキストは、<...> 表記を使った特殊なエスケープシー -ケンスがあるかどうか調べられます。エスケープシーケンスは、コマンドラインから入 -力される値によって置き換えられ、他のテキストは全て変更なしでコピーされます。結 -果として生成される文字列が Ex コマンドとして実行されます。もしエスケープシーケ -ンスの最初の < にバックスラッシュが前置してあると、シーケンスは変更されず元の -ままコピーされます。 +ユーザ定義コマンドでは、<...>表記を使った特別な文字列を使用できます。その文字 +列はコマンドラインに入力された実際の引数に置き換えられます。その他のテキストは +変更されません。そして特別な文字列を実際の引数で置換したものがExコマンドとして +実行されます。<> 表記が置き換えられないようにするには、最初の < の代わりに +<lt> を使ってください。例えば、"<bang>" をリテラル文字として使うには +"<lt>bang>" とします。 +訳注: typo: in plade of -> in place of -有効なエスケープシーケンスは +次のものを使用できます *<line1>* - <line1> コマンド範囲の始めの行 + <line1> コマンド範囲の最初の行 *<line2>* <line2> コマンド範囲の最後の行 *<count>* - <count> 与えられたカウント ('-range' と '-count' 属性で記述されている) + <count> 与えられたカウント('-range'と'-count'属性で記述されている) *<bang>* - <bang> ('-bang' 属性を参照) コマンドが ! 修飾子付きで実行された場合に - ! に展開され、それ以外は何にも展開されません。 + <bang> ('-bang'属性を参照)コマンドが!修飾子付きで実行された場合に!に + 置換されます。指定なしの場合は空文字列になります(削除される)。 *<reg>* *<register>* - <reg> ('-register' 属性を参照) 指定されていれば、オプショナルなレジ - スター。それ以外は何にも展開されません。<register> もこれと同 - 義です。 + <reg> ('-register'属性を参照)レジスタ名に置換されます。指定なしの場 + 合は空文字列になります(削除される)。<register>も同義です。 *<args>* - <args> 与えられた通りのコマンド引数。(しかし、上で述べられているよう - に、カウントかレジスターが引数の一部になり得るわけですが、そう - するとそれらは <args> の一部とはなりません)。 - <lt> 1つの '<' (小なり)文字。これは、これらエスケープシーケンスのう - ちのコピーを文字どおりに得たい場合に、必要となります。- 例えば、 - <bang> を得るには <lt>bang> として下さい。 - -エスケープシーケンスの始めの2文字が "q-" であると(例えば、<q-args>)、値はその -式で使うのに有効な値となるようにクォートされます。これは引数を1つの値として扱 -います。 - -コマンドが引数をユーザー定義関数に渡すことができるようにするために、特別な形式 - <f-args> ("function args")があります。これらはコマンドの引数をスペースの位置 -で区切り、それぞれの引数をここにクォートし、そして <f-args> シーケンスはコンマ -で区切られるクォートされた引数のリスとに置き換えられます。下のMycmdの例をご -覧下さい。引数がなければ、<f-args>もまた引数を持ちません。 - -例 - -> " ここから最後までのすべてを削除します -> :com Ddel +,$d - -> " 現在のバッファーをリネームします -> :com -nargs=1 -bang -complete=file Ren f <args>|w<bang> - -> " 指定された範囲をあるファイルの内容に置き換えます -> " (1行に書きます) -> :com -range -nargs=1 -complete=file -> Replace <line1>-pu_|<line1>,<line2>d|r <args>|<line1>d - -> " 指定された範囲の行数を数える -> com! -range -nargs=0 Lines :echo <line2> - <line1> + 1 "lines" - -> " ユーザー関数を呼びます(<f-args>の例) -> :com -nargs=* Mycmd call Myfunc(<f-args>) - -次のように実行された場合は: -> :Mycmd arg1 arg2 -次のものを起動します: -> :call Myfunc("arg1","arg2") - -> " より現実的な例 -> :function Allargs(command) -> : let i = 0 -> : while i < argc() -> : if filereadable(argv(i)) -> : execute "e " . argv(i) -> : execute a:command -> : endif -> : let i = i + 1 -> : endwhile -> :endfunction -> :command -nargs=+ -complete=command Allargs call Allargs(<q-args>) - -Allargs コマンドは、引数としてどのVimコマンドでも取ることができ、引数のリス -トのすべてのファイルに対して実行されます。使い方の例 ("e" フラグをつけてエラー -を無視しており、また "update" コマンドで変更されたバッファーを書き込んでいるこ -とに注意してください): -> :Allargs %s/foo/bar/ge|update -これは、次のものを起動します: -> :call Allargs("%s/foo/bar/ge|update") + <args> 与えられた通りのコマンド引数(上記の通り、カウントやレジスタが + 指定された場合は<args>に含まれません)。 + <lt> 1つの'<'(小なり)文字。特別な文字列を文字どおりに使用したい場合 + に必要となります。例えば<bang>を得るには<lt>bang>とします。 + + *<q-args>* +特別な文字列の始めの2文字が"q-"なら(例えば<q-args>)、引数は式で使えるように +クォートされます("で囲まれる)。これは引数を全体を1つの値として扱います。 +引数がない場合は <q-args> は空文字列になります。 + +ユーザ定義コマンドの引数を関数に渡すには、<f-args>("function args")が利用でき +ます。これはコマンドの引数をスペースやタブ文字で区切り、それぞれの引数を別々に +クォート("で囲む)し、カンマで区切ったリストにして<f-args>と置き換えます。下の +Mycmdの例をご覧下さい。引数がない場合は <f-args> は取り除かれます。 + +例 > + + " 現在行から最後行までを削除します + :com Ddel +,$d + + " 現在のバッファ名を変更します + :com -nargs=1 -bang -complete=file Ren f <args>|w<bang> + + " 指定された範囲をあるファイルの内容に置き換えます + " (1行に書きます) + :com -range -nargs=1 -complete=file + Replace <line1>-pu_|<line1>,<line2>d|r <args>|<line1>d + + " 指定された範囲の行数を数える + :com! -range -nargs=0 Lines echo <line2> - <line1> + 1 "lines" + + " ユーザ関数を呼びます(<f-args>の例) + :com -nargs=* Mycmd call Myfunc(<f-args>) + +次のように実行された場合は: > + :Mycmd arg1 arg2 +次のものを実行します: > + :call Myfunc("arg1","arg2") + + " より現実的な例 + :function Allargs(command) + : let i = 0 + : while i < argc() + : if filereadable(argv(i)) + : execute "e " . argv(i) + : execute a:command + : endif + : let i = i + 1 + : endwhile + :endfunction + :command -nargs=+ -complete=command Allargs call Allargs(<q-args>) + +Allargsコマンドは、引数としてどのVimコマンドでも取ることができ、引数リスト +|argument-list|のすべてのファイルに対して与えられたコマンドを実行します。使い +方の例 ("e"フラグをつけてエラーを無視しており、また "update" コマンドで変更さ +れたバッファを書き込んでいるので注意してください): > + :Allargs %s/foo/bar/ge|update +これは、次のものを起動します: > + :call Allargs("%s/foo/bar/ge|update") +< +スクリプトでユーザ定義コマンドを定義するとき、そのスクリプトのローカル関数や +ローカルマップを使用できます。そのユーザ定義コマンドはユーザ定義コマンドを定義 +したスクリプトのコンテキストで実行されます。これはユーザ定義コマンドで|<SID>| +を使用するときに重要です。 vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/mbyte.jax b/ja/mbyte.jax index d19d6dafc..4ab330a6f 100644 --- a/ja/mbyte.jax +++ b/ja/mbyte.jax @@ -1,166 +1,1357 @@ COMMENT: マルチバイト文字(旧:multibyte.txt) -STATUS: finished 5.6 +STATUS: finished 6.3 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 -*multibyte.txt* For Vim version 5.6. Last change: 1999 Sep 19 +*mbyte.txt* For Vim version 6.3. Last change: 2004 Jun 07 - - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar et al. マルチバイトサポート *multibyte* *multi-byte* + *Chinese* *Japanese* *Korean* +このファイルでは、中国語、日本語、韓国語などの、1バイト(オクテット)では表現す +ることができないほど多くの文字を持つ言語の、テキストの編集について説明する。ユ +ニコードについても説明する。 + +ユーザマニュアルの|usr_45.txt|で、共通する事柄を簡単に紹介している。 +メッセージやメニューの言語を変更するには|mlang.txt|を参照。 + +{|+multi_byte|が有効な場合のみ利用可能} -このファイルは、Vim で1つの文字が1バイトを超える文字が含まれるファイルを編集す -ることに関する情報を少しだけ記述してあります。 -|+multi_byte| と |'fileencoding'| もご覧下さい。 +1. はじめに |mbyte-first| +2. ロケール |mbyte-locale| +3. エンコーディング |mbyte-encoding| +4. 端末の使用 |mbyte-terminal| +5. X11のフォント |mbyte-fonts-X11| +6. MS-Windowsのフォント |mbyte-fonts-MSwin| +7. X11での入力 |mbyte-XIM| +8. MS-Windowsでの入力 |mbyte-IME| +9. キーマップを使用した入力 |mbyte-keymap| +10. UTF-8を使う |mbyte-utf8| +11. 主なオプション |mbyte-options| -1. XIM と X フォントセットのサポート |xim| -2. UTF-8 を XFree86 xterm で使う |UTF8-xterm| +NOTE: このファイルにはユニコードの文字が含まれている。他のエンコーディングを使 +用している場合は、変な文字、あるいは四角形として表示されるかもしれない。 ============================================================================== -1. XIM (X Input Method) と X フォントセットのサポート *xim* *x-input-method* - *xfontset* *x-fontset* +1. はじめに (Getting started) *mbyte-first* --. メモ - GUI バージョンの Vim を使ってマルチバイト文字を使うことができます。この機能 - は |+multi_byte| を使っています。 +Vimのマルチバイト機能を簡単に紹介する。運が良ければ、説明したことがそのまま機 +能して、なんのトラブルもなしにVimを使い始めることができる。そうでない場合は、 +このファイルをさらに読み進める必要がある。Vimのマルチバイト機能を使用できるよ +うにするために、多少の手間や試行錯誤が必要であっても驚かないで欲しい。不幸なこ +とに、すべてのシステムはそれぞれ独自の方法でマルチバイト言語を扱っていて、それ +は実に複雑である。 --. あなたの言語をサポートしている X インプットサーバーが動いている必要がありま - す。X インプットサーバーがなくともあなたの言語で書かれたファイルを読むことは - できます。 --. 必要ならば次の3行を $HOME/.Xdefauts に追加してください。 +コンパイル - *international: True - *.inputMethod: your_input_server_name - *.preeditType: your_input_method +コンパイル済みのVimをすでに持っているなら、|+multi_byte|機能が含まれているかど +うか確認する。|:version|コマンドで確認できる。 + +|+multi_byte|が含まれていないときは、Vimを"big"(たくさんの機能を含める構成)で +コンパイルする必要がある。コンパイルの際には、どの機能を含めるのか調整すること +ができる。ソースディレクトリのINSTALLファイルを参照。 + + +ロケール + +まずは、ロケールが正く設定されていることを確認する。システムの言語が正しく設定 +されていれば、マルチバイト機能をすぐに使用することができる。設定されてなくて +も、環境変数$LANGをシェルから設定すれば、大抵は使用できるようになる: > - 次の2行もしくは3行は $HOME/.Xdefaults に書かれている必要があります: - マルチバイト言語を使う場合は 'guifontset' も設定する必要があります。 + setenv LANG ja_JP.EUC - Vim.font: english_font,your_language_font - Vim*fontSet: english_font,your_language_font - Vim*fontList: your_language_font: +不幸なことに、ロケールの名前はシステムごとに違う。日本語なら"ja_JP.EUCjp"や +"ja"などがある。現在の設定を確認するには: > + :language - X11R6 を使っている場合は *international は必要ないかもしれません。 - X11R6 を使っている場合は *.inputMethod と *.preeditType はオプショナルです。 +Vimが内部で使用するロケールを変更するには: > - your_input_method は OnTheSpot、OverTheSpot、OffTheSpot、Root のどれかです。 - (いまのところ OnTheSpot はサポートされていません) - Vim.font はテキスト部分に関するものです。 - Vim*fontSet はメニュー部分に関するものです。 - Vim*fontList はメニュー部分(Motif)に関するものです(Athena バージョンでは必要 - ありません)。 + :language ja_JP.EUC - マルチバイトを利用するには 'guifontset' をセットする必要があります。例: +その設定が機能しない場合はエラーメッセージが表示される。使用したい言語のロケー +ル名を見付けるためにいくつか試してみると良い。しかし、Vimは起動時にシステムの +ロケールを適切に使用するので、シェルでロケールを設定するのが無難である。 - :set guifontset=english_font,your_language_font +詳細は|mbyte-locale|を参照。 - また、あなたが利用しているロケール(locale)での文字コードセットを表示できる - のであれば、フォントセットを XLFD として指定することもできます。例: -> :set guifontset=-misc-fixed-medium-r-normal-* +エンコーディング - 注意) 'guifontset' を指定しないと IM を使うことはできません。ですので、ラテ - ン系の方でも IM を利用しようと思っている方は、'guifontset' を指定する - 必要があります。 +ロケールが適切に設定されていれば、オプション'encoding'はそれに応じた値に設定さ +れる。それが機能しないときは、自分で設定しなおすこともできる: > - そして 'guifont' を設定するべきではありません。もし設定されている場合は Vim - は 'guifontset' を無視します。つまり VIM はフォントセットのサポートなしで動 - 作することになり、英語しか見えなくなります。そしてあなたの言語は文字化けして - 表示されることになります。 + :set encoding=utf-8 - 'fontset' 機能が有効にされた後、VIM は 'font' を使うことを許さなくなります。 - 例えば、もし次のように .gvimrc に書いているならば - :set guifontset=eng_font,your_font - シンタックスの指定では次のようにする必要があります - :hi Comment guifg=Cyan font=another_eng_font,another_your_font - もし単にこうした場合は - :hi Comment font=another_eng_font - たくさんのエラーメッセージが出ることになります。注意してください。 +設定できる値の一覧は|encoding-values|を参照。 --. 必要ならば XMODIFIERS 環境変数を設定してください。 +この設定はVim内部でテキストを保持するためのエンコーディングとして使用される。 +バッファのテキストだけでなく、レジスタや変数のエンコーディングとしても使用され +る。そのため、'encoding'の設定を変更すると、すでに内部にあるテキストは不正なテ +キストになってしまう。テキストは新しいエンコーディングに変換されず、間違った状 +態で表示される。 - sh: export XMODIFIERS="@im=your_input_server_name" - csh: setenv XMODIFIERS "@im=your_input_server_name" +'encoding'に設定されたのとは違うエンコーディングのファイルも編集することができ +る。Vimはファイルを開くときにエンコーディングを変換し、保存するときに元に戻 +す。'fileencoding'、'fileencodings'、|++enc|を参照。 - input_server_name は XIM サーバーの名前です。 --. LANG 環境変数をあなたの言語に設定する必要があります。 - 設定を外したり C にセットしたりはしないでください。 - sh: export LANG=ko - csh: setenv LANG ko +表示とフォント --. .vimrc に次の行を加えてください - set fileencoding=korea - 'korea' を japan や taiwan といった他の名前に変えることができます。 +端末(のエミュレータ)で作業しているなら、端末が、Vimと同じエンコーディングを使 +用することを確認する。違うなら、オプション'termencoding'を設定して、テキストが +自動的に変換されるようにする。 --. バグ & これからやるべきこと - *. your_language_font の幅は english_font の2倍の広さである必要があり - ます。これはバグとは考えたくないです。GVIM は固定幅のフォントを使う - 必要があるからです。 - 例) Vim.font: -*-fixed-*--14-*-*-*-*-70-*,-*-*-*-*--14-*-*-*-*-140-* - *. もしインプットメソッドの設定が失敗した場合は、下の方にもう1つのステ - ータス行は現れないはずです。また、Root スタイルで使っている場合も - そうです。 - *. 私のところでは時々 XIM サーバーの中でなんらかのボタンを押すと gvim - がハングします。 - *. ビジュアルモードでマウスを使って選択していると時折文字の半分しか選 - 択されているように見えない場合があります。 - *. それからまだ知られていない多くの副作用とバグがあります! +GUIで作業しているなら、'encoding'に設定されたエンコーディングに対応したフォン +トを選択する必要がある。フォントの設定は難しい。使用しているシステムやロケール +などに依存している。X-Window環境なら|mbyte-fonts-X11|、MS-Windowsなら +|mbyte-fonts-MSwin|を参照。 --. コンパイル - ./configure --with-x --enable-multibyte --enable-fontset --enable-xim - make - run_your_X_input_server_if_not_currently_running - ./vim -g +GTK+ 2を使っているなら、今読んでいるこの項目はほとんど読まなくて良い。オプショ +ン'guifontset'はもう存在しない。'guifont'を設定するだけですべてうまく機能す +る。システムにXft2とfontconfigが用意されているなら、選択したフォントが何かのグ +リフを含んでいないときは、自動的に他の利用可能なフォントが使用される。オプショ +ン'guifontwide'はまだサポートされているが通常は必要ない。自動的に選択される +フォントが適切でない場合のみ設定する必要がある。 - 注) もし Linux を使っている場合は CFLAGS に '-DX_LOCALE' をつける必要が - あります。うまく言った場合は自分の言語で幸せに GVim を使ってください。 +X11ではオプション'guifontset'に複数のフォントを設定して、さまざまな文字を扱え +るようにする。韓国語での設定例: > -私が出会った中で最高のエディター Vim を作ってくれた Bram さんに感謝します。 -hanIM という X インプットサーバーを作ってくれた YJSeo さんに感謝します。 + :set guifontset=k12,r12 -その他のコメントやパッチや提案はこちらまで: +代りに'guifont'と'guifontwide'を設定することもできる。'guifont'は半角文字、 +'guifontwide'は全角文字のためのフォントである。'guifontwide'のフォントは +'guifont'のちょうど2倍の幅でなければならない。 +UTF-8使用時の設定例: > - Chi-Deok Hwang <cdhwang@sr.hei.co.kr> - Sung-Hyun Nam <namsh@lgic.co.kr> - K.Nagano <nagano@atese.advantest.co.jp> + :set guifont=-misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1 + :set guifontwide=-misc-fixed-medium-r-normal-*-18-120-100-100-c-180-iso10646-1 + +'guifont'だけを設定した場合、Vimは'guifontwide'として使用できるフォントを見付 +けようとする。 + + +入力 + +マルチバイト文字を入力するにはいくつかの方法がある: +- X11ではXIMを使用できる。|XIM|を参照。 +- MS-WindowsではIMEを使用できる。|IME|を参照。 +- すべてのシステムでキーマップを使用できる。|mbyte-keymap|を参照。 + +オプション'iminsert'、'imsearch'、'imcmdline'を使用して、別の入力方法に切り替 +えたり、インプットメソッドを一時的に無効にしたりできる。 ============================================================================== -2. UTF-8 を XFree86 xterm で使う *UTF8-xterm* +2. ロケール (Locale) *mbyte-locale* + +最も簡単なのは、システム全体のロケールを設定することである。しかし、作業してい +るシェルのみロケールを変更したり、Vimだけが特定のロケールを使用するようにも設 +定できる。 + + +ロケールってなに? *locale* + +世界にはたくさんの言語があり、少なくとも、それと同じ数だけ文化や環境がある。地 +域に対応した言語環境のことをロケール(locale)という。ロケールは、言語、文字セッ +ト、文字の整列順、日付の書式、通貨の書式、などの情報を含んでいる。Vimにとって +は言語と文字セットの情報だけが重要である。 + +システムがサポートしているロケールのみ使用することができる。(特にアメリカなど +では)ほんの少しのロケールしか持っていないシステムもある。そのため、望みの言語 +を使用することができないかもしれない。追加パッケージでロケールをインストールで +きることもあるので、システムのドキュメントを確認してください。 + +ロケールがインストールされている場所はシステムによりさまざまである。例えば +"/usr/share/locale"や"/usr/lib/locale"などにある場合がある。システムのマニュア +ルのsetlocale()を参照。 + +ロケールがインストールされているディレクトリを見ればロケールの正しい名前がわか +る。ほとんどの場合、大文字と小文字は区別されるので、例えば"ja_JP.EUC"と +"ja_jp.euc"は異る。いくつかのシステムはlocale.aliasというファイルを持ってい +て、"nl"のような短い名前を使って"nl_NL.ISO_8859-1"という完全な名前を指定でき +る。 + +Note: X-Windowは独自のロケール機構を持っている。そして不幸なことに、他で使用さ +れているものとは違うロケール名を使用する。これは混乱の元である。Vimにとっては +関数setlocale()が使用するものが重要であり、それは通常、X-Windowのものではな +い。何が実際に機能するのか、実験してみる必要があるかもしれない。 + + *locale-name* +ロケール|locale|の名前の(簡単な)書式は: + + 言語 (language) +or 言語_地域 (language_territory) +or 言語_地域.コードセット (language_territory.codeset) + +地域は国を意味する(あるいはその地方)。コードセットは|charset|のこと。例えば、 +ロケール名"ja_JP.eucJP"の意味は: + ja 言語は日本語(Japanese) + JP 国は日本(Japan) + eucJP コードセットはEUC-JP +同じ意味でも"ja"、"ja_JP.EUC"、"ja_JP.ujis"などの名前のこともある。不幸なこと +に、言語、地域、コードセット、を表す名前は統一されておらず、システムによって異 +る。 + +ロケール名の例: + charset language locale name ~ + GB2312 中国語 (簡体字) zh_CN.EUC, zh_CN.GB2312 + Big5 中国語 (繁体字) zh_TW.BIG5, zh_TW.Big5 + CNS-11643 中国語 (繁体字) zh_TW + EUC-JP 日本語 ja, ja_JP.EUC, ja_JP.ujis, ja_JP.eucJP + Shift_JIS 日本語 ja_JP.SJIS, ja_JP.Shift_JIS + EUC-KR 韓国語 ko, ko_KR.EUC + + +ロケールを使用する + +システム全体のロケールを設定するには、システムのドキュメントを参照。恐らく、 +"/etc"内の設定ファイルを編集する必要がある。 + +シェルのロケールを設定するには、環境変数$LANGを設定する。例えば、韓国語を使用 +するとき、ロケール|locale|の名前が"ko"なら、このように設定する: + + sh: export LANG=ko + csh: setenv LANG ko + +これを~/.profileや~/.cshrcに書いておけばいつでも設定された状態にできる。 + +Vimが使用するロケールだけ設定するには|:language|コマンドを使う: > + + :language ko + +これを~/.vimrcに書いておけばいつでも設定された状態にできる。 + +あるいは、特定の$LANGを設定した状態でVimを起動するには: + + sh: LANG=ko vim {vim-arguments} + csh: env LANG=ko vim {vim-arguments} + +このために、小さなシェルスクリプトを作成することもできる。 + +============================================================================== +3. エンコーディング (Encoding) *mbyte-encoding* + +Vimはオプション'encoding'をVim内部で使用するエンコーディングとして使用する。 +バッファ(メモリに読み込まれたファイル)やレジスタ、変数など、すべてのテキストは +このエンコーディングでメモリに保存される。 + + *charset* *codeset* +文字セット(Charset)とコードセット(codeset)は「エンコーディング」の別名である。 +正確には違うのだが、Vimを使用する上でそれは重要ではない。 + +文字は1バイト以上のバイトでエンコードされる。すべての文字が1バイトでエンコード +されるものを私達はシングルバイトエンコーディングと呼ぶ。そのようなエンコーディ +ングとしては"latin1"がよく使用される。これは256文字を表現することができる。そ +れには制御文字も含むので、テキストとして使用できる文字はそれより少ない。 + +2バイト以上を使って文字を表現するものを、私達はマルチバイトエンコーディングと +呼ぶ。これは256文字よりもっと多くの文字を表現することができ、ほとんどの東アジ +アの言語はこれを必要とする。 + +ほとんどのマルチバイトエンコーディングは127文字(ASCII文字の範囲)を1バイトで表 +現するため、使用する言語に関係なく、ASCII文字だけのテキストをやり取りすること +が簡単になっている。したがって、間違ったエンコーディングが設定されていても、そ +れを読むことができるだろう。 + + *encoding-names* +多くのエンコーディングを使用することができる。大きく3つに分類すると: + +1 8bit シングルバイトエンコーディング。256文字を表現できる。アメリカ + やヨーロッパで使用される。例: ISO-8859-1 (Latin1)。すべての文 + 字は1つ分の表示幅で表示される。(いわゆる半角) + +2 2byte ダブルバイトエンコーディング。10000以上の文字を表現できる。ア + ジアの国々で使用される。例: euc-kr (韓国語)。文字のバイト数と + 同じ数の表示幅で表示される。(2バイトならいわゆる全角) + (euc-jpの1バイト目が0x8eの文字(半角カナ)は例外) + +u Unicode ユニバーサルエンコーディング。他のエンコーディングを統合するも + の。ISO 10646。100万以上の文字を表現できる。例: UTF-8。文字が + 使用するバイト数と表示幅の関係は複雑。 + +他のエンコーディングはVim内部のエンコーディングとして使用することはできない +が、そのようなエンコーディングのファイルを編集することはできる。'fileencoding' +を参照。 +Note: すべてのエンコーディングは0から128までの文字がASCII文字と同じでなければ +ならない(EBCDIC用にコンパイルした場合は除く)。 + +'encoding'に設定できる値: *encoding-values* +1 latin1 8ビット文字 (ISO 8859-1) +1 iso-8859-n ISO_8859 シリーズ (n = 2 to 15) +1 koi8-r ロシア語 +1 koi8-u ウクライナ語 +1 macroman MacRoman (Macintoshのエンコーディング) +1 8bit-{name} 8ビットエンコーディングのどれか (Vim特有の名前) +1 cp{number} MS-Windows: インストールされているシングルバイトのコードページ +2 cp932 日本語 (Windows only) +2 euc-jp 日本語 (Unix only) +2 sjis 日本語 (Unix only) +2 cp949 韓国語 (Unix and Windows) +2 euc-kr 韓国語 (Unix only) +2 cp936 簡体中国語 (Windows only) +2 euc-cn 簡体中国語 (Unix only) +2 cp950 繁体中国語 (on Unix alias for big5) +2 big5 繁体中国語 (on Windows alias for cp950) +2 euc-tw 繁体中国語 (Unix only) +2 2byte-{name} Unix: ダブルバイトエンコーディングのどれか (Vim特有の名前) +2 cp{number} MS-Windows: インストールされているダブルバイトのコードページ +u utf-8 UTF-8にエンコードされた32ビットのユニコード (ISO/IEC 10646-1) +u ucs-2 UCS-2にエンコードされた16ビットのユニコード (ISO/IEC 10646-1) +u ucs-2le リトルエンディアンのucs-2 +u utf-16 ucs-2を拡張してさらに多くの文字を表現できるようにしたもの +u utf-16le リトルエンディアンのutf-16 +u ucs-4 UCS-4にエンコードされた32ビットのユニコード (ISO/IEC 10646-1) +u ucs-4le リトルエンディアンのucs-4 + +{name}にはシステムがサポートしているエンコーディングの名前を入れることができ +る。これらの名前はファイルのエンコーディングとロケールのエンコーディングを変換 +するときにiconv()に渡される。MS-Windowsでは"cp{number}"はコードページ番号であ +る。 +例: > + :set encoding=8bit-cp1252 + :set encoding=2byte-cp932 +< +いくつかの別名を使用できる。別名は上記の名前のどれかとして解釈される。 +完全ではないが一覧を示す: + +1 ansi latin1と同じ (廃止。後方互換性のために残されている) +2 japan 日本語: Unixではeuc-jp、MS-Windowsではcp932 +2 korea 韓国語: Unixではeuc-kr、MS-Windowsではcp949 +2 prc 簡体中国語: Unixではeuc-cn、MS-Windowsではcp936 +2 chinese prcと同じ +2 taiwan 繁体中国語: Unixではeuc-tw、MS-Windowsではcp950 +u utf8 utf-8と同じ +u unicode ucs-2と同じ +u ucs2be ucs-2と同じ (ビッグエンディアン) +u ucs-2be ucs-2と同じ (ビッグエンディアン) +u ucs-4be ucs-4と同じ (ビッグエンディアン) + +UCSコードにはバイト順の問題がある。これは扱いが難しいので、可能なときにはいつ +でもUTF-8を使用した方が良い。指定がなければビッグエンディアンを使用する(最上位 +バイトが最初にくる): + 名前 バイト列 文字 ~ + ucs-2 11 22 1122 + ucs-2le 22 11 1122 + ucs-4 11 22 33 44 11223344 + ucs-4le 44 33 22 11 11223344 + +MS-WindowsはリトルエンディアンのUCS-2を使用するので、MS-Windowsでは主に +"ucs-2le"を使う。 + +良く似ているが区別されているエンコーディングがある。Vimはそれらを別のエンコー +ディングとして扱うため、エンコーディングの変換が行われる。エンコーディングの変 +換ができないときや、よけいな変換を防ぎたいときは、他の名前を使う必要があるかも +しれない: + + cp932, shift-jis, sjis + cp936, euc-cn + + *encoding-table* +通常、'encoding'はロケールと同じ設定で、'termencoding'は空になっている。その場 +合、文字の入力と表示はそのロケールでエンコードされる。Vim内部でも同じ文字表現 +を使う。 + +オプション'encoding'を設定して、Vim内部で使用するエンコーディングを変更するこ +とができるが、入力と表示にはロケールが使用されるので、エンコーディングの変換が +必要になる。そのときは'termencoding'がロケールのエンコーディングとして使用され +る。Vimは'encoding'と'termencoding'の間でエンコーディングを変換する。例: > + :let &termencoding = &encoding + :set encoding=utf-8 + +すべてのエンコーディングの組み合わせが利用できるわけではない。下記の表にどのよ +うなものが機能するか示す。すべての変換が可能なわけではなく、iconv()が常に使用 +できるとは限らないので、利用できないものもある。これはシステムに依存することな +ので細部まで説明することはできない。 + +('tenc'は'termencoding'の省略、'enc'は'encoding'の省略) + +'tenc' 'enc' 説明 ~ + + 8bit 8bit 機能する。'termencoding'と'encoding'が違うときは、変換 + することができないいくつかの文字は入力と表示が正しく行 + われない。(そのような文字を得るには'encoding'を'utf-8' + に設定する) + 8bit 2byte MS-Windows: インストールされているすべてのコードページ + で機能する。8ビットの文字だけ入力することができる。 + 他のシステム: 機能しない。 + 8bit Unicode 機能するが、8ビット文字しか入力できず、端末には8ビット + 文字しか表示できない。GUIでは'guifont'がサポートしてい + る文字であれば表示できる。 + + 2byte 8bit 機能するが、非ASCII文字を入力するには問題がある。 + 2byte 2byte MS-Windows: インストールされているすべてのコードページ + で機能する。'encoding'をロケールと違う設定にすると入力 + に問題あり。 + 他のシステム: 'termencoding'と'encoding'が同じ場合のみ + 機能する。'termencoding'は空にしておいたほうが良い。 + 2byte Unicode 機能する。Vimは入力された文字を変換する。 + + Unicode 8bit 機能する。(普通はこうしない) + Unicode 2byte 機能しない。 + Unicode Unicode 問題なく機能する。(Vim内部ではユニコードはすべてUTF-8 + で扱われるため、'termencoding'が空でも同じく機能する) + +エンコーディングの変換 *charset-conversion* + +Vimはいろいろな場面で自動的にエンコーディングを変換する: +- ファイルを読み込むとき、'fileencoding'と'encoding'が違う場合 +- ファイルを書き込むとき、'fileencoding'と'encoding'が違う場合 +- 文字を表示するとき、'termencoding'と'encoding'が違う場合 +- 入力を受け取るとき、'termencoding'と'encoding'が違う場合 +- メッセージを表示するとき、LC_MESSAGESのエンコーディングが'encoding'と違う場 + 合(gettextのサポートが必要)。 +- Vimスクリプトを読み込むとき、|:scriptencoding|が'encoding'と違う場合 +- |viminfo|ファイルを読み書きするとき +ほとんどの変換は|+iconv|の機能が必要である。ファイルを読み書きするときの変換の +動作はオプション'charconvert'での指定もできる。 -これは Thomas Dickey によって提供される XFree86 xterm で、どのようにして -UTF-8 エンコードされた文字を利用するかについての簡単な説明です(文: Markus -Kuhn)。 +エンコーディングを変換するための便利なユーティリティ: + All: iconv + GNU iconvはほぼすべてのエンコーディングを変換できる。変換の中間層にユ + ニコードを使用することで、多くの変換を可能にしている。 + http://www.gnu.org/directory/libiconv.html を参照。 -注意: Vim の UTF-8 テキストの編集、閲覧はまだうまく機能していません! + 日本語: nkf + "Network Kanji code conversion Filter"。最も特徴的なnkfの機能は漢字 + コードの自動認識である。そのため、ファイルのエンコーディング|charset| + を知る必要がない。ISO-2022-JPやShift_JISをEUC-JPに変換するには、Vimか + らこのようなコマンドを単に実行すれば良い: + :%!nkf -e + Nkfはここから入手できる: + http://www.sfc.wide.ad.jp/~max/FreeBSD/ports/distfiles/nkf-1.62.tar.gz +訳注: utf-8対応などの機能が追加されているもの +訳注: http://sourceforge.jp/projects/nkf/ -UTF-8 をサポートしている最新のバージョンの xterm を入手してください: + 中国語: hc + "Hanzi Converter"。HcはGBからBig5へ、Big5からGBへ、の変換をする。Hcは + ここから入手できる: + ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz - http://www.clark.net/pub/dickey/xterm/xterm.tar.gz + 韓国語: hmconv + HmconvはE-mailを扱うことに特化した韓国語エンコーディング変換ユーティリ + ティである。EUC-KRとISO-2022-KRの間の変換ができる。Hmconvはここから入 + 手できる: + ftp://ftp.kaist.ac.kr/pub/hangul/code/hmconv/ + + 多国語: lv + Lvは高性能な多言語ファイルビューアである。そして、エンコーディングの変 + 換もできる。サポートしているエンコーディング|charset|は:ISO-2022-CN、 + ISO-2022-JP、ISO-2022-KR、EUC-CN、EUC-JP、EUC-KR、EUC-TW、UTF-7、 + UTF-8、ISO-8859シリーズ、Shift_JIS、Big5、HZ。Lvはここから入手できる: + http://www.ff.iij4u.or.jp/~nrt/freeware/lv4495.tar.gz + + + *mbyte-conversion* +'encoding'の設定と違うエンコーディングのファイルを読み書きするときは、エンコー +ディングを変換する必要がある。次の変換がサポートされている: +- Latin-1(ISO-8859-1)、UTF-8、UCS-2、UCS-4の間の変換はVimが自前で行なう。 +- MS-Windowsでは、'encoding'がユニコードなら各コードページとの変換は機能する。 +- 'charconvert'による変換。 +- 可能であれば、iconvライブラリを使用して変換することができる。 + 古いバージョンのGNU iconv()では変換が失敗することがある(Vimが用意する + バッファよりも、はるかに大きなバッファを要求するため)。 + その場合は他のiconv()実装を試してください。 + +============================================================================== +4. 端末の使用 (Using a terminal) *mbyte-terminal* + +GUIではマルチバイト文字を完全にサポートしている。端末を使う場合でも、Vimが使用 +するエンコーディングをサポートしていればマルチバイト文字を扱えるが、少し不便な +こともある。 + +マルチバイト(と|XIM|)をサポートしているxtermでVimを使用することができる。他に +もkterm(Kanji term)、hanterm(韓国語用)、Eterm(Enlightened terminal)、rxvt、な +どが使用できる。 + +端末が適切なエンコーディングをサポートしていない場合はオプション'termencoding' +を設定する。Vimは入力された文字を'termencoding'から'encoding'へと変換する。そ +して表示するときに'encoding'から'termencoding'へと変換する。端末のエンコーディ +ングに、Vimが取り扱う文字がすべて含まれていない場合、文字の情報が失なわれてし +まう。下記で説明しているxtermのように、ユニコードをサポートしている端末なら問 +題はない。ほぼすべての文字セットは情報を失なわずにユニコードに変換できるからで +ある。 + + +UTF-8をXFree86 xtermで使う *UTF8-xterm* + +訳注: 最近の環境なら標準で使えるようになってます。 + +これは Thomas Dickey によって提供される XFree86 xterm で、どのようにしてUTF-8 +エンコードされた文字を利用するかについての簡単な説明です(文: Markus Kuhn)。 + +UTF-8 をサポートしている最新の xterm を入手してください: + + http://invisible-island.net/xterm/xterm.html "./configure --enable-wide-chars ; make" としてコンパイルしてください。 -また ISO 10646-1 バージョンの 6x13 フォントを入手してください: +また ISO 10646-1 バージョンのフォントを入手してください: http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz それから README ファイルの記述に従ってフォントをインストールしてください。 -そして xterm を起動します。 +そして xterm を起動します。 > + + xterm -u8 -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 +大きな文字を使うときは: > + xterm -u8 -fn -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 + +そうするとUTF-8端末エミュレータが動作するでしょう。 +ucs-fonts.tar.gz に含まれている次の両方のデモ・ファイルを試して: > + + cat utf-8-demo.txt + vim utf-8-demo.txt + +xtermでUTF-8が問題なく動作しているかどうか確認してください。 + +Vimの'encoding'を'utf-8'に設定する必要があります。 + +============================================================================== +5. X11のフォント (Fonts on X11) *mbyte-fonts-X11* + +X11でのフォントの取り扱いは難しい。シングルバイトフォントの名前は長い文字列で +ある。マルチバイトフォントを使うにはさらにいくつか考慮することがある。 + +Note: この説明のほとんどはGTK+ 2にとっては関係ない。XLFDを用いたフォントの指定 +はもうサポートされていない。フォントの設定例は'guifont'を参照。下記の項|XLFD| +と|xfontset|は読んでも読まなくても良い。 + +Vimは固定幅のフォントだけを扱うことができる。プロポーショナルフォントを使用す +ることはできない。そのため多くの(見た目の良い)フォントは使用できない。しかし、 +メニューやツールチップにはどのフォントでも使用することができる。 + +Note: 表示と入力は独立している。入力したい言語のインプットメソッドがなくても、 +表示することはできる。 + +メニューやツールチップは標準設定のフォントでも機能するが、おそらくそれは、あま +り見た目が良くない。より良いフォントを選ぶには下記の説明を参照。 + + +X論理フォント名 (X LOGICAL FONT DESCRIPTION (XLFD)) + *XLFD* +XLFDはXのフォント名であり、フォントサイズや文字セットなどの情報を含んでいる。 +名前はこのような書式になっている: + +FOUNDRY-FAMILY-WEIGHT-SLANT-WIDTH-STYLE-PIXEL-POINT-X-Y-SPACE-AVE-CR-CE + +各フィールドの意味: + +- FOUNDRY: FOUNDRY フィールド。フォントを作成、提供した組織名。 +- FAMILY: FAMILY_NAME フィールド。フォントファミリーの名前(書体名) + (helvetica、gothic、times、など) +- WEIGHT: WEIGHT_NAME フィールド。文字の太さ。(light、medium、bold、など) +- SLANT: SLANT フィールド (文字の傾き) + r: Roman (ローマン体。正字体。傾きなし) + i: Italic (イタリック体) + o: Oblique (斜体) + ri: Reverse Italic (逆傾きのイタリック体) + ro: Reverse Oblique (逆傾きの斜体) + ot: Other (その他) + number: Scaled font (傾きの角度) +- WIDTH: SETWIDTH_NAME フィールド。文字幅。 + (normal、condensed、narrow、double wide) +- STYLE: ADD_STYLE_NAME フィールド。フォントの追加情報。 + (Serif、Sans Serif、Informal、Decorated、など) +- PIXEL: PIXEL_SIZE フィールド。ピクセル単位の文字の高さ。 +- POINT: POINT_SIZE フィールド。ポイント単位の文字の高さを10倍した値。 +- X: RESOLUTION_X フィールド。X軸方向の解像度(1インチあたりのドット数) +- Y: RESOLUTION_Y フィールド。Y軸方向の解像度(1インチあたりのドット数) +- SPACE: SPACING フィールド。 (文字送り) + p: Proportional (プロポーショナル、可変幅) + m: Monospaced (モノスペース、固定幅) + c: CharCell (文字セル) +- AVE: AVERAGE_WIDTH フィールド。ピクセル単位の文字幅の平均値を10倍した値。 +- CR: CHARSET_REGISTRY フィールド。文字セットの名前。 +- CE: CHARSET_ENCODING フィールド。文字セットの追加情報。JIS X 0208のよ + うな文字セットは、このフィールドが0ならコードポイントはGLと同じ値 + を持つ。1ならGRと同じ。 +訳注: jisx0208の場合、CHARSET_ENCODING=0なら7ビットJISコード、1ならEUC-JP、の +訳注: 番号で、文字がフォントに収録されている。 + +例えば、JIS X 0208に対応する16ドットのフォントは次のように書く: + -misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0 +訳注: For example, in case of a 14 dots font corresponding to JIS X 0208, it is +訳注: written like: +訳注: -misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0 +訳注: 16 dots の typo? + + +X フォントセット (X FONTSET) + *fontset* *xfontset* +シングルバイト文字セットは一般的に一つのフォントに関連付けられている。マルチバ +イト文字セットはほとんどの場合、複数のフォントの組合せを使用する。そして表示す +る文字に合ったフォントが選択されて使用される。そのようなフォントの集合をフォン +トセットと呼ぶ。 + +ロケールによって必要なフォントは異なる。X-Windowはロケールに必要な文字セットの +表を管理している。ロケールが必要とする全てのフォントをオプション'guifontset'に +設定しなければならない。 + +NOTE: 'encoding'が、ロケールとは違う文字セットに設定されていても、フォントセッ +トは常にロケールを使用する。そういう場合は'guifontset'ではなく'guifont'と +'guifontwide'を使用する。 + +例: + |charset| language "groups of characters" ~ + GB2312 簡体中国語 ISO-8859-1 and GB 2312 + Big5 繁体中国語 ISO-8859-1 and Big5 + CNS-11643 繁体中国語 ISO-8859-1, CNS 11643-1 and CNS 11643-2 + EUC-JP 日本語 JIS X 0201 and JIS X 0208 + EUC-KR 韓国語 ISO-8859-1 and KS C 5601 (KS X 1001) + +xlsfontsコマンドを使ってフォントを検索できる。例えば、KS C 5601のフォントを探 +すには: > + xlsfonts | grep ksc5601 + +これは複雑で混乱しやすいことなので、分らないことはX-Windowのドキュメントで調べ +てください。 + + *base_font_name_list* +使用したいフォントの名前を見付けたらオプション'guifontset'を設定する。設定は +フォントの名前をコンマで区切って指定する。 + +例えば、ja_JP.eucJPロケールの場合、JIS X 0201とJIS X 0208が必要である。次のよ +うに文字セットを明示的に指定してフォントを設定する: > + + :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0, + \-misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0 + +文字セットの名前を省略した場合、X-Windowが、ロケールに必要なフォントを選択す +る。例: > + + :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140, + \-misc-fixed-medium-r-normal--14-130-75-75-c-70 + +基本となるフォントの名前を一つだけ指定して、利用可能なすべてのフォントの中から +選択させることもできる。例: > + + :set guifontset=-misc-fixed-medium-r-normal--14-* + +フォントの別名を指定することもできる。フォントディレクトリ(例えば +/usr/X11R6/lib/X11/fonts/)のファイルfonts.aliasを見てください。例: > + + :set guifontset=k14,r14 +< + *E253* +Note 東アジアのフォントは、基本的には正四角形の範囲で表示される。ラテンフォン +トと東アジアのフォントを組み合わせた場合、東アジアのフォントはラテンフォントの +2倍の幅で表示される。 + +'guifontset'が空の場合、コマンド|:highlight|の"font"引数はフォントセットとして +解釈される。例えばこのように使用する: > + :hi Comment font=english_font,your_font +間違った"font"引数を使用するとエラーメッセージが表示される。事前に'guifontset' +を設定して確認してください。 + + +リソースファイルを使う (USING RESOURCE FILES) + +'guifontset'を設定する代りにX11のリソースを設定すれば、Vimはそれを使用する。 +これはXのリソースファイルの働きを知っている人向けです。 + +MotifとAthenaではファイル$HOME/.Xdefaultsにこの3行を追加する: + + Vim.font: |base_font_name_list| + Vim*fontSet: |base_font_name_list| + Vim*fontList: your_language_font + +Note: Vim.font はテキストエリアの設定 + Vim*fontSet はメニューの設定 + Vim*fontList はメニューの設定(Motif GUI用) + +例えば、14ドットの日本語フォントを使うには: > + + Vim.font: -misc-fixed-medium-r-normal--14-* + Vim*fontSet: -misc-fixed-medium-r-normal--14-* + Vim*fontList: -misc-fixed-medium-r-normal--14-* +< +もしくは: > + + Vim*font: k14,r14 + Vim*fontSet: k14,r14 + Vim*fontList: k14,r14 +< +この設定をすぐに反映させるには > + + xrdb -merge ~/.Xdefaults + +もしくはXサーバを停止して再起動する。 + + +GTK+版のVimは.Xdefaultsを使わず~/.gtkrcの設定を使用する。初期設定は恐らくうま +く機能するが、メニューのフォントは変更した方がいいかもしれない。例: > + + style "default" + { + fontset="-*-*-medium-r-normal--14-*-*-*-c-*-*-*" + } + widget_class "*" style "default" + +============================================================================== +6. MS-Windowsのフォント (Fonts on MS-Windows) *mbyte-fonts-MSwin* + +最も簡単なのは、フォント選択ダイアロクを使ってフォントを選択して、試してみるこ +とである。メニューの"Edit/Select Font..."(編集/フォント設定)を使用する。ちょう +どいいフォントを見付けたら、このコマンドでフォントの名前を確認する: > -> xterm -u8 -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 + :set guifont -そうすると UTF-8 ターミナル・エミュレーターが動作するでしょう。 -ucs-fonts.tar.gz に含まれている次の両方のデモ・ファイルを試して: +そして、'guifont'を設定するコマンドを|gvimrc|に追加する: > -> cat utf-8-demo.txt -> vim utf-8-demo.txt + :set guifont=courier_new:h12 + +============================================================================== +7. X11での入力 (Input on X11) *mbyte-XIM* + +X INPUT METHOD (XIM) の基礎知識 *XIM* *xim* *x-input-method* + +XIMはXの国際化入力機構です。Xlibユニット型と|IM-server| (Input-Method server) +型の2種類があります。|IM-server|型はCJK(日中韓)で使われるような複雑な入力方式 +に適しています。 + +- インプットメソッドサーバ (IM-server) + *IM-server* + |IM-server|型の入力方式では、FrontEndシステムかBackEndシステムのどちらかの方 + 法で入力イベントを処理する。FrontEndシステムでは、まず|IM-server|が入力イベ + ントを取得し、そして入力の結果を|IM-server|からアプリケーションへ渡す。 + BackEndシステムではその逆の順番で処理される。MS WindowsはBackEndシステムを採 + 用している。Xでは、ほとんどの|IM-server|がFrontEndシステムを採用している。 + BackEndシステムには通信のオーバーヘッドが大きく掛かるというデメリットはある + が、アプリケーションに制限を加えず、安全に同期することができる。 + + たとえばxwnmoとkinput2という日本語インプットメソッドサーバがあるが、両方とも + FrontEndシステムである。xwnmoはWnn(下記参照)と一緒に提供されている。kinput2 + はここから入手できる: ftp://ftp.sra.co.jp/pub/x11/kinput2/ + + 中国語用には、"xcin"というよくできたXIMサーバがあり、簡体中国語と繁体中国語 + の両方を入力できる。適切な入力テーブルを作成すれば、他のロケールも受け付け + る。Xcinはここから入手できる: http://xcin.linux.org.tw/ + +- 変換サーバ (Conversion Server) + *conversion-server* + いくつかのシステムではさらに、変換サーバが必要である。ほとんどの日本語イン + プットメソッドサーバは仮名漢字変換サーバを必要とする。中国語の入力では、入力 + 方式に依存する。いくつかの方式では、PinYinやZhuYinからHanZiへの変換サーバが + 必要である。韓国語の入力では、Hanjaを入力するには、Hangul-Hanja変換サーバが + 必要である。 + + 例えば、日本語の入力は2段階に分けられる。最初に平仮名を入力し、次に漢字へ変 + 換する。多くの漢字(JIS X 0208には6349文字が定義されている)と76文字の平仮名が + あるため、まず平仮名を入力し、必要なら、それを漢字や片仮名に変換する。仮名漢 + 字変換サーバにはjserver(Wnnと一緒に提供されている。下記参照)やcannaなどがあ + る。Cannaはここから入手できる: + ftp://ftp.nec.co.jp/pub/Canna/ (もう機能していない) +訳注: Cannaのサイト http://www.nec.co.jp/canna/ + +Wnn4.2というよくできた入力システムがある。Wnn4.2は以下のものを含んでいる。 + xwnmo (|IM-server|) + jserver (日本語仮名漢字変換サーバ) + cserver (中国語のPinYin、ZhuYinから簡体漢字への変換サーバ) + tserver (中国語のPinYin、ZhuYinから繁体漢字への変換サーバ) + kserver (Hangul-Hanja変換サーバ) +Wnn4.2は多くのシステムで動作し、インターネットのさまざまな場所で入手することが +できる。あなたのシステム用のRPMやportを使用してください。 + + +- 入力スタイル (Input Style) + *xim-input-style* + CJK(日中韓語)を入力するとき、4つの表示領域がある: + 1. 入力途中の文字を表示する領域 + 2. 現在の入力モードを表示する領域 + 3. 変換候補を表示する領域 + 4. その他のツールを表示する領域 + + 3番目の表示領域は変換をするときに必要である。たとえば、日本語の入力では、同 + じ発音の漢字が複数あるので、同じ平仮名が複数の漢字に対応する。 + + 1番目と2番目の表示領域はXの国際化入力でそれぞれ"Preedit Area"、"Status Area" + と定義されている。3番目と4番目の表示領域は定義されておらず、|IM-server|に任 + されている。国際化入力ではPreedit AreaとStatus Areaの組み合せで4つの入力スタ + イルが定義されている: |OnTheSpot| |OffTheSpot| |OverTheSpot| |Root|。 + + 現在、GUI Vimは|OverTheSpot|、|OffTheSpot|、|Root|の3つのスタイルをサポート + している。 + +*. on-the-spot *OnTheSpot* + Preedit AreaとStatus Areaはアプリケーション領域にクライアントアプリケー + ションによって表示される。クライアントアプリケーションはテキストを挿入する + 位置に未確定文字をすべて表示するように|IM-server|から指示される。クライア + ントは、コールバック関数を登録して、未確定文字の入力中にインプットメソッド + から呼び出してもらう。 +*. over-the-spot *OverTheSpot* + Status Areaはアプリケション領域の固定位置に作成される。Vimの場合は、ステー + タスライン付近である。Preedit Areaはアプリケーションの入力している位置に作 + 成される。インプットメソッドは、テキストが挿入される位置にあるウインドウに + 未確定文字を表示する。 +*. off-the-spot *OffTheSpot* + Preedit AreaとStatus Areaはアプリケーション領域に表示される。Vimの場合は、 + ステータスライン付近である。クライアントアプリケーションは表示ウインドウを + 提供し、インプットメソッドが直接そこに未確定文字を表示する。 +*. root-window *Root* + Preedit AreaとStatus Areaはアプリケーションの外側に表示される。インプット + メソッドは別に用意した自分のウインドウに未確定文字をすべて表示する。 + + +XIMを使用する (USING XIM) *multibyte-input* *E284* *E286* *E287* *E288* + *E285* *E291* *E292* *E290* *E289* + +Note 表示と入力は独立している。インプットメソッドがなくてもあなたの言語を見る +ことができる。しかし、表示方法とインプットメソッドが合わないと、テキストは間 +違って表示される。 + + Note: 'guifontset'を設定しないとインプットメソッドを使用できない。従っ + て、ラテン語のユーザも、インプットメソッドを使用するなら、'guifontset' + を設定しなければならない。 + +あなたの言語を入力するには、その言語をサポートしているインプットメッソッドサー +バ|IM-server|を実行する。必要なら変換サーバ|conversion-server|も実行する。 + +次の3行を~/.Xdefaultsファイルに書き込む。これは|XIM|を使用するすべてのXアプリ +ケーションに共通する設定である。すでに|XIM|を使用している場合は、これを読み飛 +ばしてください。 > + + *international: True + *.inputMethod: your_input_server_name + *.preeditType: your_input_style +< +input_server_name インプットサーバ|IM-server|の名前。(|IM-server|のマ + ニュアルを確認してください)。 +your_input_style |OverTheSpot|、|OffTheSpot|、|Root|のどれか。 + |xim-input-style|を参照。 + +X11R6を使用している場合、*internationalは必要ない。 +また、*.inputMethodと*.preeditTypeの指定は任意。 + +kinput2を|IM-server|として使う場合の例: > + + *international: True + *.inputMethod: kinput2 + *.preeditType: OverTheSpot +< +|OverTheSpot|を使用する場合、GUI Vimはノーマルモードでも常にインプットメソッド +サーバに接続する。そのため"f"や"r"コマンドであなたの言語を入力することができ +る。しかし、他の入力スタイルの場合は、GUI Vimはノーマルモードのときにはイン +プットメソドサーバに接続しない。 + +インプットメソッドサーバが|OverTheSpot|をサポートしていない場合、"f"や"r"など +のノーマルモードコマンドであなたの言語を使用するには、ローカライズされたxterm +か、|XIM|をサポートしたxtermを使用する。 + +必要なら、環境変数XMODIFIERSを設定する: + + sh: export XMODIFIERS="@im=input_server_name" + csh: setenv XMODIFIERS "@im=input_server_name" + +インプットメソッドサーバにkinput2を使用する場合のshでの設定例: > + + export XMODIFIERS="@im=kinput2" +< + +XIMの制御 (FULLY CONTROLLED XIM) + +MS-WindowsのIME(|multibyte-ime|参照)のように、XIMを制御することができる。 +この機能は現在GTK GUIでのみ利用可能。 + +XIMを制御するには、使用しているインプットメソッドのトグルキーを、オプション +'imactivatekey'に設定する必要がある。たとえば、インプットメソッドサーバに +kinput2 + cannaの組み合せを使用している場合、トグルキーは恐らくShift+Spaceなの +で、このように設定する: > + + :set imactivatekey=S-space + +設定の書式は'imactivatekey'を参照。 + +============================================================================== +8. MS-Windowsでの入力 (Input on MS-Windows) *mbyte-IME* + +(Windows IME support) *multibyte-ime* *IME* + +{WindowsのGUI環境で|+multi_byte_ime|が有効な場合のみ利用可能} + +Windowsでマルチバイト文字を入力するには、Input Method Editor(IME)を使用する。 +IMEを使ったテキストの入力では、IMEの状態をオンにしたりオフにしたり、何度も何度 +も切り替えなければならない。そうしないと、IMEの状態がオンのときには、キー入力 +はすべてIMEに取られてしまうので、'j'や'k'などほぼすべてのキーを、直接Vimに入力 +することができない。 + +|+multi_byte_ime|機能はそれを手助けし、IMEを手動で切り替える手間を減少させる。 +マルチバイトテキストを編集しているときでも、ノーマルモードでIMEを必要とするこ +とはほとんどない。そこで、ESCで挿入モードを抜けるときに、VimはIMEの状態を記録 +してから、IMEを強制的にオフにする。そして、次に挿入モードに入ったときに自動的 +に、記録しておいた状態に戻す。 + +これは挿入モードとノーマルモードの間だけでなく、コマンドラインや検索コマンドの +入力時や置換モードでも同じです。 +オプション'iminsert'、'imsearch'、'imcmdline'を設定して、それぞれ別々に入力方 +法を選択したり、無効にしたりできる。 + +IMEについて (WHAT IS IME) + IMEは東アジア向けのWindowsの一部で、マルチバイト文字を入力するためのもので + す。 英語などの言語用のWindowsにはIMEは搭載されていない(普通は必要ない)。 + しかし、Microsoft Global IMEというものがある。これはInternet Explorer4.0以 + 上に含まれている。詳しいことは下記のURLを参照。 + +GLOBAL IMEについて (WHAT IS GLOBAL IME) *global-ime* + Global IMEはWindows 95、Windows 98、Windows NT 4.0のどの言語用のバージョン + でも利用可能で、中国語、日本語、韓国語のテキストをVimに入力することができ + る。 + Windows 2000やXpでも問題なく使用できる(ダウンロードは必要ない)。 + Windows 2000 ProfessionalにはGlobal IMEが組み込まれており、コントロールパ + ネルの地域と言語のオプション/言語タブ/テキストサービスと入力言語の詳細ボタ + ンから入力言語を追加できる。 + Global IMEの詳細は下記のURLを参照。リンク先にはGlobal IMEの各国語用のバー + ジョンもある。 + + - Global IME detailed information. + http://www.microsoft.com/windows/ie/features/ime.asp + + - Active Input Method Manager (Global IME) + http://msdn.microsoft.com/workshop/misc/AIMM/aimm.asp + + Global IMEのサポートは実験的な機能です。 + +NOTE: IMEを使用するには入力したい言語をシステムに追加する必要がある。正確な設 +定方法はWindowsのバージョンによって違う。Windows XPの場合は: +1. コントロールパネル +2. 地域と言語のオプション +3. 言語タブ +4. [テキストサービスと入力言語]エリアの詳細ボタン +5. 追加ボタン +訳注: 原文 Windows 2000 Professionalの場合 +訳注: 1. Control Panel +訳注: 2. Regional Options +訳注: 3. Input Locales Tab +訳注: 4. Add Installed input locales -> Chinese(PRC) +訳注: The default is still English (United Stated) + + +IMEやXIMがオンのときのカーソルの色 *CursorIM* + IMEの状態に応じてカーソルの色を変えることができる。通常、IMEの状態はデスク + トップの隅(やタスクバー)に表示されているが、これはあまり確認しやすくないの + で、この機能が役に立つ。 + これはXIMでも同じように機能する。 + + 強調グループのCursorIMを設定して、IMEの状態がオンのときの色を選べる。 + たとえば、次の行を_gvimrcに追加する: > + + if has('multi_byte_ime') + highlight Cursor guifg=NONE guibg=Green + highlight CursorIM guifg=NONE guibg=Purple + endif +< + これで、IMEがオフならカーソルは緑、オンなら紫になる。 + +============================================================================== +9. キーマップでの入力 (Input with a keymap) *mbyte-keymap* + +キーボードから入力できない文字がある場合にはオプション'keymap'を使う。一つ以上 +の(英語の)文字を入力することで、別の(非英語の)文字を入力することができる。この +機能はテキストを入力するときだけ作用する。Vimコマンドを入力するときには作用し +ない。そのため、キーボードの設定を切り替える手間がない。 + +オプション'keymap'に、使用したいキーマップファイルを指定する。ファイルの名前は +次の二つのうちのどちらか: + + keymap/{keymap}_{encoding}.vim + keymap/{keymap}.vim + +{keymap}はオプション'keymap'に設定する値、{encoding}はオプション'encoding'の +値。{encoding}付きのファイル名が優先して使われる。 + +キーマップファイルを探すために'runtimepath'が使われる。利用可能なすべてのキー +マップファイルを一覧するには、このようにする: > + :echo globpath(&rtp, "keymap/*.vim") + +挿入モードとコマンドラインモードでは、CTRL-^を使ってキーマップを使用するかどう +かを切り換えることができる。|i_CTRL-^| |c_CTRL-^| +挿入モードでは、キーマップの状態はオプション'iminsert'に記憶される。挿入モード +から抜けて、ふたたび挿入モードに入ったときに、以前の状態が使われる。|f|や|r|な +どの一つの文字を引数に取るコマンドでも同じ値が使われる。 +コマンドラインモードでは、キーマップの状態は記憶されない。コマンドラインモー +ドに入るとまず、(ASCII文字の)Exコマンドを入力するはずだからである。 +検索パターンの入力では、オプション'imsearch'が使われる。'iminsert'と設定を共有 +するように設定することもできる。 + +キーマップ(言語マップ)を使用中に、GUIカーソルの色を変えることができる。もし +も、非標準な背景色を使用していた場合にカーソルが見えなくなることがないように、 +初期状態ではこの機能は無効になっている。次の例では、カーソルの色が明るくなるよ +うにしている: > + :highlight Cursor guifg=NONE guibg=Green + :highlight lCursor guifg=NONE guibg=Cyan +< + *keymap-file-format* *:loadk* *:loadkeymap* *E105* +キーマップファイルはこのような構成になっている: > + + " Maintainer: name <email@address> + " Last Changed: 2001 Jan 1 + + let b:keymap_name = "short" + + loadkeymap + a A + b B comment + +「"」で始まる行はコメントなので無視される。空白行も無視される。マップを定義す +る行には、参考にできるようなコメントを書くことができる。 +訳注: The lines starting with a " are comments and will be ignored. Blank lines are +訳注: also ignored. The lines with the mappings may have a comment after the useful +訳注: text. +訳注: 自信無し + +"b:keymap_name"にはステータスラインに表示される短い名前を設定できる。'keymap' +の値は、言語の違いやキーボードやエンコーディングの違いを区別するために長くなり +がちだが、ステータスラインに表示できる文字には限りがあるので、この変数を使う。 + +実際のマップは"loadkeymap"以下に書く。上の例では、"a"は"A"に、"b"は"B"にマップ +される。このように、一番目のものが二番目にマップされる。そして、ファイルの末尾 +まで同じように処理される。 +このように設定したマップは、|:lnoremap|に"<buffer>"を指定したバッファローカル +なマップとまったく同じである。 +それはこのコマンドで確認できる: > + :lmap +二つの項目は空白で区切る。マップに空白を含めるには、"<Tab>"、"<Space>"という特 +別な表記を使う。二つの項目の文字の長さは、合わせて200バイトを超えてはいけな +い。 + +一番目の項目に複数の文字を指定することができる。これはデッドキーのような作用を +する。例: > + 'a á +クォートの入力があったとき、次に"a"が入力されるかどうかわからないので、Vimは次 +の文字が入力されるまで待機する。シングルクォートを入力できるようにするには、次 +の行も加える: > + '' ' +マップは|:lnoremap|で定義されるので、結果のクォート文字は、他のマップの開始文 +字としては扱われない。 +訳注: > シングルクォートを入力できるようにするには... +訳注: 'timeout'も参照。 + +二番目の項目に複数の文字を指定することもできるが、一般的ではない。しか +し、文字を指定するのにいろいろな方法を使用して構わない: > + A a literal character + A <char-97> decimal value + A <char-0x61> hexadecimal value + A <char-0141> octal value + x <Space> special key name + +文字は現在の'encoding'と同じエンコーディングであるものとして扱われる。 +":scriptencoding"でリテラル文字のエンコーディングを指定することができるが、 +<char->表記の文字には影響しない。なぜなら、キーマップファイルのエンコーディン +グが変換されるのであって、<char->の結果の文字は変換されないからである。 + +"loadkeymap"以下の行は'cpoptions'に"C"を設定した状態で解釈される。つまり、行の +継続は使用されない。バックスラッシュは特殊文字として扱われる。例: > + + " a comment line + \" x " を x へマップ + \\ y \ を y へマップ + +他の人にも便利なキーマップファイルを作成したら、Vimの配布物に含めるために、Vim +のメンテナに提出することを検討してみて下さい: +<maintainer@vim.org> + + +ヘブライ語 キーマップ (HEBREW KEYMAP) *keymap-hebrew* + +このファイルはUTF-8とCP1255のエンコーディングで利用可能な文字と、その文字を入 +力するためのキーマップを説明している: + +glyph encoding keymap ~ +Char utf-8 cp1255 hebrew hebrewp name ~ +א 0x5d0 0xe0 t a 'alef +ב 0x5d1 0xe1 c b bet +ג 0x5d2 0xe2 d g gimel +ד 0x5d3 0xe3 s d dalet +ה 0x5d4 0xe4 v h he +ו 0x5d5 0xe5 u v vav +ז 0x5d6 0xe6 z z zayin +ח 0x5d7 0xe7 j j het +ט 0x5d8 0xe8 y T tet +י 0x5d9 0xe9 h y yod +ך 0x5da 0xea l K kaf sofit +כ 0x5db 0xeb f k kaf +ל 0x5dc 0xec k l lamed +ם 0x5dd 0xed o M mem sofit +מ 0x5de 0xee n m mem +ן 0x5df 0xef i N nun sofit +נ 0x5e0 0xf0 b n nun +ס 0x5e1 0xf1 x s samech +ע 0x5e2 0xf2 g u `ayin +ף 0x5e3 0xf3 ; P pe sofit +פ 0x5e4 0xf4 p p pe +ץ 0x5e5 0xf5 . X tsadi sofit +צ 0x5e6 0xf6 m x tsadi +ק 0x5e7 0xf7 e q qof +ר 0x5e8 0xf8 r r resh +ש 0x5e9 0xf9 a w shin +ת 0x5ea 0xfa , t tav + +Vowel marks and special punctuation: +הְ 0x5b0 0xc0 A: A: sheva +הֱ 0x5b1 0xc1 HE HE hataf segol +הֲ 0x5b2 0xc2 HA HA hataf patah +הֳ 0x5b3 0xc3 HO HO hataf qamats +הִ 0x5b4 0xc4 I I hiriq +הֵ 0x5b5 0xc5 AY AY tsere +הֶ 0x5b6 0xc6 E E segol +הַ 0x5b7 0xc7 AA AA patah +הָ 0x5b8 0xc8 AO AO qamats +הֹ 0x5b9 0xc9 O O holam +הֻ 0x5bb 0xcb U U qubuts +כּ 0x5bc 0xcc D D dagesh +הֽ 0x5bd 0xcd ]T ]T meteg +ה־ 0x5be 0xce ]Q ]Q maqaf +בֿ 0x5bf 0xcf ]R ]R rafe +ב׀ 0x5c0 0xd0 ]p ]p paseq +שׁ 0x5c1 0xd1 SR SR shin-dot +שׂ 0x5c2 0xd2 SL SL sin-dot +׃ 0x5c3 0xd3 ]P ]P sof-pasuq +װ 0x5f0 0xd4 VV VV double-vav +ױ 0x5f1 0xd5 VY VY vav-yod +ײ 0x5f2 0xd6 YY YY yod-yod + +The following are only available in utf-8 + +Cantillation marks: +glyph +Char utf-8 hebrew name +ב֑ 0x591 C: etnahta +ב֒ 0x592 Cs segol +ב֓ 0x593 CS shalshelet +ב֔ 0x594 Cz zaqef qatan +ב֕ 0x595 CZ zaqef gadol +ב֖ 0x596 Ct tipeha +ב֗ 0x597 Cr revia +ב֘ 0x598 Cq zarqa +ב֙ 0x599 Cp pashta +ב֚ 0x59a C! yetiv +ב֛ 0x59b Cv tevir +ב֜ 0x59c Cg geresh +ב֝ 0x59d C* geresh qadim +ב֞ 0x59e CG gershayim +ב֟ 0x59f CP qarnei-parah +ב֪ 0x5aa Cy yerach-ben-yomo +ב֫ 0x5ab Co ole +ב֬ 0x5ac Ci iluy +ב֭ 0x5ad Cd dehi +ב֮ 0x5ae Cn zinor +ב֯ 0x5af CC masora circle + +Combining forms: +ﬠ 0xfb20 X` Alternative `ayin +ﬡ 0xfb21 X' Alternative 'alef +ﬢ 0xfb22 X-d Alternative dalet +ﬣ 0xfb23 X-h Alternative he +ﬤ 0xfb24 X-k Alternative kaf +ﬥ 0xfb25 X-l Alternative lamed +ﬦ 0xfb26 X-m Alternative mem-sofit +ﬧ 0xfb27 X-r Alternative resh +ﬨ 0xfb28 X-t Alternative tav +﬩ 0xfb29 X-+ Alternative plus +שׁ 0xfb2a XW shin+shin-dot +שׂ 0xfb2b Xw shin+sin-dot +שּׁ 0xfb2c X..W shin+shin-dot+dagesh +שּׂ 0xfb2d X..w shin+sin-dot+dagesh +אַ 0xfb2e XA alef+patah +אָ 0xfb2f XO alef+qamats +אּ 0xfb30 XI alef+hiriq (mapiq) +בּ 0xfb31 X.b bet+dagesh +גּ 0xfb32 X.g gimel+dagesh +דּ 0xfb33 X.d dalet+dagesh +הּ 0xfb34 X.h he+dagesh +וּ 0xfb35 Xu vav+dagesh +זּ 0xfb36 X.z zayin+dagesh +טּ 0xfb38 X.T tet+dagesh +יּ 0xfb39 X.y yud+dagesh +ךּ 0xfb3a X.K kaf sofit+dagesh +כּ 0xfb3b X.k kaf+dagesh +לּ 0xfb3c X.l lamed+dagesh +מּ 0xfb3e X.m mem+dagesh +נּ 0xfb40 X.n nun+dagesh +סּ 0xfb41 X.s samech+dagesh +ףּ 0xfb43 X.P pe sofit+dagesh +פּ 0xfb44 X.p pe+dagesh +צּ 0xfb46 X.x tsadi+dagesh +קּ 0xfb47 X.q qof+dagesh +רּ 0xfb48 X.r resh+dagesh +שּ 0xfb49 X.w shin+dagesh +תּ 0xfb4a X.t tav+dagesh +וֹ 0xfb4b Xo vav+holam +בֿ 0xfb4c XRb bet+rafe +כֿ 0xfb4d XRk kaf+rafe +פֿ 0xfb4e XRp pe+rafe +ﭏ 0xfb4f Xal alef-lamed + +============================================================================== +10. UTF-8を使う (Using UTF-8) *mbyte-utf8* *UTF-8* *utf-8* *utf8* + *Unicode* *unicode* +ユニコードは、他の文字セットをすべて含むように設計された。そのため、どんな言語 +のテキストでもユニコードを使って書くことができる(希少な言語を除く)。そして、他 +のエンコーディングでは混在させることが不可能な言語でも、一つのファイルに混在さ +せることが可能である。 + +ユニコードはいくつかの方法でエンコードされる。もっとも一般的なのは、16ビットで +文字を表わすUCS-2と、1文字をそれぞれ1バイトかそれ以上の複数バイトで表わすUTF-8 +である。Vimはそれらすべてのエンコーディングをサポートしているが、ユニコードの +内部表現には常にUTF-8が使われる。 + +Vimは幅広くUTF-8をサポートしており、それは以下の環境で機能する: +- utf-8サポートが有効になっているxterm +- Athena、Motif、GTK、のGUI +- MS-Windows GUI + +全角文字は'guifontwide'や'guifontset'を使うと最もうまく表示することができる。 +'guifont'だけを設定している場合は、全角文字は通常の幅で描画され、足りない幅が +空白で埋められる。Note:オプション'guifontset'はGTK+ 2 GUIでは使用しない。 + +2文字までの結合文字を扱うことができる。結合文字は先行文字に重ねて描画される。 +テキストの編集中は、合成文字は先行文字の一部として扱われる。例えば、初期設定で +は、"x"は文字を削除するときに、連なる合成文字をいっぺんに削除する。オプション +'delcombine'がオンのときには、'x'は1回に1文字の結合文字を削除して、最後に基底 +文字を削除する。入力するときには、まず1文字目を入力して、そして合成文字を入力 +する。すると、文字が合成される。"r"コマンドを使って結合文字を入力することはで +きない。結合文字がさらに入力されるかどうか知ることができないからである。代りに +"R"を使う。 +訳注: combining character 結合文字 +訳注: composing character 合成文字 +訳注: base character 基底文字 +訳注: preceding character 先行文字? + +UTF-8として不正なバイト列はそれぞれ1バイトの文字として扱われ、<xx>と表示され +る。この"xx"はそのバイトの16進数である。 + +Overlong sequenceに対して特別な処理はされない。通常の文字と同じように表示され +る。Overlong sequenceはどんな検索パターンにもマッチしないかもしれない。 +(Overlong sequenceとは、文字を表すために必要なバイトよりも多くのバイトでその文 +字を表現しているバイト列のこと。) "<00>"と表示されているNUL(zero)は例外。 +訳注: たぶん、"<00>"と表示されてるOverlong sequenceだけはたとえ|/\_.|でもマッ +訳注: チしないということ。 + +ファイルやバッファには、ユニコードで表現できる範囲(31ビット)の文字をすべて書く +ことができる。しかし、16ビットの範囲内の文字しか表示することができない。使用し +ているフォントがその文字を持っていない場合も表示できない。 + +便利なコマンド: +- "ga"はカーソル位置の文字のコードを10進数、16進数、8進数で表示する。合成文字 + も表示される。(表示が途切れてしまった場合は、":messages"を使う)。 +- "g8"は文字のUTF-8コードを16進数で表示する。合成文字も表示される。 +- ":set encoding=utf-8 fileencodings="とすると、すべてのファイルでUTF-8を使う + ことを強制できる。'encoding'と'fileencodings'の初期設定はロケールの値に応じ + て設定される。 +訳注: わからない +訳注:- ":set encoding=utf-8 fileencodings=" forces using UTF-8 for all files. The +訳注: default is to use the current locale for 'encoding' and set 'fileencodings' +訳注: to automatically the encoding of a file. + + +VimをUTF-8モードで起動する (STARTING VIM) + +ロケールがUTF-8の場合、Vimは自動的にUTF-8モードで起動する。 + +UTF-8以外のロケールを使っている場合はこのようにする: > + + set encoding=utf-8 + +メニューに使われるフォントを変える必要があるかもしれない。残念ながら、これはい +つもうまくいくとは限らない。システムに依存する説明は下記、または'langmenu'を参 +照。 + + +X-WindowでUTF-8を使う (USING UTF-8 IN X-Windows) *utf-8-in-xwindows* + +Note: この項はGTK+ 2 GUIには当てはまらない。 + +使用するフォントを選択する必要がある。全角文字を表示するにはさらに別のフォント +が必要。設定するには次の三つの方法がある: + +1. 'guifont'を設定して、'guifontwide'はVimに設定させる +2. 'guifont'と'guifontwide'を設定する +3. 'guifontset'を設定する + +詳細は各オプションの説明を参照。例: > + + :set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 + +メニューで使用されるフォントも変更することができる。これはMotifでのみ機能す +る。":hi Menu font={fontname}"コマンドを使って設定する。|:highlight| + + +UTF-8を入力する (TYPING UTF-8) *utf-8-typing* + +X-Windowを使っているなら、UTF-8をサポートしているインプットメソッド使用する。 + +システムがUTF-8の入力をサポートしていない場合でも、'keymap'を使って入力するこ +とができる。ASCII文字を複数入力することでUTF-8の文字を入力するようなキーマップ +ファイルを作ることができる。|mbyte-keymap|を参照。 + +他にも、XIMを利用することができる言語に、ロケールを設定する方法がある。その場 +合は、'termencoding'をその言語に設定する。Vimは入力された文字を'termencoding' +から'encoding'へ変換する。 + +すべての方法が使えなくても、4文字の16進数で文字コードを直接入力することができ +る: > + + CTRL-V u 1234 + +"1234"は16進数として解釈される。正しく4文字を入力しなくてはいけない。必要であ +ればゼロを前置する。 + +コマンド引数 (COMMAND ARGUMENTS) *utf-8-char-arg* + +|f|、|F|、|t|、|r|のようなコマンドは一つの文字を引数に取る。UTF-8では一文字か +二文字の合成文字の場合がある。Vimは合成文字の入力かどうかを調べるために次の入 +力を待ったりはしないため、合成文字は基底文字と同時に入力する必要がある。そのよ +うな文字は'keymap'や|:lmap|を使うと簡単に入力することができる。 + +行内検索をするコマンド(|f|など)は合成文字を次のように処理する。非合成文字を検 +索するときは、合成されている文字とされていない文字の両方がマッチする。合成文字 +を検索するときは、合成文字だけがマッチする。すべての人が合成文字を入力できるわ +けではないので、このようになっている。 +訳注: 例えば、か(U+304B) + 濁点(U+3099) という合成文字は"fか"でマッチする + + +============================================================================== +11. 主なオプション (Overview of options) *mbyte-options* + +これらのオプションはマルチバイトテキストのファイルの編集に関係する。詳細は +options.txtの説明を参照。 + +'encoding' キーボード入力や表示に使われるエンコーディング。これは新規ファ + イルのエンコーディングの初期設定でもある。 + +'fileencoding' ファイルのエンコーディング。'encoding'と違う場合、ファイルの読 + み書き時にエンコーディングが変換される。 + +'fileencodings' ファイルに使うことができるエンコーディングのリスト。ファイルを + 開くとき、リストの先頭から順番に変換を試して、エラーが起きな + かった最初のものが'fileencoding'として使われる。 + +'charconvert' あるエンコーディングから別のエンコーディングへファイルを変換す + る式。 + +'formatoptions' このオプションにフラグ'm'を含めると、フォーマット時に、(文字の + コードが256以上の)マルチバイト文字のところで改行することができ + る。これは、どこでも改行することができる言語を編集するときに + 便利である。 +訳注: at a multibyte character of 256 or higher. Thus is useful for +訳注: Thusはtypo? + +'guifontset' マルチバイトエンコーディングの文字に使うフォントのリスト。この + オプションが設定されていれば'guifont'の代りに使用される。 + +'keymap' キーボードマッピングの名前を指定する。 + +============================================================================== -xterm で UTF-8 が問題なく動作しているかどうか確認してください。 +マルチバイト機能は、特に以下の方々の貢献による: + Chi-Deok Hwang <hwang@mizi.co.kr> + Nam SungHyun <namsh@lge.com> + K.Nagano <nagano@atese.advantest.co.jp> + Taro Muraoka <koron@tka.att.ne.jp> + Yasuhiro Matsumoto <mattn@mail.goo.ne.jp> vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/mlang.jax b/ja/mlang.jax index 33897bb18..04d111bfa 100644 --- a/ja/mlang.jax +++ b/ja/mlang.jax @@ -171,8 +171,7 @@ Vimユーザに提供することを是非とも考えていただきたい。Vi *:menut* *:menutrans* *:menutranslate* :menut[ranslate] clear - Clear all menu translations. - メニュー翻訳の全てを削除Sル。 + メニューの翻訳をすべて削除する。 :menut[ranslate] {english} {mylang} メニュー名{english}を{mylang}に翻訳する。"&" と diff --git a/ja/motion.jax b/ja/motion.jax index b4ac25d38..08dd5dc6a 100644 --- a/ja/motion.jax +++ b/ja/motion.jax @@ -497,95 +497,95 @@ aw "a word"、[count] word 選択します(参照 |word|)。 行指向ビジュアルモードで使われたときは、"aw" は文字単 位ビジュアルモードに切り替えます。 - *v_iw* + *v_iw* *iw* iw "inner word"、[count] word 選択します(参照 |word|)。 word の間のホワイトスペースもカウントされます。 行指向ビジュアルモードで使われたときは、"iw" は文字単 位ビジュアルモードに切り替えます。 - *v_aW* + *v_aW* *aW* aW "a WORD"、[count] WORD 選択します(参照 |WORD|)。 単語の前後に続いているホワイトスペースも含められます がカウントはされません。 行指向ビジュアルモードで使われたときは、"aW" は文字単 位ビジュアルモードに切り替えます。 - *v_iW* + *v_iW* *iW* iW "inner WORD"、[count] WORD 選択します(参照 |WORD|)。 ホワイトスペースもカウントされます。 行指向ビジュアルモードで使われたときは、"iW" は文字単 位ビジュアルモードに切り替えます。 - *v_as* + *v_as* *as* as "a sentence" [count] 文選択します(参照 |sentence|)。 ビジュアルモードで使われたときは、文字指向になります。 - *v_is* + *v_is* *is* is "inner sentence" [count] 文の内部を選択します(参照 |sentence|)。 ビジュアルモードで使われたときは、文字指向になります。 - *v_ap* + *v_ap* *ap* ap "a paragraph" [count] 段落選択します(参照 |paragraph|)。 例外:空行(空白だけからなる)も段落の境界になります。 ビジュアルモードで使われたときは、行指向になります。 - *v_ip* + *v_ip* *ip* ip "inner paragraph" [count] 段落の内部を選択します(参照 |paragraph|)。 例外:空行(空白だけからなる)も段落の境界になります。 ビジュアルモードで使われたときは、行指向になります。 -a] *v_a]* *v_a[* +a] *v_a]* *v_a[* *a]* *a[* a[ "a [] block" [count] '[' ']' block を選択します。この コマンドは後方に [count] 番目に現れる '[' を探し、それ から対応する ']' を探します。そしてその2つに囲まれたテ キストを '[' と ']' も含めて選択します。 ビジュアルモードで使われたときは、文字指向になります。 -i] *v_i]* *v_i[* +i] *v_i]* *v_i[* *i]* *i[* i[ "inner [] block" [count] '[' ']' block の内部を選択し ます。このコマンドは後方に [count] 番目に現れる '[' を 探し、それから対応する ']' を探します。そしてその2つに 囲まれたテキストを '[' と ']' を除いて選択します。 ビジュアルモードで使われたときは、文字指向になります。 -a) *v_a)* -a( *v_ab* *v_a(* +a) *v_a)* *a)* *a(* +a( *v_ab* *v_a(* *ab* ab "a block" [count] block 選択します。"[count] [(" から それに対応する ')' までで、'(' と ')' を含みます(参照 |[(|)。括弧の外側の空白は含みません。 ビジュアルモードで使われたときは、文字指向になります。 -i) *v_i)* -i( *v_ib* *v_i(* +i) *v_i)* *i)* *i(* +i( *v_ib* *v_i(* *ib* ib "inner block" [count] block の内部を選択します。 "[count] [(" からそれに対応する ')' までで、'(' と ')' を除きます(参照 |[(|)。 ビジュアルモードで使われたときは、文字指向になります。 -a> *v_a>* *v_a<* +a> *v_a>* *v_a<* *a>* *a<* a< "a <> block" [count] <> block 選択します。[count] 番 目に現れる '<' を検索し、それに対応する '>' までを '<' と '>' を含めて選択します。 ビジュアルモードで使われたときは、文字指向になります。 -i> *v_i>* *v_i<* +i> *v_i>* *v_i<* *i>* *i<* i< "inner <> block" [count] <> block の内部を選択します。 [count] 番目に現れる '<' を検索し、それに対応する '>' までを '<' と '>' を除いて選択します。 ビジュアルモードで使われたときは、文字指向になります。 -a} *v_a}* -a{ *v_aB* *v_a{* +a} *v_a}* *a}* *a{* +a{ *v_aB* *v_a{* *aB* aB "a Block" [count] Block 選択します。"[count] [{" から それに対応する '}' までで '{' と '}' を含みます(参照 |[{|)。 ビジュアルモードで使われたときは、文字指向になります。 -i} *v_i}* -i{ *v_iB* *v_i{* +i} *v_i}* *i}* *i{* +i{ *v_iB* *v_i{* *iB* iB "inner Block" [count] Block 選択します。"[count] [{" か らそれに対応する '}' までで '{' と '}' を除きます(参照 |[{|)。 @@ -775,7 +775,6 @@ g'{mark} g`{mark} |:keepjumps| コマンドモディファイヤが使われた場合には セットされません。 |restore-position| も参照。 - *'>* *'quote* *`quote* '" `" 現在のバッファーを最後に終了した時のカーソル位置に diff --git a/ja/quickfix.jax b/ja/quickfix.jax index 0cb0b9bb1..113d4101c 100644 --- a/ja/quickfix.jax +++ b/ja/quickfix.jax @@ -71,7 +71,7 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる 'switchbuf'については|:cc|を参照。 -:[count]cNf[ile][!] *:cpf* *:cpfile* *:cNf* *:cNfile* +:[count]cNf[ile][!] *:cpf* *:cpfile* *:cNf* *:cNfile* :[count]cpf[ile][!] ファイル名を含むエラーリストで[count]個前のファイルの 最後のエラーを表示する。ファイル名が無いか後のファイル が無い場合には、[count]個前のエラーに移動する。[!]と @@ -81,6 +81,7 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる :cr[ewind][!] [nr] [nr]のエラーを表示する。[nr]が省略されると一番最初の エラーが表示される。|:cc|を参照。 + *:cfirst* *:cfir* :cfir[st][!] [nr] ":crewind"と同じ。 *:clast* *:cla* @@ -202,6 +203,7 @@ QuickFixウィンドウが一杯になったとき、2つの自動コマンド ============================================================================= 4. :makeの使い方 *:make_makeprg* + *:mak* *:make* :mak[e][!] [arguments] 1. オプション'autowrite'がonならば変更のあるバッファは 保存される。 2. 'makeef'からエラーファイルの名前が生成される。 diff --git a/ja/remote.jax b/ja/remote.jax index e2e040366..f125b9aec 100644 --- a/ja/remote.jax +++ b/ja/remote.jax @@ -46,7 +46,7 @@ Vimクライアントサーバ通信 *client-server* 報告しない。指定したファイルがすでにローカルで 編集中であっても同様。 --remote-wait [+{cmd}] {file} ... *--remote-wait* - --removteと同様、しかしリモートVimでファイルが + --remoteと同様、しかしリモートVimでファイルが 完了(解放)されるまで待つ。 --remote-wait-silent [+{cmd}] {file} ... *--remote-wait-silent* --remote-waitと同様、しかしサーバが存在しなく @@ -95,7 +95,7 @@ gvimを起動したときには"gvim1"というようになる。その時のサ 数|v:servername|によりアクセスできる。サーバ名の大文字小文字は区別されないの で、"gvim" と "GVIM"は同じとみなされる。 -Vimが引数--removeや--remove-waitまたは--remove-sendで起動された時には、上記の +Vimが引数--remoteや--remote-waitまたは--remote-sendで起動された時には、上記の ようにその名前で起動されたサーバを探そうと試みる。正確に一致するサーバがなかっ た時には、数字の後置名を付けて見つかった最初のサーバを使用する。 引数-- servernameに数字の後置を付けた名前を指定した場合には、それは正確に一致 diff --git a/ja/syntax.jax b/ja/syntax.jax index 14b20ce23..d0e6f6723 100644 --- a/ja/syntax.jax +++ b/ja/syntax.jax @@ -331,7 +331,7 @@ Vimは初期化の時に、ランタイムファイルの在り処を自動的 | 下のことを行なう$VIMRUNTIME/scripts.vimを読込む。 | | | +- ユーザによる追加ファイルを変数 *myscriptsfile* から読込む。これは - | | Vim 5.xとの互換性のためだけに存在する。 *synload-4* + | | Vim 5.xとの互換性のためだけに存在する。 | | | +- 未だにファイル形式が決定できない場合、ファイルの内容を検査する。検 | 査は"getline(1) =~ pattern"のように認識できるファイル形式かどうか diff --git a/ja/usr_90.jax b/ja/usr_90.jax index b12ce8620..297146434 100644 --- a/ja/usr_90.jax +++ b/ja/usr_90.jax @@ -406,7 +406,7 @@ Q: BackSpaceキーとDeleteキーが正しく動いていないようです。 Q: 私はRedHad Linuxを使っています。システムに添付されているvimは使えますか? -bedHatのデフォルトでは最少構成のvimがインストールされています。RPMパッケージ +RedHatのデフォルトでは最少構成のvimがインストールされています。RPMパッケージ の中に"Vim-enhanced-version.rpm"といった名前のパッケージを探し、インストール してください。 From e936bd798fe485d3fb7e974726807ff0d7b2ff16 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 19 Aug 2006 17:17:43 +0000 Subject: [PATCH 036/783] fix: typo git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@36 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/arabic.jax | 2 +- ja/farsi.jax | 2 +- ja/getscript.jax | 2 +- ja/hangulin.jax | 2 +- ja/hebrew.jax | 2 +- ja/if_ole.jax | 2 +- ja/index.jax | 2 +- ja/map.jax | 2 +- ja/motion.jax | 2 +- ja/netbeans.jax | 2 +- ja/os_mint.jax | 2 +- ja/russian.jax | 2 +- ja/term.jax | 2 +- ja/undo.jax | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ja/arabic.jax b/ja/arabic.jax index 7781e6c8a..5ebda61d6 100644 --- a/ja/arabic.jax +++ b/ja/arabic.jax @@ -1,6 +1,6 @@ COMMENT: アラビア語サポート STATUS: suspend 6.3.054 -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *arabic.txt* For Vim version 6.3. Last change: 2003 May 11 diff --git a/ja/farsi.jax b/ja/farsi.jax index 5f6f02300..a42c1322a 100644 --- a/ja/farsi.jax +++ b/ja/farsi.jax @@ -2,7 +2,7 @@ COMMENT: アラビア語テキストの取り扱い方 STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -MAINTEINER: nakadaira <hopper2@nanameue.jp> +MAINTAINER: nakadaira <hopper2@nanameue.jp> *farsi.txt* For Vim version 7.0. Last change: 2005 Mar 29 diff --git a/ja/getscript.jax b/ja/getscript.jax index f297533e9..8d03d22c4 100644 --- a/ja/getscript.jax +++ b/ja/getscript.jax @@ -1,7 +1,7 @@ COMMENT: GetLatestVimScripts プラグイン STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -MAINTEINER: nakadaira <hopper2@nanameue.jp> +MAINTAINER: nakadaira <hopper2@nanameue.jp> *getscript.txt* For Vim version 7.0. Last change: 2006 Apr 30 diff --git a/ja/hangulin.jax b/ja/hangulin.jax index 736a33541..ca6b040e4 100644 --- a/ja/hangulin.jax +++ b/ja/hangulin.jax @@ -3,7 +3,7 @@ STATUS: finished 6.3.054 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *hangulin.txt* For Vim version 6.3. Last change: 2001 Sep 03 diff --git a/ja/hebrew.jax b/ja/hebrew.jax index 3bb4b684f..188882954 100644 --- a/ja/hebrew.jax +++ b/ja/hebrew.jax @@ -1,6 +1,6 @@ COMMENT: ヘブライ語サポート STATUS: suspend 6.3.054 -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *hebrew.txt* For Vim version 6.3. Last change: 2003 May 11 diff --git a/ja/if_ole.jax b/ja/if_ole.jax index 32df8f51c..66b49ea5b 100644 --- a/ja/if_ole.jax +++ b/ja/if_ole.jax @@ -2,7 +2,7 @@ COMMENT: OLEインターフェイス STATUS: finished 6.3.054 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *if_ole.txt* For Vim version 6.3. Last change: 2003 Jun 19 diff --git a/ja/index.jax b/ja/index.jax index 20c5d7735..9e579c4b8 100644 --- a/ja/index.jax +++ b/ja/index.jax @@ -2,7 +2,7 @@ COMMENT: モード別コマンドによる索引 STATUS: finished 6.3 TRANSLATOR: 小野尾隆一(nobi) <onoo@k-micro.com> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *index.txt* For Vim version 6.3. Last change: 2004 May 24 diff --git a/ja/map.jax b/ja/map.jax index e7dbac948..c8fc03078 100644 --- a/ja/map.jax +++ b/ja/map.jax @@ -2,7 +2,7 @@ COMMENT: キーマッピング STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 -MAINTEINER: 村岡太郎<koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎<koron@tka.att.ne.jp> *map.txt* For Vim version 7.0. Last change: 2006 May 03 diff --git a/ja/motion.jax b/ja/motion.jax index 08dd5dc6a..0780f041a 100644 --- a/ja/motion.jax +++ b/ja/motion.jax @@ -3,7 +3,7 @@ STATUS: finished 6.3.054 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: mm -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *motion.txt* For Vim version 6.3. Last change: 2004 May 13 diff --git a/ja/netbeans.jax b/ja/netbeans.jax index 2eae70680..3e28ee46b 100644 --- a/ja/netbeans.jax +++ b/ja/netbeans.jax @@ -1,6 +1,6 @@ COMMENT: NetBeansの外部エディタ統合機能 STATUS: suspend 6.3.054 -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *netbeans.txt* For Vim version 6.3. Last change: 2004 May 01 diff --git a/ja/os_mint.jax b/ja/os_mint.jax index dca488d5a..b8288d34d 100644 --- a/ja/os_mint.jax +++ b/ja/os_mint.jax @@ -1,7 +1,7 @@ COMMENT: OS特有情報:Atari MiNT STATUS: finished 6.3.054 TRANSLATOR: 西岡拓洋 -MAINTEINER: 村岡太郎<koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎<koron@tka.att.ne.jp> *os_mint.txt* For Vim version 6.3. Last change: 2001 Sep 03 diff --git a/ja/russian.jax b/ja/russian.jax index 8ef08f2a4..d5e5d8e75 100644 --- a/ja/russian.jax +++ b/ja/russian.jax @@ -1,6 +1,6 @@ COMMENT: ロシア語ローカライゼーションとサポート STATUS: suspend 6.3.054 -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *russian.txt* For Vim version 6.3. Last change: 2004 May 16 diff --git a/ja/term.jax b/ja/term.jax index 349f44f17..5ca3b43bd 100644 --- a/ja/term.jax +++ b/ja/term.jax @@ -1,6 +1,6 @@ COMMENT: 端末設定 STATUS: supspend 6.3.054 -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *term.txt* For Vim version 6.3. Last change: 2004 Jan 09 diff --git a/ja/undo.jax b/ja/undo.jax index 094dd74a3..b8bfb527d 100644 --- a/ja/undo.jax +++ b/ja/undo.jax @@ -2,7 +2,7 @@ COMMENT: UNDO及びREDO STATUS: finished 6.3.054 TRANSLATOR: Tomoya Takeuchi(ペンペン草) <zag97684@oak.zero.ad.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -MAINTEINER: 村岡太郎 <koron@tka.att.ne.jp> +MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *undo.txt* For Vim version 6.3. Last change: 2003 Oct 21 From 36105e9583cb475b2d82adf5f0f057ca80f926ba Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Tue, 29 Aug 2006 02:28:00 +0000 Subject: [PATCH 037/783] add vim_faq_help git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@37 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/vim_faq_help.txt | 7569 +++++++++++++++++++++++++++++++++++++++++++ guide.txt | 3 + ja/vim_faq_help.jax | 7156 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 14728 insertions(+) create mode 100644 en/vim_faq_help.txt create mode 100644 ja/vim_faq_help.jax diff --git a/en/vim_faq_help.txt b/en/vim_faq_help.txt new file mode 100644 index 000000000..edb077066 --- /dev/null +++ b/en/vim_faq_help.txt @@ -0,0 +1,7569 @@ +*vim_faq.txt* Frequently Asked Questions + +For instructions on installing this file, type > + :help add-local-help +inside Vim. + +Last updated on: 17 October 2004 + + VIM REFERENCE MANUAL by: Yegappan Lakshmanan + +Frequently Asked Questions *faq* *FAQ* + +This Vim FAQ is created from the questions and answers posted to the +vim@vim.org user mailing list and the comp.editors newsgroup. There are +several ways to solve a problem in Vim. This FAQ gives one of those several +possibilities. You can explore the other ways using the information and +links given in this FAQ. The credit for the answers in this FAQ goes to +Peppe, Benji, Charles Campbell and numerous others. + *faq-index* +INDEX + *faq-general-information* +SECTION 1 - GENERAL INFORMATION +|faq-1.1| What is Vim? +|faq-1.2| Who wrote Vim? +|faq-1.3| Is Vim compatible with Vi? +|faq-1.4| What are some of the improvements of Vim over Vi? +|faq-1.5| Is Vim free? + *faq-resources* +SECTION 2 - RESOURCES +|faq-2.1| Where can I learn more about Vim? +|faq-2.2| Is there a mailing list available? +|faq-2.3| Is there an archive available for the Vim mailing lists? +|faq-2.4| Where can I get the Vim user manual in HTML/PDF/PS format? +|faq-2.5| I have a "xyz" (some) problem with Vim. How do I determine it is a + problem with my setup or with Vim? +|faq-2.6| Where can I report bugs? +|faq-2.7| Where can the FAQ be found? +|faq-2.8| What if I don't find an answer in this FAQ? +|faq-2.9| I have a patch for implementing a Vim feature. Where do I send the + patch? +|faq-2.10| I have a Vim tip or developed a new Vim + syntax/indent/filetype/compiler plugin or developed a new script + or a colorscheme. Is there a public website where I can upload + this? + *faq-availability* +SECTION 3 - AVAILABILITY +|faq-3.1| What is the latest version of Vim? +|faq-3.2| Where can I find the latest version of Vim? +|faq-3.3| What platforms does it run on? +|faq-3.4| Where can I download the latest version of the Vim runtime files? + *faq-help* +SECTION 4 - HELP +|faq-4.1| How do I use the help files? +|faq-4.2| How do I search for a keyword in the Vim help files? +|faq-4.3| I am getting an error message E123, what did I do wrong? +|faq-4.4| Where can I read about the various modes in Vim? +|faq-4.5| How do I generate the Vim help tags file after adding a new Vim + help file? +|faq-4.6| Can I use compressed versions of the help files? + *faq-editing-a-file* +SECTION 5 - EDITING A FILE +|faq-5.1| How do I load a file in Vim for editing? +|faq-5.2| How do I save the current file in another name (save as) and edit + a new file? +|faq-5.3| How do I change the current directory to the directory of the + current file? +|faq-5.4| How do I write a file without the line feed (EOL) at the end of + the file? +|faq-5.5| How do I configure Vim to open a file at the last edited location? +|faq-5.6| When editing a file in Vim, which is being changed by an external + application, Vim opens a warning window (like the confirm dialog) + each time a change is detected. How do I disable this warning? +|faq-5.7| How do I edit a file whose name is under the cursor? +|faq-5.8| How do I reload/re-edit the current file? +|faq-5.9| How do I autosave a file periodically? +|faq-5.10| How do I open a file in read-only mode? + *faq-editing-multiple-files* +SECTION 6 - EDITING MULTIPLE FILES +|faq-6.1| How do I open multiple files at once from within Vim? +|faq-6.2| How do I switch between multiple files/buffers in Vim? +|faq-6.3| How do I open several files in Vim, with each file in a separate + window? +|faq-6.4| How do I configure Vim to autoload several files at once similar + to "work-sets" or "projects"? +|faq-6.5| Is it possible to open multiple top level windows in a single + instance of Vim similar to Nedit or emacs? +|faq-6.6| How do I browse/explore directories from within Vim? +|faq-6.7| How do I edit files over a network using ftp/scp/rcp/http? + *faq-backup* +SECTION 7 - BACKUP +|faq-7.1| When I edit and save files, Vim creates a file with the same name + as the original file and a "~" character at the end. How do I stop + Vim from creating this file (or) How do I disable the Vim backup + file feature? +|faq-7.2| How do I configure Vim to store all the backup files in a + particular directory? +|faq-7.3| When I save a file with Vim, the file permissions are changed. + How do I configure Vim to save a file without changing the file + permissions? + *faq-buffers* +SECTION 8 - BUFFERS +|faq-8.1| I have made some modifications to a buffer. How do I edit another + buffer without saving the modified buffer and also without losing + the modifications? +|faq-8.2| How do I configure Vim to auto-save a modified buffer when + switching to another buffer? +|faq-8.3| How do I replace the buffer in the current window with a blank + buffer? +|faq-8.4| Is there a keyboard shortcut to load a buffer by the buffer + number? +|faq-8.5| How do I open all the current buffers in separate windows? +|faq-8.6| How do I close (delete) a buffer without exiting Vim? +|faq-8.7| I have several buffers opened with ":e filename". How do I close + one of the buffers without exiting Vim? +|faq-8.8| When I use the command ":%bd" to delete all the buffers, not all + the buffers are deleted. Why? +|faq-8.9| How do I display the buffer number of the current buffer/file? +|faq-8.10| How do I delete a buffer without closing the window in which the + buffer is displayed? +|faq-8.11| How do I map the tab key to cycle through and open all the + buffers? + *faq-windows* +SECTION 9 - WINDOWS +|faq-9.1| What is the difference between a Vim window and a buffer? +|faq-9.2| How do I increase the width of a Vim window? +|faq-9.3| How do I zoom into or out of a window? +|faq-9.4| How do I execute an ex command on all the open buffers or open + windows or all the files in the argument list? + *faq-motion* +SECTION 10 - MOTION +|faq-10.1| How do I jump to the beginning (first line) or end (last line) of + a file? +|faq-10.2| In insert mode, when I press the <Esc> key to go to command mode, + the cursor moves one character to the left (except when the cursor + is on the first character of the line). Is it possible to change + this behavior to keep the cursor at the same column? +|faq-10.3| How do I configure Vim to maintain the horizontal cursor position + when scrolling with the <Page Up>, <Page Down>, etc keys? +|faq-10.4| Some lines in a file are more than the screen width and they are + all wrapped. When I use the j, k keys to move from one line to the + next, the cursor is moved to the next line in the file instead of + the next line on the screen. How do I move from one screen line to + the next? +|faq-10.5| What is the definition of a sentence, paragraph and section in + Vim? +|faq-10.6| How do I jump to beginning or end of a sentence, paragraph or a + section? +|faq-10.7| I have lines in a file that extends beyond the right extent of the + screen. How do I move the Vim view to the right to see the text + off the screen? +|faq-10.8| How do I scroll two or more buffers simultaneously? +|faq-10.9| When I use my arrow keys, Vim changes modes, inserts weird + characters in my document but doesn't move the cursor properly. + What's going on? +|faq-10.10| How do I configure Vim to move the cursor to the end of the + previous line, when the left arrow key is pressed and the cursor + is currently at the beginning of a line? +|faq-10.11| How do I configure Vim to stay only in insert mode (modeless + editing)? +|faq-10.12| How do I display some context lines when scrolling text? +|faq-10.13| How do I go back to previous cursor locations? + *faq-searching-text* +SECTION 11 - SEARCHING TEXT +|faq-11.1| After I searched for a text with a pattern, all the matched text + stays highlighted. How do I turn off the highlighting + temporarily/permanently? +|faq-11.2| How do I enter a carriage return character in a search pattern? +|faq-11.3| How do I search for the character ^M? +|faq-11.4| How can I search/replace characters that display as '~R', '~S', + etc.? +|faq-11.5| How do I highlight all the non-printable characters in a file? +|faq-11.6| How do I search for whole words in a file? +|faq-11.7| How do I search for the current word under the cursor? +|faq-11.8| How do I search for a word without regard to the case (uppercase + or lowercase)? +|faq-11.9| How do I search for words that occur twice consecutively? +|faq-11.10| How do I count the number of times a particular word occurs in a + buffer? +|faq-11.11| How do I place the cursor at the end of the matched word when + searching for a pattern? +|faq-11.12| How do I search for an empty line? +|faq-11.13| How do I search for a line containing only a single character? +|faq-11.14| How do I search and replace a string in multiple files? +|faq-11.15| I am using the ":s" substitute command in a mapping. When a + search for a pattern fails, the map terminates. I would like the + map to continue processing the next command, even if the + substitute command fails. How do I do this? +|faq-11.16| How do I search for the n-th occurrence of a character in a + line? +|faq-11.17| How do I replace a tab (or any other character) with a hard + return (newline) character? +|faq-11.18| How do I search for a character by its ASCII value? +|faq-11.19| How do I search for long lines? +|faq-11.20| How do I display all the lines in the current buffer that + contain a specified pattern? +|faq-11.21| How do I search for a text string that spans multiple lines? +|faq-11.22| How do I search for a pattern only within a range of lines + in a buffer? + *faq-changing-text* +SECTION 12 - CHANGING TEXT +|faq-12.1| How do I delete all the trailing white space characters (SPACE + and TAB) at the end of all the lines in a file? +|faq-12.2| How do I replace all the occurrences of multiple consecutive + space characters to a single space? +|faq-12.3| How do I reduce a range of empty lines into one line only? +|faq-12.4| How do I delete all blank lines in a file? How do I remove all + the lines containing only space characters? +|faq-12.5| How do I copy/yank the current word? +|faq-12.6| How do I yank text from one position to another position within a + line, without yanking the entire line? +|faq-12.7| When I yank some text into a register, how do I append the text + to the current contents of the register? +|faq-12.8| How do I yank a complete sentence that spans over more than one + line? +|faq-12.9| How do I yank all the lines containing a pattern into a buffer? +|faq-12.10| How do I delete all the lines in a file that does not contain a + pattern? +|faq-12.11| How do I add a line before each line with "pattern" in it? +|faq-12.12| Is there a way to operate on a line if the previous line + contains a particular pattern? +|faq-12.13| How do I execute a command on all the lines containing a + pattern? +|faq-12.14| Can I copy the character above the cursor to the current cursor + position? +|faq-12.15| How do I insert a blank line above/below the current line + without entering insert mode? +|faq-12.16| How do I insert the name of current file into the current + buffer? +|faq-12.17| How do I insert the contents of a Vim register into the current + buffer? +|faq-12.18| How do I move the cursor past the end of line and insert some + characters at some columns after the end of the line? +|faq-12.19| How to replace the word under the cursor (say: junk) with + "foojunkbar" in Vim? +|faq-12.20| How do I replace a particular text in all the files in a + directory? +|faq-12.21| I have some numbers in a file. How do I increment or decrement + the numbers in the file? +|faq-12.22| How do I reuse the last used search pattern in a ":substitute" + command? +|faq-12.23| How do I change the case of a string using the ":substitute" + command? +|faq-12.24| How do I enter characters that are not present in the keyboard? +|faq-12.25| Is there a command to remove any or all digraphs? +|faq-12.26| In insert mode, when I press the backspace key, it erases only + the characters entered in this instance of insert mode. How do I + erase previously entered characters in insert mode using the + backspace key? +|faq-12.27| I have a file which has lines longer than 72 characters + terminated with "+" and wrapped to the next line. How can I + quickly join the lines? +|faq-12.28| How do I paste characterwise yanked text into separate lines? +|faq-12.29| How do I change the case (uppercase, lowercase) of a word or + a character or a block of text? +|faq-12.30| How do I enter ASCII characters that are not present in the + keyboard? +|faq-12.31| How do I replace non-printable characters in a file? +|faq-12.32| How do I remove duplicate lines from a buffer? +|faq-12.33| How do I prefix all the lines in a file with the corresponding + line numbers? +|faq-12.34| How do I exchange (swap) two characters or words or lines? + *faq-completion-in-insert-mode* +SECTION 13 - COMPLETION IN INSERT MODE +|faq-13.1| How do I complete words or lines in insert mode? +|faq-13.2| How do I complete file names in insert mode? +|faq-13.3| I am using CTRL-P/CTRL-N to complete words in insert mode. How do + I complete words that occur after the just completed word? + *faq-text-formatting* +SECTION 14 - TEXT FORMATTING +|faq-14.1| How do I format a text paragraph so that a new line is inserted + at the end of each wrapped line? +|faq-14.2| How do I format long lines in a file so that each line contains + less than 'n' characters? +|faq-14.3| How do I join short lines to the form a paragraph? +|faq-14.4| How do I format bulleted and numbered lists? +|faq-14.5| How do I indent lines in insert mode? +|faq-14.6| How do I format/indent an entire file? +|faq-14.7| How do I increase or decrease the indentation of the current + line? +|faq-14.8| How do I indent a block/group of lines? +|faq-14.9| When I indent lines using the > or < key, the standard 8-tabstops + are used instead of the current 'tabstop' setting. Why? +|faq-14.10| How do I turn off the automatic indentation of text? +|faq-14.11| How do I configure Vim to automatically set the 'textwidth' + option to a particular value when I edit mails? +|faq-14.12| Is there a way to make Vim auto-magically break lines? +|faq-14.13| I am seeing a lot of ^M symbols in my file. I tried setting the + 'fileformat' option to 'dos' and then 'unix' and then 'mac'. + None of these helped. How can I hide these symbols? +|faq-14.14| When I paste some text into a Vim buffer from another + application, the alignment (indentation) of the new text is + messed up. How do I fix this? +|faq-14.15| When there is a very long wrapped line (wrap is "on") and a line + doesn't fit entirely on the screen it is not displayed at all. + There are blank lines beginning with '@' symbol instead of + wrapped line. If I scroll the screen to fit the line the '@' + symbols disappear and the line is displayed again. What Vim + setting control this behavior? +|faq-14.16| How do I convert all the tab characters in a file to space + characters? +|faq-14.17| What Vim options can I use to edit text that will later go to a + word processor? + *faq-visual-mode* +SECTION 15 - VISUAL MODE +|faq-15.1| How do I do rectangular block copying? +|faq-15.2| How do I delete or change a column of text in a file? +|faq-15.3| How do I apply an ex-command on a set of visually selected lines? +|faq-15.4| How do I execute an ex command on a column of text selected in + Visual block mode? +|faq-15.5| How do I select the entire file in visual mode? +|faq-15.6| When I visually select a set of lines and press the > key to + indent the selected lines, the visual mode ends. How can I + reselect the region for further operation? (or) How do I + re-select the last selected visual area again? +|faq-15.7| How do I jump to the beginning/end of a visually selected region? +|faq-15.8| When I select text with mouse and then press : to enter an ex + command, the selected text is replaced with the : character. How + do I execute an ex command on a text selected using the mouse + similar to the text selected using the visual mode? +|faq-15.9| When I select a block of text using the mouse, Vim goes into + selection mode instead of Visual mode. Why? + *faq-command-line-mode* +SECTION 16 - COMMAND-LINE MODE +|faq-16.1| How do I use the name of the current file in the command mode or + an ex command line? +|faq-16.2| How do I edit the text in the Vim command-line effectively? +|faq-16.3| How do I switch from Vi mode to Ex mode? +|faq-16.4| How do I copy the output from an ex-command into a buffer? +|faq-16.5| When I press the tab key to complete the name of a file in the + command mode, if there are more than one matching file names, + then Vim completes the first matching file name and displays a + list of all matching filenames. How do I configure Vim to only + display the list of all the matching filenames and not complete + the first one? +|faq-16.6| How do I copy text from a buffer to the command line and from the + command line to a buffer? +|faq-16.7| How do I put a command onto the command history without executing + it? +|faq-16.8| How do I increase the height of the command-line? + *faq-viminfo* +SECTION 17 - VIMINFO +|faq-17.1| When I invoke Vim, I get error messages about illegal characters + in the viminfo file. What should I do to get rid of these + messages? +|faq-17.2| How do I disable the viminfo feature? +|faq-17.3| How do I save and use Vim marks across Vim sessions? + *faq-remote-editing* +SECTION 18 - REMOTE EDITING +|faq-18.1| How do I open a file with existing instance of gvim? What + happened to the Vim 5.x OpenWithVim.exe and SendToVim.exe files? +|faq-18.2| How do I send a command to a Vim server to write all buffers to + disk? +|faq-18.3| Where can I get the documentation about the Vim remote server + functionality? + *faq-options* +SECTION 19 - OPTIONS +|faq-19.1| How do I configure Vim in a simple way? +|faq-19.2| How do I toggle the value of an option? +|faq-19.3| How do I set an option that affects only the current + buffer/window? +|faq-19.4| How do I use space characters for a Vim option value? +|faq-19.5| Can I add (embed) Vim option settings to the contents of a file? +|faq-19.6| How do I display the line numbers of all the lines in a file? +|faq-19.7| How do I change the width of the line numbers displayed using the + "number" option? +|faq-19.8| How do I display (view) all the invisible characters like space, + tabs and newlines in a file? +|faq-19.9| How do I configure Vim to always display the current line and + column number? +|faq-19.10| How do I display the current Vim mode? +|faq-19.11| How do I configure Vim to show pending/partial commands on the + status line? +|faq-19.12| How do I configure the Vim status line to display different + settings/values? +|faq-19.13| How do I configure Vim to display status line always? +|faq-19.14| How do I make a Vim setting persistent across different Vim + invocations/instances/sessions? +|faq-19.15| Why do I hear a beep (why does my window flash) about 1 second + after I hit the Escape key? +|faq-19.16| How do I make the 'c' and 's' commands display a '$' instead of + deleting the characters I'm changing? +|faq-19.17| How do I remove more than one flag using a single ":set" command + from a Vim option? + *faq-mapping-keys* +SECTION 20 - MAPPING KEYS +|faq-20.1| How do I know what a key is mapped to? +|faq-20.2| How do list all the user-defined key mappings? +|faq-20.3| How do I unmap a key? +|faq-20.4| I am not able to create a mapping for the <xxx> key. What is + wrong? +|faq-20.5| How do I map the numeric keypad keys? +|faq-20.6| How do I create a mapping that works only in visual mode? +|faq-20.7| In a Vim script, how do I know which keys to use for my mappings, + so that the mapped key will not collide with an already used key? +|faq-20.8| How do I map the escape key? +|faq-20.9| How do I map a key to perform nothing? +|faq-20.10| I want to use the Tab key to indent a block of text and + Shift-Tab key to unindent a block of text. How do I map the keys + to do this? This behavior is similar to textpad, visual studio, + etc. +|faq-20.11| In my mappings the special characters like <CR> are not + recognized. How can I configure Vim to recognize special + characters? +|faq-20.12| How do I use the '|' to separate multiple commands in a map? +|faq-20.13| If I have a mapping/abbreviation whose ending is the beginning of + another mapping/abbreviation, how do I keep the first from + expanding into the second one? +|faq-20.14| Why does it take a second or more for Vim to process a key, + sometimes when I press a key? +|faq-20.15| How do I map a key to run an external command using a visually + selected text? +|faq-20.16| How do I map the Ctrl-I key while still retaining the + functionality of the <Tab> key? + *faq-abbreviations* +SECTION 21 - ABBREVIATIONS +|faq-21.1| How do I auto correct misspelled words? +|faq-21.2| How do I create multi-line abbreviations? +|faq-21.3| When my abbreviations are expanded, an additional space character + is added at the end of the expanded text. How do I avoid this + character? +|faq-21.4| How do I insert the current date/time stamp into the file? +|faq-21.5| How do I prevent an abbreviation from expanding in insert mode? + *faq-record-and-playback* +SECTION 22 - RECORD AND PLAYBACK +|faq-22.1| How do I repeat an editing operation (insertion, deletion, paste, + etc)? +|faq-22.2| How I record and repeat a set of key sequences? +|faq-22.3| How do I edit/modify a recorded set of key sequences? +|faq-22.4| How do I write recorded key sequences to a file? +|faq-22.5| I am using register 0 to record my key sequences (i.e. q0 .... + q). In the recorded key sequences, I am yanking some text. After + the first replay of the recorded key sequence, I am no longer + able to play it back. + *faq-autocommands* +SECTION 23 - AUTOCOMMANDS +|faq-23.1| How do I execute a command when I try to modify a read-only file? +|faq-23.2| How do I execute a command every time when entering a buffer? +|faq-23.3| How do I execute a command every time when entering a window? +|faq-23.4| From an autocmd, how can I determine the name of the file or the + buffer number for which the autocommand is executed? +|faq-23.5| How do I automatically save all the changed buffers whenever Vim + loses focus? +|faq-23.6| How do I execute/run a function when Vim exits to do some + cleanup? + *faq-syntax-highlight* +SECTION 24 - SYNTAX HIGHLIGHT +|faq-24.1| How do I turn off/on syntax highlighting? +|faq-24.2| How do I change the background and foreground colors used by Vim? +|faq-24.3| How do I change the highlight colors to suit a dark/light + background? +|faq-24.4| How do I change the color of the line numbers displayed when the + ":set number" command is used? +|faq-24.5| How do I change the background color used for a Visually selected + block? +|faq-24.6| How do I highlight the special characters (tabs, trailing spaces, + end of line, etc) displayed by the 'list' option? +|faq-24.7| How do I specify a colorscheme in my .vimrc/.gvimrc file, so that + Vim uses the specified colorscheme everytime? +|faq-24.8| Vim syntax highlighting is broken. When I am editing a file, some + parts of the file is not syntax highlighted or syntax highlighted + incorrectly. +|faq-24.9| Is there a built-in function to syntax-highlight the + corresponding matching bracket? +|faq-24.10| How do I turn off the C comment syntax highlighting? +|faq-24.11| How do I add my own syntax extensions to the standard syntax + files supplied with Vim? +|faq-24.12| How do I replace a standard syntax file that comes with the Vim + distribution with my own syntax file? +|faq-24.13| How do I highlight all the characters after a particular column? +|faq-24.14| How do I convert a source file (.c, .h, etc) with the Vim syntax + highlighting into a HTML file? +|faq-24.15| How do I list the definition of all the current highlight + groups? + *faq-vim-script-writing* +SECTION 25 - VIM SCRIPT WRITING +|faq-25.1| How do I list the names of all the scripts sourced by Vim? +|faq-25.2| How do I debug Vim scripts? +|faq-25.3| How do I locate the script/plugin which sets a Vim option? +|faq-25.4| I am getting some error/informational messages from Vim (possibly + when running a script), the messages are cleared immediately. How + do I display the messages again? +|faq-25.5| How do I save and restore a plugin specific information across + Vim invocations? +|faq-25.6| How do I start insert mode from a Vim function? +|faq-25.7| How do I change the cursor position from within a Vim function? +|faq-25.8| How do I check the value of an environment variable in the .vimrc + file? +|faq-25.9| How do I check whether an environment variable is set or not from + a Vim function? +|faq-25.10| How do I call/use the Vim built-in functions? +|faq-25.11| I am using some normal mode commands in my Vim script. How do I + avoid using the user-defined mappings for these normal mode + commands and use the standard Vim functionality for these normal + mode commands? +|faq-25.12| How do I get a visually selected text into a Vim variable or + register? +|faq-25.13| I have some text in a Vim variable 'myvar'. I would like to use + this variable in a ":s" substitute command to replace a text + 'mytext'. How do I do this? +|faq-25.14| A Vim variable (bno) contains a buffer number. How do I use this + variable to open the corresponding buffer? +|faq-25.15| How do I store the value of a Vim option into a Vim variable? +|faq-25.16| I have copied and inserted some text into a buffer from a Vim + function. How do I indent the inserted text from the Vim + function? +|faq-25.17| How do I get the character under the cursor from a Vim script? +|faq-25.18| How do I get the name of the current file without the extension? +|faq-25.19| How do I get the basename of the current file? +|faq-25.20| How do I get the output from a Vim function into the current + buffer? +|faq-25.21| How do I call external programs from a Vim function? +|faq-25.22| How do I get the return status of a program executed using the + ":!" command? +|faq-25.23| How do I determine whether the current buffer is modified or + not? +|faq-25.24| I would like to use the carriage return character in a normal + command from a Vim script. How do I specify the carriage return + character? +|faq-25.25| How do I split long lines in a Vim script? +|faq-25.26| When I try to "execute" my function using the "execute 'echo + Myfunc()'" command, the cursor is moved to the top of the + current buffer. Why? +|faq-25.27| How do I source/execute the contents of a register? +|faq-25.28| After calling a Vim function or a mapping, when I press the 'u' + key to undo the last change, Vim undoes all the changes made by + the mapping/function. Why? +|faq-25.29| How can I call a function defined with s: (script local + function) from another script/plugin? +|faq-25.30| Is it possible to un-source a sourced script? In otherwords, + reverse all the commands executed by sourcing a script. + *faq-plugins* +SECTION 26 - PLUGINS +|faq-26.1| How do I set different options for different types of files? +|faq-26.2| I have downloaded a Vim plugin or a syntax file or a indent file, + or a color scheme or a filetype plugin from the web. Where should + I copy these files so that Vim will find them? +|faq-26.3| How do I extend an existing filetype plugin? +|faq-26.4| How do I turn off loading the Vim plugins? +|faq-26.5| How do I turn on/off loading the filetype plugins? +|faq-26.6| How do I override settings made in a file type plugin in the + global ftplugin directory for all the file types? +|faq-26.7| How do I disable the Vim directory browser plugin? +|faq-26.8| How do I set the filetype option for files with names matching a + particular pattern or depending on the file extension? + *faq-editing-program-files* +SECTION 27 - EDITING PROGRAM FILES +|faq-27.1| How do I enable automatic indentation for C/C++ files? +|faq-27.2| How do I configure the indentation used for C/C++ files? +|faq-27.3| How do I turn off the automatic indentation feature? +|faq-27.4| How do I change the number of space characters used for the + automatic indentation? +|faq-27.5| I am editing a C program using Vim. How do I display the + definition of a macro or a variable? +|faq-27.6| I am editing a C program using Vim. How do I jump to the + beginning or end of a code block from within the block? +|faq-27.7| Is there a way to turn off the "//" comment auto-insertion + behavior for C++ files? If I'm sitting on a line beginning with + "//", then I open a new line above or below it, Vim automatically + inserts new "//" chars. +|faq-27.8| How do I add the comment character '#' to a set of lines at the + beginning of each line? +|faq-27.9| How do I edit a header file with the same name as the + corresponding C source file? +|faq-27.10| How do I automatically insert comment leaders while typing + comments? + *faq-quickfix* +SECTION 28 - QUICKFIX +|faq-28.1| How do I build programs from Vim? +|faq-28.2| When I run the make command in Vim I get the errors listed as the + compiler compiles the program. When it finishes this list + disappears and I have to use the :clist command to see the error + message again. Is there any other way to see these error + messages? + *faq-folding* +SECTION 29 - FOLDING +|faq-29.1| How do I extend the Vim folding support? +|faq-29.2| When I enable folding by setting the 'foldmethod' option, all the + folds are closed. How do I prevent this? +|faq-29.3| How do I control how many folds will be opened when I start + editing a file? +|faq-29.4| How do I open and close folds using the mouse? +|faq-29.5| How do I change the text displayed for a closed fold? +|faq-29.6| How do I store and restore manually created folds across + different Vim invocations? + *faq-vim-with-external-applications* +SECTION 30 - VIM WITH EXTERNAL APPLICATIONS +|faq-30.1| Can I run a shell inside a Vim window? +|faq-30.2| How do I pass the word under the cursor to an external command? +|faq-30.3| How do I get the output of a shell command into a Vim buffer? +|faq-30.4| How do I pipe the contents of the current buffer to an external + command and replace the contents of the buffer with the output + from the command? +|faq-30.5| How do I sort a section of my file? +|faq-30.6| Is there a step-by-step guide for using Vim with slrn? +|faq-30.7| How do I use Vim as a pager? +|faq-30.8| How do I view Unix man pages from inside Vim? +|faq-30.9| How do I change the diff command used by the Vim diff support? +|faq-30.10| How do I use the Vim diff mode without folding? + *faq-gui-vim* +SECTION 31 - GUI VIM +|faq-31.1| How do I create buffer specific menus? +|faq-31.2| How do I change the font used by GUI Vim? +|faq-31.3| When starting GUI Vim, how do I specify the location of the GVIM + window? +|faq-31.4| How do I add a horizontal scrollbar in GVim? +|faq-31.5| How do I make the scrollbar appear in the left side by default? +|faq-31.6| How do I remove the Vim menubar? +|faq-31.7| I am using GUI Vim. When I press the ALT key and a letter, the + menu starting with that letter is selected. I don't want this + behavior as I want to map the ALT-<key> combination. How do I do + this? +|faq-31.8| Is it possible to scroll the text by dragging the scrollbar so + that the cursor stays in the original location? +|faq-31.9| How do I get gvim to start browsing files in a particular + directory when using the ":browse" command? +|faq-31.10| For some questions, like when a file is changed outside of Vim, + Vim displays a GUI dialog box. How do I replace this GUI dialog + box with a console dialog box? +|faq-31.11| I am trying to use GUI Vim as the editor for my xxx application. + When the xxx application launches GUI Vim to edit a file, the + control immediately returns to the xxx application. How do I + start GUI Vim, so that the control returns to the xxx + application only after I quit Vim? +|faq-31.12| Why does the "Select Font" dialog doesn't show all the fonts + installed in my system? +|faq-31.13| How do I use the mouse in Vim command-line mode? +|faq-31.14| When I use the middle mouse button to scroll text, it pastes the + last copied text. How do I disable this behavior? +|faq-31.15| How do I change the location and size of a GUI Vim window? + *faq-vim-on-unix* +SECTION 32 - VIM ON UNIX +|faq-32.1| I am running Vim in a xterm. When I press the CTRL-S key, Vim + freezes. What should I do now? +|faq-32.2| I am seeing weird screen update problems in Vim. What can I do to + solve this screen/display update problems? +|faq-32.3| I am using the terminal/console version of Vim. In insertmode, + When I press the backspace key, the character before the cursor + is not erased. How do I configure Vim to do this? +|faq-32.4| I am using Vim in a xterm. When I quit Vim, the screen contents + are restored back to the original contents. How do I disable + this? +|faq-32.5| When I start Vim, it takes quite a few seconds to start. How do I + minimize the startup time? +|faq-32.6| How can I make the cursor in gvim in unix stop blinking? +|faq-32.7| How do I change the menu font on GTK Vim? +|faq-32.8| How do I prevent <Ctrl-Z> from suspending Vim? +|faq-32.9| When I kill the xterm running Vim, the Vim process continues to + run and takes up a lot of CPU (99%) time. Why is this happening? +|faq-32.10| How do I get the Vim syntax highlighting to work in a Unix + terminal? + *faq-vim-on-ms-windows* +SECTION 33 - VIM ON MS-WINDOWS +|faq-33.1| In MS-Windows, CTRL-V doesn't start the blockwise visual mode. + What happened? +|faq-33.2| When I press the CTRL-Y key, it acts like the CTRL-R key. How do + I configure Vim to treat CTRL-Y as CTRL-Y? +|faq-33.3| How do I start GUI Vim in a maximized window always? +|faq-33.4| After doing some editing operations, Vim freezes. The cursor + becomes an empty rectangle. I am not able enter any characters. + What is happening? +|faq-33.5| I am using Windows XP, the display speed of maximized GVim is + very slow. What can I do to speed the display updates? +|faq-33.6| What are the recommended settings for using Vim with cygwin? +|faq-33.7| I am trying to use GNU diff with Vim diff mode. When I run the + diff from command line, it works. When I try to use the diff with + Vim it doesn't work. What should I do now? +|faq-33.8| Is it possible to use Vim as an external editor for MS-Windows + Outlook email client? +|faq-33.9| I am using Vim to edit HTML files. How do I start internet + explorer with the current file to preview the HTML file? +|faq-33.10| I would like to use Vim with Microsoft Visual Studio. How do I + do this? +|faq-33.11| Where do I place the _vimrc and _gvimrc files? +|faq-33.12| Everytime I save a file, Vim warns about the file being changed + outside of Vim. Why? + *faq-printing* +SECTION 34 - PRINTING +|faq-34.1| How do I print a file along with line numbers for all the lines? +|faq-34.2| How do I print a file with the Vim syntax highlighting colors? + *faq-building-vim-from-source* +SECTION 35 - BUILDING VIM FROM SOURCE +|faq-35.1| How do I build Vim from the sources on a Unix system? +|faq-35.2| How do I install Vim in my home directory or a directory other + than the default installation directory in Unix? +|faq-35.3| How do I build Vim from the sources on a MS-Windows system? +|faq-35.4| The Vim help, syntax, indent files are missing from my Vim + installation. How do I install these files? +|faq-35.5| I have built Vim from the source and installed the Vim package + using "make install". Do I need to keep the Vim source directory? +|faq-35.6| How do I determine the Vim features which are enabled at compile + time? +|faq-35.7| Can I build Vim without the GUI support? +|faq-35.8| When building Vim on a Unix system, I am getting "undefined + reference to term_set_winsize' error. How do I resolve this + error? +|faq-35.9| Vim configure keeps complaining about the lack of gtk-config + while trying to use GTK 2.03. This is correct, since in GTK 2 + they moved to using the generic pkg-config. I can get pkg-config + to list the various includes and libs for gtk, but for some + reason the configure script still isn't picking this up. + *faq-various* +SECTION 36 - VARIOUS +|faq-36.1| How do I edit binary files with Vim? +|faq-36.2| How do I disable the visual error flash and the error beep? +|faq-36.3| How do I display the ascii value of a character displayed in a + buffer? +|faq-36.4| Can I use zero as a count for a Vim command? +|faq-36.5| How do I disable the Vim welcome screen? +|faq-36.6| How do I avoid the "hit enter to continue" prompt? +|faq-36.7| How do I invoke Vim from command line to run a group of commands + on a group of files? +|faq-36.8| How do I use a normal mode command from insert mode without + leaving the insert mode? + *faq-unicode* +SECTION 37 - UNICODE +|faq-37.1| Is it possible to create Unicode files using Vim? +|faq-37.2| Which Vim settings are particularly important for editing Unicode + files? +|faq-37.3| What is the 'encoding' option? +|faq-37.4| How does Vim name the various Unicode encodings? +|faq-37.5| How does Vim specify the presence or absence of a byte-order + mark? +|faq-37.6| What is the 'fileencoding' option? +|faq-37.7| What is the 'fileencodings' option? +|faq-37.8| What is the 'termencoding' option? +|faq-37.9| What is the 'bomb' option? +|faq-37.10| Where can I find an example of a typical use of all these + options? +|faq-37.11| How can I insert Unicode characters into a file using Vim? +|faq-37.12| How can I know which digraphs are defined and for which + characters? + +============================================================================= + *faq-1* +SECTION 1 - GENERAL INFORMATION + + *faq-1.1* +1.1. What is Vim? + +Vim stands for Vi IMproved. It used to be Vi IMitation, but there are so +many improvements that a name change was appropriate. Vim is a text editor +which includes almost all the commands from the Unix program "Vi" and a lot +of new ones. All commands can be given with the keyboard. This has the +advantage that you can keep your fingers on the keyboard and your eyes on +the screen. For those who want it, there is mouse support and a GUI version +with scrollbars and menus. + +Vim is an editor, not a word processor. A word processor is used mainly to +do layout of text. This means positioning it, changing the way it appears +on output. More often than not, the final document is meant to be printed +or typeset or what have you, in order to present it in a pleasing manner to +others. Examples of word processors are Microsoft Word, WordPerfect, +FrameMaker, and AmiPro. + +An editor is simply for entering text. Any typesetting or laying out of the +document is secondary. With an editor, one's main concern is entering text, +not making the text look good. Examples of editors other than Vim and Vi +are Emacs, Crisp, Brief, and xedit. And Notepad. + +For more information, read > + + :help intro +< + *faq-1.2* +1.2. Who wrote Vim? + +Most of Vim was written by Bram Moolenar, with contributions from too many +people to mention here. See ":h credits" for a complete list. + +Vim is based on Stevie, worked on by Tim Thompson, Tony Andrews and G.R. +(Fred) Walter. + +For more information, read > + + :help author +< + *faq-1.3* +1.3. Is Vim compatible with Vi? + +Yes. Vim is very much compatible with Vi. You can use the "-C" +command-line flag to start Vim in Vi compatible mode: > + + $ vim -C +< +You can also use: > + + $ vim -u NONE +< +You can also set the 'compatible' option to enable Vi compatibility: > + + :set compatible +< +For more information, read > + + :help -C + :help 'compatible' + :help compatible-default +< + *faq-1.4* +1.4. What are some of the improvements of Vim over Vi? + +A short summary of the improvements of Vim over vi is listed below. The +list shows that Vim is a thoroughly modern and feature-packed editor. +Standard features of modern editors are implemented, and there is an equal +emphasis on general power-user features and features for programmers. + +Features to modernise Vi: + + Multi-level undo + Allows you to set the number of times you can undo your changes in a + file buffer. You can also redo an undone change. + Multiple windows and buffers + Each file can be displayed in its own window. You can move easily from + one window to another. Each file opened during a Vim session also has + an associated buffer and you can easily jump from one to the other. + Flexible insert mode + Vim allows you to use the arrow keys while in insert mode to move + around in the file. No more hitting <Esc>, moving around, then hitting + `i' or `a'. + Macros + Vim has a facility which allows you to record a sequence of typed + characters and repeat them any number of times. + Visual mode + You can highlight sections of text and execute operations on this + section of text only. + Block operators + Allow selection and highlighting of rectangular blocks of text in + order do execute specific operations on them. + Online help system + You can easily find help on any aspect of using Vim. Help is displayed + in its own window. + Command-line editing and history + History allows you to use the arrow keys to repeat or search for a + command that has already been typed. Allows you to match the beginning + of a command with the beginning of another similar command in the + history buffer. You can also edit a command to correct typos or change + a few values. + Command line completion. + Using the <Tab> key, you can complete commands, options, filenames, + etc. as needed. + Horizontal scrolling. + Long lines can be scrolled horizontally (with or without the GUI). + +Advanced user features: + + Text formatting. + With two keystrokes, you can format large sections of text, without + the use of external programs. + Word completion in Insert mode + Vim can complete words while you are typing, by matching the current + word with other similar words in the file. + Jump tags + Just like in an internet browser, you can jump back to previous parts + of the text you were editing, and then forward again. Your brain is + thus free to edit instead of navigate. + Automatic commands + Commands automatically executed when reading or writing a file, + jumping to another buffer, etc. + Viminfo + Allows storing of the command line history, marks and registers in a + file to be read on startup. Therefore, you can recall old search + patterns, macros, etc., in a new Vim session. + Mouse support + The mouse is supported in an xterm and for MS-DOS. It can be used to + position the cursor, select the visual area, paste a register, etc. + Graphical User Interface (GUI) + Just like any modern editor. Also, it's very easy to add your own + menus. Of course, console vim is still supported, and very widely + used. + Scripting language + Vim has a powerful scripting language so new commands can be created. + You can also use Perl, Python, TCL and Ruby to achieve the same thing! + Plugins + Extra functionality implemented via vim commands (regular commands or + the scripting language) that is automatically loaded on startup. + Examples: file explorer, network editing. More are being developed + and shared on VimOnline all the time. + Syntax highlighting for many programming languages + Syntax highlighting for hundreds of programming languages is + supported. Support for others can be added. + Extended regular expressions + Vim supports extended regular expressions which are similar in + functionality to that of perl regular expressions. + +Programming performance features: + + Edit-compile-edit speedup + You can compile within Vim and automatically jump to the location of + errors in the source code. + Indenting for many programming languages + C, C++, Java, Perl, XML and many other languages can be automatically + indented by vim while you type. Support for others can be added. + Searching for words in include files + Vim allows you to search for a match of the word under the cursor in + the current and included files. + Advance text objects + Instantly select, or delete, or copy, or indent, or format, or change + case, or ... to all the text between ( and ), or { and }, or < and >, + or [ and ]. Or a word, sentence, or paragraph. Very powerful. + Folding + Certain parts of the text can be "folded" away. The best example is + the body of a function. You can get an overview of the code, and then + open the fold of the function whose detail you need to see. + ctags and cscope integration + Using these two powerful programs, you can jump to a definition of a + function from a calling instance of it, and use other tricks to + navigate source code. + +For more information, read > + + :help vi-differences +< + *faq-1.5* +1.5. Is Vim free? + +Vim is Charityware. There are no restrictions on using or copying Vim, but +the author encourages you to make a donation to charity. A document +explaining how to do so is included in the distribution. + +For more information, read > + + :help copyright +< + +============================================================================= + *faq-2* +SECTION 2 - RESOURCES + + *faq-2.1* +2.1. Where can I learn more about Vim? + +You can post your Vim questions to the vim@vim.org mailing list. You can +post your Vim development related questions to the vim-dev@vim.org mailing +list. Vim does not have a newsgroup of its own. But the appropriate +newsgroup to post to is comp.editors. + +"VimOnline" is a web page that serves as a de facto homepage for vim, +although the main purpose of it is to gather tips and scripts from +everywhere. Get involved! The URL is vim.sourceforge.net or vim.sf.net. + +Finally, read the Vi FAQ: > + + http://www.faqs.org/faqs/editor-faq/vi/part1/index.html +< +For more information, read > + + :help mail-list + :help internet +< + *faq-2.2* +2.2. Is there a mailing list available? + +There are several: > + + NAME DESCRIPTION +< + vim-announce Announcements of new releases + vim General discussion + vim-dev Patches, bug reports, development discussions + vim-mac Macintosh discussion + vim-fr General discussion in French + vim-multibyte Multibyte development issues + vim-vms Development on VMS + +Of these, only vim and vim-dev are of general interest. vim-announce is +read-only to most people, and its messages are sent to the other lists as +well. The remaining four are very low volume. + +To subscribe: send an email to <NAME>-subscribe@vim.org +To unsubscribe: send an email to <NAME>-unsubscribe@vim.org +To get help: send an email to <NAME>-help@vim.org + + *faq-2.3* +2.3. Is there an archive available for the Vim mailing lists? + +Yes. Visit http://www.yahoogroups.com/list/<name>, where name is one of: +vimannounce, vim, vimdev, vim-fr, vim-mac, vim-multibyte, vim-vms. + +Alternatively, visit www.gmane.org to find out about GMANE, which allows +you to access the mailing lists as though they were newsgroups. This +offers some convenience to those who wish to browse the history or casually +observe the current threads. + + *faq-2.4* +2.4. Where can I get the Vim user manual in HTML/PDF/PS format? + +You can download the HTML/PDF/PS format of the Vim user manual from: > + + http://vimdoc.sourceforge.net/ +< + *faq-2.5* +2.5. I have a "xyz" (some) problem with Vim. How do I determine it is a + problem with my setup or with Vim? + +First, you have to determine that the problem is not with your .vimrc or +.gvimrc or system vimrc or your personal plugin files or in any of your +setup files. To do this, use > + + $ vim -N -u NONE -U NONE +< +This will start Vim in 'nocompatible" mode and will not source your +personal .vimrc and .gvimrc files. It will also not load your personal +plugins. In this invocation of Vim, try to reproduce your problem. If you +are not able to reproduce the problem, then the problem is related to some +setting in one of your local setup files or plugins. To locate the problem +in your setup files, you have to use trial and error and try commenting out +the lines in your setup files one by one. You can also use the -V command +line argument to Vim to get more debug information and analyze the problem: > + + $ vim -V2 +< +You can increase the value passed to the -V argument to get more debug +information. + +For more information, read > + + :help -u + :help -U + :help -N + :help -V + :help 'verbose' + :help :verbose + :help set-verbose +< + *faq-2.6* +2.6. Where can I report bugs? + +First collect the required information using the following command: > + + :source $VIMRUNTIME/bugreport.vim +< +Now send the resulting text from the above command to the bugs@vim.org +e-mail address. + +The Vim Development mailing list (see above) is a good place to discuss +general bugs. If the bug you find is with syntax highlighting or some +other "added feature" (i.e. not directly programmed into vim), attempt to +inform the maintainer of that feature. + +For more information, read > + + :help bug-reports +< + *faq-2.7* +2.7. Where can the FAQ be found? + +The FAQ can be found at VimOnline (vim.sf.net). Other places will be +decided in the future. + + *faq-2.8* +2.8. What if I don't find an answer in this FAQ? + +This FAQ covers mainly Vim-specific questions. You may find more +information suitable for most Vi clones by reading the Vi FAQ. It is posted +regularly on comp.editors. You can also find a copy at > + + http://www.faqs.org/faqs/editor-faq/vi/part1/index.html +< +Also, since Vim has gathered so many features in the last few years, +successfully documenting the frequently asked questions here is a +near-impossible task. To make it possible, please email the maintainer if +you have a good question. A good question is one that you've tried to +answer yourself (remember, Vim has great documentation) but struggled. + + *faq-2.9* +2.9. I have a patch for implementing a Vim feature. Where can I send this + patch? + +You can send your patches to the Vim developer mailing list +vim-dev@vim.org. + +For more information, read > + + :help vim-dev +< + *faq-2.10* +2.10. I have a Vim tip or developed a new Vim + syntax/indent/filetype/compiler plugin or developed a new script or a + colorscheme. Is there a public website where I can upload this? + +Yes. You can use the Vim Online website to upload your plugins/scripts, +colorschemes, tips, etc. The site is at http://vim.sourceforge.net + +============================================================================= + *faq-3* +SECTION 3 - AVAILABILITY + + *faq-3.1* +3.1. What is the latest version of Vim? + +The latest version of Vim is 6.3 released on 8th June 2004. + +The release-history of different versions of Vim is below: + +Version 6.3 8th June 2004 +Version 6.2 1st June 2003 +Version 6.1 24th March 2002 +Version 6.0 27th September, 2001 +Version 5.8 31st May, 2001 +Version 5.7 24th June, 2000 +Version 5.6 16th January, 2000 +Version 5.5 21st September, 1999 +Version 5.4 26th July, 1999 +Version 5.3 31st August, 1998 +Version 5.2 24th August, 1998 +Version 5.1 7th April, 1998 +Version 5.0 19th February, 1998 +Version 4.6 13th March,1997 +Version 4.5 17th October, 1996 +Version 4.2 5th July,1996 +Version 4.0 21st May, 1996 +Version 3.0 16th August, 1994 +Version 2.0 21st December, 1993 +Version 1.27 23rd April, 1993 +Version 1.17 21st April, 1992 + + *faq-3.2* +3.2. Where can I find the latest version of Vim? + +You can download the sources for the latest version of Vim from the +VimOnline website. The URL for this site is +http://vim.sourceforge.net/download.php. + + *faq-3.3* +3.3. What platforms does it run on? + +All Unix platforms. +All Windows platforms. +Amiga, Atari, BeOS, DOS, Macintosh, MachTen, OS/2, RiscOS, VMS. + + *faq-3.4* +3.4. Where can I download the latest version of the Vim runtime files? + +You can download the latest version of the Vim runtime files (syntax files, +filetype plugins, compiler files, color schemes, documentation, indentation +files and keymaps) from the Vim ftp site from the +ftp://ftp.vim.org/pub/vim/runtime directory. + +============================================================================= + *faq-4* +SECTION 4 - HELP + + *faq-4.1* +4.1. How do I use the help files? + +Help can be found for all functions of Vim. In order to use it, use the +":help" command. This will bring you to the main help page. On that first +page, you will find explanations on how to move around. Basically, you move +around in the help pages the same way you would in a read-only document. +You can jump to specific subjects by using tags. This can be done in two +ways: + + * Use the "<Ctrl-]>" command while standing on the name of a command or + option. This only works when the tag is a keyword. "<Ctrl-LeftMouse>" + and "g<LeftMouse>" work just like "<Ctrl-]>". + * use the ":tag <subject>" command. This works with all characters. + +Use "<Ctrl-T>" to jump back to previous positions in the help files. Use +":q" to close the help window. + +If you want to jump to a specific subject on the help pages, use ":help +{subject}". If you don't know what to look for, try ":help index" to get a +list of all available subjects. Use the standard search keys to locate the +information you want. You can abbreviate the ":help" command as ":h". + +For more information, read > + + :help online-help +< + *faq-4.2* +4.2. How do I search for a keyword in the Vim help files? + +You can press the CTRL-D key after typing the help keyword to get a list of +all the help keywords containing the supplied pattern. You can also use the +meta characters like *, \+, etc to specify the help search pattern: > + + :help init<C-D> + :help str*()<C-D> + :help '*indent<C-D> +< +You can press the Tab key after typing a partial help keyword to expand to +the matching keyword. You can continue to press the Tab key to see other +keyword matches. + +From the help window, you can use the ":tag" command to search for +keywords. For example, > + + :tselect /window +< +This command will list all the help keywords containing the text "window". +You can select one from the list and jump to it. + +You can use the ":helpgrep" command to search for the given text in all the +help files. The quickfix window will be opened with all the matching lines. + +For more information, read > + + :help c_CTRL-D + :help c_<Tab> + :help :tselect + :help :help + :help :helpgrep +< + *faq-4.3* +4.3. I am getting an error message E123, what did I do wrong? + +You can get more information about the error and the error message using: > + + :help E123 +< +For more information, read > + + :help error-messages +< + *faq-4.4* +4.4. Where can I read about the various modes in Vim? + +You can get information about the different modes in Vim by reading > + + :help vim-modes +< + *faq-4.5* +4.5. How do I generate the Vim help tags file after adding a new Vim help + file? + +You can use the ":helptags" command to regenerate the Vim help tag file. +For example: > + + :cd $VIMRUNTIME/doc + :helptags . +< +For more information, read > + + :help :helptags + :help add-local-help +< + *faq-4.6* +4.6. Can I use compressed versions of the help files? + +Yes. You can compress the help files and still be able to view them with +Vim. This makes accessing the help files a bit slower and requires the +"gzip" utility. Follow these steps to compress and use the Vim help files: + +- Compress all the help files using "gzip ddoc/*.txt". + +- Edit the "doc/tags" file and change the "".txt" to ".txt.gz" using + :%s=\(\t.*\.txt\)\t=\1.gz\t= + +- Add the following line to your vimrc: + set helpfile={dirname}/help.txt.gz + +Where {dirname} is the directory where the help files are. The gzip.vim +plugin supplied with the standard Vim distribution will take care of +decompressing the files. You must make sure that $VIMRUNTIME is set to +where the other Vim files are, when they are not in the same location as +the compressed "doc" directory. + +For more information, read > + + :help gzip-helpfile + :help 'helpfile' + :help gzip + :help $VIMRUNTIME +< + +============================================================================= + *faq-5* +SECTION 5 - EDITING A FILE + + *faq-5.1* +5.1. How do I load a file in Vim for editing? + +There are several ways to load a file for editing. The simplest is to +use the ":e" (:edit) command: > + + :e <filename> +< +You can also use the ":n" (:next) command to load files into Vim: > + + :n <filename(s)> +< +You can also use the ":args" command to load files into Vim: > + + :args <filename(s)> +< +For more information, read > + + :help usr_07 + :help edit-files + :help :edit + :help :next_f + :help :args_f +< + *faq-5.2* +5.2. How do I save the current file in another name (save as) and edit a + new file? + +You can use the ":saveas" command to save the current file in another name: > + + :saveas <newfilename> +< +Alternatively, you can also use the following commands: > + + :w <newfilename> + :edit # +< +You can also use the ":file" command, followed by ":w" command: > + + :file <newfilename> + :w +< +For more information, read > + + :help 07.7 + :help :saveas + :help :file_f + :help :w +< + *faq-5.3* +5.3. How do I change the current directory to the directory of the current + file? + +You can use the following command to change the current directory to the +directory of the current file: > + + :cd %:p:h +< +To automatically change the current directory to the directory of the +current file, use the following autocmd: > + + :autocmd BufEnter * cd %:p:h +< +For more information, read > + + :help :cd + :help :lcd + :help filename-modifiers + :help autocommand +< + *faq-5.4* +5.4. How do I write a file without the line feed (EOL) at the end of the + file? + +You can turn off the 'eol' option and turn on the 'binary' option to write +a file without the EOL at the end of the file: > + + :set binary + :set noeol + :w +< +For more information, read > + + :help 'endofline' + :help 'binary' + :help 23.4 +< + *faq-5.5* +5.5. How do I configure Vim to open a file at the last edited location? + +Vim stores the cursor position of the last edited location for each buffer +in the '"' register. You can use the following autocmd in your .vimrc or +.gvimrc file to open a file at the last edited location: > + + au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal g'\"" | endif +< +For more information, read > + + :help '" + :help last-position-jump +< + *faq-5.6* +5.6. When editing a file in Vim, which is being changed by an external + application, Vim opens a warning window (like the confirm dialog) each + time a change is detected. How do I disable this warning? + +You can set the Vim 'autoread' option to automatically read the file again +when it is changed outside of Vim: > + + :set autoread +< +You can also use the following autocommand: > + + autocmd FileChangedShell * + \ echohl WarningMsg | + \ echo "File has been changed outside of vim." | + \ echohl None +< +For more information, read > + + :help 'autoread' + :help FileChangedShell + :help timestamp + :help :checktime +< + *faq-5.7* +5.7. How do I edit a file whose name is under the cursor? + +You can use the gf command to edit a file whose name is under the cursor. +You can use the CTRL-W f command to edit the file in a new window. + +For more information, read > + + :help gf + :help CTRL-W_f + :help 'isfname' + :help 'path' + :help 'suffixesadd' + :help 'includeexpr' +< + *faq-5.8* +5.8. How do I reload/re-edit the current file? + +You can use the ":edit" command, without specifying a file name, to reload +the current file. If you have made modifications to the file, you can use +":edit!" to force the reload of the current file (you will lose your +modifications). + +For more information, read > + + :help :edit + :help :edit! + :help 'confirm' +< + *faq-5.9* +5.9. How do I autosave a file periodically? + +Vim doesn't support auto-saving a file periodically. + +For more information, read > + + :help 'updatetime' + :help CursorHold + :help swap-file +< + *faq-5.10* +5.10. How do I open a file in read-only mode? + +You can open a file in read-only mode using the ":view" command: > + + :view <filename> +< +This command sets the 'readonly' option for the opened buffer. You can also +use the "-R" command-line option to open a file in read-only mode: > + + $ vim -R <filename> +< +You can also use the symbolic link executable "view" to open a file in +read-only mode from the command-line: > + + $ view <filename> +< +For more information, read > + + :help 07.6 + :help 'readonly' + :help 'modifiable' + :help :view + :help :sview + :help view + :help -R + :help -M +< + +============================================================================= + *faq-6* +SECTION 6 - EDITING MULTIPLE FILES + + *faq-6.1* +6.1. How do I open multiple files at once from within Vim? + +There are several ways to open multiple files at once from within Vim. You +can use the ":next" command to specify a group of files: > + + :next f1.txt f2.txt + :next *.c +< +You can use the :args command to specify a group of files as arguments: > + + :args f1.txt f2.txt + :args *.c +< +After loading the files, you can use the ":next" and ":prev" command to +switch between the files. + +For more information, read > + + :help 07.2 + :help :next + :help :args_f + :help argument-list +< + *faq-6.2* +6.2. How do I switch between multiple files/buffers in Vim? + +There are several ways to switch between multiple files. You can use the +":buffer" command to switch between multiple files. For example, > + + :buffer file1 + :buffer file2 +< +You can also use the CTRL-^ key to switch between buffers. By specifying a +count before pressing the key, you can edit the buffer with that number. +Without the count, you can edit the alternate buffer by pressing CTRL-^ + +You can also use the ":e #" command to edit a particular buffer: > + + :e #5 +< +For more information, read > + + :help edit-files + :help :buffer + :help CTRL-^ + :help alternate-file + :help 22.4 + :help 07.3 +< + *faq-6.3* +6.3. How do I open several files in Vim, with each file in a separate + window? + +You can use the -o and -O Vim command line arguments to open multiple files +in separate horizontally or vertically split Vim windows. For example: > + + $ vim -o3 f1.txt f2.txt f3.txt +< +The above command will open the files f1.txt, f2.txt and f3.txt in three +separate horizontally split Vim windows. > + + $ vim -O3 f1.txt f2.txt f3.txt +< +The above command will open the files f1.txt, f2.txt and f3.txt in three +separate vertically split Vim windows. + +For more information, read > + + :help -o + :help -O + :help startup-options +< + *faq-6.4* +6.4. How do I configure Vim to autoload several files at once similar to + "work-sets" or "projects"? + +You can use the ":mksession" and the ":mkview" commands to autoload several +files in Vim. + +The ":mksession" command creates a Vim script that restores the current +editing session. You can use the ":source" command to source the file +produced by the mksession command. + +The ":mkview" command creates a Vim script that restores the contents of +the current window. You can use the ":loadview" command to load the view +for the current file. + +For more information, read > + + :help 21.4 + :help 21.5 + :help views-sessions + :help 'sessionoptions' + :help :mksession + :help :source + :help v:this_session + :help :mkview + :help :loadview + :help 'viewdir' + :help buffers +< + *faq-6.5* +6.5. Is it possible to open multiple top level windows in a single instance + of Vim similar to Nedit or emacs? + +No. It is currently not possible to open multiple top-level windows in a +single instance of Vim. This feature is in the todo list. + + *faq-6.6* +6.6. How do I browse/explore directories from within Vim? + +You can use the explorer.vim plugin, supplied with the standard Vim +installation, to browse/explore directories from within Vim. You can start +the file explorer using one of the following commands: > + + :e <directory> + :Explore + :SExplore +< +From the file explorer, you can browse through directories, rename, delete +and edit files. + +For more information, read > + + :help file-explorer + :help 22.1 +< + *faq-6.7* +6.7. How do I edit files over a network using ftp/scp/rcp/http? + +You can use the netrw.vim plugin, supplied with the standard Vim package, +to edit files over a network using ftp/scp/rcp/http. Using this plugin, Vim +will transparently load and save the files over ftp/scp/rcp/http. For +example, to edit a file over ftp, you can use the following command: > + + $ vim ftp://machine/path +< +For more information, read > + + :help netrw.vim +< + +============================================================================= + *faq-7* +SECTION 7 - BACKUP + + *faq-7.1* +7.1. When I edit and save files, Vim creates a file with the same name as + the original file and a "~" character at the end. How do I stop Vim + from creating this file? (or) How do I disable the Vim backup file + feature? + +You have set the 'backup' option, so Vim creates a backup file when saving +the original file. You can stop Vim from creating the backup file, by +clearing the option: > + + :set nobackup +< +Note that, by default this option is turned off. You have explicitly +enabled the 'backup' option in one of the initialization files. You may +also have to turn off the 'writebackup' option: > + + :set nowritebackup +< +For more information, read > + + :help 07.4 + :help backup-table + :help 'backup' + :help 'writebackup' + :help 'backupskip' + :help 'backupdir' + :help 'backupext' + :help 'backupcopy' + :help backup +< + *faq-7.2* +7.2. How do I configure Vim to store all the backup files in a particular + directory? + +You can configure Vim to store all the backup files in a particular +directory using the 'backupdir' option. For example, to store all the +backup files in the ~/backup directory, you can use the following command: > + + :set backupdir=~/backup +< +For more information, read > + + :help 07.4 + :help 'backupdir' + :help backup +< + *faq-7.3* +7.3. When I save a file with Vim, the file permissions are changed. + How do I configure Vim to save a file without changing the file + permissions? + +This may happen, if the 'backupcopy' option is set to 'no' or 'auto'. Note +that the default value for this option is set in such a way that this will +correctly work in most of the cases. If the default doesn't work for you, +try setting the 'backupcopy' option to 'yes' to keep the file permission +when saving a file: > + + :set backupcopy=yes +< +This applies, only if you have configured Vim to make a backup whenever +overwriting a file. By default, Vim will not backup files. + +For more information, read > + + :help 'backupcopy' + :help backup + :help 'backup' + :help 'writebackup' +< + +============================================================================= + *faq-8* +SECTION 8 - BUFFERS + + *faq-8.1* +8.1. I have made some modifications to a buffer. How do I edit another + buffer without saving the modified buffer and also without losing the + modifications? + +You can set the 'hidden' option to edit a file without losing modifications +to the current file: > + + :set hidden +< +By setting the 'hidden' option, you can also save the modification history +(undo-history) for the buffer. Otherwise, as you switch between files, the +undo-history will be lost. + +For more information, read > + + :help 'hidden' + :help hidden-quit + :help :hide +< + *faq-8.2* +8.2. How do I configure Vim to auto-save a modified buffer when switching + to another buffer? + +You can set the 'autowrite' option to auto-save a modified buffer when +switching to another buffer: > + + :set autowrite +< +For more information, read > + + :help 'autowrite' + :help 'autowriteall' + :help 'hidden' +< + *faq-8.3* +8.3. How do I replace the buffer in the current window with a blank buffer? + +You can use the ":enew" command to load an empty buffer in place of the +buffer in the current window. + +For more information, read > + + :help :enew +< + *faq-8.4* +8.4. Is there a keyboard shortcut to load a buffer by the buffer number? + +You can use the CTRL-^ command to load a buffer by specifying the buffer +number. For example, to load buffer number 5, you have to use the 5 CTRL-^ +command. + +For more information, read > + + :help CTRL-^ +< + *faq-8.5* +8.5. How do I open all the current buffers in separate windows? + +You can use the ":ball" or ":sball" commands to open all the buffers +in the buffer list: > + + :ball +< +For more information, read > + + :help :ball +< + *faq-8.6* +8.6. How do I close (delete) a buffer without exiting Vim? + +You can use the ":bdelete" command to delete a buffer without exiting Vim. +For example: > + + :bdelete file1 +< +For more information, read > + + :help :bdelete + :help :bwipeout +< + *faq-8.7* +8.7. I have several buffers opened with :e filename. How do I close one of + the buffers without exiting Vim? + +You can use the ":bdelete <buffername>" command to close the buffer. + +For more information, read > + + :help :bdelelete + :help :bunload + :help :bwipeout +< + *faq-8.8* +8.8. When I use the command ":%bd" to delete all the buffers, not all the + buffers are deleted. Why? + +In the ":%bd" command, the '%' range will be replaced with the starting and +ending line numbers in the current buffer. Instead of using '%' as the +range, you should specify numbers for the range. For example, to delete all +the buffers, you can use the command ":1,9999bd". + +For more information, read > + + :help :bd +< + *faq-8.9* +8.9. How do I display the buffer number of the current buffer/file? + +You can use 2<CTRL-G> command to display the buffer number for the current +file/buffer. Note the use of count before the CTRL-G command. If the count +is greater than 1, then Vim will display the buffer number. + +You can also use the following command to display the current buffer +number: > + + :echo bufnr("%") +< +You can also include the "%n" field to the 'statusline' option to display +the current buffer number on the statusline. + +For more information read, > + + :help CTRL-G + :help bufnr() + :help :echo + :help 'statusline' +< + *faq-8.10* +8.10. How do I delete a buffer without closing the window in which the + buffer is displayed? + +You can use the following command to open the next buffer and delete +the current buffer. > + + :bnext | bdelete # +< +For more information read, > + + :help :bnext + :help :bdelete + :help :buffers +< + *faq-8.11* +8.11. How do I map the tab key to cycle through and open all the buffers? + +You can use the following two map commands, to map the CTRL-Tab key to open +the next buffer and the CTRL-SHIFT-Tab key to open the previous buffer: > + + :nnoremap <C-Tab> :bnext<CR> + :nnoremap <S-C-Tab> :bprevious<CR> +< +For more information read, > + + :help :bnext + :help :previous +< + +============================================================================= + *faq-9* +SECTION 9 - WINDOWS + + *faq-9.1* +9.1. What is the difference between a Vim window and a buffer? + +A Vim buffer is a file loaded into memory for editing. The original file +remains unchanged until you write the buffer to the file. A Vim window is a +viewport onto a buffer. You can use multiple windows on one buffer or +several windows on different buffers. + +For more information, read > + + :help usr_08.txt + :help 22.4 + :help windows-intro + :help Q_wi +< + *faq-9.2* +9.2. How do I increase the width of a Vim window? + +You can increase the width of a Vim window using one of the following +commands: > + + :vert resize +N + :vert resize -N + :vert resize N +< +You can also use CTRL-W < or CTRL-W > or CTRL-W | commands. + +For more information, read > + + :help vertical-resize + :help CTRL-W_> + :help CTRL-W_< + :help window-resize +< + *faq-9.3* +9.3. How do I zoom into or out of a window? + +You can zoom into a window (close all the windows except the current +window) using the "CTRL-W o" command or the ":only" ex command. + +You can use the "CTRL-W _" command or the ":resize" ex command to increase +the current window height to the highest possible without closing other +windows. + +You can use the "CTRL-W |" command or the ":vertical resize" ex command to +increase the current window width to the highest possible without closing +other windows. + +You can use the "CTRL-W =" command to make the height and width of all the +windows equal. + +You can also set the following options to get better results with the above +commands: + +Method 1: +Set the 'winminheight' option to 0: > + + :set winminheight=0 +< +By default, this option is set to 1. +This option controls the minimum height of an inactive window (when it is +not the current window). When the 'winminheight' option is set to 0, only +the status line will be displayed for inactive windows. + +Method 2: +Set the 'noequalalways' option and set the 'winheight' option to a large +value (like 99999): > + + :set noequalalways + :set winheight=99999 +< +Now, the active window will always open to its maximum size, while the +other windows will stay present, but shrunken to just a status line. + +With any of the above mentioned methods, you cannot restore the window +layout after zooming into a window. If you want to restore the Vim window +layout after zooming into a window, you can use the ZoomWin plugin. You can +download this plugin from the Vim online website at: + +http://vim.sourceforge.net/scripts/script.php?script_id=508 + +For more information, read > + + :help CTRL-W_o + :help window-resize + :help 'winminheight' + :help 'equalalways' + :help 'winheight' + :help 08.3 +< + *faq-9.4* +9.4. How do I execute an ex command on all the open buffers or open windows + or all the files in the argument list? + +You can use the ":bufdo" command to execute an ex command on all the open +buffers. You can use the ":windo" command to execute an ex command on all +the open windows. You can use the ":argdo" command to execute an ex +command on all the files specified in the argument list. + +For more information, read > + + :help :windo + :help :bufdo + :help :argdo + :help 26.3 +< + +============================================================================= + *faq-10* +SECTION 10 - MOTION + + *faq-10.1* +10.1. How do I jump to the beginning (first line) or end (last line) of a + file? + +You can use 'G' command to jump to the last line in the file and the 'gg' +command to jump to the first line in the file. + +For more information, read > + + :help G + :help gg +< + *faq-10.2* +10.2. In insert mode, when I press the <Esc> key to go to command mode, the + cursor moves one character to the left (except when the cursor is on + the first character of the line). Is it possible to change this + behavior to keep the cursor at the same column? + +No. It is not possible to change this behavior. The cursor is *always* +positioned on a valid character (unless you have virtual-edit mode +enabled). So, if you are appending text to the end of a line, when you +return to command mode the cursor *must* drop back onto the last character +you typed. For consistency sake, the cursor drops back everywhere, even if +you are in the middle of a line. + +You can use the CTRL-O command in insert mode to execute a single ex +command and return back to insert mode without moving the cursor column. + +For more information, read > + + :help 'virtual' + :help i_CTRL-O +< + *faq-10.3* +10.3. How do I configure Vim to maintain the horizontal cursor position when + scrolling with the <Page Up>, <Page Down>, etc keys? + +You can reset the 'startofline' option to keep the cursor at the same +horizontal location when scrolling text: > + + :set nostartofline +< +For more information, read > + + :help 'startofline' +< + *faq-10.4* +10.4. Some lines in a file are more than the screen width and they are all + wrapped. When I use the j, k keys to move from one line to the next, + the cursor is moved to the next line in the file instead of the next + line on the screen. How do I move from one screen line to the next? + +You can use the gj and gk commands to move from one screen line to the +next/previous screen line. The j and k commands move the cursor from one +file line to the next file line. You can also avoid the line wrapping by +resetting the 'wrap' option: > + + :set nowrap +< +For more information, read > + + :help gj + :help gk + :help 'wrap' +< +You can use the following mappings: > + + :map <Up> gk + :imap <Up> <C-o>gk + :map <Down> gj + :imap <Down> <C-o>gj +< + *faq-10.5* +10.5. What is the definition of a sentence, paragraph and section in Vim? + +A sentence is defined as ending at a '.', '!' or '?' followed by either the +end of a line, or by a space (or two) or tab. Which characters and the +number of spaces needed to constitute a sentence ending is determined by +the 'joinspaces' and 'cpoptions' options. + +A paragraph begins after each empty line, and also at each of a set of +paragraph macros, specified by the pairs of characters in the 'paragraphs' +option. + +A section begins after a form-feed (<C-L>) in the first column and at each +of a set of section macros, specified by the pairs of characters in the +'sections' option. + +For more information, read > + + :help sentence + :help 'joinspaces' + :help 'cpoptions' | /^\s*j\> + :help paragraph + :help section + :help word +< + *faq-10.6* +10.6. How do I jump to beginning or end of a sentence, paragraph or a + section? + +You can use the following motion commands to jump to the beginning or end +of a sentence or a paragraph or a section: > + + motion position where + ( beginning current sentence + ) end current sentence + { beginning current paragraph + } end current paragraph + [] end previous section + [[ beginning current section + ][ end current section + ]] beginning next section +< +Each of these motions can be preceded by a number which will extend the +jump forward (or backward). + +For more information, read > + + :help object-motions +< + *faq-10.7* +10.7. I have lines in a file that extends beyond the right extent of the + screen. How do I move the Vim view to the right to see the text off + the screen? + +You can use one of the following commands to horizontally scroll the screen +to the left or right: > + + zl - scroll to the left + zh - scroll to the right + zL - scroll half a screenwidth to the left + zH - scroll half a screenwidth to the right + zs - scroll to position the cursor at the start of the screen + ze - scroll to position the cursor at the end of the screen +< +You can use the g0 command to move the cursor to the first character of the +screen line and the g$ command to move the cursor to the last character of +the screen line without scrolling the screen. + +For more information, read > + + :help scroll-horizontal +< + *faq-10.8* +10.8. How do I scroll two or more buffers simultaneously? + +You can set the "scrollbind" option for each of the buffer to scroll them +simultaneously. + +For more information, read > + + :help 'scrollbind' + :help scroll-binding + :help 'scrollopt' +< + *faq-10.9* +10.9. When I use my arrow keys, Vim changes modes, inserts weird characters + in my document but doesn't move the cursor properly. What's going on? + +There are a couple of things that could be going on: either you are using +Vim over a slow connection or Vim doesn't understand the key sequence that +your keyboard is generating. + +If you are working over a slow connection (such as a 2400 bps modem), you +can try to set the 'timeout' or 'ttimeout' option. These options, combined +with the 'timeoutlen' and 'ttimeoutlen' options, may fix the problem. + +The preceding procedure will not work correctly if your terminal sends key +codes that Vim does not understand. In this situation, your best option is +to map your key sequence to a matching cursor movement command and save +these mappings in a file. You can then ":source" the file whenever you work +from that terminal. + +For more information, read > + + :help 'timeout' + :help 'ttimeout' + :help 'timeoutlen' + :help 'ttimeoutlen' + :help :map + :help vt100-cursor-keys +< + *faq-10.10* +10.10. How do I configure Vim to move the cursor to the end of the previous + line, when the left arrow key is pressed and the cursor is currently + at the beginning of a line? + +You can add the '<' flag to the 'whichwrap' option to configure Vim to move +the cursor to the end of the previous line, when the left arrow key is +pressed and the cursor is currently at the beginning of a line: > + + :set whichwrap+=< +< +Similarly, to move the cursor the beginning of the next line, when the +right arrow key is pressed and the cursor is currently at the end of a +line, add the '>' flag to the 'whichwrap' option: > + + :set whichwrap+=> +< +The above will work only in normal and visual modes. To use this in insert +and replace modes, add the '[' and ']' flags respectively. + +For more information, read > + + :help 'whichwrap' + :help 05.7 +< + *faq-10.11* +10.11. How do I configure Vim to stay only in insert mode (modeless + editing)? + +You can set the 'insertmode' option to configure Vim to stay only in insert +mode: > + + :set insertmode +< +By setting this option, you can use Vim as a modeless editor. If you press +the <Esc> key, Vim will not go to the normal mode. To execute a single +normal mode command, you can press CTRL-O followed by the normal mode +command. To execute more than one normal command, you can use CTRL-L +followed by the commands. To return to insert mode, press the <Esc> key. To +disable this option, reset the 'insertmode' option: > + + :set noinsertmode +< +You can also start vim using the "evim" command or you can use "vim -y" to +use Vim as a modeless editor. + +For more information, read > + + :help 'insertmode' + :help i_CTRL-O + :help i_CTRL-L + :help evim + :help evim-keys +< + *faq-10.12* +10.12. How do I display some context lines when scrolling text? + +You can set the 'scrolloff' option to display a minimal number of screen +lines (context) above and below the cursor. > + + :set scrolloff=10 +< +For more information, read > + + :help 'scrolloff' + :help 'sidescrolloff' +< + *faq-10.13* +10.13. How do I go back to previous cursor locations? + +You can go back to the cursor location before the latest jump using the '' +or `` command. You can use the CTRL-O command to go back to older cursor +positions and the CTRL-I command to go to the newer cursor positions in the +jump list. + +For more information, read > + + :help 03.10 + :help mark-motions + :help jump-motions +< + +============================================================================= + *faq-11* +SECTION 11 - SEARCHING TEXT + + *faq-11.1* +11.1. After I searched for a text with a pattern, all the matched text + stays highlighted. How do I turn off the highlighting + temporarily/permanently? + +The 'hlsearch' option controls whether all the matches for the last +searched pattern are highlighted or not. By default, this option is not +enabled. If this option is set in a system-wide vimrc file, then you can +turn off the search highlighting by using the following command: > + + :set nohlsearch +< +To temporarily turn off the search highlighting, use > + + :nohlsearch +< +You can also clear the search highlighting, by searching for a pattern that +is not in the current file (for example, search for the pattern 'asdf'). + +For more information, read > + + :help 'hlsearch' + :help :nohlsearch +< + *faq-11.2* +11.2. How do I enter a carriage return character in a search pattern? + +You can either use '\r' or <CTRL-V><CTRL-M> to enter a carriage return +character in a pattern. In Vim scripts, it is better to use '\r' for the +carriage return character. + +For more information, read > + + :help sub-replace-special +< + *faq-11.3* +11.3. How do I search for the character ^M? + +You can enter the ^M character in a search command by first pressing the +CTRL-V key and then pressing the CTRL-M key. > + + /^V^M +< +You can also use the "\r" character. In Vim scripts, "\r" is preferred. + +For more information, read > + + :help c_CTRL-V + :help using_CTRL-V + :help /\r +< + *faq-11.4* +11.4. How can I search/replace characters that display as '~R', '~S', etc.? + +You can use the 'ga' command to display the ASCII value/code for the +special character. For example, let us say the ASCII value is 142. Then you +can use the following command to search for the special character: > + + /^V142 +< +where, ^V is entered by pressing CTRL-V. + +For more information, read > + + :help ga + :help using_CTRL_V + :help 24.8 +< + *faq-11.5* +11.5. How do I highlight all the non-printable characters in a file? + +You can use the following commands and search pattern to highlight all the +non-printable characters in a file: > + + :set hlsearch + /\(\p\|$\)\@!. +< +For more information, read > + + :help /\p + :help /bar + :help /$ + :help /\( + :help /\@! + :help 'hlsearch' +< + *faq-11.6* +11.6. How do I search for whole words in a file? + +You can search for whole words in a file using the \< and \> atoms. For +example: > + + /\<myword\> +< +The \< atom matches the beginning of the word and the \> atom matches the +end of the word. + +For more information, read > + + :help /\< + :help /\> +< + *faq-11.7* +11.7. How do I search for the current word under the cursor? + +You can press the * key to search forward for the current word under the +cursor. To search backward, you can press the # key. Note that only whole +keywords will be searched using these commands. + +For more information, read > + + :help star + :help # + :help g* + :help g# + :help 03.8 + :help search-commands +< + *faq-11.8* +11.8. How do I search for a word without regard to the case (uppercase or + lowercase)? + +To always ignore case while searching for a pattern, set the 'ignorecase' +option: > + + :set ignorecase +< +To ignore case only when searching a particular pattern, use the special \c +directive: > + + /\c<pattern> +< +For more information, read > + + :help 'ignorecase' + :help /ignorecase + :help /\c +< + *faq-11.9* +11.9. How do I search for words that occur twice consecutively? + +You can use one of the following search commands to locate words that occur +twice consecutively: > + + /\(\<\w\+\)\_s\+\1\> + /\(\<\k\+\)\_s\+\1\> +< +The main difference is the use of '\w' and '\k', where the latter is based +on the 'iskeyword' option which may include accented and other language +specific characters. + +For more information, read > + + :help /\1 + :help /\( + :help /\) + :help /\< + :help /\> + :help /\w + :help /\k + :help /\+ + :help /\_x + :help 'iskeyword' +< + *faq-11.10* +11.10. How do I count the number of times a particular word occurs in a + buffer? + +You can use the following set of commands to count the number of times a +particular word occurs in a buffer: > + + :let cnt=0 + :g/\<your_word\>/let cnt=cnt+1 + :echo cnt +< +This only counts the number of lines where the word occurs. You can also +use the following command: > + + :%s/\<word\>/&/g +< +To count the number of alphabetic words in a file, you can use > + + :%s/\a\+/&/g +< +To count the number of words made up of non-space characters, you can use > + + :%s/\S\+/&/g +< +For more information, read > + + :help count-items + :help word-count + :help v_g_CTRL-G + :help 12.5 +< + *faq-11.11* +11.11. How do I place the cursor at the end of the matched word when + searching for a pattern? + +You can use the 'e' offset to the search command to place the cursor at the +end of the matched word. For example > + + /mypattern/e +< +For more information about search offsets, read > + + :help search-offset + :help / +< + *faq-11.12* +11.12. How do I search for an empty line? + +You can search for an empty line using: > + + /^$ +< + or > + + /^\s*$ +< +For more information, read > + + :help /^ + :help /$ + :help /\s + :help /* + :help search-commands +< + *faq-11.13* +11.13. How do I search for a line containing only a single character? + +You can search for a line containing only a single character using: > + + /^\s*\a\s*$ +< +For more information, read > + + :help /^ + :help /\a + :help /\s + :help /* + :help /$ +< + *faq-11.14* +11.14. How do I search and replace a string in multiple files? + +You can use the 'argdo' or 'bufdo' or 'windo' commands to execute an ex +command on multiple files. For example: > + + :argdo %s/foo/bar/g +< +For more information, read > + + :help :argdo + :help :bufdo + :help :windo +< + *faq-11.15* +11.15. I am using the ":s" substitute command in a mapping. When a search + for a pattern fails, the map terminates. I would like the map to + continue processing the next command, even if the substitute command + fails. How do I do this? + +You can use the 'e' flag to the substitute command to continue processing +other commands in a map, when a pattern is not found. + +For more information, read > + + :help :s_flags +< + *faq-11.16* +11.16. How do I search for the n-th occurrence of a character in a line? + +To search for the n-th occurrence of a character in a line, you can prefix +the 'f' command with a number. For example, to search for the 5th +occurrence of the character @ in a line, you can use the command 5f@. This +assumes the cursor is at the beginning of the line - and that this first +character is not the one your are looking for. + +For more information, read > + + :help f + :help F + :help t + :help T + :help ; + :help , +< + *faq-11.17* +11.17. How do I replace a tab (or any other character) with a hard return + (newline) character? + +You can replace a tab (or any other character) with a hard return (newline) +character using the following command: > + + :s/\t/\r/ +< +Note that in the above command, if you use \n instead of \r, then the tab +characters will not be replaced by a new-line character. + +For more information, read > + + :help sub-replace-special + :help NL-used-for-Nul + :help CR-used-for-NL +< + *faq-11.18* +11.18. How do I search for a character by its ASCII value? + +You can search for a character by its ASCII value by pressing CTRL-V +followed by the decimal or hexadecimal or octal value of that character in +the search "/" command. To determine the ASCII value of a character you +can use the ":ascii" or the "ga" command. + +For more information, read > + + :help i_CTRL-V_digit + :help :ascii + :help ga +< + *faq-11.19* +11.19. How do I search for long lines? + +You can search for long lines or lines containing more than a specific +number of characters using the Vim regular-expressions in the search +command. For example, to search for all the lines containing more than 80 +characters, you can use one of the following commands: > + + /^.\{80}.*$ + /^.*\%80c.*$ +< +For more information, read > + + :help /\{ + :help /\%c +< + *faq-11.20* +11.20. How do I display all the lines in the current buffer that contain a + specified pattern? + +You can use the following command to display all the lines in the current +buffer that contain a specified pattern: > + + :g/<pattern>/p +< +For example, the following command will display all the lines in the +current buffer that contain "vim": > + + :g/vim/p +< +If you also want the corresponding line numbers, then you can use the +following command: > + + :g/<pattern>/# +< +For more information, read > + + :help :global + :help :print + :help :number +< + *faq-11.21* +11.21. How do I search for a text string that spans multiple lines? + +You can search for a text string that spans multiple lines using the \_x +regular expression atom. For example, to search for the text string "Hello +World", you can use the following search command: > + + /Hello\_sWorld +< +This will match the word "Hello" followed by a newline character and then +the word "World" at the beginning of the next line. This will also match +the word "Hello" immediately followed by a space character and then the +word "World". When searching for the "Hello World" string, to include the +space characters at the end and beginning of the line, you can use the +following search command: > + + /Hello\_s\+World +< +For more information, read > + + :help 27.8 + :help pattern-atoms + :help /\_ + :help pattern-searches +< + *faq-11.22* +11.22. How do I search for a pattern within the specified range of lines + in a buffer? + +You can search for a pattern within a range of lines using the \%>l +and \%<l regular expression atoms. + +For example, to search for the word 'white' between the lines 10 and 30 in +a buffer, you can use the following command: > + + /white\%>10l\%<20l +< +For more information, read > + + :help /\%l +< + +============================================================================= + *faq-12* +SECTION 12 - CHANGING TEXT + + *faq-12.1* +12.1. How do I delete all the trailing white space characters (SPACE and + TAB) at the end of all the lines in a file? + +You can use the ":substitute" command on the entire file to search and +remove all the trailing white space characters: > + + :%s/\s\+$// +< +For more information, read > + + :help :% + :help :s + :help /\s + :help /\+ + :help /$ +< + *faq-12.2* +12.2. How do I replace all the occurrences of multiple consecutive space + characters to a single space? + +You can use the following command to replace all the occurrences of +multiple consecutive space characters to a single space: > + + :%s/ \{2,}/ /g +< +For more information, read > + + :help :% + :help :s + :help /\{ + :help :s_flags +< + *faq-12.3* +12.3. How do I reduce a range of empty lines into one line only? + +You can use the following command to reduce a range of empty lines into one +line only: > + + :v/./.,/./-1join +< +The explanation for this command is below: > + + :v/./ Execute the following command for all lines not + containing a character (empty lines). + ., Use the current line as the start of the range of + lines. + /./ Use the line containing a character as the last line. + -1 Adjust the range of lines to end with the line before + the last line. + j Join the lines in the range. +< +Note that this will give an error message if the empty lines are at the end +of the file. To correct this, you have to add a temporary line at the end +of the file, execute the command and then remove the temporary line. + +For more information, read > + + :help :v + :help :join + :help cmdline-ranges + :help collapse +< + *faq-12.4* +12.4. How do I delete all blank lines in a file? How do I remove all the + lines containing only space characters? + +To remove all blank lines, use the following command: > + + :g/^$/d +< +To remove all lines with only whitespace (spaces or tabs) in them, use the +following command: > + + :g/^\s\+$/d +< +To remove all the lines with only whitespace, if anything, use the +following command: > + + :g/^\s*$/d +< + *faq-12.5* +12.5. How do I copy/yank the current word? + +You can use the "yiw" (yank inner word without whitespace) command or the +"yaw" (yank a word with whitespace) command to copy/yank the current +word. + +For more information, read > + + :help 04.6 + :help 04.8 + :help iw + :help yank + :help text-objects + :help objects +< + *faq-12.6* +12.6. How do I yank text from one position to another position within a + line, without yanking the entire line? + +You can specify a motion command with the yank operator (y) to yank text +from one position to another position within a line. For example, to yank +from the current cursor position till the next letter x, use yfx or Fx or +tx or Tx. To yank till the nth column, use n|. To yank till the next +occurrence of a 'word', use /word. To do a yank till the nth column on +another line, first mark the position using the 'ma' command, go to the +start of the yank position, and then yank till the mark using y`a (note the +direction of the quote) + +For more information, read > + + :help yank + :help motion.txt + :help 4.6 +< + *faq-12.7* +12.7. When I yank some text into a register, how do I append the text to + the current contents of the register? + +When you specify the register for some operation, if you use the upper-case +for the register name, then the new text will be appended to the existing +contents. For example, if you have some text in the register "a". If you +want to append some new text to this, you have to use the "A" register +name. If you use the lowercase register name, then the contents of the +register will be overwritten with the new text. + +For more information, read > + + :help quote + :help quote_alpha + :help 10.1 +< + *faq-12.8* +12.8. How do I yank a complete sentence that spans over more than one line? + +To yank a complete sentence that spans over more than one line you have to +use the yank operator followed by a motion command. For example: > + + y) +< +From inside the sentence you can use 'yi)' to yank the sentence. + +For more information, read > + + :help yank + :help {motion} + :help object-motions + :help 4.6 +< + *faq-12.9* +12.9. How do I yank all the lines containing a pattern into a buffer? + +You can use the ":global" command to yank all the lines containing the +pattern into a register and then paste the contents of the register into +the buffer: > + + :let @a='' + :g/mypattern/y A +< +The first command, clears the contents of the register "a". The second +command copies all the lines containing "mypattern" into the register "a". +Note that the capital letter "A" is used to append the matched lines. Now +you can paste the contents of register "a" to a buffer using "ap command. +For more information, read > + + :help :g + :help :y + :help let-register + :help quote_alpha + :help put + :help registers + :help :registers +< + *faq-12.10* +12.10. How do I delete all the lines in a file that does not contain a + pattern? + +You can use ":v" command to delete all the lines that does not contain a +pattern: > + + :v/pattern/d +< +or > + + :g!/pattern/d +< +For more information, read > + + :help :v + :help :g +< + *faq-12.11* +12.11. How do I add a line before each line with "pattern" in it? + +You can use the following command to add a line before each line with +"pattern" in it: > + + :g/pattern/normal Oi<line of text goes here> +< +Alternatively you can yank the line using the Y command and then insert the +line using the following command: > + + :g/pattern/put! +< +For more information, read > + + :help :g + :help :put + :help insert + :help 0 +< + *faq-12.12* +12.12. Is there a way to operate on a line if the previous line contains a + particular pattern? + +You can use the ":global" command to operate on a line, if the previous +line contains a particular pattern: > + + :g/<pattern>/+{cmd} +< +For more information, read > + + :help :g + :help :range +< + *faq-12.13* +12.13. How do I execute a command on all the lines containing a pattern? + +You can use the ":global" (:g) command to execute a command on all the +lines containing a pattern. > + + :g/my pattern/d +< +If you want to use a non-Ex command, then you can use the ":normal" +command: > + + :g/my pattern/normal {command} +< +Unless you want the normal mode commands to be remapped, consider using a +":normal!" command instead (note the "!"). + +For more information, read > + + :help :global + :help :v + :help :normal +< + *faq-12.14* +12.14. Can I copy the character above the cursor to the current cursor + position? + +In Insert mode, you can copy the character above the cursor to the current +cursor position by typing <Ctrl-Y>. The same can be done with the +characters below the cursor by typing <Ctrl-E>. + +For more information, read > + + :help i_CTRL-Y + :help i_CTRL-E +< + *faq-12.15* +12.15. How do I insert a blank line above/below the current line without + entering insert mode? + +You can use the ":put" ex command to insert blank lines. For example, try > + + :put ='' + :put! ='' +< +For more information, read > + + :help :put +< + *faq-12.16* +12.16. How do I insert the name of current file into the current buffer? + +There are several ways to insert the name of the current file into the +current buffer. In insert mode, you can use the <C-R>% or the +<C-R>=expand("%") command. In normal mode, you can use the ":put =@%" +command. + +For more information, read > + + :help i_CTRL-R + :help expand() + :help !! +< + *faq-12.17* +12.17. How do I insert the contents of a Vim register into the current + buffer? + +In insert mode, you can use the <C-R><register> command to insert the +contents of <register>. For example, use <C-R>a to insert the contents +of register "a" into the current buffer. + +In normal mode, you can use the ":put <register>" command to insert the +contents of <register>. For example, use the ":put d" command to insert +the contents of register "d" into the current buffer. + +For more information, read > + + :help i_CTRL-R + :help :put +< + *faq-12.18* +12.18. How do I move the cursor past the end of line and insert some + characters at some columns after the end of the line? + +You can set the "virtualedit" option to move the cursor past the +end-of-line and insert characters in a column after the end-of-line. To +start the virtual mode, use > + + :set virtualedit=all +< +For more information, read > + + :help 'virtualedit' +< + *faq-12.19* +12.19. How to replace the word under the cursor (say: junk) with + "foojunkbar" in Vim? + +There are several ways to do this. If the word is the first such word on +the line, use the following command: > + + :exe "s/".expand("<cword>")."/foo&bar/" +< +Too match specifically you could use a more complex substitution like this: > + + :exe 's/\<'.expand("<cword>").'\%>'.(col(".")-1).'c\>/foo&bar/' +< +You can also use the command: ciwfoo<C-R>"bar<Esc> + +For more information, read > + + :help :substitute + :help expand() + :help col() + :help /\%c +< + *faq-12.20* +12.20. How do I replace a particular text in all the files in a directory? + +You can use the "argdo" command to execute the substitute command on all +the files specified as arguments: > + + :args * + :argdo %s/<your_text>/<replacement_text>/ge | update +< +For more information, read > + + :help :args_f + :help :argdo + :help :s_flags +< + *faq-12.21* +12.21. I have some numbers in a file. How do I increment or decrement the + numbers in the file? + +You can use the CTRL-A key to increment the number and the CTRL-X key to +decrement the number. You can also specify the number to +increment/decrement from the number by specifying a count to the key. This +works for decimal, octal and hexadecimal numbers. + +For more information, read > + + :help CTRL-A + :help CTRL-X + :help 'nrformats' +< + *faq-12.22* +12.22. How do I reuse the last used search pattern in a ":substitute" + command? + +To reuse the last used search pattern in a ":substitute" command, don't +specify a new search pattern: > + + :s/pattern/newtext/ + :s//sometext/ +< +In the second ":s" command, as a search pattern is not specified, the +pattern specified in the first ":s" command 'pattern' will be used. + +If you want to change the search pattern but repeat the substitution +pattern you can use the special right hand side, you can use the tilde +character: > + + :s/newpattern/~/ +< +For more information, read > + + :help :s + :help :& + :help :~ + :help & + :help sub-replace-special +< + *faq-12.23* +12.23. How do I change the case of a string using the ":substitute" + command? + +You can use special characters in the replacement string for a +":substitute" command to change the case of the matched string. For +example, to change the case of the string "MyString" to all uppercase, you +can use the following command: > + + :%s/MyString/\U&/g +< +To change the case to lowercase, you can use the following command: > + + :%s/MyString/\L&/g +< +To change the case of the first character in all the words in the current +line to uppercase, you can use the following command: > + + :s/\<\(.\)\(\k*\)\>/\u\1\L\2/g +< +For more information, read > + + :help sub-replace-special + :help :substitute + :help \U + :help \L + :help \u +< + *faq-12.24* +12.24. How do I enter characters that are not present in the keyboard? + +You can use digraphs to enter characters that are not present in the +keyboard. You can use the ":digraphs" command to display all the currently +defined digraphs. You can add a new digraph to the list using the +":digraphs" command. + +For more information, read > + + :help digraphs + :help 'digraphs' + :help 24.9 +< + *faq-12.25* +12.25. Is there a command to remove any or all digraphs? + +No. The digraphs table is defined at compile time. You can only add new +ones. Adding a command to remove digraphs is on the todo list. + + *faq-12.26* +12.26. In insert mode, when I press the backspace key, it erases only the + characters entered in this instance of insert mode. How do I erase + previously entered characters in insert mode using the backspace + key? + +You can set the 'backspace' option to erase previously entered characters +in insert mode: > + + :set backspace=indent,eol,start +< +For more information, read > + + :help 'backspace' +< + *faq-12.27* +12.27. I have a file which has lines longer than 72 characters terminated + with "+" and wrapped to the next line. How can I quickly join the + lines? + +You can use the ":global" command to search and join the lines: > + + :g/+$/j +< +This will, however, only join every second line. A couple of more complex +examples which will join all consecutive lines with a "+" at the end are: > + + :g/*$/,/\(^\|[^+]\)$/j + :g/+$/mark a | .,/\(^\|[^+]\)$/s/+$// | 'a,.j +< +For more information, read > + + :help :g + :help :j + :help :mark +< + *faq-12.28* +12.28. How do I paste characterwise yanked text into separate lines? + +You can use the ":put" command to paste characterwise yanked text into new +lines: > + + :put =@" +< +For more information, read > + + :help :put + :help quote_= +< + *faq-12.29* +12.29. How do I change the case (uppercase, lowercase) of a word or a + character or a block of text? + +You can use the "~" command to switch the case of a character. + +You can change the case of the word under the cursor to uppercase using the +"gUiw" or "viwU" command and to lowercase using the "guiw" or "viwu" +command. + +You can switch the case (upper case to lower case and vice versa) of the +word under the cursor using the "viw~" or "g~iw" command. + +You can use the "gUgU" command to change the current line to uppercase and +the "gugu" command to change the current line to lowercase. + +You can use the "g~g~" command to switch the case of the current line. You +can use the "g~{motion}" or "{Visual}~" commands to switch the case of a +block of text. + +For more information, read > + + :help case +< + *faq-12.30* +12.30. How do I enter ASCII characters that are not present in the + keyboard? + +You can enter ASCII characters that are not present in the keyboard by +pressing CTRL-V and then the ASCII character number. You can also use +digraphs to enter special ASCII characters. + +For more information, read > + + :help i_CTRL-V_digit + :help digraphs + :help 45.5 +< + *faq-12.31* +12.31. How do I replace non-printable characters in a file? + +To replace a non-printable character, you have to first determine the ASCII +value for the character. You can use the ":ascii" ex command or the "ga" +normal-mode command to display the ASCII value of the character under the +cursor. + +You can enter the non-printable character by entering CTRL-V followed by +the decimal number 1-255 (with no leading zero), or by x and a hex number +00-FF, or by an octal number 0-0377 (with leading zero), or by u and a hex +number 0-FFFF, or by U and a hex number 0-7FFFFFFF + +Another alternative is to use the ":digraphs" ex command to display the +digraphs for all characters, together with their value in decimal and +alpha. You can enter a non-printable character by entering CTRL-K followed +by two alphanumeric characters (a digraph). + +For more information, read > + + :help :ascii + :help i_CTRL-V + :help i_CTRL-V_digit + :help :digraphs +< + *faq-12.32* +12.32. How do I remove duplicate lines from a buffer? + +You can use the following user-defined command to remove all the duplicate +lines from a buffer: + +:command -range=% Uniq <line1>,<line2>g/^\%<<line2>l\(.*\)\n\1$/d + +Add the above command to your .vimrc file and invoke ":Uniq" to remove all +the duplicate lines. + + *faq-12.33* +12.33. How do I prefix all the lines in a file with the corresponding line + numbers? + +You can prefix the lines with the corresponding line number in several +ways. Some of them are listed below: > + + :%s/^/\=line('.'). ' ' + :%s/^/\=strpart(line(".")." ", 0, 5) + :g/^/exec "s/^/".strpart(line(".")." ", 0, 4) +< +For more information, read > + + :help sub-replace-special + :help line() + :help expr6 + :help strpart() + :help :execute + :help :global +< + *faq-12.34* +12.34. How do I exchange (swap) two characters or words or lines? + +You can exchange two characters with the "xp" command sequence. The 'x' +will delete the character under the cursor and 'p' will paste the just +deleted character after the character under the cursor. This will result +in exchanging the two characters. + +You can exchange two words with the "deep" command sequence (start with the +cursor in the blank space before the first word). + +You can exchange two lines with the "ddp" command sequence. The 'dd' will +delete the current line and 'p' will paste the just deleted line after the +current line. This will result in exchanging the two lines. + +All of the above operations will change the " unnamed register. + +You can use the ":m +" ex command to exchange two lines without changing the +unnamed register. + +For more information, read > + + :help x + :help p + :help dd + :help d + :help e + :help linewise-register + :help quotequote + :help :move +< + +============================================================================= + *faq-13* +SECTION 13 - COMPLETION IN INSERT MODE + + *faq-13.1* +13.1. How do I complete words or lines in insert mode? + +In insert mode, you can complete words using the CTRL-P and CTRL-N keys. +The CTRL-N command searches forward for the next matching keyword. +The CTRL-P command searches backwards for the next matching keyword. + +In insert mode, you can use the CTRL-X CTRL-L command sequence to complete +lines that starts with the same characters as in the current line before +the cursor. To get the next matching line, press the CTRL-P or CTRL-N keys. +There are a lot of other keys/ways available to complete words in insert +mode. + +Vim supports completion of the following items: > + + CTRL-X CTRL-F file names + CTRL-X CTRL-L whole lines + CTRL-X CTRL-D macro definitions (also in included files) + CTRL-X CTRL-I current and included files + CTRL-X CTRL-K words from a dictionary + CTRL-X CTRL-T words from a thesaurus + CTRL-X CTRL-] tags + CTRL-X CTRL-V Vim command line +< +For more information, read > + + :help 24.3 + :help ins-completion +< + *faq-13.2* +13.2. How do I complete file names in insert mode? + +In insert mode, you can use the CTRL-X CTRL-F command sequence to complete +filenames that start with the same characters as in the current line before +the cursor. + +For more information, read > + + :help compl-filename +< + *faq-13.3* +13.3. I am using CTRL-P/CTRL-N to complete words in insert mode. How do I + complete words that occur after the just completed word? + +You can use CTRL-X CTRL-N and CTRL-X CTRL-P keys to complete words that are +present after the just completed word. + +For more information, read > + + :help i_CTRL-X_CTRL-P + :help i_CTRL-X_CTRL-N + :help ins-completion +< + +============================================================================= + *faq-14* +SECTION 14 - TEXT FORMATTING + + *faq-14.1* +14.1. How do I format a text paragraph so that a new line is inserted at + the end of each wrapped line? + +You can use the 'gq' command to format a paragraph. This will format the +text according to the current 'textwidth' setting. + +Note that the gq operator can be used with a motion command to operate on a +range of text. For example: > + + gqgq - Format the current line + gqap - Format current paragraph + gq3j - Format the current and the next 3 lines +< +For more information, read > + + :help gq + :help formatting + :help usr_25.txt + :help motion.txt +< + *faq-14.2* +14.2. How do I format long lines in a file so that each line contains less + than 'n' characters? + +First set the 'textwidth' option to the desired value: > + + set textwidth=70 +< +Now to break the long lines to the length defined by the 'textwidth' +option, use > + + :g/./normal gqq +< +For more information, read > + + :help gq +< + *faq-14.3* +14.3. How do I join short lines to form a paragraph? + +First, make sure the 'textwidth' option is set to a high value: > + + :set textwidth=99999 +< +Next, join the short lines to form a paragraph using the command: > + + 1GgqG +< +The above command will operate on the entire file. To do the formatting on +all paragraphs in a specific range, use: > + + :'a,'bg/\S/normal gq} +< +For more information, read > + + :help gq + :help G + :help gqq +< + *faq-14.4* +14.4. How do I format bulleted and numbered lists? + +You can configure Vim to format bulleted and numbered lists using the +'formatoptions' option. For example, you can format the list of the +following format: + + - this is a test. this is a test. this is a test. this is a test. + this is a test. + +into this format: + + - this is a test. this is a test. this is a test. this is a test. + this is a test. + +You can use the 'n' flag in the 'formatoptions' to align the text. > + + :set fo+=n +< +With this option, when formatting text, Vim will recognize numbered lists. +For this option to work, the 'autoindent' option also must be set. + +For more information, read > + + :help 'formatoptions' + :help fo-table +< + *faq-14.5* +14.5. How do I indent lines in insert mode? + +In insert mode, you can press the CTRL-T key to insert one shiftwidth of +indent at the start of the current line. In insert mode, you can use the +CTRL-D key to delete on shiftwidth of indent at the start of the current +line. You can also use the CTRL-O >> and CTRL-O << commands to indent the +current line in insert mode. + +For more information, read > + + :help i_CTRL-T + :help i_CTRL-D + :help i_0_CTRL-D + :help i_CTRL-O + :help >> + :help << +< + *faq-14.6* +14.6. How do I format/indent an entire file? + +You can format/indent an entire file using the gg=G command, where > + + gg - Goto the beginning of the file + = - apply indentation + G - till end of file +< +For more information, read > + + :help gg + :help = + :help G + :help 'formatprg' + :help C-indenting +< + *faq-14.7* +14.7. How do I increase or decrease the indentation of the current line? + +You can use the '>>' and '<<' commands to increase or decrease the +indentation of the current line. + +For more information, read > + + :help shift-left-right + :help >> + :help << + :help 'shiftwidth' +< + *faq-14.8* +14.8. How do I indent a block/group of lines? + +You can visually select the group of lines and press the > or < key to +indent/unindent the lines. You can also use the following ex-command to +indent the lines > + + :10,20> +< +For more information, read > + + :help shift-left-right + :help v_> + :help v_< + :help :< + :help :> +< + *faq-14.9* +14.9. When I indent lines using the > or < key, the standard 8-tabstops are + used instead of the current 'tabstop' setting. Why? + +The number of spaces used when lines are indented using the ">" operator is +controlled by the 'shiftwidth' option. The 'tabstop' setting is not used +for indentation. To change the amount of spaces used for indentation, use +the command: > + + :set shiftwidth=4 +< +For more information, read > + + :help 'shiftwidth' + :help >> + :help 'softtabstop' +< + *faq-14.10* +14.10. How do I turn off the automatic indentation of text? + +By default, the automatic indentation of text is not turned on. Check the +configuration files (.vimrc, .gvimrc) for settings related to indentation. +Make sure the ":filetype indent on" command is not present. If it is +present, remove it. Also, depending on your preference, you may also want +to check the value of the 'autoindent', 'smartindent', 'cindent' and +'indentexpr' options and turn them off as needed. + +For more information, read > + + :help :filetype-indent-off + :help 'autoindent' + :help 'smartindent' + :help 'cindent' + :help 'indentexpr' +< + *faq-14.11* +14.11. How do I configure Vim to automatically set the 'textwidth' option + to a particular value when I edit mails? + +You can use the 'FileType' autocommand to set the 'textwidth' option: > + + autocmd FileType mail set tw=<your_value> +< +For more information, read > + + :help :autocmd + :help FileType + :help usr_43.txt +< + *faq-14.12* +14.12. Is there a way to make Vim auto-magically break lines? + +Yes. Set the 'textwidth' option to the preferred length for a line. Then +Vim will auto-magically break the newly entered lines. For example: > + + :set textwidth=75 +< +For more information, read > + + :help textwidth + :help ins-textwidth + :help 'formatoptions' + :help fo-table + :help formatting +< + *faq-14.13* +14.13. I am seeing a lot of ^M symbols in my file. I tried setting the + 'fileformat' option to 'dos' and then 'unix' and then 'mac'. None of + these helped. How can I hide these symbols? + +When a file is loaded in Vim, the format of the file is determined as +below: + +- If all the lines end with a new line (<NLL>), then the fileformat is + 'unix'. +- If all the lines end with a carriage retuurn (<CR>) followed by a new line + (<NL>), then the fileformat is 'dos'. +- If all the lines end with carriage returnn (<CR>), then the fileformat is + 'mac'. + +If the file has some lines ending with <CR> and some lines ending with <CR> +followed by a <NL>, then the fileformat is set to 'unix'. + +You can change the format of the current file, by modifying the +'fileformat' option and then saving the file: > + + :set fileformat=dos + :w +< +To display the format of the current file, use > + + :set fileformat? +< +The above behavior is also controlled by the 'fileformats' option. You can +try the following commands: > + + :set fileformats+=unix + :e <your_file> + :set fileformat=unix + :w +< +For more information, read > + + :help 'fileformats' + :help 'fileformat' + :help file-formats + :help DOS-format-write + :help Unix-format-write + :help Mac-format-write + :help dos-file-formats + :help 23.1 +< + *faq-14.14* +14.14. When I paste some text into a Vim buffer from another application, + the alignment (indentation) of the new text is messed up. How do I + fix this? + +The indentation of the text is messed up due to various Vim settings +related to indentation (like autoindent, smartindent, textwidth etc). +Before pasting text into Vim, you can set the 'paste' option: > + + :set paste +< +After pasting the text, you can turn off the option using: > + + :set nopaste +< +You can also toggle the paste option using: > + + :set paste! +< +If you can access the clipboard through the * register, then you can paste +the text without indentation using CTRL-R CTRL-O *. + +For more information, read > + + :help 'paste' + :help 'pastetoggle' + :help i_CTRL-R_CTRL_O + :help clipboard + :help xterm-clipboard + :help gui-clipboard +< + *faq-14.15* +14.15. When there is a very long wrapped line (wrap is "on") and a line + doesn't fit entirely on the screen it is not displayed at all. There + are blank lines beginning with '@' symbol instead of wrapped line. If + I scroll the screen to fit the line the '@' symbols disappear and the + line is displayed again. What Vim setting control this behavior? + +You can set the 'display' option to 'lastline' to display as much as +possible of the last line in a window instead of displaying the '@' +symbols. > + + :set display=lastline +< +For more information, read > + + :help 'display' +< + *faq-14.16* +14.16. How do I convert all the tab characters in a file to space + characters? + +You can use the ":retab" command to update all the tab characters in the +current file with the current setting of 'expandtab' and 'tabstop'. For +example, to convert all the tabs to white spaces, use > + + :set expandtab + :retab +< +For more information, read > + + :help :retab + :help 'expandtab' + :help 'tabstop' + :help 25.3 +< + *faq-14.17* +14.17. What Vim options can I use to edit text that will later go to a word + processor? + +You can set the following options to edit text that will later go into a +word processor: > + + :set wrap + :set linebreak + :set textwidth=0 + :set showbreak=>>> +< +You can use the 'gk' and 'gj' commands to move one screen line up and down. +For more information, read > + + :help 'wrap' + :help 'linebreak' + :help 'textwidth' + :help 'showbreak' + :help gk + :help gj +< + +============================================================================= + *faq-15* +SECTION 15 - VISUAL MODE + + *faq-15.1* +15.1. How do I do rectangular block copying? + +You can do rectangular block copying in Vim using the blockwise visual +mode. To start blockwise visual mode use the CTRL-V key. Move the cursor +using any of the motion commands and then use the y operator to yank to +visually selected text. + +If CTRL-V does not work as expected, it may have been remapped to CTRL-Q by +the mswin.vim script which is often sourced by a vimrc on Windows machines +to mimic some common short cuts from other programs. + +For more information, read > + + :help 04.4 + :help blockwise-visual + :help visual-mode + :help Q_vi +< + *faq-15.2* +15.2. How do I delete or change a column of text in a file? + +You can use the Vim block-wise visual mode to select the column of text and +apply an operator (delete, change, copy, etc) on it. + +For more information, read > + + :help visual-block + :help visual-operators +< + *faq-15.3* +15.3. How do I apply an ex-command on a set of visually selected lines? + +When you select a range of lines in visual mode, the < register is set to +the start of the visual region and the > register is set to the end of the +visual region. You can use these registers to specify the range for an ex +command. After visually selecting the lines, press ":" to go to the command +mode. Vim will automatically insert the visual range '<,'>. You can run +any ex-command on the visual range. + +For more information, read > + + :help v_: + :help '< + :help '> +< + *faq-15.4* +15.4. How do I execute an ex command on a column of text selected in Visual + block mode? + +All the ex commands operate on whole lines only. If you try to execute an +ex command on a column of text selected in visual block mode, Vim will +operate on all the selected lines (instead of the selected columns). You +can use the vis.vim plugin script from http://vim.sourceforge.net scripts +archive to do this. + +For more information, read > + + :help cmdline-ranges + :help 10.3 + :help cmdline-lines +< + *faq-15.5* +15.5. How do I select the entire file in visual mode? + +You can select the entire file in visual mode using ggVG. > + + gg - go to the beginning of the file. + V - Start linewise visual mode + G - goto the end of the file. +< +For more information, read > + + :help gg + :help linewise-visual + :help G +< + *faq-15.6* +15.6. When I visually select a set of lines and press the > key to indent + the selected lines, the visual mode ends. How can I reselect the + region for further operation? (or) How do I re-select the last + selected visual area again? + +You can use the 'gv' command to reselect the last selected visual area. You +can also use the marks '< and '> to jump to the beginning or the end of the +last selected visual area. + +For more information, read > + + :help gv + :help '< + :help '> +< + *faq-15.7* +15.7. How do I jump to the beginning/end of a visually selected region? + +You can use the 'o' command to jump to the beginning/end of a visually +selected region. + +For more information, read > + + :help v_o +< + *faq-15.8* +15.8. When I select text with mouse and then press : to enter an ex + command, the selected text is replaced with the : character. How do I + execute an ex command on a text selected using the mouse similar to + the text selected using the visual mode? + +This will happen if you have configured Vim to use select mode instead of +Visual mode by setting the 'selectmode' option. Check the value of this +option: > + + :set selectmode? +< +This mode is known as selectmode and is similar to the visual mode. This +option is also automatically set when you use the "behave mswin" command. +Select mode looks like visual mode, but it is similar to the selection mode +in MS-Windows. + +For more information, read > + + :help Select-mode + :help 'selectmode' + :help 9.4 + :help :behave +< + *faq-15.9* +15.9. When I select a block of text using the mouse, Vim goes into + selection mode instead of Visual mode. Why? + +The 'selectmode' option controls whether Select mode will be started when +selecting a block of text using the mouse. To start Visual mode when +selecting text using mouse, remove the 'mouse' value from the 'selectmode' +option: > + + :set selectmode-=mouse +< +Note that by default, the 'selectmode' option will be set to empty, so that +always visual mode is used. + +For more information, read > + + :help 'selectmode' + :help Select-mode + :help :behave +< + *faq-15.10* +15.10. How do I visually select the last copy/pasted text? + +You can use the '[ and '] marks to visually select the last copy/pasted +text. The '[ mark is set to the beginning of the last changed/yanked text +and the '] mark is set to the end of the last changed/yanked text. To +visually select this block of text use the command '[v'] + +For more information, read > + + :help '[ + :help '] + :help `a + :help v +< + +============================================================================= + *faq-16* +SECTION 16 - COMMAND-LINE MODE + + *faq-16.1* +16.1. How do I use the name of the current file in the command mode or an + ex command line? + +In the command line, the '%' character represents the name of the current +file. In some commands, you have to use expand("%") to get the filename: > + + :!perl % +< +For more information, read > + + :help :_% + :help cmdline-special + :help expand() +< + *faq-16.2* +16.2. How do I edit the text in the Vim command-line effectively? + +You can use the command-line window for editing Vim command-line text. To +open the Vim command-line window use the "q:" command in normal mode. In +command-line mode, use the CTRL-F key. In this window, the command line +history will be displayed. You can use normal Vim keys/commands to edit any +previous/new command line. To execute a command line, press the +enter/return key. + +In a similar vain, the search history can be edited with "q/" and "q?" +commands. + +For more information, read > + + :help cmdline-window +< + *faq-16.3* +16.3. How do I switch from Vi mode to Ex mode? + +You can use the Q command to switch from Vi mode to Ex mode. To switch from +Ex mode back to the Vi mode, use the :vi command. + +For more information, read > + + :help Q + :help gQ + :help Ex-mode + :help :vi +< + *faq-16.4* +16.4. How do I copy the output from an ex-command into a buffer? + +To copy the output from an ex-command into a buffer, you have to first get +the command output into a register. You can use the ":redir" command to get +the output into a register. For example, > + + :redir @a + :g/HelloWord/p + :redir END +< +Now the register 'a' will contain the output from the ex command +"g/HelloWord/p". Now you can paste the contents of the register 'a' into a +buffer. You can also send or append the output of an ex-command into a file +using the 'redir' command. + +You can prefix the ":global" command with ":silent", to avoid having the +lines printed to the screen. + +To redirect the output from an ex-command to a file, you can use the +following set of commands: > + + :redir > myfile + :g/HelloWord/p + :redir END +< +For more information, read > + + :help :redir + :help :silent +< + *faq-16.5* +16.5. When I press the tab key to complete the name of a file in the + command mode, if there are more than one matching file names, then + Vim completes the first matching file name and displays a list of all + matching filenames. How do I configure Vim to only display the list + of all the matching filenames and not complete the first one? + +You can modify the 'wildmode' option to configure the way Vim completes +filenames in the command mode. In this case, you can set the 'wildmode' +option to 'list': > + + :set wildmode=list +< +For more information, read > + + :help 'wildmode' +< + *faq-16.6* +16.6. How do I copy text from a buffer to the command line and from the + command line to a buffer? + +To copy text from a buffer to the command line, after yanking the text from +the buffer, use Ctrl-R 0 in the command line to paste the text. You can +also yank the text to a specific register and use CTRL-R <register> to +paste the text to the command line. You can use CTRL-R CTRL-W to paste the +word under the cursor in the command line. + +To copy text from the command line into a buffer, you can paste the +contents of the : register using the ":p command. The most recently +executed command line is stored in the : register. + +Another approach for copying and pasting text to and from the command line +is to open the command line window using q: from normal mode or CTRL-F from +the command-line mode. In the command line window you can use all the Vim +commands to edit the command line. + +For more information, read > + + :help c_CTRL-R + :help quote_: + :help cmdline-window +< + *faq-16.7* +16.7. How do I put a command onto the command history without executing it? + +To put a command onto the command history without executing it, press the +<Esc> key to cancel the command. + +For more information, read > + + :help c_<Esc> +< + *faq-16.8* +16.8. How do I increase the height of the command-line? + +You can increase the height of the command-line by changing the 'cmdheight' +option: > + + :set cmdheight=2 +< +For more information, read > + + :help 'cmdheight' + :help hit-enter + :help 05.7 +< + +============================================================================= + *faq-17* +SECTION 17 - VIMINFO + + *faq-17.1* +17.1. When I invoke Vim, I get error messages about illegal characters in + the viminfo file. What should I do to get rid of these messages? + +You can remove the $HOME/.viminfo or the $HOME/_viminfo file to get rid of +these error messages. + +For more information, read > + + :help viminfo-errors + :help viminfo-file-name + :help viminfo + :help 21.3 +< + *faq-17.2* +17.2. How do I disable the viminfo feature? + +By default, the viminfo feature is disabled. If the viminfo feature is +enabled by a system-wide vimrc file, then you can disable the viminfo +feature by setting the 'viminfo' option to an empty string in your local +.vimrc file: > + + :set viminfo="" +< +For more information, read > + + :help 'viminfo' +< + *faq-17.3* +17.3. How do I save and use Vim marks across Vim sessions? + +You can save and restore Vim marks across Vim sessions using the viminfo +file. To use the viminfo file, make sure the 'viminfo' option is not empty. +To save and restore Vim marks, the 'viminfo' option should not contain the +'f' flag or should have a value greater than zero for the 'f' option. + +For more information, read > + + :help 21.3 + :help viminfo + :help 'viminfo' + :help :wviminfo + :help :rviminfo +< + +============================================================================= + *faq-18* +SECTION 18 - REMOTE EDITING + + *faq-18.1* +18.1. How do I open a file with existing instance of gvim? What happened to + the Vim 5.x OpenWithVim.exe and SendToVim.exe files? + +Starting with Vim6, the OLE version of OpenWithVim.exe and SendToVim.exe +Vim utilities are replaced by the new client-server feature. To open the +file j.txt with an existing instance of Gvim (MyVim), use: > + + $ gvim --servername MyVim --remote-silent j.txt +< +To list the server names of all the currently running Vim instances, use > + + $ vim --serverlist +< +To get more information about client-server feature, read > + + :help client-server +< + *faq-18.2* +18.2. How do I send a command to a Vim server to write all buffers to disk? + +You can use the Vim remote server functionality to do this: > + + $ gvim --servername myVIM --remote-send "<C-\><C-N>:wall<CR>" +< +For more information, read > + + :help client-server + :help CTRL-\_CTRL-N + :help :wall +< + *faq-18.3* +18.3. Where can I get the documentation about the Vim remote server + functionality? + +You can get more information about the Vim remote server functionality by +reading > + + :help client-server +< + +============================================================================= + *faq-19* +SECTION 19 - OPTIONS + + *faq-19.1* +19.1. How do I configure Vim in a simple way? + +You can use the ":options" command to open the Vim option window: > + + :options +< +This window can be used for viewing and setting all the options. + +For more information, read > + + :help :options +< + *faq-19.2* +19.2. How do I toggle the value of an option? + +You can prefix the option with "inv" to toggle the value of the option: > + + :set invignorecase + :set invhlsearch +< +You can also suffix the option with "!" to toggle the value: > + + :set ignorecase! + :set hlsearch! +< +For more information, read > + + :help set-option +< + *faq-19.3* +19.3. How do I set an option that affects only the current buffer/window? + +You can use the ":setlocal" command to set an option that will affect only +the current file/buffer: > + + :setlocal textwidth=70 +< +Note that not all options can have a local value. You can use ":setlocal" +command to set an option locally to a buffer/window only if the option is +allowed to have a local value. + +You can also use the following command to set a option locally: > + + :let &l:{option-name} = <value> +< +For more information, read > + + :help :setlocal + :help local-options +< + *faq-19.4* +19.4. How do I use space characters for a Vim option value? + +To use space characters in a Vim option value, you have to escape the space +character. For example: > + + :set tags=tags\ /usr/tags +< +For more information, read > + + :help option-backslash +< + *faq-19.5* +19.5. Can I add (embed) Vim option settings to the contents of a file? + +You can use modelines to add Vim option settings to the contents of a file. +For example, in a C file, you can add the following line to the top or the +bottom of the file: > + + /* vim:sw=4: */ +< +This will set the 'shiftwidth' option to 4, when editing that C file. +For this to work, the 'modeline' option should be set. By default, the +'modeline' option is set. The 'modelines' settings specifies the number of +lines that will be checked for the Vim set commands. + +For more information, read > + + :help 21.6 + :help modeline + :help auto-setting + :help 'modeline' + :help 'modelines' +< + *faq-19.6* +19.6. How do I display the line numbers of all the lines in a file? + +You can set the 'number' option to display the line numbers for all the +lines. > + + :set number +< +For more information, read > + + :help 'number' +< + *faq-19.7* +19.7. How do I change the width of the line numbers displayed using the + "number" option? + +The width used for displaying the line numbers for the 'number' option is +hard-coded in Vim. It is not possible to change this width by setting some +option. + +The request and the patch to add an option to change the number of columns +used for the 'number' option is in the Vim todo list: > + + "Add an option to set the width of the 'number' column. Eight + positions is often more than needed. Or adjust the width to the length + of the file? + Add patch that adds 'numberlen' option. (James Harvey) + Other patch with min and max from Emmanuel Renieris (2002 Jul 24) + Other patch without an option by Gilles Roy (2002 Jul 25)" +< + *faq-19.8* +19.8. How do I display (view) all the invisible characters like space, tabs + and newlines in a file? + +You can set the 'list' option to see all the invisible characters in your +file. > + + :set list +< +With this option set, you can view space characters, tabs, newlines, +trailing space characters and wrapped lines. + +To not display the invisible characters (which is the default), you have to +reset the 'list' option: > + + :set nolist + (or) + :set list! +< +The ":set list!" command will toggle the current setting of the boolean +'list' option. + +You can modify the 'listchars' option to configure how and which invisible +characters are displayed. For example, with the following command all the +trailing space characters will be displayed with a '.' character. > + + :set listchars=trail:. +< +For more information, read > + + :help 'listchars' + :help 'list' +< + *faq-19.9* +19.9. How do I configure Vim to always display the current line and column + number? + +You can set the 'ruler' option to display current column and line number in +the status line: > + + :set ruler +< +For more information, read > + + :help 'ruler' +< + *faq-19.10* +19.10. How do I display the current Vim mode? + +You can set the 'showmode' option to display the current Vim mode. In +Insert, Replace and Visual modes, Vim will display the current mode on the +last line. > + + :set showmode +< +For more information, read > + + :help 'showmode' +< + *faq-19.11* +19.11. How do I configure Vim to show pending/partial commands on the + status line? + +You can set the 'showcmd' option to display pending/partial commands in the +status line: > + + :set showcmd +< +For more information, read > + + :help 'showcmd' +< + *faq-19.12* +19.12. How do I configure the Vim status line to display different + settings/values? + +You can set the 'statusline' option to display different values/settings in +the Vim status line. + +For more information, read > + + :help 'statusline' + :help 'laststatus' + :help 'rulerformat' + :help 'ruler' +< + *faq-19.13* +19.13. How do I configure Vim to display status line always? + +You can set the 'laststatus' option to 2 to display the status line always. > + + :set laststatus=2 +< +For more information, read > + + :help 'laststatus' +< + *faq-19.14* +19.14. How do I make a Vim setting persistent across different Vim + invocations/instances/sessions? + +To make a Vim option setting persistent across different Vim instances, add +your setting to the .vimrc or .gvimrc file. You can also use the ":mkvimrc" +command to generate a vimrc file for the current settings. + +For more information, read > + + :help save-settings + :help vimrc + :help gvimrc + :help vimrc-intro + :help :mkvimrc + :help initialization +< + *faq-19.15* +19.15. Why do I hear a beep (why does my window flash) about 1 second after + I hit the Escape key? + +This is normal behavior. If your window flashes, then you've got the visual +bell on. Otherwise, you should hear a beep. + +Vim needs a timeout to tell the difference between a simple escape and, +say, a cursor key sequence. When you press a key in normal mode (and even +in insert mode) and that key is the beginning of a mapping, Vim waits a +certain amount of time to see if the rest of the mapping sequence follows. +If the mapping sequence is completed before a given timeout period, the +mapping for that sequence of keys is applied. If you interrupt the mapping, +the normal actions associated with the keys are executed. + +For example, if you have a mapping defined as ":imap vvv Vim is great!!" +and you type "vvv" quickly, the "Vim is great!!" will be inserted into your +text. But if you type "vv v" then that is what will put into your text. +This is also true if you type "vvv" too slowly where "too slowly" is longer +than the value for the timeout option. Setting the timeout option to a +larger value can help alleviate problems that appear when using function +keys over a slow line. + +For more information, read > + + :help ttimeout +< + *faq-19.16* +19.16. How do I make the 'c' and 's' commands display a '$' instead of + deleting the characters I'm changing? + +To make the 'c' and 's' commands display a '$' instead of deleting the +characters, add the $ flag to the 'cpoptions' option: > + + :set cpoptions+=$ +< +For more information, read > + + :help 'cpoptions' +< + *faq-19.17* +19.17. How do I remove more than one flag using a single ":set" command + from a Vim option? + +You can remove more than one flag from a Vim option using a single ":set" +command, by specifying the flags in exactly the same order as they appear +in the option. For example, if you use the following command to remove the +'t' and 'n' flags from the 'formatoptions' option: > + + :set formatoptions-=tn +< +The 't' and 'n' flags will be removed from the 'formatoptions' option, only +if the 'formatoptions' option contains these flags in this order: 'tn'. +Otherwise, it will not remove the flags. To avoid this problem, you can +remove the flags one by one: > + + :set formatoptions-=t formatoptions-=n +< +For more information, read > + + :help :set-= +< + +============================================================================= + *faq-20* +SECTION 20 - MAPPING KEYS + + *faq-20.1* +20.1. How do I know what a key is mapped to? + +To see what a key is mapped to, use the following commands: > + + :map <key> + :map! <key> +< +You can also check the mappings in a particular mode using one of the +":cmap", ":nmap", ":vmap", ":imap", ":omap", etc commands. + +For more information, read > + + :help map-listing + :help map-overview +< + *faq-20.2* +20.2. How do list all the user-defined key mappings? + +You can list all the user-defined key mappings using: > + + :map +< +For more information, read > + + :help map-listing +< + *faq-20.3* +20.3. How do I unmap a previously mapped key? + +You can unmap a previously mapped key using the ":unmap" command: > + + :unmap <key> + :unmap! <key> +< +For mode specific mappings, you can use one of the +":nunmap/:vunmap/:ounmap/:iunmap/:lunmap/:cunmap" commands. + +The following command will fail to unmap a buffer-local mapped key: > + + :unmap <key> +< +To unmap a buffer-local mapped key, you have to use the <buffer> keyword in +the unmap command: > + + :unmap <buffer> <key> + :unmap! <buffer> <key> +< +For more information, read > + + :help :unmap + :help map-modes + :help map-local + :help 'mapleader' +< + *faq-20.4* +20.4. I am not able to create a mapping for the <xxx> key. What is wrong? + +First make sure that the key is passed to Vim. In insert mode, press CTRL-V +followed by the desired key. You should see the keycode corresponding to +the key . If you do see the keycode, then you can create a mapping for the +key using the following command: > + + :map <C-V><xxx> <your_command_to_be_mapped> +< +For more information, read > + + :help map-keys-fails + :help :map-special-keys + :help key-codes +< + *faq-20.5* +20.5. How do I map the numeric keypad keys? + +First make sure that the numeric keypad keys are passed to Vim. Next, you +can use the following command to map the numeric keypad keys: > + + :map <kSomething> <your_command> +< +where, <kSomething> can be kHome, kEnd, kPageUp, kPageDown, kPlus, kMinus, +kDivide, kMultiply, kEnter, etc. + +For more information, read > + + :help key-codes + :help terminal-options +< + *faq-20.6* +20.6. How do I create a mapping that works only in visual mode? + +You can create mappings that work only in specific mode (normal, command, +insert, visual, etc). To create a mapping that works only in the visual +mode, use the ":vmap" command: > + + :vmap <F3> <your mapping here> +< +For more information, read > + + :help :vmap + :help map-modes + :help 40.1 +< + *faq-20.7* +20.7. In a Vim script, how do I know which keys to use for my mappings, so + that the mapped key will not collide with an already used key? + +Vim uses most of the keys in the keyboard. You can use the <leader> prefix +in maps to define keys which will not overlap with Vim keys. For example: > + + :map <leader>S <C-W>s + :map <leader>j <C-W>j + :map <leader>k <C-W>k +< +where by default <leader> gets substituted with a backslash (\), so the +user would enter > + + \s + \j + \k +< +to invoke the above map commands. The user can change the mapleader +variable to be whatever they wanted: > + + :let mapleader = "," +< +When writing a plugin or other script, more often than not, it is advisable +to use :noremap instead of :map to avoid side effects from user defined +mappings. + +For more information, read > + + :help <Leader> + :help <LocalLeader> + :help write-plugin +< + *faq-20.8* +20.8. How do I map the escape key? + +You can map the Escape key to some other key using the ":map" command. For +example, the following command maps the escape key to CTRL-O. > + + :map <C-O> <Esc> +< + *faq-20.9* +20.9. How do I map a key to perform nothing? + +You can map a key to <Nop> to perform nothing when the key is pressed. For +example, with the following mappings, the <F7> key will do nothing when +pressed. > + + :map <F7> <Nop> + :map! <F7> <Nop> +< +For more information, read > + + :help <Nop> + :help :map + :help :map! + :help map-modes +< + *faq-20.10* +20.10. I want to use the Tab key to indent a block of text and Shift-Tab + key to unindent a block of text. How do I map the keys to do this? + This behavior is similar to textpad, visual studio, etc. + +Use the following mapping: > + + :inoremap <S-Tab> <C-O><LT><LT> + :nnoremap <Tab> >> + :nnoremap <S-Tab> <LT><LT> + :vnoremap <Tab> > + :vnoremap <S-Tab> <LT> +< +Note that, the <S-Tab> mapping will work only if Vim receives the correct +key sequence. This is mostly the case with GUI Vim. + +For more information, read > + + :help :inoremap + :help :nnoremap + :help :vnoremap + :help <S-Tab> + :help i_CTRL-O + :help >> + :help << + :help <LT> +< + *faq-20.11* +20.11. In my mappings the special characters like <CR> are not recognized. + How can I configure Vim to recognize special characters? + +Check the value of the 'cpoptions' option: > + + :set cpoptions? +< +If this option contains the '<' flag, then special characters will not be +recognized in mappings. Remove the '<' flag from 'cpoptions' option: > + + :set cpo-=< +< +Also, check the value of the 'compatible' option: > + + :se compatible? +< +The 'compatible' option must be reset: > + + :se nocompatible +< +For more information, read > + + :help 'cpoptions' + :help 'compatible' +< + *faq-20.12* +20.12. How do I use the '|' to separate multiple commands in a map? + +You can escape the '|' character using backslash (\) to use '|' in a map. > + + :map _l :!ls \| more<CR> +< +You can also try the following command: > + + :map _l :!ls <bar> more<CR> +< +There are also other ways to do this. + +For more information, read > + + :help map_bar +< + *faq-20.13* +20.13. If I have a mapping/abbreviation whose ending is the beginning of + another mapping/abbreviation, how do I keep the first from expanding + into the second one? + +Instead of using the ":map lhs rhs" command, use the ":noremap lhs rhs" +command. For abbreviations, use "noreabbrev lhs rhs". The "nore" prefix +prevents the mapping or abbreviation from being expanded again. + +For more information, read > + + :help :noremap + :help :noreabbrev +< + *faq-20.14* +20.14. Why does it take a second or more for Vim to process a key, + sometimes when I press a key? + +Make sure you have not defined a mapping for this key using the following +command: > + + :map <key> +< +If a mapping is defined for this key and the mapped key contains more than +one character, then Vim will wait for the next character to be pressed to +determine whether it is the mapped key or not. For example, if you have +mapped "ab", then if you press "a", Vim will wait for the next key to be +pressed. If the next key is "b", Vim will execute the mapped sequence. +Otherwise, Vim will proceed with the normal processing of "a" followed by +the next key. If the 'timeout' option is set (which is the default), then +Vim will timeout after waiting for the period specified with the +'timeoutlen' option (default is 1 second). + +For more information, read > + + :help map-typing + :help 'timeoutlen' + :help 'ttimeoutlen' + :help 'timeout' + :help 'ttimeout' + :help vt100-cursor-keys + :help slow-fast-terminal +< + *faq-20.15* +20.15. How do I map a key to run an external command using a visually + selected text? + +You can the ":vmap" command to map a key in the visual mode. In the mapped +command sequence, you have to first yank the text. The yanked text is +available in the '"' register. Now, you can use the contents of this +register to run the external command. For example, to run the external +command "perldoc" on a visually selected text, you can use the following +mapping: > + + :vmap <F7> y:!exec "!perldoc '" . @" . "'"<CR> +< +If you want the mapping to work in the visual mode, but not with the +highlighted text, you can use the following command: > + + :vmap <F7> :<C-U>!perldoc <cword><CR> +< +The above mapping will use the word under the cursor instead of the +highlighted text. Note the use of the <C-U> before invoking the "perldoc" +external command. The <C-U> is used to erase the range of text selected in +the visual mode and displayed on the command line. If the visual range is +not removed using <C-U>, then the output from the external command will +replace the visually selected text. + +For more information, read > + + :help :vmap + :help quote_quote + :help let-register + :help c_CTRL-U + :help :!cmd +< + *faq-20.16* +20.16. How do I map the Ctrl-I key while still retaining the functionality + of the <Tab> key? + +The Ctrl-I key and the <Tab> key produce the same keycode, so Vim cannot +distinguish between the Ctrl-I and the <Tab> key. When you map the Ctrl-I +key, the <Tab> key is also mapped (and vice versa). The same restriction +applies for the Ctrl-[ key and the <Esc> key. + +For more information, read > + + :help keycodes +< + +============================================================================= + *faq-21* +SECTION 21 - ABBREVIATIONS + + *faq-21.1* +21.1. How do I auto correct misspelled words? + +You can auto correct misspelled words using abbreviations. For example, the +following abbreviation can be used to correct "teh" with "the": > + + :abbreviate teh the +< +Vim supports abbreviations in insert mode, replace mode and command-line +mode. + +For more information, read > + + :help 24.7 + :help abbreviations + :help Q_ab +< + *faq-21.2* +21.2. How do I create multi-line abbreviations? + +You can create multi-line abbreviations by embedding the "<CR>" +key code in the text: > + + iabbrev #c --------------<CR>-- Date:<CR>--<CR>--------- +< +With the above abbreviation, when you type #c, it will be expanded to +the following text: + +-------------- +-- Date: +-- +--------- + +For more information, read > + + :help abbreviations +< + *faq-21.3* +21.3. When my abbreviations are expanded, an additional space character is + added at the end of the expanded text. How do I avoid this character? + +To avoid an additional space character at the end of the expanded text, you +can expand the abbreviation by pressing the CTRL-] key. The abbreviation +will be expanded without adding a space character at the end. + +Another alternative is to use the following function and command: + +function! Eatchar(pat) + let c = nr2char(getchar()) + return (c =~ a:pat) ? '' : c +endfunction +command! -nargs=+ Iabbr execute "iabbr" <q-args> . "<C-R>=Eatchar('\\s')<CR>" + +Now, define your abbreviations using the new "Iabbr" command instead of the +builtin "iabbrev" command. With this command, after expanding the +abbreviated text, the next typed space character will be discarded. + +For more information, read > + + :help abbreviations +< + *faq-21.4* +21.4. How do I insert the current date/time stamp into the file? + +You can use the strftime() function to insert the current data/time stamp +in a file. For example, you can use the following abbreviation: > + + iabbrev dts <C-R>=strftime("%y/%m/%d %H:%M")<CR> +< +With this abbreviation, when you type dts in insert mode, it will be +expanded to the date/time stamp. + +Some other forms of the above abbreviation are listed below: > + + iabbrev mdyl <C-R>=strftime("%a %d %b %Y")<CR> + iabbrev mdys <C-R>=strftime("%y%m%d")<CR> + iabbrev mdyc <C-R>=strftime("%c")<CR> + iabbrev hml <C-R>=strftime("%d/%m/%y %H:%M:%S")<CR> + iabbrev hms <C-R>=strftime("%H:%M:%S")<CR> +< +For more information, read > + + :help strftime() + :help i_CTRL-R +< + *faq-21.5* +21.5. How do I prevent an abbreviation from expanding in insert mode? + +You can prevent an abbreviation from expanding in insert mode by typing +CTRL-V before the character after the abrreviated word. + +For more information, read > + + :help abbreviations +< + +============================================================================= + *faq-22* +SECTION 22 - RECORD AND PLAYBACK + + *faq-22.1* +22.1. How do I repeat an editing operation (insertion, deletion, paste, + etc)? + +You can repeat the last editing operation using the '.' command. This will +repeat the last simple change like a insert, delete, change, paste, etc. + +For more information, read > + + :help 04.3 + :help single-repeat + :help Q_re +< + *faq-22.2* +22.2. How I record and repeat a set of key sequences? + +You can use the 'q' command in normal mode to record a set of key sequences +and store it in a register. For example, in the normal mode you can press q +followed by a register name {0-9a-bA-Z"} to start the recording. To +end/stop the recording press q again. You can playback/repeat the recorded +key sequences by pressing @ followed by the register name. e.g. @a. + +Another approach is to start Vim with the "-w" command-line argument. > + + $ vim -w <file_name> +< +Vim will record all the characters typed in the session in the +specified file "file_name". You can use the recorded file with the "-s" +command line argument to play it back: > + + $ vim -s <file_name> +< +For more information, read > + + :help 10.1 + :help recording + :help -w + :help -s +< + *faq-22.3* +22.3. How do I edit/modify a recorded set of key sequences? + +The recorded key sequences are stored in a register. You can paste the +contents of the register into a Vim buffer, edit the pasted text and again +yank the text into the register. You can also use the ":let" command to +modify the register. For example: > + + :let @a = "iHello World\<Esc>" +< +For more information, read > + + :help recording + :help 10.1 + :help let-register + :help <> + :help 'cpoptions' +< + *faq-22.4* +22.4. How do I write recorded key sequences to a file? + +The recorded key sequences are stored in a register. You can paste the +contents of the register into a Vim buffer. Now you can save the buffer +into a file. You can also modify the pasted text and again yank into the +register to modify the recorded key sequence. For example, if you record a +set of key sequences using qa ..... q. The recorded key sequences are +stored in the register 'a'. You can paste the contents of register 'a' +using "ap. + +For more information, read > + + :help recording + :help 10.1 +< + *faq-22.5* +22.5. I am using register 0 to record my key sequences (i.e. q0 .... q). + In the recorded key sequences, I am yanking some text. After the + first replay of the recorded key sequence, I am no longer able to + play it back. + +Register 0 contains the text from the last yank operation. In your recorded +key sequence, when the yank is performed, register 0 is overwritten with +the yanked text. So your recording stored in register 0 is lost. You have +to use some other register. + +For more information, read > + + :help registers +< + +============================================================================= + *faq-23* +SECTION 23 - AUTOCOMMANDS + + *faq-23.1* +23.1. How do I execute a command when I try to modify a read-only file? + +You can use the FileChangedRO autocommand event to execute a command when a +read-only file modified. For example, you can use this event to checkout a +read-only file: > + + :autocmd FileChangedRO * call MyCheckoutFunction() +< +For more information, read > + + :help FileChangedRO +< + *faq-23.2* +23.2. How do I execute a command every time when entering a buffer? + +You can use the BufEnter autocommand event to execute a command every time +when entering a buffer. For example: > + + :autocmd BufEnter *.c set formatoptions=croqt +< +For more information, read > + + :help BufEnter +< + *faq-23.3* +23.3. How do I execute a command every time when entering a window? + +You can use the WinEnter autocommand event to execute a command every time +when entering a window. For example: > + + :autocmd WinEnter *.c call MyFunction() +< +For more information, read > + + :help WinEnter +< + *faq-23.4* +23.4. From an autocmd, how can I determine the name of the file or the + buffer number for which the autocommand is executed? + +You can use the special words <afile> or <abuf> in an autocmd to get the +name of the file or the buffer number for which the autocommand is +executed. + +For more information, read > + + :help :<afile> + :help :<abuf> + :help :<amatch> +< + *faq-23.5* +23.5. How do I automatically save all the changed buffers whenever Vim + loses focus? + +You can define an autocommand for the FocusLost event which will save all +the modified buffers whenever Vim loses focus: > + + :autocmd FocusLost * wall +< +For more information, read > + + :help FocusLost + :help :wall +< + *faq-23.6* +23.6. How do I execute/run a function when Vim exits to do some cleanup? + +You can use VimLeave autocmd event to execute a function just before Vim +exists. For example, > + + :autocmd VimLeave * call MyCleanupFunction() +< +For more information, read > + + :help VimLeave +< + +============================================================================= + *faq-24* +SECTION 24 - SYNTAX HIGHLIGHT + + *faq-24.1* +24.1. How do I turn off/on syntax highlighting? + +By default, the Vim syntax highlighting is turned off. To enable the syntax +highlighting, you can use one of the following commands: > + + :syntax enable +< + or > + + :syntax on +< +To disable the syntax highlighting, you can use the following command: > + + :syntax off +< +For more information, read > + + :help 06.1 + :help 06.4 + :help :syntax-enable + :help :syntax-on + :help :syn-clear +< + *faq-24.2* +24.2. How do I change the background and foreground colors used by Vim? + +Vim uses the "Normal" highlight group for the background and foreground +colors. To change the foreground/background colors, you have to modify the +"Normal" highlight group. For example, to set the background color to blue +and foreground color to white, you can use > + + :highlight Normal ctermbg=blue ctermfg=white guibg=blue guifg=white +< +If you are using the Motif or the Athena version of the GUI Vim, then you +can modify the foreground and background resource names in the .Xdefaults +files to change the colors: > + + Vim.foreground: Black + Vim.backround: Wheat +< +You can also use the "-foreground" and "-background" command-line arguments +to specify the foreground and background colors. These arguments are +supported only in the Motif or Athena versions: > + + $ gvim -foreground Black -background Wheat +< +For more information, read > + + :help :highlight + :help .Xdefaults + :help -gui +< + *faq-24.3* +24.3. How do I change the highlight colors to suit a dark/light background? + +You can set the 'background' option to either 'dark' or 'light' to change +the highlight colors to suit a dark/light background: > + + :set background=dark +< +For more information, read > + + :help 'background' + :help 6.2 +< + *faq-24.4* +24.4. How do I change the color of the line numbers displayed when the + ":set number" command is used? + +The line numbers displayed use the LineNr highlighting group. To display +the current colors used, use > + + :hi LineNr +< +To change the color modify the LineNr highlight group. For example: > + + :hi linenr guifg=red guibg=black +< +This will give red numbers on a black background in GVIM. + +For more information, read > + + :help :highlight +< + *faq-24.5* +24.5. How do I change the background color used for a Visually selected + block? + +You can modify the 'Visual' highlight group to change the color used for a +visually selected block: > + + :highlight Visual guibg=red +< +For more information, read > + + :help :highlight + :help hl-Visual +< + *faq-24.6* +24.6. How do I highlight the special characters (tabs, trailing spaces, end + of line, etc) displayed by the 'list' option? + +You can modify the "NonText" and "SpecialKey" highlight groups to highlight +the special characters displayed by the 'list' option: > + + :highlight NonText guibg=red + :highlight SpecialKey guibg=green +< +The "NonText" highlighting group is used for "eol", "extends" and +"precedes" settings in the "listchars" option. The "SpecialKey" +highlighting group is used for the "tab" and "trail" settings. + +For more information, read > + + :help 'listchars' + :help hl-NonText + :help hl-SpecialKey +< + *faq-24.7* +24.7. How do I specify a colorscheme in my .vimrc/.gvimrc file, so that Vim + uses the specified colorscheme everytime? + +You can specify the color scheme using the ":colorscheme" command in your +.vimrc or .gvimrc file: > + + colorschme evening +< +For more information, read > + + :help :colorscheme +< + *faq-24.8* +24.8. Vim syntax highlighting is broken. When I am editing a file, some + parts of the file is not syntax highlighted or syntax highlighted + incorrectly. + +Vim doesn't read the whole file to parse the text for syntax highlighting. +It starts parsing wherever you are viewing the file. That saves a lot of +time, but sometimes the colors are wrong. A simple fix is refreshing the +screen using the CTRL-L key. Or scroll back a bit and then forward again. +You can also use the command: > + + :syntax sync fromstart +< +Note that this might considerably slow down the screen refreshing. + +For more information, read > + + :help :syn-sync + :help :syn-sync-first +< + *faq-24.9* +24.9. Is there a built-in function to syntax-highlight the corresponding + matching bracket? + +No. Vim doesn't support syntax-highlighting matching brackets. You can try +using the plugin developed by Charles Campbell: > + + http://vim.sourceforge.net/tips/tip.php?tip_id=177 +< +You can jump to a matching bracket using the '%' key. You can set the +'showmatch' option to temporarily jump to a matching bracket when in insert +mode. + +For more information, read > + + :help % + :help 'showmatch' + :help 'matchtime' + :help 'matchpairs' +< + *faq-24.10* +24.10. How do I turn off the C comment syntax highlighting? + +You can use the following command to turn off C comment syntax +highlighting: > + + :highlight clear comment +< +For more information, read > + + :help c-syntax +< + *faq-24.11* +24.11. How do I add my own syntax extensions to the standard syntax files + supplied with Vim? + +You should not modify the syntax files supplied with Vim to add your +extensions. When you install the next version of Vim, you will lose your +changes. Instead you should create a file under the ~/.vim/after/syntax +directory with the same name as the original syntax file and add your +additions to this file. + +For more information, read > + + :help mysyntaxfile-add + :help 'runtimepath' +< + *faq-24.12* +24.12. How do I replace a standard syntax file that comes with the Vim + distribution with my own syntax file? + +You can replace a standary syntax file that comes with the Vim distribution +by creating a file with the same name as the original syntax file and +placing it in the vim runtime syntax (~/.vim/syntax) directory. For +example, to replace the c.vim syntax file in a Unix system, place the new +c.vim in the ~/.vim/syntax directory. In a MS-Windows system, place the new +syntax file in the $HOME/vimfiles/syntax or $VIM/vimfiles/syntax directory. + +For more information, read > + + :help mysyntaxfile-replace + :help 44.11 + :help mysyntaxfile +< + *faq-24.13* +24.13. How do I highlight all the characters after a particular column? + +You can use the ":match" command to highlight all the characters after a +particular column: > + + :match Todo '\%>75v.\+' +< +This will highlight all the characters after the 75th column. + +For more information, read > + + :help :match + :help /\%v + :help /\+ + :help /. +< + *faq-24.14* +24.14. How do I convert a source file (.c, .h, etc) with the Vim syntax + highlighting into a HTML file? + +You can use the 2html.vim script to convert a source file into a HTML file +with the Vim syntax highlighting. Use the following command: > + + :runtime! syntax/2html.vim +< +For more information, read > + + :help convert-to-HTML +< + *faq-24.15* +24.15. How do I list the definition of all the current highlight groups? + +You can list the definition of all the current highlight groups using the +":highlight" (without any arguments) ex command. + +For more information, read > + + :help :highlight +< + +============================================================================= + *faq-25* +SECTION 25 - VIM SCRIPT WRITING + + *faq-25.1* +25.1. How do I list the names of all the scripts sourced by Vim? + +You can use the ":scriptnames" command to list the names of all the scripts +sourced by Vim: > + + :scriptnames +< +For more information, read > + + :help :scriptnames +< + *faq-25.2* +25.2. How do I debug Vim scripts? + +Vim has built-in support for a primitive debugger to debug Vim plugins and +scripts. Using this debugger you can set breakpoints and step through the +plugin functions. + +For more information, read > + + :help debug-scripts + :help -D +< + *faq-25.3* +25.3. How do I locate the script/plugin which sets a Vim option? + +You can use the ":verbose" command to locate the plugin/script which last +modified a Vim option. For example: > + + :verbose set textwidth? +< +For more information, read > + + :help :set-verbose + :help :verbose +< + *faq-25.4* +25.4. I am getting some error/informational messages from Vim (possibly + when running a script), the messages are cleared immediately. How do + I display the messages again? + +You can use the ":messages" command to display the previous messages. > + + :messages +< +For more information, read > + + :help :messages + :help :echoerr + :help :echomsg + :help message-history +< + *faq-25.5* +25.5. How do I save and restore a plugin specific information across Vim + invocations? + +Vim will save and restore global variables that start with an uppercase +letter and don't contain a lower case letter. For this to work, the +'viminfo' option must contain the '!' flag. Vim will store the variables in +the viminfo file. + +For more information, read > + + :help 'viminfo' + :help viminfo-file + :help variables +< + *faq-25.6* +25.6. How do I start insert mode from a Vim function? + +You can use the ":startinsert" command to start the insert mode from inside +a Vim function. + +For more information, read > + + :help :startinsert +< + *faq-25.7* +25.7. How do I change the cursor position from within a Vim function? + +You can use the cursor() function to position the cursor. > + + call cursor(lnum, col) +< +You can also use the following command to change the cursor position: > + + exe "normal! " . lnum . "G" . col . "|" +< +For more information, read > + + :help cursor() + :help bar +< + *faq-25.8* +25.8. How do I check the value of an environment variable in the .vimrc + file? + +You can use prefix the environment variable name with the '$' character to +use it from a Vim script/function. You can refer to the value of an +environment variable using the $env_var syntax: > + + if $EDITOR == 'vi' + endif +< +For more information, read > + + :help expr-env +< + *faq-25.9* +25.9. How do I check whether an environment variable is set or not from a + Vim function? + +You can use the exists() function to check for the existence of a +environment variable. > + + if exists("$MY_ENV_VAR") + endif +< +For more information, read > + + :help exists() + :help expr-env +< + *faq-25.10* +25.10. How do I call/use the Vim built-in functions? + +You can use the ":call" command to invoke a Vim built-in function: > + + :call cursor(10,20) +< +You can use the ":echo" command to echo the value returned by a function: > + + :echo char2nr('a') +< +You can use the ":let" command to assign the value returned by a function +to a variable: > + + :let a = getline('.') +< +To store the return value from a function into a Vim register, you can use +the following command: > + + :let @a = system('ls') +< +The above command will store the return value from the 'ls' command into +the register 'a'. + +For more information, read > + + :help :call + :help :echo + :help :let + :help :let-register + :help user-functions + :help usr_41.txt +< + *faq-25.11* +25.11. I am using some normal mode commands in my Vim script. How do I + avoid using the user-defined mappings for these normal mode commands + and use the standard Vim functionality for these normal mode + commands? + +You can use the "normal!" command in your script to invoke a normal-mode +command. This will use the standard functionality of the normal mode +command and will not use the user-defined mapping. + +For more information, read > + + :help :normal +< + *faq-25.12* +25.12. How do I get the current visually selected text into a Vim variable + or register? + +You can get the current visually selected text into a Vim variable by +yanking the text into Vim register and then assigning the contents of the +register into the variable: > + + :normal! gvy + :let myvar = @" +< +The above command copies the visually selected text into the variable +"myvar". + +You can also use the command: > + + :normal! gv"*y +< +In the above command, gv reselects the last visually selected text and the +rest of the command copies the selected text into the * (clipboard) +register. Alternatively, you can set the 'a' flag in the 'guioptions' +option to automatically copy a visually selected text into the * register. +To do this as part of a visual map, you can use a command similar to the +one shown below: > + + :vmap <F3> "*y:call ... +< +For more information, read > + + :help gv + :help :normal + :help let-@ + :help quotestar + :help clipboard + :help registers +< + *faq-25.13* +25.13. I have some text in a Vim variable 'myvar'. I would like to use this + variable in a ":s" substitute command to replace a text 'mytext'. + How do I do this? + +You can use the 'execute' command to evaluate the variable: > + + :execute '%s/mytext/' . myvar . '/' +< +For more information, read > + + :help :execute +< +You can also use "\=" in the substitute command to evaluate the variable: > + + :%s/mytext/\=myvar/ +< +For more information, read > + + :help sub-replace-special +< + *faq-25.14* +25.14. A Vim variable (bno) contains a buffer number. How do I use this + variable to open the corresponding buffer? + +The :buffer command will not accept a variable name. It accepts only a +buffer number or buffer name. You have to use the ":execute" command to +evaluate the variable into the corresponding value. For example: > + + :execute "buffer " . bno +< +For more information, read > + + :help :execute +< + *faq-25.15* +25.15. How do I store the value of a Vim option into a Vim variable? + +You can prefix the option name with the '&' character and assign the option +value to a Vim variable using the "let" command. For example, to store the +value of the 'textwidth' option into the Vim variable "old_tw", you can use +the following command: > + + :let old_tw = &tw +< +To do the opposite, to set the 'textwidth' option with the value stored in +the 'old_tw' variable, you can use the following command: > + + :let &tw = old_tw +< +For more information, read > + + :help expr-option + :help let-option +< + *faq-25.16* +25.16. I have copied and inserted some text into a buffer from a Vim + function. How do I indent the inserted text from the Vim function? + +You can use the following command to format the just inserted text: > + + :normal '[='] +< +For more information, read > + + :help '[ + :help '] + :help = + :help :normal +< + *faq-25.17* +25.17. How do I get the character under the cursor from a Vim script? + +You can use the getline() function and use string index [] to get the +character: > + + :echo getline(".")[col(".") - 1] +< +In the above command, getline(".") returns the text in the current line. +The indexing of the string starts at zero, and you can get a single +character in a string by its index with the "string[index]" notation. The +col(".") returns the column of the cursor position; the adjustment is to +get the right character of the string. + +Alternatively, you can use the following sequence of commands to get the +character under the cursor: > + + normal! vy + let ch=@" +< +Note that the above commands will change the '< and '> marks. + +For more information, read > + + :help getline() + :help col() + :help expr-[] +< + *faq-25.18* +25.18. How do I get the name of the current file without the extension? + +You can get the name of the current file without the extension using: > + + :echo expand("%:r") +< +With some commands, you can use the file name modifiers directly: > + + :cd %:p:h + :!gcc -o %:r.o % +< +For more information, read > + + :help filename-modifiers + :help expand() + :help cmdline-special + :help fnamemodify() +< + *faq-25.19* +25.19. How do I get the basename of the current file? + +You can use the :t filename modifier to get the basename of the current +file: > + + :echo expand("%:t") +< +For more information, read > + + :help filename-modifiers +< + *faq-25.20* +25.20. How do I get the output from a Vim function into the current buffer? + +You can insert the return value from a function using the following command +in insert mode: > + + <C-R>=MyFunc() +< +Note that this will only insert the return value of the function. + +For more information, read > + + :help i_CTRL-R + :help i_CTRL-R_CTRL-R + :help i_CTRL-R_CTRL-O + :help expression +< + *faq-25.21* +25.21. How do I call external programs from a Vim function? + +There are several ways to call external programs from a Vim function. You +can use the builtin system() function to invoke external programs and get +the result: > + + :let output = system("ls") +< +You can also use "!" ex-command to run an external command. + +For more information, read > + + :help system() + :help :! + :help 10.9 +< + *faq-25.22* +25.22. How do I get the return status of a program executed using the ":!" + command? + +You can use the predefined Vim v:shell_error variable to get the return +status of the last run shell command. + +For more information, read > + + :help v:shell_error +< + *faq-25.23* +25.23. How do I determine whether the current buffer is modified or not? + +You can check the value of the 'modified' option to determine whether the +current buffer is modified: > + + :set modified? +< +From a Vim script, you can check the value of the 'modified' option: > + + if &modified + echo "File is modified" + endif +< +For more information, read > + + :help 'modified' +< + *faq-25.24* +25.24. I would like to use the carriage return character in a normal + command from a Vim script. How do I specify the carriage return + character? + +You can use the ":execute" command to specify the special (control) +character in a normal mode command: > + + :execute "normal \<CR>" + :execute "normal ixxx\<Esc>" +< +For more information, read > + + :help :execute + :help expr-quote +< + *faq-25.25* +25.25. How do I split long lines in a Vim script? + +You can split long lines in a Vim script by inserting the backslash +character ("\") at the start of the next line. For example, + +For more information, read > + + :help line-continuation +< + *faq-25.26* +25.26. When I try to "execute" my function using the "execute 'echo + Myfunc()'" command, the cursor is moved to the top of the current + buffer. Why? + +The ":execute" command runs the normal mode command specified by the +argument. In the case of the following command: > + + :execute "echo Myfunc()" +< +The call to "echo Myfunc()" will return 0. The ":execute" command will run +the normal mode command "0", which moves the cursor to the top of the file. +To call a Vim function, you should use the ":call" command instead of the +":execute" command: > + + :call Myfunc() +< +For more information, read > + + :help :call + :help :execute + :help :echo + :help user-functions + :help 41.5 + :help 41.6 +< + *faq-25.27* +25.27. How do I source/execute the contents of a register? + +If you have yanked a set of Vim commands into a Vim register (for example +register 'a'), then you can source the contents of the register using one +of the following commands: + + :@a +or + :exe @a + +For more information, read > + + :help :@ +< + *faq-25.28* +25.28. After calling a Vim function or a mapping, when I press the 'u' + key to undo the last change, Vim undoes all the changes made by + the mapping/function. Why? + +When you call a function or a mapping, all the operations performed by the +function/mapping are treated as one single operation. When you undo the +last operation by pressing 'u', all the changes made by the +function/mapping are reversed. + +For more information, read > + + :help undo-redo + :help map-undo +< + *faq-25.29* +25.29. How can I call a function defined with s: (script local function) + from another script/plugin? + +The s: prefix for a Vim function name is used to create a script local +function. A script local function can be called only from within that +script and cannot be called from other scripts. To define a function in a +script/plugin, so that it can be called from other plugins/scripts, define +the function without the s: prefix. + +For more information, read > + + :help script-variable + :help script-local + :help :scriptnames +< + *faq-25.30* +25.30. Is it possible to un-source a sourced script? In otherwords, reverse + all the commands executed by sourcing a script. + +No. It is not possible to reverse or undo all the commands executed by +sourcing a script. + +For more information, read > + + :help :source +< + +============================================================================= + *faq-26* +SECTION 26 - PLUGINS + + *faq-26.1* +26.1. How do I set different options for different types of files? + +You can create filetype plugins to set different options for different +types of files. You should first enable filetype plugins using the command: > + + :filetype plugin on +< +A filetype plugin is a vim script that is loaded whenever Vim opens or +creates a file of that type. For example, to ensure that the 'textwidth' +option is set to 80 when editing a C program (filetype 'c'), create one of +the following files: > + + ~/.vim/ftplugin/c.vim (Unix) + %HOME%\vimfiles\ftplugin\c.vim (Windows) +< +with the following text in it: > + + setlocal textwidth=80 +< +You can also use autocommands to set specific options when editing specific +type of files. For example, to set the 'textwidth' option to 75 for only +*.txt files, you can use the following autocmd: > + + autocmd BufRead *.txt setlocal textwidth=80 +< +For more information, read > + + :help filetype-plugin + :help add-filetype-plugin + :help autocmd + :help 40.3 +< + *faq-26.2* +26.2. I have downloaded a Vim plugin or a syntax file or a indent file, or + a color scheme or a filetype plugin from the web. Where should I copy + these files so that Vim will find them? + +You can place the Vim runtime files (plugins, syntax files, indent files, +color schemes, filetype plugins, etc) under one of the directories +specified in the 'runtimepath' option. To determine the current value of +the 'runtimepath' option, use the following command: > + + :set runtimepath +< +For Unix systems, this is usally the "$HOME/.vim" directory. For MS-Windows +systems, this is usually the $VIM\vimfiles or $HOME\vimfiles directory. +Depending on the type of the runtime file, you have to place it under a +specific directory under the above runtime directory. The names of the +directories are listed below: > + + colors/ - color scheme files + compiler/ - compiler files + doc/ - documentation + ftplugin/ - filetype plugins + indent/ - indent scripts + keymap/ - key mapping files + lang/ - menu translations + plugin/ - plugin scripts + syntax/ - syntax files + tutor/ - files for vimtutor +< +For more information, read > + + :help your-runtime-dir + :help 'runtimepath' + :help :runtime +< + *faq-26.3* +26.3. How do I extend an existing filetype plugin? + +You can extend an existing filetype plugin by creating a file under either +the $VIMRTUNTIME/after/ftplugin or the $VIMRTUNTIME/ftplugin directory. The +name of the file should be the same as the name of the existing filetype +plugin file. You can place your additions to the new file. + +If you placed the file in the after/ftplugin runtime directory, then Vim +will first source the existing filetype plugin file and then will source +the new file. If you placed the file in the $VIMRTUNTIME/ftplugin runtime +directory, then Vim will first source the new file and then will source the +existing filetype plugin file. + +For more information, read > + + :help ftplugin-overrule + :help filetype-plugin + :help add-filetype-plugin + :help 'runtimepath' +< + *faq-26.4* +26.4. How do I turn off loading the Vim plugins? + +You can reset the 'loadplugins' option to turn off loading the plugins: > + + :set noloadplugins +< +You can also specify the "--noplugin" command line argument to stop loading +the plugins: > + + $ vim --noplugin +< +For more information, read > + + :help 'loadplugins' + :help --noplugin + :help load-plugins +< + *faq-26.5* +26.5. How do I turn on/off loading the filetype plugins? + +By default, Vim will not load the filetype plugins. You can configure Vim +to load filetype plugins using the command: > + + filetype plugin on +< +You can turn off loading the filetype plugins using: > + + filetype plugin off +< +For more information, read > + + :help filetype-plugin-on + :help filetype-plugin-off + :help :filetype +< + *faq-26.6* +26.6. How do I override settings made in a file type plugin in the global + ftplugin directory for all the file types? + +You can use an autocommand triggered on the FileType event: > + + au Filetype * set formatoptions=xyz +< +This should at least be after "filetype on" in your vimrc. Best is to put +it in your "myfiletypefile" file, so that it's always last. + +If you want to override a setting for a particular filetype, then create a +file with the same name as the original filetype plugin in the +~/.vim/after/ftplugin directory For example, to override a setting in the +c.vim filetype plugin, create a c.vim file in the ~/.vim/after/ftplugin +directory and add your preferences in this file. + +For more information, read > + + :help ftplugin-overrule + :help ftplugins + :help myfiletypefile +< + *faq-26.7* +26.7. How do I disable the Vim directory browser plugin? + +To disable the directory browsing Vim plugin, add the following line to +your .vimrc file: > + + let loaded_explorer = 1 +< +For more information, read > + + :help file-explorer +< + *faq-26.8* +26.8. How do I set the filetype option for files with names matching a + particular pattern or depending on the file extension? + +You can set the 'filetype' option for files with names matching a +particular pattern using an autocmd. For example, to set the 'filetype' +option to 'c' for all files with extension '.x', you can use the following +autocmd: > + + autocmd! BufRead,BufNewFile *.x setfiletype c +< +A better alternative to the above approach is to create a filetype.vim file +in the ~/.vim directory (or in one of the directories specified in the +'runtimepath' option) and add the following lines: > + + " my filetype file + if exists("did_load_filetypes") + finish + endif + augroup filetypedetect + au! BufRead,BufNewFile *.x setfiletype c + augroup END +< +For more information, read > + + :help new-filetype + :help 43.2 + :help :setfiletype +< + +============================================================================= + *faq-27* +SECTION 27 - EDITING PROGRAM FILES + + *faq-27.1* +27.1. How do I enable automatic indentation for C/C++ files? + +You can enable file-type based indentation using: > + + :filetype indent on +< +If you want to only enable automatic C indentation, then use: > + + :set cindent +< +For more information, read > + + :help 'cindent' + :help C-indenting + :help filetype +< + *faq-27.2* +27.2. How do I configure the indentation used for C/C++ files? + +You can configure the Vim C indentation by modifying the value of the +'cinoptions', 'cinkeys' and 'cinwords' options. + +For more information, read > + + :help 'cindent' + :help 'cinoptions' + :help 'cinkeys' + :help 'cinwords' + :help C-indenting + :help cinoptions-values + :help 'smartindent' +< + *faq-27.3* +27.3. How do I turn off the automatic indentation feature? + +By default, the automatic indentation is not turned on. You must have +configured Vim to do automatic indentation in either .vimrc or .gvimrc +files. You can disable automatic indentation using either, > + + :filetype indent off +< +or > + + :set nocindent +< +Also, check the setting for the following options: > + + :set autoindent? + :set smartindent? + :set indentexpr? +< +For more information, read > + + :help 'cindent' + :help filetype-indent-off + :help 'autoindent' + :help 'smartindent' + :help 'indentexpr' +< + *faq-27.4* +27.4. How do I change the number of space characters used for the automatic + indentation? + +You can modify the 'shiftwidth' option to change the number of space +characters used for the automatic indentation: > + + :set shiftwidth=4 +< +For more information, read > + + :help 'shiftwidth' +< + *faq-27.5* +27.5. I am editing a C program using Vim. How do I display the definition + of a macro or a variable? + +You can use the [d command to display the definition of a macro and the [i +command to display the definition of a variable. + +For more information, read > + + :help [d + :help [i + :help include-search + :help 29.4 + :help 29.5 +< + *faq-27.6* +27.6. I am editing a C program using Vim. How do I jump to the beginning or + end of a code block from within the block? + +You can use '[{' command to jump to the beginning of the code block and ']} +to jump to the end of the code block from inside the block. + +For more information, read > + + :help [{ + :help ]} + :help various-motions +< + *faq-27.7* +27.7. Is there a way to turn off the "//" comment auto-insertion behavior + for C++ files? If I'm sitting on a line beginning with "//", then I + open a new line above or below it, Vim automatically inserts new "//" + chars. + +You can modify the value of the 'comments' option to stop Vim from +inserting the C++ comment character ("//") automatically. For example: > + + :set comments=sr:/*,mb:*,el:*/ +< +For more information, read > + + :help 'comments' + :help format-comments +< + *faq-27.8* +27.8. How do I add the comment character '#' to a set of lines at the + beginning of each line? + +First, select the first character in all the lines using visual block mode +(CTRL-V). Press 'I' to start inserting characters at the beginning of the +line. Enter the comment character and then stop the insert mode by pressing +<Esc>. Vim will automatically insert the entered characters at the +beginning of all the selected lines. + +For more information, read > + + :help visual-block + :help blockwise-operators + :help v_b_I +< + *faq-27.9* +27.9. How do I edit a header file with the same name as the corresponding C + source file? + +You can use the following command to edit a header file with the same name +as the corresponding C source file: > + + :e %:t:r.h +< +You can use the following command to edit the file in a new split window: > + + :sp %:t:r.h +< +In the above commands, the percent sign expands to the name of the current +file. The ":t" modifier extracts the tail (last component) of the +filename. The ":r" modifier extracts the root of the filename. The .h is +appended to the resulting name to get the header filename. + +Another approach is to use the following command: > + + :sfind %:t:r.h +< +This command will search for the header file in the directories specified +in the 'path' option. + +For more information, read > + + :help cmdline-special + :help filename-modifiers + :help :sfind + :help 'path' +< + *faq-27.10* +27.10. How do I automatically insert comment leaders while typing comments? + +To automatically insert comment leaders while typing comments, add the 'r' +and 'o' flags to the 'formatoptions' option. > + + :set formatoptions+=ro +< +You may also want to add the 'c' flag to auto-wrap comments using the +'textwidth' option setting and the 'q' flag to format comments with the +"gq" command: > + + :set formatoptions=croq +< +For more information, read > + + :help 30.6 + :help format-comments + :help 'comments' + :help fo-table +< + +============================================================================= + *faq-28* +SECTION 28 - QUICKFIX + + *faq-28.1* +28.1. How do I build programs from Vim? + +You can use the ":make" command to build programs from Vim. The ":make" +command runs the program specified by the 'makeprg' option. + +For more information, read > + + :help 30.1 + :help make_makeprg + :help 'makeprg' + :help 'makeef' + :help :make + :help quickfix +< + *faq-28.2* +28.2. When I run the make command in Vim I get the errors listed as the + compiler compiles the program. When it finishes this list disappears + and I have to use the :clist command to see the error message again. + Is there any other way to see these error messages? + +You can use the ":copen" or ":cwindow" command to open the quickfix window +that contains the compiler output. You can select different error lines +from this window and jump to the corresponding line in the source code. + +For more information, read > + + :help :copen + :help :cwindow + :help quickfix +< + +============================================================================= + *faq-29* +SECTION 29 - FOLDING + + *faq-29.1* +29.1. How do I extend the Vim folding support? + +You can use the 'foldexpr' option to fold using an user specified function. +For example, to fold subroutines of the following form into a single line: > + + sub foo { + my $barf; + $barf = 3; + return $barf; + } +< +You can use the following commands: > + + set foldmethod=expr + set foldexpr=MyFoldExpr(v:lnum) + fun! MyFoldExpr(line) + let str = getline(a:line) + if str =~ '^sub\>' + return '1' + elseif str =~ '^}' + return '<1' + else + return foldlevel(a:line - 1) + endif + endfun +< +For more information, read > + + :help 'foldexpr' + :help fold-expr +< + *faq-29.2* +29.2. When I enable folding by setting the 'foldmethod' option, all the + folds are closed. How do I prevent this? + +You can set the 'foldlevelstart' option to a particular value to close only +folds above the specified value. > + + :set foldlevelstart=99 +< +For more information, read > + + :help 'foldlevelstart' + :help 'foldlevel' + :help fold-foldlevel +< + *faq-29.3* +29.3. How do I control how many folds will be opened when I start editing a + file? + +You can modify the 'foldlevelstart' option to control the number of folds +that will be opened when you start editing a file. To start editing with +all the folds closed: > + + :set foldlevelstart=0 +< +For more information, read > + + :help 'foldlevelstart' +< + *faq-29.4* +29.4. How do I open and close folds using the mouse? + +You can click on the + and - characters displayed at the leftmost column to +open and close fold. For this to work, you have to set the 'foldcolumn' +to a value greater than zero: > + + :set foldcolumn=2 +< +For more information, read > + + :help 'foldcolumn' +< + *faq-29.5* +29.5. How do I change the text displayed for a closed fold? + +You can use the 'foldtext' option to change the text displayed for a closed +fold. + +For more information, read > + + :help 'foldtext' + :help fold-foldtext + :help 'fillchars' +< + *faq-29.6* +29.6. How do I store and restore manually created folds across different + Vim invocations? + +You can use the ":mkview" command to store manually created folds. Later, +you can use the ":loadview" command to restore the folds. For this to work, +the 'viewoptions' must contain "folds". + +For more information, read > + + :help 28.4 + :help :mkview + :help :loadview + :help 'viewoptions' + :help 'viewdir' + :help :mksession + :help 'sessionoptions' +< + +============================================================================= + *faq-30* +SECTION 30 - VIM WITH EXTERNAL APPLICATIONS + + *faq-30.1* +30.1. Can I run a shell inside a Vim window? + +Currently Vim doesn't have support for running shell and other external +commands inside a Vim window. + +For more information, read > + + :help shell-window +< +Alternatively, you can try using the Unix "screen" utility or the 'splitvt' +program. + +You can also use the vimsh plugin by Brian Sturk to run a shell in a Vim +window. To use this you need to have Vim built with python support. For +more information visit the following URL: > + + http://vim.sourceforge.net/scripts/script.php?script_id=165 +< + *faq-30.2* +30.2. How do I pass the word under the cursor to an external command? + +You can use the special keyword <cword> to pass the word under the cursor +to an external command. For example: > + + :!dict <cword> +< +For more information, read > + + :help <cword> +< + *faq-30.3* +30.3. How do I get the output of a shell command into a Vim buffer? + +You can use the ":r !" command to get the output of a shell command into a +Vim buffer: > + + :r !ls +< +For more information, read > + + :help :r! +< + *faq-30.4* +30.4. How do I pipe the contents of the current buffer to an external + command and replace the contents of the buffer with the output from + the command? + +You can use the :! command to pipe the contents of the current buffer to a +external command and replace the contents of the buffer with the output +from the command. For example, to sort the contents of the current buffer, +using the Unix sort command, you can use the following command: > + + :%!sort +< +To sort only lines 10-20, you can use the following command > + + :10,20!sort +< +Also, if you want to pipe a buffer to an external command but not put the +results back in the buffer, you can use > + + :w !sort +< +The above command will pipe the entire buffer to the sort command. Note +that the space between the 'w' and the '!' is critical. To pipe only a +range of lines, you can use > + + :10,20w !sort +< +The above command will pipe the lines 10-20 to the sort command. + +For more information, read > + + :help :range! + :help 10.9 + :help :w_c +< + *faq-30.5* +30.5. How do I sort a section of my file? + +You can pipe a section of the file to the Unix "sort" utility to sort the +file. For example: > + + :5,100!sort +< +You can also use a visual block, and use the "!sort" command on the +selected block. + +To sort using visual blocks (sort based on a column or sort just the column +itself), read the following tip from the Vim online web page: + +http://vim.sourceforge.net/tips/tip.php?tip_id=588 + + *faq-30.6* +30.6. Is there a step-by-step guide for using Vim with slrn? + +Visit the following link to get information about using Vim with Slrn: > + + http://thingy.apana.org.au/~fun/slrn/ +< + *faq-30.7* +30.7. How do I use Vim as a pager? + +You can use Vim as a pager using the $VIMRUNTIME/macros/less.sh shell +script, supplied as part of the standard Vim distribution. This shell +script uses the $VIMRUNTIME/macros/less.vim Vim script to provide less like +key bindings. + +For more information, read > + + :help less +< + *faq-30.8* +30.8. How do I view Unix man pages from inside Vim? + +You can view Unix man pages, inside Vim, using the man.vim plugin supplied +as part of the standard Vim distribution. To use this plugin, add the +following line to your startup vimrc file: > + + runtime ftplugin/man.vim +< +You can also press the K key to run the program specified by the +'keywordprg' option with the keyword under the cursor. By default, +'keywordprg' is set to run man on the keyword under the cursor. + +For more information, read > + + :help man-plugin + :help K + :help 'keywordprg' +< + *faq-30.9* +30.9. How do I change the diff command used by the Vim diff support? + +By default, the Vim diff support uses the 'diff' command. You can change +this by changing the 'diffexpr' option. + +For more information, read > + + :help diff-diffexpr + :help 'diffexpr' +< + *faq-30.10* +30.10. How do I use the Vim diff mode without folding? + +You can use the following command-line to start Vim with two filenames +and use the diff mode without folding: > + + $ vim -o file1 file2 "+windo set diff scrollbind scrollopt+=hor nowrap" +< +If you like vertically split windows, then replace "-o" with "-O". + +For more information, read > + + :help vimdiff +< + +============================================================================= + *faq-31* +SECTION 31 - GUI VIM + + *faq-31.1* +31.1. How do I create buffer specific menus? + +Adding support for buffer specific menus is in the Vim TODO list. In the +mean time, you can try Michael Geddes's plugin, buffermenu.vim: > + + http://vim.sourceforge.net/scripts/script.php?script_id=246 +< + *faq-31.2* +31.2. How do I change the font used by GUI Vim? + +You can change the 'guifont' option to change the font used by GUI Vim. To +display the current value of this option, you can use > + + :set guifont? +< +You can add the displayed font name to the .vimrc file to use the font +across Vim sessions. For example, add the following line to the .vimrc file +to use Andale Mono font. > + + set guifont=Andale_Mono:h10:cANSI +< +For Win32, GTK and Photon version of Vim, you can use the following command +to bringup a dialog which will help you in changing the guifont: > + + :set guifont=* +< +You can also use the -font Vim command line option to specify the font used +for normal text. + +For more information, read > + + :help 'guifont' + :help 'guifontset' + :help 'guifontwide' + :help font-sizes + :help -font + :help -boldfont + :help -italicfont + :help -menufont + :help -menufontset +< + *faq-31.3* +31.3. When starting GUI Vim, how do I specify the location of the GVIM + window? + +You can use the "-geometry" command line argument to specify the location +of the GUI Vim window. For example: > + + $ gvim -geometry 80x25+100+300 +< +For more information, read > + + :help 31.4 + :help -geom +< + *faq-31.4* +31.4. How do I add a horizontal scrollbar in GVim? + +You can enable the horizontal scrollbar by modifying the 'guioptions' +option: > + + :set guioptions+=b +< +For more information, read > + + :help 'guioptions' + :help gui-horiz-scroll +< + *faq-31.5* +31.5. How do I make the scrollbar appear in the left side by default? + +You can add the 'l' flag to the 'guioptions' option to make the scrollbar +appear in the left side. > + + :set guioptions+=l + :set guioptions-=r +< +For more information, read > + + :help 'guioptions' + :help gui-scrollbars +< + *faq-31.6* +31.6. How do I remove the Vim menubar? + +You can remove the Vim menubar by removing the 'm' flag from the +'guioptions' option: > + + :set guioptions-=m +< +For more information, read > + + :help 'guioptions' +< + *faq-31.7* +31.7. I am using GUI Vim. When I press the ALT key and a letter, the menu + starting with that letter is selected. I don't want this behavior as + I want to map the ALT-<key> combination. How do I do this? + +You can use the 'winaltkeys' option to disable the use of the ALT key to +select a menu item: > + + :set winaltkeys=no +< +For more information, read > + + :help 'winaltkeys' + :help :simalt +< + *faq-31.8* +31.8. Is it possible to scroll the text by dragging the scrollbar so that + the cursor stays in the original location? + +The way Vim is designed, the cursor position has to be in a visible spot in +normal, visual, select and insert mode. This cannot be changed without +modifying Vim. When the scrollbar is used, the cursor will be moved so that +it is always visible. Another approach to solving this problem is to use +the Vim marks. You can mark the current cursor position using ma. Then +scroll to a different part of the text and jump back to the old position +using `a. You can also try the following suggestion from the Vim Online +website: > + + http://www.vim.org/tip_view.php?tip_id=320 +< +For more information, read > + + :help mark-motions +< + *faq-31.9* +31.9. How do I get gvim to start browsing files in a particular directory + when using the ":browse" command? + +You can set the 'browsedir' option to the default directory to use for the +":browse" command. > + + :set browsedir='<your_dir>' +< +For more information, read > + + :help 'browsedir' +< + *faq-31.10* +31.10. For some questions, like when a file is changed outside of Vim, Vim + displays a GUI dialog box. How do I replace this GUI dialog box with + a console dialog box? + +You can set the 'c' flag in the 'guioptions' option to configure Vim to use +console dialogs instead of GUI dialogs: > + + :set guioptions+=c +< +For more information, read > + + :help 'guioptions' +< + *faq-31.11* +31.11. I am trying to use GUI Vim as the editor for my xxx application. + When the xxx application launches GUI Vim to edit a file, the + control immediately returns to the xxx application. How do I start + GUI Vim, so that the control returns to the xxx application only + after I quit Vim? + +You have to start GUI Vim with the '-f' (foreground) command line option: > + + $ gvim -f +< +By default, GUI Vim will disconnect from the program that started Vim. With +the '-f' option, GUI Vim will not disconnect from the program that started +it. + +For more information, read > + + :help gui-fork + :help -f +< + *faq-31.12* +31.12. Why does the "Select Font" dialog doesn't show all the fonts + installed in my system? + +Vim supports only fixed width (mono-spaced) fonts. Proportional fonts are +not supported. In the "Select Font" dialog, only fixed width fonts will be +displayed. + +For more information, read > + + :help font-sizes + :help 'guifont' +< + *faq-31.13* +31.13. How do I use the mouse in Vim command-line mode? + +You can set the 'c' flag in the 'mouse' option to use mouse in the Vim +command-line mode: > + + :set mouse+=c +< +For more information, read > + + :help mouse-using + :help gui-mouse + :help 09.2 +< + *faq-31.14* +31.14. When I use the middle mouse button to scroll text, it pastes the + last copied text. How do I disable this behavior? + +You can map the middle mouse button to <Nop> to disable the middle mouse +button: > + + :map <MiddleMouse> <Nop> + :map! <MiddleMouse> <Nop> +< +For more information, read > + + :help gui-mouse-mapping + :help <Nop> +< + *faq-31.15* +31.15. How do I change the location and size of a GUI Vim window? + +You can use the "winpos" command to change the Vim window position. To +change the size of the window, you can modify the "lines" and "columns" +options. + +For example, the following commands will position the GUI Vim window at the +X,Y co-ordinates 50,50 and set the number of lines to 50 and the number of +columsn to 80. > + + :winpos 50 50 + :set lines=50 + :set columns=80 +< +The arguments to the 'winpos' command specify the pixel co-ordinates of the +Vim window. The 'lines' and 'columns' options specify the number of lines +and characters to use for the height and the width of the window +respectively. + +For more information, read > + + :help 31.4 + :help :winpos + :help 'lines' + :help 'columns' + :help GUIEnter +< + +============================================================================= + *faq-32* +SECTION 32 - VIM ON UNIX + + *faq-32.1* +32.1. I am running Vim in a xterm. When I press the CTRL-S key, Vim + freezes. What should I do now? + +Many terminal emulators and real terminal drivers use the CTRL-S key to +stop the data from arriving so that you can stop a fast scrolling display +to look at it (also allowed older terminals to slow down the computer so +that it did not get buffer overflows). You can start the output again by +pressing the CTRL-Q key. + +When you press the CTRL-S key, the terminal driver will stop sending the +output data. As a result of this, it will look like Vim is hung. If you +press the CTRL-Q key, then everything will be back to normal. + +You can turn off the terminal driver flow control using the 'stty' command: > + + $ stty -ixon -ixoff +< +or, you can change the keys used for the terminal flow control, using the +following commands: > + + $ stty stop <char> + $ stty start <char> +< + *faq-32.2* +32.2. I am seeing weird screen update problems in Vim. What can I do to + solve this screen/display update problems? + +You have to use a proper terminal emulator like xterm with correct TERM +settings (TERM=xterm) and a correct terminfo/termcap file. +For more information, read > + + :help 'term' +< + *faq-32.3* +32.3. I am using the terminal/console version of Vim. In insertmode, When I + press the backspace key, the character before the cursor is not + erased. How do I configure Vim to do this? + +You have to make sure that Vim gets the correct keycode for the backpspace +key. You can try using the command: > + + :fixdel +< +Make sure the TERM environment variable is set to the correct terminal +name. You can try using the 'stty' command: > + + $ stty erase ^H +< +where, you have to enter the ^H character by pressing the CTRL-V key and +then the CTRL-H key. + +For more information, read > + + :help :fixdel + :help Linux-backspace + :help NetBSD-backspace +< + *faq-32.4* +32.4. I am using Vim in a xterm. When I quit Vim, the screen contents are + restored back to the original contents. How do I disable this? + +The xterm has a capability called "alternate screen". If this capability +is present, vim switches to that alternate screen upon startup and back on +exit, thus restoring the original screen contents. To disable this +feature, add the following line to your .vimrc file: > + + :set t_ti= t_te= +< +For more information, read > + + :help restorescreen + :help xterm-screens +< + *faq-32.5* +32.5. When I start Vim, it takes quite a few seconds to start. How do I + minimize the startup time? + +This may be related to Vim opening the X display for setting the xterm +title and using the X clipboard. Make sure the DISPLAY variable is set to +point to the correct host. Try using the command line: > + + $ vim -X +< +This will prevent Vim from opening the X display. With this command-line +option, the X clipboard cannot be used and also Vim will not be able to +change the xterm title. + +You can also set the 'clipboard' option to > + + :set clipboard=exclude:.* +< +This has the same effect as using the -X command-line argument. + +For more information, read > + + :help -X + :help 'clipboard' +< + *faq-32.6* +32.6. How can I make the cursor in gvim in unix stop blinking? + +You can modify the 'guicursor' option, to stop the cursor from blinking. +For example: > + + :set guicursor=a:blinkon0 +< +For more information, read > + + :help 'guicursor' +< + *faq-32.7* +32.7. How do I change the menu font on GTK Vim? + +You can modify the ~/.gtkrc file to change the menu font on GTK Vim. For +example: > + + style "default" + { font ="smooth09" } + class "*" style "default" +< +The last line changes the font of all widgets. + +For more information, read > + + :help gui-gtk +< + *faq-32.8* +32.8. How do I prevent <Ctrl-Z> from suspending Vim? + +You can map <Ctrl-Z> to prevent the suspending. Here are some suggestions: + +- Make <Ctrl-Z> do nothing: > + + :map <C-Z> <Nop> +< +- Make <Ctrl-Z> start a shell: > + + :map <C-Z> :shell<CR> +< +- Make <Ctrl-Z> give an error message: > + + :map <C-Z> :"suspending disabled<CR> +< +For the last example, the double quote is necessary in order to keep the +message on the status line. + + *faq-32.9* +32.9. When I kill the xterm running Vim, the Vim process continues to run + and takes up a lot of CPU (99%) time. Why is this happening? + +When Vim is built with support for Python interface, you will have this +problem. This is a known problem with the python thread library and Vim. To +solve this problem, use a Vim binary built without the Python interface. + +For more information, read > + + :help +python + :help python +< + *faq-32.10* +32.10. How do I get the Vim syntax highlighting to work in a Unix terminal? + +The easiest and simplest way to get Vim syntax highlighting is to use the +GUI version of Vim (GVIM). To get syntax highlighting to work in the +console/terminal version of Vim, you have to run a terminal emulator (like +Xfree86 xterm or rxvt or dtterm) that supports color. Note that if a +terminal emulator supports changing the background and foreground colors, +that does not mean that it also supports ANSI escape sequences for changing +the color. You can download the latest version of Xfree86 xterm from +http://dickey.his.com/xterm/xterm.html. You can download the latest version +of rxvt from http://www.rxvt.org. You have to install the terminfo/termcap +file that supports colors for the terminal emulator. Also, set the TERM +environment variable to the correct name of the term that supports colors. + +You can use the colortest.vim script supplied with the Vim runtime +package to test the color setup. To use this script, follow these steps: > + + :e $VIMRUNTIME/syntax/colortest.vim + :source % +< +For more information, read > + + :help 06.2 + :help terminal-colors + :help termcap-colors + :help startup-terminal + :help xterm-color + :help colortest.vim +< + +============================================================================= + *faq-33* +SECTION 33 - VIM ON MS-WINDOWS + + *faq-33.1* +33.1. In MS-Windows, CTRL-V doesn't start the blockwise visual mode. What + happened? + +The mswin.vim script provides key mappings and options to make Vim behave +like a MS-Windows application. One of the keys mapped is CTRL-V which is +used for pasting text in MS-Windows applications. This will disable the use +of CTRL-V to start the blockwise visual mode. The mswin.vim script maps +CTRL-Q for staring the blockwise visual mode. So you can use CTRL-Q instead +of CTRL-V. + +For more information, read > + + :help CTRL-V + :help CTRl-V-alternative + :help CTRL-Q + :help 10.5 +< + *faq-33.2* +33.2. When I press the CTRL-Y key, it acts like the CTRL-R key. How do I + configure Vim to treat CTRL-Y as CTRL-Y? + +The mapping of the CTRL-Y key to the CTRL-R key is done by the mswin.vim +script. The mswin.vim script maps CTRL-Y to make Vim behave like a standard +MS-Windows application. This is explained in ":help CTRL-Y". You can either +comment out the line in mswin.vim that maps the CTRL-Y key or you can +remove the line in your .vimrc file that sources the mswin.vim script. + + *faq-33.3* +33.3. How do I start GUI Vim in a maximized window always? + +You can use the "simalt" command to maximize the Vim window. You can use +the GUIEnter autocmd to maximize the Vim window on startup: > + + autocmd GUIEnter * simalt ~x +< +For more information, read > + + :help :simalt + :help GUIEnter + :help gui-win32-maximized +< + *faq-33.4* +33.4. After doing some editing operations, Vim freezes. The cursor becomes + an empty rectangle. I am not able enter any characters. What is + happening? + +Most probably, you used the mouse wheel to scroll the text in Vim. There is +a known problem in using intellimouse mouse wheel with Vim. To avoid this +problem, disable Universal scrolling support for Vim. + +For more information, read > + + :help intellimouse-wheel-problems +< + *faq-33.5* +33.5. I am using Windows XP, the display speed of maximized GVim is very + slow. What can I do to speed the display updates? + +This may be due to the fact that you have enabled 'Smooth edges of screen +fonts' in the display properties. Try turning off font smoothing or try +changing the smoothing method to "Standard". + + *faq-33.6* +33.6. What are the recommended settings for using Vim with cygwin? + +You may want to set the following shell related Vim settings: > + + :set shellcmdflag=-c + :set shellquote= + :set shellslash " Use the forward slash for expansion. + :set shellxquote=\" + :set shell=d:\cygwin\bin\bash.exe " Use the bash shell + :set shellpipe=2>&1| tee + :set shellredir=>%s 2>&1 +< + *faq-33.7* +33.7. I am trying to use GNU diff with Vim diff mode. When I run the diff + from command line, it works. When I try to use the diff with Vim it + doesn't work. What should I do now? + +There is a problem with using GNU diff with Vim. You can try using the +GNU diff.exe built by Ron Aaron from the following link: > + + http://www.mossbayeng.com/~ron/vim/builds.html +< + *faq-33.8* +33.8. Is it possible to use Vim as an external editor for MS-Windows + Outlook email client? + +You can use the "cubiclevim" COM Add-In to use Vim as an external editor +for MS-Windows Outlook email client. Visit the following URL for more +information: > + + http://sourceforge.net/projects/cubiclevim +< +Note that currently this works only with MS-Office 2000 and XP. + + *faq-33.9* +33.9. I am using Vim to edit HTML files. How do I start internet explorer + with the current file to preview the HTML file? + +You can use the following command: > + + :!start c:\progra~1\intern~1\iexplore.exe file://%:p<CR> +< + *faq-33.10* +33.10. I would like to use Vim with Microsoft Visual Studio. How do I do + this? + +You have to download and use the OLE version of Vim (for example: +gvim61ole.zip). This file also contains instructions on how to use Vim with +Visual Studio. + +For more information, read > + + :help MSVisualStudio +< + *faq-33.11* +33.11. Where do I place the _vimrc and _gvimrc files? + +You can place the _vimrc and _gvimrc files under the directory pointed to +by the VIM environment variable. If you are sharing this system with other +users, then you can place the files in a directory and set the HOME +environment variable to this directory. + +For more information, read > + + :help $HOME-use + :help _vimrc +< + *faq-33.12* +33.12. Everytime I save a file, Vim warns about the file being changed + outside of Vim. Why? + +If you get the following warning message, everytime you save a file: > + + WARNING: The file has been changed since reading it!!! + Do you really want to write to it (y/n)? +< +then this problem could be related to a bug in MS-Windows on the day +daylight saving time starts. Vim remembers the timestamp of the file after +it was written. Just before the next write the timestamp is obtained again +to check if the file was changed outside of Vim. This works correctly, +except on the day daylight saving time starts. + +This problem will go away the next day after the day the daylight saving +time starts. + +For more information, read > + + :help W11 +< + +============================================================================= + *faq-34* +SECTION 34 - PRINTING + + *faq-34.1* +34.1. How do I print a file along with line numbers for all the lines? + +You can set the 'printoptions' option and use the ":hardcopy" command to +print your file: > + + :set printoptions=number:y + :hardcopy +< +For more information, read > + + :help 'printoptions' + :help :hardcopy +< + *faq-34.2* +34.2. How do I print a file with the Vim syntax highlighting colors? + +You can use the ":hardcopy" command to print a file with the Vim syntax +highlighting colors. You can also convert your file to a HTML file using +the 2html.vim script and print the HTML file. + +For more information, read > + + :help syntax-printing + :help 2html.vim + :help :hardcopy + :help printing +< + +============================================================================= + *faq-35* +SECTION 35 - BUILDING VIM FROM SOURCE + + *faq-35.1* +35.1. How do I build Vim from the sources on a Unix system? + +For a Unix system, follow these steps to build Vim from the sources: + +- Download the source and run-time files arrchive (vim-##.tar.bz2) from the + ftp://ftp.vim.org/pub/vim/unix directory. +- Extract the archive using the bzip2 and ttar utilities using the command: > + + $ bunzip2 -c <filename> | tar -xf - +< +- Run the 'make' command to configure and bbuild Vim with the default + configuration. +- Run 'make install' command to install Vimm in the default directory. + +To enable/disable various Vim features, before running the 'make' command +you can run the 'configure' command with different flags to include/exclude +the various Vim features. To list all the available options for the +'configure' command, use: > + + $ configure -help +< +For more information, read > + + :help install +< + *faq-35.2* +35.2. How do I install Vim in my home directory or a directory other + than the default installation directory in Unix? + +To install Vim in a directory other than the default installation +directory, you have to specify the directory using the --prefix option +while running the configure script. > + + $ ./configure --prefix=/users/xyz +< +You can enable/disable various Vim feature by supplying different arguments +to the configure script. For more information about all these options, run > + + $ ./configure --help +< +For more information, read > + + :help install-home + :help install +< + *faq-35.3* +35.3. How do I build Vim from the sources on a MS-Windows system? + +For a MS-Windows system, Vim can be built using either the Visual C++ +compiler or the Borland C++ compiler or the Ming GCC compiler or the cygwin +gcc compiler. Follow these steps to build Vim from the sources for +MS-Windows: + +- Download the source (vim##src.zip), runtiime (vim##rt.zip) and the extra + (vim-##-extra.tar.gz) archives from the ftp://ftp.vim.org/pub/vim/pc + directory. +- Extract the archives into a directory (foor example, c:\vimsrc) +- Depending on the installed compiler, you can use the corresponding + makefile to build the Vim sources. For Visual C++ use the Make_mvc.mak + makefile, for borland C++ use the Make_bc5.mak makefile, for ming GCC use + the Make_ming.mak makefile, for cygwin gcc use the Make_cyg.mak makefile. + +Depending on whether you want to build the GUI version of Vim or the +console version of Vim, you have to pass different arguments to the +makefiles. After successfully building the sources, you can copy the +vim.exe or gvim.exe file to the desired directory along with the files from +the runtime archive. + +You can visit the following site for extensive information about building +Vim on a MS-Windows system using the various compilers: > + + http://mywebpage.netscape.com/SharpPeople/vim/howto/index.html +< +For more information, read > + + :help install +< + *faq-35.4* +35.4. The Vim help, syntax, indent files are missing from my Vim + installation. How do I install these files? + +The Vim help, syntax, indent and other runtime files are part of the Vim +runtime package. You need to download and install the Vim runtime package. +For example, for MS-Windows, the name of the Vim 6.1 runtime package is +vim61rt.zip. + +For more information, read > + + :help install +< + *faq-35.5* +35.5. I have built Vim from the source and installed the Vim package using + "make install". Do I need to keep the Vim source directory? + +No. Once you have built and installed Vim in some directory other than the +original source directory (for example, /usr/bin or /usr/local/bin), then +you can remove the source directory. + + *faq-35.6* +35.6. How do I determine the Vim features which are enabled at compile + time? + +You can use the ":version" command to determine the Vim features that are +enabled at compile time. The features that are enabled will be prefixed +with a "+". The features that are not enabled will be prefixed with a "-". + +If you want to test for a feature in a script, you can use the has() +function: > + + if has("menu") + " Set up some menus + endif +< +For more information, read > + + :help :version + :help +feature-list + :help has() +< + *faq-35.7* +35.7. Can I build Vim without the GUI support? + +Yes. You can build Vim by optionally enabling/disabling many of the +features including GUI. + +For more information, read > + + :help install +< + *faq-35.8* +35.8. When building Vim on a Unix system, I am getting "undefined reference + to term_set_winsize' error. How do I resolve this error? + +You will get this error when the build process is not able to locate the +termlib, termcap or ncurses library. You have to install the ncurses-dev +package to resolve this error. + + *faq-35.9* +35.9. Vim configure keeps complaining about the lack of gtk-config while + trying to use GTK 2.03. This is correct, since in GTK 2 they moved to + using the generic pkg-config. I can get pkg-config to list the + various includes and libs for gtk, but for some reason the configure + script still isn't picking this up. + +Use the following shell script named gtk-config: > + + #!/bin/sh + pkg-config gtk+-2.0 $1 $2 +< + +============================================================================= + *faq-36* +SECTION 36 - VARIOUS + + *faq-36.1* +36.1. How do I edit binary files with Vim? + +You can set the following options to edit binary files in Vim: > + + :set binary + :set display=uhex +< +You can also use the "-b" command-line option to edit a binary file: > + + $ vim -b <binary_file_name> +< +You can also use the xxd utility (part of the Vim distribution) to edit +binary files. + +For more information, read > + + :help 23.4 + :help edit-binary + :help hex-editing + :help -b + :help 'binary' + :help 'endofline' + :help 'display' +< + *faq-36.2* +36.2. How do I disable the visual error flash and the error beep? + +You can disable both the visual error flash and the error beep using the +following command: > + + :set visualbell t_vb= +< +For more information, read > + + :help 'visualbell' + :help 'errorbells' + :help t_vb +< + *faq-36.3* +36.3. How do I display the ascii value of a character displayed in a + buffer? + +You can use the 'ga' command to display the ascii value of a displayed +character. + +For more information, read > + + :help ga + :help :ascii +< + *faq-36.4* +36.4. Can I use zero as a count for a Vim command? + +You cannot use zero as a count for a Vim command, as "0" is a command on +its own, moving to the first column of the line. + +For more information, read > + + :help 0 + :help count +< + *faq-36.5* +36.5. How do I disable the Vim welcome screen? + +You can disable the Vim welcome screen, by adding the 'I' flag to the +'shortmess' option: > + + :set shortmess+=I +< +For more information, read > + + :help :intro + :help 'shortmess' +< + *faq-36.6* +36.6. How do I avoid the "hit enter to continue" prompt? + +Vim will prompt you with the "hit enter to continue" prompt, if there are +some messages on the screen for you to read and the screen is about to be +redrawn. You can add the 'T' flag to the 'shortmess' option to truncate +all messages. This will help in avoiding the hit-enter prompt: > + + :set shortmess+=T +< +You can also increase the command height by setting the 'cmdheight' option: > + + :set cmdheight=2 +< +For more information, read > + + :help hit-enter + :help avoid-hit-enter + :help 'shortmess' + :help 'cmdheight' +< + *faq-36.7* +36.7. How do I invoke Vim from command line to run a group of commands on a + group of files? + +There are several ways to invoke Vim from command line to run a group of +commands on a group of files. You can use a set of "-c" command line +options to specify a group of commands: > + + $ vim -c "<ex_command_1>" -c "<ex_command_2>" *.txt +< +Each of the ex-command specified with the "-c" command line option is +executed one by one sequentially. You can also use a single "-c" command +line option and the "|" character to separate the ex commands: > + + $ vim -c "<ex_command_1> | <ex_command_2>" *.txt +< +In the above command, if an ex command fails, then all the remaining ex +commands will not be executed. + +For example, to replace "ABC" with "DEF" in a file from the command-line, +you can use the following command: > + + $ vim -c "%s/ABC/DEF/ge | update" myfile.txt +< +To replace "ABC" with "DEF" in multiple files from the command-line, +you can use the following command: > + + $ vim -c "argdo %s/ABC/DEF/ge | update" *.txt +< +You can store the group of commands into a file and use the "-s" command +line option to run the commands on a set of files. For example, if the +group of commands are stored in the file mycmds.txt, then you can use the +following command: > + + $ vim -s mycmds.txt *.pl +< +For more information, read > + + :help -c + :help -s +< + *faq-36.8* +36.8. How do I use a normal mode command from insert mode without leaving + the insert mode? + +You can use a normal command from insert mode, without leaving the insert +mode, by first pressing the CTRL-O key and then follow that with a single +normal mode command. + +To execute more than one normal mode command, press the CTRL-L key, +followed by any number of normal mode commands and then press <Esc> to get +back to the insert mode. + +For more information, read > + + :help i_CTRL-O + :help i_CTRL-L +< + +============================================================================= + *faq-37* +SECTION 37 - UNICODE +Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> + + *faq-37.1* +37.1. Is it possible to create Unicode files using Vim? + +Yes. It may be more or less complicated depending on the keyboard and fonts +available to you, but it is always possible to encode any possible Unicode +codepoint (and some illegal ones) into a file. To create a Unicode file +using Vim, you should have compiled Vim with the "+multi_byte" compile-time +option. You can get more information about Unicode from the following +sites: > + + http://www.unicode.org + http://www.cl.cam.ac.uk/~mgk25/unicode.html +< +For more information, read > + + :help multibyte + :help usr_45.txt +< + *faq-37.2* +37.2. Which Vim settings are particularly important for editing Unicode + files? + +The most important are the various "encoding" options, i.e., 'encoding', +'fileencoding', 'fileencodings' and 'termencoding'. The boolean option +'bomb' is also significant. + +For more information, read > + + :help 'encoding' + :help 'fileencoding' + :help 'fileencodings' + :help 'termencoding' + :help 'bomb' +< + *faq-37.3* +37.3. What is the 'encoding' option? + +Basically, the 'encoding' option defines how Vim will represent your data +internally. However, all Unicode encodings are represented internally as +utf-8 and converted (if necessary) when reading and writing. + +For more information, read > + + :help 'encoding' +< + *faq-37.4* +37.4. How does Vim name the various Unicode encodings? + +Utf-8 is called utf-8 or utf8; utf-16 is called ucs-2 or ucs2; utf-32 is +called ucs-4 or ucs4. Also, you may specify endianness (except for utf-8 +which does not vary for endianness) by appending le for little-endian or be +for big-endian. If you create a file with an encoding of ucs-2 or ucs-4 +without specifying endianness, Vim will use what is typical of your +machine. + +For more information, read > + + :help encoding-names + :help encoding-values + :help encoding-table +< + *faq-37.5* +37.5. How does Vim specify the presence or absence of a byte-order mark? + +When reading a file, if the 'fileencodings' option includes "ucs-bom", Vim +will check for a byte-order mark. When writing a file, if the 'bomb' option +is set, Vim will write a byte-order mark on files whose encoding warrants +it. + +For more information, read > + + :help 'fileencodings' + :help 'bomb' +< + *faq-37.6* +37.6. What is the 'fileencoding' option? + +The 'fileencoding' option defines the particular encoding which Vim will +use to write a file. If empty, then the value of the 'encoding' option is +the default. + +For more information, read > + + :help 'fileencoding' +< + *faq-37.7* +37.7. What is the 'fileencodings' option? + +The 'fileencodings' option defines the heuristics used by Vim when opening +an existing file. It is a comma separated list of encodings. A special +name, "ucs-bom" is used to indicate that Vim should check for the presence +of a byte-order mark; however, it will not be recognised if it comes after +"utf-8". Normally, "ucs-bom" (if present) should be first in the list. + +When Vim opens a file, it checks it against the encodings listed in +'fileencodings'. The first one that matches is used. If there is no match, +then Vim sets 'fileencoding' to the null string, i.e., the value of +'encoding' will be used. + +For more information, read > + + :help 'fileencodings' + :help 'encoding' +< + *faq-37.8* +37.8. What is the 'termencoding' option? + +The 'termencoding' option defines how your keyboard encodes the data you +type. If empty, Vim assumes that it has the same value as 'encoding'. +Usually it should be set to something that matches your locale. + +For more information, read > + + :help 'termencoding' + :help locale +< + *faq-37.9* +37.9. What is the 'bomb' option? + +When reading a file with "ucs-bom" present in the 'fileencodings' option, +Vim will set the 'bomb' option on or off depending on the presence or +absence of a byte-order mark at the start of the file. When writing, Vim +will write a byte-order mark if the 'bomb' option is set. You may set or +unset it manually do make Vim write, or not write, the b.o.m. + +For more information, read > + + :help 'bomb' +< + *faq-37.10* +37.10. Where can I find an example of a typical use of all these options? + +There is a "tip", with explains them in different words with an example, at +http://vim.sourceforge.net/tip_view.php?tip_id=246 . + + *faq-37.11* +37.11. How can I insert Unicode characters into a file using Vim? + +Several methods are available: + +- Characters present on your keyboard can bbe typed in the usual way, even + those which require a "dead-key" prefix, like (for instance) the + circumflex on French keyboards. +- Characters for which a digraph is definedd can be typed as two characters + prefixed by <Ctrl-K>. +- If you have set the 'digraph' option, youu can enter the characters for + which a digrph is defined as <char1><BS><char2>. +- Any character can be entered by using a <<Ctrl-V> prefix (or <Ctrl-Q> if + <Ctrl-V> is remapped to paste from the clipboard). + +For more information, read > + + :help digraphs + :help 'digraph' + :help i_CTRL-V_digit +< + *faq-37.12* +37.12. How can I know which digraphs are defined and for which characters? + +First set the 'encoding' option properly (for instance, to utf-8), then use +the :digraphs command to list the currently defined digraphs. + +For more information, read > + + :help :digraphs + :help 'encoding' +< + +============================================================================= + vim:tw=78:ts=8:ft=help:norl: diff --git a/guide.txt b/guide.txt index 987be0b2a..3414c944b 100644 --- a/guide.txt +++ b/guide.txt @@ -120,6 +120,9 @@ 標準設定、標準の、初期設定、デフォルト なるべくデフォルトはさけたい +- map → マップ +- abbreviation → 短縮入力 +- user defined command, user command → ユーザーコマンド 意見 diff --git a/ja/vim_faq_help.jax b/ja/vim_faq_help.jax new file mode 100644 index 000000000..f76ab4616 --- /dev/null +++ b/ja/vim_faq_help.jax @@ -0,0 +1,7156 @@ +COMMENT: よく訊かれる質問 +STATUS: finished 17 October 2004 +TRANSLATOR: madokam +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> + +*vim_faq.txt* Frequently Asked Questions + +このファイルをインストールする方法については、vim内で > + :help add-local-help +とタイプしてください。 + +Last updated on: 17 October 2004 + + VIM リファレンスマニュアル by: Yegappan Lakshmanan + +Frequently Asked Questions *faq* *FAQ* + +このVim FAQは、vim@vim.orgメーリングリストとcomp.editorsニューズグループに投稿 +された質問とその答から作られました。Vimにおいて問題を解決する方法はいくつかあ +ります。このFAQを読めば、その数種類の可能性のうちの1つが得られます。このFAQ中 +の情報とリンクを使って他の方法を探すこともできます。このFAQの答に対するクレジ +ットはPeppe, Benji, Charles Campbellと他多数の人々に帰属します。 + + *faq-index* +目次 + *faq-general-information* +SECTION 1 - 一般的な情報 +|faq-1.1| Vimとは何ですか? +|faq-1.2| 誰が Vim を書いたんですか? +|faq-1.3| Vim は Vi と互換性がありますか? +|faq-1.4| Vim が Vi よりも向上している点は何ですか? +|faq-1.5| Vim は無料ですか? + *faq-resources* +SECTION 2 - 情報源 +|faq-2.1| どこに行けば Vim についてもっと学べるでしょうか? +|faq-2.2| メーリング・リストはありますか? +|faq-2.3| メーリング・リストのアーカイブはありますか? +|faq-2.4| HTML/PDF/PS形式のVimユーザマニュアルはどこで手に入りますか? +|faq-2.5| ある問題が発生しました。それが私の設定によるものか、Vimそのものの + 問題かはどうすればわかりますか? +|faq-2.6| どこでバグ報告をすればいいですか? +|faq-2.7| FAQはどこで見つけられますか? +|faq-2.8| このFAQに答えが見つからなかった時、どうすればいいですか? +|faq-2.9| Vimに機能を追加するパッチを持っています。これをどこへ送ればいいで + すか? +|faq-2.10| Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグ + インを開発したり、新しいスクリプトやカラースキームを開発しました。 + これをアップロードできる公開のウェブサイトはありますか? + *faq-availability* +SECTION 3 - 入手 +|faq-3.1| Vim の最新のバージョンは何ですか? +|faq-3.2| どこで Vim の最新版を見つけられますか? +|faq-3.3| どのプラットフォーム上で実行できるんですか? +|faq-3.4| どこでVimのランタイムファイルの最新バージョンをダウンロードできま + すか? + *faq-help* +SECTION 4 - ヘルプ +|faq-4.1| どうやってヘルプ・ファイルを利用するんですか? +|faq-4.2| どうやってVimヘルプファイル中のキーワードを探すんですか? +|faq-4.3| エラーメッセージE123が出ました。なにがまずいのでしょうか? +|faq-4.4| Vimの様々なモードについては何を読めばいいですか? +|faq-4.5| 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファ + イルを生成することができますか? +|faq-4.6| 圧縮したヘルプ・ファイルを使うことはできますか? + *faq-editing-a-file* +SECTION 5 - ファイルの編集 +|faq-5.1| ファイルを編集用に読み込むには? +|faq-5.2| 現在のファイルを別な名前で保存(save as)して新しいファイルを編集す + るには? +|faq-5.3| カレントディレクトリを現在のファイルのディレクトリにするには? +|faq-5.4| ファイルの末尾に改行文字(EOL)をつけずにファイルを書き込むには? +|faq-5.5| ファイルを最後に編集した場所から開くようにするには? +|faq-5.6| Vimでファイルを編集中にそのファイルが他のアプリケーションによって + 変更されたとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイ + アログのような)を開きます。この警告を無効にするには? +|faq-5.7| カーソル下のファイル名のファイルを開くには? +|faq-5.8| 現在のファイルを再読み込みするには? +|faq-5.9| ファイルを定期的に自動保存するには? +|faq-5.10| ファイルを読み取り専用モードで開くには? + *faq-editing-multiple-files* +SECTION 6 - 複数のファイルを編集する +|faq-6.1| Vim内で同時に複数のファイルを開くには? +|faq-6.2| 複数のファイル・バッファを切り替えるには? +|faq-6.3| それぞれのファイルを別ウィンドウで開くには? +|faq-6.4| 「ワークセット」や「プロジェクト」のように自動的に複数のファイルを + 同時に読み込ませるようにするには? +|faq-6.5| Neditやemacsのように単一のVimインスタンスで複数のトップレベルウィ + ンドウを開くことはできますか? +|faq-6.6| Vim内でディレクトリをブラウズするには? +|faq-6.7| ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? + *faq-backup* +SECTION 7 - バックアップ +|faq-7.1| ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけた + ファイルが作られます。このファイルを作成するのを止めさせるには? + (または)バックアップ機能を無効にするには? +|faq-7.2| 全てのバックアップファイルを特定のディレクトリに保存するように設定 + するには? +|faq-7.3| ファイルを保存するとファイルパーミッションが変更されます。ファイル + パーミッションを変更せずにファイルを保存するよう設定するには? + *faq-buffers* +SECTION 8 - バッファ +|faq-8.1| バッファに対して変更を加えました。変更されたバッファを保存せずに、 + かつ変更を失うことなく他のバッファを編集するには? +|faq-8.2| バッファを切り替えるときに自動的に保存するよう設定するには? +|faq-8.3| カレントウィンドウのバッファを空バッファにするには? +|faq-8.4| バッファ番号を指定してバッファを読み込むショートカットキーはありま + すか? +|faq-8.5| 読み込んでいるバッファをそれぞれ別のウィンドウで開くには? +|faq-8.6| Vimを終了することなくバッファを閉じる(削除する)には? +|faq-8.7| :e filenameでいくつかのファイルを開きました。Vimを終了することなく + そのバッファのうちの1つを閉じるには? +|faq-8.8| ":%bd"コマンドで全バッファを削除しようとしても、全てのバッファが + 削除されません。なぜ? +|faq-8.9| カレントバッファ/ファイルのバッファ番号を表示するには? +|faq-8.10| ウィンドウを閉じることなくバッファを削除するには? +|faq-8.11| Tabキーで全バッファを巡回するようにマップするには? + *faq-windows* +SECTION 9 - ウィンドウ +|faq-9.1| ウィンドウとバッファの違いは? +|faq-9.2| ウィンドウの幅を広げるには? +|faq-9.3| ウィンドウをズームイン・ズームアウトするには? +|faq-9.4| 全バッファまたは全ウィンドウ、引数リスト中の全ファイルに対してex + コマンドを実行するには? + *faq-motion* +SECTION 10 - モーション +|faq-10.1| ファイルの先頭や末尾に移動するには? +|faq-10.2| インサートモードで<Esc>キーを押してノーマルモードに移行すると、カ + ーソルが1文字左へ移動します(カーソルが行の最初の文字の上にあるとき + を除いて)。この動作を変更し、カーソルがその桁の上に残るようにでき + ますか? +|faq-10.3| <Page Up>、<Page Down>などのキーを押してスクロールしたときカーソル + 位置の桁を保つように設定することはできますか? +|faq-10.4| ファイル中のある行の長さが画面の幅を越えており、折り返されていま + す。ここでj, kキーを使うと画面上の次行(物理行)でなくファイルの次行 + (論理行)に移動します。画面上の次行に移動するには? +|faq-10.5| Vimにおける文、段落、セクションの定義は? +|faq-10.6| 文、段落、セクションの先頭と末尾に移動するには? +|faq-10.7| 画面の右端を越えて続いている行があります。右側にスクロールして画面 + 外に出ているテキストを表示するには? +|faq-10.8| 2個以上のバッファを同時にスクロールさせるには? +|faq-10.9| 矢印キーを使うとモードが変わり、バッファに変な文字が挿入され、カー + ソルが適切に移動しません。どうなっているのですか? +|faq-10.10| カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するよう + にするには? +|faq-10.11| 常にインサートモードに留まるようにするには?(モードレスな編集をす + るには?) +|faq-10.12| テキストをスクロールするとき、前後の行を表示するには? +|faq-10.13| 以前のカーソル位置に戻るには? + *faq-searching-text* +SECTION 11 - テキストを検索する +|faq-11.1| テキストを検索した後、マッチしたテキストが全て強調されます。この強 + 調を一時的/永続的に無効にするには? +|faq-11.2| 検索パターンにキャリッジリターン文字を含めるには? +|faq-11.3| 文字^Mを検索するには? +|faq-11.4| '~R', '~S'などと表示される文字を検索・置換するには? +|faq-11.5| ファイル中の印字不能文字を全て強調するには? +|faq-11.6| 単語に完全に一致するテキストを検索するには? +|faq-11.7| カーソル下の単語を検索するには? +|faq-11.8| 大文字・小文字を区別せず検索するには? +|faq-11.9| 2回続けて現れる単語を検索するには? +|faq-11.10| ある単語がバッファ中に何回現れるか数えるには? +|faq-11.11| 検索時にカーソルをマッチした単語の末尾に移動させるには? +|faq-11.12| 空行を検索するには? +|faq-11.13| 1つの文字だけを含む行を検索するには? +|faq-11.14| 複数のファイルから文字列を検索し、置換するには? +|faq-11.15| マップ中で置換コマンド":s"を使っています。検索が失敗したときマップ + が途切れてしまいます。置換が失敗したときにもマップの次のコマンドを + 続けてほしいのですが、どうすればできますか? +|faq-11.16| 行からある文字がn回目に現れる箇所を検索するには? +|faq-11.17| タブ(やその他の文字)を改行文字で置換するには? +|faq-11.18| アスキーコードで検索する文字を指定するには? +|faq-11.19| 長い行を見つけるには? +|faq-11.20| カレントバッファ内の指定したパターンを含む行を全て表示するには? +|faq-11.21| 複数行にわたる文字列を検索するには? +|faq-11.22| バッファの指定した範囲内から検索するには? + *faq-changing-text* +SECTION 12 - テキストを変更する +|faq-12.1| 行末の空白文字(スペースとタブ)を全て削除するには? +|faq-12.2| 連続する空白文字を1個のスペースに置換するには? +|faq-12.3| 連続する空行を1行だけに圧縮するには? +|faq-12.4| ファイル中の空行を全て削除するには?空白文字だけを含む行を全て削除 + するには? +|faq-12.5| カーソル下の単語をコピー/ヤンクするには? +|faq-12.6| 行全体ではなく、行内のある位置からある位置までをヤンクするには? +|faq-12.7| 現在のレジスタの中身に追加ヤンクするには? +|faq-12.8| 複数行にわたる文全体をヤンクするには? +|faq-12.9| あるパターンを含む行全てをヤンクするには? +|faq-12.10| あるパターンを含まない行全てを削除するには? +|faq-12.11| "pattern"を含む全ての行の前に行を追加するには? +|faq-12.12| 前の行が特定のパターンを含んでいる行に対して操作を行うには? +|faq-12.13| あるパターンを含む行全てに対してコマンドを実行するには? +|faq-12.14| カーソル位置の1文字上の文字をカーソル位置にコピーするには? +|faq-12.15| インサートモードに入らずに現在行の前/後に空行を挿入するには? +|faq-12.16| カレントファイルの名前をカレントバッファに挿入するには? +|faq-12.17| レジスタの中身をカレントバッファに挿入するには? +|faq-12.18| 行末を越えてカーソルを移動し、テキストを挿入するには? +|faq-12.19| カーソル下の単語(例えばjunk)を"foojunkbar"に置き換えるには? +|faq-12.20| ディレクトリ中の全てのファイルに対して特定のテキストを置換する + には? +|faq-12.21| ファイル中に数字が書かれています。これを増加・減少させるには? +|faq-12.22| ":substitute"で最後に検索したパターンを再利用するには? +|faq-12.23| ":substitute"を使って大文字・小文字を入れかえるには? +|faq-12.24| キーボード上に無い文字を入力するには? +|faq-12.25| ダイグラフのどれか、または全てを削除するコマンドはありますか? +|faq-12.26| インサートモードでバックスペースキーを押すと、今回のインサートモー + ドで入力した文字が消されるだけです。バックスペースキーで前回のイン + サートモードで入力した文字を消すには? +|faq-12.27| 72文字より長くて"+"で終わり、次行に折り返されている行があります。 + このような行をすばやく連結させるには? +|faq-12.28| 文字単位でヤンクされたテキストを新しい行にペーストするには? +|faq-12.29| 単語・文字・テキストのブロックの大文字小文字を入れかえるには? +|faq-12.30| キーボード上にないアスキー文字を入力するには? +|faq-12.31| ファイル中の印字不能文字を置換するには? +|faq-12.32| バッファから重複した行を削除するには? +|faq-12.33| ファイル中の全ての行の前に行番号をつけるには? +|faq-12.34| 2つの文字・単語・行を入れ換えるには? + *faq-completion-in-insert-mode* +SECTION 13 - インサートモードでの補完 +|faq-13.1| インサートモードで単語や行を補完するには? +|faq-13.2| インサートモードでファイル名を補完するには? +|faq-13.3| インサートモードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 + 今補完した単語の後に現れる単語を補完するには? + *faq-text-formatting* +SECTION 14 - テキストの整形 +|faq-14.1| 折り返された行の末尾に改行を挿入するには? +|faq-14.2| 1行がn文字以下になるように長い行を整形するには? +|faq-14.3| 短い行を連結して段落を形成するには? +|faq-14.4| 箇条書きや番号つきリストを整形するには? +|faq-14.5| インサートモードで行をインデントするには? +|faq-14.6| ファイル全体を整形・インデントするには? +|faq-14.7| 現在のファイルのインデントを増やす/減らすには? +|faq-14.8| ブロックまたは行のグループをインデントするには? +|faq-14.9| >または<キーで行をインデントすると、'tabstop'で設定した値でなく、 + 標準的なタブストップ値の8が使われます。なぜですか? +|faq-14.10| オートインデントを無効にするには? +|faq-14.11| メールを編集するときは自動的に'textwidth'オプションをある値にする + ようにするには? +|faq-14.12| 自動的に改行を挿入させることはできますか? +|faq-14.13| ファイル中に^Mという記号がたくさん表示されます。'fileformat'を + 'dos'にしたり'unix'にしたり'mac'にしたりしてみましたが、改善できま + せん。これらの記号を表示させなくするには? +|faq-14.14| 他のアプリケーションからVimのバッファへテキストを貼り付けたとき、 + 挿入されたテキストの桁(インデント)が狂ってしまいます。 + これを直すには? +|faq-14.15| 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきら + ないとき、まったく何も表示されません。折り返された行の代わりに'@' + という記号で始まる空の行が表示されます。行が収まるように画面をスク + ロールすると'@'は消え、行が表示されるようになります。この挙動の設 + 定はどうやるのですか? +|faq-14.16| ファイル中の全てのタブ文字をスペースに変換するには? +|faq-14.17| 後でワードプロセッサに送るテキストを編集するためのオプションは? + *faq-visual-mode* +SECTION 15 - ビジュアルモード +|faq-15.1| 矩形範囲をコピーするには? +|faq-15.2| ファイルの特定の列を削除・変更するには? +|faq-15.3| ビジュアル選択した行に対してexコマンドを適用するには? +|faq-15.4| 矩形選択した範囲に対してexコマンドを適用するには? +|faq-15.5| ビジュアルモードでファイル全体を選択するには? +|faq-15.6| ビジュアル選択してから>キーを押してインデントすると、選択が解除さ + れます。この範囲に対して操作を続けるため選択したままにするには? + (または)最後に選択された範囲を再選択するには? +|faq-15.7| ビジュアル選択した範囲の先頭/末尾へ移動するには? +|faq-15.8| マウスでテキストを選択してからexコマンドを実行しようと:キーを押す + と選択された範囲が文字:で置換されてしまいます。マウスで選択したと + きもビジュアル選択したときのようにテキストに対してexコマンドを実行 + するには? +|faq-15.9| マウスでテキストを選択するとビジュアルモードでなく選択モードに入っ + てしまいます。なぜですか? +|faq-15.10| 最後にコピー/ペーストされたテキストをビジュアル選択するには? + *faq-command-line-mode* +SECTION 16 - コマンドラインモード +|faq-16.1| コマンドモードまたはexコマンドモードでカレントファイル名を使うには? +|faq-16.2| Vimのコマンドラインで効率的にテキストを編集するには? +|faq-16.3| ViモードからExモードに移行するには? +|faq-16.4| exコマンドの出力をバッファにコピーするには? +|faq-16.5| コマンドモードでファイル名を補完しようとタブキーを押します。マッチ + するファイル名が複数ある時、Vimは最初にマッチするファイル名を補完 + し、マッチしたファイル名全てのリストを表示します。マッチしたファイ + ル名全てを表示するだけで、最初の候補を補完しないようにするには? +|faq-16.6| バッファからコマンドラインにテキストをコピーしたり、コマンドライン + からバッファにテキストをコピーするには? +|faq-16.7| あるコマンドを実行することなくコマンド履歴に入れるには? +|faq-16.8| コマンドラインの高さを上げるには? + *faq-viminfo* +SECTION 17 - VIMINFO +|faq-17.1| Vimを起動したときviminfoファイルに不正な文字があるとエラーメッセー + ジが出ます。このメッセージを出なくさせるには? +|faq-17.2| viminfo機能を無効にするには? +|faq-17.3| Vimのセッションをまたいでマークを保存し、使用するには? + *faq-remote-editing* +SECTION 18 - リモート編集 +|faq-18.1| 既に起動しているgvimでファイルを開くには? Vim 5.xの + OpenWithVim.exeとSendToVim.exeはどうなりました? +|faq-18.2| vimサーバに全てのバッファをディスクに保存するようなコマンドを送る + には? +|faq-18.3| Vimのリモートサーバ機能についてのドキュメントはどこで手に入ります + か? + *faq-options* +SECTION 19 - オプション +|faq-19.1| Vimを簡単な方法で設定するには? +|faq-19.2| オプションの値をトグルするには? +|faq-19.3| 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプション + を設定するには? +|faq-19.4| オプションの値にスペースを含めるには? +|faq-19.5| オプション設定をファイルに埋め込むには? +|faq-19.6| ファイル中の全ての行の行番号を表示するには? +|faq-19.7| 'number'オプションで表示される行番号の幅を変えるには? +|faq-19.8| スペース、タブ、改行などの不可視文字を表示するには? +|faq-19.9| 常に現在行と桁番号を表示するようにするには? +|faq-19.10| 現在のモードを表示するようにするには? +|faq-19.11| ステータスラインに入力途中のコマンドを表示するようにするには? +|faq-19.12| ステータスラインに異なる設定・値を表示するようにするには? +|faq-19.13| 常にステータスラインを表示するようにするには? +|faq-19.14| Vimを再起動しても設定が永続するようにするには? +|faq-19.15| なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュす + る)のですか? +|faq-19.16| 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示する + ようにするには? +|faq-19.17| 1回の":set"コマンドでオプションから複数のフラグを除去するには? + *faq-mapping-keys* +SECTION 20 - キーマップ +|faq-20.1| キーがどうマップされているかを知るには? +|faq-20.2| ユーザ定義のキーマッピングをリストするには? +|faq-20.3| キーマップを解除するには? +|faq-20.4| キー<xxx>へマッピングができません。なにがまずいのですか? +|faq-20.5| テンキーにマップするには? +|faq-20.6| ビジュアルモードでのみ機能するマッピングを作成するには? +|faq-20.7| Vimスクリプト中で、すでに使われているキーと衝突しないようにどの + キーを使うべきかを知るには? +|faq-20.8| エスケープキーにマップするには? +|faq-20.9| あるキーをなにもしないようにマップするには? +|faq-20.10| Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブ + ロックをアンインデンとするようにしたいです。このようなマップを作る + には?この挙動はtextpadやVisual Studioなどに似ています。 +|faq-20.11| 私のマッピングにおいて<CR>のような特殊文字が認識されません。 + 特殊文字を認識するように設定するには? +|faq-20.12| マップ中で'|'を使って複数のコマンドを区切るには? +|faq-20.13| その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 + 入力があります。最初のものを入力したとき、2番目のが展開しないようにする + には? +|faq-20.14| ときどきキーが処理されるのに1秒程度かかるのはなぜですか? +|faq-20.15| ビジュアル選択したテキストに対して外部コマンドを実行するマッピング + を作るには? +|faq-20.16| <Tab>キーの機能を保ったままCtrl-Iにマッピングするには? + *faq-abbreviations* +SECTION 21 - 短縮入力 +|faq-21.1| スペリングを間違えた単語を自動的に修正するには? +|faq-21.2| 複数行の短縮入力を作るには? +|faq-21.3| 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペース + が入ってしまいます。これを防ぐには? +|faq-21.4| 現在の日付・時刻を挿入するには? +|faq-21.5| インサートモードで短縮入力が展開されるのを防ぐには? + *faq-record-and-playback* +SECTION 22 - レコーティングと繰り返し +|faq-22.1| 編集操作(挿入、削除、ペースト等)を繰り返すには? +|faq-22.2| キーシーケンスを記録し、繰り返すには? +|faq-22.3| 記録したキーシーケンスを編集するには? +|faq-22.4| 記録したキーシーケンスをファイルに保存するには? +|faq-22.5| レジスタ0にキーシーケンスを保存しています(つまり q0 .... q)。 + 記録したキーシーケンスの中でテキストをヤンクしています。一度そのキーシー + ケンスを再生すると、もうそれを再現することができません。 + *faq-autocommands* +SECTION 23 - 自動コマンド +|faq-23.1| 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? +|faq-23.2| あるバッファに入るときに毎回コマンドを実行するには? +|faq-23.3| あるウィンドウに入るときに毎回コマンドを実行するには? +|faq-23.4| autocmd中でその自動コマンドが実行されているファイルの名前やバッフ + ァ番号を知るには? +|faq-23.5| Vimがフォーカスを失ったとき、変更されたバッファ全てを自動的に保存 + するには? +|faq-23.6| Vimを終了するときにクリーンアップ用の関数を実行するには? + *faq-syntax-highlight* +SECTION 24 - 構文強調 +|faq-24.1| 構文強調をオン・オフにするには? +|faq-24.2| 背景色と文字色を変えるには? +|faq-24.3| 暗い/明るい背景色に合うように色を変えるには? +|faq-24.4| ":set number"をしたときに表示される行番号の色を変えるには? +|faq-24.5| ビジュアルモードで選択された範囲の背景色を変えるには? +|faq-24.6| オプション'list'で表示した特殊文字(タブ、行末の空白、行末など)に色 + をつけるには? +|faq-24.7| 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? +|faq-24.8| 正しく構文強調されません。ファイルの一部が強調されなかったり、間違 + って強調されてしまいます。 +|faq-24.9| 対応する括弧を強調する組み込みの関数はありますか? +|faq-24.10| Cのコメントの構文強調をオフにするには? +|faq-24.11| Vimに付属する標準の構文ファイルに私自身の構文拡張を加えるには? +|faq-24.12| Vimに付属の標準の構文ファイルを独自の構文ファイルで置き換えるには? +|faq-24.13| 特定の桁以降の全ての文字を強調するには? +|faq-24.14| ソースファイル(.c, .hなど)を構文強調つきでHTMLファイルに変換するに + は? +|faq-24.15| 現在の強調グループ定義を全て表示するには? + *faq-vim-script-writing* +SECTION 25 - VIMスクリプトを書く +|faq-25.1| 読み込まれているスクリプトを全て表示するには? +|faq-25.2| Vimスクリプトをデバッグするには? +|faq-25.3| あるオプションを設定したスクリプト/プラグインを探すには? +|faq-25.4| (おそらくスクリプトを実行中に)エラーやメッセージが出るのですが、す + ぐに消えてしまいます。このメッセージをもう一度表示するには? +|faq-25.5| プラグイン固有の情報を保存し、Vimを再起動したときそれを復元するに + は? +|faq-25.6| 関数の中からインサートモードを開始するには? +|faq-25.7| 関数の中でカーソル位置を動かすには? +|faq-25.8| .vimrcファイルの中で環境変数の値をチェックするには? +|faq-25.9| 環境変数が定義されているかどうかをチェックするには? +|faq-25.10| Vimの組み込み関数を呼ぶには? +|faq-25.11| Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対 + してユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマン + ドがVimの標準の機能を果たすようにするには? +|faq-25.12| ビジュアルモードで現在選択されているテキストを変数やレジスタに入れ + るには? +|faq-25.13| 変数'myvar'にテキストが入っています。この変数を":s"中で使って'mytext' + というテキストを置換したいのですが、どうすればいいですか? +|faq-25.14| 変数"bno"がバッファ番号を保持しています。この変数を使って対応する + バッファを開くには? +|faq-25.15| オプションの値を変数に保存するには? +|faq-25.16| 関数の中でテキストをコピーし、バッファに挿入しました。関数の中で + そのテキストをインデントするには? +|faq-25.17| Vimスクリプト中でカーソル下の文字を取得するには? +|faq-25.18| 拡張子を除いたカレントファイル名を取得するには? +|faq-25.19| カレントファイルのベース名(basename)を取得するには? +|faq-25.20| 関数の結果をカレントバッファに挿入するには? +|faq-25.21| 関数の中で外部プログラムを呼ぶには? +|faq-25.22| ":!"で実行したプログラムが返すステータス値を取得するには? +|faq-25.23| カレントバッファが変更されているかどうかを知るには? +|faq-25.24| スクリプト中でノーマルコマンドの中に改行文字を使いたいです。改行文 + 字を指定するには? +|faq-25.25| スクリプト中で長い行を次行に継続するには? +|faq-25.26| "execute 'echo Myfunc()'"として自作の関数を呼ぼうとすると、カーソ + ルがカレントバッファの先頭に移動してしまいます。なぜ? +|faq-25.27| レジスタの中身を実行するには? +|faq-25.28| 関数やマップを呼んだ後に'u'キーを押してアンドゥするとその関数/ + マップによってなされた変更全てをアンドゥします。なぜ? +|faq-25.29| s:つきで定義された関数(スクリプトローカル関数)を別のスクリプト/ + プラグインから呼ぶには? +|faq-25.30| 読み込んだスクリプトをun-sourceするには?言い替えると、スクリプト + を読み込んだことによって実行されたコマンドを全て戻すには? + *faq-plugins* +SECTION 26 - プラグイン +|faq-26.1| ファイル形式ごとに異なるオプションを設定するには? +|faq-26.2| プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイル + タイププラグインをダウンロードしました。Vimがこれらのファイルを読 + み込むようにするには、どこにコピーすればいいですか? +|faq-26.3| 既存のファイルタイププラグインを拡張するには? +|faq-26.4| プラグインの読み込みをオフにするには? +|faq-26.5| ファイルタイププラグインの読み込みをオフにするには? +|faq-26.6| 全てのファイル形式に対し、グローバルのファイルタイププラグインで + なされる設定を上書きするには? +|faq-26.7| Vimのディレクトリブラウザプラグインを無効にするには? +|faq-26.8| 特定のパターンにマッチする名前のファイルや拡張子に応じてファイル + タイプオプションを設定するには? + + *faq-editing-program-files* +SECTION 27 - プログラムファイルを編集する +|faq-27.1| C/C++のファイルに対してオートインデントを有効化するには? +|faq-27.2| C/C++のファイルに対するインデントをカスタマイズするには? +|faq-27.3| オートインデント機能を無効化するには? +|faq-27.4| オートインデントの際に挿入されるスペースの数を変えるには? +|faq-27.5| Cプログラムを編集しています。マクロ定義や変数を表示するには? +|faq-27.6| Cプログラムを編集しています。ブロックの内側から、そのブロックの開 + 始位置や終了位置にジャンプするには? +|faq-27.7| C++ファイルで"//"コメントが自動的に挿入されるのを止めさせるには? +|faq-27.8| 一連の行の行頭にコメント文字'#'をつけ加えるには? +|faq-27.9| Cのソースファイルに対応する名前のヘッダファイルを開くには? +|faq-27.10| コメントを入力しているとき、自動的にコメント文字を挿入するには? + *faq-quickfix* +SECTION 28 - QuickFix +|faq-28.1| Vimの中からプログラムをビルドするには? +|faq-28.2| Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパ + イルしてエラーメッセージを出力します。しかしコンパイルが終わると表 + 示が消えてしまい、エラーメッセージをもう一度見るには:clistとしなけ + ればなりません。このエラーメッセージを見るのに他の方法はありません + か? + *faq-folding* +SECTION 29 - 折り畳み +|faq-29.1| 折り畳みの機能を拡張するには? +|faq-29.2| 'foldmethod'をセットして折り畳みを有効化すると、全ての折り畳みが閉 + じてしまいます。これを防ぐには? +|faq-29.3| ファイルの編集を開始したときにいくつの折り畳みが開かれた状態にする + かをコントロールするには? +|faq-29.4| マウスを使って折り畳みを開閉するには? +|faq-29.5| 閉じた折り畳みの表示に使われるテキストを変更するには? +|faq-29.6| Vimを終了・再起動するとき、手動で作った折り畳みを保存・復元するに + は? + *faq-vim-with-external-applications* +SECTION 30 - 外部プログラムとの連携 +|faq-30.1| Vimのウィンドウの中でシェルを起動することはできますか? +|faq-30.2| カーソル下の単語を外部プログラムに渡すには? +|faq-30.3| シェルコマンドの出力をVimのバッファに取り込むには? +|faq-30.4| カレントバッファの中身を外部プログラムにパイプで渡して、そのプログ + ラムの出力でバッファを置き換えるには? +|faq-30.5| ファイル中のあるセクションをソートするには? +|faq-30.6| Vimとslrnといっしょに使うステップ・バイ・ステップガイドはあります + か? +|faq-30.7| Vimをページャとして使うには? +|faq-30.8| Vimの中でUnixのmanページを見るには? +|faq-30.9| Vimのdiff機能で使われるdiffコマンドを変更するには? +|faq-30.10| 折り畳みなしでdiffモードを使うには? + *faq-gui-vim* +SECTION 31 - GUIのVIM +|faq-31.1| バッファ固有のメニューを作るには? +|faq-31.2| GUIのVimで使われるフォントを変更するには? +|faq-31.3| GUIのVimが起動したときのウィンドウの位置を指定するには? +|faq-31.4| GVimに水平スクロールバーをつけるには? +|faq-31.5| スクロールバーをデフォルトで左側に表示するようにするには? +|faq-31.6| メニューバーを消すには? +|faq-31.7| GVimを使っています。ALTキーと文字キーを押すとその文字で始まるメニ + ューが選択されます。ALT-<key>の組合せを使いたいので、この挙動はや + めてほしいです。どうすればいいですか? +|faq-31.8| スクロールバーをドラッグしたとき、カーソル位置を動かさずにテキスト + をスクロールさせることは可能ですか? +|faq-31.9| ":browse"を使ったときに特定のディレクトリから始めるようにするには? +|faq-31.10| ファイルがVimの外部で変更されたときなど、問い合わせがあるとき、GUI + のダイアログボックスが表示されます。コンソールのダイアログボック + スが出るようにするには? +|faq-31.11| GVimをアプリケーションxxx用のエディタとして使っています。アプリケ + ーションxxxがGVimを起動すると、コントロールがすぐにアプリケーショ + ンxxxに戻ってしまいます。Vimを終了したとき初めてアプリケーション + xxxにコントロールが戻るようにGVimを起動するには? +|faq-31.12| なぜ、システムにインストールされているフォント全てが「フォントを + 選ぶ」ダイアログに現れないのですか? +|faq-31.13| コマンドラインモードでマウスを使うには? +|faq-31.14| テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコピ + ーしたテキストがペーストされてしまいます。この挙動を無効にするには? +|faq-31.15| GVimウィンドウの位置とサイズを変更するには? + *faq-vim-on-unix* +SECTION 32 - UNIX上のVim +|faq-32.1| xtermでVimを実行しています。CTRL-Sを押すとVimがフリーズします。 + どうすればいいですか? +|faq-32.2| 画面の更新について奇妙な問題があります。これを解決するには? +|faq-32.3| Vimのターミナル/コンソール版を使っています。インサートモードでバッ + クスペースキーを押してもカーソルの前の文字が消えません。どう設定す + れば良いですか? +|faq-32.4| xtermでVimを使っています。Vimを終了すると画面が元の状態に復元され + ます。これを無効化するには? +|faq-32.5| Vimの起動にかなり時間がかかります。起動時間を最小化するには? +|faq-32.6| Unixのgvimでカーソルの点滅を止めるには? +|faq-32.7| GTK Vimのメニューのフォントを変えるには? +|faq-32.8| Vimが<Ctrl-Z>でサスペンドするのを防ぐには? +|faq-32.9| Vimを実行しているxtermをkillすると、Vimのプロセスが生き残り、多大 + なCPU時間(99%)を食ってしまいます。なぜこうなるのですか? +|faq-32.10| Unixターミナルで構文強調を使うには? + *faq-vim-on-ms-windows* +SECTION 33 - MS-Windows上のVim +|faq-33.1| MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。 + どうなっているのですか? +|faq-33.2| CTRL-Yキーを押すとCTRL-Rのような動作をします。CTRL-YをCTRL-Yとして + 扱うように設定するには? +|faq-33.3| 常にGVimのウィンドウを最大化して起動するには? +|faq-33.4| なんらかの編集操作をするとVimがフリーズします。カーソルは空の四角 + 形になります。全然文字が入力できません。どうなっているのですか? +|faq-33.5| Windows XPを使っています。最大化したGVimの表示速度がとても遅いで + す。表示の更新を早くするには? +|faq-33.6| VimをCygwin上で使うにあたって推奨される設定は? +|faq-33.7| diffモードでGNU diffを使おうとしています。コマンドラインからdiffを + 使うとうまく動くのですが、Vim内で使おうとすると動きません。どうす + れば? +|faq-33.8| Outlookで外部エディタにVimを使うことはできますか? +|faq-33.9| HTMLファイルを編集するのにVimを使っています。現在開いているHTML + ファイルをインターネットエクスプローラでプレビューするには? +|faq-33.10| VimをMicrosoft Visual Studioといっしょに使いたいです。どうすれば? +|faq-33.11| どこに_vimrcと_gvimrcを置けばいいですか? +|faq-33.12| ファイルを保存する度に、そのファイルがVimの外部で変更されていると + 警告が出ます。なぜですか? + *faq-printing* +SECTION 34 - 印刷 +|faq-34.1| 全ての行に行番号をつけて印刷するには? +|faq-34.2| 構文強調の色をつけてファイルを印刷するには? + *faq-building-vim-from-source* +SECTION 35 - Vimをソースからビルドする +|faq-35.1| Unixシステム上でVimをソースからビルドするには? +|faq-35.2| Unixでホームディレクトリなど、デフォルトのディレクトリ以外にVimを + インストールするには? +|faq-35.3| MS-Windowsシステム上でVimをソースからビルドするには? +|faq-35.4| 私がインストールしたVimにはヘルプ、構文ファイル、インデントファイ + ルが欠けています。それらのファイルをインストールするには? +|faq-35.5| Vimをソースからビルドして"make install"でインストールしました。Vim + のソースディレクトリを残しておく必要はありますか? +|faq-35.6| ある機能がコンパイル時に有効化されているかどうかを知るには? +|faq-35.7| GUI機能なしでVimをビルドすることはできますか? +|faq-35.8| Unixシステム上でVimをビルドするとき、"undefined reference to + term_set_winsize"というエラーが出ます。これを解決するには? +|faq-35.9| GTK 2.03を使おうとしているのですが、Vimのconfigureがgtk-configがな + いとのメッセージを出します。しかしGTK2は一般的なpkg-configを使うよ + うになったので、これは正しいのです。gtk用のインクルードファイルと + ライブラリのリストを出力するpkg-configならありますが、なぜかconfi + gureスクリプトはこれを使ってくれません。 + *faq-various* +SECTION 36 - 様々な事柄 +|faq-36.1| Vimでバイナリフィルを編集するには? +|faq-36.2| ビジュアルエラーフラッシュとエラービープを無効にするには? +|faq-36.3| バッファに表示されている文字のアスキーコードを表示するには? +|faq-36.4| コマンドのカウントとして0を使うことはできますか? +|faq-36.5| Vimの起動時の画面を表示させなくするには? +|faq-36.6| "hit enter to continue"プロンプトを避けるには? +|faq-36.7| コマンドラインからVimを起動して一連のファイルに対して一連のコマン + ドを実行するには? +|faq-36.8| インサートモードから抜けることなくノーマルモードコマンドを実行する + には? + *faq-unicode* +SECTION 37 - ユニコード +|faq-37.1| Vimでユニコードのファイルを作ることはできますか? +|faq-37.2| ユニコードのファイルを編集するにあたって特に重要な設定は? +|faq-37.3| オプション'encoding'とは何ですか? +|faq-37.4| Vimでは様々なユニコードエンコーディングをどう書き表しますか? +|faq-37.5| バイト順マークの有無を指定するには? +|faq-37.6| オプション'fileencoding'とは何ですか? +|faq-37.7| オプション'fileencodings'とは何ですか? +|faq-37.8| オプション'termencoding'とは何ですか? +|faq-37.9| オプション'bomb'とは何ですか? +|faq-37.10| これらのオプションの典型的な例はどこにありますか? +|faq-37.11| ユニコードの文字を挿入するには? +|faq-37.12| どのダイグラフがどの文字に定義されているかを知るには? + +============================================================================= + *faq-1* +SECTION 1 - 一般的な情報 + + *faq-1.1* +1.1. Vimとは何ですか? + +Vim とは Vi IMproved を表します。かつては Vi IMitation の略でしたが、あまりに +多くの改良があったため名前の変更は適切なものでした。Vim は、Unix プログラムの +"Vi" のほとんど全てのコマンドや、多くの新しいコマンドを含んだテキスト・エディ +タです。全てのコマンドはキーボードで与えることができます。これには、指はキー +ボードに置いたまま、目はスクリーンに向けておけるという利点があります。望む人に +は、マウス・サポートや、スクロールバーとメニューのついた GUI 版もあります。 + +Vim はエディタであって、ワード・プロセッサではありません。ワード・プロセッサは +主にテキストのレイアウトを行うのに使われます。つまり、位置決めや、表示時の見え +方を変えたり、ということです。たいてい最終的なドキュメントは他の人に満足いくよ +うに見せるため、印刷したり活字に組んだりなどするよう意図されます。ワード・プロ +セッサの例は、Microsoft Word、WordPerfect、FrameMaker、AmiPro です。 + +エディタは単純にテキストを入力するためのものです。ドキュメントの植字やレイアウ +トは二次的なものです。エディタにおいて、主な関心事はテキスト入力であり、テキス +トを良く見せることではありません。Vim や Vi 以外のエディタの例は、Emacs、 +Crisp、Brief、xedit です。そして Notepad も。 + +さらなる情報については以下を参照してください。 > + + :help intro +< + *faq-1.2* +1.2. 誰が Vim を書いたんですか? + +Vim のほとんどは Bram Moolenar によって書かれましたが、他に貢献した人々の名前 +はここでは多すぎて触れられません。完全なリストは ":h credits" を見てください。 + +Vim は、Tim Thompson、Tony Andrews、G.R. (Fred) Walter らによって開発された +Stevie に基づいています。 + +さらなる情報については以下を参照してください。 > + + :help author +< + *faq-1.3* +1.3. Vim は Vi と互換性がありますか? + +非常に。コマンドラインフラグ"-C"を使えばVimをVi互換モードで起動することが +できます: > + + $ vim -C +< +また、 > + + $ vim -u NONE +< +ともできます。'compatible'オプションをセットすればViとの互換を有効化できます: > + + :set compatible +< +さらなる情報については以下を参照してください。 > + + :help -C + :help 'compatible' + :help compatible-default +< + *faq-1.4* +1.4. Vim が Vi よりも向上している点は何ですか? + +ここにあるのは短い要約です。以下のリストは Vim が徹底して現代的で、機能がぎゅ +っと詰め込まれたエディタであることを示すものです。今日のエディタの標準的な機能 +は実装されており、一般的なパワーユーザーやプログラマ向けの機能にも重点が置かれ +ています。 + +Vi を現代化する機能: + + 多段階アンドゥ + ファイル・バッファにおける変更を元に戻す回数を設定することができます。ア + ンドゥされた変更をリドゥすることもできます。 + 複数ウィンドウとバッファ + それぞれのファイルはそれ自身のウィンドウに表示することができます。一つの + ウィンドウから別のウィンドウへ簡単に移動することができます。それぞれの開 + かれたファイルは Vim のセッション中関連付けられたバッファを保有し、バッ + ファ間を簡単に移動することができます。 + 柔軟なインサート・モード + Vim ではインサート・モードにある間矢印キーでファイル内を移動することがで + きます。<Esc> を押し、移動して、`i' や `a' を押す、といったことはしなくて + 済みます。 + マクロ + Vim には、連続してタイプされた文字を記録し、後で何度でも繰り返すことので + きる機能があります。 + ビジュアル・モード + テキストの一部分をハイライトさせ、その部分にだけ操作を実行することができ + ます。 + ブロック・オペレーター + テキストを長方形のブロック状に選択、ハイライトさせ、その部分に対し特定の + 操作を行うことができます。 + オンライン・ヘルプシステム + どんな Vim 使用の局面であれ、容易に答えを探すことができます。ヘルプはそれ + 自身のウィンドウに表示されます。 + コマンドライン編集と履歴 + 履歴を利用すると、矢印キーで既にタイプされたコマンドを繰り返したり探した + りできます。コマンドの先頭を、履歴バッファにある別の似たコマンドの先頭に + マッチさせることができます。コマンドを編集してタイプミスを訂正したり、い + くつか値を変更することも出来ます。 + コマンドライン補完 + <Tab> キーを使うと、コマンドやオプション、ファイル名などを必要に応じて補 + うことができます。 + 水平スクロール + 長い行は水平にスクロールできます(GUI の有る、無しにかかわらず)。 + +先進的なユーザー機能: + + テキスト整形 + 2 キーストロークで、外部プログラムを使わずに長いテキストを整形できます。 + インサート・モードでの単語補完 + Vim は、現在の単語とファイル内の似た単語とをマッチすることにより、タイピ + ング中に単語補完を行うことができます。 + タグ・ジャンプ + ウェブ・ブラウザーと同じように、以前編集していた箇所に戻ったり、また元に + 復帰することができます。なので、あなたの頭脳は自由にナビゲート、ではなく + 編集をすることができます。 + 自動コマンド + ファイルを読み書きする時や、他のバッファに移動する時などに自動的に実行さ + れるコマンドです。 + Viminfo + 起動時に読み込まれるコマンドライン履歴やファイル内のマーク、レジスターを + 記憶しておくことができます。したがって、以前の検索パターンや、マクロなど + を、新しい Vim セッションで呼び出すことができます。 + マウス・サポート + マウスは xterm や MS-DOS でサポートされています。カーソル位置を設定した + り、ビジュアル領域を選択したり、レジスターを貼り付けたり、等のことができ + ます。 + グラフィカル・ユーザー・インターフェース(GUI) + 他の昨今のエディタと同様です。その上、独自のメニューを追加することも非常 + に簡単です。もちろん、コンソール版の Vim も今なおサポートされており、幅広 + く利用されています。 + スクリプト言語 + Vim は強力なスクリプト言語を備えており、新しいコマンドを作ることができま + す。また、同じことをするのに Perl、Python、TCL、それに Ruby を使うことも + できます。 + プラグイン + Vim コマンドによって実装された拡張機能で、起動時に自動的にロードされます。 + 例:ファイル・エクスプローラー、ネットワーク編集。更に多くのものが + VimOnline にて常に開発、共有されています。 + 多数のプログラミング言語に対応した構文強調 + 数百ものプログラミング言語に対応した構文強調があります。他の言語への対応 + を追加することができます。 + 拡張正規表現 + 機能性がPerlの正規表現に似ている拡張正規表現をサポートしています。 + +プログラミング効率に関する機能: + + 編集―コンパイル―編集のスピードアップ + Vim 内部からコンパイルを行い、自動的にソース・コードのエラーの箇所にジャ + ンプすることができます。 + 多数のプログラミング言語の字下げ + C、C++、Java、Perl、XML その他多くの言語で、タイプ中に自動的に字下げが行 + われます。他の言語へのサポートも追加可能です。 + インクルードファイル内の単語を検索 + カーソルの下の単語とのマッチを、現在のファイルとインクルードされるファイ + ル内で検索することができます。 + 先進的なテキスト・オブジェクト + ( と ) や、{ と } や、< と > 、また [ と ] の間の全てのテキストに対して、 + また単語、文、段落に対して、一瞬で選択したり、削除やコピーをしたり、字下 + げ、整形、大文字小文字の変換、等々を行うことができます。非常に強力です。 + フォールディング + テキストのある部分を「フォールド」(折り畳み)してしまうことができます。 + 最も良い例は関数の中身の部分です。コードの概観を見渡して、それから詳細を + 見たい関数のフォールドを開くことができます。 + ctags と cscope との統合 + これらの強力なプログラムを使うと、関数の呼び出し部分からその定義部分へジ + ャンプしたり、他の技術を使ってソース・コードを行き来することができます。 + +さらなる情報については以下を参照してください。 > + + :help vi-differences +< + *faq-1.5* +1.5. Vim は無料ですか? + +Vim はチャリティーウェアです。Vim の使用や複製に関しては何ら制限はありませんが、 +著者は慈善事業に寄付をするよう奨励しています。その方法を説明するドキュメントが +ディストリビューションの中に含まれています。 +さらなる情報については以下を参照してください。 > + + :help copyright +< + +============================================================================= + *faq-2* +SECTION 2 - 情報源 + + *faq-2.1* +2.1. どこに行けば Vim についてもっと学べるでしょうか?Vimの質問はvim@vim.orgメー +リングリストに投稿できます。Vimの開発に関する質問はvim-dev@vim.orgメーリングリ +ストに投稿できます。Vim にはそれ自身のためのニュースグループがありません。しか +し comp.editors は投稿するのに適しています。 + +"VimOnline" は vim のデファクト・ホームページの役割を果たしているウェブ・ペー +ジですが、その主な目的はチップやスクリプトをいたる所から集積することにあります。 +ぜひ参加してください。URL は vim.sourceforge.net または vim.sf.net です。 + +最後に、Vi FAQ を読んでください: > + + http://www.faqs.org/faqs/editor-faq/vi/part1/index.html +< +この FAQ の第 5 節に、こちらの FAQ についてのより詳しい情報があります。 > + + :help mail-list + :help internet +< + *faq-2.2* +2.2. メーリング・リストはありますか? + +いくつか存在します: > + + 名前 説明 +< + vim-announce 新しいリリースの発表 + vim 一般的な議論 + vim-dev パッチ、バグ報告、開発議論 + vim-mac マッキントッシュに関する議論 + vim-fr フランス語による一般的な議論 + vim-multibyte マルチバイト関連の開発の問題 + vim-vms VMS上での開発について + +これらのうち、vim と vim-dev だけが一般的な興味を引くものです。vim-announce は +ほとんどの人にとってはリード・オンリーですし、そのメッセージは他のリストにも送 +信されます。他の 4 つは非常に通信量が少ないです。 + +購読するには: <NAME>-subscribe@vim.org にメールを送ってください。 +購読を中止するには: <NAME>-unsubscribe@vim.org にメールを送ってください。 +ヘルプを得るには: <NAME>-help@vim.org にメールを送ってください。 + + *faq-2.3* +2.3. メーリング・リストのアーカイブはありますか? + +あります。http://www.yahoogroups.com/list/<名前> を訪ねてみてください。<名前> +の所には次の: + vimannounce, vim, vimdev, vim-fr, vim-mac, vim-multibyte, vim-vms +のどれかが入ります。 + +もしくは、www.gmane.org に行って GMANE について調べてみてください。これはメー +リング・リストに、あたかもニュースグループのような感覚でアクセスすることができ +るものです。履歴をざっと眺めたり、現在のスレッドを気軽に見ることができて便利で +す。 + +2.4. HTML/PDF/PS形式のVimユーザーマニュアルはどこで手に入りますか? + +HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロードできます。 > + + http://vimdoc.sourceforge.net/ +< +2.5. ある問題が発生しました。それが私の設定によるものか、Vimそのものの + 問題かはどうすればわかりますか? + +まず、その問題があなたの.vimrcや.gvimrc、システムのvimrc、あなたのプラグインフ +ァイル、その他あなたの設定ファイルによるものかを調べなければなりません。そのた +めに > + + $ vim -N -u NONE -U NONE +< +としてください。これはVimを'nocompatible'モードで起動し、あなたの個人的な +.vimrcや.gvimrcファイルを読み込みません。あなたの個人的なプラグインも読み込み +ません。これでVimを起動し、問題の再現を試みてください。もしこれで問題が再現で +きなければ、その問題はあなたの設定ファイルやプラグイン中の設定に関係しています +。設定ファイル中の問題の場所をつきとめるには、試行錯誤と設定ファイル中の1行1 +行をコメントアウトしてみなければなりません。Vimにコマンドライン引数-Vをつけて +起動するとデバッグ情報が得られ、問題を分析することができます: > + + $ vim -V2 +< +-V引数に渡す値を増やせば、さらに詳しいデバッグ情報が得られます。 + +さらなる情報については以下を参照してください。 > + + :help -u + :help -U + :help -N + :help -V + :help 'verbose' + :help :verbose + :help set-verbose +< + *faq-2.6* +2.6. どこでバグ報告をすればいいですか? + +最初に次のコマンドを使って必要な情報を集めてください: > + + :source $VIMRUNTIME/bugreport.vim +< +そして上のコマンドで得られたテキストをbugs@vim.orgメールアドレスに送ってくださ +い。 + +Vim 開発のメーリング・リスト(上を見てください)は通常のバグについて議論するの +にふさわしい場所です。あなたの見つけたバグがシンタックス・ハイライティングやそ +の他の「付加的な機能」(つまり、直接 vim にプログラムされていないもの)に関す +るものであれば、その機能のメンテナに報告してみてください。 + +さらなる情報については以下を参照してください。 > + + :help bug-reports +< + *faq-2.7* +2.7. FAQ はどこで見つけられますか? + +VimOnline (vim.sf.net) で手に入ります。将来的には他の場所も加えられるでしょう。 + + *faq-2.8* +2.8. この FAQ に答えが見つからなかった時、どうすればいいですか? + +この FAQ は主に Vim に特有の質問を扱います。ほとんどの Vi クローン向きの情報に +ついては Vi FAQ を読めば見つかるでしょう。これは comp.editors で定期的に投稿さ +れています。下記の場所にもそのコピーがあります。 > + + http://www.faqs.org/faqs/editor-faq/vi/part1/index.html +< +また、Vim は過去数年間で非常に多くの機能を集積してきたため、よくある質問をここ +で申し分なく記述することは不可能に近い作業です。これを可能にするために、もし良 +い質問をお持ちならメンテナにメールで知らせてください。良い質問とは、自分で答え +を出そうとして(Vim は素晴らしいドキュメントを備えていることを思い出してくださ +い)非常に苦労した質問のことです。 + + *faq-2.9* +2.9. Vimに機能を追加するパッチを持っています。これをどこへ送ればいいですか? + +Vim開発者メーリングリストvim-dev@vim.orgにパッチを送ってください。 + +さらなる情報については以下を参照してください。 > + + :help vim-dev +< + +2.10. Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグインを + 開発したり、新しいスクリプトやカラースキームを開発しました。これをアップ + ロードできる公開のウェブサイトはありますか? + +あります。Vim Onlineウェブサイトにプラグイン・スクリプト、カラースキーム、ティ +ップスなどをアップロードすることができます。そのサイトは +http://vim.sourceforge.netにあります。 + +============================================================================= + *faq-3* +SECTION 3 - 入手 + + *faq-3.1* +3.1. Vim の最新のバージョンは何ですか? + +The latest version of Vim is 6.3 released on 8th June 2004. +Vim の最新バージョンは2004年6月 + +Vimのリリース履歴は以下の通りです: + +Version 6.3 8th June 2004 +Version 6.2 1st June 2003 +Version 6.1 24th March 2002 +Version 6.0 27th September, 2001 +Version 5.8 31st May, 2001 +Version 5.7 24th June, 2000 +Version 5.6 16th January, 2000 +Version 5.5 21st September, 1999 +Version 5.4 26th July, 1999 +Version 5.3 31st August, 1998 +Version 5.2 24th August, 1998 +Version 5.1 7th April, 1998 +Version 5.0 19th February, 1998 +Version 4.6 13th March,1997 +Version 4.5 17th October, 1996 +Version 4.2 5th July,1996 +Version 4.0 21st May, 1996 +Version 3.0 16th August, 1994 +Version 2.0 21st December, 1993 +Version 1.27 23rd April, 1993 +Version 1.17 21st April, 1992 + + *faq-3.2* +3.2. どこで Vim の最新版を見つけられますか? + +VimOnlineからVimの最新バージョンのソースがダウンロードできます。URLは +http://vim.sourceforge.net/download.php +です。 + + +3.3. どのプラットフォーム上で実行できるんですか? + +全ての Unix プラットフォーム。 +全ての Windows プラットフォーム。 +Amiga、Atari、BeOS、DOS、Macintosh、MachTen、OS/2、RiscOS、VMS です。 + + +3.4. どこでVimのランタイムファイルの最新バージョンをダウンロードできますか? + +Vimランタイムファイル(構文ファイル、ファイルタイププラグイン、コンパイラプラ +グイン、カラースキーム、ドキュメント、インデントファイル、キーマップ)はVim +ftpサイトのftp://ftp.vim.org/pub/vim/runtimeディレクトリでダウンロードできます +。 + +============================================================================= + *faq-4* +SECTION 4 - ヘルプ + + +4.1. どうやってヘルプ・ファイルを利用するんですか? + +Vim の全ての機能にヘルプがあります。それを利用するには、":h" を使ってください。 +そうするとメインのヘルプ・ページを見ることができます。この最初のページで、どう +やって動き回るかの説明があると思います。基本的にはリード・オンリーのドキュメン +ト内を動き回るのと同じ仕方でヘルプ内を移動します。特定のテーマへジャンプするに +はタグを使うことができます。これは二通りの方法で行えます: + + * コマンドやオプションの上で "<Ctrl-]>" コマンドを使う。これはタグがキー + ワードである場合にのみ有効です。"<Ctrl-LeftMouse>" や "g<LeftMouse>" も + "<Ctrl-]>" と同じように機能します。 + * ":ta subject" コマンドを使う。これはどんな文字であっても利用できます。 + +以前のヘルプ・ファイルの場所へ戻るには "<Ctrl-T>" を使ってください。ヘルプを閉 +じるには ":q" を使ってください。 + +ヘルプ・ページのある特定のテーマへジャンプしたければ ":h {subject}" を使ってく +ださい。何を探せば良いか分からなければ、 ":h index" で全ての利用可能なテーマの +一覧を得ることができます。標準の検索語を使って欲しい情報を見つけてください。 +":help"コマンドは":h"と短縮することができます。 + +さらなる情報については以下を参照してください。 > + + :help online-help +< + +4.2. どうやってVimヘルプファイル中のキーワードを探すんですか? + +ヘルプキーワードをタイプした後にCTRL-Dを押すとそのパターンを含む全てのヘルプキー +ワードのリストが得られます。*, \+などのメタ文字を使ってヘルプの検索パターンを指 +定することもできます: > + + :help init<C-D> + :help str*()<C-D> + :help '*indent<C-D> +< +ヘルプキーワードの一部をタイプした後にTabキーを押すと、マッチするキーワードに +展開することができます。Tabキーを押しつづけると他のマッチするキーワードに変わっ +ていきます。 + +へルプウィンドウでは":tag"コマンドを使ってキーワードを検索することができます。 +例えば、 > + + :tselect /window +< +このコマンドはテキスト"window"を含むヘルプキーワード全てをリスト表示します。そ +のリストの中から1つを選んでそこへジャンプすることができます。 + +":helpgrep"コマンドを使って全てのヘルプファイル中から与えられたテキストを検索 +することができます。QuickFixウィンドウが開き、全てのマッチする行が表示されます +。 + +さらなる情報については以下を参照してください。 > + + :help c_CTRL-D + :help c_<Tab> + :help :tselect + :help :help + :help :helpgrep +< + *faq-4.3* +4.3. エラーメッセージE123が出ました。なにがまずいのでしょうか? + +以下を行うと、エラーとエラーメッセージについてより詳しい情報が得られます: > + + :help E123 +< +さらなる情報については以下を参照してください。 > + + :help error-messages +< + *faq-4.4* +4.4. Vimの様々なモードについては何を読めばいいですか? + +Vimにおけるモードの違いについては、以下を読めば情報を得られます。 > + + :help vim-modes +< + *faq-4.5* +4.5. 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファイルを + 生成することができますか? + +":helptags"コマンドを使えばVimのヘルプタグファイルを再生成することができます。 +例えば: > + + :cd $VIMRUNTIME/doc + :helptags . +< +さらなる情報については以下を参照してください。 > + + :help :helptags + :help add-local-help +< + *faq-4.6* +4.6. 圧縮したヘルプ・ファイルを使うことはできますか? + +できます。ヘルプファイルを圧縮し、それをVimで表示することもできます。これを行 +うとヘルプファイルにアクセスするのが少し遅くなり、"gzip"ユーティリティが必要に +なります。圧縮したVimヘルプファイルを使うには、以下のステップを行ってください +。 + +- "gzip doc/*.txt"として全てのヘルプファイルを圧縮する。 + +- "doc/tags"ファイルを編集し、以下のコマンドを実行して".txt"を".txt.gz"に変更 + する。 + :%s=\(\t.*\.txt\)\t=\1.gz\t= + +- 次の行をあなたのvimrcに追加する: + set helpfile={dirname}/help.txt.gz + +{dirname}はヘルプファイルがあるディレクトリです。標準Vimディストリビューション +に同梱のgzip.vimプラグインがファイルの展開をしてくれます。他のVimファイルが圧 +縮された"doc"ディレクトリと別な場所にある場合は、$VIMRUNTIMEが他のVimファイル +のある場所に設定されていなければなりません。 + +さらなる情報については以下を参照してください。 > + + :help gzip-helpfile + :help 'helpfile' + :help gzip + :help $VIMRUNTIME +< + +============================================================================= + *faq-5* +SECTION 5 - ファイルの編集 + + *faq-5.1* +5.1. ファイルを編集用に読み込むには? + +ファイルを編集用に読み込むにはいくつかの方法があります。もっとも単純な方法は +":e" (:edit)コマンドを使うことです: > + + :e <filename> +< +":n" (:next)コマンドを使ってファイルをVimに読み込ませることもできます。 : > + + :n <filename(s)> +< +":args"コマンドを使ってファイルをVimに読み込ませることもできます。 : > + + :args <filename(s)> +< +さらなる情報については以下を参照してください。 > + + :help usr_07 + :help edit-files + :help :edit + :help :next_f + :help :args_f +< + *faq-5.2* +5.2. 現在のファイルを別な名前で保存(save as)して新しいファイルを編集するには? + +":saveas"コマンドを使えば現在のファイルを別な名前で保存することができます。 : +> + + :saveas <newfilename> +< +別な方法としては、以下のコマンドを使うこともできます: > + + :w <newfilename> + :edit # +< +":file"コマンドと":w"コマンドを使うこともできます: > + + :file <newfilename> + :w +< +さらなる情報については以下を参照してください。 > + + :help 07.7 + :help :saveas + :help :file_f + :help :w +< + *faq-5.3* +5.3. カレントディレクトリを現在のファイルのディレクトリにするには? + +次のコマンドでカレントディレクトリを現在のファイルのディレクトリにできます: +> + + :cd %:p:h +< +自動的にカレントディレクトリを現在のファイルのディレクトリにするには、次の +autocmdを使います: > + + :autocmd BufEnter * cd %:p:h +< +さらなる情報については以下を参照してください。 > + + :help :cd + :help :lcd + :help filename-modifiers + :help autocommand +< + *faq-5.4* +5.4. ファイルの末尾に改行文字(EOL)をつけずにファイルを書き込むには? + +'eol'オプションをオフにして'binary'オプションをオンにすればファイルの末尾に +EOLをつけずにファイルを書き込むことができます: > + + :set binary + :set noeol + :w +< +さらなる情報については以下を参照してください。 > + + :help 'endofline' + :help 'binary' + :help 23.4 +< + *faq-5.5* +5.5. ファイルを最後に編集した場所から開くようにするには? + +Vimは各バッファに対して最後に編集した場所のカーソル位置を'"'レジスタに保存します。 +次のautocmdを.vimrcまたは.gvimrcに書けば、ファイルを最後に編集した場所から開く +ようにできます: > + + au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal g'\"" | endif +< +さらなる情報については以下を参照してください。 > + + :help '" + :help last-position-jump +< + *faq-5.6* +5.6. Vimでファイルを編集中にそのファイルが他のアプリケーションによって変更され + たとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイアログのような) + を開きます。この警告を無効にするには? + +'autoread'オプションをセットすると、Vimの外部でファイルが変更されたとき、自動的に +読み直すようにできます: > + + :set autoread +< +次のautocommandを使うこともできます: > + + autocmd FileChangedShell * + \ echohl WarningMsg | + \ echo "File has been changed outside of vim." | + \ echohl None +< +さらなる情報については以下を参照してください。 > + + :help 'autoread' + :help FileChangedShell + :help timestamp + :help :checktime +< + *faq-5.7* +5.7. カーソル下のファイル名のファイルを開くには? + +gfコマンドでカーソル下のファイル名のファイルを開くことができます。CTRL-W fコマ +ンドでそのファイルを新しいウィンドウで開くことができます。 + +さらなる情報については以下を参照してください。 > + + :help gf + :help CTRL-W_f + :help 'isfname' + :help 'path' + :help 'suffixesadd' + :help 'includeexpr' +< + *faq-5.8* +5.8. 現在のファイルを再読み込みするには? + +"ファイル名を指定せずに:edit"コマンドを行えば、現在のファイルを再読み込みする +ことができます。ファイルに変更をしてある場合は、":edit!"とすれば強制的に現在の +ファイルを再読み込みすることができます(変更は失われます)。 + +さらなる情報については以下を参照してください。 > + + :help :edit + :help :edit! + :help 'confirm' +< + *faq-5.9* +5.9. ファイルを定期的に自動保存するには? + +Vimにはファイルを定期的に自動保存する機能はありません。 + +さらなる情報については以下を参照してください。 > + + :help 'updatetime' + :help CursorHold + :help swap-file +< + *faq-5.10* +5.10 ファイルを読み取り専用モードで開くには? + +ファイルを読み取り専用モードで開くには":view"コマンドを使います: > + + :view <filename> +< +このコマンドは開いたバッファに'readonly'オプションをセットします。また、コマン +ドラインオプション"-R"をつければファイルを読み取り専用モードで開くことができま +す: > + + $ vim -R <filename> +< +また、コマンドラインからシンボリックリンク実行ファイル"view"を使ってもファイル +を読み取り専用モードで開くことができます: > + + $ view <filename> +< +さらなる情報については以下を参照してください。 > + + :help 07.6 + :help 'readonly' + :help 'modifiable' + :help :view + :help :sview + :help view + :help -R + :help -M +< + +============================================================================= + *faq-6* +SECTION 6 - 複数のファイルを編集する + + *faq-6.1* +6.1. Vim内で同時に複数のファイルを開くには? + +Vim内で同時に複数のファイルを開くにはいくつかの方法があります。":next"コマンド +を使うとファイルのグループを指定することができます: > + + :next f1.txt f2.txt + :next *.c +< +:argsコマンドを使うとファイルのグループを引数に指定することができます: > + + :args f1.txt f2.txt + :args *.c +< +ファイルを読み込んだら、":next"と":prev"コマンドでファイルを切り替えることがで +きます。 + +さらなる情報については以下を参照してください。 > + + :help 07.2 + :help :next + :help :args_f + :help argument-list +< + *faq-6.2* +6.2. 複数のファイル・バッファを切り替えるには? + +複数のファイルを切り替えるにはいくつかの方法があります。":buffer"コマンドを使 +うと複数のファイルを切り替えることができます。例えば、 > + + :buffer file1 + :buffer file2 +< +CTRL-^を使ってバッファを切り替えることもできます。キーの前にカウントを指定する +とその番号のバッファを編集することができます。カウントを指定しないでCTRL-^を押 +すと代替バッファを編集します。 + +":e #"コマンドでも特定のバッファを編集することができます: > + + :e #5 +< +さらなる情報については以下を参照してください。 > + + :help edit-files + :help :buffer + :help CTRL-^ + :help alternate-file + :help 22.4 + :help 07.3 +< + *faq-6.3* +6.3. それぞれのファイルを別ウィンドウで開くには? + +コマンドライン引数-oと-Oを指定すると複数のファイルを水平または垂直に分割したウ +ィンドウで開くことができます。例えば: > + + $ vim -o3 f1.txt f2.txt f3.txt +< +上のコマンドはファイルf1.txt、f2.txt、f3.txtを3つに水平に分割したウィンドウで +開きます。 > + + $ vim -O3 f1.txt f2.txt f3.txt +< +上のコマンドはファイルf1.txt、f2.txt、f3.txtを3つに垂直に分割したウィンドウで +開きます。 > + +さらなる情報については以下を参照してください。 > + + :help -o + :help -O + :help startup-options +< + *faq-6.4* +6.4. 「ワークセット」や「プロジェクト」のように自動的に複数のファイルを同時に + 読み込ませるようにするには? + +自動的に複数のファイルを読み込ませるようにするには":mksesion"と":mkview"を使い +ます。 + +":mksession"コマンドは現在編集中のセッションを復元するVimスクリプトを生成しま +す。このmksessionコマンドで作られたファイルは":source"コマンドで読み込むことが +できます。 + +":mkview"コマンドは現在のウィンドウの中身を復元するVimスクリプトを生成します。 +現在のファイルのviewを読み込むには":loadview"コマンドを使います。 + +さらなる情報については以下を参照してください。 > + + :help 21.4 + :help 21.5 + :help views-sessions + :help 'sessionoptions' + :help :mksession + :help :source + :help v:this_session + :help :mkview + :help :loadview + :help 'viewdir' + :help buffers +< + *faq-6.5* +6.5. Neditやemacsのように単一のVimインスタンスで複数のトップレベルウィンドウを + 開くことはできますか? + +できません。単一のVimインスタンスで複数のトップレベルウィンドウを開くことは現 +在は不可能です。この機能はtodoリストの中にあります。 + + *faq-6.6* +6.6. Vim内でディレクトリをブラウズするには? + +標準Vimディストリビューションに同梱のexplorer.vimプラグインを使えばVim内でディ +レクトリをブラウズすることができます。以下のコマンドのうちどれかでファイルエク +スプローラを起動することができます: > + + :e <directory> + :Explore + :SExplore +< +ファイルエクスプローラではディレクトリをブラウズし、ファイルをリネーム、削除、 +編集することができます。 + +さらなる情報については以下を参照してください。 > + + :help file-explorer + :help 22.1 +< + *faq-6.7* +6.7. ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? + +標準Vimディストリビューションに同梱のnetrw.vimを使えばftp/scp/rcp/httpでネット +ワークごしに府ぃあるを編集することができます。このプラグインを使うと、Vimは +ftp/scp/rcp/httpごしのファイルを透過的に読み込み、保存します。例えば、ftpごし +にファイルを編集するには、以下のコマンドを使います: > + + $ vim ftp://machine/path +< +さらなる情報については以下を参照してください。 > + + :help netrw.vim +< + +============================================================================= + *faq-7* +SECTION 7 - バックアップ + + *faq-7.1* +7.1. ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけたファイル + が作られます。このファイルを作成するのを止めさせるには?(または)バック + アップ機能を無効にするには? + +あなたは'backup'オプションをセットしているので、Vimは元のファイルを保存すると +きにバックアップを作ります。このバックアップファイルを作るのを止めさせるには、 +このオプションをクリアします: > + + :set nobackup +< +Note デフォルトではこのオプションはオフにされています。初期設定ファイルのどこか +で明示的に'backup'オプションが有効化されています。'writebackup'オプションもオ +フにするとよいかもしれません: > + + :set nowritebackup +< +さらなる情報については以下を参照してください。 > + + :help 07.4 + :help backup-table + :help 'backup' + :help 'writebackup' + :help 'backupskip' + :help 'backupdir' + :help 'backupext' + :help 'backupcopy' + :help backup +< + *faq-7.2* +7.2. 全てのバックアップファイルを特定のディレクトリに保存するように設定するに + は? +'backupdir'オプションを使えば全てのバックアップファイルを特定のディレクトリに +保存するように設定できます。例えば、全てのバックアップファイルを~/backupディレ +クトリに保存するには、次のコマンドを使います: > + + :set backupdir=~/backup +< +さらなる情報については以下を参照してください。 > + + :help 07.4 + :help 'backupdir' + :help backup +< + *faq-7.3* +7.3. ファイルを保存するとファイルパーミッションが変更されます。ファイルパーミ + ッションを変更せずにファイルを保存するよう設定するには? + +これは'backupcopy'が'no'または'auto'に設定されていると起こりえます。Note この +オプションのデフォルト値はほとんどの場合に正しく動作するように設定されていま +す。もしそのデフォルト値が正しく機能しないなら、'backupcopy'オプションを'yes' +にすればファイル保存時にパーミッションをそのままにすることができます: > + + :set backupcopy=yes +< +これはファイルを上書きするときは必ずバックアップを作るように設定したときだけ適 +用されます。デフォルトではVimはバックアップファイルを作りません。 + +さらなる情報については以下を参照してください。 > + + :help 'backupcopy' + :help backup + :help 'backup' + :help 'writebackup' +< + +============================================================================= + *faq-8* +SECTION 8 - バッファ + + *faq-8.1* +8.1. バッファに対して変更を加えました。変更されたバッファを保存せずに、かつ変 + 更を失うことなく他のバッファを編集するには? + +'hidden'オプションをセットすれば現在のファイルに対する変更を失うことなく他のフ +ァイルを編集することができます。 : > + + :set hidden +< +'hidden'オプションをセットすると、バッファに対する変更履歴(アンドゥ履歴)も保 +存されます。そうでないと、ファイルを切り替えたときにアンドゥ履歴が失われてしま +うでしょう。 + +さらなる情報については以下を参照してください。 > + + :help 'hidden' + :help hidden-quit + :help :hide +< + *faq-8.2* +8.2. バッファを切り替えるときに自動的に保存するよう設定するには? + +'autowrite'オプションをセットすると、他のバッファに切り替えるとき変更されたバ +ッファを自動保存します: > + + :set autowrite +< +さらなる情報については以下を参照してください。 > + + :help 'autowrite' + :help 'autowriteall' + :help 'hidden' +< + *faq-8.3* +8.3. カレントウィンドウのバッファを空バッファにするには? + +":enew"コマンドを使うとカレントウィンドウのバッファに換わって空バッファを読み +込みます。 + +For more information, read > + + :help :enew +< + *faq-8.4* +8.4. バッファ番号を指定してバッファを読み込むショートカットキーはありますか? + +CTRL-^コマンドを使うとバッファ番号を指定してバッファを読み込むことができます。 +例えばバッファ番号5を読み込むには5 CTRL-^とします。 + +さらなる情報については以下を参照してください。 > + + :help CTRL-^ +< + *faq-8.5* +8.5. 読み込んでいるバッファをそれぞれ別のウィンドウで開くには? + +":ball"または":sball"コマンドでバッファリスト中の全てのバッファを開くことがで +きます: > + + :ball +< +さらなる情報については以下を参照してください。 > + + :help :ball +< + *faq-8.6* +8.6. Vimを終了することなくバッファを閉じる(削除する)には? + +":bdelete"コマンドでVimを終了することなくバッファを削除できます。 +例: > + + :bdelete file1 +< +さらなる情報については以下を参照してください。 > + + :help :bdelete + :help :bwipeout +< + *faq-8.7* + +8.7. :e filenameでいくつかのファイルを開きました。Vimを終了することなくそのバッ + ファのうちの1つを閉じるには? + +":bdelete <buffername>"コマンドでバッファを閉じることができます。 + +さらなる情報については以下を参照してください。 > + + :help :bdelelete + :help :bunload + :help :bwipeout +< + *faq-8.8* +8.8. ":%bd"コマンドで全バッファを削除しようとしても、全てのバッファが削除され + ません。なぜ? + +":%bd"コマンドにおいて範囲'%'はカレントバッファの開始行と終端行で置き換えられ +ます。範囲として'%'を使わず、番号を指定しなければなりません。例えば、 +":1,9999bd"とすれば全バッファを削除できます。 + +さらなる情報については以下を参照してください。 > + + :help :bd +< + *faq-8.9* +8.9. カレントバッファ/ファイルのバッファ番号を表示するには? + +2<CTRL-G>コマンドでカレントバッファ/ファイルのバッファ番号を表示できます。 +CTRL-Gの前にカウントを指定することに注意してください。カウントが1より大きい場 +合、バッファ番号が表示されます。 + +カレントバッファを表示するのに以下のコマンドを使うこともできます: > + + :echo bufnr("%") +< +また、'statusline'オプションにフィールド"%n"を含めるとステータスラインにバッフ +ァ番号が表示されます。 + +さらなる情報については以下を参照してください。 > + + :help CTRL-G + :help bufnr() + :help :echo + :help 'statusline' +< + *faq-8.10* +8.10. ウィンドウを閉じることなくバッファを削除するには? + +次のコマンドで現在のバッファを削除し、次のバッファを開くことができます: > + + :bnext | bdelete # +< +さらなる情報については以下を参照してください。 > + + :help :bnext + :help :bdelete + :help :buffers +< + *faq-8.11* +8.11. Tabキーで全バッファを巡回するようにマップするには? + +次の2つのマップコマンドを使うと、CTRL-Tabで次のバッファを開き、CTRL-SHIFT-Tab +で前のバッファを開くようにマップできます: > + + :nnoremap <C-Tab> :bnext<CR> + :nnoremap <S-C-Tab> :bprevious<CR> +< +さらなる情報については以下を参照してください。 > + + :help :bnext + :help :previous +< + +============================================================================= + *faq-9* +SECTION 9 - ウィンドウ + + *faq-9.1* +9.1. ウィンドウとバッファの違いは? + +バッファとは編集用にメモリに読み込まれたファイルです。元のファイルはあなたがバ +ッファをファイルに書き込むまでは変更されないままです。ウィンドウとはバッファを +表示する領域です。1つのバッファを複数のウィンドウで表示することもできますし、 +異なるバッファを複数のウィンドウで表示することもできます。 + +さらなる情報については以下を参照してください。 > + + :help usr_08.txt + :help 22.4 + :help windows-intro + :help Q_wi +< + *faq-9.2* +9.2. ウィンドウの幅を広げるには? + +以下のコマンドのどれか1つでウィンドウの幅を広げることができます: > + + :vert resize +N + :vert resize -N + :vert resize N +< +CTRL-W <、CTRL-W >、CTRL-W | コマンドを使うこともできます。 + +さらなる情報については以下を参照してください。 > + + :help vertical-resize + :help CTRL-W_> + :help CTRL-W_< + :help window-resize +< + *faq-9.3* +9.3. ウィンドウをズームイン・ズームアウトするには? + +ウィンドウをズームするには(カレントウィンドウ以外の全ウィンドウを閉じるには) +"CTRL-W o"またはexコマンド":only"を使います。 + +"CTRL-W _"またはexコマンド":resize"を使うと、他のウィンドウを閉じずに可能な限 +りウィンドウの高さを広げることができます。 + +"CTRL-W |"またはexコマンド":vertical resize"を使うと、他のウィンドウを閉じずに +可能な限りウィンドウの幅を広げることができます。 + +"CTRL-W ="コマンドを使うと全ウィンドウの高さと幅を等しくすることができます。 + +以下のオプションをセットすると、上記のコマンドを行うのと同じ結果が得られます。 + +方法1: +'winminheight'オプションを0にする: > + + :set winminheight=0 +< +デフォルトではこのオプションは1に設定されています。 +このオプションはアクティブでない(カレントウィンドウでない)ウィンドウの最小の +高さをコントロールします。'winminheight'が0に設定されていると、アクティブでな +いウィンドウにはステータスラインだけが表示されます。 + +方法2: +'noequalalways'オプションをセットし、'winheight'オプションを大きな値(99999など +)に設定する: > + + :set noequalalways + :set winheight=99999 +< +こうするとアクティブウィンドウが常に最大サイズで開かれます。他のウィンドウは表 +示されますが、ステータスラインのように小さく縮みます。 + +以上の方法のどれにおいても、いったんウィンドウをズームしてしまうと、ウィンドウ +配置を復元することはできません。ウィンドウ配置を復元したいならばZoomWinプラグ +インを使うことができます。このプラグインはVim onlineからダウンロードできます。 + +http://vim.sourceforge.net/scripts/script.php?script_id=508 + +さらなる情報については以下を参照してください。 > + + :help CTRL-W_o + :help window-resize + :help 'winminheight' + :help 'equalalways' + :help 'winheight' + :help 08.3 +< + *faq-9.4* +9.4. 全バッファまたは全ウィンドウ、引数リスト中の全ファイルに対してexコマンド + を実行するには? + +":bufdo"コマンドを使うと全バッファに対してexコマンドを実行することができます。 +":windo"コマンドを使うと全ウィンドウに対してexコマンドを実行することができます +。":argdo"コマンドを使うと引数リスト中の全ファイルに対してexコマンドを実行する +ことができます。 + +さらなる情報については以下を参照してください。 > + + :help :windo + :help :bufdo + :help :argdo + :help 26.3 +< + +============================================================================= + *faq-10* +SECTION 10 - モーション + + *faq-10.1* +10.1. ファイルの先頭や末尾に移動するには? + +'G'でファイルの最終行へ移動でき、'gg'で先頭行へ移動できます。 + +さらなる情報については以下を参照してください。 > + + :help G + :help gg +< + *faq-10.2* +10.2. インサートモードで<Esc>キーを押してノーマルモードに移行すると、カーソル + が1文字左へ移動します(カーソルが行の最初の文字の上にあるときを除いて)。 + この動作を変更し、カーソルがその桁の上に残るようにできますか? + +この動作を変更することはできません。カーソルは「常に」有効な文字の上に置かれま +す(virtualeditモードを有効にしていない限り)。そのため、行の末尾にテキストを +追加していてノーマルモードに戻るときには、カーソルは必ず最後に入力された文字の +上に戻らねばなりません。一貫性のためにカーソルはどこにあっても1文字戻るように +なっています。たとえ行の真ん中であっても。 + +インサートモードでCTRL-Oを使うと、カーソル位置を動かすことなくexコマンドを1つ +実行してインサートモードに戻ることができます。 + +さらなる情報については以下を参照してください。 > + + :help 'virtual' + :help i_CTRL-O +< + *faq-10.3* +10.3. <Page Up>、<Page Down>などのキーを押してスクロールしたときカーソル位置の + 桁を保つように設定することはできますか? + +'startofline'オプションをオフにするとテキストをスクロールしたときカーソル位置 +の桁を保つことができます: > + + :set nostartofline +< +さらなる情報については以下を参照してください。 > + + :help 'startofline' +< + *faq-10.4* +10.4. ファイル中のある行の長さが画面の幅を越えており、折り返されています。ここ + でj, kキーを使うと画面上の次行(物理行)でなくファイルの次行(論理行)に + 移動します。画面上の次行に移動するには? + +gjとgkコマンドを使うと画面上の次行・前行に移動できます。jとkはファイルの次行・ +前行に移動します。'wrap'オプションをオフにすると行の折り返しをやめさせることが +できます: > + + :set nowrap +< +さらなる情報については以下を参照してください。 > + + :help gj + :help gk + :help 'wrap' +< +以下のマッピングを使ってもよいでしょう: > + + :map <Up> gk + :imap <Up> <C-o>gk + :map <Down> gj + :imap <Down> <C-o>gj +< + *faq-10.5* +10.5. Vimにおける文、段落、セクションの定義は? + +文(sentence)は後ろに行末・(1個または2個の)スペース・タブが続く'.'、'!'、'?' +で終わると定義されます。文の終端を構成する文字とスペースの個数は'joinspaces'と +'cpoptions'オプションによって決まります。 + +段落(paragraph)は空行の後から始まります。また、'paragraph'オプション中の文字の +ペアによって指定される段落マクロも段落の始まりとみなされます。 + +セクションは1桁目のフォームフィード(<C-L>)から始まります。また、'sections'オプ +ション中の文字のペアによって指定される段落マクロも段落の始まりとみなされます。 + +さらなる情報については以下を参照してください。 > + + :help sentence + :help 'joinspaces' + :help 'cpoptions' | /^\s*j\> + :help paragraph + :help section + :help word +< + *faq-10.6* +10.6. 文、段落、セクションの先頭と末尾に移動するには? + +以下のコマンドを使うと文、段落、セクションの先頭と末尾に移動することができます +: > + + motion 位置 どこの + ( 先頭 現在の文 + ) 末尾 現在の文 + { 先頭 現在の段落 + } 末尾 現在の段落 + [] 末尾 前のセクション + [[ 先頭 現在のセクション + ][ 末尾 現在のセクション + ]] 先頭 次のセクション +< +これらの移動コマンドの前に番号を指定すると、移動を前方(または後方)に拡大する +ことができます。 + +さらなる情報については以下を参照してください。 > + + :help object-motions +< + *faq-10.7* +10.7. 画面の右端を越えて続いている行があります。右側にスクロールして画面外に出 + ているテキストを表示するには? + +以下のコマンドのどれか1つで画面を左右にスクロールすることができます: > + + zl - 左へスクロール + zh - 右へスクロール + zL - 左へ画面半分の幅スクロール + zH - 右へ画面半分の幅スクロール + zs - カーソル位置が画面左端に来るようにスクロール + ze - カーソル位置が画面右端に来るようにスクロール +< +g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで画面上最後の文字へ、画面 +をスクロールせずに移動することができます。 + +さらなる情報については以下を参照してください。 > + + :help scroll-horizontal +< + *faq-10.8* +10.8. 2個以上のバッファを同時にスクロールさせるには? + +それぞれのバッファに対して"scrollbind"オプションをセットすると、それらを同時に +スクロールできるようになります。 + +さらなる情報については以下を参照してください。 > + + :help 'scrollbind' + :help scroll-binding + :help 'scrollopt' +< + *faq-10.9* +10.9. 矢印キーを使うとモードが変わり、バッファに変な文字が挿入され、カーソルが + 適切に移動しません。どうなっているのですか? + +そうなるのには2つの事が考えられます。遅い回線上でVimを使っているか、キーボード +が生成するキーシーケンスをVimが理解していないかです。 + +もし遅い回線(2400bpsモデムのような)上で使用しているなら、'timeout'や +'ttimeout'オプションを設定してみてください。これらのオプションを'timeoutlen'と +'ttimeoutlen'オプションと組み合わせれば問題が解決するかもしれません。 + +もしあなたのターミナルが送るキーコードをVimが理解しなければ、そのコマンドは正 +しく動きません。この場合、最良の選択肢はそのキーシーケンスをカーソル移動コマ +ンドにマップして、そのマッピングをファイルに保存しておくことです。そしてその +ターミナル上で使うときは常にそのファイルを":source"します。 + +さらなる情報については以下を参照してください。 > + + :help 'timeout' + :help 'ttimeout' + :help 'timeoutlen' + :help 'ttimeoutlen' + :help :map + :help vt100-cursor-keys +< + *faq-10.10* +10.10. カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するようにす + るには? + +カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するようにするには +'whichwrap'オプションに'<'フラグを加えます: > + + :set whichwrap+=< +< +同様に、カーソルが行末にあるとき右矢印キーを押すと次行の行頭に移動するようにす +るには'whichwrap'オプションに'>'フラグを加えます: > + + :set whichwrap+=> +< +これらはノーマルモードとヴィジュアルモードでのみ機能します。インサートモード +と上書きモードでも使えるようにするには、それぞれ'['と']'フラグを加えます。 + +さらなる情報については以下を参照してください。 > + + :help 'whichwrap' + :help 05.7 +< + *faq-10.11* +10.11. 常にインサートモードに留まるようにするには?(モードレスな編集をするに + は?) + +常にインサートモードに留まるようにするには'insertmode'オプションを使います: +> + + :set insertmode +< +このオプションをセットするとVimをモードレスエディタとして使えるようになります +。<Esc>キーを押してもノーマルモードに移行しません。ノーマルモードコマンドを1つ +だけ実行するにはCTRL-Oを押してからノーマルモードコマンドをタイプします。1つ以 +上のノーマルモードコマンドを実行するにはCTRL-Lに続けてそのコマンドをタイプしま +す。インサートモードに戻るには<Esc>キーを押します。このオプションを無効にする +には'insertmode'オプションをオフにします: > + + :set noinsertmode +< +"evim"コマンドまたは"vim -y"を使ってもVimをモードレスエディタとして使用できま +す。 + +さらなる情報については以下を参照してください。 > + + :help 'insertmode' + :help i_CTRL-O + :help i_CTRL-L + :help evim + :help evim-keys +< + *faq-10.12* +10.12. テキストをスクロールするとき、前後の行を表示するには? + +'scrolloff'オプションをセットすると画面に表示されるカーソルの前後の行の最小数 +を設定できます。 > + + :set scrolloff=10 +< +さらなる情報については以下を参照してください。 > + + :help 'scrolloff' + :help 'sidescrolloff' +< + *faq-10.13* +10.13. 以前のカーソル位置に戻るには? + +''または``コマンドを使うと最後のジャンプの前にいた位置へカーソルを戻すことがで +きます。CTRL-Oでも以前のカーソル位置に戻ることができ、CTRL-Iでジャンプリスト中 +のより新しい位置へ移動できます。 + +さらなる情報については以下を参照してください。 > + + :help 03.10 + :help mark-motions + :help jump-motions +< + +============================================================================= + *faq-11* +SECTION 11 - テキストを検索する + + *faq-11.1* +11.1. テキストを検索した後、マッチしたテキストが全て強調されます。この強調を一 + 時的/永続的に無効にするには? + +最後に検索したパターンにマッチする文字列を強調するかは'hlsearch'オプションで決 +まります。デフォルトではこのオプションは無効になっています。このオプションがシ +ステムレベルのvimrcファイルでセットされているならば、次のコマンドを使ってこの +強調を無効にできます: > + + :set nohlsearch +< +一時的にこの強調を消すには次のようにします: > + + :nohlsearch +< +また、カレントファイルに存在しないパターンを検索することによってもこの強調をク +リアすることができます(例えば'asdf'を検索する)。 + +さらなる情報については以下を参照してください。 > + + :help 'hlsearch' + :help :nohlsearch +< + *faq-11.2* +11.2. 検索パターンにキャリッジリターン文字を含めるには? + +'\r'を使うか<CTRL-V><CTRL-M>を使えばパターンにキャリッジリターンを含めることが +できます。Vimスクリプト中では'\r'を使う方がよいでしょう。 + +さらなる情報については以下を参照してください。 > + + :help sub-replace-special +< + *faq-11.3* +11.3. 文字^Mを検索するには? + +検索コマンド中にCTRL-Vを押して次にCTRL-Mを押せば^M文字を挿入することができま +す。 +> + + /^V^M +< +"\r"文字を使うこともできます。Vimスクリプト中では"\r"を使う方がよいでしょう。 + +さらなる情報については以下を参照してください。 > + + :help c_CTRL-V + :help using_CTRL-V + :help /\r +< + *faq-11.4* +11.4. '~R', '~S'などと表示される文字を検索・置換するには? + +'ga'で特殊文字のアスキーコードを表示することができます。例えばアスキーコードが +142だったらなら、次のコマンドでその特殊文字を検索することができます: > + + /^V142 +< +ここで^VはCTRL-Vを押して挿入します。 + +さらなる情報については以下を参照してください。 > + + :help ga + :help using_CTRL_V + :help 24.8 +< + *faq-11.5* +11.5. ファイル中の印字不能文字を全て強調するには? + +次のコマンドと検索パターンを使えばファイル中の印字不能文字を全て強調することが +できます: > + + :set hlsearch + /\(\p\|$\)\@!. +< +さらなる情報については以下を参照してください。 > + + :help /\p + :help /bar + :help /$ + :help /\( + :help /\@! + :help 'hlsearch' +< + *faq-11.6* +11.6. 単語に完全に一致するテキストを検索するには? + +アトム\<と\>を使えば単語に完全に一致するテキストを検索できます。例えば: > + + /\<myword\> +< +アトム\<は単語の先頭にマッチし、アトム\>は単語の末尾にマッチします。 + +さらなる情報については以下を参照してください。 > + + :help /\< + :help /\> +< + *faq-11.7* +11.7. カーソル下の単語を検索するには? + +*キーを押せばカーソル下の単語を前方に検索することができます。後方に検索するに +は#キーを押します。これらのコマンドを使うとキーワードに完全に一致するものだけ +が検索されます。 + +さらなる情報については以下を参照してください。 > + + :help star + :help # + :help g* + :help g# + :help 03.8 + :help search-commands +< + *faq-11.8* +11.8. 大文字・小文字を区別せず検索するには? + +常に大文字・小文字を区別しないようにするには'ignorecase'をセットします: > + + :set ignorecase +< +あるパターンを検索するときだけ区別しないようにするには、特別なディレクティブ +\cを使います: > + + /\c<pattern> +< +さらなる情報については以下を参照してください。 > + + :help 'ignorecase' + :help /ignorecase + :help /\c +< + *faq-11.9* +11.9. 2回続けて現れる単語を検索するには? + +次の検索コマンドのどれかを使えば、2回続けて現れる単語を探すことができます: > + + /\(\<\w\+\)\_s\+\1\> + /\(\<\k\+\)\_s\+\1\> +< +主な違いは'\w'と'\k'の使用です。後者は'iskeyword'に基づき、アクセントつきの文 +字や他の言語固有の文字を含むこともできます。 + +さらなる情報については以下を参照してください。 > + + :help /\1 + :help /\( + :help /\) + :help /\< + :help /\> + :help /\w + :help /\k + :help /\+ + :help /\_x + :help 'iskeyword' +< + *faq-11.10* +11.10. ある単語がバッファ中に何回現れるか数えるには? + +以下の一連のコマンドを行うと、ある単語がバッファ中に何回現れるかを数えることが +できます: > + + :let cnt=0 + :g/\<your_word\>/let cnt=cnt+1 + :echo cnt +< +上のコマンドは単語を含む行の数を数えるだけです。以下のコマンドを使うこともでき +ます: > + + :%s/\<word\>/&/g +< +訳註: :%s/\<word\>//ng というようにnフラグをつけると、実際には置換を行わず、何 + 箇所置換されるかを知ることができます。 + +ファイル中のアルファベットだけからなる単語を数えるにはこうします。 > + + :%s/\a\+/&/g +< +非空白文字だけからなる単語を数えるにはこうします。 > + + :%s/\S\+/&/g +< +さらなる情報については以下を参照してください。 > + + :help count-items + :help word-count + :help v_g_CTRL-G + :help 12.5 +< + *faq-11.11* +11.11. 検索時にカーソルをマッチした単語の末尾に移動させるには? + +検索コマンドにオフセット'e'を指定すると、カーソルをマッチした単語の末尾へ移動 +させることができます。例 > + + /mypattern/e +< +さらなる情報については以下を参照してください。 > + + :help search-offset + :help / +< + *faq-11.12* +11.12. 空行を検索するには? + +次のコマンドを使うと空行を検索することができます: > + + /^$ +< + または > + + /^\s*$ +< +さらなる情報については以下を参照してください。 > + + :help /^ + :help /$ + :help /\s + :help /* + :help search-commands +< + *faq-11.13* +11.13. 1つの文字だけを含む行を検索するには? + +1つの文字だけを含む行を検索するにはこうします: > + + /^\s*\a\s*$ +< +さらなる情報については以下を参照してください。 > + + :help /^ + :help /\a + :help /\s + :help /* + :help /$ +< + *faq-11.14* +11.14. 複数のファイルから文字列を検索し、置換するには? + +":argdo", ":bufdo", ":windo"コマンドを使うと複数のファイルに対してexコマンドを +実行することができます。例: > + + :argdo %s/foo/bar/g +< +さらなる情報については以下を参照してください。 > + + :help :argdo + :help :bufdo + :help :windo +< + *faq-11.15* +11.15. マップ中で置換コマンド":s"を使っています。検索が失敗したときマップが途 + 切れてしまいます。置換が失敗したときにもマップの次のコマンドを続けてほ + しいのですが、どうすればできますか? + +置換コマンドに対して'e'フラグを指定すると、パターンが見つからなかったときもマッ +プの他のコマンドを続行します。 + +さらなる情報については以下を参照してください。 > + + :help :s_flags +< + *faq-11.16* +11.16. 行からある文字がn回目に現れる箇所を検索するには? + +行中からある文字がn回目に現れる箇所を検索するには、'f'コマンドにプリフィックス +をつけます。例えば、文字@が5回目に現れる火おを検索するには、5f@とします。ただ +しカーソルが行頭にあるものとします。また、1桁目の文字が検索する文字ではないも +のとします。 + +さらなる情報については以下を参照してください。 > + + :help f + :help F + :help t + :help T + :help ; + :help , +< + *faq-11.17* +11.17. タブ(やその他の文字)を改行文字で置換するには? + +タブ(やその他の文字)を改行文字で置換するには、次のコマンドを使います: > + + :s/\t/\r/ +< +上のコマンドで\rでなく\nを使うと改行文字には置換されないので注意してください。 + +さらなる情報については以下を参照してください。 > + + :help sub-replace-special + :help NL-used-for-Nul + :help CR-used-for-NL +< + *faq-11.18* +11.18. アスキーコードで検索する文字を指定するには? + +"/"コマンド中で、CTRL-Vに続いて10進、16進、8進の値を入力すると、アス +キーコードでその値を持つ文字を検索することができます。ある文字のアスキーコード +を知るには":ascii"や"ga"コマンドが使えます。 +For more information, read > + + :help i_CTRL-V_digit + :help :ascii + :help ga +< + *faq-11.19* +11.19. 長い行を見つけるには? + +検索コマンドで正規表現を使えば長い行、または指定した数以上の文字を含む行を検索 +することができます。例えば、80文字以上を含む行を検索するには、このようにします +: > + + /^.\{80}.*$ + /^.*\%80c.*$ +< +さらなる情報については以下を参照してください。 > + + :help /\{ + :help /\%c +< + *faq-11.20* +11.20. カレントバッファ内の指定したパターンを含む行を全て表示するには? + +次のコマンドを使うとカレントバッファ内の指定したパターンを含む行を全て表示する +ことができます: > + + :g/<pattern>/p +< +例えば、次のコマンドはカレントバッファ内の"vim"を含む行を全て表示します: > + + :g/vim/p +< +行番号もいっしょに表示したいならば次のコマンドが使えます: > + + :g/<pattern>/# +< +さらなる情報については以下を参照してください。 > + + :help :global + :help :print + :help :number +< + *faq-11.21* +11.21. 複数行にわたる文字列を検索するには? + +正規表現のアトム\_xを使えば、複数行にわたる文字列を検索することができます。例 +えば、文字列"Hello World"を検索するには次のコマンドを使います: > + + /Hello\_sWorld +< +これは、単語"Hello"とそれに続く改行文字、そして次行の行頭の単語"World"にマッチ +します。またこれは"Hello"、スペース、"World"にもマッチします。行頭と行末の空白 +を含めて文字列"Hello World"を検索するには、次のコマンドを使います: > + + /Hello\_s\+World +< +さらなる情報については以下を参照してください。 > + + :help 27.8 + :help pattern-atoms + :help /\_ + :help pattern-searches +< + *faq-11.22* +11.22. バッファの指定した範囲内から検索するには? + +正規表現のアトム\%>lと\%<lを使えば、指定した範囲内からパターンを検索することが +できます。 + +例えば、10行目と20行目の間から単語'white'を検索するには次のコマンドを使います: +> + + /white\%>10l\%<20l +< +さらなる情報については以下を参照してください。 > + + :help /\%l +< + +============================================================================= + *faq-12* +SECTION 12 - テキストを変更する + + *faq-12.1* +12.1. 行末の空白文字(スペースとタブ)を全て削除するには? + +":substitute"コマンドを使ってファイル中から行末の空白文字を全て削除することが +できます: > + + :%s/\s\+$// +< +さらなる情報については以下を参照してください。 > + + :help :% + :help :s + :help /\s + :help /\+ + :help /$ +< + *faq-12.2* +12.2. 連続する空白文字を1個のスペースに置換するには? + +次のコマンドで連続する空白文字を1個のスペースに置換することができます: > + + :%s/ \{2,}/ /g +< +さらなる情報については以下を参照してください。 > + + :help :% + :help :s + :help /\{ + :help :s_flags +< + *faq-12.3* +12.3. 連続する空行を1行だけに圧縮するには? + +次のコマンドで連続する空行を1行だけに圧縮することができます: > + + :v/./.,/./-1join +< +このコマンドの説明は以下の通りです: > + + :v/./ 後に続くコマンドを、1文字も含まない行(空行)を除く全ての行 + に対して実行する。 + ., 現在行を範囲の開始位置に指定する。 + /./ 1文字を含む行を範囲の終端に指定する。 + -1 終端を1行前に調整する。 + j 範囲内の行を連結する。 +< +空行がファイルの末尾にある場合、これはエラーメッセージを出します。それを避ける +には、一時的な行をファイルの末尾に追加し、このコマンドを実行してから一時的な行 +を削除します。 + +さらなる情報については以下を参照してください。 > + + :help :v + :help :join + :help cmdline-ranges + :help collapse +< + *faq-12.4* +12.4. ファイル中の空行を全て削除するには?空白文字だけを含む行を全て削除するに + は? + +空行を全て削除するには、次のコマンドを使います: > + + :g/^$/d +< +空白文字(スペースとタブ)だけからなる行を削除するには、次のコマンドを使います: +> + + :g/^\s\+$/d +< +空行、または空白だけからなる行を全て削除するには、次のコマンドを使います: > + + :g/^\s*$/d +< + *faq-12.5* +12.5. カーソル下の単語をコピー/ヤンクするには? + +"yiw"(yank inner word without whitespace)または"yaw" (yank a word with +whitespace)でカーソル下の単語をコピー/ヤンクできます。 + +さらなる情報については以下を参照してください。 > + + :help 04.6 + :help 04.8 + :help iw + :help yank + :help text-objects + :help objects +< + *faq-12.6* +12.6. 行全体ではなく、行内のある位置からある位置までをヤンクするには? + +ヤンクオペレータ(y)に移動コマンドを指定すれば、行内のある位置から別の位置まで +をヤンクすることができます。例えば、現在のカーソル位置から次のxという文字まで +をヤンクするにはyfx, Fx, tx, Txのどれかを使います。n桁目までをヤンクするには +n|を使います。次に'word'が現れる場所までをヤンクするには/wordとします。別の行 +のn桁目までをヤンクするには、まず'ma'で位置をマークし、ヤンク開始位置まで移動 +してt`a(バッククォートであることに注意)でマークまでをヤンクします。 + +さらなる情報については以下を参照してください。 > + + :help yank + :help motion.txt + :help 4.6 +< + *faq-12.7* +12.7. 現在のレジスタの中身に追加ヤンクするには? + +レジスタを指定するときに大文字を使うと現在のレジスタに追加ヤンクされます。例え +ば、レジスタ"a"になにかテキストが入っているとします。新しいテキストをここに追 +加するには、レジスタ名"A"を使います。レジスタ名に小文字を使うと、レジスタの中 +身は新しいテキストで上書きされてしまいます。 + +さらなる情報については以下を参照してください。 > + + :help quote + :help quote_alpha + :help 10.1 +< + *faq-12.8* +12.8. 複数行にわたる文全体をヤンクするには? + +複数行にわたる文全体をヤンクするには、ヤンクオペレータの後に移動コマンドを続け +ます。例: > + + y) +< +文の内側にいるときは'yi)'で文をヤンクすることができます。 + +さらなる情報については以下を参照してください。 > + + :help yank + :help {motion} + :help object-motions + :help 4.6 +< + *faq-12.9* +12.9. あるパターンを含む行全てをヤンクするには? + +":global"を使えばあるパターンを含む行全てをヤンクし、その後そのレジスタの中身 +をバッファにペーストすることができます: > + + :let @a='' + :g/mypattern/y A +< +最初のコマンドはレジスタ"a"の中身をクリアします。2番目のコマンドは"mypattern" +を含む行全てをレジスタ"a"にコピーします。大文字"A"を使ってマッチした行を追加し +ていることに注意してください。そして"apコマンドでレジスタ"a"の中身をバッファに +ペーストすることができます。 + +さらなる情報については以下を参照してください。 > + + :help :g + :help :y + :help let-register + :help quote_alpha + :help put + :help registers + :help :registers +< + *faq-12.10* +12.10. あるパターンを含まない行全てを削除するには? + +":v"コマンドを使えば、あるパターンを含まない行全てを削除することができます: > + + :v/pattern/d +< +または > + + :g!/pattern/d +< +さらなる情報については以下を参照してください。 > + + :help :v + :help :g +< + *faq-12.11* +12.11. "pattern"を含む全ての行の前に行を追加するには? + +以下のコマンドを使うと、"pattern"を含む行全ての前に行を追加することができま +す: > + + :g/pattern/normal Oi<line of text goes here> +< +または追加する行をYでヤンクし、次のコマンドでそれを追加することができます: > + + :g/pattern/put! +< +さらなる情報については以下を参照してください。 > + + :help :g + :help :put + :help insert + :help 0 +< + *faq-12.12* +12.12. 前の行が特定のパターンを含んでいる行に対して操作を行うには? + +":global"を使えば、前の行が特定のパターンを含んでいる行に対して操作を行うこと +ができます: > + + :g/<pattern>/+{cmd} +< +さらなる情報については以下を参照してください。 > + + :help :g + :help :range +< + *faq-12.13* +12.13. あるパターンを含む行全てに対してコマンドを実行するには? + +":global"(:g)コマンドを使えば、あるパターンを含む行全てに対してコマンドを実行 +することができます。 > + + :g/my pattern/d +< +Exコマンドでないコマンドを使いたければ、":normal"を使うことができます: > + + :g/my pattern/normal {command} +< +ノーマルモードコマンドの再帰マッピングを避けたければ代わりに":normal!"を使いま +す("!"に注意)。 + +さらなる情報については以下を参照してください。 > + + :help :global + :help :v + :help :normal +< + *faq-12.14* +12.14. カーソル位置の1文字上の文字をカーソル位置にコピーするには? + +インサートモードで<Ctrl-Y>とするとカーソル位置の1文字上の文字をコピーすること +ができます。同じように<Ctrl-E>で1文字下の文字をコピーすることができます。 + +さらなる情報については以下を参照してください。 > + + :help i_CTRL-Y + :help i_CTRL-E +< + *faq-12.15* +12.15. インサートモードに入らずに現在行の前/後に空行を挿入するには? + +":put"を使えば空行を挿入できます。例えば、次を実行してみてください: > + + :put ='' + :put! ='' +< +さらなる情報については以下を参照してください。 > + + :help :put +< + *faq-12.16* +12.16. カレントファイルの名前をカレントバッファに挿入するには? + +カレントファイルの名前をカレントバッファに挿入するにはいくつかの方法がありま +す。インサートモードでは<C-R>%または<C-R>=expand("%")でできます。ノーマルモー +ドでは":put =@%"でできます。 + +さらなる情報については以下を参照してください。 > + + :help i_CTRL-R + :help expand() + :help !! +< + *faq-12.17* +12.17. レジスタの中身をカレントバッファに挿入するには? + +インサートモードでは<C-R><register>で<register>の中身を挿入することができま +す。例えば、<C-R>aでレジスタ"a"の中身をカレントバッファに挿入できます。 + +ノーマルモードでは":put <register>"で<register>の中身を挿入できます。例えば、 +":put d"でレジスタ"d"の中身をカレントバッファに挿入できます。 + +さらなる情報については以下を参照してください。 > + + :help i_CTRL-R + :help :put +< + *faq-12.18* +12.18. 行末を越えてカーソルを移動し、テキストを挿入するには? + +オプション"virtualedit"をセットすれば行末を越えてカーソルを移動し、行末の先に +文字を追加することができます。virtualモードを開始するにはこうします。 > + + :set virtualedit=all +< +さらなる情報については以下を参照してください。 > + + :help 'virtualedit' +< + *faq-12.19* +12.19. カーソル下の単語(例えばjunk)を"foojunkbar"に置き換えるには? + +いくつかの方法があります。その行の中でその単語が現れる最初の箇所なら、こうしま +す: > + + :exe "s/".expand("<cword>")."/foo&bar/" +< +よりマッチを限定させるには、このようなより複雑な置換コマンドを使います: > + + :exe 's/\<'.expand("<cword>").'\%>'.(col(".")-1).'c\>/foo&bar/' +< +またはciwfoo<C-R>"bar<Esc>としてもできます。 + +さらなる情報については以下を参照してください。 > + + :help :substitute + :help expand() + :help col() + :help /\%c +< + *faq-12.20* +12.20. ディレクトリ中の全てのファイルに対して特定のテキストを置換するには? + +"argdo"を使えば、引数として指定されたファイル全てに対して置換コマンドを実行す +ることができます: > + + :args * + :argdo %s/<your_text>/<replacement_text>/ge | update +< +さらなる情報については以下を参照してください。 > + + :help :args_f + :help :argdo + :help :s_flags +< + *faq-12.21* +12.21. ファイル中に数字が書かれています。これを増加・減少させるには? + +CTRL-Aで数字を増加、CTRL-Xで減少させることができます。また、カウントを指定すれ +ば増加・減少させる数を指定することができます。この機能は10進、8進、16進の数字 +に対して適用することができます。 + +さらなる情報については以下を参照してください。 > + + :help CTRL-A + :help CTRL-X + :help 'nrformats' +< + + *faq-12.22* +12.22. ":substitute"で最後に検索したパターンを再利用するには? + +":substitute"で検索パターンを指定しなければ、最後に検索したパターンを再利用す +ることができます: > + + :s/pattern/newtext/ + :s//sometext/ +< +2回目の":s"では、検索パターンが指定されていないので、最初の":s"のパターンが使 +われます。 + +検索パターンは変えたいが、置換語を同じものにしたい場合は、チルド文字を使いま +す: > + + :s/newpattern/~/ +< +さらなる情報については以下を参照してください。 > + + :help :s + :help :& + :help :~ + :help & + :help sub-replace-special +< + *faq-12.23* +12.23. ":substitute"を使って大文字・小文字を入れかえるには? + +":substitute"の置換文字列に特殊文字を使えば、マッチした文字列の大文字・小文字 +を入れかえることができます。例えば、文字列"MyString"を全て大文字にするには、以 +下のコマンドを使うことができます: > + + :%s/MyString/\U&/g +< +小文字にするには、次のコマンドを使います: > + + :%s/MyString/\L&/g +< +現在行の全ての単語の最初の文字を大文字にするには、次のコマンドを使います: > + + :s/\<\(.\)\(\k*\)\>/\u\1\L\2/g +< +さらなる情報については以下を参照してください。 > + + :help sub-replace-special + :help :substitute + :help \U + :help \L + :help \u +< + *faq-12.24* +12.24. キーボード上に無い文字を入力するには? + +ダイグラフを使えば、キーボード上に無い文字を入力することができます。現在定義さ +れているダイグラフを全て表示するには":digraphs"を使います。":digraphs"を使えば +リストに新しいダイグラフを追加できます。 + +さらなる情報については以下を参照してください。 > + + :help digraphs + :help 'digraphs' + :help 24.9 +< + *faq-12.25* +12.25. ダイグラフのどれか、または全てを削除するコマンドはありますか? + +ありません。ダイグラフテーブルはコンパイル時に定義されます。できるのは新しいダ +イグラフを追加することだけです。ダイグラフを削除するコマンドを追加するという事 +はTODOリストにはありません。 + *faq-12.26* +12.26. インサートモードでバックスペースキーを押すと、今回のインサートモードで + 入力した文字が消されるだけです。バックスペースキーで前回のインサートモ + ードで入力した文字を消すには? + +'backspace'をセットすればインサートモードで前回入力した文字を削除することがで +きます: > + + :set backspace=indent,eol,start +< +さらなる情報については以下を参照してください。 > + + :help 'backspace' +< + *faq-12.27* +12.27. 72文字より長くて"+"で終わり、次行に折り返されている行があります。このよ + うな行をすばやく連結させるには? + +":global"を使えばそのような行を検索・連結できます: > + + :g/+$/j +< +しかしこれは2行ごとに連結するだけです。連続する"+"で終わる行を連結する、より複 +雑な2つの例が以下の通りです: > + + :g/*$/,/\(^\|[^+]\)$/j + :g/+$/mark a | .,/\(^\|[^+]\)$/s/+$// | 'a,.j +< +訳註: 1番目の例は :g/+$/,/\(^\|[^+]\)$/j の間違いだと思う。 + +さらなる情報については以下を参照してください。 > + + :help :g + :help :j + :help :mark +< + *faq-12.28* +12.28. 文字単位でヤンクされたテキストを新しい行にペーストするには? + +":put"を使えば文字単位でヤンクされたテキストを新しい行にペーストできます: > + + :put =@" +< +さらなる情報については以下を参照してください。 > + + :help :put + :help quote_= +< + *faq-12.29* +12.29. 単語・文字・テキストのブロックの大文字小文字を入れかえるには? + +"~"を使えば文字の大文字・小文字を入れかえることができます。 + +カーソル下の単語を大文字にするには"gUiw"または"viwU"、小文字にするには"guiw"ま +たは"viwu"とすればできます。 + +カーソル下の単語の大文字・小文字を入れかえるには"viw~"または"g~iw"とします。 + +"gUgU"とすれば現在行を大文字にでき、"gugu"とすれば現在行を小文字にできます。 + +"g~g~"とすれば現在行の大文字・小文字を入れかえることができます。"g~{motion}"ま +たは"{Visual}~"とすればテキストのブロックの大文字・小文字を入れかえることがで +きます。 + +さらなる情報については以下を参照してください。 > + + :help case +< + *faq-12.30* +12.30. キーボード上にないアスキー文字を入力するには? + +キーボード上にないアスキー文字を入力するには、CTRL-Vを押してからそのアスキーコ +ードを入力します。特別なアスキー文字を入力するのにダイグラフを使うこともできま +す。 + +さらなる情報については以下を参照してください。 > + + :help i_CTRL-V_digit + :help digraphs + :help 45.5 +< + *faq-12.31* +12.31. ファイル中の印字不能文字を置換するには? + +印字不能文字を置換するには、まずその文字のアスキーコードを知らなければなりま +せん。exコマンド":ascii"またはノーマルモードコマンド"ga"を使ってカーソル下の +文字のアスキーコードを知ることができます。 + +CTRL-Vに続けて10進の数字1-255(最初に0をつけてばならない)またはxと16進の数字 +00-FF、または8進の数字0-0377(最初に0をつける)またはuと16進の数字0-FFFFまたは +Uと16進の数字0-7FFFFFFFを入力すれば、印字不能文字を入力することができます。 + +別の方法としては、":digraphs"を使って、全文字に対するダイグラフと共にそれら +の10進値プラスアルファを表示することです。CTRL-Kに続けて英数字を2つ(ダイグラフ +)を入力すれば印字不能文字を入力することができます。 + +さらなる情報については以下を参照してください。 > + + :help :ascii + :help i_CTRL-V + :help i_CTRL-V_digit + :help :digraphs +< + *faq-12.32* +12.32. バッファから重複した行を削除するには? + +次のユーザー定義コマンドを使えばバッファから重複した行を全て削除することができ +ます: > + + :command -range=% Uniq <line1>,<line2>g/^\%<<line2>l\(.*\)\n\1$/d +< +上のコマンドを.vimrcに追加し、":Uniq"を実行すると重複した行が削除されます。 + + *faq-12.33* +12.33. ファイル中の全ての行の前に行番号をつけるには? + +行番号をつけるにはいくつかの方法があります。以下はその例です: > + + :%s/^/\=line('.'). ' ' + :%s/^/\=strpart(line(".")." ", 0, 5) + :g/^/exec "s/^/".strpart(line(".")." ", 0, 4) +< +さらなる情報については以下を参照してください。 > + + :help sub-replace-special + :help line() + :help expr6 + :help strpart() + :help :execute + :help :global +< + *faq-12.34* +12.34. 2つの文字・単語・行を入れ換えるには? + +"xp"で2つの文字を入れ換えることができます。'x'でカーソル下の文字を削除し、'p' +で削除された文字をカーソル下の文字の後ろにペーストします。その結果、2つの文字 +が入れ換わります。 + +2つの単語を入れ換えるには"deep"とします(最初の単語の前の空白にカーソルをおいて +実行します)。 + +2つの行を入れ換えるには"ddp"とします。'dd'で現在行を削除し、'p'で現在行の後ろ +に削除された行をペーストします。その結果、2つの行が入れ換わります。 + +以上の操作はどれも無名レジスタ"の中身を変更します。 + +":m +"とすると無名レジスタの中身を変更することなく2つの行を入れ換えることがで +きます。 + +さらなる情報については以下を参照してください。 > + + :help x + :help p + :help dd + :help d + :help e + :help linewise-register + :help quotequote + :help :move +< + +============================================================================= +SECTION 13 - インサートモードでの補完 + + *faq-13.1* +13.1. インサートモードで単語や行を補完するには? + +インサートモードでCTRL-PまたはCTRL-Nを使うと単語を補完することができます。 +CTRL-Nは次の候補を前方から検索します。 +CTRL-Pは次の候補を後方から検索します。 + +インサートモードでCTRL-X CTRL-Lを使うと現在行のカーソル以前の文字列で始まる行 +を補完します。次のマッチする行を取得するにはCTRL-PまたはCTRL-Nを使います。イン +サートモードで単語を補完する方法・キーは他にもたくさんあります。 + +Vimは以下の要素の補完をサポートしています: > + + CTRL-X CTRL-F ファイル名 + CTRL-X CTRL-L 行全体 + CTRL-X CTRL-D マクロ定義 (インクルードファイル中のものも) + CTRL-X CTRL-I カレントファイルとインクルードファイル + CTRL-X CTRL-K 辞書中の単語 + CTRL-X CTRL-T シソーラス中の単語 + CTRL-X CTRL-] タグ + CTRL-X CTRL-V Vimコマンドライン +< +さらなる情報については以下を参照してください > + + :help 24.3 + :help ins-completion +< + *faq-13.2* +13.2. インサートモードでファイル名を補完するには? + +インサートモードでCTRL-X CTRL-Fを使うとカレント行のカーソルの前の文字列で始ま +るファイル名を補完することができます。 + +さらなる情報については以下を参照してください > + + :help compl-filename +< + *faq-13.3* +13.3. インサートモードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 + 今補完した単語の後に現れる単語を補完するには? + +CTRL-X CTRL-NとCTRL-X CTRL-Pを使うと今補完した単語の後に続く単語を補完すること +ができます。 + +さらなる情報については以下を参照してください > + + :help i_CTRL-X_CTRL-P + :help i_CTRL-X_CTRL-N + :help ins-completion +< + +============================================================================= + *faq-14* +SECTION 14 - テキストの整形 + +14.1. 折り返された行の末尾に改行を挿入するには? + +'gq'コマンドを使うと段落を整形することができます。これは現在の'textwidth'の設 +定にしたがってテキストを整形します。 + +オペレータgqは移動コマンドと組み合わせて、テキストの範囲に対して実行できます。 +例: > + + gqgq - 現在行を整形する + gqap - 現在の段落を整形する + gq3j - 現在行と下3行を整形する +< +さらなる情報については以下を参照してください > + + :help gq + :help formatting + :help usr_25.txt + :help motion.txt +< + *faq-14.2* +14.2. 1行がn文字以下になるように長い行を整形するには? + +まず'textwidth'を望みの値に設定します: > + + set textwidth=70 +< +そして、'textwidth'で設定された長さで行を折り返すにはこうします > + + :g/./normal gqq +< +さらなる情報については以下を参照してください > + + :help gq +< + *faq-14.3* +14.3. 短い行を連結して段落を形成するには? + +まず、'textwidth'を大きな値に設定します: > + + :set textwidth=99999 +< +続いて、以下のコマンドで短い行を連結して段落を形成します: > + + 1GgqG +< +このコマンドはファイル全体に作用します。指定した範囲内の全段落に対して整形を行 +うにはこうします: > + + :'a,'bg/\S/normal gq} +< +さらなる情報については以下を参照してください > + + :help gq + :help G + :help gqq +< + *faq-14.4* +14.4. 箇条書きや番号つきリストを整形するには? + +'formatoptions'によって箇条書きや番号つきリストを整形するように設定することが +できます。例えば、以下のフォーマットのリストを整形することができます: + + - this is a test. this is a test. this is a test. this is a test. + this is a test. + +これがこのような形式になります。 + + - this is a test. this is a test. this is a test. this is a test. + this is a test. + +'formatoptions'に'n'フラグをつけると、テキストの桁をそろえることができます。 > + + :set fo+=n +< +このオプションを設定してテキストを整形すると、Vimは番号つきリストを認識しま +す。このオプションを機能させるためには、'autoindent'をセットしなければなりませ +ん。 + +さらなる情報については以下を参照してください > + + :help 'formatoptions' + :help fo-table +< + *faq-14.5* +14.5. インサートモードで行をインデントするには? + +インサートモードでCTRL-Tを押すと現在行の行頭にshiftwidth分のインデントを挿入す +ることができます。インサートモードでCTRL-Dを押すと現在行の行頭のshiftwidth分の +インデントを削除することができます。また、CTRL-O >>とCTRL-O <<でもインサートモ +ード中に現在行をインデントすることができます。 + +さらなる情報については以下を参照してください > + + :help i_CTRL-T + :help i_CTRL-D + :help i_0_CTRL-D + :help i_CTRL-O + :help >> + :help << +< + *faq-14.6* +14.6. ファイル全体を整形・インデントするには? + +gg=Gでファイル全体を整形・インデントすることができます。ここで、 > + + gg - ファイルの先頭に移動 + = - インデントを適用 + G - ファイルの末尾まで +< +という意味になります。 +さらなる情報については以下を参照してください > + + :help gg + :help = + :help G + :help 'formatprg' + :help C-indenting +< + *faq-14.7* +14.7. 現在のファイルのインデントを増やす/減らすには? + +'>>'と'<<'で現在行のインデントを増やしたり減らすことができます。 + +さらなる情報については以下を参照してください > + + :help shift-left-right + :help >> + :help << + :help 'shiftwidth' +< + *faq-14.8* +14.8. ブロックまたは行のグループをインデントするには? + +ビジュアルモードで行を選択して>または<を押すと選択した行をインデント・アンイ +ンデントすることができます。次のexコマンドを使っても行をインデントすることがで +きます > + + :10,20> +< +さらなる情報については以下を参照してください > + + :help shift-left-right + :help v_> + :help v_< + :help :< + :help :> +< + *faq-14.9* +14.9. >または<キーで行をインデントすると、'tabstop'で設定した値でなく、標準的 + なタブストップ値の8が使われます。なぜですか? + +オペレータ">"でインデントしたとき挿入されるスペースの数は'shiftwidth'オプショ +ンで決まります。'tabstop'の設定はインデントには適用されません。インデントで挿 +入されるスペースの数を変更するには、こうします: > + + :set shiftwidth=4 +< +さらなる情報については以下を参照してください > + + :help 'shiftwidth' + :help >> + :help 'softtabstop' +< + *faq-14.10* +14.10. オートインデントを無効にするには? + +デフォルトではオートインデントは無効になっています。設定ファイル(.vimrc, +.gvimrc)のインデントに関する設定を確認してください。":filetype indent on"が行 +われていないことを確かめてください。もし行われていたなら、これを削除してくださ +い。また、好みに応じて'autoindent', 'smartindent', 'cindent', 'indentexpr'の値 +を確かめ、これらをオフにしてもよいでしょう。 + +さらなる情報については以下を参照してください > + + :help :filetype-indent-off + :help 'autoindent' + :help 'smartindent' + :help 'cindent' + :help 'indentexpr' +< + *faq-14.11* +14.11. メールを編集するときは自動的に'textwidth'オプションをある値にするように + するには? + +'FileType'オートコマンドを使えば'textwidth'を設定することができます: > + + autocmd FileType mail set tw=<your_value> +< +さらなる情報については以下を参照してください > + + :help :autocmd + :help FileType + :help usr_43.txt +< + *faq-14.12* +14.12. 自動的に改行を挿入させることはできますか? + +できます。'textwidth'を好きな行の長さに設定します。すると新しい行を挿入すると +きに自動的に改行が挿入されます。例: > + + :set textwidth=75 +< +さらなる情報については以下を参照してください > + + :help textwidth + :help ins-textwidth + :help 'formatoptions' + :help fo-table + :help formatting +< + *faq-14.13* +14.13. ファイル中に^Mという記号がたくさん表示されます。'fileformat'を'dos'にし + たり'unix'にしたり'mac'にしたりしてみましたが、改善できません。これらの + 記号を表示させなくするには? + +ファイルを読み込むとき、そのファイルのフォーマットは以下のようにして決定されま +す: + +- 全ての行が改行文字(<NL>)で終わっていればファイルフォーマットは'unix'です。 +- 全ての行がキャリッジリターン文字(<CR>)に続く改行文字(<NL>)で終わっていれば + ファイルフォーマットは'dos'です。 +- 全ての行がキャリッジリターン文字(<CR>)で終わっていればファイルフォーマットは + 'mac'です。 + +一部の行が<CR>で終わっていて、一部の行が<CR>に続く<NL>で終わっているとき、ファ +イルフォーマットは'unix'になります。 + +カレントファイルのフォーマットを変更するには、'fileformat'を変更し、ファイルを +保存します: > + + :set fileformat=dos + :w +< +カレントファイルのフォーマットを表示するにはこうします > + + :set fileformat? +< +以上の動作は'fileformats'によっても変わります。次のコマンドを試してみてくださ +い: > +さらなる情報については以下を参照してください > + + :help 'fileformats' + :help 'fileformat' + :help file-formats + :help DOS-format-write + :help Unix-format-write + :help Mac-format-write + :help dos-file-formats + :help 23.1 +< + *faq-14.14* +14.14. 他のアプリケーションからVimのバッファへテキストを貼り付けたとき、挿入さ + れたテキストの桁(インデント)が狂ってしまいます。これを直すには? + +テキストのインデントが狂うのはインデントに関する様々なオプション(autoindent, +smartindent, textwidth)によります。テキストをVimに貼り付ける前に'paste'をセッ +トしてください: > + + :set paste +< +テキストをペーストしたらこのオプションをオフにします: > + + :set paste! +< +レジスタ*によってクリップボードを使用できる場合はCTRL-R CTRL-O *とするとインデ +ントなしでテキストを貼り付けることができます。 + +さらなる情報については以下を参照してください > + + :help 'paste' + :help 'pastetoggle' + :help i_CTRL-R_CTRL_O + :help clipboard + :help xterm-clipboard + :help gui-clipboard +< + *faq-14.15* +14.15. 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきらない + とき、まったく何も表示されません。折り返された行の代わりに'@'という記号 + で始まる空の行が表示されます。行が収まるように画面をスクロールすると'@' + は消え、行が表示されるようになります。この挙動の設定はどうやるのですか? + +'display'オプションを'lastline'に設定すると、'@'を表示する代わりに可能な限り最 +後の行を表示するようになります。 > + + :set display=lastline +< +さらなる情報については以下を参照してください > + + :help 'display' +< + *faq-14.16* +14.16. ファイル中の全てのタブ文字をスペースに変換するには? + +":retab"を使うとカレントファイル中の全てのタブ文字を'expandtab'と'tabstop'の設 +定にしたがって変換することができます。例えば、全てのタブをスペースに変換するに +はこのようにします > + + :set expandtab + :retab +< +さらなる情報については以下を参照してください > + + :help :retab + :help 'expandtab' + :help 'tabstop' + :help 25.3 +< + *faq-14.17* +14.17. 後でワードプロセッサに送るテキストを編集するためのオプションは? + +後でワードプロセッサに送るテキストを編集するためには以下のオプションを設定する +ことができます: > + + :set wrap + :set linebreak + :set textwidth=0 + :set showbreak=>>> +< +'gk'と'gj'を使うと画面上の行(物理行)単位で上下に移動できます。 +さらなる情報については以下を参照してください > + + :help 'wrap' + :help 'linebreak' + :help 'textwidth' + :help 'showbreak' + :help gk + :help gj +< + +============================================================================= + *faq-15* +SECTION 15 - ビジュアルモード + + *faq-15.1* +15.1. 矩形範囲をコピーするには? + +矩形選択モードを使えば矩形範囲をコピーすることができます。矩形選択モードを開始 +するにはCTRL-Vキーを押します。移動コマンドを使ってカーソルを動かし、yを押すと +選択したテキストがヤンクされます。 + +CTRL-Vが期待通りに機能しない場合は、スクリプトmswin.vimによってこの機能が +CTRL-Qにマップされているかもしれません。Windowsマシン上では他のプログラムに共 +通のショートカットを真似するため、しばしばvimrcによってこのスクリプトがsource +されています。 + +さらなる情報については以下を参照してください > + + :help 04.4 + :help blockwise-visual + :help visual-mode + :help Q_vi +< + *faq-15.2* +15.2. ファイルの特定の列を削除・変更するには? + +矩形選択モードを使えば特定の列を選択してオペレータコマンド(変更・削除・コピー) +を適用することができます。 + +さらなる情報については以下を参照してください > + + :help visual-block + :help visual-operators +< + *faq-15.3* +15.3. ビジュアル選択した行に対してexコマンドを適用するには? + +ビジュアルモードで行を選択すると、レジスタ<が選択範囲の開始位置にセットされ、 +レジスタ>が選択範囲の終端にセットされます。これらのレジスタを使えばexコマンド +の範囲を指定できます。行をビジュアル選択してから":"を押すとコマンドモードに移 +行します。自動的に選択範囲を示す'<,'>が挿入されます。選択範囲に対してどんなex +コマンドでも実行することができます。 + +さらなる情報については以下を参照してください > + + :help v_: + :help '< + :help '> +< + *faq-15.4* +15.4. 矩形選択した範囲に対してexコマンドを適用するには? + +exコマンドは全て行全体に対してのみ実行されます。テキストを矩形選択してexコマン +ドを実行しようとすると、(選択した列だけでなく)選択した行全体に対して実行されて +しまいます。http://vim.sourceforge.net から入手できるプラグインvis.vimを使えば +矩形範囲に対してexコマンドを適用することができます。 + +さらなる情報については以下を参照してください > + + :help cmdline-ranges + :help 10.3 + :help cmdline-lines +< + *faq-15.5* +15.5. ビジュアルモードでファイル全体を選択するには? + +ggVGでファイル全体をビジュアル選択することができます。 > + + gg - ファイルの先頭へ移動 + V - 行単位ビジュアル選択を開始 + G - ファイルの末尾へ移動 +< +さらなる情報については以下を参照してください > + + :help gg + :help linewise-visual + :help G +< + *faq-15.6* +15.6. ビジュアル選択してから>キーを押してインデントすると、選択が解除されま + す。この範囲に対して操作を続けるため選択したままにするには?(または)最後 + に選択された範囲を再選択するには? + +'gv'で最後に選択された範囲を再選択できます。またマーク'<と'>を使うと最後に選択 +された範囲の開始位置と終端に移動することができます。 + +さらなる情報については以下を参照してください > + + :help gv + :help '< + :help '> +< + *faq-15.7* +15.7. ビジュアル選択した範囲の先頭/末尾へ移動するには? + +(ビジュアルモードにおいて)'o'コマンドでビジュアル選択した範囲の先頭/末尾へ移動 +できます。 + +さらなる情報については以下を参照してください > + + :help v_o +< + *faq-15.8* +15.8. マウスでテキストを選択してからexコマンドを実行しようと:キーを押すと選択 + された範囲が文字:で置換されてしまいます。マウスで選択したときもビジュア + ル選択したときのようにテキストに対してexコマンドを実行するには? + +これは'selectmode'でビジュアルモードでなく選択モードを使うように設定していると +き起こります。このオプションの値を確認してください: > + + :set selectmode? +< +このモードは選択モードといい、ビジュアルモードに似ています。"behave mswin"コマ +ンドを使うと、このオプションも自動的にセットされます。選択モードはビジュアルモ +ードと同じように見えますが、MS-Windowsの選択モードに似ています。 + +さらなる情報については以下を参照してください > + + :help Select-mode + :help 'selectmode' + :help 9.4 + :help :behave +< + *faq-15.9* +15.9. マウスでテキストを選択するとビジュアルモードでなく選択モードに入ってしま + います。なぜですか? + +マウスでテキストを選択したとき選択モードになるかどうかは'selectmode'オプション +によって決まります。ビジュアルモードが始まるようにするには、'selectmode'から +'mouse'の値を除きます: > + + :set selectmode-=mouse +< +デフォルトでは'selectmode'は空になっていて、常にビジュアルモードが使われるよう +になっています。 + +さらなる情報については以下を参照してください > + + :help 'selectmode' + :help Select-mode + :help :behave +< + *faq-15.10* +15.10. 最後にコピー/ペーストされたテキストをビジュアル選択するには? + +マーク'['と']を使うと最後にコピー/ペーストされたテキストを選択することができ +ます。マーク'[は最後に変更/ヤンクされたテキストの先頭にセットされ、']はその末 +尾にセットされます。この範囲をビジュアル選択するには、'[v']とします。 + +さらなる情報については以下を参照してください > + + :help '[ + :help '] + :help `a + :help v +< + +============================================================================= + *faq-16* +SECTION 16 - コマンドラインモード + + *faq-16.1* +16.1. コマンドモードまたはexコマンドモードでカレントファイル名を使うには? + +コマンドモードでは文字'%'がカレントファイルの名前を表します。いくつかのコマン +ドにおいてはファイル名を取得するためにexpand("%")を使わねばなりません: > + + :!perl % +< +さらなる情報については以下を参照してください。 > + + :help :_% + :help cmdline-special + :help expand() +< + *faq-16.2* +16.2. Vimのコマンドラインで効率的にテキストを編集するには? + +Vimのコマンドラインテキストを編集するのにコマンドラインウィンドウを使うことが +できます。コマンドラインウィンドウを開くにはノーマルモードで"q:"とします。コマ +ンドラインモード中からはCTRL-Fを使います。このウィンドウにはコマンドラインの履 +歴が表示されます。通常のVimのキー・コマンドを使って以前の・新しいコマンドライ +ンを編集することができます。コマンドラインを実行するにはエンター/リターンキー +を押します。 + +同様に、検索履歴を"q/"と"q?"で編集することができます。 + +さらなる情報については以下を参照してください。 > + + :help cmdline-window +< + *faq-16.3* +16.3. ViモードからExモードに移行するには? + +QでViモードからExモードに移行できます。ExモードからViモードに移行するには:viを +使います。 + +さらなる情報については以下を参照してください。 > + + :help Q + :help gQ + :help Ex-mode + :help :vi +< + *faq-16.4* +16.4. exコマンドの出力をバッファにコピーするには? + +exコマンドの出力をバッファにコピーするには、まずそのコマンドの出力をレジスタに +入れます。":redir"で出力をレジスタに入れることができます。例 > + + :redir @a + :g/HelloWord/p + :redir END +< +するとレジスタ'a'がexコマンド"g/HelloWord/p"の出力を保持します。ここでレジスタ +'a'の中身をバッファにペーストすることができます。'redir'を使ってexコマンドの出 +力をファイルに送ったり、追加することもできます。 + +":global"の前に":silent"を付けると、その行が画面に表示されるのを避けることがで +きます。 + +exコマンドの出力をファイルにリダイレクトするには、次の一連のコマンドを使うこと +ができます: > + + :redir > myfile + :g/HelloWord/p + :redir END +< +さらなる情報については以下を参照してください。 > + + :help :redir + :help :silent +< + *faq-16.5* +16.5. コマンドモードでファイル名を補完しようとタブキーを押します。マッチするフ + ァイル名が複数ある時、Vimは最初にマッチするファイル名を補完し、マッチし + たファイル名全てのリストを表示します。マッチしたファイル名全てを表示する + だけで、最初の候補を補完しないようにするには? + +'wildmode'を設定すればコマンドモードでのファイル名補完をカスタマイズすること +ができます。この場合は'wildmode'を'list'にすればよいでしょう: > + + :set wildmode=list +< +さらなる情報については以下を参照してください。 > + + :help 'wildmode' +< + *faq-16.6* +16.6. バッファからコマンドラインにテキストをコピーしたり、コマンドラインからバ + ッファにテキストをコピーするには? + +バッファからコマンドラインにテキストをコピーするには、バッファからテキストをヤ +ンクした後にコマンドラインでCtrl-R 0を押せばペーストすることができます。また、 +CTRL-R <register>を使って特定のレジスタにヤンクしてからコマンドラインにペース +トすることもできます。CTRL-R CTRL-Wを使うとカーソル下の単語をコマンドラインに +ペーストすることができます。 + +コマンドラインからバッファにテキストをコピーするには、":pとしてレジスタ:の中身 +をペーストすればできます。最後に実行されたコマンドラインがレジスタ:に保存され +ています。 + +コマンドラインへテキストをコピー&ペーストする別の方法は、ノーマルモードでq:を +押すかまたはコマンドラインモードでCTRL-Fを押してコマンドラインウィンドウを開く +ことです。このコマンドラインウィンドウではVimの全てのコマンドを使ってコマンド +ラインを編集することができます。 + +さらなる情報については以下を参照してください。 > + + :help c_CTRL-R + :help quote_: + :help cmdline-window +< + *faq-16.7* +16.7. あるコマンドを実行することなくコマンド履歴に入れるには? + +あるコマンドを実行することなくコマンド履歴に入れるには、<Esc>キーを押してその +コマンドをキャンセルします。 + +さらなる情報については以下を参照してください。 > + + :help c_<Esc> +< + *faq-16.8* +16.8. コマンドラインの高さを上げるには? + +'cmdheight'を変更すればコマンドラインの高さを上げることができます: > + + :set cmdheight=2 +< +さらなる情報については以下を参照してください。 > + + :help 'cmdheight' + :help hit-enter + :help 05.7 +< + +============================================================================= + *faq-17* +SECTION 17 - VIMINFO + *faq-17.1* + +17.1. Vimを起動したときviminfoファイルに不正な文字があるとエラーメッセージが出 + ます。このメッセージを出なくさせるには? + +$HOME/.viminfoまたは$HOME/_viminfoファイルを削除すればこのメッセージは出なくな +ります。 + +さらなる情報については以下を参照してください。 > + + :help viminfo-errors + :help viminfo-file-name + :help viminfo + :help 21.3 +< + *faq-17.2* +17.2. viminfo機能を無効にするには? + +デフォルトではviminfo機能は無効になっています。もしシステムレベルのvimrcによっ +てviminfo機能が有効化されているなら、ユーザーのローカルな.vimrcで'viminfo'に空 +文字列を設定すれば、viminfo機能が無効になります: > + + :set viminfo="" +< +さらなる情報については以下を参照してください。 > + + :help 'viminfo' +< + *faq-17.3* +17.3. Vimのセッションをまたいでマークを保存し、使用するには? + +viminfoを使えばVimのセッションをまたいでマークを保存し、復元することができま +す。viminfoファイルを使うには'viminfo'オプションが空でないことを確かめてくださ +い。Vimのマークを保存し、復元するには、'viminfo'オプションに'f'フラグが入って +いないか、'f'に対する値が0より大きくなっていなければなりません。 + +さらなる情報については以下を参照してください。 > + + :help 21.3 + :help viminfo + :help 'viminfo' + :help :wviminfo + :help :rviminfo +< + +============================================================================= + *faq-18* +SECTION 18 - リモート編集 + + *faq-18.1* +18.1. 既に起動しているgvimでファイルを開くには? Vim 5.xのOpenWithVim.exeと + SendToVim.exeはどうなりました? + +Vim6からOpenWithVim.exeとSendToVim.exeユーティリティのOLE版はクライアント-サー +バ機能によってとって替わられました。ファイルj.txtを既に起動しているgvim(MyVim) +で開くにはこのようにします: > + + $ gvim --servername MyVim --remote-silent j.txt +< +現在起動しているVim全てのサーバ名をリストするにはこうします: > + + $ vim --serverlist +< +クライアント-サーバ機能についてのさらなる情報は以下を参照してください。 > + + :help client-server +< + *faq-18.2* +18.2. vimサーバに全てのバッファをディスクに保存するようなコマンドを送るには? + +それにはVimのリモートサーバ機能を使うことができます: > + + $ gvim --servername myVIM --remote-send "<C-\><C-N>:wall<CR>" +< +さらなる情報については以下を参照してください。 > + + :help client-server + :help CTRL-\_CTRL-N + :help :wall +< + *faq-18.3* +18.3. Vimのリモートサーバ機能についてのドキュメントはどこで手に入りますか? + +Vimのリモートサーバ機能についての情報はこれを読めば得られます > + + :help client-server +< + +============================================================================= + *faq-19* +SECTION 19 - オプション + + *faq-19.1* +19.1. Vimを簡単な方法で設定するには? + +":options"でオプションウィンドウを開くことができます: > + + :options +< +このウィンドウで全オプションを見て、設定することができます。 + +さらなる情報については以下を参照してください。 > + + :help :options +< + *faq-19.2* +19.2. オプションの値をトグルするには? + +オプションの前に"inv"をつけると、その値をトグルすることができます: > + + :set invignorecase + :set invhlsearch +< +オプションの後ろに"!"をつけてもその値をトグルすることができます: > + + :set ignorecase! + :set hlsearch! +< +さらなる情報については以下を参照してください。 > + + :help set-option +< + *faq-19.3* +19.3. 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプションを設定 + するには? + +":setlocal"を使うと現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオ +プションを設定できます: > + + :setlocal textwidth=70 +< +全てのオプションがローカルな値を持つわけではないことに注意してください。そのオ +プションがローカルな値を持てる場合だけ、":setlocal"でバッファ/ウィンドウにロ +ーカルに設定できます。 + +また、次のコマンドでもオプションをローカルに設定できます: > + + :let &l:{option-name} = <value> +< + *faq-19.4* +19.4. オプションの値にスペースを含めるには? + +オプション値にスペースを含めるには、スペースをエスケープしなければなりません。 +例: > + + :set tags=tags\ /usr/tags +< +さらなる情報については以下を参照してください。 > + + :help option-backslash +< + *faq-19.5* +19.5. オプション設定をファイルに埋め込むには? + +モードラインを使えばオプション設定をファイル中に埋め込むことができます。例え +ば、Cのファイルでファイルの先頭または末尾に次の行を埋め込むことができます: > + + /* vim:sw=4: */ +< +こうするとそのCファイルを編集するとき'shiftwidth'が4に設定されます。これが機能 +するためには、'modeline'オプションをセットしなければなりません。デフォルトで +'modeline'は設定されています。'modelines'はチェックされる行数を指定します。 + +さらなる情報については以下を参照してください。 > + + :help 21.6 + :help modeline + :help auto-setting + :help 'modeline' + :help 'modelines' +< + *faq-19.6* +19.6. ファイル中の全ての行の行番号を表示するには? + +'number'オプションをセットすれば、全行に対して行番号が表示されます。 > + + :set number +< +さらなる情報については以下を参照してください。 > + + :help 'number' +< + *faq-19.7* +19.7. 'number'オプションで表示される行番号の幅を変えるには? + +'number'オプションで表示される行番号の幅はVimのソース中にハードコードされてい +ます。なにかオプションを設定することによってこの幅を変更することは不可能です。 + +行番号の幅を変えるオプションの要望とパッチはVimのTODOリスト中にあります: > + + "Add an option to set the width of the 'number' column. Eight + positions is often more than needed. Or adjust the width to the length + of the file? + Add patch that adds 'numberlen' option. (James Harvey) + Other patch with min and max from Emmanuel Renieris (2002 Jul 24) + Other patch without an option by Gilles Roy (2002 Jul 25)" +< +訳註: Vim7でオプション'numberwidth'が導入された。 + + *faq-19.8* +19.8. スペース、タブ、改行などの不可視文字を表示するには? + +'list'オプションをセットすれば、ファイル中の不可視文字を表示することができま +す。 > + + :set list +< +このオプションをセットすると、スペース、タブ、改行、行末のスペース、折り返され +た行を表示することができます。 + +不可視文字を表示しなくするには(これがデフォルトです)、'list'をオフにします: > + + :set nolist + (or) + :set list! +< +":set list!"とすると現在の'list'の設定をトグルします。 + +'listchars'オプションを変更すれば表示される不可視文字とその表示のされかたを設 +定することができます。例えば、次のコマンドは行末のスペースを'.'で表示するよう +にします。 > + + :set listchars=trail:. +< +さらなる情報については以下を参照してください。 > + + :help 'listchars' + :help 'list' +< + *faq-19.9* +19.9. 常に現在行と桁番号を表示するようにするには? + +'ruler'をセットすれば現在の行と桁番号をステータスラインに表示するようになりま +す: > + + :set ruler +< +さらなる情報については以下を参照してください。 > + + :help 'ruler' +< + *faq-19.10* +19.10. 現在のモードを表示するようにするには? + +'showmode'オプションをセットすれば現在のVimのモードを表示するようになります。 +インサート、上書き、ビジュアルモードにおいて、最後の行に現在のモードを表示する +ようになります。 > + + :set showmode +< +さらなる情報については以下を参照してください。 > + + :help 'showmode' +< + *faq-19.11* +19.11. ステータスラインに入力途中のコマンドを表示するようにするには? + +'showcmd'をセットすればステータスラインに入力途中のコマンドを表示するようにな +ります: > + + :set showcmd +< +さらなる情報については以下を参照してください。 > + + :help 'showcmd' +< + *faq-19.12* +19.12. ステータスラインに異なる設定・値を表示するようにするには? + +'statusline'をセットすれば異なる設定・値をステータスラインに表示するようになり +ます。 + +さらなる情報については以下を参照してください。 > + + :help 'statusline' + :help 'laststatus' + :help 'rulerformat' + :help 'ruler' +< + *faq-19.13* +19.13. 常にステータスラインを表示するようにするには? + +'laststatus'を2にすれば常にステータスラインを表示するようになります。 > + + :set laststatus=2 +< +さらなる情報については以下を参照してください。 > + + :help 'laststatus' +< + *faq-19.14* +19.14. Vimを再起動しても設定が永続するようにするには? + +Vimを再起動しても設定が永続するようにするには、その設定を.vimrcまたは.gvimrcフ +ァイルに追加します。":mkvimrc"コマンドを使うと現在の設定をもとにvimrcファイル +を生成することもできます。 + +さらなる情報については以下を参照してください。 > + + :help save-settings + :help vimrc + :help gvimrc + :help vimrc-intro + :help :mkvimrc + :help initialization +< + *faq-19.15* +19.15. なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュする)の + ですか? + +これは通常の動作です。画面がフラッシュするのなら、ビジュアルベルが発生していま +す。そうでなければビープが鳴ります。 + +Vimは普通のエスケープとカーソルキーのシーケンスなどを区別するために、タイムア +ウトを必要とします。ノーマルモードでキーを押すと(インサートモードでさえも)、 +そしてそのキーがマッピングの始まりであると、Vimはマッピングの残りのシーケンス +が後に続くがどうかを見るために一定時間待ちます。もしタイムアウトする前にマッピ +ングシーケンスが最後まで入力されればそのキーシーケンスのマッピングが発動しま +す。もしマッピングを中断すれば、そのキーに割り当てられた普通の動作を実行しま +す。 + +例えば、":imap vvv Vim is great!!"と定義されたマッピングがあるとし、"vvv"をす +ばやく入力するとします。すると"Vim is great!!"がテキストに挿入されます。 +しかし"vv v"と入力すると、それがテキストに挿入されます。これは"vvv"をとても遅 +く入力したときも同じになります。ここで"とても遅く"とはタイムアウトオプションで +設定された値よりも長いという意味です。タイムアウトオプションを大きな値に設定す +ると、遅い回線上でファンクションキーを使うときに現れる問題を解決することができ +ます。 + +さらなる情報については以下を参照してください。 > + + :help ttimeout +< + *faq-19.16* +19.16. 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示するように + するには? + +'c'と's'で変更する文字を削除するのでなく'$'を表示するようにするには、 +'cpoptions'にフラグ$を追加します: > + + :set cpoptions+=$ +< +さらなる情報については以下を参照してください。 > + + :help 'cpoptions' +< + *faq-19.17* +19.17. 1回の":set"コマンドでオプションから複数のフラグを除去するには? + +1回の":set"コマンドでオプションから複数のフラグを除去するには、それらのフラグ +がオプション中に現れるのと正確に同じ順序でフラグを指定します。例えば、次のコマ +ンドで'formatoptions'からフラグ't'と'n'を除去しようとしたとします: > + + :set formatoptions-=tn +< +すると、'formatoptions'がこれらのフラグをこの'tn'という順序で保持していた場合 +のみ、フラグ't'と'n'が除去されます。そうでなければフラグは除去されません。 +この問題を避けるには、フラグを1つ1つ除去します: > + + :set formatoptions-=t formatoptions-=n +< +さらなる情報については以下を参照してください。 > + + :help :set-= +< + +============================================================================= + *faq-20* +SECTION 20 - キーマップ + + *faq-20.1* +20.1. キーがどうマップされているかを知るには? + +キーがどうマップされているかを知るには、次のコマンドを使うことができます: > + + :map <key> + :map! <key> +< +また、特定のモードでのマッピングを確認するには":cmap", ":nmap", ":vmap", +":imap", ":omap"などのコマンドを使うことができます。 + +さらなる情報については以下を参照してください。 > + + :help map-listing + :help map-overview +< + *faq-20.2* +20.2. ユーザ定義のキーマッピングをリストするには? + +ユーザ定義のキーマッピングをリストするにはこうします: > + + :map +< +さらなる情報については以下を参照してください。 > + + :help map-listing +< + *faq-20.3* +20.3. キーマップを解除するには? + +キーマップを解除するには":unmap"を使います: > + + :unmap <key> + :unmap! <key> +< +モード指定のマッピングには、":nunmap/:vunmap/:ounmap/:iunmap/:lunmap/:cunmap" +のどれかを使います。 + +次のコマンドではバッファローカルなマップを解除できません: > + + :unmap <key> +< +バッファローカルなキーマップを解除するには、キーワード<buffer>を使わなければ +なりません: > + + :unmap <buffer> <key> + :unmap! <buffer> <key> +< +さらなる情報については以下を参照してください。 > + + :help :unmap + :help map-modes + :help map-local + :help 'mapleader' +< + *faq-20.4* +20.4. キー<xxx>へマッピングができません。なにがまずいのですか? + +最初にそのキーがVimが渡っているかどうか確認してください。インサートモードで +CTRL-Vに続けてそのキーを押してください。そのキーに対応するキーコードが表示され +るでしょう。ここでそのキーコードが表示されたら、以下のコマンドでそのキーに対す +るマッピングを作成することができます: > + + :map <C-V><xxx> <your_command_to_be_mapped> +< +さらなる情報については以下を参照してください。 > + + :help map-keys-fails + :help :map-special-keys + :help key-codes +< + *faq-20.5* +20.5. テンキーにマップするには? + +最初にテンキーのキーがVimに渡っているかどうかを確認してください。そして次の +コマンドでテンキーのキーに対してマップすることができます: > + + :map <kSomething> <your_command> +< +ここで<kSomething>にはkHome, kEnd, kPageUp, kPageDown, kPlus, kMinus, +kDivide, kMultiply, kEnterなどが使えます。 + +さらなる情報については以下を参照してください。 > + + :help key-codes + :help terminal-options +< + *faq-20.6* +20.6. ビジュアルモードでのみ機能するマッピングを作成するには? + +特定のモード(ノーマル、コマンド、インサート、ビジュアル等)でのみ機能するマッピ +ングを作成することができます。ビジュアルモードでのみ機能するマッピングを作るに +は、":vmap"を使います: > + + :vmap <F3> <your mapping here> +< +さらなる情報については以下を参照してください。 > + + :help :vmap + :help map-modes + :help 40.1 +< + *faq-20.7* +20.7. Vimスクリプト中で、すでに使われているキーと衝突しないようにどのキーを + 使うべきかを知るには? + +Vimはキーボードのほとんどのキーを使います。mapに<leader>プリフィックスを使うと +Vimのキーと重ならないようにキーを定義することができます。例: > + + :map <leader>S <C-W>s + :map <leader>j <C-W>j + :map <leader>k <C-W>k +< +ここでデフォルトの<leader>はバックスラッシュ(\)で置き換えられます。そのためユ +ーザーはこれらのマッピングを発動させるのに > + \s + \j + \k +< +を押すことになります。マップリーダーを好きな物に変えることができます: > + + :let mapleader = "," +< +プラグインなどのスクリプトを書くときは、いつも以上に:mapでなく:noremapを使い、 +ユーザー定義マッピングの副作用を避けることが推奨されます。 + +さらなる情報については以下を参照してください。 > + + :help <Leader> + :help <LocalLeader> + :help write-plugin +< + *faq-20.8* +20.8. エスケープキーにマップするには? + +":map"コマンドでエスケープキーを他のキーにマップすることができます。例えば、次 +のコマンドはエスケープキーをCTRL-Oにマップします。 > + + :map <C-O> <Esc> +< + *faq-20.9* +20.9. あるキーをなにもしないようにマップするには? + +キーを<Nop>にマップすると、そのキーを押したときに何も起こらないようにすること +ができます。例えば、次のマッピングで<F7>が押されたとき何もしないようにすること +ができます。 > + + :map <F7> <Nop> + :map! <F7> <Nop> +< +さらなる情報については以下を参照してください。 > + + :help <Nop> + :help :map + :help :map! + :help map-modes +< + *faq-20.10* +20.10. Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブロッ + クをアンインデンとするようにしたいです。このようなマップを作るには? + この挙動はtextpadやVisual Studioなどに似ています。 + +以下のマッピングを使ってください: > + + :inoremap <S-Tab> <C-O><LT><LT> + :nnoremap <Tab> >> + :nnoremap <S-Tab> <LT><LT> + :vnoremap <Tab> > + :vnoremap <S-Tab> <LT> +< +注意: <S-Tab>のマッピングはVimが正しいキーシーケンスを受け取るときのみ機能しま +す。これはGUIのVimの場合はたいてい当てはまります。 + +さらなる情報については以下を参照してください。 > + + :help :inoremap + :help :nnoremap + :help :vnoremap + :help <S-Tab> + :help i_CTRL-O + :help >> + :help << + :help <LT> +< + *faq-20.11* +20.11. 私のマッピングにおいて<CR>のような特殊文字が認識されません。 + 特殊文字を認識するように設定するには? + +'cpoptions'の値を確認してください: > + + :set cpoptions? +< +このオプションがフラグ'<'を含んでいると、マッピングにおいて特殊文字が認識され +ません。'cpoptions'からフラグ'<'を除去してください: > + + :set cpo-=< +< +また、'compatible'の値も確認してください: > + + :se compatible? +< +'compatible'はオフになっていなければなりません: > + + :se nocompatible +< +さらなる情報については以下を参照してください。 > + + :help 'cpoptions' + :help 'compatible' +< + *faq-20.12* +20.12. マップ中で'|'を使って複数のコマンドを区切るには? + +マップ中で'|'を使うにはバックスラッシュ(\)で'|'をエスケープします。 > + + :map _l :!ls \| more<CR> +< +次のコマンドも試してみてください: > + + :map _l :!ls <bar> more<CR> +< +他の方法もあります。 + +さらなる情報については以下を参照してください。 > + + :help map_bar +< + *faq-20.13* +20.13. その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 + 入力があります。最初のものを入力したとき、2番目のが展開しないようにする + には? + +":map lhs rhs"でなく":noremap lhs rhs"を使ってください。短縮入力については +"noreabbrev lhs rhs"です。プリフィックス"nore"はマッピングや短縮入力が再帰的に +展開されるのを防ぎます。 + +さらなる情報については以下を参照してください。 > + + :help :noremap + :help :noreabbrev +< + *faq-20.14* +20.14. ときどきキーが処理されるのに1秒程度かかるのはなぜですか? + +そのキーに対してマッピングが定義されていないことを次のコマンドで確かめてくださ +い: > + + :map <key> +< +もしこのキーにマッピングが定義されていて、マッピングが1文字以上を含んでいるな +ら、Vimはそれがマッピングの一部かどうかを判定するために、次の文字が押されるの +を待ちます。例えば、"ab"というマッピングをしているとします。そして"a"を押すと +Vimは次のキーが押されるのを待ちます。次のキーが"b"ならvimはこのマッピングを実 +行します。そうでなければvimは"a"とその次のキーを通常どおりに処理します。 +'timeout'がオンになっていると(それがデフォルトです)、Vimは'timeoutlen'で指定さ +れた時間(デフォルトは1秒)だけ待ったのちタイムアウトします。 + +さらなる情報については以下を参照してください。 > + + :help map-typing + :help 'timeoutlen' + :help 'ttimeoutlen' + :help 'timeout' + :help 'ttimeout' + :help vt100-cursor-keys + :help slow-fast-terminal +< + *faq-20.15* +20.15. ビジュアル選択したテキストに対して外部コマンドを実行するマッピングを作 + るには? + +":vmap"コマンドでビジュアルモードでのマッピングを作ることができます。マップの +コマンドシーケンスの中で、最初にそのテキストをヤンクしなければなりません。ヤン +クされたテキストはレジスタ"で取得できます。そしてこのレジスタの中身を使って外 +部コマンドを実行することができます。例えば、外部コマンド"perldoc"を選択された +テキストに対して実行するには、次のマッピングを使います: > + + :vmap <F7> y:!exec "!perldoc '" . @" . "'"<CR> +< +選択されたテキストでなく、ビジュアルモード中でマッピングを実行したいなら次のコ +マンドを使います: > + + :vmap <F7> :<C-U>!perldoc <cword><CR> +< +このマッピングは選択されたテキストでなく、カーソル下の単語を使います。外部コマ +ンド"perldoc"を実行する前に<C-U>としてることに注意してください。この<C-U>はビ +ジュアルモードで選択されたテキストの範囲がコマンドラインに表示されているのを消 +すために使われています。<C-U>を使って選択範囲を消さないと、外部コマンドの出力 +が選択されたテキストを置き換えてしまいます。 + +さらなる情報については以下を参照してください。 > + + :help :vmap + :help quote_quote + :help let-register + :help c_CTRL-U + :help :!cmd +< + *faq-20.16* +20.16. <Tab>キーの機能を保ったままCtrl-Iにマッピングするには? + +Ctrl-Iと<Tab>は同じキーコードを生成します。そのため、VimはCtrl-Iと<Tab>を区別 +することができません。Ctrl-Iにマッピングすると、<Tab>キーにも同様にマッピング +されます(逆も同様です)。これと同じ制限がCtrl-[と<Esc>にも適用されます。 + +さらなる情報については以下を参照してください。 > + + :help keycodes +< + +============================================================================= + *faq-21* +SECTION 21 - 短縮入力 + + *faq-21.1* +21.1. スペリングを間違えた単語を自動的に修正するには? + +短縮入力を使ってスペリングを間違えた単語を自動的に修正することができます。例え +ば、次の短縮入力で"teh"を"the"に修正することができます: > + + :abbreviate teh the +< +インサートモード、上書きモード、コマンドラインモードで短縮入力が利用できます。 + +さらなる情報については以下を参照してください。 > + + :help 24.7 + :help abbreviations + :help Q_ab +< + *faq-21.2* +21.2. 複数行の短縮入力を作るには? + +キーコード"<CR>"を埋め込めば、複数行の短縮入力を作ることができます: > + + iabbrev #c --------------<CR>-- Date:<CR>--<CR>--------- +< +この短縮入力によって、#cとタイプすると次のテキストに展開されます: + +-------------- +-- Date: +-- +--------- + +さらなる情報については以下を参照してください。 > + + :help abbreviations +< + *faq-21.3* +21.3. 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペースが入っ + てしまいます。これを防ぐには? + +短縮入力をCTRL-]を押して展開すれば、展開されたテキストの末尾に余計なスペースが +入るのを防ぐことができます。 + +別の方法としては、次の関数とコマンドを使うことができます: + +function! Eatchar(pat) + let c = nr2char(getchar()) + return (c =~ a:pat) ? '' : c +endfunction +command! -nargs=+ Iabbr execute "iabbr" <q-args> . "<C-R>=Eatchar('\\s')<CR>" + +こうしておいて、組み込みの"iabbrev"の代わりに新しいコマンド"Iabbr"を使って短縮 +入力を定義します。このコマンドを使うと、テキストを展開した後、次に入力された文 +字が捨てられます。 + +さらなる情報については以下を参照してください。 > + + :help abbreviations +< + *faq-21.4* +21.4. 現在の日付・時刻を挿入するには? + +strftime()を使えば現在の日付・時刻のタイムスタンプを挿入することができます。例 +えば、次の短縮入力を使います: > + + iabbrev dts <C-R>=strftime("%y/%m/%d %H:%M")<CR> +< +この短縮入力を使うと、インサートモードでdtsと入力するとそれがタイムスタンプに +展開されます。 + +この短縮入力の別の形を以下に列挙します: > + + iabbrev mdyl <C-R>=strftime("%a %d %b %Y")<CR> + iabbrev mdys <C-R>=strftime("%y%m%d")<CR> + iabbrev mdyc <C-R>=strftime("%c")<CR> + iabbrev hml <C-R>=strftime("%d/%m/%y %H:%M:%S")<CR> + iabbrev hms <C-R>=strftime("%H:%M:%S")<CR> +< +さらなる情報については以下を参照してください。 > + + :help strftime() + :help i_CTRL-R +< + *faq-21.5* +21.5. インサートモードで短縮入力が展開されるのを防ぐには? + +短縮された単語の後にCTRL-Vを押してから次の文字を入力すれば、それが展開されるの +を防ぐことができます。 + +さらなる情報については以下を参照してください。 > + + :help abbreviations +< + +============================================================================= + *faq-22* +SECTION 22 - レコーディングと繰り返し + + *faq-22.1* +22.1. 編集操作(挿入、削除、ペースト等)を繰り返すには? + +'.'を使えば最後の編集操作を繰り返すことができます。これは挿入、削除、変更、ペ +ーストなどの単純な変更を繰り返します。 + +さらなる情報については以下を参照してください。 > + + :help 04.3 + :help single-repeat + :help Q_re +< + + *faq-22.2* +22.2. キーシーケンスを記録し、繰り返すには? + +ノーマルモードで'q'を使うとキーシーケンスを記録し、それをレジスタに保存するこ +とができます。例えば、ノーマルモードでqを押し、続けてレジスタ名{0-9a-bA-Z"}を +押すとレコーディングが始まります。レコーディングを終了するには、もう一度qを押 +します。記録されたキーシーケンスを再生するには、@に続けてレジスタ名を押しま +す。例. @a。 + +別の方法としてはコマンドライン引数"-w"をつけてVimを起動します。 > + + $ vim -w <file_name> +< +するとVimはこのセッション中にタイプされた文字全てを指定されたファイル +"file_name"に記録します。コマンドライン引数"-s"でそのファイルを指定すると、そ +れを再生することができます: > + + $ vim -s <file_name> +< +さらなる情報については以下を参照してください。 > + + :help 10.1 + :help recording + :help -w + :help -s +< + *faq-22.3* +22.3. 記録したキーシーケンスを編集するには? + +記録したキーシーケンスはレジスタに保存されます。そのレジスタの中身をバッファに +ペーストし、そのテキストを編集して最後レジスタにヤンクすることができます。 +また、":let"でもレジスタを修正することができます。例: > + + :let @a = "iHello World\<Esc>" +< +さらなる情報については以下を参照してください。 > + + :help recording + :help 10.1 + :help let-register + :help <> + :help 'cpoptions' +< + *faq-22.4* +22.4. 記録したキーシーケンスをファイルに保存するには? + +記録されたキーシーケンスはレジスタに保存されます。そのレジスタの中身をバッファ +にペーストすることができます。そしてそのバッファをファイルに保存します。ペース +トしたテキストを修正して再度レジスタにヤンクして記録したキーシーケンスを修正す +ることもできます。例えば、qa ..... qとしてキーシーケンスを記録したとします。 +記録したキーシーケンスはレジスタ'a'に保存されます。"apとするとレジスタ'a'の中 +身をペーストすることができます。 + +さらなる情報については以下を参照してください。 > + + :help recording + :help 10.1 +< + *faq-22.5* +22.5. レジスタ0にキーシーケンスを保存しています(つまり q0 .... q)。 + 記録したキーシーケンスの中でテキストをヤンクしています。一度そのキーシー + ケンスを再生すると、もうそれを再現することができません。 + +レジスタ0は最後のヤンクしたテキストを保持します。記録したキーシーケンス中でヤ +ンクが行われたとき、レジスタ0はそのテキストで上書きされます。そのためレジスタ +0に記録したキーシーケンスは失われます。何か他のレジスタを使わねばなりません。 + +さらなる情報については以下を参照してください。 > + + :help registers +< + +============================================================================= + *faq-23* +SECTION 23 - 自動コマンド + + *faq-23.1* +23.1. 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? + +自動コマンドFileChangedROを使えば、読み込み専用ファイルが修正されたときにコマ +ンドを実行できます。例えば、このイベントを使って読み込み専用ファイルをチェック +アウトすることができます: > + + :autocmd FileChangedRO * call MyCheckoutFunction() +< +さらなる情報については以下を参照してください。 > + + :help FileChangedRO +< + *faq-23.2* +23.2. あるバッファに入るときに毎回コマンドを実行するには? + +自動コマンドイベントBufEnterを使うと、あるバッファに入る度にコマンドを実行する +ことができます。例: > + + :autocmd BufEnter *.c set formatoptions=croqt +< +さらなる情報については以下を参照してください。 > + + :help BufEnter +< + + *faq-23.3* +23.3. あるウィンドウに入るときに毎回コマンドを実行するには? + +自動コマンドイベントWinEnterを使えば、あるウィンドウに入るときに度にコマンドを +実行することができます。例: > + + :autocmd WinEnter *.c call MyFunction() +< +さらなる情報については以下を参照してください。 > + + :help WinEnter +< + *faq-23.4* +23.4. autocmd中でその自動コマンドが実行されているファイルの名前やバッファ番号 + を知るには? + +特殊な単語<afile>または<abuf>を使えばautocmd中でその自動コマンドが実行されてい +るファイル名やバッファ番号を取得することができます。 + +さらなる情報については以下を参照してください。 > + + :help :<afile> + :help :<abuf> + :help :<amatch> +< + *faq-23.5* +23.5. Vimがフォーカスを失ったとき、変更されたバッファ全てを自動的に保存する + には? + +FocusLostイベントに対して自動コマンドを定義すれば、Vimがフォーカスを失う度に変 +更されたバッファ全てを保存することができます: > + + :autocmd FocusLost * wall +< +さらなる情報については以下を参照してください。 > + + :help FocusLost + :help :wall +< + *faq-23.6* +23.6. Vimを終了するときにクリーンアップ用の関数を実行するには? + +VimLeaveイベントを使えば、Vimが終了する直前に関数を実行することができます。 +例 > + + :autocmd VimLeave * call MyCleanupFunction() +< +さらなる情報については以下を参照してください。 > + + :help VimLeave +< + +============================================================================= + *faq-24* +SECTION 24 - 構文強調 + + *faq-24.1* +24.1. 構文強調をオン・オフにするには? + +デフォルトでは構文強調はオフにされています。構文強調をオンにするには次のコマン +ドのどれかを使います: > + + :syntax enable +< +または > + + :syntax on +< +構文強調を無効にするには、次のコマンドを使います: > + + :syntax off +< +さらなる情報については以下を参照してください。 > + + :help 06.1 + :help 06.4 + :help :syntax-enable + :help :syntax-on + :help :syn-clear +< + *faq-24.2* +24.2. 背景色と文字色を変えるには? + +背景色と文字色には強調グループ"Normal"が使われます。文字色・背景色を変える +には、強調グループ"Normal"を変更しなければなりません。例えば、背景色を青に、 +文字色を白にするには、次のようにします: > + + :highlight Normal ctermbg=blue ctermfg=white guibg=blue guifg=white +< +もしMotifまたはAthena版のGVimを使っているなら、.Xdefaultsファイル中の文字色と +背景色のリソース名を変更してもよいでしょう: > + + Vim.foreground: Black + Vim.backround: Wheat +< +また、コマンドライン引数"-foregroung"と"-background"を指定して文字色と背景色 +を指定することもできます。これらの引数はMotifとAthena版でだけサポートされてい +ます: > + + $ gvim -foreground Black -background Wheat +< +さらなる情報については以下を参照してください。 > + + :help :highlight + :help .Xdefaults + :help -gui +< + *faq-24.3* +24.3. 暗い/明るい背景色に合うように色を変えるには? + +'background'を'dark'か'light'に変えれば、それぞれ暗い/明るい背景に合うように +強調色を変えることができます: > + + :set background=dark +< +さらなる情報については以下を参照してください。 > + + :help 'background' + :help 6.2 +< + *faq-24.4* +24.4. ":set number"をしたときに表示される行番号の色を変えるには? + +行番号の表示には強調グループLineNrが使われます。現在設定されている色を表示する +にはこうします > + + :hi LineNr +< +この色を変えるには、強調グループLineNrを変更します。例: > + + :hi linenr guifg=red guibg=black +< +こうするとGVimでは黒い背景の上に赤い数字で表示されるようになります。 + +さらなる情報については以下を参照してください。 > + + :help :highlight +< + *faq-24.5* +24.5. ビジュアルモードで選択された範囲の背景色を変えるには? + +強調グループ'Visual'を変更すれば、ビジュアルモードで選択された範囲の色を変える +ことができます: > + + :highlight Visual guibg=red +< +さらなる情報については以下を参照してください。 > + + :help :highlight + :help hl-Visual +< + *faq-24.6* +24.6. オプション'list'で表示した特殊文字(タブ、行末の空白、行末など)に色をつけ + るには? + +強調グループ"NonText"と"SpecialKey"を変えれば'list'によって表示された特殊文字 +に色をつけることができます: > + + :highlight NonText guibg=red + :highlight SpecialKey guibg=green +< +オプション'listchars'中の"eol", "extend", "precedes"に対しては"NonText"が使わ +れます。"tab"と"trail"には"SpecialKey"が使われます。 + +さらなる情報については以下を参照してください。 > + + :help 'listchars' + :help hl-NonText + :help hl-SpecialKey +< + *faq-24.7* +24.7. 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? + +.vimrcや.gvimrc中で":colorscheme"を使えばカラースキームを指定することができま +す: > + + colorschme evening +< +さらなる情報については以下を参照してください。 > + + :help :colorscheme +< + *faq-24.8* +24.8. 正しく構文強調されません。ファイルの一部が強調されなかったり、間違って強 + 調されてしまいます。 + +Vimは構文強調する際にファイル全体をパースすることはしません。表示してされてい +る場所からパースが始まります。これによって多大な時間が節約できますが、ときどき +間違って色づけされることもあります。これを修正する単純な方法は、CTRL-Lを押して +画面を再描画することです。または少し上にスクロールしてから下に戻ってきます。 +このコマンドを使うこともできます: > + + :syntax sync fromstart +< +注意: これを実行すとスクリーンの描画が相当遅くなります。 + +さらなる情報については以下を参照してください。 > + + :help :syn-sync + :help :syn-sync-first +< + *faq-24.9* +24.9. 対応する括弧を強調する組み込みの関数はありますか? + +ありません。Vimには対応する括弧を強調する機能はありません。Charles Campbellが +作ったプラグインを試してみてもよいでしょう: > + + http://vim.sourceforge.net/tips/tip.php?tip_id=177 +< +対応する括弧には'%'キーを使えばジャンプできます。インサートモードで一時的に対 +応する括弧にジャンプするには'showmatch'をセットします。 + +訳註: Vim7からはmatchparen.vimが付属し、カーソルが括弧の上に乗ると、自動的に +訳註: 対応する括弧が強調されるようになった。 +訳註: :h matchparen + +さらなる情報については以下を参照してください。 > + + :help % + :help 'showmatch' + :help 'matchtime' + :help 'matchpairs' +< + *faq-24.10* +24.10. Cのコメントの構文強調をオフにするには? + +次のコマンドを使うとCのコメントの構文強調をオフにすることができます: > + + :highlight clear comment +< +さらなる情報については以下を参照してください。 > + + :help c-syntax +< + *faq-24.11* +24.11. Vimに付属する標準の構文ファイルに私自身の構文拡張を加えるには? + +あなたの拡張を追加する場合、Vimに付属の構文ファイルそのものを修正するべきでは +ありません。次のVimのバージョンをインストールしたとき、その変更が失われてしま +います。代わりに、~/.vim/after/syntaxディレクトリに元の構文ファイルと同名のフ +ァイルを作り、そこにあなたの拡張を加えるべきです。 + +さらなる情報については以下を参照してください。 > + + :help mysyntaxfile-add + :help 'runtimepath' +< + *faq-24.12* +24.12. Vimに付属の標準の構文ファイルを独自の構文ファイルで置き換えるには? + +元の構文ファイルと同名のファイルを作成し、ランタイムの構文ディレクトリに置けば +標準の構文ファイルに置き換えることができます。例えば、Unixシステムにおいて構文 +ファイルc.vimを置き換えるには、新しいc.vimを~/.vim/syntaxに置きます。 +MS-Windowsシステムにおいては新しい構文ファイルを$HOME/vimfiles/syntaxまたは +$VIM/vimfiles/syntaxディレクトリに置きます。 + +さらなる情報については以下を参照してください。 > + + :help mysyntaxfile-replace + :help 44.11 + :help mysyntaxfile +< + *faq-24.13* +24.13. 特定の桁以降の全ての文字を強調するには? + +":match"を使えば特定の桁以降の全ての文字を強調することができます: > + + :match Todo '\%>75v.\+' +< +これは75桁目以降の全ての文字を強調します。 + +さらなる情報については以下を参照してください。 > + + :help :match + :help /\%v + :help /\+ + :help /. +< + *faq-24.14* +24.14. ソースファイル(.c, .hなど)を構文強調つきでHTMLファイルに変換するには? + +2html.vimを使えばソースファイルを構文強調つきでHTMLファイルに変換することがで +きます。次のコマンドを実行してください: > + + :runtime! syntax/2html.vim +< +さらなる情報については以下を参照してください。 > + + :help convert-to-HTML +< + *faq-24.15* +24.15. 現在の強調グループ定義を全て表示するには? + +現在の強調グループ定義を全て表示するには":highlight"を(引数無しで)実行します。 + +さらなる情報については以下を参照してください。 > + + :help :highlight +< + +============================================================================= + *faq-25* +SECTION 25 - VIMスクリプトを書く + + *faq-25.1* +25.1. 読み込まれているスクリプトを全て表示するには? + +":scriptnames"を使えば読み込まれているスクリプトを全て表示することができ +ます: > + + :scriptnames +< +さらなる情報については以下を参照してください。 > + + :help :scriptnames +< + *faq-25.2* +25.2. Vimスクリプトをデバッグするには? + +VimはVimプラグインやスクリプトをデバッグするための原始的なデバッガを備えていま +す。このデバッガを使うとブレークポイントを設定したり、プラグインの関数をステッ +プ実行できます。 + +さらなる情報については以下を参照してください。 > + + :help debug-scripts + :help -D +< + *faq-25.3* +25.3. あるオプションを設定したスクリプト/プラグインを探すには? + +":verbose"を使えば最後にあるオプションを設定したプラグイン/スクリプトを探すこ +とができます。例: > + + :verbose set textwidth? +< +さらなる情報については以下を参照してください。 > + + :help :set-verbose + :help :verbose +< + *faq-25.4* +25.4. (おそらくスクリプトを実行中に)エラーやメッセージが出るのですが、すぐに消 + えてしまいます。このメッセージをもう一度表示するには? + +":messages"を使えば以前のメッセージを表示することができます。 > + + :messages +< +さらなる情報については以下を参照してください。 > + + :help :messages + :help :echoerr + :help :echomsg + :help message-history +< + *faq-25.5* +25.5. プラグイン固有の情報を保存し、Vimを再起動したときそれを復元するには? + +Vimは大文字で始まり、小文字を含まないグローバル変数を保存し、復元します。この +機能を有効化するには、'viminfo'がフラグ'!'を含んでいなければなりません。Vimは +これらの変数をviminfoファイルに保存します。 + +さらなる情報については以下を参照してください。 > + + :help 'viminfo' + :help viminfo-file + :help variables +< + *faq-25.6* +25.6. 関数の中からインサートモードを開始するには? + +":startinsert"を使えば関数の中からインサートモードを開始することができます。 + +さらなる情報については以下を参照してください。 > + + :help :startinsert +< + *faq-25.7* +25.7. 関数の中でカーソル位置を動かすには? + +関数cursor()を使えばカーソルを動かすことができます。 > + + call cursor(lnum, col) +< +次のコマンドを使ってもカーソル位置を変えることができます: > + + exe "normal! " . lnum . "G" . col . "|" +< +さらなる情報については以下を参照してください。 > + + :help cursor() + :help bar +< + *faq-25.8* +25.8. .vimrcファイルの中で環境変数の値をチェックするには? + +Vimスクリプト/関数の中で環境変数を使うには、環境変数名の前に'$'をつけます: > + + if $EDITOR == 'vi' + endif +< +さらなる情報については以下を参照してください。 > + + :help expr-env +< + *faq-25.9* +25.9. 環境変数が定義されているかどうかをチェックするには? + +exists()を使えば環境変数の存在をチェックすることができます。 > + + if exists("$MY_ENV_VAR") + endif +< +さらなる情報については以下を参照してください。 > + + :help exists() + :help expr-env +< + *faq-25.10* +25.10. Vimの組み込み関数を呼ぶには? + +":call"コマンドを使えばVimの組み込み関数を呼び出すことができます: > + + :call cursor(10,20) +< +":echo"を使えば関数の戻り値を表示することができます: > + + :echo char2nr('a') +< +":let"を使えば関数の戻り値を変数に代入することができます: > + + :let a = getline('.') +< +関数の戻り値をレジスタに保存するには、次のようにします: > + + :let @a = system('ls') +< +上のコマンドは'ls'コマンドの戻り値をレジスタ'a'に保存します。 + +訳註: 上のコマンドは外部プログラム'ls'の標準出力への出力をレジスタに保存する。 + +さらなる情報については以下を参照してください。 > + + :help :call + :help :echo + :help :let + :help :let-register + :help user-functions + :help usr_41.txt +< + *faq-25.11* +25.11. Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対して + ユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマンドがVim + の標準の機能を果たすようにするには? + +スクリプト中でノーマルモードコマンドを使うときは"normal!"を使えばよいでし +ょう。これはノーマルモードコマンドの標準の機能を使い、ユーザ定義マッピングは作 +用しません。 + +さらなる情報については以下を参照してください。 > + + :help :normal +< + *faq-25.12* +25.12. ビジュアルモードで現在選択されているテキストを変数やレジスタに入れるに + は? + +ビジュアルモードで選択されているテキストを変数に取得するには、そのテキストをレ +ジスタにヤンクし、その後そのレジスタの中身を変数に代入します: > + + :normal! gvy + :let myvar = @" +< +上のコマンドはビジュアルモードで選択されたテキストを変数"myvar"にコピーします。 + +次のコマンドを使うこともできます: > + + :normal! gv"*y +< +上のコマンドは、gvで最後にビジュアルモードで選択されたテキストを選択し、コマン +ドの残りの部分で選択されたテキストをレジスタ*(クリップボード)にコピーします。 +別の方法としては、'guioptions'にフラグ'a'をセットして、選択されたテキストを自 +動的にレジスタ*に入れるようにしてもよいでしょう。 +これをマップの一部分として実行するには、以下のようなコマンドを使います: > + + :vmap <F3> "*y:call ... +< +さらなる情報については以下を参照してください。 > + + :help gv + :help :normal + :help let-@ + :help quotestar + :help clipboard + :help registers +< + *faq-25.13* +25.13. 変数'myvar'にテキストが入っています。この変数を":s"中で使って'mytext' + というテキストを置換したいのですが、どうすればいいですか? + +"execute"コマンドを使えば変数を評価することができます: > + + :execute '%s/mytext/' . myvar . '/' +< +さらなる情報については以下を参照してください。 > + + :help :execute +< +置換コマンド中で変数を評価するには"\="を使うこともできます: > + + :%s/mytext/\=myvar/ +< +さらなる情報については以下を参照してください。 > + + :help sub-replace-special +< + *faq-25.14* +25.14. 変数"bno"がバッファ番号を保持しています。この変数を使って対応するバッフ + ァを開くには? + +":buffer"は変数名を受け付けません。このコマンドはバッファ番号かバッファ名のみ +を受け付けます。変数を評価して対応する値にするために":execute"を使わねばなりま +せん。例: > + + :execute "buffer " . bno +< +さらなる情報については以下を参照してください。 > + + :help :execute +< + *faq-25.15* +25.15. オプションの値を変数に保存するには? + +オプション名の前に'&'をつけると、"let"でそのオプションの値を変数に代入すること +ができます。例えば、オプション'textwidth'の値を変数"old_tw"に保存するには次の +コマンドを使います: > + + :let old_tw = &tw +< +その逆、つまり'textwidth'に"old_tw"に保存された値をセットするには次のコマンド +を使います: > + + :let &tw = old_tw +< +さらなる情報については以下を参照してください。 > + + :help expr-option + :help let-option +< + *faq-25.16* +25.16. 関数の中でテキストをコピーし、バッファに挿入しました。関数の中でそのテ + キストをインデントするには? + +次のコマンドを使えば、たった今挿入したテキストを整形することができます: > + + :normal '[='] +< +さらなる情報については以下を参照してください。 > + + :help '[ + :help '] + :help = + :help :normal +< + *faq-25.17* +25.17. Vimスクリプト中でカーソル下の文字を取得するには? + +getline()と文字列のインデクス[]を使います: > + + :echo getline(".")[col(".") - 1] +< +上のコマンドにおいてgetline(".")は現在行のテキストを返します。文字列のインデク +スは0から始まり、"string[index]"という記法で文字列中からインデクスを指定して1 +つの文字を取得できます。col(".")はカーソル位置の桁を返します。ここでは文字列中 +の目的の文字を取得するために調整されています。 + +別の方法としては、以下の一連のコマンドによってもカーソル下の文字を取得でき +ます: > + + normal! vy + let ch=@" +< +注意: 上のコマンドはマーク'<と'>を変更します。 + +さらなる情報については以下を参照してください。 > + + :help getline() + :help col() + :help expr-[] +< + *faq-25.18* +25.18. 拡張子を除いたカレントファイル名を取得するには? + +拡張子を除いたカレントファイル名を取得するにはこうします: > + + :echo expand("%:r") +< +いくつかのコマンドでは、ファイル名の修飾子を直接使うことができます: > + + :cd %:p:h + :!gcc -o %:r.o % +< +さらなる情報については以下を参照してください。 > + + :help filename-modifiers + :help expand() + :help cmdline-special + :help fnamemodify() +< + *faq-25.19* +25.19. カレントファイルのベース名(basename)を取得するには? + +ファイル名修飾子:tを使えばカレントファイルのベース名(basename)を取得することが +できます: > + + :echo expand("%:t") +< +さらなる情報については以下を参照してください。 > + + :help filename-modifiers +< + *faq-25.20* +25.20. 関数の結果をカレントバッファに挿入するには? + +インサートモードにおいて次のコマンドで関数の戻り値を挿入することができます: > + + <C-R>=MyFunc() +< +注意: これは関数の戻り値を挿入するだけです。 + +さらなる情報については以下を参照してください > + :help i_CTRL-R + :help i_CTRL-R_CTRL-R + :help i_CTRL-R_CTRL-O + :help expression +< + *faq-25.21* +25.21. 関数の中で外部プログラムを呼ぶには? + +関数の中で外部プログラムを呼ぶにはいくつかの方法があります。組み込み関数 +system()を使うと、外部コマンドを起動し、出力を取得することができます: > + + :let output = system("ls") +< +また、exコマンド"!"を使って外部コマンドを実行することもできます。 + +さらなる情報については以下を参照してください。 > + + :help system() + :help :! + :help 10.9 +< + *faq-25.22* +25.22. ":!"で実行したプログラムが返すステータス値を取得するには? + +組み込み変数v:shell_errorを使えば最後に実行したシェルコマンドが返すステータス +値を取得することができます。 + +さらなる情報については以下を参照してください。 > + + :help v:shell_error +< + *faq-25.23* +25.23. カレントバッファが変更されているかどうかを知るには? + +オプション'modified'の値を見ればカレントバッファが変更されているかどうかを知る +ことができます: > + + :set modified? +< +スクリプト中でも'modified'の値を知ることができます: > + + if &modified + echo "File is modified" + endif +< +さらなる情報については以下を参照してください。 > + + :help 'modified' +< + *faq-25.24* +25.24. スクリプト中でノーマルコマンドの中に改行文字を使いたいです。改行文字を + 指定するには? + +":execute"を使えばノーマルモードコマンド中で特殊文字を使うことができます: > + + :execute "normal \<CR>" + :execute "normal ixxx\<Esc>" +< +さらなる情報については以下を参照してください。 > + + :help :execute + :help expr-quote +< + *faq-25.25* +25.25. スクリプト中で長い行を次行に継続するには? + +スクリプト中で長い行を継続するには、次行の最初にバックスラッシュ("\")をつけま +す。例: > + :set comments=sr:/*,mb:*,el:*/, + \://, + \b:#, + \:%, + \n:>, + \fb:- +< +訳註: 原文には例が入っていなかったので:helpからコピペしてきた。 + +さらなる情報については以下を参照してください。 > + + :help line-continuation +< + *faq-25.26* +25.26. "execute 'echo Myfunc()'"として自作の関数を呼ぼうとすると、カーソルがカ + レントバッファの先頭に移動してしまいます。なぜ? + +":execute"は引数で指定されたノーマルコマンドを実行します。次のコマンドでは: > + + :execute "echo Myfunc()" +< +"echo Myfunc()"は0を返します。":execute"コマンドはノーマルモードコマンドの"0" +を実行します。これはカーソルをファイルの先頭に移動させます。関数を呼ぶには +":execute"でなく":call"を使ってください: > + + :call Myfunc() +< + +訳註: このQ&Aは間違っている? +訳註: :executeはexコマンドを実行する。 +訳註: 1番目のコマンドはMyfunc()を呼んでその戻り値をechoするはず。 + +さらなる情報については以下を参照してください。 > + + :help :call + :help :execute + :help :echo + :help user-functions + :help 41.5 + :help 41.6 +< + *faq-25.27* +25.27. レジスタの中身を実行するには? + +レジスタ(例えばレジスタ'a'とする)にVimのコマンドをヤンクしてある場合、そのレジ +スタの中身を次のコマンドで実行することができます: > + + :@a +< +または > + :exe @a +< + +さらなる情報については以下を参照してください。 > + + :help :@ +< + *faq-25.28* +25.28. 関数やマップを呼んだ後に'u'キーを押してアンドゥするとその関数/マップに + よってなされた変更全てをアンドゥします。なぜ? + +関数やマップを呼ぶと、その関数/マップによってなされた操作は1つの操作として扱 +われます。'u'を押して最後の操作をアンドゥすると、関数/マップによってなされた +変更は全て元に戻ります。 + +さらなる情報については以下を参照してください。 > + + :help undo-redo + :help map-undo +< + *faq-25.29* +25.29. s:つきで定義された関数(スクリプトローカル関数)を別のスクリプト/プラグ + インから呼ぶには? + +関数名へのプリフィックスs:は関数をスクリプトローカルにするために使われます。 +スクリプトローカル関数はそのスクリプト中からのみ呼ぶことができ、他のスクリプト +からは呼び出せません。他のプラグイン/スクリプトから呼び出せる関数を定義するに +は、s:をつけずに関数を定義します。 + +さらなる情報については以下を参照してください。 > + + :help script-variable + :help script-local + :help :scriptnames +< + *faq-25.30* +25.30. 読み込んだスクリプトをun-sourceするには?言い替えると、スクリプトを読み + 込んだことによって実行されたコマンドを全て戻すには? + +スクリプトを読み込んだことによって実行されたコマンドを全て戻すことはできませ +ん。 + +さらなる情報については以下を参照してください。 > + + :help :source +< + +============================================================================= + *faq-26* +SECTION 26 - プラグイン + + *faq-26.1* +26.1. ファイル形式ごとに異なるオプションを設定するには? + +ファイルタイププラグインを作れば、ファイル形式ごとに異なるオプションを設定する +ことができます。まず最初に次のコマンドでファイルタイププラグインを有効にしてく +ださい: > + + :filetype plugin on +< +ファイルタイププラグインは、Vimでその形式のファイルを作成したり開く度に読み込 +まれるVimスクリプトです。例えば、Cプログラム(ファイルタイプ'c')を編集するとき +は常に'textwidth'を80にするには、次のファイルのどれかを作ります: > + + ~/.vim/ftplugin/c.vim (Unix) + %HOME%\vimfiles\ftplugin\c.vim (Windows) +< +そしてその中に次のテキストを書いておきます: > + + setlocal textwidth=80 +< +自動コマンドを使っても特定のファイル形式を編集するときに特定のオプションを設定 +することができます。例えば、*.txtファイルを編集するときだけ'textwidth'を75に設 +定するには次のコマンドを使います: > + + autocmd BufRead *.txt setlocal textwidth=80 +< +さらなる情報については以下を参照してください。 > + + :help filetype-plugin + :help add-filetype-plugin + :help autocmd + :help 40.3 +< + + *faq-26.2* +26.2. プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイルタ + イププラグインをダウンロードしました。Vimがこれらのファイルを読み込むように + するには、どこにコピーすればいいですか? + +ランタイムファイル(プラグイン、構文ファイル、インデントファイル、カラースキー +ム、ファイルタイププラグインなど)は'runtimepath'で指定されたディレクトリのうち +どれかの下に置きます。'runtimepath'の現在の値を知るには次のコマンドを使います +: > + + :set runtimepath +< +Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになります。MS-Windowsシス +テムでは、通常これは$VIM\vimfilesまたは$HOME\vimfilesディレクトリになります。 +ランタイムファイルはその種類によって、ランタイムディレクトリ下の決まったディレ +クトリに置かねばなりません。そのディレクトリの名前は以下のとおりです: > + + colors/ - カラースキームファイル + compiler/ - コンパイラファイル + doc/ - ドキュメント + ftplugin/ - ファイルタイププラグイン + indent/ - インデントスクリプト + keymap/ - キーマップファイル + lang/ - メニューの翻訳 + plugin/ - プラグインスクリプト + syntax/ - 構文ファイル + tutor/ - vimtutorのファイル +< +さらなる情報については以下を参照してください。 > + + :help your-runtime-dir + :help 'runtimepath' + :help :runtime +< + *faq-26.3* +26.3. 既存のファイルタイププラグインを拡張するには? + +ディレクトリ$VIMRUNTIME/after/ftpluginまたは$VIMRUNTIME/ftpluginの下にファイル +を作ることによって、既存のファイルタイププラグインを拡張することができます。 +そのファイルの名前は既存のファイルタイププラグインの名前と同じにすべきです。 +この新しいファイルにあなたの拡張を書き加えます。 + +そのファイルをafter/ftpluginディレクトリに置くと、Vimはまず既存のファイルタイ +ププラグインを読み込み、その後にその新しいファイルを読み込みます。そのファイル +を$VIMRUNTIME/ftpluginディレクトリに置くと、Vimはまずその新しいファイルを読み +込み、その後に既存のファイルタイププラグインを読み込みます。 + +さらなる情報については以下を参照してください。 > + + :help ftplugin-overrule + :help filetype-plugin + :help add-filetype-plugin + :help 'runtimepath' +< + *faq-26.4* +26.4. プラグインの読み込みをオフにするには? + +'loadplugins'をオフにすればプラグインを読み込まなくすることができます: > + + :set noloadplugins +< +コマンドライン引数"--noplugin"を指定してもプラグインの読み込みを止めさせること +ができます: > + + $ vim --noplugin +< +さらなる情報については以下を参照してください。 > + + :help 'loadplugins' + :help --noplugin + :help load-plugins +< + *faq-26.5* +26.5. ファイルタイププラグインの読み込みをオフにするには? + +デフォルトではvimはファイルタイププラグインを読み込みません。ファイルタイププ +ラグインを読み込むように設定するには次のコマンドを使います: > + + filetype plugin on +< +ファイルタイププラグインの読み込みをオフにするにはこうします: > + + filetype plugin off +< +さらなる情報については以下を参照してください。 > + + :help filetype-plugin-on + :help filetype-plugin-off + :help :filetype +< + *faq-26.6* +26.6. 全てのファイル形式に対し、グローバルのファイルタイププラグインでなされる + 設定を上書きするには? + +ファイルタイプイベントで引き起こされる自動コマンドを使います: > + + au Filetype * set formatoptions=xyz +< +これは少なくともあなたのvimrc中の"filetype on"以降に行わねばなりません。あなた +の"myfiletypefile"ファイル中で行うのがベストです。そうすればこれは必ず最後に実 +行されるようになります。 + +特定のファイルタイプに対して設定を上書きしたいなら、~/.vim/after/ftpluginに元 +のファイルと同盟のファイルを作ります。例えば、ファイルタイププラグインc.vimの +設定を上書きするには、~/.vim/after/ftpluginにc.vimを作り、そこに好みの設定を書 +き込みます。 + +さらなる情報については以下を参照してください。 > + + :help ftplugin-overrule + :help ftplugins + :help myfiletypefile +< + *faq-26.7* +26.7. Vimのディレクトリブラウザプラグインを無効にするには? + +ディレクトリブラウザプラグインを無効にするには、次の行を.vimrcに加えます: > + + let loaded_explorer = 1 +< +さらなる情報については以下を参照してください。 > + + :help file-explorer +< + *faq-26.8* +26.8. 特定のパターンにマッチする名前のファイルや拡張子に応じてファイルタイプオ + プションを設定するには? + +特定のパターンにマッチする名前のファイルに対しては、自動コマンドを使って +'filetype'を設定します。例えば、拡張子'.x'を持つファイル全てに対して +'filetype'を'c'にするには次の自動コマンドを使います: > + + autocmd! BufRead,BufNewFile *.x setfiletype c +< +よりよい方法は、filetype.vimファイルを~/.vimディレクトリ(または'runtimepath'で +指定されたディレクトリのどれか)に作ることです。そして次の行を書き加えます: > + + " my filetype file + if exists("did_load_filetypes") + finish + endif + augroup filetypedetect + au! BufRead,BufNewFile *.x setfiletype c + augroup END +< +さらなる情報については以下を参照してください。 > + + :help new-filetype + :help 43.2 + :help :setfiletype +< + +============================================================================= + *faq-27* +SECTION 27 - プログラムファイルを編集する + + *faq-27.1* +27.1. C/C++のファイルに対してオートインデントを有効化するには? + +ファイルタイプに基づくインデントを有効化するには次を実行します: > + + :filetype indent on +< +自動Cインデントだけを有効化したいならこうします: > + + :set cindent +< +さらなる情報については以下を参照してください。 > + + :help 'cindent' + :help C-indenting + :help filetype +< + *faq-27.2* +27.2. C/C++のファイルに対するインデントをカスタマイズするには? + +'cinoptions', 'cinkeys', 'cinwords'の値を変えれば、Cインデントをカスタマイズす +ることができます。 + +さらなる情報については以下を参照してください。 > + + :help 'cindent' + :help 'cinoptions' + :help 'cinkeys' + :help 'cinwords' + :help C-indenting + :help cinoptions-values + :help 'smartindent' +< + *faq-27.3* +27.3. オートインデント機能を無効化するには? + +デフォルトではオートインデントは無効になっています。.vimrcか.gvimrcでオートイ +ンデントを有効化したのでしょう。オートインデントを無効化するには、 > + + :filetype indent off +< +または > + + :set nocindent +< +とします。また、以下のオプションの設定を確認してください: > + + :set autoindent? + :set smartindent? + :set indentexpr? +< +さらなる情報については以下を参照してください。 > + + :help 'cindent' + :help filetype-indent-off + :help 'autoindent' + :help 'smartindent' + :help 'indentexpr' +< + *faq-27.4* +27.4. オートインデントの際に挿入されるスペースの数を変えるには? + +'shiftwidth'オプションを変えると、オートインデントに使われるスペースの数を変え +ることができます: > + + :set shiftwidth=4 +< +さらなる情報については以下を参照してください。 > + + :help 'shiftwidth' +< + *faq-27.5* +27.5. Cプログラムを編集しています。マクロ定義や変数を表示するには? + +コマンド[dでマクロ定義を表示でき、[iで変数定義を表示することができます。 + +さらなる情報については以下を参照してください。 > + + :help [d + :help [i + :help include-search + :help 29.4 + :help 29.5 +< + *faq-27.6* +27.6. Cプログラムを編集しています。ブロックの内側から、そのブロックの開始位置 + や終了位置にジャンプするには? + +コマンド[{でそのブロックの始まりにジャンプし、]}でそのブロックの終わりにジャン +プします。 + +さらなる情報については以下を参照してください。 > + + :help [{ + :help ]} + :help various-motions +< + *faq-27.7* +27.7. C++ファイルで"//"コメントが自動的に挿入されるのを止めさせるには? + +オプション'comments'の値を修正すればC++のコメント文字("//")が自動的に挿入され +るのを止めさせることができます。例: > + + :set comments=sr:/*,mb:*,el:*/ +< +さらなる情報については以下を参照してください。 > + + :help 'comments' + :help format-comments +< + *faq-27.8* +27.8. 一連の行の行頭にコメント文字'#'をつけ加えるには? + +最初にビジュアル矩形モードを使って(CTRL-V)その行を全て選択します。'I'を押して +行頭に文字の挿入を開始します。コメント文字を挿入し、<Esc>を押してインサートモ +ードを終了します。すると入力された文字が選択された全ての行の行頭に挿入されま +す。 + +さらなる情報については以下を参照してください。 > + + :help visual-block + :help blockwise-operators + :help v_b_I +< + *faq-27.9* +27.9. Cのソースファイルに対応する名前のヘッダファイルを開くには? + +次のコマンドを使うと、Cソースファイルに対応する名前のヘッダファイルを開くこと +ができます: > + + :e %:t:r.h +< +次のコマンドで、そのファイルを分割したウィンドウで開くこともできます: > + + :sp %:t:r.h +< +上のコマンドで、パーセント記号はカレントファイルの名前に展開されます。修飾子 +":t"はファイル名の末尾(tail)に変換します。修飾子":r"はファイル名のルート(root) +に変換します。そして.hをつけて、最終的にヘッダファイル名が得られます。 + +別のアプローチとしては、次のコマンドを使います: > + + :sfind %:t:r.h +< +このコマンドはヘッダファイルを'path'で指定されたディレクトリの中から探します。 + +さらなる情報については以下を参照してください。 > + + :help cmdline-special + :help filename-modifiers + :help :sfind + :help 'path' +< + *faq-27.10* +27.10. コメントを入力しているとき、自動的にコメント文字を挿入するには? + +コメントを入力しているとき自動的にコメント文字を挿入するには、'formatoptions' +にフラグ'r'と'o'を加えます。 > + + :set formatoptions+=ro +< +コメントを'textwidth'によって自動的に折り返すためにフラグ'c'をつけたり、コメン +トを"gq"コマンドで成形するためにフラグ'q'をつけてもよいでしょう: > + + :set formatoptions=croq +< +さらなる情報については以下を参照してください。 > + + :help 30.6 + :help format-comments + :help 'comments' + :help fo-table +< + +============================================================================= + *faq-28* +SECTION 28 - QuickFix + + *faq-28.1* +28.1. Vimの中からプログラムをビルドするには? + +":make"を使うとVim中からプログラムをビルドすることができます。":make"は +'makeprg'で指定されたプログラムを起動します。 + +さらなる情報については以下を参照してください。 > + + :help 30.1 + :help make_makeprg + :help 'makeprg' + :help 'makeef' + :help :make + :help quickfix + *faq-28.2* +28.2. Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパイル + してエラーメッセージを出力します。しかしコンパイルが終わると表示が消え + てしまい、エラーメッセージをもう一度見るには:clistとしなければなりませ + ん。このエラーメッセージを見るのに他の方法はありませんか? + +":copen"や":cwindow"を使うと、コンパイラの出力を保持しているQuickFixウィンド +ウを開くことができます。そのウィンドウの中でエラーの行を選択すると、ソースコー +ド中の対応する行にジャンプすることができます。 + +さらなる情報については以下を参照してください。 > + + :help :copen + :help :cwindow + :help quickfix +< + +============================================================================= + *faq-29* +SECTION 29 - 折り畳み + + *faq-29.1* +29.1. 折り畳みの機能を拡張するには? + +'foldexpr'を使えばユーザ指定の関数を使って折り畳みを作ることができます。 +例えば、以下の形のサブルーチンを1行に折り畳むには: > + + sub foo { + my $barf; + $barf = 3; + return $barf; + } +< +次のコマンドを使うことができます: > + + set foldmethod=expr + set foldexpr=MyFoldExpr(v:lnum) + fun! MyFoldExpr(line) + let str = getline(a:line) + if str =~ '^sub\>' + return '1' + elseif str =~ '^}' + return '<1' + else + return foldlevel(a:line - 1) + endif + endfun +< +さらなる情報については以下を参照してください。 > + + :help 'foldexpr' + :help fold-expr +< + *faq-29.2* +29.2. 'foldmethod'をセットして折り畳みを有効化すると、全ての折り畳みが閉じてし + まいます。これを防ぐには? + +'foldlevelstart'をある値にセットすると、折り畳みがその値以上になったときのみ閉 +じさせることができます。 > + + :set foldlevelstart=99 +< +さらなる情報については以下を参照してください。 > + + :help 'foldlevelstart' + :help 'foldlevel' + :help fold-foldlevel +< + *faq-29.3* +29.3. ファイルの編集を開始したときにいくつの折り畳みが開かれた状態にするかをコ + ントロールするには? + +'foldlevelstart'を修正すれば、ファイルの編集を開始したときにいくつの折り畳みを +開くかをコントロールすることができます。全ての折り畳みを閉じた状態で編集を開始 +するにはこうします: > + + :set foldlevelstart=0 +< +さらなる情報については以下を参照してください。 > + + :help 'foldlevelstart' +< + *faq-29.4* +29.4. マウスを使って折り畳みを開閉するには? + +折り畳みを開閉するには、一番左の桁に表示された+と-という文字をクリックします。 +それが機能するためには'foldcolumn'を0より大きい値に設定していなければなりませ +ん: > + + :set foldcolumn=2 +< +さらなる情報については以下を参照してください。 > + + :help 'foldcolumn' +< + + *faq-29.5* +29.5. 閉じた折り畳みの表示に使われるテキストを変更するには? + +'foldtext'によって閉じた折り畳みの表示に使われるテキストを変更することができま +す。 + +さらなる情報については以下を参照してください。 > + + :help 'foldtext' + :help fold-foldtext + :help 'fillchars' +< + *faq-29.6* +29.6. Vimを終了・再起動するとき、手動で作った折り畳みを保存・復元するには? + +":mkview"を使えば手動で作った折り畳みを保存することができます。その後、 +":loadview"でその折り畳みを復元することができます。これが機能するためには +'viewoptions'が"folds"を含んでいなければなりません。 + +さらなる情報については以下を参照してください。 > + + :help 28.4 + :help :mkview + :help :loadview + :help 'viewoptions' + :help 'viewdir' + :help :mksession + :help 'sessionoptions' +< + +============================================================================= + *faq-30* +SECTION 30 - 外部プログラムとの連携 + + *faq-30.1* +30.1. Vimのウィンドウの中でシェルを起動することはできますか? + +現在のところ、Vimにはウィンドウの中でシェルや外部プログラムを実行する機能はあ +りません。 + +さらなる情報については以下を参照してください。 > + + :help shell-window +< +代替手段としては、Unixの"screen"ユーティリティか"splitvt"プログラムを試してみ +てもよいでしょう。 + +また、Brian Sturkによるvimshプラグインを使うとVimウィンドウの中でシェルを起動 +することができます。これを使うためには、VimをPythonインターフェイス機能つきで +ビルドしなければなりません。さらなる情報については以下のURLを訪れてください: > + + http://vim.sourceforge.net/scripts/script.php?script_id=165 +< + *faq-30.2* +30.2. カーソル下の単語を外部プログラムに渡すには? + +特別なキーワード<cword>を使うと、カーソル下の単語を外部コマンドに渡すことがで +きます。例: > + + :!dict <cword> +< +さらなる情報については以下を参照してください。 > + + :help <cword> +< + *faq-30.3* +30.3. シェルコマンドの出力をVimのバッファに取り込むには? + +":r !"を使えばシェルコマンドの出力をVimのバッファに取り込むことができます: > + + :r !ls +< +さらなる情報については以下を参照してください。 > + + :help :r! +< + *faq-30.4* +30.4. カレントバッファの中身を外部プログラムにパイプで渡して、そのプログラムの + 出力でバッファを置き換えるには? + +:!を使えばカレントバッファの中身を外部プログラムにパイプで渡して、そのコマンド +の出力でバッファの中身を置き換えることができます。例えば、Unixのソートコマンド +を使ってカレントバッファの中身をソートするには、次のようにします: > + + :%!sort +< +10から20行目だけををソートするなら次のコマンドを使います: > + + :10,20!sort +< +また、バッファを外部プログラムにパイプしたいが、バッファを出力で書き換えたく内 +場合はこうします: > + + :w !sort +< +上のコマンドはバッファ全体をsortコマンドにパイプします。 +注意: 'w'と'!'の間のスペースは必ず必要です。ある範囲の行だけをパイプするにはこ +うします: > + + :10,20w !sort +< +上のコマンドは10から20行目をsortコマンドにパイプします。 + +さらなる情報については以下を参照してください。 > + + :help :range! + :help 10.9 + :help :w_c +< + *faq-30.5* +30.5. ファイル中のあるセクションをソートするには? + +あるセクションをUnixの"sort"ユーティリティにパイプしてそのファイルをソートする +ことができます。例: > + + :5,100!sort +< + +ビジュアルモードで選択した矩形範囲だけをソートするには、次のVim onlineのtipを +参照してください: + +http://vim.sourceforge.net/tips/tip.php?tip_id=588 + + *faq-30.6* +30.6. Vimとslrnといっしょに使うステップ・バイ・ステップガイドはありますか? + +VimとSlrnをいっしょに使うための情報については、以下のリンクを参照してください: +> + + http://thingy.apana.org.au/~fun/slrn/ +< + *faq-30.7* +30.7. Vimをページャとして使うには? + +シェルスクリプト$VIMRUNTIME/macros/less.shを使うとVimをページャとして使うこと +ができます。これはVimの標準ディストリビューションの一部として同梱されていま +す。このシェルスクリプトは、lessライクなキーバインディングを実現するために +Vimスクリプト$VIMRUNTIME/macros/less.vimを使用しています。 + +さらなる情報については以下を参照してください。 > + + :help less +< + *faq-30.8* +30.8. Vimの中でUnixのmanページを見るには? + +Vim標準ディストリビューションに同梱のman.vimを使えば、Vimの中でUnixのmanページ +を見ることができます。このプラグインを使うには、以下の行をvimrcファイルに追加 +してください: > + + runtime ftplugin/man.vim +< +また、Kキーを押すと、カーソル下のキーワードとともに'keywordprg'で指定された +プログラムを起動することができます。デフォルトでは'keywordprg'はカーソル下の +キーワードのmanを起動するように設定されています。 + +さらなる情報については以下を参照してください。 > + + :help man-plugin + :help K + :help 'keywordprg' +< + *faq-30.9* +30.9. Vimのdiff機能で使われるdiffコマンドを変更するには? + +デフォルトではVimのdiff機能は'diff'コマンドを使います。'diffexpr'オプションを +変更すればこれを変えることができます。 + +さらなる情報については以下を参照してください。 > + + :help diff-diffexpr + :help 'diffexpr' +< + *faq-30.10* +30.10. 折り畳みなしでdiffモードを使うには? + +次のコマンドラインを実行すると、2つのファイル名とともに起動し、折り畳み +なしでdiffモードに入ります: > + + $ vim -o file1 file2 "+windo set diff scrollbind scrollopt+=hor nowrap" +< +垂直ウィンドウ分割の方がいいなら、"-o"を"-O"に置き換えてください。 + +さらなる情報については以下を参照してください。 > + + :help vimdiff +< + +============================================================================= + *faq-31* +SECTION 31 - GUIのVIM + + *faq-31.1* +31.1. バッファ固有のメニューを作るには? + +バッファ固有のメニューという機能はVimのTODOリストにあります。今のところは、 +Michael Geddesのプラグインbuffermenu.vimを試してみてください: > + + http://vim.sourceforge.net/scripts/script.php?script_id=246 +< + *faq-31.2* +31.2. GUIのVimで使われるフォントを変更するには? + +'guifont'を変更すればGUIのVimで使われるフォントを変更することができます。この +オプションの現在の値を表示するにはこうします > + + :set guifont? +< +ここで表示された値を.vimrcに書いておけば、Vimを再起動しても同じフォントを使う +ことができます。例えば、次の行を.vimrcに書くとAndale Monoフォントを使うように +なります。 > + + set guifont=Andale_Mono:h10:cANSI +< +Win32, GTK, Photon版のVimでは、次のコマンドでguifontを変える際に便利なダイアロ +グを起動することができます: > + + :set guifont=* +< +Vimのコマンドライン引数に-fontを使うと通常のテキストに使われるフォントを指定す +ることができます。 + +さらなる情報については以下を参照してください。 > + + :help 'guifont' + :help 'guifontset' + :help 'guifontwide' + :help font-sizes + :help -font + :help -boldfont + :help -italicfont + :help -menufont + :help -menufontset +< + *faq-31.3* +31.3. GUIのVimが起動したときのウィンドウの位置を指定するには? + +コマンドライン引数"-geometry"を指定すれば、GUIのVimのウィンドウの位置を指定す +ることができます。例: > + + $ gvim -geometry 80x25+100+300 +< +さらなる情報については以下を参照してください。 > + + :help 31.4 + :help -geom +< + *faq-31.4* +31.4. GVimに水平スクロールバーをつけるには? + +'guioptions'を修正すれば水平スクロールバーを有効化することができます: > + + :set guioptions+=b +< +さらなる情報については以下を参照してください。 > + + :help 'guioptions' + :help gui-horiz-scroll +< + *faq-31.5* +31.5. スクロールバーをデフォルトで左側に表示するようにするには? + +'guioptions'にフラグ'l'をつけるとスクロールバーが左側に出るようになります。 > + + :set guioptions+=l + :set guioptions-=r +< +さらなる情報については以下を参照してください。 > + + :help 'guioptions' + :help gui-scrollbars +< + *faq-31.6* +31.6. メニューバーを消すには? + +'guioptions'からフラグ'm'を除くとメニューバーが消えます: > + + :set guioptions-=m +< +さらなる情報については以下を参照してください。 > + + :help 'guioptions' +< + + *faq-31.7* +31.7. GVimを使っています。ALTキーと文字キーを押すとその文字で始まるメニューが + 選択されます。ALT-<key>の組合せを使いたいので、この挙動はやめてほしいで + す。どうすればいいですか? + +'winaltkeys'を使えばALTキーでメニュー項目を選択するのを無効にすることができま +す: > + + :set winaltkeys=no +< +さらなる情報については以下を参照してください。 > + + :help 'winaltkeys' + :help :simalt +< + *faq-31.8* +31.8. スクロールバーをドラッグしたとき、カーソル位置を動かさずにテキストをスク + ロールさせることは可能ですか? + +Vimの設計では、ノーマル・ビジュアル・選択・インサートモードにおいてカーソル位 +置は表示されている位置になければなりません。これはVimの修正なしには変更できま +せん。スクロールバーを使うと、カーソル位置は常に表示されている範囲に入るように +移動します。この問題を解決する別のアプローチはVimのマークを使うことです。maで +現在のカーソル位置をマークします。テキストをスクロールしたら`aで元の位置に戻 +ります。Vim Onlineに投稿された次の提案も試してみてください: > + + http://www.vim.org/tip_view.php?tip_id=320 +< +さらなる情報については以下を参照してください。 > + + :help mark-motions +< + *faq-31.9* +31.9. ":browse"を使ったときに特定のディレクトリから始めるようにするには? + +'browsedir'を設定すれば":browse"コマンドのデフォルトディレクトリを設定できま +す。 > + + :set browsedir='<your_dir>' +< +さらなる情報については以下を参照してください。 > + + :help 'browsedir' +< + *faq-31.10* +31.10. ファイルがVimの外部で変更されたときなど、問い合わせがあるとき、GUIのダ + イアログボックスが表示されます。コンソールのダイアログボックスが出るよ + うにするには? + +'guioptions'にフラグ'c'を含めれば、GUIダイアログの代わりにコンソールダイアログ +を使うようになります: > + + :set guioptions+=c +< +さらなる情報については以下を参照してください。 > + + :help 'guioptions' +< + *faq-31.11* +31.11. GVimをアプリケーションxxx用のエディタとして使っています。アプリケーショ + ンxxxがGVimを起動すると、コントロールがすぐにアプリケーションxxxに戻っ + てしまいます。Vimを終了したとき初めてアプリケーションxxxにコントロール + が戻るようにGVimを起動するには? + +コマンドラインオプション'-f' (foreground)をつけてGVimを起動します: > + + $ gvim -f +< +デフォルトではGVimはそれを起動したプログラムから切り離されます。'-f'をつけると +GVimはそれを起動したプログラムから切り離されなくなります。 + +さらなる情報については以下を参照してください。 > + + :help gui-fork + :help -f +< + *faq-31.12* +31.12. なぜ、システムにインストールされているフォント全てが「フォントを選ぶ」 + ダイアログに現れないのですか? + +Vimは等幅フォントのみサポートしています。プロポーショナルフォントはサポートし +ていません。「フォントを選ぶ」ダイアログには等幅フォントだけが表示されます。 + +さらなる情報については以下を参照してください。 > + + :help font-sizes + :help 'guifont' +< +31.13. コマンドラインモードでマウスを使うには? + +コマンドラインモードでマウスを使うには、オプション'mouse'にフラグ'c'をつけま +す: > + + :set mouse+=c +< +さらなる情報については以下を参照してください。 > + + :help mouse-using + :help gui-mouse + :help 09.2 +< + *faq-31.14* +31.14. テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコピーし + たテキストがペーストされてしまいます。この挙動を無効にするには? + +マウスの中央ボタンを<Nop>にマップすると中央ボタンを無効化できます: > + + :map <MiddleMouse> <Nop> + :map! <MiddleMouse> <Nop> +< +さらなる情報については以下を参照してください。 > + + :help gui-mouse-mapping + :help <Nop> +< +31.15. GVimウィンドウの位置とサイズを変更するには? + +コマンド"winpos"を使えばVimウィンドウの位置を変えることができます。ウィンドウ +のサイズを帰るには、オプション"lines"と"columns"を変更します。 + +例えば、次のコマンドはGVimウィンドウのX,Y座標を50,50に、行数を50に、桁数を80に +セットします。 > + + :winpos 50 50 + :set lines=50 + :set columns=80 +< +":winpos"への引数はVimウィンドウのピクセル座標を指定します。オプション'lines' +と'columns'は行数と文字数を指定してウィンドウの高さと幅を設定します。 + +さらなる情報については以下を参照してください。 > + + :help 31.4 + :help :winpos + :help 'lines' + :help 'columns' + :help GUIEnter +< + +============================================================================= +SECTION 32 - UNIX上のVim + + *faq-32.1* +32.1. xtermでVimを実行しています。CTRL-Sを押すとVimがフリーズします。 + どうすればいいですか? + +多くのターミナルエミュレータと本物のターミナルドライバはCTRL-Sを受け取るとデー +タの受信を停止します。早すぎて見えない画面のスクロールを止めるためです(昔の端 +末で、バッファがオーバーフローしないようにコンピュータを遅くするためでもありま +した)。CTRL-Qを押すと出力を再開します。 + +CTRL-Sを押すとターミナルドライバは出力データの送信を停止します。結果としてVim +がハングしたように見えます。CTRL-Qを押すと全て通常に戻るでしょう。 + +'stty'コマンドを使うとターミナルドライバのフローコントロールをオフにすることが +できます: > + + $ stty -ixon -ixoff +< +または、次のコマンドでターミナルのフローコントロールに使うキーを変更することが +できます: > + + $ stty stop <char> + $ stty start <char> +< + *faq-32.2* +32.2. 画面の更新について奇妙な問題があります。これを解決するには? + +xtermのような適切なターミナルエミュレータと正しいTERM設定(TERM=xterm)と正しい +terminfo/termcapファイルを使わねばなりません。 +さらなる情報については以下を参照してください。 > + + :help 'term' +< + *faq-32.3* +32.3. Vimのターミナル/コンソール版を使っています。インサートモードでバックスペ + ースキーを押してもカーソルの前の文字が消えません。どう設定すれば良いです + か? + +Vimが正しいバックスペースのキーコードを受け取っているかどうか確かめてください。 +次のコマンドを試してみてください: > + + :fixdel +< +環境変数TERMが正しくターミナルの名前に設定されているかを確かめてください。 +'stty'コマンドを試してみてください: > + + $ stty erase ^H +< +ここで、^Hの文字を入力するにはCTRL-VとCTRL-Hを押してください。 + +さらなる情報については以下を参照してください。 > + + :help :fixdel + :help Linux-backspace + :help NetBSD-backspace +< + *faq-32.4* +32.4. xtermでVimを使っています。Vimを終了すると画面が元の状態に復元されます。 + これを無効化するには? + +xtermは「代替スクリーン」("alternate screen")という機能を持っています。この機 +能が有効になっていると、Vimは起動時と終了時にこの代替スクリーンに切り替えま +す。そのため、元の画面が復元されます。この機能を無効にするには次の行を.vimrcに +加えてください: > + + :set t_ti= t_te= +< +さらなる情報については以下を参照してください。 > + + :help restorescreen + :help xterm-screens +< + *faq-32.5* +32.5. Vimの起動にかなり時間がかかります。起動時間を最小化するには? + +これはおそらくVimがxtermのタイトルとXのクリップボードのためにXディスプレイを開 +いていることに関係しています。環境変数DISPLAYが正しいホストを指していることを +確認してください。次のコマンドを試してみてください: > + + $ vim -X +< +こうするとXディスプレイを開かなくなります。このコマンドラインオプションをつけ +るとXのクリップボードが使えなくなり、xtermのタイトルを変えられなくなります。 + +オプション'clipboard'を次のように変更することもできます: > + + :set clipboard=exclude:.* +< +こうするとコマンドライン引数-Xを使うのと同じ効果があります。 + +さらなる情報については以下を参照してください。 > + + :help -X + :help 'clipboard' +< + + *faq-32.6* +32.6. Unixのgvimでカーソルの点滅を止めるには? + +オプション'guicursor'を変更すればカーソルの点滅を止めることができます。 +例: > + + :set guicursor=a:blinkon0 +< +さらなる情報については以下を参照してください。 > + + :help 'guicursor' +< + *faq-32.7* +32.7. GTK Vimのメニューのフォントを変えるには? + +~/.gtkrcを修正すればGTK Vimのメニューのフォントを変更できます。例: > + + style "default" + { font ="smooth09" } + class "*" style "default" +< +最後の行が全てのウィジェットのフォントを変えています。 + +さらなる情報については以下を参照してください。 > + + :help gui-gtk +< + *faq-32.8* +32.8. Vimが<Ctrl-Z>でサスペンドするのを防ぐには? + + <Ctrl-Z>をマップすればサスペンドするのを防げます。いくつかの提案を示します: + +- <Ctrl-Z>をなにもしないようにする: > + + :map <C-Z> <Nop> +< +- <Ctrl-Z>でシェルが起動するようにする: > + + :map <C-Z> :shell<CR> +< +- <Ctrl-Z>でエラーメッセージが出るようにする: > + + :map <C-Z> :"suspending disabled<CR> +< +最後の例において、ダブルクォートはメッセージをステータスライン上に残すために必 +要になります。 + + *faq-32.9* +32.9. Vimを実行しているxtermをkillすると、Vimのプロセスが生き残り、多大なCPU時 + 間(99%)を食ってしまいます。なぜこうなるのですか? + +VimがPythonインターフェイスつきでビルドされるとこの問題が起こります。これは +PythonスレッドライブラリとVimに関する既知の問題です。この問題を解決するには、 +PythonインターフェイスなしでビルドされたVimを使用してください。 + +さらなる情報については以下を参照してください。 > + + :help +python + :help python +< + + *faq-32.10* +32.10. Unixターミナルで構文強調を使うには? + +構文強調を使う最も簡単で単純な方法はVimのGUI版(GVim)を使うことです。Vimのコン +ソール/ターミナル版で構文強調を使うには、カラー表示をサポートしているターミ +ナルエミュレータ(Xfree86 xtermやrxvtやdttermのようなもの)を使わねばなりませ +ん。ターミナルエミュレータが背景色と文字色を変えられるからといって、それが色を +変えるためのANSIエスケープシーケンスをサポートしているとは限りません。最新の +Xfree86 xtermはhttp://dickey.his.com/xterm/xterm.htmlからダウンロードできます。 +最新のrxvtはhttp://www.rxvt.orgからダウンロードできます。そのターミナルエミュ +レータ用の色をサポートしているterminfo/termcapをインストールしなければなりま +せん。また、環境変数TERMをそのターミナルの正しい名前に設定します。 + +色設定をテストするにはVimランタイムパッケージに付属のcolortest.vimスクリプトを +使うことができます。このスクリプトを使うには次のようにします: > + + :e $VIMRUNTIME/syntax/colortest.vim + :source % +< +さらなる情報については以下を参照してください。 > + + :help 06.2 + :help terminal-colors + :help termcap-colors + :help startup-terminal + :help xterm-color + :help colortest.vim +< + +============================================================================= + *faq-33* +SECTION 33 - MS-Windows上のVim + +33.1. MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。どうな + っているのですか? + +mswin.vimプラグインは、VimがMS-Windowsアプリケーションに似た挙動をするようにキ +ーマッピングとオプションを設定します。そのキーマップの一つがCTRL-Vで、これは +MS-Windowsアプリケーションではテキストをペーストします。そしてCTRL-Vでビジュア +ル矩形モードが始まらないようにします。mswin.vimではビジュアル矩形モードの開始 +がCTRL-Qにマップされています。ですのでCTRL-Vの代わりにCTRL-Qを使ってください。 + +さらなる情報については以下を参照してください > + + :help CTRL-V + :help CTRl-V-alternative + :help CTRL-Q + :help 10.5 +< + *faq-33.2* +33.2. CTRL-Yキーを押すとCTRL-Rのような動作をします。CTRL-YをCTRL-Yとして扱うよ + うに設定するには? + +CTRL-YからCTRL-Rへのマップはmswin.vim内で行われています。mswin.vimは標 +準のMS-Windowsアプリケーションと同じ挙動になるようにCTRL-Yをマップします。 +これは":help CTRL-Y"で説明されています。mswin.vim中のCTRL-Yをマップしている行 +をコメントアウトするか、.vimrc中でmswin.vimを読み込んでいる行を削除すればよい +でしょう。 + + + *faq-33.3* +33.3. 常にGVimのウィンドウを最大化して起動するには? + +"simalt"コマンドを使えばVimのウィンドウを最大化することができます。GUIEnter自 +動コマンドを使えば、起動時にVimのウィンドウを最大化することができます: > + + autocmd GUIEnter * simalt ~x +< +さらなる情報については以下を参照してください: > + + :help :simalt + :help GUIEnter + :help gui-win32-maximized +< + *faq-33.4* +33.4. なんらかの編集操作をするとVimがフリーズします。カーソルは空の四角形にな + ります。全然文字が入力できません。どうなっているのですか? + +もっとも考えられるのは、テキストをスクロールさせようとマウスホイールを使ったこ +とです。Vimでインテリマウスホイールを使うと問題が起こることが知られています。 +これを回避するには、ユニバーサルスクロール機能を無効にすることです。 + +さらなる情報については以下を参照してください > + + :help intellimouse-wheel-problems +< + + *faq-33.5* +33.5. Windows XPを使っています。最大化したGVimの表示速度がとても遅いです。表示 + の更新を早くするには? + +これは表示プロパティの'Smooth edges of screen fonts'を有効化しているために起こ +っている可能性があります。フォントスムージングをオフにするか、スムージング方法 +を"Standard"にしてください。 + +訳注: コントロールパネル[パフォーマンスオプション]の[スクリーンフォントの縁を +訳注: 滑らかにする]のことだと思う。 + + *faq-33.6* +33.6. VimをCygwin上で使うにあたって推奨される設定は? + +シェル関連の設定を次のようにするとよいかもしれません: > + + :set shellcmdflag=-c + :set shellquote= + :set shellslash " 展開に(バックスラッシュでなく)スラッシュを使う + :set shellxquote=\" + :set shell=d:\cygwin\bin\bash.exe " bashをシェルに使う + :set shellpipe=2>&1| tee + :set shellredir=>%s 2>&1 +< + +33.7. diffモードでGNU diffを使おうとしています。コマンドラインからdiffを使うと + うまく動くのですが、Vim内で使おうとすると動きません。どうすれば? + +VimでGNU diffを使うには問題があります。次のリンクにあるRon Aaronがビルドした +GNU diff.exeを使ってみてください: > + + http://www.mossbayeng.com/~ron/vim/builds.html +< + *faq-33.8* +33.8. Outlookで外部エディタにVimを使うことはできますか? + +COMアドイン"cubiclevim"を使えば、OutlookでVimを外部エディタとして使うことがで +きます。さらなる情報については以下のリンクを訪れてください: > + + http://sourceforge.net/projects/cubiclevim +< +注意: 現在これはMS-Office 2000とXPのみで動作します。 + + *faq-33.9* +33.9. HTMLファイルを編集するのにVimを使っています。現在開いているHTMLファイル + をインターネットエクスプローラでプレビューするには? + +以下のコマンドでできます: > + + :!start c:\progra~1\intern~1\iexplore.exe file://%:p<CR> +< + *faq-33.10* +33.10. VimをMicrosoft Visual Studioといっしょに使いたいです。どうすれば? + +VimのOLE版(例: gvim61ole.zip)をダウンロードして使用しなければなりません。 +このファイルはVimをVisual Studioといっしょに使うための手順を書いたファイルも含 +んでいます。 + +さらなる情報については以下を参照してください > + + :help MSVisualStudio +< + *faq-33.11* +33.11. どこに_vimrcと_gvimrcを置けばいいですか? + +_vimrcと_gvimrcは環境変数VIMで指定されたディレクトリの下に置きます。もし他のユ +ーザとシステムを共有しているなら、環境変数HOMEに設定したディレクトリに置くとよ +いでしょう。 + +さらなる情報については以下を参照してください > + + :help $HOME-use + :help _vimrc +< + *faq-33.12* +33.12. ファイルを保存する度に、そのファイルがVimの外部で変更されていると警告が + 出ます。なぜですか? + +ファイルを保存する際に毎回以下の警告メッセージが出るなら: > + + WARNING: The file has been changed since reading it!!! + Do you really want to write to it (y/n)? +< + +MS-Windowsでのサマータイム(daylight saving time)が始まる日についてのバグに関係 +している可能性があります。Vimはファイルを書き込んだ後にそのタイムスタンプを記 +憶しています。そして次の書き込みの直前に再びタイムスタンプを取得し、Vimの外部 +でファイルが変更されているかチェックします。これはサマータイムが始まる日を除け +ば正しく機能します。 + +この問題はサマータイムが始まる日の次の日には解消されます。 + +さらなる情報については以下を参照してください > + + :help W11 +< + +============================================================================= + *faq-34* +SECTION 34 - 印刷 + + *faq-34.1* +34.1. 全ての行に行番号をつけて印刷するには? + +'printoptions'をセットして":hardcopy"を使えばファイルを印刷できます: > + + :set printoptions=number:y + :hardcopy +< +さらなる情報については以下を参照してください > + + :help 'printoptions' + :help :hardcopy +< + *faq-34.2* +34.2. 構文強調の色をつけてファイルを印刷するには? + +":hardcopy"で構文強調の色をつけてファイルを印刷することができます。また、 +2html.vimスクリプトでファイルをHTMLをファイルに変換し、そのHTMLファイルを印刷 +することもできます。 + +さらなる情報については以下を参照してください > + + :help syntax-printing + :help 2html.vim + :help :hardcopy + :help printing +< + +============================================================================= + *faq-35* +SECTION 35 - Vimをソースからビルドする + + *faq-35.1* +35.1. Unixシステム上でVimをソースからビルドするには? + +UnixシステムでVimをソースからビルドするには、次のステップに従ってください: + +- ftp://ftp.vim.org/pub/vim/unixからソースとランタイムファイルのアーカイブ + (vim-##.tar.bz2)をダウンロードします。 +- bzip2とtarを使ってアーカイブを展開します: > + + $ bunzip2 -c <filename> | tar -xf - +< +- 'make'を実行してVimをデフォルト設定で調整し、ビルドします。 + configuration. +- 'make install'してVimをデフォルトのディレクトリにインストールします。 + +Vimの様々な機能を有効/無効にするには、'make'を実行する前に'configure'コマンド +でフラグを設定します。'configure'で指定できるオプションのリストを次のコマンド +で表示することができます: > + + $ configure -help +< +さらなる情報については以下を参照してください > + + :help install +< + *faq-35.2* +35.2. Unixでホームディレクトリなど、デフォルトのディレクトリ以外にVimをインス + トールするには? + +デフォルトのインストールディレクトリ以外にインストールするには、configureスク +リプトを実行する際に--prefixオプションでディレクトリを指定します。 > + + $ ./configure --prefix=/users/xyz +< +configureスクリプトに様々な引数を与えることによって、Vimの色々な機能を有効/無 +効にできます。それらのオプションについてのさらなる情報については、次を実行して +ください。 > + + $ ./configure --help +< +さらなる情報については以下を参照してください > + + :help install-home + :help install +< + *faq-35.3* +35.3. MS-Windowsシステム上でVimをソースからビルドするには? + +MS-Windowsシステム上では、Visual C++またはBorland C++またはMing GCCコンパイラ +またはcygwin gccコンパイラのどれかを使ってVimをビルドすることができます。 +MS-Windows用にVimをソースからビルドするには次のステップに従ってください: + +- ソース(vim##src.zip)、ランタイム(vim##rt.zip)とその他(vim-##-extra.tar.gz)の + アーカイブをftp://ftp.vim.org/pub/vim/pcからダウンロードします。 + +訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ +訳注: (vim-7.0.tar.bz2)にして公開されている。 + +- アーカイブをディレクトリ(例: c:\vimsrc)に展開します。 +- コンパイラに応じたMakefileを使います。Visual C++用にはMake_mvc.mak、Borland + C++用にはMake_bc5.mak、Ming GCC用にはMake_ming.mak、cygwin gcc用には + Make_cyg.makを使います。 + +VimのGUI版とコンソール版のどちらをビルドしたいかによって、Makefileに異なる引数 +を与えなければなりません。ソースのビルドに成功したら、vim.exeやgvim.exeをラン +タイムファイルとともに望みのディレクトリにコピーできます。 + +MS-Windowsシステムで様々なコンパイラを使ってVimをビルドするための情報について +は、以下のサイトを訪れてください: > + + http://mywebpage.netscape.com/SharpPeople/vim/howto/index.html +< +さらなる情報については以下を参照してください > + + :help install +< + *faq-35.4* +35.4. 私がインストールしたVimにはヘルプ、構文ファイル、インデントファイルが欠 + けています。それらのファイルをインストールするには? + +Vimのヘルプ、構文ファイル、インデントファイルやそのほかのランタイムファイルは +Vimランタイムパッケージの一部です。Vimランタイムパッケージをダウンロードしてイ +ンストールする必要があります。例えば、MS-Windows用のVim6.1ランタイムパッケージ +の名前はvim61rt.zipです。 + +訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ +訳注: (vim-7.0.tar.bz2)にして公開されている。 + +さらなる情報については以下を参照してください > + + :help install +< + *faq-35.5* +35.5. Vimをソースからビルドして"make install"でインストールしました。Vimのソー + スディレクトリを残しておく必要はありますか? + +その必要はありません。一度Vimをビルドして元のソースディレクトリ以外のどこか +(例えば/usr/binや/usr/local/bin)にインストールしたら、ソースディレクトリは削除 +してもかまいません。 + + *faq-35.6* +35.6. ある機能がコンパイル時に有効化されているかどうかを知るには? + +":version"を使えば、ある機能がコンパイル時に有効化されているかどうかを知ること +ができます。有効化されている機能の前には"+"がつきます。有効化されていない機能 +の前には"-"がつきます。 + +スクリプトの中で、ある機能の存在を判定したい場合は、関数has()を使います: > + + if has("menu") + " Set up some menus + endif +< +さらなる情報については以下を参照してください > + + :help :version + :help +feature-list + :help has() +< + *faq-35.7* +35.7. GUI機能なしでVimをビルドすることはできますか? + +できます。GUI機能を含めて、Vimの機能の多くは任意に有効化/無効化してビルドする +ことができます。 + +さらなる情報については以下を参照してください > + + :help install +< + *faq-35.8* +35.8. Unixシステム上でVimをビルドするとき、"undefined reference to + term_set_winsize"というエラーが出ます。これを解決するには? + +ビルド処理がtermlibまたはtermcapまたはncursesライブラリを見つけられないときこ +のエラーが出ます。このエラーを解決するには、ncurses-devパッケージをインストー +ルしなければなりません。 + + *faq-35.9* +35.9. GTK 2.03を使おうとしているのですが、Vimのconfigureがgtk-configがないとの + メッセージを出します。しかしGTK2は一般的なpkg-configを使うようになったの + で、これは正しいのです。gtk用のインクルードファイルとライブラリのリスト + を出力するpkg-configならありますが、なぜかconfigureスクリプトはこれを使 + ってくれません。 + +次のシェルスクリプトにgtk-configと名前をつけて使ってください: > + + #!/bin/sh + pkg-config gtk+-2.0 $1 $2 +< + +============================================================================= + *faq-36* +SECTION 36 - 様々な事柄 + + *faq-36.1* +36.1. Vimでバイナリフィルを編集するには? + +以下のオプションを設定すればVimでバイナリファイルを編集することができます: > + + :set binary + :set display=uhex +< +コマンドラインオプション"-b"を使ってもバイナリファイルを編集することができます +: > + + $ vim -b <binary_file_name> +< +また、バイナリファイルを編集するのにxxdユーティリティ(Vimのディストリビューシ +ョンの一部)を使うこともできます。 + +さらなる情報については以下を参照してください > + + :help 23.4 + :help edit-binary + :help hex-editing + :help -b + :help 'binary' + :help 'endofline' + :help 'display' +< + *faq-36.2* +36.2. ビジュアルエラーフラッシュとエラービープを無効にするには? + +次のコマンドを使うと、ビジュアルエラーフラッシュとエラービープを両方無効にする +ことができます: > + + :set visualbell t_vb= +< +さらなる情報については以下を参照してください > + + :help 'visualbell' + :help 'errorbells' + :help t_vb +< + *faq-36.3* +36.3. バッファに表示されている文字のアスキーコードを表示するには? + +'ga'コマンドを使うと、表示されている文字のアスキーコードを表示することができま +す。 + +さらなる情報については以下を参照してください > + + :help ga + :help :ascii +< + *faq-36.4* +36.4. コマンドのカウントとして0を使うことはできますか? + +"0"はそれ自身がコマンドであるため(現在行の1桁目に移動する)、コマンドのカウント +として使うことはできません。 + +さらなる情報については以下を参照してください > + + :help 0 + :help count +< + *faq-36.5* +36.5. Vimの起動時の画面を表示させなくするには? + +Vimの起動時の画面を表示させなくするには、'shortmess'にフラグ'I'を追加します: > + + :set shortmess+=I +< +さらなる情報については以下を参照してください > + + :help :intro + :help 'shortmess' +< + *faq-36.6* +36.6. "hit enter to continue"プロンプトを避けるには? + +あなたに読んでほしいメッセージがあるのに画面が再描画されようとしているとき、 +"hit enter to continue"プロンプトが出ます。'shortmess'にフラグ'T'を加えると、 +全てのメッセージを短縮することができます。するとhit-enterプロンプトを避けるこ +とができます: > + + :set shortmess+=T +< +また、'cmdheight'を設定するとコマンドラインの高さを上げることができます: > + + :set cmdheight=2 +< +さらなる情報については以下を参照してください > + + :help hit-enter + :help avoid-hit-enter + :help 'shortmess' + :help 'cmdheight' +< + *faq-36.7* +36.7. コマンドラインからVimを起動して一連のファイルに対して一連のコマンドを + 実行するには? + +コマンドラインからVimを起動して一連のファイルに対して一連のコマンドを実行する +にはいくつかの方法があります。コマンドラインオプション"-c"でコマンドを指定する +ことができます: > + + $ vim -c "<ex_command_1>" -c "<ex_command_2>" *.txt +< +コマンドラインオプション"-c"で指定されたexコマンドは順番に1つずつ実行されま +す。また、exコマンドを"|"で区切れば1つの"-c"で指定することもできます: > + + $ vim -c "<ex_command_1> | <ex_command_2>" *.txt +< +上のコマンドでexコマンドが失敗した場合は残りのexコマンドは全て実行されません。 + +例えば、コマンドラインからファイル中の"ABC"を"DEF"で置換するには次のコマンドを +使います: > + + $ vim -c "%s/ABC/DEF/ge | update" myfile.txt +< +コマンドラインから複数のファイル中の"ABC"を"DEF"で置換するには次のコマンドを使 +います: > + + $ vim -c "argdo %s/ABC/DEF/ge | update" *.txt +< +一連のコマンドをファイルに保存しておき、コマンドラインオプション"-s"を使ってフ +ァイルに対してそのコマンドを実行することもできます。例えば、mycmds.txtに一連の +コマンドを保存してあるとします。このとき次のようにできます: > + + $ vim -s mycmds.txt *.pl +< +さらなる情報については以下を参照してください > + + :help -c + :help -s +< + *faq-36.8* +36.8. インサートモードから抜けることなくノーマルモードコマンドを実行するには? + +CTRL-Oに続けてノーマルモードコマンドを1つ入力すると、インサートモードから抜け +ることなくノーマルモードコマンドを実行することができます。 + +1つ以上のノーマルモードコマンドを実行するにはCTRL-Lを押し、続けて任意個のノー +マルモードコマンドをタイプします。インサートモードに抜けるには<Esc>を押しま +す。 + +訳注: CTRL-Lを使うにはオプション'insertmode'をオンにしていなければならない。 + +さらなる情報については以下を参照してください > + + :help i_CTRL-O + :help i_CTRL-L +< + +============================================================================= + *faq-37* +SECTION 37 - ユニコード +Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> + + *faq-37.1* +37.1. Vimでユニコードのファイルを作ることはできますか? + +できます。あなたが利用できるキーボードとフォントによって多少複雑になるかもしれ +ませんが、常にどんなユニコードコードポイントでも(中には不正なものも)エンコード +することができます。ユニコードのファイルを作成するには、Vimをコンパイル時オプ +ション"+multi_byte"つきでコンパイルしていなければなりません。ユニコードについ +てのさらなる情報は以下のサイトから入手できます: > + + http://www.unicode.org + http://www.cl.cam.ac.uk/~mgk25/unicode.html +< +さらなる情報については以下を参照してください > + + :help multibyte + :help usr_45.txt +< + *faq-37.2* +37.2. ユニコードのファイルを編集するにあたって特に重要な設定は? + +最も重要なのは様々な"encoding"のオプションです。つまり、'encoding', +'fileencoding', 'fileencodings', 'termencoding'です。ブール値のオプション +'bomb'も重要です。 + +さらなる情報については以下を参照してください > + + :help 'encoding' + :help 'fileencoding' + :help 'fileencodings' + :help 'termencoding' + :help 'bomb' +< + *faq-37.3* +37.3. オプション'encoding'とは何ですか? + +基本的にオプション'encoding'はVimがデータを内部的にどう表現するかを定義 +します。しかし、ユニコードエンコーディングは全て内部的にはutf-8で表現され、 +(必要ならば)読み書きの際に変換されます。 + +さらなる情報については以下を参照してください > + + :help 'encoding' +< + *faq-37.4* +37.4. Vimでは様々なユニコードエンコーディングをどう書き表しますか? + +Utf-8はutf-8またはutf8と書きます。utf-16はucs-2またはucs2と書きます。utf-32は +ucs-4またはucs4と書きます。エンディアンを指定することもできます(utf-8はエンディ +アンによらないのでそれ以外)。末尾に"le"をつけるとリトルエンディアンになり、 +"be"をつけるとビッグエンディアンになります。エンディアンの指定なしにucs-2や +ucs-4のエンコーディングでファイルを作成すると、Vimはあなたのマシンに応じて適切 +な方を選択します。 + +さらなる情報については以下を参照してください > + + :help encoding-names + :help encoding-values + :help encoding-table +< + *faq-37.5* +37.5. バイト順マークの有無を指定するには? + +'fileencodings'が"ucs-bom"を含むなら、ファイルを読み込むときにバイト順マークの +チェックが行われます。オプション'bomb'がオンなら、ファイルを書き込むときに、そ +のファイルのエンコーディングを保証するバイト順マークを書き込みます。 + +さらなる情報については以下を参照してください > + + :help 'fileencodings' + :help 'bomb' +< + *faq-37.6* +37.6. オプション'fileencoding'とは何ですか? + +オプション'fileencoding'はファイルを書き込むときに使うエンコーディングを定義し +ます。これが空の場合は、'encoding'の値が使われます。 + +さらなる情報については以下を参照してください > + + :help 'fileencoding' +< + *faq-37.7* +37.7. オプション'fileencodings'とは何ですか? + +オプション'fileencodings'はVimが既存のファイルを開くときに使う検査方法を定義し +ます。このオプションはカンマで区切られたエンコーディングのリストです。特別な名 +前"ucs-bom"を含めると、バイト順マークの存在をチェックするようになります。 +しかし、これが"utf-8"の後に来ると認識されなくなります。通常は、"ucs-bom"を含め +るならば、リストの最初に書くべきです。 + +Vimはファイルを開くとき、そのファイルを'fileencodings'内にリストされたエンコー +ディングに対してチェックします。もしここでマッチするものがなければ +'fileencoding'が空文字列に設定されます。つまり、'encoding'の値が使われます。 + +さらなる情報については以下を参照してください > + + :help 'fileencodings' + :help 'encoding' +< + *faq-37.8* +37.8. オプション'termencoding'とは何ですか? + +オプション'termencoding'は、あなたがタイプしたデータをキーボードがどのようにエ +ンコードするかを定義します。これが空の場合は'encoding'と同じ値であるとされま +す。通常、このオプションはあなたのロカールに合うように設定するべきです。 + +さらなる情報については以下を参照してください > + + :help 'termencoding' + :help locale +< + *faq-37.9* +37.9. オプション'bomb'とは何ですか? + +'fileencodings'に"ucs-bom"が含まれているときファイルを読み込むと、そのファイル +の先頭にバイト順マークがあるかどうかによって'bomb'がオン/オフに設定されます。 +'bomb'がオンになっていると、ファイル書き込み時に、バイト順マークが書き込まれま +す。このバイト順マーク書き込みを手動で設定することもできます。 + +さらなる情報については以下を参照してください > + + :help 'bomb' +< + *faq-37.10* +37.10. これらのオプションの典型的な例はどこにありますか? + +これらを別な言葉で例をつけて説明した"tip"がここにあります。 +http://vim.sourceforge.net/tip_view.php?tip_id=246 . + + *faq-37.11* +37.11. ユニコードの文字を挿入するには? + +いくつかの方法があります: + +- キーボード上にある文字は普通にタイプできます。フランスのキーボードの曲線ア + クセント記号のように"dead-key"プリフィックスが必要なものもです。 +- ダイグラフが定義されている文字は、<Ctrl-K>に続けて2つの文字をタイプすること + で入力できます。 +- オプション'digraph'がセットされていると、ダイグラフが定義されている文字は + <char1><BS><char2>のようにして入力できます。 +- どんな文字も<Ctrl-V>プリフィックスを使えば入力できます(<Ctrl-V>がクリップボ + ードからペーストするようにマップされている場合は<Ctrl-Q>です)。 + +さらなる情報については以下を参照してください。 > + + :help digraphs + :help 'digraph' + :help i_CTRL-V_digit +< + *faq-37.12* +37.12. どのダイグラフがどの文字に定義されているかを知るには? + +まず'encoding'が適切に(例えばutf-8に)設定してください。それから:digraphsを使っ +て現在定義されているダイグラフを表示します。 + +さらなる情報については以下を参照してください。 > + + :help :digraphs + :help 'encoding' +< + +============================================================================= + vim:tw=78:ts=8:ft=help:norl:list: From 45389fcbbbbe21784a8d3b6b0f2603a91649ec24 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Tue, 29 Aug 2006 02:54:04 +0000 Subject: [PATCH 038/783] changed my name and added my e-mail address. git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@38 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/intro.jax | 4 ++-- ja/message.jax | 2 +- ja/motion.jax | 2 +- ja/quickfix.jax | 2 +- ja/syntax.jax | 2 +- ja/windows.jax | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ja/intro.jax b/ja/intro.jax index 4f87006eb..08727102d 100644 --- a/ja/intro.jax +++ b/ja/intro.jax @@ -1,7 +1,7 @@ COMMENT: Vimの紹介 STATUS: finished 7.0 TRANSLATOR: 北条耀 -TRANSLATOR: mm +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> *intro.txt* For Vim version 7.0. Last change: 2006 Apr 20 @@ -276,7 +276,7 @@ Vim エディタは Stevie をベースにしており、下記の方々のソ です! -この文書には他のバ-ジョンの Vi に対するいくつかの参照があります: +この文書には他のバージョンの Vi に対するいくつかの参照があります: *Vi* *vi* Vi "オリジナル"。特に指定がなければSun OS 4.xのバージョンのViを指す。 ":version"は"Version 3.7, 6/7/85"を返す。別のバージョンに言及すること diff --git a/ja/message.jax b/ja/message.jax index e45d47b15..7927e4909 100644 --- a/ja/message.jax +++ b/ja/message.jax @@ -1,7 +1,7 @@ COMMENT: メッセージ STATUS: finished 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -TRANSLATOR: mm +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> *message.txt* For Vim version 6.3. Last change: 2004 Jan 17 diff --git a/ja/motion.jax b/ja/motion.jax index 0780f041a..bf159b9db 100644 --- a/ja/motion.jax +++ b/ja/motion.jax @@ -2,7 +2,7 @@ COMMENT: カーソル移動 STATUS: finished 6.3.054 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 -TRANSLATOR: mm +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> *motion.txt* For Vim version 6.3. Last change: 2004 May 13 diff --git a/ja/quickfix.jax b/ja/quickfix.jax index 113d4101c..0c32f66fb 100644 --- a/ja/quickfix.jax +++ b/ja/quickfix.jax @@ -1,7 +1,7 @@ COMMENT: クイックフィックス(プログラム開発支援) STATUS: finish 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -TRANSLATOR: mm +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> *quickfix.txt* For Vim version 6.3. Last change: 2004 May 20 diff --git a/ja/syntax.jax b/ja/syntax.jax index d0e6f6723..c3e0e490e 100644 --- a/ja/syntax.jax +++ b/ja/syntax.jax @@ -2,7 +2,7 @@ COMMENT: 構文強調(テキストの着色) STATUS: suspend 6.3.54 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -TRANSLATOR: mm +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> *syntax.txt* For Vim version 6.3. Last change: 2004 Jun 04 diff --git a/ja/windows.jax b/ja/windows.jax index 511986e05..aa9492b2f 100644 --- a/ja/windows.jax +++ b/ja/windows.jax @@ -2,7 +2,7 @@ COMMENT: 複数のウィンドウとバッファの使用法 STATUS: finish 6.3.054 TRANSLATOR: 小野尾隆一 <onoo@lsidiv.kawasaki-steel.co.jp> TRANSLATOR: nobi -TRANSLATOR: mm +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> *windows.txt* For Vim version 6.3. Last Change: 2004 Apr 29 From 0ff3945f63a6945cc4c5e7645808df3a25adc694 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Tue, 29 Aug 2006 03:40:09 +0000 Subject: [PATCH 039/783] update quickref git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@39 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/quickref.jax | 169 ++++++++++++++++++++++++------------------------ 1 file changed, 83 insertions(+), 86 deletions(-) diff --git a/ja/quickref.jax b/ja/quickref.jax index 2260390f4..7d16602fc 100644 --- a/ja/quickref.jax +++ b/ja/quickref.jax @@ -1,9 +1,10 @@ COMMENT: クイックリファレンスガイド -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*quickref.txt* For Vim version 6.3. Last change: 2004 May 05 +*quickref.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -20,22 +21,22 @@ smz メモ:ヤンク+プットの組み合せか、コピー+ペースト tag subject tag subject ~ |Q_ct| ヘルプファイルの一覧 |Q_re| 繰り返しコマンド |Q_lr| 移動: 左右 |Q_km| キー割り付け(マッピング) -|Q_ud| 移動: 上下 |Q_ab| 短縮(省力入力) +|Q_ud| 移動: 上下 |Q_ab| 短縮入力 |Q_tm| 移動: 文脈 |Q_op| オプション |Q_pa| 移動: パターン検索 |Q_ur| Undo/Redoコマンド |Q_ma| 移動: マーク |Q_et| 外部コマンド -|Q_vm| 移動: 雑多 |Q_qf| Quickfixコマンド? +|Q_vm| 移動: 雑多 |Q_qf| Quickfixコマンド |Q_ta| 移動: タグの利用 |Q_vc| その他の雑多なコマンド |Q_sc| スクロール |Q_ce| Exモード: コマンド行編集 -|Q_in| 挿入: 文字列の挿入(?) |Q_ra| Exモード: 範囲指定 -|Q_ai| 挿入: キー(?) |Q_ex| Exモード: 特殊文字 -|Q_ss| 挿入: 特殊キー |Q_ed| ファイル編集 -|Q_di| 挿入: 合字(digraph) |Q_fl| 引数リストの使い方 -|Q_si| 挿入: 特殊な挿入 |Q_wq| 書き出しと終了 -|Q_de| 変更: 文字の削除 |Q_st| vimの起動方法 +|Q_in| 挿入: 文字列の挿入 |Q_ra| Exモード: 範囲指定 +|Q_ai| 挿入: キー |Q_ex| Exモード: 特殊文字 +|Q_ss| 挿入: 特殊キー |Q_st| vimの起動方法 +|Q_di| 挿入: 合字(digraph) |Q_ed| ファイル編集 +|Q_si| 挿入: 特殊な挿入 |Q_fl| 引数リストの使い方 +|Q_de| 変更: 文字の削除 |Q_wq| 書き出しと終了 |Q_cm| 変更: 複写と移動 |Q_ac| 自動コマンド |Q_ch| 変更: 文字列の入れ換え |Q_wi| 複数ウィンドウのコマンド -|Q_co| 変更: 複雑な変更(?) |Q_bu| バッファ一覧コマンド +|Q_co| 変更: 複雑な変更 |Q_bu| バッファ一覧コマンド |Q_vi| ビジュアルモード |Q_sy| シンタックスハイライト |Q_to| テキストオブジェクト |Q_gu| GUIコマンド |Q_fo| 折り畳みコマンド @@ -163,7 +164,7 @@ smz ※ f,F,t,Tで指定する{char}は1文字分の文字だけです。 直前に指定したatomと0回以上一致 * \* 直前に指定したatomと1回以上一致 \+ \+ - 直前に指定した文字と0回もしくは1回一致 \+ \+ + 直前に指定した文字と0回もしくは1回一致 \= \= 直前に指定した文字と2回~5回一致 \{2,5} \{2,5} 2種類の正規表現を列記 \| \| パターンをグループ化してatomとする \(\) \(\) @@ -222,7 +223,8 @@ smz ※ f,F,t,Tで指定する{char}は1文字分の文字だけです。 |:ts| :ts[elect][!] [tag] タグに合致する一覧を表示し、ジャンプ先を選択 |:tjump| :tj[ump][!] [tag] 指定のタグ [tag] にジャンプ。もし、合致する タグが複数ある時は一覧から選択 - +|:ltag| :lt[ag][!] [tag] タグ [tag] にジャンプし、マッチしたタグを + ロケーションリストに加える。 |:tags| :tags タグリストを一覧表示 |CTRL-T| N CTRL-T タグリストの N 番目に古いタグにジャンプ |:po| :[count]po[p][!] タグリストの [count] 番目に古いタグにジャンプ @@ -268,9 +270,10 @@ These only work when 'wrap' is off: |gI| N gI 現在行の先頭に文字列を(N回)追加 |o| N o 現在行の下に新たな行を追加し、文字列を(N回)追加する。 |O| N O 現在行に新たな行を挿入し、文字列を(N回)追加する。 -|:startinsert| :star[tinsert][!] start Insert mode, append when [!] used - Insertモードを開始する。[!]を指定するとAppendモードと - なる。 +|:startinsert| :star[tinsert][!] Insertモードを開始する。[!]を指定すると + Appendモードとなる。 +|:startreplace| :startr[eplace][!] Replaceモードを開始する。[!]を指定すると + 行末から開始する。 ビジュアルモード用: |v_b_I| I 選択している全行の前に、同じ文字列を挿入する。 @@ -294,7 +297,6 @@ These only work when 'wrap' is off: ------------------------------------------------------------------------------ *Q_ss* 挿入モードでの特殊キー -|i_CTRL-V| CTRL-V {char}.. insert character literally, or enter decimal |i_CTRL-V| CTRL-V {char}.. 指定の{char}、もしくは10進数指定のバイト値 を挿入 |i_<NL>| <NL> or <CR> or CTRL-M or CTRL-J @@ -460,7 +462,7 @@ smz 号のこと。英語圏では昔から使われている。 'tabstop'の値を変更し、それに従って空白、TABの類を 適切な状態にする。 ------------------------------------------------------------------------------ -*Q_vi* ビジュルモード +*Q_vi* ビジュアルモード |visual-index| ビジュアルモードコマンドの目次 @@ -560,7 +562,7 @@ smz 号のこと。英語圏では昔から使われている。 を後で続けられるように、現在のファイル名、 ウィンドウ情報などもいっしょに書き出す。 ------------------------------------------------------------------------------ -*Q_ab* 短縮形 +*Q_ab* 短縮入力 |:abbreviate| :ab[breviate] {lhs} {rhs} 短縮形 {lhs} を {rhs} で定義 |:abbreviate| :ab[breviate] {lhs} {lhs}で始まる短縮形を一覧表示 @@ -632,6 +634,7 @@ smz 号のこと。英語圏では昔から使われている。 しない。 |'balloondelay'| |'bdlay'| バルーンヘルプ(?)が出るまでの遅延時間(ms) |'ballooneval'| |'beval'| バルーン評価のON/OFF +|'balloonexpr'| |'bexpr'| バルーンヘルプに表示する式 |'binary'| |'bin'| バイナリモードで、読み/書き/編集する |'bioskey'| |'biosk'| MS-DOS専用: 文字入力にbiosコールを使う |'bomb'| ファイルの先頭にBOMを付加する @@ -656,6 +659,8 @@ smz 号のこと。英語圏では昔から使われている。 |'commentstring'| |'cms'| コメント用テンプレート(foldマーカ用) |'compatible'| |'cp'| 可能な限りVi互換で動く |'complete'| |'cpt'| 挿入モードでの補完の動きを指定する +|'completefunc'| |'cfu'| 挿入モードでの補完に使われる関数 +|'completeopt'| |'cot'| 挿入モードでの補完のオプション |'confirm'| |'cf'| 未保存ファイル、リードオンリファイルの確認方法 |'conskey'| |'consk'| コンソールからの直接キー検出(MS-DOSのみ) |'copyindent'| |'ci'| 'autoindent'がすでにあるインデントを参考にする @@ -666,6 +671,8 @@ smz 号のこと。英語圏では昔から使われている。 |'cscopetag'| |'cst'| タグコマンドでcscopeを使う |'cscopetagorder'| |'csto'| |:cstag|が検索する順番を決める |'cscopeverbose'| |'csverb'| cscopeデータベースに追加時にメッセージを表示 +|'cursorcolumn'| |'cuc'| カーソルがある桁を強調表示する +|'cursorline'| |'cuc'| カーソルがある行を強調表示する |'debug'| "msg"と設定すると全てのエラーが表示される |'define'| |'def'| マクロ定義検索パターン |'delcombine'| |'deco'| 合成文字の削除時に構成要素を全て消す @@ -709,8 +716,11 @@ smz 号のこと。英語圏では昔から使われている。 |'foldnestmax'| |'fdn'| 折畳みの深さの制限 |'foldopen'| |'fdo'| 折畳みを開くことのできるコマンド |'foldtext'| |'fdt'| 閉じた折畳みの表示に使う式 +|'formatlistpat'| |'flp'| リストのヘッダを認識するためのパターン |'formatoptions'| |'fo'| 自動整形の動作定義 |'formatprg'| |'fp'| |gq|で使う外部プログラム +|'formatexpr'| |'fex'| |gq|で使う式 +|'fsync'| |'fs'| ファイルを書き込んだ後に fsync() を呼ぶかどうか |'gdefault'| |'gd'| |:substitute|で"g"を既定で有効にする |'grepformat'| |'gfm'| 'grepprg'の出力の書式 |'grepprg'| |'gp'| |:grep|で使う外部プログラム @@ -721,6 +731,8 @@ smz 号のこと。英語圏では昔から使われている。 |'guiheadroom'| |'ghr'| GUI: ウインドウ装飾用の余地。ピクセル単位 |'guioptions'| |'go'| GUI: GUIに特化したオプション |'guipty'| GUI: |:!|でpseudo-ttyの使用を試みる +|'guitablabel'| |'gtl'| GUI: タブページのラベル設定 +|'guitabtooltip'| |'gtt'| GUI: タブページのツールチップ設定 |'helpfile'| |'hf'| メインのヘルプファイルのフルパス指定 |'helpheight'| |'hh'| ヘルプウインドウの最小高さ |'helplang'| |'hlg'| 優先するヘルプ用の言語 @@ -766,16 +778,20 @@ smz 号のこと。英語圏では昔から使われている。 |'list'| <Tab>や<EOL>を表示する |'listchars'| |'lcs'| 'list'オン時に使う文字 |'loadplugins'| |'lpl'| 起動時にプラグインスクリプトを読み込む +|'macatsui'| Mac GUI: ATSUI テキスト描画を使う |'magic'| 検索パターン内の特殊文字を変更する |'makeef'| |'mef'| |:make|用のエラーファイル |'makeprg'| |'mp'| |:make|で使う外部プログラム |'matchpairs'| |'mps'| |%|で探す文字ペア |'matchtime'| |'mat'| 'showmatch'で対応カッコを表示する時間。0.1秒単位 +|'maxcombine'| |'mco'| 表示できる文字の組合せの最大数 |'maxfuncdepth'| |'mfd'| ユーザ定義関数の再帰呼び出しの最大数 |'maxmapdepth'| |'mmd'| マッピングの再帰定義の最大数 |'maxmem'| |'mm'| 1つのバッファに使える最大メモリ(Kbyte単位) +|'maxmempattern'| |'mmp'| 検索に使える最大メモリ(Kbyte単位) |'maxmemtot'| |'mmt'| 全てのバッファに使える最大メモリ(Kbyte単位) |'menuitems'| |'mis'| メニューに登録できる項目の最大数 +|'mkspellmem'| |'msm'| |:mkspell|がツリーを圧縮する前に使われるメモリ |'modeline'| |'ml'| ファイルの先頭や末尾のモードラインを許可する |'modelines'| |'mls'| モードラインをチェックする行数 |'modifiable'| |'ma'| ファイルの変更許可 @@ -787,8 +803,12 @@ smz 号のこと。英語圏では昔から使われている。 |'mousemodel'| |'mousem'| マウスボタンの機能を変える |'mouseshape'| |'mouses'| モード別にマウスポインタの形を変える |'mousetime'| |'mouset'| ダブルクリックの間隔時間 +|'mzquantum'| |'mzq'| MzSchemeスレッドに切り替える間隔 |'nrformats'| |'nf'| CTRL-A用の数値書式 |'number'| |'nu'| 行番号を表示する +|'numberwidth'| |'nuw'| 行番号に使われる桁数 +|'omnifunc'| |'ofu'| ファイル形式ごとの補完に使われる +|'operatorfunc'| |'opfunc'| オペレータ|g@|で呼ばれる関数 |'osfiletype'| |'oft'| オペレーティングシステムのファイル付加情報 |'paragraphs'| |'para'| 段落を分けるためのnroffのマクロ |'paste'| Pasteモードに移行 @@ -804,7 +824,11 @@ smz 号のこと。英語圏では昔から使われている。 |'printexpr'| |'pexpr'| |:hardcopy|でPostScriptを印刷するための式 |'printfont'| |'pfn'| |:hardcopy|で使用するフォント |'printheader'| |'pheader'| |:hardcopy|で使用するヘッダ +|'printmbcharset'| |'pmbcs'| :hardcopyに使われるCJK文字集合 +|'printmbfont'| |'pbmfn'| :hardcopyの出力に使われるフォント名 |'printoptions'| |'popt'| |:hardcopy|の出力をコントロールする +|'pumheight'| |'ph'| ポップアップメニューの高さの最大値 +|'quoteescape'| |'qw'| 文字列中に使われるエスケープ文字 |'readonly'| |'ro'| バッファの書き込みを制限する |'remap'| 再帰的マッピングを有効にする |'report'| 変更された行の数の方向が出る最小値 @@ -831,6 +855,7 @@ smz 号のこと。英語圏では昔から使われている。 |'shellquote'| |'shq'| シェルで使う引用符 |'shellredir'| |'srr'| フィルタの出力を一時ファイルに入れるのに使う文字 |'shellslash'| |'ssl'| シェルで使うファイルのパス区切りに使う +|'shelltemp'| |'stmp'| シェルコマンドに一時ファイルを使うかどうか |'shelltype'| |'st'| Amiga: シェルの使い方に影響する |'shellxquote'| |'sxq'| 'shellquote'に似ているがリダイレクションを含む |'shiftround'| |'sr'| インデントを'shiftwidth'の倍数に丸める @@ -842,12 +867,18 @@ smz 号のこと。英語圏では昔から使われている。 |'showfulltag'| |'sft'| タグで補完する時完全なタグのパターンを表示する |'showmatch'| |'sm'| 括弧入力時に対応する括弧を知らせる |'showmode'| |'smd'| ステータスラインに現在のモードを表示する +|'showtabline'| |'stal'| いつタブページ行を表示するか |'sidescroll'| |'ss'| 水平スクロールの刻み幅 |'sidescrolloff'| |'siso'| カーソルの左右に確保する表示幅 |'smartcase'| |'scs'| パターンが大文字を含むときは文字の大小を区別する |'smartindent'| |'si'| C言語用の高度な自動インデント |'smarttab'| |'sta'| <Tab>入力時に'shiftwidth'を使う |'softtabstop'| |'sts'| <Tab>で入力する空白の数 +|'spell'| スペルチェッキングを有効にする +|'spellcapcheck'| |'spc'| スペルチェッキングを有効にする +|'spellfile'| |`spf`| |zg|と|zw|が単語を保存するファイル +|'spelllang'| |'spl'|スペルチェックをする言語 +|'spellsuggest'| |'sps'|スペリング訂正をするのに使われるメソッド |'splitbelow'| |'sb'| ウインドウの横分割で新規ウィンドウを下に作る |'splitright'| |'spr'| ウインドウの縦分割で新規ウィンドウを右に作る |'startofline'| |'sol'| あるコマンドで行の最初の余白にカーソルを移動する @@ -857,8 +888,11 @@ smz 号のこと。英語圏では昔から使われている。 |'swapfile'| |'swf'| スワップファイルを使うかどうか |'swapsync'| |'sws'| スワップファイルの同期方法 |'switchbuf'| |'swb'| バッファ切替え時の動作 +|'synmaxcol'| |'sws'| 構文アイテムを見つける際の最大桁 |'syntax'| |'syn'| カレントバッファの構文強調表示の定義 |'tabstop'| |'ts'| <Tab>の表示幅 +|'tabline'| |'tal'| コンソールのタブページラインのカスタムフォーマット +|'tabpagemax'| |'tpm'| タブページの最大数。|-p|と"tab all"に使われる。 |'tagbsearch'| |'tbs'| タグファイルの検索にバイナリサーチを使う |'taglength'| |'tl'| 意味を持つタグ名の文字数 |'tagrelative'| |'tr'| タグファイル内のファイル名が相対的になる @@ -892,6 +926,7 @@ smz 号のこと。英語圏では昔から使われている。 |'updatecount'| |'uc'| この回数だけ入力するとスワップファイルを更新する |'updatetime'| |'ut'| この時間だけ入力がなければスワップファイルを更新する |'verbose'| |'vbs'| 有益なメッセージを表示する +|'verbosefile'| |'vfile'| メッセージを書き込むファイル |'viewdir'| |'vdir'| |:mkview|によるファイルを格納するディレクトリ |'viewoptions'| |'vop'| |:mkview|の保存内容を決める |'viminfo'| |'vi'| 起動時と終了時に.viminfoファイルを使う @@ -905,9 +940,11 @@ smz 号のこと。英語圏では昔から使われている。 |'wildignore'| |'wig'| リスト内のどれかにマッチしたファイル名は補完しない |'wildmenu'| |'wmnu'| コマンドラインで補完候補をメニュー表示する |'wildmode'| |'wim'| 'wildchar'の補完モード +|'wildoptions'| |'wop'| コマンドライン補完をどう行うか指定する |'winaltkeys'| |'wak'| GUIでのALTキーの使い方 |'winheight'| |'wh'| カレントウィンドウの行数の最小値 |'winfixheight'| |'wfh'| ウィンドウの高さをキープする +|'winfixwidth'| |'wfh'| ウィンドウの幅をキープする |'winminheight'| |'wmh'| カレントウィンドウ以外のウィンドウの高さの最小値 |'winminwidth'| |'wmw'| カレントウィンドウ以外のウィンドウの幅の最小値 |'winwidth'| |'wiw'| カレントウィンドウの幅の最小値 @@ -939,6 +976,14 @@ smz 号のこと。英語圏では昔から使われている。 |:cprevious| :cp 1つ前のエラーを表示 |:clist| :cl 全エラーの一覧を表示 |:cfile| :cf 'errorfile'からエラーを読み込む +|:cgetbuffer| :cgetb :cbufferと同様だが最初のエラーにジャンプしない +|:cgetfile| :cg :cfileと同様だが最初のエラーにジャンプしない +|:cgetexpr| :cgete :cexprと同様だが最初のエラーにジャンプしない +|:caddfile| :caddf エラーファイルから現在のquickfixリストにエラー + を追加する +|:caddexpr| :cad 式から現在のquickfixリストにエラーを追加する +|:cbuffer| :cb バッファ内のテキストからエラーを読み込む +|:cexpr| :cex 式からエラーを読み込む |:cquit| :cq 書き込まずにエラーコードで終了する (コンパイラのため) |:make| :make [args] makeする。エラーを開き最初のコンパイルエラー @@ -952,6 +997,8 @@ smz 号のこと。英語圏では昔から使われている。 表示 |ga| ga カーソル位置のASCII文字コードを10進、16進、 8進で表示 +|g8| g8 utf-8エンコーディング用:カーソル下の文字のバ + イト列を16進で表示する。 |g_CTRL-G| g CTRL-G カーソル桁数、行数、単語数、文字数を表示 |CTRL-C| CTRL-C 検索中:検索を中止 |dos-CTRL-Break| CTRL-Break MS-DOS: 検索中:検索を中止 @@ -1061,24 +1108,6 @@ smz 号のこと。英語圏では昔から使われている。 |::e| :e 拡張子のみ |::s| :s/{pat}/{repl}/ {pat}を{repl}に置換 ------------------------------------------------------------------------------ -*Q_ed* ファイルの編集 - - !なしの場合: 現バッファに変更が加わっている場合はコマンド失敗 - !ありの場合: 現在のバッファに対する変更は破棄して、コマンド実行 -|:edit_f| :e[dit][!] {file} {file}を編集 -|:edit| :e[dit][!] 現在のバッファ内容を再読み込み -|:enew| :ene[w][!] 新たな名前なしバッファを編集 -|:find| :fin[d][!] {file} {file} を'path' から探し、編集 - -|CTRL-^| N CTRL-^ 別ファイル N を編集(":e #N"と同じ) -|gf| gf or ]f カーソル下にある名前のファイルを編集 -|:pwd| :pwd カレントディレクトリを表示 -|:cd| :cd [path] カレントディレクトリを [path] に変更 -|:cd-| :cd - 直前のカレントディレクトリに戻る -|:file| :f[ile] 現在のファイル名とカーソル位置を表示 -|:file| :f[ile] {name} 現在のファイル名を{name}に変更 -|:files| :files 別ファイル一覧を表示 ------------------------------------------------------------------------------- *Q_fl* 引数リストの使い方 |argument-list| |:args| :ar[gs] 引数一覧を表示。現在のファイルは[ ]で囲む @@ -1133,55 +1162,23 @@ smz 号のこと。英語圏では昔から使われている。 バッファを保存 |CTRL-Z| CTRL-Z ":stop"と同じ。 ------------------------------------------------------------------------------ -*Q_st* VIMの起動 - -smz 省略 -|-vim| vim [options] 空バッファで起動 -|-file| vim [options] {file} .. 最初の{file}を開いて起動 -|--| vim [options] - 標準入力からファイル内容を取り込む -|-tag| vim [options] -t {tag} {tag}にリンクされたファイルを開いて起動 -|-qf| vim [options] -q [fname] QuickFixモードで起動 - 最初のエラーを表示する - - Vim の引数 - -|-gui| -g GUIで起動 (他のオプションも許可) - -|-+| +[num] カーソルを[num]行目にして起動(デフォルト:最終行) -|-+c| +{command} ファイルの読み込み後に{command}を起動 -|-+/| +/{pat} {file} .. カーソルを最初の{pat}に合致するところに移動 -|-v| -v Vi モード, ex を通常モードで起動 -|-e| -e Ex モード, vimをEx(コマンドライン)モードで起動 -|-R| -R リードオンリーモードで起動。-nを含む。 -|-m| -m 変更を認めない('write' オプションをoffで起動) -|-b| -b バイナリモード -|-l| -l lisp モード -|-A| -A Arabic モード ('arabic'をセット) -|-F| -F Farsi モード ('fkmap' と 'rightleft' をセット) -|-H| -H Hebrew モード ('hkmap' と 'rightleft' をセット) -|-V| -V 冗長モード -|-C| -C 互換モード, 'compatible' をセットして起動 -|-N| -N 非互換モード, 'compatible' をoffにして起動 -|-r| -r swapファイルの一覧を与える -|-r| -r {file} .. 異常終了したファイルのリカバリ -|-n| -n swapファイルを作らない -|-o| -o [num] [num]個のウィンドウを開く - (通常は複数ファイルを開いてもウィンドウは1つ) -|-f| -f GUI: foreground process, fork()しない。 - Amiga: ウィンドウを開くときにvimを再起動しない - (例:メールなど) -|-s| -s {scriptin} 最初のコマンド群を{scriptin}から読む。 -|-w| -w {scriptout} 入力した文字をファイル{scriptout} に保存(追記) -|-W| -W {scriptout} 入力した文字をファイル{scriptout} に保存(上書き) -|-T| -T {terminal} 端末名{terminal}を指定 -|-d| -d {device} Amiga: {device}をコンソールとして使う -|-u| -u {vimrc} vimrcファイルとして{vimrc}を読み込む -|-U| -U {gvimrc} 同上, GUIでの起動時用 -|-i| -i {viminfo} viminfoファイルとして{viminfo}を読み込む -|---| -- 引数の最後を示す。以降の引数は全部ファイル名 -|--help| --help 引数のヘルプを表示して終了 -|--version| --version バージョン情報を表示して終了 -|--| - 標準入力から読み込む +*Q_ed* ファイルの編集 + + !なしの場合: 現バッファに変更が加わっている場合はコマンド失敗 + !ありの場合: 現在のバッファに対する変更は破棄して、コマンド実行 +|:edit_f| :e[dit][!] {file} {file}を編集 +|:edit| :e[dit][!] 現在のバッファ内容を再読み込み +|:enew| :ene[w][!] 新たな名前なしバッファを編集 +|:find| :fin[d][!] {file} {file} を'path' から探し、編集 + +|CTRL-^| N CTRL-^ 別ファイル N を編集(":e #N"と同じ) +|gf| gf or ]f カーソル下にある名前のファイルを編集 +|:pwd| :pwd カレントディレクトリを表示 +|:cd| :cd [path] カレントディレクトリを [path] に変更 +|:cd-| :cd - 直前のカレントディレクトリに戻る +|:file| :f[ile] 現在のファイル名とカーソル位置を表示 +|:file| :f[ile] {name} 現在のファイル名を{name}に変更 +|:files| :files 別ファイル一覧を表示 ------------------------------------------------------------------------------ *Q_ac* 自動コマンド From f369b1269aecb295fcfac01ad0ab2f81ddb96b88 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Tue, 29 Aug 2006 04:41:29 +0000 Subject: [PATCH 040/783] *quickref.jax add Q_st section and removed tag markers from option-list git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@40 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/quickref.jax | 796 +++++++++++++++++++++++++----------------------- 1 file changed, 423 insertions(+), 373 deletions(-) diff --git a/ja/quickref.jax b/ja/quickref.jax index 7d16602fc..2be857229 100644 --- a/ja/quickref.jax +++ b/ja/quickref.jax @@ -20,7 +20,7 @@ smz メモ:ヤンク+プットの組み合せか、コピー+ペースト *quickref* *Contents* tag subject tag subject ~ |Q_ct| ヘルプファイルの一覧 |Q_re| 繰り返しコマンド -|Q_lr| 移動: 左右 |Q_km| キー割り付け(マッピング) +|Q_lr| 移動: 左右 |Q_km| キーマップ |Q_ud| 移動: 上下 |Q_ab| 短縮入力 |Q_tm| 移動: 文脈 |Q_op| オプション |Q_pa| 移動: パターン検索 |Q_ur| Undo/Redoコマンド @@ -35,7 +35,7 @@ smz メモ:ヤンク+プットの組み合せか、コピー+ペースト |Q_si| 挿入: 特殊な挿入 |Q_fl| 引数リストの使い方 |Q_de| 変更: 文字の削除 |Q_wq| 書き出しと終了 |Q_cm| 変更: 複写と移動 |Q_ac| 自動コマンド -|Q_ch| 変更: 文字列の入れ換え |Q_wi| 複数ウィンドウのコマンド +|Q_ch| 変更: 文字列の変更 |Q_wi| 複数ウィンドウのコマンド |Q_co| 変更: 複雑な変更 |Q_bu| バッファ一覧コマンド |Q_vi| ビジュアルモード |Q_sy| シンタックスハイライト |Q_to| テキストオブジェクト |Q_gu| GUIコマンド @@ -119,7 +119,7 @@ smz ※ f,F,t,Tで指定する{char}は1文字分の文字だけです。 |[star| N [* N 個前のコメントの先頭まで戻る |]star| N ]* N 個先のコメントの末尾まで進む ------------------------------------------------------------------------------ -*Q_pa* Pattern searches +*Q_pa* パターン検索 |/| N /{pattern}[/[offset]]<CR> N 回目の{pattern}を含む個所を順方向に検索 @@ -182,7 +182,7 @@ smz ※ f,F,t,Tで指定する{char}は1文字分の文字だけです。 b[-num] 上の s[-num] の別名 (begin の b) ;{search-command} 次の{search-command}を実行する。 ------------------------------------------------------------------------------ -*Q_ma* Marks and motions +*Q_ma* マーク |m| m{a-zA-Z} 現在の場所を {a-zA-Z} としてマーク |`a| `{a-z} 編集中のファイルのマーク{a-z} に移動 @@ -214,7 +214,7 @@ smz ※ f,F,t,Tで指定する{char}は1文字分の文字だけです。 |go| N go 現バッファの N バイト目に移動 |:go| :[range]go[to] [off] 現バッファの [off] バイト目に移動 ------------------------------------------------------------------------------ -*Q_ta* Using tags +*Q_ta* タグの利用 |:ta| :ta[g][!] {tag} {tag}で指定したタグにジャンプ |:ta| :[count]ta[g][!] タグリストの[count]番目に新しいタグにジャンプ @@ -261,7 +261,7 @@ These only work when 'wrap' is off: |zH| N zH 画面桁数の半分だけ、右へスクロール |zL| N zL 画面桁数の半分だけ、左へスクロール ------------------------------------------------------------------------------ -*Q_in* Inserting text +*Q_in* 文字列の挿入 |a| N a カーソル位置の後に文字列を(N回)追加 |A| N A 現在行の末尾に文字列を(N回)追加 @@ -361,7 +361,7 @@ These only work when 'wrap' is off: |v_gJ| {visual}gJ "{visual}J"と同じだが、行毎の空白は付けない。 |:d| :[range]d [x] [range]で指定した範囲の行を削除 [それをレジスタxに] ------------------------------------------------------------------------------ -*Q_cm* Copying and moving text +*Q_cm* 文字列の複写と移動 |quote| "{char} レジスタ{char}を指定。これに続いて、削除コマンドや ヤンクコマンド、ペーストコマンドを指定 @@ -514,7 +514,7 @@ smz 号のこと。英語圏では昔から使われている。 [sec] 秒間の間、何もしない |gs| N gs N 秒間の間、何もしない ------------------------------------------------------------------------------ -*Q_km* Key mapping +*Q_km* キーマップ |:map| :ma[p] {lhs} {rhs} 通常モード/visualモードで{lhs} を{rhs} に割り付け @@ -578,7 +578,7 @@ smz 号のこと。英語圏では昔から使われている。 |:cabclear| :cabc[lear] コマンドライン用の全短縮形を削除 |:iabclear| :iabc[lear] 挿入モード用の全短縮形を削除 ------------------------------------------------------------------------------ -*Q_op* Options +*Q_op* オプション |:set| :se[t] 変更した全オプションを表示 |:set| :se[t] all termcap以外の全オプションを表示 @@ -611,352 +611,352 @@ smz 号のこと。英語圏では昔から使われている。 説明とヘルプへのリンクをつけてある。 各オプションの簡易説明: *option-list* -|'aleph'| |'al'| Aleph文字(ヘブライ語)用のアスキーとする -|'allowrevins'| |'ari'| 挿入モードとコマンドラインモードで、 CTRL-_ を +'aleph' 'al' Aleph文字(ヘブライ語)用のアスキーとする +'allowrevins' 'ari' 挿入モードとコマンドラインモードで、 CTRL-_ を 使うことを認める。 -|'altkeymap'| |'akm'| デフォルトの第2言語(Farsi/ヘブライ) -|'ambiwidth'| |'ambw'| Unicode文字の不明瞭な文字幅を決定する -|'antialias'| |'anti'| Mac OS X: フォントを滑らかに表示する。 -|'autochdir'| |'acd'| 現在編集中のファイルのディレクトリに変更する -|'arabic'| |'arab'| デフォルトでアラビア語を2番目の言語にする -|'arabicshape'| |'arshape'| アラビア文字を整える -|'autoindent'| |'ai'| 直前の行から新しい行のインデントを得る -|'autoread'| |'ar'| vim以外でファイル変更した時に自動再読み込みする -|'autowrite'| |'aw'| 変更があったら、自動的に書き出す -|'autowriteall'| |'awa'| 'autowrite'と同様だが、より多くのコマンドと連動 -|'background'| |'bg'| "dark"/"light":ハイライト色の指定に使用 -|'backspace'| |'bs'| 1行目でのBackSpaceの振る舞い -|'backup'| |'bk'| 上書きした時にバックアップを作成する。 -|'backupcopy'| |'bkc'| ファイルをrenameするのではなく、コピーする。 -|'backupdir'| |'bdir'| バックアップファイル用のディレクトリを指定 -|'backupext'| |'bex'| バックアップファイル用の拡張子 -|'backupskip'| |'bsk'| 指定のパターンに合致するファイルはバックアップ +'altkeymap' 'akm' デフォルトの第2言語(Farsi/ヘブライ) +'ambiwidth' 'ambw' Unicode文字の不明瞭な文字幅を決定する +'antialias' 'anti' Mac OS X: フォントを滑らかに表示する。 +'autochdir' 'acd' 現在編集中のファイルのディレクトリに変更する +'arabic' 'arab' デフォルトでアラビア語を2番目の言語にする +'arabicshape' 'arshape' アラビア文字を整える +'autoindent' 'ai' 直前の行から新しい行のインデントを得る +'autoread' 'ar' vim以外でファイル変更した時に自動再読み込みする +'autowrite' 'aw' 変更があったら、自動的に書き出す +'autowriteall' 'awa' 'autowrite'と同様だが、より多くのコマンドと連動 +'background' 'bg' "dark"/"light":ハイライト色の指定に使用 +'backspace' 'bs' 1行目でのBackSpaceの振る舞い +'backup' 'bk' 上書きした時にバックアップを作成する。 +'backupcopy' 'bkc' ファイルをrenameするのではなく、コピーする。 +'backupdir' 'bdir' バックアップファイル用のディレクトリを指定 +'backupext' 'bex' バックアップファイル用の拡張子 +'backupskip' 'bsk' 指定のパターンに合致するファイルはバックアップ しない。 -|'balloondelay'| |'bdlay'| バルーンヘルプ(?)が出るまでの遅延時間(ms) -|'ballooneval'| |'beval'| バルーン評価のON/OFF -|'balloonexpr'| |'bexpr'| バルーンヘルプに表示する式 -|'binary'| |'bin'| バイナリモードで、読み/書き/編集する -|'bioskey'| |'biosk'| MS-DOS専用: 文字入力にbiosコールを使う -|'bomb'| ファイルの先頭にBOMを付加する -|'breakat'| |'brk'| 改行の理由となる文字(???) -|'browsedir'| |'bsdir'| ブラウズを始めるディレクトリ -|'bufhidden'| |'bh'| ウィンドウに繋がったバッファがなくなった時の動き -|'buflisted'| |'bl'| バッファリストにバッファを表示するかどうか -|'buftype'| |'bt'| 特殊なタイプのバッファ -|'casemap'| |'cmp'| 文字の大小の変換方法を決める -|'cdpath'| |'cd'| ":cd"コマンドで検索するディレクトリ -|'cedit'| コマンドラインウィンドウを開くためのキー -|'charconvert'| |'ccv'| 文字コードの変換に使用する式 -|'cindent'| |'cin'| C言語用のインデントを行う -|'cinkeys'| |'cink'| 'cindent'が有効な際に押すとインデントするキー -|'cinoptions'| |'cino'| 'cindent'が有効な際のインデント方法 -|'cinwords'| |'cinw'| 'si'、'cin'によるインデントの開始文字 -|'clipboard'| |'cb'| 無名レジスタ操作でクリップボードを使う -|'cmdheight'| |'ch'| コマンドライン用に表示しておく行数 -|'cmdwinheight'| |'cwh'| コマンドライン編集に使う行数 -|'columns'| |'co'| 画面上の桁数 -|'comments'| |'com'| コメント行の開始を示すパターン -|'commentstring'| |'cms'| コメント用テンプレート(foldマーカ用) -|'compatible'| |'cp'| 可能な限りVi互換で動く -|'complete'| |'cpt'| 挿入モードでの補完の動きを指定する -|'completefunc'| |'cfu'| 挿入モードでの補完に使われる関数 -|'completeopt'| |'cot'| 挿入モードでの補完のオプション -|'confirm'| |'cf'| 未保存ファイル、リードオンリファイルの確認方法 -|'conskey'| |'consk'| コンソールからの直接キー検出(MS-DOSのみ) -|'copyindent'| |'ci'| 'autoindent'がすでにあるインデントを参考にする -|'cpoptions'| |'cpo'| vi互換な振る舞いのフラグ集 -|'cscopepathcomp'| |'cspc'| 表示するファイルパスの深さ -|'cscopeprg'| |'csprg'| cscopeの実行ファイル -|'cscopequickfix'| |'csqf'| cscopeの結果の表示にquickfixウインドウを使う -|'cscopetag'| |'cst'| タグコマンドでcscopeを使う -|'cscopetagorder'| |'csto'| |:cstag|が検索する順番を決める -|'cscopeverbose'| |'csverb'| cscopeデータベースに追加時にメッセージを表示 -|'cursorcolumn'| |'cuc'| カーソルがある桁を強調表示する -|'cursorline'| |'cuc'| カーソルがある行を強調表示する -|'debug'| "msg"と設定すると全てのエラーが表示される -|'define'| |'def'| マクロ定義検索パターン -|'delcombine'| |'deco'| 合成文字の削除時に構成要素を全て消す -|'dictionary'| |'dict'| キーワード補完に使うファイルのリスト -|'diff'| そのウインドウでdiffモードを使う -|'diffexpr'| |'dex'| 差分取得に使う式 -|'diffopt'| |'dip'| diffモードに使うオプション -|'digraph'| |'dg'| 挿入モードで二重字の入力を有効にする -|'directory'| |'dir'| スワップファイル用のディレクトリのリスト -|'display'| |'dy'| テキストの表示方法を指定する -|'eadirection'| |'ead'| 'equalalways'の適用方向を決める -|'edcompatible'| |'ed'| |:substitute|のフラグを切替える -|'encoding'| |'enc'| 内部で使用する文字コード -|'endofline'| |'eol'| ファイル末尾に<EOL>を書く -|'equalalways'| |'ea'| ウインドウを自動で同じ大きさに調整する -|'equalprg'| |'ep'| |=|で使用する外部プログラム -|'errorbells'| |'eb'| エラー表示時にベルを鳴らす -|'errorfile'| |'ef'| QuickFixモードで使うファイルの名前 -|'errorformat'| |'efm'| エラーファイルの書式の定義 -|'esckeys'| |'ek'| 挿入モードで機能キーを有効にする -|'eventignore'| |'ei'| 無視するオートコマンドのイベント -|'expandtab'| |'et'| <Tab>入力でスペースを入力する -|'exrc'| |'ex'| カレントディレクトリの.vimrcと.exrcを読み込む -|'fileencoding'| |'fenc'| ファイルの文字コード指定 -|'fileencodings'| |'fencs'| 自動認識する'fileencoding'のリスト -|'fileformat'| |'ff'| ファイル入出力時のファイルのフォーマット -|'fileformats'| |'ffs'| 自動認識する'fileformat'のリスト -|'filetype'| |'ft'| オートコマンドで使うファイルタイプ名 -|'fillchars'| |'fcs'| 特殊な表示に使う文字 -|'fkmap'| |'fk'| ペルシア語のキーボードマッピング -|'foldclose'| |'fcl'| カーソル下以外の折畳みを閉じる -|'foldcolumn'| |'fdc'| 折畳みを示すのに使う列幅 -|'foldenable'| |'fen'| 全ての折畳みの開閉を設定する -|'foldexpr'| |'fde'| 'foldmethod'が"expr"の時に使う式 -|'foldignore'| |'fdi'| 'foldmethod'が"indent"の時に無視する行 -|'foldlevel'| |'fdl'| この値より高いレベルの折畳みを閉じる -|'foldlevelstart'| |'fdls'| 'foldlevel'の初期値 -|'foldmarker'| |'fmr'| 'foldmethod'が"marker"の時に使うマーカー -|'foldmethod'| |'fdm'| 折畳みの種類 -|'foldminlines'| |'fml'| 閉じることのできる折畳みの最小行数 -|'foldnestmax'| |'fdn'| 折畳みの深さの制限 -|'foldopen'| |'fdo'| 折畳みを開くことのできるコマンド -|'foldtext'| |'fdt'| 閉じた折畳みの表示に使う式 -|'formatlistpat'| |'flp'| リストのヘッダを認識するためのパターン -|'formatoptions'| |'fo'| 自動整形の動作定義 -|'formatprg'| |'fp'| |gq|で使う外部プログラム -|'formatexpr'| |'fex'| |gq|で使う式 -|'fsync'| |'fs'| ファイルを書き込んだ後に fsync() を呼ぶかどうか -|'gdefault'| |'gd'| |:substitute|で"g"を既定で有効にする -|'grepformat'| |'gfm'| 'grepprg'の出力の書式 -|'grepprg'| |'gp'| |:grep|で使う外部プログラム -|'guicursor'| |'gcr'| GUI: カーソルの形と点滅を設定する -|'guifont'| |'gfn'| GUI: 使用するフォント(複数可) -|'guifontset'| |'gfs'| GUI: マルチバイト用のフォント -|'guifontwide'| |'gfw'| 全角文字用のフォントのリスト -|'guiheadroom'| |'ghr'| GUI: ウインドウ装飾用の余地。ピクセル単位 -|'guioptions'| |'go'| GUI: GUIに特化したオプション -|'guipty'| GUI: |:!|でpseudo-ttyの使用を試みる -|'guitablabel'| |'gtl'| GUI: タブページのラベル設定 -|'guitabtooltip'| |'gtt'| GUI: タブページのツールチップ設定 -|'helpfile'| |'hf'| メインのヘルプファイルのフルパス指定 -|'helpheight'| |'hh'| ヘルプウインドウの最小高さ -|'helplang'| |'hlg'| 優先するヘルプ用の言語 -|'hidden'| |'hid'| バッファが|abandon|(捨て)られても破棄しない -|'highlight'| |'hl'| 様々な対象に対する強調表示モードの設定 -|'hlsearch'| |'hls'| 最後に検索したパターンを強調表示する -|'history'| |'hi'| コマンドライン履歴の記録数 -|'hkmap'| |'hk'| ヘブライ語のキーボードマッピング -|'hkmapp'| |'hkp'| 発音に即したヘブライ語のキーボードマッピング -|'icon'| Vimのアイコン表示でテキストを変更するようにする -|'iconstring'| Vimのアイコン表示に使用するテキスト -|'ignorecase'| |'ic'| 検索パターンで大文字と小文字を区別しない -|'imactivatekey'| |'imak'| X のインプットメソッドを有効にするキー -|'imcmdline'| |'imc'| コマンドライン入力時にIMを有効にする -|'imdisable'| |'imd'| IMを使わない -|'iminsert'| |'imi'| 挿入モードで|:lmap|やIMを使う -|'imsearch'| |'ims'| 検索パターン入力時に|:lmap|やIMを使う -|'include'| |'inc'| インクルードファイルの検索パターン -|'includeexpr'| |'inex'| インクルード行を処理する式 -|'incsearch'| |'is'| 検索パターン入力中にその文字を強調表示する -|'indentexpr'| |'inde'| 行をインデントする式 -|'indentkeys'| |'indk'| 'indentexpr'でインデントを開始するキー -|'infercase'| |'inf'| キーワード補完で大文字小文字を調整する -|'insertmode'| |'im'| 挿入モードで編集を開始する -|'isfname'| |'isf'| ファイル名、パス名に含まれる文字 -|'isident'| |'isi'| 識別子に含まれる文字 -|'iskeyword'| |'isk'| キーワードに含まれる文字 -|'isprint'| |'isp'| 視覚可能な文字 -|'joinspaces'| |'js'| 行連結時にピリオドの後に空白を2つ入れる -|'key'| 暗号鍵 -|'keymap'| |'kmp'| キーボードマッピングの名前 -|'keymodel'| |'km'| 範囲選択を開始/終了するキー -|'keywordprg'| |'kp'| |K|で使う外部プログラム -|'langmap'| |'lmap'| 他の言語モードでの文字 -|'langmenu'| |'lm'| メニュー表示用言語 -|'laststatus'| |'ls'| 最下ウインドウにいつステータス行を表示するか -|'lazyredraw'| |'lz'| マクロ実行中に表示を更新しない -|'linebreak'| |'lbr'| 長い行を空白で折り返す -|'lines'| 表示行数 -|'linespace'| |'lsp'| 行間のピクセル数 -|'lisp'| Lisp用自動インデント -|'lispwords'| |'lw'| Lisp用インデントの動作定義 -|'list'| <Tab>や<EOL>を表示する -|'listchars'| |'lcs'| 'list'オン時に使う文字 -|'loadplugins'| |'lpl'| 起動時にプラグインスクリプトを読み込む -|'macatsui'| Mac GUI: ATSUI テキスト描画を使う -|'magic'| 検索パターン内の特殊文字を変更する -|'makeef'| |'mef'| |:make|用のエラーファイル -|'makeprg'| |'mp'| |:make|で使う外部プログラム -|'matchpairs'| |'mps'| |%|で探す文字ペア -|'matchtime'| |'mat'| 'showmatch'で対応カッコを表示する時間。0.1秒単位 -|'maxcombine'| |'mco'| 表示できる文字の組合せの最大数 -|'maxfuncdepth'| |'mfd'| ユーザ定義関数の再帰呼び出しの最大数 -|'maxmapdepth'| |'mmd'| マッピングの再帰定義の最大数 -|'maxmem'| |'mm'| 1つのバッファに使える最大メモリ(Kbyte単位) -|'maxmempattern'| |'mmp'| 検索に使える最大メモリ(Kbyte単位) -|'maxmemtot'| |'mmt'| 全てのバッファに使える最大メモリ(Kbyte単位) -|'menuitems'| |'mis'| メニューに登録できる項目の最大数 -|'mkspellmem'| |'msm'| |:mkspell|がツリーを圧縮する前に使われるメモリ -|'modeline'| |'ml'| ファイルの先頭や末尾のモードラインを許可する -|'modelines'| |'mls'| モードラインをチェックする行数 -|'modifiable'| |'ma'| ファイルの変更許可 -|'modified'| |'mod'| バッファが変更されているか -|'more'| スクリーンを埋めるような出力で一時停止するか -|'mouse'| マウスを使うか -|'mousefocus'| |'mousef'| マウスの移動でキーボードのフォーカスを移動する -|'mousehide'| |'mh'| 入力時にマウスポインタを非表示にする -|'mousemodel'| |'mousem'| マウスボタンの機能を変える -|'mouseshape'| |'mouses'| モード別にマウスポインタの形を変える -|'mousetime'| |'mouset'| ダブルクリックの間隔時間 -|'mzquantum'| |'mzq'| MzSchemeスレッドに切り替える間隔 -|'nrformats'| |'nf'| CTRL-A用の数値書式 -|'number'| |'nu'| 行番号を表示する -|'numberwidth'| |'nuw'| 行番号に使われる桁数 -|'omnifunc'| |'ofu'| ファイル形式ごとの補完に使われる -|'operatorfunc'| |'opfunc'| オペレータ|g@|で呼ばれる関数 -|'osfiletype'| |'oft'| オペレーティングシステムのファイル付加情報 -|'paragraphs'| |'para'| 段落を分けるためのnroffのマクロ -|'paste'| Pasteモードに移行 -|'pastetoggle'| |'pt'| 'paste'を切替えるキー -|'patchexpr'| |'pex'| パッチを適用するための式 -|'patchmode'| |'pm'| 最初のバージョンを保全する -|'path'| |'pa'| |gf|などでファイルを検索するディレクトリのリスト -|'preserveindent'| |'pi'| 再インデント時にインデントの構造を保つ -|'previewheight'| |'pvh'| プレビューウインドウの高さ -|'previewwindow'| |'pvw'| プレビューウインドウを決める -|'printdevice'| |'pdev'| |:hardcopy|で使うプリンタの名前 -|'printencoding'| |'penc'| 印刷で使う文字コード -|'printexpr'| |'pexpr'| |:hardcopy|でPostScriptを印刷するための式 -|'printfont'| |'pfn'| |:hardcopy|で使用するフォント -|'printheader'| |'pheader'| |:hardcopy|で使用するヘッダ -|'printmbcharset'| |'pmbcs'| :hardcopyに使われるCJK文字集合 -|'printmbfont'| |'pbmfn'| :hardcopyの出力に使われるフォント名 -|'printoptions'| |'popt'| |:hardcopy|の出力をコントロールする -|'pumheight'| |'ph'| ポップアップメニューの高さの最大値 -|'quoteescape'| |'qw'| 文字列中に使われるエスケープ文字 -|'readonly'| |'ro'| バッファの書き込みを制限する -|'remap'| 再帰的マッピングを有効にする -|'report'| 変更された行の数の方向が出る最小値 -|'restorescreen'| |'rs'| Win32: 終了時スクリーンを更新する -|'revins'| |'ri'| 挿入モードで入力方向が逆になる -|'rightleft'| |'rl'| "右から左"指向のウインドウ -|'rightleftcmd'| |'rlc'| "右から左"に入力するコマンド -|'ruler'| |'ru'| ステータスラインにカーソルが位置する場所を表示する -|'rulerformat'| |'ruf'| 'ruler'用のフォーマット -|'runtimepath'| |'rtp'| ランタイムファイル用のディレクトリのリスト -|'scroll'| |'scr'| CTRL-UやCTRL-Dでスクロールする行数 -|'scrollbind'| |'scb'| 他のウインドウと同期してスクロールする -|'scrolljump'| |'sj'| スクロールする行数の最小値 -|'scrolloff'| |'so'| カーソルの上下に確保する表示行 -|'scrollopt'| |'sbo'| 'scrollbind'がどのように振舞うか -|'sections'| |'sect'| 節を分けるためのnroffのマクロ -|'secure'| カレントディレクトリの.vimrcを安全に読む -|'selection'| |'sel'| 選択時の動作を設定する -|'selectmode'| |'slm'| ビジュアルモードでなくセレクトモードを開始する条件 -|'sessionoptions'| |'ssop'| |:mksession|用のオプション -|'shell'| |'sh'| 外部プログラム使用時のシェル -|'shellcmdflag'| |'shcf'| シェル実行時のフラグ -|'shellpipe'| |'sp'| |:make|の出力をエラーファイルに入れるのに使う文字 -|'shellquote'| |'shq'| シェルで使う引用符 -|'shellredir'| |'srr'| フィルタの出力を一時ファイルに入れるのに使う文字 -|'shellslash'| |'ssl'| シェルで使うファイルのパス区切りに使う -|'shelltemp'| |'stmp'| シェルコマンドに一時ファイルを使うかどうか -|'shelltype'| |'st'| Amiga: シェルの使い方に影響する -|'shellxquote'| |'sxq'| 'shellquote'に似ているがリダイレクションを含む -|'shiftround'| |'sr'| インデントを'shiftwidth'の倍数に丸める -|'shiftwidth'| |'sw'| (自動的な)インデントにつかうシフト幅 -|'shortmess'| |'shm'| メッセージを短縮するフラグのリスト -|'shortname'| |'sn'| MS-DOS以外: ファイル名が8.3形式であると仮定する -|'showbreak'| |'sbr'| 折り返し表示された行の最初に表示する文字 -|'showcmd'| |'sc'| (未完の)コマンドをステータス行に表示する -|'showfulltag'| |'sft'| タグで補完する時完全なタグのパターンを表示する -|'showmatch'| |'sm'| 括弧入力時に対応する括弧を知らせる -|'showmode'| |'smd'| ステータスラインに現在のモードを表示する -|'showtabline'| |'stal'| いつタブページ行を表示するか -|'sidescroll'| |'ss'| 水平スクロールの刻み幅 -|'sidescrolloff'| |'siso'| カーソルの左右に確保する表示幅 -|'smartcase'| |'scs'| パターンが大文字を含むときは文字の大小を区別する -|'smartindent'| |'si'| C言語用の高度な自動インデント -|'smarttab'| |'sta'| <Tab>入力時に'shiftwidth'を使う -|'softtabstop'| |'sts'| <Tab>で入力する空白の数 -|'spell'| スペルチェッキングを有効にする -|'spellcapcheck'| |'spc'| スペルチェッキングを有効にする -|'spellfile'| |`spf`| |zg|と|zw|が単語を保存するファイル -|'spelllang'| |'spl'|スペルチェックをする言語 -|'spellsuggest'| |'sps'|スペリング訂正をするのに使われるメソッド -|'splitbelow'| |'sb'| ウインドウの横分割で新規ウィンドウを下に作る -|'splitright'| |'spr'| ウインドウの縦分割で新規ウィンドウを右に作る -|'startofline'| |'sol'| あるコマンドで行の最初の余白にカーソルを移動する -|'statusline'| |'stl'| ステータスラインの表示内容を設定する -|'suffixes'| |'su'| ファイルが複数マッチした時に無視する拡張子 -|'suffixesadd'| |'sua'| 検索対象のファイルの拡張子 -|'swapfile'| |'swf'| スワップファイルを使うかどうか -|'swapsync'| |'sws'| スワップファイルの同期方法 -|'switchbuf'| |'swb'| バッファ切替え時の動作 -|'synmaxcol'| |'sws'| 構文アイテムを見つける際の最大桁 -|'syntax'| |'syn'| カレントバッファの構文強調表示の定義 -|'tabstop'| |'ts'| <Tab>の表示幅 -|'tabline'| |'tal'| コンソールのタブページラインのカスタムフォーマット -|'tabpagemax'| |'tpm'| タブページの最大数。|-p|と"tab all"に使われる。 -|'tagbsearch'| |'tbs'| タグファイルの検索にバイナリサーチを使う -|'taglength'| |'tl'| 意味を持つタグ名の文字数 -|'tagrelative'| |'tr'| タグファイル内のファイル名が相対的になる -|'tags'| |'tag'| タグコマンドで使うファイルのリスト -|'tagstack'| |'tgst'| タグスタックにタグをプッシュする -|'term'| ターミナルの名前 -|'termbidi'| |'tbidi'| ターミナルが双方向性を持っている -|'termencoding'| |'tenc'| ターミナルが使用する文字コード -|'terse'| いくつかのメッセージを省略する -|'textauto'| |'ta'| 廃止。今は'fileformats'を使う -|'textmode'| |'tx'| 廃止。今は'fileformat'を使う -|'textwidth'| |'tw'| 入力されているテキストの最大幅 -|'thesaurus'| |'tsr'| キーワードの同義語補完に使うファイルのリスト -|'tildeop'| |'top'| "~"がoperatorのように振舞う -|'timeout'| |'to'| マッピングやキーコード入力の時間制限 -|'timeoutlen'| |'tm'| 入力をタイムアウトにするミリ秒単位の時間 -|'title'| ウインドウのタイトルを変更するようにする -|'titlelen'| ウインドウのタイトルの'columns'(列幅)の割合 -|'titleold'| 終了時に戻す古いタイトル -|'titlestring'| ウインドウのタイトル -|'toolbar'| |'tb'| GUI: ツールバーに表示する内容 -|'toolbariconsize'| |'tbis'| ツールバーアイコンのサイズ(GTK2だけ) -|'ttimeout'| マッピング入力の時間制限 -|'ttimeoutlen'| |'ttm'| キーコード入力をタイムアウトにするミリ秒単位の時間 -|'ttybuiltin'| |'tbi'| 外部のtermcapの前に組込みのtermcapを探す -|'ttyfast'| |'tf'| 高速ターミナル接続を行う -|'ttymouse'| |'ttym'| マウスコードの種類 -|'ttyscroll'| |'tsl'| 画面をスクロールする行数の最大値 -|'ttytype'| |'tty'| 'term'の別名 -|'undolevels'| |'ul'| アンドゥ可能な回数の最大値 -|'updatecount'| |'uc'| この回数だけ入力するとスワップファイルを更新する -|'updatetime'| |'ut'| この時間だけ入力がなければスワップファイルを更新する -|'verbose'| |'vbs'| 有益なメッセージを表示する -|'verbosefile'| |'vfile'| メッセージを書き込むファイル -|'viewdir'| |'vdir'| |:mkview|によるファイルを格納するディレクトリ -|'viewoptions'| |'vop'| |:mkview|の保存内容を決める -|'viminfo'| |'vi'| 起動時と終了時に.viminfoファイルを使う -|'virtualedit'| |'ve'| フリーカーソルモードを使う場面 -|'visualbell'| |'vb'| ビープの代わりにvisualベル(画面フラッシュ)を使用 -|'warn'| バッファ変更済み時にシェル使用で警告する -|'weirdinvert'| |'wi'| 異なる表示方法を持つターミナル用 -|'whichwrap'| |'ww'| 行を越えて機能するキーを設定する -|'wildchar'| |'wc'| コマンドラインでワイルドカードの展開に使うキー -|'wildcharm'| |'wcm'| 'wildchar'に似た、マッピング内で使うもの -|'wildignore'| |'wig'| リスト内のどれかにマッチしたファイル名は補完しない -|'wildmenu'| |'wmnu'| コマンドラインで補完候補をメニュー表示する -|'wildmode'| |'wim'| 'wildchar'の補完モード -|'wildoptions'| |'wop'| コマンドライン補完をどう行うか指定する -|'winaltkeys'| |'wak'| GUIでのALTキーの使い方 -|'winheight'| |'wh'| カレントウィンドウの行数の最小値 -|'winfixheight'| |'wfh'| ウィンドウの高さをキープする -|'winfixwidth'| |'wfh'| ウィンドウの幅をキープする -|'winminheight'| |'wmh'| カレントウィンドウ以外のウィンドウの高さの最小値 -|'winminwidth'| |'wmw'| カレントウィンドウ以外のウィンドウの幅の最小値 -|'winwidth'| |'wiw'| カレントウィンドウの幅の最小値 -|'wrap'| 長い行を折り返して表示する -|'wrapmargin'| |'wm'| 折り返しを開始する右端からの文字数 -|'wrapscan'| |'ws'| 検索がファイル末尾まで進んだら先頭から再検索 -|'write'| ファイルへの保存を許可する -|'writeany'| |'wa'| ファイルへの保存時は"!"がなくても上書きする。 -|'writebackup'| |'wb'| 上書きする時にはバックアップを作る。 -|'writedelay'| |'wd'| 入力の延滞時間を1/1000秒単位で指定(デバッグ用) +'balloondelay' 'bdlay' バルーンヘルプ(?)が出るまでの遅延時間(ms) +'ballooneval' 'beval' バルーン評価のON/OFF +'balloonexpr' 'bexpr' バルーンヘルプに表示する式 +'binary' 'bin' バイナリモードで、読み/書き/編集する +'bioskey' 'biosk' MS-DOS専用: 文字入力にbiosコールを使う +'bomb' ファイルの先頭にBOMを付加する +'breakat' 'brk' 改行の理由となる文字(???) +'browsedir' 'bsdir' ブラウズを始めるディレクトリ +'bufhidden' 'bh' ウィンドウに繋がったバッファがなくなった時の動き +'buflisted' 'bl' バッファリストにバッファを表示するかどうか +'buftype' 'bt' 特殊なタイプのバッファ +'casemap' 'cmp' 文字の大小の変換方法を決める +'cdpath' 'cd' ":cd"コマンドで検索するディレクトリ +'cedit' コマンドラインウィンドウを開くためのキー +'charconvert' 'ccv' 文字コードの変換に使用する式 +'cindent' 'cin' C言語用のインデントを行う +'cinkeys' 'cink' 'cindent'が有効な際に押すとインデントするキー +'cinoptions' 'cino' 'cindent'が有効な際のインデント方法 +'cinwords' 'cinw' 'si'、'cin'によるインデントの開始文字 +'clipboard' 'cb' 無名レジスタ操作でクリップボードを使う +'cmdheight' 'ch' コマンドライン用に表示しておく行数 +'cmdwinheight' 'cwh' コマンドライン編集に使う行数 +'columns' 'co' 画面上の桁数 +'comments' 'com' コメント行の開始を示すパターン +'commentstring' 'cms' コメント用テンプレート(foldマーカ用) +'compatible' 'cp' 可能な限りVi互換で動く +'complete' 'cpt' 挿入モードでの補完の動きを指定する +'completefunc' 'cfu' 挿入モードでの補完に使われる関数 +'completeopt' 'cot' 挿入モードでの補完のオプション +'confirm' 'cf' 未保存ファイル、リードオンリファイルの確認方法 +'conskey' 'consk' コンソールからの直接キー検出(MS-DOSのみ) +'copyindent' 'ci' 'autoindent'がすでにあるインデントを参考にする +'cpoptions' 'cpo' vi互換な振る舞いのフラグ集 +'cscopepathcomp' 'cspc' 表示するファイルパスの深さ +'cscopeprg' 'csprg' cscopeの実行ファイル +'cscopequickfix' 'csqf' cscopeの結果の表示にquickfixウインドウを使う +'cscopetag' 'cst' タグコマンドでcscopeを使う +'cscopetagorder' 'csto' |:cstag|が検索する順番を決める +'cscopeverbose' 'csverb' cscopeデータベースに追加時にメッセージを表示 +'cursorcolumn' 'cuc' カーソルがある桁を強調表示する +'cursorline' 'cuc' カーソルがある行を強調表示する +'debug' "msg"と設定すると全てのエラーが表示される +'define' 'def' マクロ定義検索パターン +'delcombine' 'deco' 合成文字の削除時に構成要素を全て消す +'dictionary' 'dict' キーワード補完に使うファイルのリスト +'diff' そのウインドウでdiffモードを使う +'diffexpr' 'dex' 差分取得に使う式 +'diffopt' 'dip' diffモードに使うオプション +'digraph' 'dg' 挿入モードで二重字の入力を有効にする +'directory' 'dir' スワップファイル用のディレクトリのリスト +'display' 'dy' テキストの表示方法を指定する +'eadirection' 'ead' 'equalalways'の適用方向を決める +'edcompatible' 'ed' |:substitute|のフラグを切替える +'encoding' 'enc' 内部で使用する文字コード +'endofline' 'eol' ファイル末尾に<EOL>を書く +'equalalways' 'ea' ウインドウを自動で同じ大きさに調整する +'equalprg' 'ep' |=|で使用する外部プログラム +'errorbells' 'eb' エラー表示時にベルを鳴らす +'errorfile' 'ef' QuickFixモードで使うファイルの名前 +'errorformat' 'efm' エラーファイルの書式の定義 +'esckeys' 'ek' 挿入モードで機能キーを有効にする +'eventignore' 'ei' 無視するオートコマンドのイベント +'expandtab' 'et' <Tab>入力でスペースを入力する +'exrc' 'ex' カレントディレクトリの.vimrcと.exrcを読み込む +'fileencoding' 'fenc' ファイルの文字コード指定 +'fileencodings' 'fencs' 自動認識する'fileencoding'のリスト +'fileformat' 'ff' ファイル入出力時のファイルのフォーマット +'fileformats' 'ffs' 自動認識する'fileformat'のリスト +'filetype' 'ft' オートコマンドで使うファイルタイプ名 +'fillchars' 'fcs' 特殊な表示に使う文字 +'fkmap' 'fk' ペルシア語のキーボードマッピング +'foldclose' 'fcl' カーソル下以外の折畳みを閉じる +'foldcolumn' 'fdc' 折畳みを示すのに使う列幅 +'foldenable' 'fen' 全ての折畳みの開閉を設定する +'foldexpr' 'fde' 'foldmethod'が"expr"の時に使う式 +'foldignore' 'fdi' 'foldmethod'が"indent"の時に無視する行 +'foldlevel' 'fdl' この値より高いレベルの折畳みを閉じる +'foldlevelstart' 'fdls' 'foldlevel'の初期値 +'foldmarker' 'fmr' 'foldmethod'が"marker"の時に使うマーカー +'foldmethod' 'fdm' 折畳みの種類 +'foldminlines' 'fml' 閉じることのできる折畳みの最小行数 +'foldnestmax' 'fdn' 折畳みの深さの制限 +'foldopen' 'fdo' 折畳みを開くことのできるコマンド +'foldtext' 'fdt' 閉じた折畳みの表示に使う式 +'formatlistpat' 'flp' リストのヘッダを認識するためのパターン +'formatoptions' 'fo' 自動整形の動作定義 +'formatprg' 'fp' |gq|で使う外部プログラム +'formatexpr' 'fex' |gq|で使う式 +'fsync' 'fs' ファイルを書き込んだ後に fsync() を呼ぶかどうか +'gdefault' 'gd' |:substitute|で"g"を既定で有効にする +'grepformat' 'gfm' 'grepprg'の出力の書式 +'grepprg' 'gp' |:grep|で使う外部プログラム +'guicursor' 'gcr' GUI: カーソルの形と点滅を設定する +'guifont' 'gfn' GUI: 使用するフォント(複数可) +'guifontset' 'gfs' GUI: マルチバイト用のフォント +'guifontwide' 'gfw' 全角文字用のフォントのリスト +'guiheadroom' 'ghr' GUI: ウインドウ装飾用の余地。ピクセル単位 +'guioptions' 'go' GUI: GUIに特化したオプション +'guipty' GUI: |:!|でpseudo-ttyの使用を試みる +'guitablabel' 'gtl' GUI: タブページのラベル設定 +'guitabtooltip' 'gtt' GUI: タブページのツールチップ設定 +'helpfile' 'hf' メインのヘルプファイルのフルパス指定 +'helpheight' 'hh' ヘルプウインドウの最小高さ +'helplang' 'hlg' 優先するヘルプ用の言語 +'hidden' 'hid' バッファが|abandon|(捨て)られても破棄しない +'highlight' 'hl' 様々な対象に対する強調表示モードの設定 +'hlsearch' 'hls' 最後に検索したパターンを強調表示する +'history' 'hi' コマンドライン履歴の記録数 +'hkmap' 'hk' ヘブライ語のキーボードマッピング +'hkmapp' 'hkp' 発音に即したヘブライ語のキーボードマッピング +'icon' Vimのアイコン表示でテキストを変更するようにする +'iconstring' Vimのアイコン表示に使用するテキスト +'ignorecase' 'ic' 検索パターンで大文字と小文字を区別しない +'imactivatekey' 'imak' X のインプットメソッドを有効にするキー +'imcmdline' 'imc' コマンドライン入力時にIMを有効にする +'imdisable' 'imd' IMを使わない +'iminsert' 'imi' 挿入モードで|:lmap|やIMを使う +'imsearch' 'ims' 検索パターン入力時に|:lmap|やIMを使う +'include' 'inc' インクルードファイルの検索パターン +'includeexpr' 'inex' インクルード行を処理する式 +'incsearch' 'is' 検索パターン入力中にその文字を強調表示する +'indentexpr' 'inde' 行をインデントする式 +'indentkeys' 'indk' 'indentexpr'でインデントを開始するキー +'infercase' 'inf' キーワード補完で大文字小文字を調整する +'insertmode' 'im' 挿入モードで編集を開始する +'isfname' 'isf' ファイル名、パス名に含まれる文字 +'isident' 'isi' 識別子に含まれる文字 +'iskeyword' 'isk' キーワードに含まれる文字 +'isprint' 'isp' 視覚可能な文字 +'joinspaces' 'js' 行連結時にピリオドの後に空白を2つ入れる +'key' 暗号鍵 +'keymap' 'kmp' キーボードマッピングの名前 +'keymodel' 'km' 範囲選択を開始/終了するキー +'keywordprg' 'kp' |K|で使う外部プログラム +'langmap' 'lmap' 他の言語モードでの文字 +'langmenu' 'lm' メニュー表示用言語 +'laststatus' 'ls' 最下ウインドウにいつステータス行を表示するか +'lazyredraw' 'lz' マクロ実行中に表示を更新しない +'linebreak' 'lbr' 長い行を空白で折り返す +'lines' 表示行数 +'linespace' 'lsp' 行間のピクセル数 +'lisp' Lisp用自動インデント +'lispwords' 'lw' Lisp用インデントの動作定義 +'list' <Tab>や<EOL>を表示する +'listchars' 'lcs' 'list'オン時に使う文字 +'loadplugins' 'lpl' 起動時にプラグインスクリプトを読み込む +'macatsui' Mac GUI: ATSUI テキスト描画を使う +'magic' 検索パターン内の特殊文字を変更する +'makeef' 'mef' |:make|用のエラーファイル +'makeprg' 'mp' |:make|で使う外部プログラム +'matchpairs' 'mps' |%|で探す文字ペア +'matchtime' 'mat' 'showmatch'で対応カッコを表示する時間。0.1秒単位 +'maxcombine' 'mco' 表示できる文字の組合せの最大数 +'maxfuncdepth' 'mfd' ユーザ定義関数の再帰呼び出しの最大数 +'maxmapdepth' 'mmd' マッピングの再帰定義の最大数 +'maxmem' 'mm' 1つのバッファに使える最大メモリ(Kbyte単位) +'maxmempattern' 'mmp' 検索に使える最大メモリ(Kbyte単位) +'maxmemtot' 'mmt' 全てのバッファに使える最大メモリ(Kbyte単位) +'menuitems' 'mis' メニューに登録できる項目の最大数 +'mkspellmem' 'msm' |:mkspell|がツリーを圧縮する前に使われるメモリ +'modeline' 'ml' ファイルの先頭や末尾のモードラインを許可する +'modelines' 'mls' モードラインをチェックする行数 +'modifiable' 'ma' ファイルの変更許可 +'modified' 'mod' バッファが変更されているか +'more' スクリーンを埋めるような出力で一時停止するか +'mouse' マウスを使うか +'mousefocus' 'mousef' マウスの移動でキーボードのフォーカスを移動する +'mousehide' 'mh' 入力時にマウスポインタを非表示にする +'mousemodel' 'mousem' マウスボタンの機能を変える +'mouseshape' 'mouses' モード別にマウスポインタの形を変える +'mousetime' 'mouset' ダブルクリックの間隔時間 +'mzquantum' 'mzq' MzSchemeスレッドに切り替える間隔 +'nrformats' 'nf' CTRL-A用の数値書式 +'number' 'nu' 行番号を表示する +'numberwidth' 'nuw' 行番号に使われる桁数 +'omnifunc' 'ofu' ファイル形式ごとの補完に使われる +'operatorfunc' 'opfunc' オペレータ|g@|で呼ばれる関数 +'osfiletype' 'oft' オペレーティングシステムのファイル付加情報 +'paragraphs' 'para' 段落を分けるためのnroffのマクロ +'paste' Pasteモードに移行 +'pastetoggle' 'pt' 'paste'を切替えるキー +'patchexpr' 'pex' パッチを適用するための式 +'patchmode' 'pm' 最初のバージョンを保全する +'path' 'pa' |gf|などでファイルを検索するディレクトリのリスト +'preserveindent' 'pi' 再インデント時にインデントの構造を保つ +'previewheight' 'pvh' プレビューウインドウの高さ +'previewwindow' 'pvw' プレビューウインドウを決める +'printdevice' 'pdev' |:hardcopy|で使うプリンタの名前 +'printencoding' 'penc' 印刷で使う文字コード +'printexpr' 'pexpr' |:hardcopy|でPostScriptを印刷するための式 +'printfont' 'pfn' |:hardcopy|で使用するフォント +'printheader' 'pheader' |:hardcopy|で使用するヘッダ +'printmbcharset' 'pmbcs' :hardcopyに使われるCJK文字集合 +'printmbfont' 'pbmfn' :hardcopyの出力に使われるフォント名 +'printoptions' 'popt' |:hardcopy|の出力をコントロールする +'pumheight' 'ph' ポップアップメニューの高さの最大値 +'quoteescape' 'qw' 文字列中に使われるエスケープ文字 +'readonly' 'ro' バッファの書き込みを制限する +'remap' 再帰的マッピングを有効にする +'report' 変更された行の数の方向が出る最小値 +'restorescreen' 'rs' Win32: 終了時スクリーンを更新する +'revins' 'ri' 挿入モードで入力方向が逆になる +'rightleft' 'rl' "右から左"指向のウインドウ +'rightleftcmd' 'rlc' "右から左"に入力するコマンド +'ruler' 'ru' ステータスラインにカーソルが位置する場所を表示する +'rulerformat' 'ruf' 'ruler'用のフォーマット +'runtimepath' 'rtp' ランタイムファイル用のディレクトリのリスト +'scroll' 'scr' CTRL-UやCTRL-Dでスクロールする行数 +'scrollbind' 'scb' 他のウインドウと同期してスクロールする +'scrolljump' 'sj' スクロールする行数の最小値 +'scrolloff' 'so' カーソルの上下に確保する表示行 +'scrollopt' 'sbo' 'scrollbind'がどのように振舞うか +'sections' 'sect' 節を分けるためのnroffのマクロ +'secure' カレントディレクトリの.vimrcを安全に読む +'selection' 'sel' 選択時の動作を設定する +'selectmode' 'slm' ビジュアルモードでなくセレクトモードを開始する条件 +'sessionoptions' 'ssop' |:mksession|用のオプション +'shell' 'sh' 外部プログラム使用時のシェル +'shellcmdflag' 'shcf' シェル実行時のフラグ +'shellpipe' 'sp' |:make|の出力をエラーファイルに入れるのに使う文字 +'shellquote' 'shq' シェルで使う引用符 +'shellredir' 'srr' フィルタの出力を一時ファイルに入れるのに使う文字 +'shellslash' 'ssl' シェルで使うファイルのパス区切りに使う +'shelltemp' 'stmp' シェルコマンドに一時ファイルを使うかどうか +'shelltype' 'st' Amiga: シェルの使い方に影響する +'shellxquote' 'sxq' 'shellquote'に似ているがリダイレクションを含む +'shiftround' 'sr' インデントを'shiftwidth'の倍数に丸める +'shiftwidth' 'sw' (自動的な)インデントにつかうシフト幅 +'shortmess' 'shm' メッセージを短縮するフラグのリスト +'shortname' 'sn' MS-DOS以外: ファイル名が8.3形式であると仮定する +'showbreak' 'sbr' 折り返し表示された行の最初に表示する文字 +'showcmd' 'sc' (未完の)コマンドをステータス行に表示する +'showfulltag' 'sft' タグで補完する時完全なタグのパターンを表示する +'showmatch' 'sm' 括弧入力時に対応する括弧を知らせる +'showmode' 'smd' ステータスラインに現在のモードを表示する +'showtabline' 'stal' いつタブページ行を表示するか +'sidescroll' 'ss' 水平スクロールの刻み幅 +'sidescrolloff' 'siso' カーソルの左右に確保する表示幅 +'smartcase' 'scs' パターンが大文字を含むときは文字の大小を区別する +'smartindent' 'si' C言語用の高度な自動インデント +'smarttab' 'sta' <Tab>入力時に'shiftwidth'を使う +'softtabstop' 'sts' <Tab>で入力する空白の数 +'spell' スペルチェッキングを有効にする +'spellcapcheck' 'spc' スペルチェッキングを有効にする +'spellfile' 'spf' zg|と|zw|が単語を保存するファイル +'spelllang' 'spl' スペルチェックをする言語 +'spellsuggest' 'sps' スペリング訂正をするのに使われるメソッド +'splitbelow' 'sb' ウインドウの横分割で新規ウィンドウを下に作る +'splitright' 'spr' ウインドウの縦分割で新規ウィンドウを右に作る +'startofline' 'sol' あるコマンドで行の最初の余白にカーソルを移動する +'statusline' 'stl' ステータスラインの表示内容を設定する +'suffixes' 'su' ファイルが複数マッチした時に無視する拡張子 +'suffixesadd' 'sua' 検索対象のファイルの拡張子 +'swapfile' 'swf' スワップファイルを使うかどうか +'swapsync' 'sws' スワップファイルの同期方法 +'switchbuf' 'swb' バッファ切替え時の動作 +'synmaxcol' 'sws' 構文アイテムを見つける際の最大桁 +'syntax' 'syn' カレントバッファの構文強調表示の定義 +'tabstop' 'ts' <Tab>の表示幅 +'tabline' 'tal' コンソールのタブページラインのカスタムフォーマット +'tabpagemax' 'tpm' タブページの最大数。|-p|と"tab all"に使われる。 +'tagbsearch' 'tbs' タグファイルの検索にバイナリサーチを使う +'taglength' 'tl' 意味を持つタグ名の文字数 +'tagrelative' 'tr' タグファイル内のファイル名が相対的になる +'tags' 'tag' タグコマンドで使うファイルのリスト +'tagstack' 'tgst' タグスタックにタグをプッシュする +'term' ターミナルの名前 +'termbidi' 'tbidi' ターミナルが双方向性を持っている +'termencoding' 'tenc' ターミナルが使用する文字コード +'terse' いくつかのメッセージを省略する +'textauto' 'ta' 廃止。今は'fileformats'を使う +'textmode' 'tx' 廃止。今は'fileformat'を使う +'textwidth' 'tw' 入力されているテキストの最大幅 +'thesaurus' 'tsr' キーワードの同義語補完に使うファイルのリスト +'tildeop' 'top' "~"がoperatorのように振舞う +'timeout' 'to' マッピングやキーコード入力の時間制限 +'timeoutlen' 'tm' 入力をタイムアウトにするミリ秒単位の時間 +'title' ウインドウのタイトルを変更するようにする +'titlelen' ウインドウのタイトルの'columns'(列幅)の割合 +'titleold' 終了時に戻す古いタイトル +'titlestring' ウインドウのタイトル +'toolbar' 'tb' GUI: ツールバーに表示する内容 +'toolbariconsize' 'tbis' ツールバーアイコンのサイズ(GTK2だけ) +'ttimeout' マッピング入力の時間制限 +'ttimeoutlen' 'ttm' キーコード入力をタイムアウトにするミリ秒単位の時間 +'ttybuiltin' 'tbi' 外部のtermcapの前に組込みのtermcapを探す +'ttyfast' 'tf' 高速ターミナル接続を行う +'ttymouse' 'ttym' マウスコードの種類 +'ttyscroll' 'tsl' 画面をスクロールする行数の最大値 +'ttytype' 'tty' 'term'の別名 +'undolevels' 'ul' アンドゥ可能な回数の最大値 +'updatecount' 'uc' この回数だけ入力するとスワップファイルを更新する +'updatetime' 'ut' この時間だけ入力がなければスワップファイルを更新 +'verbose' 'vbs' 有益なメッセージを表示する +'verbosefile' 'vfile' メッセージを書き込むファイル +'viewdir' 'vdir' |:mkview|によるファイルを格納するディレクトリ +'viewoptions' 'vop' |:mkview|の保存内容を決める +'viminfo' 'vi' 起動時と終了時に.viminfoファイルを使う +'virtualedit' 've' フリーカーソルモードを使う場面 +'visualbell' 'vb' ビープの代わりにvisualベル(画面フラッシュ)を使用 +'warn' バッファ変更済み時にシェル使用で警告する +'weirdinvert' 'wi' 異なる表示方法を持つターミナル用 +'whichwrap' 'ww' 行を越えて機能するキーを設定する +'wildchar' 'wc' コマンドラインでワイルドカードの展開に使うキー +'wildcharm' 'wcm' 'wildchar'に似た、マッピング内で使うもの +'wildignore' 'wig' リスト内のどれかにマッチしたファイル名は補完しない +'wildmenu' 'wmnu' コマンドラインで補完候補をメニュー表示する +'wildmode' 'wim' 'wildchar'の補完モード +'wildoptions' 'wop' コマンドライン補完をどう行うか指定する +'winaltkeys' 'wak' GUIでのALTキーの使い方 +'winheight' 'wh' カレントウィンドウの行数の最小値 +'winfixheight' 'wfh' ウィンドウの高さをキープする +'winfixwidth' 'wfh' ウィンドウの幅をキープする +'winminheight' 'wmh' カレントウィンドウ以外のウィンドウの高さの最小値 +'winminwidth' 'wmw' カレントウィンドウ以外のウィンドウの幅の最小値 +'winwidth' 'wiw' カレントウィンドウの幅の最小値 +'wrap' 長い行を折り返して表示する +'wrapmargin' 'wm' 折り返しを開始する右端からの文字数 +'wrapscan' 'ws' 検索がファイル末尾まで進んだら先頭から再検索 +'write' ファイルへの保存を許可する +'writeany' 'wa' ファイルへの保存時は"!"がなくても上書きする。 +'writebackup' 'wb' 上書きする時にはバックアップを作る。 +'writedelay' 'wd' 入力の延滞時間を1/1000秒単位で指定(デバッグ用) ------------------------------------------------------------------------------ -*Q_ur* Undo/Redo commands +*Q_ur* Undo/Redo コマンド |u| N u 最後の N 回分の作業をアンドゥ |CTRL-R| N CTRL-R 最後の N 回分のアンドゥを取り消す(redo) @@ -969,7 +969,7 @@ smz 号のこと。英語圏では昔から使われている。 |K| K カーソル下にある単語を'keywordprg' 外部コマン ドで調べる。(デフォルトは"man") ------------------------------------------------------------------------------ -*Q_qf* Quickfix commands +*Q_qf* Quickfix コマンド |:cc| :cc [nr] [nr]番のエラーを表示(省略すると再表示) |:cnext| :cn 次のエラーを表示 @@ -1108,6 +1108,74 @@ smz 号のこと。英語圏では昔から使われている。 |::e| :e 拡張子のみ |::s| :s/{pat}/{repl}/ {pat}を{repl}に置換 ------------------------------------------------------------------------------ +*Q_st* Starting VIM + +|-vim| vim [options] 空バッファで編集を開始する +|-file| vim [options] {file} .. 1つ以上のファイルの編集を開始する +|--| vim [options] - ファイルを標準入力から読み込む +|-tag| vim [options] -t {tag} {tag}に関連付けられたファイルを編集 +|-qf| vim [options] -q [fname] QuickFixモードで編集を開始する。 + 最初のエラーを表示する。 + + 最も有用なVimの引数(完全なリストは|startup-options|を参照) + +|-gui| -g GUIを開始する(他のオプションも併用できる) + +|-+| +[num] カーソルを[num]行に移動する(デフォルト:最後の行) +|-+c| +{command} ファイルを読み込んだ後に{command}を実行する +|-+/| +/{pat} {file} .. 最初に{pat}が現れる場所にカーソルを移動する +|-v| -v Viモード。exをノーマルモードで起動する +|-e| -e Exモード。VimをExモードで起動する +|-R| -R 読み込み専用モード。-nもセットする +|-m| -m 修正不可能にする。(オプション'write'をオフにする) +|-d| -d diffモード |diff| +|-b| -b バイナリモード +|-l| -l lispモード +|-A| -A アラビア語モード ('arabic'がセットされる) +|-F| -F ペルシア語モード ('fkmap'と'rightleft'をセット) +|-H| -H ヘブライ語モード ('hkmap'と'rightleft'をセット) +|-V| -V 冗長。役に立つメッセージを表示する +|-C| -C 互換。'compatible'をセットする +|-N| -N 非互換。'compatible'をオフにする +|-r| -r スワップファイルの一覧を表示する +|-r| -r {file} .. 破棄された編集セッションを復元する +|-n| -n スワップファイルを作らない +|-o| -o [num] [num]個のウィンドウを開く。(デフォルト:各ファイル + に対して1個) +|-f| -f GUI: foreground process。forkしない + Amiga: Vimを新しいウィンドウで起動しない + (メールなど用) +|-s| -s {scriptin} 最初にファイル{scriptin}からコマンドを読み込む +|-w| -w {scriptout} 入力された文字を{scriptout}に書き込む(追加) +|-W| -W {scriptout} 入力された文字を{scriptout}に書き込む(上書き) +|-T| -T {terminal} 端末の名前を設定する +|-d| -d {device} Amiga: {device}をコンソールとして開く +|-u| -u {vimrc} {vimrc}を初期化ファイルとして読み込む +|-U| -U {gvimrc} 同上。GUIを起動するときに使われる。 +|-i| -i {viminfo} {viminfo}から情報を読み込む +|---| -- オプション終了。以降の引数はファイル名になる +|--help| --help 引数の一覧を表示して終了する +|--version| --version バージョン情報を表示して終了する +|--| - 標準入力からファイルを読み込む +------------------------------------------------------------------------------ +*Q_ed* ファイルの編集 + + !なしの場合: 現バッファに変更が加わっている場合はコマンド失敗 + !ありの場合: 現在のバッファに対する変更は破棄して、コマンド実行 +|:edit_f| :e[dit][!] {file} {file}を編集 +|:edit| :e[dit][!] 現在のバッファ内容を再読み込み +|:enew| :ene[w][!] 新たな名前なしバッファを編集 +|:find| :fin[d][!] {file} {file} を'path' から探し、編集 + +|CTRL-^| N CTRL-^ 別ファイル N を編集(":e #N"と同じ) +|gf| gf or ]f カーソル下にある名前のファイルを編集 +|:pwd| :pwd カレントディレクトリを表示 +|:cd| :cd [path] カレントディレクトリを [path] に変更 +|:cd-| :cd - 直前のカレントディレクトリに戻る +|:file| :f[ile] 現在のファイル名とカーソル位置を表示 +|:file| :f[ile] {name} 現在のファイル名を{name}に変更 +|:files| :files 別ファイル一覧を表示 +------------------------------------------------------------------------------ *Q_fl* 引数リストの使い方 |argument-list| |:args| :ar[gs] 引数一覧を表示。現在のファイルは[ ]で囲む @@ -1162,24 +1230,6 @@ smz 号のこと。英語圏では昔から使われている。 バッファを保存 |CTRL-Z| CTRL-Z ":stop"と同じ。 ------------------------------------------------------------------------------ -*Q_ed* ファイルの編集 - - !なしの場合: 現バッファに変更が加わっている場合はコマンド失敗 - !ありの場合: 現在のバッファに対する変更は破棄して、コマンド実行 -|:edit_f| :e[dit][!] {file} {file}を編集 -|:edit| :e[dit][!] 現在のバッファ内容を再読み込み -|:enew| :ene[w][!] 新たな名前なしバッファを編集 -|:find| :fin[d][!] {file} {file} を'path' から探し、編集 - -|CTRL-^| N CTRL-^ 別ファイル N を編集(":e #N"と同じ) -|gf| gf or ]f カーソル下にある名前のファイルを編集 -|:pwd| :pwd カレントディレクトリを表示 -|:cd| :cd [path] カレントディレクトリを [path] に変更 -|:cd-| :cd - 直前のカレントディレクトリに戻る -|:file| :f[ile] 現在のファイル名とカーソル位置を表示 -|:file| :f[ile] {name} 現在のファイル名を{name}に変更 -|:files| :files 別ファイル一覧を表示 ------------------------------------------------------------------------------- *Q_ac* 自動コマンド |viminfo-file| 起動時にレジスタ、マーク、ヒストリを読み込み、終了時に保存 @@ -1299,7 +1349,7 @@ smz 号のこと。英語圏では昔から使われている。 ファイルタイプの検出を有効にする 各設定とオートインデントを有効にする ------------------------------------------------------------------------------ -*Q_gu* GUI commands +*Q_gu* GUI コマンド |:gui| :gui UNIX: GUI 版を起動 |:gui| :gui {fname} .. 同上、さらに{fname} .. を編集 @@ -1317,7 +1367,7 @@ smz 号のこと。英語圏では昔から使われている。 |:unmenu| :unmenu {mpath} {mpath}のメニューを削除する ------------------------------------------------------------------------------ -*Q_fo* Folding +*Q_fo* 折り畳みコマンド |'foldmethod'| set foldmethod=manual 手動で折畳み set foldmethod=indent インデントで折畳み From 725bae6da0517f0070f17e33e95df6f48e4176ba Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 2 Sep 2006 13:18:33 +0000 Subject: [PATCH 041/783] update quickfix to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@41 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/quickfix.jax | 447 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 386 insertions(+), 61 deletions(-) diff --git a/ja/quickfix.jax b/ja/quickfix.jax index 0c32f66fb..3fd5a8ba1 100644 --- a/ja/quickfix.jax +++ b/ja/quickfix.jax @@ -1,9 +1,9 @@ COMMENT: クイックフィックス(プログラム開発支援) -STATUS: finish 6.3.054 +STATUS: finish 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*quickfix.txt* For Vim version 6.3. Last change: 2004 May 20 +*quickfix.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIMリファレンスマニュアル by Bram Moolenaar @@ -31,10 +31,15 @@ TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> 1. QuickFixコマンドの使い方 *quickfix* *Quickfix* *E42* Vimには編集-コンパイル-編集のサイクルを加速するための特別なモードがある。これ -はAmigaのManx's Aztec C compilerにインスパイアされた。Cコンパイラから出力され -たエラーメッセージをファイルに保存し、Vimで一つずつのエラーにジャンプする。全 -てのエラーメッセージを覚えることなくそれぞれの問題を検証し、修正することができ -る。 +はAmigaのManx's Aztec C compilerのquickfixオプションにインスパイアされた。Cコ +ンパイラから出力されたエラーメッセージをファイルに保存し、Vimでそのエラーにジャ +ンプするというアイディアである。エラーメッセージを全部覚えておかなくても、それ +ぞれの問題を検証し、修正することができる。 + +QuickFixコマンドはより一般的に、ファイル中の位置のリストを作成し、ジャンプする +ために使うことができる。例えば、|:vimgrep|はパターンにマッチした位置をリストす +る。スクリプト中で|getqflist()|を使ってこれらの位置を参照することができる。 +そのため、編集・コンパイル・修正のサイクル以外にも多くの事に利用できる。 AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる方法について |quickfix-manx|を見よ。別のコンパイラを使用するならば、エラーメッセージを一度 @@ -42,7 +47,18 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる はコマンド|:make|である(後述)。各コンパイラからのエラーメッセージを解釈させる ためには、オプション'errorformat'をセットする(下の|errorformat|を参照)。 -以下のQuickFixコマンドが使える。 + *location-list* *E776* +ロケーションリストはQuickFixリストに似ていて、ファイル中の位置のリストを保持す +る。ロケーションリストはウィンドウに関連付けられていて、各ウィンドウが別々のロ +ケーションリストを持つことができる。ロケーションリストは1個のウィンドウにだけ +関連付けることができる。ロケーションリストはQuickFixリストとは独立している。 + +ロケーションリストを持つウィンドウが分割されると、新しいウィンドウはロケーショ +ンリストのコピーを得る。ロケーションリストへの参照がなくなると、そのロケーショ +ンリストは破棄される。 + +以下のQuickFixコマンドが利用できる。ロケーションリストコマンドはQuickFixコマン +ドに似ていて、QuickFixコマンドのプレフィックス'c'が'l'に置き換わっている。 *:cc* :cc[!] [nr] エラー[nr]を表示する。[nr]が省略されると同じエラーが @@ -54,22 +70,37 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる 開いているかしない場合、破棄されてしまう。 バッファ移動の際は設定'switchbuf'が関係してくる。 + *:ll* +:ll[!] [nr] ":cc"と同様だが、QuickFixリストでなくカレントウィンド + ウのロケーションリストが使われる。 + *:cn* *:cnext* *E553* :[count]cn[ext][!] ファイル名を含むエラーリストで[count]個後のエラーを表 示する。ファイル名が無かった場合[count]個後のエラーに 移動する。[!]と'switchbuf'については|:cc|を参照。 + *:lne* *:lnext* +:[count]lne[xt][!] ":cnext"と同様だが、QuickFixリストでなくカレントウィン + ドウのロケーションリストが使われる。 + :[count]cN[ext][!] *:cp* *:cprevious* *:cN* *:cNext* :[count]cp[revious][!] ファイル名を含むエラーリストで[count]個前のエラーを表 示する。ファイル名が無かった場合[count]個前のエラーに 移動する。[!]と'switchbuf'については|:cc|を参照。 +:[count]lN[ext][!] *:lp* *:lprevious* *:lN* *:lNext* +:[count]lp[revious][!] ":cNext"と":cprevious"と同様だが、QuickFixリストでな + く、カレントウィンドウのロケーションリストが使われる。 + *:cnf* *:cnfile* :[count]cnf[ile][!] ファイル名を含むエラーリストで[count]個後のファイルの 最初のエラーを表示する。ファイル名が無いか後のファイル が無い場合には、[count]後のエラーに移動する。[!]と 'switchbuf'については|:cc|を参照。 + *:lnf* *:lnfile* +:[count]lnf[ile][!] ":cnfile"と同様だが、QuickFixリストでなく、カレントウ + ィンドウのロケーションリストが使われる。 :[count]cNf[ile][!] *:cpf* *:cpfile* *:cNf* *:cNfile* :[count]cpf[ile][!] ファイル名を含むエラーリストで[count]個前のファイルの @@ -77,17 +108,31 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる が無い場合には、[count]個前のエラーに移動する。[!]と 'switchbuf'については|:cc|を参照。 +:[count]lNf[ile][!] *:lpf* *:lpfile* *:lNf* *:lNfile* +:[count]lpf[ile][!] ":cNfile"と":cpfile"と同様だが、QuickFixリストでなく、 + カレントウィンドウのロケーションリストが使われる。 + *:crewind* *:cr* :cr[ewind][!] [nr] [nr]のエラーを表示する。[nr]が省略されると一番最初の エラーが表示される。|:cc|を参照。 +:lr[ewind][!] [nr] ":crewind"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + *:cfirst* *:cfir* :cfir[st][!] [nr] ":crewind"と同じ。 + *:lfirst* *:lfir* +:lfir[st][!] [nr] ":lrewind"と同じ。 + *:clast* *:cla* :cla[st][!] [nr] [nr]のエラーを表示する。[nr]が省略されると一番最後の エラーが表示される。|:cc|を参照。 + *:llast* *:lla* +:lla[st][!] [nr] ":clast"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + *:cq* *:cquit* :cq[uit] Vimをエラーとして終了することで、コンパイラが同じ ファイルをコンパイルする事が無くなる。 @@ -100,11 +145,95 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる 'errorfile'に[errorfile]が設定される。[!]については |:cc|を参照。 - *:cg* *:cgetfile* -:cg[etfile][!] [errorfile] + *:lf* *:lfile* +:lf[ile][!] [errorfile] ":cfile"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。コマンドライ + ンオプション-qを使ってロケーションリストを設定すること + はできない。 + + +:cg[etfile][!] [errorfile] *:cg* *:cgetfile* エラーファイルを読み込む。":cfile"に似ているが、最初のエ ラーに移動しない。 +:lg[etfile][!] [errorfile] *:lg* *:lgetfile* + ":cgetfile"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + + *:caddf* *:caddfile* +:caddf[ile] [errorfile] エラーファイルを読み込み、現在のQuickFixリストにエラー + を追加する。QuickFixリストがまだない場合は、新しいリス + トが作成される。 + + *:laddf* *:laddfile* +:laddf[ile] [errorfile] ":caddfile"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + + *:cb* *:cbuffer* *E681* +:cb[uffer] [bufnr] カレントバッファからエラーリストを読み込む。[bufnr]を + 指定すると、カレントバッファの代わりにそのバッファが使 + われる。bufnrには読み込まれているバッファ番号を指定しな + ければならない。範囲を指定すると、読み込む行を指定する + ことができる。範囲指定がないとバッファ全体が使われる。 + + *:lb* *:lbuffer* +:lb[uffer] [bufnr] ":cbuffer"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + + *:cgetb* *:cgetbuffer* +:cgetb[uffer] [bufnr] カレントバッファからエラーリストを読み込む。":cbuffer" + と同じだが、最初のエラーにジャンプしない点が異なる。 + + *:lgetb* *:lgetbuffer* +:lgetb[uffer] [bufnr] ":cgetbuffer"と同様だが、QuickFixリストでなく、カレン + トウィンドウのロケーションリストが使われる。 + + *:caddb* *:caddbuffer* +:caddb[uffer] [bufnr] カレントバッファからエラーリストを読み込み、現在の + QuickFixリストにエラーを追加する。QuickFixリストが存在 + まだない場合は、新しいリストが作成される。それ以外は + :cbufferと同じ。 + + *:laddb* *:laddbuffer* +:laddb[uffer] [bufnr] ":caddbuffer"と同様だが、QuickFixリストでなく、カレン + トウィンドウのロケーションリストが使われる。 + + *:cex* *:cexpr* *E777* +:cex[pr][!] {expr} {expr}の結果を使ってQuickFixリストを作成し、最初のエラ + ーにジャンプする。{expr}が文字列のときは、その文字列を + 改行コードで区切り、各行を'errorformat'に従って解釈し、 + 結果をQuickFixリストに追加する。{expr}がリストのときは + リストの各文字列要素を解釈し、QuickFixリストに追加す + る。リスト中の文字列でない要素は無視される。[!]につい + ては|:cc|を参照。 + 例: > + :cexpr system('grep -n xyz *') + :cexpr getline(1, '$') +< + *:lex* *:lexpr* +:lex[pr][!] {expr} ":cexpr"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + + *:cgete* *:cgetexpr* +:cgete[xpr][!] {expr} {expr}の結果を使ってQuickFixリストを作成する。":cexpr" + と同様だが、最初のエラーにジャンプしない点が異なる。 + + *:lgete* *:lgetexpr* +:lgete[xpr][!] {expr} ":cgetexpr"と同様だが、QuickFixリストでなく、カレ + ントウィンドウのロケーションリストが使われる。 + + *:cad* *:caddexpr* +:cad[dexpr][!] {expr} {expr}を評価し、結果の行を現在のQuickFixリストに追加す + る。QuickFixリストがまだ無い場合は、新しいリストが作成 + される。現在のカーソル位置は変わらない。より詳しくは + |:cexpr|を参照。 + 例: > + :g/mypattern/caddexpr expand("%") . ":" . line(".") . ":" . getline(".") +< + *:lad* *:laddexpr* +:lad[dexpr][!] {expr} ":caddexpr"と同様だが、QuickFixリストでなく、カレ + ントウィンドウのロケーションリストが使われる。 + *:cl* *:clist* :cl[ist] [from] [, [to]] 有効なエラーを全て列挙する|quickfix-valid|。[from]及び @@ -116,11 +245,24 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる :cl[ist]! [from] [, [to]] 全てのエラーを表示する。 + *:lli* *:llist* +:lli[st] [from] [, [to]] + ":clist"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + +:lli[st]! [from] [, [to]] + カレントウィンドウのロケーションリストの中身を全部表示 + する。 + 正しいエラーの位置は隠されたマークによって示されているので、例え行を挿入したり 削除したとしても問題はない(Manx's Z editorではそうではない)。時々マークが幾つ かの理由で消されてしまう事があり、メッセージ"line changed"がその警告となる。 一度Vimを終了し再起動した場合マークは失われ正しいエラー位置は把握できない。 +Vimが|+autocmd|機能つきでビルドされている場合、QuickFixコマンド(':make', +':grep'など)を実行する前後に2つの自動コマンドが利用できる。詳しくは +|QuickFixCmdPre|と|QuickFixCmdPost|を参照。 + ============================================================================= 2. エラーウィンドウ *quickfix-window* @@ -134,14 +276,29 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる すでにQuickFixウィンドウがある場合はそれがカレントウィ ンドウになる。2個目のQuickFixウィンドウを開くことは出 来ない。 + + *:lop* *:lopen* +:lop[en] [height] カレントウィンドウのロケーションリストを表示するウィン + ドウを開く。カレントウィンドウにロケーションリストが存 + 在するときだけ動作する。一度に2個以上のロケーションリ + ストを開くことができる。それ以外は":copen"と同様。 + *:ccl* *:cclose* :ccl[ose] QuickFixウィンドウを閉じる。 + *:lcl* *:lclose* +:lcl[ose] カレントウィンドウのロケーションリストを表示しているウ + ィンドウを閉じる。 + *:cw* *:cwindow* :cw[indow] [height] 認識されたエラーがあるときQuickFixウィンドウを開く。 ウィンドウがすでに開いていて認識されたエラーがない 場合はウィンドウを閉じる。 + *:lw* *:lwindow* +:lw[indow] [height] ":cwindow"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + 通常、QuickFixウィンドウはスクリーンの一番下に現れる。垂直分割したウィンドウが ある場合は、一番右下に現れる。常に最大幅を占めるようにさせたい場合は :botright cwindow @@ -152,22 +309,25 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる インをマウスで上へドラッグするなど)。 QuickFixウィンドウには各行に1個ずつエラーが表示される。その行数はエラー番号に -等しい。":.cc"でカーソル下のエラーに移動できる。<CR>キーを押すのと行をダブルク -リックするのは同じ効果がある。そのエラーを含むファイルがQuickFixウィンドウの上 -に開かれる。そのファイルがすでにウィンドウに開かれていたらそのウィンドウがアク -ティブになる。そのウィンドウにあるバッファが変更されていて、そのエラーが別のフ -ァイルにある場合はエラーへの移動は失敗する。まず、そのウィンドウが破棄してもよ -いバッファを含んでいることを確かめなければならない。 +等しい。":.cc"でカーソル下のエラーに移動できる。<Enter>キーを押すのと行をダブ +ルクリックするのは同じ効果がある。そのエラーを含むファイルがQuickFixウィンドウ +の上に開かれる。そのファイルがすでにウィンドウに開かれていたらそのウィンドウが +アクティブになる。そのウィンドウにあるバッファが変更されていて、そのエラーが別 +のファイルにある場合はエラーへの移動は失敗する。まず、そのウィンドウが破棄して +もよいバッファを含んでいることを確かめなければならない。 + *CTRL-W_<Enter>* *CTRL-W_<CR>* +CTRL-W <Enter>を使うと、新しいウィンドウを開いてそこでエラーにジャンプできる。 QuickFixウィンドウが一杯になったとき、2つの自動コマンドイベントが発生する。第 一は'filetype'オプションが"qf"にセットされ、FileTypeイベントが発生する。それか -らBufReadPostイベントが発生する。これを使ってエラーリストに対して操作を行うこ -とができる。例: +らBufReadPostイベントが発生する。そのときのバッファ名は"quickfix"となる。これを +使ってエラーリストに対して操作を行うことができる。例: au BufReadPost quickfix setlocal nomodifiable - \ | silent g/^/s//\=line(".")." "/ - \ | setlocal modifiable + \ | silent exe 'g/^/s//\=line(".")." "/' + \ | setlocal nomodifiable これは各行に行番号を追加する。文字列の置換":s"コマンドの中で使われている"\="に 注目。これは式を評価するのに使われる。 +BufWinEnterイベントも発生する。ここでもバッファ名は"quickfix"になる。 注意:QuickFixウィンドウ内で変更を加えてもエラーのリストには何の影響もない。変 更を防ぐために'modifiable'がオフになっている。それでも行を削除や挿入した場合は @@ -175,6 +335,29 @@ QuickFixウィンドウが一杯になったとき、2つの自動コマンド いのなら、QuickFixウィンドウの内容をファイルに保存し、":cfile"を実行、ファイル をパースさせ、新しいエラーリストとして使うこと。 + *location-list-window* +ロケーションリストウィンドウはロケーションリストの中身を表示する。ロケーション +ウィンドウを開くと、カレントウィンドウに下に開かれ、カレントウィンドウのロケー +ションリストが表示される。ロケーションリストはQuickFixウィンドウに似ているが、 +一度に2個以上のロケーションリストウィンドウを開ける点が異なる。このウィンドウ +内でロケーションリストコマンドを使うと、表示されているロケーションリストが使わ +れる。 + +ロケーションリストウィンドウからファイルを選択すると、以下のステップによって、 +そのファイルを編集するウィンドウが探される。 + +1. ロケーションリストウィンドウに表示されているロケーションリストに関連付けら + れているウィンドウがあるなら、そのウィンドウが使われる。 +2. 上のステップが失敗した場合、そのファイルが既に他のウィンドウで開かれている + なら、そのウィンドウが使われる。 +3. 上のステップが失敗した場合、'buftype'がセットされていないバッファを表示して + いるウィンドウが存在するなら、そのウィンドウが使われる。 +4. 上のステップが失敗した場合、新しいウィンドウでファイルが開かれる。 + +上の全ての場合において、選択されたウィンドウに対してまだロケーションリストが関 +連付けられていなかった場合、ロケーションリストウィンドウに表示されているロケー +ションリストが関連づけられる。 + ============================================================================= 3. 複数のエラーリストを使う *quickfix-error-lists* @@ -188,11 +371,19 @@ QuickFixウィンドウが一杯になったとき、2つの自動コマンド その回数繰り返し移動する。既に一番古いエラーリストに いる場合、エラーメッセージが表示される。 + *:lolder* *:lol* +:lol[der] [count] ":colder"と同様だが、QuickFixリストでなく、カレン + トウィンドウのロケーションリストが使われる。 + *:cnewer* *:cnew* *E381* :cnew[er] [count] 新しいエラーリストへ移動する。[count]が与えられると、 その回数繰り返し移動する。既に一番新しいエラーリストに いる場合、エラーメッセージが表示される。 + *:lnewer* *:lnew* +:lnew[er] [count] ":cnewer"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + 新しいエラーリストが追加された時には、それがカレントリストとなる。 ":colder"が実行された後で":make"や":grep"が実行され新しいエラーリストが追加さ @@ -204,23 +395,34 @@ QuickFixウィンドウが一杯になったとき、2つの自動コマンド 4. :makeの使い方 *:make_makeprg* *:mak* *:make* -:mak[e][!] [arguments] 1. オプション'autowrite'がonならば変更のあるバッファは +:mak[e][!] [arguments] 1. vimが|+autocmd|つきでビルドされているならば、 + |QuickFixCmdPre|に関連付けられた自動コマンドが全て + 実行される。 + 2, オプション'autowrite'がonならば変更のあるバッファは 保存される。 - 2. 'makeef'からエラーファイルの名前が生成される。 + 3. 'makeef'からエラーファイルの名前が生成される。 'makeef'が"##"を含まずかつ既に名前が存在する場合 それは削除される。 - 3. オプション'makeprg'で与えられたプログラム(省略時 + 4. オプション'makeprg'で与えられたプログラム(省略時 "make")が[argument]をオプションにして実行され、 出力がerrorfileに保存される(Unixではそれも画面に echoされる)。 - 4. 'errorformat'を使ってerrorfileが読みこまれる。 - 5. [!]が与えられていないときは最初のエラーに移動する。 - 6. エラーファイルが削除される。 - 7.|:cnext|や|:cprevious|などのコマンドでエラー間を移動 + 5. 'errorformat'を使ってerrorfileが読みこまれる。 + 6. [!]が与えられていないときは最初のエラーに移動する。 + 7. エラーファイルが削除される。 + 8. vimが|+autocmd|つきでビルドされているならば、 + |QuickFixCmdPost|に関連付けられた自動コマンドが全て + 実行される。 + 9.|:cnext|や|:cprevious|などのコマンドでエラー間を移動 できる。上を参照。 このコマンドは如何なるコメントも受けつけず、どんな " という文字もargumentの一部とみなされる。 + *:lmak* *:lmake* +:lmak[e][!] [arguments] + ":make"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + コマンド":make"はオプション'makeprg'で与えられるコマンドを実行する。これは オプション'shell'で与えられたシェルにコマンドを渡す事で実行されている。以下を タイピングするのとほぼ同じである。 @@ -256,8 +458,87 @@ Unixでは"| tee"が使用される。コンパイラがファイルに出力す ファイルを作成する場合(Manx's Amiga C)に便利である。 ============================================================================== -5. :grepの使い方 *grep* *lid* - +5. :vimgrepと:grepの使い方 *grep* *lid* + +Vimにはパターンを検索する方法が2つある: 内部grepと外部grepである。内部grepの利 +点は、全てのシステム上で動作し、Vimの強力な検索パターンを使えることである。内 +部grepが目的に合わない場合は外部grepを使うことができる。 + +内部grepはファイルをメモリに読み込むため、より遅い。利点は: +- ファイルを開くときと同様に改行コードとエンコーディングが自動的に認識される。 +- Vimの検索パターンを使う。複数行にわたるパターンが使える。 +- プラグインが有効になっていれば、圧縮ファイル、リモートファイルを検索できる。 + |gzip| |netrw| + +これを行うために、Vimは各ファイルを編集するときと同じように読み込む。そのファ +イルにマッチがなかったら、そのバッファは消去(wiped out)される。多数のファイル +を扱うときのメモリ不足やファイル記述子不足を避けるために、ここではオプション +'hidden'は無視される。しかし、コマンド修飾子|:hide|が使われたときは、バッファ +が読み込まれたままになる。これによって、同じファイルを続けて検索するのがとても +高速になる。 + +5.1 Vimの内部grepの使い方 + + *:vim* *:vimgrep* *E682* *E683* +:vim[grep][!] /{pattern}/[g][j] {file} ... + ファイル{file}から{pattern}を検索し、マッチ位置をエラ + ーリストに追加する。 + フラグ'g'がない場合、各行は1度だけ追加される。 + 'g'がある場合、マッチ位置が毎回追加される。 + + {pattern}はVimの検索パターンである。/で囲まない場合、 + それが{pattern}中に現れない限り、どんな非ID文字 + (|'isident'|を参照)でも使える。 + 'ignorecase'が適用される。パターン中に|/\c|を含めると + 大文字小文字を区別しなくなり、|/\C|を含めると区別する + ようになる。これは'ignorecase'より優先される。 + 'smartcase'は適用されない。 + + このコマンドの前に数字が置かれると、その数が検索するマ + ッチの最大数となる。":1vimgrep pattern file"とすると最 + 初のマッチだけを検索する。マッチが存在するかどうかだけ + をチェックしたく、それが見つかったらすぐに終了してほし + い場合に便利である。 + + フラグ'j'がない場合、最初のマッチへジャンプする。 + 'j'がある場合はQuickFixリストが更新されるだけである。 + [!]がついた場合、カレントバッファに対する変更は全て失 + われる。 + + 進行状況を示すため、1秒程度ごとに検索されたファイル名 + が表示される。 + 例: > + :vimgrep /an error/ *.c + :vimgrep /\<FileName\>/ *.h include/* + :vimgrep /myfunc/ **/*.c +< "**"の使い方については|starstar-wildcard|を参照。 + +:vim[grep][!] {pattern} {file} ... + 上と同様だが、パターンを非ID文字で囲むのでなく、空白 + でパターンを区切る。パターンはID文字で始まらねばなら + ない。 + 例: > + :vimgrep Error *.c +< + *:lv* *:lvimgrep* +:lv[imgrep][!] /{pattern}/[g][j] {file} ... +:lv[imgrep][!] {pattern} {file} ... + ":vimgrep"と同様だが、QuickFixリストでなく、カレン + トウィンドウのロケーションリストが使われる。 + + *:vimgrepa* *:vimgrepadd* +:vimgrepa[dd][!] /{pattern}/[g][j] {file} ... +:vimgrepa[dd][!] {pattern} {file} ... + ":vimgrep"と同様だが、QuickFixリストでなく、カレン + トウィンドウのロケーションリストが使われる。 + + *:lvimgrepa* *:lvimgrepadd* +:lvimgrepa[dd][!] /{pattern}/[g][j] {file} ... +:lvimgrepa[dd][!] {pattern} {file} ... + ":vimgrepadd"と同様だが、QuickFixリストでなく、カレン + トウィンドウのロケーションリストが使われる。 + +5.2 外部grep Vimはコンパイラに対するのと同じ方法(|:make|参照)で"grep"やGNU id-utilsなどの grepライクなプログラムと連携できる。 @@ -266,8 +547,14 @@ grepライクなプログラムと連携できる。 *:gr* *:grep* :gr[ep][!] [arguments] ":make"と同じようにしかし'makeprg'の代りに'grepprg'が - 'errorformat'の代りに'grepformat'が使われる。|grep| - 参照。 + 'errorformat'の代りに'grepformat'が使われる。 + 'grepprg'が"internal"の場合、|:vimgrep|と同様に機能す + る。その場合、パターンが区切り文字が囲まれていなければ + ならないことに注意。 + + *:lgr* *:lgrep* +:lgr[ep][!] [arguments] ":grep"と同様だが、QuickFixリストでなく、カレントウィ + ンドウのロケーションリストが使われる。 *:grepa* *:grepadd* :grepa[dd][!] [arguments] @@ -276,13 +563,18 @@ grepライクなプログラムと連携できる。 Example: > :grep nothing % :bufdo grepadd! something % - 1番目のコマンドは新しい空のエラーリストを作成する。2 +< 1番目のコマンドは新しい空のエラーリストを作成する。2 番目のコマンドはバッファリスト内の各バッファに対し "grepadd"を実行する。最初のエラーへジャンプするのを避け るために!を使っていることに注意。|:bufdo|でジャンプする ことはできない。 -5.1 grepをセットアップする + *:lgrepa* *:lgrepadd* +:lgrepa[dd][!] [arguments] + ":grepadd"と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 + +5.3 grepをセットアップする 標準的な"grep"プログラムがインストールされていれば:grepコマンドはデフォルトの ままで動くだろう。使い方は標準的なコマンドにとてもよく似ている: @@ -313,7 +605,7 @@ c) 他のオプションを自動的に渡したいとき(例:大文字・小 る。 -5.2 id-utilsと共に:grepを使う +5.4 id-utilsと共に:grepを使う :grepをGNU id-utilsと共に使うにはこのようにする: @@ -327,31 +619,31 @@ c) 他のオプションを自動的に渡したいとき(例:大文字・小 (最初にmkidをするのを忘れていなければ) -5.3 :grepを使ってソースコードをわたり歩く +5.5 :vimgrepや:grepを使ってソースコードをわたり歩く Vimが保存するエラーリストのスタックを使うことによって、ファイルをわたり歩き、 関数とその関数が呼んでいる関数を探すことができる。例えば、read_file()関数に引 数を加えたいとする。次のようにコマンドを打てばよい: - :grep read_file *.c + :vimgrep /\<read_file\>/ *.c :cnでマッチのリストを巡り、引数を加えることが出来る。またあるとき上位の関数msg ()から新しい引数を得て、それを変更しなければならないとする。ならばこうするとよ い: - :grep msg *.c + :vimgrep /\<msg\>/ *.c msg()関数を変更しているときに、上位から引数を得なければならない関数をもう1個 -見つけたとする。ならばその関数を見つけるのにまた":grep"を使えばよい。1つの関 -数が終わったら、 +見つけたとする。ならばその関数を見つけるのにまた":vimgrep"を使えばよい。1つの +関数が終わったら、 :colder とすれば1つ前に戻ることができる。 -これはツリーをわたるのに似ている:":grep"が1レベル深く進むにつれて、分岐のリ -ストが1つ作られる。":colder"は1つ上に戻る。":grep"と":colder"を使ってツリー -に似た方法ですべての場所をわたることができる。これを一貫して行えば、"todo"のリ -ストを書き留めることなく、すべての場所に行くことができる。 +これはツリーをわたるのに似ている:":vimgrep"が1レベル深く進むにつれて、分岐の +リストが1つ作られる。":colder"は1つ上に戻る。":vimgrep"と":colder"を使ってツ +リーに似た方法ですべての場所をわたることができる。これを一貫して行えば、"todo" +のリストを書き留めることなく、すべての場所に行くことができる。 ============================================================================= 6. コンパイラを選ぶ *compiler-select* @@ -476,9 +768,9 @@ opmode"をサポートしていなければ、コマンドラインから\nonsto *errorformat* *E372* *E373* *E374* *E375* *E376* *E377* *E378* 'errorformat'オプションは認識されるエラーフォーマットのリストを指定する。その -中からエラーメッセージにマッチした最初のフォーマットが使われる。コンパイラが生 -成する異なるメッセージのフォーマット用、あるいは複数のコンパイラに対応するために -複数のフォーマットを加えることができる。|efm-entries|を参照。 +中からエラーメッセージにマッチした最初のフォーマットが使われる。複数のフォーマッ +トを指定して、数種類のメッセージに対応したり、複数のコンパイラに対応したりする +ことができる。|efm-entries|を参照。 'errorformat'の各要素は、scanfに似たフォーマットを記述する文字列である。はじめ に、scanfがどのようにはたらくか知る必要がある。Cコンパイラのドキュメントを読ん @@ -507,26 +799,34 @@ opmode"をサポートしていなければ、コマンドラインから\nonsto 番号とする) %*{conv} scanfに割り当てられない変換 %% 1個のリテラル'%' + %s テキスト検索 (文字列を検索) -"%f"の変換は現在の'isfname'の設定に依存する。 +"%f"の変換は現在の'isfname'の設定に依存する。"~/"はホームディレクトリ名に展開 +され、環境変数も展開される。 -変換"%f"と"%m"は文字列の終端を発見しなければならない。よってそれらには文字列 -内にあり得ない終端文字が続く必要がある。その終端文字に達するまでの全てがマッチ -文字列に含まれる。注意:"%f%l"はファイル名中の最初の'%'に達するまでの全てを含む -だろう。"%f"や"%m"が行末まで達した場合、その行の終端までの全てが含まれる。 +変換"%f"と"%m"はその文字列の終端を検出しなければならない。通常は、後に続く文字 +と要素がマッチすれば、そこが終端になる。もし後に続く要素がなかったら、その行の +残りの部分がマッチする。"%f"の後に'%'かバックスラッシュが続いているなら、それ +は'isfname'文字の列を検索する。 MS-DOS, MS-Windows and OS/2では、"C:"で始まる部分は"%f"に含まれる。"%f:"と指定 したときでもそうなる。これはアルファベット1文字の名前のファイルは検出されない ことを意味する。 "%p"の後には通常"^"をつける。これは、以下のような出力によってエラーの桁を示す -コンパイラ用に使える: +コンパイラ用に使える: > ^ -または > +または > ---------^ これは複数行のエラーメッセージでも使える。実用的なサンプルとしては |errorformat-javac|を参照。 +"%s"はエラー行の位置を探すためのテキストを指定する。そのテキストは文字列リテ +ラルして使われる。検索テキストに正確にマッチするエラー行を探すために、"^"と"$" +がテキストに加えられる。また、テキストの先頭に"\V"が追加され、"very nomagic"と +される。"%s"はエラー出力中の行番号がない行を探すために使うことができる。シェル +コマンド"grep"の出力のように。 +パターンがある場合は行番号は使われない。 ディレクトリを変更する @@ -554,17 +854,20 @@ Tipsや制限など詳細は|quickfix-directory-stack|を参照。 %W 複数行警告メッセージの開始 %I 複数行情報メッセージの開始 %A 複数行メッセージの開始(種類指定なし) + %> 現在と同じパターンで始まっている次行 |efm-%>| %C 複数行メッセージの継続 %Z 複数行メッセージの終了 これらに対して'+'と'-'をつけることもできる。|efm-ignore|を参照。 +パターンに"\n"を含めても、複数行のメッセージにはマッチしない。 + 例:コンパイラが次のフォーマットでエラーを出力したとする。 (行頭の行番号は実際の出力の一部ではない): - 1 Error 275 - 2 line 42 - 3 column 3 - 4 ' ' expected after '--' + 1 Error 275 ~ + 2 line 42 ~ + 3 column 3 ~ + 4 ' ' expected after '--' ~ 適切なエラーフォーマット文字列はこのようになる: :set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m @@ -602,6 +905,26 @@ Tipsや制限など詳細は|quickfix-directory-stack|を参照。 。そうでないと7行目は別のエラーメッセージの始まりと解釈されてしまう。エラーフ ォーマットは常に、リストの中から1つ1つ、最初のマッチが起こるまで試されていく。 + *efm-%>* +要素%>は'errorformat'の最初の方に出てくるパターンを試すのを避けるために使え +る。これはほとんど何にでもマッチするパターンに便利である。例えば、エラーが +このようなら: + + Error in line 123 of foo.c: ~ + unknown variable "i" ~ + +これは以下でマッチできる: > + :set efm=xxx,%E%>Error in line %l of %f:,%Z%m +ここで"xxx"には2番目の行にもマッチするパターンが入るとする。 + +重要: エラーフォーマットのどの部分が以前にマッチしたかは記憶されていない。すな +わち、エラーファイルの各行が毎回エラーフォーマットの各行に対してテストされる。 +例えば、次のようになっているとする: > + setlocal efm=aa,bb,cc,dd,ee +ここでaa, bbなどはエラーフォーマット文字列とする。エラーファイルの各行がパター +ンaa,次にbb,次にcc…とテストされる。ccがエラーの1つ前の行にマッチしたからといっ +て、ddが現在行に対して最初にテストされるということにはならない。ccとddが複数行 +エラーフォーマット文字列だったとしても、である。 ファイル名を分割する *errorformat-separate-filename* @@ -672,8 +995,10 @@ Tipsや制限など詳細は|quickfix-directory-stack|を参照。 中ではエスケープされて("%\\")書かれなければならない。 %. 単体の'.'という文字。 %# 単体の'*'(!)という文字。 - %^ 単体の'^'という文字。 - %$ 単体の'$'という文字。 + %^ 単体の'^'という文字。注意: これなしでも行頭にはマッチ + するので、これは特に便利ではない。 + %$ 単体の'$'という文字。注意: これなしでも行末にはマッチ + するので、これは特に便利ではない。 %[ 単体の'['という文字。文字の範囲[]のために使われる。 %~ 単体の'~'という文字。 表現の中でキャラクタクラスを使用する場合(概要は|/\i|を参照)、数量子"\+"を含む @@ -770,9 +1095,9 @@ GNU-Makeではディレクトリに入ったり出たりすると常に絶対パ GNU-makeを使用しない場合、正しいディレクトリを管理する事はもっと複雑になる。 例えばAIX-makeはワーキングディレクトリに関してなんの情報も表示しない。 -よってmakefileに"Making {target} in {dir}"をエコーするような細工が必要となる。 -ここにはディレクトリを出る時の情報とその相対パスが表示されないという重要な -問題もある。 +よってmakefileに細工が必要となる。LessTifのmakefileには"Making {target} in +{dir}"と表示するコマンドがある。ここにはディレクトリを出る時の情報とその相対 +パスが表示されないという重要な問題もある。 パスの関係とメッセージ"leave directory"が現れない問題のためにVimでは次の アルゴリズムで対処している: From a9cb0ecc7af0077bde0263239f97454d5181343f Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 2 Sep 2006 19:36:50 +0000 Subject: [PATCH 042/783] update quickfix to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@42 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/quickfix.txt | 511 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 429 insertions(+), 82 deletions(-) diff --git a/en/quickfix.txt b/en/quickfix.txt index d364474b4..73a34be0f 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 6.3. Last change: 2004 May 20 +*quickfix.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,6 +30,11 @@ The idea is to save the error messages from the compiler in a file and use Vim to jump to the errors one by one. You can examine each problem and fix it, without having to remember all the error messages. +In Vim the quickfix commands are used more generally to find a list of +positions in files. For example, |:vimgrep| finds pattern matches. You can +use the positions in a script with the |getqflist()| function. Thus you can +do a lot more than the edit/compile/fix cycle! + If you are using Manx's Aztec C compiler on the Amiga look here for how to use it with Vim: |quickfix-manx|. If you are using another compiler you should save the error messages in a file and start Vim with "vim -q filename". An @@ -37,7 +42,19 @@ easy way to do this is with the |:make| command (see below). The 'errorformat' option should be set to match the error messages from your compiler (see |errorformat| below). -The following quickfix commands can be used: + *location-list* *E776* +A location list is similar to a quickfix list and contains a list of positions +in files. A location list is associated with a window and each window can +have a separate location list. A location list can be associated with only +one window. The location list is independent of the quickfix list. + +When a window with a location list is split, the new window gets a copy of the +location list. When there are no references to a location list, the location +list is destroyed. + +The following quickfix commands can be used. The location list commands are +similar to the quickfix commands, replacing the 'c' prefix in the quickfix +command with 'l'. *:cc* :cc[!] [nr] Display error [nr]. If [nr] is omitted, the same @@ -51,18 +68,32 @@ The following quickfix commands can be used: The 'switchbuf' settings are respected when jumping to a buffer. + *:ll* +:ll[!] [nr] Same as ":cc", except the location list for the + current window is used instead of the quickfix list. + *:cn* *:cnext* *E553* :[count]cn[ext][!] Display the [count] next error in the list that includes a file name. If there are no file names at all, go to the [count] next error. See |:cc| for [!] and 'switchbuf'. + *:lne* *:lnext* +:[count]lne[xt][!] Same as ":cnext", except the location list for the + current window is used instead of the quickfix list. + :[count]cN[ext][!] *:cp* *:cprevious* *:cN* *:cNext* :[count]cp[revious][!] Display the [count] previous error in the list that includes a file name. If there are no file names at all, go to the [count] previous error. See |:cc| for [!] and 'switchbuf'. + +:[count]lN[ext][!] *:lp* *:lprevious* *:lN* *:lNext* +:[count]lp[revious][!] Same as ":cNext" and ":cprevious", except the location + list for the current window is used instead of the + quickfix list. + *:cnf* *:cnfile* :[count]cnf[ile][!] Display the first error in the [count] next file in the list that includes a file name. If there are no @@ -70,6 +101,10 @@ The following quickfix commands can be used: the [count] next error. See |:cc| for [!] and 'switchbuf'. + *:lnf* *:lnfile* +:[count]lnf[ile][!] Same as ":cnfile", except the location list for the + current window is used instead of the quickfix list. + :[count]cNf[ile][!] *:cpf* *:cpfile* *:cNf* *:cNfile* :[count]cpf[ile][!] Display the last error in the [count] previous file in the list that includes a file name. If there are no @@ -77,17 +112,34 @@ The following quickfix commands can be used: the [count] previous error. See |:cc| for [!] and 'switchbuf'. + +:[count]lNf[ile][!] *:lpf* *:lpfile* *:lNf* *:lNfile* +:[count]lpf[ile][!] Same as ":cNfile" and ":cpfile", except the location + list for the current window is used instead of the + quickfix list. + *:crewind* *:cr* :cr[ewind][!] [nr] Display error [nr]. If [nr] is omitted, the FIRST error is displayed. See |:cc|. + *:lrewind* *:lr* +:lr[ewind][!] [nr] Same as ":crewind", except the location list for the + current window is used instead of the quickfix list. + *:cfirst* *:cfir* :cfir[st][!] [nr] Same as ":crewind". + *:lfirst* *:lfir* +:lfir[st][!] [nr] Same as ":lrewind". + *:clast* *:cla* :cla[st][!] [nr] Display error [nr]. If [nr] is omitted, the LAST error is displayed. See |:cc|. + *:llast* *:lla* +:lla[st][!] [nr] Same as ":clast", except the location list for the + current window is used instead of the quickfix list. + *:cq* *:cquit* :cq[uit] Quit Vim with an error code, so that the compiler will not compile the same file again. @@ -100,16 +152,107 @@ The following quickfix commands can be used: name of the errorfile, the 'errorfile' option will be set to [errorfile]. See |:cc| for [!]. - *:cg* *:cgetfile* -:cg[etfile][!] [errorfile] + *:lf* *:lfile* +:lf[ile][!] [errorfile] Same as ":cfile", except the location list for the + current window is used instead of the quickfix list. + You can not use the -q command-line option to set + the location list. + + +:cg[etfile][!] [errorfile] *:cg* *:cgetfile* Read the error file. Just like ":cfile" but don't jump to the first error. + +:lg[etfile][!] [errorfile] *:lg* *:lgetfile* + Same as ":cgetfile", except the location list for the + current window is used instead of the quickfix list. + + *:caddf* *:caddfile* +:caddf[ile] [errorfile] Read the error file and add the errors from the + errorfile to the current quickfix list. If a quickfix + list is not present, then a new list is created. + + *:laddf* *:laddfile* +:laddf[ile] [errorfile] Same as ":caddfile", except the location list for the + current window is used instead of the quickfix list. + + *:cb* *:cbuffer* *E681* +:cb[uffer] [bufnr] Read the error list from the current buffer. + When [bufnr] is given it must be the number of a + loaded buffer. That buffer will then be used instead + of the current buffer. + A range can be specified for the lines to be used. + Otherwise all lines in the buffer are used. + + *:lb* *:lbuffer* +:lb[uffer] [bufnr] Same as ":cbuffer", except the location list for the + current window is used instead of the quickfix list. + + *:cgetb* *:cgetbuffer* +:cgetb[uffer] [bufnr] Read the error list from the current buffer. Just + like ":cbuffer" but don't jump to the first error. + + *:lgetb* *:lgetbuffer* +:lgetb[uffer] [bufnr] Same as ":cgetbuffer", except the location list for + the current window is used instead of the quickfix + list. + + *:caddb* *:caddbuffer* +:caddb[uffer] [bufnr] Read the error list from the current buffer and add + the errors to the current quickfix list. If a + quickfix list is not present, then a new list is + created. Otherwise, same as ":cbuffer". + + *:laddb* *:laddbuffer* +:laddb[uffer] [bufnr] Same as ":caddbuffer", except the location list for + the current window is used instead of the quickfix + list. + + *:cex* *:cexpr* *E777* +:cex[pr][!] {expr} Create a quickfix list using the result of {expr} and + jump to the first error. If {expr} is a String, then + each new-line terminated line in the String is + processed using 'errorformat' and the result is added + to the quickfix list. If {expr} is a List, then each + String item in the list is processed and added to the + quickfix list. Non String items in the List are + ignored. See |:cc| + for [!]. + Examples: > + :cexpr system('grep -n xyz *') + :cexpr getline(1, '$') +< + *:lex* *:lexpr* +:lex[pr][!] {expr} Same as ":cexpr", except the location list for the + current window is used instead of the quickfix list. + + *:cgete* *:cgetexpr* +:cgete[xpr][!] {expr} Create a quickfix list using the result of {expr}. + Just like ":cexpr", but don't jump to the first error. + + *:lgete* *:lgetexpr* +:lgete[xpr][!] {expr} Same as ":cgetexpr", except the location list for the + current window is used instead of the quickfix list. + + *:cad* *:caddexpr* +:cad[dexpr][!] {expr} Evaluate {expr} and add the resulting lines to the + current quickfix list. If a quickfix list is not + present, then a new list is created. The current + cursor position will not be changed. See |:cexpr| for + more information. + Example: > + :g/mypattern/caddexpr expand("%") . ":" . line(".") . ":" . getline(".") +< + *:lad* *:laddexpr* +:lad[dexpr][!] {expr} Same as ":caddexpr", except the location list for the + current window is used instead of the quickfix list. + *:cl* *:clist* :cl[ist] [from] [, [to]] List all errors that are valid |quickfix-valid|. If numbers [from] and/or [to] are given, the respective - range of errors is listed. A negative number counts + range of errors is listed. A negative number counts from the last error backwards, -1 being the last error. The 'switchbuf' settings are respected when jumping to a buffer. @@ -117,12 +260,25 @@ The following quickfix commands can be used: :cl[ist]! [from] [, [to]] List all errors. + *:lli* *:llist* +:lli[st] [from] [, [to]] + Same as ":clist", except the location list for the + current window is used instead of the quickfix list. + +:lli[st]! [from] [, [to]] + List all the entries in the location list for the + current window. + If you insert or delete lines, mostly the correct error location is still found because hidden marks are used. Sometimes, when the mark has been deleted for some reason, the message "line changed" is shown to warn you that the error location may not be correct. If you quit Vim and start again the marks are lost and the error locations may not be correct anymore. +If vim is built with |+autocmd| support, two autocommands are available for +running commands before and after a quickfix command (':make', ':grep' and so +on) is executed. See |QuickFixCmdPre| and |QuickFixCmdPost| for details. + ============================================================================= 2. The error window *quickfix-window* @@ -137,14 +293,28 @@ marks are lost and the error locations may not be correct anymore. the current window. It is not possible to open a second quickfix window. + *:lop* *:lopen* +:lop[en] [height] Open a window to show the location list for the + current window. Works only when the location list for + the current window is present. You can have more than + one location window opened at a time. Otherwise, it + acts the same as ":copen". + *:ccl* *:cclose* :ccl[ose] Close the quickfix window. + *:lcl* *:lclose* +:lcl[ose] Close the window showing the location list for the + current window. + *:cw* *:cwindow* :cw[indow] [height] Open the quickfix window when there are recognized errors. If the window is already open and there are no recognized errors, close the window. + *:lw* *:lwindow* +:lw[indow] [height] Same as ":cwindow", except use the window showing the + location list for the current window. Normally the quickfix window is at the bottom of the screen. If there are vertical splits, it's at the bottom of the rightmost column of windows. To @@ -158,23 +328,28 @@ height manually (e.g., by dragging the status line above it with the mouse). In the quickfix window, each line is one error. The line number is equal to the error number. You can use ":.cc" to jump to the error under the cursor. -Hitting the <CR> key or double-clicking the mouse on a line has the same +Hitting the <Enter> key or double-clicking the mouse on a line has the same effect. The file containing the error is opened in the window above the quickfix window. If there already is a window for that file, it is used instead. If the buffer in the used window has changed, and the error is in another file, jumping to the error will fail. You will first have to make sure the window contains a buffer which can be abandoned. + *CTRL-W_<Enter>* *CTRL-W_<CR>* +You can use CTRL-W <Enter> to open a new window and jump to the error there. When the quickfix window has been filled, two autocommand events are triggered. First the 'filetype' option is set to "qf", which triggers the -FileType event. Then the BufReadPost event is triggered. This can be used to -perform some action on the listed errors. Example: > - au BufReadPost quickfix setlocal nomodifiable - \ | silent g/^/s//\=line(".")." "/ - \ | setlocal modifiable +FileType event. Then the BufReadPost event is triggered, using "quickfix" for +the buffer name. This can be used to perform some action on the listed +errors. Example: > + au BufReadPost quickfix setlocal modifiable + \ | silent exe 'g/^/s//\=line(".")." "/' + \ | setlocal nomodifiable This prepends the line number to each line. Note the use of "\=" in the substitute string of the ":s" command, which is used to evaluate an expression. +The BufWinEnter event is also triggered, again using "quickfix" for the buffer +name. Note: Making changes in the quickfix window has no effect on the list of errors. 'modifiable' is off to avoid making changes. If you delete or insert @@ -183,6 +358,29 @@ If you really want to do this, you could write the contents of the quickfix window to a file and use ":cfile" to have it parsed and used as the new error list. + *location-list-window* +The location list window displays the entries in a location list. When you +open a location list window, it is created below the current window and +displays the location list for the current window. The location list window +is similar to the quickfix window, except that you can have more than one +location list window open at a time. When you use a location list command in +this window, the displayed location list is used. + +When you select a file from the location list window, the following steps are +used to find a window to edit the file: + +1. If a window with the location list displayed in the location list window is + present, then the file is opened in that window. +2. If the above step fails and if the file is already opened in another + window, then that window is used. +3. If the above step fails then an existing window showing a buffer with + 'buftype' not set is used. +4. If the above step fails, then the file is edited in a new window. + +In all of the above cases, if the location list for the selected window is not +yet set, then it is set to the location list displayed in the location list +window. + ============================================================================= 3. Using more than one list of errors *quickfix-error-lists* @@ -196,11 +394,19 @@ lists. They set one of the existing error lists as the current one. this [count] times. When already at the oldest error list, an error message is given. + *:lolder* *:lol* +:lol[der] [count] Same as ":colder", except use the location list for + the current window instead of the quickfix list. + *:cnewer* *:cnew* *E381* :cnew[er] [count] Go to newer error list. When [count] is given, do this [count] times. When already at the newest error list, an error message is given. + *:lnewer* *:lnew* +:lnew[er] [count] Same as ":cnewer", except use the location list for + the current window instead of the quickfix list. + When adding a new error list, it becomes the current list. When ":colder" has been used and ":make" or ":grep" is used to add a new error @@ -212,24 +418,33 @@ lists, use ":cnewer 99" first. 4. Using :make *:make_makeprg* *:mak* *:make* -:mak[e][!] [arguments] 1. If the 'autowrite' option is on, write any changed +:mak[e][!] [arguments] 1. If vim was built with |+autocmd|, all relevant + |QuickFixCmdPre| autocommands are executed. + 2. If the 'autowrite' option is on, write any changed buffers - 2. An errorfile name is made from 'makeef'. If + 3. An errorfile name is made from 'makeef'. If 'makeef' doesn't contain "##", and a file with this name already exists, it is deleted. - 3. The program given with the 'makeprg' option is + 4. The program given with the 'makeprg' option is started (default "make") with the optional [arguments] and the output is saved in the errorfile (for Unix it is also echoed on the screen). - 4. The errorfile is read using 'errorformat'. - 5. If [!] is not given the first error is jumped to. - 6. The errorfile is deleted. - 7. You can now move through the errors with commands + 5. The errorfile is read using 'errorformat'. + 6. If [!] is not given the first error is jumped to. + 7. The errorfile is deleted. + 8. If vim was built with |+autocmd|, all relevant + |QuickFixCmdPost| autocommands are executed. + 9. You can now move through the errors with commands like |:cnext| and |:cprevious|, see above. This command does not accept a comment, any " characters are considered part of the arguments. + *:lmak* *:lmake* +:lmak[e][!] [arguments] + Same as ":make", except the location list for the + current window is used instead of the quickfix list. + The ":make" command executes the command given with the 'makeprg' option. This is done by passing the command to the shell given with the 'shell' option. This works almost like typing @@ -266,7 +481,93 @@ If 'shellpipe' is empty, the {errorfile} part will be omitted. This is useful for compilers that write to an errorfile themselves (e.g., Manx's Amiga C). ============================================================================== -5. Using :grep *grep* *lid* +5. Using :vimgrep and :grep *grep* *lid* + +Vim has two ways to find matches for a pattern: Internal and external. The +advantage of the internal grep is that it works on all systems and uses the +powerful Vim search patterns. An external grep program can be used when the +Vim grep does not do what you want. + +The internal method will be slower, because files are read into memory. The +advantages are: +- Line separators and encoding are automatically recognized, as if a file is + being edited. +- Uses Vim search patterns. Multi-line patterns can be used. +- When plugins are enabled: compressed and remote files can be searched. + |gzip| |netrw| + +To be able to do this Vim loads each file as if it is being edited. When +there is no match in the file the associated buffer is wiped out again. The +'hidden' option is ignored here to avoid running out of memory or file +descriptors when searching many files. However, when the |:hide| command +modifier is used the buffers are kept loaded. This makes following searches +in the same files a lot faster. + + +5.1 using Vim's internal grep + + *:vim* *:vimgrep* *E682* *E683* +:vim[grep][!] /{pattern}/[g][j] {file} ... + Search for {pattern} in the files {file} ... and set + the error list to the matches. + Without the 'g' flag each line is added only once. + With 'g' every match is added. + + {pattern} is a Vim search pattern. Instead of + enclosing it in / any non-ID character (see + |'isident'|) can be used, so long as it does not + appear in {pattern}. + 'ignorecase' applies. To overrule it put |/\c| in the + pattern to ignore case or |/\C| to match case. + 'smartcase' is not used. + + When a number is put before the command this is used + as the maximum number of matches to find. Use + ":1vimgrep pattern file" to find only the first. + Useful if you only want to check if there is a match + and quit quickly when it's found. + + Without the 'j' flag Vim jumps to the first match. + With 'j' only the quickfix list is updated. + With the [!] any changes in the current buffer are + abandoned. + + Every second or so the searched file name is displayed + to give you an idea of the progress made. + Examples: > + :vimgrep /an error/ *.c + :vimgrep /\<FileName\>/ *.h include/* + :vimgrep /myfunc/ **/*.c +< For the use of "**" see |starstar-wildcard|. + +:vim[grep][!] {pattern} {file} ... + Like above, but instead of enclosing the pattern in a + non-ID character use a white-separated pattern. The + pattern must start with an ID character. + Example: > + :vimgrep Error *.c +< + *:lv* *:lvimgrep* +:lv[imgrep][!] /{pattern}/[g][j] {file} ... +:lv[imgrep][!] {pattern} {file} ... + Same as ":vimgrep", except the location list for the + current window is used instead of the quickfix list. + + *:vimgrepa* *:vimgrepadd* +:vimgrepa[dd][!] /{pattern}/[g][j] {file} ... +:vimgrepa[dd][!] {pattern} {file} ... + Just like ":vimgrep", but instead of making a new list + of errors the matches are appended to the current + list. + + *:lvimgrepa* *:lvimgrepadd* +:lvimgrepa[dd][!] /{pattern}/[g][j] {file} ... +:lvimgrepa[dd][!] {pattern} {file} ... + Same as ":vimgrepadd", except the location list for + the current window is used instead of the quickfix + list. + +5.2 External grep Vim can interface with "grep" and grep-like programs (such as the GNU id-utils) in a similar way to its compiler integration (see |:make| above). @@ -277,6 +578,14 @@ id-utils) in a similar way to its compiler integration (see |:make| above). *:gr* *:grep* :gr[ep][!] [arguments] Just like ":make", but use 'grepprg' instead of 'makeprg' and 'grepformat' instead of 'errorformat'. + When 'grepprg' is "internal" this works like + |:vimgrep|. Note that the pattern needs to be + enclosed in separator characters then. + + *:lgr* *:lgrep* +:lgr[ep][!] [arguments] Same as ":grep", except the location list for the + current window is used instead of the quickfix list. + *:grepa* *:grepadd* :grepa[dd][!] [arguments] Just like ":grep", but instead of making a new list of @@ -290,19 +599,24 @@ id-utils) in a similar way to its compiler integration (see |:make| above). ":grepadd" jumps to the first error, which is not allowed with |:bufdo|. -5.1 Setting up grep + *:lgrepa* *:lgrepadd* +:lgrepa[dd][!] [arguments] + Same as ":grepadd", except the location list for the + current window is used instead of the quickfix list. + +5.3 Setting up external grep If you have a standard "grep" program installed, the :grep command may work -well with the defaults. The syntax is very similar to the standard command: > +well with the defaults. The syntax is very similar to the standard command: > :grep foo *.c -Will search all files with the .c extension for the substring "foo". The +Will search all files with the .c extension for the substring "foo". The arguments to :grep are passed straight to the "grep" program, so you can use whatever options your "grep" supports. By default, :grep invokes grep with the -n option (show file and line -numbers). You can change this with the 'grepprg' option. You will need to set +numbers). You can change this with the 'grepprg' option. You will need to set 'grepprg' if: a) You are using a program that isn't called "grep" @@ -322,7 +636,7 @@ error in |quickfix| mode. You can then use the |:cnext|, |:clist|, etc. commands to see the other matches. -5.2 Using :grep with id-utils +5.4 Using :grep with id-utils You can set up :grep to work with the GNU id-utils like this: > @@ -336,31 +650,31 @@ works just as you'd expect. (provided you remembered to mkid first :) -5.3 Browsing source code with :grep +5.5 Browsing source code with :vimgrep or :grep Using the stack of error lists that Vim keeps, you can browse your files to look for functions and the functions they call. For example, suppose that you have to add an argument to the read_file() function. You enter this command: > - :grep read_file *.c + :vimgrep /\<read_file\>/ *.c You use ":cn" to go along the list of matches and add the argument. At one place you have to get the new argument from a higher level function msg(), and need to change that one too. Thus you use: > - :grep msg *.c + :vimgrep /\<msg\>/ *.c While changing the msg() functions, you find another function that needs to -get the argument from a higher level. You can again use ":grep" to find these -functions. Once you are finished with one function, you can use > +get the argument from a higher level. You can again use ":vimgrep" to find +these functions. Once you are finished with one function, you can use > :colder to go back to the previous one. -This works like browsing a tree: ":grep" goes one level deeper, creating a +This works like browsing a tree: ":vimgrep" goes one level deeper, creating a list of branches. ":colder" goes back to the previous level. You can mix -this use of ":grep" and "colder" to browse all the locations in a tree-like +this use of ":vimgrep" and "colder" to browse all the locations in a tree-like way. If you do this consistently, you will find all locations without the need to write down a "todo" list. @@ -392,7 +706,7 @@ not "b:current_compiler". What the command actually does is the following: - Execute ":runtime! compiler/{name}.vim". The plugins are expected to set options with "CompilerSet" and set the "current_compiler" variable to the name of the compiler. -- Delete the "CompilerSet user command. +- Delete the "CompilerSet" user command. - Set "b:current_compiler" to the value of "current_compiler". - Without "!" the old value of "current_compiler" is restored. @@ -428,8 +742,8 @@ stdin (standard input) will not be interactive. PYUNIT COMPILER *compiler-pyunit* This is not actually a compiler, but a unit testing framework for the -Python language. It is included into standard Python distribution -starting from version 2.0. For older versions, you can get it from +Python language. It is included into standard Python distribution +starting from version 2.0. For older versions, you can get it from http://pyunit.sourceforge.net. When you run your tests with the help of the framework, possible errors @@ -447,20 +761,20 @@ Also see http://vim.sourceforge.net/tip_view.php?tip_id=280. TEX COMPILER *compiler-tex* Included in the distribution compiler for TeX ($VIMRUNTIME/compiler/tex.vim) -uses make command if possible. If the compiler finds a file named "Makefile" +uses make command if possible. If the compiler finds a file named "Makefile" or "makefile" in the current directory, it supposes that you want to process -your *TeX files with make, and the makefile does the right work. In this case -compiler sets 'errorformat' for *TeX output and leaves 'makeprg' untouched. If +your *TeX files with make, and the makefile does the right work. In this case +compiler sets 'errorformat' for *TeX output and leaves 'makeprg' untouched. If neither "Makefile" nor "makefile" is found, the compiler will not use make. You can force the compiler to ignore makefiles by defining b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for existence only). If the compiler chose not to use make, it need to choose a right program for -processing your input. If b:tex_flavor or g:tex_flavor (in this precedence) +processing your input. If b:tex_flavor or g:tex_flavor (in this precedence) variable exists, it defines TeX flavor for :make (actually, this is the name of executed command), and if both variables do not exist, it defaults to -"latex". For example, while editing chapter2.tex \input-ed from mypaper.tex +"latex". For example, while editing chapter2.tex \input-ed from mypaper.tex written in AMS-TeX: > :let b:tex_flavor = 'amstex' @@ -470,16 +784,16 @@ written in AMS-TeX: > Note that you must specify a name of the file to process as an argument (to process the right file when editing \input-ed or \include-ed file; portable -solution for substituting % for no arguments is welcome). This is not in the +solution for substituting % for no arguments is welcome). This is not in the semantics of make, where you specify a target, not source, but you may specify filename without extension ".tex" and mean this as "make filename.dvi or filename.pdf or filename.some_result_extension according to compiler". Note: tex command line syntax is set to usable both for MikTeX (suggestion -by Srinath Avadhanula) and teTeX (checked by Artem Chuprina). Suggestion +by Srinath Avadhanula) and teTeX (checked by Artem Chuprina). Suggestion from |errorformat-LaTeX| is too complex to keep it working for different shells and OSes and also does not allow to use other available TeX options, -if any. If your TeX doesn't support "-interaction=nonstopmode", please +if any. If your TeX doesn't support "-interaction=nonstopmode", please report it with different means to express \nonstopmode from the command line. ============================================================================= @@ -513,7 +827,7 @@ Basic items column of the error, (1 <tab> == 1 character column)) %v virtual column number (finds a number representing screen column of the error (1 <tab> == 8 screen - columns) + columns)) %t error type (finds a single character) %n error number (finds a number) %m error message (finds a string) @@ -522,15 +836,15 @@ Basic items uses the length for the column number) %*{conv} any scanf non-assignable conversion %% the single '%' character + %s search text (finds a string) -The "%f" conversion depends on the current 'isfname' setting. +The "%f" conversion may depend on the current 'isfname' setting. "~/" is +expanded to the home directory and environment variables are expanded. -The "%f" and "%m" conversions have to detect the end of the string. They -should be followed by a character that cannot be in the string. Everything -up to that character is included in the string. But when the next character -is a '%' or a backslash, "%f" will look for any 'isfname' character and "%m" -finds anything. If the "%f" or "%m" is at the end, everything up to the end -of the line is included. +The "%f" and "%m" conversions have to detect the end of the string. This +normally happens by matching following characters and items. When nothing is +following the rest of the line is matched. If "%f" is followed by a '%' or a +backslash, it will look for a sequence of 'isfname' characters. On MS-DOS, MS-Windows and OS/2 a leading "C:" will be included in "%f", even when using "%f:". This means that a file name which is a single alphabetical @@ -544,6 +858,13 @@ or > to indicate the column of the error. This is to be used in a multi-line error message. See |errorformat-javac| for a useful example. +The "%s" conversion specifies the text to search for to locate the error line. +The text is used as a literal string. The anchors "^" and "$" are added to +the text to locate the error line exactly matching the search text and the +text is prefixed with the "\V" atom to make it "very nomagic". The "%s" +conversion can be used to locate lines without a line number in the error +output. Like the output of the "grep" shell command. +When the pattern is present the line number will not be used. Changing directory @@ -551,7 +872,7 @@ The following uppercase conversion characters specify the type of special format strings. At most one of them may be given as a prefix at the begin of a single comma-separated format pattern. Some compilers produce messages that consist of directory names that have to -be prepended to each file name read by %f (example: GNU make). The following +be prepended to each file name read by %f (example: GNU make). The following codes can be used to scan these directory names; they will be stored in an internal directory stack. *E379* %D "enter directory" format string; expects a following @@ -559,7 +880,7 @@ internal directory stack. *E379* %X "leave directory" format string; expects following %f When defining an "enter directory" or "leave directory" format, the "%D" or -"%X" has to be given at the start of that substring. Vim tracks the directory +"%X" has to be given at the start of that substring. Vim tracks the directory changes and prepends the current directory to each erroneous file found with a relative path. See |quickfix-directory-stack| for details, tips and limitations. @@ -568,23 +889,26 @@ limitations. Multi-line messages *errorformat-multi-line* It is possible to read the output of programs that produce multi-line -messages, ie. error strings that consume more than one line. Possible +messages, i.e. error strings that consume more than one line. Possible prefixes are: %E start of a multi-line error message %W start of a multi-line warning message %I start of a multi-line informational message %A start of a multi-line message (unspecified type) + %> for next line start with current pattern again |efm-%>| %C continuation of a multi-line message %Z end of a multi-line message These can be used with '+' and '-', see |efm-ignore| below. +Using "\n" in the pattern won't work to match multi-line messages. + Example: Your compiler happens to write out errors in the following format (leading line numbers not being part of the actual output): - 1 Error 275 - 2 line 42 - 3 column 3 - 4 ' ' expected after '--' + 1 Error 275 ~ + 2 line 42 ~ + 3 column 3 ~ + 4 ' ' expected after '--' ~ The appropriate error format string has to look like this: > :set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m @@ -623,6 +947,27 @@ starting with a space, followed by any characters to the end of the line, it also hides line 7 which would trigger a separate error message otherwise. Error format strings are always parsed pattern by pattern until the first match occurs. + *efm-%>* +The %> item can be used to avoid trying patterns that appear earlier in +'errorformat'. This is useful for patterns that match just about anything. +For example, if the error looks like this: + + Error in line 123 of foo.c: ~ + unknown variable "i" ~ + +This can be found with: > + :set efm=xxx,%E%>Error in line %l of %f:,%Z%m +Where "xxx" has a pattern that would also match the second line. + +Important: There is no memory of what part of the errorformat matched before; +every line in the error file gets a complete new run through the error format +lines. For example, if one has: > + setlocal efm=aa,bb,cc,dd,ee +Where aa, bb, etc. are error format strings. Each line of the error file will +be matched to the pattern aa, then bb, then cc, etc. Just because cc matched +the previous error line does _not_ mean that dd will be tried first on the +current line, even if cc and dd are multi-line errorformat strings. + Separate file name *errorformat-separate-filename* @@ -661,7 +1006,7 @@ A call of |:clist| writes them accordingly with their correct filenames: 9 a3.tt:67 col 3 warning: 's' already defined Unlike the other prefixes that all match against whole lines, %P, %Q and %O -can be used to match several patterns in the same line. Thus it is possible +can be used to match several patterns in the same line. Thus it is possible to parse even nested files like in the following line: {"file1" {"file2" error1} error2 {"file3" error3 {"file4" error4 error5}}} The %O then parses over strings that do not contain any push/pop file name @@ -671,11 +1016,11 @@ information. See |errorformat-LaTeX| for an extended example. Ignoring and using whole messages *efm-ignore* The codes '+' or '-' can be combined with the uppercase codes above; in that -case they have to precede the letter, eg. '%+A' or '%-G': +case they have to precede the letter, e.g. '%+A' or '%-G': %- do not include the matching multi-line in any output %+ include the whole matching line in the %m error string -One prefix is only useful in combination with '+' or '-', namely %G. It parses +One prefix is only useful in combination with '+' or '-', namely %G. It parses over lines containing general information like compiler version strings or other headers that can be skipped. %-G ignore this message @@ -690,17 +1035,19 @@ with previous versions of Vim. However, it is also possible to specify Since meta characters of the regular expression language can be part of ordinary matching strings or file names (and therefore internally have to be escaped), meta symbols have to be written with leading '%': - %\ the single '\' character. Note that this has to be + %\ The single '\' character. Note that this has to be escaped ("%\\") in ":set errorformat=" definitions. - %. the single '.' character. - %# the single '*'(!) character. - %^ the single '^' character. - %$ the single '$' character. - %[ the single '[' character for a [] character range. - %~ the single '~' character. + %. The single '.' character. + %# The single '*'(!) character. + %^ The single '^' character. Note that this is not + useful, the pattern already matches start of line. + %$ The single '$' character. Note that this is not + useful, the pattern already matches end of line. + %[ The single '[' character for a [] character range. + %~ The single '~' character. When using character classes in expressions (see |/\i| for an overview), terms containing the "\+" quantifier can be written in the scanf() "%*" -notation. Example: "%\\d%\\+" ("\d\+", "any number") is equivalent to "%*\\d". +notation. Example: "%\\d%\\+" ("\d\+", "any number") is equivalent to "%*\\d". Important note: The \(...\) grouping of sub-matches can not be used in format specifications because it is reserved for internal conversions. @@ -786,19 +1133,19 @@ required for the set command. 8. The directory stack *quickfix-directory-stack* Quickfix maintains a stack for saving all used directories parsed from the -make output. For GNU-make this is rather simple, as it always prints the -absolute path of all directories it enters and leaves. Regardless if this is +make output. For GNU-make this is rather simple, as it always prints the +absolute path of all directories it enters and leaves. Regardless if this is done via a 'cd' command in the makefile or with the parameter "-C dir" (change -to directory before reading the makefile). It may be useful to use the switch +to directory before reading the makefile). It may be useful to use the switch "-w" to force GNU-make to print out the working directory before and after processing. Maintaining the correct directory is more complicated if you don't use -GNU-make. AIX-make for example doesn't print any information about its working -directory. Then you need to enhance the makefile. In the makefile of lesstiff -there is a command which echoes "Making {target} in {dir}". The special -problem here is that it doesn't print informations on leaving the directory -and that it doesn't print the absolute path. +GNU-make. AIX-make for example doesn't print any information about its +working directory. Then you need to enhance the makefile. In the makefile of +LessTif there is a command which echoes "Making {target} in {dir}". The +special problem here is that it doesn't print informations on leaving the +directory and that it doesn't print the absolute path. To solve the problem with relative paths and missing "leave directory" messages Vim uses following algorithm: @@ -812,10 +1159,10 @@ messages Vim uses following algorithm: Additionally it is checked for every file, if it really exists in the identified directory. If not, it is searched in all other directories of the -directory stack (NOT the directory subtree!). If it is still not found, it is +directory stack (NOT the directory subtree!). If it is still not found, it is assumed that it is in Vim's current directory. -There are limitation in this algorithm. This examples assume that make just +There are limitation in this algorithm. This examples assume that make just prints information about entering a directory in the form "Making all in dir". 1) Assume you have following directories and files: @@ -862,7 +1209,7 @@ Add to your 'errorformat' to handle the above output. Note that Vim doesn't check if the directory name in a "leave directory" -messages is the current directory. This is why you could just use the message +messages is the current directory. This is why you could just use the message "Leaving dir". ============================================================================= @@ -924,7 +1271,7 @@ It should be easy to adopt the above LaTeX errorformat to any compiler output consisting of multi-line errors. The commands can be placed in a |vimrc| file or some other Vim script file, -eg. a script containing LaTeX related stuff which is loaded only when editing +e.g. a script containing LaTeX related stuff which is loaded only when editing LaTeX sources. Make sure to copy all lines of the example (in the given order), afterwards remove the comment lines. For the '\' notation at the start of some lines see @@ -938,7 +1285,7 @@ remove the comment lines. For the '\' notation at the start of some lines see :set efm=%E!\ LaTeX\ %trror:\ %m, \%E!\ %m, < Start of multi-line warning messages; the first two also - include the line number. Meaning of some regular expressions: + include the line number. Meaning of some regular expressions: - "%.%#" (".*") matches a (possibly empty) string - "%*\\d" ("\d\+") matches a number > \%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#, @@ -977,7 +1324,7 @@ remove the comment lines. For the '\' notation at the start of some lines see on a stack since the file apparently does not contain any error: > \%+O(%f)%r, -< Push a file name onto the stack. The name is given after '(': > +< Push a file name onto the stack. The name is given after '(': > \%+P(%f%r, \%+P\ %\\=(%f%r, \%+P%*[^()](%f%r, From 6572231867c6b4f6a2047342fcdb4b9828929f49 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 2 Sep 2006 20:07:14 +0000 Subject: [PATCH 043/783] update tips to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@43 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/tips.txt | 105 +++++++++++++++++++++++++++++++++++++++++----------- ja/tips.jax | 89 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 162 insertions(+), 32 deletions(-) diff --git a/en/tips.txt b/en/tips.txt index d3ffc2ed8..597664f4a 100644 --- a/en/tips.txt +++ b/en/tips.txt @@ -1,4 +1,4 @@ -*tips.txt* For Vim version 6.3. Last change: 2004 Feb 17 +*tips.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -24,6 +24,7 @@ Compressing the help files |gzip-helpfile| Hex editing |hex-editing| Executing shell commands in a window |shell-window| Using <> notation in autocommands |autocmd-<>| +Highlighting matching parens |match-parens| ============================================================================== Editing C programs *C-editing* @@ -129,26 +130,26 @@ Switching screens in an xterm *xterm-screens* *xterm-save-screen* :the same thing as each other for a given xterm setup. They not necessarily do the same thing, as this may be a termcap vs. -terminfo problem. You should be aware that there are two databases for +terminfo problem. You should be aware that there are two databases for describing attributes of a particular type of terminal: termcap and -terminfo. This can cause differences when the entries differ AND when of +terminfo. This can cause differences when the entries differ AND when of the programs in question one uses terminfo and the other uses termcap (also see |+terminfo|). In your particular problem, you are looking for the control sequences -^[[?47h and ^[[?47l. These switch between xterms alternate and main screen -buffer. As a quick workaround a command sequence like > +^[[?47h and ^[[?47l. These switch between xterms alternate and main screen +buffer. As a quick workaround a command sequence like > echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" -may do what you want. (My notation ^[ means the ESC character, further down +may do what you want. (My notation ^[ means the ESC character, further down you'll see that the databases use \E instead). On startup, vim echoes the value of the termcap variable ti (terminfo: -smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus +smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus these two variables are the correct place where the above mentioned control sequences should go. Compare your xterm termcap entry (found in /etc/termcap) with your xterm -terminfo entry (retrieved with /usr/5bin/infocmp -C xterm). Both should +terminfo entry (retrieved with /usr/5bin/infocmp -C xterm). Both should contain entries similar to: > :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: @@ -201,21 +202,22 @@ abbreviations that correct them. For example: > ============================================================================== Counting words, lines, etc. *count-items* -To count how often any pattern occurs in a buffer, set 'report' to 0, and use -the substitute command to replace the pattern with itself. The reported -number of substitutions is the number of items. Examples: > +To count how often any pattern occurs in the current buffer use the substitute +command and add the 'n' flag to avoid the substitution. The reported number +of substitutions is the number of items. Examples: > - :set report=0 - :%s/./&/g characters - :%s/\i\+/&/g words - :%s/^ lines - :%s/the/&/g "the" anywhere - :%s/\<the\>/&/g "the" as a word + :%s/./&/gn characters + :%s/\i\+/&/gn words + :%s/^//n lines + :%s/the/&/gn "the" anywhere + :%s/\<the\>/&/gn "the" as a word You might want to reset 'hlsearch' or do ":nohlsearch". +Add the 'e' flag if you don't want an error when there are no matches. -This does not work if the 'modifiable' option is off. An alternative is using -|v_g_CTRL-G| in Visual mode. +An alternative is using |v_g_CTRL-G| in Visual mode. + +If you want to find matches in multiple files use |:vimgrep|. *count-bytes* If you want to count bytes, you can use this: @@ -258,7 +260,7 @@ digraph.c and I want to rename *.c *.bla. I'd do it like this: > $ vim - :r! ls *.c + :r !ls *.c :%s/\(.*\).c/mv & \1.bla :w !sh :q! @@ -338,7 +340,7 @@ be able to give comments to the parts of the mapping. > (<> notation |<>|. Note that this is all typed literally. ^W is "^" "W", not CTRL-W. You can copy/paste this into Vim if '<' is not included in -'cpoptions') +'cpoptions'.) Note that the last comment starts with |", because the ":execute" command doesn't accept a comment directly. @@ -442,4 +444,65 @@ forget to double the number of existing backslashes and put a backslash before For a real buffer menu, user functions should be used (see |:function|), but then the <> notation isn't used, which defeats using it as an example here. +============================================================================== +Highlighting matching parens *match-parens* + +This example shows the use of a few advanced tricks: +- using the |CursorMoved| autocommand event +- using |searchpairpos()| to find a matching paren +- using |synID()| to detect whether the cursor is in a string or comment +- using |:match| to highlight something +- using a |pattern| to match a specific position in the file. + +This should be put in a Vim script file, since it uses script-local variables. +It skips matches in strings or comments, unless the cursor started in string +or comment. This requires syntax highlighting. + +A slightly more advanced version is used in the |matchparen| plugin. +> + let s:paren_hl_on = 0 + function s:Highlight_Matching_Paren() + if s:paren_hl_on + match none + let s:paren_hl_on = 0 + endif + + let c_lnum = line('.') + let c_col = col('.') + + let c = getline(c_lnum)[c_col - 1] + let plist = split(&matchpairs, ':\|,') + let i = index(plist, c) + if i < 0 + return + endif + if i % 2 == 0 + let s_flags = 'nW' + let c2 = plist[i + 1] + else + let s_flags = 'nbW' + let c2 = c + let c = plist[i - 1] + endif + if c == '[' + let c = '\[' + let c2 = '\]' + endif + let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . + \ '=~? "string\\|comment"' + execute 'if' s_skip '| let s_skip = 0 | endif' + + let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip) + + if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') + exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col . + \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' + let s:paren_hl_on = 1 + endif + endfunction + + autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren() + autocmd InsertEnter * match none +< + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/tips.jax b/ja/tips.jax index 693ca9130..7d5b2036c 100644 --- a/ja/tips.jax +++ b/ja/tips.jax @@ -3,8 +3,9 @@ STATUS: finished 6.3.054 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*tips.txt* For Vim version 6.3. Last change: 2004 Feb 17 +*tips.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,6 +31,7 @@ xterm でのスクリーンの切り替え |xterm-screens| 16進編集 |hex-editing| ウィンドーでシェルコマンドを実行する |shell-window| オートコマンドで <> 表記を使う |autocmd-<>| +対応する括弧を強調する |match-parens| ============================================================================== C のプログラムを編集する *C-editing* @@ -212,18 +214,22 @@ xterm の termcap エントリー(/etc/termcap にあります) と xterm のter ============================================================================== 単語や行などの数を数える *count-items* -バッファーの中になんらかのパターンがどのくらいの回数現れるのかを数えるには、ま -ず 'report' を 0 に設定してパターンをそれ自身に置換するコマンドを用います。報 -告される数がそのアイテムの数です。例: > +カレントバッファの中になんらかのパターンがどのくらいの回数現れるのかを数えるに +は、substituteコマンドを使い、実際に置換するのを避けるためにフラグ'n'をつけま +す。報告される数がそのアイテムの数です。例: > - :set report=0 - :%s/./&/g characters - :%s/\i\+/&/g words - :%s/^ lines - :%s/the/&/g "the" anywhere - :%s/\<the\>/&/g "the" as a word + :%s/./&/gn 文字 + :%s/\i\+/&/gn 単語 + :%s/^//n 行 + :%s/the/&/gn "the"(どこかしら) + :%s/\<the\>/&/gn "the"(単語一致) 'hlsearch'をリセットするか、":nohlsearch"をしたくなるかもしれません。 +マッチが1個もないときにエラーになってほしくなければフラグ'e'をつけます。 + +別の方法としては、ビジュアルモードで|v_g_CTRL-G|を使います。 + +複数のファイルから検索したければ|:vimgrep|を使います。 これは'modifiable'オプションがオフのときは機能しません。代わりにビジュアルモー ドで|v_g_CTRL-G|を使ってください。 @@ -269,7 +275,7 @@ digraph.c そして *.c を *.bla にリネームしたい場合次のようなコマンドを実行します: > $ vim - :r! ls *.c + :r !ls *.c :%s/\(.*\).c/mv & \1.bla :w !sh :q! @@ -454,4 +460,65 @@ Vim の中のウインドーでシェルを起動できるかという質問が 実際のバッファメニューではユーザー定義関数を使うべきですが(|:function|を参照)、 そうすると<>表記は使いませんので、ここでの例としてそれを使うのは不適切です。 +============================================================================== +対応する括弧を強調する *match-parens* + +この例はいくつかの高度なトリックを紹介しています。 +- 自動コマンドイベント|CursorMoved|の使い方 +- |searchpairpos()|を使って対応する括弧を見つける方法 +- |synID()|を使ってカーソルが文字列やコメントの中にあるかを判定する方法 +- |:match|を使ってなにかを強調する方法 +- |pattern|を使ってファイルの特定の位置にマッチさせる方法 + +これはスクリプトローカル変数を使っているので、Vimスクリプトファイル中に書かな +ければなりません。カーソルが文字列やコメントの中にないならば、文字列やコメント +はスキップして検索します。構文強調が有効になっている必要があります。 + +これより若干高度なバージョンがプラグイン|matchparen|の中で使われています。 +> + let s:paren_hl_on = 0 + function s:Highlight_Matching_Paren() + if s:paren_hl_on + match none + let s:paren_hl_on = 0 + endif + + let c_lnum = line('.') + let c_col = col('.') + + let c = getline(c_lnum)[c_col - 1] + let plist = split(&matchpairs, ':\|,') + let i = index(plist, c) + if i < 0 + return + endif + if i % 2 == 0 + let s_flags = 'nW' + let c2 = plist[i + 1] + else + let s_flags = 'nbW' + let c2 = c + let c = plist[i - 1] + endif + if c == '[' + let c = '\[' + let c2 = '\]' + endif + let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . + \ '=~? "string\\|comment"' + execute 'if' s_skip '| let s_skip = 0 | endif' + + let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip) + + if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') + exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col . + \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' + let s:paren_hl_on = 1 + endif + endfunction + + autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren() + autocmd InsertEnter * match none +< + vim:tw=78:ts=8:ft=help:norl: From 2c36ef1096078ca89fc977065fa7343167ffc04e Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sun, 3 Sep 2006 13:08:34 +0000 Subject: [PATCH 044/783] update autocmd to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@44 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/autocmd.jax | 938 +++++++++++++++++++++++++++++++++---------------- ja/tips.jax | 2 +- 2 files changed, 637 insertions(+), 303 deletions(-) diff --git a/ja/autocmd.jax b/ja/autocmd.jax index 748f0702e..f96a2b644 100644 --- a/ja/autocmd.jax +++ b/ja/autocmd.jax @@ -1,10 +1,11 @@ COMMENT: -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: GIMPAI TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*autocmd.txt* For Vim version 6.3. Last change: 2004 Apr 20 +*autocmd.txt* For Vim version 7.0. Last change: 2006 May 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -14,15 +15,17 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> 基本的な説明については、ユーザマニュアルの |40.3| 章を参照。 -1. はじめに |autocmd-intro| -2. autocommand の定義 |autocmd-define| -3. autocommand の削除 |autocmd-remove| -4. autocommand の列挙 |autocmd-list| -5. イベント |autocmd-events| -6. パターン |autocmd-patterns| -7. グループ |autocmd-groups| -8. autocommand の実行 |autocmd-execute| -9. autocommand の使用 |autocmd-use| +1. はじめに |autocmd-intro| +2. autocommand の定義 |autocmd-define| +3. autocommand の削除 |autocmd-remove| +4. autocommand の列挙 |autocmd-list| +5. イベント |autocmd-events| +6. パターン |autocmd-patterns| +7. バッファローカルな自動コマンド |autocmd-buflocal| +8. グループ |autocmd-groups| +9. autocommand の実行 |autocmd-execute| +10. autocommand の使用 |autocmd-use| +11. autocommand を無効にする |autocmd-disable| {Vi にはこういったコマンドは全くない。} {only: |+autocmd| の機能は、コンパイル時に有効にされていなければ使えない。} @@ -66,6 +69,9 @@ Note: コマンド ":autocmd" には他のコマンドを続けることはで は指定された順に実行される。 [nested] については |autocmd-nested| を参照。 +特殊なパターン<buffer>や<buffer=N>はバッファローカルな自動コマンドを定義する。 +|autocmd-buflocal|を参照. + Note ":autocmd" の引数の中の特別な文字 (例えば "%" や "<cword>" 等) は、 autocommand が定義されたときに展開されるのではなく、イベントの発生が認識され、 {cmd} が実行されるときに展開されることに注意せよ。唯一の例外は、"<sfile>" が @@ -156,21 +162,233 @@ Autocommand をテストするとき、オプション 'verbose' が便利かも の引数による動作の違いは、autocommand を定義したり除去するときとは違うことに注 意。 +バッファローカルな自動コマンドを列挙するには、<buffer>または<buffer=N>という形 +のパターンを使う。|autocmd-buflocal|を参照。 + + *:autocmd-verbose* +'verbose'がゼロでないならば、自動コマンドを列挙するときに、それが最後にどこで +定義されたかも表示する。例: > + + :verbose autocmd BufEnter + FileExplorer BufEnter + * call s:LocalBrowse(expand("<amatch>")) + Last set from /usr/share/vim/vim-7.0/plugin/NetrwPlugin.vim +< +より詳しい情報は|:verbose-cmd|を参照。 + ============================================================================== 5. イベント *autocmd-events* *E215* *E216* +複数のイベントをコンマ(,)で区切ったリストにして指定することもできる。そのリス +トにはスペースを含めてはいけません。そのコマンドは指定したリストにある全てのイ +ベントに適用されます。 + +「ファイル読み込み」には次の4種類のイベントが発生しうる。 + BufNewFile 存在しないファイルの編集を開始する。 + BufReadPre BufReadPost 既存のファイルの編集を開始する。 + FilterReadPre FilterReadPost フィルタの出力による一時ファイルを読み + 込む。 + FileReadPre FileReadPost その他のファイルを読み込む。 +Vimはファイルを読み込むときにこの4種類のうちどれか1つを利用する。"Pre"と"Post" +のイベントは、ファイル読み込みの前後で両方とも起動される。 + +Note イベント *ReadPre や、全てのイベント Filter に関する autocommand は、カレ +ントバッファを変更してはならないことに注意 (これが起きると、エラーメッセージが +表示される)。これは、間違ったバッファにファイルを読み込むのを防ぐためである。 + +Note オプション 'modified' は、BufReadPost と BufNewFile の autocommand を実行 +した「後に」オフに設定されることに注意。しかし 'modified' が autocommand から +オンに設定されたときはそうならない。 + +'eventignore' は、いくつかあるいは全てのイベントを無視するために使える。 + + *autocommand-events* *{event}* Vimは以下のイベントを認識する。イベント名が大文字か小文字かは無視される (例え ば "BufRead" の代わりに "BUFread" や "bufread" が使える)。 +まず機能ごとに短い説明とともに概要を解説する。それから完全な説明とともにアルフ +ァベット順のリストを載せる |autocmd-events-abc|。 + +名前 発生するとき ~ + + 読み込み +|BufNewFile| 存在しないファイルの編集を始めたとき +|BufReadPre| 新しいバッファの編集を始めたとき。ファイルを読み込む前 +|BufRead| 新しいバッファの編集を始めたとき。 + ファイルを読み込んだ後 +|BufReadPost| 新しいバッファの編集を始めたとき。 + ファイルを読み込んだ後 +|BufReadCmd| 新しいバッファの編集を始める前 |Cmd-event| + +|FileReadPre| ":read"でファイルを読み込む前 +|FileReadPost| ":read"でファイルを読み込んだ後 +|FileReadCmd| ":read"でファイルを読み込む前 |Cmd-event| + +|FilterReadPre| フィルタコマンドでファイルを読み込む前 +|FilterReadPost| フィルタコマンドでファイルを読み込んだ後 + +|StdinReadPre| 標準入力からバッファに読み込む前 +|StdinReadPost| 標準入力からバッファに読み込んだ後 + + 書き込み +|BufWrite| バッファ全体をファイルに書き込むとき +|BufWritePre| バッファ全体をファイルに書き込むとき +|BufWritePost| バッファ全体をファイルに書き込んだ後 +|BufWriteCmd| バッファ全体をファイルに書き込む前 |Cmd-event| + +|FileWritePre| バッファの一部をファイルに書き込むとき +|FileWritePost| バッファの一部をファイルに書き込んだ後 +|FileWriteCmd| バッファの一部をファイルに書き込む前 |Cmd-event| + +|FileAppendPre| ファイルに追加するとき +|FileAppendPost| ファイルに追加した後 +|FileAppendCmd| ファイルに追加する前 |Cmd-event| + +|FilterWritePre| フィルタコマンドやdiff用にファイルを書き込むとき +|FilterWritePost| フィルタコマンドやdiff用にファイルを書き込んだ後 + + バッファ +|BufAdd| バッファリストにバッファを追加した直後 +|BufCreate| バッファリストにバッファを追加した直後 +|BufDelete| バッファリストからバッファを削除する前 +|BufWipeout| 完全にバッファを削除する前 + +|BufFilePre| カレントバッファの名前を変える前 +|BufFilePost| カレントバッファの名前を変えた後 + +|BufEnter| バッファに入った後 +|BufLeave| 別のバッファへ移る前 +|BufWinEnter| バッファがウィンドウに表示された後 +|BufWinLeave| バッファがウィンドウから削除される前 + +|BufUnload| バッファをアンロードする前 +|BufHidden| バッファが隠れバッファになった直後 +|BufNew| 新規バッファを作成した直後 + +|SwapExists| 既存のスワップファイルを検出したとき + + オプション +|FileType| オプション'filetype'がセットされたとき +|Syntax| オプション'syntax'がセットされたとき +|EncodingChanged| オプション'encoding'が変更された後 +|TermChanged| オプション'term'が変更された後 + + 起動と終了 +|VimEnter| 全ての起動処理が終わった後 +|GUIEnter| GUIの起動が成功した後 +|TermResponse| |t_RV|に対する端末の反応を受け取った後 + +|VimLeavePre| Vimを終了する前、viminfoファイルを書き出す前 +|VimLeave| Vimを終了する前、viminfoファイルを書き出した後 + + その他 +|FileChangedShell| 編集を始めた後にファイルが変更されたことを検出したとき +|FileChangedShellPost| 編集を始めた後にファイルが変更されたことに対処した後 +|FileChangedRO| 読み込み専用ファイルに対して最初に変更を加える前 + +|ShellCmdPost| シェルコマンドを実行した後 +|ShellFilterPost| シェルコマンドでフィルタをかけた後 + +|FuncUndefined| 呼び出そうとしたユーザ定義コマンドが定義されていなかっ + たとき +|SpellFileMissing| スペリングファイルを使おうとしたが見つからなかったとき +|SourcePre| Vimスクリプトを読み込む前 + +|VimResized| Vimのウィンドウサイズが変わったとき +|FocusGained| Vimが入力フォーカスを得たとき +|FocusLost| Vimが入力フォーカスを失ったとき +|CursorHold| ユーザが一定時間キーを押さなかったとき +|CursorHoldI| インサートモードでユーザが一定時間キーを押さなかった + とき +|CursorMoved| ノーマルモードでカーソルが移動したとき +|CursorMovedI| インサートモードでカーソルが移動したとき + +|WinEnter| 別のウィンドウに入った後 +|WinLeave| ウィンドウから離れる前 +|TabEnter| 別のタブページに入った後 +|TabLeave| タブページから離れる前 +|CmdwinEnter| コマンドラインウィンドウに入った後 +|CmdwinLeave| コマンドラインウィンドウから離れる前 + +|InsertEnter| インサートモードを開始したとき +|InsertChange| インサートや上書きモードで<Insert>をタイプしたとき +|InsertLeave| インサートモードを抜けるとき + +|ColorScheme| カラースキームを読み込んだ後 + +|RemoteReply| Vimサーバからの返答を受け取ったとき + +|QuickFixCmdPre| QuickFixコマンドを実行する前 +|QuickFixCmdPost| QuickFixコマンドを実行した後 + +|SessionLoadPost| セッションファイルを読み込んだ後 + +|MenuPopup| ポップアップメニューを表示する直前 + +|User| ":duautocmd"との組合せで使われる + +自動コマンドイベントのアルファベット順リスト: *autocmd-events-abc* + + *BufCreate* *BufAdd* +BufAdd or BufCreate バッファリストに追加されるバッファを作った直後 + か、バッファをバッファリストに追加した直後。 + バッファリスト内のバッファがリネームされた直後 + にも発生する。 + イベント BufCreate は歴史上の理由で存在してい + る。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufDelete* +BufDelete バッファリストからバッファを削除する前。(バッ + ファが読み込まれているなら) BufUnload が最初に + 呼び出されるだろう。 + また、バッファリスト内のバッファがリネームされ + た直前にも使われる。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufEnter* +BufEnter バッファに入った後。ファイルタイプに関するオプ + ションの設定に便利である。バッファの編集を始め + るときにも、BufReadPost の autocommand の後に + 実行される。 + *BufFilePost* +BufFilePost 現在のバッファの名前をコマンド ":file" または + ":saveas" で変更した後。 + *BufFilePre* +BufFilePre 現在のバッファの名前をコマンド ":file" または + ":saveas" で変更する前。 + *BufHidden* +BufHidden バッファが隠れ状態 (hidden) になった直後。つま + りそのバッファを表示するウィンドウがもう存在し + ないのに、バッファが解放されなかったり、削除さ + れないとき。":qa" や "q" でVimを終了するときに + は使われない。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufLeave* +BufLeave 他のバッファに移る前。カレントウィンドウを離れ + たり、閉じたりするときで、新しいカレントウィン + ドウが同じバッファを開いていないとき。":qa" や + "q" でVimを閉じるときには使われない。 + *BufNew* +BufNew 新しいバッファを作った直後。バッファがリネーム + された直後にも発生する。バッファがバッファリス + トに追加されると、イベント BufAdd も発生する。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 *BufNewFile* BufNewFile 存在しないファイルの編集を始めたとき。スケルト ンファイル (訳注: テンプレートファイルともいう) に読み込むときに使える。 - *BufReadPre* *E200* *E201* -BufReadPre 新しいバッファの編集を始めたときの、ファイルを - バッファに読み込む前。読み込むファイルが存在し - ないときは使えない。 *BufRead* *BufReadPost* BufRead or BufReadPost 新しいバッファの編集を始めたときの、ファイルを バッファに読み込んだ後で、モードラインを実行す @@ -182,167 +400,20 @@ BufRead or BufReadPost 新しいバッファの編集を始めたときの、 *BufReadCmd* BufReadCmd 新しいバッファの編集を始める前。ファイルをバッ ファ内に読み込む役目を負う。 |Cmd-event| - *BufFilePre* -BufFilePre 現在のバッファの名前をコマンド ":file" または - ":saveas" で変更する前。 - *BufFilePost* -BufFilePost 現在のバッファの名前をコマンド ":file" または - ":saveas" で変更した後。 - *FileReadPre* -FileReadPre コマンド ":read" でファイルを読み込む前。 - *FileReadPost* -FileReadPost コマンド ":read" でファイルを読み込んだ後。 - Note 読み込んだテキストの先頭行と末尾行には、 - マーク '[ と '] が設定されることに注意。これは、 - 読み込まれた行に対して操作を行うのに使われる。 - *FileReadCmd* -FileReadCmd コマンド ":read" でファイルを読み込む前。ファ - イルを読み込む役目を負う。 |Cmd-event| - *FilterReadPre* *E135* -FilterReadPre フィルタコマンドからファイルを読み込む前。Vim - は、フィルタコマンドの出力である一時ファイルの - 名前ではなく、現在のバッファの名前に対してパター - ンを調べる。 - *FilterReadPost* -FilterReadPost フィルタコマンドからファイルを読み込んだ後。 - Vimは FilterReadPre と同様に、現在のバッファの - 名前に対してパターンを調べる。 - *FileType* -FileType オプション 'filetype' が設定されたとき。 - <afile> は 'filetype' が設定されたファイルの名 - 前として使える。<amatch> は 'filetype' の新し - い値として使える。 - |filetypes| を参照。 - *Syntax* -Syntax オプション 'syntax' が設定されたとき。 - <afile> は 'syntax' が設定されたファイルの名前 - として使える。<amatch> は 'syntax' の新しい値 - として使える。 - |:syn-on| を参照。 - *StdinReadPre* -StdinReadPre 標準入力からバッファへ読み込む前。Vimを開始し - たときに引数 "-" が指定された場合のみ使われる - (|--| 参照)。 - *StdinReadPost* -StdinReadPost 標準入力からバッファへ読み込んだ後で、モードラ - インを実行する前。Vimを開始したときに引数 "-" - が使われた場合のみ使われる (|--| 参照)。 - *BufWrite* *BufWritePre* -BufWrite or BufWritePre バッファ全体をファイルに書き込む前。 - *BufWritePost* -BufWritePost バッファ全体をファイルに書き込んだ後 (イベント - BufWritePre によるコマンドをアンドゥする役目を - 果たす)。 - *BufWriteCmd* -BufWriteCmd バッファ全体をファイルに書き込む前。ファイルへ - の書き込みの役目を負い、成功したときはオプショ - ン 'modified' をオフにする。バッファの内容を変 - 更すべきではない。 |Cmd-event| - *FileWritePre* -FileWritePre バッファ全体を書き込まない場合の、ファイルに書 - き込む前。 - *FileWritePost* -FileWritePost バッファ全体を書き込まない場合の、ファイルに書 - き込んだ後。 - *FileWriteCmd* -FileWriteCmd バッファ全体を書き込まない場合の、ファイルに書 - き込む前。ファイルへの書き込みの役目を負う。バッ - ファを変更すべきではない。 |Cmd-event| - *FileAppendPre* -FileAppendPre ファイルに追加する前。 - *FileAppendPost* -FileAppendPost ファイルに追加した後。 - *FileAppendCmd* -FileAppendCmd ファイルに追加する前。ファイルへの追加の役目を - 負う。 |Cmd-event| - *FilterWritePre* -FilterWritePre フィルタコマンド用のファイルを書き込んだり、差 - 分表示用のファイルを作る前。 - Vimはフィルタコマンドの出力である一時ファイル - の名前ではなく、現在のバッファの名前に対してパ - ターンをチェックする。 - *FilterWritePost* -FilterWritePost フィルタコマンド用のファイルを書き込んだり、差 - 分表示用のファイルを作った後。 - Vimは FilterWritePre と同様、現在のバッファの - 名前に対してパターンをチェックする。 - *FileChangedShell* -FileChangedShell ファイルのタイムスタンプが、ファイルの編集が始 - まってから変更されたことを発見したとき。 - ファイルの属性が変更されたときにも使われる。 - |timestamp| - 大抵はシェルコマンドの実行後に発生する。またコ - マンド |:checktime| の実行後や、Vimが入力フォー - カスを一度失い、再び得たときにも発生する。 - このイベントは変更されたファイルそれぞれに対し - て発生する。オプション 'autoread' がオンであり、 - かつバッファが変更されていないときには使われな - い。もし FileChangedShell の autocommand が存 - 在しても、警告メッセージやプロンプトは現れない。 - これは、単一のコマンドに影響を受ける、複数の関 - 連バッファを再読み込みするのに便利である。 + *BufReadPre* *E200* *E201* +BufReadPre 新しいバッファの編集を始めたときの、ファイルを + バッファに読み込む前。読み込むファイルが存在し + ないときは使えない。 + *BufUnload* +BufUnload バッファを解放する前。これは、バッファ内のテキ + ストが解放されるときである。BufWritePost の後 + で、BufDelete の前かもしれない。Vimが終了しよ + うとしているとき、読み込まれた全てのバッファに + ついて発生する。 NOTE: このイベントで autocommand が実行された ときは、"%" で表されるカレントバッファと "<afile>" で表される解放されるバッファとは異な るかもしれないことに注意。 - NOTE: この autocommand はカレントバッファを変 - 更したり、別のバッファにジャンプしたり、バッ - ファを消去してはいけない。 *E246* - NOTE: このイベントは、無限ループを避けるために - 決してネストしてはいけない (入れ子にならない)。 - つまり、FielChangedShellイベントの処理中は他の - FileChangedShellイベントは呼ばれない。 - *FileChangedRO* -FileChangedRO 読み込み専用ファイルに最初の変更を加える前。ソー - ス管理システム (訳注: CVSやRCS) からファイルを - チェックアウトするのに使われる。変更が - autocommand によるときには発生しない。 - 警告: このイベントが発生するのは変更を行い、そ - れがテキストに適用される直前である。 - Autocommand でカーソルが動かされるときの動作は、 - 定義されていない。 - *FocusGained* -FocusGained Vimが入力フォーカスを得たとき。GUI版と、入力 - フォーカスを認識できるいくつかのコンソール版で - のみ有効。 - *FocusLost* -FocusLost Vimが入力フォーカスを失ったとき。GUI版と、入力 - フォーカスを認識できるいくつかのコンソール版で - のみ有効。 - *FuncUndefined* -FuncUndefined ユーザ定義関数が使われたが、定義されていなかっ - たとき。必要なときのみ関数を定義するのに便利で - ある。<amatch> と <afile> の両方とも関数名に設 - 定される。 - *CursorHold* -CursorHold 'updatetime' の時間の間、ユーザがキーを押さな - かったとき。ユーザーが何かキーを押すまで、再び - 発生することはない (例えば、もしあなたがコーヒー - を入れるためにVimの前を離れても、その間の - 'updatetime' ミリ秒ごと発生することはない :-)。 - タグをプレビューするためには、 - |CursorHold-example| を参照。 - このイベントはノーマルモードのときのみ呼ばれる。 - Note: このイベントには対話的なコマンドは使えな - いことに注意。「続けるには」プロンプトは現れず、 - スクリーンは必要に応じて直接更新される。 - Note: 近いうちに、発生するまでの時間を設定する - 別のオプションができるだろう。 - ヒント: ステータスラインの更新を強制的に行うに - は、これを使うこと: > - :let &ro = &ro -< {Vi mのAmiga版、Unix版、Win32版、MSDOS版および - 全てのGUI 版でのみ有効} - *BufEnter* -BufEnter バッファに入った後。ファイルタイプに関するオプ - ションの設定に便利である。バッファの編集を始め - るときにも、BufReadPost の autocommand の後に - 実行される。 - *BufLeave* -BufLeave 他のバッファに移る前。カレントウィンドウを離れ - たり、閉じたりするときで、新しいカレントウィン - ドウが同じバッファを開いていないとき。":qa" や - "q" でVimを閉じるときには使われない。 *BufWinEnter* BufWinEnter バッファがウィンドウ内に表示された後。これはバッ ファが読み込まれたとき (モードラインの処理後) @@ -359,55 +430,6 @@ BufWinLeave バッファがウィンドウから取り除かれる前。その NOTE: このイベントで autocommand が実行された ときは、"%" で表されるカレントバッファと "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - *BufUnload* -BufUnload バッファを解放する前。これは、バッファ内のテキ - ストが解放されるときである。BufWritePost の後 - で、BufDelete の前かもしれない。Vimが終了しよ - うとしているとき、読み込まれた全てのバッファに - ついて発生する。 - NOTE: このイベントで autocommand が実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - *BufHidden* -BufHidden バッファが隠れ状態 (hidden) になった直後。つま - りそのバッファを表示するウィンドウがもう存在し - ないのに、バッファが解放されなかったり、削除さ - れないとき。":qa" や "q" でVimを終了するときに - は使われない。 - NOTE: このイベントで autocommand が実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - *BufNew* -BufNew 新しいバッファを作った直後。バッファがリネーム - された直後にも発生する。バッファがバッファリス - トに追加されると、イベント BufAdd も発生する。 - NOTE: このイベントで autocommand が実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - *BufCreate* *BufAdd* -BufAdd or BufCreate バッファリストに追加されるバッファを作った直後 - か、バッファをバッファリストに追加した直後。 - バッファリスト内のバッファがリネームされた直後 - にも発生する。 - イベント BufCreate は歴史上の理由で存在してい - る。 - NOTE: このイベントで autocommand が実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - *BufDelete* -BufDelete バッファリストからバッファを削除する前。(バッ - ファが読み込まれているなら) BufUnload が最初に - 呼び出されるだろう。 - また、バッファリスト内のバッファがリネームされ - た直前にも使われる。 - NOTE: このイベントで autocommand が実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な るかもしれないことに注意。 *BufWipeout* BufWipeout バッファを完全に削除する前。イベント BufUnload @@ -415,26 +437,22 @@ BufWipeout バッファを完全に削除する前。イベント BufUnload ファが読み込まれていて、バッファリスト内に存在 するなら)。バッファがリネームされる直前にも発 生する (そのバッファがバッファリスト内になくと - も)。 - NOTE: このイベントで autocommand が実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - *WinEnter* -WinEnter 別のウィンドウに入った後。Vimの開始直後、1個目 - のウィンドウに入ったときは発生しない。ウィンド - ウの高さを設定するのに便利である。 - そのウィンドウで他のバッファを開いていたときは、 - イベント Winenter の後に BufEnter が発生する。 - Note: ":split fname" を実行したとき、WinEnter - が発生するのは、ウィンドウ分割の後だがファイル - "fname" が読み込まれる前の時点である。 - *WinLeave* -WinLeave ウィンドウを離れる前。次に入るウィンドウで他の - バッファを開いていたときは、イベント WinLeave - の前に BufLeave が発生する (ただし ":new" を使っ - たときはそうならない)。 - ":qa" や"q" でVimを終了するときには発生しない。 + も)。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + *BufWrite* *BufWritePre* +BufWrite or BufWritePre バッファ全体をファイルに書き込む前。 + *BufWriteCmd* +BufWriteCmd バッファ全体をファイルに書き込む前。ファイルへ + の書き込みの役目を負い、成功したときはオプショ + ン 'modified' をオフにする。バッファの内容を変 + 更すべきではない。 |Cmd-event| + *BufWritePost* +BufWritePost バッファ全体をファイルに書き込んだ後 (イベント + BufWritePre によるコマンドをアンドゥする役目を + 果たす)。 *CmdwinEnter* CmdwinEnter Command-lineウィンドウに入った後。この特殊なウィ ンドウに対してのみオプションを設定するのに便利 @@ -449,36 +467,205 @@ CmdwinLeave Command-lineウィンドウから出る前。イベント WinLeave の「代わりに」発生する。 <afile> は、command-lineの種類を示す1文字に設 定される。 |cmdwin-char| - *GUIEnter* -GUIEnter GUI の開始に成功し、ウィンドウを開いた後。 - gvim を使ったときは、VimEnter の前に発生する。 - ファイル .gvimrc からウィンドウの配置場所を設 - 定するために使うことができる。 > - :autocmd GUIEnter * winpos 100 50 -< *VimEnter* -VimEnter ファイル .vimrc の読み込みを含む、全てのスター - トアップ処理を行い、"-c cmd" の引数を実行し、 - 全てのウィンドウを構築し、それらにバッファを読 - み込んだ後。 - *VimLeavePre* -VimLeavePre Vim を終了する前で、ファイル .viminfo を書き込 - む直前。これは終了時にたまたまカレントバッファ - になったバッファの名前とマッチしたときに、ただ - 1度だけ実行される。 大抵、パターンには "*" を - 使うと便利である。 > - :autocmd VimLeavePre * call CleanupStuff() -< 異常終了の検出には |v:dying| を使うこと。 - *VimLeave* -VimLeave Vim を終了する前で、ファイル .viminfo を書き込 - んだ後。VimLeavePre のように、ただ1度だけ実行 - される。 - 異常終了の検出には |v:dying| を使うこと。 + *ColorScheme* +ColorScheme カラースキームを読み込んだ後。 |:colorscheme| + *CursorHold* +CursorHold 'updatetime' の時間の間、ユーザがキーを押さな + かったとき。ユーザーが何かキーを押すまで、再び + 発生することはない (例えば、もしあなたがコーヒー + を入れるためにVimの前を離れても、その間の + 'updatetime' ミリ秒ごと発生することはない :-)。 + タグをプレビューするためには、 + |CursorHold-example| を参照。 + このイベントはノーマルモードのときのみ呼ばれる。 + Note: このイベントには対話的なコマンドは使えな + いことに注意。「続けるには」プロンプトは現れず、 + スクリーンは必要に応じて直接更新される。 + Note: 近いうちに、発生するまでの時間を設定する + 別のオプションができるだろう。 + ヒント: ステータスラインの更新を強制的に行うに + は、これを使うこと: > + :let &ro = &ro +< {Vi mのAmiga版、Unix版、Win32版、MSDOS版および + 全てのGUI 版でのみ有効} + *CursorHoldI* +CursorHoldI CursorHoldと同様だが、インサートモードのとき発 + 生する。 + *CursorMoved* +CursorMoved ノーマルモードでカーソルが移動した後。カーソル + 行のテキストが変更されたときにも発生する + (例: "x", "rx", "p"などで)。 + 先行入力があったりオペレータが実行待ちになって + いる場合は発生しない。 + |match-parens|の例を参照。 + 注意: ユーザが予期しないことや時間のかかる処理 + は行わないこと。 + *CursorMovedI* +CursorMovedI インサートモードでカーソルが移動した後。それ以 + 外はCursorMovedと同じ。 *EncodingChanged* EncodingChanged オプション 'encoding' が変更されたとき。例えば、 フォント等の設定に便利である。 + *FileAppendCmd* +FileAppendCmd ファイルに追加する前。ファイルへの追加の役目を + 負う。 |Cmd-event| + *FileAppendPost* +FileAppendPost ファイルに追加した後。 + *FileAppendPre* +FileAppendPre ファイルに追加する前。 + *FileChangedRO* +FileChangedRO 読み込み専用ファイルに最初の変更を加える前。ソー + ス管理システム (訳注: CVSやRCS) からファイルを + チェックアウトするのに使われる。変更が + autocommand によるときには発生しない。 + このイベントが発生するのは、バッファに最初の変 + 更を行うときや、'readonly'がセットされた後に最 + 初の変更を行うときの、変更が適用される直前であ + る。 + 警告: Autocommand でカーソルが動かされるときの動作は、 + 定義されていない。 + *E788* + ここで他のバッファに変更をしてはならない。バッ + ファを再読み込みするとはよいが、他のバッファを + 編集してはならない。 + *FileChangedShell* +FileChangedShell ファイルのタイムスタンプが、ファイルの編集が始 + まってから変更されたことを発見したとき。 + ファイルの属性が変更されたときにも使われる。 + |timestamp| + 大抵はシェルコマンドの実行後に発生する。またコ + マンド |:checktime| の実行後や、Vimが入力フォー + カスを一度失い、再び得たときにも発生する。 + このイベントは変更されたファイルそれぞれに対し + て発生する。オプション 'autoread' がオンであり、 + かつバッファが変更されていないときには使われな + い。もし FileChangedShell の autocommand が存 + 在しても、警告メッセージやプロンプトは現れない。 + これは、単一のコマンドに影響を受ける、複数の関 + 連バッファを再読み込みするのに便利である。 + NOTE: このイベントで autocommand が実行された + ときは、"%" で表されるカレントバッファと + "<afile>" で表される解放されるバッファとは異な + るかもしれないことに注意。 + NOTE: この autocommand はカレントバッファを変 + 更したり、別のバッファにジャンプしたり、バッ + ファを消去してはいけない。 *E246* + NOTE: このイベントは、無限ループを避けるために + 決してネストしてはいけない (入れ子にならない)。 + つまり、FielChangedShellイベントの処理中は他の + FileChangedShellイベントは呼ばれない。 + *FileChangedShellPost* +FileChangedShellPost Vimの外部でファイルが変更されたのを検出・対処 + した後。ステータスラインを更新するのに使える。 *FileEncoding* FileEncoding 時代遅れである。まだ有効だがイベント |EncodingChanged| と同等である。 + *FileReadCmd* +FileReadCmd コマンド ":read" でファイルを読み込む前。ファ + イルを読み込む役目を負う。 |Cmd-event| + *FileReadPost* +FileReadPost コマンド ":read" でファイルを読み込んだ後。 + Note 読み込んだテキストの先頭行と末尾行には、 + マーク '[ と '] が設定されることに注意。これは、 + 読み込まれた行に対して操作を行うのに使われる。 + *FileReadPre* +FileReadPre コマンド ":read" でファイルを読み込む前。 + *FileType* +FileType オプション 'filetype' が設定されたとき。 + <afile> は 'filetype' が設定されたファイルの名 + 前として使える。<amatch> は 'filetype' の新し + い値として使える。 + |filetypes| を参照。 + *FileWriteCmd* +FileWriteCmd バッファ全体を書き込まない場合の、ファイルに書 + き込む前。ファイルへの書き込みの役目を負う。バッ + ファを変更すべきではない。 |Cmd-event| + *FileWritePost* +FileWritePost バッファ全体を書き込まない場合の、ファイルに書 + き込んだ後。 + *FileWritePre* +FileWritePre バッファ全体を書き込まない場合の、ファイルに書 + き込む前。 + *FilterReadPost* +FilterReadPost フィルタコマンドからファイルを読み込んだ後。 + Vimは FilterReadPre と同様に、現在のバッファの + 名前に対してパターンを調べる。 + *FilterReadPre* *E135* +FilterReadPre フィルタコマンドからファイルを読み込む前。Vim + は、フィルタコマンドの出力である一時ファイルの + 名前ではなく、現在のバッファの名前に対してパター + ンを調べる。 + *FilterWritePost* +FilterWritePost フィルタコマンド用のファイルを書き込んだり、差 + 分表示用のファイルを作った後。 + Vimは FilterWritePre と同様、現在のバッファの + 名前に対してパターンをチェックする。 + 'shelltemp'がオフのときは発生しない。 + *FilterWritePre* +FilterWritePre フィルタコマンド用のファイルを書き込んだり、差 + 分表示用のファイルを作る前。 + Vimはフィルタコマンドの出力である一時ファイル + の名前ではなく、現在のバッファの名前に対してパ + ターンをチェックする。 + 'shelltemp'がオフのときは発生しない。 + *FocusGained* +FocusGained Vimが入力フォーカスを得たとき。GUI版と、入力 + フォーカスを認識できるいくつかのコンソール版で + のみ有効。 + *FocusLost* +FocusLost Vimが入力フォーカスを失ったとき。GUI版と、入力 + フォーカスを認識できるいくつかのコンソール版で + のみ有効。 + *FuncUndefined* +FuncUndefined ユーザ定義関数が使われたが、定義されていなかっ + たとき。必要なときのみ関数を定義するのに便利で + ある。<amatch> と <afile> の両方とも関数名に設 + 定される。|autoload-functions|を参照。 + *GUIEnter* +GUIEnter GUI の開始に成功し、ウィンドウを開いた後。 + gvim を使ったときは、VimEnter の前に発生する。 + ファイル .gvimrc からウィンドウの配置場所を設 + 定するために使うことができる。 > + :autocmd GUIEnter * winpos 100 50 +< *InsertChange* +InsertChange インサート・上書きモードで<Insert>をタイプした + とき。変数|v:insertmode|が新しいモードを示す。 + カーソルを移動したりなどユーザが予期しないこと + は行わないように注意。 + *InsertEnter* +InsertEnter インサートモード・上書きモード・Virtual上書き + モードを開始したとき。変数|v:insertmode|がモー + ドを示す。カーソルを移動したりなどユーザが予期 + しないことは行わないように注意。 + *InsertLeave* +InsertLeave インサートモードを抜けるとき。CTRL-O + |i_CTRL-O|を使ったときにも発生する。|i_CTRL-C| + のときは発生しない。 + *MenuPopup* +MenuPopup (マウス右ボタンで)ポップアップメニューを表示す + る直前。カーソル下やマウスポインタの下にあるも + のによってメニューを調整するのに便利。 + パターンにはモードを表す文字を記述する: + n ノーマル + v ビジュアル + o オペレータ実行待ち + i インサート + c コマンドライン + *QuickFixCmdPre* +QuickFixCmdPre QuickFixコマンドが実行される前 (|:make|, + |:lmake|, |:grep|, |:lgrep|, |:grepadd|, + |:lgrepadd|, |:vimgrep|, |:lvimgrep|, + |:vimgrepadd|, |:vimgrepadd|)。パターンには実 + 行されるコマンドを記述する。|:grep|が書かれて + いると、'grepprg'が"internal"にセットされてい + ても実行される。このコマンドを使って変数 + 'makeprg'と'grepprg'を設定することはできない。 + このコマンドでエラーになるとQuickFixコマンドは + 実行されない。 + *QuickFixCmdPost* +QuickFixCmdPost QuickFixCmdPreと同様だが、QuickFixコマンドが実 + 行された後、最初の位置にジャンプする前に発生す + る。 *RemoteReply* RemoteReply サーバとして働くVimからの応答を受け取ったとき |server2client()|。 @@ -489,6 +676,68 @@ RemoteReply サーバとして働くVimからの応答を受け取ったとき を読み込むのには、読み込んだ応答を処理できるよ うに関数 |remote_read()| を使うべきであること に注意。 + *SessionLoadPost* +SessionLoadPost |:mksession|で作られたセッションファイルを読み + 込んだ後。 + *ShellCmdPost* +ShellCmdPost |:!cmd|, |:shell|, |:make|, |:grep|を使って + シェルコマンドを実行した後。変更されたファイル + をチェックするのに使える。 + *ShellFilterPost* +ShellFilterPost ":{range}!cmd", ":w !cmd", ":r !cmd"を使ってシ + ェルコマンドを実行した後。変更されたファイルを + チェックするのに使える。 + *SourcePre* +SourcePre Vimスクリプトを読み込む前。 |:source| + *SpellFileMissing* +SpellFileMissing スペルチェックファイルを読み込もうとしたが、見 + つからなかったとき。<amatch>は言語。'encoding' + も関係する。|spell-SpellFileMissing|を参照。 + *StdinReadPost* +StdinReadPost 標準入力からバッファへ読み込んだ後で、モードラ + インを実行する前。Vimを開始したときに引数 "-" + が使われた場合のみ使われる (|--| 参照)。 + *StdinReadPre* +StdinReadPre 標準入力からバッファへ読み込む前。Vimを開始し + たときに引数 "-" が指定された場合のみ使われる + (|--| 参照)。 + *SwapExists* +SwapExists ファイルの編集を始めようとしてスワップファイル + が存在することを検出したとき。この状況に対応す + る方法を選択できるときだけユーザにどうするか問 + い合わせる。 + 変数|v:swapname|が見つかったスワップファイルの + 名前を保持する。<afile>は編集しようとしている + ファイルである。|v:swapcommand|が開かれたファ + イルで実行するコマンドを含んでいるかもしれな + い。 + このコマンドは変数|v:swapchoice|をVimが次にど + うするべきかを示す1文字の文字列にセットしなけ + ればならない: + 'o' 読み込み専用で開く + 'e' とにかくファイルを編集する + 'r' 復元する + 'd' スワップファイルを削除する + 'q' ファイルを編集せずに終了する + 'a' CTRL-Cを押したのと同様に強制終 + 了する + これが空文字列にセットされると、自動コマンド + SwapExistsが存在しないときと同様にユーザに問い + 合わせをする。 + 注意: バッファを変更しようとしてはならない。そ + うすると予測できない結果になる。 + *Syntax* +Syntax オプション 'syntax' が設定されたとき。 + <afile> は 'syntax' が設定されたファイルの名前 + として使える。<amatch> は 'syntax' の新しい値 + として使える。 + |:syn-on| を参照。 + *TabEnter* +TabEnter タブページに入った直後 |tab-page|。WinEnterが + 発生した後、BufEnterが発生する前。 + *TabLeave* +TabLeave タブページを離れる直前 |tab-page|。最初に + WinLeaveが発生する。 *TermChanged* TermChanged オプション 'term' を変更した後。色やフォント等、 ターミナル依存の設定を更新するために構文定義ファ @@ -498,37 +747,50 @@ TermChanged オプション 'term' を変更した後。色やフォント等 TermResponse |t_RV| に対する応答をターミナルから受け取った とき。Vim変数 |v:termresponse| の値を使って、 ターミナルのヴァージョンに応じた処理ができる。 - *UserGettingBored* -UserGettingBored ユーザが CTRL-C を打ち込んだとき。 - ただの冗談! :-) *User* User 自動的に実行されることはない。コマンド ":doautocmd" によってのみ実行される autocommand のために使用される。 - - -複数のイベントをコンマ(,)で区切ったリストにして指定することもできる。そのリス -トにはスペースを含めてはいけません。そのコマンドは指定したリストにある全てのイ -ベントに適用されます。 - -「ファイル読み込み」には次の4種類のイベントが発生しうる。 - BufNewFile 存在しないファイルの編集を開始する。 - BufReadPre BufReadPost 既存のファイルの編集を開始する。 - FilterReadPre FilterReadPost フィルタの出力による一時ファイルを読み - 込む。 - FileReadPre FileReadPost その他のファイルを読み込む。 -Vimはファイルを読み込むときにこの4種類のうちどれか1つを利用する。"Pre"と"Post" -のイベントは、ファイル読み込みの前後で両方とも起動される。 - -Note イベント *ReadPre や、全てのイベント Filter に関する autocommand は、カレ -ントバッファを変更してはならないことに注意 (これが起きると、エラーメッセージが -表示される)。これは、間違ったバッファにファイルを読み込むのを防ぐためである。 - -Note オプション 'modified' は、BufReadPost と BufNewFile の autocommand を実行 -した「後に」オフに設定されることに注意。しかし 'modified' が autocommand から -オンに設定されたときはそうならない。 - -'eventignore' は、いくつかあるいは全てのイベントを無視するために使える。 + *UserGettingBored* +UserGettingBored ユーザが CTRL-C を打ち込んだとき。 + ただの冗談! :-) + *VimEnter* +VimEnter ファイル .vimrc の読み込みを含む、全てのスター + トアップ処理を行い、"-c cmd" の引数を実行し、 + 全てのウィンドウを構築し、それらにバッファを読 + み込んだ後。 + *VimLeave* +VimLeave Vim を終了する前で、ファイル .viminfo を書き込 + んだ後。VimLeavePre のように、ただ1度だけ実行 + される。 + 異常終了の検出には |v:dying| を使うこと。 + *VimLeavePre* +VimLeavePre Vim を終了する前で、ファイル .viminfo を書き込 + む直前。これは終了時にたまたまカレントバッファ + になったバッファの名前とマッチしたときに、ただ + 1度だけ実行される。 大抵、パターンには "*" を + 使うと便利である。 > + :autocmd VimLeavePre * call CleanupStuff() +< 異常終了の検出には |v:dying| を使うこと。 + *VimResized* +VimResized Vimウィンドウのサイズが変わったとき。よって + 'lines'と'columns'が変更される。しかし開始時 + には発生しない。 + *WinEnter* +WinEnter 別のウィンドウに入った後。Vimの開始直後、1個目 + のウィンドウに入ったときは発生しない。ウィンド + ウの高さを設定するのに便利である。 + そのウィンドウで他のバッファを開いていたときは、 + イベント Winenter の後に BufEnter が発生する。 + Note: ":split fname" を実行したとき、WinEnter + が発生するのは、ウィンドウ分割の後だがファイル + "fname" が読み込まれる前の時点である。 + *WinLeave* +WinLeave ウィンドウを離れる前。次に入るウィンドウで他の + バッファを開いていたときは、イベント WinLeave + の前に BufLeave が発生する (ただし ":new" を使っ + たときはそうならない)。 + ":qa" や"q" でVimを終了するときには発生しない。 ============================================================================== 6. パターン *autocmd-patterns* *{pat}* @@ -598,7 +860,7 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに (MS-DOSとOS/2でさえも)。これは、パターン内でバックスラッシュを使うことが難しい 上に、別々のシステムでも autocommand が動作するようにするためである。 - + *autocmd-changes* パターンマッチの検索は、イベントの発生時に行われる。Autocommand のどれかでバッ ファ名を変更しても、それどころかバッファを削除しても、実行される autocommand は変わらない。例: > @@ -611,8 +873,61 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに ファ名にマッチしなくとも気にしない。"*.foo" はイベントが発生した時点でのバッファ 名にマッチする。 +しかし、|:bwipte|でワイプアウトされたバッファに対しては、バッファローカルな +自動コマンドは実行されない。|:bdel|で削除されたバッファは実際にはまだ存在して +いる(リストされなくなっただけ)なので、自動コマンドは実行される。 + +============================================================================== +7. バッファローカルな自動コマンド *autocmd-buflocal* + *autocmd-buffer-local* + *<buffer=N>* *<buffer=abuf>* *E680* + +バッファローカルな自動コマンドは特定のバッファに結びつけられている。これは名前 +を持たないバッファや特定のパターンにマッチしない名前のバッファに使うと便利であ +る。しかしそれぞれのバッファに明示的に追加する必要がある。 + +バッファローカルな自動コマンドはパターンの代わりに以下の形式のどれかを使う: + <buffer> カレントバッファ + <buffer=99> バッファ番号99 + <buffer=abuf> <abuf> の使用(自動コマンドを実行するときのみ) + |<abuf>| + +例: > + :au CursorHold <buffer> echo 'hold' + :au CursorHold <buffer=33> echo 'hold' + :au CursorHold <buffer=abuf> echo 'hold' + +自動コマンドに対するコマンドは全てバッファローカルな自動コマンドに対しても機能 +する。パターンの代わりに特別な文字列を使う。例: > + :au! * <buffer> " カレントバッファのバッファローカル自動 + " コマンドを削除する + :au! * <buffer=33> " バッファ#33のバッファローカル自動コマン + " ドを削除する。 + :dobuf :au! CursorHold <buffer> " 全バッファから指定されたイベントに対す + " る自動コマンドを削除する + :au * <buffer> " カレントバッファのバッファローカル自動 + " コマンドをリストする + +カレントバッファに対して自動コマンドを定義するとき、それがバッファ番号とともに +保存されることに注意。つまりカレントバッファ番号が12なら"<buffer=12>"という形 +になる。例えば自動コマンドをリストするときこの形式で表示される。 + +バッファローカル自動コマンドが存在するかを判定するには関数|exists()|を次のよう +に使う: > + :if exists("#CursorHold#<buffer=12>") | ... | endif + :if exists("#CursorHold#<buffer>") | ... | endif " for current buffer + +バッファがワイプアウトされると当然バッファローカル自動コマンドも失われる。 +":bdel"などでバッファを削除するときは、それがリストからなくなるだけで、自動コ +マンドはまだ存在していることに注意。バッファローカル自動コマンドの削除を表示さ +せるにはこうする: > + :set verbose=6 + +存在しないバッファに対してバッファローカル自動コマンドを定義することはできな +い。 + ============================================================================== -7. グループ *autocmd-groups* +8. グループ *autocmd-groups* Autocommand はグループにまとめることができる。これは一連の autocommand を取り 除いたり実行したりする際に便利である。例えば、構文強調表示のための全ての @@ -661,7 +976,7 @@ autocommand はグループ "highlight" に入っていて、GUIの開始時に とが防げる。 ============================================================================== -8. autocommand の実行 *autocmd-execute* +9. autocommand の実行 *autocmd-execute* Autocommand は「自動的」でなくとも実行できる。これはあなたが autocommand を変 更したときや、間違った autocommand が実行されたとき (つまりファイルパターンの @@ -691,6 +1006,10 @@ NOTE オプション 'eventignore' はここにも適用されることに注意 NOTE 定義されていないグループ名を使うと、エラーメッセー ジが表示される。 + 自動コマンドを適用した後にモードラインが処理される。ファ + イルを編集するときと同じように、自動コマンドでなされた + 設定を上書きするためである。 + *:doautoa* *:doautoall* :doautoa[ll] [group] {event} [fname] ":doautocmd" と似ているが、読み込まれたバッファそれぞ @@ -704,7 +1023,7 @@ NOTE オプション 'eventignore' はここにも適用されることに注意 autocommand のためのものである。 ============================================================================== -9. autocommand を使う *autocmd-use* +10. autocommand を使う *autocmd-use* 「ファイルの書き込み」には、4組のイベントが起こりうる。1回の書き込みコマンドで は、これらのうち1組しか使われない。 @@ -734,8 +1053,8 @@ autocommand の引き起こしたバッファに対する変化を、どのよ される。 - イベント *ReadPost の前に、読み込まれた最初の行にマーク '[ が、最後の行にマー ク '] が設定される。 -- イベント *WritePre と *AppendPre による autocommand が実行される前に、書き込 - まれる最初の行にマーク '[ が、最後の行にマーク '] が設定される。 +- イベント *WriteCmd, *WritePre と *AppendPre による autocommand が実行される前 + に、書き込まれる最初の行にマーク '[ が、最後の行にマーク '] が設定される。 注意: バッファを変更するコマンドを使うと、'[ と '] の場所も変更される。 ファイル名を必要とするコマンドでは、読み込まれるファイル名に "<afile>" を使う @@ -795,10 +1114,8 @@ Autocommand の中でコマンド ":au" を使うこともできる。これは 原文 "self-modifying") なコマンドになりうる! これは1回だけ実行すべき autocommand に便利である。 -現在のところ、autocommand を無効にする方法はない。ファイルを書き込むとき、その -ファイルタイプに対して設定された autocommand を実行したくないならば、別のファ -イル名で書き込み、シェルコマンドでリネームすること。場合によっては -'eventignore'オプションが使える。 +あるコマンドを実行するときだけ自動コマンドをスキップしたい場合は、修飾子 +|:noautocmd|を使うかオプション'eventignore'を使う。 Note (":read file" やフィルタコマンドで) 読み込んだファイルの最後の行に <EOL> がないとき、Vimはこのことを記憶する。その次の (":write file" やフィルタコマン @@ -917,4 +1234,21 @@ Vim変数 |v:cmdbang|はコマンドに"!"が使われたときに 1。そうで 例は標準プラグイン $VIMRUNTIME/plugin/netrw.vim を参照。 +============================================================================== +11. 自動コマンドを無効にする *autocmd-disable* + +一時的に自動コマンドを無効にするにはオプション'eventignore'を使う。これは予期 +しない振るまいを引き起こす可能性がある。|:finally|つきの|:try|ブロックを使って +後で'eventignore'を元に戻すようにすること。 + + *:noautocmd* *:noa* +1つのコマンドを実行する間だけ自動コマンドを無効にするには修飾子":noautocmd"を +使う。これは後に続くコマンドを実行する間だけ、'eventignore'を"all"にセットす +る。例: > + + :noautocmd w fname.gz + +これはgzipプラグインで定義された自動コマンドを発生させずにファイルを書き込む。 + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/tips.jax b/ja/tips.jax index 7d5b2036c..e2eb4c977 100644 --- a/ja/tips.jax +++ b/ja/tips.jax @@ -1,5 +1,5 @@ COMMENT: -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> From 011b1928af2ff3edd5f12a74ea36035e7daccee7 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sun, 3 Sep 2006 13:09:09 +0000 Subject: [PATCH 045/783] update autocmd to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@45 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/autocmd.txt | 970 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 663 insertions(+), 307 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index dfca8245c..1144af847 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 6.3. Last change: 2004 Apr 20 +*autocmd.txt* For Vim version 7.0. Last change: 2006 May 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -14,9 +14,11 @@ For a basic explanation, see section |40.3| in the user manual. 4. Listing autocommands |autocmd-list| 5. Events |autocmd-events| 6. Patterns |autocmd-patterns| -7. Groups |autocmd-groups| -8. Executing autocommands |autocmd-execute| -9. Using autocommands |autocmd-use| +7. Buffer-local autocommands |autocmd-buflocal| +8. Groups |autocmd-groups| +9. Executing autocommands |autocmd-execute| +10. Using autocommands |autocmd-use| +11. Disabling autocommands |autocmd-disable| {Vi does not have any of these commands} {only when the |+autocmd| feature has not been disabled at compile time} @@ -24,10 +26,10 @@ For a basic explanation, see section |40.3| in the user manual. ============================================================================== 1. Introduction *autocmd-intro* -You can specify commands to be executed automatically for when reading or -writing a file, when entering or leaving a buffer or window, and when exiting -Vim. For example, you can create an autocommand to set the 'cindent' option -for files matching *.c. You can also use autocommands to implement advanced +You can specify commands to be executed automatically when reading or writing +a file, when entering or leaving a buffer or window, and when exiting Vim. +For example, you can create an autocommand to set the 'cindent' option for +files matching *.c. You can also use autocommands to implement advanced features, such as editing compressed files (see |gzip-example|). The usual place to put autocommands is in your .vimrc or .exrc file. @@ -62,6 +64,9 @@ Note: The ":autocmd" command cannot be followed by another command, since any order in which they were given. See |autocmd-nested| for [nested]. +The special pattern <buffer> or <buffer=N> defines a buffer-local autocommand. +See |autocmd-buflocal|. + Note that special characters (e.g., "%", "<cword>") in the ":autocmd" arguments are not expanded when the autocommand is defined. These will be expanded when the Event is recognized, and the {cmd} is executed. The only @@ -148,21 +153,224 @@ If you provide the [group] argument, Vim lists only the autocommands for [group]; otherwise, Vim lists the autocommands for ALL groups. Note that this argument behavior differs from that for defining and removing autocommands. +In order to list buffer-local autocommands, use a pattern in the form <buffer> +or <buffer=N>. See |autocmd-buflocal|. + + *:autocmd-verbose* +When 'verbose' is non-zero, listing an autocommand will also display where it +was last defined. Example: > + + :verbose autocmd BufEnter + FileExplorer BufEnter + * call s:LocalBrowse(expand("<amatch>")) + Last set from /usr/share/vim/vim-7.0/plugin/NetrwPlugin.vim +< +See |:verbose-cmd| for more information. + ============================================================================== 5. Events *autocmd-events* *E215* *E216* +You can specify a comma-separated list of event names. No white space can be +used in this list. The command applies to all the events in the list. + +For READING FILES there are four kinds of events possible: + BufNewFile starting to edit a non-existent file + BufReadPre BufReadPost starting to edit an existing file + FilterReadPre FilterReadPost read the temp file with filter output + FileReadPre FileReadPost any other file read +Vim uses only one of these four kinds when reading a file. The "Pre" and +"Post" events are both triggered, before and after reading the file. + +Note that the autocommands for the *ReadPre events and all the Filter events +are not allowed to change the current buffer (you will get an error message if +this happens). This is to prevent the file to be read into the wrong buffer. + +Note that the 'modified' flag is reset AFTER executing the BufReadPost +and BufNewFile autocommands. But when the 'modified' option was set by the +autocommands, this doesn't happen. + +You can use the 'eventignore' option to ignore a number of events or all +events. *autocommand-events* *{event}* Vim recognizes the following events. Vim ignores the case of event names (e.g., you can use "BUFread" or "bufread" instead of "BufRead"). +First an overview by function with a short explanation. Then the list +alphabetically with full explanations |autocmd-events-abc|. + +Name triggered by ~ + + Reading +|BufNewFile| starting to edit a file that doesn't exist +|BufReadPre| starting to edit a new buffer, before reading the file +|BufRead| starting to edit a new buffer, after reading the file +|BufReadPost| starting to edit a new buffer, after reading the file +|BufReadCmd| before starting to edit a new buffer |Cmd-event| + +|FileReadPre| before reading a file with a ":read" command +|FileReadPost| after reading a file with a ":read" command +|FileReadCmd| before reading a file with a ":read" command |Cmd-event| + +|FilterReadPre| before reading a file from a filter command +|FilterReadPost| after reading a file from a filter command + +|StdinReadPre| before reading from stdin into the buffer +|StdinReadPost| After reading from the stdin into the buffer + + Writing +|BufWrite| starting to write the whole buffer to a file +|BufWritePre| starting to write the whole buffer to a file +|BufWritePost| after writing the whole buffer to a file +|BufWriteCmd| before writing the whole buffer to a file |Cmd-event| + +|FileWritePre| starting to write part of a buffer to a file +|FileWritePost| after writing part of a buffer to a file +|FileWriteCmd| before writing part of a buffer to a file |Cmd-event| + +|FileAppendPre| starting to append to a file +|FileAppendPost| after appending to a file +|FileAppendCmd| before appending to a file |Cmd-event| + +|FilterWritePre| starting to write a file for a filter command or diff +|FilterWritePost| after writing a file for a filter command or diff + + Buffers +|BufAdd| just after adding a buffer to the buffer list +|BufCreate| just after adding a buffer to the buffer list +|BufDelete| before deleting a buffer from the buffer list +|BufWipeout| before completely deleting a buffer + +|BufFilePre| before changing the name of the current buffer +|BufFilePost| after changing the name of the current buffer + +|BufEnter| after entering a buffer +|BufLeave| before leaving to another buffer +|BufWinEnter| after a buffer is displayed in a window +|BufWinLeave| before a buffer is removed from a window + +|BufUnload| before unloading a buffer +|BufHidden| just after a buffer has become hidden +|BufNew| just after creating a new buffer + +|SwapExists| detected an existing swap file + + Options +|FileType| when the 'filetype' option has been set +|Syntax| when the 'syntax' option has been set +|EncodingChanged| after the 'encoding' option has been changed +|TermChanged| after the value of 'term' has changed + + Startup and exit +|VimEnter| after doing all the startup stuff +|GUIEnter| after starting the GUI successfully +|TermResponse| after the termainal response to |t_RV| is received + +|VimLeavePre| before exiting Vim, before writing the viminfo file +|VimLeave| before exiting Vim, after writing the viminfo file + + Various +|FileChangedShell| Vim notices that a file changed since editing started +|FileChangedShellPost| After handling a file changed since editing started +|FileChangedRO| before making the first change to a read-only file + +|ShellCmdPost| after executing a shell command +|ShellFilterPost| after filtering with a shell command + +|FuncUndefined| a user function is used but it isn't defined +|SpellFileMissing| a spell file is used but it can't be found +|SourcePre| before sourcing a Vim script + +|VimResized| after the Vim window size changed +|FocusGained| Vim got input focus +|FocusLost| Vim lost input focus +|CursorHold| the user doesn't press a key for a while +|CursorHoldI| the user doesn't press a key for a while in Insert mode +|CursorMoved| the cursor was moved in Normal mode +|CursorMovedI| the cursor was moved in Insert mode + +|WinEnter| after entering another window +|WinLeave| before leaving a window +|TabEnter| after entering another tab page +|TabLeave| before leaving a tab page +|CmdwinEnter| after entering the command-line window +|CmdwinLeave| before leaving the command-line window + +|InsertEnter| starting Insert mode +|InsertChange| when typing <Insert> while in Insert or Replace mode +|InsertLeave| when leaving Insert mode + +|ColorScheme| after loading a color scheme + +|RemoteReply| a reply from a server Vim was received + +|QuickFixCmdPre| before a quickfix command is run +|QuickFixCmdPost| after a quickfix command is run + +|SessionLoadPost| after loading a session file + +|MenuPopup| just before showing the popup menu + +|User| to be used in combination with ":doautocmd" + + +The alphabetical list of autocommand events: *autocmd-events-abc* + + *BufCreate* *BufAdd* +BufAdd or BufCreate Just after creating a new buffer which is + added to the buffer list, or adding a buffer + to the buffer list. + Also used just after a buffer in the buffer + list has been renamed. + The BufCreate event is for historic reasons. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being created "<afile>". + *BufDelete* +BufDelete Before deleting a buffer from the buffer list. + The BufUnload may be called first (if the + buffer was loaded). + Also used just before a buffer in the buffer + list is renamed. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being deleted "<afile>". + *BufEnter* +BufEnter After entering a buffer. Useful for setting + options for a file type. Also executed when + starting to edit a buffer, after the + BufReadPost autocommands. + *BufFilePost* +BufFilePost After changing the name of the current buffer + with the ":file" or ":saveas" command. + *BufFilePre* +BufFilePre Before changing the name of the current buffer + with the ":file" or ":saveas" command. + *BufHidden* +BufHidden Just after a buffer has become hidden. That + is, when there are no longer windows that show + the buffer, but the buffer is not unloaded or + deleted. Not used for ":qa" or ":q" when + exiting Vim. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being unloaded "<afile>". + *BufLeave* +BufLeave Before leaving to another buffer. Also when + leaving or closing the current window and the + new current window is not for the same buffer. + Not used for ":qa" or ":q" when exiting Vim. + *BufNew* +BufNew Just after creating a new buffer. Also used + just after a buffer has been renamed. When + the buffer is added to the buffer list BufAdd + will be triggered too. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being created "<afile>". *BufNewFile* BufNewFile When starting to edit a file that doesn't exist. Can be used to read in a skeleton file. - *BufReadPre* *E200* *E201* -BufReadPre When starting to edit a new buffer, before - reading the file into the buffer. Not used - if the file doesn't exist. *BufRead* *BufReadPost* BufRead or BufReadPost When starting to edit a new buffer, after reading the file into the buffer, before @@ -175,169 +383,19 @@ BufRead or BufReadPost When starting to edit a new buffer, after *BufReadCmd* BufReadCmd Before starting to edit a new buffer. Should read the file into the buffer. |Cmd-event| - *BufFilePre* -BufFilePre Before changing the name of the current buffer - with the ":file" or ":saveas" command. - *BufFilePost* -BufFilePost After changing the name of the current buffer - with the ":file" or ":saveas" command. - *FileReadPre* -FileReadPre Before reading a file with a ":read" command. - *FileReadPost* -FileReadPost After reading a file with a ":read" command. - Note that Vim sets the '[ and '] marks to the - first and last line of the read. This can be - used to operate on the lines just read. - *FileReadCmd* -FileReadCmd Before reading a file with a ":read" command. - Should do the reading of the file. |Cmd-event| - *FilterReadPre* *E135* -FilterReadPre Before reading a file from a filter command. - Vim checks the pattern against the name of - the current buffer, not the name of the - temporary file that is the output of the - filter command. - *FilterReadPost* -FilterReadPost After reading a file from a filter command. - Vim checks the pattern against the name of - the current buffer as with FilterReadPre. - *FileType* -FileType When the 'filetype' option has been set. - <afile> can be used for the name of the file - where this option was set, and <amatch> for - the new value of 'filetype'. - See |filetypes|. - *Syntax* -Syntax When the 'syntax' option has been set. - <afile> can be used for the name of the file - where this option was set, and <amatch> for - the new value of 'syntax'. - See |:syn-on|. - *StdinReadPre* -StdinReadPre Before reading from stdin into the buffer. - Only used when the "-" argument was used when - Vim was started |--|. - *StdinReadPost* -StdinReadPost After reading from the stdin into the buffer, - before executing the modelines. Only used - when the "-" argument was used when Vim was - started |--|. - *BufWrite* *BufWritePre* -BufWrite or BufWritePre Before writing the whole buffer to a file. - *BufWritePost* -BufWritePost After writing the whole buffer to a file - (should undo the commands for BufWritePre). - *BufWriteCmd* -BufWriteCmd Before writing the whole buffer to a file. - Should do the writing of the file and reset - 'modified' if successful. The buffer contents - should not be changed. |Cmd-event| - *FileWritePre* -FileWritePre Before writing to a file, when not writing the - whole buffer. - *FileWritePost* -FileWritePost After writing to a file, when not writing the - whole buffer. - *FileWriteCmd* -FileWriteCmd Before writing to a file, when not writing the - whole buffer. Should do the writing to the - file. Should not change the buffer. - |Cmd-event| - *FileAppendPre* -FileAppendPre Before appending to a file. - *FileAppendPost* -FileAppendPost After appending to a file. - *FileAppendCmd* -FileAppendCmd Before appending to a file. Should do the - appending to the file. |Cmd-event| - *FilterWritePre* -FilterWritePre Before writing a file for a filter command or - making a diff. - Vim checks the pattern against the name of - the current buffer, not the name of the - temporary file that is the output of the - filter command. - *FilterWritePost* -FilterWritePost After writing a file for a filter command or - making a diff. - Vim checks the pattern against the name of - the current buffer as with FilterWritePre. - *FileChangedShell* -FileChangedShell When Vim notices that the modification time of - a file has changed since editing started. - Also when the file attributes of the file - change. |timestamp| - Mostly triggered after executing a shell - command, but also with a |:checktime| command - or when Vim regains input focus. - This autocommand is triggered for each changed - file. It is not used when 'autoread' is set - and the buffer was not changed. If a - FileChangedShell autocommand is present the - warning message and prompt is not given. - This is useful for reloading related buffers - which are affected by a single command. + *BufReadPre* *E200* *E201* +BufReadPre When starting to edit a new buffer, before + reading the file into the buffer. Not used + if the file doesn't exist. + *BufUnload* +BufUnload Before unloading a buffer. This is when the + text in the buffer is going to be freed. This + may be after a BufWritePost and before a + BufDelete. Also used for all buffers that are + loaded when Vim is going to exit. NOTE: When this autocommand is executed, the current buffer "%" may be different from the - buffer that was changed "<afile>". - NOTE: The commands must not change the current - buffer, jump to another buffer or delete a - buffer. *E246* - NOTE: This event never nests, to avoid an - endless loop. This means that while executing - commands for the FileChangedShell event no - other FileChangedShell event will be - triggered. - *FileChangedRO* -FileChangedRO Before making the first change to a read-only - file. Can be used to check-out the file from - a source control system. Not triggered when - the change was caused by an autocommand. - WARNING: This event is triggered when making a - change, just before the change is applied to - the text. If the autocommand moves the cursor - the effect of the change is undefined. - *FocusGained* -FocusGained When Vim got input focus. Only for the GUI - version and a few console versions where this - can be detected. - *FocusLost* -FocusLost When Vim lost input focus. Only for the GUI - version and a few console versions where this - can be detected. - *FuncUndefined* -FuncUndefined When a user function is used but it isn't - defined. Useful for defining a function only - when it's used. Both <amatch> and <afile> are - set to the name of the function. - *CursorHold* -CursorHold When the user doesn't press a key for the time - specified with 'updatetime'. Not re-triggered - until the user has pressed a key (i.e. doesn't - fire every 'updatetime' ms if you leave Vim to - make some coffee. :) See |CursorHold-example| - for previewing tags. - This event is only triggered in Normal mode. - Note: Interactive commands cannot be used for - this event. There is no hit-enter prompt, - the screen is updated directly (when needed). - Note: In the future there will probably be - another option to set the time. - Hint: to force an update of the status lines - use: > - :let &ro = &ro -< {only on Amiga, Unix, Win32, MSDOS and all GUI - versions} - *BufEnter* -BufEnter After entering a buffer. Useful for setting - options for a file type. Also executed when - starting to edit a buffer, after the - BufReadPost autocommands. - *BufLeave* -BufLeave Before leaving to another buffer. Also when - leaving or closing the current window and the - new current window is not for the same buffer. - Not used for ":qa" or ":q" when exiting Vim. + buffer being unloaded "<afile>". *BufWinEnter* BufWinEnter After a buffer is displayed in a window. This can be when the buffer is loaded (after @@ -348,82 +406,33 @@ BufWinEnter After a buffer is displayed in a window. This *BufWinLeave* BufWinLeave Before a buffer is removed from a window. Not when it's still visible in another window. - Also triggered when exiting. It's triggered - before BufUnload or BufHidden. - NOTE: When this autocommand is executed, the - current buffer "%" may be different from the - buffer being unloaded "<afile>". - *BufUnload* -BufUnload Before unloading a buffer. This is when the - text in the buffer is going to be freed. This - may be after a BufWritePost and before a - BufDelete. Also used for all buffers that are - loaded when Vim is going to exit. - NOTE: When this autocommand is executed, the - current buffer "%" may be different from the - buffer being unloaded "<afile>". - *BufHidden* -BufHidden Just after a buffer has become hidden. That - is, when there are no longer windows that show - the buffer, but the buffer is not unloaded or - deleted. Not used for ":qa" or ":q" when - exiting Vim. - NOTE: When this autocommand is executed, the - current buffer "%" may be different from the - buffer being unloaded "<afile>". - *BufNew* -BufNew Just after creating a new buffer. Also used - just after a buffer has been renamed. When - the buffer is added to the buffer list BufAdd - will be triggered too. - NOTE: When this autocommand is executed, the - current buffer "%" may be different from the - buffer being created "<afile>". - *BufCreate* *BufAdd* -BufAdd or BufCreate Just after creating a new buffer which is - added to the buffer list, or adding a buffer - to the buffer list. - Also used just after a buffer in the buffer - list has been renamed. - The BufCreate event is for historic reasons. - NOTE: When this autocommand is executed, the - current buffer "%" may be different from the - buffer being created "<afile>". - *BufDelete* -BufDelete Before deleting a buffer from the buffer list. - The BufUnload may be called first (if the - buffer was loaded). - Also used just before a buffer in the buffer - list is renamed. - NOTE: When this autocommand is executed, the - current buffer "%" may be different from the - buffer being deleted "<afile>". - *BufWipeout* -BufWipeout Before completely deleting a buffer. The - BufUnload and BufDelete events may be called - first (if the buffer was loaded and was in the - buffer list). Also used just before a buffer - is renamed (also when it's not in the buffer - list). - NOTE: When this autocommand is executed, the - current buffer "%" may be different from the - buffer being deleted "<afile>". - *WinEnter* -WinEnter After entering another window. Not done for - the first window, when Vim has just started. - Useful for setting the window height. - If the window is for another buffer, Vim - executes the BufEnter autocommands after the - WinEnter autocommands. - Note: When using ":split fname" the WinEnter - event is triggered after the split but before - the file "fname" is loaded. - *WinLeave* -WinLeave Before leaving a window. If the window to be - entered next is for a different buffer, Vim - executes the BufLeave autocommands before the - WinLeave autocommands (but not for ":new"). - Not used for ":qa" or ":q" when exiting Vim. + Also triggered when exiting. It's triggered + before BufUnload or BufHidden. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being unloaded "<afile>". + *BufWipeout* +BufWipeout Before completely deleting a buffer. The + BufUnload and BufDelete events may be called + first (if the buffer was loaded and was in the + buffer list). Also used just before a buffer + is renamed (also when it's not in the buffer + list). + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being deleted "<afile>". + *BufWrite* *BufWritePre* +BufWrite or BufWritePre Before writing the whole buffer to a file. + *BufWriteCmd* +BufWriteCmd Before writing the whole buffer to a file. + Should do the writing of the file and reset + 'modified' if successful, unless '+' is in + 'cpo' and writing to another file |cpo-+|. + The buffer contents should not be changed. + |Cmd-event| + *BufWritePost* +BufWritePost After writing the whole buffer to a file + (should undo the commands for BufWritePre). *CmdwinEnter* CmdwinEnter After entering the command-line window. Useful for setting options specifically for @@ -440,36 +449,225 @@ CmdwinLeave Before leaving the command-line window. <afile> is set to a single character, indicating the type of command-line. |cmdwin-char| + *ColorScheme* +ColorScheme After loading a color scheme. |:colorscheme| + + *CursorHold* +CursorHold When the user doesn't press a key for the time + specified with 'updatetime'. Not re-triggered + until the user has pressed a key (i.e. doesn't + fire every 'updatetime' ms if you leave Vim to + make some coffee. :) See |CursorHold-example| + for previewing tags. + This event is only triggered in Normal mode. + While recording the CursorHold event is not + triggered. |q| + Note: Interactive commands cannot be used for + this event. There is no hit-enter prompt, + the screen is updated directly (when needed). + Note: In the future there will probably be + another option to set the time. + Hint: to force an update of the status lines + use: > + :let &ro = &ro +< {only on Amiga, Unix, Win32, MSDOS and all GUI + versions} + *CursorHoldI* +CursorHoldI Just like CursorHold, but in Insert mode. + + *CursorMoved* +CursorMoved After the cursor was moved in Normal mode. + Also when the text of the cursor line has been + changed, e.g., with "x", "rx" or "p". + Not triggered when there is typeahead or when + an operator is pending. + For an example see |match-parens|. + Careful: Don't do anything that the user does + not expect or that is slow. + *CursorMovedI* +CursorMovedI After the cursor was moved in Insert mode. + Otherwise the same as CursorMoved. + *EncodingChanged* +EncodingChanged Fires off after the 'encoding' option has been + changed. Useful to set up fonts, for example. + *FileAppendCmd* +FileAppendCmd Before appending to a file. Should do the + appending to the file. Use the '[ and '] + marks for the range of lines.|Cmd-event| + *FileAppendPost* +FileAppendPost After appending to a file. + *FileAppendPre* +FileAppendPre Before appending to a file. Use the '[ and '] + marks for the range of lines. + *FileChangedRO* +FileChangedRO Before making the first change to a read-only + file. Can be used to check-out the file from + a source control system. Not triggered when + the change was caused by an autocommand. + This event is triggered when making the first + change in a buffer or the first change after + 'readonly' was set, just before the change is + applied to the text. + WARNING: If the autocommand moves the cursor + the effect of the change is undefined. + *E788* + It is not allowed to change to another buffer + here. You can reload the buffer but not edit + another one. + *FileChangedShell* +FileChangedShell When Vim notices that the modification time of + a file has changed since editing started. + Also when the file attributes of the file + change. |timestamp| + Mostly triggered after executing a shell + command, but also with a |:checktime| command + or when Gvim regains input focus. + This autocommand is triggered for each changed + file. It is not used when 'autoread' is set + and the buffer was not changed. If a + FileChangedShell autocommand is present the + warning message and prompt is not given. + This is useful for reloading related buffers + which are affected by a single command. + The |v:fcs_reason| variable is set to indicate + what happened and |v:fcs_choice| can be used + to tell Vim what to do next. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer that was changed "<afile>". + NOTE: The commands must not change the current + buffer, jump to another buffer or delete a + buffer. *E246* + NOTE: This event never nests, to avoid an + endless loop. This means that while executing + commands for the FileChangedShell event no + other FileChangedShell event will be + triggered. + *FileChangedShellPost* +FileChangedShellPost After handling a file that was changed outside + of Vim. Can be used to update the statusline. + *FileEncoding* +FileEncoding Obsolete. It still works and is equivalent + to |EncodingChanged|. + *FileReadCmd* +FileReadCmd Before reading a file with a ":read" command. + Should do the reading of the file. |Cmd-event| + *FileReadPost* +FileReadPost After reading a file with a ":read" command. + Note that Vim sets the '[ and '] marks to the + first and last line of the read. This can be + used to operate on the lines just read. + *FileReadPre* +FileReadPre Before reading a file with a ":read" command. + *FileType* +FileType When the 'filetype' option has been set. + <afile> can be used for the name of the file + where this option was set, and <amatch> for + the new value of 'filetype'. + See |filetypes|. + *FileWriteCmd* +FileWriteCmd Before writing to a file, when not writing the + whole buffer. Should do the writing to the + file. Should not change the buffer. Use the + '[ and '] marks for the range of lines. + |Cmd-event| + *FileWritePost* +FileWritePost After writing to a file, when not writing the + whole buffer. + *FileWritePre* +FileWritePre Before writing to a file, when not writing the + whole buffer. Use the '[ and '] marks for the + range of lines. + *FilterReadPost* +FilterReadPost After reading a file from a filter command. + Vim checks the pattern against the name of + the current buffer as with FilterReadPre. + Not triggered when 'shelltemp' is off. + *FilterReadPre* *E135* +FilterReadPre Before reading a file from a filter command. + Vim checks the pattern against the name of + the current buffer, not the name of the + temporary file that is the output of the + filter command. + Not triggered when 'shelltemp' is off. + *FilterWritePost* +FilterWritePost After writing a file for a filter command or + making a diff. + Vim checks the pattern against the name of + the current buffer as with FilterWritePre. + Not triggered when 'shelltemp' is off. + *FilterWritePre* +FilterWritePre Before writing a file for a filter command or + making a diff. + Vim checks the pattern against the name of + the current buffer, not the name of the + temporary file that is the output of the + filter command. + Not triggered when 'shelltemp' is off. + *FocusGained* +FocusGained When Vim got input focus. Only for the GUI + version and a few console versions where this + can be detected. + *FocusLost* +FocusLost When Vim lost input focus. Only for the GUI + version and a few console versions where this + can be detected. May also happen when a + dialog pops up. + *FuncUndefined* +FuncUndefined When a user function is used but it isn't + defined. Useful for defining a function only + when it's used. Both <amatch> and <afile> are + set to the name of the function. + See |autoload-functions|. *GUIEnter* GUIEnter After starting the GUI successfully, and after opening the window. It is triggered before VimEnter when using gvim. Can be used to position the window from a .gvimrc file: > :autocmd GUIEnter * winpos 100 50 -< *VimEnter* -VimEnter After doing all the startup stuff, including - loading .vimrc files, executing the "-c cmd" - arguments, creating all windows and loading - the buffers in them. - *VimLeavePre* -VimLeavePre Before exiting Vim, just before writing the - .viminfo file. This is executed only once, - if there is a match with the name of what - happens to be the current buffer when exiting. - Mostly useful with a "*" pattern. > - :autocmd VimLeavePre * call CleanupStuff() -< To detect an abnormal exit use |v:dying|. - *VimLeave* -VimLeave Before exiting Vim, just after writing the - .viminfo file. Executed only once, like - VimLeavePre. - To detect an abnormal exit use |v:dying|. - *EncodingChanged* -EncodingChanged Fires off when the 'encoding' option is - changed. Useful to set up fonts, for example. - *FileEncoding* -FileEncoding Obsolete. It still works and is equivalent - to |EncodingChanged|. +< *InsertChange* +InsertChange When typing <Insert> while in Insert or + Replace mode. The |v:insertmode| variable + indicates the new mode. + Be careful not to move the cursor or do + anything else that the user does not expect. + *InsertEnter* +InsertEnter When starting Insert mode. Also for Replace + mode and Virtual Replace mode. The + |v:insertmode| variable indicates the mode. + Be careful not to move the cursor or do + anything else that the user does not expect. + *InsertLeave* +InsertLeave When leaving Insert mode. Also when using + CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|. + *MenuPopup* +MenuPopup Just before showing the popup menu (under the + right mouse button). Useful for adjusting the + menu for what is under the cursor or mouse + pointer. + The pattern is matched against a single + character representing the mode: + n Normal + v Visual + o Operator-pending + i Insert + c Command line + *QuickFixCmdPre* +QuickFixCmdPre Before a quickfix command is run (|:make|, + |:lmake|, |:grep|, |:lgrep|, |:grepadd|, + |:lgrepadd|, |:vimgrep|, |:lvimgrep|, + |:vimgrepadd|, |:vimgrepadd|). The pattern is + matched against the command being run. When + |:grep| is used but 'grepprg' is set to + "internal" it still matches "grep". + This command cannot be used to set the + 'makeprg' and 'grepprg' variables. + If this command causes an error, the quickfix + command is not executed. + *QuickFixCmdPost* +QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix + command is run, before jumping to the first + location. *RemoteReply* RemoteReply When a reply from a Vim that functions as server was received |server2client()|. @@ -479,6 +677,69 @@ RemoteReply When a reply from a Vim that functions as Note that even if an autocommand is defined, the reply should be read with |remote_read()| to consume it. + *SessionLoadPost* +SessionLoadPost After loading the session file created using + the |:mksession| command. + *ShellCmdPost* +ShellCmdPost After executing a shell command with |:!cmd|, + |:shell|, |:make| and |:grep|. Can be used to + check for any changed files. + *ShellFilterPost* +ShellFilterPost After executing a shell command with + ":{range}!cmd", ":w !cmd" or ":r !cmd". + Can be used to check for any changed files. + *SourcePre* +SourcePre Before sourcing a Vim script. |:source| + *SpellFileMissing* +SpellFileMissing When trying to load a spell checking file and + it can't be found. <amatch> is the language, + 'encoding' also matters. See + |spell-SpellFileMissing|. + *StdinReadPost* +StdinReadPost After reading from the stdin into the buffer, + before executing the modelines. Only used + when the "-" argument was used when Vim was + started |--|. + *StdinReadPre* +StdinReadPre Before reading from stdin into the buffer. + Only used when the "-" argument was used when + Vim was started |--|. + *SwapExists* +SwapExists Detected an existing swap file when starting + to edit a file. Only when it is possible to + select a way to handle the situation, when Vim + would ask the user what to do. + The |v:swapname| variable holds the name of + the swap file found, <afile> the file being + edited. |v:swapcommand| may contain a command + to be executed in the opened file. + The commands should set the |v:swapchoice| + variable to a string with one character to + tell Vim what should be done next: + 'o' open read-only + 'e' edit the file anyway + 'r' recover + 'd' delete the swap file + 'q' quit, don't edit the file + 'a' abort, like hitting CTRL-C + When set to an empty string the user will be + asked, as if there was no SwapExists autocmd. + Note: Do not try to change the buffer, the + results are unpredictable. + *Syntax* +Syntax When the 'syntax' option has been set. + <afile> can be used for the name of the file + where this option was set, and <amatch> for + the new value of 'syntax'. + See |:syn-on|. + *TabEnter* +TabEnter Just after entering a tab page. |tab-page| + After triggering the WinEnter and before + triggering the BufEnter event. + *TabLeave* +TabLeave Just before leaving a tab page. |tab-page| + A WinLeave event will have been triggered + first. *TermChanged* TermChanged After the value of 'term' has changed. Useful for re-loading the syntax file to update the @@ -489,34 +750,50 @@ TermResponse After the response to |t_RV| is received from the terminal. The value of |v:termresponse| can be used to do things depending on the terminal version. - *UserGettingBored* -UserGettingBored When the user hits CTRL-C. Just kidding! :-) *User* User Never executed automatically. To be used for autocommands that are only executed with ":doautocmd". - -You can specify a comma-separated list of event names. No white space can be -used in this list. The command applies to all the events in the list. - -For READING FILES there are four kinds of events possible: - BufNewFile starting to edit a non-existent file - BufReadPre BufReadPost starting to edit an existing file - FilterReadPre FilterReadPost read the temp file with filter output - FileReadPre FileReadPost any other file read -Vim uses only one of these four kinds when reading a file. The "Pre" and -"Post" events are both triggered, before and after reading the file. - -Note that the autocommands for the *ReadPre events and all the Filter events -are not allowed to change the current buffer (you will get an error message if -this happens). This is to prevent the file to be read into the wrong buffer. - -Note that the 'modified' flag is reset AFTER executing the BufReadPost -and BufNewFile autocommands. But when the 'modified' option was set by the -autocommands, this doesn't happen. - -You can use the 'eventignore' option to ignore a number of events or all -events. + *UserGettingBored* +UserGettingBored When the user hits CTRL-C. Just kidding! :-) + *VimEnter* +VimEnter After doing all the startup stuff, including + loading .vimrc files, executing the "-c cmd" + arguments, creating all windows and loading + the buffers in them. + *VimLeave* +VimLeave Before exiting Vim, just after writing the + .viminfo file. Executed only once, like + VimLeavePre. + To detect an abnormal exit use |v:dying|. + *VimLeavePre* +VimLeavePre Before exiting Vim, just before writing the + .viminfo file. This is executed only once, + if there is a match with the name of what + happens to be the current buffer when exiting. + Mostly useful with a "*" pattern. > + :autocmd VimLeavePre * call CleanupStuff() +< To detect an abnormal exit use |v:dying|. + *VimResized* +VimResized After the Vim window was resized, thus 'lines' + and/or 'columns' changed. Not when starting + up though. + *WinEnter* +WinEnter After entering another window. Not done for + the first window, when Vim has just started. + Useful for setting the window height. + If the window is for another buffer, Vim + executes the BufEnter autocommands after the + WinEnter autocommands. + Note: When using ":split fname" the WinEnter + event is triggered after the split but before + the file "fname" is loaded. + *WinLeave* +WinLeave Before leaving a window. If the window to be + entered next is for a different buffer, Vim + executes the BufLeave autocommands before the + WinLeave autocommands (but not for ":new"). + Not used for ":qa" or ":q" when exiting Vim. ============================================================================== 6. Patterns *autocmd-patterns* *{pat}* @@ -529,6 +806,10 @@ two ways: both short file name (as you typed it) and the full file name (after expanding it to a full path and resolving symbolic links). +The special pattern <buffer> or <buffer=N> is used for buffer-local +autocommands |autocmd-buflocal|. This pattern is not matched against the name +of a buffer. + Examples: > :autocmd BufRead *.txt set et Set the 'et' option for all text files. > @@ -584,7 +865,7 @@ Note that for all systems the '/' character is used for path separator (even MS-DOS and OS/2). This was done because the backslash is difficult to use in a pattern and to make the autocommands portable across different systems. - + *autocmd-changes* Matching with the pattern is done when an event is triggered. Changing the buffer name in one of the autocommands, or even deleting the buffer, does not change which autocommands will be executed. Example: > @@ -597,8 +878,62 @@ the current buffer instead. Vim doesn't take into account that "*.foo" doesn't match with that buffer name. It matches "*.foo" with the name of the buffer at the moment the event was triggered. +However, buffer-local autocommands will not be executed for a buffer that has +been wiped out with |:bwipe|. After deleting the buffer with |:bdel| the +buffer actually still exists (it becomes unlisted), thus the autocommands are +still executed. + +============================================================================== +7. Buffer-local autocommands *autocmd-buflocal* *autocmd-buffer-local* + *<buffer=N>* *<buffer=abuf>* *E680* + +Buffer-local autocommands are attached to a specific buffer. They are useful +if the buffer does not have a name and when the name does not match a specific +pattern. But it also means they must be explicitly added to each buffer. + +Instead of a pattern buffer-local autocommands use one of these forms: + <buffer> current buffer + <buffer=99> buffer number 99 + <buffer=abuf> using <abuf> (only when executing autocommands) + |<abuf>| + +Examples: > + :au CursorHold <buffer> echo 'hold' + :au CursorHold <buffer=33> echo 'hold' + :au CursorHold <buffer=abuf> echo 'hold' + +All the commands for autocommands also work with buffer-local autocommands, +simply use the special string instead of the pattern. Examples: > + :au! * <buffer> " remove buffer-local autocommands for + " current buffer + :au! * <buffer=33> " remove buffer-local autocommands for + " buffer #33 + :dobuf :au! CursorHold <buffer> " remove autocmd for given event for all + " buffers + :au * <buffer> " list buffer-local autocommands for + " current buffer + +Note that when an autocommand is defined for the current buffer, it is stored +with the buffer number. Thus it uses the form "<buffer=12>", where 12 is the +number of the current buffer. You will see this when listing autocommands, +for example. + +To test for presence of buffer-local autocommands use the |exists()| function +as follows: > + :if exists("#CursorHold#<buffer=12>") | ... | endif + :if exists("#CursorHold#<buffer>") | ... | endif " for current buffer + +When a buffer is wiped out its buffer-local autocommands are also gone, of +course. Note that when deleting a buffer, e.g., with ":bdel", it is only +unlisted, the autocommands are still present. In order to see the removal of +buffer-local autocommands: > + :set verbose=6 + +It is not possible to define buffer-local autocommands for a non-existent +buffer. + ============================================================================== -7. Groups *autocmd-groups* +8. Groups *autocmd-groups* Autocommands can be put together in a group. This is useful for removing or executing a group of autocommands. For example, all the autocommands for @@ -646,7 +981,7 @@ This prevents having the autocommands defined twice (e.g., after sourcing the .vimrc file again). ============================================================================== -8. Executing autocommands *autocmd-execute* +9. Executing autocommands *autocmd-execute* Vim can also execute Autocommands non-automatically. This is useful if you have changed autocommands, or when Vim has executed the wrong autocommands @@ -676,6 +1011,10 @@ option will not cause any commands to be executed. autocommands for that group. Note: if you use an undefined group name, Vim gives you an error message. + After applying the autocommands the modelines are + processed, so that their overrule the settings from + autocommands, like what happens when editing a file. + *:doautoa* *:doautoall* :doautoa[ll] [group] {event} [fname] Like ":doautocmd", but apply the autocommands to each @@ -689,7 +1028,7 @@ option will not cause any commands to be executed. options, change highlighting, and things like that. ============================================================================== -9. Using autocommands *autocmd-use* +10. Using autocommands *autocmd-use* For WRITING FILES there are four possible sets of events. Vim uses only one of these sets for a write command: @@ -720,8 +1059,9 @@ The '[ and '] marks have a special position: the new lines will be inserted. - Before the *ReadPost event the '[ mark is set to the first line that was just read, the '] mark to the last line. -- Before executing the *WritePre and *AppendPre autocommands the '[ mark is - set to the first line that will be written, the '] mark to the last line. +- Before executing the *WriteCmd, *WritePre and *AppendPre autocommands the '[ + mark is set to the first line that will be written, the '] mark to the last + line. Careful: '[ and '] change when using commands that change the buffer. In commands which expect a file name, you can use "<afile>" for the file name @@ -781,10 +1121,8 @@ It's possible to use the ":au" command in an autocommand. This can be a self-modifying command! This can be useful for an autocommand that should execute only once. -There is currently no way to disable the autocommands. If you want to write a -file without executing the autocommands for that type of file, write it under -another name and rename it with a shell command. In some situations you can -use the 'eventignore' option. +If you want to skip autocommands for one command, use the |:noautocmd| command +modifier or the 'eventignore' option. Note: When reading a file (with ":read file" or with a filter command) and the last line in the file does not have an <EOL>, Vim remembers this. At the next @@ -901,4 +1239,22 @@ The |v:cmdbang| variable is one when "!" was used, zero otherwise. See the $VIMRUNTIME/plugin/netrw.vim for examples. +============================================================================== +11. Disabling autocommands *autocmd-disable* + +To disable autocommands for some time use the 'eventignore' option. Note that +this may cause unexpected behavior, make sure you restore 'eventignore' +afterwards, using a |:try| block with |:finally|. + + *:noautocmd* *:noa* +To disable autocommands for just one command use the ":noautocmd" command +modifier. This will set 'eventignore' to "all" for the duration of the +following command. Example: > + + :noautocmd w fname.gz + +This will write the file without triggering the autocommands defined by the +gzip plugin. + + vim:tw=78:ts=8:ft=help:norl: From 18dbcb869bc11549468a08f51c98df8f4c7c649c Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Fri, 8 Sep 2006 15:50:12 +0000 Subject: [PATCH 046/783] fix: update mbyte to 7.0, change to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@46 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/change.txt | 316 +++++++++++++++++++++++++++++++++++++------------- en/mbyte.txt | 75 +++++++++--- ja/change.jax | 287 +++++++++++++++++++++++++++++++++------------ ja/mbyte.jax | 277 ++++++++++++++++++++++++------------------- 4 files changed, 665 insertions(+), 290 deletions(-) diff --git a/en/change.txt b/en/change.txt index f8400675f..01f9a4bf9 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 6.3. Last change: 2004 May 08 +*change.txt* For Vim version 7.0. Last change: 2006 May 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -13,8 +13,13 @@ commands with the "." command. 2. Delete and insert |delete-insert| 3. Simple changes |simple-change| *changing* 4. Complex changes |complex-change| + 4.1 Filter commands |filter| + 4.2 Substitute |:substitute| + 4.3 Search and replace |search-replace| + 4.4 Changing tabs |change-tabs| 5. Copying and moving text |copy-move| 6. Formatting text |formatting| +7. Sorting text |sorting| For inserting text see |insert.txt|. @@ -48,6 +53,8 @@ For inserting text see |insert.txt|. of the line and [count]-1 more lines [into register x]; synonym for "d$". (not |linewise|) + When the '#' flag is in 'cpoptions' the count is + ignored. {Visual}["x]x or *v_x* *v_d* *v_<Del>* {Visual}["x]d or @@ -106,19 +113,22 @@ gJ Join [count] lines, with a minimum of two lines. Vi} *:j* *:join* -:[range]j[oin][!] Join [range] lines. Same as "J", except with [!] +:[range]j[oin][!] [flags] + Join [range] lines. Same as "J", except with [!] the join does not insert or delete any spaces. If a [range] has equal start and end values, this command does nothing. The default behavior is to join the current line with the line below it. {not in Vi: !} + See |ex-flags| for [flags]. -:[range]j[oin][!] {count} +:[range]j[oin][!] {count} [flags] Join {count} lines, starting with [range] (default: current line |cmdline-ranges|). Same as "J", except with [!] the join does not insert or delete any spaces. {not in Vi: !} + See |ex-flags| for [flags]. These commands delete the <EOL> between lines. This has the effect of joining multiple lines into one line. You can repeat these commands (except ":j") and @@ -230,10 +240,12 @@ If you prefer "cw" to include the space after a word, use this mapping: > :map cw dwi < *:c* *:ch* *:change* -:{range}c[hange] Replace lines of text with some different text. +:{range}c[hange][!] Replace lines of text with some different text. Type a line containing only "." to stop replacing. Without {range}, this command changes only the current line. + Adding [!] toggles 'autoindent' for the time this + command is executed. ============================================================================== 3. Simple changes *simple-change* @@ -346,29 +358,35 @@ CTRL-X Subtract [count] from the number or alphabetic The CTRL-A and CTRL-X commands work for (signed) decimal numbers, unsigned octal and hexadecimal numbers and alphabetic characters. This depends on the 'nrformats' option. -- When 'nrformats' includes "alpha", Vim will change the alphabetic character - under or after the cursor. This is useful to make lists with an alphabetic - index. +- When 'nrformats' includes "octal", Vim considers numbers starting with a '0' + to be octal, unless the number includes a '8' or '9'. Other numbers are + decimal and may have a preceding minus sign. + If the cursor is on a number, the commands apply to that number; otherwise + Vim uses the number to the right of the cursor. - When 'nrformats' includes "hex", Vim assumes numbers starting with '0x' or '0X' are hexadecimal. The case of the rightmost letter in the number determines the case of the resulting hexadecimal number. If there is no letter in the current number, Vim uses the previously detected case. -- When 'nrformats' includes "octal", Vim considers numbers starting with a '0' - to be octal. Other numbers are decimal and may have a preceding minus sign. - If the cursor is on a number, the commands apply to that number; otherwise - Vim uses the number to the right of the cursor. +- When 'nrformats' includes "alpha", Vim will change the alphabetic character + under or after the cursor. This is useful to make lists with an alphabetic + index. For numbers with leading zeros (including all octal and hexadecimal numbers), Vim preserves the number of characters in the number when possible. CTRL-A on -"0077" results in "0100", CTRL-X on "0x100" results in "0x0ff". Note that -when 'nrformats' includes "octal", decimal numbers with leading zeros are -impossible because they are indistinguishable from octal numbers. +"0077" results in "0100", CTRL-X on "0x100" results in "0x0ff". +There is one exception: When a number that starts with a zero is found not to +be octal (it contains a '8' or '9'), but 'nrformats' does include "octal", +leading zeros are removed to avoid that the result may be recognized as an +octal number. + +Note that when 'nrformats' includes "octal", decimal numbers with leading +zeros cause mistakes, because they can be confused with octal numbers. The CTRL-A command is very useful in a macro. Example: Use the following steps to make a numbered list. 1. Create the first list entry, make sure it starts with a number. -2. qa - start recording into buffer 'a' +2. qa - start recording into register 'a' 3. Y - yank the entry 4. p - put a copy of the entry below the first one 5. CTRL-A - increment the number @@ -412,12 +430,15 @@ SHIFTING LINES LEFT OR RIGHT *shift-left-right* lines to [indent] (default 0). {not in Vi} *:>* -:[range]> Shift {count} [range] lines one 'shiftwidth' right. +:[range]> [flags] Shift {count} [range] lines one 'shiftwidth' right. Repeat '>' for shifting multiple 'shiftwidth's. + See |ex-flags| for [flags]. -:[range]> {count} Shift {count} lines one 'shiftwidth' right, starting +:[range]> {count} [flags] + Shift {count} lines one 'shiftwidth' right, starting with [range] (default current line |cmdline-ranges|). Repeat '>' for shifting multiple 'shiftwidth's. + See |ex-flags| for [flags]. The ">" and "<" commands are handy for changing the indentation within programs. Use the 'shiftwidth' option to set the size of the white space @@ -449,7 +470,19 @@ For example: > ============================================================================== 4. Complex changes *complex-change* - *!* *filter* +4.1 Filter commands *filter* + +A filter is a program that accepts text at standard input, changes it in some +way, and sends it to standard output. You can use the commands below to send +some text through a filter, so that it is replace by the filter output. +Examples of filters are "sort", which sorts lines alphabetically, and +"indent", which formats C program files (you need a version of indent that +works like a filter; not all versions do). The 'shell' option specifies the +shell Vim uses to execute the filter command (See also the 'shelltype' +option). You can repeat filter commands with ".". Vim does not recognize a +comment (starting with '"') after the ":!" command. + + *!* !{motion}{filter} Filter {motion} text lines through the external program {filter}. @@ -470,6 +503,8 @@ For example: > temporary file and then reads the file into the buffer. Vim uses the 'shellredir' option to redirect the filter output to the temporary file. + However, if the 'shelltemp' option is off then pipes + are used when possible (on Unix). When the 'R' flag is included in 'cpoptions' marks in the filtered lines are deleted, unless the |:keepmarks| command is used. Example: > @@ -492,18 +527,10 @@ For example: > {Visual}= Filter the highlighted lines like with ={motion}. {not in Vi} -A filter is a program that accepts text at standard input, changes it in some -way, and sends it to standard output. You can use the commands above to send -some text through a filter. Examples of filters are "sort", which sorts lines -alphabetically, and "indent", which formats C program files (you need a -version of indent that works like a filter; not all versions do). The 'shell' -option specifies the shell Vim uses to execute the filter command (See also -the 'shelltype' option). You can repeat filter commands with ".". Vim does -not recognize a comment (starting with '"') after the ":!" command. - - *:s* *:su* *:substitute* -:[range]s[ubstitute]/{pattern}/{string}/[&][c][e][g][p][r][i][I] [count] +4.2 Substitute *:substitute* + *:s* *:su* +:[range]s[ubstitute]/{pattern}/{string}/[flags] [count] For each line in [range] replace a match of {pattern} with {string}. For the {pattern} see |pattern|. @@ -515,31 +542,31 @@ not recognize a comment (starting with '"') after the ":!" command. starting with the last line in [range]. When [range] is omitted start in the current line. Also see |cmdline-ranges|. - See |:s_flags| for the flags. + See |:s_flags| for [flags]. -:[range]s[ubstitute] [c][e][g][p][r][i][I] [count] -:[range]&[&][c][e][g][p][r][i][I] [count] *:&* +:[range]s[ubstitute] [flags] [count] +:[range]&[&][flags] [count] *:&* Repeat last :substitute with same search pattern and substitute string, but without the same flags. You - may add extra flags (see |:s_flags|). + may add [flags], see |:s_flags|. Note that after ":substitute" the '&' flag can't be used, it's recognized as a pattern separator. The space between ":substitute" and the 'c', 'g' and 'r' flags isn't required, but in scripts it's a good idea to keep it to avoid confusion. -:[range]~[&][c][e][g][p][r][i][I] [count] *:~* +:[range]~[&][flags] [count] *:~* Repeat last substitute with same substitute string but with last used search pattern. This is like - ":&r". See |:s_flags| for the flags. + ":&r". See |:s_flags| for [flags]. - *&* + *&* & Synonym for ":s//~/" (repeat last substitute). Note that the flags are not remembered, thus it might actually work differently. You can use ":&&" to keep the flags. - *g&* + *g&* g& Synonym for ":%s//~/&" (repeat last substitute on all lines with the same flags). Mnemonic: global substitute. {not in Vi} @@ -605,8 +632,15 @@ The flags that you can use for the substitute commands: options are not used. {not in Vi} +[n] Report the number of matches, do not actually substitute. The [c] + flag is ignored. The matches are reported as if 'report' is zero. + Useful to |count-items|. + [p] Print the line containing the last substitute. - {not in Vi} + +[#] Like [p] and prepend the line number. + +[l] Like [l] but print the text like |:list|. [r] Only useful in combination with ":&" or ":s" without arguments. ":&r" works the same way as ":~": When the search pattern is empty, use the @@ -650,8 +684,11 @@ For the definition of a pattern, see |pattern|. *sub-replace-special* *:s\=* When the {string} starts with "\=" it is evaluated as an expression, see -|sub-replace-expression|. Otherwise these characters in {string} have a -special meaning: +|sub-replace-expression|. You can use that for any special characters. +Otherwise these characters in {string} have a special meaning: + *:s%* +When {string} is equal to "%" and '/' is included with the 'cpoptions' option, +then the {string} of the previous substitute command is used. |cpo-/| magic nomagic action ~ & \& replaced with the whole matched pattern *s/\&* @@ -659,7 +696,7 @@ magic nomagic action ~ \0 replaced with the whole matched pattern *\0* *s/\0* \1 replaced with the matched pattern in the first pair of () *s/\1* - \2 replaced with the matched pattern in the first + \2 replaced with the matched pattern in the second pair of () *s/\2* .. .. *s/\3* \9 replaced with the matched pattern in the ninth @@ -691,6 +728,7 @@ Examples: > :s/\([abc]\)\([efg]\)/\2\1/g modifies "af fa bg" to "fa fa gb" :s/abcde/abc^Mde/ modifies "abcde" to "abc", "de" (two lines) :s/$/\^M/ modifies "abcde" to "abcde^M" + :s/\w\+/\u\0/g modifies "bla bla" to "Bla Bla" Note: In previous versions CTRL-V was handled in a special way. Since this is not Vi compatible, this was removed. Use a backslash instead. @@ -714,8 +752,8 @@ either the first or second pattern in parentheses did not match, so either < Substitute with an expression *sub-replace-expression* - -When the substitute string starts with "\=" the remainer is interpreted as an + *sub-replace-\=* +When the substitute string starts with "\=" the remainder is interpreted as an expression. This does not work recursively: a substitute() function inside the expression cannot use "\=" for the substitute string. @@ -728,6 +766,10 @@ break the line. For convenience a <NL> character is also used as a line break. Prepend a backslash to get a real <NL> character (which will be a NUL in the file). +When the result is a |List| then the items are joined with separating line +breaks. Thus each item becomes a line, except that they can contain line +breaks themselves. + The whole matched text can be accessed with "submatch(0)". The text matched with the first pair of () with "submatch(1)". Likewise for further sub-matches in (). @@ -736,12 +778,17 @@ Be careful: The separation character must not appear in the expression! Consider using a character like "@" or ":". There is no problem if the result of the expression contains the separation character. -Example: > +Examples: > :s@\n@\="\r" . expand("$HOME") . "\r"@ -This replaces an end-of-line with a new line containing the value of $HOME. +This replaces an end-of-line with a new line containing the value of $HOME. > + + s/E/\="\<Char-0x20ac>"/g +This replaces 'E' characters with an euro sign. Read more in |<Char->|. - *:pro* *:promptfind* +4.3 Search and replace *search-replace* + + *:pro* *:promptfind* :promptf[ind] [string] Put up a Search dialog. When [string] is given, it is used as the initial search string. @@ -753,6 +800,8 @@ This replaces an end-of-line with a new line containing the value of $HOME. given, it is used as the initial search string. {only for Win32, Motif and GTK GUI} + +4.4 Changing tabs *change-tabs* *:ret* *:retab* :[range]ret[ab][!] [new_tabstop] Replace all sequences of white-space containing a @@ -851,8 +900,10 @@ inside of strings can change! Also see 'softtabstop' option. > *<MiddleMouse>* ["x]<MiddleMouse> Put the text from a register before the cursor [count] times. Uses the "* register, unless another is - specified. Using the mouse only works when 'mouse' - contains 'n' or 'a'. + specified. + Leaves the cursor at the end of the new text. + Using the mouse only works when 'mouse' contains 'n' + or 'a'. {not in Vi} If you have a scrollwheel and often accidentally paste text, you can use these mappings to disable the @@ -875,6 +926,8 @@ inside of strings can change! Also see 'softtabstop' option. > current line). This always works |linewise|, thus this command can be used to put a yanked block as new lines. + The cursor is left on the first non-blank in the last + new line. The register can also be '=' followed by an optional expression. The expression continues until the end of the command. You need to escape the '|' and '"' @@ -924,9 +977,9 @@ When using a put command like |p| or |P| in Visual mode, Vim will try to replace the selected text with the contents of the register. Whether this works well depends on the type of selection and the type of the text in the register. With blockwise selection it also depends on the size of the block -and whether the corners are on an existing character. (implementation detail: +and whether the corners are on an existing character. (Implementation detail: it actually works by first putting the register after the selection and then -deleting the selection). +deleting the selection.) *blockwise-register* If you use a blockwise Visual mode command to get the text into the register, @@ -963,11 +1016,13 @@ There are nine types of registers: *registers* *E354* 1. Unnamed register "" *quote_quote* *quotequote* Vim fills this register with text deleted with the "d", "c", "s", "x" commands or copied with the yank "y" command, regardless of whether or not a specific -register was used (e.g. "xdd). An exception is the '_' register: "_dd does -not store the deleted text in any register. Vim uses the contents of this -register for any put command (p or P) which does not specify a register. -Additionally you can access it with the name '"'. This means you have to type -two double quotes. Writing to the "" register writes to register "0. +register was used (e.g. "xdd). This is like the unnamed register is pointing +to the last used register. An exception is the '_' register: "_dd does not +store the deleted text in any register. +Vim uses the contents of the unnamed register for any put command (p or P) +which does not specify a register. Additionally you can access it with the +name '"'. This means you have to type two double quotes. Writing to the "" +register writes to register "0. {Vi: register contents are lost when changing files, no '"'} 2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1* @@ -978,9 +1033,9 @@ unless the command specified another register with ["x]. Numbered register 1 contains the text deleted by the most recent delete or change command, unless the command specified another register or the text is less than one line (the small delete register is used then). An exception is -made for these commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|. -Register "1 is always used then (this is Vi compatible). The "- register is -used as well if the delete is within a line. +made for the delete operator with these movement commands: |%|, |(|, |)|, |`|, +|/|, |?|, |n|, |N|, |{| and |}|. Register "1 is always used then (this is Vi +compatible). The "- register is used as well if the delete is within a line. With each successive deletion or change, Vim shifts the previous contents of register 1 into register 2, 2 into 3, and so forth, losing the previous contents of register 9. @@ -995,7 +1050,8 @@ except when the command specifies a register with ["x]. 4. Named registers "a to "z or "A to "Z *quote_alpha* *quotea* Vim fills these registers only when you say so. Specify them as lowercase letters to replace their previous contents or as uppercase letters to append -to their previous contents. +to their previous contents. When the '>' flag is present in 'cpoptions' then +a line break is inserted before the appended text. 5. Read-only registers ":, "., "% and "# These are '%', '#', ':' and '.'. You can use them only with the "p", "P", @@ -1028,14 +1084,18 @@ normal command-line editing commands are available, including a special history for expressions. When you end the command-line by typing <CR>, Vim computes the result of the expression. If you end it with <Esc>, Vim abandons the expression. If you do not enter an expression, Vim uses the previous -expression (like with the "/" command). If the "= register is used for the -"p" command, the string is split up at <NL> characters. If the string ends in -a <NL>, it is regarded as a linewise register. {not in Vi} +expression (like with the "/" command). The expression must evaluate to a +string. If the result is a number it's turned into a string. A List, +Dictionary or FuncRef results in an error message (use string() to convert). +If the "= register is used for the "p" command, the string is split up at <NL> +characters. If the string ends in a <NL>, it is regarded as a linewise +register. {not in Vi} 7. Selection and drop registers "*, "+ and "~ Use these register for storing and retrieving the selected text for the GUI. See |quotestar| and |quoteplus|. When the clipboard is not available or not -working, the unnamed register is used instead. {not in Vi} +working, the unnamed register is used instead. For Unix systems the clipboard +is only available when the |+xterm_clipboard| feature is present. {not in Vi} Note that there is only a distinction between "* and "+ for X11 systems. For an explanation of the difference, see |x11-selection|. Under MS-Windows, use @@ -1047,7 +1107,7 @@ operation. When something has been dropped onto Vim, the "~ register is filled in and the <Drop> pseudo key is sent for notification. You can remap this key if you want; the default action (for all modes) is to insert the contents of the "~ register at the cursor position. {not in Vi} -{only available when compiled with the |+dnd| feature, curently only with the +{only available when compiled with the |+dnd| feature, currently only with the GTK GUI} Note: The "~ register is only used when dropping plain text onto Vim. @@ -1112,13 +1172,23 @@ The next three commands always work on whole lines. compile time. *gq* -gq{motion} Format the lines that {motion} moves over. The - 'textwidth' option controls the length of each - formatted line (see below). If the 'textwidth' option - is 0, the formatted line length is the screen width - (with a maximum width of 79). {not in Vi} +gq{motion} Format the lines that {motion} moves over. + Formatting is done with one of three methods: + 1. If 'formatexpr' is not empty the expression is + evaluated. This can differ for each buffer. + 2. If 'formatprg' is not empty an external program + is used. + 3. Otherwise formatting is done internally. + + In the third case the 'textwidth' option controls the + length of each formatted line (see below). + If the 'textwidth' option is 0, the formatted line + length is the screen width (with a maximum width of + 79). The 'formatoptions' option controls the type of formatting |fo-table|. + The cursor is left on the first non-blank of the last + formatted line. NOTE: The "Q" command formerly performed this function. If you still want to use "Q" for formatting, use this mapping: > @@ -1134,8 +1204,15 @@ gqq Format the current line. {not in Vi} *gw* gw{motion} Format the lines that {motion} moves over. Similar to |gq| but puts the cursor back at the same position in - the text. However, 'formatprg' is not used. - {not in Vi} + the text. However, 'formatprg' and 'formatexpr' are + not used. {not in Vi} + +gwgw *gwgw* *gww* +gww Format the current line as with "gw". {not in Vi} + + *v_gw* +{Visual}gw Format the highlighted text as with "gw". (for + {Visual} see |Visual-mode|). {not in Vi} Example: To format the current paragraph use: *gqap* > gqap @@ -1159,9 +1236,10 @@ white space!). The 'joinspaces' option is used when lines are joined together. -You can set the 'formatprg' option to the name of an external program for Vim -to use for text formatting. The 'textwidth' and other options have no effect -on formatting by an external program. +You can set the 'formatexpr' option to an expression or the 'formatprg' option +to the name of an external program for Vim to use for text formatting. The +'textwidth' and other options have no effect on formatting by an external +program. *right-justify* There is no command in Vim to right justify text. You can do it with @@ -1304,10 +1382,12 @@ a Automatic formatting of paragraphs. Every time text is inserted or deleted the paragraph will be reformatted. See |auto-format|. When the 'c' flag is present this only happens for recognized comments. -n When formatting text, recognize numbered lists. The indent of the - text after the number is used for the next line. The number may - optionally be followed by '.', ':', ')', ']' or '}'. Note that - 'autoindent' must be set too. Doesn't work well together with "2". +n When formatting text, recognize numbered lists. This actually uses + the 'formatlistpat' option, thus any kind of list can be used. The + indent of the text after the number is used for the next line. The + default is to find a number, optionally be followed by '.', ':', ')', + ']' or '}'. Note that 'autoindent' must be set too. Doesn't work + well together with "2". Example: > 1. the first item wraps @@ -1349,8 +1429,9 @@ value action ~ "c" automatic formatting for comments, but not text (good for C code) "tc" automatic formatting for text and comments -Note that when 'textwidth' is 0, Vim does no formatting anyway (but does -insert comment leaders according to the 'comments' option). +Note that when 'textwidth' is 0, Vim does no automatic formatting anyway (but +does insert comment leaders according to the 'comments' option). An exception +is when the 'a' flag is present. |auto-format| Note that when 'paste' is on, Vim does no formatting at all. @@ -1361,7 +1442,7 @@ If the 'comments' option includes "/*", "*" and/or "*/", then Vim has some built in stuff to treat these types of comments a bit more cleverly. Opening a new line before or after "/*" or "*/" (with 'r' or 'o' present in 'formatoptions') gives the correct start of the line automatically. The same -happens with formatting and auto-wrapping. Opening a line after a line +happens with formatting and auto-wrapping. Opening a line after a line starting with "/*" or "*" and containing "*/", will cause no comment leader to be inserted, and the indent of the new line is taken from the line containing the start of the comment. @@ -1405,6 +1486,9 @@ editing text paragraphs. A few hints on how to use this: - Add the 'c' flag to only auto-format comments. Useful in source code. +- Set 'textwidth' to the desired width. If it is zero then 79 is used, or the + width of the screen if this is smaller. + And a few warnings: - When part of the text is not properly separated in paragraphs, making @@ -1421,5 +1505,75 @@ And a few warnings: - Formatting a long paragraph and/or with complicated indenting may be slow. +============================================================================== +7. Sorting text *sorting* + +Vim has a sorting function and a sorting command. The sorting function can be +found here: |sort()|. + + *:sor* *:sort* +:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] + Sort lines in [range]. When no range is given all + lines are sorted. + + With [!] the order is reversed. + + With [i] case is ignored. + + With [n] sorting is done on the first decimal number + in the line (after or inside a {pattern} match). + + With [x] sorting is done on the first hexadecimal + number in the line (after or inside a {pattern} + match). A leading "0x" or "0X" is ignored. + + With [o] sorting is done on the first octal number in + the line (after or inside a {pattern} match). + + With [u] only keep the first of a sequence of + identical lines (ignoring case when [i] is used). + Without this flag, a sequence of identical lines + will be kept in their original order. + Note that leading and trailing white space may cause + lines to be different. + + When /{pattern}/ is specified and there is no [r] flag + the text matched with {pattern} is skipped, so that + you sort on what comes after the match. + Instead of the slash any non-letter can be used. + For example, to sort on the second comma-separated + field: > + :sort /[^,]*,/ +< To sort on the text at virtual column 10 (thus + ignoring the difference between tabs and spaces): > + :sort /.*\%10v/ +< To sort on the first number in the line, no matter + what is in front of it: > + :sort /.*\ze\d/ + +< With [r] sorting is done on the matching {pattern} + instead of skipping past it as described above. + For example, to sort on only the first three letters + of each line: > + :sort /\a\a\a/ r + +< If a {pattern} is used, any lines which don't have a + match for {pattern} are kept in their current order, + but separate from the lines which do match {pattern}. + If you sorted in reverse, they will be in reverse + order after the sorted lines, otherwise they will be + in their original order, right before the sorted + lines. + +Note that using ":sort" with ":global" doesn't sort the matching lines, it's +quite useless. + +The details about sorting depend on the library function used. There is no +guarantee that sorting is "stable" or obeys the current locale. You will have +to try it out. + +The sorting can be interrupted, but if you interrupt it too late in the +process you may end up with duplicated lines. This also depends on the system +library function used. vim:tw=78:ts=8:ft=help:norl: diff --git a/en/mbyte.txt b/en/mbyte.txt index 38e53bd83..809abda4b 100644 --- a/en/mbyte.txt +++ b/en/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 6.3. Last change: 2004 Jun 07 +*mbyte.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -141,7 +141,7 @@ There are several ways to enter multi-byte characters: - For all systems keymaps can be used. See |mbyte-keymap|. The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose -the different input medhods or disable them temporarily. +the different input methods or disable them temporarily. ============================================================================== 2. Locale *mbyte-locale* @@ -286,6 +286,29 @@ Supported 'encoding' values are: *encoding-values* 1 koi8-u Ukrainian 1 macroman MacRoman (Macintosh encoding) 1 8bit-{name} any 8-bit encoding (Vim specific name) +1 cp437 similar to iso-8859-1 +1 cp737 similar to iso-8859-7 +1 cp775 Baltic +1 cp850 similar to iso-8859-4 +1 cp852 similar to iso-8859-1 +1 cp855 similar to iso-8859-2 +1 cp857 similar to iso-8859-5 +1 cp860 similar to iso-8859-9 +1 cp861 similar to iso-8859-1 +1 cp862 similar to iso-8859-1 +1 cp863 similar to iso-8859-8 +1 cp865 similar to iso-8859-1 +1 cp866 similar to iso-8859-5 +1 cp869 similar to iso-8859-7 +1 cp874 Thai +1 cp1250 Czech, Polish, etc. +1 cp1251 Cyrillic +1 cp1253 Greek +1 cp1254 Turkish +1 cp1255 Hebrew +1 cp1256 Arabic +1 cp1257 Baltic +1 cp1258 Vietnamese 1 cp{number} MS-Windows: any installed single-byte codepage 2 cp932 Japanese (Windows only) 2 euc-jp Japanese (Unix only) @@ -328,6 +351,8 @@ u unicode same as ucs-2 u ucs2be same as ucs-2 (big endian) u ucs-2be same as ucs-2 (big endian) u ucs-4be same as ucs-4 (big endian) + default stands for the default value of 'encoding', depends on the + environment For the UCS codes the byte order matters. This is tricky, use UTF-8 whenever you can. The default is to use big-endian (most significant byte comes @@ -434,7 +459,7 @@ Useful utilities for converting the charset: ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz Korean: hmconv - Hmconv is Korean code conversion utility especially for E-mail. It can + Hmconv is Korean code conversion utility especially for E-mail. It can convert between EUC-KR and ISO-2022-KR. Hmconv can be found at: ftp://ftp.kaist.ac.kr/pub/hangul/code/hmconv/ @@ -442,7 +467,7 @@ Useful utilities for converting the charset: Lv is a Powerful Multilingual File Viewer. And it can be worked as |charset| converter. Supported |charset|: ISO-2022-CN, ISO-2022-JP, ISO-2022-KR, EUC-CN, EUC-JP, EUC-KR, EUC-TW, UTF-7, UTF-8, ISO-8859 - series, Shift_JIS, Big5 and HZ. Lv can be found at: + series, Shift_JIS, Big5 and HZ. Lv can be found at: http://www.ff.iij4u.or.jp/~nrt/freeware/lv4495.tar.gz @@ -459,6 +484,12 @@ conversion needs to be done. These conversions are supported: request a very large buffer, more than Vim is willing to provide). Try getting another iconv() implementation. + *iconv-dynamic* +On MS-Windows Vim can be compiled with the |+iconv/dyn| feature. This means +Vim will search for the "iconv.dll" and "libiconv.dll" libraries. When +neither of them can be found Vim will still work but some conversions won't be +possible. + ============================================================================== 4. Using a terminal *mbyte-terminal* @@ -504,7 +535,7 @@ Now start xterm with > or, for bigger character: > xterm -u8 -fn -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 -and you will have a working UTF-8 terminal emulator. Try both > +and you will have a working UTF-8 terminal emulator. Try both > cat utf-8-demo.txt vim utf-8-demo.txt @@ -742,6 +773,8 @@ is suitable for complex input, such as CJK. Traditional and Simplified Chinese characters. And it can accept other locale if you make a correct input table. Xcin can be found at: http://xcin.linux.org.tw/ + Others are scim: http://scim.freedesktop.org/ and fcitx: + http://www.fcitx.org/ - Conversion Server *conversion-server* @@ -757,7 +790,7 @@ is suitable for complex input, such as CJK. number of Hira-gana characters are 76. So, first, we pre-input text as pronounced in Hira-gana, second, we convert Hira-gana to Kanji or Kata-Kana, if needed. There are some Kana-Kanji conversion server: jserver - (distributed with Wnn, see below) and canna. Canna could be found at: + (distributed with Wnn, see below) and canna. Canna could be found at: ftp://ftp.nec.co.jp/pub/Canna/ (no longer works). There is a good input system: Wnn4.2. Wnn 4.2 contains, @@ -797,7 +830,7 @@ Use the RPM or port for your system. Preedit Area and Status Area are performed by the client application in the area of application. The client application is directed by the |IM-server| to display all pre-edit data at the location of text - insertion. The client registers callbacks invoked by the input method + insertion. The client registers callbacks invoked by the input method during pre-editing. *. over-the-spot *OverTheSpot* Status Area is created in a fixed position within the area of application, @@ -906,7 +939,7 @@ IME status to that memorized automatically. This works on not only insert-normal mode, but also search-command input and replace mode. The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose -the different input medhods or disable them temporarily. +the different input methods or disable them temporarily. WHAT IS IME IME is a part of East asian version Windows. That helps you to input @@ -952,7 +985,7 @@ Cursor color when IME or XIM is on *CursorIM* This works in the same way when using XIM. You can select cursor color when status is on by using highlight group - CursorIM. For example, add these lines to your _gvimrc: > + CursorIM. For example, add these lines to your |gvimrc|: > if has('multi_byte_ime') highlight Cursor guifg=NONE guibg=Green @@ -1002,7 +1035,7 @@ use a brightly colored cursor: > :highlight Cursor guifg=NONE guibg=Green :highlight lCursor guifg=NONE guibg=Cyan < - *keymap-file-format* *:loadk* *:loadkeymap* *E105* + *keymap-file-format* *:loadk* *:loadkeymap* *E105* *E791* The keymap file looks something like this: > " Maintainer: name <email@address> @@ -1043,6 +1076,7 @@ also add this line: > '' ' Since the mapping is defined with |:lnoremap| the resulting quote will not be used for the start of another character. +The "accents" keymap uses this. *keymap-accents* Although it's possible to have more than one character in the second column, this is unusual. But you can use various ways to specify the character: > @@ -1224,11 +1258,16 @@ Double-width characters are supported. This works best with 'guifontwide' or normal width and a space to fill the gap. Note that the 'guifontset' option is no longer relevant in the GTK+ 2 GUI. -Up to two combining characters can be used. The combining character is drawn -on top of the preceding character. When editing text a composing character is -mostly considered part of the preceding character. For example "x" will -delete a character and its following composing characters by default. If the -'delcombine' option is on, then pressing 'x' will delete the combining + *mbyte-combining* *mbyte-composing* +A composing or combining character is used to change the meaning of the +character before it. The combining characters are drawn on top of the +preceding character. +Up to two combining characters can be used by default. This can be changed +with the 'maxcombine' option. +When editing text a composing character is mostly considered part of the +preceding character. For example "x" will delete a character and its +following composing characters by default. +If the 'delcombine' option is on, then pressing 'x' will delete the combining characters, one at a time, then the base character. But when inserting, you type the first character and the following composing characters separately, after which they will be joined. The "r" command will not allow you to type a @@ -1249,7 +1288,7 @@ characters present in the selected font. Useful commands: - "ga" shows the decimal, hexadecimal and octal value of the character under - the cursor. If there are composing characters these are shown too. (if the + the cursor. If there are composing characters these are shown too. (If the message is truncated, use ":messages"). - "g8" shows the bytes used in a UTF-8 character, also the composing characters, as hex numbers. @@ -1315,7 +1354,7 @@ a zero if necessary. COMMAND ARGUMENTS *utf-8-char-arg* Commands like |f|, |F|, |t| and |r| take an argument of one character. For -UTF-8 this argument may include one or two composing characters. These needs +UTF-8 this argument may include one or two composing characters. These need to be produced together with the base character, Vim doesn't wait for the next character to be typed to find out if it is a composing character or not. Using 'keymap' or |:lmap| is a nice way to type these characters. @@ -1360,7 +1399,7 @@ options.txt for detailed information. Contributions specifically for the multi-byte features by: Chi-Deok Hwang <hwang@mizi.co.kr> - Nam SungHyun <namsh@lge.com> + Nam SungHyun <namsh@kldp.org> K.Nagano <nagano@atese.advantest.co.jp> Taro Muraoka <koron@tka.att.ne.jp> Yasuhiro Matsumoto <mattn@mail.goo.ne.jp> diff --git a/ja/change.jax b/ja/change.jax index 84f7c1a67..773b46bbd 100644 --- a/ja/change.jax +++ b/ja/change.jax @@ -1,10 +1,11 @@ COMMENT: テキストファイルの修正(削除・変更) -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*change.txt* For Vim version 6.3. Last change: 2004 May 08 +*change.txt* For Vim version 7.0. Last change: 2006 May 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -19,8 +20,13 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> 2. 削除と挿入 |delete-insert| 3. 単純な変更 |simple-change| *changing* 4. 複雑な変更 |complex-change| + 4.1 フィルタコマンド |filter| + 4.2 置換 |:substitute| + 4.3 検索と置換 |search-replace| + 4.4 タブの変換 |change-tabs| 5. テキストのコピーと移動 |copy-move| 6. テキストの整形 |formatting| +7. テキストのソート |sorting| テキストの挿入に関しては |insert.txt| を参照。 @@ -31,10 +37,10 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> ["x]x カーソル下から後の [count] 文字を [レジスタ x に入れ] 削除する (行単位ではない|linewise|)。"dl" と同じであ る。<Del> キーには [count] が使えない。代わりに、 - [count] の最後の文字を削除する (訳注: はて?どういうこ - とだ?)。<Del> キーが思ったように動作しないときは、 - |:fixdel| を参照。<EOL> の削除 (行の連結) については、 - 'whichwrap'を参照。 {Vi では <Del> が使えない} + [count] の最後の文字を削除する (訳注: 123<Del>と押すと + 3が消え12になる)。<Del> キーが思ったように動作しない + ときは、|:fixdel| を参照。<EOL> の削除 (行の連結) につ + いては、'whichwrap'を参照。 {Vi では <Del> が使えない} *X* *dh* ["x]X カーソルから前の [count] 文字を [レジスタ x に入れ] 削 @@ -53,6 +59,8 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> ["x]D カーソル下から行の最後までの文字と、[count]-1 行を、 [レジスタ x に入れ] 削除する。"d$" と同義 (行単位ではない|linesize|)。 + 'cpoptions'にフラグ'#'が入っているとカウントは無視され + る。 {Visual}["x]x または *v_x* *v_d* *v_<Del>* {Visual}["x]d または @@ -107,15 +115,18 @@ gJ [count] 行を連結する (最低は 2 行)。空白の挿入や削除を 削除を行わない。 {Vi にはない} *:j* *:join* -:[range]j[oin][!] [range] 行を連結する。"J" と同様だが、[!] と共に使うと +:[range]j[oin][!] [flags] + [range] 行を連結する。"J" と同様だが、[!] と共に使うと 空白の挿入や削除を行わない。[range] の開始点と終了点が 同じときは、このコマンドは何もしない。既定の動作では、 現在行を次行と連結する。 {Vi にはない} + [flags]については|ex-flags|を参照。 -:[range]j[oin][!] {count} +:[range]j[oin][!] {count} [flags] [range] 行目 (既定では現在行 |cmdline-ranges|) からの {count} 行を連結する。"J" と同様だが、[!] と共に使うと 空白の挿入や削除を行わない。 {Vi にはない} + [flags]については|ex-flags|を参照。 これらのコマンドは、行の間の <EOL> を削除する。この結果、複数行が1行に連結され る。これらのコマンド (":j" 以外) は、繰り返しやアンドゥができる。 @@ -223,9 +234,11 @@ Note: :map cw dwi < *:c* *:ch* *:change* -:{range}c[hange] テキストを行単位で別のテキストと置き換える。 +:{range}c[hange][!] テキストを行単位で別のテキストと置き換える。 "." のみを含む行を打ち込むことで置換を終了する。 {range} なしの場合、現在行のみを変更する。 + [!]をつけると、このコマンドを実行するときだけ + 'autoindent'をトグルする。 ============================================================================== 3. 単純な変更 *simple-change* @@ -340,21 +353,27 @@ CTRL-X カーソルの下または後の数またはアルファベットか コマンド CTRL-A と CTRL-X は(符号付)10進数と符号なし8進/16進数、アルファベッ トに対し機能する。この動作はオプション 'nrformats' に依存する。 -- 'nrformats' が "alpha" を含むときは、Vimはカーソルの下または後のアルファベッ - トを変更する。これはアルファベット番号の箇条書きを作るのに便利である。 +- 'nrformats' が "octal" を含むときは、Vimは '0' で始まり、'8'や'9'を含まない + 数字を8進数として取り扱う。他の数は10進数とみなされ、マイナス符号が付いても + よい。カーソルが数の上にあれば、コマンドはその数に適用される。そうでなければ、 + カーソルの右の数に適用される。 - 'nrformats' が "hex" を含むときは、Vimは '0x' か '0X' で始まる数を16進数とし て取り扱う。その数の最も右の文字が大文字であるか小文字であるかによって、変更 結果の16進数が大文字か小文字かが決定する。対象となった数にアルファベットが含 まれない場合、Vimは前回の決定を使う。 -- 'nrformats' が "octal" を含むときは、Vimは '0' で始まる数を8進数として取り扱 - う。他の数は10進数とみなされ、マイナス符号が付いてもよい。カーソルが数の上に - あれば、コマンドはその数に適用される。そうでなければ、カーソルの右の数に適用 - される。 +- 'nrformats' が "alpha" を含むときは、Vimはカーソル下または後のアルファベット + を変更する。これはアルファベットのインデクスつきのリストを作るときに便利であ + る。 ゼロから始まる数 (全ての8進数、16進数を含む) に対して、Vimはできる限りその数の 文字数を保とうとする。"0077" 上で CTRL-A を使うと "0100" となり、"0x100" 上で -CTRL-X を使うと "0x0ff" となる。 Note: 'nrformats' が "octal" を含んでいるとき -は、0で始まる10進数は、8進数と区別できないため使用できないことに注意。 +CTRL-X を使うと "0x0ff" となる。 +1つだけ例外がある: ゼロで始まるが8進数でないとき('8'や'9'を含んでいるとき)、 +'nrformats'が"octal"を含んでいるならば、結果が8進数とみなされないように、前方 +のゼロは削除される。 + +Note: 'nrformats' が "octal" を含んでいるとき、0で始まる10進数は、8進数と区別 +しづらいため、意図しない結果になる可能性がある。 コマンド CTRL-A はマクロ内でたいへん便利である。例: 番号付きリストを作るには、 次の方法を使う。 @@ -404,12 +423,15 @@ CTRL-X を使うと "0x0ff" となる。 Note: 'nrformats' が "octal" を含ん (既定値は 0) に設定される。 {Vi にはない} *:>* -:[range]> [range] の行を、'shiftwidth' 1個分右にずらす。 +:[range]> [flags] [range] の行を、'shiftwidth' 1個分右にずらす。 'shiftwidth' の複数個分ずらすには、'>' を繰り返す。 + [flags]については|ex-flags|を参照。 -:[range]> {count} [range] (既定は現在の行 |cmdline-ranges|) から始まる +:[range]> {count} [flags] + [range] (既定は現在の行 |cmdline-ranges|) から始まる {count} 行を、'shiftwidth' 1個分右にずらす。 'shiftwidth' の複数個分ずらすには、'>' を繰り返す。 + [flags]については|ex-flags|を参照。 コマンド ">" と "<" は、プログラムに含まれるインデントを変更するのに便利である。 オプション 'shiftwidth' には、これらのコマンドが挿入、削除する空白の幅を設定す @@ -439,6 +461,17 @@ Vimは空白のみを使う。">><<" によって、インデント内の <Tab> ============================================================================== 4. 複雑な変更 *complex-change* +4.1 フィルタコマンド *filter* + +フィルタとは、テキストを標準入力から受け取り、何らかの変更を加え、標準出力に送 +るプログラムのことである。以下のコマンドにより、テキストの一部をフィルタにかけ +ることができる。フィルタの例としては、行をアルファベット順にソートする "sort"、 +Cのプログラムを整形する "indent" (ただし、フィルタ機能を持ったバージョンが必要。 +全てのバージョンでできるわけではない) などがある。オプション 'shell' は、Vimが +フィルタコマンドを実行するときに使うシェルを指定する ('shelltype' も参照)。フィ +ルタコマンドはコマンド "." で繰り返せる。Vimは ":!" の後のコメント ('"' で始ま +る行) を認識しない。 + *!* *filter* !{motion}{filter} {motion} のテキストを外部プログラム {filter} でフィル タ処理する。 @@ -459,6 +492,8 @@ Vimは空白のみを使う。">><<" によって、インデント内の <Tab> マンドの出力を一時ファイルに保存し、そのファイルをバッ ファに読み込む。フィルタの出力を一時ファイルにリダイレ クトするときはオプション 'shellredir' が使われる。 + Unixでは'shellredir'がオフのとき、可能ならばパイプが使 + われる。 'cpoptions'に'R'フラグが含まれるとき、フィルタ処理され た行のマークは削除されます。|:keepmarks|コマンドを使う と削除されません。例: > @@ -480,18 +515,10 @@ Vimは空白のみを使う。">><<" によって、インデント内の <Tab> {Visual}= 強調表示されたテキストを ={motion} と同様にフィルタ処 理する。 {Vi にはない} -フィルタとは、テキストを標準入力から受け取り、何らかの変更を加え、標準出力に送 -るプログラムのことである。以上のコマンドにより、テキストの一部をフィルタにかけ -ることができる。フィルタの例としては、行をアルファベット順にソートする "sort"、 -Cのプログラムを整形する "indent" (ただし、フィルタ機能を持ったバージョンが必要。 -全てのバージョンでできるわけではない) などがある。オプション 'shell' は、Vimが -フィルタコマンドを実行するときに使うシェルを指定する ('shelltype' も参照)。フィ -ルタコマンドはコマンド "." で繰り返せる。Vimは ":!" の後のコメント ('"' で始ま -る行) を認識しない。 - - *:s* *:su* *:substitute* -:[range]s[ubstitute]/{pattern}/{string}/[&][c][e][g][p][r][i][I] [count] +4.2 置換 *:substitute* + *:s* *:su* +:[range]s[ubstitute]/{pattern}/{string}/[flags] [count] [range] の各行で {pattern} のマッチを {string} に置き 換える。 {pattern}については|pattern|を参照してください。 @@ -505,8 +532,8 @@ Cのプログラムを整形する "indent" (ただし、フィルタ機能を |cmdline-ranges| も参照。 フラグについては |:s_flags| を参照。 -:[range]s[ubstitute] [c][e][g][p][r][i][I] [count] -:[range]&[&][c][e][g][p][r][i][I] [count] *:&* +:[range]s[ubstitute] [flags] [count] +:[range]&[&][flags] [count] *:&* 最後の置換を同じパターンかつ同じ置換文字列で、フラグを つけずに繰り返す。フラグを追加することもできる (|:s_flags|を参照)。 @@ -516,7 +543,7 @@ Cのプログラムを整形する "indent" (ただし、フィルタ機能を 不可欠ではない。しかしスクリプト内では、混乱しないよう に空白を入れておくのはよい考えである。 -:[range]~[&][c][e][g][p][r][i][I] [count] *:~* +:[range]~[&][flags] [count] *:~* 最後の置換を同じ置換文字列で、最後の検索パターン (訳注: "/" で使ったもの) に対して繰り返す。":&r" に似ている。 フラグについては |:s_flags| を参照。 @@ -592,9 +619,17 @@ g& ":%s//~/&" と同義 (全ての行に対し、同じフラグで最後の 'smartcase' は使われない。 {Vi にはない} +[n] マッチの個数を表示し、実際には置換を行わない。フラグ[c]は無視される。 + 'report'が0のときと同じようにマッチが表示される。 + 何個あるか調べるときに便利。|count-items| + [p] 最後に置換を行った行を表示する。 {Vi にはない} +[#] [p]と同様。行番号をつける。 + +[l] [p]と同様だが、|:list|のように表示する。 + [r] 引数のない ":&" か ":s" との連携でのみ有効。":&r" は ":~" と同様に動作 する。検索パターンが空のとき、最後の置換コマンドや ":global" でのパター ンではなく、最後の検索パターンを使用する。最後に検索パターンを使用した @@ -612,9 +647,10 @@ g& ":%s//~/&" と同義 (全ての行に対し、同じフラグで最後の {Vi にはない} NOTE パターンに 'magic' が適用されるかどうかを変更するフラグはないことに注意。 -代わりに違うコマンドが用いられる。これは、パターン解釈を飛ばすことでのみフラグ -を認識できるが、その一方でパターン解釈を飛ばすには 'magic' の適用状態が知られ -ている必要があるためである。 Catch 22! (訳注: ?) +代わりに違うコマンド(訳註: |:snomagic|)が用いられる。これは、パターン解釈を飛 +ばすことでのみフラグを認識できるが、その一方でパターン解釈を飛ばすには 'magic' +の適用状態が知られている必要があるためである。 Catch 22! (訳注: どうにもならな +いという意味) 置換コマンドで {pattern} が空のときは、最後に使われた置換コマンドまたはコマン ド ":global" のパターンが使われる。フラグ [r] を指定すると、最後の置換または検 @@ -633,8 +669,12 @@ Viとの互換性のため、これら2つの例外が許される。 *sub-replace-special* *:s\=* {string}が"\="で始まるときは、それは式として評価されます。 -|sub-replace-expression|を参照してください。そうでなければこれらの文字が -{string}のなかで特別な意味を持ちます。 +|sub-replace-expression|を参照してください。この場合はどんな特殊文字でも使えま +す。 +そうでなければこれらの文字が{string}のなかで特別な意味を持ちます: + +'cpoptions'に'/'が含まれている場合、{string}が"%"に等しいならば前の置換コマン +ドの{string}が使われます。|cpo-/| magic nomagic 作用 ~ & \& マッチしたパターン全体に置き換わる *s/\&* @@ -670,6 +710,7 @@ Viとの互換性のため、これら2つの例外が許される。 :s/\([abc]\)\([efg]\)/\2\1/g "af fa bg" を "fa fa gb" に置換 :s/abcde/abc^Mde/ "abcde" を "abc", "de" (2行) に置換 :s/$/^V^M/ "abcde" を "abcde^M" に置換 + :s/\w\+/\u\0/g "bla bla" を "Bla Bla" に置換 NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。これはVi互換ではないの で変更された。代わりに '\' を使うこと。 @@ -692,6 +733,7 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ < 式で置換する *sub-replace-expression* + *sub-replace-\=* 置換文字列が"\="で始まるとき、続きは式と解釈されます。これは再帰的に機能しませ ん。ある式の中でのsubstitute()では置換文字列に"\="を使うことはできません。 @@ -705,6 +747,9 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ スケープすることで実際の<NL>文字(ファイル中でNULとして扱われる)を扱うことがで きる。 +結果が|List|のときはその要素が改行を区切りとして連結される。よって要素がそれぞ +れ行となる。ただし要素が改行を含んでいる場合は除く。 + マッチしたテキストの全体は "submatch(0)" で参照できる。1番目の () 内でマッチし たテキストは "submatch(1)" で参照できる。以降の () 内でマッチしたテキストも同 様に参照できる。 @@ -715,9 +760,14 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ 例: > :s@\n@\="\r" . expand("$HOME") . "\r"@ -こうすると置換を行った行の下に、環境変数 $HOME の値を含む新しい行が挿入される。 +こうすると置換を行った行の下に、環境変数 $HOME の値を含む新しい行が挿入される。 > + + s/E/\="\<Char-0x20ac>"/g +これは文字'E'をユーロ記号で置換する。詳しくは|<Char->|を参照。 +4.3 検索と置換 *search-replace* + *:pro* *:promptfind* :promptf[ind] [string] 検索ダイアログを表示する。 [string] が与えられると、そ @@ -730,6 +780,8 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ と、それが初期検索文字列になる。 {Vi mのWin32版、Motif版、GTKのGUI版のみ} + +4.4 タブの変換 *change-tabs* *:ret* *:retab* :[range]ret[ab][!] [new_tabstop] 新たに指定されたタブストップ (タブ幅) に基づき、<Tab> @@ -830,7 +882,8 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ *<MiddleMouse>* ["x]<MiddleMouse> カーソルの前に、テキストを [count] 回 [レジスタ x から] 張り付ける。レジスタは、どれかが指定されない限り "* を - 使う。マウスは、オプション 'mouse' がフラグ 'n' か 'a' + 使う。カーソルは挿入したテキストの末尾に置かれる。 + マウスは、オプション 'mouse' がフラグ 'n' か 'a' を含むときのみ使える。 {Vi にはない} もしあなたがスクロールホイールを持っていて意図せずにテ キストを貼り付けてしまうのなら、次のマッピングでマウス @@ -853,6 +906,8 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ タ x から] コピーする。このコマンドは常に行単位 |linewise|の動作をするので、コピーされたブロックを新し い行として挿入するときに使える。 + カーソルは最後に挿入された行の最初の非空白文字の上に置 + かれる。 レジスタには、expression を伴った '=' を使ってもよい。 Expression としての評価は、コマンドの行の最後まで続く。 文字 '|' と '"' をコマンドの末尾と誤認しないようにする @@ -937,12 +992,13 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト 1. 無名レジスタ "" *quote_quote* *quotequote* このレジスタには、コマンド "d", "c", "s", "x" 等で削除されたテキストや、"y" 等 のコピーコマンドでコピーされたテキストが蓄えられる。特定のレジスタが指定されて -いてもいなくても関係ない (例えば "xdd でもこれが使われる)。例外はレジスタ '_' -である。 "_dd は、削除されたテキストをどのレジスタにも蓄えない。このレジスタの -中身は、レジスタを指定しない張り付けコマンド (p や P) で使うことができる。加え -て、このレジスタは '"' という名前で使うことができる。これは、使うときには二重 -引用符 '"' を2 個打ち込むということである。レジスタ "" に対する書き込みはレジ -スタ "0 にも書き込むことになる。 +いてもいなくても関係ない (例えば "xdd でもこれが使われる)。これは無名レジスタ +が最後に使われたレジスタを指しているのに似ている。例外はレジスタ '_'である。 +"_dd は、削除されたテキストをどのレジスタにも蓄えない。このレジスタの中身は、 +レジスタを指定しない張り付けコマンド (p や P) で使うことができる。加えて、この +レジスタは '"' という名前で使うことができる。これは、使うときには二重引用符 +'"' を2 個打ち込むということである。レジスタ "" に対する書き込みはレジスタ "0 +にも書き込むことになる。 {Vi ではレジスタの内容はファイルを変更するときに失われ、'"' もない} 2. 番号付きレジスタ "0 から "9 *quote_number* *quote0* *quote1* @@ -953,11 +1009,12 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト 番号付きレジスタ 1 には、一番最近に削除したり変更したテキストが蓄えられるが、 コマンドに別のレジスタ名を指定したり、削除や変更したテキストが1行以下だったり したときは、これには蓄えられない (そのときは小削除用レジスタが使われる)。例外 -は、以下のコマンドを使ったときである。|%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, -|{|, |}|。このときは必ずレジスタ "1 が使われる (これはVi互換の動作である)。削 -除や変更したテキストが1行以下だったときは、レジスタ "- も使われる。 -削除や変更が行われるたびに、レジスタ 1 の内容はレジスタ 2 に、レジスタ 2 の内 -容はレジスタ 3 に、という風にずれていく。レジスタ 9 の内容は失われる。 +は、以下の移動コマンドと削除コマンドを組み合わせたときである。|%|, |(|, |)|, +|`|, |/|, |?|, |n|, |N|, |{|, |}|。このときは必ずレジスタ "1 が使われる (これ +はVi互換の動作である)。削除や変更したテキストが1行以下だったときは、レジスタ +"- も使われる。削除や変更が行われるたびに、レジスタ 1 の内容はレジスタ 2 に、 +レジスタ 2 の内容はレジスタ 3 に、という風にずれていく。レジスタ 9 の内容は失 +われる。 {Vi では番号付きレジスタの内容はファイルを変更する際に失われる。レジスタ 0 は ない} @@ -970,7 +1027,8 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト これらのレジスタが使われるのは、ユーザに指定されたときのみである。コピーや削除 の際にこれらのレジスタを小文字で指定すると、コピーや削除されたテキストが蓄えら れ、元から入っていたテキストは消える。大文字で指定すると、元から入っていた内容 -の後ろに新しいテキストを付け加える。 +の後ろに新しいテキストを付け加える。'cpoptions'にフラグ'>'が入っていると、新し +いテキストの前に改行が挿入される。 5. 読みとり専用レジスタ ": と ". と "% と "# 読みとり専用レジスタには '%' と '#' と ':' と '.' がある。コマンド "p", "P", @@ -1004,14 +1062,17 @@ expression を使うために使える。この expression レジスタは読み て使用可能である。<CR> を打ち込んでコマンドライン入力を終了させると、 expression の結果が計算される。 <Esc> を打ち込んで終了させると、 expression は 捨てられる。 expression が入力されないときは、(コマンド "/" と同様) 前回の -expression が使われる。レジスタ "= が "p" で使われると、文字列は <NL> 文字 (訳 -注: New Line --改行) の所で分割される。文字列が <NL> で終わっていたら、これは -行単位のレジスタと見なされる。 {Vi にはない} +expression が使われる。expression を評価した結果は文字列でなければならない。評 +価した結果が数値なら、文字列に変換される。リスト、辞書、FuncRefはエラーメッセー +ジが出る(string()を使って変換する)。レジスタ "= が "p" で使われると、文字列は +<NL> 文字 (訳注: New Line --改行) の所で分割される。文字列が <NL> で終わってい +たら、これは行単位のレジスタと見なされる。 {Vi にはない} 7. 選択範囲レジスタ "* と "+ これらのレジスタは、GUIで、選択されたテキストを蓄えたり取り出すために使われる。 |quotestar| と |quoteplus| を参照。クリップボードが利用できないときは、無名レ -ジスタが代わりに使われる。 {Vi にはない} +ジスタが代わりに使われる。 Unixでは|+xterm_clipboard|が有効になっているときだ +けクリップボードを利用できる。{Vi にはない} Note "* と "+ に区別があるのは X11 システムのみであることに注意。違いについて は |x11-selection| を参照。MS-Windowsでは "* と "+ は実際には同義で、クリップ @@ -1083,11 +1144,19 @@ Note: "~ レジスタはプレインテキストをVimにドロップしたと 有効} *gq* -gq{motion} {motion} の行を整形する。オプション 'textwidth' - は整形された各行の長さを制御する (後述)。'textwidth' - が 0 なら、整形された行の長さは画面の幅となる (ただし、 - 最大で79)。 {Vi にはない} +gq{motion} {motion} の行を整形する。整形は3種類の方法のうちどれか + で行われる。 + 1. 'formatexpr'がから出なければそのexpressionが評価さ + れる。これはバッファごとに異なってもよい。 + 2. 'formatprg'がから出なければ外部プログラムが使われる。 + 3. それ以外の場合は内部整形ルーチンが使われる。 + + 3番目の場合は、オプション 'textwidth'が整形された各行 + の長さを制御する (後述)。'textwidth'が 0 なら、整形さ + れた行の長さは画面の幅となる (ただし、最大で79)。 'formatoptions' は、整形の仕方を制御する |fo-table|。 + カーソルは最後に整形された行の最初の非空白文字の上に置 + かれる。 NOTE: 以前はコマンド "Q" でこの機能を行っていた。やは り整形に "Q" を使いたいならば、次のマッピングを使うこ と。 > @@ -1102,8 +1171,15 @@ gqq 現在行を整形する。 {Vi にはない} *gw* gw{motion} {motion}で動いた範囲の行を整形する。|gq|に似ているが - カーソルは元の位置に戻る。'formatprg'は使われない。 - {Vi にはない} + カーソルは元の位置に戻る。'formatprg'と'formatexpr'は + 使われない。{Vi にはない} + +gwgw *gwgw* *gww* +gww "gw"と同様にして現在行を整形する。 {not in Vi} + + *v_gw* +{Visual}gw 選択されたテキストを"gw"と同様にして整形する。 + ({Visual}については|Visual-mode|を参照). {not in Vi} 例: 現在の段落を整形するには、次のようにする。 *gqap* > gqap @@ -1128,9 +1204,10 @@ gw{motion} {motion}で動いた範囲の行を整形する。|gq|に似てい オプション 'joinspaces' は、行が連結されるときに使われる。 -オプション 'formatprg' には、Vimがテキストの整形に使う外部プログラムの名前を設 -定する。外部プログラムによる整形処理には、'textwidth' や他のオプションは何の影 -響も与えない。 +オプション'formatexpr'でテキストの整形に使うexpressionを設定したり、 +'formatprg' で外部プログラムの名前を設定することができる。 +外部プログラムによる整形処理には、'textwidth' や他のオプションは何の影響も与え +ない。 *right-justify* テキストを右揃えするコマンドは、Vimには存在しない。"par" 等の外部コマンド (例: @@ -1267,10 +1344,11 @@ w 行末に空白が付いているとき、段落が次行に続いていると a 段落を自動整形する。テキストが挿入されたり削除されるたび、段落は再整形 される。|auto-format| を参照。 'c'フラグも設定されているときはコメント挿入時のみ機能する。 -n テキストの整形時、番号付きリストを認識する。数字の後のテキストのインデ - ントが次の行に使われる。数字の後に '.', ':', ')', ']' や '}' が付いて - もよい。 オプション 'autoindent' がオンでなければならないことに注意。 - "2"と一緒には機能しません。例: > +n テキストの整形時、番号付きリストを認識する。これは実際には + 'formatlistpat'を使う。それゆえ、どんな種類のリストでも処理できる。 + 数字の後のテキストのインデントが次の行に使われる。数字の後に '.', ':', + ')', ']' や '}' が付いてもよい。 オプション 'autoindent' がオンでなけ + ればならないことに注意。"2"と一緒には機能しません。例: > 1. 一つ目の項目 折り返し 2. 二つ目の項目 @@ -1305,8 +1383,9 @@ B 行の連結時に、マルチバイト文字同士の間に空白を挿入し "c" コメントを自動整形するが、テキストにはしない (C言語コードに適している) "tc" テキストとコメントを自動整形する -NOTE 'textwidth' が 0 のとき、Vimはいかなる整形も行わないので注意 ('comments' -によるコメント開始文字列の挿入はする)。 +NOTE 'textwidth' が 0 のとき、Vimはいかなる自動整形も行わないので注意 +('comments'によるコメント開始文字列の挿入はする)。例外はフラグ'a'が入っている +場合である。|auto-format| NOTE 'paste' がオンのとき、Vimは全ての整形処理を行わないので注意。 @@ -1359,6 +1438,9 @@ autocommand と連携して、クールに振舞うはずである。 - コメントだけを自動整形するには'c'フラグを追加する。ソースコードの編集向き。 +- 行の長さを望みどおりにするには'textwidth'を設定する。これが0ならば79になる。 + 画面の幅が79桁より小さい場合は画面幅になる。 + 次にいくつかの警告: - テキストの部分部分が段落内で適切に分割されていないとき、そのテキスト内で変更 @@ -1375,5 +1457,68 @@ autocommand と連携して、クールに振舞うはずである。 - 長い段落や、複雑なインデントの段落を整形するのには、時間がかかることがある。 +============================================================================== +7. テキストのソート *sorting* + +Vimはソート関数とソートコマンドを備えている。ソート関数については|sort()|を参 +照。 + + *:sor* *:sort* +:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] + [range]の行をソートする。範囲が指定されない場合は全行 + をソートする。 + + [!]をつけると順序が逆になる。 + + [i]をつけると大文字・小文字を区別しない。 + + [n]をつけると行の({pattern}のマッチの後ろまたは内側 + の)最初の10進数の数字でソートする。 + + [n]をつけると行の({pattern}のマッチの後ろまたは内側 + の)最初の16進数の数字でソートする。"0x"と"0X"は無視さ + れる。 + + [o]をつけると行の({pattern}のマッチの後ろまたは内側 + の)最初の10進数の数字でソートする。 + + [u]をつけると連続する同一行の最初の行だけを残す。 + ([i]がつくと大文字・小文字を無視する) + このフラグがつかない場合、連続する同一行はそのままの順 + 序で残される。 + Note: 行頭に行末の空白があると異なる行とみなされる。 + + /pattern/が指定され、フラグ[r]がない場合は{pattern}に + マッチするテキストはスキップされる。これによって、その + マッチの後に来るテキストでソートできる。 + スラッシュの代わりにどんなnon-letterでも使うことができ + る。 + 例えば、カンマで区切られた2番目のフィールドでソートす + るには: > + :sort /[^,]*,/ +< 画面上の10桁目でソートするには(そのためタブとスペース + は同一視される): > + :sort /.*\%10v/ +< 行中の最初の数字でソートするには: > + :sort /.*\ze\d/ + +< [r]がつくと、前述のように{pattern}をスキップするのでな + く、{pattern}にマッチする部分でソートする。 + 例えば、各行の最初の3文字だけでソートするには: > + :sort /\a\a\a/ r + +< {pattern}が使われると{pattern}を含まない行は現在の順序 + のままになる。逆順でソートすると、それらはソートされた + 行の後で逆順になる。逆順でなければ、ソートされた行の前 + でもとの順序のまま置かれる。 + +Note: ":global"といっしょに":sort"を使ってもマッチする行をソートすることにはな +らない。これはまったく無意味である。 + +ソートの詳細は使っているライブラリ関数による。ソートが「安定」であるとか現在の +ロケールに従うという保証はない。それを調べるには実行してみるしかない。 + +ソートは中断することができる。しかし中断するのが遅いと行が重複してしまうかもし +れない。これも使っているシステムのライブラリ関数による。 vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/mbyte.jax b/ja/mbyte.jax index 4ab330a6f..f0945fca9 100644 --- a/ja/mbyte.jax +++ b/ja/mbyte.jax @@ -1,9 +1,10 @@ COMMENT: マルチバイト文字(旧:multibyte.txt) -STATUS: finished 6.3 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*mbyte.txt* For Vim version 6.3. Last change: 2004 Jun 07 +*mbyte.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -286,6 +287,29 @@ Note: すべてのエンコーディングは0から128までの文字がASCII 1 koi8-u ウクライナ語 1 macroman MacRoman (Macintoshのエンコーディング) 1 8bit-{name} 8ビットエンコーディングのどれか (Vim特有の名前) +1 cp437 iso-8859-1に類似 +1 cp737 iso-8859-7に類似 +1 cp775 バルト語 +1 cp850 iso-8859-4に類似 +1 cp852 iso-8859-1に類似 +1 cp855 iso-8859-2に類似 +1 cp857 iso-8859-5に類似 +1 cp860 iso-8859-9に類似 +1 cp861 iso-8859-1に類似 +1 cp862 iso-8859-1に類似 +1 cp863 iso-8859-8に類似 +1 cp865 iso-8859-1に類似 +1 cp866 iso-8859-5に類似 +1 cp869 iso-8859-7に類似 +1 cp874 タイ語 +1 cp1250 チェコ語、ポーランド語など +1 cp1251 キリル語 +1 cp1253 ギリシャ語 +1 cp1254 トルコ語 +1 cp1255 ヘブライ語 +1 cp1256 アラビア語 +1 cp1257 バルト語 +1 cp1258 ベトナム語 1 cp{number} MS-Windows: インストールされているシングルバイトのコードページ 2 cp932 日本語 (Windows only) 2 euc-jp 日本語 (Unix only) @@ -329,6 +353,7 @@ u unicode ucs-2と同じ u ucs2be ucs-2と同じ (ビッグエンディアン) u ucs-2be ucs-2と同じ (ビッグエンディアン) u ucs-4be ucs-4と同じ (ビッグエンディアン) + default 'encoding'のデフォルト値を意味する。環境に依存する。 UCSコードにはバイト順の問題がある。これは扱いが難しいので、可能なときにはいつ でもUTF-8を使用した方が良い。指定がなければビッグエンディアンを使用する(最上位 @@ -456,6 +481,11 @@ Vimはいろいろな場面で自動的にエンコーディングを変換す バッファよりも、はるかに大きなバッファを要求するため)。 その場合は他のiconv()実装を試してください。 + *iconv-dynamic* +MS-Windowsでは|+iconv/dyn|機能つきでVimをコンパイルすることができる。そうする +とVimは"iconv.dll"と"libiconv.dll"を検索するようになる。どちらも見つからない場 +合でもVimは動作するが、変換ができなくなる。 + ============================================================================== 4. 端末の使用 (Using a terminal) *mbyte-terminal* @@ -731,6 +761,8 @@ XIMはXの国際化入力機構です。Xlibユニット型と|IM-server| (Input 中国語用には、"xcin"というよくできたXIMサーバがあり、簡体中国語と繁体中国語 の両方を入力できる。適切な入力テーブルを作成すれば、他のロケールも受け付け る。Xcinはここから入手できる: http://xcin.linux.org.tw/ + 他にはscim: http://scim.freedesktop.org/ と fcitx: + http://www.fcitx.org/ がある。 - 変換サーバ (Conversion Server) *conversion-server* @@ -937,7 +969,7 @@ IMEやXIMがオンのときのカーソルの色 *CursorIM* これはXIMでも同じように機能する。 強調グループのCursorIMを設定して、IMEの状態がオンのときの色を選べる。 - たとえば、次の行を_gvimrcに追加する: > + たとえば、次の行を|gvimrc|に追加する: > if has('multi_byte_ime') highlight Cursor guifg=NONE guibg=Green @@ -984,7 +1016,7 @@ IMEやXIMがオンのときのカーソルの色 *CursorIM* :highlight Cursor guifg=NONE guibg=Green :highlight lCursor guifg=NONE guibg=Cyan < - *keymap-file-format* *:loadk* *:loadkeymap* *E105* + *keymap-file-format* *:loadk* *:loadkeymap* *E105* *E791* キーマップファイルはこのような構成になっている: > " Maintainer: name <email@address> @@ -1020,7 +1052,7 @@ IMEやXIMがオンのときのカーソルの色 *CursorIM* 一番目の項目に複数の文字を指定することができる。これはデッドキーのような作用を する。例: > - 'a á + 'a ?? クォートの入力があったとき、次に"a"が入力されるかどうかわからないので、Vimは次 の文字が入力されるまで待機する。シングルクォートを入力できるようにするには、次 の行も加える: > @@ -1029,6 +1061,7 @@ IMEやXIMがオンのときのカーソルの色 *CursorIM* 字としては扱われない。 訳注: > シングルクォートを入力できるようにするには... 訳注: 'timeout'も参照。 +"accents"キーマップはこれを使用する。 *keymap-accents* 二番目の項目に複数の文字を指定することもできるが、一般的ではない。しか し、文字を指定するのにいろいろな方法を使用して構わない: > @@ -1062,129 +1095,129 @@ IMEやXIMがオンのときのカーソルの色 *CursorIM* glyph encoding keymap ~ Char utf-8 cp1255 hebrew hebrewp name ~ -א 0x5d0 0xe0 t a 'alef -ב 0x5d1 0xe1 c b bet -ג 0x5d2 0xe2 d g gimel -ד 0x5d3 0xe3 s d dalet -ה 0x5d4 0xe4 v h he -ו 0x5d5 0xe5 u v vav -ז 0x5d6 0xe6 z z zayin -ח 0x5d7 0xe7 j j het -ט 0x5d8 0xe8 y T tet -י 0x5d9 0xe9 h y yod -ך 0x5da 0xea l K kaf sofit -כ 0x5db 0xeb f k kaf -ל 0x5dc 0xec k l lamed -ם 0x5dd 0xed o M mem sofit -מ 0x5de 0xee n m mem -ן 0x5df 0xef i N nun sofit -נ 0x5e0 0xf0 b n nun -ס 0x5e1 0xf1 x s samech -ע 0x5e2 0xf2 g u `ayin -ף 0x5e3 0xf3 ; P pe sofit -פ 0x5e4 0xf4 p p pe -ץ 0x5e5 0xf5 . X tsadi sofit -צ 0x5e6 0xf6 m x tsadi -ק 0x5e7 0xf7 e q qof -ר 0x5e8 0xf8 r r resh -ש 0x5e9 0xf9 a w shin -ת 0x5ea 0xfa , t tav +?? 0x5d0 0xe0 t a 'alef +?? 0x5d1 0xe1 c b bet +?? 0x5d2 0xe2 d g gimel +?? 0x5d3 0xe3 s d dalet +?? 0x5d4 0xe4 v h he +?? 0x5d5 0xe5 u v vav +?? 0x5d6 0xe6 z z zayin +?? 0x5d7 0xe7 j j het +?? 0x5d8 0xe8 y T tet +?? 0x5d9 0xe9 h y yod +?? 0x5da 0xea l K kaf sofit +?? 0x5db 0xeb f k kaf +?? 0x5dc 0xec k l lamed +?? 0x5dd 0xed o M mem sofit +?? 0x5de 0xee n m mem +?? 0x5df 0xef i N nun sofit +?? 0x5e0 0xf0 b n nun +?? 0x5e1 0xf1 x s samech +?? 0x5e2 0xf2 g u `ayin +?? 0x5e3 0xf3 ; P pe sofit +?? 0x5e4 0xf4 p p pe +?? 0x5e5 0xf5 . X tsadi sofit +?? 0x5e6 0xf6 m x tsadi +?? 0x5e7 0xf7 e q qof +?? 0x5e8 0xf8 r r resh +?? 0x5e9 0xf9 a w shin +?? 0x5ea 0xfa , t tav Vowel marks and special punctuation: -הְ 0x5b0 0xc0 A: A: sheva -הֱ 0x5b1 0xc1 HE HE hataf segol -הֲ 0x5b2 0xc2 HA HA hataf patah -הֳ 0x5b3 0xc3 HO HO hataf qamats -הִ 0x5b4 0xc4 I I hiriq -הֵ 0x5b5 0xc5 AY AY tsere -הֶ 0x5b6 0xc6 E E segol -הַ 0x5b7 0xc7 AA AA patah -הָ 0x5b8 0xc8 AO AO qamats -הֹ 0x5b9 0xc9 O O holam -הֻ 0x5bb 0xcb U U qubuts -כּ 0x5bc 0xcc D D dagesh -הֽ 0x5bd 0xcd ]T ]T meteg -ה־ 0x5be 0xce ]Q ]Q maqaf -בֿ 0x5bf 0xcf ]R ]R rafe -ב׀ 0x5c0 0xd0 ]p ]p paseq -שׁ 0x5c1 0xd1 SR SR shin-dot -שׂ 0x5c2 0xd2 SL SL sin-dot -׃ 0x5c3 0xd3 ]P ]P sof-pasuq -װ 0x5f0 0xd4 VV VV double-vav -ױ 0x5f1 0xd5 VY VY vav-yod -ײ 0x5f2 0xd6 YY YY yod-yod +???? 0x5b0 0xc0 A: A: sheva +???? 0x5b1 0xc1 HE HE hataf segol +???? 0x5b2 0xc2 HA HA hataf patah +???? 0x5b3 0xc3 HO HO hataf qamats +???? 0x5b4 0xc4 I I hiriq +???? 0x5b5 0xc5 AY AY tsere +???? 0x5b6 0xc6 E E segol +???? 0x5b7 0xc7 AA AA patah +???? 0x5b8 0xc8 AO AO qamats +???? 0x5b9 0xc9 O O holam +???? 0x5bb 0xcb U U qubuts +???? 0x5bc 0xcc D D dagesh +???? 0x5bd 0xcd ]T ]T meteg +???? 0x5be 0xce ]Q ]Q maqaf +???? 0x5bf 0xcf ]R ]R rafe +???? 0x5c0 0xd0 ]p ]p paseq +???? 0x5c1 0xd1 SR SR shin-dot +???? 0x5c2 0xd2 SL SL sin-dot +?? 0x5c3 0xd3 ]P ]P sof-pasuq +?? 0x5f0 0xd4 VV VV double-vav +?? 0x5f1 0xd5 VY VY vav-yod +?? 0x5f2 0xd6 YY YY yod-yod The following are only available in utf-8 Cantillation marks: glyph Char utf-8 hebrew name -ב֑ 0x591 C: etnahta -ב֒ 0x592 Cs segol -ב֓ 0x593 CS shalshelet -ב֔ 0x594 Cz zaqef qatan -ב֕ 0x595 CZ zaqef gadol -ב֖ 0x596 Ct tipeha -ב֗ 0x597 Cr revia -ב֘ 0x598 Cq zarqa -ב֙ 0x599 Cp pashta -ב֚ 0x59a C! yetiv -ב֛ 0x59b Cv tevir -ב֜ 0x59c Cg geresh -ב֝ 0x59d C* geresh qadim -ב֞ 0x59e CG gershayim -ב֟ 0x59f CP qarnei-parah -ב֪ 0x5aa Cy yerach-ben-yomo -ב֫ 0x5ab Co ole -ב֬ 0x5ac Ci iluy -ב֭ 0x5ad Cd dehi -ב֮ 0x5ae Cn zinor -ב֯ 0x5af CC masora circle +???? 0x591 C: etnahta +???? 0x592 Cs segol +???? 0x593 CS shalshelet +???? 0x594 Cz zaqef qatan +???? 0x595 CZ zaqef gadol +???? 0x596 Ct tipeha +???? 0x597 Cr revia +???? 0x598 Cq zarqa +???? 0x599 Cp pashta +???? 0x59a C! yetiv +???? 0x59b Cv tevir +???? 0x59c Cg geresh +???? 0x59d C* geresh qadim +???? 0x59e CG gershayim +???? 0x59f CP qarnei-parah +???? 0x5aa Cy yerach-ben-yomo +???? 0x5ab Co ole +???? 0x5ac Ci iluy +???? 0x5ad Cd dehi +???? 0x5ae Cn zinor +???? 0x5af CC masora circle Combining forms: -ﬠ 0xfb20 X` Alternative `ayin -ﬡ 0xfb21 X' Alternative 'alef -ﬢ 0xfb22 X-d Alternative dalet -ﬣ 0xfb23 X-h Alternative he -ﬤ 0xfb24 X-k Alternative kaf -ﬥ 0xfb25 X-l Alternative lamed -ﬦ 0xfb26 X-m Alternative mem-sofit -ﬧ 0xfb27 X-r Alternative resh -ﬨ 0xfb28 X-t Alternative tav -﬩ 0xfb29 X-+ Alternative plus -שׁ 0xfb2a XW shin+shin-dot -שׂ 0xfb2b Xw shin+sin-dot -שּׁ 0xfb2c X..W shin+shin-dot+dagesh -שּׂ 0xfb2d X..w shin+sin-dot+dagesh -אַ 0xfb2e XA alef+patah -אָ 0xfb2f XO alef+qamats -אּ 0xfb30 XI alef+hiriq (mapiq) -בּ 0xfb31 X.b bet+dagesh -גּ 0xfb32 X.g gimel+dagesh -דּ 0xfb33 X.d dalet+dagesh -הּ 0xfb34 X.h he+dagesh -וּ 0xfb35 Xu vav+dagesh -זּ 0xfb36 X.z zayin+dagesh -טּ 0xfb38 X.T tet+dagesh -יּ 0xfb39 X.y yud+dagesh -ךּ 0xfb3a X.K kaf sofit+dagesh -כּ 0xfb3b X.k kaf+dagesh -לּ 0xfb3c X.l lamed+dagesh -מּ 0xfb3e X.m mem+dagesh -נּ 0xfb40 X.n nun+dagesh -סּ 0xfb41 X.s samech+dagesh -ףּ 0xfb43 X.P pe sofit+dagesh -פּ 0xfb44 X.p pe+dagesh -צּ 0xfb46 X.x tsadi+dagesh -קּ 0xfb47 X.q qof+dagesh -רּ 0xfb48 X.r resh+dagesh -שּ 0xfb49 X.w shin+dagesh -תּ 0xfb4a X.t tav+dagesh -וֹ 0xfb4b Xo vav+holam -בֿ 0xfb4c XRb bet+rafe -כֿ 0xfb4d XRk kaf+rafe -פֿ 0xfb4e XRp pe+rafe -ﭏ 0xfb4f Xal alef-lamed +??? 0xfb20 X` Alternative `ayin +??? 0xfb21 X' Alternative 'alef +??? 0xfb22 X-d Alternative dalet +??? 0xfb23 X-h Alternative he +??? 0xfb24 X-k Alternative kaf +??? 0xfb25 X-l Alternative lamed +??? 0xfb26 X-m Alternative mem-sofit +??? 0xfb27 X-r Alternative resh +??? 0xfb28 X-t Alternative tav +??? 0xfb29 X-+ Alternative plus +??? 0xfb2a XW shin+shin-dot +??? 0xfb2b Xw shin+sin-dot +??? 0xfb2c X..W shin+shin-dot+dagesh +??? 0xfb2d X..w shin+sin-dot+dagesh +??? 0xfb2e XA alef+patah +??? 0xfb2f XO alef+qamats +??? 0xfb30 XI alef+hiriq (mapiq) +??? 0xfb31 X.b bet+dagesh +??? 0xfb32 X.g gimel+dagesh +??? 0xfb33 X.d dalet+dagesh +??? 0xfb34 X.h he+dagesh +??? 0xfb35 Xu vav+dagesh +??? 0xfb36 X.z zayin+dagesh +??? 0xfb38 X.T tet+dagesh +??? 0xfb39 X.y yud+dagesh +??? 0xfb3a X.K kaf sofit+dagesh +??? 0xfb3b X.k kaf+dagesh +??? 0xfb3c X.l lamed+dagesh +??? 0xfb3e X.m mem+dagesh +??? 0xfb40 X.n nun+dagesh +??? 0xfb41 X.s samech+dagesh +??? 0xfb43 X.P pe sofit+dagesh +??? 0xfb44 X.p pe+dagesh +??? 0xfb46 X.x tsadi+dagesh +??? 0xfb47 X.q qof+dagesh +??? 0xfb48 X.r resh+dagesh +??? 0xfb49 X.w shin+dagesh +??? 0xfb4a X.t tav+dagesh +??? 0xfb4b Xo vav+holam +??? 0xfb4c XRb bet+rafe +??? 0xfb4d XRk kaf+rafe +??? 0xfb4e XRp pe+rafe +??? 0xfb4f Xal alef-lamed ============================================================================== 10. UTF-8を使う (Using UTF-8) *mbyte-utf8* *UTF-8* *utf-8* *utf8* @@ -1208,7 +1241,11 @@ Vimは幅広くUTF-8をサポートしており、それは以下の環境で機 'guifont'だけを設定している場合は、全角文字は通常の幅で描画され、足りない幅が 空白で埋められる。Note:オプション'guifontset'はGTK+ 2 GUIでは使用しない。 -2文字までの結合文字を扱うことができる。結合文字は先行文字に重ねて描画される。 + *mbyte-combining* *mbyte-composing* +合成文字や結合文字を使うと、先行文字の意味を変えることができる。結合文字は先行 +文字に重ねて描画される。 +デフォルトで2文字までの結合文字を扱うことができる。この値はオプション +'maxcombine'で変更できる。 テキストの編集中は、合成文字は先行文字の一部として扱われる。例えば、初期設定で は、"x"は文字を削除するときに、連なる合成文字をいっぺんに削除する。オプション 'delcombine'がオンのときには、'x'は1回に1文字の結合文字を削除して、最後に基底 @@ -1349,7 +1386,7 @@ options.txtの説明を参照。 マルチバイト機能は、特に以下の方々の貢献による: Chi-Deok Hwang <hwang@mizi.co.kr> - Nam SungHyun <namsh@lge.com> + Nam SungHyun <namsh@kldp.org> K.Nagano <nagano@atese.advantest.co.jp> Taro Muraoka <koron@tka.att.ne.jp> Yasuhiro Matsumoto <mattn@mail.goo.ne.jp> From 8247fafde6fa64d6d910a183948b35255b177c96 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 9 Sep 2006 11:20:47 +0000 Subject: [PATCH 047/783] fix: update cmdline to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@47 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/cmdline.txt | 86 +++++++++++++++++++++++++++++++++++-------- ja/cmdline.jax | 99 +++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 149 insertions(+), 36 deletions(-) diff --git a/en/cmdline.txt b/en/cmdline.txt index 077b529f4..414ef429a 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 6.3. Last change: 2004 Mar 31 +*cmdline.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -17,8 +17,9 @@ Basic command line editing is explained in chapter 20 of the user manual 2. Command-line completion |cmdline-completion| 3. Ex command-lines |cmdline-lines| 4. Ex command-line ranges |cmdline-ranges| -5. Ex special characters |cmdline-special| -6. Command-line window |cmdline-window| +5. Ex command-line flags |ex-flags| +6. Ex special characters |cmdline-special| +7. Command-line window |cmdline-window| ============================================================================== 1. Command-line editing *cmdline-editing* @@ -45,12 +46,13 @@ thus you cannot edit beyond that. *cmdline-history* *history* The command-lines that you enter are remembered in a history table. You can -recall them with the up and down cursor keys. There are actually four +recall them with the up and down cursor keys. There are actually five history tables: - one for ':' commands - one for search strings - one for expressions - one for input lines, typed for the |input()| function. +- one for debug mode commands These are completely separate. Each history can only be accessed when entering the same type of line. Use the 'history' option to set the number of lines that are remembered @@ -151,7 +153,14 @@ CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>* *c_CTRL-R_=* '=' the expression register: you are prompted to enter an expression (see |expression|) + (doesn't work at the expression prompt; some + things such as changing the buffer or current + window are not allowed to avoid side effects) See |registers| about registers. {not in Vi} + Implementation detail: When using the |expression| register + and invoking setcmdpos(), this sets the position before + inserting the resulting string. Use CTRL-R CTRL-R to set the + position afterwards. CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>* CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>* @@ -163,6 +172,11 @@ CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>* 'path' as in |gf| CTRL-W the Word under the cursor CTRL-A the WORD under the cursor; see |WORD| + + When 'incsearch' is set the cursor position at the end of the + currently displayed match is used. With CTRL-W the part of + the word that was already typed is not inserted again. + {not in Vi} CTRL-F and CTRL-P: {only when +file_in_path feature is included} @@ -183,10 +197,13 @@ CTRL-\ e {expr} *c_CTRL-\_e* to finish it. It's most useful in mappings though. See |expression|. See |c_CTRL-R_=| for inserting the result of an expression. - Useful functions are |getcmdline()| and |getcmdpos()|. + Useful functions are |getcmdtype()|, |getcmdline()| and + |getcmdpos()|. The cursor position is unchanged, except when the cursor was at the end of the line, then it stays at the end. |setcmdpos()| can be used to set the cursor position. + The |sandbox| is used for evaluating the expression to avoid + nasty side effects. Example: > :cmap <F7> <C-\>eAppendSome()<CR> :func AppendSome() @@ -195,7 +212,9 @@ CTRL-\ e {expr} *c_CTRL-\_e* :call setcmdpos(strlen(cmd)) :return cmd :endfunc -< +< This doesn't work recursively, thus not when already editing + an expression. + *c_CTRL-Y* CTRL-Y When there is a modeless selection, copy the selection into the clipboard. |modeless-selection| @@ -305,6 +324,7 @@ terminals) s[earch] or / search string history e[xpr] or = expression register history i[nput] or @ input line history + d[ebug] or > debug command history a[ll] all of the above {not in Vi} @@ -337,6 +357,7 @@ word before the cursor. This is available for: - File names: Only after a command that accepts a file name or a setting for an option that can be set to a file name. This is called file name completion. +- Shell command names: After ":!cmd", ":r !cmd" and ":w !cmd". $PATH is used. - Options: Only after the ":set" command. - Mappings: Only after a ":map" or similar command. - Variable and function names: Only after a ":if", ":call" or similar command. @@ -351,6 +372,8 @@ CTRL-D List names that match the pattern in front of the cursor. When showing file names, directories are highlighted (see 'highlight' option). Names where 'suffixes' matches are moved to the end. + The 'wildoptions' option can be set to "tagfile" to list the + file of matching tags. *c_CTRL-I* *c_wildchar* *c_<Tab>* 'wildchar' option A match is done on the pattern in front of the cursor. The @@ -379,6 +402,9 @@ CTRL-L A match is done on the pattern in front of the cursor. If If there are multiple matches the longest common part is inserted in place of the pattern. If the result is shorter than the pattern, no completion is done. + When 'incsearch' is set, entering a search pattern for "/" or + "?" and the current match is displayed then CTRL-L will add + one character from the end of the current match. The 'wildchar' option defaults to <Tab> (CTRL-E when in Vi compatible mode; in a previous version <Esc> was used). In the pattern standard wildcards '*' and @@ -460,6 +486,7 @@ followed by another command: :global :help :helpfind + :lcscope :make :normal :perl @@ -547,7 +574,7 @@ argument for the command, which has a different meaning. For example: "name" ============================================================================== -4. Ex command-line ranges *cmdline-ranges* *[range]* *E16* *E493* +4. Ex command-line ranges *cmdline-ranges* *[range]* *E16* Some Ex commands accept a line range in front of them. This is noted as [range]. It consists of one or more line specifiers, separated with ',' or @@ -633,11 +660,15 @@ When folds are active the line numbers are rounded off to include the whole closed fold. See |fold-behavior|. -Reverse Range +Reverse Range *E493* A range should have the lower line number first. If this is not the case, Vim -will ask you if it should swap the line numbers. This is not done within the -global command ":g". +will ask you if it should swap the line numbers. + Backwards range given, OK to swap ~ +This is not done within the global command ":g". + +You can use ":silent" before a command to avoid the question, the range will +always be swapped then. Count and Range *N:* @@ -658,7 +689,26 @@ Visual Mode and Range *v_:* lines. ============================================================================== -5. Ex special characters *cmdline-special* +5. Ex command-line flags *ex-flags* + +These flags are supported by a selection of Ex commands. They print the line +that the cursor ends up after executing the command: + + l output like for |:list| + # add line number + p output like for |:print| + +The flags can be combined, thus "l#" uses both a line number and |:list| style +output. + +============================================================================== +6. Ex special characters *cmdline-special* + +Note: These are special characters in the executed command line. If you want +to insert special things while typing you can use the CTRL-R command. For +example, "%" stands for the current file name, while CTRL-R % inserts the +current file name right away. See |c_CTRL-R|. + In Ex commands, at places where a file name can be used, the following characters have a special meaning. These can also be used in the expression @@ -699,12 +749,13 @@ Note: these are typed literally, they are not special keys! <afile> when executing autocommands, is replaced with the file name for a file read or write <abuf> when executing autocommands, is replaced with the currently - effective buffer number (for ":r file" it is the current - buffer, the file being read is not in a buffer). + effective buffer number (for ":r file" and ":so file" it is + the current buffer, the file being read/sourced is not in a + buffer). <amatch> when executing autocommands, is replaced with the match for - which this autocommand was executed. It differs form + which this autocommand was executed. It differs from <afile> only when the file name isn't used to match with - (for FileType and Syntax events). + (for FileType, Syntax and SpellFileMissing events). <sfile> when executing a ":source" command, is replaced with the file name of the sourced file; when executing a function, is replaced with @@ -927,6 +978,11 @@ that there will be an extra screen redraw. The buffer used for the command-line window is deleted. Any changes to lines other than the one that is executed with <CR> are lost. +If you would like to execute the command under the cursor and then have the +command-line window open again, you may find this mapping useful: > + + :map <F5> <CR>q: + VARIOUS diff --git a/ja/cmdline.jax b/ja/cmdline.jax index e20f310a9..28489d840 100644 --- a/ja/cmdline.jax +++ b/ja/cmdline.jax @@ -1,10 +1,11 @@ COMMENT: Ex、検索等のコマンド入力エリアでの操作 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*cmdline.txt* For Vim version 6.3. Last change: 2004 Mar 31 +*cmdline.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -22,8 +23,9 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> 2. コマンドラインの補完 |cmdline-completion| 3. Exコマンドライン |cmdline-lines| 4. Exコマンドラインの範囲 |cmdline-ranges| -5. Exコマンド用の特別な文字 |cmdline-special| -6. コマンドラインウィンドウ |cmdline-window| +5. Exコマンドラインのフラグ |ex-flags| +6. Exコマンド用の特別な文字 |cmdline-special| +7. コマンドラインウィンドウ |cmdline-window| ============================================================================== 1. コマンドラインの編集 *cmdline-editing* @@ -55,6 +57,7 @@ Note キーボードに有効なカーソルキーまたは他の特殊なキー - 検索文字列用 - 式 (expression) 用 - インプット行 (関数 |input()| に対して入力されたテキスト) 用 +- デバッグモードコマンド用 これらは全く別のものである。それぞれの履歴は同種の入力をしたときだけ使用できる。 オプション 'history' で保存されるコマンド数を設定できる (既定値: 20)。 NOTE: @@ -127,7 +130,7 @@ CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>* 番号/名前付きレジスタの内容を挿入する。CTRL-R を打ち込んで次 の文字を打ち込むまでの間、レジスタ名の入力待ちであることを示す ため '"' が表示される。 - テキストは打ち込まれた通りに挿入され、マッピングや略語展開は無 + テキストは打ち込まれた通りに挿入され、マッピングや短縮入力は無 効である。'wildchar' によるコマンドライン補完も行われない。 またコマンドラインを終了する文字 (<Esc>, <CR>, <NL>, <C-C>) も 文字通り挿入される。<BS> や CTRL-W はコマンドラインを終了でき @@ -147,7 +150,13 @@ CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>* *c_CTRL-R_=* '=' Expression レジスタ: Expression を入力するよう 要求される (|expression| を参照) + (Expressionプロンプトでは機能しない。バッファ + 変更やカレントウィンドウ変更などは副作用を避け + るため許可されていない) レジスタに関しては |registers| を参照。 {Vi にはない} + 実装上の詳細: |expression|レジスタを使っているときに + setcmdpos()を呼ぶと結果文字列を挿入する前の位置をセットする。 + 挿入後の位置をセットするにはCTRL-R CTRL-Rを使うこと。 CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>* CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>* @@ -159,6 +168,13 @@ CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>* ソル下のファイル名 CTRL-W カーソル下の word CTRL-A カーソル下の WORD; |WORD| を参照 + + 'incsearch'がセットされてるとき、現在表示されているマッチの末 + 尾のカーソル位置が使われる。CTRL-Wではwordの一部がすでに入力さ + れているとき、その部分がもう一度入力されることはない。 + (訳註: wordという単語のrの上にカーソルを置き、:wo<C-r><C-w>と + してみると、'incsearch'の値によって結果が違うことがわかる) + {Vi にはない} CTRL-F と CTRL-P: {Vi mが |+file_in_path| 機能付きでコンパイル されたときのみ有効} @@ -178,10 +194,12 @@ CTRL-\ e {expr} *c_CTRL-\_e* <Enter>を押せば完了します。マッピングする時に使うと便利です。 |expression|もご覧ください。 式の評価を挿入するには|c_CTRL-R_=|を使います。 - 便利な関数に|getcmdline()|と|getcmdpos()|があります。カーソル - が行末になければカーソル位置は変更されません。カーソルが行末に - あるときのコマンドライン変更後のカーソル位置は行末です。 - |setcmdpos()|を使うとカーソル位置を変更できます。 + 便利な関数に|getcmdtype()|と|getcmdline()|と|getcmdpos()|があ + ります。カーソルが行末になければカーソル位置は変更されません。 + カーソルが行末にあるときのコマンドライン変更後のカーソル位置は + 行末です。|setcmdpos()|を使うとカーソル位置を変更できます。 + |sandbox|を使うと不要な副作用を避けて式を評価することができま + す。 例を上げます。 > :cmap <F7> <C-\>eAppendSome()<CR> :func AppendSome() @@ -190,7 +208,9 @@ CTRL-\ e {expr} *c_CTRL-\_e* :call setcmdpos(strlen(cmd)) :return cmd :endfunc -< +< これは再帰的には機能しません。つまり、すでに式を編集していると + きは動作しません。 + *c_CTRL-Y* CTRL-Y モードレスセレクションでテキストを選択中のとき、テキストをクリッ プボードにコピーする。 |modeless-selection| @@ -237,7 +257,7 @@ CTRL-L コマンドライン補完 (|cmdline-completion|を参照) *c_CTRL-_* CTRL-_ 1. キーボードのヘブライ語モードと英語モードを切り替える。これ はコマンドラインのみに適用され、'hkmap' とは関係ない。 - コマンドライン、検索や略語補完等にヘブライ語テキストの項目が必 + コマンドライン、検索や短縮入力等にヘブライ語テキストの項目が必 要とされるときに便利である。Vimが |+rightleft| 機能付きでコン パイルされ、'allowrevins' がオンのときのみ有効。 |rileft.txt| を参照。 @@ -245,7 +265,7 @@ CTRL-_ 1. キーボードのヘブライ語モードと英語モードを切り 2. キーボードのFarsi語モードと英語モードを切り替える。これはコ マンドラインのみに適用され、オプション 'fkmap' には関係しない。 Farsi語モードでは、文字は普段とは反対の方向に挿入される。コマ - ンドライン、検索や略語補完等にFarsi語テキストの項目が必要とさ + ンドライン、検索や短縮入力等にFarsi語テキストの項目が必要とさ れるときに便利である。Vimが |+farsi| 機能付きでコンパイルされ たときのみ有効。 |farsi.txt|を参照。 @@ -294,6 +314,7 @@ CTRL-^ 言語マッピング |:lmap| を切り替えたり、Input Method (IM) s[earch] または / 検索文字列の履歴 e[xpr] または = Expression レジスタの履歴 i[nput] または @ 入力行の履歴 + d[ebug] または > デバッグコマンドの履歴 a[ll] 上記のもの全て {Viにはない} @@ -324,6 +345,8 @@ CTRL-^ 言語マッピング |:lmap| を切り替えたり、Input Method (IM) - タグ: コマンド ":tag" の後でのみ使われる - ファイル名: ファイル名を取るコマンドの後、またはファイル名に対して設定される オプションの設定時のみ使われる。これはファイル名補完と呼ばれる。 +- シェルコマンド名: ":!cmd"、":r !cmd"、":w !cmd"の後で使われる。$PATHが考慮さ + れる。 - オプション: コマンド ":set" の後でのみ使われる。 - マッピング: ":map" や類似コマンドの後でのみ使われる。 - 変数/関数名: ":if", ":call" や類似コマンドの後でのみ使われる。 @@ -338,6 +361,8 @@ CTRL-D カーソルより前のパターンに一致する名前を一覧表示 名を表示しているときには、ディレクトリは強調表示される (オプショ ン 'highlight' を参照)。オプション 'suffixes' の値がマッチした 名前は、末尾の方に移動される。 + 'wildoptions'を"tagfile"にセットすると、マッチするタグを含むファ + イル名をリストすることができます。 *c_CTRL-I* *c_wildchar* *c_<Tab>* オプション 'wildchar' で指定したキー カーソルより前のパターンに対してマッチの検索が行われる。マッチ @@ -364,6 +389,9 @@ CTRL-L カーソルより前のパターンに対してマッチの検索が行 が1個のときは、それがパターンの位置に挿入される。複数個のマッ チがあったときは、最も長い共通部分がパターンの位置に挿入される。 その結果がパターンより短い場合には、補完は行われない。 + 'incsearch'がセットされていると、"/"や"?"で検索パターンを入力 + するとき現在のマッチが表示され、CTRL-Lを押すと現在のマッチの末 + 尾から1文字追加する。 オプション 'wildchar' の既定値は <Tab> である (Vi互換モードの場合は CTRL-E で ある。以前のヴァージョンでは <Esc> が使われていた)。パターン内では標準のワイル @@ -443,6 +471,7 @@ Exコマンドはいくつかの特徴を持っている。 :global :help :helpfind + :lcscope :make :normal :perl @@ -605,10 +634,15 @@ Examples: > /切り下げられる。 |fold-behavior| を参照。 -逆向きの範囲指定 +逆向きの範囲指定 *E493* 範囲には小さい行番号を先に指定しなければならない。そうでないときは、Vimはその -行番号を入れ替えてよいかを尋ねる。ただしグローバルコマンド ":g" では尋ねない。 +行番号を入れ替えてよいかを尋ねる。 + Backwards range given, OK to swap ~ +ただしグローバルコマンド ":g" では尋ねない。 + +コマンドの前に":silent"をつけるとこの質問が出ないようになる。そのときは常に範 +囲が入れ替えられる。 カウントと範囲指定 *N:* @@ -628,7 +662,24 @@ Examples: > 択行にコマンドを繰り返すことができる。 ============================================================================== -5. Exコマンド用の特別な文字 *cmdline-special* +5. Ex コマンドラインのフラグ *ex-flags* + +以下のフラグがExコマンドの選択においてサポートされている。 +これらはコマンドを実行した後にカーソルが移動する位置の行を表示する: + + l |:list|のように表示する + # 行番号をつける + p |:print|のように表示する + +これらのフラグは組み合わせることができる。つまり"l#"とすると行番号をつけて +":list"のスタイルで表示する。 + +============================================================================== +6. Exコマンド用の特別な文字 *cmdline-special* + +Note: 以下はコマンドラインの実行における特別な文字である。CTRL-Rコマンドを使う +とこれらの特別な文字列を挿入することができる。例えば"%"は現在のファイル名を表 +す。CTRL-R %とするとその場に現在のファイル名を挿入する。|c_CTRL-R|を参照。 Exコマンドの、ファイル名が使えるところでは、以下の文字は特別な意味を持つ。これ らは式や関数 |expand()| 内でも使うことができる。 @@ -664,12 +715,13 @@ Note: これらは文字通りに打ち込まれる、これらは特別なキ <afile> autocommand の実行時、ファイルの読み書き用のファイル名に置 き換えられる <abuf> autocommand の実行時、カレントバッファの番号に置き換えられ - る (":r file" のときにもカレントバッファの番号に置き換えら - れる。読み込まれているファイルはバッファ内にない) + る (":r file" と":so file"のときにもカレントバッファの番号 + に置き換えられる。読み込まれているファイルはバッファ内にな + い) <amatch> autocommand の実行時、この自動コマンドが実行されたときのマッ チに置き換えられる。そのファイル名がマッチの検索に使われて いないときのみ、<afile> と違う値になる (イベント FileType - や Syntax 用)。 + や Syntax、SpellFileMissing 用)。 <sfile> コマンド ":source" の実行時、取り込まれたファイルのファイル 名に置き換えられる。 関数の実行時、"関数 {関数名}" に置き換えられる。関数呼び出 @@ -780,9 +832,9 @@ Vim version 3.0 との下位互換性のために残されており、":r" 形 Note: ファイル名が来る筈の所では、ワイルドカードの展開が行われる。Unixでは展開 にはシェルが使われる。ただしVim内部でできない展開だけである (スピードのため)。 -バックティック '`' も次のように使える。 > +バッククォート '`' も次のように使える。 > :n `echo *.c` -(バックティックの展開は |restricted-mode| ではできない) +(バッククォートの展開は |restricted-mode| ではできない) しかし展開は、'%' や '#' 等が展開される前にワイルドカードが存在したときにのみ 行われる。これはファイル名に含まれるワイルドカードを展開しないためである。 <cfile> の結果を展開したいときは、ワイルドカードの文字を追加すればよい。 @@ -818,7 +870,7 @@ Note: ファイル名が来る筈の所では、ワイルドカードの展開 \\$home "\\" の後に $home の値を付け加えた名前のファイル ============================================================================== -6. コマンドラインウィンドウ *cmdline-window* *cmdwin* +7. コマンドラインウィンドウ *cmdline-window* *cmdwin* コマンドラインウィンドウでは、普通のウィンドウでテキストを編集するのと同じよう にコマンドラインを編集できる。コマンドラインウィンドウは特殊なウィンドウで、普 @@ -886,6 +938,11 @@ CTRL-C コマンドラインモードとして継続する。カーソル下の コマンドラインウィンドウに使われたバッファは削除される。<CR> で実行された行以 外に対する変更は、全て失われる。 +カーソル下のコマンドを実行した後、もう一度コマンドラインウィンドウを開きたけれ +ば、このマップを使うとよいかもしれない: > + + :map <F5> <CR>q: + そ の 他 From ab1c8348dd9226574ec35863c4e4a21dfc516880 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sun, 10 Sep 2006 15:07:41 +0000 Subject: [PATCH 048/783] fix: update index to 7.0 fix: translation of a word "abbreviation" git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@48 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/index.txt | 185 ++++++++++++++++++++++++++++++++++++++++------- ja/index.jax | 194 ++++++++++++++++++++++++++++++++++++++++++++------ ja/insert.jax | 20 +++--- 3 files changed, 344 insertions(+), 55 deletions(-) diff --git a/en/index.txt b/en/index.txt index 7eb98e2ee..f8136f1a9 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 6.3. Last change: 2004 May 24 +*index.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -89,7 +89,7 @@ tag char action ~ |i_CTRL-V_digit| CTRL-V {number} insert three digit decimal number as a single byte. |i_CTRL-W| CTRL-W delete word before the cursor -|i_CTRL-X| CTRL-X {mode} enter CTRL-X sub mode, see below +|i_CTRL-X| CTRL-X {mode} enter CTRL-X sub mode, see |i_CTRL-X_index| |i_CTRL-Y| CTRL-Y insert the character which is above the cursor |i_CTRL-Z| CTRL-Z when 'insertmode' set: suspend Vim |i_<Esc>| <Esc> end insert mode (unless 'insertmode' set) @@ -130,8 +130,8 @@ tag char action ~ |i_<C-Home>| <C-Home> cursor to start of file |i_<End>| <End> cursor past end of line |i_<C-End>| <C-End> cursor past end of file -|i_<PageUp>| <PageUp> one screenfull backward -|i_<PageDown>| <PageDown> one screenfull forward +|i_<PageUp>| <PageUp> one screenful backward +|i_<PageDown>| <PageDown> one screenful forward |i_<F1>| <F1> same as <Help> |i_<Help>| <Help> stop insert mode and display help window |i_<Insert>| <Insert> toggle Insert/Replace mode @@ -141,7 +141,7 @@ tag char action ~ |i_<MouseUp>| <MouseUp> scroll three lines upwards |i_<S-MouseUp>| <S-MouseUp> scroll a full page upwards -commands in CTRL-X submode +commands in CTRL-X submode *i_CTRL-X_index* |i_CTRL-X_CTRL-D| CTRL-X CTRL-D complete defined identifiers |i_CTRL-X_CTRL-E| CTRL-X CTRL-E scroll up @@ -150,10 +150,15 @@ commands in CTRL-X submode |i_CTRL-X_CTRL-K| CTRL-X CTRL-K complete identifiers from dictionary |i_CTRL-X_CTRL-L| CTRL-X CTRL-L complete whole lines |i_CTRL-X_CTRL-N| CTRL-X CTRL-N next completion +|i_CTRL-X_CTRL-O| CTRL-X CTRL-O omni completion |i_CTRL-X_CTRL-P| CTRL-X CTRL-P previous completion +|i_CTRL-X_CTRL-S| CTRL-X CTRL-S spelling suggestions |i_CTRL-X_CTRL-T| CTRL-X CTRL-T complete identifiers from thesaurus |i_CTRL-X_CTRL-Y| CTRL-X CTRL-Y scroll down +|i_CTRL-X_CTRL-U| CTRL-X CTRL-U complete with 'completefunc' +|i_CTRL-X_CTRL-V| CTRL-X CTRL-V complete like in : command line |i_CTRL-X_CTRL-]| CTRL-X CTRL-] complete tags +|i_CTRL-X_s| CTRL-X s spelling suggestions {not available when compiled without the +insert_expand feature} ============================================================================== @@ -326,8 +331,7 @@ tag char note action in Normal mode ~ characters, repeat the entered text N-1 times |S| ["x]S 2 delete N lines [into buffer x] and start - insert; synonym for "^cc" or "0cc", - depending on autoindent + insert; synonym for "cc". |T| T{char} 1 cursor till after Nth occurrence of {char} to the left |U| U 2 undo all latest changes on one line @@ -339,9 +343,9 @@ tag char note action in Normal mode ~ "yy" |ZZ| ZZ store current file if modified, and exit |ZQ| ZQ exit current file always -|[| [{char} square bracket command (see below) +|[| [{char} square bracket command (see |[| below) \ not used -|]| ]{char} square bracket command (see below) +|]| ]{char} square bracket command (see |]| below) |^| ^ 1 cursor to the first CHAR of the line |_| _ 1 cursor to the first CHAR N - 1 lines lower |`| `{a-zA-Z0-9} 1 cursor to the mark {a-zA-Z0-9} @@ -369,7 +373,7 @@ tag char note action in Normal mode ~ |e| e 1 cursor forward to the end of word N |f| f{char} 1 cursor to Nth occurrence of {char} to the right -|g| g{char} extended commands, see below +|g| g{char} extended commands, see |g| below |h| h 1 cursor N chars to the left |i| i 2 insert text before the cursor N times |j| j 1 cursor N lines downward @@ -399,7 +403,7 @@ tag char note action in Normal mode ~ cursor [into buffer x] |y| ["x]y{motion} yank Nmove text [into buffer x] |yy| ["x]yy yank N lines [into buffer x] -|z| z{char} commands starting with 'z', see below +|z| z{char} commands starting with 'z', see |z| below |{| { 1 cursor N paragraphs backward |bar| | 1 cursor to column N |}| } 1 cursor N paragraphs forward @@ -423,7 +427,7 @@ tag char note action in Normal mode ~ |<Insert>| <Insert> 2 same as "i" |<Left>| <Left> 1 same as "h" |<LeftMouse>| <LeftMouse> 1 move cursor to the mouse click position -|<MiddleMouse>| <MiddleMouse> 2 same as "P" at the mouse click position +|<MiddleMouse>| <MiddleMouse> 2 same as "gP" at the mouse click position |<PageDown>| <PageDown> same as CTRL-F |<PageUp>| <PageUp> same as CTRL-B |<Right>| <Right> 1 same as "l" @@ -449,6 +453,8 @@ These can be used after an operator or in Visual mode to select an object. tag command action in Normal mode ~ ------------------------------------------------------------------------------ +|v_aquote| a" double quoted string +|v_a'| a' single quoted string |v_a(| a( same as ab |v_a)| a) same as ab |v_a<| a< "a <>" from '<' to the matching '>' @@ -457,12 +463,15 @@ tag command action in Normal mode ~ |v_aW| aW "a WORD" (with white space) |v_a[| a[ "a []" from '[' to the matching ']' |v_a]| a] same as a[ +|v_a`| a` string in backticks |v_ab| ab "a block" from "[(" to "])" (with braces) |v_ap| ap "a paragraph" (with white space) |v_as| as "a sentence" (with white space) |v_aw| aw "a word" (with white space) |v_a{| a{ same as aB |v_a}| a} same as aB +|v_iquote| i" double quoted string without the quotes +|v_i'| i' single quoted string without the quotes |v_i(| i( same as ib |v_i)| i) same as ib |v_i<| i< "inner <>" from '<' to the matching '>' @@ -471,6 +480,7 @@ tag command action in Normal mode ~ |v_iW| iW "inner WORD" |v_i[| i[ "inner []" from '[' to the matching ']' |v_i]| i] same as i[ +|v_i`| i` string in backticks without the backticks |v_ib| ib "inner block" from "[(" to "])" |v_ip| ip "inner paragraph" |v_is| is "inner sentence" @@ -519,6 +529,7 @@ tag command action in Normal mode ~ |CTRL-W_P| CTRL-W P go to preview window |CTRL-W_R| CTRL-W R rotate windows upwards N times |CTRL-W_S| CTRL-W S same as "CTRL-W s" +|CTRL-W_T| CTRL-W T move current window to a new tab page |CTRL-W_W| CTRL-W W go to N previous window (wrap around) |CTRL-W_]| CTRL-W ] split window and jump to tag under cursor |CTRL-W_^| CTRL-W ^ split current window and edit alternate @@ -531,11 +542,19 @@ tag command action in Normal mode ~ the cursor |CTRL-W_f| CTRL-W f split window and edit file name under the cursor +|CTRL-W_F| CTRL-W F split window and edit file name under the + cursor and jump to the line number + following the file name. |CTRL-W_g_CTRL-]| CTRL-W g CTRL-] split window and do |:tjump| to tag under cursor |CTRL-W_g]| CTRL-W g ] split window and do |:tselect| for tag under cursor |CTRL-W_g}| CTRL-W g } do a |:ptjump| to the tag under the cursor +|CTRL-W_gf| CTRL-W g f edit file name under the cursor in a new + tab page +|CTRL-W_gF| CTRL-W g F edit file name under the cursor in a new + tab page and jump to the line number + following the file name. |CTRL-W_h| CTRL-W h go to Nth left window (stop at first window) |CTRL-W_i| CTRL-W i split window and jump to declaration of identifier under the cursor @@ -677,6 +696,7 @@ tag char note action in Normal mode ~ of the current screen line |g8| g8 print hex value of bytes used in UTF-8 character under the cursor +|g<| g< display previous command output |g?| g? 2 Rot13 encoding operator |g?g?| g?? 2 Rot13 encode current line |g?g?| g?g? 2 Rot13 encode current line @@ -708,6 +728,9 @@ tag char note action in Normal mode ~ word |gf| gf start editing the file whose name is under the cursor +|gF| gF start editing the file whose name is under + the cursor and jump to the line number + following the filename. |gg| gg 1 cursor to line N, default first line |gh| gh start Select mode |gi| gi 2 like "i", but first move to the |'^| mark @@ -725,6 +748,7 @@ tag char note action in Normal mode ~ |gu| gu{motion} 2 make Nmove text lowercase |gv| gv reselect the previous Visual area |gw| gw{motion} 2 format Nmove text and keep cursor +|g@| g@{motion} call 'operatorfunc' |g~| g~{motion} 2 swap case for Nmove text |g<Down>| g<Down> 1 same as "gj" |g<End>| g<End> 1 same as "g$" @@ -748,16 +772,19 @@ tag char note action in Normal mode ~ cursor on first non-blank |z.| z. redraw, cursor line to center of window, cursor on first non-blank +|z=| z= give spelling suggestions |zA| zA open a closed fold or close an open fold recursively |zC| zC close folds recursively |zD| zD delete folds recursively |zE| zE eliminate all folds |zF| zF create a fold for N lines +|zG| zG mark word as good spelled word |zM| zM set 'foldlevel' to zero |zN| zN set 'foldenable' |zO| zO open folds recursively |zR| zR set 'foldlevel' to the deepest fold +|zW| zW mark word as wrong (bad) spelled word |zX| zX re-apply 'foldlevel' |z^| z^ cursor on line N (default line above window), otherwise like "z-" @@ -769,6 +796,7 @@ tag char note action in Normal mode ~ position the cursor at the end (right side) of the screen |zf| zf{motion} create a fold for Nmove text +|zg| zg mark word as good spelled word |zh| zh when 'wrap' off scroll screen N characters to the right |zi| zi toggle 'foldenable' @@ -785,6 +813,7 @@ tag char note action in Normal mode ~ side) of the screen |zt| zt redraw, cursor line at top of window |zv| zv open enough folds to view the cursor line +|zw| zw mark word as wrong (bad) spelled word |zx| zx re-apply 'foldlevel' and do "zv" |zz| zz redraw, cursor line at center of window |z<Left>| z<Left> same as "zh" @@ -793,13 +822,14 @@ tag char note action in Normal mode ~ ============================================================================== 3. Visual mode *visual-index* -Most commands in Visual mode are the same as in Normal mode. The ones listed +Most commands in Visual mode are the same as in Normal mode. The ones listed here are those that are different. tag command note action in Visual mode ~ ------------------------------------------------------------------------------ |v_CTRL-\_CTRL-N| CTRL-\ CTRL-N stop Visual mode |v_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode' +|v_CTRL-C| CTRL-C stop Visual mode |v_CTRL-G| CTRL-G toggle between Visual mode and Select mode |v_<BS>| <BS> 2 Select mode: delete highlighted area |v_CTRL-H| CTRL-H 2 same as <BS> @@ -807,6 +837,7 @@ tag command note action in Visual mode ~ command |v_CTRL-V| CTRL-V make Visual mode blockwise or stop Visual mode +|v_<Esc>| <Esc> stop Visual mode |v_CTRL-]| CTRL-] jump to highlighted tag |v_!| !{filter} 2 filter the highlighted lines through the external command {filter} @@ -1050,14 +1081,21 @@ The commands are sorted on the non-optional part of their name. |:cNfile| :cNf[ile] go to last error in previous file |:cabbrev| :ca[bbrev] like ":abbreviate" but for Command-line mode |:cabclear| :cabc[lear] clear all abbreviations for Command-line mode +|:caddbuffer| :caddb[uffer] add errors from buffer +|:caddexpr| :cad[dexpr] add errors from expr +|:caddfile| :caddf[ile] add error message to current quickfix list |:call| :cal[l] call a function |:catch| :cat[ch] part of a :try command +|:cbuffer| :cb[uffer] parse error messages and jump to first error |:cc| :cc go to specific error |:cclose| :ccl[ose] close quickfix window |:cd| :cd change directory |:center| :ce[nter] format lines at the center +|:cexpr| :cex[pr] read errors from expr and jump to first |:cfile| :cf[ile] read file with error messages and jump to first |:cfirst| :cfir[st] go to the specified error, default first one +|:cgetbuffer| :cgetb[uffer] get errors from buffer +|:cgetexpr| :cgete[xpr] get errors from expr |:cgetfile| :cg[etfile] read file with error messages |:changes| :cha[nges] print the change list |:chdir| :chd[ir] change directory @@ -1095,12 +1133,14 @@ The commands are sorted on the non-optional part of their name. |:cunmenu| :cunme[nu] remove menu for Command-line mode |:cwindow| :cw[indow] open or close quickfix window |:delete| :d[elete] delete lines +|:delmarks| :delm[arks] delete marks |:debug| :deb[ug] run a command in debugging mode |:debuggreedy| :debugg[reedy] read debug mode commands from normal input |:delcommand| :delc[ommand] delete user-defined command |:delfunction| :delf[unction] delete a user function |:diffupdate| :dif[fupdate] update 'diff' buffers |:diffget| :diffg[et] remove differences in current buffer +|:diffoff| :diffo[ff] switch off diff mode |:diffpatch| :diffp[atch] apply a patch and show differences |:diffput| :diffpu[t] remove differences in other buffer |:diffsplit| :diffs[plit] show differences with another file @@ -1116,6 +1156,7 @@ The commands are sorted on the non-optional part of their name. |:dsearch| :ds[earch] list one #define |:dsplit| :dsp[lit] split window and jump to #define |:edit| :e[dit] edit a file +|:earlier| :ea[rlier] go to older change, undo |:echo| :ec[ho] echoes the result of expressions |:echoerr| :echoe[rr] like :echo, show like an error and use history |:echohl| :echoh[l] set highlighting for echo commands @@ -1125,6 +1166,7 @@ The commands are sorted on the non-optional part of their name. |:elseif| :elsei[f] part of an :if command |:emenu| :em[enu] execute a menu by name |:endif| :en[dif] end previous :if +|:endfor| :endfo[r] end previous :for |:endfunction| :endf[unction] end of a user function |:endtry| :endt[ry] end previous :try |:endwhile| :endw[hile] end previous :while @@ -1132,6 +1174,7 @@ The commands are sorted on the non-optional part of their name. |:ex| :ex same as ":edit" |:execute| :exe[cute] execute result of expressions |:exit| :exi[t] same as ":xit" +|:exusage| :exu[sage] overview of Ex commands |:file| :f[ile] show or set the current file name |:files| :files list all files in the buffer list |:filetype| :filet[ype] switch file type detection on/off @@ -1145,11 +1188,12 @@ The commands are sorted on the non-optional part of their name. |:folddoopen| :foldd[oopen] execute command on lines not in a closed fold |:folddoclosed| :folddoc[losed] execute command on lines in a closed fold |:foldopen| :foldo[pen] open folds +|:for| :for for loop |:function| :fu[nction] define a user function |:global| :g[lobal] execute commands for matching lines |:goto| :go[to] go to byte in the buffer |:grep| :gr[ep] run 'grepprg' and jump to first match -|:grepadd| :grepa[dd] like grep, but append to current list +|:grepadd| :grepa[dd] like :grep, but append to current list |:gui| :gu[i] start the GUI |:gvim| :gv[im] start the GUI |:hardcopy| :ha[rdcopy] send text to the printer @@ -1182,24 +1226,62 @@ The commands are sorted on the non-optional part of their name. |:join| :j[oin] join lines |:jumps| :ju[mps] print the jump list |:k| :k set a mark +|:keepalt| :keepa[lt] following command keeps the alternate file |:keepmarks| :kee[pmarks] following command keeps marks where they are |:keepjumps| :keepj[jumps] following command keeps jumplist and marks +|:lNext| :lN[ext] go to previous entry in location list +|:lNfile| :lNf[ile] go to last entry in previous file |:list| :l[ist] print lines +|:laddexpr| :lad[dexpr] add locations from expr +|:laddbuffer| :laddb[uffer] add locations from buffer +|:laddfile| :laddf[ile] add locations to current location list |:last| :la[st] go to the last file in the argument list |:language| :lan[guage] set the language (locale) +|:later| :lat[er] go to newer change, redo +|:lbuffer| :lb[uffer] parse locations and jump to first location |:lcd| :lc[d] change directory locally |:lchdir| :lch[dir] change directory locally +|:lclose| :lcl[ose] close location window +|:lcscope| :lcs[cope] like ":cscope" but uses location list |:left| :le[ft] left align lines |:leftabove| :lefta[bove] make split window appear left or above |:let| :let assign a value to a variable or option +|:lexpr| :lex[pr] read locations from expr and jump to first +|:lfile| :lf[ile] read file with locations and jump to first +|:lfirst| :lfir[st] go to the specified location, default first one +|:lgetbuffer| :lgetb[uffer] get locations from buffer +|:lgetexpr| :lgete[xpr] get locations from expr +|:lgetfile| :lg[etfile] read file with locations +|:lgrep| :lgr[ep] run 'grepprg' and jump to first match +|:lgrepadd| :lgrepa[dd] like :grep, but append to current list +|:lhelpgrep| :lh[elpgrep] like ":helpgrep" but uses location list +|:ll| :ll go to specific location +|:llast| :lla[st] go to the specified location, default last one +|:llist| :lli[st] list all locations +|:lmake| :lmak[e] execute external command 'makeprg' and parse + error messages |:lmap| :lm[ap] like ":map!" but includes Lang-Arg mode |:lmapclear| :lmapc[lear] like ":mapclear!" but includes Lang-Arg mode +|:lnext| :lne[xt] go to next location +|:lnewer| :lnew[er] go to newer location list +|:lnfile| :lnf[ile] go to first location in next file |:lnoremap| :ln[oremap] like ":noremap!" but includes Lang-Arg mode |:loadkeymap| :loadk[eymap] load the following keymaps until EOF |:loadview| :lo[adview] load view for current window from a file |:lockmarks| :loc[kmarks] following command keeps marks where they are +|:lockvar| :lockv[ar] lock variables +|:lolder| :lol[der] go to older location list +|:lopen| :lope[n] open location window +|:lprevious| :lp[revious] go to previous location +|:lpfile| :lpf[ile] go to last location in previous file +|:lrewind| :lr[ewind] go to the specified location, default first one |:ls| :ls list all buffers +|:ltag| :lt[ag] jump to tag and add matching tags to the + location list |:lunmap| :lu[nmap] like ":unmap!" but includes Lang-Arg mode +|:lvimgrep| :lv[imgrep] search for pattern in files +|:lvimgrepadd| :lvimgrepa[dd] like :vimgrep, but append to current list +|:lwindow| :lw[indow] open or close location window |:move| :m[ove] move lines |:mark| :ma[rk] set a mark |:make| :mak[e] execute external command 'makeprg' and parse @@ -1213,9 +1295,13 @@ The commands are sorted on the non-optional part of their name. |:messages| :mes[sages] view previously displayed messages |:mkexrc| :mk[exrc] write current mappings and settings to a file |:mksession| :mks[ession] write session info to a file +|:mkspell| :mksp[ell] produce .spl spell file |:mkvimrc| :mkv[imrc] write current mappings and settings to a file |:mkview| :mkvie[w] write view of current window to a file |:mode| :mod[e] show or change the screen mode +|:mzscheme| :mz[scheme] execute MzScheme command +|:mzfile| :mzf[ile] execute MzScheme script file +|:nbkey| :nb[key] pass a key to Netbeans |:next| :n[ext] go to next file in the argument list |:new| :new create a new empty window |:nmap| :nm[ap] like ":map" but for Normal mode @@ -1223,6 +1309,7 @@ The commands are sorted on the non-optional part of their name. |: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 @@ -1236,16 +1323,20 @@ The commands are sorted on the non-optional part of their name. |:omap| :om[ap] like ":map" but for Operator-pending mode |:omapclear| :omapc[lear] remove all mappings for Operator-pending mode |:omenu| :ome[nu] add menu for Operator-pending mode -|:only| :on[ly] close all windows except current one +|:only| :on[ly] close all windows except the current one |:onoremap| :ono[remap] like ":noremap" but for Operator-pending mode |:onoremenu| :onoreme[nu] like ":noremenu" but for Operator-pending mode |:options| :opt[ions] open the options-window |:ounmap| :ou[nmap] like ":unmap" but for Operator-pending mode |:ounmenu| :ounme[nu] remove menu for Operator-pending mode -|:print| :p[rint] print lines |:pclose| :pc[lose] close preview window |:pedit| :ped[it] edit file in the preview window |:perl| :pe[rl] execute Perl command +|:print| :p[rint] print lines +|:profdel| :profd[el] stop profiling a function or script +|:profile| :prof[ile] profiling functions and scripts +|:promptfind| :pro[mtfind] open GUI dialog for searching +|:promptrepl| :promtr[epl] open GUI dialog for search/replace |:perldo| :perld[o] execute Perl command for each line |:pop| :po[p] jump to older entry in tag stack |:popup| :pop[up] popup a menu by name @@ -1292,6 +1383,7 @@ The commands are sorted on the non-optional part of their name. |:substitute| :s[ubstitute] find and replace text |:sNext| :sN[ext] split window and go to previous file in argument list +|:sandbox| :san[dbox] execute a command in the sandbox |:sargument| :sa[rgument] split window and go to specific file in argument list |:sall| :sal[l] open a window for each file in argument list @@ -1315,7 +1407,7 @@ The commands are sorted on the non-optional part of their name. buffer list |:scriptnames| :scrip[tnames] list names of all sourced Vim scripts |:scriptencoding| :scripte[ncoding] encoding used in sourced Vim script -|:scscope| :scs[cope] split window and execute cscope command +|:scscope| :scs[cope] split window and execute cscope command |:set| :se[t] show or set options |:setfiletype| :setf[iletype] set 'filetype', unless it was set already |:setglobal| :setg[lobal] show global values of options @@ -1331,11 +1423,23 @@ The commands are sorted on the non-optional part of their name. |:slast| :sla[st] split window and go to last file in the argument list |:smagic| :sm[agic] :substitute with 'magic' +|:smap| :sma[p] like ":map" but for Select mode +|:smapclear| :smapc[lear] remove all mappings for Select mode +|:smenu| :sme[nu] add menu for Select mode |:snext| :sn[ext] split window and go to next file in the argument list |:sniff| :sni[ff] send request to sniff |:snomagic| :sno[magic] :substitute with 'nomagic' +|:snoremap| :snor[emap] like ":noremap" but for Select mode +|:snoremenu| :snoreme[nu] like ":noremenu" but for Select mode +|:sort| :sor[t] sort lines |:source| :so[urce] read Vim or Ex commands from a file +|:spelldump| :spelld[ump] split window and fill with all correct words +|:spellgood| :spe[llgood] add good word for spelling +|:spellinfo| :spelli[nfo] show info about loaded spell files +|:spellrepall| :spellr[epall] replace all bad words like last |z=| +|:spellundo| :spellu[ndo] remove good or bad word +|:spellwrong| :spellw[rong] add spelling mistake |:split| :sp[lit] split current window |:sprevious| :spr[evious] split window and go to previous file in the argument list @@ -1344,10 +1448,14 @@ The commands are sorted on the non-optional part of their name. |:stop| :st[op] suspend the editor or escape to a shell |:stag| :sta[g] split window and jump to a tag |:startinsert| :star[tinsert] start Insert mode +|:startgreplace| :startg[replace] start Virtual Replace mode +|:startreplace| :startr[eplace] start Replace mode |:stopinsert|| :stopi[nsert] stop Insert mode |:stjump| :stj[ump] do ":tjump" and split window |:stselect| :sts[elect] do ":tselect" and split window |:sunhide| :sun[hide] same as ":unhide" +|:sunmap| :sunm[ap] like ":unmap" but for Select mode +|:sunmenu| :sunme[nu] remove menu for Select mode |:suspend| :sus[pend] same as ":stop" |:sview| :sv[iew] split window and edit file read-only |:swapname| :sw[apname] show the name of the current swap file @@ -1355,6 +1463,21 @@ The commands are sorted on the non-optional part of their name. |:syncbind| :sync[bind] sync scroll binding |:t| :t same as ":copy" |:tNext| :tN[ext] jump to previous matching tag +|:tabNext| :tabN[ext] go to previous tab page +|:tabclose| :tabc[lose] close current tab page +|:tabdo| :tabdo execute command in each tab page +|:tabedit| :tabe[dit] edit a file in a new tab page +|:tabfind| :tabf[ind] find file in 'path', edit it in a new tab page +|:tabfirst| :tabfir[st] got to first tab page +|:tablast| :tabl[ast] got to last tab page +|:tabmove| :tabm[ove] move tab page to other position +|:tabnew| :tabnew edit a file in a new tab page +|:tabnext| :tabn[ext] go to next tab page +|:tabonly| :tabo[nly] close all tab pages except the current one +|:tabprevious| :tabp[revious] go to previous tab page +|:tabrewind| :tabr[ewind] got to first tab page +|:tabs| :tabs list the tab pages and what they contain +|:tab| :tab create new tab when opening new window |:tag| :ta[g] jump to tag |:tags| :tags show the contents of the tag stack |:tcl| :tc[l] execute Tcl command @@ -1375,10 +1498,13 @@ The commands are sorted on the non-optional part of their name. |:tselect| :ts[elect] list matching tags and select one |:tunmenu| :tu[nmenu] remove menu tooltip |:undo| :u[ndo] undo last change(s) +|:undojoin| :undoj[oin] join next change with previous undo block +|:undolist| :undol[ist] list leafs of the undo tree |:unabbreviate| :una[bbreviate] remove abbreviation |:unhide| :unh[ide] open a window for each loaded file in the buffer list |:unlet| :unl[et] delete variable +|:unlockvar| :unlo[ckvar] unlock variables |:unmap| :unm[ap] remove mapping |:unmenu| :unme[nu] remove menu |:update| :up[date] write buffer if modified @@ -1386,17 +1512,20 @@ The commands are sorted on the non-optional part of their name. |:version| :ve[rsion] print version number and other info |:verbose| :verb[ose] execute command with 'verbose' set |:vertical| :vert[ical] make following command split vertically +|:vimgrep| :vim[grep] search for pattern in files +|:vimgrepadd| :vimgrepa[dd] like :vimgrep, but append to current list |:visual| :vi[sual] same as ":edit", but turns off "Ex" mode +|:viusage| :viu[sage] overview of Normal mode commands |:view| :vie[w] edit a file read-only -|:vmap| :vm[ap] like ":map" but for Visual mode -|:vmapclear| :vmapc[lear] remove all mappings for Visual mode -|:vmenu| :vme[nu] add menu for Visual mode -|:vnoremap| :vn[oremap] like ":noremap" but for Visual mode +|:vmap| :vm[ap] like ":map" but for Visual+Select mode +|:vmapclear| :vmapc[lear] remove all mappings for Visual+Select mode +|:vmenu| :vme[nu] add menu for Visual+Select mode |:vnew| :vne[w] create a new empty window, vertically split -|:vnoremenu| :vnoreme[nu] like ":noremenu" but for Visual mode +|:vnoremap| :vn[oremap] like ":noremap" but for Visual+Select mode +|:vnoremenu| :vnoreme[nu] like ":noremenu" but for Visual+Select mode |:vsplit| :vs[plit] split current window vertically -|:vunmap| :vu[nmap] like ":unmap" but for Visual mode -|:vunmenu| :vunme[nu] remove menu for Visual mode +|:vunmap| :vu[nmap] like ":unmap" but for Visual+Select mode +|:vunmenu| :vunme[nu] remove menu for Visual+Select mode |:windo| :windo execute command in each window |:write| :w[rite] write to a file |:wNext| :wN[ext] write to a file and go to previous file in @@ -1416,8 +1545,16 @@ The commands are sorted on the non-optional part of their name. |:wviminfo| :wv[iminfo] write to viminfo file |:xit| :x[it] write if buffer changed and quit window or Vim |:xall| :xa[ll] same as ":wqall" +|:xmapclear| :xmapc[lear] remove all mappings for Visual mode +|:xmap| :xm[ap] like ":map" but for Visual mode +|:xmenu| :xme[nu] add menu for Visual mode +|:xnoremap| :xn[oremap] like ":noremap" but for Visual mode +|:xnoremenu| :xnoreme[nu] like ":noremenu" but for Visual mode +|:xunmap| :xu[nmap] like ":unmap" but for Visual mode +|:xunmenu| :xunme[nu] remove menu for Visual mode |:yank| :y[ank] yank lines into a register |:z| :z print some lines |:~| :~ repeat last ":substitute" + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/index.jax b/ja/index.jax index 9e579c4b8..b31d33d73 100644 --- a/ja/index.jax +++ b/ja/index.jax @@ -1,10 +1,11 @@ COMMENT: モード別コマンドによる索引 -STATUS: finished 6.3 +STATUS: finished 7.0 TRANSLATOR: 小野尾隆一(nobi) <onoo@k-micro.com> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> -*index.txt* For Vim version 6.3. Last change: 2004 May 24 +*index.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -94,7 +95,8 @@ Vim変数の一覧は|vim-variable|を参照。 |i_CTRL-V_digit| CTRL-V {number} 続いて入力する3桁の10進数で1バイト文字を指定 して挿入 |i_CTRL-W| CTRL-W カーソルの前にある単語を削除する。 -|i_CTRL-X| CTRL-X {mode} CTRL-X サブモードに移行する。詳しくは下を参照。 +|i_CTRL-X| CTRL-X {mode} CTRL-X サブモードに移行する。 + 詳しくは|i_CTRL-X_index|を参照。 |i_CTRL-Y| CTRL-Y 上の行のカーソルと同じ位置にある文字を挿入する |i_CTRL-Z| CTRL-Z 'insertmode' がセットされている場合: Vim をサ スペンドする。 @@ -146,7 +148,7 @@ Vim変数の一覧は|vim-variable|を参照。 |i_<MouseUp>| <MouseUp> ウィンドウを3行上へスクロール。 |i_<S-MouseUp>| <S-MouseUp> ウィンドウを1画面上へスクロール。 -CTRL-X サブモードで使用するコマンド +CTRL-X サブモードで使用するコマンド *i_CTRL-X_index* |i_CTRL-X_CTRL-D| CTRL-X CTRL-D 定義済みの識別子を補完。 |i_CTRL-X_CTRL-E| CTRL-X CTRL-E ウィンドウを上へスクロール。 @@ -155,10 +157,15 @@ CTRL-X サブモードで使用するコマンド |i_CTRL-X_CTRL-K| CTRL-X CTRL-K 辞書の識別子を補完。 |i_CTRL-X_CTRL-L| CTRL-X CTRL-L 行全体を補完。 |i_CTRL-X_CTRL-N| CTRL-X CTRL-N 次の補完候補。 +|i_CTRL-X_CTRL-O| CTRL-X CTRL-O オムニ補完 |i_CTRL-X_CTRL-P| CTRL-X CTRL-P 前の補完候補。 +|i_CTRL-X_CTRL-S| CTRL-X CTRL-S スペリング補完 |i_CTRL-X_CTRL-T| CTRL-X CTRL-T 類語による補完 |i_CTRL-X_CTRL-Y| CTRL-X CTRL-Y ウィンドウを下へスクロール。 +|i_CTRL-X_CTRL-U| CTRL-X CTRL-U 'completefunc'による補完 +|i_CTRL-X_CTRL-V| CTRL-X CTRL-V コマンドラインと同様な補完 |i_CTRL-X_CTRL-]| CTRL-X CTRL-] タグを補完。 +|i_CTRL-X_s| CTRL-X s スペリング補完 {コンパイル時に|+insert_expand|オプションを有効にしたときのみ利用可能} ============================================================================== @@ -317,8 +324,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |R| R 2 上書きモードに移行する: 今ある文字を上書き する、入力したテキストを N-1 回繰り返す。 |S| ["x]S 2 N 行削除し[バッファ x に保存]、テキストの挿 - 入開始; "^cc" または "0cc" と同じ、オートイ - ンデントに依存。 + 入開始; "cc"と同じ。 |T| T{char} 1 カーソルを左方向へ N 個目の {char} の直後ま で移動。 |U| U 2 1行中の最近の変更をすべて取り消す。 @@ -330,9 +336,9 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |ZZ| ZZ カレントファイルが編集されていたら、保存し て編集を終了する。 |ZQ| ZQ カレントファイルの編集を終了する。 -|[| [{char} 大括弧コマンド (下を参照) +|[| [{char} 大括弧コマンド (下の|[|を参照) \ 未使用 -|]| ]{char} 大括弧コマンド (下を参照) +|]| ]{char} 大括弧コマンド (下の|]|を参照) |^| ^ 1 カーソルを行の先頭の CHAR へ移動。 |_| _ 1 カーソルを N-1 行下の先頭の CHAR へ移動。 |`| `{a-zA-Z0-9} 1 カーソルをマーク {a-zA-Z0-9} へ移動。 @@ -360,7 +366,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |dp| dp 2 ":diffput" と同じ。 |e| e 1 カーソルを N 先のワードの末尾へ移動。 |f| f{char} 1 カーソルを右方向へ N 個目の {char} に移動。 -|g| g{char} 拡張コマンド、下を参照。 +|g| g{char} 拡張コマンド、下の|g|を参照。 |h| h 1 カーソルを左へ N 文字移動。 |i| i 2 カーソルの直前に N 回テキストを挿入する。 |j| j 1 カーソルを N 行下へ移動する。 @@ -421,7 +427,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |<Insert>| <Insert> 2 "i" と同じ。 |<Left>| <Left> 1 "h" と同じ。 |<LeftMouse>| <LeftMouse> 1 カーソルをマウスクリック位置へ移動。 -|<MiddleMouse>| <MiddleMouse> 2 マウスクリック位置で実行した "P" と同じ。 +|<MiddleMouse>| <MiddleMouse> 2 マウスクリック位置で実行した "gP" と同じ。 |<PageDown>| <PageDown> CTRL-F と同じ。 |<PageUp>| <PageUp> CTRL-B と同じ。 |<Right>| <Right> 1 "l" と同じ。 @@ -448,6 +454,8 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 タグ コマンド ノーマルモードでの動作 ~ ------------------------------------------------------------------------------ +|v_aquote| a" ダブルクォートで囲まれた文字列 +|v_a'| a' シングルクォートで囲まれた文字列 |v_a(| a( ab と同じ。 |v_a)| a) ab と同じ。 |v_a<| a< "a <>" '<' から '>' までを選択。 @@ -457,6 +465,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |v_aW| aW "a WORD" (ホワイトスペースを含む) |v_a[| a[ "a []" '[' から ']' までを選択。 |v_a]| a] a[ と同じ。 +|v_a`| a` バッククォートで囲まれた文字列 |v_ab| ab "a block" "[(" から "])" までを選択(括弧を 含む)。 |v_ap| ap "a paragraph" (ホワイトスペースを含む) @@ -464,6 +473,10 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |v_aw| aw "a word" (ホワイトスペースを含む) |v_a{| a{ aB と同じ。 |v_a}| a} aB と同じ。 +|v_iquote| i" ダブルクォートで囲まれた文字列。ダブルクォ + ートは含まない。 +|v_i'| i' シングルクォートで囲まれた文字列。シングル + クォートは含まない。 |v_i(| i( ib と同じ。 |v_i)| i) ib と同じ。 |v_i<| i< "inner <>" '<' から '>' までを選択。 @@ -472,6 +485,8 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |v_iW| iW "inner WORD" |v_i[| i[ "inner []" '[' から ']' までを選択。 |v_i]| i] i[ と同じ。 +|v_i`| i` バッククォートで囲まれた文字列。バッククォ + ートは含まない。 |v_ib| ib "inner block" "[(" から "])" までを選択。 |v_ip| ip "inner paragraph" |v_is| is "inner sentence" @@ -520,6 +535,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |CTRL-W_P| CTRL-W P プレビューウィンドウへ移動する。 |CTRL-W_R| CTRL-W R ウィンドウ位置を後方へ N 回転させる。 |CTRL-W_S| CTRL-W S "CTRL-W s" と同じ。 +|CTRL-W_T| CTRL-W T カレントウィンドウを新しいタブページへ移動。 |CTRL-W_W| CTRL-W W 上から N 番目のウィンドウに移動。N の指定が なければ、カレントウィンドウの上のウィンド ウ(なければ一番下のウィンドウ)に移動。 @@ -535,12 +551,20 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 ンプする。 |CTRL-W_f| CTRL-W f ウィンドウを分割し、カーソル位置のファイル 名のファイルを編集する。 +|CTRL-W_F| CTRL-W F ウィンドウを分割し、カーソル位置のファイル + 名のファイルを開き、ファイル名の後に書かれ + た行番号にジャンプする。 |CTRL-W_g_CTRL-]| CTRL-W g CTRL-] ウィンドウを分割し、カーソル位置のタグに対 し |:tjump| を実行する。 |CTRL-W_g]| CTRL-W g ] ウィンドウを分割し、カーソル位置のタグに対 し |:tselect| を実行する。 |CTRL-W_g}| CTRL-W g } カーソル位置のタグに対し |:ptjump| を実行す る。 +|CTRL-W_gf| CTRL-W g f カーソル位置のファイル名のファイルを新しい + タブページで開く。 +|CTRL-W_gF| CTRL-W g F カーソル位置のファイル名のファイルを新しい + タブページで開き、ファイル名の後に書かれた + 行番号にジャンプする。 |CTRL-W_h| CTRL-W h N 個左のウィンドウに移動(一番左のウィンドウ でストップ) |CTRL-W_i| CTRL-W i ウィンドウを分割し、カーソル位置の識別子の @@ -699,6 +723,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 ため上の行頭へ移動 |g8| g8 UTF-8環境でカーソル位置の文字のバイト列を16 進数で表示する +|g<| g< 前のコマンドの出力を表示する。 |g?| g? 2 Rot13 エンコード演算子。 |g?g?| g?? 2 現在の行を Rot13 エンコード。 |g?g?| g?g? 2 現在の行を Rot13 エンコード。 @@ -723,6 +748,9 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 し、移動 |ge| ge 1 直前の単語の末尾に移動 |gf| gf カーソル位置のファイル名のファイルを開く +|gF| gF カーソル位置のファイル名のファイルを開き、 + ファイル名の後に書かれた行番号にジャンプす + る。 |gg| gg 1 N 行目へジャンプ、省略時は1行目 |gh| gh セレクトモードの開始 |gi| gi 2 "i"と同じだがその前に|'^|マークへ移動する @@ -740,6 +768,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |gu| gu{motion} 2 Nmove テキストを小文字にする |gv| gv 前回の選択範囲を再選択する |gw| gw{motion} 2 Nmove テキストを整形する。カーソル移動なし +|g@| g@{motion} 'operatorfunc'を呼ぶ。 |g~| g~{motion} 2 Nmove テキストの大文字、小文字を変換する |g<Down>| g<Down> 1 "gj" と同じ。 |g<End>| g<End> 1 "g$" と同じ。 @@ -767,16 +796,21 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |z.| z. 画面の再描画、カーソル行をウィンドウの中央 部へ移動、カーソルは行のはじめの空白文字以 外の文字へ移動。 +|z=| z= スペリング補完を行う。 |zA| zA 折畳を再帰的に開閉する |zC| zC 折畳を再帰的に閉じる |zD| zD 折畳を再帰的に削除する |zE| zE 折畳をすべて削除する |zF| zF N 行の折畳を作成する +|zG| zG wordを正しくスペリングされた単語としてマー + クする。 |zM| zM 'foldlevel'を0に設定する |zN| zN 'foldenable'をオンにする |zO| zO 折畳を再帰的に開く |zR| zR 'foldlevel'を最も深い折畳と同じレベルに設 定する +|zW| zW wordを間違ってスペリングされた単語としてマ + ークする。 |zX| zX 'foldlevel'を再適用する |z^| z^ カーソルを N 行目に移動(省略時はウィンドウ の上の行)、その他は "z-" と同じ。 @@ -789,6 +823,8 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 リーンの右端になるように、水平方向にスクロー ル。 |zf| zf{motion} Nmoveテキストの折畳を作成する +|zg| zg wordを正しくスペリングされた単語としてマー + クする。 |zh| zh 'wrap' オプションがオフの時、水平方向に N 文字分右へスクロール。 |zi| zi 'foldenable'を切り替える @@ -806,6 +842,8 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |zt| zt 画面の再描画、カーソル行をウィンドウの最上 部へ移動。 |zv| zv カーソル行が表示されるように折畳を開く +|zw| zw wordを間違ってスペリングされた単語としてマ + ークする。 |zx| zx 'foldlevel'を最適用して"zv"を実行する |zz| zz 画面の再描画、カーソル行をウィンドウの中央 部へ移動。 @@ -822,6 +860,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 ------------------------------------------------------------------------------ |v_CTRL-\_CTRL-N| CTRL-\ CTRL-N ビジュアルモードの停止 |v_CTRL-\_CTRL-G| CTRL-\ CTRL-G 'insertmode'に合わせたモードに移行する +|v_CTRL-C| CTRL-C ビジュアルモードの停止 |v_CTRL-G| CTRL-G ビジュアルモードとセレクトモードを 切り替える |v_<BS>| <BS> 2 セレクトモードのとき: 選択範囲の内容を削除 @@ -830,6 +869,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 移行 |v_CTRL-V| CTRL-V ビジュアルモードを矩形選択にする。すでに 矩形選択であれば、ビジュアルモードを終了する +|v_<Esc>| <Esc> ビジュアルモードの停止 |v_CTRL-]| CTRL-] 選択した文字のタグへジャンプ |v_!| !{filter} 2 選択範囲の行を外部コマンド {filter} でフィルタする @@ -1072,14 +1112,22 @@ You found it, Arthur! *holy-grail* コマンド |:cabclear| :cabc[lear] コマンドラインモードにおけるすべての 短縮入力を削除 +|:caddbuffer| :caddb[uffer] バッファからエラーを追加する +|:caddexpr| :cad[dexpr] 式からエラーを追加する +|:caddfile| :caddf[ile] 現在のQuickFixリストにエラーメッセージを追加 |:call| :cal[l] 関数を実行する |:catch| :cat[ch] :tryコマンドの一部 +|:cbuffer| :cb[uffer] エラーメッセージを解釈し、最初のエラーへジャ + ンプ |:cc| :cc 指定のエラーへジャンプ |:cclose| :ccl[ose] クイックフィックスウィンドウを閉じる |:cd| :cd ディレクトリの移動 |:center| :ce[nter] 行を中央寄せに整形 +|:cexpr| :cex[pr] 式からエラーを読みこみ、最初のエラーへジャンプ |:cfile| :cf[ile] エラーファイルを読み込み最初のエラーへジャンプ |:cfirst| :cfir[st] 指定のエラーへジャンプ。省略時は先頭のエラー +|:cgetbuffer| :cgetb[uffer] バッファからエラーを取得する +|:cgetexpr| :cgete[xpr] 式からエラーを取得する |:cgetfile| :cg[etfile] エラーファイルを読み込む |:change| :ch[ange] 行を削除し、テキストを挿入 |:chdir| :chd[ir] ディレクトリの移動 @@ -1125,12 +1173,14 @@ You found it, Arthur! *holy-grail* |:cunmenu| :cunme[nu] コマンドラインモードのメニューを削除 |:cwindow| :cw[indow] クイックフィックスウィンドウを開閉する |:delete| :d[elete] 行を削除 +|:delmarks| :delm[arks] マークを削除する |:debug| :deb[ug] コマンドをデバッグモードで実行する |:debuggreedy| :debugg[reedy] デバッグモードのコマンドを標準入力から読み込む |:delcommand| :delc[ommand] ユーザ定義コマンドの削除 |:delfunction| :delf[unction] ユーザ定義関数の削除 |:diffupdate| :dif[fupdate] 'diff'バッファを更新する |:diffget| :diffg[et] カレントバッファの差異を他方に合わせる +|:diffoff| :diffo[ff] diff モードをオフにする |:diffpatch| :diffp[atch] パッチを適用した新しい差分バッファを作成する |:diffput| :diffpu[t] 他方の差異をカレントバッファに合わせる |:diffsplit| :diffs[plit] ファイルを開きその違いを表示する @@ -1147,6 +1197,7 @@ You found it, Arthur! *holy-grail* |:dsearch| :ds[earch] マクロ定義(#define)を表示する |:dsplit| :dsp[lit] ウィンドウを分割し #define へジャンプ |:edit| :e[dit] ファイルの編集 +|:earlier| :ea[rlier] バッファを時間的に前の状態に戻す。アンドゥ |:echo| :ec[ho] 式の結果を表示する |:echoerr| :echoe[rr] :echoと同じだが、エラー表示し、履歴に残す |:echohl| :echoh[l] echoコマンドで使用する強調表示を設定する @@ -1156,6 +1207,7 @@ You found it, Arthur! *holy-grail* |:elseif| :elsei[f] :if コマンドと一緒に使用する |:emenu| :em[enu] 名前を指定してメニューを実行 |:endif| :en[dif] 直前の :if の終了 +|:endfor| :endfo[r] 直前の :for の終了 |:endfunction| :endf[unction] ユーザ定義関数の終了 |:endtry| :endt[ry] 直前の:tryを終了する |:endwhile| :endw[hile] 直前の :while の終了 @@ -1163,6 +1215,7 @@ You found it, Arthur! *holy-grail* |:ex| :ex ":edit" と同じ。 |:execute| :exe[cute] 式の結果を実行する |:exit| :exi[t] ":xit" と同じ。 +|:exusage| :exu[sage] Exコマンドの概観 |:file| :f[ile] カレントファイルの名前を設定または表示 |:files| :files バッファリストの全ファイルを一覧表示 |:filetype| :filet[ype] ファイルタイプ検出の on/off 切換 @@ -1176,12 +1229,13 @@ You found it, Arthur! *holy-grail* |:folddoopen| :foldd[oopen] 閉じている折畳以外の行にコマンドを実行する |:folddoclosed| :folddoc[losed] 閉じている折畳の中の行にコマンドを実行する |:foldopen| :foldo[pen] 折畳を開く +|:for| :for for ループ |:function| :fu[nction] ユーザ定義関数を定義 |:global| :g[lobal] パターンにマッチした行でコマンドを実行する |:goto| :go[to] バッファ内の指定したバイト数の場所へジャンプ |:grep| :gr[ep] 'grepprg' を実行し、最初にマッチした位置へジャ ンプ -|:grepadd| :grepa[dd] grepと同じだが、結果を現在のリストへ加える +|:grepadd| :grepa[dd] :grepと同じだが、結果を現在のリストへ加える |:gui| :gu[i] GUI をスタートする |:gvim| :gv[im] GUI をスタートする |:hardcopy| :ha[rdcopy] テキストをプリンタに出力する @@ -1215,25 +1269,70 @@ You found it, Arthur! *holy-grail* |:join| :j[oin] 行の結合 |:jumps| :ju[mps] ジャンプリストの表示 |:k| :k マークを設定 +|:keepalt| :keepa[lt] 代替ファイルを変更せずにコマンドを実行する |:keepmarks| :kee[pmarks] マークを変更せずにコマンドを実行する |:keepjumps| :keepj[jumps] マークやジャンプリストを変更せずにコマンドを実 行する +|:lNext| :lN[ext] ロケーションリストの前の項目の位置へ移動 +|:lNfile| :lNf[ile] 前のファイルの最後の項目の位置へ移動 |:list| :l[ist] 行を表示 +|:laddexpr| :lad[dexpr] exprからロケーションリストの項目を追加 +|:laddbuffer| :laddb[uffer] バッファからロケーションリストの項目を追加 +|:laddfile| :laddf[ile] 現在のロケーションリストに項目を追加 |:last| :la[st] 引数リストの最後のファイルを編集 |:language| :lan[guage] 言語(ロケール)を設定する +|:later| :lat[er] バッファを時間的に新しい状態に戻す。リドゥ +|:lbuffer| :lb[uffer] バッファからロケーションリストを解釈し、 + 最初のエラーへジャンプ |:lcd| :lc[d] ウィンドウのカレントディレクトリを変更する |:lchdir| :lch[dir] ウィンドウのカレントディレクトリを変更する +|:lclose| :lcl[ose] ロケーションウィンドウを閉じる +|:lcscope| :lcs[cope] ":cscope"と同様だがロケーションリストを使う |:left| :le[ft] 行を左寄せに整形 |:leftabove| :lefta[bove] ウィンドウが左もしくは上に分割されるようにする |:let| :let 変数またはオプションに値を設定する +|:lexpr| :lex[pr] 式からロケーションリストを読み込み、最初のエラ + ーへジャンプする +|:lfile| :lf[ile] ファイルからロケーションリストを読み込み、最初 + のエラーへジャンプする +|:lfirst| :lfir[st] 指定されたロケーションへジャンプする。デフォル + トは最初のロケーション。 +|:lgetbuffer| :lgetb[uffer] バッファからロケーションリストを取得する +|:lgetexpr| :lgete[xpr] 式からロケーションリストを取得する +|:lgetfile| :lg[etfile] ファイルからロケーションリストを取得する +|:lgrep| :lgr[ep] 'grepprg'を実行し、最初のマッチへジャンプする +|:lgrepadd| :lgrepa[dd] :grepと同様だが現在のリストに追加する +|:lhelpgrep| :lh[elpgrep] ":helpgrep"と同様だがロケーションリストを使う +|:ll| :ll 特定のロケーションへ移動する +|:llast| :lla[st] 特定のロケーションへ移動する。デフォルトは最後 + のロケーション +|:llist| :lli[st] 全てのロケーションをリストする +|:lmake| :lmak[e] 外部プログラム'makeprg'を実行、エラーメッセー + ジを解釈する。 |:lmap| :lm[ap] ":map!"と同だが、Lang-Argモードも対象 |:lmapclear| :lmapc[lear] ":mapclear!"と同じだが、Lang-Argモードも対象 +|:lnext| :lne[xt] 次のロケーションへ移動 +|:lnewer| :lnew[er] 新しいロケーションリストへ移動 +|:lnfile| :lnf[ile] 次のファイルの最初のロケーションへ移動 |:lnoremap| :ln[oremap] ":noremap!"と同じだが、Lang-Argモードも対象 |:loadkeymap| :loadk[eymap] 次の行からEOFまでキーマップをロードする |:loadview| :lo[adview] カレントウィンドウにビューを読み込む |:lockmarks| :loc[kmarks] マークを調整せずにコマンドを実行する -|:lunmap| :lu[nmap] ":unmap!"と同じだが、Lang-Argモードも対象 +|:lockvar| :lockv[ar] 変数をロックする +|:lolder| :lol[der] 以前のロケーションリストへ移動 +|:lopen| :lope[n] ロケーションウィンドウを開く +|:lprevious| :lp[revious] 前のロケーションへ移動 +|:lpfile| :lpf[ile] 前のファイルの最後のロケーションへ移動 +|:lrewind| :lr[ewind] 指定されたロケーションへ移動。デフォルトは最初 + のロケーション |:ls| :ls すべてのバッファを表示 +|:ltag| :lt[ag] タグへジャンプし、マッチしたタグをロケーション + リストに追加する +|:lunmap| :lu[nmap] ":unmap!"と同じだが、Lang-Argモードも対象 +|:lvimgrep| :lv[imgrep] ファイルからパターンを検索する +|:lvimgrepadd| :lvimgrepa[dd] :vimgrepと同様だが、ロケーションリストに追加す + る +|:lwindow| :lw[indow] ロケーションウィンドウを開閉する |:move| :m[ove] 行を移動する |:mark| :ma[rk] マークを設定 |:make| :mak[e] 外部プログラム'makeprg'を実行し、エラーメッ @@ -1248,9 +1347,13 @@ You found it, Arthur! *holy-grail* |:messages| :mes[sages] 直前に表示されたメッセージの表示 |:mkexrc| :mk[exrc] 現在のマップと設定をファイルに書き出す |:mksession| :mks[ession] セッション情報をファイルに書き出す +|:mkspell| :mksp[ell] スペルファイル .splを生成する |:mkview| :mkvie[w] カレントウィンドウのビューをファイルに保存する |:mkvimrc| :mkv[imrc] 現在のマップと設定をファイルに書き出す |:mode| :mod[e] スクリーンモードを表示または変更する +|:mzscheme| :mz[scheme] MzSchemeコマンドを実行する +|:mzfile| :mzf[ile] MzSchemeスクリプトファイルを実行する +|:nbkey| :nb[key] キーをNetbeansに渡す |:next| :n[ext] 引数リストの次のファイルを開く |:new| :new 新規に空のウィンドウを作成する |:nmap| :nm[ap] ノーマルモードを対象とする ":map" コマンド @@ -1258,7 +1361,7 @@ You found it, Arthur! *holy-grail* |:nmenu| :nme[nu] ノーマルモードのメニューを追加する |:nnoremap| :nn[oremap] ノーマルモードを対象とする ":noremap" コマンド |:nnoremenu| :nnoreme[nu] ノーマルモードを対象とする ":noremenu" コマン - ド +|:noautocmd| :noa[utocmd] 自動コマンドを実行せずにコマンドを実行する |:noremap| :no[remap] 再マップされないマップを定義する |:nohlsearch| :noh[lsearch] 一時的に'hlsearch'の強調表示をやめる |:noreabbrev| :norea[bbrev] 再マップされない短縮入力を定義する @@ -1281,10 +1384,14 @@ You found it, Arthur! *holy-grail* |:ounmap| :ou[nmap] Operator-pending モードを対象とした ":unmap" コマンド |:ounmenu| :ounme[nu] Operator-pending モードのメニューを削除 -|:print| :p[rint] 行単位で印刷する |:pclose| :pc[lose] プレビューウィンドウを閉じる |:pedit| :ped[it] プレビューウィンドウでファイルを開く |:perl| :pe[rl] Perl コマンドを実行 +|:print| :p[rint] 行単位で印刷する +|:profdel| :profd[el] 関数やスクリプトのプロファイリングを停止する +|:profile| :prof[ile] 関数やスクリプトのプロファイリングをする +|:promptfind| :pro[mtfind] GUIの検索ダイアログを開く +|:promptrepl| :promtr[epl] GUIの検索・置換ダイアログを開く |:perldo| :perld[o] 1行ずつ Perl コマンドを実行 |:pop| :po[p] タグスタックの1つ古いエントリへジャンプ |:popup| :pop[up] 指定した名前のメニューをポップアップ表示する @@ -1336,6 +1443,7 @@ You found it, Arthur! *holy-grail* |:substitute| :s[ubstitute] テキストの置換 |:sNext| :sN[ext] ウィンドウを分割して、引数リストの前のファイル を開く +|:sandbox| :san[dbox] サンドボックスでコマンドを実行する |:sargument| :sa[rgument] ウィンドウを分割して、引数リストの指定ファイル を開く |:sall| :sal[l] 引数リストのすべてのファイルをウィンドウを作成 @@ -1379,11 +1487,23 @@ You found it, Arthur! *holy-grail* |:slast| :sla[st] ウィンドウを分割して引数リストの最後のファイル を開く |:smagic| :sm[agic] 'magic' オプションの下で :substitute を実行 +|:smap| :sma[p] ":map"と同様。選択モード用 +|:smapclear| :smapc[lear] 選択モードのすべてのマップを削除する +|:smenu| :sme[nu] 選択モードのメニューを追加する |:snext| :sn[ext] ウィンドウを分割して引数リストの次のファイルを 開く |:sniff| :sni[ff] sniffにリクエストを送信する |:snomagic| :sno[magic] 'nomagic' オプションの下で :substitute を実行 +|:snoremap| :snor[emap] ":noremap"と同様。選択モード用 +|:snoremenu| :snoreme[nu] ":noremenu"と同様。選択モード用 +|:sort| :sor[t] 行をソートする |:source| :so[urce] Vim or Ex コマンドをファイルから読み込む +|:spelldump| :spelld[ump] ウィンドウを分割し、正しい単語を列挙する +|:spellgood| :spe[llgood] スペルチェック用に正しい単語を登録する +|:spellinfo| :spelli[nfo] 読み込んでいるスペルファイルの情報を表示する +|:spellrepall| :spellr[epall] 最後の|z=|と同様にすべての間違った単語を置換 +|:spellundo| :spellu[ndo] 正しいまたは間違った単語を削除 +|:spellwrong| :spellw[rong] スペリングの間違いを登録する |:split| :sp[lit] カレントウィンドウを分割 |:sprevious| :spr[evious] ウィンドウを分割して引数リストの前のファイルを 開く @@ -1392,10 +1512,14 @@ You found it, Arthur! *holy-grail* |:stop| :st[op] Vimをサスペンドする |:stag| :sta[g] ウィンドウを分割して、タグへジャンプする |:startinsert| :star[tinsert] 挿入モードを開始する +|:startgreplace| :startg[replace] バーチャル上書きモードを開始する +|:startreplace| :startr[eplace] 上書きモードを開始する |:stopinsert|| :stopi[nsert] 挿入モードを終了する |:stjump| :stj[ump] ウィンドウを分割して、":tjump" を実行 |:stselect| :sts[elect] ウィンドウを分割して、":tselect" を実行 |:sunhide| :sun[hide] ":unhide" と同じ。 +|:sunmap| :sunm[ap] ":unmap"と同様。選択モード用 +|:sunmenu| :sunme[nu] 選択モードのメニューを削除する |:suspend| :sus[pend] ":stop" と同じ。 |:sview| :sv[iew] ウィンドウを分割してファイルを読み込み専用 で開く @@ -1404,6 +1528,21 @@ You found it, Arthur! *holy-grail* |:syncbind| :sync[bind] ウィンドウのスクロール状態を同期する |:t| :t ":copy" と同じ。 |:tNext| :tN[ext] 後方へ検索し一致したタグ位置へジャンプ +|:tabNext| :tabN[ext] 前のタブページへ移動 +|:tabclose| :tabc[lose] 現在のタブページを閉じる +|:tabdo| :tabdo 各タブページでコマンドを実行する +|:tabedit| :tabe[dit] 新しいタブページでファイルを開く +|:tabfind| :tabf[ind] 'path'からファイルを探し新しいタブページで開く +|:tabfirst| :tabfir[st] 最初のタブページへ移動 +|:tablast| :tabl[ast] 最後のタブページへ移動 +|:tabmove| :tabm[ove] タブページの位置を移動 +|:tabnew| :tabnew 新しいタブページでファイルを編集する +|:tabnext| :tabn[ext] 次のタブページへ移動 +|:tabonly| :tabo[nly] 現在のタブページ以外をすべて閉じる +|:tabprevious| :tabp[revious] 前のタブページへ移動 +|:tabrewind| :tabr[ewind] 最初のタブページへ移動 +|:tabs| :tabs タブページとその中身を列挙 +|:tab| :tab 新しいウィンドウを開くとき新しいタブを作る |:tag| :ta[g] タグを検索しジャンプする |:tags| :tags タグスタックの内容を表示 |:tcl| :tc[l] Tcl コマンドを実行 @@ -1426,10 +1565,13 @@ You found it, Arthur! *holy-grail* |:tunmenu| :tu[nmenu] ツールチップメニューを削除 |:try| :try コマンドを実行し発生したエラーや例外を処理する |:undo| :u[ndo] 最後の変更を取り消す +|:undojoin| :undoj[oin] 次の変更を前のアンドゥブロックと連結する +|:undolist| :undol[ist] アンドゥツリーのリーフを列挙する |:unabbreviate| :una[bbreviate] 短縮入力を削除 |:unhide| :unh[ide] バッファリストのメモリにロードされているすべて のバッファをウィンドウを作成して開く |:unlet| :unl[et] 変数を削除 +|:unlockvar| :unlo[ckvar] 変数をアンロックする |:unmap| :unm[ap] マップを削除 |:unmenu| :unme[nu] メニューを削除 |:update| :up[date] バッファ内容が変更されていれば、ファイルに書 @@ -1438,18 +1580,21 @@ You found it, Arthur! *holy-grail* |:version| :ve[rsion] バージョン番号その他の情報を表示 |:verbose| :verb[ose] 'verbose'を一時設定してコマンドを実行する |:vertical| :vert[ical] ウィンドウが垂直分割されるようにする +|:vimgrep| :vim[grep] 複数ファイルからパターンを検索する +|:vimgrepadd| :vimgrepa[dd] :vimgrepと同様だが現在のリストに追加 |:visual| :vi[sual] ":edit" と同じ、ただし "Ex" モードから抜ける。 +|:viusage| :viu[sage] ノーマルモードコマンドの概観 |:view| :vie[w] 読み込み専用でファイルを開く -|:vmap| :vm[ap] ビジュアルモードを対象とする ":map" コマンド -|:vmapclear| :vmapc[lear] ビジュアルモードのマッピングをすべて削除 -|:vmenu| :vme[nu] ビジュアルモードのメニューを追加 -|:vnoremap| :vn[oremap] ビジュアルモードを対象とする ":noremap" - コマンド +|:vmap| :vm[ap] ビジュアル・セレクトモードを対象とする ":map" コマンド +|:vmapclear| :vmapc[lear] ビジュアル・セレクトモードのマッピングをすべて削除 +|:vmenu| :vme[nu] ビジュアル・セレクトモードのメニューを追加 |:vnew| :vne[w] 新しいウィンドウを垂直分割して作る -|:vnoremenu| :vnoreme[nu] ビジュアルモードを対象とする ":noremenu" +|:vnoremap| :vn[oremap] ビジュアル・セレクトモードを対象とする ":noremap" + コマンド +|:vnoremenu| :vnoreme[nu] ビジュアル・セレクトモードを対象とする ":noremenu" コマンド |:vsplit| :vs[plit] カレントウィンドウを垂直分割する -|:vunmap| :vu[nmap] ビジュアルモードを対象とする ":unmap" コマン +|:vunmap| :vu[nmap] ビジュアル・セレクトモードを対象とする ":unmap" コマン ド |:vunmenu| :vunme[nu] ビジュアルモードのメニューを削除 |:windo| :windo 各ウィンドウに対してコマンドを実行する @@ -1474,6 +1619,13 @@ You found it, Arthur! *holy-grail* |:xit| :x[it] バッファが変更されていたら保存し、ウィンドウ もしくは Vim を終了 |:xall| :xa[ll] ":wqall" と同じ。 +|:xmapclear| :xmapc[lear] ビジュアルモード時のマッピングを全て削除する +|:xmap| :xm[ap] ":map"と同様。ビジュアルモード用 +|:xmenu| :xme[nu] ビジュアルモード時にメニューを追加する +|:xnoremap| :xn[oremap] ":noremap"と同様。ビジュアルモード用 +|:xnoremenu| :xnoreme[nu] ":noremenu"と同様。ビジュアルモード用 +|:xunmap| :xu[nmap] ":unmap"と同様。ビジュアルモード用 +|:xunmenu| :xunme[nu] ビジュアルモード時にメニューを削除する |:yank| :y[ank] 行をレジスタへヤンク |:z| :z 行を表示 |:~| :~ 直前に実行した ":substitute" を実行 diff --git a/ja/insert.jax b/ja/insert.jax index a7a04de07..1fc529fb7 100644 --- a/ja/insert.jax +++ b/ja/insert.jax @@ -50,13 +50,13 @@ ON/OFFと切り替えられてしまうのをどう避けるかを示す、'lang 文字 アクション ~ ----------------------------------------------------------------------- *i_CTRL-[* *i_<Esc>* -<Esc> or CTRL-[ 挿入/置換モードを終了し、ノーマルモードに戻る。省略を終了す - る。 +<Esc> or CTRL-[ 挿入/置換モードを終了し、ノーマルモードに戻る。短縮入力を終了 + する。 Note: キーボードによっては<Esc>が押し難いかもしれないが、その 時にはCTRL-[を使うようにする。 *i_CTRL-C* -CTRL-C 挿入モードを終了し、ノーマルモードに戻る。省略語はチェックしな - い。 +CTRL-C 挿入モードを終了し、ノーマルモードに戻る。短縮入力はチェック + しない。 *i_CTRL-@* CTRL-@ 直前に挿入されたテキストをもう一度挿入し、挿入を終了する。{Vi: @@ -106,11 +106,11 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* レジスタの内容を挿入する。CTRL-Rをタイプしてから2つ目の文字を タイプするまで、レジスタの名前の入力が期待されていることを示す ため、'"'が表示される。 - テキストはタイプしたかのように挿入されるが、マッピングや省略の - 展開はされない。'textwidth'や'formatoptions'や'autoindent'のよ - うなオプションが設定されている場合には、入力されたテキストに対 - して効力を持つ。これは"p"コマンドやマウスによる貼り付けとは、 - 違う動作になる。 + テキストはタイプしたかのように挿入されるが、マッピングや短縮入 + 力の展開はされない。'textwidth'や'formatoptions'や'autoindent' + のようなオプションが設定されている場合には、入力されたテキスト + に対して効力を持つ。これは"p"コマンドやマウスによる貼り付けと + は、違う動作になる。 特別なレジスタ: '"' 最後に削除されたりヤンクされたテキストの入って いる、名前なしレジスタ @@ -228,7 +228,7 @@ CTRL-^ 入力言語を切替える。 {Vi にはない} *i_CTRL-]* -CTRL-] 文字を入れることなく、省略をトリガーする。{Vi にはない} +CTRL-] 文字を入れることなく、短縮入力をトリガーする。{Vi にはない} *i_<Insert>* <Insert> 挿入と置換モードを交互に切り替える。{Vi にはない} From 8dcc7433923bf9e566d01af55482f8ee9868ec87 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Fri, 15 Sep 2006 22:21:04 +0000 Subject: [PATCH 049/783] fix: update howto to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@49 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/howto.txt | 4 ++-- ja/howto.jax | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/en/howto.txt b/en/howto.txt index ac6343f0e..59878b8fd 100644 --- a/en/howto.txt +++ b/en/howto.txt @@ -1,4 +1,4 @@ -*howto.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*howto.txt* For Vim version 7.0. Last change: 2006 Apr 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -75,7 +75,7 @@ How to ... *howdoi* *how-do-i* *howto* *how-to* |auto-setting| set options automatically |term-dependent-settings| set options depending on terminal name |save-settings| save settings -|:quote| comment my exrc/vimrc/gvimrc files +|:quote| comment my .vim files |'helpheight'| change the default help height |'highlight'| set various highlighting modes |'title'| set the window title diff --git a/ja/howto.jax b/ja/howto.jax index cce79da5e..4dcfcb9fc 100644 --- a/ja/howto.jax +++ b/ja/howto.jax @@ -1,10 +1,10 @@ COMMENT: HOW TOマニュアル -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*howto.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*howto.txt* For Vim version 7.0. Last change: 2006 Apr 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -81,7 +81,7 @@ How to ... *howdoi* *how-do-i* *howto* *how-to* |auto-setting| オプションを自動的にセットする |term-dependent-settings| 端末の名前によってオプションをセットする |save-settings| 設定を保存する -|:quote| exrc/vimrc/gvimrc ファイルでのコメント +|:quote| .vim ファイルでのコメント |'helpheight'| ヘルプのデフォルトの高さを変更する |'highlight'| さまざまなハイライティングモードをセットする |'title'| ウインドーのタイトルをセットする From 13139f6b45fba24b298c29e190ce4067bdf2066f Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 16 Sep 2006 00:39:56 +0000 Subject: [PATCH 050/783] fix: update vi_diff to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@50 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/vi_diff.txt | 292 ++++++++++++++++++++++++++++++++++-------------- ja/vi_diff.jax | 294 +++++++++++++++++++++++++++++++++++-------------- 2 files changed, 416 insertions(+), 170 deletions(-) diff --git a/en/vi_diff.txt b/en/vi_diff.txt index 036e56247..466a049f7 100644 --- a/en/vi_diff.txt +++ b/en/vi_diff.txt @@ -1,4 +1,4 @@ -*vi_diff.txt* For Vim version 6.3. Last change: 2004 Mar 26 +*vi_diff.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -14,19 +14,31 @@ Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing is ":open". There are probably a lot of small differences (either because Vim is missing something or because Posix is beside the mark). -1. Missing commands |missing-commands| +1. Simulated command |simulated-command| 2. Missing options |missing-options| 3. Limits |limits| 4. The most interesting additions |vim-additions| 5. Other vim features |other-features| 6. Command-line arguments |cmdline-arguments| +7. POSIX compliance |posix-compliance| ============================================================================== -1. Missing commands *missing-commands* +1. Simulated command *simulated-command* -This command is in Vi, but not in Vim: +This command is in Vi, but Vim only simuates it: -:o[pen] {Vi: start editing in open mode} *:o* *:op* *:open* + *:o* *:op* *:open* +:[range]o[pen] Works like |:visual|: end Ex mode. + {Vi: start editing in open mode} + +:[range]o[pen] /pattern/ As above, additionally move the cursor to the + column where "pattern" matches in the cursor + line. + +Vim does not support open mode, since it's not really useful. For those +situations where ":open" would start open mode Vim will leave Ex mode, which +allows executing the same commands, but updates the whole screen instead of +only one line. ============================================================================== 2. Missing options *missing-options* @@ -45,11 +57,9 @@ mesg boolean (default on) *'mesg'* novice boolean (default off) *'novice'* open boolean (default on) *'open'* optimize (op) boolean (default off) *'optimize'* *'op'* -prompt boolean (default on) *'prompt'* redraw boolean (default off) *'redraw'* slowopen (slow) boolean (default off) *'slowopen'* *'slow'* sourceany boolean (default off) *'sourceany'* -window (wi) number (default 23) *'window'* *'wi'* w300 number (default 23) *'w300'* w1200 number (default 23) *'w1200'* w9600 number (default 23) *'w9600'* @@ -77,7 +87,9 @@ Length of an expanded string option Maximum display width Unix and Win32: 1024 characters, otherwise 255 characters Maximum lhs of a mapping 50 characters. -Number of highlighting different types: 223 +Number of different highlighting types: over 30000 +Range of a Number variable: -2147483648 to 2147483647 (more on 64 bit + systems) Information for undo and text in registers is kept in memory, thus when making (big) changes the amount of (virtual) memory available limits the number of @@ -91,13 +103,12 @@ The option 'maxmem' ('mm') is used to set the maximum memory used for one buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for all buffers (in kilobytes). The defaults depend on the system used. For the Amiga and MS-DOS, 'maxmemtot' is set depending on the amount of memory -available. If you don't like Vim to swap to a file, set 'maxmem' and -'maxmemtot' to a very large value. The swap file will then only be used for -recovery. If you don't want a swap file at all, set 'updatecount' to 0, or -use the "-n" argument when starting Vim. Note that the 'maxmem' option is -only used when a buffer is created. Changing this option does not affect -buffers that have already been loaded. Thus you can set it to different -values for different files. 'maxmemtot' works always. +available. +These are not hard limits, but tell Vim when to move text into a swap file. +If you don't like Vim to swap to a file, set 'maxmem' and 'maxmemtot' to a +very large value. The swap file will then only be used for recovery. If you +don't want a swap file at all, set 'updatecount' to 0, or use the "-n" +argument when starting Vim. ============================================================================== 4. The most interesting additions *vim-additions* @@ -111,7 +122,8 @@ Vi compatibility. |'compatible'| :set nocompatible Or start Vim with the "-N" argument: vim -N - This is done automatically if you have a .vimrc file. See |startup|. + Vim starts with 'nocompatible' automatically if you have a .vimrc + file. See |startup|. The 'cpoptions' option can be used to set Vi compatibility on/off for a number of specific items. @@ -130,17 +142,23 @@ Support for different systems. - Macintosh - Risc OS - IBM OS/390 + Note that on some systems features need to be disabled to reduce + resource usage, esp. on MS-DOS. For some outdated systems you need to + use an older Vim version. Multi level undo. |undo| 'u' goes backward in time, 'CTRL-R' goes forward again. Set option 'undolevels' to the number of changes to be remembered (default 1000). - Set 'undolevels' to 0 for a vi-compatible one level undo. Set it to + Set 'undolevels' to 0 for a vi-compatible one level undo. Set it to -1 for no undo at all. - When all changes in a buffer have been undone, the buffer is not considered changed anymore. You can exit it with :q, without <!>. + When undoing a few changes and then making a new change Vim will + create a branch in the undo tree. This means you can go back to any + state of the text, there is no risc of a change causing text to be + lost forever. |undo-tree| -Graphical User Interface (GUI) |gui| +Graphical User Interface (GUI). |gui| Included support for GUI: menu's, mouse, scrollbars, etc. You can define your own menus. Better support for CTRL/SHIFT/ALT keys in combination with special keys and mouse. Supported for various @@ -153,58 +171,78 @@ Multiple windows and buffers. |windows.txt| can still be loaded (and changed) but not displayed in a window. This is called a hidden buffer. Many commands and options have been added for this facility. + Vim can also use multiple tab pages, each with one or more windows. A + line with tab labels can be used to quickly switch between these pages. + |tab-page| Syntax highlighting. |:syntax| Vim can highlight keywords, patterns and other things. This is - defined by a number of ":syntax" commands, and can be made to + defined by a number of |:syntax| commands, and can be made to highlight most languages and file types. A number of files are included for highlighting the most common languages, like C, C++, Java, Pascal, Makefiles, shell scripts, etc. The colors used for highlighting can be defined for ordinary terminals, color terminals - and the GUI with the ":highlight" command. - -Folding |folding| + and the GUI with the |:highlight| command. A convenient way to do + this is using a |:colorscheme| command. + The highlighted text can be exported as HTML. |convert-to-HTML| + Other items that can be highlighted are matches with the search string + |'hlsearch'|, matching parens |matchparen| and the cursor line and + column |'cursorline'| |'cursorcolumn'|. + +Spell checking. |spell| + When the 'spell' option is set Vim will highlight spelling mistakes. + About 40 languages are currently supported, selected with the + 'spellang' option. In source code only comments and strings are + checked for spelling. + +Folding. |folding| A range of lines can be shown as one "folded" line. This allows overviewing a file and moving blocks of text around quickly. Folds can be created manually, from the syntax of the file, by indent, etc. -Plugins |add-plugin| +Diff mode. |diff| + Vim can show two versions of a file with the differences highlighted. + Parts of the text that are equal are folded away. Commands can be + used to move text from one version to the other. + +Plugins. |add-plugin| The functionality can be extended by dropping a plugin file in the right directory. That's an easy way to start using Vim scripts written by others. Plugins can be for all kind of files, or specifically for a filetype. Repeat a series of commands. |q| - "q{c}" starts recording typed characters into named register {c} - (append to the register if register name is uppercase). A subsequent - "q" stops recording. The register can then be executed with the - "@{c}" command. This is very useful to repeat a complex action. + "q{c}" starts recording typed characters into named register {c}. + A subsequent "q" stops recording. The register can then be executed + with the "@{c}" command. This is very useful to repeat a complex + action. Flexible insert mode. |ins-special-special| The arrow keys can be used in insert mode to move around in the file. This breaks the insert in two parts as far as undo and redo is concerned. - CTRL-O can be used to execute a single command-mode command. This is - almost the same as hitting <Esc>, typing the command and doing "a". + CTRL-O can be used to execute a single Normal mode command. This is + almost the same as hitting <Esc>, typing the command and doing |a|. Visual mode. |Visual-mode| - Visual can be used to first highlight a piece of text and then give a - command to do something with it. This is an (easy to use) alternative - to first giving the operator and then moving to the end of the text - to be operated upon. "v" and "V" are used to start Visual mode. "v" - works on characters and 'V' on lines. Move the cursor to extend the - Visual part. It is shown highlighted on the screen. By typing "o" - the other end of the Visual text can be moved. The Visual text can - be affected by an operator: + Visual mode can be used to first highlight a piece of text and then + give a command to do something with it. This is an (easy to use) + alternative to first giving the operator and then moving to the end of + the text to be operated upon. + |v| and |V| are used to start Visual mode. |v| works on characters + and |V| on lines. Move the cursor to extend the Visual area. It is + shown highlighted on the screen. By typing "o" the other end of the + Visual area can be moved. The Visual area can be affected by an + operator: d delete c change y yank > or < insert or delete indent ! filter through external program = filter through indent - : start ":" command for the Visual lines. + : start |:| command for the Visual lines. gq format text to 'textwidth' columns J join lines ~ swap case @@ -212,15 +250,15 @@ Visual mode. |Visual-mode| U make uppercase Block operators. |visual-block| - With Visual a rectangular block of text can be selected. Start Visual - with CTRL-V. The block can be deleted ("d"), yanked ("y") or its case - can be changed ("~", "u" and "U"). A deleted or yanked block can be - put into the text with the "p" and "P" commands. + With Visual mode a rectangular block of text can be selected. Start + Visual mode with CTRL-V. The block can be deleted ("d"), yanked ("y") + or its case can be changed ("~", "u" and "U"). A deleted or yanked + block can be put into the text with the "p" and "P" commands. -Online help system. |:help| +Help system. |:help| Help is displayed in a window. The usual commands can be used to move around, search for a string, etc. Tags can be used to jump - around in the help files, just like hypertext links. The ":help" + around in the help files, just like hypertext links. The |:help| command takes an argument to quickly jump to the info on a subject. <F1> is the quick access to the help system. The name of the help index file can be set with the 'helpfile' option. @@ -231,7 +269,6 @@ Command-line editing and history. |cmdline-editing| forward/backward one character. The shifted right/left cursor keys can be used to move forward/backward one word. CTRL-B/CTRL-E can be used to go to the begin/end of the command-line. - |cmdline-history| The command-lines are remembered. The up/down cursor keys can be used to recall previous command-lines. The 'history' option can be set to @@ -259,9 +296,9 @@ Command-line completion. |cmdline-completion| all matches. CTRL-L will insert the longest common part of the matches. -Insert-mode completion |ins-completion| - In insert mode the CTRL-N and CTRL-P keys can be used to complete a - word that has previously been used. |i_CTRL-N| +Insert-mode completion. |ins-completion| + In Insert mode the CTRL-N and CTRL-P keys can be used to complete a + word that appears elsewhere. |i_CTRL-N| With CTRL-X another mode is entered, through which completion can be done for: |i_CTRL-X_CTRL-F| file names @@ -271,51 +308,64 @@ Insert-mode completion |ins-completion| |i_CTRL-X_CTRL-L| whole lines |i_CTRL-X_CTRL-]| words from the tags file |i_CTRL-X_CTRL-D| definitions or macros + |i_CTRL-X_CTRL-O| Omni completion: clever completion + specifically for a file type + etc. -Long line support |'wrap'| |'linebreak'| +Long line support. |'wrap'| |'linebreak'| If the 'wrap' option is off, long lines will not wrap and only part of them will be shown. When the cursor is moved to a part that is not shown, the screen will scroll horizontally. The minimum number of - columns to scroll can be set with the 'sidescroll' option. The "zh" - and "zl" commands can be used to scroll sideways. + columns to scroll can be set with the 'sidescroll' option. The |zh| + and |zl| commands can be used to scroll sideways. Alternatively, long lines are broken in between words when the 'linebreak' option is set. This allows editing a single-line paragraph conveniently (e.g. when the text is later read into a DTP - program). Move the cursor up/down with the "gk" and "gj" commands. + program). Move the cursor up/down with the |gk| and |gj| commands. Text formatting. |formatting| The 'textwidth' option can be used to automatically limit the line length. This supplements the 'wrapmargin' option of Vi, which was not - very useful. The "gq" operator can be used to format a piece of text - (for example, "gqap" formats the current paragraph). Commands for - text alignment: ":center", ":left" and ":right". + very useful. The |gq| operator can be used to format a piece of text + (for example, |gqap| formats the current paragraph). Commands for + text alignment: |:center|, |:left| and |:right|. -Extended search patterns |pattern| +Extended search patterns. |pattern| There are many extra items to match various text items. Examples: A "\n" can be used in a search pattern to match a line break. "x\{2,4}" matches "x" 2 to 4 times. "\s" matches a white space character. +Directory, remote and archive browsing. |netrw| + Vim can browse the file system. Simply edit a directory. Move around + in the list with the usual commands and press <Enter> to go to the + directory or file under the cursor. + This also works for remote files over ftp, http, ssh, etc. + Zip and tar archives can also be browsed. |tar| |zip| + Edit-compile-edit speedup. |quickfix| - The ":make" command can be used to run the compilation and jump to - the first error. Alternatively Vim can be started with the "-q" - option from the compiler. A file with compiler error messages is - interpreted. Vim starts editing at the first error. + The |:make| command can be used to run the compilation and jump to the + first error. A file with compiler error messages is interpreted. Vim + jumps to the first error. Each line in the error file is scanned for the name of a file, line number and error message. The 'errorformat' option can be set to a list of scanf-like strings to handle output from many compilers. - The ":cn" command can be used to jump to the next error. - ":cl" lists all the error messages. Other commands are available - (almost the same as with Manx's Z editor on the Amiga). + The |:cn| command can be used to jump to the next error. + |:cl| lists all the error messages. Other commands are available. The 'makeef' option has the name of the file with error messages. The 'makeprg' option contains the name of the program to be executed - with the ":make" command. + with the |:make| command. The 'shellpipe' option contains the string to be used to put the output of the compiler into the errorfile. -Improved indenting for C programs |'cindent'| +Finding matches in files. |:vimgrep| + Vim can search for a pattern in multiple files. This uses the + advanced Vim regexp pattern, works on all systems and also works to + search in compressed files. + +Improved indenting for programs. |'cindent'| When the 'cindent' option is on the indent of each line is automatically adjusted. C syntax is mostly recognized. The indent for various styles can be set with 'cinoptions'. The keys to trigger @@ -324,68 +374,85 @@ Improved indenting for C programs |'cindent'| Comments can be automatically formatted. The 'comments' option can be set to the characters that start and end a comment. This works best for C code, but also works for e-mail (">" at start of the line) and - other types of text. The "=" operator can be used to re-indent + other types of text. The |=| operator can be used to re-indent lines. -Searching for words in include files |include-search| - The "[i" command can be used to search for a match of the word under + For many other languages an indent plugin is present to support + automatic indenting. |30.3| + +Searching for words in included files. |include-search| + The |[i| command can be used to search for a match of the word under the cursor in the current and included files. The 'include' option can be set the a pattern that describes a command to include a file (the default is for C programs). - The "[I" command lists all matches, the "[ CTRL-I" command jumps to + The |[I| command lists all matches, the |[_CTRL-I| command jumps to a match. - The "[d", "[D" and "[ CTRL-D" commands do the same, but only for + The |[d|, |[D| and |[_CTRL-D| commands do the same, but only for lines where the pattern given with the 'define' option matches. -Automatic commands |autocommand| +Automatic commands. |autocommand| Commands can be automatically executed when reading a file, writing a file, jumping to another buffer, etc., depending on the file name. This is useful to set options and mappings for C programs, documentation, plain text, e-mail, etc. This also makes it possible to edit compressed files. -Scripts and Expressions |expression| - Commands have been added to form up a simple but powerful script - language. +Scripts and Expressions. |expression| + Commands have been added to form up a powerful script language. |:if| Conditional execution, which can be used for example to set options depending on the value of $TERM. |:while| Repeat a number of commands. + |:for| Loop over a list. |:echo| Print the result of an expression. |:let| Assign a value to an internal variable, option, etc. + Variable types are Number, String, List and Dictionary. |:execute| Execute a command formed by an expression. - etc. + |:try| Catch exceptions. + etc., etc. See |eval|. + Debugging and profiling are supported. |debug-scripts| |profile| + If this is not enough, an interface is provided to |Python|, |Ruby|, + |Tcl|, |Perl| and |MzScheme|. -Viminfo |viminfo-file| +Viminfo. |viminfo-file| The command-line history, marks and registers can be stored in a file that is read on startup. This can be used to repeat a search command or command-line command after exiting and restarting Vim. It is also - possible to jump right back to where the last edit stopped with "'0". + possible to jump right back to where the last edit stopped with |'0|. The 'viminfo' option can be set to select which items to store in the .viminfo file. This is off by default. -Mouse support |mouse-using| +Printing. |printing| + The |:hardcopy| command sends text to the printer. This can include + syntax highlighting. + +Mouse support. |mouse-using| The mouse is supported in the GUI version, in an xterm for Unix, for Linux with gpm, for MS-DOS, and Win32. It can be used to position the cursor, select the visual area, paste a register, etc. -Usage of key names |<>| |key-notation| +Usage of key names. |<>| |key-notation| Special keys now all have a name like <Up>, <End>, etc. This name can be used in mappings, to make it easy to edit them. -Editing binary files |edit-binary| +Editing binary files. |edit-binary| Vim can edit binary files. You can change a few characters in an executable file, without corrupting it. Vim doesn't remove NUL characters (they are represented as <NL> internally). |-b| command-line argument to start editing a binary file - |'binary'| Option set by "-b". Prevents adding an <EOL> for the + |'binary'| Option set by |-b|. Prevents adding an <EOL> for the last line in the file. -Multi-language support |multi-lang| +Multi-language support. |multi-lang| Files in double-byte or multi-byte encodings can be edited. There is UTF-8 support to be able to edit various languages at the same time, without switching fonts. |UTF-8| Messages and menus are available in different languages. +Move cursor beyond lines. + When the 'virtualedit' option is set the cursor can move all over the + screen, also where there is no text. This is useful to edit tables + and figures easily. + ============================================================================== 5. Other vim features *other-features* @@ -631,7 +698,7 @@ but "abc<NL>defabc<NL>defabc<NL>def" in Vim. In Command-line mode: -<Esc> terminates the command-line without executing it. In vi the command +<Esc> terminates the command-line without executing it. In vi the command line would be executed, which is not what most people expect (hitting <Esc> should always get you back to command mode). To avoid problems with some obscure macros, an <Esc> in a macro will execute the command. If you want a @@ -750,7 +817,7 @@ Only Vim is able to accept options in between and after the file names. --remote-wait Vim: edit the files in another Vim server and wait for it ---remote-wait-silent Vim: like --remote-wait, no complaits if not possible +--remote-wait-silent Vim: like --remote-wait, no complaints if not possible --role {role} Vim: GTK+ 2: set role of main window @@ -831,6 +898,8 @@ Only Vim is able to accept options in between and after the file names. -o[N] Vim: Open [N] windows, or one for each file. +-p[N] Vim: Open [N] tab pages, or one for each file. + -P {parent-title} Win32 Vim: open Vim inside a parent application window -q {name} Vim: Use {name} for quickfix error file. @@ -881,4 +950,57 @@ Only Vim is able to accept options in between and after the file names. @{cmdfile} Vile: use {cmdfile} as startup file. +============================================================================== +7. POSIX compliance *posix* *posix-compliance* + +In 2005 the POSIX test suite was run to check the compatiblity of Vim. Most +of the test was executed properly. There are the few things where Vim +is not POSIX compliant, even when run in Vi compatibility mode. + +Set the $VIM_POSIX environment variable to have 'cpoptions' include the POSIX +flags when Vim starts up. This makes Vim run as POSIX as it can. That's +a bit different from being Vi compatible. + +This is where Vim does not behave as POSIX specifies and why: + + *posix-screen-size* + The $COLUMNS and $LINES environment variables are ignored by Vim if + the size can be obtained from the terminal in a more reliable way. + Add the '|' flag to 'cpoptions' to have $COLUMNS and $LINES overrule + sizes obtained in another way. + + The "{" and "}" commands don't stop at a "{" in the original Vi, but + POSIX specifies it does. Add the '{' flag to 'cpoptions' if you want + it the POSIX way. + + The "D", "o" and "O" commands accept a count. Also when repeated. + Add the '#' flag to 'cpoptions' if you want to ignore the count. + + The ":cd" command fails if the current buffer is modified when the '.' + flag is present in 'cpoptions'. + + There is no ATTENTION message, the "A" flag is added to 'shortmess'. + +These are remarks about running the POSIX test suite: +- vi test 33 sometimes fails for unknown reasons +- vi test 250 fails; behavior will be changed in a new revision + http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html +- vi test 310 fails; exit code non-zero when any error occurred? +- ex test 24 fails because test is wrong. Changed between SUSv2 and SUSv3. +- ex tests 47, 48, 49, 72, 73 fail because .exrc file isn't read in silent + mode and $EXINIT isn't used. +- ex tests 76, 78 fail because echo is used instead of printf. (fixed) + Also: problem with \s not changed to space. +- ex test 355 fails because 'window' isn't used for "30z". +- ex test 368 fails because shell command isn't echoed in silent mode. +- ex test 394 fails because "=" command output isn't visible in silent mode. +- ex test 411 fails because test file is wrong, contains stray ':'. +- ex test 475 and 476 fail because reprint output isn't visible in silent mode. +- ex test 480 and 481 fail because the tags file has spaces instead of a tab. +- ex test 502 fails because .exrc isn't read in silent mode. +- ex test 509 fails because .exrc isn't read in silent mode. and exit code is + 1 instead of 2. +- ex test 534 fails because .exrc isn't read in silent mode. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/vi_diff.jax b/ja/vi_diff.jax index a43dbf4ca..c50120d9c 100644 --- a/ja/vi_diff.jax +++ b/ja/vi_diff.jax @@ -1,11 +1,12 @@ COMMENT: Viとの相違点 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: 村岡太郎<koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*vi_diff.txt* For Vim version 6.3. Last change: 2004 Mar 26 +*vi_diff.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -21,20 +22,30 @@ Vim は大体において POSIX 1003.2-1 に従っています。知られてい マンドは ":open" コマンドです。細かな違いはたぶんたくさんあります(Vimが間違っ ているか、Posixの指標がはずれているかのどちらか)。 -1. なくなっているコマンド |missing-commands| +1. シミュレートされているコマンド |simulated-command| 2. なくなっているオプション |missing-options| 3. 制限 |limits| 4. もっとも興味深い機能追加 |vim-additions| 5. Vim の他の特徴 |other-features| 6. コマンドライン引数 |cmdline-arguments| +7. POSIX 準拠 |posix-compliance| ============================================================================== -1. なくなっているコマンド *missing-commands* +1. シミュレートされているコマンド *missing-commands* -このコマンドは Vi にはありますが Vim ではなくなっています: +このコマンドは Vi にはありますが Vim ではシミュレートしているだけです。 -:o[pen] {Vi: オープンモードで編集を始める} *:o* *:op* *:open* + *:o* *:op* *:open* +:[range]o[pen] |:visual|と同様。Exモードを終了します。 + {Vi: オープンモードで編集を開始する} +:[range]o[pen] /pattern/ 上と同様で、さらに現在行の中で"pattern"にマ + ッチする桁へカーソルを移動します。 + +Vimにオープンモードはありません。まったく便利ではないからです。Viなら":open"で +オープンモードを開始しますが、VimではExモードを抜けます。その結果、Viの場合と +同じコマンドが実行できるようになります。ただ、1行だけを再描画するのでなく、画 +面全体を再描画する点が違います。 ============================================================================== 2. なくなっているオプション *missing-options* @@ -52,11 +63,9 @@ mesg 二者択一 (初期値 オン) *'mesg'* novice 二者択一 (初期値 オフ) *'novice'* open 二者択一 (初期値 オン) *'open'* optimize (op) 二者択一 (初期値 オフ) *'optimize'* *'op'* -prompt 二者択一 (初期値 オン) *'prompt'* redraw 二者択一 (初期値 オフ) *'redraw'* slowopen (slow) 二者択一 (初期値 オフ) *'slowopen'* *'slow'* sourceany 二者択一 (初期値 オフ) *'sourceany'* -window (wi) 数値 (初期値 23) *'window'* *'wi'* w300 数値 (初期値 23) *'w300'* w1200 数値 (初期値 23) *'w1200'* w9600 数値 (初期値 23) *'w9600'* @@ -86,7 +95,8 @@ Vim で編集できるファイルの制限はかなり少ないです。 {Vi: < 表示される最大の長さ Unix と Win32: 1024 文字か 256 文字 マッピングでの lhs の最大の長さ 50 文字 -異なったタイプのハイライトの数: 223 +異なるハイライトの種類の数: 30000以上 +数値変数の範囲: -2147483648 から 2147483647 (64ビットシステムではそれ以上) アンドゥとレジスターの中のテキストに関する情報はメモリーに保持されます。ですの で、使用可能な(仮想)メモリーの量を超えて(大きな)変更を行っている場合はアンドゥ @@ -97,18 +107,15 @@ Vim で編集できるファイルの制限はかなり少ないです。 {Vi: < メモリーの使い方を制限する -------------------------- -'maxmem' ( 'mm' ) オプションは一つのバッファーに使われるメモリーの最大の量(キ -ロバイトで)を決めるのに使います。'maxmemtot' はすべてのバッファーで使われるメ +'maxmem' ( 'mm' ) オプションは一つのバッファに使われるメモリーの最大の量(キ +ロバイトで)を決めるのに使います。'maxmemtot' はすべてのバッファで使われるメ モリーの最大の量(キロバイトで)を決めるのに使います。Amiga と MS-DOS では -'maxmemtot' は使えるメモリーの量に依存して設定されます。もし Vim がファイルに -スワップを行うのが嫌であれば 'maxmem' と 'maxmemtot' の値をかなり大きい値に設 -定しておきます。そうするとスワップファイルはリカバリーの時にのみ使われるように -なります。もしどんなスワップファイルも欲しくなければ 'updatecount' を 0 に設定 -するか、Vim を起動するときに "-n" 引数をつけます。'maxmem' オプションはバッファ -ーが作成されたときにのみ使われるということに注意してください。つまりこのオプショ -ンを変更してもすでにロードされているバッファーには影響がありません。ですのでそ -れぞれのファイルにそれぞれの値をセットすることもできます。'maxmemtot' は常に影 -響します。 +'maxmemtot' は使えるメモリーの量に依存して設定されます。 +これらは厳格な制限ではなく、いつテキストをスワップファイルに移動するかの目安で +す。もし Vim がファイルにスワップを行うのが嫌であれば 'maxmem' と'maxmemtot' +の値をかなり大きい値に設定しておきます。そうするとスワップファイルはリカバリー +の時にのみ使われるようになります。もしどんなスワップファイルも欲しくなければ +'updatecount' を 0 に設定するか、Vim を起動するときに "-n" 引数をつけます。 ============================================================================== 4. もっとも興味深い機能追加 *vim-additions* @@ -122,9 +129,10 @@ Vi コンパチビリティ |'compatible'| :set nocompatible それか Vim を "-N" 引数つきで起動してください: vim -N - もし .vimrc ファイルがあれば自動的にこれは行われます。|startup| も見て - ください。'cpoptions' オプションはたくさんの特定のアイテムに関する Vi - と同一の動作をするかどうかのオン/オフを切り替えることができます。 + もし .vimrc ファイルがあれば'nocompatible'つきでVimが起動します。 + |startup| も見てください。'cpoptions' オプションはたくさんの特定のアイ + テムに関する Viと同一の動作をするかどうかのオン/オフを切り替えることが + できます。 様々なシステムのサポート Vim は次のシステムで利用できます: @@ -142,6 +150,9 @@ Vi コンパチビリティ |'compatible'| - Macintosh - Risc OS - IBM OS/390 + Note: いくつかのシステムではリソース使用量を削減するために機能を無効に + する必要があります(特にMS-DOS)。いくつかの時代後れのシステムでは以前の + バージョンのVimを使わねばなりません。 多段アンドゥ |undo| 'u' は時をさかのぼり、'CTRL-R' は再び進めます。変更を覚えておく回数を @@ -149,9 +160,12 @@ Vi コンパチビリティ |'compatible'| を0にセットすると Vi コンパチブルのアンドゥになります。-1 にセットする とアンドゥできないようになります。 - あるバッファーに対する変更をすべてアンドゥした場合は、バッファーはなに + あるバッファに対する変更をすべてアンドゥした場合は、バッファはなに も変更されていないと見做されます。つまり <!> なしで :q で終了させること ができます。 + 変更をアンドゥしてその後新しい変更をすると、Vimのアンドゥツリーにブラ + ンチが作られます。これにより、テキストを永遠に失うという危険性なしにテ + キストをどの状態にでも戻すことができます。|undo-tree| グラフィカルユーザーインターフェース(GUI) |gui| GUI (メニュー、マウス、スクロールバー、などなど)のサポートが含められま @@ -161,12 +175,15 @@ Vi コンパチビリティ |'compatible'| フェース)、Win32 (Windows95 か、より最新のもの),BeOS, Amiga, Macintosh でサポートされています。 -複数のウインドーとバッファー |windows.txt| - Vim ではスクリーンをいくつかのウインドーに分けてそれぞれの中で異なるバ - ッファーを編集したり同じバッファーを別の場所で編集したりできます。バッ - ファーはウインドーに表示されていなくともロードして(変更を加えて)おくこ - ともできます。これは隠れたバッファーと呼ばれます。この機能のために多く +複数のウィンドウとバッファ |windows.txt| + Vim ではスクリーンをいくつかのウィンドウに分けてそれぞれの中で異なるバ + ッファーを編集したり同じバッファを別の場所で編集したりできます。バッ + ファーはウィンドウに表示されていなくともロードして(変更を加えて)おくこ + ともできます。これは隠れたバッファと呼ばれます。この機能のために多く のコマンドやオプションが追加されています。 + Vimはタブページを使うこともできます。各タブページは1個以上のウィンドウ + を含みます。タブラベルを表示する行を使ってこれらのタブを素早く切替える + ことができます。|tab-page| 構文ハイライト |:syntax| Vim ではキーワードやパターンやその他のものをハイライトすることができま @@ -175,7 +192,18 @@ Vi コンパチビリティ |'compatible'| Makefiles、シェルスクリプト、などなどの多くの一般的な言語のうちのほとん どのためのハイライト定義ファイルはすでに含まれています。ハイライトに使 われる色は普通の端末で定義することができ、色端末と GUI では - ":highlight" コマンドで定義できます。 + |:highlight| コマンドで定義できます。色を変更するのに便利な方法は + |:colorscheme|コマンドを使うことです。 + ハイライトされたテキストをHTMLにエクスポートすることができます + |convert-to-HTML|。ハイライトできる他の要素は、検索文字列のマッチ部分 + |'hlsearch'|、対応する括弧 |matchparen|、カーソル行とカーソル桁 + |'cursorline'| |'cursorcolumn'|です。 + +スペルチェック |spell| + オプション'spell'がセットされていると、スペリングの間違いがハイライト + されます。現在のところ約40の言語がサポートされています。言語はオプショ + ン'spellang'で選択できます。ソースコード中ではコメントと文字列だけがス + ペルチェックされます。 折畳み |folding| 複数行の範囲を一行の「折畳まれた」行として表示することができます。これ @@ -183,6 +211,11 @@ Vi コンパチビリティ |'compatible'| ことが可能になります。折畳みの設定は手動、ファイルのシンタックス、イン デント等々で設定することができます。 +Diffモード |diff| + ファイルの2つのバージョンの差分をハイライトして表示することができます。 + テキストの一致する部分は折り畳みされます。コマンドを使って片方のバージ + ョンのテキストをもう一方へ移動することができます。 + プラグイン |add-plugin| プラグインファイルを正しいディレクトリにただ置くだけで機能追加ができま す。これは他人が書いたVimスクリプトを使い始める簡単な方法です。プラグ @@ -190,36 +223,36 @@ Vi コンパチビリティ |'compatible'| ファイルタイプについて設定することも可能です。 一連のコマンドを繰り返す |q| - "q{c}"で名前付きレジスター{c}にタイプする文字の記録を始めます(もしそ - のレジスターの名前が大文字であった場合はそのレジスターに追加します)。後 - に続く "q" は記録を終了します。そしてレジスターにあるコマンドは "@{c}" - コマンドで実行することができます。これは複雑な動作を繰り返すときに非常 - に便利です。 + "q{c}"で名前付きレジスター{c}にタイプする文字の記録を始めます。後に続 + く"q" は記録を終了します。そしてレジスターにあるコマンドは"@{c}"コマン + ドで実行することができます。これは複雑な動作を繰り返すときに非常に便利 + です。 柔軟な挿入モード |ins-special-special| ファイルを動き回るのに矢印キーを挿入モードで使うことができます。このこ とはアンドゥとリドゥを考えると挿入モードが二つに分かれることになります - CTRL-O は一つのコマンドモードのコマンドを実行するのに使うことができま - す。これはつまり <Esc> キーを打ってコマンドを打ってからそれから 'a' を + CTRL-O は一つのノーマルモードのコマンドを実行するのに使うことができま + す。これはつまり <Esc> キーを打ってコマンドを打ってからそれから |a| を 打ったのとほとんど同じことです。 ビジュアルモード |Visual-mode| ビジュアルモードは、初めにいくつかのテキストを選択してからそれに対して コマンドを実行するのに使うことができます。これは初めに演算コマンドを与 えてからその演算を施すテキストの最後まで移動するコマンドを実行するもう - 一つの(簡単な)方法です。"v" と "V" はビジュアルモードを開始します。"v" - は文字ごとに選択し "V" は行ごとに選択します。カーソルを動かしてビジュ - アル部分を広げ、その部分はスクリーン上でハイライトされます。"o" を打つ - ことでビジュアルなテキスト部分の反対側の端が動かされることになります。 - ビジュアルなテキスト部分には次の演算を施すことができます: + 一つの(簡単な)方法です。 + |v| と |V| はビジュアルモードを開始します。|v|は文字ごとに選択し |V| + は行ごとに選択します。カーソルを動かしてビジュアル部分を広げ、その部分 + はスクリーン上でハイライトされます。"o" を打つことでビジュアルなテキス + ト部分の反対側の端が動かされることになります。ビジュアルなテキスト部分 + には次の演算を施すことができます: d 削除 c 変更 y ヤンク > or < インデントを挿入/削除 ! 外部プログラムを使ってフィルターを施す = インデントを通してフィルターを施す - : ビジュアルな行に対して ":" コマンドを始める + : ビジュアルな行に対して |:| コマンドを始める gq 'textwidth' 桁位置にテキストを整形する J 行を連結する ~ 大文字小文字を入れ換える @@ -233,11 +266,11 @@ Vi コンパチビリティ |'compatible'| きます。削除もしくはヤンクされたブロックは "p" か "P" コマンドでテキス トに挿入することができます。 -オンラインヘルプシステム |:help| - ヘルプはウインドーの中に表示されます。検索したりするテキストの中を移動 +ヘルプシステム |:help| + ヘルプはウィンドウの中に表示されます。検索したりするテキストの中を移動 する普通のコマンドはそのまま使えます。タグも複数のヘルプファイルの間を 移動するのに使え、ハイパーテキストのリンクをクリックするような感覚で - す。":help" コマンドは引数を取りますので検索したい情報に素早くジャンプ + す。|:help| コマンドは引数を取りますので検索したい情報に素早くジャンプ できます。<F1> を押して素早くヘルプシステムにアクセスすることもできま す。ヘルプファイルのインデックスファイルは 'helpfile' オプションで設定 することができます。 @@ -277,8 +310,8 @@ Vi コンパチビリティ |'compatible'| 分までを入力します。 挿入モードでの補完 |ins-completion| - 挿入モードで CTRL-N と CTRL-P を使うことで前に使われた単語を補完するこ - とができます。 |i_CTRL-N| + 挿入モードで CTRL-N と CTRL-P を使うことでどこかに現れる単語を補完する + ことができます。 |i_CTRL-N| CTRL-X を使うことでもう一つのモードに入ることができます。どの補完を行う ことができるかというと: |i_CTRL-X_CTRL-F| ファイル名 @@ -288,24 +321,26 @@ Vi コンパチビリティ |'compatible'| |i_CTRL-X_CTRL-L| すべての行 |i_CTRL-X_CTRL-]| タグファイルにある単語 |i_CTRL-X_CTRL-D| マクロ定義 + |i_CTRL-X_CTRL-O| オムニ補完: ファイルタイプに特化した賢い補完 + など。 長い行のサポート |'wrap'| |'linebreak'| 'wrap' オプションがオフであれば、長い行は折り返されずに行の一部分だけが 表示されます。カーソルが表示されていない部分に移動するとスクリーンも横 にスクロールします。横にスクロールする桁数の最小の値を 'sidescroll' オ - プションで設定することができます。"zh" と "zl" コマンドは横スクロールに + プションで設定することができます。|zh| と |zl| コマンドは横スクロールに 使うことができます。あるいは、'linebreak' オプションがセットされている 場合は長い行は単語の間で切られます。こうすることで段落を一つの行にして 編集することが容易になります(例: 後で編集中のテキストを DTP プログラム - に持っていく場合)。カーソルを上下するには "gk" と "gj" コマンドを使って + に持っていく場合)。カーソルを上下するには |gk| と |gj| コマンドを使って ください。 テキストの整形 |formatting| 'textwidth' オプションを設定することで行の長さを自動的に制限することが できます。このオプションはあまり便利ではなかった Vi での 'wrapmargin' - オプションを補助するものです。"gq" 演算コマンドはテキストの一部分を整 - 形するのに使うことができます(例えば、"gqap" は現在の段落を整形します)。 - テキストの位置に関するコマンドは ":center", ":left", ":right" です。 + オプションを補助するものです。|gq| 演算コマンドはテキストの一部分を整 + 形するのに使うことができます(例えば、|gqap| は現在の段落を整形します)。 + テキストの位置に関するコマンドは |:center|, |:left|, |:right| です。 拡張正規表現 |pattern| 様々なテキスト要素にマッチさせるための、多くの拡張正規表現の要素があり @@ -313,25 +348,35 @@ Vi コンパチビリティ |'compatible'| "x\{2,4}"は、"x"が2個から4個続くテキストにマッチします。 "\s"は空白文字にマッチします。 +ディレクトリ、リモート、アーカイブの閲覧 |netrw| + Vimはファイルシステムをブラウズすることができます。単にディレクトリを + 編集します(訳註: :e {directory} とする)。そのリスト中を普通のコマンド + を使って移動し、<Enter>を押すとカーソル下のディレクトリやファイルに移 + ります。 + これはftp, http, sshなど越しのリモートファイルにも機能します。 + zipとtarのアーカイブもブラウズすることができます。|tar| |zip| 編集-コンパイル-編集 をスピードアップする |quickfix| - ":make" コマンドを使うことでコンパイルしてから初めのエラーにジャンプす - ることができます。あるいは Vim を "-q" オプションをつけてコンパイラーか - ら起動します。コンパイラーのエラーメッセージが含まれるファイルが解析さ - れて Vim は初めのエラーの場所から編集を開始します。 + |:make| コマンドを使うことでコンパイルしてから初めのエラーにジャンプす + ることができます。コンパイラのエラーメッセージが書かれたファイルを解析 + できます。最初のエラーにジャンプします。 エラーファイルのそれぞれの行はファイルの名前、行番号、エラーメッセージ という風に調べられます。'errorformat' オプションは多くのコンパイラーか らの出力を扱うことができるように scanf のような形式の文字列のリストを指 定することができます。 - ":cn" コマンドは次のエラーにジャンプするのに使うことができます。":cl" + |:cn| コマンドは次のエラーにジャンプするのに使うことができます。|:cl| コマンドはすべてのエラーメッセージをリストします。他のコマンドも使うこ - とができます(ほとんどは Amiga での Manx's Z というエディターのコマンド - と同じです)。'makeef' オプションはエラーメッセージが含まれるファイルの - 名前を指定します。'makeprg' オプションは ":make" コマンドで実行するプロ + とができます。'makeef' オプションはエラーメッセージが含まれるファイルの + 名前を指定します。'makeprg' オプションは |:make| コマンドで実行するプロ グラムの名前を指定します。'shellpipe' オプションはコンパイラーからの出 力をエラーファイルに書き込むときに使われる文字列を指定します。 +複数のファイルから検索する |:vimgrep| + 複数のファイルからパターンを検索することができます。この機能はVimの高 + 度な正規表現パターンを使い、すべてのシステム上で機能し、圧縮されたファ + イルも検索できます。 + C プログラムのインデントを改善 |'cindent'| 'cindent' オプションがオンの時はそれぞれのインデントは自動的に調整され ます。C の文法はだいたい解釈されますし、さまざまなスタイルでのインデン @@ -341,21 +386,24 @@ C プログラムのインデントを改善 |'cindent'| コメントも自動的に整形することができ、'comments' オプションでどの文字が コメントをスタートさせ終了させるのかを指定することができます。この機能 は C のコードでもっともよく動作しますがメール(行の最初の ">")や他のタイ - プのテキストでもうまく動作します。"=" 演算コマンドで行を再インデントす + プのテキストでもうまく動作します。|=| 演算コマンドで行を再インデントす ることもできます。 + 他にも多くの言語に対して自動インデントをするためのインデントプラグイン + が提供されています。|30.3| + インクルードされるファイルの中から単語を探す |include-search| - "[i" コマンドはカーソルのしたの単語をインクルードされるファイルの中から + |[i| コマンドはカーソルのしたの単語をインクルードされるファイルの中から 検索することができます。'include' オプションをセットすることでファイル をインクルードするコマンドのパターンを記述することができます(デフォルト では C のプログラムで検索できるように設定してあります)。 - "[I" コマンドはマッチしたすべてをリストし、"[ CTRL-I" コマンドはマッチ + |[I| コマンドはマッチしたすべてをリストし、|[ CTRL-I| コマンドはマッチ した場所にジャンプするコマンドです。 - "[d", "[D", "[ CTRL-D" も同様ですが、'define' オプションで指定されるパ + |[d|, |[D|, |[ CTRL-D| も同様ですが、'define' オプションで指定されるパ ターンにマッチする行にのみします 自動コマンド |autocommand| - ファイルを読み込んだり書き込んだり別のバッファーにジャンプしたりなどす + ファイルを読み込んだり書き込んだり別のバッファにジャンプしたりなどす る時に、ファイル名によって自動的にコマンドを実行することができます。こ れは C のプログラムを書いたり、ドキュメントを書いたり、普通のテキストを 書いたりなどする時にオプションをセットしたりそれら特有のマッピングをし @@ -363,24 +411,33 @@ C プログラムのインデントを改善 |'cindent'| ることもできるようになります。 コマンドと表現 |expression| - 単純ではあるけれども強力なスクリプト言語を形成するようにいくつかコマン - ドが追加されました。 + 強力なスクリプト言語を形成するようにいくつかコマンドが追加されました。 |:if| 条件によって実行します。例えば $TERM の値によってオプ ションを変更したりできます。 |:while| コマンドを繰り返します。 + |:for| リストをわたるループ。 |:echo| 式の結果を表示します |:let| 値を内部変数やオプションなどに割り当てます。 + 変数の型は数値、文字列、リスト、辞書。 |:execute| 式からなるコマンドを実行します。 - などなど + |:try| 例外を捕捉します。 + などなど。|eval|を参照。 + デバッグとプロファイリングがサポートされています。|debug-scripts| + |profile| + もしこれで十分でないなら、|Python|, |Ruby|, |Tcl|, |Perl|, |MzScheme| + のインターフェイスが提供されています。 Viminfo |viminfo-file| コマンドライン履歴やマークやレジスターの内容を起動時に読み込まれるファ イルに保存しておくことができます。Vim を終了させた後、再び Vim を起動し たときでも検索コマンドを繰り返したりコマンドラインを繰り返したりできま - す。"'0" を使って最後に編集していた場所にジャンプすることもまた可能で + す。|'0| を使って最後に編集していた場所にジャンプすることもまた可能で す。'viminfo' オプションで .viminfo ファイルに保存されるアイテムを選択 することができます。初期値はオフです。 +印刷 |printing| + コマンド|:hardcopy|はテキストをプリンタに送信します。構文強調も含まれ + ます。 マウスサポート |mouse-using| マウスは GUI バージョンと Unix、gpm がある Linux、MS-DOS、Win32 上の xterm でサポートされています。カーソルの場所を変えたりビジュアル領域を @@ -396,7 +453,7 @@ Viminfo |viminfo-file| 壊すことなくいくつかの文字を変更することができます。Vim は NUL 文字を削 除しません(内部では <NL> と表されています)。 |-b| バイナリーファイルの編集を始める時のコマンドライン引数 - |'binary'| "-b" によってセットされるオプションで、ファイルの最後の + |'binary'| |-b| によってセットされるオプションで、ファイルの最後の 行に <EOL> を付加するのをやめさせます 多言語のサポート |multi-lang| @@ -405,6 +462,11 @@ Viminfo |viminfo-file| す。 |UTF-8| メッセージやメニューが多くの言語に翻訳されています。 +行を越えるカーソル移動 + オプション'virtualedit'がセットされていると、テキストがない場所を含め、 + 画面全体どこでもカーソルを移動させることができます。これは表や図を容易 + に編集できて便利です。 + ============================================================================== 5. その他の Vim の機能 *other-features* @@ -419,7 +481,7 @@ Vim が "-s scriptfile" 付きで起動された場合、"scriptfile" から読 とができます。このファイルは後で別のファイルでその編集を繰り返したり、スクリプ トファイルをに修正を加えてから繰り返しを実行したりするのに使うことができます。 -"-o" オプションはそれに続く引数の数だけウインドーを開きます。"-o4" は4つのウイ +"-o" オプションはそれに続く引数の数だけウィンドウを開きます。"-o4" は4つのウイ ンドーを開きます。 Viはフルスクリーンで動作するためにいくつかのtermcapのエントリが必要でした。Vim @@ -444,7 +506,7 @@ Viはフルスクリーンで動作するためにいくつかのtermcapのエ "[]" は C の関数の前の終わりに移動します(一桁目が '}' の行)。 "]f"、"[f" と "gf" はカーソルの下のファイル名の編集を開始します。CTRL-W f はカ -ーソルの下のファイル名の編集をウインドーを分割してそこで開始します。 +ーソルの下のファイル名の編集をウィンドウを分割してそこで開始します。 "*" はカーソルの下の識別子を前方に検索し、"#" は後方に検索します。 "K" はカーソルの下の識別子を引数として 'keywordprg' オプションに定義されている @@ -566,7 +628,7 @@ CTRL-O/CTRL-I は古い/新しい場所に移動するのに使うことがで 'scrolloff' オプションでカーソルの上や下に保持しておく最小の行数を設定できます。 これを設定しておくとカーソルの前後を見渡せるようになります。かなり大きい数字に -セットしておけばカーソル行は常にウインドーの中央に来ることになります。 +セットしておけばカーソル行は常にウィンドウの中央に来ることになります。 大文字のマークはファイルを越えてジャンプするのに使うことができます。":marks" コマンドは現在セットされているすべてのマークをリストします。"']"と"`]"は前に操 @@ -609,7 +671,7 @@ Vi と Vim の両方で ":substitute" コマンドで CTRL-M を使うことで 挿入の初めをこえてバックスペースすることができます。 'paste' オプションがセットされているといくつかのオプションが解除され挿入モード -でのマッピングと略記が使用不可になります。こうすることでウインドーシステムでテ +でのマッピングと略記が使用不可になります。こうすることでウィンドウシステムでテ キストを張りつけるときに不測の結果が生じるのを避けることができます。'paste'オ プションが解除されればオプションの前の値が復元されます。 @@ -637,7 +699,7 @@ CTRL-V を打った後に3桁の8進数を打つことができ、このバイ 'expandtab' (et) がセットされていると <Tab> は適切な数のスペースに展開されま す。 -ウィンドーは常にバッファーの内容を反映します(Vi ではテキストを変更したりそのほ +ウィンドーは常にバッファの内容を反映します(Vi ではテキストを変更したりそのほ かいくつかの場合では行われませんでした)。 Vim が DIGRAPHS を定義してコンパイルされていれば digraph がサポートされます。 @@ -682,7 +744,7 @@ Vim が DIGRAPHS を定義してコンパイルされていれば digraph がサ ジョブコントロールを持たないシステム(古い Unix システムと Unix 以外のシステム) ではCTRL-Z、":stop"、":suspend" コマンドは新しいシェルを起動します。 -出力のための対話的なウインドーなしで Vim が Amiga 上で起動された場合、ウインドー +出力のための対話的なウィンドウなしで Vim が Amiga 上で起動された場合、ウィンドウ が開かれます(そうして :sh コマンドは動作します)。|-d| 引数で編集する装置を指定 することができます(例: "-d con:20/20/600/150")。 @@ -797,7 +859,7 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -? Vile: 簡単な使い方を表示して終了します。 --a Elvis: 指定されたファイル名をそれぞれ一つのウインドーに読み込み +-a Elvis: 指定されたファイル名をそれぞれ一つのウィンドウに読み込み ます(Vim では -o を使ってください)。 -A Vim: アラビア語モードで起動します(その機能が組み込まれているな @@ -809,7 +871,7 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -C Vim: Vi コンパチブルモードで起動します。 --c {command} Elvis, Nvi, Posix, Vim: ファイルを編集バッファーにロードした後 +-c {command} Elvis, Nvi, Posix, Vim: ファイルを編集バッファにロードした後 {command} を Ex コマンドとして走らせます。 Vim: 10個まで "-c" 引数をとることができます。 @@ -827,7 +889,7 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -E Vim: "exim"のように、より良いExモードで起動します|gQ| -f Vim: GUI をフォアグラウンドジョブとして起動します(Amiga: 新たに - ウインドーを開きません)。 + ウィンドウを開きません)。 -f {session} Elvis: {session} をセッションファイルとして使います。 -F Vim: Farsi モードで起動します(Farsi 付きでコンパイルされている @@ -846,7 +908,7 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -H Vim: ヘブライモードで起動します(ヘブライオプションをつけてコン パイルされている場合)。 --i Elvis: それぞれのウインドーを挿入モードで起動します。 +-i Elvis: それぞれのウィンドウを挿入モードで起動します。 -i {viminfo} Vim: {viminfo} を Viminfo ファイルとして使います。 -L Vim: "-r" と同じです(またいくつかのバージョンの Vi でもそうで @@ -865,10 +927,13 @@ Vim だけがファイル名の後でもオプションを受け付けます。 -nb[args] Vim: NetBeansへの接続を開きます --O[N] Vim: -oと同じですが、ウインドウを縦分割します +-O[N] Vim: -oと同じですが、ウィンドウを縦分割します + +-o[N] Vim: [N]個のウィンドウを開きます。もしくは各ファイルに1個ずつ + ウィンドウを開きます。 --o[N] Vim: [N] ウインドーを開きます。もしくはそれぞれにそれぞれのファ - イルを開きます。 +-p[N] Vim: [N]個のタブページを開きます。もしくは各ファイルに1個ずつ + タブページを開きます。 -P {parent-title} Win32 Vim: 親となるアプリケーションの内側でVimを開きます @@ -922,4 +987,63 @@ Vim だけがファイル名の後でもオプションを受け付けます。 @{cmdfile} Vile: {cmdfile} を初期化ファイルに使います。 - vim:tw=78:ts=8:ft=help:norl: +============================================================================== +7. POSIX 準拠 *posix* *posix-compliance* + +2005年、Vimの互換性をチェックするためにPOSIXテストを行いました。テストのほとん +どはパスしました。Vi互換モードで実行したときでもPOSIX準拠でない点が2,3ありまし +た。 + +Vim起動時にオプション'cpoptions'にPOSIXフラグを含めるには、環境変数$VIM_POSIX +を設定してください。そうするとVimができるだけPOSIXに従うようになります。これは +Vi互換であることとは少し違います。 + +以下はVimがPOSIX仕様に従わない点とその理由です: + + *posix-screen-size* + Vimは端末からより確かな方法でサイズが得られると、環境変数$COLUMNSと + $LINESを無視します。'cpoptions'にフラグ'l'を加えると$COLUMNSと$LINESが + 他の方法で得られたサイズを上書きするようになります。 + + オリジナルのViではコマンド"{"と"}"は"{"で止まりませんが、POSIXは止まる + ように指定しています。POSIX流を望むなら'cpoptions'にフラグ'{'を加えて + ください。 + + コマンド"D", "o", "O"がカウントを受け付けます。繰り返されたときもです。 + カウントを無視するようにしたければ'cpoptions'にフラグ'#'を加えてくださ + い。 + + 'cpoptions'にフラグ'.'が入っていると、バッファが変更されているときコマ + ンド":cd"が失敗します。 + + ViにはATTENTIONメッセージはありません。ATTENTIONメッセージを出さなくす + るには'shortmess'にフラグ"A"を加えてください。 + +POSIXテストの実行についての注意: +- viテスト33はときどき未知の理由のために失敗します +- viテスト250が失敗します。新しいバージョンで挙動が変更されるでしょう。 + http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html +- viテスト310が失敗します。エラーが起きたとき終了コードが非ゼロになる? +- exテスト24が失敗します。テストが間違っているためです。SUSv2とSUSv3の間に変更 + されました。 +- exテスト47, 48, 49, 72, 73が失敗します。サイレントモードでは.exrcは読み込ま + れず、$EXINITが使われないためです。 +- exテスト76, 78が失敗します。printfの代わりにechoが使われるためです(修正され + ました)。Also: problem with \s not changed to space. +- exテスト355が失敗します。"30z"のときに'window'が使われないためです。 +- exテスト368が失敗します。サイレントモードでシェルコマンドがエコーされないた + めです。 +- exテスト394が失敗します。コマンド"="の出力がサイレントモードで見えないためで + す。 +- exテスト411が失敗します。テストファイルが迷子の':'を含んで正しくないためです +- exテスト475, 476が失敗します。サイレントモードでリプリント出力が見えないため + です。 +- exテスト480, 481が失敗します。tagsファイルがタブでなくスペースを含んでいるた + めです。 +- exテスト502が失敗します。サイレントモードで.exrcが読まれないためです。 +- exテスト509が失敗します。サイレントモードで.exrcが読まれないためです。また、終了コードが2 + でなく1になるためです。 +- exテスト534が失敗します。サイレントモードで.exrcが読まれないためです。 + + +vim:tw=78:ts=8:ft=help:norl: From 6281cce43a694941f7bcf6e98f602ede46b94572 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 16 Sep 2006 19:14:33 +0000 Subject: [PATCH 051/783] update debugger to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@51 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/debugger.txt | 51 +++++++++++++++++++++++++++---------------------- ja/debugger.jax | 19 +++++++++++------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/en/debugger.txt b/en/debugger.txt index e59a5abae..d7268209d 100644 --- a/en/debugger.txt +++ b/en/debugger.txt @@ -1,4 +1,4 @@ -*debugger.txt* For Vim version 6.3. Last change: 2001 Dec 22 +*debugger.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Gordon Prieur @@ -27,19 +27,19 @@ Environment (IDE): These features were added specifically for use in the Motif version of gvim. However, the |alt-input| and |debug-highlight| were written to be usable in -both vim and gvim. Some of the other features could be used in the non-GUI -vim with slight modifications. However, I did not do this nor did I test the +both vim and gvim. Some of the other features could be used in the non-GUI +vim with slight modifications. However, I did not do this nor did I test the reliability of building for vim or non Motif GUI versions. 1.1 Alternate Command Input *alt-input* For Vim to work with a debugger there must be at least an input connection -with a debugger or external tool. In many cases there will also be an output +with a debugger or external tool. In many cases there will also be an output connection but this isn't absolutely necessary. The purpose of the input connection is to let the external debugger send -commands to Vim. The commands sent by the debugger should give the debugger +commands to Vim. The commands sent by the debugger should give the debugger enough control to display the current debug environment and state. The current implementation is based on the X Toolkit dispatch loop and the @@ -49,15 +49,15 @@ XtAddInput() function call. 1.2 Debug Signs *debug-signs* Many debuggers mark specific lines by placing a small sign or color highlight -on the line. The |:sign| command lets the debugger set this graphic mark. Some +on the line. The |:sign| command lets the debugger set this graphic mark. Some examples where this feature would be used would be a debugger showing an arrow -representing the Program Counter (PC) of the program being debugged. Another -example would be a small stop sign for a line with a breakpoint. These visible +representing the Program Counter (PC) of the program being debugged. Another +example would be a small stop sign for a line with a breakpoint. These visible highlights let the user keep track of certain parts of the state of the debugger. -This feature can be used with more than debuggers, too. An IPE can use a sign -to highlight build errors, searched text, or other things. The sign feature +This feature can be used with more than debuggers, too. An IPE can use a sign +to highlight build errors, searched text, or other things. The sign feature can also work together with the |debug-highlight| to ensure the mark is highly visible. @@ -66,17 +66,17 @@ Debug signs are defined and placed using the |:sign| command. 1.3 Debug Source Highlight *debug-highlight* -This feature allows a line to have a predominant highlight. The highlight is -intended to make a specific line stand out. The highlight could be made to +This feature allows a line to have a predominant highlight. The highlight is +intended to make a specific line stand out. The highlight could be made to work for both vim and gvim, whereas the debug sign is, in most cases, limited -to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm +to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm from Sun has a "sign gutter" for showing signs. 1.4 Message Footer *gui-footer* -The message footer can be used to display messages from a debugger or IPE. It -can also be used to display menu and toolbar tips. The footer area is at the +The message footer can be used to display messages from a debugger or IPE. It +can also be used to display menu and toolbar tips. The footer area is at the bottom of the GUI window, below the line used to display colon commands. The display of the footer is controlled by the 'guioptions' letter 'F'. @@ -85,30 +85,33 @@ The display of the footer is controlled by the 'guioptions' letter 'F'. 1.5 Balloon Evaluation *balloon-eval* This feature allows a debugger, or other external tool, to display dynamic -information based on where the mouse is pointing. The purpose of this feature +information based on where the mouse is pointing. The purpose of this feature was to allow Sun's Visual WorkShop debugger to display expression evaluations. However, the feature was implemented in as general a manner as possible and could be used for displaying other information as well. -The Balloon Evaluation has some settable parameters too. The font list and -colors can be set via X resources (XmNballoonEvalFontList, +The Balloon Evaluation has some settable parameters too. For Motif the font +list and colors can be set via X resources (XmNballoonEvalFontList, XmNballoonEvalBackground, and XmNballoonEvalForeground). The 'balloondelay' option sets the delay before an attempt is made to show a balloon. The 'ballooneval' option needs to be set to switch it on. Balloon evaluation is only available when compiled with the |+balloon_eval| -and |+sun_workshop| features. +feature. The Balloon evaluation functions are also used to show a tooltip for the toolbar. The 'ballooneval' option does not need to be set for this. But the other settings apply. +Another way to use the balloon is with the 'balloonexpr' option. This is +completely user definable. + ============================================================================== 2. Vim Compile Options *debugger-compilation* The debugger features were added explicitly for use with Sun's Visual -WorkShop Integrated Programming Environment (ipe). However, they were done +WorkShop Integrated Programming Environment (ipe). However, they were done in as generic a manner as possible so that integration with other debuggers could also use some or all of the tools used with Sun's ipe. @@ -120,7 +123,7 @@ The following compile time preprocessor variables control the features: Message Footer FEAT_FOOTER Balloon Evaluation FEAT_BEVAL -The first integration with a full IPE/IDE was with Sun Visual WorkShop. To +The first integration with a full IPE/IDE was with Sun Visual WorkShop. To compile a gvim which interfaces with VWS set the following flag, which sets all the above flags: @@ -129,7 +132,9 @@ all the above flags: ============================================================================== 3. Integrated Debuggers *debugger-integration* -Currently the only fully integrated debugger/IPE/IDE is Sun's Visual WorkShop -Integrated Programming Environment. +One fully integrated debugger/IPE/IDE is Sun's Visual WorkShop Integrated +Programming Environment. + +For Sun NetBeans support see |netbeans|. vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/ja/debugger.jax b/ja/debugger.jax index a745be64d..dd7a73068 100644 --- a/ja/debugger.jax +++ b/ja/debugger.jax @@ -1,8 +1,8 @@ COMMENT: 統合開発環境(IDE)におけるデバッガとの協調 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*debugger.txt* For Vim version 6.3. Last change: 2001 Dec 22 +*debugger.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM リファレンスマニュアル by Gordon Prieur @@ -89,9 +89,9 @@ dttermである。dttermには目印を表示するためのスペースがあ 表示させることを目的とした。しかしながら、その他の情報を表示するのに利用できる よう、可能な限り一般的な様式で実現されている。 -バルーンウィンドウには幾つかの設定可能なパラメータがある。フォントリストと色は -Xリソース経由で設定される(XmNballoonEvalFontList, XmNballoonEvalBackground, -XmNballoonEvalForeground)。 +バルーンウィンドウには幾つかの設定可能なパラメータがある。Motifではフォントリ +ストと色はXリソース経由で設定される(XmNballoonEvalFontList, +XmNballoonEvalBackground, XmNballoonEvalForeground)。 オプション'balloondelay'はバルーンを表示するまでの遅延時間を設定する。 この機能を有効にするにはオプション'ballooneval'をオンにする必要がある。 @@ -102,6 +102,9 @@ XmNballoonEvalForeground)。 る。これにはオプション'ballooneval'を設定する必要はない。しかしその他の設定は このツールチップにも適用される。 +バルーンウィンドウを使うもう1つの方法は、オプション'balloonexpr'を使うことであ +る。これは完全にユーザが定義できる。 + ============================================================================== 2. Vimのコンパイルオプション *debugger-compilation* @@ -127,7 +130,9 @@ XmNballoonEvalForeground)。 ============================================================================== 3. 統合デバッガ *debugger-integration* -現在のところ完全に統合されたデバッガ/IPE/IDEは、唯一Sunの「Visual WorkShop -Integrated Programming Environment」だけである。 +完全に統合されたデバッガ/IPE/IDEは、唯一Sunの「Visual WorkShop Integrated +Programming Environment」だけである。 + +SunのNetBeansのサポートについては|netbeans|を参照。 vim:tw=78:sw=4:ts=8:ft=help:norl: From cc974ab2567b815d8cc94c47b2aed857e01f233d Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 16 Sep 2006 20:32:25 +0000 Subject: [PATCH 052/783] fix: update options to noda-san version. git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@52 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/options.txt | 1307 +++----- ja/options.jax | 8315 ++++++++++++++++++++++++------------------------ 2 files changed, 4557 insertions(+), 5065 deletions(-) diff --git a/en/options.txt b/en/options.txt index a65d196f9..6328e981c 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,7 +1,7 @@ -*options.txt* For Vim version 6.3. Last change: 2004 Dec 09 +*options.txt* For Vim version 6.1. Last change: 2002 Mar 06 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Options *options* @@ -31,7 +31,6 @@ achieve special effects. These options come in three forms: internally and can't be changed. Changing the terminal codes in the GUI is not useful either... - *E518* *E519* :se[t] {option}? Show value of {option}. :se[t] {option} Toggle option: set, switch it on. @@ -50,13 +49,13 @@ achieve special effects. These options come in three forms: :se[t] {option}&vim Reset option to its Vim default value. {not in Vi} :se[t] all& Set all options, except terminal options, to their - default value. The values of 'term', 'lines' and + default value. The values of 'term', 'lines' and 'columns' are not changed. {not in Vi} - *:set-args* *E487* *E521* :se[t] {option}={value} or :se[t] {option}:{value} Set string or number option to {value}. + *:set-args* For numeric options the value can be given in decimal, hex (preceded with 0x) or octal (preceded with '0') (hex and octal are only available for machines which @@ -124,11 +123,9 @@ one value for all local options with the same name. Thus the message applies to the option name, not necessarily its value. When the option was set while executing a function, user command or autocommand, the script in which it was defined is reported. -Note that an option may also have been set as a side effect of setting -'compatible'. {not available when compiled without the +eval feature} - *:set-termcap* *E522* + *:set-termcap* For {option} the form "t_xx" may be used to set a termcap option. This will override the value from the termcap. You can then use it in a mapping. If the "xx" part contains special characters, use the <t_xx> form: > @@ -139,11 +136,8 @@ example, if Alt-b produces <Esc>b, use this: > (the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it) The advantage over a mapping is that it works in all situations. -The t_xx options cannot be set from a |modeline| or in the |sandbox|, for -security reasons. - The listing from ":set" looks different from Vi. Long string options are put -at the end of the list. The number of options is quite large. The output of +at the end of the list. The number of options is quite large. The output of "set all" probably does not fit on the screen, causing Vim to give the |more-prompt|. @@ -157,14 +151,14 @@ A few examples: > :set tags=tags\\,file results in "tags\,file" :set tags=tags\\\ file results in "tags\ file" -The "|" character separates a ":set" command from a following command. To -include the "|" in the option value, use "\|" instead. This example sets the +The "|" character separates a ":set" command from a following command. To +include the "|" in the option value, use "\|" instead. This example sets the 'titlestring' option to "hi|there": > :set titlestring=hi\|there This sets the 'titlestring' option to "hi" and 'iconstring' to "there": > :set titlestring=hi|set iconstring=there -For MS-DOS and WIN32 backslashes in file names are mostly not removed. More +For MS-DOS and WIN32 backslashes in file names are mostly not removed. More precise: For options that expect a file name (those where environment variables are expanded) a backslash before a normal file name character is not removed. But a backslash before a special character (space, backslash, comma, @@ -175,23 +169,22 @@ There is one special situation, when the value starts with "\\": > :set dir=\\path\\file results in "\\path\file" (wrong!) For the first one the start is kept, but for the second one the backslashes are halved. This makes sure it works both when you expect backslashes to be -halved and when you expect the backslashes to be kept. The third gives a +halved and when you expect the backslashes to be kept. The third gives a result which is probably not what you want. Avoid it. *add-option-flags* *remove-option-flags* - *E539* *E550* *E551* *E552* Some options are a list of flags. When you want to add a flag to such an option, without changing the existing ones, you can do it like this: > :set guioptions+=a Remove a flag from an option like this: > :set guioptions-=a This removes the 'a' flag from 'guioptions'. -Note that you should add or remove one flag at a time. If 'guioptions' has +Note that you should add or remove one flag at a time. If 'guioptions' has the value "ab", using "set guioptions-=ba" won't work, because the string "ba" doesn't appear. *:set_env* *expand-env* *expand-environment-var* -Environment variables in most string options will be expanded. If the +Environment variables in most string options will be expanded. If the environment variable exists the '$' and the following environment variable name is replaced with its value. If it does not exist the '$' and the name are not modified. Any non-id character (not a letter, digit or '_') may @@ -250,7 +243,7 @@ value, ":setlocal list" only changes the local value and ":e two" gets the global value. Note that if you do this next: > :e one You will not get back the 'list' value as it was the last time you edited -"one". The options local to a window are not remembered for each buffer. +"one". The options local to a window are not remembered for each buffer. *:setl* *:setlocal* :setl[ocal] ... Like ":set" but set only the value local to the @@ -280,13 +273,13 @@ You will not get back the 'list' value as it was the last time you edited {not in Vi} For buffer-local and window-local options: - Command global value local value ~ + Command global value local value ~ :set option=value set set :setlocal option=value - set :setglobal option=value set - - :set option? - display - :setlocal option? - display -:setglobal option? display - + :set option - display + :setlocal option - display +:setglobal option display - Global options with a local value *global-local* @@ -303,7 +296,7 @@ then the other window will switch to the same value. There is no need to set the 'makeprg' option in the other C source window too. However, if you start editing a Perl file in a new window, you want to use another 'makeprog' for it, without changing the value used for the C source -files. You use this command: > +files. You use this command: > :setlocal makeprg=perlmake You can switch back to using the global value by making the local value empty: > :setlocal makeprg= @@ -358,9 +351,6 @@ On Unix systems the form "${HOME}" can be used too. The name between {} can contain non-id characters then. Note that if you want to use this for the "gf" command, you need to add the '{' and '}' characters to 'isfname'. -NOTE: expanding environment variables and "~/" is only done with the ":set" -command, not when assigning a value to an option with ":let". - Note the maximum length of an expanded option is limited. How much depends on the system, mostly it is something like 256 or 1024 characters. @@ -387,7 +377,7 @@ the system, mostly it is something like 256 or 1024 characters. : fixdel :endif < Where "^V" is CTRL-V and "<BS>" is the backspace key - (don't type four characters!). Replace "termname" + (don't type four characters!). Replace "termname" with your terminal name. If your <Delete> key sends a strange key sequence (not @@ -431,12 +421,12 @@ to set options automatically for one or more files: number of lines at the beginning and end of the file are checked for modelines. This is explained here. - *modeline* *vim:* *vi:* *ex:* *E520* + *modeline* *vim:* *vi:* *ex:* There are two forms of modelines. The first form: [text]{white}{vi:|vim:|ex:}[white]{options} [text] any text or empty -{white} at least one blank character (<Space> or <Tab>) +{white} at least one white space (<Space> or <Tab>) {vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" [white] optional white space {options} a list of option settings, separated with white space or ':', @@ -448,13 +438,13 @@ Example: > The second form (this is compatible with some versions of Vi): - [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text] + [text]{white}{vi:|vim:|ex:}[white]set {options}:[text] [text] any text or empty -{white} at least one blank character (<Space> or <Tab>) +{white} at least one white space (<Space> or <Tab>) {vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" [white] optional white space -se[t] the string "set " or "se " (note the space) +set the string "set " (note the space) {options} a list of options, separated with white space, which is the argument for a ":set" command : a colon @@ -503,7 +493,7 @@ will give an error message for the trailing "*/". This line is OK: > If an error is detected the rest of the line is skipped. If you want to include a ':' in a set command precede it with a '\'. The -backslash in front of the ':' will be removed. Example: > +backslash in front of the ':' will be removed. Example: > /* vi:set dir=c\:\tmp: */ This sets the 'dir' option to "c:\tmp". Only a single backslash before the ':' is removed. Thus to include "\:" you have to specify "\\:". @@ -532,7 +522,7 @@ used when 'compatible' is not set, and the "Vi default", which is used when 'compatible' is set. Most options are the same in all windows and buffers. There are a few that -are specific to how the text is presented in a window. These can be set to a +are specific to how the text is presented in a window. These can be set to a different value in each window. For example the 'list' option can be set in one window and reset in another for the same text, giving both types of view at the same time. There are a few options that are specific to a certain @@ -547,19 +537,13 @@ program. When creating a new window the option values from the currently active window are used as a default value for the window-specific options. For the buffer-specific options this depends on the 's' and 'S' flags in the -'cpoptions' option. If 's' is included (which is the default) the values for +'cpoptions' option. If 's' in included (which is the default) the values for buffer options are copied from the currently active buffer when a buffer is -first entered. If 'S' is present the options are copied each time the buffer -is entered, this is almost like having global options. If 's' and 'S' are not +first entered. If 'S' is present the options are copied each time the buffer +is entered, this is almost like having global options. If 's' and 'S' are not present, the options are copied from the currently active buffer when the buffer is created. -Not all options are supported in all versions. To test if option "foo" can be -used with ":set" use "exists('&foo')". This doesn't mean the value is -actually remembered and works. Some options are hidden, which means that you -can set them but the value is not remembered. To test if option "foo" is -really supported use "exists('+foo')". - *E355* A jump table for the options with a short description can be found at |Q_op|. @@ -598,107 +582,9 @@ A jump table for the options with a short description can be found at |Q_op|. the keyboard map between Farsi and English, when 'allowrevins' set. When off, the keyboard map toggles between Hebrew and English. This - is useful to start the Vim in native mode i.e. English (left-to-right + is useful to start the vim in native mode i.e. English (left-to-right mode) and have default second language Farsi or Hebrew (right-to-left - mode). See |farsi.txt|. - - *'ambiwidth'* *'ambw'* -'ambiwidth' 'ambw' string (default: "single") - global - {not in Vi} - {only available when compiled with the |+multi_byte| - feature} - Only effective when 'encoding' is "utf-8" or another Unicode encoding. - Tells Vim what to do with characters with East Asian Width Class - Ambiguous (such as Euro, Registered Sign, Copyright Sign, Greek - letters, Cyrillic letters). - - There are currently two possible values: - "single": Use the same width as characters in US-ASCII. This is - expected by most users. - "double": Use twice the width of ASCII characters. - - There are a number of CJK fonts for which the width of glyphs for - those characters are solely based on how many octets they take in - legacy/traditional CJK encodings. In those encodings, Euro, - Registered sign, Greek/Cyrillic letters are represented by two octets, - therefore those fonts have "wide" glyphs for them. This is also - true of some line drawing characters used to make tables in text - file. Therefore, when a CJK font is used for GUI Vim or - Vim is running inside a terminal (emulators) that uses a CJK font - (or Vim is run inside an xterm invoked with "-cjkwidth" option.), - this option should be set to "double" to match the width perceived - by Vim with the width of glyphs in the font. Perhaps it also has - to be set to "double" under CJK Windows 9x/ME or Windows 2k/XP - when the system locale is set to one of CJK locales. See Unicode - Standard Annex #11 (http://www.unicode.org/reports/tr11). - - *'antialias'* *'anti'* *'noantialias'* *'noanti'* -'antialias' 'anti' boolean (default: off) - global - {not in Vi} - {only available when compiled with GUI enabled - on Mac OS X} - This option only has an effect in the GUI version of Vim on Mac OS X - v10.2 or later. When on, Vim will use smooth ("antialiased") fonts, - which can be easier to read at certain sizes on certain displays. - Setting this option can sometimes cause problems if 'guifont' is set - to its default (empty string). - - *'autochdir'* *'acd'* *'noautochdir'* *'noacd'* -'autochdir' 'acd' boolean (default off) - global - {not in Vi} - {only available when compiled with the - |+netbeans_intg| or |+sun_workshop| feature} - When on, Vim will change its value for the current working directory - whenever you open a file, switch buffers, delete a buffer or - open/close a window. It will change to the directory containing the - file which was opened or selected. This option is provided for - backward compatibility with the Vim released with Sun ONE Studio 4 - Enterprise Edition. - - *'arabic'* *'arab'* *'noarabic'* *'noarab'* -'arabic' 'arab' boolean (default off) - local to window - {not in Vi} - {only available when compiled with the |+arabic| - feature} - This option can be set to start editing Arabic text. - Setting this option will: - - Set the 'rightleft' option, unless 'termbidi' is set. - - Set the 'arabicshape' option, unless 'termbidi' is set. - - Set the 'keymap' option to "arabic"; in Insert mode CTRL-^ toggles - between typing English and Arabic key mapping. - - Set the 'delcombine' option - Note that 'encoding' must be "utf-8" for working with Arabic text. - - Resetting this option will: - - Reset the 'rightleft' option. - - Disable the use of 'keymap' (without changing its value). - Note that 'arabicshape' and 'delcombine' are not reset (it is a global - option. - Also see |arabic.txt|. - - *'arabicshape'* *'arshape'* - *'noarabicshape'* *'noarshape'* -'arabicshape' 'arshape' boolean (default on) - global - {not in Vi} - {only available when compiled with the |+arabic| - feature} - When on and 'termbidi' is off, the required visual character - corrections that need to take place for displaying the Arabic language - take affect. Shaping, in essence, gets enabled; the term is a broad - one which encompasses: - a) the changing/morphing of characters based on their location - within a word (initial, medial, final and stand-alone). - b) the enabling of the ability to compose characters - c) the enabling of the required combining of some characters - When disabled the character display reverts back to each character's - true stand-alone form. - Arabic is a complex language which requires other settings, for - further details see |arabic.txt|. + mode). See |farsi.txt|. *'autoindent'* *'ai'* *'noautoindent'* *'noai'* 'autoindent' 'ai' boolean (default off) @@ -741,7 +627,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'autowriteall' 'awa' boolean (default off) global {not in Vi} - Like 'autowrite', but also used for commands ":edit", ":enew", ":quit", + Like 'autowrite', but also used for commands ":edit", ":quit", ":qall", ":exit", ":xit", ":recover" and closing the Vim window. Setting this option also implies that Vim behaves like 'autowrite' has been set. @@ -760,7 +646,7 @@ A jump table for the options with a short description can be found at |Q_op|. color, see |:hi-normal|. When 'background' is set Vim will adjust the default color groups for - the new value. But the colors used for syntax highlighting will not + the new value. But the colors used for syntax highlighting will not change. When a color scheme is loaded (the "colors_name" variable is set) setting 'background' will cause the color scheme to be reloaded. If @@ -781,6 +667,10 @@ A jump table for the options with a short description can be found at |Q_op|. color). To get around this, force the GUI window to be opened by putting a ":gui" command in the .gvimrc file, before where the value of 'background' is used (e.g., before ":syntax on"). + For the Win32 GUI, setting 'background' before starting the GUI, will + change the background and foreground colors to lightgrey on black or + black on white. On other systems setting 'background' does not + change the foreground or background colors. Normally this option would be set in the .vimrc file. Possibly depending on the terminal name. Example: > :if &term == "pcterm" @@ -801,8 +691,8 @@ A jump table for the options with a short description can be found at |Q_op|. Influences the working of <BS>, <Del>, CTRL-W and CTRL-U in Insert mode. This is a list of items, separated by commas. Each item allows a way to backspace over something: - value effect ~ - indent allow backspacing over autoindent + value effect ~ + indent allow backspacing over autoindent eol allow backspacing over line breaks (join lines) start allow backspacing over the start of insert; CTRL-W and CTRL-U stop once at the start of insert. @@ -810,10 +700,10 @@ A jump table for the options with a short description can be found at |Q_op|. When the value is empty, Vi compatible backspacing is used. For backwards compatibility with version 5.4 and earlier: - value effect ~ - 0 same as ":set backspace=" (Vi compatible) - 1 same as ":set backspace=indent,eol" - 2 same as ":set backspace=indent,eol,start" + value effect ~ + 0 same as "" (Vi compatible) + 1 same as "indent,eol" + 2 same as "indent,eol,start" See |:fixdel| if your <BS> or <Del> key does not do what you want. NOTE: This option is set to "" when 'compatible' is set. @@ -827,7 +717,7 @@ A jump table for the options with a short description can be found at |Q_op|. backup file, but you do want a backup while the file is being written, reset this option and set the 'writebackup' option (this is the default). If you do not want a backup file at all reset both - options (use this if your file system is almost full). See the + options (use this if your file system is almost full). See the |backup-table| for more explanations. When the 'backupskip' pattern matches, a backup is not made anyway. When 'patchmode' is set, the backup may be renamed to become the @@ -839,17 +729,11 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When writing a file and a backup is made, this option tells how it's - done. This is a comma separated list of words. - - The main values are: + done: "yes" make a copy of the file and overwrite the original one "no" rename the file and write a new one "auto" one of the previous, what works best - Extra values that can be combined with the ones above are: - "breaksymlink" always break symlinks when writing - "breakhardlink" always break hardlinks when writing - Making a copy and overwriting the original file: - Takes extra time to copy the file. + When the file has special attributes, is a (hard/symbolic) link or @@ -868,25 +752,16 @@ A jump table for the options with a short description can be found at |Q_op|. and the file is not a link) that is used. When problems are expected, a copy will be made. - The "breaksymlink" and "breakhardlink" values can be used in - combination with any of "yes", "no" and "auto". When included, they - force Vim to always break either symbolic or hard links by doing - exactly what the "no" option does, renaming the original file to - become the backup and writing a new file in its place. This can be - useful for example in source trees where all the files are symbolic or - hard links and any changes should stay in the local source tree, not - be propagated back to the original source. - *crontab* One situation where "no" and "auto" will cause problems: A program that opens a file, invokes Vim to edit that file, and then tests if the open file was changed (through the file descriptor) will check the - backup file instead of the newly created file. "crontab -e" is an + backup file instead of the newly created file. "crontab -e" is an example. When a copy is made, the original file is truncated and then filled with the new text. This means that protection bits, owner and symbolic links of the original file are unmodified. The backup file - however, is a new file, owned by the user who edited the file. The + however, is a new file, owned by the user who edited the file. The group of the backup is set to the group of the original file. If this fails, the protection bits for the group are made the same as for others. @@ -910,7 +785,7 @@ A jump table for the options with a short description can be found at |Q_op|. - The backup file will be created in the first directory in the list where this is possible. - Empty means that no backup file will be created ('patchmode' is - impossible!). Writing may fail because of this. + impossible!). - A directory "." means to put the backup file in the same directory as the edited file. - A directory starting with "./" (or ".\" for MS-DOS et.al.) means to @@ -936,10 +811,9 @@ A jump table for the options with a short description can be found at |Q_op|. The use of |:set+=| and |:set-=| is preferred when adding or removing directories from the list. This avoids problems when a future version uses another default. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. - *'backupext'* *'bex'* *E589* + *'backupext'* *'bex'* 'backupext' 'bex' string (default "~", for VMS: "_") global {not in Vi} @@ -948,10 +822,9 @@ A jump table for the options with a short description can be found at |Q_op|. accidentally overwriting existing files with a backup file. You might prefer using ".bak", but make sure that you don't have files with ".bak" that you want to keep. - Only normal file name characters can be used, "/\*?[|<>" are illegal. *'backupskip'* *'bsk'* -'backupskip' 'bsk' string (default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") +'backupskip' 'bsk' string (default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") global {not in Vi} {not available when compiled without the |+wildignore| @@ -977,7 +850,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} {only available when compiled with the |+balloon_eval| - and |+sun_workshop| or |+netbeans_intg| features} + and |+sun_workshop| features} Switch on the |balloon-eval| functionality. *'binary'* *'bin'* *'nobinary'* *'nobin'* @@ -1003,9 +876,6 @@ A jump table for the options with a short description can be found at |Q_op|. The previous values of these options are remembered and restored when 'bin' is switched from on to off. Each buffer has its own set of saved option values. - To edit a file with 'binary' set you can use the |++bin| argument. - This avoids you have to do ":set bin", which would have effect for all - files you edit. When writing a file the <EOL> for the last line is only written if there was one in the original file (normally Vim appends an <EOL> to the last line if there is none; this would make the file longer). See @@ -1035,7 +905,7 @@ A jump table for the options with a short description can be found at |Q_op|. Some applications use the BOM to recognize the encoding of the file. Often used for UCS-2 files on MS-Windows. For other applications it causes trouble, for example: "cat file1 file2" makes the BOM of file2 - appear halfway the resulting file. + appear halfway the file. When Vim reads a file and 'fileencodings' starts with "ucs-bom", a check for the presence of the BOM is done and 'bomb' set accordingly. Unless 'binary' is set, it is removed from the first line, so that you @@ -1077,14 +947,11 @@ A jump table for the options with a short description can be found at |Q_op|. delete delete the buffer from the buffer list, also when 'hidden' is set or using |:hide|, like using |:bdelete| - wipe wipe out the buffer from the buffer list, also when - 'hidden' is set or using |:hide|, like using - |:bwipeout| This option is used together with 'buftype' and 'swapfile' to specify special kinds of buffers. See |special-buffers|. - *'buflisted'* *'bl'* *'nobuflisted'* *'nobl'* *E85* + *'buflisted'* *'bl'* *E85* 'buflisted' 'bl' boolean (default: on) local to buffer {not in Vi} @@ -1130,21 +997,6 @@ A jump table for the options with a short description can be found at |Q_op|. file name. It is not modified in response to a |:cd| command. - *'casemap'* *'cmp'* -'casemap' 'cmp' string (default: "internal,keepascii") - global - {not in Vi} - Specifies details about changing the case of letters. It may contain - these words, separated by a comma: - internal Use internal case mapping functions, the current - locale does not change the case mapping. This only - matters when 'encoding' is a Unicode encoding. When - "internal" is omitted, the towupper() and towlower() - system library functions are used when available. - keepascii For the ASCII characters (0x00 to 0x7f) use the US - case mapping, the current locale is not effective. - This probably only matters for Turkish. - *'cdpath'* *'cd'* *E344* *E346* 'cdpath' 'cd' string (default: equivalent to $CDPATH or ",,") global @@ -1162,8 +1014,7 @@ A jump table for the options with a short description can be found at |Q_op|. a modified version of the following command in your vimrc file to override it: > :let &cdpath = ',' . substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g') -< This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. +< This option cannot be set from a |modeline|, for security reasons (parts of 'cdpath' can be passed to the shell to expand file names). *'cedit'* @@ -1182,7 +1033,7 @@ A jump table for the options with a short description can be found at |Q_op|. < |Nvi| also has this option, but it only uses the first character. See |cmdwin|. - *'charconvert'* *'ccv'* *E202* *E214* *E513* + *'charconvert'* *'ccv'* *E202* *E214* 'charconvert' 'ccv' string (default "") global {only available when compiled with the |+multi_byte| @@ -1224,8 +1075,7 @@ A jump table for the options with a short description can be found at |Q_op|. Encryption is not done by Vim when using 'charconvert'. If you want to encrypt the file after conversion, 'charconvert' should take care of this. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'cindent'* *'cin'* *'nocindent'* *'nocin'* 'cindent' 'cin' boolean (default off) @@ -1323,14 +1173,13 @@ A jump table for the options with a short description can be found at |Q_op|. - Running Vim in a console. - $DISPLAY is set to start applications on another display. - - You do not want to connect to the X server in the - console, but do want this in a terminal emulator. + - The X server might be terminated while Vim in the + console is still running, killing Vim. To never connect to the X server use: > exclude:.* < This has the same effect as using the |-X| argument. - Note that when there is no connection to the X server - the window title won't be restored and the clipboard - cannot be accessed. + Note that the window title won't be restored as a side + effect. The value of 'magic' is ignored, {pattern} is interpreted as if 'magic' was on. The rest of the option value will be used for @@ -1351,19 +1200,18 @@ A jump table for the options with a short description can be found at |Q_op|. feature} Number of screen lines to use for the command-line window. |cmdwin| - *'columns'* *'co'* *E594* + *'columns'* *'co'* 'columns' 'co' number (default 80 or terminal width) global {not in Vi} Number of columns of the screen. Normally this is set by the terminal initialization and does not have to be set by hand. When Vim is running in the GUI or in a resizable window, setting this - option will cause the window size to be changed. When you only want - to use the size for the GUI, put the command in your |gvimrc| file. + option may cause the window size to be changed. When you set this option and Vim is unable to change the physical number of columns of the display, the display may be messed up. - *'comments'* *'com'* *E524* *E525* + *'comments'* *'com'* 'comments' 'com' string (default "s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-") local to buffer @@ -1374,7 +1222,7 @@ A jump table for the options with a short description can be found at |Q_op|. |format-comments|. See |option-backslash| about using backslashes to insert a space. - *'commentstring'* *'cms'* *E537* + *'commentstring'* *'cms'* 'commentstring' 'cms' string (default "/*%s*/") local to buffer {not in Vi} @@ -1393,7 +1241,7 @@ A jump table for the options with a short description can be found at |Q_op|. This is a special kind of option, because when it's set or reset, other options are also changed as a side effect. CAREFUL: Setting or resetting this option can have a lot of unexpected effects: Mappings - are interpreted in another way, undo behaves differently, etc. If you + are interpreted in another way, undo behaves differently, etc. If you set this option in your vimrc file, you should probably put it at the very start. By default this option is on and the Vi defaults are used for the @@ -1405,7 +1253,7 @@ A jump table for the options with a short description can be found at |Q_op|. to the Vim defaults. Effectively, this means that when a ".vimrc" file exists, Vim will use the Vim defaults, otherwise it will use the Vi defaults. (Note: This doesn't happen for the system-wide vimrc - file). Also see |compatible-default|. + file). Also see |compatible-default|. You can also set this option with the "-C" argument, and reset it with "-N". See |-C| and |-N|. Switching this option off makes the Vim defaults be used for options @@ -1413,7 +1261,7 @@ A jump table for the options with a short description can be found at |Q_op|. marked with a '+' below. Other options are not modified. At the moment this option is set, several other options will be set or reset to make Vim as Vi-compatible as possible. See the table - below. This can be used if you want to revert to Vi compatible + below. This can be used if you want to revert to Vi compatible editing. See also 'cpoptions'. @@ -1472,7 +1320,7 @@ A jump table for the options with a short description can be found at |Q_op|. use CTRL-E for cmdline completion 'writebackup' on or off depends on +writebackup feature - *'complete'* *'cpt'* *E535* + *'complete'* *'cpt'* 'complete' 'cpt' string (default: ".,w,b,u,t,i") local to buffer {not in Vi} @@ -1533,34 +1381,20 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} {only for MS-DOS} When on direct console I/O is used to obtain a keyboard character. - This should work in most cases. Also see |'bioskey'|. Together, + This should work in most cases. Also see |'bioskey'|. Together, three methods of console input are available: 'conskey' 'bioskey' action ~ on on or off direct console input off on BIOS off off STDIN - *'copyindent'* *'ci'* *'nocopyindent'* *'noci'* -'copyindent' 'ci' boolean (default off) - local to buffer - {not in Vi} - Copy the structure of the existing lines indent when autoindenting a - new line. Normally the new indent is reconstructed by a series of - tabs followed by spaces as required (unless |'expandtab'| is enabled, - in which case only spaces are used). Enabling this option makes the - new line copy whatever characters were used for indenting on the - existing line. If the new indent is greater than on the existing - line, the remaining space is filled in the normal manner. - NOTE: 'copyindent' is reset when 'compatible' is set. - Also see 'preserveindent'. - *'cpoptions'* *'cpo'* 'cpoptions' 'cpo' string (Vim default: "aABceFs", Vi default: all flags) global {not in Vi} A sequence of single character flags. When a character is present - this indicates vi-compatible behavior. This is used for things where + this indicates vi-compatible behavior. This is used for things where not being vi-compatible is mostly or sometimes preferred. 'cpoptions' stands for "compatible-options". Commas can be added for readability. @@ -1570,15 +1404,12 @@ A jump table for the options with a short description can be found at |Q_op|. set and to the Vim default value when 'compatible' is reset. contains behavior ~ - *cpo-a* a When included, a ":read" command with a file name argument will set the alternate file name for the current window. - *cpo-A* A When included, a ":write" command with a file name argument will set the alternate file name for the current window. - *cpo-b* b "\|" in a ":map" command is recognized as the end of the map command. The '\' is included in the mapping, the text after the '|' is interpreted as the next @@ -1586,125 +1417,91 @@ A jump table for the options with a short description can be found at |Q_op|. include the '|' in the mapping. Applies to all mapping, abbreviation, menu and autocmd commands. See also |map_bar|. - *cpo-B* B A backslash has no special meaning in mappings, abbreviations and the "to" part of the menu commands. Remove this flag to be able to use a backslash like a CTRL-V. For example, the command ":map X \<Esc>" results in X being mapped to: - 'B' included: "\^[" (^[ is a real <Esc>) - 'B' excluded: "<Esc>" (5 characters) + 'B' included: "\^[" (^[ is a real <Esc>) + 'B' excluded: "<Esc>" (5 characters) ('<' excluded in both cases) - *cpo-c* c Searching continues at the end of any match at the - cursor position, but not further than the start of the - next line. When not present searching continues + cursor position. When not present searching continues one character from the cursor position. With 'c' "abababababab" only gets three matches when repeating "/abab", without 'c' there are five matches. - *cpo-C* C Do not concatenate sourced lines that start with a backslash. See |line-continuation|. - *cpo-d* d Using "./" in the 'tags' option doesn't mean to use the tags file relative to the current file, but the tags file in the current directory. - *cpo-D* D Can't use CTRL-K to enter a digraph after Normal mode commands with a character argument, like |r|, |f| and |t|. - *cpo-e* e When executing a register with ":@r", always add a <CR> to the last line, also when the register is not linewise. If this flag is not present, the register is not linewise and the last line does not end in a <CR>, then the last line is put on the command-line and can be edited before hitting <CR>. - *cpo-E* E It is an error when using "y", "d", "c", "g~", "gu" or "gU" on an Empty region. The operators only work when at least one character is to be operate on. Example: This makes "y0" fail in the first column. - *cpo-f* f When included, a ":read" command with a file name argument will set the file name for the current buffer, if the current buffer doesn't have a file name yet. - *cpo-F* F When included, a ":write" command with a file name argument will set the file name for the current buffer, if the current buffer doesn't have a file name yet. - *cpo-g* g Goto line 1 when using ":edit" without argument. - *cpo-i* i When included, interrupting the reading of a file will leave it modified. - *cpo-j* j When joining lines, only add two spaces after a '.', not after '!' or '?'. Also see 'joinspaces'. - *cpo-J* J A |sentence| has to be followed by two spaces after the '.', '!' or '?'. A <Tab> is not recognized as white space. - *cpo-k* k Disable the recognition of raw key codes in mappings, abbreviations, and the "to" part of menu commands. For example, if <Key> sends ^[OA (where ^[ is <Esc>), the command ":map X ^[OA" results in X being mapped to: - 'k' included: "^[OA" (3 characters) - 'k' excluded: "<Key>" (one key code) + 'k' included: "^[OA" (3 characters) + 'k' excluded: "<Key>" (one key code) Also see the '<' flag below. - *cpo-K* K Don't wait for a key code to complete when it is halfway a mapping. This breaks mapping <F1><F1> when only part of the second <F1> has been read. It enables cancelling the mapping by typing <F1><Esc>. - *cpo-l* l Backslash in a [] range in a search pattern is taken literally, only "\]" is special See |/[]| 'l' included: "/[ \t]" finds <Space>, '\' and 't' 'l' excluded: "/[ \t]" finds <Space> and <Tab> - *cpo-L* L When the 'list' option is set, 'wrapmargin', - 'textwidth', 'softtabstop' and Virtual Replace mode - (see |gR|) count a <Tab> as two characters, instead of - the normal behavior of a <Tab>. - *cpo-m* + 'textwidth' and Virtual replace mode (see |gR|) count + a <Tab> as two characters, instead of the normal + behavior of a <Tab>. m When included, a showmatch will always wait half a second. When not included, a showmatch will wait half a second or until a character is typed. |'showmatch'| - *cpo-M* - M When excluded, "%" matching will take backslashes into - account. Thus in "( \( )" and "\( ( \)" the outer - parenthesis match. When included "%" ignores - backslashes, which is Vi compatible. - *cpo-n* n When included, the column used for 'number' will also be used for text of wrapped lines. - *cpo-o* o Line offset to search command is not remembered for next search. - *cpo-O* O Don't complain if a file is being overwritten, even when it didn't exist when editing it. This is a protection against a file unexpectedly created by someone else. Vi didn't complain about this. - *cpo-p* p Vi compatible Lisp indenting. When not present, a slightly better algorithm is used. - *cpo-r* r Redo ("." command) uses "/" to repeat a search command, instead of the actually used search string. - *cpo-R* - R Remove marks from filtered lines. Without this flag - marks are kept like |:keepmarks| was used. - *cpo-s* s Set buffer options when entering the buffer for the first time. This is like it is in Vim version 3.0. - And it is the default. If not present the options are + And it is the default. If not present the options are set when the buffer is created. - *cpo-S* S Set buffer options always when entering a buffer (except 'readonly', 'fileformat', 'filetype' and 'syntax'). This is the (most) Vi compatible setting. @@ -1717,44 +1514,30 @@ A jump table for the options with a short description can be found at |Q_op|. no no when buffer created yes no when buffer first entered (default) X yes each time when buffer entered (vi comp.) - *cpo-t* + t Search pattern for the tag command is remembered for "n" command. Otherwise Vim only puts the pattern in the history for search pattern, but doesn't change the last used search pattern. - *cpo-u* - u Undo is Vi compatible. See |undo-two-ways|. - *cpo-v* - v Backspaced characters remain visible on the screen in - Insert mode. Without this flag the characters are - erased from the screen right away. With this flag the - screen newly typed text overwrites backspaced - characters. - *cpo-w* + u Undo is Vi compatible. See |undo-two-ways|. w When using "cw" on a blank character, only change one character and not all blanks until the start of the next word. - *cpo-W* W Don't overwrite a readonly file. When omitted, ":w!" overwrites a readonly file, if possible. - *cpo-x* x <Esc> on the command-line executes the command-line. The default in Vim is to abandon the command-line, because <Esc> normally aborts a command. |c_<Esc>| - *cpo-y* y A yank command can be redone with ".". - *cpo-!* ! When redoing a filter command, use the last used external command, whatever it was. Otherwise the last used -filter- command is used. - *cpo-$* $ When making a change to one line, don't redisplay the line, but put a '$' at the end of the changed text. The changed text will be overwritten when you type the new text. The line is redisplayed if you type any command that moves the cursor from the insertion point. - *cpo-%* % Vi-compatible matching is done for the "%" command. Does not recognize "#if", "#endif", etc. Does not recognize "/*" and "*/". @@ -1767,17 +1550,15 @@ A jump table for the options with a short description can be found at |Q_op|. specially. When matching a paren outside of quotes, everything inside quotes is ignored. When matching a paren inside quotes, it will find the matching one (if - there is one). This works very well for C programs. - *cpo-star* + there is one). This works very well for C programs. * Use ":*" in the same way as ":@". When not included, ":*" is an alias for ":'<,'>", select the Visual area. - *cpo-<* < Disable the recognition of special key codes in |<>| form in mappings, abbreviations, and the "to" part of - menu commands. For example, the command + menu commands. For example, the command ":map X <Tab>" results in X being mapped to: - '<' included: "<Tab>" (5 characters) - '<' excluded: "^I" (^I is a real <Tab>) + '<' included: "<Tab>" (5 characters) + '<' excluded: "^I" (^I is a real <Tab>) Also see the 'k' flag above. *'cscopepathcomp'* *'cspc'* @@ -1796,17 +1577,7 @@ A jump table for the options with a short description can be found at |Q_op|. feature} {not in Vi} Specifies the command to execute cscope. See |cscopeprg|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. - - *'cscopequickfix'* *'csqf'* -'cscopequickfix' 'csqf' string (default "") - global - {not available when compiled without the |+cscope| - or |+quickfix| features} - {not in Vi} - Specifies whether to use quickfix window to show cscope results. - See |cscopequickfix|. + This option cannot be set from a |modeline|, for security reasons. *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'* 'cscopetag' 'cst' boolean (default off) @@ -1846,10 +1617,10 @@ A jump table for the options with a short description can be found at |Q_op|. 'indentexpr'. *'define'* *'def'* -'define' 'def' string (default "^\s*#\s*define") +'define' 'def' string (default "^#\s*define") global or local to buffer |global-local| {not in Vi} - Pattern to be used to find a macro definition. It is a search + Pattern to be used to find a macro definition. It is a search pattern, just like for the "/" command. This option is used for the commands like "[i" and "[d" |include-search|. The 'isident' option is used to recognize the defined name after the match: @@ -1861,7 +1632,7 @@ A jump table for the options with a short description can be found at |Q_op|. ^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\) < When using the ":set" command, you need to double the backslashes! - *'delcombine'* *'deco'* *'nodelcombine'* *'nodeco'* + *'delcombine'* *'deco'* 'delcombine' 'deco' boolean (default off) global {not in Vi} @@ -1871,11 +1642,10 @@ A jump table for the options with a short description can be found at |Q_op|. "x" delete each combining character on its own. When it is off (the default) the character along with its combining characters are deleted. - Note: When 'delcombine' is set "xx" may work different from "2x"! - This is useful for Arabic, Hebrew and many other languages where one - may have combining characters overtop of base characters, and want - to remove only the combining ones. + This is useful for Hebrew or other languages where one may have + combining characters overtop of base characters, and want to remove + only the combining ones. *'dictionary'* *'dict'* 'dictionary' 'dict' string (default "") @@ -1886,7 +1656,7 @@ A jump table for the options with a short description can be found at |Q_op|. contain a list of words. This can be one word per line, or several words per line, separated by non-keyword characters (white space is preferred). Maximum line length is 510 bytes. - To include a comma in a file name precede it with a backslash. Spaces + To include a comma in a file name precede it with a backslash. Spaces after a comma are ignored, otherwise spaces are included in the file name. See |option-backslash| about using backslashes. Where to find a list of words? @@ -1905,7 +1675,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+diff| feature} Join the current window in the group of windows that shows differences - between files. See |vimdiff|. + between files. See |vimdiff|. *'dex'* *'diffexpr'* 'diffexpr' 'dex' string (default "") @@ -1915,8 +1685,6 @@ A jump table for the options with a short description can be found at |Q_op|. feature} Expression which is evaluated to obtain an ed-style diff file from two versions of a file. See |diff-diffexpr|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. *'dip'* *'diffopt'* 'diffopt' 'dip' string (default "filler") @@ -1924,7 +1692,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {not available when compiled without the |+diff| feature} - Option settings for diff mode. It can consist of the following items. + Option settings for diff mode. It can consist of the following items. All are optional. Items must be separated by a comma. filler Show filler lines, to keep the text @@ -1977,8 +1745,7 @@ A jump table for the options with a short description can be found at |Q_op|. impossible!). - A directory "." means to put the swap file in the same directory as the edited file. On Unix, a dot is prepended to the file name, so - it doesn't show in a directory listing. On MS-Windows the "hidden" - attribute is set and a dot prepended if possible. + it doesn't show in a directory listing. - A directory starting with "./" (or ".\" for MS-DOS et.al.) means to put the swap file relative to where the edited file is. The leading "." is replaced with the path name of the edited file. @@ -2007,8 +1774,7 @@ A jump table for the options with a short description can be found at |Q_op|. The use of |:set+=| and |:set-=| is preferred when adding or removing directories from the list. This avoids problems when a future version uses another default. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. {Vi: directory to put temp file in, defaults to "/tmp"} *'display'* *'dy'* @@ -2018,7 +1784,7 @@ A jump table for the options with a short description can be found at |Q_op|. Change the way text is displayed. This is comma separated list of flags: lastline When included, as much as possible of the last line - in a window will be displayed. When not included, a + in a window will be displayed. When not included, a last line that doesn't fit is replaced with "@" lines. uhex Show unprintable characters hexadecimal as <xx> instead of using ^C and ~C. @@ -2042,7 +1808,7 @@ A jump table for the options with a short description can be found at |Q_op|. also 'gdefault' option. Switching this option on is discouraged! - *'encoding'* *'enc'* *E543* + *'encoding'* *'enc'* 'encoding' 'enc' string (default: "latin1" or value from $LANG) global {only available when compiled with the |+multi_byte| @@ -2058,16 +1824,8 @@ A jump table for the options with a short description can be found at |Q_op|. It should normally be kept at its default value, or set when Vim starts up. See |multibyte|. - NOTE: For GTK+ 2 it is highly recommended to set 'encoding' to - "utf-8". Although care has been taken to allow different values of - 'encoding', "utf-8" is the natural choice for the environment and - avoids unnecessary conversion overhead. "utf-8" has not been made - the default to prevent different behaviour of the GUI and terminal - versions, and to avoid changing the encoding of newly created files - without your knowledge (in case 'fileencodings' is empty). - The character encoding of files can be different from 'encoding'. - This is specified with 'fileencoding'. The conversion is done with + This is specified with 'fileencoding'. The conversion is done with iconv() or as specified with 'charconvert'. Normally 'encoding' will be equal to your current locale. This will @@ -2105,7 +1863,7 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} When writing a file and this option is off and the 'binary' option - is on, no <EOL> will be written for the last line in the file. This + is on, no <EOL> will be written for the last line in the file. This option is automatically set when starting to edit a new file, unless the file does not have an <EOL> for the last line in the file, in which case it is reset. Normally you don't have to set or reset this @@ -2120,15 +1878,13 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When on, all the windows are automatically made the same size after - splitting or closing a window. When off, splitting a window will + splitting or closing a window. When off, splitting a window will reduce the size of the current window and leave the other windows the same. When closing a window the extra lines are given to the window next to it (depending on 'splitbelow' and 'splitright'). When mixing vertically and horizontally split windows, a minimal size is computed and some windows may be larger if there is room. The 'eadirection' option tells in which direction the size is affected. - Changing the height of a window can be avoided by setting - 'winfixheight'. *'equalprg'* *'ep'* 'equalprg' 'ep' string (default "") @@ -2137,10 +1893,9 @@ A jump table for the options with a short description can be found at |Q_op|. External program to use for "=" command. When this option is empty the internal formatting functions are used ('lisp', 'cindent' or 'indentexpr'). - Environment variables are expanded |:set_env|. See |option-backslash| + Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'errorbells'* *'eb'* *'noerrorbells'* *'noeb'* 'errorbells' 'eb' boolean (default off) @@ -2148,7 +1903,7 @@ A jump table for the options with a short description can be found at |Q_op|. Ring the bell (beep or screen flash) for error messages. This only makes a difference for error messages, the bell will be used always for a lot of errors without a message (e.g., hitting <Esc> in Normal - mode). See 'visualbell' on how to make the bell behave like a beep, + mode). See 'visualbell' on how to make the bell behave like a beep, screen flash or do nothing. *'errorfile'* *'ef'* @@ -2164,8 +1919,7 @@ A jump table for the options with a short description can be found at |Q_op|. NOT used for the ":make" command. See 'makeef' for that. Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'errorformat'* *'efm'* 'errorformat' 'efm' string (default is very long) @@ -2208,7 +1962,7 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} In Insert mode: Use the appropriate number of spaces to insert a - <Tab>. Spaces are used in indents with the '>' and '<' commands and + <Tab>. Spaces are used in indents with the '>' and '<' commands and when 'autoindent' is on. To insert a real tab when 'expandtab' is on, use CTRL-V<Tab>. See also |:retab| and |ins-expandtab|. NOTE: This option is reset when 'compatible' is set. @@ -2222,8 +1976,7 @@ A jump table for the options with a short description can be found at |Q_op|. setting the 'secure' option (see |initialization|). Using a local .exrc, .vimrc or .gvimrc is a potential security leak, use with care! also see |.vimrc| and |gui-init|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'fileencoding'* *'fenc'* *E213* 'fileencoding' 'fenc' string (default: "") @@ -2241,8 +1994,8 @@ A jump table for the options with a short description can be found at |Q_op|. that the reverse conversion results in the same text. When 'encoding' is not "utf-8" some characters may be lost! See 'encoding' for the possible values. Additionally, values may be - specified that can be handled by the converter, see - |mbyte-conversion|. + specified that can be handled by the converter (either iconv() or + specified with 'charconvert'). When reading a file 'fileencoding' will be set from 'fileencodings'. To read a file in a certain encoding it won't work by setting 'fileencoding', use the |++enc| argument. @@ -2254,13 +2007,11 @@ A jump table for the options with a short description can be found at |Q_op|. "ISO8859-2" becomes "iso-8859-2". When this option is set, after starting to edit a file, the 'modified' option is set, because the file would be different when written. - If you do this in a modeline, you might want to set 'nomodified' to - avoid this. This option can not be changed when 'modifiable' is off. *'fe'* NOTE: Before version 6.0 this option specified the encoding for the - whole of Vim, this was a mistake. Now use 'encoding' instead. The + whole of Vim, this was a mistake. Now use 'encoding' instead. The old short name was 'fe', which is no longer used. *'fileencodings'* *'fencs'* @@ -2270,44 +2021,28 @@ A jump table for the options with a short description can be found at |Q_op|. {only available when compiled with the |+multi_byte| feature} {not in Vi} - This is a list of character encodings considered when starting to edit - an existing file. When a file is read, Vim tries to use the first - mentioned character encoding. If an error is detected, the next one - in the list is tried. When an encoding is found that works, - 'fileencoding' is set to it. If all fail, 'fileencoding' is set to - an empty string, which means the value of 'encoding' is used. + This is a list of character encodings considered when editing a file. + When a file is read, Vim tries to use the first mentioned character + encoding. If an error is detected, the next one in the list is tried. + When an encoding is found that works, 'fileencoding' is set to it. + If all fail, 'fileencoding' is set to an empty string, which means + the value of 'encoding' is used. WARNING: Conversion can cause loss of information! When 'encoding' is "utf-8" (or one of the other Unicode variants) conversion is most likely done in a way that the reverse conversion results in the same text. When 'encoding' is not "utf-8" special characters may be lost! - For an empty file or a file with only ASCII characters most encodings - will work and the first entry of 'fileencodings' will be used (except - "ucs-bom", which requires the BOM to be present). If you prefer - another encoding use an BufReadPost autocommand event to test if your - preferred encoding is to be used. Example: > - au BufReadPost * if search('\S', 'w') == 0 | - \ set fenc=iso-2022-jp | endif -< This sets 'fileencoding' to "iso-2022-jp" if the file does not contain - non-blank characters. - Note that 'fileencodings' is not used for an new file, 'fileencoding' - is always emtpy then. This means that a non-existing file may get a - different encoding than an empty file. The special value "ucs-bom" can be used to check for a Unicode BOM (Byte Order Mark) at the start of the file. It must not be preceded by "utf-8" or another Unicode encoding for this to work properly. - An entry for an 8-bit encoding (e.g., "latin1") should be the last, - because Vim cannot detect an error, thus the encoding is always - accepted. - WRONG VALUES: WHAT'S WRONG: - latin1,utf-8 "latin1" will always be used - utf-8,ucs-bom,latin1 BOM won't be recognized in an utf-8 - file - cp1250,latin1 "cp1250" will always be used If 'fileencodings' is empty, 'fileencoding' is not modified. - See 'fileencoding' for the possible values. - Setting this option does not have an effect until the next time a file - is read. + See 'encoding' for the possible values. Additionally, values may be + specified that can be handled by the converter (either iconv() or + specified with 'charconvert'). + Old versions of GNU iconv() may cause the conversion to fail (they + request a very large buffer, more than Vim is willing to provide). + Try getting another iconv() implementation. + Unlike 'filecharcode' there is no conversion when the option is set. *'fileformat'* *'ff'* 'fileformat' 'ff' string (MS-DOS, MS-Windows, OS/2 default: "dos", @@ -2342,13 +2077,13 @@ A jump table for the options with a short description can be found at |Q_op|. Vi others: "") global {not in Vi} - This gives the end-of-line (<EOL>) formats that will be tried when - starting to edit a new buffer and when reading a file into an existing - buffer: + This gives the end-of-line (<EOL>) formats that will be tried. It is + used when starting to edit a new buffer and when reading a file into + an existing buffer: - When empty, the format defined with 'fileformat' will be used always. It is not set automatically. - When set to one name, that format will be used whenever a new buffer - is opened. 'fileformat' is set accordingly for that buffer. The + is opened. 'fileformat' is set accordingly for that buffer. The 'fileformats' name will be used when a file is read into an existing buffer, no matter what 'fileformat' for that buffer is set to. - When more than one name is present, separated by commas, automatic @@ -2357,7 +2092,7 @@ A jump table for the options with a short description can be found at |Q_op|. 1. If all lines end in <CR><NL>, and 'fileformats' includes "dos", 'fileformat' is set to "dos". 2. If a <NL> is found and 'fileformats' includes "unix", 'fileformat' - is set to "unix". Note that when a <NL> is found without a + is set to "unix". Note that when a <NL> is found without a preceding <CR>, "unix" is preferred over "dos". 3. If 'fileformats' includes "mac", 'fileformat' is set to "mac". This means that "mac" is only chosen when "unix" is not present, @@ -2411,7 +2146,6 @@ A jump table for the options with a short description can be found at |Q_op|. type that is actually stored with the file. This option is not copied to another buffer, independent of the 's' or 'S' flag in 'cpoptions'. - Only normal file name characters can be used, "/\*?[|<>" are illegal. *'fillchars'* *'fcs'* 'fillchars' 'fcs' string (default "vert:|,fold:-") @@ -2429,7 +2163,7 @@ A jump table for the options with a short description can be found at |Q_op|. fold:c '-' filling 'foldtext' diff:c '-' deleted lines of the 'diff' option - Any one that is omitted will fall back to the default. For "stl" and + Any one that is omitted will fall back to the default. For "stl" and "stlnc" the space will be used when there is highlighting, '^' or '-' otherwise. @@ -2454,7 +2188,7 @@ A jump table for the options with a short description can be found at |Q_op|. feature} When on, the keyboard is mapped for the Farsi character set. Normally you would set 'allowrevins' and use CTRL-_ in insert mode to - toggle this option |i_CTRL-_|. See |farsi.txt|. + toggle this option |i_CTRL-_|. See |farsi.txt|. *'foldclose'* *'fcl'* 'foldclose' 'fcl' string (default "") @@ -2463,7 +2197,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+folding| feature} When set to "all", a fold is closed when the cursor isn't in it and - its level is higher than 'foldlevel'. Useful if you want folds to + its level is higher than 'foldlevel'. Useful if you wants folds to automatically close when moving out of them. *'foldcolumn'* *'fdc'* @@ -2478,7 +2212,7 @@ A jump table for the options with a short description can be found at |Q_op|. See |folding|. *'foldenable'* *'fen'* *'nofoldenable'* *'nofen'* -'foldenable' 'fen' boolean (default on) +'foldenable' 'fen' boolean (default off) local to window {not in Vi} {not available when compiled without the |+folding| @@ -2486,7 +2220,7 @@ A jump table for the options with a short description can be found at |Q_op|. When off, all folds are open. This option can be used to quickly switch between showing all text unfolded and viewing the text with folds (including manually opened or closed folds). It can be toggled - with the |zi| command. The 'foldcolumn' will remain blank when + with the |zi| command. The 'foldcolumn' will remain blank when 'foldenable' is off. This option is set by commands that create a new fold or close a fold. See |folding|. @@ -2509,7 +2243,7 @@ A jump table for the options with a short description can be found at |Q_op|. feature} Used only when 'foldmethod' is "indent". Lines starting with characters in 'foldignore' will get their fold level from surrounding - lines. White space is skipped before checking for this character. + lines. White space is skipped before checking for this character. The default "#" works well for C programs. See |fold-indent|. *'foldlevel'* *'fdl'* @@ -2534,13 +2268,13 @@ A jump table for the options with a short description can be found at |Q_op|. Useful to always start editing with all folds closed (value zero), some folds closed (one) or no folds closed (99). This is done before reading any modeline, thus a setting in a modeline - overrules this option. Starting to edit a file for |diff-mode| also + overrules this option. Starting to edit a file for |diff-mode| also ignores this option and closes all folds. It is also done before BufReadPre autocommands, to allow an autocmd to overrule the 'foldlevel' value for specific files. When the value is negative, it is not used. - *'foldmarker'* *'fmr'* *E536* + *'foldmarker'* *'fmr'* 'foldmarker' 'fmr' string (default: "{{{,}}}") local to window {not in Vi} @@ -2607,10 +2341,9 @@ A jump table for the options with a short description can be found at |Q_op|. percent "%" quickfix ":cn", ":crew", ":make", etc. search search for a pattern: "/", "n", "*", "gd", etc. - (not for a search pattern in a ":" command) tag jumping to a tag: ":ta", CTRL-T, etc. undo undo or redo: "u" and CTRL-R - When the command is part of a mapping this option is not used. Add + When the command is part of a mapping this option is not used. Add the |zv| command to the mapping to get the same effect. When a movement command is used for an operator (e.g., "dl" or "y%") this option is not used. This means the operator will include the @@ -2655,8 +2388,7 @@ A jump table for the options with a short description can be found at |Q_op|. format function will be used |C-indenting|. Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'gdefault'* *'gd'* *'nogdefault'* *'nogd'* 'gdefault' 'gd' boolean (default off) @@ -2701,32 +2433,23 @@ A jump table for the options with a short description can be found at |Q_op|. apply equally to 'grepprg'. For Win32, the default is "findstr /n" if "findstr.exe" can be found, otherwise it's "grep -n". - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. - *'guicursor'* *'gcr'* *E545* *E546* *E548* *E549* + *'guicursor'* *'gcr'* 'guicursor' 'gcr' string (default "n-v-c:block-Cursor/lCursor, ve:ver35-Cursor, o:hor50-Cursor, i-ci:ver25-Cursor/lCursor, r-cr:hor20-Cursor/lCursor, sm:block-Cursor - -blinkwait175-blinkoff150-blinkon175", - for MS-DOS and Win32 console: - "n-v-c:block,o:hor50,i-ci:hor15, - r-cr:hor30,sm:block") + -blinkwait175-blinkoff150-blinkon175") global {not in Vi} {only available when compiled with GUI enabled, and - for MS-DOS and Win32 console} + for MSDOS and Win32 console} This option tells Vim what the cursor should look like in different - modes. It fully works in the GUI. In an MSDOS or Win32 console, only - the height of the cursor can be changed. This can be done by - specifying a block cursor, or a percentage for a vertical or - horizontal cursor. - - The option is a comma separated list of parts. Each part consist of a - mode-list and an argument-list: + modes. The option is a comma separated list of parts. Each part + consist of a mode-list and an argument-list: mode-list:argument-list,mode-list:argument-list,.. The mode-list is a dash separated list of these modes: n Normal mode @@ -2789,8 +2512,11 @@ A jump table for the options with a short description can be found at |Q_op|. :highlight Cursor gui=reverse guifg=NONE guibg=NONE :highlight Cursor gui=NONE guifg=bg guibg=fg < - *'guifont'* *'gfn'* - *E235* *E596* *E610* *E611* + In an MSDOS or Win32 console, only the height of the cursor can be + changed. This can be done by specifying a block cursor, or a + percentage for a vertical or horizontal cursor. + + *'guifont'* *'gfn'* *E235* 'guifont' 'gfn' string (default "") global {not in Vi} @@ -2808,9 +2534,6 @@ A jump table for the options with a short description can be found at |Q_op|. :set guifont=Screen15,\ 7x13,font\\,with\\,commas < will make vim try to use the font "Screen15" first, and if it fails it will try to use "7x13" and then "font,with,commas" instead. - For the GTK+ 2 GUI the font name looks like this: > - :set guifont=Andale\ Mono\ 11 -< That's all. XLFDs are no longer accepted. *E236* Note that the fonts must be mono-spaced (all characters have the same width). @@ -2827,8 +2550,8 @@ A jump table for the options with a short description can be found at |Q_op|. will try to find the related bold and italic fonts. For the Win32 GUI *E244* *E245* - takes these options in the font name: - hXX - height is XX (points, can be floating-point) - wXX - width is XX (points, can be floating-point) + hXX - height is XX (points) + wXX - width is XX (points) b - bold i - italic u - underline @@ -2841,19 +2564,18 @@ A jump table for the options with a short description can be found at |Q_op|. Use a ':' to separate the options. - A '_' can be used in the place of a space, so you don't need to use backslashes to escape the spaces. - - Examples: > + - Example: > :set guifont=courier_new:h12:w5:b:cRUSSIAN - :set guifont=Andale_Mono:h7.5:w4.5 -< See also |font-sizes|. +< Have a look at <http://nova.bsuvc.bsu.edu/prn/monofont/> for + mono-spaced fonts and comments on them. + See also |font-sizes|. - *'guifontset'* *'gfs'* - *E250* *E252* *E234* *E597* *E598* + *'guifontset'* *'gfs'* *E250* *E252* *E234* 'guifontset' 'gfs' string (default "") global {not in Vi} {only available when compiled with GUI enabled and with the |+xfontset| feature} - {not available in the GTK+ 2 GUI} When not empty, specifies two (or more) fonts to be used. The first one for normal English, the second one for your special language. See |xfontset|. @@ -2871,7 +2593,7 @@ A jump table for the options with a short description can be found at |Q_op|. This example works on many X11 systems: > :set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-* < - *'guifontwide'* *'gfw'* *E231* *E533* *E534* + *'guifontwide'* *'gfw'* *E231* 'guifontwide' 'gfw' string (default "") global {not in Vi} @@ -2881,25 +2603,12 @@ A jump table for the options with a short description can be found at |Q_op|. used. Note: The size of these fonts must be exactly twice as wide as the one specified with 'guifont' and the same height. - - All GUI versions but GTK+ 2: - - 'guifontwide' is only used when 'encoding' is set to "utf-8" and - 'guifontset' is empty or invalid. + Only used when 'encoding' is set to "utf-8" and 'guifontset' is empty + or invalid. When 'guifont' is set and a valid font is found in it and 'guifontwide' is empty Vim will attempt to find a matching double-width font and set 'guifontwide' to it. - GTK+ 2 GUI only: *guifontwide_gtk2* - - If set and valid, 'guifontwide' is always used for double width - characters, even if 'encoding' is not set to "utf-8". - Vim does not attempt to find an appropriate value for 'guifontwide' - automatically. If 'guifontwide' is empty Pango/Xft will choose the - font for characters not available in 'guifont'. Thus you do not need - to set 'guifontwide' at all unless you want to override the choice - made by Pango/Xft. - *'guiheadroom'* *'ghr'* 'guiheadroom' 'ghr' number (default 50) global @@ -2907,7 +2616,7 @@ A jump table for the options with a short description can be found at |Q_op|. The number of pixels subtracted from the screen height when fitting the GUI window on the screen. Set this before the GUI is started, e.g., in your |gvimrc| file. When zero, the whole screen height will - be used by the window. When positive, the specified number of pixel + be used by the window. When positive, the specified number of pixel lines will be left for window decorations and other items on the screen. Set it to a negative value to allow windows taller than the screen. @@ -2941,7 +2650,7 @@ A jump table for the options with a short description can be found at |Q_op|. by a yank or delete operation for the "* register. The same applies to the modeless selection. - 'A' Autoselect for the modeless selection. Like 'a', but only + 'A' Autoselect for the modeless selection. Like 'a', but only applies to the modeless selection. 'guioptions' autoselect Visual autoselect modeless ~ @@ -2952,7 +2661,6 @@ A jump table for the options with a short description can be found at |Q_op|. 'c' Use console dialogs instead of popup dialogs for simple choices. - 'f' Foreground: Don't use fork() to detach the GUI from the shell where it was started. Use this for programs that wait for the editor to finish (e.g., an e-mail program). Alternatively you @@ -2966,7 +2674,7 @@ A jump table for the options with a short description can be found at |Q_op|. limitations of X11. For a color icon, see |X11-icon|. 'm' Menu bar is present. - 'M' The system menu "$VIMRUNTIME/menu.vim" is not sourced. Note + 'M' The system menu "$VIMRUNTIME/menu.vim" is not sourced. Note that this flag must be added in the .vimrc file, before switching on syntax or filetype recognition (when the .gvimrc file is sourced the system menu has already been loaded; the @@ -2986,11 +2694,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'l' Left-hand scrollbar is always present. 'L' Left-hand scrollbar is present when there is a vertically split window. - 'b' Bottom (horizontal) scrollbar is present. Its size depends on - the longest visible line, or on the cursor line if the 'h' - flag is included. |gui-horiz-scroll| - 'h' Limit horizontal scrollbar size to the length of the cursor - line. Reduces computations. |gui-horiz-scroll| + 'b' Bottom (horizontal) scrollbar is present. And yes, you may even have scrollbars on the left AND the right if you really want to :-). See |gui-scrollbars| for more information. @@ -3003,7 +2707,7 @@ A jump table for the options with a short description can be found at |Q_op|. the right moment, try adding this flag. This must be done before starting the GUI. Set it in your gvimrc. Adding or removing it after the GUI has started has no effect. - 'F' Add a footer. Only for Motif. See |gui-footer|. + 'F' Add a footer. Only for Motif. See |gui-footer|. *'guipty'* *'noguipty'* 'guipty' boolean (default on) @@ -3013,20 +2717,17 @@ A jump table for the options with a short description can be found at |Q_op|. Only in the GUI: If on, an attempt is made to open a pseudo-tty for I/O to/from shell commands. See |gui-pty|. - *'helpfile'* *'hf'* + *'helpfile'* *'hf'* 'helpfile' 'hf' string (default (MSDOS) "$VIMRUNTIME\doc\help.txt" (others) "$VIMRUNTIME/doc/help.txt") global {not in Vi} - Name of the main help file. All distributed help files should be - placed together in one directory. Additionally, all "doc" directories - in 'runtimepath' will be used. - Environment variables are expanded |:set_env|. For example: - "$VIMRUNTIME/doc/help.txt". If $VIMRUNTIME is not set, $VIM is also - tried. Also see |$VIMRUNTIME| and |option-backslash| about including - spaces and backslashes. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + Name of the help file. All help files should be placed together in + one directory. Environment variables are expanded |:set_env|. For + example: "$VIMRUNTIME/doc/help.txt". If $VIMRUNTIME is not set, $VIM + is also tried. Also see |$VIMRUNTIME| and |option-backslash| + about including spaces and backslashes. + This option cannot be set from a |modeline|, for security reasons. *'helpheight'* *'hh'* 'helpheight' 'hh' number (default 20) @@ -3040,25 +2741,6 @@ A jump table for the options with a short description can be found at |Q_op|. windows. When the height is less than 'helpheight', the height is set to 'helpheight'. Set to zero to disable. - *'helplang'* *'hlg'* -'helplang' 'hlg' string (default: messages language or emtpy) - global - {only available when compiled with the |+multi_lang| - feature} - {not in Vi} - Comma separated list of languages. Vim will use the first language - for which the desired help can be found. The English help will always - be used as a last resort. You can add "en" to prefer English over - another language, but that will only find tags that exist in that - language and not in the English help. - Example: > - :set helplang=de,it -< This will first search German, then Italian and finally English help - files. - When using |CTRL-]| and ":help!" in a non-English help file Vim will - try to find the tag in the current language before using this option. - See |help-translated|. - *'hidden'* *'hid'* *'nohidden'* *'nohid'* 'hidden' 'hid' boolean (default off) global @@ -3069,7 +2751,7 @@ A jump table for the options with a short description can be found at |Q_op|. The commands that move through the buffer list sometimes make a buffer hidden although the 'hidden' option is off: When the buffer is modified, 'autowrite' is off or writing is not possible, and the '!' - flag was used. See also |windows.txt|. + flag was used. See also |windows.txt|. This option is set for one command with ":hide {command}" |:hide|. WARNING: It's easy to forget that you have changes in hidden buffers. Think twice when using ":q!" or ":qa!". @@ -3081,15 +2763,13 @@ A jump table for the options with a short description can be found at |Q_op|. M:ModeMsg,n:LineNr,r:Question, s:StatusLine,S:StatusLineNC,c:VertSplit t:Title,v:Visual,w:WarningMsg,W:WildMenu, - f:Folded,F:FoldColumn,A:DiffAdd, - C:DiffChange,D:DiffDelete,T:DiffText, - >:SignColumn") + f:Folded,F:FoldColumn") global {not in Vi} This option can be used to set highlighting mode for various occasions. It is a comma separated list of character pairs. The first character in a pair gives the occasion, the second the mode to - use for that occasion. The occasions are: + use for that occasion. The occasions are: |hl-SpecialKey| 8 Meta and special keys listed with ":map" |hl-NonText| @ '~' and '@' at the end of the window and characters from 'showbreak' @@ -3115,7 +2795,6 @@ A jump table for the options with a short description can be found at |Q_op|. |hl-WildMenu| W wildcard matches displayed for 'wildmenu' |hl-Folded| f line used for closed folds |hl-FoldColumn| F 'foldcolumn' - |hl-SignColumn| > column used for |signs| The display modes are: r reverse (termcap entry "mr" and "me") @@ -3152,7 +2831,7 @@ A jump table for the options with a short description can be found at |Q_op|. highlighting comes back. When the search pattern can match an end-of-line, Vim will try to highlight all of the matched text. However, this depends on where the - search starts. This will be the first line in the window or the first + search starts. This will be the first line in the window or the first line below a closed fold. A match in a previous line which is not drawn may not continue in an newly drawn line. NOTE: This option is reset when 'compatible' is set. @@ -3221,7 +2900,7 @@ A jump table for the options with a short description can be found at |Q_op|. When Vim was compiled with HAVE_X11 defined, the original icon will be restored if possible |X11|. When this option contains printf-style '%' items, they will be - expanded according to the rules used for 'statusline'. See + expanded according to the rules used for 'statusline'. See 'titlestring' for example settings. {not available when compiled without the |+statusline| feature} @@ -3323,7 +3002,7 @@ A jump table for the options with a short description can be found at |Q_op|. 0 :lmap is off and IM is off 1 :lmap is ON and IM is off 2 :lmap is off and IM is ON - Note that this option changes when using CTRL-^ in Command-line mode + Note that this option changes when using CTRL-^ in Insert mode |c_CTRL-^|. The value is set to 1 when it is not -1 and setting the 'keymap' option to a valid keymap name. @@ -3331,12 +3010,12 @@ A jump table for the options with a short description can be found at |Q_op|. methods. Use 'imdisable' to disable XIM then. *'include'* *'inc'* -'include' 'inc' string (default "^\s*#\s*include") +'include' 'inc' string (default "^#\s*include") global or local to buffer |global-local| {not in Vi} {not available when compiled without the |+find_in_path| feature} - Pattern to be used to find an include command. It is a search + Pattern to be used to find an include command. It is a search pattern, just like for the "/" command (See |pattern|). The default value is for C programs. This option is used for the commands "[i", "]I", "[d", etc.. The 'isfname' option is used to recognize the file @@ -3350,12 +3029,12 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+find_in_path| or |+eval| feature} Expression to be used to transform the string found with the 'include' - option to a file name. Mostly useful to change "." to "/" for Java: > + option to a file name. Mostly useful to change "." to "/" for Java: > :set includeexpr=substitute(v:fname,'\\.','/','g') < The "v:fname" variable will be set to the file name that was detected. Evaluated in the |sandbox|. Also used for the |gf| command if an unmodified file name can't be - found. Allows doing "gf" on the name after an 'include' statement. + found. Allows doing "gf" on the name after an 'include' statement. Also used for |<cfile>|. *'incsearch'* *'is'* *'noincsearch'* *'nois'* @@ -3364,12 +3043,12 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {not available when compiled without the |+extra_search| feature} - While typing a search command, show immediately where the so far - typed pattern matches. The matched string is highlighted. If the + While typing a search pattern, show immediately where the so far + typed pattern matches. The matched string is highlighted. If the pattern is invalid or not found, nothing is shown. The screen will be updated often, this is only useful on fast terminals. Note that the match will be shown, but the cursor is not actually positioned - there. You still need to finish the search command with <CR> to move + there. You still need to finish the search command with <CR> to move the cursor. The highlighting can be set with the 'i' flag in 'highlight'. See also: 'hlsearch'. NOTE: This option is reset when 'compatible' is set. @@ -3387,8 +3066,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'smartindent' indenting. When 'paste' is set this option is not used for indenting. The expression is evaluated with |v:lnum| set to the line number for - which the indent is to be computed. The cursor is also as this line - when the expression is evaluated (but it may be moved around). + which the indent is to be computed. The expression must return the number of spaces worth of indent. It can return "-1" to keep the current indent (this means 'autoindent' is used for the indent). @@ -3466,7 +3144,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} The characters specified by this option are included in file names and path names. Filenames are used for commands like "gf", "[i" and in - the tags file. It is also used for "\f" in a |pattern|. + the tags file. It is also used for "\f" in a |pattern|. Multi-byte characters 256 and above are always included, only the characters up to 255 are specified with this option. For UTF-8 the characters 0xa0 to 0xff are included as well. @@ -3480,8 +3158,8 @@ A jump table for the options with a short description can be found at |Q_op|. cmd.exe. The format of this option is a list of parts, separated with commas. - Each part can be a single character number or a range. A range is two - character numbers with '-' in between. A character number can be a + Each part can be a single character number or a range. A range is two + character numbers with '-' in between. A character number can be a decimal number between 0 and 255 or the ASCII character itself (does not work for digits). Example: "_,-,128-140,#-43" (include '_' and '-' and the range @@ -3500,7 +3178,7 @@ A jump table for the options with a short description can be found at |Q_op|. "a-z,A-Z,@-@" All letters plus the '@' character. A comma can be included by using it where a character number is expected. Example: - "48-57,,,_" Digits, comma and underscore. + "48-57,,,_" Digits, command and underscore. A comma can be excluded by prepending a '^'. Example: " -~,^,,9" All characters from space to '~', excluding comma, plus <Tab>. @@ -3518,7 +3196,7 @@ A jump table for the options with a short description can be found at |Q_op|. |pattern|. See 'isfname' for a description of the format of this option. Careful: If you change this option, it might break expanding - environment variables. E.g., when '/' is included and Vim tries to + environment variables. E.g., when '/' is included and Vim tries to expand "$HOME/.viminfo". Maybe you should change 'iskeyword' instead. *'iskeyword'* *'isk'* @@ -3529,7 +3207,7 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} Keywords are used in searching and recognizing with many commands: - "w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See + "w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See 'isfname' for a description of the format of this option. For C programs you could use "a-z,A-Z,48-57,_,.,-,>". For a help file it is set to all non-blank printable characters except @@ -3594,7 +3272,7 @@ A jump table for the options with a short description can be found at |Q_op|. know. It also means you cannot see it yourself once you have set it, be careful not to make a typing error! - *'keymap'* *'kmp'* *E544* + *'keymap'* *'kmp'* 'keymap' 'kmp' string (default "") local to buffer {not in Vi} @@ -3604,7 +3282,6 @@ A jump table for the options with a short description can be found at |Q_op|. Setting this option to a valid keymap name has the side effect of setting 'iminsert' to one, so that the keymap becomes effective. 'imsearch' is also set to one, unless it was -1 - Only normal file name characters can be used, "/\*?[|<>" are illegal. *'keymodel'* *'km'* 'keymodel' 'km' string (default "") @@ -3621,22 +3298,19 @@ A jump table for the options with a short description can be found at |Q_op|. The 'keymodel' option is set by the |:behave| command. *'keywordprg'* *'kp'* -'keywordprg' 'kp' string (default "man" or "man -s", DOS: ":help", +'keywordprg' 'kp' string (default "man" or "man -s", DOS: "", OS/2: "view /", VMS: "help") - global or local to buffer |global-local| + global {not in Vi} Program to use for the |K| command. Environment variables are - expanded |:set_env|. ":help" may be used to access the Vim internal - help. (Note that previously setting the global option to the empty - value did this, which is now deprecated.) + expanded |:set_env|. When empty ":help" is used. When "man" is used, Vim will automatically translate a count for the "K" command to a section number. Also for "man -s", in which case the "-s" is removed when there is no count. See |option-backslash| about including spaces and backslashes. Example: > :set keywordprg=man\ -s -< This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. +< This option cannot be set from a |modeline|, for security reasons. *'langmap'* *'lmap'* *E357* *E358* 'langmap' 'lmap' string (default "") @@ -3645,7 +3319,7 @@ A jump table for the options with a short description can be found at |Q_op|. {only available when compiled with the |+langmap| feature} This option allows switching your keyboard into a special language - mode. When you are typing text in Insert mode the characters are + mode. When you are typing text in Insert mode the characters are inserted directly. When in command mode the 'langmap' option takes care of translating these special characters to the original meaning of the key. This means you don't have to change the keyboard mode to @@ -3696,7 +3370,6 @@ A jump table for the options with a short description can be found at |Q_op|. matter what $LANG is set to: > :set langmenu=nl_NL.ISO_8859-1 < When 'langmenu' is empty, |v:lang| is used. - Only normal file name characters can be used, "/\*?[|<>" are illegal. If your $LANG is set to a non-English language but you do want to use the English menus: > :set langmenu=none @@ -3726,8 +3399,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} When this option is set, the screen will not be redrawn while executing macros, registers and other commands that have not been - typed. Also, updating the window title is postponed. To force an - update use |:redraw|. + typed. To force an update use |:redraw|. *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* 'linebreak' 'lbr' boolean (default off) @@ -3739,24 +3411,18 @@ A jump table for the options with a short description can be found at |Q_op|. than at the last character that fits on the screen. Unlike 'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file, it only affects the way the file is displayed, not its contents. The - value of 'showbreak' is used to put in front of wrapped lines. - This option is not used when the 'wrap' option is off or 'list' is on. + value of 'showbreak' is used to put in front of wrapped lines. This + option is not used when the 'wrap' option is off or 'list' is on. Note that <Tab> characters after an <EOL> are mostly not displayed with the right amount of white space. - *'lines'* *E593* + *'lines'* 'lines' number (default 24 or terminal height) global - Number of lines of the Vim window. - Normally you don't need to set this. It is done automatically by the - terminal initialization code. + Number of lines in the display. Normally you don't need to set this. + That is done automatically by the terminal initialization code. When Vim is running in the GUI or in a resizable window, setting this - option will cause the window size to be changed. When you only want - to use the size for the GUI, put the command in your |gvimrc| file. - Vim limits the number of lines to what fits on the screen. You can - use this command to get the tallest window possible: > - :set lines=999 -< If you get less lines than expected, check the 'guiheadroom' option. + option may cause the window size to be changed. When you set this option and Vim is unable to change the physical number of lines of the display, the display may be messed up. @@ -3792,7 +3458,6 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+lispindent| feature} Comma separated list of words that influence the Lisp indenting. - |'lisp'| *'list'* *'nolist'* 'list' boolean (default off) @@ -3807,7 +3472,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'listchars' 'lcs' string (default "eol:$") global {not in Vi} - Strings to use in 'list' mode. It is a comma separated list of string + Strings to use in 'list' mode. It is a comma separated list of string settings. eol:c Character to show at the end of each line. When omitted, there is no extra character at the end of the @@ -3817,19 +3482,16 @@ A jump table for the options with a short description can be found at |Q_op|. fill the space that the Tab normally occupies. "tab:>-" will show a Tab that takes four spaces as ">---". When omitted, a Tab is show as ^I. - trail:c Character to show for trailing spaces. When omitted, + trail:c Character to show for trailing spaces. When omitted, trailing spaces are blank. extends:c Character to show in the last column, when 'wrap' is off and the line continues beyond the right of the screen. precedes:c Character to show in the first column, when 'wrap' - is off and there is text preceding the character + is off and there is text preceeding the character visible in the first column. - The characters ':' and ',' should not be used. UTF-8 characters can - be used when 'encoding' is "utf-8", otherwise only printable - characters are allowed. - + The characters ':' and ',' cannot be used. Examples: > :set lcs=tab:>-,trail:- :set lcs=tab:>-,eol:< @@ -3872,8 +3534,7 @@ A jump table for the options with a short description can be found at |Q_op|. NOT used for the ":cf" command. See 'errorfile' for that. Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'makeprg'* *'mp'* 'makeprg' 'mp' string (default "make", VMS: "MMS") @@ -3890,15 +3551,14 @@ A jump table for the options with a short description can be found at |Q_op|. < The placeholder "$*" can be given (even multiple times) to specify where the arguments will be included, for example: > :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} -< This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. +< This option cannot be set from a |modeline|, for security reasons. *'matchpairs'* *'mps'* 'matchpairs' 'mps' string (default "(:),{:},[:]") local to buffer {not in Vi} Characters that form pairs. The |%| command jumps from one to the - other. Currently only single character pairs are allowed, and they + other. Currently only single character pairs are allowed, and they must be different. The characters must be separated by a colon. The pairs must be separated by a comma. Example for including '<' and '>' (HTML): > @@ -3957,7 +3617,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} Maximum amount of memory (in Kbyte) to use for all buffers together. - Maximum value 2000000. Use this to work without a limit. Also see + Maximum value 2000000. Use this to work without a limit. Also see 'maxmem'. *'menuitems'* *'mis'* @@ -4020,7 +3680,7 @@ A jump table for the options with a short description can be found at |Q_op|. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. - *'mouse'* *E538* + *'mouse'* 'mouse' string (default "", "a" for GUI, MS-DOS and Win32) global {not in Vi} @@ -4035,7 +3695,6 @@ A jump table for the options with a short description can be found at |Q_op|. h all previous modes when editing a help file a all previous modes r for |hit-enter| and |more-prompt| prompt - A auto-select in Visual mode Normally you would enable the mouse in all four modes with: > :set mouse=a < When the mouse is not enabled, the GUI will still use the mouse for @@ -4044,7 +3703,7 @@ A jump table for the options with a short description can be found at |Q_op|. See |mouse-using|. Also see |'clipboard'|. Note: When enabling the mouse in a terminal, copy/paste will use the - "* register if there is access to an X-server. The xterm handling of + "* register if there is access to an X-server. The xterm handling of the mouse buttons can still be used by keeping the shift key pressed. Also see the 'clipboard' option. @@ -4103,9 +3762,9 @@ A jump table for the options with a short description can be found at |Q_op|. The 'mousemodel' option is set by the |:behave| command. - *'mouseshape'* *'mouses'* *E547* + *'mouseshape'* *'mouses'* 'mouseshape' 'mouses' string (default "i:beam,r:beam,s:updown,sd:cross, - m:no,ml:up-arrow,v:rightup-arrow" + m:no,v:rightup-arrow" global {not in Vi} {only available when compiled with the |+mouseshape| @@ -4129,8 +3788,7 @@ A jump table for the options with a short description can be found at |Q_op|. c appending to the command-line ci inserting in the command-line cr replacing in the command-line - m at the 'Hit ENTER' or 'More' prompts - ml idem, but cursor in the last line + m At the 'Hit ENTER' or 'More' prompts e any mode, pointer below last window s any mode, pointer on a status line sd any mode, while dragging a status line @@ -4150,8 +3808,8 @@ A jump table for the options with a short description can be found at |Q_op|. x udsizing indicates up-down resizing x lrsizing indicates left-right resizing x crosshair like a big thin + - x hand1 black hand - x hand2 white hand + x hand1 white hand + x hand2 black hand x pencil what you write with x question big ? x rightup-arrow arrow pointing right-up @@ -4160,11 +3818,11 @@ A jump table for the options with a short description can be found at |Q_op|. The "avail" column contains a 'w' if the shape is available for Win32, x for X11. - Any modes not specified or shapes not available use the normal mouse + Any modes not specifed or shapes not available use the normal mouse pointer. Example: > - :set mouseshape=s:udsizing,m:no + :set mouseshape=s:size,m:no < will make the mouse turn to a sizing arrow over the status lines and indicate no input when the hit-enter prompt is displayed (since clicking the mouse has no effect in this state.) @@ -4231,11 +3889,11 @@ A jump table for the options with a short description can be found at |Q_op|. 'paste' boolean (default off) global {not in Vi} - Put Vim in Paste mode. This is useful if you want to cut or copy - some text from one window and paste it in Vim. This will avoid + Put Vim in Paste mode. This is useful if you want to cut or copy + some text from one window and paste it in Vim. This will avoid unexpected effects. Setting this option is useful when using Vim in a terminal, where Vim - cannot distinguish between typed text and pasted text. In the GUI, Vim + cannot distinguish between typed text and pasted text. In the GUI, Vim knows about pasting and will mostly do the right thing without 'paste' being set. The same is true for a terminal where Vim handles the mouse clicks itself. @@ -4296,7 +3954,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+diff| feature} Expression which is evaluated to apply a patch to a file and generate - the resulting new version of the file. See |diff-patchexpr|. + the resulting new version of the file. See |diff-patchexpr|. *'patchmode'* *'pm'* *E206* 'patchmode' 'pm' string (default "") @@ -4317,11 +3975,10 @@ A jump table for the options with a short description can be found at |Q_op|. Using 'patchmode' for compressed files appends the extension at the end (e.g., "file.gz.orig"), thus the resulting name isn't always recognized as a compressed file. - Only normal file name characters can be used, "/\*?[|<>" are illegal. *'path'* *'pa'* *E343* *E345* *E347* 'path' 'pa' string (default on Unix: ".,/usr/include,," - on OS/2: ".,/emx/include,," + on OS/2: ".,/emx/include,," other systems: ".,,") global or local to buffer |global-local| {not in Vi} @@ -4367,7 +4024,7 @@ A jump table for the options with a short description can be found at |Q_op|. :set path=.,c:/include < Don't forget "." or files won't even be found in the same directory as the file! - The maximum length is limited. How much depends on the system, mostly + The maximum length is limited. How much depends on the system, mostly it is something like 256 or 1024 characters. You can check if all the include files are found, using the value of 'path', see |:checkpath|. @@ -4384,23 +4041,7 @@ A jump table for the options with a short description can be found at |Q_op|. < Replace the ';' with a ':' or whatever separator is used. Note that this doesn't work when $INCL contains a comma or white space. - *'preserveindent'* *'pi'* *'nopreserveindent'* *'nopi'* -'preserveindent' 'pi' boolean (default off) - local to buffer - {not in Vi} - When changing the indent of the current line, preserve as much of the - indent structure as possible. Normally the indent is replaced by a - series of tabs followed by spaces as required (unless |'expandtab'| is - enabled, in which case only spaces are used). Enabling this option - means the indent will preserve as many existing characters as possible - for indenting, and only add additional tabs or spaces as required. - NOTE: When using ">>" multiple times the resulting indent is a mix of - tabs and spaces. You might not like this. - NOTE: 'preserveindent' is reset when 'compatible' is set. - Also see 'copyindent'. - Use |:retab| to clean up white space. - - *'previewheight'* *'pvh'* + *'previewheight'* *'pvh'* 'previewheight' 'pvh' number (default 12) global {not in Vi} @@ -4409,14 +4050,13 @@ A jump table for the options with a short description can be found at |Q_op|. Default height for a preview window. Used for |:ptag| and associated commands. Used for |CTRL-W_}| when no count is given. - *'previewwindow'* *'nopreviewwindow'* - *'pvw'* *'nopvw'* *E590* + *'previewwindow'* *'nopreviewwindow'* *'pvw'* *'nopvw'* 'previewwindow' 'pvw' boolean (default off) local to window {not in Vi} {not available when compiled without the |+windows| or |+quickfix| feature} - Identifies the preview window. Only one window can have this option + Identifies the preview window. Only one window can have this option set. It's normally not set directly, but by using one of the commands |:ptag|, |:pedit|, etc. @@ -4432,48 +4072,6 @@ A jump table for the options with a short description can be found at |Q_op|. in the standard printer dialog. If the option is empty, then vim will use the system default printer for ":hardcopy!" - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. - - *'printencoding'* *'penc'* *E620* -'printencoding' 'penc' String (default empty, except for: - Windows, OS/2: cp1252, - Macintosh: mac-roman, - VMS: dec-mcs, - HPUX: hp-roman8, - EBCDIC: ebcdic-uk) - global - {not in Vi} - {only available when compiled with the |+printer| - and |+postscript| features} - Sets the character encoding used when printing. This option tells VIM - which print character encoding file from the "print" directory in - 'runtimepath' to use. - - This option will accept any value from |encoding-names|. Any - recognized names are converted to VIM standard names - see 'encoding' - for more details. Names not recognized by VIM will just be converted - to lower case and underscores replaced with '-' signs. - - If 'printencoding' is empty or VIM cannot find the file then it will - use 'encoding' (if VIM is compiled with |+multi_byte| and it is set an - 8-bit encoding) to find the print character encoding file. If VIM is - unable to find a character encoding file then it will use the "latin1" - print character encoding file. - - When 'encoding' is set to a multi-byte encoding, VIM will try to - convert characters to the printing encoding for printing (if - 'printencoding' is empty then the conversion will be to latin1). - Conversion to a printing encoding other than latin1 will require VIM - to be compiled with the |+iconv| feature. If no conversion is - possible then printing will fail. Any characters that cannot be - converted will be replaced with upside down question marks. - - Four print character encoding files are provided to support default - Mac, VMS, HPUX, and EBCDIC character encodings and are used by default - on these platforms. Code page 1252 print character encoding is used - by default on Windows and OS/2 platforms. - *'printexpr'* *'pexpr'* 'printexpr' 'pexpr' String (default: see below) @@ -4497,14 +4095,14 @@ A jump table for the options with a short description can be found at |Q_op|. On MS-Windows machines the default is to copy the file to the currently specified printdevice: > - system('copy' . ' ' . v:fname_in . ' "' . &printdevice . '"') + system('copy' . ' ' . v:fname_in . ' ' &printdevice) . delete(v:fname_in) < On VMS machines the default is to send the file to either the default or currently specified printdevice: > system('print' . (&printdevice == '' ? '' : ' /queue=' . - &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) < If you change this option, using a function is an easy way to avoid having to escape all the spaces. Example: > @@ -4526,10 +4124,9 @@ A jump table for the options with a short description can be found at |Q_op|. file. In the default value for non-MS-Windows a trick is used: Adding "v:shell_error" will result in a non-zero number when the system() call fails. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. - *'printfont'* *'pfn'* *E613* + *'printfont'* *'pfn'* *E448* 'printfont' 'pfn' string (default "courier") global {not in Vi} @@ -4542,7 +4139,7 @@ A jump table for the options with a short description can be found at |Q_op|. In the Win32 GUI version this specifies a font name with its extra attributes, as with the 'guifont' option. For other systems, only ":h11" is recognized, where "11" is the point - size of the font. When omitted, the point size is 10. + size of the font. When omitted, the points size is 10. *'printheader'* *'pheader'* 'printheader' 'pheader' string (default "%<%f%h%m%=Page %N") @@ -4570,7 +4167,7 @@ A jump table for the options with a short description can be found at |Q_op|. bottom:{spec} bottom margin (default: 5pc) {spec} is a number followed by "in" for inches, "pt" for points (1 point is 1/72 of an - inch), "mm" for millimeters or "pc" for a + inch), "mm" for millimetres or "pc" for a percentage of the media size. Weird example: left:2in,top:30pt,right:16mm,bottom:3pc @@ -4595,7 +4192,7 @@ A jump table for the options with a short description can be found at |Q_op|. number:y Include line numbers in the printed output. number:n (default) No line numbers. - wrap:y (default) Wrap long lines. + wrap:y (default) Wrap long lines. wrap:n Truncate long lines. duplex:off Print on one side. @@ -4613,30 +4210,25 @@ A jump table for the options with a short description can be found at |Q_op|. portrait:y (default) Orientation is portrait. portrait:n Orientation is landscape. - *a4* *letter* + + paper:A4 (default) Paper size: A4 paper:{name} Paper size from this table: - {name} size in cm size in inch ~ - 10x14 25.4 x 35.57 10 x 14 - A3 29.7 x 42 11.69 x 16.54 - A4 21 x 29.7 8.27 x 11.69 - A5 14.8 x 21 5.83 x 8.27 - B4 25 x 35.3 10.12 x 14.33 - B5 17.6 x 25 7.17 x 10.12 - executive 18.42 x 26.67 7.25 x 10.5 - folio 21 x 33 8.27 x 13 - ledger 43.13 x 27.96 17 x 11 - legal 21.59 x 35.57 8.5 x 14 - letter 21.59 x 27.96 8.5 x 11 - quarto 21.59 x 27.5 8.5 x 10.83 - statement 13.97 x 21.59 5.5 x 8.5 - tabloid 27.96 x 43.13 11 x 17 - - formfeed:n (default) Treat form feed characters (0x0c) as a normal - print character. - formfeed:y When a form feed character is encountered, - continue printing of the current line at the - beginning of the first line on a new page. + {name} size in inch ~ + 10x14 10 x 14 + A3 11.69 x 16.54 + A4 8.27 x 11.69 + A5 5.83 x 8.27 + B4 10.12 x 14.33 + B5 7.17 x 10.12 + executive 7.25 x 10.5 + folio 8.27 x 13 + ledger 17 x 11 + legal 8.5 x 14 + letter 8.5 x 11 + quarto 8.5 x 10.83 + statement 5.5 x 8.5 + tabloid 11 x 17 The item indicated with (default) is used when the item is not present. The values are not always used, especially when using a @@ -4647,6 +4239,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'readonly'* *'ro'* *'noreadonly'* *'noro'* 'readonly' 'ro' boolean (default off) local to buffer + {not in Vi} If on, writes fail unless you use a '!'. Protects you from accidentally overwriting a file. Default on when Vim is started in read-only mode ("vim -R") or when the executable is called "view". @@ -4672,7 +4265,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'restorescreen'* *'rs'* *'norestorescreen'* *'nors'* 'restorescreen' 'rs' boolean (default on) global - {not in Vi} {only in Windows 95/NT console version} + {not in Vi} {Windows 95/NT console version only} When set, the screen contents is restored when exiting Vim. This also happens when executing external commands. @@ -4700,29 +4293,14 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {only available when compiled with the |+rightleft| feature} - When on, display orientation becomes right-to-left, i.e., characters - that are stored in the file appear from the right to the left. - Using this option, it is possible to edit files for languages that - are written from the right to the left such as Hebrew and Arabic. - This option is per window, so it is possible to edit mixed files + When on, display orientation becomes right-to-left, i.e., character + that are stored in the file appear from the right to the left. Using + this option, it is possible to edit files for languages that are + written from the right to the left such as Hebrew and Arabic. This + option is per window, so it is possible to edit mixed files simultaneously, or to view the same file in both ways (this is - useful whenever you have a mixed text file with both right-to-left - and left-to-right strings so that both sets are displayed properly - in different windows). Also see |rileft.txt|. - - *'rightleftcmd'* *'rlc'* *'norightleftcmd'* *'norlc'* -'rightleftcmd' 'rlc' string (default "search") - local to window - {not in Vi} - {only available when compiled with the |+rightleft| - feature} - Each word in this option enables the command line editing to work in - right-to-left mode for a group of commands: - - search "/" and "?" commands - - This is useful for languages such as Hebrew, Arabic and Farsi. - The 'rightleft' option must be set for 'rightleftcmd' to take effect. + sometimes useful when editing Hebrew TeX--XeT files). See + |rileft.txt|. *'ruler'* *'ru'* *'noruler'* *'noru'* 'ruler' 'ru' boolean (default off) @@ -4731,14 +4309,14 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+cmdline_info| feature} Show the line and column number of the cursor position, separated by a - comma. When there is room, the relative position of the displayed + comma. When there is room, the relative position of the displayed text in the file is shown on the far right: Top first line is visible Bot last line is visible All first and last line are visible 45% relative position in the file If 'rulerformat' is set, it will determine the contents of the ruler. - Each window has its own ruler. If a window has a status line, the + Each window has its own ruler. If a window has a status line, the ruler is shown there. Otherwise it is shown in the last line of the screen. If the statusline is given by 'statusline' (ie. not empty), this option takes precedence over 'ruler' and 'rulerformat' @@ -4767,7 +4345,7 @@ A jump table for the options with a short description can be found at |Q_op|. Example: > :set rulerformat=%15(%c%V\ %p%%%) < - *'runtimepath'* *'rtp'* *vimfiles* + *'runtimepath'* *'rtp'* 'runtimepath' 'rtp' string (default: Unix: "$HOME/.vim, $VIM/vimfiles, @@ -4810,7 +4388,6 @@ A jump table for the options with a short description can be found at |Q_op|. lang/ menu translations |:menutrans| menu.vim GUI menus |menu.vim| plugin/ plugin scripts |write-plugin| - print/ files for printing |postscript-print-encoding| syntax/ syntax files |mysyntaxfile| tutor/ files for vimtutor |tutor| @@ -4821,7 +4398,6 @@ A jump table for the options with a short description can be found at |Q_op|. 2. In a system-wide Vim directory, for preferences from the system administrator. 3. In $VIMRUNTIME, for files distributed with Vim. - *after-directory* 4. In the "after" directory in the system-wide Vim directory. This is for the system administrator to overrule or add to the distributed defaults (rarely needed) @@ -4831,7 +4407,7 @@ A jump table for the options with a short description can be found at |Q_op|. Note that, unlike 'path', no wildcards like "**" are allowed. Normal wildcards are allowed, but can significantly slow down searching for - runtime files. For speed, use as few items as possible and avoid + runtime files. For speed, use as few items as possible and avoid wildcards. See |:runtime|. Example: > @@ -4845,8 +4421,7 @@ A jump table for the options with a short description can be found at |Q_op|. to find files which replace a distributed runtime files. You can put a directory after $VIMRUNTIME to find files which add to distributed runtime files. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'scroll'* *'scr'* 'scroll' 'scr' number (default: half the window height) @@ -4854,7 +4429,7 @@ A jump table for the options with a short description can be found at |Q_op|. Number of lines to scroll with CTRL-U and CTRL-D commands. Will be set to half the number of lines in the window when the window size changes. If you give a count to the CTRL-U or CTRL-D command it will - be used as the new value for 'scroll'. Reset to half the window + be used as the new value for 'scroll'. Reset to half the window height with ":set scroll=0". {Vi is a bit different: 'scroll' gives the number of screen lines instead of file lines, makes a difference when lines wrap} @@ -4871,9 +4446,6 @@ A jump table for the options with a short description can be found at |Q_op|. differences between two versions of a file, see 'diff'. See |'scrollopt'| for options that determine how this option should be interpreted. - This option is mostly reset when splitting a window to edit another - file. This means that ":split | edit file" results in two windows - with scroll-binding, but ":split file" does not. *'scrolljump'* *'sj'* 'scrolljump' 'sj' number (default 1) @@ -4893,7 +4465,7 @@ A jump table for the options with a short description can be found at |Q_op|. you set it to a very large value (999) the cursor line will always be in the middle of the window (except at the start or end of the file or when long lines wrap). - For scrolling horizontally see 'sidescrolloff'. + For scrolling horizontallly see 'sidescrolloff'. NOTE: This option is set to 0 when 'compatible' is set. *'scrollopt'* *'sbo'* @@ -4934,7 +4506,7 @@ A jump table for the options with a short description can be found at |Q_op|. two letters (See |object-motions|). The default makes a section start at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh". - *'secure'* *'nosecure'* *E523* + *'secure'* *'nosecure'* 'secure' boolean (default off) global {not in Vi} @@ -4943,10 +4515,9 @@ A jump table for the options with a short description can be found at |Q_op|. displayed. Switch it off only if you know that you will not run into problems, or when the 'exrc' option is off. On Unix this option is only used if the ".vimrc" or ".exrc" is not owned by you. This can be - dangerous if the systems allows users to do a "chown". You better set + dangerous if the systems allows users to do a "chown". You better set 'secure' at the end of your ~/.vimrc then. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'selection'* *'sel'* 'selection' 'sel' string (default "inclusive") @@ -4964,9 +4535,6 @@ A jump table for the options with a short description can be found at |Q_op|. "inclusive" means that the last character of the selection is included in an operation. For example, when "x" is used to delete the selection. - Note that when "exclusive" is used and selecting from the end - backwards, you cannot include the last character of a line, when - starting in Normal mode and 'virtualedit' empty. The 'selection' option is set by the |:behave| command. @@ -5033,14 +4601,14 @@ A jump table for the options with a short description can be found at |Q_op|. Name of the shell to use for ! and :! commands. When changing the value also check these options: 'shelltype', 'shellpipe', 'shellslash' 'shellredir', 'shellquote', 'shellxquote' and 'shellcmdflag'. - It is allowed to give an argument to the command, e.g. "csh -f". + It is allowed to give an argument to the command, e.g. "csh -f". See |option-backslash| about including spaces and backslashes. Environment variables are expanded |:set_env|. If the name of the shell contains a space, you might need to enclose it in quotes. Example: > :set shell=\"c:\program\ files\unix\sh.exe\"\ -f < Note the backslash before each quote (to avoid starting a comment) and - each space (to avoid ending the option value). Also note that the + each space (to avoid ending the option value). Also note that the "-f" is not inside the quotes, because it is not part of the command name. And Vim automagically recognizes the backslashes that are path separators. @@ -5054,8 +4622,7 @@ A jump table for the options with a short description can be found at |Q_op|. For unknown reasons, when using "4dos.com" the current directory is changed to "C:\". To avoid this set 'shell' like this: > :set shell=command.com\ /c\ 4dos -< This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. +< This option cannot be set from a |modeline|, for security reasons. *'shellcmdflag'* *'shcf'* 'shellcmdflag' 'shcf' string (default: "-c", MS-DOS and Win32, when 'shell' @@ -5068,8 +4635,7 @@ A jump table for the options with a short description can be found at |Q_op|. reduce the need to set this option by the user. It's not used for OS/2 (EMX figures this out itself). See |option-backslash| about including spaces and backslashes. See |dos-shell|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'shellpipe'* *'sp'* 'shellpipe' 'sp' string (default ">", "| tee", "|& tee" or "2>&1| tee") @@ -5078,7 +4644,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+quickfix| feature} String to be used to put the output of the ":make" command in the - error file. See also |:make_makeprg|. See |option-backslash| about + error file. See also |:make_makeprg|. See |option-backslash| about including spaces and backslashes. The name of the temporary file can be represented by "%s" if necessary (the file name is appended automatically if no %s appears in the value @@ -5101,8 +4667,7 @@ A jump table for the options with a short description can be found at |Q_op|. Don't forget to precede the space with a backslash: ":set sp=\ ". In the future pipes may be used for filtering and this option will become obsolete (at least for Unix). - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'shellquote'* *'shq'* 'shellquote' 'shq' string (default: ""; MS-DOS and Win32, when 'shell' @@ -5118,8 +4683,7 @@ A jump table for the options with a short description can be found at |Q_op|. or bash, where it should be "\"". The default is adjusted according the value of 'shell', to reduce the need to set this option by the user. See |dos-shell|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'shellredir'* *'srr'* 'shellredir' 'srr' string (default ">", ">&" or ">%s 2>&1") @@ -5144,8 +4708,7 @@ A jump table for the options with a short description can be found at |Q_op|. explicitly set before. In the future pipes may be used for filtering and this option will become obsolete (at least for Unix). - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'shellslash'* *'ssl'* *'noshellslash'* *'nossl'* 'shellslash' 'ssl' boolean (default off) @@ -5158,10 +4721,7 @@ A jump table for the options with a short description can be found at |Q_op|. Note that setting or resetting this option has no effect for some existing file names, thus this option needs to be set before opening any file for best results. This might change in the future. - 'shellslash' only works when a backslash can be used as a path - separator. To test if this is so use: > - if exists('+shellslash') -< + *'shelltype'* *'st'* 'shelltype' 'st' number (default 0) global @@ -5192,8 +4752,7 @@ A jump table for the options with a short description can be found at |Q_op|. Shell or bash, where it should be "\"". The default is adjusted according the value of 'shell', to reduce the need to set this option by the user. See |dos-shell|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'shiftround'* *'sr'* *'noshiftround'* *'nosr'* 'shiftround' 'sr' boolean (default off) @@ -5207,7 +4766,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'shiftwidth'* *'sw'* 'shiftwidth' 'sw' number (default 8) local to buffer - Number of spaces to use for each step of (auto)indent. Used for + Number of spaces to use for each step of (auto)indent. Used for |'cindent'|, |>>|, |<<|, etc. *'shortmess'* *'shm'* @@ -5272,18 +4831,17 @@ A jump table for the options with a short description can be found at |Q_op|. or crossdos. When running the Win32 GUI version under Win32s, this option is always on by default. - *'showbreak'* *'sbr'* *E595* + *'showbreak'* *'sbr'* 'showbreak' 'sbr' string (default "") global {not in Vi} {not available when compiled without the |+linebreak| feature} String to put at the start of lines that have been wrapped. Useful - values are "> " or "+++ ". - Only printable single-cell characters are allowed, excluding <Tab> and - comma (in a future version the comma might be used to separate the - part that is shown at the end and at the start of a line). - The characters are highlighted according to the '@' flag in + values are "> " or "+++ ". Only printable characters are allowed, + excluding <Tab> and comma (in a future version the comma might be used + to separate the part that is shown at the end and at the start of a + line). The characters are highlighted according to the '@' flag in 'highlight'. Note that tabs after the showbreak will be displayed differently. If you want the 'showbreak' to appear in between line numbers, add the @@ -5296,7 +4854,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {not available when compiled without the |+cmdline_info| feature} - Show (partial) command in status line. Set this option off if your + Show (partial) command in status line. Set this option off if your terminal is slow. In Visual mode the size of the selected area is shown: - When selecting characters within a line, the number of characters. @@ -5311,7 +4869,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} When completing a word in insert mode (see |ins-completion|) from the tags file, show both the tag name and a tidied-up form of the search - pattern (if there is one) as possible matches. Thus, if you have + pattern (if there is one) as possible matches. Thus, if you have matched a C function, you can see a template for what arguments are required (coding style permitting). @@ -5327,9 +4885,6 @@ A jump table for the options with a short description can be found at |Q_op|. will immediately move the cursor back to where it belongs. See the "sm" field in 'guicursor' for setting the cursor shape and blinking when showing the match. - The 'matchpairs' option can be used to specify the characters to show - matches for. 'rightleft' and 'revins' are used to look for opposite - matches. Note: For the use of the short form parental guidance is advised. *'showmode'* *'smd'* *'noshowmode'* *'nosmd'* @@ -5338,7 +4893,7 @@ A jump table for the options with a short description can be found at |Q_op|. If in Insert, Replace or Visual mode put a message on the last line. Use the 'M' flag in 'highlight' to set the type of highlighting for this message. - When |XIM| may be used the message will include "XIM". But this + When |XIM| may be used the message will include "XIM". But this doesn't mean XIM is really active, especially when 'imactivatekey' is not set. NOTE: This option is set to the Vi default value when 'compatible' is @@ -5361,7 +4916,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} The minimal number of screen columns to keep to the left and to the right of the cursor if 'nowrap' is set. Setting this option to a value - greater than 0 while having |'sidescroll'| also at a non-zero value + greater than 0 while having |'sidescroll'| also at a nonzero value makes some context visible in the line you are scrolling in horizontally (except at the end and beginning of the line). Setting this option to a large value (like 999) has the effect of keeping the @@ -5384,7 +4939,7 @@ A jump table for the options with a short description can be found at |Q_op|. Override the 'ignorecase' option if the search pattern contains upper case characters. Only used when the search pattern is typed and 'ignorecase' option is on. Used for the commands "/", "?", "n", "N", - ":g" and ":s". Not used for "*", "#", "gd", tag search, etc.. After + ":g" and ":s". Not used for "*", "#", "gd", tag search, etc.. After "*" and "#" you can make 'smartcase' used by doing a "/" command, recalling the search pattern from history and hitting <Enter>. NOTE: This option is reset when 'compatible' is set. @@ -5409,11 +4964,11 @@ A jump table for the options with a short description can be found at |Q_op|. given the same indent as the matching '{'. When typing '#' as the first character in a new line, the indent for that line is removed, the '#' is put in the first column. The indent - is restored for the next line. If you don't want this, use this + is restored for the next line. If you don't want this, use this mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H. When using the ">>" command, lines starting with '#' are not shifted right. - NOTE: 'smartindent' is reset when 'compatible' is set. When 'paste' + NOTE: 'smartindent' is reset when 'compatible' is set. When 'paste' is set smart indenting is disabled. *'smarttab'* *'sta'* *'nosmarttab'* *'nosta'* @@ -5421,8 +4976,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When on, a <Tab> in front of a line inserts blanks according to - 'shiftwidth'. 'tabstop' is used in other places. A <BS> will delete - a 'shiftwidth' worth of space at the start of the line. + 'shiftwidth'. 'tabstop' is used in other places. When off a <Tab> always inserts blanks according to 'tabstop'. 'shiftwidth' is only used for shifting text left or right |shift-left-right|. @@ -5445,8 +4999,6 @@ A jump table for the options with a short description can be found at |Q_op|. 'softtabstop' is set to 0 when the 'paste' option is set. See also |ins-expandtab|. When 'expandtab' is not set, the number of spaces is minimized by using <Tab>s. - The 'L' flag in 'cpoptions' changes how tabs are used when 'list' is - set. NOTE: This option is set to 0 when 'compatible' is set. *'splitbelow'* *'sb'* *'nosplitbelow'* *'nosb'* @@ -5473,7 +5025,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} When "on" the commands listed below move the cursor to the first blank of the line. When off the cursor is kept in the same column - (if possible). This applies to the commands: CTRL-D, CTRL-U, CTRL-B, + (if possible). This applies to the commands: CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", "L", , and to the commands "d", "<<" and ">>" with a linewise operator, with "%" with a count and to buffer changing commands (CTRL-^, :bnext, :bNext, etc.). Also for an Ex command that @@ -5482,7 +5034,7 @@ A jump table for the options with a short description can be found at |Q_op|. where it was the last time the buffer was edited. NOTE: This option is set when 'compatible' is set. - *'statusline'* *'stl'* *E540* *E541* *E542* + *'statusline'* *'stl'* 'statusline' 'stl' string (default empty) global {not in Vi} @@ -5495,7 +5047,7 @@ A jump table for the options with a short description can be found at |Q_op|. normal text. Each status line item is of the form: %-0{minwid}.{maxwid}{item} All fields except the {item} is optional. A single percent sign can - be given as "%%". Up to 80 items can be specified. + be given as "%%". Note that the only effect of 'ruler' when this option is set (and 'laststatus' is 2) is controlling the output of |CTRL-G|. @@ -5505,8 +5057,7 @@ A jump table for the options with a short description can be found at |Q_op|. when minwid is larger than the length of the item. 0 Leading zeroes in numeric items. Overridden by '-'. minwid Minimum width of the item, padding as set by '-' & '0'. - Value must be 50 or less. - maxwid Maximum width of the item. Truncation occurs with a '<' + maxwid Maximum width of the item. Truncation occurs with a '<' on the left for text items. Numeric items will be shifted down to maxwid-2 digits followed by '>'number where number is the amount of missing digits, much like @@ -5524,7 +5075,7 @@ A jump table for the options with a short description can be found at |Q_op|. f S Path to the file in the buffer, relative to current directory. F S Full path to the file in the buffer. t S File name (tail) of file in the buffer. - m F Modified flag, text is " [+]"; " [-]" if 'modifiable' is off. + m F Modified flag, text is " [+]" or " [-]" if 'modifiable' is off. M F Modified flag, text is ",+" or ",-". r F Readonly flag, text is " [RO]". R F Readonly flag, text is ",RO". @@ -5549,7 +5100,7 @@ A jump table for the options with a short description can be found at |Q_op|. L N Number of lines in buffer. c N Column number. v N Virtual column number. - V N Virtual column number as -{num}. Not displayed if equal to 'c'. + V N Virtual column number as -{num}. Not displayed if equal to 'c'. p N Percentage through file in lines as in |CTRL-G|. P S Percentage through file of displayed window. This is like the percentage described for 'ruler'. Always 3 in length. @@ -5571,7 +5122,7 @@ A jump table for the options with a short description can be found at |Q_op|. Display of flags are controlled by the following heuristic: If a flag text starts with comma it is assumed that it wants to - separate itself from anything but preceding plaintext. If it starts + separate itself from anything but preceding plaintext. If it starts with a space it is assumed that it wants to separate itself from anything but other flags. That is: A leading comma is removed if the preceding character stems from plaintext. A leading space is removed @@ -5605,13 +5156,13 @@ A jump table for the options with a short description can be found at |Q_op|. edit your .vimrc or whatever with "vim -u NONE" to get it right. Examples: - Emulate standard status line with 'ruler' set > - :set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P -< Similar, but add ascii value of char under the cursor (like "ga") > - :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P -< Display byte count and byte value, modified flag in red. > + Display byte count and byte value, modified flag in red. > :set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b' :hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red +< Emulate standard status line with 'ruler' set > + :set statusline=%<%f%h%m%r%=%l,%c%V\ %P +< Idem, but add ascii value of char under the cursor (like "ga") > + :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P < Display a ,GZ flag if a compressed file is loaded > :set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h... < In the |:autocmd|'s: > @@ -5629,8 +5180,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Files with these suffixes get a lower priority when multiple files match a wildcard. See |suffixes|. Commas can be used to separate the - suffixes. Spaces after the comma are ignored. A dot is also seen as - the start of a suffix. To avoid a dot or comma being recognized as a + suffixes. Spaces after the comma are ignored. A dot is also seen as + the start of a suffix. To avoid a dot or comma being recognized as a separator, precede it with a backslash (see |option-backslash| about including spaces and backslashes). See 'wildignore' for completely ignoring files. @@ -5652,7 +5203,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'swapfile' 'swf' boolean (default on) local to buffer {not in Vi} - Use a swapfile for the buffer. This option can be reset when a + Use a swapfile for the buffer. This option can be reset when a swapfile is not wanted for a specific buffer. For example, with confidential information that even root must not be able to access. Careful: All text will be in memory: @@ -5673,7 +5224,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When this option is not empty a swap file is synced to disk after - writing to it. This takes some time, especially on busy unix systems. + writing to it. This takes some time, especially on busy unix systems. When this option is empty parts of the swap file may be in memory and not written to disk. When the system crashes you may lose more work. On Unix the system does a sync now and then without Vim asking for it, @@ -5700,7 +5251,7 @@ A jump table for the options with a short description can be found at |Q_op|. Supported in |quickfix| commands that display errors. *'syntax'* *'syn'* -'syntax' 'syn' string (default empty) +'syntax' 'syn' string (default emtpy) local to buffer {not in Vi} {not available when compiled without the |+syntax| @@ -5721,7 +5272,6 @@ A jump table for the options with a short description can be found at |Q_op|. Syntax autocommand event is triggered with the value as argument. This option is not copied to another buffer, independent of the 's' or 'S' flag in 'cpoptions'. - Only normal file name characters can be used, "/\*?[|<>" are illegal. *'tabstop'* *'ts'* 'tabstop' 'ts' number (default 8) @@ -5741,7 +5291,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'expandtab'. This way you will always insert spaces. The formatting will never be messed up when 'tabstop' is changed. 3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a - |modeline| to set these values when editing the file again. Only + |modeline| to set these values when editing the file again. Only works when using Vim to edit the file. 4. Always set 'tabstop' and 'shiftwidth' to the same value, and 'noexpandtab'. This should then work (for initial indents only) @@ -5755,7 +5305,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When searching for a tag (e.g., for the |:ta| command), Vim can either - use a binary search or a linear search in a tags file. Binary + use a binary search or a linear search in a tags file. Binary searching makes searching for a tag a LOT faster, but a linear search will find more tags if the tags file wasn't properly sorted. Vim normally assumes that your tags files are sorted, or indicate that @@ -5763,7 +5313,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'tagbsearch' option need to be switched off. When 'tagbsearch' is on, binary searching is first used in the tags - files. In certain situations, Vim will do a linear search instead for + files. In certain situations, Vim will do a linear search instead for certain files, or retry all files with a linear search. When 'tagbsearch' is off, only a linear search is done. @@ -5778,14 +5328,6 @@ A jump table for the options with a short description can be found at |Q_op|. Tags in unsorted tags files, and matches with different case will only be found in the retry. - If a tag file indicates that is is case-fold sorted, the second, - linear search can be avoided for the 'ignorecase' case. Use a value - of '2' in the "!_TAG_FILE_SORTED" line for this. A tag file can be - case-fold sorted with the -f switch to "sort" in most unices, as in - the command: "sort -f -o tags tags". For "Exuberant ctags" version - 5.3 or higher the -f or --fold-case-sort switch can be used for this - as well. Note that case must be folded to uppercase for this to work. - When 'tagbsearch' is off, tags searching is slower when a full match exists, but faster when no full match exists. Tags in unsorted tags files may only be found with 'tagbsearch' off. @@ -5821,8 +5363,8 @@ A jump table for the options with a short description can be found at |Q_op|. of the current file. But only when the 'd' flag is not included in 'cpoptions'. Environment variables are expanded |:set_env|. Also see |tags-option|. - "*", "**" and other wildcards can be used to search for tags files in - a directory tree. See |file-searching|. {not available when compiled + "*" and "**" Wildcards can be used to search for tags files in a + directory tree. See |file-searching|. {not available when compiled without the |+path_extra| feature} If Vim was compiled with the |+emacs_tags| feature, Emacs-style tag files are also supported. They are automatically recognized. The @@ -5845,7 +5387,7 @@ A jump table for the options with a short description can be found at |Q_op|. Resetting this option is useful when using a ":tag" command in a mapping which should not change the tagstack. - *'term'* *E529* *E530* *E531* + *'term'* 'term' string (default is $TERM, if that fails: in the GUI: "builtin_gui" on Amiga: "amiga" @@ -5864,26 +5406,8 @@ A jump table for the options with a short description can be found at |Q_op|. :set term=$TERM < See |termcap|. - *'termbidi'* *'tbidi'* - *'notermbidi'* *'notbidi'* -'termbidi' 'tbidi' boolean (default off, on for "mlterm") - global - {not in Vi} - {only available when compiled with the |+arabic| - feature} - The terminal is in charge of Bi-directionality of text (as specified - by Unicode). The terminal is also expected to do the required shaping - that some languages (such as Arabic) require. - Setting this option implies that 'rightleft' will not be set when - 'arabic' is set and the value of 'arabicshape' will be ignored. - Note that setting 'termbidi' has the immediate effect that - 'arabicshape' is ignored, but 'rightleft' isn't changed automatically. - This option is reset when the GUI is started. - For further details see |arabic.txt|. - - *'termencoding'* *'tenc'* -'termencoding' 'tenc' string (default ""; with GTK+ 2 GUI: "utf-8"; with - Macintosh GUI: "macroman") + *'termencoding'* *'tenc'* +'termencoding' 'tenc' string (default "") global {only available when compiled with the |+multi_byte| feature} @@ -5892,22 +5416,13 @@ A jump table for the options with a short description can be found at |Q_op|. encoding the keyboard produces and the display will understand. For the GUI it only applies to the keyboard ('encoding' is used for the display). - In the Win32 console version the default value is the console codepage - when it differs from the ANSI codepage. - *E617* - Note: This does not apply to the GTK+ 2 GUI. After the GUI has been - successfully initialized, 'termencoding' is forcibly set to "utf-8". - Any attempts to set a different value will be rejected, and an error - message is shown. - For the Win32 GUI 'termencoding' is not used for typed characters, - because the Win32 system always passes Unicode characters. When empty, the same encoding is used as for the 'encoding' option. This is the normal value. Not all combinations for 'termencoding' and 'encoding' are valid. See |encoding-table|. - The value for this option must be supported by internal conversions or - iconv(). When this is not possible no conversion will be done and you - will probably experience problems with non-ASCII characters. + The value for this option must be supported by iconv(). When iconv() + cannot handle the value, no conversion will be done and you will + probably experience problems with non-ASCII characters. Example: You are working with the locale set to euc-jp (Japanese) and want to edit a UTF-8 file: > :let &termencoding = &encoding @@ -5949,8 +5464,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Maximum width of text that is being inserted. A longer line will be broken after white space to get this width. A zero value disables - this. 'textwidth' is set to 0 when the 'paste' option is set. When - 'textwidth' is zero, 'wrapmargin' may be used. See also + this. 'textwidth' is set to 0 when the 'paste' option is set. When + 'textwidth' is zero, 'wrapmargin' may be used. See also 'formatoptions' and |ins-textwidth|. NOTE: This option is set to 0 when 'compatible' is set. @@ -5959,13 +5474,13 @@ A jump table for the options with a short description can be found at |Q_op|. global or local to buffer |global-local| {not in Vi} List of file names, separated by commas, that are used to lookup words - for thesaurus completion commands |i_CTRL-X_CTRL-T|. Each line in + for thesesaurus completion commands |i_CTRL-X_CTRL-T|. Each line in the file should contain words with similar meaning, separated by non-keyword characters (white space is preferred). Maximum line length is 510 bytes. To obtain a file to be used here, check out the wordlist FAQ at http://www.hyphenologist.co.uk . - To include a comma in a file name precede it with a backslash. Spaces + To include a comma in a file name precede it with a backslash. Spaces after a comma are ignored, otherwise spaces are included in the file name. See |option-backslash| about using backslashes. The use of |:set+=| and |:set-=| is preferred when adding or removing @@ -6023,20 +5538,18 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} The time in milliseconds that is waited for a key code or mapped key - sequence to complete. Also used for CTRL-\ CTRL-N and CTRL-\ CTRL-G - when part of a command has been typed. - Normally only 'timeoutlen' is used and 'ttimeoutlen' is -1. When a - different timeout value for key codes is desired set 'ttimeoutlen' to - a non-negative number. + sequence to complete. Normally only 'timeoutlen' is used and + 'ttimeoutlen' is -1. When a different timeout value for key codes is + desired set 'ttimeoutlen' to a non-negative number. ttimeoutlen mapping delay key code delay ~ < 0 'timeoutlen' 'timeoutlen' >= 0 'timeoutlen' 'ttimeoutlen' The timeout only happens when the 'timeout' and 'ttimeout' options - tell so. A useful setting would be > + tell so. A useful setting would be :set timeout timeoutlen=3000 ttimeoutlen=100 -< (time out on mapping after three seconds, time out on key codes after + (time out on mapping after three seconds, time out on key codes after a tenth of a second). *'title'* *'notitle'* @@ -6050,7 +5563,7 @@ A jump table for the options with a short description can be found at |Q_op|. filename [+=-] (path) - VIM Where: filename the name of the file being edited - - indicates the file cannot be modified, 'ma' off + - indicates the file canot be modified, 'ma' off + indicates the file was modified = indicates the file is read-only =+ indicates the file is read-only and modified @@ -6082,8 +5595,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+title| feature} Gives the percentage of 'columns' to use for the length of the window - title. When the title is longer, only the end of the path name is - shown. A '<' character before the path name is used to indicate this. + title. When the title is longer, only the end of the path name is + shown. A '<' character before the path name is used to indicate this. Using a percentage makes this adapt to the width of the window. But it won't work perfectly, because the actual number of characters available also depends on the font used and other things in the title @@ -6100,8 +5613,6 @@ A jump table for the options with a short description can be found at |Q_op|. This option will be used for the window title when exiting Vim if the original title cannot be restored. Only happens if 'title' is on or 'titlestring' is not empty. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. *'titlestring'* 'titlestring' string (default "") global @@ -6125,7 +5636,7 @@ A jump table for the options with a short description can be found at |Q_op|. Some people prefer to have the file name first: > :set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%) < Note the use of "%{ }" and an expression to get the path of the file, - without the file name. The "%( %)" constructs are used to add a + without the file name. The "%( %)" constructs are used to add a separating space only when needed. NOTE: Use of special characters in 'titlestring' may cause the display to be garbled (e.g., when it contains a CR or NL character). @@ -6136,12 +5647,10 @@ A jump table for the options with a short description can be found at |Q_op|. global {only for |+GUI_GTK|, |+GUI_Athena|, |+GUI_Motif| and |+GUI_Photon|} - The contents of this option controls various toolbar settings. The + The contents of this option controls various toolbar settings. The possible values are: icons Toolbar buttons are shown with icons. text Toolbar buttons shown with text. - horiz Icon and text of a toolbar button are - horizontally arranged. {only in GTK+ 2 GUI} tooltips Tooltips are active for toolbar buttons. Tooltips refer to the popup help text which appears after the mouse cursor is placed over a toolbar button for a brief moment. @@ -6158,23 +5667,6 @@ A jump table for the options with a short description can be found at |Q_op|. :set guioptions-=T < Also see |gui-toolbar|. - *'toolbariconsize'* *'tbis'* -'toolbariconsize' 'tbis' string (default "small") - global - {not in Vi} - {only in the GTK+ 2 GUI} - Controls the size of toolbar icons. The possible values are: - tiny Use tiny toolbar icons. - small Use small toolbar icons (default). - medium Use medium-sized toolbar icons. - large Use large toolbar icons. - The exact dimensions in pixels of the various icon sizes depend on - the current theme. Common dimensions are large=32x32, medium=24x24, - small=20x20 and tiny=16x16. - - If 'toolbariconsize' is empty, the global default size as determined - by user preferences or the current theme is used. - *'ttybuiltin'* *'tbi'* *'nottybuiltin'* *'notbi'* 'ttybuiltin' 'tbi' boolean (default on) global @@ -6221,7 +5713,7 @@ A jump table for the options with a short description can be found at |Q_op|. xterm2 Works like "xterm", but with the xterm reporting the mouse position while the mouse is dragged. This works much faster and more precise. Your xterm must at - least at patchlevel 88 / XFree 3.3.3 for this to + least at patchlevel 88 / XFree 3.3.3 for this to work. See below for how Vim detects this automatically. *netterm-mouse* @@ -6296,7 +5788,7 @@ A jump table for the options with a short description can be found at |Q_op|. Vim with the "-n" option, see |startup|. When editing in readonly mode this option will be initialized to 10000. The swapfile can be disabled per buffer with |'swapfile'|. - When 'updatecount' is set from zero to non-zero, swap files are + When 'updatecount' is set from non-zero to zero, swap files are created for all buffers that have 'swapfile' set. When 'updatecount' is set to zero, existing swap files are not deleted. Also see |'swapsync'|. @@ -6323,10 +5815,8 @@ A jump table for the options with a short description can be found at |Q_op|. >= 5 Every searched tags file. >= 8 Files for which a group of autocommands is executed. >= 9 Every executed autocommand. - >= 12 Every executed function. - >= 13 When an exception is thrown, caught, finished, or discarded. - >= 14 Anything pending in a ":finally" clause. - >= 15 Every executed Ex command (truncated at 200 characters). + >= 12 Every executed function + >= 15 Every executed Ex command (truncated at 200 characters) This option can also be set with the "-V" argument. See |-V|. This option is also set by the |:verbose| command. @@ -6343,8 +5833,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the +mksession feature} Name of the directory where to store files for |:mkview|. - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'viewoptions'* *'vop'* 'viewoptions' 'vop' string (default: "folds,options,cursor") @@ -6353,15 +5842,13 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the +mksession feature} Changes the effect of the |:mkview| command. It is a comma separated - list of words. Each word enables saving and restoring something: + list of words. Each word enables saving and restoring something: word save and restore ~ cursor cursor position in file and in window folds manually created folds, opened/closed folds and local fold options options options and mappings local to a window or buffer (not global values for local options) - slash backslashes in file names replaced with forward - slashes unix with Unix end-of-line format (single <NL>), even when on Windows or DOS @@ -6369,17 +5856,18 @@ A jump table for the options with a short description can be found at |Q_op|. with Unix. The Unix version of Vim cannot source dos format scripts, but the Windows version of Vim can source unix format scripts. - *'viminfo'* *'vi'* *E526* *E527* *E528* + *'viminfo'* *'vi'* + 'viminfo' 'vi' string (Vi default: "", Vim default for MS-DOS, - Windows and OS/2: '20,<50,s10,h,rA:,rB:, - for Amiga: '20,<50,s10,h,rdf0:,rdf1:,rdf2: - for others: '20,<50,s10,h) + Windows and OS/2: '20,"50,h,rA:,rB:, + for Amiga: '20,"50,h,rdf0:,rdf1:,rdf2: + for others: '20,"50,h) global {not in Vi} {not available when compiled without the |+viminfo| feature} When non-empty, the viminfo file is read upon startup and written - when exiting Vim (see |viminfo-file|). The string should be a comma + when exiting Vim (see |viminfo-file|). The string should be a comma separated list of parameters, each consisting of a single character identifying the particular parameter, followed by a number or string which specifies the value of that parameter. If a particular @@ -6391,39 +5879,35 @@ A jump table for the options with a short description can be found at |Q_op|. with an uppercase letter, and don't contain a lowercase letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis" and "_K_L_M" are not. - " Maximum number of lines saved for each register. Old name of - the '<' item, with the disadvantage that you need to put a - backslash before the ", otherwise it will be recognized as the - start of a comment! + " Maximum number of lines saved for each register. If zero then + registers are not saved. When not included, all lines are + saved. Dont forget to put a backslash before the ", otherwise + it will be recognized as the start of a comment! % When included, save and restore the buffer list. If Vim is started with a file name argument, the buffer list is not restored. If Vim is started without a file name argument, the - buffer list is restored from the viminfo file. Buffers + buffer list is restored from the viminfo file. Buffers without a file name and buffers for help files are not written to the viminfo file. ' Maximum number of previously edited files for which the marks are remembered. This parameter must always be included when 'viminfo' is non-empty. - Including this item also means that the |jumplist| and the - |changelist| are stored in the viminfo file. + Including this item also means that the |jumplist| is stored + in the viminfo file. / Maximum number of items in the search pattern history to be - saved. If non-zero, then the previous search and substitute + saved. If non-zero, then the previous search and substitute patterns are also saved. When not included, the value of 'history' is used. : Maximum number of items in the command-line history to be - saved. When not included, the value of 'history' is used. - < Maximum number of lines saved for each register. If zero then - registers are not saved. When not included, all lines are - saved. '"' is the old name for this item. - Also see the 's' item below: limit specified in Kbyte. + saved. When not included, the value of 'history' is used. @ Maximum number of items in the input-line history to be - saved. When not included, the value of 'history' is used. + saved. When not included, the value of 'history' is used. c When included, convert the text in the viminfo file from the 'encoding' used when writing the file to the current 'encoding'. See |viminfo-encoding|. f Whether file marks need to be stored. If zero, file marks ('0 to '9, 'A to 'Z) are not stored. When not present or when - non-zero, they are all stored. '0 is used for the current + non-zero, they are all stored. '0 is used for the current cursor position (when exiting or when doing ":wviminfo"). h Disable the effect of 'hlsearch' when loading the viminfo file. When not included, it depends on whether ":nohlsearch" @@ -6437,23 +5921,17 @@ A jump table for the options with a short description can be found at |Q_op|. ','). This parameter can be given several times. Each specifies the start of a path for which no marks will be stored. This is to avoid removable media. For MS-DOS you - could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:". You can - also use it for temp files, e.g., for Unix: "r/tmp". Case is + could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:". Case is ignored. Maximum length of each 'r' argument is 50 characters. - s Maximum size of an item in Kbyte. If zero then registers are - not saved. Currently only applies to registers. The default - "s10" will exclude registers with more than 10 Kbyte of text. - Also see the '<' item above: line count limit. Example: > - :set viminfo='50,<1000,s100,:0,n~/vim/viminfo + :set viminfo='50,\"1000,:0,n~/vim/viminfo < '50 Marks will be remembered for the last 50 files you edited. - <1000 Contents of registers (up to 1000 lines each) will be + "1000 Contents of registers (up to 1000 lines each) will be remembered. - s100 Registers with more than 100 Kbyte text are skipped. :0 Command-line history will not be saved. n~/vim/viminfo The name of the file to use is "~/vim/viminfo". no / Since '/' is not specified, the default will be used, @@ -6462,14 +5940,10 @@ A jump table for the options with a short description can be found at |Q_op|. no % The buffer list will not be saved nor read back. no h 'hlsearch' highlighting will be restored. - When setting 'viminfo' from an empty value you can use |:rviminfo| to - load the contents of the file, this is not done automatically. - - This option cannot be set from a |modeline| or in the |sandbox|, for - security reasons. + This option cannot be set from a |modeline|, for security reasons. *'virtualedit'* *'ve'* -'virtualedit' 've' string (default "") +'virtualedit' 've' string (default "") global {not in Vi} {not available when compiled without the @@ -6517,7 +5991,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'whichwrap' 'ww' string (Vim default: "b,s", Vi default: "") global {not in Vi} - Allow specified keys that move the cursor left/right to move to the + Allow specified keys that move the cursor left/right to wrap to the previous/next line when the cursor is on the first/last character in the line. Concatenate characters to allow this for these keys: char key mode ~ @@ -6632,7 +6106,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} Completion mode that is used for the character specified with - 'wildchar'. It is a comma separated list of up to four parts. Each + 'wildchar'. It is a comma separated list of up to four parts. Each part specifies what to do for each consecutive use of 'wildchar. The first part specifies the behavior for the first use of 'wildchar', The second part for the second use, etc. @@ -6679,43 +6153,29 @@ A jump table for the options with a short description can be found at |Q_op|. yes ALT key handling is done by the windowing system. ALT key combinations cannot be mapped. menu Using ALT in combination with a character that is a menu - shortcut key, will be handled by the windowing system. Other + shortcut key, will be handled by the windowing system. Other keys can be mapped. If the menu is disabled by excluding 'm' from 'guioptions', the ALT key is never used for the menu. In the Win32 version, the <F10> key is handled like this too, since Windows uses it to select a menu. - *'winheight'* *'wh'* *E591* + *'winheight'* *'wh'* 'winheight' 'wh' number (default 1) global {not in Vi} {not available when compiled without the +windows feature} Minimal number of lines for the current window. This is not a hard - minimum, Vim will use fewer lines if there is not enough room. If the + minimum, Vim will use fewer lines if there is not enough room. If the current window is smaller, its size is increased, at the cost of the height of other windows. Set it to 999 to make the current window - always fill the screen (although this has the drawback that ":all" - will create only two windows). Set it to a small number for normal - editing. - Minimum value is 1. + always fill the screen. Set it to a small number for normal editing. The height is not adjusted after one of the commands to change the height of the current window. 'winheight' applies to the current window. Use 'winminheight' to set the minimal height for other windows. - *'winfixheight'* *'wfh'* *'nowinfixheight'* *'nowfh'* -'winfixheight' 'wfh' boolean (default off) - local to window - {not in Vi} - {not available when compiled without the +windows - feature} - Keep the window height when windows are opened or closed and - 'equalalways' is set. Set by default for the |preview-window| and - |quickfix-window|. - The height may be changed anyway when running out of room. - *'winminheight'* *'wmh'* 'winminheight' 'wmh' number (default 1) global @@ -6749,7 +6209,7 @@ A jump table for the options with a short description can be found at |Q_op|. large number, it will cause errors when opening more than a few windows. A value of 0 to 12 is reasonable. - *'winwidth'* *'wiw'* *E592* + *'winwidth'* *'wiw'* 'winwidth' 'wiw' number (default 20) global {not in Vi} @@ -6772,8 +6232,8 @@ A jump table for the options with a short description can be found at |Q_op|. This option changes how text is displayed. It doesn't change the text in the buffer, see 'textwidth' for that. When on, lines longer than the width of the window will wrap and - displaying continues on the next line. When off lines will not wrap - and only part of long lines will be displayed. When the cursor is + displaying continues on the next line. When off lines will not wrap + and only part of long lines will be displayed. When the cursor is moved to a part that is not shown, the screen will scroll horizontally. The line will be broken in the middle of a word if necessary. See @@ -6788,12 +6248,9 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer Number of characters from the right window border where wrapping starts. When typing text beyond this limit, an <EOL> will be inserted - and inserting continues on the next line. - Options that add a margin, such as 'number' and 'foldcolumn', cause - the text width to be further reduced. This is Vi compatible. - When 'textwidth' is non-zero, this option is not used. - See also 'formatoptions' and |ins-textwidth|. {Vi: works differently - and less usefully} + and inserting continues on the next line. When 'textwidth' is + non-zero, this option is not used. See also 'formatoptions' and + |ins-textwidth|. {Vi: works differently and less usefully} *'wrapscan'* *'ws'* *'nowrapscan'* *'nows'* 'wrapscan' 'ws' boolean (default on) *E384* *E385* @@ -6806,7 +6263,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Allows writing files. When not set, writing a file is not allowed. Can be used for a view-only mode, where modifications to the text are - still allowed. Can be reset with the |-m| or |-M| command line + still allowed. Can be reset with the |-m| or |-M| command line argument. Filtering text is still possible, even though this requires writing a temporary file. diff --git a/ja/options.jax b/ja/options.jax index 6d83892f5..478ea43a5 100644 --- a/ja/options.jax +++ b/ja/options.jax @@ -14,47 +14,47 @@ TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> 2. オプションの自動設定 |auto-setting| 3. オプションの要約 |option-summary| -オプションの概要については、help.txt |option-list| を参照すること。 +オプションの概要については、help.txt |option-list| を参照。 Vimには、特別な働きをさせるための多くの内部変数とスイッチがある。それらのオプ ションには3種類ある。 - 切替オプション boolean オンかオフかのどちらかの値をとる - 数値オプション number 数値の値を取る - 文字列オプション string 文字列の値を取る + *boolean* *toggle* + 切替 boolean オプション オンかオフかのどちらかの値をとる + 数値 number オプション 数値の値を取る + 文字列 string オプション 文字列の値を取る (訳注: このヘルプの中で多く出てくる語句で、分かりにくいものを説明する。 -*ローカルな: +- ローカルな: あるバッファまたはウィンドウにのみ適用されるような、という意味。 -*ローカルオプション: +- ローカルオプション: あるバッファまたはウィンドウ内の設定のみを変え、その他のバッファまたは ウィンドウの設定に影響しないようなオプション。 -*ウィンドウについてローカルな: +- ウィンドウについてローカルな: あるウィンドウにのみ適用されるような、という意味。バッファについてロー カルな、も同様な意味を持つ。 -*グローバルな: +- グローバルな: Vim全体に適用されるような、または、Vim全体で共通の値を使うような、とい う意味。 上の4項目については |option-summary| も参照。 -*バックスラッシュ: - 日本語Windozeで使われる文字のうち、いわゆる半角文字または英数字では、 - バックスラッシュ\ (左は実は全角バックスラッシュ。これではだめ) の代わ - りに円記号\が使われる。 +- non-printable, unprintable: + 文字が画面に表示可能なフォントに対応していないこと。具体的には <CTRL> + などを押しながら入力した文字や <ESC> が例である。主に制御に利用される。 訳語で、さらに相応しいものがあればご提案を下さい。) ============================================================================== 1. オプションの設定 *set-option* *:se* *:set* -:se[t] 既定値と違う設定のオプションを全て表示する。 +:se[t] 既定値と違う値のオプションを全て表示する。 -:se[t] all ターミナルのオプション以外の全てのオプションを表示する。 +:se[t] all ターミナルオプション以外の全てのオプションを表示する。 -:se[t] termcap ターミナルのオプションを全て表示する。Note GUIバージョ - ンでは、キーコードは表示されないので注意すること。なぜ - なら、キーコードは内部的に生成され、変更が不可能だから - だ。それに、GUIバージョンでターミナルコードを変更する - のは便利とは言えない... +:se[t] termcap ターミナルオプションを全て表示する。Note GUIバージョン + では、キーコードは表示されないので注意。なぜなら、キー + コードは内部的に生成され、変更が不可能だからだ。それに、 + GUIバージョンでターミナルコードを変更するのは便利とは + 言えない... :se[t] {option}? {option} の値を表示する。 @@ -68,17 +68,14 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ :se[t] inv{option} 切替オプション: オンとオフを切り替える。 {Vi にはない} *:set-default* *:set-&* *:set-&vi* *:set-&vim* -:se[t] {option}& オプションを既定の値に設定する。オプションによっては、 - オプション 'compatible' の値に影響を受けるかもしれない。 - {Vi にはない} -:se[t] {option}&vi オプションをViでの既定値に設定する。 - {Vi にはない} -:se[t] {option}&vim オプションをVimでの既定値に設定する。 - {Vi にはない} +:se[t] {option}& オプションを既定値に設定する。オプション 'compatible' + のその時点の値によって違うかもしれない。 {Vi にはない} +:se[t] {option}&vi オプションをViの既定値に設定する。 {Vi にはない} +:se[t] {option}&vim オプションをVimの既定値に設定する。 {Vi にはない} -:se[t] all& ターミナルのオプション以外の全てのオプションを既定の値 - に設定する。オプション 'term', 'lines' と 'columns' の - 値は変更されない。 {Vi にはない} +:se[t] all& ターミナルオプション以外の全てのオプションを既定値に設 + 定する。オプション 'term', 'lines' と 'columns' の値は + 変更されない。 {Vi にはない} :se[t] {option}={value} または :se[t] {option}:{value} @@ -86,49 +83,51 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ *:set-args* 数値オプションの値は、10進数、(0x を頭に付けて) 16進数、 または ('0' を頭に付けて) 8進数で指定できる (16進数と8 - 進数は、strtol() 関数を持つマシンでのみ利用可能)。 - オプション 'wildchar' に指定された文字 ('compatible' が - オンになっているなら、既定では <Tab> か CTRL-E である) + 進数は、関数 strtol() を持つマシンでのみ利用可能)。 + オプション 'wildchar' で指定された文字 (既定では + <Tab>、オプション 'compatible' がオンにならば CTRL-E) を打ち込むと、古い値を挿入できる。|cmdline-completion| を参照。 {option} と '=' の間には空白を入れることができる。それ らは無視される。'=' と {value} の間に空白を入れてはい - けない。{value} 内での空白やバックスラッシュの使用に関 - しては、 |option-backslash| を参照すること。 + けない。 + {value} 内での空白や '\' の使用に関しては、 + |option-backslash| を参照 (訳注: 文書先頭も参照)。 :se[t] {option}+={value} *:set+=* 数値オプションに対しては {value} だけその値を増す。文 字列オプションに対しては後ろに {value} を追加する。オ - プションがコンマ区切りのリストであるときは、値が空でな - い限りコンマが前に付け加えられる。オプションがフラグの - リストであるときは、冗長で無駄なフラグは取り除かれる。 - そうでないときは、重複した値に関してチェックはなされな - い。それを防ぐためには、先に値を取り除いてからこのコマ - ンドを使えばよい。 + プションがコンマ区切りのリストのときは、値が空でない限 + り、元の値と {value} の間にコンマが付け加えられる。 + オプションがフラグのリストであるときは、冗長なフラグは + 取り除かれる。そうでないときは、重複した値に関してチェッ + クはない。それを防ぐためには、先に値を取り除けばよい。 例: > :set guioptions-=T guioptions+=T -< 上の |:set-args| も参照すること。 +< 上の |:set-args| も参照。 {Vi にはない} :se[t] {option}^={value} *:set^=* 数値オプションに対してはその値を {value} 倍する。文字 列オプションに対しては前に {value} を追加する。オプショ - ンがコンマ区切りのリストであるときは、値が空でない限り - コンマが付け加えられる。 - 上の |:set-args| も参照すること。 + ンがコンマ区切りのリストのときは、{value} と元の値の間 + にコンマが付け加えられる。 + 上の |:set-args| も参照。 {Vi にはない} :se[t] {option}-={value} *:set-=* 数値オプションに対しては {value} だけその値を減らす。 - 文字列オプションに対しては {value} の値を (それが含ま - れていたら) 取り除く。そのとき {value} が含まれていな - くても、警告やエラーは現れない。オプションがコンマ区切 - りのリストであり、取り除くオプションが唯一の値でない限 - り、コンマも削除される。オプションがフラグのリストであ - るときは、{value} は正確に指定しなければならない。問題 + 文字列オプションに対しては {value} を (それが含まれて + いたら) 取り除く。 + そのとき {value} が含まれていな + くても、警告やエラーは出ない。オプションがコンマ区切り + のリストであり、取り除くオプションが唯一の値でない限り、 + 間のコンマも削除される。 + オプションがフラグのリストであるときは、{value} は値の + 中に現れるままに、正確に指定しなければならない。問題 が起こるのを避けるために、フラグを取り除くときは1個ず つ指定すること。 - 上の |:set-args| も参照すること。 + 上の |:set-args| も参照。 {Vi にはない} 1回のコマンド ":set" に対し、複数の {option} を引数に指定できる。例: > @@ -137,8 +136,8 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ 以降は無視される。 *:set-verbose* -オプション 'verbose' が 0 でないなら、オプションの値を表示する際、同時に、その -値が最後に設定されたのはどこであったかも分かる。例: > +オプション 'verbose' の値が非0 なら、オプションの値を表示するとき、同時に、そ +のオプションが最後に設定されたのはどこであったかも分かる。例: > :verbose set shiftwidth cindent? shiftwidth=4 Last set from modeline @@ -146,170 +145,169 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ Last set from /usr/local/share/vim/vim60/ftplugin/c.vim これは特定のオプション名が指定されたときのみ機能する。コマンド ":set all" や、 引数のないコマンド ":set" ではメッセージが現れない。 -オプションが手動で設定されていると、"Last set" メッセージは現れない。ある名前 -のローカルオプションが2通りの値を持つことはあり得ないので、メッセージはオプショ -ン名を表示しても、必ずしもその値までは表示しない。 -オプションが関数やユーザコマンド、オートコマンドautocommandの実行中に設定され -たときは、それらが定義されているスクリプト名が報告される。 -{Vi mが +eval 機能付きでコンパイルされたときのみ使用可能} +オプションが手動で設定されていると、メッセージ "Last set" は現れない。オプショ +ン名と同じ値を持つ全てのローカルなオプションには値は一つだけなので、メッセージ +はオプション名を表示しても、必ずしもその値までは表示しない。 +オプションが関数やユーザコマンド、オートコマンド autocommand の実行中に設定さ +れたときは、それらが定義されているスクリプト名が報告される。 +{Vi mが |+eval| 機能付きでコンパイルされたときのみ有効} *:set-termcap* -Termcapオプションを設定するには、{option} に "t_xx" の形式を使ってもよい。これ -は termcap によるオプションを上書きする。これはキーマッピングの中で利用するこ -ともできる。"xx" の部分が特別な文字を含むときは、<t_xx> の形式を使うこと: > +Termcap オプションを設定するには、{option} に "t_xx" の形式を使ってもよい。こ +れは termcap による値を上書きする。これはマッピングの中で利用することもできる。 +"xx" の部分が特別な文字を含むときは、<t_xx> の形式を使うこと: > :set <t_#4>=^[Ot -これは、特殊なコードを普通のキーに変換する際にも使われる。例えば、Alt-b で -<Esc>b を入力するには、次の設定を使うこと: > +これは特殊なコードを普通のキーに変換する際にも使われる。例えば Alt-b が <Esc>b +を出力するなら、次のようにすること。 > :set <M-b>=^[b -(ここで ^[ は本物の <Esc> である。それを入力するには、CTRL-V <Esc> を使うこと) -(the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it) -キーマッピングの利点は、どんなときにも機能することである。 +(ここで ^[ は本物の <Esc> である。入力には CTRL-V <Esc> を使うこと) +マッピングの利点は、どんなときにも機能することである。 -コマンド ":set" によるリスト表示は、Viとは見かけが違う。長い文字列オプションは -リストの終わりに現れる。オプションの数も極めて多い。コマンド "set all" による表 -示は、スクリーンに収まらないだろう。そうしたとき、Vimは「継続」プロンプト +コマンド ":set" によるリスト表示の外見は、Viとは違う。長い文字列オプションはリ +ストの終わりに現れる。オプションの数も極めて多い。コマンド "set all" による表 +示は、画面に収まらないだろう。そうしたとき、Vimは「継続」プロンプト |more-prompt| を出す。 *option-backslash* -文字列オプションの値に空白を含めるには、バックスラッシュ (訳注: ファイルの頭を -参照) を空白の前に置く必要がある。値にバックスラッシュそのものを含めるには、バッ -クスラッシュを2個繰り返す。結果的には、オプションの値の中のバックスラッシュの -数は半分になる (端数は切り捨て)。 -例をいくつか挙げる: > - :set tags=tags\ /usr/tags の結果は "tags /usr/tags" - :set tags=tags\\,file の結果は "tags\,file" - :set tags=tags\\\ file の結果は "tags\ file" - -コマンド "|" という文字により ":set" を、後に続くコマンドと分けることができる。 -文字列オプションの値に "|" を含めるには、代わりに "\|" を用いること。次の例で -はオプション 'titlestring' の値を "hi|there" に設定している: > - :set titlestring=hi\|there -しかし次の例では、それぞれオプション 'titlestring' を "hi" に、'iconstring' オ -プションを "there" に設定している: > - :set titlestring=hi|set iconstring=there - -MS-DOSとWIN32では、ファイル名の中のバックスラッシュはほとんど取り除かれない。 -正確に言うと、ファイル名を取るオプション (環境変数が展開されるもの) では、通常 -のファイル名に使われる文字の前のバックスラッシュは取り除かれない。しかし、特別 -な文字 (空白、バックスラッシュそのもの、コンマなど) の前のバックスラッシュは、 -上で説明した通りの働きをする。 -オプションの値が "\\" で始まるときは、上とはまた違う特別な状態になる: > - :set dir=\\machine\path の結果は "\\machine\path" - :set dir=\\\\machine\\path の結果は "\\machine\path" - :set dir=\\path\\file の結果は "\\path\file" (間違い!) -最初の例では、始まりの部分のバックスラッシュはそのまま保たれている。しかし2番 -目の例では、バックスラッシュの数は半分になっている。つまり、バックスラッシュを -そのまま保ちたいときでも、半分にしたいときでも、どちらがよいか指定できることが -分かる。3番目の結果は、おそらく希望通りのものではないだろう。このやり方は避け -ること。 +文字列オプションの値に空白を含めるには、空白の前に '\' を置く必要がある。値に +'\' を含めるには、2個繰り返す。結果的には、オプションの値の中の '\' の数は半分 +になる (端数は切り捨て)。 +例をいくつか挙げる。 > + :set tags=tags\ /usr/tags の結果は "tags /usr/tags" + :set tags=tags\\,file の結果は "tags\,file" + :set tags=tags\\\ file の結果は "tags\ file" + +文字 "|" によって、コマンド ":set" を後に続くコマンドと分けることができる。文 +字列オプションの値に "|" を含めるには、代わりに "\|" を使うこと。次の例ではオ +プション 'titlestring' の値を "hi|there" に設定している。 > + :set titlestring=hi\|there +しかし次の例では、2個のオプション 'titlestring', 'iconstring' をそれぞれ "hi", +"there" に設定している。 > + :set titlestring=hi|set iconstring=there + +MS-DOSとWin32では、ファイル名の中の '\' は大抵は取り除かれない。正確に言うと、 +値にファイル名を取るオプション (環境変数が展開されるもの) では、通常のファイル +名に使われる文字の前の '\' は取り除かれない。しかし、特別な文字 (空白、'\' そ +のもの、コンマ等) の前の '\' は、上で説明した通りの働きをする。 +オプションの値が "\\" で始まるときは、特別な状態になる。 > + :set dir=\\マシン名\パス の結果は "\\マシン名\パス" + :set dir=\\\\マシン名\\パス の結果は "\\マシン名\パス" + :set dir=\\パス\\ファイル の結果は "\\パス\ファイル" (間違い!) +最初の例では、始まりの部分の '\' はそのまま保たれている。しかし2番目の例では、 +'\' の数は半分になっている。つまり、'\' をそのまま保ちたいときでも、半分にした +いときでも、どちらがよいか指定できることが分かる。3番目の結果は、おそらく希望 +通りのものではないだろう。このやり方は避けること。 *add-option-flags* *remove-option-flags* 値がフラグのリストからなるオプションもある。そういったオプションにフラグを追加 -したいとき、既存の値を変更したくないならば、こうすること: > - :set guioptions+=a -オプションからフラグを取り除くには、こうすること: > - :set guioptions-=a -これはオプション 'guioptions' から 'a' フラグを取り除く。 -Note フラグを追加したり取り除いたりする際には、1個ずつ指定するよう注意すること。 +したいとき、既存の値を変更したくないならば、こうすること。 > + :set guioptions+=a +オプションからフラグを取り除くには、こうすること。 > + :set guioptions-=a +これはオプション 'guioptions' からフラグ 'a' を取り除く。 +Note フラグは1個ずつ追加したり取り除いたりするよう注意。オプション 'guioptions' が "ab" という値であるとき、"set guioptions-=ba" は機能しない。な ぜなら、"ba" という文字列は現れていないからである。 *:set_env* *expand-env* *expand-environment-var* ほとんどの文字列オプションで、環境変数は展開される。'$' とそれに続く環境変数名 が、その値に置き換えられる (その環境変数が存在するとき)。環境変数が存在しない -とき、'$' とそれに続く変数名は変更を受けない。識別子に使えない文字 non-id -character (英字、数字、'_' 以外) なら、どれでも環境変数名の後に続けることがで -きる。識別子に使えない文字とそれに続く文字は、環境変数の値の後ろにそのまま追加 -される。例: > - :set term=$TERM.new - :set path=/usr/$INCLUDE,$HOME/include,. -コマンド ":set opt-=" でオプションから文字列を取り除いたり、":set opt+=val" コ -マンドでオプションに文字列を追加したりするときには、環境変数の展開が行われてか -らそうした操作がなされる。 +とき、'$' とそれに続く変数名は変更を受けない。識別子に使えない non-id 文字 (英 +字、数字、'_' 以外) なら、どれでも環境変数名の後に続けることができる。識別子に +使えない文字とそれに続く文字は、環境変数の値の後ろにそのまま追加される。例: > + :set term=$TERM.new + :set path=/usr/$INCLUDE,$HOME/include,. +コマンド ":set opt-=値" でオプションから文字列を取り除いたり、コマンド ":set +opt+=値" でオプションに文字列を追加したりするときには、環境変数の展開が行われ +てからそうした操作がなされる。 ローカル変数の扱い *local-options* いくつかのオプションは、1つのウィンドウや1つのバッファのみに適用される。それぞ れのウィンドウやバッファは、そうしたオプションの独自のコピーを保持しているため、 -その中に独自の値を持つことができる。これにより、あるウィンドウ内では 'list' オ -プションを設定するが、他のウィンドウでは設定しない、というようなことが可能にな -る。またオプション 'shiftwidth' を、あるバッファ内では 3 に設定し、他では 4 に -設定することもできる。 +独自の値を持つことができる。これにより、あるウィンドウ内では 'list' オプション +をオンにするが、他のウィンドウではオフにする、ということが可能になる。またオプ +ション 'shiftwidth' を、あるバッファ内では 3 にし、他では 4 にすることもできる。 -以降では、特定の状況下でそれらのローカル変数がどうなるかを説明する。実際には、 -それらを全て知る必要はない。なぜなら、Vimはおそらくユーザが予想する通りにオプ -ションの値を使うからである。残念ながら、ユーザの予想通りに働くのは、いくらか複 -雑なことである... +以降では、特定の状況下でそれらのローカルオプションがどうなるかを説明する。実際 +には、それらを全て知る必要はない。なぜなら、Vimはおそらくユーザが予想する通り +にオプションの値を使うからである。残念ながら、ユーザの予想通りに働くのは、いく +らか複雑なことである... ウィンドウを分割すると、ローカルオプションは新しいウィンドウにコピーされて引き 継がれる。そのため、ウィンドウを分割した直後には、2つのウィンドウの内容は同じ -である。 +ように見える。 新しいバッファを編集するとき、そのバッファのローカルオプションは初期化されなけ ればならない。その以前のカレントバッファのローカルオプションは、そのバッファの みに適用すべきものかもしれないので、新しいバッファには適用されない。その代わり、 -バッファについてのローカルオプションはそれぞれグローバルな値を持っていて、それ -は新しいバッファに適用される。コマンド ":set" によって、ローカルな値とグローバ -ルな値の両方が変更される。コマンド "setlocal" はローカルな値のみを変更するので、 -それで指定した値は新しいバッファには適用されない。 +バッファについてローカルなオプションにはそれぞれグローバルな値があり、新しいバッ +ファにはそれが適用される。コマンド ":set" によって、ローカルな値とグローバルな +値の両方が変更される。コマンド "setlocal" はローカルな値のみを変更するので、そ +れで指定した値は新しいバッファには適用されない。 -すでに編集されたバッファを編集するときは、最後に使われたウィンドウ内のローカル -オプションが再び使われる。このバッファがこのウィンドウ内ですでに編集されていた -なら、そのときの値が再び用いられる。そうでなければ、そのバッファが最後に編集さ -れたウィンドウ内の値が用いられる。 +すでに編集されているバッファを編集するときは、最後に使われたウィンドウ内のロー +カルオプションが再び使われる。このバッファがこのウィンドウ内ですでに編集されて +いたなら、そのときの値が再び用いられる。そうでなければ、そのバッファが最後に編 +集されたウィンドウ内の値が用いられる。 特定のバッファの種類についてウィンドウ内のローカルオプションを設定することも可 -能である。同じウィンドウ内で別のバッファを編集するとき、ウィンドウ内のローカル -オプションを使い続けたくないときがある。そのためVimはウィンドウ内のローカルオ -プションのグローバルな値を記憶しており、別のバッファの編集時にはそれを用いる。 -ウィンドウはそれぞれ、それらの値の独自のコピーを持っている。そのため、それらの -オプションはウィンドウについてはローカルであるが、そのウィンドウ内の全てのバッ -ファについてグローバルである。それらを用いて、次のようなことが可能である: > - :e one +能である。同じウィンドウ内で別のバッファを編集するときは、ウィンドウについてロー +カルなオプションを使い続けたくはないだろう。そのためVimはウィンドウについてロー +カルなオプションのグローバルな値を記憶しており、別のバッファの編集時にはそれを +用いる。ウィンドウはそれぞれ、それらの値の独自のコピーを持っている。そのため、 +それらのオプションはウィンドウについてはローカルであるが、そのウィンドウ内の全 +てのバッファについてグローバルである。それらを用いて、次のようなことが可能であ +る。 > + :e 一つ目 :set list - :e two -こうするとオプション 'list' はコマンド "two" にも適用される。":set list" によ -り、グローバルな値も変更されたからである。 > + :e 二つ目 +こうするとオプション 'list' はバッファ "二つ目" にも適用される。コマンド +":set list" により、グローバルな値もオンになったからである。 > :set nolist - :e one + :e 一つ目 :setlocal list - :e two -今度は "two" にはオプション 'list' は適用されない。なぜなら ":set nolist" コマ -ンドがグローバルな値をオフに切り替えたが、コマンド ":setlocal list" は "one" バッ -ファについてローカルな値をオンに切り替えただけで、":e two" によるバッファには -グローバルな値が適用されるからである。 Note 注意することは、次にこうすると: > - :e one -最後に "one" バッファを編集したときの通りにオプション 'list' の値が戻るわけで -はない。ウィンドウについてローカルなオプションは、バッファそれぞれに対して復元 -されるわけではないからである。 + :e 二つ目 +今度はバッファ "二つ目" ではオプション 'list' はオフである。なぜならコマンド +":set nolist" がグローバルな値をオフにしたが、コマンド ":setlocal list" はバッ +ファ "一つ目" についてローカルな値をオンにしただけで、":e 二つ目" ではグローバ +ルな値が適用されるからである。 Note 次にこうすると > + :e 一つ目 +最後にバッファ "一つ目" を編集したときの通りにオプション 'list' の値が戻るわけで +はないので注意。ウィンドウについてローカルなオプションは、バッファそれぞれに対 +して復元されるわけではないからである。 *:setl* *:setlocal* -:setl[ocal] ... コマンド ":set" と似ているが、カレントバッファやウィン +:setl[ocal] ... コマンド ":set" と似ているが、カレントバッファ/ウィン ドウについてローカルな値のみを設定する。全てのオプショ ンがローカルな値を持つわけではない。オプションがローカ - ルな値を持たないときは、グローバルな値が設定される。引 - 数に "all" を伴うとき: 全てのローカルオプションのロー - カルな値を表示する。引数がないとき: 全てのローカルオプ - ションのローカルな値で、既定の値と異なるものを表示する。 - 特定のローカルオプションを表示しているとき、ローカルな - 値も表示する。グローバルオプションに対しては、グローバ - ルな値が表示される (しかし、これは将来変更されるかもし - れない)。 {Vi にはない} + ルな値を持たないときは、グローバルな値が設定される。 + 引数が "all" のとき: 全てのローカルオプションのローカ + ルな値を表示する。 + 引数がないとき: 全てのローカルオプションのローカルな値 + で、既定値と異なるものを表示する。 + 特定のローカルオプションを表示するときは、ローカルな値 + も表示する。グローバルオプションに対しては、グローバル + な値が表示される (しかし、これは将来変更されるかもしれ + ない)。 + {Vi にはない} :setl[ocal] {option}< {option} のローカルな値をグローバルな値に設定する。 {Vi にはない} *:setg* *:setglobal* :setg[lobal] ... コマンド ":set" と似ているが、ローカルオプションのグロー - バルな値のみを設定する。ローカルな値は変更しない。オプ - ションを表示するときは、グローバルな値が表示される。引 - 数に "all" を伴うとき: 全てのローカルオプションのグロー - バルな値を表示する。引数がないとき: 全てのローカルオプ - ションのグローバルな値で、既定の値と異なるものを表示す - る。 {Vi にはない} - -バッファやウィンドウについてローカルなオプションに対して: + バルな値のみを設定し、ローカルな値は変更しない。 + オプションの値を表示するときは、グローバルな値が表示さ + れる。 + 引数が "all" のとき: 全てのローカルオプションのグロー + バルな値を表示する。 + 引数がないとき: 全てのローカルオプションのグローバルな + 値で、既定値と異なるものを表示する。 + {Vi にはない} + +バッファ/ウィンドウについてローカルなオプションに対して: コマンド グローバルな値 ローカルな値 ~ :set オプション=値 設定される 設定される :setlocal オプション=値 なし 設定される @@ -323,9 +321,9 @@ character (英字、数字、'_' 以外) なら、どれでも環境変数名の オプションがグローバルであるというのは、一つの値を全てのバッファに用いるような 場合である。いくつかのグローバルオプションでは、ローカルな別の値を持てると便利 -である。ローカルな値は、":setlocal" で設定できる。すると ":setlocal" を実行し -たバッファではローカルな値が用いられるが、他のバッファでは引き続きグローバルな -値が用いられる。 +である。ローカルな値は、コマンド ":setlocal" で設定できる。するとコマンド +":setlocal" を実行したバッファではローカルな値が用いられるが、他のバッファでは +引き続きグローバルな値が用いられる。 例えば、あなたは2つのウィンドウを開き、両方でC言語のソースファイルを編集してい るとする。グローバルなオプション 'makeprg' は両方に適用される。そこでウィンド @@ -335,16 +333,17 @@ character (英字、数字、'_' 以外) なら、どれでも環境変数名の オプション 'makeprg' を設定する必要はない。 しかし、新しいウィンドウでPerlのソースファイルの編集を始めると、'makeprg' に別 の値を設定したくなる。しかしCソースに適用された値を変えたくはない。そんなとき -にはこうする: > +には次のようにする。 > :setlocal makeprg=perlmake -ローカルな値を空にすると、グローバルな値に戻る: > +次のようにローカルな値を空にすると、グローバルな値に戻る。 > :setlocal makeprg= ただし、この方法は文字列オプションにしか使えない。切替オプションには、次のよう -に "<" フラグを使う必要がある: > +に "<" フラグを使う必要がある。 > :setlocal autoread< Note: 切替オプションの変更で "<" を使うと、グローバルな値がローカルな値にコピー -されるが、それは値をグローバルなものに戻すのとは少し違うことに注意すること (こ -れは後でグローバルな値を変更する際に問題になる)。 +されるが、それはグローバルな値を使うようにするのとは少し違うことに注意 (これは +後でグローバルな値を変更する際に問題になる。--訳注: グローバルな値が変更されて +も、"<" でコピーした値までは変更されない。あくまでもローカルな値だから)。 Note: 将来、値にグローバルとローカルの区別のあるオプションが増えたら、グローバ ルオプションにコマンド ":setlocal" を使ったときの結果が変わるかもしれない。 @@ -352,76 +351,79 @@ Note: 将来、値にグローバルとローカルの区別のあるオプシ ファイルタイプの設定 :setf[iletype] {filetype} *:setf* *:setfiletype* - {filetype} に対して 'filetype' を設定する。ただし - autocommand の中 (入れ子になっているときは、外側も含め - て) において初めて実行されたときのみ有効である。これは - 次のコマンドを略したものである: > + {filetype} に対してオプション 'filetype' を設定する。 + ただし autocommand の中 (入れ子になっているときは、外 + 側も含めて) でまだ実行されていないときのみ有効である。 + これは以下のコマンドの略である。 > :if !did_filetype() : setlocal filetype={filetype} :endif -< このコマンドは filetype.vim の中で使われ、'filetype' - オプションが 2度設定されて別の設定や構文ファイルが読み - 込まれることがないようにしている。 {Vi にはない} +< このコマンドは filetype.vim の中で使われ、オプション + 'filetype' が2度設定されて別の設定や構文ファイルが読み + 込まれることがないようにしている。 + {Vi にはない} :bro[wse] se[t] *:set-browse* *:browse-set* *:opt* *:options* :opt[ions] 全てのオプションを表示したり設定するためのウィンドウを - 開く。オプションは機能ごとにまとめられている。 + 開く。 + オプションは機能ごとにまとめられている。 ここではオプションの短い説明が読める。その上で <CR> を 打ち込むと、そのオプションについてのヘルプウィンドウが 開き、詳しい説明が読める。 - 新しい値を設定するには、表示されている値を修正した後に - "set" という行の上で <CR> を打ち込む。ウィンドウやバッ - ファ固有のオプションについては、変更した値は最後に使用 - したウィンドウに適用される。そのウィンドウがヘルプウィ - ンドウだったときは、変更した値はヘルプウィンドウの (オ - プションウィンドウを抜かして) 1つ下のウィンドウに適用 - される。 - {Vi mが |+eval| または |+autocmd| 機能付きでコンパイル - されたときのみ使用可能} + 表示されている値を修正した後に "set" 行の上で <CR> を + 打ち込むと、新しい値を設定できる。ウィンドウやバッファ + 固有のオプションについては、変更した値は最後に使用した + ウィンドウに適用される。そのウィンドウがヘルプウィンド + ウだったときは、変更した値はヘルプウィンドウの (オプショ + ンウィンドウを抜かして) 1つ下のウィンドウに適用される。 + {Vi mが |+eval| 機能と |+autocmd| 機能付きでコンパイル + されたときのみ有効} *$HOME* -"~" は "$HOME" と同様に扱われるが、こちらは値の先頭にあり、空白かコンマの後に -あるときのみ認識される。 +"~" は "$HOME" と同様に扱われるが、こちらは値の先頭にあるか、空白かコンマの後 +にあるときのみ認識される。 -Unix系のシステムでは "~user" も使える。これは "user" というユーザのホームディ +Unix系のシステムでは "~正和" も使える。これは "正和" というユーザのホームディ レクトリに置き換えられる。例: > :set path=~mool/include,/usr/include,. Unix系のシステムでは "${HOME}" という形式も使える。ここで {} の間には識別子に 使えない文字 (訳注: 上を参照) が入ってもよい。 Note これをコマンド "gf" のため -に使いたいなら、オプション '{' と '}' の文字を 'isfname' に追加する必要がある。 +に使いたいなら、文字 '{' と '}' をオプション 'isfname' に追加する必要がある。 -Note 展開されるオプションの値の長さ制限に注意すること。システムごとに異なるが、 -大抵は (訳注: 半角文字で、全角では半分) 256 文字か 1024 文字などの長さである。 +Note 展開されるオプションの値の長さ制限に注意。システムごとに異なるが、大抵は +256文字や1024文字等の長さである (訳注: これは半角の場合で、全角では半分)。 *:fix* *:fixdel* -:fix[del] 't_kD' (訳注: デリートキー) の値を設定する: +:fix[del] ターミナルオプション 't_kD' (訳注: デリートキー) の値 + を設定する。 't_kb' が のとき 't_kD' は ~ CTRL-? CTRL-H CTRL-?以外 CTRL-? (CTRL-? は8進数で 0177、16進数で 0x7f) {Vi にはない} - もしあなたのターミナルでデリートキーのキーコードが間違 - っていて、バックスペースのキーコードは正しかったら、こ - のコマンドを .vimrc に加えればよい: > + ターミナルのデリートキーのキーコードが違っているが、バッ + クスペースのキーコードは正しいときは、次のコマンドをファ + イル .vimrc に加えればよい。 > :fixdel -< これはバックスペースのキーコードが実際に何であっても機 - 能する。 +< これはバックスペースのキーコードが実際に何であっても有 + 効である。 - バックスペースのキーコードが間違っていたら、このように - する: > + バックスペースのキーコードが違っていたら、以下のように + する。 > :if &term == "termname" : set t_kb=^V<BS> : fixdel :endif < ここで "^V" は CTRL-V 、 "<BS>" はバックスペースを表す (実際に「^」「V」などのキーを押さないこと)。"termname" - にはあなたの使うターミナルの種類を当てはめる。 + にはユーザの使うターミナル名を当てはめる。 <Delete> キーが奇妙なキーコード列 (CTRL-? でも CTRL-H - でもない) を送るときは、 ":fixdel" ではなくこれを使う: > + でもない) を送るときは、コマンド ":fixdel" ではなく以 + 下の方法を使う。 > :if &term == "termname" : set t_kD=^V<Delete> :endif @@ -430,79 +432,78 @@ Note 展開されるオプションの値の長さ制限に注意すること。 にはあなたの使うターミナルの種類を当てはめる。 *Linux-backspace* - Note Linuxについての注意: そのままではバックスペースキ - ーは CTRL-? を送るが、これは間違っている。これを修正す - るには、 rc.local に次の行を加える: > + Note Linuxについての注意: 既定ではバックスペースキーは + CTRL-? を送るが、これは違っている。これを修正するには、 + ファイル rc.local に次の行を加える。 > echo "keycode 14 = BackSpace" | loadkeys < *NetBSD-backspace* Note NetBSDについての注意: バックスペースキーが正しい - キーコードを送らないとき、こうすると良いかもしれない: > + キーコードを送らないとき、これを試すこと。 > xmodmap -e "keycode 22 = BackSpace" -< これが有効だったら、 .Xmodmap ファイルに次の行を加える - こと: > +< 有効だったら、ファイル .Xmodmap に次の行を加えること。 > keysym 22 = BackSpace < これを有効にするには、再起動する必要がある。 ============================================================================== 2. オプションの自動設定 *auto-setting* -コマンド ":set" によるオプションの設定のほか、3通りの方法を使って、1つまたは複 -数のファイルに自動的にオプションを設定できる。 +コマンド ":set" によるオプションの設定の他に、3通りの方法で、1つまたは複数のファ +イルに自動的にオプションを設定できる。 1. Vimを起動したとき、様々な場所から初期化設定を読み込ませることができる。 - |initialization| を参照すること。多くの設定はセッション全てに適用されるが、 - いくつかはVimを起動したディレクトリによって異なる。初期化設定ファイルは - |:mkvimrc| や |:mkview| や |:mksession| コマンドで生成できる。 + |initialization| を参照。多くの設定は編集セッション全てに適用されるが、いく + つかはVimを起動したディレクトリによって異なる。初期化設定ファイルはコマンド + |:mkvimrc|, |:mkview|, |:mksession| で生成できる。 2. 新しいファイルの編集を始めたとき、自動的に実行されるコマンドがある。 これを使うと、特定のパターンにマッチするファイルに対してオプションを設定し - たり、様々なことが可能である。|autocommand| を参照すること。 + たり、様々なことが可能である。|autocommand| を参照。 3. 新しいファイルの編集を始めたときオプション 'modeline' がオンなら、ファイル の先頭と末尾の数行ずつがモードラインとして読み込まれる。それをここで説明す る。 *modeline* *vim:* *vi:* *ex:* -モードラインには2つの形式がある。1つ目の形式は次の通りである: +モードラインには2つの形式がある。1つ目の形式は次の通りである。 [text]{white}{vi:|vim:|ex:}[white]{options} [text] 任意のテキスト、なくても良い -{white} 1個以上の空白 (<Space> または <Tab>) +{white} 1個以上の余白 (<Space> または <Tab>) {vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 [white] 空白、なくても良い {options} オプション設定が、空白か ':' で区切られて並んだもので、':' の 間の部分はコマンド ":set" の引数である 例: > - vi:noai:sw=3 ts=6 + vi:noai:sw=3 ts=6 -2つ目の形式は次の通りである (Vi にはこの形式と互換性のあるバージョンがある): +2つ目の形式は次の通りである (Viのヴァージョンによってはこの形式と互換性がある)。 [text]{white}{vi:|vim:|ex:}[white]set {options}:[text] [text] 任意のテキスト、なくても良い -{white} 1個以上の空白 (<Space> または <Tab>) +{white} 1個以上の余白 (<Space> または <Tab>) {vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 [white] 空白、なくても良い -set "set " という文字列 (note 終わりの空白に注意) -{options} オプション設定が、空白で区切られて並んだもので、":set" コマン - ドの引数である +set "set " という文字列 ( NOTE 終わりの空白に注意) +{options} オプション設定が空白で区切られて並んだもので、コマンド ":set" + の引数である : コロン [text] 任意のテキスト、なくても良い 例: > /* vim: set ai tw=75: */ -{vi:|vim:|ex:} の前には空白が必要である。こうすることで "lex:" などの普通の言 -葉を誤認する可能性を低めることができる。ただし例外があり、 "vi:" と "vim:" は -行頭に来てもよい (バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モード -ラインとは見なされない ("example:" の略かもしれないから)。 +"vi:" または "|vim:|" または "ex:" の前には空白が必要である。これが "lex:" 等 +の普通の言葉を誤認する可能性を低めている。ただし例外があり、 "vi:" と "vim:" +は行頭に来てもよい (バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モー +ドラインとは見なされない ("example:" の略かもしれないから)。 *modeline-local* -オプションは ":setlocal" などで設定できる。そうして設定した値は、そのときウィ -ンドウで開かれていたバッファにのみ適用される (訳注: 違うかもしれない。原文は -The new value only applies to the buffer that contains the window.) 。モードラ -インからグローバルオプションを設定することは不可能ではないが、普通そういうこ -とはしない。2つのウィンドウを開いていて、それぞれのファイルが同じグローバル +オプションはコマンド ":setlocal" 等で設定できる。そうして設定した値は、そのと +きウィンドウで開かれていたバッファにのみ適用される (訳注: 違うかもしれない。原 +文は The new value only applies to the buffer that contains the window.)。モー +ドラインからグローバルオプションを設定することは不可能ではないが、普通そういう +ことはしない。2つのウィンドウを開いていて、それぞれのファイルが同じグローバル オプションを違う値に設定しようとしたときは、後に開かれたウィンドウが優先される。 *modeline-version* @@ -514,31 +515,33 @@ The new value only applies to the buffer that contains the window.) 。モード vim>{vers}: バージョン {vers} より後 (そのバージョンを含まない) {vers} に 600 を指定するとVim 6.0を表す (メジャー・バージョンナンバーの100倍足 すマイナー・バージョンナンバー)。 -例えば、Vim 6.0またはそれより新しいバージョンでのみモードラインを使うには: > +例えば、Vim 6.0またはそれより新しいバージョンでのみモードラインを使うにはこう +する。 > /* vim600: set foldmethod=marker: */ -Vim 5.7より古いバージョンでのみモードラインを使うには: > - /* vim<570: set sw=4: */ +Vim 5.7より古いバージョンでのみモードラインを使うにはこうする (訳注: 原典では +vim<570とあったが、これは誤りだろう)。 > + /* vim<507: set sw=4: */ "vim" と ":" の間に空白があってはならない。 -モードラインかどうか調べられる行数はオプション 'modelines' で設定できる。 -オプション 'modeline' オプションがオフであるか 'modelines' が 0 であると、モー -ドラインは調べられない。 +モードラインを探す行数はオプション 'modelines' で設定できる。オプション +'modeline' がオフであるかオプション 'modelines' の値が 0 だと、モードラインを +探さない。 -Note 1番目の形式では、行の終わりまでオプション指定に使われることに注意。そのた -め次のようにすると、行末の "*/" のためにエラーメッセージが現れる: > +Note 1番目の形式では、行全体がオプション指定に使われることに注意。そのため次の +ようにすると、行末の "*/" のためにエラーメッセージが現れる。 > /* vi:ts=4: */ -その代わり、こうすればよい: > +その代わり、こうすればよい。 > /* vi:set ts=4: */ -エラーが検出されると、その行の残りは無視される。 +エラーが発見されると、その行の残りは無視される。 -コマンド "set" の引数に ':' を含めたいときは、その前に '\' を置くこと。':' の前 -のバックスラッシュ (訳注: 文書の頭を参照) は取り除かれる。例: > +コマンド "set" の引数に ':' を含めたいときは、その前に '\' を置くこと。':' の +前の '\' は取り除かれる。例: > /* vi:set dir=c\:\tmp: */ -これはオプション 'dir' を "c:\tmp" に変更する。':' の前にバックスラッシュが置 -かれたとき、取り除かれるのは1個だけである。だからオプションの値に "\:" を含め -たいなら "\\:" を指定すること。 +これはオプション 'dir' を "c:\tmp" に変更する。':' の前に '\' が置かれたとき、 +取り除かれるのは1個だけである。だからオプションの値に "\:" を含めたいなら +"\\:" を指定すること。 安全上の理由から、コマンド "set" 以外は使用できない (誰かがテキストファイルで 「トロイの木馬」を作るかもしれないから) 。 @@ -554,9 +557,9 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 以下のリストでは、全てのオプションが、正確な名前と (あれば) 略名で示されている。 どちらの形を使ってもよい。 -この文書内では、切替オプションを「オンに」するというのは ":set そのオプション" -を打ち込むことを表す。切り替えオプションを「オフに」するというのは -":set noそのオプション" を打ち込むことを表す。 +この文書内では、切替オプションを「オンに」するというのは ":set オプション" を +実行することを表す。切り替えオプションを「オフに」するというのは +":set noオプション" を実行することを表す。 いくつかのオプションには、既定値が2種類あるものがある: 1つ目は "Vim default" つまりVimの既定値で、オプション 'compatible' がオフになっているときに使われる。 @@ -565,90 +568,87 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 ほとんどのオプションは全てのウィンドウやバッファで共通である。さてその中には、 テキストがウィンドウ内でどのように表示されるかを定めるものもある。そういったオ -プションは、ウィンドウごとに違う値に設定できる。例えばオプション 'list' は、あ -るウィンドウ内でオンにして、同じテキストを編集している別のウィンドウ内でオフに -することができる。すると同時に違った外観を得ることができる。また、ファイルごと -に特定の値に設定できるオプションもある。そういったオプションは、ファイルごとま -たはバッファごとに違う値に設定できる。例えばオプション 'textwidth' は、通常の -テキストファイルには78に設定し、Cプログラムのファイルには0に設定するようにでき -る。 +プションは、ウィンドウごとに違う値にできる。例えばオプション 'list' は、あるウィ +ンドウ内でオンにしても、同じテキストを編集している別のウィンドウ内ではオフに +することができる。すると同時に違った表示方法が使える。また、ファイルごとに特定 +の値にできるオプションもある。そういったオプションは、ファイルごとまたはバッファ +ごとに違う値にできる。例えばオプション 'textwidth' は、通常のテキストファイル +には78にし、Cプログラムのファイルには0にするようにできる。 グローバル: - 1つのオプションが全てのバッファやウィンドウに対して適用される + 一つのオプションが全てのバッファやウィンドウに対して適用される ウィンドウについてローカル: ウィンドウがそれぞれ、そのオプションのコピーを独自に持つ バッファについてローカル: バッファがそれぞれ、そのオプションのコピーを独自に持つ -(訳注: 上の項目については、ファイルの頭も参照) - -新しいウィンドウを作るとき、ウィンドウ固有のオプションには、その前にアクティブ -だったウィンドウでの値がまず使われる。バッファ固有のオプションは、'cpoptions' -オプションの 's' フラグと 'S' フラグによって違ってくる。's' フラグが含まれてい -ると (既定ではこうなっている)、バッファのオプションの値には、その新しいバッファ -が最初にアクティブになったときに、その前にアクティブだったバッファでの値がコピー -される。'S' フラグが含まれていると、バッファがアクティブになる度に値がコピーさ -れる。これはほとんどグローバルオプションを持っているようなものである。's' フラ -グも 'S' フラグも含まれていないときは、バッファが作られるときに、その前にアク -ティブだったバッファでの値がコピーされる。 +(訳注: 上の項目については、文書先頭も参照) + +新しいウィンドウを開くとき、ウィンドウ固有のオプションには、その前にアクティブ +だったウィンドウでの値がまず使われる。バッファ固有のオプションは、オプション +'cpoptions' のフラグ 's' とフラグ 'S' によって違ってくる。フラグ 's' が含まれ +ていると (既定ではこうなっている)、新しいバッファが最初にアクティブになったと +きに、その前にアクティブだったバッファでの値がコピーされる。フラグ 'S' が含ま +れていると、バッファがアクティブになる度に値がコピーされる。これはグローバルオ +プションであるようなものである。フラグ 's' もフラグ 'S' も含まれていないときは、 +バッファが作られるときに、その前にアクティブだったバッファでの値がコピーされる。 *E355* -|Q_op| にはオプションの短い説明が載った表があり、そこからヘルプにジャンプでき -る。 +|Q_op| にはオプションの短い説明付きの表があり、そこからヘルプにジャンプできる。 *'aleph'* *'al'* *aleph* *Aleph* -'aleph' 'al' 数値 (既定はMS-DOSでは128、それ以外では224) +'aleph' 'al' 数値 (既定値はMS-DOSでは128、それ以外では224) グローバル {Vi にはない} {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み使用可能} - ヘブライ語アルファベットの最初の文字を表すASCIIコード。挿入モード - ('hkmap' がオンになっているとき) と コマンドラインモード (CTRL-_ を打 - ち込んだとき) の両方において、ヘブライモードのキーボード配列をマップす - るルーチンは、[aleph..aleph+26] の範囲のヘブライ文字を出力する。 - aleph=128 はPCコード、 aleph=224 は ISO 8859-8 に使われる。 - |rileft.txt| を参照すること。 + み有効} + ヘブライ語アルファベットの最初の文字を表すASCIIコード。Insertモード + (オプション 'hkmap' がオンのとき) と Command-lineモード (CTRL-_ を打ち + 込んだとき) の両方において、ヘブライモードのキーボード配列をマッピング + するルーチンは、[aleph..aleph+26] の範囲のヘブライ文字を出力する。 + 'aleph'=128 はPCコード、'aleph'=224 は ISO 8859-8 に使われる。 + |rileft.txt| を参照。 *'allowrevins'* *'ari'* *'noallowrevins'* *'noari'* 'allowrevins' 'ari' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み使用可能} - 挿入モードとコマンドラインモードで CTRL-_ を使用可能にする。これは既定 + み有効} + InsertモードとCommand-lineモードで CTRL-_ を使用可能にする。これは既定 ではオフになっている。ユーザが間違って SHIFT-_ ではなく CTRL-_ を打ち 込み、右から左に書いていくモードに入って抜けられなくなる事態を防ぐため - である。'revins' を参照すること。 - NOTE: このオプションはオプション 'compatible' がオンになったときはオフ - になるので注意すること。 + である。オプション 'revins' を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'altkeymap'* *'akm'* *'noaltkeymap'* *'noakm'* 'altkeymap' 'akm' 切替 (既定ではオフ) グローバル {Vi にはない} - {Vi mが |+farsi| 機能付きでコンパイルされたときのみ使 - 用可能} - オンのとき、2番目の言語が Farsi. これってイラン語? - オプション 'allowrevins' がオンになっていると、 - 編集モードでは CTRL-_ で Farsi と英語のキーボードマップを切り替えられ - る。オフのとき、キーボードマップはヘブライ語と英語で切り替えられる。こ - れは普通の状態、すなわち英語モード (左から右に書く言語のモード) と既定 - の第2言語である Farsi またはヘブライ語モード (右から左に書く言語のモー - ド)を切り替えた上でVimをスタートさせるのに便利である。|farsi.txt| を参 - 照すること。 + {Vi mが |+farsi| 機能付きでコンパイルされたときのみ有 + 効} + オンのとき、2番目の言語が Farsi になる。オプション 'allowrevins' がオ + ンならば、Insertモードでは CTRL-_ で Farsi と英語のキーボードマップを + 切り替えられる。 + + オフのとき、キーボードマップはヘブライ語と英語で切り替えられる。これは + 普通の状態、つまり英語モード (左から右に書く言語のモード) と既定の第2 + 言語である Farsi またはヘブライ語モード (右から左に書く言語のモード)を + 切り替えた上でVimを開始するのに便利である。|farsi.txt| を参照。 *'autoindent'* *'ai'* *'noautoindent'* *'noai'* 'autoindent' 'ai' 切替 (既定ではオフ) バッファについてローカル - 新しい行を開始したとき (挿入モードで <CR> を打ち込むか、コマンド "o" ま - たはコマンド "O" を使ったとき)、新しい行のインデントを現在行と同じ量に - する。新しい行で <BS> か CTRL-D 以外を打ち込まずに <Esc> か <CR> を打 - ち込むと、その行のインデントは削除される。オプション 'autoindent' がオ - ンのときは、 テキストの整形処理 (コマンド "gq" を使ったり、挿入モードで - 1行の文字数が 'textwidth' に届いたとき) には最初の行のインデントが使わ - れる。 - オプション 'smartindent' オプションか 'cindent' がオンのときは、インデ + 新しい行を開始したとき (Insertモードで <CR> を打ち込むか、コマンド "o" + や "O" を使ったとき)、新しい行のインデントを現在行と同じくする。新しい + 行で <BS> か CTRL-D 以外を打ち込まずに <Esc> か <CR> を打ち込むと、そ + の行のインデントは削除される。オプション 'autoindent' がオンのときは、 + テキストの整形処理 (コマンド "gq" を使ったり、挿入モードで 1行の文字数 + がオプション 'textwidth' で指定した数に届いたとき) には最初の行のイン + デントが使われる。 + オプション 'smartindent' かオプション 'cindent' がオンのときは、インデ ントの方法は違ってくる。 - オプション 'paste' オプションがオンになると 'autoindent' はオフになる。 + オプション 'paste' がオンのときは 'autoindent' はオフになる。 {Vi との微妙な違い: <Esc> または <CR> を打ち込んでインデントが削除され た後、上下に移動した後のカーソル位置は削除されたインデントの後ろになる。 Viでは削除されたインデントの中のどこかになる} @@ -661,86 +661,86 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 明したとき、自動的に読み直す。ファイルが削除されたときにはこのようには ならない。 |timestamp| このオプションがローカルな値を持つとき、再びグローバルな値を使うように - するにはこのコマンドを使う: > + するには次のようにする。 > :set autoread< < *'autowrite'* *'aw'* *'noautowrite'* *'noaw'* 'autowrite' 'aw' 切替 (既定ではオフ) グローバル - :next, :rewind, :last, :first, :previous, :stop, :suspend, :tag, :!, - :make, CTRL-], CTRL-^ のコマンドを実行するたび、ファイルが変更されて - いるなら保存する。また CTRL-O, CTRL-I, '{A-Z0-9}, `{A-Z0-9} のコマンド - の移動先が別のファイルのときも同様である。 - Noteオプション 'autowrite' が適用されないコマンドもあることに注意。そ - れには 'autowriteall' を参照すること。 + コマンド :next, :rewind, :last, :first, :previous, :stop, :suspend, + :tag, :!, :make, CTRL-], CTRL-^ を実行したときや、コマンド CTRL-O, + CTRL-I, '{A-Z0-9}, `{A-Z0-9} の移動先が別のファイルのとき、ファイルが + 変更されているなら書き込む。 + Note 'autowrite' が適用されないコマンドもあることに注意。それについて + はオプション 'autowriteall' を参照。 *'autowriteall'* *'awa'* *'noautowriteall'* *'noawa'* 'autowriteall' 'awa' 切替 (既定ではオフ) グローバル {Vi にはない} - 'autowrite' と同様のオプションだが、さらに ":edit", ":quit", ":qall", - コマンド ":exit", ":xit", ":recover" でも、ファイルが変更されているなら - 保存する。またVimのウィンドウを閉じる際にも保存する。このオプションを - オンにすると、オプション 'autowrite' も同時にオンになったようになる - (訳注: このオプションはオプション 'autowrite' の適用されるコマンド全て - に適用されるので)。 + オプション 'autowrite' と似ているが、さらにコマンド ":edit", ":quit", + ":qall", ":exit", ":xit", ":recover" を実行したときや、Vimのウィンドウ + を閉じるときも、ファイルが変更されているなら保存する。このオプションを + オンにすると、同時に 'autowrite' もオンになったような動作になる (訳注: + このオプションは 'autowrite' の適用されるコマンド全てに適用されるので)。 *'background'* *'bg'* 'background' 'bg' 文字列 (既定は "dark" または "light") グローバル {Vi にはない} - "dark" に設定されていると、Vimは暗い背景によく合う色を使おうとする。 - "light" に設定されていると、Vimは明るい背景によく合う色を使おうとする。 - その他の値は無効である。 + 値が "dark" のときは、Vimは暗い背景によく合う色を使おうとする。値が + "light" のときは、Vimは明るい背景によく合う色を使おうとする。その他の + 値は無効である。 Vimは使われているターミナルの種類に従って既定の値を定めるが、常に正し いとは限らない。 このオプションを変更しても背景色は変わらない。これはただVimに背景色が - どのよ うなものかを知らせるだけである。背景色の変更には |:hi-normal| - を参照すること。 - - オプション 'background' が変更されると、Vimは色設定をその値に合わせる。 - しかし構文強調表示に使われる色設定は変化しない。 - Color scheme が読み込まれているとき (つまり "colors_name" 変数が設定さ - れているとき)オプション 'background' を変更すると color scheme が再び - 読み込まれる。Color scheme がオプション 'background' に対応していれば - これは適用される。しかし color scheme が 'background' 自体を定めている - ときは効果はない。必要ならば "colors_name" 変数の値を消去すること。 - - オプション 'background' を次のようにして既定の値に戻したとき: > + どのようなものかを伝えるだけである。背景色の変更には |:hi-normal| を参 + 照。 + + オプション 'background' が変更されると、Vimは既定の色設定グループをを + その値に合わせて調整する。しかし構文強調表示に使われる色設定は変化しな + い。 + Color scheme が読み込まれているとき (つまり変数 "colors_name" が設定さ + れているとき) 'background' を変更すると color scheme が再び読み込まれ + る。Color scheme が 'background' に対応していればこれは適用される。し + かし color scheme が 'background' 自体を設定しているときは効果がない。 + 必要ならば変数 "colors_name" を消去すること。 + + 'background' を次のようにして既定値に戻したとき、 > :set background& -< Vimはその値を推測する。GUIがあればこれはうまくいくが、そうでなければ正 - しい値を推測できないだろう。 - - GUIを開始したとき、オプション 'background' の既定値は "light" である。 - 値が .gvimrc で定められておらず、Vimが背景色を暗いものと判断したときは、 - オプション 'background' は "dark" に設定される。しかしこれは .gvimrcファ - イルが読み込まれた「後に」行われる (実際の背景色を知るためにウィンドウ - が開かれる必要があるから)。これを避けるには、コマンド ":gui" を .gvimrc - の中のオプション 'background' の値が使われる前に置いて (つまり - ":syntax on" の前) GUIウィンドウを強制的に開かせればよい。 - Win32のGUIでは、GUIの開始前にオプション 'background' を設定すると、背 - 景色と文字色の組み合わせは black の上に lightgrey または white の上に - black となる。その他のシステムではオプション 'background' を変更しても - 背景色や文字色は変化しない。 - このオプションは普通 .vimrc ファイル内で設定される。ターミナル名によっ - て変わってくるかもしれない。例: > +< Vimはその値を推測する。GUI版ならばうまくいくはずだが、そうでなければ正 + しい値を推測できないかもしれない。 + + GUIを開始したとき、'background' の既定値は "light" である。値がファイ + ル .gvimrc で定められておらず、Vimが背景色は実際は暗いと判断したときは、 + 'background' は "dark" になる。しかしこれは .gvimrc が読み込まれた「後」 + に行われる (実際の背景色を知るためにウィンドウが開かれる必要があるか + ら)。これを避けるには、コマンド ":gui" を .gvimrc の中の 'background' + の値が使われる前に置いて (例えば ":syntax on" の前) GUIウィンドウを強 + 制的に開かせればよい。 + Win32のGUIでは、GUIの開始前に 'background' を設定すると、背景色と文字 + 色の組み合わせは black の上に lightgrey または white の上に black とな + る。他のシステムでは 'background' を変更しても背景色や文字色は変化しな + い。 + このオプションは普通ファイル .vimrc 内で設定される。設定はターミナル名 + によるかもしれない。例: > :if &term == "pcterm" : set background=dark :endif < このオプションが設定されると、強調表示の既定の設定が変更される。他の設 - 定を使いたいなら、コマンド ":highlight" をオプション 'background' を設 - 定した「後に」置くこと。 - このオプションは "$VIMRUNTIME/syntax/syntax.vim" ファイル内でも使われ、 - 構文強調表示のための色を選択するようになっている。このオプションを設定 - した後は syntax.vim を再読み込みしないと結果が分からない。これには + 定を使いたいなら、'background' を設定した「後」にコマンド ":highlight" + を置くこと。 + このオプションはファイル "$VIMRUNTIME/syntax/syntax.vim" 内でも、構文 + 強調表示のための色を選択するのに使われる。このオプションを設定した後は + syntax.vim を再読み込みしないと結果が分からない。これにはコマンド ":syntax on" を実行すればよい。 *'backspace'* *'bs'* 'backspace' 'bs' 文字列 (既定では "") グローバル {Vi にはない} - 挿入モードでの <BS>, <Del>, CTRL-W や CTRL-U の働きに影響する。値には - コンマ区切りのキーワードを並べたものが使われる。それぞれがバックスペー + Insertモードでの <BS>, <Del>, CTRL-W, CTRL-U の働きに影響する。値はキー + ワードのコンマ区切りのリストである。それぞれのキーワードがバックスペー スの働く対象を定めている。 値 効果 ~ indent autoindent を超えてバックスペースを働かせる @@ -748,59 +748,57 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 start 挿入区間の始めでバックスペースを働かせるが CTRL-W と CTRL-U は 挿入区間の始めでいったん止まる - 値が空のときは、Vi互換のバックスペーシングが使われる。 + 値が空のときは、バックスペースの働きはVi互換になる。 - バージョン 5.4 またはそれ以前との互換性にはこう設定する: + バージョン 5.4 またはそれ以前との互換性を保つには次のようにする。 値 効果 ~ 0 "" と同じ (Vi互換) 1 "indent,eol" と同じ 2 "indent,eol,start" と同じ - <BS> や <Del> が望み通りの動作をしないときには |:fixdel| を参照するこ - と。 - NOTE: このオプションは、オプション 'compatible' をオンにすると "" に - 設定されるので注意すること。 + <BS> や <Del> で望み通りの動作ができないときは |:fixdel| を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときは "" にな + るので注意。 *'backup'* *'bk'* *'nobackup'* *'nobk'* 'backup' 'bk' 切替 (既定ではオフ) グローバル {Vi にはない} - ファイルを上書きする前にバックアップファイルを作る。書き込みが成功した - らバックアップはそのまま置いておく。バックアップをずっと持っていたくは - ないが、書き込みの最中にはバックアップが欲しいときには、このオプション - をオフにしてオプション 'writebackup' をオンにすること (既定ではそうなっ - ている)。全くバックアップが要らないなら両方をオフにすること (あなたの - ファイルシステムがほとんど一杯ならこうするとよい)。詳しくは - |backup-table| を参照すること。 + ファイルを上書きする前にバックアップを作る。書き込みが成功してもバック + アップはそのまま取っておく。バックアップを取っておきたくはないが、書き + 込み中にはバックアップが欲しいときには、このオプションをオフにしてオプ + ション 'writebackup' をオンにすること (既定ではそうなっている)。全くバッ + クアップが要らないなら両方をオフにすること (ユーザのファイルシステムが + ほとんど満杯ならこうするとよい)。詳しくは |backup-table| を参照。 どちらにしてもオプション 'backupskip' のパターンがマッチすると、バック - アップは作られない。オプション 'patchmode' がオンになっていると、バック - アップはリネームされて最も古いバージョンのファイルになることがある。 - NOTE: このオプションは、オプション 'compatible' をオンにするとオフにな - るので注意すること。 + アップは作られない。オプション 'patchmode' がオンのときは、バックアッ + プはリネームされてファイルの最も古いバージョンになることがある。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'backupcopy'* *'bkc'* 'backupcopy' 'bkc' 文字列 (UnixでのViの既定値: "yes" 、それ以外: "auto") グローバル {Vi にはない} - ファイルに書き込みをしてバックアップが作られるとき、その方法をこのオプ - ションで決定する: + ファイルの書き込みをしてバックアップが作られるとき、その方法をこのオプ + ションで指定する。 "yes" 先にファイルのコピーを作ってバックアップにして、更新した内容は 元のファイルに上書きする "no" 先に元のファイルをリネームしてバックアップにして、更新した内容 は新しいファイルに書き出す - "auto" 上の2つのどちらかで、適切な方を選ぶ + "auto" どちらか適切な方を選ぶ - ファイルのコピーを作ってから元のファイルに上書きする方法は: + ファイルのコピーを作ってから元のファイルを上書きする方法: X ファイルのコピーに余計な時間がかかる。 - O 編集したファイルが特別な属性を持っているとき (例えばファイルがハー - ドリンクまたはシンボリックリンクだったり、リソースフォークを持って - いるとき)、全て元のまま保たれる。 - X 編集したファイルがリンクのとき、バックアップファイルの名前がリンク - 先の文書ファイルの名前でなく、リンクファイルの名前になってしまう。 + O 編集したファイルが特別な属性を持っていたり、ファイルがハードリンクや + シンボリックリンクであったり、リソースフォークを持っているときでも、 + 全て元のまま保たれる。 + X 編集したファイルがリンクのとき、バックアップの名前がリンク先の文書の + 名前でなく、リンクの名前になってしまう。 - ファイルをリネームしてから新しいファイルに書き出す方法は: + ファイルをリネームしてから新しいファイルに書き出す方法: O 高速である。 - X 時々、元のファイルの持つ属性を新しいファイルにコピーしきれないこと + X 時々、元のファイルの属性の一部しか新しいファイルにコピーされないこと がある。 X 編集したファイルがリンクのとき、新しいファイルはリンクにならない。 @@ -814,22 +812,22 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 したプログラムは新しく書き出されたファイルではなく、バックアップファイ ルの方を調べてしまう。例としては "crontab -e" が挙げられる。 - コピーの方法のときは、元のファイルの中身はいったん削除され、そこに新し + コピーの方法のときは、元のファイルの中身はいったん空になり、そこに新し いテキストが書き込まれる。つまり、元のファイルの保護ビット、ファイル所 有者やシンボリックリンクは変更されない。しかし、新しく作られることにな るバックアップファイルは、ファイルを編集したユーザの所有となる。またバ - ックアップファイルの属するグループは、元のファイルと同じグループに設定 - される。これが失敗すると、他の属性と同様に、そのグループでの保護ビット - が設定される。 - - リネームの方法のときは別のやり方が使われる。バックアップファイルは元の - ファイルと同じ属性を持ち、新しく書き出されたファイルは、ファイルを編集 - したユーザの所有となる。開いたファイルがハードリンクまたはシンボリック - リンクだった場合でも、新しく書き出されたファイルはリンクにならない!だ - から値が "auto" のとき、ファイルがリンクならリネームを行わないのである。 - 新しく書き出されたファイルの所有者と属するグループは、元のファイルと同 - じとして設定される。しかしシステムがこうすることを許さないかもしれない。 - その場合、値が "auto" ならもうファイルのリネームをしようとはしない。 + ックアップファイルの属するグループは、元のファイルと同じグループになる。 + これが失敗すると、他の属性と同様に、そのグループの保護ビットが設定され + る。 + + リネームの方法のときは別の結果になる。バックアップファイルは元のファイ + ルと同じ属性を持ち、新しく書き出されたファイルは、ファイルを編集したユー + ザの所有となる。開いたファイルがハードリンクまたはシンボリックリンクだっ + た場合でも、新しく書き出されたファイルはリンクにならない!だから値が + "auto" のとき、ファイルがリンクならリネームを行わないのである。新しく + 書き出されたファイルの所有者と属するグループは、元のファイルと同じとし + て設定される。しかしシステムがこうすることを許可しないかもしれない。そ + の場合、値が "auto" ならもうファイルのリネームをしようとはしない。 *'backupdir'* *'bdir'* 'backupdir' 'bdir' 文字列 (Amigaでの既定値: ".,t:", @@ -837,160 +835,158 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 Unixでの既定値: ".,~/tmp,~/") グローバル {Vi にはない} - 値は、バックアップファイルを作るディレクトリを、コンマ区切りのリストに - したもの。 + 値は、バックアップファイル用ディレクトリの、コンマ区切りのリストである。 - バックアップファイルは、リスト内の、使用可能な最初のディレクトリの中 に作られる。 - 値が空だと、バックアップファイルは作られない ('patchmode' は使えなく - なる!)。 + なる!)。 - ディレクトリに "." を指定するのは、バックアップファイルを、編集され たファイルと同じディレクトリに作るということである。 - - ディレクトリが "./" で (MS-DOSなどでは ".\") 始まるのは、バックアッ - プファイルを作るディレクトリを、編集されたファイルとの相対的な位置で - 決めるということである。最初の "." は編集されたファイルのパス名で置 - き換えられる ("." がディレクトリ名の内部にあるなら、特別な意味はな - い)。 + - ディレクトリが "./" (MS-DOS等では ".\") で始まるのは、バックアップファ + イルを作るディレクトリを、編集されたファイルとの相対的な位置で決める + ということである。最初の "." は編集されたファイルのパス名で置き換え + られる (ディレクトリ名の内部の "." には特別な意味はない)。 - コンマの後の空白は無視されるが、他の場所の空白はディレクトリ名の一部 - として見なされる。ディレクトリ名の先頭に空白を使いたいなら、その空白 - の前にバックスラッシュを置くこと。 - - ディレクトリ名にコンマを使いたいなら、そのコンマの前にバックスラッシュ - (訳注: ファイル先頭を参照) を置くこと。 + と見なされる。ディレクトリ名の先頭に空白を使いたいなら、その空白の前 + に '\' を置くこと。 + - ディレクトリ名にコンマを使いたいなら、そのコンマの前に '\' を置くこ + と。 - ディレクトリ名は '/' で終わってもよい。 - - 環境変数は展開される |:set_env| 。 - - '\' には注意すること。空白の前には1個置き、オプションの値に '\' 自身 - を含めたいなら2個置く (|option-backslash| を参照)。例: > + - 環境変数は展開される |:set_env|。 + - 文字 '\' には注意。空白の前には1個置き、オプションの値に '\' 自身を + 含めるなら2個置く (|option-backslash| を参照)。例: > :set bdir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces -< - 古い Vim version 3.0 との互換性のため、値の先頭の '>' は取り除かれる。 - オプション 'backup' オプションおよび 'writebackup' も参照すること。 - Unixであなたのバックアップファイルを隠したいなら、こうするとよい: > + (訳注: 結果は backupdir=c:\tmp, dir\,with\,commas,\ dir with space) +< - Vim version 3.0 との後方互換性のため、値の先頭の '>' は取り除かれる。 + オプション 'backup' および 'writebackup' も参照。 + Unixでユーザのバックアップファイルを隠したいなら、次のようにしてみるこ + と。 > :set backupdir=./.backup,~/.backup,.,/tmp -< この方法を使うには、それぞれのディレクトリとあなたのホームディレクト - リに ".backup" というディレクトリを作らなければならない。 - リストにディレクトリを加えたり、リストから取り除いたりするときには、 - |:set+=| と |:set-=| を使うのがよい。こうすると将来のバージョンでの既 - 定値が変更されたときの問題を避けられる。 +< この方法を使うには、それぞれのディレクトリとあなたのホームディレクトリ + にディレクトリ ".backup" を作らなければならない。 + リストにディレクトリを追加するときにはコマンド |:set+=|、リストからディ + レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来 + のヴァージョンで異なった既定値が使われるようになったときに、問題が起き + るのを防げる。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'backupext'* *'bex'* -'backupext' 'bex' 文字列 (既定では "~", VMSでは: "_") +'backupext' 'bex' 文字列 (既定では "~", VMSでは "_") グローバル {Vi にはない} バックアップファイルの名前を作る際、元のファイル名の後ろに付け加える文 字列。既定では普段使いそうもないものに定めてあるが、これは既存のファイ ルをバックアップファイルで上書きするのを避けるためである。".bak" を使 - いたいかもしれないが、".bak" で終わるファイルに重要なものがないか確か + いたいかもしれないが、大事なファイルに ".bak" で終わるものがないか確か めること。 *'backupskip'* *'bsk'* -'backupskip' 'bsk' 文字列 (既定では: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") +'backupskip' 'bsk' 文字列 (既定では "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") グローバル {Vi にはない} {Vi mが |+wildignore| 機能付きでコンパイルされたときの - み使用可能} - ファイル名に対するパターンのリスト。この中に、書き込まれたファイルの名 - 前にマッチするパターンがあれば、そのファイルのバックアップは作られない。 - ファイル名を指定してもよいし、ファイルのフルパスを指定してもよい (訳注: - C:/temp/* という方法。既定値ではこの方法で、一時ファイル用のディレクト - リを指定している) 。 + み有効} + ファイル名のパターンのリスト。書き込みをするファイルの名前にマッチする + パターンがこの中にあれば、そのファイルのバックアップは作られない。ファ + イル名を指定してもよいし、ファイルのフルパスを指定 (訳注: C:/temp/* 等 + の方法。既定値ではこの方法で一時ファイル用のディレクトリを指定し、一時 + ファイルのバックアップを作らないようにしている) してもよい。 パターンの指定方法は |:autocmd| と同じである。|autocmd-patterns| を参 - 照すること。また、特殊文字に注意するために |option-backslash| を参照す - ること。 - 環境変数の $TMPDIR, $TMP や $TEMP が定義されていないと、既定値には使わ - れない。"/tmp/*" はUnixでのみ使われる。 + 照。特別な文字に注意するために |option-backslash| を参照。 + 環境変数の$TMPDIR, $TMP または $TEMP が定義されていないとき、それらは + 既定値に使われない。"/tmp/*" はUnixでのみ使われる。 *'balloondelay'* *'bdlay'* 'balloondelay' 'bdlay' 数値 (既定では 600) グローバル {Vi にはない} {Vi mが |+balloon_eval| 機能付きでコンパイルされたとき - の - み使用可能} - バルーン表示が出るまでの時間 (ミリ秒単位) 。|balloon-eval| を参照する - こと。 + のみ有効} + バルーン表示が出るまでの時間 (ミリ秒単位)。|balloon-eval| を参照。 *'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'* 'ballooneval' 'beval' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+sun_workshop| 機能付きでコンパイルされたとき - のみ使用可能} + のみ有効} |balloon-eval| 機能を働かせる。 *'binary'* *'bin'* *'nobinary'* *'nobin'* 'binary' 'bin' 切替 (既定ではオフ) バッファについてローカル {Vi にはない} - バイナリファイルを編集する前には、このオプションをオンにする。Vimの引 - 数に |-b| を付けてもよい。このオプションがオンのときは、いくつかのオプ - ションの設定が変わる: - 'textwidth' は 0 - 'wrapmargin' は 0 - 'modeline' は オフ - 'expandtab' は オフ - またオプション 'fileformat' オプションと 'fileformats' の値は無視され、 - 読み込みと書き込みは 'fileformat' が "unix" のときのようになる (1個の - <NL> が改行になる)。 - さらにオプション 'fileencoding' オプションと 'fileencodings' の値も無 - 視され、ファイルは変換なしに読み込まれるようになる。 - NOTE:オプション 'bin' がオンのときにファイルを読み込むと、autocommand - によって設定が再び変えられ (例えば 'textwidth')、編集時に問題を起こす - ことがあるので注意すること。ファイルを読み込んだ後に再び 'bin' オプショ - ンをオンにするとよい。 + バイナリファイルを編集する前には、このオプションをオンにすべきである。 + Vimの起動時に引数 |-b| を使ってもよい。オンのときは、いくつかのオプショ + ンの設定が変わる。 + 'textwidth' は 0 になる + 'wrapmargin' は 0 になる + 'modeline' は オフ になる + 'expandtab' は オフ になる + またオプション 'fileformat' と 'fileformats' は無視され、読み込みと書 + き込みは 'fileformat' が "unix" のときのようになる (1個の <NL> が改行 + になる)。 + さらにオプション 'fileencoding' と 'fileencodings' も無視され、ファイ + ルは変換なしに読み込まれるようになる。 + NOTE: オプション 'bin' がオンのときに新しくファイルを読み込むと、 + autocommand によって設定が再び変えられ (例えば 'textwidth')、編集時に + 問題を起こす ことがあるので注意。ファイルを読み込んだ後に再び 'bin' を + オンにするとよい。 変更されるオプションの値は記憶されているので、オプション 'bin' がオフに 戻るとそれらの値も復元される。それらの値はバッファごと独自に記憶される。 - オプション 'bin' がオンならば、元のファイルにすでに <EOL> があるときだ - け、ファイルを書き込むときに最終行に <EOL> が付け加えられる (普通は、 + 'bin' がオンならば、ファイルを書き込むときに最終行に <EOL> が付け加え + られるのは、元のファイルにすでに <EOL> があるときだけである (普通は、 最終行に <EOL> がないならVimはそれを付け加える。こうするとその分ファイ - ルが長くなる)。オプション 'endofline' を参照すること。 + ルが長くなる)。オプション 'endofline' を参照。 *'bioskey'* *'biosk'* *'nobioskey'* *'nobiosk'* 'bioskey' 'biosk' 切替 (既定ではオン) グローバル {Vi にはなく、MS-DOS版のみ} - オンのときは、キーボードの文字を得るためにバイオスが呼び出される。これ - はCTRL-C を認識するためにはよいが、コンソールでしか機能しない。ターミ - ナルをシリアルポートから利用する場合は、オフにすること。 - |'conskey'| も参照すること。 + オンのとき、キーボードで打ち込まれた文字を取得するためにバイオスが呼び + 出される。これは CTRL-C を認識するためにはよいが、コンソールでしか機能 + しない。ターミナルをシリアルポートから利用する場合は、オフにすること。 + 'conskey' も参照。 *'bomb'* *'nobomb'* 'bomb' 切替 (既定ではオフ) バッファについてローカル {Vi にはない} {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み使用可能} - ファイルを書き込むときに以下の条件が満たされれば、BOM (Byte Order - Mark, バイト順マーク) がファイル先頭に付けられる: - - このオプションがオンであること - -オプション 'binary' がオフであること - -オプション 'fileencoding' が "utf-8", "ucs-2", "ucs-4" であるか、それ - らとリトルエンディアンとビッグエンディアンの違いを除いて同一のエンコー - ドであること + み有効} + ファイルを書き込むときに以下の条件が満たされれば、BOM (Byte Order Mark + --訳注: バイト順マーク。Unicodeを適切に扱うために使われるマーク) がファ + イル先頭に付けられる。 + - このオプションがオンである + - 'binary' がオフである + - 'fileencoding' が "utf-8", "ucs-2" または "ucs-4" である (リトルエン + ディアンとビッグエンディアンの違いは無視) アプリケーションの中には、ファイルのエンコーディングを認識するために BOM を使うものがある。MS-Windows で UCS-2 ファイルのためによく使われる。 - しかし、アプリケーションによってはこれが問題になることもある。例: + しかし、アプリケーションによってはこれが問題になることもある。例えば "cat file1 file2" とすると、file2の BOM がファイル途中に現れてしまう。 - ファイルを読み込むときにオプション 'fileencodings' の値が "ucs-bom" で - 始まるならば、 BOM が存在するかどうかが調べられ、その結果に従って - 'bomb' が設定される。'binary' がオンでなければ BOM は編集時には取り除 - かれ、ユーザの目には触れない。その後オプションを変更しなければ、ファイ - ルを書き込むときに再び BOM が復元される。 + ファイルを読み込むときに 'fileencodings' が "ucs-bom" で始まるならば、 + BOM が存在するかどうかが調べられ、その結果に従って 'bomb' が設定される。 + 'binary' がオンでなければ BOM は編集時には取り除かれ、ユーザの目には触 + れない。'bomb' をオフにしたり 'binary' をオンにしたり 'fileencodings' + を変えなければ、ファイルの書き込み時に再び BOM が復元される。 *'breakat'* *'brk'* 'breakat' 'brk' 文字列 (既定では " ^I!@*-+;:,./?") グローバル {Vi にはない} {Vi mが |+linebreak| 機能付きでコンパイルされたときの - み使用可能} - オプション 'linebreak' がオンのとき、どの文字で自動改行が起きるかを、こ - のオプションで指定する。 + み有効} + オプション 'linebreak' がオンのとき、どの文字のところで行が折り返され + て表示されるかを、このオプションで指定する。 *'browsedir'* *'bsdir'* 'browsedir' 'bsdir' 文字列 (既定では "last") グローバル {Vi にはなく、MotifとWin32のGUI版のみ} - ファイルブラウザにどのディレクトリを使うかを指定する: - last 前回にファイルブラウザを使ったディレクトリ + ファイルブラウザの開始時、どのディレクトリを開くかを指定する。 + last 前回にファイルブラウザでファイルを選択したディレクトリ buffer バッファで開いているファイルのディレクトリ current カレントディレクトリ {path} {path} で指定されたディレクトリ @@ -1000,131 +996,127 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 バッファについてローカル {Vi にはない} {Vi mが |+quickfix| 機能付きでコンパイルされたときの - み使用可能} - このオプションは、バッファがウィンドウ内に表示されなくなったときの動作 - を指定する。 - <empty> グローバルなオプションの 'hidden' の値に従う - hide バッファを隠す (解放しない)。オプション 'hidden' がオン - でなくともそうする。 - unload バッファを解放する。オプション 'hidden' がオンであった - り、|:hide| コマンドを使ったときでもそうする。 - delete バッファをバッファリストから削除する。'hidden' オプショ - ンがオンだったり、|:hide| コマンドを使ったときでも、 - |:bdelete| コマンドを使ったときのように、リストからの - 削除を行う。 - - このオプションはオプション 'buftype' オプションや 'swapfile' と共に使 - われ、特殊な用途のバッファを指定する。|special-buffers| を参照すること。 + み有効} + バッファがウィンドウ内に表示されなくなったときの動作を指定する。 + <empty> グローバルオプション 'hidden' に従う + hide バッファを隠す (解放しない)。'hidden' がオフでもそうす + る。 + unload バッファを解放する。'hidden' がオフのときも、コマンド + |:hide| を使ったときもそうする。 + delete バッファをバッファリストから削除する。'hidden' がオン + のときも、|:hide| を使ったときも、|:bdelete| を使った + ときのように、リストから削除する。 + + このオプションは 'buftype' や 'swapfile' と共に使われ、特殊な用途のバッ + ファを指定する。|special-buffers| を参照。 *'buflisted'* *'bl'* *E85* 'buflisted' 'bl' 切替 (既定ではオン) バッファについてローカル {Vi にはない} - このオプションがオンならば、バッファはバッファリストに表示される。オフ - ならば、そのバッファはコマンド ":bnext" コマンドや ":ls" 、バッファメ - ニューなどの対象にならない。 + オンのときは、バッファはバッファリストに表示される。オフのときは、その + バッファはコマンド ":bnext" や ":ls" およびバッファメニュー等の対象に + ならない。 ファイル名やマークを思い出したりするためだけのバッファでは、このオプショ - ンはVimによってオフにされる。ファイルの編集のためにバッファを作ったと - きは、このオプションはVimによってオンにされる。しかし ":buffer" コマン - ドでバッファに移動したときはそうではない。 + ンはオフになる。バッファの編集を始めたときは、このオプションはオンにな + る。しかし ":buffer" でバッファに移動したときはオンにはならない。 *'buftype'* *'bt'* *E382* 'buftype' 'bt' 文字列 (既定では "") バッファについてローカル {Vi にはない} {Vi mが |+quickfix| 機能付きでコンパイルされたときの - み使用可能} + み有効} このオプションはバッファの種類を指定する。 <empty> 普通のバッファ nofile ファイルと関連がなく、書き込まれる予定のないバッファ nowrite 書き込まれる予定のないバッファ - quickfix エラーリスト用の、quickfix バッファ |:cwindow| - help ヘルプバッファ (あなたが手動でこれに設定することはない + quickfix エラーリスト用の quickfix バッファ (|:cwindow| を参照) + help ヘルプバッファ (ユーザが手動でこれに設定することはない はずである) - このオプションはオプション 'bufhidden' オプションや 'swapfile' と共に - 使われ、特殊な用途のバッファを指定する。|special-buffers| を参照すること。 + このオプションはオプション 'bufhidden' や 'swapfile' と共に使われ、特 + 殊な用途のバッファを指定する。|special-buffers| を参照。 このオプションの変更には十分注意すること。多くの副作用が起こるかもしれ - ない! + ない! - "quickfix" バッファはエラーリストにのみ使われる。この値は |:cwindow| - コマンドで設定され、あなたが変更することはないはずである。 + "quickfix" バッファはエラーリストにのみ使われる。この値はコマンド + |:cwindow| で設定され、ユーザが変更することはないはずである。 "nofile" バッファと "nowrite" バッファは似ている。 - 両方とも: バッファの内容はファイルに書き込まれない。":w" コマン - ドが使えない (コマンド ":w filename" は使える)。 - 両方とも: バッファの内容が変更された |'modified'| と認識されるこ - とがない。Vimを終了するときなど、変更点が失われるとき - でも、警告が現れない。 - 両方とも: スワップファイルはメモリを大量に消費したときのみ作られ - る (オプション 'swapfile' がオフだと、スワップファイル - は作られない)。 - nofile のみ: バッファ名は固定され、ファイル名のようには扱われない。 - |:cd| コマンドの結果としてバッファ名が変わることはない。 + 両方とも、 バッファの内容はファイルに書き込まれない。":w" が使え + ない (":w 新ファイル名" は使える)。 + 両方とも、 バッファの内容が変更された 'modified' と認識されること + がない。Vimの終了時等、変更点が失われるときでも警告が + 現れない。 + 両方とも、 スワップファイルはメモリを大量に消費したときのみ作られ + る ('swapfile' がオフだと、スワップファイルは作られな + い)。 + nofile だけは、 バッファ名は固定され、ファイル名のようには扱われない。 + |:cd| の結果としてバッファ名が変わることはない。 *'cdpath'* *'cd'* *E344* *E346* 'cdpath' 'cd' 文字列 (既定では環境変数 $CDPATH または ",,") グローバル {Vi にはない} {Vi mが |+file_in_path| 機能付きでコンパイルされたとき - のみ使用可能} - このオプションの値は、|:cd| コマンドや |:lcd| コマンドを使ったときに検 - 索されるディレクトリのリストである。ただし検索されるディレクトリは相対 - パスで指定することはできない ("/", "./" や "../" で始まってはいけない)。 - オプション 'cdpath' の値には、|'path'| オプションと同様の指定方法を使う。 - |file-searching| も参照すること。 - 既定では、値は環境変数 $CDPATH から取り込まれるが、カレントディレクト - リを最初に探すために "," が先頭に挿入される。$CDPATH から取り込まれた - ものが望ましくないときは、値を上書きするために、次のコマンドを適当に修 - 正し、あなたの vimrc ファイルに加えること: > + のみ有効} + コマンド |:cd| や |:lcd| を使ったときに検索されるディレクトリ + のリスト。ただし検索されるディレクトリが相対パスで指定されたとき ("/", + "./" や "../" で始まるとき)は別である。 + オプション 'cdpath' には、'path' と同様の指定方法を使う。 + |file-searching| も参照。 + 既定値は環境変数 $CDPATH から取り込まれるが、カレントディレクトリを最 + 初に探すために "," が先頭に挿入される。 + $CDPATH から取り込まれたものが望ましくないときは、値を上書きするために、 + 次のコマンドを適当に修正し、ユーザのファイル vimrc に加えること。 > :let &cdpath = ',' . substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g') < 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない (オプション 'cdpath' の値の一部は、ファイル名を展開する - ためにシェルに渡すことができる)。 + ことはできない ('cdpath' の値の一部は、ファイル名を展開するためにシェ + ルに渡すことができる)。 *'cedit'* 'cedit' 文字列 (Viの既定値: "", Vimの既定値: CTRL-F) グローバル {Vi にはない} {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み使用可能} - コマンドラインモード Command-line Mode で、コマンドラインウィンドウを - 開くために使われるキー。オプション 'compatible' がオフならば、既定では - CTRL-F である。 - 印刷されない特殊なキー non-printable keys しか指定できない。キーは単一 - の文字として設定することもできるが、それでは入力しにくい。<> を使った - 表記が好まれる。例: > + み有効} + Command-lineモードで、Command-lineウィンドウを開くために使われるキー。 + オプション 'compatible' がオフならば、既定では CTRL-F である。 + non-printable なキー (訳注: 文書先頭を参照) しか指定できない。キーは単 + 一の文字として設定することもできるが、それでは入力しにくい。<> を使っ + た表記を推奨する。例: > :set cedit=<C-Y> :set cedit=<Esc> -< |Nvi| もこのオプションを持っているが、最初の1文字だけが使用される。 - |cmdwin| を参照すること。 +< |Nvi| にもこのオプションがあるが、最初の1文字だけが使用される。 + |cmdwin| を参照。 *'charconvert'* *'ccv'* *E202* *E214* 'charconvert' 'ccv' 文字列 (既定では "") グローバル {Vi にはない} {Vi mが |+multi_byte| 機能および |+eval| 機能付きでコ - ンパイルされたときのみ使用可能} + ンパイルされたときのみ有効} 文字エンコーディングの変換に使われる expression を定める。これは読み込 まれようとしているファイルや書き込みをしたファイルのエンコーディングが、 望むものと違うときに評価される。 オプション 'charconvert' の値は、内部関数 iconv() がサポートされ、それ による変換が可能ならば使われることはない。ずっと高速なため、iconv() の - 方が好まれる。 + 使用を推奨する。 'charconvert' は標準入力 (stdin |--|) から読み込みときには使われない。 なぜなら変換元のファイルが存在しないからだ。まずテキストの内容をファイ ルに保存しなければいけない。 使われる expression は、変換成功時には空文字列または0、失敗時には非0を 返さなければならない。 - 可能なエンコーディングの名前はオプション 'encoding' で設定されている - (訳注:よく分からない。原文は The possible encoding names encountered - are inオプション 'encoding'.)。それに加え、'fileencodings' と - オプション 'fileencoding' に設定されているエンコーディング名も使われる。 - "latin1", "unicode", "ucs-2", "ucs-4" や "utf-8" の間の変換はVimの内部 - で行われ、オプション 'charconvert' は使われない。'viminfo' の中に 'c' - フラグが含まれるならば、'charconvert' は viminfo ファイルの変換にも使 - われる。また Unicode の変換にも使われる。 + 使用可能なエンコーディング名は 'encoding' で設定されている (訳注: よく + 分からない。原文は The possible encoding names encountered are in + 'encoding'.)。それに加え、'fileencodings' と 'fileencoding' に設定され + ているエンコーディング名も使われる。 + "latin1", "unicode", "ucs-2", "ucs-4", "utf-8" の間の変換はVimの内部で + 行われ、 'charconvert' は使われない。'viminfo' の中にフラグ 'c' が含ま + れるならば、'charconvert' はファイル viminfo の変換にも使われる。また + Unicode の変換にも使われる。 例: > set charconvert=CharConvert() fun CharConvert() @@ -1133,19 +1125,18 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 \ . " <" . v:fname_in . " >" v:fname_out) return v:shell_error endfun -< 関連する Vim 変数は: +< 関連するVimの変数は以下の通り。 v:charconvert_from 現在のエンコーディング名 v:charconvert_to 希望するエンコーディング名 v:fname_in 入力ファイル名 v:fname_out 出力ファイル名 - Note v:fname_in と v:fname_out とは、決して同じになってはいけないので - 注意すること。 - Note 変数 v:charconvert_from と変数 v:charconvert_to の値は 'encoding' - オプションの値と異なるかもしれないので注意すること。Vim内部では UCS-2 - または UCS-4 の代わりには UTF-8 を使っている。 + Note 変数 v:fname_in と v:fname_out とは、決して同じになってはいけない + ので注意。 + Note v:charconvert_from と v:charconvert_to の値は 'encoding' と異なる + かもしれないので注意。Vim内部では UCS-2 または UCS-4 の代わりには + UTF-8 を使っている。 Vim は 'charconvert' を用いたエンコーディング変換では暗号化をしない。 - 変換後に暗号化をしたいなら、'charconvert' でそのことを注意する必要があ - る。 + 変換後に暗号化をしたいなら、'charconvert' にそうさせる必要がある。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -1154,45 +1145,40 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 バッファについてローカル {Vi にはない} {Vi mが |+cindent| 機能付きでコンパイルされたときのみ - 使用可能} - Cプログラムファイルの自動インデントを始める。挿入モード insert mode で - 再インデントを引き起こす文字列を指定するにはオプション 'cinkeys' を、 - 好みのインデントスタイルを設定するにはオプション 'cinoptions' を参照す - ること。 - オプション 'indentexpr' オプションの値が空でないなら、それは 'cindent' - に影響する。 - オプション 'lisp' オプションがオフで、'indentexpr' と 'equalprg' オプショ - ンの両方の値が空なら、"=" によるインデントはこのアルゴリズムを使い、外 - 部プログラムを使わない。 - |C-indenting| を参照すること。 - オプション 'cindent' の動作が気に入らないならば、'smartindent' か - オプション 'indentexpr' の設定を試してみること。 - このオプションはオプション 'paste' がオンのときには使われない。 - NOTE: このオプションはオプション 'compatible' をオンにするとオフにされ - るので注意すること。 + 有効} + Cプログラムファイルの自動インデントを行う。Insertモードで再インデント + を引き起こす文字列を指定するにはオプション 'cinkeys' を、好みのインデ + ントスタイルを設定するには 'cinoptions' を参照。 + 'indentexpr' の値が空でないなら、それは 'cindent' の設定を上書きする。 + 'lisp' がオフで、'indentexpr' と 'equalprg' の両方の値が空なら、"=" に + よるインデントはこのアルゴリズムを使い、外部プログラムを使わない。 + |C-indenting| を参照。 + 'cindent' の動作が気に入らないならば、'smartindent' か 'indentexpr' を + 試してみること。 + このオプションは 'paste' がオンのときには使われない。 + NOTE: このオプションは 'compatible' がオンのときはオフになるので注意。 *'cinkeys'* *'cink'* 'cinkeys' 'cink' 文字列 (既定では "0{,0},0),:,0#,!^F,o,O,e") バッファについてローカル {Vi にはない} {Vi mが |+cindent| 機能付きでコンパイルされたときのみ - 使用可能} - 挿入モードで入力されたときに、現在行の再インデントを行わせる文字のリス - ト。オプション 'cindent' オプションがオンで、かつ 'indentexpr' が空の時 - のみ使われる。 - このオプションの指定方法については |cinkeys-format| を参照すること。 - また |C-indenting| を参照すること。 + 有効} + Insertモードで入力されたときに、現在行の再インデントを引き起こす文字の + リスト。オプション 'cindent' がオンで、かつ 'indentexpr' が空の時のみ + 使われる。 + このオプションの設定方法については |cinkeys-format| を参照。 + また |C-indenting| を参照。 *'cinoptions'* *'cino'* 'cinoptions' 'cino' 文字列 (既定では "") バッファについてローカル {Vi にはない} {Vi mが |+cindent| 機能付きでコンパイルされたときのみ - 使用可能} - このオプション 'cinoptions' は、C言語ソース内の行を 'cindent' で再イン - デントするときの方法に影響を与える。このオプションの値については - |cinoptions-values| を、一般的なC言語ソースのインデントの情報について - は |C-indenting| をそれぞれ参照すること。 + 有効} + このオプションは、'cindent' でのC言語ソース内の行の再インデント方法に + 影響を与える。このオプションの値については |cinoptions-values| を、一 + 般的なC言語ソースのインデントの情報については |C-indenting| を参照。 *'cinwords'* *'cinw'* @@ -1200,13 +1186,12 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 バッファについてローカル {Vi にはない} {Vi mが |+cindent| 機能と |+smartindent| 機能(両方)付 - きでコンパイルされたときのみ使用可能} - オプション 'smartindent' オプションか 'cindent' がオンのとき、ここに指 - 定したキーワードの次の行は、さらにインデントされる。'cindent' がオンの - ときには、適切な場所 ({} の内側) でのみ機能する。 - Noteオプション 'ignorecase' オプションは 'cinwords' の値には適用されな - いので注意すること。大文字か小文字かを区別したくないなら、値に両方を指 - 定すること。例: "if,If,IF" + きでコンパイルされたときのみ有効} + オプション 'smartindent' か 'cindent' がオンのとき、ここに指定したキー + ワードの次の行は、さらにインデントされる。'cindent' がオンのときには、 + 適切な場所 ({} の内側) でのみ機能する。 + NOTE 'ignorecase' は 'cinwords' の値には適用されないので注意。大文字か + 小文字かを区別したくないなら、値に両方を指定すること。例: "if,If,IF" *'clipboard'* *'cb'* 'clipboard' 'cb' 文字列 (既定値はX-windowsでは @@ -1215,9 +1200,9 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 グローバル {Vi にはない} {Vi mのGUIバージョンか |+xterm_clipboard| 機能付きでコ - ンパイルされたもののみ使用可能} - このオプションには、コンマ区切りのキーワードのリストを指定する。 - 認識されるのは、これらのキーワードである: + ンパイルされたもののみ有効} + コンマ区切りのキーワードのリストを指定する。 + 認識されるのは、以下のキーワードである。 unnamed これが含まれると、コピー、削除、変更、ペーストなどの操 作で、普通なら無名レジスタが使われるところで、全てクリ @@ -1226,70 +1211,69 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 "unnamed" が含まれているかいないかに関わらず、指定され たレジスタが使われる。またクリップボードレジスタは、"* という記法を用いれば常にアクセスできる。 - |gui-clipboard| も参照すること。 - - autoselect オプション 'guioptions' の 'a' フラグのように働く: これ - が含まれると、Visualモードが開始されるたび、または - Visual選択範囲が変更されるたびに、Vimはウィンドウシス - テムのグローバルなクリップボードのオーナーになろうとす - るか、選択されたテキストをクリップボード用レジスタ "* - を使ってクリップボードにコピーしようとする。詳細につい - ては |guioptions_a| と |quotestar| を参照すること。GUI - 機能が有効のときはオプション 'guioptions' の 'a' フラ - グが使用され、無効のときはこの "autoselect" フラグが使 - 用される。 - また、モードレスなセレクションにも適用される。 + |gui-clipboard| も参照。 + + autoselect 'guioptions' のフラグ 'a' のように働く: これが含まれる + と、Visualモードが開始されるたび、または Visual選択範 + 囲が変更されるたびに、Vimはウィンドウシステムのグロー + バルなクリップボードのオーナーになろうとするか、選択さ + れたテキストをクリップボード用レジスタ "* を使ってクリッ + プボードにコピーしようとする。詳細は |guioptions_a| と + |quotestar| を参照。GUI機能が有効のときは 'guioptions' + のフラグ 'a' が使用され、無効のときはこの "autoselect" + フラグが使用される。また、モードレスなセレクションにも + 適用される。 autoselectml "autoselect" と似ているが、モードレスセレクションのみ - に適用される。オプション 'guioptions' の 'A' フラグと - 比較してみること。 + に適用される。'guioptions' のフラグ 'A' と比較してみる + こと。 exclude:{pattern} ターミナルの名前 'term' にマッチするパターンを定義する。 パターンがマッチすると、Xサーバとの通信がなされなくなる。 - このオプションは次のようなときに便利である。 + このオプションは以下の場合に便利である。 - Vimをコンソールで使用しているとき。 - アプリケーションを別のディスプレイで使うため、環境変 数 $DISPLAY が設定されているとき。 - コンソールでVimを使用している最中にXサーバが終了させ られ、Vimをキルせざるを得ないかもしれないとき。 - Xサーバと全く通信しないようにするには、次のようにする: > + Xサーバと全く通信しないようにするには、次のようにする。 > exclude:.* < これは引数 |-X| を使用したのと同じ効果を持つ。 - Note 副作用として、ウィンドウのタイトルは復元されない - ので注意すること。 - オプション 'magic' の値は無視され、 {pattern} は - オプション 'magic' がオンのように解釈される。 - 残りのオプションの値は {pattern} に適用される。 this - must be the last entry. + Note 副作用として、ウィンドウのタイトルが復元されない + ので注意。 + 'magic' の値は無視され、 {pattern} は 'magic' がオンの + ときのように解釈される。オプション 'clipboard' の値の + 残りは {pattern} として認識されるので、"exclude" は最 + 後に指定しなければならない。 *'cmdheight'* *'ch'* 'cmdheight' 'ch' 数値 (既定では 1) グローバル {Vi にはない} - コマンドラインに使われるスクリーン上の行数。|hit-enter| プロンプトの出 - 現を避けるのに役立つ。 + コマンドラインに使われる画面上の行数。|hit-enter| プロンプトの出現を避 + けるのに役立つ。 *'cmdwinheight'* *'cwh'* 'cmdwinheight' 'cwh' 数値 (既定では 7) グローバル {Vi にはない} {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み使用可能} - コマンドライン・ウィンドウに使われるスクリーン上の行数。|cmdwin| を参 - 照すること。 + み有効} + コマンドライン・ウィンドウに使われる画面上の行数。|cmdwin| を参照。 *'columns'* *'co'* 'columns' 'co' 数値 (既定では 80 またはターミナルの幅) グローバル {Vi にはない} - スクリーン上の列幅。普通このオプションはターミナルの初期化の時点で設定 - され、手動で設定する必要はない。 - VimがGUI環境内やサイズ変更可能なウィンドウ内で実行されているときは、こ - のオプションを変更するとウィンドウサイズも変更されるかもしれない。 - あなたがこのオプションの値を変更したのに、Vimがディスプレイの列幅の物 - 理的な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそ - れがある。 + 画面上の列幅を設定する。普通このオプションはターミナルの初期化の時点で + 設定され、手動で設定する必要はない。 + VimがGUI内やサイズ変更可能なウィンドウ内で実行されているときは、このオ + プションを変更するとウィンドウサイズも変更されるかもしれない。 + ユーザがこのオプションを変更したのに、Vimがディスプレイの列幅の物理的 + な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが + ある。 + (訳注: オプション 'lines' も参照) *'comments'* *'com'* 'comments' 'com' 文字列 (既定では @@ -1297,58 +1281,55 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 バッファについてローカル {Vi にはない} {Vi mが |+comments| 機能付きでコンパイルされたときのみ - 使用可能} + 有効} コメント行の始まりとなる文字列の、コンマ区切りのリスト。 - |format-comments| を参照すること。バックスラッシュ(訳注: 文書先頭も参 - 照)を使って、値にスペースを含める方法については、|option-backslash| を - 参照すること。 + |format-comments| を参照。'\' を使って値にスペースを含める方法について + は、|option-backslash| を参照。 *'commentstring'* *'cms'* 'commentstring' 'cms' 文字列 (既定では "/*%s*/") バッファについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - コメント用のテンプレート(雛形)。値の中の "%s" はコメントの内容と置き換 - えられる。現在のところ、折り畳み用のマーカを追加するためにのみ使用され - ている。|fold-marker| を参照すること。 + 有効} + コメント用のテンプレート (雛形)。値の中の "%s" はコメントの内容と置き + 換えられる。現在のところ、折り畳み用のマーカを追加するためにのみ使用さ + れている。|fold-marker| を参照。 *'compatible'* *'cp'* *'nocompatible'* *'nocp'* -'compatible' 'cp' 切替 (既定では オン、 .vimrc ファイルが発見されたら - オフ) +'compatible' 'cp' 切替 (既定では オン、ファイル .vimrc が発見されたら + オフ) グローバル {Vi にはない} - このオプションは、VimをなるべくVi互換にするか、便利な機能を使えるよう - にするかを決定する。 + VimをなるべくVi互換にするか、便利な機能を使えるようにするかを決定する。 これは、特別な種類のオプションである。このオプションの値が変更されると、 - それに伴って他のオプションの値も変更されるからだ。*注意: このオプショ - ンの値を変更すると、予期しない効果が数多く現れる。キーマップの解釈は変 - わり、アンドゥも違った方法で行われる、等々。このオプションを vimrc ファ - イル内で設定するなら、一番先頭に置くこと。 - 既定ではこのオプションはオンになっていて、その他のオプションにはViの既 - 定値が使われる。この既定値は、VimをViと全く同じように使うことを望み、 - オプション 'compatible' について知りもしない、または知りたいとも思わな - い人たちのためのものである。 - Vimが立ち上がる間に ".vimrc" ファイルが見つかると、このオプションはオ - フにされ、その他のオプションで変更されていないものは、みなVimの既定値 - に設定される。要するに、Vimは ".vimrc" ファイルが存在するならVimの既定 - 値を、存在しないならViの既定値を使うのだ (Note: システム全体用の vimrc - ファイルは関係ないことに注意)。 |compatible-default| も参照すること。 + それに伴って他のオプションも変更されるからだ。*注意: このオプションを + 変更すると、予期しない効果が数多く現れる。キーマップの解釈は変わり、ア + ンドゥも違った方法で行われる、等々。このオプションをファイル vimrc 内 + で設定するなら、一番先頭に置くこと。 + 既定ではオンなので、その他のオプションにはViの既定値が使われる。この既 + 定値は、VimをViと全く同じように使うことを望み、オプション 'compatible' + について知りもしない、または知りたいとも思わない人たちのためのものであ + る。 + Vimが立ち上がる間にファイル .vimrc が見つかると、このオプションはオフ + にされ、その他のオプションで変更されていないものは、みなVimの既定値に + 設定される。要するに、Vimはファイル .vimrc が存在するならVimの既定値を、 + 存在しないならViの既定値を使うのだ ( Note: システム全体用のファイル + vimrc は関係ないことに注意)。 |compatible-default| も参照。 このオプションは引数 "-C" でオンに、引数 "-N" でオフにできる。 |-C| と - |-N| を参照すること。 - このオプションをオフに設定すると、「Viの既定値」と「Vimの既定値」が異 - なっているオプションについて、Vimの既定値が用いられるようになる。下の - 表で '+' がついているものを参照すること。その他のオプションは影響を受 - けない。 - このオプションがオンに設定されると、他のオプションがいくつか変更され、 - Vimはできる限りVi互換になろうとする。下の表を参照すること。これはVi互 - 換の編集方法に戻りたいと思うときに使うことができる。 - 'cpoptions' も参照すること。 + |-N| を参照。 + オフに設定すると、「Viの既定値」と「Vimの既定値」が異なっているオプショ + ンについて、Vimの既定値が用いられるようになる。下の表で '+' がついてい + るものを参照。その他のオプションは影響を受けない。 + オンにすると、他のオプションがいくつか変更され、Vimはできる限りVi互換 + を保とうとする。下の表を参照。これはVi互換の編集方法に戻りたいと思うと + きに使うことができる。 + 'cpoptions' も参照。 オプション + Viの既定値 効果 ~ - 'allowrevins' オフ CTRL-_ コマンドなし + 'allowrevins' オフ コマンド CTRL-_ なし 'backupcopy' Unix: "yes" バックアップファイルがコピーになる 他: "auto" バップアップはコピーまたはリネーム 'backspace' "" 普通のバックスペース @@ -1360,10 +1341,10 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'cscopetagorder' 0 |cscopetagorder| を参照 'cscopeverbose' オフ |cscopeverbose| を参照 'digraph' オフ ダイグラフなし - 'esckeys' + オフ Insertモードで <Esc>-キー なし + 'esckeys' + オフ Insertモードで <Esc> で始まるキーなし 'expandtab' オフ タブはスペースに展開されない 'fileformats' + "" 自動ファイルタイプ決定なし - "dos,unix" ただし DOS, Windows と OS/2 以外で + "dos,unix" (ただし DOS, Windows と OS/2 以外で) 'formatoptions' + "vt" Vi互換の文書整形 'gdefault' オフ ":s" でフラグの既定値に 'g' なし 'history' + 0 コマンドラインの履歴なし @@ -1376,8 +1357,8 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'iskeyword' + "@,48-57,_" キーワードはアルファベットと数字と '_' 'joinspaces' オン ピリオドの後ろには空白を2個挿入 'modeline' + オフ モードラインなし - 'more' + オフ リスト表示は止まらない - 'revins' オフ 逆向き挿入なし + 'more' + オフ リスト表示が止まらない + 'revins' オフ 右から左の挿入なし 'ruler' オフ ルーラなし 'scrolljump' 1 ジャンプスクロールなし 'scrolloff' 0 スクロールにオフセットなし @@ -1385,41 +1366,41 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'shortmess' + "" メッセージの短縮なし 'showcmd' + オフ コマンドの文字は表示されない 'showmode' + オフ 現在のモードは表示されない - 'smartcase' オフ 大文字小文字の無視は自動的にならない - 'smartindent' オフ 「賢い」インデントなし - 'smarttab' オフ 「賢い」タブ挿入なし + 'smartcase' オフ 大文字小文字の無視は自動にならない + 'smartindent' オフ 高度なインデントなし + 'smarttab' オフ 高度なタブ挿入なし 'softtabstop' 0 タブは常に 'tabstop' を基準 - 'startofline' オン いくつかのコマンドでさらに行頭に移動する + 'startofline' オン いくつかのコマンドで行頭に移動する 'tagrelative' + オフ タグファイル名は相対的でない 'textauto' + オフ 自動改行コード決定なし 'textwidth' 0 自動行分割なし 'tildeop' オフ ティルデはオペレータではない - 'ttimeout' オフ ターミナルのタイムアウトなし + 'ttimeout' オフ ターミナルの時間切れなし 'whichwrap' + "" 左から右への移動は行を超えない 'wildchar' + CTRL-E 現在の値が <Tab> のときのみ、コマンド ライン補完に CTRL-E を使う - 'writebackup' オンかオフ +writebackup 機能による + 'writebackup' オンかオフ |+writebackup| 機能による *'complete'* *'cpt'* 'complete' 'cpt' 文字列 (既定では: ".,w,b,u,t,i") バッファについてローカル {Vi にはない} - このオプションは、CTRL-P コマンドや CTRL-N コマンドによるキーワード補 - 完 |ins-completion| の動作を指定する。このオプションは行全体の補完 - |i_CTRL-X_CTRL-L| にも適用される。このオプションは補完の方法と、キーワー - ド検索の対象となる場所を示す、コンマ区切りのフラグのリストである。 - . カレントバッファから検索 (オプション 'wrapscan' の値は無視) + コマンド CTRL-P や CTRL-N によるキーワード補完 |ins-completion| の動作 + を指定する。このオプションは行全体の補完 |i_CTRL-X_CTRL-L| にも適用さ + れる。このオプションは補完の方法と、キーワード検索の対象となる場所を示 + す、コンマ区切りのフラグのリストである。 + . カレントバッファから検索 ('wrapscan' の値は無視) w 別のウィンドウ内のバッファから検索 b バッファリスト内の、現在読み込まれている別のバッファから検索 u バッファリスト内の、現在読み込まれていない別のバッファから検索 U バッファリストにないバッファから検索 - k オプション 'dictionary' で指定されたファイルから検索 - k{dict} {dict} で与えられたファイルから検索。 "k" フラグを複数指定して - もよい。ファイル名はパターンでも指定できる。例: > + k 'dictionary' で指定されたファイルから検索 + k{dict} {dict} で与えられたファイルから検索。"k" を複数指定してもよい。 + ファイル名はパターンでも指定できる。例: > :set cpt=k/usr/dict/*,k~/spanish -< s オプション 'thesaurus' で指定されたファイルから検索 - s{tsr} {tsr} で与えられたファイルから検索。 "s" フラグを複数指定して - もよい。ファイル名はパターンでも指定できる。 +< s 'thesaurus' で指定されたファイルから検索 + s{tsr} {tsr} で与えられたファイルから検索。 "s" を複数指定してもよい。 + ファイル名はパターンでも指定できる。 i カレントファイルとインクルードされるファイルから検索 d カレントファイルとインクルードされるファイルから、定義された名 前またはマクロを検索 |i_CTRL-X_CTRL-D| @@ -1436,191 +1417,175 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 1. カレントバッファ 2. 別のウィンドウ内のバッファ 3. 他の読み込まれたバッファ - 4. 読み込まれていないバッファ + 4. バッファリスト内の読み込まれていないバッファ 5. タグ 6. インクルードされるファイル - CTRL-N コマンドと CTRL-P コマンドはオプション 'iskeyword' を利用した全 - てのファイル名展開で使用できる (つまり辞書 |i_CTRL-X_CTRL-K| 、インク - ルードされるパターン |i_CTRL-X_CTRL-I|、タグ |i_CTRL-X_CTRL-]| および - 通常の展開)。 + CTRL-N と CTRL-P は 'iskeyword' を利用した全てのファイル名展開で使用で + きる (つまり辞書 |i_CTRL-X_CTRL-K| 、インクルードされるパターン + |i_CTRL-X_CTRL-I|、タグ |i_CTRL-X_CTRL-]| および通常の展開)。 *'confirm'* *'cf'* *'noconfirm'* *'nocf'* 'confirm' 'cf' 切替 (既定ではオフ) グローバル {Vi にはない} - オプション 'confirm' がオンならば、バッファへの変更を保存していないと実 - 行に失敗する操作 (つまり ":q" と ":e") の際、ダイアログ |dialog| を開 - いてファイルを保存するかどうか尋ねる。これがオンになっていても、意図的 - に変更を廃棄したいなら ! を使える。 - オプション 'confirm' がオフでも、|:confirm| コマンドで個別に確認を求め - ることができる (これはキーマッピングでとても便利である)。 - 関数 |confirm()| とオプション 'guioptions' の 'v' フラグも参照すること。 + オプション 'confirm' がオンならば、バッファへの変更を保存していないと + 実行に失敗する操作 (例えばコマンド ":q" と ":e") の際、ダイアログ + |dialog| を開いてファイルを保存するかどうか尋ねる。これがオンになって + いても、意図的に変更を廃棄したいなら ! を使える。 + 'confirm' がオフでも、コマンド |:confirm| で個別に確認を求めることがで + きる (これはキーマッピングで使うととても便利である)。 + 関数 |confirm()| と 'guioptions' のフラグ 'v' も参照。 *'conskey'* *'consk'* *'noconskey'* *'noconsk'* 'conskey' 'consk' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mのMS-DOS版のみ} - このオプションがオンのとき、キーボードの文字を受け取るのに直接コンソー - ル出入力が使われる。 - これはたいていの場合有効である。|'bioskey'| も参照すること。合わせて、 - 3種類のコンソール入力が使える: + オンのとき、キーボードの文字を受け取るのに直接コンソール出入力が使われ + る。これはたいていの場合有効である。'bioskey' も参照。合わせて、3種類 + のコンソール入力が使える。 'conskey' 'bioskey' action ~ オン オンかオフ 直接コンソール入力 オフ オン BIOS オフ オフ 標準入力 *'cpoptions'* *'cpo'* -'cpoptions' 'cpo' 文字列 (Vimの既定値: "aABceFs", - Viの既定値: 全てのフラグ) +'cpoptions' 'cpo' 文字列 (Vimの既定値: "aABceFs", Viの既定値: 全フラグ) グローバル {Vi にはない} 1文字のフラグの列で設定する。フラグが設定されると、対応する動作がVi互 - 換になる。このオプションは、大部分、またはある程度のVi互換が求められる - ときに使われる。 + 換になる。大部分、またはある程度のVi互換が求められるときに使われる。 'cpoptions' は "compatible-options (互換オプション)" の意味である。 読みやすくするためにコンマを入れてもよい。 将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+=" - と "-=" を使うこと |add-option-flags| 。 - NOTE: このオプションは 'compatible' がオンのときはVi互換の方の値に設定 - され、オプション 'compatible' がオフのときはVim互換の方の値に設定される - ので注意すること。 + と "-=" を使うこと |add-option-flags|。 + NOTE: このオプションは 'compatible' がオンのときはVi互換の値に設定され、 + 'compatible' がオフのときはVim互換の値に設定されるので注意。 フラグ 動作 ~ - a これが含まれると、コマンド ":read" にファイル名の引数を - 与えたとき、そのファイルをカレントウィンドウの代替ファ - イルに設定する。 - A これが含まれると、コマンド ":write" にファイル名の引数 - を与えたとき、そのファイルをカレントウィンドウの代替ファ - イルに設定する。 - b コマンド ":map" 内の "\|" がコマンドの終端と見なされる - ようになる。'\' がキーマッピングに含まれていても、'|' - の次のテキストは次のコマンドと見なされる。'|' をキーマッ - ピングに含めるには、バックスラッシュ (訳注: 文書先頭を - 参照) でなく CTRL-V を使うこと。キーマッピング、略語、 - メニュー、autocmd コマンドの全てに適用される。 - |map_bar| も参照すること。 - B バックスラッシュ (訳注: 文書先頭を参照) が、":menu" コ - マンドのメニューから実行される部分、キーマッピング、略 - 語において、特別な意味を持たなくなる。バックスラッシュ - を CTRL-V のように使いたいのならこのフラグを除くこと。 - 例えば、":map X \<Esc>" というコマンドで X がマップさ - れるのは: + a これが含まれると、":read" にファイル名の引数を与えたと + き、そのファイルをカレントウィンドウの代替ファイルに設 + 定する。 + A これが含まれると、":write" にファイル名の引数を与えた + とき、そのファイルをカレントウィンドウの代替ファイルに + 設定する。 + b ":map" 内の "\|" がコマンドの終端と見なされるようにな + る。'\' はキーマッピングの一部に、'|' の次のテキストは + 次のコマンドと見なされる。'|' をキーマッピングに含める + には、'\' でなく CTRL-V を使うこと。キーマッピングや略 + 語やメニューや autocmd コマンドの全てに適用される。 + |map_bar| も参照。 + B '\' が、":menu" のメニューから実行される部分やキーマッ + ピングや略語において、特別な意味を持たなくなる。'\' を + CTRL-V のように使いたいのならこのフラグを取り除くこと。 + 例えば、":map X \<Esc>" で X がマップされるのは、 'B' が含まれたとき: "\^[" (^[ は本当の <Esc>) 'B' が除かれたとき: "<Esc>" (5個の文字) - (どちらの場合も '<' フラグが除かれているとする) + (どちらの場合も '<' が除かれているとする) c (訳注: 検索でマッチする文字列があった後) カーソル位置 のマッチの終わりから次の検索を行う。このフラグが含まれ ないと、次の検索はカーソル位置の1文字後から始まる。'c' - フラグが含まれると、"/abab" で検索したとき - "abababababab" には3回しかマッチしないが、'c' フラグが - 含まれないと5回マッチする。 - C コマンド ":source" で読み込まれたファイルのうち、バック - スラッシュ(訳注: 文書先頭を参照) で始まる行を連結しな - い。|line-continuation| を参照すること。 - d オプション 'tags' 内で "./" という記法を使ったとき、タ - グファイルはカレントファイルのディレクトリでなく、カレ - ントディレクトリから探す。 - D |r|, |f| や |t| コマンドのような、文字を引数に取る - Normalモードコマンドの後で、CTRL-K コマンドによるダイ - グラフの入力ができなくなる。 - e ":@r" でレジスタの内容を実行するとき、レジスタが行単位 - の効果を持たないときでも、常に最終行に <CR> を付け加え - る。このフラグが含まれないときは、レジスタの内容が行単 - 位の効果を持たず、かつ <CR> で終わらないならば、実行す - ると最終行はコマンドラインに表示され、<CR> を打ち込む - までは編集できる。 + が含まれると、"/abab" で検索したとき "abababababab" に + は3回しかマッチしないが、'c' が含まれないと5回マッチす + る。 + C ":source" で読み込まれたファイルのうち、'\' で始まる行 + を連結しない。|line-continuation| を参照。 + d 'tags' 内で "./" という記法を使ったとき、タグファイル + はカレントファイルのディレクトリでなく、カレントディレ + クトリから探す。 + D |r|, |f| や |t| のような、文字を引数に取る Normalモー + ドコマンドの後で、CTRL-K によるダイグラフの入力ができ + なくなる。 + e ":@r" でレジスタの内容を (訳注: Exコマンドとして) 実行 + するとき、レジスタが行全体を保存したものでないときでも、 + 常に最終行に <CR> を付け加える。このフラグが含まれない + ときは、レジスタの内容が行全体を保存したものでなく、か + つ <CR> で終わらないならば、実行すると最終行はコマンド + ラインに表示され、<CR> を打ち込むまでは編集できる。 E 空の範囲に "y", "d", "c", "g~", "gu", "gU" などのコマ ンドを使うとエラーになる。オペレータは作用する対象が最 - 低でも1文字ないと使えない。例: - これが含まれると、最初の桁で "y0" を行うとエラーになる。 + 低でも1文字ないと使えない。例: これが含まれると、最初 + の桁で "y0" を行うとエラーになる。 f これが含まれると、カレントバッファにファイル名がまだ設 - 定されていないなら、コマンド ":read" にファイル名の引数 - を与えたとき、そのファイル名をカレントバッファのファイ - ル名に設定する。 + 定されていないなら、":read" にファイル名の引数を与えた + とき、そのファイル名をカレントバッファのファイル名に設 + 定する。 F これが含まれると、カレントバッファにファイル名がまだ設 - 定されていないなら、コマンド ":write" にファイル名の引 - 数を与えたとき、そのファイル名をカレントバッファのファ - イル名に設定する。 - g コマンド ":edit" を引数なしで使うと1行目に移動する。 + 定されていないなら、":write" にファイル名の引数を与え + たとき、そのファイル名をカレントバッファのファイル名に + 設定する。 + g ":edit" を引数なしで使うと1行目に移動する。 i これが含まれると、ファイルの読み込み中に中断が起きたと き、ファイルは変更されたままになる。 - j 行の連結時に、'.' の後にのみ空白を2個追加し、'!' や - オプション '?' の後にはそうしない。'joinspaces' も参照 - すること。 + j 行の連結時に追加する空白が、'.' の後のみ2個になり、'!' + や '?' の後は1個になる。'joinspaces' も参照。 J 文 |sentence| は '.', '!' または '?' の後に2個の空白を 伴わなければならない。<Tab> は空白とは見なされない。 - k コマンド ":menu" のメニューから実行される部分、キーマッ - ピング、略語において、直接入力されたキーコードを認識し - ない。例えば、<Key> が ^[OA を送るなら (ここで ^[ は - <Esc>)、":map X ^[OA" というコマンドで X がマップされ - るのは: + k ":menu" で実行される部分や、キーマッピングや略語におい + て、直接入力されたキーコードを認識しない。例えば、 + <Key> が ^[OA を送るなら (ここで ^[ は <Esc> )、 + ":map X ^[OA" で X がマップされるのは、 'k' が含まれたとき: "^[OA" (3個の文字) 'k' が除かれたとき: "<Key>" (1個のキーコード) - 下の '<' フラグも参照すること。 + 下の '<' も参照。 K キーマッピングの途中で、キーコードが完全に入力されるの - を待たない。 - Don't wait for a key code to complete when it is - halfway a mapping. This breaks mapping <F1><F1> when + を待たない。This breaks mapping <F1><F1> when only part of the second <F1> has been read. こうすると <F1><Esc> と打ち込めばマッピングをキャンセルできる。 - l 検索パターンの [] 範囲内で、バックスラッシュ (訳注: 文 - 書先頭を参照) は文字通りに解釈され、"\]" だけが特別な - 意味を持つ。|/[]| を参照すること。 + l 検索パターンの [] 範囲内で、'\' は文字通りに解釈され、 + "\]" だけが特別な意味を持つ。|/[]| を参照。 'l' が含まれたとき: "/[ \t]" がマッチするのは <Space>, '\' と 't' 'l' が除かれたとき: "/[ \t]" がマッチするのは <Space> と <Tab> - L オプション 'list' がオンのとき、 'wrapmargin' オプショ - ン、オプション 'textwidth' とVirtual replaceモード - (|gR| を参照) で、<Tab> の普通の数え方をせず、2文字に - 数える。 - m これが含まれると、対応する括弧の表示を1/2秒待つ。含ま - れていないと、対応する括弧の表示を1/2秒または次の文字 - が打ち込まれるまで待つ。|'showmatch'| を参照すること。 - n これが含まれると、オプション 'number' による行番号表示 - に使われる桁も、折り返された行の表示に使われる。 - o 検索コマンドの行オフセットを、次回の検索のために保存し - ない。 + L 'list' がオンのとき、 'wrapmargin', 'textwidth' と + Virtual replaceモード (|gR| を参照) で、<Tab> の普通の + 数え方をせず、必ず 2 文字に数える。 + m これが含まれると、対応する括弧の表示を0.5秒待つ。含ま + れていないと、対応する括弧の表示を0.5秒または次の文字 + が打ち込まれるまで待つ。'showmatch' を参照。 + n これが含まれると、'number' による行番号表示に使われる + 桁も、折り返された行の表示に使われる。 + o 検索コマンドの行オフセットは、次回の検索には使われない。 O ファイルが上書きされたとき、編集を始めたときにはそのファ イルが存在しなかった場合でも警告しない。これは別人に突 然作り出されたファイルに対する防御である。Viはこれに警 告を出さなかった。 p Vi互換のLisp用インデント。これが含まれないと、いくらか 良いアルゴリズムが使われる。 - r リドゥ (コマンド "." ) で検索を繰り返すとき、実際に以前 - 使われた検索文字列でなくコマンド "/" を使う。 - s バッファに初めて移動する時点でバッファのオプションが設 - 定される。これは Vim version 3.0 と同じ動作である。そ - して既定ではこの動作を行う。これが含まれないと、オプショ - ンはバッファが作られた時点で設定される。 + r リドゥ (コマンド ".") で検索を繰り返すとき、実際には + "/" を使う。 + s バッファが初めてアクティブになる時点でバッファのオプショ + ンが設定される。これは Vim version 3.0 と同じ動作であ + る。そして既定ではこの動作を行う。これが含まれないと、 + オプションはバッファが作られた時点で設定される。 S バッファのオプションを常にバッファに移動する時点で設定 する ('readonly', 'fileformat', 'filetype' と 'syntax' - オプション以外)。これは (ほとんど) Vi互換の設定である。 - オプションはカレントバッファ内で設定される。ユーザがオ - プションの値を変更し、その後で別のバッファに移ると、そ - の値はコピーされる。事実上、バッファのオプションを全て + 以外)。これは (ほとんど) Vi互換の設定である。 + オプションの値は元のカレントバッファでの値になる。ユー + ザがオプションを変更し、その後で別のバッファに移ると、 + その値はコピーされる。事実上、バッファオプションを全て のバッファに対しグローバルにしている。 - 's' 'S' バッファのオプションをコピーするタイミング - オフ オフ バッファが作られた時点 - オン オフ バッファに初めて移動した時点 (既定) - なし オン バッファに移動するたび (vi互換) - - t タグコマンドの検索パターンがコマンド "n" にも使われる。 - これが含まれないと、検索パターンの履歴には加えられるが、 - 最終検索パターンは変化しない。 - u アンドゥがVi互換になる。|undo-two-ways| を参照すること。 - w 空白の上でコマンド "cw" を使ったとき、1文字だけ変更し - て、次の単語の始まりまでの空白は変更しない。 + 's' 'S' バッファのオプションをコピーするタイミング ~ + オフ オフ バッファが作られた時点 + オン オフ バッファが初めてアクティブになった時点 (既定) + なし オン バッファに移動するたび (Vi互換) + + t タグコマンドの検索パターンが "n" による検索の繰り返し + にも使われる。これが含まれないと、検索パターンの履歴に + は加えられるが、最終検索パターンは変化しない。 + u アンドゥがVi互換になる。|undo-two-ways| を参照。 + w 空白の上で "cw" を使ったとき、1文字だけ変更して、次の + 単語の始まりまでの空白は変更しない。 W 読み込み専用ファイルを上書きしない。これが含まれないと、 - 可能であればコマンド ":w!" で読み込み専用ファイルも上 - 書きできる。 + 可能であれば ":w!" で読み込み専用ファイルも上書きでき + る。 x コマンドラインで <Esc> を打ち込むとコマンドを実行する。 Vimでの既定ではコマンドライン入力を中止して元のモード に戻る。それは <Esc> は普通はコマンドの中止に使われる - からである。|c_<Esc>| を参照すること。 - y コピーコマンドをコマンド "." でリドゥできる。 + からである。|c_<Esc>| を参照。 + y コピーコマンドを "." でリドゥできる。 ! フィルタコマンドをリドゥするとき、何であってもとにかく 最後に実行された外部コマンドを使う。これが含まれないと、 最後に実行された「フィルタ」コマンドが使われる。 @@ -1629,45 +1594,43 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 キストはユーザが新しいテキストを入力したときに上書きさ れる。その行はユーザがカーソルを挿入点から動かすコマン ドを入力したときに再描画される。 - % コマンド "%" でVi互換の対応検索が行われる。 + % "%" でVi互換の対応検索が行われる。 "#if", "#endif" などを認識しない。 - "/*" と "*/" を認識しない。 - 単引用符または二重引用符の内部の括弧も数えられる。する - と括弧を含む文字列が対応を乱すことになる。例えば、 - "if (strcmp("foo(", s))" などでは最初の括弧と最後の括 - 弧はマッチしない。これが含まれないと、単引用符または二 - 重引用符の内部の括弧は特別な扱いを受ける。引用符の外部 - の括弧の対応を調べるときは、引用符の内部は一切無視され - る。引用符の内部の括弧の対応を調べるときは、対応する括 - 弧を探す (存在すれば)。これはC言語プログラムではとても - 良く機能する。 - * コマンド ":*" コマンドを ":@" と同じように扱う。これが - 含まれないと、コマンド ":*" は ":'<,'>" へのエイリアス - であり、Visualエリアを選択する。 - < コマンド ":menu" のメニューから実行される部分、キーマッ - ピング、略語において、|<>| 記法による特殊キーの認識を - 行わない。例えば、":map X <Tab>" というコマンドで X が - マップされるのは: + "/*" と "*/" も認識しない。 + 単引用符 ''' または二重引用符 '"' の内部の括弧も数えら + れる。すると括弧を含む文字列が対応を乱すことになる。例 + えば、"if (strcmp("foo(", s))" などでは最初の括弧と最 + 後の括弧はマッチしない。これが含まれないと、単引用符ま + たは二重引用符の内部の括弧は特別な扱いを受ける。引用符 + の外部の括弧の対応を調べるときは、引用符の内部は一切無 + 視される。引用符の内部の括弧の対応を調べるときは、対応 + する括弧を探す (存在すれば)。これはC言語プログラムでは + とても良く機能する。 + * ":*" を ":@" と同じように扱う。これが含まれないと、 + ":*" は ":'<,'>" の別名となり、Visualエリアを選択する。 + < ":menu" で実行される部分や、キーマッピングや略語におい + て、|<>| 記法による特殊キーの認識を行わない。例えば、 + ":map X <Tab>" で X がマップされるのは、 '<' が含まれたとき: "<Tab>" (5個の文字) '<' が除かれたとき: "^I" (^I は本当の <Tab>) - 上の 'k' フラグも参照すること。 + 上の 'k' も参照。 *'cscopepathcomp'* *'cspc'* 'cscopepathcomp' 'cspc' 数値 (既定では 0) グローバル {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 - 用可能} - タグのリストの中でいくつのパスのコンポーネントを表示するかを指定する。 - |cscopepathcomp| を参照すること。 + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 + 効} + タグのリストの中でパスを (訳注: 上にさかのぼって) どこまで表示するかを + 指定する。|cscopepathcomp| を参照。 *'cscopeprg'* *'csprg'* 'cscopeprg' 'csprg' 文字列 (既定では "cscope") グローバル {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 - 用可能} - Cscope を実行するコマンド名を指定する。|cscopeprg| を参照すること。 + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 + 効} + Cscope を実行するコマンド名を指定する。|cscopeprg| を参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -1675,93 +1638,88 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'cscopetag' 'cst' 切替 (既定ではオフ) グローバル {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 - 用可能} - タグコマンドに cscope を使う。|cscope-options| を参照すること。 - NOTE: このオプションはオプション 'compatible' がオンに設定されたときに - オフに設定されるので注意すること。 + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 + 効} + タグコマンドに cscope を使う。|cscope-options| を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'cscopetagorder'* *'csto'* 'cscopetagorder' 'csto' 数値 (既定では 0) グローバル {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 - 用可能} - コマンド ":cstag" が検索を行う順番を指定する。|cscopetagorder| を参照す - ること。 - NOTE: このオプションはオプション 'compatible' がオンに設定されたときに - 0 に設定されるので注意すること。 + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 + 効} + コマンド ":cstag" が検索を行う順番を指定する。|cscopetagorder| を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな + るので注意。 *'cscopeverbose'* *'csverb'* *'nocscopeverbose'* *'nocsverb'* 'cscopeverbose' 'csverb' 切替 (既定ではオフ) グローバル {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ使 - 用可能} - {Vi にはない} + {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 + 効} Cscope のデータベースに情報を追加するときメッセージを表示する。 - |cscopeverbose| を参照すること。 - NOTE: このオプションはオプション 'compatible' がオンに設定されたときに - オフに設定されるので注意すること。 + |cscopeverbose| を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'debug'* 'debug' 文字列 (既定では "") グローバル {Vi にはない} - 値が "msg" に設定されると、省かれるはずのエラーメッセージも表示される - ようになる。これはオプション 'foldexpr' オプションや 'indentexpr' をデ - バッグするのに便利である。 + "msg" に設定されると、省かれるはずのエラーメッセージも表示される。これ + はオプション 'foldexpr' や 'indentexpr' をデバッグするのに便利である。 *'define'* *'def'* 'define' 'def' 文字列 (既定では "^#\s*define") グローバル/バッファについてローカル |global-local| {Vi にはない} - マクロ定義を発見するのに使われるパターンを指定する。値はコマンド "/" - で使うのと同様の検索パターンである。このオプションはコマンド "[i" や - コマンド "[d" など |include-search| に使われる。オプション 'isident' は - マッチした部分の後の定義された名前を認識するのに使われる: - {match with 'define'}{non-ID chars}{defined name}{non-ID char} - 値に空白やバックスラッシュを含めるためにバックスラッシュを挿入すること - に関しては、|option-backslash| を参照すること (訳注: 文書先頭も)。 - 値は既定ではC言語プログラム用である。C++言語プログラムには、定数定義を - 加えて次のようにすると便利だろう: > + マクロ定義を発見するのに使われるパターンを指定する。値はコマンド "/" + で使うのと同様の検索パターンである。このオプションは "[i" や "[d" 等に + 使われる |include-search|。オプション 'isident' は、これがマッチした部 + 分の後の定義された名前を認識するのに使われる。 + {'define' のマッチ}{非識別子}{定義名}{非識別子} + 値に空白や '\' を含めるために '\' を挿入することに関しては、 + |option-backslash| を参照。 + 既定値はCプログラム用である。C++プログラムには、定数定義を加えて次のよ + うにすると便利だろう。 > ^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\) -< コマンド ":set" で設定するときは、バックスラッシュの数を2倍にする必要が - ある! +< ":set" で設定するときは、'\' の数を2倍にする必要がある! *'delcombine'* *'deco'* 'delcombine' 'deco' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み使用可能} - ユニコードのファイルを編集する際にこのオプションがオンならば、バックス - ペースとNormalモードのコマンド "x" はそれぞれの文字の上の combining - character のみを削除する。オフのときは (これが既定値である) combining - character と文字は同時に削除される。 + み有効} + オンのときは、Unicodeのファイルの編集時、バックスペースとNormalモード + のコマンド "x" はそれぞれの文字の上の combining character のみを削除す + る。オフのときは (これが既定である) combining character と文字は同時に + 削除される。 このオプションは、ヘブライ語その他の言語で、ベースとなる文字の上に - combining character が付き、combining character のみを削除したいときに - 便利である。 + combining character が付いていて、combining character のみを削除したい + ときに便利である。 *'dictionary'* *'dict'* 'dictionary' 'dict' 文字列 (既定では "") グローバル/バッファについてローカル |global-local| {Vi にはない} - コンマ区切りのファイル名のリスト。キーワード補完コマンド + ファイル名のコンマ区切りのリスト。キーワード補完コマンド |i_CTRL-X_CTRL-K| 用の単語を探すために使われる。単語のリストからなるファ イルを指定する。その中では1行ごとに1語が並べられていてもよいし、1行に - キーワードでない文字 (空白文字を推奨) で区切られた数語が並んでいてもよ - い。1行の文字数の最大値は510バイト分である (訳注: 日本語のいわゆる全角 - 文字では半分の255文字)。 - ファイル名にコンマを含めるには、コンマの前にバックスラッシュを置くこと。 - コンマの後ろの空白は無視されるが、それ以外の空白はファイル名の一部とし - て扱われる。バックスラッシュの使い方については |option-backslash| を参 - 照すること (訳注: 文書先頭も参照すること)。 - 単語リストはどこで見つかるか? + キーワードでない文字 (空白を推奨) で区切られた数語が並んでいてもよい。 + 1行の文字数の最大値は510バイト分である (訳注: 日本語のいわゆる全角文字 + では半分の255文字)。 + ファイル名にコンマを含めるには、コンマの前に '\' を置くこと。コンマの + 後ろの空白は無視されるが、それ以外の空白はファイル名の一部として扱われ + る。'\' の使い方については |option-backslash| を参照すること。 + 単語リストはどこで見つかるか? - FreeBSDでは、"/usr/share/dict/words" というファイルがある。 - - Simtelアーカイブでは、"msdos/linguist" ディレクトリを探すこと。 + - Simtelアーカイブでは、ディレクトリ "msdos/linguist" を探すこと。 - GNUコレクションでは、"miscfiles" の中にある。 リストにディレクトリを追加するときには |:set+=| コマンド、リストからディ レクトリを除くときには |:set-=| コマンドを使うのがよい。こうすると将来 @@ -1774,54 +1732,50 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'diff' 切替 (既定ではオフ) ウィンドウについてローカル {Vi にはない} - {Vi mが |+diff| 機能付きでコンパイルされたときのみ使用 - 可能} + {Vi mが |+diff| 機能付きでコンパイルされたときのみ有効} カレントウィンドウをファイル間の差異を示すウィンドウのグループに組み入 - れる。|vimdiff| を参照すること。 + れる。|vimdiff| を参照。 *'dex'* *'diffexpr'* 'diffexpr' 'dex' 文字列 (既定では "") グローバル {Vi にはない} - {Vi mが |+diff| 機能付きでコンパイルされたときのみ使用 - 可能} - 2個のファイル間の差異を求める際に、ed形式のdiffファイルを求めるために - 評価されるexpressionを指定する。|diff-diffexpr| を参照すること。 + {Vi mが |+diff| 機能付きでコンパイルされたときのみ有効} + 2個のファイル間の差異を求めるとき、ed形式のdiffファイルを求めるために + 評価される expression。|diff-diffexpr| を参照。 *'dip'* *'diffopt'* 'diffopt' 'dip' 文字列 (既定では "filler") グローバル {Vi にはない} - {Vi mが |+diff| 機能付きでコンパイルされたときのみ使用 - 可能} - Diffモード用のオプションを設定する。このオプションの値には、以下の文字 - 列をコンマで区切ったものが設定できる。 + {Vi mが |+diff| 機能付きでコンパイルされたときのみ有効} + Diffモード用のオプション設定。値は、以下のキーワードのコンマ区切りのリ + ストである。指定しないものがあってもよい。 filler 片方のウィンドウ内のテキストのある位置に行が挿 入されていたときに、ウィンドウのスクロールを同 調させるために、埋め立て用の行を表示する。ウィ - ンドウが隣り合っていて、'scrollbind' オプショ - ンがオンのときには大抵便利である。 + ンドウが隣り合っていて、オプション + 'scrollbind' がオンのときには大抵便利である。 - context:{n} 変更のあった行と、変更がなく折り畳まれている行 - の間に、{n} 行分の「コンテキスト」を表示する。 - これが設定されていないと、コンテキストは6行に - なる。|fold-diff| を参照すること。 + context:{n} 変更のあった行の上下を {n} 行だけ折り畳まずに + 表示 (コンテキストの表示) する。指定されないと、 + コンテキストは6行になる。|fold-diff| を参照。 icase テキストの大文字と小文字の違いを無視する。"a" - と "A" は同じものと見なされる。'diffexpr' オプ - ションの値が空なら、コマンド "diff" に "-i" フ - ラグを追加する。 - - iwhite 空白の数の違いを無視する。'diffexpr' オプショ - ンの値が空なら、コマンド "diff" に "-b" フラグ - を追加する。これが正確には何を指定しているのか - についてはコマンド "diff" のドキュメントを参照 - すること。これは後ろに追加された空白は無視する - が、前に追加された空白は無視しないはずである。 + と "A" は同じものと見なされる。オプション + 'diffexpr' が空なら、コマンド "diff" にフラグ + "-i" を追加する。 + + iwhite 空白の数の違いを無視する。オプション + 'diffexpr' が空なら、コマンド "diff" にフラグ + "-b" を追加する。これが正確には何を指定してい + るのかについては、コマンド "diff" のドキュメン + トを参照すること。これは後ろに追加された空白は + 無視するが、前に追加された空白は無視しないはず + である。 例: > - :set diffopt=filler,context:4 :set diffopt= :set diffopt=filler @@ -1831,21 +1785,21 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 グローバル {Vi にはない} {Vi mが |+digraphs| 機能付きでコンパイルされたときのみ - 使用可能} - Insertモードで{char1} <BS> {char2} でダイグラフを入力できるようにする。 - |digraphs| を参照すること。 - NOTE: このオプションはオプション 'compatible' がオンに設定されたときに - オフに設定されるので注意すること。 + 有効} + Insertモードで {char1} <BS> {char2} でダイグラフを入力できるようにする。 + |digraphs| を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'directory'* *'dir'* 'directory' 'dir' 文字列 (Amigaでの既定値: ".,t:", MS-DOSとWin32での既定値: ".,c:\tmp,c:\temp" Unixでの既定値: ".,~/tmp,/var/tmp,/tmp") グローバル - スワップファイル用のディレクトリ名を、コンマで区切って指定する。 - - スワップファイルは、リスト内の利用できるディレクトリのうち、先頭のディ + スワップファイル用ディレクトリの、コンマ区切りのリスト。 + - スワップファイルは、リスト内の利用できるディレクトリのうち、最初のディ レクトリの中に作られる。 - - 値が空だとスワップファイルは作られない (回復は不可能になる!)。 + - 値が空だとスワップファイルは作られない (回復は不可能になる!)。 - ディレクトリに "." を指定すると、編集されているファイルと同じディレ クトリにスワップファイルが作られる。Unixではファイル名の先頭にドット が追加されるので、ディレクトリ内のファイル一覧には表示されない。 @@ -1856,98 +1810,96 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 り記号2個で終わっていたら、スワップファイルの名前はフルパスに従って 付けられる。スワップファイルのファイル名をフルパス形式で表し、ディレ クトリの区切り文字をパーセント記号 '%' で置き換えたものが使われる。 - こうするとスワップファイル格納用ディレクトリの中でも、ファイル名の一 - 意性が保証される。 + こうするとスワップファイル格納用ディレクトリの中でも (訳注: 別のディ + レクトリ内の同名ファイルのスワップファイルが集まるかもしれない)、ファ + イル名の一意性が保証される。 - コンマの後の空白は無視されるが、その他の場所の空白はディレクトリ名の - 一部と見なされる。ディレクトリ名の先頭に空白を指定したいなら、バック - スラッシュを前に付けること。 - - コンマをディレクトリ名の一部に使いたいなら、バックスラッシュを前に付 - けること。 + 一部と見なされる。ディレクトリ名の先頭に空白を指定したいなら、'\' を + 前に付けること。 + - コンマをディレクトリ名の一部に使いたいなら、コンマの前に '\' を付け + ること。 - ディレクトリ名は ':' や '/' で終わっていてもよい。 - 環境変数は展開される |:set_env|。 - - '\' の扱いには注意すること。空白の前には1個置く。値の中に指定するに - は2個置く (|option-backslash| を参照すること)。例: > + - '\' の扱いには注意。空白の前には1個置く。値の中に指定するには2個置く + (|option-backslash| を参照)。例: > :set dir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces -< - Vim version 3.0 との後方互換性のために、値の先頭に '>' を置いてもそ - れは無視される。 +< - Vim version 3.0 との後方互換性のため、値の先頭に '>' を置いてもそれ + は無視される。 リストの先頭には "." を指定することを推奨する。こうすると、同じファイ ルを2重に編集しようとすると警告が出る。Unixでディレクトリ "/tmp" を使 うのはお勧めできない。システムがクラッシュすると、スワップファイルも失 われてしまう。ディレクトリ "/var/tmp" の中はリブート時にも大抵クリアさ れないので、ディレクトリ "/tmp" よりもよい選択である。しかしその中には 多くのファイルが入っているかもしれないので、ユーザのスワップファイルは - 他のファイルに紛れて分からなくなってしまうかもしれない。ユーザのホーム - ディレクトリ内のディレクトリ "tmp" が最初に試されるのはそのためだ。 + 他のファイルに紛れて分からなくなるかもしれない。ユーザのホームディレク + トリ内のディレクトリ "tmp" が最初に試されるのはそのためだ。 リストにディレクトリを追加するときにはコマンド |:set+=|、リストからディ レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来 のヴァージョンで異なった既定値が使われるようになったときに、問題が起き るのを防げる。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 - {Vi: tempファイルを作るディレクトリを指定する。既定では "/tmp"} + {Vi: 一時ファイルを作るディレクトリを指定する。既定では "/tmp"} *'display'* *'dy'* 'display' 'dy' 文字列 (既定では "") グローバル {Vi にはない} - テキスト表示の方法を変える。値はフラグのコンマ区切りのリストである: + テキスト表示の方法を変える。値はフラグのコンマ区切りのリストである。 lastline これが含まれると、ウィンドウの最後の行ができる限りまで 表示される。含まれないと、最後の行が収まりきらないなら その行は "@" と表示される。 - uhex 印刷できない文字を (訳注: つまり、表示できる文字に対応 - していない文字コードを) <xx> という形式で16進数表示し、 - ^C や ~C の形式を使わない。 + uhex unprintable な文字を (訳注: 文書先頭を参照) <xx> とい + う形式で16進数表示し、^C や ~C の形式を使わない。 *'eadirection'* *'ead'* 'eadirection' 'ead' 文字列 (既定では "both") グローバル {Vi にはない} {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み使用可能} + み有効} オプション 'equalalways' が適用されるときに、 - ver ウィンドウの高さにのみ影響がある - hor ウィンドウの幅にのみ影響がある - both ウィンドウの高さと幅、両方に影響がある + ver ウィンドウの高さにのみ効果がある + hor ウィンドウの幅にのみ効果がある + both ウィンドウの高さと幅、両方に効果がある *'ed'* *'edcompatible'* *'noed'* *'noedcompatible'* 'edcompatible' 'ed' 切替 (既定ではオフ) グローバル - コマンド ":substitute" のフラグ 'g' とフラグ 'c' を、次に別の方を指定 - するまでずっと効力を持つようにする。|complex-change| を参照すること。 - オプション 'gdefault' も参照すること。 - このオプションをオンに設定するのは推奨できない! + コマンド ":substitute" のフラグ 'g' と 'c' を、次に別の方を指定するま + でずっと効力を持つようにする。|complex-change| を参照。オプション + 'gdefault' も参照。 + このオプションをオンに設定するのは推奨できない! *'encoding'* *'enc'* -'encoding' 'enc' 文字列 (既定では "latin1" - または環境変数 $LANG によって決まる値) +'encoding' 'enc' 文字列 (既定では "latin1" または $LANG) グローバル {Vi にはない} {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み使用可能} + み有効} Vim内部で使われる文字エンコーディングを設定する。そのエンコーディング - はバッファやレジスタ内のテキスト、expression内の文字列、viminfo ファイ - ル内のテキストなどに適用される。つまり、このオプションはVimの通常扱う - 文字の種類を設定する。指定できる値については |encoding-names| を参照す - ること。 + はバッファやレジスタ内のテキスト、expression 内の文字列、ファイル + viminfo 内のテキスト等に適用される。つまり、このオプションはVimの通常 + 扱う文字の種類を設定する。指定できる値については |encoding-names| を参 + 照。 NOTE: このオプションの値を変更しても、Vim内部の既存のテキストのエンコー - ディングは変化しないので注意すること。マルチバイト文字がおかしくなる恐 - れもある。既定の値から変更しないか、Vimが立ち上がるときに限って設定す - ること。|multibyte| を参照すること。 + ディングは変化しないので注意。マルチバイト文字がおかしくなる恐れもある。 + 既定の値から変更しないか、Vimの起動時に限って設定すること。|multibyte| + を参照。 - 編集するファイルの文字エンコーディングはオプション 'encoding' の値と異 - なってもよい。そちらはオプション 'fileencoding' で設定される。エンコー - ディングの変換は組み込み関数 iconv() またはオプション 'charconvert' で - 指定される expression によってなされる。 + 編集するファイルの文字エンコーディングはオプション 'encoding' と異なっ + てもよい。そちらは 'fileencoding' で設定される。エンコーディングの変換 + は関数 iconv() または 'charconvert' で指定された expression による。 - 普通、オプション 'encoding' の値はユーザのカレントロケールと同じである。 - Vimがユーザの環境設定を認識したならば、それが既定値になる。オプション - 'encoding' の値がカレントロケールに設定されていなければ、入力されたテ - キストと表示されるテキストを変換するために、オプション 'termencoding' - が設定されていなければならない。|encoding-table| を参照すること。 + 普通、'encoding' はユーザのカレントロケールと同じである。Vimがユーザの + 環境設定を認識したならば、それが既定値になる。'encoding' の値がカレン + トロケールに設定されていなければ、入力されたテキストと表示されるテキス + トを変換するために、'termencoding' が設定されていなければならない。 + |encoding-table| を参照。 このオプションを設定すると、必要に応じてフォントを設定できるように、 - |autocommand| のイベント |EncodingChanged| が発生する。 + autocommand のイベント |EncodingChanged| が発生する。 オプションが設定されると、値は小文字に変換される。そのため、値を大文字 で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。 @@ -1956,22 +1908,20 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 "utf-8" になる。 Note: "latin1" という値は、エンコーディングを判別できなかったときにも - 使われるので注意すること。これが正しいのは、実際に latin1 エンコーディ - ングのファイルを編集するときだけである!実際の文字セットが latin1 でな - いときは、オプション 'fileencoding' とオプション 'fileencodings' の値 - が空であるのを確認すること。変換が必要なときは、utf-8 の使用に切り替え - ること。 - - 値が "unicode", "ucs-2" または "ucs-4" であるとき、Vim内部では utf-8が - 使われている。これにはユーザが編集中に注意を払うことはないが、 + 使われるので注意。これが正しいのは、編集するファイルが実際に latin1 エ + ンコーディングのときのみである!実際の文字セットが latin1 でないときは、 + 'fileencoding' と 'fileencodings' が空であるのを確認すること。変換が必 + 要なときは、utf-8 を使うようにすること。 + + 値が "unicode", "ucs-2" または "ucs-4" であるとき、Vim内部では utf-8 + が使われている。このことはユーザが編集中に注意を払うことはないが、 |viminfo-file| については問題になる。またVimはターミナルも utf-8 を使 - うことを想定する。そのため、オプション 'encoding' の値を utf-8 でなく - 上記のいずれかの値に設定しても、オプション 'fileencoding' の値が空のと - きに編集するファイルのエンコーディングにしか影響がない。 + うことを想定する。そのため、'encoding' を utf-8 でなく上記のいずれかの + 値に設定しても、'fileencoding' が空のときに編集するファイルのエンコー + ディングにしか影響がない。 - オプション 'encoding' の値が Unicode の一種に設定され、オプション - 'fileencodings' がまだ設定されていなければ、オプション 'fileencodings' - の既定値は変更される。 + 'encoding' が Unicode の一種に設定され、'fileencodings' がまだ設定され + ていなければ、'fileencodings' の既定値は変更される。 *'endofline'* *'eol'* *'noendofline'* *'noeol'* 'endofline' 'eol' 切替 (既定ではオン) @@ -1981,24 +1931,24 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 オンならば、ファイルの最終行に <EOL> が書き込まれない。このオプション はファイルの編集を始めるときには自動的にオンになる。ただし編集を始めた ファイルの最終行に <EOL> がないときにはオフになる。普通はユーザがこの - オプションを設定する必要はない。オプション 'binary' がオフのときはこの - オプションの値は使われない。オプション 'binary' がオンのときには、ファ - イルの最終行に <EOL> があったかどうかを復元するためにこのオプションが - 使われる。そのため、ユーザがファイルを書き込むときに元のファイルの状態 - を保つことができる。しかし状態を変更することもできる。 + オプションを設定する必要はない。'binary' がオフのときはこのオプション + は使われない。'binary' がオンのときは、ファイルの最終行に <EOL> があっ + たかどうかを復元するためにこのオプションが使われる。そのため、ユーザが + ファイルを書き込むときに元のファイルの状態を保つことができるし、変更す + ることもできる。 *'equalalways'* *'ea'* *'noequalalways'* *'noea'* 'equalalways' 'ea' 切替 (既定ではオン) グローバル {Vi にはない} - オンのとき、ウィンドウを分割したり閉じたりした後、全てのウィンドウが自 - 動的に同じサイズになる。オフのときは、ウィンドウを分割するとカレントウィ - ンドウのサイズだけが減り、他のウィンドウに変化はない。ウィンドウを閉じ - ると、(オプション 'splitbelow' と 'splitright' の値に従って) 閉じたウィ - ンドウの隣のウィンドウの行数が増す。 - 水平に分割されたウィンドウと垂直に分割されたウィンドウが混ざっていると + オンのときは、ウィンドウを分割したり閉じたりした後、全てのウィンドウが + 自動的に同じサイズになる。オフのときは、ウィンドウを分割するとカレント + ウィンドウのサイズだけが減り、他のウィンドウに変化はない。ウィンドウを + 閉じると、('splitbelow' と 'splitright' に従って) 閉じたウィンドウの隣 + のウィンドウの行数が増す。 + 水平に分割されたウィンドウと垂直に分割されたウィンドウが混在していると きは、サイズの最小値が計算され、いくつかのウィンドウは (余裕があれば) - 大きくなる。オプション 'eadirection' はサイズの変化する方向を指定する。 + 大きくなる。'eadirection' はサイズの変化する方向を指定する。 *'equalprg'* *'ep'* 'equalprg' 'ep' 文字列 (既定では "") @@ -2006,9 +1956,8 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 {Vi にはない} コマンド "=" に使う外部プログラムを指定する。値が空のときは内部関数が 整形に使われる (オプション 'lisp', 'cindent' または 'indentexpr')。 - 環境変数は展開される |:set_env|。値に空白やバックスラッシュ (訳注: 文 - 書先頭を参照すること) を含めることについては |option-backslash| を参照 - すること。 + 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については + |option-backslash| を参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -2019,7 +1968,7 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 る。このオプションはエラーメッセージにのみ適用され、メッセージのない多 くのエラー (例えばNormalモードで <ESC> を打ち込んだとき) についてはベ ルは常に使用される。ベルをビープ音にしたり、画面フラッシュにしたり、無 - 効にしたりするためにはオプション 'visualbell' を参照すること。 + 効にしたりするためには、オプション 'visualbell' を参照。 *'errorfile'* *'ef'* 'errorfile' 'ef' 文字列 (Amigaでの既定値: "AztecC.Err", @@ -2027,15 +1976,13 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 グローバル {Vi にはない} {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ - 使用可能} - QuickFixモードで使われるエラーファイルの名前 (|:cf| を参照すること)。 - コマンドライン引数 "-q" が指定されたときは、オプション 'errorfile' の - 値はそれに続く値に設定される。|-q| を参照すること。 - コマンド ":make" には「使われない」。それについてはオプション 'makeef' - を参照すること。 - 環境変数は展開される |:set_env|。値に空白やバックスラッシュ (訳注: 文 - 書先頭を参照すること) を含めることについては |option-backslash| を参照 - すること。 + 有効} + QuickFixモードで使われるエラーファイルの名前 (|:cf| を参照)。 + コマンドライン引数 "-q" が指定されたときは、オプション 'errorfile' は + それに続く値に設定される。|-q| を参照。 + コマンド ":make" には「使われない」。それについては 'makeef' を参照。 + 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については + |option-backslash| を参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -2044,61 +1991,58 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 グローバル/バッファについてローカル |global-local| {Vi にはない} {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ - 使用可能} + 有効} エラーファイルの内容の書式を、関数 scanf 風に指定する (|errorformat| - を参照すること)。 + を参照)。 *'esckeys'* *'ek'* *'noesckeys'* *'noek'* 'esckeys' 'ek' (Vimの既定値: オン, Viの既定値: オフ) グローバル {Vi にはない} - このオプションをオンに設定すると、<Esc> で始まるファンクションキーも - Insertモードで認識されるようになる。このオプションがオフのときは、カー - ソルキーとファンクションキーは、<Esc> で始まるならInsertモードで使うこ - とができない。こうすることの利点は、 <Esc> を一回打ち込むだけですぐに - 認識され、1秒ほど待つ必要がないことだ。このオプションをオフにしなくて - も、オプション 'timeoutlen' とオプション 'ttimeoutlen' の値を変更して - もいいかもしれない。 Note オプション 'esckeys' がオフのときでも、どの - キーをマッピングすることもできるが、そのままではカーソルキーは使用でき - ないことに注意すること。 - NOTE: このオプションはオプション 'compatible' がオンに設定されたときに - はViの既定値に、オフに設定されたときにはVimの既定値に設定されるので注 - 意すること。 + オンのときは、<Esc> で始まるファンクションキーもInsertモードで認識され + るようになる。オフのときは、<Esc> で始まるカーソルキーとファンクション + キーは、Insertモードで使うことができない。オンにすることの利点は、 + <Esc> を一回打ち込むだけですぐに認識され、1秒ほど待つ必要がないことだ。 + このオプションをオフにしなくても、オプション 'timeoutlen' と + 'ttimeoutlen' を変更してみるとよい。 Note 'esckeys' がオフのときでも、 + どのキーをマッピングすることもできるが、そのままではカーソルキーは使用 + できないことに注意。 + NOTE: このオプションは 'compatible' がオンのときはViの既定値に、オフの + ときはVimの既定値に設定されるので注意。 *'eventignore'* *'ei'* 'eventignore' 'ei' 文字列 (既定では "") グローバル {Vi にはない} {Vi mが |+autocmd| 機能付きでコンパイルされたときのみ - 使用可能} - Autocommandのイベント名のうち、無視したいものをリストにして指定する。 - 値が "all" に設定されると、全ての autocommand のイベントが無視され、 + 有効} + Autocommand のイベント名のうち、無視したいもののリスト。 + が "all" に設定されると、全ての autocommand のイベントが無視され、 autocommand は実行されなくなる。 - そうしないとき、値にはイベント名のコンマ区切りのリストを指定する。例: > - :set ei=WinEnter,WinLeave + それ以外では、値はイベント名のコンマ区切りのリストである。例: > + :set ei=WinEnter,WinLeave < *'expandtab'* *'et'* *'noexpandtab'* *'noet'* 'expandtab' 'et' 切替 (既定ではオフ) バッファについてローカル {Vi にはない} - Insertモードで: <Tab> を挿入するのに、適切な数の空白を使う。また、コマ - ンド '>' や '<' によるインデントや、オプション 'autoindent' がオンのと - きのインデントでも空白を使う。オプション 'expandtab' がオンのときに本 - 当のタブを挿入するには、CTRL-V<Tab> を使うこと。|:retab| と - |ins-expandtab| も参照すること。 - NOTE: このオプションはオプション 'compatible' がオンに設定されたときオ - フに設定されるので注意すること。 + Insertモードで <Tab> を挿入するとき、代わりに適切な数の空白を使う。ま + た、コマンド '>' や '<' によるインデントや、オプション 'autoindent' が + オンのときのインデントでも空白を使う。'expandtab' がオンのときに本当の + タブを挿入するには、CTRL-V<Tab> を使うこと。|:retab| と + |ins-expandtab| も参照。 + NOTE: このオプションは、'compatible' がオンのときはオフになるので注意。 *'exrc'* *'ex'* *'noexrc'* *'noex'* 'exrc' 'ex' 切替 (既定ではオフ) グローバル {Vi にはない} - カレントディレクトリ内のファイル .vimrc, .exrc や .gvimrc などの読み込 - みを行う。このオプションをオンにするなら、オプション 'secure' もオンに - するよう検討すること (|initialization| を参照すること)。ファイル - .exrc, .vimrc や .gvimrc でローカルなものを用いると潜在的な安全保護の - 漏れを招くので、注意して使うこと! - |.vimrc| と |gui-init| も参照すること。 + カレントディレクトリ内のファイル .vimrc, .exrc や .gvimrc 等の読み込み + を有効にする。このオプションをオンにするなら、オプション 'secure' もオ + ンにするよう検討すること (|initialization| を参照)。ファイル .exrc, + .vimrc や .gvimrc にローカルなものを用いると潜在的な安全保護の漏れを招 + くので、注意して使うこと! + |.vimrc| と |gui-init| も参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -2106,75 +2050,70 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'fileencoding' 'fenc' 文字列 (既定では "") バッファについてローカル {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み使用可能} + み有効} {Vi にはない} カレントバッファ内のファイルの文字エンコーディングを設定する。 - オプション 'fileencoding' の値がオプション 'encoding' の値と異なるとき、 - ファイルの読み書きの際に文字エンコーディングの変換が行われる。 - オプション 'fileencoding' の値が空だと、オプション 'encoding' と同じ値 - が使われる (ファイルの読み書きの際に変換をしない)。 + オプション 'fileencoding' が 'encoding' と異なるとき、ファイルの読み書 + きの際に文字エンコーディングの変換が行われる。 + 'fileencoding' が空だと、'encoding' と同じ値が使われる (ファイルの読み + 書きの際に変換をしない)。 警告: 文字エンコーディングを変換すると、情報が失われるおそれが - ある!オプション 'encoding' の値が "utf-8" だと、変換は大抵成 - 功するし、逆変換をしても同じテキストになる。オプション - 'encoding' の値が "utf-8" でないときは、失われる文字があるかも - しれない! - 設定可能な値についてはオプション 'encoding' を参照すること。それらに加 - え、変換ツール (関数 iconv() またはオプション 'charconvert' に設定され - たもの) で変換可能なエンコーディングの値も設定できる。 - ファイルを読み込むときには、オプション 'fileencoding' の値はオプション - 'fileencodings' の値の中から設定される。 - あるエンコーディングのファイルを読み込むにはオプション 'fileencoding' - を設定してもだめで、引数 |++enc| を使う。 + ある!'encoding' が "utf-8" だと、変換は大抵成功するし、逆変換 + をしても同じテキストになる。'encoding' が "utf-8" でないときは、 + 失われる文字があるかもしれない! + 指定可能な値については 'encoding' を参照。それらに加え、変換ツール (関 + 数 iconv() または 'charconvert' で指定された expression) で変換可能な + エンコーディングの値も設定できる。 + ファイルを読み込むときは、'fileencoding' は 'fileencodings' の値の中か + ら設定される。あるエンコーディングのファイルを読み込むには + 'fileencoding' を設定してもだめで、引数 |++enc| を使う。 "8bit-" や "2byte-" を頭に付けてもここでは意味がなく、無視される。 オプションが設定されると、値は小文字に変換される。そのため、値を大文字 で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。 - 値がオプション 'encoding' の値に含まれることが認識されると、値は標準の - 名前に変換される。例えば"ISO_88592" は "iso-8859-2" になる。 - ファイルの編集を始めた後にこのオプションを設定すると、オプション - 'modified' がオンになる。なぜならそのファイルの中身は、書き込まれると - きには違ったものになっているからである。 - このオプションは、オプション 'modifiable' がオフのときには設定できない。 + 値が 'encoding' の値に含まれることが認識されると、値は標準の名前に変換 + される。例えば "ISO_88592" は "iso-8859-2" になる。 + ファイルの編集を始めた後にこのオプションを設定すると、'modified' がオ + ンになる。なぜならそのファイルの中身は、書き込まれるときには違うものに + なるからである。 + このオプションは、'modifiable' がオフのときには変更できない。 *'fe'* NOTE: Vim version 6.0 以前では、このオプションはVim全体の文字エンコー - ディングを指定していたことに注意すること。これは誤りだった。そのために - は代わりにオプション 'encoding' を使うこと。古い省略形式の名前は 'fe' - だが、これはもう使われていない。 + ディングを指定していたことに注意。これは誤りだった。そのためには代わり + に 'encoding' を使うこと。古い省略形式の名前は 'fe' だが、これはもう使 + われていない。 *'fileencodings'* *'fencs'* 'fileencodings' 'fencs' 文字列 (既定値: "ucs-bom", - オプション 'encoding' の値がユニコードに設定さ - れたときは "ucs-bom,utf-8,latin1") + 'encoding' の値がUnicodeに設定されたときは + "ucs-bom,utf-8,latin1") グローバル + {Vi にはない} {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み使用可能} - {Vi にはない} - このオプションには、ファイルの編集時に考慮される文字エンコーディングの - リストを指定する。 - ファイルが読み込まれたとき、Vimはこのオプションの値の先頭の文字エンコー - ディングを使おうとする。そのときエラーが発見されると、値のリスト内で次 - に並んでいるエンコーディングが試される。 - 有効なエンコーディングが見つかると、オプション 'fileencoding' の値がそ - れに設定される。 - 全て失敗した場合は、オプション 'fileencoding' の値は空に設定される。こ - れはオプション 'encoding' の値が使われていることを表す。 + み有効} + 値は、ファイルの編集時に考慮される文字エンコーディングのリストである。 + ファイルが読み込まれたとき、Vimは指定されたうちの先頭の文字エンコーディ + ングを使おうとする。そのときエラーが発見されると、値のリスト内で次に並 + んでいるエンコーディングが試される。 + 有効なエンコーディングが見つかると、オプション 'fileencoding' がそれに + 設定される。 + 全て失敗した場合は、'fileencoding' は空になる。これは 'encoding' の値 + が使われていることを表す。 警告: 文字エンコーディングを変換すると、情報が失われるおそれが - ある!オプション 'encoding' の値が "utf-8" だと、変換は大抵成 - 功するし、逆変換をしても同じテキストになる。オプション - 'encoding' の値が "utf-8" でないときは、失われる文字があるかも - しれない! + ある!'encoding' が "utf-8" だと、変換は大抵成功するし、逆変換 + をしても同じテキストになる。'encoding' が "utf-8" でないときは、 + 失われる文字があるかもしれない! ファイル先頭にユニコードの BOM (Byte Order Mark: バイト順マーク) があ るかどうか調べるには、"ucs-bom" という特別な値が使える。この値を - "utf-8" 等のユニコード系の値よりも後に指定すると正しく機能しない。 - オプション 'fileencodings' の値が空のときにはオプション 'fileencoding' - の値は変更されない。設定可能な値についてはオプション 'encoding' を参照 - すること。それらに加え、変換ツール (関数 iconv() またはオプション - 'charconvert' に設定されたもの) で変換可能なエンコーディングの値も設定 - できる。 + "utf-8" 等のUnicode系の値よりも後に指定すると正しく機能しない。 + 'fileencodings' が空のときには 'fileencoding' は変更されない。 + 設定可能な値については 'encoding' を参照すること。それらに加え、変換ツー + ル (関数 iconv() または 'charconvert' で設定された expression) で変換 + 可能なエンコーディングも設定できる。 古いヴァージョンの GNU iconv() による変換は失敗することがある (Vimが与 えがたいほど大きなバッファを要求するので)。別の実装の iconv() を手に入 れてみること。 - オプション 'filecharcode' と違い、値を変更しても変換は行われない。 + 'filecharcode' と違い、値を変更しても変換は行われない。 *'fileformat'* *'ff'* 'fileformat' 'ff' 文字列 (MS-DOS, MS-Windows, OS/2 での既定値: "dos", @@ -2187,276 +2126,288 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 dos <CR> <NL> unix <NL> mac <CR> - 値に "dos" が使われたとき、ファイル末尾の CTRL-Z は無視される。 - |file-formats| と |file-read| を参照すること。 + "dos" が使われたとき、ファイル末尾の CTRL-Z は無視される。 + |file-formats| と |file-read| を参照。 ファイルの文字エンコーディングについてはオプション 'fileencoding' を参 - 照すること。 - オプション 'binary' がオンのときは、オプション 'fileformat' の実際の値 - は無視され、ファイルの読み書きはこのオプションの値が "unix' に設定され - たように行われる。 - ファイルの編集を始めたときにオプション 'fileformats' の値が空でなく、 - オプション 'binary' がオフならば、オプション 'fileformat' は自動的に設 - 定される。 - ファイルの編集を始めた後にこのオプションを設定すると、オプション - 'modified' がオンになる。なぜならそのファイルの中身は、書き込まれると - きには違ったものになっているからである。 - このオプションは、オプション 'modifiable' がオフのときには設定できない。 - 後方互換性のために: このオプションの値が "dos" に設定されると、オプショ - ン 'textmode' がオンになり、それ以外ではオプション 'textmode' はオフに - なる。 + 照。 + 'binary' がオンのときは、'fileformat' の実際の値は無視され、ファイルの + 読み書きは値が "unix' に設定されたときのように行われる。 + ファイルの編集を始めたときに 'fileformats' が空でなく、'binary' がオフ + ならば、'fileformat' は自動的に設定される。 + ファイルの編集を始めた後にこのオプションを設定すると、'modified' がオ + ンになる。なぜならそのファイルの中身は、書き込まれるときには違うものに + なるからである。 + このオプションは、'modifiable' がオフのときは変更できない。 + 後方互換性のために: このオプションが "dos" になると 'textmode' がオン + になり、それ以外では 'textmode' はオフになる。 *'fileformats'* *'ffs'* -'fileformats' 'ffs' 文字列 (default: +'fileformats' 'ffs' 文字列 (既定値: Vim+Vi MS-DOS, MS-Windows OS/2: "dos,unix", Vim Unix: "unix,dos", Vim Mac: "mac,unix,dos", Vi Cygwin: "unix,dos", - Vi others: "") - グローバル - {Vi にはない} - This gives the end-of-line (<EOL>) formats that will be tried. It is - used when starting to edit a new buffer and when reading a file into - an existing buffer: - - When empty, the format defined with 'fileformat' will be used - always. It is not set automatically. - - When set to one name, that format will be used whenever a new buffer - is opened. 'fileformat' is set accordingly for that buffer. The - 'fileformats' name will be used when a file is read into an existing - buffer, no matter what 'fileformat' for that buffer is set to. - - When more than one name is present, separated by commas, automatic - <EOL> detection will be done when reading a file. When starting to - edit a file, a check is done for the <EOL>: - 1. If all lines end in <CR><NL>, and 'fileformats' includes "dos", - 'fileformat' is set to "dos". - 2. If a <NL> is found and 'fileformats' includes "unix", 'fileformat' - is set to "unix". Note that when a <NL> is found without a - preceding <CR>, "unix" is preferred over "dos". - 3. If 'fileformats' includes "mac", 'fileformat' is set to "mac". - This means that "mac" is only chosen when "unix" is not present, - or when no <NL> is found in the file, and when "dos" is not - present, or no <CR><NL> is present in the file. - Also if "unix" was first chosen, but the first <CR> is before - the first <NL> and there appears to be more <CR>'s than <NL>'s in - the file, then 'fileformat' is set to "mac". - 4. If 'fileformat' is still not set, the first name from - 'fileformats' is used. - When reading a file into an existing buffer, the same is done, but - this happens like 'fileformat' has been set appropriately for that - file only, the option is not changed. - When 'binary' is set, the value of 'fileformats' is not used. - - For systems with a Dos-like <EOL> (<CR><NL>), when reading files that - are ":source"ed and for vimrc files, automatic <EOL> detection may be - done: - - When 'fileformats' is empty, there is no automatic detection. Dos - format will be used. - - When 'fileformats' is set to one or more names, automatic detection - is done. This is based on the first <NL> in the file: If there is a - <CR> in front of it, Dos format is used, otherwise Unix format is - used. - Also see |file-formats|. - For backwards compatibility: When this option is set to an empty - 文字列 or one format (no comma is included), 'textauto' is reset, - otherwise 'textauto' is set. - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + Vi その他: "") + グローバル + {Vi にはない} + 想定される改行 (<EOL>) の種類を指定する。これは新しいバッファの編集を + 始めたときと、ファイルを既存のバッファに読み込んだときに使われる。 + - 値が空のときは、オプション 'fileformat' で指定された種類の改行が常に + 使われる。自動的な設定は行われない。 + - 1種類の名前が設定されているときは、新しいバッファが開かれるときには + 常にその種類の改行が使われる。そのバッファでは、'fileformat' はこの + オプションに従って設定される。'fileformats' は、ファイルを既存のバッ + ファに読み込むときに使われる。その際、そのバッファで 'fileformat' が + 何に設定されていても関係ない。 + - 複数の名前がコンマで区切られて設定されているときは、ファイルを読み込 + むときに <EOL> の判別が自動的に行われる。Vimはファイルの編集を始める + ときに、<EOL> を以下のように調べる。 + 1. 全ての行が <CR><NL> で終わっており、かつ 'fileformats' が "dos" + を含むなら、'fileformat' は "dos" になる。 + 2. 改行に <NL> が使われていて、かつ 'fileformats' が "unix" を含むな + ら、'fileformat' は "unix" になる。 Note <NL> があって、その前に + <CR> がないと、"dos" より "unix" が優先的に使われることに注意。 + 3. 'fileformats' に "mac" が含まれているときは、'fileformat' は必ず + "mac" になる。つまり "mac" が選ばれるのは、"unix" が含まれていな + いときか、ファイル内に一つも <NL> が使われておらず、かつ "dos" が + 含まれていないときか、ファイル内に <CR><NL> が一つも含まれていな + いときである。 + また、始めに "unix" が選ばれたときでも、1個目の <CR> が1個目の + <NL> より先に現れ、かつファイル内の <CR> の数が <NL> の数より多い + と思われるときには、'fileformat' は "mac" になる。 + 4. それでも 'fileformat' を決定できないときは、'fileformats' の中で + 最初に指定されている値が使われる。 + 既存のバッファにファイルを読み込むときにも同じ経過をたどる。しかし + 'fileformat' は読み込まれるファイルについては適切に設定されるが、 + そのバッファでの値は変更されない。 + 'binary' がオンのときは、'fileformats' は使われない。 + + DOS形式の <EOL> (<CR><NL>) のシステムでは、コマンド ":source" で読み込 + まれるファイルと、ファイル vimrc については、<EOL> の判別が自動的に行 + われる。 + - 'fileformats' が空のときは、自動設定は行われない。常にDOS形式の改行 + が使われる。 + - 'fileformats' の値に1種類以上の名前が設定されているときは、自動設定 + が行われる。これはファイル内の1個目の <NL> に関して行われる。その前 + に <CR> があるときはDOS形式が使われ、そうでなければUnix形式が使われ + る。 + また |file-formats| も参照。 + 後方互換性のために: このオプションに、空の文字列か1種類だけの名前が設 + 定されたとき (コンマが含まれていないとき) には、'textauto' はオフにな + る。そうでなければ 'textauto' はオンになる。 + NOTE: このオプションは、'compatible' がオンのときはViの既定値に、オフ + のときはVimの既定値になるので注意。 *'filetype'* *'ft'* 'filetype' 'ft' 文字列 (既定では "") バッファについてローカル {Vi にはない} {Vi mが |+autocmd| 機能付きでコンパイルされたときのみ - 使用可能} - When this option is set, the FileType autocommand event is triggered. - All autocommands that match with the value of this option will be - executed. Thus the value of 'filetype' is used in place of the file - name. - Otherwise this option does not always reflect the current file type. - This option is normally set when the file type is detected. To enable - this use the ":filetype on" command. |:filetype| - Setting this option to a different value is most useful in a modeline, - for a file for which the file type is not automatically recognized. - Example, for in an IDL file: > + 有効} + このオプションが変更されると autocommand のイベント FileType が発生し、 + このオプションの値にマッチする全ての autocommand が実行される。つ + まり、(訳注: 普通 autocommand が実行されるのはファイル名がマッチしたと + きだが) 'filetype' の値がファイル名の代わりに使われる。 + しかしこのオプションはカレントファイルのファイルタイプを常に反映してい + るわけではない。普通このオプションは、ファイルタイプが判別されたときに + 設定される。判別を有効にするにはコマンド ":filetype on" を使うこと + |:filetype|。 + ファイルタイプが自動的に認識されないファイルのモードラインで、このオプ + ションを異なった値に設定すると非常に便利である。例えば、IDL ファイルの + 中でこうする。 > /* vim: set filetype=idl : */ < |FileType| |filetypes| - Do not confuse this option with 'osfiletype', which is for the file - type that is actually stored with the file. - This option is not copied to another buffer, independent of the 's' or - 'S' flag in 'cpoptions'. + このオプションを 'osfiletype' と混同してはいけない。こちらは実際にファ + イルと共に保存されるファイルタイプのためのものである。 + このオプションは 'cpoptions' のフラグ 's' や 'S' に関わらず、別のバッ + ファにはコピーされない。 *'fillchars'* *'fcs'* -'fillchars' 'fcs' 文字列 (default "vert:|,fold:-") - グローバル - {Vi にはない} - {not available when compiled without the |+windows| - and |+folding| features} - Characters to fill the statuslines and vertical separators. - It is a comma separated list of items: - - item default Used for ~ - stl:c ' ' or '^' statusline of the current window - stlnc:c ' ' or '-' statusline of the non-current windows - vert:c '|' vertical separators |:vsplit| - fold:c '-' filling 'foldtext' - diff:c '-' deleted lines of the 'diff' option - - Any one that is omitted will fall back to the default. For "stl" and - "stlnc" the space will be used when there is highlighting, '^' or '-' - otherwise. - - Example: > - :set fillchars=stl:^,stlnc:-,vert:\|,fold:-,diff:- -< This is similar to the default, except that these characters will also - be used when there is highlighting. - - The highlighting used for these items: - item highlight group ~ - stl:c StatusLine |hl-StatusLine| - stlnc:c StatusLineNC |hl-StatusLineNC| - vert:c VertSplit |hl-VertSplit| - fold:c Folded |hl-Folded| - diff:c DiffDelete |hl-DiffDelete| +'fillchars' 'fcs' 文字列 (既定では "vert:|,fold:-") + グローバル + {Vi にはない} + {Vi mが |+windows| 機能と |+folding| 機能付きでコンパ + イルされたときのみ有効} + ステータス行と垂直分割の区切りを埋める文字を設定する。値にはキーワード + をコンマで区切って指定する。 + + キーワード 既定値 変更の対象 ~ + stl:文字 ' ' か '^' カレントウィンドウのステータス行 + stlnc:文字 ' ' か '-' 非カレントウィンドウのステータス行 + vert:文字 '|' 垂直分割の区切り |:vsplit| + fold:文字 '-' 'foldtext' での空白部分 + diff:文字 '-' 'diff' での削除された行 + + 指定されなかったキーワードについては、既定値が使われる。"stl" と + "stlnc" には、強調表示が行われているときは空白が、行われていないときは + '^' と '-' がそれぞれ使われる。 + + 例: > + :set fillchars=stl:^,stlnc:-,vert:\|,fold:-,diff:- +< これは既定値と似ているが、強調表示が行われていてもこれらの文字が使われ + る点が異なっている。 + + 強調表示が行われるものおよびその属するグループ: + キーワード 強調表示グループ ~ + stl:文字 StatusLine |hl-StatusLine| + stlnc:文字 StatusLineNC |hl-StatusLineNC| + vert:文字 VertSplit |hl-VertSplit| + fold:文字 Folded |hl-Folded| + diff:文字 DiffDelete |hl-DiffDelete| *'fkmap'* *'fk'* *'nofkmap'* *'nofk'* 'fkmap' 'fk' 切替 (既定ではオフ) *E198* グローバル {Vi にはない} {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み使用可能} - When on, the keyboard is mapped for the Farsi character set. - Normally you would set 'allowrevins' and use CTRL-_ in insert mode to - toggle this option |i_CTRL-_|. See |farsi.txt|. + み有効} + オンのとき、キーボードは Farsi 文字セットにマップされる。 + 普通、オプション 'allowrevins' をオンにしておき、insertモードでこのオ + プションをコマンド CTRL-_ で切り替えられるようにする |i_CTRL-_|。 + |farsi.txt| を参照。 *'foldclose'* *'fcl'* 'foldclose' 'fcl' 文字列 (既定では "") グローバル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - When set to "all", a fold is closed when the cursor isn't in it and - its level is higher than 'foldlevel'. Useful if you wants folds to - automatically close when moving out of them. + 有効} + "all" に設定すると、カーソルが折り畳み区間の外に出たとき、その区間の折 + り畳みの深さがオプション 'foldlevel' より大きければ折り畳みを行う。折 + り畳み区間の外に出るとき、自動的に折り畳みを行いたいときに便利である。 *'foldcolumn'* *'fdc'* -'foldcolumn' 'fdc' 数値 (default 0) +'foldcolumn' 'fdc' 数値 (既定では 0) ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - When non-zero, a column with the specified width is shown at the side - of the window which indicates open and closed folds. The maximum - value is 12. - See |folding|. + 有効} + 非0 に設定されると、ウィンドウの端の指定された幅の列が折り畳みを (開い + ていても閉じていても) 表示する。最大値は 12 である。 + |folding| を参照。 *'foldenable'* *'fen'* *'nofoldenable'* *'nofen'* 'foldenable' 'fen' 切替 (既定ではオフ) ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - When off, all folds are open. This option can be used to quickly - switch between showing all text unfolded and viewing the text with - folds (including manually opened or closed folds). It can be toggled - with the |zi| command. The 'foldcolumn' will remain blank when - 'foldenable' is off. - This option is set by commands that create a new fold or close a fold. - See |folding|. + 有効} + オフのときは、全ての折り畳みが開かれる。このオプションは、全てのテキス + トを折り畳みなしで見る状態とテキストの一部を折り畳んで見る (手動で開か + れたり閉じられた折り畳みも含む) 状態を素早く切り替えるために使われる。 + このオプションはコマンド |zi| で切り替えることができる。オプション + 'foldenable' がオフのときは、'foldcolumn' は空白のままである。 + このオプションは、新しい折り畳みを作ったり、折り畳みを閉じたりするコマ + ンドによってオンにされる。 + |folding| を参照。 *'foldexpr'* *'fde'* 'foldexpr' 'fde' 文字列 (既定では "0") ウィンドウについてローカル {Vi にはない} - {not available when compiled without the |+folding| - or |+eval| feature} - The expression used for when 'foldmethod' is "expr". It is evaluated - for each line to obtain its fold level. See |fold-expr|. Also see - |eval-sandbox|. + {Vi mが |+folding| 機能と |+eval| 機能付きでコンパイル + されたときのみ有効} + オプション 'foldmethod' が "expr" のときに使われる expression。これは + 折り畳みの深さを求めるために各行について評価される。|fold-expr| を参照。 + また |eval-sandbox| も参照。 *'foldignore'* *'fdi'* 'foldignore' 'fdi' 文字列 (既定では "#") ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - Used only when 'foldmethod' is "indent". Lines starting with - characters in 'foldignore' will get their fold level from surrounding - lines. White space is skipped before checking for this character. - The default "#" works well for C programs. See |fold-indent|. + 有効} + オプション 'foldmethod' が "indent" のときのみ使われる。'foldignore' + で指定した文字で始まる行の折り畳みの深さは、上下の行から決められる (訳 + 注: その行のインデントが上下と違っていても、一緒に折り畳めるようにする + ため)。空白を無視した上で指定された文字の存在を調べる。 + 既定値の "#" はC言語プログラムについてはうまく動作する。|fold-indent| + を参照。 *'foldlevel'* *'fdl'* 'foldlevel' 'fdl' 数値 (既定では 0) ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - Sets the fold level: Folds with a higher level will be closed. - Setting this option to zero will close all folds. Higher numbers will - close fewer folds. - This option is set by commands like |zm|, |zM| and |zR|. - See |fold-foldlevel|. + 有効} + 折り畳みの深さを設定する。指定した数値よりレベルの深い折り畳み区間は閉 + じられる。このオプションを 0 に設定すると、全ての折り畳みが閉じられる。 + 大きな数値を設定すると、それだけ閉じられる折り畳みの数は減る。 + このオプションはコマンド |zm|, |zM| や |zR| によって設定される。 + |fold-foldlevel| を参照。 *'foldlevelstart'* *'fdls'* 'foldlevelstart' 'fdls' 数値 (既定では -1) グローバル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - Sets 'foldlevel' when starting to edit another buffer in a window. - Useful to always start editing with all folds closed (value zero), - some folds closed (one) or no folds closed (99). - This is done before reading any modeline, thus a setting in a modeline - overrules this option. Starting to edit a file for |diff-mode| also - ignores this option and closes all folds. - It is also done before BufReadPre autocommands, to allow an autocmd to - overrule the 'foldlevel' value for specific files. - When the value is negative, it is not used. + 有効} + ウィンドウで新しいバッファの編集を始めるときのオプション 'foldlevel' + を設定する。編集開始時に常に全ての折り畳みを閉じておいたり (そのために + は 0 にする)、いくつかを閉じておいたり (1 にする)、全て開いておいたり + (99にする) するときに便利である。 + これによる設定はモードラインの読み込み前に行われるので、モードライン内 + での設定はこのオプションによる設定より優先される。ファイルの編集を + |diff-mode| で開始してもやはりこのオプションは無視され、全ての折り畳み + が閉じられる。 + またこれによる設定はイベント BufReadPre による autocommand よりも前に + 行われるので、特定のファイルについて autocommand で 'foldlevel' を上書 + きできる。 + 値が負のときには、このオプションは使われない。 *'foldmarker'* *'fmr'* 'foldmarker' 'fmr' 文字列 (既定では "{{{,}}}") ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - The start and end marker used when 'foldmethod' is "marker". There - must be one comma, which separates the start and end marker. The - marker is a literal string (a regular expression would be too slow). - See |fold-marker|. + 有効} + オプション 'foldmethod' が "marker" のときに使われる、折り畳み開始/終 + 了を示すマーカー。開始マーカーと終了マーカーを分けるために、間に1個の + コンマがなければいけない。マーカーはただの文字列である (正規表現では動 + 作が遅すぎるだろう)。 + |fold-marker| を参照。 *'foldmethod'* *'fdm'* 'foldmethod' 'fdm' 文字列 (既定では "manual") ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - The kind of folding used for the current window. Possible values: - |fold-manual| manual Folds are created manually. - |fold-indent| indent Lines with equal indent form a fold. - |fold-expr| expr 'foldexpr' gives the fold level of a line. - |fold-marker| marker Markers are used to specify folds. - |fold-syntax| syntax Syntax highlighting items specify folds. - |fold-diff| diff Fold text that is not changed. + 有効} + カレントウィンドウに適用される折り畳みの種類を設定する。指定可能な値は + 以下の通り。 + |fold-manual| manual 折り畳みは手動で設定する。 + |fold-indent| indent 等しいインデントの行で折り畳みを作る。 + |fold-expr| expr オプション 'foldexpr' で深さを設定する。 + |fold-marker| marker マーカーで折り畳みを指定する。 + |fold-syntax| syntax 構文強調表示のキーワードを使って指定する。 + |fold-diff| diff 変更されていないテキストを折り畳む。 *'foldminlines'* *'fml'* 'foldminlines' 'fml' 数値 (既定では 1) ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - Sets the minimum number of screen lines for a fold to be displayed - closed. Also for manually closed folds. - Note that this only has an effect of what is displayed. After using - "zc" to close a fold, which is displayed open because it's smaller - than 'foldminlines', a following "zc" may close a containing fold. + 有効} + 折り畳みで閉じられ得る画面上の行数の最小値を設定する。手動で閉じられた + 折り畳みにも適用される。 + Note このオプションは表示されるものに対してしか効力がないので注意。コ + マンド "zc" を実行して閉じようとした折り畳みの行数が、オプション + 'foldminlines' の値よりも小さくて開いたままに表示されても、再び "zc" + を使うと、それを含む折り畳みごと閉じられてしまうことがある。 + (訳注: 1回目のコマンド "zc" で閉じられなかった折り畳みは、画面上では開 + いていても内部では閉じられたと判断されるため、2回目のコマンドが今度は + その外側の広い折り畳みに効力を持ち、それを閉じてしまうため) *'foldnestmax'* *'fdn'* 'foldnestmax' 'fdn' 数値 (既定では 20) ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - Sets the maximum nesting of folds for the "indent" and "syntax" - methods. This avoids that too many folds will be created. Using more - than 20 doesn't work, because the internal limit is 20. + 有効} + 折り畳みの方法に "indent" や "syntax" が選ばれたときの、折り畳みの入れ + 子の深さの最大値を設定する。これにより折り畳みが膨大に作られるのを防ぐ + ことができる。Vim内部の制限が 20 になっているので、20 以上を設定しても + 無効である。 *'foldopen'* *'fdo'* 'foldopen' 'fdo' 文字列 (既定では "block,hor,mark,percent,quickfix, @@ -2464,67 +2415,65 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 グローバル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - Specifies for which type of commands folds will be opened, if the - command moves the cursor into a closed fold. It is a comma separated - list of items. - item commands ~ - all any - block "(", "{", "[[", "[{", etc. - hor horizontal movements: "l", "w", "fx", etc. - insert any command in Insert mode - jump far jumps: "G", "gg", etc. - mark jumping to a mark: "'m", CTRL-O, etc. + 有効} + カーソルがコマンドによって、閉じている折り畳みの中に移動したとき、どの + 種類のコマンドだったら折り畳みが開かれるかを指定する。値はコンマ区切り + のキーワードである。 + キーワード 適用されるコマンド ~ + all 全て + block "(", "{", "[[", "[{" 等 + hor 水平移動: "l", "w", "fx" 等 + insert Insertモードのコマンド全て + jump 長いジャンプ: "G", "gg" 等 + mark マークへのジャンプ: "'m", CTRL-O 等 percent "%" - quickfix ":cn", ":crew", ":make", etc. - search search for a pattern: "/", "n", "*", "gd", etc. - tag jumping to a tag: ":ta", CTRL-T, etc. - undo undo or redo: "u" and CTRL-R - When the command is part of a mapping this option is not used. Add - the |zv| command to the mapping to get the same effect. - When a movement command is used for an operator (e.g., "dl" or "y%") - this option is not used. This means the operator will include the - whole closed fold. - Note that vertical movements are not here, because it would make it - very difficult to move onto a closed fold. - In insert mode the folds containing the cursor will always be open - when text is inserted. - To close folds you can re-apply 'foldlevel' with the |zx| command or - set the 'foldclose' option to "all". + quickfix ":cn", ":crew", ":make" 等 + search パターン検索: "/", "n", "*", "gd" 等 + tag タグへのジャンプ: ":ta", CTRL-T 等 + undo アンドゥ/リドゥ: "u" と CTRL-R + コマンドがマッピングの一部として実行されたときは、このオプションは使わ + れない。同じ効果を得るには、マッピングにコマンド |zv| を加えること。 + 移動コマンドがオペレータとして使われたときは (例えば "dl" や "y%")、こ + のオプションは使われない。つまりオペレータは閉じられている折り畳み全体 + を含む効果を持つということだ。 + Note 垂直方向の移動がここに含まれていないことに注意。それは垂直移動を + 含めると、閉じられた折り畳みの上への移動が困難になるからだ。Insertモー + ドでテキストが挿入されるときには、カーソルが中に入っていった折り畳みは + 必ず開かれる。 + 折り畳みを閉じるには、|zx| でオプション 'foldlevel' を再適用するか、 + 'foldclose' を "all" にすればよい。 *'foldtext'* *'fdt'* 'foldtext' 'fdt' 文字列 (既定では "foldtext()") ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 使用可能} - An expression which is used to specify the text displayed for a closed - fold. See |fold-foldtext|. + 有効} + 閉じられた折り畳みのところに表示されるテキストを生成する expression を + 指定する。|fold-foldtext| を参照。 *'formatoptions'* *'fo'* -'formatoptions' 'fo' 文字列 (Vim default: "tcq", Vi default: "vt") +'formatoptions' 'fo' 文字列 (Vimの既定値: "tcq", Viの既定値: "vt") バッファについてローカル {Vi にはない} - This is a sequence of letters which describes how automatic - formatting is to be done. See |fo-table|. When the 'paste' option is - on, no formatting is done (like 'formatoptions' is empty). Commas can - be inserted for readability. - To avoid problems with flags that are added in the future, use the - "+=" and "-=" feature of ":set" |add-option-flags|. - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + 自動整形の実行方法を決めるフラグの列である。|fo-table| を参照。オプショ + ン 'paste' がオンのときは、('formatoptions' が空のときのように) 整形は + 行われない。読みやすくするために、フラグの間にコンマを挟んでもよい。 + 将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+=" + と "-=" を使うこと |add-option-flags|。 + NOTE: このオプションは、'compatible' がオンのときはViの既定値に、オフ + のときはVimの既定値になるので注意。 *'formatprg'* *'fp'* 'formatprg' 'fp' 文字列 (既定では "") グローバル {Vi にはない} - The name of an external program that will be used to format the lines - selected with the "gq" command. The program must take the input on - stdin and produce the output on stdout. The Unix program "fmt" is - such a program. If this option is an empty string, the internal - format function will be used |C-indenting|. Environment variables are - expanded |:set_env|. See |option-backslash| about including spaces - and backslashes. + 選択された行をコマンド "gq" で整形するのに使われる外部プログラムの名前 + を指定する。使われるプログラムは標準入力からテキストを読み込み、整形さ + れたテキストを標準出力に出力しなければいけない。Unixのプログラム "fmt" + が代表である。このオプションが空ならば、内部の整形関数が使われる + |C-indenting|。環境変数は展開される |:set_env|。値に空白や '\' を含め + る方法については、|option-backslash| を参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -2532,50 +2481,51 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'gdefault' 'gd' 切替 (既定ではオフ) グローバル {Vi にはない} - When on, the ":substitute" flag 'g' is default on. This means that - all matches in a line are substituted instead of one. When a 'g' flag - is given to a ":substitute" command, this will toggle the substitution - of all or one match. See |complex-change|. + オンのときは、コマンド ":substitute" のフラグ 'g' がオンであることが既 + 定になる。つまり行内のマッチする文字列が、1番目のものだけでなく、全て + 置換される。":substitute" に 'g' が指定されると、逆に1番目のみを置換す + るようになる。|complex-change| を参照。 - command 'gdefault' on 'gdefault' off ~ - :s/// subst. all subst. one - :s///g subst. one subst. all - :s///gg subst. all subst. one + コマンド 'gdefault' がオン 'gdefault' がオフ ~ + :s/// 全て置換 最初だけ置換 + :s///g 最初だけ置換 全て置換 + :s///gg 全て置換 最初だけ置換 - NOTE: This option is reset when 'compatible' is set. + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'grepformat'* *'gfm'* -'grepformat' 'gfm' 文字列 (default "%f:%l%m,%f %l%m") +'grepformat' 'gfm' 文字列 (既定では "%f:%l%m,%f %l%m") グローバル {Vi にはない} - Format to recognize for the ":grep" command output. - This is a scanf-like string that uses the same format as the - 'errorformat' option: see |errorformat|. + コマンド ":grep" の出力を認識するための書式。 + オプション 'errorformat' と同じく、関数 scanf 風の書式指定を使う。 + |errorformat| を参照。 *'grepprg'* *'gp'* -'grepprg' 'gp' 文字列 (default "grep -n ", - Unix: "grep -n $* /dev/null", - Win32: "findstr /n" or "grep -n", - VMS: "SEARCH/NUMBERS ") +'grepprg' 'gp' 文字列 (既定では "grep -n ", + Unixでは: "grep -n $* /dev/null", + Win32では: "findstr /n" か "grep -n", + VMSでは: "SEARCH/NUMBERS ") グローバル/バッファについてローカル |global-local| {Vi にはない} - Program to use for the ":grep" command. This option may contain '%' - and '#' characters, which are expanded like when used in a command- - line. The placeholder "$*" is allowed to specify where the arguments - will be included. Environment variables are expanded |:set_env|. See - |option-backslash| about including spaces and backslashes. - When your "grep" accepts the "-H" argument, use this to make ":grep" - also work well with a single file: > + コマンド ":grep" で使われるプログラム。このオプションは文字 '%' や '#' + を含んでもよい。これらはコマンドラインで使われるときのように展開される。 + 引数の挿入される場所を指定するには "$*" が使える。環境変数は展開される + |:set_env|。値に空白や '\' を含める方法については、|option-backslash| + を参照。 + ユーザの "grep" が引数 "-H" を認識するなら、":grep" が1個のファイルに + 対しても適切に働くように、次のようにすること。 > :set grepprg=grep\ -nH -< See also the section |:make_makeprg|, since most of the comments there - apply equally to 'grepprg'. - For Win32, the default is "findstr /n" if "findstr.exe" can be found, - otherwise it's "grep -n". +< |:make_makeprg| も参照。そこの記述のほとんどが 'grepprg' にも適用でき + るからだ。 + Win32では、"findstr.exe" が見つかるならば既定値は "findstr /n" である。 + 見つからなければ "grep -n" である。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'guicursor'* *'gcr'* -'guicursor' 'gcr' 文字列 (default "n-v-c:block-Cursor/lCursor, +'guicursor' 'gcr' 文字列 (既定では "n-v-c:block-Cursor/lCursor, ve:ver35-Cursor, o:hor50-Cursor, i-ci:ver25-Cursor/lCursor, @@ -2584,288 +2534,289 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 -blinkwait175-blinkoff150-blinkon175") グローバル {Vi にはない} - {only available when compiled with GUI enabled, and - for MSDOS and Win32 console} - This option tells Vim what the cursor should look like in different - modes. The option is a comma separated list of parts. Each part - consist of a mode-list and an argument-list: - mode-list:argument-list,mode-list:argument-list,.. - The mode-list is a dash separated list of these modes: - n Normal mode - v Visual mode - ve Visual mode with 'selection' "exclusive" (same as 'v', - if not specified) - o Operator-pending mode - i Insert mode - r Replace mode - c Command-line Normal (append) mode - ci Command-line Insert mode - cr Command-line Replace mode - sm showmatch in Insert mode - a all modes - The argument-list is a dash separated list of these arguments: - hor{N} horizontal bar, {N} percent of the character height - ver{N} vertical bar, {N} percent of the character width - block block cursor, fills the whole character - [only one of the above three should be present] + {Vi mのGUI版か、MS-DOSまたはWin32のコンソール版でのみ + 有効} + Vimのそれぞれのモード内でのカーソルの外観を指定する。値はコンマ区切り + のキーワードのリストである。リストは部門別に分かれており、各部門はモー + ドリストと引数リストからなる。 + モードリスト:引数リスト,モードリスト:引数リスト,.. + モードリストは、モードを表す以下の記号のダッシュ区切りのリストである。 + n Normalモード + v Visualモード + ve 'selection' が "exclusive" のときの Visualモード (指定 + されなければ 'v' と同じ設定) + o Operator-pendingモード + i Insertモード + r Replaceモード + c Command-line Normal (追加) モード + ci Command-line Insertモード + cr Command-line Replaceモード + sm Insertモードでの対応括弧表示時 + a 全てのモード + 引数リストは、以下の引数のダッシュ区切りのリストである。 + hor{N} 文字高の {N}% の高さの水平バーカーソル + ver{N} 文字幅の {N}% の幅の垂直バーカーソル + block 文字全体を覆う大きさのブロックカーソル + [上の3個のうちの1個だけを指定できる] blinkwait{N} *cursor-blinking* blinkon{N} blinkoff{N} - blink times for cursor: blinkwait is the delay before - the cursor starts blinking, blinkon is the time that - the cursor is shown and blinkoff is the time that the - cursor is not shown. The times are in msec. When one - of the numbers is zero, there is no blinking. The - default is: "blinkwait700-blinkon400-blinkoff250". - These numbers are used for a missing entry. This - means that blinking is enabled by default. To switch - blinking off you can use "blinkon0". The cursor only - blinks when Vim is waiting for input, not while - executing a command. - To make the cursor blink in an xterm, see - |xterm-blink|. + カーソルの点滅について指定する。blinkwait にはカーソル + が点滅を始めるまでの遅延時間を、blinkon にはカーソルが + 表示される時間を、blinkoff にはカーソルが消えている時 + 間を指定する。時間の単位はミリ秒である。どれかに 0 を + 指定すると、カーソルは点滅しない。既定では + "blinkwait700-blinkon400-blinkoff250" となっている。こ + れらは指定されなかった項目に適用される。つまり、既定で + は点滅するように設定されているということだ。点滅しない + ようにするには "blinkon0" を指定すればよい。カーソルが + 点滅するのはVimが入力を待っている間で、コマンドを実行 + している間は点滅しない。 + カーソルを xterm の中で点滅させるには、|xterm-blink| + を参照。 {group-name} - a highlight group name, that sets the color and font - for the cursor + カーソルの色とフォントを設定する、強調表示のグループ名 + を指定する。 {group-name}/{group-name} - Two highlight group names, the first is used when - no language mappings are used, the other when they - are. |language-mapping| - - Examples of parts: - n-c-v:block-nCursor in Normal, Command-line and Visual mode, use a - block cursor with colors from the "nCursor" - highlight group + 強調表示グループ名を2個指定する。1個目は言語マッピング + がないときに使われ、2個目は言語マッピングがあるときに + 使われる。|language-mapping| + + 値の一部の例: + n-c-v:block-nCursor Normalモード、Command-lineモードとVisualモード + で、強調表示グループ "nCursor" で指定された色 + のブロックカーソルを使う。 i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150 - In Insert and Command-line Insert mode, use a - 30% vertical bar cursor with colors from the - "iCursor" highlight group. Blink a bit - faster. - - The 'a' mode is different. It will set the given argument-list for - all modes. It does not reset anything to defaults. This can be used - to do a common setting for all modes. For example, to switch off - blinking: "a:blinkon0" - - Examples of cursor highlighting: > - :highlight Cursor gui=reverse guifg=NONE guibg=NONE - :highlight Cursor gui=NONE guifg=bg guibg=fg + InsertモードとCommand-line Insertモードで、強 + 調表示グループ "iCursor" で指定された色の、文 + 字高の30%の高さの垂直バーカーソルを使う。点滅 + は少し速くする。 + + モード 'a' は他とは異なっていて、与えられた引数リストを全てのモードに + 対して設定し、指定されなかった引数は変更しない。これは全てのモードに共 + 通の設定をするためにある。例えば、点滅を止めるには "a:blinkon0" とする。 + + カーソル強調表示の例: > + :highlight Cursor gui=reverse guifg=NONE guibg=NONE + :highlight Cursor gui=NONE guifg=bg guibg=fg < - In an MSDOS or Win32 console, only the height of the cursor can be - changed. This can be done by specifying a block cursor, or a - percentage for a vertical or horizontal cursor. + MS-DOSとWin32のコンソール版では、カーソルの高さのみを指定できる。ブロッ + クカーソルを指定するか、垂直/水平バーカーソルの高さ/幅のパーセンテー + ジを指定する。 *'guifont'* *'gfn'* *E235* 'guifont' 'gfn' 文字列 (既定では "") グローバル {Vi にはない} - {only available when compiled with GUI enabled} - This is a list of fonts which will be used for the GUI version of Vim. - In its simplest form the value is just one font name. When - the font cannot be found you will get an error message. To try other - font names a list can be specified, font names separated with commas. - The first valid font is used. - When 'guifontset' is not empty, 'guifont' is not used. - Spaces after a comma are ignored. To include a comma in a font name - precede it with a backslash. Setting an option requires an extra - backslash before a space and a backslash. See also - |option-backslash|. For example: > - :set guifont=Screen15,\ 7x13,font\\,with\\,commas -< will make vim try to use the font "Screen15" first, and if it fails it - will try to use "7x13" and then "font,with,commas" instead. + {Vi mのGUI版でのみ有効} + VimのGUI版で使われるフォントのリストである。値の最も単純なものは、ただ + 1個のフォント名である。フォントが見つからないとき、エラーメッセージが + 表示される。別のフォント名を試すには、フォント名のコンマ区切りのリスト + を指定できる。その中の最初の使用可能なフォントが使われる。 + オプション 'guifontset' が空でないとき、'guifont' は使われない。 + コンマの後の空白は無視される。フォント名の中にコンマを指定するには、コ + ンマの前に '\' を置くこと。さらにオプションの値の中で空白や '\' を使う + には、それらの前に余分に '\' を置かなければならない。 + |option-backslash| も参照。例えば > + :set guifont=Screen15,\ 7x13,font\\,with\\,commas + (訳注: 結果は "Screen15, 7x13,font\,with\,commas") +< とすると、まずVimはフォント "Screen15" を使おうとし、だめなら代わりに + "7x13" を、そして "font,with,commas" を使おうとする。 *E236* - Note that the fonts must be mono-spaced (all characters have the same - width). - To preview a font on X11, you might be able to use the "xfontsel" - program. The "xlsfonts" program gives a list of all available fonts. - For Win32, GTK and Photon only: > - :set guifont=* -< will bring up a font requester, where you can pick the font you want. - If none of the fonts can be loaded, vim will keep the current setting. - If an empty font list is given, vim will try using other resource - settings (for X, it will use the Vim.font resource), and finally it - will try some builtin default which should always be there ("7x13" in - the case of X). The font names given should be "normal" fonts. Vim - will try to find the related bold and italic fonts. - For the Win32 GUI *E244* *E245* - - takes these options in the font name: - hXX - height is XX (points) - wXX - width is XX (points) - b - bold - i - italic - u - underline - s - strikeout - cXX - character set XX. valid charsets are: ANSI, ARABIC, - BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK, - HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS, - SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC. - - Use a ':' to separate the options. - - A '_' can be used in the place of a space, so you don't need to use - backslashes to escape the spaces. - - Example: > - :set guifont=courier_new:h12:w5:b:cRUSSIAN -< Have a look at <http://nova.bsuvc.bsu.edu/prn/monofont/> for - mono-spaced fonts and comments on them. - See also |font-sizes|. + Note フォントはモノスペース (訳注: 固定ピッチ、固定幅ともいう) でなけ + ればならない (全ての文字が同じ幅でなければならない)。 + X11でフォントのプレビューをするには、プログラム "xfontsel" が使えるか + もしれない。"xlsfonts" は、使用可能な全てのフォントのリストを与える。 + Win32, GTKとPhotonのみでは: > + :set guifont=* +< とするとフォント選択ウィンドウが開き、望みのフォントを選択できる。フォ + ントが何一つ読み込めないときは、そのままの設定が使われる。 + 指定されたフォントリストが空のときは、Vimは他のリソースの設定を使おう + とし (Xでは、リソース Vim.font を使う)、最終的には、必ず存在するはずの + 組み込みの既定フォントを使おうとする (Xの場合では "7x13")。指定される + フォント名は "normal" な (訳注: 太字や斜字体でない) フォントでなければ + ならない。Vimは関連する太字体や斜字体を見つけようとする。 + Win32のGUIについて *E244* *E245* + - フォント名には以下のオプションを指定できる。 + hXX - 文字高が XX (単位はポイント) + wXX - 文字幅が XX (単位はポイント) + b - ボールド (太字体) + i - イタリック (斜字体) + u - 下線付き + s - 打ち消し (文字を横切る線付き) + cXX - 文字セットが XX。使用可能なものは以下の通り: ANSI, + ARABIC, BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, + GB2312, GREEK, HANGEUL, HEBREW, JOHAB, MAC, OEM, + RUSSIAN, SHIFTJIS, SYMBOL, THAI, TURKISH, + VIETNAMESE ANSI, BALTIC + + オプションの区切りには ':' を使うこと。 + - 空白の代わりに '_' が使えるので、空白を '\' でエスケープする必要はな + い。 + - 例: > + :set guifont=courier_new:h12:w5:b:cRUSSIAN +< モノスペースフォントとそれらに関するコメントについては + <http://nova.bsuvc.bsu.edu/prn/monofont/> を参照。 + |font-sizes| も参照。 *'guifontset'* *'gfs'* *E250* *E252* *E234* 'guifontset' 'gfs' 文字列 (既定では "") グローバル {Vi にはない} - {only available when compiled with GUI enabled and - with the |+xfontset| feature} - When not empty, specifies two (or more) fonts to be used. The first - one for normal English, the second one for your special language. See - |xfontset|. - Setting this option also means that all font names will be handled as - a fontset name. Also the ones used for the "font" argument of the - |:highlight| command. - The fonts must match with the current locale. If fonts for the - character sets that the current locale uses are not included, setting - 'guifontset' will fail. - Note the difference between 'guifont' and 'guifontset': In 'guifont' - the comma-separated names are alternative names, one of which will be - used. In 'guifontset' the whole string is one fontset name, - including the commas. It is not possible to specify alternative - fontset names. - This example works on many X11 systems: > + {Vi mのGUI版で、|+xfontset| 機能付きでコンパイルされた + ときのみ有効} + このオプションには2種類 (またはそれ以上) のフォントを指定する。値が空 + のときは無視される。 1種類目は普通の英語に使われるもので、2種類目はユー + ザの使う特別な言語用である。 |xfontset| を参照。 + このオプションを設定すると、全てのフォント名はフォントセット名として扱 + われるようになる。またコマンド |:highlight| の引数 "font" に使われるも + のも同様である。 + フォントはカレントロケールに適合していなければならない。カレントロケー + ルの使用している文字セット用のフォントが値に含まれていないと、 + 'guifontset' の設定は失敗する。 + Note 'guifont' と 'guifontset' の違いに注意。'guifont' では、コンマで + 区切られたフォント名は代替用で、そのうちのどれか一つが使われる。 + 'guifontset' では、コンマも含めて値の文字列全体がフォントセット名を表 + す。代替フォントセットを指定することはできない。 + 次の例は多くのX11システムで正しく機能する。 > :set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-* < *'guifontwide'* *'gfw'* *E231* 'guifontwide' 'gfw' 文字列 (既定では "") グローバル {Vi にはない} - {only available when compiled with GUI enabled} - When not empty, specifies a comma-separated list of fonts to be used - for double-width characters. The first font that can be loaded is - used. - Note: The size of these fonts must be exactly twice as wide as the one - specified with 'guifont' and the same height. - Only used when 'encoding' is set to "utf-8" and 'guifontset' is empty - or invalid. - When 'guifont' is set and a valid font is found in it and - 'guifontwide' is empty Vim will attempt to find a matching - double-width font and set 'guifontwide' to it. + {Vi mのGUI版でのみ有効} + 2倍幅の文字に使われるフォントをコンマ区切りのリストで指定する。値が空 + のときは無視される。読み込み可能なフォントのうち先頭のものが使われる。 + Note: 指定したフォントの幅は、オプション 'guifont' で指定したフォント + のちょうど2倍の幅で、同じ高さのものでなければならない。 + このオプションは、'encoding' が "utf-8" で、かつ 'guifontset' が空であ + るか不適切なものであるときにのみ使われる。 + 'guifont' が設定されていて、その中に適切なフォントが含まれており、かつ + 'guifontwide' が空のとき、Vimは適合する2倍幅のフォントを探し、 + 'guifontwide' をそれに設定しようとする。 *'guiheadroom'* *'ghr'* 'guiheadroom' 'ghr' 数値 (既定では 50) グローバル - {Vi にはない} {only for GTK and X11 GUI} - The number of pixels subtracted from the screen height when fitting - the GUI window on the screen. Set this before the GUI is started, - e.g., in your |gvimrc| file. When zero, the whole screen height will - be used by the window. When positive, the specified number of pixel - lines will be left for window decorations and other items on the - screen. Set it to a negative value to allow windows taller than the - screen. + {Vi にはない} {Vi mのGTKとX11のGUI版でのみ有効} + GUIウィンドウを画面に合わせるときに、画面の高さから差し引かれるピクセ + ル数。このオプションはGUIを開始する前に、例えばファイル |gvimrc| 内で + 設定すること。値を 0 にすると、画面の高さ全体がウィンドウに使われる。 + 正の値を指定すると、それだけのピクセル数がウィンドウの装飾や画面上の他 + のもののために残される。ウィンドウを画面よりも高くするには、負の値を指 + 定すること。 *'guioptions'* *'go'* -'guioptions' 'go' 文字列 (default "gmrLtT" (MS-Windows), - "agimrLtT" (GTK, Motif and Athena) +'guioptions' 'go' 文字列 (既定では "gmrLtT" (MS-Windows), + "agimrLtT" (GTK, MotifとAthena) グローバル {Vi にはない} - {only available when compiled with GUI enabled} - This option only has an effect in the GUI version of vim. It is a - sequence of letters which describes what components and options of the - GUI should be used. - To avoid problems with flags that are added in the future, use the - "+=" and "-=" feature of ":set" |add-option-flags|. + {Vi mのGUI版でのみ有効} + このオプションはVimのGUI版でのみ有効である。値は、GUIのどのコンポーネ + ントとオプションを使用するかを決定する、フラグの列である。 + 将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+=" + と "-=" を使うこと |add-option-flags|。 - Valid letters are as follows: + 使用できるフラグは以下の通りである。 *guioptions_a* - 'a' Autoselect: If present, then whenever VISUAL mode is started, - or the Visual area extended, Vim tries to become the owner of - the windowing system's global selection. This means that the - Visually highlighted text is available for pasting into other - applications as well as into Vim itself. When the Visual mode - ends, possibly due to an operation on the text, or when an - application wants to paste the selection, the highlighted text - is automatically yanked into the "* selection register. - Thus the selection is still available for pasting into other - applications after the VISUAL mode has ended. - If not present, then Vim won't become the owner of the - windowing system's global selection unless explicitly told to - by a yank or delete operation for the "* register. - The same applies to the modeless selection. - - 'A' Autoselect for the modeless selection. Like 'a', but only - applies to the modeless selection. - - 'guioptions' autoselect Visual autoselect modeless ~ - "" - - - "a" yes yes - "A" - yes - "aA" yes yes - - 'c' Use console dialogs instead of popup dialogs for simple - choices. - 'f' Foreground: Don't use fork() to detach the GUI from the shell - where it was started. Use this for programs that wait for the - editor to finish (e.g., an e-mail program). Alternatively you - can use "gvim -f" or ":gui -f" to start the GUI in the - foreground. |gui-fork| - Note: Set this option in the vimrc file. The forking may have - happened already when the gvimrc file is read. - - 'i' Use a Vim icon. For GTK with KDE it is used in the left-upper - corner of the window. It's black&white on non-GTK, because of - limitations of X11. For a color icon, see |X11-icon|. - - 'm' Menu bar is present. - 'M' The system menu "$VIMRUNTIME/menu.vim" is not sourced. Note - that this flag must be added in the .vimrc file, before - switching on syntax or filetype recognition (when the .gvimrc - file is sourced the system menu has already been loaded; the - ":syntax on" and ":filetype on" commands load the menu too). - 'g' Grey menu items: Make menu items that are not active grey. If - 'g' is not included inactive menu items are not shown at all. - Exception: Athena will always use grey menu items. - - 't' Include tearoff menu items. Currently only works for Win32, - GTK+, and Motif 1.2 GUI. - 'T' Include Toolbar. Currently only in Win32, GTK+, Motif, and - Athena GUIs. - - 'r' Right-hand scrollbar is always present. - 'R' Right-hand scrollbar is present when there is a vertically - split window. - 'l' Left-hand scrollbar is always present. - 'L' Left-hand scrollbar is present when there is a vertically - split window. - 'b' Bottom (horizontal) scrollbar is present. - - And yes, you may even have scrollbars on the left AND the right if - you really want to :-). See |gui-scrollbars| for more information. - - 'v' Use a vertical button layout for dialogs. When not included, - a horizontal layout is preferred, but when it doesn't fit a - vertical layout is used anyway. - 'p' Use Pointer callbacks for X11 GUI. This is required for some - window managers. If the cursor is not blinking or hollow at - the right moment, try adding this flag. This must be done - before starting the GUI. Set it in your gvimrc. Adding or - removing it after the GUI has started has no effect. - 'F' Add a footer. Only for Motif. See |gui-footer|. + 'a' 自動選択 (autoselect): 値に含まれると、Visualモードが開始され + るたび、またはVisual選択範囲が変更されるたびに、Vimはウィンド + ウシステム共通のクリップボードを使おうとする。つまりVisual選択 + で選択されたテキストは、Vim自身はもとより他のアプリケーション + でも張り付けに使えるということだ。(おそらくテキストに操作を実 + 行したせいで) Visualモードが終了したり、アプリケーションが選択 + 領域を張り付けようとしたときには、強調されたテキストは自動的に + クリップボードレジスタ "* にコピーされる。そのためVisualモード + が終了した後でも、選択領域を他のアプリケーションに張り付けるこ + とができる。 + 含まれないと、レジスタ "* に対するコピーや張り付けによって陽に + 指定されない限り、Vimはウィンドウシステム共通のクリップボード + を使おうとはしない。 + モードレスセレクションについても同様である。 + + 'A' モードレスセレクションに対する自動選択。フラグ 'a' と似ている + が、モードレスセレクションにのみ適用される。 + + 'guioptions' Visualモード モードレスセレクション ~ + "" X X + "a" O O + "A" X O + "aA" O O + + 'c' 単純な選択にはポップアップダイアログでなくコンソールダイアログ + を使う。 + 'f' フォアグラウンド (foreground): シェルからGUIを開始し、そのシェ + ルからgVimを独立させる際に関数 fork() を使わない。これはエディ + タが終了するのを待つプログラム (例えばメールプログラム等) に対 + して使う。フォアグラウンドでGUIを開始するには、これの代わりに + "gvim -f" や ":gui -f" も使える |gui-fork|。 + Note: このオプションはファイル vimrc 内で設定するよう注意。ファ + イル gvimrc が読み込まれたときはフォーキングがすでに実行されて + いるかもしれない。 + + 'i' Vimのアイコンを使う。KDEのGTKではウィンドウの左上に表示される。 + GTKでないX11では、制限のため白黒のアイコンが使われる。色つきの + アイコンについては |X11-icon| を参照。 + + 'm' メニューバーを表示する。 + 'M' システムメニューの実体 "$VIMRUNTIME/menu.vim" が読み込まれない。 + Note このフラグは、構文認識やファイルタイプ認識を起動する前に、 + ファイル .vimrc 内で追加されていなければならない (ファイル + .gvimrc が読み込まれたときには、システムメニューはすでに読み込 + まれた後である。コマンド ":syntax on" と ":filetype on" でもメ + ニューは読み込まれる)。 + 'g' メニュー項目の灰色表示: 無効のメニュー項目を灰色で表示する。含 + まれていないと、無効のメニュー項目は全く表示されない。 + 例外: Athenaでは常にグレー表示を使う。 + + 't' メニュー項目の切り離しを有効にする。現在のところWin32, GTK+ と + Motif 1.2 GUI でのみ有効である。 + 'T' ツールバーを表示する。現在のところWin32, GTK+ と Motif 1.2 GUI + でのみ有効である。 + + 'r' 右スクロールバーを常に表示する。 + 'R' 垂直分割されたウィンドウがあるときのみ、右スクロールバーを表示 + する。 + 'l' 左スクロールバーを常に表示する。 + 'L' 垂直分割されたウィンドウがあるときのみ、左スクロールバーを表示 + する。 + 'b' 下 (水平) スクロールバーを表示する。 + + そう、もちろん、本当に望むのなら、左スクロールバーと右スクロールバーを + 「両方」使うことだってできる :-) 詳しい情報については |gui-scrollbars| + を参照。 + + 'v' ダイアログのボタン配置を垂直方向にする。含まれていないとなるべ + く水平方向の配置を使うが、収まらないときには結局、垂直配置が使 + われる。 + 'p' X11のGUIにおいて、ポインタ・コールバックを使う。ウィンドウマネー + ジャの中にはこれが必要なものもある。カーソルが正しいタイミング + で点滅したり変形したりしないときは、これを追加してみること。こ + れはGUIを開始する前に設定しなければならない。ユーザのファイル + gvimrc 内で設定すること。GUIが開始した後にこのフラグを追加した + り取り除いたりしても、効果はない。 + 'F' フッタを追加する。Motifでのみ有効である。|gui-footer| を参照。 *'guipty'* *'noguipty'* 'guipty' 切替 (既定ではオン) グローバル {Vi にはない} - {only available when compiled with GUI enabled} - Only in the GUI: If on, an attempt is made to open a pseudo-tty for - I/O to/from shell commands. See |gui-pty|. + {Vi mのGUI版でのみ有効} + GUI版でのみ有効である。オンのときは、シェルコマンドからの入力用および + シェルコマンドへの出力用の仮想端末 pseudo-tty を開こうとする。 + |gui-pty| を参照。 *'helpfile'* *'hf'* -'helpfile' 'hf' 文字列 (default (MSDOS) "$VIMRUNTIME\doc\help.txt" - (others) "$VIMRUNTIME/doc/help.txt") +'helpfile' 'hf' 文字列 (既定では MS-DOS: "$VIMRUNTIME\doc\help.txt" + その他: "$VIMRUNTIME/doc/help.txt") グローバル {Vi にはない} - Name of the help file. All help files should be placed together in - one directory. Environment variables are expanded |:set_env|. For - example: "$VIMRUNTIME/doc/help.txt". If $VIMRUNTIME is not set, $VIM - is also tried. Also see |$VIMRUNTIME| and |option-backslash| - about including spaces and backslashes. + ヘルプファイルの名前。全てのヘルプファイルは単一のディレクトリ内に一緒 + に置かれるべきである。環境変数は展開される |:set_env|。例: + "$VIMRUNTIME/doc/help.txt"。環境変数 $VIMRUNTIME が設定されてないとき + は、$VIM も試される。|$VIMRUNTIME| を参照。値に空白や '\' を含めること + については |option-backslash| も参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -2874,30 +2825,32 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 グローバル {Vi にはない} {Vi mが |+windows| 機能付きでコンパイルされたときのみ - 使用可能} - Minimal initial height of the help window when it is opened with the - ":help" command. The initial height of the help window is half of the - current window, or (when the 'ea' option is on) the same as other - windows. When the height is less than 'helpheight', the height is - set to 'helpheight'. Set to zero to disable. + 有効} + コマンド ":help" で開かれたヘルプウィンドウの、開始時のウィンドウ高の + 最小値を設定する。ヘルプウィンドウの開始時の高さはカレントウィンドウの + 半分であるか、(オプション 'ea' がオンのときには) 他のウィンドウと同じ + である。ウィンドウ高が 'helpheight' より小さくなってしまうとき、実際の + 高さは 'helpheight' になる。こうしないようにするには 0 に設定すること。 *'hidden'* *'hid'* *'nohidden'* *'nohid'* 'hidden' 'hid' 切替 (既定ではオフ) グローバル {Vi にはない} - When off a buffer is unloaded when it is |abandon|ed. When on a - buffer becomes hidden when it is |abandon|ed. If the buffer is still - displayed in another window, it does not become hidden, of course. - The commands that move through the buffer list sometimes make a buffer - hidden although the 'hidden' option is off: When the buffer is - modified, 'autowrite' is off or writing is not possible, and the '!' - flag was used. See also |windows.txt|. - This option is set for one command with ":hide {command}" |:hide|. - WARNING: It's easy to forget that you have changes in hidden buffers. - Think twice when using ":q!" or ":qa!". + オフのときは、バッファは放棄 |abandon| されるときに解放される。オンの + ときは、バッファは放棄 |abandon| されるときに隠れ (hidden) 状態になる。 + そのバッファが別のウィンドウでまだ表示されているなら、もちろん隠れ状態 + にはならない。 + バッファリストをわたって動くコマンドは 'hidden' がオフでもバッファを + 隠れ状態にすることがある。バッファの内容が変更されていて、'autowrite' + がオフであるか書き込みが不可能な状態であり、フラグ '!' が使われたよう + なときだ。|windows.txt| も参照。 + このオプションは、一つ一つのコマンドに対して ":hide {command}" とする + ことでオンにできる |:hide|。 + 警告: 隠れバッファに対する変更は忘れがちである。コマンド ":q!" や + ":qa!" を使う前にはもう一度よく考えること。 *'highlight'* *'hl'* -'highlight' 'hl' 文字列 (default (as a single string): +'highlight' 'hl' 文字列 (既定では (単一の文字列として): "8:SpecialKey,@:NonText,d:Directory, e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg, M:ModeMsg,n:LineNr,r:Question, @@ -2906,549 +2859,574 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 f:Folded,F:FoldColumn") グローバル {Vi にはない} - This option can be used to set highlighting mode for various - occasions. It is a comma separated list of character pairs. The - first character in a pair gives the occasion, the second the mode to - use for that occasion. The occasions are: - |hl-SpecialKey| 8 Meta and special keys listed with ":map" - |hl-NonText| @ '~' and '@' at the end of the window and - characters from 'showbreak' - |hl-Directory| d directories in CTRL-D listing and other special - things in listings - |hl-ErrorMsg| e error messages - h (obsolete, ignored) - |hl-IncSearch| i 'incsearch' highlighting - |hl-Search| l last search pattern highlighting (see 'hlsearch') - |hl-MoreMsg| m |more-prompt| - |hl-ModeMsg| M Mode (e.g., "-- INSERT --") - |hl-LineNr| n line number for ":number" and ":#" commands - |hl-Question| r |hit-enter| prompt and yes/no questions - |hl-StatusLine| s status line of current window |status-line| - |hl-StatusLineNC| S status lines of not-current windows - |hl-Title| t Titles for output from ":set all", ":autocmd" etc. - |hl-VertSplit| c column used to separate vertically split windows - |hl-Visual| v Visual mode - |hl-VisualNOS| V Visual mode when Vim does is "Not Owning the - Selection" Only X11 Gui's |gui-x11| and - |xterm-clipboard|. - |hl-WarningMsg| w warning messages - |hl-WildMenu| W wildcard matches displayed for 'wildmenu' - |hl-Folded| f line used for closed folds + このオプションは、様々な対象に対する強調表示モードを設定する。文字の組 + をコンマ区切りのリストとして指定する。1番目の文字は適用される対象を指 + 定し、2番目の文字はその対象に適用するモードを指定する。 + 対象は以下の通りである。 + |hl-SpecialKey| 8 ":map" でリスト表示されるメタキーと特殊キー + |hl-NonText| @ ウィンドウ末尾の '~' と '@' 、および 'showbreak' + によって表示される文字 + |hl-Directory| d CTRL-D によるリスト表示内のディレクトリや、その他 + の特別な項目 + |hl-ErrorMsg| e エラーメッセージ + h (古くて使われておらず、無視される) + |hl-IncSearch| i 'incsearch' の強調表示 + |hl-Search| l 最終検索パターン強調表示 ('hlsearch' を参照) + |hl-MoreMsg| m 「継続」プロンプト |more-prompt| + |hl-ModeMsg| M モード表示 (例えば "-- INSERT --") + |hl-LineNr| n ":number" と ":#" 用の行番号 + |hl-Question| r 「続けるには」プロンプト |hit-enter| とyes/no質問 + |hl-StatusLine| s カレントウィンドウのステータス行 |status-line| + |hl-StatusLineNC| S 非カレントウィンドウのステータス行 |status-line| + |hl-Title| t ":set all", ":autocmd" 等の出力のタイトル + |hl-VertSplit| c ウィンドウの垂直分割に使われる区切り + |hl-Visual| v Visualモード + |hl-VisualNOS| V X11 Gui |gui-x11| と |xterm-clipboard| でのみ有効 + な、選択領域をクリップボードに送らないVisualモード + (訳注: "Not Owning the Selection" をこういう意味に + 取りましたが、勘違いかもしれません。どなたかご教授 + ください) + |hl-WarningMsg| w 警告メッセージ + |hl-WildMenu| W 'wildmenu' によって表示されるワイルドカードマッチ + |hl-Folded| f 閉じられた折り畳みを表す行 |hl-FoldColumn| F 'foldcolumn' - The display modes are: - r reverse (termcap entry "mr" and "me") - i italic (termcap entry "ZH" and "ZR") - b bold (termcap entry "md" and "me") - s standout (termcap entry "so" and "se") - u underline (termcap entry "us" and "ue") - n no highlighting - - no highlighting - : use a highlight group - The default is used for occasions that are not included. - If you want to change what the display modes do, see |dos-colors| - for an example. - When using the ':' display mode, this must be followed by the name of - a highlight group. A highlight group can be used to define any type - of highlighting, including using color. See |:highlight| on how to - define one. The default uses a different group for each occasion. - See |highlight-default| for the default highlight groups. + 表示モードは以下の通りである。 + r 反転 (termcapの項目 "mr" と "me") + i 斜字体 (termcapの項目 "ZH" と "ZR") + b 太字体 (termcapの項目 "md" と "me") + s 強調 (termcapの項目 "so" と "se") + u 下線 (termcapの項目 "us" と "ue") + n 強調表示なし + - 強調表示なし + : 強調表示グループを使って設定 + (訳注: 「文字の組」と書きながら、既定値はどれも2文字でないのは、 + この ":" が使われていているからである。これだけは例外で、グルー + プ名を使って指定できる) + ユーザに指定されなかった項目については、既定値が使われる。 + 表示モードの効果を変更したいなら、例として |dos-colors| を参照。 + 表示モードに ':' を使うときは、その後に強調表示グループの名前を続けな + ければならない。強調表示グループは、色も含めて強調表示のあらゆるタイプ + を指定することができる。グループの定義方法については |:highlight| を参 + 照。既定値では対象それぞれに異なったグループを使っている。既定の強調表 + 示グループについては |highlight-default| を参照。 *'hlsearch'* *'hls'* *'nohlsearch'* *'nohls'* 'hlsearch' 'hls' 切替 (既定ではオフ) グローバル {Vi にはない} - {not available when compiled without the - |+extra_search| feature} - When there is a previous search pattern, highlight all its matches. - The type of highlighting used can be set with the 'l' occasion in the - 'highlight' option. This uses the "Search" highlight group by - default. Note that only the matching text is highlighted, any offsets - are not applied. - See also: 'incsearch' and |:match|. - When you get bored looking at the highlighted matches, you can turn it - off with |:nohlsearch|. As soon as you use a search command, the - highlighting comes back. - When the search pattern can match an end-of-line, Vim will try to - highlight all of the matched text. However, this depends on where the - search starts. This will be the first line in the window or the first - line below a closed fold. A match in a previous line which is not - drawn may not continue in an newly drawn line. - NOTE: This option is reset when 'compatible' is set. + {Vi mが |+extra_search| 機能付きでコンパイルされたとき + のみ有効} + 前回の検索パターンが存在するとき、それにマッチするテキストを全て強調表 + 示する。強調表示のタイプは、オプション 'highlight' のフラグ 'l' によっ + て設定できる。既定では強調表示グループ "Search" が使われる。 Note マッ + チするテキストのみが強調表示されるので注意。オフセットは適用されない。 + 'incsearch' とコマンド |:match| も参照。 + マッチするテキストが強調表示されるを見飽きたら、|:nohlsearch| で無効に + 切り替えることができる。再び検索コマンドを使えば、強調表示も再び行われ + る。 + 検索パターンが行の終わり end-of-line にマッチするときは、Vimはマッチし + たテキスト全体を強調表示しようとする。しかし、検索を開始した場所によっ + て結果は異なる。ウィンドウの1番上の行または閉じられた折り畳みの次の行 + では、表示されない行内のマッチの強調表示は、表示されている行に継続しな + い。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'history'* *'hi'* -'history' 'hi' 数値 (Vim default: 20, Vi default: 0) +'history' 'hi' 数値 (Vimの既定値: 20, Viの既定値: 0) グローバル {Vi にはない} - A history of ":" commands, and a history of previous search patterns - are remembered. This option decides how many entries may be stored in - each of these histories (see |cmdline-editing|). - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + ":" によるコマンドと以前に使った検索パターンの履歴は保存されるわけだが、 + このオプションはそれぞれの履歴に何個の項目が保存されるかを指定する + (|cmdline-editing| を参照)。 + NOTE: このオプションはオプション 'compatible' がオンのときはViの既定値 + に、オフのときはVimの既定値になるので注意すること。 *'hkmap'* *'hk'* *'nohkmap'* *'nohk'* 'hkmap' 'hk' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み使用可能} - When on, the keyboard is mapped for the Hebrew character set. - Normally you would set 'allowrevins' and use CTRL-_ in insert mode to - toggle this option. See |rileft.txt|. - NOTE: This option is reset when 'compatible' is set. + み有効} + オンのときは、キーボードはヘブライ文字セットにマップされる。普通、オプ + ション 'allowrevins' をオンにしておき、insertモードでこのオプションを + コマンド CTRL-_ で切り替えられるようにすることになる |i_CTRL-_|。 + |rileft.txt| を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'hkmapp'* *'hkp'* *'nohkmapp'* *'nohkp'* 'hkmapp' 'hkp' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み使用可能} - When on, phonetic keyboard mapping is used. 'hkmap' must also be on. - This is useful if you have a non-Hebrew keyboard. - See |rileft.txt|. - NOTE: This option is reset when 'compatible' is set. + み有効} + オンのときは、キーボードは音声ヘブライ文字セットにマップされる。またオ + プション 'hkmap' もオンでなければならない。これはユーザがヘブライ語キー + ボードを持っていないときに便利である。 + |rileft.txt| を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'icon'* *'noicon'* -'icon' 切替 (default off, on when title can be restored) - グローバル - {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ使 - 用可能} - When on, the icon text of the window will be set to the value of - 'iconstring' (if it is not empty), or to the name of the file - currently being edited. Only the last part of the name is used. - Overridden by the 'iconstring' option. - Only works if the terminal supports setting window icons (currently - only X11 GUI and terminals with a non-empty 't_IS' option - these are - Unix xterm and iris-ansi by default, where 't_IS' is taken from the - builtin termcap). - When Vim was compiled with HAVE_X11 defined, the original icon will be - restored if possible |X11|. See |X11-icon| for changing the icon on - X11. +'icon' 切替 (既定ではオフ、タイトルが復元できるならばオン) + グローバル + {Vi にはない} + {Vi mが |+title| 機能付きでコンパイルされたときのみ有 + 効} + オンのときは、ウィンドウのアイコンテキストが 'iconstring' に (値が空で + なければ) 設定される。空ならば現在編集されているファイル名に設定される。 + ファイル名の末尾部分のみが使われる。 + この設定は 'iconstring' によって上書きできる。 + ターミナルがウィンドウアイコンの設定をサポートしているときのみ有効であ + る (現在のところ X11 GUI とターミナルオプション 't_IS' の値が空でない + ターミナルのみ --- これらは既定では Unix xterm と iris-ansi であり、こ + のとき 't_IS' の値は組み込み termcap から取られる)。 + Vimが HAVE_X11 が定義された状態でコンパイルされたなら、可能であれば元 + のアイコンが復元される |X11|。X11でアイコンを変更するには |X11-icon| + を参照。 *'iconstring'* 'iconstring' 文字列 (既定では "") グローバル {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ使 - 用可能} - When this option is not empty, it will be used for the icon text of - the window. This happens only when the 'icon' option is on. - Only works if the terminal supports setting window icon text - (currently only X11 GUI and terminals with a non-empty 't_IS' option). - Does not work for MS Windows. - When Vim was compiled with HAVE_X11 defined, the original icon will be - restored if possible |X11|. - When this option contains printf-style '%' items, they will be - expanded according to the rules used for 'statusline'. See - 'titlestring' for example settings. - {not available when compiled without the |+statusline| feature} + {Vi mが |+title| 機能付きでコンパイルされたときのみ有 + 効} + このオプションが空でないなら、ウィンドウのアイコンテキストに設定される。 + これは 'icon' がオンのときのみ使われる。 + ターミナルがウィンドウのアイコンテキストの設定をサポートしているときの + み有効である (現在のところ X11 GUI とターミナルオプション 't_IS' の値 + が空でないターミナルのみ)。 + MS-Windowsでは無効である。 + Vimが HAVE_X11 が定義された状態でコンパイルされたなら、可能であれば元 + のアイコンが復元される |X11|。 + 値に関数 printf 形式の '%' を使った項目が含まれていると、それらは + 'statusline' と同じように展開される。設定例は 'titlestring' を参照。 + {Vi mが |+statusline| 機能付きでコンパイルされたときのみ有効} *'ignorecase'* *'ic'* *'noignorecase'* *'noic'* 'ignorecase' 'ic' 切替 (既定ではオフ) グローバル - Ignore case in search patterns. Also used when searching in the tags - file. - Also see 'smartcase'. - Can be overruled by using "\c" or "\C" in the pattern, see - |/ignorecase|. + 検索パターンにおいて大文字と小文字を区別しない。タグファイル内の検索に + も適用される。 + オプション 'smartcase' も参照。 + パターン内で "\c" や "\C" を使うことで、この設定を上書きできる。 + |/ignorecase| を参照。 *'imactivatekey'* *'imak'* 'imactivatekey' 'imak' 文字列 (既定では "") グローバル {Vi にはない} - {only available when compiled with |+xim| and - |+GUI_GTK|} - Specifies the key that your Input Method in X-Windows uses for - activation. When this is specified correctly, vim can fully control - IM with 'imcmdline', 'iminsert' and 'imsearch'. - You can't use this option to change the activation key, the option - tells Vim what the key is. - Format: + {Vi mが |+xim| 機能と |+GUI_GTK| 機能付きでコンパイル + されたときのみ有効} + X-Windowsでのインプットメソッド (IM) を起動するのに使われるキーを指定 + する。これが正しく設定されていれば、VimはIMをオプション 'imcmdline', + 'iminsert' や 'imsearch' によって完全に制御できる。 + このオプションで起動キーを変えることはできない。これはただVimにそのキー + が何であるのか伝えるだけである。 + 書式は以下の通り。 [MODIFIER_FLAG-]KEY_STRING - These characters can be used for MODIFIER_FLAG (case is ignored): - S Shift key - L Lock key - C Control key - 1 Mod1 key - 2 Mod2 key - 3 Mod3 key - 4 Mod4 key - 5 Mod5 key - Combinations are allowed, for example "S-C-space" or "SC-space" are - both shift+ctrl+space. - See <X11/keysymdef.h> and XStringToKeysym for KEY_STRING. - - Example: > + 以下の文字が MODIFIER_FLAG として使える (大文字でも小文字でもよい)。 + S シフトキー + L ロックキー + C コントロールキー + 1 修飾キー1 + 2 修飾キー2 + 3 修飾キー3 + 4 修飾キー4 + 5 修飾キー5 + これらを組み合わせることができる。例えば "S-C-space" や "SC-space" は + みな shift+ctrl+space を表す。 + KEY_STRING については <X11/keysymdef.h> と XStringToKeysym を参照。 + + 例: > :set imactivatekey=S-space -< "S-space" means shift+space. This is the activation key for kinput2 + - canna (Japanese), and ami (Korean). +< "S-space" は shift+space である。これは kinput2 + canna (日本語) およ + び ami (韓国語) の起動キーである。 *'imcmdline'* *'imc'* *'noimcmdline'* *'noimc'* 'imcmdline' 'imc' 切替 (既定ではオフ) グローバル {Vi にはない} - {only available when compiled with the |+xim| - |+multi_byte_ime| or |global-ime| feature} - When set the Input Method is always on when starting to edit a command - line, unless entering a search pattern (see 'imsearch' for that). - Setting this option is useful when your input method allows entering - English characters directly, e.g., when it's used to type accented - characters with dead keys. + {Vi mが |+xim| 機能または |+multi_byte_ime| 機能または + |+global-ime| 機能付きでコンパイルされたときのみ有効} + オンのときは、コマンドラインの編集を始めるときには常にインプットメソッ + ド (IM) がオンになる。ただし検索パターンの入力には適用されない (それに + はオプション 'imsearch' を参照)。 + ユーザの IM が英語の文字を直接入力できるならば (例えば IM が、普段使わ + れないキーからアクセント記号を入力する程度のものならば)、このオプショ + ンをオンにすると便利である。 *'imdisable'* *'imd'* *'nodisable'* *'noimd'* -'imdisable' 'imd' 切替 (既定ではオフ, on for some systems (SGI)) +'imdisable' 'imd' 切替 (既定ではオフ、いくつかのシステム(SGI)ではオン) グローバル {Vi にはない} - {only available when compiled with the |+xim| - |+multi_byte_ime| or |global-ime| feature} - When set the Input Method is never used. This is useful to disable - the IM when it doesn't work properly. - Currently this option is on by default for SGI/IRIX machines. This - may change in later releases. + {Vi mが |+xim| 機能または |+multi_byte_ime| 機能または + |+global-ime| 機能付きでコンパイルされたときのみ有効} + オンのときは、インプットメソッド (IM) が全く使われなくなる。これは IM + がうまく働かないとき、それを無効にしてしまうのに便利である。 + 現在のところ、SGI/IRIX のマシンではオンになっているのが既定である。こ + れは将来変更されるかもしれない。 *'iminsert'* *'imi'* -'iminsert' 'imi' 数値 (default 0, 2 when an input method is supported) +'iminsert' 'imi' 数値 (既定では 0、インプットメソッドがサポートされてい + れば 2) バッファについてローカル {Vi にはない} - Specifies whether :lmap or an Input Method (IM) is to be used in - Insert mode. Valid values: - 0 :lmap is off and IM is off - 1 :lmap is ON and IM is off - 2 :lmap is off and IM is ON - 2 is available only when compiled with the |+multi_byte_ime|, |+xim| - or |global-ime|. - To always reset the option to zero when leaving Insert mode with <Esc> - this can be used: > + :lmap かインプットメソッド (IM) がInsertモードで使われるかどうかを指定 + する。指定できる値は以下の通り。 + 0 :lmap はオフ、IM もオフ + 1 :lmap はオン、IM はオフ + 2 :lmap はオフ、IM はオン + 値 2 は、Vimが |+multi_byte_ime| 機能または |+xim| 機能または + |global-ime| 機能付きでコンパイルされたときのみ有効である。 + コマンド <Esc> でInsertモードを終える度に値を 0 に戻すには、次のように + すればよい。 > :inoremap <ESC> <ESC>:set iminsert=0<CR> -< This makes :lmap and IM turn off automatically when leaving Insert - mode. - Note that this option changes when using CTRL-^ in Insert mode - |i_CTRL-^|. - The value is set to 1 when setting 'keymap' to a valid keymap name. - It is also used for the argument of commands like "r" and "f". - The value 0 may not work correctly with Athena and Motif with some XIM - methods. Use 'imdisable' to disable XIM then. +< これはInsertモードを終えるとき :lmap と IM を自動的にオフに切り替える。 + Note Insertモードでコマンド CTRL-^ を使うと、このオプションの値が変わ + るので注意 |i_CTRL-^|。 + オプション 'keymap' に正しいキーマップ名が設定されると、このオプション + は 1 になる。 + これはコマンド "r", "f" 等の引数にも適用される。 + AthenaとMotifでは、値を 0 に設定すると正しく働かないようなXIMがある。 + そのときは XIM を無効にするために 'imdisable' を使うこと。 *'imsearch'* *'ims'* -'imsearch' 'ims' 数値 (default 0, 2 when an input method is supported) +'imsearch' 'ims' 数値 (既定では 0、インプットメソッドがサポートされてい + れば 2) バッファについてローカル {Vi にはない} - Specifies whether :lmap or an Input Method (IM) is to be used when - entering a search pattern. Valid values: - -1 the value of 'iminsert' is used, makes it look like - 'iminsert' is also used when typing a search pattern - 0 :lmap is off and IM is off - 1 :lmap is ON and IM is off - 2 :lmap is off and IM is ON - Note that this option changes when using CTRL-^ in Insert mode - |c_CTRL-^|. - The value is set to 1 when it is not -1 and setting the 'keymap' - option to a valid keymap name. - The value 0 may not work correctly with Athena and Motif with some XIM - methods. Use 'imdisable' to disable XIM then. + :lmap かインプットメソッド (IM) が、検索パターンを入力するときに使われ + るかどうかを指定する。指定できる値は以下の通り。 + -1 'iminsert' の値が使われ、それが検索パターンの入力にも + 適用されているかのように動作する + 0 :lmap はオフ、IM もオフ + 1 :lmap がオン、IM はオフ + 2 :lmap はオフ、IM がオン + Note Command-lineモードでコマンド CTRL-^ を使うと、このオプションが変 + わることに注意 |c_CTRL-^|。 + 値が -1 でないなら、'keymap' に正しいキーマップ名が設定されると、この + オプションは 1 になる。 + AthenaとMotifでは、値を 0 に設定すると正しく働かないようなXIMがある。 + そのときは XIM を無効にするために 'imdisable' を使うこと。 *'include'* *'inc'* -'include' 'inc' 文字列 (default "^#\s*include") +'include' 'inc' 文字列 (既定では "^#\s*include") グローバル/バッファについてローカル |global-local| {Vi にはない} - {not available when compiled without the - |+find_in_path| feature} - Pattern to be used to find an include command. It is a search - pattern, just like for the "/" command (See |pattern|). The default - value is for C programs. This option is used for the commands "[i", - "]I", "[d", etc.. The 'isfname' option is used to recognize the file - name that comes after the matched pattern. See |option-backslash| - about including spaces and backslashes. + {Vi mが |+find_in_path| 機能付きでコンパイルされたとき + のみ有効} + (訳注: プログラミング言語の) インクルード命令を探すのに使われるパター + ンを設定する。値はコマンド "/" と同様の検索パターンである (|pattern| + を参照)。既定値はC言語プログラム用に設定されている。このオプションはコ + マンド "[i", "]I", "[d" 等に使われる。オプション 'isfname' はマッチし + たパターンの後に続くファイル名を認識するために使われる。値に空白や '\' + を含める方法については、 |option-backslash| を参照。 *'includeexpr'* *'inex'* 'includeexpr' 'inex' 文字列 (既定では "") バッファについてローカル {Vi にはない} - {not available when compiled without the - |+find_in_path| or |+eval| feature} - Expression to be used to transform the string found with the 'include' - option to a file name. Mostly useful to change "." to "/" for Java: > + {Vi mが |+find_in_path| 機能と |+eval| 機能付きでコン + パイルされたときのみ有効} + オプション 'include' が判別した文字列を、ファイル名に変換するために使 + われる expression を指定する。以下のようにして、Java言語で "." を "/" + に変換するようなときに便利である。 > :set includeexpr=substitute(v:fname,'\\.','/','g') -< The "v:fname" variable will be set to the file name that was detected. - Evaluated in the |sandbox|. - Also used for the |gf| command if an unmodified file name can't be - found. Allows doing "gf" on the name after an 'include' statement. - Also used for |<cfile>|. +< 変数 "v:fname" は、判別されたファイル名に設定される。 + このオプションの内容は |sandbox| 内でも評価される。 + コマンド |gf| でも、ファイルの実際の名前が見つからないときは、これが使 + われる。プログラミング言語の 'include' 文の後で "gf" を使えるようにな + る。 + また |<cfile>| にも使われる。 *'incsearch'* *'is'* *'noincsearch'* *'nois'* 'incsearch' 'is' 切替 (既定ではオフ) グローバル {Vi にはない} - {not available when compiled without the - |+extra_search| feature} - While typing a search pattern, show immediately where the so far - typed pattern matches. The matched string is highlighted. If the - pattern is invalid or not found, nothing is shown. The screen will - be updated often, this is only useful on fast terminals. Note that - the match will be shown, but the cursor is not actually positioned - there. You still need to finish the search command with <CR> to move - the cursor. The highlighting can be set with the 'i' flag in - 'highlight'. See also: 'hlsearch'. - NOTE: This option is reset when 'compatible' is set. + {Vi mが |+extra_search| 機能付きでコンパイルされたとき + のみ有効} + 検索パターンを打ち込んでいる間にも、打ち込んだところまでのパターンがマッ + チするテキストを、すぐに表示する。マッチした文字列は強調表示される。パ + ターンが不適切であったり見つからなければ、何も表示されない。画面は次々 + 更新されることになるので、このオプションは表示の速いターミナルでのみ有 + 用である。 Note マッチが表示されても、カーソルは実際にはマッチした場所 + に移動していないので注意。カーソルを移動させるには、やはり <CR> を打ち + 込んで検索コマンドを完了させる必要がある。強調表示は、オプション + 'highlight' のフラグ 'i' によって設定できる。'hlsearch' も参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'indentexpr'* *'inde'* 'indentexpr' 'inde' 文字列 (既定では "") バッファについてローカル {Vi にはない} - {not available when compiled without the |+cindent| - or |+eval| features} - Expression which is evaluated to obtain the proper indent for a line. - It is used when a new line is created, for the |=| operator and - in Insert mode as specified with the 'indentkeys' option. - When this option is not empty, it overrules the 'cindent' and - 'smartindent' indenting. - When 'paste' is set this option is not used for indenting. - The expression is evaluated with |v:lnum| set to the line number for - which the indent is to be computed. - The expression must return the number of spaces worth of indent. It - can return "-1" to keep the current indent (this means 'autoindent' is - used for the indent). - Functions useful for computing the indent are |indent()|, |cindent()| - and |lispindent()|. - The evaluation of the expression must not have side effects! It must - not change the text, jump to another window, etc. Afterwards the - cursor position is always restored, thus the cursor may be moved. - Normally this option would be set to call a function: > + {Vi mが |+cindent| 機能と |+eval| 機能付きでコンパイル + されたときのみ有効} + ある行の適切なインデントを得るために評価される expression。これは新し + い行が作られるとき、オペレータ |=| が使われたとき、Insertモードでオプ + ション 'indentkeys' で指定したキーを打ち込んだときに使われる。 + 値が空でないとき、この設定が 'cindent' と 'smartindent' によるインデン + トの設定を上書きする。 + 'paste' がオンのとき、このオプションはインデントに使われない。 + 指定された expression が評価されるとき、変数 |v:lnum| はインデント計算 + の対象となっている行の行番号に設定される。 + 指定された expression は、インデントすべき空白の数を返さなければならな + い。そのままのインデントを保たせるには "-1" を返させればよい (つまり、 + こうするとインデントには 'autoindent' が使われる)。 + インデント深さを計算するのに便利な関数は、|indent()|, |cindent()| と + |lispindent()| である。 + この expression の評価には副作用があってはならない!つまり、テキストを + 変更したり、 別のウィンドウに移動してはいけない。評価後にはカーソル位 + 置は常に復元されるので、カーソルは移動してもよい。 + 普通、このオプションは関数を呼び出すように設定される: > :set indentexpr=GetMyIndent() -< Error messages will be suppressed, unless the 'debug' option contains - "msg". - See |indent-expression|. Also see |eval-sandbox|. - NOTE: This option is made empty when 'compatible' is set. +< 'debug' が "msg" を含まないない限り、エラーメッセージの表示は抑制され + る。 + |indent-expression| を参照。|eval-sandbox| も参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'indentkeys'* *'indk'* -'indentkeys' 'indk' 文字列 (default "0{,0},:,0#,!^F,o,O,e") +'indentkeys' 'indk' 文字列 (既定では "0{,0},:,0#,!^F,o,O,e") バッファについてローカル {Vi にはない} {Vi mが |+cindent| 機能付きでコンパイルされたときのみ - 使用可能} - A list of keys that, when typed in Insert mode, cause reindenting of - the current line. Only happens if 'indentexpr' isn't empty. - The format is identical to 'cinkeys', see |indentkeys-format|. - See |C-indenting| and |indent-expression|. + 有効} + Insertモードで打ち込まれたときに、現在行の再インデントを引き起こすキー + のリスト。これはオプション 'indentexpr' が空でないときのみ起きる。 + 書式は 'cinkeys' によって異なってくる。|indentkeys-format| を参照。 + |C-indenting| と |indent-expression| を参照。 *'infercase'* *'inf'* *'noinfercase'* *'noinf'* 'infercase' 'inf' 切替 (既定ではオフ) バッファについてローカル {Vi にはない} - When doing keyword completion in insert mode |ins-completion|, and - 'ignorecase' is also on, the case of the match is adjusted. If the - typed text contains a lowercase letter where the match has an upper - case letter, the completed part is made lowercase. If the typed text - has no lowercase letters and the match has a lowercase letter where - the typed text has an uppercase letter, and there is a letter before - it, the completed part is made uppercase. + Insertモードで単語補完 |ins-completion| をしているとき、このオプション + と 'ignorecase' がオンならば、マッチした単語の大文字/小文字の区別は修 + 正される。打ち込んだテキストでは小文字だがマッチした単語では大文字であ + るような所があれば、補完される部分もみな小文字になる。打ち込んだテキス + トには小文字が1個もなく、打ち込んだテキストでは大文字だがマッチした単 + 語では小文字であるような所があり、かつその前に文字があるならば、補完さ + れる部分もみな大文字になる。 *'insertmode'* *'im'* *'noinsertmode'* *'noim'* 'insertmode' 'im' 切替 (既定ではオフ) グローバル {Vi にはない} - Makes Vim work in a way that Insert mode is the default mode. Useful - if you want to use Vim as a modeless editor. Used for |evim|. - These Insert mode commands will be useful: - - Use the cursor keys to move around. - - Use CTRL-O to execute one Normal mode command |i_CTRL-O|). When - this is a mapping, it is executed as if 'insertmode' was off. - Normal mode remains active until the mapping is finished. + VimがInsertモードを中心として動作するようになる。Vimをモードを持たない + エディタとして使いたいときに便利である。|evim| で使われている。 + 以下のInsertモードのコマンドが便利だろう。 + - カーソル移動に矢印キーを使う + - 1個のNormalモードコマンドを実行するためにはコマンド CTRL-O を使う + |i_CTRL-O|。コマンドが別のキー列にマッピングされていたときは、オプショ + ン 'insertmode' がオフであるときのように実行される。つまりマッピング + の内容が終了するまでNormalモードが続く。 *i_CTRL-L* - - Use CTRL-L to execute a number of Normal mode commands, then use - <Esc> to get back to Insert mode. - - These items change when 'insertmode' is set: - - when starting to edit of a file, Vim goes to Insert mode. - - <Esc> in Insert mode is a no-op and beeps. - - <Esc> in Normal mode makes Vim go to Insert mode. - - CTRL-L in Insert mode is a command, it is not inserted. - - CTRL-Z in Insert mode suspends Vim, see |CTRL-Z|. *i_CTRL-Z* - However, when <Esc> is used inside a mapping, it behaves like - 'insertmode' was not set. This was done to be able to use the same - mappings with 'insertmode' set or not set. - When executing commands with |:normal| 'insertmode' is not used. - - NOTE: This option is reset when 'compatible' is set. + - 数個のNormalモードコマンドを使うためには先に CTRL-L を使い、その後 + Insertモードに戻るために <Esc> を使う。 + + 'insertmode' がオンになると、以下の項目に変化がある。 + - ファイルの編集を始めたとき、VimはInsertモードになっている。 + - Insertモードで <Esc> を入力しても動作はなく (no-op)、ビープ音が鳴る。 + - Normalモードで <Esc> を入力するとInsertモードに移る。 + - Insertモードでの CTRL-L の入力はコマンドであり、挿入されない。 + - Insertモードで CTRL-Z を入力するとサスペンドする。|CTRL-Z|を参照。 + *i_CTRL-Z* + しかしマッピング内で <Esc> が使われたときは、'insertmode' がオフのとき + のように動作する。これは 'insertmode' がオンでもオフでも、同じマッピン + グが使えるようにするためである。 + |:normal| でNormalモードコマンドを実行するときは、'insertmode' は使わ + れない。 + + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'isfname'* *'isf'* -'isfname' 'isf' 文字列 (default for MS-DOS, Win32 and OS/2: +'isfname' 'isf' 文字列 (MS-DOS, Win32とOS/2での既定値は: "@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,=" - for AMIGA: "@,48-57,/,.,-,_,+,,,$,:" - for VMS: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~" - for OS/390: "@,240-249,/,.,-,_,+,,,#,$,%,~,=" - otherwise: "@,48-57,/,.,-,_,+,,,#,$,%,~,=") - グローバル - {Vi にはない} - The characters specified by this option are included in file names and - path names. Filenames are used for commands like "gf", "[i" and in - the tags file. It is also used for "\f" in a |pattern|. - Multi-byte characters 256 and above are always included, only the - characters up to 255 are specified with this option. - For UTF-8 the characters 0xa0 to 0xff are included as well. - - Note that on systems using a backslash as path separator, Vim tries to - do its best to make it work as you would expect. That is a bit - tricky, since Vi originally used the backslash to escape special - characters. Vim will not remove a backslash in front of a normal file - name character on these systems, but it will on Unix and alikes. The - '&' and '^' are not included by default, because these are special for - cmd.exe. - - The format of this option is a list of parts, separated with commas. - Each part can be a single character number or a range. A range is two - character numbers with '-' in between. A character number can be a - decimal number between 0 and 255 or the ASCII character itself (does - not work for digits). Example: - "_,-,128-140,#-43" (include '_' and '-' and the range - 128 to 140 and '#' to 43) - If a part starts with '^', the following character number or range - will be excluded from the option. The option is interpreted from left - to right. Put the excluded character after the range where it is - included. To include '^' itself use it as the last character of the - option or the end of a range. Example: - "^a-z,#,^" (exclude 'a' to 'z', include '#' and '^') - If the character is '@', all characters where isalpha() returns TRUE - are included. Normally these are the characters a to z and A to Z, - plus accented characters. To include '@' itself use "@-@". Examples: - "@,^a-z" All alphabetic characters, excluding lower - case letters. - "a-z,A-Z,@-@" All letters plus the '@' character. - A comma can be included by using it where a character number is - expected. Example: - "48-57,,,_" Digits, command and underscore. - A comma can be excluded by prepending a '^'. Example: - " -~,^,,9" All characters from space to '~', excluding - comma, plus <Tab>. - See |option-backslash| about including spaces and backslashes. + AMIGAでは: "@,48-57,/,.,-,_,+,,,$,:" + VMSでは: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~" + OS/390では: "@,240-249,/,.,-,_,+,,,#,$,%,~,=" + それ以外では: "@,48-57,/,.,-,_,+,,,#,$,%,~,=") + グローバル + {Vi にはない} + ファイル名やパス名に使われる文字を指定する。ファイル名はコマンド "gf", + "[i" 等やタグファイル内で使われる。またパターン |pattern| 内の "\f" に + も使われる。 + 文字コードが 256 以上のマルチバイト文字は常に含まることになっているの + で、文字コードが 255 以下の文字のみをこのオプションで指定する。 + UTF-8では、文字コードが 0xa0 から 0xff の文字は、同様に常に含まれる。 + + Note '\' をパスの区切りに使うシステムでは、Vimは '\' がユーザの想定通 + りに働くよう最善を尽くす。これには少し巧妙なことをしている。なぜならVi + は元々、'\' を特殊文字をエスケープするために使っていたからだ。そういっ + たシステムでは、普通のファイル名の文字の前にある '\' を取り除かない。 + しかしUnix系列のシステムでは取り除く。既定では '&' と '^' は含まれない。 + それはこれらの文字が cmd.exe (訳注: Windows NTのシェル) にとって特別な + 意味を持つからである。 + + このオプションの値の書式は、コンマ区切りの指定部のリストである。それぞ + れの指定部は単一の文字または範囲指定からなる。範囲指定は2個の文字コー + ドが '-' で区切られたものである。文字コードは 0 から 255 の10進整数だ + が、代わりにASCIIキャラクタ自身を使ってもよい (ただし数字には使えない)。 + 例: + "_,-,128-140,#-43" ('_' と、'-' と、コードが 128 から 140 + までの文字と、'#' からコードが 43 ま + での文字を含む) + 指定部が '^' で始まるとき、それに続く文字コードまたは範囲は指定から除 + 外される。オプションは左から右に解釈されるので、指定したある範囲に除外 + したい文字があったら、それをその範囲の後に除外指定すること。文字 '^' + 自体を値に含みたいときは、値または指定部の最後に指定すること。例: + "^a-z,#,^" ('a' から 'z' までの文字を除き、'#' と '^' を + 含む) + 文字として '@' を指定すると、関数 isalpha() で TRUE が返るような文字全 + てが含まれる。普通、それは a から z と A から Z の文字と、それらにアク + セントのついたものである。文字 '@' 自身を値に含みたいときは、"@-@" と + すること。例: + "@,^a-z" アルファベットの仲間全て、ただしアルファベット + の小文字は除く + "a-z,A-Z,@-@" アルファベット全てと、文字 '@' + コンマを含めるには、文字コードが来るはずのところにコンマをおけばよい。 + 例: + "48-57,,,_" 数字と、コンマと、下線 (アンダースコア) + コンマを除外するには、前に '^' をおく。例: + " -~,^,,9" 空白から '~' までの全ての文字、ただしコンマと + <Tab> を除く + 値に空白や '\' を含める方法については、|option-backslash| を参照。 *'isident'* *'isi'* -'isident' 'isi' 文字列 (default for MS-DOS, Win32 and OS/2: +'isident' 'isi' 文字列 (MS-DOS, Win32とOS/2での既定値は: "@,48-57,_,128-167,224-235" - otherwise: "@,48-57,_,192-255") + それ以外では: "@,48-57,_,192-255") グローバル {Vi にはない} - The characters given by this option are included in identifiers. - Identifiers are used in recognizing environment variables and after a - match of the 'define' option. It is also used for "\i" in a - |pattern|. See 'isfname' for a description of the format of this - option. - Careful: If you change this option, it might break expanding - environment variables. E.g., when '/' is included and Vim tries to - expand "$HOME/.viminfo". Maybe you should change 'iskeyword' instead. + Identifier に使われる文字を指定する。Identifier は、環境変数の認識とオ + プション 'define' のマッチしたところの後に使われる。またパターン + |pattern| 内の "\i" にも使われる。このオプションの書式の説明は、 + 'isfname' を参考にすること。 + 注意: このオプションを変更すると、環境変数の展開に失敗するかもしれない。 + 例えば値に '/' が含まれているときに "$HOME/.viminfo" を展開しようとす + るとき等である。おそらく代わりに 'iskeyword' を変更するべきだろう。 *'iskeyword'* *'isk'* -'iskeyword' 'isk' 文字列 (Vim default for MS-DOS and Win32: +'iskeyword' 'isk' 文字列 (MS-DOSとWin32でのVimの既定値: "@,48-57,_,128-167,224-235" - otherwise: "@,48-57,_,192-255" - Vi default: "@,48-57,_") + それ以外のシステムでのVimの既定値: + "@,48-57,_,192-255" + Viの既定値: "@,48-57,_") バッファについてローカル {Vi にはない} - Keywords are used in searching and recognizing with many commands: - "w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See - 'isfname' for a description of the format of this option. For C - programs you could use "a-z,A-Z,48-57,_,.,-,>". - For a help file it is set to all non-blank printable characters except - '*', '"' and '|' (so that CTRL-] on a command finds the help for that - command). - When the 'lisp' option is on the '-' character is always included. - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + Keyword は、"w", "*", "[i" 等の多くのコマンドで検索と認識に使われる。 + またパターン |pattern| 内の "\k" にも使われる。このオプションの値の書 + 式の説明については、オプション 'isfname' を参考にすること。C言語プログ + ラムには "a-z,A-Z,48-57,_,.,-,>" が使えるだろう。 + ヘルプファイルでは、このオプションは '*', '"', '|' と空白の仲間を除い + た全ての printable な文字 (訳注: 文書先頭を参照) に設定される (コマン + ド上で CTRL-] を入力したときにそのコマンドについてのヘルプにジャンプで + きるようにするため)。 + 'lisp' がオンのときは、文字 '-' は常に含まれる。 + NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 + 値に、オフのときはVimの既定値になるので注意すること。 *'isprint'* *'isp'* -'isprint' 'isp' 文字列 (default for MS-DOS, Win32, OS/2 and Macintosh: - "@,~-255"; otherwise: "@,161-255") +'isprint' 'isp' 文字列 (MS-DOS, Win32, OS/2とMacintoshでの既定値: + "@,~-255"; それ以外では: "@,161-255") グローバル {Vi にはない} - The characters given by this option are displayed directly on the - screen. It is also used for "\p" in a |pattern|. The characters from - space (ascii 32) to '~' (ascii 126) are always displayed directly, - even when they are not included in 'isprint' or excluded. See - 'isfname' for a description of the format of this option. + このオプションで指定された文字は、画面に直接表示される。またパターン + |pattern| 内の "\p" にも使われる。空白 (ASCIIコード 32) から '~' + (ASCIIコード 126) までの文字は、'isprint' に指定されていなくても、また + は除外指定されていても、常に直接表示される。このオプションの書式の説明 + は、'isfname' を参考にすること。 - Non-printable characters are displayed with two characters: + unprintable な文字 (訳注: 文書先頭を参照) は、2文字で表示される。 0 - 31 "^@" - "^_" - 32 - 126 always single characters + 32 - 126 常に1文字で表示される 127 "^?" 128 - 159 "~@" - "~_" 160 - 254 "| " - "|~" 255 "~?" - When 'encoding' is a Unicode one, illegal bytes from 128 to 255 are - displayed as <xx>, with the hexadecimal value of the byte. - When 'display' contains "uhex" all unprintable characters are - displayed as <xx>. - The NonText highlighting will be used for unprintable characters. - |hl-NonText| - - Multi-byte characters 256 and above are always included, only the - characters up to 255 are specified with this option. When a character - is printable but it is not available in the current font, a - replacement character will be shown. - Unprintable and zero-width Unicode characters are displayed as <xxxx>. - There is no option to specify these characters. + 'encoding' がUnicodeの一種だったときは、文字コードが 128 から 255 まで + の不正な文字は、<xx> という形式で16進表示される。 + 'display' に "uhex" が含まれているときは、全ての unprintable な文字が + <xx> の形式で表示される。 + unprintable な文字には、強調表示グループ NonText が使われる + |hl-NonText|。 + + 文字コードが 256 以上のマルチバイト文字は常に含まれることになっている + ので、文字コードが 255 以下の文字のみをこのオプションに指定する。文字 + が本来は printable だが現在のフォントでは表示できないときは、代替文字 + が表示される。 + Unprintable またはゼロ幅のUnicode文字は <xxxx> という形式で表示される。 + そういった文字を指定するオプションはない。 *'joinspaces'* *'js'* *'nojoinspaces'* *'nojs'* 'joinspaces' 'js' 切替 (既定ではオン) グローバル {Vi にはない} - Insert two spaces after a '.', '?' and '!' with a join command. - When 'cpoptions' includes the 'j' flag, only do this after a '.'. - Otherwise only one space is inserted. - NOTE: This option is set when 'compatible' is set. + 行連結コマンドにおいて、 '.', '?' や '!' の後に空白を 2 個挿入する。オ + プション 'cpoptions' にフラグ 'j' が含まれるときは、'.' の後にのみ空白 + を2個挿入する。 + それ以外では空白は1個だけ挿入される。 + NOTE: このオプションは、オプション 'compatible' がオンのときにはオンに + なるので注意。 *'key'* 'key' 文字列 (既定では "") バッファについてローカル {Vi にはない} - The key that is used for encrypting and decrypting the current buffer. - See |encryption|. - Careful: Do not set the key value by hand, someone might see the typed - key. Use the |:X| command. But you can make 'key' empty: > + カレントバッファを暗号化したり復号したりするのに使われるキー。 + |encryption| を参照。 + 注意: このキーの値を手動で (訳注: コマンド ":set" を使って、ということ) + 設定しないこと。誰かが入力された文字を盗み見るかもしれない。代わりにコ + マンド |:X| を使うこと。しかし次のようにして、'key' を空にするのはよい。 > :set key= -< It is not possible to get the value of this option with ":set key" or - "echo &key". This is to avoid showing it to someone who shouldn't - know. It also means you cannot see it yourself once you have set it, - be careful not to make a typing error! +< このオプションの値は、":set key" や "echo &key" 等で得ることはできない。 + これは、値を知るべきでない人に知られないようにするためである。このこと + はまた、設定してしまうとユーザ自身も値を知ることができないということで + ある。タイプミスをしないよう注意! *'keymap'* *'kmp'* 'keymap' 'kmp' 文字列 (既定では "") バッファについてローカル {Vi にはない} - {Vi mが |+keymap| 機能付きでコンパイルされたときのみ使 - 用可能} - Name of a keyboard mapping. See |mbyte-keymap|. - Setting this option to a valid keymap name has the side effect of - setting 'iminsert' to one, so that the keymap becomes effective. - 'imsearch' is also set to one, unless it was -1 + {Vi mが |+keymap| 機能付きでコンパイルされたときのみ有 + 効} + キーマッピングの名前を指定する。|mbyte-keymap| を参照。 + このオプションを適正なキーマップ名に設定すると、キーマッピングが有効に + なるようにオプション 'iminsert' が 1 になるという影響がある。また + 'imsearch' も、元が -1 でない限り 1 になる。 *'keymodel'* *'km'* 'keymodel' 'km' 文字列 (既定では "") グローバル {Vi にはない} - List of comma separated words, which enable special things that keys - can do. These values can be used: - startsel Using a shifted special key starts selection (either - Select mode or Visual mode, depending on "key" being - present in 'selectmode'). - stopsel Using a not-shifted special key stops selection. - Special keys in this context are the cursor keys, <End>, <Home>, - <PageUp> and <PageDown>. - The 'keymodel' option is set by the |:behave| command. + キーで可能なことを指定するためのキーワードの、コンマ区切りのリスト。指 + 定可能なキーワードは以下の通りである。 + startsel シフトキーと特別なキーを同時に押して選択を開始する + (SelectモードとVisualモードのどちらでも、オプション + 'selectmode' で指定された "キー" によって)。 + stopsel シフトキーを押さないままの特別なキーで選択を止める。 + ここでいう「特別なキー」とはカーソルキー、<End>, <Home>, <PageUp> や + <PageDown> である。 + 'keymodel' は、コマンド |:behave| によって設定される。 *'keywordprg'* *'kp'* -'keywordprg' 'kp' 文字列 (default "man" or "man -s", DOS: "", - OS/2: "view /", VMS: "help") +'keywordprg' 'kp' 文字列 (既定では "man" または "man -s", DOSでは: "", + OS/2では: "view /", VMSでは: "help") グローバル {Vi にはない} - Program to use for the |K| command. Environment variables are - expanded |:set_env|. When empty ":help" is used. - When "man" is used, Vim will automatically translate a count for the - "K" command to a section number. Also for "man -s", in which case the - "-s" is removed when there is no count. - See |option-backslash| about including spaces and backslashes. - Example: > + コマンド |K| に使われるプログラム。環境変数は展開される |:set_env|。空 + のときには ":help" が使われる。 + "man" が指定されたときは、"K" に指定されたカウントは自動的に章番号に変 + 換される。"man -s" でも同様で、この場合カウントがないときは "-s" は取 + り除かれる。 + 値に空白や '\' を含める方法については、|option-backslash| を参照。 + 例: > :set keywordprg=man\ -s < 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -3458,797 +3436,800 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 グローバル {Vi にはない} {Vi mが |+langmap| 機能付きでコンパイルされたときのみ - 使用可能} - This option allows switching your keyboard into a special language - mode. When you are typing text in Insert mode the characters are - inserted directly. When in command mode the 'langmap' option takes - care of translating these special characters to the original meaning - of the key. This means you don't have to change the keyboard mode to - be able to execute Normal mode commands. - This is the opposite of the 'keymap' option, where characters are - mapped in Insert mode. - This only works for 8-bit characters. The value of 'langmap' may be - specified with multi-byte characters (e.g., UTF-8), but only the lower - 8 bits of each character will be used. - - Example (for Greek): *greek* > - :set langmap=ÁA,ÂB,ØC,ÄD,ÅE,ÖF,ÃG,ÇH,ÉI,ÎJ,ÊK,ËL,ÌM,ÍN,ÏO,ÐP,QQ,ÑR,ÓS,ÔT,ÈU,ÙV,WW,×X,ÕY,ÆZ,áa,âb,øc,äd,åe,öf,ãg,çh,éi,îj,êk,ël,ìm,ín,ïo,ðp,qq,ñr,ós,ôt,èu,ùv,òw,÷x,õy,æz -< Example (exchanges meaning of z and y for commands): > + 有効} + このオプションでは、ユーザのキーボードを特別な言語モードに切り替えられ + るようにする。 Insertモードで文字を入力しているときは、文字は直接入力 + される。しかしCommandモードではオプション 'langmap' により、入力された + 特別な文字をキー本来の文字に変換する。つまりNormalモードコマンドを実行 + するためにキーボードモードを変更しなくともよいということである。 + このオプションは 'keymap' と正反対のものである。'keymap' はInsertモー + ドでマッピングを行う。 + これは8ビット文字に対してのみ有効である。'langmap' の値はマルチバイト + 文字 (例えばUTF-8) を設定してもよいが、文字それぞれの下位 8 ビットのみ + が使われる。 + + 例 (ギリシア語に対して): *greek* + :set langmap=チA,ツB,リC,トD,ナE,ヨF,テG,ヌH,ノI,ホJ,ハK,ヒL,フM,ヘN,マO,ミP,QQ,ムR,モS,ヤT,ネU,ルV,WW,ラX,ユY,ニZ,畭,稈,�,臈,蘰,�,緘,輊,駟,竫,麑,???,�,???,�,�,qq,�,�,�,鑾,�,�,�,�,諂 +< 例 (コマンドの z と y の意味の交換): > :set langmap=zy,yz,ZY,YZ < - The 'langmap' option is a list of parts, separated with commas. Each - part can be in one of two forms: - 1. A list of pairs. Each pair is a "from" character immediately - followed by the "to" character. Examples: "aA", "aAbBcC". - 2. A list of "from" characters, a semi-colon and a list of "to" - characters. Example: "abc;ABC" - Example: "aA,fgh;FGH,cCdDeE" - Special characters need to be preceded with a backslash. These are - ";", ',' and backslash itself. - - This will allow you to activate vim actions without having to switch - back and forth between the languages. Your language characters will - be understood as normal vim English characters (according to the - langmap mappings) in the following cases: - o Normal/Visual mode (commands, buffer/register names, user mappings) - o Insert/Replace Mode: Register names after CTRL-R - o Insert/Replace Mode: Mappings - Characters entered in Command-line mode will NOT be affected by - this option. Note that this option can be changed at any time - allowing to switch between mappings for different languages/encodings. - Use a mapping to avoid having to type it each time! + 'langmap' は、コンマ区切りの指定部のリストである。 + それぞれの指定部は次の2種類のうちどちらかの形式に従う。 + 1. 2文字の組のリスト。変換「元」の文字の直後に変換「先」の文字を置い + て組を作る。例: "aA", "aAbBcC" + 2. 変換「元」の文字のリスト、セミコロン、変換「先」の文字のリスト。 + 例: "abc;ABC" + 例: "aA,fgh;FGH,cCdDeE" + 特別な文字は '\' を前に置く必要がある。そのような文字は ";", ',' と + '\' 自身である。 + + Langmap を使えば言語間の切り替えなしにVimの機能を有効化することができ + る。以下のような場合では、ユーザの言語の文字でも、Vimは (langmap のマッ + ピングに従って) 通常の英語の文字として理解できる。 + o Normal/Visualモード (コマンド、バッファ/レジスタ名、ユーザのマッピ + ング) + o Insert/Replaceモード: CTRL-R 入力後のレジスタ名 + o Insert/Replaceモード: マッピング + Command-lineモードで入力された文字には、このオプションは効力を「持たな + い」。Note このオプションは、異なった言語/エンコーディング用のマッピ + ングを切り替えられるときにはいつでも設定を変更できることに注意。毎回マッ + ピング設定を打ち込まずに済むようにするには、マッピングを使うこと! *'langmenu'* *'lm'* 'langmenu' 'lm' 文字列 (既定では "") グローバル {Vi にはない} - {only available when compiled with the |+menu| and - |+multi_lang| features} - Language to use for menu translation. Tells which file is loaded - from the "lang" directory in 'runtimepath': > + {Vi mが |+menu| 機能と |+multi_lang| 機能付きでコンパ + イルされたときのみ有効} + メニュー翻訳に使われる言語。つまり 'runtimepath' 内のディレクトリ + "lang" からどのファイルを読み込むのか指定する。指定方法は次の通り (空 + 白はなし)。 > "lang/menu_" . &langmenu . ".vim" -< (without the spaces). For example, to always use the Dutch menus, no - matter what $LANG is set to: > +< 例えば、環境変数 $LANG が何に設定されていても、常にオランダ語メニュー + を使うには、次のようにする。 > :set langmenu=nl_NL.ISO_8859-1 -< When 'langmenu' is empty, |v:lang| is used. - If your $LANG is set to a non-English language but you do want to use - the English menus: > +< 'langmenu' が空のときは、変数 |v:lang| が使われる。 + ユーザの環境変数 $LANG は英語以外の言語だが、必ず英語のメニューを使い + たいならば、次のようにする。 > :set langmenu=none -< This option must be set before loading menus, switching on filetype - detection or syntax highlighting. Once the menus are defined setting - this option has no effect. But you could do this: > +< このオプションは、メニューの読み込み、ファイルタイプ判定の起動、構文強 + 調表示の起動のいずれよりも先に設定しなければならない。メニューが定義さ + れてしまうと、このオプションを設定しても何の効果もない。しかしこうする + ことはできる。 > :source $VIMRUNTIME/delmenu.vim :set langmenu=de_DE.ISO_8859-1 :source $VIMRUNTIME/menu.vim -< Warning: This deletes all menus that you defined yourself! +< 注意: こうすると、ユーザ自身の定義したメニューも含む、全てのメニューが + いったん削除される! *'laststatus'* *'ls'* 'laststatus' 'ls' 数値 (既定では 1) グローバル {Vi にはない} - The value of this option influences when the last window will have a - status line: - 0: never - 1: only if there are at least two windows - 2: always - The screen looks nicer with a status line if you have several - windows, but it takes another screen line. |status-line| + 最下ウィンドウにいつステータス行が表示されるかを設定する。 + 0: 全く表示しない + 1: ウィンドウの数が2以上のときのみ表示 + 2: 常に表示 + ウィンドウをいくつか表示しているときには、ステータス行があると見栄えが + よくなる。しかし画面上の行をさらに必要とする。|status-line| *'lazyredraw'* *'lz'* *'nolazyredraw'* *'nolz'* 'lazyredraw' 'lz' 切替 (既定ではオフ) グローバル {Vi にはない} - When this option is set, the screen will not be redrawn while - executing macros, registers and other commands that have not been - typed. To force an update use |:redraw|. + オンのときは、マクロやレジスタの内容およびその他のキーボードから打ち込 + まれないコマンドを実行する間、画面は再描画されなくなる。画面の再描画を + 強制的に行うには、コマンド |:redraw| を使うこと。 *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* 'linebreak' 'lbr' 切替 (既定ではオフ) ウィンドウについてローカル {Vi にはない} - {not available when compiled without the |+linebreak| - feature} - If on Vim will wrap long lines at a character in 'breakat' rather - than at the last character that fits on the screen. Unlike - 'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file, - it only affects the way the file is displayed, not its contents. The - value of 'showbreak' is used to put in front of wrapped lines. This - option is not used when the 'wrap' option is off or 'list' is on. - Note that <Tab> characters after an <EOL> are mostly not displayed - with the right amount of white space. + {Vi mが |+linebreak| 機能付きでコンパイルされたときの + み有効} + オンのときは、画面に収まりきる最後の文字ではなく、オプション 'breakat' + に指定された文字のところで、長い行を折り返す。'wrapmargin' や + 'textwidth' と違い、これはファイルに実際の <EOL> を挿入しない。このオ + プションが影響するのはファイルの表示方法であり、内容ではない。 + 'showbreak' に設定された文字が折り返された行の先頭に置かれる。このオプ + ションは、'wrap' がオフであるか、'list' がオンのときには使われない。 + Note 大抵、<EOL> の後の <Tab> は正しい数の空白として表示されないので注 + 意。 *'lines'* -'lines' 数値 (default 24 or terminal height) +'lines' 数値 (既定では 24 またはターミナルの高さ) グローバル - 数値 of lines in the display. Normally you don't need to set this. - That is done automatically by the terminal initialization code. - When Vim is running in the GUI or in a resizable window, setting this - option may cause the window size to be changed. - When you set this option and Vim is unable to change the physical - 数値 of lines of the display, the display may be messed up. + 画面上の行数。普通このオプションはターミナルの初期化の時点で設定され、 + 手動で設定する必要はない。 + VimがGUI環境内やサイズ変更可能なウィンドウ内で実行されているときは、こ + のオプションを変更するとウィンドウサイズも変更されるかもしれない。 + あなたがこのオプションを変更したのに、Vimがディスプレイの行数の物理的 + な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが + ある。 + (訳注: オプション 'columns' も参照) *'linespace'* *'lsp'* -'linespace' 'lsp' 数値 (default 0, 1 for Win32 GUI) +'linespace' 'lsp' 数値 (既定では 0, Win32のGUI版では 1) グローバル {Vi にはない} - {only in the GUI} - 数値 of pixel lines inserted between characters. Useful if the font - uses the full character cell height, making lines touch each other. - When non-zero there is room for underlining. + {Vi mのGUI版でのみ有効} + 行間の幅のピクセル数。フォントが文字セルの高さを一杯に使っていて、行同 + 士が接触してしまうときに便利である。1 以上のときには下線を引く余裕がで + きる。 *'lisp'* *'nolisp'* 'lisp' 切替 (既定ではオフ) バッファについてローカル {Vi mが |+lispindent| 機能付きでコンパイルされたときの - み使用可能} - Lisp mode: When <Enter> is typed in insert mode set the indent for - the next line to Lisp standards (well, sort of). Also happens with - "cc" or "S". 'autoindent' must also be on for this to work. The 'p' - flag in 'cpoptions' changes the method of indenting: Vi compatible or - better. Also see 'lispwords'. - The '-' character is included in keyword characters. Redefines the - "=" operator to use this same indentation algorithm rather than - calling an external program if 'equalprg' is empty. - This option is not used when 'paste' is set. - {Vi: Does it a little bit differently} + み有効} + Lispモード: Insertモードで <Enter> が入力されると、次の行のインデント + を Lisp の標準 (というかまあ、その一種) にする。また "cc" や "S" でも + 同様である。これが機能するにはオプション 'autoindent' もオンでなければ + ならない。'cpoptions' のフラグ 'p' はインデントの方法 (Vi互換か、より + 良い方法か) を変更する。'lispwords' も参照。 + キーワードを構成する文字に '-' も含まれるようになる。'equalprg' が空の + ときには、外部プログラムを呼び出さず、Lisp用のインデント用アルゴリズム + を使うように、オペレータ "=" を再定義する。 + このオプションは、'paste' がオンのときには使われない。 + {Vi では微妙に動作が違う} *'lispwords'* *'lw'* -'lispwords' 'lw' 文字列 (default is very long) +'lispwords' 'lw' 文字列 (既定値はとても長い) グローバル {Vi にはない} {Vi mが |+lispindent| 機能付きでコンパイルされたときの - み使用可能} - Comma separated list of words that influence the Lisp indenting. + み有効} + Lisp用のインデント方法を設定するキーワードの、コンマ区切りのリスト。 *'list'* *'nolist'* 'list' 切替 (既定ではオフ) ウィンドウについてローカル - List mode: Show tabs as CTRL-I, show end of line with $. Useful to - see the difference between tabs and spaces and for trailing blanks. - Note that this will also affect formatting (set with 'textwidth' or - 'wrapmargin') when 'cpoptions' includes 'L'. See 'listchars' for - changing the way tabs are displayed. + Listモード: タブ文字を CTRL-I で表示し、行末に $ で表示する。タブ文字 + と空白文字との差異や、行末に続く空白の差異を見るのに便利である。 + Note オプション 'cpoptions' がフラグ 'L' を含むならば、このオプション + は整形コマンドにも影響することに注意 ('textwidth' や 'wrapmargin' と共 + に設定されたとき)。タブの表示方法の変更については、'listchars' を参照。 *'listchars'* *'lcs'* -'listchars' 'lcs' 文字列 (default "eol:$") - グローバル - {Vi にはない} - 文字列s to use in 'list' mode. It is a comma separated list of string - settings. - eol:c Character to show at the end of each line. When - omitted, there is no extra character at the end of the - line. - tab:xy Two characters to be used to show a Tab. The first - char is used once. The second char is repeated to - fill the space that the Tab normally occupies. - "tab:>-" will show a Tab that takes four spaces as - ">---". When omitted, a Tab is show as ^I. - trail:c Character to show for trailing spaces. When omitted, - trailing spaces are blank. - extends:c Character to show in the last column, when 'wrap' is - off and the line continues beyond the right of the - screen. - precedes:c Character to show in the first column, when 'wrap' - is off and there is text preceeding the character - visible in the first column. - - The characters ':' and ',' cannot be used. - Examples: > - :set lcs=tab:>-,trail:- - :set lcs=tab:>-,eol:< - :set lcs=extends:>,precedes:< -< The "NonText" highlighting will be used for "eol", "extends" and - "precedes". "SpecialKey" for "tab" and "trail". +'listchars' 'lcs' 文字列 (既定では "eol:$") + グローバル + {Vi にはない} + Listモード (訳注: オプション 'list' がオンのとき) に使われる文字を設定 + する。値は指定文字列のコンマ区切りのリストである。 + eol:文字 行末の表示に使われる文字。指定されないと、行末には何も + 表示されない。 + tab:2文字 タブ文字の表示に使われる文字。1文字目は1回だけ使われる。 + 2文字目はタブが通常占めるだけの空白を埋めるまで繰り返 + し表示される。 + "tab:>-" とすると、タブが4文字の設定では ">---" となる。 + 指定されないと、タブは ^I と表示される。 + trail:文字 行末の空白の表示に使われる文字。指定されないと、行末の + 空白は何も見えない。 + extends:文字 'wrap' がオフで、行が画面の右端よりも伸びているときに、 + 最終列に表示される文字。 + precedes:文字 'wrap' がオフで、最前列で表示されている最初 + の文字より前にテキストが存在するとき (訳注: 上の行の末 + 尾が画面の右端より伸びているとき) に、最前列に表 + 示される文字。 + + 文字 ':' と ',' は使えない。 + 例: > + :set lcs=tab:>-,trail:- + :set lcs=tab:>-,eol:< + :set lcs=extends:>,precedes:< +< "eol", "extends", "precedes" には強調表示グループ "NonText" が、"tab" + と "trail" には "SpecialKey" が適用される。 *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'* 'loadplugins' 'lpl' 切替 (既定ではオン) グローバル {Vi にはない} - When on the plugin scripts are loaded when starting up |load-plugins|. - This option can be reset in your |vimrc| file to disable the loading - of plugins. - Note that using the "-u NONE" and "--noplugin" command line arguments - reset this option. |-u| |--noplugin| + オンのときは、Vimが立ち上がるときにプラグイン・スクリプトが読み込まれ + る |load-plugins|。 + このオプションをユーザのファイル |vimrc| 内でオフにすることで、プラグ + インの読み込みを無効化できる。 + Note コマンドライン引数 "-u NONE" または "--noplugin" によってこのオプ + ションをオフにできることに注意 |-u| |--noplugin|。 *'magic'* *'nomagic'* 'magic' 切替 (既定ではオン) グローバル - Changes the special characters that can be used in search patterns. - See |pattern|. - NOTE: To avoid portability problems with using patterns, always keep - this option at the default "on". Only switch it off when working with - old Vi scripts. In any other situation write patterns that work when - 'magic' is on. + 検索パターン内で使用可能な特別な文字を変更する。|pattern| を参照。 + NOTE: パターンの使用に関わる移植性の問題を避けるため、常にこのオプショ + ンを既定値のオンにしておくこと。古いViのスクリプトを使うときのみオフに + 切り替えること。それ以外では、いつでも 'magic' がオンのときに動作する + ようなパターンを書くこと。 *'makeef'* *'mef'* -'makeef' 'mef' 文字列 (default: "") +'makeef' 'mef' 文字列 (既定では "") グローバル {Vi にはない} {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ - 使用可能} - Name of the errorfile for the |:make| command (see |:make_makeprg|) - and the |:grep| command. - When it is empty, an internally generated temp file will be used. - When "##" is included, it is replaced by a number to make the name - unique. This makes sure that the ":make" command doesn't overwrite an - existing file. - NOT used for the ":cf" command. See 'errorfile' for that. - Environment variables are expanded |:set_env|. - See |option-backslash| about including spaces and backslashes. + 有効} + コマンド |:make| (|:make_makeprg| を参照) と |:grep| に使われるエラー + ファイルの名前。 + 値が空のときは、内部で生成された一時ファイルが使われる。 + "##" が含まれているときは、その部分はファイル名の一意性を保つための数 + 字に置き換えられる。こうすれば ":make" で既存のファイルを上書きしてし + まうことがなくなる。 + ":cf" には使われ「ない」。それについてはオプション 'errorfile' を参照。 + 環境変数は展開される |:set_env|。 + 値に空白や '\' を含める方法については、|option-backslash| を参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'makeprg'* *'mp'* -'makeprg' 'mp' 文字列 (default "make", VMS: "MMS") +'makeprg' 'mp' 文字列 (既定では "make", VMSでは "MMS") グローバル/バッファについてローカル |global-local| {Vi にはない} - Program to use for the ":make" command. See |:make_makeprg|. This - option may contain '%' and '#' characters, which are expanded like - when used in a command-line. Environment variables are expanded - |:set_env|. See |option-backslash| about including spaces and - backslashes. Note that a '|' must be escaped twice: once for ":set" - and once for the interpretation of a command. When you use a filter - called "myfilter" do it like this: > - :set makeprg=gmake\ \\\|\ myfilter -< The placeholder "$*" can be given (even multiple times) to specify - where the arguments will be included, for example: > - :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} + コマンド ":make" で使われるプログラム。|:make_makeprg| を参照。値には + 文字 '%' と '#' を使える。これらはコマンドラインで使われたときのように + 展開される。環境変数は展開される |:set_env|。値に空白や '\' を含める方 + 法については、 |option-backslash| を参照。Note 文字 '|' は2回エスケー + プすることに注意: 1回目はコマンド ":set" に対して、 2回目はコマンドの + 解釈に対してである。 + ユーザのフィルタが "マイフィルタ" であるときは、次のようにする。 > + :set makeprg=gmake\ \\\|\ マイフィルタ +< 引数が挿入される場所を指定するには、"$*" を (複数回でも) 使える。例: > + :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} < 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'matchpairs'* *'mps'* -'matchpairs' 'mps' 文字列 (default "(:),{:},[:]") +'matchpairs' 'mps' 文字列 (既定では "(:),{:},[:]") バッファについてローカル {Vi にはない} - Characters that form pairs. The |%| command jumps from one to the - other. Currently only single character pairs are allowed, and they - must be different. The characters must be separated by a colon. The - pairs must be separated by a comma. Example for including '<' and '>' - (HTML): > + 括弧などの組を構成する文字。コマンド |%| で片方からもう片方にジャンプ + する。現在のところ、互いに異なる1文字ずつの組のみが指定可能である。文 + 字はコロンで区切らなければならない。組はコンマで区切って指定する。値に + '<' と '>' を設定する例 (HTML用): > :set mps+=<:> -< A more exotic example, to jump between the '=' and ';' in an - assignment, useful for languages like C and Java: > +< さらに興味深い例は、代入文の '=' と ';' の間でジャンプするもので、Cや + Java等の言語で便利である。 > :au FileType c,cpp,java set mps+==:; -< For a more advanced way of using "%", see the matchit.vim plugin in - the $VIMRUNTIME/macros directory. |add-local-help| +< コマンド "%" のさらに発展的な使用法については、ディレクトリ + $VIMRUNTIME/macros 内のプラグイン matchit.vim を参照。 + |add-local-help| *'matchtime'* *'mat'* 'matchtime' 'mat' 数値 (既定では 5) グローバル - {Vi にはない}{in Nvi} - Tenths of a second to show the matching paren, when 'showmatch' is - set. Note that this is not in milliseconds, like other options that - set a time. This is to be compatible with Nvi. + {Vi にはない}{Nvi で使われる} + オプション 'showmatch' がオンのとき、マッチしている括弧を表示するため + の時間を0.1秒単位で指定する。Note このオプションでは、他の時間関係のオ + プションと違い、単位がミリ秒でないので注意。これは Nvi との互換性を保 + つためである。 *'maxfuncdepth'* *'mfd'* 'maxfuncdepth' 'mfd' 数値 (既定では 100) グローバル {Vi にはない} - Maximum depth of function calls for user functions. This normally - catches endless recursion. When using a recursive function with - more depth, set 'maxfuncdepth' to a bigger number. But this will use - more memory, there is the danger of failing when memory is exhausted. - See also |:function|. + ユーザ定義関数の関数呼び出しの深さの最大値。これは普通、終わらない再帰 + 呼び出しを捉えるために使われる。関数のさらに深い再帰呼び出しを使うとき + は、オプション 'maxfuncdepth' に、さらに大きい値を設定すること。しかし + こうするとメモリを余計に消費するので、メモリを使い果たしたときに落ちる + 危険がある。 + |:function| も参照。 *'maxmapdepth'* *'mmd'* *E223* 'maxmapdepth' 'mmd' 数値 (既定では 1000) グローバル {Vi にはない} - Maximum number of times a mapping is done without resulting in a - character to be used. This normally catches endless mappings, like - ":map x y" with ":map y x". It still does not catch ":map g wg", - because the 'w' is used before the next mapping is done. See also - |key-mapping|. + マッピングに対するマッピングを、文字が使われるまでに繰り返す回数の最大 + 値。これは普通、":map x y" と ":map y x" のような堂々巡りで終わらない + マッピングを捉えるために使われる。しかしこれは ":map g wg" 等は捉えな + い。それは次のマッピングが行われる前に 'w' が使われているからである。 + |key-mapping| も参照。 *'maxmem'* *'mm'* -'maxmem' 'mm' 数値 (default between 256 to 5120 (system - dependent) or half the amount of memory - available) +'maxmem' 'mm' 数値 (既定では 256 から 5120 の間 (システムによって + 異なる) または利用できるメモリの半分) グローバル {Vi にはない} - Maximum amount of memory (in Kbyte) to use for one buffer. When this - limit is reached allocating extra memory for a buffer will cause - other memory to be freed. Maximum value 2000000. Use this to work - without a limit. Also see 'maxmemtot'. + 1つのバッファに使用できるメモリの最大値 (キロバイト単位)。この限界に達 + すると、バッファにさらにメモリを割り当てるときには、他のメモリを解放す + る。このオプションの最大値は 2000000 である。限界を設けないときにはこ + の値に設定すること。'maxmemtot' も参照。 *'maxmemtot'* *'mmt'* -'maxmemtot' 'mmt' 数値 (default between 2048 and 10240 (system - dependent) or half the amount of memory - available) +'maxmemtot' 'mmt' 数値 (既定では 2048 から 10240 の間 (システムによっ + て異なる) または利用できるメモリの半分) グローバル {Vi にはない} - Maximum amount of memory (in Kbyte) to use for all buffers together. - Maximum value 2000000. Use this to work without a limit. Also see - 'maxmem'. + 全てのバッファで使用するメモリの合計の最大値 (キロバイト単位)。このオ + プションの最大値は 2000000 である。限界を設けないときにはこの値に設定 + すること。'maxmem' も参照。 *'menuitems'* *'mis'* 'menuitems' 'mis' 数値 (既定では 25) グローバル {Vi にはない} - {Vi mが |+menu| 機能付きでコンパイルされたときのみ使用 - 可能} - Maximum number of items to use in a menu. Used for menus that are - generated from a list of items, e.g., the Buffers menu. Changing this - option has no direct effect, the menu must be refreshed first. + {Vi mが |+menu| 機能付きでコンパイルされたときのみ有効} + メニューの項目数の最大値。自動生成されるメニュー、例えばバッファメニュー + に対して使われる。このオプションを変更しても直接の効果はなく、メニュー + を更新しなければならない。 *'modeline'* *'ml'* *'nomodeline'* *'noml'* -'modeline' 'ml' 切替 (Vim default: on, Vi default: off) +'modeline' 'ml' 切替 (Vimの既定値はオン、Viの既定値はオフ) バッファについてローカル *'modelines'* *'mls'* 'modelines' 'mls' 数値 (既定では 5) グローバル {Vi にはない} - If 'modeline' is on 'modelines' gives the number of lines that is - checked for set commands. If 'modeline' is off or 'modelines' is zero - no lines are checked. See |modeline|. - NOTE: 'modeline' is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + オプション 'modeline' がオンのときは、テキスト中のコマンド ":set" を + 'modelines' に指定された行数だけ調べる。'modeline' がオフであるか、 + 'modelines' が 0 のときは、":set" は調べられない。|modeline| を参照。 + NOTE: 'modeline' は、オプション 'compatible' がオンのときはViの既定値 + に、オフのときはVimの既定値になるので注意。 *'modifiable'* *'ma'* *'nomodifiable'* *'noma'* 'modifiable' 'ma' 切替 (既定ではオン) バッファについてローカル {Vi にはない} *E21* - When off the buffer contents cannot be changed. The 'fileformat' and - 'fileencoding' options also can't be changed. - Can be reset with the |-M| command line argument. + オフのときは、バッファの内容が変更できなくなる。オプション + 'fileformat' と 'fileencoding' も変更できなくなる。 + コマンドライン引数 |-M| でオフに設定できる。 *'modified'* *'mod'* *'nomodified'* *'nomod'* 'modified' 'mod' 切替 (既定ではオフ) バッファについてローカル {Vi にはない} - When on, the buffer is considered to be modified. This option is set - when: - 1. A change was made to the text since it was last written. Using the - |undo| command to go back to the original text will reset the - option. But undoing changes that were made before writing the - buffer will set the option again, since the text is different from - when it was written. - 2. 'fileformat' or 'fileencoding' is different from its original - value. The original value is set when the buffer is read or - written. A ":set nomodified" command also resets the original - values to the current values and the 'modified' option will be - reset. - When 'buftype' is "nowrite" or "nofile" this option may be set, but - will be ignored. + オンのとき、バッファは変更を受けたものとされる。これは以下のようなとき + にオンになる。 + 1. 最後に書き込みをした後にテキストが変更されたとき。|undo| をするコマ + ンドで元の状態まで戻ったときは、このオプションはオフになる。しかし + 書き込みより前の編集を undo すると、再びこのオプションはオンになる。 + テキストが最後に書き込まれたときと異なっているからである。 + 2. オプション 'fileformat' や 'fileencoding' が元の値と異なっていると + き。元の値とは、バッファが読み込まれたり書き込まれたときに設定され + た値である。コマンド ":set nomodified" は 'fileformat' や + 'fileencoding' を現在の値に設定し、'modified' をオフにする。 + 'buftype' が "nowrite" または "nofile" であるときもこのオプションを設 + 定できるが、無視される。 *'more'* *'nomore'* -'more' 切替 (Vim default: on, Vi default: off) +'more' 切替 (Vimの既定値: オン、Viの既定値: オフ) グローバル {Vi にはない} - When on, listings pause when the whole screen is filled. You will get - the |more-prompt|. When this option is off there are no pauses, the - listing continues until finished. - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + オンのときは、一覧表示で画面が一杯になったときは一旦停止し、「継続」プ + ロンプト |more-prompt| を表示する。オフのときは停止せず、最後まで表示 + する。 + NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 + 値に、オフのときはVimの既定値になるので注意。 *'mouse'* -'mouse' 文字列 (default "", "a" for GUI, MS-DOS and Win32) - グローバル - {Vi にはない} - Enable the use of the mouse. Only works for certain terminals - (xterm, MS-DOS, Win32 |win32-mouse|, qnx pterm, and Linux console - with gpm). For using the mouse in the GUI, see |gui-mouse|. - The mouse can be enabled for different modes: - n Normal mode - v Visual mode - i Insert mode - c Command-line mode - h all previous modes when editing a help file - a all previous modes - r for |hit-enter| and |more-prompt| prompt - Normally you would enable the mouse in all four modes with: > +'mouse' 文字列 (既定では "", MS-DOS, Win32とGUI版では "a") + グローバル + {Vi にはない} + オンのとき、マウスが利用可能になる。特定のターミナルでのみ有効である + (xterm, MS-DOS, Win32 |win32-mouse|, qnx pterm または gpm 付きの Linux + コンソール)。GUIでマウスを使うことについては、|gui-mouse| を参照。 + マウスの利用はモードごとに設定できる。 + n Normalモード + v Visualモード + i Insertモード + c Command-lineモード + h ヘルプファイルを閲覧しているときの上記の4モード全て + a 上記の4モード全て + r 「続けるには」プロンプト |hit-enter| および「継続」プ + ロンプト |more-prompt| が出ているとき + 普通、次のようにしてマウスを4モード全てで利用可能にする。 > :set mouse=a -< When the mouse is not enabled, the GUI will still use the mouse for - modeless selection. This doesn't move the text cursor. +< マウスを有効にしていなくても、GUI版ではモードレスセレクションにマウス + を使うことができる。しかしこのときにはカーソルは動かない。 - See |mouse-using|. Also see |'clipboard'|. + |mouse-using| を参照。またオプション 'clipboard' も参照。 - Note: When enabling the mouse in a terminal, copy/paste will use the - "* register if there is access to an X-server. The xterm handling of - the mouse buttons can still be used by keeping the shift key pressed. - Also see the 'clipboard' option. + Note: ターミナルでマウスを有効にすると、Xサーバにアクセスできるならば + コピー/張り付けではレジスタ "* を使うことに注意。マウスボタンの xterm + 風の操作は、シフトキーを押したままにすることで実現できる。 + 'clipboard' も参照。 *'mousefocus'* *'mousef'* *'nomousefocus'* *'nomousef'* 'mousefocus' 'mousef' 切替 (既定ではオフ) グローバル {Vi にはない} - {only works in the GUI} - The window that the mouse pointer is on is automatically activated. - When changing the window layout or window focus in another way, the - mouse pointer is moved to the window with keyboard focus. Off is the - default because it makes using the pull down menus a little goofy, as - a pointer transit may activate a window unintentionally. + {Vi mのGUI版でのみ有効} + オンのときは、マウスカーソルのおかれたウィンドウが自動的にアクティブに + なる。マウス以外でウィンドウ配置やウィンドウフォーカスを変更すると、マ + ウスカーソルはキーボードフォーカスと共に移動する。既定ではオフだが、こ + れはマウスカーソルを動かして予期しないウィンドウをアクティブにしてしま + うことがあるため、プルダウンメニューの利用を少し面倒にするからである。 *'mousehide'* *'mh'* *'nomousehide'* *'nomh'* 'mousehide' 'mh' 切替 (既定ではオン) グローバル {Vi にはない} - {only works in the GUI} - When on, the mouse pointer is hidden when characters are typed. - The mouse pointer is restored when the mouse is moved. + {Vi mのGUI版でのみ有効} + オンのとき、文字が入力されるときにはマウスカーソルが隠される。マウスが + 動くとマウスカーソルは再び現れる。 *'mousemodel'* *'mousem'* -'mousemodel' 'mousem' 文字列 (default "extend", "popup" for MS-DOS and Win32) - グローバル - {Vi にはない} - Sets the model to use for the mouse. The name mostly specifies what - the right mouse button is used for: - extend Right mouse button extends a selection. This works - like in an xterm. - popup Right mouse button pops up a menu. The shifted left - mouse button extends a selection. This works like - with Microsoft Windows - popup_setpos Like "popup", but the cursor will be moved to the - position where the mouse was clicked, and thus the - selected operation will act upon the clicked object. - If clicking inside a selection, that selection will - be acted upon, ie. no cursor move. This implies of - course, that right clicking outside a selection will - end Visual mode. - Overview of what button does what for each model: - mouse extend popup(_setpos) ~ - left click place cursor place cursor - left drag start selection start selection - shift-left search word extend selection - right click extend selection popup menu (place cursor) - right drag extend selection - - middle click paste paste - - In the "popup" model the right mouse button produces a pop-up menu. - You need to define this first, see |popup-menu|. - - Note that you can further refine the meaning of buttons with mappings. - See |gui-mouse-mapping|. But mappings are NOT used for modeless - selection (because that's handled in the GUI code directly). - - The 'mousemodel' option is set by the |:behave| command. +'mousemodel' 'mousem' 文字列 (既定では "extend", MS-DOSとWin32では "popup") + グローバル + {Vi にはない} + マウスの動作モデルを設定する。モデル名は主にマウスの右クリックで行われ + る動作を表している。 + extend 右クリックで選択範囲を広げる。これは xterm と同様の動 + 作である。 + popup 右クリックでポップアップメニューを表示する。シフト+左 + クリックで選択範囲を広げる。これは MS-Windows のような + 動作になる。 + popup_setpos "popup" と似ているが、カーソルが右クリックした場所に移 + 動する。その結果、選択範囲を対象とする操作が (訳注: マ + ウスのドラッグで選択した範囲ではなく) クリックしたオブ + ジェクトに対して働くようになる。 + 元々操作の対象となるはずの選択範囲内を右クリックしたと + きは、カーソルは移動しない。もちろん、選択範囲の外側を + 左クリックすればVisualモードは終了する。 + それぞれのモデルでの、マウス操作の働きの一覧: + マウス操作 extend popup(_setpos) ~ + 左クリック カーソル移動 カーソル移動 + 左ドラッグ 選択開始 選択開始 + シフト+左 単語検索 選択範囲の拡張 + 右クリック 選択範囲の拡張 メニュー (カーソル移動) + 右ドラッグ 選択範囲の拡張 なし + 中央クリック 張り付け 張り付け + + "popup" モデルでは、右クリックでポップアップメニューを表示する。これは + 先に定義しておかなければならない。|popup-menu| を参照。 + + Note マウス操作による動作は、マッピングでさらに詳しく設定できることに + 注意。|gui-mouse-mapping| を参照。しかしマッピングはモードレスセレクショ + ンには「使われない」 (GUIそのものの機能であるため)。 + + オプション 'mousemodel' は、コマンド |:behave| で設定できる。 *'mouseshape'* *'mouses'* -'mouseshape' 'mouses' 文字列 (default "i:beam,r:beam,s:updown,sd:cross, +'mouseshape' 'mouses' 文字列 (既定では "i:beam,r:beam,s:updown,sd:cross, m:no,v:rightup-arrow" グローバル {Vi にはない} {Vi mが |+mouseshape| 機能付きでコンパイルされたときの - み使用可能} - This option tells Vim what the mouse pointer should look like in - different modes. The option is a comma separated list of parts, much - like used for 'guicursor'. Each part consist of a mode/location-list - and an argument-list: - mode-list:shape,mode-list:shape,.. - The mode-list is a dash separated list of these modes/locations: - In a normal window: ~ - n Normal mode - v Visual mode - ve Visual mode with 'selection' "exclusive" (same as 'v', - if not specified) - o Operator-pending mode - i Insert mode - r Replace mode - - Others: ~ - c appending to the command-line - ci inserting in the command-line - cr replacing in the command-line - m At the 'Hit ENTER' or 'More' prompts - e any mode, pointer below last window - s any mode, pointer on a status line - sd any mode, while dragging a status line - vs any mode, pointer on a vertical separator line - vd any mode, while dragging a vertical separator line - a everywhere - - The shape is one of the following: - avail name looks like ~ - w x arrow Normal mouse pointer - w x blank no pointer at all (use with care!) - w x beam I-beam - w x updown up-down sizing arrows - w x leftright left-right sizing arrows - w x busy The system's usual busy pointer - w x no The system's usual 'no input' pointer - x udsizing indicates up-down resizing - x lrsizing indicates left-right resizing - x crosshair like a big thin + - x hand1 white hand - x hand2 black hand - x pencil what you write with - x question big ? - x rightup-arrow arrow pointing right-up - w x up-arrow arrow pointing up - x <number> any X11 pointer number (see X11/cursorfont.h) - - The "avail" column contains a 'w' if the shape is available for Win32, - x for X11. - Any modes not specifed or shapes not available use the normal mouse - pointer. - - Example: > + み有効} + それぞれのモードでのマウスカーソルの外観を設定する。値はコンマ区切りの + 指定部のリストであり、オプション 'guicursor' に使われるものと大分似て + いる。指定部は、次のような状態リストと外観設定からなる。 + 状態リスト:外観,状態リスト:外観,.. + 状態リストは、以下のモードまたはカーソル位置のダッシュ '-' 区切りのリ + ストである。 + 普通のウィンドウ内: ~ + n Normalモード + v Visualモード + ve 'selection' に "exclusive" が含まれているときのVisual + モード (指定されなければ 'v' と同じ設定になる) + o Operator-pendingモード + i Insertモード + r Replaceモード + + その他: ~ + c コマンドラインへの追加時 + ci コマンドラインへの挿入時 + cr コマンドラインでの置換時 + m 「続けるには」プロンプトまたは「継続」プロンプト表示中 + e 全てのモードにおいて、マウスカーソルが最下ウィンドウよ + りも下に置かれているとき + s 全てのモードにおいて、マウスカーソルがステータス行に置 + かれているとき + sd 全てのモードにおいて、ステータス行をドラッグ中のとき + vs 全てのモードにおいて、マウスカーソルが垂直分割の区切り + 行に置かれているとき + vd 全てのモードにおいて、垂直分割区切りをドラッグ中のとき + a あらゆる場所 + + 指定可能なマウスカーソルの形は以下の通りである。 + avail 名前 外見 ~ + w x arrow 普通のマウスカーソル + w x blank カーソルなし (注意して使うこと!) + w x beam I 状の縦棒 + w x updown 上下のサイズ変更矢印 + w x leftright 左右のサイズ変更矢印 + w x busy システムの「待ち」カーソル + w x no システムの「入力不可」カーソル + x udsizing 上下のサイズ変更を示す + x lrsizing 左右のサイズ変更を示す + x crosshair 大きくて細い + + x hand1 白い手 + x hand2 黒い手 + x pencil 文字を書くときの、あの鉛筆 + x question 大きな ? + x rightup-arrow 右上向き矢印 + w x up-arrow 上向き矢印 + x <number> 任意の X11 のカーソルナンバー + (X11/cursorfont.h を参照) + + 上の "avail" という項目は、 'w' ならばそのマウスカーソルをWin32で利用 + でき、'x' ならばX11で利用できることを表す。 + 指定されなかったモードや、利用不可能なカーソルを指定されたモードでは、 + 通常のマウスカーソルを使う。 + + 例: > :set mouseshape=s:size,m:no -< will make the mouse turn to a sizing arrow over the status lines and - indicate no input when the hit-enter prompt is displayed (since - clicking the mouse has no effect in this state.) +< とすると、マウスカーソルはステータス行の上ではサイズ変更を表す形になり、 + 「続けるには」プロンプトが表示されているときには入力不可を表す (この状 + 態ではマウスクリックに効果がないので)。 *'mousetime'* *'mouset'* 'mousetime' 'mouset' 数値 (既定では 500) グローバル {Vi にはない} - Only for GUI, MS-DOS, Win32 and Unix with xterm. Defines the maximum - time in msec between two mouse clicks for the second click to be - recognized as a multi click. + GUI版, MS-DOS, Win32とUnixのxtermでのみ有効。ダブルクリックなどとして + 認識されるクリックとクリックの間の時間を、ミリ秒単位で設定する。 *'nrformats'* *'nf'* -'nrformats' 'nf' 文字列 (default "octal,hex") +'nrformats' 'nf' 文字列 (既定では "octal,hex") バッファについてローカル {Vi にはない} - This defines what bases Vim will consider for numbers when using the - CTRL-A and CTRL-X commands for adding to and subtracting from a number - respectively; see |CTRL-A| for more info on these commands. - alpha if included, single alphabetical characters will be - incremented or decremented. This is useful for a list with a - letter index a), b), etc. - octal if included, numbers that start with a zero will be considered - to be octal. Example: Using CTRL-A on "007" results in "010". - hex if included, numbers starting with "0x" or "0X" will be - considered to be hexadecimal. Example: Using CTRL-X on - "0x100" results in "0x0ff". - 数値s which simply begin with a digit in the range 1-9 are always - considered decimal. This also happens for numbers that are not - recognized as octal or hex. + テキスト内の数をコマンド CTRL-A や CTRL-X で増減させるとき、 Vimに何を + 数として認識させるかを設定する。これらのコマンドの詳しい情報については + |CTRL-A| を参照。 + alpha これが含まれると、単一のアルファベットも増減操作を受ける。これ + は a), b) 等の、文字を使ったリストに対して便利である。 + octal これが含まれると、0 で始まる数は8進数として認識される。例: + "007"の上で CTRL-A を使うと "010" となる。 + hex これが含まれると、"0x" や "0X" で始まる数は16進数として認識さ + れる。例: "0x100" の上で CTRL-X を使うと "0x0ff" となる。 + 1 から 9 の数字で始まる数は、常に10進数として認識される。8進数または16 + 進数として認識されない数も10進数として認識される。 *'number'* *'nu'* *'nonumber'* *'nonu'* 'number' 'nu' 切替 (既定ではオフ) ウィンドウについてローカル - Print the line number in front of each line. When the 'n' option is - excluded from 'cpoptions' a wrapped line will not use the column of - line numbers (this is the default when 'compatible' isn't set). - When a long, wrapped line doesn't start with the first character, '-' - characters are put before the number. - See |hl-LineNr| for the highlighting used for the number. + 毎行の前に行番号を表示する。オプション 'cpoptions' にフラグ 'n' が含ま + れていないときは、折り返された行の先頭は行番号の表示される桁に入り込ま + ない ('compatible' がオフのときはこれが既定である)。折り返された行が長 + すぎて (訳注: 行の途中の部分だけで画面一杯になってしまい) 行の本当の先 + 頭の文字が表示されていないときは、文字 '-' が行番号の前に表示される。 + 行番号に使われる強調表示グループについては |hl-LineNr| を参照。 *'osfiletype'* *'oft'* *E366* -'osfiletype' 'oft' 文字列 (RISC-OS default: "Text", - others default: "") +'osfiletype' 'oft' 文字列 (RISC-OSでの既定値: "Text", + 他のシステムでの既定値: "") バッファについてローカル {Vi にはない} {Vi mが |+osfiletype| 機能付きでコンパイルされたときの - み使用可能} - Some operating systems store extra information about files besides - name, datestamp and permissions. This option contains the extra - information, the nature of which will vary between systems. - The value of this option is usually set when the file is loaded, and - use to set the file type when file is written. - It can affect the pattern matching of the automatic commands. - |autocmd-osfiletypes| + み有効} + オペレーティングシステム (OS) によっては、ファイル名や日付スタンプ、パー + ミッションの他にファイルに関する付属情報を保存している場合がある。この + オプションは、そういったシステムごとに形式の違う付属情報を格納する。 + このオプションの値は、普通はファイルの読み込み時に設定され、ファイルを + 書き込むときにファイルタイプを設定するのに使われる。 + また、autocommand のパターンマッチにも影響する |autocmd-osfiletypes|。 *'paragraphs'* *'para'* -'paragraphs' 'para' 文字列 (default "IPLPPPQPP LIpplpipbp") +'paragraphs' 'para' 文字列 (既定では "IPLPPPQPP LIpplpipbp") グローバル - Specifies the nroff macros that separate paragraphs. These are pairs - of two letters (see |object-motions|). + Nroff (訳注: UNIXで使われる画面整形システム) で使われる、段落を分ける + ためのマクロを指定する。値は2文字の組である (|object-motions| を参照)。 *'paste'* *'nopaste'* 'paste' 切替 (既定ではオフ) グローバル {Vi にはない} - Put Vim in Paste mode. This is useful if you want to cut or copy - some text from one window and paste it in Vim. This will avoid - unexpected effects. - Setting this option is useful when using Vim in a terminal, where Vim - cannot distinguish between typed text and pasted text. In the GUI, Vim - knows about pasting and will mostly do the right thing without 'paste' - being set. The same is true for a terminal where Vim handles the - mouse clicks itself. - When the 'paste' option is switched on (also when it was already on): - - mapping in Insert mode and Command-line mode is disabled - - abbreviations are disabled - - 'textwidth' is set to 0 - - 'wrapmargin' is set to 0 - - 'autoindent' is reset - - 'smartindent' is reset - - 'softtabstop' is set to 0 - - 'revins' is reset - - 'ruler' is reset - - 'showmatch' is reset - - 'formatoptions' is used like it is empty - These options keep their value, but their effect is disabled: + オンにするとVimはPasteモードに移行する。これはテキストを別のウィンドウ + から切り取ったりコピーして、Vim内に張り付けたいときに便利であり、予想 + しない作用を避けることができる。 + このオプションはVimをターミナルで使っているときに便利である。ターミナ + ルでは打ち込まれたテキストと張り付けられたテキストの区別がつかないから + だ。GUI版のVimでは張り付け時にすべき動作を知っているので、'paste' がオ + フでも大抵うまくいく。Vimがマウスクリックを扱えるようなターミナルでも + 同様にうまくいく。 + 'paste' がオンのときは、以下のように設定が変わる。 + - InsertモードとCommand-lineモードでのマッピングが無効になる + - 略語展開が無効になる + - 'textwidth' が 0 になる + - 'wrapmargin' が 0 になる + - 'autoindent' がオフになる + - 'smartindent' がオフになる + - 'softtabstop' が 0 になる + - 'revins' がオフになる + - 'ruler' がオフになる + - 'showmatch' がオフになる + - 'formatoptions' が空のときのような動作になる + 以下のオプションの値に変化はないが、働きは無効になる。 - 'lisp' - 'indentexpr' - 'cindent' - NOTE: When you start editing another file while the 'paste' option is - on, settings from the modelines or autocommands may change the - settings again, causing trouble when pasting text. You might want to - set the 'paste' option again. - When the 'paste' option is reset the mentioned options are restored to - the value before the moment 'paste' was switched from off to on. - Resetting 'paste' before ever setting it does not have any effect. - Since mapping doesn't work while 'paste' is active, you need to use - the 'pastetoggle' option to toggle the 'paste' option with some key. + NOTE: 'paste' がオンのときに別のファイルの編集を始めると、モードライン + や autocommand によって設定が再び変わり、張り付け時に問題が起きること + があるので注意。そのときは 'paste' を再びオンにするとよいだろう。 + 'paste' をオフにすると、上記のオプションの設定は 'paste' がオンになっ + た時点の前の状態に復元される。 + 'paste' をオンにする前にオフにしても何の効果もない。 + 'paste' がオンの間はマッピングが無効になるので、どれかのキーで 'paste' + を切り替えるには 'pastetoggle' を使う必要がある。 *'pastetoggle'* *'pt'* 'pastetoggle' 'pt' 文字列 (既定では "") グローバル {Vi にはない} - When non-empty, specifies the key sequence that toggles the 'paste' - option. This is like specifying a mapping: > + 空でないとき、オプション 'paste' を切り替えるキー列を指定する。これは + 以下のようなマッピングの設定に似ている。 > :map {keys} :set invpaste<CR> -< Where {keys} is the value of 'pastetoggle'. - The difference is that it will work even when 'paste' is set. - 'pastetoggle' works in Insert mode and Normal mode, but not in - Command-line mode. - Mappings are checked first, thus overrule 'pastetoggle'. However, - when 'paste' is on mappings are ignored in Insert mode, thus you can do - this: > +< ここで {keys} は 'pastetoggle' の値が当てはまる。 + 違うのは、こちらは 'paste' がオンでも有効だという点だ。 + 'pastetoggle' はInsertモードとNormalモードで有効だが、Command-lineモー + ドでは無効である。 + マッピングが最初に調べられるので、'pastetoggle' を上書きできる。しかし + 'paste' がオンならばInsertモードでマッピングは無視されるので、以下のよ + うな設定が可能である。 > :map <F10> :set paste<CR> :map <F11> :set nopaste<CR> :imap <F10> <C-O>:set paste<CR> :imap <F11> <nop> :set pastetoggle=<F11> -< This will make <F10> start paste mode and <F11> stop paste mode. - Note that typing <F10> in paste mode inserts "<F10>", since in paste - mode everything is inserted literally, except the 'pastetoggle' key - sequence. +< こうすると <F10> でPasteモードが始まり、<F11> でPasteモードが終わる。 + Note Pasteモードで <F10> を入力すると "<F10>" が挿入されるので注意。こ + れは、Pasteモードでは 'pastetoggle' で指定されたキー列以外は全てそのま + ま挿入されるからである。 *'pex'* *'patchexpr'* 'patchexpr' 'pex' 文字列 (既定では "") グローバル {Vi にはない} - {Vi mが |+diff| 機能付きでコンパイルされたときのみ使用 - 可能} - Expression which is evaluated to apply a patch to a file and generate - the resulting new version of the file. See |diff-patchexpr|. + {Vi mが |+diff| 機能付きでコンパイルされたときのみ有効} + ファイルにパッチを適用し、ファイルの新しいヴァージョンを生成するために + 使われる expression。|diff-patchexpr| を参照。 *'patchmode'* *'pm'* *E206* 'patchmode' 'pm' 文字列 (既定では "") グローバル {Vi にはない} - When non-empty the oldest version of a file is kept. This can be used - to keep the original version of a file if you are changing files in a - source distribution. Only the first time that a file is written a - copy of the original file will be kept. The name of the copy is the - name of the original file with the string in the 'patchmode' option - appended. This option should start with a dot. Use a string like - ".org". 'backupdir' must not be empty for this to work (Detail: The - backup file is renamed to the patchmode file after the new file has - been successfully written, that's why it must be possible to write a - backup file). If there was no file to be backed up, an empty file is - created. - When the 'backupskip' pattern matches, a patchmode file is not made. - Using 'patchmode' for compressed files appends the extension at the - end (e.g., "file.gz.orig"), thus the resulting name isn't always - recognized as a compressed file. + 値が空でないとき、ファイルの最も古いヴァージョンが保管されるようになる。 + ソース配布物内のファイルに変更を加えたとき、元のヴァージョンを取ってお + きたいならこれを使う。最初にファイルが書き込まれたときのみ、元のファイ + ルのコピーが作られる。コピーのファイル名は、元のファイル名の後に + 'patchmode' の値を付け加えたものである。このオプションの値はドットで始 + めるようにすべきである。".org" 等を使うこと。この機能を使うには、 + 'backupdir' が空であってはならない (詳細: 変更後のファイルの書き込みが + 成功してから、バックアップファイルがオリジナルをコピーしたファイルにリ + ネームされるため、バックアップファイルを生成できなければならない)。バッ + クアップすべきファイルがないときは、空ファイルが作られる。 + 'backupskip' がファイル名にマッチしたときは、元のファイルは保管されな + い。 + 圧縮ファイルに 'patchmode' を使うと、ファイル名末尾に拡張子が付けられ + るので (例えば "file.gz.orig")、その結果できたファイルは必ずしも圧縮ファ + イルとは認識されなくなってしまう。 *'path'* *'pa'* *E343* *E345* *E347* -'path' 'pa' 文字列 (default on Unix: ".,/usr/include,," - on OS/2: ".,/emx/include,," - other systems: ".,,") +'path' 'pa' 文字列 (Unixでの既定値: ".,/usr/include,," + OS/2での既定値: ".,/emx/include,," + 他のシステムでの既定値: ".,,") グローバル/バッファについてローカル |global-local| {Vi にはない} - This is a list of directories which will be searched when using the - |gf|, [f, ]f, ^Wf, |:find| and other commands, provided that the file - being searched for has a relative path (not starting with '/'). The - directories in the 'path' option may be relative or absolute. - - Use commas to separate directory names: > + 値はディレクトリのリストであり、コマンド |gf|, [f, ]f, ^Wf, |:find| 等 + で、検索されるファイルが相対パス ('/' で始まらないパス --訳注: + MS-Windowsでは "C:/" 等で始まらないパス) で指定されたときに使われるも + のである。オプション 'path' にディレクトリを指定するには、相対パスでも + 絶対パスでもよい。 + - 複数のディレクトリ名はコンマで区切る。 > :set path=.,/usr/local/include,/usr/include -< - Spaces can also be used to separate directory names (for backwards - compatibility with version 3.0). To have a space in a directory - name, precede it with an extra backslash, and escape the space: > +< - 区切りには空白も使える (Vim version 3.0 との後方互換性のため)。中に + 空白を含んだディレクトリ名を指定するには、空白の前に余分に '\' (訳注: + |option-backslash| を参照) を置き、その上で空白と '\' を '\' でエス + ケープすること。 > :set path=.,/dir/with\\\ space -< - To include a comma in a directory name precede it with an extra - backslash: > + (訳注: 結果は ".,/dir/with\ space") +< - 中にコンマを含んだディレクトリ名を指定するには、コンマの前に余分に + '\' を置き、その上で '\' を '\' でエスケープすること。 > :set path=.,/dir/with\\,comma -< - To search relative to the directory of the current file, use: > + (訳注: 結果は ".,/dir/with\,comma") +< - カレントファイルに対し相対的にディレクトリを指定するには、こうする。 > :set path=. -< - To search in the current directory use an empty string between two - commas: > +< - カレントディレクトリを指定するには、2個のコンマで空文字列を挟む。 > :set path=,, -< - A directory name may end in a ':' or '/'. - - Environment variables are expanded |:set_env|. - - When using |netrw.vim| URLs can be used. For example, adding - "http://www.vim.org" will make ":find index.html" work. - - Search upwards and downwards in a directory tree: - 1) "*" matches a sequence of characters, e.g.: > +< - ディレクトリ名の末尾は ':' や '/' でもよい。 + - 環境変数は展開される |:set_env|。 + - 公式プラグイン |netrw.vim| を使っているときはURLも指定できる。例えば + "http://www.vim.org" を追加すると ":find index.html" とすることがで + きる。 + - 以下のように、ディレクトリツリーの上下に向かって検索できる。 + 1) "*" は文字の列にマッチする。例: > :set path=/usr/include/* -< means all subdirectories in /usr/include (but not /usr/include - itself). > +< とすると /usr/include 直下の全てのサブディレクトリにマッチする + (しかし /usr/include 自身にはマッチしない)。 > :set path=/usr/*c -< matches /usr/doc and /usr/src. - 2) "**" matches a subtree, up to 100 directories deep. Example: > +< とすると /usr/doc と /usr/src 等にマッチする。 + 2) "**" は深さが100段階までのサブツリー (訳注: そのディレクトリ以下 + のディレクトリの全体) にマッチする。例: > :set path=/home/user_x/src/** -< means search in the whole subtree under "/home/usr_x/src". - 3) If the path ends with a ';', this path is the startpoint - for upward search. - See |file-searching| for more info and exact syntax. - {not available when compiled without the |+path_extra| feature} - - Careful with '\' characters, type two to get one in the option: > +< とすると "/home/usr_x/src" 以下のディレクトリ全体を検索する。 + 3) パスの末尾が ';' だと、そのパスより上のディレクトリを検索する。 + 詳しい情報と正確な指定方法については |file-searching| を参照。 + {Vi mが |+path_extra| 機能付きでコンパイルされたときのみ有効} + - 文字 '\' の扱いには注意。オプションの値に '\' を1個含めるには、次の + ように2個打ち込む。 > :set path=.,c:\\include -< Or just use '/' instead: > +< または、次のように代わりに '/' を使う。 > :set path=.,c:/include -< Don't forget "." or files won't even be found in the same directory as - the file! - The maximum length is limited. How much depends on the system, mostly - it is something like 256 or 1024 characters. - You can check if all the include files are found, using the value of - 'path', see |:checkpath|. - The use of |:set+=| and |:set-=| is preferred when adding or removing - directories from the list. This avoids problems when a future version - uses another default. To remove the current directory use: > +< 値に "." を含めるのを忘れないこと!そうしないと、カレントファイルと同 + じディレクトリ内のファイルさえも発見できない! + 値の長さには制限がある。システムごとに異なるが、大抵は256文字か1024文 + 字等の長さである (訳注: これは半角の場合で、全角では半分)。 + 'path' でインクルードしたファイルを全て発見できているかどうかについて + は、|:checkpath| を参照。 + リストにディレクトリを追加するときにはコマンド |:set+=|、リストからディ + レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来 + のヴァージョンで異なった既定値が使われるようになったときに、問題が起き + るのを防げる。ただしカレントディレクトリを取り除くには次のようにする。 > :set path-= -< To add the current directory use: > +< またカレントディレクトリを追加するには次のようにする。 > :set path+= -< To use an environment variable, you probably need to replace the - separator. Here is an example to append $INCL, in which directory - names are separated with a semi-colon: > +< 環境変数を使うには、その中の区切り文字を変える必要があるだろう。次のも + のは環境変数 $INCL を追加する例だが、その中ではディレクトリ名はセミコ + ロン ';' で区切られているとする。 > :let &path = &path . "," . substitute($INCL, ';', ',', 'g') -< Replace the ';' with a ':' or whatever separator is used. Note that - this doesn't work when $INCL contains a comma or white space. +< 文字 ';' を ':' または指定可能な区切り文字で置換する。 Note この方法 + は、$INCL がコンマや空白を含んでいるときには使えないので注意。 *'previewheight'* *'pvh'* -'previewheight' 'pvh' 数値 (default 12) +'previewheight' 'pvh' 数値 (既定では 12) グローバル {Vi にはない} - {not available when compiled without the |+windows| or - |+quickfix| feature} - Default height for a preview window. Used for |:ptag| and associated - commands. Used for |CTRL-W_}| when no count is given. + {Vi mが |+windows| 機能と |+quickfix| 機能付きでコンパ + イルされたときのみ有効} + プレビューウィンドウの高さの既定値。コマンド |:ptag| とその関連コマン + ドで使われる。|CTRL-W_}| にカウントが指定されなかったときもこれが使わ + れる。 *'previewwindow'* *'nopreviewwindow'* *'pvw'* *'nopvw'* 'previewwindow' 'pvw' 切替 (既定ではオフ) ウィンドウについてローカル {Vi にはない} - {not available when compiled without the |+windows| or - |+quickfix| feature} - Identifies the preview window. Only one window can have this option - set. It's normally not set directly, but by using one of the commands - |:ptag|, |:pedit|, etc. + {Vi mが |+windows| 機能と |+quickfix| 機能付きでコンパ + イルされたときのみ有効} + このオプションでプレビューウィンドウを決める。ただ1つのウィンドウでの + み、このオプションをオンに設定できる。普通、直接設定されることはないが、 + コマンド |:ptag|, |:pedit| 等を使うと設定される。 *'printdevice'* *'pdev'* -'printdevice' 'pdev' 文字列 (default empty) +'printdevice' 'pdev' 文字列 (既定では空) グローバル {Vi にはない} {Vi mが |+printer| 機能付きでコンパイルされたときのみ - 使用可能} - This defines the name of the printer to be used when the |:hardcopy| - command is issued with a bang (!) to skip the printer selection - dialog. On Win32, it should be the printer name exactly as it appears - in the standard printer dialog. - If the option is empty, then vim will use the system default printer - for ":hardcopy!" + 有効} + このオプションは、コマンド |:hardcopy| が '!' 付きで実行され、プリンタ + 選択ダイアログが省かれたときに使われるプリンタ名を指定する。Win32では、 + 標準のプリンタ選択ダイアログで選択するのと正確に同じプリンタ名であるべ + きである。 + 値が空のときは、Vimは ":hardcopy!" にはシステムの既定プリンタを使う。 *'printexpr'* *'pexpr'* -'printexpr' 'pexpr' 文字列 (default: see below) - グローバル - {Vi にはない} - {only available when compiled with the |+printer| - and |+postscript| features} - Expression that is evaluated to print the PostScript produced with - ":hardcopy". - The file name to be printed is in |v:fname_in|. - The arguments to the ":hardcopy" command are in |v:cmdarg|. - The expression must take care of deleting the file after printing it. - When there is an error, the expression must return a non-zero number. - If there is no error, return zero or an empty string. - The default for non MS-Windows or VMS systems is to simply use "lpr" - to print the file: > +'printexpr' 'pexpr' 文字列 (既定値は、以下を参照) + グローバル + {Vi にはない} + {Vi mが |+printer| 機能と |+postscript| 機能付きでコン + パイルされたときのみ有効} + コマンド ":hardcopy" で生成されるPostScript (PS) ファイルを印刷するた + めに評価される expression を指定する。 + 印刷されるファイル名は変数 |v:fname_in| に格納される。 + ":hardcopy" に対する引数は変数 |v:cmdarg| に格納される。 + 指定した expression は、印刷終了後にPSファイルを削除することまでしなけ + ればならない。 + 指定した expression は、エラーが起きたときは非0の値を、エラーがないと + きは0または空の値を返さなければならない。 + MS-WindowsまたはVMSシステム以外での既定値は、ファイルをプリントするの + に "lpr" を使うだけのものである。 > system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error < - On MS-Windows machines the default is to copy the file to the - currently specified printdevice: > + MS-Windowsでの既定値は、現在指定されているプリンタデバイスにファイルを + コピーするものである。 > system('copy' . ' ' . v:fname_in . ' "' . &printdevice . '"') . delete(v:fname_in) < - On VMS machines the default is to send the file to either the default - or currently specified printdevice: > + VMSでの既定値は、既定のプリンタデバイスまたは現在指定されているプリン + タデバイスのどちらかにファイルを送るものである。 > system('print' . (&printdevice == '' ? '' : ' /queue=' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) < - If you change this option, using a function is an easy way to avoid - having to escape all the spaces. Example: > + このオプションを変更するときは、空白を全てエスケープすることを避けられ + るように、関数を使うと簡単に済む。例: > :set printexpr=PrintFile(v:fname_in) :function PrintFile(fname) @@ -4257,240 +4238,249 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 : return v:shell_error :endfunc -< Be aware that some print programs return control before they have read - the file. If you delete the file too soon it will not be printed. - These programs usually offer an option to have them remove the file - when printing is done. +< 印刷プログラムの中には、印刷するPSファイルを読み込む前に制御を返してく + るものがあるので注意。そのPSファイルの削除が早すぎると、印刷できなくなっ + てしまう。普通、そういったプログラムには、プリント終了後にプログラム自 + 身でPSファイルを削除するオプションがついているので、それを利用すること。 *E365* - If evaluating the expression fails or it results in a non-zero number, - you get an error message. In that case Vim will delete the - file. In the default value for non-MS-Windows a trick is used: Adding - "v:shell_error" will result in a non-zero number when the system() - call fails. + 指定した expression の評価に失敗したり、非0の値が返されたときは、エラー + メッセージが表示される。その場合はVimはPSファイルを削除する。 + MS-Windows以外のシステムでの既定値では、巧妙な技が使われている。変数 + "v:shell_error" を追加すると、関数 system() の呼び出しに失敗したときは + 非0の値が返される。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'printfont'* *'pfn'* *E448* -'printfont' 'pfn' 文字列 (default "courier") +'printfont' 'pfn' 文字列 (既定では "courier") グローバル {Vi にはない} {Vi mが |+printer| 機能付きでコンパイルされたときのみ - 使用可能} - This is the name of the font that will be used for the |:hardcopy| - command's output. It has the same format as the 'guifont' option, - except that only one font may be named, and the special "guifont=*" - syntax is not available. - In the Win32 GUI version this specifies a font name with its extra - attributes, as with the 'guifont' option. - For other systems, only ":h11" is recognized, where "11" is the point - size of the font. When omitted, the points size is 10. + 有効} + コマンド |:hardcopy| の出力に使われるフォント名。値はオプション + 'guifont' と同じ書式で指定する。ただしフォント名は1個だけが指定可能で、 + コマンド "guifont=*" も使えない。 + Win32のGUI版では 'guifont' と同様に、フォント名を付加属性と共に指定で + きる。 + 他のシステムでは、付加属性は ":h11" 等のみが認識される。ここで "11" は + ポイント単位のフォントサイズである。指定されないときは10ポイントが使わ + れる。 *'printheader'* *'pheader'* -'printheader' 'pheader' string (default "%<%f%h%m%=Page %N") +'printheader' 'pheader' 文字列 (既定では "%<%f%h%m%=Page %N") グローバル {Vi にはない} {Vi mが |+printer| 機能付きでコンパイルされたときのみ - 使用可能} - This defines the format of the header produced in |:hardcopy| output. - The option is defined in the same way as the 'statusline' option. - If Vim has not been compiled with the |+statusline| feature, this - option has no effect and a simple default header is used, which shows - the page number. + 有効} + コマンド |:hardcopy| の出力のヘッダの書式を定義する。値の設定方法はオ + プション 'statusline' と同様である。Vimが |+statusline| 機能付きでコン + パイルされていなければ、このオプションの値は無効で、ページ番号を示すだ + けの単純なヘッダが使われる。 *'printoptions'* *'popt'* -'printoptions' 'popt' string (既定では "") - グローバル - {Vi にはない} - {only available when compiled with |+printer| feature} - This is a comma-separated list of items that control the format of - the output of |:hardcopy|: - - left:{spec} left margin (既定では 10pc) - right:{spec} right margin (既定では 5pc) - top:{spec} top margin (既定では 5pc) - bottom:{spec} bottom margin (既定では 5pc) - {spec} is a number followed by "in" for - inches, "pt" for points (1 point is 1/72 of an - inch), "mm" for millimetres or "pc" for a - percentage of the media size. - Weird example: +'printoptions' 'popt' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+printer| 機能付きでコンパイルされたときのみ + 有効} + コマンド |:hardcopy| の出力の書式を設定する以下の項目を、コンマ区切り + のリストで指定する。 + + left:{spec} 左マージン (既定では 10pc) + right:{spec} 右マージン (既定では 5pc) + top:{spec} 上マージン (既定では 5pc) + bottom:{spec} 下マージン (既定では 5pc) + {spec} は数値で、"in" を付けるとインチ単位、 + "pt" を付けるとポイント単位 (1ポイントは1/72イ + ンチに相当)、"mm" を付けるとミリメートル単位に + なる。 + また "pc" を付けると紙のサイズに対するパーセン + ト単位での相対指定になる。 + 変な例: left:2in,top:30pt,right:16mm,bottom:3pc - If the unit is not recognized there is no - error and the default value is used. - - header:{nr} 数値 of lines to reserve for the header. - Only the first line is actually filled, thus - when {nr} is 2 there is one empty line. The - header is formatted according to - 'printheader'. - header:0 Do not print a header. - header:2 (default) Use two lines for the header - - syntax:n Do not use syntax highlighting. This is - faster and thus useful when printing large - files. - syntax:y Do syntax highlighting. - syntax:a (default) Use syntax highlighting if the printer appears - to be able to print color or grey. - - number:y Include line numbers in the printed output. - number:n (default) No line numbers. - - wrap:y (default) Wrap long lines. - wrap:n Truncate long lines. - - duplex:off Print on one side. - duplex:long (default) Print on both sides (when possible), bind on - long side. - duplex:short Print on both sides (when possible), bind on - short side. - - collate:y (default) Collating: 1 2 3, 1 2 3, 1 2 3 - collate:n No collating: 1 1 1, 2 2 2, 3 3 3 - - jobsplit:n (default) Do all copies in one print job - jobsplit:y Do each copy as a separate print job. Useful - when doing N-up postprocessing. - - portrait:y (default) Orientation is portrait. - portrait:n Orientation is landscape. - - - paper:A4 (default) Paper size: A4 - paper:{name} Paper size from this table: - {name} size in inch ~ - 10x14 10 x 14 - A3 11.69 x 16.54 - A4 8.27 x 11.69 - A5 5.83 x 8.27 - B4 10.12 x 14.33 - B5 7.17 x 10.12 - executive 7.25 x 10.5 - folio 8.27 x 13 - ledger 17 x 11 - legal 8.5 x 14 - letter 8.5 x 11 - quarto 8.5 x 10.83 - statement 5.5 x 8.5 - tabloid 11 x 17 - - The item indicated with (default) is used when the item is not - present. The values are not always used, especially when using a - dialog to select the printer and options. - Example: > + 単位が認識されないときはエラーにはならず、既定 + 値が使われる。 + + header:{nr} ヘッダ印刷用に空けておく行数。 + ヘッダに使われるのは実際は1行のみなので、{nr} + が 2 のときは空行が1行できる。ヘッダはオプショ + ン 'printheader' に従って整形される。 + header:0 ヘッダを印刷しない。 + header:2 (既定) ヘッダに2行使う。 + + syntax:n 構文強調表示を行わない。この方が印刷速度が速い + ので、大きなファイルを印刷するときに便利である。 + syntax:y 構文強調表示を行う。 + syntax:a (既定) プリンタで色つき印刷またはグレー印刷が可能と思 + われるときのみ、構文強調表示を使う。 + + number:y 行番号を印刷する。 + number:n (既定) 行番号を印刷しない。 + + wrap:y (既定) 長い行を折り返す。 + wrap:n 長い行のあふれた部分を切り捨てる。 + + duplex:off 片面印刷をする。 + duplex:long (既定) 可能ならば両面印刷をする。 bind on long side. + (訳注: 意味が分かりません。どなたかご教授下さ + い) + duplex:short 可能ならば両面印刷をする。 bind on short side. + (訳注: 意味が分かりません。どなたかご教授下さ + い) + + collate:y (既定) 何部も印刷するときは一部ごとまとめる。 + 例: 1 2 3, 1 2 3, 1 2 3 + collate:n 同じページは一度に印刷する。 + 例: 1 1 1, 2 2 2, 3 3 3 + + jobsplit:n (既定) 何部も印刷するときにも単一のジョブで印刷する。 + jobsplit:y 何部も印刷するときには別々のジョブで印刷する。 + N-up postprocessing を行うときに便利である。 + (訳注: 意味が分かりません。どなたかご教授下さ + い) + + portrait:y (既定) 紙方向を縦とする。 + portrait:n 紙方向を横とする。 + + + paper:A4 (既定) 紙サイズ: A4 + paper:{name} 紙サイズを以下のように指定する。 + {name} サイズ (インチ単位) (訳注: ミリ単位) ~ + 10x14 10 x 14 254 x 356 + A3 11.69 x 16.54 297 x 420 + A4 8.27 x 11.69 210 x 297 + A5 5.83 x 8.27 148 x 210 + B4 10.12 x 14.33 257 x 364 + B5 7.17 x 10.12 182 x 257 + executive 7.25 x 10.5 184 x 267 + folio 8.27 x 13 210 x 330 + ledger 17 x 11 432 x 279 + legal 8.5 x 14 216 x 356 + letter 8.5 x 11 216 x 279 + quarto 8.5 x 10.8 216 x 275 + statement 5.5 x 8.5 140 x 216 + tabloid 11 x 17 279 x 432 + + (default) が付けられた項目は、指定されなかったときに使われる設定である。 + 値は必ずしも使われるわけではなく、特にプリンタやオプションをダイアログ + で選択したときはそちらの設定が使われる。 + 例: > :set printoptions=paper:letter,duplex:off < *'readonly'* *'ro'* *'noreadonly'* *'noro'* 'readonly' 'ro' 切替 (既定ではオフ) バッファについてローカル {Vi にはない} - If on, writes fail unless you use a '!'. Protects you from - accidentally overwriting a file. Default on when Vim is started - in read-only mode ("vim -R") or when the executable is called "view". - {not in Vi:} When using the ":view" command the 'readonly' option is - set for the newly edited buffer. When using ":w!" the 'readonly' - option is reset for the current buffer. + オンのときは、書き込みコマンドは '!' を付けないと使えない。これは間違っ + てファイルを上書きしてしまうことを防ぐためのものである。Vimが読み込み + 専用モードで起動された ("vim -R") ときと、実行ファイルの名前が "view" + のときにはオンが既定値になる。 + {Vi には、以下のコマンドはない} コマンド ":view" を使って開かれたバッ + ファでは、オプション 'readonly' はオンになる。":w!" を使ったバッファで + は 'readonly' はオフになる。 *'remap'* *'noremap'* 'remap' 切替 (既定ではオン) グローバル - Allows for mappings to work recursively. If you do not want this for - a single entry, use the :noremap[!] command. + 再帰的マッピング (訳注: マッピングに対するマッピング、に対するマッピン + グ...) を有効にする。特定のマッピングに対して再帰的マッピングを禁止し + たいときは、コマンド ":noremap[!]" を使うこと。 *'report'* 'report' 数値 (既定では 2) グローバル - Threshold for reporting number of lines changed. When the number of - changed lines is more than 'report' a message will be given for most - ":" commands. If you want it always, set 'report' to 0. - For the ":substitute" command the number of substitutions is used - instead of the number of lines. + 変更された行の数の報告が出る最小値。変更された行の数がオプション + 'report' より大きければ、ほとんどの ":" によるコマンドでメッセージが表 + 示される。必ず報告してほしいなら 'report' を 0 にすること。 + コマンド ":substitute" では、基準は変更された行数ではなく、置換を行っ + た回数になる。 *'restorescreen'* *'rs'* *'norestorescreen'* *'nors'* 'restorescreen' 'rs' 切替 (既定ではオン) グローバル - {Vi にはない} {Windows 95/NT console version only} - When set, the screen contents is restored when exiting Vim. This also - happens when executing external commands. + {Vi にはない} {Vi mのWindows 95/NTのコンソール版のみ} + オンのとき、Vimを終了した後にコンソール画面の内容が復元される。外部コ + マンドを実行するときも同様である。 - For non-Windows Vim: You can set or reset the 't_ti' and 't_te' - options in your .vimrc. To disable restoring: + Windows版以外のVimでは: ファイル .vimrc で、オプション 't_ti' と + 't_te'を設定することで実現できる。画面の復元を無効にするには次のように + する。 > set t_ti= t_te= - To enable restoring (for an xterm): +< 復元を有効にするには次のようにする (xterm用の設定)。 > set t_ti=^[7^[[r^[[?47h t_te=^[[?47l^[8 - (Where ^[ is an <Esc>, type CTRL-V <Esc> to insert it) +< (ここで ^[ は <Esc> であり、入力するには CTRL-V <Esc> と打ち込む) *'revins'* *'ri'* *'norevins'* *'nori'* 'revins' 'ri' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み使用可能} - Inserting characters in Insert mode will work backwards. See "typing - backwards" |ins-reverse|. This option can be toggled with the CTRL-_ - command in Insert mode, when 'allowrevins' is set. - NOTE: This option is reset when 'compatible' or 'paste' is set. + み有効} + Insertモードでの文字の挿入が通常と逆向きになる。"typing backwards" を + 参照 |ins-reverse|。このオプションは、オプション 'allowrevins' がオン + ならばInsertモードでコマンド CTRL-_ を使うことで切り替えられる。 + NOTE: このオプションは、オプション 'compatible' または 'paste' がオン + のときはオフになるので注意。 *'rightleft'* *'rl'* *'norightleft'* *'norl'* 'rightleft' 'rl' 切替 (既定ではオフ) ウィンドウについてローカル {Vi にはない} {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み使用可能} - When on, display orientation becomes right-to-left, i.e., character - that are stored in the file appear from the right to the left. Using - this option, it is possible to edit files for languages that are - written from the right to the left such as Hebrew and Arabic. This - option is per window, so it is possible to edit mixed files - simultaneously, or to view the same file in both ways (this is - sometimes useful when editing Hebrew TeX--XeT files). See - |rileft.txt|. + み有効} + オンのとき、画面表示の方向が右から左になる。つまり、ファイルに保存され + ている文字は右から左の方向へ表示される。このオプションを使うと、ヘブラ + イ語やアラビア語のような右から左に向かって書かれる言語によるファイルを + 編集できる。このオプションはウィンドウごとに設定可能なので、ヘブライ語 + と英語のファイルを同時に編集したり、同一のファイルを2通りに表示するこ + とができる (これは Hebrew TeX--XeT のファイルを編集するときに便利なこ + とがある)。|rileft.txt| を参照。 *'ruler'* *'ru'* *'noruler'* *'noru'* 'ruler' 'ru' 切替 (既定ではオフ) グローバル {Vi にはない} - {not available when compiled without the - |+cmdline_info| feature} - Show the line and column number of the cursor position, separated by a - comma. When there is room, the relative position of the displayed - text in the file is shown on the far right: - Top first line is visible - Bot last line is visible - All first and last line are visible - 45% relative position in the file - If 'rulerformat' is set, it will determine the contents of the ruler. - Each window has its own ruler. If a window has a status line, the - ruler is shown there. Otherwise it is shown in the last line of the - screen. If the statusline is given by 'statusline' (ie. not empty), - this option takes precedence over 'ruler' and 'rulerformat' - If the number of characters displayed is different from the number of - bytes in the text (e.g., for a TAB or a multi-byte character), both - the text column (byte number) and the screen column are shown, - separated with a dash. - For an empty line "0-1" is shown. - For an empty buffer the line number will also be zero: "0,0-1". - This option is reset when the 'paste' option is set. - If you don't want to see the ruler all the time but want to know where - you are, use "g CTRL-G" |g_CTRL-G|. - NOTE: This option is reset when 'compatible' is set. + {Vi mが |+cmdline_info| 機能付きでコンパイルされたとき + のみ有効} + カーソルが何行目の何列目に置かれているかを表示する (訳注: これをルーラ + と呼ぶ)。行数と列数はコンマで区切られる。幅に余裕があるときは、表示さ + れているテキストの、ファイル内での相対位置が右端に表示される。 + 先頭 ファイル先頭の行が表示されているとき + 末尾 ファイル末尾の行が表示されているとき + 全て ファイル先頭と末尾の行の両方が表示されているとき + 45% ファイル内での相対位置 + オプション 'rulerformat' が設定されているときは、それによってルーラの + 内容が指定される。ルーラはウィンドウごとに表示される。ウィンドウにステー + タス行が表示されていれば、ルーラもそこに表示される。そうでなければ画面 + の末尾の行に表示される。ステータス行の内容が 'statusline' で指定されて + いるときは (つまりその値が空でないときは)、'statusline' が 'ruler' や + 'rulerformat' より優先される。 + 表示された文字の数がテキスト上でのバイト数と違うときは (例えば、タブ文 + 字やマルチバイト文字があるとき)、テキスト上の列数 (バイト数) と画面上 + の列数が、ダッシュで区切られて両方表示される。 + 空行では "0-1" と表示される。 + 空のバッファでは行数も0になり、 "0,0-1" と表示される。 + このオプションは、'paste' がオンのときはオフになる。 + ルーラを常に表示したくはないが、テキスト内のどこにいるのか知りたいとき + は、コマンド "g CTRL-G" を使うこと |g_CTRL-G|。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフに + なるので注意。 *'rulerformat'* *'ruf'* -'rulerformat' 'ruf' 文字列 (default empty) +'rulerformat' 'ruf' 文字列 (既定では空) グローバル {Vi にはない} {Vi mが |+statusline| 機能付きでコンパイルされたときの - み使用可能} - When this option is not empty, it determines the content of the ruler - 文字列, as displayed for the 'ruler' option. - The format of this option, is like that of 'statusline'. - The default ruler width is 17 characters. To make the ruler 15 - characters wide, put "%15(" at the start and "%)" at the end. - Example: > + み有効} + 値が空でないときは、オプション 'ruler' によって表示されるルーラの内容 + を指定する。 + このオプションの書式は 'statusline' のものと同様である。 + ルーラの幅は既定では17文字である。幅を15文字にするには、値の先頭に + "%15(" を置き、末尾に "%)" を置くこと。例: > :set rulerformat=%15(%c%V\ %p%%%) < *'runtimepath'* *'rtp'* -'runtimepath' 'rtp' 文字列 (default: +'runtimepath' 'rtp' 文字列 (既定値: Unix: "$HOME/.vim, $VIM/vimfiles, $VIMRUNTIME, @@ -4501,7 +4491,7 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 $VIMRUNTIME, $VIM/vimfiles/after, home:vimfiles/after" - PC, OS/2: "$HOME/vimfiles, + DOS, MS-Win系, OS/2: "$HOME/vimfiles, $VIM/vimfiles, $VIMRUNTIME, $VIM/vimfiles/after, @@ -4519,390 +4509,403 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 sys$login:vimfiles/after" グローバル {Vi にはない} - This is a list of directories which will be searched for runtime - files: - filetype.vim filetypes by file name |new-filetype| - scripts.vim filetypes by file contents |new-filetype-scripts| - colors/ color scheme files |:colorscheme| - compiler/ compiler files |:compiler| - doc/ documentation |write-local-help| - ftplugin/ filetype plugins |write-filetype-plugin| - indent/ indent scripts |indent-expression| - keymap/ key mapping files |mbyte-keymap| - lang/ menu translations |:menutrans| - menu.vim GUI menus |menu.vim| - plugin/ plugin scripts |write-plugin| - syntax/ syntax files |mysyntaxfile| - tutor/ files for vimtutor |tutor| - - And any other file searched for with the |:runtime| command. - - The defaults for most systems are setup to search five locations: - 1. In your home directory, for your personal preferences. - 2. In a system-wide Vim directory, for preferences from the system - administrator. - 3. In $VIMRUNTIME, for files distributed with Vim. - 4. In the "after" directory in the system-wide Vim directory. This is - for the system administrator to overrule or add to the distributed - defaults (rarely needed) - 5. In the "after" directory in your home directory. This is for - personal preferences to overrule or add to the distributed defaults - or system-wide settings (rarely needed). - - Note that, unlike 'path', no wildcards like "**" are allowed. Normal - wildcards are allowed, but can significantly slow down searching for - runtime files. For speed, use as few items as possible and avoid - wildcards. - See |:runtime|. - Example: > + 以下のランタイムファイルが検索されるディレクトリのリスト。 + filetype.vim ファイル名によるファイルタイプの決定 |new-filetype| + scripts.vim ファイルの内容によるファイルタイプの決定 + |new-filetype-scripts| + colors/ 色テーマ定義ファイル |:colorscheme| + compiler/ コンパイラ定義ファイル |:compiler| + doc/ ヘルプドキュメント |write-local-help| + ftplugin/ ファイルタイププラグイン |write-filetype-plugin| + indent/ インデントスクリプト |indent-expression| + keymap/ キーマップ定義ファイル |mbyte-keymap| + lang/ 翻訳版メニュー |:menutrans| + menu.vim GUI版メニュー |menu.vim| + plugin/ プラグインスクリプト |write-plugin| + syntax/ 文法ファイル |mysyntaxfile| + tutor/ Vimtutor用ファイル |tutor| + + および、コマンド |:runtime| で検索される全てのファイル。 + + ほとんどのシステムでの既定値は、以下の5カ所を検索するようになっている。 + 1. ユーザの個人的な設定を読み込むため、ユーザのホームディレクトリを検 + 索する。 + 2. システム管理者による設定を読み込むため、システム共通のVim用ディレク + トリを検索する。 + 3. Vim付属のファイルを読み込むため、環境変数 $VIMRUNTIME 内を検索する。 + 4. システム管理者が付属ファイルによる設定を上書きしたり、それに追加設 + 定をしたりできるようにするため、システム共通のVimディレクトリ内のディ + レクトリ "after" を検索する (これは滅多に使われない)。 + 5. ユーザが付属ファイルやシステム管理者による設定を上書きしたり、それ + に追加設定をしたりできるようにするため、ユーザのホームディレクトリ + 内のディレクトリ "after" を検索する。 + + Note オプション 'path' と違い、ワイルドカードのうち "**" 等は使えない + ことに注意。普通のワイルドカードは使えるが、ランタイムファイルの検索が + 目に見えて遅くなることがある。速度を向上させるには、設定する項目の数を + なるべく少なくし、ワイルドカードの使用を避けること。 + |:runtime| を参照。 + 例: > :set runtimepath=~/vimruntime,/mygroup/vim,$VIMRUNTIME -< This will use the directory "~/vimruntime" first (containing your - personal Vim runtime files), then "/mygroup/vim" (shared between a - group of people) and finally "$VIMRUNTIME" (the distributed runtime - files). - You probably should always include $VIMRUNTIME somewhere, to use the - distributed runtime files. You can put a directory before $VIMRUNTIME - to find files which replace a distributed runtime files. You can put - a directory after $VIMRUNTIME to find files which add to distributed - runtime files. +< こうすると、ディレクトリ "~/vimruntime" (ユーザの個人的Vimランタイムファ + イルを格納) を最初に検索し、次にディレクトリ "/mygroup/vim" (グループ + 共通の設定ファイルを格納) を、最後に "$VIMRUNTIME" (付属ランタイムファ + イル) を検索する。 + 付属ランタイムファイルを使えるようにするため、どこかに必ず環境変数 + $VIMRUNTIME を指定するべきだろう。付属ランタイムファイルの代わりに使う + ファイルを置くディレクトリは、環境変数 $VIMRUNTIME の前に指定すればよ + い。付属ランタイムファイルによる設定に追加するためのファイルを置くディ + レクトリは、環境変数 $VIMRUNTIME の後に指定すればよい。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'scroll'* *'scr'* -'scroll' 'scr' 数値 (default: half the window height) +'scroll' 'scr' 数値 (既定では、ウィンドウ高の半分) ウィンドウについてローカル - 数値 of lines to scroll with CTRL-U and CTRL-D commands. Will be - set to half the number of lines in the window when the window size - changes. If you give a count to the CTRL-U or CTRL-D command it will - be used as the new value for 'scroll'. Reset to half the window - height with ":set scroll=0". {Vi is a bit different: 'scroll' gives - the number of screen lines instead of file lines, makes a difference - when lines wrap} + コマンド CTRL-U や CTRL-D でスクロールする行数。ウィンドウのサイズが変 + わると、ウィンドウの行数の半分に設定される。CTRL-U や CTRL-D を、カウ + ントを指定して使うと、カウントはオプション 'scroll' の値として使われる。 + ":set scroll=0" とすると、値はウィンドウ高の半分に戻る。 {Vi では微妙 + に違う: オプション 'scroll' ではファイル上の行数ではなく、画面上の行数 + を指定していた。行の折り返しがあるときに違いが出る} *'scrollbind'* *'scb'* *'noscrollbind'* *'noscb'* -'scrollbind' 'scb' boolean (default off) +'scrollbind' 'scb' 切替 (既定ではオフ) ウィンドウについてローカル {Vi にはない} {Vi mが |+scrollbind| 機能付きでコンパイルされたときの - み使用可能} - See also |scroll-binding|. When this option is set, the current - window scrolls as other scrollbind windows (windows that also have - this option set) scroll. This option is useful for viewing the - differences between two versions of a file, see 'diff'. - See |'scrollopt'| for options that determine how this option should be - interpreted. + み有効} + |scroll-binding| も参照。オンのとき、カレントウィンドウは他のスクロー + ル同調中ウィンドウ (このオプションがオンになっているウィンドウ) と同じ + だけスクロールする。このオプションは、ファイルの2個のヴァージョン間の + 違いを見るのに便利である。オプション 'diff' を参照。 + このオプションがどのように解釈されるかを決定するオプションについては、 + オプション 'scrollopt' を参照。 *'scrolljump'* *'sj'* 'scrolljump' 'sj' 数値 (既定では 1) グローバル {Vi にはない} - Minimal number of lines to scroll when the cursor gets off the - screen (e.g., with "j"). Not used for scroll commands (e.g., CTRL-E, - CTRL-D). Useful if your terminal scrolls very slowly. - NOTE: This option is set to 1 when 'compatible' is set. + カーソルが画面外に出たときにスクロールする行数の最小値 (例えばコマンド + "j" 等によって)。スクロールコマンド (例えば CTRL-E, CTRL-D) には使われ + ない。ユーザのターミナルのスクロールがとても遅いときに便利である。 + NOTE: このオプションは、オプション 'compatible' がオンのときは 1 にな + るので注意。 *'scrolloff'* *'so'* 'scrolloff' 'so' 数値 (既定では 0) グローバル {Vi にはない} - Minimal number of screen lines to keep above and below the cursor. - This will make some context visible around where you are working. If - you set it to a very large value (999) the cursor line will always be - in the middle of the window (except at the start or end of the file or - when long lines wrap). - For scrolling horizontallly see 'sidescrolloff'. - NOTE: This option is set to 0 when 'compatible' is set. + カーソルの上または下には、最低でもこのオプションに指定した数の行が表示 + される。これにより、編集中の箇所の周辺のテキストを見ることができる。と + ても大きい値 (999等) にすると、カーソルの置かれた行は常にウィンドウの + 中央に表示される (ファイル先頭または末尾にいるときと、長い行が折り返さ + れているとき以外)。 + 水平スクロールについてはオプション 'sidescrolloff' を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな + るので注意。 *'scrollopt'* *'sbo'* -'scrollopt' 'sbo' 文字列 (default "ver,jump") +'scrollopt' 'sbo' 文字列 (既定では "ver,jump") グローバル {Vi mが |+scrollbind| 機能付きでコンパイルされたときの - み使用可能} - {Vi にはない} - This is a comma-separated list of words that specifies how - 'scrollbind' windows should behave. - The following words are available: - ver Bind vertical scrolling for 'scrollbind' windows - hor Bind horizontal scrolling for 'scrollbind' windows - jump Applies to the offset between two windows for vertical - scrolling. This offset is the difference in the first - displayed line of the bound windows. When moving - around in a window, another 'scrollbind' window may - reach a position before the start or after the end of - the buffer. The offset is not changed though, when - moving back the 'scrollbind' window will try to scroll - to the desired position when possible. - When now making that window the current one, two - things can be done with the relative offset: - 1. When "jump" is not included, the relative offset is - adjusted for the scroll position in the new current - window. When going back to the other window, the - the new relative offset will be used. - 2. When "jump" is included, the other windows are - scrolled to keep the same relative offset. When - going back to the other window, it still uses the - same relative offset. - Also see |scroll-binding|. + み有効} + {Vi にはない} + スクロール同調中ウィンドウ (訳注: オプション 'scrollbind' がオンのウィ + ンドウ) の動作を設定するキーワードの、コンマ区切りのリスト。 + 指定可能なキーワードは以下の通りである。 + ver 同調中ウィンドウの垂直スクロールを同調させる + hor 同調中ウィンドウの水平スクロールを同調させる + jump これは垂直スクロールにおいて、2個のウィンドウ間の + offset に適用される。この offset とは同調中ウィンドウ + に表示されているテキストの先頭行のずれのことである。 + ウィンドウ内を動き回るときは、別の同調中ウィンドウの表 + 示区域が、バッファの先頭より前またはバッファの末尾より + 後ろに達してしまうかもしれない。それでも offset は変更 + されず、カーソルが戻ってきたときは、同調中ウィンドウは + 可能ならば求められる位置にスクロールしようとする。 + カレントウィンドウを変更したときは、相対 offset を使っ + て2つのことが行われる。 + 1. 値に "jump" が含まれていないとき、新しくカレントウィ + ンドウになったウィンドウのスクロール位置により相対 + offset が調節される。別のウィンドウに戻ったときは、 + 新しい相対 offset が使われる。 + 2. 値に "jump" が含まれているとき、同じ相対オフセット + を保つために他のウィンドウもスクロールする。他のウィ + ンドウに戻ったときも、同じ相対 offset を使う。 + ("jump" についての訳注: 100行のファイル "short" と200行のファイル + "long" をウィンドウ分割で並べ、1行目を表示させたまま共に 'scrollbind' + をオンにする。"long" を開いているウィンドウで150行目に移動すると、 + "short" に150行目はないのだから、ウィンドウの同調が崩れる。具体的には、 + "short" の方だけ100行目を表示したままになる。しかしそのまま "long" の + 50行目に移動すると、何事もなかったかのように "short" のウィンドウも50 + 行目を表示する。しかし "long" の150 行目に移動した時点でカーソルを + "short" のウィンドウ (の100行目) に移すと、"jump" によって違いが出る。 + 1. では「"long" では150行目、"short" では100行目」という状態が新たな基 + 準となり、"short" のウィンドウで50行目に移ると、"long" のウィンドウは + とにかく50行バック、というわけで100行目を表示する。2. では「1行目同士 + を合わせる」という基準は変わらず、やはり100行目同士を合わせろ、という + わけでウィンドウを移って "short" の100行目に着いた瞬間に "long" のウィ + ンドウも100行目を表示する。話を簡単にするために始めは共に1行目を表示し + ているとしたが、始めがずれているとそれが基準となることに注意) + + |scroll-binding| も参照。 *'sections'* *'sect'* -'sections' 'sect' 文字列 (default "SHNHH HUnhsh") +'sections' 'sect' 文字列 (既定では "SHNHH HUnhsh") グローバル - Specifies the nroff macros that separate sections. These are pairs of - two letters (See |object-motions|). The default makes a section start - at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh". + Nroff (訳注: UNIXで使われる画面整形システム) で使われる、章を分けるた + めのマクロを指定する。値は2文字の組である (|object-motions| を参照)。 + 既定では、章は nroff マクロの ".SH", ".NH", ".H", ".HU", ".nh" および + ".sh" で始まることになる。 *'secure'* *'nosecure'* 'secure' 切替 (既定ではオフ) グローバル {Vi にはない} - When on, ":autocmd", shell and write commands are not allowed in - ".vimrc" and ".exrc" in the current directory and map commands are - displayed. Switch it off only if you know that you will not run into - problems, or when the 'exrc' option is off. On Unix this option is - only used if the ".vimrc" or ".exrc" is not owned by you. This can be - dangerous if the systems allows users to do a "chown". You better set - 'secure' at the end of your ~/.vimrc then. + オンのとき、コマンド ":autocmd" やシェルコマンド、書き込みコマンドがカ + レントディレクトリ内のファイル ".vimrc" や ".exrc" では使用できなくな + り、マッピングコマンドも表示されるようになる。問題が起きることはないと + 分かっているときか、オプション 'exrc' がオフのときにのみこのオプション + をオフにすること。 + Unixでは、このオプションはファイル ".vimrc" または ".exrc" の所有者が + ユーザ自身でないときのみ使われる。これはユーザが "chown" を使えるシス + テムでは危険である。そのときにはユーザのファイル ~/.vimrc の末尾で + 'secure' をオンにしておいた方がよい。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'selection'* *'sel'* -'selection' 'sel' 文字列 (default "inclusive") +'selection' 'sel' 文字列 (既定では "inclusive") グローバル {Vi にはない} - This option defines the behavior of the selection. It is only used - in Visual and Select mode. - Possible values: - value past line inclusive ~ - old no yes - inclusive yes yes - exclusive yes no - "past line" means that the cursor is allowed to be positioned one - character past the line. - "inclusive" means that the last character of the selection is included - in an operation. For example, when "x" is used to delete the - selection. + このオプションは、選択時の動作を設定する。これはVisualモードとSelect + モードでのみ使用される。 + 設定可能な値は以下の通り。 + 値 行末の後 末尾に操作 ~ + old X O + inclusive O O + exclusive O X + 「行末の後」というのは、カーソルを行末より1文字後ろに置けることを表す。 + 「末尾に操作」というのは、選択領域の末尾の文字が操作を受けることを表す。 + 例えば、選択領域の削除に "x" が使われたときなどに違いが出る。 - The 'selection' option is set by the |:behave| command. + オプション 'selection' は、コマンド |:behave| によって設定される。 *'selectmode'* *'slm'* 'selectmode' 'slm' 文字列 (既定では "") グローバル {Vi にはない} - This is a comma separated list of words, which specifies when to start - Select mode instead of Visual mode, when a selection is started. - Possible values: - mouse when using the mouse - key when using shifted special keys - cmd when using "v", "V" or CTRL-V - See |Select-mode|. - The 'selectmode' option is set by the |:behave| command. + 値はキーワードのコンマ区切りのリストをである。キーワードは領域選択が開 + 始されたときのうち、どの場合でVisualモードでなくSelectモードを開始する + かを決定する。 + 指定可能なキーワードは以下の通りである。 + mouse マウス使用時 + key シフトキーと特別なキーの同時押しをしたとき + cmd コマンド "v", "V" または CTRL-V の使用時 + |Select-mode| を参照。 + オプション 'selectmode' はコマンド |:behave| で設定される。 *'sessionoptions'* *'ssop'* -'sessionoptions' 'ssop' 文字列 (default: "blank,buffers,curdir,folds, +'sessionoptions' 'ssop' 文字列 (既定では "blank,buffers,curdir,folds, help,options,winsize") グローバル {Vi にはない} {Vi mが |+mksession| 機能付きでコンパイルされたときの - み使用可能} - Changes the effect of the |:mksession| command. It is a comma - separated list of words. Each word enables saving and restoring - something: - word save and restore ~ - blank empty windows - buffers hidden and unloaded buffers, not just those in windows - curdir the current directory - folds manually created folds, opened/closed folds and local - fold options - globals global variables that start with an uppercase letter - and contain at least one lowercase letter. - help the help window - localoptions options and mappings local to a window or buffer (not - グローバル values for local options) - options all options and mappings (also global values for local - options) - resize size of the Vim window: 'lines' and 'columns' - sesdir the directory in which the session file is located - will become the current directory (useful with - projects accessed over a network from different - systems) - slash backslashes in file names replaced with forward - slashes - unix with Unix end-of-line format (single <NL>), even when - on Windows or DOS - winpos position of the whole Vim window - winsize window sizes - - Don't include both "curdir" and "sesdir". - When "curdir" nor "sesdir" is included, file names are stored with - absolute paths. - "slash" and "unix" are useful on Windows when sharing session files - with Unix. The Unix version of Vim cannot source dos format scripts, - but the Windows version of Vim can source unix format scripts. + み有効} + コマンド |:mksession| の効果を変更する。値はキーワードのコンマ区切りの + リストである。キーワードは、ある項目の保存と復元を有効にする。 + キーワード 復元される項目 ~ + blank 空のウィンドウ + buffers ウィンドウに表示されたバッファだけでなく、隠れバッファ + と、リストに載っているだけで読み込まれていないバッファ + curdir カレントディレクトリ + folds 手動で作られた折り畳み、折り畳みの開閉の区別、折り畳み + 関連のローカルなオプション + globals 大文字で始まり、最低1個の小文字を含む名前のグローバル + 変数 + help ヘルプウィンドウ + localoptions ウィンドウまたはバッファに対してローカルなオプションと + マッピング (ローカルなオプションのグローバルな値ではな + い) + options 全てのオプションとマッピング (ローカルなオプションのグ + ローバルな値も) + resize Vimのウィンドウのサイズ: 'lines' と 'columns' の値 + sesdir セッションファイルがおかれているディレクトリが、カレン + トディレクトリになる (ネットワーク越しに、異なったシス + テムからアクセスを受けるプロジェクトでは便利である) + slash ファイル名内の '\' がスラッシュに置換される + unix WindowsやDOS上でも、Unix形式の end-of-line (1個の + <NL>) を使う + winpos Vimのウィンドウ全体の位置 + winsize ウィンドウサイズ + + "curdir" と "sesdir" の両方を含めないこと。 + "curdir" も "sesdir" も含まれていないときは、ファイル名は絶対パスで保 + 存される。 + "slash" と "unix" は、Windows上でセッションファイルをUnixと共有すると + きに便利である。Unix版のVimはdos形式のスクリプトを読み込めないが、 + Windows版のVimはunix形式のスクリプトを読み込めるからだ。 *'shell'* *'sh'* *E91* -'shell' 'sh' 文字列 (default $SHELL or "sh", - MS-DOS and Win32: "command.com" or - "cmd.exe", OS/2: "cmd") - グローバル - Name of the shell to use for ! and :! commands. When changing the - value also check these options: 'shelltype', 'shellpipe', 'shellslash' - 'shellredir', 'shellquote', 'shellxquote' and 'shellcmdflag'. - It is allowed to give an argument to the command, e.g. "csh -f". - See |option-backslash| about including spaces and backslashes. - Environment variables are expanded |:set_env|. - If the name of the shell contains a space, you might need to enclose - it in quotes. Example: > +'shell' 'sh' 文字列 (既定では $SHELL または "sh", + MS-DOSとWin32では: "command.com" または + "cmd.exe", OS/2では: "cmd") + グローバル + "!" や ":!" 等のコマンドで使うシェルの名前。この値を変えたときは、以下 + のオプションも調べること: 'shelltype', 'shellpipe', 'shellslash', + 'shellredir', 'shellquote', 'shellxquote', 'shellcmdflag' + コマンドには引数を与えることができる。例えば "csh -f" である。 + 値に空白や '\' を含める方法については、|option-backslash| を参照。環境 + 変数は展開される |:set_env|。 + シェルの名前が空白を含むときは、それを引用符で挟む必要があるだろう。例: > :set shell=\"c:\program\ files\unix\sh.exe\"\ -f -< Note the backslash before each quote (to avoid starting a comment) and - each space (to avoid ending the option value). Also note that the - "-f" is not inside the quotes, because it is not part of the command - name. And Vim automagically recognizes the backslashes that are path - separators. - For Dos 32 bits (DJGPP), you can set the $DJSYSFLAGS environment - variable to change the way external commands are executed. See the - libc.inf file of DJGPP. - Under MS-Windows, when the executable ends in ".com" it must be - included. Thus setting the shell to "command.com" or "4dos.com" - works, but "command" and "4dos" do not work for all commands (e.g., - filtering). - For unknown reasons, when using "4dos.com" the current directory is - changed to "C:\". To avoid this set 'shell' like this: > +< Note 引用符にそれぞれ付けられた '\' (コメントの開始を防ぐため) と空白 + にそれぞれ付けられた '\' (値の終わりと間違えないため) に注意。 + Note また "-f" は引用符の中に入っていないことにも注意。それはコマンド + 名の一部ではないからである。またVimはパスの区切りに使われている '\' を + 自動的に認識する。 + 32ビットのDOS (DJGPP) では、環境変数 $DJSYSFLAGS を設定することで外部 + コマンドの実行方法を変えられる。DJGPPのファイル libc.inf を参照。 + MS-Windowsでは、実行ファイルの名前が ".com" で終わるときは ".com" まで + 含めなければならない。つまりシェルを "command.com" や "4dos.com" に設 + 定すると正しく機能するが、"command" や "4dos" に設定すると、必ずしも全 + てのコマンドに対しては動作しなくなる (例えばフィルタコマンド)。 + 理由は不明だが、"4dos.com" を使ったときはカレントディレクトリが "C:\" + に変更される。これを防ぐには 'shell' を次のようにすること。 > :set shell=command.com\ /c\ 4dos < 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'shellcmdflag'* *'shcf'* -'shellcmdflag' 'shcf' 文字列 (default: "-c", MS-DOS and Win32, when 'shell' - does not contain "sh" somewhere: "/c") +'shellcmdflag' 'shcf' 文字列 (既定では "-c", + MS-DOSとWin32で 'shell' に + "sh" が含まれないなら "/c") グローバル {Vi にはない} - Flag passed to the shell to execute "!" and ":!" commands; e.g., - "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like - systems, the default is set according to the value of 'shell', to - reduce the need to set this option by the user. It's not used for - OS/2 (EMX figures this out itself). See |option-backslash| about - including spaces and backslashes. See |dos-shell|. + "!" や ":!" 等のコマンドを実行するためにシェルに渡されるフラグ。例えば、 + "bash.exe -c ls" や "command.com /c dir" である。MS-DOS系のシステムで + は、ユーザが必ずこのオプションを設定しなくともよいように、既定値はオプ + ション 'shell' に従って設定される。OS/2では使われない (EMXは自分でこれ + を理解する)。値に空白や '\' を含める方法については、|option-backslash| + を参照。|dos-shell| も参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'shellpipe'* *'sp'* -'shellpipe' 'sp' 文字列 (default ">", "| tee", "|& tee" or "2>&1| tee") +'shellpipe' 'sp' 文字列 (既定では ">", "| tee", "|& tee" または + "2>&1| tee") グローバル {Vi にはない} {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ - 使用可能} - 文字列 to be used to put the output of the ":make" command in the - error file. See also |:make_makeprg|. See |option-backslash| about - including spaces and backslashes. - The name of the temporary file can be represented by "%s" if necessary - (the file name is appended automatically if no %s appears in the value - of this option). - For the Amiga and MS-DOS the default is ">". The output is directly - saved in a file and not echoed to the screen. - For Unix the default it "| tee". The stdout of the compiler is saved - in a file and echoed to the screen. If the 'shell' option is "csh" or - "tcsh" after initializations, the default becomes "|& tee". If the - 'shell' option is "sh", "ksh", "zsh" or "bash" the default becomes - "2>&1| tee". This means that stderr is also included. - The initialization of this option is done after reading the ".vimrc" - and the other initializations, so that when the 'shell' option is set - there, the 'shellpipe' option changes automatically, unless it was - explicitly set before. - When 'shellpipe' is set to an empty string, no redirection of the - ":make" output will be done. This is useful if you use a 'makeprg' - that writes to 'makeef' by itself. If you want no piping, but do - want to include the 'makeef', set 'shellpipe' to a single space. - Don't forget to precede the space with a backslash: ":set sp=\ ". - In the future pipes may be used for filtering and this option will - become obsolete (at least for Unix). + 有効} + コマンド ":make" の出力をエラーファイルに導くために使われる文字列。 + |:make_makeprg|も参照。値に空白や '\' を含める方法については、 + |option-backslash| を参照。 + 必要であれば、一時ファイルの名前は "%s" で参照できる (値に "%s" が1個 + も含まれていなければ、一時ファイル名は自動的に追加される)。 + AmigaとMS-DOSでの既定値は ">" である。出力はファイルに直接保存され、ス + クリーンには表示されない。 + Unixでの既定値は "| tee" である。コンパイラからの標準出力がファイルに + 保存され、画面にも表示される。初期化の後にオプション 'shell' が "csh" + か "tcsh" だったときは、既定値は "|& tee" である。'shell' が "sh", + "ksh", "zsh" か "bash" のときは、既定値は "2>&1| tee" である。つまり標 + 準エラー出力も含まれる。 + このオプションの初期化は、ファイル ".vimrc" の読み込みと他の初期化の後 + に行われる。これは 'shell' がその間に設定されていたときは、'shellpipe' + を自動的に変更するためである。ただし 'shellpipe' がユーザ自らによって + 設定されていたときは、自動設定は行われない。 + 'shellpipe' が空のときは、":make" の出力はリダイレクトされない。この設 + 定は 'makeprg' のプログラムが自分で 'makeef' に書き込んでくれるときに + 便利である。パイプ処理はしたくないが 'makeef' を含みたいときには、 + 'shellpipe' を1個の空白に設定すること。空白の前には ":set sp=\ " のよ + うに '\' を置くことを忘れないこと。 + 将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代 + 遅れになるだろう (少なくともUnixでは)。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'shellquote'* *'shq'* -'shellquote' 'shq' 文字列 (default: ""; MS-DOS and Win32, when 'shell' - contains "sh" somewhere: "\"") - グローバル - {Vi にはない} - Quoting character(s), put around the command passed to the shell, for - the "!" and ":!" commands. The redirection is kept outside of the - quoting. See 'shellxquote' to include the redirection. It's - probably not useful to set both options. - This is an empty string by default. Only known to be useful for - third-party shells on MS-DOS-like systems, such as the MKS Korn Shell - or bash, where it should be "\"". The default is adjusted according - the value of 'shell', to reduce the need to set this option by the - user. See |dos-shell|. +'shellquote' 'shq' 文字列 (既定では ""; MS-DOSとWin32で 'shell' に + "sh" が含まれるなら "\"") + グローバル + {Vi にはない} + "!" や ":!" 等のコマンドでコマンドをシェルに渡すときに、コマンドを囲む + 引用符(の列)。リダイレクトの指示は常に引用符の外側に置かれる。リダイレ + クトの指示を中に含めるには、オプション 'shellxquote' を参照。両方のオ + プションを設定するのは、おそらく良い方法ではない。 + 既定値は空である。MS-DOS系のシステムの、MKS Korn Shell や bash 等のサー + ドパーティ製のシェルに対してのみ便利である。それらのシェルでは引用符を + "\"" とするべきである。ユーザが必ずこのオプションを設定しなくともよい + ように、既定値は 'shell' に従って設定される。|dos-shell| を参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'shellredir'* *'srr'* -'shellredir' 'srr' 文字列 (default ">", ">&" or ">%s 2>&1") - グローバル - {Vi にはない} - 文字列 to be used to put the output of a filter command in a temporary - file. See also |:!|. See |option-backslash| about including spaces - and backslashes. - The name of the temporary file can be represented by "%s" if necessary - (the file name is appended automatically if no %s appears in the value - of this option). - The default is ">". For Unix, if the 'shell' option is "csh", "tcsh" - or "zsh" during initializations, the default becomes ">&". If the - 'shell' option is "sh", "ksh" or "bash" the default becomes - ">%s 2>&1". This means that stderr is also included. - For Win32, the Unix checks are done and additionally "cmd" is checked - for, which makes the default ">%s 2>&1". Also, the same names with - ".exe" appended are checked for. - The initialization of this option is done after reading the ".vimrc" - and the other initializations, so that when the 'shell' option is set - there, the 'shellredir' option changes automatically unless it was - explicitly set before. - In the future pipes may be used for filtering and this option will - become obsolete (at least for Unix). +'shellredir' 'srr' 文字列 (既定では ">", ">&" or ">%s 2>&1") + グローバル + {Vi にはない} + フィルタコマンドの出力を一時ファイルに導くために使われる文字列。|:!|も + 参照。値に空白や '\' を含める方法については、|option-backslash| を参照。 + 必要であれば、一時ファイルの名前は "%s" で参照できる (このオプションの + 値に "%s" が1個も含まれていなければ、一時ファイル名は自動的に追加され + る)。 + 既定値は ">" である。Unixでは、初期化の後にオプション 'shell' が + "csh", "tcsh" または "zsh" だったときは、既定値は ">&" になる。'shell' + が "sh", "ksh" または "bash" だったときは、既定値は ">%s 2>&1" になる。 + つまり標準エラー出力も含まれる。 + Win32では、Unixと同様のチェックがなされ、加えて値が "cmd" であるかどう + か調べられる。そのときは既定値は ">%s 2>&1" になる。また ".exe" 付きの + シェル名も探す。 + このオプションの初期化は、ファイル ".vimrc" の読み込みと他の初期化の後 + に行われる。これは 'shell' がその間に設定されていたときは、 + 'shellredir' を自動的に変更するためである。ただし 'shellredir' がユー + ザ自らによって設定されていたときは、自動設定は行われない。 + 将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代 + 遅れになるだろう (少なくともUnixでは)。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'shellslash'* *'ssl'* *'noshellslash'* *'nossl'* 'shellslash' 'ssl' 切替 (既定ではオフ) グローバル - {Vi にはない} {only for MSDOS, MS-Windows and OS/2} - When set, a forward slash is used when expanding file names. This is - useful when a Unix-like shell is used instead of command.com or - cmd.exe. Backward slashes can still be typed, but they are changed to - forward slashes by Vim. - Note that setting or resetting this option has no effect for some - existing file names, thus this option needs to be set before opening - any file for best results. This might change in the future. + {Vi にはない} + {Vi mのMSDOS, MS-Windows, OS/2版でのみ有効} + オンのときは、ファイル名の展開にスラッシュが使われる。これは + command.com や cmd.exe の代わりにUnix系のシェルを使うときに便利である。 + '\' も入力できるが、Vimによってスラッシュに変換される。 + Note このオプションをオンにしたりオフにしても、すでにVim内に読み込まれ + たファイル名には影響がないので、完全を期すためにはこのオプションはどの + ファイルを開くのよりも先に設定する必要があることに注意。この点は将来変 + 更になるかもしれない。 *'shelltype'* *'st'* 'shelltype' 'st' 数値 (既定では 0) グローバル - {Vi にはない} {only for the Amiga} - On the Amiga this option influences the way how the commands work - which use a shell. - 0 and 1: always use the shell - 2 and 3: use the shell only to filter lines - 4 and 5: use shell only for ':sh' command - When not using the shell, the command is executed directly. + {Vi にはない} {Vi mのAmiga版のみ} + Amigaでは、このオプションはシェルを使うコマンドの実行方法に影響する。 + 0 または 1: 常にシェルを使う + 2 または 3: 行のフィルタ処理にのみシェルを使う + 4 または 5: コマンド ':sh' にのみシェルを使う + シェルを使わないときは、コマンドは直接実行される。 - 0 and 2: use "shell 'shellcmdflag' cmd" to start external commands - 1 and 3: use "shell cmd" to start external commands + 0 または 2: "シェル名 'shellcmdflag' コマンド" で外部コマンドを実行 + 1 または 3: "シェル名 コマンド" で外部コマンドを実行 *'shellxquote'* *'sxq'* -'shellxquote' 'sxq' 文字列 (default: ""; - for Win32, when 'shell' contains "sh" - somewhere: "\"" - for Unix, when using system(): "\"") - グローバル - {Vi にはない} - Quoting character(s), put around the command passed to the shell, for - the "!" and ":!" commands. Includes the redirection. See - 'shellquote' to exclude the redirection. It's probably not useful - to set both options. - This is an empty string by default. Known to be useful for - third-party shells when using the Win32 version, such as the MKS Korn - Shell or bash, where it should be "\"". The default is adjusted - according the value of 'shell', to reduce the need to set this option - by the user. See |dos-shell|. +'shellxquote' 'sxq' 文字列 (既定では ""; + Win32で 'shell' に "sh" が含まるなら: "\"" + Unixで system() を使っているなら: "\"") + グローバル + {Vi にはない} + "!" や ":!" 等のコマンドでコマンドをシェルに渡すときに、コマンドを囲む + 引用符(の列)。リダイレクトの指示もこの中に含む。リダイレクトの指示を含 + めないようにするには、オプション 'shellquote' を参照。両方のオプション + を設定するのは、おそらく良い方法ではない。 + 既定値は空である。Win32系のシステムの、MKS Korn Shell や bash 等のサー + ドパーティ製のシェルに対してのみ便利である。それらのシェルでは引用符を + "\"" とするべきである。ユーザが必ずこのオプションを設定しなくともよい + ように、既定値は 'shell' に従って設定される。 |dos-shell| を参照。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -4910,742 +4913,778 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'shiftround' 'sr' 切替 (既定ではオフ) グローバル {Vi にはない} - Round indent to multiple of 'shiftwidth'. Applies to > and < - commands. CTRL-T and CTRL-D in Insert mode always round the indent to - a multiple of 'shiftwidth' (this is Vi compatible). - NOTE: This option is reset when 'compatible' is set. + インデントをオプション 'shiftwidth' の値の倍数に丸める。コマンド ">" + と "<" に適用される。Insertモードでの CTRL-T と CTRL-D では、インデン + トは常に 'shiftwidth' の倍数に丸められる (これはVi互換の動作である)。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意すること。 *'shiftwidth'* *'sw'* 'shiftwidth' 'sw' 数値 (既定では 8) バッファについてローカル - 数値 of spaces to use for each step of (auto)indent. Used for - |'cindent'|, |>>|, |<<|, etc. + (自動) インデントの各段階に使われる空白の数。オプション 'cindent', コ + マンド |>>|, |<<| 等に使われる。 + (訳注: 'shiftwidth' は自動インデントや "<<", ">>" でずれる幅。 + 'softtabstop' はタブキーやバックスペースキーでカーソルが動く幅。 + 'tabstop' は画面上でタブ文字が占める幅) *'shortmess'* *'shm'* -'shortmess' 'shm' 文字列 (Vim default "filnxtToO", Vi default: "") - グローバル - {Vi にはない} - This option helps to avoid all the |hit-enter| prompts caused by file - messages, for example with CTRL-G, and to avoid some other messages. - It is a list of flags: - flag meaning when present ~ - f use "(3 of 5)" instead of "(file 3 of 5)" - i use "[noeol]" instead of "[Incomplete last line]" - l use "999L, 888C" instead of "999 lines, 888 characters" - m use "[+]" instead of "[Modified]" - n use "[New]" instead of "[New File]" - r use "[RO]" instead of "[readonly]" - w use "[w]" instead of "written" for file write message - and "[a]" instead of "appended" for ':w >> file' command - x use "[dos]" instead of "[dos format]", "[unix]" instead of - "[unix format]" and "[mac]" instead of "[mac format]". - a all of the above abbreviations - - o overwrite message for writing a file with subsequent message - for reading a file (useful for ":wn" or when 'autowrite' on) - O message for reading a file overwrites any previous message. - Also for quickfix message (e.g., ":cn"). - s don't give "search hit BOTTOM, continuing at TOP" or "search - hit TOP, continuing at BOTTOM" messages - t truncate file message at the start if it is too long to fit - on the command-line, "<" will appear in the left most column. - Ignored in Ex mode. - T truncate other messages in the middle if they are too long to - fit on the command line. "..." will appear in the middle. - Ignored in Ex mode. - W don't give "written" or "[w]" when writing a file - A don't give the "ATTENTION" message when an existing swap file - is found. - I don't give the intro message when starting Vim |:intro|. - - This gives you the opportunity to avoid that a change between buffers - requires you to hit <Enter>, but still gives as useful a message as - possible for the space available. To get the whole message that you - would have got with 'shm' empty, use ":file!" - Useful values: - shm= No abbreviation of message. - shm=a Abbreviation, but no loss of information. - shm=at Abbreviation, and truncate message when necessary. - - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. +'shortmess' 'shm' 文字列 (Vimの既定値: "filnxtToO", Viの既定値: "") + グローバル + {Vi にはない} + このオプションは、コマンド CTRL-G 等によるファイル関連のメッセージで、 + 「継続」プロンプト |hit-enter| を避けるのに役立つ。またその他のメッセー + ジを避けるのにも役立つ。 + 値は以下のフラグのリストである。 + フラグ 効果 ~ + f "(file 3 of 5)" の代わりに "(3 of 5)" を表示。 + i "[最終行が不完全]" の代わりに "[noeol]" を表示。 + l "999 行, 888 文字" の代わりに "999L, 888C" を表示。 + m "[変更あり]" の代わりに "[+]" を表示。 + n "[新ファイル]" の代わりに "[新]" を表示。 + r "[読込専用]" の代わりに "[読専]" を表示。 + w 書き込みコマンドには "書込み" の代わりに "[w]" を、コマンド + ':w >> file' には "追加" の代わりに "[a]" を表示。 + x "[dosフォーマット]" の代わりに "[dos]", "[unixフォーマット]" + の代わりに "[unix]", "[マックフォーマット]" の代わりに + "[マック]" を表示。 + a 上記の省略を全て行う。 + + o ファイルの書き込み時のメッセージを、その後のファイルの読み込み + 時のメッセージで上書きする (":wn" を使うときやオプション + 'autowrite' がオンのときに便利である) + O ファイルの読み込み時のメッセージや Quickfix 関係のメッセージ + (例えば ":cn") がその前のメッセージを必ず上書きする。 + s 「下まで検索したので上に戻ります」と「上まで検索したので下に戻 + ります」というメッセージを表示しない。 + t ファイル間連のメッセージが長すぎてコマンドラインに収まらないと + きは、先頭を切り詰める。先頭には "<" が表示される。Exモードで + は無視される。 + T その他ののメッセージが長すぎてコマンドラインに収まらないときは、 + 中央を切り詰める。中央には "..." が表示される。Exモードでは無 + 視される。 + W ファイルの書き込み時に "書込み" や "[w]" を表示しない。 + A スワップファイルがすでにあることが発見されたときに「注意」メッ + セージを表示しない。 + I Vimの開始時に挨拶メッセージを表示しない |:intro|。 + + このオプションはバッファを変更するとき <Enter> を打ち込むのを避ける機 + 会を提供する。が、表示の余裕がある限り有益なメッセージを表示する。 + 'shm' が空のときと同じようにメッセージ全体を表示するには、コマンド + ":file!" を使うこと。 + 便利な値の例: + shm= メッセージの省略なし + shm=a メッセージを省略するが内容までは省略しない + shm=at メッセージを省略し、必要があれば内容も切りつめる + + NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 + 値に、オフのときはVimの既定値になるので注意。 *'shortname'* *'sn'* *'noshortname'* *'nosn'* 'shortname' 'sn' 切替 (既定ではオフ) バッファについてローカル - {not in Vi, not in MS-DOS versions} - Filenames are assumed to be 8 characters plus one extension of 3 - characters. Multiple dots in file names are not allowed. When this - option is on, dots in file names are replaced with underscores when - adding an extension (".~" or ".swp"). This option is not available - for MS-DOS, because then it would always be on. This option is useful - when editing files on an MS-DOS compatible filesystem, e.g., messydos - or crossdos. When running the Win32 GUI version under Win32s, this - option is always on by default. + {Vi とMS-DOS版のVimにはない} + ファイル名が8文字に3文字の拡張子を付けたものであると仮定する。ファイル + 名には複数のドット '.' は使えない。オンならば、拡張子 (".~" または + ".swp") を付けるときにはファイル名の中のドットは下線 '_' に置き換えら + れる。このオプションはMS-DOS版では無効である。なぜなら当然常にオンであ + るからだ。このオプションは、ファイルをMS-DOS互換のシステム (例えば + messydos や crossdos) 上で編集するときに便利である。Win32のGUI版を使っ + ているときは、このオプションは常に既定ではオンである (訳注: いや、オフ + だと思う)。 *'showbreak'* *'sbr'* 'showbreak' 'sbr' 文字列 (既定では "") グローバル {Vi にはない} - {not available when compiled without the |+linebreak| - feature} - 文字列 to put at the start of lines that have been wrapped. Useful - values are "> " or "+++ ". Only printable characters are allowed, - excluding <Tab> and comma (in a future version the comma might be used - to separate the part that is shown at the end and at the start of a - line). The characters are highlighted according to the '@' flag in - 'highlight'. - Note that tabs after the showbreak will be displayed differently. - If you want the 'showbreak' to appear in between line numbers, add the - "n" flag to 'cpoptions'. + {Vi mが |+linebreak| 機能付きでコンパイルされたときの + み有効} + 折り返された行の先頭に表示する文字列。"> " や "+++ " に設定すると便利 + である。<Tab> 文字とコンマ以外の、printable な文字のみが指定できる (将 + 来のヴァージョンでは、行末に表示される部分と行頭に表示される部分の区切 + りにコンマが使われるかもしれない)。この文字列は、オプション + 'highlight' のフラグ '@' に従って強調表示される。 + Note 'showbreak' の文字列の次にタブ文字が来たときは、表示方法が異なる + ので注意。 + 'showbreak' の文字列を行番号の間に表示したいときは、'cpoptions' にフラ + グ "n" を加えること。 *'showcmd'* *'sc'* *'noshowcmd'* *'nosc'* -'showcmd' 'sc' 切替 (Vim default: on, off for Unix, Vi default: - off) +'showcmd' 'sc' 切替 (Vimの既定値: オン、Unixでの既定値: オフ、 + Viの既定値: オフ) グローバル {Vi にはない} - {not available when compiled without the - |+cmdline_info| feature} - Show (partial) command in status line. Set this option off if your - terminal is slow. - In Visual mode the size of the selected area is shown: - - When selecting characters within a line, the number of characters. - - When selecting more than one line, the number of lines. - - When selecting a block, the size in screen characters: linesxcolumns. - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + {Vi mが |+cmdline_info| 機能付きでコンパイルされたとき + のみ有効} + コマンド (の一部) をステータス行に表示する。ユーザのターミナルの表示が + 遅いときにはオフにすること。 + Visualモードでは、選択領域のサイズが以下のように表示される。 + - 1行の中で選択しているときは、文字数を表示。 + - 2行以上にわたって選択しているときは、行数を表示。 + - 矩形選択のときは、画面上の文字数、つまり行数×列数を表示。 + NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 + 値に、オフのときはVimの既定値になるので注意。 *'showfulltag'* *'sft'* *'noshowfulltag'* *'nosft'* 'showfulltag' 'sft' 切替 (既定ではオフ) グローバル {Vi にはない} - When completing a word in insert mode (see |ins-completion|) from the - tags file, show both the tag name and a tidied-up form of the search - pattern (if there is one) as possible matches. Thus, if you have - matched a C function, you can see a template for what arguments are - required (coding style permitting). + Insertモードでタグファイルから単語補完をするとき (|ins-completion| を + 参照)、タグ名と整理された検索パターン (あれば) の両方をマッチする限り + 表示する。そのため、C言語の関数にマッチすれば、どのような引数を必要と + するかのテンプレートを見ることができる (コーディングスタイルが適当なも + のであれば)。 *'showmatch'* *'sm'* *'noshowmatch'* *'nosm'* 'showmatch' 'sm' 切替 (既定ではオフ) グローバル - When a bracket is inserted, briefly jump to the matching one. The - jump is only done if the match can be seen on the screen. The time to - show the match can be set with 'matchtime'. - A Beep is given if there is no match (no matter if the match can be - seen or not). This option is reset when the 'paste' option is set. - When the 'm' flag is not included in 'cpoptions', typing a character - will immediately move the cursor back to where it belongs. - See the "sm" field in 'guicursor' for setting the cursor shape and - blinking when showing the match. - Note: For the use of the short form parental guidance is advised. + 閉じ括弧が入力されたとき、対応する開き括弧にわずかの間ジャンプする。マッ + チした括弧が画面上に見えているときのみジャンプする。マッチを表示する時 + 間はオプション 'matchtime' で設定できる。 + マッチする閉じ括弧がないときは、ビープ音が鳴る (マッチが見えても見えな + くても)。このオプションは、'paste' がオンのときはオフになる。 + 'cpoptions' にフラグ 'm' が含まれていないときは、ジャンプ中に文字を入 + 力するとカーソルがすぐに元の場所に戻る。 + マッチの表示時のカーソルの形状や点滅方法については、'guicursor' の + "sm" の項目を参照。 + Note: このオプションの省略形式の名前の使用には、保護者への説明が望まれ + るので注意(笑) *'showmode'* *'smd'* *'noshowmode'* *'nosmd'* -'showmode' 'smd' 切替 (Vim default: on, Vi default: off) +'showmode' 'smd' 切替 (Vimの既定値: オン、Viの既定値: オフ) グローバル - If in Insert, Replace or Visual mode put a message on the last line. - Use the 'M' flag in 'highlight' to set the type of highlighting for - this message. - When |XIM| may be used the message will include "XIM". But this - doesn't mean XIM is really active, especially when 'imactivatekey' is - not set. - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + Insertモード、ReplaceモードまたはVisualモードで最終行にメッセージを表 + 示する。このメッセージの強調表示の設定には、オプション 'highlight' の + フラグ 'M' を使うこと。 + |XIM| が使用可能なときは、メッセージに "XIM" が含まれる。しかしこれは + 実際に XIM が起動しているということではない。特に 'imactivatekey' が設 + 定されていないときは注意。 + NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 + 値に、オフのときはVimの既定値になるので注意。 *'sidescroll'* *'ss'* 'sidescroll' 'ss' 数値 (既定では 0) グローバル {Vi にはない} - The minimal number of columns to scroll horizontally. Used only when - the 'wrap' option is off and the cursor is moved off of the screen. - When it is zero the cursor will be put in the middle of the screen. - When using a slow terminal set it to a large number or 0. When using - a fast terminal use a small number or 1. Not used for "zh" and "zl" - commands. + 水平スクロールの刻み幅。オプション 'wrap' がオフでカーソルが画面外に出 + るときのみ使われる。 + 値が 0 のときはカーソルを画面の中央に置くようにスクロールする。 + 遅いターミナルを使っているときは、大きい値または 0 に設定すること。速 + いターミナルを使っているときは小さい値または 1 に設定すること。コマン + ド "zh" と "zl" には使われない。 *'sidescrolloff'* *'siso'* -'sidescrolloff' 'siso' 数値 (default 0) - グローバル - {Vi にはない} - The minimal number of screen columns to keep to the left and to the - right of the cursor if 'nowrap' is set. Setting this option to a value - greater than 0 while having |'sidescroll'| also at a nonzero value - makes some context visible in the line you are scrolling in - horizontally (except at the end and beginning of the line). Setting - this option to a large value (like 999) has the effect of keeping the - cursor horizontally centered in the window, as long as one does not - come too close to the beginning or end of the line. - NOTE: This option is set to 0 when 'compatible' is set. - - Example: Try this together with 'sidescroll' and 'listchars' as - in the following example to never allow the cursor to move - onto the "extends" character: - +'sidescrolloff' 'siso' 数値 (既定では 0) + グローバル + {Vi にはない} + オプション 'nowrap' がオフのとき、カーソルの右または左には、最低でもこ + の数だけの列が表示される。'sidescroll' を 1 以上に設定しているときにこ + のオプションも 1 以上にすると、水平スクロールをしている周辺のテキスト + が見えるようになる (行頭または行末の近くにいるとき以外)。とても大きい + 値 (999等) にすると、カーソルの置かれた列は常にウィンドウの中央に表示 + される (行頭または行末の近くにいるとき以外)。 + NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな + るので注意。 + + 例: 次の例のように、このオプションを 'sidescroll' と 'listchars' と一 + 緒に設定し、カーソルを "extends" の文字の上に決して来ないようにし + てみる。 +> :set nowrap sidescroll=1 listchars=extends:>,precedes:< :set sidescrolloff=1 - +< *'smartcase'* *'scs'* *'nosmartcase'* *'noscs'* 'smartcase' 'scs' 切替 (既定ではオフ) グローバル {Vi にはない} - Override the 'ignorecase' option if the search pattern contains upper - case characters. Only used when the search pattern is typed and - 'ignorecase' option is on. Used for the commands "/", "?", "n", "N", - ":g" and ":s". Not used for "*", "#", "gd", tag search, etc.. After - "*" and "#" you can make 'smartcase' used by doing a "/" command, - recalling the search pattern from history and hitting <Enter>. - NOTE: This option is reset when 'compatible' is set. + 検索パターンが大文字を含んでいたらオプション 'ignorecase' を上書きする。 + 検索パターンがキーボードから打ち込まれたときに 'ignorecase' がオンの場 + 合にのみ使われる。適用されるコマンドは "/", "?", "n", "N", ":g", ":s" + である。"*", "#", "gd" やタグ検索などには適用されない。"*" や "#" の後 + で "/" を使い、検索パターンの履歴を呼び出して <Enter> を打ち込むことで、 + 'smartcase' の効果を適用することができる。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'smartindent'* *'si'* *'nosmartindent'* *'nosi'* 'smartindent' 'si' 切替 (既定ではオフ) バッファについてローカル {Vi にはない} - {not available when compiled without the - |+smartindent| feature} - Do smart autoindenting when starting a new line. Works for C-like - programs, but can also be used for other languages. 'cindent' does - something like this, works better in most cases, but is more strict, - see |C-indenting|. When 'cindent' is on, setting 'si' has no effect. - 'indentexpr' is a more advanced alternative. - Normally 'autoindent' should also be on when using 'smartindent'. - An indent is automatically inserted: - - After a line ending in '{'. - - After a line starting with a keyword from 'cinwords'. - - Before a line starting with '}' (only with the "O" command). - When typing '}' as the first character in a new line, that line is - given the same indent as the matching '{'. - When typing '#' as the first character in a new line, the indent for - that line is removed, the '#' is put in the first column. The indent - is restored for the next line. If you don't want this, use this - mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H. - When using the ">>" command, lines starting with '#' are not shifted - right. - NOTE: 'smartindent' is reset when 'compatible' is set. When 'paste' - is set smart indenting is disabled. + {Vi mが |+smartindent| 機能付きでコンパイルされたとき + のみ有効} + 新しい行を作ったときに高度な自動インデント smart autoindenting を行う。 + C言語系のプログラミング言語で有効だが、他のプログラミング言語にも使え + る。オプション 'cindent' でも似たことができ、より多くの場面で適切に動 + 作するが、'cindent' の方がこちらより厳密である。 |C-indenting| を参照。 + 'cindent' がオンのときは、'smartindent' をオンにしても効果はない。 + 'indentexpr' も同様の効果を持つが、こちらはさらに高度である。 + 'smartindent' を使うときは、'autoindent' もオンに設定するべきである。 + インデントは、以下のときに自動的に挿入される。 + - '{' で終わる行で新しい行を作ったとき。 + - 'cinwords' 内のキーワードで始まる行の次に新しい行を作ったとき。 + - '}' で始まる行の上に新しい行を作ったとき (コマンド "O" のみ)。 + 新しい行の先頭に '}' を入力すると、そこのインデントは対応する '{' と等 + しくなる。 + 新しく作った行の最初の文字が '#' のとき、その行のインデントは取り除か + れ、'#' は最前列に置かれる。次の行のインデントは '#' の行の前と同じに + なる。こうしてほしくないなら、次のマッピングを使うこと。 + ":inoremap # X^H#" + ここで ^H は CTRL-V CTRL-H と打ち込むと入力される。 + コマンド ">>" を使ったとき、'#' で始まる行は右に移動しない。 + NOTE: 'smartindent' は、'compatible' がオンのときはオフに設定されるの + で注意。また'paste' がオンのときは高度なインデントは使えないことも注意。 *'smarttab'* *'sta'* *'nosmarttab'* *'nosta'* 'smarttab' 'sta' 切替 (既定ではオフ) グローバル {Vi にはない} - When on, a <Tab> in front of a line inserts blanks according to - 'shiftwidth'. 'tabstop' is used in other places. - When off a <Tab> always inserts blanks according to 'tabstop'. - 'shiftwidth' is only used for shifting text left or right - |shift-left-right|. - What gets inserted (a Tab or spaces) depends on the 'expandtab' - option. Also see |ins-expandtab|. When 'expandtab' is not set, the - 数値 of spaces minimized by using <Tab>s. - NOTE: This option is reset when 'compatible' is set. + オンのときは、行頭の余白内で <Tab> を打ち込むと、'shiftwidth' の数だけ + 空白が挿入される。他の場所では 'tabstop' の数だけ空白が挿入される。 + オフのときは、<Tab> を打ち込むと常に 'tabstop' の数だけ空白が挿入され + る。'shiftwidth' はテキストを右左にずらすときのみ使われる + |shift-left-right|。 + 挿入される文字 (タブ文字または空白) は 'expandtab' によって変わる。 + |ins-expandtab| も参照。'expandtab' がオフのときは、 <Tab> を打ち込む + と空白の数が最小になる (訳注: できる限り空白をタブ文字で置き換える)。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'softtabstop'* *'sts'* 'softtabstop' 'sts' 数値 (既定では 0) バッファについてローカル {Vi にはない} - 数値 of spaces that a <Tab> counts for while performing editing - operations, like inserting a <Tab> or using <BS>. It "feels" like - <Tab>s are being inserted, while in fact a mix of spaces and <Tab>s is - used. This is useful to keep the 'ts' setting at its standard value - of 8, while being able to edit like it is set to 'sts'. However, - commands like "x" still work on the actual characters. - When 'sts' is zero, this feature is off. - 'softtabstop' is set to 0 when the 'paste' option is set. - See also |ins-expandtab|. When 'expandtab' is not set, the number of - spaces is minimized by using <Tab>s. - NOTE: This option is set to 0 when 'compatible' is set. + <Tab> の挿入や <BS> の使用等の編集操作をするときに、<Tab> が対応する空 + 白の数。(訳注: このオプションの長さの) <Tab> が挿入される「ように思え + る」が、実は空白と <Tab> の両方が混ざって使われている。このオプション + は、'tabstop' を標準の 8 に設定したまま、それが 'softtabstop' の値に設 + 定されているかのように編集作業をしたいときに便利である。しかしコマンド + "x" 等は実際の文字に対して動作する。 + このオプションが 0 になると、この機能は無効になる (訳注: 一番分かりや + すい違いは、<BS> を打ち込んだときにどんな文字も1文字ずつ消えていく)。 + このオプションは、'paste' がオンのときは 0 になる。 + |ins-expandtab| も参照。'expandtab' がオフのときは、<Tab> を打ち込むと + 空白の数が最小になる (訳注: できる限り空白をタブ文字で置き換える)。 + NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな + るので注意。 + (訳注: 'shiftwidth' は自動インデントやコマンド "<<", ">>" でずれる幅。 + 'softtabstop' は <Tab> や <BS> を打ち込んだときにカーソルが動く幅。 + 'tabstop' は画面上でタブ文字が占める幅の設定) *'splitbelow'* *'sb'* *'nosplitbelow'* *'nosb'* 'splitbelow' 'sb' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+windows| 機能付きでコンパイルされたときのみ - 使用可能} - When on, splitting a window will put the new window below the current - one. |:split| + 有効} + オンのとき、ウィンドウを横分割すると新しいウィンドウはカレントウィンド + ウの下に開かれる |:split|。 *'splitright'* *'spr'* *'nosplitright'* *'nospr'* 'splitright' 'spr' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み使用可能} - When on, splitting a window will put the new window right of the - current one. |:vsplit| + み有効} + オンのとき、ウィンドウを縦分割すると新しいウィンドウはカレントウィンド + ウの右に開かれる |:vsplit|。 *'startofline'* *'sol'* *'nostartofline'* *'nosol'* 'startofline' 'sol' 切替 (既定ではオン) グローバル {Vi にはない} - When "on" the commands listed below move the cursor to the first - blank of the line. When off the cursor is kept in the same column - (if possible). This applies to the commands: CTRL-D, CTRL-U, CTRL-B, - CTRL-F, "G", "H", "M", "L", , and to the commands "d", "<<" and ">>" - with a linewise operator, with "%" with a count and to buffer changing - commands (CTRL-^, :bnext, :bNext, etc.). Also for an Ex command that - only has a line number, e.g., ":25" or ":+". - In case of buffer changing commands the cursor is placed at the column - where it was the last time the buffer was edited. - NOTE: This option is set when 'compatible' is set. + オンのときは、以下のコマンドで移動すると、カーソルは行内の最初の余白に + 移動する。オフのときは、カーソルは (可能ならば) 同じ列に置かれる。 + 適用されるコマンド: CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", + "L", 行単位で行うときの "d", "<<", ">>", カウントを指定したときの "%"、 + バッファ変更コマンド (CTRL-^, :bnext, :bNext 等)、行番号のみのExコマ + ンド (例えば ":25" や ":+")。 + バッファ変更コマンドの場合は、カーソルはそのバッファが最後に編集された + ときの列に置かれる。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオンにな + るので注意。 + (訳注: 実際の動作はドキュメントとかなり違う。移動先が1列目の場合と余白 + 以外の最初の文字の場合が混在している。ただ、オンのときはカーソルが元い + た列を無視して先頭の「方に」移動するのは確か) *'statusline'* *'stl'* -'statusline' 'stl' 文字列 (default empty) +'statusline' 'stl' 文字列 (既定では空) グローバル {Vi にはない} {Vi mが |+statusline| 機能付きでコンパイルされたときの - み使用可能} - When nonempty, this option determines the content of the status line. - Also see |status-line|. - - The option consists of printf style '%' items interspersed with - normal text. Each status line item is of the form: - %-0{minwid}.{maxwid}{item} - All fields except the {item} is optional. A single percent sign can - be given as "%%". - - Note that the only effect of 'ruler' when this option is set (and - 'laststatus' is 2) is controlling the output of |CTRL-G|. - - field meaning ~ - - Left justify the item. The default is right justified - when minwid is larger than the length of the item. - 0 Leading zeroes in numeric items. Overridden by '-'. - minwid Minimum width of the item, padding as set by '-' & '0'. - maxwid Maximum width of the item. Truncation occurs with a '<' - on the left for text items. Numeric items will be - shifted down to maxwid-2 digits followed by '>'number - where number is the amount of missing digits, much like - an exponential notation. - item A one letter code as described below. - - Following is a description of the possible statusline items. The - second character in "item" is the type: - N for number - S for string - F for flags as described below - - not applicable - - item meaning ~ - f S Path to the file in the buffer, relative to current directory. - F S Full path to the file in the buffer. - t S File name (tail) of file in the buffer. - m F Modified flag, text is " [+]" or " [-]" if 'modifiable' is off. - M F Modified flag, text is ",+" or ",-". - r F Readonly flag, text is " [RO]". - R F Readonly flag, text is ",RO". - h F Help buffer flag, text is " [help]". - H F Help buffer flag, text is ",HLP". - w F Preview window flag, text is " [Preview]". - W F Preview window flag, text is ",PRV". - y F Type of file in the buffer, e.g., " [vim]". See 'filetype'. - Y F Type of file in the buffer, e.g., ",VIM". See 'filetype'. - {not available when compiled without |+autocmd| feature} - k S Value of "b:keymap_name" or 'keymap' when |:lmap| mappings are - being used: "<keymap>" - n N Buffer number. - b N Value of byte under cursor. - B N As above, in hexadecimal. - o N Byte number in file of byte under cursor, first byte is 1. - Mnemonic: Offset from start of file (with one added) - {not available when compiled without |+byte_offset| feature} - O N As above, in hexadecimal. - N N Printer page number. (Only works in the 'printheader' option.) - l N Line number. - L N Number of lines in buffer. - c N Column number. - v N Virtual column number. - V N Virtual column number as -{num}. Not displayed if equal to 'c'. - p N Percentage through file in lines as in |CTRL-G|. - P S Percentage through file of displayed window. This is like the - percentage described for 'ruler'. Always 3 in length. - a S Argument list status as in default title. ({current} of {max}) - Empty if the argument file count is zero or one. - { NF Evaluate expression between '{' and '}' and substitute result. - ( - Start of item group. Can be used for setting the width and - alignment of a section. Must be followed by %) somewhere. - ) - End of item group. No width fields allowed. - < - Where to truncate line if too long. Default is at the start. - No width fields allowed. - = - Separation point between left and right aligned items. - No width fields allowed. - * - Set highlight group to User{N}, where {N} is taken from the - minwid field. eg. %1*. Restore normal highlight with %* or %0*. - The difference between User{N} and StatusLine will be applied - to StatusLineNC for the statusline of non-current windows. - The number N must be between 1 and 9. See |hl-User1..9| - - Display of flags are controlled by the following heuristic: - If a flag text starts with comma it is assumed that it wants to - separate itself from anything but preceding plaintext. If it starts - with a space it is assumed that it wants to separate itself from - anything but other flags. That is: A leading comma is removed if the - preceding character stems from plaintext. A leading space is removed - if the preceding character stems from another active flag. This will - make a nice display when flags are used like in the examples below. - - When all items in a group becomes an empty string (ie. flags that are - not set) and a minwid is not set for the group, the whole group will - become empty. This will make a group like the following disappear - completely from the statusline when none of the flags are set. > + み有効} + 値が空でないとき、このオプションはステータス行の表示内容を設定する。 + |status-line| も参照。 + + 値は、普通のテキストに挟まれた関数 printf 形式の項目からなる。項目の形 + 式は以下の通りである。 + %-0{minwid}.{maxwid}{item} + {item} 以外の欄は指定しなくてもよい。パーセント記号そのものを表示する + には "%%" とする。 + + Note このオプションが設定されているとき (さらにオプション 'laststatus' + が 2 であるとき) は、'ruler' にはコマンド |CTRL-G| の出力を設定する効 + 果しかないことに注意。 + + 欄 意味 ~ + - その項目を左寄せする。minwid が項目の長さより大きい場合は、 + 既定では右寄せになる。 + 0 数値の頭に0を表示する。欄 '-' が優先する。 + minwid 項目の長さの最小値。余白の穴埋めは '-' と '0' で設定する。 + maxwid 項目の長さの最大値。文字列の項目の切り詰めでは '<' が左に + 表示される。数値の項目は maxwid-2 文字に切り詰められ、それ + に ">数" が続く。ここで "数" は表示されなかった文字数であ + り、指数表記に似ている。 + item 以下で説明するアルファベット1文字。 + + 以下は、指定可能なステータス行の item の説明である。"item" の2文字目は + その item の種類を表す。 + N 数値 + S 文字列 + F 以下で説明するフラグ + - 実際に表示されるものではない + + item 意味 ~ + f S バッファ内のファイルの、カレントディレクトリに対する相対パス。 + F S バッファ内のファイルのフルパス。 + t S バッファ内のファイルのファイル名 (パスを除く)。 + m F 修正フラグ。表示されるのは 'modifiable' がオフならば " [+]" また + は " [-]" + M F 修正フラグ。表示されるのは ",+" または ",-"。 + r F 読み込み専用フラグ。表示されるのは " [RO]"。 + R F 読み込み専用フラグ。表示されるのは ",RO"。 + h F ヘルプバッファフラグ。表示されるのは " [ヘルプ]"。 + H F ヘルプバッファフラグ。表示されるのは ",HLP"。 + w F プレビューウィンドウフラグ。表示されるのは " [プレビュー]"。 + W F プレビューウィンドウフラグ。表示されるのは ",PRV"。 + y F バッファ内のファイルのタイプ。例えば " [vim]"。'filetype' を参照。 + Y F バッファ内のファイルのタイプ。例えば ",VIM"。'filetype' を参照。 + {Vi mが |+autocmd| 機能付きでコンパイルされたときのみ有効} + k S 他言語用マッピング |:lmap| が使われているとき、変数 + "b:keymap_name" または 'keymap' を "<keymap>" と表示する。 + n N バッファ番号。 + b N カーソル下の文字の文字コードの10進数表現。 + B N 同上、ただし16進数表現。 + o N カーソル下の文字がファイル内で何バイト目であるか。先頭では1。 + 覚え方: ファイル先頭からの隔たり (に1を足したもの) + {Vi mが |+byte_offset| 機能付きでコンパイルされたときのみ有効} + O N 同上、ただし16進数表現。 + N N 印刷時のページ番号 ('printheader' 内でのみ有効)。 + l N 何行目にカーソルがあるか。 + L N バッファ内の総行数。 + c N 何列目にカーソルがあるか。 + v N 画面上の何列目にカーソルがあるか。 + V N 画面上の何列目にカーソルがあるか。表示形式は -{num}。値が 'c' と + 等しければ表示されない。 + p N 現在行がファイル内の何%の位置にあるか (|CTRL-G| と同様) + P S 現在表示されているウィンドウ内のテキストが、ファイル内の何%の位 + 置にあるか。これは 'ruler' で説明されているものに似ている。値は + 常に3文字である (訳注: 日本語版では全角2文字になりうる)。 + a S 既定のタイトルと同様の引数ファイルリストを + "({current} of {max})" と表示する。ファイル引数の数が0または1の + ときは空。 + { NF '{' と '}' の間の expression を評価し、結果に置き換える。 + ( - 項目グループの開始。グループ内の項目全てに対する幅と寄せ方の設定 + に使える。どこかで %) で閉じられなければならない。 + ) - 項目グループの終了。欄 width は指定できない。 + < - 行が長すぎるときに切り詰める位置。既定では先頭。欄 width は指定 + できない。 + = - 左寄せ項目と右寄せ項目の区切り。欄 width は指定できない。 + * - 使われる強調表示グループを User{N} に設定する。ここで {N} は欄 + minwid から取られる。例えば %1* と設定する。%* や %0* で通常の強 + 調表示を復元する。強調表示グループ User{N} と StatusLine の違い + は、非カレントウィンドウのステータス行の強調表示を設定するグルー + プの StatusLineNC に適用される。数 N は 1 以上 9 以下である。 + |hl-User1..9| を参照。 + + フラグの表示は以下の方法で調節される。 + フラグ列がコンマの次から始まるときは、そのフラグ列がその前の普通のテキ + スト以外のもの全てから区切られるものと想定される。フラグ列が空白の次か + ら始まるときは、他のフラグ以外の全てから区切られるものと想定される。つ + まり、フラグの前のコンマは、そのまた前の文字が普通のテキストの一部のと + きには取り除かれる。またフラグの前の空白は、そのまた前の文字が、有効な + フラグの一部のときには取り除かれる。これらの仕組みにより、フラグが下の + 例のように使われたときに見やすい表示ができる。 + + あるグループ内の全ての項目が空文字列 (つまり設定されていないフラグ) に + なり、かつそのグループに minwid が指定されていなかったときは、グループ + 全体が空になる。これにより、次のようなグループは、フラグがどれも設定さ + れていないときは全く表示されない。 > :set statusline=...%(\ [%M%R%H]%)... < - Beware that an expression is evaluated each and every time the status - line is displayed. The current buffer and current window will be set - temporarily to that of the window (and buffer) whose statusline is - currently being drawn. The expression will evaluate in this context. - The variable "actual_curbuf" is set to the 'bufnr()' number of the - real current buffer. The expression is evaluated in the |sandbox|. - - If the statusline is not updated when you want it (e.g., after setting - a variable that's used in an expression), you can force an update by - setting an option without changing its value. Example: > + 気を付けてほしいのは、expression はステータス行が表示されるたびに評価 + されるということだ。あるバッファまたはウィンドウのステータス行が描画さ + れている最中は、一時的にそのバッファまたはウィンドウがカレントバッファ + またはカレントウィンドウに設定され、そこで expression が評価される。変 + 数 "actual_curbuf" は、本当のカレントバッファで関数 'bufnr()' が返す値 + に設定される。Expression はサンドボックス |sandbox| 内でも評価される。 + + ステータス行が望みの時点 (例えば expression 内で使われる変数の設定をし + た後) で更新されていないときは、オプションを値を変えずに設定し直すこと + で更新させることができる。例: > :let &ro = &ro - -< A result of all digits is regarded a number for display purposes. - Otherwise the result is taken as flag text and applied to the rules - described above. - - Watch out for errors in expressions. They may render Vim unusable ! - If you are stuck, hold down ':' or 'Q' to get a prompt, then quit and - edit your .vimrc or whatever with "vim -u NONE" to get it right. - - Examples: - Display byte count and byte value, modified flag in red. > +< + 全て数字で返された結果は、表示用の数値と見なされる。それ以外の結果はフ + ラグ列と解釈され、上記の方法が適用される。 + + ステータス行で expression を使うときはエラーに気を付けること。Vimの描 + 画機構が使い物にならなくなるかもしれない!行き詰まってしまったならば、 + プロンプトを表示させるために ':' か 'Q' を打ち込む。そしてVimを終了し + たら "vim -u NONE" として (訳注: エラーを起こす設定を読み込まないよう + にして) ユーザのファイル .vimrc か何かを編集し、正常に戻す。 + + 例: + カーソルが置かれているバイト数、カーソル下の文字のコード、修正フラグを + 赤で表示 > :set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b' :hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red -< Emulate standard status line with 'ruler' set > +< 'ruler' がオンのときの標準のステータス行に似せる > :set statusline=%<%f%h%m%r%=%l,%c%V\ %P -< Idem, but add ascii value of char under the cursor (like "ga") > +< 同上、しかしカーソル下の文字の10/16進表現を表示する ("ga" のように) > :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P -< Display a ,GZ flag if a compressed file is loaded > +< 圧縮ファイルが読み込まれたとき、フラグ ,GZ を表示するには次のようにす + る。まず > :set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h... -< In the |:autocmd|'s: > +< として、さらに (訳注: 自動解凍を行う役割の) |:autocmd| 内で > :let b:gzflag = 1 -< And: > +< および > :unlet b:gzflag -< And define this function: > +< を設定し、最後に次の関数を定義する。 > :function VarExists(var, val) : if exists(a:var) | return a:val | else | return '' | endif :endfunction < *'suffixes'* *'su'* -'suffixes' 'su' 文字列 (default ".bak,~,.o,.h,.info,.swp,.obj") +'suffixes' 'su' 文字列 (既定では ".bak,~,.o,.h,.info,.swp,.obj") グローバル {Vi にはない} - Files with these suffixes get a lower priority when multiple files - match a wildcard. See |suffixes|. Commas can be used to separate the - suffixes. Spaces after the comma are ignored. A dot is also seen as - the start of a suffix. To avoid a dot or comma being recognized as a - separator, precede it with a backslash (see |option-backslash| about - including spaces and backslashes). - See 'wildignore' for completely ignoring files. - The use of |:set+=| and |:set-=| is preferred when adding or removing - suffixes from the list. This avoids problems when a future version - uses another default. + この拡張子を持つファイルは、ワイルドカードに複数のファイルがマッチした + ときの優先度が低くなる。|suffixes| を参照。拡張子はコンマで区切って指 + 定する。コンマの後の空白は無視される。またドットは拡張子の始まりと見な + される。ドットやコンマが区切りと見なされないようにするには、前に '\' + を置くこと。値に空白や '\' を含める方法については、|option-backslash| + を参照。 + ファイルを完全に無視するには、オプション 'wildignore' を参照。 + リストに拡張子を追加するときにはコマンド |:set+=|、リストから拡張子を + 除くときには |:set-=| を使うのがよい。こうすると将来のヴァージョンで異 + なった既定値が使われるようになったときに、問題が起きるのを防げる。 *'suffixesadd'* *'sua'* 'suffixesadd' 'sua' 文字列 (既定では "") バッファについてローカル {Vi にはない} - {not available when compiled without the - |+file_in_path| feature} - Comma separated list of suffixes, which are used when searching for a - file for the "gf", "[I", etc. commands. Example: > + {Vi mが |+file_in_path| 機能付きでコンパイルされたとき + のみ有効} + 値は拡張子のコンマ区切りのリスト。その拡張子は "gf", "[I" 等のコマンド + で検索されるファイルのものである。例: > :set suffixesadd=.java < *'swapfile'* *'swf'* *'noswapfile'* *'noswf'* 'swapfile' 'swf' 切替 (既定ではオン) バッファについてローカル {Vi にはない} - Use a swapfile for the buffer. This option can be reset when a - swapfile is not wanted for a specific buffer. For example, with - confidential information that even root must not be able to access. - Careful: All text will be in memory: - - Don't use this for big files. - - Recovery will be impossible! - A swapfile will only be present when |'updatecount'| is non-zero and - 'swapfile' is set. - When 'swapfile' is reset, the swap file for the current buffer is - immediately deleted. When 'swapfile' is set, and 'updatecount' is - non-zero, a swap file is immediately created. - Also see |swap-file| and |'swapsync'|. - - This option is used together with 'bufhidden' and 'buftype' to - specify special kinds of buffers. See |special-buffers|. + バッファでスワップファイルを使用する。このオプションは、特定のバッファ + でスワップファイルを使いたくないときにはオフに設定できる。例えば root + ユーザさえもアクセスしてはならない機密情報等でオフにする。 + 注意: テキストは全てメモリ内に格納される。 + - この手段は大きいファイルに使わないこと。 + - クラッシュからの回復ができなくなる! + スワップファイルが作られるのはオプション 'updatecount' が非0 で、 + 'swapfile' がオンのときだけである。 + 'swapfile' がオフになったときは、カレントバッファのスワップファイルは + すぐに削除される。'swapfile' がオンで、'updatecount' が非0 のときは、 + スワップファイルはすぐに作られる。 + |swap-file| と 'swapsync' も参照。 + + このオプションは、'bufhidden' と 'buftype' と共に、特別な種類のバッファ + を指定するのに使われる。|special-buffers| を参照。 *'swapsync'* *'sws'* -'swapsync' 'sws' 文字列 (default "fsync") +'swapsync' 'sws' 文字列 (既定では "fsync") グローバル {Vi にはない} - When this option is not empty a swap file is synced to disk after - writing to it. This takes some time, especially on busy unix systems. - When this option is empty parts of the swap file may be in memory and - not written to disk. When the system crashes you may lose more work. - On Unix the system does a sync now and then without Vim asking for it, - so the disadvantage of setting this option off is small. On some - systems the swap file will not be written at all. For a unix system - setting it to "sync" will use the sync() call instead of the default - fsync(), which may work better on some systems. + 値が空でないときは、書き込みの後にディスク上のスワップファイルの内容が + 同調される。これにはいくらか時間がかかる。ビジー状態のUnixシステムでは + 特にそうだ。 + 値が空のときは、スワップファイルの一部はメモリ内のままで、ディスクに書 + き込まれないかもしれない。システムがクラッシュすると、仕事の成果が余計 + ひどく失われるかもしれない。 + Unixでは、Vimが求めなくとも時折システムが同調を行うので、これを空にす + ることの不利益は小さい。システムによってはスワップファイルは全く書き込 + まれない。Unixシステムでは、値を "sync" にすると既定の関数 fsync() で + はなく関数 sync() を呼び出すが、システムによってはそちらの方がよい。 *'switchbuf'* *'swb'* 'switchbuf' 'swb' 文字列 (既定では "") グローバル {Vi にはない} - This option controls the behavior when switching between buffers. - Possible values (comma separated list): - useopen If included, jump to the first open window that - contains the specified buffer (if there is one). - Otherwise: Do not examine other windows. - This setting is checked with |quickfix| commands, when - jumping to errors (":cc", ":cn", "cp", etc.). It is - also used in all buffer related split commands, for - example ":sbuffer", ":sbnext", or ":sbrewind". - split If included, split the current window before loading - a buffer. Otherwise: do not split, use current window. - Supported in |quickfix| commands that display errors. + バッファを切り替えるときの動作を調節する。 + 指定可能なキーワードは以下の通りである (コンマ区切りのリストにする)。 + useopen これが含まれたときは、指定されたバッファを開いているウィ + ンドウがあれば、そこにジャンプする。含まれないときは、 + 他のウィンドウを調べない。 + この設定は |quickfix| 関係のコマンドでエラーにジャンプ + するとき (":cc", ":cn", "cp" 等で) に影響する。また + ":sbuffer", ":sbnext", ":sbrewind" 等のバッファ関係の + ウィンドウ分割コマンド全てにも影響する。 + split これが含まれたときは、カレントウィンドウをバッファの読 + み込み前に分割する。含まれないときは、ウィンドウを分割 + せず、カレントウィンドウを使う。 + |quickfix| 関連の、エラーを表示するコマンドに影響する。 *'syntax'* *'syn'* -'syntax' 'syn' 文字列 (default emtpy) +'syntax' 'syn' 文字列 (既定では "") バッファについてローカル {Vi にはない} - {Vi mが |+syntax| 機能付きでコンパイルされたときのみ使 - 用可能} - When this option is set, the syntax with this name is loaded, unless - syntax highlighting has been switched off with ":syntax off". - Otherwise this option does not always reflect the current syntax (the - b:current_syntax variable does). - This option is most useful in a modeline, for a file which syntax is - not automatically recognized. Example, for in an IDL file: > + {Vi mが |+syntax| 機能付きでコンパイルされたときのみ有 + 効} + このオプションが設定されたとき、コマンド ":syntax off" で構文強調表示 + が無効にされていない限り、値の名前の構文定義が読み込まれる。 + このオプションは、その時点以外では使われている構文定義を常に反映する訳 + ではない (常に反映するのは変数 b:current_syntax)。 + このオプションは、構文が自動的に認識されないファイルのモードラインで使 + うのが最も便利である。例えば、IDLファイルでは次のようにする。 > /* vim: set syntax=idl : */ -< To switch off syntax highlighting for the current file, use: > +< カレントファイルに対する構文強調表示を無効にするにはこうする。 > :set syntax=OFF -< To switch syntax highlighting on according to the current value of the - 'filetype' option: > +< オプション 'filetype' に従って、構文強調表示を開始するにはこうする。 > :set syntax=ON -< What actually happens when setting the 'syntax' option is that the - Syntax autocommand event is triggered with the value as argument. - This option is not copied to another buffer, independent of the 's' or - 'S' flag in 'cpoptions'. +< 'syntax' の設定時に実際起きることは、autocommand のイベント Syntax が、 + このオプションの値を引数にして発生するということだ。 + 'cpoptions' のフラグ 's' や 'S' に関わらず、このオプションの値は別のバッ + ファにはコピーされない。 *'tabstop'* *'ts'* 'tabstop' 'ts' 数値 (既定では 8) バッファについてローカル - 数値 of spaces that a <Tab> in the file counts for. Also see - |:retab| command, and 'softtabstop' option. - - Note: Setting 'tabstop' to any other value than 8 can make your file - appear wrong in many places (e.g., when printing it). - - There are four main ways to use tabs in Vim: - 1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4 - (or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim - will use a mix of tabs and spaces, but typing Tab and BS will - behave like a tab appears every 4 (or 3) characters. - 2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use - 'expandtab'. This way you will always insert spaces. The - formatting will never be messed up when 'tabstop' is changed. - 3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a - |modeline| to set these values when editing the file again. Only - works when using Vim to edit the file. - 4. Always set 'tabstop' and 'shiftwidth' to the same value, and - 'noexpandtab'. This should then work (for initial indents only) - for any tabstop setting that people use. It might be nice to have - tabs after the first non-blank inserted as spaces if you do this - though. Otherwise aligned comments will be wrong when 'tabstop' is - changed. + ファイル内の <Tab> が対応する空白の数。コマンド |:retab| とオプション + 'softtabstop' も参照 (訳注: このオプション説明の最後も参照)。 + + Note: 'tabstop' を 8 以外の数に設定すると、多くの場合で (例えば印刷時) + ユーザのファイルが間違って表示されうるので注意。 + + Vimでは、タブの主な使い方には以下の4種類がある。 + 1. 'tabstop' を常に 8 に保ち、'softtabstop' と 'shiftwidth' を 4 (また + は 3 等の好きな値) に設定し、'expandtab' をオフにする。するとVimは + タブと空白の両方を使うが、<Tab> と <BS> を打ち込むと、タブが 4 (ま + たは 3) 文字ごとに現れているかのように表示される。 + 2. 'tabstop' と 'shiftwidth' を好きなように設定し、'expandtab' をオン + にする。この方法では常に空白が挿入される。'tabstop' が変更されても、 + 整形されたテキストはめちゃめちゃにならない。 + 3. 'tabstop' と 'shiftwidth' を好きなように設定し、再びファイルを編集 + するときにはモードライン |modeline| でこれらを設定する。ファイルの + 編集にVimを使うときのみ有効。 + 4. 常に 'tabstop' と 'shiftwidth' を等しく設定し、'expandtab' をオフに + する。すると (1回目のインデントのみだが) どのタブ幅でもうまく働く。 + こうするにしても、余白より後の最初の文字より後にタブ文字を挿入する + ときは、空白文字として挿入されるようにするとよいだろう。そうしない + と、'tabstop' が変更されたときに、整形されたコメントの形がおかしく + なる。 + (訳注: 'shiftwidth' は自動インデントやコマンド "<<", ">>" でずれる幅。 + 'softtabstop' は <Tab> や <BS> を打ち込んだときにカーソルが動く幅。 + 'tabstop' は画面上でタブ文字が占める幅の設定) *'tagbsearch'* *'tbs'* *'notagbsearch'* *'notbs'* 'tagbsearch' 'tbs' 切替 (既定ではオン) グローバル {Vi にはない} - When searching for a tag (e.g., for the |:ta| command), Vim can either - use a binary search or a linear search in a tags file. Binary - searching makes searching for a tag a LOT faster, but a linear search - will find more tags if the tags file wasn't properly sorted. - Vim normally assumes that your tags files are sorted, or indicate that - they are not sorted. Only when this is not the case does the - 'tagbsearch' option need to be switched off. - - When 'tagbsearch' is on, binary searching is first used in the tags - files. In certain situations, Vim will do a linear search instead for - certain files, or retry all files with a linear search. When - 'tagbsearch' is off, only a linear search is done. - - Linear searching is done anyway, for one file, when Vim finds a line - at the start of the file indicating that it's not sorted: > - !_TAG_FILE_SORTED 0 /some command/ -< [The whitespace before and after the '0' must be a single <Tab>] - - When a binary search was done and no match was found in any of the - files listed in 'tags', and 'ignorecase' is set or a pattern is used - instead of a normal tag name, a retry is done with a linear search. - Tags in unsorted tags files, and matches with different case will only - be found in the retry. - - When 'tagbsearch' is off, tags searching is slower when a full match - exists, but faster when no full match exists. Tags in unsorted tags - files may only be found with 'tagbsearch' off. - When the tags file is not sorted, or sorted in a wrong way (not on - ASCII byte value), 'tagbsearch' should be off, or the line given above - must be included in the tags file. - This option doesn't affect commands that find all matching tags (e.g., - command-line completion and ":help"). - {Vi: always uses binary search in some versions} + タグの検索時 (例えばコマンド |:ta|) には、タグファイルの二分探索と線形 + 探索のどちらも可能である。二分探索をすると、タグの検索が「大幅に」速く + なる。しかし線形探索は、タグファイルが適切に整列されていないときには、 + より多くのタグを発見できる。 + Vimは普通タグファイルは整列されているものと想定するが、整列されていな + かったらそのことを表示する。オプション 'tagbsearch' をオフにする必要が + あるのはそのときだけである。 + + 'tagbsearch' がオンのときは、タグファイルではまず二分探索が使われる。 + 特定の状況下では、特定のファイルに代わりに線形探索を使ったり、全てのファ + イルに線形探索を使って再試行する場合がある。'tagbsearch' がオフのとき + は、線形探索のみが使われる。 + + タグファイルの先頭に、それが整列されていないことを示す行があったときは、 + そのファイルでは線形探索が使われる。 > + !_TAG_FILE_SORTED 0 /some command/ +< ['0' の前後の余白は、単一の <Tab> でなければならない] + + 二分探索が使われて、'tags' で列挙されたどのファイルでもマッチが見つか + らず、かつ 'ignorecase' がオンであるか通常のタグ名の代わりにパターンが + 使われているときは、線形探索を使って再試行が行われる。 + 整列されていないタグファイル内のタグや、大文字と小文字の違いのあるマッ + チは、再試行でのみ見つかるだろう。 + + 'tagbsearch' がオフのとき、完全なマッチがあるとタグの検索は遅くなるが、 + 完全なマッチが全くないと逆に速くなる。整列されていないタグファイル内の + タグは、'tagbsearch' がオフでないと見つからないかもしれない。 + タグファイルが整列されていなかったり、間違った順に整列されているとき + (ASCIIコード順でないとき --訳注: IBMの大型コンピュータではASCIIコード + でなく EBCDICコードが使われていた) は、'tagbsearch' をオフにするべきで + ある。またはタグファイル内に上記の行を含めなければならない。 + このオプションは、マッチするタグを全て見つけるようなコマンド (例えば、 + コマンドライン補完やコマンド ":help") には影響しない。 + {Vi: ヴァージョンによっては常に二分探索を使う} *'taglength'* *'tl'* 'taglength' 'tl' 数値 (既定では 0) グローバル - If non-zero, tags are significant up to this number of characters. + 非0 のときは、タグ名のうち、前からこの値の文字数までが意味を持つ。 *'tagrelative'* *'tr'* *'notagrelative'* *'notr'* -'tagrelative' 'tr' 切替 (Vim default: on, Vi default: off) +'tagrelative' 'tr' 切替 (Vimの既定値: オン、Viの既定値: オフ) グローバル {Vi にはない} - If on and using a tag file in another directory, file names in that - tag file are relative to the directory where the tag file is. - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + オンのとき、タグファイルを別のディレクトリから使うと、そのタグファイル + でのタグ名は、タグファイルのあるディレクトリに対して相対的になる。 + NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 + 値に、オフのときはVimの既定値になるので注意。 *'tags'* *'tag'* *E433* -'tags' 'tag' 文字列 (default "./tags,tags", when compiled with - |+emacs_tags|: "./tags,./TAGS,tags,TAGS") +'tags' 'tag' 文字列 (既定では "./tags,tags", + |+emacs_tags| 機能付きでコンパイルされたとき + の既定値: "./tags,./TAGS,tags,TAGS") グローバル/バッファについてローカル |global-local| - Filenames for the tag command, separated by spaces or commas. To - include a space or comma in a file name, precede it with a backslash - (see |option-backslash| about including spaces and backslashes). - When a file name starts with "./", the '.' is replaced with the path - of the current file. But only when the 'd' flag is not included in - 'cpoptions'. Environment variables are expanded |:set_env|. Also see - |tags-option|. - "*" and "**" Wildcards can be used to search for tags files in a - directory tree. See |file-searching|. {not available when compiled - without the |+path_extra| feature} - If Vim was compiled with the |+emacs_tags| feature, Emacs-style tag - files are also supported. They are automatically recognized. The - default value becomes "./tags,./TAGS,tags,TAGS", unless case - differences are ignored (MS-Windows). |emacs-tags| - The use of |:set+=| and |:set-=| is preferred when adding or removing - file names from the list. This avoids problems when a future version - uses another default. - {Vi: default is "tags /usr/lib/tags"} + タグを使うコマンドで必要とするタグファイルの名前の、空白またはコンマ区 + 切りのリスト。ファイル名に空白やコンマを使うときは、'\' を前に置くこと + (値に空白や '\' を含める方法については、|option-backslash| を参照)。 + ファイル名が "./" で始まるときは、'.' はカレントファイルのパスに置き換 + えられる。ただしそれはオプション 'cpoptions' にフラグ 'd' が含まれてい + ないときのみである。環境変数は展開される |:set_env|。|tags-option| も + 参照。 + ワイルドカード "*" や "**" を使い、ディレクトリツリーの下に向かってタ + グファイルを検索できる。|file-searching| を参照。{Vi mが |+path_extra| + 機能付きでコンパイルされたときのみ有効} + Vimが |+emacs_tags| 機能付きでコンパイルされたときは、Emacs形式のタグ + ファイルも利用できる。形式は自動的に認識される。そのときの既定値は、大 + 文字と小文字の区別がないシステム (MS-Windows) 以外では + "./tags,./TAGS,tags,TAGS" となる。|emacs-tags| + リストにファイル名を追加するときにはコマンド |:set+=|、リストからファ + イル名を除くときにはコマンド |:set-=| を使うのがよい。こうすると将来の + ヴァージョンで異なった既定値が使われるようになったときに、問題が起きる + のを防げる。 + {Vi: 既定値は "tags /usr/lib/tags"} *'tagstack'* *'tgst'* *'notagstack'* *'notgst'* 'tagstack' 'tgst' 切替 (既定ではオン) グローバル - {not in all versions of Vi} - When on, the |tagstack| is used normally. When off, a ":tag" or - ":tselect" command with an argument will not push the tag onto the - tagstack. A following ":tag" without an argument, a ":pop" command or - any other command that uses the tagstack will use the unmodified - tagstack, but does change the pointer to the active entry. - Resetting this option is useful when using a ":tag" command in a - mapping which should not change the tagstack. + {Vi のヴァージョンによってはこれがないものもある} + オンのときは、タグスタック |tagstack| が通常通りに使われる。オフのとき + は、引数付きのコマンド ":tag" または ":tselect" は、タグをタグスタック + にプッシュしない。 その後に引数無しの ":tag" や、":pop" 等のタグスタッ + クを使うコマンドを使うと、修正されていないタグスタックが使われるが、ア + クティブな項目へのポインタは変更される。 + このオプションをオンにするのは、":tag" をマッピング内で使っていて、タ + グスタックを変更すべきでないときに便利である。 *'term'* -'term' 文字列 (default is $TERM, if that fails: - in the GUI: "builtin_gui" - on Amiga: "amiga" - on BeOS: "beos-ansi" - on Mac: "mac-ansi" - on MiNT: "vt52" - on MS-DOS: "pcterm" - on OS/2: "os2ansi" - on Unix: "ansi" - on VMS: "ansi" - on Win 32: "win32") - グローバル - Name of the terminal. Used for choosing the terminal control - characters. Environment variables are expanded |:set_env|. - For example: > +'term' 文字列 (既定では $TERM、それが失敗したら + GUI版では: "builtin_gui" + Amigaでは: "amiga" + BeOSでは: "beos-ansi" + Macでは: "mac-ansi" + MiNTでは: "vt52" + MS-DOSでは: "pcterm" + OS/2では: "os2ansi" + Unixでは: "ansi" + VMSでは: "ansi" + Win32では: "win32") + グローバル + ターミナルの名前。ターミナル制御文字の選択に使われる。環境変数は展開さ + れる |:set_env|。 + 例: > :set term=$TERM -< See |termcap|. +< |termcap| を参照。 *'termencoding'* *'tenc'* 'termencoding' 'tenc' 文字列 (既定では "") グローバル {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み使用可能} - {Vi にはない} - Encoding used for the terminal. This specifies what character - encoding the keyboard produces and the display will understand. For - the GUI it only applies to the keyboard ('encoding' is used for the - display). - When empty, the same encoding is used as for the 'encoding' option. - This is the normal value. - Not all combinations for 'termencoding' and 'encoding' are valid. See - |encoding-table|. - The value for this option must be supported by iconv(). When iconv() - cannot handle the value, no conversion will be done and you will - probably experience problems with non-ASCII characters. - Example: You are working with the locale set to euc-jp (Japanese) and - want to edit a UTF-8 file: > + み有効} + {Vi にはない} + ターミナルで使われるエンコーディング名。このオプションは、どの文字エン + コーディングをキーボードが生成し、どの文字エンコーディングをディスプレ + イが理解できるかを指定する。GUI版ではキーボードにのみ適用される (ディ + スプレイにはオプション 'encoding' が使われる)。 + 空のときは、'encoding' で指定されたエンコーディングが使われる。これが + 通常の値である。 + 'termencoding' と 'encoding' の組み合わせが全て正しいわけではない。 + |encoding-table| を参照。 + このオプションの値は、関数 iconv() でサポートされていなければならない。 + iconv() が値を扱えないときは、変換はなされず、非ASCII文字で問題が生じ + るだろう。 + 例: ユーザは euc-jp (日本語) に設定されたロケールで作業していて、UTF-8 + のファイルを編集したいとする。 > :let &termencoding = &encoding :set encoding=utf-8 -< You need to do this when your system has no locale support for UTF-8. +< ユーザのシステムがUTF-8のロケールをサポートしていないときは、ユーザが + このように設定する必要がある。 *'terse'* *'noterse'* 'terse' 切替 (既定ではオフ) グローバル - When set: Add 's' flag to 'shortmess' option (this makes the message - for a search that hits the start or end of the file not being - displayed). When reset: Remove 's' flag from 'shortmess' option. {Vi - shortens a lot of messages} + オンのときは、オプション 'shortmess' にフラグ 's' を追加する (こうする + とファイルの端まで検索してしまったときのメッセージが表示されなくなる)。 + オフのときは、オプション 'shortmess' からフラグ 's' を取り除く。 + {Vi では多くのメッセージを切り詰める} *'textauto'* *'ta'* *'notextauto'* *'nota'* -'textauto' 'ta' 切替 (Vim default: on, Vi default: off) +'textauto' 'ta' 切替 (Vimの既定値: オン、Viの既定値: オフ) グローバル {Vi にはない} - This option is obsolete. Use 'fileformats'. - For backwards compatibility, when 'textauto' is set, 'fileformats' is - set to the default value for the current system. When 'textauto' is - reset, 'fileformats' is made empty. - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. + このオプションは時代遅れである。オプション 'fileformats' を使うこと。 + 後方互換性のため、'textauto' がオンのときは、'fileformats' はシステム + の既定値に設定される。'textauto' がオフになったときは、'fileformats' + は空になる。 + NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 + 値に、オフのときはVimの既定値になるので注意。 *'textmode'* *'tx'* *'notextmode'* *'notx'* -'textmode' 'tx' 切替 (MS-DOS, Win32 and OS/2: default on, - others: default off) +'textmode' 'tx' 切替 (MS-DOS, Win32とOS/2では: 既定ではオン、 + 他のシステムでは: 既定ではオフ) バッファについてローカル {Vi にはない} - This option is obsolete. Use 'fileformat'. - For backwards compatibility, when 'textmode' is set, 'fileformat' is - set to "dos". When 'textmode' is reset, 'fileformat' is set to - "unix". + このオプションは時代遅れである。オプション 'fileformat' を使うこと。 + 後方互換性のため、'textmode' がオンのときは、'fileformats' は "dos" に + なる。'textmode' がオフのときは、'fileformats' は "unix" になる。 *'textwidth'* *'tw'* 'textwidth' 'tw' 数値 (既定では 0) バッファについてローカル {Vi にはない} - Maximum width of text that is being inserted. A longer line will be - broken after white space to get this width. A zero value disables - this. 'textwidth' is set to 0 when the 'paste' option is set. When - 'textwidth' is zero, 'wrapmargin' may be used. See also - 'formatoptions' and |ins-textwidth|. - NOTE: This option is set to 0 when 'compatible' is set. + 入力されているテキストの最大幅。行がそれより長くなると、この幅を超えな + いように空白の後で改行される。値を 0 に設定すると無効になる。オプショ + ン 'textwidth' が 0 のときは、'wrapmargin' が使われる場合がある。 + 'formatoptions' と |ins-textwidth| を参照。 + NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな + るので注意。 *'thesaurus'* *'tsr'* 'thesaurus' 'tsr' 文字列 (既定では "") グローバル/バッファについてローカル |global-local| {Vi にはない} - List of file names, separated by commas, that are used to lookup words - for thesesaurus completion commands |i_CTRL-X_CTRL-T|. Each line in - the file should contain words with similar meaning, separated by - non-keyword characters (white space is preferred). Maximum line - length is 510 bytes. - To obtain a file to be used here, check out the wordlist FAQ at - http://www.hyphenologist.co.uk . - To include a comma in a file name precede it with a backslash. Spaces - after a comma are ignored, otherwise spaces are included in the file - name. See |option-backslash| about using backslashes. - The use of |:set+=| and |:set-=| is preferred when adding or removing - directories from the list. This avoids problems when a future version - uses another default. - Backticks cannot be used in this option for security reasons. + 同義語補完コマンド |i_CTRL-X_CTRL-T| で単語の検索に使われるファイルの + 名前の、コンマ区切りのリスト。そのファイルの各行には、似た意味の単語を + キーワードを構成しない文字で (空白がよい) 区切ったものが並ぶ。行長の最 + 大値は 510 バイトである。 + これに使われるファイルを得るには、 http://www.hyphenologist.co.uk で + wordlist FAQ を調べること。 + ファイル名にコンマを含めるときは、その前に '\' を置くこと。コンマの後 + の空白は無視されるが、それ以外では空白はそのままファイル名に含まれる。 + 値に空白や '\' を含める方法については、|option-backslash| を参照。 + リストにディレクトリを追加するときには |:set+=|、リストからディレクト + リを除くときには |:set-=| を使うのがよい。こうすると将来のヴァージョン + で異なった既定値が使われるようになったときに、問題が起きるのを防げる。 + 安全上の問題のため、このオプションに逆単引用符 backtick '`' は使えない。 *'tildeop'* *'top'* *'notildeop'* *'notop'* 'tildeop' 'top' 切替 (既定ではオフ) グローバル {Vi にはない} - When on: The tilde command "~" behaves like an operator. - NOTE: This option is reset when 'compatible' is set. + オンのとき、ティルデコマンド "~" が operator のように使用できる。 + (訳注: 普通ティルデは、打ち込まれた時点でカーソル下のアルファベットの + 大文字/小文字を変換するが、このオプションがオンのときは、"d" 等のよう + に範囲を指定されるまで変換しない。このオプションがオフでも、 + "g~{motion}" なら範囲を指定できる。|case| を参照) + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 *'timeout'* *'to'* *'notimeout'* *'noto'* 'timeout' 'to' 切替 (既定ではオン) @@ -5654,444 +5693,444 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'ttimeout' 切替 (既定ではオフ) グローバル {Vi にはない} - These two options together determine the behavior when part of a - mapped key sequence or keyboard code has been received: - - 'timeout' 'ttimeout' action ~ - off off do not time out - on on or off time out on :mappings and key codes - off on time out on key codes - - If both options are off, Vim will wait until either the complete - mapping or key sequence has been received, or it is clear that there - is no mapping or key sequence for the received characters. For - example: if you have mapped "vl" and Vim has received 'v', the next - character is needed to see if the 'v' is followed by an 'l'. - When one of the options is on, Vim will wait for about 1 second for - the next character to arrive. After that the already received - characters are interpreted as single characters. The waiting time can - be changed with the 'timeoutlen' option. - On slow terminals or very busy systems timing out may cause - malfunctioning cursor keys. If both options are off, Vim waits - forever after an entered <Esc> if there are key codes that start - with <Esc>. You will have to type <Esc> twice. If you do not have - problems with key codes, but would like to have :mapped key - sequences not timing out in 1 second, set the 'ttimeout' option and - reset the 'timeout' option. - - NOTE: 'ttimeout' is reset when 'compatible' is set. + これら2個のオプションは共に、Vimがマッピングされたキー列やキーコードの + 一部を受け取ったときの動作を決定する。 + + 'timeout' 'ttimeout' 動作 ~ + オフ オフ タイムアウト (時間切れ) を設けない + オン オンまたはオフ マッピングとキーコードにタイムアウトあり + オフ オン キーコードにタイムアウトあり + + 両方オフのときは、完全なマッピングやキー列を受け取るか、受け取った文字 + 列に対応するマッピングやキー列はないと明らかになるまで、Vimは待つ。例 + えば "vl" をマッピングして 'v' を入力したとき、'v' の次に 'l' が来るか + どうか判断するには次の文字が入力されることが必要である。 + どちらかがオンのとき、Vimは次の文字が入力されるまで約1秒待つ。その後入 + 力された文字をそれぞれ単一の文字として解釈する。待ち時間はオプション + 'timeoutlen' で設定できる。 + 遅いターミナルや非常にビジーなシステムでは、時間切れを設けるとカーソル + キーの動作がおかしくなることがある。両方オフのときは、<Esc> で始まるキー + コードがあるとVimは <Esc> が入力された後ずっと待ち状態になる。ユーザは + <Esc> を2回打ち込まなければならない。キーコードに問題はないが、マッピ + ングされたキー列を1秒でタイムアウトにされたくなければ、'ttimeout' をオ + ン、'timeout' をオフにすること。 + + NOTE: オプション 'ttimeout' は、オプション 'compatible' がオンのときは + オフになるので注意。 + *'timeoutlen'* *'tm'* 'timeoutlen' 'tm' 数値 (既定では 1000) グローバル - {not in all versions of Vi} + {Vi のヴァージョンによってはないものもある} *'ttimeoutlen'* *'ttm'* -'ttimeoutlen' 'ttm' 数値 (default -1) +'ttimeoutlen' 'ttm' 数値 (既定では -1) グローバル {Vi にはない} - The time in milliseconds that is waited for a key code or mapped key - sequence to complete. Normally only 'timeoutlen' is used and - 'ttimeoutlen' is -1. When a different timeout value for key codes is - desired set 'ttimeoutlen' to a non-negative number. + キーコードやマッピングされたキー列が完了するのを待つ時間 (ミリ秒単位)。 + 普通オプション 'timeoutlen' のみが使われ、'ttimeoutlen' は -1 に設定さ + れる。キーコードに対して異なった待ち時間を設定したいときは、 + 'ttimeoutlen' を非負の値に設定すること。 - ttimeoutlen mapping delay key code delay ~ - < 0 'timeoutlen' 'timeoutlen' - >= 0 'timeoutlen' 'ttimeoutlen' + ttimeoutlen マッピング待ち キーコード待ち ~ + 負 'timeoutlen' 'timeoutlen' + 0以上 'timeoutlen' 'ttimeoutlen' - The timeout only happens when the 'timeout' and 'ttimeout' options - tell so. A useful setting would be + タイムアウト (時間切れ) になるのは、'timeout' と 'ttimeout' でそう設定 + されているときのみである。便利な設定は次の通り。 > :set timeout timeoutlen=3000 ttimeoutlen=100 - (time out on mapping after three seconds, time out on key codes after - a tenth of a second). +< (マッピングは3秒、キーコードは0.1秒で時間切れ) *'title'* *'notitle'* -'title' 切替 (default off, on when title can be restored) +'title' 切替 (既定ではオフ、 + タイトルが復元できるときにはオン) グローバル {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ使 - 用可能} - When on, the title of the window will be set to the value of - 'titlestring' (if it is not empty), or to: + {Vi mが |+title| 機能付きでコンパイルされたときのみ有 + 効} + オンのとき、ウィンドウのタイトルがオプション 'titlestring' の値 (空で + なければ) になる。空の場合は次のようになる。 filename [+=-] (path) - VIM - Where: - filename the name of the file being edited - - indicates the file canot be modified, 'ma' off - + indicates the file was modified - = indicates the file is read-only - =+ indicates the file is read-only and modified - (path) is the path of the file being edited - - VIM the server name |v:servername| or "VIM" - Only works if the terminal supports setting window titles - (currently Amiga console, Win32 console, all GUI versions and - terminals with a non- empty 't_ts' option - these are Unix xterm and - iris-ansi by default, where 't_ts' is taken from the builtin termcap). + ここでの意味は以下の通り。 + filename 編集されているファイルの名前 + - ファイルが変更できない、つまり 'ma' がオフであ + ることを表す + + ファイルが変更を受けたことを表す + = ファイルが読み込み専用であることを表す + =+ ファイルが読み込み専用であるが変更を受けたこと + を表す + (path) 編集されているファイルのパス + - VIM サーバ名、変数 |v:servername| の値または "VIM" + ターミナルがウィンドウタイトルを設定できるもののときのみ有効である + (現在のところAmigaとWin32のコンソール版、全てのGUI版と 't_IS' が空でな + いターミナルのみ --- これらは既定では Unix xterm と iris-ansi であり、 + このときターミナルオプション 't_IS' は組み込み termcap から取られる)。 *X11* - When Vim was compiled with HAVE_X11 defined, the original title will - be restored if possible. The output of ":version" will include "+X11" - when HAVE_X11 was defined, otherwise it will be "-X11". This also - works for the icon name |'icon'|. - But: When Vim was started with the |-X| argument, restoring the title - will not work (except in the GUI). - If the title cannot be restored, it is set to the value of 'titleold'. - You might want to restore the title outside of Vim then. - When using an xterm from a remote machine you can use this command: - rsh machine_name xterm -display $DISPLAY & - then the WINDOWID environment variable should be inherited and the - title of the window should change back to what it should be after - exiting Vim. + Vimが HAVE_X11 が定義された状態でコンパイルされた場合は、可能ならば元 + のタイトルが復元される。HAVE_X11 が定義されていたら、コマンド + ":version" の出力には "+X11" が含まれ、定義されていなかったら "-X11" + が含まれる。これはアイコン名 'icon' にも働く。 + しかしVimが引数 |-X| 付きで起動した場合は、タイトルは復元されない (GUI + 版を除く)。 + タイトルを復元できないときは、'titleold' がタイトルになる。その場合は + Vimの外でタイトルを復元したいと思うかもしれない。ネットワーク越しに + xterm を使っているときは、次のコマンドが使える。 + rsh マシン名 xterm -display $DISPLAY & + すると環境変数 $WINDOWID の値が受け継がれ、ウィンドウのタイトルは、Vim + の終了後に戻るべき状態に戻る。 *'titlelen'* 'titlelen' 数値 (既定では 85) グローバル {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ使 - 用可能} - Gives the percentage of 'columns' to use for the length of the window - title. When the title is longer, only the end of the path name is - shown. A '<' character before the path name is used to indicate this. - Using a percentage makes this adapt to the width of the window. But - it won't work perfectly, because the actual number of characters - available also depends on the font used and other things in the title - bar. When 'titlelen' is zero the full path is used. Otherwise, - values from 1 to 30000 percent can be used. - 'titlelen' is also used for the 'titlestring' option. + {Vi mが |+title| 機能付きでコンパイルされたときのみ有 + 効} + ウィンドウタイトルが占める列の割合 (パーセント単位)。タイトルがこれよ + り長かったときは、パス名の後ろの部分のみが表示される。この切り詰めを示 + すためには、パス名の前に文字 '<' が表示される。 + 割合で指定しているため、タイトルが占める長さはウィンドウの幅に従って調 + 整できる。しかし完全にその通りになる訳ではない。それは実際に利用できる + 文字数は、使われているフォントやタイトルバー内の他のものによっても変わ + るからだ。値が 0 のときは、フルパスが使われる。フルパスを使わないとき + は 1 以上 30000 以下の数を指定する。 + このオプションはオプション 'titlestring' にも使われる。 *'titleold'* -'titleold' 文字列 (default "Thanks for flying Vim") +'titleold' 文字列 (既定では "Vim を使ってくれてありがとう") グローバル {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ使 - 用可能} - This option will be used for the window title when exiting Vim if the - original title cannot be restored. Only happens if 'title' is on or - 'titlestring' is not empty. + {Vi mが |+title| 機能付きでコンパイルされたときのみ有 + 効} + このオプションの値は、Vimの終了時に元のウィンドウタイトルが復元できな + い場合のタイトルに使われる。オプション 'title' がオンであるか + 'titlestring' が空でないときのみ有効である。 *'titlestring'* 'titlestring' 文字列 (既定では "") グローバル {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ使 - 用可能} - When this option is not empty, it will be used for the title of the - window. This happens only when the 'title' option is on. - Only works if the terminal supports setting window titles (currently - Amiga console, Win32 console, all GUI versions and terminals with a - non-empty 't_ts' option). - When Vim was compiled with HAVE_X11 defined, the original title will - be restored if possible |X11|. - When this option contains printf-style '%' items, they will be - expanded according to the rules used for 'statusline'. - Example: > - :auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p") - :set title titlestring=%<%F%=%l/%L-%P titlelen=70 -< The value of 'titlelen' is used to align items in the middle or right - of the available space. - Some people prefer to have the file name first: > - :set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%) -< Note the use of "%{ }" and an expression to get the path of the file, - without the file name. The "%( %)" constructs are used to add a - separating space only when needed. - NOTE: Use of special characters in 'titlestring' may cause the display - to be garbled (e.g., when it contains a CR or NL character). - {not available when compiled without the |+statusline| feature} + {Vi mが |+title| 機能付きでコンパイルされたときのみ有 + 効} + 空でないとき、ウィンドウタイトルに使われる。オプション 'title' がオン + のときのみ有効である。 + ターミナルがウィンドウタイトルを設定できるもののときのみ有効である (現 + 在のところAmigaとWin32のコンソール版、全てのGUI版とターミナルオプショ + ン 't_IS' が空でないターミナルのみ)。 + Vimが HAVE_X11 が定義された状態でコンパイルされた場合は、可能ならば元 + のタイトルが復元される |X11|。 + 値に関数 printf 形式の '%' による書式指定が含まれているときは、 + 'statusline' と同じ方法で展開される。例: > + :auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p") + :set title titlestring=%<%F%=%l/%L-%P titlelen=70 +< 'titlelen' の値は、利用できる場所の中で項目を中央や右にそろえるために + 使われる。 + ファイル名を最初に表示したい人は、こう設定する。 > + :set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%) +< Note (ファイル名を除いた) パスを得るため、 "%{ }" と expression を使っ + ていることに注意。"%( %)" は、区切りの空白を必要なときだけ加えるために + 使われている。 + NOTE: 'titlestring' に特殊な文字 (例えば文字 <CR> や文字 <NL>) を使う + と、表示がおかしくなることがあるので注意。 + {Vi mが |+statusline| 機能付きでコンパイルされたときのみ有効} *'toolbar'* *'tb'* -'toolbar' 'tb' 文字列 (default "icons,tooltips") - グローバル - {only for |+GUI_GTK|, |+GUI_Athena|, |+GUI_Motif| and - |+GUI_Photon|} - The contents of this option controls various toolbar settings. The - possible values are: - icons Toolbar buttons are shown with icons. - text Toolbar buttons shown with text. - tooltips Tooltips are active for toolbar buttons. - Tooltips refer to the popup help text which appears after the mouse - cursor is placed over a toolbar button for a brief moment. - - If you want the toolbar to be shown with icons as well as text, do the - following: > +'toolbar' 'tb' 文字列 (既定では "icons,tooltips") + グローバル + {Vi mの |+GUI_GTK|版, |+GUI_Athena|版, |+GUI_Motif|版, + |+GUI_Photon|版のみ} + ツールバーの様々な設定を行う。指定可能な値は以下の通り。 + icons ツールバーのボタンにアイコンが表示される。 + text ツールバーのボタンに名前が表示される。 + tooltips ツールバーのボタンでツールティップが表示される。 + ツールティップとは、マウスカーソルがツールバーのボタン上にしばらく置か + れたときに飛び出す、ヘルプテキストのことである。 + + ツールバーにアイコンと名前を両方表示したいときは、このように設定する。 > :set tb=icons,text -< Motif and Athena cannot display icons and text at the same time. They - will show icons if both are requested. +< MotifとAthenaでは両方同時には表示できない。両方求められると、アイコン + だけが表示される。 - If none of the strings specified in 'toolbar' are valid or if - 'toolbar' is empty, this option is ignored. If you want to disable - the toolbar, you need to set the 'guioptions' option. For example: > + オプション 'toolbar' が空であるか、適切な値が一つもないときは、このオ + プションは無視される。ツールバーを無効にしたいときは、'guioptions' を + 設定する必要がある。例: > :set guioptions-=T -< Also see |gui-toolbar|. +< |gui-toolbar| も参照。 *'ttybuiltin'* *'tbi'* *'nottybuiltin'* *'notbi'* 'ttybuiltin' 'tbi' 切替 (既定ではオン) グローバル {Vi にはない} - When on, the builtin termcaps are searched before the external ones. - When off the builtin termcaps are searched after the external ones. - When this option is changed, you should set the 'term' option next for - the change to take effect, for example: > + オンのときは、外部の termcap の前に組み込みの termcap を探す。 + オフのときは、外部の termcap の後に組み込みの termcap を探す。 + このオプションが変更されたときは、変更を有効にするため、次にオプション + 'term' を設定する必要がある。例: > :set notbi term=$TERM -< See also |termcap|. - Rationale: The default for this option is "on", because the builtin - termcap entries are generally better (many systems contain faulty - xterm entries...). +< |termcap| も参照。 + 関連情報: このオプションは既定ではオンである。それは普通、組み込み + termcap のエントリの方が良いものだからだ (多くのシステムでおかしな + xterm エントリが含まれている...)。 *'ttyfast'* *'tf'* *'nottyfast'* *'notf'* -'ttyfast' 'tf' 切替 (default off, on when 'term' is xterm, hpterm, - sun-cmd, screen, rxvt, dtterm or - iris-ansi; also on when running Vim in - a DOS console) - グローバル - {Vi にはない} - Indicates a fast terminal connection. More characters will be sent to - the screen for redrawing, instead of using insert/delete line - commands. Improves smoothness of redrawing when there are multiple - windows and the terminal does not support a scrolling region. - Also enables the extra writing of characters at the end of each screen - line for lines that wrap. This helps when using copy/paste with the - mouse in an xterm and other terminals. +'ttyfast' 'tf' 切替 (既定ではオフ、 + 'term' が xterm, hpterm, sun-cmd, screen, + rxvt, dtterm, iris-ansi のときはオン、 + DOSのコンソール版でもオン) + グローバル + {Vi にはない} + 高速ターミナル接続を行う。再描画のとき、行挿入/削除コマンドを使う代わ + りに、より多くの文字が画面に送られる。複数のウィンドウが開かれて + いたり、ターミナルが部分スクロールをサポートしていないとき、再描画が滑 + らかになる。 + また折り返された行のそれぞれの行末で、文字の extra writing (訳注: 何の + ことだか分からない。どなたかご教授願います) を有効にする。これは xterm + 等のターミナルで、マウスを使ってコピーやペーストをするときに役立つ。 + (訳注: "tty" とは、昔のコンピュータに使われていたテレタイプ (TeleTYpe) + 端末 (コンソールみたいなもの) から来た言葉である) *'ttymouse'* *'ttym'* -'ttymouse' 'ttym' 文字列 (default depends on 'term') +'ttymouse' 'ttym' 文字列 (既定値は 'term' によって異なる) グローバル {Vi にはない} - {only in Unix and VMS, doesn't work in the GUI; not - available when compiled without |+mouse|} - Name of the terminal type for which mouse codes are to be recognized. - Currently these three strings are valid: + {Vi mのUnix版とVMS版でのみ使用可能で、GUI版では無効。 + Vimが |+mouse| 機能付きでコンパイルされたときのみ有効} + マウスコードが、このオプションで指定したターミナル名に従って認識される。 + 現在のところ、以下のターミナル名を設定できる。 *xterm-mouse* - xterm xterm-like mouse handling. The mouse generates - "<Esc>[Mscr", where "scr" is three bytes: - "s" = button state - "c" = column plus 33 - "r" = row plus 33 - xterm2 Works like "xterm", but with the xterm reporting the - mouse position while the mouse is dragged. This works - much faster and more precise. Your xterm must at - least at patchlevel 88 / XFree 3.3.3 for this to - work. See below for how Vim detects this - automatically. + xterm xterm 風にマウスを扱う。マウスが生成するコードは + "<Esc>[Mscr" である。ここで "scr" は次のような3バイト + のコードである。 + "s" = ボタンの状態 + "c" = 列数足す 33 + "r" = 行数足す 33 + xterm2 "xterm" と動作が似ているが、ドラッグ中もマウス位置を返 + すような xterm に対して働く。こちらの方がずっと動作が + 速く、正確である。これを使うには、ユーザの xterm が最 + 低でもパッチレベルが 88 で XFree 3.3.3 に対応していな + ければならない。Vimがこれを自動認識する方法については、 + 以下を参照。 *netterm-mouse* - netterm NetTerm mouse handling. The mouse generates - "<Esc>}r,c<CR>", where "r,c" are two decimal numbers - for the row and column. + netterm NetTerm 風にマウスを扱う。マウスが生成するコードは + "<Esc>}r,c<CR>" である。ここで "r,c" は、それぞれ + 行数と列数を表す10進数である。 *dec-mouse* - dec DEC terminal mouse handling. The mouse generates a - rather complex sequence, starting with "<Esc>[". + dec DEC terminal 風にマウスを扱う。マウスが生成するのは、 + "<Esc>[" で始まるかなり複雑なコードである。 + *jsbterm-mouse* - jsbterm JSB term mouse handling. + jsbterm JSB term 風にマウスを扱う。 *pterm-mouse* - pterm QNX pterm mouse handling. - - The mouse handling must be enabled at compile time |+mouse_xterm| - |+mouse_dec| |+mouse_netterm|. - Only "xterm"(2) is really recognized. NetTerm mouse codes are always - recognized, if enabled at compile time. DEC terminal mouse codes - are recognized if enabled at compile time, and 'ttymouse' is not - "xterm" (because the xterm and dec mouse codes conflict). - This option is automatically set to "xterm", when the 'term' option is - set to a name that starts with "xterm", and 'ttymouse' is not "xterm" - or "xterm2" already. The main use of this option is to set it to - "xterm", when the terminal name doesn't start with "xterm", but it can - handle xterm mouse codes. - The "xterm2" value will be set if the xterm version is reported to be - 95 of higher. This only works when compiled with the |+termresponse| - feature and if |t_RV| is set to the escape sequence to request the - xterm version number. Otherwise "xterm2" must be set explicitly. - If you do not want 'ttymouse' to be set to "xterm2" automatically, set - t_RV to an empty string: > + pterm QNX pterm 風にマウスを扱う。 + + マウスを使用するには、コンパイル時に |+mouse_xterm|, |+mouse_dec|, + |+mouse_netterm| 等のどれかの機能を有効にしておかなければならない。 + 本当に認識されるのは "xterm(2)" のみである。NetTerm のマウスコードは、 + コンパイル時に有効にされていれば必ず認識される。DEC terminal のマウス + コードは、コンパイル時に有効にされ、かつオプション 'ttymouse' が + "xterm" でないときのみ認識される (xterm と DEC のマウスコードが競合す + るため)。 + このオプションが自動的に "xterm" に設定されるのは、'term' が "xterm" + で始まり、かつ 'ttymouse' がすでに "xterm" または "xterm2" でないとき + である。このオプションの主な使い方は、ターミナル名が "xterm" で始まら + ないが、そのターミナルが xterm 風のマウスコードを認識できるときに、値 + を "xterm" に設定する、というものである。 + "xterm2" に自動設定されるのは、xterm のヴァージョンが 95 以上であると + 報告されたときである。この設定は、機能 |+termresponse| がコンパイル時 + に有効になっており、かつターミナルオプション |t_RV| が xterm のヴァー + ジョンナンバーを求めるエスケープシーケンスに設定されていたときのみであ + る。そうでないときはユーザが "xterm2" と設定しなければならない。 + 'ttymouse' を "xterm2" に自動的に設定したくないときは、次のように + |t_RV| を空にすること。 > :set t_RV= < *'ttyscroll'* *'tsl'* 'ttyscroll' 'tsl' 数値 (既定では 999) グローバル - Maximum number of lines to scroll the screen. If there are more lines - to scroll the window is redrawn. For terminals where scrolling is - very slow and redrawing is not slow this can be set to a small number, - e.g., 3, to speed up displaying. + 画面をスクロールする行数の最大値。この行数以上スクロールするときは、ウィ + ンドウが再描画される。スクロールがとても遅いが再描画は遅くないようなター + ミナルでは、表示を高速化するため、このオプションを 3 等の小さい数にす + るとよい。 *'ttytype'* *'tty'* -'ttytype' 'tty' 文字列 (default from $TERM) +'ttytype' 'tty' 文字列 (既定値は $TERM によって決まる) グローバル - Alias for 'term', see above. + 上記のオプション 'term' の別名。 *'undolevels'* *'ul'* -'undolevels' 'ul' 数値 (default 100, 1000 for Unix, VMS, - Win32 and OS/2) +'undolevels' 'ul' 数値 (既定では 100、 + Unix, VMS, Win32, OS/2での既定値は 1000) グローバル {Vi にはない} - Maximum number of changes that can be undone. Since undo information - is kept in memory, higher numbers will cause more memory to be used - (nevertheless, a single change can use an unlimited amount of memory). - Set to 0 for Vi compatibility: One level of undo and "u" undoes - itself: > + アンドゥ可能な変更の最大値。アンドゥをするための情報はメモリに蓄えられ + るため、大きい数を設定するとメモリの消費量も多くなる (にも関わらず、単 + 一の変更には無制限にメモリを利用できる)。 + Vi互換にするには、次のように 0 にすること。アンドゥは 1 回だけ可能で、 + もう 1 回 "u" を使うとアンドゥがアンドゥ (訳注: リドゥ) される。 > set ul=0 -< But you can also get Vi compatibility by including the 'u' flag in - 'cpoptions', and still be able to use CTRL-R to repeat undo. - Set to a negative number for no undo at all: > +< しかしVi互換にするには、オプション 'cpoptions' にフラグ 'u' を追加して + もよい。こうするとコマンド CTRL-R でリドゥできる。 + アンドゥを無効にするには、次のように負の値にすること。 > set ul=-1 -< This helps when you run out of memory for a single change. - Also see |undo-two-ways|. +< これは 1 回の変更でもメモリを使い果たしそうなときに役立つ。 + |undo-two-ways| も参照。 *'updatecount'* *'uc'* -'updatecount' 'uc' 数値 (default: 200) - グローバル - {Vi にはない} - After typing this many characters the swap file will be written to - disk. When zero, no swap file will be created at all (see chapter on - recovery |crash-recovery|). 'updatecount' is set to zero by starting - Vim with the "-n" option, see |startup|. When editing in readonly - mode this option will be initialized to 10000. - The swapfile can be disabled per buffer with |'swapfile'|. - When 'updatecount' is set from non-zero to zero, swap files are - created for all buffers that have 'swapfile' set. When 'updatecount' - is set to zero, existing swap files are not deleted. - Also see |'swapsync'|. - This option has no meaning in buffers where |'buftype'| is "nofile" - or "nowrite". +'updatecount' 'uc' 数値 (既定では 200) + グローバル + {Vi にはない} + この回数だけ文字を打ち込むと、スワップファイルがディスクに書き込まれる。 + 0 にすると、スワップファイルは全く作られない (復旧に関する章 + |crash-recovery| を参照)。Vimを引数 "-n" 付きで起動すると、オプション + 'updatecount' を 0 に設定できる。|startup| を参照。読み込み専用モード + で編集しているときは、このオプションは 10000 に初期化される。 + 'swapfile' により、スワップファイルをバッファごとに無効化できる。 + 'updatecount' が非0 から 0 に変更されたときは、'swapfile' がオンになっ + ている全てのバッファで、スワップファイルが作られる。'updatecount' が 0 + になったときは、既存のスワップファイルは削除されない。 + 'swapsync' も参照。 + 'buftype' が "nofile" や "nowrite" であるようなバッファでは、このオプ + ションの意味はない。 *'updatetime'* *'ut'* 'updatetime' 'ut' 数値 (既定では 4000) グローバル {Vi にはない} - If this many milliseconds nothing is typed the swap file will be - written to disk (see |crash-recovery|). Also used for the - |CursorHold| autocommand event. + この時間の間 (ミリ秒単位) 入力がなければ、スワップファイルがディスクに + 書き込まれる (|crash-recovery| を参照)。また autocommand のイベント + |CursorHold| にも使われる。 *'verbose'* *'vbs'* 'verbose' 'vbs' 数値 (既定では 0) グローバル - {not in Vi, although some versions have a boolean - verbose option} - When bigger than zero, Vim will give messages about what it is doing. - Currently, these messages are given: - >= 1 When the viminfo file is read or written. - >= 2 When a file is ":source"'ed. - >= 5 Every searched tags file. - >= 8 Files for which a group of autocommands is executed. - >= 9 Every executed autocommand. - >= 12 Every executed function - >= 15 Every executed Ex command (truncated at 200 characters) - - This option can also be set with the "-V" argument. See |-V|. - This option is also set by the |:verbose| command. + {Vi にはないが、Viのヴァージョンによっては切替型のオプ + ション verbose がある} + 値が 0 より大きいとき、Vimは実行中の動作に関するメッセージを表示する。 + 現在のところ、以下のメッセージが表示される。 + 1以上 ファイル viminfo が読み書きされたとき + 2以上 コマンド ":source" でファイルを読み込んだとき + 5以上 検索されたタグファイル全て + 8以上 autocommand のグループが実行されたファイル + 9以上 実行された autocommand 全て + 12以上 実行された関数全て + 15以上 実行された Ex コマンド全て (200 文字から後は切り捨て) + + このオプションは、引数 "-V" でも設定できる。|-V| を参照。 + このオプションは、コマンド |:verbose| でも設定できる。 *'viewdir'* *'vdir'* -'viewdir' 'vdir' 文字列 (default for Amiga, MS-DOS, OS/2 and Win32: +'viewdir' 'vdir' 文字列 (Amiga, MS-DOS, OS/2とWin32での既定値: "$VIM/vimfiles/view", - for Unix: "~/.vim/view", - for Macintosh: "$VIM:vimfiles:view" - for VMS: "sys$login:vimfiles/view" - for RiscOS: "Choices:vimfiles/view") + Unixでの既定値: "~/.vim/view", + Macintoshでの既定値: "$VIM:vimfiles:view" + VMSでの既定値: "sys$login:vimfiles/view" + RiscOSでの既定値: "Choices:vimfiles/view") グローバル {Vi にはない} {Vi mが |+mksession| 機能付きでコンパイルされたときの - み使用可能} - Name of the directory where to store files for |:mkview|. + み有効} + コマンド |:mkview| によるファイルを格納するディレクトリの名前。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 *'viewoptions'* *'vop'* -'viewoptions' 'vop' 文字列 (default: "folds,options,cursor") +'viewoptions' 'vop' 文字列 (既定では "folds,options,cursor") グローバル {Vi にはない} {Vi mが |+mksession| 機能付きでコンパイルされたときの - み使用可能} - Changes the effect of the |:mkview| command. It is a comma separated - list of words. Each word enables saving and restoring something: - word save and restore ~ - cursor cursor position in file and in window - folds manually created folds, opened/closed folds and local - fold options - options options and mappings local to a window or buffer (not - グローバル values for local options) - unix with Unix end-of-line format (single <NL>), even when - on Windows or DOS - - "slash" and "unix" are useful on Windows when sharing view files - with Unix. The Unix version of Vim cannot source dos format scripts, - but the Windows version of Vim can source unix format scripts. + み有効} + コマンド |:mkview| の効果を変更する。値はキーワードのコンマ区切りのリ + ストである。キーワードは、ある項目の保存と復元を有効にする。 + キーワード 復元される項目 ~ + cursor ファイル/ウィンドウ内のカーソル位置 + folds 手動で作られた折り畳み、折り畳みの開閉の区別、折り畳み + 関連のローカルなオプション + options ウィンドウまたはバッファについてローカルなオプションと + マッピング (ローカルなオプションのグローバルな値は含め + ない) + (訳注: 次のキーワードも使用可能と思われる。実際、下の注釈には出てい + る。 + slash ファイル名内の '\' がスラッシュに置換される + ) + unix WindowsやDOS上でも、Unix形式の end-of-line (1個の + <NL>) を使う + + "slash" と "unix" は、Windows上でビューファイルをUnixと共有するときに + 便利である。Unix版のVimはdos形式のスクリプトを読み込めないが、Windows + 版のVimはunix形式のスクリプトを読み込めるからだ。 *'viminfo'* *'vi'* -'viminfo' 'vi' 文字列 (Vi default: "", Vim default for MS-DOS, - Windows and OS/2: '20,"50,h,rA:,rB:, - for Amiga: '20,"50,h,rdf0:,rdf1:,rdf2: - for others: '20,"50,h) - グローバル - {Vi にはない} - {not available when compiled without the |+viminfo| - feature} - When non-empty, the viminfo file is read upon startup and written - when exiting Vim (see |viminfo-file|). The string should be a comma - separated list of parameters, each consisting of a single character - identifying the particular parameter, followed by a number or string - which specifies the value of that parameter. If a particular - character is left out, then the default value is used for that - parameter. The following is a list of the identifying characters and - the effect of their value. - CHAR VALUE ~ - ! When included, save and restore global variables that start - with an uppercase letter, and don't contain a lowercase - letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis" - and "_K_L_M" are not. - " Maximum number of lines saved for each register. If zero then - registers are not saved. When not included, all lines are - saved. Dont forget to put a backslash before the ", otherwise - it will be recognized as the start of a comment! - % When included, save and restore the buffer list. If Vim is - started with a file name argument, the buffer list is not - restored. If Vim is started without a file name argument, the - buffer list is restored from the viminfo file. Buffers - without a file name and buffers for help files are not written - to the viminfo file. - ' Maximum number of previously edited files for which the marks - are remembered. This parameter must always be included when - 'viminfo' is non-empty. - Including this item also means that the |jumplist| is stored - in the viminfo file. - / Maximum number of items in the search pattern history to be - saved. If non-zero, then the previous search and substitute - patterns are also saved. When not included, the value of - 'history' is used. - : Maximum number of items in the command-line history to be - saved. When not included, the value of 'history' is used. - @ Maximum number of items in the input-line history to be - saved. When not included, the value of 'history' is used. - c When included, convert the text in the viminfo file from the - 'encoding' used when writing the file to the current - 'encoding'. See |viminfo-encoding|. - f Whether file marks need to be stored. If zero, file marks ('0 - to '9, 'A to 'Z) are not stored. When not present or when - non-zero, they are all stored. '0 is used for the current - cursor position (when exiting or when doing ":wviminfo"). - h Disable the effect of 'hlsearch' when loading the viminfo - file. When not included, it depends on whether ":nohlsearch" - has been used since the last search command. - n Name of the viminfo file. The name must immediately follow - the 'n'. Must be the last one! If the "-i" argument was - given when starting Vim, that file name overrides the one - given here with 'viminfo'. Environment variables are expanded - when opening the file, not when setting the option. - r Removable media. The argument is a string (up to the next - ','). This parameter can be given several times. Each - specifies the start of a path for which no marks will be - stored. This is to avoid removable media. For MS-DOS you - could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:". Case is - ignored. Maximum length of each 'r' argument is 50 - characters. - - Example: > - :set viminfo='50,\"1000,:0,n~/vim/viminfo +'viminfo' 'vi' 文字列 (Viの既定値は "", Vimの既定値は、 + MS-DOS, WindowsとOS/2では: '20,"50,h,rA:,rB: + Amigaでは: '20,"50,h,rdf0:,rdf1:,rdf2: + 他のシステムでは: '20,"50,h) + グローバル + {Vi にはない} + {Vi mが |+viminfo| 機能付きでコンパイルされたときの + み有効} + 値が空でないとき、viminfo ファイルが起動に先立って読み込まれ、また終了 + 時に書き出される (|viminfo-file| を参照)。値は指定部のコンマ区切りのリ + ストである。指定部には、効果を指定するフラグ1文字の次に、その値を指定 + する数または文字列を指定する。指定されなかったものについては、既定値が + 使われる。フラグとその動作の一覧は、以下の通りである。 + フラグ 動作 ~ + ! これが含まれると、アルファベットの大文字で始まり、小文字を含ま + ないグローバル変数を保存・復元する。つまり "KEEPTHIS" と + "K_L_M" は保存されるが、"KeepThis" と "_K_L_M" は保存されない。 + " 各レジスタで保存される行数の最大値。0 にすると、レジスタは保存 + されなくなる。指定されないときは、すべての行が保存される。文字 + '"' の前に '\' を置くことを忘れないこと。そうでないと、コメン + トの開始と見なされてしまう! + % これが含まれると、バッファリストを保存・復元する。Vimの起動時 + にファイル名が引数に含まれていると、バッファリストは復元されな + い。 Vimの起動時にファイル名が引数に含まれていないと、バッファ + リストが viminfo ファイルから復元される。ファイル名のないバッ + ファとヘルプ用バッファは、viminfo ファイルには書き込まれない。 + ' マークが復元されるファイル履歴の最大値。オプション 'viminfo' + が空でないときは、常にこれを設定しなければならない。 + また、このオプションを設定するとジャンプリスト |jumplist| も + viminfo ファイルに蓄えられることになる。 + / 保存される検索パターンの履歴の最大値。非0 の値を指定すると、前 + 回の検索パターンと置換パターンも保存される。これが含まれないと + きは、'history' の値が使われる。 + : 保存されるコマンドライン履歴の最大値。これが含まれないときは、 + 'history' の値が使われる。 + @ 保存される input-line 履歴の最大値。これが含まれないときは、 + 'history' の値が使われる。 + c これが含まれると、viminfo ファイル内のテキストを、書き込まれた + ときのエンコーディングから現在のエンコーディングに変換する。 + |viminfo-encoding| (訳注: および 'encoding') を参照。 + f ファイルマークを保存するかどうか。0 を指定すると、ファイルマー + ク ('0 から '9, 'A から 'Z) は保存されない。これが含まれなかっ + たり、値が非0 のときは、みな保存される。 '0 は (終了時やコマン + ド ":wviminfo" の実行時の) カーソル位置の保存に使われる。 + h viminfo ファイルの読み込み時に、'hlsearch' を無効にする。含ま + れないときは、最後の検索コマンド以来、コマンド ":nohlsearch" + が使われたかどうかによる。 + n これでファイル viminfo の名前を指定する。名前は 'n' のすぐ後に + 続けて指定する。'viminfo' の最後に指定しなければならない!Vim + の開始時に引数 "-i" が指定されると、それで指定されたファイル名 + がここで指定されたものを上書きする。環境変数は、オプションの設 + 定時ではなく、ファイルの読み込み時に展開される。 + r リムーバブル・メディア (訳注: フロッピ、CD-ROM等の取り外せる記 + 憶装置。この中身は取り替えてしまえば全く変わるので、ファイル履 + 歴の意味がない) の指定。引数は文字列 (次の ',' まで) である。 + これは複数個指定できる。それぞれがマーク履歴の対象外になるパス + の先頭部を指定する。これはリムーバブル・メディアを避けるためで + ある。 MS-DOSでは "ra:,rb:", Amigaでは "rdf0:,rdf1:,rdf2:" と + するとよい。大文字と小文字の区別はない。それぞれの 'r' の引数 + の最大長は 50 文字である。 + + 例: > + :set viminfo='50,\"1000,:0,n~/vim/viminfo < - '50 Marks will be remembered for the last 50 files you - edited. - "1000 Contents of registers (up to 1000 lines each) will be - remembered. - :0 Command-line history will not be saved. - n~/vim/viminfo The name of the file to use is "~/vim/viminfo". - no / Since '/' is not specified, the default will be used, - that is, save all of the search history, and also the - previous search and substitute patterns. - no % The buffer list will not be saved nor read back. - no h 'hlsearch' highlighting will be restored. + '50 最近編集した 50 ファイル内のマークは保存される。 + "1000 レジスタの中身 (それぞれ 1000 行まで) は保存される。 + :0 コマンドラインの履歴は保存されない。 + n~/vim/viminfo 使用するファイル名は "~/vim/viminfo" である。 + '/' がない '/' が指定されていないので、既定値が使われる。つまり全 + ての検索履歴や前回の検索パターン、置換パターンが保存さ + れる。 + '%' がない バッファリストは、保存も復元もされない。 + 'h' がない 'hlsearch' による強調表示は復元される。 安全上の理由から、このオプションをモードライン |modeline| から設定する ことはできない。 @@ -6100,351 +6139,347 @@ Note 1番目の形式では、行の終わりまでオプション指定に使 'virtualedit' 've' 文字列 (既定では "") グローバル {Vi にはない} - {not available when compiled without the - |+virtualedit| feature} - A comma separated list of these words: - block Allow virtual editing in Visual block mode. - insert Allow virtual editing in Insert mode. - all Allow virtual editing in all modes. - Virtual editing means that the cursor can be positioned where there is - no actual character. This can be halfway into a Tab or beyond the end - of the line. Useful for selecting a rectangle in Visual mode and - editing a table. + {Vi mが |+virtualedit| 機能付きでコンパイルされたとき + のみ有効} + 値は、以下のキーワードのコンマ区切りのリストである。 + block Visual blockモードで仮想編集を有効にする。 + insert Insertモードで仮想編集を有効にする。 + all 全てのモードで仮想編集を有効にする。 + 仮想編集とは、実際に文字がないところにもカーソルを置けるようにすること + である。つまりタブ文字の内部や行末より後ろにカーソルを移動できる。 + Visualモードで長方形を選択するときや、表を編集するときに便利である。 + (訳注: フリーカーソルモードとも呼ばれる) *'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep* 'visualbell' 'vb' 切替 (既定ではオフ) グローバル {Vi にはない} - Use visual bell instead of beeping. The terminal code to display the - visual bell is given with 't_vb'. When no beep or flash is wanted, - use ":set vb t_vb=". - Note: When the GUI starts, 't_vb' is reset to its default value. You - might want to set it again in your |gvimrc|. - In the GUI, 't_vb' defaults to "<Esc>|f", which inverts the display - for 20 msec. If you want to use a different time, use "<Esc>|40f", - where 40 is the time in msec. - Does not work on the Amiga, you always get a screen flash. - Also see 'errorbells'. + ビープ音に、実際は音でなくビジュアルベル (訳注: 画面フラッシュ) を使う。 + ビジュアルベルに使われるターミナルコードは、ターミナルオプション + 't_vb' で指定される。音もフラッシュも使いたくないならば、次のようにす + ること (訳注: しかしエラーが分からなくなるという諸刃の剣)。 > + :set vb t_vb= +< Note: GUIが開始するとき、't_vb' は既定値に設定されることに注意。 + |gvimrc| ファイルで再設定する必要があるだろう。GUI 版では、't_vb' の既 + 定値は "<Esc>|f" であり、画面の色を 20 ミリ秒だけ反転させる。違った時 + 間を設定したいときは、 "<Esc>|40f" とすること。ここで 40 の所にはミリ + 秒単位で時間を設定する。 + Amigaではこのオプションは無効で、常に画面フラッシュが使われる。 + 'errorbells' も参照。 *'warn'* *'nowarn'* 'warn' 切替 (既定ではオン) グローバル - Give a warning message when a shell command is used while the buffer - has been changed. + バッファが変更される間にシェルコマンドが使われたら、警告メッセージを表 + 示する。 *'weirdinvert'* *'wiv'* *'noweirdinvert'* *'nowiv'* 'weirdinvert' 'wiv' 切替 (既定ではオフ) グローバル {Vi にはない} - This option has the same effect as the 't_xs' termcap option. - It is provided for backwards compatibility with version 4.x. - Setting 'weirdinvert' has the effect of making 't_xs' non-empty, and - vice versa. Has no effect when the GUI is running. + このオプションは termcap オプション 't_xs' と同じ効果を持つ。これは + Vim version 4.x との後方互換性のためのものである。 + このオプションをオンにすると、't_xs' が非0 になる。またこのオプション + をオフにすると、't_xs' が 0 になる。GUI版では効果がない。 *'whichwrap'* *'ww'* -'whichwrap' 'ww' 文字列 (Vim default: "b,s", Vi default: "") - グローバル - {Vi にはない} - Allow specified keys that move the cursor left/right to wrap to the - previous/next line when the cursor is on the first/last character in - the line. Concatenate characters to allow this for these keys: - char key mode ~ - b <BS> Normal and Visual - s <Space> Normal and Visual - h "h" Normal and Visual - l "l" Normal and Visual - < <Left> Normal and Visual - > <Right> Normal and Visual +'whichwrap' 'ww' 文字列 (Vimの既定値: "b,s"、Viの既定値: "") + グローバル + {Vi にはない} + カーソルを左右させるキーのうち、ここで指定したものでは、カーソルが行頭 + /末にあるときに前/次行に移動できるようになる。以下のキーでこれを有効 + にするには、文字を連結すること (訳注: はて?以下の文字を値に加えろとい + うことか?)。 + フラグ キー モード ~ + b <BS> NormalとVisual + s <Space> NormalとVisual + h "h" NormalとVisual + l "l" NormalとVisual + < <Left> NormalとVisual + > <Right> NormalとVisual ~ "~" Normal - [ <Left> Insert and Replace - ] <Right> Insert and Replace - For example: > + [ <Left> InsertとReplace + ] <Right> InsertとReplace + 例: > :set ww=<,>,[,] -< allows wrap only when cursor keys are used. - When the movement keys are used in combination with a delete or change - operator, the <EOL> also counts for a character. This makes "3h" - different from "3dh" when the cursor crosses the end of a line. This - is also true for "x" and "X", because they do the same as "dl" and - "dh". If you use this, you may also want to use the mapping - ":map <BS> X" to make backspace delete the character in front of the - cursor. - When 'l' is included, you get a side effect: "yl" on an empty line - will include the <EOL>, so that "p" will insert a new line. - NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. +< こうすると、カーソルキーでのみ行末/頭の移動ができる。 + 移動キーが削除オペレータや変更オペレータと共に使われたときは、<EOL> も + 文字に含まれる。このためカーソルが行末を通るときは、"3h" の動きと + "3dh" の動きは異なる。これは "x" と "X" にも当てはまる。それは、それら + のコマンドは "dl" と "dh" と同様に働くからだ。これを使うときは、バック + スペースでカーソル前の文字を削除できるようにするため、マッピング + ":map <BS> X" を使うとよい。 + 値に 'l' が含まれたときは副作用がある。空行で "yl" を実行すると <EOL> + も含まれるため、その後の "p" は新しい行を挿入する。 + NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 + 値に、オフのときはVimの既定値になるので注意。 *'wildchar'* *'wc'* -'wildchar' 'wc' 数値 (Vim default: <Tab>, Vi default: CTRL-E) +'wildchar' 'wc' 数値 (Vimの既定値: <Tab>、Viの既定値: CTRL-E) グローバル {Vi にはない} - Character you have to type to start wildcard expansion in the - command-line, as specified with 'wildmode'. - The character is not recognized when used inside a macro. See - 'wildcharm' for that. - Although 'wc' is a number option, you can set it to a special key: > + コマンドラインで、オプション 'wildmode' で指定したようにワイルドカード + を展開するために打ち込まなければならない文字。 + その文字はマクロ内では認識されない。それには 'wildcharm' を参照。 + このオプションは数値オプションだが、次のように特殊キーも設定できる。 > :set wc=<Esc> -< NOTE: This option is set to the Vi default value when 'compatible' is - set and to the Vim default value when 'compatible' is reset. +< NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 + 値に、オフのときはVimの既定値になるので注意。 *'wildcharm'* *'wcm'* -'wildcharm' 'wcm' 数値 (default: none (0)) +'wildcharm' 'wcm' 数値 (既定では空 (0)) グローバル {Vi にはない} - 'wildcharm' works exactly like 'wildchar', except that it is - recognized when used inside a macro. You can find "spare" command-line - keys suitable for this option by looking at |ex-edit-index|. Normally - you'll never actually type 'wildcharm', just use it in mappings that - automatically invoke completion mode, e.g.: > + このオプションはオプション 'wildchar' と全く同様に働くが、こちらはマク + ロ内でも認識される点が異なっている。|ex-edit-index| を探せば、このオプ + ションに適した「予備」コマンドラインキーが見つかるだろう。普通、ユーザ + が実際に 'wildcharm' で指定されたキーを打ち込むことはない。自動的に補 + 完モードを呼び出すマッピング内でのみ使うこと。例えば次のようにする。 > :set wcm=<C-Z> :cmap ss so $vim/sessions/*.vim<C-Z> -< Then after typing :ss you can use CTRL-P & CTRL-N. +< こうすると ":ss" と打ち込んだ後でコマンド CTRL-P や CTRL-N が使える。 *'wildignore'* *'wig'* 'wildignore' 'wig' 文字列 (既定では "") グローバル {Vi にはない} {Vi mが |+wildignore| 機能付きでコンパイルされたときの - み使用可能} - A list of file patterns. A file that matches with one of these - patterns is ignored when completing file or directory names. - The pattern is used like with |:autocmd|, see |autocmd-patterns|. - Also see 'suffixes'. - Example: > + み有効} + ファイルパターンのリスト。パターンのどれかにマッチしたファイルは、ファ + イル/ディレクトリ名の補完時に無視される。 + パターンは |:autocmd| と同様のものである。|autocmd-patterns| を参照。 + オプション 'suffixes' も参照。 + 例: > :set wildignore=*.o,*.obj -< The use of |:set+=| and |:set-=| is preferred when adding or removing - a pattern from the list. This avoids problems when a future version - uses another default. +< リストにパターンを追加するときにはコマンド |:set+=|、リストからパター + ンを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来のヴァー + ジョンで異なった既定値が使われるようになったときに、問題が起きるのを防 + げる。 *'wildmenu'* *'wmnu'* *'nowildmenu'* *'nowmnu'* 'wildmenu' 'wmnu' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+wildmenu| 機能付きでコンパイルされたときのみ - 使用可能} - When 'wildmenu' is on, command-line completion operates in an enhanced - mode. On pressing 'wildchar' (usually <Tab>) to invoke completion, - the possible matches are shown just above the command line, with the - first match highlighted (overwriting the status line, if there is - one). Keys that show the previous/next match, such as <Tab> or - CTRL-P/CTRL-N, cause the highlight to move to the appropriate match. - When 'wildmode' is used, "wildmenu" mode is used where "full" is - specified. "longest" and "list" do not start "wildmenu" mode. - If there are more matches than can fit in the line, a ">" is shown on - the right and/or a "<" is shown on the left. The status line scrolls - as needed. - The "wildmenu" mode is abandoned when a key is hit that is not used - for selecting a completion. - While the "wildmenu" is active the following keys have special - meanings: - - <Left> <Right> - select previous/next match (like CTRL-P/CTRL-N) - <Down> - in filename/menu name completion: move into a - subdirectory or submenu. - <CR> - in menu completion, when the cursor is just after a - dot: move into a submenu. - <Up> - in filename/menu name completion: move up into - parent directory or parent menu. - - This makes the menus accessible from the console |console-menus|. - - If you prefer the <Left> and <Right> keys to move the cursor instead - of selecting a different match, use this: > + 有効} + オンのとき、コマンドライン補完が拡張モードで行われる。オプション + 'wildchar' で指定されたキー (普通 <Tab>) を打ち込むと補完を開始し、コ + マンドラインのすぐ上に可能性のあるマッチが表示され、最初のマッチが強調 + 表示される (ステータス行があるときは、それを上書きする)。<Tab> や + CTRL-P /CTRL-N 等の前/次のマッチを表示するキーは、強調部分を適切なマッ + チに移動させる。 + 'wildmode' が有効なときは、"full" が指定されたところで "wildmenu" モー + ドが使われる。"longest" と "list" では "wildmenu" モードは開始されない。 + 1行に収め切れない程マッチがあるときは、(訳注: その後にマッチがあるなら) + 文字 ">" が右端に表示され、(訳注: その前にマッチがあるなら) 文字 "<" + が左端に表示される。ステータス行は必要に応じてスクロールする。 + "wildmenu" モードは、補完候補の選択に使われないキーが打ち込まれた時点 + で終了する。 + "wildmenu" が使われているとき、以下のキーは特別な働きを持つ。 + + <Left> <Right> - 前/次のマッチを選択 (CTRL-P/CTRL-N と同じ) + <Down> - ファイル/メニュー名補完時: サブディレクトリ/メニュー + に移動する。 + <CR> - メニュー補完時、カーソルがドットの直後にあるとき: サ + ブメニューに移動する。 + <Up> - ファイル/メニュー名補完時: 親ディレクトリ/メニュー + に移動する。 + + これにより、メニューがコンソールから扱える |console-menus|。 + + <Left> や <Right> キーで、別のマッチに移動するのではなく、カーソルを移 + 動させたいときは、次のようにする。 > :cnoremap <Left> <Space><BS><Left> :cnoremap <Right> <Space><BS><Right> < - The "WildMenu" highlighting is used for displaying the current match - |hl-WildMenu|. + 現在のマッチの表示には、強調表示グループ "WildMenu" が使われる + |hl-WildMenu|。 *'wildmode'* *'wim'* -'wildmode' 'wim' 文字列 (Vim default: "full") - グローバル - {Vi にはない} - Completion mode that is used for the character specified with - 'wildchar'. It is a comma separated list of up to four parts. Each - part specifies what to do for each consecutive use of 'wildchar. The - first part specifies the behavior for the first use of 'wildchar', - The second part for the second use, etc. - These are the possible values for each part: - "" Complete only the first match. - "full" Complete the next full match. After the last match, - the original string is used and then the first match - again. - "longest" Complete till longest common string. If this doesn't - result in a longer string, use the next part. - "longest:full" Like "longest", but also start 'wildmenu' if it is - enabled. - "list" When more than one match, list all matches. - "list:full" When more than one match, list all matches and - complete first match. - "list:longest" When more than one match, list all matches and - complete till longest common string. - When there is only a single match, it is fully completed in all cases. - - Examples: > +'wildmode' 'wim' 文字列 (Vimの既定値は "full") + グローバル + {Vi にはない} + オプション 'wildchar' で指定されたキーで開始する補完モード。値は、キー + ワードの4個までのコンマ区切りのリストである。それぞれのキーワードで、 + 連続して 'wildchar' を使ったときの動作を指定する。1個目のキーワードが + 'wildchar' を1回目に使ったときの動作を指定し、2個目のキーワードが2回目 + の動作を指定、等となる。 + 指定可能なキーワードは、以下の通りである。 + "" 最初のマッチのみを補完する。 + "full" 次のマッチを完全に補完する。最後のマッチの次には元の文 + 字列が使われ、その次は再び最初のマッチが補完される。 + "longest" 共通する最長の文字列までが補完される。それ以上長い文字 + 列を補完できないときは、次の候補に移る。 + "longest:full" "longest" と似ているが、'wildmenu' が有効ならばそれを + 開始する。 + "list" 複数のマッチがあるときは、全てのマッチを羅列する。 + "list:full" 複数のマッチがあるときは、全てのマッチを羅列し、最初の + マッチを補完する。 + "list:longest" 複数のマッチがあるときは、全てのマッチを羅列し、共通す + る最長の文字列までが補完される。 + マッチが1個しかないときは、どの場合でも完全に補完される。 + + 例: > :set wildmode=full -< Complete first full match, next match, etc. (the default) > +< 最初のマッチ、次のマッチ...を完全に補完する (既定値) > :set wildmode=longest,full -< Complete longest common string, then each full match > +< 共通する最長の文字列を補完し、次からマッチを完全に補完する > :set wildmode=list:full -< List all matches and complete each full match > +< 全てのマッチを羅列し、そして最初のマッチを完全に補完する > :set wildmode=list,full -< List all matches without completing, then each full match > +< 補完せずに全てのマッチを羅列し、次からマッチを完全に補完する > :set wildmode=longest,list -< Complete longest common string, then list alternatives. +< 共通する最長の文字列を補完し、次から他の候補を羅列する *'winaltkeys'* *'wak'* -'winaltkeys' 'wak' 文字列 (default "menu") - グローバル - {Vi にはない} - {only used in Win32, Motif, GTK and Photon GUI} - Some GUI versions allow the access to menu entries by using the ALT - key in combination with a character that appears underlined in the - menu. This conflicts with the use of the ALT key for mappings and - entering special characters. This option tells what to do: - no Don't use ALT keys for menus. ALT key combinations can be - mapped, but there is no automatic handling. This can then be - done with the |:simalt| command. - yes ALT key handling is done by the windowing system. ALT key - combinations cannot be mapped. - menu Using ALT in combination with a character that is a menu - shortcut key, will be handled by the windowing system. Other - keys can be mapped. - If the menu is disabled by excluding 'm' from 'guioptions', the ALT - key is never used for the menu. - In the Win32 version, the <F10> key is handled like this too, since - Windows uses it to select a menu. +'winaltkeys' 'wak' 文字列 (既定では "menu") + グローバル + {Vi にはない} + {Vi mのWin32版、Motif版、GTK版、Photon GUI版でのみ有効} + GUI版では、メニュー内で下線付きで表示されている文字とALTキーを組み合わ + せて使うことで、メニューの項目にアクセスできるものがある。これはマッピ + ングや特殊な文字の入力にALTキーを使うことと衝突する。このオプションは、 + そのときの動作を指定する。 + no ALTキーをメニューに使わない。ALTキーを使った組み合わせはマッピ + ングに使えるが、自動的にメニューの操作に使われることはない。こ + のときメニューの操作は、コマンド |:simalt| で可能である。 + yes ALTキーの扱いはウィンドウシステムに任される。ALTキーとのキーの + 組み合わせは、マッピングには使えない。 + menu メニューのショートカットキーになっている文字と組み合わせてALT + キーを使うとウィンドウシステムが扱うが、他のキーはマッピングに + 使える。 + オプション 'guioptions' からフラグ 'm' が取り除かれ、メニューが無効に + なっていると、ALT キーはメニューには全く使われない。 + Win32版では、キー <F10> も同様に扱われる。それはMS-Windowsはこれをメ + ニューの選択に使うからである。 *'winheight'* *'wh'* 'winheight' 'wh' 数値 (既定では 1) グローバル {Vi にはない} {Vi mが |+windows| 機能付きでコンパイルされたときのみ - 使用可能} - Minimal number of lines for the current window. This is not a hard - minimum, Vim will use fewer lines if there is not enough room. If the - current window is smaller, its size is increased, at the cost of the - height of other windows. Set it to 999 to make the current window - always fill the screen. Set it to a small number for normal editing. - The height is not adjusted after one of the commands to change the - height of the current window. - 'winheight' applies to the current window. Use 'winminheight' to set - the minimal height for other windows. + 有効} + カレントウィンドウの行数の最小値。これは絶対的な最小値ではなく、余裕の + ないときには行数はこれよりも少なくなる。カレントウィンドウの行数が指定 + したものより少ないときは、他のウィンドウの行数を減らしてそれを増やす。 + カレントウィンドウが常に画面を埋めるようにするには、値を 999 にするこ + と。普通の編集時には小さい値にすること。 + カレントウィンドウの高さを変更するコマンドの後では、ウィンドウの高さは + 調整されない。 + 'winheight' はカレントウィンドウに適用される。他のウィンドウの高さの最 + 小値の設定には、'winminheight' を使うこと。 *'winminheight'* *'wmh'* 'winminheight' 'wmh' 数値 (既定では 1) グローバル {Vi にはない} {Vi mが |+windows| 機能付きでコンパイルされたときのみ - 使用可能} - The minimal height of a window, when it's not the current window. - This is a hard minimum, windows will never become smaller. - When set to zero, windows may be "squashed" to zero lines (i.e. just a - status bar) if necessary. They will return to at least one line when - they become active (since the cursor has to have somewhere to go.) - Use 'winheight' to set the minimal height of the current window. - This option is only checked when making a window smaller. Don't use a - large number, it will cause errors when opening more than a few - windows. A value of 0 to 3 is reasonable. + 有効} + カレントウィンドウではないウィンドウの高さの最小値。これは絶対的な最小 + 値であり、ウィンドウは決してこれより低くはならない。 + 0 に設定すると、ウィンドウは必要に応じて高さゼロに「潰される」 (つまり、 + ステータス行のみになる)。ウィンドウがアクティブになると、高さは最低 1 + 行にはなる (カーソルの居場所が必要なため)。 + カレントウィンドウの高さの最小値の設定には、'winheight' を使うこと。 + このオプションの効果があるのは、ウィンドウを小さくするときだけである。 + 大きな値を使わないこと。そうするとウィンドウを幾つも開いたときにエラー + になる。値は 0 から 3 までが適当である。 *'winminwidth'* *'wmw'* 'winminwidth' 'wmw' 数値 (既定では 1) グローバル {Vi にはない} {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み使用可能} - The minimal width of a window, when it's not the current window. - This is a hard minimum, windows will never become smaller. - When set to zero, windows may be "squashed" to zero columns (i.e. just - a vertical separator) if necessary. They will return to at least one - line when they become active (since the cursor has to have somewhere - to go.) - Use 'winwidth' to set the minimal width of the current window. - This option is only checked when making a window smaller. Don't use a - large number, it will cause errors when opening more than a few - windows. A value of 0 to 12 is reasonable. + み有効} + カレントウィンドウではないウィンドウの幅の最小値。これは絶対的な最小値 + であり、ウィンドウは決してこれより狭くはならない。 + 0 に設定すると、ウィンドウは必要に応じて幅ゼロに「潰される」 (つまり、 + 垂直分割の区切りのみになる)。ウィンドウがアクティブになると、幅は最低 + 1 列にはなる (カーソルの居場所が必要なため)。 + カレントウィンドウの幅の最小値の設定には、'winwidth' を使うこと。 + このオプションの効果があるのは、ウィンドウを小さくするときだけである。 + 大きな値を使わないこと。そうするとウィンドウを幾つも開いたときにエラー + になる。値は 0 から 12 までが適当である。 *'winwidth'* *'wiw'* 'winwidth' 'wiw' 数値 (既定では 20) グローバル {Vi にはない} {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み使用可能} - Minimal number of columns for the current window. This is not a hard - minimum, Vim will use fewer columns if there is not enough room. If - the current window is smaller, its size is increased, at the cost of - the width of other windows. Set it to 999 to make the current window - always fill the screen. Set it to a small number for normal editing. - The width is not adjusted after one of the commands to change the - width of the current window. - 'winwidth' applies to the current window. Use 'winminwidth' to set - the minimal width for other windows. + み有効} + カレントウィンドウの列数の最小値。これは絶対的な最小値ではなく、余裕の + ないときには列数はこれよりも少なくなる。カレントウィンドウの列数が指定 + したものより少ないときは、他のウィンドウの列数を減らしてそれを増やす。 + カレントウィンドウが常に画面を埋めるようにするには、999 に設定すること。 + 普通の編集時には小さい値に設定すること。 + カレントウィンドウの幅を変更するコマンドの後では、ウィンドウの幅は調整 + されない。 + 'winwidth' はカレントウィンドウに適用される。他のウィンドウの幅の最小 + 値の設定には、'winminwidth' を使うこと。 *'wrap'* *'nowrap'* 'wrap' 切替 (既定ではオン) ウィンドウについてローカル {Vi にはない} - This option changes how text is displayed. It doesn't change the text - in the buffer, see 'textwidth' for that. - When on, lines longer than the width of the window will wrap and - displaying continues on the next line. When off lines will not wrap - and only part of long lines will be displayed. When the cursor is - moved to a part that is not shown, the screen will scroll - horizontally. - The line will be broken in the middle of a word if necessary. See - 'linebreak' to get the break at a word boundary. - To make scrolling horizontally a bit more useful, try this: > + このオプションは、テキストの表示方法を変える。これはバッファ内のテキス + トには変更を与えない。それについてはオプション 'textwidth' を参照。 + オンのときは、ウィンドウの幅より長い行は折り返され、次の行に続けて表示 + される。オフのときは、折り返しは行われず、長い行は一部のみが表示される。 + カーソルが表示されていない部分に移動すると、画面は水平スクロールする。 + 行の分割は、必要であれば単語の中ででも行われる。折り返しを単語の境界で + 行うには、'linebreak' を参照。 + 水平スクロールをもっと便利にするには、次のようにしてみるとよい。 > :set sidescroll=5 :set listchars+=precedes:<,extends:> -< See 'sidescroll', 'listchars' and |wrap-off|. +< 'sidescroll'、'listchars' や |wrap-off| を参照。 *'wrapmargin'* *'wm'* 'wrapmargin' 'wm' 数値 (既定では 0) バッファについてローカル - 数値 of characters from the right window border where wrapping - starts. When typing text beyond this limit, an <EOL> will be inserted - and inserting continues on the next line. When 'textwidth' is - non-zero, this option is not used. See also 'formatoptions' and - |ins-textwidth|. {Vi: works differently and less usefully} + ウィンドウの右端からこの文字数だけ離れたところで折り返しが始まる。この + 境界を超えてテキストを入力すると、 <EOL> が挿入され、挿入は次行に続く。 + オプション 'textwidth' が非0 のときは、このオプションは使われない。 + 'formatoptions' と |ins-textwidth| も参照。 {Vi: 少し不便な、違った動 + 作をする} *'wrapscan'* *'ws'* *'nowrapscan'* *'nows'* 'wrapscan' 'ws' 切替 (既定ではオン) *E384* *E385* グローバル - Searches wrap around the end of the file. + 検索がファイル末尾まで進んだら、ファイル先頭から再び検索する。 *'write'* *'nowrite'* 'write' 切替 (既定ではオン) グローバル {Vi にはない} - Allows writing files. When not set, writing a file is not allowed. - Can be used for a view-only mode, where modifications to the text are - still allowed. Can be reset with the |-m| or |-M| command line - argument. Filtering text is still possible, even though this requires - writing a temporary file. + ファイルの書き込みを有効にする。オフのときは、書き込みができない。読込 + 専用モードに使える。ただしファイルの編集は可能である。コマンドライン引 + 数 |-m| や |-M| を使ってオフに設定できる。テキストをフィルタにかけるこ + とも可能であり、一時ファイルの書き込みも可能である。 *'writeany'* *'wa'* *'nowriteany'* *'nowa'* 'writeany' 'wa' 切替 (既定ではオフ) グローバル - Allows writing to any file with no need for "!" override. + いかなるファイルも "!" なしに書き込みができる。 *'writebackup'* *'wb'* *'nowritebackup'* *'nowb'* -'writebackup' 'wb' 切替 (default on with |+writebackup| feature, off - otherwise) +'writebackup' 'wb' 切替 (|+writebackup| 機能付きでコンパイルされたなら + 既定値はオン、そうでないなら既定値はオフ) グローバル {Vi にはない} - Make a backup before overwriting a file. The backup is removed after - the file was successfully written, unless the 'backup' option is - also on. Reset this option if your file system is almost full. See - |backup-table| for another explanation. - When the 'backupskip' pattern matches, a backup is not made anyway. - NOTE: This option is set to the default value when 'compatible' is - set. + ファイルの上書きの前にバックアップを作る。オプション 'backup' がオンで + ない限り、バックアップは上書きに成功した後削除される。ユーザのファイル + システムがほとんど一杯ならばこのオプションをオフにすること。他の説明は + |backup-table| を参照。 + 'backupskip' のパターンがマッチしたら、バックアップは作られない。 + NOTE: このオプションは、オプション 'compatible' がオンのときは既定値に + なるので注意。 *'writedelay'* *'wd'* 'writedelay' 'wd' 数値 (既定では 0) グローバル {Vi にはない} - The number of microseconds to wait for each character sent to the - screen. When non-zero, characters are sent to the terminal one by - one. For MS-DOS pcterm this does not work. For debugging purposes. + 打ち込まれた文字が画面に送られるまでの遅延時間を、1万分の1秒単位 + で指定する。非0 のときは、文字は画面に一つ一つ送られる。MS-DOSの + pcterm では動作しない。これはデバッグ用のオプションである。 vim:tw=78:ts=8:ft=help:norl: From c3671551782457d6a48acaa42ab303e0f97a25c4 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Mon, 18 Sep 2006 03:05:29 +0000 Subject: [PATCH 053/783] fix: update ja/various.jax to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@53 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/various.jax | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ja/various.jax b/ja/various.jax index 486da3443..a8c84d116 100644 --- a/ja/various.jax +++ b/ja/various.jax @@ -3,7 +3,7 @@ STATUS: finished 7.0e TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*various.txt* For Vim version 7.0e. Last change: 2006 Apr 22 +*various.txt* For Vim version 7.0. Last change: 2006 Apr 25 VIM リファレンスマニュアル by Bram Moolenaar @@ -90,7 +90,7 @@ g8 カーソル位置の文字のバイト列を 16 進数で表示します {Vi にはない} {|+multi_byte| が有効な場合のみ利用でき ます} - *:p* *:pr* *:print* + *:p* *:pr* *:print* *E749* :[range]p[rint] [flags] 範囲 [range] の行を表示します (省略時は現在行を表示)。 Note: テキストファイルを印刷する方法については @@ -325,7 +325,7 @@ N *+insert_expand* |insert_expand| 挿入モード補完 N *+jumplist* |jumplist| B *+keymap* |'keymap'| B *+langmap* |'langmap'| -N *+liball* |libcall()| +N *+libcall* |libcall()| N *+linebreak* |'linebreak'|、|'breakat'| と |'showbreak'| N *+lispindent* |'lisp'| N *+listcmds* バッファリストや引数リストに対するVimコマンド @@ -341,8 +341,9 @@ N *+mouse_gpm* Unix のみ: Linuxコンソールマウス操作 |gpm-mouse| B *+mouse_netterm* Unix のみ: nettermマウス操作 |netterm-mouse| N *+mouse_pterm* QNX のみ: ptermマウス操作 |qnx-terminal| N *+mouse_xterm* Unix のみ: xtermマウス操作 |xterm-mouse| - *+multi_byte* マルチバイト文字(日韓中) |multibyte| -N *+multi_byte_ime* Win32 IMEサポート +B *+multi_byte* マルチバイト文字(日韓中) |multibyte| + *+multi_byte_ime* Win32 IMEサポート +N *+multi_lang* 多言語サポート |multi-lang| m *+mzscheme* Mzscheme インターフェース |mzscheme| m *+mzscheme/dyn* Mzscheme インターフェース |mzscheme-dynamic| |/dyn| m *+netbeans_intg* |netbeans| @@ -377,6 +378,7 @@ m *+tag_any_white* tagsファイル内で空白文字を許す |tag-any-white| m *+tcl* Tcl インターフェース |tcl| m *+tcl/dyn* Tcl インターフェース |tcl-dynamic| |/dyn| *+terminfo* |terminfo|でtermcapを代替 +N *+termresponse* |t_RV| と |v:termresponse| のサポート N *+textobjects* |text-objects| 選択 *+tgetent* 非Unix のみ: 外部termcapを使用可能 N *+title* ウィンドウタイトル設定 |'title'| @@ -384,7 +386,7 @@ N *+toolbar* |gui-toolbar| N *+user_commands* ユーザ定義コマンド |user-commands| N *+viminfo* |'viminfo'| N *+vertsplit* ウィンドウの垂直分割 |:vsplit| -N *+vertualedit* |'virtualedit'| +N *+virtualedit* |'virtualedit'| S *+visual* ビジュアルモード |Visual-mode| N *+visualextra* 拡張ビジュアルモードコマンド |blockwise-operators| N *+vreplace* |gR|と|gr| From 0f52c26b152649d2fb1ba84090cb5e3fe9d5b4ed Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Mon, 18 Sep 2006 03:08:50 +0000 Subject: [PATCH 054/783] fix: update en/various.txt to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@54 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/various.txt | 562 +++++++++++++------------------------------------ 1 file changed, 151 insertions(+), 411 deletions(-) diff --git a/en/various.txt b/en/various.txt index 8d2f0ff38..2f1d3fff6 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 6.3. Last change: 2004 May 01 +*various.txt* For Vim version 7.0. Last change: 2006 Apr 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -8,14 +8,14 @@ Various commands *various* 1. Various commands |various-cmds| 2. Online help |online-help| -3. Printing |printing| -4. Using Vim like less or more |less| +3. Using Vim like less or more |less| ============================================================================== 1. Various commands *various-cmds* *CTRL-L* -CTRL-L Clear and redraw the screen (later). +CTRL-L Clear and redraw the screen. The redraw may happen + later, after processing typeahead. *:redr* *:redraw* :redr[aw][!] Redraw the screen right now. When ! is included it is @@ -55,52 +55,79 @@ ga Print the ascii value of the character under the The <Nul> character in a file is stored internally as <NL>, but it will be shown as: <^@> 0, Hex 00, Octal 000 ~ + If the character has composing characters these are + also shown. The value of 'maxcombine' doesn't matter. Mnemonic: Get Ascii value. {not in Vi} *g8* g8 Print the hex values of the bytes used in the character under the cursor, assuming it is in |UTF-8| - encoding. This also shows composing characters. - Example of a character with three composing - characters: + encoding. This also shows composing characters. The + value of 'maxcombine' doesn't matter. + Example of a character with two composing characters: e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ - {not in Vi} + {not in Vi} {only when compiled with the |+multi_byte| + feature} + + *8g8* +8g8 Find an illegal UTF-8 byte sequence at or after the + cursor. This works in two situations: + 1. when 'encoding' is any 8-bit encoding + 2. when 'encoding' is "utf-8" and 'fileencoding' is + any 8-bit encoding + Thus it can be used when editing a file that was + supposed to be UTF-8 but was read as if it is an 8-bit + encoding because it contains illegal bytes. + Does not wrap around the end of the file. + Note that when the cursor is on an illegal byte or the + cursor is halfway a multi-byte character the command + won't move the cursor. + {not in Vi} {only when compiled with the |+multi_byte| + feature} - *:p* *:pr* *:print* -:[range]p[rint] Print [range] lines (default current line). + *:p* *:pr* *:print* *E749* +:[range]p[rint] [flags] + Print [range] lines (default current line). Note: If you are looking for a way to print your text - file, you need an external program for that. In the - GUI you can use the File.Print menu entry. - (For printing on paper see |:hardcopy|) + on paper see |:hardcopy|. In the GUI you can use the + File.Print menu entry. + See |ex-flags| for [flags]. -:[range]p[rint] {count} +:[range]p[rint] {count} [flags] Print {count} lines, starting with [range] (default current line |cmdline-ranges|). + See |ex-flags| for [flags]. *:P* *:Print* -:[range]P[rint] [count] +:[range]P[rint] [count] [flags] Just as ":print". Was apparently added to Vi for people that keep the shift key pressed too long... + See |ex-flags| for [flags]. *:l* *:list* -:[range]l[ist] [count] +:[range]l[ist] [count] [flags] Same as :print, but display unprintable characters - with '^'. + with '^' and put $ after the line. + See |ex-flags| for [flags]. *:nu* *:number* -:[range]nu[mber] [count] +:[range]nu[mber] [count] [flags] Same as :print, but precede each line with its line - number. (See also 'highlight' option). + number. (See also 'highlight' and 'numberwidth' + option). + See |ex-flags| for [flags]. *:#* -:[range]# [count] synonym for :number. +:[range]# [count] [flags] + synonym for :number. *:z* *E144* :{range}z[+-^.=]{count} Display several lines of text surrounding the line specified with {range}, or around the current line if there is no {range}. If there is a {count}, that's - how many lines you'll see; otherwise, the current - window size is used. + how many lines you'll see; if there is only one window + then the 'window' option is used, otherwise the + current window size is used. :z can be used either alone or followed by any of several punctuation marks. These have the following @@ -111,8 +138,8 @@ g8 Print the hex values of the bytes used in the + current line 1 scr forward 1 scr forward - 1 scr back current line current line ^ 2 scr back 1 scr back 1 scr back - . 1/2 scr back 1/2 scr fwd 1/2 src fwd - = 1/2 src back 1/2 scr fwd current line + . 1/2 scr back 1/2 scr fwd 1/2 scr fwd + = 1/2 scr back 1/2 scr fwd current line Specifying no mark at all is the same as "+". If the mark is "=", a line of dashes is printed @@ -123,11 +150,13 @@ g8 Print the hex values of the bytes used in the {not in all versions of Vi, not with these arguments} *:=* -:= Print the last line number. +:= [flags] Print the last line number. + See |ex-flags| for [flags]. -:{range}= Prints the last line number in {range}. For example, +:{range}= [flags] Prints the last line number in {range}. For example, this prints the current line number: > :.= +< See |ex-flags| for [flags]. :norm[al][!] {commands} *:norm* *:normal* Execute Normal mode commands {commands}. This makes @@ -141,8 +170,9 @@ g8 Print the hex values of the bytes used in the The display isn't updated while ":normal" is busy. This implies that an insert command must be completed (to start Insert mode, see |:startinsert|). A ":" - command must be completed as well. - {commands} cannot start with a space. Put a 1 (one) + command must be completed as well. And you can't use + "Q" or "gQ" to start Ex mode. + {commands} cannot start with a space. Put a 1 (one) before it, 1 space is one space. The 'insertmode' option is ignored for {commands}. This command cannot be followed by another command, @@ -241,7 +271,9 @@ g8 Print the hex values of the bytes used in the *+ARP* Amiga only: ARP support included B *+arabic* |Arabic| language support N *+autocmd* |:autocmd|, automatic commands -m *+balloon_eval* |balloon-eval| support +m *+balloon_eval* |balloon-eval| support. Included when compiling with + supported GUI (Motif, GTK, GUI) and either + Netbeans/Sun Workshop integration or |+eval| feature. N *+browse* |:browse| command N *+builtin_terms* some terminals builtin |builtin-terms| B *++builtin_terms* maximal terminals builtin |builtin-terms| @@ -256,6 +288,8 @@ N *+cmdline_info* |'showcmd'| and |'ruler'| N *+comments* |'comments'| support N *+cryptv* encryption support |encryption| B *+cscope* |cscope| support +m *+cursorshape* |termcap-cursor-shape| support +m *+debug* Compiled for debugging. N *+dialog_gui* Support for |:confirm| with GUI dialog. N *+dialog_con* Support for |:confirm| with console dialog. N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. @@ -277,12 +311,12 @@ N *+folding* |folding| N *+gettext* message translations |multi-lang| *+GUI_Athena* Unix only: Athena |GUI| *+GUI_neXtaw* Unix only: neXtaw |GUI| - *+GUI_BeOS* BeOS only: BeOS |GUI| *+GUI_GTK* Unix only: GTK+ |GUI| *+GUI_Motif* Unix only: Motif |GUI| *+GUI_Photon* QNX only: Photon |GUI| m *+hangul_input* Hangul input support |hangul| - *+iconv* Compiled with the |iconv()| function, may have |/dyn| + *+iconv* Compiled with the |iconv()| function + *+iconv/dyn* Likewise |iconv-dynamic| |/dyn| N *+insert_expand* |insert_expand| Insert mode completion N *+jumplist* |jumplist| B *+keymap* |'keymap'| @@ -306,18 +340,25 @@ N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| B *+multi_byte* Korean and other languages |multibyte| *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| N *+multi_lang* non-English language support |multi-lang| +m *+mzscheme* Mzscheme interface |mzscheme| +m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn| m *+netbeans_intg* |netbeans| m *+ole* Win32 GUI only: |ole-interface| *+osfiletype* Support for the 'osfiletype' option and filetype checking in automatic commands. |autocmd-osfiletypes| N *+path_extra* Up/downwards search in 'path' and 'tags' -m *+perl* Perl interface |perl|, may have |/dyn| +m *+perl* Perl interface |perl| +m *+perl/dyn* Perl interface |perl-dynamic| |/dyn| *+postscript* |:hardcopy| writes a PostScript file N *+printer* |:hardcopy| command -m *+python* Python interface |python|, may have |/dyn| +H *+profile* |:profile| command +m *+python* Python interface |python| +m *+python/dyn* Python interface |python-dynamic| |/dyn| N *+quickfix* |:make| and |quickfix| commands +N *+reltime* |reltime()| function B *+rightleft* Right to left typing |'rightleft'| -m *+ruby* Ruby interface |ruby|, may have |/dyn| +m *+ruby* Ruby interface |ruby| +m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| N *+scrollbind* |'scrollbind'| B *+signs* |:sign| N *+smartindent* |'smartindent'| @@ -330,7 +371,8 @@ N *+syntax* Syntax highlighting |syntax| N *+tag_binary* binary searching in tags file |tag-binary-search| N *+tag_old_static* old method for static tags |tag-old-static| m *+tag_any_white* any white space allowed in tags file |tag-any-white| -m *+tcl* Tcl interface |tcl|, may have |/dyn| +m *+tcl* Tcl interface |tcl| +m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn| *+terminfo* uses |terminfo| instead of termcap N *+termresponse* support for |t_RV| and |v:termresponse| N *+textobjects* |text-objects| selection @@ -379,18 +421,39 @@ N *+X11* Unix only: can restore window title |X11| To stop the messages and commands from being echoed to the screen, put the commands in a function and call it with ":silent call Function()". + An alternative is to use the 'verbosefile' option, + this can be used in combination with ":redir". {not in Vi} :redi[r] >> {file} Redirect messages to file {file}. Append if {file} already exists. {not in Vi} -:redi[r] @{a-zA-Z} Redirect messages to register {a-z}. Append to the +:redi[r] @{a-zA-Z}> Redirect messages to register {a-z}. Append to the contents of the register if its name is given - uppercase {A-Z}. {not in Vi} - -:redi[r] @* Redirect messages to the clipboard. {not in Vi} - -:redi[r] @" Redirect messages to the unnamed register. {not in Vi} + uppercase {A-Z}. For backward compatibility, the ">" + after the register name can be omitted. {not in Vi} +:redi[r] @{a-z}>> Append messages to register {a-z}. {not in Vi} + +:redi[r] @*> Redirect messages to the clipboard. For backward + compatibility, the ">" after the register name can be + omitted. {not in Vi} +:redi[r] @*>> Append messages to the clipboard. {not in Vi} + +:redi[r] @"> Redirect messages to the unnamed register. For + backward compatibility, the ">" after the register + name can be omitted. {not in Vi} +:redi[r] @">> Append messages to the unnamed register. {not in Vi} + +:redi[r] => {var} Redirect messages to a variable. If the variable + doesn't exist, then it is created. If the variable + exists, then it is initialized to an empty string. + Only string variables can be used. After the + redirection starts, if the variable is removed or + locked or the variable type is changed, then further + command output messages will cause errors. {not in Vi} + +:redi[r] =>> {var} Append messages to an existing variable. Only string + variables can be used. {not in Vi} :redi[r] END End redirecting messages. {not in Vi} @@ -431,7 +494,8 @@ N *+X11* Unix only: can restore window title |X11| *:verb* *:verbose* :[count]verb[ose] {command} Execute {command} with 'verbose' set to [count]. If - [count] is omitted one is used. + [count] is omitted one is used. ":0verbose" can be + used to set 'verbose' to zero. The additional use of ":silent" makes messages generated but not displayed. The combination of ":silent" and ":verbose" can be @@ -447,6 +511,17 @@ N *+X11* Unix only: can restore window title |X11| :4verbose set verbose | set verbose < verbose=4 ~ verbose=0 ~ + For logging verbose messages in a file use the + 'verbosefile' option. + + *:verbose-cmd* +When 'verbose' is non-zero, listing the value of a Vim option or a key map or +an abbreviation or a user-defined function or a command or a highlight group +or an autocommand will also display where it was last defined. If it was +defined manually then there will be no "Last set" message. When it was +defined while executing a function, user command or autocommand, the script in +which it was defined is reported. +{not available when compiled without the +eval feature} *K* K Run a program to lookup the keyword under the @@ -481,16 +556,16 @@ K Run a program to lookup the keyword under the [N]gs *gs* *:sl* *:sleep* :[N]sl[eep] [N] [m] Do nothing for [N] seconds. When [m] is included, - sleep for [N] milliseconds. The count for "gs" always + sleep for [N] milliseconds. The count for "gs" always uses seconds. The default is one second. > :sleep "sleep for one second :5sleep "sleep for five seconds :sleep 100m "sleep for a hundred milliseconds 10gs "sleep for ten seconds < Can be interrupted with CTRL-C (CTRL-Break on MS-DOS). - "gs" stands for "goto sleep". While sleeping the - cursor is positioned in the text (if visible). {not - in Vi} + "gs" stands for "goto sleep". + While sleeping the cursor is positioned in the text, + if at a visible position. {not in Vi} *g_CTRL-A* g CTRL-A Only when Vim was compiled with MEM_PROFILING defined @@ -570,9 +645,11 @@ g CTRL-A Only when Vim was compiled with MEM_PROFILING defined current file. See |help-translated|. *:helpg* *:helpgrep* -:helpg[rep] {pattern} +:helpg[rep] {pattern}[@xx] Search all help text files and make a list of lines in which {pattern} matches. Jumps to the first match. + The optional [@xx] specifies that only matches in the + "xx" language are to be found. You can navigate through the matches with the |quickfix| commands, e.g., |:cnext| to jump to the next one. Or use |:cwindow| to get the list of @@ -583,6 +660,8 @@ g CTRL-A Only when Vim was compiled with MEM_PROFILING defined :helpgrep Uganda < Example for case ignoring search: > :helpgrep uganda\c +< Example for searching in French help: > + :helpgrep backspace@fr < Cannot be followed by another command, everything is used as part of the pattern. But you can use |:execute| when needed. @@ -590,6 +669,22 @@ g CTRL-A Only when Vim was compiled with MEM_PROFILING defined compresses the help files). {not in Vi} + *:lh* *:lhelpgrep* +:lh[elpgrep] {pattern}[@xx] + Same as ":helpgrep", except the location list is used + instead of the quickfix list. If the help window is + already opened, then the location list for that window + is used. Otherwise, a new help window is opened and + the location list for that window is set. The + location list for the current window is not changed. + + *:exu* *:exusage* +:exu[sage] Show help on Ex commands. Added to simulate the Nvi + command. {not in Vi} + + *:viu* *:viusage* +:viu[sage] Show help on Normal mode commands. Added to simulate + the Nvi command. {not in Vi} When no argument is given to |:help| the file given with the 'helpfile' option will be opened. Otherwise the specified tag is searched for in all "doc/tags" @@ -661,6 +756,14 @@ It is possible to add translated help files, next to the original English help files. Vim will search for all help in "doc" directories in 'runtimepath'. This is only available when compiled with the |+multi_lang| feature. +At this moment translations are available for: + Chinese - multiple authors + French - translated by David Blanchet + Italian - translated by Antonio Colombo + Polish - translated by Mikolaj Machowski + Russian - translated by Vassily Ragosin +See the Vim website to find them: http://www.vim.org/translations.php + A set of translated help files consists of these files: help.abx @@ -716,370 +819,7 @@ Hints for translators: languages in the specified directory. ============================================================================== -3. Printing *printing* - -On MS-Windows Vim can print your text on any installed printer. On other -systems a PostScript file is produced. This can be directly sent to a -PostScript printer. For other printers a program like ghostscript needs to be -used. - -3.1 PostScript Printing |postscript-printing| -3.2 PostScript Printing Encoding |postscript-print-encoding| -3.3 PostScript Printing Troubleshooting |postscript-print-trouble| -3.4 PostScript Utilities |postscript-print-util| -3.5 Formfeed Characters |printing-formfeed| - -{not in Vi} -{only available when compiled with |+printer| feature} - - *:ha* *:hardcopy* *E237* *E238* *E324* -:[range]ha[rdcopy][!] [arguments] - Send [range] lines (default whole file) to the - printer. - - On MS-Windows a dialog is displayed to allow selection - of printer, paper size etc. To skip the dialog, use - the [!]. In this case the printer defined by - 'printdevice' is used, or, if 'printdevice' is empty, - the system default printer. - - For systems other than MS-Windows, PostScript is - written in a temp file and 'printexpr' is used to - actually print it. Then [arguments] can be used by - 'printexpr' through |v:cmdarg|. Otherwise [arguments] - is ignored. 'printoptions' can be used to specify - paper size, duplex, etc. - -:[range]ha[rdcopy][!] >{filename} - As above, but write the resulting PostScript in file - {filename}. - Things like "%" are expanded |cmdline-special| - Careful: An existing file is silently overwritten. - {only available when compiled with the |+postscript| - feature} - On MS-Windows use the "print to file" feature of the - printer driver. - -Progress is displayed during printing as a page number and a percentage. To -abort printing use the interrupt key (CTRL-C or, on MS-systems, CTRL-Break). - -Printer output is controlled by the 'printfont' and 'printoptions' options. -'printheader' specifies the format of a page header. - -The printed file is always limited to the selected margins, irrespective of -the current window's 'wrap' or 'linebreak' settings. The "wrap" item in -'printoptions' can be used to switch wrapping off. -The current highlighting colors are used in the printout, with the following -considerations: -1) The normal background is always rendered as white (i.e. blank paper.) -2) White text or the default foreground is rendered as black, so that it shows - up! -3) If 'background' is "dark", then the colours are darkened to compensate for - the fact that otherwise they would be too bright to show up clearly on - white paper. - - -3.1 PostScript Printing *postscript-printing* - *E455* *E456* *E457* *E624* -Provided you have enough disk space there should be no problems generating a -PostScript file. You need to have the runtime files correctly installed (if -you can find the help files, they probably are). - -There are currently a number of limitations with PostScript printing: - -- 'printfont' - The font name is ignored (the Courier family is always used - - it should be available on all PostScript printers) but the font size is - used. - -- 'printoptions' - The duplex setting is used when generating PostScript - output, but it is up to the printer to take notice of the setting. If the - printer does not support duplex printing then it should be silently ignored. - Some printers, however, don't print at all. - -- 8-bit support - While a number of 8-bit print character encodings are - supported it is possible that some characters will not print. Whether a - character will print depends on the font in the printer knowing the - character. Missing characters will be replaced with an upside down question - mark, or a space if that character is also not known by the font. It may be - possible to get all the characters in an encoding to print by installing a - new version of the Courier font family. - -- Multi-byte support - Currently VIM will try to convert multi-byte characters - to the 8-bit encoding specified by 'printencoding' (or latin1 if it is - empty). Any characters that are not successfully converted are shown as - unknown characters. Printing will fail if VIM cannot convert the multi-byte - to the 8-bit encoding. - - -3.2 Custom 8-bit Print Character Encodings *postscript-print-encoding* - *E618* *E619* -To use your own print character encoding when printing 8-bit character data -you need to define your own PostScript font encoding vector. Details on how -to to define a font encoding vector is beyond the scope of this help file, but -you can find details in the PostScript Language Reference Manual, 3rd Edition, -published by Addison-Wesley and available in PDF form at -http://www.adobe.com/. The following describes what you need to do for VIM to -locate and use your print character encoding. - -i. Decide on a unique name for your encoding vector, one that does not clash - with any of the recognized or standard encoding names that VIM uses (see - |encoding-names| for a list), and that no one else is likely to use. -ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your - 'runtimepath' and rename it with your unique name. -iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1 - with your unique name (don't forget the line starting %%Title:), and - modify the array of glyph names to define your new encoding vector. The - array must have exactly 256 entries or you will not be able to print! -iv. Within VIM, set 'printencoding' to your unique encoding name and then - print your file. VIM will now use your custom print character encoding. - -VIM will report an error with the resource file if you change the order or -content of the first 3 lines, other than the name of the encoding on the line -starting %%Title: or the version number on the line starting %%Version:. - -[Technical explanation for those that know PostScript - VIM looks for a file -with the same name as the encoding it will use when printing. The file -defines a new PostScript Encoding resource called /VIM-name, where name is the -print character encoding VIM will use.] - - -3.3 PostScript Printing Troubleshooting *postscript-print-trouble* - *E621* -Usually the only sign of a problem when printing with PostScript is that your -printout does not appear. If you are lucky you may get a printed page that -tells you the PostScript operator that generated the error that prevented the -print job completing. - -There are a number of possible causes as to why the printing may have failed: - -- Wrong version of the prolog resource file. The prolog resource file - contains some PostScript that VIM needs to be able to print. Each version - of VIM needs one particular version. Make sure you have correctly installed - the runtime files, and don't have any old versions of a file called prolog - in the print directory in your 'runtimepath' directory. - -- Paper size. Some PostScript printers will abort printing a file if they do - not support the requested paper size. By default VIM uses A4 paper. Find - out what size paper your printer normally uses and set the appropriate paper - size with 'printoptions'. If you cannot find the name of the paper used, - measure a sheet and compare it with the table of supported paper sizes listed - for 'printoptions', using the paper that is closest in both width AND height. - Note: The dimensions of actual paper may vary slightly from the ones listed. - If there is no paper listed close enough, then you may want to try psresize - from PSUtils, discussed below. - -- Two-sided printing (duplex). Normally a PostScript printer that does not - support two-sided printing will ignore any request to do it. However, some - printers may abort the job altogether. Try printing with duplex turned off. - Note: Duplex prints can be achieved manually using PS utils - see below. - -- Collated printing. As with Duplex printing, most PostScript printers that - do not support collating printouts will ignore a request to do so. Some may - not. Try printing with collation turned off. - -- Syntax highlighting. Some print management code may prevent the generated - PostScript file from being printed on a black and white printer when syntax - highlighting is turned on, even if solid black is the only color used. Try - printing with syntax highlighting turned off. - -A safe printoptions setting to try is: > - - :set printoptions=paper:A4,duplex:off,collate:n,syntax:n - -Replace "A4" with the paper size that best matches your printer paper. - - -3.4 PostScript Utilities *postscript-print-util* - -3.4.1 Ghostscript - -Ghostscript is a PostScript and PDF interpreter that can be used to display -and print on non-PostScript printers PostScript and PDF files. It can also -generate PDF files from PostScript. - -Ghostscript will run on a wide variety of platforms. - -There are three available versions: - -- AFPL Ghostscript (formerly Aladdin Ghostscript) which is free for - non-commercial use. It can be obtained from: - - http://www.cs.wisc.edu/~ghost/ - -- GNU Ghostscript which is available under the GNU General Public License. It - can be obtained from: - - ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/ - -- A commercial version for inclusion in commercial products. - -Additional information on Ghostscript can also be found at: - - http://www.ghostscript.com/ - -Support for a number of non PostScript printers is provided in the -distribution as standard, but if you cannot find support for your printer -check the Ghostscript site for other printers not included by default. - - -3.4.2 Ghostscript Previewers. - -The interface to Ghostscript is very primitive so a number of graphical front -ends have been created. These allow easier PostScript file selection, -previewing at different zoom levels, and printing. Check supplied -documentation for full details. - -X11 - -- Ghostview. Obtainable from: - - http://www.cs.wisc.edu/~ghost/gv/ - -- gv. Derived from Ghostview. Obtainable from: - - http://wwwthep.physik.uni-mainz.de/~plass/gv/ - - Copies (possibly not the most recent) can be found at: - - http://www.cs.wisc.edu/~ghost/gv/ - -OpenVMS - -- Is apparently supported in the main code now (untested). See: - - http://wwwthep.physik.uni-mainz.de/~plass/gv/ - -Windows and OS/2 - -- GSview. Obtainable from: - - http://www.cs.wisc.edu/~ghost/gsview/ - -DOS - -- ps_view. Obtainable from: - - ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/ - ftp://ftp.dante.de/tex-archive/support/ps_view/ - -Linux - -- GSview. Linux version of the popular Windows and OS/2 previewer. - Obtainable from: - - http://www.cs.wisc.edu/~ghost/gsview/ - -- BMV. Different from Ghostview and gv in that it doesn't use X but svgalib. - Obtainable from: - - ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz - - -3.4.3 PSUtils - -PSUtils is a collection of utility programs for manipulating PostScript -documents. Binary distributions are available for many platforms, as well as -the full source. PSUtils can be found at: - - http://knackered.org/angus/psutils - -The utilities of interest include: - -- psnup. Convert PS files for N-up printing. -- psselect. Select page range and order of printing. -- psresize. Change the page size. -- psbook. Reorder and lay out pages ready for making a book. - -The output of one program can be used as the input to the next, allowing for -complex print document creation. - - -N-UP PRINTING - -The psnup utility takes an existing PostScript file generated from VIM and -convert it to an n-up version. The simplest way to create a 2-up printout is -to first create a PostScript file with: > - - :hardcopy > test.ps - -Then on your command line execute: > - - psnup -n 2 test.ps final.ps - -Note: You may get warnings from some Ghostscript previewers for files produced -by psnup - these may safely be ignored. - -Finally print the file final.ps to your PostScript printer with your -platform's print command. (You will need to delete the two PostScript files -afterwards yourself.) 'printexpr' could be modified to perform this extra -step before printing. - - -ALTERNATE DUPLEX PRINTING - -It is possible to achieve a poor man's version of duplex printing using the PS -utility psselect. This utility has options -e and -o for printing just the -even or odd pages of a PS file respectively. - -First generate a PS file with the 'hardcopy' command, then generate a new -files with all the odd and even numbered pages with: > - - psselect -o test.ps odd.ps - psselect -e test.ps even.ps - -Next print odd.ps with your platform's normal print command. Then take the -print output, turn it over and place it back in the paper feeder. Now print -even.ps with your platform's print command. All the even pages should now -appear on the back of the odd pages. - -There a couple of points to bear in mind: - -1. Position of the first page. If the first page is on top of the printout - when printing the odd pages then you need to reverse the order that the odd - pages are printed. This can be done with the -r option to psselect. This - will ensure page 2 is printed on the back of page 1. - Note: it is better to reverse the odd numbered pages rather than the even - numbered in case there are an odd number of pages in the original PS file. - -2. Paper flipping. When turning over the paper with the odd pages printed on - them you may have to either flip them horizontally (along the long edge) or - vertically (along the short edge), as well as possibly rotating them 180 - degrees. All this depends on the printer - it will be more obvious for - desktop ink jets than for small office laser printers where the paper path - is hidden from view. - - -3.5 Formfeed Characters *printing-formfeed* - -By default VIM does not do any special processing of |formfeed| control -characters. Setting the 'printoptions' formfeed item will make VIM recognize -formfeed characters and continue printing the current line at the beginning -of the first line on a new page. The use of formfeed characters provides -rudimentary print control but there are certain things to be aware of. - -VIM will always start printing a line (including a line number if enabled) -containing a formfeed character, even if it is the first character on the -line. This means if a line starting with a formfeed character is the first -line of a page then VIM will print a blank page. - -Since the line number is printed at the start of printing the line containing -the formfeed character, the remainder of the line printed on the new page -will not have a line number printed for it (in the same way as the wrapped -lines of a long line when wrap in 'printoptions' is enabled). - -If the formfeed character is the last character on a line, then printing will -continue on the second line of the new page, not the first. This is due to -VIM processing the end of the line after the formfeed character and moving -down a line to continue printing. - -Due to the points made above it is recommended that when formfeed character -processing is enabled, printing of line numbers is disabled, and that form -feed characters are not the last character on a line. Even then you may need -to adjust the number of lines before a formfeed character to prevent -accidental blank pages. - -============================================================================== -4. Using Vim like less or more *less* +3. Using Vim like less or more *less* If you use the less or more program to view a file, you don't get syntax highlighting. Thus you would like to use Vim instead. You can do this by From 47be8025375ecf4b07d9e89e718fda5fae8208e6 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Thu, 28 Sep 2006 14:40:03 +0000 Subject: [PATCH 055/783] fix: update tagsrch to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@55 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/tagsrch.txt | 58 +++++++++++++++++++++++++++++++++++--------------- ja/tagsrch.jax | 47 +++++++++++++++++++++++++++++----------- 2 files changed, 76 insertions(+), 29 deletions(-) diff --git a/en/tagsrch.txt b/en/tagsrch.txt index de14e87cd..0acdf2c39 100644 --- a/en/tagsrch.txt +++ b/en/tagsrch.txt @@ -1,4 +1,4 @@ -*tagsrch.txt* For Vim version 6.3. Last change: 2004 Apr 29 +*tagsrch.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -36,19 +36,26 @@ An easy way back is with the CTRL-T command. Also read about the tag stack below. *:ta* *:tag* *E426* *E429* -:ta[g][!] {ident} Jump to the definition of {ident}, using the +:[count]ta[g][!] {ident} + Jump to the definition of {ident}, using the information in the tags file(s). Put {ident} in the tag stack. See |tag-!| for [!]. {ident} can be a regexp pattern, see |tag-regexp|. - When there are several matching tags for {ident}, the - first one is jumped to. |:tnext|. + When there are several matching tags for {ident}, jump + to the [count] one. When [count] is omitted the + first one is jumped to. See |tag-matchlist| for + jumping to other matching tags. g<LeftMouse> *g<LeftMouse>* <C-LeftMouse> *<C-LeftMouse>* *CTRL-]* CTRL-] Jump to the definition of the keyword under the cursor. Same as ":tag {ident}", where {ident} is the - keyword under or after cursor. {Vi: identifier after - the cursor} + keyword under or after cursor. + When there are several matching tags for {ident}, jump + to the [count] one. When no [count] is given the + first one is jumped to. See |tag-matchlist| for + jumping to other matching tags. + {Vi: identifier after the cursor} *v_CTRL-]* {Visual}CTRL-] Same as ":tag {ident}", where {ident} is the text that @@ -60,7 +67,7 @@ tag, you will get the telnet prompt instead. Most versions of telnet allow changing or disabling the default escape key. See the telnet man page. You can 'telnet -E {Hostname}' to disable the escape character, or 'telnet -e {EscapeCharacter} {Hostname}' to specify another escape character. If -possible, try to use "rsh" instead of "telnet" to avoid this problem. +possible, try to use "ssh" instead of "telnet" to avoid this problem. *tag-priority* When there are multiple matches for a tag, this priority is used: @@ -251,12 +258,23 @@ g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag". in Vi} *:tf* *:tfirst* -:[count]tf[irst][!] Same as ":trewind". {not in Vi} +:[count]tf[irst][!] Same as ":trewind". {not in Vi} *:tl* *:tlast* :tl[ast][!] Jump to last matching tag. See |tag-!| for [!]. {not in Vi} + *:lt* *:ltag* +:lt[ag][!] [ident] Jump to tag [ident] and add the matching tags to a new + location list for the current window. [ident] can be + a regexp pattern, see |tag-regexp|. When [ident] is + not given, the last tag name from the tag stack is + used. The search pattern to locate the tag line is + prefixed with "\V" to escape all the special + characters (very nomagic). The location list showing + the matching tags is independent of the tag stack. + See |tag-!| for [!]. + {not in Vi} When there is no other message, Vim shows which matching tag has been jumped to, and the number of matching tags: > @@ -275,18 +293,19 @@ skipped and the next matching tag is used. Vim reports this, to notify you of missing files. When the end of the list of matches has been reached, an error message is given. + *tag-preview* The tag match list can also be used in the preview window. The commands are the same as above, with a "p" prepended. {not available when compiled without the |+quickfix| feature} *:pts* *:ptselect* :pts[elect][!] [ident] Does ":tselect[!] [ident]" and shows the new tag in a - "Preview" window. See |:ptag| for more info. + "Preview" window. See |:ptag| for more info. {not in Vi} *:ptj* *:ptjump* :ptj[ump][!] [ident] Does ":tjump[!] [ident]" and shows the new tag in a - "Preview" window. See |:ptag| for more info. + "Preview" window. See |:ptag| for more info. {not in Vi} *:ptn* *:ptnext* @@ -305,7 +324,7 @@ the same as above, with a "p" prepended. {not in Vi} *:ptf* *:ptfirst* -:[count]ptf[irst][!] Same as ":ptrewind". {not in Vi} +:[count]ptf[irst][!] Same as ":ptrewind". {not in Vi} *:ptl* *:ptlast* :ptl[ast][!] ":tlast" in the preview window. See |:ptag|. @@ -352,6 +371,8 @@ Examples: > When the argument both exists literally, and match when used as a regexp, a literal match has a higher priority. For example, ":tag /open" matches "open" before "open_file" and "file_open". +When using a pattern case is ignored. If you want to match case use "\C" in +the pattern. *tag-!* If the tag is in the current file this will always work. Otherwise the @@ -395,7 +416,7 @@ In a future version changing the buffer will be impossible. All this for security reasons: Somebody might hide a nasty command in the tags file, which would otherwise go unnoticed. Example: > :$d|/tag-function-name/ -{this security prevention is not present in Vi}. +{this security prevention is not present in Vi} In Vi the ":tag" command sets the last search pattern when the tag is searched for. In Vim this is not done, the previous search pattern is still remembered, @@ -438,7 +459,7 @@ directory. If it is not found there, then the file "/home/user/commontags" will be searched for the tag. This can be switched off by including the 'd' flag in 'cpoptions', to make -it Vi compatible. "./tags" will than be the tags file in the current +it Vi compatible. "./tags" will then be the tags file in the current directory, instead of the tags file in the directory where the current file is. @@ -468,6 +489,7 @@ a tag for each "#defined" macro, typedefs, enums, etc. Some programs that generate tags files: ctags As found on most Unix systems. Only supports C. Only does the basic work. + *Exuberant_ctags* exuberant ctags This a very good one. It works for C, C++, Java, Fortran, Eiffel and others. It can generate tags for many items. See http://ctags.sourceforge.net. @@ -581,8 +603,8 @@ If the command is a normal search command (it starts and ends with "/" or "?"), some special handling is done: - Searching starts on line 1 of the file. The direction of the search is forward for "/", backward for "?". - Note that 'wrapscan' does not matter, the whole file is always searched. {Vi - does use 'wrapscan', which caused tags sometimes not be found). {Vi starts + Note that 'wrapscan' does not matter, the whole file is always searched. (Vi + does use 'wrapscan', which caused tags sometimes not be found.) {Vi starts searching in line 2 of another file. It does not find a tag in line 1 of another file when 'wrapscan' is not set} - If the search fails, another try is done ignoring case. If that fails too, @@ -595,7 +617,7 @@ If the command is a normal search command (it starts and ends with "/" or "^[#a-zA-Z_].*\<tagname[ \t]*(" This means: A line starting with '#' or an identifier and containing the tag followed by white space and a '('. This will find macro names and function - names with a type prepended. {the extra searches are not in Vi}. + names with a type prepended. {the extra searches are not in Vi} ============================================================================== 6. Include file searches *include-search* *definition-search* @@ -743,11 +765,13 @@ CTRL-W i Open a new window, with the cursor on the first line ]D like "[D", but start at the current cursor position. {not in Vi} - *:dl* *:dlist* + *:dli* *:dlist* :[range]dl[ist][!] [/]string[/] Like "[D" and "]D", but search in [range] lines (default: whole file). See |:search-args| for [/] and [!]. {not in Vi} + Note that ":dl" works like ":delete" with the "l" + flag. *[_CTRL-D* [ CTRL-D Jump to the first macro definition that contains the diff --git a/ja/tagsrch.jax b/ja/tagsrch.jax index b3a2ce3f6..bfb1958d0 100644 --- a/ja/tagsrch.jax +++ b/ja/tagsrch.jax @@ -1,9 +1,10 @@ COMMENT: タグジャンプ、検索 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: Noiz TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*tagsrch.txt* For Vim version 6.3. Last change: 2004 Apr 29 +*tagsrch.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -39,19 +40,26 @@ Tags and special searches *tags-and-searches* ことである。後述するタグスタックについても読むとよい。 *:ta* *:tag* *E426* *E429* -:ta[g][!] {ident} tagsファイル内の情報を用いて、{ident}の定義へジャンプ +:[count]ta[g][!] {ident} + tagsファイル内の情報を用いて、{ident}の定義へジャンプ する。{ident}はタグスタックに積まれる。[!]については |tag-!|を参照。 {ident}は正規表現を使用できる。|tag-regexp|を参照。 - {ident}に対してマッチするタグが複数ある場合、一番最初 - のタグへジャンプする。|:tnext|。 + {ident}に対してマッチするタグが複数ある場合、[count]番 + 目のタグへジャンプする。[count]が指定されないときは最 + 初のタグへジャンプする。他のマッチするタグへジャンプす + るには|tag-matchlist|を参照。 g<LeftMouse> *g<LeftMouse>* <C-LeftMouse> *<C-LeftMouse>* *CTRL-]* CTRL-] カーソルの下のキーワードを定義している場所にジャンプし ます。":tag {ident}"と同様であるが、{ident}はカーソル - の下、もしくは次に現われるキーワードである。{Vi: - identifier after the cursor} + の下、もしくは次に現われるキーワードである。 + {ident}に対してマッチするタグが複数ある場合、[count]番 + 目のタグへジャンプする。[count]が指定されないときは最 + 初のタグへジャンプする。他のマッチするタグへジャンプす + るには|tag-matchlist|を参照。 + {Vi: identifier after the cursor} *v_CTRL-]* {Visual}CTRL-] ":tag {ident}"と同様であるが、{ident}はハイライトされ @@ -63,7 +71,7 @@ CTRL-]はtelnetの標準エスケープキーである。タグにジャンプ 標準エスケープキーを変更、もしくは使用不可能にできる。telnetのマニュアルを参照 すること。エスケープキーを使用不可能にするには'telnet -E {ホスト名}'、エスケー プ文字を他の文字にするには'telnet -e {エスケープ文字} {ホスト名}'を使用する。 -もし可能ならtelnetの代わりにrshを使うことで、この問題を回避できる。 +もし可能ならtelnetの代わりにsshを使うことで、この問題を回避できる。 *tag-priority* タグのマッチが複数ある場合、以下の優先度が使われる: @@ -256,6 +264,16 @@ g CTRL-] CTRL-]と動作は似ているが、":tag"の変わりに":tjump"を :tl[ast][!] 適合したtagのうち最後のtagに移動する。[!]に関しては |tag-!|を参照。(Viでは使えない。) + *:lt* *:ltag* +:lt[ag][!] [ident] タグ[ident]にジャンプし、マッチするタグ全てをカレント + ウィンドウの新しいロケーションリストに追加する。 + [ident]は正規表現でもよい(|tag-regexp|を参照)。[ident] + が指定されないときはタグスタックにある最後のタグ名が使 + われる。タグにマッチする行を特定するための検索パターン + には、特別な文字を全てエスケープするために"\V"がつけら + れる(very nomagic)。マッチするタグを保持するロケーショ + ンリストはタグスタックとは独立している。[!]については + |tag-!|を参照。{Vi にはない} 他にメッセージがないとき、Vimは今までに移動したtagとtagの数を表示する: > tag 1 of 3 or more @@ -272,6 +290,7 @@ g CTRL-] CTRL-]と動作は似ているが、":tag"の変わりに":tjump"を するタグが使われる。Vimはファイルがないことを通知する。もしリストの終端に達し ていたならば、エラーメッセージが与えられる。 + *tag-preview* タグマッチリストはプレビューウィンドウ内でも使用できる。そのコマンドは上記のも のに似ているが、先頭に"p"がつく。 {|+quickfix|が無効なときは利用できない} @@ -348,6 +367,8 @@ ASCIIコードでソートされている場合にのみ機能する。したが もし引数と全く同じタグと、正規表現によってマッチしたタグがあった場合、引数と同 じタグが優先される。例えば、":tag /open"は"open_file"や"file_open"よりも前に "open"にマッチする。 +正規表現を使うときは大文字・小文字は区別されない。大文字・小文字を区別したいな +ら正規表現の中で"\C"を使うこと。 *tag-!* もしタグが現在のファイル上にあるならば、いつも機能するだろう。そうでなければ、 @@ -461,6 +482,7 @@ enumなどに対してもタグを作ることができる。 tagsファイルを生成するプログラム: ctags ほとんどのUnixシステムにある。C言語のみ対応し、基本的な 機能を提供する。 + *Exuberant_ctags* exuberant ctags これはとてもよいものだ。C言語、C++、Java、Fortran、 Eiffel、そしてその他に対応している。多くの項目にタグを 生成することができる。 @@ -572,9 +594,9 @@ Vimが認識するもう1つのタグはタグファイルのエンコーディ かの特別な扱いをされる: - 検索はファイルの1行目から開始する。 検索方向は"/"で前方、"?"で後方となる。 - 'wrapscan'は問題にならず、いつもファイル全体を検索することに注意。{Vi は - 'wrapscan'を使用するため、それが原因でタグが見つからないこともある)。 {Vi - は別のファイルの2行目から検索を開始する。'wrapscan'を設定しないときには、別 + 'wrapscan'は問題にならず、いつもファイル全体を検索することに注意。(Vi は + 'wrapscan'を使用するため、それが原因でタグが見つからないこともある。) {Vi は + 別のファイルの2行目から検索を開始する。'wrapscan'を設定しないときには、別 のファイルの1行目にあるタグは見つけられない} - 検索が失敗した場合は、大文字小文字を無視してもう一度検索する。それも失敗した 場合には次の検索が行われる: @@ -728,11 +750,12 @@ CTRL-W i 新しいウィンドウを開き、カーソルの下にあったキ ]D "[D"と同様だが、検索が現在のカーソル位置から開始される。 {Vi にはない} - *:dl* *:dlist* + *:dli* *:dlist* :[range]dl[ist][!] [/]string[/] "[D"や"]D"と同様だが、[range]で指定された範囲から検索 する(デフォルト: ファイル全体)。 [/]と[!]については|:search-args|を参照。{Vi にはない} + Note: ":dl"はフラグ"l"つきの":delete"と同じように働く。 *[_CTRL-D* [ CTRL-D カーソルの下にあるキーワードを含む最初のマクロ定義にジャ From 6272361656093bce53474e3e28df8c8535c9ad04 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Thu, 28 Sep 2006 14:56:38 +0000 Subject: [PATCH 056/783] fix: update scroll to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@56 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/scroll.txt | 38 +++++++++++++++++++++++++------------- ja/scroll.jax | 41 +++++++++++++++++++++++++---------------- 2 files changed, 50 insertions(+), 29 deletions(-) diff --git a/en/scroll.txt b/en/scroll.txt index 865f62eb1..c1774f575 100644 --- a/en/scroll.txt +++ b/en/scroll.txt @@ -1,4 +1,4 @@ -*scroll.txt* For Vim version 6.3. Last change: 2002 May 24 +*scroll.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -52,6 +52,8 @@ CTRL-D Scroll window Downwards in the buffer. The number of <PageDown> or *<PageDown>* *CTRL-F* CTRL-F Scroll window [count] pages Forwards (downwards) in the buffer. See also 'startofline' option. + When there is only one window the 'window' option + might be used. *z+* z+ Without [count]: Redraw with the line just below the @@ -89,6 +91,8 @@ CTRL-U Scroll window Upwards in the buffer. The number of <PageUp> or *<PageUp>* *CTRL-B* CTRL-B Scroll window [count] pages Backwards (upwards) in the buffer. See also 'startofline' option. + When there is only one window the 'window' option + might be used. *z^* z^ Without [count]: Redraw with the line just above the @@ -149,31 +153,39 @@ to the closest character that is on the screen. The value of 'sidescroll' is not used. z<Right> or *zl* *z<Right>* -zl Scroll the screen [count] characters to the left. - This only works when 'wrap' is off. {not in Vi} +zl Move the view on the text [count] characters to the + right, thus scroll the text [count] characters to the + left. This only works when 'wrap' is off. {not in + Vi} z<Left> or *zh* *z<Left>* -zh Scroll the screen [count] characters to the right. - This only works when 'wrap' is off. {not in Vi} +zh Move the view on the text [count] characters to the + left, thus scroll the text [count] characters to the + right. This only works when 'wrap' is off. {not in + Vi} *zL* -zL Scroll the screen half a screenwidth to the left. - This only works when 'wrap' is off. {not in Vi} +zL Move the view on the text half a screenwidth to the + right, thus scroll the text half a screenwidth to the + left. This only works when 'wrap' is off. {not in + Vi} *zH* -zH Scroll the screen half a screenwith to the right. - This only works when 'wrap' is off. {not in Vi} +zH Move the view on the text half a screenwidth to the + left, thus scroll the text half a screenwidth to the + right. This only works when 'wrap' is off. {not in + Vi} For the following two commands the cursor is not moved in the text, only the text scrolls on the screen. *zs* -zs Scroll the screen horizontally to position the cursor +zs Scroll the text horizontally to position the cursor at the start (left side) of the screen. This only works when 'wrap' is off. {not in Vi} *ze* -ze Scroll the screen horizontally to position the cursor +ze Scroll the text horizontally to position the cursor at the end (right side) of the screen. This only works when 'wrap' is off. {not in Vi} @@ -261,12 +273,12 @@ You can also use Alt and Ctrl modifiers. This only works when Vim gets the scroll wheel events, of course. You can check if this works with the "xev" program. -When using Xfree86, the /etc/XF86Config file should have the correct entry for +When using XFree86, the /etc/XF86Config file should have the correct entry for your mouse. For FreeBSD, this entry works for a Logitech scrollmouse: > Protocol "MouseMan" Device "/dev/psm0" ZAxisMapping 4 5 -See the Xfree86 documentation for information. +See the XFree86 documentation for information. *xterm-mouse-wheel* To use the mouse wheel in a new xterm you only have to make the scroll wheel diff --git a/ja/scroll.jax b/ja/scroll.jax index 6ecefa2d2..e00115d06 100644 --- a/ja/scroll.jax +++ b/ja/scroll.jax @@ -1,9 +1,10 @@ COMMENT: スクロールコマンド -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*scroll.txt* For Vim version 6.3. Last change: 2002 May 24 +*scroll.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIMリファレンスマニュアル by Bram Moolenaar @@ -56,6 +57,8 @@ CTRL-D ウィンドウをバッファ内で下にスクロールする。ス <PageDown> or *<PageDown>* *CTRL-F* CTRL-F ウィンドウをバッファ内で[count]ページ前方(下方)にスク ロールする。'startofline'オプションも参照。 + ウィンドウが1つだけのときはオプション'window'の値が使 + われる。 *z+* z+ [count]が無い時: 現在のウィンドウの最下行を最上行にし @@ -92,6 +95,8 @@ CTRL-U ウィンドウをバッファ内で上にスクロールする。ス <PageUp> or *<PageUp>* *CTRL-B* CTRL-B ウィンドウをバッファ内で[count]ページ後方(上方)にスク ロールする。'startofline'オプションも参照。 + ウィンドウが1つだけのときはオプション'window'の値が使 + われる。 *z^* z^ [count]が無い時: 現在のウィンドウの最上行を最下行にし @@ -150,33 +155,37 @@ zb "z-"と同様だが、カーソルは同じコラムに留める。 る。'sidescroll'の値は使用されない。 z<Right> or *zl* *z<Right>* -zl スクリーンを[count]文字左へ移動する。これは'wrap'がオ - フの時にだけ働く。 {Vi にはない} +zl スクリーンを[count]文字右へ移動する。従ってテキストは + [count]文字左へスクロールする。これは'wrap'がオフの時 + にだけ働く。 {Vi にはない} z<Left> or *zh* *z<Left>* -zh スクリーンを[count]文字右へ移動する。これは'warp'がオ - フの時にだけ働く。 {Vi にはない} +zh スクリーンを[count]文字左へ移動する。従ってテキストは + [count]文字右へスクロールする。これは'warp'がオフの時 + にだけ働く。 {Vi にはない} *zL* -zL スクリーンの幅の半分左へスクロールする。これは'wrap'が - オフの時にだけ働く。 {Vi にはない} +zL スクリーンの幅の半分右へスクロールする。従ってテキスト + はスクリーンの幅の半分左へスクロールする。これは'wrap' + がオフの時にだけ働く。 {Vi にはない} *zH* -zH スクリーンの幅の半分右へスクロールする。これは'wrap'が - オフの時にだけ働く。 {Vi にはない} +zH スクリーンの幅の半分左へスクロールする。従ってテキスト + はスクリーンの幅の半分右へスクロールする。これは'wrap' + がオフの時にだけ働く。 {Vi にはない} 次の2つのコマンドではテキスト上でカーソルは移動せず、スクリーンのテキストだけ がスクロールする。 *zs* zs カーソルのある位置がスクリーンの始まり(左側)に来るよう - に画面を水平にスクロールする。これは'wrap'がオフの時に - だけ働く。 {Vi にはない} + にテキストを水平にスクロールする。これは'wrap'がオフの + 時にだけ働く。 {Vi にはない} *ze* ze カーソルのある位置がスクリーンの終わり(右側)に来るよう - に画面を水平にスクロールする。これは'wrap'がオフの時に - だけ働く。 {Vi にはない} + にテキストを水平にスクロールする。これは'wrap'がオフの + 時にだけ働く。 {Vi にはない} ============================================================================== 5. 同期スクロール *scroll-binding* @@ -261,13 +270,13 @@ AltやCtrlといった修飾も可能である。 これはもちろん、Vimがスクロールホイールのイベントを取得している時にだけ働く。 この機能が働くかどうかは"xev"プログラムを使用すればチェックできる。 -Xfree86を使っているときには、/etc/XF86Configに貴方のマウスの正しいエントリがな +XFree86を使っているときには、/etc/XF86Configに貴方のマウスの正しいエントリがな ければならない。FreeBSDでは、このようなエントリーがロジテックのスクロールマウ ス用に必要である。 > Protocol "MouseMan" Device "/dev/psm0" ZAxisMapping 4 5 -詳しくはXfree86のドキュメントを参照すること。 +詳しくはXFree86のドキュメントを参照すること。 *xterm-mouse-wheel* 新しいxtermでマウスホイールを使うには、上で書かれているようにXserverでスクロー From e12f51b4cda62aec99717a37d76c1023bde5bda6 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 30 Sep 2006 02:29:03 +0000 Subject: [PATCH 057/783] add: manual pages git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@57 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/evim.1 | 2 +- en/vim.1 | 206 +++++++++-------- en/vimdiff.1 | 4 +- en/xxd.1 | 103 +++++---- ja/evim-ja.UTF-8.1 | 51 +++++ ja/vim-ja.UTF-8.1 | 500 +++++++++++++++++++++++++++++++++++++++++ ja/vimdiff-ja.UTF-8.1 | 44 ++++ ja/vimtutor-ja.UTF-8.1 | 43 ++++ ja/xxd-ja.UTF-8.1 | 366 ++++++++++++++++++++++++++++++ 9 files changed, 1166 insertions(+), 153 deletions(-) create mode 100644 ja/evim-ja.UTF-8.1 create mode 100644 ja/vim-ja.UTF-8.1 create mode 100644 ja/vimdiff-ja.UTF-8.1 create mode 100644 ja/vimtutor-ja.UTF-8.1 create mode 100644 ja/xxd-ja.UTF-8.1 diff --git a/en/evim.1 b/en/evim.1 index bd25ed6eb..bb859cead 100644 --- a/en/evim.1 +++ b/en/evim.1 @@ -21,7 +21,7 @@ Only to be used for people who really can't work with Vim in the normal way. Editing will be much less efficient. .PP .B eview -is the same, but starts in read-only mode. It works just like evim -R. +is the same, but starts in read-only mode. It works just like evim \-R. .PP See vim(1) for details about Vim, options, etc. .PP diff --git a/en/vim.1 b/en/vim.1 index d1fa54ad7..4e90da276 100644 --- a/en/vim.1 +++ b/en/vim.1 @@ -1,4 +1,4 @@ -.TH VIM 1 "2002 Feb 22" +.TH VIM 1 "2006 Apr 11" .SH NAME vim \- Vi IMproved, a programmers text editor .SH SYNOPSIS @@ -7,7 +7,7 @@ vim \- Vi IMproved, a programmers text editor [options] [file ..] .br .B vim -[options] - +[options] \- .br .B vim [options] \-t tag @@ -69,13 +69,13 @@ A list of filenames. The first one will be the current file and read into the buffer. The cursor will be positioned on the first line of the buffer. You can get to the other files with the ":next" command. -To edit a file that starts with a dash, precede the filelist with "--". +To edit a file that starts with a dash, precede the filelist with "\-\-". .TP -- +\- The file to edit is read from stdin. Commands are read from stderr, which should be a tty. .TP --t {tag} +\-t {tag} The file to edit and the initial cursor position depends on a "tag", a sort of goto label. {tag} is looked up in the tags file, the associated file becomes the current @@ -84,9 +84,9 @@ Mostly this is used for C programs, in which case {tag} could be a function name. The effect is that the file containing that function becomes the current file and the cursor is positioned on the start of the function. -See ":help tag-commands". +See ":help tag\-commands". .TP --q [errorfile] +\-q [errorfile] Start in quickFix mode. The file [errorfile] is read and the first error is displayed. If [errorfile] is omitted, the filename is obtained from the 'errorfile' @@ -105,27 +105,27 @@ The "normal" way, everything is default. ex Start in Ex mode. Go to Normal mode with the ":vi" command. -Can also be done with the "-e" argument. +Can also be done with the "\-e" argument. .TP view Start in read-only mode. You will be protected from writing the files. Can -also be done with the "-R" argument. +also be done with the "\-R" argument. .TP gvim gview The GUI version. Starts a new window. -Can also be done with the "-g" argument. +Can also be done with the "\-g" argument. .TP evim eview The GUI version in easy mode. Starts a new window. -Can also be done with the "-y" argument. +Can also be done with the "\-y" argument. .TP rvim rview rgvim rgview Like the above, but with restrictions. It will not be possible to start shell commands, or suspend .B Vim. -Can also be done with the "-Z" argument. +Can also be done with the "\-Z" argument. .SH OPTIONS The options may be given in any order, before or after filenames. Options without an argument can be combined after a single dash. @@ -137,11 +137,11 @@ If "num" is missing, the cursor will be positioned on the last line. +/{pat} For the first file the cursor will be positioned on the first occurrence of {pat}. -See ":help search-pattern" for the available search patterns. +See ":help search\-pattern" for the available search patterns. .TP +{command} .TP --c {command} +\-c {command} {command} will be executed after the first file has been read. {command} is interpreted as an Ex command. @@ -149,21 +149,21 @@ If the {command} contains spaces it must be enclosed in double quotes (this depends on the shell that is used). Example: Vim "+set si" main.c .br -Note: You can use up to 10 "+" or "-c" commands. +Note: You can use up to 10 "+" or "\-c" commands. .TP --S {file} +\-S {file} {file} will be sourced after the first file has been read. -This is equivalent to -c "source {file}". -{file} cannot start with '-'. -If {file} is omitted "Session.vim" is used (only works when -S is the last +This is equivalent to \-c "source {file}". +{file} cannot start with '\-'. +If {file} is omitted "Session.vim" is used (only works when \-S is the last argument). .TP ---cmd {command} -Like using "-c", but the command is executed just before +\-\-cmd {command} +Like using "\-c", but the command is executed just before processing any vimrc file. -You can use up to 10 of these commands, independently from "-c" commands. +You can use up to 10 of these commands, independently from "\-c" commands. .TP --A +\-A If .B Vim has been compiled with ARABIC support for editing right-to-left @@ -174,45 +174,45 @@ message is given and .B Vim aborts. .TP --b +\-b Binary mode. A few options will be set that makes it possible to edit a binary or executable file. .TP --C +\-C Compatible. Set the 'compatible' option. This will make .B Vim behave mostly like Vi, even though a .vimrc file exists. .TP --d +\-d Start in diff mode. There should be two or three file name arguments. .B Vim will open all the files and show differences between them. Works like vimdiff(1). .TP --d {device} +\-d {device} Open {device} for use as a terminal. Only on the Amiga. Example: "\-d con:20/30/600/150". .TP --D +\-D Debugging. Go to debugging mode when executing the first command from a script. .TP --e +\-e Start .B Vim in Ex mode, just like the executable was called "ex". .TP --E +\-E Start .B Vim in improved Ex mode, just like the executable was called "exim". .TP --f +\-f Foreground. For the GUI version, .B Vim will not fork and detach from the shell it was started in. @@ -225,12 +225,12 @@ is executed by a program that will wait for the edit session to finish (e.g. mail). On the Amiga the ":sh" and ":!" commands will not work. .TP ---nofork +\-\-nofork Foreground. For the GUI version, .B Vim will not fork and detach from the shell it was started in. .TP --F +\-F If .B Vim has been compiled with FKMAP support for editing right-to-left @@ -241,7 +241,7 @@ Otherwise an error message is given and .B Vim aborts. .TP --g +\-g If .B Vim has been compiled with GUI support, this option enables the GUI. @@ -249,13 +249,13 @@ If no GUI support was compiled in, an error message is given and .B Vim aborts. .TP --h +\-h Give a bit of help about the command line arguments and options. After this .B Vim exits. .TP --H +\-H If .B Vim has been compiled with RIGHTLEFT support for editing right-to-left @@ -266,87 +266,91 @@ Otherwise an error message is given and .B Vim aborts. .TP --i {viminfo} +\-i {viminfo} When using the viminfo file is enabled, this option sets the filename to use, instead of the default "~/.viminfo". This can also be used to skip the use of the .viminfo file, by giving the name "NONE". .TP --L -Same as -r. +\-L +Same as \-r. .TP --l +\-l Lisp mode. Sets the 'lisp' and 'showmatch' options on. .TP --m +\-m Modifying files is disabled. Resets the 'write' option. You can still modify the buffer, but writing a file is not possible. .TP --M +\-M Modifications not allowed. The 'modifiable' and 'write' options will be unset, so that changes are not allowed and files can not be written. Note that these options can be set to enable making modifications. .TP --N +\-N No-compatible mode. Reset the 'compatible' option. This will make .B Vim behave a bit better, but less Vi compatible, even though a .vimrc file does not exist. .TP --n +\-n No swap file will be used. Recovery after a crash will be impossible. Handy if you want to edit a file on a very slow medium (e.g. floppy). Can also be done with ":set uc=0". Can be undone with ":set uc=200". .TP --nb +\-nb Become an editor server for NetBeans. See the docs for details. .TP --o[N] +\-o[N] Open N windows stacked. When N is omitted, open one window for each file. .TP --O[N] +\-O[N] Open N windows side by side. When N is omitted, open one window for each file. .TP --R +\-p[N] +Open N tab pages. +When N is omitted, open one tab page for each file. +.TP +\-R Read-only mode. The 'readonly' option will be set. You can still edit the buffer, but will be prevented from accidently overwriting a file. If you do want to overwrite a file, add an exclamation mark to the Ex command, as in ":w!". -The -R option also implies the -n option (see below). +The \-R option also implies the \-n option (see below). The 'readonly' option can be reset with ":set noro". See ":help 'readonly'". .TP --r +\-r List swap files, with information about using them for recovery. .TP --r {file} +\-r {file} Recovery mode. The swap file is used to recover a crashed editing session. The swap file is a file with the same filename as the text file with ".swp" appended. See ":help recovery". .TP --s -Silent mode. Only when started as "Ex" or when the "-e" option was given -before the "-s" option. +\-s +Silent mode. Only when started as "Ex" or when the "\-e" option was given +before the "\-s" option. .TP --s {scriptin} +\-s {scriptin} The script file {scriptin} is read. The characters in the file are interpreted as if you had typed them. The same can be done with the command ":source! {scriptin}". If the end of the file is reached before the editor exits, further characters are read from the keyboard. .TP --T {terminal} +\-T {terminal} Tells .B Vim the name of the terminal you are using. @@ -356,49 +360,49 @@ to .B Vim (builtin) or defined in the termcap or terminfo file. .TP --u {vimrc} +\-u {vimrc} Use the commands in the file {vimrc} for initializations. All the other initializations are skipped. Use this to edit a special kind of files. It can also be used to skip all initializations by giving the name "NONE". See ":help initialization" within vim for more details. .TP --U {gvimrc} +\-U {gvimrc} Use the commands in the file {gvimrc} for GUI initializations. All the other GUI initializations are skipped. It can also be used to skip all GUI initializations by giving the name "NONE". -See ":help gui-init" within vim for more details. +See ":help gui\-init" within vim for more details. .TP --V[N] +\-V[N] Verbose. Give messages about which files are sourced and for reading and writing a viminfo file. The optional number N is the value for 'verbose'. Default is 10. .TP --v +\-v Start .B Vim in Vi mode, just like the executable was called "vi". This only has effect when the executable is called "ex". .TP --w {scriptout} +\-w {scriptout} All the characters that you type are recorded in the file {scriptout}, until you exit .B Vim. -This is useful if you want to create a script file to be used with "vim -s" or +This is useful if you want to create a script file to be used with "vim \-s" or ":source!". If the {scriptout} file exists, characters are appended. .TP --W {scriptout} -Like -w, but an existing file is overwritten. +\-W {scriptout} +Like \-w, but an existing file is overwritten. .TP --x -Use encryption when writing files. Will prompt for a crypt key. +\-x +Use encryption when writing files. Will prompt for a crypt key. .TP --X +\-X Don't connect to the X server. Shortens startup time in a terminal, but the window title and clipboard will not be used. .TP --y +\-y Start .B Vim in easy mode, just like the executable was called "evim" or "eview". @@ -406,58 +410,58 @@ Makes .B Vim behave like a click-and-type editor. .TP --Z +\-Z Restricted mode. Works like the executable starts with "r". .TP --- +\-\- Denotes the end of the options. Arguments after this will be handled as a file name. -This can be used to edit a filename that starts with a '-'. +This can be used to edit a filename that starts with a '\-'. .TP ---echo-wid -GTK GUI only: Echo the Window ID on stdout +\-\-echo\-wid +GTK GUI only: Echo the Window ID on stdout. .TP ---help -Give a help message and exit, just like "-h". +\-\-help +Give a help message and exit, just like "\-h". .TP ---literal -Take file name arguments literally, do not expand wildcards. Not needed on -Unix, the shell expand wildcards. +\-\-literal +Take file name arguments literally, do not expand wildcards. This has no +effect on Unix where the shell expands wildcards. .TP ---noplugin -Skip loading plugins. Implied by -u NONE. +\-\-noplugin +Skip loading plugins. Implied by \-u NONE. .TP ---remote +\-\-remote Connect to a Vim server and make it edit the files given in the rest of the arguments. If no server is found a warning is given and the files are edited in the current Vim. .TP ---remote-expr {expr} +\-\-remote\-expr {expr} Connect to a Vim server, evaluate {expr} in it and print the result on stdout. .TP ---remote-send {keys} +\-\-remote\-send {keys} Connect to a Vim server and send {keys} to it. .TP ---remote-silent -As --remote, but without the warning when no server is found. +\-\-remote\-silent +As \-\-remote, but without the warning when no server is found. .TP ---remote-wait -As --remote, but Vim does not exit until the files have been edited. +\-\-remote\-wait +As \-\-remote, but Vim does not exit until the files have been edited. .TP ---remote-wait-silent -As --remote-wait, but without the warning when no server is found. +\-\-remote\-wait\-silent +As \-\-remote\-wait, but without the warning when no server is found. .TP ---serverlist +\-\-serverlist List the names of all Vim servers that can be found. .TP ---servername {name} +\-\-servername {name} Use {name} as the server name. Used for the current Vim, unless used with a ---remote argument, then it's the name of the server to connect to. +\-\-remote argument, then it's the name of the server to connect to. .TP ---socketid {id} +\-\-socketid {id} GTK GUI only: Use the GtkPlug mechanism to run gvim in another window. .TP ---version +\-\-version Print version information and exit. .SH ON-LINE HELP Type ":help" in @@ -465,7 +469,7 @@ Type ":help" in to get started. Type ":help subject" to get help on a specific subject. For example: ":help ZZ" to get help for the "ZZ" command. -Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion"). +Use <Tab> and CTRL-D to complete subjects (":help cmdline\-completion"). Tags are present to jump from one place to another (sort of hypertext links, see ":help"). All documentation files can be viewed in this way, for example @@ -476,7 +480,7 @@ All documentation files can be viewed in this way, for example The .B Vim documentation files. -Use ":help doc-file-list" to get the complete list. +Use ":help doc\-file\-list" to get the complete list. .TP /usr/local/lib/vim/doc/tags The tags file used for finding information in the documentation files. @@ -492,9 +496,17 @@ System wide .B Vim initializations. .TP +~/.vimrc +Your personal +.B Vim +initializations. +.TP /usr/local/lib/vim/gvimrc System wide gvim initializations. .TP +~/.gvimrc +Your personal gvim initializations. +.TP /usr/local/lib/vim/optwin.vim Script used for the ":options" command, a nice way to view and set options. .TP diff --git a/en/vimdiff.1 b/en/vimdiff.1 index e48728412..90ed8b800 100644 --- a/en/vimdiff.1 +++ b/en/vimdiff.1 @@ -32,8 +32,8 @@ The 'foldmethod' option is set to "diff", which puts ranges of lines without changes in a fold. 'foldcolumn' is set to two to make it easy to spot the folds and open or close them. .SH OPTIONS -Vertical splits are used to align the lines, as if the "-O" argument was used. -To use horizontal splits intead, use the "-o" argument. +Vertical splits are used to align the lines, as if the "\-O" argument was used. +To use horizontal splits instead, use the "\-o" argument. .PP For all other arguments see vim(1). .SH SEE ALSO diff --git a/en/xxd.1 b/en/xxd.1 index fba0521d6..e8f735859 100644 --- a/en/xxd.1 +++ b/en/xxd.1 @@ -21,9 +21,9 @@ creates a hex dump of a given file or standard input. It can also convert a hex dump back to its original binary form. Like -.BR uuencode(1) +.BR uuencode (1) and -.BR uudecode(1) +.BR uudecode (1) it allows the transmission of binary data in a `mail-safe' ASCII representation, but has the advantage of decoding to standard output. Moreover, it can be used to perform binary file patching. @@ -62,12 +62,11 @@ toggle autoskip: A single '*' replaces nul-lines. Default off. .IR \-b " | " \-bits Switch to bits (binary digits) dump, rather than hexdump. This option writes octets as eight digits "1"s and "0"s instead of a normal -hexacecimal dump. Each line is preceded by a line number in hexadecimal and +hexadecimal dump. Each line is preceded by a line number in hexadecimal and followed by an ascii (or ebcdic) representation. The command line switches \-r, \-p, \-i do not work with this mode. .TP .IR "\-c cols " | " \-cols cols" -.IR "\-c cols " | " \-cols cols" format .RI < cols > octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. @@ -78,7 +77,7 @@ This does not change the hexadecimal representation. The option is meaningless in combinations with \-r, \-p or \-i. .TP .IR "\-g bytes " | " \-groupsize bytes" -seperate the output of every +separate the output of every .RI < bytes > bytes (two hex characters or eight bit-digits each) by a whitespace. Specify @@ -115,19 +114,19 @@ anywhere. .TP .I \-seek offset When used after -.I \-r -: revert with +.IR \-r : +revert with .RI < offset > added to file positions found in hexdump. .TP -.I \-s [\+][\-]seek +.I \-s [+][\-]seek start at .RI < seek > bytes abs. (or rel.) infile offset. -\fI\+ \fRindicates that the seek is relative to the current stdin file position +\fI+ \fRindicates that the seek is relative to the current stdin file position (meaningless when not reading from stdin). \fI\- \fRindicates that the seek should be that many characters from the end of the input (or if combined with -\fI \+ \fR: before the current stdin file position). +\fI+\fR: before the current stdin file position). Without \-s option, xxd starts at the current file position. .TP .I \-u @@ -139,7 +138,7 @@ show version string. .PP .I xxd \-r has some builtin magic while evaluating line number information. -If the ouput file is seekable, then the linenumbers at the start of each +If the output file is seekable, then the linenumbers at the start of each hexdump line may be out of order, lines may be missing, or overlapping. In these cases xxd will lseek(2) to the next position. If the output file is not seekable, only gaps are allowed, which will be filled by null-bytes. @@ -152,7 +151,7 @@ When editing hexdumps, please note that skips everything on the input line after reading enough columns of hexadecimal data (see option \-c). This also means, that changes to the printable ascii (or ebcdic) columns are always ignored. Reverting a plain (or postscript) style -hexdump with xxd \-r \-p does not depend on the correct number of columns. Here an thing that looks like a pair of hex-digits is interpreted. +hexdump with xxd \-r \-p does not depend on the correct number of columns. Here anything that looks like a pair of hex-digits is interpreted. .PP Note the difference between .br @@ -160,12 +159,12 @@ Note the difference between .br and .br -\fI% xxd \-i \< file\fR +\fI% xxd \-i < file\fR .PP -.I xxd \-s \+seek +.I xxd \-s +seek may be different from -.I xxd \-s seek -, as lseek(2) is used to "rewind" input. A '+' +.IR "xxd \-s seek" , +as lseek(2) is used to "rewind" input. A '+' makes a difference if the input source is stdin, and if stdin's file position is not at the start of the file by the time xxd is started and given its input. The following examples may help to clarify (or further confuse!)... @@ -173,52 +172,50 @@ The following examples may help to clarify (or further confuse!)... Rewind stdin before reading; needed because the `cat' has already read to the end of stdin. .br -\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file +\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR .PP Hexdump from file position 0x480 (=1024+128) onwards. The `+' sign means "relative to the current position", thus the `128' adds to the 1k where dd left off. .br -\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR .PP -Hexdump from file position 0x100 ( = 1024-768) on. +Hexdump from file position 0x100 ( = 1024\-768) on. .br -\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR .PP However, this is a rare situation and the use of `+' is rarely needed. -the author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. +The author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. .SH EXAMPLES .PP .br Print everything but the first three lines (hex 0x30 bytes) of -.B file -\. +.BR file . .br -\fI% xxd \-s 0x30 file +\fI% xxd \-s 0x30 file\fR .PP .br Print 3 lines (hex 0x30 bytes) from the end of -.B file -\. +.BR file . .br -\fI% xxd \-s \-0x30 file +\fI% xxd \-s \-0x30 file\fR .PP .br -Print 120 bytes as continuous hexdump with 40 octets per line. +Print 120 bytes as continuous hexdump with 20 octets per line. .br \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR .br -2e544820585844203120224d616e75616c207061 +2e54482058584420312022417567757374203139 .br -676520666f7220787864220a2e5c220a2e5c2220 +39362220224d616e75616c207061676520666f72 .br -32317374204d617920313939360a2e5c22204d61 +20787864220a2e5c220a2e5c222032317374204d .br -6e207061676520617574686f723a0a2e5c222020 +617920313939360a2e5c22204d616e2070616765 .br -2020546f6e79204e7567656e74203c746f6e7940 +20617574686f723a0a2e5c2220202020546f6e79 .br -7363746e7567656e2e7070702e67752e6564752e +204e7567656e74203c746f6e79407363746e7567 .br .br @@ -226,32 +223,32 @@ Hexdump the first 120 bytes of this man page with 12 octets per line. .br \fI% xxd \-l 120 \-c 12 xxd.1\fR .br -0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A .br -000000c: 616e 7561 6c20 7061 6765 2066 anual page f +000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" .br -0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\". +0000018: 224d 616e 7561 6c20 7061 6765 "Manual page .br -0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May +0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ .br -0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma +0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M .br -000003c: 6e20 7061 6765 2061 7574 686f n page autho +000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" .br -0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To +0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut .br -0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent <t +0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" .br -0000060: 6f6e 7940 7363 746e 7567 656e ony@sctnugen +0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent .br -000006c: 2e70 7070 2e67 752e 6564 752e .ppp.gu.edu. +000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug .PP .br Display just the date from the file xxd.1 .br -\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR .br -0000028: 3231 7374 204d 6179 2031 3939 21st May 199 +0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996 .PP .br Copy @@ -260,23 +257,23 @@ to .B output_file and prepend 100 bytes of value 0x00. .br -\fI% xxd input_file | xxd \-r \-s 100 \> output_file\fR +\fI% xxd input_file | xxd \-r \-s 100 > output_file\fR .br .br Patch the date in the file xxd.1 .br -\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR +\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR .br -\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR .br -0000028: 3235 7468 204d 6179 2031 3939 25th May 199 +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 .PP .br Create a 65537 byte file with all bytes 0x00, except for the last one which is 'A' (hex 0x41). .br -\fI% echo '010000: 41' | xxd \-r \> file\fR +\fI% echo "010000: 41" | xxd \-r > file\fR .PP .br Hexdump this file with autoskip. @@ -293,7 +290,7 @@ Create a 1 byte file containing a single 'A' character. The number after '\-r \-s' adds to the linenumbers found in the file; in effect, the leading bytes are suppressed. .br -\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR +\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR .PP Use xxd as a filter within an editor such as .B vim(1) @@ -356,7 +353,7 @@ This manual page documents xxd version 1.7 .br (c) 1990-1997 by Juergen Weigert .br -<jnweiger@informatik.uni-erlangen.de> +<jnweiger@informatik.uni\-erlangen.de> .LP Distribute freely and credit me, .br diff --git a/ja/evim-ja.UTF-8.1 b/ja/evim-ja.UTF-8.1 new file mode 100644 index 000000000..1b7a657eb --- /dev/null +++ b/ja/evim-ja.UTF-8.1 @@ -0,0 +1,51 @@ +.TH EVIM 1 "2002 February 16" +.SH 名前 +evim \- easy Vim, モードレスエディタ Vim +.SH 書式 +.br +.B evim +[options] [file ..] +.br +.B eview +.SH 説明 +.B eVim +は +.B Vim +を起動して、モードレスエディタとして動作するためのオプションを設定します。 +Vim の動作が point-and-click エディタのような動作になります。 +MS-Windows のメモ帳のような動作です。 +.B eVim +は常に GUI で起動し、メニューとツールバーを表示します。 +.PP +どうしても Vim の操作に馴染めない場合に使ってください。 +編集効率は下がります。 +.PP +.B eview +は同様に、読み込み専用モードで起動します。evim \-R と同じです。 +.PP +引数や Vim についての詳細は vim(1) を参照してください。 +.PP +オプション 'insertmode' が設定され、テキストを直接、入力できるようになりま +す。 +.br +コピーとペーストのキー操作が MS-Windows と同じになるように、マップが設定され +ます。 +CTRL-X が切り取り、CTRL-C がコピー、CTRL-V がペーストです。 +標準の CTRL-V の操作は CTRL-Q に割り当てられます。 +.SH オプション +vim(1) を参照してください。 +.SH ファイル +.TP 15 +/usr/local/lib/vim/evim.vim +eVim の初期化スクリプト。 +.SH 別名 +evim は "gumbies のための Vim" とも呼ばれています。 +evim を使っているあなたはきっと、頭にハンカチをかぶっているのです。 +(訳注: gumbies は Monty Python に登場するおもしろ集団。ハンカチをかぶっ +ている。) +.SH 関連項目 +vim(1) +.SH 著者 +.B Vim +のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 +メニューの Help/Credits を参照してください。 diff --git a/ja/vim-ja.UTF-8.1 b/ja/vim-ja.UTF-8.1 new file mode 100644 index 000000000..e1190e94a --- /dev/null +++ b/ja/vim-ja.UTF-8.1 @@ -0,0 +1,500 @@ +.TH VIM 1 "2006 Apr 11" +.SH 名前 +vim \- Vi IMproved, プログラマのテキストエディタ +.SH 書式 +.br +.B vim +[options] [file ..] +.br +.B vim +[options] \- +.br +.B vim +[options] \-t tag +.br +.B vim +[options] \-q [errorfile] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH 説明 +.B Vim +は Vi 互換のテキストエディタです。 +どのような種類のプレインテキストでも編集できます。 +特に、プログラムの編集に力を発揮します。 +.PP +Vi に多くの改良が加えられています: +多段アンドゥ、マルチウィンドウ、マルチバッファ、構文強調表示、 +コマンドライン編集、ファイル名補完、ヘルプ、ビジュアル選択、などなど。 +.B Vim +と Vi の違いについての要約は ":help vi_diff.txt" を参照してください。 +.PP +.B Vim +の実行中は ":help" コマンドでヘルプを引くことができます。 +下記、オンラインヘルプの項を参照してください。 +.PP +.B Vim +は次のようなコマンドで起動できます。 +.PP + vim file +.PP +正確な書式は次の通りです: +.PP + vim [options] [filelist] +.PP +filelist を省略した場合は、空のバッファが開かれます。 +指定した場合は、以下の四つのうちどれか一つの方法でファイルが開かれます。 +.TP 12 +file .. +ファイルのリスト。 +一番目のファイルがカレントファイルになり、バッファに読み込まれます。 +カーソルは、バッファの一行目に置かれます。 +他のファイルを表示するには ":next" コマンドを使ってください。 +ファイル名がダッシュで始まるファイルを開く場合は、 +filelist の前に "\-\-" を指定してください。 +.TP +\- +ファイルは標準入力から読み込まれます。コマンドは標準エラー (ttyからの入 +力になっているはず) から読み込まれます。 +.TP +\-t {tag} +開くファイルとカーソルの初期位置は "tag" に依存します。goto label の一種です。 +tags ファイルから {tag} が検索され、関連したファイルがカレントファイルになり +ます。そして、関連したコマンドが実行されます。 +これは主に C 言語のファイルを開くときに使われます。その場合 {tag} に関数など +を指定して使います。 +関数を含んでいるファイルが開かれ、その関数の先頭にカーソルが移動する、 +という動作になります。 +詳しくは ":help tag\-commands" を参照してください。 +.TP +\-q [errorfile] +クイックフィックスモードで起動します。 +[errorfile] に指定したファイルが読み込まれ、最初のエラーが表示されます。 +[errorfile] を省略した場合は、オプション 'errorfile' が使われます (初期設定 +は、Amiga では "AztecC.Err"、その他のシステムでは "errors.err" です)。 +詳しくは ":help quickfix" を参照してください。 +.PP +.B Vim +は、起動されたときの実行ファイルの名前によって動作を変えます +(実行ファイルの実体が同じであっても)。 +.TP 10 +vim +"普通" に起動します。標準の状態です。 +.TP +ex +Ex モードで起動します。 +ノーマルモードに切り替えるには ":vi" コマンドを使ってください。 +引数に "\-e" を指定した場合と同じです。 +.TP +view +読み込み専用モードで起動します。ファイルの保存が制限されます。 +引数に "\-R" を指定した場合と同じです。 +.TP +gvim gview +GUI バージョン。 +新しいウィンドウを開いて起動します。 +引数に "\-g" を指定した場合と同じです。 +.TP +evim eview +簡易モードの GUI バージョン。 +新しいウィンドウを開いて起動します。 +引数に "\-y" を指定した場合と同じです。 +.TP +rvim rview rgvim rgview +上記と同じですが、制限モードで起動します。シェルコマンドを実行したり、 +.B Vim +をサスペンドしたりできなくなります。 +引数に "\-Z" を指定した場合と同じです。 +.SH オプション +ファイル名の前でも後ろでも、好きな順番でオプションを指定できます。 +パラメータを必要としない引数は、一つのダッシュにまとめて指定できます。 +.TP 12 ++[num] +一番目のファイルの "num" 行目にカーソルを移動します。 +"num" を省略した場合は、一行目にカーソルが移動します。 +.TP ++/{pat} +一番目のファイルの、最初に {pat} が見つかった行にカーソルが移動します。 +検索パターンについては ":help search\-pattern" を参照してください。 +.TP ++{command} +.TP +\-c {command} +一番目のファイルが読み込まれた後に {command} が実行されます。 +{command} は Ex コマンドとして解釈されます。 +{command} に空白を含める場合は、ダブルクォートで囲んでください (シェルに依存)。 +例: vim "+set si" main.c +.br +Note: "+" と "\-c" は合わせて 10 個まで指定できます。 +.TP +\-S {file} +一番目のファイルが読み込まれた後に {file} が実行されます。 +これは \-c "source {file}" と同じ動作です。 +{file} の先頭が '\-' の場合は使えません。 +{file} が省略された場合は、"Session.vim" が使われます (ただし \-S が最後の引 +数だった場合の)。 +.TP +\-\-cmd {command} +"\-c" と同じですが、vimrc を処理する前にコマンドが実行されます。 +これらのコマンドは "\-c" コマンドとは別に、10 個まで指定できます。 +.TP +\-A +アラビア語がサポートされていて、アラビア語キーマップがある場合は、 +アラビア語モードで起動します ('arabic' がオンになります)。 +右横書きのファイルを編集できます。 +サポートされていない場合はエラーメッセージを表示して終了します。 +.TP +\-b +バイナリモード。 +バイナリファイルを編集ためのオプションがいくつか設定されます。 +.TP +\-C +互換モード。'compatible' オプションがオンになります。 + .vimrc ファイルの有無にかかわらず、 +.B Vim +の動作が Vi 互換になります。 +.TP +\-d +diff モードで起動します。 +二つか三つのファイルを引数に指定してください。 +指定されたファイルが開かれ、それらのファイルの差分が表示されます。 +vimdiff(1) と同様の動作です。 +.TP +\-d {device} +{device} を端末として開きます。 +Amiga でのみ使います。 +例: +"\-d con:20/30/600/150". +.TP +\-D +デバッグ。スクリプトの最初のコマンドが実行されるところからデバッグモードを開 +始します。 +.TP +\-e +Ex モードで起動します。 +実行ファイルの名前が "ex" の場合と同じです。 +.TP +\-E +改良版 Ex モードで起動します。 +実行ファイルの名前が "exim" の場合と同じです。 +.TP +\-f +フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 +Amiga の場合は、新しいウィンドウで再起動しなくなります。 +メールソフトなどから +.B Vim +を起動して、編集が終わるまで待機したいような場合に使ってください。 +Amiga では、":sh" と "!" コマンドは機能しなくなります。 +.TP +\-\-nofork +フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 +.TP +\-F +ペルシア語がサポートされていて、ペルシア語キーマップがある場合は、 +ペルシア語モードで起動します ('fkmap' と 'rightleft' がオンになります)。 +右横書きのファイルを編集できます。 +サポートされていない場合はエラーメッセージを表示して終了します。 +.TP +\-g +GUI がサポートされている場合は、GUI で起動します。 +サポートされていない場合はエラーメッセージを表示して終了します。 +.TP +\-h +コマンドライン引数やオプションのヘルプを表示して終了します。 +.TP +\-H +ヘブライ語がサポートされていて、ヘブライ語キーマップがある場合は、 +ヘブライ語モードで起動します ('hkmap' と 'rightleft' がオンになります)。 +右横書きのファイルを編集できます。 +サポートされていない場合はエラーメッセージを表示して終了します。 +.TP +\-i {viminfo} +viminfo ファイルを使う設定になっている場合は、初期設定の "~/.viminfo" の代わ +りに、指定されたファイルを設定します。 +"NONE" を指定すると、.viminfo ファイルを使わないように設定できます。 +.TP +\-L +\-r と同じです。 +.TP +\-l +lisp モード。 +オプションの 'lisp' と 'showmatch' がオンになります。 +.TP +\-m +ファイルの変更を不可能にします。 +オプション 'write' がオフになります。 +バッファを変更することはできますが、ファイルを保存することはできません。 +.TP +\-M +変更を不可能にします。オプションの 'modifiable' と 'write' がオフになり、 +ファイルの変更と保存ができなくなります。 +Note: それらのオプションを設定すれば変更できるようになります。 +.TP +\-N +非互換モード。'compatible' オプションがオフになります。 + .vimrc ファイルの有無にかかわらず、 +.B Vim +の改良された機能が有効になります。Vi との互換性が少し失われます。 +.TP +\-n +スワップファイルを使用しません。 +クラッシュしてもリカバリできなくなります。 +フロッピーディスクのような非常に低速なメディアのファイルを読み書きするときに +便利です。 +":set uc=0" と設定しても同じです。 +戻すには ":set uc=200" と設定してください。 +.TP +\-nb +NetBeans と接続し、エディタサーバーになります。 +詳しくはヘルプを参照してください。 +.TP +\-o[N] +N 個のウィンドウを水平分割で開きます。 +N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 +.TP +\-O[N] +N 個のウィンドウを垂直分割で開きます。 +N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 +.TP +\-p[N] +N 個のタブページを開きます。 +N を省略した場合は、引数のファイルを個別のタブページで開きます。 +.TP +\-R +読み込み専用モード。 +オプション 'readonly' がオンになります。 +バッファを変更することはできますが、間違ってファイルを上書きしてしまうのを防 +ぐことができます。 +ファイルを保存したい場合は、":w!" のように、Ex コマンドに感嘆符を付けてくだ +さい。 +\-R オプションは \-n オプションの効果も含んでいます (下記参照)。 +オプション 'readonly' は ":set noro" でオフにできます。 +詳しくは ":help 'readonly'" を参照してください。 +.TP +\-r +スワップファイルの一覧を表示します。リカバリに関する情報も表示されます。 +.TP +\-r {file} +リカバリモード。 +スワップファイルを使って、クラッシュした編集セッションを復活させます。 +スワップファイルは、ファイル名に ".swp" を加えた名前のファイルです。 +詳しくは ":help recovery" を参照してください。 +.TP +\-s +サイレントモード。"ex" という名前で起動するか、"\-e" オプションの後で +"\-s" オプションが指定された場合のみ。 +.TP +\-s {scriptin} +{scriptin} をスクリプトファイルとして読み込まれます。 +ファイル中の文字列は、手で入力したときと同じように処理されます。 +これは ":source! {scriptin}" と同じ動作です。 +エディタが終了する前にファイルの終わりまで読み込んだ場合、 +それ以降はキーボードから入力を読み込みます。 +.TP +\-T {terminal} +端末の名前を指定します。 +端末が自動的に認識されない場合に使ってください。 +Vim が組み込みでサポートしている名前か、 +termcap または terminfo ファイルで定義されている名前を指定してください。 +.TP +\-u {vimrc} +{vimrc} ファイルを使って初期化します。 +他の初期化処理はスキップされます。 +特殊なファイルを編集する場合などに使ってください。 +すべての初期化をスキップするには "NONE" を指定してください。 +詳しくは ":help initialization" を参照してください。 +.TP +\-U {gvimrc} +{gvimrc} ファイルを使って GUI を初期化します。 +他の GUI の初期化はスキップされます。 +すべての GUI の初期化をスキップするには "NONE" を指定してください。 +詳しくは ":help gui\-init" を参照してください。 +.TP +\-V[N] +冗長モード。スクリプトファイルを実行したり viminfo ファイルを読み書きするた +びにメッセージを表示します。N に指定した数値が 'verbose' に設定されます。 +省略した場合は 10 になります。 +.TP +\-v +Vi モードで起動します。 +実行ファイルの名前が "vi" の場合と同じです。 +実行ファイルの名前が "ex" の場合だけ効果があります。 +.TP +\-w {scriptout} +入力した文字を {scriptout} に記録します。 +"vim \-s" や "source!" で実行するためのスクリプトファイルを作成するのに便利 +です。 +{scriptout} ファイルがすでに存在した場合は追加保存されます。 +.TP +\-W {scriptout} +\-w と同じですが、ファイルがすでに存在した場合は上書きされます。 +.TP +\-x +ファイルを暗号化して書き込みます。暗号化キーの入力プロンプトが表示されます。 +.TP +\-X +X サーバーと通信しません。端末での起動時間を短くできます。 +しかし、ウィンドウタイトルの変更やクリップボードは使えなくなります。 +.TP +\-y +簡易モードで起動します。 +実行ファイルの名前が "evim" や "eview" の場合と同じです。 +.B Vim +の動作がモードレスエディタ (click-and-type editor) のようになります。 +.TP +\-Z +制限モード。 +実行ファイルの名前が "r" で始まっている場合と同じです。 +.TP +\-\- +オプション指定の末尾を示す記号です。 +これ以降の引数はすべてファイル名として扱われます。 +ファイル名が '\-' で始まっているファイルを開くときに使ってください。 +.TP +\-\-echo\-wid +GTK GUI のみ: Window ID を標準出力に出力します。 +.TP +\-\-help +ヘルプを表示して終了します。"\-h" と同じです。 +.TP +\-\-literal +引数のファイル名をリテラル文字列として扱います。ワイルドカードを展開しませ +ん。Unix のように、シェルがワイルドカードを展開する場合は機能しません。 +.TP +\-\-noplugin +プラグインをロードしません。\-u NONE はこの動作を含んでいます。 +.TP +\-\-remote +Vim サーバーと通信し、引数に指定されたファイルを Vim サーバーで開きます。 +サーバーが存在しない場合は、エラーメッセージを表示され、起動中の Vim でファ +イルが開かれます。 +.TP +\-\-remote\-expr {expr} +Vim サーバーと通信し、{expr} に与えられた式を Vim サーバーで実行し、結果を標 +準出力に出力します。 +.TP +\-\-remote\-send {keys} +Vim サーバーと通信し、{keys} に与えられたキーを Vim サーバーに送信します。 +.TP +\-\-remote\-silent +\-\-remote と同じですが、サーバーが存在しなくてもエラーメッセージを表示しま +せん。 +.TP +\-\-remote\-wait +\-\-remote と同じですが、ファイルが開かれるのを確認できるまで待機します。 +.TP +\-\-remote\-wait\-silent +\-\-remote\-wait と同じですが、サーバーが存在しなくてもエラーメッセージを表 +示しません。 +.TP +\-\-serverlist +Vim サーバーの一覧を表示します。 +.TP +\-\-servername {name} +サーバーの名前を {name} に設定します。\-\-remote 引数を指定しなかった場合 +は、起動中の Vim の名前として使われるので、後からその名前を使ってサーバー通 +信できます。 +.TP +\-\-socketid {id} +GTK GUI のみ: GtkPlug メカニズムを使って gvim を別のウィンドウの中で実行しま +す。 +.TP +\-\-version +バージョン情報を表示して終了します。 +.SH オンラインヘルプ +ヘルプを開くには、 +.B Vim +の中で ":help" と入力してください。 +":help 調べたい項目" と入力すれば、指定した項目のヘルプが表示されます。 +例: "ZZ" コマンドのヘルプを表示するには ":help ZZ" と入力します。 +<Tab> や CTRL\-D を使って補完することもできます +(":help cmdline\-completion" 参照)。 +ヘルプには、項目から項目へジャンプできるようにタグが埋め込まれています +(ハイパーリンクのようなものです。":help" 参照)。 +すべてのヘルプファイルはこの方法で開くことができます。 +例: ":help syntax.txt"。 +.SH ファイル +.TP 15 +/usr/local/lib/vim/doc/*.txt +.B Vim +のヘルプファイル。 +ファイルの一覧は ":help doc\-file\-list" に記載されています。 +.TP +/usr/local/lib/vim/doc/tags +ヘルプを検索するための tags ファイル。 +.TP +/usr/local/lib/vim/syntax/syntax.vim +システムの構文定義初期化ファイル。 +.TP +/usr/local/lib/vim/syntax/*.vim +いろいろな言語用の構文定義ファイル。 +.TP +/usr/local/lib/vim/vimrc +システムの +.B Vim +初期化ファイル。 +.TP +~/.vimrc +ユーザーの +.B Vim +初期化ファイル。 +.TP +/usr/local/lib/vim/gvimrc +システムの gvim 初期化ファイル。 +.TP +~/.gvimrc +ユーザーの gvim 初期化ファイル。 +.TP +/usr/local/lib/vim/optwin.vim +":options" コマンドで使われるファイル。オプションを表示したり設定したりでき +ます。 +.TP +/usr/local/lib/vim/menu.vim +システムのメニュー初期化ファイル。gvim で使います。 +.TP +/usr/local/lib/vim/bugreport.vim +バグレポートを生成するスクリプト。":help bugs" 参照。 +.TP +/usr/local/lib/vim/filetype.vim +ファイル名からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 +.TP +/usr/local/lib/vim/scripts.vim +ファイルの内容からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 +.TP +/usr/local/lib/vim/*.ps +PostScript 印刷に使われるファイル。 +.PP +最新の情報は VIM のホームページを参照してください: +.br +<URL:http://www.vim.org/> +.SH 関連項目 +vimtutor(1) +.SH 著者 +.B Vim +のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 +":help credits" を参照してください。 +.br +.B Vim +は Stevie を基にしています。Stevie は Tim Thompson、Tony Andrews、 +G.R. (Fred) Walter によって開発されました。 +ただし、オリジナルのコードはもうほとんど残っていません。 +.SH バグ +既知のバグは ":help todo" に記載されています。 +.PP +Vi の動作を忠実に再現した結果、多くの人がバグだと思うような機能もいくつかあ +ります。 +"この動作は Vi と違う" からバグだと思った場合は、vi_diff.txtを確認してみてく +ださい (ファイルを開くか、Vim から ":help vi_diff.txt" と入力)。 +オプションの 'compatible' と 'cpoptions' も確認してください。 diff --git a/ja/vimdiff-ja.UTF-8.1 b/ja/vimdiff-ja.UTF-8.1 new file mode 100644 index 000000000..ee0f591db --- /dev/null +++ b/ja/vimdiff-ja.UTF-8.1 @@ -0,0 +1,44 @@ +.TH VIMDIFF 1 "2001 March 30" +.SH 名前 +vimdiff \- 二つか三つのファイルを Vim で開いて、その差分を表示する +.SH 書式 +.br +.B vimdiff +[options] file1 file2 [file3] +.PP +.B gvimdiff +.SH 説明 +.B Vimdiff +は、二つ (か三つ) のファイルを +.B Vim +で開きます。 +ファイルは個別のウィンドウで開かれ、差分が強調表示されます。 +同じファイルの別のバージョン間で、変更を確認したり、変更を移動したりするのが +簡単になります。 +.PP +Vim についての詳細は vim(1) を参照してください。 +.PP +.B gvimdiff +という名前で起動された場合は GUI で起動します。 +.PP +差分を強調表示するために、 +それぞれのウィンドウの 'diff' オプションがオンに設定されます。 +.br +テキストを見やすくするために、オプションの 'wrap' と 'scrollbind' もオンに設 +定されます。 +.br + 'foldmethod' オプションは "diff" に設定され、変更されていない行は折り畳まれ +ます。 +折り畳みの確認と開閉が簡単にできるように、'foldcolumn'は 2 に設定されます。 +.SH オプション +行を並べて表示するために、"\-O" 引数を使ったときのように、ウィンドウは垂直分 +割されます。 +ウィンドウを水平分割したい場合は "\-o" 引数を使ってください。 +.PP +その他の引数については vim(1) を参照してください。 +.SH 関連項目 +vim(1) +.SH 著者 +.B Vim +のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 +":help credits" を参照してください。 diff --git a/ja/vimtutor-ja.UTF-8.1 b/ja/vimtutor-ja.UTF-8.1 new file mode 100644 index 000000000..fc363c0d1 --- /dev/null +++ b/ja/vimtutor-ja.UTF-8.1 @@ -0,0 +1,43 @@ +.TH VIMTUTOR 1 "2001 April 2" +.SH 名前 +vimtutor \- Vim チュートリアル +.SH 書式 +.br +.B vimtutor [language] +.SH 説明 +.B Vimtutor +は +.B Vim +のチュートリアルを起動します。 +演習ファイルのコピーを使って実施するので、オリジナルの演習ファイルを壊してし +まう心配はありません。 +.PP +.B Vimtutor +は +.B Vim +を初めて学ぶ人向けのチュートリアルです。 +.PP +[language] 引数は "ja" や "es" などの二文字の言語名です。 +[language] 引数を省略した場合はロケールの言語が使われます。 +その言語に翻訳された演習ファイルがある場合は、そのファイルが使われます。 +ない場合は英語のファイルが使われます。 +.PP +.B Vim +は Vi 互換モードで起動されます。 +.SH ファイル +.TP 15 +/usr/local/lib/vim/tutor/tutor[.language] +.B Vimtutor +の演習ファイル。 +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +演習ファイルをコピーするための Vim スクリプト。 +.SH 著者 +このチュートリアルは Colorado State University の Charles Smith のアイデア +を基に、Colorado School of Mines の Michael C. Pierce と Robert K. Ware の +両名によって書かれました。 E-mail: bware@mines.colorado.edu. +.B Vim +に合わせて、Bram Moolenaar が変更を加えました。 +翻訳者の名前は演習ファイルを参照してください。 +.SH 関連項目 +vim(1) diff --git a/ja/xxd-ja.UTF-8.1 b/ja/xxd-ja.UTF-8.1 new file mode 100644 index 000000000..df8a3c1d6 --- /dev/null +++ b/ja/xxd-ja.UTF-8.1 @@ -0,0 +1,366 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> +.\" Changes by Bram Moolenaar <Bram@vim.org> +.SH 名前 +.I xxd +\- 16 進ダンプを作成したり、元に戻したり。 +.SH 書式 +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH 説明 +ファイルや標準入力から 16 進ダンプを作成します。 +16 進ダンプから元のバイナリに戻すこともできます。 +.BR uuencode (1) +や +.BR uudecode (1) +のように、バイナリデータを、メールに張り付け可能な ASCII 形式に変換できた +り、標準出力に出力することもできます。 +さらに、バイナリファイルにパッチを当てるという使い方もできます。 +.SH オプション +.I infile +を指定しなかった場合は、標準入力が読み込まれます。 +.I infile +に +.RB \` \- ' +を指定した場合も、標準入力から読み込まれます。 +.I outfile +を指定しなかった (または +.RB \` \- ' +を指定した) 場合は、標準出力に出力されます。 +.PP +引数の解釈処理は適当なので注意してください。パラメータを取らない引数は +最初の一文字だけチェックされます。 +引数の文字とパラメータの間のスペースは省略可能です。 +パラメータは 10 進数、16 進数、8 進数で指定できます。 +.BR \-c8 +、 +.BR "\-c 8" +、 +.B \-c 010 +、 +.B \-cols 8 +はすべて同じ意味です。 +.PP +.TP +.IR \-a " | " \-autoskip +オートスキップ: 連続した nul 行を一つの '*' で置き換える。 +.TP +.IR \-b " | " \-bits +ビット (2進数) ダンプ。 +1 オクテットが "1" と "0" の 8 文字で出力されます。 +各行の行頭には 16 進数の行番号が表示されます。 +行末には ascii (または ebcdic) で表した場合の文字が表示されます。 +このモードでは \-r、\-p、\-i は機能しません。 +.TP +.IR "\-c cols " | " \-cols cols" +一行 +.RI < cols > +オクテットで出力する。標準設定は 16 (\-i: 12, \-ps: 30, \-b: 6)。最大 256。 +.TP +.IR \-E " | " \-EBCDIC +右端に出力される文字のエンコーディングを ASCII から EBCDIC に変更する。 +16 進ダンプの出力形式は変更されません。 +\-r、\-p、\-i が同時に指定された場合は何の効果もありません。 +.TP +.IR "\-g bytes " | " \-groupsize bytes" +出力を +.RI < bytes > +バイト (2 文字の 16 進数、または 8 文字の 2 進数) ごとにスペースで区切りま +す。 +区切らずに出力するには +.I \-g 0 +を指定してください。 +.RI < Bytes > +の標準設定は \fI2\fP です。2 進ダンプの場合は \fI1\fP です。 +ポストスクリプト形式やインクルード形式で出力するときは、このオプションは使わ +れません。 +.TP +.IR \-h " | " \-help +コマンドの説明を出力して終了する。変換は実行されません。 +.TP +.IR \-i " | " \-include +C インクルードファイル形式で出力します。入力ファイルの名前が付けられた静的配 +列の定義が出力されます。標準入力の場合は定義の中身だけ出力されます。 +.TP +.IR "\-l len " | " \-len len" +.RI < len > +オクテットだけ出力する。 +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +ポストスクリプト形式の 16 進ダンプを出力する。別名 プレーン 16 進ダンプ。 +.TP +.IR \-r " | " \-revert +元に戻す: 16 進ダンプからバイナリ形式に変換 (またはパッチ) します。 +ファイルへ出力する場合、出力先のファイルは切り詰めされません。 +行番号や特定の書式がないプレーン 16 進ダンプを読み込む場合は、 +.I \-r \-p +を指定してください。空白と改行は無視されます。 +.TP +.I \-seek offset +.IR \-r +の後で使われた場合: 16 進ダンプを出力するファイルの位置に +.RI < offset > +を加える。 +.TP +.I \-s [+][\-]seek +infile の +.RI < seek > +バイト目 (絶対位置、または相対位置) から開始する。 +\fI+ \fRは、現在の標準入力の位置から相対的な位置を示します +(標準入力から読み込むときのみ意味があります)。\fI\- \fRは、入力の終わりから +の文字数を示します (\fI+\fR と同時に指定した場合は、現在の標準入力の位置から +手前の位置を示します)。 +\-s 引数を指定しなかった場合は、現在のファイル位置から開始されます。 +.TP +.I \-u +16 進数の表記に大文字を使います。指定がない場合は小文字で出力されます。 +.TP +.IR \-v " | " \-version +バージョンを表示します。 +.SH 警告 +.PP +.I xxd \-r +では行番号の評価に関しての暗黙のルールがいくつかあります。 +出力ファイルがシーク可能なら、各行の行番号が順番通りに並んでなくても構いませ +ん。位置が飛んでいても重なっていても大丈夫です。その場合、次の位置に移動する +ために lseek(2) が使われます。 +出力ファイルがシーク不可なら、「隙間」だけが処理可能です。隙間は null バイト +で埋められます。 +.PP +.I xxd \-r +は不正な入力をエラーにしません。ゴミは静かに読み飛ばされます。 +.PP +16 進ダンプを編集するときは注意が必要です。 +.I xxd \-r +は必要な桁 (\-c 引数参照) だけ 16 進データを読み込んで、行の残りを無視しま +す。つまり、ascii (または ebcdic) を示している列への変更は無視されます。 +xxd \-r \-p でプレーン形式 (ポストスクリプト形式) の 16 進ダンプを元に戻す場 +合は、列の数は影響しません。 +2 桁の 16 進数と認識できるものはすべて変換されます。 +.PP +\fI% xxd \-i file\fR +.br +と +.br +\fI% xxd \-i < file\fR +.br +の結果は違います。注意してください。 +.PP +.I xxd \-s +seek +と +.IR "xxd \-s seek" , +の違いは、lseek(2) を使って入力を "巻き戻す" かどうかです。'+' が意味を持つ +のは、入力が標準入力で、xxd が起動されたときに標準入力のファイル位置がファイ +ルの先頭ではなかった場合です。 +以下の例が分かりやすいかもしれません (もっと混乱するかも!)... +.PP +`cat' が既に標準入力を終わりまで読んでいるので、読む前に標準入力を巻き戻す必 +要がある。 +.br +\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR +.PP +ファイル位置 0x480 (=1024+128) 前方から 16 進ダンプする。 +`+' は 「現在地からの相対位置」を意味するので、dd が 1k 処理した後から、さら +に `128' 進めます。 +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR +.PP +ファイル位置 0x100 ( = 1024\-768) から 16 進ダンプする。 +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR +.PP +このような使い方はあまりしませんし、`+' を使うこともほとんどないでしょう。 +\-s を使うときはいつでも、strace(1) や truss(1) を使って、xxd の働きをチェッ +クすることをお勧めします。 +.SH 例 +.PP +.br +.BR ファイル +の最初の三行 (16 進数で 0x30 バイト) 以降を出力する。 +.br +\fI% xxd \-s 0x30 file\fR +.PP +.br +.BR ファイル +の最後から三行 (16 進数で 0x30 バイト) を出力する。 +.br +\fI% xxd \-s \-0x30 file\fR +.PP +.br +120 バイトを、平文 16 進ダンプ形式で一行に 20 オクテットずつ出力する。 +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e54482058584420312022417567757374203139 +.br +39362220224d616e75616c207061676520666f72 +.br +20787864220a2e5c220a2e5c222032317374204d +.br +617920313939360a2e5c22204d616e2070616765 +.br +20617574686f723a0a2e5c2220202020546f6e79 +.br +204e7567656e74203c746f6e79407363746e7567 +.br + +.br +この man ページの先頭から 120 バイトを一行に 12 オクテットずつ 16 進ダンプす +る。 +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +.br +000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +.br +0000018: 224d 616e 7561 6c20 7061 6765 "Manual page +.br +0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ +.br +0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M +.br +000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" +.br +0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +.br +0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" +.br +0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +.br +000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug +.PP +.br +xxd.1 の日付部分だけを出力する。 +.br +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR +.br +0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996 +.PP +.br +.B input_file +を +.B output_file +にコピーし、先頭に 0x00 を 100 バイト分付け加える。 +.br +\fI% xxd input_file | xxd \-r \-s 100 > output_file\fR +.br + +.br +xxd.1 の日付を修正する。 +.br +\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +.br +中身がすべて 0x00 の 65537 バイトのファイルを作成する。 +ただし、最後のバイトだけは 'A' (hex 0x41)。 +.br +\fI% echo "010000: 41" | xxd \-r > file\fR +.PP +.br +作成したファイルをオートスキップを使って 16 進ダンプする。 +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +一文字の 'A' からなる 1 バイトのファイルを作成する。 + '\-r \-s' の後に指定した番号がファイル中の行番号に加算され、結果、余計なバ +イトが飛ばされいる。 +.br +\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR +.PP +.B vim(1) +の中から xxd をフィルタとして実行し、 +マークされた `a' から `z' までの領域を 16 進ダンプする。 +.br +\fI:'a,'z!xxd\fR +.PP +.B vim(1) +の中から xxd をフィルタとして実行し、 +マークされた `a' から `z' までの領域をバイナリに戻す。 +.br +\fI:'a,'z!xxd \-r\fR +.PP +.B vim(1) +の中から xxd をフィルタとして実行し、 +16 進ダンプされた行を元に戻す。戻したい行にカーソルを移動して: +.br +\fI!!xxd \-r\fR +.PP +シリアル行から一文字読み込む +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH 返り値 +以下のエラー値が返ります: +.TP +0 +エラーなし。 +.TP +\-1 +操作がサポートされていない ( +.I xxd \-r \-i +はまだ不可です). +.TP +1 +引数の解釈に関するエラー。 +.TP +2 +入力ファイルに関する問題。 +.TP +3 +出力ファイルに関する問題。 +.TP +4,5 +指定された位置へシークできなかった。 +.SH 関連項目 +uuencode(1), uudecode(1), patch(1) +.br +.SH 警告 +この奇妙なツールは作者が使いやすいように作られています。 +自己責任で使ってください。ファイルをコピーし、それを調べ、ウィザードたれ。 +.br +.SH バージョン +このマニュアルは xxd バージョン 1.7 について説明しています。 +.SH 著者 +.br +(c) 1990-1997 by Juergen Weigert +.br +<jnweiger@informatik.uni\-erlangen.de> +.LP +私の功績として自由に配布してください。 +.br +儲かったら教えてください。 +.br +損しても知りません。 +.PP +マニュアルは Tony Nugent +.br +<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> +.br +によって書かれ、 +Bram Moolenaar が少し変更を加え、 +Juergen Weigert が編集しました。 +.PP From 75299988a772e4ecbdc94ef21e38f7492dae1553 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sun, 1 Oct 2006 00:44:59 +0000 Subject: [PATCH 058/783] update motion to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@58 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/motion.txt | 188 ++++++++++++++++++++++++++++++++++++++++---------- ja/motion.jax | 150 ++++++++++++++++++++++++++++++++++------ 2 files changed, 277 insertions(+), 61 deletions(-) diff --git a/en/motion.txt b/en/motion.txt index a149ff4a9..6fdfd9310 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 6.3. Last change: 2004 May 13 +*motion.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -57,6 +57,7 @@ or change text. The following operators are available: |>| > shift right |<| < shift left |zf| zf define a fold + |g@| g@ call function set with the 'operatorfunc' option If the motion includes a count and the operator also had a count before it, the two counts are multiplied. For example: "2d3w" deletes six words. @@ -72,17 +73,18 @@ and end position. Generally, motions that move between lines affect lines characterwise). However, there are some exceptions. *exclusive* *inclusive* -A character motion is either inclusive or exclusive. When inclusive, the start -and end position of the motion are included in the operation. When exclusive, -the last character towards the end of the buffer is not included. Linewise -motions always include the start and end position. +A character motion is either inclusive or exclusive. When inclusive, the +start and end position of the motion are included in the operation. When +exclusive, the last character towards the end of the buffer is not included. +Linewise motions always include the start and end position. -Which motions are linewise, inclusive or exclusive is mentioned below. There -are however, two general exceptions: +Which motions are linewise, inclusive or exclusive is mentioned with the +command. There are however, two general exceptions: 1. If the motion is exclusive and the end of the motion is in column 1, the end of the motion is moved to the end of the previous line and the motion becomes inclusive. Example: "}" moves to the first line after a paragraph, but "d}" will not include that line. + *exclusive-linewise* 2. If the motion is exclusive, the end of the motion is in column 1 and the start of the motion was at or before the first non-blank in the line, the motion becomes linewise. Example: If a paragraph begins with some blanks @@ -246,7 +248,7 @@ f{char} To [count]'th occurrence of {char} to the right. The *F* F{char} To the [count]'th occurrence of {char} to the left. - The cursor is placed on {char} |inclusive|. + The cursor is placed on {char} |exclusive|. {char} can be entered like with the |f| command. *t* @@ -258,7 +260,7 @@ t{char} Till before [count]'th occurrence of {char} to the *T* T{char} Till after [count]'th occurrence of {char} to the left. The cursor is placed on the character right of - {char} |inclusive|. + {char} |exclusive|. {char} can be entered like with the |f| command. *;* @@ -349,6 +351,10 @@ or the last line. The first two commands put the cursor in the same column except after the "$" command, then the cursor will be put on the last character of the line. +If "k", "-" or CTRL-P is used with a [count] and there are less than [count] +lines above the cursor and the 'cpo' option includes the "-" flag it is an +error. |cpo--|. + ============================================================================== 4. Word motions *word-motions* @@ -380,10 +386,11 @@ These commands move over words or WORDS. *word* A word consists of a sequence of letters, digits and underscores, or a sequence of other non-blank characters, separated with white space (spaces, -tabs, <EOL>). This can be changed with the 'iskeyword' option. +tabs, <EOL>). This can be changed with the 'iskeyword' option. An empty line +is also considered to be a word. *WORD* A WORD consists of a sequence of non-blank characters, separated with white -space. An empty line is also considered to be a word and a WORD. +space. An empty line is also considered to be a WORD. A sequence of folded lines is counted for one word of a single character. "w" and "W", "e" and "E" move to the start/end of the first word or WORD after @@ -424,20 +431,24 @@ between Vi and Vim. *]]* ]] [count] sections forward or to the next '{' in the - first column. When used after an operator, then the - '}' in the first column. |linewise| + first column. When used after an operator, then also + stops below a '}' in the first column. |exclusive| + Note that |exclusive-linewise| often applies. *][* ][ [count] sections forward or to the next '}' in the - first column. |linewise| + first column. |exclusive| + Note that |exclusive-linewise| often applies. *[[* [[ [count] sections backward or to the previous '{' in - the first column. |linewise| + the first column. |exclusive| + Note that |exclusive-linewise| often applies. *[]* [] [count] sections backward or to the previous '}' in - the first column. |linewise| + the first column. |exclusive| + Note that |exclusive-linewise| often applies. These commands move over three kinds of text objects. @@ -456,9 +467,12 @@ A paragraph begins after each empty line, and also at each of a set of paragraph macros, specified by the pairs of characters in the 'paragraphs' option. The default is "IPLPPPQPP LIpplpipbp", which corresponds to the macros ".IP", ".LP", etc. (These are nroff macros, so the dot must be in the -first column). A section boundary is also a paragraph boundary. Note that -this does not include a '{' or '}' in the first column. Also note that a -blank line (only containing white space) is NOT a paragraph boundary. +first column). A section boundary is also a paragraph boundary. +Note that a blank line (only containing white space) is NOT a paragraph +boundary. +Also note that this does not include a '{' or '}' in the first column. When +the '{' flag is in 'cpoptions' then '{' in the first column is used as a +paragraph boundary |posix|. *section* A section begins after a form-feed (<C-L>) in the first column and at each of @@ -583,6 +597,20 @@ i< "inner <> block", select [count] <> blocks, from '>', excluding the '<' and '>'. When used in Visual mode it is made characterwise. + *v_at* *at* +at "a tag block", select [count] tag blocks, from the + [count]'th unmatched "<aaa>" backwards to the matching + "</aaa>", including the "<aaa>" and "</aaa>". + See |tag-blocks| about the details. + When used in Visual mode it is made characterwise. + + *v_it* *it* +it "inner tag block", select [count] tag blocks, from the + [count]'th unmatched "<aaa>" backwards to the matching + "</aaa>", excluding the "<aaa>" and "</aaa>". + See |tag-blocks| about the details. + When used in Visual mode it is made characterwise. + a} *v_a}* *a}* *a{* a{ *v_aB* *v_a{* *aB* aB "a Block", select [count] Blocks, from "[count] [{" to @@ -597,6 +625,29 @@ iB "inner Block", select [count] Blocks, from "[count] [{" |[{|). When used in Visual mode it is made characterwise. +a" *v_aquote* *aquote* +a' *v_a'* *a'* +a` *v_a`* *a`* + "a quoted string". Selects the text from the previous + quote until the next quote. The 'quoteescape' option + is used to skip escaped quotes. + Only works within one line. + When the cursor starts on a quote, Vim will figure out + which quote pairs form a string by searching from the + start of the line. + Any trailing or leading white space is included. + When used in Visual mode it is made characterwise. + Repeating this object in Visual mode another string is + included. A count is currently not used. + +i" *v_iquote* *iquote* +i' *v_i'* *i'* +i` *v_i`* *i`* + Like a", a' and a`, but exclude the quotes and + repeating won't extend the Visual selection. + Special case: With a count of 2 the quotes are + included, but no extra white space as with a"/a'/a`. + When used after an operator: For non-block objects: For the "a" commands: The operator applies to the object and the white @@ -647,6 +698,26 @@ where on the object the cursor is. For example, compare "dw" and "daw": "dw" deletes from the cursor position to the start of the next word, "daw" deletes the word under the cursor and the space after or before it. + +Tag blocks *tag-blocks* + +For the "it" and "at" text objects an attempt is done to select blocks between +matching tags for HTML and XML. But since these are not completely compatible +there are a few restrictions. + +The normal method is to select a <tag> until the matching </tag>. For "at" +the tags are included, for "it" they are excluded. But when "it" is repeated +the tags will be included (otherwise nothing would change). Also, "it" used +on a tag block with no contents will select the leading tag. + +"<aaa/>" items are skipped. Case is ignored, also for XML where case does +matter. + +In HTML it is possible to have a tag like <br> or <meta ...> without a +matching end tag. These are ignored. + +The text objects are tolerant about mistakes. Stray end tags are ignored. + ============================================================================== 7. Marks *mark-motions* *E20* *E78* @@ -672,11 +743,12 @@ m[ or m] Set the |'[| or |']| mark. Useful when an operator is the cursor, this is not a motion command). *:ma* *:mark* *E191* -:[range]ma[rk] {a-zA-Z} Set mark {a-zA-Z} at last line number in [range], +:[range]ma[rk] {a-zA-Z'} + Set mark {a-zA-Z'} at last line number in [range], column 0. Default is cursor line. *:k* -:[range]k{a-zA-Z} Same as :mark, but the space before the mark name can +:[range]k{a-zA-Z'} Same as :mark, but the space before the mark name can be omitted. *'* *'a* *`* *`a* @@ -692,11 +764,14 @@ g'{mark} g`{mark} jumping within the current buffer. Example: > g`" < jumps to the last known position in a file. See - $VIMRUNTIME/vimrc_example.vim. {not in Vi} + $VIMRUNTIME/vimrc_example.vim. + Also see |:keepjumps|. + {not in Vi} *:marks* :marks List all the current marks (not a motion command). The |'(|, |')|, |'{| and |'}| marks are not listed. + The first column has number zero. {not in Vi} *E283* :marks {arg} List the marks that are mentioned in {arg} (not a @@ -704,6 +779,24 @@ g'{mark} g`{mark} :marks aB < to list marks 'a' and 'B'. {not in Vi} + *:delm* *:delmarks* +:delm[arks] {marks} Delete the specified marks. Marks that can be deleted + include A-Z and 0-9. You cannot delete the ' mark. + They can be specified by giving the list of mark + names, or with a range, separated with a dash. Spaces + are ignored. Examples: > + :delmarks a deletes mark a + :delmarks a b 1 deletes marks a, b and 1 + :delmarks Aa deletes marks A and a + :delmarks p-z deletes marks in the range p to z + :delmarks ^.[] deletes marks ^ . [ ] + :delmarks \" deletes mark " +< {not in Vi} + +:delm[arks]! Delete all marks for the current buffer, but not marks + A-Z or 0-9. + {not in Vi} + A mark is not visible in any way. It is just a position in the file that is remembered. Do not confuse marks with named registers, they are totally unrelated. @@ -761,15 +854,21 @@ was made yet in the current file. *'<* *`<* '< `< To the first character of the last selected Visual - area in the current buffer. {not in Vi}. + area in the current buffer. For block mode it may + also be the last character in the first line (to be + able to define the block). {not in Vi}. *'>* *`>* '> `> To the last character of the last selected Visual - area in the current buffer. {not in Vi}. + area in the current buffer. For block mode it may + also be the first character of the last line (to be + able to define the block). Note that 'selection' + applies, the position may be just after the Visual + area. {not in Vi}. *''* *``* -'' `` To the position before latest jump, or where the last - "m'" or "m`" command was given. Not set when the +'' `` To the position before the latest jump, or where the + last "m'" or "m`" command was given. Not set when the |:keepjumps| command modifier was used. Also see |restore-position|. @@ -785,8 +884,8 @@ was made yet in the current file. *'^* *`^* '^ `^ To the position where the cursor was the last time - when Insert mode was stopped This is used by the |gi| - command. Not set when the |:keepjumps| command + when Insert mode was stopped. This is used by the + |gi| command. Not set when the |:keepjumps| command modifier was used. {not in Vi} *'.* *`.* @@ -868,7 +967,7 @@ These commands are not marks themselves, but jump to a mark: or larger than before, all marks are kept at the same line number. - When the number of lines decreases, the marks in the - ilnes that disappeared are deleted. + lines that disappeared are deleted. In any case the marks below the filtered text have their line numbers adjusted, thus stick to the text, as usual. @@ -877,12 +976,24 @@ These commands are not marks themselves, but jump to a mark: *:keepj* *:keepjumps* :keepj[umps] {command} - Do not change the |''|, |'.| and |'^| marks, the - |jumplist| or the |changelist|. Useful when making a - change or inserting text automatically and the user - doesn't want to go to this position. E.g., when - updating a "Last change" timestamp: > - autocmd BufWritePre,FileWritePre *.abc keepjumps call SetLastChange() + Moving around in {command} does not change the |''|, + |'.| and |'^| marks, the |jumplist| or the + |changelist|. + Useful when making a change or inserting text + automatically and the user doesn't want to go to this + position. E.g., when updating a "Last change" + timestamp in the first line: > + + :let lnum = line(".") + :keepjumps normal gg + :call SetLastChange() + :keepjumps exe "normal " . lnum . "G" +< + Note that ":keepjumps" must be used for every command. + When invoking a function the commands in that function + can still change the jumplist. Also, for + ":keepjumps exe 'command '" the "command" won't keep + jumps. Instead use: ":exe 'keepjumps command'" ============================================================================== 8. Jumps *jump-motions* @@ -957,7 +1068,8 @@ The result is that when repeating CTRL-O you will get back to old positions only once. When the |:keepjumps| command modifier is used, jumps are not stored in the -jumplist. +jumplist. Jumps are also not stored in other cases, e.g., in a |:global| +command. You can explicitly add a jump by setting the ' mark. After the CTRL-O command that got you into line 1154 you could give another jump command (e.g., "G"). The jump list would then become: @@ -996,7 +1108,7 @@ g; Go to [count] older position in change list. *g,* *E663* g, Go to [count] newer cursor position in change list. - Just like "g;| but in the opposite direction. + Just like |g;| but in the opposite direction. (not a motion command) {not in Vi} {not available without the +jumplist feature} @@ -1184,7 +1296,7 @@ L To line [count] from bottom of window (default: Last Cursor is adjusted for 'scrolloff' option. <LeftMouse> Moves to the position on the screen where the mouse - click is |inclusive|. See also |<LeftMouse>|. If the + click is |exclusive|. See also |<LeftMouse>|. If the position is in a status line, that window is made the active window and the cursor is not moved. {not in Vi} diff --git a/ja/motion.jax b/ja/motion.jax index bf159b9db..6c4182fe9 100644 --- a/ja/motion.jax +++ b/ja/motion.jax @@ -1,11 +1,11 @@ COMMENT: カーソル移動 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> -*motion.txt* For Vim version 6.3. Last change: 2004 May 13 +*motion.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -65,6 +65,7 @@ MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> |>| > 右にシフトする |<| < 左にシフトする |zf| zf 折り畳みを作成する + |g@| g@ オプション'operatorfunc'に設定された関数を呼ぶ 移動コマンドにカウントが前置されていてかつ演算コマンドにカウントが前置されてい れば2つのカウントが掛け合わされます。例: "2d3w" は6つの単語を削除します。 @@ -83,13 +84,13 @@ MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> の最後に向かって最後の文字は演算に含まれません。行指向の移動は常に最初と最後の 位置が含まれます。 -どの移動コマンドが行指向であり、内包的であり、排他的であるかは下に説明されてい -ます。しかしながら2つの例外があります: +どの移動コマンドが行指向であり、内包的であり、排他的であるかはコマンドのそばに +書かれています。しかしながら2つの例外があります: 1. 移動コマンドが排他的で移動後の位置が1桁目であれば、移動の最後は一行前の行の 最後に動かされ、移動コマンドは内包的になります。例: "}" は段落の後の最初の 行まで移動しますが "d}" はその行を含めません。 - + *exclusive-linewise* 2. 移動コマンドが排他的で、移動後の位置が1桁目でかつ移動初めの位置がその行の最 初の非空白文字かその手前の位置であれば、移動コマンドは行指向になります。 例: 段落が空白文字で始まっていて、カーソルが最初の非空白文字に位置している @@ -248,7 +249,7 @@ f{char} 右に向かって [count] 番目に現れる {char} に移動し、 *F* F{char} 左に向かって [count] 番目に現れる {char} に移動し、カ - ーソルがその {char} 上に置かれます|inclusive|。 + ーソルがその {char} 上に置かれます|exclusive|。 {char} は |f| コマンドと同様に入力できます。 *t* @@ -260,7 +261,7 @@ t{char} 右に向かって [count] 番目に現れる {char} まで移動し *T* T{char} 左に向かって [count] 番目に現れる {char} まで移動しま す。カーソルは {char} の右側の文字に置かれます - |inclusive|。 + |exclusive|。 {char} は |f| コマンドと同様に入力できます。 *;* @@ -349,6 +350,9 @@ gg [count] 行目の最初に非空白文字に移動します(行指向) のコマンドの後の位置と(可能であれば)同じ桁位置に動かします。"$" コマンドは例外 でカーソルは行の最後の位置に置かれます。 +[count]をつけて"k", "-", CTRL-Pを実行したが、カーソルより上に[count]分の行がな +かった場合、オプション'cpo'がフラグ"-"を含むならばエラーになります。|cpo--| + ============================================================================== 4. 単語単位の移動 *word-motions* @@ -380,7 +384,7 @@ gE [count] WORD 後方の単語の最後に。|inclusive| *word* word はアルファベット、数字、アンダースコア、もしくは他の非空白文字の連続で構 成され、ホワイトスペース(スペース、タブ、<EOL>)で区切られます。これらは -'iskeyword' オプションで変更することができます。 +'iskeyword' オプションで変更することができます。空行もwordとみなされます。 *WORD* WORD は非空白文字の連続で構成され、ホワイトスペースで区切られます。空行もまた 1つの word と WORD と見做されます。 @@ -424,18 +428,22 @@ WORD は非空白文字の連続で構成され、ホワイトスペースで区 ]] [count] セクション前方に、もしくは1桁目が '{' で始まる 次の場所に。演算コマンドの後で使われた場合は1桁目が '}' の場所に(行指向) + Note しばしば|exclusive-linewise|になる。 *][* ][ [count] セクション前方に、もしくは1桁目が '}' で始まる 次の場所に(行指向) + Note しばしば|exclusive-linewise|になる。 *[[* [[ [count] セクション後方に、もしくは1桁目が '{' で始まる 前の場所に(行指向) + Note しばしば|exclusive-linewise|になる。 *[]* [] [count] セクション後方に、もしくは1桁目が '}' で始まる 前の場所に(行指向) + Note しばしば|exclusive-linewise|になる。 これらのコマンドは3種類のテキストのまとまりの単位で移動します。 @@ -453,9 +461,11 @@ WORD は非空白文字の連続で構成され、ホワイトスペースで区 ります。段落マクロは 'paragraphs' オプションで指定されている文字のペアです。デ フォルトで "IPLPPPQPP LIpplpipbp" で、".IP", ".LP", などのマクロに一致します。 (これらは nroff のマクロです。ですのでドットは1桁目になければなりません)。セク -ションの境界は段落の境界でもあります。これは '{' か '}' を1桁目には含んでいな -いということに注意してください。また、空行(ホワイト・スペースのみを含む行)は、 -パラグラフの境界ではないということにも注意してください。 +ションの境界は段落の境界でもあります。空行(ホワイト・スペースのみを含む行)は、 +パラグラフの境界ではないということに注意してください。 +これは '{' か '}' を1桁目には含んでいないということにも注意してください。 +'cpoptions'にフラグ"{"が入っていると1桁目の"{"がパラグラフの境界とみなされるよ +うになります。|posix| *section* セクションは1桁目の改ページ(form-feed)(<C-L>)の後から始まり、そしてセクション @@ -577,6 +587,20 @@ i< "inner <> block" [count] <> block の内部を選択します。 までを '<' と '>' を除いて選択します。 ビジュアルモードで使われたときは、文字指向になります。 + *v_at* *at* +at "a tag block" [count]個のタグブロックを選択します。 + 後方の[count]番目の対応しない"<aaa>"からそれに対応する + "</aaa>"までを含みます。詳しくは|tag-blocks|を参照して + ください。ビジュアルモードで使われたときは文字指向にな + ります。 + + *v_it* *it* +it "inner tag block" [count]個のタグブロックを選択します。 + 後方の[count]番目の対応しない"<aaa>"からそれに対応する + "</aaa>"までで、"<aaa>"と"</aaa>"を除きます。詳しくは + |tag-blocks|を参照してください。ビジュアルモードで使わ + れたときは文字指向になります。 + a} *v_a}* *a}* *a{* a{ *v_aB* *v_a{* *aB* aB "a Block" [count] Block 選択します。"[count] [{" から @@ -591,6 +615,30 @@ iB "inner Block" [count] Block 選択します。"[count] [{" か |[{|)。 ビジュアルモードで使われたときは、文字指向になります。 +a" *v_aquote* *aquote* +a' *v_a'* *a'* +a` *v_a`* *a`* + "a quoted string"。前の引用符から次の引用符までを選択 + します。オプション'quoteescape'を使ってエスケープされ + た引用符をスキップします。 + 1行内でだけ動作します。 + カーソルを引用符の上において実行されると、行の先頭から + 検索し、どの引用符のペアが文字列をなすかを調べます。 + 前後に空白文字があると、それも含まれます。 + ビジュアルモードで使われたときは文字指向になります。 + ビジュアルモードでこのオブジェクトが繰り返し使われると、 + 別の文字列を含むように選択範囲を拡大します。現在のとこ + ろ、カウントは使われません。 + +i" *v_iquote* *iquote* +i' *v_i'* *i'* +i` *v_i`* *i`* + a", a', a`と同様ですが、引用符を含まず、繰り返し使われ + たとき選択範囲を拡大しません。 + 特別な場合: カウントに2が指定された場合引用符が含まれ + ます。ただしa"/a'/a`とは違い、前後の空白文字は含まれま + せん。 + 演算コマンドの後に使われた場合: ブロック以外のオブジェクト: "a" コマンド: 演算コマンドはオブジェクトとオブジェクトの後に続くホワイ @@ -641,6 +689,25 @@ iB "inner Block" [count] Block 選択します。"[count] [{" か ーソルの位置から次の word の初めまでを削除し、"daw" はカーソルの位置の単語と前 後のスペースを削除します。 +タグブロック *tag-blocks* + +テキストオブジェクト"it"と"at"ではHTMLやXMLの対応するタグの間のブロックを選択 +しようとします。しかしこれらは完全な互換ではないため、いくつかの制限があります。 + +通常の方法は<tag>から対応する</tag>までを選択します。"at"はそのタグ自身を含み、 +"it"はタグ自身を除きます。しかし"it"が繰り返し使われるとタグ自身が含まれます( +そうでないと何も変わらない)。また、中身がなにもないタグブロックの上で"it"を使 +うと開始タグが選択されます。 + +"<aaa/>"はスキップされます。本来XMLでは大文字・小文字の違いは区別されますが、 +Vimはその違いを無視します。 + +HTMLでは<br>や<meta ...>のように対応する終了タグを持たないタグもありえます。こ +れらは無視されます。 + +このテキストオブジェクトはミスも許容します。対応する開始タグがない終了タグは無 +視されます。 + ============================================================================== 7. マーク *mark-motions* *E20* *E78* @@ -664,11 +731,12 @@ m[ or m] マーク |'[| or |']| をセットします。演算コマンドが マンドではありません。ですのでカーソルは動きません)。 *:ma* *:mark* *E191* -:[range]ma[rk] {a-zA-Z} [range]の範囲の最後の行番号の0桁目を{a-zA-Z}にマーク +:[range]ma[rk] {a-zA-Z'} + [range]の範囲の最後の行番号の0桁目を{a-zA-Z}にマーク します。デフォルトはカーソル行です。 *:k* -:[range]k{a-zA-Z} :mark コマンドと同じですが、マーク名の前のスペースは挿 +:[range]k{a-zA-Z'} :mark コマンドと同じですが、マーク名の前のスペースは挿 入しなくてもよいです。 *'* *'a* *`* *`a* @@ -685,12 +753,15 @@ g'{mark} g`{mark} 場合にはジャンプリストを変更しない。例: > g`" < これはファイル内の最後の記憶している位置にジャンプする。 - $VIMRUNTIME/vimrc_example.vim を参照。{Vi にはない} + $VIMRUNTIME/vimrc_example.vim を参照。 + |:keepjumps|も参照。 + {Vi にはない} *:marks* :marks 現在のマークを全てリストします(移動コマンドではありませ ん)。 |'(|, |')|, |'{| と |'}| マークはリストされません。 + 1桁目は桁番号0となります。 {Vi にはない機能です} *E283* @@ -699,6 +770,22 @@ g'{mark} g`{mark} :marks aB < マーク 'a'と'B' をリストします。{Vi にはない機能です} + *:delm* *:delmarks* +:delm[arks] {marks} 指定されたマークを削除します。削除できるマークはA-Zと + 0-9などです。マーク'は削除できません。それらはダッシュ + で区切られたマーク名のリストを与えることで指定できます。 + スペースは無視されます。例: > + :delmarks a マークaを削除する + :delmarks a b 1 マークa, b, 1を削除する + :delmarks Aa マークA, aを削除する + :delmarks p-z pからzまでのマークを削除する + :delmarks ^.[] マーク^ . [ ]を削除する + :delmarks \" マーク"を削除する +< {Vi にはない} + +:delm[arks]! A-Z, 0-9を除くカレントバッファのすべてのマークを削除し + ます。 + {Vi にはない} マークはどのようにしても見えません。マークは単に覚えておかれるファイル中の位置 に過ぎません。マークと名前付きレジスターを混同しないようにしてください、まった @@ -761,12 +848,16 @@ g'{mark} g`{mark} *'<* *`<* '< `< 現在のバッファーで最後に選択されたビジュアルエリアの最 - 初の行の最初の文字に移動します。 + 初の行の最初の文字に移動します。ブロックモードでは最初 + の行の最後の文字になります(ブロックを定義できるように)。 {Vi にはない機能です} *'>* *`>* '> `> 現在のバッファーで最後に選択されたビジュアルエリアの最 - 後の行の最後の文字に移動します。 + 後の行の最後の文字に移動します。ブロックモードでは最後 + の行の最初の文字になります(ブロックを定義できるように)。 + 'selection'が適用され、位置はビジュアルエリアの直後に + なります。 {Vi にはない機能です} *''* *``* @@ -879,11 +970,23 @@ g'{mark} g`{mark} *:keepj* *:keepjumps* :keepj[umps] {command} - マーク |''|, |'.|, |'^| と |jumplist| や |changelist| - を変更しません。自動的に変更やテキストの挿入を行い、 - ユーザがその位置に行きたくないという場合に便利です。 - 例:タイムスタンプ "Last change" を更新するとき: > - autocmd BufWritePre,FileWritePre *.abc keepjumps call SetLastChange() + {command}の実行中の移動でマーク |''|, |'.|, |'^| と + |jumplist| や |changelist|を変更しないようにします。 + 自動的に変更やテキストの挿入を行い、ユーザがその位置に + 行きたくないという場合に便利です。例:タイムスタンプ + "Last change" を更新するとき: > + + :let lnum = line(".") + :keepjumps normal gg + :call SetLastChange() + :keepjumps exe "normal " . lnum . "G" +< + Note ":keepjumps"はコマンドごとに使わねばなりません。 + 関数を呼び出すとその関数の中のコマンドはジャンプリスト + を変えてしまいます。また、":keepjumps exe 'command '" + とすると、この"command"はジャンプリストを変えてしまい + ます。そうでなくて":exe 'keepjumps command'"としてくだ + さい。 ============================================================================== 8. ジャンプ *jump-motions* @@ -959,7 +1062,8 @@ CTRL-I ジャンプリストの中の [count] だけ新しいカーソル位 していると以前の場所には一度だけ戻ることになります。 |:keepjumps|コマンド修飾子が使われた場合、ジャンプ操作はリストに記憶されませ -ん。 +ん。また、他の場合にもジャンプ操作は記憶されません。例. |:global|の中。 +明示的にジャンプリストに追加するにはマーク'を設定します。 CTRL-O コマンドを行って1154行目に移動した後、他のジャンプコマンド(例えば: "G") を実行したとするとジャンプリストは次のようになります: @@ -1180,7 +1284,7 @@ L スクリーンの最下行から [count] 行目(デフォルト: スクリ 置は 'scrolloff' オプションに合うように調整されます。 <LeftMouse> スクリーン上でマウスがクリックされた場所に移動します - |inclusive|。参照 |<LeftMouse>|。もしその位置がステー + |exclusive|。参照 |<LeftMouse>|。もしその位置がステー タス行の中であると、そのウインドーがアクティブなウイン ドーとなりカーソルは動きません。{Vi にはない機能です} From b03c8d1fdc387d59171d53762eb7d735a6e34674 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 4 Oct 2006 13:39:04 +0000 Subject: [PATCH 059/783] fix: update visual, windows, workshop to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@59 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/visual.txt | 44 ++++++++++------- en/windows.txt | 124 ++++++++++++++++++++++++++++++++++-------------- en/workshop.txt | 40 ++++++++-------- ja/visual.jax | 34 +++++++++---- ja/windows.jax | 112 +++++++++++++++++++++++++++++++------------ ja/workshop.jax | 4 +- 6 files changed, 244 insertions(+), 114 deletions(-) diff --git a/en/visual.txt b/en/visual.txt index 8ad58cc0c..e588d954b 100644 --- a/en/visual.txt +++ b/en/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 6.3. Last change: 2004 Jun 06 +*visual.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -46,7 +46,7 @@ However, when the 'selection' option is set to "exclusive" and the cursor is after the Visual area, the character under the cursor is not included. With "v" the text before the start position and after the end position will -not be highlighted. However, All uppercase and non-alpha operators, except +not be highlighted. However, all uppercase and non-alpha operators, except "~" and "U", will work on whole lines anyway. See the list of operators below. @@ -86,10 +86,13 @@ Visual Normal blockwise Visual linewise Visual blockwise Visual Visual Normal linewise Visual linewise Visual Visual blockwise Visual Normal - *gv* *v_gv* + *gv* *v_gv* *reselect-Visual* gv Start Visual mode with the same area as the previous - area and the same mode. In Visual mode the current and - the previous Visual area are exchanged. + area and the same mode. + In Visual mode the current and the previous Visual + area are exchanged. + After using "p" or "P" in Visual mode the text that + was put will be selected. *<LeftMouse>* <LeftMouse> Set the current cursor position. If Visual mode is @@ -139,6 +142,9 @@ extended to the rightmost column of the longest line. If you want to highlight exactly the same area as the last time, you can use "gv" |gv| |v_gv|. + *v_<Esc>* +<Esc> In Visual mode: Stop Visual mode. + *v_CTRL-C* CTRL-C In Visual mode: Stop Visual mode. When insert mode is pending (the mode message shows @@ -176,7 +182,7 @@ When switching to another window on the same buffer, the cursor position in that window is adjusted, so that the same Visual area is still selected. This is especially useful to view the start of the Visual area in one window, and the end in another. You can then use <RightMouse> (or <S-LeftMouse> when -'mousemodel' is "popup") to move either end of the Visual area. +'mousemodel' is "popup") to drag either end of the Visual area. ============================================================================== 4. Operating on the Visual area *visual-operators* @@ -252,6 +258,11 @@ operator character: "v{move-around}3>" (move lines 3 indents to the right). The {move-around} is any sequence of movement commands. Note the difference with {motion}, which is only ONE movement command. +Another way to operate on the Visual area is using the |/\%V| item in a +pattern. For example, to replace all '(' in the Visual area with '#': > + + :%s/\%V(/X/g + ============================================================================== 5. Blockwise operators *blockwise-operators* @@ -269,7 +280,7 @@ See |v_b_I_example|. Visual-block Append *v_b_A* With a blockwise selection, A{string}<ESC> will append {string} to the end of -block on every line of the block. There is some differing behavior where the +block on every line of the block. There is some differing behavior where the block RHS is not straight, due to different line lengths: 1. Block was created with <C-v>$ @@ -294,12 +305,12 @@ all lines. *v_b_<* Visual-block Shift *v_b_>* -The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The +The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The LHS of the block determines the point from which to apply a right shift, and -padding includes TABs optimally according to 'ts' and 'et'. The LHS of the +padding includes TABs optimally according to 'ts' and 'et'. The LHS of the block determines the point upto which to shift left. Note: v_< padding is buggy if the Visual Block starts and ends in the same - TAB. (Vim 5.4c). + TAB. (Vim 5.4c) See |v_b_>_example|. See |v_b_<_example|. @@ -361,14 +372,14 @@ Note that special characters (like '.' and '*') will cause problems. Visual-block Examples *blockwise-examples* With the following text, I will indicate the commands to produce the block and -the results below. In all cases, the cursor begins on the 'a' in the first -line if the test text. +the results below. In all cases, the cursor begins on the 'a' in the first +line of the test text. The following modeline settings are assumed ":ts=8:sw=4:". It will be helpful to :set hls /<TAB> -where <TAB> ia a real TAB. This helps visualise the operations. +where <TAB> is a real TAB. This helps visualise the operations. The test text is: @@ -449,9 +460,10 @@ example, when a whole line is deleted, it can later be pasted halfway a line. Mappings and menus in Select mode. *Select-mode-mapping* -In Select mode the mappings and menus of Visual mode are used. Before it is -executed, Vim automatically switches to Visual mode, so that the same -behavior as in Visual mode is effective. +When mappings and menus are defined with the |:vmap| or |:vmenu| command they +work both in Visual mode and in Select mode. When these are used in Select +mode Vim automatically switches to Visual mode, so that the same behavior as +in Visual mode is effective. If you don't want this use |:xmap| or |:smap|. After the mapping or menu finishes, the selection is enabled again and Select mode entered, unless the selected area was deleted, another buffer became diff --git a/en/windows.txt b/en/windows.txt index 5a38aa07b..fb4a3b436 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 6.3. Last change: 2004 Apr 29 +*windows.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -33,7 +33,7 @@ compile time} disabled at compile time} ============================================================================== -1. Introduction *windows-intro* +1. Introduction *windows-intro* *window* A window is a viewport onto a buffer. You can use multiple windows on one buffer, or several windows on different buffers. @@ -68,6 +68,9 @@ inactive no no ' ' Note: All CTRL-W commands can also be executed with |:wincmd|, for those places where a Normal mode command can't be used or is inconvenient. +The main Vim window can hold several split windows. There are also tab pages +|tab-page|, each of which can hold multiple windows. + ============================================================================== 2. Starting Vim *windows-starting* @@ -101,6 +104,8 @@ when the last window also has a status line: 'laststatus' = 2 always a status line You can change the contents of the status line with the 'statusline' option. +This option can be local to the window, so that you can have a different +status line in each window. Normally, inversion is used to display the status line. This can be changed with the 's' character in the 'highlight' option. For example, "sb" sets it to @@ -253,6 +258,9 @@ CTRL-W c *CTRL-W_c* *:clo* *:close* :clo[se][!] Close current window. When the 'hidden' option is set, or when the buffer was changed and the [!] is used, the buffer becomes hidden (unless there is another window editing it). + When there is only one window in the current tab page and + there is another tab page, this closes the current tab page. + |tab-page|. This command fails when: *E444* - There is only one window on the screen. - When 'hidden' is not set, [!] is not used, the buffer has @@ -269,6 +277,8 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C* :hid[e] Quit current window, unless it is the last window on the screen. The buffer becomes hidden (unless there is another window editing it or 'bufhidden' is "unload" or "delete"). + If the window is the last one in the current tab page the tab + page is closed. |tab-page| The value of 'hidden' is irrelevant for this command. Changes to the buffer are not written and won't get lost, so this is a "safe" command. @@ -424,6 +434,13 @@ CTRL-W L Move the current window to be at the far right, using the full contents is used for the new window. {not available when compiled without the +vertsplit feature} + *CTRL-W_T* +CTRL-W T Move the current window to a new tab page. This fails if + there is only one window in the current tab page. + When a count is specified the new tab page will be opened + before the tab page with this index. Otherwise it comes after + the current tab page. + ============================================================================== 6. Window resizing *window-resize* @@ -514,7 +531,7 @@ The minimal height and width of a window is set with 'winminheight' and 24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf 25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf 26. :slast 36. :sblast split + to last arg/buf -27. :sall 37: :sball edit all args/buffers +27. :sall 37. :sball edit all args/buffers 38. :sunhide edit all loaded buffers 39. :[N]sbmod [N] split + to Nth modified buf @@ -549,6 +566,9 @@ can also get to them with the buffer list commands, like ":bnext". Rearrange the screen to open one window for each argument. All other windows are closed. When a count is given, this is the maximum number of windows to open. + With the |:tab| modifier open a tab page for each argument. + When there are more arguments than 'tabpagemax' further ones + become split windows in the last tab page. When the 'hidden' option is set, all buffers in closed windows become hidden. When 'hidden' is not set, and the 'autowrite' option is set, @@ -585,7 +605,7 @@ can also get to them with the buffer list commands, like ":bnext". not split. Also see |++opt| and |+cmd|. *:sfir* *:sfirst* -:sfir[st [++opt] [+cmd] +:sfir[st] [++opt] [+cmd] Same as ":srewind". *:sla* *:slast* @@ -605,20 +625,23 @@ can also get to them with the buffer list commands, like ":bnext". The |argument-list| is set, like with the |:next| command. The purpose of this command is that it can be used from a program that wants Vim to edit another file, e.g., a debugger. + When using the |:tab| modifier each argument is opened in a + tab page. The last window is used if it's empty. {only available when compiled with the +gui feature} ============================================================================== 8. Do a command in all buffers or windows *list-repeat* *:windo* -:windo[!] {cmd} Execute {cmd} in each window. +:windo {cmd} Execute {cmd} in each window. It works like doing this: > CTRL-W t :{cmd} CTRL-W w :{cmd} etc. -< When an error is detected on one window, further +< This only operates in the current tab page. + When an error is detected on one window, further windows will not be visited. The last window (or where an error occurred) becomes the current window. @@ -626,7 +649,7 @@ can also get to them with the buffer list commands, like ":bnext". {cmd} must not open or close windows or reorder them. {not in Vi} {not available when compiled without the |+listcmds| feature} - Also see |:argdo| and |:bufdo|. + Also see |:tabdo|, |:argdo| and |:bufdo|. *:bufdo* :bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list. @@ -652,7 +675,7 @@ can also get to them with the buffer list commands, like ":bnext". each buffer. {not in Vi} {not available when compiled without the |+listcmds| feature} - Also see |:argdo| and |:windo|. + Also see |:tabdo|, |:argdo| and |:windo|. Examples: > @@ -691,7 +714,7 @@ CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* CTRL-W CTRL-F Split current window in two. Edit file name under cursor. - Like ":split ]f", but window isn't split if the file does not + Like ":split gf", but window isn't split if the file does not exist. Uses the 'path' variable as a list of directory names where to look for the file. Also the path for current file is @@ -702,6 +725,28 @@ CTRL-W CTRL-F Split current window in two. Edit file name under cursor. {not available when the |+file_in_path| feature was disabled at compile time} +CTRL-W F *CTRL-W_F* + Split current window in two. Edit file name under cursor and + jump to the line number following the file name. See |gF| for + details on how the line number is obtained. + {not available when the |+file_in_path| feature was disabled + at compile time} + +CTRL-W gf *CTRL-W_gf* + Open a new tab page and edit the file name under the cursor. + Like "tab split" and "gf", but the new tab page isn't created + if the file does not exist. + {not available when the |+file_in_path| feature was disabled + at compile time} + +CTRL-W gF *CTRL-W_gF* + Open a new tab page and edit the file name under the cursor + and jump to the line number following the file name. Like + "tab split" and "gF", but the new tab page isn't created if + the file does not exist. + {not available when the |+file_in_path| feature was disabled + at compile time} + Also see |CTRL-W_CTRL-I|: open window for an included file that includes the keyword under the cursor. @@ -713,17 +758,18 @@ normally a small window used to show an include file or definition of a function. {not available when compiled without the |+quickfix| feature} -There can be only one preview window. It is created with one of the commands -below. The 'previewheight' option can be set to specify the height of the -preview window when it's opened. The 'previewwindow' option is set in the -preview window to be able to recognize it. The 'winfixheight' option is set -to have it keep the same height when opening/closing other windows. +There can be only one preview window (per tab page). It is created with one +of the commands below. The 'previewheight' option can be set to specify the +height of the preview window when it's opened. The 'previewwindow' option is +set in the preview window to be able to recognize it. The 'winfixheight' +option is set to have it keep the same height when opening/closing other +windows. *:pta* *:ptag* :pta[g][!] [tagname] Does ":tag[!] [tagname]" and shows the found tag in a "Preview" window without changing the current buffer or cursor - position. If a "Preview" window already exists, it is re-used + position. If a "Preview" window already exists, it is re-used (like a help window is). If a new one is opened, 'previewheight' is used for the height of the window. See also |:tag|. @@ -748,12 +794,12 @@ CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* CTRL-W } *CTRL-W_}* Use identifier under cursor as a tag and perform a :ptag on - it. Make the new Preview window (if required) N high. If N is + it. Make the new Preview window (if required) N high. If N is not given, 'previewheight' is used. CTRL-W g } *CTRL-W_g}* Use identifier under cursor as a tag and perform a :ptjump on - it. Make the new Preview window (if required) N high. If N is + it. Make the new Preview window (if required) N high. If N is not given, 'previewheight' is used. *:ped* *:pedit* @@ -875,7 +921,7 @@ list of buffers. |unlisted-buffer| 1 #h "/test/text" line 1 ~ 2u "asdf" line 0 ~ - 3 %l+ "version.c" line 1 ~ + 3 %a+ "version.c" line 1 ~ When the [!] is included the list will show unlisted buffers (the term "unlisted" is a bit confusing then...). @@ -901,7 +947,7 @@ list of buffers. |unlisted-buffer| :bad[d] [+lnum] {fname} Add file name {fname} to the buffer list, without loading it. If "lnum" is specified, the cursor will be positioned at that - line when the buffer is first entered. Note that other + line when the buffer is first entered. Note that other commands after the + will be ignored. :[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* @@ -937,9 +983,10 @@ list of buffers. |unlisted-buffer| :bw[ipeout][!] {bufname} :N,Mbw[ipeout][!] :bw[ipeout][!] N1 N2 ... - Like |:bdelete|, but really delete the buffer. All marks in - this buffer become invalid, option settings are lost, etc. - Don't use this unless you know what you are doing. + Like |:bdelete|, but really delete the buffer. Everything + related to the buffer is lost. All marks in this buffer + become invalid, option settings are lost, etc. Don't use this + unless you know what you are doing. :[N]bun[load][!] *:bun* *:bunload* *E515* :bun[load][!] [N] @@ -990,9 +1037,11 @@ list of buffers. |unlisted-buffer| Split window and edit buffer for {filename} from the buffer list. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. + Note: If what you want to do is split the buffer, make a copy + under another name, you can do it this way: > + :w foobar | sp # - *:bn* *:bnext* *E87* -:[N]bn[ext][!] [N] +:[N]bn[ext][!] [N] *:bn* *:bnext* *E87* Go to [N]th next buffer in buffer list. [N] defaults to one. Wraps around the end of the buffer list. See |:buffer-!| for [!]. @@ -1000,7 +1049,7 @@ list of buffers. |unlisted-buffer| buffer (if there is one). Similarly, if you are in a normal (non-help) buffer, this takes you to the next normal buffer. This is so that if you have invoked help, it doesn't get in - the way when you're browsing code/text buffers. The next three + the way when you're browsing code/text buffers. The next three commands also work like this. *:sbn* *:sbnext* @@ -1069,6 +1118,8 @@ list of buffers. |unlisted-buffer| of windows opened ('winwidth' if |:vertical| was prepended). Buf/Win Enter/Leave autocommands are not executed for the new windows here, that's only done when they are really entered. + When the |:tab| modifier is used new windows are opended in a + new tab, up to 'tabpagemax'. Note: All the commands above that start editing another buffer, keep the 'readonly' flag as it was. This differs from the ":edit" command, which sets @@ -1087,29 +1138,30 @@ purposes. A few options can be set to change the behavior of a buffer: A few useful kinds of a buffer: -quickfix Used to contain the error list. See |:cwindow|. This command - sets the 'buftype' option to "quickfix". You are not supposed - to change this! 'swapfile' is off. +quickfix Used to contain the error list or the location list. See + |:cwindow| and |:lwindow|. This command sets the 'buftype' + option to "quickfix". You are not supposed to change this! + 'swapfile' is off. help Contains a help file. Will only be created with the |:help| command. The flag that indicates a help buffer is internal and can't be changed. The 'buflisted' option will be reset for a help buffer. -directory Displays directory contents. Used by the |file-explorer| +directory Displays directory contents. Can be used by a file explorer plugin. The buffer is created with these settings: > - :set buftype=nowrite - :set bufhidden=delete - :set noswapfile + :setlocal buftype=nowrite + :setlocal bufhidden=delete + :setlocal noswapfile < The buffer name is the name of the directory and is adjusted when using the |:cd| command. scratch Contains text that can be discarded at any time. It is kept when closing the window, it must be deleted explicitly. Settings: > - :set buftype=nofile - :set bufhidden=hide - :set noswapfile + :setlocal buftype=nofile + :setlocal bufhidden=hide + :setlocal noswapfile < The buffer name can be used to identify the buffer. *unlisted-buffer* @@ -1117,7 +1169,7 @@ unlisted The buffer is not in the buffer list. It is not used for normal editing, but to show a help file, remember a file name or marks. The ":bdelete" command will also set this option, thus it doesn't completely delete the buffer. Settings: > - :set nobuflisted + :setlocal nobuflisted < vim:tw=78:ts=8:ft=help:norl: diff --git a/en/workshop.txt b/en/workshop.txt index b720d5eaa..21b80cec1 100644 --- a/en/workshop.txt +++ b/en/workshop.txt @@ -1,4 +1,4 @@ -*workshop.txt* For Vim version 6.3. Last change: 2004 Jan 08 +*workshop.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Gordon Prieur @@ -19,14 +19,14 @@ Sun Visual WorkShop Features *workshop* *workshop-support* 1. Introduction *workshop-intro* Sun Visual WorkShop has an "Editor of Choice" feature designed to let users -debug using their favorite editors. For the 6.0 release we have added support -for gvim. A workshop debug session will have a debugging window and an editor -window (possibly others as well). The user can do many debugging operations +debug using their favorite editors. For the 6.0 release we have added support +for gvim. A workshop debug session will have a debugging window and an editor +window (possibly others as well). The user can do many debugging operations from the editor window, minimizing the need to switch from window to window. The version of vim shipped with Sun Visual WorkShop 6 (also called Forte -Developer 6) is vim 5.3. The features in this release are much more reliable -than the vim/gvim shipped with Visual WorkShop. VWS users wishing to use vim +Developer 6) is vim 5.3. The features in this release are much more reliable +than the vim/gvim shipped with Visual WorkShop. VWS users wishing to use vim as their editor should compile these sources and install them in their workshop release tree. @@ -43,9 +43,9 @@ sends the verb and data to workshop over an IPC connection. 3. Compiling vim/gvim for WorkShop *workshop-compiling* Compiling vim with FEAT_SUN_WORKSHOP turns on all compile time flags necessary -for building a vim to work with Visual WorkShop. The features required for VWS -have been built and tested using the Sun compilers from the VWS release. They -have not been built or tested using Gnu compilers. This does not mean the +for building a vim to work with Visual WorkShop. The features required for VWS +have been built and tested using the Sun compilers from the VWS release. They +have not been built or tested using Gnu compilers. This does not mean the features won't build and run if compiled with gcc, just that nothing is guaranteed with gcc! @@ -55,17 +55,17 @@ guaranteed with gcc! There are several assumptions which must be met in order to compile a gvim for use with Sun Visual WorkShop 6. - o You should use the compiler in VWS rather than gcc. We have neither + o You should use the compiler in VWS rather than gcc. We have neither built nor tested with gcc and cannot guarantee it will build properly. - o You must supply your own XPM library. See |workshop-xpm| below for + o You must supply your own XPM library. See |workshop-xpm| below for details on obtaining the latest version of XPM. o Edit the Makefile in the src directory and uncomment the lines for Sun - Visual WorkShop. You can easily find these by searching for the string + Visual WorkShop. You can easily find these by searching for the string FEAT_SUN_WORKSHOP - o We also suggest you use Motif for your gui. This will provide gvim with + o We also suggest you use Motif for your gui. This will provide gvim with the same look-and-feel as the rest of Sun Visual WorkShop. The following configuration line can be used to configure vim to build for use @@ -75,10 +75,10 @@ with Sun Visual WorkShop: -prefix=<VWS-install-dir>/contrib/contrib6/<vim-version> The VWS-install-dir should be the base directory where your Sun Visual WorkShop -was installed. By default this is /opt/SUNWspro. It will normally require -root permissions to install the vim release. You will also need to change the +was installed. By default this is /opt/SUNWspro. It will normally require +root permissions to install the vim release. You will also need to change the symlink <VWS-install-dir>/bin/gvim to point to the vim in your newly installed -directory. The <vim-version> should be a unique version string. I use "vim" +directory. The <vim-version> should be a unique version string. I use "vim" concatenated with the equivalent of version.h's VIM_VERSION_SHORT. ============================================================================== @@ -88,11 +88,11 @@ The XPM library is required to show images within Vim with Motif or Athena. Without it the toolbar and signs will be disabled. The XPM library is provide by Arnaud Le Hors of the French National Institute -for Research in Computer Science and Control. It can be downloaded from -http://koala.ilog.fr/ftp/pub/xpm. The current release, as of this writing, is -xpm-3.4k-solaris.tgz, which is a gzip'ed tar file. If you create the directory +for Research in Computer Science and Control. It can be downloaded from +http://koala.ilog.fr/ftp/pub/xpm. The current release, as of this writing, is +xpm-3.4k-solaris.tgz, which is a gzip'ed tar file. If you create the directory /usr/local/xpm and untar the file there you can use the uncommented lines in -the Makefile without changing them. If you use another xpm directory you will +the Makefile without changing them. If you use another xpm directory you will need to change the XPM_DIR in src/Makefile. vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/visual.jax b/ja/visual.jax index 3f81b6599..c2cb2e487 100644 --- a/ja/visual.jax +++ b/ja/visual.jax @@ -1,9 +1,10 @@ COMMENT: ビジュアルモード -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*visual.txt* For Vim version 6.3. Last change: 2004 Jun 06 +*visual.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIMリファレンスマニュアル by Bram Moolenaar @@ -84,15 +85,17 @@ CTRL-Zを押すと強調は停止し、エディタが一時停止するか新 タイプ後の新モード: *v_v* *v_CTRL-V* *v_V* 旧モード "v" "CTRL-V" "V" ~ -Normal ビジュアル 矩形ビジュアル 行ビジュアル -Visual ノーマル 矩形ビジュアル 行ビジュアル -blockwise Visual ビジュアル ノーマル 行ビジュアル -linewise Visual ビジュアル 矩形ビジュアル ノーマル +ノーマル ビジュアル 矩形ビジュアル 行ビジュアル +ビジュアル ノーマル 矩形ビジュアル 行ビジュアル +矩形ビジュアル ビジュアル ノーマル 行ビジュアル +行ビジュアル ビジュアル 矩形ビジュアル ノーマル - *gv* *v_gv* + *gv* *v_gv* *reselect-Visual* gv 最後に使用したのと同じ範囲のビジュアルモードを開始す る。ビジュアルモードで使用すると、現在の選択領域と以前 のものとが交換される。 + ビジュアルモードで"p"や"P"を実行した後にこれを使うと、 + プットしたテキストが選択される。 *<LeftMouse>* <LeftMouse> 現在のカーソル位置を設定する。ビジュアルモードが活動中 @@ -135,6 +138,9 @@ gv 最後に使用したのと同じ範囲のビジュアルモードを開始 前回の時と全く同じ領域を強調したいときには、"gv"を使用できる |gv| |v_gv|。 + *v_<Esc>* +<Esc> ビジュアルモード: ビジュアルモードを停止する。 + *v_CTRL-C* CTRL-C ビジュアルモード: ビジュアルモードを停止する。挿入モー ドがぶら下がっている時には(モードメッセージが"-- @@ -245,6 +251,11 @@ CTRL-O を使用するとブザー音が発生し、ビジュアルモードが {move-around}は一連の移動コマンドのシーケンス。1つの移動コマンドを意味する {motion}とは異なるので注意。 +ビジュアル領域に対して操作を行うもう1つの方法は、パターンにアイテム|/\%V|を含 +めることがある。例えば、ビジュアル領域内のすべての'('を'X'に置換するには: > + + :%s/\%V(/X/g + ============================================================================== 5. 矩形範囲の操作 *blockwise-operators* @@ -439,9 +450,12 @@ abcdefghijklmnXXXXXXuvwxyz 選択モード時のマッピングとメニュー *Select-mode-mapping* -選択モード時にはビジュアルモードのマッピングとメニューが使用される。それらが実 -行される直前にVimは自動的にビジュアルモードに切り替わるので、ビジュアルモード -と同じ動作が有効になる。 +コマンド|:vmap|や|:vmenu|で定義したマッピングとメニューはビジュアルモードと選 +択モードの両方で働く。選択モードでは、それらのマッピングやメニューが実行される +直前に自動的にビジュアルモードに切り替わるので、ビジュアルモードと同じ動作が行 +われる。ビジュアルモードと選択モードで別々にマッピングを定義するときは|:xmap| +や|:smap|を使うこと。 + マッピング及びメニューが終了した後には、選択領域が削除されるか、他のバッファに 切り替わるか、ウィンドウのレイアウトが変更されない限り、選択領域が再び有効にな diff --git a/ja/windows.jax b/ja/windows.jax index aa9492b2f..8f0c248ff 100644 --- a/ja/windows.jax +++ b/ja/windows.jax @@ -1,10 +1,10 @@ COMMENT: 複数のウィンドウとバッファの使用法 -STATUS: finish 6.3.054 +STATUS: finish 7.0 TRANSLATOR: 小野尾隆一 <onoo@lsidiv.kawasaki-steel.co.jp> TRANSLATOR: nobi TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*windows.txt* For Vim version 6.3. Last Change: 2004 Apr 29 +*windows.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41,7 +41,7 @@ TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> ============================================================================== -1. はじめに *windows-intro* +1. はじめに *windows-intro* *window* ウィンドウはバッファのビューポートである。 1つのバッファに対して複数のウィンド ウを開くことができるし、異なる複数のバッファに対して複数のウィンドウを開くこと @@ -79,6 +79,9 @@ TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> 注意: ノーマルコマンドが利用できない、あるいは使い勝手が悪い状況のために、全て のCTRL-Wコマンドは|:wincmd|によっても実行できる。 +Vimではウィンドウを複数に分割することができる。タブページ|tab-page|というもの +もあり、タブページは複数のウィンドウを保持することができる。 + ============================================================================== 2. Vim の起動 *windows-starting* @@ -113,6 +116,8 @@ Buf/Win Enter/Leave 時のオートコマンド|autocommand|は、新しいウ 'laststatus' = 2 常にステータス行を表示する。 ステータス行の内容は 'statusline' オプションで変更できる。 +このオプションはウィンドウについてローカルにすることもでき、そうすると各ウィン +ドウごとに異なるステータスラインを表示することができる。 通常、ステータス行は反転表示される。これは 'highlight' オプションの 's' キャラ クタで変更できる。例えば、"sb" は太文字に設定する。ステータス行にハイライトを @@ -270,6 +275,9 @@ CTRL-W c *CTRL-W_c* *:clo* *:close* いる時、または、バッファが変更されていて[!]を使用した時は、( バッファが他のウィンドウで編集中でなければ)バッファは隠れ状態 (hidden)になる。 + カレントタブページにウィンドウが1つしかなく、他にタブページが + あるとき、このコマンドを実行するとカレントタブページが閉じる。 + |tab-page| このコマンドは以下の場合に失敗する: *E444* - スクリーン上に1つのウィンドウしかない時 - 'hidden' がセットされていなくて、[!]を使用せず、バッファが変 @@ -288,6 +296,8 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C* カレントウィンドウを終了する。 (他のウィンドウがバッファを編集 していなく、かつ 'bufhidden' の値が "unloaded" か"delete" でな いならば)そのバッファは隠れ状態(hidden)となる。 + そのウィンドウがカレントタブページで最後のウィンドウであるなら + ばタブページも閉じる。|tab-page| 'hidden' の値はこのコマンドには無関係である。 バッファへの変更は保存されず、失われることもないため、このコマ ンドは「安全な」コマンドである。 @@ -437,6 +447,12 @@ CTRL-W L カレントウィンドウを最右列に移動し、高さを最大 ウィンドウの中身が使われるということだけである。 {|+vertsplit| 機能なしでコンパイルされた場合は使用できない} + *CTRL-W_T* +CTRL-W T カレントウィンドウを新しいタブページへ移動する。カレントタブペ + ージにウィンドウが1つしかないときは、このコマンドは失敗する。 + カウントが指定されると、その番号のタブページの前に新しいタブペー + ジが開く。指定されないときはカレントタブページの後ろに開く。 + ============================================================================== 6. ウィンドウのサイズ変更 *window-resize* @@ -565,6 +581,10 @@ These are hard values, a window will never become smaller. 各引数に対して1つのウィンドウを開き、スクリーンを再構成する。 他の総てのウィンドウは閉じられる。カウントが指定された時は、開 くウィンドウの最大数となる。 + コマンド修飾子|:tab|をつけて実行すると、各引数に対して1つずつ + タブページを開く。'tabpagemax'個より多くの引数が与えられたとき + は、多すぎる引数は最後のタブページの中でウィンドウに分割されて + 開かれる。 'hidden' オプションがセットされている場合は、閉じられるウィン ドウで表示されている総てのバッファは隠れ状態(hidden)となる。 'hidden' オプションがセットされておらず 'autowrite' オプション @@ -603,7 +623,7 @@ These are hard values, a window will never become smaller. |++opt| と |+cmd| も参照。 *:sfir* *:sfirst* -:sfir[st [++opt] [+cmd] +:sfir[st] [++opt] [+cmd] ":srewind" と同じ。 *:sla* *:slast* @@ -623,9 +643,11 @@ These are hard values, a window will never become smaller. |:next| コマンドと同様に、|argument-list| がセットされる。 このコマンドの目的は、Vimに別のファイルを開いてほしいプログラ ム(例:デバッガ)から使われることである。 + コマンド修飾子|:tab|をつけて実行すると、各引数が1つずつタブ + ページで開かれる。最後のウィンドウが空ならそのウィンドウが使わ + れる。 {+gui 機能つきでコンパイルされたときのみ使用可能} - ============================================================================== 8. 全てのバッファ/ウィンドウに対してコマンド実行 *list-repeat* *:windo* @@ -636,7 +658,8 @@ These are hard values, a window will never become smaller. CTRL-W w :{cmd} etc. -< 1つのウィンドウに対してエラーが検出されると、それ以降 +< カレントタブページ内でのみ実行される。 + 1つのウィンドウに対してエラーが検出されると、それ以降 のウィンドウに対しては実行されない。 最後のウィンドウ(またはエラーが起こったウィンドウ)が カレントウィンドウになる。 @@ -645,7 +668,7 @@ These are hard values, a window will never become smaller. {cmd} はウィンドウの開閉、並べ替えをしてはならない。 {Vi にはない} {|+listcmds| 機能なしでコンパイルされた場 合は使用できない} - |:argdo| と |:budfo| も参照。 + |:tabdo|, |:argdo|, |:budfo| も参照。 *:bufdo* :bufdo[!] {cmd} {cmd} をバッファリスト内の各バッファに対して実行。 @@ -671,7 +694,7 @@ These are hard values, a window will never become smaller. これは各バッファの編集を大幅にスピードアップさせる。 {Vi にはない} {|+listcmds| 機能なしでコンパイルされた 場合は使用できない} - |:argdo| と |:windo| も参照。 + |:tabdo|, |:argdo|, |:budfo| も参照。 例: > @@ -721,6 +744,28 @@ CTRL-W CTRL-F カレントウィンドウを2つに分割する。カーソル {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で きない} +CTRL-W F *CTRL-W_F* + カレントウィンドウを2つに分割する。カーソル下のファイル名を開 + き、そのファイル名の後に書かれている行番号へジャンプする。ど + のように行番号を取得するかについては|gF|を参照。 + {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で + きない} + +CTRL-W gf *CTRL-W_gf* + 新しいタブページを開き、カーソル下のファイル名を開く。 + "tab split"と"gf"の組み合わせに似ているが、そのファイルが存在 + しない場合に新しいタブページを作成しないところが異なる。 + {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で + きない} + +CTRL-W gF *CTRL-W_gF* + 新しいタブページを開き、カーソル下のファイル名を開いて、ファイ + ル名の後に書かれている行番号へジャンプする。 + "tab split"と"gF"の組み合わせに似ているが、そのファイルが存在 + しない場合に新しいタブページを作成しないところが異なる。 + {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で + きない} + |CTRL-W_CTRL-I| も参照:カーソル位置のキーワードを含むインクルードファイルを新 しいウィンドウで開く。 @@ -731,12 +776,12 @@ CTRL-W CTRL-F カレントウィンドウを2つに分割する。カーソル はインクルードファイルや関数の定義を示すのに使われる小さなウィンドウである。 {コンパイル時に |+quickfix| 機能が無効にされた場合は使用できない} -プレビューウィンドウはただ1つだけ存在しうる。以下のコマンドの内どれかが実行さ -れたとき作成される。'previewheight' オプションによってプレビューウィンドウが開 -くときの高さを設定できる。プレビューウィンドウにおいて、それを認識するために -'previewwindow' オプションがセットされる。他のウィンドウを開いたり閉じたりした -ときにも同じ高さを保つために 'winfixheight' オプションがセットされる。 - +プレビューウィンドウはタブページにつき1つだけ開くことができる。プレビューウィ +ンドウは以下のコマンドのどれかが実行されたとき作成される。オプション +'previewheight'によってプレビューウィンドウが開くときの高さを設定できる。プレ +ビューウィンドウを識別するために、プレビューウィンドウにはオプション +'previewwindow'がセットされる。他のウィンドウを開閉したときにも同じ高さを保つ +ためにオプション'winfixheight'がセットされる。 *:pta* *:ptag* :pta[g][!] [tagname] @@ -896,7 +941,7 @@ CTRL-W g } *CTRL-W_g}* 1 #h "/test/text" line 1 ~ 2u "asdf" line 0 ~ - 3 %l+ "version.c" line 1 ~ + 3 %a+ "version.c" line 1 ~ [!] が含まれているときは、バッファリストにないバッファも表示さ れる。 @@ -959,8 +1004,9 @@ CTRL-W g } *CTRL-W_g}* :N,Mbw[ipeout][!] :bw[ipeout][!] N1 N2 ... |:bdelete| に似ているが、本当にバッファを削除する。このバッフ - ァ中のすべてのマークが無効になり、オプション設定が失われる等。 - このことの意味がわからなければ使わないこと。 + ァに関するすべてが失われる。例えば、このバッファ中のすべてのマー + クが無効になり、オプション設定が失われるなど。このことの意味が + わからなければ使わないこと。 :[N]bun[load][!] *:bun* *:bunload* *E515* :bun[load][!] [N] @@ -1007,7 +1053,9 @@ CTRL-W g } *CTRL-W_g}* ンドウ分割の際には、'switchbuf' の "useopen" の設定に従う。 これはバッファリストにないバッファも'buflisted' フラグを設定す ることなく編集する。 - + Note: 別名でカレントバッファのコピーを作って、それを別のウィン + ドウで表示したいのなら、次のようにすること: > + :w foobar | sp # :[N]sb[uffer] {filename} ウィンドウを分割しバッファリストの {filename} バッファを編集す @@ -1096,6 +1144,9 @@ CTRL-W g } *CTRL-W_g}* ときは'winwidth')。この時点では、Buf/Win Enter/Leave オートコ マンドは新しいウィンドウに対して実行されない。ウィンドウに移動 したときにのみ実行される。 + コマンド修飾子|:tab|をつけて実行すると、新しいウィンドウがそれ + ぞれ新しいタブで開く。ただしタブの個数は'tabpagemax'に制限され + る。 注: 上の総てのコマンドは他のバッファの編集を開始する。各バッファの 'readonly' フラグは保存されている。 ":edit" コマンドと異なる点は、":edit" コマンドでは @@ -1112,11 +1163,12 @@ CTRL-W g } *CTRL-W_g}* 'swapfile' バッファがスワップファイルを持つか 'buflisted' バッファリストに現れるか -2, 3の有用なバッファの種類: +いくつかの有用なバッファの種類: -quickfix エラーリストを保持するのに使われる。|:cwindow| を参照。このコ - マンドは 'buftype' オプションを "quickfix" にセットする。これ - を変更してはならない。'swapfile' はオフ。 +quickfix エラーリストやロケーションリストを保持するのに使われる。 + |:cwindow| と |:lwindow| を参照。このコマンドは 'buftype' オプ + ションを "quickfix" にセット。これを変更してはならない。 + 'swapfile' はオフ。 help ヘルプファイルを保持する。|:help| コマンドによってのみ作成され る。ヘルプバッファを示すフラグは内部にあり、変更することは出来 @@ -1125,18 +1177,18 @@ help ヘルプファイルを保持する。|:help| コマンドによっての directory ディレクトリの内容を表示する。|file-explorer| プラグインで使わ れる。このバッファは以下の設定で作成される: > - :set buftype=nowrite - :set bufhidden=delete - :set noswapfile + :setlocal buftype=nowrite + :setlocal bufhidden=delete + :setlocal noswapfile < バッファ名はディレクトリの名前になり、|:cd| コマンドを使ったと きは変更される。 scratch いつでも破棄されうるテキストを保持する。ウィンドウを閉じても 保たれ、明示的に削除されなければならない。 - Settings: > - :set buftype=nofile - :set bufhidden=hide - :set noswapfile + 設定は: > + :setlocal buftype=nofile + :setlocal bufhidden=hide + :setlocal noswapfile < このバッファを識別するためにはバッファ名が使われる。 *unlisted-buffer* @@ -1145,7 +1197,7 @@ unlisted このバッファはバッファリストにない。通常の編集 めに使われる。":bdelete" コマンドによってもこのオプションがセ ットされる。それゆえ、このコマンドは完全にはバッファを削除しな い。設定は: > - :set nobuflisted + :setlocal nobuflisted < vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/workshop.jax b/ja/workshop.jax index 539f2a518..4a3160418 100644 --- a/ja/workshop.jax +++ b/ja/workshop.jax @@ -1,9 +1,9 @@ COMMENT: Visual WorkShopでの利用法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*workshop.txt* For Vim version 6.3. Last change: 2004 Jan 08 +*workshop.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM リファレンスマニュアル by Gordon Prieur From 7b82c7695140466ffa08dcb95bed45fb23daba82 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 4 Oct 2006 13:41:25 +0000 Subject: [PATCH 060/783] fix: update if_pyth, if_ruby, indent to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@60 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/if_pyth.txt | 160 +++++++++++++++++++++++++++++-------------------- en/if_ruby.txt | 78 ++++++++++++++++-------- en/indent.txt | 84 ++++++++++++++++++-------- ja/if_pyth.jax | 121 +++++++++++++++++++++++-------------- ja/if_ruby.jax | 63 +++++++++++++------ ja/indent.jax | 53 +++++++++++++--- 6 files changed, 376 insertions(+), 183 deletions(-) diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 4eab8fcf5..e171c6b12 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 6.3. Last change: 2004 Feb 28 +*if_pyth.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Paul Moore @@ -11,6 +11,7 @@ The Python Interface to Vim *python* *Python* 3. Buffer objects |python-buffer| 4. Range objects |python-range| 5. Window objects |python-window| +6. Dynamic loading |python-dynamic| {Vi does not have any of these commands} @@ -85,38 +86,38 @@ just like in the Python interpreter.) 2. The vim module *python-vim* Python code gets all of its access to vim (with one exception - see -|python-output| below) via the "vim" module. The vim module implements two +|python-output| below) via the "vim" module. The vim module implements two methods, three constants, and one error object. You need to import the vim module before using it: > :python import vim Overview > - print "Hello" # displays a message - vim.command(cmd) # execute an ex command - w = vim.windows[n] # gets window "n" - cw = vim.current.window # gets the current window - b = vim.buffers[n] # gets buffer "n" - cb = vim.current.buffer # gets the current buffer - w.height = lines # sets the window height - w.cursor = (row, col) # sets the window cursor position - pos = w.cursor # gets a tuple (row, col) - name = b.name # gets the buffer file name - line = b[n] # gets a line from the buffer - lines = b[n:m] # gets a list of lines - num = len(b) # gets the number of lines - b[n] = str # sets a line in the buffer - b[n:m] = [str1, str2, str3] # sets a number of lines at once - del b[n] # deletes a line - del b[n:m] # deletes a number of lines + :py print "Hello" # displays a message + :py vim.command(cmd) # execute an ex command + :py w = vim.windows[n] # gets window "n" + :py cw = vim.current.window # gets the current window + :py b = vim.buffers[n] # gets buffer "n" + :py cb = vim.current.buffer # gets the current buffer + :py w.height = lines # sets the window height + :py w.cursor = (row, col) # sets the window cursor position + :py pos = w.cursor # gets a tuple (row, col) + :py name = b.name # gets the buffer file name + :py line = b[n] # gets a line from the buffer + :py lines = b[n:m] # gets a list of lines + :py num = len(b) # gets the number of lines + :py b[n] = str # sets a line in the buffer + :py b[n:m] = [str1, str2, str3] # sets a number of lines at once + :py del b[n] # deletes a line + :py del b[n:m] # deletes a number of lines Methods of the "vim" module vim.command(str) *python-command* - Executes the vim (ex-mode) command str. Returns None. + Executes the vim (ex-mode) command str. Returns None. Examples: > - vim.command("set tw=72") - vim.command("%s/aaa/bbb/g") + :py vim.command("set tw=72") + :py vim.command("%s/aaa/bbb/g") < The following definition executes Normal mode commands: > def normal(str): vim.command("normal "+str) @@ -126,18 +127,28 @@ vim.command(str) *python-command* < *E659* The ":python" command cannot be used recursively with Python 2.2 and older. This only works with Python 2.3 and later: > - :python vim.command("python print 'Hello again Python'") + :py vim.command("python print 'Hello again Python'") vim.eval(str) *python-eval* Evaluates the expression str using the vim internal expression - evaluator (see |expression|). Returns the expression result as a - string. + evaluator (see |expression|). Returns the expression result as: + - a string if the Vim expression evaluates to a string or number + - a list if the Vim expression evaluates to a Vim list + - a dictionary if the Vim expression evaluates to a Vim dictionary + Dictionaries and lists are recursively expanded. Examples: > - text_width = vim.eval("&tw") - str = vim.eval("12+12") # NB result is a string! Use + :py text_width = vim.eval("&tw") + :py str = vim.eval("12+12") # NB result is a string! Use # string.atoi() to convert to # a number. + :py tagList = vim.eval('taglist("eval_expr")') +< The latter will return a python list of python dicts, for instance: + [{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name': + 'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] + + + Error object of the "vim" module vim.error *python-error* @@ -156,20 +167,20 @@ Constants of the "vim" module to which the variables referred. vim.buffers *python-buffers* - A sequence object providing access to the list of vim buffers. The + A sequence object providing access to the list of vim buffers. The object supports the following operations: > - b = vim.buffers[i] # Indexing (read-only) - b in vim.buffers # Membership test - n = len(vim.buffers) # Number of elements - for b in vim.buffers: # Sequential access + :py b = vim.buffers[i] # Indexing (read-only) + :py b in vim.buffers # Membership test + :py n = len(vim.buffers) # Number of elements + :py for b in vim.buffers: # Sequential access < vim.windows *python-windows* - A sequence object providing access to the list of vim windows. The + A sequence object providing access to the list of vim windows. The object supports the following operations: > - w = vim.windows[i] # Indexing (read-only) - w in vim.windows # Membership test - n = len(vim.windows) # Number of elements - for w in vim.windows: # Sequential access + :py w = vim.windows[i] # Indexing (read-only) + :py w in vim.windows # Membership test + :py n = len(vim.windows) # Number of elements + :py for w in vim.windows: # Sequential access < vim.current *python-current* An object providing access (via specific attributes) to various @@ -179,10 +190,10 @@ vim.current *python-current* vim.current.window The current window (RO) Window vim.current.range The current line range (RO) Range - The last case deserves a little explanation. When the :python or + The last case deserves a little explanation. When the :python or :pyfile command specifies a range, this range of lines becomes the - "current range". A range is a bit like a buffer, but with all access - restricted to a subset of lines. See |python-range| for more details. + "current range". A range is a bit like a buffer, but with all access + restricted to a subset of lines. See |python-range| for more details. Output from Python *python-output* @@ -197,31 +208,31 @@ Output from Python *python-output* *python-input* Input (via sys.stdin, including input() and raw_input()) is not - supported, and may cause the program to crash. This should probably be + supported, and may cause the program to crash. This should probably be fixed. ============================================================================== 3. Buffer objects *python-buffer* -Buffer objects represent vim buffers. You can obtain them in a number of ways: +Buffer objects represent vim buffers. You can obtain them in a number of ways: - via vim.current.buffer (|python-current|) - from indexing vim.buffers (|python-buffers|) - from the "buffer" attribute of a window (|python-window|) Buffer objects have one read-only attribute - name - the full file name for -the buffer. They also have three methods (append, mark, and range; see below). +the buffer. They also have three methods (append, mark, and range; see below). -You can also treat buffer objects as sequence objects. In this context, they +You can also treat buffer objects as sequence objects. In this context, they act as if they were lists (yes, they are mutable) of strings, with each -element being a line of the buffer. All of the usual sequence operations, +element being a line of the buffer. All of the usual sequence operations, including indexing, index assignment, slicing and slice assignment, work as -you would expect. Note that the result of indexing (slicing) a buffer is a -string (list of strings). This has one unusual consequence - b[:] is different -from b. In particular, "b[:] = None" deletes the whole of the buffer, whereas +you would expect. Note that the result of indexing (slicing) a buffer is a +string (list of strings). This has one unusual consequence - b[:] is different +from b. In particular, "b[:] = None" deletes the whole of the buffer, whereas "b = None" merely updates the variable b, with no effect on the buffer. -Buffer indexes start at zero, as is normal in Python. This differs from vim -line numbers, which start from 1. This is particularly relevant when dealing +Buffer indexes start at zero, as is normal in Python. This differs from vim +line numbers, which start from 1. This is particularly relevant when dealing with marks (see below) which use vim line numbers. The buffer object methods are: @@ -236,27 +247,31 @@ The buffer object methods are: represents the part of the given buffer between line numbers s and e |inclusive|. +Note that when adding a line it must not contain a line break character '\n'. +A trailing '\n' is allowed and ignored, so that you can do: > + :py b.append(f.readlines()) + Examples (assume b is the current buffer) > - print b.name # write the buffer file name - b[0] = "hello!!!" # replace the top line - b[:] = None # delete the whole buffer - del b[:] # delete the whole buffer (same as above) - b[0:0] = [ "a line" ] # add a line at the top - del b[2] # delete a line (the third) - b.append("bottom") # add a line at the bottom - n = len(b) # number of lines - (row,col) = b.mark('a') # named mark - r = b.range(1,5) # a sub-range of the buffer + :py print b.name # write the buffer file name + :py b[0] = "hello!!!" # replace the top line + :py b[:] = None # delete the whole buffer + :py del b[:] # delete the whole buffer + :py b[0:0] = [ "a line" ] # add a line at the top + :py del b[2] # delete a line (the third) + :py b.append("bottom") # add a line at the bottom + :py n = len(b) # number of lines + :py (row,col) = b.mark('a') # named mark + :py r = b.range(1,5) # a sub-range of the buffer ============================================================================== 4. Range objects *python-range* -Range objects represent a part of a vim buffer. You can obtain them in a +Range objects represent a part of a vim buffer. You can obtain them in a number of ways: - via vim.current.range (|python-current|) - from a buffer's range() method (|python-buffer|) -A range object is almost identical in operation to a buffer object. However, +A range object is almost identical in operation to a buffer object. However, all operations are restricted to the lines within the range (this line range can, of course, change as a result of slice assignments, line deletions, or the range.append() method). @@ -279,11 +294,11 @@ Example (assume r is the current range): ============================================================================== 5. Window objects *python-window* -Window objects represent vim windows. You can obtain them in a number of ways: +Window objects represent vim windows. You can obtain them in a number of ways: - via vim.current.window (|python-current|) - from indexing vim.windows (|python-windows|) -You can manipulate window objects only through their attributes. They have no +You can manipulate window objects only through their attributes. They have no methods, and no sequence or other interface. Window attributes are: @@ -295,5 +310,22 @@ Window attributes are: The height attribute is writable only if the screen is split horizontally. The width attribute is writable only if the screen is split vertically. +============================================================================== +6. Dynamic loading *python-dynamic* + +On MS-Windows the Python library can be loaded dynamically. The |:version| +output then includes |+python/dyn|. + +This means that Vim will search for the Python DLL file only when needed. +When you don't use the Python interface you don't need it, thus you can use +Vim without this DLL file. + +To use the Python interface the Python DLL must be in your search path. In a +console window type "path" to see what directories are used. + +The name of the DLL must match the Python version Vim was compiled with. +Currently the name is "python24.dll". That is for Python 2.4. To know for +sure edit "gvim.exe" and search for "python\d*.dll\c". + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/en/if_ruby.txt b/en/if_ruby.txt index b4ccb1099..978782de3 100644 --- a/en/if_ruby.txt +++ b/en/if_ruby.txt @@ -1,4 +1,4 @@ -*if_ruby.txt* For Vim version 6.3. Last change: 2004 Mar 14 +*if_ruby.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Shugo Maeda @@ -11,6 +11,7 @@ The Ruby Interface to Vim *ruby* *Ruby* 3. VIM::Buffer objects |ruby-buffer| 4. VIM::Window objects |ruby-window| 5. Global variables |ruby-globals| +6. Dynamic loading |ruby-dynamic| {Vi does not have any of these commands} *E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273* @@ -32,7 +33,7 @@ downloading Ruby there. Execute Ruby script {script}. {endpattern} must NOT be preceded by any white space. If {endpattern} is omitted, it defaults to a dot '.' - like for the |:append| and |:insert| commands. This + like for the |:append| and |:insert| commands. This form of the |:ruby| command is mainly useful for including ruby code in vim scripts. Note: This command doesn't work when the Ruby feature @@ -60,7 +61,7 @@ Example Vim script: > *:rubydo* *:rubyd* *E265* :[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the [range], with $_ being set to the text of each line in - turn, without a trailing <EOL>. Setting $_ will change + turn, without a trailing <EOL>. Setting $_ will change the text, but note that it is not possible to add or delete lines using this command. The default for [range] is the whole file: "1,$". @@ -77,23 +78,26 @@ Executing Ruby commands is not possible in the |sandbox|. Ruby code gets all of its access to vim via the "VIM" module. Overview > - print "Hello" # displays a message - VIM.command(cmd) # execute an ex command - num = VIM::Window.count # gets the number of windows - w = VIM::Window[n] # gets window "n" - cw = VIM::Window.current # gets the current window - num = VIM::Buffer.count # gets the number of buffers - b = VIM::Buffer[n] # gets buffer "n" - cb = VIM::Buffer.current # gets the current buffer - w.height = lines # sets the window height - w.cursor = [row, col] # sets the window cursor position - pos = w.cursor # gets an array [row, col] - name = b.name # gets the buffer file name - line = b[n] # gets a line from the buffer - num = b.count # gets the number of lines - b[n] = str # sets a line in the buffer - b.delete(n) # deletes a line - b.append(n, str) # appends a line after n + print "Hello" # displays a message + VIM.command(cmd) # execute an ex command + num = VIM::Window.count # gets the number of windows + w = VIM::Window[n] # gets window "n" + cw = VIM::Window.current # gets the current window + num = VIM::Buffer.count # gets the number of buffers + b = VIM::Buffer[n] # gets buffer "n" + cb = VIM::Buffer.current # gets the current buffer + w.height = lines # sets the window height + w.cursor = [row, col] # sets the window cursor position + pos = w.cursor # gets an array [row, col] + name = b.name # gets the buffer file name + line = b[n] # gets a line from the buffer + num = b.count # gets the number of lines + b[n] = str # sets a line in the buffer + b.delete(n) # deletes a line + b.append(n, str) # appends a line after n + line = VIM::Buffer.current.line # gets the current line + num = VIM::Buffer.current.line_number # gets the current line number + VIM::Buffer.current.line = "test" # sets the current line number < Module Functions: @@ -115,7 +119,9 @@ VIM::command({cmd}) *ruby-evaluate* VIM::evaluate({expr}) Evaluates {expr} using the vim internal expression evaluator (see - |expression|). Returns the expression result as a string. + |expression|). Returns the expression result as a string. + A |List| is turned into a string by joining the items and inserting + line breaks. ============================================================================== 3. VIM::Buffer objects *ruby-buffer* @@ -126,7 +132,7 @@ Class Methods: current Returns the current buffer object. count Returns the number of buffers. -self[{n}] Returns the buffer object for the number {n}. The first number +self[{n}] Returns the buffer object for the number {n}. The first number is 0. Methods: @@ -141,6 +147,11 @@ self[{n}] = {str} delete({n}) Deletes a line from the buffer. {n} is the line number. append({n}, {str}) Appends a line after the line {n}. +line Returns the current line of the buffer if the buffer is + active. +line = {str} Sets the current line of the buffer if the buffer is active. +line_number Returns the number of the current line if the buffer is + active. ============================================================================== 4. VIM::Window objects *ruby-window* @@ -151,7 +162,7 @@ Class Methods: current Returns the current window object. count Returns the number of windows. -self[{n}] Returns the window object for the number {n}. The first number +self[{n}] Returns the window object for the number {n}. The first number is 0. Methods: @@ -159,17 +170,36 @@ Methods: buffer Returns the buffer displayed in the window. height Returns the height of the window. height = {n} Sets the window height to {n}. +width Returns the width of the window. +width = {n} Sets the window width to {n}. cursor Returns a [row, col] array for the cursor position. cursor = [{row}, {col}] Sets the cursor position to {row} and {col}. ============================================================================== -4. Global variables *ruby-globals* +5. Global variables *ruby-globals* There are two global variables. $curwin The current window object. $curbuf The current buffer object. +============================================================================== +6. Dynamic loading *ruby-dynamic* + +On MS-Windows the Ruby library can be loaded dynamically. The |:version| +output then includes |+ruby/dyn|. + +This means that Vim will search for the Ruby DLL file only when needed. When +you don't use the Ruby interface you don't need it, thus you can use Vim +without this DLL file. + +To use the Ruby interface the Ruby DLL must be in your search path. In a +console window type "path" to see what directories are used. + +The name of the DLL must match the Ruby version Vim was compiled with. +Currently the name is "ruby18.dll". That is for Ruby 1.8. To know for sure +edit "gvim.exe" and search for "ruby\d*.dll\c". + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/en/indent.txt b/en/indent.txt index 2a925bf8e..e00358334 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 6.3. Last change: 2004 Apr 25 +*indent.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -33,7 +33,9 @@ There are in fact four methods available for indentation: The rest of this section describes the 'cindent' option. Note that 'cindent' indenting does not work for every code scenario. Vim -is not a C compiler: it does not recognize all syntax. +is not a C compiler: it does not recognize all syntax. One requirement is +that toplevel functions have a '{' in the first column. Otherwise they are +easily confused with declarations. These four options control C program indenting: 'cindent' Enables Vim to perform C program indenting automatically. @@ -68,7 +70,7 @@ as follows: "e" if you type the second 'e' for an "else" at the start of a line -Characters that can precede each key: +Characters that can precede each key: *i_CTRL-F* ! When a '!' precedes the key, Vim will not insert the key but will instead reindent the current line. This allows you to define a command key for reindenting the current line. CTRL-F is the default @@ -237,7 +239,7 @@ assume a 'shiftwidth' of 4. } } < bN If N != 0 Vim will align a final "break" with the case label, - so that case..break looks like a sort of block. (default: 0). + so that case..break looks like a sort of block. (default: 0). cino= cino=b1 > switch (x) switch(x) @@ -286,7 +288,7 @@ assume a 'shiftwidth' of 4. int int int func() func() func() < - iN Indent C++ base class declarations and contructor + iN Indent C++ base class declarations and constructor initializations, if they start in a new line (otherwise they are aligned at the right side of the ':'). (default 'shiftwidth'). @@ -325,7 +327,7 @@ assume a 'shiftwidth' of 4. ********/ ********/ < (Example uses ":set comments& comments-=s1:/* comments^=s0:/*") - /N Indent comment lines N characters extra. (default 0). + /N Indent comment lines N characters extra. (default 0). cino= cino=/4 > a = b; a = b; /* comment */ /* comment */ @@ -381,7 +383,7 @@ assume a 'shiftwidth' of 4. the last non-white character in its line and it is not the closing parentheses, indent the following line N characters relative to the outer context (i.e. start of the line or the - next unclosed parentheses). (default: 0). + next unclosed parentheses). (default: 0). cino=(0 cino=(0,W4 > a_long_line( a_long_line( @@ -403,10 +405,19 @@ assume a 'shiftwidth' of 4. c1 && c2 c1 && c2 ) ) foo; foo; +< + MN When N is non-zero, line up a line starting with a closing + parentheses with the first character of the previous line. + (default 0). + + cino= cino=M1 > + if (cond1 && if (cond1 && + cond2 cond2 + ) ) < *java-cinoptions* *java-indenting* jN Indent java anonymous classes correctly. The value 'N' is - currently unused but must be non-zero (e.g. 'j1'). 'j1' will + currently unused but must be non-zero (e.g. 'j1'). 'j1' will indent for example the following code snippet correctly: > object.add(new ChangeListener() { @@ -425,8 +436,8 @@ assume a 'shiftwidth' of 4. The defaults, spelled out in full, are: - cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,gs,hs,ps,ts,+s,c3,C0,(2s,us, - \U0,w0,m0,j0,)20,*30 + cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,c3,C0, + /0,(2s,us,U0,w0,W0,m0,j0,)20,*30 Vim puts a line in column 1 if: - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. @@ -449,33 +460,33 @@ $VIMRUNTIME/indent directory for examples. REMARKS ABOUT SPECIFIC INDENT FILES ~ -FORTRAN *fortran-indent* +FORTRAN *ft-fortran-indent* -Block if, select case, and where constructs are indented. Comments, labelled +Block if, select case, and where constructs are indented. Comments, labelled statements and continuation lines are indented if the Fortran is in free source form, whereas they are not indented if the Fortran is in fixed source -form because of the left margin requirements. Hence manual indent corrections +form because of the left margin requirements. Hence manual indent corrections will be necessary for labelled statements and continuation lines when fixed -source form is being used. For further discussion of the method used for the -detection of source format see |fortran-syntax|. +source form is being used. For further discussion of the method used for the +detection of source format see |ft-fortran-syntax|. Do loops ~ -All do loops are left unindented by default. Do loops can be unstructured in +All do loops are left unindented by default. Do loops can be unstructured in Fortran with (possibly multiple) loops ending on a labelled executable -statement of almost arbitrary type. Correct indentation requires -compiler-quality parsing. Old code with do loops ending on labelled statements +statement of almost arbitrary type. Correct indentation requires +compiler-quality parsing. Old code with do loops ending on labelled statements of arbitrary type can be indented with elaborate programs such as Tidy -(http://www.unb.ca/chem/ajit/f_tidy.htm). Structured do/continue loops are +(http://www.unb.ca/chem/ajit/f_tidy.htm). Structured do/continue loops are also left unindented because continue statements are also used for purposes -other than ending a do loop. Programs such as Tidy can convert structured -do/continue loops to the do/enddo form. Do loops of the do/enddo variety can -be indented. If you use only structured loops of the do/enddo form, you should +other than ending a do loop. Programs such as Tidy can convert structured +do/continue loops to the do/enddo form. Do loops of the do/enddo variety can +be indented. If you use only structured loops of the do/enddo form, you should declare this by setting the fortran_do_enddo variable in your .vimrc as follows > let fortran_do_enddo=1 -in which case do loops will be indented. If all your loops are of do/enddo +in which case do loops will be indented. If all your loops are of do/enddo type only in, say, .f90 files, then you should set a buffer flag with an autocommand such as > @@ -485,7 +496,21 @@ to get do loops indented in .f90 files and left alone in Fortran files with other extensions such as .for. -VERILOG *verilog-indent* +PYTHON *ft-python-indent* + +The amount of indent can be set for the following situations. The examples +given are de the defaults. Note that the variables are set to an expression, +so that you can change the value of 'shiftwidth' later. + +Indent after an open paren: > + let g:pyindent_open_paren = '&sw * 2' +Indent after a nested paren: > + let g:pyindent_nested_paren = '&sw' +Indent for a continuation line: > + let g:pyindent_continue = '&sw * 2' + + +VERILOG *ft-verilog-indent* General block statements such as if, for, case, always, initial, function, specify and begin, etc., are indented. The module block statements (first @@ -519,4 +544,15 @@ In addition, you can turn the verbose mode for debug issue: > Make sure to do ":set cmdheight=2" first to allow the display of the message. + +VIM *ft-vim-indent* + +For indenting Vim scripts there is one variable that specifies the amount of +indent for a continuation line, a line that starts with a backslash: > + + :let g:vim_indent_cont = &sw * 3 + +Three times shiftwidth is the default value. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_pyth.jax b/ja/if_pyth.jax index b9e44f125..f053ee1d9 100644 --- a/ja/if_pyth.jax +++ b/ja/if_pyth.jax @@ -1,9 +1,10 @@ COMMENT: Pythonインターフェイス -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*if_pyth.txt* For Vim version 6.3. Last change: 2004 Feb 28 +*if_pyth.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Paul Moore @@ -16,6 +17,7 @@ VimのPythonインターフェイス *python* *Python* 3. バッファオブジェクト |python-buffer| 4. レンジオブジェクト |python-range| 5. ウィンドウオブジェクト |python-window| +6. 動的ローディング |python-dynamic| {Vi はこれらのコマンド群を持たない} @@ -94,23 +96,23 @@ Pythonのコマンドは|sandbox|の中では使えません。 :python import vim 概要 > - print "Hello" # メッセージを表示 - vim.command(cmd) # exコマンドを実行 - w = vim.windows[n] # ウィンドウ"n"を得る - cw = vim.current.window # 現在のウィンドウを得る - b = vim.buffers[n] # バッファ"n"を得る - cb = vim.current.buffer # 現在のバッファを得る - w.height = lines # ウィンドウの高さを設定する - w.cursor = (row, col) # ウィンドウのカーソル位置を設定する - pos = w.cursor # (row, col)の組を得る - name = b.name # バッファのファイル名を得る - line = b[n] # バッファから1行を得る - lines = b[n:m] # バッファから一連の行を得る - num = len(b) # 行数を得る - b[n] = str # バッファ内の1行を設定する - b[n:m] = [str1, str2, str3] # 1度に数行を設定する - del b[n] # 1行を削除する - del b[n:m] # 数行を削除する + :py print "Hello" # メッセージを表示 + :py vim.command(cmd) # exコマンドを実行 + :py w = vim.windows[n] # ウィンドウ"n"を得る + :py cw = vim.current.window # 現在のウィンドウを得る + :py b = vim.buffers[n] # バッファ"n"を得る + :py cb = vim.current.buffer # 現在のバッファを得る + :py w.height = lines # ウィンドウの高さを設定する + :py w.cursor = (row, col) # ウィンドウのカーソル位置を設定する + :py pos = w.cursor # (row, col)の組を得る + :py name = b.name # バッファのファイル名を得る + :py line = b[n] # バッファから1行を得る + :py lines = b[n:m] # バッファから一連の行を得る + :py num = len(b) # 行数を得る + :py b[n] = str # バッファ内の1行を設定する + :py b[n:m] = [str1, str2, str3] # 1度に数行を設定する + :py del b[n] # 1行を削除する + :py del b[n:m] # 数行を削除する "vim"モジュールのメソッド @@ -118,8 +120,8 @@ Pythonのコマンドは|sandbox|の中では使えません。 vim.command(str) *python-command* vim(exモード)のコマンドstrを実行する。戻り値はない。 例: > - vim.command("set tw=72") - vim.command("%s/aaa/bbb/g") + :py vim.command("set tw=72") + :py vim.command("%s/aaa/bbb/g") < ノーマルモードのコマンドを実行するには、次の定義が使われる: > def normal(str): vim.command("normal "+str) @@ -128,17 +130,26 @@ vim.command(str) *python-command* < *E659* ":python"コマンドはPython 2.2かそれより古いものでは再帰的に使えない。 Python 2.3 かそれより新しものを使ってください。 > - :python vim.command("python print 'Hello again Python'") + :py vim.command("python print 'Hello again Python'") vim.eval(str) *python-eval* vim内の式評価を使って、式を評価する(|expression|を参照)。戻り値は、 - 式評価の結果の文字列。 + 次の通り: + - Vimの式を評価した結果が文字列か数値ならば文字列 + - Vimの式を評価した結果がリストならばリスト + - Vimの式を評価した結果がVimの辞書ならば辞書 + 辞書とリストは再帰的に展開される。 例: > - text_width = vim.eval("'tw'") - str = vim.eval("12+12") # 結果は文字列であることに注意! + :py text_width = vim.eval("&tw") + :py str = vim.eval("12+12") # 結果は文字列であることに注意! # 数に変換するには、 # string.atoi()を使うこと。 + :py tagList = vim.eval('taglist("eval_expr")') +< これの後半はPython辞書のPythonリストを返す。例: + [{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name': + 'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] + "vim"モジュールのエラーオブジェクト vim.error *python-error* @@ -157,18 +168,18 @@ vim.error *python-error* vim.buffers *python-buffers* 一連のvimバッファへのアクセスを提供するシーケンスオブジェクト。 次に示す操作がサポートされている: > - b = vim.buffers[i] # インデックス化する (読取り専用) - b in vim.buffers # メンバかどうか調べる - n = len(vim.buffers) # 要素の個数 - for b in vim.buffers: # シーケンシャルアクセス + :py b = vim.buffers[i] # インデックス化する (読取り専用) + :py b in vim.buffers # メンバかどうか調べる + :py n = len(vim.buffers) # 要素の個数 + :py for b in vim.buffers: # シーケンシャルアクセス vim.windows *python-windows* 一連のvimウィンドウへのアクセスを提供するシーケンスオブジェクト。 このオブジェクトは次の操作をサポートしています: > - w = vim.windows[i] # インデックス化する (読取り専用) - w in vim.windows # メンバかどうか調べる - n = len(vim.windows) # 要素の個数 - for w in vim.windows: # シーケンシャルアクセス + :py w = vim.windows[i] # インデックス化する (読取り専用) + :py w in vim.windows # メンバかどうか調べる + :py n = len(vim.windows) # 要素の個数 + :py for w in vim.windows: # シーケンシャルアクセス vim.current *python-current* vim内で使える様々な"現在の"オブジェクトへの、(特定の属性を通した) @@ -237,17 +248,21 @@ vim.current *python-current* |inclusive|)を示すレンジオブジェクト(|python-range|を 参照)を返す +Note 行を追加するときは、その行に改行文字'\n'が含まれてはならない。末尾の'\n' +は許されるが、無視される。そのため次のようなことができる: > + :py b.append(f.readlines()) + 例 (bは現在のバッファに割り当てられている) > - print b.name # バッファのファイル名を出力 - b[0] = "hello!!!" # 先頭の行を置換 - b[:] = None # 全てのバッファを削除 - del b[:] # 全てのバッファを削除 (上と同じ) - b[0:0] = "add a line" # 先頭に行を追加 - del b[2] # 行を削除 (3番目) - b.append("bottom") # 最後に行を追加 - n = len(b) # 行数 - (row,col) = b.mark('a') # 名前付きマーク - r = b.range(1,5) # バッファの部分範囲 + :py print b.name # バッファのファイル名を出力 + :py b[0] = "hello!!!" # 先頭の行を置換 + :py b[:] = None # 全てのバッファを削除 + :py del b[:] # 全てのバッファを削除 + :py b[0:0] = "add a line" # 先頭に行を追加 + :py del b[2] # 行を削除 (3番目) + :py b.append("bottom") # 最後に行を追加 + :py n = len(b) # 行数 + :py (row,col) = b.mark('a') # 名前付きマーク + :py r = b.range(1,5) # バッファの部分範囲 ============================================================================== 4. レンジオブジェクト *python-range* @@ -293,7 +308,25 @@ vim.current *python-current* これは(row,col)の組で表される height (読み書き) ウィンドウの高さ、行の数で width (読み書き) ウインドウの幅、列の数で -heightはスクリーンがが水平方向に分割されているときのみ書き込み可能です。 +heightはスクリーンが水平方向に分割されているときのみ書き込み可能です。 widthはスクリーンが垂直方向に分割されているときのみ書き込み可能です。 + +============================================================================== +6. 動的ローディング *python-dynamic* + +MS-WindowsではPythonライブラリを動的に読み込むことが可能である。これを行うと +|:version|の出力に|+python/dyn|が含まれるようになる。 + +この場合、Vimは必要なときだけPythonのDLLファイルを検索する。Pythonインターフェ +イスを使わないときはDLLを必要としないので、DLLなしでVimを使うことができる。 + +Pythonインターフェイスを使うにはPythonのDLLが検索パス内に存在しなければならな +い。コンソールウィンドウで"path"とタイプすると、どのディレクトリが検索パスとな +るか表示することができる。 + +DLLの名前はVimをコンパイルした時のPythonのバージョンに一致しなければならない。 +現在その名前は"python24.dll"である。これはPython2.4用である。これを確かめるに +は、"gvim.exe"を開き、"python\d*.dll\c"を検索する。 + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_ruby.jax b/ja/if_ruby.jax index cbe57b2b1..1988dfafd 100644 --- a/ja/if_ruby.jax +++ b/ja/if_ruby.jax @@ -1,9 +1,10 @@ COMMENT: Rubyインターフェイス(外部スクリプト) -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*if_ruby.txt* For Vim version 6.3. Last change: 2004 Mar 14 +*if_ruby.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM リファレンスマニュアル by Shugo Maeda @@ -16,6 +17,7 @@ Rubyインターフェイス *ruby* *Ruby* 3. VIM::Buffer オブジェクト |ruby-buffer| 4. VIM::Window オブジェクト |ruby-window| 5. グローバル変数 |ruby-globals| +6. 動的ローディング |ruby-dynamic| {Viにはこれらのコマンドは無い} *E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273* @@ -108,6 +110,9 @@ Rubyのコードは全てのVimへのアクセスをVIMモジュール経由で b[n] = str # バッファの行の内容を変更する b.delete(n) # 行を削除する b.append(n, str) # n行目の直後に行を追加する + line = VIM::Buffer.current.line # カレント行を取得する + num = VIM::Buffer.current.line_number # カレント行の行番号を取得する + VIM::Buffer.current.line = "test" # カレント行を設定する < モジュール関数: @@ -133,31 +138,34 @@ VIM::command({cmd}) VIM::evaluate({expr}) Vim内部の実行エンジンを使ってスクリプト{expr}を実行評価する (|expression|参照)。実行結果は文字列で返される。 + |List|は文字列に変換される。各要素が連結され、改行が挿入される。 ============================================================================== 3. VIM::Buffer オブジェクト *ruby-buffer* -VIM::Buffer objects represent vim buffers. +オブジェクトVIM::BufferはVimのバッファを表す。 -Class Methods: +クラスメソッド: -current Returns the current buffer object. -count Returns the number of buffers. -self[{n}] Returns the buffer object for the number {n}. The first number - is 0. +current カレントバッファオブジェクトを返す。 +count バッファの個数を返す。 +self[{n}] 番号{n}のバッファオブジェクトを返す。最初の番号は0。 -Methods: +メソッド: -name Returns the name of the buffer. -number Returns the number of the buffer. -count Returns the number of lines. -length Returns the number of lines. -self[{n}] Returns a line from the buffer. {n} is the line number. +name バッファの名前を返す。 +number バッファの番号を返す。 +count 行数を返す。 +length 行数を返す。 +self[{n}] バッファの行を返す。{n}は行番号。 self[{n}] = {str} - Sets a line in the buffer. {n} is the line number. -delete({n}) Deletes a line from the buffer. {n} is the line number. + バッファの行を設定する。{n}は行番号。 +delete({n}) バッファから行を削除する。{n}は行番号。 append({n}, {str}) - Appends a line after the line {n}. + 行{n}の後ろに行を追加する。 +line そのバッファがアクティブなら、カレント行を返す。 +line = {str} そのバッファがアクティブなら、カレント行を設定する。 +line_number そのバッファがアクティブなら、カレント行の行番号を返す。 ============================================================================== 4. VIM::Window オブジェクト *ruby-window* @@ -175,17 +183,36 @@ self[{n}] 番号{n}のウィンドウオブジェクトを返す。番号は0か buffer ウィンドウに表示されているバッファを返す。 height ウィンドウの高さを返す。 height = {n} ウィンドウの高さを{n}に設定する。 +width ウィンドウの幅を返す。 +width = {n} ウィンドウの幅を{n}に設定する。 cursor カーソルの位置を[行数, カラム]の形で配列にして返す。 cursor = [{row}, {col}] カーソルの位置を{row} 行の {col}カラムに設定する。 ============================================================================== -4. グローバル変数 *ruby-globals* +5. グローバル変数 *ruby-globals* 2つのグローバル変数がある。 $curwin 現在のウィンドウオブジェクト $curbuf 現在のバッファオブジェクト +============================================================================== +6. 動的ローディング *ruby-dynamic* + +MS-WindowsではRubyライブラリを動的に読み込むことが可能である。これを行うと +|:version|の出力に|+ruby/dyn|が含まれるようになる。 + +この場合、Vimは必要なときだけRubyのDLLファイルを検索する。Rubyインターフェ +イスを使わないときはDLLを必要としないので、DLLなしでVimを使うことができる。 + +Rubyインターフェイスを使うにはRubyのDLLが検索パス内に存在しなければならな +い。コンソールウィンドウで"path"とタイプすると、どのディレクトリが検索パスとな +るか表示することができる。 + +DLLの名前はVimをコンパイルした時のRubyのバージョンに一致しなければならない。 +現在その名前は"ruby18.dll"である。これはRuby1.8用である。これを確かめるに +は、"gvim.exe"を開き、"ruby\d*.dll\c"を検索する。 + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/indent.jax b/ja/indent.jax index 9b1349287..4af91d337 100644 --- a/ja/indent.jax +++ b/ja/indent.jax @@ -1,9 +1,10 @@ COMMENT: C言語自動インデントとプログラム可能な自動インデント -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*indent.txt* For Vim version 6.3. Last change: 2004 Apr 25 +*indent.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIMリファレンスマニュアル by Bram Moolenaar @@ -40,7 +41,9 @@ VimにはCを自動的にインデントするためのオプションがある この節の残りはオプション'cindent'について述べる。 'cindent'はあらゆるCソースを正しくインデントできるわけではないことに注意。Vim -はCコンパイラではない: だから全ての構文は認識できない。 +はCコンパイラではない: だから全ての構文は認識できない。1つの要求事項は、トップ +レベル関数が第1桁が'{'で始まっていることである。そうなっていないとと宣言との区 +別が困難である。 Cのインデントはこの4つのオプションで制御されている: 'cindent' Cの自動インデントを有効化する。 @@ -79,7 +82,7 @@ Cのファイルに対して自動的に'cindent'をオンにしてそれ以外 "O" ノーマルモードで "O" コマンドを使用した時 "e" 行の先頭で "else" の2つ目の 'e' をタイプした時 -各キーの前に置くことのできる文字は次の通り: +各キーの前に置くことのできる文字は次の通り: *i_CTRL-F* ! '!' をキーの前に置くと、Vimはそのキーを挿入するのではなく替わりに現在 の行のインデントを再調整する。これにより現在の行の再調整するためのコマ ンドキーを定義することができる。CTRL-Fはそのデフォルトキーである。 @@ -414,6 +417,14 @@ CTRL-TやCTRL-Dを使用してインデントを変更した後では、Vimは c1 && c2 c1 && c2 ) ) foo; foo; +< + MN Nが非ゼロのとき、閉じ括弧で始まる行のインデントを前の行の最初の + 文字と同じ位置にする(省略値 0)。 + + cino= cino=M1 > + if (cond1 && if (cond1 && + cond2 cond2 + ) ) < *java-cinoptions* *java-indenting* jN Javaの無名クラスを正しくインデントする。値 'N' は現在のところ使 @@ -436,8 +447,8 @@ CTRL-TやCTRL-Dを使用してインデントを変更した後では、Vimは 省略値を全て並べるとこうなる: - cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,gs,hs,ps,ts,+s,c3,C0,(2s,us, - \U0,w0,m0,j0,)20,*30 + cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,c3,C0, + /0,(2s,us,U0,w0,W0,m0,j0,)20,*30 次のような場合にはVimは行頭を1列目に持っていく: - 'cinkeys'が '#' を含み行が '#' (プリプロセッサ命令)で始まる場合 @@ -458,14 +469,14 @@ CTRL-TやCTRL-Dを使用してインデントを変更した後では、Vimは インデントファイルについての覚書 ~ -FORTRAN *fortran-indent* +FORTRAN *ft-fortran-indent* ifブロック、select case、そしてwhere構成物がインデントされる。コメント、ラベル 付き文、そして2行にまたがった行は、Fortranが自由形式のソースではインデントされ るが、一方Fortranが固定形式ソースの場合には左余白が言語仕様により決定されてい るのでインデントされない。それ故に固定形式ソースを使っている時にはラベル付き文 と2行にまたがった行については手動でインデントを修正する必要がある。ソース形式 -の判定に使われている方法についてのさらなる議論は|fortran-syntax|を参照のこと。 +の判定に使われている方法についてのさらなる議論は|ft-fortran-syntax|を参照のこと。 Doループ ~ デフォルトでは全てのdoループはインデントされない。Fortranでは、ループはラベル @@ -492,7 +503,20 @@ Tidyのようなプログラムは構造化do/continueループをdo/enddo形式 で.forであるFortranのファイルのループはインデントせずに残すことができる。 -VERILOG *verilog-indent* +PYTHON *ft-python-indent* + +以下の状況のためにインデントの量を設定することができる。この例は既定である。 +後で'shiftwidth'の値を変更するために変数に式を設定しておく。 + +開き括弧の後のインデント: > + let g:pyindent_open_paren = '&sw * 2' +ネストした括弧の後のインデント: > + let g:pyindent_nested_paren = '&sw' +継続行のインデント: > + let g:pyindent_continue = '&sw * 2' + + +VERILOG *ft-verilog-indent* 一般的なブロック文であるif, for, case, always, initial, function, specify, そ してbegin等などはインデントされる。moduleブロック文(最初のレベルのブロック)は @@ -527,4 +551,15 @@ Verilogのファイルにだけこの変数を設定するには、次の設定 メッセージを表示できるようにするために、先に":set cmdheight=2"を実行することを 確認すること。 + +VIM *ft-vim-indent* + +Vimスクリプトに対しては継続行(バックスラッシュで始まる行)のインデント量を指定 +する変数が1つある: > + + :let g:vim_indent_cont = &sw * 3 + +shiftwidthの値を3倍するのが既定値である。 + + vim:tw=78:ts=8:ft=help:norl: From 98e94ab5f83a8a475d2fcab5e12cde7f962eef8c Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 4 Oct 2006 13:48:03 +0000 Subject: [PATCH 061/783] fix: update gui_w32 to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@61 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/gui_w32.txt | 32 +++++++++++++++++--------------- ja/gui_w32.jax | 7 +++++-- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/en/gui_w32.txt b/en/gui_w32.txt index 0551712af..25b0e164a 100644 --- a/en/gui_w32.txt +++ b/en/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 6.3. Last change: 2004 May 03 +*gui_w32.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -58,7 +58,7 @@ of Windows 3.1 or 3.11. See |win32s|. To set Vim as the default editor for a file type: 1. Start a Windows Explorer -2. Chose View/Options -> File Types +2. Choose View/Options -> File Types 3. Select the path to gvim for every file type that you want to use it for. (you can also use three spaces in the file type field, for files without an extension). @@ -233,7 +233,9 @@ $VIMRUNTIME/mswin.vim script. You could add this line to your _vimrc file: > Since CTRL-C is used to copy the text to the clipboard, it can't be used to cancel an operation. Use CTRL-Break for that. - *CTRL-V-alternative* +CTRL-Z is used for undo. This means you can't suspend Vim. + + *CTRL-V-alternative* *CTRL-Q* Since CTRL-V is used to paste, you can't use it to start a blockwise Visual selection. You can use CTRL-Q instead. You can also use CTRL-Q in Insert mode and Command-line mode to get the old meaning of CTRL-V. But CTRL-Q @@ -260,8 +262,8 @@ question if you really want to kill the application, Vim may be killed too! In Windows 95, the window in which the commands are executed is always 25x80 characters, to be as DOS compatible as possible (this matters!). The default -system font is used. On NT, the window will be the default you have set up for -"Console" in Control Panel. On Win32s, the properties of the DOS box are +system font is used. On NT, the window will be the default you have set up for +"Console" in Control Panel. On Win32s, the properties of the DOS box are determined by _default.pif in the windows directory. *msdos-mode* @@ -281,7 +283,7 @@ sense for most shell commands which produce output for Vim to use). If you want Vim to start a program and return immediately, you can use the following syntax on W95 & NT: > :!start {command} -On Win32s, you will have to go to another window instead. Don't forget that +On Win32s, you will have to go to another window instead. Don't forget that you must tell Windows 3.1x to keep executing a DOS command in the background while you switch back to Vim. @@ -293,7 +295,7 @@ On Win32, the normal DOS colors can be used. See |dos-colors|. Additionally the system configured colors can also be used. These are known by the names Sys_XXX, where XXX is the appropriate system color name, from the following list (see the Win32 documentation for full descriptions). Case is -ignored. note: On Win32s not all of these colors are supported. +ignored. Note: On Win32s not all of these colors are supported. Sys_3DDKShadow Sys_3DFace Sys_BTNFace Sys_3DHilight Sys_3DHighlight Sys_BTNHilight @@ -364,7 +366,7 @@ without having to go to the menu bar each time. This is most useful if you find yourself using a command buried in a sub-menu over and over again. The tearoff menus can be positioned where you like, and always stay just above -the Main Vim window. You can get rid of them by closing them as usual; they +the Main Vim window. You can get rid of them by closing them as usual; they also of course close when you exit Vim. *:tearoff* *:te* @@ -398,7 +400,7 @@ The rules are: b) Parameters are separated by white space. c) A parameter can be enclosed in double quotes to include white space. d) A sequence of zero or more backslashes (\) and a double quote (") - is special. The effective number of backslashes is halved, rounded + is special. The effective number of backslashes is halved, rounded down. An even number of backslashes reverses the acceptability of spaces and tabs, an odd number of backslashes produces a literal double quote. @@ -427,7 +429,7 @@ The "File/Print" menu prints the text with syntax highlighting, see printer installed this should also work: > :w >>prn -Vim supports a number of standard MS Windows features. Some of these are +Vim supports a number of standard MS Windows features. Some of these are detailed elsewhere: see |'mouse'|, |win32-hidden-menus|. *drag-n-drop-win32* @@ -439,7 +441,7 @@ be opened as normal. See |drag-n-drop|. {not in Vi} {only for Win32 versions} Normally, Vim takes control of all Alt-<Key> combinations, to increase the -number of possible mappings. This clashes with the standard use of Alt as the +number of possible mappings. This clashes with the standard use of Alt as the key for accessing menus. The quick way of getting standard behavior is to set the 'winaltkeys' option to "yes". This however prevents you from mapping Alt keys at all. @@ -447,18 +449,18 @@ Another way is to set 'winaltkeys' to "menu". Menu shortcut keys are then handled by windows, other ALT keys can be mapped. This doesn't allow a dependency on the current state though. To get round this, the :simalt command allows Vim (when 'winaltkeys' is not -"yes") to fake a Windows-style Alt keypress. You can use this to map Alt key +"yes") to fake a Windows-style Alt keypress. You can use this to map Alt key combinations (or anything else for that matter) to produce standard Windows -actions. Here are some examples: > +actions. Here are some examples: > :map <M-f> :simalt f<CR> This makes Alt-F pop down the 'File' menu (with the stock Menu.vim) by simulating the keystrokes Alt, F. > :map <M-Space> :simalt ~<CR> -This maps Alt-Space to pop down the system menu for the Vim window. Note that +This maps Alt-Space to pop down the system menu for the Vim window. Note that ~ is used by simalt to represent the <Space> character. > :map <C-n> :simalt ~n<CR> -Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the +Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the Vim window via the system menu. *intellimouse-wheel-problems* diff --git a/ja/gui_w32.jax b/ja/gui_w32.jax index 192c7e300..f7e96f5b2 100644 --- a/ja/gui_w32.jax +++ b/ja/gui_w32.jax @@ -2,8 +2,9 @@ COMMENT: GUI機能:Windows 9x/Me/NT/2K/XP STATUS: finished 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*gui_w32.txt* For Vim version 6.3. Last change: 2004 May 03 +*gui_w32.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIMリファレンスマニュアル by Bram Moolenaar @@ -244,7 +245,9 @@ CTRL-Cがクリップボードへのコピーになってしまうので、操 ループに陥ったスクリプトを停止するなど)が、できなくなってしまう。代わりに CTRL-Breakが使える。 - *CTRL-V-alternative* +CTRL-Z がアンドゥになる。そのため、Vimをサスペンドすることはできない。 + + *CTRL-V-alternative* *CTRL-Q* CTRL-Vがペーストに使われてしまうので、方形視覚選択(Visualモードの一種)を開始す ることができない。これにはCTRL-Qを代用できる。インサートモードやコマンドライン モードにおいても、もともとのCTRL-Vの代わりにCTRL-Qを使用することができる。しか From 578b10143db55ffc15b96b75e361a496d839f5f8 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 4 Oct 2006 13:50:18 +0000 Subject: [PATCH 062/783] fix: update gui_w16 to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@62 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/gui_w16.jax | 4 ++-- ja/gui_w32.jax | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ja/gui_w16.jax b/ja/gui_w16.jax index 1387613f0..280ef0a46 100644 --- a/ja/gui_w16.jax +++ b/ja/gui_w16.jax @@ -1,8 +1,8 @@ COMMENT: GUI機能:Windows 3.1以前 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*gui_w16.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*gui_w16.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/ja/gui_w32.jax b/ja/gui_w32.jax index f7e96f5b2..9174d99a3 100644 --- a/ja/gui_w32.jax +++ b/ja/gui_w32.jax @@ -1,5 +1,5 @@ COMMENT: GUI機能:Windows 9x/Me/NT/2K/XP -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> From 060499ca69366e76fa42af390db8428205a90866 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Mon, 9 Oct 2006 10:50:03 +0000 Subject: [PATCH 063/783] small fix for manual pages git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@63 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/vim-ja.UTF-8.1 | 1 + ja/vimtutor-ja.UTF-8.1 | 17 ++++++++--------- ja/xxd-ja.UTF-8.1 | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ja/vim-ja.UTF-8.1 b/ja/vim-ja.UTF-8.1 index e1190e94a..c21a085ff 100644 --- a/ja/vim-ja.UTF-8.1 +++ b/ja/vim-ja.UTF-8.1 @@ -84,6 +84,7 @@ tags ファイルから {tag} が検索され、関連したファイルがカ [errorfile] に指定したファイルが読み込まれ、最初のエラーが表示されます。 [errorfile] を省略した場合は、オプション 'errorfile' が使われます (初期設定 は、Amiga では "AztecC.Err"、その他のシステムでは "errors.err" です)。 +":cn" コマンドで次のエラーにジャンプできます。 詳しくは ":help quickfix" を参照してください。 .PP .B Vim diff --git a/ja/vimtutor-ja.UTF-8.1 b/ja/vimtutor-ja.UTF-8.1 index fc363c0d1..9d27aae04 100644 --- a/ja/vimtutor-ja.UTF-8.1 +++ b/ja/vimtutor-ja.UTF-8.1 @@ -5,21 +5,17 @@ vimtutor \- Vim チュートリアル .br .B vimtutor [language] .SH 説明 -.B Vimtutor -は .B Vim のチュートリアルを起動します。 演習ファイルのコピーを使って実施するので、オリジナルの演習ファイルを壊してし まう心配はありません。 .PP -.B Vimtutor -は .B Vim を初めて学ぶ人向けのチュートリアルです。 .PP [language] 引数は "ja" や "es" などの二文字の言語名です。 [language] 引数を省略した場合はロケールの言語が使われます。 -その言語に翻訳された演習ファイルがある場合は、そのファイルが使われます。 +翻訳された演習ファイルがある場合は、そのファイルが使われます。 ない場合は英語のファイルが使われます。 .PP .B Vim @@ -33,11 +29,14 @@ vimtutor \- Vim チュートリアル /usr/local/lib/vim/tutor/tutor.vim 演習ファイルをコピーするための Vim スクリプト。 .SH 著者 -このチュートリアルは Colorado State University の Charles Smith のアイデア -を基に、Colorado School of Mines の Michael C. Pierce と Robert K. Ware の -両名によって書かれました。 E-mail: bware@mines.colorado.edu. +.B Vimtutor +は、Colorado State University の Charles Smith のアイデアを基に、 +Colorado School of Mines の Michael C. Pierce と Robert K. Ware の両名 +によって Vi 向けに作成されたものを基にしています。 +E-mail: bware@mines.colorado.edu. +.br .B Vim -に合わせて、Bram Moolenaar が変更を加えました。 +に合わせて Bram Moolenaar が変更を加えました。 翻訳者の名前は演習ファイルを参照してください。 .SH 関連項目 vim(1) diff --git a/ja/xxd-ja.UTF-8.1 b/ja/xxd-ja.UTF-8.1 index df8a3c1d6..c1d8e25cf 100644 --- a/ja/xxd-ja.UTF-8.1 +++ b/ja/xxd-ja.UTF-8.1 @@ -282,8 +282,8 @@ xxd.1 の日付を修正する。 000fffc: 0000 0000 40 ....A .PP 一文字の 'A' からなる 1 バイトのファイルを作成する。 - '\-r \-s' の後に指定した番号がファイル中の行番号に加算され、結果、余計なバ -イトが飛ばされいる。 + '\-r \-s' の後に指定した数値がファイル中の行番号に加算され、結果、余計なバ +イトが飛ばされる。 .br \fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR .PP From 412d5ea52dabf42a9df5ba8bddc8360c78dca6ab Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 11 Oct 2006 11:45:21 +0000 Subject: [PATCH 064/783] fix: update gui, if_perl, if_ole, os_unix, os_vms, recover, sign, quotes, starting git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@64 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/gui.txt | 110 +++++++++++++++++-------- en/if_ole.txt | 63 +++++++++++--- en/if_perl.txt | 35 ++++++-- en/os_unix.txt | 12 +-- en/os_vms.txt | 215 ++++++++++++++++++++++++++++-------------------- en/quotes.txt | 44 +++++----- en/recover.txt | 34 +++++++- en/sign.txt | 16 ++-- en/starting.txt | 116 ++++++++++++++++++-------- ja/gui.jax | 65 ++++++++++++--- ja/if_ole.jax | 44 +++++++++- ja/if_perl.jax | 35 +++++++- ja/os_unix.jax | 6 +- ja/os_vms.jax | 60 +++++++++++--- ja/quotes.jax | 6 +- ja/recover.jax | 36 ++++++-- ja/sign.jax | 4 +- ja/starting.jax | 89 +++++++++++++++----- 18 files changed, 714 insertions(+), 276 deletions(-) diff --git a/en/gui.txt b/en/gui.txt index e435a983f..ba62fc5b6 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 6.3. Last change: 2004 Jun 02 +*gui.txt* For Vim version 7.0. Last change: 2006 May 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -24,9 +24,9 @@ Other GUI documentation: 1. Starting the GUI *gui-start* *E229* *E233* First you must make sure you actually have a version of Vim with the GUI code -included. You can check this with the ":version" command, it should include -"+GUI_Athena", "+GUI_BeOS", "+GUI_GTK", "+GUI_Motif" or "MS-Windows ... bit -GUI version". +included. You can check this with the ":version" command, it says "with xxx +GUI", where "xxx" is X11-Motif, X11-Athena, Photon, GTK, GTK2, etc., or +"MS-Windows 32 bit GUI version". How to start the GUI depends on the system used. Mostly you can run the GUI version of Vim with: @@ -36,8 +36,13 @@ The X11 version of Vim can run both in GUI and in non-GUI mode. See |gui-x11-start|. *gui-init* *gvimrc* *.gvimrc* *_gvimrc* +The gvimrc file is where GUI-specific startup commands should be placed. It +is always sourced after the |vimrc| file. If you have one then the $MYGVIMRC +environment variable has its name. + When the GUI starts up initializations are carried out, in this order: -- The termcap options are reset to their default value for the GUI. +- The 'term' option is set to "builgin_gui" and terminal options are reset to + their default value for the GUI |terminal-options|. - If the system menu file exists, it is sourced. The name of this file is normally "$VIMRUNTIME/menu.vim". You can check this with ":version". Also see |$VIMRUNTIME|. To skip loading the system menu include 'M' in @@ -52,7 +57,8 @@ When the GUI starts up initializations are carried out, in this order: :let bmenu_max_pathlen = 50 - If the "-U {gvimrc}" command-line option has been used when starting Vim, the {gvimrc} file will be read for initializations. The following - initializations are skipped. + initializations are skipped. When {gvimrc} is "NONE" no file will be read + for initializations. - For Unix and MS-Windows, if the system gvimrc exists, it is sourced. The name of this file is normally "$VIM/gvimrc". You can check this with ":version". Also see |$VIM|. @@ -64,6 +70,8 @@ When the GUI starts up initializations are carried out, in this order: - For Win32, when $HOME is not set, "$VIM\_gvimrc" is used. - When a "_gvimrc" file is not found, ".gvimrc" is tried too. And vice versa. + The name of the first file found is stored in $MYGVIMRC, unless it was + already set. - If the 'exrc' option is set (which is NOT the default) the file ./.gvimrc is sourced, if it exists and isn't the same file as the system or user gvimrc file. If this file is not owned by you, some security restrictions @@ -78,7 +86,7 @@ All this happens AFTER the normal Vim initializations, like reading your But the GUI window is only opened after all the initializations have been carried out. If you want some commands to be executed just after opening the GUI window, use the |GUIEnter| autocommand event. Example: > - :autocommand GUIEnter * winpos 100 50 + :autocmd GUIEnter * winpos 100 50 You can use the gvimrc files to set up your own customized menus (see |:menu|) and initialize other things that you may want to set up differently from the @@ -94,8 +102,8 @@ There are a number of options which only have meaning in the GUI version of Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are documented in |options.txt| with all the other options. -If using the Motif or Athena version of the GUI (but not for the GTK+ or Win32 -version), a number of X resources are available. See |gui-resources|. +If using the Motif or Athena version of the GUI (but not for the GTK+ or +Win32 version), a number of X resources are available. See |gui-resources|. Another way to set the colors for different occasions is with highlight groups. The "Normal" group is used to set the background and foreground @@ -143,7 +151,7 @@ window Vim is running in with this command: > ============================================================================== 2. Scrollbars *gui-scrollbars* -There are vertical scrollbars and a horizontal scrollbars. You may +There are vertical scrollbars and a horizontal scrollbar. You may configure which ones appear with the 'guioptions' option. The interface looks like this (with ":set guioptions=mlrb"): @@ -183,7 +191,7 @@ When the scrollbar is dragged all the way down, the last line of the file will appear in the top of the window. If a window is shrunk to zero height (by the growth of another window) its -scrollbar disappears. It reappears when the window is restored. +scrollbar disappears. It reappears when the window is restored. If a window is vertically split, it will get a scrollbar when it is the current window and when, taking the middle of the current window and drawing a @@ -202,11 +210,11 @@ scrolled as far as possible left and right. The cursor is moved when necessary, it must remain on a visible character (unless 'virtualedit' is set). -Computing the length of the longest visible takes quite a bit of computation, -and it has to be done every time something changes. If this takes too much -time or you don't like the cursor jumping to another line, include the 'h' -flag in 'guioptions'. Then the scrolling is limited by the text of the -current cursor line. +Computing the length of the longest visible line takes quite a bit of +computation, and it has to be done every time something changes. If this +takes too much time or you don't like the cursor jumping to another line, +include the 'h' flag in 'guioptions'. Then the scrolling is limited by the +text of the current cursor line. *athena-intellimouse* If you have an Intellimouse and an X server that supports using the wheel, @@ -407,7 +415,7 @@ used - you should read whichever of these is appropriate now). *clipboard* There is a special register for storing this selection, it is the "* register. Nothing is put in here unless the information about what text is -selected is about to change (eg with a left mouse click somewhere), or when +selected is about to change (e.g. with a left mouse click somewhere), or when another application wants to paste the selected text. Then the text is put in the "* register. For example, to cut a line and make it the current selection/put it on the clipboard: > @@ -497,13 +505,15 @@ floating menus that do not appear on the main menu bar. *:nme* *:nmenu* *:nnoreme* *:nnoremenu* *:ome* *:omenu* *:onoreme* *:onoremenu* *:vme* *:vmenu* *:vnoreme* *:vnoremenu* + *:xme* *:xmenu* *:xnoreme* *:xnoremenu* + *:sme* *:smenu* *:snoreme* *:snoremenu* *:ime* *:imenu* *:inoreme* *:inoremenu* *:cme* *:cmenu* *:cnoreme* *:cnoremenu* *E330* *E327* *E331* *E336* *E333* *E328* *E329* *E337* To create a new menu item, use the ":menu" commands. They are mostly like the ":map" set of commands but the first argument is a menu item name, given -as a path of menus and submenus with a '.' between them. eg: > +as a path of menus and submenus with a '.' between them, e.g.: > :menu File.Save :w<CR> :inoremenu File.Save <C-O>:w<CR> @@ -578,12 +588,21 @@ The ":set ic" will not be echoed when using this menu. Messages from the executed command are still given though. To shut them up too, add a ":silent" in the executed command: > :menu <silent> Search.Header :exe ":silent normal /Header\r"<CR> -< +"<silent>" may also appear just after "<special>" or "<script>". + + *:menu-<special>* *:menu-special* +Define a menu with <> notation for special keys, even though the "<" flag +may appear in 'cpoptions'. This is useful if the side effect of setting +'cpoptions' is not desired. Example: > + :menu <special> Search.Header /Header<CR> +"<special>" must appear as the very first argument to the ":menu" command or +just after "<silent>" or "<script>". + *:menu-<script>* *:menu-script* The "to" part of the menu will be inspected for mappings. If you don't want this, use the ":noremenu" command (or the similar one for a specific mode). If you do want to use script-local mappings, add "<script>" as the very first -argument to the ":menu" command or after "<silent>". +argument to the ":menu" command or just after "<silent>" or "<special>". *menu-priority* You can give a priority to a menu. Menus with a higher priority go more to @@ -646,10 +665,10 @@ because the item will never be selected. Use a single colon to keep it simple. *gui-toolbar* -The toolbar is currently available in the Win32, Athena, Motif, GTK+ (X11) and -Photon GUI. It should turn up in other GUIs in due course. The default -toolbar is setup in menu.vim. -The display of the toolbar is controlled by the 'guioptions' letter 'T'. You +The toolbar is currently available in the Win32, Athena, Motif, GTK+ (X11), +and Photon GUI. It should turn up in other GUIs in due course. The +default toolbar is setup in menu.vim. +The display of the toolbar is controlled by the 'guioptions' letter 'T'. You can thus have menu & toolbar together, or either on its own, or neither. The appearance is controlled by the 'toolbar' option. You can chose between an image, text or both. @@ -660,7 +679,7 @@ level. Vim interprets the items in this menu as follows: 1) If an "icon=" argument was specified, the file with this name is used. The file can either be specified with the full path or with the base name. In the last case it is searched for in the "bitmaps" directory in - 'runtimepath', like in point 3). Examples: > + 'runtimepath', like in point 3. Examples: > :amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo"<CR> :amenu icon=FooIcon ToolBar.Foo :echo "Foo"<CR> < Note that in the first case the extension is included, while in the second @@ -670,7 +689,7 @@ level. Vim interprets the items in this menu as follows: A menu priority must come _after_ the icon argument: > :amenu icon=foo 1.42 ToolBar.Foo :echo "42!"<CR> 2) An item called 'BuiltIn##', where ## is a number, is taken as number ## of - the built-in bitmaps available in Vim. Currently there are 31 numbered + the built-in bitmaps available in Vim. Currently there are 31 numbered from 0 to 30 which cover most common editing operations |builtin-tools|. > :amenu ToolBar.BuiltIn22 :call SearchNext("back")<CR> 3) An item with another name is first searched for in the directory @@ -735,9 +754,9 @@ from the main menu bar. You must then use the |:popup| or |:tearoff| command to display it. *popup-menu* -In the Win32, GTK+, Motif, Athena and Photon GUI, you can define the special -menu "PopUp". This is the menu that is displayed when the right mouse button -is pressed, if 'mousemodel' is set to popup or popup_setpos. +In the Win32, GTK+, Motif, Athena and Photon GUI, you can define the +special menu "PopUp". This is the menu that is displayed when the right mouse +button is pressed, if 'mousemodel' is set to popup or popup_setpos. 5.3 Showing What Menus Are Mapped To *showing-menus* @@ -746,7 +765,7 @@ To see what an existing menu is mapped to, use just one argument after the menu commands (just like you would with the ":map" commands). If the menu specified is a submenu, then all menus under that hierarchy will be shown. If no argument is given after :menu at all, then ALL menu items are shown -for the appropriate mode (eg, Command-line mode for :cmenu). +for the appropriate mode (e.g., Command-line mode for :cmenu). Special characters in the list, just before the rhs: * The menu was defined with "nore" to disallow remapping. @@ -785,6 +804,8 @@ using the last visual selection. *:nunme* *:nunmenu* *:ounme* *:ounmenu* *:vunme* *:vunmenu* + *:xunme* *:xunmenu* + *:sunme* *:sunmenu* *:iunme* *:iunmenu* *:cunme* *:cunmenu* To delete a menu item or a whole submenu, use the unmenu commands, which are @@ -855,7 +876,7 @@ See section |42.4| in the user manual. When a tip is defined for a menu item, it appears in the command-line area when the mouse is over that item, much like a standard Windows menu hint in -the status bar. (Except when Vim is in Command-line mode, when of course +the status bar. (Except when Vim is in Command-line mode, when of course nothing is displayed.) When a tip is defined for a ToolBar item, it appears as a tooltip when the mouse pauses over that button, in the usual fashion. Use the |hl-Tooltip| @@ -869,7 +890,7 @@ The tip is defined like this: > And delete it with: > :tunmenu MyMenu.Hello -Tooltips are currently only supported for the X11 and Win32 GUI. However, they +Tooltips are currently only supported for the X11 and Win32 GUI. However, they should appear for the other gui platforms in the not too distant future. The ":tmenu" command works just like other menu commands, it uses the same @@ -896,9 +917,13 @@ it behaves in a strange way. appear on the menu-bar (see |hidden-menus|). {only available for Win32 and GTK GUI} +:popu[p]! {name} Like above, but use the position of the mouse + pointer instead of the cursor. + Example: > :popup File -will make the "File" menu (if there is one) appear at the text cursor. > +will make the "File" menu (if there is one) appear at the text cursor (mouse +pointer if ! was used). > :amenu ]Toolbar.Make :make<CR> :popup ]Toolbar @@ -919,7 +944,7 @@ This section describes other features which are related to the GUI. get "<Modifiers-Key>". - In the GUI, the modifiers SHIFT, CTRL, and ALT (or META) may be used within - mappings of special keys and mouse events. eg: :map <M-LeftDrag> <LeftDrag> + mappings of special keys and mouse events. E.g.: :map <M-LeftDrag> <LeftDrag> - In the GUI, several normal keys may have modifiers in mappings etc, these are <Space>, <Tab>, <NL>, <CR>, <Esc>. @@ -932,6 +957,23 @@ This section describes other features which are related to the GUI. else echo "Boring old console" endif +< *setting-guifont* +- When you use the same vimrc file on various systems, you can use something + like this to set options specifically for each type of GUI: > + + if has("gui_running") + if has("gui_gtk2") + :set guifont=Luxi\ Mono\ 12 + elseif has("x11") + " Also for GTK 1 + :set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-* + elseif has("gui_win32") + :set guifont=Luxi_Mono:h12:cANSI + endif + endif + +A recommended Japanese font is MS Mincho. You can find info here: +http://www.lexikan.com/mincho.htm ============================================================================== 7. Shell Commands *gui-shell* diff --git a/en/if_ole.txt b/en/if_ole.txt index f5e007966..e8fac082e 100644 --- a/en/if_ole.txt +++ b/en/if_ole.txt @@ -1,4 +1,4 @@ -*if_ole.txt* For Vim version 6.3. Last change: 2003 Jun 19 +*if_ole.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Paul Moore @@ -22,7 +22,7 @@ An alternative is using the client-server communication |clientserver|. 1. Activation *ole-activation* Vim acts as an OLE automation server, accessible from any automation client, -for example, Visual Basic, Python, or Perl. The Vim application "name" (its +for example, Visual Basic, Python, or Perl. The Vim application "name" (its "ProgID", in OLE terminology) is "Vim.Application". Hence, in order to start a Vim instance (or connect to an already running @@ -41,8 +41,8 @@ instance), code similar to the following should be used: $vim = new Win32::OLE 'Vim.Application'; Vim does not support acting as a "hidden" OLE server, like some other OLE -Automation servers. When a client starts up an instance of Vim, that instance -is immediately visible. Simply closing the OLE connection to the Vim instance +Automation servers. When a client starts up an instance of Vim, that instance +is immediately visible. Simply closing the OLE connection to the Vim instance is not enough to shut down the Vim instance - it is necessary to explicitly execute a quit command (for example, :qa!, :wqa). @@ -54,17 +54,17 @@ Vim exposes four methods for use by clients. *ole-sendkeys* SendKeys(keys) Execute a series of keys. -This method takes a single parameter, which is a string of keystrokes. These +This method takes a single parameter, which is a string of keystrokes. These keystrokes are executed exactly as if they had been types in at the keyboard. Special keys can be given using their <..> names, as for the right hand side -of a mapping. Note: Execution of the Ex "normal" command is not supported - +of a mapping. Note: Execution of the Ex "normal" command is not supported - see below |ole-normal|. Examples (Visual Basic syntax) > Vim.SendKeys "ihello<Esc>" Vim.SendKeys "ma1GV4jy`a" -These examples assume that Vim starts in Normal mode. To force Normal mode, +These examples assume that Vim starts in Normal mode. To force Normal mode, start the key sequence with CTRL-\ CTRL-N as in > Vim.SendKeys "<C-\><C-N>ihello<Esc>" @@ -77,7 +77,8 @@ Eval(expr) Evaluate an expression. This method takes a single parameter, which is an expression in Vim's normal format (see |expression|). It returns a string, which is the result of -evaluating the expression. +evaluating the expression. A |List| is turned into a string by joining the +items and inserting line breaks. Examples (Visual Basic syntax) > Line20 = Vim.Eval("getline(20)") @@ -109,7 +110,7 @@ Example (Visual Basic syntax) > Due to the way Vim processes OLE Automation commands, combined with the method of implementation of the ex command :normal, it is not possible to execute the -:normal command via OLE automation. Any attempt to do so will fail, probably +:normal command via OLE automation. Any attempt to do so will fail, probably harmlessly, although possibly in unpredictable ways. There is currently no practical way to trap this situation, and users must @@ -118,7 +119,7 @@ simply be aware of the limitation. 4. Registration *ole-registration* *E243* Before Vim will act as an OLE server, it must be registered in the system -registry. In order to do this, Vim should be run with a single parameter of +registry. In order to do this, Vim should be run with a single parameter of "-register". *-register* > gvim -register @@ -131,9 +132,9 @@ In some situations registering is not possible. This happens when the registry is not writable. If you run into this problem you need to run gvim as "Administrator". -Once vim is registered, the application path is stored in the registry. Before -moving, deleting, or upgrading Vim, the registry entries should be removed -using the "-unregister" switch. +Once vim is registered, the application path is stored in the registry. +Before moving, deleting, or upgrading Vim, the registry entries should be +removed using the "-unregister" switch. *-unregister* > gvim -unregister @@ -158,5 +159,41 @@ Studio. This is called "VisVim". It is included in the archive that contains the OLE version. The documentation can be found in the runtime directory, the README_VisVim.txt file. + +Using Vim with Visual Studio .Net~ + +With .Net you no longer really need VisVim, since .Net studio has support for +external editors. Follow these directions: + +In .Net Studio choose from the menu Tools->External Tools... +Add + Title - Vim + Command - c:\vim\vim63\gvim.exe + Arguments - --servername VS_NET --remote-silent "+call cursor($(CurLine), $(CurCol))" $(ItemPath) + Init Dir - Empty + +Now, when you open a file in .Net, you can choose from the .Net menu: +Tools->Vim + +That will open the file in Vim. +You can then add this external command as an icon and place it anywhere you +like. You might also be able to set this as your default editor. + +If you refine this further, please post back to the Vim maillist so we have a +record of it. + +--servername VS_NET +This will create a new instance of vim called VS_NET. So if you open multiple +files from VS, they will use the same instance of Vim. This allows you to +have multiple copies of Vim running, but you can control which one has VS +files in it. + +--remote-silent "+call cursor(10, 27)" + - Places the cursor on line 10 column 27 +In Vim > + :h --remote-silent for mor details + +[.Net remarks provided by Dave Fishburn and Brian Sturk] + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/en/if_perl.txt b/en/if_perl.txt index c9f940cf5..c0c4bc8b7 100644 --- a/en/if_perl.txt +++ b/en/if_perl.txt @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim version 6.3. Last change: 2004 May 01 +*if_perl.txt* For Vim version 7.0. Last change: 2006 Mar 06 VIM REFERENCE MANUAL by Sven Verdoolaege @@ -9,6 +9,7 @@ Perl and Vim *perl* *Perl* 1. Editing Perl files |perl-editing| 2. Compiling VIM with Perl interface |perl-compiling| 3. Using the Perl interface |perl-using| +4. Dynamic loading |perl-dynamic| {Vi does not have any of these commands} @@ -18,7 +19,7 @@ The Perl interface only works when Vim was compiled with the |+perl| feature. 1. Editing Perl files *perl-editing* Vim syntax highlighting supports Perl and POD files. Vim assumes a file is -Perl code if the filename has a .pl or .pm suffix. Vim also examines the first +Perl code if the filename has a .pl or .pm suffix. Vim also examines the first line of a file, regardless of the filename suffix, to check if a file is a Perl script (see scripts.vim in Vim's syntax directory). Vim assumes a file is POD text if the filename has a .POD suffix. @@ -50,7 +51,7 @@ http://www.perl.com/CPAN/ports/nt/Standard/x86/ 3. Using the Perl interface *perl-using* *:perl* *:pe* -:pe[rl] {cmd} Execute Perl command {cmd}. The current package +:pe[rl] {cmd} Execute Perl command {cmd}. The current package is "main". :pe[rl] << {endpattern} @@ -84,7 +85,7 @@ Example vim script: > *:perldo* *:perld* :[range]perld[o] {cmd} Execute Perl command {cmd} for each line in the [range], with $_ being set to the text of each line in - turn, without a trailing <EOL>. Setting $_ will change + turn, without a trailing <EOL>. Setting $_ will change the text, but note that it is not possible to add or delete lines using this command. The default for [range] is the whole file: "1,$". @@ -156,6 +157,8 @@ VIM::Buffers([{bn}...]) With no arguments, returns a list of all the buffers numbers {bn}, returns a list of the buffers matching {bn}, using the same rules as Vim's internal |bufname()| function. + WARNING: the list becomes invalid when |:bwipe| is + used. Using it anyway may crash Vim. *perl-Windows* VIM::Windows([{wn}...]) With no arguments, returns a list of all the windows @@ -163,6 +166,8 @@ VIM::Windows([{wn}...]) With no arguments, returns a list of all the windows in a scalar context. For a list of window numbers {wn}, returns a list of the windows with those numbers. + WARNING: the list becomes invalid when a window is + closed. Using it anyway may crash Vim. *perl-DoCommand* VIM::DoCommand({cmd}) Executes Ex command {cmd}. @@ -176,6 +181,8 @@ VIM::Eval({expr}) Evaluates {expr} and returns (success, val). value of internal |variables| x, and '$x' is equivalent to perl's $ENV{x}. All |functions| accessible from the command-line are valid for {expr}. + A |List| is turned into a string by joining the items + and inserting line breaks. *perl-SetHeight* Window->SetHeight({height}) @@ -207,7 +214,7 @@ Buffer->Count() Returns the number of lines in the Buffer. *perl-Get* Buffer->Get({lnum}, {lnum}?, ...) Returns a text string of line {lnum} in the Buffer - for each {lnum} specified. An array can be passed + for each {lnum} specified. An array can be passed with a list of {lnum}'s specified. *perl-Delete* @@ -255,4 +262,22 @@ function: > endif Note that "EOF" must be at the start of the line. +============================================================================== +4. Dynamic loading *perl-dynamic* + +On MS-Windows the Perl library can be loaded dynamically. The |:version| +output then includes |+perl/dyn|. + +This means that Vim will search for the Perl DLL file only when needed. When +you don't use the Perl interface you don't need it, thus you can use Vim +without this DLL file. + +To use the Perl interface the Perl DLL must be in your search path. In a +console window type "path" to see what directories are used. + +The name of the DLL must match the Perl version Vim was compiled with. +Currently the name is "perl58.dll". That is for Perl 5.8. To know for +sure edit "gvim.exe" and search for "perl\d*.dll\c". + +============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/en/os_unix.txt b/en/os_unix.txt index db4b787af..c6a987ffd 100644 --- a/en/os_unix.txt +++ b/en/os_unix.txt @@ -1,4 +1,4 @@ -*os_unix.txt* For Vim version 6.3. Last change: 2003 Mar 15 +*os_unix.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -11,7 +11,7 @@ For compiling Vim on Unix see "INSTALL" and "Makefile" in the src directory. The default help file name is "/usr/local/lib/vim/help.txt" The files "$HOME/.vimrc" and "$HOME/.exrc" are used instead of "s:.vimrc" and -"s:.exrc". Additionally "/usr/local/etc/vimrc" is used first. +"s:.exrc". Additionally "/usr/local/etc/vimrc" is used first. If "/usr/local/share" exists it is used instead of "/usr/local/lib". Temporary files (for filtering) are put in "/tmp". If you want to place them @@ -26,15 +26,15 @@ For executing external commands fork()/exec() is used when possible, otherwise system() is used, which is a bit slower. The output of ":version" includes |+fork| when fork()/exec() is used, |+system()| when system() is used. This can be changed at compile time. -(For forking of the GUI version see |gui-fork|). +(For forking of the GUI version see |gui-fork|.) Because terminal updating under Unix is often slow (e.g. serial line terminal, shell window in suntools), the 'showcmd' and 'ruler' options -are default off. If you have a fast terminal, try setting them on. You might +are default off. If you have a fast terminal, try setting them on. You might also want to set 'ttyfast'. When using Vim in an xterm the mouse clicks can be used by Vim by setting -'mouse' to "a". If there is access to an X-server gui style copy/paste will +'mouse' to "a". If there is access to an X-server gui style copy/paste will be used and visual feedback will be provided while dragging with the mouse. If you then still want the xterm copy/paste with the mouse, press the shift key when using the mouse. See |mouse-using|. Visual feedback while dragging @@ -54,7 +54,7 @@ supports colors, but "T_Co" is empty or zero): > For real color terminals the ":highlight" command can be used. -The file "tools/Vim132" is a shell script that can be used to put Vim in 132 +The file "tools/vim132" is a shell script that can be used to put Vim in 132 column mode on a vt100 and lookalikes. vim:tw=78:ts=8:ft=help:norl: diff --git a/en/os_vms.txt b/en/os_vms.txt index ba4f66de1..9d80d706a 100644 --- a/en/os_vms.txt +++ b/en/os_vms.txt @@ -1,4 +1,4 @@ -*os_vms.txt* For Vim version 6.3. Last change: 2004 May 16 +*os_vms.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL @@ -47,16 +47,22 @@ You can download precompiled executables from: To use the precompiled binary version, you need one of these archives: - vim-XX-exe-alpha-gui.zip Alpha GUI/Motif executables - vim-XX-exe-alpha-gtk.zip Alpha GUI/GTK executables - vim-XX-exe-alpha-term.zip Alpha console executables + vim-XX-exe-ia64-gui.zip IA64 GUI/Motif executables + vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK executables + vim-XX-exe-ia64-term.zip IA64 console executables + vim-XX-exe-axp-gui.zip Alpha GUI/Motif executables + vim-XX-exe-axp-gtk.zip Alpha GUI/GTK executables + vim-XX-exe-axp-term.zip Alpha console executables vim-XX-exe-vax-gui.zip VAX GUI executables vim-XX-exe-vax-term.zip VAX console executables -and of course +and of course (optional) vim-XX-runtime.zip runtime files -The binary archives contain: vim.exe, ctags.exe, xxd.exe, mms_vim.exe files. +The binary archives contain: vim.exe, ctags.exe, xxd.exe files. + +For GTK executables you will need GTKLIB that is available for +Alpha and IA64 platform. ============================================================================== @@ -68,33 +74,35 @@ See the file [.SRC]INSTALLVMS.TXT. 4. Problems *vms-problems* -The code has been tested under Open VMS 6.2 - 7.3 on Alpha and VAX platforms -with the DECC compiler. It should work without bigger problems. -If it happened that your system does not have some include libraries you can -tune up in OS_VMS_CONF.H file. +The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64 +platforms with the DEC C compiler. It should work without bigger problems. +If your system does not have some include libraries you can tune up in +OS_VMS_CONF.H file. If you decided to build Vim with +perl, +python, etc. options, first you need -to download OpenVMS distributions of Perl and Python. Build and deploy the -libraries and change adequate lines in MAKE_VMS.MMS file. There should not be -problem from Vim side. +to download OpenVMS distributions of Perl and Python. Build and deploy the +libraries and change adequate lines in MAKE_VMS.MMS file. There should not be +a problem from Vim side. + +Also GTK, XPM library paths should be configured in MAKE_VMS.MMS -Note: Under VAX it should work with DEC C compiler without problem. VAXC -compiler is not fully ANSI C compatible in pre-processor directives -semantics, therefore you have to use a converter program what will do the -lion part of the job. For detailed instruction read file INSTALLvms.txt +Note: Under VAX it should work with the DEC C compiler without problems. The +VAX C compiler is not fully ANSI C compatible in pre-processor directives +semantics, therefore you have to use a converter program what will do the lion +part of the job. For detailed instructions read file INSTALLvms.txt -MMS_VIM.EXE is building together with VIM.EXE, but for XD.EXE you should +MMS_VIM.EXE is build together with VIM.EXE, but for XD.EXE you should change to subdirectory and build it separately. -CTAGS is not part of Vim source distribution any more, however the OpenVMS -specific source might contain CTAGS source files as it is described above. +CTAGS is not part of the Vim source distribution anymore, however the OpenVMS +specific source might contain CTAGS source files as described above. You can find more information about CTAGS on VMS at http://www.polarhome.com/ctags/ Advanced users may try some acrobatics in FEATURE.H file also. It is possible to compile with +xfontset +xim options too, but then you have -to set up GUI fonts etc. correctly. See. :help xim from Vim command prompt. +to set up GUI fonts etc. correctly. See :help xim from Vim command prompt. You may want to use GUI with GTK icons, then you have to download and install GTK for OpenVMS or at least runtime shareable images - LIBGTK from @@ -116,10 +124,10 @@ Vim uses a special directory structure to hold the document and runtime files: |- vim57 |----- doc |----- syntax - |- vim60 + |- vim62 |----- doc |----- syntax - |- vim61 + |- vim64 |----- doc |----- syntax vimrc (system rc files) @@ -132,18 +140,18 @@ Use: > define/nolog TMP device:[path.tmp] to get vim.exe to find its document, filetype, and syntax files, and to -specify a directory where temporary files will be located. Copy the "runtime" +specify a directory where temporary files will be located. Copy the "runtime" subdirectory of the vim distribution to vimruntime. Logicals $VIMRUNTIME and $TMP are optional. If $VIMRUNTIME is not set, Vim will guess and try to set up automatically. -Read more about at :help runtime +Read more about it at :help runtime If $TMP is not set, you will not be able to use some functions as CTAGS, XXD, printing etc. that use temporary directory for normal operation. -$TMP directory should be readable and writable by the user(s). -The easiest way to set up $TMP is to define logical: > +The $TMP directory should be readable and writable by the user(s). +The easiest way to set up $TMP is to define a logical: > define/nolog TMP SYS$SCRATCH or as: > @@ -155,9 +163,9 @@ or as: > Usually, you want to run just one version of Vim on your system, therefore it is enough to dedicate one directory for Vim. -Copy all Vim runtime directory structure to the deployment position. +Copy the whole Vim runtime directory structure to the deployment position. Add the following lines to your LOGIN.COM (in SYS$LOGIN directory). -Set up logical $VIM as: > +Set up the logical $VIM as: > $ define VIM device:<path> @@ -174,20 +182,20 @@ Please, check the notes for customization and configuration of symbols. You may want to create .vimrc and .gvimrc files in your home directory (SYS$LOGIN) to overwrite default settings. -The easiest way is just rename example files. You may leave the menu file -(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory. It will -be default setup for all users, and for users is enough just to have their -own additions or resetting in home directory in files .vimrc and .gvimrc. +The easiest way is just rename example files. You may leave the menu file +(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory. It will +be default setup for all users, and for users it is enough just to have their +own additions or resetting in their home directory in files .vimrc and .gvimrc. It should work without problems. -Note: Remember, system rc files (default for all users) does not have leading -"." So, system rc files are: > +Note: Remember, system rc files (default for all users) don't have a leading +".". So, system rc files are: > $VIM:vimrc $VIM:gvimrc $VIM:menu.vim -and user's customized rc files are: > +and user customized rc files are: > sys$login:.vimrc sys$login:.gvimrc @@ -203,7 +211,7 @@ Example LOGIN.COM: > Note: This set-up should be enough, if you are working on standalone server or clustered environment, but if you want to use Vim as internode editor in -DECNET environment, it will satisfy you as well. +DECNET environment, it will satisfy as well. You just have to define the "whole" path: > $ define VIM "<server_name>[""user password""]::device:<path>" @@ -214,10 +222,11 @@ as for example: > $ define VIM "PLUTO::RF10:[UTIL.VIM]" $ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required -You can also use $VIMRUNTIME logical to point to proper version of Vim if you -have installed more versions in the same time. If $VIMRUNTIME is not defined -Vim will borrow value from $VIM logical. You can find more information about -$VIMRUNTIME logical by typing :help runtime as a Vim command. +You can also use the $VIMRUNTIME logical to point to the proper version of Vim +if you have installed more versions at the same time. If $VIMRUNTIME is not +defined Vim will borrow its value from the $VIM logical. You can find more +information about the $VIMRUNTIME logical by typing :help runtime as a Vim +command. System administrators might want to set up a system wide Vim installation, then add to the SYS$STARTUP:SYLOGICALS.COM > @@ -231,38 +240,51 @@ and to the SYS$STARTUP:SYLOGIN.COM > $ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40 -It will set up normal Vim work environment for every user on the system. +It will set up a normal Vim work environment for every user on the system. + +IMPORTANT: Vim on OpenVMS (and on other case insensitive system) command line +parameters are assumed to be lowecase. In order to indicate that a command +line parameter is uppercase "/" sign must be used. + +Examples: + > + vim -R filename ! means: -r List swap files and exit + vim -/r filename ! means: -R Readonly mode (like "view") + vim -u <vimrc> ! means: -u Use <vimrc> instead of any .vimrc + vim -/u <gvimrc> ! means: -U Use <gvimrc> instead of any .gvimrc ============================================================================== 7. GUI mode questions *vms-gui* -OpenVMS in a real mainframe OS, therefore even if it has a GUI console, most of -the users does not use a native X/Window environment during normal operation. -It is not possible to start Vim in GUI mode "just like that". But anyhow it is -not too complicate either. +OpenVMS is a real mainframe OS, therefore even if it has a GUI console, most +of the users do not use a native X/Window environment during normal operation. +It is not possible to start Vim in GUI mode "just like that". But anyhow it +is not too complicated either. -First of all: you will need an executable that is built with enabled GUI. +First of all: you will need an executable that is built with the GUI enabled. Second: you need to have installed DECW/Motif on your VMS server, otherwise you will get errors that some shareable libraries are missing. -Third: If you choose to run Vim with extra feature as GUI/GTK then you need -GTK installation too or at least GTK runtime environment (LIBGTK etc.) +Third: If you choose to run Vim with extra features such as GUI/GTK then you +need a GTK installation too or at least a GTK runtime environment (LIBGTK +can be downloaded from http://www.polarhome.com/vim/). 1) If you are working on the VMS X/Motif console: Start Vim with the command: > $ mc device:<path>VIM.EXE -g < - or type :gui as a command to the Vim command prompt. For more info :help gui + or type :gui as a command to the Vim command prompt. For more info :help + gui -2) If you are working on other X/Window environment as Unix or some remote X - VMS console. Set up display to your host with: > +2) If you are working on some other X/Window environment like Unix or a remote + X VMS console. Set up display to your host with: > $ set disp/create/node=<your IP address>/trans=<transport-name> < - and start Vim as in point 1. You can find more help in VMS documentation or + and start Vim as in point 1. You can find more help in VMS documentation or type: help set disp in VMS prompt. Examples: > @@ -276,11 +298,11 @@ For more information type $help set disp in VMS prompt. 3) Another elegant solution is XDM if you have installed on OpenVMS box. It is possible to work from XDM client as from GUI console. -4) If you are working on MS Windows or other non X/Window environment - You need to set up one X server and run Vim as in point 2. - For MS Windows there are available free X servers as MIX , Omni X etc. +4) If you are working on MS-Windows or some other non X/Window environment + you need to set up one X server and run Vim as in point 2. + For MS-Windows there are available free X servers as MIX , Omni X etc., as well as excellent commercial products as eXcursion or ReflectionX with - buit in DEC support. + built-in DEC support. Please note, that executables without GUI are slightly faster during startup then with enabled GUI in character mode. Therefore, if you do not use GUI @@ -319,7 +341,7 @@ Read more in ch: 8.6 (Terminal problems). 8.2 Filters -Vim supports filters; ie. if you have a sort program that can handle +Vim supports filters, i.e., if you have a sort program that can handle input/output redirection like Unix (<infile >outfile), you could use > :map \s 0!'aqsort<CR> @@ -333,19 +355,20 @@ Vim is saving files into a new file with the next higher file version number, try these settings. > :set nobackup " does not create *.*_ backup files - :set nowritebackup " does not have any purpose on VMS. It's default. + :set nowritebackup " does not have any purpose on VMS. It's the + " default. Recovery is working perfect as well from the default swap file. Read more with :help swapfile (Claude Marinier <ClaudeMarinier@xwavesolutions.com> Vim 5.5, Zoltan Arpadffy -Vim 5.6 ) +Vim 5.6) 8.4 Directory conversion Vim will internally convert any unix-style paths and even mixed unix/VMS -paths into VMS style paths. Some typical conversions resemble: +paths into VMS style paths. Some typical conversions resemble: /abc/def/ghi -> abc:[def]ghi. /abc/def/ghi.j -> abc:[def]ghi.j @@ -377,9 +400,9 @@ example: > Note: syntax is very important, otherwise VMS will recognize more parameters instead of one (resulting with: file not found) -2. Set up Vim as your internode editor. If Vim is not installed on your host, -just set up your IP address, full Vim path including the server name and run -the command procedure below: > +2. Set up Vim as your internode editor. If Vim is not installed on your +host, just set up your IP address, the full Vim path including the server name +and run the command procedure below: > $ if (p1 .eqs. "") .OR. (p2 .eqs. "") then goto usage $ set disp/create/node=<your_IP_here>/trans=tcpip @@ -392,8 +415,8 @@ the command procedure below: > $ write sys$output " Example: @SETVIM.COM username passwd" $ end: -Note: Never use it in clustered environment (you do not need it), and load could -be very-very slow, but even faster then a local Emacs. :-) +Note: Never use it in a clustered environment (you do not need it), loading +could be very-very slow, but even faster then a local Emacs. :-) (Zoltan Arpadffy, Vim 5.6) @@ -404,7 +427,7 @@ If your terminal name is not known to Vim and it is trying to find the default one you will get the following message during start-up: --- Terminal entry not found in termcap -'unknown-terminal' not known. Available built-in terminals are: +'unknown-terminal' not known. Available built-in terminals are: builtin_gui builtin_riscos builtin_amiga @@ -422,13 +445,13 @@ defaulting to 'vt320' --- The solution is to define default terminal name: > - $ ! unknown terminal name. let us use vt320 or ansi instead. + $ ! unknown terminal name. Let us use vt320 or ansi instead. $ ! Note: it's case sensitive $ define term "vt320" Terminals from VT100 to VT320 (as V300, VT220, VT200 ) do not need any extra -keyboard mappings. They should work perfect as they are, including arrows, -Ins, Del buttons etc. Except Backspace in GUI mode. To solve it, add to +keyboard mappings. They should work perfect as they are, including arrows, +Ins, Del buttons etc., except Backspace in GUI mode. To solve it, add to .gvimrc: > inoremap <Del> <BS> @@ -457,9 +480,9 @@ special commands to execute executables: > MCR <path>filename <parameters> OpenVMS users always have to be aware that the Vim command :! "just" drop them -to DCL prompt. This feature is possible to use without any problem with all +to DCL prompt. This feature is possible to use without any problem with all DCL commands, but if we want to execute some program as XXD, CTAGS, JTAGS etc. -we're running into trouble if we following the Vim documentation (see: help +we're running into trouble if we follow the Vim documentation (see: help xxd). Solution: Execute with the MC command and add the full path to the executable. @@ -470,9 +493,9 @@ Example: Instead of :%!xxd command use: > ... or in general: > :!mc <path>filename <parameters> -Note: You can use XXD, and CTAGS from GUI menu. +Note: You can use XXD and CTAGS from GUI menu. -To customize ctags it is possible to define logical $CTAGS with standard +To customize ctags it is possible to define the logical $CTAGS with standard parameters as: > define/nolog CTAGS "--totals -o sys$login:tags" @@ -488,7 +511,7 @@ documentation at http://ctags.sourceforge.net/ctags.html. If you want to use your .vimrc and .gvimrc from other platforms (e.g. Windows) you can get in trouble if you ftp that file(s): VMS has different end-of-line indication. -The symptom is that ViM is not sourcing your .vimrc/.gvimrc, even if you say: +The symptom is that Vim is not sourcing your .vimrc/.gvimrc, even if you say: > :so sys$login:.vimrc @@ -535,8 +558,8 @@ will be confused after a window-resize. From 6.0 diff functionality has been implemented, but OpenVMS does not use GNU/Unix like diff therefore built in diff does not work. -There is a simple solution to solve this anomaly. Install an Unix like diff -and Vim will work perfect in diff mode too. You just have to redefine your +There is a simple solution to solve this anomaly. Install a Unix like diff +and Vim will work perfect in diff mode too. You just have to redefine your diff program as: > define /nolog diff <GNU_PATH>diff.exe @@ -551,16 +574,16 @@ boxes that is meant to solve GNU problems on OpenVMS. 8.12 diff-mode Vim 6.0 and higher supports vim diff-mode (See |new-diff-mode|, |diff-mode| -and |08.7|). This uses the external program 'diff' and expects a Unix-like -output format from diff. The standard VMS diff has a different output -format. To use vim on VMS in diff-mode, you need to: +and |08.7|). This uses the external program 'diff' and expects a Unix-like +output format from diff. The standard VMS diff has a different output +format. To use vim on VMS in diff-mode, you need to: 1 Install a Unix-like diff program, e.g. GNU diff 2 Tell vim to use the Unix-like diff for diff-mode. You can download GNU diff from the VIM-VMS website, it is one of the GNU -tools in http://www.polarhome.com/vim/files/gnu_tools.zip. I suggest to +tools in http://www.polarhome.com/vim/files/gnu_tools.zip. I suggest to unpack it in a separate directory "GNU" and create a logical GNU: that -points to that directory. e.g: > +points to that directory, e.g: > DEFINE GNU <DISK>:[<DIRECTORY>.BIN.GNU] @@ -569,9 +592,9 @@ prompt: > GDIFF :== $GNU:DIFF.EXE -Now you need to tell vim to use the new diff program. Take the example +Now you need to tell vim to use the new diff program. Take the example settings from |diff-diffexpr| and change the call to the external diff -program to the new diff on VMS. Add this to your .vimrc file: > +program to the new diff on VMS. Add this to your .vimrc file: > " Set up vimdiff options if v:version >= 600 @@ -612,8 +635,8 @@ You can now compare files in 4 ways: > 8.13 Allow '$' in C keywords -DEC C uses many identifiers with '$' in them. This is not allowed in ANSI C, -and vim recognises the '$' as the end of the identifier. You can change this +DEC C uses many identifiers with '$' in them. This is not allowed in ANSI C, +and vim recognises the '$' as the end of the identifier. You can change this with the |iskeyword|command. Add this command to your .vimrc file: > @@ -625,7 +648,7 @@ CS.VIM) and add this command: > set iskeyword+=$ Now word-based commands, e.g. the '*'-search-command and the CTRL-] -tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in +tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in C keywords since ctags version 5.1.) ( Coen Engelbarts, Vim 6.1) @@ -633,8 +656,8 @@ C keywords since ctags version 5.1.) 8.14 VIMTUTOR for beginners It exits VIMTUTOR.COM DCL script that can help Vim beginners to learn/make -first steps with Vim on OpenVMS. Depending of binary distribution you may start -it with: > +first steps with Vim on OpenVMS. Depending of binary distribution you may +start it with: > @vim:vimtutor @@ -644,6 +667,20 @@ it with: > 9. VMS related changes *vms-changes* +Version 7 +- Improved low level char input (affects just console mode) + +Version 6.4 (2005 Oct 15) +- GTKLIB and Vim build on IA64 +- colors in terminal mode +- syntax highlighting in terminal mode +- write problem fixed (extra CR) +- ESC and ESC sequence recognition in terminal mode +- make file changed to support new MMS version +- env variable expansion in path corrected +- printing problems corrected +- help text added for case insensitive arguments + Version 6.3 (2004 May 10) - Improved vms_read function - CTAGS v5.5.4 included diff --git a/en/quotes.txt b/en/quotes.txt index 70a3561cb..ed62ac2f4 100644 --- a/en/quotes.txt +++ b/en/quotes.txt @@ -1,4 +1,4 @@ -*quotes.txt* For Vim version 6.3. Last change: 2004 May 06 +*quotes.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -18,7 +18,7 @@ Coming with a very GUI mindset from Windows, I always thought of people using Vi as some kind of outer space alien in human clothes. Once I tried I really got addicted by its power and now I found myself typing Vim keypresses in the oddest places! That's why I would like to see Vim embedded in every -application which deals with text editing. (Jos� Fonseca) +application which deals with text editing. (Jos� Fonseca) I was a 12-year emacs user who switched to Vim about a year ago after finally giving up on the multiple incompatible versions, flaky contributed packages, @@ -32,17 +32,17 @@ the Vi editor") Out of all the open software i've ever seen and used, and i've seen a lot, Vim is the best, most useful and highest quality to work with, second only to the -linux kernel itself. (Peter Jay Salzman) +linux kernel itself. (Peter Jay Salzman) It's well worth noting that the _entirety_ of SourceForge was written using -Vim and its nifty PHP syntax highlighting. I think the entire SF.net tech +Vim and its nifty PHP syntax highlighting. I think the entire SF.net tech staff uses Vim and we're all excited to have you aboard! (Tim Perdue) Vim is one of a select bunch of tools for which I have no substitute. It is a brilliant piece of work! (Biju Chacko) A previous girlfriend of mine switched to emacs. Needless to say, the -relationship went nowhere. (Geoffrey Mann) +relationship went nowhere. (Geoffrey Mann) I rarely think about Vim, in the same way that I guess a fish rarely thinks about water. It's the environment in which everything else happens. I'm a @@ -51,7 +51,7 @@ is the only thing that's consistent across all my systems, and it's just about the only thing that doesn't break from time to time. When a new system comes in the door without Vim, I install it right away. Great to have a tool that's the same everywhere, that's completely reliable, so I can ignore it and think -about other things. (Pete Schaeffer) +about other things. (Pete Schaeffer) Having recently succeeded in running Vim via telnet through a Nokia Communicator, I can now report that it works nicely on a Palm Pilot too. @@ -63,10 +63,10 @@ versions of 'emacs' in the late 1970's and was relieved by finding 'vi' in the first UNIX I came across in 1983). In my opinion, it's about time 'VIM' replace 'emacs' as the standard for top editors. (Bo Thide', Sweden) -I love and use VIM heavily too. (Larry Wall) +I love and use VIM heavily too. (Larry Wall) Vi is like a Ferrari, if you're a beginner, it handles like a bitch, but once -you get the hang of it, its small, powerful and FAST! (Unknown) +you get the hang of it, it's small, powerful and FAST! (Unknown) VIM is like a new model Ferrari, and sounds like one too - "VIIIIIIMMM!" (Stephen Riehm, Germany) @@ -77,12 +77,12 @@ quickly get used to and appreciate the advantages of this editor. (Garry Glendown, conclusion of an article on VIM in iX magazine 9/1998) I've recently acquired the O'Reilly book on VI (it also discusses VIM -in-depth), and I'm amazed at just how powerful this application is. (Jeffrey +in-depth), and I'm amazed at just how powerful this application is. (Jeffrey Rankin) This guide was written using the Windows 9.x distribution of GVIM, which is quite possibly the greatest thing to come along since God created the naked -girl. (Michael DiBernardo) +girl. (Michael DiBernardo) Boy, I thought I knew almost everything about VIM, but every time I browse the online documentation, I hit upon a minor but cool aspect of a VIM feature that @@ -103,7 +103,7 @@ of those "Perfect Programmer's Editor" threads and was delighted to discover that VIM already supports it. (Brendan Macmillan, Australia) I just discovered VIM (5.0) and I'm telling everyone I know about it! -I tell them VIM stands for VI for the new (M)illenium. Thanks so much! +I tell them VIM stands for VI for the new (M)illenium. Thanks so much! (Matt F. Valentine) I think from now on "vi" should be called "Vim Imitation", not the other way @@ -121,12 +121,12 @@ Whenever I move to a new computing platform, the first thing I do is to port VIM. Lately, I am simply stunned by its ease of compilation using the configure facility. (A.M. Sabuncu, Turkey) -The options are really excellent and very powerful. (Anish Maharaj) +The options are really excellent and very powerful. (Anish Maharaj) The Spring user-interface designs are in, and word from the boutiques is that 80x24 text-only mode is back with a *vengeance! Vi editor clone VIM burst onto March desk-tops with a dazzling show of pastel syntax highlights for its 5.0 -look. Strident and customizable, VIM raises eyebrows with its interpretation +look. Strident and customizable, VIM raises eyebrows with its interpretation of the classic Vi single-key macro collection. http://www.ntk.net/index.cgi?back=archive98/now0327.txt&line=179#l @@ -134,7 +134,7 @@ I just wanted to take this opportunity to let you know that VIM 5 ROCKS! Syntax highlighting: how did I survive without it?! Thank you for creating mankind's best editor! (Mun Johl, USA) -Thanks again for VIM. I use it every day on Linux. (Eric Foster-Johnson, +Thanks again for VIM. I use it every day on Linux. (Eric Foster-Johnson, author of the book "UNIX Programming Tools") The BEST EDITOR EVER (Stuart Woolford) @@ -172,17 +172,17 @@ I am really happy with such a wonderful software package. Much better than almost any expensive, off the shelf program. (Jeff Walker) Whenever I reread the VIM documentation I'm overcome with excitement at the -power of the editor. (William Edward Webber, Australia) +power of the editor. (William Edward Webber, Australia) Hurrah for VIM!! It is "at your fingertips" like vi, and has the extensions that vi sorely needs: highlighting for executing commands on blocks, an easily -navigable and digestible help screen, and more. (Paul Pax) +navigable and digestible help screen, and more. (Paul Pax) The reason WHY I don't have this amazingly useful macro any more, is that I now use VIM - and this is built in!! (Stephen Riehm, Germany) -I am a user of VIM and I love it. I use it to do all my programming, C, -C++, HTML what ever. (Tim Allwine) +I am a user of VIM and I love it. I use it to do all my programming, C, +C++, HTML what ever. (Tim Allwine) I discovered VIM after years of struggling with the original vi, and I just can't live without it any more. (Emmanuel Mogenet, USA) @@ -194,11 +194,11 @@ better than most commercial software! (Leiming Qian) This version of VIM will just blow people apart when they discover just how fantastic it is! (Tony Nugent, Australia) -I took your advice & finally got VIM & I'm really impressed. Instant convert. +I took your advice & finally got VIM & I'm really impressed. Instant convert. (Patrick Killelea, USA) VIM is by far my favorite piece of shareware and I have been particularly -pleased with version 3.0. This is really a solid piece of work. (Robert +pleased with version 3.0. This is really a solid piece of work. (Robert Colon, USA) VIM is a joy to use, it is so well thought and practical that I wonder why @@ -244,7 +244,7 @@ VIM is the greatest editor since the stone chisel. (Jose Unpingco, USA) I would like to say that with VIM I am finally making the 'emacs to vi' transition - as an Editor it is so much better in many ways: keyboard layout, -memory usage, text alteration to name 3. (Mark Adam) +memory usage, text alteration to name 3. (Mark Adam) In fact, now if I want to know what a particular setting does in vi, I fire up VIM and check out it's help! (Nikhil Patel, USA) @@ -255,7 +255,7 @@ before I encountered this program. (Steinar Knutsen, Norway) I use VIM since version 3.0. Since that time, it is the ONLY editor I use, with Solaris, Linux and OS/2 Warp. I suggest all my friends to use VIM, they try, and they continue using it. VIM is really the best software I have ever -downloaded from the Internet, and the best editor I know of. (Marco +downloaded from the Internet, and the best editor I know of. (Marco Eccettuato, Italy) diff --git a/en/recover.txt b/en/recover.txt index 9d38c7492..0de489a83 100644 --- a/en/recover.txt +++ b/en/recover.txt @@ -1,4 +1,4 @@ -*recover.txt* For Vim version 6.3. Last change: 2004 Apr 16 +*recover.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -61,7 +61,7 @@ Disadvantages: directories (although Vim tries to avoid that by comparing the path name). This will result in bogus ATTENTION warning messages. - When you use your home directory, and somebody else tries to edit the same - file, he will not see your swap file and will not get the ATTENTION waring + file, he will not see your swap file and will not get the ATTENTION warning message. On the Amiga you can also use a recoverable ram disk, but there is no 100% guarantee that this works. Putting swap files in a normal ram disk (like RAM: @@ -116,12 +116,38 @@ command: *:pre* *:preserve* *E313* *E314* :pre[serve] Write all text for all buffers into swap file. The - original file is no longer needed for recovery. {Vi: - emergency exit} + original file is no longer needed for recovery. + This sets a flag in the current buffer. When the '&' + flag is present in 'cpoptions' the swap file will not + be deleted for this buffer when Vim exits and the + buffer is still loaded |cpo-&|. + {Vi: might also exit} A Vim swap file can be recognized by the first six characters: "b0VIM ". After that comes the version number, e.g., "3.0". + +Links and symbolic links ~ + +On Unix it is possible to have two names for the same file. This can be done +with hard links and with symbolic links (symlinks). + +For hard links Vim does not know the other name of the file. Therefore, the +name of the swapfile will be based on the name you used to edit the file. +There is no check for editing the same file by the other name too, because Vim +cannot find the other swapfile (except for searching all of your harddisk, +which would be very slow). + +For symbolic links Vim resolves the links to find the name of the actual file. +The swap file name is based on that name. Thus it doesn't matter by what name +you edit the file, the swap file name will normally be the same. However, +there are exceptions: +- When the directory of the actual file is not writable the swapfile is put + elsewhere. +- When the symbolic links somehow create a loop you get an *E773* error + message and the unmodified file name will be used. You won't be able to + save your file normally. + ============================================================================== 2. Recovery *recovery* *E308* *E311* diff --git a/en/sign.txt b/en/sign.txt index 92a6c7f16..ea47050d3 100644 --- a/en/sign.txt +++ b/en/sign.txt @@ -1,4 +1,4 @@ -*sign.txt* For Vim version 6.3. Last change: 2004 May 22 +*sign.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Gordon Prieur @@ -18,19 +18,19 @@ Sign Support Features *sign-support* When a debugger or other IDE tool is driving an editor it needs to be able to give specific highlights which quickly tell the user useful information -about the file. One example of this would be a debugger which had an icon -in the left-hand column denoting a breakpoint. Another example might be an -arrow representing the Program Counter (PC). The sign features allow both +about the file. One example of this would be a debugger which had an icon +in the left-hand column denoting a breakpoint. Another example might be an +arrow representing the Program Counter (PC). The sign features allow both placement of a sign, or icon, in the left-hand side of the window and -definition of a highlight which will be applied to that line. Displaying the +definition of a highlight which will be applied to that line. Displaying the sign as an image is most likely only feasible in gvim (although Sun -Microsystem's dtterm does support this its the only terminal emulator I know +Microsystem's dtterm does support this it's the only terminal emulator I know of which does). A text sign and the highlight should be feasible in any color terminal emulator. -Signs and highlights are not useful just for debuggers. Sun's Visual +Signs and highlights are not useful just for debuggers. Sun's Visual WorkShop uses signs and highlights to mark build errors and SourceBrowser -hits. Additionally, the debugger supports 8 to 10 different signs and +hits. Additionally, the debugger supports 8 to 10 different signs and highlight colors. |workshop| Same for Netbeans |netbeans|. There are two steps in using signs: diff --git a/en/starting.txt b/en/starting.txt index f894f73e8..b676c5a7c 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 6.3. Last change: 2004 May 28 +*starting.txt* For Vim version 7.0. Last change: 2006 Apr 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -263,8 +263,14 @@ a slash. Thus "-R" means recovery and "-/R" readonly. To be used when Vim is used to execute Ex commands from a file instead of a terminal. Switches off most prompts and informative messages. Also warnings and error messages. - But ":print" output is displayed. And when 'verbose' is - non-zero messages are printed (for debugging). + The output of these commands is displayed (to stdout): + :print + :list + :number + :set to display option values. + When 'verbose' is non-zero messages are printed (for + debugging, to stderr). + 'term' and $TERM are not used. If Vim appears to be stuck try typing "qa!<Enter>". You don't get a prompt thus you can't see Vim is waiting for you to type something. @@ -275,7 +281,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly. < *-b* -b Binary mode. File I/O will only recognize <NL> to separate - lines. The 'expandtab' option will be reset. The 'textwidth' + lines. The 'expandtab' option will be reset. The 'textwidth' option is set to 0. 'modeline' is reset. The 'binary' option is set. This is done after reading the vimrc/exrc files but before reading any file in the arglist. See also @@ -288,17 +294,17 @@ a slash. Thus "-R" means recovery and "-/R" readonly. -A Arabic mode. Sets the 'arabic' option on. (Only when compiled with the |+arabic| features (which include |+rightleft|), otherwise Vim gives an error message - and exits. {not in Vi} + and exits.) {not in Vi} *-F* -F Farsi mode. Sets the 'fkmap' and 'rightleft' options on. (Only when compiled with |+rightleft| and |+farsi| features, - otherwise Vim gives an error message and exits). {not in Vi} + otherwise Vim gives an error message and exits.) {not in Vi} *-H* -H Hebrew mode. Sets the 'hkmap' and 'rightleft' options on. (Only when compiled with the |+rightleft| feature, otherwise - Vim gives an error message and exits). {not in Vi} + Vim gives an error message and exits.) {not in Vi} *-V* *verbose* -V[N] Verbose. Sets the 'verbose' option to [N] (default: 10). @@ -306,6 +312,11 @@ a slash. Thus "-R" means recovery and "-/R" readonly. for reading or writing a viminfo file. Can be used to find out what is happening upon startup and exit. {not in Vi} +-V[N]{filename} + Like -V and set 'verbosefile' to {filename}. The result is + that messages are not displayed but written to the file + {filename}. {filename} must not start with a digit. + *-D* -D Debugging. Go to debugging mode when executing the first command from a script. |debug-mode| @@ -361,13 +372,21 @@ a slash. Thus "-R" means recovery and "-/R" readonly. -O[N] Open N windows, split vertically. Otherwise it's like -o. If both the -o and the -O option are given, the last one on the command line determines how the windows will be split. + {not in Vi} + + *-p* +-p[N] Open N tab pages. If [N] is not given, one tab page is opened + for every file given as argument. The maximum is set with + 'tabpagemax' pages (default 10). If there are more tab pages + than arguments, the last few tab pages will be editing an + empty file. Also see |tabpage|. {not in Vi} *-T* -T {terminal} Set the terminal type to "terminal". This influences the codes that Vim will send to your terminal. This is normally not needed, because Vim will be able to find out what type - of terminal you are using (See |terminal-info|). {not in Vi} + of terminal you are using. (See |terminal-info|.) {not in Vi} *-d* -d Start in diff mode, like |vimdiff|. @@ -394,7 +413,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly. process and exits the current one. "-f" should be used when gvim is started by a program that will wait for the edit session to finish (e.g., mail or readnews). If you want gvim - never to fork, include 'f' in 'guioptions' in your .gvimrc. + never to fork, include 'f' in 'guioptions' in your |gvimrc|. Careful: You can use "-gf" to start the GUI in the foreground, but "-fg" is used to specify the foreground color. |gui-fork| {not in Vi} @@ -411,7 +430,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly. < Also consider using autocommands; see |autocommand|. When {vimrc} is equal to "NONE" (all uppercase), all initializations from files and environment variables are - skipped, including reading the .gvimrc file when the GUI + skipped, including reading the |gvimrc| file when the GUI starts. Loading plugins is also skipped. When {vimrc} is equal to "NORC" (all uppercase), this has the same effect as "NONE", but loading plugins is not skipped. @@ -421,10 +440,10 @@ a slash. Thus "-R" means recovery and "-/R" readonly. {not in Vi} *-U* *E230* --U {gvimrc} The file "gvimrc" is read for initializations when the GUI - starts. Other GUI initializations are skipped. When {gvimrc} - is equal to "NONE", no file is read for initializations at - all. +-U {gvimrc} The file {gvimrc} is read for initializations when the GUI + starts. Other GUI initializations are skipped. When {gvimrc} + is equal to "NONE", no file is read for GUI initializations at + all. |gui-init| Exception: Reading the system-wide menu file is always done. {not in Vi} @@ -469,22 +488,23 @@ a slash. Thus "-R" means recovery and "-/R" readonly. started in Ex mode, see |-s-ex|. See also |complex-repeat|. {not in Vi} + *-w_nr* +-w {number} +-w{number} Set the 'window' option to {number}. + *-w* -w {scriptout} All the characters that you type are recorded in the file "scriptout", until you exit Vim. This is useful if you want to create a script file to be used with "vim -s" or ":source!". When the "scriptout" file already exists, new characters are appended. See also |complex-repeat|. + {scriptout} cannot start with a digit. {not in Vi} *-W* -W {scriptout} Like -w, but do not append, overwrite an existing file. {not in Vi} - *-w_nr* --w{number} Does nothing. This was included for Vi-compatibility. In Vi - it sets the 'window' option, which is not implemented in Vim. - --remote [+{cmd}] {file} ... Open the {file} in another Vim that functions as a server. Any non-file arguments must come before this. @@ -694,11 +714,14 @@ accordingly. Vim proceeds in this order: 'shell' option. On MS-DOS and Win32, the COMSPEC variable is used if SHELL is not set. The environment variable TERM, if it exists, is used to set the 'term' - option. + option. However, 'term' will change later when starting the GUI (step + 8 below). 2. Process the arguments The options and file names from the command that start Vim are inspected. Buffers are created for all files (but not loaded yet). + The |-V| argument can be used to display or log what happens next, + useful for debugging the initializations. 3. Execute Ex commands, from environment variables and/or files An environment variable is read as one Ex command line, where multiple @@ -734,10 +757,12 @@ accordingly. Vim proceeds in this order: Note that this file is ALWAYS read in 'compatible' mode, since the automatic resetting of 'compatible' is only done later. Add a ":set nocp" command if you like. + For the Macintosh the $VIMRUNTIME/macmap.vim is read. *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* c. Four places are searched for initializations. The first that exists - is used, the others are ignored. + is used, the others are ignored. The $MYVIMRC environment variable is + set to the file that was first found, unless $MYVIMRC was already set. - The environment variable VIMINIT (see also |compatible-default|) (*) The value of $VIMINIT is used as an Ex command line. - The user vimrc file(s): @@ -746,7 +771,7 @@ accordingly. Vim proceeds in this order: "home:.vimrc" (for Amiga) (*) "$VIM/.vimrc" (for OS/2 and Amiga) (*) "$HOME/_vimrc" (for MS-DOS and Win32) (*) - "$VIM\_vimrc" (for MS-DOS and Win32) (*) + "$VIM/_vimrc" (for MS-DOS and Win32) (*) Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist, "_vimrc" is also tried, in case an MS-DOS compatible file system is used. For MS-DOS and Win32 ".vimrc" is checked @@ -757,10 +782,11 @@ accordingly. Vim proceeds in this order: - The environment variable EXINIT. The value of $EXINIT is used as an Ex command line. - The user exrc file(s). Same as for the user vimrc file, but with - "vimrc" replaced by "exrc". But without the (*)! + "vimrc" replaced by "exrc". But only one of ".exrc" and "_exrc" is + used, depending on the system. And without the (*)! d. If the 'exrc' option is on (which is not the default), the current - directory is searched for four files. The first that exists is used, + directory is searched for three files. The first that exists is used, the others are ignored. - The file ".vimrc" (for Unix, Amiga and OS/2) (*) "_vimrc" (for MS-DOS and Win32) (*) @@ -768,25 +794,25 @@ accordingly. Vim proceeds in this order: ".vimrc" (for MS-DOS and Win32) (*) - The file ".exrc" (for Unix, Amiga and OS/2) "_exrc" (for MS-DOS and Win32) - - The file "_exrc" (for Unix, Amiga and OS/2) - ".exrc" (for MS-DOS and Win32) (*) Using this file or environment variable will cause 'compatible' to be off by default. See |compatible-default|. 4. Load the plugin scripts. *load-plugins* This does the same as the command: > - :runtime! plugin/*.vim + :runtime! plugin/**/*.vim < The result is that all directories in the 'runtimepath' option will be searched for the "plugin" sub-directory and all files ending in ".vim" - will be sourced (in alphabetical order per directory). + will be sourced (in alphabetical order per directory), also in + subdirectories. Loading plugins won't be done when: - The 'loadplugins' option was reset in a vimrc file. - The |--noplugin| command line argument is used. - The "-u NONE" command line argument is used |-u|. - When Vim was compiled without the |+eval| feature. - Note that using "-c set noloadplugins" doesn't work, because the - commands from the command line have not been executed yet. + Note that using "-c 'set noloadplugins'" doesn't work, because the + commands from the command line have not been executed yet. You can + use "--cmd 'set noloadplugins'" |--cmd|. 5. Set 'shellpipe' and 'shellredir' The 'shellpipe' and 'shellredir' options are set according to the @@ -815,6 +841,8 @@ accordingly. Vim proceeds in this order: 11. Open all windows When the |-o| flag was given, windows will be opened (but not displayed yet). + When the |-p| flag was given, tab pages will be created (but not + displayed yet). When switching screens, it happens now. Redrawing starts. If the "-q" flag was given to Vim, the first error is jumped to. Buffers for all windows will be loaded. @@ -877,7 +905,9 @@ set, it will be set to 'nocompatible'. This has the side effect of setting or resetting other options (see 'compatible'). But only the options that have not been set or reset will be changed. This has the same effect like the value of 'compatible' had this value when starting Vim. Note that this -doesn't happen for the system-wide vimrc file. +doesn't happen for the system-wide vimrc file. It does also happen for gvimrc +files. The $MYVIMRC or $MYGVIMRC file will be set to the first found vimrc +and/or gvimrc file. But there is a side effect of setting or resetting 'compatible' at the moment a .vimrc file is found: Mappings are interpreted the moment they are @@ -1019,6 +1049,11 @@ Once Vim has done this once, it will set the $VIMRUNTIME environment variable. To change it later, use a ":let" command like this: > :let $VIMRUNTIME = "/home/piet/vim/vim54" +In case you need the value of $VIMRUNTIME in a shell (e.g., for a script that +greps in the help files) you might be able to use this: > + + VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' ` + ============================================================================== 6. Suspending *suspend* @@ -1028,6 +1063,7 @@ CTRL-Z Suspend Vim, like ":stop". Command-line mode, the CTRL-Z is inserted as a normal character. In Visual mode Vim goes back to Normal mode. + Note: if CTRL-Z undoes a change see |mswin.vim|. :sus[pend][!] or *:sus* *:suspend* *:st* *:stop* @@ -1096,6 +1132,7 @@ you want to make this file your default .vimrc, move it to your home directory (on Unix), s: (Amiga) or $VIM directory (MS-DOS). You could also use autocommands |autocommand| and/or modelines |modeline|. + *vimrc-option-example* If you only want to add a single option setting to your vimrc, you can use these steps: 1. Edit your vimrc file with Vim. @@ -1105,6 +1142,7 @@ these steps: '=' to enter the value. E.g., for the 'guifont' option: > o:set guifont=<C-R>=&guifont<CR><Esc> < [<C-R> is a CTRL-R, <CR> is a return, <Esc> is the escape key] + You need to escape special characters, esp. spaces. Note that when you create a .vimrc file, this can influence the 'compatible' option, which has several side effects. See |'compatible'|. @@ -1180,13 +1218,23 @@ An example mapping: > :nmap <F2> :wa<Bar>exe "mksession! " . v:this_session<CR>:so ~/sessions/ This saves the current Session, and starts off the command to load another. +A session includes all tab pages, unless "tabpages" was removed from +'sessionoptions'. |tab-page| + +The |SessionLoadPost| autocmd event is triggered after a session file is +loaded/sourced. + *SessionLoad-variable* +While the session file is loading the SessionLoad global variable is set to 1. +Plugins can use this to postpone some work until the SessionLoadPost event is +triggered. + *:mkvie* *:mkview* :mkvie[w][!] [file] Write a Vim script that restores the contents of the current window. When [!] is included an existing file is overwritten. When [file] is omitted or is a number from 1 to 9, a - name is generated and 'viewdir' prepended. When last - directory name in 'viewdir' does not exist, this + name is generated and 'viewdir' prepended. When the + last directory name in 'viewdir' does not exist, this directory is created. An existing file is always overwritten then. Use |:loadview| to load this view again. @@ -1217,7 +1265,7 @@ Note that Views and Sessions are not perfect: - They don't restore everything. For example, defined functions, autocommands and ":syntax on" are not included. Things like register contents and command line history are in viminfo, not in Sessions or Views. -- Global option values are only set when the differ from the default value. +- Global option values are only set when they differ from the default value. When the current value is not the default value, loading a Session will not set it back to the default value. Local options will be set back to the default value though. @@ -1259,7 +1307,7 @@ The viminfo file is used to store: - The command line history. - The search string history. - The input-line history. -- Contents of registers. +- Contents of non-empty registers. - Marks for several files. - File marks, pointing to locations in files. - Last search/substitute pattern (for 'n' and '&'). diff --git a/ja/gui.jax b/ja/gui.jax index dd90d9f99..6eeea06d1 100644 --- a/ja/gui.jax +++ b/ja/gui.jax @@ -1,9 +1,10 @@ COMMENT: GUI機能:一般事項 -STATUS: finished 6.3 +STATUS: finished 7.0 TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*gui.txt* For Vim version 6.3. Last change: 2004 Jun 02 +*gui.txt* For Vim version 7.0. Last change: 2006 May 04 VIMリファレンスマニュアル by Bram Moolenaar @@ -29,9 +30,9 @@ Vimのグラフィカルユーザインタフェース *gui* *GUI* 1. GUIの開始 *gui-start* *E229* *E233* まずはVimがGUIに対応したバージョンであるか確認する必要がある。それは":version" -コマンドで調べることができる。その出力が -"+GUI_Athena"、"+GUI_BeOS"、"+GUI_GTK"、"+GUI_Motif"、"MS-Windows ... bit GUI -version"のどれかを含んでいれば問題ない。 +コマンドで調べることができる。その出力が "with xxx GUI" または "MS-Windows 32 +bit GUI version" を含んでいれば問題ない。ここで "xxx" は X11-Motif, +X11-Athena, Photon, GTK, GTK2, などである。 どのようにGUIで起動するかは使用しているシステムに依存する。たいていはこのよう にしてGUI版のVimを実行できる: @@ -41,8 +42,13 @@ VimのX11バージョンはGUIとGUIでないモードの両方で実行する |gui-x11-start| を参照。 *gui-init* *gvimrc* *.gvimrc* *_gvimrc* +gvimrc は GUI 固有の初期化コマンドを書くためのファイルである。gvimrc は常にフ +ァイル |vimrc| の後に読み込まれる。環境変数 $MYGVIMRC があると、その値が +gvimrc の代わりに使われる。 + GUIの初期化は次の順序で行われる: -- 端末の設定がGUI用の初期値に設定される。 +- オプション 'term' が "builgin_gui" に設定され、端末の設定がGUI用の初期値に設 + 定される。|terminal-options| - システムのメニューファイルがあればそれが読み込まれる。このファイルの名前は通 常"$VIMRUNTIME/menu.vim"である。":version"でこれを確認できる。|$VIMRUNTIME| も参照。システムのメニューの読み込みを省略するには'guioptions'に'M'を含める。 @@ -57,7 +63,8 @@ GUIの初期化は次の順序で行われる: めるなら、例えば50文字にするなら、次のようにする: > :let bmenu_max_pathlen = 50 - Vimを起動するときのコマンドライン引数に"-U {gvimrc}"が指定されると、{gvimrc} - ファイルが初期化のために読み込まれ、以下の初期化処理は省略される。 + ファイルが初期化のために読み込まれ、以下の初期化処理は省略される。{gvimrc} + が "NONE" の場合は、どの初期化ファイルも読み込まれない。 - UnixとMS-Windowsでは、システムのgvimrcが存在するなら、それが読み込まれる。こ のファイルの名前は通常"$VIM/gvimrc"である。":version"でこれを確認できる。 |$VIM|も参照。 @@ -68,6 +75,8 @@ GUIの初期化は次の順序で行われる: - Win32では、$HOMEが設定されていないときは、"$VIM\_gvimrc"が読み込まれる。 - "_gvimrc"ファイルが見つからないときには、".gvimrc"も試される。逆のときも同 様である。 + $MYGVIMRC が設定されていないならば、$MYGVIMRC に最初に見つかったファイルの名 + 前が代入される。 - 'exrc'オプションが設定されていて(これは標準設定ではない)、./.gvimrcファイル が存在し、それがシステム、あるいはユーザーのgvimrcファイルではないなら、それ が読み込まれる。このファイルがユーザーの所有しているものでないなら、いくつか @@ -82,7 +91,7 @@ NOTE: Vimを起動するときに、"-U"引数を指定せずに"-u NONE"を指 しかし、GUIウィンドウは全ての初期化が実行された後に開かれる。 GUIウィンドウを開いた直後にいくつかのコマンドを実行したいなら、オートコマンド の|GUIEnter|イベントを使用する。例えば: > - :autocommand GUIEnter * winpos 100 50 + :autocmd GUIEnter * winpos 100 50 カスタマイズしたメニュー(|:menu|を参照)をセットアップしたり、CUI版とは異なった 初期化をするために、gvimrcファイルを使用することができる。 @@ -498,6 +507,8 @@ Win32 GUIバージョンはMotifの切取りメニューをエミュレートす *:nme* *:nmenu* *:nnoreme* *:nnoremenu* *:ome* *:omenu* *:onoreme* *:onoremenu* *:vme* *:vmenu* *:vnoreme* *:vnoremenu* + *:xme* *:xmenu* *:xnoreme* *:xnoremenu* + *:sme* *:smenu* *:snoreme* *:snoremenu* *:ime* *:imenu* *:inoreme* *:inoremenu* *:cme* *:cmenu* *:cnoreme* *:cnoremenu* *E330* *E327* *E331* *E336* *E333* @@ -580,7 +591,16 @@ Note: コマンドラインモードでの<Esc>はマッピングで使用され 実行したコマンドの出力は表示される。それを表示しないようにするには、":silent" を付けてコマンドを実行する: > :menu <silent> Search.Header :exe ":silent normal /Header\r"<CR> -< +"<silent>" は "<special>" や "<script>" の直後に書いてもよい。 + + *:menu-<special>* *:menu-special* +'cpoptions' にフラグ "<" が含まれているときでも、メニューを定義する際には <> +記法で特殊なキーを表すことができる。これは 'cpoptions' の副作用が望ましくない +場合に便利である。例: > + :menu <special> Search.Header /Header<CR> +"<special>" はコマンド :menu の引数の一番最初か、"<silent>" や"<script>"の直後 +に書かねばならない。 + *:menu-<script>* *:menu-script* メニューに指定されたコマンドにはマッピングが適用される。適用しないようにするに は、":noremenu"コマンド(とそれに類するモード別のコマンド)を使う。スクリプト @@ -792,6 +812,8 @@ CUI版のvimをWANT_MENUを定義してコンパイルしたなら、:emenuを *:nunme* *:nunmenu* *:ounme* *:ounmenu* *:vunme* *:vunmenu* + *:xunme* *:xunmenu* + *:sunme* *:sunmenu* *:iunme* *:iunmenu* *:cunme* *:cunmenu* メニュー項目やサブメニュー全体を削除するには、unmapコマンドによく似たunmenuコ @@ -906,9 +928,13 @@ Win32とGTK+ GUIでは、カーソルの位置にメニューをポップアッ 必要がある。メニューバーに表示されている必要は ない。 +:popu[p]! {name} 上記と同様だが、カーソル位置でなくマウスポイン + タの位置にメニューを表示する。 + 例: > :popup File -とすると"File"メニューを(もしあれば)カーソル位置に表示させる。 > +とすると"File"メニューを(もしあれば)カーソル位置に表示させる。! が使われたとき +はマウスポインタの位置に表示させる。 > :amenu ]Toolbar.Make :make<CR> :popup ]Toolbar @@ -946,6 +972,25 @@ Note: ']'で始まるメニュー項目はメニューバーに表示されな echo "Boring old console" endif +< *setting-guifont* +- さまざまなシステム上で同一の vimrc ファイルを使うときは、次のようにして各 + GUI に対する固有のオプションを設定することができる: > + + if has("gui_running") + if has("gui_gtk2") + :set guifont=Luxi\ Mono\ 12 + elseif has("x11") + " Also for GTK 1 + :set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-* + elseif has("gui_win32") + :set guifont=Luxi_Mono:h12:cANSI + endif + endif + +推奨される日本語フォントは MS Mincho である。MS Mincho についての情報はここで +みつかる: +http://www.lexikan.com/mincho.htm + ============================================================================== 7. シェルコマンド *gui-shell* diff --git a/ja/if_ole.jax b/ja/if_ole.jax index 66b49ea5b..18bf1d929 100644 --- a/ja/if_ole.jax +++ b/ja/if_ole.jax @@ -1,10 +1,11 @@ COMMENT: OLEインターフェイス -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> -*if_ole.txt* For Vim version 6.3. Last change: 2003 Jun 19 +*if_ole.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Paul Moore @@ -83,7 +84,8 @@ CTRL-\ CTRL-N は、挿入モード、コマンドラインモードにいると Eval(expr) 式(expr)を実行する。 このメソッドはひとつの引数、Vim標準フォーマットの式、を取る(|expression|を参 -照)。戻り値は、その式を評価した結果の文字列である。 +照)。戻り値は、その式を評価した結果の文字列である。リスト |List| は文字列に変 +換される。そのとき各要素の間に改行が挿入され、連結される。 Examples (Visual Basic の文法で) > Line20 = Vim.Eval("getline(20)") @@ -160,5 +162,41 @@ OLEバージョンにより、Microsoft Visual StudioのエディタとしてVim 梱されている。ドキュメントは、ランタイムディレクトリに置かれている README_VisVim.txtファイルにある。 + +Vim と Visual Studio.Net を連携させる~ + +.Net studio は外部エディタをサポートしているので、.Net では VisVim は必要ない。 +次のようにするとよい: + +.Net Studio でメニューから[ツール]→[外部ツール]を選択する。 +次を追加する + タイトル - Vim + コマンド - c:\vim\vim63\gvim.exe + 引数 - --servername VS_NET --remote-silent "+call cursor($(CurLine), $(CurCol))" $(ItemPath) + 初期ディレクトリ - 空 + +こうしておくと .Net でファイルを開いたとき、.Net のメニューから[ツール]→[Vim] +を選べるようになる。 + +それを選ぶとそのファイルが Vim で開かれる。 +この外部コマンドをアイコンにして好きなところに置くことができる。これをデフォル +トのエディタに設定することもできる。 + +もしこれをさらに改良できたら、それを留めておけるように Vim メーリングリストに +投稿してください。 + +--servername VS_NET +この引数をつけると、VS_NET という名前で新しい Vim インスタンスを作る。そのため、 +VS で複数のファイルを開いても、同じ Vim のインスタンスが使われる。これによって +複数の Vim のインスタンスを起動し、かつどのインスタンスが VS のファイルを開い +ているかを管理することができる。 + +--remote-silent "+call cursor(10, 27)" + - カーソルを10行27桁に移動する +より詳しくは Vim 内で > + :h --remote-silent + +[.Net の部分は Dave Fishburn と Brian Sturk によって提供された] + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_perl.jax b/ja/if_perl.jax index a62fb2aea..6df726a27 100644 --- a/ja/if_perl.jax +++ b/ja/if_perl.jax @@ -1,10 +1,11 @@ COMMENT: Perlインターフェイス(外部スクリプト) -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 -TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*if_perl.txt* For Vim version 6.3. Last change: 2004 May 01 +*if_perl.txt* For Vim version 7.0. Last change: 2006 Mar 06 VIM REFERENCE MANUAL by Sven Verdoolaege @@ -15,6 +16,7 @@ Perl と Vim *perl* *Perl* 1. Perl のファイルを編集する |perl-editing| 2. Perl インタフェイス付きのコンパイル |perl-compiling| 3. Perl インタフェイスを使う |perl-using| +4. 動的ローディング |perl-dynamic| {Vi にはこれらのうちのどの機能もありません} @@ -167,12 +169,18 @@ VIM::Buffers([{bn}...]) 引数なしだと、配列コンテキストではす のリスとが与えられた場合は、{bn} にマッチするバッファ ーのリストを返します。ここでは Vim の内蔵関数 |bufname()| と同じルールが用いられます。 + 警告: |:bwipe| が使われると、このリストは無効になりま + す。それを使おうとすると Vim がクラッシュすることがあ + ります。 *perl-Windows* VIM::Windows([{wn}...]) 引数なしだと、配列コンテキストではすべてのウインドーの リストを返し、スカラーコンテキストではウインドーの数を 返します。ウインドー数 {wn} にリスとが与えられた場合は、 それらの番号のウインドーのリストを返します。 + 警告: |:bwipe| が使われると、このリストは無効になりま + す。それを使おうとすると Vim がクラッシュすることがあ + ります。 *perl-DoCommand* VIM::DoCommand({cmd}) Ex コマンド {cmd} を実行します。 @@ -185,6 +193,8 @@ VIM::Eval({expr}) {expr} を評価して (success, val) を返します。succes 'x' は内部変数 |variables| x を返し、'$x' は Perl の $ENV{x} と同じです。コマンドラインからアクセスできるす べての |functions| は {expr} に使うことができます。 + リスト |List| は文字列に変換されます。そのとき各要素の + 間に改行が挿入され、連結されます。 *perl-SetHeight* Window->SetHeight({height}) @@ -265,4 +275,23 @@ Vimスクリプトにその他のスクリプトを埋め込むときに、そ endif 注意:"EOF"は行頭になければなりません。 +============================================================================== +4. 動的ローディング *perl-dynamic* + +MS-WindowsではPerlライブラリを動的に読み込むことが可能である。これを行うと +|:version|の出力に|+perl/dyn|が含まれるようになる。 + +この場合、Vimは必要なときだけPerlのDLLファイルを検索する。Perlインターフェ +イスを使わないときはDLLを必要としないので、DLLなしでVimを使うことができる。 + +Perlインターフェイスを使うにはPerlのDLLが検索パス内に存在しなければならな +い。コンソールウィンドウで"path"とタイプすると、どのディレクトリが検索パスとな +るか表示することができる。 + +DLLの名前はVimをコンパイルした時のPerlのバージョンに一致しなければならない。 +現在その名前は"perl58.dll"である。これはPerl5.8用である。これを確かめるに +は、"gvim.exe"を開き、"perl\d*.dll\c"を検索する。 + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_unix.jax b/ja/os_unix.jax index 54e323e59..aab447cf1 100644 --- a/ja/os_unix.jax +++ b/ja/os_unix.jax @@ -1,10 +1,10 @@ COMMENT: OS特有情報:UNIX(BSD及びLinuxを含む) -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*os_unix.txt* For Vim version 6.3. Last change: 2003 Mar 15 +*os_unix.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -62,7 +62,7 @@ Vim で色を使う場合は次のような例を使うことができます(も 本物の色端末では ":highlight" コマンドを使うこともできます。 -"tools/Vim132" ファイルは Vim を vt100 もしくはそれによく似た端末上で 132カラ +"tools/vim132" ファイルは Vim を vt100 もしくはそれによく似た端末上で 132カラ ムモードで使うためのシェルスクリプトです。 vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_vms.jax b/ja/os_vms.jax index 85a598557..fbae8ef61 100644 --- a/ja/os_vms.jax +++ b/ja/os_vms.jax @@ -1,9 +1,10 @@ COMMENT: OS特有情報:VMS -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*os_vms.txt* For Vim version 6.3. Last change: 2004 May 16 +*os_vms.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIMリファレンスマニュアル @@ -52,17 +53,23 @@ VMSでvim.exeを構築するにはUNIXとextraアーカイブの両方が必要 コンパイル済みバイナリを利用するには、以下のどれか1つのアーカイブが必要: - vim-XX-exe-alpha-gui.zip Alpha GUI/Motif用実行可能ファイル - vim-XX-exe-alpha-gtk.zip Alpha GUI/GTK用実行可能ファイル - vim-XX-exe-alpha-term.zip Alpha console用実行可能ファイル + vim-XX-exe-ia64-gui.zip IA64 GUI/Motif用実行可能ファイル + vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK用実行可能ファイル + vim-XX-exe-ia64-term.zip IA64 console用実行可能ファイル + vim-XX-exe-axp-gui.zip Alpha GUI/Motif用実行可能ファイル + vim-XX-exe-axp-gtk.zip Alpha GUI/GTK用実行可能ファイル + vim-XX-exe-axp-term.zip Alpha console用実行可能ファイル vim-XX-exe-vax-gui.zip VAX GUI用実行可能ファイル vim-XX-exe-vax-term.zip VAX console用実行可能ファイル -そしてもちろん +そしてもちろん(これはなくてもよい) vim-XX-runtime.zip Vim用ランタイムファイル アーカイブには次のファイルが含まれる: vim.exe, ctags.exe, xxd.exe, mms_vim.exe +GTK 用実行可能ファイルでは Alpha と IA64 プラットフォームで利用可能な GTKLIB +が必要。 + ============================================================================== 3. コンパイル *vms-compiling* @@ -73,8 +80,8 @@ VMSでvim.exeを構築するにはUNIXとextraアーカイブの両方が必要 4. 問題点 *vms-problems* -コードはコンパイラDECCを用いて、Alpha及びVAXプラットホームの両Open VMSバージョ -ン 6.2 から 7.2 でテストされた。それらでは大きなも問題なく動作するだろう。 +コードはDEC Cコンパイラを用いて、Alpha, VAX, IA64 プラットホームのOpen VMSバー +ジョン 6.2 から 8.2 でテストされた。それらでは大きなも問題なく動作するだろう。 利用しているシステムにインクルードライブラリの欠けがある場合には、ファイル OS_VMS_CONF.Hを修正することで対応する。 @@ -83,6 +90,8 @@ OpenVMS版のPerlやPythonを入手する必要がある。それらのライブ トールしファイルOS_VMS.MMS内の適切な箇所を変更する。Vimの方には何の問題もない だろう。 +GTK, XPM のライブラリパスも MAKE_VMS.MMS で設定される。 + NOTE: VAXではDEC Cコンパイラを使えば問題ない。VAXCコンパイラはプリプロセッサ命 令の構文にANSI C非互換な部分がある。従ってプリプロセッサ部分をVAXCコンパイラの 解釈できる形へ変換するプログラムを使用しなければならない。詳細はINSTALLvms.txt @@ -122,10 +131,10 @@ Vimはドキュメントとランタイムファイルを保持するのに特 |- vim57 |----- doc |----- syntax - |- vim60 + |- vim62 |----- doc |----- syntax - |- vim61 + |- vim64 |----- doc |----- syntax vimrc (システム設定ファイル) @@ -238,6 +247,18 @@ SYS$STARTUP:SYLOGIN.COM にも追加する > これによりシステム全てのユーザから通常のVimが利用可能になるだろう。 +重要: OpenVMS (および大文字・小文字を区別しないシステム)上の Vim は、コマンド +ライン引数が小文字であると仮定する。コマンドライン引数が大文字であることを示す +には、記号 "/" を使わねばならない。 + +例: + > + vim -R filename ! -r と解釈され、スワップファイルを表示して終了する + vim -/r filename ! -R と解釈され、読み込み専用モードになる("view"と同 + じ) + vim -u <vimrc> ! -u と解釈され、.vimrc の代わりに <vimrc> を使う + vim -/u <gvimrc> ! -U と解釈され、.gvimrc の代わりに <gvimrc> を使う + ============================================================================== 7. GUIモードの論点 *vms-gui* @@ -254,6 +275,7 @@ Vim を GUI モードで「簡単に」起動することはできないが、 そして。GUI/GTK 対応の拡張機能を使って Vim を実行したいなら、GTK、もしくは GTK ランタイム (LIBGTK など) もインストール必要がある。 +LIBGTK は http://www.polarhome.com/vim/ からダウンロードできる。 1) VMS X/Motifコンソールを利用しているならば: このコマンドでVimを起動する: > @@ -282,9 +304,9 @@ NOTE: これらのうちからどれか1つを選ぶ必要がある。もっと を使うことである。GUI コンソールを使うように XDM クライアントから作業でき る。 -4) MS Windowや他の非Xウィンドウ環境の場合: +4) MS-Windowや他の非Xウィンドウ環境の場合: Xサーバを設定して2)と同様にする。 - MS WindowsではフリーのXサーバMIXや、Omni X等が利用可能である。 + MS-WindowsではフリーのXサーバMIXや、Omni X等が利用可能である。 また、DEC により提供されている eXcursion や ReflectionX という素晴らしい 商用製品もある。 @@ -652,8 +674,22 @@ VIMTUTOR.COM が用意されている。バイナリ配布物においては次 9. VMS関連の変更点 *vms-changes* +バージョン 7 +- 低レベルの文字入力を改良 (コンソールモードにのみ影響する) + (訳注: 翻訳対象から除外) +Version 6.4 (2005 Oct 15) +- GTKLIB and Vim build on IA64 +- colors in terminal mode +- syntax highlighting in terminal mode +- write problem fixed (extra CR) +- ESC and ESC sequence recognition in terminal mode +- make file changed to support new MMS version +- env variable expansion in path corrected +- printing problems corrected +- help text added for case insensitive arguments + Version 6.3 (2004 May 10) - Improved vms_read function - CTAGS v5.5.4 included diff --git a/ja/quotes.jax b/ja/quotes.jax index ebb6ab1a9..6df160e95 100644 --- a/ja/quotes.jax +++ b/ja/quotes.jax @@ -1,9 +1,9 @@ COMMENT: Vimについての引用集 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*quotes.txt* For Vim version 6.3. Last change: 2004 May 06 +*quotes.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIMリファレンスマニュアル by Bram Moolenaar @@ -23,7 +23,7 @@ WindowsのGUI志向の強い影響で、Viを使う人々は実は人間の姿 じゃないかと思っていた。でも一度試してみるとそのパワーに病みつきになって、今で はVim以外のソフトウェアでVimのようにキータイプするまでになってしまった。これ が、テキストを編集するあらゆるアプリケーションにVimを埋め込まれて欲しいと願う -理由。 (José Fonseca) +理由。 (Jos?? Fonseca) 私は12年来のemacsユーザだったが、相次ぐ互換性のないバージョンアップや、役立た ずの追加パッケージ群、一貫性のない操作方法などに嫌気がさして1年前にVimに乗り換 diff --git a/ja/recover.jax b/ja/recover.jax index 0232f07b5..04446562d 100644 --- a/ja/recover.jax +++ b/ja/recover.jax @@ -1,9 +1,10 @@ COMMENT: クラッシュ時の対応方法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*recover.txt* For Vim version 6.3. Last change: 2004 Apr 16 +*recover.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -11,7 +12,7 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> クラッシュ後のリカバリー *crash-recovery* -あなたが明日の朝までに終わらせなければならない文書のタイプピングに数時間を費や +あなたが明日の朝までに終わらせなければならない文書のタイピングに数時間を費や していたとき、悲劇があなたを襲う。: コンピュータがクラッシュした。 慌てないで! @@ -29,7 +30,7 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> Vimは変更した箇所をスワップファイルに蓄える。編集を開始したオリジナルのファイ ルとスワップファイルから、あなたのした作業は回復することができる。 -現在使用しているスワップファイルの名前は、次のコマンド確認できる: +現在使用しているスワップファイルの名前は、次のコマンドで確認できる: :sw[apname] *:sw* *:swapname* @@ -120,11 +121,36 @@ Amigaでは、回復可能なramディスクを使えるが、それが100%働 :pre[serve] 全てのバッファの全てのテキストをスワップファイルに書き 込む。回復のためにオリジナルが必要とされることはなくな る。 - {Vi: emergency exit} + このコマンドはカレントバッファにあるフラグを設定する。 + また、'cpoptions' にフラグ '&' が入っているならば、Vim + が終了するとき、このバッファのスワップファイルは削除さ + れず、バッファは読み込まれた状態のままになる。|cpo-&| + {Vi: might also exit} Vimのスワップファイルは最初の6文字で認識される: "b0VIM"。 この後に"3.0"などのバージョン番号が続く。 + +リンクとシンボリックリンク~ + +Unix では同一のファイルに2つの名前をつけることができる。それはハードリンクまた +はシンボリックリンク(symlink)を使って行う。 + +ハードリンクの場合、 Vim はそのファイルにつけられた他の名前を知ることができな +い。そのため、スワップファイルの名前は、そのファイルを開くときに使った名前に基 +づいてつけられる。 +そのファイルが別の名前でも開かれているかどうかのチェックは行わない。他のスワッ +プファイルを検出することはできないからである(ハードディスク全てを検索するとい +う方法は除く。それはとても遅くなるから)。 + +シンボリックリンクの場合、Vim はそのリンクが指す実際のファイルを見つけられる。 +スワップファイルの名前は実際の名前に基づいてつけられる。よって、ユーザがどんな +名前でそのファイルを開いたかは関係なく、スワップファイル名は同一になる。しかし +次のような例外がある: +- シンボリックリンクがなんらかの形でループになっているとき、エラーメッセージ + *E773* が表示され、変更されていないファイル名が使われる。普通にファイルを保 + 存することはできない。 + ============================================================================== 2. リカバリー *recovery* diff --git a/ja/sign.jax b/ja/sign.jax index 8c98f7fdc..64e88d415 100644 --- a/ja/sign.jax +++ b/ja/sign.jax @@ -1,9 +1,9 @@ COMMENT: グラフィカルマーク -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*sign.txt* For Vim version 6.3. Last change: 2004 May 22 +*sign.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIMリファレンスマニュアル by Gordon Prieur diff --git a/ja/starting.jax b/ja/starting.jax index ac88b187b..b239fd962 100644 --- a/ja/starting.jax +++ b/ja/starting.jax @@ -1,8 +1,8 @@ COMMENT: 起動方法、起動引数、起動設定ファイル -STATUS: finished 6.3.54 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*starting.txt* For Vim version 6.3. Last change: 2004 May 28 +*starting.txt* For Vim version 7.0. Last change: 2006 Apr 25 VIMリファレンスマニュアル by Bram Moolenaar @@ -259,9 +259,15 @@ VMSでは全てのオプション引数は小文字であるとみなされる い場合には|-s|を参照。|-s|として使うときには引数をとる。 端末の替わりにファイルからExコマンドを実行する場合に使用され る。ほとんどのプロンプトとメッセージは抑制される。警告とエラー - のメッセージも抑制される。":print"の出力は表示される。 - 'verbose'が0以外のときにはメッセージは抑制されずに表示される - (デバッグ用)。 + のメッセージも抑制される。 + 次のコマンドの出力は標準出力へ表示される: + :print + :list + :number + :set オプション値を表示するため。 + 'verbose'が0以外のときにはメッセージは抑制されずに標準エラー + 出力へ表示される(デバッグ用)。 + 'term' と $TERM は考慮されない。 Vimが停止しているようだったら"qa!<Enter>"と入力してみてほし い。Vimがユーザーの入力を待っているときでもプロンプトは表示さ れない。 @@ -307,6 +313,11 @@ VMSでは全てのオプション引数は小文字であるとみなされる きを行う度に情報が表示される。Vimの起動時と終了時の動作を調べ るときに便利である。{Vi にはない} +-V[N]{filename} + -V と同様で、さらに 'verbosefile' を {filename} に設定する。そ + の結果、メッセージは表示されずにファイル {filename} に書き出さ + れる。{filename} は数字で始まってはならない。 + *-D* -D デバッグする。スクリプトの最初のコマンドを実行するところからデ バッグを開始する。|debug-mode| @@ -361,6 +372,14 @@ VMSでは全てのオプション引数は小文字であるとみなされる *-O* -O[N] N個のウィンドウを垂直分割して開く。それ以外は|-o|と同じ。 -oと-Oが両方指定されたときは最後に指定された方を使用する。 + {Vi にはない} + + *-p* +-p[N] N 個のタブページを開く。[N] が省略されると、引数として与えられ + た各ファイルに対し1つずつタブページを開く。最大値は + 'tabpagemax' ページ(既定値は 10)である。引数よりも多くのタブペー + ジが作られる場合は、最後の数個のタブページは空ファイルを開く。 + |tabpage| も参照。 {Vi にはない} *-T* @@ -462,22 +481,24 @@ VMSでは全てのオプション引数は小文字であるとみなされる 照。|complex-repeat|も参照。 {Vi にはない} + *-w_nr* +-w {number} +-w{number} オプション 'window' を {number} に設定する。 + *-w* -w {scriptout} Vimを終了するまで、ユーザが入力した全部の文字が記録され、ファ イル{scriptout}に書き出される。これは"vim -s"や":source!"で読 込まれるスクリプトファイルを作成するのに役立つ。既にファイル "scriptout"が存在する場合には、そのファイルに追加保存する。 - |complex-repeat|も参照。{Vi にはない} + |complex-repeat|も参照。 + {scriptout} は数字で始まってはならない。 + {Vi にはない} *-W* -W {scriptout} -wに似ているが、アペンド(追加)せずに、既にあるファイルを上書き する。 {Vi にはない} - *-w_nr* --w{number} なにもしない。これはViとの互換性のためにある。Viではオプション - 'window'が設定されるが、Vimでは実装されていない。 - --remote [+{cmd}] {file} ... サーバとして機能している他のVimで{file}を開く。 この引数の前にファイルを指定することはできない。 @@ -680,10 +701,14 @@ Evimでは以下のオプションが標準設定から変更される: る。MS-DOSとWin32ではSHELLが設定されていない場合COMSPECの値が使用され る。 環境変数TERMが存在するならば、オプション'term'を設定するのに使われる。 + しかし、後で GUI を開始するときに 'term' は変更される(下のステップ 8 + を参照。 2. 引数を処理する Vimを起動するときに指定したオプション引数やファイル名を調べる。指定さ れたファイルのバッファを作成する(まだ読み込まない)。 + 引数 |-V| を使うと、初期化処理のデバッグ用にこれ以降で起こることを表示 + したりログに書き出したりできる。 3. 環境変数とファイルのExコマンドを実行する 環境変数の値は一つのExコマンドラインとして読まれるので、複数のコマンド @@ -718,10 +743,12 @@ Evimでは以下のオプションが標準設定から変更される: る。Note: このファイルは'compatible'モードであっても読み込まれる。 'compatible'の自動リセットはこれが終わった後に行われることになってい る。必要ならば":set nocp"コマンドを追加する。 + Macintosh では $VIMRUNTIME/macmap.vim が読み込まれる。 *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* c. 初期化のために4つの場所が検索される。最初に見つかったものが使用され、 - 残りは無視される。 + 残りは無視される。ここまでで環境変数 $MYVIMRC が設定されていないなら、 + $MYVIMRCに最初にみつかったファイルが設定される。 - 環境変数VIMINIT(|compatible-default|も参照) (*) その内容はExコマンドとして解釈される。 - ユーザvimrcファイル: @@ -730,7 +757,7 @@ Evimでは以下のオプションが標準設定から変更される: "home:.vimrc" (for Amiga) (*) "$VIM/.vimrc" (for OS/2 and Amiga) (*) "$HOME/_vimrc" (for MS-DOS and Win32) (*) - "$VIM\_vimrc" (for MS-DOS and Win32) (*) + "$VIM/_vimrc" (for MS-DOS and Win32) (*) Note: Unix, OS/2そしてAmigaでは、".vimrc"がなかった場合には、 MS-DOS互換のファイルシステムを使用することを考え、"_vimrc"も試 みられる。MS-DOSとWin32では"_vimrc"を探したあとで、ロングファ @@ -741,7 +768,8 @@ Evimでは以下のオプションが標準設定から変更される: - 環境変数EXINIT。 その内容はExコマンドとして解釈される。 - ユーザのexrcファイル。vimrcと同じだが、vimrcがexrcによって置き換え - られている。(*)の注釈は適用されない。 + られている。しかし ".exrc" と "_exrc" のどちらか1つだけが使われる。 + これはシステムによる。(*)の注釈は適用されない。 d. 'exrc'オプションがオン(初期状態ではオフ)の場合、現在のディレクトリで4 つのファイルが検索される。最初に見つかったものだけが使用され、残りは無 @@ -752,25 +780,25 @@ Evimでは以下のオプションが標準設定から変更される: ".vimrc" (for MS-DOS and Win32) (*) - The file ".exrc" (for Unix, Amiga and OS/2) "_exrc" (for MS-DOS and Win32) - - The file "_exrc" (for Unix, Amiga and OS/2) - ".exrc" (for MS-DOS and Win32) (*) このファイルを使用するか環境変数を使用した場合、自動的に'compatible' オプションがオフに設定される。|compatible-default|を参照。 4. プラグインスクリプトを読み込む *load-plugins* 次のコマンドと同じことを実行する: > - :runtime! plugin/*.vim + :runtime! plugin/**/*.vim < オプション'runtimepath'に指定された各ディレクトリのサブディレクトリ "plugin"にある拡張子が".vim"となっているファイルを実行する(各ディレク - トリごとに名前順で実行される)。 + トリごとに名前順で実行される)。サブディレクトリに対しても再帰的に検索 + される。 次の場合にはプラグインを読み込まない: - vimrcファイルでオプション'loadplugins'がオフに設定された。 - 起動時の引数に|--noplugin|が指定された。 - 起動時の引数に"-u NONE"が指定された。 - |+eval|の機能を無効にしてVimをコンパイルした。 Note: 引数に"-c set noloadplugins"と指定しても意味がない。このコマンド - はこの時点ではまだ実行されない。 + はこの時点ではまだ実行されない。"--cmd 'set noloadplugins'" とすればよ + い。|--cmd| 5. 'shellpipe'と'shellredir'を設定する それ以前に設定されていなければ、'shell'オプションに従って'shellpipe'と @@ -795,7 +823,9 @@ Evimでは以下のオプションが標準設定から変更される: に失敗するとVimは終了する。 11. 全てのウィンドウを開く - |-o|フラグが与えられ場合、ウィンドウが開く(しかしまだ表示されない)。 + |-o|フラグが与えられた場合、ウィンドウが開く(しかしまだ表示されない)。 + |-p|フラグが与えられた場合、タブページが作られる(しかしまだ表示されな + い)。 スクリーンが切り替えられると、描画が始まる。 "-q"フラグがVimに与えられた場合、最初のエラーにジャンプする。全ての バッファがロードされる。 @@ -855,7 +885,8 @@ Vimが起動すると、オプション'compatible'がオンに設定される が設定される。これには副作用があって、設定が変更されてしまうオプションがある ('compatible'参照)。しかしその時点でユーザが値を設定していないオプションだけが 変更される。これはVimの起動時に'compatible'が設定された場合と同様である。 -Note: これはシステムのvimrcファイルが存在しても起こらない。 +Note: これはシステムのvimrcファイルが存在しても起こらない。gvimrcに対しても同 +様である。最初に見つかった vimrc、gvimrc が $MYVIMRC、$MYGVIMRC に設定される。 'compatible'を.vimrcで設定すると副作用が発生する。マッピングは見つかった時点で 解釈されるので、"<CR>"のようなものを使う時に違いが生じる。もしもマッピングが @@ -992,6 +1023,11 @@ Unixでコンパイル時に$VIMRUNTIMEの初期値を設定した場合(":versi の値を変更するには":let"コマンドを次のように使う: > :let $VIMRUNTIME = "/home/piet/vim/vim54" +シェル内で $VIMRUNTIME の値が必要な場合(例えば、ヘルプファイルを grep するスク +リプトなど)は、次のようにすれば得られる: > + + VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' ` + ============================================================================== 6. サスペンド *suspend* @@ -1001,6 +1037,7 @@ CTRL-Z ":stop"のようにVimをサスペンドする。 とコマンドラインモードでは、CTRL-Zは通常のキャラクタ文 字として入力・挿入される。ビジュアルモードで使用したと きはサスペンドから復帰するとノーマルモードになる。 + Note: CTRL-Z がアンドゥになる場合は |mswin.vim| を参照。 :sus[pend][!] or *:sus* *:suspend* *:st* *:stop* @@ -1075,6 +1112,7 @@ X-windowsではVimをサスペンドするとセレクションの所有権が 移動する。オートコマンド|autocommand|やモードライン|modeline|も、同じ方法を 使って設定することができる。 + *vimrc-option-example* vimrcにオプションの設定を1つだけ加えるには次のようにする: 1. Vimでvimrcファイルを開く。 2. 期待どおりになるようにオプションを設定する。例えば、'guifont'を設定していろ @@ -1083,6 +1121,7 @@ vimrcにオプションの設定を1つだけ加えるには次のようにす 例えば、オプション'guifont'の設定を加えるには: > o:set guifont=<C-R>=&guifont<CR><Esc> < [<C-R>はCTRL-R、<CR>はエンターキー、<Esc>はエスケープキー] + 特別な文字(特にスペース)はエスケープする必要がある。 Note: .vimrcファイルを作成するときにはオプション'compatible'が持つ副作用の影響 に注意する必要がある。|'compatible'|を参照。 @@ -1161,6 +1200,16 @@ Note: .vimrcファイルを作成するときにはオプション'compatible' :nmap <F2> :wa<Bar>exe "mksession! " . v:this_session<CR>:so ~/sessions/ これは現在のセッションを保存してから、別のセッションを開こうとするものである。 +'sessionoptions' から "tabpages" が除かれていない限り、セッションはすべてのタ +ブページを含む。|tab-page| + +セッションファイルが読み込まれると、自動コマンドイベント |SessionLoadPost| が +発生する。 + *SessionLoad-variable* +セッションファイルを読み込んでいる間、グローバル変数 SessionLoad は 1 になる。 +プラグインはこれを使ってイベント SessionLoadPost が発生するまで、なんらかの作 +業を後回しにすることができる。 + *:mkvie* *:mkview* :mkvie[w][!] [file] 現在のウィンドウの状態を復元するためのVimスクリプトを 作成する。 From 85264d1e84ed1aa9be1003a8154ee83cdb3b092b Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Thu, 12 Oct 2006 14:35:45 +0000 Subject: [PATCH 065/783] fix: update if_sniff, if_cscop, mlang, digraph, os_msdos, if_tcl git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@65 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/digraph.txt | 35 +++++++- en/if_cscop.txt | 25 ++++-- en/if_sniff.txt | 8 +- en/if_tcl.txt | 33 ++++++-- en/mlang.txt | 2 +- en/os_msdos.txt | 54 +++++++------ ja/digraph.jax | 207 +++++++++++++++++++++++++++--------------------- ja/if_cscop.jax | 18 ++++- ja/if_sniff.jax | 4 +- ja/if_tcl.jax | 26 +++++- ja/mlang.jax | 6 +- ja/os_msdos.jax | 11 ++- 12 files changed, 278 insertions(+), 151 deletions(-) diff --git a/en/digraph.txt b/en/digraph.txt index 2dcb556f9..ec5aec5a5 100644 --- a/en/digraph.txt +++ b/en/digraph.txt @@ -1,4 +1,4 @@ -*digraph.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*digraph.txt* For Vim version 7.0. Last change: 2006 Apr 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -28,7 +28,8 @@ An alternative is using the 'keymap' option. *E104* *E39* :dig[raphs] {char1}{char2} {number} ... Add digraph {char1}{char2} to the list. {number} is - the decimal representation of the character. + the decimal representation of the character. Normally + it is the Unicode character, see |digraph-encoding|. Example: > :digr e: 235 a: 228 < Avoid defining a digraph with '_' (underscore) as the @@ -48,7 +49,24 @@ In the middle of each column is the resulting character. This may be mangled if you look at it on a system that does not support digraphs or if you print this file. -The decimal number is the number of the character. + *digraph-encoding* +The decimal number normally is the Unicode number of the character. Note that +the meaning doesn't change when 'encoding' changes. The character will be +converted from Unicode to 'encoding' when needed. This does require the +conversion to be available, it might fail. + +When Vim was compiled without the +multi_byte feature, you need to specify the +character in the encoding given with 'encoding'. You might want to use +something like this: > + + if has("multi_byte") + digraph oe 339 + elseif &encoding == "iso-8859-15" + digraph oe 189 + endif + +This defines the "oe" digraph for a character that is number 339 in Unicode +and 189 in latin9 (iso-8859-15). ============================================================================== 2. Using digraphs *digraphs-use* @@ -142,6 +160,15 @@ Example: a: is These are the RFC1345 digraphs for the one-byte characters. See the output of ":digraphs" for the others. The characters above 255 are only available when Vim was compiled with the |+multi_byte| feature. + +EURO + +Exception: RFC1345 doesn't specify the euro sign. In Vim the digraph =e was +added for this. Note the difference between latin1, where the digraph Cu is +used for the currency sign, and latin9 (iso-8859-15), where the digraph =e is +used for the euro sign, while both of them are the character 164, 0xa4. For +compatibility with zsh Eu can also be used for the euro sign. + *digraph-table* char digraph hex dec official name ~ ^@ NU 0x00 0 NULL (NUL) @@ -166,7 +193,7 @@ char digraph hex dec official name ~ ^S D3 0x13 19 DEVICE CONTROL THREE (DC3) ^T D4 0x14 20 DEVICE CONTROL FOUR (DC4) ^U NK 0x15 21 NEGATIVE ACKNOWLEDGE (NAK) -^V SY 0x16 22 SYNCRONOUS IDLE (SYN) +^V SY 0x16 22 SYNCHRONOUS IDLE (SYN) ^W EB 0x17 23 END OF TRANSMISSION BLOCK (ETB) ^X CN 0x18 24 CANCEL (CAN) ^Y EM 0x19 25 END OF MEDIUM (EM) diff --git a/en/if_cscop.txt b/en/if_cscop.txt index 0b8a89eea..3a9de57cd 100644 --- a/en/if_cscop.txt +++ b/en/if_cscop.txt @@ -1,4 +1,4 @@ -*if_cscop.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*if_cscop.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Andy Kahn @@ -208,6 +208,11 @@ The available subcommands are: USAGE :cs show + *:lcscope* *:lcs* +This command is same as the ":cscope" command, except when the +'cscopequickfix' option is set, the location list for the current window is +used instead of the quickfix list to show the cscope results. + *:cstag* *E257* *E562* If you use cscope as well as ctags, |:cstag| allows you to search one or the other before making a jump. For example, you can choose to first @@ -239,14 +244,15 @@ started will have no effect! *cscopequickfix* *csqf* *E469* {not available when compiled without the |+quickfix| feature} 'cscopequickfix' specifies whether to use quickfix window to show cscope -results. This is a list of comma-separated values. Each item consists of +results. This is a list of comma-separated values. Each item consists of |cscope-find| command (s, g, d, c, t, e, f or i) and flag (+, - or 0). '+' indicates that results must be appended to quickfix window, '-' implies previous results clearance, '0' or command absence - don't use -quickfix. Search is performed from start until first command occurrence. -The default value is "" (don't use quickfix anyway). The following value -seems to be useful: "s-,c-,d-,i-,t-,e-". - +quickfix. Search is performed from start until first command occurrence. +The default value is "" (don't use quickfix anyway). The following value +seems to be useful: > + :set cscopequickfix=s-,c-,d-,i-,t-,e- +< *cscopetag* *cst* If 'cscopetag' set, the commands ":tag" and CTRL-] as well as "vim -t" will always use |:cstag| instead of the default :tag behavior. Effectively, by @@ -335,6 +341,9 @@ cscope version for Win32 see: http://iamphet.nm.ru/cscope/index.html +The DJGPP-built version from http://cscope.sourceforge.net is known to not +work with Vim. + There are a couple of hard-coded limitations: 1. The maximum number of cscope connections allowed is 8. Do you @@ -468,7 +477,7 @@ cscope within Vim to him. *cscope-win32* For a cscope version for Win32 see: http://iamphet.nm.ru/cscope/index.html -Win32 support was added by Sergey Khorev <khorev@softlab.ru>. Contact him -if you have Win32-specific issues. +Win32 support was added by Sergey Khorev <sergey.khorev@gmail.com>. Contact +him if you have Win32-specific issues. vim:tw=78:ts=8:ft=help:norl: diff --git a/en/if_sniff.txt b/en/if_sniff.txt index 77a3780da..972776054 100644 --- a/en/if_sniff.txt +++ b/en/if_sniff.txt @@ -1,4 +1,4 @@ -*if_sniff.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*if_sniff.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL @@ -45,7 +45,7 @@ edit source code. On the other hand, you can send queries to SNiFF+ with the :sni[ff] Display all possible requests and the connection status -Most requests require a symbol (identifier) as parameter. If it is omitted, +Most requests require a symbol (identifier) as parameter. If it is omitted, Vim will use the current word under the cursor. The available requests are listed below: @@ -54,7 +54,7 @@ request mapping description connect sc Establish connection with SNiFF+. Make sure SNiFF+ is prepared for this in the Preferences -disconnect sq Disconnect from SNiFF+. You can reconnect any +disconnect sq Disconnect from SNiFF+. You can reconnect any time with :sniff connect (or 'sc') toggle st Toggle between implementation and definition file @@ -80,7 +80,7 @@ show-docu sd Show documentation of symbol gen-docu sD Generate documentation of symbol The mappings are defined in a file 'sniff.vim', which is part of every SNiFF+ -product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim +product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim connects to SNiFF+. ============================================================================== diff --git a/en/if_tcl.txt b/en/if_tcl.txt index e588d45ff..b3c81b80b 100644 --- a/en/if_tcl.txt +++ b/en/if_tcl.txt @@ -1,4 +1,4 @@ -*if_tcl.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*if_tcl.txt* For Vim version 7.0. Last change: 2006 Mar 06 VIM REFERENCE MANUAL by Ingo Wilken @@ -14,6 +14,7 @@ The Tcl Interface to Vim *tcl* *Tcl* *TCL* 6. Miscellaneous; Output from Tcl |tcl-misc| |tcl-output| 7. Known bugs & problems |tcl-bugs| 8. Examples |tcl-examples| +9. Dynamic loading |tcl-dynamic| {Vi does not have any of these commands} *E280* *E281* @@ -36,7 +37,7 @@ comments, ideas etc to <Ingo.Wilken@informatik.uni-oldenburg.de> wasn't compiled in. To avoid errors, see |script-here|. -{endmarker} must NOT be preceded by any white space. If {endmarker} is +{endmarker} must NOT be preceded by any white space. If {endmarker} is omitted from after the "<<", a dot '.' must be used after {script}, like for the |:append| and |:insert| commands. This form of the |:tcl| command is mainly useful for including tcl code in Vim @@ -132,7 +133,8 @@ Commands: Evaluates the expression {expr} using vim's internal expression evaluator (see |expression|). Any expression that queries a buffer or window property uses the current buffer/current window. Returns - the result as a string. + the result as a string. A |List| is turned into a string by joining + the items and inserting line breaks. Examples: > set perl_available [::vim::expr has("perl")] < See also |tcl-window-expr| and |tcl-buffer-expr|. @@ -152,7 +154,7 @@ Commands: ::vim::window {option} *tcl-window* Provides access to vim windows. Currently only the "list" option is - implemented. This creates a window command (see |tcl-window-cmds|) for + implemented. This creates a window command (see |tcl-window-cmds|) for each window, and returns a list of the command names as the result. Example: > set wins [::vim::window list] @@ -227,7 +229,7 @@ The ::vim::current(window) variable contains the name of the window command for the current window. A window command is automatically deleted when the corresponding vim window is closed. -Lets assume the name of the window command is stored in the Tcl variable "win", +Let's assume the name of the window command is stored in the Tcl variable "win", i.e. "$win" calls the command. The following options are available: > $win buffer # Create Tcl command for window's buffer. @@ -306,7 +308,7 @@ changed, all marks in the buffer are automatically adjusted. Any changes to the buffer's contents made by Tcl commands can be undone with the "undo" vim command (see |undo|). -Lets assume the name of the buffer command is stored in the Tcl variable "buf", +Let's assume the name of the buffer command is stored in the Tcl variable "buf", i.e. "$buf" calls the command. The following options are available: > $buf append {n} {str} # Append a line to buffer, after line {n}. @@ -497,7 +499,7 @@ This procedure runs an ex command on each buffer (idea stolen from Ron Aaron): } Use it like this: :tcl eachbuf %s/foo/bar/g -Be careful with Tcl's string and backslash substitution, tough. If in doubt, +Be careful with Tcl's string and backslash substitution, tough. If in doubt, surround the ex command with curly braces. @@ -508,5 +510,22 @@ startup file (usually "~/.vimrc" on Unix): tclfile ~/.vimrc.tcl endif +============================================================================== +9. Dynamic loading *tcl-dynamic* + +On MS-Windows the Tcl library can be loaded dynamically. The |:version| +output then includes |+tcl/dyn|. + +This means that Vim will search for the Tcl DLL file only when needed. When +you don't use the Tcl interface you don't need it, thus you can use Vim +without this DLL file. + +To use the Tcl interface the Tcl DLL must be in your search path. In a +console window type "path" to see what directories are used. + +The name of the DLL must match the Tcl version Vim was compiled with. +Currently the name is "tcl83.dll". That is for Tcl 8.3. To know for sure +edit "gvim.exe" and search for "tcl\d*.dll\c". + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/en/mlang.txt b/en/mlang.txt index e19692ea0..c1ef8d502 100644 --- a/en/mlang.txt +++ b/en/mlang.txt @@ -1,4 +1,4 @@ -*mlang.txt* For Vim version 6.3. Last change: 2004 Feb 24 +*mlang.txt* For Vim version 7.0. Last change: 2004 Feb 24 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/os_msdos.txt b/en/os_msdos.txt index 52d050193..9a255d070 100644 --- a/en/os_msdos.txt +++ b/en/os_msdos.txt @@ -1,4 +1,4 @@ -*os_msdos.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*os_msdos.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -97,7 +97,7 @@ write a file, and for filter commands. Or Vim runs out of memory, and random problems may result. The Dos32 version cannot have an unlimited number of files open at any one -time. The limit depends on the setting of FILES in your CONFIG.SYS. This +time. The limit depends on the setting of FILES in your CONFIG.SYS. This defaults to 15; if you need to edit a lot of files, you should increase this. If you do not set FILES high enough, you can get strange errors, and shell commands may cause a crash! @@ -207,18 +207,24 @@ in such a way that it becomes too long may give unexpected results. 8. Symbolically linked files *msdos-linked-files* When using Vim to edit a symbolically linked file on a unix NFS file server, -you may run into problems. -When writing the file, Vim does not "write through" the symlink. Instead, it -deletes the symbolic link and creates a new file in its place. - On Unix, Vim is prepared for links (symbolic or hard). A backup copy of -the original file is made and then the original file is overwritten. This -assures that all properties of the file remain the same. On non-Unix systems, -the original file is renamed and a new file is written. Only the protection -bits are set like the original file. However, this doesn't work properly when +you may run into problems. When writing the file, Vim does not "write +through" the symlink. Instead, it deletes the symbolic link and creates a new +file in its place. + +On Unix, Vim is prepared for links (symbolic or hard). A backup copy of the +original file is made and then the original file is overwritten. This assures +that all properties of the file remain the same. On non-Unix systems, the +original file is renamed and a new file is written. Only the protection bits +are set like the original file. However, this doesn't work properly when working on an NFS-mounted file system where links and other things exist. The only way to fix this in the current version is not making a backup file, by ":set nobackup nowritebackup" |'writebackup'| +A similar problem occurs when mounting a Unix filesystem through Samba or a +similar system. When Vim creates a new file it will get the default user ID +for the mounted file system. This may be different from the original user ID. +To avoid this set the 'backupcopy' option to "yes". + ============================================================================== 9. Copy/paste in a dos box *msdos-copy-paste* @@ -235,7 +241,7 @@ In other versions, the following can be used. How to copy/paste text from/to vim in a dos box: -1) to get VIM to run in a window, instead of full screen, press alt+enter. +1) To get VIM to run in a window, instead of full screen, press alt+enter. This toggles back and forth between full screen and a dos window. NOTE: In Windows 95 you must have the property "Fast Pasting" unchecked! In the properties dialog box for the MS-DOS window, go to "MS-DOS @@ -245,25 +251,25 @@ How to copy/paste text from/to vim in a dos box: 2) To paste something _into_ Vim, put Vim in insert mode. -3) put the text you want to paste on the windows clipboard. +3) Put the text you want to paste on the windows clipboard. -4) Click the control box in the upper left of the Vim window. (This looks - like a big minus sign). If you don't want to use the mouse, you can get +4) Click the control box in the upper left of the Vim window. (This looks + like a big minus sign.) If you don't want to use the mouse, you can get this with alt+spacebar. -5) on the resulting dropdown menu choose "Edit" -6) on the child dropdown menu choose "Paste" +5) On the resulting dropdown menu choose "Edit". +6) On the child dropdown menu choose "Paste". To copy something from the Vim window to the clipboard, -1) select the control box to get the control drop down menu. -2) select "Edit". -3) select "Mark" -4) using either the keys or the mouse, select the part of the Vim window that - you want to copy. To use the keys, use the arrow keys, and hold down shift +1) Select the control box to get the control drop down menu. +2) Select "Edit". +3) Select "Mark". +4) Using either the keys or the mouse, select the part of the Vim window that + you want to copy. To use the keys, use the arrow keys, and hold down shift to extend the selection. -5) when you've completed your selection, press 'enter.' The selection - is now in the windows clipboard. By the way, this can be any - rectangular selection, for example columns 4-25 in rows 7-10. It can +5) When you've completed your selection, press 'enter'. The selection + is now in the windows clipboard. By the way, this can be any + rectangular selection, for example columns 4-25 in rows 7-10. It can include anything in the VIM window: the output of a :!dir, for example. diff --git a/ja/digraph.jax b/ja/digraph.jax index 8901f1060..1b5d5fa35 100644 --- a/ja/digraph.jax +++ b/ja/digraph.jax @@ -1,9 +1,10 @@ COMMENT: 合わせ文字の解説(設定・入力方法) -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*digraph.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*digraph.txt* For Vim version 7.0. Last change: 2006 Apr 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -35,7 +36,8 @@ DIGRAPHSは、通常のキーボードから普通に入力できないキャラ *E104* *E39* :dig[raphs] {char1}{char2} {number} ... DIGRAPH{char1}{char2}をリストに追加する。{number}は - そのキャラクタを表す10進表記。 + そのキャラクタを表す10進表記。通常、文字はユニコードで + ある。|digraph-encoding| を参照。 例: > :digr e: 235 a: 228 < DIGRAPHの定義をを無効にするには最初の文字に @@ -46,7 +48,7 @@ Vimは普通|+digraphs|特性を持ってコンパイルされる。この特性 ":digraph"コマンドはエラーメッセージを表示する。 ":digraphs"の出力例: > - TH Þ 222 ss ß 223 a! à 224 a' á 225 a> â 226 a? ã 227 a: ä 228 + TH ?? 222 ss ?? 223 a! ?? 224 a' ?? 225 a> ?? 226 a? ?? 227 a: ?? 228 各欄の最初の2つのキャラクタは、そのDIGRAPHを入力するために打たねばならない キャラクタである。 @@ -57,6 +59,25 @@ Vimは普通|+digraphs|特性を持ってコンパイルされる。この特性 10進数はそのキャラクタのASCIIコードである。 + *digraph-encoding* +10進数の数字は通常、その文字のユニコード番号である。Note その数字の意味は +'encoding' が変わっても変わらない。必要ならば、その文字がユニコードから +'encoding' へと変換される。そのためには変換が有効になっていなければならない。 +そうでないと処理が失敗する。 + +Vim が +multi_byte 機能なしでコンパイルされている場合は、その文字を +'encoding' と同じエンコーディングで指定しなければならない。次のようにするとよ +いだろう: > + + if has("multi_byte") + digraph oe 339 + elseif &encoding == "iso-8859-15" + digraph oe 189 + endif + +これは、ユニコードで番号339、latin9 (iso-8859-15) で番号189の文字に対して +DIGRAPH "oe" を定義している。 + ============================================================================== 2. DIGRAPHSを使う *digraphs-use* @@ -139,11 +160,19 @@ Vimには標準のDIGRAPHキャラクタがある。":digraphs"の出力と見 Five 5 Hiragana Six 6 Katakana -例: a: is ä and o: is ö +例: a: is ?? and o: is ?? これらはRFC1345における1バイト文字用のものです。他は":digraphs"の出力を見て ください。255よりも大きい値の文字はVimが|+multi_byte|付きでコンパイルされた ときのみ有効です。 + +ユーロ + +例外: RFC1345 はユーロ記号を定めていない。Vim は DIGRAPH =e をユーロ記号にあて +ている。latin1 では DIGRAPH Cu が通貨記号になっていて、latin9 (iso-8859-15) で +は DIGRAPH =e がユーロ記号になっている。どちらでもその文字は164, 0xa4 である。 +zsh との互換性のために、Eu でもユーロ記号になる。 + *digraph-table* char digraph hex dec official name ~ ^@ NU 0x00 0 NULL (NUL) @@ -225,100 +254,100 @@ $ DO 0x24 36 DOLLAR SIGN ~^ PM 0x9e 158 PRIVACY MESSAGE (PM) ~_ AC 0x9f 159 APPLICATION PROGRAM COMMAND (APC) | NS 0xa0 160 NO-BREAK SPACE -¡ !I 0xa1 161 INVERTED EXCLAMATION MARK +?? !I 0xa1 161 INVERTED EXCLAMATION MARK ¢ Ct 0xa2 162 CENT SIGN £ Pd 0xa3 163 POUND SIGN -¤ Cu 0xa4 164 CURRENCY SIGN -¥ Ye 0xa5 165 YEN SIGN -¦ BB 0xa6 166 BROKEN BAR +?? Cu 0xa4 164 CURRENCY SIGN +?? Ye 0xa5 165 YEN SIGN +?? BB 0xa6 166 BROKEN BAR § SE 0xa7 167 SECTION SIGN ¨ ': 0xa8 168 DIAERESIS -© Co 0xa9 169 COPYRIGHT SIGN -ª -a 0xaa 170 FEMININE ORDINAL INDICATOR -« << 0xab 171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +?? Co 0xa9 169 COPYRIGHT SIGN +?? -a 0xaa 170 FEMININE ORDINAL INDICATOR +?? << 0xab 171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK ¬ NO 0xac 172 NOT SIGN -­ -- 0xad 173 SOFT HYPHEN -® Rg 0xae 174 REGISTERED SIGN -¯ 'm 0xaf 175 MACRON +?? -- 0xad 173 SOFT HYPHEN +?? Rg 0xae 174 REGISTERED SIGN +?? 'm 0xaf 175 MACRON ° DG 0xb0 176 DEGREE SIGN ± +- 0xb1 177 PLUS-MINUS SIGN -² 2S 0xb2 178 SUPERSCRIPT TWO -³ 3S 0xb3 179 SUPERSCRIPT THREE +?? 2S 0xb2 178 SUPERSCRIPT TWO +?? 3S 0xb3 179 SUPERSCRIPT THREE ´ '' 0xb4 180 ACUTE ACCENT -µ My 0xb5 181 MICRO SIGN +?? My 0xb5 181 MICRO SIGN ¶ PI 0xb6 182 PILCROW SIGN -· .M 0xb7 183 MIDDLE DOT -¸ ', 0xb8 184 CEDILLA -¹ 1S 0xb9 185 SUPERSCRIPT ONE -º -o 0xba 186 MASCULINE ORDINAL INDICATOR -» >> 0xbb 187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -¼ 14 0xbc 188 VULGAR FRACTION ONE QUARTER -½ 12 0xbd 189 VULGAR FRACTION ONE HALF -¾ 34 0xbe 190 VULGAR FRACTION THREE QUARTERS -¿ ?I 0xbf 191 INVERTED QUESTION MARK -À A! 0xc0 192 LATIN CAPITAL LETTER A WITH GRAVE -Á A' 0xc1 193 LATIN CAPITAL LETTER A WITH ACUTE -Â A> 0xc2 194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX -Ã A? 0xc3 195 LATIN CAPITAL LETTER A WITH TILDE -Ä A: 0xc4 196 LATIN CAPITAL LETTER A WITH DIAERESIS -Å AA 0xc5 197 LATIN CAPITAL LETTER A WITH RING ABOVE -Æ AE 0xc6 198 LATIN CAPITAL LETTER AE -Ç C, 0xc7 199 LATIN CAPITAL LETTER C WITH CEDILLA -È E! 0xc8 200 LATIN CAPITAL LETTER E WITH GRAVE -É E' 0xc9 201 LATIN CAPITAL LETTER E WITH ACUTE -Ê E> 0xca 202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX -Ë E: 0xcb 203 LATIN CAPITAL LETTER E WITH DIAERESIS -Ì I! 0xcc 204 LATIN CAPITAL LETTER I WITH GRAVE -Í I' 0xcd 205 LATIN CAPITAL LETTER I WITH ACUTE -Î I> 0xce 206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX -Ï I: 0xcf 207 LATIN CAPITAL LETTER I WITH DIAERESIS -Ð D- 0xd0 208 LATIN CAPITAL LETTER ETH (Icelandic) -Ñ N? 0xd1 209 LATIN CAPITAL LETTER N WITH TILDE -Ò O! 0xd2 210 LATIN CAPITAL LETTER O WITH GRAVE -Ó O' 0xd3 211 LATIN CAPITAL LETTER O WITH ACUTE -Ô O> 0xd4 212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX -Õ O? 0xd5 213 LATIN CAPITAL LETTER O WITH TILDE -Ö O: 0xd6 214 LATIN CAPITAL LETTER O WITH DIAERESIS +?? .M 0xb7 183 MIDDLE DOT +?? ', 0xb8 184 CEDILLA +?? 1S 0xb9 185 SUPERSCRIPT ONE +?? -o 0xba 186 MASCULINE ORDINAL INDICATOR +?? >> 0xbb 187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +?? 14 0xbc 188 VULGAR FRACTION ONE QUARTER +?? 12 0xbd 189 VULGAR FRACTION ONE HALF +?? 34 0xbe 190 VULGAR FRACTION THREE QUARTERS +?? ?I 0xbf 191 INVERTED QUESTION MARK +?? A! 0xc0 192 LATIN CAPITAL LETTER A WITH GRAVE +?? A' 0xc1 193 LATIN CAPITAL LETTER A WITH ACUTE +?? A> 0xc2 194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX +?? A? 0xc3 195 LATIN CAPITAL LETTER A WITH TILDE +?? A: 0xc4 196 LATIN CAPITAL LETTER A WITH DIAERESIS +?? AA 0xc5 197 LATIN CAPITAL LETTER A WITH RING ABOVE +?? AE 0xc6 198 LATIN CAPITAL LETTER AE +?? C, 0xc7 199 LATIN CAPITAL LETTER C WITH CEDILLA +?? E! 0xc8 200 LATIN CAPITAL LETTER E WITH GRAVE +?? E' 0xc9 201 LATIN CAPITAL LETTER E WITH ACUTE +?? E> 0xca 202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX +?? E: 0xcb 203 LATIN CAPITAL LETTER E WITH DIAERESIS +?? I! 0xcc 204 LATIN CAPITAL LETTER I WITH GRAVE +?? I' 0xcd 205 LATIN CAPITAL LETTER I WITH ACUTE +?? I> 0xce 206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX +?? I: 0xcf 207 LATIN CAPITAL LETTER I WITH DIAERESIS +?? D- 0xd0 208 LATIN CAPITAL LETTER ETH (Icelandic) +?? N? 0xd1 209 LATIN CAPITAL LETTER N WITH TILDE +?? O! 0xd2 210 LATIN CAPITAL LETTER O WITH GRAVE +?? O' 0xd3 211 LATIN CAPITAL LETTER O WITH ACUTE +?? O> 0xd4 212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX +?? O? 0xd5 213 LATIN CAPITAL LETTER O WITH TILDE +?? O: 0xd6 214 LATIN CAPITAL LETTER O WITH DIAERESIS × *X 0xd7 215 MULTIPLICATION SIGN -Ø O/ 0xd8 216 LATIN CAPITAL LETTER O WITH STROKE -Ù U! 0xd9 217 LATIN CAPITAL LETTER U WITH GRAVE -Ú U' 0xda 218 LATIN CAPITAL LETTER U WITH ACUTE -Û U> 0xdb 219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX -Ü U: 0xdc 220 LATIN CAPITAL LETTER U WITH DIAERESIS -Ý Y' 0xdd 221 LATIN CAPITAL LETTER Y WITH ACUTE -Þ TH 0xde 222 LATIN CAPITAL LETTER THORN (Icelandic) -ß ss 0xdf 223 LATIN SMALL LETTER SHARP S (German) -à a! 0xe0 224 LATIN SMALL LETTER A WITH GRAVE -á a' 0xe1 225 LATIN SMALL LETTER A WITH ACUTE -â a> 0xe2 226 LATIN SMALL LETTER A WITH CIRCUMFLEX -ã a? 0xe3 227 LATIN SMALL LETTER A WITH TILDE -ä a: 0xe4 228 LATIN SMALL LETTER A WITH DIAERESIS -å aa 0xe5 229 LATIN SMALL LETTER A WITH RING ABOVE -æ ae 0xe6 230 LATIN SMALL LETTER AE -ç c, 0xe7 231 LATIN SMALL LETTER C WITH CEDILLA -è e! 0xe8 232 LATIN SMALL LETTER E WITH GRAVE -é e' 0xe9 233 LATIN SMALL LETTER E WITH ACUTE -ê e> 0xea 234 LATIN SMALL LETTER E WITH CIRCUMFLEX -ë e: 0xeb 235 LATIN SMALL LETTER E WITH DIAERESIS -ì i! 0xec 236 LATIN SMALL LETTER I WITH GRAVE -í i' 0xed 237 LATIN SMALL LETTER I WITH ACUTE -î i> 0xee 238 LATIN SMALL LETTER I WITH CIRCUMFLEX -ï i: 0xef 239 LATIN SMALL LETTER I WITH DIAERESIS -ð d- 0xf0 240 LATIN SMALL LETTER ETH (Icelandic) -ñ n? 0xf1 241 LATIN SMALL LETTER N WITH TILDE -ò o! 0xf2 242 LATIN SMALL LETTER O WITH GRAVE -ó o' 0xf3 243 LATIN SMALL LETTER O WITH ACUTE -ô o> 0xf4 244 LATIN SMALL LETTER O WITH CIRCUMFLEX -õ o? 0xf5 245 LATIN SMALL LETTER O WITH TILDE -ö o: 0xf6 246 LATIN SMALL LETTER O WITH DIAERESIS +?? O/ 0xd8 216 LATIN CAPITAL LETTER O WITH STROKE +?? U! 0xd9 217 LATIN CAPITAL LETTER U WITH GRAVE +?? U' 0xda 218 LATIN CAPITAL LETTER U WITH ACUTE +?? U> 0xdb 219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX +?? U: 0xdc 220 LATIN CAPITAL LETTER U WITH DIAERESIS +?? Y' 0xdd 221 LATIN CAPITAL LETTER Y WITH ACUTE +?? TH 0xde 222 LATIN CAPITAL LETTER THORN (Icelandic) +?? ss 0xdf 223 LATIN SMALL LETTER SHARP S (German) +?? a! 0xe0 224 LATIN SMALL LETTER A WITH GRAVE +?? a' 0xe1 225 LATIN SMALL LETTER A WITH ACUTE +?? a> 0xe2 226 LATIN SMALL LETTER A WITH CIRCUMFLEX +?? a? 0xe3 227 LATIN SMALL LETTER A WITH TILDE +?? a: 0xe4 228 LATIN SMALL LETTER A WITH DIAERESIS +?? aa 0xe5 229 LATIN SMALL LETTER A WITH RING ABOVE +?? ae 0xe6 230 LATIN SMALL LETTER AE +?? c, 0xe7 231 LATIN SMALL LETTER C WITH CEDILLA +?? e! 0xe8 232 LATIN SMALL LETTER E WITH GRAVE +?? e' 0xe9 233 LATIN SMALL LETTER E WITH ACUTE +?? e> 0xea 234 LATIN SMALL LETTER E WITH CIRCUMFLEX +?? e: 0xeb 235 LATIN SMALL LETTER E WITH DIAERESIS +?? i! 0xec 236 LATIN SMALL LETTER I WITH GRAVE +?? i' 0xed 237 LATIN SMALL LETTER I WITH ACUTE +?? i> 0xee 238 LATIN SMALL LETTER I WITH CIRCUMFLEX +?? i: 0xef 239 LATIN SMALL LETTER I WITH DIAERESIS +?? d- 0xf0 240 LATIN SMALL LETTER ETH (Icelandic) +?? n? 0xf1 241 LATIN SMALL LETTER N WITH TILDE +?? o! 0xf2 242 LATIN SMALL LETTER O WITH GRAVE +?? o' 0xf3 243 LATIN SMALL LETTER O WITH ACUTE +?? o> 0xf4 244 LATIN SMALL LETTER O WITH CIRCUMFLEX +?? o? 0xf5 245 LATIN SMALL LETTER O WITH TILDE +?? o: 0xf6 246 LATIN SMALL LETTER O WITH DIAERESIS ÷ -: 0xf7 247 DIVISION SIGN -ø o/ 0xf8 248 LATIN SMALL LETTER O WITH STROKE -ù u! 0xf9 249 LATIN SMALL LETTER U WITH GRAVE -ú u' 0xfa 250 LATIN SMALL LETTER U WITH ACUTE -û u> 0xfb 251 LATIN SMALL LETTER U WITH CIRCUMFLEX -ü u: 0xfc 252 LATIN SMALL LETTER U WITH DIAERESIS -ý y' 0xfd 253 LATIN SMALL LETTER Y WITH ACUTE -þ th 0xfe 254 LATIN SMALL LETTER THORN (Icelandic) -ÿ y: 0xff 255 LATIN SMALL LETTER Y WITH DIAERESIS +?? o/ 0xf8 248 LATIN SMALL LETTER O WITH STROKE +?? u! 0xf9 249 LATIN SMALL LETTER U WITH GRAVE +?? u' 0xfa 250 LATIN SMALL LETTER U WITH ACUTE +?? u> 0xfb 251 LATIN SMALL LETTER U WITH CIRCUMFLEX +?? u: 0xfc 252 LATIN SMALL LETTER U WITH DIAERESIS +?? y' 0xfd 253 LATIN SMALL LETTER Y WITH ACUTE +?? th 0xfe 254 LATIN SMALL LETTER THORN (Icelandic) +?? y: 0xff 255 LATIN SMALL LETTER Y WITH DIAERESIS vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/if_cscop.jax b/ja/if_cscop.jax index 128d198c6..5c790ff61 100644 --- a/ja/if_cscop.jax +++ b/ja/if_cscop.jax @@ -1,9 +1,10 @@ COMMENT: Cscope(開発支援ツール)インターフェイス -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*if_cscop.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*if_cscop.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM リファレンスマニュアル by Andy Kahn @@ -209,6 +210,11 @@ tagsのようになるので、普通のタグのようなジャンプ操作(Ctr 使用法 :cs show + *:lcscope* *:lcs* +このコマンドは ":cscope" とほぼ同じだが、オプション 'cscopequickfix' がオンに +なっている場合、QuickFix リストでなくカレントウィンドウのロケーションリストで +cscope の結果を表示する点が異なる。 + *:cstag* *E257* *E562* ctagsとcscopeを同じように使うのならば、両方を順に検索してジャンプを行なうのに |:cstag|が利用できる。例えば、最初にcscopeデータベースを検索し、見つからなかっ @@ -243,8 +249,9 @@ ctagsとcscopeを同じように使うのならば、両方を順に検索して '-' はそれ以前の結果を消すことを意味する。'0'や何も指定していないコマンドは クイックフィックスウインドウを使わない。探索は始まりから最初のコマンドを見つ けるまで実行される。 -デフォルトの値は ""(クイックフィックスを使わない)。次の値が便利だろう: -"s-,c-,d-,i-,t-,e-"。 +デフォルトの値は ""(クイックフィックスを使わない)。次の値が便利だろう: > + :set cscopequickfix=s-,c-,d-,i-,t-,e- +< *cscopetag* *cst* 'cscopetag'が設定されていると、コマンド":tags"、CTRL-]、そして"vim -t"はデフォ @@ -328,6 +335,9 @@ Vimのcscope機能は4つのシステムコール:fork(), pipe(), execl(), waitp http://iamphet.nm.ru/cscope/index.html +http://cscope.sourceforge.net でダウンロードできる、 DJGPP でビルドしたバージョ +ンは、Vim では動かないことがわかっている。 + これにはコードに埋め込まれた2つの限界がある: 1. 最大cscope接続数は8。本当にこれ以上必要ですか? diff --git a/ja/if_sniff.jax b/ja/if_sniff.jax index 2f4e3023d..cf681acb5 100644 --- a/ja/if_sniff.jax +++ b/ja/if_sniff.jax @@ -1,10 +1,10 @@ COMMENT: SNiFF+インターフェイス -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*if_sniff.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*if_sniff.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL diff --git a/ja/if_tcl.jax b/ja/if_tcl.jax index e327f87de..92b89b64f 100644 --- a/ja/if_tcl.jax +++ b/ja/if_tcl.jax @@ -1,9 +1,10 @@ COMMENT: Tclインターフェイス(外部スクリプト) -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*if_tcl.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*if_tcl.txt* For Vim version 7.0. Last change: 2006 Mar 06 VIM REFERENCE MANUAL by Ingo Wilken @@ -19,6 +20,7 @@ VimへのTclインターフェイス *tcl* *Tcl* *TCL* 6. その他; Tcl からの出力 |tcl-misc| |tcl-output| 7. 既知のバグと問題点 |tcl-bugs| 8. 例 |tcl-examples| +9. 動的ローディング |tcl-dynamic| {Vi はこれらのコマンドを持たない} *E280* *E281* @@ -134,7 +136,8 @@ Tclコードからは、"::vim"名前空間のコマンドを介してvimの全 ::vim::expr {expr} *tcl-expr* 式{expr}を、vimの内部式評価(|expression|を参照)を使って評価する。バッ ファやウィンドウプロパティに問い合わせする種類の式は、全て現在のバッ - ファ/ウィンドウを対象とする。結果を文字列として返す。 + ファ/ウィンドウを対象とする。結果を文字列として返す。リスト |List| は + 文字列に変換される。そのとき各要素の間に改行が挿入され、連結される。 例: > set perl_available [::vim::expr has("perl")] < |tcl-window-expr| と |tcl-buffer-expr|も参照。 @@ -508,5 +511,22 @@ Unixマシンでは"~/.vimrc.tcl"など)に入れておき、スタートアッ tclfile ~/.vimrc.tcl endif +============================================================================== +9. 動的ローディング *tcl-dynamic* + +MS-WindowsではTclライブラリを動的に読み込むことが可能である。これを行うと +|:version|の出力に|+tcl/dyn|が含まれるようになる。 + +この場合、Vimは必要なときだけTclのDLLファイルを検索する。Tclインターフェ +イスを使わないときはDLLを必要としないので、DLLなしでVimを使うことができる。 + +Tclインターフェイスを使うにはTclのDLLが検索パス内に存在しなければならない。 +コンソールウィンドウで"path"とタイプすると、どのディレクトリが検索パスとなるか +表示することができる。 + +DLLの名前はVimをコンパイルした時のTclのバージョンに一致しなければならない。 +現在その名前は"tcl83.dll"である。これはTcl8.3用である。これを確かめるには、 +"gvim.exe"を開き、"tcl\d*.dll\c"を検索する。 + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/mlang.jax b/ja/mlang.jax index 04d111bfa..0279e9eb5 100644 --- a/ja/mlang.jax +++ b/ja/mlang.jax @@ -1,9 +1,9 @@ COMMENT: 多言語対応 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*mlang.txt* For Vim version 6.3. Last change: 2004 Feb 24 +*mlang.txt* For Vim version 7.0. Last change: 2004 Feb 24 VIMリファレンスマニュアル by Bram Moolenaar @@ -188,7 +188,7 @@ Vimユーザに提供することを是非とも考えていただきたい。Vi :source $VIMRUNTIME/menu.vim メニューパスの各部位は個別に翻訳される。"Help"が"Hilfe"に、"Overview" が -"Überblick"に訳される時、結果的に"Help.Overview" は"Hilfe.Überblick"と翻訳され +"??berblick"に訳される時、結果的に"Help.Overview" は"Hilfe.??berblick"と翻訳され る。 ============================================================================== diff --git a/ja/os_msdos.jax b/ja/os_msdos.jax index 136b9344e..88151480a 100644 --- a/ja/os_msdos.jax +++ b/ja/os_msdos.jax @@ -1,9 +1,10 @@ COMMENT: OS特有情報:MS-DOS -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 首藤博昭(Noiz) TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*os_msdos.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*os_msdos.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -222,6 +223,12 @@ Unix上では、Vimはリンク(シンボリックまたはハード)に対し ジョンでこれを解決する唯一の方法は、":set nobackup nowritebackup"によってバッ クアップファイルを作成しないようにすることである。 |'writebackup'| +Samba などのシステムを通して Unix のファイルシステムをマウントしたときにも似た +ような問題が起こる。Vim が新規ファイルを作成すると、そのファイルはマウントされ +たファイルシステムにデフォルトのユーザIDがつけられる。そのユーザIDは元のユーザ +IDと異なるかもしれない。この問題を避けるには、オプション 'backupcopy' を "yes" +に設定すること。 + ============================================================================== 9. dosでのコピー/貼り付け *msdos-copy-paste* From c774c28d396ffb5ce49db201d81ee3ddfcd9524d Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Thu, 12 Oct 2006 15:02:13 +0000 Subject: [PATCH 066/783] fix: update gui_x11, pi_gzip to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@66 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/gui_x11.txt | 28 +++++++++++++++++++++------- en/pi_gzip.txt | 2 +- ja/gui_x11.jax | 35 +++++++++++++++++++++++++---------- ja/pi_gzip.jax | 2 +- 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/en/gui_x11.txt b/en/gui_x11.txt index 340e77639..a78dd3640 100644 --- a/en/gui_x11.txt +++ b/en/gui_x11.txt @@ -1,4 +1,4 @@ -*gui_x11.txt* For Vim version 6.3. Last change: 2004 Mar 16 +*gui_x11.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -12,8 +12,9 @@ Vim's Graphical User Interface *gui-x11* *GUI-X11* 4. Various |gui-x11-various| 5. GTK version |gui-gtk| 6. GNOME version |gui-gnome| -7. Compiling |gui-x11-compiling| -8. X11 selection mechanism |x11-selection| +7. KDE version |gui-kde| +8. Compiling |gui-x11-compiling| +9. X11 selection mechanism |x11-selection| Other relevant documentation: |gui.txt| For generic items of the GUI. @@ -59,7 +60,7 @@ flag in 'guioptions'. |-f|. ============================================================================== 2. GUI Resources *gui-resources* *.Xdefaults* -If using the Motif or Athena version of the GUI (not for the GTK+ or Win32 +If using the Motif or Athena version of the GUI (not for the KDE, GTK+ or Win32 version), a number of X resources are available. You should use Vim's class "Vim" when setting these. They are as follows: @@ -112,7 +113,7 @@ same. Note that some fonts that have the same point size don't have the same pixel size! Additionally, the positioning of the fonts must be the same (ascent and descent). You can check this with "xlsfonts -l {fontname}". -If any of these things are also set with Vim commands, eg with +If any of these things are also set with Vim commands, e.g. with ":set guifont=Screen15", then this will override the X resources (currently 'guifont' is the only option that is supported). @@ -434,7 +435,14 @@ the WM to identify the window by restoring the window role (using the |--role| command line argument). ============================================================================== -7. Compiling *gui-x11-compiling* +7. KDE version *gui-kde* *kde* *KDE* *KVim* + +There is no KDE version of Vim. There has been some work on a port using the +Qt toolkit, but it never worked properly and it has been abandoned. Work +continues on Yzis: www.yzis.org. + +============================================================================== +8. Compiling *gui-x11-compiling* If using X11, Vim's Makefile will by default first try to find the necessary GTK+ files on your system. If the GTK+ files cannot be found, then the Motif @@ -489,6 +497,12 @@ menus look a bit better. Edit the Makefile and look for "XAW_LIB". The scrollbars will remain the same, because Vim has its own, which are already 3D (in fact, they look more like Motif). + *gui-x11-kde* +For Vim-KDE, you need at least Qt(>=2.x) and the corresponding kdelibs. +To compile, you must use the --with-qt-dir configure flag because QTDIR is not +automatically detected yet. Giving KDE's directories to the configure script +may also help in some cases. + *gui-x11-neXtaw* The neXtaw version is mostly like Athena, but uses different widgets. @@ -499,7 +513,7 @@ X11R5 with a library for X11R6 probably doesn't work (although the linking won't give an error message, Vim will crash later). ============================================================================== -8. X11 selection mechanism *x11-selection* +9. X11 selection mechanism *x11-selection* If using X11, in either the GUI or an xterm with an X11-aware Vim, then Vim provides varied access to the X11 selection and clipboard. These are accessed diff --git a/en/pi_gzip.txt b/en/pi_gzip.txt index 8ea6db780..1d9466ac2 100644 --- a/en/pi_gzip.txt +++ b/en/pi_gzip.txt @@ -1,4 +1,4 @@ -*pi_gzip.txt* For Vim version 6.3. Last change: 2002 Oct 29 +*pi_gzip.txt* For Vim version 7.0. Last change: 2002 Oct 29 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/ja/gui_x11.jax b/ja/gui_x11.jax index f3ed6d210..bb76f3534 100644 --- a/ja/gui_x11.jax +++ b/ja/gui_x11.jax @@ -1,10 +1,11 @@ COMMENT: GUI機能:X11 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*gui_x11.txt* For Vim version 6.3. Last change: 2004 Mar 16 +*gui_x11.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIMリファレンスマニュアル by Bram Moolenaar @@ -18,8 +19,9 @@ Vimのグラフィカルユーザインタフェース *gui-x11* *GUI-X11* 4. 各種事項 |gui-x11-various| 5. GTKバージョン |gui-gtk| 6. GNOMEバージョン |gui-gnome| -7. コンパイル |gui-x11-compiling| -8. X11セレクション |x11-selection| +7. KDEバージョン |gui-kde| +8. コンパイル |gui-x11-compiling| +9. X11セレクション |x11-selection| 他の重要なドキュメント: |gui.txt| GUIの一般的な項目について。 @@ -64,9 +66,9 @@ GUIをいつもフォアグラウンドで実行したければ、'guioptions' ============================================================================== 2. GUIリソース *gui-resources* *.Xdefaults* -GUIのMotifかあるいはAthenaバージョン(GTK+やあるいはWin32バージョンについてでは -ない)を使用しているならば、多くのXのリソースが有効である。これらを設定するとき -には、Vimのクラス"Vim"を使用すべきである。それらは以下のようなものである: +GUIのMotifかあるいはAthenaバージョン(KDE, GTK+やあるいはWin32バージョンについ +てではない)を使用しているならば、多くのXのリソースが有効である。これらを設定す +るときには、Vimのクラス"Vim"を使用すべきである。それらは以下のようなものである: リソース名 意味 ~ @@ -112,7 +114,7 @@ GUIのMotifかあるいはAthenaバージョン(GTK+やあるいはWin32バー 注意: (メニューとツールチップ以外では)全てのフォントは同じサイズでなければなら ない!!! こうしなければ、テキストは表示されないか、あるいはめちゃくちゃに表示さ れるだろう。Vimはフォントサイズをチェックしない。同じでなければならないのはス -クリ-ンのピクセルにおけるサイズである。いくつかのフォントが同じポイントサイズ +クリ???ンのピクセルにおけるサイズである。いくつかのフォントが同じポイントサイズ を持っていても、同じピクセルサイズを持っているとは限らないということに注意しな くてはならない! さらにフォントの配置は同じ(アセントとディセント)でなければなら ない。"xlsfonts -l {fontname}"でこれをチェックすることができる。 @@ -438,7 +440,14 @@ GUI ウインドウの位置とサイズは保存されない、それはウイ ン引数の|--role| を使う)。 ============================================================================== -7. コンパイル *gui-x11-compiling* +7. KDE バージョン *gui-kde* *kde* *KDE* *KVim* + +KDE バージョンの Vim は存在しない。Qt ツールキットを使って移植する作業が行われ +ていたが、ちゃんと動かなかったので、今は放棄されている。作業は Yzis で継続され +ている: www.yzis.org + +============================================================================== +8. コンパイル *gui-x11-compiling* X11を使用しているならば、VimのMakefileはデフォルトでは最初にシステム上の必要と なるGTK+ファイルを見つけようとするだろう。GTK+ファイルが見つけられなかったなら @@ -492,6 +501,12 @@ AthenaバージョンはデフォルトでXaw ウィジットセットを用い 。スクロールバーは、Vimは既に3Dのそれ自体を持っているので(実際には、それらはも っとMotifのように見える)、同じままだろう。 + *gui-x11-kde* +Vim-KDE には少なくとも Qt(>=2.x) とそれに対応する kdelib が必要である。 +コンパイルするには、QTDIR が自動的に検出されないため、configure フラグ +--with-qt-dir を使う必要がある。configure スクリプトに KDE のディレクトリを与 +えると助けになる場合がある。 + *gui-x11-neXtaw* neXtawバージョンについては、異なるウィジェットを使うだけでほとんどAthenaと変わ らない。 @@ -503,7 +518,7 @@ neXtawバージョンについては、異なるウィジェットを使うだ を出さないとしても、Vimは後でクラッシュするだろう)。 ============================================================================== -8. X11 セレクション *x11-selection* +9. X11 セレクション *x11-selection* X11 を使っている場合、GUI や、xterm で Vim が X11 を認識している状態のとき、 Vim から X11 のセレクションやクリップボードを扱える。それらは "* レジスタと diff --git a/ja/pi_gzip.jax b/ja/pi_gzip.jax index 0d9ce5e2d..76b2ca81b 100644 --- a/ja/pi_gzip.jax +++ b/ja/pi_gzip.jax @@ -2,7 +2,7 @@ COMMENT: プラグイン:圧縮ファイルの編集 STATUS: finished 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*pi_gzip.txt* For Vim version 6.3. Last change: 2002 Oct 29 +*pi_gzip.txt* For Vim version 7.0. Last change: 2002 Oct 29 VIMリファレンスマニュアル by Bram Moolenaar From dc8208e5d64c2f9db1bfe3801331b317cb6c1741 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Fri, 13 Oct 2006 13:45:45 +0000 Subject: [PATCH 067/783] fix: update os_390, os_risc, filetype, pi_gzip, os_beos, os_amiga, diff to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@67 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/diff.txt | 63 +++++++++---- en/filetype.txt | 84 ++++++++++++------ en/os_390.txt | 78 ++++++++--------- en/os_amiga.txt | 42 +++++---- en/os_beos.txt | 92 +++++++++---------- en/os_risc.txt | 72 +++++++-------- ja/diff.jax | 72 +++++++++++---- ja/filetype.jax | 82 +++++++++++------ ja/os_390.jax | 229 ++++++++++++++++++++++++++++++------------------ ja/os_amiga.jax | 13 ++- ja/os_beos.jax | 4 +- ja/os_risc.jax | 4 +- ja/pi_gzip.jax | 2 +- 13 files changed, 521 insertions(+), 316 deletions(-) diff --git a/en/diff.txt b/en/diff.txt index 9ec15cc42..a0e8053a4 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 6.3. Last change: 2004 May 01 +*diff.txt* For Vim version 7.0. Last change: 2006 Apr 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41,12 +41,18 @@ the file. This only works when a standard "diff" command is available. See 'diffexpr'. +Diffs are local to the current tab page |tab-page|. You can't see diffs with +a window in another tab page. This does make it possible to have several +diffs at the same time, each in their own tab page. + What happens is that Vim opens a window for each of the files. This is like using the |-O| argument. This uses vertical splits. If you prefer horizontal splits add the |-o| argument: > vimdiff -o file1 file2 [file3] +If you always prefer horizontal splits include "horizontal" in 'diffopt'. + In each of the edited files these options are set: 'diff' on @@ -54,7 +60,7 @@ In each of the edited files these options are set: 'scrollopt' includes "hor" 'wrap' off 'foldmethod' "diff" - 'foldcolumn' 2 + 'foldcolumn' value from 'diffopt', default is 2 These options are set local to the window. When editing another file they are reset to the global value. @@ -83,7 +89,7 @@ While already in Vim you can start diff mode in three ways. *:difft* *:diffthis* :diffthis Make the current window part of the diff windows. This sets - the option like for "vimdiff". + the options like for "vimdiff". :diffpatch {patchfile} *:diffp* *:diffpatch* Use the current buffer, patch it with the diff found in @@ -103,16 +109,30 @@ To make these commands use a vertical split, prepend |:vertical|. Examples: > :vert diffsplit main.c~ :vert diffpatch /tmp/diff -< + +If you always prefer a vertical split include "vertical" in 'diffopt'. + *E96* There can be up to four buffers with 'diff' set. Since the option values are remembered with the buffer, you can edit another file for a moment and come back to the same file and be in diff mode again. -If you don't want diff mode, reset the 'diff' option. And you probably want -to get rid of the fold column: > - :set nodiff foldcolumn=0 + *:diffo* *:diffoff* +:diffoff Switch off diff mode for the current window. + +:diffoff! Switch off diff mode for all windows in the current tab page. + +The ":diffoff" command resets the relevant options to their default value. +This may be different from what the values were before diff mode was started, +the old values are not remembered. + + 'diff' off + 'scrollbind' off + 'scrollopt' without "hor" + 'wrap' on + 'foldmethod' "manual" + 'foldcolumn' 0 ============================================================================== 2. Viewing diffs *view-diffs* @@ -145,10 +165,12 @@ original file and diff with that. For example: > A buffer that is unloaded cannot be used for the diff. But it does work for hidden buffers. You can use ":hide" to close a window without unloading the -buffer. - +buffer. If you don't want a buffer to remain used for the diff do ":set +nodiff" before hiding it. *:diffu* *:diffupdate* +:diffu[pdate] Update the diff highlighting and folds. + Vim attempts to keep the differences updated when you make changes to the text. This mostly takes care of inserted and deleted lines. Changes within a line and more complicated changes do not cause the differences to be updated. @@ -184,7 +206,8 @@ The diffs are highlighted with these groups: (searching from the end of the line). The text in between is highlighted. This means that parts in the middle that are still the - same are highlighted anyway. + same are highlighted anyway. Only "iwhite" of + 'diffopt' is used here. |hl-DiffDelete| DiffDelete Deleted lines. Also called filler lines, because they don't really exist in this buffer. @@ -204,7 +227,7 @@ It is an error if there is no change for the cursor to move to. ============================================================================== 4. Diff copying *copy-diffs* *E99* *E100* *E101* *E102* *E103* - + *merge* There are two commands to copy text from one buffer to another. The result is that the buffers will be equal within the specified range. @@ -221,6 +244,8 @@ that the buffers will be equal within the specified range. Modify another buffer to undo difference with the current buffer. Just like ":diffget" but the other buffer is modified instead of the current one. + When [bufspec] is omitted and there is more than one other + buffer in diff mode where 'modifiable' is set this fails. See below for [range]. *do* @@ -248,6 +273,10 @@ buffer: > Note that deleted lines are displayed, but not counted as text lines. You can't move the cursor into them. To fill the deleted lines with the lines from another buffer use ":diffget" on the line below them. + *E787* +When the buffer that is about to be modified is read-only and the autocommand +that is triggered by |FileChangedRO| changes buffers the command will fail. +The autocommand must not change buffers. The [bufspec] argument above can be a buffer number, a pattern for a buffer name or a part of a buffer name. Examples: @@ -329,8 +358,12 @@ get an error message. Possible causes: - The 'shell' and associated options are not set correctly. Try if filtering works with a command like ":!sort". - You are using 'diffexpr' and it doesn't work. -If it's not clear what the problem is set the 'verbose' option to see more -messages. +If it's not clear what the problem is set the 'verbose' option to one or more +to see more messages. + +The self-installing Vim includes a diff program. If you don't have it you +might want to download a diff.exe. For example from +http://jlb.twu.net/code/unixkit.php. USING PATCHES *diff-patchexpr* @@ -354,8 +387,8 @@ will have the same effect. These variables are set to the file names used: Example (this does the same as 'patchexpr' being empty): > - let patchexpr=MyPatch - function MyPatch + set patchexpr=MyPatch() + function MyPatch() :call system("patch -o " . v:fname_out . " " . v:fname_in . \ " < " . v:fname_diff) endfunction diff --git a/en/filetype.txt b/en/filetype.txt index e5d473e7e..58b33b889 100644 --- a/en/filetype.txt +++ b/en/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 6.3. Last change: 2004 May 05 +*filetype.txt* For Vim version 7.0. Last change: 2006 Apr 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -44,15 +44,21 @@ Detail: The ":filetype on" command will load one of these files: name, the file $VIMRUNTIME/scripts.vim is used to detect it from the contents of the file. -To add your own file types, see |new-filetype| below. +To add your own file types, see |new-filetype| below. To search for help on a +filetype prepend "ft-" and optionally append "-syntax", "-indent" or +"-plugin". For example: > + :help ft-vim-indent + :help ft-vim-syntax + :help ft-man-plugin If the file type is not detected automatically, or it finds the wrong type, you can either set the 'filetype' option manually, or add a modeline to your file. Example, for in an IDL file use the command: > :set filetype=idl -or add this |modeline| to the file: > - /* vim: set filetype=idl : */ -< + +or add this |modeline| to the file: + /* vim: set filetype=idl : */ ~ + *:filetype-plugin-on* You can enable loading the plugin files for specific file types with: > :filetype plugin on @@ -82,6 +88,9 @@ You can disable it again with: > The filetype detection is not switched off then. But if you do switch off filetype detection, the indent files will not be loaded either. This actually loads the file "indoff.vim" in 'runtimepath'. +This disables auto-indenting for files you will open. It will keep working in +already opened files. Reset 'autoindent', 'cindent', 'smartindent' and/or +'indentexpr' to disable indenting in an opened file. *:filetype-off* To disable file type detection, use this command: > @@ -129,16 +138,17 @@ kind of file it is. This doesn't always work. A number of global variables can be used to overrule the filetype used for certain extensions: file name variable ~ - *.asa g:filetype_asa |aspvbs-syntax| |aspperl-syntax| - *.asp g:filetype_asp |aspvbs-syntax| |aspperl-syntax| - *.asm g:asmsyntax |asm-syntax| + *.asa g:filetype_asa |ft-aspvbs-syntax| |ft-aspperl-syntax| + *.asp g:filetype_asp |ft-aspvbs-syntax| |ft-aspperl-syntax| + *.asm g:asmsyntax |ft-asm-syntax| *.prg g:filetype_prg *.pl g:filetype_pl *.inc g:filetype_inc - *.w g:filetype_w |cweb-syntax| - *.i g:filetype_i |progress-syntax| - *.p g:filetype_p |pascal-syntax| - *.sh g:bash_is_sh |sh-syntax| + *.w g:filetype_w |ft-cweb-syntax| + *.i g:filetype_i |ft-progress-syntax| + *.p g:filetype_p |ft-pascal-syntax| + *.sh g:bash_is_sh |ft-sh-syntax| + *.tex g:tex_flavor |ft-tex-plugin| *filetype-ignore* To avoid that certain files are being inspected, the g:ft_ignore_pat variable @@ -147,15 +157,15 @@ is used. The default value is set like this: > This means that the contents of compressed files are not inspected. *new-filetype* -If a file type that you want to use is not detected yet, there are three ways -to add it. In any way, it's better not modify the $VIMRUNTIME/filetype.vim +If a file type that you want to use is not detected yet, there are four ways +to add it. In any way, it's better not to modify the $VIMRUNTIME/filetype.vim file. It will be overwritten when installing a new version of Vim. A. If you want to overrule all default file type checks. This works by writing one file for each filetype. The disadvantage is that means there can be many files. The advantage is that you can simply drop this file in the right directory to make it work. - + *ftdetect* 1. Create your user runtime directory. You would normally use the first item of the 'runtimepath' option. Then create the directory "ftdetect" inside it. Example for Unix: > @@ -175,7 +185,8 @@ A. If you want to overrule all default file type checks. < 3. To use the new filetype detection you must restart Vim. The files in the "ftdetect" directory are used after all the default - checks, thus they can overrule a previously detected file type. + checks, thus they can overrule a previously detected file type. But you + can also use |:setfiletype| to keep a previously detected filetype. B. If you want to detect your file after the default file type checks. @@ -377,9 +388,9 @@ ways to change this: 3. Docs for the default filetype plugins. *ftplugin-docs* -CHANGELOG *changelog-plugin* +CHANGELOG *ft-changelog-plugin* -Allows for easy entrance of Changelog entries in Changelog files. There are +Allows for easy entrance of Changelog entries in Changelog files. There are some commands, mappings, and variables worth exploring: Options: @@ -398,7 +409,7 @@ Local mappings: Global mappings: NOTE: The global mappings are accessed by sourcing the ftplugin/changelog.vim file first, e.g. with > - runtime ftplugin/man.vim + runtime ftplugin/changelog.vim < in your |.vimrc|. <Leader>o Switches to the ChangeLog buffer opened for the current directory, or opens it in a new buffer if it @@ -459,11 +470,11 @@ g:changelog_date_entry_search The Changelog entries are inserted where they add the least amount of text. After figuring out the current date and user, the file is searched for an entry beginning with the current date and user and if found adds another item -under it. If not found, a new entry and item is prepended to the beginning of +under it. If not found, a new entry and item is prepended to the beginning of the Changelog. -FORTRAN *fortran-plugin* +FORTRAN *ft-fortran-plugin* Options: 'expandtab' is switched on to avoid tabs as required by the Fortran @@ -471,12 +482,12 @@ Options: 'textwidth' is set to 72 for fixed source format as required by the Fortran standards and to 80 for free source format. 'formatoptions' is set to break code and comment lines and to preserve long - lines. You can format comments with |gq|. + lines. You can format comments with |gq|. For further discussion of fortran_have_tabs and the method used for the -detection of source format see |fortran-syntax|. +detection of source format see |ft-fortran-syntax|. -MAIL *mail-plugin* +MAIL *ft-mail-plugin* Options: 'modeline' is switched off to avoid the danger of trojan horses, and to @@ -493,7 +504,7 @@ Local mappings: to the end of the file in Normal mode. This means "> " is inserted in each line. -MAN *man-plugin* *:Man* +MAN *ft-man-plugin* *:Man* Displays a manual page in a nice way. Also see the user manual |find-manpage|. @@ -520,10 +531,31 @@ CTRL-] Jump to the manual page for the word under the cursor. CTRL-T Jump back to the previous manual page. -RPM SPEC *spec-plugin* +RPM SPEC *ft-spec-plugin* Since the text for this plugin is rather long it has been put in a separate file: |pi_spec.txt|. +SQL *ft-sql* + +Since the text for this plugin is rather long it has been put in a separate +file: |sql.txt|. + + +TEX *ft-tex-plugin* + +If the first line of a *.tex file has the form > + %&<format> +then this determined the file type: plaintex (for plain TeX), context (for +ConTeXt), or tex (for LaTeX). Otherwise, the file is searched for keywords to +choose context or tex. If no keywords are found, it defaults to plaintex. +You can change the default by defining the variable g:tex_flavor to the format +(not the file type) you use most. Use one of these: > + let g:tex_flavor = "plain" + let g:tex_flavor = "context" + let g:tex_flavor = "latex" +Currently no other formats are recognized. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/os_390.txt b/en/os_390.txt index c6252f0f3..fd9ab244c 100644 --- a/en/os_390.txt +++ b/en/os_390.txt @@ -1,4 +1,4 @@ -*os_390.txt* For Vim version 6.3. Last change: 2003 Jun 03 +*os_390.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Ralf Schandl @@ -12,17 +12,17 @@ This file contains the particulars for the z/OS UNIX version of Vim. 4. ASCII/EBCDIC dependent scripts |zOS-has-ebcdic| 5. XTerm Problems |zOS-xterm| 6. Motif Problems |zOS-Motif| -7 Bugs |zOS-Bugs| +7. Bugs |zOS-Bugs| 8. Known weaknesses |zOS-weaknesses| 9. Changes |zOS-changes| DISCLAIMER: ~ -We are IBM employees, but IBM is not responsible for this port. This is our +We are IBM employees, but IBM is not responsible for this port. This is our private fun, and is provided in the hopes that it may be useful to others. Please note that this software has NOT been submitted to any formal IBM -testing and is published AS IS. Please do not contact IBM for support for this -software, as it is not an official component of any IBM product. IT IS NOT +testing and is published AS IS. Please do not contact IBM for support for this +software, as it is not an official component of any IBM product. IT IS NOT SUPPORTED, GUARANTEED, OR RELATED WHATSOEVER TO IBM. Contributors: ~ @@ -60,22 +60,22 @@ Vim should compile, link, and run right out of the box on a standard IBM z/OS UNIX mainframe. I've personally run it on z/OS V1R2 and V1R3 machines without problems. -Many changes had to be done to the code to port Vim to z/OS UNIX. As like -most UNIX programs, Vim contained heavy ASCII dependencies. I might have +Many changes had to be done to the code to port Vim to z/OS UNIX. As like +most UNIX programs, Vim contained heavy ASCII dependencies. I might have missed an ASCII dependency, or it is possible that a new one has been added -with a feature or bug fix. Most programmers are simply not aware of possible -ASCII/EBCDIC conversion issues. If you hit a problem that seems related to +with a feature or bug fix. Most programmers are simply not aware of possible +ASCII/EBCDIC conversion issues. If you hit a problem that seems related to this, feel free to contact us at the email addresses above. One indication of ASCII/EBCDIC conversion problems is screen corruption with "unprintable" characters. For example, at one point the errorbell was broken -in Vim. Any time Vim tried to ring the terminal bell an ASCII character 0x07 -would be printed. This works fine on most terminals, but is broken on an -EBCDIC one. The correct solution was to define a different value for the bell +in Vim. Any time Vim tried to ring the terminal bell an ASCII character 0x07 +would be printed. This works fine on most terminals, but is broken on an +EBCDIC one. The correct solution was to define a different value for the bell character on EBCDIC systems. Remember, it's only possible to fix a bug if the community knows about it. -Don't rely on someone else to report it! See the section |bug-reports|. +Don't rely on someone else to report it! See the section |bug-reports|. ============================================================================== 3. Building VIM for z/OS UNIX *OS390-building* *zOS-building* @@ -83,12 +83,12 @@ Don't rely on someone else to report it! See the section |bug-reports|. A word on debugging code first: ~ The normal run of configure adds the flag '-g' to the compiler options, -to include debugging information into the executable. This information +to include debugging information into the executable. This information are normally removed from the executable with the strip command during -installation. On z/OS UNIX, it is not possible to remove this from -the executable. The strip command exists on z/OS UNIX and is called +installation. On z/OS UNIX, it is not possible to remove this from +the executable. The strip command exists on z/OS UNIX and is called during the installation, but it does nothing. It is equivalent to the -'touch' command. This is due to the way debug symbols are stored in the +'touch' command. This is due to the way debug symbols are stored in the objects generated by the compiler. If you want to build Vim without debugging code, export the environment @@ -99,11 +99,11 @@ variable CFLAGS set to an empty string before you call the configure script. Building without X11: ~ -Note: Use cc to build Vim. The c89 compiler has stricter syntax checking +Note: Use cc to build Vim. The c89 compiler has stricter syntax checking and will not compile Vim cleanly. If you build VIM without X11 support, compiling and building is -straightforward. Don't forget to export _CC_CCMODE=1 before calling +straightforward. Don't forget to export _CC_CCMODE=1 before calling configure and make. > $ export _CC_CCMODE=1 @@ -114,7 +114,7 @@ configure and make. Test notes: Test 11 will fail if you do not have gzip installed. Test 42 will fail, as VIM on z/OS UNIX doesn't support the multibyte - feature. (David Moore: "Doesn't work _yet_! :-) I'll see what I + feature. (David Moore: "Doesn't work _yet_! :-) I'll see what I can do.") > @@ -123,8 +123,8 @@ configure and make. Building with X11: ~ -There are two ways for building Vim with X11 support. You can link it -statically with the X11 libraries or can bind it with the X11 DLLs. The +There are two ways for building Vim with X11 support. You can link it +statically with the X11 libraries or can bind it with the X11 DLLs. The statically linked version results in a huge executable (~13MB), while the dynamically linked executable is much smaller (~4.5MB). @@ -137,7 +137,7 @@ Here is what you do, if you want Motif: VIM is now linked statically with the X11 libraries. b) Dynamic link: - Make VIM as described for the static link. Then change the contents of + Make VIM as described for the static link. Then change the contents of the 'auto/link.sed' file by appending: > s%-lXm *%/usr/lib/Xm.x %g s%-lX11 *%/usr/lib/X11.x %g @@ -155,7 +155,7 @@ See the Makefile and the file link.sh on how link.sed is used. ============================================================================== 4. ASCII/EBCDIC dependent scripts *OS390-has-ebcdic* *zOS-has-ebcdic* -For the internal script language the feature "ebcdic" was added. With this +For the internal script language the feature "ebcdic" was added. With this you can fix ASCII dependent scripts like this: > if has("ebcdic") @@ -178,7 +178,7 @@ the screen with <C-L> or if you can't move to the left with the cursor key on the command line, try adding > :set t_le=^H < -to your .vimrc. Note: '^H' is one character, hit <C-V><C-H> to get it. +to your .vimrc. Note: '^H' is one character, hit <C-V><C-H> to get it. ============================================================================== 6. Motif Problems *OS390-Motif* *zOS-Motif* @@ -203,9 +203,9 @@ There is no solution for this as of yet. 8. Known weaknesses *OS390-weaknesses* *zOS-weaknesses* - No binary search in tag files. - The program /bin/sort sorts by ASCII value by default. This program is - normally used by ctags to sort the tags. There might be a version of - ctags out there, that does it right, but we can't be sure. So this seems to + The program /bin/sort sorts by ASCII value by default. This program is + normally used by ctags to sort the tags. There might be a version of + ctags out there, that does it right, but we can't be sure. So this seems to be a permanent restriction. - Multibyte support (utf-8) doesn't work, it's disabled at compile time. @@ -246,10 +246,10 @@ not an exhaustive summary of all the modifications made to the code base. screen corruption problems in gVim reported by Anthony Giorgio. Anthony Giorgio updated this document: - - Changed OS/390 to z/OS where appropriate. IBM decided to rename + - Changed OS/390 to z/OS where appropriate. IBM decided to rename all of its servers and operating systems. z/OS and OS/390 are the same product, but the version numbering system was - reset for the name change. (e.g. OS/390 V2R11 == z/OS V1R1) + reset for the name change (e.g. OS/390 V2R11 == z/OS V1R1). - Added information about second edition of the Open Source Redbook. - Moved Redbook information to a separate section. - Various tweaks and changes. @@ -265,16 +265,16 @@ not an exhaustive summary of all the modifications made to the code base. 6.0q (alpha): Minor changes for nrformats=alpha (see |'nrformats'|). - Problem with hard-coded keycode for the English pound sign. Added a define in + Problem with hard-coded keycode for the English pound sign. Added a define in ascii.h Disabled multibyte for EBCDIC in feature.h 6.0f (alpha): - First compile of Vim 6 on z/OS UNIX. Some minor changes were needed. + First compile of Vim 6 on z/OS UNIX. Some minor changes were needed. Finally found the reason why make from the top level didn't work (I must have - been blind before!). The Makefile contained a list of targets in one target - line. On all other UNIX's the macro $@ evaluates to the first target in this + been blind before!). The Makefile contained a list of targets in one target + line. On all other UNIX's the macro $@ evaluates to the first target in this list, only on z/OS UNIX it evaluates to the last one :-(. 5.6-390d: @@ -282,7 +282,7 @@ not an exhaustive summary of all the modifications made to the code base. 5.6-390c: I grepped through the source and examined every spot with a character - involved in a operation (+-). I hope I now found all EBCDIC/ASCII + involved in a operation (+-). I hope I now found all EBCDIC/ASCII stuff, but .... Fixed: @@ -295,7 +295,7 @@ not an exhaustive summary of all the modifications made to the code base. - fixed quick-access table in findoptions() - fixed 'g^H' select mode - fixed tgetstr() 'get terminal capability string', ESC and - Ctrl chars where wrong. (Not used on OS/390 UNIX) + Ctrl chars where wrong. (Not used on OS/390 UNIX) ctags: @@ -311,13 +311,13 @@ not an exhaustive summary of all the modifications made to the code base. - added special compiler and linker options if building with X11 - configure: - after created via autoconf hand-edited it to make the test for - ICEConnectionNumber work. This is a autoconf problem. OS/390 UNIX + ICEConnectionNumber work. This is a autoconf problem. OS/390 UNIX needs -lX11 for this. - Makefile - Don't include the lib directories ('-L...') into the variable - ALL_LIBS. Use own variable ALL_LIB_DIRS instead. A fully POSIX + ALL_LIBS. Use own variable ALL_LIB_DIRS instead. A fully POSIX compliant compiler must not accept objects/libraries and options - mixed. Now we can call the linker like this: + mixed. Now we can call the linker like this: $(CC) $(LDFLAGS) $(ALL_LIB_DIRS) $(OBJ) $(ALL_LIBS) diff --git a/en/os_amiga.txt b/en/os_amiga.txt index 0a885f351..dfc40b7f2 100644 --- a/en/os_amiga.txt +++ b/en/os_amiga.txt @@ -1,4 +1,4 @@ -*os_amiga.txt* For Vim version 6.3. Last change: 2004 Apr 25 +*os_amiga.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -13,7 +13,7 @@ Installation on the Amiga: look for the file "VIM:doc/help.txt" (for the help command). Setting the environment variable $VIM also works. And the other way around: when $VIM used and it is not defined, "VIM:" is used. -- With DOS 1.3 or earlier: Put "arp.library" in "libs:". Vim must have been +- With DOS 1.3 or earlier: Put "arp.library" in "libs:". Vim must have been compiled with the |+ARP| feature enabled. Make sure that newcli and run are in "C:" (for executing external commands). - Put a shell that accepts a command with "-c" (e.g. "Csh" from Fish disk @@ -21,15 +21,21 @@ Installation on the Amiga: executing external commands). If you have sufficient memory you can avoid startup delays by making Vim and -csh resident with the command "rez csh vim". You will have to put -"rezlib.library" in your "libs:" directory. Under 2.0 you will need rez +csh resident with the command "rez csh vim". You will have to put +"rezlib.library" in your "libs:" directory. Under 2.0 you will need rez version 0.5. If you do not use digraphs, you can save some memory by recompiling without -the |+digraphs| feature. If you want to use Vim with other terminals you can -recompile with the TERMCAP option. Vim compiles with Manx 5.x and SAS 6.x. +the |+digraphs| feature. If you want to use Vim with other terminals you can +recompile with the TERMCAP option. Vim compiles with Manx 5.x and SAS 6.x. See the makefiles and feature.h. +If you notice Vim crashes on some files when syntax highlighting is on, or +when using a search pattern with nested wildcards, it might be that the stack +is too small. Try increasing the stack size. In a shell use the Stack +command before launching Vim. On the Workbench, select the Vim icon, use the +workbench "Info" menu and change the Stack field in the form. + If you want to use different colors set the termcap codes: t_mr (for inverted text) t_md (for bold text) @@ -41,7 +47,7 @@ If you want to use different colors set the termcap codes: t_ZH (for italic text) t_ZR (for normal text after t_ZH) -Standard ANSI escape sequences are used. The codes are: +Standard ANSI escape sequences are used. The codes are: 30 grey char 40 grey cell >0 grey background 0 all attributes off 31 black char 41 black cell >1 black background 1 boldface 32 white char 42 white cell >2 white background 2 faint @@ -51,8 +57,8 @@ Standard ANSI escape sequences are used. The codes are: 36 white char 46 white cell >6 white background 8 invisible 37 blue char 47 blue cell >7 blue background -The codes with '>' must be the last. The cell and background color should be -the same. The codes can be combined by separating them with a semicolon. For +The codes with '>' must be the last. The cell and background color should be +the same. The codes can be combined by separating them with a semicolon. For example to get white text on a blue background: > :set t_me=^V<Esc>[0;32;43;>3m :set t_se=^V<Esc>[0;32;43;>3m @@ -66,14 +72,14 @@ example to get white text on a blue background: > When using multiple commands with a filter command, e.g. > :r! echo this; echo that -Only the output of the last command is used. To fix this you have to group the -commands. This depends on the shell you use (that is why it is not done -automatically in Vim). Examples: > +Only the output of the last command is used. To fix this you have to group the +commands. This depends on the shell you use (that is why it is not done +automatically in Vim). Examples: > :r! (echo this; echo that) :r! {echo this; echo that} Commands that accept a single file name allow for embedded spaces in the file -name. However, when using commands that accept several file names, embedded +name. However, when using commands that accept several file names, embedded spaces need to be escaped with a backslash. ------------------------------------------------------------------------------ @@ -88,8 +94,8 @@ For the latest info about the MorphOS version: Problems ~ There are a couple of problems which are not MorphOS related but more Vim and -UN*X related. When starting up Vim in ram: it complains with a nag requester -from MorphOS please simply ignore it. Another problem is when running Vim as +UN*X related. When starting up Vim in ram: it complains with a nag requester +from MorphOS please simply ignore it. Another problem is when running Vim as is some plugins will cause a few problems which you can ignore as well. Hopefully someone will be fixing it over the time. @@ -110,7 +116,7 @@ Installation ~ ftp://ftp.vim.org/pub/vim/amiga/vim62rt.tgz - and unpack it in your 'Apps' directory of the MorphOS installation. For me + and unpack it in your 'Apps' directory of the MorphOS installation. For me this would create following directory hierarchy: MorphOS:Apps/Vim/Vim62/... @@ -124,8 +130,8 @@ Installation ~ 4) Copy the '.vimrc' file to s: -5) There is also a file named 'color-sequence' included in this archive. This - will set the MorphOS Shell to show ANSI colors. Please copy the file to s: +5) There is also a file named 'color-sequence' included in this archive. This + will set the MorphOS Shell to show ANSI colors. Please copy the file to s: and change the s:shell-startup to: ;Begin VIM diff --git a/en/os_beos.txt b/en/os_beos.txt index bfc193642..e872b4d04 100644 --- a/en/os_beos.txt +++ b/en/os_beos.txt @@ -1,4 +1,4 @@ -*os_beos.txt* For Vim version 6.3. Last change: 2004 May 01 +*os_beos.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -31,11 +31,11 @@ matters not discussed in this file, Vim behaves very much like the Unix 1. General *beos-general* The default syntax highlighting mostly works with different foreground colors -to highlight items. This works best if you set your Terminal window to a -darkish background and light letters. Some middle-grey background (for +to highlight items. This works best if you set your Terminal window to a +darkish background and light letters. Some middle-grey background (for instance (r,g,b)=(168,168,168)) with black letters also works nicely. If you use the default light background and dark letters, it may look better to -simply reverse the notion of foreground and background color settings. To do +simply reverse the notion of foreground and background color settings. To do this, add this to your .vimrc file (where <Esc> may need to be replaced with the escape character): > @@ -48,7 +48,7 @@ the escape character): > 2. Compiling Vim *beos-compiling* From the Advanced Access Preview Release (AAPR) on, Vim can be configured with -the standard configure script. To get the compiler and its flags right, use +the standard configure script. To get the compiler and its flags right, use the following command-line in the shell (you can cut and paste it in one go): CC=$BE_C_COMPILER CFLAGS="$BE_DEFAULT_C_FLAGS -O7" \ @@ -60,9 +60,9 @@ When configure has run, and you wish to enable GUI support, you must edit the config.mk file so that the lines with GUI_xxx refer to $(BEOSGUI_xxx) instead of $(NONE_xxx). Alternatively you can make this change in the Makefile; it will have a -more permanent effect. Search for "NONE_". +more permanent effect. Search for "NONE_". -After compilation you need to add the resources to the binary. Add the +After compilation you need to add the resources to the binary. Add the following few lines near the end (before the line with "exit $exit_value") of the link.sh script to do this automatically. @@ -81,12 +81,12 @@ You will need it when using "make install" to install Vim. Now type "make" to compile Vim, then "make install" to install it. If you want to install Vim by hand, you must copy Vim to $HOME/config/bin, and -create a bunch of symlinks to it ({g,r,rg}{vim,ex,view}). Furthermore you must -copy Vims configuration files to $HOME/config/share/vim: +create a bunch of symlinks to it ({g,r,rg}{vim,ex,view}). Furthermore you must +copy Vim's configuration files to $HOME/config/share/vim: vim-5.0s/{*.vim,doc,syntax}. For completeness, you should also copy the nroff -manual pages to $HOME/config/man/man1. Don't forget ctags/ctags and xxd/xxd! +manual pages to $HOME/config/man/man1. Don't forget ctags/ctags and xxd/xxd! -Obviously, you need the unlimited linker to actually link Vim. See +Obviously, you need the unlimited linker to actually link Vim. See http://www.metrowerks.com for purchasing the CodeWarrior compiler for BeOS. There are currently no other linkers that can do the job. @@ -97,7 +97,7 @@ you have the appropriate files installed. |beos-perl| 3. Timeout in the Terminal *beos-timeout* Because some POSIX/UNIX features are still missing[1], there is no direct OS -support for read-with-timeout in the Terminal. This would meat that you cannot +support for read-with-timeout in the Terminal. This would mean that you cannot use :mappings of more than one character, unless you also :set notimeout. |'timeout'| @@ -112,16 +112,16 @@ indistinctive character sequences. These problems do not exist in the GUI. [1]: there is no select() on file descriptors; also the termios VMIN and VTIME -settings do not seem to work properly. This has been the case since DR7 at +settings do not seem to work properly. This has been the case since DR7 at least and still has not been fixed as of PR2. *beos-unicode* 4. Unicode vs. Latin1 *beos-utf8* BeOS uses Unicode and UTF-8 for text strings (16-bit characters encoded to -8-bit characters). Vim assumes ISO-Latin1 or other 8-bit character codes. -This does not produce the desired results for non-ASCII characters. Try the -command :digraphs to see. If they look messed up, use :set isprint=@ to +8-bit characters). Vim assumes ISO-Latin1 or other 8-bit character codes. +This does not produce the desired results for non-ASCII characters. Try the +command :digraphs to see. If they look messed up, use :set isprint=@ to (slightly) improve the display of ISO-Latin1 characters 128-255. This works better in the GUI, depending on which font you use (below). @@ -133,46 +133,46 @@ You may also use the /boot/bin/xtou command to convert UTF-8 files from (xtou Normally Vim starts with the GUI if you start it as gvim or vim -g. The BeOS version tries to determine if it was started from the Tracker instead of the -Terminal, and if so, use the GUI anyway. However, the current detection scheme -is fooled if you use the command "vim - </dev/null" or "vim filename &". The +Terminal, and if so, use the GUI anyway. However, the current detection scheme +is fooled if you use the command "vim - </dev/null" or "vim filename &". The latter can be called a feature but probably only works because there is no BSD-style job control. Stuff that does not work yet: - Running external commands from the GUI does not work 100% (again due to lack - of support for select()). There was a choice between seeing the command's - output, or being able to interrupt it. I chose for seeing the output. Even + of support for select()). There was a choice between seeing the command's + output, or being able to interrupt it. I chose for seeing the output. Even now the command sometimes crashes mysteriously, apparently in Be's - malloc_internal() called from the putenv() function, after fork()ing. (data - access exception occurred, ec01b0ec: 90e80000 *stw r7, 0x0000 (r8))(:!ls - works usually, :r !ls usually doesn't). This has been reported as bug + malloc_internal() called from the putenv() function, after fork()ing. (data + access exception occurred, ec01b0ec: 90e80000 *stw r7, 0x0000 (r8)). (:!ls + works usually, :r !ls usually doesn't). This has been reported as bug # 971215-083826. - The window title. - Starting the GUI from the Terminal version with :gui always acts as if - :gui -f were used. There is no way to fix this that I can see. + :gui -f were used. There is no way to fix this that I can see. - There are some small display glitches here and there that I hope to clean up - later. Most of them occur when the window is partially obscured. Some of + later. Most of them occur when the window is partially obscured. Some of them seem to be bugs in BeOS, because the Terminal has similar glitches. -- Mouse up events are not generated when outside the window. This is a bug in - BeOS. You can notice this when selecting text and moving the cursor outside +- Mouse up events are not generated when outside the window. This is a bug in + BeOS. You can notice this when selecting text and moving the cursor outside the window, then letting go of the mouse button. Another way is when you drag the scrollbar and do the same thing. Because Vim still thinks you are - still playing with the scrollbar it won't change it itself. I provided a + still playing with the scrollbar it won't change it itself. I provided a workaround which kicks in when the window is activated or deactivated (so it works best with focus- follows-mouse (/boot/bin/ffm) turned on). - The cursor does not flash (very low priority; I'm not sure I even like it when it flashes) -The $VIM directory *beos-vimdir* +6. The $VIM directory *beos-vimdir* $VIM is the symbolic name for the place where Vims support files are stored. The default value for $VIM is set at compile time and can be determined with > :version -The normal value is /boot/home/config/share/vim. If you don't like it you can +The normal value is /boot/home/config/share/vim. If you don't like it you can set the VIM environment variable to override this, or set 'helpfile' in your .vimrc: > @@ -189,7 +189,7 @@ session, unless you use the File Types application to set Vim to be "Single Launch") or on the Vim window (starts editing the files). Dropping a folder sets Vim's current working directory. |:cd| |:pwd| If you drop files or folders with either SHIFT key pressed, Vim changes directory to the folder -that contains the first item dropped. When starting Vim, there is no need to +that contains the first item dropped. When starting Vim, there is no need to press shift: Vim behaves as if you do. Files dropped set the current argument list. |argument-list| @@ -198,10 +198,10 @@ Files dropped set the current argument list. |argument-list| 8. Single Launch vs. Multiple Launch *beos-launch* As distributed Vim's Application Flags (as seen in the FileTypes preference) -are set to Multiple Launch. If you prefer, you can set them to Single Launch +are set to Multiple Launch. If you prefer, you can set them to Single Launch instead. Attempts to start a second copy of Vim will cause the first Vim to -open the files instead. This works from the Tracker but also from the command -line. In the latter case, non-file (option) arguments are not supported. +open the files instead. This works from the Tracker but also from the command +line. In the latter case, non-file (option) arguments are not supported. NB: Only the GUI version has a BApplication (and hence Application Flags). This section does not apply to the GUI-less version, should you compile one. @@ -214,16 +214,16 @@ Set fonts with > :set guifont=Courier10_BT/Roman/10 where the first part is the font family, the second part the style, and the -third part the size. You can use underscores instead of spaces in family and +third part the size. You can use underscores instead of spaces in family and style. -Best results are obtained with monospaced fonts (such as Courier). Vim +Best results are obtained with monospaced fonts (such as Courier). Vim attempts to use all fonts in B_FIXED_SPACING mode but apparently this does not work for proportional fonts (despite what the BeBook says). Vim also tries to use the B_ISO8859_1 encoding, also known as ISO Latin 1. -This also does not work for all fonts. It does work for Courier, but not for -ProFontISOLatin1/Regular (strangely enough). You can verify this by giving the > +This also does not work for all fonts. It does work for Courier, but not for +ProFontISOLatin1/Regular (strangely enough). You can verify this by giving the > :digraphs @@ -270,30 +270,30 @@ because the ALT (aka COMMAND) keys are not passed to applications. Vim calls the various mouse buttons LeftMouse, MiddleMouse and RightMouse. If you use the default Mouse preference settings these names indeed correspond to -reality. Vim uses this mapping: +reality. Vim uses this mapping: Button 1 -> LeftMouse, Button 2 -> RightMouse, Button 3 -> MiddleMouse. If your mouse has fewer than 3 buttons you can provide your own mapping from -mouse clicks with modifier(s) to other mouse buttons. See the file +mouse clicks with modifier(s) to other mouse buttons. See the file vim-5.x/macros/swapmous.vim for an example. |gui-mouse-mapping| 12. Color names *beos-colors* -Vim has a number of color names built-in. Additional names are read from the -file $VIMRUNTIME/rgb.txt, if present. This file is basically the color -database from X. Names used from this file are cached for efficiency. +Vim has a number of color names built-in. Additional names are read from the +file $VIMRUNTIME/rgb.txt, if present. This file is basically the color +database from X. Names used from this file are cached for efficiency. 13. Compiling with Perl *beos-perl* -Compiling with Perl support enabled is slightly tricky. The Metrowerks -compiler has some strange ideas where to search for include files. Since +Compiling with Perl support enabled is slightly tricky. The Metrowerks +compiler has some strange ideas where to search for include files. Since several include files with Perl have the same names as some Vim header -files, the wrong ones get included. To fix this, run the following Perl +files, the wrong ones get included. To fix this, run the following Perl script while in the vim-5.0/src directory: > preproc.pl > perl.h diff --git a/en/os_risc.txt b/en/os_risc.txt index 9e3871a90..79f610617 100644 --- a/en/os_risc.txt +++ b/en/os_risc.txt @@ -1,4 +1,4 @@ -*os_risc.txt* For Vim version 6.3. Last change: 2004 May 01 +*os_risc.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Thomas Leonard @@ -47,9 +47,9 @@ distribution, but modified slightly to work within the limits of ADFS, plus some extra files such as the window templates. User choices are read from `Choices:*' and are saved to `<Choices$Write>.*'. -If you have the new !Boot structure then these should be set up already. If +If you have the new !Boot structure then these should be set up already. If not, set Choices$Path to a list of directories to search when looking for -user configuration files. Set Choices$Write to the directory you want files +user configuration files. Set Choices$Write to the directory you want files to be saved into (so your search patterns and marks can be remembered between sessions). @@ -58,7 +58,7 @@ sessions). 2. Filename munging All pathname munging is disabled by default, so Vim should behave like a -normal RISC OS application now. So, if you want to edit `doc/html' then you +normal RISC OS application now. So, if you want to edit `doc/html' then you actually type `*vi doc/html'. The only times munging is done is when: @@ -66,7 +66,7 @@ The only times munging is done is when: - Searching included files from C programs, since these are always munged. See |[I|. Note: make sure you are in the right directory when you use this - command (ie the one with subdirectories 'c' and 'h'). + command (i.e. the one with subdirectories 'c' and 'h'). - Sourcing files using |:so|. Paths starting `$VIM/' are munged like this: @@ -88,7 +88,7 @@ To use Vim from the command-line use the `*vi' command (or '*ex' for Type `*vi -h' for a list of options. Running the command-line version of Vim in a large high-color mode may cause -the scrolling to be very slow. Either change to a mode with fewer colors or +the scrolling to be very slow. Either change to a mode with fewer colors or use the GUI version. Also, holding down Ctrl will slow it down even more, and Ctrl-Shift will @@ -115,7 +115,7 @@ The global clipboard is supported, so you can select some text and then paste it directly into another application (provided it supports the clipboard too). -Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift +Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift when clicking Menu to paste (from the global clipboard). Dragging a file to the window replaces the CURRENT buffer (the one with the @@ -134,27 +134,27 @@ For fonts, you have the choice of the system font, an outline font, the system font via ZapRedraw and any of the Zap fonts via ZapRedraw: > :set guifont= -< To use the system font via the VDU drivers. Supports +< To use the system font via the VDU drivers. Supports bold and underline. > :set guifont=Corpus.Medium -< Use the named outline font. You can use any font, but +< Use the named outline font. You can use any font, but only monospaced ones like Corpus look right. > :set guifont=Corpus.Medium:w8:h12:b:i < As before, but with size of 8 point by 12 point, and in bold italic. If only one of width and height is given then that - value is used for both. If neither is given then 10 + value is used for both. If neither is given then 10 point is used. -Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name +Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name with '!' (or '!!' for double height), like this: > :set guifont=!! < Use the system font, but via ZapRedraw. This gives a faster redraw on StrongARM processors, but you can't - get bold or italic text. Double height. + get bold or italic text. Double height. > :set guifont=!script < Uses the named Zap font (a directory in VimFont$Path). @@ -164,12 +164,12 @@ with '!' (or '!!' for double height), like this: > currently, but you can use any of the Zap fonts if they are in VimFont$Path. Vim will try to load font files '0', 'B', 'I' and 'IB' - from the named directory. Only '0' (normal style) MUST - be present. Link files are not currently supported. + from the named directory. Only '0' (normal style) MUST + be present. Link files are not currently supported. Note that when using ZapRedraw the edit bar is drawn in front of the character -you are on rather than behind it. Also redraw is incorrect for screen modes -with eigen values of 0. If the font includes control characters then you can +you are on rather than behind it. Also redraw is incorrect for screen modes +with eigen values of 0. If the font includes control characters then you can get Vim to display them by changing the 'isprint' option. If you find the scrolling is too slow on your machine, try experimenting @@ -199,8 +199,8 @@ It seems to work pretty well now, using '*vi -T ansi'. If Vim crashes then the swap and backup files (if any) will be in the directories set with the 'directory' and 'bdir' options. By default the swap -files are in <Wimp$ScrapDir> (ie inside !Scrap) and backups are in the -directory you were saving to. Vim will allow you to try and recover the file +files are in <Wimp$ScrapDir> (i.e. inside !Scrap) and backups are in the +directory you were saving to. Vim will allow you to try and recover the file when you next try to edit it. To see a list of swap files, press <F12> and type `*vi -r'. @@ -223,13 +223,13 @@ command-line version, or press CTRL-C in the GUI version. *riscos-memory* 8. Memory usage -Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on -older machines then edit the !RunTxt and GVim files. I don't know what UnixLib +Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on +older machines then edit the !RunTxt and GVim files. I don't know what UnixLib does by default on these machines so I'm playing safe. It doesn't work at all well without dynamic areas, since it can't change its -memory allocation once running. Hence you should edit `!Vim.GVim' and -`!Vim.!RunTxt' to choose the best size for you. You probably need at least +memory allocation once running. Hence you should edit `!Vim.GVim' and +`!Vim.!RunTxt' to choose the best size for you. You probably need at least about 1400K. ============================================================================== @@ -237,11 +237,11 @@ about 1400K. 9. Filetypes You can now specify that autocommands are only executed for files of certain -types. The filetype is given in the form &xxx, when xxx is the filetype. +types. The filetype is given in the form &xxx, when xxx is the filetype. -Filetypes must be specified by number (eg &fff for Text). +Filetypes must be specified by number (e.g. &fff for Text). -The system has changed from version 5.3. The new sequence of events is: +The system has changed from version 5.3. The new sequence of events is: - A file is loaded. |'osfiletype'| is set to the RISC OS filetype. - Based on the filetype and pathname, Vim will try to set |'filetype'| to the @@ -264,7 +264,7 @@ Some examples may make this clearer: since many pathnames contain them. - You can prefix the command with '~', which stops any output from being - displayed. This also means that you don't have to press <Enter> afterwards, + displayed. This also means that you don't have to press <Enter> afterwards, and stops the screen from being redrawn. {only in the GUI version} ============================================================================== @@ -274,14 +274,14 @@ Some examples may make this clearer: Downloading everything you need: - Get the latest source distribution (see www.vim.org) -- Get the runtime environment files (eg these help files) +- Get the runtime environment files (e.g. these help files) - Get the `extra' archive (contains the RISC OS specific bits) - Get the RISC OS binary distribution (if possible) Unarchiving: -- Create a raFS disk and put the archives on it. +- Create a raFS disk and put the archives on it - Un-gzip them - Un-tar them (*tar xELf 50 archive/tar) @@ -289,9 +289,9 @@ Unarchiving: Recompiling the sources: - Create c, s, and h directories. -- Put all the header files in 'h' \ -- Put all the C files in `c' | And lose the extensions -- Put the assembler file (`swis/s') in 's' / +- Put all the header files in 'h'. \ +- Put all the C files in `c'. | And lose the extensions +- Put the assembler file (`swis/s') in 's'. / - Rename all the files in `proto' to `h', like this: raFS::VimSrc.source.proto.file/pro becomes @@ -300,9 +300,9 @@ Recompiling the sources: .pro" with _pro.h" -- Create a simple Makefile if desired and do '*make -k' - Use 'CC = gcc -DRISCOS -DUSE_GUI -O2 -x c' in the Makefile -- Save the binary as !Vim.Vim in the binary distribution +- Create a simple Makefile if desired and do '*make -k'. + Use 'CC = gcc -DRISCOS -DUSE_GUI -O2 -x c' in the Makefile. +- Save the binary as !Vim.Vim in the binary distribution. Updating the run-time environment: @@ -311,9 +311,9 @@ Updating the run-time environment: new files. - Remove files in `doc' not ending in `/txt', except for `tags'. - Lose the extensions from the files in `doc'. -- Edit the `doc.tags' file. Remove extensions from the second column: > +- Edit the `doc.tags' file. Remove extensions from the second column: > :%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/ -- Remove extensions from the syntax files. Split them into two directories +- Remove extensions from the syntax files. Split them into two directories to avoid the 77 entry limit on old ADFS filesystems. - Edit `Vim:FileType' to match `*.c.*' as well as `*/c' and so on. Add filetype checking too. diff --git a/ja/diff.jax b/ja/diff.jax index 10dc8d39d..be9683b31 100644 --- a/ja/diff.jax +++ b/ja/diff.jax @@ -1,9 +1,10 @@ COMMENT: 差分表示モード(+diff) -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*diff.txt* For Vim version 6.3. Last change: 2004 May 01 +*diff.txt* For Vim version 7.0. Last change: 2006 Apr 14 VIMリファレンスマニュアル by Bram Moolenaar @@ -45,12 +46,18 @@ Vimを通常どおり起動して、加えて引数で与えたファイル間 これは外部コマンドの"diff"が存在する場合にだけ動作する。'diffexpr'参照。 -Vimが各ファイルについてウィンドウを開く時には何が起こることは、|-O|引数を使っ -た時に起こることに似ている。これには垂直分割が使用される。水平分割を行ないたい -ならば|-o|引数を追加する: > +diff はカレントタブページ |tab-page| にローカルである。他のタブページにあるウ +ィンドウとの差分を見ることはできない。これによって、複数の差分を同時に見ること +が可能になっている。それぞれを別々のタブで開けばよい。 + +Vimが各ファイルについてウィンドウを開く時に起こることは、|-O|引数を使った時に +起こることに似ている。これには垂直分割が使用される。水平分割を行ないたいならば +|-o|引数を追加する: > vimdiff -o file1 file2 [file3] +常に水平分割にしたければ 'diffopt' に "horizontal" を含めること。 + 編集される各ファイルには以下のオプションが設定される: 'diff' on @@ -107,16 +114,30 @@ Vimが各ファイルについてウィンドウを開く時には何が起こ :vert diffsplit main.c~ :vert diffpatch /tmp/diff -< + +常に垂直分割にしたければ 'diffopt' に "vertical" を含めること。 + *E96* 'diff'オプションは最大で4つのバッファにまで同時に設定できる。 オプションの値はバッファへ記憶されるので、しばらくの間異なるファイルを編集し、 -また同じファイルへ戻って再び差分モードを継続することができる。差分モードを終了 -するには'diff'オプションをリセットする。恐らく折畳表示カラムを解放することを望 -むだろう: > +また同じファイルへ戻って再び差分モードを継続することができる。 + + *:diffo* *:diffoff* +:diffoff カレントウィンドウの差分モードを終了する。 - :set nodiff foldcolumn=0 +:diffoff! カレントタブページのすべてのウィンドウの差分モードを終了する + +コマンド ":diffoff" は関連するオプションをデフォルト値に戻す。 +これは差分モードが開始する前の値とは異なるかもしれない。その古い値は記憶され +ていない。 + + 'diff' オフ + 'scrollbind' オフ + 'scrollopt' "hor" なし + 'wrap' オン + 'foldmethod' "manual" + 'foldcolumn' 0 ============================================================================== 2. 差分を眺める *view-diffs* @@ -144,12 +165,14 @@ Vimが各ファイルについてウィンドウを開く時には何が起こ :!cp % tempfile :diffsplit tempfile -アンロードされたバッファは差分に使用することができない。しかし隠しバッファにつ -いては私用できる。バッファをアンロードすることなくウィンドウを閉じるのに -":hide"コマンドを使うことができる。 - +アンロードされたバッファの差分をとることはできない。隠れバッファの差分をとるこ +とはできる。コマンド ":hide" を使うと、バッファをアンロードせずにウィンドウを +閉じることができる。そのときバッファを差分対象から外したいならば、隠れバッファ +にする前に ":set nodiff" をする。 *:diffu* *:diffupdate* +:diffu[pdate] 差分の強調と折り畳みを更新する。 + テキストを変更した時には、Vimは差分情報を最新に保とうと試みる。これの大部分は 挿入と削除をされた行(複数も可)に着目して行なわれる。1行内で行なわれた変更、及び それよりも複雑な変更に対しては差分情報は更新されない。差分情報を強制的に更新す @@ -180,9 +203,10 @@ Vimは片方のウィンドウには存在しないがもう一方には存在 |hl-DiffChange| DiffChange 変更された行。 |hl-DiffText| DiffText 変更された行の中の変更されたテキスト。Vimは異 なる最初の文字と、最後の文字を発見する(検索は - 行末から行なわれる)。両バッファのテキストが強 - 調される。これはその間にあるテキストが例え同じ - だったとしても強調されることを意味する。 + 行末から行なわれる)。その文字の間のテキストが + 強調される。これはその間にあるテキストが例え同 + じだったとしても強調されることを意味する。ここ + では 'diffopt' の "iwhite" だけが適用される。 |hl-DiffDelete| DiffDelete 削除された行。補充された行についても、実際その バッファには存在していないことから、このグルー プが適用される。 @@ -202,6 +226,7 @@ Vimは片方のウィンドウには存在しないがもう一方には存在 ============================================================================== 4. 差分を写す *copy-diffs* *E99* *E100* *E101* *E102* *E103* + *merge* あるバッファから別のバッファへテキストを複写する2つのコマンドがある。結果的に ある範囲について2つのバッファの内容は等しくなる。 @@ -219,6 +244,8 @@ Vimは片方のウィンドウには存在しないがもう一方には存在 もう1つのバッファを現在のバッファと同じくなるように変更する。 ":diffget"と同様だが現在のバッファではなく、もう一方のバッファ が変更を受ける。 + [bufspec] が省略され、かつ 'modifiable' がオンで差分モードにあ + るバッファが2個以上あると、このコマンドは失敗する。 [range]については以下を参照。 *do* @@ -245,6 +272,10 @@ dp 引数と範囲のない":diffput"と同じ。 いことに注意。消された範囲にカーソルを移動することはできない。もう一方のバッ ファから、削除された行を":diffget"で取得するには対象行の下方で行なう必要があ る。 + *E787* +変更を受けるバッファが読み込み専用で、 |FileChangedRO| で引き起こされる自動コ +マンドがバッファを変更するとき、このコマンドは失敗する。 +この自動コマンドはバッファを変更してはならない。 引数 [bufspec]にはバッファ番号、バッファ名のパターンもしくはバッファ名の一部を 使用できる。例: @@ -328,6 +359,9 @@ Vimは差分の出力結果が妥当であるか検証する。妥当でない エラーメッセージがよくわからないときは'verbose'オプションを設定してより多くの メッセージを見ることができる。 +インストーラつきの Vim には diff プログラムを含んでいる。diff プログラムを持っ +ていないなら、次のサイトなどから diff.exe をダウンロードするとよい。 + パッチを使用する *diff-patchexpr* @@ -350,8 +384,8 @@ Vimは差分の出力結果が妥当であるか検証する。妥当でない 例 (これは'patchexpr'を空にしたのと同じ働きをする): > - let patchexpr=MyPatch - function MyPatch + set patchexpr=MyPatch() + function MyPatch() :call system("patch -o " . v:fname_out . " " . v:fname_in . \ " < " . v:fname_diff) endfunction diff --git a/ja/filetype.jax b/ja/filetype.jax index f7f5509e8..cbd87445a 100644 --- a/ja/filetype.jax +++ b/ja/filetype.jax @@ -1,9 +1,10 @@ COMMENT: ファイル形式の自動判別 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*filetype.txt* For Vim version 6.3. Last change: 2004 May 05 +*filetype.txt* For Vim version 7.0. Last change: 2006 Apr 28 VIMリファレンスマニュアル by Bram Moolenaar @@ -49,15 +50,20 @@ NOTE: Viコンパチブルとは全てのオプションがグローバルであ きない時には、ファイルの内容を検出するために$VIMRUNTIME/scripts.vimが 使用される。 -独自のファイルタイプを追加するには、下の|new-filetype|を参照。 +独自のファイルタイプを追加するには、下の|new-filetype|を参照。あるファイルタイ +プについてのヘルプを検索するには、ファイルタイプ名の前に "ft-" をつけ、さらに +必要に応じて "-syntax", "-indent", "-plugin" をつける。例: > + :help ft-vim-indent + :help ft-vim-syntax + :help ft-man-plugin ファイル形式を自動的に検出できなかった場合や、間違った形式になってしまった場合 には、'filetype'オプションを手動で設定するか、ファイルにモード行(modeline)を追 加する選択肢がある。例として、IDLファイルに設定するにはこのコマンドを使うか: :set filetype=idl -この|modeline|をファイルに追加する: > - /* vim: set filetype=idl : */ -< +この|modeline|をファイルに追加する: + /* vim: set filetype=idl : */ ~ + *:filetype-plugin-on* ファイル形式別プラグインのロードを有効化するには: > :filetype plugin on @@ -90,6 +96,10 @@ You can disable it again with: > ファイル形式の検出自体は無効にならない。しかしながらファイル形式の検出を無効に した場合には、インデントファイルもロードされなくなる。 これは実際には'runtimepath'にある"indoff.vim"をロードする。 +そうすると、これから開くファイルに対して自動インデントが無効になる。すでに開い +ているファイルに対しては何も変わらない。すでに開いているファイルに対して自動イ +ンデントを無効にするには 'autoindent', 'cindent', 'smartindent', 'indentexpr' +をオフにする。 *:filetype-off* ファイル形式の検出を無効にするには、次のコマンドを使用する: > @@ -139,16 +149,17 @@ You can disable it again with: > きる: ファイル名 変数 ~ - *.asa g:filetype_asa |aspvbs-syntax| |aspperl-syntax| - *.asp g:filetype_asp |aspvbs-syntax| |aspperl-syntax| - *.asm g:asmsyntax |asm-syntax| + *.asa g:filetype_asa |ft-aspvbs-syntax| |ft-aspperl-syntax| + *.asp g:filetype_asp |ft-aspvbs-syntax| |ft-aspperl-syntax| + *.asm g:asmsyntax |ft-asm-syntax| *.prg g:filetype_prg *.pl g:filetype_pl *.inc g:filetype_inc - *.w g:filetype_w |cweb-syntax| - *.i g:filetype_i |progress-syntax| - *.p g:filetype_p |pascal-syntax| - *.sh g:bash_is_sh |sh-syntax| + *.w g:filetype_w |ft-cweb-syntax| + *.i g:filetype_i |ft-progress-syntax| + *.p g:filetype_p |ft-pascal-syntax| + *.sh g:bash_is_sh |ft-sh-syntax| + *.tex g:tex_flavor |ft-tex-plugin| *filetype-ignore* 特定のファイルが検査されないようにするには、g:ft_ignore_pat 変数を使います。こ @@ -158,14 +169,14 @@ You can disable it again with: > *new-filetype* 使いたいファイル形式がVimに検出されない(存在しない)場合には、その形式を追加す -る3つの方法がある。どちらにせよファイル$VIMRUNTIME/filetype.vimは変更するべき +る4つの方法がある。どちらにせよファイル$VIMRUNTIME/filetype.vimは変更するべき ではない。そのファイルは新しいVimをインストールする際に上書されるのだから。 A. デフォルトのファイルタイプの検査をくつがえす。 この方法はファイルタイプごとにファイルを作ることで機能する。不便な点は ファイルがたくさんになってしまうこと。便利な点は適切なディレクトリにファ イルを置くだけで機能すること。 - + *ftdetect* 1. ユーザランタイムディレクトリを作成する。通常は'runtimepath'オプション に記載される最初の項目使えば良い。次にそのディレクトリに"ftdetect"とい うディレクトリを作成する。UNIXを例に挙げる: @@ -182,10 +193,12 @@ A. デフォルトのファイルタイプの検査をくつがえす。 トリに保存する。UNIXを例に挙げる: > :w ~/.vim/ftdetect/mine.vim < - 3. 新しいファイル形式の検出を有効化するためにVimを再起動する。 + 3. 新しいファイル形式の検出を有効化するにはVimを再起動しなければならない。 "ftdetect" ディレクトリの中のファイルはデフォルトの検査のあとに使われるの - で、それ以前に決定したファイルタイプを変更することができる。 + で、それ以前に決定したファイルタイプを変更することができる。しかしここで + |:setfiletype|を使えば、それ以前に決定したファイルタイプをそのままにしてお + くこともできる。 B. デフォルトのファイルタイプの検査の後にファイルタイプを決定する。 @@ -384,7 +397,7 @@ OSによる「形式」を利用するには自動実行コマンドの検出パ 3. 標準で付属する形式別プラグインの解説 *ftplugin-docs* -チェンジログ(CHANGELOG) *changelog-plugin* +チェンジログ(CHANGELOG) *ft-changelog-plugin* (訳注)エントリ=日付ごとの区切り アイテム=日付内の項目 @@ -406,7 +419,7 @@ NewChangelogEntry 適切にアイテムを追加する(以下参照)。 NOTE: グローバルマッピングはあらかじめ frplugin/changelog.vim を実行することで有効になる。 例えば - runtime ftplugin/man.vim + runtime ftplugin/changelog.vim と |.vimrc| に書くようにして。 (訳注)この例だと間違えてこのまま書いちゃいそう。 <Leader>o カレントディレクトリに"ChangeLog"というファイルがあ @@ -462,7 +475,7 @@ g:changelog_date_entry_search ムを加える。なければ新しいエントリとアイテムをファイルの先頭に加える。 -フォートラン(FORTRAN) *fortran-plugin* +フォートラン(FORTRAN) *ft-fortran-plugin* オプション: 'expandtab' .vimrcでfortran_have_tabsが指定されなければ、フォートラン標準 @@ -471,11 +484,11 @@ g:changelog_date_entry_search ソースでは80に設定される。 'formatoptions' コードとコメントを分けて、長い行を保持するように設定される。 これにより|gq|でコメントを整形できる。 -fortran_have_tabsについての議論とソース形式の判定法については|fortran-syntax| -を参照。 +fortran_have_tabsについての議論とソース形式の判定法については +|ft-fortran-syntax|を参照。 -メール(MAIL) *mail-plugin* +メール(MAIL) *ft-mail-plugin* オプション: 'modeline' トロイの木馬の危険を避けるのと、「件名」に含まれる"Vim:"がエ @@ -492,7 +505,7 @@ fortran_have_tabsについての議論とソース形式の判定法について 位置からファイル末端までのテキストを引用する。これは全ての行に "> " が 挿入されることを意味している。 -MAN *man-plugin* *:Man* +MAN *ft-man-plugin* *:Man* マニュアルページを洗練された方法で表示する。ユーザーマニュアルの |find-manpage|もご覧ください。 @@ -520,10 +533,29 @@ CTRL-] カーソルの下の単語についてのマニュアルページへ移 CTRL-T 直前のマニュアルページへ戻る。 -RPM SPEC *spec-plugin* +RPM SPEC *ft-spec-plugin* このプラグインに関する説明は非常に多いので、別のファイル |pi_spec.txt| に記述 してある。 +SQL *ft-sql* + +このプラグインについての解説は長くなるので、別のファイルに分割してある: +|sql.txt| + + +TEX *ft-tex-plugin* + +*.tex ファイルの最初の行が次のような形なら > + %&<format> +ファイルタイプは次のどれかになる: plaintex (プレイン TeX), context (ConTeXt), +tex (LaTeX)。そうでなければ context か tex かを決定するためにファイル内からキ +ーワードを検索する。もしキーワードが見つからなければ既定値として plaintex にな +る。この既定値は、変数 g:tex_flavor を定義すれば変更することができる。次のどれ +かのようにする: > + let g:tex_flavor = "plain" + let g:tex_flavor = "context" + let g:tex_flavor = "latex" +現在のところこれ以外のフォーマットは識別されない。 vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_390.jax b/ja/os_390.jax index 9a4cda35e..37d6afaa4 100644 --- a/ja/os_390.jax +++ b/ja/os_390.jax @@ -1,40 +1,38 @@ COMMENT: OS特有情報:OS/390 -STATUS: finished 6.1 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*os_390.txt* For Vim version 6.1. Last change: 2001 Sep 08 +*os_390.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIMリファレンスマニュアル by Ralf Schandl + *zOS* *z/OS* *OS390* *os390* *MVS* +このファイルには z/OS Unix 上の Vim についての事項が書かれている。 - *OS390* *os390* -このファイルにはOS/390 Unix上のVimについての事項が書かれている。 +1. z/OS UNIX 上のオープンソース |zOS-open-source| +2. ご意見募集中 |zOS-feedback| +3. z/OS UNIX で Vim を構築する |zOS-building| +4. ASCII/EBCDIC 依存のスクリプト |zOS-has-ebcdic| +5. XTerm の問題 |zOS-xterm| +6. Motif の問題 |zOS-Motif| +7. バグ |zOS-Bugs| +8. 既知の問題点 |zOS-weaknesses| +9. 変更点 |zOS-changes| -1. ご意見募集中 |OS390-feedback| -2. OS/390 UnixでVimを構築する |OS390-building| -3. ASCII/EBCDIC依存のスクリプト |OS390-has-ebcdic| -4. XTermの問題 |OS390-xterm| -5. Motifの問題 |OS390-Motif| -6. 既知の問題点 |OS390-weaknesses| -7. 変更点 |OS390-changes| +免責事項: ~ +著者は IBM の従業員だが、IBM はこの移植について何の責任も持たない。これは個人 +的な興味によるものであり、これが他の人々にとって有用だろうと考えて提供している。 -OS/390 Unixへの移植はRalf Schandl <schandl@de.ibm.com>によって後で述べる -Redbookのために行なわれた。 +このソフトウェアは IBM のいかなる公式のテストも受けていなく、AS IS で提供され +ていることに注意してください。このソフトウェアのサポートに関して IBM に連絡を +取ることはしないでください。これは公式な IBM 製品の一部ではありません。これに +はサポートはありませんし、IBM とは一切関係ありません。 -免責事項: -著者はIBMの関係者だが個人的な興味によるものであり、、IBMはこの移植について何の -責任も持たない。この移植について何か問題があれば著者に連絡を取って欲しい。 - -OS/390 Unixでもより多くのオープンソースソフトウェアを使用したいならば、以下の -Redbook (www.redbook.ibm.com) を参照すること: -(訳注:24-Jun-2002現在、このURLは存在しないようだ) - - Mike MacIsaak et al - "Open Source Software on OS/390 Unix" - SG24-5944-00 - -著者の知る限りではこのRedbookの新版は2001年にリリース予定である。 +貢献者: ~ +z/OS Unix への移植は Ralf Schandl <schandl@de.ibm.com> によって後で述べる +Redbook のために行なわれた。 以下の方々からパッチやバグレポートを戴いた: @@ -42,75 +40,105 @@ Redbook (www.redbook.ibm.com) を参照すること: Anthony Giorgio and others +このドキュメントは Ralf Schandl によって書かれ、Anthony Giorgio によって校正さ +れた。 + +============================================================================== +1. z/OS UNIX 上のオープンソース *OS390-open-source* *zOS-open-source* + +z/OS UNIX 上の他のオープンソースソフトウェアに興味があるなら、以下の Redbook +を参照すること: + + Mike MacIsaac et al + "Open Source Software for z/OS and OS/390 UNIX" + IBM Form Number: SG24-5944-01 + ISBN: 0738424633 + +次のサイトでより詳しい情報の入手、Redbook のハードコピー版の注文、PDF 版のダウ +ンロードができる: + + http://www.redbooks.ibm.com + ============================================================================== -1. ご意見募集中 *OS390-feedback* +2. ご意見募集中 *OS390-feedback* *zOS-feedback* -OS/390 UnixでVimを動かすために多くのコードを変更した。多くのUNIXプログラム同 -様、Vimは非常にASCIIに依存している。見逃したASCII依存性があったり、新機能やバ -グ修正で新たなものが付け加えらているかもしれない。多くのプログラマは -ASCII/EBCDICで起こり得る問題に、単に注意を払わない。もしもそれに関連する問題を -みつけたら、上に示した著者のemailアドレスへ気兼ねなく知らせて欲しい。 +標準の IBM z/OS UNIX メインフレーム上で細かい設定なしにVim をコンパイル、リン +クできるはずである。著者は個人的に z/OS V1R2 と V1R3 上で問題なく動作させて +いる。 + +z/OS UNIX で Vim を動かすために多くのコードを変更した。多くの UNIX プログラム +同様、Vim は非常に ASCII に依存している。見逃した ASCII 依存性があったり、新機 +能やバグ修正で新たなものが付け加えらているかもしれない。多くのプログラマは +ASCII/EBCDIC で起こり得る問題に、単に注意を払わない。もしもそれに関連する問題 +をみつけたら、上に示した著者の email アドレスへ気兼ねなく知らせて欲しい。 + +ASCII/EBCDIC 変換問題の兆候は、印字不能な文字によるスクリーンの乱れである。たと +えば、あるときは Vim のエラーベルが正常に動作しなかった。Vim がターミナルのベ +ルを鳴らすとき、ASCII の文字 0x07 を出力する。これはほとんどのターミナルでは正 +しく動作するが、EBCDIC のターミナルではうまくいかない。正しい解決法は、EBCDIC +システム上のベル文字を別に定義することである。 バグをレポートしてもらえれば、恐らく修正することができるだろう。誰か別の人がレ ポートするとは期待しないで欲しい!。|bug-reports|のセクションも参照のこと。 - ============================================================================== -2. OS/390 UnixでVimを構築する *OS390-building* +3. z/OS UNIX で Vim を構築する *OS390-building* *zOS-building* まずデバッグコードについて一言: ~ -普通にconfigureを実行すると、実行ファイルへデバッグ用の情報を付加するためにオ -プション'-g'が追加される。この情報は通常インストール時にstripコマンドによって -実行ファイルから取り除かれる。OS/390 Unixでは、実行ファイルからこの情報を取り -除くことはできない。stripコマンドはOS/390 Unixに存在するし、インストール時には -呼び出されはするが、実際には何もしない。 +普通に configure を実行すると、実行ファイルへデバッグ用の情報を付加するために +オプション '-g' が追加される。この情報は通常インストール時に strip コマンドに +よって実行ファイルから取り除かれる。z/OS UNIX では、実行ファイルからこの情報 +を取り除くことはできない。strip コマンドは z/OS UNIX に存在するし、インストー +ル時には呼び出されはするが、実際には何もしない。strip の呼び出しは 'touch' コ +マンドと等価である。これはコンパイラが生成するオブジェクト内にデバッグシンボル +を埋め込むやり方のせいである。 -デバッグコード抜きでVimを構築したいならば、configureを実行する前に環境変数 -CFLAGSを空に設定する。 +デバッグコード抜きで Vim を構築したいならば、configure を実行する前に環境変数 +CFLAGS を空に設定する。 > export CFLAGS="" < -X11無しで構築する: ~ +X11 無しで構築する: ~ -NOTE: 著者はVimを構築するのにいつもccを使っている。c89は試したことが無い。 +Note: Vim を構築するのには cc を使うこと。c89 コンパイラは厳格な構文チェックを +備えていて、Vim を正しくコンパイルできない。 -X11をサポートしないVimを構築するならば、コンパイルとビルドは一本道ではあるが、 -configureとmakeを実行する前に_CC_CCMODE=1を設定するのを忘れないこと。 +X11 をサポートしない Vim を構築するならば、コンパイルとビルドは一本道ではある +が、configure と make を実行する前に _CC_CCMODE=1 を設定するのを忘れないこと。 > $ export _CC_CCMODE=1 $./configure --with-features=big --without-x --enable-gui=no $ make $ make test < - NOTE: gzipをインストールしていない場合は11番のテストが失敗する。42番は - OS/390 UnixのVimがマルチバイト文字に対応していないために失敗する。 - (David Moore曰く:『まだ』動かない!! :-) 何ができるかはわかるだろう) - 07-Sep-2001の時点では45番(折畳)が失敗する。 + Note: gzip をインストールしていない場合は11番のテストが失敗する。42番は + z/OS UNIX の Vim がマルチバイト文字に対応していないために失敗する。 + (David Moore 曰く:『まだ』動かない!! :-) 何ができるかはわかるだろう) > $ make install < -X11付きで構築する: ~ +X11 付きで構築する: ~ -X11をサポートするVimを構築する方法は2つある。X11と静的に結合する方法とX11のDLL -に動的に結合する方法とがある。静的結合は巨大な(約13MB)の実行ファイルを生成し、 -動的結合はそれよりも小さい(約4.5MB)の実行ファイルを生成する。 +X11 をサポートする Vim を構築する方法は2つある。X11 と静的に結合する方法と X11 +の DLL に動的に結合する方法とがある。静的結合は巨大な(約13MB)の実行ファイルを +生成し、動的結合はそれよりも小さい(約4.5MB)の実行ファイルを生成する。 -Motifを使う場合の手順を示す: +Motif を使う場合の手順を示す: a) 静的結合: > $ configure --with-features=big --enable-gui=motif $ make < - これでX11ライブラリと静的に結合される。 + これで X11 ライブラリと静的に結合される。 b) 動的結合: - Vimを静的結合で述べた方法でメイクしする。それからauto/link.sedに以下を追 + Vim を静的結合で述べた方法でメイクする。それから auto/link.sed に以下を追 加する: > s%-lXm *%/usr/lib/Xm.x %g s%-lX11 *%/usr/lib/X11.x %g @@ -121,16 +149,15 @@ Motifを使う場合の手順を示す: $ rm vim $ make < - これでVimはX11のDLLと動的に結合される。 - -ファイルlink.sedがどのように働くかはMakefileとlink.shを参照。 + これで Vim は X11 の DLL と動的に結合される。 +ファイル link.sed がどのように働くかは Makefile と link.sh を参照。 ============================================================================== -3. 依存のスクリプト *OS390-has-ebcdic* +4. ASCII/EBCDIC に依存のスクリプト *OS390-has-ebcdic* *zOS-has-ebcdic* -Vimスクリプト用に"ebcdic"機能が追加された。ASCIIに依存したスクリプトは、以下の -ようにすることで修正可能である: > +Vim スクリプト用に "ebcdic" 機能が追加された。ASCII に依存したスクリプトは、以 +下のようにすることで修正可能である: > if has("ebcdic") let space = 64 @@ -140,45 +167,65 @@ Vimスクリプト用に"ebcdic"機能が追加された。ASCIIに依存した < ============================================================================== -4. XTermの問題 *OS390-xterm* +5. XTerm の問題 *OS390-has-ebcdic* *zOS-has-ebcdic* + +Note: この問題はバージョン 6.1b で解決された。 ~ -OS390 UnixのXTermには1つ問題がある。termlibデータベース内のカーソルを左に動か -す端末コードが間違っている。もしかしたら間違っていないのかもしれないが、Vimの -構文強調やコマンドラインでカーソルの移動が正しく動作しない。 +z/OS UNIX の XTerm には1つ問題がある。termlib データベース内のカーソルを左に動 +かす端末コードが間違っている。もしかしたら間違っていないのかもしれないが、Vim +の構文強調やコマンドラインでカーソルの移動が正しく動作しない。 -入力中に強調が乱れそれでも<C-L>で修正できる場合や、コマンドラインでカーソルを -左に動かせない時には、次の設定: > +入力中に強調が乱れそれでも <C-L> で修正できる場合や、コマンドラインでカーソル +を左に動かせない時には、次の設定: > :set t_le=^H < -をファイル.vimrcに試しに追加する。 NOTE: '^H'は1つの制御文字で、入力するには -<C-V><C-H>をタイプする。 +をファイル .vimrc に試しに追加する。 Note: '^H' は1つの制御文字で、入力するに +は <C-V><C-H> をタイプする。 ============================================================================== -5. Motifの問題 *OS390-Motif* +6. Motifの問題 *OS390-Motif* *zOS-Motif* -メニュー用に記憶されている文字の、MotifライブラリによるEBCDICからASCIIへの変換 -は、忘れられているように見える。手動で変換するように試してみたが、メニューを開 -くところ(ファイルメニューを開く<Alt-F>)までしか働かず、メニュー項目を選択する -こと(ファイルブラウザを開く<Alt-F>O)はできない。まだ解決法が見つかっていない。 +Motif ライブラリの z/OS への移植において、プルダウンメニューのアクセラレータ文 +字を EBCDIC から ASCII への変換することが忘れられているように思える。 +手動で変換するように試してみたが、メニューを開くところ (ファイルメニューを開く + <Alt-F>) までしか働かず、メニュー項目を選択すること (ファイルブラウザを開く + <Alt-F>O) はできない。 +まだ解決法が見つかっていない。 ============================================================================== -6. 既知の問題点 *OS390-weaknesses* +7. バグ *OS390-bugs* *zOS-Bugs* + +- ビジュアルブロックモードで長大なテキストを選択すると常にハングする。これはメ + モリ破壊による可能性がある。ターミナルと GUI 版両方で起きる。 + +============================================================================== +8. 既知の問題点 *OS390-weaknesses* *zOS-weaknesses* - タグファイルには二分検索を使っていない - /bin/sortはデフォルトでASCIIの値を使って並べ替えを行なう。このプログラムは - tagsを並べ替えるのにctagにより通常使われている。いつかはそれを正しく扱える - ctagsがリリースされるかもしれないが、いつになるかはわからない。もしかしたら - 永遠にリリースされないかもしれないし… + /bin/sort はデフォルトで ASCII の値を使って並べ替えを行なう。このプログラム + は tags を並べ替えるのに ctag により通常使われている。いつかはそれを正しく扱 + える ctags がリリースされるかもしれないが、いつになるかはわからない。もしか + したら 永遠にリリースされないかもしれないし… - マルチバイト文字(utf-8)サポートは動作しない。コンパイル時に無効にしている。 (|multibyte|) - +- 著者のメインフレーム上で使っている cscope のバージョンでは、cscope インター + フェイス(|cscope|)は動作しない。著者が使っているのはバージョン 15.0b12 で、 + これを使って Vim でコマンド "cscope add" を実行すると、Vim がハングする。 + cscope のデータベースのバイナリフォーマットが Vim が期待するものと異なるの + ではないかと推測している。cscope の現在のバージョン(15.3)を z/OS へ移植しよ + うとしたが、うまくいっていない。興味のある方がおられたら、なにか進展があっ + たときは著者にご連絡ください。 + +- glib/gtk はサポートしていない。著者は z/OS UNIX 上で glib をコンパイルするこ + とはできなかった。そのため、すてきな gtk ツールバーなしで生きていかねばなら + ない。 + テストされていない機能: - Perl インターフェイス (|perl|) - ハングル文字入力 (|hangul|) - - Cscope インターフェイス (|cscope|) - 暗号化サポート (|encryption|) - Langmap (|'langmap'|) - Python インターフェース (|Python|) @@ -190,12 +237,26 @@ OS390 UnixのXTermには1つ問題がある。termlibデータベース内のカ もしもこれらを試してみて動いたならば著者に是非知らせてほしい!! ============================================================================== -7. 変更点 *OS390-changes* +9. 変更点 *OS390-changes* *zOS-changes* -これはEBCDIC/OS390のために成された全ての変更を含んでいるわけではない。単に著者 +これは z/OS のために成された全ての変更を含んでいるわけではない。単に著者 の参照用メモである。 (訳注: なので以下は翻訳しない) +6.1b (beta): + Changed KS_LE in term.c to be "\b" instead of "\010" This fixed the + screen corruption problems in gVim reported by Anthony Giorgio. + + Anthony Giorgio updated this document: + - Changed OS/390 to z/OS where appropriate. IBM decided to rename + all of its servers and operating systems. z/OS and OS/390 + are the same product, but the version numbering system was + reset for the name change (e.g. OS/390 V2R11 == z/OS V1R1). + - Added information about second edition of the Open Source Redbook. + - Moved Redbook information to a separate section. + - Various tweaks and changes. + - Updated testing section. + 6.0au: Changed configure.in Changed documentation. diff --git a/ja/os_amiga.jax b/ja/os_amiga.jax index 89fb71c53..7e73064ce 100644 --- a/ja/os_amiga.jax +++ b/ja/os_amiga.jax @@ -1,9 +1,10 @@ -COMMENT: -STATUS: finished 6.3.054 +COMMENT: OS特有情報:Amiga +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*os_amiga.txt* For Vim version 6.3. Last change: 2004 Apr 25 +*os_amiga.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -34,6 +35,12 @@ digraph を使わない場合は、|+digraphs| 機能を無効にして再コン TERMCAP オプション付きで再コンパイルします。Manx 5.x と SAS 6.x つきでコンパイ ルされます。makefile と feature.h を参照してください。 +構文強調がオンになっているときや、検索にネストしたワイルドカードを含めたときに +Vim がクラッシュしたら、それはスタックが小さすぎる可能性があります。スタックサ +イズを大きくしてみてください。Vim を起動する前にシェル内で Stack コマンドを使 +います。workbench では Vim のアイコンを選択し、workbench の "Info" メニューを +選択し、フォーム内の Stack フィールドを変更します。 + もし異なる色を使いたい場合は、termcap コードを設定してください: t_mr (反転テキスト) t_md (太字テキスト) diff --git a/ja/os_beos.jax b/ja/os_beos.jax index f2b62732f..5e93c300c 100644 --- a/ja/os_beos.jax +++ b/ja/os_beos.jax @@ -1,8 +1,8 @@ COMMENT: OS特有情報:BeOS -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*os_beos.txt* For Vim version 6.3. Last change: 2004 May 01 +*os_beos.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/ja/os_risc.jax b/ja/os_risc.jax index a43e5cabe..f5f92b094 100644 --- a/ja/os_risc.jax +++ b/ja/os_risc.jax @@ -1,8 +1,8 @@ COMMENT: OS特有情報:RISC OS -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*os_risc.txt* For Vim version 6.3. Last change: 2004 May 01 +*os_risc.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIMリファレンスマニュアル by Thomas Leonard diff --git a/ja/pi_gzip.jax b/ja/pi_gzip.jax index 76b2ca81b..675429aa2 100644 --- a/ja/pi_gzip.jax +++ b/ja/pi_gzip.jax @@ -1,5 +1,5 @@ COMMENT: プラグイン:圧縮ファイルの編集 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> *pi_gzip.txt* For Vim version 7.0. Last change: 2002 Oct 29 From e4cc67bf67d528135479e9e9481d732f1bce566e Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sun, 15 Oct 2006 14:39:00 +0000 Subject: [PATCH 068/783] fix: update fold to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@68 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/fold.txt | 24 +++++++++++++----------- ja/fold.jax | 15 +++++++++------ 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/en/fold.txt b/en/fold.txt index 3a7ba38c8..d29fa4cf1 100644 --- a/en/fold.txt +++ b/en/fold.txt @@ -1,4 +1,4 @@ -*fold.txt* For Vim version 6.3. Last change: 2004 May 20 +*fold.txt* For Vim version 7.0. Last change: 2006 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -109,6 +109,7 @@ level of the previous line. There must be no side effects from the expression. The text in the buffer, cursor position, the search patterns, options etc. must not be changed. +You can change and restore them if you are careful. If there is some error in the expression, or the resulting value isn't recognized, there is no error message and the fold level will be zero. @@ -190,11 +191,11 @@ and the level given by the marker: 3. if a marker with a lower fold level is found, all folds up to and including this level end and a fold with the specified level starts. -The number indicates the fold level. A zero cannot be used. -You can use "}}}" with a digit to indicate the level of the fold that -ends. The fold level of the following line will be one less than the -indicated level. Note that Vim doesn't look back to the level of the matching -marker (that would take too much time). Example: > +The number indicates the fold level. A zero cannot be used (a marker with +level zero is ignored). You can use "}}}" with a digit to indicate the level +of the fold that ends. The fold level of the following line will be one less +than the indicated level. Note that Vim doesn't look back to the level of the +matching marker (that would take too much time). Example: > {{{1 fold level here is 1 @@ -279,7 +280,7 @@ zF Create a fold for N lines. Works like "zf". Create a fold for the lines in {range}. Works like "zf". *zd* *E351* -zd Delete one fold at the cursor. When the cursor is on folded +zd Delete one fold at the cursor. When the cursor is on a folded line, that fold is deleted. Nested folds are moved one level up. In Visual mode all folds (partially) in the selected area are deleted. Careful: This easily deletes more folds than you @@ -330,7 +331,7 @@ zC Close all folds under the cursor recursively. Folds that 'foldenable' will be set. *za* -za When on a closed fold: open it. When folds are nested, you +za When on a closed fold: open it. When folds are nested, you may have to use "za" several times. When a count is given, that many closed folds are opened. When on an open fold: close it and set 'foldenable'. This @@ -457,7 +458,7 @@ FOLDLEVEL *fold-foldlevel* 'foldlevel' is a number option: The higher the more folded regions are open. When 'foldlevel' is 0, all folds are closed. -When 'foldlevel' is positive, some folds closed. +When 'foldlevel' is positive, some folds are closed. When 'foldlevel' is very high, all folds are open. 'foldlevel' is applied when it is changed. After that manually folds can be opened and closed. @@ -512,7 +513,8 @@ FOLDCOLUMN *fold-foldcolumn* 'foldcolumn' is a number, which sets the width for a column on the side of the window to indicate folds. When it is zero, there is no foldcolumn. A normal -value is 4 or 5. The minimal useful value is 2. The maximum is 12. +value is 4 or 5. The minimal useful value is 2, although 1 still provides +some information. The maximum is 12. An open fold is indicated with a column that has a '-' at the top and '|' characters below it. This column stops where the open fold stops. When folds @@ -564,7 +566,7 @@ When using an operator, a closed fold is included as a whole. Thus "dl" deletes the whole closed fold under the cursor. For Ex commands the range is adjusted to always start at the first line of a -fold and end at the last line of a fold. Thus this command: > +closed fold and end at the last line of a closed fold. Thus this command: > :s/foo/bar/g when used with the cursor on a closed fold, will replace "foo" with "bar" in all lines of the fold. diff --git a/ja/fold.jax b/ja/fold.jax index fc3b3e482..8abf39b4a 100644 --- a/ja/fold.jax +++ b/ja/fold.jax @@ -2,8 +2,9 @@ COMMENT: 折畳み機能 STATUS: finished 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*fold.txt* For Vim version 6.3. Last change: 2004 May 20 +*fold.txt* For Vim version 7.0. Last change: 2006 Mar 29 VIMリファレンスマニュアル by Bram Moolenaar @@ -108,6 +109,7 @@ Cではプリプロセッサ行を無視するために"#"を使用する。 式に副作用があってはならない。バッファ内のテキストや、カーソルの位置や、検索パ ターンん、オプションその他。どれひとつ変更してはならない。 +ただし、注意深く行えば、変更してもそれを復元しておけばよい。 式にエラーがあるか、結果が認識できない時には、何のエラーメッセージも表示せずに 折畳レベルは0に設定される。'debug'オプションに"msg"を設定すれば、エラーメッ @@ -183,10 +185,11 @@ NOTE: 各行について式評価が実行されるので、この折畳方式 3. 低い折畳レベルの印を見つけた時には、指定されたレベル以上の全部の折畳を終了 し、指定されたレベルで新たな折畳が開始する。 -番号は折畳レベルを示す。0を使うことはできない。特定のレベルの折畳を終了させる -ため "}}}" 数字を付けて使うことができる。その印の直後の行の折畳レベルは示され -たレベルよりも1つだけ低くなる。Vimは指定されたレベルにマッチする印を検索はしな -いことに注意(計算に時間がかかりすぎてしまうので)。例: > +番号は折畳レベルを示す。0を使うことはできない(レベル0の印は無視される)。特定の +レベルの折畳を終了させるため "}}}" 数字を付けて使うことができる。その印の直後 +の行の折畳レベルは示されたレベルよりも1つだけ低くなる。Vimは指定されたレベルに +マッチする印を検索はしないことに注意(計算に時間がかかりすぎてしまうので)。 +例: > {{{1 ここからレベル1の折畳 @@ -500,7 +503,7 @@ zk カーソルより上方の折畳へ移動する。閉じられた折畳が1 'foldcolumn'は、ウィンドウの端に確保される折畳を示すカラムの幅を指定する数。0 ならば、折畳表示カラムは確保されない。通常は4から5が一般的。使い物になる最小値 -は2。最大値は12。 +は2であるが、1にしてもいくらかの情報を提供する。最大値は12。 折畳表示カラムには、開いた折畳の先頭に'-' が続いて '|'が表示される。このカラム は開いた折畳が終了した位置で終了する。入れ子になった折畳では、それを含む折畳の From 8fb21b1d3c8e0bd6b7c5055aac3d8d705c32ff9d Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sun, 15 Oct 2006 15:15:51 +0000 Subject: [PATCH 069/783] fix: update message to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@69 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/message.txt | 94 ++++++++++++++++++++++++++++++++++++++++---------- ja/message.jax | 91 ++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 147 insertions(+), 38 deletions(-) diff --git a/en/message.txt b/en/message.txt index 6232a1385..0c3a6a232 100644 --- a/en/message.txt +++ b/en/message.txt @@ -1,4 +1,4 @@ -*message.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*message.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -19,7 +19,16 @@ The ":messages" command can be used to view previously given messages. This is especially useful when messages have been overwritten or truncated. This depends on the 'shortmess' option. -The number of remembered messages is fixed at 20. +The number of remembered messages is fixed at 20 for the tiny version and 100 +for other versions. + + *g<* +The "g<" command can be used to see the last page of previous command output. +This is especially useful if you accidentally typed <Space> at the hit-enter +prompt. +Note: when you stopped the output with "q" at the more prompt only up to that +point will be displayed. +The previous command output is cleared when another command produces output. If you are using translated messages, the first printed line tells who maintains the messages or the translations. You can use this to contact the @@ -55,7 +64,7 @@ or view a list of recent messages with: > LIST OF MESSAGES *E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317* *E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322* - *E323* *E341* *E473* *E570* > + *E323* *E341* *E473* *E570* *E685* > Add to read buffer makemap: Illegal mode Cannot create BalloonEval with both message and callback @@ -74,6 +83,7 @@ LIST OF MESSAGES line number out of range: {N} past the end line count wrong in block {N} Internal error + Internal error: {function} fatal error in cs_manage_matches This is an internal error. If you can reproduce it, please send in a bug @@ -278,6 +288,19 @@ Example: > changes to: > :w! /tmp/test < + *E768* > + Swap file exists: {filename} (:silent! overrides) + +You are protected from overwriting a file that is being edited by Vim. This +happens when you use ":w! filename" and a swapfile is found. +- If the swapfile was left over from an old crashed edit session you may want + to delete the swapfile. Edit {filename} to find out information about the + swapfile. +- If you want to write anyway prepend ":silent!" to the command. For example: > + :silent! w! /tmp/test +< The special command is needed, since you already added the ! for overwriting + an existing file. + *E139* > File is loaded in another buffer @@ -363,7 +386,8 @@ cannot be written. You need to give the buffer a file name: > When using the '~' character in a pattern, it is replaced with the previously used pattern in a ":substitute" command. This fails when no such command has -been used yet. See |/~|. +been used yet. See |/~|. This also happens when using ":s/pat/%/", where the +"%" stands for the previous substitute string. *E35* > No previous regular expression @@ -389,7 +413,10 @@ device and it isn't present. You can ignore this error. You have used an ":unmap" command with an argument which is not an existing mapping. All variations of this command give the same message: ":cunmap", -":unmap!", etc. Check for trailing white space. +":unmap!", etc. A few hints: +- Check for trailing white space. +- If the mapping is buffer-local you need to use ":unmap <buffer>". + |:map-<buffer>| *E37* *E89* > No write since last change (use ! to override) @@ -412,6 +439,12 @@ abandon the buffer forcefully, e.g., with ":qa!". Careful, make sure you don't throw away changes you really want to keep. You might have forgotten about a buffer, especially when 'hidden' is set. +> + [No write since last change] + +This appears when executing a shell command while at least one buffer was +changed. To avoid the message reset the 'warn' option. + *E38* > Null argument @@ -560,6 +593,7 @@ The file is read-only and you are making a change to it anyway. You can use the |FileChangedRO| autocommand event to avoid this message (the autocommand must reset the 'readonly' option). See 'modifiable' to completely disallow making changes to a file. +This message is only given for the first change after 'readonly' has been set. *W13* > Warning: File "{filename}" has been created after editing started @@ -643,6 +677,7 @@ and |+X11| features. A command line started with a backslash or the range of a command contained a backslash in a wrong place. This is often caused by command-line continuation being disabled. Remove the 'C' flag from the 'cpoptions' option to enable it. +Or use ":set nocp". *E471* > Argument required @@ -705,9 +740,10 @@ a user-defined command. This is an (incomplete) overview of various messages that Vim gives: - *hit-enter* *press-enter* *hit-return* *press-return* > + *hit-enter* *press-enter* *hit-return* + *press-return* *hit-enter-prompt* - Hit ENTER or type command to continue + Press ENTER or type command to continue This message is given when there is something on the screen for you to read, and the screen is about to be redrawn: @@ -715,10 +751,16 @@ and the screen is about to be redrawn: - Something is displayed on the status line that is longer than the width of the window, or runs into the 'showcmd' or 'ruler' output. --> Hit <Enter> or <Space> to redraw the screen and continue, without that key - being used otherwise. --> Hit ":" or any other Normal mode command character to start that command. --> Hit <C-Y> to copy (yank) a modeless selection to the clipboard register. +-> Press <Enter> or <Space> to redraw the screen and continue, without that + key being used otherwise. +-> Press ':' or any other Normal mode command character to start that command. +-> Press 'k', <Up>, 'u', 'b' or 'g' to scroll back in the messages. This + works the same way as at the |more-prompt|. Only works when 'compatible' + is off and 'more' is on. +-> Pressing 'j', 'd' or <Down> is ignored when messages scrolled off the top + of the screen, 'compatible' is off and 'more' is on, to avoid that typing + one 'j' too many causes the messages to disappear. +-> Press <C-Y> to copy (yank) a modeless selection to the clipboard register. -> Use a menu. The characters defined for Cmdline-mode are used. -> When 'mouse' contains the 'r' flag, clicking the left mouse button works like pressing <Space>. This makes it impossible to select text though. @@ -726,19 +768,24 @@ and the screen is about to be redrawn: pressing <Space>. {Vi: only ":" commands are interpreted} +If you accidentally hit <Enter> or <Space> and you want to see the displayed +text then use |g<|. This only works when 'more' is set. + To reduce the number of hit-enter prompts: - Set 'cmdheight' to 2 or higher. - Add flags to 'shortmess'. - Reset 'showcmd' and/or 'ruler'. +If your script causes the hit-enter prompt and you don't know why, you may +find the |v:scrollstart| variable useful. + Also see 'mouse'. The hit-enter message is highlighted with the |hl-Question| group. *more-prompt* *pager* > -- More -- - -- More -- (RET: line, SPACE: page, d: half page, q: quit) - -- More -- (RET/BS: line, SPACE/b: page, d/u: half page, q: quit) + -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit This message is given when the screen is filled with messages. It is only given when the 'more' option is on. It is highlighted with the |hl-MoreMsg| @@ -746,11 +793,16 @@ group. Type effect ~ <CR> or <NL> or j or <Down> one more line + d down a page (half a screen) + <Space> or <PageDown> down a screen + G down all the way, until the hit-enter + prompt + <BS> or k or <Up> one line back (*) - <Space> or <PageDown> next page - b or <PageUp> previous page (*) - d down half a page - u up half a page (*) + u up a page (half a screen) (*) + b or <PageUp> back a screen (*) + g back to the start (*) + q, <Esc> or CTRL-C stop the listing : stop the listing and enter a command-line @@ -762,8 +814,8 @@ Type effect ~ Any other key causes the meaning of the keys to be displayed. -(*) backwards scrolling is only supported for these commands: > - :clist +(*) backwards scrolling is {not in Vi}. Only scrolls back to where messages + started to scroll. (**) Clicking the left mouse button only works: - For the GUI: in the last line of the screen. - When 'r' is included in 'mouse' (but then selecting text won't work). @@ -772,4 +824,8 @@ Any other key causes the meaning of the keys to be displayed. Note: The typed key is directly obtained from the terminal, it is not mapped and typeahead is ignored. +The |g<| command can be used to see the last page of previous command output. +This is especially useful if you accidentally typed <Space> at the hit-enter +prompt. + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/message.jax b/ja/message.jax index 7927e4909..5f7a0cb1f 100644 --- a/ja/message.jax +++ b/ja/message.jax @@ -1,9 +1,9 @@ COMMENT: メッセージ -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*message.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*message.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIMリファレンスマニュアル by Bram Moolenaar @@ -24,11 +24,19 @@ TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> セージが上書きされてしまったり、スクロールで流れていってしまった時にとりわけ便 利である。これは'shortmess'オプションに依存する。 -見ることのできるメッセージ数は20に固定されている。 +見ることのできるメッセージ数は、tiny バージョンでは20に、それ以外のバージョン +では100に固定されている。 + + *g<* +コマンド "g<" を使うと前のコマンドの出力の最後のページを見ることができる。 +hit-enter プロンプトで誤って <Space> を押してしまったときにこれは便利である。 +Note: 出力を表示中に "q" を押してそれ以降の出力表示をさせなかった場合は、 +"g<" を使ったときもそこまでしか表示されない。 +他のコマンドが出力を行うと、前のコマンドの出力は消去される。 翻訳されたメッセージを使っているなら、誰がそのメッセージや翻訳をメンテナンスし -ているかが最初の行に表示される。間違いを見つけたときにはこれを使ってメンテナと -コンタクトすることができる。 +ているかが最初の行に表示される。間違いを見つけたときはそこを見てメンテナと連絡 +をとることができる。 特定の(エラー)メッセージに関するヘルプを見つけたいときは、メッセージの最初に表 示されるIDを使う。例えば: > @@ -60,7 +68,7 @@ TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> LIST OF MESSAGES *E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317* *E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322* - *E323* *E341* *E473* *E570* > + *E323* *E341* *E473* *E570* *E685* > Add to read buffer makemap: Illegal mode Cannot create BalloonEval with both message and callback @@ -79,6 +87,7 @@ LIST OF MESSAGES line number out of range: {N} past the end line count wrong in block {N} Internal error + Internal error: {function} fatal error in cs_manage_matches これは内部エラーである。これを再現できる場合はバグレポートを送ってください。 @@ -279,10 +288,23 @@ Vim内部でなんらかの不具合が起こり、正規表現が壊れてし これをこう変える: > :w! /tmp/test < + *E768* > + Swap file exists: {filename} (:silent! overrides) + +Vim で編集している最中のファイルは上書きしないようになっている。このエラーはス +ワップファイルが存在するのに ":w! filename" を実行したときに発生する。 +- もしそのスワップファイルが昔のクラッシュした編集セッションで作られたものなら + このスワップファイルは消したいだろう。{filename} を編集するとそのスワップフ + ァイルについての情報が得られる。 +- 強制的に保存したいならコマンドの前に ":silent!" をつける。例: > + :silent! w! /tmp/test +< 既存のファイルを上書きするために既に ! をつけているので、この特別なコマンド +が必要になる。 + *E139* > File is loaded in another buffer -あなたは別のバッファで使われている名前をでファイルを書き込もうとしている。そう +あなたは別のバッファで使われている名前でファイルを書き込もうとしている。そう すると同じファイルの2つの版が出来てしまう。 *E142* > @@ -362,7 +384,8 @@ Vimの内部エラー。どうしたらこれを再現できるかを発見し パターンに文字'~'を使用すると、以前に":substitute"コマンドで使われたパターンに 置き換えられる。そのようなコマンドがまだ使われていない時には、これは失敗する。 -|/~|参照。 +|/~|参照。また、これは ":s/pat/%/" を使ったときにも起こる。この "%" は以前の置 +換で使われた置換後文字列を意味する。 *E35* > No previous regular expression @@ -388,7 +411,10 @@ GnomeサポートつきのGTK GUIでのみ表示される。Gnomeがオーディ ":unmap"コマンドを、存在していないマップを引数にして実行した。":cunmap"、 ":unmap!"などの、このコマンドのバリエーションも同じメッセージを生成する。 -後ろに空白がついていないかチェックすること。 +いくつかのヒント: +- 後ろに空白がついていないかチェックすること。 +- バッファローカルなマッピングについては ":unmap <buffer>" とする必要がある。 + |:map-<buffer>| *E37* *E89* > No write since last change (use ! to override) @@ -410,6 +436,13 @@ GnomeサポートつきのGTK GUIでのみ表示される。Gnomeがオーディ かしなければならない。保存しておきたい変更を破棄しないように注意すること。特に 'hidden'をセットしているときは、バッファのことを忘れているかもしれない。 +> + [No write since last change] + +このメッセージは、少なくとも1つのバッファが変更されているときにシェルコマンド +を実行したときに現れる。このメッセージを表示させなくするには、オプション +'warn' をオフにする。 + *E38* > Null argument @@ -556,6 +589,7 @@ http://groups.yahoo.com/group/solarisonintel/message/12179. には、自動コマンドイベント|FileChangedRO|を使うことが出来る(自動コマンドは 'readonly'オプションをリセットしなければならない)。ファイルへの変更を完全に禁 止するには'modifiable'を参照。 +このメッセージは 'readonly' がセットされて以降最初の変更に対してのみ現れる。 *W13* > Warning: File "{filename}" has been created after editing started @@ -637,7 +671,7 @@ VimがXサーバへ接続を試みたが、接続を確立できなかった場 コマンドラインがバックスラッシュで始まっているか、コマンドの範囲のおかしな場所 にバックスラッシュが含まれている。これはしばしばコマンドラインの行継続が無効に されているため引き起こされる。行継続を有効にするには'cpoptions'から'C'フラグを -除くこと。 +除くか、または ":set nocp" とすること。 *E471* > Argument required @@ -697,9 +731,10 @@ Exコマンドでもユーザ定義コマンドでもないコマンドを実行 Vimがくれるさまざまなメッセージの(不完全な)概観である: - *hit-enter* *press-enter* *hit-return* *press-return* > + *hit-enter* *press-enter* *hit-return* + *press-return* *hit-enter-prompt* - Hit ENTER or type command to continue + Press ENTER or type command to continue このメッセージは読んでもらいたい何かがあって、スクリーンの再描画が中断されてい るときに与えられる: @@ -711,6 +746,12 @@ Vimがくれるさまざまなメッセージの(不完全な)概観である: ことが条件)押す。 -> 何かコマンドを使うために、":"か他のノーマルモードコマンドのキャラクタを叩 く。 +-> 'k', <Up>, 'u', 'b', 'g' を押すとメッセージが上にスクロールする。これは + |more-prompt| と同様に働く。'compatible' がオフで 'more' がオンのときだけ有 + 効である。 +-> 'compatible' がオフで 'more' がオンのとき、メッセージが画面上端を越えてスク + ロールした場合、'j', 'd', <Down> は無視される。これは 'j' を押しっぱなしに + したときメッセージが消えてしまうのを避けるためである。 -> <C-Y>を押し、モードレスセレクションをクリップボードレジスタにコピー(ヤンク) する。 -> メニューを使う。コマンドラインモード用に定義されている文字が使われる。 @@ -720,29 +761,38 @@ Vimがくれるさまざまなメッセージの(不完全な)概観である: る。 {Vi: ":"だけが割り込める} +もし誤って <Enter> や <Space> を押してしまって、テキストを表示し直したいときは +|g<| を使う。これは 'more' がオンのときだけ有効である。 + hit-enterのプロンプトの回数を減らすには: - 'cmdheight'を2かそれ以上に設定する。 - 'shortmess'にフラグを追加する。 - 'showcmd'と'ruler'の両方か、もしくはどちらかをリセットする。 +スクリプトが hit-enter プロンプトを出すが、なぜそれが出るのかわからない場合は +変数 |v:scrollstart| が便利かもしれない。 + 'mouse'も参照。hit-enterメッセージは|hl-Question|グループで強調される。 *more-prompt* *pager* > -- More -- - -- More -- (RET: line, SPACE: page, d: half page, q: quit) - -- More -- (RET/BS: line, SPACE/b: page, d/u: half page, q: quit) + -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit このメッセージはスクリーンがメッセージで埋め尽くされた時に表示される。'more'オ プションがオンの時だけ与えられる。|hl-MoreMsg|グループで強調される。 種類 効果 ~ <CR> or <NL> or j or <Down> 1行進める - <BS> or k or <Up> 1行戻る (*) - <Space> or <PageDown> 次のページ - b or <PageUp> 前のページ (*) d 次の半ページ + <Space> or <PageDown> 次のページ (1画面) + G 最後へ(hit-enter プロンプトまで) + + <BS> or k or <Up> 1行戻る (*) u 前の半ページ (*) + b or <PageUp> 前のページ (*) + g 最初へ戻る (*) + q, <Esc> or CTRL-C リスト表示を止める : リスト表示を止めコマンドラインに入る <C-Y> モードレスセレクションをクリップボード @@ -753,8 +803,8 @@ hit-enterのプロンプトの回数を減らすには: その他のキーは、これらのキーの意味が表示される。 -(*) 逆スクロールコマンドは、このコマンドだけサポートされる: > - :clist +(*) 逆スクロールコマンドは {Vi にはない}。メッセージのスクロールを始めた場所へ + 戻るだけである。 (**) 左クリックは次のときだけ機能する: - GUI使用時:スクリーンの最後の行で - 'mouse'が'r'を含んでいるとき(ただしこのときテキスト選択はできない) @@ -762,4 +812,7 @@ hit-enterのプロンプトの回数を減らすには: Note: タイプされたキーはターミナルから直接得られ、マップされずtypeaheadは無視 される。 +コマンド |g<| を使うと前のコマンドの出力の最後のページを見ることができる。 +hit-enter プロンプトで誤って <Space> を押してしまったときにこれは便利である。 + vim:tw=78:ts=8:ft=help:norl: From 2661fb62e8c766566e31a67a686be073be0adc34 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Mon, 16 Oct 2006 12:27:14 +0000 Subject: [PATCH 070/783] fix: update pi_spec, rileft, os_dos, remote, os_os2, os_mint, os_qnx, repeat, editing to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@70 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/editing.txt | 733 ++++++++++++++----------- en/os_dos.txt | 13 +- en/os_mint.txt | 8 +- en/os_os2.txt | 26 +- en/os_qnx.txt | 8 +- en/pi_spec.txt | 42 +- en/remote.txt | 23 +- en/repeat.txt | 139 ++++- en/rileft.txt | 4 +- ja/editing.jax | 1396 ++++++++++++++++++++++++++---------------------- ja/os_dos.jax | 15 +- ja/os_mint.jax | 4 +- ja/os_os2.jax | 4 +- ja/os_qnx.jax | 4 +- ja/pi_spec.jax | 4 +- ja/remote.jax | 20 +- ja/repeat.jax | 145 ++++- ja/rileft.jax | 5 +- 18 files changed, 1559 insertions(+), 1034 deletions(-) diff --git a/en/editing.txt b/en/editing.txt index 0543e4a52..4c982c50e 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 6.3. Last change: 2004 Apr 28 +*editing.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -8,68 +8,95 @@ Editing files *edit-files* 1. Introduction |edit-intro| 2. Editing a file |edit-a-file| -3. Dialogs |edit-dialogs| -4. The current directory |current-directory| -5. The argument list |argument-list| -6. Writing |writing| -7. Writing and quitting |write-quit| +3. The argument list |argument-list| +4. Writing |writing| +5. Writing and quitting |write-quit| +6. Dialogs |edit-dialogs| +7. The current directory |current-directory| 8. Editing binary files |edit-binary| 9. Encryption |encryption| 10. Timestamps |timestamps| +11. File Searching |file-searching| ============================================================================== 1. Introduction *edit-intro* Editing a file with Vim means: -1. reading the file into the internal buffer +1. reading the file into a buffer 2. changing the buffer with editor commands 3. writing the buffer into a file *current-file* As long as you don't write the buffer, the original file remains unchanged. If you start editing a file (read a file into the buffer), the file name is -remembered as the "current file name". +remembered as the "current file name". This is also known as the name of the +current buffer. It can be used with "%" on the command line |:_%|. *alternate-file* If there already was a current file name, then that one becomes the alternate -file name. All file names are remembered in the file list. When you enter a -file name, for editing (e.g., with ":e filename") or writing (e.g., with (:w -file name"), the file name is added to the list. You can use this list to -remember which files you edited and to quickly switch from one file to -another with the CTRL-^ command (e.g., to copy text). First type the number -of the file and then hit CTRL-^. {Vi: only one alternate file name} +file name. It can be used with "#" on the command line |:_#| and you can use +the |CTRL-^| command to toggle between the current and the alternate file. +However, the alternate file name is not changed when |:keepalt| is used. + + *:keepalt* *:keepa* +:keepalt {cmd} Execute {cmd} while keeping the current alternate file + name. Note that commands invoked indirectly (e.g., + with a function) may still set the alternate file + name. {not in Vi} + +All file names are remembered in the buffer list. When you enter a file name, +for editing (e.g., with ":e filename") or writing (e.g., with ":w filename"), +the file name is added to the list. You can use the buffer list to remember +which files you edited and to quickly switch from one file to another (e.g., +to copy text) with the |CTRL-^| command. First type the number of the file +and then hit CTRL-^. {Vi: only one alternate file name is remembered} + CTRL-G or *CTRL-G* *:f* *:fi* *:file* -:f[ile] Prints the current file name (as typed), the - cursor position (unless the 'ruler' option is set), - and the file status (readonly, modified, read errors, - new file)). See the 'shortmess' option about how tho - make this message shorter. {Vi does not include - column number} +:f[ile] Prints the current file name (as typed, unless ":cd" + was used), the cursor position (unless the 'ruler' + option is set), and the file status (readonly, + modified, read errors, new file). See the 'shortmess' + option about how to make this message shorter. + {Vi does not include column number} + +:f[ile]! like |:file|, but don't truncate the name even when + 'shortmess' indicates this. {count}CTRL-G Like CTRL-G, but prints the current file name with full path. If the count is higher than 1 the current buffer number is also given. {not in Vi} *g_CTRL-G* *word-count* *byte-count* -g CTRL-G Prints the current position of the cursor in four - ways: Column, Line, Word and Byte. If there are - characters in the line that take more than one - position on the screen (<Tab> or special character), - both the "real" column and the screen column are - shown, separated with a dash. See also 'ruler' - option. {not in Vi} +g CTRL-G Prints the current position of the cursor in five + ways: Column, Line, Word, Character and Byte. If the + number of Characters and Bytes is the same then the + Character position is omitted. + If there are characters in the line that take more + than one position on the screen (<Tab> or special + character), both the "real" column and the screen + column are shown, separated with a dash. + See also 'ruler' option. {not in Vi} *v_g_CTRL-G* -{Visual}g CTRL-G Similar to "g CTRL-G", but Word, Line, and Byte counts - for the visually selected region are displayed. In - Blockwise mode, Column count is also shown. (For +{Visual}g CTRL-G Similar to "g CTRL-G", but Word, Character, Line, and + Byte counts for the visually selected region are + displayed. + In Blockwise mode, Column count is also shown. (For {Visual} see |Visual-mode|.) {not in VI} *:file_f* -:f[ile] {name} Sets the current file name to {name}. +:f[ile][!] {name} Sets the current file name to {name}. The optional ! + avoids truncating the message, as with |:file|. + If the buffer did have a name, that name becomes the + |alternate-file| name. An unlisted buffer is created + to hold the old name. + *:0file* +:0f[ile][!] Remove the name of the current buffer. The optional ! + avoids truncating the message, as with |:file|. {not + in Vi} :buffers :files @@ -87,7 +114,7 @@ string, it is often displayed with HOME replaced with "~". This was done to keep file names short. When reading or writing files the full name is still used, the "~" is only used when displaying file names. When replacing the file name would result in just "~", "~/" is used instead (to avoid confusion -with 'backupext' set to "~"). +between options set to $HOME with 'backupext' set to "~"). When writing the buffer, the default is to use the current file name. Thus when you give the "ZZ" or ":wq" command, the original file will be @@ -128,11 +155,14 @@ Technical: On the Amiga you can use 30 characters for a file name. But on an When you started editing without giving a file name, "No File" is displayed in messages. If the ":write" command is used with a file name argument, the file name for the current file is set to that file name. This only happens when -the 'F' flag is included in 'cpoptions' (by default it is included). This is -useful when entering text in an empty buffer and then writing it to a file. -If 'cpoptions' contains the 'f' flag (by default it is NOT included) the file -name is set for the ":read file" command. This is useful when starting Vim -without an argument and then doing ":read file" to start editing a file. +the 'F' flag is included in 'cpoptions' (by default it is included) |cpo-F|. +This is useful when entering text in an empty buffer and then writing it to a +file. If 'cpoptions' contains the 'f' flag (by default it is NOT included) +|cpo-f| the file name is set for the ":read file" command. This is useful +when starting Vim without an argument and then doing ":read file" to start +editing a file. +When the file name was set and 'filetype' is empty the filetype detection +autocommands will be triggered. *not-edited* Because the file name was set without really starting to edit that file, you are protected from overwriting that file. This is done by setting the @@ -194,11 +224,10 @@ If you want to keep the changed buffer without saving it, switch on the {Vi: no ++opt} :e[dit] [++opt] [+cmd] #[count] - Edit the [count]th alternate file name (as shown by - :files). This command does the same as - [count] CTRL-^. But ":e #" doesn't work if the - alternate buffer doesn't have a file name, while - CTRL-^ still works then. + Edit the [count]th buffer (as shown by |:files|). + This command does the same as [count] CTRL-^. But ":e + #" doesn't work if the alternate buffer doesn't have a + file name, while CTRL-^ still works then. Also see |++opt| and |+cmd|. {Vi: no ++opt} @@ -237,20 +266,20 @@ If you want to keep the changed buffer without saving it, switch on the *:vi* *:visual* :vi[sual][!] [++opt] [+cmd] [file] - When entered in Ex mode: Leave |Ex-mode|, go back to + When used in Ex mode: Leave |Ex-mode|, go back to Normal mode. Otherwise same as |:edit|. *:vie* *:view* :vie[w] [++opt] [+cmd] file - When entered in Ex mode: Leave Ex mode, go back to + When used in Ex mode: Leave |Ex mode|, go back to Normal mode. Otherwise same as |:edit|, but set 'readonly' option for this buffer. {not in Vi} *CTRL-^* *CTRL-6* -[count]CTRL-^ Edit [count]th alternate file (equivalent to ":e - #[count]"). Without count this gets you to the - previously edited file. This is a quick way to toggle - between two (or more) files. +CTRL-^ Edit the alternate file (equivalent to ":e #"). + Mostly the alternate file is the previously edited + file. This is a quick way to toggle between two + files. If the 'autowrite' or 'autowriteall' option is on and the buffer was changed, write it. Mostly the ^ character is positioned on the 6 key, @@ -258,6 +287,12 @@ If you want to keep the changed buffer without saving it, switch on the But on some non-US keyboards CTRL-^ is produced in another way. +{count}CTRL-^ Edit [count]th file in the buffer list (equivalent to + ":e #[count]"). This is a quick way to switch between + files. + See |CTRL-^| above for further details. + {not in Vi} + [count]]f *]f* *[f* [count][f Same as "gf". Deprecated. @@ -278,6 +313,8 @@ If you want to keep the changed buffer without saving it, switch on the in the 'path' is edited. This command fails if Vim refuses to |abandon| the current file. + If you want to edit the file in a new window use + |CTRL-W_CTRL-F|. If you do want to edit a new file, use: > :e <cfile> < To make gf always work like that: > @@ -299,6 +336,22 @@ If you want to keep the changed buffer without saving it, switch on the (For {Visual} see |Visual-mode|.) {not in VI} + *gF* +[count]gF Same as "gf", except if a number follows the file + name, then the cursor is positioned on that line in + the file. The file name and the number must be + separated by a non-filename (see 'isfname') and + non-numeric character. White space between the + filename, the separator and the number are ignored. + Examples: + eval.c:10 ~ + eval.c @ 20 ~ + eval.c (30) ~ + eval.c 40 ~ + + *v_gF* +{Visual}[count]gF Same as "v_gf". + These commands are used to start editing a single file. This means that the file is read into the buffer and the current file name is set. The file that is opened depends on the current directory, see |:cd|. @@ -314,23 +367,43 @@ current file name. Note for systems other than Unix and MS-DOS: When using a command that accepts a single file name (like ":edit file") spaces in the file name are allowed, but trailing spaces are ignored. This is useful on systems that -allow file names with embedded spaces (like the Amiga). Example: The command -":e Long File Name " will edit the file "Long File Name". When using a -command that accepts more than one file name (like ":next file1 file2") -embedded spaces must be escaped with a backslash. +allow file names with embedded spaces (like MS-Windows and the Amiga). +Example: The command ":e Long File Name " will edit the file "Long File +Name". When using a command that accepts more than one file name (like ":next +file1 file2") embedded spaces must be escaped with a backslash. + *wildcard* Wildcards in {file} are expanded. Which wildcards are supported depends on the system. These are the common ones: - * matches anything, including nothing ? matches one character + * matches anything, including nothing + ** matches anything, including nothing, recurses into directories [abc] match 'a', 'b' or 'c' + To avoid the special meaning of the wildcards prepend a backslash. However, on MS-Windows the backslash is a path separator and "path\[abc]" is still seen as a wildcard when "[" is in the 'isfname' option. A simple way to avoid this is to use "path\[[]abc]". Then the file "path[abc]" literally. + *starstar-wildcard* +Expanding "**" is possible on Unix, Win32, Mac OS/X and a few other systems. +This allows searching a directory tree. This goes up to 100 directories deep. +Example: > + :n **/*.txt +Finds files: + ttt.txt + subdir/ttt.txt + a/b/c/d/ttt.txt +When non-wildcard characters are used these are only matched in the first +directory. Example: > + :n /usr/inc**/*.h +Finds files: + /usr/include/types.h + /usr/include/sys/types.h + /usr/inc_old/types.h *backtick-expansion* *`-expansion* -On Unix you can also use backticks in the file name, for example: > +On Unix and a few other systems you can also use backticks in the file name, +for example: > :e `find . -name ver\\*.c -print` The backslashes before the star are required to prevent "ver*.c" to be expanded by the shell before executing the find program. @@ -338,22 +411,31 @@ This also works for most other systems, with the restriction that the backticks must be around the whole item. It is not possible to have text directly before the first or just after the last backtick. -You can have the backticks expanded as a Vim expression, instead of -an external command, by using the syntax `={expr}` e.g. > - :let foo='bar' - :e `=foo . ".c" ` -edits "bar.c". Note that the expression cannot contain a backtick. + *`=* +You can have the backticks expanded as a Vim expression, instead of an +external command, by using the syntax `={expr}` e.g.: > + :e `=tempname()` +The expression can contain just about anything, thus this can also be used to +avoid the special meaning of '"', '|', '%' and '#'. Names are to be separated +with line breaks. When the result is a |List| then each item is used as a +name. Line breaks also separate names. *++opt* *[++opt]* -The [++opt] argument can be used to force the value of 'fileformat' or -'fileencoding' to a value for one command. The form is: > +The [++opt] argument can be used to force the value of 'fileformat', +'fileencoding' or 'binary' to a value for one command, and to specify the +behavior for bad characters. The form is: > + ++{optname} +Or: > ++{optname}={value} -Where {optname} is one of: *++ff* *++enc* *++bin* *++nobin* +Where {optname} is one of: *++ff* *++enc* *++bin* *++nobin* *++edit* ff or fileformat overrides 'fileformat' enc or encoding overrides 'fileencoding' bin or binary sets 'binary' nobin or nobinary resets 'binary' + bad specifies behavior for bad characters + edit for |:read| only: keep option values as if editing + a file {value} cannot contain white space. It can be any valid value for these options. Examples: > @@ -363,12 +445,24 @@ This edits the same file again with 'fileformat' set to "unix". > :w ++enc=latin1 newfile This writes the current buffer to "newfile" in latin1 format. +There may be several ++opt arguments, separated by white space. They must all +appear before any |+cmd| argument. + + *++bad* +The argument of "++bad=" specifies what happens with characters that can't be +converted and illegal bytes. It can be one of three things: + ++bad=X A single-byte character that replaces each bad character. + ++bad=keep Keep bad characters without conversion. Note that this may + result in illegal bytes in your text! + ++bad=drop Remove the bad characters. + +The default is like "++bad=?": Replace each bad character with a question +mark. + Note that when reading, the 'fileformat' and 'fileencoding' options will be set to the used format. When writing this doesn't happen, thus a next write will use the old value of the option. Same for the 'binary' option. -There may be several ++opt arguments, separated by white space. They must all -appear before any |+cmd| argument. *+cmd* *[+cmd]* The [+cmd] argument can be used to position the cursor in the newly opened @@ -447,241 +541,17 @@ You can encrypt files that are written by setting the 'key' option. This provides some security against others reading your files. |encryption| -File Searching *file-searching* - -{not available when compiled without the |+path_extra| feature} - -The file searching is currently used for the 'path', 'cdpath' and 'tags' -options. There are three different types of searching: - -1) Downward search: - Downward search uses the wildcards '*', '**' and possibly others - supported by your operating system. '*' and '**' are handled inside Vim, so - they work on all operating systems. - - The usage of '*' is quite simple: It matches 0 or more characters. - - '**' is more sophisticated: - - It ONLY matches directories. - - It matches up to 30 directories deep, so you can use it to search an - entire directory tree - - The maximum number of levels matched can be given by appending a number - to '**'. - Thus '/usr/**2' can match: > - /usr - /usr/include - /usr/include/sys - /usr/include/g++ - /usr/lib - /usr/lib/X11 - .... -< It does NOT match '/usr/include/g++/std' as this would be three - levels. - The allowed number range is 0 ('**0' is removed) to 255. - If the given number is smaller than 0 it defaults to 30, if it's - bigger than 255 it defaults to 255. - - '**' can only be at the end of the path or be followed by a path - separator or by a number and a path separator. - - You can combine '*' and '**' in any order: > - /usr/**/sys/* - /usr/*/sys/** - /usr/**2/sys/* - -2) Upward search: - Here you can give a directory and then search the directory tree upward for - a file. You could give stop-directories to limit the upward search. The - stop-directories are appended to the path (for the 'path' option) or to - the filename (for the 'tags' option) with a ';'. If you want several - stop-directories separate them with ';'. If you want no stop-directory - ("search upward till the root directory) just use ';'. > - /usr/include/sys;/usr -< will search in: > - /usr/include/sys - /usr/include - /usr -< - If you use a relative path the upward search is started in Vim's current - directory or in the directory of the current file (if the relative path - starts with './' and 'd' is not included in 'cpoptions'). - - If Vim's current path is /u/user_x/work/release and you do > - :set path=include;/u/user_x -< and then search for a file with |gf| the file is searched in: > - /u/user_x/work/release/include - /u/user_x/work/include - /u/user_x/include - -3) Combined up/downward search - If Vim's current path is /u/user_x/work/release and you do > - set path=**;/u/user_x -< and then search for a file with |gf| the file is searched in: > - /u/user_x/work/release/** - /u/user_x/work/** - /u/user_x/** -< - BE CAREFUL! This might consume a lot of time, as the search of - '/u/user_x/**' includes '/u/user_x/work/**' and - '/u/user_x/work/release/**'. So '/u/user_x/work/release/**' is searched - three and '/u/user_x/work/**' is searched two times. - - In the above example you might want to set path to: > - :set path=**,/u/user_x/** -< This searches: > - /u/user_x/work/release/** - /u/user_x/** -< This searches the same directories, but in a different order. - -============================================================================== -3. Dialogs *edit-dialogs* - - *:confirm* *:conf* -:conf[irm] {command} Execute {command}, and use a dialog when an - operation has to be confirmed. Can be used on the - ":q", ":qa" and ":w" commands (the latter to over-ride - a read-only setting). - -Examples: > - :confirm w foo -< Will ask for confirmation when "foo" already exists. > - :confirm q -< Will ask for confirmation when there are changes. > - :confirm qa -< If any modified, unsaved buffers exist, you will be prompted to save - or abandon each one. There are also choices to "save all" or "abandon - all". - -If you want to always use ":confirm", set the 'confirm' option. - - *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* -:bro[wse] {command} Open a file selection dialog for an argument to - {command}. At present this works for |:e|, |:w|, - |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc| and - |:mksession|. - {only in Win32, Athena, Motif, GTK and Mac GUI} - When ":browse" is not possible you get an error - message. If the |+browse| feature is missing or the - {command} doesn't support browsing, the {command} is - executed without a dialog. - ":browse set" works like |:options|. - -The syntax is best shown via some examples: > - :browse e $vim/foo -< Open the browser in the $vim/foo directory, and edit the - file chosen. > - :browse e -< Open the browser in the directory specified with 'browsedir', - and edit the file chosen. > - :browse w -< Open the browser in the directory of the current buffer, - with the current buffer filename as default, and save the - buffer under the filename chosen. > - :browse w C:/bar -< Open the browser in the C:/bar directory, with the current - buffer filename as default, and save the buffer under the - filename chosen. -Also see the |'browsedir'| option. -For versions of Vim where browsing is not supported, the command is executed -unmodified. - - *browsefilter* -For MS Windows, you can modify the filters that are used in the browse dialog. -By setting the g:browsefilter or b:browsefilter variables, you can change the -filters globally or locally to the buffer. The variable is set to a string in -the format "{filter label}\t{pattern};{pattern}\n" where {filter label} is the -text that appears in the "Files of Type" comboBox, and {pattern} is the -pattern which filters the filenames. Several patterns can be given, separated -by ';'. - -For Motif the same format is used, but only the very first pattern is actually -used (Motif only offers one pattern, but you can edit it). - -For example, to have only Vim files in the dialog, you could use the following -command: > - - let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n" - -You can override the filter setting on a per-buffer basis by setting the -b:browsefilter variable. You would most likely set b:browsefilter in a -filetype plugin, so that the browse dialog would contain entries related to -the type of file you are currently editing. Disadvantage: This makes it -difficult to start editing a file of a different type. To overcome this, you -may want to add "All Files\t*.*\n" as the final filter, so that the user can -still access any desired file. - -============================================================================== -4. The current directory *current-directory* - -You may use the |:cd| and |:lcd| commands to change to another directory, so -you will not have to type that directory name in front of the file names. It -also makes a difference for executing external commands, e.g. ":!ls". - - *:cd* *E472* -:cd On non-Unix systems: Print the current directory - name. On Unix systems: Change the current directory - to the home directory. Use |:pwd| to print the - current directory on all systems. - -:cd {path} Change the current directory to {path}. - If {path} is relative, it is searched for in the - directories listed in |'cdpath'|. - Does not change the meaning of an already opened file, - because its full path name is remembered. Files from - the |arglist| may change though! - On MS-DOS this also changes the active drive. - To change to the directory of the current file: > - :cd %:h -< - *:cd-* *E186* -:cd - Change to the previous current directory (before the - previous ":cd {path}" command). {not in Vi} - - *:chd* *:chdir* -:chd[ir] [path] Same as |:cd|. - - *:lc* *:lcd* -:lc[d] {path} Like |:cd|, but only set the current directory for the - current window. The current directory for other - windows is not changed. {not in Vi} - - *:lch* *:lchdir* -:lch[dir] Same as |:lcd|. {not in Vi} - - *:pw* *:pwd* *E187* -:pw[d] Print the current directory name. {Vi: no pwd} - Also see |getcwd()|. - -So long as no |:lcd| command has been used, all windows share the same current -directory. Using a command to jump to another window doesn't change anything -for the current directory. -When a |:lcd| command has been used for a window, the specified directory -becomes the current directory for that window. Windows where the |:lcd| -command has not been used stick to the global current directory. When jumping -to another window the current directory will become the last specified local -current directory. If none was specified, the global current directory is -used. -When a |:cd| command is used, the current window will lose his local current -directory and will use the global current directory from now on. - -After using |:cd| the full path name will be used for reading and writing -files. On some networked file systems this may cause problems. The result of -using the full path name is that the file names currently in use will remain -referring to the same file. Example: If you have a file a:test and a -directory a:vim the commands ":e test" ":cd vim" ":w" will overwrite the file -a:test and not write a:vim/test. But if you do ":w test" the file a:vim/test -will be written, because you gave a new file name and did not refer to a -filename before the ":cd". - ============================================================================== -5. The argument list *argument-list* *arglist* +3. The argument list *argument-list* *arglist* If you give more than one file name when starting Vim, this list is remembered as the argument list. You can jump to each file in this list. Do not confuse this with the buffer list, which you can see with the |:buffers| command. The argument list was already present in Vi, the buffer -list is new in Vim. A file name in the argument list will also be present in -the buffer list (unless it was deleted with ":bdel"). +list is new in Vim. Every file name in the argument list will also be present +in the buffer list (unless it was deleted with |:bdel| or |:bwipe|). But it's +common that names in the buffer list are not in the argument list. This subject is introduced in section |07.2| of the user manual. @@ -752,7 +622,9 @@ list of the current window. current entry. This command keeps the currently edited file, also when it's deleted from the argument list. - {not in Vi} {not available when compiled without the + Example: > + :argdel *.obj +< {not in Vi} {not available when compiled without the |+listcmds| feature} :{range}argd[elete] Delete the {range} files from the argument list. @@ -858,7 +730,7 @@ list of the current window. in Vi} :[count]wN[ext][!] [++opt] [+cmd] [file] *:wN* *:wNext* -:[count]wp[revous][!] [++opt] [+cmd] [file] *:wp* *:wprevious* +:[count]wp[revious][!] [++opt] [+cmd] [file] *:wp* *:wprevious* Same as :wnext, but go to previous file instead of next. {not in Vi} @@ -871,11 +743,17 @@ positioned at the first non-blank in the line, otherwise the last know column is used. If there is no last known cursor position the cursor will be in the first line (the last line in Ex mode). + *{arglist}* The wildcards in the argument list are expanded and the file names are sorted. Thus you can use the command "vim *.c" to edit all the C files. From within -Vim the command ":n *.c" does the same. On Unix you can also use backticks, -for example: > - :n `find . -name \\*.c -print` +Vim the command ":n *.c" does the same. + +White space is used to separate file names. Put a backslash before a space or +Tab to include it in a file name. E.g., to edit the single file "foo bar": > + :next foo\ bar + +On Unix and a few other systems you can also use backticks, for example: > + :next `find . -name \\*.c -print` The backslashes before the star are required to prevent "*.c" to be expanded by the shell before executing the find program. @@ -949,7 +827,7 @@ USING THE ARGUMENT LIST each file. {not in Vi} {not available when compiled without the |+listcmds| feature} - Also see |:windo| and |:bufdo|. + Also see |:windo|, |:tabdo| and |:bufdo|. Example: > :args *.c @@ -965,7 +843,7 @@ flag is used for the ":substitute" command to avoid an error for files where "my_foo" isn't used. ":update" writes the file only if changes were made. ============================================================================== -6. Writing *writing* *save-file* +4. Writing *writing* *save-file* Note: When the 'write' option is off, you are not able to write any file. @@ -1009,7 +887,10 @@ Note: When the 'write' option is off, you are not able to write any file. executed like with ":!{cmd}", any '!' is replaced with the previous command |:!|. -The default [range] for the ":w" command is the whole buffer (1,$). +The default [range] for the ":w" command is the whole buffer (1,$). If you +write the whole buffer, it is no longer considered changed. Also when you +write it to a different file with ":w somefile"! + If a file name is given with ":w" it becomes the alternate file. This can be used, for example, when the write fails and you want to try again later with ":w #". This can be switched off by removing the 'A' flag from the @@ -1020,6 +901,9 @@ used, for example, when the write fails and you want to try again later with the filename of the current buffer to {file}. The previous name is used for the alternate file name. The [!] is needed to overwrite an existing file. + When 'filetype' is empty filetype detection is done + with the new name, before the file is written. + When the write was successful 'readonly' is reset. {not in Vi} *:up* *:update* @@ -1090,8 +974,8 @@ if the system allows it (the directory must be writable). *write-fail* If the writing of the new file fails, you have to be careful not to lose your changes AND the original file. If there is no backup file and writing -the new file failed, you have already lost the original file! DON'T EXIT VIM -UNTIL YOU WRITE OUT THE FILE! If a backup was made, it is put back in place +the new file failed, you have already lost the original file! DON'T EXIT VIM +UNTIL YOU WRITE OUT THE FILE! If a backup was made, it is put back in place of the original file (if possible). If you exit Vim, and lose the changes you made, the original file will mostly still be there. If putting back the original file fails, there will be an error message telling you that you @@ -1147,7 +1031,7 @@ For MS-DOS and MS-Windows the device is detected by its name: The names can be in upper- or lowercase. ============================================================================== -7. Writing and quitting *write-quit* +5. Writing and quitting *write-quit* *:q* *:quit* :q[uit] Quit the current window. Quit Vim if this is the last @@ -1155,6 +1039,9 @@ The names can be in upper- or lowercase. Vim refuses to |abandon| the current buffer, and when the last file in the argument list has not been edited. + If there are other tab pages and quitting the last + window in the current tab page the current tab page is + closed |tab-page|. :conf[irm] q[uit] Quit, but give prompt when changes have been made, or the last file in the argument list has not been @@ -1239,6 +1126,149 @@ MULTIPLE WINDOWS AND BUFFERS *window-exit* which cannot be written for another reason, Vim will not quit. {not in Vi} +============================================================================== +6. Dialogs *edit-dialogs* + + *:confirm* *:conf* +:conf[irm] {command} Execute {command}, and use a dialog when an + operation has to be confirmed. Can be used on the + ":q", ":qa" and ":w" commands (the latter to over-ride + a read-only setting). + +Examples: > + :confirm w foo +< Will ask for confirmation when "foo" already exists. > + :confirm q +< Will ask for confirmation when there are changes. > + :confirm qa +< If any modified, unsaved buffers exist, you will be prompted to save + or abandon each one. There are also choices to "save all" or "abandon + all". + +If you want to always use ":confirm", set the 'confirm' option. + + *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* +:bro[wse] {command} Open a file selection dialog for an argument to + {command}. At present this works for |:e|, |:w|, + |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc| and + |:mksession|. + {only in Win32, Athena, Motif, GTK and Mac GUI} + When ":browse" is not possible you get an error + message. If the |+browse| feature is missing or the + {command} doesn't support browsing, the {command} is + executed without a dialog. + ":browse set" works like |:options|. + +The syntax is best shown via some examples: > + :browse e $vim/foo +< Open the browser in the $vim/foo directory, and edit the + file chosen. > + :browse e +< Open the browser in the directory specified with 'browsedir', + and edit the file chosen. > + :browse w +< Open the browser in the directory of the current buffer, + with the current buffer filename as default, and save the + buffer under the filename chosen. > + :browse w C:/bar +< Open the browser in the C:/bar directory, with the current + buffer filename as default, and save the buffer under the + filename chosen. +Also see the |'browsedir'| option. +For versions of Vim where browsing is not supported, the command is executed +unmodified. + + *browsefilter* +For MS Windows, you can modify the filters that are used in the browse dialog. +By setting the g:browsefilter or b:browsefilter variables, you can change the +filters globally or locally to the buffer. The variable is set to a string in +the format "{filter label}\t{pattern};{pattern}\n" where {filter label} is the +text that appears in the "Files of Type" comboBox, and {pattern} is the +pattern which filters the filenames. Several patterns can be given, separated +by ';'. + +For Motif the same format is used, but only the very first pattern is actually +used (Motif only offers one pattern, but you can edit it). + +For example, to have only Vim files in the dialog, you could use the following +command: > + + let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n" + +You can override the filter setting on a per-buffer basis by setting the +b:browsefilter variable. You would most likely set b:browsefilter in a +filetype plugin, so that the browse dialog would contain entries related to +the type of file you are currently editing. Disadvantage: This makes it +difficult to start editing a file of a different type. To overcome this, you +may want to add "All Files\t*.*\n" as the final filter, so that the user can +still access any desired file. + +============================================================================== +7. The current directory *current-directory* + +You may use the |:cd| and |:lcd| commands to change to another directory, so +you will not have to type that directory name in front of the file names. It +also makes a difference for executing external commands, e.g. ":!ls". + +Changing directory fails when the current buffer is modified, the '.' flag is +present in 'cpoptions' and "!" is not used in the command. + + *:cd* *E747* *E472* +:cd[!] On non-Unix systems: Print the current directory + name. On Unix systems: Change the current directory + to the home directory. Use |:pwd| to print the + current directory on all systems. + +:cd[!] {path} Change the current directory to {path}. + If {path} is relative, it is searched for in the + directories listed in |'cdpath'|. + Does not change the meaning of an already opened file, + because its full path name is remembered. Files from + the |arglist| may change though! + On MS-DOS this also changes the active drive. + To change to the directory of the current file: > + :cd %:h +< + *:cd-* *E186* +:cd[!] - Change to the previous current directory (before the + previous ":cd {path}" command). {not in Vi} + + *:chd* *:chdir* +:chd[ir][!] [path] Same as |:cd|. + + *:lc* *:lcd* +:lc[d][!] {path} Like |:cd|, but only set the current directory for the + current window. The current directory for other + windows is not changed. {not in Vi} + + *:lch* *:lchdir* +:lch[dir][!] Same as |:lcd|. {not in Vi} + + *:pw* *:pwd* *E187* +:pw[d] Print the current directory name. {Vi: no pwd} + Also see |getcwd()|. + +So long as no |:lcd| command has been used, all windows share the same current +directory. Using a command to jump to another window doesn't change anything +for the current directory. +When a |:lcd| command has been used for a window, the specified directory +becomes the current directory for that window. Windows where the |:lcd| +command has not been used stick to the global current directory. When jumping +to another window the current directory will become the last specified local +current directory. If none was specified, the global current directory is +used. +When a |:cd| command is used, the current window will lose his local current +directory and will use the global current directory from now on. + +After using |:cd| the full path name will be used for reading and writing +files. On some networked file systems this may cause problems. The result of +using the full path name is that the file names currently in use will remain +referring to the same file. Example: If you have a file a:test and a +directory a:vim the commands ":e test" ":cd vim" ":w" will overwrite the file +a:test and not write a:vim/test. But if you do ":w test" the file a:vim/test +will be written, because you gave a new file name and did not refer to a +filename before the ":cd". + ============================================================================== 8. Editing binary files *edit-binary* @@ -1371,9 +1401,9 @@ file though, only when the file wasn't changed inside of Vim. Note that if a FileChangedShell autocommand is defined you will not get a warning message or prompt. The autocommand is expected to handle this. -There is no warning for a directory (e.g., in the |file-explorer|). But you -do get warned if you started editing a new file and it was created as a -directory later. +There is no warning for a directory (e.g., with |netrw-browse|). But you do +get warned if you started editing a new file and it was created as a directory +later. When Vim notices the timestamp of a file has changed, and the file is being edited in a buffer but has not changed, Vim checks if the contents of the file @@ -1428,5 +1458,96 @@ It is also possible that you modified the file yourself, from another edit session or with another command (e.g., a filter command). Then you will know which version of the file you want to keep. +There is one situation where you get the message while there is nothing wrong: +On a Win32 system on the day daylight saving time starts. There is something +in the Win32 libraries that confuses Vim about the hour time difference. The +problem goes away the next day. + +============================================================================== +11. File Searching *file-searching* + +{not available when compiled without the |+path_extra| feature} + +The file searching is currently used for the 'path', 'cdpath' and 'tags' +options. There are three different types of searching: + +1) Downward search: *starstar* + Downward search uses the wildcards '*', '**' and possibly others + supported by your operating system. '*' and '**' are handled inside Vim, so + they work on all operating systems. + + The usage of '*' is quite simple: It matches 0 or more characters. + + '**' is more sophisticated: + - It ONLY matches directories. + - It matches up to 30 directories deep, so you can use it to search an + entire directory tree + - The maximum number of levels matched can be given by appending a number + to '**'. + Thus '/usr/**2' can match: > + /usr + /usr/include + /usr/include/sys + /usr/include/g++ + /usr/lib + /usr/lib/X11 + .... +< It does NOT match '/usr/include/g++/std' as this would be three + levels. + The allowed number range is 0 ('**0' is removed) to 255. + If the given number is smaller than 0 it defaults to 30, if it's + bigger than 255 it defaults to 255. + - '**' can only be at the end of the path or be followed by a path + separator or by a number and a path separator. + + You can combine '*' and '**' in any order: > + /usr/**/sys/* + /usr/*/sys/** + /usr/**2/sys/* + +2) Upward search: + Here you can give a directory and then search the directory tree upward for + a file. You could give stop-directories to limit the upward search. The + stop-directories are appended to the path (for the 'path' option) or to + the filename (for the 'tags' option) with a ';'. If you want several + stop-directories separate them with ';'. If you want no stop-directory + ("search upward till the root directory) just use ';'. > + /usr/include/sys;/usr +< will search in: > + /usr/include/sys + /usr/include + /usr +< + If you use a relative path the upward search is started in Vim's current + directory or in the directory of the current file (if the relative path + starts with './' and 'd' is not included in 'cpoptions'). + + If Vim's current path is /u/user_x/work/release and you do > + :set path=include;/u/user_x +< and then search for a file with |gf| the file is searched in: > + /u/user_x/work/release/include + /u/user_x/work/include + /u/user_x/include + +3) Combined up/downward search: + If Vim's current path is /u/user_x/work/release and you do > + set path=**;/u/user_x +< and then search for a file with |gf| the file is searched in: > + /u/user_x/work/release/** + /u/user_x/work/** + /u/user_x/** +< + BE CAREFUL! This might consume a lot of time, as the search of + '/u/user_x/**' includes '/u/user_x/work/**' and + '/u/user_x/work/release/**'. So '/u/user_x/work/release/**' is searched + three times and '/u/user_x/work/**' is searched twice. + + In the above example you might want to set path to: > + :set path=**,/u/user_x/** +< This searches: > + /u/user_x/work/release/** + /u/user_x/** +< This searches the same directories, but in a different order. + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/os_dos.txt b/en/os_dos.txt index 5780ac396..d44755acf 100644 --- a/en/os_dos.txt +++ b/en/os_dos.txt @@ -1,4 +1,4 @@ -*os_dos.txt* For Vim version 6.3. Last change: 2003 Dec 20 +*os_dos.txt* For Vim version 7.0. Last change: 2006 Mar 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -77,10 +77,11 @@ is especially useful when using a Unix-like 'shell'. ============================================================================== 3. Standard mappings *dos-standard-mappings* -CTRL-PageUp cursor to first screen line *<C-PageUp>* -CTRL-PageDown cursor to last screen line, last character *<C-PageDown>* +The mappings for CTRL-PageUp and CTRL-PageDown have been removed, they now +jump to the next or previous tab page |<C-PageUp>| |<C-PageDown>| -These mappings accomplish this: +If you want them to move to the first and last screen line you can use these +mappings: key key code Normal/Visual mode Insert mode ~ CTRL-PageUp <M-N><M-C-D> H <C-O>H @@ -126,8 +127,8 @@ text. For example, to get grey text on a blue background: > See |highlight-groups| for other groups that are available. A DOS console does not support attributes like bold and underlining. You can -set the color used in five modes with nine termcap options. Note that this is -not necessary since you can set the color directly with the ":highlight" +set the color used in five modes with nine terminal options. Note that this +is not necessary since you can set the color directly with the ":highlight" command; these options are for backward compatibility with older Vim versions. The |'highlight'| option specifies which of the five modes is used for which action. > diff --git a/en/os_mint.txt b/en/os_mint.txt index b74c9874f..61507f463 100644 --- a/en/os_mint.txt +++ b/en/os_mint.txt @@ -1,4 +1,4 @@ -*os_mint.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*os_mint.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Jens M. Felderhoff @@ -15,12 +15,12 @@ The Unix behavior described in the documentation also refers to the MiNT version of Vim unless explicitly stated otherwise. For wildcard expansion of <~> (home directory) you need a shell that -expands the tilde. The vanilla Bourne shell doesn't recognize it. +expands the tilde. The vanilla Bourne shell doesn't recognize it. With csh and ksh it should work OK. The MiNT version of vim needs the termcap file /etc/termcap with the -terminal capabilities of your terminal. Builtin termcaps are -supported for the vt52 terminal. Termcap entries for the TOSWIN window +terminal capabilities of your terminal. Builtin termcaps are +supported for the vt52 terminal. Termcap entries for the TOSWIN window manager and the virtual console terminals have been appended to the termcap file that comes with the Vim distribution. diff --git a/en/os_os2.txt b/en/os_os2.txt index 8d005001d..9f47b004b 100644 --- a/en/os_os2.txt +++ b/en/os_os2.txt @@ -1,4 +1,4 @@ -*os_os2.txt* For Vim version 6.3. Last change: 2004 Jan 09 +*os_os2.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Paul Slootman @@ -28,19 +28,19 @@ that are started via a shell escape from within Vim. This specifically means that Vim won't be able to remove the swap file(s) associated with buffers open at the time the other program was started, until the other program is stopped. At that time, the swap file may be removed, but if Vim could not do that the -first time, it won't be removed at all. You'll get warnings that some other +first time, it won't be removed at all. You'll get warnings that some other Vim session may be editing the file when you start Vim up again on that file. -This can be reproduced with ":!start epm". Now quit Vim, and start Vim again +This can be reproduced with ":!start epm". Now quit Vim, and start Vim again with the file that was in the buffer at the time epm was started. I'm working on this! A second problem is that Vim doesn't understand the situation when using it when accessing the OS/2 system via the network, e.g. using telnet from a Unix -system, and then starting Vim. The problem seems to be that OS/2 =sometimes= +system, and then starting Vim. The problem seems to be that OS/2 =sometimes= recognizes function / cursor keys, and tries to convert those to the -corresponding OS/2 codes generated by the "normal" PC keyboard. I've been +corresponding OS/2 codes generated by the "normal" PC keyboard. I've been testing a workaround (mapping the OS/2 codes to the correct functions), but so -far I can't say anything conclusive (this is on Warp 3, by the way). In the +far I can't say anything conclusive (this is on Warp 3, by the way). In the meantime any help will be appreciated. @@ -52,12 +52,12 @@ is generally available as (ask Archie about it): emxrt.zip emx runtime package I've included a copy of emx.dll, which should be copied to one of the -directories listed in your LIBPATH. Emx is GPL'ed, but the emx.dll library is +directories listed in your LIBPATH. Emx is GPL'ed, but the emx.dll library is not (read COPYING.EMX to find out what that means to you). This emx.dll is from the emxfix04.zip package, which unfortunately has a bug, eh, I mean a POSIX feature, in select(). Versions of Vim before 3.27 will -appear to hang when starting (actually, while processing vimrc). Hit <Enter> a +appear to hang when starting (actually, while processing vimrc). Hit <Enter> a couple of times until Vim starts working if this happens. Next, get an up to date version of Vim! @@ -84,14 +84,14 @@ you get a tree of Vim files like this: etc. Note: .vimrc may also be called _vimrc to accommodate those who have chosen to -install OS/2 on a FAT file system. Vim first tries to find .vimrc and if that +install OS/2 on a FAT file system. Vim first tries to find .vimrc and if that fails, looks for _vimrc in the same place. The existence of a .vimrc or _vimrc file influences the 'compatible' options, which can have unexpected side effects. See |'compatible'|. If you're using network drives with OS/2, then you can install Vim on a network drive (including .vimrc; this is then called the "system" vimrc file), -and then use a personal copy of .vimrc (the "user" vimrc file). This should be +and then use a personal copy of .vimrc (the "user" vimrc file). This should be located in a directory indicated by the HOME environment variable. @@ -135,14 +135,14 @@ TERMINAL SETTING *os2ansi* Use "os2ansi" as the TERM environment variable (or don't set it at all, as the -default is the correct value). You can set term to os2ansi in the .vimrc, in +default is the correct value). You can set term to os2ansi in the .vimrc, in case you need TERM to be a different value for other applications. The problem is that OS/2 ANSI emulation is quite limited (it doesn't have insert / delete line, for example). If you want to use a different value for TERM (because of other programs, for example), make sure that the termcap entry for that TERM value has the -appropriate key mappings. The termcap.dat distributed with emx does not always +appropriate key mappings. The termcap.dat distributed with emx does not always have them. Here are some suitable values to add to the termcap entry of your choice; these allow the cursor keys and the named function keys (such as pagedown) to work. @@ -214,7 +214,7 @@ clipboard you would use: > endif This will ensure that only on OS/2 clipbrd is called whereas on other -platforms vims build in mechanism is used. (To enable this functions on every +platforms vims build in mechanism is used. (To enable this functions on every load of Vim place the above lines in your .vimrc.) vim:tw=78:ts=8:ft=help:norl: diff --git a/en/os_qnx.txt b/en/os_qnx.txt index a49bd7395..bc965f1ea 100644 --- a/en/os_qnx.txt +++ b/en/os_qnx.txt @@ -1,4 +1,4 @@ -*os_qnx.txt* For Vim version 6.3. Last change: 2004 Apr 23 +*os_qnx.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Julian Kinraid @@ -22,7 +22,7 @@ Vim on QNX behaves much like other unix versions. |os_unix.txt| 2. Compiling Vim *qnx-compiling* -Vim can be compiled using the standard configure/make approach. If you want to +Vim can be compiled using the standard configure/make approach. If you want to compile for X11, pass the --with-x option to configure. Otherwise, running ./configure without any arguments or passing --enable-gui=photon, will compile vim with the Photon gui support. Run ./configure --help , to find out other @@ -118,12 +118,12 @@ Known problems: set noguipty Bugs: - - Still a slight problem with menu highlighting + - Still a slight problem with menu highlighting. - When using phditto/phinows/etc., if you are using a font that doesn't support the bold attribute, when vim attempts to draw bold text it will be all messed up. - The cursor can sometimes be hard to see. - - A number of minor problems that can fixed :) + - A number of minor problems that can fixed. :) Todo: - Improve multi-language support. diff --git a/en/pi_spec.txt b/en/pi_spec.txt index 7fa455565..9effbe8ba 100644 --- a/en/pi_spec.txt +++ b/en/pi_spec.txt @@ -1,13 +1,13 @@ -*pi_spec.txt* For Vim version 6.3. Last change: 2002 Oct 29 +*pi_spec.txt* For Vim version 7.0. Last change: 2006 Apr 24 by Gustavo Niemeyer ~ This is a filetype plugin to work with rpm spec files. Currently, this Vim plugin allows you to easily update the %changelog -section in RPM spec files. It will even create a section for you if it -doesn't exist yet. If you've already inserted an entry today, it will -give you the opportunity to just add a new item in today's entry. If you +section in RPM spec files. It will even create a section for you if it +doesn't exist yet. If you've already inserted an entry today, it will +give you the opportunity to just add a new item in today's entry. If you don't provide a format string (|spec_chglog_format|), it'll ask you an email address and build a format string by itself. @@ -22,24 +22,24 @@ The spec_chglog plugin provides a map like the following: :map <buffer> <LocalLeader>c <Plug>SpecChangelog It means that you may run the plugin inside a spec file by pressing -your maplocalleader key (default is '\') plus 'c'. If you do not have +your maplocalleader key (default is '\') plus 'c'. If you do not have |spec_chglog_format| set, the plugin will ask you for an email address to use in this edit session. -Everytime you run the plugin, it will check to see if the last entry -in the changelog has been written today and by you. If it's the entry -mathes, it will just insert a new changelog item, otherwise it will -create a new changelog entry. If you are running with -|spec_chglog_release_info| enabled, it will also check if the name, version -and release matches. The plugin is smart enough to ask you if it should -update the package release, if you have not done so. +Every time you run the plugin, it will check to see if the last entry in the +changelog has been written today and by you. If the entry matches, it will +just insert a new changelog item, otherwise it will create a new changelog +entry. If you are running with |spec_chglog_release_info| enabled, it will +also check if the name, version and release matches. The plugin is smart +enough to ask you if it should update the package release, if you have not +done so. Setting a map *spec-setting-a-map* ------------- As you should know, you can easily set a map to access any Vim command (or -anything, for that matter). If you don't like the default map of -<LocalLeader>c, you may just set up your own key. The following line +anything, for that matter). If you don't like the default map of +<LocalLeader>c, you may just set up your own key. The following line shows you how you could do this in your .vimrc file, mapping the plugin to the <F5> key: @@ -57,16 +57,16 @@ This command will add a map only in the spec file buffers. The format string *spec_chglog_format* ----------------- -You can easily customize how your spec file entry will look like. To do +You can easily customize how your spec file entry will look like. To do this just set the variable "spec_chglog_format" in your .vimrc file like this: > let spec_chglog_format = "%a %b %d %Y My Name <my@email.com>" -Note that "%a %b %d %Y" is the most used time format. If you don't provide +Note that "%a %b %d %Y" is the most used time format. If you don't provide a format string, when you run the SpecChangelog command for the first time, it will ask you an email address and build the |spec_chglog_format| -variable for you. This way, you will only need to provide your email +variable for you. This way, you will only need to provide your email address once. To discover which format options you can use, take a look at the strftime() @@ -76,7 +76,7 @@ Where to insert new items *spec_chglog_prepend* ------------------------- The plugin will usually insert new %changelog entry items (note that it's -not the entry itself) after the existing ones. If you set the +not the entry itself) after the existing ones. If you set the spec_chglog_prepend variable > let spec_chglog_prepend = 1 @@ -87,11 +87,11 @@ Inserting release info *spec_chglog_release_info* ---------------------- If you want, the plugin may automatically insert release information -on each changelog entry. One advantage of turning this feature on is +on each changelog entry. One advantage of turning this feature on is that it may control if the release has been updated after the last -change in the package or not. If you have not updated the package +change in the package or not. If you have not updated the package version or release, it will ask you if it should update the package -release for you. To turn this feature on, just insert the following +release for you. To turn this feature on, just insert the following code in your .vimrc: > let spec_chglog_release_info = 1 diff --git a/en/remote.txt b/en/remote.txt index d5057d742..44d82ccdd 100644 --- a/en/remote.txt +++ b/en/remote.txt @@ -1,4 +1,4 @@ -*remote.txt* For Vim version 6.3. Last change: 2003 Nov 10 +*remote.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -45,6 +45,19 @@ The following command line arguments are available: --remote-wait-silent [+{cmd}] {file} ... *--remote-wait-silent* As --remote-wait, but don't complain if there is no server. + *--remote-tab* + --remote-tab Like --remote but open each file in a new + tabpage. + *--remote-tab-silent* + --remote-tab-silent Like --remote-silent but open each file in a + new tabpage. + *--remote-tab-wait* + --remote-tab-wait Like --remote-wait but open each file in a new + tabpage. + + *--remote-tab-wait-silent* + --remote-tab-wait-silent Like --remote-wait-silent but open each file + in a new tabpage. *--servername* --servername {name} Become the server {name}. When used together with one of the --remote commands: connect to @@ -53,8 +66,8 @@ The following command line arguments are available: *--remote-send* --remote-send {keys} Send {keys} to server and exit. *--remote-expr* - --remote-expr {expr} Evaluate {expr} in server and - print the result on stdout. + --remote-expr {expr} Evaluate {expr} in server and print the result + on stdout. *--serverlist* --serverlist Output a list of server names. @@ -87,7 +100,7 @@ SERVER NAME By default Vim will try to register the name under which it was invoked (gvim, egvim ...). This can be overridden with the --servername argument. If the specified name is not available, a postfix is applied until a free name is -encountered, ie. "gvim1" for the second invocation of gvim on a particular +encountered, i.e. "gvim1" for the second invocation of gvim on a particular X-server. The resulting name is available in the servername builtin variable |v:servername|. The case of the server name is ignored, thus "gvim" and "GVIM" are considered equal. @@ -121,7 +134,7 @@ wait for each of the files to have been edited. This uses the BufUnload event, thus as soon as a file has been unloaded, Vim assumes you are done editing it. Note that the --remote and --remote-wait arguments will consume the rest of -the command line. Ie. all remaining arguments will be regarded as filenames. +the command line. I.e. all remaining arguments will be regarded as filenames. You can not put options there! diff --git a/en/repeat.txt b/en/repeat.txt index 87eb799c3..d70f78a30 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 6.3. Last change: 2004 Jun 22 +*repeat.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -13,6 +13,7 @@ Chapter 26 of the user manual introduces repeating |usr_26.txt|. 3. Complex repeats |complex-repeat| 4. Using Vim scripts |using-scripts| 5. Debugging scripts |debug-scripts| +6. Profiling |profiling| ============================================================================== 1. Single repeats *single-repeat* @@ -20,7 +21,8 @@ Chapter 26 of the user manual introduces repeating |usr_26.txt|. *.* . Repeat last change, with count replaced with [count]. Also repeat a yank command, when the 'y' flag is - included in 'cpoptions'. + included in 'cpoptions'. Does not repeat a + command-line command. Simple changes can be repeated with the "." command. Without a count, the count of the last change is used. If you enter a count, it will replace the @@ -80,6 +82,11 @@ This replaces all occurrences of "pat" with "PAT". The same can be done with: :%s/pat/PAT/g Which is two characters shorter! +A special case is using ":visual" as a command. This will move to a matching +line, go to Normal mode to let you execute commands there until you use |Q| to +return to Ex mode. This will be repeated for each matching line. While doing +this you cannot use ":global". + ============================================================================== 3. Complex repeats *complex-repeat* @@ -101,7 +108,7 @@ q Stops recording. (Implementation note: The 'q' that expression. The result of the expression is then executed. See also |@:|. {Vi: only named registers} - *@@* + *@@* *E748* @@ Repeat the previous @{0-9a-z":*} [count] times. :[addr]*{0-9a-z".=} *:@* *:star* @@ -137,6 +144,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|. *:so* *:source* *load-vim-script* :so[urce] {file} Read Ex commands from {file}. These are commands that start with a ":". + Triggers the |SourcePre| autocommand. :so[urce]! {file} Read Vim commands from {file}. These are commands that are executed from Normal mode, like you type @@ -169,7 +177,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|. matching files. Example: > :runtime! plugin/*.vim < This is what Vim uses to load the plugin files when - starting up. This similar command: > + starting up. This similar command: > :runtime plugin/*.vim < would source the first file only. @@ -283,7 +291,7 @@ first line has something like ":map <F1> :help^M", where "^M" is a <CR>. If the first line ends in a <CR>, but following ones don't, you will get an error message, because the <CR> from the first lines will be lost. -Macintosh: Files that are read with ":source" normally have <CR> <EOL>s. +Mac Classic: Files that are read with ":source" normally have <CR> <EOL>s. These always work. If you are using a file with <NL> <EOL>s (for example, a file made on Unix), this will be recognized if 'fileformats' is not empty and the first line does not end in a <CR>. Be careful not to use a file with <NL> @@ -467,9 +475,17 @@ DEFINING BREAKPOINTS Set a breakpoint in a sourced file. Example: > :breakadd file 43 .vimrc +:breaka[dd] here + Set a breakpoint in the current line of the current file. + Like doing: > + :breakadd file <cursor-line> <current-file> +< Note that this only works for commands that are executed when + sourcing the file, not for a function defined in that file. + The [lnum] is the line number of the breakpoint. Vim will stop at or after this line. When omitted line 1 is used. + *:debug-name* {name} is a pattern that is matched with the file or function name. The pattern is like what is used for autocommands. There must be a full match (as if the pattern starts with "^" and ends in "$"). A "*" matches any sequence @@ -489,6 +505,10 @@ The match for functions is done against the name as it's shown in the output of ":function". For local functions this means that something like "<SNR>99_" is prepended. +Note that functions are first loaded and later executed. When they are loaded +the "file" breakpoints are checked, when they are executed the "func" +breakpoints. + DELETING BREAKPOINTS *:breakd* *:breakdel* *E161* @@ -496,12 +516,18 @@ DELETING BREAKPOINTS Delete breakpoint {nr}. Use |:breaklist| to see the number of each breakpoint. +:breakd[el] * + Delete all breakpoints. + :breakd[el] func [lnum] {name} Delete a breakpoint in a function. :breakd[el] file [lnum] {name} Delete a breakpoint in a sourced file. +:breakd[el] here + Delete a breakpoint at the current line of the current file. + When [lnum] is omitted, the first breakpoint in the function or file is deleted. The {name} must be exactly the same as what was typed for the ":breakadd" @@ -527,4 +553,107 @@ OBSCURE Undo ":debuggreedy": get debug mode commands directly from the user, don't use typeahead for debug commands. +============================================================================== +6. Profiling *profile* *profiling* + +Profiling means that Vim measures the time that is spend on executing +functions and/or scripts. The |+profile| feature is required for this. +It is only included when Vim was compiled with "huge" features. +{Vi does not have profiling} + +You can also use the |reltime()| function to measure time. This only requires +the |+reltime| feature, which is present more often. + +:prof[ile] start {fname} *:prof* *:profile* *E750* + Start profiling, write the output in {fname} upon exit. + If {fname} already exists it will be silently overwritten. + The variable |v:profiling| is set to one. + +:prof[ile] pause + Don't profile until the following ":profile continue". Can be + used when doing something that should not be counted (e.g., an + external command). Does not nest. + +:prof[ile] continue + Continue profiling after ":profile pause". + +:prof[ile] func {pattern} + Profile function that matches the pattern {pattern}. + See |:debug-name| for how {pattern} is used. + +:prof[ile][!] file {pattern} + Profile script file that matches the pattern {pattern}. + See |:debug-name| for how {pattern} is used. + This only profiles the script itself, not the functions + defined in it. + When the [!] is added then all functions defined in the script + will also be profiled. But only if the script is loaded after + this command. + + +:profd[el] ... *:profd* *:profdel* + Stop profiling for the arguments specified. See |:breakdel| + for the arguments. + + +You must always start with a ":profile start fname" command. The resulting +file is written when Vim exits. Here is an example of the output, with line +numbers prepended for the explanation: + + 1 FUNCTION Test2() ~ + 2 Called 1 time ~ + 3 Total time: 0.155251 ~ + 4 Self time: 0.002006 ~ + 5 ~ + 6 count total (s) self (s) ~ + 7 9 0.000096 for i in range(8) ~ + 8 8 0.153655 0.000410 call Test3() ~ + 9 8 0.000070 endfor ~ + 10 " Ask a question ~ + 11 1 0.001341 echo input("give me an answer: ") ~ + +The header (lines 1-4) gives the time for the whole function. The "Total" +time is the time passed while the function was executing. The "Self" time is +the "Total" time reduced by time spent in: +- other user defined functions +- sourced scripts +- executed autocommands +- external (shell) commands + +Lines 7-11 show the time spent in each executed line. Lines that are not +executed do not count. Thus a comment line is never counted. + +The Count column shows how many times a line was executed. Note that the +"for" command in line 7 is executed one more time as the following lines. +That is because the line is also executed to detect the end of the loop. + +The time Vim spends waiting for user input isn't counted at all. Thus how +long you take to respond to the input() prompt is irrelevant. + +Profiling should give a good indication of where time is spent, but keep in +mind there are various things that may clobber the results: + +- The accuracy of the time measured depends on the gettimeofday() system + function. It may only be as accurate as 1/100 second, even though the times + are displayed in micro seconds. + +- Real elapsed time is measured, if other processes are busy they may cause + delays at unpredictable moments. You may want to run the profiling several + times and use the lowest results. + +- If you have several commands in one line you only get one time. Split the + line to see the time for the individual commands. + +- The time of the lines added up is mostly less than the time of the whole + function. There is some overhead in between. + +- Functions that are deleted before Vim exits will not produce profiling + information. You can check the |v:profiling| variable if needed: > + :if !v:profiling + : delfunc MyFunc + :endif +< +- Profiling may give weird results on multi-processor systems, when sleep + mode kicks in or the processor frequency is reduced to save power. + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/rileft.txt b/en/rileft.txt index f63a39af4..a149e150c 100644 --- a/en/rileft.txt +++ b/en/rileft.txt @@ -1,4 +1,4 @@ -*rileft.txt* For Vim version 6.3. Last change: 2003 May 07 +*rileft.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Avner Lottem @@ -36,7 +36,7 @@ bidi and is merely opting to present a functional means to display/enter/use right-to-left languages. An older hybrid solution in which direction is encoded for every character (or group of characters) are not supported either as this kind of support is out of the scope of a simple addition to an -existing editor (and its not sanctioned by Unicode either). +existing editor (and it's not sanctioned by Unicode either). Highlights diff --git a/ja/editing.jax b/ja/editing.jax index d08e891a7..899357f13 100644 --- a/ja/editing.jax +++ b/ja/editing.jax @@ -1,10 +1,11 @@ COMMENT: テキストファイル編集全般にわたる解説 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*editing.txt* For Vim version 6.3. Last change: 2004 Apr 28 +*editing.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIMリファレンスマニュアル by Bram Moolenaar @@ -14,70 +15,95 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> 1. はじめに |edit-intro| 2. ファイルの編集 |edit-a-file| -3. ダイアログ |edit-dialogs| -4. カレントディレクトリ |current-directory| -5. 引数リスト |argument-list| -6. 書き込み |writing| -7. 書き込みと終了 |write-quit| +3. 引数リスト |argument-list| +4. 書き込み |writing| +5. 書き込みと終了 |write-quit| +6. ダイアログ |edit-dialogs| +7. カレントディレクトリ |current-directory| 8. バイナリファイルの編集 |edit-binary| 9. 暗号化 |encryption| 10. タイムスタンプ |timestamps| +11. ファイル検索 |file-searching| ============================================================================== 1. はじめに *edit-intro* 「Vimでファイルを編集する」とは、以下のことを表す。 -1. 内部バッファへファイルを読み込む +1. バッファへファイルを読み込む 2. 編集コマンドによりバッファの内容を変更する 3. バッファをファイルへ書き込む *current-file* バッファを書き込まない限り、元のファイルは変更を受けないままで残っている。ファ イルの編集を始めると (バッファにファイルを読み込むと)、そのファイルの名前は -「カレントファイル名」として記憶される。 +「カレントファイル名」として記憶される。これをカレントバッファの名前とも呼ぶ。 +コマンドラインでは"%"で表せる。|:_%| *alternate-file* -カレントファイル名が既に存在したときは、前の方は「代替ファイル名」になる。全て -のファイル名はファイルリストに記憶される。編集 (例えば ":e filename") や保存 -(例えば ":w filename") のためにファイル名を入力すると、そのファイル名はリスト -に追加される。このリストを使えば、どのファイルを編集したかを覚えておいたり、コ -マンド CTRL-^ によってあるファイルから別のファイルへ素早く移行できる (例えばテ -キストをコピーするため)。まずファイルの番号を、次に CTRL-^ を打ち込む。 -{Vi: 代替ファイル名は1個だけ使える} +カレントファイル名が既に存在したときは、前の方は「代替ファイル名」になる。これ +はコマンドラインでは"#"で表され|:_#|、|CTRL-^|を使うとカレントファイルと代替フ +ァイルを切り替えることが出来る。ただし|:keepalt|を使ったときは代替ファイル名は +変わらない。 + + *:keepalt* *:keepa* +:keepalt {cmd} 現在の代替ファイル名を変えずに{cmd}を実行する。 + Note 間接的に呼び出されるコマンド(例えば関数によって) + は代替ファイル名を変えてしまう。{Vi にはない} + +全てのファイル名はバッファリストに記憶される。編集 (例えば ":e filename") や保 +存(例えば ":w filename") のためにファイル名を入力すると、そのファイル名がリス +トに追加される。このリストを使えば、どのファイルを編集したかを覚えておいたり、 +コマンド CTRL-^ によってあるファイルから別のファイルへ素早く移行できる (例えば +テキストをコピーするとき)。まずファイルの番号を、次に CTRL-^ を打ち込む。{Vi: +代替ファイル名は1個だけ使える} CTRL-G または *CTRL-G* *:f* *:fi* *:file* -:f[ile] カレントファイル名 (これは打ち込まれた通り --訳注: 普 - 通、カレントディレクトリのファイルを編集するときはパス - を省いて打ち込むと思うが、そうするとパスなしのファイル - 名になる)、カーソル位置 (これはオプション 'ruler' がオ - フのとき) とファイルの状態 (読込専用、変更あり、読込エ - ラー、新規ファイル) を表示する。このメッセージを短くす - る方法については、オプション 'shortmess' を参照。 - {Vi では列番号が表示されない} +:f[ile] カレントファイル名 (これは":cd"が使われたとき以外は + 打ち込まれた通り --訳注: 普通、カレントディレクトリの + ファイルを編集するときはパスを省いて打ち込むと思うが、 + そうするとパスなしのファイル名になる)、カーソル位置 + (これはオプション 'ruler'がオフのとき) とファイルの状 + 態 (読込専用、変更あり、読込エラー、新規ファイル) を表 + 示する。このメッセージを短くする方法については、オプショ + ン 'shortmess' を参照。{Vi では列番号が表示されない} + +:f[ile]! |:file|と同様だが、'shortmess'が設定されているときでも + 名前を切り詰めない。 {count}CTRL-G CTRL-G と同様だが、カレントファイル名をフルパスで表示 する。{count} が2以上なら、カレントバッファの番号も表 示する。 {Vi にはない} *g_CTRL-G* *word-count* *byte-count* -g CTRL-G カーソルの現在の位置を、列、行、単語、バイト、の4種類 - の単位で表示する。行の中に画面上で1文字分以上の幅を占 - める文字 (<Tab> または特殊文字) があるときは、「実際」 - の列番号と画面上の列番号の両方が、ダッシュで区切られて - 表示される (訳注: 例えば、タブ幅 'tabstop' が8のとき、 - 行頭の <Tab> の次では「実際」の列番号は2、画面上の列番 - 号は9となり、"1-8" と表示される)。オプション 'ruler' - も参照。 {Vi にはない} +g CTRL-G カーソルの現在の位置を、列、行、単語、文字、バイト、の + 5種類の単位で表示する。文字数とバイト数が同じのときは + 文字位置が省略される。 + 行の中に画面上で1文字分以上の幅を占める文字 (<Tab> ま + たは特殊文字) があるときは、「実際」の列番号と画面上の + 列番号の両方が、ダッシュで区切られて表示される (訳注: + 例えば、タブ幅 'tabstop' が8のとき、行頭の <Tab> の次 + では「実際」の列番号は2、画面上の列番号は9となり、 + "1-8" と表示される)。オプション 'ruler'も参照。 {Vi に + はない} *v_g_CTRL-G* -{Visual}g CTRL-G "g CTRL-G" と似ているが、単語、行、バイトの項目はビジュ - アル選択領域内で数えられて表示される。ビジュアルブロッ - クモードでは、何列目かも表示される ({Visual} について - は |Visual-mode| を参照)。 {Vi にはない} +{Visual}g CTRL-G "g CTRL-G" と似ているが、単語、文字、行、バイトの項目 + はビジュアル選択領域内で数えられて表示される。ビジュア + ルブロックモードでは、何列目かも表示される。 + 矩形選択モードでは桁数も表示される({Visual}については + |Visual-mode| を参照) + {Vi にはない} *:file_f* -:f[ile] {name} カレントファイル名を {name} に設定する。 +:f[ile][!] {name} カレントファイル名を {name} に設定する。!をつけると + |:file|のようにメッセージを切り詰めなくなる。 + バッファが名前を持つならその名前が代替ファイル名 + |alternate-file|になる。元の名前を保持するためにリスト + されない(unlisted)バッファが作成される。 + *:0file* +:0f[ile][!] カレントバッファの名前を削除する。!をつけると|:file|の + ようにメッセージを切り詰めなくなる。{Vi にはない} :buffers :files @@ -134,12 +160,14 @@ Vimは入力したファイル名のフルパス名を記憶している。フ ファイル名を指定せずに編集を始めたときは、メッセージ欄に "[無題]" と表示される。 コマンド ":write" がファイル名引数付きで使われたときは、そのファイル名がカレン -トファイルのファイル名に設定される。こうなるのはフラグ 'F' がオプション +トファイルのファイル名に設定される。こうなるのはフラグ 'F' |cpo-F| がオプション 'cpoptions' に含まれているときだけである (既定では含まれている)。これは空のバッ ファにテキストを入力してから、それをファイルに保存するときに便利である。 -'cpoption' が 'f' を含んでいるときは (既定では含まれて「いない」)、 +'cpoption' が 'f' |cpo-f| を含んでいるときは (既定では含まれて「いない」)、 ":read file" でファイル名が設定される。これは引数なしでVimを起動してから、 ":read file" でファイルの編集を開始するときに便利である。 +ファイル名が設定されていて'filetype'が空のとき、ファイルタイプ判別自動コマンド +が発生する。 *not-edited* ファイル名が設定されるのはその名前のファイルの編集を本当に始めるより前なので、 そのファイルを誤って上書きしないようになっている。これはフラグ "notedited" を @@ -202,10 +230,10 @@ Vimはバッファが変更されたかどうかを記憶していて、変更 {Vi: ++opt は使えない} :e[dit] [++opt] [+cmd] #[count] - [count] 番目の代替ファイル (コマンド |:files| で表示さ - れるもの) を編集する。このコマンドは [count] CTRL-^ と - 同じである。しかし代替バッファがファイル名を持たないと - ":e #" は機能しないが、CTRL-^ はそのときも機能する。 + [count] 番目のバッファ (コマンド |:files| で表示される + もの) を編集する。このコマンドは [count] CTRL-^ と同じ + である。しかし代替バッファがファイル名を持たないと":e + #" は機能しないが、CTRL-^ はそのときも機能する。 |++opt| と |+cmd| も参照。 {Vi: ++opt は使えない} @@ -256,10 +284,10 @@ Vimはバッファが変更されたかどうかを記憶していて、変更 オプション 'readonly' をオンにする。 {Vi にはない} *CTRL-^* *CTRL-6* -[count]CTRL-^ [count] 番目の代替ファイルを編集する (コマンド - ":e #[count]" と同じ)。[count] が指定されないと、前に - 編集したファイルを編集する。これを使うと2つ (かそれ以 - 上) のファイル間を素早く行き来できる。 +CTRL-^ 代替ファイルを編集する(コマンド ":e #" と同じ)。 + たいていの場合、代替ファイルは前に編集したファイルであ + る。これを使うと2つのファイル間を素早く切り替えること + ができる。 オプション 'autowrite' か 'autowriteall' がオンならば、 バッファを移動するときに書き込みをする。 たいていは"^"と"6"は同じキーです。CTRLを押しながら6の @@ -267,6 +295,13 @@ Vimはバッファが変更されたかどうかを記憶していて、変更 かし英語配列でないキーボードでは他のキーが割り当てられ ます。 +[count]CTRL-^ [count] 番目の代替ファイルを編集する (コマンド + ":e #[count]" と同じ)。[count] が指定されないと、前に + 編集したファイルを編集する。これを使うと2つ (かそれ以 + 上) のファイル間を素早く行き来できる。 + さらに詳しくは上の|CTRL-^|を参照。 + {Vi にはない} + [count]]f *]f* *[f* [count][f コマンド "gf" と同じ。推奨されない。 @@ -286,6 +321,8 @@ Vimはバッファが変更されたかどうかを記憶していて、変更 番目のファイルを編集する。 Vimがカレントファイルの破棄 |abandon| を拒否したときは、 このコマンドの実行は失敗する。 + このファイルを新しいウィンドウで編集したいときは + |CTRL-W_CTRL-F|を使うこと。 新しいファイルを編集したいならば、次のようにする。 > :e <cfile> < どのような場合でもコマンド gf を機能させるには、次のよ @@ -307,6 +344,21 @@ Vimはバッファが変更されたかどうかを記憶していて、変更 ({Visual} については |Visual-mode| を参照。) {Vi にはない} + *gF* +[count]gF "gf" と同じだが、ファイル名の後に番号があるとき、その + 行へカーソルが移動する点が異なる。ファイル名と行番号は + ファイル名でない文字('isfname'を参照)かつ数字でない文 + 字で区切られてなければならない。ファイル名、区切り文字、 + 番号の間の空白文字は無視される。 + 例: + eval.c:10 ~ + eval.c @ 20 ~ + eval.c (30) ~ + eval.c 40 ~ + + *v_gF* +{Visual}[count]gF "v_gf" と同じ。 + 以上のコマンドは1つのファイルの編集を開始するために使用される。これはファイル がバッファに読み込まれ、カレントファイル名が設定されることを意味する。開かれる ファイルはカレントディレクトリに依存する。コマンド |:cd| を参照。 @@ -322,15 +374,17 @@ Vimはバッファが変更されたかどうかを記憶していて、変更 Note UnixとMS-DOS以外のシステムに対する注意: 1つのファイル名を受け付けるコマン ド (":edit file" 等) を使うときは、ファイル名に空白が入っていても構わないが、 ファイル名末尾の空白は無視される。これは空白が含まれたファイル名を認めているシ -ステム (Amiga等、訳注: MS-Win32も) では便利である。例: コマンド -":e Long File Name " はファイル "Long File Name" を編集する。1つ以上のファイ -ル名を受け付けるコマンド (":next file1 file2" 等) を使うときは、ファイル名内の -空白は '\' でエスケープしなければならない。 +ステム (MS-Windows, Amiga等) では便利である。例: コマンド":e Long File Name +" はファイル "Long File Name" を編集する。1つ以上のファイル名を受け付けるコマ +ンド (":next file1 file2" 等) を使うときは、ファイル名内の空白は '\' でエスケー +プしなければならない。 + *wildcard* {file} 内のワイルドカードは展開される。使用できるワイルドカードの種類は、シス テムによって異なる。以下は標準的なものである。 - * 何もないのも含め、全てにマッチ ? あらゆる1文字にマッチ + * 何もないのも含め、全てにマッチ + ** 何もないのも含め、全てにマッチ。ディレクトリを再帰的にたどる。 [abc] 'a', 'b' または 'c' にマッチ ワイルドカードとしての特別な意味を無効にするには、前に '\' を置くこと。しかし MS-Windowsでは '\' がパスの区切り文字なので、オプション 'isfname' の値に "[" @@ -338,8 +392,24 @@ MS-Windowsでは '\' がパスの区切り文字なので、オプション 'isf る単純な方法は、"path\[[]abc]" とすることである。すると文字通りのファイル "path[abc]" を編集できる。 + *starstar-wildcard* +"**" の展開は、Unix, Win32, Mac OS/X、その他数種類のシステムでのみ使用できる。 +"**" はディレクトリツリーを再帰的に検索する。深さの上限は100ディレクトリである。 +例: > + :n **/*.txt +これは次のファイルにマッチする: + ttt.txt + subdir/ttt.txt + a/b/c/d/ttt.txt +ワイルドカードでない文字を使うと、それらは最初のディレクトリにのみマッチする。 +例: > + :n /usr/inc**/*.h +これは次のファイルにマッチする: + /usr/include/types.h + /usr/include/sys/types.h + /usr/inc_old/types.h *backtick-expansion* *`-expansion* -Unixではファイル名にバッククォート '`' も使える。例: > +Unix などではファイル名にバッククォート '`' も使える。例: > :e `find . -name ver\\*.c -print` アスタリスク '*' の前の '\' は、"ver*.c" がプログラム find を実行する前にシェ ルによって展開されるのを防ぐために必要となる。 @@ -347,23 +417,30 @@ Unixではファイル名にバッククォート '`' も使える。例: > システムでも機能する。最初のバッククォートの前や最後のバッククォート直後に、直 接テキストを入れてはならない。 + *`=* バッククォート内を、外部コマンドとしてではなくVimの expression として展開させ ることもできる。そのためには `={expr}` という構文を使えばよい。例: > - :let foo='bar' - :e `=foo . ".c" ` -これは "bar.c" を編集する。 Note Expressionにバッククォートを含めることはでき -ないので注意。 + :e `=tempname()` +この式はほとんど何を含んでもよい。そのため、これを使って '"', '|', '%', '#' の +特別な意味を打ち消すこともできる。引数は改行で区切られる。式の結果がリスト +|List|になるときは、各要素が名前になる。改行も引数の区切りになる。 *++opt* *[++opt]* -引数のうち [++opt] はオプション 'fileformat' または 'fileencoding' の値を、そ -のコマンドに限ってある値に指定するために使われる。指定の形式は次の通り。 > - ++{optname}={value} +引数のうち [++opt] はオプション 'fileformat', 'fileencoding' または +'binary'の値を、そのコマンドに限ってある値に指定し、不正な文字への対応を指定す +るために使われる。指定の形式は次の通り。 > + ++{optname} +または > +< ++{optname}={value} ここで {optname} は以下のうちのどれかである。 *++ff* *++enc* ff または fileformat 'fileformat' を指定 enc または encoding 'fileencoding' を指定 bin または binary 'binary' を指定 nobin または nobinary 'binary' を無効にする + bad 不正な文字への対応を指定する + edit |:read| 用。ファイルを編集するときと同じように + オプションの値を保つ。 {value} に空白を含めてはいけない。値は、そのオプションに対して適切なものなら何 でもよい。例: > @@ -373,13 +450,24 @@ Unixではファイル名にバッククォート '`' も使える。例: > :w ++enc=latin1 newfile こうするとカレントバッファの内容を latin1 の文字コードで "newfile" に書き出す。 +引数 [++opt] は空白で区切って複数指定してもよい。それらはみな引数 |+cmd| より +前に指定しなければならない。 + + *++bad* +"++bad=" の引数は、変換できない文字と不正なバイトをどうするかを指定する。とり +うる値は次の3つのうちどれかである: + ++bad=X 不正な文字をこの1バイト文字で置き換える。 + ++bad=keep 不正な文字を変換せずにそのままにしておく。Note これを使うとテ + キスト中に不正なバイトが現れることになる。 + ++bad=drop 不正な文字を削除する。 + +既定値は "++bad=?" となっている。つまり、不正な文字をそれぞれクエスチョンマー +クで置き換える。 + Note 読み込み時に上の方法で 'fileformat' と 'fileencoding' を指定すると、それ らは以後その値に設定されることに注意。書き込み時に設定してもそうはならず、次に 書き込むときには以前の値が使われる。'binary'オプションも同様。 -引数 [++opt] は空白で区切って複数指定してもよい。それらはみな引数 |+cmd| より -前に指定しなければならない。 - *+cmd* *[+cmd]* 引数 [+cmd] は、新しく開いたファイルでカーソルの位置を指定したり、他のあらゆる コマンドを実行するために使われる: @@ -387,14 +475,14 @@ Note 読み込み時に上の方法で 'fileformat' と 'fileencoding' を指定 +{num} {num} 行目で編集を開始する。 +/{pat} {pat} を含んだ最初の行で編集を開始する。 +{command} 新しいファイルを開いた後に {command} を実行する。 - {command} には任意のExコマンドが使える. + {command} には任意のExコマンドが使える。 {pat} や {command} に空白を含めるためには、その前に '\' を付ける。'\' そのもの を使うには、2回ずつ繰り返すこと。 > :edit +/The\ book ファイル :edit +/dir\ dirname\\ ファイル :edit +set\ dir=c:\\\\temp ファイル -Note 最後の例では '\' の繰り返しが2回行われていることに注意."+cmd" の引数なの -で1回,コマンド ":set" のためにもう1回だ. +Note 最後の例では '\' の繰り返しが2回行われていることに注意。"+cmd" の引数なの +で1回、コマンド ":set" のためにもう1回だ。 *file-formats* オプション 'fileformat' はファイルに対して <EOL> の形式を設定する。 @@ -460,414 +548,200 @@ DOS形式でファイルを読み込んで、Unix形式でそれを保存する れは他人がユーザのファイルを読むことに対して、ある程度の安全を保障する。 |encryption| - -ファイル検索 *file-searching* - -{Vi mが |+path_extra| 機能付きでコンパイルされたときのみ有効} - -現在の所、オプション 'path', 'cdpath' と 'tags' でファイル検索が使われる。ファ -イル検索には以下の3種類がある。 - -1) 下向き検索: - 下向き検索にはワイルドカード '*' と '**' 及びユーザのOSがサポートするその他 - のものが使える。'*' と '**' はVim内部で扱われるので、全てのOSで機能する。 - - '*' の使用法はきわめて単純: 0 個以上の文字にマッチする。 - - '**' はもっときめ細かい。 - - これはディレクトリのみにマッチする。 - - これは 30 段階までの深さのディレクトリにマッチするので、ディレクトリ・ - ツリー全体の検索に使える。 - - マッチする深さの最大値は '**' の前に数字を付け加えて指定できる。 - だから '/usr/**2' は下のようにマッチする。 > - /usr - /usr/include - /usr/include/sys - /usr/include/g++ - /usr/lib - /usr/lib/X11 - .... -< '/usr/include/g++/std' には、深さが3なのでマッチしない。 - 指定可能な範囲は 0 ('**0' は無視される) から 255 である。 - 負数を指定すると 30 を、255 より大きい数を指定すると 255 を指定したも - のとされる。 - - '**' はパスの末尾にのみ使える。後ろにパス区切り文字か、数字とパス区切 - り文字の組み合わせを付けてもよい。 - - '*' と '**' を組み合わせる順番は自由である。 > - /usr/**/sys/* - /usr/*/sys/** - /usr/**2/sys/* - -2) 上向き検索: - この方法ではディレクトリを指定すると、そのディレクトリから上に遡ってファイ - ルを探す。上向き探索の上限となるディレクトリが指定できる。それはパス (オプ - ション 'path') かファイル名 (オプション 'tags') の末尾に ';' で区切って指定 - する。複数のディレクトリを指定したいときはそれらを ';' で区切る。上限ディレ - クトリを指定したくないときは (ルートディレクトリまで上向き検索したいとき) - ';' だけを付ける。 > - /usr/include/sys;/usr -< で検索されるディレクトリは: > - /usr/include/sys - /usr/include - /usr -< - 相対パスを使うと上向き検索はVimのカレントディレクトリから始まる。相対パスの - 指定が ',/' で始まり、'cpoptions' にフラグ 'd' が含まれていないときはカレン - トファイルのディレクトリから始まる。 - - Vimのカレントパスが /u/user_x/work/release のときに > - :set path=include;/u/user_x -< とすると、コマンド |gf| でファイルを探す範囲は: > - /u/user_x/work/release/include - /u/user_x/work/include - /u/user_x/include - -3) 複合検索: - Vimのカレントパスが /u/user_x/work/release のときに > - set path=**;/u/user_x -< とすると、コマンド |gf| でファイルを探す範囲は: > - /u/user_x/work/release/** - /u/user_x/work/** - /u/user_x/** -< - 注 意 ! これはかなりの時間を食うかもしれない。'/u/user_x/**' は - '/u/user_x/work/**' や '/u/user_x/work/release/**' を含むからだ。つまり - '/u/user_x/work/release/**' は3回、'/u/user_x/work/**' は2回繰り返して検索 - される。 - - 上の例では > - :set path=**,/u/user_x/** -< とした方がよいだろう。これに含まれる範囲は > - /u/user_x/work/release/** - /u/user_x/** -< となり、同じディレクトリだが順番が違う。 - -============================================================================== -3. ダイアログ *edit-dialogs* - - *:confirm* *:conf* -:conf[irm] {command} {command} を実行する際、確認が必要ならばダイアログを表 - 示する。コマンド ":q", ":qa" や ":w" と共に使える - (":w" では読み取り専用属性を無視するかどうかを尋ねる)。 - -例: > - :confirm w foo -< ファイル "foo" が既に存在するときに確認を取る。 > - :confirm q -< バッファに修正個所があるときに確認を取る。 > - :confirm qa -< 修正個所があり、保存されていないバッファがあるとき、各バッファについて - 保存するか破棄するか尋ねる。「全て保存」や「全て破棄」という選択肢もあ - る。 - -常に ":confirm" を使いたいなら、代わりにオプション 'confirm' をオンにすること。 - - *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* -:bro[wse] {command} {command} の引数のためにファイル選択ダイアログを開く。 - 現在の所,コマンド |:e|, |:w|, |:r|, |saveas|, |:sp|, - |:mkexrc|, - |:mkvimrc| や |:mksession| と共に使える。 - {Vi mのWin32版,Motif、Athena、GTKやMacのGUI版でのみ利 - 用可能.} - |:browse|が使えない時ははエラーが表示される。|+browse| - の機能がなかったり、{command}がサポート対象外だった場 - 合、{command} はダイアログなしで実行される。 - -使用法については、例を幾つか見るのが一番分かりやすい. > - :browse e $vim/foo -< ファイル選択ダイアログをディレクトリ $vim/foo 内で開き、選択さ - れたファイルを編集する。 > - :browse e -< ファイル選択ダイアログを'browsedir'で指定されたディレクトリ内 - で開き、選択されたファイルを編集する。 > - :browse w -< ファイル選択ダイアログをカレントファイルのディレクトリ内で、カ - レントファイルの名前を既定値として開き、選択されたファイル名を - 使ってバッファを保存する。 > - :browse w C:/bar -< ファイル選択ダイアログをディレクトリ C:/bar 内で、カレントファ - イルの名前を既定値として開き、選択されたファイル名を使ってバッ - ファを保存する。 -オプション 'browsedir' も参照すること。 -Vimのファイル選択ダイアログをサポートしないヴァージョンでは、コマンドはそのま -ま実行される。 - - *browsefilter* -MS-WindowsのVimでは、ファイル選択ダイアログで使われるフィルタを指定できる。グ -ローバル変数 g:browsefilter かローカル変数 b:browsefilter を設定すると、フィル -タをグローバルにまたはバッファについてローカルに変更できる。この変数を指定する -際の書式は "{filter label}\t{pattern};{pattern}\n" で、{filter label} はコンボ -ボックス「ファイルの種類」に使われるテキスト、{pattern} はファイル名を選別する -フィルタである。';' で区切れば複数のパターンを指定できる。 - -Motif上のVimでは同じ書式が使えるが、実際には1番目のパターンだけが使われる -(Motifではパターンは1種類しか使えないが,それをユーザが編集できる)。 - -例えばダイアログでVim関連ファイルだけを表示するには、以下のコマンドを使う. > - - let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n" - -フィルタは,変数 b:browsefilter を設定することでバッファ毎に設定できる. -b:browsefilter はファイルタイプ別のプラグインで設定することが一番多いだろう. -するとファイルブラウザ・ダイアログには現在編集中のファイルのタイプに関連した候 -補が表示される.弊害:別の種類のファイルの編集が始め辛くなる.対策は,フィルタ -の最後の項目に "All Files\t*.*\n" を加え,ユーザが望みのファイルにアクセスでき -る道を残すことだ. - -============================================================================== -4. カレントディレクトリ *current-directory* - -コマンド |:cd| や |:lcd| を使って別のディレクトリに移ることができる.すると -(訳注: そのディレクトリ内のファイルを編集するとき) そのディレクトリ名をファイ -ル名の前に付けなくても良くなる.また違いは ":!ls" 等の外部コマンドの実行の際に -も現れる. - - *:cd* *E472* -:cd Unix以外のシステムでは: カレントディレクトリ名を表示す - る。Unixシステムでは: カレントディレクトリをホームディ - レクトリに変更する。全てのシステムで,カレントディレク - トリの表示にはコマンド |:pwd| が使える. - -:cd {path} カレントディレクトリを {path} に変更する. - {path} が相対的な指定なら,オプション 'cdpath' 内に列 - 挙されたディレクトリを基準に判断される.既に開かれたファ - イルについては,フルパスが把握されているので変化はない. - しかし引数リスト |arglist| 内のファイルの意味は変わる - かもしれない! - MS-DOSではアクティブなドライブも変更する. - カレントファイルのディレクトリに移るにはこうする. > - :cd %:h -< - *:cd-* *E186* -:cd - 前のカレントディレクトリ (前にコマンド ":cd {path}" で - 移った所) に移る。 {Vi にはない} - - *:chd* *:chdir* -:chd[ir] [path] コマンド |:cd| と同じ。 - - *:lc* *:lcd* -:lc[d] {path} コマンド |:cd| と似ているが,カレントウィンドウのカレ - ントディレクトリのみを変更する.別のウィンドウのカレン - トディレクトリに変化はない. {Vi にはない} - - *:lch* *:lchdir* -:lch[dir] |:lcd| と同じ. {Vi にはない} - - *:pw* *:pwd* *E187* -:pw[d] カレントディレクトリ名を表示する。 {Vi: pwdはない} - |getcwd()| も参照。 - -コマンド |:lcd| が使われない限り,全てのウィンドウは同じカレントディレクトリを -共有する.別のウィンドウに移るコマンドを使ってもカレントディレクトリについての -変化は何もない. -コマンド |:lcd| があるウィンドウ内で使われると,指定されたディレクトリがそのウィ -ンドウに対してのカレントウィンドウになる.コマンド |:lcd| が使われたことのない -ウィンドウはグローバルなカレントウィンドウを使い続ける.別のウィンドウに移った -ときは,カレントディレクトリは (訳注: 移動先に対して) 最後に指定されたローカル -なカレントディレクトリになる.何も指定されていなかったら,グローバルなカレント -ディレクトリが使われる. -コマンド |:cd| が使われると,カレントウィンドウは固有のローカルなカレントディ -レクトリを失い,グローバルなカレントディレクトリを使うようになる. - -|:cd| を使った後は,ファイルの読み書きにはフルパス名が使われる.ネットワーク接 -続されたファイルシステムではこれが問題を起こすことがある.フルパス名を使った結 -果,現在使用中のファイル名は同じファイルを指し続けることになる.例: ファイル -a:test とディレクトリ a:vim があるとき,":e test" ":cd vim" ":w" とするとファ -イル a:test を上書きし,a:vim/test には書き込まない.しかし ":w test" とすると -ファイル a:vim/test が書き込まれる.それは新しいファイル名が指定され,":cd" 以 -前のファイル名には言及してないからだ. - ============================================================================== -5. 引数リスト *argument-list* *arglist* +3. 引数リスト *argument-list* *arglist* -Vimの開始時に複数のファイル名を与えると,それらは引数リストとして記憶される. -リスト内のファイルにはどれでも移動できる. +Vim の開始時に複数のファイル名を与えると、それらは引数リストとして記憶される。 +リスト内のファイルにはどれでも移動できる。 -これをコマンド |:buffers| で表示されるバッファリストと混同してはいけない.引数 -リストはViから既にあったが,バッファリストはVimで新たに導入された.引数リスト -内のファイルはバッファリストにも含まれる (コマンド ":bdel" で消去されない限り). +これをコマンド |:buffers| で表示されるバッファリストと混同してはいけない。引数 +リストは Vi から既にあったが、バッファリストは Vim で新たに導入された。引数リ +スト内のファイルはバッファリストにも含まれる (コマンド |:bdel| や |:bwipe| で +消去されない限り)。逆にバッファリスト内のファイルが引数リストに含まれないこと +は普通にある。 -この話題はユーザマニュアルの第 |07.2| 章で紹介されている. +この話題はユーザマニュアルの第 |07.2| 章で紹介されている。 -グローバルな引数リストが1個あり,これは既定では全てのウィンドウに使われる.ウィ -ンドウについてローカルな引数リストを新たに創ることもできる.|:arglocal| を参照. +グローバルな引数リストが1個あり、これは既定では全てのウィンドウに使われる。ウィ +ンドウについてローカルな引数リストを新たに創ることもできる。|:arglocal| を参照。 引数リストは以下のコマンド及び expression 用関数 |argc()| と |argv()| で利用で -きる.これらはみなカレントウィンドウの引数リストに対して働く. +きる。これらはみなカレントウィンドウの引数リストに対して働く。 *:ar* *:args* -:ar[gs] 引数リストを表示する.カレントファイルは '[' ']' で挟 - まれて表示される. +:ar[gs] 引数リストを表示する。カレントファイルは '[' ']' で挟 + まれて表示される。 :ar[gs] [++opt] [+cmd] {arglist} *:args_f* - {arglist} を新たな引数リストとして定義し,そのうち最初 - のファイルの編集を始める.変更点があり,Vimがカレント - バッファを放棄 |abandon| したくないときには失敗する. + {arglist} を新たな引数リストとして定義し、そのうち最初 + のファイルの編集を始める。変更点があり、Vimがカレント + バッファを放棄 |abandon| したくないときには失敗する。 |++opt| と |+cmd| も参照。 {Vi: ++opt はない} :ar[gs]! [++opt] [+cmd] {arglist} *:args_f!* - {arglist} を新たな引数リストとして定義し,そのうち最初 - のファイルの編集を始める.カレントバッファに対する変更 - 点は全て失われる. + {arglist} を新たな引数リストとして定義し、そのうち最初 + のファイルの編集を始める。カレントバッファに対する変更 + 点は全て失われる。 |++opt| と |+cmd| も参照。 {Vi: ++opt はない} :[count]arge[dit][!] [++opt] [+cmd] {name} *:arge* *:argedit* - 引数リストに {name} を追加し,その編集を始める. - {name} が既に引数リスト内にあるときは,その編集を始め - る. - これはコマンド |:argadd| を使い,次に |:edit| を使うの - と同じである. - Note 指定できるファイルは1個であり,|:edit| と同様ファ - イル名の中に空白が使えることに注意.[count] は - |:argadd| と同様に使われる. + 引数リストに {name} を追加し、その編集を始める。 + {name} が既に引数リスト内にあるときは、その編集を始め + る。 + これはコマンド |:argadd| を使い、次に |:edit| を使うの + と同じである。 + Note 指定できるファイルは1個であり、|:edit| と同様ファ + イル名の中に空白が使えることに注意。[count] は + |:argadd| と同様に使われる。 カレントファイルが放棄 |abandon| できないときは '!' が - 必要になる. + 必要になる。 |++opt| と |+cmd| も参照。 {Vi にはない} :[count]arga[dd] {name} .. *:arga* *:argadd* - 引数リストに {name} を追加する. + 引数リストに {name} を追加する。 [count] が省かれると {name} は引数リストの現在の項目の - 次に挿入される.指定されると [count] 番目の項目の次に - 挿入される.引数リストが "a b c" で "b" が現在の引数の + 次に挿入される。指定されると [count] 番目の項目の次に + 挿入される。引数リストが "a b c" で "b" が現在の引数の 場合のコマンドの結果一覧: コマンド 新たな引数リスト ~ :argadd x a b x c :0argadd x x a b c :1argadd x a x b c :99argadd x a b c x - 重複検査はないので,1個のファイルを引数リストに2回加え - ることもできる. - 現在編集中のファイルは変更されない. + 重複検査はないので、1個のファイルを引数リストに2回加え + ることもできる。 + 現在編集中のファイルは変更されない。 {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル されたときのみ有効} - Note 次の方法が使えることに注意. > + Note 次の方法が使えることに注意。 > :args ## x -< これは項目 "x" を追加し,新たなリストを並び替える. +< これは項目 "x" を追加し、新たなリストを並び替える。 :argd[elete] {pattern} .. *:argd* *:argdelete* *E480* - {pattern} にマッチするファイルを引数リストから削除する. - {pattern} の意味はファイルパターンと同様なので, - |file-pattern| を参照.現在の項目を削除するには "%" が - 使える. + {pattern} にマッチするファイルを引数リストから削除する。 + {pattern} の意味はファイルパターンと同様なので、 + |file-pattern| を参照。現在の項目を削除するには "%" が + 使える。 このコマンドは現在編集中のファイルが引数リストから削除 - されたときでも,それをそのままに保つ. - {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル + されたときでも、それをそのままに保つ。 + 例: > + :argdel *.obj +< {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル されたときのみ有効} -:{range}argd[elete] 引数リストから {range} の範囲のファイルを削除する. - 範囲の上限が大きすぎるときは,最後の引数までが削除され - る.例: > +:{range}argd[elete] 引数リストから {range} の範囲のファイルを削除する。 + 範囲の上限が大きすぎるときは、最後の引数までが削除され + る。例: > :10,1000argdel -< とすると10以降が削除され,1から9は残る. +< とすると10以降が削除され、1から9は残る。 {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル されたときのみ有効} *:argu* *:argument* :[count]argu[ment] [count] [++opt] [+cmd] - 引数リスト内で [count] 番目のファイルを編集する. - [count] が省かれると現在の項目を編集する.変更点があり, + 引数リスト内で [count] 番目のファイルを編集する。 + [count] が省かれると現在の項目を編集する。変更点があり、 Vimがカレントバッファを放棄 |abandon| したくないときに - は失敗する. + は失敗する。 |++opt| と |+cmd| も参照。 {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル されたときのみ有効} :[count]argu[ment]! [count] [++opt] [+cmd] - 引数リスト内で [count] 番目のファイルを編集する.カレ - ントバッファに対するいかなる変更も失われる.[count] が - 省かれると現在の項目を編集する. + 引数リスト内で [count] 番目のファイルを編集する。カレ + ントバッファに対するいかなる変更も失われる。[count] が + 省かれると現在の項目を編集する。 |++opt| と |+cmd| も参照。 {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル されたときのみ有効} :[count]n[ext] [++opt] [+cmd] *:n* *:ne* *:next* *E165* *E163* - 引数リストの中で [count] 個次のファイルを編集する. - 変更点があり,Vimがカレントバッファを放棄 |abandon| し - たくないときには失敗する. - |++opt| と |+cmd| も参照. {Vi: count や ++opt はない} + 引数リストの中で [count] 個次のファイルを編集する。 + 変更点があり、Vimがカレントバッファを放棄 |abandon| し + たくないときには失敗する。 + |++opt| と |+cmd| も参照。 {Vi: count や ++opt はない} :[count]n[ext]! [++opt] [+cmd] - 引数リストの中で [count] 個次のファイルを編集する.カ - レントバッファに対するいかなる変更も失われる. - |++opt| と |+cmd| も参照. + 引数リストの中で [count] 個次のファイルを編集する。カ + レントバッファに対するいかなる変更も失われる。 + |++opt| と |+cmd| も参照。 {Vi: count や ++opt はない} :n[ext] [++opt] [+cmd] {arglist} *:next_f* - コマンド |:args_f| と同じ. + コマンド |:args_f| と同じ。 :n[ext]! [++opt] [+cmd] {arglist} - コマンド |:args_f!| と同じ. + コマンド |:args_f!| と同じ。 :[count]N[ext] [count] [++opt] [+cmd] *:Next* *:N* *E164* 引数リストの中で [count] 個前のファイルを編集する。変 - 更点があり,Vimがカレントバッファを破棄 |abandon| した + 更点があり、Vimがカレントバッファを破棄 |abandon| した くないときには失敗する。 |++opt| と |+cmd| も参照。 {Vi: count や ++opt はない} :[count]N[ext]! [count] [++opt] [+cmd] - 引数リスト内で [count] 個前のファイルを編集する.カレ - ントバッファに対するいかなる変更も失われる. - |++opt| と |+cmd| も参照. {Vi: count や ++opt はない} + 引数リスト内で [count] 個前のファイルを編集する。カレ + ントバッファに対するいかなる変更も失われる。 + |++opt| と |+cmd| も参照。 {Vi: count や ++opt はない} :[count]prev[ious] [count] [++opt] [+cmd] *:prev* *:previous* - コマンド |:Next| と同じ. - |++opt| と |+cmd| も参照. {Vi: 幾つかのヴァージョンに + コマンド |:Next| と同じ。 + |++opt| と |+cmd| も参照。 {Vi: 幾つかのヴァージョンに のみ存在} *:rew* *:rewind* :rew[ind] [++opt] [+cmd] - 引数リスト内で最初のファイルの編集を始める.変更点があ - り,Vimがカレントバッファを放棄 |abandon| したくないと - きには失敗する. + 引数リスト内で最初のファイルの編集を始める。変更点があ + り、Vimがカレントバッファを放棄 |abandon| したくないと + きには失敗する。 |++opt| と |+cmd| も参照。 {Vi: ++opt はない} :rew[ind]! [++opt] [+cmd] - 引数リスト内で最初のファイルを編集する.カレントバッフ - ァに対するいかなる変更も失われる. - |++opt| と |+cmd| も参照. {Vi: ++opt はない} + 引数リスト内で最初のファイルを編集する。カレントバッフ + ァに対するいかなる変更も失われる。 + |++opt| と |+cmd| も参照。 {Vi: ++opt はない} *:fir* *:first* :fir[st][!] [++opt] [+cmd] - コマンド |:rewind| の別名. {Vi にはない} + コマンド |:rewind| の別名。 {Vi にはない} *:la* *:last* :la[st] [++opt] [+cmd] - 引数リスト内で最後のファイルの編集を始める.変更点があ - り,Vimがカレントバッファを放棄 |abandon| したくないと - きには失敗する. + 引数リスト内で最後のファイルの編集を始める。変更点があ + り、Vimがカレントバッファを放棄 |abandon| したくないと + きには失敗する。 |++opt| と |+cmd| も参照。 {Vi にはない} :la[st]! [++opt] [+cmd] - 引数リスト内で最初のファイルを編集する.カレントバッフ - ァに対するいかなる変更も失われる. + 引数リスト内で最初のファイルを編集する。カレントバッフ + ァに対するいかなる変更も失われる。 |++opt| と |+cmd| も参照。 {Vi にはない} *:wn* *:wnext* :[count]wn[ext] [++opt] [+cmd] - カレントファイルを書き込み,引数リスト内で [count] 個 - 次のファイルの編集を始める. - |++opt| と |+cmd| も参照. {Vi にはない} + カレントファイルを書き込み、引数リスト内で [count] 個 + 次のファイルの編集を始める。 + |++opt| と |+cmd| も参照。 {Vi にはない} :[count]wn[ext] [++opt] [+cmd] {file} - カレントファイルを {file} に書き込み,引数リスト内で - [count] 個次のファイルの編集を始める.ただし {file} が - 既に存在し,オプション 'writeany' がオフのときは失敗す - る. - |++opt| と |+cmd| も参照. {Vi にはない} + カレントファイルを {file} に書き込み、引数リスト内で + [count] 個次のファイルの編集を始める。ただし {file} が + 既に存在し、オプション 'writeany' がオフのときは失敗す + る。 + |++opt| と |+cmd| も参照。 {Vi にはない} :[count]wn[ext]! [++opt] [+cmd] {file} - カレントファイルを {file} に書き込み,引数リスト内で - [count] 個次のファイルの編集を始める. - |++opt| と |+cmd| も参照. {Vi にはない} + カレントファイルを {file} に書き込み、引数リスト内で + [count] 個次のファイルの編集を始める。 + |++opt| と |+cmd| も参照。 {Vi にはない} :[count]wN[ext][!] [++opt] [+cmd] [file] *:wN* *:wNext* :[count]wp[revous][!] [++opt] [+cmd] [file] *:wp* *:wprevious* - コマンド |:wnext| と同じだが,次でなく前のファイルに移 - る. {Vi にはない} + コマンド |:wnext| と同じだが、次でなく前のファイルに移 + る。 {Vi にはない} 上のコマンドの [count] の既定値は1である。[count] を2回使えるコマンドもある。 最後 (最も右) のものが使われる。 @@ -877,9 +751,17 @@ Vimの開始時に複数のファイル名を与えると,それらは引数 非空白文字に置かれ、オフのときは最後に認識された列が使われる。最後に認識された カーソル位置がないときは、カーソルは最初の行 (Exモードでは最後の行) に置かれる。 + *{arglist}* 引数リスト内のワイルドカードは展開され、ファイル名は並び替えられる。だからCの -ソースファイルを全て編集するには,コマンド "vim *.c" が使える。 Vimの中でコマ -ンド ":n *.c" としても同じである。Unixではバッククォートも使える。例: > +ソースファイルを全て編集するには、コマンド "vim *.c" が使える。 Vimの中でコマ +ンド ":n *.c" としても同じである。 + +ファイル名は空白文字によって区切られる。ファイル名にスペースまたはタブを含める +には、その前にバックスラッシュを書くこと。例えば、"foo bar" という1つのファイ +ルを開くにはこうする: > + :next foo\ bar + +Unix およびその他いくつかのシステムではバッククォートも使える。例: > :n `find . -name \\*.c -print` アスタリスクの前の '\' は、"*.c" がプログラム find を実行する前にシェルで展開 されるのを防ぐために必要となる。 @@ -904,195 +786,201 @@ Vimの開始時に複数のファイル名を与えると,それらは引数 {Vi mが |+windows| 機能と |+listcmds| 機能付きでコンパイルされたときのみ有効} *:arglocal* -:argl[ocal] グローバルな引数リストのローカルなコピーを作る. - 別のファイルの編集は始めない. +:argl[ocal] グローバルな引数リストのローカルなコピーを作る。 + 別のファイルの編集は始めない。 :argl[ocal][!] [++opt] [+cmd] {arglist} - カレントウィンドウについてローカルな,新たな引数リスト - を定義する. - ウィンドウが1個のときは |:args_f| と同じである. + カレントウィンドウについてローカルな、新たな引数リスト + を定義する。 + ウィンドウが1個のときは |:args_f| と同じである。 *:argglobal* -:argg[lobal] カレントウィンドウにグローバルな引数リストを使う. - 別のファイルの編集は始めない. +:argg[lobal] カレントウィンドウにグローバルな引数リストを使う。 + 別のファイルの編集は始めない。 :argg[lobal][!] [++opt] [+cmd] {arglist} - カレントウィンドウにグローバルな引数リストを使う. - コマンド |:args_f| と同様,グローバルな引数リストを新 - たに定義する.グローバルな引数リストを使っているウィン - ドウは全てこの新しいリストを参照するようになる. + カレントウィンドウにグローバルな引数リストを使う。 + コマンド |:args_f| と同様、グローバルな引数リストを新 + たに定義する。グローバルな引数リストを使っているウィン + ドウは全てこの新しいリストを参照するようになる。 -複数の引数リストが存在可能であり,それらはウィンドウ同士で共有できる.共有され -ているときは,あるウィンドウ内で引数リストに変更を加えると,別のウィンドウの引 -数リストも影響を受ける. +複数の引数リストが存在可能であり、それらはウィンドウ同士で共有できる。共有され +ているときは、あるウィンドウ内で引数リストに変更を加えると、別のウィンドウの引 +数リストも影響を受ける。 -ウィンドウが分割されると,新しいウィンドウはカレントウィンドウから引数リストを -受け継ぐ.すると2個のウィンドウは,片方でコマンド |:argslocal| か -|:argsglobal| を使って別の引数リストを使うようになるまで,そのリストを共有する -ことになる. +ウィンドウが分割されると、新しいウィンドウはカレントウィンドウから引数リストを +受け継ぐ。すると2個のウィンドウは、片方でコマンド |:argslocal| か +|:argsglobal| を使って別の引数リストを使うようになるまで、そのリストを共有する +ことになる。 引数リストを使う *:argdo* -:argdo[!] {cmd} 引数リスト内の全てのファイルで {cmd} を実行する. - 以下と同様の動作になる. > +:argdo[!] {cmd} 引数リスト内の全てのファイルで {cmd} を実行する。 + 以下と同様の動作になる。 > :rewind :{cmd} :next :{cmd} etc. -< カレントファイルを放棄 |abandon| できず,'!' も付けら - れていないときは,実行は失敗する.どれかのファイル内で - エラーが検出されると,引数リスト内の以降のファイルには - 進まない. +< カレントファイルを放棄 |abandon| できず、'!' も付けら + れていないときは、実行は失敗する。どれかのファイル内で + エラーが検出されると、引数リスト内の以降のファイルには + 進まない。 引数リスト末尾のファイル (またはエラーの起きたファイル) - がカレントファイルになる. - {cmd} の中では '|' で複数のコマンドを連結できる. - {cmd} は引数リストに変更を加えてはならない. - Note: このコマンドの実行中,オプション 'eventignore' + がカレントファイルになる。 + {cmd} の中では '|' で複数のコマンドを連結できる。 + {cmd} は引数リストに変更を加えてはならない。 + Note: このコマンドの実行中、オプション 'eventignore' で autocommand のイヴェント Syntax を指定することでそ - れを無効化できる.こうすると各ファイルの処理がかなり高 - 速になる. + れを無効化できる。こうすると各ファイルの処理がかなり高 + 速になる。 {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル されたときのみ有効} - コマンド |:windo| や |:bufdo| も参照. + コマンド |:windo| や |:bufdo| も参照。 例: > :args *.c :argdo set ff=unix | update -こうするとオプション 'fileformat' の値を "unix" に設定し,変更があったファイル -を保存する.それが全ての *.c ファイルについて行われる. +こうするとオプション 'fileformat' の値を "unix" に設定し、変更があったファイル +を保存する。それが全ての *.c ファイルについて行われる。 例: > :args *.[ch] :argdo %s/\<my_foo\>/My_Foo/ge | update こうすると全ての *.c ファイルと *.h ファイルで単語 "my_foo" を "My_Foo" に変え -る.コマンド ":substitute" でフラグ "e" を使って "my_foo" という単語の使われて -いないファイルでエラーが起きるのを防いでいる.コマンド ":update" は変更のあっ -たファイルのみを保存する. +る。コマンド ":substitute" でフラグ "e" を使って "my_foo" という単語の使われて +いないファイルでエラーが起きるのを防いでいる。コマンド ":update" は変更のあっ +たファイルのみを保存する。 ============================================================================== -6. 書き込み *writing* *save-file* +4. 書き込み *writing* *save-file* -Note: オプション 'write' がオフのときは,どのファイルも書き込めないことに注意. +Note: オプション 'write' がオフのときは、どのファイルも書き込めないことに注意。 *:w* *:write* *E502* *E503* *E504* *E505* *E512* *E514* *E667* -:w[rite] バッファ全体をカレントファイルに書き込む.これはファイ - ルに対する変更点を保存するときの普通の方法である. +:w[rite] バッファ全体をカレントファイルに書き込む。これはファイ + ルに対する変更点を保存するときの普通の方法である。 オプション 'readonly' がオンであるかファイルに書き込め - ない理由が何かあるときには実行に失敗する. + ない理由が何かあるときには実行に失敗する。 -:w[rite]! ":write" と似ているが,'readonly' がオンであったり書き - 込みが拒否される理由があっても無理矢理書き込みを行う. - Note: これはファイルの権限や所属を変更したり,(シンボ - リック) リンクを途切れさせるかもしれないので注意.それ - を避けるには 'cpoptions' にフラグ 'W' を追加すること. +:w[rite]! ":write" と似ているが、'readonly' がオンであったり書き + 込みが拒否される理由があっても無理矢理書き込みを行う。 + Note: これはファイルの権限や所属を変更したり、(シンボ + リック) リンクを途切れさせるかもしれないので注意。それ + を避けるには 'cpoptions' にフラグ 'W' を追加すること。 -:[range]w[rite][!] 指定された範囲の行をカレントファイルに書き出す.これは - 普通の操作ではない.ファイルがバッファ内の全ての行を - 含むようにならないからだ. +:[range]w[rite][!] 指定された範囲の行をカレントファイルに書き出す。これは + 普通の操作ではない。ファイルがバッファ内の全ての行を + 含むようにならないからだ。 *:w_f* *:write_f* -:[range]w[rite] {file} 指定された範囲の行をファイル {file} に書き出す.ただし - それが既に存在し,かつオプション 'writeany' がオフのと - きは失敗する. +:[range]w[rite] {file} 指定された範囲の行をファイル {file} に書き出す。ただし + それが既に存在し、かつオプション 'writeany' がオフのと + きは失敗する。 *:w!* -:[range]w[rite]! {file} 指定された範囲の行をファイル {file} に書き出す.既存の - ファイルは上書きされる. +:[range]w[rite]! {file} 指定された範囲の行をファイル {file} に書き出す。既存の + ファイルは上書きされる。 *:w_a* *:write_a* *E494* -:[range]w[rite][!] >> 指定された範囲の行をカレントファイルに追加する. +:[range]w[rite][!] >> 指定された範囲の行をカレントファイルに追加する。 :[range]w[rite][!] >> {file} - 指定された範囲の行をファイル {file} に追加する.'!' を - 付けるとそのファイルがまだ存在しなくても書き込みを行う. + 指定された範囲の行をファイル {file} に追加する。'!' を + 付けるとそのファイルがまだ存在しなくても書き込みを行う。 *:w_c* *:write_c* :[range]w[rite] !{cmd} [range] の行を標準入力として {cmd} を実行する ('!' の - 前の空白に注意).{cmd} は ":!{cmd}" のように実行され, - 全ての '!' は前回のコマンドに置き換えられる |:!|. + 前の空白に注意)。{cmd} は ":!{cmd}" のように実行され、 + 全ての '!' は前回のコマンドに置き換えられる |:!|。 + +コマンド ":w" での [range] の既定値はバッファ全体 (1,$) である。バッファ全体を +書き込むと、そのバッファは変更されていないとみなされるようになる。 +":w somefile" によって別のファイルに書き出したときも同じである。 -コマンド ":w" での [range] の既定値はバッファ全体 (1,$) である.":w" にファイ -ル名が与えられるとそれが代替ファイルになる.これは例えば書き込みに失敗した後に -":w #" でもう一度試したいときに使える.オプション 'cpoptions' からフラグ 'A' -を取り除くとこれを無効化できる. +":w" にファイル名が与えられるとそれが代替ファイルになる。これは例えば書き込み +に失敗した後に ":w #" でもう一度試したいときに使える。オプション 'cpoptions' +からフラグ 'A' を取り除くとこれを無効化できる。 *:sav* *:saveas* -:sav[eas][!] {file} カレントファイルをファイル名 {file} として保存し,カレ - ントバッファのファイル名を {file} に変える.それまでの - カレントファイルの名前は代替ファイルの名前になる. - 既存のファイルを上書きするには [!] が必要になる. +:sav[eas][!] {file} カレントファイルをファイル名 {file} として保存し、カレ + ントバッファのファイル名を {file} に変える。それまでの + カレントファイルの名前は代替ファイルの名前になる。 + 既存のファイルを上書きするには [!] が必要になる。 + 'filetype' が空の場合、保存の前に新しいファイル名に対 + してファイルタイプ検出が行われる。 + 保存が成功すると 'readonly' がオフになる。 {Vi にはない} *:up* *:update* :[range]up[date][!] [>>] [file] - ":write" と似ているが,バッファに変更点があるときのみ - 書き込みを行う. {Vi にはない} + ":write" と似ているが、バッファに変更点があるときのみ + 書き込みを行う。 {Vi にはない} 複数バッファでの書き込み *buffer-write* *:wa* *:wall* -:wa[ll] 変更点のあるバッファを全て書き込む.ファイル名を持たな - いバッファや読み込み専用のバッファは書き込まれない. +:wa[ll] 変更点のあるバッファを全て書き込む。ファイル名を持たな + いバッファや読み込み専用のバッファは書き込まれない。 {Vi にはない} -:wa[ll]! 変更点のあるバッファを,読み込み専用であっても全て書き - 込む.ファイル名を持たないバッファは書き込まれない. +:wa[ll]! 変更点のあるバッファを、読み込み専用であっても全て書き + 込む。ファイル名を持たないバッファは書き込まれない。 {Vi にはない} -Vimは別の場所で変更を受けたファイルを上書きしようとしたときには警告する. -|timestamp| を参照. +Vimは別の場所で変更を受けたファイルを上書きしようとしたときには警告する。 +|timestamp| を参照。 *backup* *E207* *E506* *E507* *E508* *E509* *E510* オプション 'backup', 'writebackup' または 'patchmode' がオンのときに既存のファ -イルに (追加でなく) 書き込もうとすると,元のファイルのバックアップが作られる. -ファイルは元のコピーかリネームしたものである ('backupcopy' を参照).ファイルの -書き込みに成功したとき 'writebackup' がオンで 'backup' がオフだと,バックアッ -プファイルは削除される.'patchmode' がオンのときはバックアップファイルはリネー -ムされるかも知れない. +イルに (追加でなく) 書き込もうとすると、元のファイルのバックアップが作られる。 +ファイルは元のコピーかリネームしたものである ('backupcopy' を参照)。ファイルの +書き込みに成功したとき 'writebackup' がオンで 'backup' がオフだと、バックアッ +プファイルは削除される。'patchmode' がオンのときはバックアップファイルはリネー +ムされるかも知れない。 *backup-table* 'backup' 'writebackup' 動作 ~ off off バックアップは作られない - off on カレントファイルをバックアップし,後で消去する (既定) - on off 古いバックアップを消去し,カレントファイルをバックアッ + off on カレントファイルをバックアップし、後で消去する (既定) + on off 古いバックアップを消去し、カレントファイルをバックアッ プする - on on 古いバックアップを消去し,カレントファイルをバックアッ + on on 古いバックアップを消去し、カレントファイルをバックアッ プする -'backupskip' に指定したパターンが書き込まれるファイルの名前にマッチしたときは, -バックアップファイルは作られない.その場合 'backup' と 'writebackup' の値は無 -視される. +'backupskip' に指定したパターンが書き込まれるファイルの名前にマッチしたときは、 +バックアップファイルは作られない。その場合 'backup' と 'writebackup' の値は無 +視される。 -'backup' がオンのときは,古いバックアップファイル (新しいバックアップファイル -と同名) は削除される.'backup' がオフだが 'writebackup' がオンのときは,既存の -バックアップファイルは削除されない.ファイルの書き込み中に作られたバックアップ -ファイルは別の名前になる. +'backup' がオンのときは、古いバックアップファイル (新しいバックアップファイル +と同名) は削除される。'backup' がオフだが 'writebackup' がオンのときは、既存の +バックアップファイルは削除されない。ファイルの書き込み中に作られたバックアップ +ファイルは別の名前になる。 ファイルシステムによってはクラッシュで新しいファイルとバックアップを両方失うこ -ともあり得る (新しいファイルは存在はしても中身が滅茶苦茶になっていたり).その -場合は復帰機能を試すこと.スワップファイルがまだディスクに残っているかもしれな -いからだ. |:recover| +ともあり得る (新しいファイルは存在はしても中身が滅茶苦茶になっていたり)。その +場合は復帰機能を試すこと。スワップファイルがまだディスクに残っているかもしれな +いからだ。 |:recover| オプション 'backupdir' で指定されたディレクトリはバックアップファイルをしまう -のに使われる. (既定値: 書き込まれたファイルと同じディレクトリ) +のに使われる。 (既定値: 書き込まれたファイルと同じディレクトリ) -バックアップが,元のファイルのコピーである新規のファイルになるか,元のファイル -がリネームされたものになるかは,オプション 'backupcopy' で決まる.コピーが作ら -れるのがいつでファイルがリネームされるのがいつかについてはその箇所を参照. +バックアップが、元のファイルのコピーである新規のファイルになるか、元のファイル +がリネームされたものになるかは、オプション 'backupcopy' で決まる。コピーが作ら +れるのがいつでファイルがリネームされるのがいつかについてはその箇所を参照。 -バックアップファイルの生成に失敗すると,書き込みは行われない.それでも書き込み -たいときにはコマンドに '!' を追加すること. +バックアップファイルの生成に失敗すると、書き込みは行われない。それでも書き込み +たいときにはコマンドに '!' を追加すること。 *write-readonly* -オプション 'cpoptions' の値にフラグ 'W' が含まれるときは,Vimは読み込み専用フ -ァイルの上書きを拒否する.'W' が含まれないと,システムが許可すれば (ディレクト +オプション 'cpoptions' の値にフラグ 'W' が含まれるときは、Vimは読み込み専用フ +ァイルの上書きを拒否する。'W' が含まれないと、システムが許可すれば (ディレクト リは書き込み可能でなければならない) ":w!" は読込専用ファイルを上書きする。 *write-fail* @@ -1105,44 +993,44 @@ Vimは別の場所で変更を受けたファイルを上書きしようとし ラーメッセージが出る。 *DOS-format-write* -オプション 'fileformat' の値が "dos" のときは,<EOL> には <CR> <NL> が使われる -.これは MS-DOS, Win32とOS/2での既定値である.その他のシステムでは -"[dos format]" というメッセージが表示され,普通でない <EOL> が使われていること -を知らせてくれる. +オプション 'fileformat' の値が "dos" のときは、<EOL> には <CR> <NL> が使われる +。これは MS-DOS, Win32とOS/2での既定値である。その他のシステムでは +"[dos format]" というメッセージが表示され、普通でない <EOL> が使われていること +を知らせてくれる。 *Unix-format-write* -'fileformat' の値が "unix" のときは,<EOL> には <NL> が使われる.MS-DOS, Win32 -とOS/2では "[unix format]" というメッセージが表示される. +'fileformat' の値が "unix" のときは、<EOL> には <NL> が使われる。MS-DOS, Win32 +とOS/2では "[unix format]" というメッセージが表示される。 *Mac-format-write* -'fileformat' の値が "mac" のときは,<EOL> には <CR> が使われる.Mac以外のシス -テムでは "[mac format]" というメッセージが表示される. +'fileformat' の値が "mac" のときは、<EOL> には <CR> が使われる。Mac以外のシス +テムでは "[mac format]" というメッセージが表示される。 -|file-formats| やオプション 'fileformat' 及び 'fileformats' も参照. +|file-formats| やオプション 'fileformat' 及び 'fileformats' も参照。 *ACL* -ACLは Access Control List を表す.これはファイルのアクセス権を制御するための先 -進的な手段である.新しいMS-WindowsとUnixシステムで使われるが,ファイルシステム -がそれをサポートするときのみである. -Vimはファイルを書き込むときにACL情報を保とうとする.バックアップファイルは元の -ファイルのACL情報を受け継ぐ. -ACL情報は (ファイルを開くときに) ファイルが読込専用かどうか調べるのにも使われる. +ACLは Access Control List を表す。これはファイルのアクセス権を制御するための先 +進的な手段である。新しいMS-WindowsとUnixシステムで使われるが、ファイルシステム +がそれをサポートするときのみである。 +Vimはファイルを書き込むときにACL情報を保とうとする。バックアップファイルは元の +ファイルのACL情報を受け継ぐ。 +ACL情報は (ファイルを開くときに) ファイルが読込専用かどうか調べるのにも使われる。 *read-only-share* -MS-Windowsがネットワーク上でドライブを共有するとき,そこは読込専用にすることが -できる.つまりファイルに読込専用の属性がなく,NCネットワーク共有ドライブ上の -ACL設定が書き込みを許可していても,そのファイルには書き込みができない.Win32プ -ラットフォーム上のVimは読込専用のネットワークドライブを判別し,ファイルを読込 -専用とマークする.そのファイルは |:write| で上書きできない. +MS-Windowsがネットワーク上でドライブを共有するとき、そこは読込専用にすることが +できる。つまりファイルに読込専用の属性がなく、NCネットワーク共有ドライブ上の +ACL設定が書き込みを許可していても、そのファイルには書き込みができない。Win32プ +ラットフォーム上のVimは読込専用のネットワークドライブを判別し、ファイルを読込 +専用とマークする。そのファイルは |:write| で上書きできない。 *write-device* -ファイル名が実際はデヴァイス名のとき,Vimはバックアップを作ろうとはしない (無 -理な話だ).デヴァイスは既に存在するので,保存にはフラグ "!" が必要である. +ファイル名が実際はデヴァイス名のとき、Vimはバックアップを作ろうとはしない (無 +理な話だ)。デヴァイスは既に存在するので、保存にはフラグ "!" が必要である。 Unixでの例: > :w! /dev/lpt0 MS-DOSやMS-Windowsでの例: > :w! lpt0 -Unixでは,ファイル名が通常ファイルやディレクトリを指していないときにデヴァイス -と判断される.VimはFifo及び名前付きパイプもデヴァイスと判断する. -MS-DOSとMS-Windowsでは,デヴァイスは名前から判断される: +Unixでは、ファイル名が通常ファイルやディレクトリを指していないときにデヴァイス +と判断される。VimはFifo及び名前付きパイプもデヴァイスと判断する。 +MS-DOSとMS-Windowsでは、デヴァイスは名前から判断される: AUX CON CLOCK$ @@ -1150,99 +1038,240 @@ MS-DOSとMS-Windowsでは,デヴァイスは名前から判断される: PRN COMn n=1,2,3... 等 LPTn n=1,2,3... 等 -ファイル名は大文字でも小文字でもよい. +ファイル名は大文字でも小文字でもよい。 ============================================================================== -7. 書き込みと終了 *write-quit* +5. 書き込みと終了 *write-quit* *:q* *:quit* -:q[uit] カレントウィンドウを閉じる.最後のウィンドウで使うとを - Vimを終了させる.変更点があってVimがカレントバッファを - 放棄 |abandon| しようとしないときや,引数リスト内で末 - 尾にないファイルを編集しているときには失敗する. - -:conf[irm] q[uit] 終了だが,変更点があるときや,引数リスト内で末尾にない - ファイルを編集しているときにはプロンプトを表示する. - コマンド |:confirm| やオプション 'confirm' を参照. +:q[uit] カレントウィンドウを閉じる。最後のウィンドウで使うとを + Vimを終了させる。変更点があってVimがカレントバッファを + 放棄 |abandon| しようとしないときや、引数リスト内で末 + 尾にないファイルを編集しているときには失敗する。 + 他のタブページが存在するとき、カレントタブページ内の最 + 後のウィンドウを閉じるとカレントタブページが閉じられる。 + |tab-page| + +:conf[irm] q[uit] 終了だが、変更点があるときや、引数リスト内で末尾にない + ファイルを編集しているときにはプロンプトを表示する。 + コマンド |:confirm| やオプション 'confirm' を参照。 {Vi にはない} :q[uit]! 可視なバッファに変更点があっても書き込みをせずに終了す - る.隠れバッファに変更点があると終了しない.必ず終了す - るにはコマンド |:qall!| を使うこと. + る。隠れバッファに変更点があると終了しない。必ず終了す + るにはコマンド |:qall!| を使うこと。 -:cq[uit] 書き込みをせずに必ず終了し,エラーコードを返す.コマン - ド |:cq| を参照.Manx の QuickFix モードで使われる - (|quickfix| を参照). {Vi にはない} +:cq[uit] 書き込みをせずに必ず終了し、エラーコードを返す。コマン + ド |:cq| を参照。Manx の QuickFix モードで使われる + (|quickfix| を参照)。 {Vi にはない} *:wq* -:wq カレントファイルを書き込んでVimを終了する.ファイルが - 読込専用であるときや,バッファに名前が付いていないとき - には書き込みに失敗する.引数リスト内の末尾のファイルが - まだ編集されていないときには終了に失敗する. +:wq カレントファイルを書き込んでVimを終了する。ファイルが + 読込専用であるときや、バッファに名前が付いていないとき + には書き込みに失敗する。引数リスト内の末尾のファイルが + まだ編集されていないときには終了に失敗する。 -:wq! カレントファイルを書き込んでVimを終了する.バッファに - 名前が付いていないときには書き込みに失敗する. +:wq! カレントファイルを書き込んでVimを終了する。バッファに + 名前が付いていないときには書き込みに失敗する。 -:wq {file} {file} に書き込んでVimを終了する.引数リスト内の末尾の - ファイルがまだ編集されていないときには終了に失敗する. +:wq {file} {file} に書き込んでVimを終了する。引数リスト内の末尾の + ファイルがまだ編集されていないときには終了に失敗する。 -:wq! {file} {file} に書き込んでVimを終了する. +:wq! {file} {file} に書き込んでVimを終了する。 -:[range]wq[!] [file] 上と同様だが,[range] の範囲内の行のみを書き込む. +:[range]wq[!] [file] 上と同様だが、[range] の範囲内の行のみを書き込む。 *:x* *:xit* :[range]x[it][!] [file] - |:wq| と似ているが,変更点があるときのみ書き込む. + |:wq| と似ているが、変更点があるときのみ書き込む。 オプション 'hidden' がオンで複数のウィンドウが存在する - とき,ファイルを書き込んだ後はカレントバッファは隠れバ - ッファになる. + とき、ファイルを書き込んだ後はカレントバッファは隠れバ + ッファになる。 *:exi* *:exit* :[range]exi[t][!] [file] - |:xit| と同様. + |:xit| と同様。 *ZZ* -ZZ 変更点があればカレントファイルを書き込み,Vimを終了す - る (コマンド |:x| と同様). Note: カレントファイルを複 - 数のウィンドウで開いているときは,ファイルに変更点があ - れば書き込まれ,そしてウィンドウが閉じられることに注意. +ZZ 変更点があればカレントファイルを書き込み、Vimを終了す + る (コマンド |:x| と同様)。 Note: カレントファイルを複 + 数のウィンドウで開いているときは、ファイルに変更点があ + れば書き込まれ、そしてウィンドウが閉じられることに注意。 *ZQ* -ZQ 変更点を確かめずに終了する (コマンド |:q!| と同様). +ZQ 変更点を確かめずに終了する (コマンド |:q!| と同様)。 {Vi にはない} 複数のウィンドウとバッファ *window-exit* *:qa* *:qall* -:qa[ll] 変更点のあるバッファがない限り,Vimを終了する (変更点のある次 - のバッファに移動するにはコマンド |:bmod| を使うこと). - オプション 'autowriteall' がオンのときは,|:wqall| と同様に変 - 更点のあるバッファが全て書き込まれる. {Vi にはない} +:qa[ll] 変更点のあるバッファがない限り、Vimを終了する (変更点のある次 + のバッファに移動するにはコマンド |:bmod| を使うこと)。 + オプション 'autowriteall' がオンのときは、|:wqall| と同様に変 + 更点のあるバッファが全て書き込まれる。 {Vi にはない} :conf[irm] qa[ll] - Vimを終了する.変更点のあるバッファがあるときはプロンプトを表 - 示する.コマンド |:confirm| を参照すること. {Vi にはない} + Vimを終了する。変更点のあるバッファがあるときはプロンプトを表 + 示する。コマンド |:confirm| を参照すること。 {Vi にはない} -:qa[ll]! Vimを終了する.バッファの変更点は全て失われる. {Vi にはない} +:qa[ll]! Vimを終了する。バッファの変更点は全て失われる。 {Vi にはない} *:quita* *:quitall* -:quita[ll][!] コマンド |:qall| と同様. {Vi にはない} +:quita[ll][!] コマンド |:qall| と同様。 {Vi にはない} :wqa[ll] *:wqa* *:wqall* *:xa* *:xall* -:xa[ll] 変更点のあるバッファを全て書き込み,Vimを終了する.ファイル名 +:xa[ll] 変更点のあるバッファを全て書き込み、Vimを終了する。ファイル名 のないバッファや読込専用または何らかの理由で書き込めないバッフ - ァがあるときは,Vimを終了しない. {Vi にはない} + ァがあるときは、Vimを終了しない。 {Vi にはない} :conf[irm] wqa[ll] :conf[irm] xa[ll] - 変更点のあるバッファを全て書き込み,Vimを終了する.読込専用ま - たは何らかの理由で書き込めないバッファがあるときは,プロンプト - を表示する.コマンド |:confirm| を参照. {Vi にはない} + 変更点のあるバッファを全て書き込み、Vimを終了する。読込専用ま + たは何らかの理由で書き込めないバッファがあるときは、プロンプト + を表示する。コマンド |:confirm| を参照。 {Vi にはない} :wqa[ll]! -:xa[ll]! 変更点のあるバッファを,読込専用であっても全て書き込み,Vimを - 終了する.ファイル名のないバッファや何らかの理由で書き込めない - バッファがあるときは,Vimを終了しない. {Vi にはない} +:xa[ll]! 変更点のあるバッファを、読込専用であっても全て書き込み、Vimを + 終了する。ファイル名のないバッファや何らかの理由で書き込めない + バッファがあるときは、Vimを終了しない。 {Vi にはない} + +============================================================================== +6. ダイアログ *edit-dialogs* + + *:confirm* *:conf* +:conf[irm] {command} {command} を実行する際、確認が必要ならばダイアログを表 + 示する。コマンド ":q", ":qa" や ":w" と共に使える + (":w" では読み取り専用属性を無視するかどうかを尋ねる)。 + +例: > + :confirm w foo +< ファイル "foo" が既に存在するときに確認を取る。 > + :confirm q +< バッファに修正個所があるときに確認を取る。 > + :confirm qa +< 修正個所があり、保存されていないバッファがあるとき、各バッファについて + 保存するか破棄するか尋ねる。「全て保存」や「全て破棄」という選択肢もあ + る。 + +常に ":confirm" を使いたいなら、代わりにオプション 'confirm' をオンにすること。 + + *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* +:bro[wse] {command} {command} の引数のためにファイル選択ダイアログを開く。 + 現在の所、コマンド |:e|, |:w|, |:r|, |saveas|, |:sp|, + |:mkexrc|, + |:mkvimrc| や |:mksession| と共に使える。 + {Vi mのWin32版、Motif、Athena、GTKやMacのGUI版でのみ利 + 用可能。} + |:browse|が使えない時ははエラーが表示される。|+browse| + の機能がなかったり、{command}がサポート対象外だった場 + 合、{command} はダイアログなしで実行される。 + +使用法については、例を幾つか見るのが一番分かりやすい。 > + :browse e $vim/foo +< ファイル選択ダイアログをディレクトリ $vim/foo 内で開き、選択さ + れたファイルを編集する。 > + :browse e +< ファイル選択ダイアログを'browsedir'で指定されたディレクトリ内 + で開き、選択されたファイルを編集する。 > + :browse w +< ファイル選択ダイアログをカレントファイルのディレクトリ内で、カ + レントファイルの名前を既定値として開き、選択されたファイル名を + 使ってバッファを保存する。 > + :browse w C:/bar +< ファイル選択ダイアログをディレクトリ C:/bar 内で、カレントファ + イルの名前を既定値として開き、選択されたファイル名を使ってバッ + ファを保存する。 +オプション 'browsedir' も参照すること。 +Vimのファイル選択ダイアログをサポートしないヴァージョンでは、コマンドはそのま +ま実行される。 + + *browsefilter* +MS-WindowsのVimでは、ファイル選択ダイアログで使われるフィルタを指定できる。グ +ローバル変数 g:browsefilter かローカル変数 b:browsefilter を設定すると、フィル +タをグローバルにまたはバッファについてローカルに変更できる。この変数を指定する +際の書式は "{filter label}\t{pattern};{pattern}\n" で、{filter label} はコンボ +ボックス「ファイルの種類」に使われるテキスト、{pattern} はファイル名を選別する +フィルタである。';' で区切れば複数のパターンを指定できる。 + +Motif上のVimでは同じ書式が使えるが、実際には1番目のパターンだけが使われる +(Motifではパターンは1種類しか使えないが、それをユーザが編集できる)。 + +例えばダイアログでVim関連ファイルだけを表示するには、以下のコマンドを使う。 > + + let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n" + +フィルタは、変数 b:browsefilter を設定することでバッファ毎に設定できる。 +b:browsefilter はファイルタイプ別のプラグインで設定することが一番多いだろう。 +するとファイルブラウザ・ダイアログには現在編集中のファイルのタイプに関連した候 +補が表示される。弊害:別の種類のファイルの編集が始め辛くなる。対策は、フィルタ +の最後の項目に "All Files\t*.*\n" を加え、ユーザが望みのファイルにアクセスでき +る道を残すことだ。 + +============================================================================== +7. カレントディレクトリ *current-directory* + +コマンド |:cd| や |:lcd| を使って別のディレクトリに移ることができる。すると +(訳注: そのディレクトリ内のファイルを編集するとき) そのディレクトリ名をファイ +ル名の前に付けなくても良くなる。また違いは ":!ls" 等の外部コマンドの実行の際に +も現れる。 + +'cpoptions' にフラグ '.' が含まれている場合、カレントバッファが変更されている +と、"!" をつけない限りディレクトリ変更は失敗する。 + + *:cd* *E747* *E472* +:cd[!] Unix以外のシステムでは: カレントディレクトリ名を表示す + る。Unixシステムでは: カレントディレクトリをホームディ + レクトリに変更する。全てのシステムで、カレントディレク + トリの表示にはコマンド |:pwd| が使える。 + +:cd[!] {path} カレントディレクトリを {path} に変更する。 + {path} が相対的な指定なら、オプション 'cdpath' 内に列 + 挙されたディレクトリを基準に判断される。既に開かれたファ + イルについては、フルパスが把握されているので変化はない。 + しかし引数リスト |arglist| 内のファイルの意味は変わる + かもしれない! + MS-DOSではアクティブなドライブも変更する。 + カレントファイルのディレクトリに移るにはこうする。 > + :cd %:h +< + *:cd-* *E186* +:cd[!] - 前のカレントディレクトリ (前にコマンド ":cd {path}" で + 移った所) に移る。 {Vi にはない} + + *:chd* *:chdir* +:chd[ir][!] [path] コマンド |:cd| と同じ。 + + *:lc* *:lcd* +:lc[d][!] {path} コマンド |:cd| と似ているが、カレントウィンドウのカレ + ントディレクトリのみを変更する。別のウィンドウのカレン + トディレクトリに変化はない。 {Vi にはない} + + *:lch* *:lchdir* +:lch[dir][!] |:lcd| と同じ。 {Vi にはない} + + *:pw* *:pwd* *E187* +:pw[d] カレントディレクトリ名を表示する。 {Vi: pwdはない} + |getcwd()| も参照。 + +コマンド |:lcd| が使われない限り、全てのウィンドウは同じカレントディレクトリを +共有する。別のウィンドウに移るコマンドを使ってもカレントディレクトリについての +変化は何もない。 +コマンド |:lcd| があるウィンドウ内で使われると、指定されたディレクトリがそのウィ +ンドウに対してのカレントウィンドウになる。コマンド |:lcd| が使われたことのない +ウィンドウはグローバルなカレントウィンドウを使い続ける。別のウィンドウに移った +ときは、カレントディレクトリは (訳注: 移動先に対して) 最後に指定されたローカル +なカレントディレクトリになる。何も指定されていなかったら、グローバルなカレント +ディレクトリが使われる。 +コマンド |:cd| が使われると、カレントウィンドウは固有のローカルなカレントディ +レクトリを失い、グローバルなカレントディレクトリを使うようになる。 + +|:cd| を使った後は、ファイルの読み書きにはフルパス名が使われる。ネットワーク接 +続されたファイルシステムではこれが問題を起こすことがある。フルパス名を使った結 +果、現在使用中のファイル名は同じファイルを指し続けることになる。例: ファイル +a:test とディレクトリ a:vim があるとき、":e test" ":cd vim" ":w" とするとファ +イル a:test を上書きし、a:vim/test には書き込まない。しかし ":w test" とすると +ファイル a:vim/test が書き込まれる。それは新しいファイル名が指定され、":cd" 以 +前のファイル名には言及してないからだ。 ============================================================================== 8. バイナリファイルの編集 *edit-binary* @@ -1251,32 +1280,32 @@ Vimはテキストファイルの編集のために造られたが、バイナ もできる。Vimの引数 |-b| (バイナリ"binary"の'b') はVimにファイル入出力をバイナ リモードで行わせ、バイナリファイルの編集のためにいくつかのオプションを設定する ('binary' をオン、'textwidth' を0、'modeline' をオフ、'expandtab' をオフにす -る).オプション 'binary' をオンにすることも同じ効果を持つ.これはファイルの読 +る)。オプション 'binary' をオンにすることも同じ効果を持つ。これはファイルの読 み込み前にするということを忘れてはならない。 バイナリファイルを編集するときに忘れてはならないことがいくつかある: -- 実行可能ファイルを編集するときには、文字数が変わってはならない.テキストを変 - 更するには "R" か "r" だけを使用すること."x" やバックスペースで文字を削除し +- 実行可能ファイルを編集するときには、文字数が変わってはならない。テキストを変 + 更するには "R" か "r" だけを使用すること。"x" やバックスペースで文字を削除し てはならない。 - オプション 'textwidth' の値を0に設定する。そうしないと行が不意に2つに分割さ れてしまう。 - <EOL> の数があまり多くないときは、一行は非常に長くなる。スクリーンに収まりき - らない行を編集したいならば、オプション 'wrap' をオフにすること.その時には水 + らない行を編集したいならば、オプション 'wrap' をオフにすること。その時には水 平スクロールが使われる。行が余りにも長いならば (Amigaでは約32767文字以上、 32bitシステムではそれ以上、|limits| を参照)、その行は編集できない。ファイル を読み込むときに、その行は分割される。ファイルを読み込むときに "out of memory" エラーが出る可能性もある。 - ファイルを読み込む前にオプション 'binary' がオンになっていることを確かめるこ と。さもないと <CR> <NL> と <NL> の両方が行末とみなされ、ファイルが保存され - るときに <NL> が <CR> <NL> で置き換えられてしまう. -- <Nul> 文字はスクリーンでは ^@ として表示される.それは "CTRL-V CTRL-@" か + るときに <NL> が <CR> <NL> で置き換えられてしまう。 +- <Nul> 文字はスクリーンでは ^@ として表示される。それは "CTRL-V CTRL-@" か "CTRL-V 000" で入力できる。{Vi ファイル内で <Nul> 文字を扱えない} -- <NL> 文字を挿入すると,行が分割される.バッファをファイルに保存するときには、 +- <NL> 文字を挿入すると、行が分割される。バッファをファイルに保存するときには、 <NL> が <EOL> として保存される。 - ファイルの終わりに <EOL> が一つもないとき、通常Vimはそれを追加する。これを防 ぐにはオプション 'binary' をオンにすること。最後の <EOL> を追加したいならば、 オプション 'endofline' をオンにする。最後の行に <EOL> があったかどうかを知る - ためにこのオプションの値を見てもよい (テキストからは判断できない). + ためにこのオプションの値を見てもよい (テキストからは判断できない)。 ============================================================================== 9. 暗号化 *encryption* @@ -1284,148 +1313,235 @@ Vimはテキストファイルの編集のために造られたが、バイナ Vimはファイルを暗号化して保存し、再び読み取ることができる。暗号化されたテキス トは正しい鍵がないと読むことができない。 -Note: スワップファイルとメモリ内のテキストは暗号化されないので注意.ユーザがテ -キストを編集している間,システム管理者はそれを見ることができるだろう。 -テキストを ":!filter" や ":w !command" によってフィルタに通すときは,それは暗 -号化されておらず,他人から読まれることもありうる. +Note: スワップファイルとメモリ内のテキストは暗号化されないので注意。ユーザがテ +キストを編集している間、システム管理者はそれを見ることができるだろう。 +テキストを ":!filter" や ":w !command" によってフィルタに通すときは、それは暗 +号化されておらず、他人から読まれることもありうる。 -警告: 鍵の入力時にタイプミスをしてファイルを保存し,Vimを終了すると,テキスト +警告: 鍵の入力時にタイプミスをしてファイルを保存し、Vimを終了すると、テキスト は失われてしまう! -暗号化を利用する通常の方法は、コマンド |:X| を使うことだ.これは鍵を入力するよ -う求める.次の保存コマンドでファイルを暗号化するためにその鍵が使われる.後で同 +暗号化を利用する通常の方法は、コマンド |:X| を使うことだ。これは鍵を入力するよ +う求める。次の保存コマンドでファイルを暗号化するためにその鍵が使われる。後で同 じファイルを編集するときは、Vimは鍵の入力を求める。保存に使われたものと同じ鍵 -を打ち込むと、再びテキストを読み込むことができる.間違ったキーを使うと,テキス -トはめちゃめちゃになって表示される. +を打ち込むと、再びテキストを読み込むことができる。間違ったキーを使うと、テキス +トはめちゃめちゃになって表示される。 *:X* :X 暗号化キーを入力するよう求める。ディスプレイを見ている誰かが鍵を見ない - ように、打ち込むときには実際のテキストは表示されない. - 打ち込まれた鍵はオプション 'key' に保存される.これはファイルを書き込 - むときの暗号化に使われる.Vimの引数 |-x| も参照。 + ように、打ち込むときには実際のテキストは表示されない。 + 打ち込まれた鍵はオプション 'key' に保存される。これはファイルを書き込 + むときの暗号化に使われる。Vimの引数 |-x| も参照。 -オプション 'key' の値はテキストが書き込まれるときに使われる.値が空でないとき、 -書き込まれたファイルは,その値を鍵として暗号化されている。Vimがファイルが暗号 -化されていることを認識できるよう,ファイル先頭に特殊な数が付加される. +オプション 'key' の値はテキストが書き込まれるときに使われる。値が空でないとき、 +書き込まれたファイルは、その値を鍵として暗号化されている。Vimがファイルが暗号 +化されていることを認識できるよう、ファイル先頭に特殊な数が付加される。 -暗号化を無効にするには、オプション 'key' に空の値を入れてリセットする. > +暗号化を無効にするには、オプション 'key' に空の値を入れてリセットする。 > :set key= -暗号化されているファイルを読み込んだときにこのオプションの値がが空でないと,そ -の値が復号化に使われる.値が空のときは,鍵の入力を求められる。鍵を入力しないと、 +暗号化されているファイルを読み込んだときにこのオプションの値がが空でないと、そ +の値が復号化に使われる。値が空のときは、鍵の入力を求められる。鍵を入力しないと、 ファイルは復号化されずに編集される。 異なる鍵で暗号化したファイルの読み込みを始めたいときは、オプション 'key' の値 -に空文字列を設定すること.するとVimが新しい値の入力を求める.値の入力にコマン -ド ":set" を使ってはならない.他の人が肩越しにコマンドの入力を読むことができる -からだ. +に空文字列を設定すること。するとVimが新しい値の入力を求める。値の入力にコマン +ド ":set" を使ってはならない。他の人が肩越しにコマンドの入力を読むことができる +からだ。 オプション 'key' の値は秘密であることになっているので、その値は決して見られて -はならない.vimrcファイル内でこのオプションを設定してはいけない. +はならない。vimrcファイル内でこのオプションを設定してはいけない。 -"/etc/magic", "/usr/share/misc/magic" 等,システムの持っている "magic" ファイ -ルならどれでもよいが、下の行を追加すると,暗号化されたファイルがコマンド -"file" に認識されるようになる. > +"/etc/magic", "/usr/share/misc/magic" 等、システムの持っている "magic" ファイ +ルならどれでもよいが、下の行を追加すると、暗号化されたファイルがコマンド +"file" に認識されるようになる。 > 0 string VimCrypt~ Vim encrypted file Note: -- オプション 'charconvert' でコード変換をしているときには暗号化はできない. +- オプション 'charconvert' でコード変換をしているときには暗号化はできない。 - コピーや削除したテキストは番号付きレジスタに格納される。レジスタの内容は - .viminfoファイル内に保存できるが,ここからは読み出せるかもしれない.安全のた - めオプション 'viminfo' を変更すること. + .viminfoファイル内に保存できるが、ここからは読み出せるかもしれない。安全のた + めオプション 'viminfo' を変更すること。 - コンピュータからしばらく離れているときには誰かがVimにコマンドを入力できるが、 鍵を入手できるようになっていてはいけない。 - キーを入力しているときにタイプミスをすると、テキストを復元できなくなってしま うだろう! -- コマンド ":set key=value" で鍵を入力すると,それは履歴の中に保存され, - viminfoファイル内に 'key' の値を晒すことになる. +- コマンド ":set key=value" で鍵を入力すると、それは履歴の中に保存され、 + viminfoファイル内に 'key' の値を晒すことになる。 - 100パーセント安全ということは決してない。Vimの暗号化は強度についてはテストさ れていない。 - 使われているアルゴリズムは破られやすい。4文字の鍵なら約1時間以内、6文字の鍵 なら1日以内で破れる (Pentium 133 PCで)。これにはファイル内に必ず現れるはずの テキストをいくつか知っていることが必要である。暗号破りの熟練者はどのような鍵 であっても破ることができる。 - テキストが復号化されたということは鍵も明らかになったということで,同じ鍵で暗 - 号化されたテキストも復号化されうる. + テキストが復号化されたということは鍵も明らかになったということで、同じ鍵で暗 + 号化されたテキストも復号化されうる。 - Pkzipは同じ暗号化を用いており、合衆国政府はその輸出に対して異議を唱えていな い。Pkzipの公開ファイル APPNOTE.TXT はこのアルゴリズムを詳細に記述している。 -- Vimはオランダに起源を持つ.そこがソースの出処である。従って、暗号化コードは +- Vimはオランダに起源を持つ。そこがソースの出処である。従って、暗号化コードは アメリカ合衆国から輸出されてはいない。 ============================================================================== 10. タイムスタンプ *timestamp* *timestamps* -Vimは編集を始めたときのファイルの修正タイムスタンプを覚えている.これは同じフ -ァイルの別のヴァージョンを (知らずに) 作ってしまうのを防ぐためである. +Vimは編集を始めたときのファイルの修正タイムスタンプを覚えている。これは同じフ +ァイルの別のヴァージョンを (知らずに) 作ってしまうのを防ぐためである。 -シェルコマンド (|:!cmd| |suspend| |:read!| |K|) の実行後,ウィンドウ内の全ての -バッファでタイムスタンプが比較される.Vimは変更を受けたファイルに関して,イヴェ -ント |FileChangedShell| に関連付けられた任意の自動コマンドを実行するか,警告を -表示する.GUIを使っているときは,それらはVimに入力フォーカスが戻ってきたときに -行われる. +シェルコマンド (|:!cmd| |suspend| |:read!| |K|) の実行後、ウィンドウ内の全ての +バッファでタイムスタンプが比較される。Vimは変更を受けたファイルに関して、イヴェ +ント |FileChangedShell| に関連付けられた任意の自動コマンドを実行するか、警告を +表示する。GUIを使っているときは、それらはVimに入力フォーカスが戻ってきたときに +行われる。 *E321* *E462* -ファイルがVimの外部で変更を受けたときに自動的に読み直して欲しいなら,オプショ -ン 'autoread' をオンにすること.しかしこれはファイルを書き込んだ時点では機能し -ない.ファイルがVim内部で変更されていないときだけだ. +ファイルがVimの外部で変更を受けたときに自動的に読み直して欲しいなら、オプショ +ン 'autoread' をオンにすること。しかしこれはファイルを書き込んだ時点では機能し +ない。ファイルがVim内部で変更されていないときだけだ。 -Note イヴェント |FileChangedShell| に自動コマンドが定義されていると,警告メッ -セージやプロンプトは表示されない.その自動コマンドが対処するものとされている. +Note イヴェント |FileChangedShell| に自動コマンドが定義されていると、警告メッ +セージやプロンプトは表示されない。その自動コマンドが対処するものとされている。 -ディレクトリに関する警告はない (例えば |file-explorer| で).しかし新しいファイ -ルの編集を始めた後,同名のディレクトリが作られたときには警告される. +ディレクトリに関する警告はない (例えば |netrw-browse| で)。しかし新しいファイ +ルの編集を始めた後、同名のディレクトリが作られたときには警告される。 -ファイルのタイムスタンプが変更されたことにVimが気付いたとき,そのファイルがバ -ッファ内で編集されているがまだ変更されていないならば,Vimはファイルの中身が同 -じかどうかを調べる.このためにはファイルを読み直し,テキストを比較する (隠れバ -ッファに読み込むが,これはすぐに削除される).内容が同じならば警告は出ない. +ファイルのタイムスタンプが変更されたことにVimが気付いたとき、そのファイルがバ +ッファ内で編集されているがまだ変更されていないならば、Vimはファイルの中身が同 +じかどうかを調べる。このためにはファイルを読み直し、テキストを比較する (隠れバ +ッファに読み込むが、これはすぐに削除される)。内容が同じならば警告は出ない。 -自動警告では足りないと思ったならば,以下のコマンドが使える. +自動警告では足りないと思ったならば、以下のコマンドが使える。 *:checkt* *:checktime* -:checkt[ime] Vimの外部で変更を受けたバッファがないかどうか調べる. +:checkt[ime] Vimの外部で変更を受けたバッファがないかどうか調べる。 これはファイルのヴァージョンが2個になってしまわないか - どうかを調べ,警告する. + どうかを調べ、警告する。 これが autocommand や ":global" コマンドから呼ばれたと - きや,直に打ち込まれたのではないときは,実際に調べるの + きや、直に打ち込まれたのではないときは、実際に調べるの は副作用 (ファイルの再読み込み) が無害となる時点まで延 - 期される. + 期される。 読み込まれているバッファそれぞれについて関連付けられた - ファイルが変更を受けていないか調べる.変更を受けていた - ら, Vimは対処動作を行う.すなわちバッファに変更点が無 - く,かつオプション 'autoread' がオンのときは,バッファ - は読み直される.そうでなければ,ファイルを読み直すかど - うかの選択肢が与えられる.ファイルが削除されていたら, - エラーメッセージが表示される. - 以前には存在しなかったファイルが存在していたら,エラー - メッセージが表示される. - 一度ファイルが調べられるとタイムスタンプ情報が更新され, - 再び警告されることは無い. + ファイルが変更を受けていないか調べる。変更を受けていた + ら、 Vimは対処動作を行う。すなわちバッファに変更点が無 + く、かつオプション 'autoread' がオンのときは、バッファ + は読み直される。そうでなければ、ファイルを読み直すかど + うかの選択肢が与えられる。ファイルが削除されていたら、 + エラーメッセージが表示される。 + 以前には存在しなかったファイルが存在していたら、エラー + メッセージが表示される。 + 一度ファイルが調べられるとタイムスタンプ情報が更新され、 + 再び警告されることは無い。 :[N]checkt[ime] {filename} :[N]checkt[ime] [N] - 特定のバッファのタイムスタンプを調べる.バッファの指定 - は名前,番号またはパターンでもよい. + 特定のバッファのタイムスタンプを調べる。バッファの指定 + は名前、番号またはパターンでもよい。 -書き込み前にはタイムスタンプが調べられる.もし変更されていたら,Vimはそのファ -イルを本当に上書きするかどうかを尋ねる. +書き込み前にはタイムスタンプが調べられる。もし変更されていたら、Vimはそのファ +イルを本当に上書きするかどうかを尋ねる。 警告: 読込んだ後にファイルに変更がありました!!! 本当に上書きしますか (y/n)? -'y' を打ち込むと,Vimは続けて書き込みを行う.'n' を打ち込むと,書き込みは中止 -される.コマンド ":wq" や "ZZ" を使った場合にはVimは終了せず,書き込む機会が再 -び得られる. +'y' を打ち込むと、Vimは続けて書き込みを行う。'n' を打ち込むと、書き込みは中止 +される。コマンド ":wq" や "ZZ" を使った場合にはVimは終了せず、書き込む機会が再 +び得られる。 -普通,メッセージは編集セッションが始まった後に誰かがファイルに書き込んだことを -示している.それは別の人物かもしれない.この場合,あなたの行った変更とその人物 -が行った変更が合併されるべきか調べたいことだろう.ファイルを別の名前で書き込み, -差分を調べること (これにはプログラム "diff" がつかえる). +普通、メッセージは編集セッションが始まった後に誰かがファイルに書き込んだことを +示している。それは別の人物かもしれない。この場合、あなたの行った変更とその人物 +が行った変更が合併されるべきか調べたいことだろう。ファイルを別の名前で書き込み、 +差分を調べること (これにはプログラム "diff" がつかえる)。 別の編集セッションや別のコマンドで (例えばフィルタコマンド) そのファイルに自分 -自身で変更を加えたということもあり得る.その場合,どちらのヴァージョンを保管し -たいかは自分でお分かりだろう. +自身で変更を加えたということもあり得る。その場合、どちらのヴァージョンを保管し +たいかは自分でお分かりだろう。 + +何も間違ったことはしていないのにこのメッセージが現れる場合が1つある: +Win32 でサマータイムが始まる日である。Win32 ライブラリにより、Vim が時間の差を +混乱してしまう。この問題は次の日には直る。 + +============================================================================== +11. ファイル検索 *file-searching* + +{Vi mが |+path_extra| 機能付きでコンパイルされたときのみ有効} + +現在の所、オプション 'path', 'cdpath' と 'tags' でファイル検索が使われる。ファ +イル検索には以下の3種類がある。 + +1) 下向き検索: *starstar* + 下向き検索にはワイルドカード '*' と '**' 及びユーザのOSがサポートするその他 + のものが使える。'*' と '**' はVim内部で扱われるので、全てのOSで機能する。 + + '*' の使用法はきわめて単純: 0 個以上の文字にマッチする。 + + '**' はもっときめ細かい。 + - これはディレクトリのみにマッチする。 + - これは 30 段階までの深さのディレクトリにマッチするので、ディレクトリ・ + ツリー全体の検索に使える。 + - マッチする深さの最大値は '**' の前に数字を付け加えて指定できる。 + だから '/usr/**2' は下のようにマッチする。 > + /usr + /usr/include + /usr/include/sys + /usr/include/g++ + /usr/lib + /usr/lib/X11 + .... +< '/usr/include/g++/std' には、深さが3なのでマッチしない。 + 指定可能な範囲は 0 ('**0' は無視される) から 255 である。 + 負数を指定すると 30 を、255 より大きい数を指定すると 255 を指定したも + のとされる。 + - '**' はパスの末尾にのみ使える。後ろにパス区切り文字か、数字とパス区切 + り文字の組み合わせを付けてもよい。 + + '*' と '**' を組み合わせる順番は自由である。 > + /usr/**/sys/* + /usr/*/sys/** + /usr/**2/sys/* + +2) 上向き検索: + この方法ではディレクトリを指定すると、そのディレクトリから上に遡ってファイ + ルを探す。上向き探索の上限となるディレクトリが指定できる。それはパス (オプ + ション 'path') かファイル名 (オプション 'tags') の末尾に ';' で区切って指定 + する。複数のディレクトリを指定したいときはそれらを ';' で区切る。上限ディレ + クトリを指定したくないときは (ルートディレクトリまで上向き検索したいとき) + ';' だけを付ける。 > + /usr/include/sys;/usr +< で検索されるディレクトリは: > + /usr/include/sys + /usr/include + /usr +< + 相対パスを使うと上向き検索はVimのカレントディレクトリから始まる。相対パスの + 指定が ',/' で始まり、'cpoptions' にフラグ 'd' が含まれていないときはカレン + トファイルのディレクトリから始まる。 + + Vimのカレントパスが /u/user_x/work/release のときに > + :set path=include;/u/user_x +< とすると、コマンド |gf| でファイルを探す範囲は: > + /u/user_x/work/release/include + /u/user_x/work/include + /u/user_x/include + +3) 複合検索: + Vimのカレントパスが /u/user_x/work/release のときに > + set path=**;/u/user_x +< とすると、コマンド |gf| でファイルを探す範囲は: > + /u/user_x/work/release/** + /u/user_x/work/** + /u/user_x/** +< + 注 意 ! これはかなりの時間を食うかもしれない。'/u/user_x/**' は + '/u/user_x/work/**' や '/u/user_x/work/release/**' を含むからだ。つまり + '/u/user_x/work/release/**' は3回、'/u/user_x/work/**' は2回繰り返して検索 + される。 + + 上の例では > + :set path=**,/u/user_x/** +< とした方がよいだろう。これに含まれる範囲は > + /u/user_x/work/release/** + /u/user_x/** +< となり、同じディレクトリだが順番が違う。 vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/os_dos.jax b/ja/os_dos.jax index 4e4f07d70..3b211d3cc 100644 --- a/ja/os_dos.jax +++ b/ja/os_dos.jax @@ -1,9 +1,10 @@ COMMENT: OS特有情報:MS-DOSとWindows -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 首藤博昭(Noiz) TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*os_dos.txt* For Vim version 6.3. Last change: 2003 Dec 20 +*os_dos.txt* For Vim version 7.0. Last change: 2006 Mar 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -81,10 +82,12 @@ Unix-likeの'shell'を使用しているときに特に有用である。 ============================================================================== 3. 標準マッピング *dos-standard-mappings* -CTRL-PageUp 画面上の先頭行にカーソルを移動する *<C-PageUp>* -CTRL-PageDown 画面上の最終行、最後の文字にカーソルを移動する *<C-PageDown>* -以下のマッピングは同様の目的を果たす: +以前の CTRL-PageUp と CTRL-PageDown へのマッピングは削除された。今、これらのキー +はそれぞれ次、前のタブページへジャンプする。|<C-PageUp>| |<C-PageDown>| + +これらのキーを画面上の最初、最後の行へジャンプに使いたければ次のマッピングをす +ればよい: キー キーコード Normal/Visualモード 挿入モード ~ CTRL-PageUp <M-N><M-C-D> H <C-O>H @@ -133,7 +136,7 @@ Vimが使用する画面の色を変更するには|:highlight|コマンドを 他に利用できるグループについては|highlight-groups|を参照すること。 DOSコンソールは太字や下線のような属性をサポートしていない。5つのモードで使用す -る色は9つのtermcapオプションで設定できる。":highlight"コマンドによって直接色を +る色は9つの端末のオプションで設定できる。":highlight"コマンドによって直接色を 設定した場合には必要ないので注意すること; これらのオプションは古いバージョンの Vimに互換性がある。 |'highlight'|オプションは5つのモードがどの操作のときに使用 されるかを特定する。 > diff --git a/ja/os_mint.jax b/ja/os_mint.jax index b8288d34d..7d88c79ee 100644 --- a/ja/os_mint.jax +++ b/ja/os_mint.jax @@ -1,9 +1,9 @@ COMMENT: OS特有情報:Atari MiNT -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 MAINTAINER: 村岡太郎<koron@tka.att.ne.jp> -*os_mint.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*os_mint.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Jens M. Felderhoff diff --git a/ja/os_os2.jax b/ja/os_os2.jax index 7401d94e2..ef132a2cb 100644 --- a/ja/os_os2.jax +++ b/ja/os_os2.jax @@ -1,9 +1,9 @@ COMMENT: OS特有情報:OS/2 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*os_os2.txt* For Vim version 6.3. Last change: 2004 Jan 09 +*os_os2.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIMリファレンスマニュアル by Paul Slootman diff --git a/ja/os_qnx.jax b/ja/os_qnx.jax index 7acdd6c60..3992007b0 100644 --- a/ja/os_qnx.jax +++ b/ja/os_qnx.jax @@ -1,8 +1,8 @@ COMMENT: OS特有情報:QNX -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*os_qnx.txt* For Vim version 6.3. Last change: 2004 Apr 23 +*os_qnx.txt* For Vim version 7.0. Last change: 2005 Mar 29 VIMリファレンスマニュアル by Julian Kinraid diff --git a/ja/pi_spec.jax b/ja/pi_spec.jax index 3c3ef399f..02deef85e 100644 --- a/ja/pi_spec.jax +++ b/ja/pi_spec.jax @@ -1,8 +1,8 @@ COMMENT: プラグイン:RPMのspecファイル編集 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*pi_spec.txt* For Vim version 6.3. Last change: 2002 Oct 29 +*pi_spec.txt* For Vim version 7.0. Last change: 2006 Apr 24 by Gustavo Niemeyer ~ diff --git a/ja/remote.jax b/ja/remote.jax index f125b9aec..066e4cc95 100644 --- a/ja/remote.jax +++ b/ja/remote.jax @@ -1,9 +1,10 @@ -COMMENT: -STATUS: finished 6.3.054 +COMMENT: Vimクライアントサーバ通信 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*remote.txt* For Vim version 6.3. Last change: 2003 Nov 10 +*remote.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIMリファレンスマニュアル by Bram Moolenaar @@ -51,6 +52,19 @@ Vimクライアントサーバ通信 *client-server* --remote-wait-silent [+{cmd}] {file} ... *--remote-wait-silent* --remote-waitと同様、しかしサーバが存在しなく てもエラーを報告しない。 + *--remote-tab* + --remote-tab --remote と同様、しかし各ファイルを新しいタブ + ページで開く。 + *--remote-tab-silent* + --remote-tab-silent --remote-silent と同様、しかし各ファイルを新し + いタブページで開く。 + *--remote-tab-wait* + --remote-tab-wait --remote-wait と同様、しかし各ファイルを新しい + タブページで開く。 + + *--remote-tab-wait-silent* + --remote-tab-wait-silent --remote-wait-silent と同様、しかし各ファイル + を新しいタブページで開く。 *--servername* --servername {name} サーバ名{name}になる。--remoteコマンドのどれか 1つと併用すると、デフォルトのサーバではなく diff --git a/ja/repeat.jax b/ja/repeat.jax index 5025f99cf..080807643 100644 --- a/ja/repeat.jax +++ b/ja/repeat.jax @@ -1,9 +1,10 @@ COMMENT: コマンドの繰り返し方法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*repeat.txt* For Vim version 6.3. Last change: 2004 Jun 22 +*repeat.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIMリファレンスマニュアル by Bram Moolenaar @@ -18,6 +19,7 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> 3. 複雑な繰り返し |complex-repeat| 4. Vimスクリプトを使う |using-scripts| 5. スクリプトのデバッグ |debug-scripts| +6. プロファイリング |profiling| ============================================================================== 1. 単発繰り返し *single-repeat* @@ -25,7 +27,8 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> *.* . 最後の変更を繰り返す。変更の回数は[count]で指定した回 数で置き換えられる。'cpoptions'に'y'フラグが含まれてる - 時には、ヤンクコマンドも繰り返す + 時には、ヤンクコマンドも繰り返す。コマンドラインコマン + ドは繰り返さない。 単純な変更は"."コマンドで繰り返すことができる。回数を指定しなければ、最後の変 更の回数が使用される。回数を指定した場合、最後のそれと置き換えられる。最後に行 @@ -82,6 +85,12 @@ globalコマンドは最後に使用した検索パターンと、最後に使 :%s/pat/PAT/g こっちのほうが2文字短い! +コマンドに ":visual" を使った場合は特別である。これはマッチする行へ移動してノー +マルモードに入り、|Q| を押して Ex モードへ戻るまでコマンドを実行することができ +る。これがマッチする各行に対して繰り返される。これを行っている間は ":global" を +使うことはできない。 +(訳注: この段落、意味がわかりません) + ============================================================================== 3. 複雑な繰り返し *complex-repeat* @@ -103,7 +112,7 @@ q レコーディングを終了する。(実装のメモ: レコーディン 価の結果が実行される。|@:|も参照。{Vi: 名前付きレジス タのみ} - *@@* + *@@* *E748* @@ 直前の@{0-9a-z":*}を[count]回繰り返す。 :[addr]*{0-9a-z".=} *:@* *:star* @@ -140,6 +149,7 @@ Vimスクリプトの書き方はユーザーマニュアルの41章|usr_41.txt| :so[urce] {file} Exコマンドを{file}から読込む。これは":"で始まるコマン ドを列挙したファイルです。 (訳注:実際に":"を書く必要はない) + 自動コマンド |SourcePre| が発生する。 :so[urce]! {file} Vimコマンドを{file}から読込む。ノーマルモードでファイ ルの内容をあなたがタイプしたのと同じように実行されま @@ -281,11 +291,11 @@ MS-DOS, Win32 and OS/2: ":source"で読込まれるファイルは通常、行 たいな内容だった場合には失敗する。ファイルの先頭行が<CR>で終わっていてその1行 限りの時、先頭行から<CR>が失われてしまうのでエラーメッセージが出るだろう。 -Macintosh: ":source"で読み込まれるファイルは通常、行末に<CR>を持っている。これ -らは常に機能する。もしも行末に<NL>を持つファイルを使っているならば(例えばUNIX -で作られたファイル)、'fileformats'が空でかつ先頭行が<CR>で終わってなければ正し -く認識される。先頭行に<CR>を持ち<NL>で改行しているファイルを使用しないように気 -を付けてください。 +Mac Classic: ":source"で読み込まれるファイルは通常、行末に<CR>を持っている。 +これらは常に機能する。もしも行末に<NL>を持つファイルを使っているならば(例えば +UNIXで作られたファイル)、'fileformats'が空でかつ先頭行が<CR>で終わってなければ +正しく認識される。先頭行に<CR>を持ち<NL>で改行しているファイルを使用しないよう +に気を付けてください。 その他のシステムでは、Vimは取込まれた(":source"ed)ファイルの行末は<NL>であるこ とを期待する。これは常に働く。もしも行末が<CR><NL>であるファイル(例えばMS-DOS @@ -463,9 +473,18 @@ imの動作についてより詳細なメッセージを得られます。 ソースファイルにブレークポイントを設定します。例: > :breakadd file 43 .vimrc +:breaka[dd] here + カレントファイルのカレント行にブレークポイントを設定します。 + 次を行うのと同様です: > + :breakadd file <cursor-line> <current-file> +< Note これはファイルを読み込むときに実行されるコマンドに対して + だけ働きます。そのファイル中で定義される関数に対しては働きませ + ん。 + [lnum]はブレークポイントにする行番号です。Vimはその行かそれ以降で停止します。 省略時すると1行目になります。 + *:debug-name* {name} はファイル名や関数名のパターンです。パターンはオートコマンドで使われる ものと同じです。完全に一致しなければなりません(パターンが"^"で始まって"$"で終 わるように)。"*"は全ての文字列に一致します。'ignorecase'は使われませんが、大文 @@ -483,6 +502,9 @@ imの動作についてより詳細なメッセージを得られます。 関数名のパターン検査は";function"で表示される名前に対して行われます。ローカ ル関数には"<SNR>99_"といったものが前に付くということです。 +Note 関数はまず読み込まれ、後で実行されます。読み込まれたときに "file" ブレー +クポイントがチェックされ、実行されるときに "func" ブレークポイントがチェックさ +れます。 ブレークポイントの削除 ---------------------- @@ -491,12 +513,19 @@ imの動作についてより詳細なメッセージを得られます。 ブレークポイント{nr}を削除します。|:breaklist|を使って番号を 確認してください。 +:breakd[el] * + すべてのブレークポイントを削除します。 + :breakd[el] func [lnum] {name} 関数内のブレークポイントを削除します。 :breakd[el] file [lnum] {name} ソースファイル内のブレークポイントを削除します。 +:breakd[el] here + カレントファイルのカレント行のブレークポイントを削除します。 + + [lnum]が省略されると関数、またはファイルの最初のブレークポイントが削除されま す。 {name}は":breakadd"で使った名前と完全に同じでなければなりません。"eplorer"と @@ -525,4 +554,102 @@ imの動作についてより詳細なメッセージを得られます。 を使わず、ユーザーから直接デバッグモードコマンドを受け取ります 。 +============================================================================== +6. プロファイリング *profile* *profiling* + +プロファイリングとは、関数やスクリプトの実行にかかる時間を計測することです。 +これを行うには |+profile| 機能が必要です。 +この機能は "huge" 機能つきでコンパイルしたときだけ含まれます。 +{Vi はプロファイリング機能を持っていない} + +また、関数 |reltime()| を使っても時間を計測できます。この関数には |+reltime| +機能だけが必要です。これは "huge" 以外でもしばしばついてきます。 + +:prof[ile] start {fname} *:prof* *:profile* *E750* + プロファイリングを開始し、終了時に出力を {fname} に出力します。 + {fname} がすでに存在するときは、警告なしに上書きされます。 + 変数 |v:profiling| に 1 が代入されます。 + +:prof[ile] continue + ":profile pause" の後にこれを実行すると、プロファイリングを再 + 開します。 + +:prof[ile] func {pattern} + パターン {pattern} にマッチする関数をプロファイリングします。 + {pattern} がどう使われるかは |:debug-name| を参照。 + +:prof[ile][!] file {pattern} + パターン {pattern} にマッチするスクリプトファイルをプロファイ + リングします。 + {pattern} がどう使われるかは |:debug-name| を参照。 + このコマンドはスクリプトそのものをプロファイリングするだけで、 + その中で定義されている関数のプロファイリングは行いません。 + [!] がつけられたときは、そのスクリプト中で定義されている全ての + 関数のプロファイリングも行います。しかしスクリプトがこのコマン + ドの後で読み込まれたときだけです。 + +:profd[el] ... *:profd* *:profdel* + 指定された引数に対するプロファイリングを停止します。引数につい + ては |:breakdel| を参照。 + +最初は常に ":profile start fname" コマンドで始めなければなりません。結果のファ +イルは Vim が終了するときに書き出されます。次に出力の例を挙げます。説明のため +に行番号が行頭についています: + + 1 FUNCTION Test2() ~ + 2 Called 1 time ~ + 3 Total time: 0.155251 ~ + 4 Self time: 0.002006 ~ + 5 ~ + 6 count total (s) self (s) ~ + 7 9 0.000096 for i in range(8) ~ + 8 8 0.153655 0.000410 call Test3() ~ + 9 8 0.000070 endfor ~ + 10 " Ask a question ~ + 11 1 0.001341 echo input("give me an answer: ") ~ + +ヘッダ(1行目から4行目)は関数全体にかかった時間を示しています。"Total" はこの関 +数を実行している間に経過した時間です。"Self" は "Total" のうち、次のことにかか +った時間を引いたものです: +- 他のユーザ定義関数 +- スクリプトの読み込み +- 自動コマンドの実行 +- 外部(シェル)プログラム + +7行目から11行目は各実行行にかかった時間を示しています。実行されない行はカウン +トされません。それゆえ、コメント行は決してカウントされません。 + +Count の桁はその行が何回実行されたかを示します。7行目の "for" コマンドはそれ以 +下の行と同様に何回も実行されることに注意してください。これは、ループの終わりを +検出するためにこの行が何回も実行されるためです。 + +ユーザ入力待ちにかかった時間は一切カウントされません。それゆえ、input() のプロ +ンプトに反応するのにどれだけ時間がかかろうとも無関係です。 + +プロファイリングはどこで時間が費やされたかのよい指標を与えてくれますが、多くの +原因によりその結果がごまかされてしまう場合があるということを覚えておいてくださ +い: + +- システム関数 gettimeofday() に依存する時間計測の精度。たとえ時間がマイクロ秒 + で表示されていたとしても、1/100秒の精度しかないこともあります。 + +- 実経過時間が計測されます。他のプロセスがビジーであると、それが予測できない箇 + 所で遅れを引き起こす可能性があります。 + +- 1行に複数のコマンドを書いていると、1つの時間しか得られません。ここのコマンド + に対して時間を見るにはその行を分割してください。 + +- 各行の時間の総和をとると、たいてい関数全体の時間より小さくなります。各行の間 + にオーバーヘッドがあります。 + +- Vim が終了する前に削除された関数はプロファイリング情報を生成しません。必要な + ら変数 |v:profiling| をチェックしてください: > + :if !v:profiling + : delfunc MyFunc + :endif +< +- マルチプロセッサシステム上では、スリープモードが作動したときや、省力のためプ + ロセッサの周波数が下がったとき、プロファイリングが奇妙な結果を出すかもしれま + せん。 + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/rileft.jax b/ja/rileft.jax index 0292949eb..7cefe3ed6 100644 --- a/ja/rileft.jax +++ b/ja/rileft.jax @@ -1,9 +1,10 @@ COMMENT: 左←右書きモードとヘブライ語の入力 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*rileft.txt* For Vim version 6.3. Last change: 2003 May 07 +*rileft.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIMリファレンスマニュアル by Avner Lottem From 68a407175f5e6f2aaf2f2e187757d8837623d823 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Mon, 16 Oct 2006 12:30:27 +0000 Subject: [PATCH 071/783] fix: correct version number of fold.jax git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@71 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/fold.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/fold.jax b/ja/fold.jax index 8abf39b4a..9667766f1 100644 --- a/ja/fold.jax +++ b/ja/fold.jax @@ -1,5 +1,5 @@ COMMENT: 折畳み機能 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> From fa0a0903bd39c2cdc85e5d234964f0874b2032b7 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Thu, 19 Oct 2006 02:50:32 +0000 Subject: [PATCH 072/783] fix: update os_win32 to 7.0 fix: fix vim_faq_help git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@72 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/os_win32.txt | 43 +++++++++++++++++++++++---------- ja/os_win32.jax | 29 +++++++++++++++++++---- ja/vim_faq_help.jax | 58 ++++++++++++++++++++++----------------------- 3 files changed, 83 insertions(+), 47 deletions(-) diff --git a/en/os_win32.txt b/en/os_win32.txt index c8af5de86..a1b1b831b 100644 --- a/en/os_win32.txt +++ b/en/os_win32.txt @@ -1,4 +1,4 @@ -*os_win32.txt* For Vim version 6.3. Last change: 2004 May 01 +*os_win32.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by George Reilly @@ -87,6 +87,12 @@ The only kind of terminal type that the Win32 version of Vim understands is probably get very strange behavior from Vim. Therefore Vim does not obtain the default value of 'term' from the environment variable "TERM". +$PATH *win32-PATH* + +The directory of the Vim executable is appended to $PATH. This is mostly to +make "!xxd' work, as it is in the Tools menu. And it also means that when +executable() returns 1 the executable can actually be executed. + ============================================================================== 3. Restore screen contents *win32-restore* @@ -184,14 +190,15 @@ A. There are no good reasons to run the 16-bit DOS version on NT. The Win32 runs on top of an 80x86 emulator. Q. How do I change the font? -A. In the GUI version, you can use the 'guifont' option. - In the console version, you need to set the font of the console itself. +A. In the GUI version, you can use the 'guifont' option. Example: > + :set guifont=Lucida_Console:h15:cDEFAULT +< In the console version, you need to set the font of the console itself. You cannot do this from within Vim. Q. When I change the size of the console window with ':set lines=xx' or similar, the font changes! (Win95) A. You have the console font set to 'Auto' in Vim's (or your MS-DOS prompt's) - properties. This makes W95 guess (badly!) what font is best. Set an explicit + properties. This makes W95 guess (badly!) what font is best. Set an explicit font instead. Q. Why can't I paste into Vim when running Windows 95? @@ -249,6 +256,16 @@ A. On Unix, Vim is prepared for links (symbolic or hard). A backup copy of things exist. The only way to fix this in the current version is not making a backup file, by ":set nobackup nowritebackup" |'writebackup'| +Q. I'm using Vim to edit a file on a Unix file server through Samba. When I + write the file, the owner of the file is changed. Why? +A. When writing a file Vim renames the original file, this is a backup (in + case writing the file fails halfway). Then the file is written as a new + file. Samba then gives it the default owner for the file system, which may + differ from the original owner. + To avoid this set the 'backupcopy' option to "yes". Vim will then make a + copy of the file for the backup, and overwrite the original file. The + owner isn't changed then. + Q. How do I get to see the output of ":make" while it's running? A. Basically what you need is to put a tee program that will copy its input (the output from make) to both stdout and to the errorfile. You can find a @@ -271,7 +288,7 @@ A. VisionFS can't handle certain dot (.) three letter extension file names. dir > file.bat < The result is that the "dir" command updates the "file.bat~" file, instead - of creating a new "file.bat" file. This same behavior is exhibited in Vim + of creating a new "file.bat" file. This same behavior is exhibited in Vim when editing an existing file named "foo.bat" because the default behavior of Vim is to create a temporary file with a '~' character appended to the name. When the file is written, it winds up being deleted. @@ -295,13 +312,13 @@ A. When using :! to run an external command, you can run it with "start": > To avoid this special treatment, use ":! start". Q. I'm using Win32s, and when I try to run an external command like "make", - Vim doesn't wait for it to finish! Help! + Vim doesn't wait for it to finish! Help! A. The problem is that a 32-bit application (Vim) can't get notification from - Windows that a 16-bit application (your DOS session) has finished. Vim + Windows that a 16-bit application (your DOS session) has finished. Vim includes a work-around for this, but you must set up your DOS commands to - run in a window, not full-screen. Unfortunately the default when you - install Windows is full-screen. To change this: - 1) Start PIF editor (in the Main program group) + run in a window, not full-screen. Unfortunately the default when you + install Windows is full-screen. To change this: + 1) Start PIF editor (in the Main program group). 2) Open the file "_DEFAULT.PIF" in your Windows directory. 3) Changes the display option from "Full Screen" to "Windowed". 4) Save and exit. @@ -310,10 +327,10 @@ A. The problem is that a 32-bit application (Vim) can't get notification from :!dir C:\<CR>". < You should see a DOS box window appear briefly with the directory listing. -Q. I use Vim under Win32s and NT. In NT, I can define the console to default to - 50 lines, so that I get a 80x50 shell when I ':sh'. Can I do the same in +Q. I use Vim under Win32s and NT. In NT, I can define the console to default to + 50 lines, so that I get a 80x50 shell when I ':sh'. Can I do the same in W3.1x, or am I stuck with 80x25? -A. Edit SYSTEM.INI and add 'ScreenLines=50' to the [NonWindowsApp] section. DOS +A. Edit SYSTEM.INI and add 'ScreenLines=50' to the [NonWindowsApp] section. DOS prompts and external DOS commands will now run in a 50-line window. vim:tw=78:fo=tcq2:ts=8:ft=help:norl: diff --git a/ja/os_win32.jax b/ja/os_win32.jax index b78504e5d..0a515c49a 100644 --- a/ja/os_win32.jax +++ b/ja/os_win32.jax @@ -1,9 +1,10 @@ COMMENT: OS特有情報:Windows -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*os_win32.txt* For Vim version 6.3. Last change: 2004 May 01 +*os_win32.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by George Reilly @@ -93,6 +94,13 @@ Win32バージョンのVimが認識できる唯一の端末の種類は"win32" ることだろう。それゆえ、Vimは'term'のデフォルト値を環境変数"TERM"から取得しな い。 +$PATH *win32-PATH* + +Vim 実行ファイルのディレクトリが $PATH に追加される。これは主に「ツール」メ +ニューにある "!xxd" が動作するようにするためである。また、これにより +executable() が 1 を返すときは実際にその実行ファイルが実行可能であるように +なる。 + ============================================================================== 3. スクリーン内容の復帰 *win32-restore* @@ -126,7 +134,7 @@ Windows 3.1上でWin32バージョンを動かすには、Win32sをインスト http://support.microsoft.com/download/support/mslfiles/pw1118.exe (マイクロソフトはまたこれを移動した。もうどこにあるのか分からない) -ヽ(`Д´)ノ ウワァァン +ヽ(`Д´)ノ ウワァァン gvim.exeに2つのバージョンがあるのは、Win32sバージョンがVC++ 4.1でコンパイルさ れているからである。これはWin32sプログラムをサポートするVC++の最新バージョンで @@ -184,8 +192,9 @@ A. NT上で16ビットDOSバージョンを使うべき理由は存在しない ない程に遅い、これは80x86エミュレータ上で実行されているからである。 Q. フォントを変える方法は? -A. GUIバージョンでは、'guifont'オプションを使用すればよい。 - コンソールバージョンでは、コンソール自体のフォントを設定する必要がある。 +A. GUIバージョンでは、'guifont'オプションを使用すればよい。例: > + :set guifont=Lucida_Console:h15:cDEFAULT +< コンソールバージョンでは、コンソール自体のフォントを設定する必要がある。 これはVimから行うことはできない。 Q. コンソールウィンドウのサイズを':set lines=xx'などで変更したとき、フォントが @@ -249,6 +258,16 @@ A. Unixでは、Vimはリンク(シンボリック、ハード)に対応して ジョンにおいてこの問題を避ける唯一の方法は、":set nobackup nowritebackup"に よって、バックアップファイルを作らないことである。 |'writebackup'| +Q. Samba を通して Unix ファイルサーバ上のファイルを Vim で編集している。この + ファイルを書き込むと、ファイルの所有者が変わってしまう。なぜか? +A. ファイルを書き込むとき、Vim は元のファイルをリネームし、それをバックアップ + とする (ファイルの書き込みが途中で失敗した場合に備えるため)。そしてバッファ + が新規ファイルとして書き込まれる。すると Samba はそのファイルに対してファイ + ルシステムのデフォルト所有者を設定する。その結果、元の所有者と変わってしま + う。これを避けるには、オプション 'backupcopy' を "yes" にすること。するとバ + ックアップ用に元のファイルのコピーを作ってから、元のファイルを上書き保存す + るようになる。こうすればファイルの所有者は変わらない。 + Q. ":make"の出力を実行中に見たい場合は? A. 基本的には、入力(この場合はmakeの出力)を標準出力とエラーファイルの両方にコ ピーする、teeプログラムを使えばよい。tee(とその他多くのGNUツール)は、 diff --git a/ja/vim_faq_help.jax b/ja/vim_faq_help.jax index f76ab4616..c500843a9 100644 --- a/ja/vim_faq_help.jax +++ b/ja/vim_faq_help.jax @@ -52,7 +52,7 @@ SECTION 3 - 入手 |faq-3.2| どこで Vim の最新版を見つけられますか? |faq-3.3| どのプラットフォーム上で実行できるんですか? |faq-3.4| どこでVimのランタイムファイルの最新バージョンをダウンロードできま - すか? + すか? *faq-help* SECTION 4 - ヘルプ |faq-4.1| どうやってヘルプ・ファイルを利用するんですか? @@ -60,18 +60,18 @@ SECTION 4 - ヘルプ |faq-4.3| エラーメッセージE123が出ました。なにがまずいのでしょうか? |faq-4.4| Vimの様々なモードについては何を読めばいいですか? |faq-4.5| 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファ - イルを生成することができますか? + イルを生成することができますか? |faq-4.6| 圧縮したヘルプ・ファイルを使うことはできますか? *faq-editing-a-file* SECTION 5 - ファイルの編集 |faq-5.1| ファイルを編集用に読み込むには? |faq-5.2| 現在のファイルを別な名前で保存(save as)して新しいファイルを編集す - るには? + るには? |faq-5.3| カレントディレクトリを現在のファイルのディレクトリにするには? |faq-5.4| ファイルの末尾に改行文字(EOL)をつけずにファイルを書き込むには? |faq-5.5| ファイルを最後に編集した場所から開くようにするには? |faq-5.6| Vimでファイルを編集中にそのファイルが他のアプリケーションによって - 変更されたとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイ + 変更されたとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイ アログのような)を開きます。この警告を無効にするには? |faq-5.7| カーソル下のファイル名のファイルを開くには? |faq-5.8| 現在のファイルを再読み込みするには? @@ -83,34 +83,34 @@ SECTION 6 - 複数のファイルを編集する |faq-6.2| 複数のファイル・バッファを切り替えるには? |faq-6.3| それぞれのファイルを別ウィンドウで開くには? |faq-6.4| 「ワークセット」や「プロジェクト」のように自動的に複数のファイルを - 同時に読み込ませるようにするには? + 同時に読み込ませるようにするには? |faq-6.5| Neditやemacsのように単一のVimインスタンスで複数のトップレベルウィ - ンドウを開くことはできますか? + ンドウを開くことはできますか? |faq-6.6| Vim内でディレクトリをブラウズするには? |faq-6.7| ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? *faq-backup* SECTION 7 - バックアップ |faq-7.1| ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけた - ファイルが作られます。このファイルを作成するのを止めさせるには? + ファイルが作られます。このファイルを作成するのを止めさせるには? (または)バックアップ機能を無効にするには? |faq-7.2| 全てのバックアップファイルを特定のディレクトリに保存するように設定 するには? |faq-7.3| ファイルを保存するとファイルパーミッションが変更されます。ファイル - パーミッションを変更せずにファイルを保存するよう設定するには? + パーミッションを変更せずにファイルを保存するよう設定するには? *faq-buffers* SECTION 8 - バッファ |faq-8.1| バッファに対して変更を加えました。変更されたバッファを保存せずに、 - かつ変更を失うことなく他のバッファを編集するには? + かつ変更を失うことなく他のバッファを編集するには? |faq-8.2| バッファを切り替えるときに自動的に保存するよう設定するには? |faq-8.3| カレントウィンドウのバッファを空バッファにするには? |faq-8.4| バッファ番号を指定してバッファを読み込むショートカットキーはありま - すか? + すか? |faq-8.5| 読み込んでいるバッファをそれぞれ別のウィンドウで開くには? |faq-8.6| Vimを終了することなくバッファを閉じる(削除する)には? |faq-8.7| :e filenameでいくつかのファイルを開きました。Vimを終了することなく - そのバッファのうちの1つを閉じるには? + そのバッファのうちの1つを閉じるには? |faq-8.8| ":%bd"コマンドで全バッファを削除しようとしても、全てのバッファが - 削除されません。なぜ? + 削除されません。なぜ? |faq-8.9| カレントバッファ/ファイルのバッファ番号を表示するには? |faq-8.10| ウィンドウを閉じることなくバッファを削除するには? |faq-8.11| Tabキーで全バッファを巡回するようにマップするには? @@ -120,36 +120,36 @@ SECTION 9 - ウィンドウ |faq-9.2| ウィンドウの幅を広げるには? |faq-9.3| ウィンドウをズームイン・ズームアウトするには? |faq-9.4| 全バッファまたは全ウィンドウ、引数リスト中の全ファイルに対してex - コマンドを実行するには? + コマンドを実行するには? *faq-motion* SECTION 10 - モーション |faq-10.1| ファイルの先頭や末尾に移動するには? |faq-10.2| インサートモードで<Esc>キーを押してノーマルモードに移行すると、カ - ーソルが1文字左へ移動します(カーソルが行の最初の文字の上にあるとき + ーソルが1文字左へ移動します(カーソルが行の最初の文字の上にあるとき を除いて)。この動作を変更し、カーソルがその桁の上に残るようにでき ますか? |faq-10.3| <Page Up>、<Page Down>などのキーを押してスクロールしたときカーソル - 位置の桁を保つように設定することはできますか? + 位置の桁を保つように設定することはできますか? |faq-10.4| ファイル中のある行の長さが画面の幅を越えており、折り返されていま - す。ここでj, kキーを使うと画面上の次行(物理行)でなくファイルの次行 + す。ここでj, kキーを使うと画面上の次行(物理行)でなくファイルの次行 (論理行)に移動します。画面上の次行に移動するには? |faq-10.5| Vimにおける文、段落、セクションの定義は? |faq-10.6| 文、段落、セクションの先頭と末尾に移動するには? |faq-10.7| 画面の右端を越えて続いている行があります。右側にスクロールして画面 - 外に出ているテキストを表示するには? + 外に出ているテキストを表示するには? |faq-10.8| 2個以上のバッファを同時にスクロールさせるには? |faq-10.9| 矢印キーを使うとモードが変わり、バッファに変な文字が挿入され、カー - ソルが適切に移動しません。どうなっているのですか? + ソルが適切に移動しません。どうなっているのですか? |faq-10.10| カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するよう - にするには? + にするには? |faq-10.11| 常にインサートモードに留まるようにするには?(モードレスな編集をす - るには?) + るには?) |faq-10.12| テキストをスクロールするとき、前後の行を表示するには? |faq-10.13| 以前のカーソル位置に戻るには? *faq-searching-text* SECTION 11 - テキストを検索する |faq-11.1| テキストを検索した後、マッチしたテキストが全て強調されます。この強 - 調を一時的/永続的に無効にするには? + 調を一時的/永続的に無効にするには? |faq-11.2| 検索パターンにキャリッジリターン文字を含めるには? |faq-11.3| 文字^Mを検索するには? |faq-11.4| '~R', '~S'などと表示される文字を検索・置換するには? @@ -179,7 +179,7 @@ SECTION 12 - テキストを変更する |faq-12.2| 連続する空白文字を1個のスペースに置換するには? |faq-12.3| 連続する空行を1行だけに圧縮するには? |faq-12.4| ファイル中の空行を全て削除するには?空白文字だけを含む行を全て削除 - するには? + するには? |faq-12.5| カーソル下の単語をコピー/ヤンクするには? |faq-12.6| 行全体ではなく、行内のある位置からある位置までをヤンクするには? |faq-12.7| 現在のレジスタの中身に追加ヤンクするには? @@ -196,7 +196,7 @@ SECTION 12 - テキストを変更する |faq-12.18| 行末を越えてカーソルを移動し、テキストを挿入するには? |faq-12.19| カーソル下の単語(例えばjunk)を"foojunkbar"に置き換えるには? |faq-12.20| ディレクトリ中の全てのファイルに対して特定のテキストを置換する - には? + には? |faq-12.21| ファイル中に数字が書かれています。これを増加・減少させるには? |faq-12.22| ":substitute"で最後に検索したパターンを再利用するには? |faq-12.23| ":substitute"を使って大文字・小文字を入れかえるには? @@ -219,7 +219,7 @@ SECTION 13 - インサートモードでの補完 |faq-13.1| インサートモードで単語や行を補完するには? |faq-13.2| インサートモードでファイル名を補完するには? |faq-13.3| インサートモードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 - 今補完した単語の後に現れる単語を補完するには? + 今補完した単語の後に現れる単語を補完するには? *faq-text-formatting* SECTION 14 - テキストの整形 |faq-14.1| 折り返された行の末尾に改行を挿入するには? @@ -336,8 +336,8 @@ SECTION 20 - キーマップ 特殊文字を認識するように設定するには? |faq-20.12| マップ中で'|'を使って複数のコマンドを区切るには? |faq-20.13| その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 - 入力があります。最初のものを入力したとき、2番目のが展開しないようにする - には? + 入力があります。最初のものを入力したとき、2番目のが展開しないよう + にするには? |faq-20.14| ときどきキーが処理されるのに1秒程度かかるのはなぜですか? |faq-20.15| ビジュアル選択したテキストに対して外部コマンドを実行するマッピング を作るには? @@ -357,8 +357,8 @@ SECTION 22 - レコーティングと繰り返し |faq-22.3| 記録したキーシーケンスを編集するには? |faq-22.4| 記録したキーシーケンスをファイルに保存するには? |faq-22.5| レジスタ0にキーシーケンスを保存しています(つまり q0 .... q)。 - 記録したキーシーケンスの中でテキストをヤンクしています。一度そのキーシー - ケンスを再生すると、もうそれを再現することができません。 + 記録したキーシーケンスの中でテキストをヤンクしています。一度そのキー + シーケンスを再生すると、もうそれを再現することができません。 *faq-autocommands* SECTION 23 - 自動コマンド |faq-23.1| 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? @@ -7143,7 +7143,7 @@ http://vim.sourceforge.net/tip_view.php?tip_id=246 . *faq-37.12* 37.12. どのダイグラフがどの文字に定義されているかを知るには? -まず'encoding'が適切に(例えばutf-8に)設定してください。それから:digraphsを使っ +まず'encoding'を適切に(例えばutf-8に)設定してください。それから:digraphsを使っ て現在定義されているダイグラフを表示します。 さらなる情報については以下を参照してください。 > From 2d9f8d60719ffa8a20acde53dfe33e28203782ca Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Thu, 19 Oct 2006 06:37:02 +0000 Subject: [PATCH 073/783] fix: update hangulin to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@73 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/hangulin.txt | 28 ++++++++++++++-------------- ja/hangulin.jax | 10 +++++----- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/en/hangulin.txt b/en/hangulin.txt index fc8218802..a5d97bc37 100644 --- a/en/hangulin.txt +++ b/en/hangulin.txt @@ -1,4 +1,4 @@ -*hangulin.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*hangulin.txt* For Vim version 7.0. Last change: 2006 Apr 02 VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam @@ -7,17 +7,17 @@ Introduction *hangul* ------------ It is to input hangul, the Korean language, with VIM GUI version. If you have a XIM program, you can use another |+xim| feature. -Basically, it is for whom has no XIM program. +Basically, it is for anybody who has no XIM program. Compile ------- -Next is a basic option. You can add any other configure option. > +Next is a basic option. You can add any other configure option. > ./configure --with-x --enable-multibyte --enable-fontset --enable-hangulinput -And you should check the feature.h. If |+hangul_input| feature is enabled +And you should check feature.h. If |+hangul_input| feature is enabled by configure, you can select more options such as keyboard type, 2 bulsik -or 3 bulsik. You can find keywords like next in there. > +or 3 bulsik. You can find keywords like next in there. > #define HANGUL_DEFAULT_KEYBOARD 2 #define ESC_CHG_TO_ENG_MODE @@ -38,7 +38,7 @@ You should add nexts to your global vimrc ($HOME/.vimrc). > Keyboard -------- You can change keyboard type (2 bulsik or 3 bulsik) using VIM_KEYBOARD -or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): > +or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): > export VIM_KEYBOARD="2" or > @@ -48,7 +48,7 @@ If both are set, VIM_KEYBOARD has higher priority. Hangul Fonts ------------ -You can set text font using $HOME/.Xdefaults or $HOME/.gvimrc. +You can set text font using $HOME/.Xdefaults or in your gvimrc file. But to use Hangul, you should set 'guifontset' in your vimrc. $HOME/.Xdefaults: > @@ -67,9 +67,9 @@ $HOME/.gvimrc: > attention! the , (comma) or ; (semicolon) -And there should be no ':set guifont'. If it exists, then Gvim ignores -':set guifontset'. It means VIM runs without fontset supporting. -So, you can see only English. Hangul does not be correctly displayed. +And there should be no ':set guifont'. If it exists, then Gvim ignores +':set guifontset'. It means VIM runs without fontset supporting. +So, you can see only English. Hangul does not be correctly displayed. After 'fontset' feature is enabled, VIM does not allow using 'font'. For example, if you use > @@ -78,17 +78,17 @@ in your .gvimrc, then you should do for syntax > :hi Comment guifg=Cyan font=another_eng_font,another_your_font If you just do > :hi Comment font=another_eng_font -then you can see a GOOD error message. Be careful! +then you can see a GOOD error message. Be careful! hangul_font width should be twice than english_font width. Unsupported Feature ------------------- -Johab font not yet supported. And I don't have any plan. +Johab font not yet supported. And I don't have any plan. If you really want to use johab font, you can use the hanguldraw.c in gau package. -Hanja input not yet supported. And I don't have any plan. +Hanja input not yet supported. And I don't have any plan. If you really want to input hanja, just use VIM with hanterm. Bug or Comment @@ -96,6 +96,6 @@ Bug or Comment Send comments, patches and suggestions to: Chi-Deok Hwang <hwang@mizi.co.kr> - Nam SungHyun <namsh@lge.com> + Nam SungHyun <namsh@kldp.org> vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/hangulin.jax b/ja/hangulin.jax index ca6b040e4..165e04dc0 100644 --- a/ja/hangulin.jax +++ b/ja/hangulin.jax @@ -1,11 +1,11 @@ COMMENT: ハングル入力方法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> -*hangulin.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*hangulin.txt* For Vim version 7.0. Last change: 2006 Apr 02 VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam @@ -58,8 +58,8 @@ VIM_KEYBOARD か HANGUL_KEYBOARD_TYPE 環境変数を使うことによって、 ハングル・フォント ------------------ -$HOME/.Xdefaults か $HOME/.gvimrc でテキストのフォントを設定することができます。 -しかし、ハングルを使うには、vimrc で 'guifontset' を設定する必要があります。 +$HOME/.Xdefaults か ユーザの.gvimrc でテキストのフォントを設定することができま +す。しかし、ハングルを使うには、vimrc で 'guifontset' を設定する必要があります。 $HOME/.Xdefaults: > Vim.font: english_font @@ -106,6 +106,6 @@ Hanja 入力はまだサポートされていませんし、予定もありま コメント、パッチ、提案などはこちらに: Chi-Deok Hwang <hwang@mizi.co.kr> - Nam SungHyun <namsh@lge.com> + Nam SungHyun <namsh@kldp.org> vim:tw=78:ts=8:ft=help:norl: From 8d7064b5dccaa6b446e999675bc8509088ed507b Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sun, 31 Dec 2006 12:39:27 +0000 Subject: [PATCH 074/783] update quickfix.jax: fixed an error git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@74 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/quickfix.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/quickfix.jax b/ja/quickfix.jax index 3fd5a8ba1..df0c864c4 100644 --- a/ja/quickfix.jax +++ b/ja/quickfix.jax @@ -322,7 +322,7 @@ QuickFixウィンドウが一杯になったとき、2つの自動コマンド 一は'filetype'オプションが"qf"にセットされ、FileTypeイベントが発生する。それか らBufReadPostイベントが発生する。そのときのバッファ名は"quickfix"となる。これを 使ってエラーリストに対して操作を行うことができる。例: - au BufReadPost quickfix setlocal nomodifiable + au BufReadPost quickfix setlocal modifiable \ | silent exe 'g/^/s//\=line(".")." "/' \ | setlocal nomodifiable これは各行に行番号を追加する。文字列の置換":s"コマンドの中で使われている"\="に From 08c454653080928f40f11f5e4d841d585ac408e6 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 4 Jan 2007 07:05:17 +0000 Subject: [PATCH 075/783] fix: update usr_07, usr_08 to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@75 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/usr_07.txt | 4 +- en/usr_08.txt | 94 +++++++++- ja/usr_07.jax | 473 +++++++++++++++++++++++------------------------- ja/usr_08.jax | 492 +++++++++++++++++++++++++++++--------------------- 4 files changed, 613 insertions(+), 450 deletions(-) diff --git a/en/usr_07.txt b/en/usr_07.txt index 4a97a6aa5..1fb7b5fda 100644 --- a/en/usr_07.txt +++ b/en/usr_07.txt @@ -1,4 +1,4 @@ -*usr_07.txt* For Vim version 6.3. Last change: 2004 Mar 12 +*usr_07.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -266,7 +266,7 @@ positions without placing marks there. ============================================================================== *07.4* Backup files -Usually Vim does not produce a backup file. If you want to have one, all you +Usually Vim does not produce a backup file. If you want to have one, all you need to do is execute the following command: > :set backup diff --git a/en/usr_08.txt b/en/usr_08.txt index 3fe78b974..cdb157e10 100644 --- a/en/usr_08.txt +++ b/en/usr_08.txt @@ -1,4 +1,4 @@ -*usr_08.txt* For Vim version 6.3. Last change: 2004 Jun 04 +*usr_08.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM USER MANUAL - by Bram Moolenaar @@ -17,6 +17,7 @@ side by side. All this is possible with split windows. |08.6| Commands for all windows |08.7| Viewing differences with vimdiff |08.8| Various +|08.9| Tab pages Next chapter: |usr_09.txt| Using the GUI Previous chapter: |usr_07.txt| Editing more than one file @@ -52,7 +53,7 @@ the bottom one the code that uses these variables. The CTRL-W w command can be used to jump between the windows. If you are in the top window, CTRL-W w jumps to the window below it. If you are in the -bottom window it will jump to the first window. (CTRL-W CTRL-W does the same +bottom window it will jump to the first window. (CTRL-W CTRL-W does the same thing, in case you let go of the CTRL key a bit later.) @@ -504,6 +505,95 @@ window is to appear: :topleft {cmd} at the top or left of the Vim window :botright {cmd} at the bottom or right of the Vim window + +============================================================================== +*08.9* Tab pages + +You will have noticed that windows never overlap. That means you quickly run +out of screen space. The solution for this is called Tab pages. + +Assume you are editing "thisfile". To create a new tab page use this command: > + + :tabedit thatfile + +This will edit the file "thatfile" in a window that occupies the whole Vim +window. And you will notice a bar at the top with the two file names: + + +----------------------------------+ + | thisfile | /thatfile/ __________X| (thatfile is bold) + |/* thatfile */ | + |that | + |that | + |~ | + |~ | + |~ | + | | + +----------------------------------+ + +You now have two tab pages. The first one has a window for "thisfile" and the +second one a window for "thatfile". It's like two pages that are on top of +eachother, with a tab sticking out of each page showing the file name. + +Now use the mouse to click on "thisfile" in the top line. The result is + + +----------------------------------+ + | /thisfile/ | thatfile __________X| (thisfile is bold) + |/* thisfile */ | + |this | + |this | + |~ | + |~ | + |~ | + | | + +----------------------------------+ + +Thus you can switch between tab pages by clicking on the label in the top +line. If you don't have a mouse or don't want to use it, you can use the "gt" +command. Mnemonic: Goto Tab. + +Now let's create another tab page with the command: > + + :tab split + +This makes a new tab page with one window that is editing the same buffer as +the window we were in: + + +-------------------------------------+ + | thisfile | /thisfile/ | thatfile __X| (thisfile is bold) + |/* thisfile */ | + |this | + |this | + |~ | + |~ | + |~ | + | | + +-------------------------------------+ + +You can put ":tab" before any Ex command that opens a window. The window will +be opened in a new tab page. Another example: > + + :tab help gt + +Will show the help text for "gt" in a new tab page. + +A few more things you can do with tab pages: + +- click with the mouse in the space after the last label + The next tab page will be selected, like with "gt". + +- click with the mouse on the "X" in the top right corner + The current tab page will be closed. Unless there are unsaved + changes in the current tab page. + +- double click with the mouse in the top line + A new tab page will be created. + +- the "tabonly" command + Closes all tab pages except the current one. Unless there are unsaved + changes in other tab pages. + +For more information about tab pages see |tab-page|. + ============================================================================== Next chapter: |usr_09.txt| Using the GUI diff --git a/ja/usr_07.jax b/ja/usr_07.jax index 1951267cf..69248015d 100644 --- a/ja/usr_07.jax +++ b/ja/usr_07.jax @@ -1,96 +1,94 @@ COMMENT: 複数のファイルを編集する -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_07.txt* For Vim version 6.3. Last change: 2004 Mar 12 +*usr_07.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - 2つ以上のファイルを扱う + 複数のファイルを開く -どんなにファイルが多くても、心配はいりません。全てをvimの中で行えます。作業 -用のファイルリストを定義すれば、ファイル間を自由に移動できます。ファイル間で -文字列をコピー&ペーストするのも自由自在です。 +どんなにファイルが多くても心配はいりません。Vim を複数起動することなしに、それ +らのファイルを編集できます。作業するファイルのリストを定義して、他のファイルに +ジャンプしたりテキストをコピーしたりできます。 -|07.1| 他のファイルを編集する -|07.2| ファイル一覧 -|07.3| ファイル間ジャンプ +|07.1| 他のファイルを開く +|07.2| ファイルのリスト +|07.3| 他のファイルにジャンプする |07.4| バックアップファイル -|07.5| ファイル間のテキストコピー +|07.5| 他のファイルにテキストをコピーする |07.6| 読み込み専用モード |07.7| ファイル名の変更 - Next chapter: |usr_08.txt| ウィンドウの分割 - Previous chapter: |usr_06.txt| シンタックスハイライトの使用 -Table of contents: |usr_toc.txt| +次章: |usr_08.txt| ウィンドウの分割 +前章: |usr_06.txt| 構文強調表示 +目次: |usr_toc.txt| ============================================================================== -*07.1* 他のファイルを編集する +*07.1* 他のファイルを開く -ここまでの章では、別のファイルを編集するにはvimの再起動が必要でした。実はこ -れはとても簡単なのです。別のファイルを編集したければ、このコマンドを使います。 > +いままでは、ファイルを開くごとに Vim を起動しなければなりませんでしたが、もっ +と簡単な方法があります。次のコマンドを使ってください: > :edit foo.txt -ファイル名は"foo.txt"に限らず何でも使えます。vimは現在のファイルを閉じて、指 -定のファイルを開きます。現在のファイルが変更されていて、それを保存していなけ -れば、エラーメッセージを表示します。この場合、新しいファイルは開かれません。 +ファイル名は "foo.txt" に限らず何でも使えます。Vim は現在のファイルを閉じて、 +指定されたファイルを開きます。ファイルの変更が保存されていない場合は、エラー +メッセージが表示され、新しいファイルは開かれません。 - E37: No write since last change (use ! to override) ~ -JP: E37: 最後の変更が保存されていません (! で変更を破棄) ~ + E37: 最後の変更が保存されていません (! で変更を破棄) ~ Note: - vimは各エラーメッセージの先頭にエラーIDを付けて表示します。もしエ - ラーの意味や、何が原因かがわからなければ、このIDでヘルプを引いてく - ださい。上の場合なら、このようにします。 > + エラーメッセージの先頭には エラーID が表示されます。エラーの意味や原因 + がわからない場合は、この ID をヘルプで引いてください。上の場合なら、こ + のようにします: > :help E37 -ここで2つの選択肢が選べます。一つは次のコマンドでファイルを書き出す方法です。 > +このエラーを回避するには、次のコマンドで、ファイルを保存してください: > :write -もう一つは今までの編集結果を破棄して、強制的に新しいファイルを開く方法です。 -これには強制文字(!)を使います。 > +あるいは、変更を破棄して、新しいファイルを開くこともできます。(!) 文字を使って +ください: > :edit! foo.txt -現在編集中のファイルの変更の書き込みはまだしたくないけれど、他のファイルの編 -集は行いたい、といった場合は現ファイルを隠すことができます。 > +ファイルの変更を保存せずに他のファイルを開きたい場合は、ファイルを隠す方法もあ +ります: > :hide edit foo.txt -変更のあったファイルはメモリ上に残っていますが、画面では見えません。この詳細 -はバッファリスト(|22.4|)の節で説明します。 +ファイルの変更はまだ破棄されませんが、ファイルは画面外に隠れてしまいます。詳し +くは|22.4|バッファリスト で説明します。 ============================================================================== -*07.2* ファイル一覧 +*07.2* ファイルのリスト -vimは起動時に編集対象となるファイルを複数指定できます。例えばこのようにしま -す。 > +Vim を起動するときに、複数のファイルを指定することができます。例: > vim one.c two.c three.c -このコマンドはvimに3つのファイルを編集しようとしていることを伝えます。vimは -起動すると、1つ目ファイル(one.c)だけを表示します。このファイルの編集が終わ -り、次のファイル(two.c)を編集するにはこのコマンドを使います。 > +このコマンドは Vim を起動し、三つのファイルを開くように指示しています。Vim は +一つ目のファイル (one.c) だけを表示します。このファイルの編集が終わり、次の +ファイル (two.c) を編集するにはこのコマンドを使います。 > :next -現在のファイルでの変更を保存していない場合は、エラーメッセージを表示し":next" -コマンドを実行しません。前節で述べた":edit"の場合と同じです。保存せずに強制 -的に次のファイルを開くのはこのコマンドです。 > +ファイルの変更が保存されていない場合は、エラーメッセージが表示され、":next" コ +マンドは中断されます。前節で述べた ":edit" の場合と同じです。変更を破棄するに +は次のコマンドを使います。 > :next! -でも、たいていは変更を保存してから次のファイルを開くことでしょう。ですので、 -そのための特別コマンドを用意しています。 > +でも、たいていは変更を保存してから次のファイルを開くことでしょう。それには専用 +のコマンドが用意されています。 > :wnext -これは次の2つのコマンドを使うのと同じ結果となります。 > +これは次の二つのコマンドを使うのと同じ結果となります。 > :write :next @@ -99,19 +97,19 @@ vimは起動時に編集対象となるファイルを複数指定できます 私はドコにいるの? ------------------ -今編集しているのが引数リスト中のどのファイルなのかは、ウィンドウタイトルを見 -ればわかります。そこに"(2 of 3)"のような表示があります。これは全部で3つの -ファイルがあり、今は2つ目を編集しているという意味です。 -ファイルの一覧を見るのは、このコマンドです。 > +今編集しているのが引数リスト中のどのファイルなのかは、ウィンドウタイトルを見れ +ばわかります。そこに "(2 of 3)" のような表示があります。この場合は全部で三つの +ファイルがあり、今は二つ目を編集しているという意味です。 +次のコマンドでファイルの一覧を表示できます: > :args -これは"arguments"の省略形です。この結果は次のように表示されます。 +これは "arguments" の省略形です。結果は次のように表示されます。 one.c [two.c] three.c ~ -ここではvim起動時に指定したファイルリストを表示します。編集中のファイル(ここ -では"two.c")は[ ]記号で囲んで表示します。 +Vim を起動したときに指定したファイルが表示されます。編集中のファイル (ここでは +"two.c") は [] 記号で囲んで表示されます。 他のファイルへの移動 @@ -121,23 +119,22 @@ vimは起動時に編集対象となるファイルを複数指定できます :previous -これは":next"コマンドに似ています。違うのは移動する方向です。繰り返しになり -ますが、このコマンドにもファイル保存してから移動したい時の省略コマンドがあり -ます。 > +":next" コマンドと同じ動作ですが、移動する方向が違います。このコマンドにも、 +ファイル保存してから移動する専用のコマンドがあります。 > :wprevious -一覧の最後のファイルに移動するコマンドもあります。 > +一覧の最後のファイルに移動するには次のコマンドを使います。 > :last -逆に最初のファイルに戻るコマンドもあります。 > +最初のファイルに戻るには次のコマンドです。 > :first -でも、":wlast"とか":wfirst"はありません。 +":wlast" とか ":wfirst" みたいなコマンドはありません。 -":next"と":previous"についてはカウンタが指定できます。例えば、2ファイル先に +":next" と ":previous" にはカウンタを指定できます。例えば、二つ先のファイルに 進むにはこのようにします。 > :2next @@ -146,13 +143,14 @@ vimは起動時に編集対象となるファイルを複数指定できます 自動保存 -------- -ファイル内を動いて変更を加えた場合は、":write"を忘れてはいけません。そうで -ないとエラーメッセージが表示されます。変更部分を常にファイルに保存したいのな -ら、次のコマンドでvimに自動的に保存するように指示できます。 > +いろんなファイルを編集して回るときには、":write" で保存するのを忘れないでくだ +さい。変更を保存せずに移動しようとすると、エラーメッセージが表示されます。移動 +するときはいつでも変更を保存したいと思った場合は、次のように設定してください。 +変更が自動的に保存されるようになります。 > :set autowrite -保存して欲しくないファイルを編集する時はこれをoffに戻します。 > +保存して欲しくないファイルを編集するときは、機能をオフに設定してください。 > :set noautowrite @@ -160,8 +158,8 @@ vimは起動時に編集対象となるファイルを複数指定できます 他のファイルリストで編集する ---------------------------- -vimを終了、再起動しなくてもファイルリストは再定義できます。次のコマンドを使 -えば、編集対象のファイルを他のものに変更できます。 > +Vim を再起動しなくても、ファイルリストを変更できます。例えば、他の三つのファイ +ルを編集するには次のようにします。 > :args five.c six.c seven.h @@ -169,107 +167,101 @@ vimを終了、再起動しなくてもファイルリストは再定義でき :args *.txt -vimはリストの最初のファイルを読み込みます。繰り返しになりますが、現在のファ -イルを変更してれば、それを保存することもできますし、":args!"(!が付いてい -ます)で変更を放棄することもできます。 +リストの最初のファイルがまず開かれます。ここでも、現在のファイルの変更をまだ保 +存していない場合は、ファイルを保存するか、":args!" (! が付いています) を使って +変更を破棄してください。 最後のファイルまで編集した? ---------------------------- *arglist-quit* -ファイルリストを使うと、vimは全ファイルが編集対象だ、と考えます。利用者が間 -違って(ファイルが残っているのに)終わることがないように、リストの最後のファイ -ルを開くまでは、次のエラーメッセージを表示します。 +ファイルリストが使われると、Vim は、すべてのファイルが編集対象だと判断します。 +間違って Vim を終了してしまうことがないように、最後のファイルをまだ開いていな +いのに終了しようとした場合は、エラーメッセージを表示します。 - E173: 46 more files to edit ~ -JP: E173: 編集すべきファイルがあと 46 個あります。 ~ + E173: 編集すべきファイルがあと 46 個あります。 ~ -本当に終わってよければ、もう一度終了コマンドを実行すると終了できます。(ただ -し、途中に他のコマンドを実行しない場合に限ります) +本当に終了してよければ、もう一度終了コマンドを実行してください。こんどは終了で +きます (間に他のコマンドを挟まないでください)。 ============================================================================== *07.3* ファイルからファイルへのジャンプ -2つのファイル間を素早く移動するには、CTRL-^("^"はASCIIキーボードなら6の上 -です)を押します。例を示します。 -訳注: ※JISのキーボードでは'-'の右側にあります。 -訳注: 私見ですが、viはASCII配列で使う方が幸せになれると思います。 -訳注: 例えば、マークジャンプ(')やオリジナルviでの挿入モードでの行キャン -訳注: セル(@)などはJIS配列ではとても使いにくく感じていました。 -> +CTRL-^ を使うと二つのファイル間を素早く移動できます(日本語キーボードなら ^ は +'-' キーの右側 (「へ」キー) にあります)。例: > + :args one.c two.c three.c -上を実行すると1つ目の"one.c"が開きます。 > +上を実行すると "one.c" が開きます。 > :next -これで、"two.c"になりました。ここでCTRL-^を使うと"one.c"に戻ります。もう一度 -CTRL-^を押すと、"two.c"に戻ります。さらにCTRL-^を使うと"one.c"となります。 -さて、ここで次のコマンドを実行します。 > +これで、"two.c" になりました。ここで CTRL-^ を使うと "one.c" に戻ります。もう +一度 CTRL-^ を押すと "two.c" に戻ります。さらに CTRL-^ を使うと "one.c" になり +ます。さて、ここで次のコマンドを実行します。 > :next -これで"three.c"になります。CTRL-^コマンドはファイルリスト中での場所は変更し -ません。それを変更できるのは":next"や":previous"だけです。 +すると、"three.c" になります。CTRL-^ コマンドはファイルリスト中での現在地を変 +更しません。":next" や ":previous" のようなコマンドだけが現在地を変更します。 -以前に編集したファイルは補欠ファイル("alternate" file)と呼びます。vimの起動 -直後は CTRL-^は動きません。これは補欠ファイルがまだないからです。 +直前に編集していたファイルのことを 代替ファイル ("alternate" file) と言います。 +Vim の起動直後は代替ファイルがまだないため CTRL-^ は動作しません。 -定義済のマーク --------------- +定義済マーク +------------ -他のファイルにジャンプすると、2つの定義済のマークが使えるようになります。 -これは非常に便利です。 > +他のファイルにジャンプすると、二つの定義済マークが使えるようになります。これは +非常に便利です。 > `" -このコマンドは前のファイルから動いた時のカーソル位置に戻します。 -もう1つのマークは最後に変更を加えた場所です。 > +このコマンドを実行すると、以前にファイルを開いていたときにいた場所にカーソルが +移動します。もう一つは、最後に変更を加えた場所を覚えているマークです。 > `. -"one.txt"を編集していて、ファイルのある場所で"x"を使って文字を削除したとし -ます。その後、"G"で最終行に移動して":w"でファイルを保存します。その後いく -つかのファイルを編集してから、":edit one.txt"を使って戻ってきたとします。こ -こで、 - `" ファイルの末尾にジャンプ。 - `. "x"を使って文字を削除した場所にジャンプ。 -となります。 -`" と `. はさらに変更を加えて、別ファイルにジャンプしない限り変化しません。 +例えば、"one.txt" を編集しているとします。ファイルの真ん中あたりで "x" を使っ +て文字を削除しました。そして、"G" を使って最後の行に移動し、":w" でファイルを +保存します。他のファイルをいくつか編集してから、":edit one.txt" で "one.txt" +に戻ってきました。ここで、 `" を実行すると、ファイルの最後の行にカーソルが移動 +します。`. を実行すると、文字を削除した場所に移動します。ファイル内をいろいろ +と移動した後でも、`" と `. は同じ場所を覚えています。少なくとも、他の変更を加 +えたり、別のファイルに移動したりするまでは。 ファイルマーク -------------- -4章(|4.1|)では"mx"でマークを付け、"`x"でその場所にジャンプする方法を述べま -した。このマークはそのファイルの編集中だけ使えます。別のファイルを開いて、そ -れに同じマークを付けても、マークはそのファイルに固有のものとなります。つまり -各ファイルは各々一組のマークを持っていて、ファイル内に閉じているということで -す。 -ここまでマークには小文字を使ってきました。ですが、大文字のマークも用意されて -います。大文字のマークはグローバルで、どのファイルからでも使えます。例えば -"foo.txt"というファイルの編集中に"50%"コマンドでファイルの真ん中にジャンプ -して、そこにF(大文字のf)というマークを付けたとします。 > +4 章 (|4.1|) では "mx" でマークを付け、"`x" でその場所にジャンプする方法を説明 +しました。そのマークはそのファイルの中だけで使えます。別のファイルを開いて、そ +れに同じマークを付けても、マークはそのファイルに固有のものとなります。つまり各 +ファイルは各々一組のマークを持っていて、ファイル内に閉じているということです。 +いままでは、マークに小文字を使ってきましたが、大文字のマークも使えます。 +大文字のマークはグローバルで、どのファイルからでも使えます。例えば "foo.txt" +というファイルを開き、"50%" コマンドでファイルの真ん中にジャンプして、そこに F +というマークを付けたとします。 > 50%mF -次に"bar.txt"を編集して最終行にマーク B を付けます。 +次に "bar.txt" を開き、最終行にマーク B を付けます。 > GmB -さて、ここで"'F"コマンドを使うと、いきなりfoo.txtの真ん中にジャンプします。 -もちろん"bat.txt"内で"'B"を入力すると、bar.txt の行末にも移動できます。 +さて、ここで "'F" コマンドを使うと、いきなり foo.txt の真ん中にジャンプできま +す。さらに、他のファイルを開いてから、"'B" を入力すると、bar.txt の行末に移動 +できます。 -ファイルマークは他の場所に設定し直さない限り、ずっと覚えてくれています。です -から一度マークを付ければ、何時間も編集を行ってからでもそのマークに戻って来るこ -とができるのです。 -マーク名にはマークを付けた場所から連想できるような単純なルールを決めておくと -よいでしょう。例えば、ヘッダファイルは H 、makeファイルは M 、Cのソースには -Cといった具合です。 +他の場所を設定するまで、ファイルマークは同じ場所を記憶しています。そのため、一 +度マークを付ければ、何時間も編集を行ってからでもそのマークに戻って来ることがで +きます。 +マークの文字とマークを付けた場所が連想できるような単純なルールを決めておくとよ +いでしょう。例えば、ヘッダファイルは H 、makeファイルは M 、C 言語のソースには +C といった具合です。 -あるマークがどこに定義されているかを見たければ、":marks"コマンドの引数にマー -クを指定します。 > +マークが置いてある場所を確認するには、":marks" コマンドにそのマークを指定して +ください。 > :marks M @@ -277,189 +269,183 @@ Cといった具合です。 :marks MCP -マークを付けていなくても CTRL-O と CTRL-I を使えば、古い場所と新しい場所の間 -をジャンプできることをお忘れなく。 +マークを使わなくても、CTRL-O と CTRL-I を使えば、古い場所と新しい場所の間を +ジャンプできることをお忘れなく。 ============================================================================== *07.4* バックアップファイル -通常vimはバックアップファイルを作成しません。しかしバックアップが必要なら次 -のコマンドを実行するだけです。 > +初期設定ではバックアップファイルは作成されません。バックアップファイルが必要な +ら、次のコマンドを実行してください: > :set backup -バックアップファイルは元のファイル名の後ろに"~"を加えた名前になります。 -ファイル名が、"data.txt"であれば、バックアップファイル名は"data.txt~"となり -ます。 - ~で終わるのが好みでなければ、このように変更できます。 > +バックアップファイルの名前は、ファイル名の後ろに ~ を加えた名前になります。 +例えば、ファイル名が data.txt なら、バックアップファイルは data.txt~ です。 + ~ 以外の文字を使いたい場合は、次のように設定してください: > :set backupext=.bak -上のように設定するとバックアップファイルは"data.txt~"ではなく"data.txt.bak" -になります。 -もう一つのオプション'backupdir'にも触れておきましょう。これはバックアップ -ファイルを作るディレクトリを指定するオプションです。デフォルトではバックアッ -プは元ファイルと同じディレクトリに作られます。たいていの場合はこれで問題ない -はずです。 +これで、バックアップファイルの名前が data.txt.bak になります。 +もう一つのオプション 'backupdir' にも触れておきましょう。これはバックアップ +ファイルを保存するディレクトリを指定するオプションです。初期設定ではバックアッ +プは元ファイルと同じディレクトリに保存されますが、たいていの場合はこれで問題な +いはずです。 Note: - 'backup'オプションがoffで、'writebackup'がonの場合、vimはバックアップ - を作ります。ただしそのバックアップは正常にファイルへの保存が行われた - 時に削除されます。この機能は何らかの理由(例えば、ディスクがいっぱい - になったというのが一番ありがちな理由です。雷にやられるというのも可能 - 性は低いですがありうることです)で書き込み処理に失敗した時、オリジナ - ルファイルを失ってしまう危険を回避するための機能なのです。 + 'writebackup' がオンの場合、'backup' がオフでもバックアップファイルは + 作成されますが、ファイルの保存が成功すると、そのバックアップファイルは + すぐに削除されます。これは、ファイルを保存できなかったときに、オリジナ + ルファイルが失われないようにするための機能です。(失敗の原因は、例え + ば、ディスクがいっぱいになったというのが一番ありがちな理由です。雷にや + られるというのも可能性は低いですがありうることです)。 -オリジナルファイルの保全 +オリジナルファイルを残す ------------------------ -ソースファイルの編集などで、変更を加える前のファイルを残しておきたい時もあり -ます。しかし、バックアップファイルはファイルを保存する都度に上書きされますか -ら、直前のバックアップしか残らず、最初のファイルはなくなってしまいます。 -変更前のファイルを残しておく場合は、'patchmode'オプションを設定します。これ -には変更を加える前のファイルバックアップ用の拡張子を指定します。普通はこのよ -うに指定します。 > +ソースファイルを編集していると、変更を加える前のファイルを残しておきたいときが +あります。しかし、バックアップファイルはファイルを保存するたびに上書きされるの +で、直前のバックアップしか残らず、最初のファイルはなくなってしまいます。 +オリジナルのファイルを残しておきたい場合は、'patchmode' オプションを設定してく +ださい。バックアップファイルを最初に作成するときに使う拡張子を指定します。次の +ように設定してください: > :set patchmode=.orig -data.txtを開いて編集をし、最初にファイルを保存しようとした時に、vimは変更前 -のファイルを"data.txt.orig"という名前にして保全してくれます。 -さらにファイルに変更を加えても、既に"data.txt.orig"があるので、そのままにし -て上書きはしません。この場合もバックアップは"data.txt~"(もしくは'backupext' -で指定された名前)で作成されます。 -'patchmode'が空のまま(これがデフォルト)だと、変更前ファイルを残しません。 +例えば、はじめて data.txt を開いたときに、変更を加え、保存しようとすると、変更 +前のファイルが "data.txt.orig" という名前でコピーされます。 +その後、ファイルを変更しても、既に "data.txt.orig" があるので、上書きはされま +せん。この場合もバックアップファイルは "data.txt~" (もしくは 'backupext' で指 +定した名前) で作成されます。 +'patchmode' が空のまま (初期設定) だと、オリジナルファイルは残りません。 ============================================================================== -*07.5* ファイル間での文字列のコピー +*07.5* 他のファイルにテキストをコピーする + +ここではファイルから別のファイルにテキストをコピーする方法を説明します。簡単な +例で始めましょう。コピーしたいテキストを含んでいるファイルを開きます。テキスト +の先頭にカーソルを移動して "v" を押します。ビジュアルモードが開始しました。テ +キストの末尾までカーソルを移動して "y" を押します。これでテキストがヤンク (コ +ピー) されました。 -ここではファイルから別のファイルに文字列をコピーする方法を説明します。簡単な -例で始めましょう。まずコピーしたい文字列を含んだファイルを編集中とします。 -カーソルを対象となる文字列の先頭に動かして"v"を押します。visualモードに入り -ますので、カーソルを対象文字列の末尾に動かして"y"を押します。これで対象をヤン -ク(いわゆるコピー)しました。 -例えばこの上の段落をコピーしたければ次のようにします。 > +例えば、上の段落をコピーするには、次のようにします。 > :edit thisfile /ここでは - vjjjjj$y + vjjjj$y -次にこのテキストをプット(ペースト)したいファイルを編集します。文字列をプット -したい場所にカーソルを動かし、"p"コマンドでプットします。 > +次に、このテキストをプット (ペースト) したいファイルを開きます。テキストをプッ +トしたい場所にカーソルを動かし、"p" コマンドでプットします。 > :edit otherfile /どこか p -当然ながら、文字列のヤンクには他にもいろんなコマンドが使えます。例えば、行 -全体を選択したければ、"V"で行単位のビジュアルモードを使えますし、矩形の選択 -ならCTRL-Vを使っても構いません。"Y"で1行のヤンクを使ってもいいですし、"yaw" -で単語をヤンクするなど、何でもOKです。 -"p"コマンドはカーソルの後に文字列をプットします。カーソルの前にプットしたけ -れば、 "P"を使います。なお、vimは行単位でヤンクしたのかブロック単位なのかを -覚えています。行単位でヤンクしたのならプットも行単位ですし、ブロック単位で -ヤンクしたのならプットもブロック単位です。 +当然ながら、テキストのヤンクには他にもいろんなコマンドが使えます。例えば、"V" +でビジュアルモードを開始すると行単位で選択できますし、CTRL-V で矩形選択もでき +ます。"Y" で一行をヤンクしたり、"yaw"で単語をヤンク (yank-a-word) するなど、い +ろいろできます。 +"p" コマンドはカーソルの後にテキストをプットします。カーソルの前にプットするに +は "P" を使います。Vim はヤンクしたときの選択単位 (行選択や矩形選択) を覚えて +いて、同じ単位でプットします。 -レジスタの使用 +レジスタを使う -------------- -あるファイルから別のファイルに複数の文字列をコピーしたい場合、手間ひまをかけ -て何度も何度もファイルを切り換えなければなりません。これを避けるには、各文 -字列をレジスタにコピーします。 -レジスタというのはvimが文字列を保持する場所です。レジスタには a ~ z の名前 -がついていています(実はこれ以外にもあるのですが、それは後程)。では文字列をレ -ジスタ f (fはfirstのつもり)にヤンクしてみましょう。 > +あるファイルから別のファイルに数箇所のテキストをコピーしたいとき、何度も何度も +ファイルを切り換えると時間がかかります。テキストをレジスタにコピーして手間を省 +きましょう。 +レジスタとは、Vim がテキストを保持する場所です。ここでは a から z までの名前が +付いたレジスタを使います (レジスタは他にもあります)。では、テキストをレジスタ +f (fはfirstのつもり) にヤンクしてみましょう。 > "fyas -"yas"コマンドで文をヤンクします。"f はその文字列をレジスタ f に入れるための +"yas" コマンドで文をヤンクしています。"f はテキストをレジスタ f に入れるための 指定です。この指定はヤンクコマンドの直前に指定します。 -さらに3行をレジスタ l (lはlineのつもり)にヤンクしてみましょう。 > +さらに三行をレジスタ l (lはlineのつもり) にヤンクしてみましょう。 > "l3Y -カウンタ(回数指定)は "l の直前に指定しても構いません。 -また、ブロック単位の文字列をレジスタ b (bはblockのつもり)にヤンクする場合は -このようにします。 > +カウンタ (回数指定) は "l の直前に指定することもできます。テキストのブロック +(矩形選択) をレジスタ b (bはblockのつもり) にヤンクする場合は次のようにしま +す。 > CTRL-Vjjww"by -この場合でもレジスタ指定 "b を"y"コマンドの直前で指定している点に注意してく -ださい。これは必須事項です。これを"w"コマンドより前に置いてしまうとうまく動 -きません。 -さて、この時点でレジスタ f,l,b の3つにそれぞれ文字列が格納されました。 -ここで別のファイルを開いて、目的の場所に動いてからレジスタ内容をプットしま -す。 > +レジスタ指定 "b を "y" コマンドの直前で指定している点に注意してください。これ +は重要なことです。これを "w" コマンドより前に置いてしまうとうまく動きません。 +さて、f、l、b の三つのレジスタにテキストをヤンクできました。他のファイルを開い +て、テキストを挿入したい場所にカーソルを移動し、レジスタの内容をプットしましょ +う。 > "fp -ヤンクの場合と同じく、レジスタ指定"f は"p"コマンドより前でなければなりませ -ん。どのレジスタからプットしても構いません。他の文字列をヤンクし直さない限り -レジスタの内容は変化しません。ですから、同じレジスタの内容を何度でも好きなだ -けプットできます。 +ヤンクの場合と同じく、レジスタ指定 "f は "p" コマンドより前に指定します。 +どのレジスタからプットしても構いません。他のテキストをヤンクし直さない限り、レ +ジスタの内容は変わらないので、同じレジスタを何度でも好きなだけプットできます。 -ヤンク時だけでなく、削除の時もレジスタが使えます。これを使うと、複数の文字列 -を好きなように移動できます。例えば単語を削除しその内容をレジスタ w に入れるに -はこのようにします。 > +テキストを削除するときにも、レジスタを指定できます。テキストを何ヶ所か移動する +ときなどに使ってください。例えば、単語を削除 (delete-a-word) してその内容をレ +ジスタ w に入れるには次のようにします。 > "wdaw -繰り返しですが、レジスタ指定は削除コマンドの前に置いてください。 +何度も言うようですが、レジスタ指定は削除コマンド "d" の前に置いてください。 ファイルに追記する ------------------ -編集中の文章を他のファイルにまとめたい場合は、このコマンドを使います。 > +文章を一つのファイルにまとめたい場合は、次のコマンドを使います。 > :write >> logfile -これは編集中のファイル内容を"logfile"に追記します。これを使うと、1)コピーし -たい範囲を選択してヤンクし、2)"logfile"を開き、3)末尾にプットするという手間 -をかけなくて済みます。ただし、ファイルの末尾への追加しかできません。 -数行程度を追記したければ、visualモードでそれを選択してから":write"を実行し -ます。行範囲の選択方法は、10章でいろいろと説明します。 +これは編集中のファイルの内容を "logfile" の末尾に追記します。テキストをコピー +して、"logfile" を開き、テキストをプットする手間が省けます。つまり、作業を 2 +手節約できます。ただし、ファイルの末尾への追加しかできません。 +ファイルの一部だけ追記したい場合は、ビジュアルモードでテキストを選択してから +":write" を実行してください。テキストを選択する方法は他にもありますが、10 章で +説明します。 ============================================================================== *07.6* 読み込み専用モード -ファイルの内容は見たいけれど、変更や保存はしたくないというケースもあります。 -ですが、うっかり":w"を実行してしまうと元のファイルに上書きされます。これは -危険です。これを避けるためファイルの読み込み専用モードを用意しています。 -vimを読み込み専用モードで起動するにはこのコマンドを使います。 > +ファイルを変更する気はなく、ただファイルの内容を見たいだけのときがあります。普 +通に開くと、うっかり ":w" を実行して元のファイルを上書きしてしまう危険がありま +す。そういうときは、読み込み専用モードでファイルを開いてください。 +Vim を読み込み専用モードで起動するには、次のコマンドを使います。 > vim -R file -Unix上なら、次のコマンドも同じ意味になります。 > +Unix なら、次のコマンドも同じ意味になります。 > view file -これで"file"を読み込み専用モードで編集できます。":w"をしようとすると、エラー -メッセージが表示され、保存は行われません。 -また、ファイルに変更を加えようとすると、vimは次のような警告を表示します。 +これで "file" が読み込み専用モードで開きます。":w" をしようとしても、エラー +メッセージが表示され保存はされません。 +ファイルに変更を加えようとすると、Vim は次のような警告を表示します。 - W10: Warning: Changing a readonly file ~ -JP: W10: 警告:読込専用ファイルを変更します ~ + W10: 警告:読込専用ファイルを変更します ~ -警告は出ますが、変更は可能です。これは例えば、内容を読み易くするためにフォー -マットを整えるといったことを許すためです。 -読み込み専用モードであることを忘れて、(保存したいような)変更を加えてしまった -場合でも保存はできます。writeコマンドに ! を付けて強制保存してください。 +警告は出ますが、変更は可能です。これは、例えばファイルを読みやすくするために、 +フォーマットできるようにするためです。 +読み込み専用モードであることを忘れて、ファイルを修正してしまったようなときは、 +write コマンドに ! を付けて強制保存してください。 -完全にファイルの変更を禁止したい時は、このようにします。 > +完全にファイルの変更を禁止したい場合は、次のようにしてください。 > vim -M file -これで内容を変更しようとしてもエラーになります。例えばヘルプファイルを表示す -る時はこのモードになります。変更しようとすると、次のエラーメッセージが表示さ -れます。 +これで、内容を変更しようとしてもエラーになります。例えば、ヘルプファイルはこの +モードで表示されています。変更しようとすると、次のエラーメッセージが表示されま +す。 - E21: Cannot make changes, 'modifiable' is off ~ -JP: E21: 'modifiable'がオフなので、変更できません ~ + E21: 'modifiable'がオフなので、変更できません ~ -vimを閲覧モードで動くように設定したければ-M を引数に与えます。とはいってもこ -れは自主規制みたいなものですから、次のコマンドを使えばプロテクトははずれてし -まいます。 > +-M 引数を使えば Vim を閲覧モードに設定できますが、これは自主規制みたいなもの +で、次のコマンドを使えば制限はなくなってしまいます。 > :set modifiable :set write @@ -467,34 +453,33 @@ vimを閲覧モードで動くように設定したければ-M を引数に与 ============================================================================== *07.7* ファイル名の変更 -新たなファイルの作成時に既存ファイルから必要な部分を抜き出して作るというやり -方があります。例えばファイル名を変更するプログラムを作りたいとしましょう。 -もし以前に作ったファイルコピーのプログラムがあれば、それを流用したいですよね。 -> +新しいファイルを作成するときに、目的に近いファイルがあるなら、それを使うのが効 +率的です。例えば、ファイルを移動するプログラムを作りたいとしましょう。ファイル +をコピーするプログラムがすでにあるので、それを流用することにしました。 > + :edit copy.c -新しいプログラムに不必要な部分は削除してしまいましょう。次に、このファイルに -新しい名前を付けましょう。そのためのコマンドが":saveas"です。 > +新しいプログラムに必要ない部分は削除してしまいましょう。次に、このファイルを新 +しい名前で保存する必要があります。そのためのコマンドが ":saveas" です。 > :saveas move.c -vimは内容を指定のファイル名で保存し、編集中のファイルもその名前にします。 -ですから次に":write"した時も"move.c"に上書き保存され、"copy.c"は変更されずに -残ります。 -保存しないで編集中のファイル名だけを変更する場合は、次のコマンドを使います。 > +指定した名前でファイルが保存され、そのファイルが開かれます。そのため、次に +":write" したときは "move.c" に保存されます。"copy.c" は変更されません。ファイ +ルを保存せずに、ファイルの名前だけ変更したい場合は、次のコマンドを使います。 > :file move.c -vimはこのファイルを"未編集"として扱います。これは編集開始時とは違うファイル -となっているためです。ファイルを保存しようとすると、次のようなメッセージが -表示される場合があります。 +そのファイル (move.c) は、実際のファイルではないので、"開いていない" (not +edited) 扱いになります。ファイルを保存しようとすると、次のメッセージが表示され +ることがあります。 - E13: File exists (use ! to override) ~ + E13: ファイルが存在します (! を追加で上書) ~ -これは間違って他のファイルに上書きしてしまうのを防ぐための防護策です。 +これは、実際のファイルを間違って上書きしてしまわないようにするためです。 ============================================================================== -Next chapter: |usr_08.txt| ウィンドウの分割 +次章: |usr_08.txt| ウィンドウの分割 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_08.jax b/ja/usr_08.jax index 0f120944e..8c83d484e 100644 --- a/ja/usr_08.jax +++ b/ja/usr_08.jax @@ -1,8 +1,8 @@ COMMENT: ウィンドウ分割(複数のファイルを表示する) -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> -*usr_08.txt* For Vim version 6.3. Last change: 2004 Jun 04 +*usr_08.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM USER MANUAL - by Bram Moolenaar @@ -14,17 +14,18 @@ TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> ウィンドウ分割を使えばどれもできてしまいます。 |08.1| ウィンドウの分割 -|08.2| 他のファイルでウィンドウを分割 +|08.2| ウィンドウを分割してファイルを開く |08.3| ウィンドウのサイズ |08.4| 縦分割 |08.5| ウィンドウの移動 |08.6| 全ウィンドウに対するコマンド -|08.7| vimdiffで差分を見る +|08.7| vimdiff で差分を表示する |08.8| その他 +|08.9| タブページ - Next chapter: |usr_09.txt| GUIを使う - Previous chapter: |usr_07.txt| 2つ以上のファイルを扱う -Table of contents: |usr_toc.txt| +次章: |usr_09.txt| GUI を使う +前章: |usr_07.txt| 複数のファイルを開く +目次: |usr_toc.txt| ============================================================================== *08.1* ウィンドウの分割 @@ -33,8 +34,7 @@ Table of contents: |usr_toc.txt| :split -このコマンドは画面を2つのウィンドウに割って、カーソルを上側のウィンドウに -置きます。 +画面が2つのウィンドウに分割されます。カーソルは上側のウィンドウに置かれます。 +----------------------------------+ |/* file one.c */ | @@ -47,17 +47,17 @@ Table of contents: |usr_toc.txt| | | +----------------------------------+ -画面には同じファイルが両方のウィンドウに表示されます。 "===="のラインは -ステータス行で、各ウィンドウの一番下にあってそのウィンドウの情報を表示しま -す。(実際にはステータス行は反転表示になります) +二つのウィンドウに同じファイルが表示されています。"====" のラインはステータス +行です。各ウィンドウの一番下にあってそのウィンドウの情報を表示します。(実際に +はステータス行は反転表示になります) 各ウィンドウには同じファイルの違う場所を表示できます。例えば、上側のウィンド ウにはプログラムの変数宣言部を表示し、下の方にはその変数を使っている箇所を 表示させる、といったことができます。 -CTRL-W w コマンドでウィンドウ間をジャンプできます。上側のウィンドウにカーソ -ルがある時にCTRL-W w を押すとその下のウィンドウにジャンプします。一番下の -ウィンドウにカーソルがある時は一番上のウィンドウに戻ります。(CTRL-W CTRL-Wも -同じですから、ちょっとだけCTRLキーを離すのが遅くても大丈夫です) +CTRL-W w コマンドでウィンドウ間をジャンプできます。上側のウィンドウにカーソル +がある時に CTRL-W w を押すとその下のウィンドウにジャンプします。一番下のウィン +ドウにカーソルがある時は一番上のウィンドウに戻ります。(CTRL-W CTRL-W も同じ動 +作をするので、CTRL キーを離すのがちょっと遅れても大丈夫です) ウィンドウを閉じる @@ -67,30 +67,32 @@ CTRL-W w コマンドでウィンドウ間をジャンプできます。上側 :close -":quit"とか"ZZ"のようなファイル編集の終了コマンドはどんな場合でも使えます。 -が、":close"では最後のウィンドウを閉じることができません。これは間違ってvim -を終了しないための防止策です。 +":quit" や "ZZ" のようなファイルを閉じるコマンドでもウィンドウを閉じることがで +きますが、":close" を使えば、最後のウィンドウを閉じて Vim を終了してしまうよう +な間違いを防げます。 他ウィンドウを全部閉じる ------------------------ -いくつものウィンドウを開いていて、今だけは1つに集中したいと思った場合は、 -次のコマンドが便利です。 > +ウィンドウをたくさん開いたときに、どれか一つのウィンドウに集中したいと思った場 +合は、次のコマンドが便利です。 > :only -これはカーソルのあるウィンドウ以外を全部閉じます。他のウィンドウで変更がある -場合には、エラーメッセージが表示され、ウィンドウも閉じません。 +カーソルのあるウィンドウを残して全てのウィンドウが閉じます。他のウィンドウに保 +存されていない変更がある場合には、エラーメッセージが表示され、そのウィンドウは +閉じません。 ============================================================================== -*08.2* 他のファイルでウィンドウを分割 +*08.2* ウィンドウを分割してファイルを開く + +次のコマンドを実行すると、2つ目のウィンドウが開き、指定されたファイルの編集が +開始されます。 > -下のコマンドは2つ目のウィンドウを開き、指定のファイルの編集を始めます。 -> :split two.c -one.cを編集している場合だと、結果は次のようになります。 +例えば、one.c を編集していたなら、結果は次のようになります。 +----------------------------------+ |/* file two.c */ | @@ -103,75 +105,74 @@ one.cを編集している場合だと、結果は次のようになります。 | | +----------------------------------+ -新規の空ファイルのウィンドウを開くのは次のコマンドです。 +新しいウィンドウに新規ファイルを開くには、次のコマンドを使います。 > :new -":split"や":new"コマンドは作りたいウィンドウの数だけ繰り返し実行できます。 +":split" や ":new" コマンドを使って好きなだけウィンドウを作成できます。 ============================================================================== *08.3* ウィンドウのサイズ -":split"コマンドは数値を引数として取れます。その値は新しいウィンドウの高さと -なります。例えば、次のコマンドは3行分の高さのウィンドウを開き、そこでalpha.c -の編集を始めます。 > +":split" コマンドは数値を引数として取れます。その値は新しいウィンドウの高さと +なります。例えば、次のコマンドは3行分の高さのウィンドウを作成し、alpha.c を開 +きます。 > :3split alpha.c -既存のウィンドウでもいくつかの方法でサイズを変更できます。マウスがあれば話 -は簡単です。ウィンドウを分割しているステータス行にマウスを動かし、上下にド -ラッグしてください。 +ウィンドウのサイズを変更する方法はいくつかあります。マウスが使えれば話は簡単で +す。ウィンドウを分割しているステータス行にマウスを動かし、上下にドラッグしてく +ださい。 -ウィンドウサイズを増やすには、 > +ウィンドウを大きくするには次のようにします: > CTRL-W + -逆に減らすには、 > +小さくするには次のようにします: > CTRL-W - -です。どちらのコマンドも数値を引数として取り、その行数分、ウィンドウサイズを -増減します。ですから、"4CTRL-W+"はウィンドウを4行分大きくします。 +どちらのコマンドも数値を引数として取り、その行数分、ウィンドウサイズを増減しま +す。つまり、"4 CTRL-W +" ならウィンドウが4行分大きくなります。 -ウィンドウの高さを指定の行数とするのは次のコマンドです。 > +ウィンドウの高さを明示的に指定するには次のコマンドを使います: > {height}CTRL-W _ -これは{height}、CTRL-W、_(アンダースコア)です。 -ウィンドウを最大限まで大きくするには、CTRL-W _ コマンドを数値指定なしで実行 -します。 +{height} に数値を指定し、CTRL-W と _ (アンダースコア) を入力します。 +ウィンドウを最大まで大きくするには、CTRL-W _ コマンドを数値指定なしで実行して +ください。 -USING THE MOUSE [マウスを使う] +マウスを使う -vimは様々なことをキーボードから極めて素早く行うことができます。残念ながら、 -上で述べたウィンドウのサイズ変更コマンドは多少のタイピングが必要となりま -す。この場合、マウスを使う方が早いでしょう。マウスポインタをステータス行に -合せてから左ボタンを押してドラッグをしてください。ステータス行が動き、片方 -のウィンドウが大きくなり、もう片方は小さくなります。 +Vim では様々なことをキーボードから極めて素早く操作できますが、残念ながら、ウィ +ンドウサイズを変更するのは少し面倒です。この場合、マウスを使う方が簡単です。マ +ウスポインタをステータス行に合せてから左ボタンを押してドラッグしてください。ス +テータス行が動き、片方のウィンドウが大きくなり、もう片方は小さくなります。 -関連オプション +オプション -'winheight'オプションでは希望する最小のウィンドウの高さを設定することができ、 -'winminheight'では最小のウィンドウの高さを強制することができます。 -同様に、'winwidth'オプションでは希望する最小のウィンドウの幅を設定することがで -き、'winminwidth'では最小のウィンドウの幅を強制することができます。 -'equalalways'オプションが設定されていると、ウィンドウが閉じたり開いたりするた -びに、全てのウィンドウのサイズが同じになるように調整されます。 +'winheight' オプションにはウィンドウの最小の高さ (それ以上は小さくならない) の +希望値を、'winminheight' には最小の高さの強制値を設定できます。 +同様に、'winwidth' オプションにはウィンドウの最小の幅の希望値を、'winminwidth' +には最小の幅の強制値を設定できます。 +'equalalways' オプションが設定されていると、ウィンドウを閉じたり開いたりするた +びに、全てのウィンドウのサイズが同じになります。 ============================================================================== *08.4* 縦分割 -":split"コマンドは新しいウィンドウを現在のウィンドウの上側に作ります。左側 -にウィンドウを表示させるには、 > +":split" コマンドは現在のウィンドウの上側に新しいウィンドウを作ります。ウィン +ドウを左側に作るには、次のコマンドを使います: > :vsplit -か、 > +あるいは、 > :vsplit two.c -を使います。実行後は次のようになります。 +実行後は次のようになります。 +--------------------------------------+ |/* file two.c */ |/* file one.c */ | @@ -182,24 +183,23 @@ vimは様々なことをキーボードから極めて素早く行うことが | | +--------------------------------------+ -中央の縦棒(|)は実際には反転表示されます。これを縦セパレータと呼び、左右の -ウィンドウを分割します。 +中央の縦棒 (|) は実際には反転表示されます。これは縦セパレータと呼ばれ、これに +よって左右のウィンドウが区切られます。 -また新しい空ファイル用ウィンドウを作る、":vnew"コマンドもあります。これは -次のようにしてもできます。 > +ウィンドウを縦分割して新しい空ファイルを作成する ":vnew" コマンドもあります。 +次のコマンドでも同じことができます: > :vertical new -":vertical"コマンドはウィンドウ分割のコマンドの前に指定できます。これを -指定すると、ウィンドウは水平方向ではなく、垂直方向に分割されるようになり -ます。(ウィンドウを分割しないコマンドの場合は何も変わりません) +":vertical" コマンドは、ウィンドウを分割する他のコマンドにも適用できます。これ +を指定すると、ウィンドウは横ではなく、縦に分割されるようになります。(ウィンド +ウを分割しないコマンドの場合は何も変わりません) -MOVING BETWEEN WINDOWS [ウィンドウ間の移動] +他のウィンドウへの移動 -水平方向でも垂直方向でも好きなだけウィンドウ分割できますから、ウィンドウ -を自在に配置できます。そのウィンドウ間を移動するには次のようなコマンドを -使います。 +横でも縦でも好きなようにウィンドウを分割できるので、自在にウィンドウを配置でき +ます。他のウィンドウへ移動するには次のコマンドを使います。 CTRL-W h 左側のウィンドウに移動 CTRL-W j 下側のウィンドウに移動 @@ -209,16 +209,15 @@ MOVING BETWEEN WINDOWS [ウィンドウ間の移動] CTRL-W t 一番上のウィンドウに移動 CTRL-W b 一番下のウィンドウに移動 -カーソル移動と同じ文字を使うことに気付いたことでしょう。使いたければ、 -矢印キーも同じように使えます。 -上記以外のウィンドウ間移動コマンドは|Q_wi|をご覧ください。 +カーソル移動と同じ文字を使っていることに注目してください。もちろん、矢印キーも +使うことができます。 +他のウィンドウへ移動するためのコマンドは他にもあります: |Q_wi| ============================================================================== *08.5* ウィンドウの移動 -いくつかのウィンドウに分割したが、良くない場所にあるとします。そんな場合、 -ウィンドウをどこか別の場所に動かす必要があります。例えば、このように3つの -ウィンドウがあるとします。 +ウィンドウを分割したが、配置が好ましくなかった場合、ウィンドウをどこか別の場所 +に動かしたいと思うしょう。例えば、次のように三つのウィンドウがあるとします: +----------------------------------+ |/* file two.c */ | @@ -235,16 +234,15 @@ MOVING BETWEEN WINDOWS [ウィンドウ間の移動] | | +----------------------------------+ -明らかに一番下のウィンドウが一番上にくるべきです。そのウィンドウに(CTRL-W w -を使って)移動し、次のコマンドを入力してください。 > +明らかに一番下のウィンドウが一番上にくるべきです。一番下のウィンドウに移動して +(CTRL-W w を使用)、次のコマンドを入力してください: > CTRL-W K -ここでは大文字の"K"を使います。これを実行すると、そのウィンドウが一番上に移動 -します。ここでもKが上への移動で使われていることに気が付くでしょう。 -縦分割している場合に、CTRL-W K を押すと現在のウィンドウを一番上に移動し、その -ウィンドウが横巾いっぱいまで占有するようにします。例えば、このようなレイアウ -トになっているとします。 +ここでは大文字の K を使います。これを実行すると、ウィンドウが一番上に移動しま +す。上への移動に K が使われていることに注目してください。 +縦分割しているときに CTRL-W K を使うと、ウィンドウが一番上に移動し、Vim ウィン +ドウと同じ幅になります。例えば、次のようなレイアウトになっているとします。 +-------------------------------------------+ |/* two.c */ |/* three.c */ |/* one.c */ | @@ -257,7 +255,7 @@ MOVING BETWEEN WINDOWS [ウィンドウ間の移動] | | +-------------------------------------------+ -ここでCTRL-W Kを中央のウィンドウ(three.c)で使うと、結果はこうなります。 +中央のウィンドウ (three.c) で CTRL-W K を実行すると、次のような結果になります: +-------------------------------------------+ |/* three.c */ | @@ -270,7 +268,7 @@ MOVING BETWEEN WINDOWS [ウィンドウ間の移動] | | +-------------------------------------------+ -他に同じようなコマンドが3つあります。(多分内容は推測できるでしょう) +他に同じようなコマンドが三つあります。(説明する必要はありませんね) CTRL-W H ウィンドウを左端に移動 CTRL-W J ウィンドウを下端に移動 @@ -279,41 +277,41 @@ MOVING BETWEEN WINDOWS [ウィンドウ間の移動] ============================================================================== *08.6* 全ウィンドウを対象とするコマンド -いくつかウィンドウを開いていて、vimを終わりたい場合は、個々のウィンドウを -一つづつ閉じることで終了できます。でも手っ取り早いのは次のコマンドです。 > +Vim を終了しようと思ったときに、複数のウィンドウが開いていた場合、ウィンドウを +一つずつ閉じていけば Vim を終了できますが、次のコマンドを使えばもっと速く終了 +できます。: > :qall -これは":quit all"の意味です。どれかのウィンドウに変更が加わっていれば、vimは -終了しません。カーソルは自動的に変更のあったウィンドウに移動します。":write" -を使ってそれぞれを保存することも、":quit!"でそれを破棄することもできます。 +これは "quit all" (すべて閉じる) という意味です。まだ保存していないファイルが +ある場合は、Vim は終了しません。保存していないファイルを表示しているウィンドウ +にカーソルが自動的に移動するので、":write" で保存するか ":quit!" で変更を破棄 +するかしてください。 -変更のあるウィンドウがあることがわかっていて、それを全部保存したいのなら、 -このコマンドが使えます。 > +未保存のファイルを全て保存するには、次のコマンドを使ってください: > :wall -これは":write all"の意味です。とはいっても、実際に保存するのは変更のあった -ファイルだけです。変更していないファイルを上書きしても意味がないことをvimは -わかってますから。 -で、さらに上のコマンド":qall"と":wall"を組み合せた"write and quit all"コマ -ンドがあります。 > +これは "write all" (すべて保存) という意味です。とはいっても、実際に保存される +のは変更のあったファイルだけです。変更していないファイルを上書きしても意味がな +いことを Vim はわかってますから。 +":qall" と ":wall" を組み合わせた "write and quit all" (すべて保存して終了) コ +マンドもあります: > :wqall -これは変更のあったファイルを全部保存してからvimを終わります。 -最後に、全変更を投げ捨ててvimを終わるコマンドもあります。 > +このコマンドは、変更されたファイルをすべて保存して Vim を終了します。 +最後に、次のコマンドは、すべての変更を破棄して Vim を終了するコマンドです: > :qall! このコマンドはアンドゥできないので、使う時には慎重に! -OPENING A WINDOW FOR ALL ARGUMENTS [全引数のウィンドウを開く] - -引数で指定した各ファイル用のウィンドウを開くには、起動パラメタに"-o"を指定 -します。 > +引数で指定したすべてのファイルをウィンドウで開く +それぞれのファイルごとにウィンドウを開くには、起動パラメタに "-o" を指定します。 +> vim -o one.txt two.txt three.txt 結果はこうなります。 @@ -331,182 +329,272 @@ OPENING A WINDOW FOR ALL ARGUMENTS [全引数のウィンドウを開く] | | +-------------------------------+ -起動パラメタ"-O"だと、ウィンドウが縦分割になります。 -vimが既に起動しているのであれば、":all"コマンドを使うと引数リストの各ファイ -ル毎にウィンドウを開きます。":vertical all"だと縦分割になります。 +起動パラメタ "-O" を使えば、ウィンドウが縦分割になります。 +Vim が既に起動している場合、":all" コマンドを使うと引数リストの各ファイルごと +にウィンドウを開くことができます。":vertical all"だと縦分割になります。 ============================================================================== -*08.7* vimdiffでファイルの差分を見る +*08.7* vimdiff で差分を表示する -vimには2つのファイル差分を見るための特別な起動方法があります。"main.c"とい -うファイルを開き、1行に数文字を挿入します。次に'backup'オプションを有効に -してからファイルを保存します。するとバックアップファイル"main.c~"には直前の -バージョンが入っています。 -シェルで(vim上ではありません)次のコマンドを入力します。 > +特別な方法で Vim を起動すると、二つのファイルの差分を表示することができます。 +例えば、"main.c" というファイルを開き、どこかの行に文字を挿入したとします。そ +して、オプション 'backup' を有効にしてファイルを保存しました。バックアップファ +イル "main.c~" には変更前のファイルが保存されています。 +シェルで (vim上ではありません) 次のコマンドを入力します: > vimdiff main.c~ main.c -vimは2つのウィンドウを左右に並べた状態で起動します。画面には先ほど追加した -行とその前後の数行だけを表示します。 +二つのウィンドウを左右に並べた状態で Vim が起動します。画面には先ほど文字を挿 +入した行とその前後の数行が表示されています。 VV VV +-----------------------------------------+ - |+ +--123 lines: /* a|+ +--123 lines: /* a| <- fold + |+ +--123 lines: /* a|+ +--123 lines: /* a| <- 折り畳み | text | text | | text | text | | text | text | - | text | changed text | <- changed line + | text | changed text | <- 変更された行 | text | text | - | text | ------------------| <- deleted line + | text | ------------------| <- 削除された行 | text | text | | text | text | | text | text | - |+ +--432 lines: text|+ +--432 lines: text| <- fold + |+ +--432 lines: text|+ +--432 lines: text| <- 折り畳み | ~ | ~ | | ~ | ~ | |main.c~==============main.c==============| | | +-----------------------------------------+ -(上の図ではハイライト部分がわからないので、ちゃんと見たければ、vimdiffコマ -ンドを実行してみてください) - -変更していない行は1行に圧縮しています。これをclosed foldと呼びます。 -上の図では "<- fold"とある行がそうです。最初のフォールド行は123行分のテキス -トを示し、この数字は両方のファイルで一致しています。 -"<- changed line"とある行はハイライト表示となり、挿入した文字列は別の色での -表示になります。こうすることで2つのファイル間で違っている場所を表示します。 -削除された行はmain.cのウィンドウにあるように"---"で表示します。上の図の、 -"<- deleted line"とある所を見てください。実際にはここには何も文字はありませ -ん。main.cに空行を埋めこんで、他のウィンドウと同じ行番号となるように表示し -ます。 +(上の図は強調表示されてないので、ちゃんと見たければ、vimdiff コマンドを実行し +てみてください) + +変更のない行は一行に折り畳まれて表示されます。これを閉じた折り畳みと呼びます。 +上の図では "<- 折り畳み" とある行がそうです。最初の折り畳みは 123 行を折り畳ん +でいます。それらの行は両方のファイルで一致しています。 +"<- 変更された行" とある行は強調表示されていて、挿入した文字列が別の色で表示さ +れています。強調表示されているので、どこが違うのかが一目でわかります。 +削除された行は main.c のウィンドウにあるように "---" と表示されます。上の図の、 +"<- 削除された行" とある行を見てください。実際には、そこに文字はありません。そ +の行は、main.c を別のウィンドウと同じ行数で表示するために使われています。 -THE FOLD COLUMN [桁のフォールド] +折り畳み表示列 -各ウィンドウの左側にちょっとバックグラウンドの変わった桁があります。上の図で -は、"VV"と書いてあります。フォールドしている行の前には、ここに"+"記号が表示 -されます。マウスポインタをその"+"記号に動かし、左ボタンを押します。フォール -ドが開き、その中にあったテキストを見ることができます。 -フォールドの桁には"-"記号が入ります。"-"をクリックするとフォールドは元のよ -うに閉じます。 -当り前ですが、これはマウスがある場合だけできます。キーボードを使って"zo"と -"zc"で開いたり、閉じたりできます。 +各ウィンドウの左側に色の違う列があります。上の図では "VV" で示されています。そ +の列の、閉じた折り畳みのある行に、"+" 記号が表示されています。マウスポインタを +その "+" 記号に合わせて、左ボタンをクリックしてください。折り畳みが開き、折り +畳まれていたテキストが表示されます。 +開いた折り畳みは "-" 記号で表示されます。"-" 記号をクリックすると折り畳みは閉 +じます。 +当り前ですが、これはマウスが利用できる場合のみ機能します。キーボードの場合は +"zo" で折り畳みを開いたり、"zc" で閉じたりできます。 -DIFFING IN VIM [vimの中で差分を取る] +Vim の中で差分を取る -diffモードを始めるもう一つの方法はvimの中から実行できます。"main.c"を編集し -て、次に画面を分割し、差分を表示しましょう。 > +Vim の中から差分モードを開始する方法もあります。"main.c" を開いて、ウィンドウ +を分割し差分を表示するには、次のようにします: > :edit main.c :vertical diffsplit main.c~ -":vertical"コマンドはウィンドウを縦分割する時に使用します。これを省略すると、 -横分割になります。 +":vertical" コマンドはウィンドウを縦分割するために使用します。使わなかった場合 +は横分割になります。 -パッチかdiffファイルがあれば、差分モードを第3の方法で始められます。最初に -パッチを適用するファイルを開き、次にvimにそのパッチファイルの名前を教えてや -ります。 > +パッチ、または diff ファイルがある場合は、三つめの方法で差分モードを開始できま +す。最初に、パッチを適用するファイルを開き、次に、Vim にパッチファイルの名前を +教えてやります: > :edit main.c :vertical diffpatch main.c.diff -警告:パッチファイルには編集中のファイル用のパッチだけしか含んではなりません。 -でないと大量のエラーメッセージが表示されたり、思いもよらないパッチを他のファ -イルに当ててしまうかもしれません。 -パッチ処理はvimの中でファイルのコピーに対して行います。ハードディスク上のファ -イルは(vim上でそれを上書きしない限り)変更されないままです。 +警告: パッチファイルは、開いているファイル用のパッチが一つだけ含まれているもの +でなければなりません。そうでない場合は、大量のエラーメッセージが表示されたり、 +予期せずに、他のファイルにパッチが適用されてしまう場合があります。 +パッチ処理は Vim 内部の、ファイルのコピーに対して実行されます。ハードディスク +上のファイルは (それを上書きしない限り) 変更されません。 -SCROLL BINDING [同期スクロール] +同期スクロール -ファイル間の差分がたくさんある時も、あなたは普通の方法でスクロールできます。 -vimは2つのウィンドウが同じ行番号から始まるようにもう片方を自動的にスクロー -ルしてくれます。ですから、左右に並べておくと違いがよく解るでしょう。 -同期スクロールを止めたくなったら、次のコマンドを使います。 > +ファイル間の差分がたくさんある場合、通常どおりスクロールすればそれらを表示でき +ます。もう一方のウィンドウも同じ場所を表示するように自動的にスクロールされるの +で、簡単に差分を並べて表示できます。 +同期スクロールを無効にするには、次のコマンドを使います: > :set noscrollbind -JUMPING TO CHANGES [差分の箇所にジャンプする] +変更された場所にジャンプする -何らかの方法でフォールドをdisableにした時、差分の箇所を見つけるのが難しく -なります。このコマンドを使うと、次の差分を探してジャンプしてくれます。 > +折り畳みを無効にしている場合、変更された場所を見つけるのは簡単ではありません。 +次のコマンドを使うと、前方の変更にジャンプできます: > ]c -逆方向に探すのはこれです。 > +逆方向にジャンプするには次のコマンドを使います: > [c -回数指定を使えば、さらに遠くまでジャンプします。 +回数指定を使えば、さらに遠くまでジャンプできます。 -REMOVING CHANGES [変更を取り止めにする] +変更を取り除く -ウィンドウ間でのテキスト移動ができます。これによって、差分が増えたり、減った -りします。どんな場合であれ、vimはハイライト表示を更新しません。更新する場合 -は次のコマンドを入力します。 > +ウィンドウからウィンドウへテキストを移動できます。これによって、差分が増えたり +減ったりします。強調表示は自動的に更新されません。更新するには次のコマンドを使 +います: > :diffupdate -差分を取り除くために、片方のウィンドウのハイライト領域をもう片方にコピーでき -ます。上で使った"main.c"と"macin.c~"を例にしてみましょう。カーソルを左側の -ウィンドウに動かし、もう片方のウィンドウでは削除された行に移動します。ここで -次のコマンドを入力します。 > +差分を取り除くには、強調表示された範囲のテキストをもう一方のウィンドウに移動し +ます。上述の "main.c" と "main.c~" の例を使って説明します。左ウィンドウに移動 +して、もう一方のウィンドウでは削除されている行に移動します。そして、次のコマン +ドを入力します: > dp -現在のウィンドウのテキストをもう片方のウィンドウにプットして、差分をなしに -します。"dp"というのは"diff put"の意味です。 -同じことを違う方法でもできます。右側のウィンドウにカーソルを動かし、"changed" -が挿入された行にカーソルを動かし、次のコマンドを入力します。 > +カレントウィンドウのテキストがもう一方のウィンドウにプットされ、変更がなくなり +ます。"dp" は "diff put" の意味です。 +別の方法でも同じことができます。右のウィンドウに移動して、"changed" が挿入され +た行に移動します。そして、次のコマンドを入力します: > do -もう片方のウィンドウから文字列を持ってくることで、変更はチャラになります。 -ファイルに違いがなくなってしまったので、vimは全行をclosed foldに押し込みま -す。"do"は"diff obtain"の意味です。意味的には"dg"の方が良いのですが、他で使 -われてしまっているためです。("dgg"で、カーソル位置から最初の行まで削除しま -す) +もう一方のファイルからテキストがコピーされ、変更はなくなります。これで変更がな +くなってしまったので、すべてのテキストが折り畳まれて表示されます。"do" は +"diff obtain" の意味です。意味的には"dg"の方が良いのですが、それはすでに他で +使われています ("dgg" でカーソル位置から最初の行まで削除されます)。 -diffモードの詳細は |vimdiff| をご覧ください。 +差分モードの詳細は |vimdiff| をご覧ください。 ============================================================================== *08.8* その他 -'laststatus'オプションは、最後のウィンドウにステータスラインを表示するかどうか -を制御します。 +'laststatus' オプションを使うと、最後のウィンドウにステータスラインを表示する +かどうかを設定できます: - 0 決してしない。 - 1 分割ウィンドウがある時だけ(デフォルト) + 0 表示しない + 1 分割ウィンドウがある時だけ表示 (初期設定) 2 常に表示 -他のファイルを編集する多くのコマンドでは、ウィンドウを分割するバージョン -があります。コマンドラインモードのコマンドでは先頭に"s"を付けます。例えば、 -":tag"はタグジャンプですが、":stag"だとウィンドウ分割をした上で、タグジャ -ンプします。 -通常モードのコマンドでは、CTRL-Wをコマンドの前に置きます。CTRL-^はオルタ -ネートファイルにジャンプしますが、CTRL-W CTRL-^ はウィンドウを分割した上 -で、そのウィンドウに移動します。 +ほとんどの、ファイルを開くコマンドには、ウィンドウを分割するバージョンが存在し +ます。 +Ex コマンドの場合、先頭に "s" が付いています。例えば、":tag" はタグジャンプで +すが、":stag" はウィンドウを分割してからタグジャンプします。 +ノーマルモードコマンドの場合、CTRL-W を前置します。例えば、CTRL-^ はオルタネー +トファイルへのジャンプですが、CTRL-W CTRL-^ はウィンドウを分割してからオルタネー +トファイルを開きます。 -'splitbelow'オプションでは新しいウィンドウを現在のウィンドウの下に出すよう -にできます。'splitright'オプションでは、縦分割でウィンドウ分割した時に現在 -のウィンドウの右側に出るようにできます。 +'splitbelow' オプションを設定すると、カレントウィンドウの下に新しいウィンドウ +が作られるようになります。'splitright' オプションを設定すると、縦分割したとき +に、カレントウィンドウの右に新しいウィンドウが作られるようになります。 -ウィンドウ分割をする時は、以下に示すオプション(正確にはmodifier)をコマンド -の前に指定することでウィンドウの表示位置を指定できます。 +ウィンドウを分割するときに、次の修飾コマンドを使うと、ウィンドウの位置を指定で +きます: - :leftabove {cmd} 現在ウィンドウの左か上に出る + :leftabove {cmd} カレントウィンドウの左、または上 :aboveleft {cmd} 同上 - :rightbelow {cmd} 現在ウィンドウの右か下に出る + :rightbelow {cmd} カレントウィンドウの右、または下 :belowright {cmd} 同上 - :topleft {cmd} vimウィンドウの左か上に出る - :botright {cmd} vimウィンドウの右か下に出る + :topleft {cmd} 上、または左の端 + :botright {cmd} 下、または右の端 + + +============================================================================== +*08.9* タブページ + +ウィンドウは重ねることができないので、画面がすぐにいっぱいになってしまいます。 +それを解決するために、タブページ、というものが用意されています。 + +"thisfile" というファイルを開いているとしましょう。新しいタブページを作成する +ために次のコマンドを実行します: > + + :tabedit thatfile + +"thatfile" が開かれ、Vim ウィンドウ全体を占める大きさのウィンドウに表示されま +す。そして、上部にバーが表示され、ファイル名が二つ表示されているのが確認できる +と思います: + + +----------------------------------+ + | thisfile | /thatfile/ __________X| (thatfile は太字) + |/* thatfile */ | + |that | + |that | + |~ | + |~ | + |~ | + | | + +----------------------------------+ + +これは二つのタブページがある状態です。一つ目のタブページには "thisfile" を開い +ているウィンドウが、二つ目のタブページには "thatfile" を開いているウィンドウが +入っています。これは、紙が二枚重なっていて、それぞれの紙にファイル名が書かれた +ラベルが付いているようなものです。 + +マウスを使って "thisfile" をクリックしてみましょう。次のようになります。 + + +----------------------------------+ + | /thisfile/ | thatfile __________X| (thisfile は太字) + |/* thisfile */ | + |this | + |this | + |~ | + |~ | + |~ | + | | + +----------------------------------+ + +上部のラベルをクリックすると、タブページを切替えることができます。マウスがな +い、あるいは使いたくない場合には、"gt" コマンドでも切替えられます。"gt" は +Goto Tab の略です。 + +次のコマンドを実行し、タブページをもう一つ作成してみましょう: > + + :tab split + +ウィンドウを一つもったタブページが作成され、そのウィンドウには、さっきまで開い +ていたのと同じバッファが表示されています: + + +-------------------------------------+ + | thisfile | /thisfile/ | thatfile __X| (thisfile は太字) + |/* thisfile */ | + |this | + |this | + |~ | + |~ | + |~ | + | | + +-------------------------------------+ + +":tab" コマンドは、ウィンドウを開く Ex コマンドと組み合わせて使います。そうす +ると、ウィンドウは新しいタブページで開かれます。もう一つ例をあげます: > + + :tab help gt + +このコマンドを実行すると、"gt" についてのヘルプが新しいタブページで開きます。 + +タブページの操作には、他にも次のようなものがあります: + +- 上部バーの最後のラベルより右 (ラベルのないとこ) をマウスでクリック + "gt" と同じように、次のタブページを選択します。 + +- 上部右端の "X" をクリック + 現在のタブページを閉じます。ただし、そのタブページ内に未保存の変更があ + る場合は閉じません。 + +- 上部バーをダブルクリック + 新しいタブページを作成します。 + +- "tabonly" コマンド + 現在のタブページ以外を閉じます。ただし、それらのタブページ内に未保存の + 変更がある場合は閉じません。 + +タブページについての詳細は |tab-page| を参照してください。 ============================================================================== -Next chapter: |usr_09.txt| GUIを使う +次章: |usr_09.txt| GUI を使う Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: From 03cceaea0535a8b1f7fedd619d9604b72162c6b7 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Mon, 8 Jan 2007 00:17:57 +0000 Subject: [PATCH 076/783] update syntax.txt to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@76 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/syntax.txt | 939 +++++++++++++++++++++++++++++++++++--------------- ja/syntax.jax | 679 ++++++++++++++++++++++++++++-------- 2 files changed, 1199 insertions(+), 419 deletions(-) diff --git a/en/syntax.txt b/en/syntax.txt index 036799231..fa7b0439f 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 6.3. Last change: 2004 Jun 04 +*syntax.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -81,14 +81,14 @@ automatically selected if the 'fileformats' option is not empty. NOTE: When using reverse video ("gvim -fg white -bg black"), the default value of 'background' will not be set until the GUI window is opened, which is after -reading the .gvimrc. This will cause the wrong default highlighting to be +reading the |gvimrc|. This will cause the wrong default highlighting to be used. To set the default value of 'background' before switching on -highlighting, include the ":gui" command in the .gvimrc: > +highlighting, include the ":gui" command in the |gvimrc|: > :gui " open window and set default for 'background' :syntax on " start highlighting, use 'background' to set colors -NOTE: Using ":gui" in the .gvimrc means that "gvim -f" won't start in the +NOTE: Using ":gui" in the |gvimrc| means that "gvim -f" won't start in the foreground! Use ":gui -f" then. @@ -184,6 +184,11 @@ add a few items or change the highlighting, follow these steps: That's it. The next time you edit a C file the Comment color will be different. You don't even have to restart Vim. +If you have multiple files, you can use the filetype as the directory name. +All the "*.vim" files in this directory will be used, for example: + ~/.vim/after/syntax/c/one.vim + ~/.vim/after/syntax/c/two.vim + REPLACING AN EXISTING SYNTAX FILE *mysyntaxfile-replace* @@ -393,6 +398,10 @@ Force to omit the line numbers by using a zero value: > Go back to the default to use 'number' by deleting the variable: > :unlet html_number_lines +Closed folds are put in the HTML as they are displayed. If you don't want +this, use the |zR| command before invoking 2html, or use: > + :let html_ignore_folding = 1 + By default, HTML optimized for old browsers is generated. If you prefer using cascading style sheets (CSS1) for the attributes (resulting in considerably shorter and valid HTML 4 file), use: > @@ -400,7 +409,7 @@ shorter and valid HTML 4 file), use: > By default "<pre>" and "</pre>" is used around the text. This makes it show up as you see it in Vim, but without wrapping. If you prefer wrapping, at the -risc of making some things look a bit different, use: > +risk of making some things look a bit different, use: > :let html_no_pre = 1 This will use <br> at the end of each line and use " " for repeated spaces. @@ -416,6 +425,13 @@ empty string: > To go back to the automatic mechanism, delete the g:html_use_encoding variable: > :unlet html_use_encoding +< +For diff mode a sequence of more than 3 filler lines is displayed as three +lines with the middle line mentioning the total number of inserted lines. If +you prefer to see all the inserted lines use: > + :let html_whole_filler = 1 +And to go back to displaying up to three lines again: > + :unlet html_whole_filler < *convert-to-XML* *convert-to-XHTML* An alternative is to have the script generate XHTML (XML compliant HTML). To @@ -438,7 +454,7 @@ Unix shell: > for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done < -ABEL *abel.vim* *abel-syntax* +ABEL *abel.vim* *ft-abel-syntax* ABEL highlighting provides some user-defined options. To enable them, assign any value to the respective variable. Example: > @@ -451,7 +467,7 @@ abel_obsolete_ok obsolete keywords are statements, not errors abel_cpp_comments_illegal do not interpret '//' as inline comment leader -ADA *ada.vim* *ada-syntax* +ADA *ada.vim* *ft-ada-syntax* This mode is designed for the 1995 edition of Ada ("Ada95"), which includes support for objected-programming, protected types, and so on. @@ -499,12 +515,12 @@ Even on a slow (90Mhz) PC this mode works quickly, but if you find the performance unacceptable, turn on ada_withuse_ordinary. -ANT *ant.vim* *ant-syntax* +ANT *ant.vim* *ft-ant-syntax* The ant syntax file provides syntax highlighting for javascript and python -by default. Syntax highlighting for other script languages can be installed +by default. Syntax highlighting for other script languages can be installed by the function AntSyntaxScript(), which takes the tag name as first argument -and the script syntax file name as second argument. Example: > +and the script syntax file name as second argument. Example: > :call AntSyntaxScript('perl', 'perl.vim') @@ -517,7 +533,7 @@ will install syntax perl highlighting for the following ant code > See |mysyntaxfile-add| for installing script languages permanently. -APACHE *apache.vim* *apache-syntax* +APACHE *apache.vim* *ft-apache-syntax* The apache syntax file provides syntax highlighting depending on Apache HTTP server version, by default for 1.3.x. Set "apache_version" to Apache version @@ -527,8 +543,8 @@ server version, by default for 1.3.x. Set "apache_version" to Apache version < *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* -ASSEMBLY *asm-syntax* *asmh8300-syntax* *nasm-syntax* *masm-syntax* - *asm68k-syntax* *fasm.vim* +ASSEMBLY *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax* + *ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim* Files matching "*.i" could be Progress or Assembly. If the automatic detection doesn't work for you, or you don't edit Progress at all, use this in your @@ -544,7 +560,7 @@ files are included: asm68k Motorola 680x0 assembly asmh8300 Hitachi H-8300 version of GNU assembly ia64 Intel Itanium 64 - fasm Flat assemlby (http://flatassembler.net) + fasm Flat assembly (http://flatassembler.net) masm Microsoft assembly (probably works for any 80x86) nasm Netwide assembly tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and @@ -582,7 +598,7 @@ nasm_ctx_outside_macro contexts outside macro not as Error nasm_no_warn potentially risky syntax not as ToDo -ASPPERL and ASPVBS *aspperl-syntax* *aspvbs-syntax* +ASPPERL and ASPVBS *ft-aspperl-syntax* *ft-aspvbs-syntax* *.asp and *.asa files could be either Perl or Visual Basic script. Since it's hard to detect this you can set two global variables to tell Vim what you are @@ -594,7 +610,40 @@ For Visual Basic use: > :let g:filetype_asp = "aspvbs" -BASIC *basic.vim* *vb.vim* *basic-syntax* *vb-syntax* +BAAN *baan.vim* *baan-syntax* + +The baan.vim gives syntax support for BaanC of release BaanIV upto SSA ERP LN +for both 3 GL and 4 GL programming. Large number of standard defines/constants +are supported. + +Some special violation of coding standards will be signalled when one specify +in ones |.vimrc|: > + let baan_code_stds=1 + +*baan-folding* + +Syntax folding can be enabled at various levels through the variables +mentioned below (Set those in your |.vimrc|). The more complex folding on +source blocks and SQL can be CPU intensive. + +To allow any folding and enable folding at function level use: > + let baan_fold=1 +Folding can be enabled at source block level as if, while, for ,... The +indentation preceding the begin/end keywords has to match (spaces are not +considered equal to a tab). > + let baan_fold_block=1 +Folding can be enabled for embedded SQL blocks as SELECT, SELECTDO, +SELECTEMPTY, ... The indentation preceding the begin/end keywords has to +match (spaces are not considered equal to a tab). > + let baan_fold_sql=1 +Note: Block folding can result in many small folds. It is suggested to |:set| +the options 'foldminlines' and 'foldnestmax' in |.vimrc| or use |:setlocal| in +.../after/syntax/baan.vim (see |after-directory|). Eg: > + set foldminlines=5 + set foldnestmax=6 + + +BASIC *basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax* Both Visual Basic and "normal" basic use the extension ".bas". To detect which one should be used, Vim checks for the string "VB_Name" in the first @@ -603,7 +652,7 @@ otherwise "vb". Files with the ".frm" extension will always be seen as Visual Basic. -C *c.vim* *c-syntax* +C *c.vim* *ft-c-syntax* A few things in C highlighting are optional. To enable them assign any value to the respective variable. Example: > @@ -618,6 +667,8 @@ c_space_errors trailing white space and spaces before a <Tab> c_no_trail_space_error ... but no trailing spaces c_no_tab_space_error ... but no spaces before a <Tab> c_no_bracket_error don't highlight {}; inside [] as errors +c_no_curly_error don't highlight {}; inside [] and () as errors; + except { and } in first column c_no_ansi don't do standard ANSI types and constants c_ansi_typedefs ... but do standard ANSI types c_ansi_constants ... but do standard ANSI constants @@ -627,6 +678,12 @@ c_no_if0 don't highlight "#if 0" blocks as comments c_no_cformat don't highlight %-formats in strings c_no_c99 don't highlight C99 standard items +When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will +become a fold. If you don't want comments to become a fold use: > + :let c_no_comment_fold = 1 +"#if 0" blocks are also folded, unless: > + :let c_no_if0_fold = 1 + If you notice highlighting errors while scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "c_minlines" internal variable to a larger number: > @@ -664,19 +721,27 @@ an the "after" directory in 'runtimepath'. For Unix this would be syn sync fromstart set foldmethod=syntax +CH *ch.vim* *ft-ch-syntax* + +C/C++ interpreter. Ch has similar syntax highlighting to C and builds upon +the C syntax file. See |c.vim| for all the settings that are available for C. -CHILL *chill.vim* *chill-syntax* +By setting a variable you can tell Vim to use Ch syntax for *.h files, instead +of C or C++: > + :let ch_syntax_for_h = 1 + + +CHILL *chill.vim* *ft-chill-syntax* Chill syntax highlighting is similar to C. See |c.vim| for all the settings that are available. Additionally there is: -chill_syntax_for_h use Ch syntax for *.h files, instead of C or C++ chill_space_errors like c_space_errors chill_comment_string like c_comment_strings chill_minlines like c_minlines -CHANGELOG *changelog.vim* *changelog-syntax* +CHANGELOG *changelog.vim* *ft-changelog-syntax* ChangeLog supports highlighting spaces at the start of a line. If you do not like this, add following line to your .vimrc: > @@ -692,7 +757,7 @@ Or to avoid the highlighting: > This works immediately. -COBOL *cobol.vim* *cobol-syntax* +COBOL *cobol.vim* *ft-cobol-syntax* COBOL highlighting has different needs for legacy code than it does for fresh development. This is due to differences in what is being done (maintenance @@ -703,9 +768,9 @@ To disable it again, use this: > :unlet cobol_legacy_code -COLD FUSION *coldfusion.vim* *coldfusion-syntax* +COLD FUSION *coldfusion.vim* *ft-coldfusion-syntax* -The ColdFusion has its own version of HTML comments. To turn on ColdFusion +The ColdFusion has its own version of HTML comments. To turn on ColdFusion comment highlighting, add the following line to your startup file: > :let html_wrong_comments = 1 @@ -713,12 +778,12 @@ comment highlighting, add the following line to your startup file: > The ColdFusion syntax file is based on the HTML syntax file. -CSH *csh.vim* *csh-syntax* +CSH *csh.vim* *ft-csh-syntax* This covers the shell named "csh". Note that on some systems tcsh is actually used. -Detecting wether a file is csh or tcsh is notoriously hard. Some systems +Detecting whether a file is csh or tcsh is notoriously hard. Some systems symlink /bin/csh to /bin/tcsh, making it almost impossible to distinguish between csh and tcsh. In case VIM guesses wrong you can set the "filetype_csh" variable. For using csh: > @@ -731,17 +796,17 @@ For using tcsh: > Any script with a tcsh extension or a standard tcsh filename (.tcshrc, tcsh.tcshrc, tcsh.login) will have filetype tcsh. All other tcsh/csh scripts -will be classified as tcsh, UNLESS the "filetype_csh" variable exists. If the +will be classified as tcsh, UNLESS the "filetype_csh" variable exists. If the "filetype_csh" variable exists, the filetype will be set to the value of the variable. -CYNLIB *cynlib.vim* *cynlib-syntax* +CYNLIB *cynlib.vim* *ft-cynlib-syntax* Cynlib files are C++ files that use the Cynlib class library to enable -hardware modeling and simulation using C++. Typically Cynlib files have a .cc +hardware modelling and simulation using C++. Typically Cynlib files have a .cc or a .cpp extension, which makes it very difficult to distinguish them from a -normal C++ file. Thus, to enable Cynlib highlighting for .cc files, add this +normal C++ file. Thus, to enable Cynlib highlighting for .cc files, add this line to your .vimrc file: > :let cynlib_cyntax_for_cc=1 @@ -756,7 +821,7 @@ To disable these again, use this: > :unlet cynlib_cyntax_for_cpp < -CWEB *cweb.vim* *cweb-syntax* +CWEB *cweb.vim* *ft-cweb-syntax* Files matching "*.w" could be Progress or cweb. If the automatic detection doesn't work for you, or you don't edit Progress at all, use this in your @@ -764,17 +829,17 @@ startup vimrc: > :let filetype_w = "cweb" -DESKTOP *desktop.vim* *desktop-syntax* +DESKTOP *desktop.vim* *ft-desktop-syntax* Primary goal of this syntax file is to highlight .desktop and .directory files according to freedesktop.org standard: http://pdx.freedesktop.org/Standards/ But actually almost none implements this standard fully. Thus it will -highlight all Unix ini files. But you can force strict highlighting according +highlight all Unix ini files. But you can force strict highlighting according to standard by placing this in your vimrc file: > :let enforce_freedesktop_standard = 1 -DIRCOLORS *dircolors.vim* *dircolors-syntax* +DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* The dircolors utility highlighting definition has one option. It exists to provide compatibility with the Slackware GNU/Linux distributions version of @@ -785,9 +850,9 @@ line to your startup file: > let dircolors_is_slackware = 1 -DOCBOOK *docbk.vim* *docbk-syntax* *docbook* -DOCBOOK XML *docbkxml.vim* *docbkxml-syntax* -DOCBOOK SGML *docbksgml.vim* *docbksgml-syntax* +DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook* +DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax* +DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax* There are two types of DocBook files: SGML and XML. To specify what type you are using the "b:docbk_type" variable should be set. Vim does this for you @@ -804,7 +869,7 @@ or: > :set filetype=docbkxml -DOSBATCH *dosbatch.vim* *dosbatch-syntax* +DOSBATCH *dosbatch.vim* *ft-dosbatch-syntax* There is one option with highlighting DOS batch files. This covers new extensions to the Command Interpreter introduced with Windows 2000 and @@ -812,20 +877,76 @@ is controlled by the variable dosbatch_cmdextversion. For Windows NT this should have the value 1, and for Windows 2000 it should be 2. Select the version you want with the following line: > - :let dosbatch_cmdextversion = 1 + :let dosbatch_cmdextversion = 1 If this variable is not defined it defaults to a value of 2 to support Windows 2000. +A second option covers whether *.btm files should be detected as type +"dosbatch" (MS-DOS batch files) or type "btm" (4DOS batch files). The latter +is used by default. You may select the former with the following line: > + + :let g:dosbatch_syntax_for_btm = 1 + +If this variable is undefined or zero, btm syntax is selected. + + +DOXYGEN *doxygen.vim* *doxygen-syntax* + +Doxygen generates code documentation using a special documentation format +(similar to Javadoc). This syntax script adds doxygen highlighting to c, cpp +and idl files, and should also work with java. + +There are a few of ways to turn on doxygen formatting. It can be done explicity +or in a modeline by appending '.doxygen' to the syntax of the file. Example: > + :set syntax=c.doxygen +or > + // vim:syntax=c.doxygen + +To use doxygen formatting on top of any filetype, add the following to your +.vimrc for each filetype, replacing {filetype} with the relevent value. > + :let g:syntax_extra_{filetype}='doxygen' + +It can also be done automaticly for c, cpp and idl files by setting the global +or buffer-local variable load_doxygen_syntax. This is done by adding the +following to your .vimrc. > + :let g:load_doxygen_syntax=1 + +There are a couple of variables that have an affect on syntax highlighting, and +are to do with non-standard highlighting options. + +Variable Default Effect ~ +g:doxygen_enhanced_color +g:doxygen_enhanced_colour 0 Use non-standard highlighting for + doxygen comments. + +doxygen_my_rendering 0 Disable rendering of HTML bold, italic + and html_my_rendering underline. + +doxygen_javadoc_autobrief 1 Set to 0 to disable javadoc autobrief + colour highlighting. + +doxygen_end_punctuation '[.]' Set to regexp match for the ending + punctuation of brief + +There are also some hilight groups worth mentioning as they can be useful in +configuration. -DTD *dtd.vim* *dtd-syntax* +Highlight Effect ~ +doxygenErrorComment The colour of an end-comment when missing + punctuation in a code, verbatim or dot section +doxygenLinkError The colour of an end-comment when missing the + \endlink from a \link section. -The DTD syntax highlighting is case sensitive by default. To disable + +DTD *dtd.vim* *ft-dtd-syntax* + +The DTD syntax highlighting is case sensitive by default. To disable case-sensitive highlighting, add the following line to your startup file: > :let dtd_ignore_case=1 -The DTD syntax file will highlight unknown tags as errors. If +The DTD syntax file will highlight unknown tags as errors. If this is annoying, it can be turned off by setting: > :let dtd_no_tag_errors=1 @@ -835,18 +956,18 @@ Parameter entity names are highlighted in the definition using the 'Type' highlighting group and 'Comment' for punctuation and '%'. Parameter entity instances are highlighted using the 'Constant' highlighting group and the 'Type' highlighting group for the -delimiters % and ;. This can be turned off by setting: > +delimiters % and ;. This can be turned off by setting: > :let dtd_no_param_entities=1 The DTD syntax file is also included by xml.vim to highlight included dtd's. -EIFFEL *eiffel.vim* *eiffel-syntax* +EIFFEL *eiffel.vim* *ft-eiffel-syntax* While Eiffel is not case-sensitive, its style guidelines are, and the -syntax highlighting file encourages their use. This also allows to -highlight class names differently. If you want to disable case-sensitive +syntax highlighting file encourages their use. This also allows to +highlight class names differently. If you want to disable case-sensitive highlighting, add the following line to your startup file: > :let eiffel_ignore_case=1 @@ -878,14 +999,14 @@ experimentally handled by some compilers can be enabled by: > :let eiffel_ise=1 -Finally, some vendors support hexadecimal constants. To handle them, add > +Finally, some vendors support hexadecimal constants. To handle them, add > :let eiffel_hex_constants=1 to your startup file. -ERLANG *erlang.vim* *erlang-syntax* +ERLANG *erlang.vim* *ft-erlang-syntax* The erlang highlighting supports Erlang (ERicsson LANGuage). Erlang is case sensitive and default extension is ".erl". @@ -900,7 +1021,24 @@ your .vimrc: > :let erlang_characters = 1 -FORM *form.vim* *form-syntax* +FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax* + +FlexWiki is an ASP.NET-based wiki package available at http://www.flexwiki.com + +Syntax highlighting is available for the most common elements of FlexWiki +syntax. The associated ftplugin script sets some buffer-local options to make +editing FlexWiki pages more convenient. FlexWiki considers a newline as the +start of a new paragraph, so the ftplugin sets 'tw'=0 (unlimited line length), +'wrap' (wrap long lines instead of using horizontal scrolling), 'linebreak' +(to wrap at a character in 'breakat' instead of at the last char on screen), +and so on. It also includes some keymaps that are disabled by default. + +If you want to enable the keymaps that make "j" and "k" and the cursor keys +move up and down by display lines, add this to your .vimrc: > + :let flexwiki_maps = 1 + + +FORM *form.vim* *ft-form-syntax* The coloring scheme for syntax elements in the FORM file uses the default modes Conditional, Number, Statement, Comment, PreProc, Type, and String, @@ -924,38 +1062,38 @@ Note that the form.vim syntax file implements FORM preprocessor commands and directives per default in the same syntax group. A predefined enhanced color mode for FORM is available to distinguish between -header statements and statements in the body of a FORM program. To activate +header statements and statements in the body of a FORM program. To activate this mode define the following variable in your vimrc file > :let form_enhanced_color=1 The enhanced mode also takes advantage of additional color features for a dark -gvim display. Here, statements are colored LightYellow instead of Yellow, and +gvim display. Here, statements are colored LightYellow instead of Yellow, and conditionals are LightBlue for better distinction. -FORTRAN *fortran.vim* *fortran-syntax* +FORTRAN *fortran.vim* *ft-fortran-syntax* Default highlighting and dialect ~ -Highlighting appropriate for f95 (Fortran 95) is used by default. This choice +Highlighting appropriate for f95 (Fortran 95) is used by default. This choice should be appropriate for most users most of the time because Fortran 95 is a superset of Fortran 90 and almost a superset of Fortran 77. Fortran source code form ~ -Fortran 9x code can be in either fixed or free source form. Note that the +Fortran 9x code can be in either fixed or free source form. Note that the syntax highlighting will not be correct if the form is incorrectly set. When you create a new fortran file, the syntax script assumes fixed source -form. If you always use free source form, then > +form. If you always use free source form, then > :let fortran_free_source=1 -in your .vimrc prior to the :syntax on command. If you always use fixed source +in your .vimrc prior to the :syntax on command. If you always use fixed source form, then > :let fortran_fixed_source=1 in your .vimrc prior to the :syntax on command. If the form of the source code depends upon the file extension, then it is -most convenient to set fortran_free_source in a ftplugin file. For more -information on ftplugin files, see |ftplugin|. For example, if all your +most convenient to set fortran_free_source in a ftplugin file. For more +information on ftplugin files, see |ftplugin|. For example, if all your fortran files with an .f90 extension are written in free source form and the rest in fixed source form, add the following code to your ftplugin file > let s:extfname = expand("%:e") @@ -971,25 +1109,25 @@ precedes the "syntax on" command in your .vimrc file. When you edit an existing fortran file, the syntax script will assume free source form if the fortran_free_source variable has been set, and assumes -fixed source form if the fortran_fixed_source variable has been set. If +fixed source form if the fortran_fixed_source variable has been set. If neither of these variables have been set, the syntax script attempts to determine which source form has been used by examining the first five columns -of the first 25 lines of your file. If no signs of free source form are -detected, then the file is assumed to be in fixed source form. The algorithm -should work in the vast majority of cases. In some cases, such as a file that -begins with 25 or more full-line comments, the script may incorrectly decide -that the fortran code is in fixed form. If that happens, just add a +of the first 250 lines of your file. If no signs of free source form are +detected, then the file is assumed to be in fixed source form. The algorithm +should work in the vast majority of cases. In some cases, such as a file that +begins with 250 or more full-line comments, the script may incorrectly decide +that the fortran code is in fixed form. If that happens, just add a non-comment statement beginning anywhere in the first five columns of the first twenty five lines, save (:w) and then reload (:e!) the file. Tabs in fortran files ~ -Tabs are not recognized by the Fortran standards. Tabs are not a good idea in +Tabs are not recognized by the Fortran standards. Tabs are not a good idea in fixed format fortran source code which requires fixed column boundaries. -Therefore, tabs are marked as errors. Nevertheless, some programmers like -using tabs. If your fortran files contain tabs, then you should set the +Therefore, tabs are marked as errors. Nevertheless, some programmers like +using tabs. If your fortran files contain tabs, then you should set the variable fortran_have_tabs in your .vimrc with a command such as > :let fortran_have_tabs=1 -placed prior to the :syntax on command. Unfortunately, the use of tabs will +placed prior to the :syntax on command. Unfortunately, the use of tabs will mean that the syntax file will not be able to detect incorrect margins. Syntax folding of fortran files ~ @@ -998,26 +1136,26 @@ fortran_fold with a command such as > :let fortran_fold=1 to instruct the syntax script to define fold regions for program units, that is main programs starting with a program statement, subroutines, function -subprograms, block data subprograms, interface blocks, and modules. If you +subprograms, block data subprograms, interface blocks, and modules. If you also set the variable fortran_fold_conditionals with a command such as > :let fortran_fold_conditionals=1 then fold regions will also be defined for do loops, if blocks, and select -case constructs. If you also set the variable +case constructs. If you also set the variable fortran_fold_multilinecomments with a command such as > :let fortran_fold_multilinecomments=1 then fold regions will also be defined for three or more consecutive comment -lines. Note that defining fold regions can be slow for large files. +lines. Note that defining fold regions can be slow for large files. If fortran_fold, and possibly fortran_fold_conditionals and/or fortran_fold_multilinecomments, have been set, then vim will fold your file if -you set foldmethod=syntax. Comments or blank lines placed between two program +you set foldmethod=syntax. Comments or blank lines placed between two program units are not folded because they are seen as not belonging to any program unit. More precise fortran syntax ~ If you set the variable fortran_more_precise with a command such as > :let fortran_more_precise=1 -then the syntax coloring will be more precise but slower. In particular, +then the syntax coloring will be more precise but slower. In particular, statement labels used in do, goto and arithmetic if statements will be recognized, as will construct names at the end of a do, if, select or forall construct. @@ -1029,7 +1167,7 @@ subset elf90, and the Imagine1 subset F. If you use f77 with extensions, even common ones like do/enddo loops, do/while loops and free source form that are supported by most f77 compilers including g77 (GNU Fortran), then you will probably find the default highlighting -satisfactory. However, if you use strict f77 with no extensions, not even free +satisfactory. However, if you use strict f77 with no extensions, not even free source form or the MIL STD 1753 extensions, then the advantages of setting the dialect to f77 are that names such as SUM are recognized as user variable names and not highlighted as f9x intrinsic functions, that obsolete constructs @@ -1041,14 +1179,14 @@ that f90 features excluded from these dialects will be highlighted as todo items and that free source form will be assumed as required for these dialects. -The dialect can be selected by setting the variable fortran_dialect. The +The dialect can be selected by setting the variable fortran_dialect. The permissible values of fortran_dialect are case-sensitive and must be "f95", -"f90", "f77", "elf" or "F". Invalid values of fortran_dialect are ignored. +"f90", "f77", "elf" or "F". Invalid values of fortran_dialect are ignored. If all your fortran files use the same dialect, set fortran_dialect in your -.vimrc prior to your syntax on statement. If the dialect depends upon the file -extension, then it is most convenient to set it in a ftplugin file. For more -information on ftplugin files, see |ftplugin|. For example, if all your +.vimrc prior to your syntax on statement. If the dialect depends upon the file +extension, then it is most convenient to set it in a ftplugin file. For more +information on ftplugin files, see |ftplugin|. For example, if all your fortran files with an .f90 extension are written in the elf subset, your ftplugin file should contain the code > let s:extfname = expand("%:e") @@ -1061,9 +1199,9 @@ Note that this will work only if the "filetype plugin indent on" command precedes the "syntax on" command in your .vimrc file. Finer control is necessary if the file extension does not uniquely identify -the dialect. You can override the default dialect, on a file-by-file basis, by +the dialect. You can override the default dialect, on a file-by-file basis, by including a comment with the directive "fortran_dialect=xx" (where xx=f77 or -elf or F or f90 or f95) in one of the first three lines in your file. For +elf or F or f90 or f95) in one of the first three lines in your file. For example, your older .f files may be written in extended f77 but your newer ones may be F codes, and you would identify the latter by including in the first three lines of those files a Fortran comment of the form > @@ -1071,15 +1209,15 @@ first three lines of those files a Fortran comment of the form > F overrides elf if both directives are present. Limitations ~ -Parenthesis checking does not catch too few closing parentheses. Hollerith -strings are not recognized. Some keywords may be highlighted incorrectly +Parenthesis checking does not catch too few closing parentheses. Hollerith +strings are not recognized. Some keywords may be highlighted incorrectly because Fortran90 has no reserved words. -For further information related to fortran, see |fortran-indent| and -|fortran-plugin|. +For further information related to fortran, see |ft-fortran-indent| and +|ft-fortran-plugin|. -FVWM CONFIGURATION FILES *fvwm.vim* *fvwm-syntax* +FVWM CONFIGURATION FILES *fvwm.vim* *ft-fvwm-syntax* In order for Vim to recognize Fvwm configuration files that do not match the patterns *fvwmrc* or *fvwm2rc* , you must put additional patterns @@ -1103,7 +1241,7 @@ in /usr/X11/lib/X11/, you should add the line > to your .vimrc file. -GSP *gsp.vim* +GSP *gsp.vim* *ft-gsp-syntax* The default coloring style for GSP pages is defined by |html.vim|, and the coloring for java code (within java tags or inline between backticks) @@ -1126,19 +1264,19 @@ The backticks for inline java are highlighted according to the htmlError group to make them easier to see. -GROFF *groff.vim* *groff-syntax* +GROFF *groff.vim* *ft-groff-syntax* The groff syntax file is a wrapper for |nroff.vim|, see the notes -under that heading for examples of use and configuration. The purpose +under that heading for examples of use and configuration. The purpose of this wrapper is to set up groff syntax extensions by setting the filetype from a |modeline| or in a personal filetype definitions file (see |filetype.txt|). -HASKELL *haskell.vim* *lhaskell.vim* *haskell-syntax* +HASKELL *haskell.vim* *lhaskell.vim* *ft-haskell-syntax* The Haskell syntax files support plain Haskell code as well as literate -Haskell code, the latter in both Bird style and TeX style. The Haskell +Haskell code, the latter in both Bird style and TeX style. The Haskell syntax highlighting will also highlight C preprocessor directives. If you want to highlight delimiter characters (useful if you have a @@ -1157,15 +1295,15 @@ your .vimrc: > The Haskell syntax highlighting also highlights C preprocessor directives, and flags lines that start with # but are not valid -directives as erroneous. This interferes with Haskell's syntax for -operators, as they may start with #. If you want to highlight those +directives as erroneous. This interferes with Haskell's syntax for +operators, as they may start with #. If you want to highlight those as operators as opposed to errors, put in your .vimrc: > :let hs_allow_hash_operator = 1 The syntax highlighting for literate Haskell code will try to automatically guess whether your literate Haskell code contains TeX markup or not, and correspondingly highlight TeX constructs -or nothing at all. You can override this globally by putting +or nothing at all. You can override this globally by putting in your .vimrc > :let lhs_markup = none for no highlighting at all, or > @@ -1174,12 +1312,12 @@ to force the highlighting to always try to highlight TeX markup. For more flexibility, you may also use buffer local versions of this variable, so e.g. > :let b:lhs_markup = tex -will force TeX highlighting for a particular buffer. It has to be +will force TeX highlighting for a particular buffer. It has to be set before turning syntax highlighting on for the buffer or loading a file. -HTML *html.vim* *html-syntax* +HTML *html.vim* *ft-html-syntax* The coloring scheme for tags in the HTML file works as follows. @@ -1192,14 +1330,14 @@ Known tag names are colored the same way as statements in C. Unknown tag names are colored with the same color as the <> or </> respectively which makes it easy to spot errors -Note that the same is true for argument (or attribute) names. Known attribute +Note that the same is true for argument (or attribute) names. Known attribute names are colored differently than unknown ones. -Some HTML tags are used to change the rendering of text. The following tags +Some HTML tags are used to change the rendering of text. The following tags are recognized by the html.vim syntax coloring file and change the way normal text is shown: <B> <I> <U> <EM> <STRONG> (<EM> is used as an alias for <I>, while <STRONG> as an alias for <B>), <H1> - <H6>, <HEAD>, <TITLE> and <A>, but -only if used as a link that is, it must include a href as in +only if used as a link (that is, it must include a href as in <A href="somfile.html">). If you want to change how such text is rendered, you must redefine the @@ -1235,13 +1373,13 @@ ends with --!>) you can define > JavaScript and Visual Basic embedded inside HTML documents are highlighted as 'Special' with statements, comments, strings and so on colored as in standard -programming languages. Note that only JavaScript and Visual Basic are currently +programming languages. Note that only JavaScript and Visual Basic are currently supported, no other scripting language has been added yet. Embedded and inlined cascading style sheets (CSS) are highlighted too. -There are several html preprocessor languages out there. html.vim has been -written such that it should be trivial to include it. To do so add the +There are several html preprocessor languages out there. html.vim has been +written such that it should be trivial to include it. To do so add the following two lines to the syntax coloring file for that language (the example comes from the asp.vim file): @@ -1252,7 +1390,7 @@ Now you just need to make sure that you add all regions that contain the preprocessor language to the cluster htmlPreproc. -HTML/OS (by Aestiva) *htmlos.vim* *htmlos-syntax* +HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax* The coloring scheme for HTML/OS works as follows: @@ -1273,7 +1411,7 @@ Lastly, it should be noted that the opening and closing characters to begin a block of HTML/OS code can either be << or [[ and >> or ]], respectively. -IA64 *ia64.vim* *intel-itanium* *ia64-syntax* +IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax* Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for how to recognize this filetype. @@ -1282,7 +1420,7 @@ To have *.inc files be recognized as IA64, add this to your .vimrc file: > :let g:filetype_inc = "ia64" -INFORM *inform.vim* *inform-syntax* +INFORM *inform.vim* *ft-inform-syntax* Inform highlighting includes symbols provided by the Inform Library, as most programs make extensive use of it. If do not wish Library symbols @@ -1310,14 +1448,37 @@ Inform development environment, you may with to add this to your startup sequence: > :let inform_highlight_old=1 +IDL *idl.vim* *idl-syntax* + +IDL (Interface Definition Language) files are used to define RPC calls. In +Microsoft land, this is also used for defining COM interfaces and calls. -JAVA *java.vim* *java-syntax* +IDL's structure is simple enough to permit a full grammar based approach to +rather than using a few heuristics. The result is large and somewhat +repetative but seems to work. + +There are some Microsoft extensions to idl files that are here. Some of them +are disabled by defining idl_no_ms_extensions. + +The more complex of the extensions are disabled by defining idl_no_extensions. + +Variable Effect ~ + +idl_no_ms_extensions Disable some of the Microsoft specific + extensions +idl_no_extensions Disable complex extensions +idlsyntax_showerror Show IDL errors (can be rather intrusive, but + quite helpful) +idlsyntax_showerror_soft Use softer colours by default for errors + + +JAVA *java.vim* *ft-java-syntax* The java.vim syntax highlighting file offers several options: In Java 1.0.2 it was never possible to have braces inside parens, so this was flagged as an error. Since Java 1.1 this is possible (with anonymous -classes), and therefore is no longer marked as an error. If you prefer the old +classes), and therefore is no longer marked as an error. If you prefer the old way, put the following line into your vim startup file: > :let java_mark_braces_in_parens_as_errors=1 @@ -1325,7 +1486,7 @@ All identifiers in java.lang.* are always visible in all classes. To highlight them use: > :let java_highlight_java_lang_ids=1 -You can also highlight identifiers of most standard java packages if you +You can also highlight identifiers of most standard Java packages if you download the javaid.vim script at http://www.fleiner.com/vim/download.html. If you prefer to only highlight identifiers of a certain package, say java.io use the following: > @@ -1333,7 +1494,7 @@ use the following: > Check the javaid.vim file for a list of all the packages that are supported. Function names are not highlighted, as the way to find functions depends on -how you write java code. The syntax file knows two possible ways to highlight +how you write Java code. The syntax file knows two possible ways to highlight functions: If you write function declarations that are always indented by either @@ -1347,44 +1508,44 @@ declarations to be highlighted create your own definitions by changing the definitions in java.vim or by creating your own java.vim which includes the original one and then adds the code to highlight functions. -In java 1.1 the functions System.out.println() and System.err.println() should -only be used for debugging. Therefor it is possible to highlight debugging -statements differently. To do this you must add the following definition in +In Java 1.1 the functions System.out.println() and System.err.println() should +only be used for debugging. Therefore it is possible to highlight debugging +statements differently. To do this you must add the following definition in your startup file: > :let java_highlight_debug=1 The result will be that those statements are highlighted as 'Special' -characters. If you prefer to have them highlighted differently you must define +characters. If you prefer to have them highlighted differently you must define new highlightings for the following groups.: Debug, DebugSpecial, DebugString, DebugBoolean, DebugType which are used for the statement itself, special characters used in debug -strings, strings, boolean constants and types (this, super) respectively. I +strings, strings, boolean constants and types (this, super) respectively. I have opted to chose another background for those statements. In order to help you to write code that can be easily ported between -java and C++, all C++ keywords are marked as error in a java program. +Java and C++, all C++ keywords are marked as error in a Java program. However, if you use them regularly, you may want to define the following variable in your .vimrc file: > :let java_allow_cpp_keywords=1 -Javadoc is a program that takes special comments out of java program files and -creates HTML pages. The standard configuration will highlight this HTML code -similarly to HTML files (see |html.vim|). You can even add javascript -and CSS inside this code (see below). There are four differences however: +Javadoc is a program that takes special comments out of Java program files and +creates HTML pages. The standard configuration will highlight this HTML code +similarly to HTML files (see |html.vim|). You can even add Javascript +and CSS inside this code (see below). There are four differences however: 1. The title (all characters up to the first '.' which is followed by some white space or up to the first '@') is colored differently (to change the color change the group CommentTitle). 2. The text is colored as 'Comment'. 3. HTML comments are colored as 'Special' - 4. The special javadoc tags (@see, @param, ...) are highlighted as specials + 4. The special Javadoc tags (@see, @param, ...) are highlighted as specials and the argument (for @see, @param, @exception) as Function. To turn this feature off add the following line to your startup file: > :let java_ignore_javadoc=1 -If you use the special javadoc comment highlighting described above you -can also turn on special highlighting for javascript, visual basic -scripts and embedded CSS (stylesheets). This makes only sense if you -actually have javadoc comments that include either javascript or embedded -CSS. The options to use are > +If you use the special Javadoc comment highlighting described above you +can also turn on special highlighting for Javascript, visual basic +scripts and embedded CSS (stylesheets). This makes only sense if you +actually have Javadoc comments that include either Javascript or embedded +CSS. The options to use are > :let java_javascript=1 :let java_css=1 :let java_vb=1 @@ -1404,7 +1565,7 @@ displayed line. The default value is 10. The disadvantage of using a larger number is that redrawing can become slow. -LACE *lace.vim* *lace-syntax* +LACE *lace.vim* *ft-lace-syntax* Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the style guide lines are not. If you prefer case insensitive highlighting, just @@ -1412,7 +1573,7 @@ define the vim variable 'lace_case_insensitive' in your startup file: > :let lace_case_insensitive=1 -LEX *lex.vim* *lex-syntax* +LEX *lex.vim* *ft-lex-syntax* Lex uses brute-force synchronizing as the "^%%$" section delimiter gives no clue as to what section follows. Consequently, the value for > @@ -1421,7 +1582,26 @@ may be changed by the user if s/he is experiencing synchronization difficulties (such as may happen with large lex files). -LITE *lite.vim* *lite-syntax* +LISP *lisp.vim* *ft-lisp-syntax* + +The lisp syntax highlighting provides two options: > + + g:lisp_instring : if it exists, then "(...)" strings are highlighted + as if the contents of the string were lisp. + Useful for AutoLisp. + g:lisp_rainbow : if it exists and is nonzero, then differing levels + of parenthesization will receive different + highlighting. +< +The g:lisp_rainbow option provides 10 levels of individual colorization for +the parentheses and backquoted parentheses. Because of the quantity of +colorization levels, unlike non-rainbow highlighting, the rainbow mode +specifies its highlighting using ctermfg and guifg, thereby bypassing the +usual colorscheme control using standard highlighting groups. The actual +highlighting used depends on the dark/bright setting (see |'bg'|). + + +LITE *lite.vim* *ft-lite-syntax* There are two options for the lite syntax highlighting. @@ -1435,9 +1615,9 @@ set "lite_minlines" to the value you desire. Example: > :let lite_minlines = 200 -LPC *lpc.vim* *lpc-syntax* +LPC *lpc.vim* *ft-lpc-syntax* -LPC stands for a simple, memory-efficient language: Lars Pensj| C. The +LPC stands for a simple, memory-efficient language: Lars Pensj| C. The file name of LPC is usually *.c. Recognizing these files as LPC would bother users writing only C programs. If you want to use LPC syntax in Vim, you should set a variable in your .vimrc file: > @@ -1456,7 +1636,7 @@ For a C file that is recognized as LPC: If you don't want to set the variable, use the modeline in EVERY LPC file. There are several implementations for LPC, we intend to support most widely -used ones. Here the default LPC syntax is for MudOS series, for MudOS v22 +used ones. Here the default LPC syntax is for MudOS series, for MudOS v22 and before, you should turn off the sensible modifiers, and this will also asserts the new efuns after v22 to be invalid, don't set this variable when you are using the latest version of MudOS: > @@ -1473,38 +1653,48 @@ For LPC4 series of LPC: > For uLPC series of LPC: uLPC has been developed to Pike, so you should use Pike syntax -instead, and the name of your source file shoud be *.pike +instead, and the name of your source file should be *.pike -LUA *lua.vim* *lua-syntax* +LUA *lua.vim* *ft-lua-syntax* -This syntax file may be used for Lua 4.0 and Lua 5.0 (default). If you are -programming in Lua 4.0, use this: > +This syntax file may be used for Lua 4.0, Lua 5.0 or Lua 5.1 (the latter is +the default). You can select one of these versions using the global variables +lua_version and lua_subversion. For example, to activate Lua +4.0 syntax highlighting, use this command: > :let lua_version = 4 -If lua_version variable doesn't exist, it is set to 5. +If you are using Lua 5.0, use these commands: > + + :let lua_version = 5 + :let lua_subversion = 0 + +To restore highlighting for Lua 5.1: > + + :let lua_version = 5 + :let lua_subversion = 1 -MAIL *mail.vim* +MAIL *mail.vim* *ft-mail.vim* Vim highlights all the standard elements of an email (headers, signatures, -quoted text and URLs / email addresses). In keeping with standard conventions, +quoted text and URLs / email addresses). In keeping with standard conventions, signatures begin in a line containing only "--" followed optionally by whitespaces and end with a newline. Vim treats lines beginning with ']', '}', '|', '>' or a word followed by '>' -as quoted text. However Vim highlights headers and signatures in quoted text -only if the text is quoted with '>' (optionaly followed by one space). +as quoted text. However Vim highlights headers and signatures in quoted text +only if the text is quoted with '>' (optionally followed by one space). -By default mail.vim syncronises syntax to 100 lines before the first displayed -line. If you have a slow machine, and generally deal with emails with short -headers, you can change this to a smaller value: > +By default mail.vim synchronises syntax to 100 lines before the first +displayed line. If you have a slow machine, and generally deal with emails +with short headers, you can change this to a smaller value: > :let mail_minlines = 30 -MAKE *make.vim* *make-syntax* +MAKE *make.vim* *ft-make-syntax* In makefiles, commands are usually highlighted to make it easy for you to spot errors. However, this may be too much coloring for you. You can turn this @@ -1513,7 +1703,7 @@ feature off by using: > :let make_no_commands = 1 -MAPLE *maple.vim* *maple-syntax* +MAPLE *maple.vim* *ft-maple-syntax* Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language supports many packages of functions which are selectively loaded by the user. @@ -1538,7 +1728,15 @@ $VIMRUNTIME/syntax/syntax.vim). mv_finance mv_logic mv_powseries -MOO *moo.vim* *moo-syntax* +MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax* + +Empty *.m files will automatically be presumed to be Matlab files unless you +have the following in your .vimrc: > + + let filetype_m = "mma" + + +MOO *moo.vim* *ft-moo-syntax* If you use C-style comments inside expressions and find it mangles your highlighting, you may want to use extended (slow!) matches for C-style @@ -1563,7 +1761,7 @@ To highlight builtin properties (.name, .location, .programmer etc.): > :let moo_builtin_properties = 1 -Unknown builtin functions can be recognized and highlighted as errors. If you +Unknown builtin functions can be recognized and highlighted as errors. If you use this option, add your own extensions to the mooKnownBuiltinFunction group. To enable this option: > @@ -1574,7 +1772,7 @@ An example of adding sprintf() to the list of known builtin functions: > :syn keyword mooKnownBuiltinFunction sprintf contained -MSQL *msql.vim* *msql-syntax* +MSQL *msql.vim* *ft-msql-syntax* There are two options for the msql syntax highlighting. @@ -1588,7 +1786,7 @@ set "msql_minlines" to the value you desire. Example: > :let msql_minlines = 200 -NCF *ncf.vim* *ncf-syntax* +NCF *ncf.vim* *ft-ncf-syntax* There is one option for NCF syntax highlighting. @@ -1600,22 +1798,22 @@ errors, use this: > If you don't want to highlight these errors, leave it unset. -NROFF *nroff.vim* *nroff-syntax* +NROFF *nroff.vim* *ft-nroff-syntax* The nroff syntax file works with AT&T n/troff out of the box. You need to activate the GNU groff extra features included in the syntax file before you can use them. For example, Linux and BSD distributions use groff as their default text -processing package. In order to activate the extra syntax highliting features -for groff, add the following option to your start-up files: > +processing package. In order to activate the extra syntax highlighting +features for groff, add the following option to your start-up files: > :let b:nroff_is_groff = 1 Groff is different from the old AT&T n/troff that you may still find in Solaris. Groff macro and request names can be longer than 2 characters and there are extensions to the language primitives. For example, in AT&T troff -you access the year as a 2-digit number with the request \(yr. In groff you +you access the year as a 2-digit number with the request \(yr. In groff you can use the same request, recognized for compatibility, or you can use groff's native syntax, \[yr]. Furthermore, you can use a 4-digit year directly: \[year]. Macro requests can be longer than 2 characters, for example, GNU mm @@ -1630,7 +1828,7 @@ follow a few simple rules about spacing and punctuation. 2. Leave one space and one space only after an end-of-sentence period, exclamation mark, etc. -3. For reasont stated below, it is best to follow all period marks with a +3. For reasons stated below, it is best to follow all period marks with a carriage return. The reason behind these unusual tips is that g/n/troff have a line breaking @@ -1643,7 +1841,7 @@ vertical space input will be output as is. Therefore, you should be careful about not using more space between sentences than you intend to have in your final document. For this reason, the common practice is to insert a carriage return immediately after all punctuation -marks. If you want to have "even" text in your final processed output, you +marks. If you want to have "even" text in your final processed output, you need to maintaining regular spacing in the input text. To mark both trailing spaces and two or more spaces after a punctuation as an error, use: > @@ -1651,8 +1849,8 @@ spaces and two or more spaces after a punctuation as an error, use: > Another technique to detect extra spacing and other errors that will interfere with the correct typesetting of your file, is to define an eye-catching -highliting definition for the syntax groups "nroffDefinition" and -"nroffDefSpecial" in your configuration files. For example: > +highlighting definition for the syntax groups "nroffDefinition" and +"nroffDefSpecial" in your configuration files. For example: > hi def nroffDefinition term=italic cterm=italic gui=reverse hi def nroffDefSpecial term=italic,bold cterm=italic,bold @@ -1664,14 +1862,14 @@ file: > let b:preprocs_as_sections = 1 -As well, the syntax file adds an extra paragraph marker for the exdented +As well, the syntax file adds an extra paragraph marker for the extended paragraph macro (.XP) in the ms package. Finally, there is a |groff.vim| syntax file that can be used for enabling groff syntax highlighting either on a file basis or globally by default. -OCAML *ocaml.vim* *ocaml-syntax* +OCAML *ocaml.vim* *ft-ocaml-syntax* The OCaml syntax file handles files having the following prefixes: .ml, .mli, .mll and .mly. By setting the following variable > @@ -1687,25 +1885,25 @@ prevents highlighting of "end" as error, which is useful when sources contain very long structures that Vim does not synchronize anymore. -PAPP *papp.vim* *papp-syntax* +PAPP *papp.vim* *ft-papp-syntax* The PApp syntax file handles .papp files and, to a lesser extend, .pxml and .pxsl files which are all a mixture of perl/xml/html/other using xml -as the top-level file format. By default everything inside phtml or pxml -sections is treated as a string with embedded preprocessor commands. If +as the top-level file format. By default everything inside phtml or pxml +sections is treated as a string with embedded preprocessor commands. If you set the variable: > :let papp_include_html=1 in your startup file it will try to syntax-hilight html code inside phtml sections, but this is relatively slow and much too colourful to be able to -edit sensibly ;) +edit sensibly. ;) The newest version of the papp.vim syntax file can usually be found at http://papp.plan9.de. -PASCAL *pascal.vim* *pascal-syntax* +PASCAL *pascal.vim* *ft-pascal-syntax* Files matching "*.p" could be Progress or Pascal. If the automatic detection doesn't work for you, or you don't edit Progress at all, use this in your @@ -1715,7 +1913,7 @@ startup vimrc: > The Pascal syntax file has been extended to take into account some extensions provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler. -Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are +Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are enabled. If you prefer to stick with the standard Pascal keywords, add the following line to your startup file: > @@ -1759,7 +1957,7 @@ will be highlighted as Error. > -PERL *perl.vim* *perl-syntax* +PERL *perl.vim* *ft-perl-syntax* There are a number of possible options to the perl syntax highlighting. @@ -1767,17 +1965,25 @@ If you use POD files or POD segments, you might: > :let perl_include_pod = 1 -To handle package references in variable and function names differently from -the rest of the name (like 'PkgName::' in '$PkgName::VarName'): > +The reduce the complexity of parsing (and increase performance) you can switch +off two elements in the parsing of variable names and contents. > + +To handle package references in variable and function names not differently +from the rest of the name (like 'PkgName::' in '$PkgName::VarName'): > + + :let perl_no_scope_in_variables = 1 + +(In Vim 6.x it was the other way around: "perl_want_scope_in_variables" +enabled it.) - :let perl_want_scope_in_variables = 1 +If you do not want complex things like '@{${"foo"}}' to be parsed: > -If you want complex things like '@{${"foo"}}' to be parsed: > + :let perl_no_extended_vars = 1 - :let perl_extended_vars = 1 +(In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.) -The coloring strings can be changed. By default strings and qq friends will be -highlighted like the first line. If you set the variable +The coloring strings can be changed. By default strings and qq friends will be +highlighted like the first line. If you set the variable perl_string_as_statement, it will be highlighted as in the second line. "hello world!"; qq|hello world|; @@ -1786,10 +1992,10 @@ perl_string_as_statement, it will be highlighted as in the second line. (^ = perlString, S = perlStatement, N = None at all) -The syncing has 3 options. The first two switch off some triggering of +The syncing has 3 options. The first two switch off some triggering of synchronization and should only be needed in case it fails to work properly. If while scrolling all of a sudden the whole screen changes color completely -then you should try and switch off one of those. Let me know if you can figure +then you should try and switch off one of those. Let me know if you can figure out the line that causes the mistake. One triggers on "^\s*sub\s*" and the other on "^[$@%]" more or less. > @@ -1804,10 +2010,21 @@ its attempts in syntax highlighting. > If you want to use folding with perl, set perl_fold: > - :let perl_fold = 1 + :let perl_fold = 1 +If you want to fold blocks in if statements, etc. as well set the following: > -PHP3 and PHP4 *php.vim* *php3.vim* *php-syntax* *php3-syntax* + :let perl_fold_blocks = 1 + +To avoid folding packages or subs when perl_fold is let, let the appropriate +variable(s): > + + :unlet perl_nofold_packages + :unlet perl_nofold_subs + + + +PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* [note: previously this was called "php3", but since it now also supports php4 it has been renamed to "php"] @@ -1860,17 +2077,30 @@ x > 0 to sync at least x lines backwards, x = 0 to sync from start. -PPWIZARD *ppwiz.vim* *ppwiz-syntax* +PLAINTEX *plaintex.vim* *ft-plaintex-syntax* + +TeX is a typesetting language, and plaintex is the file type for the "plain" +variant of TeX. If you never want your *.tex files recognized as plain TeX, +see |ft-tex-plugin|. + +This syntax file has the option > + + let g:plaintex_delimiters = 1 + +if you want to highlight brackets "[]" and braces "{}". + + +PPWIZARD *ppwiz.vim* *ft-ppwiz-syntax* PPWizard is a preprocessor for HTML and OS/2 INF files This syntax file has the options: - ppwiz_highlight_defs : determines highlighting mode for PPWizard's - definitions. Possible values are + definitions. Possible values are ppwiz_highlight_defs = 1 : PPWizard #define statements retain the - colors of their contents (e. g. PPWizard macros and variables) + colors of their contents (e.g. PPWizard macros and variables) ppwiz_highlight_defs = 2 : preprocessor #define and #evaluate statements are shown in a single color with the exception of line @@ -1882,7 +2112,7 @@ This syntax file has the options: HTML code; if 0, treat HTML code like ordinary text. -PHTML *phtml.vim* *phtml-syntax* +PHTML *phtml.vim* *ft-phtml-syntax* There are two options for the phtml syntax highlighting. @@ -1896,7 +2126,7 @@ set "phtml_minlines" to the value you desire. Example: > :let phtml_minlines = 200 -POSTSCRIPT *postscr.vim* *postscr-syntax* +POSTSCRIPT *postscr.vim* *ft-postscr-syntax* There are several options when it comes to highlighting PostScript. @@ -1951,8 +2181,8 @@ postscr_andornot_binary as follows: > :let postscr_andornot_binary=1 < - *ptcap.vim* -PRINTCAP + TERMCAP *ptcap-syntax* *termcap-syntax* *printcap-syntax* + *ptcap.vim* *ft-printcap-syntax* +PRINTCAP + TERMCAP *ft-ptcap-syntax* *ft-termcap-syntax* This syntax file applies to the printcap and termcap databases. @@ -1977,7 +2207,7 @@ internal variable to a larger number: > (The default is 20 lines.) -PROGRESS *progress.vim* *progress-syntax* +PROGRESS *progress.vim* *ft-progress-syntax* Files matching "*.w" could be Progress or cweb. If the automatic detection doesn't work for you, or you don't edit cweb at all, use this in your @@ -1989,7 +2219,7 @@ Pascal. Use this if you don't use assembly and Pascal: > :let filetype_p = "progress" -PYTHON *python.vim* *python-syntax* +PYTHON *python.vim* *ft-python-syntax* There are four options to control Python syntax highlighting. @@ -2010,13 +2240,13 @@ preceding three options): > :let python_highlight_all = 1 -QUAKE *quake.vim* *quake-syntax* +QUAKE *quake.vim* *ft-quake-syntax* The Quake syntax definition should work for most any FPS (First Person -Shooter) based on one of the Quake engines. However, the command names vary +Shooter) based on one of the Quake engines. However, the command names vary a bit between the three games (Quake, Quake 2, and Quake 3 Arena) so the syntax definition checks for the existence of three global variables to allow -users to specify what commands are legal in their files. The three variables +users to specify what commands are legal in their files. The three variables can be set for the following effects: set to highlight commands only available in Quake: > @@ -2032,10 +2262,10 @@ Any combination of these three variables is legal, but might highlight more commands than are actually available to you by the game. -READLINE *readline.vim* *readline-syntax* +READLINE *readline.vim* *ft-readline-syntax* The readline library is primarily used by the BASH shell, which adds quite a -few commands and options to the ones already available. To highlight these +few commands and options to the ones already available. To highlight these items as well you can add the following to your |vimrc| or just type it in the command line before loading a file with the readline syntax: > let readline_has_bash = 1 @@ -2044,7 +2274,7 @@ This will add highlighting for the commands that BASH (version 2.05a and later, and part earlier) adds. -REXX *rexx.vim* *rexx-syntax* +REXX *rexx.vim* *ft-rexx-syntax* If you notice highlighting errors while scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable @@ -2055,43 +2285,83 @@ displayed line. The default value is 10. The disadvantage of using a larger number is that redrawing can become slow. -RUBY *ruby.vim* *ruby-syntax* +RUBY *ruby.vim* *ft-ruby-syntax* -There are a few options to the Ruby syntax highlighting. +There are a number of options to the Ruby syntax highlighting. By default, the "end" keyword is colorized according to the opening statement -of the block it closes. While useful, this feature can be expensive: if you +of the block it closes. While useful, this feature can be expensive; if you experience slow redrawing (or you are on a terminal with poor color support) you may want to turn it off by defining the "ruby_no_expensive" variable: > + :let ruby_no_expensive = 1 + In this case the same color will be used for all control keywords. If you do want this feature enabled, but notice highlighting errors while scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "ruby_minlines" variable to a value larger than 50: > + :let ruby_minlines = 100 + Ideally, this value should be a number of lines large enough to embrace your largest class or module. -Finally, if you do not like to see too many color items around, you can define +Highlighting of special identifiers can be disabled by defining "ruby_no_identifiers": > + :let ruby_no_identifiers = 1 + This will prevent highlighting of special identifiers like "ConstantName", -"$global_var", "@instance_var", "| iterator |", and ":symbol". +"$global_var", "@@class_var", "@instance_var", "| block_param |", and +":symbol". + +Significant methods of Kernel, Module and Object are highlighted by default. +This can be disabled by defining "ruby_no_special_methods": > + + :let ruby_no_special_methods = 1 + +This will prevent highlighting of important methods such as "require", "attr", +"private", "raise" and "proc". + +Whitespace errors can be highlighted by defining "ruby_space_errors": > + + :let ruby_space_errors = 1 + +This will highlight trailing whitespace and tabs preceded by a space character +as errors. This can be refined by defining "ruby_no_trail_space_error" and +"ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after +spaces respectively. + +Folding can be enabled by defining "ruby_fold": > + + :let ruby_fold = 1 + +This will set the 'foldmethod' option to "syntax" and allow folding of +classes, modules, methods, code blocks, heredocs and comments. +SCHEME *scheme.vim* *ft-scheme-syntax* + +By default only R5RS keywords are highlighted and properly indented. + +MzScheme-specific stuff will be used if b:is_mzscheme or g:is_mzscheme +variables are defined. + +Also scheme.vim supports keywords of the Chicken Scheme->C compiler. Define +b:is_chicken or g:is_chicken, if you need them. -SDL *sdl.vim* *sdl-syntax* +SDL *sdl.vim* *ft-sdl-syntax* The SDL highlighting probably misses a few keywords, but SDL has so many of them it's almost impossibly to cope. The new standard, SDL-2000, specifies that all identifiers are case-sensitive (which was not so before), and that all keywords can be -used either completely lowercase or completely uppercase. To have the +used either completely lowercase or completely uppercase. To have the highlighting reflect this, you can set the following variable: > :let sdl_2000=1 -This also sets many new keywords. If you want to disable the old +This also sets many new keywords. If you want to disable the old keywords, which is probably a good idea, use: > :let SDL_no_96=1 @@ -2100,7 +2370,7 @@ The indentation is probably also incomplete, but right now I am very satisfied with it for my own projects. -SED *sed.vim* *sed-syntax* +SED *sed.vim* *ft-sed-syntax* To make tabs stand out from regular blanks (accomplished by using Todo highlighting on the tabs), define "highlight_sedtabs" by putting > @@ -2123,7 +2393,7 @@ Bugs: each plausible pattern delimiter). -SGML *sgml.vim* *sgml-syntax* +SGML *sgml.vim* *ft-sgml-syntax* The coloring scheme for tags in the SGML file works as follows. @@ -2135,10 +2405,10 @@ defined for you) Known tag names are colored the same way as statements in C. Unknown tag names are not colored which makes it easy to spot errors. -Note that the same is true for argument (or attribute) names. Known attribute +Note that the same is true for argument (or attribute) names. Known attribute names are colored differently than unknown ones. -Some SGML tags are used to change the rendering of text. The following tags +Some SGML tags are used to change the rendering of text. The following tags are recognized by the sgml.vim syntax coloring file and change the way normal text is shown: <varname> <emphasis> <command> <function> <literal> <replaceable> <ulink> and <link>. @@ -2164,9 +2434,9 @@ vimrc file: > (Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>) -SH *sh.vim* *sh-syntax* +SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* -This covers the "normal" Unix (Bourne) sh, bash and the Korn shell. +This covers the "normal" Unix (Borne) sh, bash and the Korn shell. Vim attempts to determine which shell type is in use by specifying that various filenames are of specific types: > @@ -2178,17 +2448,25 @@ If none of these cases pertain, then the first line of the file is examined (ex. /bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, then that shelltype is used. However some files (ex. .profile) are known to be shell files but the type is not apparent. Furthermore, on many systems -sh is symbolically linked to "bash" (linux) or "ksh" (posix). +sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix). One may specify a global default by instantiating one of the following three variables in your <.vimrc>: ksh: > - let is_kornshell = 1 + let g:is_kornshell = 1 +< posix: (using this is the same as setting is_kornshell to 1) > + let g:is_posix = 1 < bash: > - let is_bash = 1 -< sh: > - let is_sh = 1 + let g:is_bash = 1 +< sh: (default) Borne shell > + let g:is_sh = 1 + +If there's no "#! ..." line, and the user hasn't availed himself/herself of a +default sh.vim syntax setting as just shown, then syntax/sh.vim will assume +the Borne shell syntax. No need to quote RFCs or market penetration +statistics in error reports, please -- just select the default version of +the sh your system uses in your <.vimrc>. If, in your <.vimrc>, you set > let g:sh_fold_enabled= 1 @@ -2215,7 +2493,7 @@ The default is to use the twice sh_minlines. Set it to a smaller number to speed up displaying. The disadvantage is that highlight errors may appear. -SPEEDUP (AspenTech plant simulator) *spup.vim* *spup-syntax* +SPEEDUP (AspenTech plant simulator) *spup.vim* *ft-spup-syntax* The Speedup syntax file has some options: @@ -2225,7 +2503,7 @@ The Speedup syntax file has some options: - highlight_types : Definition of this variable causes stream types like temperature or pressure to be highlighted as Type, not as a - plain Identifier. Included are the types that are usually found in + plain Identifier. Included are the types that are usually found in the DECLARE section; if you defined own types, you have to include them in the syntax file. @@ -2236,24 +2514,40 @@ The Speedup syntax file has some options: number of #s. oneline_comments = 2 : show code starting with the second # as - error. This is the default setting. + error. This is the default setting. oneline_comments = 3 : show the whole line as error if it contains more than one #. Since especially OPERATION sections tend to become very large due to -PRESETting variables, syncing may be critical. If your computer is +PRESETting variables, syncing may be critical. If your computer is fast enough, you can increase minlines and/or maxlines near the end of the syntax file. -TCSH *tcsh.vim* *tcsh-syntax* +SQL *sql.vim* *ft-sql-syntax* + *sqlinformix.vim* *ft-sqlinformix-syntax* + *sqlanywhere.vim* *ft-sqlanywhere-syntax* + +While there is an ANSI standard for SQL, most database engines add their own +custom extensions. Vim currently supports the Oracle and Informix dialects of +SQL. Vim assumes "*.sql" files are Oracle SQL by default. + +Vim currently has SQL support for a variety of different vendors via syntax +scripts. You can change Vim's default from Oracle to any of the current SQL +supported types. You can also easily alter the SQL dialect being used on a +buffer by buffer basis. + +For more detailed instructions see |sql.txt|. + + +TCSH *tcsh.vim* *ft-tcsh-syntax* This covers the shell named "tcsh". It is a superset of csh. See |csh.vim| for how the filetype is detected. Tcsh does not allow \" in strings unless the "backslash_quote" shell variable -is set. If you want VIM to assume that no backslash quote constructs exist add +is set. If you want VIM to assume that no backslash quote constructs exist add this line to your .vimrc: > :let tcsh_backslash_quote = 0 @@ -2265,33 +2559,46 @@ to a larger number: > :let tcsh_minlines = 100 This will make the syntax synchronization start 100 lines before the first -displayed line. The default value is 15. The disadvantage of using a larger +displayed line. The default value is 15. The disadvantage of using a larger number is that redrawing can become slow. -TEX *tex.vim* *tex-syntax* +TEX *tex.vim* *ft-tex-syntax* + +*tex-folding* +Want Syntax Folding? ~ +As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters, +sections, subsections, etc are supported. Put > + let g:tex_fold_enabled=1 +in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a +modeline at the end of your LaTeX file: > + % vim: fdm=syntax +< +*tex-runon* Run-on Comments/Math? ~ -The tex highlighting supports TeX, LaTeX, and some AmsTeX. The -highlighting supports three primary zones: normal, texZone, and texMathZone. -Although a considerable effort has been made to have these zones terminate -properly, zones delineated by $..$ and $$..$$ cannot be synchronized as -there's no difference between start and end patterns. Consequently, a +The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The +highlighting supports three primary zones/regions: normal, texZone, and +texMathZone. Although considerable effort has been made to have these zones +terminate properly, zones delineated by $..$ and $$..$$ cannot be synchronized +as there's no difference between start and end patterns. Consequently, a special "TeX comment" has been provided > %stopzone which will forcibly terminate the highlighting of either a texZone or a texMathZone. +*tex-slow* Slow Syntax Highlighting? ~ If you have a slow computer, you may wish to reduce the values for > :syn sync maxlines=200 :syn sync minlines=50 (especially the latter). If your computer is fast, you may wish to -increase them. This primarily affects synchronizing (ie. just what group, +increase them. This primarily affects synchronizing (i.e. just what group, if any, is the text at the top of the screen supposed to be in?). +*tex-error* Excessive Error Highlighting? ~ The <tex.vim> supports lexical error checking of various sorts. Thus, @@ -2299,28 +2606,24 @@ although the error checking is ofttimes very useful, it can indicate errors where none actually are. If this proves to be a problem for you, you may put in your <.vimrc> the following statement: > let tex_no_error=1 -and all error checking by <tex.vim> will be suppressed. +and all error checking by <syntax/tex.vim> will be suppressed. +*tex-math* Need a new Math Group? ~ If you want to include a new math group in your LaTeX, the following code shows you an example as to how you might do so: > - - syn cluster texMathZones add=texMathZoneLOCAL - syn region texMathZoneLOCAL start="\\begin\s*{\s*LOCALMATH\s*}" - \ end="\\end\s*{\s*LOCALMATH\s*}" keepend - \ contains=@texMathZoneGroup - if !exists("tex_no_math") - syn sync match texSyncMathZoneLOCAL grouphere texMathZoneLOCAL - \ "\\begin\s*{\s*LOCALMATH\*\s*}" - syn sync match texSyncMathZoneLOCAL groupthere NONE - \ "\\end\s*{\s*LOCALMATH\*\s*}" - endif - hi link texMathZoneLOCAL texMath -< -You'll need to change LOCALMATH to the name of your new math group, -and then to put it into .vim/after/syntax/tex.vim. - + call TexNewMathZone(sfx,mathzone,starform) +You'll want to provide the new math group with a unique suffix +(currently, A-L and V-Z are taken by <syntax/tex.vim> itself). +As an example, consider how eqnarray is set up by <syntax/tex.vim>: > + call TexNewMathZone("D","eqnarray",1) +You'll need to change "mathzone" to the name of your new math group, +and then to the call to it in .vim/after/syntax/tex.vim. +The "starform" variable, if true, implies that your new math group +has a starred form (ie. eqnarray*). + +*tex-style* Starting a New Style? ~ One may use "\makeatletter" in *.tex files, thereby making the use of "@" in @@ -2335,7 +2638,7 @@ Putting "let g:tex_stylish=1" into your <.vimrc> will make <syntax/tex.vim> always accept such use of @. -TF *tf.vim* *tf-syntax* +TF *tf.vim* *ft-tf-syntax* There is one option for the tf syntax highlighting. @@ -2345,7 +2648,7 @@ set "tf_minlines" to the value you desire. Example: > :let tf_minlines = your choice -VIM *vim.vim* *vim-syntax* +VIM *vim.vim* *ft-vim-syntax* There is a tradeoff between more accurate syntax highlighting versus screen updating speed. To improve accuracy, you may wish to increase @@ -2368,8 +2671,16 @@ for external scripting languages (currently perl, python, ruby, and tcl). scripting languages will not be loaded. +Not all error highlighting that syntax/vim.vim does may be correct; VimL is a +difficult language to highlight correctly. A way to suppress error +highlighting is to put: > + + let g:vimsyntax_noerror = 1 + +in your |vimrc|. -XF86CONFIG *xf86conf.vim* *xf86conf-syntax* + +XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax* The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both variants are supported. Automatic detection is used, but is far from perfect. @@ -2384,16 +2695,16 @@ Note that spaces and underscores in option names are not supported. Use highlighted. -XML *xml.vim* *xml-syntax* +XML *xml.vim* *ft-xml-syntax* -Xml namespaces are highlighted by default. This can be inhibited by +Xml namespaces are highlighted by default. This can be inhibited by setting a global variable: > :let g:xml_namespace_transparent=1 < *xml-folding* The xml syntax file provides syntax |folding| (see |:syn-fold|) between -start and end tags. This can be turned on by > +start and end tags. This can be turned on by > :let g:xml_syntax_folding = 1 :set foldmethod=syntax @@ -2402,7 +2713,7 @@ Note: syntax folding might slow down syntax highlighting significantly, especially for large files. -X Pixmaps (XPM) *xpm.vim* *xpm-syntax* +X Pixmaps (XPM) *xpm.vim* *ft-xpm-syntax* xpm.vim creates its syntax items dynamically based upon the contents of the XPM file. Thus if you make changes e.g. in the color specification strings, @@ -2413,7 +2724,7 @@ somewhere else with "P". Do you want to draw with the mouse? Try the following: > :function! GetPixel() - : let c = getline(line("."))[col(".") - 1] + : let c = getline(".")[col(".") - 1] : echo c : exe "noremap <LeftMouse> <LeftMouse>r".c : exe "noremap <LeftDrag> <LeftMouse>r".c @@ -2432,17 +2743,17 @@ It will look much better with a font in a quadratic cell size, e.g. for X: > Vim understands three types of syntax items: -1. Keyword. +1. Keyword It can only contain keyword characters, according to the 'iskeyword' option. It cannot contain other syntax items. It will only match with a complete word (there are no keyword characters before or after the match). The keyword "if" would match in "if(a=b)", but not in "ifdef x", because "(" is not a keyword character and "d" is. -2. Match. +2. Match This is a match with a single regexp pattern. -3. Region. +3. Region This starts at a match of the "start" regexp pattern and ends with a match with the "end" regexp pattern. Any other text can appear in between. A "skip" regexp pattern can be used to avoid matching the "end" pattern. @@ -2481,13 +2792,30 @@ When several syntax items may match, these rules are used: DEFINING CASE *:syn-case* *E390* -:sy[ntax] case [match|ignore] +:sy[ntax] case [match | ignore] This defines if the following ":syntax" commands will work with matching case, when using "match", or with ignoring case, when using "ignore". Note that any items before this are not affected, and all items until the next ":syntax case" command are affected. +SPELL CHECKING *:syn-spell* + +:sy[ntax] spell [toplevel | notoplevel | default] + This defines where spell checking is to be done for text that is not + in a syntax item: + + toplevel: Text is spell checked. + notoplevel: Text is not spell checked. + default: When there is a @Spell cluster no spell checking. + + For text in syntax items use the @Spell and @NoSpell clusters + |spell-syntax|. When there is no @Spell and no @NoSpell cluster then + spell checking is done for "default" and "toplevel". + + To activate spell checking the 'spell' option must be set. + + DEFINING KEYWORDS *:syn-keyword* :sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] @@ -2507,7 +2835,7 @@ DEFINING KEYWORDS *:syn-keyword* :syntax keyword Type contained int long char :syntax keyword Type int long contained char :syntax keyword Type int long char contained -< +< *E789* When you have a keyword with an optional tail, like Ex commands in Vim, you can put the optional characters inside [], to define all the variations at once: > @@ -2532,7 +2860,7 @@ DEFINING KEYWORDS *:syn-keyword* The same keyword can be defined multiple times, when its containment differs. For example, you can define the keyword once not contained and use one highlight group, and once contained, and use a different - highlight group. Example: > + highlight group. Example: > :syn keyword vimCommand tag :syn keyword vimSetting contained tag < When finding "tag" outside of any syntax item, the "vimCommand" @@ -2588,7 +2916,7 @@ DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* match with the end pattern. See |:syn-keepend|. extend Override a "keepend" for an item this region - is contained in. See |:syn-extend|. + is contained in. See |:syn-extend|. excludenl Don't make a pattern with the end-of-line "$" extend a containing match or item. Only useful for end patterns. Must be given before @@ -3000,7 +3328,7 @@ Example: > :syn match ifline "endif" contained Note that the "[^ \t].*" match matches all non-white text. Thus it would also match "endif". Therefore the "endif" match is put last, so that it takes -precendence. +precedence. Note that this example doesn't work for nested "if"s. You need to add "contains" arguments to make that work (omitted for simplicity of the example). @@ -3090,7 +3418,7 @@ A more complicated Example: > < abcfoostringbarabc mmmmmmmmmmm match - ssrrrreee highlight start/region/end ("Foo", "Exa" and "Bar") + sssrrreee highlight start/region/end ("Foo", "Exa" and "Bar") Leading context *:syn-lc* *:syn-leading* *:syn-context* @@ -3434,6 +3762,7 @@ faster.] Without a "groupthere" argument. Define a region or match that is skipped while searching for a sync point. + *syn-sync-linecont* :syntax sync linecont {pattern} When {pattern} matches in a line, it is considered to continue in @@ -3454,7 +3783,7 @@ You can clear specific sync patterns with: > ============================================================================== 11. Listing syntax items *:syntax* *:sy* *:syn* *:syn-list* -This commands lists all the syntax items: > +This command lists all the syntax items: > :sy[ntax] [list] @@ -3495,6 +3824,10 @@ in their own color. :echo g:colors_name < Doesn't work recursively, thus you can't use ":colorscheme" in a color scheme script. + After the color scheme has been loaded the + |ColorScheme| autocommand event is triggered. + For info about writing a colorscheme file: > + :edit $VIMRUNTIME/colors/README.txt :hi[ghlight] List all the current highlight groups that have attributes set. @@ -3519,7 +3852,7 @@ in their own color. See |:highlight-default| for the optional [default] argument. -Normally a highlight group is added once when starging up. This sets the +Normally a highlight group is added once when starting up. This sets the default values for the highlighting. After that, you can use additional highlight commands to change the arguments that you want to set to non-default values. The value "NONE" can be used to switch the value off or go back to @@ -3535,6 +3868,16 @@ specified field is used, and settings are merged with previous ones. So, the result is like this single command has been used: > :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold < + *:highlight-verbose* +When listing a highlight group and 'verbose' is non-zero, the listing will +also tell where it was last set. Example: > + :verbose hi Comment +< Comment xxx term=bold ctermfg=4 guifg=Blue ~ + Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~ + +When ":hi clear" is used then the script where this command is used will be +mentioned for the default values. See |:verbose-cmd| for more information. + *highlight-args* *E416* *E417* *E423* There are three types of terminals for highlighting: term a normal terminal (vt100, xterm) @@ -3547,11 +3890,14 @@ the same syntax file on all terminals, and use the optimal highlighting. 1. highlight arguments for normal terminals + *bold* *underline* *undercurl* + *inverse* *italic* *standout* term={attr-list} *attr-list* *highlight-term* *E418* attr-list is a comma separated list (without spaces) of the following items (in any order): bold underline + undercurl not always available reverse inverse same as reverse italic @@ -3560,6 +3906,9 @@ term={attr-list} *attr-list* *highlight-term* *E418* Note that "bold" can be used here and by using a bold font. They have the same effect. + "undercurl" is a curly underline. When "undercurl" is not possible + then "underline" is used. In general "undercurl" is only available in + the GUI. The color is set with |highlight-guisp|. start={term-list} *highlight-start* *E422* stop={term-list} *term-list* *highlight-stop* @@ -3652,7 +4001,7 @@ ctermbg={color-nr} *highlight-ctermbg* The case of the color names is ignored. Note that for 16 color ansi style terminals (including xterms), the - numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue + numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue is 12, DarkGray is 8 etc. Note that for some color terminals these names may result in the wrong @@ -3715,8 +4064,10 @@ font={font-name} *highlight-font* guifg={color-name} *highlight-guifg* guibg={color-name} *highlight-guibg* - These give the foreground (guifg) and background (guibg) color to - use in the GUI. There are a few special names: +guisp={color-name} *highlight-guisp* + These give the foreground (guifg), background (guibg) and special + (guisp) color to use in the GUI. "guisp" is used for undercurl. + There are a few special names: NONE no color (transparent) bg use normal background color background use normal background color @@ -3745,8 +4096,8 @@ guibg={color-name} *highlight-guibg* You can also specify a color by its Red, Green and Blue values. The format is "#rrggbb", where "rr" is the Red value - "bb" is the Blue value "gg" is the Green value + "bb" is the Blue value All values are hexadecimal, range from "00" to "ff". Examples: > :highlight Comment guifg=#11f0c3 guibg=#ff00ff < @@ -3759,6 +4110,12 @@ command. Cursor the character under the cursor *hl-CursorIM* CursorIM like Cursor, but used when in IME mode |CursorIM| + *hl-CursorColumn* +CursorColumn the screen column that the cursor is in when 'cursorcolumn' is + set + *hl-CursorLine* +CursorLine the screen line that the cursor is in when 'cursorline' is + set *hl-Directory* Directory directory names (and other special names in listings) *hl-DiffAdd* @@ -3783,8 +4140,12 @@ SignColumn column where |signs| are displayed IncSearch 'incsearch' highlighting; also used for the text replaced with ":s///c" *hl-LineNr* -LineNr line number for ":number" and ":#" commands, and when 'number' +LineNr Line number for ":number" and ":#" commands, and when 'number' option is set. + *hl-MatchParen* +MatchParen The character under the cursor or just before it, if it + is a paired bracket, and its match. |pi_paren.txt| + *hl-ModeMsg* ModeMsg 'showmode' message (e.g., "-- INSERT --") *hl-MoreMsg* @@ -3796,6 +4157,14 @@ NonText '~' and '@' at the end of the window, characters from doesn't fit at the end of the line). *hl-Normal* Normal normal text + *hl-Pmenu* +Pmenu Popup menu: normal item. + *hl-PmenuSel* +PmenuSel Popup menu: selected item. + *hl-PmenuSbar* +PmenuSbar Popup menu: scrollbar. + *hl-PmenuThumb* +PmenuThumb Popup menu: Thumb of the scrollbar. *hl-Question* Question |hit-enter| prompt and yes/no questions *hl-Search* @@ -3807,12 +4176,32 @@ SpecialKey Meta and special keys listed with ":map", also for text used to show unprintable characters in the text, 'listchars'. Generally: text that is displayed differently from what it really is. + *hl-SpellBad* +SpellBad Word that is not recognized by the spellchecker. |spell| + This will be combined with the highlighting used otherwise. + *hl-SpellCap* +SpellCap Word that should start with a capital. |spell| + This will be combined with the highlighting used otherwise. + *hl-SpellLocal* +SpellLocal Word that is recognized by the spellchecker as one that is + used in another region. |spell| + This will be combined with the highlighting used otherwise. + *hl-SpellRare* +SpellRare Word that is recognized by the spellchecker as one that is + hardly ever used. |spell| + This will be combined with the highlighting used otherwise. *hl-StatusLine* StatusLine status line of current window *hl-StatusLineNC* StatusLineNC status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window. + *hl-TabLine* +TabLine tab pages line, not active tab page label + *hl-TabLineFill* +TabLineFill tab pages line, where there are no labels + *hl-TabLineSel* +TabLineSel tab pages line, active tab page label *hl-Title* Title titles for output from ":set all", ":autocmd" etc. *hl-Visual* @@ -3825,9 +4214,9 @@ WarningMsg warning messages *hl-WildMenu* WildMenu current match in 'wildmenu' completion - *hl-User1* *hl-User1..9* + *hl-User1* *hl-User1..9* *hl-User9* The 'statusline' syntax allows the use of 9 different highlights in the -statusline and ruler (via 'rulerformat'). The names are User1 to User9. +statusline and ruler (via 'rulerformat'). The names are User1 to User9. For the GUI you can use these groups to set the colors for the menu, scrollbars and tooltips. They don't have defaults. This doesn't work for the @@ -3962,6 +4351,11 @@ For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: > highlight comment ctermfg=green guifg=green endif + *E679* +Do make sure this syncolor.vim script does not use a "syntax on", set the +'background' option or uses a "colorscheme" command, because it results in an +endless loop. + Note that when a color scheme is used, there might be some confusion whether your defined colors are to be used or the colors from the scheme. This depends on the color scheme file. See |:colorscheme|. @@ -3975,7 +4369,7 @@ syntax/syncolor.vim files are loaded: don't have highlighting yet. Use ":syntax default". "reset" ":syntax reset" command or loading a color scheme. Define all the colors. - "skip" Dont' define colors. Used to skip the default settings when a + "skip" Don't define colors. Used to skip the default settings when a syncolor.vim file earlier in 'runtimepath' has already set them. @@ -4045,18 +4439,17 @@ But for using 16 colors in an rxvt these should work with terminfo: > < *colortest.vim* To test your color setup, a file has been included in the Vim distribution. -To use it, execute these commands: > - :e $VIMRUNTIME/syntax/colortest.vim - :so % +To use it, execute this command: > + :runtime syntax/colortest.vim -Some versions of xterm (and other terminals, like the linux console) can +Some versions of xterm (and other terminals, like the Linux console) can output lighter foreground colors, even though the number of colors is defined at 8. Therefore Vim sets the "cterm=bold" attribute for light foreground colors, when 't_Co' is 8. *xfree-xterm* To get 16 colors or more, get the newest xterm version (which should be -included with Xfree86 3.3 and later). You can also find the latest version +included with XFree86 3.3 and later). You can also find the latest version at: > http://invisible-island.net/xterm/xterm.html Here is a good way to configure it. This uses 88 colors and enables the diff --git a/ja/syntax.jax b/ja/syntax.jax index c3e0e490e..77ba7dfe6 100644 --- a/ja/syntax.jax +++ b/ja/syntax.jax @@ -1,10 +1,10 @@ COMMENT: 構文強調(テキストの着色) -STATUS: suspend 6.3.54 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*syntax.txt* For Vim version 6.3. Last change: 2004 Jun 04 +*syntax.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIMリファレンスマニュアル by Bram Moolenaar @@ -56,7 +56,7 @@ Vimは全ての端末で構文強調をサポートしている。しかし多 :syntax enable -このコマンドにより実際には次のコマンドが実行される > +このコマンドにより実際には次のコマンドが実行される > :source $VIMRUNTIME/syntax/syntax.vim 環境変数VIMが設定されていない場合は、Vimは別の方法(|$VIMRUNTIME|参照)でパスの @@ -83,17 +83,17 @@ NOTE: MS-DOSとWindowsの構文ファイルは改行コードが<CR><NL>であ いことを意味している。しかしながらMS-DOSとWindowsではオプション'fileformats'が 空でなければ正しい形式が自動的に選択される。 -NOTE: 反転表示("gvim -fg white -bg black")を使用する際は、.gvimrcが読込まれた +NOTE: 反転表示("gvim -fg white -bg black")を使用する際は、|gvimrc|が読込まれた 後で、GUIウィンドウが開かれるまでオプション'background'のデフォルト値が設定さ れない。そのせいで誤ったデフォルト強調手法が使用されてしまう。強調表示を有効化 -する前に'background'のデフォルト値を設定するには、.gvimrcにコマンド":gui"を含 +する前に'background'のデフォルト値を設定するには、|gvimrc|にコマンド":gui"を含 める: > :gui " ウィンドウを開き'background'にデフォルト値を設定する :syntax on " 強調を有効化し、色を設定するのに'background'を使用する -NOTE: .gvimrcの中で":gui"を使用すると"gvim -f"によりフォアグラウンドで開始する -ことができなくなる。その際は":gui -f"を使用すること。 +NOTE: |.gvimrc|の中で":gui"を使用すると"gvim -f"によりフォアグラウンドで開始す +ることができなくなる。その際は":gui -f"を使用すること。 次のコマンドで構文強調の有・無効を切換えることができる > @@ -190,6 +190,10 @@ Vimにそのファイル形式を認識させたいならば、|new-filetype|を 以上。次回Cのファイルを編集する時にはコメントが異なった色で表示される。Vimを再 起動する必要はない。 +構文ファイルが複数になるときは、ファイルタイプの名前のディレクトリに置くとよい。 +そのディレクトリの中の全ての "*.vim" ファイルが読み込まれる。例: > + ~/.vim/after/syntax/c/one.vim + ~/.vim/after/syntax/c/two.vim 既存の構文ファイルを置き換える *mysyntaxfile-replace* @@ -396,6 +400,10 @@ Vimはロードした構文の名前を変数"b:current_syntax"に記憶して 変数を削除すればデフォルトの'number'を使うように戻すことができる: > :unlet html_number_lines +閉じた折り畳みは、画面表示通りに HTML に出力される。これが好ましくないなら、 +2html を呼ぶ前にコマンド |zR| を使うか、または次のようにする: > + :let html_ignore_folding = 1 + デフォルトでは、古いブラウザ用に最適化されたHTMLが生成される。属性を表現するの にカスケードスタイルシートを使用したい場合には次の設定を使用する(結果的にかな り短いHTML 4に準拠したファイルが得られる): > @@ -415,6 +423,13 @@ HTMLファイルの文字集合の指定には現在の'encoding'の値が使わ :let html_use_encoding = "" 自動的に判断する設定に戻したいなら、変数g:html_use_encodingを削除する: > :unlet html_use_encoding +< +差分モードにおいて、3行以上連続した削除行(訳注:他方のファイルに行が挿入されて +いることを示す行)は3行で表示され、そこに何行挿入されているかが真ん中の行に表示 +される。挿入された行数分の空行を表示させたいなら、次のようにする: > + :let html_whole_filler = 1 +3行で表示するように戻すにはこうする: > + :unlet html_whole_filler < *convert-to-XML* *convert-to-XHTML* 代わりにXHTML(XML準拠のHTML)を生成するスクリプトを使うこともできる。そうするに @@ -435,7 +450,7 @@ HTMLファイルの文字集合の指定には現在の'encoding'の値が使わ for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done < -ABEL *abel.vim* *abel-syntax* +ABEL *abel.vim* *ft-abel-syntax* ABELの強調にはユーザが定義できるオプションが幾つかある。それらを有効化するには それぞれの変数に何か値を設定すれば良い。例: > @@ -448,7 +463,7 @@ abel_obsolete_ok 古いキーワードをエラーでなく命令文として abel_cpp_comments_illegal '//'をインラインコメントリーダとして扱わない -ADA *ada.vim* *ada-syntax* +ADA *ada.vim* *ft-ada-syntax* このモードはオブジェクト指向プログラムや型保護等の機能がサポートされた、Adaの 1995年版("Ada95")を想定して作られている。Ada95で追加されたキーワードを使用して @@ -491,7 +506,7 @@ ada_begin_preproc beginのようなキーワードの全てをCプリプ スが受け入れられないほど低いようならば、ada_withuse_ordinaryを有効化する。 -ANT *ant.vim* *ant-syntax* +ANT *ant.vim* *ft-ant-syntax* ANTの構文ファイルにはデフォルトでJavaScriptとPythonの構文強調が含まれている。 関数AntSyntaxScript()の第1引数にタグ名を、第2引数にファイル名を指定することで @@ -508,7 +523,7 @@ ANTの構文ファイルにはデフォルトでJavaScriptとPythonの構文強 スクリプト言語を永続的にインストールするには|mysyntaxfile-add|を参照。 -APACHE *apache.vim* *apache-syntax* +APACHE *apache.vim* *ft-apache-syntax* apacheの構文ファイルはHTTPサーババージョンのApache(デフォルトでは1.3.x)に基づ いた構文強調を提供する。他のバージョン用の構文強調を利用するには @@ -518,9 +533,8 @@ apacheの構文ファイルはHTTPサーババージョンのApache(デフォル < *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* -アセンブリ言語 *asm-syntax* *asmh8300-syntax* *nasm-syntax* *masm-syntax* - *asm68k-syntax* - +アセンブリ言語 *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax* + *ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim* "*.i"にマッチする名前のファイルのタイプはProgressかアセンブリである。自動検出 が動作しない場合や、Progressを編集しないことが判っている場合には、起動設定ファ イルvimrcに次のコマンドを書くことができる: > @@ -571,7 +585,7 @@ nasm_ctx_outside_macro マクロ外のコンテキストをエラーとしない nasm_no_warn 潜在的に危険な構文をToDoとして強調しない -ASPPERLとASPVBS *aspperl-syntax* *aspvbs-syntax* +ASPPERL and ASPVBS *ft-aspperl-syntax* *ft-aspvbs-syntax* *.aspと*.aspという名のファイルはどちらもPerlもしくはVisual Basicのスクリプトた りえる。Vimにとってこれを判別するのは難しいので、グローバル変数を設定すること @@ -584,7 +598,40 @@ Visual Basicを使用するなら次のように設定する: > :let g:filetype_asp = "aspvbs" -BASIC *basic.vim* *vb.vim* *basic-syntax* *vb-syntax* +BAAN *baan.vim* *baan-syntax* + +baan.vim は リリース BaanIV から SSA ERP LN まで、3 GL と 4 GL プログラミング +両方に対応した構文を定義している。たくさんの標準的な定義/定数がサポートされて +いる。 + +次を |.vimrc| に書いておくと、ある種のコーディング標準違反を教えてくれる: > + let baan_code_stds=1 + +*baan-folding* + +以下の変数によって、様々なレベルで構文折り畳みを有効にできる (これらはユーザの +|.vimrc| で設定すること)。ソースブロックと SQL についてより複雑な折り畳みを行 +うと CPU に負荷がかかる。 + +折り畳みを有効にし、関数レベルで折り畳みをするにはこうする: > + let baan_fold=1 +次を設定すると if, while, for ... のようなソースブロックレベルの折り畳みが有効 +になる。キーワード begin/end の前のインデントはマッチしなければならない (スペー +スとタブは同じとはみなされない)。 > + let baan_fold_block=1 +次を設定すると SELECT, SELECTDO, SELECTEMPTY ... のような埋め込み SQL ブロック +の折り畳みが有効になる。キーワード begin/end の前のインデントはマッチしなけれ +ばならない (スペースとタブは同じとはみなされない)。 > + let baan_fold_sql=1 +Note: ブロック折り畳みを有効にすると、小さな折り畳みがたくさんできるかもしれな +い。|.vimrc| でオプション 'foldminlines' と 'foldnestmax' を |:set| するか、... +/after/syntax/baan.vim 内で |:setlocal| をする (|after-directory| を参照) とよ +いかもしれない。例: > + set foldminlines=5 + set foldnestmax=6 + + +BASIC *basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax* Visual Basicも「通常の」BASICも、どちらも拡張子には".bas"が使用される。どちら が使用されているか判別するのに、Vimはファイルの先頭5行以内に"VB_Name"という文 @@ -593,7 +640,7 @@ Visual Basicも「通常の」BASICも、どちらも拡張子には".bas"が使 扱われる。 -C *c.vim* *c-syntax* +C *c.vim* *ft-c-syntax* Cには幾つかの補助的な強調方法がある。それらを有効化するには対応した変数に値を 設定する。例: > @@ -608,6 +655,8 @@ c_space_errors 行末の空白文字とタブ文字前のスペース文字 c_no_trail_space_error ... 但し行末の空白文字は除外 c_no_tab_space_error ... 但しタブ文字前のスペース文字は除外 c_no_bracket_error []の中の{}をエラーとして表示しない +c_no_curly_error { と } が第1桁にあるときを除き、[] と () の内側の {} + をエラーとして表示しない。 c_no_ansi ANSI標準の型と定数を強調しない c_ansi_typedefs ... 但し標準ANSI型は強調する c_ansi_constants ... 但し標準ANSI定数は強調する @@ -617,8 +666,14 @@ c_no_if0 "#if 0"のブロックをコメントとして強調しない c_no_cformat 文字列中の"%"によるフォーマットを強調しない c_no_c99 C99の標準要素を強調しない +'foldmethod' が "syntax" に設定されていると、/* */ のコメントと { } のブロック +が折り畳まれる。コメントを折り畳みたくなければこのようにする: > + :let c_no_comment_fold = 1 +"#if 0" のブロックも同様に折り畳まれる。折り畳みたくなければこのようにする: > + :let c_no_if0_fold = 1 + バックスクロール中に強調表示のエラーが生じて、そのエラーが<CTRL-L>の再描画で解 -消される場合には、内部変数"c_minlines"にもっと大きな値を設定すれば解消されるか +消される場合には、内部変数"c_minlines"にもっと大きな値を設定すれば解決できるか もしれない: > :let c_minlines = 100 これにより構文判定のシンクロナイズ位置が表示開始行の100行手前に設定される。初 @@ -653,19 +708,26 @@ Cファイルで折り畳みをしたいなら、以下の行を'runtimepath'中 syn sync fromstart set foldmethod=syntax +CH *ch.vim* *ft-ch-syntax* -CHILL *chill.vim* *chill-syntax* +C/C++ インタープリタ。Ch は C に似た構文強調を持ち、C の構文ファイルに基づいて +いる。C で利用できる設定については |c.vim| を参照。 +変数を設定すれば、*.h ファイルに対して C, C++ でなく Ch の構文を使うようにする +ことができる: > + :let ch_syntax_for_h = 1 + + +CHILL *chill.vim* *ft-chill-syntax* Chillの構文強調はCに似ている。設定に関しては|c.vim|を参照。それに加えて次のも のがある: -chill_syntax_for_h use Ch syntax for *.h files, instead of C or C++ -chill_space_errors like c_space_errors -chill_comment_string like c_comment_strings -chill_minlines like c_minlines +chill_space_errors c_space_errors と同様 +chill_comment_string c_comment_strings と同様 +chill_minlines c_minlines と同様 -CHANGELOG *changelog.vim* *changelog-syntax* +CHANGELOG *changelog.vim* *ft-changelog-syntax* ChangeLogでは行頭のスペースの強調できる。これをオフにしたいなら、次の行を .vimrcに加える: > let g:changelog_spacing_errors = 0 @@ -680,7 +742,7 @@ ChangeLogでは行頭のスペースの強調できる。これをオフにし これは即座に有効になる。 -COBOL *cobol.vim* *cobol-syntax* +COBOL *cobol.vim* *ft-cobol-syntax* 既存のCOBOLコードに要求される強調方法と、新規に開発されるコードに要求されるそ れには違いがある。この違いはコードのおかれている状況(保守 vs 開発)やその他の要 @@ -690,7 +752,7 @@ COBOL *cobol.vim* *cobol-syntax* :unlet cobol_legacy_code -COLD FUSION *coldfusion.vim* *coldfusion-syntax* +COLD FUSION *coldfusion.vim* *ft-coldfusion-syntax* ColdFusionには独自版のHTMLコメントが存在する。ColdFusionのコメント強調を有効化 するには、次の行を起動設定ファイルに書き足す: > @@ -700,7 +762,7 @@ ColdFusionには独自版のHTMLコメントが存在する。ColdFusionのコ ColdFusionの構文ファイルはHTML用構文ファイルに基づいている。 -CSH *csh.vim* *csh-syntax* +CSH *csh.vim* *ft-csh-syntax* これは"csh"という名前のシェルに対応している。いくつかのシステムでは実際には tcshが使われていることに注意。 @@ -722,7 +784,7 @@ tcshを使うには: > が存在するならファイル形式はその値にセットされる。 -CYNLIB *cynlib.vim* *cynlib-syntax* +CYNLIB *cynlib.vim* *ft-cynlib-syntax* Cynlibファイルは、ハードウェアのモデリングとシミュレーションを行なうCynlibクラ スライブラリを使用したC++ファイルである。通常Cynlibのファイルは.ccや.cppという @@ -741,7 +803,7 @@ cppファイルについても同様(この拡張子は通常Windowsだけで使 :unlet cynlib_cyntax_for_cpp < -CWEB *cweb.vim* *cweb-syntax* +CWEB *cweb.vim* *ft-cweb-syntax* "*.w"にマッチする名前のファイルのタイプはProgressかCWEBである。自動検出が動作 しない場合や、Progressを編集しないことが判っている場合には、起動設定ファイル @@ -749,7 +811,7 @@ vimrcに次のコマンドを書くことができる: > :let filetype_w = "cweb" -DESKTOP *desktop.vim* *desktop-syntax* +DESKTOP *desktop.vim* *ft-desktop-syntax* この構文ファイルの本来の目的はfreedesktop.org標準: http://pdx.freedesktop.org/Standards/の.desktopと.directoryファイルを構文強調 @@ -759,7 +821,7 @@ http://pdx.freedesktop.org/Standards/の.desktopと.directoryファイルを構 :let enforce_freedesktop_standard = 1 -DIRCOLORS *dircolors.vim* *dircolors-syntax* +DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* dircolorsユーティリティ用の強調定義には、Slackware GNU/Linuxディストリビューシ ョン版のdircolorsに対応するためのオプションがある。このオプションはほとんどの @@ -769,9 +831,9 @@ dircolorsユーティリティ用の強調定義には、Slackware GNU/Linuxデ let dircolors_is_slackware = 1 -DOCBOOK *docbk.vim* *docbk-syntax* *docbook* -DOCBOOK XML *docbkxml.vim* *docbkxml-syntax* -DOCBOOK SGML *docbksgml.vim* *docbksgml-syntax* +DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook* +DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax* +DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax* DocBookファイルには2つの種類: SGMLとXMLがある。どちらのタイプを使用するのかを 指定するには変数"b:docbk_type"をセットする。Vimがそのタイプを認識できた場合に @@ -788,20 +850,75 @@ DocBookファイルには2つの種類: SGMLとXMLがある。どちらのタイ :set filetype=docbkxml -DOSバッチファイル *dosbatch.vim* *dosbatch-syntax* +DOSバッチファイル *dosbatch.vim* *ft-dosbatch-syntax* DOSバッチファイルの強調にはオプションが1つある。このオプションによりWindows 2000で導入されたコマンドインタプリタの新しい拡張機能がカバーされ、変数 dosbatch_cmdextversionによりその有/無効が制御される。Windows NTでは値1を設定 -し、Windows 2000では2を設定するのが良い。次のような行で使用するバージョンを選 -択できる: > +し、Windows 2000では2を設定するのが良い。次のようにすれば使用するバージョンを +選択できる: > :let dosbatch_cmdextversion = 1 変数が定義されていない際のデフォルトはWindows 2000をサポートする2となる。 +2番目のオプションは、*.btm ファイルを "dosbatch" (MS-DOS バッチファイル) タイ +プか "btm" (4DOS バッチファイル) タイプのどちらと判定するかを指定する。デフォ +ルトでは後者が使われる。前者を使うには、次のようにする: > + + :let g:dosbatch_syntax_for_btm = 1 + +この変数が定義されていない、または0であると btm の構文が使われる。 + +DOXYGEN *doxygen.vim* *doxygen-syntax* + +Doxygen は JavaDoc に似た特殊なフォーマットからコードのドキュメントを生成する。 +この構文スクリプトは c, cpp, idl のファイルに対して Doxygen の強調を追加する。 +また、Java に対しても使える。 + +Doxygen のフォーマットを有効にするにはいくつかの方法がある。手動でか、またはモー +ドラインでそのファイルの syntax に '.doxygen' を追加する。例: > + :set syntax=c.doxygen +または > + // vim:syntax=c.doxygen + +任意のファイルタイプの上で Doxygen のフォーマットを有効にするには、各ファイル +タイプに対して次の行を .vimrc に加える。ここで {filetype} は適切な値に置き換え +る。 > + :let g:syntax_extra_{filetype}='doxygen' + +c, cpp, idl のファイルに対しては、グローバルまたはバッファローカルな変数 +load_doxygen_syntax を設定すれば自動的にこれが行われる。次の行を .vimrc に加え +る。 > + :let g:load_doxygen_syntax=1 + +構文強調に影響を与える変数がいくつかある。また、これらは標準でない強調オプショ +ンに関係している。 + +変数 既定値 効果 ~ +g:doxygen_enhanced_color +g:doxygen_enhanced_colour 0 Doxygen コメントに対して標準でない強調 + を行う。 + +doxygen_my_rendering 0 HTML の太字、斜体、html_my_rendering + の下線の描画を無効にする。 + +doxygen_javadoc_autobrief 1 0にすると JavaDoc の autobrief の色強 + 調を無効にする。 + +doxygen_end_punctuation '[.]' brief の終わりを示す句読点にマッチする + 正規表現。 + +また、次の強調グループを設定すると便利である。 + +強調 効果 ~ +doxygenErrorComment code, verbatim, dot セクション中で句読点が抜け + ている終了コメントの色 +doxygenLinkError \link セクションで \endlink が抜けているときの + 終了コメントの色。 -DTD *dtd.vim* *dtd-syntax* + +DTD *dtd.vim* *ft-dtd-syntax* 初期状態ではDTD構文強調は大/小文字を無視しない。無視する状態にするには、起動設 定ファイルに次の行を書き足す: > @@ -824,7 +941,7 @@ XML内の埋め込みDTDを強調表示するために、DTDの構文ファイ れる。 -EIFFEL *eiffel.vim* *eiffel-syntax* +EIFFEL *eiffel.vim* *ft-eiffel-syntax* Eiffelは大小文字の区別をしないけれども、スタイルガイドラインが示すように、構文 強調ではそれらが区別される。これにより大小文字が違えば違うクラス名として強調表 @@ -867,7 +984,7 @@ ISEが提案し、実験的に幾つかのコンパイラでは取り扱うこ この行を起動設定ファイルに書き足す。 -ERLANG *erlang.vim* *erlang-syntax* +ERLANG *erlang.vim* *ft-erlang-syntax* これはErlang(ERicsson LANGuage: エリクソン言語)をサポートする構文強調ファイル である。Erlangは大小文字を区別しデフォルトの拡張子は".erl"である。 @@ -880,7 +997,26 @@ ERLANG *erlang.vim* *erlang-syntax* :let erlang_characters = 1 -FORM *form.vim* *form-syntax* +FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax* + + +FlexWiki は http://www.flexwiki.com で入手できる ASP.NET ベースの wiki パッケ +ージである。 + +FlexWiki の構文のほとんどの一般的な要素に対して構文強調ができる。FlexWiki の +tplugin スクリプトはバッファローカルなオプションを設定し、FlexWiki ページの編 +集をより便利にする。FlexWiki は改行を新しい段落の開始とみなすので、この +ftplugin は 'tw' を0に設定し (行の長さを制限しない)、'wrap' をオンにし (長い行 +を水平スクロールさせるのでなく、折り返す)、'linebreak' をオンにする (画面上の +最後の文字でなく 'breakat' の文字で折り返す)、などを行う。また、デフォルトでは +無効にされているキーマップも含んでいる。 + +"j"、"k"、カーソルキーで表示行単位で移動するようにするキーマップを有効にするに +は次を .vimrc に追加する: > + :let flexwiki_maps = 1 + + +FORM *form.vim* *ft-form-syntax* FORMファイルの構文要素に使用するカラースキームには、Conditional, Number, Statement, Comment, PreProc, Type, そしてStringが、次の文献で定義される言語仕 @@ -914,7 +1050,7 @@ FORM用の既定の拡張カラーモードではヘッダ命令ととFORMプロ る。 -FORTRAN *fortran.vim* *fortran-syntax* +FORTRAN *fortran.vim* *ft-fortran-syntax* デフォルトの強調と方言 ~ デフォルトではf95(Fortran 95)に相当する強調が行なわれる。Fortran 95はFortran @@ -952,12 +1088,12 @@ Fortran 9xのソースコードには固定形式と自由形式が有る。形 既存のFortranファイルを編集する時には、変数fortran_free_sourceが設定されていれ ば構文ファイルは自由形式のソースであると仮定し、変数fortran_fixed_sourceが設定 されていれば固定形式のソースであると仮定する。どちらも設定されていないときには -、ファイルの先頭25行の行頭5カラムを調べて、その形式が固定なのか自由なのかを決 +、ファイルの先頭250行の行頭5カラムを調べて、その形式が固定なのか自由なのかを決 定しようと試みる。自由形式コードの兆候が見られない場合には、ファイルは固定形式 コードとして取り扱われる。このアルゴリズムはほとんどのケースにおいて有効に機能 -する。しかしいつかのケース、例えば先頭25行以上が行コメントで占められているよう +する。しかしいつかのケース、例えば先頭250行以上が行コメントで占められているよう なファイルでは、構文ファイルが固定形式コードであると誤った判断をしてしまうだろ -う。そのような場合には、ファイルの先頭25行の行頭5カラムのどこかに、コメント以 +う。そのような場合には、ファイルの先頭250行の行頭5カラムのどこかに、コメント以 外の命令文を追加し、ファイルの保存(:w)そして再読込(:e!)を行なえば良い。 Fortranファイル内のタブ文字 ~ @@ -1047,10 +1183,10 @@ fortran_dialectへ設定した場合にはそれは無視される。 丸カッコチェックは、閉じカッコの不足については捕捉できない。ホレリス定数は認識 されない。幾つかのキーワードはFortran90の予約語ではないので誤って強調される。 -Fortranに関するその他の情報は|fortran-indent|や|fortran-plugin|を参照。 +Fortranに関するその他の情報は|ft-fortran-indent|や|ft-fortran-plugin|を参照。 -FVWM CONFIGURATION FILES *fvwm.vim* *fvwm-syntax* +FVWM CONFIGURATION FILES *fvwm.vim* *ft-fvwm-syntax* Vimに*fvwmrc*や*fvwm2rc*などにマッチしないFvwmコンフィギュレーションファイルを 認識させるためには、ファイルmyfiletypefile.vimで適切な追加の認識パターンを設定 @@ -1072,7 +1208,7 @@ Vimに*fvwmrc*や*fvwm2rc*などにマッチしないFvwmコンフィギュレ このような内容をファイル.vimrcに追加する。 -GSP *gsp.vim* +GSP *gsp.vim* *ft-gsp-syntax* GSPページのデフォルトカラーは|html.vim|にて定義され、Javaコード(Javaタグ内部や インラインのバッククォート内)のカラーは|java.vim|にて定義される。|html.vim|で @@ -1094,7 +1230,7 @@ constains節に加えれば、正しく強調されるようになる。 で強調される。 -GROFF *groff.vim* *groff-syntax* +GROFF *groff.vim* *ft-groff-syntax* groff構文ファイルは|nroff.vim|のラッパーであり、使用例と設定例についてはそこの 下書かれている注意を参照。このラッパーの目的は、モードラインか個人用のファイル @@ -1102,7 +1238,7 @@ groff構文ファイルは|nroff.vim|のラッパーであり、使用例と設 構文拡張を設定することである。 -HASKELL *haskell.vim* *lhaskell.vim* *haskell-syntax* +HASKELL *haskell.vim* *lhaskell.vim* *ft-haskell-syntax* Haskell構文ファイルはプレーンHaskellコードliterate Haskellコード両方をサポート している。後者はBirdスタイルとTeXスタイル両方に対応している。Haskell用の構文強 @@ -1139,7 +1275,7 @@ literate Haskellコード用の構文強調はファイルがTeXマークアッ を有効化するかファイルを読み込む前に設定しなければならない。 -HTML *html.vim* *html-syntax* +HTML *html.vim* *ft-html-syntax* HTMLファイルのタグ用の構文ファイルは以下のように動作する。 @@ -1204,7 +1340,7 @@ htmlプロセッサ言語は複数ある。html.vimはインクルードしや そしてプリプロセッサ言語を含むすべての領域をクラスタhtmlPreprocに加えればよい。 -HTML/OS (by Aestiva) *htmlos.vim* *htmlos-syntax* +HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax* HTML/OS用のカラースキームは以下のように機能する: @@ -1224,7 +1360,7 @@ HTML/OSコードのブロックの開始と終了を示す文字は、それぞ >>または]]のどちらであってもよい。 -IA64 *ia64.vim* *intel-itanium* *ia64-syntax* +IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax* Intel Itanium 64アセンブリ言語用の強調。このファイル形式を認識させる方法につい ては|asm.vim|を参照。 @@ -1232,7 +1368,7 @@ Intel Itanium 64アセンブリ言語用の強調。このファイル形式を :let g:filetype_inc = "ia64" -INFORM *inform.vim* *inform-syntax* +INFORM *inform.vim* *ft-inform-syntax* Inform構文強調はInform Libraryによって提供されるシンボルを含んでいる。ほとんど のプログラムがそれを利用しているためである。Libraryのシンボルを強調させたくな @@ -1256,8 +1392,30 @@ Informコンパイラはある古いキーワードをエラーとみなす。 ァイルに加えるとよいかもしれない: > :let inform_highlight_old=1 +IDL *idl.vim* *idl-syntax* + +IDL (Interface Definition Language) ファイルは RPC 呼び出しを定義するために使 +われる。Microsoft の世界では COM インターフェイスと呼び出しの定義にも使われる。 + +IDL の構造は単純であるため、ヒューリスティックな方法でなく、完全に文法にのっとっ +たアプローチができる。その結果は巨大でいくぶん冗長であるが、一応は機能するよう +である。 + +idl ファイルには Microsoft 拡張がある。それらのうちいくつかは +idl_no_ms_extensions を定義すると無効になる。 + +より複雑な拡張は idl_no_extensions を定義すると無効になる。 + +変数 効果 ~ + +idl_no_ms_extensions Microsoft 独自の拡張の一部を無効にする +idl_no_extensions 複雑な拡張を無効にする +idlsyntax_showerror IDL エラーを表示する (少々うるさいがとても助け + になる) +idlsyntax_showerror_soft デフォルトでエラーにより柔らかい色を使う + -JAVA *java.vim* *java-syntax* +JAVA *java.vim* *ft-java-syntax* java.vim構文強調ファイルはいくつかのオプションを提供している: @@ -1343,7 +1501,7 @@ CSSを含むjavadocコメントがあるときだけ意味がある。これら は10である。大きな値にすることの不利点は、再描画が遅くなることである。 -LACE *lace.vim* *lace-syntax* +LACE *lace.vim* *ft-lace-syntax* Lace (Language for Assembly of Classes in Eiffel)は大文字・小文字を無視する。 しかしスタイルガイドラインはそうでない。大文字・小文字を区別して強調させたいな @@ -1351,7 +1509,7 @@ Lace (Language for Assembly of Classes in Eiffel)は大文字・小文字を無 :let lace_case_insensitive=1 -LEX *lex.vim* *lex-syntax* +LEX *lex.vim* *ft-lex-syntax* "^%%$"セクションデリミタが、その後にどんなセクションが続くかの手がかりを与えな いため、Lexはブルートフォースなシンクロナイズを行う。それゆえ(巨大なlexファイ @@ -1360,7 +1518,24 @@ LEX *lex.vim* *lex-syntax* の値を変更するとよいかもしれない。 -LITE *lite.vim* *lite-syntax* +LISP *lisp.vim* *ft-lisp-syntax* + +lisp の構文強調には2つのオプションがある: > + + g:lisp_instring : この変数が存在すると "(...)" 形式の文字列が、その中 + 身が lisp であるかのように強調される。AutoLisp 用に + 便利である。 + g:lisp_rainbow : この変数が存在し、0以外であると段階の異なる括弧に + 対して異なる強調がつくようになる。 +< +オプション g:lisp_rainbow は括弧とバッククォートされた括弧に対して10段階の異な +る色をつける。色づけ段階の多さのため、rainbow モード自身が ctermfg とguifg を +使って強調を指定する (rainbow モードでない場合はそうではない)。それゆえ、強調 +グループを使う普通のカラースキームの影響を受けない。実際にどう強調されるかは +dark/bright の設定 (|'bg'| を参照) による。 + + +LITE *lite.vim* *ft-lite-syntax* lite構文強調には2つのオプションがある。 @@ -1374,7 +1549,7 @@ lite構文強調には2つのオプションがある。 :let lite_minlines = 200 -LPC *lpc.vim* *lpc-syntax* +LPC *lpc.vim* *ft-lpc-syntax* LPCはシンプルでメモリ効率的な言語、Lars Pensj| Cの略である。LPCのファイル名は 通常*.cである。これらのファイルをLPCと認識するとCプログラムのみを書くユーザの @@ -1414,17 +1589,26 @@ uLPCはPike用に開発されている。なのでPike構文を代わりに使 前を.pikeとすること。 -LUA *lua.vim* *lua-syntax* +LUA *lua.vim* *ft-lua-syntax* -この構文ファイルはLua 4.0とLua 5.0(デフォルト)用に使える。Lua 4.0でプログラミ -ングしているなら、こうする: > +この構文ファイルはLua 4.0とLua 5.0, 5.1(デフォルト)用に使える。グローバル変数 +lua_version と lua_subversion を使うと、これらのバージョンを指定することができ +る。例えば、Lua 4.0 の構文強調を有効にするには次のコマンドを使う: > :let lua_version = 4 -変数lua_versionが存在しない場合には5にセットされる。 +Lua 5.0 を使っているなら、次のコマンドを使う: > + + :let lua_version = 5 + :let lua_subversion = 0 + +強調を Lua 5.1 に戻すには次のようにする: > + :let lua_version = 5 + :let lua_subversion = 1 -MAIL *mail.vim* + +MAIL *mail.vim* *ft-mail.vim* Vimはemailの標準的な要素(ヘッダ、シグネチャ、引用文、URL / emailアドレス)の全 てを強調する。標準的な慣習に従い、シグネチャは、"--"とそれに続く任意個の空白、そ @@ -1441,7 +1625,7 @@ Vimは']', '}', '|', '>'で始まる行または'>'が続く単語を引用文 :let mail_minlines = 30 -MAKE *make.vim* *make-syntax* +MAKE *make.vim* *ft-make-syntax* Makefileでは通常エラーを見つけやすくするためにコマンドが強調される。しかし、こ れは色が多すぎるかもしれない。この機能をオフにするにはこうする: > @@ -1449,7 +1633,7 @@ Makefileでは通常エラーを見つけやすくするためにコマンドが :let make_no_commands = 1 -MAPLE *maple.vim* *maple-syntax* +MAPLE *maple.vim* *ft-maple-syntax* Waterloo Maple IncによるMaple Vは記号代数をサポートしている。その言語はユーザ によって選択的にロードされる関数のパッケージをたくさんサポートしている。Maple @@ -1473,7 +1657,15 @@ V release 4で供給される標準的なパッケージセットの関数がユ mv_finance mv_logic mv_powseries -MOO *moo.vim* *moo-syntax* +MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax* + +次を .vimrc に書いておかないかぎり、空の *.m ファイルは自動的に Matlab のファ +イルであるとみなされる: > + + let filetype_m = "mma" + + +MOO *moo.vim* *ft-moo-syntax* 式の中でCスタイルのコメントを使っていて、それが強調を乱している場合は、Cスタイ ル用の拡張マッチ(これは遅い!)を使うことが出来る: > @@ -1507,7 +1699,7 @@ MOO *moo.vim* *moo-syntax* :syn keyword mooKnownBuiltinFunction sprintf contained -MSQL *msql.vim* *msql-syntax* +MSQL *msql.vim* *ft-msql-syntax* msql構文強調には2つのオプションがある。 @@ -1521,7 +1713,7 @@ msql構文強調には2つのオプションがある。 :let msql_minlines = 200 -NCF *ncf.vim* *ncf-syntax* +NCF *ncf.vim* *ft-ncf-syntax* NCF構文強調には1つのオプションがある。 @@ -1532,7 +1724,7 @@ ncf.vimによって認識されない文をエラーとして強調させたい これらをエラーとして強調させたくないなら、この変数をセットしないでおく。 -NROFF *nroff.vim* *nroff-syntax* +NROFF *nroff.vim* *ft-nroff-syntax* nroff構文ファイルはそのままでAT&T n/troffに対応している。構文ファイルに含まれ ているGNU groff拡張機能を使うには、それを有効化する必要がある。 @@ -1597,7 +1789,7 @@ stretchの概念を持たず、入力に水平、垂直の空白があると全 ーバルの両方でgroff構文強調することができる。 -OCAML *ocaml.vim* *ocaml-syntax* +OCAML *ocaml.vim* *ft-ocaml-syntax* OCaml構文ファイルは以下の拡張子を持つファイルに対応している: .ml, .mli, .mll .mly。以下の変数をセットすると、標準的OCaml構文からcamlp4プリプロセッサでサポ @@ -1611,7 +1803,7 @@ OCaml構文ファイルは以下の拡張子を持つファイルに対応して :let ocaml_noend_error = 1 -PAPP *papp.vim* *papp-syntax* +PAPP *papp.vim* *ft-papp-syntax* PApp構文ファイルは.pappファイルと、その小さな拡張、トップレベルのファイルフォ ーマットとしてxmlを用いたperl/xml/html/その他の混合である.pxml, .pxslファイル @@ -1627,7 +1819,7 @@ phtmlセクションの内側のhtmlコードを構文強調しようとする: http://papp.plan9.de -PASCAL *pascal.vim* *pascal-syntax* +PASCAL *pascal.vim* *ft-pascal-syntax* "*.p"にマッチするファイルのタイプはProgressかPascalである。自動判別が機能しな いなら、またはProgressファイルを一切編集しないとわかっているなら、これをvimrc @@ -1678,7 +1870,7 @@ pascal_gpc, pascal_fpcがある。デフォルトの拡張はTurbo Pascalに合 :let pascal_no_tabs=1 -PERL *perl.vim* *perl-syntax* +PERL *perl.vim* *ft-perl-syntax* perl用の構文強調にはたくさんのオプションがある。 @@ -1686,14 +1878,23 @@ PODファイルやPODセグメントを使っているなら、こうすると :let perl_include_pod = 1 +パースの複雑さを軽減するために (そしてパフォーマンスを上げるために) 、変数名と +内容のパースにおける2つの要素をオフにすることができる。 > + 変数名と関数名中のパッケージ参照('$PkgName::VarName'中の'PkgName::'のような)を -他の名前と区別したいなら: > +他の名前と区別しないようにするには次のようにする: > + + :let perl_no_scope_in_variables = 1 - :let perl_want_scope_in_variables = 1 +(Vim 6.x では違う方法だった: "perl_want_scope_in_variables" を設定するとこの機 +能が有効になった) -'@{${"foo"}}'のように複雑なものをパースさせたいなら: > +'@{${"foo"}}'のように複雑なものをパースさせたくないなら次のようにする: > - :let perl_extended_vars = 1 + :let perl_no_extended_vars = 1 + +(Vim 6.x では違う方法だった: "perl_extended_vars" を設定するとこの機能が有効に +なった) 文字列の色づけは変更できる。デフォルトでは文字列とqq friendsは第1行と同じよう に強調される。変数perl_string_as_statementをセットすると第2行のように強調され @@ -1725,8 +1926,19 @@ perlで折りたたみを使いたいならperl_foldをセットすること: > :let perl_fold = 1 +if 文などでも同様にブロックを折り畳みたければ、次のように設定する: > + + :let perl_fold_blocks = 1 + +perl の折り畳みが有効になっているとき、package や sub を折り畳みたくなければ、 +対応する変数を設定する: > + + :unlet perl_nofold_packages + :unlet perl_nofold_subs -PHP3 and PHP4 *php.vim* *php3.vim* *php-syntax* *php3-syntax* + + +PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* [注意: これは以前は"php3"と呼ばれていた。しかし現在はphp4もサポートしているの で"php"と名前が変更された] @@ -1779,7 +1991,19 @@ x > 0 少なくともx行上までシンクロナイズ x = 0 最初からシンクロナイズ -PPWIZARD *ppwiz.vim* *ppwiz-syntax* +PLAINTEX *plaintex.vim* *ft-plaintex-syntax* + +TeX とは組版言語であり、plaintex は「素の」TeX に対して使われるファイルタイプ +である。*.tex ファイルを決して素の TeX と認識してほしくないならば +|ft-tex-plugin| を参照。 + +この構文ファイルは次のオプションを持つ > + + let g:plaintex_delimiters = 1 + +角括弧 "[]" と波括弧 "{}" を強調させるには上の変数を設定する。 + +PPWIZARD *ppwiz.vim* *ft-ppwiz-syntax* PPWizardはHTMLとOS/2 INFファイル用のプリプロセッサである。 @@ -1800,7 +2024,7 @@ PPWizardはHTMLとOS/2 INFファイル用のプリプロセッサである。 HTMLコードを通常のテキストのように扱う。 -PHTML *phtml.vim* *phtml-syntax* +PHTML *phtml.vim* *ft-phtml-syntax* phtml用の構文強調には2つのオプションがある。 @@ -1814,7 +2038,7 @@ phtml用の構文強調には2つのオプションがある。 :let phtml_minlines = 200 -POSTSCRIPT *postscr.vim* *postscr-syntax* +POSTSCRIPT *postscr.vim* *ft-postscr-syntax* PostScript用の構文強調にはいくつかのオプションがある。 @@ -1863,8 +2087,8 @@ postscr_andornot_binaryを定義すると、それらは2項演算子として :let postscr_andornot_binary=1 < - *ptcap.vim* -PRINTCAP + TERMCAP *ptcap-syntax* *termcap-syntax* *printcap-syntax* + *ptcap.vim* *ft-printcap-syntax* +PRINTCAP + TERMCAP *ft-ptcap-syntax* *ft-termcap-syntax* この構文ファイルはprintcapとtermcapデータベースに適用される。 @@ -1888,7 +2112,7 @@ ptcapになる。 (デフォルトは20行) -PROGRESS *progress.vim* *progress-syntax* +PROGRESS *progress.vim* *ft-progress-syntax* "*.w"にマッチするファイルのタイプはProgressかCWEBである。自動判別がうまく機能 しないなら、またはcwebファイルを一切編集しないとわかっているなら、次をvimrcに @@ -1901,7 +2125,7 @@ PROGRESS *progress.vim* *progress-syntax* -PYTHON *python.vim* *python-syntax* +PYTHON *python.vim* *ft-python-syntax* Python構文強調をコントロールするオプションは4つある。 @@ -1921,7 +2145,7 @@ Python構文強調をコントロールするオプションは4つある。 :let python_highlight_all = 1 -QUAKE *quake.vim* *quake-syntax* +QUAKE *quake.vim* *ft-quake-syntax* Quake構文定義はQuakeエンジンのどれかに基づくほとんど全てのFPS(First Person Shooter)用に対応するはずである。しかし3つのゲーム(Quake, Quake 2, Quake 3 @@ -1942,7 +2166,7 @@ Quake 3 Arenaでのみ利用可能なコマンドを強調するように設定: いコマンドも強調してしまうかもしれない。 -READLINE *readline.vim* *readline-syntax* +READLINE *readline.vim* *ft-readline-syntax* readlineライブラリは主としてBASHシェルで使われ、BASHはかなりの数のコマンドとオ プションを追加している。これらの項目を同様に強調するには次を|vimrc|に加えるか @@ -1953,7 +2177,7 @@ readlineライブラリは主としてBASHシェルで使われ、BASHはかな ようになる。 -REXX *rexx.vim* *rexx-syntax* +REXX *rexx.vim* *ft-rexx-syntax* 上にスクロールしているときに強調間違いが出て、それがCTRL-Lで再描画すると直るよ うなら、変数"rexx_minlines"の値を大きくしてみるとよい: > @@ -1962,32 +2186,73 @@ REXX *rexx.vim* *rexx-syntax* くすることの欠点は、再描画が遅くなることである。 -RUBY *ruby.vim* *ruby-syntax* +RUBY *ruby.vim* *ft-ruby-syntax* -Ruby構文強調にはいくつかのオプションがある。 +Ruby構文強調にはたくさんのオプションがある。 デフォルトではキーワード"end"はそれに対応するブロック開始文にしたがって色づけ される。この機能は便利だが、コストがかかる: 再描画が遅くなったら(または色機能 の貧弱なターミナルを使っているなら)変数"ruby_no_expensive"を定義することによっ てこの機能をオフにできる: > + :let ruby_no_expensive = 1 + この場合すべての制御キーワードに同じ色が使われる。 この機能を有効化したいが、 上にスクロールしているときに強調間違いが出て、それがCTRL-Lで再描画すると直るよ うなら、変数"ruby_minlines"を50以上の値にセットしてみるとよい: > + :let ruby_minlines = 100 + 理想的にはこの値はファイル中の最も大きいクラスやモジュールの長さよりも大きくし ておくとよい。 -最後に、色をつける単語をもっと少なくしたいなら"ruby_no_identifiers"を定義する -ことが出来る: > +"ruby_no_identifiers" を定義すると、特別な識別子が強調されなくなる: > + :let ruby_no_identifiers = 1 -こうすると"ConstantName", "$global_var", "@instance_var", "| iterator |", -":symbol".のような特別な識別子の強調をやめる。 +これによって "ConstantName", "$global_var", "@@class_var", "@instance_var", +"| block_param |", ":symbol" のような特別な識別子が強調されなくなる。 + +Kernel, Module, Object などの重要なメソッドはデフォルトで強調される。 +"ruby_no_special_methods" を定義するとこれらの強調がされなくなる: > + + :let ruby_no_special_methods = 1 + +これによって "require", "attr", "private", "raise", "proc" などの重要なメソッ +ドの強調がされなくなる。 + +"ruby_space_errors" を定義するとホワイトスペースのエラーが強調されるようになる。 + + :let ruby_space_errors = 1 + +これによって行末のホワイトスペースやタブ文字の前のスペース文字がエラーとして強 +調されるようになる。これは "ruby_no_trail_space_error" と +"ruby_no_tab_space_error" を定義すると改善することができる。これらはそれぞれ行 +末のホワイトスペースとスペース文字の後のタブ文字を無視する。 + +"ruby_fold" を定義すると折り畳みを有効にすることができる: > + + :let ruby_fold = 1 + +これを定義すると、オプション 'foldmethod' が "syntax" になり、クラス、モジュー +ル、メソッド、コードブロック、ヒアドキュメント、コメントの折り畳みを行うように +なる。 + + +SCHEME *scheme.vim* *ft-scheme-syntax* + +デフォルトでは R5RS のキーワードだけが強調され、正しくインデントされる。 -SDL *sdl.vim* *sdl-syntax* +変数 b:is_mzscheme または g:is_mzscheme が定義されていると、MzScheme 固有の設 +定が使われる。 + +また、scheme.vim は Chicken Scheme->C コンパイラのキーワードにも対応している。 +それを有効にするには b:is_chicken または g:is_chicken を定義する。 + + +SDL *sdl.vim* *ft-sdl-syntax* SDL用の強調にはいくつかのキーワードが抜けているかもしれない。しかしSDLにはたく さんのキーワードがあるので、すべてに対応することはほとんど不可能である。 @@ -2004,7 +2269,7 @@ SDL用の強調にはいくつかのキーワードが抜けているかもし インデントもおそらく不完全であるが、今のところ私はこれでとても満足している。 -SED *sed.vim* *sed-syntax* +SED *sed.vim* *ft-sed-syntax* タブをTodoと同じようにハイライトさせ、通常の空白から目立つようにさせるには 次の行をvimrcに書き、"highlight_sedtabs"を定義する > @@ -2025,7 +2290,7 @@ SED *sed.vim* *sed-syntax* このバグを容認している。 -SGML *sgml.vim* *sgml-syntax* +SGML *sgml.vim* *ft-sgml-syntax* SGMLファイル中のタグを強調する方法は以下のように動作する。 @@ -2063,9 +2328,9 @@ SGMLファイル中のタグを強調する方法は以下のように動作す 用した) -SH *sh.vim* *sh-syntax* +SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* -これは「普通の」Unix (Bourne) sh、bashそしてKornシェルをカバーしている。 +これは「普通の」Unix (Borne) sh、bashそしてKornシェルをカバーしている。 Vimは様々なファイル名がどのタイプであるかを指定することによって、どのシェルが 使われているかを決定しようとする: > @@ -2077,17 +2342,24 @@ Vimは様々なファイル名がどのタイプであるかを指定するこ /bin/sh /bin/ksh /bin/bash)。第一行でシェルを指定されていれば、そのシェルが使 用される。しかしいくつかのファイル(例. .profile)はシェルファイルであることはわ かっていても、どのタイプか明らかではない。さらに、多くのシステムでshは -"bash"(linux)や"ksh"(posix)へのシンボリックリンクになっている。 +"bash"(Linux, Windows+cygwin)や"ksh"(Posix)へのシンボリックリンクになっている。 以下の3つの変数のどれかを.vimrcで定義することにより、デフォルトを設定すること が出来る: ksh: > - let is_kornshell = 1 + let g:is_kornshell = 1 +< posix: (これは is_kornshell を1に設定することと同じ) > + let g:is_posix = 1 < bash: > - let is_bash = 1 -< sh: > - let is_sh = 1 + let g:is_bash = 1 +< sh: (デフォルト) Borne shell > + let g:is_sh = 1 + +"#! ..." という行がなく、かつユーザが上の方法でデフォルトの sh.vim の構文を設 +定していない場合、sh.vim は Borne シェルの構文であると仮定する。エラーレポート +に RFC や市場浸透統計の引用を含める必要はありません。単に .vimrc でシステムで +使われるデフォルトの sh のバージョンを選択してください。 .vimrcで以下のように設定すると > let g:sh_fold_enabled= 1 @@ -2113,7 +2385,7 @@ Vimは様々なファイル名がどのタイプであるかを指定するこ さい値にすること。欠点は強調間違いが出るかもしれないことである。 -SPEEDUP (AspenTech plant simulator) *spup.vim* *spup-syntax* +SPEEDUP (AspenTech plant simulator) *spup.vim* *ft-spup-syntax* Speedup構文ファイルにはいくつかのオプションがある: @@ -2142,6 +2414,21 @@ Speedup構文ファイルにはいくつかのオプションがある: い。 +SQL *sql.vim* *ft-sql-syntax* + *sqlinformix.vim* *ft-sqlinformix-syntax* + *sqlanywhere.vim* *ft-sqlanywhere-syntax* + +SQLにはANSI標準があるのだが、ほとんどのデータベースエンジンは独自の拡張を追加 +している。現在のところ、VimはOracleとInformixのSQL方言をサポートしている。 +デフォルトではVimは"*.sql"のファイルをOracle SQLであると判断する。 + +現在のところ、Vimは構文スクリプトによって、多様なベンダのSQLに対応している。 +デフォルト設定をOracleから他の対応しているSQLに変更することができる。また、 +バッファごとに使うSQLの方言を変えることも簡単にできる。 + +より詳しい説明は|sql.txt|を参照。 + + TCSH *tcsh.vim* *tcsh-syntax* これは"tcsh"という名前のシェルをカバーしている。これはcshのスーパーセットであ @@ -2162,19 +2449,31 @@ tcshはシェル変数"backslash_quote"をセットしていない限り文字 値にすることの欠点は、再描画が遅くなることである。 -TEX *tex.vim* *tex-syntax* +TEX *tex.vim* *ft-tex-syntax* -追い込みコメント/Math? ~ +*tex-folding* +構文折り畳み? ~ -tex用の構文強調はTeX, LaTeX, AmsTeXをサポートしている。normal, texZone, -texMathZoneの3つの主な区間がサポートされている。これらの区域を適切に区切るよう -かなりの努力がされたが、$..$と$$..$$で線引きされる区間は開始・終了のパターンと -まったく同じにシンクロナイズさせることは出来ない。その結果、特別な"TeX -comment"が提供されている > +<syntax/tex.vim>のバージョン28以降では、構文による部分、章、節、小節などの折り +畳みに対応している。それを有効にするには次の行を<.vimrc>に書き、> + let g:tex_fold_enabled=1 +:set fdm=syntaxとする。後者をLaTeXファイルの末尾にモードラインとして書いておく +といいかもしれない: > + % vim: fdm=syntax +< +*tex-runon* +追い込みコメント/Mathについて ~ + +<syntax/tex.vim>の構文強調はTeX, LaTeX, AmsTeXをサポートしている。normal, +texZone, texMathZoneの3つの主な区間・範囲がサポートされている。これらの区間を +適切に区切るようかなりの努力がされたが、$..$と$$..$$で線引きされる区間は開始・ +終了のパターンとまったく同じにシンクロナイズさせることは出来ない。その結果、特 +別な"TeX comment"が提供されている > %stopzone このコメントがあるとここで強制的にtexZoneまたはtexMathZoneの強調を終わらせる。 -構文強調が遅い? ~ +*tex-slow* +構文強調が遅いならば ~ 遅いコンピュータを使っているなら、これらの値を減らすとよいかもしれない > :syn sync maxlines=200 @@ -2183,34 +2482,36 @@ comment"が提供されている > らは第一にシンクロナイズ(つまり、画面最上行のテキストがどのグループに入るか)に 影響を与える。 -過度なエラー強調? ~ +*tex-error* +エラーの強調が行き過ぎならば ~ <tex.vim>は様々な種類のレキシカルエラーチェックをサポートしている。すなわち、 エラーチェックは暇なときにはとても便利だが、実際にはエラーでない箇所もエラーと 示すかもしれない。それが嫌なら、次の行を<.vimrc>に置くとよい: > let tex_no_error=1 -すると<tex.vim>によるすべてのエラーチェックが停止される。 +すると<syntax/tex.vim>によるすべてのエラーチェックが停止される。 -新しいMathグループが必要? ~ +*tex-math* +新しいMathグループが必要ならば ~ -新しいmathグループをLaTeXに含めたいなら、以下のコードがそうする例である: > +新しいmathグループをLaTeXに含めたいなら、以下のコードがその例となるだろう: > + + call TexNewMathZone(sfx,mathzone,starform) +新しいmathグループに一意な接尾辞をつけたいと思うだろう(現在のところ、AからLま +でとVからZまでは<syntax/tex.vim>自身によって取得されている)。 +例として、<syntax/tex.vim>でeqnarrayがどのように設定されているかを見てみよ +う: > + call TexNewMathZone("D","eqnarray",1) +"mathzone"をあなたが作ったmathグループの名前に変える必要がある。 +また、それが呼ばれるようにするために.vim/after/syntax/tex.vimに書くこと。 +変数"starform"が真ならば、あなたが作ったmathグループがアスタリスクつきの形を +もつことを意味する(例. eqnarray*)。 - syn cluster texMathZones add=texMathZoneLOCAL - syn region texMathZoneLOCAL start="\\begin\s*{\s*LOCALMATH\s*}" - \ end="\\end\s*{\s*LOCALMATH\s*}" keepend - \ contains=@texMathZoneGroup - if !exists("tex_no_math") - syn sync match texSyncMathZoneLOCAL grouphere texMathZoneLOCAL - \ "\\begin\s*{\s*LOCALMATH\*\s*}" - syn sync match texSyncMathZoneLOCAL groupthere NONE - \ "\\end\s*{\s*LOCALMATH\*\s*}" - endif - hi link texMathZoneLOCAL texMath -< LOCALMATHをあなたが決めた新しいmathグループに書き換える必要がある。そしてこれ を.vim/after/syntax/tex.vimに加えること。 -新しいスタイルを始める? ~ +*tex-style* +新しいスタイルを始めるには ~ *.texファイルで"\makeatletter"を使う人がいるかもしれないので、コマンド中で"@" が使えるようになっている。しかし*.texファイルは次の拡張子: sty cls clo dtx ltx @@ -2223,7 +2524,7 @@ LOCALMATHをあなたが決めた新しいmathグループに書き換える必 法を受け入れるようになる。 -TF *tf.vim* *tf-syntax* +TF *tf.vim* *ft-tf-syntax* tfの構文強調には1つのオプションがある。 @@ -2233,7 +2534,7 @@ tfの構文強調には1つのオプションがある。 :let tf_minlines = your choice -VIM *vim.vim* *vim-syntax* +VIM *vim.vim* *ft-vim-syntax* より正確な構文強調と画面更新速度にはトレードオフがある。正確さを向上させるには 、変数g:vim_minlinesの値を大きくすればよい。変数g:vim_maxlinesは画面更新速度を @@ -2253,8 +2554,14 @@ tcl)のサポートを犠牲にする代わりに、vimスクリプト用の構 g:vimembedscript == 0 埋め込みスクリプト言語用の構 文強調を読み込まない。 +syntax/vim.vimによるエラーの強調はすべて正しいとは限らない。Vimスクリプトは正 +しく強調するのが難しい言語である。エラーの強調を抑制するには、次を|vimrc|に書 +けばよい: > + + let g:vimsyntax_noerror = 1 -XF86CONFIG *xf86conf.vim* *xf86conf-syntax* + +XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax* XF86Configファイルの構文はXFree86 v3.xとv4.xで異なっている。両方のバージョンが サポートされている。自動的に判定がされるが、完全からはほど遠い。手動でバージョ @@ -2268,7 +2575,7 @@ XF86Configファイルの構文はXFree86 v3.xとv4.xで異なっている。両 ハイライトさせたいなら"__s yn con gr_e_e_n"でなく"SyncOnGreen"と書くこと。 -XML *xml.vim* *xml-syntax* +XML *xml.vim* *ft-xml-syntax* Xml名前空間がデフォルトで強調される。次のグローバル変数をセットするとそれが無 効化される: > @@ -2287,7 +2594,7 @@ xml構文ファイルを使うと、開始タグと終了タグの間を折り ではそうである。 -X Pixmaps (XPM) *xpm.vim* *xpm-syntax* +X Pixmaps (XPM) *xpm.vim* *ft-xpm-syntax* xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を生成する。そのため、色 設定文字列などを変更したときは":set syn=xpm"などとしてxpm.vimを読み直さなけれ @@ -2298,7 +2605,7 @@ xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を マウスで図を描きたければ次のようにしてみるとよい: > :function! GetPixel() - : let c = getline(line("."))[col(".") - 1] + : let c = getline(".")[col(".") - 1] : echo c : exe "noremap <LeftMouse> <LeftMouse>r".c : exe "noremap <LeftDrag> <LeftMouse>r".c @@ -2361,13 +2668,31 @@ xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を 大文字・小文字の区別 *:syn-case* *E390* -:sy[ntax] case [match|ignore] +:sy[ntax] case [match | ignore] これ以降の":syntax"コマンドが大文字・小文字を区別するかどうかを定義す る。"match"を使うと区別し、"ignore"を使うと区別しなくなる。これ以前の 要素には影響せず、次の":syntax case"コマンドまでのすべての要素に影響 する。 +スペルチェック *:syn-spell* + +:sy[ntax] spell [toplevel | notoplevel | default] + これは構文アイテムに入っていないテキストに対して、どこでスペルチェック + を行うかを定義する: + + toplevel: テキストのスペルチェックを行う。 + notoplevel: テキストのスペルチェックを行わない。 + default: クラスタ@Spellがあるときスペルチェックを行わない。 + + 構文アイテムに入っているテキストはクラスタ@Spellと@NoSpellを使う + |spell-syntax|。クラスタ@Spellと@NoSpellがないときは、スペルチェックは + "default"と"toplevel"に対して行われる。 + + スペルチェックを有効化するにはオプション'spell'をオンにしなければなら + ない。 + + キーワードの定義 *:syn-keyword* :sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] @@ -2387,7 +2712,7 @@ xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を :syntax keyword Type contained int long char :syntax keyword Type int long contained char :syntax keyword Type int long char contained -< +< *E789* VimのExコマンドのようにキーワードに短縮形があるとき、省略可能な部分を []のでくくることによって受け入れるキーワードをいっぺんに定義することが できる: > @@ -2942,7 +3267,7 @@ region item end - yes - yes - yes yes < abcfoostringbarabc mmmmmmmmmmm マッチ部分 - ssrrrreee start/region/endとして強調される部分 ("Foo", "Exa", "Bar") + sssrrreee start/region/endとして強調される部分 ("Foo", "Exa", "Bar") Leading context *:syn-lc* *:syn-leading* *:syn-context* @@ -3259,6 +3584,7 @@ Example: > 引数"groupthere"なしの場合。シンクロナイズポイントの検索の際にスキップ されるリージョンやマッチを定義する。 + *syn-sync-linecont* :syntax sync linecont {pattern} {pattern}とのマッチが次の行にも継続されるとみなされる。つまりシンクロ @@ -3317,6 +3643,10 @@ Example: > :echo g:colors_name < 再帰的な読み込みはされない。つまりカラースキームスクリ プト中で":colorscheme"を使うことはできない。 + カラースキームが読み込まれた後、自動コマンドイベント + |ColorScheme|が発生する。カラースキームファイルを書く + ための情報については次を参照: > + :edit $VIMRUNTIME/colors/README.txt :hi[ghlight] 属性がセットされた強調グループを全て表示する。 @@ -3354,6 +3684,16 @@ Example: > 行されるのと同じである: > :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold < + *:highlight-verbose* +'verbose'を0でない値にして強調グループの一覧を表示すると、それが最後に設定され +た場所も表示される。例: > + :verbose hi Comment +< Comment xxx term=bold ctermfg=4 guifg=Blue ~ + Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~ + +":hi clear"が実行されると、このコマンドを実行したスクリプトがデフォルト値とし +て言及される。より詳しくは|:verbose-cmd|を参照。 + *highlight-args* *E416* *E417* *E423* 強調に関しては3種類のターミナルがある: term 通常のターミナル(vt100, xterm) @@ -3367,11 +3707,14 @@ gui GUI 1. highlightコマンドの引数(通常のターミナル用) + *bold* *underline* *undercurl* + *inverse* *italic* *standout* term={attr-list} *attr-list* *highlight-term* *E418* attr-listはカンマ区切りのリスト(スペースは入れない)で、要素は以下の通 り(順序はどうでもよい): bold underline + undercurl 必ずしも使用できるとは限らない reverse inverse reverseと同じ italic @@ -3380,6 +3723,9 @@ term={attr-list} *attr-list* *highlight-term* *E418* ここで"bold"を指定してもよいし、太文字のフォントを使ってもよい。どちら も同じことになる。 + "undercurl"は波線のことである。"undercurl"が使用できないときは + "underline"が使われる。一般的には"undercurl"はGUIでのみ使用できる。そ + の色は|highlight-guisp|で設定できる。 start={term-list} *highlight-start* *E422* stop={term-list} *term-list* *highlight-stop* @@ -3524,7 +3870,10 @@ font={font-name} *highlight-font* guifg={color-name} *highlight-guifg* guibg={color-name} *highlight-guibg* - guifgは文字色、guibgは背景色を指定する。いくつか特別な名前がある: +guisp={color-name} *highlight-guisp* + guifgは文字色、guibgは背景色、guispは波線の色を指定する。これらはGUIで + 使用される。 + いくつか特別な名前がある: NONE no color (透明) bg 通常の背景色を使う background 通常の背景色を使う @@ -3553,8 +3902,8 @@ guibg={color-name} *highlight-guibg* RGB値によって色を指定することもできる。 フォーマットは"#rrggbb"、ここで "rr" Red値 - "bb" Blue値 "gg" Green値 + "bb" Blue値 これらの値は16進であり、範囲は"00"から"ff"。例: > :highlight Comment guifg=#11f0c3 guibg=#ff00ff < @@ -3566,6 +3915,10 @@ guibg={color-name} *highlight-guibg* Cursor カーソル下の文字 *hl-CursorIM* CursorIM Cursorと同じだが、IMEモードにいるとき使われる|CursorIM|。 + *hl-CursorColumn* +CursorColumn 'cursorcolumn'がオンになっているときのカーソルがある画面上の桁 + *hl-CursorLine* +CursorLine 'cursorline'がオンになっているときのカーソルがある画面上の行 *hl-Directory* Directory ディレクトリ名(とリストにある特別な名前) *hl-DiffAdd* @@ -3591,6 +3944,10 @@ IncSearch 'incsearch'の強調; ":s///c"で置換されたテキストにも使 *hl-LineNr* LineNr ":number"と":#"コマンドの行番号。オプション'number'がセットさ れているときはそれにも使われる。 + *hl-MatchParen* +MatchParen カーソル下の文字、または直後の文字が括弧であるとき、その文字と + 対応する括弧に使われる。|pi_paren.txt| + *hl-ModeMsg* ModeMsg 'showmode'のメッセージ (例. "-- INSERT --") *hl-MoreMsg* @@ -3601,6 +3958,14 @@ NonText ウィンドウの端の'~'と'@'、'showbreak'で設定された文字 とき">"が表示される)。 *hl-Normal* Normal 通常のテキスト + *hl-Pmenu* +Pmenu ポップアップメニュー: 通常の項目。 + *hl-PmenuSel* +PmenuSel ポップアップメニュー: 選択されている項目。 + *hl-PmenuSbar* +PmenuSbar ポップアップメニュー: スクロールバー。 + *hl-PmenuThumb* +PmenuThumb ポップアップメニュー: スクロールバーのつまみ部分。 *hl-Question* Question ヒットエンタープロンプト|hit-enter|とyes/noクエスチョン *hl-Search* @@ -3611,12 +3976,30 @@ Search 最後に検索した語の強調('hlsearch')を参照。 SpecialKey ":map"でリストされるメタキーと特別なキー。テキスト中の unprintableな文字を表示するのにも使われる。 一般に: 実際とは異なる文字で表示されるテキスト + *hl-SpellBad* +SpellBad スペルチェッカに認識されない単語。|spell| + これは他の強調と同時に組み合わせられる。 + *hl-SpellCap* +SpellCap 大文字で始まるべき単語。 |spell| + これは他の強調と同時に組み合わせられる。 + *hl-SpellLocal* +SpellLocal スペルチェッカによって他の地域で使われると判断される単語。 + |spell|これは他の強調と同時に組み合わせられる。 + *hl-SpellRare* +SpellRare スペルチェッカによってまず使わないと判断される単語。|spell| + これは他の強調と同時に組み合わせられる。 *hl-StatusLine* StatusLine カレントウィンドウのステータスライン *hl-StatusLineNC* StatusLineNC 非カレントウィンドウのステータスライン。 Note: これが"StatusLine"に等しい場合、カレントウィンドウのステ ータスラインに"^^^"が使われる。 + *hl-TabLine* +TabLine タブページの行の、アクティブでないタブページのラベル + *hl-TabLineFill* +TabLineFill タブページの行の、ラベルがない部分 + *hl-TabLineSel* +TabLineSel タブページの行の、アクティブなタブページのラベル *hl-Title* Title ":set all"、":autocmd"などによる出力のタイトル。 *hl-Visual* @@ -3630,7 +4013,7 @@ WarningMsg 警告メッセージ *hl-WildMenu* WildMenu 'wildmenu'補完における現在の候補 - *hl-User1* *hl-User1..9* + *hl-User1* *hl-User1..9* *hl-User9* 'statusline'構文によってステータスラインとルーラー('rulerformat'によって)中で9 個の強調が使えるようになっている。その名前はUser1からUser9である。 @@ -3760,6 +4143,11 @@ Unixでは~/.vim/after/syntax/syncolor.vimファイルを使うとよい。例: ムで定義された色が使われるのかわからなくなる場合がある。これはカラースキーム ファイルに依存する。|:colorscheme|を参照。 + *E679* +このsyncolor.vimが"syntax on"を実行しないこと、また、オプション'background'を +設定したりコマンド"colorscheme"を実行しないように注意すること。もしこれらを実 +行すると無限ループに陥ってしまう。 + *syntax_cmd* syntax/syncolor.vimファイルが読み込まれると、変数"syntax_cmd"が次の3つの値のう ちどれかにセットされる: @@ -3838,15 +4226,14 @@ Note: これらの設定は":syntax on"の前に行うこと。そうでない *colortest.vim* 色設定をテストするためのファイルがVimディストリビューションに入っている。これ を使うには次のコマンドを実行する: > - :e $VIMRUNTIME/syntax/colortest.vim - :so % + :runtime syntax/colortest.vim xtermのあるバージョン(とlinuxコンソールのような他のターミナル)は、たとえ色数が 8に定義されていても、より明るい文字色を出力することができる。そのため't_Co'が 8のとき、Vimは明るい文字色に対して"cterm=bold"属性をセットする。 *xfree-xterm* -16色以上を使うにはxtermの最新バージョンを入手すること(Xfree86 3.3以降に含まれ +16色以上を使うにはxtermの最新バージョンを入手すること(XFree86 3.3以降に含まれ ているはずである)。また、以下の場所でも最新バージョンが得られる: > http://invisible-island.net/xterm/xterm.html 次にそれをconfigureするよい方法を示す。これは88色を使い、termcap-query機能を有 From 3bcd4d5a8af46d45cc1f6346059f80e9e9ae0ec9 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 14 Jan 2007 17:58:22 +0000 Subject: [PATCH 077/783] fix: update sponsor, pi_zip, pi_vimball, pi_paren, pi_tar, print, uganda, debug, tabpage, pattern and usr_32 to 7.0 add: missing english files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@77 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/debug.txt | 151 ++++++++++ en/pattern.txt | 275 ++++++++++++----- en/pi_paren.txt | 50 +++ en/pi_tar.txt | 66 ++++ en/pi_vimball.txt | 92 ++++++ en/pi_zip.txt | 55 ++++ en/print.txt | 751 ++++++++++++++++++++++++++++++++++++++++++++++ en/sponsor.txt | 93 +++--- en/tabpage.txt | 371 +++++++++++++++++++++++ en/uganda.txt | 59 ++-- en/usr_32.txt | 151 ++++++++++ ja/debug.jax | 4 +- ja/pattern.jax | 11 +- ja/pi_paren.jax | 4 +- ja/pi_tar.jax | 31 +- ja/pi_vimball.jax | 23 +- ja/pi_zip.jax | 16 +- ja/print.jax | 18 +- ja/sponsor.jax | 9 +- ja/tabpage.jax | 8 +- ja/uganda.jax | 4 +- ja/usr_32.jax | 48 ++- 22 files changed, 2050 insertions(+), 240 deletions(-) create mode 100644 en/debug.txt create mode 100644 en/pi_paren.txt create mode 100644 en/pi_tar.txt create mode 100644 en/pi_vimball.txt create mode 100644 en/pi_zip.txt create mode 100644 en/print.txt create mode 100644 en/tabpage.txt create mode 100644 en/usr_32.txt diff --git a/en/debug.txt b/en/debug.txt new file mode 100644 index 000000000..599e18138 --- /dev/null +++ b/en/debug.txt @@ -0,0 +1,151 @@ +*debug.txt* For Vim version 7.0. Last change: 2006 May 01 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Debugging Vim *debug-vim* + +This is for debugging Vim itself, when it doesn't work properly. +For debugging Vim scripts, functions, etc. see |debug-scripts| + +1. Location of a crash, using gcc and gdb |debug-gcc| +2. Windows Bug Reporting |debug-win32| + +============================================================================== + +1. Location of a crash, using gcc and gdb *debug-gcc* + +When Vim crashes in one of the test files, and you are using gcc for +compilation, here is what you can do to find out exactly where Vim crashes. +This also applies when using the MingW tools. + +1. Compile Vim with the "-g" option (there is a line in the Makefile for this, + which you can uncomment). + +2. Execute these commands (replace "11" with the test that fails): > + cd testdir + gdb ../vim + run -u unix.vim -U NONE -s dotest.in test11.in + +3. Check where Vim crashes, gdb should give a message for this. + +4. Get a stack trace from gdb with this command: > + where +< You can check out different places in the stack trace with: > + frame 3 +< Replace "3" with one of the numbers in the stack trace. + +============================================================================== + +2. Windows Bug Reporting *debug-win32* + +If the Windows version of Vim crashes in a reproducible manner, you can take +some steps to provide a useful bug report. + + +GENERIC ~ + +You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb +for gvim.exe, or vim.pdb for vim.exe. The PDB should be available from the +same place that you obtained the executable. Be sure to use the PDB that +matches the EXE (same date). + +If you built the executable yourself with the Microsoft Visual C++ compiler, +then the PDB was built with the EXE. + +Alternatively, if you have the source files, you can import Make_ivc.mak into +Visual Studio as a workspace. Then select a debug configuration, build and +you can do all kinds of debugging (set breakpoints, watch variables, etc.). + +If you have Visual Studio, use that instead of the VC Toolkit and WinDbg. + +For other compilers, you should always use the corresponding debugger: TD for +a Vim executable compiled with the Borland compiler; gdb (see above +|debug-gcc|) for the Cygwin and MinGW compilers. + + + *debug-vs2005* +2.2 Debugging Vim crashes with Visual Studio 2005/Visual C++ 2005 Express ~ + +First launch vim.exe or gvim.exe and then launch Visual Studio. (If you don't +have Visual Studio, follow the instructions at |get-ms-debuggers| to obtain a +free copy of Visual C++ 2005 Express Edition.) + +On the Tools menu, click Attach to Process. Choose the Vim process. + +In Vim, reproduce the crash. A dialog will appear in Visual Studio, telling +you about the unhandled exception in the Vim process. Click Break to break +into the process. + +Visual Studio will pop up another dialog, telling you that no symbols are +loaded and that the source code cannot be displayed. Click OK. + +Several windows will open. Right-click in the Call Stack window. Choose Load +Symbols. The Find Symbols dialog will open, looking for (g)vim.pdb. Navigate +to the directory where you have the PDB file and click Open. + +At this point, you should have a full call stack with vim function names and +line numbers. Double-click one of the lines and the Find Source dialog will +appear. Navigate to the directory where the Vim source is (if you have it.) + +If you don't know how to debug this any further, follow the instructions +at ":help bug-reports". Paste the call stack into the bug report. + +If you have a non-free version of Visual Studio, you can save a minidump via +the Debug menu and send it with the bug report. A minidump is a small file +(<100KB), which contains information about the state of your process. +Visual C++ 2005 Express Edition cannot save minidumps and it cannot be +installed as a just-in-time debugger. Use WinDbg, |debug-windbg|, if you +need to save minidumps or you want a just-in-time (postmortem) debugger. + + *debug-windbg* +2.3 Debugging Vim crashes with WinDbg ~ + +See |get-ms-debuggers| to obtain a copy of WinDbg. + +As with the Visual Studio IDE, you can attach WinDbg to a running Vim process. +You can also have your system automatically invoke WinDbg as a postmortem +debugger. To set WinDbg as your postmortem debugger, run "windbg -I". + +To attach WinDbg to a running Vim process, launch WinDbg. On the File menu, +choose Attach to a Process. Select the Vim process and click OK. + +At this point, choose Symbol File Path on the File menu, and add the folder +containing your Vim PDB to the sympath. If you have Vim source available, +use Source File Path on the File menu. You can now open source files in WinDbg +and set breakpoints, if you like. Reproduce your crash. WinDbg should open the +source file at the point of the crash. Using the View menu, you can examine +the call stack, local variables, watch windows, and so on. + +If WinDbg is your postmortem debugger, you do not need to attach WinDbg to +your Vim process. Simply reproduce the crash and WinDbg will launch +automatically. As above, set the Symbol File Path and the Source File Path. + +To save a minidump, type the following at the WinDbg command line: > + .dump vim.dmp +< + *debug-minidump* +2.4 Opening a Minidump ~ + +If you have a minidump file, you can open it in Visual Studio or in WinDbg. + +In Visual Studio 2005: on the File menu, choose Open, then Project/Solution. +Navigate to the .dmp file and open it. Now press F5 to invoke the debugger. +Follow the instructions in |debug-vs2005| to set the Symbol File Path. + +In WinDbg: choose Open Crash Dump on the File menu. Follow the instructions in +|debug-windbg| to set the Symbol File Path. + + *get-ms-debuggers* +2.5 Obtaining Microsoft Debugging Tools ~ + +The Debugging Tools for Windows (including WinDbg) can be downloaded from + http://www.microsoft.com/whdc/devtools/debugging/default.mspx +This includes the WinDbg debugger. + +Visual C++ 2005 Express Edition can be downloaded for free from: + http://msdn.microsoft.com/vstudio/express/visualC/default.aspx + +========================================================================= + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/pattern.txt b/en/pattern.txt index fe013d1b3..4e0049359 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 6.3. Last change: 2004 May 09 +*pattern.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -16,8 +16,9 @@ explanations are in chapter 27 |usr_27.txt|. 5. Multi items |pattern-multi-items| 6. Ordinary atoms |pattern-atoms| 7. Ignoring case in a pattern |/ignorecase| -8. Compare with Perl patterns |perl-patterns| -9. Highlighting matches |match-highlight| +8. Composing characters |patterns-composing| +9. Compare with Perl patterns |perl-patterns| +10. Highlighting matches |match-highlight| ============================================================================== 1. Search commands *search-commands* *E486* @@ -117,6 +118,14 @@ gD Goto global Declaration. When the cursor is on a like "gd", except that the search for the keyword always starts in line 1. {not in Vi} + *1gd* +1gd Like "gd", but ignore matches inside a {} block that + ends before the cursor position. {not in Vi} + + *1gD* +1gD Like "gD", but ignore matches inside a {} block that + ends before the cursor position. {not in Vi} + *CTRL-C* CTRL-C Interrupt current (search) command. Use CTRL-Break on MS-DOS |dos-CTRL-Break|. @@ -153,6 +162,7 @@ The offset gives the cursor position relative to the found match: s[-num] [num] characters to the left of the start of the match b[+num] [num] identical to s[+num] above (mnemonic: begin) b[-num] [num] identical to s[-num] above (mnemonic: begin) + ;{pattern} perform another search, see |//;| If a '-' or '+' is given but [num] is omitted, a count of one will be used. When including an offset with 'e', the search becomes inclusive (the @@ -216,7 +226,7 @@ To clear the last used search pattern: > This will not set the pattern to an empty string, because that would match everywhere. The pattern is really cleared, like when starting Vim. -The search usual skips matches that don't move the cursor. Whether the next +The search usually skips matches that don't move the cursor. Whether the next match is found at the next character or after the skipped match depends on the 'c' flag in 'cpoptions'. See |cpo-c|. with 'c' flag: "/..." advances 1 to 3 characters @@ -224,6 +234,10 @@ match is found at the next character or after the skipped match depends on the The unpredictability with the 'c' flag is caused by starting the search in the first column, skipping matches until one is found past the cursor position. +When searching backwards, searching starts at the start of the line, using the +'c' flag in 'cpoptions' as described above. Then the last match before the +cursor position is used. + In Vi the ":tag" command sets the last search pattern when the tag is searched for. In Vim this is not done, the previous search pattern is still remembered, unless the 't' flag is present in 'cpoptions'. The search pattern is always @@ -243,9 +257,13 @@ switched off by setting the 's' flag in the 'shortmess' option. The highlight method 'w' is used for this message (default: standout). *search-range* -You cannot limit the search command "/" to a certain range of lines. A trick -to do this anyway is to use the ":substitute" command with the 'c' flag. -Example: > +You can limit the search command "/" to a certain range of lines by including +\%>l items. For example, to match the word "limit" below line 199 and above +line 300: > + /\%>199l\%<300llimit +Also see |/\%>l|. + +Another way is to use the ":substitute" command with the 'c' flag. Example: > :.,300s/Pattern//gc This command will search from the cursor position until line 300 for "Pattern". At the match, you will be asked to type a character. Type 'q' to @@ -267,7 +285,7 @@ the "*" is under your right hand middle finger (search to the right and down). ============================================================================== 2. The definition of a pattern *search-pattern* *pattern* *[pattern]* *regular-expression* *regexp* *Pattern* - *E76* *E361* *E363* *E383* *E476* + *E76* *E383* *E476* For starters, read chapter 27 of the user manual |usr_27.txt|. @@ -323,6 +341,50 @@ For starters, read chapter 27 of the user manual |usr_27.txt|. or \z( pattern \) |/\z(| +============================================================================== +3. Magic */magic* + +Some characters in the pattern are taken literally. They match with the same +character in the text. When preceded with a backslash however, these +characters get a special meaning. + +Other characters have a special meaning without a backslash. They need to be +preceded with a backslash to match literally. + +If a character is taken literally or not depends on the 'magic' option and the +items mentioned next. + */\m* */\M* +Use of "\m" makes the pattern after it be interpreted as if 'magic' is set, +ignoring the actual value of the 'magic' option. +Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used. + */\v* */\V* +Use of "\v" means that in the pattern after it all ASCII characters except +'0'-'9', 'a'-'z', 'A'-'Z' and '_' have a special meaning. "very magic" + +Use of "\V" means that in the pattern after it only the backslash has a +special meaning. "very nomagic" + +Examples: +after: \v \m \M \V matches ~ + 'magic' 'nomagic' + $ $ $ \$ matches end-of-line + . . \. \. matches any character + * * \* \* any number of the previous atom + () \(\) \(\) \(\) grouping into an atom + | \| \| \| separating alternatives + \a \a \a \a alphabetic character + \\ \\ \\ \\ literal backslash + \. \. . . literal dot + \{ { { { literal '{' + a a a a literal 'a' + +{only Vim supports \m, \M, \v and \V} + +It is recommended to always keep the 'magic' option at the default setting, +which is 'magic'. This avoids portability problems. To make a pattern immune +to the 'magic' option being set or not, put "\m" or "\M" at the start of the +pattern. + ============================================================================== 4. Overview of pattern items *pattern-overview* @@ -377,12 +439,14 @@ More explanation and examples below, follow the links. |/\ze| \ze \ze anything, sets end of match |/\%^| \%^ \%^ beginning of file |/zero-width| *E71* |/\%$| \%$ \%$ end of file |/zero-width| +|/\%V| \%V \%V inside Visual area |/zero-width| |/\%#| \%# \%# cursor position |/zero-width| +|/\%'m| \%'m \%'m mark m position |/zero-width| |/\%l| \%23l \%23l in line 23 |/zero-width| |/\%c| \%23c \%23c in column 23 |/zero-width| |/\%v| \%23v \%23v in virtual column 23 |/zero-width| -Character classes {not in Vi}: +Character classes {not in Vi}: */character-classes* |/\i| \i \i identifier character (see 'isident' option) |/\I| \I \I like "\i", but excluding digits |/\k| \k \k keyword character (see 'iskeyword' option) @@ -431,7 +495,7 @@ Character classes {not in Vi}: x x a character with no special meaning matches itself |/[]| [] \[] any character specified inside the [] -|/\%[]| \%[] \%[] a list of optionally matched atoms +|/\%[]| \%[] \%[] a sequence of optionally matched atoms |/\c| \c \c ignore case |/\C| \C \C match case @@ -442,6 +506,12 @@ Character classes {not in Vi}: |/\Z| \Z \Z ignore differences in Unicode "combining characters". Useful when searching voweled Hebrew or Arabic text. +|/\%d| \%d \%d match specified decimal character (eg \%d123 +|/\%x| \%x \%x match specified hex character (eg \%x2a) +|/\%o| \%o \%o match specified octal character (eg \%o040) +|/\%u| \%u \%u match specified multibyte character (eg \%u20ac) +|/\%U| \%U \%U match specified large multibyte character (eg + \%U12345678) Example matches ~ \<\I\i* or @@ -459,51 +529,6 @@ cat\Z Both "cat" and "càt" ("a" followed by 0x0300) though it may look the same. -============================================================================== -3. Magic */magic* - -Some characters in the pattern are taken literally. They match with the same -character in the text. When preceded with a backslash however, these -characters get a special meaning. - -Other characters have a special meaning without a backslash. They need to be -preceded with a backslash to match literally. - -If a character is taken literally or not depends on the 'magic' option and the -items mentioned next. - */\m* */\M* -Use of "\m" makes the pattern after it be interpreted as if 'magic' is set, -ignoring the actual value of the 'magic' option. -Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used. - */\v* */\V* -Use of "\v" means that in the pattern after it all ASCII characters except -'0'-'9', 'a'-'z', 'A'-'Z' and '_' have a special meaning. "very magic" - -Use of "\V" means that in the pattern after it only the backslash has a -special meaning. "very nomagic" - -Examples: -after: \v \m \M \V matches ~ - 'magic' 'nomagic' - $ $ $ \$ matches end-of-line - . . \. \. matches any character - * * \* \* any number of the previous atom - () \(\) \(\) \(\) grouping into an atom - | \| \| \| separating alternatives - \a \a \a \a alphabetic character - \\ \\ \\ \\ literal backslash - \. \. . . literal dot - \{ { { { literal '{' - a a a a literal 'a' - -{only Vim supports \m, \M, \v and \V} - -It is recommended to always keep the 'magic' option at the default setting, -which is 'magic'. This avoids portability problems. To make a pattern immune -to the 'magic' option being set or not, put "\m" or "\M" at the start of the -pattern. - - ============================================================================== 5. Multi items *pattern-multi-items* @@ -511,11 +536,6 @@ An atom can be followed by an indication of how many times the atom can be matched and in what way. This is called a multi. See |/multi| for an overview. -It is not possible to use a multi that can match more than one time after an -atom that can match an empty string. That's because this could result in an -endless loop. If you try it, you will get this error message: > - *, \+ or \{ operand could be empty -< */star* */\star* *E56* * (use \* when 'magic' is not set) Matches 0 or more of the preceding atom, as many as possible. @@ -566,7 +586,7 @@ endless loop. If you try it, you will get this error message: > \{-} matches 0 or more of the preceding atom, as few as possible {Vi does not have any of these} - n and m are positive decimal numbers + n and m are positive decimal numbers or zero If a "-" appears immediately after the "{", then a shortest match first algorithm is used (see example below). In particular, "\{-}" is @@ -625,7 +645,7 @@ endless loop. If you try it, you will get this error message: > position: "\(foo\)\@!bar" will match "bar" in "foobar", because at the position where "bar" matches, "foo" does not match. To avoid matching "foobar" you could use "\(foo\)\@!...bar", but that doesn't match a - bar at the start of a line. Use "\(foo\)\@<!bar". + bar at the start of a line. Use "\(foo\)\@<!bar". */\@<=* \@<= Matches with zero width if the preceding atom matches just before what @@ -729,7 +749,7 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"): */\>* \> Matches the end of a word: The previous char is the last char of a - word. The 'iskeyword' option specifies what is a word character. + word. The 'iskeyword' option specifies what is a word character. |/zero-width| */\zs* @@ -739,7 +759,7 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"): /^\s*\zsif < matches an "if" at the start of a line, ignoring white space. Can be used multiple times, the last one encountered in a matching - branch is used. Example: > + branch is used. Example: > /\(.\{-}\zsFab\)\{3} < Finds the third occurrence of "Fab". {not in Vi} {not available when compiled without the +syntax feature} @@ -770,6 +790,11 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"): position after the first "VIM". Searching from the end of the file backwards is easier! + */\%V* +\%V Match inside the Visual area. When Visual mode has already been + stopped match in the area that |gv| would reselect. + Only works for the current buffer. + */\%#* *cursor-position* \%# Matches with the cursor position. Only works when matching in a buffer displayed in a window. {not in Vi} @@ -784,10 +809,24 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"): < When 'hlsearch' is set and you move the cursor around and make changes this will clearly show when the match is updated or not. + */\%'m* */\%<'m* */\%>'m* +\%'m Matches with the position of mark m. +\%<'m Matches before the position of mark m. +\%>'m Matches after the position of mark m. + Example, to highlight the text from mark 's to 'e: > + /.\%>'s.*\%<'e.. +< Note that two dots are required to include mark 'e in the match. That + is because "\%<'e" matches at the character before the 'e mark, and + since it's a |/zero-width| match it doesn't include that character. + {not in Vi} + WARNING: When the mark is moved after the pattern was used, the result + becomes invalid. Vim doesn't automatically update the matches. + Similar to moving the cursor for "\%#" |/\%#|. + */\%l* */\%>l* */\%<l* \%23l Matches in a specific line. -\%<23l Matches above a specific line. -\%>23l Matches below a specific line. +\%<23l Matches above a specific line (lower line number). +\%>23l Matches below a specific line (higher line number). These three can be used to match specific lines in a buffer. The "23" can be any line number. The first line is 1. {not in Vi} WARNING: When inserting or deleting lines Vim does not automatically @@ -829,8 +868,8 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"): are halfway a Tab or other character that occupies more than one screen character. {not in Vi} WARNING: When inserting or deleting text Vim does not automatically - update the matches. This means Syntax highlighting quickly becomes - wrong. + update highlighted matches. This means Syntax highlighting quickly + becomes wrong. Example, to highlight the all characters after virtual column 72: > /\%>72v.* < When 'hlsearch' is set and you move the cursor around and make changes @@ -924,7 +963,7 @@ x A single character, with no special meaning, matches itself [] (with 'nomagic': \[]) */[]* */\[]* */\_[]* */collection* \_[] - A collection. This is a sequence of characters enclosed in brackets. + A collection. This is a sequence of characters enclosed in brackets. It matches any single character in the collection. Example matches ~ [xyz] any 'x', 'y' or 'z' @@ -937,6 +976,10 @@ x A single character, with no special meaning, matches itself "\_[^ab]" matches the end-of-line and any character but "a" and "b". This makes it Vi compatible: Without the "\_" or "\n" the collection does not match an end-of-line. + *E769* + When the ']' is not there Vim will not give an error message but + assume no collection is used. Useful to search for '['. However, you + do get E769 for internal searching. If the sequence begins with "^", it matches any single character NOT in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'. @@ -971,6 +1014,17 @@ x A single character, with no special meaning, matches itself a list of at least one character, each of which is either '-', '.', '/', alphabetic, numeric, '_' or '~'. These items only work for 8-bit characters. + */[[=* *[==]* + - An equivalence class. This means that characters are matched that + have almost the same meaning, e.g., when ignoring accents. The form + is: + [=a=] + Currently this is only implemented for latin1. Also works for the + latin1 characters in utf-8 and latin9. + */[[.* *[..]* + - A collation element. This currently simply accepts a single + character in the form: + [.a.] */\]* - To include a literal ']', '^', '-' or '\' in the collection, put a backslash before it: "[xyz\]]", "[\^xyz]", "[xy\-z]" and "[xyz\\]". @@ -988,6 +1042,11 @@ x A single character, with no special meaning, matches itself \t <Tab> \r <CR> (NOT end-of-line!) \b <BS> + \d123 decimal number of character + \o40 octal number of character up to 0377 + \x20 hexadecimal number of character up to 0xff + \u20AC hex. number of multibyte character up to 0xffff + \U1234 hex. number of multibyte character up to 0xffffffff NOTE: The other backslash codes mentioned above do not work inside []! - Matching with a collection can be slow, because each character in @@ -996,7 +1055,7 @@ x A single character, with no special meaning, matches itself much faster than "[0-9]" and matches the same characters. */\%[]* *E69* *E70* *E369* -\%[] A list of optionally matched atoms. This always matches. +\%[] A sequence of optionally matched atoms. This always matches. It matches as much of the list of atoms it contains as possible. Thus it stops at the first atom that doesn't match. For example: > /r\%[ead] @@ -1011,6 +1070,17 @@ x A single character, with no special meaning, matches itself < Matches the words "r", "re", "ro", "rea", "roa", "read" and "road". {not available when compiled without the +syntax feature} + */\%d* */\%x* */\%o* */\%u* */\%U* *E678* + +\%d123 Matches the character specified with a decimal number. Must be + followed by a non-digit. +\%o40 Matches the character specified with an octal number up to 0377. + Numbers below 040 must be followed by a non-octal digit or a non-digit. +\%x2a Matches the character specified with up to two hexadecimal characters. +\%u20AC Matches the character specified with up to four hexadecimal + characters. +\%U1234abcd Matches the character specified with up to eight hexadecimal + characters. ============================================================================== 7. Ignoring case in a pattern */ignorecase* @@ -1034,12 +1104,6 @@ Examples: \cfoo - - foo Foo FOO foo\C - - foo - */\Z* -When "\Z" appears anywhere in the pattern, composing characters are ignored. -Thus only the base characters need to match, the composing characters may be -different and the number of composing characters may differ. Only relevant -when 'encoding' is "utf-8". - Technical detail: *NL-used-for-Nul* <Nul> characters in the file are stored as <NL> in memory. In the display they are shown as "^@". The translation is done when reading and writing @@ -1064,7 +1128,27 @@ expect. But invalid bytes may cause trouble, a pattern with an invalid byte will probably never match. ============================================================================== -8. Compare with Perl patterns *perl-patterns* +8. Composing characters *patterns-composing* + + */\Z* +When "\Z" appears anywhere in the pattern, composing characters are ignored. +Thus only the base characters need to match, the composing characters may be +different and the number of composing characters may differ. Only relevant +when 'encoding' is "utf-8". + +When a composing character appears at the start of the pattern of after an +item that doesn't include the composing character, a match is found at any +character that includes this composing character. + +When using a dot and a composing character, this works the same as the +composing character by itself, except that it doesn't matter what comes before +this. + +The order of composing characters matters, even though changing the order +doen't change what a character looks like. This may change in the future. + +============================================================================== +9. Compare with Perl patterns *perl-patterns* Vim's regexes are most similar to Perl's, in terms of what you can do. The difference between them is mostly just notation; here's a summary of where @@ -1074,7 +1158,7 @@ Capability in Vimspeak in Perlspeak ~ ---------------------------------------------------------------- force case insensitivity \c (?i) force case sensitivity \C (?-i) -backref-less grouping \%(atom) (?:atom) +backref-less grouping \%(atom\) (?:atom) conservative quantifiers \{-n,m} *?, +?, ??, {}? 0-width match atom\@= (?=atom) 0-width non-match atom\@! (?!atom) @@ -1107,10 +1191,10 @@ Finally, these constructs are unique to Perl: - \& (which is to \| what "and" is to "or"; it forces several branches to match at one spot) - matching lines/columns by number: \%5l \%5c \%5v -- limiting the "return value" of a regex: \zs \ze +- setting the start and end of the match: \zs \ze ============================================================================== -9. Highlighting matches *match-highlight* +10. Highlighting matches *match-highlight* *:mat* *:match* :mat[ch] {group} /{pattern}/ @@ -1121,14 +1205,23 @@ Finally, these constructs are unique to Perl: < Instead of // any character can be used to mark the start and end of the {pattern}. Watch out for using special characters, such as '"' and '|'. + {group} must exist at the moment this command is executed. - The match overrides the 'hlsearch' highlighting. - 'ignorecase' does not apply, use |/\c| in the pattern to - ignore case. Otherwise case is not ignored. + + The {group} highlighting still applies when a character is + to be highlighted for 'hlsearch'. + Note that highlighting the last used search pattern with 'hlsearch' is used in all windows, while the pattern defined with ":match" only exists in the current window. It is kept when switching to another buffer. + + 'ignorecase' does not apply, use |/\c| in the pattern to + ignore case. Otherwise case is not ignored. + + Also see |matcharg()|, it returns the highlight group and + pattern of a previous :match command. + Another example, which highlights all characters in virtual column 72 and more: > :highlight rightMargin term=bold ctermfg=blue guifg=blue @@ -1143,4 +1236,20 @@ Finally, these constructs are unique to Perl: :mat[ch] none Clear a previously defined match pattern. + +:2mat[ch] {group} /{pattern}/ *:2match* +:2mat[ch] +:2mat[ch] none +:3mat[ch] {group} /{pattern}/ *:3match* +:3mat[ch] +:3mat[ch] none + Just like |:match| above, but set a separate match. Thus + there can be three matches active at the same time. The match + with the lowest number has priority if several match at the + same position. + The ":3match" command is used by the |matchparen| plugin. You + are suggested to use ":match" for manual matching and + ":2match" for another plugin. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/pi_paren.txt b/en/pi_paren.txt new file mode 100644 index 000000000..b3488496f --- /dev/null +++ b/en/pi_paren.txt @@ -0,0 +1,50 @@ +*pi_paren.txt* For Vim version 7.0. Last change: 2006 Apr 24 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Highlighting matching parens *matchparen* + +The functionality mentioned here is a |standard-plugin|. +This plugin is only available if 'compatible' is not set. + +You can avoid loading this plugin by setting the "loaded_matchparen" variable: > + :let loaded_matchparen = 1 + +The plugin installs CursorMoved autocommands to redefine the match +highlighting. + +To disable the plugin after it was loaded use this command: > + + :NoMatchParen + +And to enable it again: > + + :DoMatchParen + +The highlighting used is MatchParen. You can specify different colors with +the ":highlight" command. Example: > + + :hi MatchParen ctermbg=blue guibg=lightblue + +The characters to be matched come from the 'matchpairs' option. You can +change the value to highlight different matches. Note that not everything is +possible. For example, you can't highlight single or double quotes, because +the start and end are equal. + +The syntax highlighting attributes are used. When the cursor currently is not +in a string or comment syntax item, then matches inside string and comment +syntax items are ignored. Any syntax items with "string" or "comment" +somewhere in their name are considered string or comment items. + +The search is limited to avoid a delay when moving the cursor. The limits +are: +- What is visible in the window. +- 100 lines above or below the cursor to avoid a long delay when there are + closed folds. +- 'synmaxcolumn' times 2 bytes before or after the cursor to avoid a delay + in a long line with syntax highlighting. + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/pi_tar.txt b/en/pi_tar.txt new file mode 100644 index 000000000..9dd746906 --- /dev/null +++ b/en/pi_tar.txt @@ -0,0 +1,66 @@ +*pi_tar.txt* For Vim version 7.0. Last change: 2006 May 02 + + +====================+ + | Tar File Interface | + +====================+ + +Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> + (remove NOSPAM from Campbell's email first) +Copyright: The GPL (gnu public license) applies to *tar-copyright* + tarPlugin.vim, and pi_tar.txt. + No warranty, express or implied. Use At-Your-Own-Risk. + +============================================================================== +1. Contents *tar* *tar-contents* + 1. Contents..................................................|tar-contents| + 2. Usage.....................................................|tar-usage| + 3. Options...................................................|tar-options| + 4. History...................................................|tar-history| + +============================================================================== +2. Usage *tar-usage* *tar-manual* + + When one edits a *.tar file, this plugin will handle displaying a + contents page. Select a file to edit by moving the cursor atop + the desired file, then hit the <return> key. After editing, one may + also write to the file. Currently, one may not make a new file in + tar archives via the plugin. + +============================================================================== +3. Options *tar-options* + + These options are variables that one may change, typically in one's + <.vimrc> file. + Default + Variable Value Explanation + *g:tar_browseoptions* "Ptf" used to get a list of contents + *g:tar_readoptions* "OPxf" used to extract a file from a tarball + *g:tar_cmd* "tar" the name of the tar program + *g:tar_writeoptions* "uf" used to update/replace a file + + +============================================================================== +4. History *tar-history* + + v9 May 02, 2006 * improved detection of masquerading as tar file + v8 May 02, 2006 * allows editing of files that merely masquerade as tar + files + v7 Mar 22, 2006 * work on making tar plugin work across network + Mar 27, 2006 * g:tar_cmd now available for users to change the name + of the tar program to be used. By default, of course, + its "tar". + v6 Dec 21, 2005 * writing to files not in directories caused problems - + fixed (pointed out by Christian Robinson) + v5 Nov 22, 2005 * report option workaround installed + v3 Sep 16, 2005 * handles writing files in an archive back to the + archive + Oct 18, 2005 * <amatch> used instead of <afile> in autocmds + Oct 18, 2005 * handles writing to compressed archives + Nov 03, 2005 * handles writing tarfiles across a network using + netrw#NetWrite() + v2 * converted to use Vim7's new autoload feature by + Bram Moolenaar + v1 (original) * Michael Toren (see http://michael.toren.net/code/) + +============================================================================== +vim:tw=78:ts=8:ft=help diff --git a/en/pi_vimball.txt b/en/pi_vimball.txt new file mode 100644 index 000000000..1fefc7f90 --- /dev/null +++ b/en/pi_vimball.txt @@ -0,0 +1,92 @@ +*pi_vimball.txt* For Vim version 7.0. Last change: 2006 May 01 + + ---------------- + Vimball Archiver + ---------------- + +Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> + (remove NOSPAM from Campbell's email first) +Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* + The VIM LICENSE applies to Vimball.vim, and Vimball.txt + (see |copyright|) except use "Vimball" instead of "Vim". + No warranty, express or implied. + Use At-Your-Own-Risk! + +============================================================================== +1. Contents *vimball* *vimball-contents* + + 1. Contents......................................: |vimball-contents| + 2. Vimball Manual................................: |vimball-manual| + 3. Vimball History...............................: |vimball-history| + + +============================================================================== +2. Vimball Manual *vimball-manual* + + *:MkVimball* + :[range]MkVimball[!] filename + + This command takes lines holding a path to files to be included in + your vimball; as an example: > + plugin/something.vim + doc/something.txt +< using MkVimball on this range will create a file called "filename.vba" + which can be used by Vimball.vim to re-create these files. If the + "filename.vba" file already exists, then MkVimball will issue a + warning and not create the file. Note that these paths are relative + to your .vim (vimfiles) directory, and the files should be in that + directory. The vimball plugin uses the first |'runtimepath'|directory + that exists as a prefix; don't use absolute paths. + + If you use the exclamation point (!), then MkVimball will create the + "filename.vba" file, overwriting it if it already exists. This + behavior resembles that for |:w|. + + *vimball-extract* + vim filename.vba + + Simply editing a Vimball will cause Vimball.vim to tell the user to + source the file to extract its contents. + + Extraction will only proceed if the first line of a putative vimball + file holds the "Vimball Archiver by Charles E. Campbell, Jr., Ph.D." + line. + + :VimballList *vimball-vimballlist* + + This command will tell Vimball to list the files in the archive, along + with their lengths in lines. + + +============================================================================== +3. Vimball History *vimball-history* {{{1 + + 13 : May 01, 2006 * exists("&acd") used to determine if the acd + option exists + 12 : May 01, 2006 * bugfix - the |'acd'| option is not always defined + 11 : Apr 27, 2006 * VimballList would create missing subdirectories that + the vimball specified were needed. Fixed. + 10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of + functions. Included some more settings in them + which frequently cause trouble. + 9 : Apr 26, 2006 * various changes to support Windows prediliction + for backslashes and spaces in file and directory + names. + 7 : Apr 25, 2006 * bypasses foldenable + * uses more exe and less norm! (:yank :put etc) + * does better at insuring a "Press ENTER" prompt + appears to keep its messages visible + 4 : Mar 31, 2006 * BufReadPost seems to fire twice; BufReadEnter + only fires once, so the "Source this file..." + message is now issued only once. + 3 : Mar 20, 2006 * removed query, now requires sourcing to be + extracted (:so %). Message to that effect + included. + * :VimballList now shows files that would be + extracted. + 2 : Mar 20, 2006 * query, :UseVimball included + 1 : Mar 20, 2006 * initial release + + +============================================================================== +vim:tw=78:ts=8:ft=help:fdm=marker diff --git a/en/pi_zip.txt b/en/pi_zip.txt new file mode 100644 index 000000000..ce2dcd18c --- /dev/null +++ b/en/pi_zip.txt @@ -0,0 +1,55 @@ +*pi_zip.txt* For Vim version 7.0. Last change: 2006 May 01 + + +====================+ + | Zip File Interface | + +====================+ + +Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> + (remove NOSPAM from Campbell's email first) +Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr {{{1 *zip-copyright* + Permission is hereby granted to use and distribute this code, + with or without modifications, provided that this copyright + notice is copied with it. Like anything else that's free, + zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is* + and it comes with no warranty of any kind, either expressed or + implied. By using this plugin, you agree that in no event will + the copyright holder be liable for any damages resulting from + the use of this software. + +============================================================================== +1. Contents *zip* *zip-contents* + 1. Contents..................................................|zip-contents| + 2. Usage.....................................................|zip-usage| + 3. History...................................................|zip-history| + +============================================================================== +2. Usage *zip-usage* *zip-manual* + + When one edits a *.zip file, this plugin will handle displaying a + contents page. Select a file to edit by moving the cursor atop + the desired file, then hit the <return> key. After editing, one may + also write to the file. Currently, one may not make a new file in + zip archives via the plugin. + +============================================================================== +3. History *zip-history* + v8 Apr 10, 2006 * Bram Moolenaar reported that he received an error message + due to "Pattern not found: ^.*\%0c"; this was caused by + stridx finding a Name... at the beginning of the line; + zip.vim tried 4,$s/^.*\%0c//, but that doesn't work. + Fixed. + v7 Mar 22, 2006 * escaped some characters that can cause filename handling + problems. + v6 Dec 21, 2005 * writing to files not in directories caused problems - + fixed (pointed out by Christian Robinson) + v5 Nov 22, 2005 * report option workaround installed + v3 Oct 18, 2005 * <amatch> used instead of <afile> in autocmds + v2 Sep 16, 2005 * silenced some commands (avoiding hit-enter prompt) + * began testing under Windows; works thus far + * filetype detection fixed + Nov 03, 2005 * handles writing zipfiles across a network using + netrw#NetWrite() + v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing + +============================================================================== +vim:tw=78:ts=8:ft=help diff --git a/en/print.txt b/en/print.txt new file mode 100644 index 000000000..36f9470fc --- /dev/null +++ b/en/print.txt @@ -0,0 +1,751 @@ +*print.txt* For Vim version 7.0. Last change: 2006 Apr 30 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Printing *printing* + +1. Introduction |print-intro| +2. Print options |print-options| +3. PostScript Printing |postscript-printing| +4. PostScript Printing Encoding |postscript-print-encoding| +5. PostScript CJK Printing |postscript-cjk-printing| +6. PostScript Printing Troubleshooting |postscript-print-trouble| +7. PostScript Utilities |postscript-print-util| +8. Formfeed Characters |printing-formfeed| + +{Vi has None of this} +{only available when compiled with the |+printer| feature} + +============================================================================== +1. Introduction *print-intro* + +On MS-Windows Vim can print your text on any installed printer. On other +systems a PostScript file is produced. This can be directly sent to a +PostScript printer. For other printers a program like ghostscript needs to be +used. + + *:ha* *:hardcopy* *E237* *E238* *E324* +:[range]ha[rdcopy][!] [arguments] + Send [range] lines (default whole file) to the + printer. + + On MS-Windows a dialog is displayed to allow selection + of printer, paper size etc. To skip the dialog, use + the [!]. In this case the printer defined by + 'printdevice' is used, or, if 'printdevice' is empty, + the system default printer. + + For systems other than MS-Windows, PostScript is + written in a temp file and 'printexpr' is used to + actually print it. Then [arguments] can be used by + 'printexpr' through |v:cmdarg|. Otherwise [arguments] + is ignored. 'printoptions' can be used to specify + paper size, duplex, etc. + +:[range]ha[rdcopy][!] >{filename} + As above, but write the resulting PostScript in file + {filename}. + Things like "%" are expanded |cmdline-special| + Careful: An existing file is silently overwritten. + {only available when compiled with the |+postscript| + feature} + On MS-Windows use the "print to file" feature of the + printer driver. + +Progress is displayed during printing as a page number and a percentage. To +abort printing use the interrupt key (CTRL-C or, on MS-systems, CTRL-Break). + +Printer output is controlled by the 'printfont' and 'printoptions' options. +'printheader' specifies the format of a page header. + +The printed file is always limited to the selected margins, irrespective of +the current window's 'wrap' or 'linebreak' settings. The "wrap" item in +'printoptions' can be used to switch wrapping off. +The current highlighting colors are used in the printout, with the following +considerations: +1) The normal background is always rendered as white (i.e. blank paper). +2) White text or the default foreground is rendered as black, so that it shows + up! +3) If 'background' is "dark", then the colours are darkened to compensate for + the fact that otherwise they would be too bright to show up clearly on + white paper. + +============================================================================== +2. Print options *print-options* + +Here are the details for the options that change the way printing is done. +For generic info about setting options see |options.txt|. + + *pdev-option* +'printdevice' 'pdev' string (default empty) + global +This defines the name of the printer to be used when the |:hardcopy| command +is issued with a bang (!) to skip the printer selection dialog. On Win32, it +should be the printer name exactly as it appears in the standard printer +dialog. +If the option is empty, then vim will use the system default printer for +":hardcopy!" + + *penc-option* *E620* +'printencoding' 'penc' String (default empty, except for: + Windows, OS/2: cp1252, + Macintosh: mac-roman, + VMS: dec-mcs, + HPUX: hp-roman8, + EBCDIC: ebcdic-uk) + global +Sets the character encoding used when printing. This option tells VIM which +print character encoding file from the "print" directory in 'runtimepath' to +use. + +This option will accept any value from |encoding-names|. Any recognized names +are converted to VIM standard names - see 'encoding' for more details. Names +not recognized by VIM will just be converted to lower case and underscores +replaced with '-' signs. + +If 'printencoding' is empty or VIM cannot find the file then it will use +'encoding' (if VIM is compiled with |+multi_byte| and it is set an 8-bit +encoding) to find the print character encoding file. If VIM is unable to find +a character encoding file then it will use the "latin1" print character +encoding file. + +When 'encoding' is set to a multi-byte encoding, VIM will try to convert +characters to the printing encoding for printing (if 'printencoding' is empty +then the conversion will be to latin1). Conversion to a printing encoding +other than latin1 will require VIM to be compiled with the |+iconv| feature. +If no conversion is possible then printing will fail. Any characters that +cannot be converted will be replaced with upside down question marks. + +Four print character encoding files are provided to support default Mac, VMS, +HPUX, and EBCDIC character encodings and are used by default on these +platforms. Code page 1252 print character encoding is used by default on +Windows and OS/2 platforms. + + *pexpr-option* +'printexpr' 'pexpr' String (default: see below) + global +Expression that is evaluated to print the PostScript produced with +|:hardcopy|. +The file name to be printed is in |v:fname_in|. +The arguments to the ":hardcopy" command are in |v:cmdarg|. +The expression must take care of deleting the file after printing it. +When there is an error, the expression must return a non-zero number. +If there is no error, return zero or an empty string. +The default for non MS-Windows or VMS systems is to simply use "lpr" to print +the file: > + + system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) + . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error + +On MS-Dos, MS-Windows and OS/2 machines the default is to copy the file to the +currently specified printdevice: > + + system('copy' . ' ' . v:fname_in . (&printdevice == '' + ? ' LPT1:' : (' \"' . &printdevice . '\"'))) + . delete(v:fname_in) + +On VMS machines the default is to send the file to either the default or +currently specified printdevice: > + + system('print' . (&printdevice == '' ? '' : ' /queue=' . + &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + +If you change this option, using a function is an easy way to avoid having to +escape all the spaces. Example: > + + :set printexpr=PrintFile(v:fname_in) + :function PrintFile(fname) + : call system("ghostview " . a:fname) + : call delete(a:fname) + : return v:shell_error + :endfunc + +Be aware that some print programs return control before they have read the +file. If you delete the file too soon it will not be printed. These programs +usually offer an option to have them remove the file when printing is done. + *E365* +If evaluating the expression fails or it results in a non-zero number, you get +an error message. In that case Vim will delete the file. In the default +value for non-MS-Windows a trick is used: Adding "v:shell_error" will result +in a non-zero number when the system() call fails. + +This option cannot be set from a |modeline| or in the |sandbox|, for security +reasons. + + *pfn-option* *E613* +'printfont' 'pfn' string (default "courier") + global +This is the name of the font that will be used for the |:hardcopy| command's +output. It has the same format as the 'guifont' option, except that only one +font may be named, and the special "guifont=*" syntax is not available. + +In the Win32 GUI version this specifies a font name with its extra attributes, +as with the 'guifont' option. + +For other systems, only ":h11" is recognized, where "11" is the point size of +the font. When omitted, the point size is 10. + + *pheader-option* +'printheader' 'pheader' string (default "%<%f%h%m%=Page %N") + global +This defines the format of the header produced in |:hardcopy| output. The +option is defined in the same way as the 'statusline' option. If Vim has not +been compiled with the |+statusline| feature, this option has no effect and a +simple default header is used, which shows the page number. + + *pmbcs-option* +'printmbcharset' 'pmbcs' string (default "") + global +Sets the CJK character set to be used when generating CJK output from +|:hardcopy|. The following predefined values are currently recognised by VIM: + + Value Description ~ + Chinese GB_2312-80 + (Simplified) GBT_12345-90 + MAC Apple Mac Simplified Chinese + GBT-90_MAC GB/T 12345-90 Apple Mac Simplified + Chinese + GBK GBK (GB 13000.1-93) + ISO10646 ISO 10646-1:1993 + + Chinese CNS_1993 CNS 11643-1993, Planes 1 & 2 + (Traditional) BIG5 + ETEN Big5 with ETen extensions + ISO10646 ISO 10646-1:1993 + + Japanese JIS_C_1978 + JIS_X_1983 + JIS_X_1990 + MSWINDOWS Win3.1/95J (JIS X 1997 + NEC + + IBM extensions) + KANJITALK6 Apple Mac KanjiTalk V6.x + KANJITALK7 Apple Mac KanjiTalk V7.x + + Korean KS_X_1992 + MAC Apple Macintosh Korean + MSWINDOWS KS X 1992 with MS extensions + ISO10646 ISO 10646-1:1993 + +Only certain combinations of the above values and 'printencoding' are +possible. The following tables show the valid combinations: + + euc-cn gbk ucs-2 utf-8 ~ + Chinese GB_2312-80 x + (Simplified) GBT_12345-90 x + MAC x + GBT-90_MAC x + GBK x + ISO10646 x x + + euc-tw big5 ucs-2 utf-8 ~ + Chinese CNS_1993 x + (Traditional) BIG5 x + ETEN x + ISO10646 x x + + euc-jp sjis ucs-2 utf-8 ~ + Japanese JIS_C_1978 x x + JIS_X_1983 x x + JIS_X_1990 x x x + MSWINDOWS x + KANJITALK6 x + KANJITALK7 x + + euc-kr cp949 ucs-2 utf-8 ~ + Korean KS_X_1992 x + MAC x + MSWINDOWS x + ISO10646 x x + +To set up the correct encoding and character set for printing some +Japanese text you would do the following; > + :set printencoding=euc-jp + :set printmbcharset=JIS_X_1983 + +If 'printmbcharset' is not one of the above values then it is assumed to +specify a custom multi-byte character set and no check will be made that it is +compatible with the value for 'printencoding'. VIM will look for a file +defining the character set in the "print" directory in 'runtimepath'. + + *pmbfn-option* +'printmbfont' 'pmbfn' string (default "") + global +This is a comma-separated list of fields for font names to be used when +generating CJK output from |:hardcopy|. Each font name has to be preceded +with a letter indicating the style the font is to be used for as follows: + + r:{font-name} font to use for normal characters + b:{font-name} font to use for bold characters + i:{font-name} font to use for italic characters + o:{font-name} font to use for bold-italic characters + +A field with the r: prefix must be specified when doing CJK printing. The +other fontname specifiers are optional. If a specifier is missing then +another font will be used as follows: + + if b: is missing, then use r: + if i: is missing, then use r: + if o: is missing, then use b: + +Some CJK fonts do not contain characters for codes in the ASCII code range. +Also, some characters in the CJK ASCII code ranges differ in a few code points +from traditional ASCII characters. There are two additional fields to control +printing of characters in the ASCII code range. + + c:yes Use Courier font for characters in the ASCII + c:no (default) code range. + + a:yes Use ASCII character set for codes in the ASCII + a:no (default) code range. + +The following is an example of specifying two multi-byte fonts, one for normal +and italic printing and one for bold and bold-italic printing, and using +Courier to print codes in the ASCII code range but using the national +character set: > + :set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,c:yes +< + *popt-option* +'printoptions' 'popt' string (default "") + global +This is a comma-separated list of items that control the format of the output +of |:hardcopy|: + + left:{spec} left margin (default: 10pc) + right:{spec} right margin (default: 5pc) + top:{spec} top margin (default: 5pc) + bottom:{spec} bottom margin (default: 5pc) + {spec} is a number followed by "in" for inches, "pt" + for points (1 point is 1/72 of an inch), "mm" for + millimeters or "pc" for a percentage of the media + size. + Weird example: + left:2in,top:30pt,right:16mm,bottom:3pc + If the unit is not recognized there is no error and + the default value is used. + + header:{nr} Number of lines to reserve for the header. + Only the first line is actually filled, thus when {nr} + is 2 there is one empty line. The header is formatted + according to 'printheader'. + header:0 Do not print a header. + header:2 (default) Use two lines for the header + + syntax:n Do not use syntax highlighting. This is faster and + thus useful when printing large files. + syntax:y Do syntax highlighting. + syntax:a (default) Use syntax highlighting if the printer appears to be + able to print color or grey. + + number:y Include line numbers in the printed output. + number:n (default) No line numbers. + + wrap:y (default) Wrap long lines. + wrap:n Truncate long lines. + + duplex:off Print on one side. + duplex:long (default) Print on both sides (when possible), bind on long + side. + duplex:short Print on both sides (when possible), bind on short + side. + + collate:y (default) Collating: 1 2 3, 1 2 3, 1 2 3 + collate:n No collating: 1 1 1, 2 2 2, 3 3 3 + + jobsplit:n (default) Do all copies in one print job + jobsplit:y Do each copy as a separate print job. Useful when + doing N-up postprocessing. + + portrait:y (default) Orientation is portrait. + portrait:n Orientation is landscape. + *a4* *letter* + paper:A4 (default) Paper size: A4 + paper:{name} Paper size from this table: + {name} size in cm size in inch ~ + 10x14 25.4 x 35.57 10 x 14 + A3 29.7 x 42 11.69 x 16.54 + A4 21 x 29.7 8.27 x 11.69 + A5 14.8 x 21 5.83 x 8.27 + B4 25 x 35.3 10.12 x 14.33 + B5 17.6 x 25 7.17 x 10.12 + executive 18.42 x 26.67 7.25 x 10.5 + folio 21 x 33 8.27 x 13 + ledger 43.13 x 27.96 17 x 11 + legal 21.59 x 35.57 8.5 x 14 + letter 21.59 x 27.96 8.5 x 11 + quarto 21.59 x 27.5 8.5 x 10.83 + statement 13.97 x 21.59 5.5 x 8.5 + tabloid 27.96 x 43.13 11 x 17 + + formfeed:n (default) Treat form feed characters (0x0c) as a normal print + character. + formfeed:y When a form feed character is encountered, continue + printing of the current line at the beginning of the + first line on a new page. + +The item indicated with (default) is used when the item is not present. The +values are not always used, especially when using a dialog to select the +printer and options. +Example: > + :set printoptions=paper:letter,duplex:off + +============================================================================== +3. PostScript Printing *postscript-printing* + *E455* *E456* *E457* *E624* +Provided you have enough disk space there should be no problems generating a +PostScript file. You need to have the runtime files correctly installed (if +you can find the help files, they probably are). + +There are currently a number of limitations with PostScript printing: + +- 'printfont' - The font name is ignored (the Courier family is always used - + it should be available on all PostScript printers) but the font size is + used. + +- 'printoptions' - The duplex setting is used when generating PostScript + output, but it is up to the printer to take notice of the setting. If the + printer does not support duplex printing then it should be silently ignored. + Some printers, however, don't print at all. + +- 8-bit support - While a number of 8-bit print character encodings are + supported it is possible that some characters will not print. Whether a + character will print depends on the font in the printer knowing the + character. Missing characters will be replaced with an upside down question + mark, or a space if that character is also not known by the font. It may be + possible to get all the characters in an encoding to print by installing a + new version of the Courier font family. + +- Multi-byte support - Currently VIM will try to convert multi-byte characters + to the 8-bit encoding specified by 'printencoding' (or latin1 if it is + empty). Any characters that are not successfully converted are shown as + unknown characters. Printing will fail if VIM cannot convert the multi-byte + to the 8-bit encoding. + +============================================================================== +4. Custom 8-bit Print Character Encodings *postscript-print-encoding* + *E618* *E619* +To use your own print character encoding when printing 8-bit character data +you need to define your own PostScript font encoding vector. Details on how +to to define a font encoding vector is beyond the scope of this help file, but +you can find details in the PostScript Language Reference Manual, 3rd Edition, +published by Addison-Wesley and available in PDF form at +http://www.adobe.com/. The following describes what you need to do for VIM to +locate and use your print character encoding. + +i. Decide on a unique name for your encoding vector, one that does not clash + with any of the recognized or standard encoding names that VIM uses (see + |encoding-names| for a list), and that no one else is likely to use. +ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your + 'runtimepath' and rename it with your unique name. +iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1 + with your unique name (don't forget the line starting %%Title:), and + modify the array of glyph names to define your new encoding vector. The + array must have exactly 256 entries or you will not be able to print! +iv. Within VIM, set 'printencoding' to your unique encoding name and then + print your file. VIM will now use your custom print character encoding. + +VIM will report an error with the resource file if you change the order or +content of the first 3 lines, other than the name of the encoding on the line +starting %%Title: or the version number on the line starting %%Version:. + +[Technical explanation for those that know PostScript - VIM looks for a file +with the same name as the encoding it will use when printing. The file +defines a new PostScript Encoding resource called /VIM-name, where name is the +print character encoding VIM will use.] + +============================================================================== +5. PostScript CJK Printing *postscript-cjk-printing* + *E673* *E674* *E675* + +VIM supports printing of Chinese, Japanese, and Korean files. Setting up VIM +to correctly print CJK files requires setting up a few more options. + +Each of these countries has many standard character sets and encodings which +require that both be specified when printing. In addition, CJK fonts normally +do not have the concept of italic glyphs and use different weight or stroke +style to achieve emphasis when printing. This in turn requires a different +approach to specifying fonts to use when printing. + +The encoding and character set are specified with the 'printencoding' and +'printmbcharset' options. If 'printencoding' is not specified then 'encoding' +is used as normal. If 'printencoding' is specified then characters will be +translated to this encoding for printing. You should ensure that the encoding +is compatible with the character set needed for the file contents or some +characters may not appear when printed. + +The fonts to use for CJK printing are specified with 'printmbfont'. This +option allows you to specify different fonts to use when printing characters +which are syntax highlighted with the font styles normal, italic, bold and +bold-italic. + +No CJK fonts are supplied with VIM. There are some free Korean, Japanese, and +Traditional Chinese fonts available at: + + http://examples.oreilly.com/cjkvinfo/adobe/samples/ + +You can find descriptions of the various fonts in the read me file at + + http://examples.oreilly.com/cjkvinfo/adobe/00README + +Please read your printer documentation on how to install new fonts. + +CJK fonts can be large containing several thousand glyphs, and it is not +uncommon to find that they only contain a subset of a national standard. It +is not unusual to find the fonts to not include characters for codes in the +ASCII code range. If you find half-width Roman characters are not appearing +in your printout then you should configure VIM to use the Courier font the +half-width ASCII characters with 'printmbfont'. If your font does not include +other characters then you will need to find another font that does. + +Another issue with ASCII characters, is that the various national character +sets specify a couple of different glyphs in the ASCII code range. If you +print ASCII text using the national character set you may see some unexpected +characters. If you want true ASCII code printing then you need to configure +VIM to output ASCII characters for the ASCII code range with 'printmbfont'. + +It is possible to define your own multi-byte character set although this +should not be attempted lightly. A discussion on the process if beyond the +scope of these help files. You can find details on CMap (character map) files +in the document 'Adobe CMap and CIDFont Files Specification, Version 1.0', +available from http://www.adobe.com as a PDF file. + +============================================================================== +6. PostScript Printing Troubleshooting *postscript-print-trouble* + *E621* +Usually the only sign of a problem when printing with PostScript is that your +printout does not appear. If you are lucky you may get a printed page that +tells you the PostScript operator that generated the error that prevented the +print job completing. + +There are a number of possible causes as to why the printing may have failed: + +- Wrong version of the prolog resource file. The prolog resource file + contains some PostScript that VIM needs to be able to print. Each version + of VIM needs one particular version. Make sure you have correctly installed + the runtime files, and don't have any old versions of a file called prolog + in the print directory in your 'runtimepath' directory. + +- Paper size. Some PostScript printers will abort printing a file if they do + not support the requested paper size. By default VIM uses A4 paper. Find + out what size paper your printer normally uses and set the appropriate paper + size with 'printoptions'. If you cannot find the name of the paper used, + measure a sheet and compare it with the table of supported paper sizes listed + for 'printoptions', using the paper that is closest in both width AND height. + Note: The dimensions of actual paper may vary slightly from the ones listed. + If there is no paper listed close enough, then you may want to try psresize + from PSUtils, discussed below. + +- Two-sided printing (duplex). Normally a PostScript printer that does not + support two-sided printing will ignore any request to do it. However, some + printers may abort the job altogether. Try printing with duplex turned off. + Note: Duplex prints can be achieved manually using PS utils - see below. + +- Collated printing. As with Duplex printing, most PostScript printers that + do not support collating printouts will ignore a request to do so. Some may + not. Try printing with collation turned off. + +- Syntax highlighting. Some print management code may prevent the generated + PostScript file from being printed on a black and white printer when syntax + highlighting is turned on, even if solid black is the only color used. Try + printing with syntax highlighting turned off. + +A safe printoptions setting to try is: > + + :set printoptions=paper:A4,duplex:off,collate:n,syntax:n + +Replace "A4" with the paper size that best matches your printer paper. + +============================================================================== +7. PostScript Utilities *postscript-print-util* + +7.1 Ghostscript + +Ghostscript is a PostScript and PDF interpreter that can be used to display +and print on non-PostScript printers PostScript and PDF files. It can also +generate PDF files from PostScript. + +Ghostscript will run on a wide variety of platforms. + +There are three available versions: + +- AFPL Ghostscript (formerly Aladdin Ghostscript) which is free for + non-commercial use. It can be obtained from: + + http://www.cs.wisc.edu/~ghost/ + +- GNU Ghostscript which is available under the GNU General Public License. It + can be obtained from: + + ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/ + +- A commercial version for inclusion in commercial products. + +Additional information on Ghostscript can also be found at: + + http://www.ghostscript.com/ + +Support for a number of non PostScript printers is provided in the +distribution as standard, but if you cannot find support for your printer +check the Ghostscript site for other printers not included by default. + + +7.2 Ghostscript Previewers. + +The interface to Ghostscript is very primitive so a number of graphical front +ends have been created. These allow easier PostScript file selection, +previewing at different zoom levels, and printing. Check supplied +documentation for full details. + +X11 + +- Ghostview. Obtainable from: + + http://www.cs.wisc.edu/~ghost/gv/ + +- gv. Derived from Ghostview. Obtainable from: + + http://wwwthep.physik.uni-mainz.de/~plass/gv/ + + Copies (possibly not the most recent) can be found at: + + http://www.cs.wisc.edu/~ghost/gv/ + +OpenVMS + +- Is apparently supported in the main code now (untested). See: + + http://wwwthep.physik.uni-mainz.de/~plass/gv/ + +Windows and OS/2 + +- GSview. Obtainable from: + + http://www.cs.wisc.edu/~ghost/gsview/ + +DOS + +- ps_view. Obtainable from: + + ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/ + ftp://ftp.dante.de/tex-archive/support/ps_view/ + +Linux + +- GSview. Linux version of the popular Windows and OS/2 previewer. + Obtainable from: + + http://www.cs.wisc.edu/~ghost/gsview/ + +- BMV. Different from Ghostview and gv in that it doesn't use X but svgalib. + Obtainable from: + + ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz + + +7.3 PSUtils + +PSUtils is a collection of utility programs for manipulating PostScript +documents. Binary distributions are available for many platforms, as well as +the full source. PSUtils can be found at: + + http://knackered.org/angus/psutils + +The utilities of interest include: + +- psnup. Convert PS files for N-up printing. +- psselect. Select page range and order of printing. +- psresize. Change the page size. +- psbook. Reorder and lay out pages ready for making a book. + +The output of one program can be used as the input to the next, allowing for +complex print document creation. + + +N-UP PRINTING + +The psnup utility takes an existing PostScript file generated from VIM and +convert it to an n-up version. The simplest way to create a 2-up printout is +to first create a PostScript file with: > + + :hardcopy > test.ps + +Then on your command line execute: > + + psnup -n 2 test.ps final.ps + +Note: You may get warnings from some Ghostscript previewers for files produced +by psnup - these may safely be ignored. + +Finally print the file final.ps to your PostScript printer with your +platform's print command. (You will need to delete the two PostScript files +afterwards yourself.) 'printexpr' could be modified to perform this extra +step before printing. + + +ALTERNATE DUPLEX PRINTING + +It is possible to achieve a poor man's version of duplex printing using the PS +utility psselect. This utility has options -e and -o for printing just the +even or odd pages of a PS file respectively. + +First generate a PS file with the 'hardcopy' command, then generate a new +files with all the odd and even numbered pages with: > + + psselect -o test.ps odd.ps + psselect -e test.ps even.ps + +Next print odd.ps with your platform's normal print command. Then take the +print output, turn it over and place it back in the paper feeder. Now print +even.ps with your platform's print command. All the even pages should now +appear on the back of the odd pages. + +There a couple of points to bear in mind: + +1. Position of the first page. If the first page is on top of the printout + when printing the odd pages then you need to reverse the order that the odd + pages are printed. This can be done with the -r option to psselect. This + will ensure page 2 is printed on the back of page 1. + Note: it is better to reverse the odd numbered pages rather than the even + numbered in case there are an odd number of pages in the original PS file. + +2. Paper flipping. When turning over the paper with the odd pages printed on + them you may have to either flip them horizontally (along the long edge) or + vertically (along the short edge), as well as possibly rotating them 180 + degrees. All this depends on the printer - it will be more obvious for + desktop ink jets than for small office laser printers where the paper path + is hidden from view. + + +============================================================================== +8. Formfeed Characters *printing-formfeed* + +By default VIM does not do any special processing of |formfeed| control +characters. Setting the 'printoptions' formfeed item will make VIM recognize +formfeed characters and continue printing the current line at the beginning +of the first line on a new page. The use of formfeed characters provides +rudimentary print control but there are certain things to be aware of. + +VIM will always start printing a line (including a line number if enabled) +containing a formfeed character, even if it is the first character on the +line. This means if a line starting with a formfeed character is the first +line of a page then VIM will print a blank page. + +Since the line number is printed at the start of printing the line containing +the formfeed character, the remainder of the line printed on the new page +will not have a line number printed for it (in the same way as the wrapped +lines of a long line when wrap in 'printoptions' is enabled). + +If the formfeed character is the last character on a line, then printing will +continue on the second line of the new page, not the first. This is due to +VIM processing the end of the line after the formfeed character and moving +down a line to continue printing. + +Due to the points made above it is recommended that when formfeed character +processing is enabled, printing of line numbers is disabled, and that form +feed characters are not the last character on a line. Even then you may need +to adjust the number of lines before a formfeed character to prevent +accidental blank pages. + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/sponsor.txt b/en/sponsor.txt index caa32260d..d77f4e841 100644 --- a/en/sponsor.txt +++ b/en/sponsor.txt @@ -1,4 +1,4 @@ -*sponsor.txt* For Vim version 6.3. Last change: 2004 Apr 23 +*sponsor.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -7,13 +7,13 @@ SPONSOR VIM DEVELOPMENT *sponsor* -Fixing bugs and adding new features takes a lot of effort. For a few years -Bram has attempted to do this next to a full-time job. During that time the -todo list kept getting longer and longer. +Fixing bugs and adding new features takes a lot of time and effort. To show +your appreciation for the work and motivate Bram and others to continue +working on Vim please send a donation. -In order for Bram to support Vim properly he needs your support. Through your -donations Bram will be able to have a part-time job and spend more time on -fixing bugs and adding new features. +Since Bram is back to a paid job the money will now be used to help children +in Uganda. See |uganda|. But at the same time donations increase Bram's +motivation to keep working on Vim! For the most recent information about sponsoring look on the Vim web site: @@ -58,7 +58,7 @@ But only if you enable this on your account page. HOW TO SEND MONEY *send-money* -Creditcard Through PayPal, see the PayPal site for information: +Credit card Through PayPal, see the PayPal site for information: https://www.paypal.com The e-mail address for sending sponsorship money is: donate@vim.org @@ -68,56 +68,38 @@ Creditcard Through PayPal, see the PayPal site for information: In Euro countries a bank transfer is preferred, this has lower costs. -Bank transfer Transfer to Bram's account at the Postbank: 1644503. For - international transfers you can use these numbers: - IBAN: NL79 PSTB 0001 6445 03 - SWIFT/BIC: PSTBNL21 - This is the address of the bank: - ING Bank Amsterdam, Foreign Operations - PO Box 1800 - 1000 BV Amsterdam - The Netherlands +Other methods See |iccf-donations|. Include "Vim sponsor" or "Vim registration" in the comment of your money transfer. Send me an e-mail that mentions the amount you transferred if you want to vote for features and show others you are a registered Vim user or sponsor. Cash Small amounts can be send with ordinary mail. Put something - around the money, so that it's not noticable from the outside. - Mention your e-mail address if you want to vote for features - and show others you are a registered Vim user or sponsor. - -This is Bram's address: Bram Moolenaar - Clematisstraat 30 - 5925 BE Venlo + around the money, so that it's not noticeable from the + outside. Mention your e-mail address if you want to vote for + features and show others you are a registered Vim user or + sponsor. + +You can use this permanent address: + Bram Moolenaar + Molenstraat 2 + 2161 HP Lisse The Netherlands -ALTERNATIVE - -If you don't care about sponsoring Vim Development or becoming a registered -Vim user, but do care about helping needy children, consider giving to the -ICCF Holland foundation. This is the charity recommended by Vim's author. -The money is used for a children centre in the south of Uganda, where AIDS has -caused many victims. See |uganda|. - QUESTIONS AND ANSWERS *sponsor-faq* *register-faq* Why should I give money? -Bram has tried to work on Vim next to a full-time job. The list of known bugs -and ideas for new features has constantly been growing during this time. Bram -simply can't spend enough time on Vim development when he has a full-time job. -Your contribution will make it possible for Bram to have a part-time job and -spend much more time on Vim development. Bugs will be fixed quicker and new -Vim releases will become available more often. +If you do not show your appreciation for Vim then Bram will be less motivated +to fix bugs and add new features. He will do something else instead. How much money should I send? -That is up to you. The more you give, the more time Bram can work on Vim. An -indication for individuals that use Vim at home: 10 Euro per year. For +That is up to you. The more you give, the more children will be helped. +An indication for individuals that use Vim at home: 10 Euro per year. For professional use: 30 Euro per year per person. Send at least 10 euro to be able to vote for features. @@ -195,35 +177,40 @@ You can change your votes any time you like, up to two years after you sent money. The points will be counted right away. +Can I add an item to vote on? + +Not directly. You can suggest items to vote on to Bram. He will consider +fitting your item into the list. + + How about Charityware? -You have to decide yourself whether you want to sponsor Vim development, help -the poor children in Uganda (see |uganda|) or both. Bram will certainly keep -on supporting the project in Uganda. In the (unlikely) situation that Bram -gets more donations for Vim development than he needs, he will send the money -to Uganda. +Currently the Vim donations go to |uganda| anyway. Thus it doesn't matter if +you sponsor Vim or ICCF. Except that Vim sponsoring will allow you to vote +for features. I donated $$$, now please add feature XYZ! There is no direct relation between your donation and the work Bram does. -Otherwise you would be paying for work and Bram has to pay income tax over the +Otherwise you would be paying for work and we would have to pay tax over the donation. If you want to hire Bram for specific work, contact him directly, don't use the donation system. -Are the donations tax deductable? +Are the donations tax deductible? -No. Setting up a system for this is complex and imposes too many restrictions. -The donations to help the children in |Uganda| are tax deductable in Holland, -Germany, Canada and probably also in the USA. +That depends on your country. The donations to help the children in |Uganda| +are tax deductible in Holland, Germany, Canada and in the USA. See the ICCF +website http://iccf-holland.org/donate.html. You must send an e-mail to Bram +to let him know that the donation is done because of the use of Vim. Can you send me a bill? -Sending a bill would mean Bram does something in return for your contribution. -That is work and would mean Bram has to pay income tax over the amount. It is -possible, but the net amount will be lower. +No, because there is no relation between the money you send and the work that +is done. But a receipt is possible. + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/tabpage.txt b/en/tabpage.txt new file mode 100644 index 000000000..a6bbd6461 --- /dev/null +++ b/en/tabpage.txt @@ -0,0 +1,371 @@ +*tabpage.txt* For Vim version 7.0. Last change: 2006 May 02 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Editing with windows in multiple tab pages. *tab-page* *tabpage* + +The commands which have been added to use multiple tab pages are explained +here. Additionally, there are explanations for commands that work differently +when used in combination with more than one tab page. + +1. Introduction |tab-page-intro| +2. Commands |tab-page-commands| +3. Other items |tab-page-other| +4. Setting 'tabline' |setting-tabline| +5. Setting 'guitablabel' |setting-guitablabel| + +{Vi does not have any of these commands} +{not able to use multiple tab pages when the |+windows| feature was disabled +at compile time} + +============================================================================== +1. Introduction *tab-page-intro* + +A tab page holds one or more windows. You can easily switch between tab +pages, so that you have several collections of windows to work on different +things. + +Usually you will see a list of labels at the top of the Vim window, one for +each tab page. With the mouse you can click on the label to jump to that tab +page. There are other ways to move between tab pages, see below. + +Most commands work only in the current tab page. That includes the |CTRL-W| +commands, |:windo|, |:all| and |:ball| (when not using the |:tab| modifier). +The commands that are aware of other tab pages than the current one are +mentioned below. + +Tabs are also a nice way to edit a buffer temporarily without changing the +current window layout. Open a new tab page, do whatever you want to do and +close the tab page. + +============================================================================== +2. Commands *tab-page-commands* + +OPENING A NEW TAB PAGE: + +When starting Vim "vim -p filename ..." opens each file argument in a separate +tab page (up to 'tabpagemax'). |-p| + +A double click with the mouse in the non-GUI tab pages line opens a new, empty +tab page. It is placed left of the position of the click. The first click +may select another tab page first, causing an extra screen update. + +This also works in a few GUI versions, esp. Win32 and Motif. But only when +clicking right of the labels. + +In the GUI tab pages line you can use the right mouse button to open menu. +|tabline-menu|. + +:tabe[dit] *:tabe* *:tabedit* *:tabnew* +:tabnew Open a new tab page with an empty window, after the current + tab page. + +:tabe[dit] [++opt] [+cmd] {file} +:tabnew [++opt] [+cmd] {file} + Open a new tab page and edit {file}, like with |:edit|. + +:tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* + Open a new tab page and edit {file} in 'path', like with + |:find|. + {not available when the |+file_in_path| feature was disabled + at compile time} + +:[count]tab {cmd} *:tab* + Execute {cmd} and when it opens a new window open a new tab + page instead. Doesn't work for |:diffsplit| or |:diffpatch|. + When [count] is omitted the tab page appears after the current + one. When [count] is specified the new tab page comes after + tab page [count]. Use ":0tab cmd" to get the new tab page as + the first one. Examples: > + :tab split " opens current buffer in new tab page + :tab help gt " opens tab page with help for "gt" + +CTRL-W gf Open a new tab page and edit the file name under the cursor. + See |CTRL-W_gf|. + +CTRL-W gF Open a new tab page and edit the file name under the cursor + and jump to the line number following the file name. + See |CTRL-W_gF|. + +CLOSING A TAB PAGE: + +Closing the last window of a tab page closes the tab page too, unless there is +only one tab page. + +Using the mouse: If the tab page line is displayed you can click in the "X" at +the top right to close the current tab page. A custom |'tabline'| may show +something else. + + *:tabc* *:tabclose* +:tabc[lose][!] Close current tab page. + This command fails when: + - There is only one tab page on the screen. *E784* + - When 'hidden' is not set, [!] is not used, a buffer has + changes, and there is no other window on this buffer. + Changes to the buffer are not written and won't get lost, so + this is a "safe" command. + +:tabc[lose][!] {count} + Close tab page {count}. Fails in the same way as ':tabclose" + above. + + *:tabo* *:tabonly* +:tabo[nly][!] Close all other tab pages. + When the 'hidden' option is set, all buffers in closed windows + become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are + never abandoned, so changes cannot get lost. + + +SWITCHING TO ANOTHER TAB PAGE: + +Using the mouse: If the tab page line is displayed you can click in a tab page +label to switch to that tab page. Click where there is no label to go to the +next tab page. |'tabline'| + +:tabn[ext] *:tabn* *:tabnext* *gt* +gt *CTRL-<PageDown>* *<C-PageDown>* +<C-PageDown> *i_CTRL-<PageDown>* *i_<C-PageDown>* + Go to the next tab page. Wraps around from the last to the + first one. + +:tabn[ext] {count} *CTRL-<PageUp>* *<C-PageUp>* +{count}gt *i_CTRL-<PageUp>* *i_<C-PageUp>* +<C-PageUp> Go to tab page {count}. The first tab page has number one. + + +:tabp[revious] *:tabp* *:tabprevious* *gT* +:tabN[ext] *:tabN* *:tabNext* +gT Go to the previous tab page. Wraps around from the first one + to the last one. + +:tabp[revious] {count} +:tabN[ext] {count} +{count}gT Go {count} tab pages back. Wraps around from the first one + to the last one. + +:tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind* +:tabfir[st] Go to the first tab page. + + *:tabl* *:tablast* +:tabl[ast] Go to the last tab page. + + +Other commands: + *:tabs* +:tabs List the tab pages and the windows they contain. + Shows a ">" for the current window. + Shows a "+" for modified buffers. + + +REORDERING TAB PAGES: + +:tabm[ove] [N] *:tabm* *:tabmove* + Move the current tab page to after tab page N. Use zero to + make the current tab page the first one. Without N the tab + page is made the last one. + + +LOOPING OVER TAB PAGES: + + *:tabd* *:tabdo* +:tabd[o] {cmd} Execute {cmd} in each tab page. + It works like doing this: > + :tabfirst + :{cmd} + :tabnext + :{cmd} + etc. +< This only operates in the current window of each tab page. + When an error is detected on one tab page, further tab pages + will not be visited. + The last tab page (or where an error occurred) becomes the + current tab page. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not open or close tab pages or reorder them. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + Also see |:windo|, |:argdo| and |:bufdo|. + +============================================================================== +3. Other items *tab-page-other* + + *tabline-menu* +The GUI tab pages line has a popup menu. It is accessed with a right click. +The entries are: + Close Close the tab page under the mouse pointer. The + current one if there is no label under the mouse + pointer. + New Tab Open a tab page, editing an empty buffer. It appears + to the left of the mouse pointer. + Open Tab... Like "New Tab" and additionaly use a file selector to + select a file to edit. + +Diff mode works per tab page. You can see the diffs between several files +within one tab page. Other tab pages can show differences between other +files. + +Variables local to a tab page start with "t:". |tabpage-variable| + +Currently there is only one option local to a tab page: 'cmdheight'. + +The TabLeave and TabEnter autocommand events can be used to do something when +switching from one tab page to another. The exact order depends on what you +are doing. When creating a new tab page this works as if you create a new +window on the same buffer and then edit another buffer. Thus ":tabnew" +triggers: + WinLeave leave current window + TabLeave leave current tab page + TabEnter enter new tab page + WinEnter enter window in new tab page + BufLeave leave current buffer + BufEnter enter new empty buffer + +When switching to another tab page the order is: + BufLeave + WinLeave + TabLeave + TabEnter + WinEnter + BufEnter + +============================================================================== +4. Setting 'tabline' *setting-tabline* + +The 'tabline' option specifies what the line with tab pages labels looks like. +It is only used when there is no GUI tab line. + +You can use the 'showtabline' option to specify when you want the line with +tab page labels to appear: never, when there is more than one tab page or +always. + +The highlighting of the tab pages line is set with the groups TabLine +TabLineSel and TabLineFill. |hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| + +The 'tabline' option allows you to define your preferred way to tab pages +labels. This isn't easy, thus an example will be given here. + +For basics see the 'statusline' option. The same items can be used in the +'tabline' option. Additionally, the |tabpagebuflist()|, |tabpagenr()| and +|tabpagewinnr()| functions are useful. + +Since the number of tab labels will vary, you need to use an expresion for the +whole option. Something like: > + :set tabline=%!MyTabLine() + +Then define the MyTabLine() function to list all the tab pages labels. A +convenient method is to split it in two parts: First go over all the tab +pages and define labels for them. Then get the label for each tab page. > + + function MyTabLine() + let s = '' + for i in range(tabpagenr('$')) + " select the highlighting + if i + 1 == tabpagenr() + let s .= '%#TabLineSel#' + else + let s .= '%#TabLine#' + endif + + " set the tab page number (for mouse clicks) + let s .= '%' . (i + 1) . 'T' + + " the label is made by MyTabLabel() + let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' + endfor + + " after the last tab fill with TabLineFill and reset tab page nr + let s .= '%#TabLineFill#%T' + + " right-align the label to close the current tab page + if tabpagenr('$') > 1 + let s .= '%=%#TabLine#%999Xclose' + endif + + return s + endfunction + +Now the MyTabLabel() function is called for each tab page to get its label. > + + function MyTabLabel(n) + let buflist = tabpagebuflist(a:n) + let winnr = tabpagewinnr(a:n) + return bufname(buflist[winnr - 1]) + endfunction + +This is just a simplistic example that results in a tab pages line that +resembles the default, but without adding a + for a modified buffer or +trunctating the names. You will want to reduce the width of labels in a +clever way when there is not enough room. Check the 'columns' option for the +space available. + +============================================================================== +5. Setting 'guitablabel' *setting-guitablabel* + +When the GUI tab pages line is displayed, 'guitablabel' can be used to +specify the label to display for each tab page. Unlike 'tabline', which +specifies the whole tab pages line at once, 'guitablabel' is used for each +label separately. + +'guitabtooltip' is very similar and is used for the tooltip of the same label. +This only appears when the mouse pointer hovers over the label, thus it +usually is longer. Only supported on some systems though. + +See the 'statusline' option for the format of the value. + +The "%N" item can be used for the current tab page number. The |v:lnum| +variable is also set to this number when the option is evaluated. +The items that use a file name refer to the current window of the tab page. + +Note that syntax highlighting is not used for the option. The %T and %X +items are also ignored. + +A simple example that puts the tab page number and the buffer name in the +label: > + :set guitablabel=%N\ %f + +An example that resembles the default 'guitablabel': Show the number of +windows in the tab page and a '+' if there is a modifed buffer: > + + function GuiTabLabel() + let label = '' + let bufnrlist = tabpagebuflist(v:lnum) + + " Add '+' if one of the buffers in the tab page is modified + for bufnr in bufnrlist + if getbufvar(bufnr, "&modified") + let label = '+' + break + endif + endfor + + " Append the number of windows in the tab page if more than one + let wincount = tabpagewinnr(v:lnum, '$') + if wincount > 1 + let label .= wincount + endif + if label != '' + let label .= ' ' + endif + + " Append the buffer name + return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) + endfunction + + set guitablabel=%{GuiTabLabel()} + +Note that the function must be defined before setting the option, otherwise +you get an error message for the function not being known. + +If you want to fall back to the default label, return an empty string. + +If you want to show something specific for a tab page, you might want to use a +tab page local variable. |t:var| + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/uganda.txt b/en/uganda.txt index 5c8767e9d..a1258b7d1 100644 --- a/en/uganda.txt +++ b/en/uganda.txt @@ -1,4 +1,4 @@ -*uganda.txt* For Vim version 6.3. Last change: 2004 May 12 +*uganda.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -15,7 +15,7 @@ below or visit the ICCF web site, available at these URLs: http://www.vim.org/iccf/ You can also sponsor the development of Vim. Vim sponsors can vote for -features. See |sponsor|. +features. See |sponsor|. The money goes to Uganda anyway. The Open Publication License applies to the Vim documentation, see |manual-copyright|. @@ -109,7 +109,7 @@ Note: file and consider helping needy children in Uganda. - If you want to support further Vim development consider becoming a - |sponsor|. + |sponsor|. The money goes to Uganda anyway. - According to Richard Stallman the Vim license is GNU GPL compatible. A few minor changes have been made since he checked it, but that should not @@ -172,7 +172,7 @@ There is a small clinic at the project, which provides children and their family with medical help. When needed, transport to a hospital is offered. Immunization programs are carried out and help is provided when an epidemic is breaking out (measles and cholera have been a problem). - + *donate* Summer 1994 to summer 1995 I spent a whole year at the centre, working as a volunteer. I have helped to expand the centre and worked in the area of water and sanitation. I learned that the help that the KCC provides really helps. @@ -206,15 +206,32 @@ The address of the centre is: p.o. box 1658 Masaka, Uganda, East Africa -Sending money: +Sending money: *iccf-donations* Check the ICCF web site for the latest information! See |iccf| for the URL. -USA and Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They +USA: The methods mentioned below can be used. Alternatively, you + can send a check to the Nehemiah Group Outreach Society + (NGOS). This will reduce banking costs and you can get an IRS + tax receipt. The NGOS forwards the funds directly to the + Kibaale project in Uganda. Checks must be made payable to + NGOS but please note on the check "donation Kibaale". Mail + checks to: + NGOS + P.O. Box 50862 + Indianapolis, IN 45250 + Questions regarding the Nehemiah Group Outreach Society (NGOS) + should be directed to: Ross deMerchant, Executive Director - + r.demerchant AT sbcglobal DOT net. + For sponsoring a child contact KCF in Canada (see below) and + send the check to NGOS in Indianapolis. + +Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They take care of the Canadian sponsors for the children in - Kibaale. You can send them a one time donation directly. - Please send me a note so that know what has been donated + Kibaale. KCF forwards 100% of the money to the project in + Uganda. You can send them a one time donation directly. + Please send me a note so that I know what has been donated because of Vim. Ask KCF for information about sponsorship. Kibaale Children's Fund c/o Pacific Academy 10238-168 Street @@ -223,12 +240,10 @@ USA and Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They Phone: 604-581-5353 If you make a donation to Kibaale Children's Fund (KCF) you will receive a tax receipt which can be submitted with your - tax return (under the Free Trade Agreement tax receipts issued - by an organization registered in Canada are fully accepted by - the IRS in the USA, with a few conditions). + tax return. Holland: Transfer to the account of "Stichting ICCF Holland" in Venlo. - This will allow for tax deduction (if you live in Holland)! + This will allow for tax deduction if you live in Holland. Postbank, nr. 4548774 Germany: It is possible to make donations that allow for a tax return. @@ -249,10 +264,11 @@ Europe: Use a bank transfer if possible. Your bank should have a form Credit Card: You can use PayPal to send money with a Credit card. This is the most widely used Internet based payment system. It's really simple to use. Use this link to find more info: - https://www.paypal.com/affil/pal=Bram%40moolenaar.net + https://www.paypal.com/affil/pal=Bram%40iccf-holland.org The e-mail address for sending the money to is: - Bram@iccf-holland.org - For amounts above $150 sending a cheque is preferred. + Bram@iccf-holland.org + For amounts above 400 Euro ($500) sending a check is + preferred. Others: Transfer to one of these accounts if possible: Postbank, account 4548774 @@ -263,15 +279,18 @@ Others: Transfer to one of these accounts if possible: Rabobank Venlo, account 3765.05.117 Swift code: RABO NL 2U under the name "Bram Moolenaar", Venlo - Otherwise, send a cheque in euro or US dollars to the address + Otherwise, send a check in euro or US dollars to the address below. Minimal amount: $70 (my bank does not accept smaller - amounts for foreign cheques, sorry) + amounts for foreign check, sorry) -Address to send cheques to: +Address to send checks to: stichting ICCF Holland Bram Moolenaar - Clematisstraat 30 - 5925 BE Venlo + Molenstraat 2 + 2161 HP Lisse The Netherlands +This address is expected to be valid for a long time. The address in Venlo +will not be valid after June 2006. + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_32.txt b/en/usr_32.txt new file mode 100644 index 000000000..055a5add3 --- /dev/null +++ b/en/usr_32.txt @@ -0,0 +1,151 @@ +*usr_32.txt* For Vim version 7.0. Last change: 2006 Apr 30 + + VIM USER MANUAL - by Bram Moolenaar + + The undo tree + + +Vim provides multi-level undo. If you undo a few changes and then make a new +change you create a branch in the undo tree. This text is about moving +through the branches. + +|32.1| Numbering changes +|32.2| Jumping around the tree +|32.3| Time travelling + + Next chapter: |usr_40.txt| Make new commands + Previous chapter: |usr_31.txt| Exploiting the GUI +Table of contents: |usr_toc.txt| + +============================================================================== +*32.1* Numbering changes + +In section |02.5| we only discussed one line of undo/redo. But it is also +possible to branch off. This happens when you undo a few changes and then +make a new change. The new changes become a branch in the undo tree. + +Let's start with the text "one". The first change to make is to append +" too". And then move to the first 'o' and change it into 'w'. We then have +two changes, numbered 1 and 2, and three states of the text: + + one ~ + | + change 1 + | + one too ~ + | + change 2 + | + one two ~ + +If we now undo one change, back to "one too", and change "one" to "me" we +create a branch in the undo tree: + + one ~ + | + change 1 + | + one too ~ + / \ + change 2 change 3 + | | + one two me too ~ + +You can now use the |u| command to undo. If you do this twice you get to +"one". Use |CTRL-R| to redo, and you will go to "one too". One more |CTRL-R| +takes you to "me too". Thus undo and redo go up and down in the tree, using +the branch that was last used. + +What matters here is the order in which the changes are made. Undo and redo +are not considered changes in this context. After each change you have a new +state of the text. + +Note that only the changes are numbered, the text shown in the tree above has +no identifier. They are mostly referred to by the number of the change above +it. But sometimes by the number of one of the changes below it, especially +when moving up in the tree, so that you know which change was just undone. + +============================================================================== +*32.2* Jumping around the tree + +So how do you get to "one two" now? You can use this command: > + + :undo 2 + +The text is now "one two", you are below change 2. You can use the |:undo| +command to jump to below any change in the tree. + +Now make another change: change "one" to "not": + + one ~ + | + change 1 + | + one too ~ + / \ + change 2 change 3 + | | + one two me too ~ + | + change 4 + | + not two ~ + +Now you change your mind and want to go back to "me too". Use the |g-| +command. This moves back in time. Thus it doesn't walk the tree upwards or +downwards, but goes to the change made before. + +You can repeat |g-| and you will see the text change: + me too ~ + one two ~ + one too ~ + one ~ + +Use |g+| to move forward in time: + one ~ + one too ~ + one two ~ + me too ~ + not two ~ + +Using |:undo| is useful if you know what change you want to jump to. |g-| and +|g+| are useful if you don't know exactly what the change number is. + +You can type a count before |g-| and |g+| to repeat them. + +============================================================================== +*32.3* Time travelling + +When you have been working on text for a while the tree grows to become big. +Then you may want to go to the text of some minutes ago. + +To see what branches there are in the undo tree use this command: > + + :undolist +< number changes time ~ + 3 2 16 seconds ago + 4 3 5 seconds ago + +Here you can see the number of the leaves in each branch and when the change +was made. Assuming we are below change 4, at "not two", you can go back ten +seconds with this command: > + + :earlier 10s + +Depending on how much time you took for the changes you end up at a certain +position in the tree. The |:earlier| command argument can be "m" for minutes +and "h" for hours. To go all the way back use a big number: > + + :earlier 10h + +To travel forward in time again use the |:later| command: > + + :later 1m + +The arguments are "s", "m" and "h", just like with |:earlier|. + +============================================================================== + +Next chapter: |usr_40.txt| Make new commands + +Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/debug.jax b/ja/debug.jax index 601dac9d7..0182b214f 100644 --- a/ja/debug.jax +++ b/ja/debug.jax @@ -1,8 +1,8 @@ COMMENT: Vimのデバッグ -STATUS: finished 7.0g +STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*debug.txt* For Vim version 7.0g. Last change: 2006 May 01 +*debug.txt* For Vim version 7.0. Last change: 2006 May 01 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/ja/pattern.jax b/ja/pattern.jax index 699c3ec1e..9cc0fb886 100644 --- a/ja/pattern.jax +++ b/ja/pattern.jax @@ -1,9 +1,9 @@ COMMENT: 正規表現 -STATUS: finished 7.0e +STATUS: finished 7.0 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*pattern.txt* For Vim version 7.0e. Last change: 2006 Apr 22 +*pattern.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1012,13 +1012,12 @@ x 特別な意味のない文字は、その文字自身とマッチします */[[=* *[==]* - 等価クラス。これはその文字とほぼ同じ文字にマッチします。例えば、アク セントを無視するなど。次のように書きます: - [=a=] + [=a=] 現在、これは latin1 でのみ利用できます。utf-8 と latin9 での latin1 の文字も機能します。 */[[.* *[..]* - - collation element。現在は単に一文字だけ指定できます: - [.a.] -訳注: see re_format(7) + - 照合要素。現在は中に一文字だけ指定できます: + [.a.] */\]* - リテラル文字の ']'、'^'、'-'、'\' をコレクションに含めるには、バック スラッシュを前置して、"[xyz\]]"、"[\^xyz]"、"[xy\-z]"、"[xyz\\]" と diff --git a/ja/pi_paren.jax b/ja/pi_paren.jax index 5c669267f..5c287c462 100644 --- a/ja/pi_paren.jax +++ b/ja/pi_paren.jax @@ -1,8 +1,8 @@ COMMENT: 対応するカッコの強調表示 -STATUS: finished 7.0d +STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*pi_paren.txt* For Vim version 7.0d. Last change: 2006 Apr 03 +*pi_paren.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/ja/pi_tar.jax b/ja/pi_tar.jax index bc4518267..11a7f1c0e 100644 --- a/ja/pi_tar.jax +++ b/ja/pi_tar.jax @@ -1,12 +1,12 @@ COMMENT: tarファイルインターフェース -STATUS: suspend 7.0e +STATUS: suspend 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*pi_tar.txt* For Vim version 7.0e. Last change: 2006 Apr 22 +*pi_tar.txt* For Vim version 7.0. Last change: 2006 May 02 - +====================+ - | Tar File Interface | - +====================+ + +====================+ + | Tar File Interface | + +====================+ Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) @@ -34,30 +34,33 @@ Copyright: The GPL (gnu public license) applies to *tar-copyright* これらの変数を <.vimrc> ファイルなどで設定してください。 変数 初期設定 説明 - *g:tar_browseoptions* "Ptf" ファイル一覧を取得するために使います - *g:tar_readoptions* "OPxf" tar ファイルを展開するために使います + *g:tar_browseoptions* "Ptf" ファイル一覧を取得するときに使われる + *g:tar_readoptions* "OPxf" tar ファイルを展開するときに使われる *g:tar_cmd* "tar" tar プログラムの名前 - *g:tar_writeoptions* "uf" ファイルを更新するために使います + *g:tar_writeoptions* "uf" ファイルを更新するときに使われる ============================================================================== 4. 開発履歴 *tar-history* + v9 May 02, 2006 * improved detection of masquerading as tar file + v8 May 02, 2006 * allows editing of files that merely masquerade as tar + files v7 Mar 22, 2006 * work on making tar plugin work across network Mar 27, 2006 * g:tar_cmd now available for users to change the name - of the tar program to be used. By default, of course, + of the tar program to be used. By default, of course, its "tar". v6 Dec 21, 2005 * writing to files not in directories caused problems - - fixed (pointed out by Christian Robinson) + fixed (pointed out by Christian Robinson) v5 Nov 22, 2005 * report option workaround installed v3 Sep 16, 2005 * handles writing files in an archive back to the - archive + archive Oct 18, 2005 * <amatch> used instead of <afile> in autocmds Oct 18, 2005 * handles writing to compressed archives Nov 03, 2005 * handles writing tarfiles across a network using - netrw#NetWrite() - v2 * converted to use Vim7's new autoload feature by - Bram Moolenaar + netrw#NetWrite() + v2 * converted to use Vim7's new autoload feature by + Bram Moolenaar v1 (original) * Michael Toren (see http://michael.toren.net/code/) ============================================================================== diff --git a/ja/pi_vimball.jax b/ja/pi_vimball.jax index 4231eaf01..e902409b5 100644 --- a/ja/pi_vimball.jax +++ b/ja/pi_vimball.jax @@ -1,8 +1,8 @@ COMMENT: Vimballアーカイバ -STATUS: suspend 7.0f +STATUS: suspend 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*pi_vimball.txt* For Vim version 7.0f. Last change: 2006 Apr 27 +*pi_vimball.txt* For Vim version 7.0. Last change: 2006 May 01 ---------------- Vimball Archiver @@ -11,8 +11,8 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* - The VIM LICENSE applies to Vimball.vim, and Vimball.txt - (see |copyright|) except use "Vimball" instead of "Vim". + The VIM LICENSE applies to Vimball.vim, and Vimball.txt + (see |copyright|) except use "Vimball" instead of "Vim". No warranty, express or implied. Use At-Your-Own-Risk! @@ -64,23 +64,26 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* ============================================================================== 3. 開発履歴 *vimball-history* {{{1 + 13 : May 01, 2006 * exists("&acd") used to determine if the acd + option exists + 12 : May 01, 2006 * bugfix - the |'acd'| option is not always defined 11 : Apr 27, 2006 * VimballList would create missing subdirectories that - the vimball specified were needed. Fixed. + the vimball specified were needed. Fixed. 10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of - functions. Included some more settings in them + functions. Included some more settings in them which frequently cause trouble. 9 : Apr 26, 2006 * various changes to support Windows prediliction - for backslashes and spaces in file and directory + for backslashes and spaces in file and directory names. 7 : Apr 25, 2006 * bypasses foldenable - * uses more exe and less norm! (:yank :put etc) + * uses more exe and less norm! (:yank :put etc) * does better at insuring a "Press ENTER" prompt appears to keep its messages visible 4 : Mar 31, 2006 * BufReadPost seems to fire twice; BufReadEnter - only fires once, so the "Source this file..." + only fires once, so the "Source this file..." message is now issued only once. 3 : Mar 20, 2006 * removed query, now requires sourcing to be - extracted (:so %). Message to that effect + extracted (:so %). Message to that effect included. * :VimballList now shows files that would be extracted. diff --git a/ja/pi_zip.jax b/ja/pi_zip.jax index 9d3b5d50f..49f2cc0f2 100644 --- a/ja/pi_zip.jax +++ b/ja/pi_zip.jax @@ -1,8 +1,8 @@ COMMENT: zipファイルインターフェース -STATUS: suspend 7.0e +STATUS: suspend 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*pi_zip.txt* For Vim version 7.0e. Last change: 2006 Apr 22 +*pi_zip.txt* For Vim version 7.0. Last change: 2006 May 01 +====================+ | Zip File Interface | @@ -11,7 +11,7 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr {{{1 *zip-copyright* - Permission is hereby granted to use and distribute this code, + Permission is hereby granted to use and distribute this code, with or without modifications, provided that this copyright notice is copied with it. Like anything else that's free, zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is* @@ -37,21 +37,21 @@ Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr {{{1 *zip-copyright* ============================================================================== 3. 開発履歴 *zip-history* v8 Apr 10, 2006 * Bram Moolenaar reported that he received an error message - due to "Pattern not found: ^.*\%0c"; this was caused by + due to "Pattern not found: ^.*\%0c"; this was caused by stridx finding a Name... at the beginning of the line; zip.vim tried 4,$s/^.*\%0c//, but that doesn't work. Fixed. v7 Mar 22, 2006 * escaped some characters that can cause filename handling - problems. + problems. v6 Dec 21, 2005 * writing to files not in directories caused problems - - fixed (pointed out by Christian Robinson) + fixed (pointed out by Christian Robinson) v5 Nov 22, 2005 * report option workaround installed v3 Oct 18, 2005 * <amatch> used instead of <afile> in autocmds v2 Sep 16, 2005 * silenced some commands (avoiding hit-enter prompt) - * began testing under Windows; works thus far + * began testing under Windows; works thus far * filetype detection fixed Nov 03, 2005 * handles writing zipfiles across a network using - netrw#NetWrite() + netrw#NetWrite() v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing ============================================================================== diff --git a/ja/print.jax b/ja/print.jax index 0295dc8ed..386908d06 100644 --- a/ja/print.jax +++ b/ja/print.jax @@ -1,8 +1,8 @@ COMMENT: 印刷機能 -STATUS: finished 7.0e +STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*print.txt* For Vim version 7.0e. Last change: 2006 Apr 21 +*print.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -218,7 +218,7 @@ Win32 GUI では、'guifont' と同じように、フォントの属性を追加 Japanese JIS_C_1978 JIS_X_1983 JIS_X_1990 - MSWINDOWS Win3.1/95J (JIS X 1997 + NEC + + MSWINDOWS Win3.1/95J (JIS X 1997 + NEC + IBM extensions) KANJITALK6 Apple Mac KanjiTalk V6.x KANJITALK7 Apple Mac KanjiTalk V7.x @@ -254,7 +254,7 @@ Win32 GUI では、'guifont' と同じように、フォントの属性を追加 KANJITALK7 x euc-kr cp949 ucs-2 utf-8 ~ - Korean KS_X_1992 x + Korean KS_X_1992 x MAC x MSWINDOWS x ISO10646 x x @@ -304,7 +304,7 @@ CJK フォントが ASCII 文字を持っていない場合があります。ま :set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,c:yes < *popt-option* -'printoptions' 'popt' string (default "") +'printoptions' 'popt' string (default "") global |:hardcopy| の出力を制御するためのオプションのリストを設定します。リストはコン マで区切ります: @@ -329,11 +329,11 @@ CJK フォントが ASCII 文字を持っていない場合があります。ま header:0 ヘッダーを印刷しません。 header:2 (標準設定) ヘッダーの印刷に二行使います。 - syntax:n 構文強調を使わない。大きなファイルを印刷するときでも、 - 速く印刷できます。 + syntax:n 構文強調を使わない。大きなファイルでも高速に印刷できま + す。 syntax:y 構文強調を使う。 - syntax:a (標準設定) カラー印刷かグレースケール印刷が可能なプリンタを使って - いるようなら、構文強調を使います。 + syntax:a (標準設定) カラー印刷またはグレースケール印刷が可能なプリンタなら + 構文強調を使います。 number:y 行番号を印刷する。 number:n (標準設定) 行番号を印刷しない。 diff --git a/ja/sponsor.jax b/ja/sponsor.jax index 541a096b6..510e0066f 100644 --- a/ja/sponsor.jax +++ b/ja/sponsor.jax @@ -1,8 +1,8 @@ COMMENT: 開発支援(スポンサー)について -STATUS: finished 7.0c +STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*sponsor.txt* For Vim version 7.0c. Last change: 2006 Mar 29 +*sponsor.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -200,8 +200,8 @@ Bram を雇いたい場合は、寄付ではなく、彼に直接連絡してく 国によって違います。|Uganda| の子供達を援助するための寄付は、オランダ、ドイ ツ、カナダ、アメリカ、で税金が控除されます。ICCF のウェブサイトを参照してくだ -さい http://www.iccf.nl/donate.html。 Vim を使用することに対して寄付したことを -メールで Bram に知らせてください。 +さい http://iccf-holland.org/donate.html。 Vim を使用することに対して寄付した +ことを、メールで Bram に知らせてください。 明細書はもらえますか? @@ -210,4 +210,5 @@ Bram を雇いたい場合は、寄付ではなく、彼に直接連絡してく す。 + vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/tabpage.jax b/ja/tabpage.jax index 748073ec7..00276bb0a 100644 --- a/ja/tabpage.jax +++ b/ja/tabpage.jax @@ -1,8 +1,8 @@ COMMENT: タブページの使い方 -STATUS: finished 7.0f +STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*tabpage.txt* For Vim version 7.0f. Last change: 2006 Apr 26 +*tabpage.txt* For Vim version 7.0. Last change: 2006 May 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -360,5 +360,9 @@ Note: このオプションでは強調表示は使えません。%T と %X は Note: この関数はオプションを設定する前に定義しておく必要があります。そうしない と、関数未定義のエラーが表示されてしまいます。 +標準のラベルを使いたい場合は、空文字列を返してください。 + +あるタブページに固有の何かを表示したいときは、タブページローカル変数 |t:var| +が便利です。 vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/uganda.jax b/ja/uganda.jax index bfdd7c484..a717e1179 100644 --- a/ja/uganda.jax +++ b/ja/uganda.jax @@ -1,10 +1,10 @@ COMMENT: ライセンス、寄付 -STATUS: finished 7.0c +STATUS: finished 7.0 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*uganda.txt* For Vim version 7.0c. Last change: 2006 Mar 24 +*uganda.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/ja/usr_32.jax b/ja/usr_32.jax index 6f9063307..2498acd2d 100644 --- a/ja/usr_32.jax +++ b/ja/usr_32.jax @@ -1,8 +1,8 @@ COMMENT: UNDOツリー -STATUS: finished 7.0c +STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_32.txt* For Vim version 7.0c. Last change: 2006 Mar 24 +*usr_32.txt* For Vim version 7.0. Last change: 2006 Apr 30 VIM USER MANUAL - by Bram Moolenaar @@ -15,7 +15,7 @@ Vim は多段 undo を提供しています。ユーザーが変更を undo し |32.1| 変更の番号付け |32.2| ツリーを飛び回る -|32.3| タイムトラベリング +|32.3| タイムトラベル 次章: |usr_40.txt| 新しいコマンドを作る 前章: |usr_31.txt| GUI の活用 @@ -35,11 +35,11 @@ Vim は多段 undo を提供しています。ユーザーが変更を undo し one ~ | change 1 - | + | one too ~ - | + | change 2 - | + | one two ~ 一つだけ変更を undo し、"one too" の状態に戻ります。そして、"one" を "me" に変 @@ -48,12 +48,12 @@ Vim は多段 undo を提供しています。ユーザーが変更を undo し one ~ | change 1 - | + | one too ~ / \ - change 2 change 3 - | | - one two me too ~ + change 2 change 3 + | | + one two me too ~ この状態で |u| コマンドを使って undo します。二回 undo すると "one" に戻りま す。|CTRL-R| で redo すると "one too" になります。もう一度 |CTRL-R| を実行する @@ -63,16 +63,14 @@ Vim は多段 undo を提供しています。ユーザーが変更を undo し 変更が作成される順番に注目してください。今は undo と redo の動作は重要ではあり ません。それぞれの変更の後にはテキストの新しい状態があります。 -Note: 変更だけが番号付けされます。上の説明でツリーに表示されている"テキスト"は -個別に保存されていません。テキストは、そのテキストより上の変更によって表されま -す。また、ツリーを上に移動しているときなどは、変更を undo するのと同じように、 -テキストは、そのテキストより下の変更によって表されます。 -訳注: 自信なし -訳注: Note that only the changes are numbered, the text shown in the tree -訳注: above has no identifier. They are mostly referred to by the number of -訳注: the change above it. But sometimes by the number of one of the changes -訳注: below it, especially when moving up in the tree, so that you know which -訳注: change was just undone. +Note: 変更にだけ番号が付きます。上の図のツリーに示されている"テキスト"の部分に +番号は付きません。テキストは、その上の変更番号によって言及されます。ツリーを上 +に移動したときなどは、どの変更が undo されたかわかるように、下の変更番号によっ +てテキストが言及されます。 +訳注: undo/redo を実行したときに表示されるメッセージの話。 +訳注: 例えば、上図の "one too" から undo/redo したときのメッセージ: +訳注: undo したとき: 1 change; before #1 +訳注: redo したとき: 1 change; after #3 ============================================================================== *32.2* ツリーを飛び回る (Jumping around the tree) @@ -90,12 +88,12 @@ Note: 変更だけが番号付けされます。上の説明でツリーに表 one ~ | change 1 - | + | one too ~ / \ - change 2 change 3 - | | - one two me too ~ + change 2 change 3 + | | + one two me too ~ | change 4 | @@ -124,7 +122,7 @@ Note: 変更だけが番号付けされます。上の説明でツリーに表 |g-| と |g+| の前にカウントを入力して実行する回数を指定できます。 ============================================================================== -*32.3* タイムトラベリング (Time travelling) +*32.3* タイムトラベル (Time travelling) しばらくテキストを編集していると、ツリーは大きくなってきます。そして、数分前の テキストに戻りたいと思うことがあるかもしれません。 From 623bf8407090a3c5d8222e1f0bfd875335dcedc8 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Tue, 16 Jan 2007 11:36:06 +0000 Subject: [PATCH 078/783] update: options to 7.0 revised vim_faq_help git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@78 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/options.txt | 2539 +++++++++++++++++++++++++++++++++---------- ja/options.jax | 2328 ++++++++++++++++++++++++++++++--------- ja/vim_faq_help.jax | 86 +- 3 files changed, 3827 insertions(+), 1126 deletions(-) diff --git a/en/options.txt b/en/options.txt index 6328e981c..8fb22f850 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,7 +1,7 @@ -*options.txt* For Vim version 6.1. Last change: 2002 Mar 06 +*options.txt* For Vim version 7.0. Last change: 2006 May 04 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Options *options* @@ -19,7 +19,7 @@ achieve special effects. These options come in three forms: string has a string value ============================================================================== -1. Setting options *set-option* +1. Setting options *set-option* *E764* *:se* *:set* :se[t] Show all options that differ from their default value. @@ -31,6 +31,7 @@ achieve special effects. These options come in three forms: internally and can't be changed. Changing the terminal codes in the GUI is not useful either... + *E518* *E519* :se[t] {option}? Show value of {option}. :se[t] {option} Toggle option: set, switch it on. @@ -52,10 +53,10 @@ achieve special effects. These options come in three forms: default value. The values of 'term', 'lines' and 'columns' are not changed. {not in Vi} + *:set-args* *E487* *E521* :se[t] {option}={value} or :se[t] {option}:{value} Set string or number option to {value}. - *:set-args* For numeric options the value can be given in decimal, hex (preceded with 0x) or octal (preceded with '0') (hex and octal are only available for machines which @@ -75,11 +76,9 @@ achieve special effects. These options come in three forms: comma separated list, a comma is added, unless the value was empty. If the option is a list of flags, superfluous flags - are removed. Otherwise there is no check for doubled - values. You can avoid this by removing a value first. - Example: > - :set guioptions-=T guioptions+=T -< Also see |:set-args| above. + are removed. When adding a flag that was already + present the option value doesn't change. + Also see |:set-args| above. {not in Vi} :se[t] {option}^={value} *:set^=* @@ -123,10 +122,12 @@ one value for all local options with the same name. Thus the message applies to the option name, not necessarily its value. When the option was set while executing a function, user command or autocommand, the script in which it was defined is reported. +Note that an option may also have been set as a side effect of setting +'compatible'. {not available when compiled without the +eval feature} - *:set-termcap* -For {option} the form "t_xx" may be used to set a termcap option. This will + *:set-termcap* *E522* +For {option} the form "t_xx" may be used to set a terminal option. This will override the value from the termcap. You can then use it in a mapping. If the "xx" part contains special characters, use the <t_xx> form: > :set <t_#4>=^[Ot @@ -136,6 +137,9 @@ example, if Alt-b produces <Esc>b, use this: > (the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it) The advantage over a mapping is that it works in all situations. +The t_xx options cannot be set from a |modeline| or in the |sandbox|, for +security reasons. + The listing from ":set" looks different from Vi. Long string options are put at the end of the list. The number of options is quite large. The output of "set all" probably does not fit on the screen, causing Vim to give the @@ -158,6 +162,11 @@ include the "|" in the option value, use "\|" instead. This example sets the This sets the 'titlestring' option to "hi" and 'iconstring' to "there": > :set titlestring=hi|set iconstring=there +Similarly, the double quote character starts a comment. To include the '"' in +the option value, use '\"' instead. This example sets the 'titlestring' +option to 'hi "there"': > + :set titlestring=hi\ \"there\" + For MS-DOS and WIN32 backslashes in file names are mostly not removed. More precise: For options that expect a file name (those where environment variables are expanded) a backslash before a normal file name character is not @@ -173,6 +182,7 @@ halved and when you expect the backslashes to be kept. The third gives a result which is probably not what you want. Avoid it. *add-option-flags* *remove-option-flags* + *E539* *E550* *E551* *E552* Some options are a list of flags. When you want to add a flag to such an option, without changing the existing ones, you can do it like this: > :set guioptions+=a @@ -184,7 +194,7 @@ the value "ab", using "set guioptions-=ba" won't work, because the string "ba" doesn't appear. *:set_env* *expand-env* *expand-environment-var* -Environment variables in most string options will be expanded. If the +Environment variables in specific string options will be expanded. If the environment variable exists the '$' and the following environment variable name is replaced with its value. If it does not exist the '$' and the name are not modified. Any non-id character (not a letter, digit or '_') may @@ -259,7 +269,13 @@ You will not get back the 'list' value as it was the last time you edited shown (but that might change in the future). {not in Vi} -:setl[ocal] {option}< Set the local value of {option} to its global value. +:setl[ocal] {option}< Set the local value of {option} to its global value by + copying the value. + {not in Vi} + +:se[t] {option}< Set the local value of {option} to its global value by + making it empty. Only makes sense for |global-local| + options. {not in Vi} *:setg* *:setglobal* @@ -273,21 +289,22 @@ You will not get back the 'list' value as it was the last time you edited {not in Vi} For buffer-local and window-local options: - Command global value local value ~ + Command global value local value ~ :set option=value set set :setlocal option=value - set :setglobal option=value set - - :set option - display - :setlocal option - display -:setglobal option display - + :set option? - display + :setlocal option? - display +:setglobal option? display - Global options with a local value *global-local* -Options are global when you mostly use one value for all buffers. For some -global options it's useful to sometimes have a different local value. You can -set the local value with ":setlocal". That buffer will then use the local -value, while other buffers continue using the global value. +Options are global when you mostly use one value for all buffers and windows. +For some global options it's useful to sometimes have a different local value. +You can set the local value with ":setlocal". That buffer or window will then +use the local value, while other buffers and windows continue using the global +value. For example, you have two windows, both on C source code. They use the global 'makeprg' option. If you do this in one of the two windows: > @@ -305,7 +322,11 @@ This only works for a string option. For a boolean option you need to use the :setlocal autoread< Note that for non-boolean options using "<" copies the global value to the local value, it doesn't switch back to using the global value (that matters -when changing the global value later). +when the global value changes later). You can also use: > + :set path< +This will make the local value of 'path' empty, so that the global value is +used. Thus it does the same as: > + :setlocal path= Note: In the future more global options can be made global-local. Using ":setlocal" on a global option might work differently then. @@ -351,6 +372,9 @@ On Unix systems the form "${HOME}" can be used too. The name between {} can contain non-id characters then. Note that if you want to use this for the "gf" command, you need to add the '{' and '}' characters to 'isfname'. +NOTE: expanding environment variables and "~/" is only done with the ":set" +command, not when assigning a value to an option with ":let". + Note the maximum length of an expanded option is limited. How much depends on the system, mostly it is something like 256 or 1024 characters. @@ -421,37 +445,37 @@ to set options automatically for one or more files: number of lines at the beginning and end of the file are checked for modelines. This is explained here. - *modeline* *vim:* *vi:* *ex:* + *modeline* *vim:* *vi:* *ex:* *E520* There are two forms of modelines. The first form: [text]{white}{vi:|vim:|ex:}[white]{options} [text] any text or empty -{white} at least one white space (<Space> or <Tab>) +{white} at least one blank character (<Space> or <Tab>) {vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" [white] optional white space {options} a list of option settings, separated with white space or ':', where each part between ':' is the argument for a ":set" command -Example: > - vi:noai:sw=3 ts=6 +Example: + vi:noai:sw=3 ts=6 ~ The second form (this is compatible with some versions of Vi): - [text]{white}{vi:|vim:|ex:}[white]set {options}:[text] + [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text] [text] any text or empty -{white} at least one white space (<Space> or <Tab>) +{white} at least one blank character (<Space> or <Tab>) {vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" [white] optional white space -set the string "set " (note the space) +se[t] the string "set " or "se " (note the space) {options} a list of options, separated with white space, which is the argument for a ":set" command : a colon [text] any text or empty -Example: > - /* vim: set ai tw=75: */ +Example: + /* vim: set ai tw=75: */ ~ The white space before {vi:|vim:|ex:} is required. This minimizes the chance that a normal word like "lex:" is caught. There is one exception: "vi:" and @@ -461,10 +485,15 @@ short for "example:"). *modeline-local* The options are set like with ":setlocal": The new value only applies to the -buffer that contains the window. Although it's possible to set global options -from a modeline, this is unusual. If you have two windows open and the files -in it set the same global option to a different value, the result depends on -which one was opened last. +buffer and window that contain the file. Although it's possible to set global +options from a modeline, this is unusual. If you have two windows open and +the files in it set the same global option to a different value, the result +depends on which one was opened last. + +When editing a file that was already loaded, only the window-local options +from the modeline are used. Thus if you manually changed a buffer-local +option after opening the file, it won't be changed if you edit the same buffer +in another window. But window-local options will be set. *modeline-version* If the modeline is only to be used for some versions of Vim, the version @@ -474,10 +503,10 @@ number can be specified where "vim:" is used: vim={vers}: version {vers} vim>{vers}: version after {vers} {vers} is 600 for Vim 6.0 (hundred times the major version plus minor). -For example, to use a modeline only for Vim 6.0 and later: > - /* vim600: set foldmethod=marker: */ -To use a modeline for Vim before version 5.7: > - /* vim<570: set sw=4: */ +For example, to use a modeline only for Vim 6.0 and later: + /* vim600: set foldmethod=marker: */ ~ +To use a modeline for Vim before version 5.7: + /* vim<570: set sw=4: */ ~ There can be no blanks between "vim" and the ":". @@ -485,16 +514,16 @@ The number of lines that are checked can be set with the 'modelines' option. If 'modeline' is off or 'modelines' is 0 no lines are checked. Note that for the first form all of the rest of the line is used, thus a line -like: > - /* vi:ts=4: */ -will give an error message for the trailing "*/". This line is OK: > - /* vi:set ts=4: */ +like: + /* vi:ts=4: */ ~ +will give an error message for the trailing "*/". This line is OK: + /* vi:set ts=4: */ ~ If an error is detected the rest of the line is skipped. If you want to include a ':' in a set command precede it with a '\'. The -backslash in front of the ':' will be removed. Example: > - /* vi:set dir=c\:\tmp: */ +backslash in front of the ':' will be removed. Example: + /* vi:set dir=c\:\tmp: */ ~ This sets the 'dir' option to "c:\tmp". Only a single backslash before the ':' is removed. Thus to include "\:" you have to specify "\\:". @@ -537,13 +566,27 @@ program. When creating a new window the option values from the currently active window are used as a default value for the window-specific options. For the buffer-specific options this depends on the 's' and 'S' flags in the -'cpoptions' option. If 's' in included (which is the default) the values for +'cpoptions' option. If 's' is included (which is the default) the values for buffer options are copied from the currently active buffer when a buffer is first entered. If 'S' is present the options are copied each time the buffer is entered, this is almost like having global options. If 's' and 'S' are not present, the options are copied from the currently active buffer when the buffer is created. +Hidden options *hidden-options* + +Not all options are supported in all versions. This depends on the supported +features and sometimes on the system. A remark about this is in curly braces +below. When an option is not supported it may still be set without getting an +error, this is called a hidden option. You can't get the value of a hidden +option though, it is not stored. + +To test if option "foo" can be used with ":set" use something like this: > + if exists('&foo') +This also returns true for a hidden option. To test if option "foo" is really +supported use something like this: > + if exists('+foo') +< *E355* A jump table for the options with a short description can be found at |Q_op|. @@ -578,23 +621,125 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {only available when compiled with the |+farsi| feature} - When on, the second language is Farsi. In editing mode CTRL-_ toggles + When on, the second language is Farsi. In editing mode CTRL-_ toggles the keyboard map between Farsi and English, when 'allowrevins' set. - When off, the keyboard map toggles between Hebrew and English. This - is useful to start the vim in native mode i.e. English (left-to-right + When off, the keyboard map toggles between Hebrew and English. This + is useful to start the Vim in native mode i.e. English (left-to-right mode) and have default second language Farsi or Hebrew (right-to-left mode). See |farsi.txt|. + *'ambiwidth'* *'ambw'* +'ambiwidth' 'ambw' string (default: "single") + global + {not in Vi} + {only available when compiled with the |+multi_byte| + feature} + Only effective when 'encoding' is "utf-8" or another Unicode encoding. + Tells Vim what to do with characters with East Asian Width Class + Ambiguous (such as Euro, Registered Sign, Copyright Sign, Greek + letters, Cyrillic letters). + + There are currently two possible values: + "single": Use the same width as characters in US-ASCII. This is + expected by most users. + "double": Use twice the width of ASCII characters. + + There are a number of CJK fonts for which the width of glyphs for + those characters are solely based on how many octets they take in + legacy/traditional CJK encodings. In those encodings, Euro, + Registered sign, Greek/Cyrillic letters are represented by two octets, + therefore those fonts have "wide" glyphs for them. This is also + true of some line drawing characters used to make tables in text + file. Therefore, when a CJK font is used for GUI Vim or + Vim is running inside a terminal (emulators) that uses a CJK font + (or Vim is run inside an xterm invoked with "-cjkwidth" option.), + this option should be set to "double" to match the width perceived + by Vim with the width of glyphs in the font. Perhaps it also has + to be set to "double" under CJK Windows 9x/ME or Windows 2k/XP + when the system locale is set to one of CJK locales. See Unicode + Standard Annex #11 (http://www.unicode.org/reports/tr11). + + *'antialias'* *'anti'* *'noantialias'* *'noanti'* +'antialias' 'anti' boolean (default: off) + global + {not in Vi} + {only available when compiled with GUI enabled + on Mac OS X} + This option only has an effect in the GUI version of Vim on Mac OS X + v10.2 or later. When on, Vim will use smooth ("antialiased") fonts, + which can be easier to read at certain sizes on certain displays. + Setting this option can sometimes cause problems if 'guifont' is set + to its default (empty string). + + *'autochdir'* *'acd'* *'noautochdir'* *'noacd'* +'autochdir' 'acd' boolean (default off) + global + {not in Vi} + {only available when compiled with the + |+netbeans_intg| or |+sun_workshop| feature} + When on, Vim will change the current working directory whenever you + open a file, switch buffers, delete a buffer or open/close a window. + It will change to the directory containing the file which was opened + or selected. + This option is provided for backward compatibility with the Vim + released with Sun ONE Studio 4 Enterprise Edition. + Note: When this option is on some plugins may not work. + + *'arabic'* *'arab'* *'noarabic'* *'noarab'* +'arabic' 'arab' boolean (default off) + local to window + {not in Vi} + {only available when compiled with the |+arabic| + feature} + This option can be set to start editing Arabic text. + Setting this option will: + - Set the 'rightleft' option, unless 'termbidi' is set. + - Set the 'arabicshape' option, unless 'termbidi' is set. + - Set the 'keymap' option to "arabic"; in Insert mode CTRL-^ toggles + between typing English and Arabic key mapping. + - Set the 'delcombine' option + Note that 'encoding' must be "utf-8" for working with Arabic text. + + Resetting this option will: + - Reset the 'rightleft' option. + - Disable the use of 'keymap' (without changing its value). + Note that 'arabicshape' and 'delcombine' are not reset (it is a global + option. + Also see |arabic.txt|. + + *'arabicshape'* *'arshape'* + *'noarabicshape'* *'noarshape'* +'arabicshape' 'arshape' boolean (default on) + global + {not in Vi} + {only available when compiled with the |+arabic| + feature} + When on and 'termbidi' is off, the required visual character + corrections that need to take place for displaying the Arabic language + take affect. Shaping, in essence, gets enabled; the term is a broad + one which encompasses: + a) the changing/morphing of characters based on their location + within a word (initial, medial, final and stand-alone). + b) the enabling of the ability to compose characters + c) the enabling of the required combining of some characters + When disabled the character display reverts back to each character's + true stand-alone form. + Arabic is a complex language which requires other settings, for + further details see |arabic.txt|. + *'autoindent'* *'ai'* *'noautoindent'* *'noai'* 'autoindent' 'ai' boolean (default off) local to buffer Copy indent from current line when starting a new line (typing <CR> in Insert mode or when using the "o" or "O" command). If you do not type anything on the new line except <BS> or CTRL-D and then type - <Esc> or <CR>, the indent is deleted again. When autoindent is on, - formatting (with the "gq" command or when you reach 'textwidth' in - Insert mode) uses the indentation of the first line. + <Esc> or <CR>, the indent is deleted again. Moving the cursor to + another line has the same effect, unless the 'I' flag is included in + 'cpoptions'. + When autoindent is on, formatting (with the "gq" command or when you + reach 'textwidth' in Insert mode) uses the indentation of the first + line. When 'smartindent' or 'cindent' is on the indent is changed in a different way. The 'autoindent' option is reset when the 'paste' option is set. @@ -618,7 +763,7 @@ A jump table for the options with a short description can be found at |Q_op|. global Write the contents of the file, if it has been modified, on each :next, :rewind, :last, :first, :previous, :stop, :suspend, :tag, :!, - :make, CTRL-] and CTRL-^ command; and when a CTRL-O, CTRL-I, + :make, CTRL-] and CTRL-^ command; and when a :buffer, CTRL-O, CTRL-I, '{A-Z0-9}, or `{A-Z0-9} command takes one to another file. Note that for some commands the 'autowrite' option is not used, see 'autowriteall' for that. @@ -627,7 +772,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'autowriteall' 'awa' boolean (default off) global {not in Vi} - Like 'autowrite', but also used for commands ":edit", ":quit", + Like 'autowrite', but also used for commands ":edit", ":enew", ":quit", ":qall", ":exit", ":xit", ":recover" and closing the Vim window. Setting this option also implies that Vim behaves like 'autowrite' has been set. @@ -667,10 +812,6 @@ A jump table for the options with a short description can be found at |Q_op|. color). To get around this, force the GUI window to be opened by putting a ":gui" command in the .gvimrc file, before where the value of 'background' is used (e.g., before ":syntax on"). - For the Win32 GUI, setting 'background' before starting the GUI, will - change the background and foreground colors to lightgrey on black or - black on white. On other systems setting 'background' does not - change the foreground or background colors. Normally this option would be set in the .vimrc file. Possibly depending on the terminal name. Example: > :if &term == "pcterm" @@ -691,8 +832,8 @@ A jump table for the options with a short description can be found at |Q_op|. Influences the working of <BS>, <Del>, CTRL-W and CTRL-U in Insert mode. This is a list of items, separated by commas. Each item allows a way to backspace over something: - value effect ~ - indent allow backspacing over autoindent + value effect ~ + indent allow backspacing over autoindent eol allow backspacing over line breaks (join lines) start allow backspacing over the start of insert; CTRL-W and CTRL-U stop once at the start of insert. @@ -700,10 +841,10 @@ A jump table for the options with a short description can be found at |Q_op|. When the value is empty, Vi compatible backspacing is used. For backwards compatibility with version 5.4 and earlier: - value effect ~ - 0 same as "" (Vi compatible) - 1 same as "indent,eol" - 2 same as "indent,eol,start" + value effect ~ + 0 same as ":set backspace=" (Vi compatible) + 1 same as ":set backspace=indent,eol" + 2 same as ":set backspace=indent,eol,start" See |:fixdel| if your <BS> or <Del> key does not do what you want. NOTE: This option is set to "" when 'compatible' is set. @@ -729,11 +870,17 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When writing a file and a backup is made, this option tells how it's - done: + done. This is a comma separated list of words. + + The main values are: "yes" make a copy of the file and overwrite the original one "no" rename the file and write a new one "auto" one of the previous, what works best + Extra values that can be combined with the ones above are: + "breaksymlink" always break symlinks when writing + "breakhardlink" always break hardlinks when writing + Making a copy and overwriting the original file: - Takes extra time to copy the file. + When the file has special attributes, is a (hard/symbolic) link or @@ -752,6 +899,15 @@ A jump table for the options with a short description can be found at |Q_op|. and the file is not a link) that is used. When problems are expected, a copy will be made. + The "breaksymlink" and "breakhardlink" values can be used in + combination with any of "yes", "no" and "auto". When included, they + force Vim to always break either symbolic or hard links by doing + exactly what the "no" option does, renaming the original file to + become the backup and writing a new file in its place. This can be + useful for example in source trees where all the files are symbolic or + hard links and any changes should stay in the local source tree, not + be propagated back to the original source. + *crontab* One situation where "no" and "auto" will cause problems: A program that opens a file, invokes Vim to edit that file, and then tests if the open file was changed (through the file descriptor) will check the @@ -785,10 +941,10 @@ A jump table for the options with a short description can be found at |Q_op|. - The backup file will be created in the first directory in the list where this is possible. - Empty means that no backup file will be created ('patchmode' is - impossible!). + impossible!). Writing may fail because of this. - A directory "." means to put the backup file in the same directory as the edited file. - - A directory starting with "./" (or ".\" for MS-DOS et.al.) means to + - A directory starting with "./" (or ".\" for MS-DOS et al.) means to put the backup file relative to where the edited file is. The leading "." is replaced with the path name of the edited file. ("." inside a directory name has no special meaning). @@ -811,9 +967,10 @@ A jump table for the options with a short description can be found at |Q_op|. The use of |:set+=| and |:set-=| is preferred when adding or removing directories from the list. This avoids problems when a future version uses another default. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. - *'backupext'* *'bex'* + *'backupext'* *'bex'* *E589* 'backupext' 'bex' string (default "~", for VMS: "_") global {not in Vi} @@ -822,9 +979,16 @@ A jump table for the options with a short description can be found at |Q_op|. accidentally overwriting existing files with a backup file. You might prefer using ".bak", but make sure that you don't have files with ".bak" that you want to keep. + Only normal file name characters can be used, "/\*?[|<>" are illegal. + + If you like to keep a lot of backups, you could use a BufWritePre + autocommand to change 'backupext' just before writing the file to + include a timestamp. > + :au BufWritePre * let &bex = '-' . strftime("%Y%b%d%X") . '~' +< Use 'backupdir' to put the backup in a different directory. *'backupskip'* *'bsk'* -'backupskip' 'bsk' string (default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") +'backupskip' 'bsk' string (default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") global {not in Vi} {not available when compiled without the |+wildignore| @@ -835,7 +999,10 @@ A jump table for the options with a short description can be found at |Q_op|. The pattern is used like with |:autocmd|, see |autocmd-patterns|. Watch out for special characters, see |option-backslash|. When $TMPDIR, $TMP or $TEMP is not defined, it is not used for the - default value. "/tmp/*" is only used for Unix. + default value. "/tmp/*" is only used for Unix. + Note that the default also makes sure that "crontab -e" works (when a + backup would be made by renaming the original file crontab won't see + the newly created file). Also see 'backupcopy' and |crontab|. *'balloondelay'* *'bdlay'* 'balloondelay' 'bdlay' number (default: 600) @@ -850,9 +1017,52 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} {only available when compiled with the |+balloon_eval| - and |+sun_workshop| features} + feature} Switch on the |balloon-eval| functionality. + *'balloonexpr'* *'bexpr'* +'balloonexpr' 'bexpr' string (default "") + global or local to buffer |global-local| + {not in Vi} + {only available when compiled with the |+balloon_eval| + feature} + Expression for text to show in evaluation balloon. It is only used + when 'ballooneval' is on. These variables can be used: + + v:beval_bufnr number of the buffer in which balloon is going to show + v:beval_winnr number of the window + v:beval_lnum line number + v:beval_col column number (byte index) + v:beval_text word under or after the mouse pointer + + The evaluation of the expression must not have side effects! + Example: > + function! MyBalloonExpr() + return 'Cursor is at line ' . v:beval_lnum . + \', column ' . v:beval_col . + \ ' of file ' . bufname(v:beval_bufnr) . + \ ' on word "' . v:beval_text . '"' + endfunction + set bexpr=MyBalloonExpr() + set ballooneval +< + NOTE: The balloon is displayed only if the cursor is on a text + character. If the result of evaluating 'balloonexpr' is not empty, + Vim does not try to send a message to an external debugger (Netbeans + or Sun Workshop). + + The expression may be evaluated in the |sandbox|, see + |sandbox-option|. + + It is not allowed to change text or jump to another window while + evaluating 'balloonexpr' |textlock|. + + To check whether line breaks in the balloon text work use this check: > + if has("balloon_multiline") +< When they are supported "\n" characters will start a new line. If the + expression evaluates to a |List| this is equal to using each List item + as a string and putting "\n" in between them. + *'binary'* *'bin'* *'nobinary'* *'nobin'* 'binary' 'bin' boolean (default off) local to buffer @@ -876,6 +1086,9 @@ A jump table for the options with a short description can be found at |Q_op|. The previous values of these options are remembered and restored when 'bin' is switched from on to off. Each buffer has its own set of saved option values. + To edit a file with 'binary' set you can use the |++bin| argument. + This avoids you have to do ":set bin", which would have effect for all + files you edit. When writing a file the <EOL> for the last line is only written if there was one in the original file (normally Vim appends an <EOL> to the last line if there is none; this would make the file longer). See @@ -885,7 +1098,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'bioskey' 'biosk' boolean (default on) global {not in Vi} {only for MS-DOS} - When on the bios is called to obtain a keyboard character. This works + When on the BIOS is called to obtain a keyboard character. This works better to detect CTRL-C, but only works for the console. When using a terminal over a serial port reset this option. Also see |'conskey'|. @@ -905,7 +1118,7 @@ A jump table for the options with a short description can be found at |Q_op|. Some applications use the BOM to recognize the encoding of the file. Often used for UCS-2 files on MS-Windows. For other applications it causes trouble, for example: "cat file1 file2" makes the BOM of file2 - appear halfway the file. + appear halfway the resulting file. When Vim reads a file and 'fileencodings' starts with "ucs-bom", a check for the presence of the BOM is done and 'bomb' set accordingly. Unless 'binary' is set, it is removed from the first line, so that you @@ -919,10 +1132,11 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+linebreak| feature} This option lets you choose which characters might cause a line - break if 'linebreak' is on. + break if 'linebreak' is on. Only works for ASCII and also for 8-bit + characters when 'encoding' is an 8-bit encoding. *'browsedir'* *'bsdir'* -'browsedir' 'bsdir' string (default for "last") +'browsedir' 'bsdir' string (default: "last") global {not in Vi} {only for Motif and Win32 GUI} Which directory to use for the file browser: @@ -947,11 +1161,16 @@ A jump table for the options with a short description can be found at |Q_op|. delete delete the buffer from the buffer list, also when 'hidden' is set or using |:hide|, like using |:bdelete| + wipe wipe out the buffer from the buffer list, also when + 'hidden' is set or using |:hide|, like using + |:bwipeout| + CAREFUL: when "unload", "delete" or "wipe" is used changes in a buffer + are lost without a warning. This option is used together with 'buftype' and 'swapfile' to specify special kinds of buffers. See |special-buffers|. - *'buflisted'* *'bl'* *E85* + *'buflisted'* *'bl'* *'nobuflisted'* *'nobl'* *E85* 'buflisted' 'bl' boolean (default: on) local to buffer {not in Vi} @@ -972,7 +1191,11 @@ A jump table for the options with a short description can be found at |Q_op|. nofile buffer which is not related to a file and will not be written nowrite buffer which will not be written + acwrite buffer which will always be written with BufWriteCmd + autocommands. {not available when compiled without the + |+autocmd| feature} quickfix quickfix buffer, contains list of errors |:cwindow| + or list of locations |:lwindow| help help buffer (you are not supposed to set this manually) @@ -981,8 +1204,9 @@ A jump table for the options with a short description can be found at |Q_op|. Be careful with changing this option, it can have many side effects! - A "quickfix" buffer is only used for the error list. This value is - set by the |:cwindow| command and you are not supposed to change it. + A "quickfix" buffer is only used for the error list and the location + list. This value is set by the |:cwindow| and |:lwindow| commands and + you are not supposed to change it. "nofile" and "nowrite" buffers are similar: both: The buffer is not to be written to disk, ":w" doesn't @@ -996,6 +1220,30 @@ A jump table for the options with a short description can be found at |Q_op|. nofile only: The buffer name is fixed, it is not handled like a file name. It is not modified in response to a |:cd| command. + *E676* + "acwrite" implies that the buffer name is not related to a file, like + "nofile", but it will be written. Thus, in contrast to "nofile" and + "nowrite", ":w" does work and a modified buffer can't be abandoned + without saving. For writing there must be matching |BufWriteCmd|, + |FileWriteCmd| or |FileAppendCmd| autocommands. + + *'casemap'* *'cmp'* +'casemap' 'cmp' string (default: "internal,keepascii") + global + {not in Vi} + {only available when compiled with the |+multi_byte| + feature} + Specifies details about changing the case of letters. It may contain + these words, separated by a comma: + internal Use internal case mapping functions, the current + locale does not change the case mapping. This only + matters when 'encoding' is a Unicode encoding, + "latin1" or "iso-8859-15". When "internal" is + omitted, the towupper() and towlower() system library + functions are used when available. + keepascii For the ASCII characters (0x00 to 0x7f) use the US + case mapping, the current locale is not effective. + This probably only matters for Turkish. *'cdpath'* *'cd'* *E344* *E346* 'cdpath' 'cd' string (default: equivalent to $CDPATH or ",,") @@ -1014,7 +1262,8 @@ A jump table for the options with a short description can be found at |Q_op|. a modified version of the following command in your vimrc file to override it: > :let &cdpath = ',' . substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g') -< This option cannot be set from a |modeline|, for security reasons +< This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. (parts of 'cdpath' can be passed to the shell to expand file names). *'cedit'* @@ -1033,7 +1282,7 @@ A jump table for the options with a short description can be found at |Q_op|. < |Nvi| also has this option, but it only uses the first character. See |cmdwin|. - *'charconvert'* *'ccv'* *E202* *E214* + *'charconvert'* *'ccv'* *E202* *E214* *E513* 'charconvert' 'ccv' string (default "") global {only available when compiled with the |+multi_byte| @@ -1075,7 +1324,8 @@ A jump table for the options with a short description can be found at |Q_op|. Encryption is not done by Vim when using 'charconvert'. If you want to encrypt the file after conversion, 'charconvert' should take care of this. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'cindent'* *'cin'* *'nocindent'* *'nocin'* 'cindent' 'cin' boolean (default off) @@ -1173,13 +1423,14 @@ A jump table for the options with a short description can be found at |Q_op|. - Running Vim in a console. - $DISPLAY is set to start applications on another display. - - The X server might be terminated while Vim in the - console is still running, killing Vim. + - You do not want to connect to the X server in the + console, but do want this in a terminal emulator. To never connect to the X server use: > exclude:.* < This has the same effect as using the |-X| argument. - Note that the window title won't be restored as a side - effect. + Note that when there is no connection to the X server + the window title won't be restored and the clipboard + cannot be accessed. The value of 'magic' is ignored, {pattern} is interpreted as if 'magic' was on. The rest of the option value will be used for @@ -1191,6 +1442,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Number of screen lines to use for the command-line. Helps avoiding |hit-enter| prompts. + The value of this option is stored with the tab page, so that each tab + page can have a different value. *'cmdwinheight'* *'cwh'* 'cmdwinheight' 'cwh' number (default 7) @@ -1200,18 +1453,21 @@ A jump table for the options with a short description can be found at |Q_op|. feature} Number of screen lines to use for the command-line window. |cmdwin| - *'columns'* *'co'* + *'columns'* *'co'* *E594* 'columns' 'co' number (default 80 or terminal width) global {not in Vi} Number of columns of the screen. Normally this is set by the terminal - initialization and does not have to be set by hand. + initialization and does not have to be set by hand. Also see + |posix-screen-size|. When Vim is running in the GUI or in a resizable window, setting this - option may cause the window size to be changed. + option will cause the window size to be changed. When you only want + to use the size for the GUI, put the command in your |gvimrc| file. When you set this option and Vim is unable to change the physical number of columns of the display, the display may be messed up. + Minimum value is 12, maximum value is 10000. - *'comments'* *'com'* + *'comments'* *'com'* *E524* *E525* 'comments' 'com' string (default "s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-") local to buffer @@ -1222,7 +1478,7 @@ A jump table for the options with a short description can be found at |Q_op|. |format-comments|. See |option-backslash| about using backslashes to insert a space. - *'commentstring'* *'cms'* + *'commentstring'* *'cms'* *E537* 'commentstring' 'cms' string (default "/*%s*/") local to buffer {not in Vi} @@ -1233,7 +1489,8 @@ A jump table for the options with a short description can be found at |Q_op|. |fold-marker|. *'compatible'* *'cp'* *'nocompatible'* *'nocp'* -'compatible' 'cp' boolean (default on, off when a .vimrc file is found) +'compatible' 'cp' boolean (default on, off when a |vimrc| or |gvimrc| + file is found) global {not in Vi} This option has the effect of making Vim either more Vi-compatible, or @@ -1248,12 +1505,13 @@ A jump table for the options with a short description can be found at |Q_op|. options. This default was chosen for those people who want to use Vim just like Vi, and don't even (want to) know about the 'compatible' option. - When a ".vimrc" file is found while Vim is starting up, this option is - switched off, and all options that have not been modified will be set - to the Vim defaults. Effectively, this means that when a ".vimrc" - file exists, Vim will use the Vim defaults, otherwise it will use the - Vi defaults. (Note: This doesn't happen for the system-wide vimrc - file). Also see |compatible-default|. + When a |vimrc| or |gvimrc| file is found while Vim is starting up, + this option is switched off, and all options that have not been + modified will be set to the Vim defaults. Effectively, this means + that when a |vimrc| or |gvimrc| file exists, Vim will use the Vim + defaults, otherwise it will use the Vi defaults. (Note: This doesn't + happen for the system-wide vimrc or gvimrc file). Also see + |compatible-default| and |posix-compliance|. You can also set this option with the "-C" argument, and reset it with "-N". See |-C| and |-N|. Switching this option off makes the Vim defaults be used for options @@ -1320,7 +1578,7 @@ A jump table for the options with a short description can be found at |Q_op|. use CTRL-E for cmdline completion 'writebackup' on or off depends on +writebackup feature - *'complete'* *'cpt'* + *'complete'* *'cpt'* *E535* 'complete' 'cpt' string (default: ".,w,b,u,t,i") local to buffer {not in Vi} @@ -1334,6 +1592,7 @@ A jump table for the options with a short description can be found at |Q_op|. u scan the unloaded buffers that are in the buffer list U scan the buffers that are not in the buffer list k scan the files given with the 'dictionary' option + kspell use the currently active spell checking |spell| k{dict} scan the file {dict}. Several "k" flags can be given, patterns are valid too. For example: > :set cpt=k/usr/dict/*,k~/spanish @@ -1360,8 +1619,46 @@ A jump table for the options with a short description can be found at |Q_op|. 6. included files As you can see, CTRL-N and CTRL-P can be used to do any 'iskeyword'- - based expansion (eg dictionary |i_CTRL-X_CTRL-K|, included patterns - |i_CTRL-X_CTRL-I|, tags |i_CTRL-X_CTRL-]| and normal expansions) + based expansion (e.g., dictionary |i_CTRL-X_CTRL-K|, included patterns + |i_CTRL-X_CTRL-I|, tags |i_CTRL-X_CTRL-]| and normal expansions). + + *'completefunc'* *'cfu'* +'completefunc' 'cfu' string (default: empty) + local to buffer + {not in Vi} + {not available when compiled without the +eval + or +insert_expand feature} + This option specifies a function to be used for Insert mode completion + with CTRL-X CTRL-U. |i_CTRL-X_CTRL-U| + See |complete-functions| for an explanation of how the function is + invoked and what it should return. + + + *'completeopt'* *'cot'* +'completeopt' 'cot' string (default: "menu,preview") + global + {not available when compiled without the + |+insert_expand| feature} + {not in Vi} + A comma separated list of options for Insert mode completion + |ins-completion|. The supported values are: + + menu Use a popup menu to show the possible completions. The + menu is only shown when there is more than one match and + sufficient colors are available. |ins-completion-menu| + + menuone Use the popup menu also when there is only one match. + Useful when there is additional information about the + match, e.g., what file it comes from. + + longest Only insert the longest common text of the matches. If + the menu is displayed you can use CTRL-L to add more + characters. Whether case is ignored depends on the kind + of completion. For buffer text the 'ignorecase' option is + used. + + preview Show extra information about the currently selected + completion in the preview window. *'confirm'* *'cf'* *'noconfirm'* *'nocf'* 'confirm' 'cf' boolean (default off) @@ -1388,6 +1685,20 @@ A jump table for the options with a short description can be found at |Q_op|. off on BIOS off off STDIN + *'copyindent'* *'ci'* *'nocopyindent'* *'noci'* +'copyindent' 'ci' boolean (default off) + local to buffer + {not in Vi} + Copy the structure of the existing lines indent when autoindenting a + new line. Normally the new indent is reconstructed by a series of + tabs followed by spaces as required (unless |'expandtab'| is enabled, + in which case only spaces are used). Enabling this option makes the + new line copy whatever characters were used for indenting on the + existing line. If the new indent is greater than on the existing + line, the remaining space is filled in the normal manner. + NOTE: 'copyindent' is reset when 'compatible' is set. + Also see 'preserveindent'. + *'cpoptions'* *'cpo'* 'cpoptions' 'cpo' string (Vim default: "aABceFs", Vi default: all flags) @@ -1402,14 +1713,21 @@ A jump table for the options with a short description can be found at |Q_op|. "+=" and "-=" feature of ":set" |add-option-flags|. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. + NOTE: This option is set to the POSIX default value at startup when + the Vi default value would be used and the $VIM_POSIX environment + variable exists |posix|. This means tries to behave like the POSIX + specification. contains behavior ~ + *cpo-a* a When included, a ":read" command with a file name argument will set the alternate file name for the current window. + *cpo-A* A When included, a ":write" command with a file name argument will set the alternate file name for the current window. + *cpo-b* b "\|" in a ":map" command is recognized as the end of the map command. The '\' is included in the mapping, the text after the '|' is interpreted as the next @@ -1417,91 +1735,142 @@ A jump table for the options with a short description can be found at |Q_op|. include the '|' in the mapping. Applies to all mapping, abbreviation, menu and autocmd commands. See also |map_bar|. + *cpo-B* B A backslash has no special meaning in mappings, abbreviations and the "to" part of the menu commands. Remove this flag to be able to use a backslash like a CTRL-V. For example, the command ":map X \<Esc>" results in X being mapped to: - 'B' included: "\^[" (^[ is a real <Esc>) - 'B' excluded: "<Esc>" (5 characters) + 'B' included: "\^[" (^[ is a real <Esc>) + 'B' excluded: "<Esc>" (5 characters) ('<' excluded in both cases) + *cpo-c* c Searching continues at the end of any match at the - cursor position. When not present searching continues + cursor position, but not further than the start of the + next line. When not present searching continues one character from the cursor position. With 'c' "abababababab" only gets three matches when repeating "/abab", without 'c' there are five matches. + *cpo-C* C Do not concatenate sourced lines that start with a backslash. See |line-continuation|. + *cpo-d* d Using "./" in the 'tags' option doesn't mean to use the tags file relative to the current file, but the tags file in the current directory. + *cpo-D* D Can't use CTRL-K to enter a digraph after Normal mode commands with a character argument, like |r|, |f| and |t|. + *cpo-e* e When executing a register with ":@r", always add a <CR> to the last line, also when the register is not linewise. If this flag is not present, the register is not linewise and the last line does not end in a <CR>, then the last line is put on the command-line and can be edited before hitting <CR>. + *cpo-E* E It is an error when using "y", "d", "c", "g~", "gu" or "gU" on an Empty region. The operators only work when at least one character is to be operate on. Example: This makes "y0" fail in the first column. + *cpo-f* f When included, a ":read" command with a file name argument will set the file name for the current buffer, if the current buffer doesn't have a file name yet. + *cpo-F* F When included, a ":write" command with a file name argument will set the file name for the current buffer, if the current buffer doesn't have a file name - yet. + yet. Also see |cpo-P|. + *cpo-g* g Goto line 1 when using ":edit" without argument. + *cpo-H* + H When using "I" on a line with only blanks, insert + before the last blank. Without this flag insert after + the last blank. + *cpo-i* i When included, interrupting the reading of a file will leave it modified. + *cpo-I* + I When moving the cursor up or down just after inserting + indent for 'autoindent', do not delete the indent. + *cpo-j* j When joining lines, only add two spaces after a '.', not after '!' or '?'. Also see 'joinspaces'. + *cpo-J* J A |sentence| has to be followed by two spaces after - the '.', '!' or '?'. A <Tab> is not recognized as + the '.', '!' or '?'. A <Tab> is not recognized as white space. + *cpo-k* k Disable the recognition of raw key codes in mappings, abbreviations, and the "to" part of menu commands. For example, if <Key> sends ^[OA (where ^[ is <Esc>), the command ":map X ^[OA" results in X being mapped to: - 'k' included: "^[OA" (3 characters) - 'k' excluded: "<Key>" (one key code) + 'k' included: "^[OA" (3 characters) + 'k' excluded: "<Key>" (one key code) Also see the '<' flag below. + *cpo-K* K Don't wait for a key code to complete when it is halfway a mapping. This breaks mapping <F1><F1> when only part of the second <F1> has been read. It enables cancelling the mapping by typing <F1><Esc>. + *cpo-l* l Backslash in a [] range in a search pattern is taken - literally, only "\]" is special See |/[]| + literally, only "\]", "\^", "\-" and "\\" are special. + See |/[]| 'l' included: "/[ \t]" finds <Space>, '\' and 't' 'l' excluded: "/[ \t]" finds <Space> and <Tab> + Also see |cpo-\|. + *cpo-L* L When the 'list' option is set, 'wrapmargin', - 'textwidth' and Virtual replace mode (see |gR|) count - a <Tab> as two characters, instead of the normal - behavior of a <Tab>. + 'textwidth', 'softtabstop' and Virtual Replace mode + (see |gR|) count a <Tab> as two characters, instead of + the normal behavior of a <Tab>. + *cpo-m* m When included, a showmatch will always wait half a second. When not included, a showmatch will wait half a second or until a character is typed. |'showmatch'| + *cpo-M* + M When excluded, "%" matching will take backslashes into + account. Thus in "( \( )" and "\( ( \)" the outer + parenthesis match. When included "%" ignores + backslashes, which is Vi compatible. + *cpo-n* n When included, the column used for 'number' will also be used for text of wrapped lines. + *cpo-o* o Line offset to search command is not remembered for next search. + *cpo-O* O Don't complain if a file is being overwritten, even when it didn't exist when editing it. This is a protection against a file unexpectedly created by someone else. Vi didn't complain about this. + *cpo-p* p Vi compatible Lisp indenting. When not present, a slightly better algorithm is used. + *cpo-P* + P When included, a ":write" command that appends to a + file will set the file name for the current buffer, if + the current buffer doesn't have a file name yet and + the 'F' flag is also included |cpo-F|. + *cpo-q* + q When joining multiple lines leave the cursor at the + position where it would be when joining two lines. + *cpo-r* r Redo ("." command) uses "/" to repeat a search command, instead of the actually used search string. + *cpo-R* + R Remove marks from filtered lines. Without this flag + marks are kept like |:keepmarks| was used. + *cpo-s* s Set buffer options when entering the buffer for the first time. This is like it is in Vim version 3.0. And it is the default. If not present the options are set when the buffer is created. + *cpo-S* S Set buffer options always when entering a buffer (except 'readonly', 'fileformat', 'filetype' and 'syntax'). This is the (most) Vi compatible setting. @@ -1514,30 +1883,51 @@ A jump table for the options with a short description can be found at |Q_op|. no no when buffer created yes no when buffer first entered (default) X yes each time when buffer entered (vi comp.) - + *cpo-t* t Search pattern for the tag command is remembered for "n" command. Otherwise Vim only puts the pattern in the history for search pattern, but doesn't change the last used search pattern. + *cpo-u* u Undo is Vi compatible. See |undo-two-ways|. + *cpo-v* + v Backspaced characters remain visible on the screen in + Insert mode. Without this flag the characters are + erased from the screen right away. With this flag the + screen newly typed text overwrites backspaced + characters. + *cpo-w* w When using "cw" on a blank character, only change one character and not all blanks until the start of the next word. + *cpo-W* W Don't overwrite a readonly file. When omitted, ":w!" overwrites a readonly file, if possible. + *cpo-x* x <Esc> on the command-line executes the command-line. The default in Vim is to abandon the command-line, because <Esc> normally aborts a command. |c_<Esc>| + *cpo-X* + X When using a count with "R" the replaced text is + deleted only once. Also when repeating "R" with "." + and a count. + *cpo-y* y A yank command can be redone with ".". + *cpo-Z* + Z When using "w!" while the 'readonly' option is set, + don't reset 'readonly'. + *cpo-!* ! When redoing a filter command, use the last used external command, whatever it was. Otherwise the last used -filter- command is used. + *cpo-$* $ When making a change to one line, don't redisplay the line, but put a '$' at the end of the changed text. The changed text will be overwritten when you type the new text. The line is redisplayed if you type any command that moves the cursor from the insertion point. + *cpo-%* % Vi-compatible matching is done for the "%" command. Does not recognize "#if", "#endif", etc. Does not recognize "/*" and "*/". @@ -1551,15 +1941,66 @@ A jump table for the options with a short description can be found at |Q_op|. everything inside quotes is ignored. When matching a paren inside quotes, it will find the matching one (if there is one). This works very well for C programs. + This flag is also used for other features, such as + C-indenting. + *cpo--* + - When included, a vertical movement command fails when + it would go above the first line or below the last + line. Without it the cursor moves to the first or + last line, unless it already was in that line. + Applies to the commands "-", "k", CTRL-P, "+", "j", + CTRL-N, CTRL-J and ":1234". + *cpo-+* + + When included, a ":write file" command will reset the + 'modified' flag of the buffer, even though the buffer + itself may still be different from its file. + *cpo-star* * Use ":*" in the same way as ":@". When not included, ":*" is an alias for ":'<,'>", select the Visual area. + *cpo-<* < Disable the recognition of special key codes in |<>| form in mappings, abbreviations, and the "to" part of menu commands. For example, the command ":map X <Tab>" results in X being mapped to: - '<' included: "<Tab>" (5 characters) - '<' excluded: "^I" (^I is a real <Tab>) + '<' included: "<Tab>" (5 characters) + '<' excluded: "^I" (^I is a real <Tab>) Also see the 'k' flag above. + *cpo->* + > When appending to a register, put a line break before + the appended text. + + POSIX flags. These are not included in the Vi default value, except + when $VIM_POSIX was set on startup. |posix| + + contains behavior ~ + *cpo-#* + # A count before "D", "o" and "O" has no effect. + *cpo-&* + & When ":preserve" was used keep the swap file when + exiting normally while this buffer is still loaded. + This flag is tested when exiting. + *cpo-\* + \ Backslash in a [] range in a search pattern is taken + literally, only "\]" is special See |/[]| + '\' included: "/[ \-]" finds <Space>, '\' and '-' + '\' excluded: "/[ \-]" finds <Space> and '-' + Also see |cpo-l|. + *cpo-/* + / When "%" is used as the replacement string in a |:s| + command, use the previous replacement string. |:s%| + *cpo-{* + { The |{| and |}| commands also stop at a "{" character + at the start of a line. + *cpo-.* + . The ":chdir" and ":cd" commands fail if the current + buffer is modified, unless ! is used. Vim doesn't + need this, since it remembers the full path of an + opened file. + *cpo-bar* + | The value of the $LINES and $COLUMNS environment + variables overrule the terminal size values obtained + with system specific functions. + *'cscopepathcomp'* *'cspc'* 'cscopepathcomp' 'cspc' number (default 0) @@ -1577,7 +2018,17 @@ A jump table for the options with a short description can be found at |Q_op|. feature} {not in Vi} Specifies the command to execute cscope. See |cscopeprg|. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + + *'cscopequickfix'* *'csqf'* +'cscopequickfix' 'csqf' string (default "") + global + {not available when compiled without the |+cscope| + or |+quickfix| features} + {not in Vi} + Specifies whether to use quickfix window to show cscope results. + See |cscopequickfix|. *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'* 'cscopetag' 'cst' boolean (default off) @@ -1608,16 +2059,52 @@ A jump table for the options with a short description can be found at |Q_op|. Give messages when adding a cscope database. See |cscopeverbose|. NOTE: This option is reset when 'compatible' is set. + + *'cursorcolumn'* *'cuc'* *'nocursorcolumn'* *'nocuc'* +'cursorcolumn' 'cuc' boolean (default off) + local to window + {not in Vi} + {not available when compiled without the |+syntax| + feature} + Highlight the screen column of the cursor with CursorColumn + |hl-CursorColumn|. Useful to align text. Will make screen redrawing + slower. + If you only want the highlighting in the current window you can use + these autocommands: > + au WinLeave * set nocursorline nocursorcolumn + au WinEnter * set cursorline cursorcolumn +< + + *'cursorline'* *'cul'* *'nocursorline'* *'nocul'* +'cursorline' 'cul' boolean (default off) + local to window + {not in Vi} + {not available when compiled without the |+syntax| + feature} + Highlight the screen line of the cursor with CursorLine + |hl-CursorLine|. Useful to easily spot the cursor. Will make screen + redrawing slower. + When Visual mode is active the highlighting isn't used to make it + easier to see the selected text. + + *'debug'* 'debug' string (default "") global {not in Vi} - When set to "msg", error messages that would otherwise be omitted will - be given anyway. This is useful when debugging 'foldexpr' or + These values can be used: + msg Error messages that would otherwise be omitted will be given + anyway. + throw Error messages that would otherwise be omitted will be given + anyway and also throw an exception and set |v:errmsg|. + beep A message will be given when otherwise only a beep would be + produced. + The values can be combined, separated by a comma. + "msg" and "throw" are useful for debugging 'foldexpr', 'formatexpr' or 'indentexpr'. *'define'* *'def'* -'define' 'def' string (default "^#\s*define") +'define' 'def' string (default "^\s*#\s*define") global or local to buffer |global-local| {not in Vi} Pattern to be used to find a macro definition. It is a search @@ -1632,7 +2119,7 @@ A jump table for the options with a short description can be found at |Q_op|. ^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\) < When using the ":set" command, you need to double the backslashes! - *'delcombine'* *'deco'* + *'delcombine'* *'deco'* *'nodelcombine'* *'nodeco'* 'delcombine' 'deco' boolean (default off) global {not in Vi} @@ -1642,10 +2129,11 @@ A jump table for the options with a short description can be found at |Q_op|. "x" delete each combining character on its own. When it is off (the default) the character along with its combining characters are deleted. + Note: When 'delcombine' is set "xx" may work different from "2x"! - This is useful for Hebrew or other languages where one may have - combining characters overtop of base characters, and want to remove - only the combining ones. + This is useful for Arabic, Hebrew and many other languages where one + may have combining characters overtop of base characters, and want + to remove only the combining ones. *'dictionary'* *'dict'* 'dictionary' 'dict' string (default "") @@ -1656,9 +2144,12 @@ A jump table for the options with a short description can be found at |Q_op|. contain a list of words. This can be one word per line, or several words per line, separated by non-keyword characters (white space is preferred). Maximum line length is 510 bytes. + When this option is empty, or an entry "spell" is present, spell + checking is enabled the currently active spelling is used. |spell| To include a comma in a file name precede it with a backslash. Spaces after a comma are ignored, otherwise spaces are included in the file name. See |option-backslash| about using backslashes. + This has nothing to do with the |Dictionary| variable type. Where to find a list of words? - On FreeBSD, there is the file "/usr/share/dict/words". - In the Simtel archive, look in the "msdos/linguist" directory. @@ -1685,6 +2176,8 @@ A jump table for the options with a short description can be found at |Q_op|. feature} Expression which is evaluated to obtain an ed-style diff file from two versions of a file. See |diff-diffexpr|. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'dip'* *'diffopt'* 'diffopt' 'dip' string (default "filler") @@ -1717,11 +2210,20 @@ A jump table for the options with a short description can be found at |Q_op|. exactly. It should ignore adding trailing white space, but not leading white space. + horizontal Start diff mode with horizontal splits (unless + explicitly specified otherwise). + + vertical Start diff mode with vertical splits (unless + explicitly specified otherwise). + + foldcolumn:{n} Set the 'foldcolumn' option to {n} when + starting diff mode. Without this 2 is used. + Examples: > :set diffopt=filler,context:4 :set diffopt= - :set diffopt=filler + :set diffopt=filler,foldcolumn:3 < *'digraph'* *'dg'* *'nodigraph'* *'nodg'* 'digraph' 'dg' boolean (default off) @@ -1745,14 +2247,15 @@ A jump table for the options with a short description can be found at |Q_op|. impossible!). - A directory "." means to put the swap file in the same directory as the edited file. On Unix, a dot is prepended to the file name, so - it doesn't show in a directory listing. - - A directory starting with "./" (or ".\" for MS-DOS et.al.) means to + it doesn't show in a directory listing. On MS-Windows the "hidden" + attribute is set and a dot prepended if possible. + - A directory starting with "./" (or ".\" for MS-DOS et al.) means to put the swap file relative to where the edited file is. The leading "." is replaced with the path name of the edited file. - - For Unix and Win32, if a directory ends in two path separators, the - swap file name will be built from the complete path to the file - with all path separators substituted to percent '%' signs. This will - ensure file name uniqueness in the preserve directory. + - For Unix and Win32, if a directory ends in two path separators "//" + or "\\", the swap file name will be built from the complete path to + the file with all path separators substituted to percent '%' signs. + This will ensure file name uniqueness in the preserve directory. - Spaces after the comma are ignored, other spaces are considered part of the directory name. To have a space at the start of a directory name, precede it with a backslash. @@ -1774,7 +2277,8 @@ A jump table for the options with a short description can be found at |Q_op|. The use of |:set+=| and |:set-=| is preferred when adding or removing directories from the list. This avoids problems when a future version uses another default. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. {Vi: directory to put temp file in, defaults to "/tmp"} *'display'* *'dy'* @@ -1808,7 +2312,7 @@ A jump table for the options with a short description can be found at |Q_op|. also 'gdefault' option. Switching this option on is discouraged! - *'encoding'* *'enc'* + *'encoding'* *'enc'* *E543* 'encoding' 'enc' string (default: "latin1" or value from $LANG) global {only available when compiled with the |+multi_byte| @@ -1820,10 +2324,18 @@ A jump table for the options with a short description can be found at |Q_op|. with. See |encoding-names| for the possible values. NOTE: Changing this option will not change the encoding of the - existing text in Vim. It may cause multi-byte text to become invalid. + existing text in Vim. It may cause non-ASCII text to become invalid. It should normally be kept at its default value, or set when Vim starts up. See |multibyte|. + NOTE: For GTK+ 2 it is highly recommended to set 'encoding' to + "utf-8". Although care has been taken to allow different values of + 'encoding', "utf-8" is the natural choice for the environment and + avoids unnecessary conversion overhead. "utf-8" has not been made + the default to prevent different behavior of the GUI and terminal + versions, and to avoid changing the encoding of newly created files + without your knowledge (in case 'fileencodings' is empty). + The character encoding of files can be different from 'encoding'. This is specified with 'fileencoding'. The conversion is done with iconv() or as specified with 'charconvert'. @@ -1845,7 +2357,7 @@ A jump table for the options with a short description can be found at |Q_op|. Note: "latin1" is also used when the encoding could not be detected. This only works when editing files in the same encoding! When the - actual characterset is not latin1, make sure 'fileencoding' and + actual character set is not latin1, make sure 'fileencoding' and 'fileencodings' are empty. When conversion is needed, switch to using utf-8. @@ -1855,8 +2367,8 @@ A jump table for the options with a short description can be found at |Q_op|. setting 'encoding' to one of these values instead of utf-8 only has effect for encoding used for files when 'fileencoding' is empty. - When 'encoding' is set to a Unicode encoding, and 'fileencodings' was - not set yet, the default for 'fileencodings' is changed. + When 'encoding' is set to a Unicode encoding, and 'fileencodings' was + not set yet, the default for 'fileencodings' is changed. *'endofline'* *'eol'* *'noendofline'* *'noeol'* 'endofline' 'eol' boolean (default on) @@ -1878,13 +2390,16 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When on, all the windows are automatically made the same size after - splitting or closing a window. When off, splitting a window will - reduce the size of the current window and leave the other windows the - same. When closing a window the extra lines are given to the window - next to it (depending on 'splitbelow' and 'splitright'). + splitting or closing a window. This also happens the moment the + option is switched on. When off, splitting a window will reduce the + size of the current window and leave the other windows the same. When + closing a window the extra lines are given to the window next to it + (depending on 'splitbelow' and 'splitright'). When mixing vertically and horizontally split windows, a minimal size is computed and some windows may be larger if there is room. The 'eadirection' option tells in which direction the size is affected. + Changing the height of a window can be avoided by setting + 'winfixheight'. *'equalprg'* *'ep'* 'equalprg' 'ep' string (default "") @@ -1895,7 +2410,8 @@ A jump table for the options with a short description can be found at |Q_op|. 'indentexpr'). Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'errorbells'* *'eb'* *'noerrorbells'* *'noeb'* 'errorbells' 'eb' boolean (default off) @@ -1919,7 +2435,8 @@ A jump table for the options with a short description can be found at |Q_op|. NOT used for the ":make" command. See 'makeef' for that. Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'errorformat'* *'efm'* 'errorformat' 'efm' string (default is very long) @@ -1952,8 +2469,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+autocmd| feature} A list of autocommand event names, which are to be ignored. - When set to "all", all autocommand events are ignored, autocommands - will not be executed. + When set to "all" or when "all" is one of the items, all autocommand + events are ignored, autocommands will not be executed. Otherwise this is a comma separated list of event names. Example: > :set ei=WinEnter,WinLeave < @@ -1976,7 +2493,8 @@ A jump table for the options with a short description can be found at |Q_op|. setting the 'secure' option (see |initialization|). Using a local .exrc, .vimrc or .gvimrc is a potential security leak, use with care! also see |.vimrc| and |gui-init|. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'fileencoding'* *'fenc'* *E213* 'fileencoding' 'fenc' string (default: "") @@ -1994,11 +2512,12 @@ A jump table for the options with a short description can be found at |Q_op|. that the reverse conversion results in the same text. When 'encoding' is not "utf-8" some characters may be lost! See 'encoding' for the possible values. Additionally, values may be - specified that can be handled by the converter (either iconv() or - specified with 'charconvert'). + specified that can be handled by the converter, see + |mbyte-conversion|. When reading a file 'fileencoding' will be set from 'fileencodings'. To read a file in a certain encoding it won't work by setting 'fileencoding', use the |++enc| argument. + For a new file the global value of 'fileencoding' is used. Prepending "8bit-" and "2byte-" has no meaning here, they are ignored. When the option is set, the value is converted to lowercase. Thus you can set it with uppercase values too. '_' characters are @@ -2007,6 +2526,8 @@ A jump table for the options with a short description can be found at |Q_op|. "ISO8859-2" becomes "iso-8859-2". When this option is set, after starting to edit a file, the 'modified' option is set, because the file would be different when written. + If you do this in a modeline, you might want to set 'nomodified' to + avoid this. This option can not be changed when 'modifiable' is off. *'fe'* @@ -2015,34 +2536,64 @@ A jump table for the options with a short description can be found at |Q_op|. old short name was 'fe', which is no longer used. *'fileencodings'* *'fencs'* -'fileencodings' 'fencs' string (default: "ucs-bom", "ucs-bom,utf-8,latin1" - when 'encoding' is set to a Unicode value) +'fileencodings' 'fencs' string (default: "ucs-bom", + "ucs-bom,utf-8,default,latin1" when + 'encoding' is set to a Unicode value) global {only available when compiled with the |+multi_byte| feature} {not in Vi} - This is a list of character encodings considered when editing a file. - When a file is read, Vim tries to use the first mentioned character - encoding. If an error is detected, the next one in the list is tried. - When an encoding is found that works, 'fileencoding' is set to it. - If all fail, 'fileencoding' is set to an empty string, which means - the value of 'encoding' is used. + This is a list of character encodings considered when starting to edit + an existing file. When a file is read, Vim tries to use the first + mentioned character encoding. If an error is detected, the next one + in the list is tried. When an encoding is found that works, + 'fileencoding' is set to it. If all fail, 'fileencoding' is set to + an empty string, which means the value of 'encoding' is used. WARNING: Conversion can cause loss of information! When 'encoding' is "utf-8" (or one of the other Unicode variants) conversion is most likely done in a way that the reverse conversion results in the same text. When 'encoding' is not - "utf-8" special characters may be lost! + "utf-8" some non-ASCII characters may be lost! You can use + the |++bad| argument to specify what is done with characters + that can't be converted. + For an empty file or a file with only ASCII characters most encodings + will work and the first entry of 'fileencodings' will be used (except + "ucs-bom", which requires the BOM to be present). If you prefer + another encoding use an BufReadPost autocommand event to test if your + preferred encoding is to be used. Example: > + au BufReadPost * if search('\S', 'w') == 0 | + \ set fenc=iso-2022-jp | endif +< This sets 'fileencoding' to "iso-2022-jp" if the file does not contain + non-blank characters. + When the |++enc| argument is used then the value of 'fileencodings' is + not used. + Note that 'fileencodings' is not used for a new file, the global value + of 'fileencoding' is used instead. You can set it with: > + :setglobal fenc=iso-8859-2 +< This means that a non-existing file may get a different encoding than + an empty file. The special value "ucs-bom" can be used to check for a Unicode BOM (Byte Order Mark) at the start of the file. It must not be preceded by "utf-8" or another Unicode encoding for this to work properly. + An entry for an 8-bit encoding (e.g., "latin1") should be the last, + because Vim cannot detect an error, thus the encoding is always + accepted. + The special value "default" can be used for the encoding from the + environment. This is the default value for 'encoding'. It is useful + when 'encoding' is set to "utf-8" and your environment uses a + non-latin1 encoding, such as Russian. + When 'encoding' is "utf-8" and a file contains an illegal byte + sequence it won't be recognized as UTF-8. You can use the |8g8| + command to find the illegal byte sequence. + WRONG VALUES: WHAT'S WRONG: + latin1,utf-8 "latin1" will always be used + utf-8,ucs-bom,latin1 BOM won't be recognized in an utf-8 + file + cp1250,latin1 "cp1250" will always be used If 'fileencodings' is empty, 'fileencoding' is not modified. - See 'encoding' for the possible values. Additionally, values may be - specified that can be handled by the converter (either iconv() or - specified with 'charconvert'). - Old versions of GNU iconv() may cause the conversion to fail (they - request a very large buffer, more than Vim is willing to provide). - Try getting another iconv() implementation. - Unlike 'filecharcode' there is no conversion when the option is set. + See 'fileencoding' for the possible values. + Setting this option does not have an effect until the next time a file + is read. *'fileformat'* *'ff'* 'fileformat' 'ff' string (MS-DOS, MS-Windows, OS/2 default: "dos", @@ -2077,9 +2628,9 @@ A jump table for the options with a short description can be found at |Q_op|. Vi others: "") global {not in Vi} - This gives the end-of-line (<EOL>) formats that will be tried. It is - used when starting to edit a new buffer and when reading a file into - an existing buffer: + This gives the end-of-line (<EOL>) formats that will be tried when + starting to edit a new buffer and when reading a file into an existing + buffer: - When empty, the format defined with 'fileformat' will be used always. It is not set automatically. - When set to one name, that format will be used whenever a new buffer @@ -2139,13 +2690,20 @@ A jump table for the options with a short description can be found at |Q_op|. this use the ":filetype on" command. |:filetype| Setting this option to a different value is most useful in a modeline, for a file for which the file type is not automatically recognized. - Example, for in an IDL file: > - /* vim: set filetype=idl : */ -< |FileType| |filetypes| + Example, for in an IDL file: + /* vim: set filetype=idl : */ ~ + |FileType| |filetypes| + When a dot appears in the value then this separates two filetype + names. Example: + /* vim: set filetype=c.doxygen : */ ~ + This will use the "c" filetype first, then the "doxygen" filetype. + This works both for filetype plugins and for syntax files. More than + one dot may appear. Do not confuse this option with 'osfiletype', which is for the file type that is actually stored with the file. This option is not copied to another buffer, independent of the 's' or 'S' flag in 'cpoptions'. + Only normal file name characters can be used, "/\*?[|<>" are illegal. *'fillchars'* *'fcs'* 'fillchars' 'fcs' string (default "vert:|,fold:-") @@ -2172,6 +2730,8 @@ A jump table for the options with a short description can be found at |Q_op|. < This is similar to the default, except that these characters will also be used when there is highlighting. + for "stl" and "stlnc" only single-byte values are supported. + The highlighting used for these items: item highlight group ~ stl:c StatusLine |hl-StatusLine| @@ -2197,7 +2757,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+folding| feature} When set to "all", a fold is closed when the cursor isn't in it and - its level is higher than 'foldlevel'. Useful if you wants folds to + its level is higher than 'foldlevel'. Useful if you want folds to automatically close when moving out of them. *'foldcolumn'* *'fdc'* @@ -2212,7 +2772,7 @@ A jump table for the options with a short description can be found at |Q_op|. See |folding|. *'foldenable'* *'fen'* *'nofoldenable'* *'nofen'* -'foldenable' 'fen' boolean (default off) +'foldenable' 'fen' boolean (default on) local to window {not in Vi} {not available when compiled without the |+folding| @@ -2232,8 +2792,13 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+folding| or |+eval| feature} The expression used for when 'foldmethod' is "expr". It is evaluated - for each line to obtain its fold level. See |fold-expr|. Also see - |eval-sandbox|. + for each line to obtain its fold level. See |fold-expr|. + + The expression may be evaluated in the |sandbox|, see + |sandbox-option|. + + It is not allowed to change text or jump to another window while + evaluating 'foldexpr' |textlock|. *'foldignore'* *'fdi'* 'foldignore' 'fdi' string (default: "#") @@ -2274,7 +2839,7 @@ A jump table for the options with a short description can be found at |Q_op|. overrule the 'foldlevel' value for specific files. When the value is negative, it is not used. - *'foldmarker'* *'fmr'* + *'foldmarker'* *'fmr'* *E536* 'foldmarker' 'fmr' string (default: "{{{,}}}") local to window {not in Vi} @@ -2341,6 +2906,8 @@ A jump table for the options with a short description can be found at |Q_op|. percent "%" quickfix ":cn", ":crew", ":make", etc. search search for a pattern: "/", "n", "*", "gd", etc. + (not for a search pattern in a ":" command) + Also for |[s| and |]s|. tag jumping to a tag: ":ta", CTRL-T, etc. undo undo or redo: "u" and CTRL-R When the command is part of a mapping this option is not used. Add @@ -2364,6 +2931,12 @@ A jump table for the options with a short description can be found at |Q_op|. An expression which is used to specify the text displayed for a closed fold. See |fold-foldtext|. + The expression may be evaluated in the |sandbox|, see + |sandbox-option|. + + It is not allowed to change text or jump to another window while + evaluating 'foldtext' |textlock|. + *'formatoptions'* *'fo'* 'formatoptions' 'fo' string (Vim default: "tcq", Vi default: "vt") local to buffer @@ -2377,18 +2950,78 @@ A jump table for the options with a short description can be found at |Q_op|. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. + *'formatlistpat'* *'flp'* +'formatlistpat' 'flp' string (default: "^\s*\d\+[\]:.)}\t ]\s*") + local to buffer + {not in Vi} + A pattern that is used to recognize a list header. This is used for + the "n" flag in 'formatoptions'. + The pattern must match exactly the text that will be the indent for + the line below it. You can use |/\ze| to mark the end of the match + while still checking more characters. There must be a character + following the pattern, when it matches the whole line it is handled + like there is no match. + The default recognizes a number, followed by an optional punctuation + character and white space. + *'formatprg'* *'fp'* 'formatprg' 'fp' string (default "") global {not in Vi} The name of an external program that will be used to format the lines - selected with the "gq" command. The program must take the input on + selected with the |gq| operator. The program must take the input on stdin and produce the output on stdout. The Unix program "fmt" is - such a program. If this option is an empty string, the internal - format function will be used |C-indenting|. Environment variables are - expanded |:set_env|. See |option-backslash| about including spaces - and backslashes. - This option cannot be set from a |modeline|, for security reasons. + such a program. + If the 'formatexpr' option is not empty it will be used instead. + Otherwise, if 'formatprg' option is an empty string, the internal + format function will be used |C-indenting|. + Environment variables are expanded |:set_env|. See |option-backslash| + about including spaces and backslashes. + The expression may be evaluated in the |sandbox|, see + |sandbox-option|. + + *'formatexpr'* *'fex'* +'formatexpr' 'fex' string (default "") + local to buffer + {not in Vi} + {not available when compiled without the |+eval| + feature} + Expression which is evaluated to format a range of lines for the |gq| + operator. When this option is empty 'formatprg' is used. + + The |v:lnum| variable holds the first line to be formatted. + The |v:count| variable holds the number of lines to be formatted. + The |v:char| variable holds the character that is going to be + inserted. This can be empty. Don't insert it yet! + + Example: > + :set formatexpr=mylang#Format() +< This will invoke the mylang#Format() function in the + autoload/mylang.vim file in 'runtimepath'. |autoload| + + The expression is also evaluated when 'textwidth' is set and adding + text beyond that limit. This happens under the same conditions as + when internal formatting is used. Make sure the cursor is kept in the + same spot relative to the text then! The |mode()| function will + return "i" or "R" in this situation. When the function returns + non-zero Vim will fall back to using the internal format mechanism. + + The expression may be evaluated in the |sandbox|, see + |sandbox-option|. + + *'fsync'* *'fs'* +'fsync' 'fs' boolean (default on) + global + {not in Vi} + When on, the library function fsync() will be called after writing a + file. This will flush a file to disk, ensuring that it is safely + written even on filesystems which do metadata-only journaling. This + will force the harddrive to spin up on Linux systems running in laptop + mode, so it may be undesirable in some situations. Be warned that + turning this off increases the chances of data loss after a crash. On + systems without an fsync() implementation, this variable is always + off. + Also see 'swapsync' for controlling fsync() on swap files. *'gdefault'* *'gd'* *'nogdefault'* *'nogd'* 'gdefault' 'gd' boolean (default off) @@ -2421,7 +3054,7 @@ A jump table for the options with a short description can be found at |Q_op|. VMS: "SEARCH/NUMBERS ") global or local to buffer |global-local| {not in Vi} - Program to use for the ":grep" command. This option may contain '%' + Program to use for the |:grep| command. This option may contain '%' and '#' characters, which are expanded like when used in a command- line. The placeholder "$*" is allowed to specify where the arguments will be included. Environment variables are expanded |:set_env|. See @@ -2429,27 +3062,40 @@ A jump table for the options with a short description can be found at |Q_op|. When your "grep" accepts the "-H" argument, use this to make ":grep" also work well with a single file: > :set grepprg=grep\ -nH -< See also the section |:make_makeprg|, since most of the comments there +< Special value: When 'grepprg' is set to "internal" the |:grep| command + works like |:vimgrep|, |:lgrep| like |:lvimgrep|, |:grepadd| like + |:vimgrepadd| and |:lgrepadd| like |:lvimgrepadd|. + See also the section |:make_makeprg|, since most of the comments there apply equally to 'grepprg'. For Win32, the default is "findstr /n" if "findstr.exe" can be found, otherwise it's "grep -n". - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. - *'guicursor'* *'gcr'* + *'guicursor'* *'gcr'* *E545* *E546* *E548* *E549* 'guicursor' 'gcr' string (default "n-v-c:block-Cursor/lCursor, ve:ver35-Cursor, o:hor50-Cursor, i-ci:ver25-Cursor/lCursor, r-cr:hor20-Cursor/lCursor, sm:block-Cursor - -blinkwait175-blinkoff150-blinkon175") + -blinkwait175-blinkoff150-blinkon175", + for MS-DOS and Win32 console: + "n-v-c:block,o:hor50,i-ci:hor15, + r-cr:hor30,sm:block") global {not in Vi} {only available when compiled with GUI enabled, and - for MSDOS and Win32 console} + for MS-DOS and Win32 console} This option tells Vim what the cursor should look like in different - modes. The option is a comma separated list of parts. Each part - consist of a mode-list and an argument-list: + modes. It fully works in the GUI. In an MSDOS or Win32 console, only + the height of the cursor can be changed. This can be done by + specifying a block cursor, or a percentage for a vertical or + horizontal cursor. + For a console the 't_SI' and 't_EI' escape sequences are used. + + The option is a comma separated list of parts. Each part consist of a + mode-list and an argument-list: mode-list:argument-list,mode-list:argument-list,.. The mode-list is a dash separated list of these modes: n Normal mode @@ -2512,11 +3158,8 @@ A jump table for the options with a short description can be found at |Q_op|. :highlight Cursor gui=reverse guifg=NONE guibg=NONE :highlight Cursor gui=NONE guifg=bg guibg=fg < - In an MSDOS or Win32 console, only the height of the cursor can be - changed. This can be done by specifying a block cursor, or a - percentage for a vertical or horizontal cursor. - - *'guifont'* *'gfn'* *E235* + *'guifont'* *'gfn'* + *E235* *E596* *E610* *E611* 'guifont' 'gfn' string (default "") global {not in Vi} @@ -2526,56 +3169,77 @@ A jump table for the options with a short description can be found at |Q_op|. the font cannot be found you will get an error message. To try other font names a list can be specified, font names separated with commas. The first valid font is used. - When 'guifontset' is not empty, 'guifont' is not used. + + On systems where 'guifontset' is supported (X11) and 'guifontset' is + not empty, then 'guifont' is not used. + Spaces after a comma are ignored. To include a comma in a font name precede it with a backslash. Setting an option requires an extra backslash before a space and a backslash. See also |option-backslash|. For example: > :set guifont=Screen15,\ 7x13,font\\,with\\,commas -< will make vim try to use the font "Screen15" first, and if it fails it +< will make Vim try to use the font "Screen15" first, and if it fails it will try to use "7x13" and then "font,with,commas" instead. - *E236* - Note that the fonts must be mono-spaced (all characters have the same - width). - To preview a font on X11, you might be able to use the "xfontsel" - program. The "xlsfonts" program gives a list of all available fonts. - For Win32, GTK and Photon only: > - :set guifont=* -< will bring up a font requester, where you can pick the font you want. - If none of the fonts can be loaded, vim will keep the current setting. - If an empty font list is given, vim will try using other resource + + If none of the fonts can be loaded, Vim will keep the current setting. + If an empty font list is given, Vim will try using other resource settings (for X, it will use the Vim.font resource), and finally it will try some builtin default which should always be there ("7x13" in the case of X). The font names given should be "normal" fonts. Vim will try to find the related bold and italic fonts. + + For Win32, GTK, Mac OS and Photon: > + :set guifont=* +< will bring up a font requester, where you can pick the font you want. + + The font name depends on the GUI used. See |setting-guifont| for a + way to set 'guifont' for various systems. + + For the GTK+ 2 GUI the font name looks like this: > + :set guifont=Andale\ Mono\ 11 +< That's all. XLFDs are no longer accepted. + + For Mac OSX you can use something like this: > + :set guifont=Monaco:h10 +< Also see 'macatsui', it can help fix display problems. + *E236* + Note that the fonts must be mono-spaced (all characters have the same + width). An exception is GTK 2: all fonts are accepted, but + mono-spaced fonts look best. + + To preview a font on X11, you might be able to use the "xfontsel" + program. The "xlsfonts" program gives a list of all available fonts. + For the Win32 GUI *E244* *E245* - takes these options in the font name: - hXX - height is XX (points) - wXX - width is XX (points) + hXX - height is XX (points, can be floating-point) + wXX - width is XX (points, can be floating-point) b - bold i - italic u - underline s - strikeout - cXX - character set XX. valid charsets are: ANSI, ARABIC, + cXX - character set XX. Valid charsets are: ANSI, ARABIC, BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK, HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS, SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC. + Normally you would use "cDEFAULT". Use a ':' to separate the options. - A '_' can be used in the place of a space, so you don't need to use backslashes to escape the spaces. - - Example: > + - Examples: > :set guifont=courier_new:h12:w5:b:cRUSSIAN -< Have a look at <http://nova.bsuvc.bsu.edu/prn/monofont/> for - mono-spaced fonts and comments on them. - See also |font-sizes|. + :set guifont=Andale_Mono:h7.5:w4.5 +< See also |font-sizes|. - *'guifontset'* *'gfs'* *E250* *E252* *E234* + *'guifontset'* *'gfs'* + *E250* *E252* *E234* *E597* *E598* 'guifontset' 'gfs' string (default "") global {not in Vi} {only available when compiled with GUI enabled and with the |+xfontset| feature} + {not available in the GTK+ 2 GUI} When not empty, specifies two (or more) fonts to be used. The first one for normal English, the second one for your special language. See |xfontset|. @@ -2593,7 +3257,7 @@ A jump table for the options with a short description can be found at |Q_op|. This example works on many X11 systems: > :set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-* < - *'guifontwide'* *'gfw'* *E231* + *'guifontwide'* *'gfw'* *E231* *E533* *E534* 'guifontwide' 'gfw' string (default "") global {not in Vi} @@ -2603,12 +3267,25 @@ A jump table for the options with a short description can be found at |Q_op|. used. Note: The size of these fonts must be exactly twice as wide as the one specified with 'guifont' and the same height. - Only used when 'encoding' is set to "utf-8" and 'guifontset' is empty - or invalid. + + All GUI versions but GTK+ 2: + + 'guifontwide' is only used when 'encoding' is set to "utf-8" and + 'guifontset' is empty or invalid. When 'guifont' is set and a valid font is found in it and 'guifontwide' is empty Vim will attempt to find a matching double-width font and set 'guifontwide' to it. + GTK+ 2 GUI only: *guifontwide_gtk2* + + If set and valid, 'guifontwide' is always used for double width + characters, even if 'encoding' is not set to "utf-8". + Vim does not attempt to find an appropriate value for 'guifontwide' + automatically. If 'guifontwide' is empty Pango/Xft will choose the + font for characters not available in 'guifont'. Thus you do not need + to set 'guifontwide' at all unless you want to override the choice + made by Pango/Xft. + *'guiheadroom'* *'ghr'* 'guiheadroom' 'ghr' number (default 50) global @@ -2623,11 +3300,11 @@ A jump table for the options with a short description can be found at |Q_op|. *'guioptions'* *'go'* 'guioptions' 'go' string (default "gmrLtT" (MS-Windows), - "agimrLtT" (GTK, Motif and Athena) + "agimrLtT" (GTK, Motif and Athena)) global {not in Vi} {only available when compiled with GUI enabled} - This option only has an effect in the GUI version of vim. It is a + This option only has an effect in the GUI version of Vim. It is a sequence of letters which describes what components and options of the GUI should be used. To avoid problems with flags that are added in the future, use the @@ -2661,13 +3338,20 @@ A jump table for the options with a short description can be found at |Q_op|. 'c' Use console dialogs instead of popup dialogs for simple choices. + + 'e' Add tab pages when indicated with 'showtabline'. + 'guitablabel' can be used to change the text in the labels. + When 'e' is missing a non-GUI tab pages line may be used. + The GUI tabs are only supported on some systems, currently + GTK, Motif and MS-Windows. + 'f' Foreground: Don't use fork() to detach the GUI from the shell where it was started. Use this for programs that wait for the editor to finish (e.g., an e-mail program). Alternatively you can use "gvim -f" or ":gui -f" to start the GUI in the foreground. |gui-fork| Note: Set this option in the vimrc file. The forking may have - happened already when the gvimrc file is read. + happened already when the |gvimrc| file is read. 'i' Use a Vim icon. For GTK with KDE it is used in the left-upper corner of the window. It's black&white on non-GTK, because of @@ -2676,7 +3360,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'm' Menu bar is present. 'M' The system menu "$VIMRUNTIME/menu.vim" is not sourced. Note that this flag must be added in the .vimrc file, before - switching on syntax or filetype recognition (when the .gvimrc + switching on syntax or filetype recognition (when the |gvimrc| file is sourced the system menu has already been loaded; the ":syntax on" and ":filetype on" commands load the menu too). 'g' Grey menu items: Make menu items that are not active grey. If @@ -2685,8 +3369,8 @@ A jump table for the options with a short description can be found at |Q_op|. 't' Include tearoff menu items. Currently only works for Win32, GTK+, and Motif 1.2 GUI. - 'T' Include Toolbar. Currently only in Win32, GTK+, Motif, and - Athena GUIs. + 'T' Include Toolbar. Currently only in Win32, GTK+, Motif, Photon + and Athena GUIs. 'r' Right-hand scrollbar is always present. 'R' Right-hand scrollbar is present when there is a vertically @@ -2694,7 +3378,11 @@ A jump table for the options with a short description can be found at |Q_op|. 'l' Left-hand scrollbar is always present. 'L' Left-hand scrollbar is present when there is a vertically split window. - 'b' Bottom (horizontal) scrollbar is present. + 'b' Bottom (horizontal) scrollbar is present. Its size depends on + the longest visible line, or on the cursor line if the 'h' + flag is included. |gui-horiz-scroll| + 'h' Limit horizontal scrollbar size to the length of the cursor + line. Reduces computations. |gui-horiz-scroll| And yes, you may even have scrollbars on the left AND the right if you really want to :-). See |gui-scrollbars| for more information. @@ -2705,7 +3393,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'p' Use Pointer callbacks for X11 GUI. This is required for some window managers. If the cursor is not blinking or hollow at the right moment, try adding this flag. This must be done - before starting the GUI. Set it in your gvimrc. Adding or + before starting the GUI. Set it in your |gvimrc|. Adding or removing it after the GUI has started has no effect. 'F' Add a footer. Only for Motif. See |gui-footer|. @@ -2717,17 +3405,48 @@ A jump table for the options with a short description can be found at |Q_op|. Only in the GUI: If on, an attempt is made to open a pseudo-tty for I/O to/from shell commands. See |gui-pty|. - *'helpfile'* *'hf'* + *'guitablabel'* *'gtl'* +'guitablabel' 'gtl' string (default empty) + global + {not in Vi} + {only available when compiled with GUI enabled and + with the +windows feature} + When nonempty describes the text to use in a label of the GUI tab + pages line. When empty and when the result is empty Vim will use a + default label. See |setting-guitablabel| for more info. + + The format of this option is like that of 'statusline'. + 'guitabtooltip' is used for the tooltip, see below. + + Only used when the GUI tab pages line is displayed. 'e' must be + present in 'guioptions'. For the non-GUI tab pages line 'tabline' is + used. + + *'guitabtooltip'* *'gtt'* +'guitabtooltip' 'gtt' string (default empty) + global + {not in Vi} + {only available when compiled with GUI enabled and + with the +windows feature} + When nonempty describes the text to use in a tooltip for the GUI tab + pages line. When empty Vim will use a default tooltip. + This option is otherwise just like 'guitablabel' above. + + + *'helpfile'* *'hf'* 'helpfile' 'hf' string (default (MSDOS) "$VIMRUNTIME\doc\help.txt" (others) "$VIMRUNTIME/doc/help.txt") global {not in Vi} - Name of the help file. All help files should be placed together in - one directory. Environment variables are expanded |:set_env|. For - example: "$VIMRUNTIME/doc/help.txt". If $VIMRUNTIME is not set, $VIM - is also tried. Also see |$VIMRUNTIME| and |option-backslash| - about including spaces and backslashes. - This option cannot be set from a |modeline|, for security reasons. + Name of the main help file. All distributed help files should be + placed together in one directory. Additionally, all "doc" directories + in 'runtimepath' will be used. + Environment variables are expanded |:set_env|. For example: + "$VIMRUNTIME/doc/help.txt". If $VIMRUNTIME is not set, $VIM is also + tried. Also see |$VIMRUNTIME| and |option-backslash| about including + spaces and backslashes. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'helpheight'* *'hh'* 'helpheight' 'hh' number (default 20) @@ -2741,6 +3460,25 @@ A jump table for the options with a short description can be found at |Q_op|. windows. When the height is less than 'helpheight', the height is set to 'helpheight'. Set to zero to disable. + *'helplang'* *'hlg'* +'helplang' 'hlg' string (default: messages language or empty) + global + {only available when compiled with the |+multi_lang| + feature} + {not in Vi} + Comma separated list of languages. Vim will use the first language + for which the desired help can be found. The English help will always + be used as a last resort. You can add "en" to prefer English over + another language, but that will only find tags that exist in that + language and not in the English help. + Example: > + :set helplang=de,it +< This will first search German, then Italian and finally English help + files. + When using |CTRL-]| and ":help!" in a non-English help file Vim will + try to find the tag in the current language before using this option. + See |help-translated|. + *'hidden'* *'hid'* *'nohidden'* *'nohid'* 'hidden' 'hid' boolean (default off) global @@ -2752,6 +3490,7 @@ A jump table for the options with a short description can be found at |Q_op|. hidden although the 'hidden' option is off: When the buffer is modified, 'autowrite' is off or writing is not possible, and the '!' flag was used. See also |windows.txt|. + To only make one buffer hidden use the 'bufhidden' option. This option is set for one command with ":hide {command}" |:hide|. WARNING: It's easy to forget that you have changes in hidden buffers. Think twice when using ":q!" or ":qa!". @@ -2761,9 +3500,14 @@ A jump table for the options with a short description can be found at |Q_op|. "8:SpecialKey,@:NonText,d:Directory, e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg, M:ModeMsg,n:LineNr,r:Question, - s:StatusLine,S:StatusLineNC,c:VertSplit + s:StatusLine,S:StatusLineNC,c:VertSplit, t:Title,v:Visual,w:WarningMsg,W:WildMenu, - f:Folded,F:FoldColumn") + f:Folded,F:FoldColumn,A:DiffAdd, + C:DiffChange,D:DiffDelete,T:DiffText, + >:SignColumn,B:SpellBad,P:SpellCap, + R:SpellRare,L:SpellLocal, + +:Pmenu,=:PmenuSel, + x:PmenuSbar,X:PmenuThumb") global {not in Vi} This option can be used to set highlighting mode for various @@ -2795,6 +3539,19 @@ A jump table for the options with a short description can be found at |Q_op|. |hl-WildMenu| W wildcard matches displayed for 'wildmenu' |hl-Folded| f line used for closed folds |hl-FoldColumn| F 'foldcolumn' + |hl-DiffAdd| A added line in diff mode + |hl-DiffChange| C changed line in diff mode + |hl-DiffDelete| D deleted line in diff mode + |hl-DiffText| T inserted text in diff mode + |hl-SignColumn| > column used for |signs| + |hl-SpellBad| B misspelled word |spell| + |hl-SpellCap| P word that should start with capital|spell| + |hl-SpellRare| R rare word |spell| + |hl-SpellLocal| L word from other region |spell| + |hl-Pmenu| + popup menu normal line + |hl-PmenuSel| = popup menu normal line + |hl-PmenuSbar| x popup menu scrollbar + |hl-PmenuThumb| X popup menu scrollbar thumb The display modes are: r reverse (termcap entry "mr" and "me") @@ -2802,6 +3559,7 @@ A jump table for the options with a short description can be found at |Q_op|. b bold (termcap entry "md" and "me") s standout (termcap entry "so" and "se") u underline (termcap entry "us" and "ue") + c undercurl (termcap entry "Cs" and "Ce") n no highlighting - no highlighting : use a highlight group @@ -2833,7 +3591,7 @@ A jump table for the options with a short description can be found at |Q_op|. highlight all of the matched text. However, this depends on where the search starts. This will be the first line in the window or the first line below a closed fold. A match in a previous line which is not - drawn may not continue in an newly drawn line. + drawn may not continue in a newly drawn line. NOTE: This option is reset when 'compatible' is set. *'history'* *'hi'* @@ -2883,7 +3641,7 @@ A jump table for the options with a short description can be found at |Q_op|. Unix xterm and iris-ansi by default, where 't_IS' is taken from the builtin termcap). When Vim was compiled with HAVE_X11 defined, the original icon will be - restored if possible |X11|. See |X11-icon| for changing the icon on + restored if possible |X11|. See |X11-icon| for changing the icon on X11. *'iconstring'* @@ -3002,7 +3760,7 @@ A jump table for the options with a short description can be found at |Q_op|. 0 :lmap is off and IM is off 1 :lmap is ON and IM is off 2 :lmap is off and IM is ON - Note that this option changes when using CTRL-^ in Insert mode + Note that this option changes when using CTRL-^ in Command-line mode |c_CTRL-^|. The value is set to 1 when it is not -1 and setting the 'keymap' option to a valid keymap name. @@ -3010,7 +3768,7 @@ A jump table for the options with a short description can be found at |Q_op|. methods. Use 'imdisable' to disable XIM then. *'include'* *'inc'* -'include' 'inc' string (default "^#\s*include") +'include' 'inc' string (default "^\s*#\s*include") global or local to buffer |global-local| {not in Vi} {not available when compiled without the @@ -3018,9 +3776,14 @@ A jump table for the options with a short description can be found at |Q_op|. Pattern to be used to find an include command. It is a search pattern, just like for the "/" command (See |pattern|). The default value is for C programs. This option is used for the commands "[i", - "]I", "[d", etc.. The 'isfname' option is used to recognize the file - name that comes after the matched pattern. See |option-backslash| - about including spaces and backslashes. + "]I", "[d", etc. + Normally the 'isfname' option is used to recognize the file name that + comes after the matched pattern. But if "\zs" appears in the pattern + then the text matched from "\zs" to the end, or until "\ze" if it + appears, is used as the file name. Use this to include characters + that are not in 'isfname', such as a space. You can then use + 'includeexpr' to process the matched text. + See |option-backslash| about including spaces and backslashes. *'includeexpr'* *'inex'* 'includeexpr' 'inex' string (default "") @@ -3032,25 +3795,37 @@ A jump table for the options with a short description can be found at |Q_op|. option to a file name. Mostly useful to change "." to "/" for Java: > :set includeexpr=substitute(v:fname,'\\.','/','g') < The "v:fname" variable will be set to the file name that was detected. - Evaluated in the |sandbox|. + Also used for the |gf| command if an unmodified file name can't be found. Allows doing "gf" on the name after an 'include' statement. Also used for |<cfile>|. + The expression may be evaluated in the |sandbox|, see + |sandbox-option|. + + It is not allowed to change text or jump to another window while + evaluating 'includeexpr' |textlock|. + *'incsearch'* *'is'* *'noincsearch'* *'nois'* 'incsearch' 'is' boolean (default off) global {not in Vi} {not available when compiled without the |+extra_search| feature} - While typing a search pattern, show immediately where the so far - typed pattern matches. The matched string is highlighted. If the - pattern is invalid or not found, nothing is shown. The screen will - be updated often, this is only useful on fast terminals. Note that - the match will be shown, but the cursor is not actually positioned - there. You still need to finish the search command with <CR> to move - the cursor. The highlighting can be set with the 'i' flag in - 'highlight'. See also: 'hlsearch'. + While typing a search command, show where the pattern, as it was typed + so far, matches. The matched string is highlighted. If the pattern + is invalid or not found, nothing is shown. The screen will be updated + often, this is only useful on fast terminals. + Note that the match will be shown, but the cursor will return to its + original position when no match is found and when pressing <Esc>. You + still need to finish the search command with <Enter> to move the + cursor to the match. + The highlighting can be set with the 'i' flag in 'highlight'. + See also: 'hlsearch'. + CTRL-L can be used to add one character from after the current match + to the command line. + CTRL-R CTRL-W can be used to add the word at the end of the current + match, excluding the characters that were already typed. NOTE: This option is reset when 'compatible' is set. *'indentexpr'* *'inde'* @@ -3066,7 +3841,8 @@ A jump table for the options with a short description can be found at |Q_op|. 'smartindent' indenting. When 'paste' is set this option is not used for indenting. The expression is evaluated with |v:lnum| set to the line number for - which the indent is to be computed. + which the indent is to be computed. The cursor is also in this line + when the expression is evaluated (but it may be moved around). The expression must return the number of spaces worth of indent. It can return "-1" to keep the current indent (this means 'autoindent' is used for the indent). @@ -3079,9 +3855,16 @@ A jump table for the options with a short description can be found at |Q_op|. :set indentexpr=GetMyIndent() < Error messages will be suppressed, unless the 'debug' option contains "msg". - See |indent-expression|. Also see |eval-sandbox|. + See |indent-expression|. NOTE: This option is made empty when 'compatible' is set. + The expression may be evaluated in the |sandbox|, see + |sandbox-option|. + + It is not allowed to change text or jump to another window while + evaluating 'indentexpr' |textlock|. + + *'indentkeys'* *'indk'* 'indentkeys' 'indk' string (default "0{,0},:,0#,!^F,o,O,e") local to buffer @@ -3116,9 +3899,9 @@ A jump table for the options with a short description can be found at |Q_op|. - Use CTRL-O to execute one Normal mode command |i_CTRL-O|). When this is a mapping, it is executed as if 'insertmode' was off. Normal mode remains active until the mapping is finished. - *i_CTRL-L* - Use CTRL-L to execute a number of Normal mode commands, then use - <Esc> to get back to Insert mode. + <Esc> to get back to Insert mode. Note that CTRL-L moves the cursor + left, like <Esc> does when 'insertmode' isn't set. |i_CTRL-L| These items change when 'insertmode' is set: - when starting to edit of a file, Vim goes to Insert mode. @@ -3178,7 +3961,7 @@ A jump table for the options with a short description can be found at |Q_op|. "a-z,A-Z,@-@" All letters plus the '@' character. A comma can be included by using it where a character number is expected. Example: - "48-57,,,_" Digits, command and underscore. + "48-57,,,_" Digits, comma and underscore. A comma can be excluded by prepending a '^'. Example: " -~,^,,9" All characters from space to '~', excluding comma, plus <Tab>. @@ -3193,7 +3976,7 @@ A jump table for the options with a short description can be found at |Q_op|. The characters given by this option are included in identifiers. Identifiers are used in recognizing environment variables and after a match of the 'define' option. It is also used for "\i" in a - |pattern|. See 'isfname' for a description of the format of this + |pattern|. See 'isfname' for a description of the format of this option. Careful: If you change this option, it might break expanding environment variables. E.g., when '/' is included and Vim tries to @@ -3224,7 +4007,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} The characters given by this option are displayed directly on the screen. It is also used for "\p" in a |pattern|. The characters from - space (ascii 32) to '~' (ascii 126) are always displayed directly, + space (ASCII 32) to '~' (ASCII 126) are always displayed directly, even when they are not included in 'isprint' or excluded. See 'isfname' for a description of the format of this option. @@ -3272,7 +4055,7 @@ A jump table for the options with a short description can be found at |Q_op|. know. It also means you cannot see it yourself once you have set it, be careful not to make a typing error! - *'keymap'* *'kmp'* + *'keymap'* *'kmp'* *E544* 'keymap' 'kmp' string (default "") local to buffer {not in Vi} @@ -3282,6 +4065,7 @@ A jump table for the options with a short description can be found at |Q_op|. Setting this option to a valid keymap name has the side effect of setting 'iminsert' to one, so that the keymap becomes effective. 'imsearch' is also set to one, unless it was -1 + Only normal file name characters can be used, "/\*?[|<>" are illegal. *'keymodel'* *'km'* 'keymodel' 'km' string (default "") @@ -3298,19 +4082,22 @@ A jump table for the options with a short description can be found at |Q_op|. The 'keymodel' option is set by the |:behave| command. *'keywordprg'* *'kp'* -'keywordprg' 'kp' string (default "man" or "man -s", DOS: "", +'keywordprg' 'kp' string (default "man" or "man -s", DOS: ":help", OS/2: "view /", VMS: "help") - global + global or local to buffer |global-local| {not in Vi} Program to use for the |K| command. Environment variables are - expanded |:set_env|. When empty ":help" is used. + expanded |:set_env|. ":help" may be used to access the Vim internal + help. (Note that previously setting the global option to the empty + value did this, which is now deprecated.) When "man" is used, Vim will automatically translate a count for the "K" command to a section number. Also for "man -s", in which case the "-s" is removed when there is no count. See |option-backslash| about including spaces and backslashes. Example: > :set keywordprg=man\ -s -< This option cannot be set from a |modeline|, for security reasons. +< This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'langmap'* *'lmap'* *E357* *E358* 'langmap' 'lmap' string (default "") @@ -3319,7 +4106,7 @@ A jump table for the options with a short description can be found at |Q_op|. {only available when compiled with the |+langmap| feature} This option allows switching your keyboard into a special language - mode. When you are typing text in Insert mode the characters are + mode. When you are typing text in Insert mode the characters are inserted directly. When in command mode the 'langmap' option takes care of translating these special characters to the original meaning of the key. This means you don't have to change the keyboard mode to @@ -3330,8 +4117,8 @@ A jump table for the options with a short description can be found at |Q_op|. specified with multi-byte characters (e.g., UTF-8), but only the lower 8 bits of each character will be used. - Example (for Greek): *greek* > - :set langmap=�A,�B,�C,�D,�E,�F,�G,�H,�I,�J,�K,�L,�M,�N,�O,�P,QQ,�R,�S,�T,�U,�V,WW,�X,�Y,�Z,�a,�b,�c,�d,�e,�f,�g,�h,�i,�j,�k,�l,�m,�n,�o,�p,qq,�r,�s,�t,�u,�v,�w,�x,�y,�z + Example (for Greek, in UTF-8): *greek* > + :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz < Example (exchanges meaning of z and y for commands): > :set langmap=zy,yz,ZY,YZ < @@ -3370,6 +4157,7 @@ A jump table for the options with a short description can be found at |Q_op|. matter what $LANG is set to: > :set langmenu=nl_NL.ISO_8859-1 < When 'langmenu' is empty, |v:lang| is used. + Only normal file name characters can be used, "/\*?[|<>" are illegal. If your $LANG is set to a non-English language but you do want to use the English menus: > :set langmenu=none @@ -3399,7 +4187,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} When this option is set, the screen will not be redrawn while executing macros, registers and other commands that have not been - typed. To force an update use |:redraw|. + typed. Also, updating the window title is postponed. To force an + update use |:redraw|. *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* 'linebreak' 'lbr' boolean (default off) @@ -3411,18 +4200,25 @@ A jump table for the options with a short description can be found at |Q_op|. than at the last character that fits on the screen. Unlike 'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file, it only affects the way the file is displayed, not its contents. The - value of 'showbreak' is used to put in front of wrapped lines. This - option is not used when the 'wrap' option is off or 'list' is on. + value of 'showbreak' is used to put in front of wrapped lines. + This option is not used when the 'wrap' option is off or 'list' is on. Note that <Tab> characters after an <EOL> are mostly not displayed with the right amount of white space. - *'lines'* + *'lines'* *E593* 'lines' number (default 24 or terminal height) global - Number of lines in the display. Normally you don't need to set this. - That is done automatically by the terminal initialization code. + Number of lines of the Vim window. + Normally you don't need to set this. It is done automatically by the + terminal initialization code. Also see |posix-screen-size|. When Vim is running in the GUI or in a resizable window, setting this - option may cause the window size to be changed. + option will cause the window size to be changed. When you only want + to use the size for the GUI, put the command in your |gvimrc| file. + Vim limits the number of lines to what fits on the screen. You can + use this command to get the tallest window possible: > + :set lines=999 +< Minimum value is 2, maximum value is 1000. + If you get less lines than expected, check the 'guiheadroom' option. When you set this option and Vim is unable to change the physical number of lines of the display, the display may be messed up. @@ -3434,6 +4230,10 @@ A jump table for the options with a short description can be found at |Q_op|. Number of pixel lines inserted between characters. Useful if the font uses the full character cell height, making lines touch each other. When non-zero there is room for underlining. + With some fonts there can be too much room between lines (to have + space for ascents and descents). Then it makes sense to set + 'linespace' to a negative value. This may cause display problems + though! *'lisp'* *'nolisp'* 'lisp' boolean (default off) @@ -3458,6 +4258,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+lispindent| feature} Comma separated list of words that influence the Lisp indenting. + |'lisp'| *'list'* *'nolist'* 'list' boolean (default off) @@ -3488,16 +4289,21 @@ A jump table for the options with a short description can be found at |Q_op|. off and the line continues beyond the right of the screen. precedes:c Character to show in the first column, when 'wrap' - is off and there is text preceeding the character + is off and there is text preceding the character visible in the first column. + nbsp:c Character to show for a non-breakable space (character + 0xA0, 160). Left blank when omitted. + + The characters ':' and ',' should not be used. UTF-8 characters can + be used when 'encoding' is "utf-8", otherwise only printable + characters are allowed. All characters must be single width. - The characters ':' and ',' cannot be used. Examples: > :set lcs=tab:>-,trail:- - :set lcs=tab:>-,eol:< + :set lcs=tab:>-,eol:<,nbsp:% :set lcs=extends:>,precedes:< < The "NonText" highlighting will be used for "eol", "extends" and - "precedes". "SpecialKey" for "tab" and "trail". + "precedes". "SpecialKey" for "nbsp", "tab" and "trail". *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'* 'loadplugins' 'lpl' boolean (default on) @@ -3509,6 +4315,20 @@ A jump table for the options with a short description can be found at |Q_op|. Note that using the "-u NONE" and "--noplugin" command line arguments reset this option. |-u| |--noplugin| + *'macatsui'* *'nomacatsui'* +'macatsui' boolean (default on) + global + {only available in Mac GUI version} + This is a workaround for when drawing doesn't work properly. When set + and compiled with multi-byte support ATSUI text drawing is used. When + not set ATSUI text drawing is not used. Switch this option off when + you experience drawing problems. In a future version the problems may + be solved and this option becomes obsolete. Therefore use this method + to unset it: > + if exists('&macatsui') + set nomacatsui + endif +< *'magic'* *'nomagic'* 'magic' boolean (default on) global @@ -3517,7 +4337,7 @@ A jump table for the options with a short description can be found at |Q_op|. NOTE: To avoid portability problems with using patterns, always keep this option at the default "on". Only switch it off when working with old Vi scripts. In any other situation write patterns that work when - 'magic' is on. + 'magic' is on. Include "\M" when you want to |/\M|. *'makeef'* *'mef'* 'makeef' 'mef' string (default: "") @@ -3534,7 +4354,8 @@ A jump table for the options with a short description can be found at |Q_op|. NOT used for the ":cf" command. See 'errorfile' for that. Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'makeprg'* *'mp'* 'makeprg' 'mp' string (default "make", VMS: "MMS") @@ -3551,7 +4372,8 @@ A jump table for the options with a short description can be found at |Q_op|. < The placeholder "$*" can be given (even multiple times) to specify where the arguments will be included, for example: > :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} -< This option cannot be set from a |modeline|, for security reasons. +< This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'matchpairs'* *'mps'* 'matchpairs' 'mps' string (default "(:),{:},[:]") @@ -3579,6 +4401,20 @@ A jump table for the options with a short description can be found at |Q_op|. set. Note that this is not in milliseconds, like other options that set a time. This is to be compatible with Nvi. + *'maxcombine'* *'mco'* +'maxcombine' 'mco' number (default 2) + global + {not in Vi} + {only available when compiled with the |+multi_byte| + feature} + The maximum number of combining characters supported for displaying. + Only used when 'encoding' is "utf-8". + The default is OK for most languages. Hebrew may require 4. + Maximum value is 6. + Even when this option is set to 2 you can still edit text with more + combining characters, you just can't see them. Use |g8| or |ga|. + See |mbyte-combining|. + *'maxfuncdepth'* *'mfd'* 'maxfuncdepth' 'mfd' number (default 100) global @@ -3610,6 +4446,20 @@ A jump table for the options with a short description can be found at |Q_op|. other memory to be freed. Maximum value 2000000. Use this to work without a limit. Also see 'maxmemtot'. + *'maxmempattern'* *'mmp'* +'maxmempattern' 'mmp' number (default 1000) + global + {not in Vi} + Maximum amount of memory (in Kbyte) to use for pattern matching. + Maximum value 2000000. Use this to work without a limit. + *E363* + When Vim runs into the limit it gives an error message mostly behaves + like CTRL-C was typed. + Running into the limit often means that the pattern is very + inefficient or too complex. This may already happen with the pattern + "\(.\)*" on a very long line. ".*" works much better. + Vim may run out of memory before hitting the 'maxmempattern' limit. + *'maxmemtot'* *'mmt'* 'maxmemtot' 'mmt' number (default between 2048 and 10240 (system dependent) or half the amount of memory @@ -3630,6 +4480,45 @@ A jump table for the options with a short description can be found at |Q_op|. generated from a list of items, e.g., the Buffers menu. Changing this option has no direct effect, the menu must be refreshed first. + *'mkspellmem'* *'msm'* +'mkspellmem' 'msm' string (default "460000,2000,500") + global + {not in Vi} + {not available when compiled without the |+syntax| + feature} + Parameters for |:mkspell|. This tunes when to start compressing the + word tree. Compression can be slow when there are many words, but + it's needed to avoid running out of memory. The amount of memory used + per word depends very much on how similar the words are, that's why + this tuning is complicated. + + There are three numbers, separated by commas: + {start},{inc},{added} + + For most languages the uncompressed word tree fits in memory. {start} + gives the amount of memory in Kbyte that can be used before any + compression is done. It should be a bit smaller than the amount of + memory that is available to Vim. + + When going over the {start} limit the {inc} number specifies the + amount of memory in Kbyte that can be allocated before another + compression is done. A low number means compression is done after + less words are added, which is slow. A high number means more memory + will be allocated. + + After doing compression, {added} times 1024 words can be added before + the {inc} limit is ignored and compression is done when any extra + amount of memory is needed. A low number means there is a smaller + chance of hitting the {inc} limit, less memory is used but it's + slower. + + The languages for which these numbers are important are Italian and + Hungarian. The default works for when you have about 512 Mbyte. If + you have 1 Gbyte you could use: > + :set mkspellmem=900000,3000,800 +< If you have less than 512 Mbyte |:mkspell| may fail for some + languages, no matter what you set 'mkspellmem' to. + *'modeline'* *'ml'* *'nomodeline'* *'noml'* 'modeline' 'ml' boolean (Vim default: on, Vi default: off) local to buffer @@ -3680,12 +4569,12 @@ A jump table for the options with a short description can be found at |Q_op|. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. - *'mouse'* + *'mouse'* *E538* 'mouse' string (default "", "a" for GUI, MS-DOS and Win32) global {not in Vi} Enable the use of the mouse. Only works for certain terminals - (xterm, MS-DOS, Win32 |win32-mouse|, qnx pterm, and Linux console + (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, and Linux console with gpm). For using the mouse in the GUI, see |gui-mouse|. The mouse can be enabled for different modes: n Normal mode @@ -3736,12 +4625,12 @@ A jump table for the options with a short description can be found at |Q_op|. like in an xterm. popup Right mouse button pops up a menu. The shifted left mouse button extends a selection. This works like - with Microsoft Windows + with Microsoft Windows. popup_setpos Like "popup", but the cursor will be moved to the position where the mouse was clicked, and thus the selected operation will act upon the clicked object. If clicking inside a selection, that selection will - be acted upon, ie. no cursor move. This implies of + be acted upon, i.e. no cursor move. This implies of course, that right clicking outside a selection will end Visual mode. Overview of what button does what for each model: @@ -3762,9 +4651,9 @@ A jump table for the options with a short description can be found at |Q_op|. The 'mousemodel' option is set by the |:behave| command. - *'mouseshape'* *'mouses'* + *'mouseshape'* *'mouses'* *E547* 'mouseshape' 'mouses' string (default "i:beam,r:beam,s:updown,sd:cross, - m:no,v:rightup-arrow" + m:no,ml:up-arrow,v:rightup-arrow") global {not in Vi} {only available when compiled with the |+mouseshape| @@ -3788,7 +4677,8 @@ A jump table for the options with a short description can be found at |Q_op|. c appending to the command-line ci inserting in the command-line cr replacing in the command-line - m At the 'Hit ENTER' or 'More' prompts + m at the 'Hit ENTER' or 'More' prompts + ml idem, but cursor in the last line e any mode, pointer below last window s any mode, pointer on a status line sd any mode, while dragging a status line @@ -3808,8 +4698,8 @@ A jump table for the options with a short description can be found at |Q_op|. x udsizing indicates up-down resizing x lrsizing indicates left-right resizing x crosshair like a big thin + - x hand1 white hand - x hand2 black hand + x hand1 black hand + x hand2 white hand x pencil what you write with x question big ? x rightup-arrow arrow pointing right-up @@ -3818,11 +4708,11 @@ A jump table for the options with a short description can be found at |Q_op|. The "avail" column contains a 'w' if the shape is available for Win32, x for X11. - Any modes not specifed or shapes not available use the normal mouse + Any modes not specified or shapes not available use the normal mouse pointer. Example: > - :set mouseshape=s:size,m:no + :set mouseshape=s:udsizing,m:no < will make the mouse turn to a sizing arrow over the status lines and indicate no input when the hit-enter prompt is displayed (since clicking the mouse has no effect in this state.) @@ -3835,6 +4725,15 @@ A jump table for the options with a short description can be found at |Q_op|. time in msec between two mouse clicks for the second click to be recognized as a multi click. + *'mzquantum'* *'mzq'* +'mzquantum' 'mzq' number (default 100) + global + {not in Vi} + {not available when compiled without the |+mzscheme| + feature} + The number of milliseconds between polls for MzScheme threads. + Negative or zero value means no thread scheduling. + *'nrformats'* *'nf'* 'nrformats' 'nf' string (default "octal,hex") local to buffer @@ -3842,12 +4741,12 @@ A jump table for the options with a short description can be found at |Q_op|. This defines what bases Vim will consider for numbers when using the CTRL-A and CTRL-X commands for adding to and subtracting from a number respectively; see |CTRL-A| for more info on these commands. - alpha if included, single alphabetical characters will be + alpha If included, single alphabetical characters will be incremented or decremented. This is useful for a list with a letter index a), b), etc. - octal if included, numbers that start with a zero will be considered + octal If included, numbers that start with a zero will be considered to be octal. Example: Using CTRL-A on "007" results in "010". - hex if included, numbers starting with "0x" or "0X" will be + hex If included, numbers starting with "0x" or "0X" will be considered to be hexadecimal. Example: Using CTRL-X on "0x100" results in "0x0ff". Numbers which simply begin with a digit in the range 1-9 are always @@ -3860,10 +4759,54 @@ A jump table for the options with a short description can be found at |Q_op|. Print the line number in front of each line. When the 'n' option is excluded from 'cpoptions' a wrapped line will not use the column of line numbers (this is the default when 'compatible' isn't set). + The 'numberwidth' option can be used to set the room used for the line + number. When a long, wrapped line doesn't start with the first character, '-' characters are put before the number. See |hl-LineNr| for the highlighting used for the number. + *'numberwidth'* *'nuw'* +'numberwidth' 'nuw' number (Vim default: 4 Vi default: 8) + local to window + {not in Vi} + {only available when compiled with the |+linebreak| + feature} + Minimal number of columns to use for the line number. Only relevant + when the 'number' option is set or printing lines with a line number. + Since one space is always between the number and the text, there is + one less character for the number itself. + The value is the minimum width. A bigger width is used when needed to + fit the highest line number in the buffer. Thus with the Vim default + of 4 there is room for a line number up to 999. When the buffer has + 1000 lines five columns will be used. + The minimum value is 1, the maximum value is 10. + NOTE: 'numberwidth' is reset to 8 when 'compatible' is set. + + *'omnifunc'* *'ofu'* +'omnifunc' 'ofu' string (default: empty) + local to buffer + {not in Vi} + {not available when compiled without the +eval + or +insert_expand feature} + This option specifies a function to be used for Insert mode omni + completion with CTRL-X CTRL-O. |i_CTRL-X_CTRL-O| + See |complete-functions| for an explanation of how the function is + invoked and what it should return. + This option is usually set by a filetype plugin. + |:filetype-plugin-on| + + + *'operatorfunc'* *'opfunc'* +'operatorfunc' 'opfunc' string (default: empty) + global + {not in Vi} + This option specifies a function to be called by the |g@| operator. + See |:map-operator| for more info and an example. + + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + + *'osfiletype'* *'oft'* *E366* 'osfiletype' 'oft' string (RISC-OS default: "Text", others default: "") @@ -3897,6 +4840,10 @@ A jump table for the options with a short description can be found at |Q_op|. knows about pasting and will mostly do the right thing without 'paste' being set. The same is true for a terminal where Vim handles the mouse clicks itself. + This option is reset when starting the GUI. Thus if you set it in + your .vimrc it will work in a terminal, but not in the GUI. Setting + 'paste' in the GUI has side effects: e.g., the Paste toolbar button + will no longer work in Insert mode, because it uses a mapping. When the 'paste' option is switched on (also when it was already on): - mapping in Insert mode and Command-line mode is disabled - abbreviations are disabled @@ -3975,10 +4922,11 @@ A jump table for the options with a short description can be found at |Q_op|. Using 'patchmode' for compressed files appends the extension at the end (e.g., "file.gz.orig"), thus the resulting name isn't always recognized as a compressed file. + Only normal file name characters can be used, "/\*?[|<>" are illegal. *'path'* *'pa'* *E343* *E345* *E347* 'path' 'pa' string (default on Unix: ".,/usr/include,," - on OS/2: ".,/emx/include,," + on OS/2: ".,/emx/include,," other systems: ".,,") global or local to buffer |global-local| {not in Vi} @@ -4041,7 +4989,23 @@ A jump table for the options with a short description can be found at |Q_op|. < Replace the ';' with a ':' or whatever separator is used. Note that this doesn't work when $INCL contains a comma or white space. - *'previewheight'* *'pvh'* + *'preserveindent'* *'pi'* *'nopreserveindent'* *'nopi'* +'preserveindent' 'pi' boolean (default off) + local to buffer + {not in Vi} + When changing the indent of the current line, preserve as much of the + indent structure as possible. Normally the indent is replaced by a + series of tabs followed by spaces as required (unless |'expandtab'| is + enabled, in which case only spaces are used). Enabling this option + means the indent will preserve as many existing characters as possible + for indenting, and only add additional tabs or spaces as required. + NOTE: When using ">>" multiple times the resulting indent is a mix of + tabs and spaces. You might not like this. + NOTE: 'preserveindent' is reset when 'compatible' is set. + Also see 'copyindent'. + Use |:retab| to clean up white space. + + *'previewheight'* *'pvh'* 'previewheight' 'pvh' number (default 12) global {not in Vi} @@ -4050,7 +5014,8 @@ A jump table for the options with a short description can be found at |Q_op|. Default height for a preview window. Used for |:ptag| and associated commands. Used for |CTRL-W_}| when no count is given. - *'previewwindow'* *'nopreviewwindow'* *'pvw'* *'nopvw'* + *'previewwindow'* *'nopreviewwindow'* + *'pvw'* *'nopvw'* *E590* 'previewwindow' 'pvw' boolean (default off) local to window {not in Vi} @@ -4066,12 +5031,19 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {only available when compiled with the |+printer| feature} - This defines the name of the printer to be used when the |:hardcopy| - command is issued with a bang (!) to skip the printer selection - dialog. On Win32, it should be the printer name exactly as it appears - in the standard printer dialog. - If the option is empty, then vim will use the system default printer - for ":hardcopy!" + The name of the printer to be used for |:hardcopy|. + See |pdev-option|. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + + *'printencoding'* *'penc'* +'printencoding' 'penc' String (default empty, except for some systems) + global + {not in Vi} + {only available when compiled with the |+printer| + and |+postscript| features} + Sets the character encoding used when printing. + See |penc-option|. *'printexpr'* *'pexpr'* 'printexpr' 'pexpr' String (default: see below) @@ -4079,67 +5051,17 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {only available when compiled with the |+printer| and |+postscript| features} - Expression that is evaluated to print the PostScript produced with - ":hardcopy". - The file name to be printed is in |v:fname_in|. - The arguments to the ":hardcopy" command are in |v:cmdarg|. - The expression must take care of deleting the file after printing it. - When there is an error, the expression must return a non-zero number. - If there is no error, return zero or an empty string. - The default for non MS-Windows or VMS systems is to simply use "lpr" - to print the file: > - - system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) - . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error -< - On MS-Windows machines the default is to copy the file to the - currently specified printdevice: > + Expression used to print the PostScript produced with |:hardcopy|. + See |pexpr-option|. - system('copy' . ' ' . v:fname_in . ' ' &printdevice) - . delete(v:fname_in) -< - On VMS machines the default is to send the file to either the default - or currently specified printdevice: > - - system('print' . (&printdevice == '' ? '' : ' /queue=' . - &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) -< - If you change this option, using a function is an easy way to avoid - having to escape all the spaces. Example: > - - :set printexpr=PrintFile(v:fname_in) - :function PrintFile(fname) - : call system("ghostview " . a:fname) - : call delete(a:fname) - : return v:shell_error - :endfunc - -< Be aware that some print programs return control before they have read - the file. If you delete the file too soon it will not be printed. - These programs usually offer an option to have them remove the file - when printing is done. - *E365* - If evaluating the expression fails or it results in a non-zero number, - you get an error message. In that case Vim will delete the - file. In the default value for non-MS-Windows a trick is used: Adding - "v:shell_error" will result in a non-zero number when the system() - call fails. - This option cannot be set from a |modeline|, for security reasons. - - *'printfont'* *'pfn'* *E448* + *'printfont'* *'pfn'* 'printfont' 'pfn' string (default "courier") global {not in Vi} {only available when compiled with the |+printer| feature} - This is the name of the font that will be used for the |:hardcopy| - command's output. It has the same format as the 'guifont' option, - except that only one font may be named, and the special "guifont=*" - syntax is not available. - In the Win32 GUI version this specifies a font name with its extra - attributes, as with the 'guifont' option. - For other systems, only ":h11" is recognized, where "11" is the point - size of the font. When omitted, the points size is 10. + The name of the font that will be used for |:hardcopy|. + See |pfn-option|. *'printheader'* *'pheader'* 'printheader' 'pheader' string (default "%<%f%h%m%=Page %N") @@ -4147,111 +5069,80 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {only available when compiled with the |+printer| feature} - This defines the format of the header produced in |:hardcopy| output. - The option is defined in the same way as the 'statusline' option. - If Vim has not been compiled with the |+statusline| feature, this - option has no effect and a simple default header is used, which shows - the page number. + The format of the header produced in |:hardcopy| output. + See |pheader-option|. + + *'printmbcharset'* *'pmbcs'* +'printmbcharset' 'pmbcs' string (default "") + global + {not in Vi} + {only available when compiled with the |+printer|, + |+postscript| and |+multi_byte| features} + The CJK character set to be used for CJK output from |:hardcopy|. + See |pmbcs-option|. + + *'printmbfont'* *'pmbfn'* +'printmbfont' 'pmbfn' string (default "") + global + {not in Vi} + {only available when compiled with the |+printer|, + |+postscript| and |+multi_byte| features} + List of font names to be used for CJK output from |:hardcopy|. + See |pmbfn-option|. *'printoptions'* *'popt'* 'printoptions' 'popt' string (default "") global {not in Vi} {only available when compiled with |+printer| feature} - This is a comma-separated list of items that control the format of - the output of |:hardcopy|: - - left:{spec} left margin (default: 10pc) - right:{spec} right margin (default: 5pc) - top:{spec} top margin (default: 5pc) - bottom:{spec} bottom margin (default: 5pc) - {spec} is a number followed by "in" for - inches, "pt" for points (1 point is 1/72 of an - inch), "mm" for millimetres or "pc" for a - percentage of the media size. - Weird example: - left:2in,top:30pt,right:16mm,bottom:3pc - If the unit is not recognized there is no - error and the default value is used. - - header:{nr} Number of lines to reserve for the header. - Only the first line is actually filled, thus - when {nr} is 2 there is one empty line. The - header is formatted according to - 'printheader'. - header:0 Do not print a header. - header:2 (default) Use two lines for the header - - syntax:n Do not use syntax highlighting. This is - faster and thus useful when printing large - files. - syntax:y Do syntax highlighting. - syntax:a (default) Use syntax highlighting if the printer appears - to be able to print color or grey. - - number:y Include line numbers in the printed output. - number:n (default) No line numbers. - - wrap:y (default) Wrap long lines. - wrap:n Truncate long lines. - - duplex:off Print on one side. - duplex:long (default) Print on both sides (when possible), bind on - long side. - duplex:short Print on both sides (when possible), bind on - short side. - - collate:y (default) Collating: 1 2 3, 1 2 3, 1 2 3 - collate:n No collating: 1 1 1, 2 2 2, 3 3 3 - - jobsplit:n (default) Do all copies in one print job - jobsplit:y Do each copy as a separate print job. Useful - when doing N-up postprocessing. - - portrait:y (default) Orientation is portrait. - portrait:n Orientation is landscape. - - - paper:A4 (default) Paper size: A4 - paper:{name} Paper size from this table: - {name} size in inch ~ - 10x14 10 x 14 - A3 11.69 x 16.54 - A4 8.27 x 11.69 - A5 5.83 x 8.27 - B4 10.12 x 14.33 - B5 7.17 x 10.12 - executive 7.25 x 10.5 - folio 8.27 x 13 - ledger 17 x 11 - legal 8.5 x 14 - letter 8.5 x 11 - quarto 8.5 x 10.83 - statement 5.5 x 8.5 - tabloid 11 x 17 - - The item indicated with (default) is used when the item is not - present. The values are not always used, especially when using a - dialog to select the printer and options. - Example: > - :set printoptions=paper:letter,duplex:off -< + List of items that control the format of the output of |:hardcopy|. + See |popt-option|. + + *'prompt'* *'noprompt'* +'prompt' boolean (default on) + global + When on a ":" prompt is used in Ex mode. + + *'pumheight'* *'ph'* +'pumheight' 'ph' number (default 0) + global + {not available when compiled without the + |+insert_expand| feature} + {not in Vi} + Determines the maximum number of items to show in the popup menu for + Insert mode completion. When zero as much space as available is used. + |ins-completion-menu|. + + + *'quoteescape'* *'qe'* +'quoteescape' 'qe' string (default "\") + local to buffer + {not in Vi} + The characters that are used to escape quotes in a string. Used for + objects like a', a" and a` |a'|. + When one of the characters in this option is found inside a string, + the following character will be skipped. The default value makes the + text "foo\"bar\\" considered to be one string. + *'readonly'* *'ro'* *'noreadonly'* *'noro'* 'readonly' 'ro' boolean (default off) local to buffer - {not in Vi} If on, writes fail unless you use a '!'. Protects you from accidentally overwriting a file. Default on when Vim is started in read-only mode ("vim -R") or when the executable is called "view". + When using ":w!" the 'readonly' option is reset for the current + buffer, unless the 'Z' flag is in 'cpoptions'. {not in Vi:} When using the ":view" command the 'readonly' option is - set for the newly edited buffer. When using ":w!" the 'readonly' - option is reset for the current buffer. + set for the newly edited buffer. *'remap'* *'noremap'* 'remap' boolean (default on) global Allows for mappings to work recursively. If you do not want this for a single entry, use the :noremap[!] command. + NOTE: To avoid portability problems with Vim scripts, always keep + this option at the default "on". Only switch it off when working with + old Vi scripts. *'report'* 'report' number (default 2) @@ -4265,7 +5156,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'restorescreen'* *'rs'* *'norestorescreen'* *'nors'* 'restorescreen' 'rs' boolean (default on) global - {not in Vi} {Windows 95/NT console version only} + {not in Vi} {only in Windows 95/NT console version} When set, the screen contents is restored when exiting Vim. This also happens when executing external commands. @@ -4293,14 +5184,29 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {only available when compiled with the |+rightleft| feature} - When on, display orientation becomes right-to-left, i.e., character - that are stored in the file appear from the right to the left. Using - this option, it is possible to edit files for languages that are - written from the right to the left such as Hebrew and Arabic. This - option is per window, so it is possible to edit mixed files + When on, display orientation becomes right-to-left, i.e., characters + that are stored in the file appear from the right to the left. + Using this option, it is possible to edit files for languages that + are written from the right to the left such as Hebrew and Arabic. + This option is per window, so it is possible to edit mixed files simultaneously, or to view the same file in both ways (this is - sometimes useful when editing Hebrew TeX--XeT files). See - |rileft.txt|. + useful whenever you have a mixed text file with both right-to-left + and left-to-right strings so that both sets are displayed properly + in different windows). Also see |rileft.txt|. + + *'rightleftcmd'* *'rlc'* *'norightleftcmd'* *'norlc'* +'rightleftcmd' 'rlc' string (default "search") + local to window + {not in Vi} + {only available when compiled with the |+rightleft| + feature} + Each word in this option enables the command line editing to work in + right-to-left mode for a group of commands: + + search "/" and "?" commands + + This is useful for languages such as Hebrew, Arabic and Farsi. + The 'rightleft' option must be set for 'rightleftcmd' to take effect. *'ruler'* *'ru'* *'noruler'* *'noru'* 'ruler' 'ru' boolean (default off) @@ -4318,7 +5224,7 @@ A jump table for the options with a short description can be found at |Q_op|. If 'rulerformat' is set, it will determine the contents of the ruler. Each window has its own ruler. If a window has a status line, the ruler is shown there. Otherwise it is shown in the last line of the - screen. If the statusline is given by 'statusline' (ie. not empty), + screen. If the statusline is given by 'statusline' (i.e. not empty), this option takes precedence over 'ruler' and 'rulerformat' If the number of characters displayed is different from the number of bytes in the text (e.g., for a TAB or a multi-byte character), both @@ -4339,13 +5245,13 @@ A jump table for the options with a short description can be found at |Q_op|. feature} When this option is not empty, it determines the content of the ruler string, as displayed for the 'ruler' option. - The format of this option, is like that of 'statusline'. + The format of this option is like that of 'statusline'. The default ruler width is 17 characters. To make the ruler 15 characters wide, put "%15(" at the start and "%)" at the end. Example: > :set rulerformat=%15(%c%V\ %p%%%) < - *'runtimepath'* *'rtp'* + *'runtimepath'* *'rtp'* *vimfiles* 'runtimepath' 'rtp' string (default: Unix: "$HOME/.vim, $VIM/vimfiles, @@ -4372,13 +5278,14 @@ A jump table for the options with a short description can be found at |Q_op|. $VIM/vimfiles, $VIMRUNTIME, $VIM/vimfiles/after, - sys$login:vimfiles/after" + sys$login:vimfiles/after") global {not in Vi} This is a list of directories which will be searched for runtime files: filetype.vim filetypes by file name |new-filetype| scripts.vim filetypes by file contents |new-filetype-scripts| + autoload/ automatically loaded scripts |autoload-functions| colors/ color scheme files |:colorscheme| compiler/ compiler files |:compiler| doc/ documentation |write-local-help| @@ -4388,6 +5295,8 @@ A jump table for the options with a short description can be found at |Q_op|. lang/ menu translations |:menutrans| menu.vim GUI menus |menu.vim| plugin/ plugin scripts |write-plugin| + print/ files for printing |postscript-print-encoding| + spell/ spell checking files |spell| syntax/ syntax files |mysyntaxfile| tutor/ files for vimtutor |tutor| @@ -4398,6 +5307,7 @@ A jump table for the options with a short description can be found at |Q_op|. 2. In a system-wide Vim directory, for preferences from the system administrator. 3. In $VIMRUNTIME, for files distributed with Vim. + *after-directory* 4. In the "after" directory in the system-wide Vim directory. This is for the system administrator to overrule or add to the distributed defaults (rarely needed) @@ -4421,7 +5331,8 @@ A jump table for the options with a short description can be found at |Q_op|. to find files which replace a distributed runtime files. You can put a directory after $VIMRUNTIME to find files which add to distributed runtime files. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'scroll'* *'scr'* 'scroll' 'scr' number (default: half the window height) @@ -4446,6 +5357,9 @@ A jump table for the options with a short description can be found at |Q_op|. differences between two versions of a file, see 'diff'. See |'scrollopt'| for options that determine how this option should be interpreted. + This option is mostly reset when splitting a window to edit another + file. This means that ":split | edit file" results in two windows + with scroll-binding, but ":split file" does not. *'scrolljump'* *'sj'* 'scrolljump' 'sj' number (default 1) @@ -4454,6 +5368,9 @@ A jump table for the options with a short description can be found at |Q_op|. Minimal number of lines to scroll when the cursor gets off the screen (e.g., with "j"). Not used for scroll commands (e.g., CTRL-E, CTRL-D). Useful if your terminal scrolls very slowly. + When set to a negative number from -1 to -100 this is used as the + percentage of the window height. Thus -50 scrolls half the window + height. NOTE: This option is set to 1 when 'compatible' is set. *'scrolloff'* *'so'* @@ -4465,7 +5382,7 @@ A jump table for the options with a short description can be found at |Q_op|. you set it to a very large value (999) the cursor line will always be in the middle of the window (except at the start or end of the file or when long lines wrap). - For scrolling horizontallly see 'sidescrolloff'. + For scrolling horizontally see 'sidescrolloff'. NOTE: This option is set to 0 when 'compatible' is set. *'scrollopt'* *'sbo'* @@ -4475,7 +5392,8 @@ A jump table for the options with a short description can be found at |Q_op|. feature} {not in Vi} This is a comma-separated list of words that specifies how - 'scrollbind' windows should behave. + 'scrollbind' windows should behave. 'sbo' stands for ScrollBind + Options. The following words are available: ver Bind vertical scrolling for 'scrollbind' windows hor Bind horizontal scrolling for 'scrollbind' windows @@ -4498,6 +5416,8 @@ A jump table for the options with a short description can be found at |Q_op|. going back to the other window, it still uses the same relative offset. Also see |scroll-binding|. + When 'diff' mode is active there always is vertical scroll binding, + even when "ver" isn't there. *'sections'* *'sect'* 'sections' 'sect' string (default "SHNHH HUnhsh") @@ -4506,7 +5426,7 @@ A jump table for the options with a short description can be found at |Q_op|. two letters (See |object-motions|). The default makes a section start at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh". - *'secure'* *'nosecure'* + *'secure'* *'nosecure'* *E523* 'secure' boolean (default off) global {not in Vi} @@ -4517,7 +5437,8 @@ A jump table for the options with a short description can be found at |Q_op|. only used if the ".vimrc" or ".exrc" is not owned by you. This can be dangerous if the systems allows users to do a "chown". You better set 'secure' at the end of your ~/.vimrc then. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'selection'* *'sel'* 'selection' 'sel' string (default "inclusive") @@ -4535,6 +5456,9 @@ A jump table for the options with a short description can be found at |Q_op|. "inclusive" means that the last character of the selection is included in an operation. For example, when "x" is used to delete the selection. + Note that when "exclusive" is used and selecting from the end + backwards, you cannot include the last character of a line, when + starting in Normal mode and 'virtualedit' empty. The 'selection' option is set by the |:behave| command. @@ -4553,7 +5477,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'sessionoptions'* *'ssop'* 'sessionoptions' 'ssop' string (default: "blank,buffers,curdir,folds, - help,options,winsize") + help,options,tabpages,winsize") global {not in Vi} {not available when compiled without the +mksession @@ -4568,7 +5492,8 @@ A jump table for the options with a short description can be found at |Q_op|. folds manually created folds, opened/closed folds and local fold options globals global variables that start with an uppercase letter - and contain at least one lowercase letter. + and contain at least one lowercase letter. Only + String and Number types are stored. help the help window localoptions options and mappings local to a window or buffer (not global values for local options) @@ -4581,12 +5506,17 @@ A jump table for the options with a short description can be found at |Q_op|. systems) slash backslashes in file names replaced with forward slashes + tabpages all tab pages; without this only the current tab page + is restored, so that you can make a session for each + tab page separately unix with Unix end-of-line format (single <NL>), even when on Windows or DOS winpos position of the whole Vim window winsize window sizes Don't include both "curdir" and "sesdir". + There is no option to include tab pages yet, only the current tab page + is stored in the session. |tab-page| When "curdir" nor "sesdir" is included, file names are stored with absolute paths. "slash" and "unix" are useful on Windows when sharing session files @@ -4622,7 +5552,8 @@ A jump table for the options with a short description can be found at |Q_op|. For unknown reasons, when using "4dos.com" the current directory is changed to "C:\". To avoid this set 'shell' like this: > :set shell=command.com\ /c\ 4dos -< This option cannot be set from a |modeline|, for security reasons. +< This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'shellcmdflag'* *'shcf'* 'shellcmdflag' 'shcf' string (default: "-c", MS-DOS and Win32, when 'shell' @@ -4635,7 +5566,8 @@ A jump table for the options with a short description can be found at |Q_op|. reduce the need to set this option by the user. It's not used for OS/2 (EMX figures this out itself). See |option-backslash| about including spaces and backslashes. See |dos-shell|. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'shellpipe'* *'sp'* 'shellpipe' 'sp' string (default ">", "| tee", "|& tee" or "2>&1| tee") @@ -4667,7 +5599,8 @@ A jump table for the options with a short description can be found at |Q_op|. Don't forget to precede the space with a backslash: ":set sp=\ ". In the future pipes may be used for filtering and this option will become obsolete (at least for Unix). - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'shellquote'* *'shq'* 'shellquote' 'shq' string (default: ""; MS-DOS and Win32, when 'shell' @@ -4683,7 +5616,8 @@ A jump table for the options with a short description can be found at |Q_op|. or bash, where it should be "\"". The default is adjusted according the value of 'shell', to reduce the need to set this option by the user. See |dos-shell|. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'shellredir'* *'srr'* 'shellredir' 'srr' string (default ">", ">&" or ">%s 2>&1") @@ -4708,7 +5642,8 @@ A jump table for the options with a short description can be found at |Q_op|. explicitly set before. In the future pipes may be used for filtering and this option will become obsolete (at least for Unix). - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'shellslash'* *'ssl'* *'noshellslash'* *'nossl'* 'shellslash' 'ssl' boolean (default off) @@ -4721,6 +5656,25 @@ A jump table for the options with a short description can be found at |Q_op|. Note that setting or resetting this option has no effect for some existing file names, thus this option needs to be set before opening any file for best results. This might change in the future. + 'shellslash' only works when a backslash can be used as a path + separator. To test if this is so use: > + if exists('+shellslash') +< + *'shelltemp'* *'stmp'* *'noshelltemp'* *'nostmp'* +'shelltemp' 'stmp' boolean (Vi default off, Vim default on) + global + {not in Vi} + When on, use temp files for shell commands. When off use a pipe. + When using a pipe is not possible temp files are used anyway. + Currently a pipe is only supported on Unix. You can check it with: > + :if has("filterpipe") +< The advantage of using a pipe is that nobody can read the temp file + and the 'shell' command does not need to support redirection. + The advantage of using a temp file is that the file type and encoding + can be detected. + The |FilterReadPre|, |FilterReadPost| and |FilterWritePre|, + |FilterWritePost| autocommands event are not triggered when + 'shelltemp' is off. *'shelltype'* *'st'* 'shelltype' 'st' number (default 0) @@ -4752,7 +5706,8 @@ A jump table for the options with a short description can be found at |Q_op|. Shell or bash, where it should be "\"". The default is adjusted according the value of 'shell', to reduce the need to set this option by the user. See |dos-shell|. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'shiftround'* *'sr'* *'noshiftround'* *'nosr'* 'shiftround' 'sr' boolean (default off) @@ -4770,7 +5725,8 @@ A jump table for the options with a short description can be found at |Q_op|. |'cindent'|, |>>|, |<<|, etc. *'shortmess'* *'shm'* -'shortmess' 'shm' string (Vim default "filnxtToO", Vi default: "") +'shortmess' 'shm' string (Vim default "filnxtToO", Vi default: "", + POSIX default: "A") global {not in Vi} This option helps to avoid all the |hit-enter| prompts caused by file @@ -4799,7 +5755,7 @@ A jump table for the options with a short description can be found at |Q_op|. on the command-line, "<" will appear in the left most column. Ignored in Ex mode. T truncate other messages in the middle if they are too long to - fit on the command line. "..." will appear in the middle. + fit on the command line. "..." will appear in the middle. Ignored in Ex mode. W don't give "written" or "[w]" when writing a file A don't give the "ATTENTION" message when an existing swap file @@ -4831,17 +5787,18 @@ A jump table for the options with a short description can be found at |Q_op|. or crossdos. When running the Win32 GUI version under Win32s, this option is always on by default. - *'showbreak'* *'sbr'* + *'showbreak'* *'sbr'* *E595* 'showbreak' 'sbr' string (default "") global {not in Vi} {not available when compiled without the |+linebreak| feature} String to put at the start of lines that have been wrapped. Useful - values are "> " or "+++ ". Only printable characters are allowed, - excluding <Tab> and comma (in a future version the comma might be used - to separate the part that is shown at the end and at the start of a - line). The characters are highlighted according to the '@' flag in + values are "> " or "+++ ". + Only printable single-cell characters are allowed, excluding <Tab> and + comma (in a future version the comma might be used to separate the + part that is shown at the end and at the start of a line). + The characters are highlighted according to the '@' flag in 'highlight'. Note that tabs after the showbreak will be displayed differently. If you want the 'showbreak' to appear in between line numbers, add the @@ -4885,7 +5842,12 @@ A jump table for the options with a short description can be found at |Q_op|. will immediately move the cursor back to where it belongs. See the "sm" field in 'guicursor' for setting the cursor shape and blinking when showing the match. - Note: For the use of the short form parental guidance is advised. + The 'matchpairs' option can be used to specify the characters to show + matches for. 'rightleft' and 'revins' are used to look for opposite + matches. + Also see the matchparen plugin for highlighting the match when moving + around |pi_paren.txt|. + Note: Use of the short form is rated PG. *'showmode'* *'smd'* *'noshowmode'* *'nosmd'* 'showmode' 'smd' boolean (Vim default: on, Vi default: off) @@ -4899,6 +5861,21 @@ A jump table for the options with a short description can be found at |Q_op|. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. + *'showtabline'* *'stal'* +'showtabline' 'stal' number (default 1) + global + {not in Vi} + {not available when compiled without the +windows + feature} + The value of this option specifies when the line with tab page labels + will be displayed: + 0: never + 1: only if there are at least two tab pages + 2: always + This is both for the GUI and non-GUI implementation of the tab pages + line. + See |tab-page| for more information about tab pages. + *'sidescroll'* *'ss'* 'sidescroll' 'ss' number (default 0) global @@ -4915,13 +5892,13 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} The minimal number of screen columns to keep to the left and to the - right of the cursor if 'nowrap' is set. Setting this option to a value - greater than 0 while having |'sidescroll'| also at a nonzero value - makes some context visible in the line you are scrolling in - horizontally (except at the end and beginning of the line). Setting - this option to a large value (like 999) has the effect of keeping the - cursor horizontally centered in the window, as long as one does not - come too close to the beginning or end of the line. + right of the cursor if 'nowrap' is set. Setting this option to a + value greater than 0 while having |'sidescroll'| also at a non-zero + value makes some context visible in the line you are scrolling in + horizontally (except at beginning of the line). Setting this option + to a large value (like 999) has the effect of keeping the cursor + horizontally centered in the window, as long as one does not come too + close to the beginning of the line. NOTE: This option is set to 0 when 'compatible' is set. Example: Try this together with 'sidescroll' and 'listchars' as @@ -4976,13 +5953,15 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When on, a <Tab> in front of a line inserts blanks according to - 'shiftwidth'. 'tabstop' is used in other places. - When off a <Tab> always inserts blanks according to 'tabstop'. - 'shiftwidth' is only used for shifting text left or right - |shift-left-right|. + 'shiftwidth'. 'tabstop' or 'softtabstop' is used in other places. A + <BS> will delete a 'shiftwidth' worth of space at the start of the + line. + When off, a <Tab> always inserts blanks according to 'tabstop' or + 'softtabstop'. 'shiftwidth' is only used for shifting text left or + right |shift-left-right|. What gets inserted (a Tab or spaces) depends on the 'expandtab' option. Also see |ins-expandtab|. When 'expandtab' is not set, the - number of spaces minimized by using <Tab>s. + number of spaces is minimized by using <Tab>s. NOTE: This option is reset when 'compatible' is set. *'softtabstop'* *'sts'* @@ -4999,8 +5978,164 @@ A jump table for the options with a short description can be found at |Q_op|. 'softtabstop' is set to 0 when the 'paste' option is set. See also |ins-expandtab|. When 'expandtab' is not set, the number of spaces is minimized by using <Tab>s. + The 'L' flag in 'cpoptions' changes how tabs are used when 'list' is + set. NOTE: This option is set to 0 when 'compatible' is set. + *'spell'* *'nospell'* +'spell' boolean (default off) + local to window + {not in Vi} + {not available when compiled without the |+syntax| + feature} + When on spell checking will be done. See |spell|. + The languages are specified with 'spelllang'. + + *'spellcapcheck'* *'spc'* +'spellcapcheck' 'spc' string (default "[.?!]\_[\])'" \t]\+") + local to buffer + {not in Vi} + {not available when compiled without the |+syntax| + feature} + Pattern to locate the end of a sentence. The following word will be + checked to start with a capital letter. If not then it is highlighted + with SpellCap |hl-SpellCap| (unless the word is also badly spelled). + When this check is not wanted make this option empty. + Only used when 'spell' is set. + Be careful with special characters, see |option-backslash| about + including spaces and backslashes. + To set this option automatically depending on the language, see + |set-spc-auto|. + + *'spellfile'* *'spf'* +'spellfile' 'spf' string (default empty) + local to buffer + {not in Vi} + {not available when compiled without the |+syntax| + feature} + Name of the word list file where words are added for the |zg| and |zw| + commands. It must end in ".{encoding}.add". You need to include the + path, otherwise the file is placed in the current directory. + *E765* + It may also be a comma separated list of names. A count before the + |zg| and |zw| commands can be used to access each. This allows using + a personal word list file and a project word list file. + When a word is added while this option is empty Vim will set it for + you: Using the first directory in 'runtimepath' that is writable. If + there is no "spell" directory yet it will be created. For the file + name the first language name that appears in 'spelllang' is used, + ignoring the region. + The resulting ".spl" file will be used for spell checking, it does not + have to appear in 'spelllang'. + Normally one file is used for all regions, but you can add the region + name if you want to. However, it will then only be used when + 'spellfile' is set to it, for entries in 'spelllang' only files + without region name will be found. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + + *'spelllang'* *'spl'* +'spelllang' 'spl' string (default "en") + local to buffer + {not in Vi} + {not available when compiled without the |+syntax| + feature} + A comma separated list of word list names. When the 'spell' option is + on spellchecking will be done for these languages. Example: > + set spelllang=en_us,nl,medical +< This means US English, Dutch and medical words are recognized. Words + that are not recognized will be highlighted. + The word list name must not include a comma or dot. Using a dash is + recommended to separate the two letter language name from a + specification. Thus "en-rare" is used for rare English words. + A region name must come last and have the form "_xx", where "xx" is + the two-letter, lower case region name. You can use more than one + region by listing them: "en_us,en_ca" supports both US and Canadian + English, but not words specific for Australia, New Zealand or Great + Britain. + *E757* + As a special case the name of a .spl file can be given as-is. The + first "_xx" in the name is removed and used as the region name + (_xx is an underscore, two letters and followed by a non-letter). + This is mainly for testing purposes. You must make sure the correct + encoding is used, Vim doesn't check it. + When 'encoding' is set the word lists are reloaded. Thus it's a good + idea to set 'spelllang' after setting 'encoding' to avoid loading the + files twice. + How the related spell files are found is explained here: |spell-load|. + + If the |spellfile.vim| plugin is active and you use a language name + for which Vim cannot find the .spl file in 'runtimepath' the plugin + will ask you if you want to download the file. + + After this option has been set successfully, Vim will source the files + "spell/LANG.vim" in 'runtimepath'. "LANG" is the value of 'spelllang' + up to the first comma, dot or underscore. + Also see |set-spc-auto|. + + + *'spellsuggest'* *'sps'* +'spellsuggest' 'sps' string (default "best") + global + {not in Vi} + {not available when compiled without the |+syntax| + feature} + Methods used for spelling suggestions. Both for the |z=| command and + the |spellsuggest()| function. This is a comma-separated list of + items: + + best Internal method that works best for English. Finds + changes like "fast" and uses a bit of sound-a-like + scoring to improve the ordering. + + double Internal method that uses two methods and mixes the + results. The first method is "fast", the other method + computes how much the suggestion sounds like the bad + word. That only works when the language specifies + sound folding. Can be slow and doesn't always give + better results. + + fast Internal method that only checks for simple changes: + character inserts/deletes/swaps. Works well for + simple typing mistakes. + + {number} The maximum number of suggestions listed for |z=|. + Not used for |spellsuggest()|. The number of + suggestions is never more than the value of 'lines' + minus two. + + file:{filename} Read file {filename}, which must have two columns, + separated by a slash. The first column contains the + bad word, the second column the suggested good word. + Example: + theribal/terrible ~ + Use this for common mistakes that do not appear at the + top of the suggestion list with the internal methods. + Lines without a slash are ignored, use this for + comments. + The file is used for all languages. + + expr:{expr} Evaluate expression {expr}. Use a function to avoid + trouble with spaces. |v:val| holds the badly spelled + word. The expression must evaluate to a List of + Lists, each with a suggestion and a score. + Example: + [['the', 33], ['that', 44]] + Set 'verbose' and use |z=| to see the scores that the + internal methods use. A lower score is better. + This may invoke |spellsuggest()| if you temporarily + set 'spellsuggest' to exclude the "expr:" part. + Errors are silently ignored, unless you set the + 'verbose' option to a non-zero value. + + Only one of "best", "double" or "fast" may be used. The others may + appear several times in any order. Example: > + :set sps=file:~/.vim/sugg,best,expr:MySuggest() +< + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + + *'splitbelow'* *'sb'* *'nosplitbelow'* *'nosb'* 'splitbelow' 'sb' boolean (default off) global @@ -5024,9 +6159,9 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When "on" the commands listed below move the cursor to the first - blank of the line. When off the cursor is kept in the same column + non-blank of the line. When off the cursor is kept in the same column (if possible). This applies to the commands: CTRL-D, CTRL-U, CTRL-B, - CTRL-F, "G", "H", "M", "L", , and to the commands "d", "<<" and ">>" + CTRL-F, "G", "H", "M", "L", gg, and to the commands "d", "<<" and ">>" with a linewise operator, with "%" with a count and to buffer changing commands (CTRL-^, :bnext, :bNext, etc.). Also for an Ex command that only has a line number, e.g., ":25" or ":+". @@ -5034,9 +6169,9 @@ A jump table for the options with a short description can be found at |Q_op|. where it was the last time the buffer was edited. NOTE: This option is set when 'compatible' is set. - *'statusline'* *'stl'* + *'statusline'* *'stl'* *E540* *E541* *E542* 'statusline' 'stl' string (default empty) - global + global or local to window |global-local| {not in Vi} {not available when compiled without the |+statusline| feature} @@ -5047,16 +6182,25 @@ A jump table for the options with a short description can be found at |Q_op|. normal text. Each status line item is of the form: %-0{minwid}.{maxwid}{item} All fields except the {item} is optional. A single percent sign can - be given as "%%". + be given as "%%". Up to 80 items can be specified. + + When the option starts with "%!" then it is used as an expression, + evaluated and the result is used as the option value. Example: > + :set statusline=%!MyStatusLine() +< The result can contain %{} items that will be evaluated too. + + When there is error while evaluating the option then it will be made + empty to avoid further errors. Otherwise screen updating would loop. Note that the only effect of 'ruler' when this option is set (and 'laststatus' is 2) is controlling the output of |CTRL-G|. field meaning ~ - - Left justify the item. The default is right justified + - Left justify the item. The default is right justified when minwid is larger than the length of the item. - 0 Leading zeroes in numeric items. Overridden by '-'. + 0 Leading zeroes in numeric items. Overridden by '-'. minwid Minimum width of the item, padding as set by '-' & '0'. + Value must be 50 or less. maxwid Maximum width of the item. Truncation occurs with a '<' on the left for text items. Numeric items will be shifted down to maxwid-2 digits followed by '>'number @@ -5075,7 +6219,7 @@ A jump table for the options with a short description can be found at |Q_op|. f S Path to the file in the buffer, relative to current directory. F S Full path to the file in the buffer. t S File name (tail) of file in the buffer. - m F Modified flag, text is " [+]" or " [-]" if 'modifiable' is off. + m F Modified flag, text is " [+]"; " [-]" if 'modifiable' is off. M F Modified flag, text is ",+" or ",-". r F Readonly flag, text is " [RO]". R F Readonly flag, text is ",RO". @@ -5095,7 +6239,7 @@ A jump table for the options with a short description can be found at |Q_op|. Mnemonic: Offset from start of file (with one added) {not available when compiled without |+byte_offset| feature} O N As above, in hexadecimal. - N N Printer page number. (Only works in the 'printheader' option.) + N N Printer page number. (Only works in the 'printheader' option.) l N Line number. L N Number of lines in buffer. c N Column number. @@ -5104,18 +6248,28 @@ A jump table for the options with a short description can be found at |Q_op|. p N Percentage through file in lines as in |CTRL-G|. P S Percentage through file of displayed window. This is like the percentage described for 'ruler'. Always 3 in length. - a S Argument list status as in default title. ({current} of {max}) + a S Argument list status as in default title. ({current} of {max}) Empty if the argument file count is zero or one. - { NF Evaluate expression between '{' and '}' and substitute result. + { NF Evaluate expression between '%{' and '}' and substitute result. + Note that there is no '%' before the closing '}'. ( - Start of item group. Can be used for setting the width and alignment of a section. Must be followed by %) somewhere. ) - End of item group. No width fields allowed. + T N For 'tabline': start of tab page N label. Use %T after the last + label. This information is used for mouse clicks. + X N For 'tabline': start of close tab N label. Use %X after the + label, e.g.: %3Xclose%X. Use %999X for a "close current tab" + mark. This information is used for mouse clicks. < - Where to truncate line if too long. Default is at the start. No width fields allowed. = - Separation point between left and right aligned items. No width fields allowed. + # - Set highlight group. The name must follow and then a # again. + Thus use %#HLname# for highlight group HLname. The same + highlighting is used, also for the statusline of non-current + windows. * - Set highlight group to User{N}, where {N} is taken from the - minwid field. eg. %1*. Restore normal highlight with %* or %0*. + minwid field, e.g. %1*. Restore normal highlight with %* or %0*. The difference between User{N} and StatusLine will be applied to StatusLineNC for the statusline of non-current windows. The number N must be between 1 and 9. See |hl-User1..9| @@ -5126,10 +6280,10 @@ A jump table for the options with a short description can be found at |Q_op|. with a space it is assumed that it wants to separate itself from anything but other flags. That is: A leading comma is removed if the preceding character stems from plaintext. A leading space is removed - if the preceding character stems from another active flag. This will + if the preceding character stems from another active flag. This will make a nice display when flags are used like in the examples below. - When all items in a group becomes an empty string (ie. flags that are + When all items in a group becomes an empty string (i.e. flags that are not set) and a minwid is not set for the group, the whole group will become empty. This will make a group like the following disappear completely from the statusline when none of the flags are set. > @@ -5138,9 +6292,15 @@ A jump table for the options with a short description can be found at |Q_op|. Beware that an expression is evaluated each and every time the status line is displayed. The current buffer and current window will be set temporarily to that of the window (and buffer) whose statusline is - currently being drawn. The expression will evaluate in this context. + currently being drawn. The expression will evaluate in this context. The variable "actual_curbuf" is set to the 'bufnr()' number of the - real current buffer. The expression is evaluated in the |sandbox|. + real current buffer. + + The 'statusline' option may be evaluated in the |sandbox|, see + |sandbox-option|. + + It is not allowed to change text or jump to another window while + evaluating 'statusline' |textlock|. If the statusline is not updated when you want it (e.g., after setting a variable that's used in an expression), you can force an update by @@ -5151,18 +6311,18 @@ A jump table for the options with a short description can be found at |Q_op|. Otherwise the result is taken as flag text and applied to the rules described above. - Watch out for errors in expressions. They may render Vim unusable ! + Watch out for errors in expressions. They may render Vim unusable! If you are stuck, hold down ':' or 'Q' to get a prompt, then quit and edit your .vimrc or whatever with "vim -u NONE" to get it right. Examples: - Display byte count and byte value, modified flag in red. > + Emulate standard status line with 'ruler' set > + :set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P +< Similar, but add ASCII value of char under the cursor (like "ga") > + :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P +< Display byte count and byte value, modified flag in red. > :set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b' :hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red -< Emulate standard status line with 'ruler' set > - :set statusline=%<%f%h%m%r%=%l,%c%V\ %P -< Idem, but add ascii value of char under the cursor (like "ga") > - :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P < Display a ,GZ flag if a compressed file is loaded > :set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h... < In the |:autocmd|'s: > @@ -5232,6 +6392,7 @@ A jump table for the options with a short description can be found at |Q_op|. systems the swap file will not be written at all. For a unix system setting it to "sync" will use the sync() call instead of the default fsync(), which may work better on some systems. + The 'fsync' option is used for the actual file. *'switchbuf'* *'swb'* 'switchbuf' 'swb' string (default "") @@ -5246,12 +6407,27 @@ A jump table for the options with a short description can be found at |Q_op|. jumping to errors (":cc", ":cn", "cp", etc.). It is also used in all buffer related split commands, for example ":sbuffer", ":sbnext", or ":sbrewind". + usetab Like "useopen", but also consider windows in other tab + pages. split If included, split the current window before loading - a buffer. Otherwise: do not split, use current window. + a buffer. Otherwise: do not split, use current window. Supported in |quickfix| commands that display errors. + *'synmaxcol'* *'smc'* +'synmaxcol' 'smc' number (default 3000) + local to buffer + {not in Vi} + {not available when compiled without the |+syntax| + feature} + Maximum column in which to search for syntax items. In long lines the + text after this column is not highlighted and following lines may not + be highlighted correctly, because the syntax state is cleared. + This helps to avoid very slow redrawing for an XML file that is one + long line. + Set to zero to remove the limit. + *'syntax'* *'syn'* -'syntax' 'syn' string (default emtpy) +'syntax' 'syn' string (default empty) local to buffer {not in Vi} {not available when compiled without the |+syntax| @@ -5261,9 +6437,15 @@ A jump table for the options with a short description can be found at |Q_op|. Otherwise this option does not always reflect the current syntax (the b:current_syntax variable does). This option is most useful in a modeline, for a file which syntax is - not automatically recognized. Example, for in an IDL file: > - /* vim: set syntax=idl : */ -< To switch off syntax highlighting for the current file, use: > + not automatically recognized. Example, in an IDL file: + /* vim: set syntax=idl : */ ~ + When a dot appears in the value then this separates two filetype + names. Example: + /* vim: set syntax=c.doxygen : */ ~ + This will use the "c" syntax first, then the "doxygen" syntax. + Note that the second one must be prepared to be loaded as an addition, + otherwise it will be skipped. More than one dot may appear. + To switch off syntax highlighting for the current file, use: > :set syntax=OFF < To switch syntax highlighting on according to the current value of the 'filetype' option: > @@ -5272,8 +6454,43 @@ A jump table for the options with a short description can be found at |Q_op|. Syntax autocommand event is triggered with the value as argument. This option is not copied to another buffer, independent of the 's' or 'S' flag in 'cpoptions'. + Only normal file name characters can be used, "/\*?[|<>" are illegal. + + *'tabline'* *'tal'* +'tabline' 'tal' string (default empty) + global + {not in Vi} + {not available when compiled without the +windows + feature} + When nonempty, this option determines the content of the tab pages + line at the top of the Vim window. When empty Vim will use a default + tab pages line. See |setting-tabline| for more info. + + The tab pages line only appears as specified with the 'showtabline' + option and only when there is no GUI tab line. When 'e' is in + 'guioptions' and the GUI supports a tab line 'guitablabel' is used + instead. + + The value is evaluated like with 'statusline'. You can use + |tabpagenr()|, |tabpagewinnr()| and |tabpagebuflist()| to figure out + the text to be displayed. Use "%1T" for the first label, "%2T" for + the second one, etc. Use "%X" items for closing labels. + + Keep in mind that only one of the tab pages is the current one, others + are invisible and you can't jump to their windows. + - *'tabstop'* *'ts'* + *'tabpagemax'* *'tpm'* +'tabpagemax' 'tpm' number (default 10) + global + {not in Vi} + {not available when compiled without the +windows + feature} + Maximum number of tab pages to be opened by the |-p| command line + argument or the ":tab all" command. |tabpage| + + + *'tabstop'* *'ts'* 'tabstop' 'ts' number (default 8) local to buffer Number of spaces that a <Tab> in the file counts for. Also see @@ -5328,6 +6545,14 @@ A jump table for the options with a short description can be found at |Q_op|. Tags in unsorted tags files, and matches with different case will only be found in the retry. + If a tag file indicates that it is case-fold sorted, the second, + linear search can be avoided for the 'ignorecase' case. Use a value + of '2' in the "!_TAG_FILE_SORTED" line for this. A tag file can be + case-fold sorted with the -f switch to "sort" in most unices, as in + the command: "sort -f -o tags tags". For "Exuberant ctags" version + 5.3 or higher the -f or --fold-case-sort switch can be used for this + as well. Note that case must be folded to uppercase for this to work. + When 'tagbsearch' is off, tags searching is slower when a full match exists, but faster when no full match exists. Tags in unsorted tags files may only be found with 'tagbsearch' off. @@ -5347,8 +6572,8 @@ A jump table for the options with a short description can be found at |Q_op|. 'tagrelative' 'tr' boolean (Vim default: on, Vi default: off) global {not in Vi} - If on and using a tag file in another directory, file names in that - tag file are relative to the directory where the tag file is. + If on and using a tags file in another directory, file names in that + tags file are relative to the directory where the tags file is. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. @@ -5363,9 +6588,11 @@ A jump table for the options with a short description can be found at |Q_op|. of the current file. But only when the 'd' flag is not included in 'cpoptions'. Environment variables are expanded |:set_env|. Also see |tags-option|. - "*" and "**" Wildcards can be used to search for tags files in a - directory tree. See |file-searching|. {not available when compiled + "*", "**" and other wildcards can be used to search for tags files in + a directory tree. See |file-searching|. {not available when compiled without the |+path_extra| feature} + The |tagfiles()| function can be used to get a list of the file names + actually used. If Vim was compiled with the |+emacs_tags| feature, Emacs-style tag files are also supported. They are automatically recognized. The default value becomes "./tags,./TAGS,tags,TAGS", unless case @@ -5387,7 +6614,7 @@ A jump table for the options with a short description can be found at |Q_op|. Resetting this option is useful when using a ":tag" command in a mapping which should not change the tagstack. - *'term'* + *'term'* *E529* *E530* *E531* 'term' string (default is $TERM, if that fails: in the GUI: "builtin_gui" on Amiga: "amiga" @@ -5406,8 +6633,26 @@ A jump table for the options with a short description can be found at |Q_op|. :set term=$TERM < See |termcap|. - *'termencoding'* *'tenc'* -'termencoding' 'tenc' string (default "") + *'termbidi'* *'tbidi'* + *'notermbidi'* *'notbidi'* +'termbidi' 'tbidi' boolean (default off, on for "mlterm") + global + {not in Vi} + {only available when compiled with the |+arabic| + feature} + The terminal is in charge of Bi-directionality of text (as specified + by Unicode). The terminal is also expected to do the required shaping + that some languages (such as Arabic) require. + Setting this option implies that 'rightleft' will not be set when + 'arabic' is set and the value of 'arabicshape' will be ignored. + Note that setting 'termbidi' has the immediate effect that + 'arabicshape' is ignored, but 'rightleft' isn't changed automatically. + This option is reset when the GUI is started. + For further details see |arabic.txt|. + + *'termencoding'* *'tenc'* +'termencoding' 'tenc' string (default ""; with GTK+ 2 GUI: "utf-8"; with + Macintosh GUI: "macroman") global {only available when compiled with the |+multi_byte| feature} @@ -5416,13 +6661,22 @@ A jump table for the options with a short description can be found at |Q_op|. encoding the keyboard produces and the display will understand. For the GUI it only applies to the keyboard ('encoding' is used for the display). + In the Win32 console version the default value is the console codepage + when it differs from the ANSI codepage. + *E617* + Note: This does not apply to the GTK+ 2 GUI. After the GUI has been + successfully initialized, 'termencoding' is forcibly set to "utf-8". + Any attempts to set a different value will be rejected, and an error + message is shown. + For the Win32 GUI 'termencoding' is not used for typed characters, + because the Win32 system always passes Unicode characters. When empty, the same encoding is used as for the 'encoding' option. This is the normal value. Not all combinations for 'termencoding' and 'encoding' are valid. See |encoding-table|. - The value for this option must be supported by iconv(). When iconv() - cannot handle the value, no conversion will be done and you will - probably experience problems with non-ASCII characters. + The value for this option must be supported by internal conversions or + iconv(). When this is not possible no conversion will be done and you + will probably experience problems with non-ASCII characters. Example: You are working with the locale set to euc-jp (Japanese) and want to edit a UTF-8 file: > :let &termencoding = &encoding @@ -5467,6 +6721,7 @@ A jump table for the options with a short description can be found at |Q_op|. this. 'textwidth' is set to 0 when the 'paste' option is set. When 'textwidth' is zero, 'wrapmargin' may be used. See also 'formatoptions' and |ins-textwidth|. + When 'formatexpr' is set it will be used to break the line. NOTE: This option is set to 0 when 'compatible' is set. *'thesaurus'* *'tsr'* @@ -5474,7 +6729,7 @@ A jump table for the options with a short description can be found at |Q_op|. global or local to buffer |global-local| {not in Vi} List of file names, separated by commas, that are used to lookup words - for thesesaurus completion commands |i_CTRL-X_CTRL-T|. Each line in + for thesaurus completion commands |i_CTRL-X_CTRL-T|. Each line in the file should contain words with similar meaning, separated by non-keyword characters (white space is preferred). Maximum line length is 510 bytes. @@ -5538,18 +6793,20 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} The time in milliseconds that is waited for a key code or mapped key - sequence to complete. Normally only 'timeoutlen' is used and - 'ttimeoutlen' is -1. When a different timeout value for key codes is - desired set 'ttimeoutlen' to a non-negative number. + sequence to complete. Also used for CTRL-\ CTRL-N and CTRL-\ CTRL-G + when part of a command has been typed. + Normally only 'timeoutlen' is used and 'ttimeoutlen' is -1. When a + different timeout value for key codes is desired set 'ttimeoutlen' to + a non-negative number. ttimeoutlen mapping delay key code delay ~ < 0 'timeoutlen' 'timeoutlen' >= 0 'timeoutlen' 'ttimeoutlen' The timeout only happens when the 'timeout' and 'ttimeout' options - tell so. A useful setting would be + tell so. A useful setting would be > :set timeout timeoutlen=3000 ttimeoutlen=100 - (time out on mapping after three seconds, time out on key codes after +< (time out on mapping after three seconds, time out on key codes after a tenth of a second). *'title'* *'notitle'* @@ -5563,7 +6820,7 @@ A jump table for the options with a short description can be found at |Q_op|. filename [+=-] (path) - VIM Where: filename the name of the file being edited - - indicates the file canot be modified, 'ma' off + - indicates the file cannot be modified, 'ma' off + indicates the file was modified = indicates the file is read-only =+ indicates the file is read-only and modified @@ -5613,6 +6870,8 @@ A jump table for the options with a short description can be found at |Q_op|. This option will be used for the window title when exiting Vim if the original title cannot be restored. Only happens if 'title' is on or 'titlestring' is not empty. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'titlestring'* 'titlestring' string (default "") global @@ -5651,6 +6910,8 @@ A jump table for the options with a short description can be found at |Q_op|. possible values are: icons Toolbar buttons are shown with icons. text Toolbar buttons shown with text. + horiz Icon and text of a toolbar button are + horizontally arranged. {only in GTK+ 2 GUI} tooltips Tooltips are active for toolbar buttons. Tooltips refer to the popup help text which appears after the mouse cursor is placed over a toolbar button for a brief moment. @@ -5667,6 +6928,23 @@ A jump table for the options with a short description can be found at |Q_op|. :set guioptions-=T < Also see |gui-toolbar|. + *'toolbariconsize'* *'tbis'* +'toolbariconsize' 'tbis' string (default "small") + global + {not in Vi} + {only in the GTK+ 2 GUI} + Controls the size of toolbar icons. The possible values are: + tiny Use tiny toolbar icons. + small Use small toolbar icons (default). + medium Use medium-sized toolbar icons. + large Use large toolbar icons. + The exact dimensions in pixels of the various icon sizes depend on + the current theme. Common dimensions are large=32x32, medium=24x24, + small=20x20 and tiny=16x16. + + If 'toolbariconsize' is empty, the global default size as determined + by user preferences or the current theme is used. + *'ttybuiltin'* *'tbi'* *'nottybuiltin'* *'notbi'* 'ttybuiltin' 'tbi' boolean (default on) global @@ -5710,10 +6988,12 @@ A jump table for the options with a short description can be found at |Q_op|. "s" = button state "c" = column plus 33 "r" = row plus 33 + This only works up to 223 columns! See "dec" for a + solution. xterm2 Works like "xterm", but with the xterm reporting the mouse position while the mouse is dragged. This works much faster and more precise. Your xterm must at - least at patchlevel 88 / XFree 3.3.3 for this to + least at patchlevel 88 / XFree 3.3.3 for this to work. See below for how Vim detects this automatically. *netterm-mouse* @@ -5723,6 +7003,8 @@ A jump table for the options with a short description can be found at |Q_op|. *dec-mouse* dec DEC terminal mouse handling. The mouse generates a rather complex sequence, starting with "<Esc>[". + This is also available for an Xterm, if it was + configured with "--enable-dec-locator". *jsbterm-mouse* jsbterm JSB term mouse handling. *pterm-mouse* @@ -5788,7 +7070,7 @@ A jump table for the options with a short description can be found at |Q_op|. Vim with the "-n" option, see |startup|. When editing in readonly mode this option will be initialized to 10000. The swapfile can be disabled per buffer with |'swapfile'|. - When 'updatecount' is set from non-zero to zero, swap files are + When 'updatecount' is set from zero to non-zero, swap files are created for all buffers that have 'swapfile' set. When 'updatecount' is set to zero, existing swap files are not deleted. Also see |'swapsync'|. @@ -5812,15 +7094,32 @@ A jump table for the options with a short description can be found at |Q_op|. Currently, these messages are given: >= 1 When the viminfo file is read or written. >= 2 When a file is ":source"'ed. - >= 5 Every searched tags file. + >= 5 Every searched tags file and include file. >= 8 Files for which a group of autocommands is executed. >= 9 Every executed autocommand. - >= 12 Every executed function - >= 15 Every executed Ex command (truncated at 200 characters) + >= 12 Every executed function. + >= 13 When an exception is thrown, caught, finished, or discarded. + >= 14 Anything pending in a ":finally" clause. + >= 15 Every executed Ex command (truncated at 200 characters). This option can also be set with the "-V" argument. See |-V|. This option is also set by the |:verbose| command. + When the 'verbosefile' option is set then the verbose messages are not + displayed. + + *'verbosefile'* *'vfile'* +'verbosefile' 'vfile' string (default empty) + global + {not in Vi} + When not empty all messages are written in a file with this name. + When the file exists messages are appended. + Writing to the file ends when Vim exits or when 'verbosefile' is made + empty. + Setting 'verbosefile' to a new value is like making it empty first. + The difference with |:redir| is that verbose messages are not + displayed when 'verbosefile' is set. + *'viewdir'* *'vdir'* 'viewdir' 'vdir' string (default for Amiga, MS-DOS, OS/2 and Win32: "$VIM/vimfiles/view", @@ -5833,7 +7132,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the +mksession feature} Name of the directory where to store files for |:mkview|. - This option cannot be set from a |modeline|, for security reasons. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'viewoptions'* *'vop'* 'viewoptions' 'vop' string (default: "folds,options,cursor") @@ -5849,6 +7149,8 @@ A jump table for the options with a short description can be found at |Q_op|. fold options options options and mappings local to a window or buffer (not global values for local options) + slash backslashes in file names replaced with forward + slashes unix with Unix end-of-line format (single <NL>), even when on Windows or DOS @@ -5856,12 +7158,11 @@ A jump table for the options with a short description can be found at |Q_op|. with Unix. The Unix version of Vim cannot source dos format scripts, but the Windows version of Vim can source unix format scripts. - *'viminfo'* *'vi'* - + *'viminfo'* *'vi'* *E526* *E527* *E528* 'viminfo' 'vi' string (Vi default: "", Vim default for MS-DOS, - Windows and OS/2: '20,"50,h,rA:,rB:, - for Amiga: '20,"50,h,rdf0:,rdf1:,rdf2: - for others: '20,"50,h) + Windows and OS/2: '20,<50,s10,h,rA:,rB:, + for Amiga: '20,<50,s10,h,rdf0:,rdf1:,rdf2: + for others: '20,<50,s10,h) global {not in Vi} {not available when compiled without the |+viminfo| @@ -5878,33 +7179,41 @@ A jump table for the options with a short description can be found at |Q_op|. ! When included, save and restore global variables that start with an uppercase letter, and don't contain a lowercase letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis" - and "_K_L_M" are not. - " Maximum number of lines saved for each register. If zero then - registers are not saved. When not included, all lines are - saved. Dont forget to put a backslash before the ", otherwise - it will be recognized as the start of a comment! + and "_K_L_M" are not. Only String and Number types are + stored. + " Maximum number of lines saved for each register. Old name of + the '<' item, with the disadvantage that you need to put a + backslash before the ", otherwise it will be recognized as the + start of a comment! % When included, save and restore the buffer list. If Vim is started with a file name argument, the buffer list is not restored. If Vim is started without a file name argument, the buffer list is restored from the viminfo file. Buffers without a file name and buffers for help files are not written to the viminfo file. + When followed by a number, the number specifies the maximum + number of buffers that are stored. Without a number all + buffers are stored. ' Maximum number of previously edited files for which the marks are remembered. This parameter must always be included when 'viminfo' is non-empty. - Including this item also means that the |jumplist| is stored - in the viminfo file. + Including this item also means that the |jumplist| and the + |changelist| are stored in the viminfo file. / Maximum number of items in the search pattern history to be saved. If non-zero, then the previous search and substitute patterns are also saved. When not included, the value of 'history' is used. : Maximum number of items in the command-line history to be saved. When not included, the value of 'history' is used. + < Maximum number of lines saved for each register. If zero then + registers are not saved. When not included, all lines are + saved. '"' is the old name for this item. + Also see the 's' item below: limit specified in Kbyte. @ Maximum number of items in the input-line history to be saved. When not included, the value of 'history' is used. c When included, convert the text in the viminfo file from the 'encoding' used when writing the file to the current - 'encoding'. See |viminfo-encoding|. + 'encoding'. See |viminfo-encoding|. f Whether file marks need to be stored. If zero, file marks ('0 to '9, 'A to 'Z) are not stored. When not present or when non-zero, they are all stored. '0 is used for the current @@ -5921,17 +7230,23 @@ A jump table for the options with a short description can be found at |Q_op|. ','). This parameter can be given several times. Each specifies the start of a path for which no marks will be stored. This is to avoid removable media. For MS-DOS you - could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:". Case is + could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:". You can + also use it for temp files, e.g., for Unix: "r/tmp". Case is ignored. Maximum length of each 'r' argument is 50 characters. + s Maximum size of an item in Kbyte. If zero then registers are + not saved. Currently only applies to registers. The default + "s10" will exclude registers with more than 10 Kbyte of text. + Also see the '<' item above: line count limit. Example: > - :set viminfo='50,\"1000,:0,n~/vim/viminfo + :set viminfo='50,<1000,s100,:0,n~/vim/viminfo < '50 Marks will be remembered for the last 50 files you edited. - "1000 Contents of registers (up to 1000 lines each) will be + <1000 Contents of registers (up to 1000 lines each) will be remembered. + s100 Registers with more than 100 Kbyte text are skipped. :0 Command-line history will not be saved. n~/vim/viminfo The name of the file to use is "~/vim/viminfo". no / Since '/' is not specified, the default will be used, @@ -5940,10 +7255,14 @@ A jump table for the options with a short description can be found at |Q_op|. no % The buffer list will not be saved nor read back. no h 'hlsearch' highlighting will be restored. - This option cannot be set from a |modeline|, for security reasons. + When setting 'viminfo' from an empty value you can use |:rviminfo| to + load the contents of the file, this is not done automatically. + + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'virtualedit'* *'ve'* -'virtualedit' 've' string (default "") +'virtualedit' 've' string (default "") global {not in Vi} {not available when compiled without the @@ -5952,10 +7271,22 @@ A jump table for the options with a short description can be found at |Q_op|. block Allow virtual editing in Visual block mode. insert Allow virtual editing in Insert mode. all Allow virtual editing in all modes. + onemore Allow the cursor to move just past the end of the line + Virtual editing means that the cursor can be positioned where there is no actual character. This can be halfway into a Tab or beyond the end of the line. Useful for selecting a rectangle in Visual mode and editing a table. + "onemore" is not the same, it will only allow moving the cursor just + after the last character of the line. This makes some commands more + consistent. Previously the cursor was always past the end of the line + if the line was empty. But it is far from Vi compatible. It may also + break some plugins or Vim scripts. For example because |l| can move + the cursor after the last character. Use with care! + Using the |$| command will move to the last character in the line, not + past it. This may actually move the cursor to the left! + It doesn't make sense to combine "all" with "onemore", but you will + not get a warning for it. *'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep* 'visualbell' 'vb' boolean (default off) @@ -5982,7 +7313,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'weirdinvert' 'wiv' boolean (default off) global {not in Vi} - This option has the same effect as the 't_xs' termcap option. + This option has the same effect as the 't_xs' terminal option. It is provided for backwards compatibility with version 4.x. Setting 'weirdinvert' has the effect of making 't_xs' non-empty, and vice versa. Has no effect when the GUI is running. @@ -5991,14 +7322,14 @@ A jump table for the options with a short description can be found at |Q_op|. 'whichwrap' 'ww' string (Vim default: "b,s", Vi default: "") global {not in Vi} - Allow specified keys that move the cursor left/right to wrap to the + Allow specified keys that move the cursor left/right to move to the previous/next line when the cursor is on the first/last character in the line. Concatenate characters to allow this for these keys: char key mode ~ b <BS> Normal and Visual s <Space> Normal and Visual - h "h" Normal and Visual - l "l" Normal and Visual + h "h" Normal and Visual (not recommended) + l "l" Normal and Visual (not recommended) < <Left> Normal and Visual > <Right> Normal and Visual ~ "~" Normal @@ -6014,8 +7345,9 @@ A jump table for the options with a short description can be found at |Q_op|. "dh". If you use this, you may also want to use the mapping ":map <BS> X" to make backspace delete the character in front of the cursor. - When 'l' is included, you get a side effect: "yl" on an empty line - will include the <EOL>, so that "p" will insert a new line. + When 'l' is included and it is used after an operator at the end of a + line then it will not move to the next line. This makes "dl", "cl", + "yl" etc. work normally. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. @@ -6037,8 +7369,8 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} 'wildcharm' works exactly like 'wildchar', except that it is - recognized when used inside a macro. You can find "spare" command-line - keys suitable for this option by looking at |ex-edit-index|. Normally + recognized when used inside a macro. You can find "spare" command-line + keys suitable for this option by looking at |ex-edit-index|. Normally you'll never actually type 'wildcharm', just use it in mappings that automatically invoke completion mode, e.g.: > :set wcm=<C-Z> @@ -6128,7 +7460,7 @@ A jump table for the options with a short description can be found at |Q_op|. Examples: > :set wildmode=full -< Complete first full match, next match, etc. (the default) > +< Complete first full match, next match, etc. (the default) > :set wildmode=longest,full < Complete longest common string, then each full match > :set wildmode=list:full @@ -6138,6 +7470,21 @@ A jump table for the options with a short description can be found at |Q_op|. :set wildmode=longest,list < Complete longest common string, then list alternatives. + *'wildoptions'* *'wop'* +'wildoptions' 'wop' string (default "") + global + {not in Vi} + {not available when compiled without the |+wildignore| + feature} + A list of words that change how command line completion is done. + Currently only one word is allowed: + tagfile When using CTRL-D to list matching tags, the kind of + tag and the file of the tag is listed. Only one match + is displayed per line. Often used tag kinds are: + d #define + f function + Also see |cmdline-completion|. + *'winaltkeys'* *'wak'* 'winaltkeys' 'wak' string (default "menu") global @@ -6157,10 +7504,24 @@ A jump table for the options with a short description can be found at |Q_op|. keys can be mapped. If the menu is disabled by excluding 'm' from 'guioptions', the ALT key is never used for the menu. - In the Win32 version, the <F10> key is handled like this too, since - Windows uses it to select a menu. - - *'winheight'* *'wh'* + This option is not used for <F10>; on Win32 and with GTK <F10> will + select the menu, unless it has been mapped. + + *'window'* *'wi'* +'window' 'wi' number (default screen height - 1) + global + Window height. Do not confuse this with the height of the Vim window, + use 'lines' for that. + Used for |CTRL-F| and |CTRL-B| when there is only one window and the + value is smaller than 'lines' minus one. The screen will scroll + 'window' minus two lines, with a minimum of one. + When 'window' is equal to 'lines' minus one CTRL-F and CTRL-B scroll + in a much smarter way, taking care of wrapping lines. + When resizing the Vim window, the value is smaller than 1 or more than + or equal to 'lines' it will be set to 'lines' minus 1. + {Vi also uses the option to specify the number of displayed lines} + + *'winheight'* *'wh'* *E591* 'winheight' 'wh' number (default 1) global {not in Vi} @@ -6170,12 +7531,36 @@ A jump table for the options with a short description can be found at |Q_op|. minimum, Vim will use fewer lines if there is not enough room. If the current window is smaller, its size is increased, at the cost of the height of other windows. Set it to 999 to make the current window - always fill the screen. Set it to a small number for normal editing. + always fill the screen (although this has the drawback that ":all" + will create only two windows). Set it to a small number for normal + editing. + Minimum value is 1. The height is not adjusted after one of the commands to change the height of the current window. 'winheight' applies to the current window. Use 'winminheight' to set the minimal height for other windows. + *'winfixheight'* *'wfh'* *'nowinfixheight'* *'nowfh'* +'winfixheight' 'wfh' boolean (default off) + local to window + {not in Vi} + {not available when compiled without the +windows + feature} + Keep the window height when windows are opened or closed and + 'equalalways' is set. Set by default for the |preview-window| and + |quickfix-window|. + The height may be changed anyway when running out of room. + + *'winfixwidth'* *'wfw'* *'nowinfixwidth'* *'nowfw'* +'winfixwidth' 'wfw' boolean (default off) + local to window + {not in Vi} + {not available when compiled without the +windows + feature} + Keep the window width when windows are opened or closed and + 'equalalways' is set. + The width may be changed anyway when running out of room. + *'winminheight'* *'wmh'* 'winminheight' 'wmh' number (default 1) global @@ -6209,7 +7594,7 @@ A jump table for the options with a short description can be found at |Q_op|. large number, it will cause errors when opening more than a few windows. A value of 0 to 12 is reasonable. - *'winwidth'* *'wiw'* + *'winwidth'* *'wiw'* *E592* 'winwidth' 'wiw' number (default 20) global {not in Vi} @@ -6248,14 +7633,18 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer Number of characters from the right window border where wrapping starts. When typing text beyond this limit, an <EOL> will be inserted - and inserting continues on the next line. When 'textwidth' is - non-zero, this option is not used. See also 'formatoptions' and - |ins-textwidth|. {Vi: works differently and less usefully} + and inserting continues on the next line. + Options that add a margin, such as 'number' and 'foldcolumn', cause + the text width to be further reduced. This is Vi compatible. + When 'textwidth' is non-zero, this option is not used. + See also 'formatoptions' and |ins-textwidth|. {Vi: works differently + and less usefully} *'wrapscan'* *'ws'* *'nowrapscan'* *'nows'* 'wrapscan' 'ws' boolean (default on) *E384* *E385* global - Searches wrap around the end of the file. + Searches wrap around the end of the file. Also applies to |]s| and + |[s|, searching for spelling mistakes. *'write'* *'nowrite'* 'write' boolean (default on) diff --git a/ja/options.jax b/ja/options.jax index 478ea43a5..b85ce59d9 100644 --- a/ja/options.jax +++ b/ja/options.jax @@ -1,8 +1,9 @@ COMMENT: 全オプション解説 -STATUS: finished 6.1 +STATUS: finished 7.0 TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*options.txt* For Vim version 6.1. Last change: 2002 Apr 09 +*options.txt* For Vim version 7.0. Last change: 2006 May 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -43,7 +44,7 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ 訳語で、さらに相応しいものがあればご提案を下さい。) ============================================================================== -1. オプションの設定 *set-option* +1. オプションの設定 *set-option* *E764* *:se* *:set* :se[t] 既定値と違う値のオプションを全て表示する。 @@ -56,6 +57,7 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ GUIバージョンでターミナルコードを変更するのは便利とは 言えない... + *E518* *E519* :se[t] {option}? {option} の値を表示する。 :se[t] {option} 切替オプション: セット、すなわちオンに切り替える。 @@ -77,10 +79,10 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ 定する。オプション 'term', 'lines' と 'columns' の値は 変更されない。 {Vi にはない} + *:set-args* *E487* *E521* :se[t] {option}={value} または :se[t] {option}:{value} 数値および文字列オプションの値を {value} に設定する。 - *:set-args* 数値オプションの値は、10進数、(0x を頭に付けて) 16進数、 または ('0' を頭に付けて) 8進数で指定できる (16進数と8 進数は、関数 strtol() を持つマシンでのみ利用可能)。 @@ -100,10 +102,8 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ プションがコンマ区切りのリストのときは、値が空でない限 り、元の値と {value} の間にコンマが付け加えられる。 オプションがフラグのリストであるときは、冗長なフラグは - 取り除かれる。そうでないときは、重複した値に関してチェッ - クはない。それを防ぐためには、先に値を取り除けばよい。 - 例: > - :set guioptions-=T guioptions+=T + 取り除かれる。すでに入っているフラグを加えようとしたと + きは、そのオプションの値は変わらない。 < 上の |:set-args| も参照。 {Vi にはない} @@ -150,9 +150,10 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ はオプション名を表示しても、必ずしもその値までは表示しない。 オプションが関数やユーザコマンド、オートコマンド autocommand の実行中に設定さ れたときは、それらが定義されているスクリプト名が報告される。 +Note 'compatible'を設定すると副作用として他のオプションも設定されることがある。 {Vi mが |+eval| 機能付きでコンパイルされたときのみ有効} - *:set-termcap* + *:set-termcap* *E522* Termcap オプションを設定するには、{option} に "t_xx" の形式を使ってもよい。こ れは termcap による値を上書きする。これはマッピングの中で利用することもできる。 "xx" の部分が特別な文字を含むときは、<t_xx> の形式を使うこと: > @@ -163,6 +164,9 @@ Termcap オプションを設定するには、{option} に "t_xx" の形式を (ここで ^[ は本物の <Esc> である。入力には CTRL-V <Esc> を使うこと) マッピングの利点は、どんなときにも機能することである。 +t_xxの形のオプションは安全上の理由により、モードライン|modeline|やサンドボック +ス|sandbox|では設定できない。 + コマンド ":set" によるリスト表示の外見は、Viとは違う。長い文字列オプションはリ ストの終わりに現れる。オプションの数も極めて多い。コマンド "set all" による表 示は、画面に収まらないだろう。そうしたとき、Vimは「継続」プロンプト @@ -185,6 +189,10 @@ Termcap オプションを設定するには、{option} に "t_xx" の形式を "there" に設定している。 > :set titlestring=hi|set iconstring=there +また、ダブルクォート文字はコメントを開始する。オプションの値に'"'を含めるには +'\"'と書くこと。次の例は'titlestring'を'hi "there"'に設定する: > + :set titlestring=hi\ \"there\" + MS-DOSとWin32では、ファイル名の中の '\' は大抵は取り除かれない。正確に言うと、 値にファイル名を取るオプション (環境変数が展開されるもの) では、通常のファイル 名に使われる文字の前の '\' は取り除かれない。しかし、特別な文字 (空白、'\' そ @@ -199,6 +207,7 @@ MS-DOSとWin32では、ファイル名の中の '\' は大抵は取り除かれ 通りのものではないだろう。このやり方は避けること。 *add-option-flags* *remove-option-flags* + *E539* *E550* *E551* *E552* 値がフラグのリストからなるオプションもある。そういったオプションにフラグを追加 したいとき、既存の値を変更したくないならば、こうすること。 > :set guioptions+=a @@ -210,7 +219,7 @@ Note フラグは1個ずつ追加したり取り除いたりするよう注意 ぜなら、"ba" という文字列は現れていないからである。 *:set_env* *expand-env* *expand-environment-var* -ほとんどの文字列オプションで、環境変数は展開される。'$' とそれに続く環境変数名 +特定の文字列オプションでは環境変数が展開される。'$' とそれに続く環境変数名 が、その値に置き換えられる (その環境変数が存在するとき)。環境変数が存在しない とき、'$' とそれに続く変数名は変更を受けない。識別子に使えない non-id 文字 (英 字、数字、'_' 以外) なら、どれでも環境変数名の後に続けることができる。識別子に @@ -293,8 +302,12 @@ opt+=値" でオプションに文字列を追加したりするときには、 ない)。 {Vi にはない} -:setl[ocal] {option}< {option} のローカルな値をグローバルな値に設定する。 - {Vi にはない} +:setl[ocal] {option}< 値をコピーすることによって{option}のローカルな値をグロ + ーバルな値と同じにする。{Vi にはない} + +:se[t] {option}< ローカルな値を空にすることによって{option}のローカルな + 値をグローバルな値と同じにする。|global-local|のオプショ + ンに対してだけ意味がある。{Vi にはない} *:setg* *:setglobal* :setg[lobal] ... コマンド ":set" と似ているが、ローカルオプションのグロー @@ -312,18 +325,18 @@ opt+=値" でオプションに文字列を追加したりするときには、 :set オプション=値 設定される 設定される :setlocal オプション=値 なし 設定される :setglobal オプション=値 設定される なし - :set オプション なし 表示される - :setlocal オプション なし 表示される -:setglobal オプション 表示される なし + :set オプション? なし 表示される + :setlocal オプション? なし 表示される +:setglobal オプション? 表示される なし ローカルな値を持つグローバルオプション *global-local* -オプションがグローバルであるというのは、一つの値を全てのバッファに用いるような -場合である。いくつかのグローバルオプションでは、ローカルな別の値を持てると便利 -である。ローカルな値は、コマンド ":setlocal" で設定できる。するとコマンド -":setlocal" を実行したバッファではローカルな値が用いられるが、他のバッファでは -引き続きグローバルな値が用いられる。 +オプションがグローバルであるというのは、一つの値を全てのバッファとウィンドウに +用いるような場合である。いくつかのグローバルオプションでは、ローカルな別の値を +持てると便利である。ローカルな値は、コマンド ":setlocal" で設定できる。すると +コマンド":setlocal" を実行したバッファとウィンドウではローカルな値が用いられる +が、他のバッファでは引き続きグローバルな値が用いられる。 例えば、あなたは2つのウィンドウを開き、両方でC言語のソースファイルを編集してい るとする。グローバルなオプション 'makeprg' は両方に適用される。そこでウィンド @@ -340,10 +353,15 @@ opt+=値" でオプションに文字列を追加したりするときには、 ただし、この方法は文字列オプションにしか使えない。切替オプションには、次のよう に "<" フラグを使う必要がある。 > :setlocal autoread< -Note: 切替オプションの変更で "<" を使うと、グローバルな値がローカルな値にコピー -されるが、それはグローバルな値を使うようにするのとは少し違うことに注意 (これは -後でグローバルな値を変更する際に問題になる。--訳注: グローバルな値が変更されて -も、"<" でコピーした値までは変更されない。あくまでもローカルな値だから)。 +Note: 非切替オプションの変更で "<" を使うと、グローバルな値がローカルな値にコ +ピーされるが、それはグローバルな値を使うようにするのとは少し違うことに注意 (こ +れは後でグローバルな値が変更されたときに問題になる。--訳注: グローバルな値が変 +更されても、"<" でコピーした値までは変更されない。あくまでもローカルな値だか +ら)。次を使うこともできる: > + :set path< +これは 'path'のローカルな値を空にし、グローバルな値が使われるようにする。すな +わち、次と同じことをする: > + :setlocal path= Note: 将来、値にグローバルとローカルの区別のあるオプションが増えたら、グローバ ルオプションにコマンド ":setlocal" を使ったときの結果が変わるかもしれない。 @@ -391,6 +409,8 @@ Unix系のシステムでは "${HOME}" という形式も使える。ここで { 使えない文字 (訳注: 上を参照) が入ってもよい。 Note これをコマンド "gf" のため に使いたいなら、文字 '{' と '}' をオプション 'isfname' に追加する必要がある。 +NOTE: 環境変数と"~/"の展開はコマンド":set"のときのみ行われる。":let"でオプショ +ンに値を代入するときは展開されない。 Note 展開されるオプションの値の長さ制限に注意。システムごとに異なるが、大抵は 256文字や1024文字等の長さである (訳注: これは半角の場合で、全角では半分)。 @@ -462,7 +482,7 @@ Note 展開されるオプションの値の長さ制限に注意。システム の先頭と末尾の数行ずつがモードラインとして読み込まれる。それをここで説明す る。 - *modeline* *vim:* *vi:* *ex:* + *modeline* *vim:* *vi:* *ex:* *E520* モードラインには2つの形式がある。1つ目の形式は次の通りである。 [text]{white}{vi:|vim:|ex:}[white]{options} @@ -473,25 +493,25 @@ Note 展開されるオプションの値の長さ制限に注意。システム {options} オプション設定が、空白か ':' で区切られて並んだもので、':' の 間の部分はコマンド ":set" の引数である -例: > - vi:noai:sw=3 ts=6 +例: + vi:noai:sw=3 ts=6 ~ 2つ目の形式は次の通りである (Viのヴァージョンによってはこの形式と互換性がある)。 - [text]{white}{vi:|vim:|ex:}[white]set {options}:[text] + [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text] [text] 任意のテキスト、なくても良い {white} 1個以上の余白 (<Space> または <Tab>) {vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 [white] 空白、なくても良い -set "set " という文字列 ( NOTE 終わりの空白に注意) +se[t] "set "または"se " という文字列 ( NOTE 終わりの空白に注意) {options} オプション設定が空白で区切られて並んだもので、コマンド ":set" の引数である : コロン [text] 任意のテキスト、なくても良い -例: > - /* vim: set ai tw=75: */ +例: + /* vim: set ai tw=75: */ ~ "vi:" または "|vim:|" または "ex:" の前には空白が必要である。これが "lex:" 等 の普通の言葉を誤認する可能性を低めている。ただし例外があり、 "vi:" と "vim:" @@ -499,12 +519,16 @@ set "set " という文字列 ( NOTE 終わりの空白に注意) ドラインとは見なされない ("example:" の略かもしれないから)。 *modeline-local* -オプションはコマンド ":setlocal" 等で設定できる。そうして設定した値は、そのと -きウィンドウで開かれていたバッファにのみ適用される (訳注: 違うかもしれない。原 -文は The new value only applies to the buffer that contains the window.)。モー -ドラインからグローバルオプションを設定することは不可能ではないが、普通そういう -ことはしない。2つのウィンドウを開いていて、それぞれのファイルが同じグローバル -オプションを違う値に設定しようとしたときは、後に開かれたウィンドウが優先される。 +オプションは ":setlocal" などで設定できる。そうして設定した値は、そのバッファ +とそれを開いているウィンドウにのみ適用される。モードラインからグローバルオプショ +ンを設定することは不可能ではないが、普通そういうことはしない。2つのウィンドウ +を開いていて、それぞれのファイルが同じグローバルオプションを違う値に設定しよう +としたときは、後に開かれたウィンドウが優先される。 + +既に読み込まれているファイルを開くときは、モードラインからはウィンドウローカル +なオプションだけが設定される。つまり、ファイルを開いた後に手動でバッファローカ +ルなオプションを変更したら、そのバッファを別なウィンドウで開いてもそのオプショ +ンは変更されないが、ウィンドウローカルなオプションは変更される。 *modeline-version* モードラインの内容が、Vimのバージョンによって使用可能だったり不可能だったりす @@ -516,11 +540,11 @@ set "set " という文字列 ( NOTE 終わりの空白に注意) {vers} に 600 を指定するとVim 6.0を表す (メジャー・バージョンナンバーの100倍足 すマイナー・バージョンナンバー)。 例えば、Vim 6.0またはそれより新しいバージョンでのみモードラインを使うにはこう -する。 > - /* vim600: set foldmethod=marker: */ +する。 + /* vim600: set foldmethod=marker: */ ~ Vim 5.7より古いバージョンでのみモードラインを使うにはこうする (訳注: 原典では -vim<570とあったが、これは誤りだろう)。 > - /* vim<507: set sw=4: */ +vim<570とあったが、これは誤りだろう)。 + /* vim<507: set sw=4: */ ~ "vim" と ":" の間に空白があってはならない。 @@ -529,16 +553,16 @@ vim<570とあったが、これは誤りだろう)。 > 探さない。 Note 1番目の形式では、行全体がオプション指定に使われることに注意。そのため次の -ようにすると、行末の "*/" のためにエラーメッセージが現れる。 > - /* vi:ts=4: */ -その代わり、こうすればよい。 > - /* vi:set ts=4: */ +ようにすると、行末の "*/" のためにエラーメッセージが現れる。 + /* vi:ts=4: */ ~ +その代わり、こうすればよい。 + /* vi:set ts=4: */ ~ エラーが発見されると、その行の残りは無視される。 コマンド "set" の引数に ':' を含めたいときは、その前に '\' を置くこと。':' の -前の '\' は取り除かれる。例: > - /* vi:set dir=c\:\tmp: */ +前の '\' は取り除かれる。例: + /* vi:set dir=c\:\tmp: */ ~ これはオプション 'dir' を "c:\tmp" に変更する。':' の前に '\' が置かれたとき、 取り除かれるのは1個だけである。だからオプションの値に "\:" を含めたいなら "\\:" を指定すること。 @@ -592,6 +616,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる プションであるようなものである。フラグ 's' もフラグ 'S' も含まれていないときは、 バッファが作られるときに、その前にアクティブだったバッファでの値がコピーされる。 +隠しオプション *hidden-options* + +全てのオプションが全てのバージョンでサポートされているわけではない。これは有効 +にされている機能とシステムにもよる。これに関しての注意は以下の波括弧の中にある。 +もしあるオプションがサポートされていなくても、そのオプションへの設定はエラーに +ならず成功する。これを隠しオプションと呼ぶ。しかし隠しオプションの値は保持され +ていないため、取得することはできない。 + +オプション"foo"が":set"で設定できるかどうか判定するにはこのようにする: > + if exists('&foo') +これは隠しオプションに対してもtrueを返す。オプション"foo"が本当にサポートされ +ているかを判定するにはこのようにする: > + if exists('+foo') +< *E355* |Q_op| にはオプションの短い説明付きの表があり、そこからヘルプにジャンプできる。 @@ -636,16 +674,116 @@ Note 1番目の形式では、行全体がオプション指定に使われる 言語である Farsi またはヘブライ語モード (右から左に書く言語のモード)を 切り替えた上でVimを開始するのに便利である。|farsi.txt| を参照。 + *'ambiwidth'* *'ambw'* +'ambiwidth' 'ambw' 文字列 (既定では"single") + グローバル + {Vi にはない} + {Vi mが|+multi_byte|機能付きでコンパイルされたときのみ + 有効} + 'encoding'が"utf-8"などユニコードエンコーディングのときのみ効果がある。 + East Asian Width Class Ambiguous な文字(ユーロ、登録商標記号、著作権記 + 号、ギリシャ文字、キリル文字など)をどう扱うかを定める。 + + 現在のところ、設定可能な値は次の2通りである: + "single": US-ASCIIの文字と同じ幅を使う。これはほとんどのユーザに + とって期待どおりになる。 + "double": ASCII文字の2倍の幅を使う。 + + これらの文字のグリフの幅を、旧い/伝統的なCJKエンコーディングで何オク + テットを占めるかだけによって決めているCJKフォントがたくさんある。その + エンコーディングではユーロ、登録商標記号、ギリシャ文字、キリル文字は2 + オクテットで表現されるので、それらのフォントはこれらの文字に「wideな」 + グリフを当てている。これはテキストファイルで表を作るための罫線文字にも + あてはまる。そのためGUI版のVimにCJKフォントを使うときや、CJKフォント + を使うターミナル(エミュレータ)の中でVimを実行するとき(またはオプション + "-cjkwidth"つきで起動されたxtermの中でVimを実行するとき)にはこのオプ + ションを"double"にして、Vimが認識する幅をフォントのグリフの幅に合わせ + なければならない。CJKのWindows 9x/MEやWindows 2k/XPでもシステムのロケー + ルがCJKロケールのどれかに設定されている場合は多分"double"にしなければ + ならないだろう。 + Unicode Standard Annex #11 (http://www.unicode.org/reports/tr11)を参照。 + + *'antialias'* *'anti'* *'noantialias'* *'noanti'* +'antialias' 'anti' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mがMac OS XでGUIを有効にしてコンパイルされたときの + み有効} + このオプションはMac OS X v10.2以降の上でGUI版のVimを使うときだけ効果が + ある。これがオンであるとなめらかな(アンチエイリアスされた)フォントが使 + われる。このフォントはある種のディスプレイ上、あるサイズでは読み易くな + る。 + 'guifont'が既定値(空文字列)のときこのオプションを設定すると問題が発生 + することがある。 + + *'autochdir'* *'acd'* *'noautochdir'* *'noacd'* +'autochdir' 'acd' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {Vi mが|+netbeans_intg| または |+sun_workshop| 機能付き + でコンパイルされたときのみ有効} + これがオンであるとファイルを開くとき、バッファを切り替えるとき、バッファ + を削除するとき、ウィンドウを開閉するときに毎回作業ディレクトリが変更さ + れる。開かれた/選択されたファイルを含んでいるディレクトリがカレントデ + ィレクトリになる。 + このオプションはSun ONE Studio 4 Enterprise Editionとともにリリースさ + れたVimとの後方互換性のために提供されている。 + Note: このオプションがオンになっていると動かないプラグインがある。 + + *'arabic'* *'arab'* *'noarabic'* *'noarab'* +'arabic' 'arab' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vi mが|+arabic|機能付きでコンパイルされたときのみ + 有効} + アラビア語のテキストを編集するときにこのオプションを設定することができ + る。 + このオプションを設定すると次のことが行われる: + - 'termbidi'がオンでない限り、オプション'rightleft'をオンにする。 + - 'termbidi'がオンでない限り、オプション'arabicshape'をオンにする。 + - オプション'keymap'を"arabic"に設定する。これによってインサートモード + でCTRL-^を押すと英語とアラビア語のキーマッピングがトグルする。 + - オプション'delcombine'をオンにする。 + アラビア語のテキストを編集するには'encoding'が"utf-8"でなければならな + いことに注意。 + + このオプションをオフにすると次のことが行われる: + - 'rightleft'をオンにする + - 'keymap'の使用を無効にする(その値は変更しない) + 'arabicshape'と'delcombine'はオフにならない(これらはグローバルオプショ + ンである)。 + |arabic.txt|も参照。 + + *'arabicshape'* *'arshape'* + *'noarabicshape'* *'noarshape'* +'arabicshape' 'arshape' 切替 (既定ではオン) + グローバル + {Vi にはない} + {Vi mが|+arabic|機能付きでコンパイルされたときのみ + 有効} + これがオンで'termbidi'がオフになっているとアラビア語を表示するのに必要 + な文字表示補正が行われる。本質的には字形作成(shaping)が有効になる。こ + の用語は次の事を含む広い用語である。 + a) 単語の中の位置(初期、中間、最終、孤立)によって文字を変更/変形させ + る。 + b) 文字合成機能の有効化 + c) ある文字の組み合わせの有効化 + これが無効になっていると、文字表示がそれぞれの文字の本来の孤立形に戻る。 + アラビア語は他にも設定が必要な複雑な言語である。より詳しくは + |arabic.txt|を参照。 + *'autoindent'* *'ai'* *'noautoindent'* *'noai'* 'autoindent' 'ai' 切替 (既定ではオフ) バッファについてローカル 新しい行を開始したとき (Insertモードで <CR> を打ち込むか、コマンド "o" や "O" を使ったとき)、新しい行のインデントを現在行と同じくする。新しい 行で <BS> か CTRL-D 以外を打ち込まずに <Esc> か <CR> を打ち込むと、そ - の行のインデントは削除される。オプション 'autoindent' がオンのときは、 - テキストの整形処理 (コマンド "gq" を使ったり、挿入モードで 1行の文字数 - がオプション 'textwidth' で指定した数に届いたとき) には最初の行のイン - デントが使われる。 + の行のインデントは削除される。'cpoptions'にフラグ'I'が入っていないかぎ + り、カーソルを他の行に移動させても同様である。 + オプション 'autoindent' がオンのときは、テキストの整形処理 (コマンド + "gq" を使ったり、挿入モードで 1行の文字数がオプション 'textwidth' で指 + 定した数に届いたとき) には最初の行のインデントが使われる。 + オプション 'smartindent' かオプション 'cindent' がオンのときは、インデ ントの方法は違ってくる。 オプション 'paste' がオンのときは 'autoindent' はオフになる。 @@ -668,9 +806,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'autowrite' 'aw' 切替 (既定ではオフ) グローバル コマンド :next, :rewind, :last, :first, :previous, :stop, :suspend, - :tag, :!, :make, CTRL-], CTRL-^ を実行したときや、コマンド CTRL-O, - CTRL-I, '{A-Z0-9}, `{A-Z0-9} の移動先が別のファイルのとき、ファイルが - 変更されているなら書き込む。 + :tag, :!, :make, CTRL-], CTRL-^ を実行したときや、コマンド :buffer, + CTRL-O, CTRL-I, '{A-Z0-9}, `{A-Z0-9} の移動先が別のファイルのとき、ファ + イルが変更されているなら書き込む。 Note 'autowrite' が適用されないコマンドもあることに注意。それについて はオプション 'autowriteall' を参照。 @@ -678,11 +816,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'autowriteall' 'awa' 切替 (既定ではオフ) グローバル {Vi にはない} - オプション 'autowrite' と似ているが、さらにコマンド ":edit", ":quit", - ":qall", ":exit", ":xit", ":recover" を実行したときや、Vimのウィンドウ - を閉じるときも、ファイルが変更されているなら保存する。このオプションを - オンにすると、同時に 'autowrite' もオンになったような動作になる (訳注: - このオプションは 'autowrite' の適用されるコマンド全てに適用されるので)。 + オプション 'autowrite' と似ているが、さらにコマンド ":edit", ":enew", + ":quit", ":qall", ":exit", ":xit", ":recover" を実行したときや、Vimの + ウィンドウを閉じるときも、ファイルが変更されているなら保存する。このオ + プションをオンにすると、同時に 'autowrite' もオンになったような動作に + なる (訳注:このオプションは 'autowrite' の適用されるコマンド全てに適用 + されるので)。 *'background'* *'bg'* 'background' 'bg' 文字列 (既定は "dark" または "light") @@ -718,10 +857,6 @@ Note 1番目の形式では、行全体がオプション指定に使われる ら)。これを避けるには、コマンド ":gui" を .gvimrc の中の 'background' の値が使われる前に置いて (例えば ":syntax on" の前) GUIウィンドウを強 制的に開かせればよい。 - Win32のGUIでは、GUIの開始前に 'background' を設定すると、背景色と文字 - 色の組み合わせは black の上に lightgrey または white の上に black とな - る。他のシステムでは 'background' を変更しても背景色や文字色は変化しな - い。 このオプションは普通ファイル .vimrc 内で設定される。設定はターミナル名 によるかもしれない。例: > :if &term == "pcterm" @@ -752,9 +887,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる バージョン 5.4 またはそれ以前との互換性を保つには次のようにする。 値 効果 ~ - 0 "" と同じ (Vi互換) - 1 "indent,eol" と同じ - 2 "indent,eol,start" と同じ + 0 ":set backspace=" と同じ (Vi互換) + 1 ":set backspace=indent,eol" と同じ + 2 ":set backspace=indent,eol,start" と同じ <BS> や <Del> で望み通りの動作ができないときは |:fixdel| を参照。 NOTE: このオプションは、オプション 'compatible' がオンのときは "" にな @@ -781,13 +916,39 @@ Note 1番目の形式では、行全体がオプション指定に使われる グローバル {Vi にはない} ファイルの書き込みをしてバックアップが作られるとき、その方法をこのオプ - ションで指定する。 + ションで指定する。このオプションはコンマで区切られた単語のリストである。 + + 主な値は次の通り: "yes" 先にファイルのコピーを作ってバックアップにして、更新した内容は 元のファイルに上書きする "no" 先に元のファイルをリネームしてバックアップにして、更新した内容 は新しいファイルに書き出す "auto" どちらか適切な方を選ぶ + 次の値を上のどれか1つと組み合わせることができる: + "breaksymlink"は書き込み時に常にシンボリックリンクを切る。 + "breakhardlink"は書き込み時に常にハードリンクを切る。 + + 訳注: + $ ls -lF + total 2 + -rw-r--r-- 1 ao ao 24 9 17 12:26 hontai + lrwxr-xr-x 1 ao ao 6 9 17 12:29 l@ -> hontai + + となっているとき、ファイルlを編集して:wすると、 + + backupcopy=auto の場合: + -rw-r--r-- 1 ao ao 24 9 17 12:26 l~ + lrwxr-xr-x 1 ao ao 6 9 17 12:29 l@ -> hontai + -rw-r--r-- 1 ao ao 27 9 17 12:31 hontai + + backupcopy=auto,breaksymlink の場合: + -rw-r--r-- 1 ao ao 27 9 17 12:26 hontai + lrwxr-xr-x 1 ao ao 6 9 17 12:29 l~@ -> hontai + -rw-r--r-- 1 ao ao 30 9 17 12:32 l + + という結果になる。 + ファイルのコピーを作ってから元のファイルを上書きする方法: X ファイルのコピーに余計な時間がかかる。 O 編集したファイルが特別な属性を持っていたり、ファイルがハードリンクや @@ -806,6 +967,14 @@ Note 1番目の形式では、行全体がオプション指定に使われる ると判断したとき (属性がコピーでき、ファイルがリンクでないとき) は、そ ちらが使われる。それでは問題がありそうなときはコピーの方法が使われる。 + "breaksymlink"と"breakhardlink"の値は"yes", "no", "auto"のどれとも組み + 合わせることができる。これらが含まれていると、必ず"no"とまったく同じよ + うにシンボリックリンクやハードリンクを切るようになり、元のファイルがそ + のままバックアップになり、新しいファイルが作成される。これは例えば全て + のファイルがシンボリックリンクやハードリンクになっているソースツリーで + 便利である。変更がローカルのソースツリーに対してだけ行われ、元のソース + ツリーには反映されない。 + *crontab* "no" と "auto" では問題が起きる場合がある。プログラムによっては、ファ イルを開き、Vimを呼び出してそのファイルを編集させ、(ファイル区別プログ ラムを使って) そのファイルが変更されたかどうかを調べるものがある。そう @@ -839,7 +1008,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる - バックアップファイルは、リスト内の、使用可能な最初のディレクトリの中 に作られる。 - 値が空だと、バックアップファイルは作られない ('patchmode' は使えなく - なる!)。 + なる!)。そのため書き込みが失敗するかもしれない。 - ディレクトリに "." を指定するのは、バックアップファイルを、編集され たファイルと同じディレクトリに作るということである。 - ディレクトリが "./" (MS-DOS等では ".\") で始まるのは、バックアップファ @@ -868,10 +1037,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来 のヴァージョンで異なった既定値が使われるようになったときに、問題が起き るのを防げる。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 - *'backupext'* *'bex'* + *'backupext'* *'bex'* *E589* 'backupext' 'bex' 文字列 (既定では "~", VMSでは "_") グローバル {Vi にはない} @@ -880,6 +1049,14 @@ Note 1番目の形式では、行全体がオプション指定に使われる ルをバックアップファイルで上書きするのを避けるためである。".bak" を使 いたいかもしれないが、大事なファイルに ".bak" で終わるものがないか確か めること。 + 通常のファイル名文字だけ使える。"/\*?[|<>"は不正である。 + + たくさんのバックアップを残しておきたいなら、自動コマンドBufWritePreを + 使ってファイルを書き込む直前に'backupext'にタイムスタンプを含めるよう + に変更するとよい。 > + :au BufWritePre * let &bex = '-' . strftime("%Y%b%d%X") . '~' +< バックアップを別のディレクトリに保存させるには、オプション'backupdir' + を設定すること。 *'backupskip'* *'bsk'* 'backupskip' 'bsk' 文字列 (既定では "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") @@ -896,6 +1073,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 照。特別な文字に注意するために |option-backslash| を参照。 環境変数の$TMPDIR, $TMP または $TEMP が定義されていないとき、それらは 既定値に使われない。"/tmp/*" はUnixでのみ使われる。 + 既定値は"crontab -e"が正常に機能するように定められている(元のファイル + をリネームすることによってバックアップを作ると、crontabは新しく作られ + たファイルを参照しない)。'backupcopy'と|crontab|も参照。 *'balloondelay'* *'bdlay'* 'balloondelay' 'bdlay' 数値 (既定では 600) @@ -909,10 +1089,49 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'ballooneval' 'beval' 切替 (既定ではオフ) グローバル {Vi にはない} - {Vi mが |+sun_workshop| 機能付きでコンパイルされたとき + {Vi mが |+balloon_eval| 機能付きでコンパイルされたとき のみ有効} |balloon-eval| 機能を働かせる。 + *'balloonexpr'* *'bexpr'* +'balloonexpr' 'bexpr' 文字列 (既定では "") + グローバル/バッファについてローカル|global-local| + {Vi にはない} + {Vi mが|+balloon_eval|機能付きでコンパイルされたときの + み有効} + バルーンウィンドウに表示するテキストの式。'ballooneval'がオンのときの + み使われる。以下の変数を使用できる: + + v:beval_bufnr バルーンを表示するバッファの番号 + v:beval_winnr ウィンドウの番号 + v:beval_lnum 行番号 + v:beval_col 桁番号(バイトインデックス) + v:beval_text マウスポインタの下、または後ろにある単語 + + この式の評価には副作用があってはならない。 + 例: > + function! MyBalloonExpr() + return 'Cursor is at line ' . v:beval_lnum . + \', column ' . v:beval_col . + \ ' of file ' . bufname(v:beval_bufnr) . + \ ' on word "' . v:beval_text . '"' + endfunction + set bexpr=MyBalloonExpr() + set ballooneval +< + NOTE: バルーンはカーソルがテキスト文字の上にあるときだけ表示される。 + 'balloonexpr'を評価した結果が空でないなら、Vimは外部デバッガ(Netbeans + またはSun Workshop)にメッセージを送ろうとしない。 + + この式はサンドボックス|sandbox|の中でも評価できる。|sandbox-option|を + 参照。 + + バルーンのテキスト中の改行が機能するかを調べるにはこれを使う: > + if has("balloon_multiline") +< これがサポートされているなら文字列"\n"は新規行を開始する。この式を評価 + した結果がリスト|List|になる場合は、そのリストの各要素を文字列とし、 + それらの間に"\n"を置くのと同じことになる。 + *'binary'* *'bin'* *'nobinary'* *'nobin'* 'binary' 'bin' 切替 (既定ではオフ) バッファについてローカル @@ -935,6 +1154,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる オンにするとよい。 変更されるオプションの値は記憶されているので、オプション 'bin' がオフに 戻るとそれらの値も復元される。それらの値はバッファごと独自に記憶される。 + 引数|++bin|を使うと、'binary'をオンにしてファイルを開くことができる。 + これを使うと":set bin"としなくてすむ。":set bin"は編集する全てのバッファ + に対して効果を持つ。 'bin' がオンならば、ファイルを書き込むときに最終行に <EOL> が付け加え られるのは、元のファイルにすでに <EOL> があるときだけである (普通は、 最終行に <EOL> がないならVimはそれを付け加える。こうするとその分ファイ @@ -979,7 +1201,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi mが |+linebreak| 機能付きでコンパイルされたときの み有効} オプション 'linebreak' がオンのとき、どの文字のところで行が折り返され - て表示されるかを、このオプションで指定する。 + て表示されるかを、このオプションで指定する。これが機能するのはASCIIと + 8bit文字('encoding'が8bitエンコーディングのとき)だけである。 *'browsedir'* *'bsdir'* 'browsedir' 'bsdir' 文字列 (既定では "last") @@ -1006,11 +1229,16 @@ Note 1番目の形式では、行全体がオプション指定に使われる delete バッファをバッファリストから削除する。'hidden' がオン のときも、|:hide| を使ったときも、|:bdelete| を使った ときのように、リストから削除する。 + wipe バッファをバッファリストから完全に削除(wipe out)する。 + 'hidden' がオンのときも、|:hide| を使ったときも、 + |:bwipeout| を使ったときのように、リストから削除する。 + 注意: "unload", "delete", "wipe"を設定すると、バッファの変更は警告 + 無しに失われる。 このオプションは 'buftype' や 'swapfile' と共に使われ、特殊な用途のバッ ファを指定する。|special-buffers| を参照。 - *'buflisted'* *'bl'* *E85* + *'buflisted'* *'bl'* *'nobuflisted'* *'nobl'* *E85* 'buflisted' 'bl' 切替 (既定ではオン) バッファについてローカル {Vi にはない} @@ -1031,7 +1259,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる <empty> 普通のバッファ nofile ファイルと関連がなく、書き込まれる予定のないバッファ nowrite 書き込まれる予定のないバッファ - quickfix エラーリスト用の quickfix バッファ (|:cwindow| を参照) + acwrite いつも自動コマンドBufWriteCmdで書き込まれる予定のバッ + ファ。{Vi mが|+autocmd|機能付きでコンパイルされたとき + のみ有効} + quickfix エラーリスト/ロケーションリスト用の quickfix バッファ + (|:cwindow|, |:lwindow|を参照) help ヘルプバッファ (ユーザが手動でこれに設定することはない はずである) @@ -1041,8 +1273,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションの変更には十分注意すること。多くの副作用が起こるかもしれ ない! - "quickfix" バッファはエラーリストにのみ使われる。この値はコマンド - |:cwindow| で設定され、ユーザが変更することはないはずである。 + "quickfix" バッファはエラーリストとロケーションリストにのみ使われる。 + この値はコマンド|:cwindow| と|:lwindow|で設定され、ユーザが変更するこ + とはないはずである。 "nofile" バッファと "nowrite" バッファは似ている。 両方とも、 バッファの内容はファイルに書き込まれない。":w" が使え @@ -1055,6 +1288,29 @@ Note 1番目の形式では、行全体がオプション指定に使われる い)。 nofile だけは、 バッファ名は固定され、ファイル名のようには扱われない。 |:cd| の結果としてバッファ名が変わることはない。 + *E676* + "acwrite"は"nofile"と同様にバッファ名がファイルと関係していないことを + 意味するが、"nofile"と違って保存される。すなわち、"nofile"と"nowrite" + 違って":w"ができ、変更されたバッファを保存せずに破棄することはできない。 + これを保存するには、マッチする自動コマンド|BufWriteCmd|, + |FileWriteCmd|, |FileAppendCmd|がなければならない。 + + *'casemap'* *'cmp'* +'casemap' 'cmp' 文字列 (既定では"internal,keepascii") + グローバル + {Vi にはない} + {Vi mが|+multi_byte|機能付きでコンパイルされたときのみ + 有効} + 大文字・小文字の変更について詳細を指定する。このオプションはコンマ区切 + りで以下の単語を含む: + internal 内部の大文字・小文字対応関数を使う。現在のロケールによ + って対応が変更されない。これは'encoding'がユニコードエ + ンコーディング, "latin1", "iso-8859-15"のときのみ問題 + になる。"internal"が除かれるとシステムライブラリ関数 + towupper()とtowlower()が利用可能ならば使われる。 + keepascii アスキー文字(0x00から0x7f)についてはUS大文字小文字対応 + を使う。現在のロケールは効果を持たない。 + これはおそらくトルコ語でだけ問題になる。 *'cdpath'* *'cd'* *E344* *E346* 'cdpath' 'cd' 文字列 (既定では環境変数 $CDPATH または ",,") @@ -1072,9 +1328,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる $CDPATH から取り込まれたものが望ましくないときは、値を上書きするために、 次のコマンドを適当に修正し、ユーザのファイル vimrc に加えること。 > :let &cdpath = ',' . substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g') -< 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない ('cdpath' の値の一部は、ファイル名を展開するためにシェ - ルに渡すことができる)。 +< 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。('cdpath' の値の一部は、 + ファイル名を展開するためにシェルに渡すことができる)。 *'cedit'* 'cedit' 文字列 (Viの既定値: "", Vimの既定値: CTRL-F) @@ -1092,7 +1348,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる < |Nvi| にもこのオプションがあるが、最初の1文字だけが使用される。 |cmdwin| を参照。 - *'charconvert'* *'ccv'* *E202* *E214* + *'charconvert'* *'ccv'* *E202* *E214* *E513* 'charconvert' 'ccv' 文字列 (既定では "") グローバル {Vi にはない} @@ -1137,8 +1393,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる UTF-8 を使っている。 Vim は 'charconvert' を用いたエンコーディング変換では暗号化をしない。 変換後に暗号化をしたいなら、'charconvert' にそうさせる必要がある。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'cindent'* *'cin'* *'nocindent'* *'nocin'* 'cindent' 'cin' 切替 (既定ではオフ) @@ -1235,13 +1491,15 @@ Note 1番目の形式では、行全体がオプション指定に使われる - Vimをコンソールで使用しているとき。 - アプリケーションを別のディスプレイで使うため、環境変 数 $DISPLAY が設定されているとき。 + - コンソールではXサーバと通信してほしくないが、ターミ + ナルエミュレータ上では通信してほしいとき。 - コンソールでVimを使用している最中にXサーバが終了させ られ、Vimをキルせざるを得ないかもしれないとき。 Xサーバと全く通信しないようにするには、次のようにする。 > exclude:.* < これは引数 |-X| を使用したのと同じ効果を持つ。 - Note 副作用として、ウィンドウのタイトルが復元されない - ので注意。 + Note Xサーバと通信していないとき、ウィンドウタイトルは + 復元されず、クリップボードにはアクセスできない。 'magic' の値は無視され、 {pattern} は 'magic' がオンの ときのように解釈される。オプション 'clipboard' の値の 残りは {pattern} として認識されるので、"exclude" は最 @@ -1253,6 +1511,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} コマンドラインに使われる画面上の行数。|hit-enter| プロンプトの出現を避 けるのに役立つ。 + 各タブページが異なる値を持てるようにするために、このオプションの値はタ + ブページに保存される。 *'cmdwinheight'* *'cwh'* 'cmdwinheight' 'cwh' 数値 (既定では 7) @@ -1262,20 +1522,22 @@ Note 1番目の形式では、行全体がオプション指定に使われる み有効} コマンドライン・ウィンドウに使われる画面上の行数。|cmdwin| を参照。 - *'columns'* *'co'* + *'columns'* *'co'* *E594* 'columns' 'co' 数値 (既定では 80 またはターミナルの幅) グローバル {Vi にはない} 画面上の列幅を設定する。普通このオプションはターミナルの初期化の時点で - 設定され、手動で設定する必要はない。 + 設定され、手動で設定する必要はない。|posix-screen-size|も参照。 VimがGUI内やサイズ変更可能なウィンドウ内で実行されているときは、このオ - プションを変更するとウィンドウサイズも変更されるかもしれない。 + プションを変更するとウィンドウサイズも変更される。GUIでだけこのサイズ + を使用したい場合は、このコマンドを|gvimrc|に書くこと。 ユーザがこのオプションを変更したのに、Vimがディスプレイの列幅の物理的 な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが ある。 + 最小値は12、最大値は10000。 (訳注: オプション 'lines' も参照) - *'comments'* *'com'* + *'comments'* *'com'* *E524* *E525* 'comments' 'com' 文字列 (既定では "s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-") バッファについてローカル @@ -1286,7 +1548,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる |format-comments| を参照。'\' を使って値にスペースを含める方法について は、|option-backslash| を参照。 - *'commentstring'* *'cms'* + *'commentstring'* *'cms'* *E537* 'commentstring' 'cms' 文字列 (既定では "/*%s*/") バッファについてローカル {Vi にはない} @@ -1297,8 +1559,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる れている。|fold-marker| を参照。 *'compatible'* *'cp'* *'nocompatible'* *'nocp'* -'compatible' 'cp' 切替 (既定では オン、ファイル .vimrc が発見されたら - オフ) +'compatible' 'cp' 切替 (既定では オン、ファイル|vimrc|または + |gvimrc|が発見されたらオフ) グローバル {Vi にはない} VimをなるべくVi互換にするか、便利な機能を使えるようにするかを決定する。 @@ -1311,11 +1573,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる 定値は、VimをViと全く同じように使うことを望み、オプション 'compatible' について知りもしない、または知りたいとも思わない人たちのためのものであ る。 - Vimが立ち上がる間にファイル .vimrc が見つかると、このオプションはオフ - にされ、その他のオプションで変更されていないものは、みなVimの既定値に - 設定される。要するに、Vimはファイル .vimrc が存在するならVimの既定値を、 - 存在しないならViの既定値を使うのだ ( Note: システム全体用のファイル - vimrc は関係ないことに注意)。 |compatible-default| も参照。 + Vimが立ち上がる間にファイル |vimrc| または |gvimrc| が見つかると、こ + のオプションはオフにされ、その他のオプションで変更されていないものは、 + みなVimの既定値に設定される。要するに、Vimはファイル |vimrc| または + |gvimrc| が存在するならVimの既定値を、存在しないならViの既定値を使うの + だ ( Note: システム全体用のファイルvimrc は関係ないことに注意)。 + |compatible-default| と |posix-compliance| も参照。 このオプションは引数 "-C" でオンに、引数 "-N" でオフにできる。 |-C| と |-N| を参照。 @@ -1381,7 +1644,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる ライン補完に CTRL-E を使う 'writebackup' オンかオフ |+writebackup| 機能による - *'complete'* *'cpt'* + *'complete'* *'cpt'* *E535* 'complete' 'cpt' 文字列 (既定では: ".,w,b,u,t,i") バッファについてローカル {Vi にはない} @@ -1395,6 +1658,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる u バッファリスト内の、現在読み込まれていない別のバッファから検索 U バッファリストにないバッファから検索 k 'dictionary' で指定されたファイルから検索 + kspell 現在有効化されているスペルチェックを使う |spell| k{dict} {dict} で与えられたファイルから検索。"k" を複数指定してもよい。 ファイル名はパターンでも指定できる。例: > :set cpt=k/usr/dict/*,k~/spanish @@ -1425,6 +1689,42 @@ Note 1番目の形式では、行全体がオプション指定に使われる きる (つまり辞書 |i_CTRL-X_CTRL-K| 、インクルードされるパターン |i_CTRL-X_CTRL-I|、タグ |i_CTRL-X_CTRL-]| および通常の展開)。 + *'completefunc'* *'cfu'* +'completefunc' 'cfu' 文字列 (既定では空) + バッファについてローカル + {Vi にはない} + {Vi mが+evalまたは+insert_expand機能付きでコンパイルさ + れたときのみ有効} + このオプションは入力モードのCTRL-X CTRL-U |i_CTRL-X_CTRL-U|での補完に + 使われる関数を指定する。 + その関数がどのように起動され、何を返すべきかについての説明は + |complete-functions|を参照。 + + *'completeopt'* *'cot'* +'completeopt' 'cot' 文字列 (既定では "menu,preview") + グローバル + {Vi mが|+insert_expand|機能付きでコンパイルされたとき + のみ有効} + {Vi にはない} + 入力モードでの補完|ins-completion|についてのオプションのコンマ区切りの + リスト。サポートされている値は次の通り: + + menu ポップアップメニューで補完候補を表示する。ポップアップメニ + ューは、候補が2個以上あり、十分な数の色が使用できるときだ + け表示される。|ins-completion-menu|を参照。 + + menuone 候補が1つしかないときもポップアップメニューを使う。候補に + ついて付加的な情報があるときに便利である。例えば、それがど + のファイルに含まれているかなど。 + + longest 候補の文字列の最長の共通部分だけを挿入する。メニューが表示 + されているならばCTRL-Lでさらに文字を挿入することができる。 + 大文字・小文字が同一視されるかどうかは補完の種類による。バッ + ファのテキストについてはオプション'ignorecase'が適用される。 + + preview 現在選択されている候補についての付加的な情報をプレビューウ + ィンドウに表示する。 + *'confirm'* *'cf'* *'noconfirm'* *'nocf'* 'confirm' 'cf' 切替 (既定ではオフ) グローバル @@ -1449,6 +1749,19 @@ Note 1番目の形式では、行全体がオプション指定に使われる オフ オン BIOS オフ オフ 標準入力 + *'copyindent'* *'ci'* *'nocopyindent'* *'noci'* +'copyindent' 'ci' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + 新規行を自動インデントするとき、既存の行のインデント構造をコピーする。 + 普通、新しい行のインデントは|'expandtab'|が有効になっていないかぎり + (この場合は全てスペースになる)、まずタブが使われ、足りない部分がスペー + スで埋められる。このオプションを有効にすると、既存の行のインデントにど + んな文字が使われていようとそれを新規行にコピーする。新規行のインデント + が既存の行よりも深いならば、その差の部分は通常の方法で埋められる。 + NOTE: 'compatible'がオンにされると'copyindent'はオフになる。 + 'preserveindent'も参照。 + *'cpoptions'* *'cpo'* 'cpoptions' 'cpo' 文字列 (Vimの既定値: "aABceFs", Viの既定値: 全フラグ) グローバル @@ -1461,20 +1774,27 @@ Note 1番目の形式では、行全体がオプション指定に使われる と "-=" を使うこと |add-option-flags|。 NOTE: このオプションは 'compatible' がオンのときはVi互換の値に設定され、 'compatible' がオフのときはVim互換の値に設定されるので注意。 + NOTE: Viの既定値が使われるようになっており、さらに環境変数$VIM_POSIXが + 存在するとき、Vim起動時にこのオプションがPOSIXの既定値にセットされる + |posix|。これによってPOSIX仕様に近い挙動をするようになる。 フラグ 動作 ~ + *cpo-a* a これが含まれると、":read" にファイル名の引数を与えたと き、そのファイルをカレントウィンドウの代替ファイルに設 定する。 + *cpo-A* A これが含まれると、":write" にファイル名の引数を与えた とき、そのファイルをカレントウィンドウの代替ファイルに 設定する。 + *cpo-b* b ":map" 内の "\|" がコマンドの終端と見なされるようにな る。'\' はキーマッピングの一部に、'|' の次のテキストは 次のコマンドと見なされる。'|' をキーマッピングに含める には、'\' でなく CTRL-V を使うこと。キーマッピングや略 語やメニューや autocmd コマンドの全てに適用される。 |map_bar| も参照。 + *cpo-B* B '\' が、":menu" のメニューから実行される部分やキーマッ ピングや略語において、特別な意味を持たなくなる。'\' を CTRL-V のように使いたいのならこのフラグを取り除くこと。 @@ -1482,45 +1802,65 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'B' が含まれたとき: "\^[" (^[ は本当の <Esc>) 'B' が除かれたとき: "<Esc>" (5個の文字) (どちらの場合も '<' が除かれているとする) + *cpo-c* c (訳注: 検索でマッチする文字列があった後) カーソル位置 - のマッチの終わりから次の検索を行う。このフラグが含まれ - ないと、次の検索はカーソル位置の1文字後から始まる。'c' - が含まれると、"/abab" で検索したとき "abababababab" に - は3回しかマッチしないが、'c' が含まれないと5回マッチす - る。 + のマッチの終わり(ただし次行の開始位置を越えない)から次 + の検索を行う。このフラグが含まれないと、次の検索はカー + ソル位置の1文字後から始まる。'c'が含まれると、"/abab" + で検索したとき "abababababab" には3回しかマッチしない + が、'c' が含まれないと5回マッチする。 + *cpo-C* C ":source" で読み込まれたファイルのうち、'\' で始まる行 を連結しない。|line-continuation| を参照。 + *cpo-d* d 'tags' 内で "./" という記法を使ったとき、タグファイル はカレントファイルのディレクトリでなく、カレントディレ クトリから探す。 + *cpo-D* D |r|, |f| や |t| のような、文字を引数に取る Normalモー ドコマンドの後で、CTRL-K によるダイグラフの入力ができ なくなる。 + *cpo-e* e ":@r" でレジスタの内容を (訳注: Exコマンドとして) 実行 するとき、レジスタが行全体を保存したものでないときでも、 常に最終行に <CR> を付け加える。このフラグが含まれない ときは、レジスタの内容が行全体を保存したものでなく、か つ <CR> で終わらないならば、実行すると最終行はコマンド ラインに表示され、<CR> を打ち込むまでは編集できる。 + *cpo-E* E 空の範囲に "y", "d", "c", "g~", "gu", "gU" などのコマ ンドを使うとエラーになる。オペレータは作用する対象が最 低でも1文字ないと使えない。例: これが含まれると、最初 の桁で "y0" を行うとエラーになる。 + *cpo-f* f これが含まれると、カレントバッファにファイル名がまだ設 定されていないなら、":read" にファイル名の引数を与えた とき、そのファイル名をカレントバッファのファイル名に設 定する。 + *cpo-F* F これが含まれると、カレントバッファにファイル名がまだ設 定されていないなら、":write" にファイル名の引数を与え たとき、そのファイル名をカレントバッファのファイル名に - 設定する。 + 設定する。|cpo-P|も参照。 + *cpo-g* g ":edit" を引数なしで使うと1行目に移動する。 + *cpo-H* + H 空白のみを含む行の上で"I"を使ったとき、最後の空白の前 + から挿入する。このフラグが含まれていないと、最後の空白 + の後から挿入を開始する。 + *cpo-i* i これが含まれると、ファイルの読み込み中に中断が起きたと き、ファイルは変更されたままになる。 + *cpo-I* + I 'autoindent'によるインデントが挿入された直後にカーソル + を上下に移動したときインデントを削除しない。 + *cpo-j* j 行の連結時に追加する空白が、'.' の後のみ2個になり、'!' や '?' の後は1個になる。'joinspaces' も参照。 + *cpo-J* J 文 |sentence| は '.', '!' または '?' の後に2個の空白を 伴わなければならない。<Tab> は空白とは見なされない。 + *cpo-k* k ":menu" で実行される部分や、キーマッピングや略語におい て、直接入力されたキーコードを認識しない。例えば、 <Key> が ^[OA を送るなら (ここで ^[ は <Esc> )、 @@ -1528,37 +1868,66 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'k' が含まれたとき: "^[OA" (3個の文字) 'k' が除かれたとき: "<Key>" (1個のキーコード) 下の '<' も参照。 + *cpo-K* K キーマッピングの途中で、キーコードが完全に入力されるの を待たない。This breaks mapping <F1><F1> when only part of the second <F1> has been read. こうすると <F1><Esc> と打ち込めばマッピングをキャンセルできる。 + *cpo-l* l 検索パターンの [] 範囲内で、'\' は文字通りに解釈され、 - "\]" だけが特別な意味を持つ。|/[]| を参照。 + "\]", "\^", "\\" だけが特別な意味を持つ。|/[]| を参照。 'l' が含まれたとき: "/[ \t]" がマッチするのは <Space>, '\' と 't' 'l' が除かれたとき: "/[ \t]" がマッチするのは <Space> と <Tab> - L 'list' がオンのとき、 'wrapmargin', 'textwidth' と - Virtual replaceモード (|gR| を参照) で、<Tab> の普通の - 数え方をせず、必ず 2 文字に数える。 + |cpo-\|も参照。 + *cpo-L* + L 'list' がオンのとき、 'wrapmargin', 'textwidth', + 'softtabstop' とVirtual replaceモード (|gR| を参照) で、 + <Tab> の普通の数え方をせず、必ず 2 文字に数える。 + *cpo-m* m これが含まれると、対応する括弧の表示を0.5秒待つ。含ま れていないと、対応する括弧の表示を0.5秒または次の文字 が打ち込まれるまで待つ。'showmatch' を参照。 + *cpo-M* + M これが含まれていない場合、"%"での括弧の対応にバックス + ラッシュを考慮に入れる。すなわち"( \( )"や"\( ( \)"で + 外側の括弧同士が対応するようになる。"%"が含まれている + 場合はVi互換になり、バックスラッシュは無視される。 + *cpo-n* n これが含まれると、'number' による行番号表示に使われる 桁も、折り返された行の表示に使われる。 + *cpo-o* o 検索コマンドの行オフセットは、次回の検索には使われない。 + *cpo-O* O ファイルが上書きされたとき、編集を始めたときにはそのファ イルが存在しなかった場合でも警告しない。これは別人に突 然作り出されたファイルに対する防御である。Viはこれに警 告を出さなかった。 + *cpo-p* p Vi互換のLisp用インデント。これが含まれないと、いくらか 良いアルゴリズムが使われる。 + *cpo-P* + P これとフラグ'F'が同時に含まれていると、コマンド":write" + で既存のファイルに追加するとき、カレントバッファの名前 + がまだないならそのファイルの名前をカレントバッファの名 + 前にする。|cpo-F| + *cpo-q* + q 複数の行を連結するとき、2行を連結するときと同じ位置に + カーソルを置く。 + *cpo-r* r リドゥ (コマンド ".") で検索を繰り返すとき、実際には "/" を使う。 + *cpo-R* + R フィルタされた行のマークを除去する。このフラグが入って + いないと、|:keepmarks|を使ったときと同じようにフラグは + そのまま保たれる。 + *cpo-s* s バッファが初めてアクティブになる時点でバッファのオプショ ンが設定される。これは Vim version 3.0 と同じ動作であ る。そして既定ではこの動作を行う。これが含まれないと、 オプションはバッファが作られた時点で設定される。 + *cpo-S* S バッファのオプションを常にバッファに移動する時点で設定 する ('readonly', 'fileformat', 'filetype' と 'syntax' 以外)。これは (ほとんど) Vi互換の設定である。 @@ -1571,29 +1940,50 @@ Note 1番目の形式では、行全体がオプション指定に使われる オフ オフ バッファが作られた時点 オン オフ バッファが初めてアクティブになった時点 (既定) なし オン バッファに移動するたび (Vi互換) - + *cpo-t* t タグコマンドの検索パターンが "n" による検索の繰り返し にも使われる。これが含まれないと、検索パターンの履歴に は加えられるが、最終検索パターンは変化しない。 + *cpo-u* u アンドゥがVi互換になる。|undo-two-ways| を参照。 + *cpo-v* + v インサートモードにおいて、バックスペースで消した文字を + 画面上に表示したままにしておく。このフラグが入っていな + いと、消された文字はすぐに画面から消える。このフラグが + 入っていると、新しく入力された文字がバックスペースで消 + された文字を上書きする。 + *cpo-w* w 空白の上で "cw" を使ったとき、1文字だけ変更して、次の 単語の始まりまでの空白は変更しない。 + *cpo-W* W 読み込み専用ファイルを上書きしない。これが含まれないと、 可能であれば ":w!" で読み込み専用ファイルも上書きでき る。 + *cpo-x* x コマンドラインで <Esc> を打ち込むとコマンドを実行する。 Vimでの既定ではコマンドライン入力を中止して元のモード に戻る。それは <Esc> は普通はコマンドの中止に使われる からである。|c_<Esc>| を参照。 + *cpo-X* + X "R"でカウントを指定したとき、置換されるテキストが一度 + だけ削除される。カウントをつけた"."で"R"を繰り返したと + きも同じ。 + *cpo-y* y コピーコマンドを "." でリドゥできる。 + *cpo-Z* + Z オプション'readonly'がオンになっているのに"w!"をしたと + き'readonly'をオフにしない。 + *cpo-!* ! フィルタコマンドをリドゥするとき、何であってもとにかく 最後に実行された外部コマンドを使う。これが含まれないと、 最後に実行された「フィルタ」コマンドが使われる。 + *cpo-$* $ 1行に対して変更をするとき、行を再描画せず、代わりに変 更されたテキストの最後に '$' を表示する。変更されたテ キストはユーザが新しいテキストを入力したときに上書きさ れる。その行はユーザがカーソルを挿入点から動かすコマン ドを入力したときに再描画される。 + *cpo-%* % "%" でVi互換の対応検索が行われる。 "#if", "#endif" などを認識しない。 "/*" と "*/" も認識しない。 @@ -1606,14 +1996,64 @@ Note 1番目の形式では、行全体がオプション指定に使われる 視される。引用符の内部の括弧の対応を調べるときは、対応 する括弧を探す (存在すれば)。これはC言語プログラムでは とても良く機能する。 + このフラグはCインデントなど他の機能にも使われる。 + *cpo--* + - これが含まれていると最初の行や最後の行を越えるような上 + 下移動コマンドは失敗する。含まれているとカーソルが最初 + の行または最後の行に移動する(既にカーソルがその行にな + いかぎり)。 + コマンド"-", "k", CTRL-P, "+", "j", CTRL-N, CTRL-J, + ":1234"に適用される。 + (訳注: 2行目で3kしたとき、これが含まれているならカーソ + ルは移動しない。含まれていないなら1行目へ移動する) + *cpo-+* + + これが含まれていると、":write file"をしたとき、まだそ + のバッファが対応するファイルと異なっていても、そのバッ + ファのフラグ'modified'がオフになる。 + *cpo-star* * ":*" を ":@" と同じように扱う。これが含まれないと、 ":*" は ":'<,'>" の別名となり、Visualエリアを選択する。 + *cpo-<* < ":menu" で実行される部分や、キーマッピングや略語におい て、|<>| 記法による特殊キーの認識を行わない。例えば、 ":map X <Tab>" で X がマップされるのは、 '<' が含まれたとき: "<Tab>" (5個の文字) '<' が除かれたとき: "^I" (^I は本当の <Tab>) 上の 'k' も参照。 + *cpo->* + > レジスタにテキスト追加するとき、そのテキストの前に改行 + 文字をつける。 + + 次のものはPOSIXフラグである。起動時に$VIM_POSIXがセットされていない限 + り、これらはViの既定値には含まれない。|posix| + + フラグ 動作 ~ + *cpo-#* + # "D", "o", "O"に対するカウントは効果がない。 + *cpo-&* + & ":preserve"が使われたとき通常終了時にバッファはまだ読 + み込まれているが、スワップファイルを保存する。このフラ + グはVimの終了時に判定される。 + *cpo-\* + \ 検索パターンの範囲[]の中のバックスラッシュが文字どおり + に解釈される。"\]"だけがエスケープになる。|/[]|を参照。 + '\'が含まれていると"/[ \-]"は<Space>, '\', '-'にマッチ + する。'\'が含まれていないと"/[ \-]"は<Space>, '-'にマッ + チする。 + |cpo-l|も参照。 + *cpo-/* + / コマンド|:s|の置換後文字列に"%"を指定したとき、前回の + 置換後文字列を使う。|:s%|を参照。 + *cpo-{* + { コマンド|{|と|}|が行頭の文字"{"にも止まる。 + *cpo-.* + . カレントバッファが変更されているとき、"!"をつけないか + ぎりコマンド":chdir"と":cd"が失敗する。Vimは開いたファ + イルのフルパスを覚えているため、これを必要としない。 + *cpo-bar* + | 環境変数$LINESと$COLUMNSの値をシステム固有の関数で得ら + れたターミナルサイズより優先させる。 + *'cscopepathcomp'* *'cspc'* 'cscopepathcomp' 'cspc' 数値 (既定では 0) @@ -1631,8 +2071,17 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 効} Cscope を実行するコマンド名を指定する。|cscopeprg| を参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 + + *'cscopequickfix'* *'csqf'* +'cscopequickfix' 'csqf' 文字列 (既定では"") + グローバル + {Vi mが|+cscope|または|+quickfix|機能つきでコンパイル + されたときのみ利用可能} + {Vi にはない} + cscopeの結果を表示するのにQuickFixウィンドウを使うかどうかを指定する。 + |cscopequickfix|を参照。 *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'* 'cscopetag' 'cst' 切替 (既定ではオフ) @@ -1644,6 +2093,15 @@ Note 1番目の形式では、行全体がオプション指定に使われる NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな るので注意。 + *'cursorcolumn'* *'cuc'* *'nocursorcolumn'* *'nocuc'* +'cscopetag' 'cst' 切替 (既定ではオフ) + グローバル + {Vi mが|+cscope|機能つきでコンパイルされたときのみ + 有効} + {Vi にはない} + コマンドtagにcscopeを使う。|cscope-options|を参照。 + NOTE: 'compatible'をオンにするとこのオプションはオフになる。 + *'cscopetagorder'* *'csto'* 'cscopetagorder' 'csto' 数値 (既定では 0) グローバル @@ -1666,15 +2124,48 @@ Note 1番目の形式では、行全体がオプション指定に使われる NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな るので注意。 + *'cursorcolumn'* *'cuc'* *'nocursorcolumn'* *'nocuc'* +'cursorcolumn' 'cuc' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vi mが|+syntax|機能つきでコンパイルされたときのみ + 有効} + カーソルのある画面上の桁をCursorColumnで強調する|hl-CursorColumn|。 + テキストを桁揃えするのに便利。スクリーンの再描画が遅くなる。 + カレントウィンドウに対してだけこの強調をしたいなら次の自動コマンドを使 + う: > + au WinLeave * set nocursorline nocursorcolumn + au WinEnter * set cursorline cursorcolumn +< + *'cursorline'* *'cul'* *'nocursorline'* *'nocul'* +'cursorline' 'cul' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vi mが|+syntax|機能つきでコンパイルされたときのみ + 有効} + カーソルがある画面上の行をCursorLineで強調する|hl-CursorLine|。 + カーソルを目立たせるのに便利。スクリーンの再描画が遅くなる。 + ビジュアルモードでは選択されたテキストをわかりやすくするためにこの強調 + は行われない。 + + *'debug'* 'debug' 文字列 (既定では "") グローバル {Vi にはない} - "msg" に設定されると、省かれるはずのエラーメッセージも表示される。これ - はオプション 'foldexpr' や 'indentexpr' をデバッグするのに便利である。 + 以下の値を指定することができる: + msg 省かれるはずのエラーメッセージも表示する。 + throw 省かれるはずのエラーメッセージも表示し、さらに例外を投げ、 + |v:errmsg|を設定する。 + beep ビープが鳴るだけのところでメッセージを表示する。 + これらの値はコンマで区切って組み合わせることができる。 + "msg"と"throw"はオプション 'foldexpr' や 'formatexpr', 'indentexpr' を + デバッグするのに便利である。 + + *'define'* *'def'* -'define' 'def' 文字列 (既定では "^#\s*define") +'define' 'def' 文字列 (既定では "^\s*#\s*define") グローバル/バッファについてローカル |global-local| {Vi にはない} マクロ定義を発見するのに使われるパターンを指定する。値はコマンド "/" @@ -1689,7 +2180,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる ^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\) < ":set" で設定するときは、'\' の数を2倍にする必要がある! - *'delcombine'* *'deco'* + *'delcombine'* *'deco'* *'nodelcombine'* *'nodeco'* 'delcombine' 'deco' 切替 (既定ではオフ) グローバル {Vi にはない} @@ -1699,10 +2190,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる のコマンド "x" はそれぞれの文字の上の combining character のみを削除す る。オフのときは (これが既定である) combining character と文字は同時に 削除される。 + Note: 'delcombine'がオンになっていると"xx"の動作が"2x"と異なる場合があ + る。 - このオプションは、ヘブライ語その他の言語で、ベースとなる文字の上に - combining character が付いていて、combining character のみを削除したい - ときに便利である。 + このオプションは、アラビア語、ヘブライ語その他の言語で、ベースとなる文 + 字の上にcombining character が付いていて、combining character のみを削 + 除したいときに便利である。 *'dictionary'* *'dict'* 'dictionary' 'dict' 文字列 (既定では "") @@ -1714,9 +2207,13 @@ Note 1番目の形式では、行全体がオプション指定に使われる キーワードでない文字 (空白を推奨) で区切られた数語が並んでいてもよい。 1行の文字数の最大値は510バイト分である (訳注: 日本語のいわゆる全角文字 では半分の255文字)。 + このオプションが空のとき、または"spell"が含まれていてスペルチェ + ックが有効になっているとき、現在アクティブなスペリングが使われる。 + |spell| ファイル名にコンマを含めるには、コンマの前に '\' を置くこと。コンマの 後ろの空白は無視されるが、それ以外の空白はファイル名の一部として扱われ る。'\' の使い方については |option-backslash| を参照すること。 + このオプションは変数の辞書型|Dictionary|とは関係ない。 単語リストはどこで見つかるか? - FreeBSDでは、"/usr/share/dict/words" というファイルがある。 - Simtelアーカイブでは、ディレクトリ "msdos/linguist" を探すこと。 @@ -1725,7 +2222,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる レクトリを除くときには |:set-=| コマンドを使うのがよい。こうすると将来 のヴァージョンで異なった既定値が使われるようになったときに、問題が起き るのを防げる。 - 安全上の理由から、バックティック (`) をこのオプションの値に使うことは + 安全上の理由から、バッククォート (`) をこのオプションの値に使うことは できない。 *'diff'* *'nodiff'* @@ -1743,6 +2240,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi mが |+diff| 機能付きでコンパイルされたときのみ有効} 2個のファイル間の差異を求めるとき、ed形式のdiffファイルを求めるために 評価される expression。|diff-diffexpr| を参照。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'dip'* *'diffopt'* 'diffopt' 'dip' 文字列 (既定では "filler") @@ -1775,10 +2274,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる 無視するが、前に追加された空白は無視しないはず である。 + horizontal (他に明示的に指定されない限り)ウィンドウを水平 + 分割してdiffモードを開始する。 + + vertical (他に明示的に指定されない限り)ウィンドウを垂直 + 分割してdiffモードを開始する。 + + foldcolumn:{n} diffモードの開始時にオプション'foldcolumn'を + {n}に設定する。 + + 例: > :set diffopt=filler,context:4 :set diffopt= - :set diffopt=filler + :set diffopt=filler,foldcolumn:3 < *'digraph'* *'dg'* *'nodigraph'* *'nodg'* 'digraph' 'dg' 切替 (既定ではオフ) @@ -1803,16 +2312,18 @@ Note 1番目の形式では、行全体がオプション指定に使われる - ディレクトリに "." を指定すると、編集されているファイルと同じディレ クトリにスワップファイルが作られる。Unixではファイル名の先頭にドット が追加されるので、ディレクトリ内のファイル一覧には表示されない。 + MS-Windowsでは属性"hidden"が設定され、可能ならばファイル名の先頭にド + ットが追加される。 - "./" で始まるディレクトリ (MS-DOSなどでは ".\") を指定すると、編集さ れているファイルからの相対的な位置にスワップファイルが作られる。先頭 の "." は編集されているファイルのパス名に置換される。 - UnixとWin32では、指定されたディレクトリ名の末尾がディレクトリの区切 - り記号2個で終わっていたら、スワップファイルの名前はフルパスに従って - 付けられる。スワップファイルのファイル名をフルパス形式で表し、ディレ - クトリの区切り文字をパーセント記号 '%' で置き換えたものが使われる。 - こうするとスワップファイル格納用ディレクトリの中でも (訳注: 別のディ - レクトリ内の同名ファイルのスワップファイルが集まるかもしれない)、ファ - イル名の一意性が保証される。 + り記号2個("//"または"\\")で終わっていたら、スワップファイルの名前は + フルパスに従って付けられる。スワップファイルのファイル名をフルパス形 + 式で表し、ディレクトリの区切り文字をパーセント記号 '%' で置き換えた + ものが使われる。こうするとスワップファイル格納用ディレクトリの中でも + (訳注: 別のディレクトリ内の同名ファイルのスワップファイルが集まるか + もしれない)、ファイル名の一意性が保証される。 - コンマの後の空白は無視されるが、その他の場所の空白はディレクトリ名の 一部と見なされる。ディレクトリ名の先頭に空白を指定したいなら、'\' を 前に付けること。 @@ -1837,8 +2348,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来 のヴァージョンで異なった既定値が使われるようになったときに、問題が起き るのを防げる。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 {Vi: 一時ファイルを作るディレクトリを指定する。既定では "/tmp"} *'display'* *'dy'* @@ -1871,7 +2382,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'gdefault' も参照。 このオプションをオンに設定するのは推奨できない! - *'encoding'* *'enc'* + *'encoding'* *'enc'* *E543* 'encoding' 'enc' 文字列 (既定では "latin1" または $LANG) グローバル {Vi にはない} @@ -1884,10 +2395,17 @@ Note 1番目の形式では、行全体がオプション指定に使われる 照。 NOTE: このオプションの値を変更しても、Vim内部の既存のテキストのエンコー - ディングは変化しないので注意。マルチバイト文字がおかしくなる恐れもある。 + ディングは変化しないので注意。非アスキー文字がおかしくなる恐れもある。 既定の値から変更しないか、Vimの起動時に限って設定すること。|multibyte| を参照。 + NOTE: GTK+2では'encoding'を"utf-8"に設定することが強く推奨される。 + 他の値であってもよいが、この環境では"utf-8"が自然な選択であり、不必要 + な変換のオーバーヘッドを避けることができる。GUIやターミナルのバージョ + ンによって挙動が異なってしまうのを避けるためと、新しく作られたファイル + のエンコーディングが知らないうちに変わってしまうのを避けるため + ('fileencodings'が空の場合)、"utf-8"は既定にはなっていない。 + 編集するファイルの文字エンコーディングはオプション 'encoding' と異なっ てもよい。そちらは 'fileencoding' で設定される。エンコーディングの変換 は関数 iconv() または 'charconvert' で指定された expression による。 @@ -1942,13 +2460,15 @@ Note 1番目の形式では、行全体がオプション指定に使われる グローバル {Vi にはない} オンのときは、ウィンドウを分割したり閉じたりした後、全てのウィンドウが - 自動的に同じサイズになる。オフのときは、ウィンドウを分割するとカレント - ウィンドウのサイズだけが減り、他のウィンドウに変化はない。ウィンドウを - 閉じると、('splitbelow' と 'splitright' に従って) 閉じたウィンドウの隣 - のウィンドウの行数が増す。 + 自動的に同じサイズになる。これはこのオプションがオフになった瞬間にも起 + こる。オフのときは、ウィンドウを分割するとカレントウィンドウのサイズだ + けが減り、他のウィンドウに変化はない。ウィンドウを閉じると、 + ('splitbelow' と 'splitright' に従って) 閉じたウィンドウの隣のウィンド + ウの行数が増す。 水平に分割されたウィンドウと垂直に分割されたウィンドウが混在していると きは、サイズの最小値が計算され、いくつかのウィンドウは (余裕があれば) 大きくなる。'eadirection' はサイズの変化する方向を指定する。 + 'winfixheight'を設定するとウィンドウの高さが変わるのを防ぐことができる。 *'equalprg'* *'ep'* 'equalprg' 'ep' 文字列 (既定では "") @@ -1958,8 +2478,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 整形に使われる (オプション 'lisp', 'cindent' または 'indentexpr')。 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については |option-backslash| を参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'errorbells'* *'eb'* *'noerrorbells'* *'noeb'* 'errorbells' 'eb' 切替 (既定ではオフ) @@ -1969,6 +2489,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる くのエラー (例えばNormalモードで <ESC> を打ち込んだとき) についてはベ ルは常に使用される。ベルをビープ音にしたり、画面フラッシュにしたり、無 効にしたりするためには、オプション 'visualbell' を参照。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'errorfile'* *'ef'* 'errorfile' 'ef' 文字列 (Amigaでの既定値: "AztecC.Err", @@ -1983,8 +2505,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる コマンド ":make" には「使われない」。それについては 'makeef' を参照。 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については |option-backslash| を参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'errorformat'* *'efm'* 'errorformat' 'efm' 文字列 (既定値はとても長い) @@ -2017,7 +2539,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi mが |+autocmd| 機能付きでコンパイルされたときのみ 有効} Autocommand のイベント名のうち、無視したいもののリスト。 - が "all" に設定されると、全ての autocommand のイベントが無視され、 + "all"が含まれていると全ての autocommand のイベントが無視され、 autocommand は実行されなくなる。 それ以外では、値はイベント名のコンマ区切りのリストである。例: > :set ei=WinEnter,WinLeave @@ -2043,8 +2565,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる .vimrc や .gvimrc にローカルなものを用いると潜在的な安全保護の漏れを招 くので、注意して使うこと! |.vimrc| と |gui-init| も参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'fileencoding'* *'fenc'* *E213* 'fileencoding' 'fenc' 文字列 (既定では "") @@ -2061,12 +2583,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる ある!'encoding' が "utf-8" だと、変換は大抵成功するし、逆変換 をしても同じテキストになる。'encoding' が "utf-8" でないときは、 失われる文字があるかもしれない! - 指定可能な値については 'encoding' を参照。それらに加え、変換ツール (関 - 数 iconv() または 'charconvert' で指定された expression) で変換可能な - エンコーディングの値も設定できる。 + 指定可能な値については 'encoding' を参照。それらに加え、変換ツールで変 + 換可能なエンコーディングの値も設定できる。|mbyte-conversion|を参照。 ファイルを読み込むときは、'fileencoding' は 'fileencodings' の値の中か ら設定される。あるエンコーディングのファイルを読み込むには 'fileencoding' を設定してもだめで、引数 |++enc| を使う。 + 新規ファイルに対しては'fileencoding'のグローバルな値が使われる。 "8bit-" や "2byte-" を頭に付けてもここでは意味がなく、無視される。 オプションが設定されると、値は小文字に変換される。そのため、値を大文字 で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。 @@ -2075,6 +2597,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ファイルの編集を始めた後にこのオプションを設定すると、'modified' がオ ンになる。なぜならそのファイルの中身は、書き込まれるときには違うものに なるからである。 + これをモードラインから行うときは'modified'がオンになるのを避けるために + 'nomodified'を設定するとよいだろう。 このオプションは、'modifiable' がオフのときには変更できない。 *'fe'* @@ -2086,34 +2610,58 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'fileencodings'* *'fencs'* 'fileencodings' 'fencs' 文字列 (既定値: "ucs-bom", 'encoding' の値がUnicodeに設定されたときは - "ucs-bom,utf-8,latin1") + "ucs-bom,utf-8,default,latin1") グローバル {Vi にはない} {Vi mが |+multi_byte| 機能付きでコンパイルされたときの み有効} - 値は、ファイルの編集時に考慮される文字エンコーディングのリストである。 - ファイルが読み込まれたとき、Vimは指定されたうちの先頭の文字エンコーディ - ングを使おうとする。そのときエラーが発見されると、値のリスト内で次に並 - んでいるエンコーディングが試される。 - 有効なエンコーディングが見つかると、オプション 'fileencoding' がそれに - 設定される。 - 全て失敗した場合は、'fileencoding' は空になる。これは 'encoding' の値 - が使われていることを表す。 + 値は、既存のファイルの編集を開始するときに考慮される文字エンコーディン + グのリストである。ファイルが読み込まれると、Vimは指定されたうちの先頭 + の文字エンコーディングを使おうとする。そのときエラーが発見されると、値 + のリスト内で次に並んでいるエンコーディングが試される。あるエンコーディ + ングでうまくいくとわかると、'fileencoding'がそれに設定される。すべての + エンコーディングが失敗すると'fileencoding'は空文字列に設定され、 + 'encoding'の値が使われることになる。 警告: 文字エンコーディングを変換すると、情報が失われるおそれが ある!'encoding' が "utf-8" だと、変換は大抵成功するし、逆変換 をしても同じテキストになる。'encoding' が "utf-8" でないときは、 - 失われる文字があるかもしれない! + 非アスキー文字が失われるかもしれない!変換できない文字をどう扱 + うかは引数|++bad|で指定することができる。 + 空ファイルやアスキー文字のみのファイルではほとんどのエンコーディングで + うまくので、'fileencodings'の最初の値が使われる("ucs-bom"を除く。これ + はBOMがなければいけない)。他のエンコーディングがよければ自動コマンドイ + ベントBufReadPostを使って、そのエンコーディングが使われるかどうかを判 + 定すること。例: > + au BufReadPost * if search('\S', 'w') == 0 | + \ set fenc=iso-2022-jp | endif +< これは、ファイルが空白文字しか含まないとき'fileencoding'を + "iso-2022-jp"に設定する。 + 引数|++enc|を使ったときは'fileencodings'の値は考慮されない。 + 新規ファイルには'fileencodings'は適用されないことに注意。代わりに + 'fileencoding'のグローバルな値が適用される。これを設定するには: > + :setglobal fenc=iso-8859-2 +< とする。これは存在しないファイルが空のファイルとは異なるエンコーディン + グになることを意味する。 ファイル先頭にユニコードの BOM (Byte Order Mark: バイト順マーク) があ るかどうか調べるには、"ucs-bom" という特別な値が使える。この値を "utf-8" 等のUnicode系の値よりも後に指定すると正しく機能しない。 + 8ビットエンコーディング("latin1"など)の項目はリストの最後に書かなけれ + ばならない。そうしないとVimがエラーを検出できず、常にそのエンコーディ + ングが適用されてしまうためである。 + 特別な値"default"を使うと環境からのエンコーディングが適用される。これ + が'encoding'の既定の値である。これは'encoding'が"utf-8"に設定され、環 + 境がロシア語などlatin1でないエンコーディングを使っているときに便利であ + る。 + 'encoding'が"utf-8"のとき、ファイルが不正なバイト列を含んでいるとその + ファイルはUTF-8と認識されない。コマンド|8g8|を使うと不正なバイト列を見 + つけることができる。 + 間違った値: どこが間違っているか: + latin1,utf-8 常に"latin1"が使われてしまう + utf-8,ucs-bom,latin1 utf-8のファイルでBOMが認識されない + cp1250,latin1 常に"cp1250"が使われてしまう 'fileencodings' が空のときには 'fileencoding' は変更されない。 - 設定可能な値については 'encoding' を参照すること。それらに加え、変換ツー - ル (関数 iconv() または 'charconvert' で設定された expression) で変換 - 可能なエンコーディングも設定できる。 - 古いヴァージョンの GNU iconv() による変換は失敗することがある (Vimが与 - えがたいほど大きなバッファを要求するので)。別の実装の iconv() を手に入 - れてみること。 - 'filecharcode' と違い、値を変更しても変換は行われない。 + 設定可能な値については 'encoding' を参照すること。 + このオプションを設定しても次にファイルを読み込むときまでは効果がない。 *'fileformat'* *'ff'* 'fileformat' 'ff' 文字列 (MS-DOS, MS-Windows, OS/2 での既定値: "dos", @@ -2214,13 +2762,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる |:filetype|。 ファイルタイプが自動的に認識されないファイルのモードラインで、このオプ ションを異なった値に設定すると非常に便利である。例えば、IDL ファイルの - 中でこうする。 > - /* vim: set filetype=idl : */ -< |FileType| |filetypes| + 中でこうする。 + /* vim: set filetype=idl : */ ~ + |FileType| |filetypes| + 値の中にドットが現れると、それが2つのファイルタイプ名の区切りとなる。 + 例: + /* vim: set filetype=c.doxygen : */ ~ + こうすると最初にファイルタイプ"c"を使い、次にファイルタイプ"doxygen"を + 使う。これはファイルタイププラグインと構文ファイル両方に適用される。2 + 個以上のドットが現れてもよい。 このオプションを 'osfiletype' と混同してはいけない。こちらは実際にファ イルと共に保存されるファイルタイプのためのものである。 このオプションは 'cpoptions' のフラグ 's' や 'S' に関わらず、別のバッ ファにはコピーされない。 + 通常のファイル名文字だけが使える。"/\*?[|<>"は不正である。 *'fillchars'* *'fcs'* 'fillchars' 'fcs' 文字列 (既定では "vert:|,fold:-") @@ -2247,6 +2802,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる < これは既定値と似ているが、強調表示が行われていてもこれらの文字が使われ る点が異なっている。 + "stl"と"stlnc"に対しては1バイトの値しか使用できない。 + 強調表示が行われるものおよびその属するグループ: キーワード 強調表示グループ ~ stl:文字 StatusLine |hl-StatusLine| @@ -2287,7 +2844,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる |folding| を参照。 *'foldenable'* *'fen'* *'nofoldenable'* *'nofen'* -'foldenable' 'fen' 切替 (既定ではオフ) +'foldenable' 'fen' 切替 (既定ではオン) ウィンドウについてローカル {Vi にはない} {Vi mが |+folding| 機能付きでコンパイルされたときのみ @@ -2309,7 +2866,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる されたときのみ有効} オプション 'foldmethod' が "expr" のときに使われる expression。これは 折り畳みの深さを求めるために各行について評価される。|fold-expr| を参照。 - また |eval-sandbox| も参照。 + + この式はサンドボックス|sandbox|の中で評価することもできる。 + |sandbox-option|を参照。 + + 'foldexpr'を評価している最中にテキストを変更したり他のウィンドウへジャ + ンプすることは許されていない。|textlock| *'foldignore'* *'fdi'* 'foldignore' 'fdi' 文字列 (既定では "#") @@ -2355,7 +2917,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる きできる。 値が負のときには、このオプションは使われない。 - *'foldmarker'* *'fmr'* + *'foldmarker'* *'fmr'* *E536* 'foldmarker' 'fmr' 文字列 (既定では "{{{,}}}") ウィンドウについてローカル {Vi にはない} @@ -2429,6 +2991,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる percent "%" quickfix ":cn", ":crew", ":make" 等 search パターン検索: "/", "n", "*", "gd" 等 + (":"コマンドでの検索パターンには適用されない) + |[s|と|]s|にも適用される。 tag タグへのジャンプ: ":ta", CTRL-T 等 undo アンドゥ/リドゥ: "u" と CTRL-R コマンドがマッピングの一部として実行されたときは、このオプションは使わ @@ -2452,6 +3016,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる 閉じられた折り畳みのところに表示されるテキストを生成する expression を 指定する。|fold-foldtext| を参照。 + この式はサンドボックス|sandbox|の中で評価することもできる。 + |sandbox-option|を参照。 + + 'foldexpr'を評価している最中にテキストを変更したり他のウィンドウへジャ + ンプすることは許されていない。|textlock| + *'formatoptions'* *'fo'* 'formatoptions' 'fo' 文字列 (Vimの既定値: "tcq", Viの既定値: "vt") バッファについてローカル @@ -2464,18 +3034,85 @@ Note 1番目の形式では、行全体がオプション指定に使われる NOTE: このオプションは、'compatible' がオンのときはViの既定値に、オフ のときはVimの既定値になるので注意。 + *'formatlistpat'* *'flp'* +'formatlistpat' 'flp' 文字列 (既定では "^\s*\d\+[\]:.)}\t ]\s*") + バッファについてローカル + {Vi にはない} + リストのヘッダを認識するのに使われるパターン。'formatoptions'のフラグ + "n"に適用される。 + このパターンにマッチする部分が、それ以下の行のインデントとなる。 + |/\ze|を使うとマッチの終わりをマークしつつ、さらに文字のチェックを続け + ることができる。 + (訳注: 例えば、このオプションが既定の"^\s*\d\+[\]:.)}\t ]\s*"のとき、 + マッチする部分は + 1. the first item + wraps + ^^^^^^^^^^ + の部分である。既定の値に\zeをはさんで"^\s*\d\+[\]:.)}\t ]\ze\s*"とす + ると、リストのヘッダと認識されるパターンはまったく変わらないが、次行 + のインデントが\ze以前の部分に等しくなる: + 1. the first item + wraps + ^^^^^^ + ) + パターンの後ろに文字がなければならない。行全体がマッチすると、その行は + マッチがないのと同様に扱われてしまう。 + 既定では数字(後ろに句読点や空白があってもよい)を認識する。 + *'formatprg'* *'fp'* 'formatprg' 'fp' 文字列 (既定では "") グローバル {Vi にはない} - 選択された行をコマンド "gq" で整形するのに使われる外部プログラムの名前 + 選択された行をコマンド |gq| で整形するのに使われる外部プログラムの名前 を指定する。使われるプログラムは標準入力からテキストを読み込み、整形さ れたテキストを標準出力に出力しなければいけない。Unixのプログラム "fmt" - が代表である。このオプションが空ならば、内部の整形関数が使われる - |C-indenting|。環境変数は展開される |:set_env|。値に空白や '\' を含め - る方法については、|option-backslash| を参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + が代表である。 + オプション'formatexpr'が空でないならば、代わりにその値が使われる。この + オプションが空ならば、内部の整形関数が使われる|C-indenting|。 + 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については、 + |option-backslash| を参照。 + この式をサンドボックス|sandbox|の中で評価することができる。 + |sandbox-option|を参照。 + + *'formatexpr'* *'fex'* +'formatexpr' 'fex' 文字列 (既定では "") + バッファについてローカル + {Vi にはない} + {Vi mが|+eval|機能つきでコンパイルされたときのみ有効} + オペレータ|gq|で行の範囲を整形するために評価される式。このオプションが + 空だと'formatprg'が使われる。 + + 変数|v:lnum|は整形される最初の行を保持する。 + 変数|v:count|は整形される行数を保持する。 + 変数|v:char|は挿入されることになる文字を保持する。これは空でもよい。 + Don't insert it yet!(訳注:どういう意味?) + + 例: > + :set formatexpr=mylang#Format() +< これはautoload/mylang.vim中の関数mylang#Format()を呼ぶ。|autoload| + + また、'textwidth'がオンになっていて、テキストを追加しているときにその + 値を超えたときにもこの式が評価される。これは内部整形が使われるときと同 + じ条件で起こる。この式を評価した後のカーソル位置がテキストに対して元の + 位置と同じになるようにすること。この式を評価中は、関数|mode()|は"i"ま + たは"R"を返す。この関数が非ゼロを返すと、Vimの内部整形メカニズムが使わ + れる。 + + この式はサンドボックス|sandbox|の中で評価することができる。 + |sandbox-option|を参照。 + + *'fsync'* *'fs'* +'fsync' 'fs' 切替 (既定ではオン) + グローバル + {Vi にはない} + これがオンになっていると、ファイル書き込みの後にライブラリ関数fsync() + が呼ばれる。するとファイルがディスクにフラッシュされ、メタデータのみを + ジャーナルするファイルシステム上でも安全に書き込みが行われるようになる。 + ラップトップモードで動作するLinuxシステム上で強制的にハードドライブを + 回転させることになるが、これはある種の状況では望ましくない。これをオフ + にするとクラッシュ時にデータを失う可能性を高めることに注意。fsync()の + 実装がないシステム上ではこの変数は常にオフである。 + スワップファイルに対してfsync()をコントロールするには'swapsync'を参照。 *'gdefault'* *'gd'* *'nogdefault'* *'nogd'* 'gdefault' 'gd' 切替 (既定ではオフ) @@ -2517,14 +3154,17 @@ Note 1番目の形式では、行全体がオプション指定に使われる ユーザの "grep" が引数 "-H" を認識するなら、":grep" が1個のファイルに 対しても適切に働くように、次のようにすること。 > :set grepprg=grep\ -nH +< 特別な値: 'grepprg'が"internal"に設定されていると、|:grep|は|:vimgrep| + と同様に、|:lgrep|は|:lvimgrep|と同様に、|:grepadd|, + |:vimgrepadd|,|:lgrepadd|は|:lvimgrepadd|と同様に働くようになる。 < |:make_makeprg| も参照。そこの記述のほとんどが 'grepprg' にも適用でき るからだ。 Win32では、"findstr.exe" が見つかるならば既定値は "findstr /n" である。 見つからなければ "grep -n" である。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 - *'guicursor'* *'gcr'* + *'guicursor'* *'gcr'* *E545* *E546* *E548* *E549* 'guicursor' 'gcr' 文字列 (既定では "n-v-c:block-Cursor/lCursor, ve:ver35-Cursor, o:hor50-Cursor, @@ -2532,13 +3172,21 @@ Note 1番目の形式では、行全体がオプション指定に使われる r-cr:hor20-Cursor/lCursor, sm:block-Cursor -blinkwait175-blinkoff150-blinkon175") + MS-DOSとWin32コンソールでは: + "n-v-c:block,o:hor50,i-ci:hor15, + r-cr:hor30,sm:block") グローバル {Vi にはない} {Vi mのGUI版か、MS-DOSまたはWin32のコンソール版でのみ 有効} - Vimのそれぞれのモード内でのカーソルの外観を指定する。値はコンマ区切り - のキーワードのリストである。リストは部門別に分かれており、各部門はモー - ドリストと引数リストからなる。 + Vimのそれぞれのモード内でのカーソルの外観を指定する。GUI上では完全に機 + 能する。MSDOSやWin32コンソールではカーソルの高さだけを変更する。これは + ブロックカーソルを指定する、または垂直・水平方向のパーセンテージを指定 + することで行う。 + コンソール上ではエスケープシーケンス't_SI'と't_EI'が使われる。 + + 値はコンマ区切りのキーワードのリストである。リストは部門別に分かれてお + り、各部門はモードリストと引数リストからなる。 モードリスト:引数リスト,モードリスト:引数リスト,.. モードリストは、モードを表す以下の記号のダッシュ区切りのリストである。 n Normalモード @@ -2604,7 +3252,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる クカーソルを指定するか、垂直/水平バーカーソルの高さ/幅のパーセンテー ジを指定する。 - *'guifont'* *'gfn'* *E235* + *'guifont'* *'gfn'* + *E235* *E596* *E610* *E611* 'guifont' 'gfn' 文字列 (既定では "") グローバル {Vi にはない} @@ -2614,6 +3263,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる 表示される。別のフォント名を試すには、フォント名のコンマ区切りのリスト を指定できる。その中の最初の使用可能なフォントが使われる。 オプション 'guifontset' が空でないとき、'guifont' は使われない。 + + 'guifontset'がサポートされているシステム上(X11)で、'guifontset'が空で + ないならば'guifont'が使われる。 + コンマの後の空白は無視される。フォント名の中にコンマを指定するには、コ ンマの前に '\' を置くこと。さらにオプションの値の中で空白や '\' を使う には、それらの前に余分に '\' を置かなければならない。 @@ -2622,11 +3275,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる (訳注: 結果は "Screen15, 7x13,font\,with\,commas") < とすると、まずVimはフォント "Screen15" を使おうとし、だめなら代わりに "7x13" を、そして "font,with,commas" を使おうとする。 - *E236* - Note フォントはモノスペース (訳注: 固定ピッチ、固定幅ともいう) でなけ - ればならない (全ての文字が同じ幅でなければならない)。 - X11でフォントのプレビューをするには、プログラム "xfontsel" が使えるか - もしれない。"xlsfonts" は、使用可能な全てのフォントのリストを与える。 + + フォントをどれも読み込めなかったら現在の設定のままになる。空のフォント + リストが与えられると、他のリソースを使うことを試みる。 + Win32, GTKとPhotonのみでは: > :set guifont=* < とするとフォント選択ウィンドウが開き、望みのフォントを選択できる。フォ @@ -2636,10 +3288,34 @@ Note 1番目の形式では、行全体がオプション指定に使われる 組み込みの既定フォントを使おうとする (Xの場合では "7x13")。指定される フォント名は "normal" な (訳注: 太字や斜字体でない) フォントでなければ ならない。Vimは関連する太字体や斜字体を見つけようとする。 + + Win32, GTK, Mac OS, Photonでは: > + :set guifont=* +< これはフォント選択ダイアログを開く。そこで望みのフォントを選択すること + ができる。 + + フォント名は使っているGUIに依存する。様々なシステムに対して'guifont'を + 設定する方法については|setting-guifont|を参照。 + + GTK+ 2ではフォント名は次のようになる: > + :set guifont=Andale\ Mono\ 11 +< これだけである。もうXLFDは受け付けない。 + + Mac OXSでは次のようにする: > + :set guifont=Monaco:h10 +< 'macatsui'も参照。表示上の問題を解決する助けになる。 + *E236* + Note フォントは等幅でなければならない (全ての文字が同じ幅でなければな + らない)。例外はGTK 2である。どんなフォントでも受け付けるが、等幅フォン + トがもっともきれいに見える。 + + X11でフォントのプレビューをするには、プログラム "xfontsel" が使えるか + もしれない。"xlsfonts" は、使用可能な全てのフォントのリストを与える。 + Win32のGUIについて *E244* *E245* - フォント名には以下のオプションを指定できる。 - hXX - 文字高が XX (単位はポイント) - wXX - 文字幅が XX (単位はポイント) + hXX - 文字高が XX (単位はポイント。浮動小数点数でもよい) + wXX - 文字幅が XX (単位はポイント。浮動小数点数でもよい) b - ボールド (太字体) i - イタリック (斜字体) u - 下線付き @@ -2649,22 +3325,24 @@ Note 1番目の形式では、行全体がオプション指定に使われる GB2312, GREEK, HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS, SYMBOL, THAI, TURKISH, VIETNAMESE ANSI, BALTIC + 通常は"cDEFAULT"を使うとよいだろう。 オプションの区切りには ':' を使うこと。 - 空白の代わりに '_' が使えるので、空白を '\' でエスケープする必要はな い。 - 例: > - :set guifont=courier_new:h12:w5:b:cRUSSIAN -< モノスペースフォントとそれらに関するコメントについては - <http://nova.bsuvc.bsu.edu/prn/monofont/> を参照。 - |font-sizes| も参照。 + :set guifont=courier_new:h12:w5:b:cRUSSIAN + :set guifont=Andale_Mono:h7.5:w4.5 +< |font-sizes| も参照。 - *'guifontset'* *'gfs'* *E250* *E252* *E234* + *'guifontset'* *'gfs'* + *E250* *E252* *E234* *E597* *E598* 'guifontset' 'gfs' 文字列 (既定では "") グローバル {Vi にはない} {Vi mのGUI版で、|+xfontset| 機能付きでコンパイルされた ときのみ有効} + {GTK+ 2 GUIでは利用できない} このオプションには2種類 (またはそれ以上) のフォントを指定する。値が空 のときは無視される。 1種類目は普通の英語に使われるもので、2種類目はユー ザの使う特別な言語用である。 |xfontset| を参照。 @@ -2681,7 +3359,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 次の例は多くのX11システムで正しく機能する。 > :set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-* < - *'guifontwide'* *'gfw'* *E231* + *'guifontwide'* *'gfw'* *E231* *E533* *E534* 'guifontwide' 'gfw' 文字列 (既定では "") グローバル {Vi にはない} @@ -2690,12 +3368,24 @@ Note 1番目の形式では、行全体がオプション指定に使われる のときは無視される。読み込み可能なフォントのうち先頭のものが使われる。 Note: 指定したフォントの幅は、オプション 'guifont' で指定したフォント のちょうど2倍の幅で、同じ高さのものでなければならない。 - このオプションは、'encoding' が "utf-8" で、かつ 'guifontset' が空であ + + GTK+ 2を除くすべてのバージョン: + + 'guifontwide'は、'encoding' が "utf-8" で、かつ 'guifontset' が空であ るか不適切なものであるときにのみ使われる。 'guifont' が設定されていて、その中に適切なフォントが含まれており、かつ 'guifontwide' が空のとき、Vimは適合する2倍幅のフォントを探し、 'guifontwide' をそれに設定しようとする。 + GTK+ 2 GUI のみ: *guifontwide_gtk2* + + このオプションが設定されており、それが適切な値であるとき、'encoding'が + "utf-8"でなくても常に2倍幅文字に対して'guifontwide'が使われる。 + Vimは自動的に'guifontwide'に適合する値を探そうとはしない。 + 'guifontwide'が空ならばPango/Xftが'guifont'で利用できない文字に対する + フォントを選ぶ。そのため、Pango/Xftが選んだ値を上書きしたいのでない限 + り、'guifontwide'を設定する必要はまったくない。 + *'guiheadroom'* *'ghr'* 'guiheadroom' 'ghr' 数値 (既定では 50) グローバル @@ -2709,7 +3399,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'guioptions'* *'go'* 'guioptions' 'go' 文字列 (既定では "gmrLtT" (MS-Windows), - "agimrLtT" (GTK, MotifとAthena) + "agimrLtT" (GTK, MotifとAthena)) グローバル {Vi にはない} {Vi mのGUI版でのみ有効} @@ -2746,13 +3436,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'c' 単純な選択にはポップアップダイアログでなくコンソールダイアログ を使う。 + + 'e' 'showtabline'で指定されたタイミングでタブを追加する。 + 'guitablabel'を使うとタブのラベルのテキストを変更することがで + きる。'e'がないと非GUIのタブページラインが使われる。GUIのタブ + はいくつかのシステム上(現在はGTK, Motif, MS-Windows)でのみサポー + トされている。 + 'f' フォアグラウンド (foreground): シェルからGUIを開始し、そのシェ ルからgVimを独立させる際に関数 fork() を使わない。これはエディ タが終了するのを待つプログラム (例えばメールプログラム等) に対 して使う。フォアグラウンドでGUIを開始するには、これの代わりに "gvim -f" や ":gui -f" も使える |gui-fork|。 Note: このオプションはファイル vimrc 内で設定するよう注意。ファ - イル gvimrc が読み込まれたときはフォーキングがすでに実行されて + イル|gvimrc|が読み込まれたときはフォーキングがすでに実行されて いるかもしれない。 'i' Vimのアイコンを使う。KDEのGTKではウィンドウの左上に表示される。 @@ -2772,8 +3469,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 't' メニュー項目の切り離しを有効にする。現在のところWin32, GTK+ と Motif 1.2 GUI でのみ有効である。 - 'T' ツールバーを表示する。現在のところWin32, GTK+ と Motif 1.2 GUI - でのみ有効である。 + 'T' ツールバーを表示する。現在のところWin32, GTK+ と Motif, + Photon, Athena GUIでのみ有効である。 'r' 右スクロールバーを常に表示する。 'R' 垂直分割されたウィンドウがあるときのみ、右スクロールバーを表示 @@ -2781,7 +3478,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'l' 左スクロールバーを常に表示する。 'L' 垂直分割されたウィンドウがあるときのみ、左スクロールバーを表示 する。 - 'b' 下 (水平) スクロールバーを表示する。 + 'b' 下 (水平) スクロールバーを表示する。サイズは表示されている行の + 中で一番長い行によって決まる。またはフラグ'h'が含まれていると + きはカーソル行によって決まる。|gui-horiz-scroll| + 'h' 水平スクロールバーのサイズをカーソル行の長さに制限する。計算量 + を軽減させる。|gui-horiz-scroll| そう、もちろん、本当に望むのなら、左スクロールバーと右スクロールバーを 「両方」使うことだってできる :-) 詳しい情報については |gui-scrollbars| @@ -2794,7 +3495,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる ジャの中にはこれが必要なものもある。カーソルが正しいタイミング で点滅したり変形したりしないときは、これを追加してみること。こ れはGUIを開始する前に設定しなければならない。ユーザのファイル - gvimrc 内で設定すること。GUIが開始した後にこのフラグを追加した + |gvimrc|内で設定すること。GUIが開始した後にこのフラグを追加した り取り除いたりしても、効果はない。 'F' フッタを追加する。Motifでのみ有効である。|gui-footer| を参照。 @@ -2812,13 +3513,15 @@ Note 1番目の形式では、行全体がオプション指定に使われる その他: "$VIMRUNTIME/doc/help.txt") グローバル {Vi にはない} - ヘルプファイルの名前。全てのヘルプファイルは単一のディレクトリ内に一緒 - に置かれるべきである。環境変数は展開される |:set_env|。例: + ヘルプファイルの名前。Vim に付属のヘルプファイルは全て単一のディレクト + リ内に一緒に置かれるべきである。そのディレクトリの他に、'runtimepath' + 中の全ての "doc" ディレクトリも対象になる。 + 環境変数は展開される |:set_env|。例: "$VIMRUNTIME/doc/help.txt"。環境変数 $VIMRUNTIME が設定されてないとき は、$VIM も試される。|$VIMRUNTIME| を参照。値に空白や '\' を含めること については |option-backslash| も参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'helpheight'* *'hh'* 'helpheight' 'hh' 数値 (既定では 20) @@ -2832,6 +3535,25 @@ Note 1番目の形式では、行全体がオプション指定に使われる である。ウィンドウ高が 'helpheight' より小さくなってしまうとき、実際の 高さは 'helpheight' になる。こうしないようにするには 0 に設定すること。 + *'helplang'* *'hlg'* +'helplang' 'hlg' 文字列 (既定では: メッセージ言語または空) + グローバル + {Vi が |+multi_lang| 機能つきでコンパイルされたときの + み有効} + {Vi にはない} + コンマ区切りの言語のリスト。これらの言語の中から、探しているヘルプが見 + つかった最初の言語を使う。英語のヘルプは常に優先度が最後になる。英語の + 優先度を上げるために "en" を追加することはできるが、そうしても、その言 + 語に存在し、英語のヘルプに存在しないタグを見つけるだけである。 + 訳注: 上の文よくわからない。 + 例: > + :set helplang=de,it +< こうすると最初にドイツ語を検索し、次にイタリア語、そして最後に英語のヘ + ルプファイルを検索する。 + |CTRL-]| や英語でないヘルプファイル中で ":help!" を使ったときは、この + オプションより先に現在の言語からタグを検索する。|help-translated| を参 + 照。 + *'hidden'* *'hid'* *'nohidden'* *'nohid'* 'hidden' 'hid' 切替 (既定ではオフ) グローバル @@ -2844,6 +3566,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 隠れ状態にすることがある。バッファの内容が変更されていて、'autowrite' がオフであるか書き込みが不可能な状態であり、フラグ '!' が使われたよう なときだ。|windows.txt| も参照。 + 1つのバッファだけを隠れ状態にするにはオプション 'bufhidden' を使う。 このオプションは、一つ一つのコマンドに対して ":hide {command}" とする ことでオンにできる |:hide|。 警告: 隠れバッファに対する変更は忘れがちである。コマンド ":q!" や @@ -2856,7 +3579,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる M:ModeMsg,n:LineNr,r:Question, s:StatusLine,S:StatusLineNC,c:VertSplit t:Title,v:Visual,w:WarningMsg,W:WildMenu, - f:Folded,F:FoldColumn") + f:Folded,F:FoldColumn,A:DiffAdd, + C:DiffChange,D:DiffDelete,T:DiffText, + >:SignColumn,B:SpellBad,P:SpellCap, + R:SpellRare,L:SpellLocal, + +:Pmenu,=:PmenuSel, + x:PmenuSbar,X:PmenuThumb") グローバル {Vi にはない} このオプションは、様々な対象に対する強調表示モードを設定する。文字の組 @@ -2890,6 +3618,19 @@ Note 1番目の形式では、行全体がオプション指定に使われる |hl-WildMenu| W 'wildmenu' によって表示されるワイルドカードマッチ |hl-Folded| f 閉じられた折り畳みを表す行 |hl-FoldColumn| F 'foldcolumn' + |hl-DiffAdd| A diff モードで追加された行 + |hl-DiffChange| C diff モードで変更された行 + |hl-DiffDelete| D diff モードで削除された行 + |hl-DiffText| T diff モードで挿入されたテキスト + |hl-SignColumn| > |signs| に使われる桁 + |hl-SpellBad| B スペルミスの単語 |spell| + |hl-SpellCap| P 大文字で始まるべきの単語 |spell| + |hl-SpellRare| R 滅多に現れない単語 |spell| + |hl-SpellLocal| L 他の地域の単語 |spell| + |hl-Pmenu| + ポップアップメニューの通常の行 + |hl-PmenuSel| = ポップアップメニューの通常の行 + |hl-PmenuSbar| x ポップアップメニューのスクロールバー + |hl-PmenuThumb| X ポップアップメニューのスクロールバーのつまみ 表示モードは以下の通りである。 r 反転 (termcapの項目 "mr" と "me") @@ -2897,11 +3638,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる b 太字体 (termcapの項目 "md" と "me") s 強調 (termcapの項目 "so" と "se") u 下線 (termcapの項目 "us" と "ue") + c undercurl (termcapの項目 "Cs" と "Ce") n 強調表示なし - 強調表示なし : 強調表示グループを使って設定 (訳注: 「文字の組」と書きながら、既定値はどれも2文字でないのは、 - この ":" が使われていているからである。これだけは例外で、グルー + この ":" が使われているからである。これだけは例外で、グルー プ名を使って指定できる) ユーザに指定されなかった項目については、既定値が使われる。 表示モードの効果を変更したいなら、例として |dos-colors| を参照。 @@ -3114,7 +3856,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる そのときは XIM を無効にするために 'imdisable' を使うこと。 *'include'* *'inc'* -'include' 'inc' 文字列 (既定では "^#\s*include") +'include' 'inc' 文字列 (既定では "^\s*#\s*include") グローバル/バッファについてローカル |global-local| {Vi にはない} {Vi mが |+find_in_path| 機能付きでコンパイルされたとき @@ -3122,9 +3864,15 @@ Note 1番目の形式では、行全体がオプション指定に使われる (訳注: プログラミング言語の) インクルード命令を探すのに使われるパター ンを設定する。値はコマンド "/" と同様の検索パターンである (|pattern| を参照)。既定値はC言語プログラム用に設定されている。このオプションはコ - マンド "[i", "]I", "[d" 等に使われる。オプション 'isfname' はマッチし - たパターンの後に続くファイル名を認識するために使われる。値に空白や '\' - を含める方法については、 |option-backslash| を参照。 + マンド "[i", "]I", "[d" 等に使われる。 + 通常、マッチしたパターンの後に続くファイル名を認識するためにオプション + 'isfname' が使われる。しかしパターン中に "\zs" が入っている場合、 + "\zs" にマッチしたテキストから最後まで、または "\ze" が入っている場合 + はそこまでがファイル名として認識される。スペースなど、'isfname' に入っ + ていない文字を含めるにはこれを使う。そして 'includeexpr' を使ってマッ + チしたテキストを処理することができる。 + スペースとバックスラッシュを含める方法については|option-backslash| を + 参照。 *'includeexpr'* *'inex'* 'includeexpr' 'inex' 文字列 (既定では "") @@ -3143,20 +3891,32 @@ Note 1番目の形式では、行全体がオプション指定に使われる る。 また |<cfile>| にも使われる。 + この式はサンドボックス |sandbox| の中でも評価することができる。 + |sandbox-option| を参照。 + + 'includeexpr' を評価している間に、テキストを変更したり他のウィンドウに + 移ることは許されない。|textlock| + *'incsearch'* *'is'* *'noincsearch'* *'nois'* 'incsearch' 'is' 切替 (既定ではオフ) グローバル {Vi にはない} {Vi mが |+extra_search| 機能付きでコンパイルされたとき のみ有効} - 検索パターンを打ち込んでいる間にも、打ち込んだところまでのパターンがマッ + 検索コマンドを打ち込んでいる間にも、打ち込んだところまでのパターンがマッ チするテキストを、すぐに表示する。マッチした文字列は強調表示される。パ ターンが不適切であったり見つからなければ、何も表示されない。画面は次々 更新されることになるので、このオプションは表示の速いターミナルでのみ有 - 用である。 Note マッチが表示されても、カーソルは実際にはマッチした場所 - に移動していないので注意。カーソルを移動させるには、やはり <CR> を打ち - 込んで検索コマンドを完了させる必要がある。強調表示は、オプション - 'highlight' のフラグ 'i' によって設定できる。'hlsearch' も参照。 + 用である。 + Note マッチが表示されても、カーソルは実際にはマッチした場所に移動して + いないので注意。カーソルを移動させるには、やはり <CR> を打ち込んで検索 + コマンドを完了させる必要がある。 + 強調表示は、オプション'highlight' のフラグ 'i' によって設定できる。 + 'hlsearch' も参照。 + CTRL-L を押すと、現在マッチしているテキストの後からコマンドラインへ1文 + 字を追加することができる。 + CTRL-R CTRL-W を押すと、現在マッチしているテキストの末尾から単語を追加 + することができる。そのとき、既にタイプされている文字は除かれる。 NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな るので注意。 @@ -3173,7 +3933,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる トの設定を上書きする。 'paste' がオンのとき、このオプションはインデントに使われない。 指定された expression が評価されるとき、変数 |v:lnum| はインデント計算 - の対象となっている行の行番号に設定される。 + の対象となっている行の行番号に設定される。また、この式を評価するとき、 + カーソルもこの行に置かれる(移動してしまうかもしれないが)。 指定された expression は、インデントすべき空白の数を返さなければならな い。そのままのインデントを保たせるには "-1" を返させればよい (つまり、 こうするとインデントには 'autoindent' が使われる)。 @@ -3186,10 +3947,16 @@ Note 1番目の形式では、行全体がオプション指定に使われる :set indentexpr=GetMyIndent() < 'debug' が "msg" を含まないない限り、エラーメッセージの表示は抑制され る。 - |indent-expression| を参照。|eval-sandbox| も参照。 + |indent-expression| を参照。 NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな るので注意。 + この式はサンドボックス |sandbox| の中で評価することができる。 + |sandbox-option| を参照。 + + 'includeexpr' を評価している間に、テキストを変更したり他のウィンドウに + 移ることは許されない。|textlock| + *'indentkeys'* *'indk'* 'indentkeys' 'indk' 文字列 (既定では "0{,0},:,0#,!^F,o,O,e") バッファについてローカル @@ -3225,9 +3992,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる |i_CTRL-O|。コマンドが別のキー列にマッピングされていたときは、オプショ ン 'insertmode' がオフであるときのように実行される。つまりマッピング の内容が終了するまでNormalモードが続く。 - *i_CTRL-L* - 数個のNormalモードコマンドを使うためには先に CTRL-L を使い、その後 - Insertモードに戻るために <Esc> を使う。 + Insertモードに戻るために <Esc> を使う。Note CTRL-L を使うと、 + 'insertmode' をオフにして <Esc> を押したときと同様にカーソルが左へ移 + 動する。|i_CTRL-L| 'insertmode' がオンになると、以下の項目に変化がある。 - ファイルの編集を始めたとき、VimはInsertモードになっている。 @@ -3390,7 +4158,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる はまた、設定してしまうとユーザ自身も値を知ることができないということで ある。タイプミスをしないよう注意! - *'keymap'* *'kmp'* + *'keymap'* *'kmp'* *E544* 'keymap' 'kmp' 文字列 (既定では "") バッファについてローカル {Vi にはない} @@ -3400,6 +4168,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションを適正なキーマップ名に設定すると、キーマッピングが有効に なるようにオプション 'iminsert' が 1 になるという影響がある。また 'imsearch' も、元が -1 でない限り 1 になる。 + 通常のファイル名文字だけが使用できる。"/\*?[|<>" は不正である。 *'keymodel'* *'km'* 'keymodel' 'km' 文字列 (既定では "") @@ -3416,20 +4185,22 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'keymodel' は、コマンド |:behave| によって設定される。 *'keywordprg'* *'kp'* -'keywordprg' 'kp' 文字列 (既定では "man" または "man -s", DOSでは: "", - OS/2では: "view /", VMSでは: "help") - グローバル - {Vi にはない} - コマンド |K| に使われるプログラム。環境変数は展開される |:set_env|。空 - のときには ":help" が使われる。 +'keywordprg' 'kp' 文字列 (既定では "man" または "man -s", DOSでは: + ":help", OS/2では: "view /", VMSでは: "help") + グローバルまたはバッファについてローカル|global-local| + {Vi にはない} + コマンド |K| に使われるプログラム。環境変数は展開される |:set_env|。 + Vim の内部ヘルプを開くコマンドは ":help" である(以前はこのオプションの + グローバル値を空にすると Vim の内部ヘルプが使われたが、今は推奨されて + いない)。 "man" が指定されたときは、"K" に指定されたカウントは自動的に章番号に変 換される。"man -s" でも同様で、この場合カウントがないときは "-s" は取 り除かれる。 値に空白や '\' を含める方法については、|option-backslash| を参照。 例: > :set keywordprg=man\ -s -< 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 +< 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'langmap'* *'lmap'* *E357* *E358* 'langmap' 'lmap' 文字列 (既定では "") @@ -3448,8 +4219,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 文字 (例えばUTF-8) を設定してもよいが、文字それぞれの下位 8 ビットのみ が使われる。 - 例 (ギリシア語に対して): *greek* - :set langmap=チA,ツB,リC,トD,ナE,ヨF,テG,ヌH,ノI,ホJ,ハK,ヒL,フM,ヘN,マO,ミP,QQ,ムR,モS,ヤT,ネU,ルV,WW,ラX,ユY,ニZ,畭,稈,�,臈,蘰,�,緘,輊,駟,竫,麑,???,�,???,�,�,qq,�,�,�,鑾,�,�,�,�,諂 + 例 (ギリシア語に対して、UTF-8で): *greek* > + :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz < 例 (コマンドの z と y の意味の交換): > :set langmap=zy,yz,ZY,YZ < @@ -3489,6 +4260,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる を使うには、次のようにする。 > :set langmenu=nl_NL.ISO_8859-1 < 'langmenu' が空のときは、変数 |v:lang| が使われる。 + 通常のファイル名文字だけが使用できる。"/\*?[|<>" は不正である。 ユーザの環境変数 $LANG は英語以外の言語だが、必ず英語のメニューを使い たいならば、次のようにする。 > :set langmenu=none @@ -3518,8 +4290,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる グローバル {Vi にはない} オンのときは、マクロやレジスタの内容およびその他のキーボードから打ち込 - まれないコマンドを実行する間、画面は再描画されなくなる。画面の再描画を - 強制的に行うには、コマンド |:redraw| を使うこと。 + まれないコマンドを実行する間、画面は再描画されなくなる。また、ウィンド + ウタイトルの更新も後回しになる。画面の再描画を強制的に行うには、コマン + ド |:redraw| を使うこと。 *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* 'linebreak' 'lbr' 切替 (既定ではオフ) @@ -3536,13 +4309,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる Note 大抵、<EOL> の後の <Tab> は正しい数の空白として表示されないので注 意。 - *'lines'* + *'lines'* *E593* 'lines' 数値 (既定では 24 またはターミナルの高さ) グローバル 画面上の行数。普通このオプションはターミナルの初期化の時点で設定され、 - 手動で設定する必要はない。 + 手動で設定する必要はない。|posix-screen-size| も参照。 VimがGUI環境内やサイズ変更可能なウィンドウ内で実行されているときは、こ - のオプションを変更するとウィンドウサイズも変更されるかもしれない。 + のオプションを変更するとウィンドウサイズも変更される。このサイズ設定を + GUI でだけ使用したいなら、このコマンドを |gvimrc| ファイルに書くこと。 + 行数の最大値は、画面に収まる行数に制限される。可能な限りウィンドウの高 + さを大きくするには次のコマンドを使う: > + :set lines=999 +< 最小値は2、最大値は1000。 + 行数が期待したのより少なかったら、オプション 'guiheadroom' を確認する + こと。 あなたがこのオプションを変更したのに、Vimがディスプレイの行数の物理的 な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが ある。 @@ -3556,7 +4336,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 行間の幅のピクセル数。フォントが文字セルの高さを一杯に使っていて、行同 士が接触してしまうときに便利である。1 以上のときには下線を引く余裕がで きる。 - + フォントによっては行間が広すぎることがある。その場合は 'linespace'を負 + の値にすると調整することができる。しかしそうすると表示に問題が出る場合 + がある。 *'lisp'* *'nolisp'* 'lisp' 切替 (既定ではオフ) バッファについてローカル @@ -3580,6 +4362,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi mが |+lispindent| 機能付きでコンパイルされたときの み有効} Lisp用のインデント方法を設定するキーワードの、コンマ区切りのリスト。 + |'lisp'| *'list'* *'nolist'* 'list' 切替 (既定ではオフ) @@ -3611,14 +4394,19 @@ Note 1番目の形式では、行全体がオプション指定に使われる の文字より前にテキストが存在するとき (訳注: 上の行の末 尾が画面の右端より伸びているとき) に、最前列に表 示される文字。 + nbsp:文字 non-breakable な空白(文字 0xA0, 160)を示す文字。 + 指定されない場合は空白のまま。 + (訳注: 0xA0はLatin1でnon-breakableな空白を表す) - 文字 ':' と ',' は使えない。 + 文字 ':' と ',' は使えない。'encoding' が "utf-8" のときはUTF-8の文字 + が使える。そうでないときはprintableな文字 (訳注: 文書先頭を参照) だけ + が使える。全ての文字は幅が1でなければならない。 例: > :set lcs=tab:>-,trail:- - :set lcs=tab:>-,eol:< + :set lcs=tab:>-,eol:<,nbsp:% :set lcs=extends:>,precedes:< -< "eol", "extends", "precedes" には強調表示グループ "NonText" が、"tab" - と "trail" には "SpecialKey" が適用される。 +< "eol", "extends", "precedes" には強調表示グループ "NonText" が、 + "nbsp", "tab" と "trail" には "SpecialKey" が適用される。 *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'* 'loadplugins' 'lpl' 切替 (既定ではオン) @@ -3631,6 +4419,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる Note コマンドライン引数 "-u NONE" または "--noplugin" によってこのオプ ションをオフにできることに注意 |-u| |--noplugin|。 + *'macatsui'* *'nomacatsui'* +'macatsui' 切替 (既定ではオン) + グローバル + {Mac GUI 版でのみ利用可能} + これは描画が正しく行われないときのための回避策である。マルチバイト機能 + 付きでコンパイルされ、このオプションがオンになっているとATSUI テキスト + 描画が使われる。オフのときは ATSUI テキスト描画は使われない。描画に問 + 題が出るならこのオプションをオフにすること。将来のバージョンではこの問 + 題は解決し、このオプションは非推奨になるかもしれない。そのため、このオ + プションをオフにするには次のような方法を使うこと: > + if exists('&macatsui') + set nomacatsui + endif +< *'magic'* *'nomagic'* 'magic' 切替 (既定ではオン) グローバル @@ -3638,7 +4440,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる NOTE: パターンの使用に関わる移植性の問題を避けるため、常にこのオプショ ンを既定値のオンにしておくこと。古いViのスクリプトを使うときのみオフに 切り替えること。それ以外では、いつでも 'magic' がオンのときに動作する - ようなパターンを書くこと。 + ようなパターンを書くこと。検索パターンに "\M" を含めると magic になる。 + |/\M| *'makeef'* *'mef'* 'makeef' 'mef' 文字列 (既定では "") @@ -3655,8 +4458,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ":cf" には使われ「ない」。それについてはオプション 'errorfile' を参照。 環境変数は展開される |:set_env|。 値に空白や '\' を含める方法については、|option-backslash| を参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'makeprg'* *'mp'* 'makeprg' 'mp' 文字列 (既定では "make", VMSでは "MMS") @@ -3672,8 +4475,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる :set makeprg=gmake\ \\\|\ マイフィルタ < 引数が挿入される場所を指定するには、"$*" を (複数回でも) 使える。例: > :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} -< 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 +< 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'matchpairs'* *'mps'* 'matchpairs' 'mps' 文字列 (既定では "(:),{:},[:]") @@ -3702,6 +4505,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる プションと違い、単位がミリ秒でないので注意。これは Nvi との互換性を保 つためである。 + *'maxcombine'* *'mco'* +'maxcombine' 'mco' 数値 (既定では 2) + グローバル + {Vi にはない} + {Vi m が |+multi_byte| 機能付きでコンパイルされたとき + のみ利用可能} + 表示の際にサポートされている文字の組み合わせ数の最大値。 + 'encoding' が "utf-8" のときだけ適用される。 + ほとんどの言語に対しては既定値で十分である。ヘブライ語は4以上が必要で + ある。最大値は6。 + このオプションの値が2のときでも、それ以上の組み合わせのテキストを編集 + することは可能である。ただしそれを表示することはできない。|g8| や|ga| + を使う。|mbyte-combining| を参照。 + *'maxfuncdepth'* *'mfd'* 'maxfuncdepth' 'mfd' 数値 (既定では 100) グローバル @@ -3733,6 +4550,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる る。このオプションの最大値は 2000000 である。限界を設けないときにはこ の値に設定すること。'maxmemtot' も参照。 + *'maxmempattern'* *'mmp'* +'maxmempattern' 'mmp' 数値 (既定では 1000) + グローバル + {Vi にはない} + パターンマッチングに使うメモリ量の最大値(キロバイト単位)。設定可能な最 + 大値は2000000。限界を設けないときにはこの値に設定すること。 + *E363* + この制限に達したときは、エラーメッセージを表示し、たいていの場合 + CTRL-C が押されたのと同じように振る舞う。 + 制限に達するのはたいてい、検索パターンが極めて非効率であるか複雑過ぎる + ときである。これは非常に長い行の上で "\(.\)*" を検索するとすぐになる。 + ".*" の方がはるかによい。 + 'maxmempattern' の制限に達する前に Vim がメモリ不足になるかもしれない。 + *'maxmemtot'* *'mmt'* 'maxmemtot' 'mmt' 数値 (既定では 2048 から 10240 の間 (システムによっ て異なる) または利用できるメモリの半分) @@ -3751,6 +4582,41 @@ Note 1番目の形式では、行全体がオプション指定に使われる に対して使われる。このオプションを変更しても直接の効果はなく、メニュー を更新しなければならない。 + *'mkspellmem'* *'msm'* +'mkspellmem' 'msm' 文字列 (既定では "460000,2000,500") + グローバル + {Vi にはない} + {Vi mが |+syntax| 機能付きでコンパイルされたときのみ有 + 効} + |:mkspell| に対するパラメータ。単語ツリーの圧縮を開始するタイミングを + 設定する。単語がたくさんあると圧縮に時間がかかるが、メモリ不足になるの + を防ぐためには必要な事である。単語につき使われるメモリ量はそれらの単語 + がどれだけ似ているかに密接に関係する。そのため、この設定は複雑になる。 + + 3つの数値があり、それらをコンマで区切る: + {start},{inc},{added} + + ほとんどの言語では圧縮しない単語ツリーがメモリに収まる。{start} は圧縮 + を行う前に使えるメモリ量をキロバイト単位で指定する。これは Vim が利用 + 可能なメモリ量より少し少なくするべきである。 + + {start} の制限を超えたとき、別な圧縮を行う前に割り当てることができるメ + モリ量を {inc} によりキロバイト単位で指定する。これを低い値にするとよ + り少ない単語を追加した後に圧縮を行うことになる。高い値にするとより多く + のメモリが割り当てられることになる。 + + 圧縮を行った後、さらにメモリが必要になって {inc} の制限が無視されて圧 + 縮が行われる前に {added}×1024 個の単語を追加することができる。これを + 低い値にすると {inc} の制限にぶつかる機会が少なくなり、より少ないメモ + リを使うが、遅くなる。 + + これらの値が重要になる言語はイタリア語とハンガリー語である。システムが + 約 512Mbyte のメモリを備えているときは既定値でうまくいく。1 GByte のメ + モリを持っているならこうしてもよい: > + :set mkspellmem=900000,3000,800 +< 512 Mbyte より少ないメモリしか持っていないなら、'mkspellmem' がどんな + 値であっても、ある言語に対しては |:mkspell|が失敗するかもしれない。 + *'modeline'* *'ml'* *'nomodeline'* *'noml'* 'modeline' 'ml' 切替 (Vimの既定値はオン、Viの既定値はオフ) バッファについてローカル @@ -3799,12 +4665,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 値に、オフのときはVimの既定値になるので注意。 - *'mouse'* + *'mouse'* *E538* 'mouse' 文字列 (既定では "", MS-DOS, Win32とGUI版では "a") グローバル {Vi にはない} オンのとき、マウスが利用可能になる。特定のターミナルでのみ有効である - (xterm, MS-DOS, Win32 |win32-mouse|, qnx pterm または gpm 付きの Linux + (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm または gpm 付きの Linux コンソール)。GUIでマウスを使うことについては、|gui-mouse| を参照。 マウスの利用はモードごとに設定できる。 n Normalモード @@ -3882,9 +4748,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる オプション 'mousemodel' は、コマンド |:behave| で設定できる。 - *'mouseshape'* *'mouses'* + *'mouseshape'* *'mouses'* *E547* 'mouseshape' 'mouses' 文字列 (既定では "i:beam,r:beam,s:updown,sd:cross, - m:no,v:rightup-arrow" + m:no,ml:up-arrow,v:rightup-arrow") グローバル {Vi にはない} {Vi mが |+mouseshape| 機能付きでコンパイルされたときの @@ -3931,8 +4797,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる x udsizing 上下のサイズ変更を示す x lrsizing 左右のサイズ変更を示す x crosshair 大きくて細い + - x hand1 白い手 - x hand2 黒い手 + x hand1 黒い手 + x hand2 白い手 x pencil 文字を書くときの、あの鉛筆 x question 大きな ? x rightup-arrow 右上向き矢印 @@ -3946,7 +4812,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 通常のマウスカーソルを使う。 例: > - :set mouseshape=s:size,m:no + :set mouseshape=s:udsizing,m:no < とすると、マウスカーソルはステータス行の上ではサイズ変更を表す形になり、 「続けるには」プロンプトが表示されているときには入力不可を表す (この状 態ではマウスクリックに効果がないので)。 @@ -3958,6 +4824,15 @@ Note 1番目の形式では、行全体がオプション指定に使われる GUI版, MS-DOS, Win32とUnixのxtermでのみ有効。ダブルクリックなどとして 認識されるクリックとクリックの間の時間を、ミリ秒単位で設定する。 + *'mzquantum'* *'mzq'* +'mzquantum' 'mzq' 数値 (既定では 100) + グローバル + {Vi にはない} + {Vi mが |+mzscheme| 機能付きでコンパイルされたときのみ + 有効} + MzScheme のスレッドを切り替える間隔(ミリ秒)。 + 負または0にするとスレッドのスケジューリングを行わなくなる。 + *'nrformats'* *'nf'* 'nrformats' 'nf' 文字列 (既定では "octal,hex") バッファについてローカル @@ -3979,10 +4854,53 @@ Note 1番目の形式では、行全体がオプション指定に使われる ウィンドウについてローカル 毎行の前に行番号を表示する。オプション 'cpoptions' にフラグ 'n' が含ま れていないときは、折り返された行の先頭は行番号の表示される桁に入り込ま - ない ('compatible' がオフのときはこれが既定である)。折り返された行が長 - すぎて (訳注: 行の途中の部分だけで画面一杯になってしまい) 行の本当の先 - 頭の文字が表示されていないときは、文字 '-' が行番号の前に表示される。 - 行番号に使われる強調表示グループについては |hl-LineNr| を参照。 + ない ('compatible' がオフのときはこれが既定である)。 + オプション 'numberwidth' で行番号の幅を設定することができる。 + 折り返された行が長すぎて (訳注: 行の途中の部分だけで画面一杯になってし + まい) 行の本当の先頭の文字が表示されていないときは、文字 '-' が行番号 + の前に表示される。行番号に使われる強調表示グループについては + |hl-LineNr| を参照。 + + *'numberwidth'* *'nuw'* +'numberwidth' 'nuw' 数値 (Vim の既定値: 4 Vi の既定値: 8) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+linebreak| 機能付きでコンパイルされたときの + み利用可能} + 行番号を表示するのに使われる桁数の最小値。オプション 'number' がオンの + ときか行番号付きで印刷するときのみ意味がある。常に番号とテキストの間に + スペースが1つ置かれるので、番号そのものに割かれる桁数はこれより1文字少 + なくなる。 + この値は最小の幅である。バッファ中の最大の行番号を表示するのに足りない + ときはもっと広くなる。つまり、Vim の既定値の4だと、999行目までの幅が割 + り当てられることになる。バッファが1000行以上になると5桁が割り当てられ + るようになる。 + 最小値は1。最大値は10。 + NOTE: 'compatible' がオンになると 'numberwidth' は8になる。 + + *'omnifunc'* *'ofu'* +'omnifunc' 'ofu' 文字列 (既定では: 空) + バッファについてローカル + {Vi にはない} + {Vi m が +eval または +insert_expand 機能付きでコンパ + イルされたときのみ利用可能} + このオプションはインサートモードにおける CTRL-X CTRL-O でのオムニ補完 + で使われる関数を指定する。|i_CTRL-X_CTRL-O| + この関数がどのように呼び出され、何を返すべきかについては + |complete-functions| を参照。 + このオプションは普通ファイルタイププラグインによって設定される。 + |:filetype-plugin-on| + + *'operatorfunc'* *'opfunc'* +'operatorfunc' 'opfunc' 文字列 (既定では: 空) + グローバル + {Vi にはない} + このオプションはオペレータ |g@| で呼び出される関数を指定する。 + より詳しい情報と例については |:map-operator| を参照。 + + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 + *'osfiletype'* *'oft'* *E366* 'osfiletype' 'oft' 文字列 (RISC-OSでの既定値: "Text", @@ -4016,6 +4934,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる だ。GUI版のVimでは張り付け時にすべき動作を知っているので、'paste' がオ フでも大抵うまくいく。Vimがマウスクリックを扱えるようなターミナルでも 同様にうまくいく。 + GUI を開始するとこのオプションはオフになる。そのため、.vimrc 内でこの + オプションをオンにすると、それはターミナル内では働くが、GUI ではオフに + なる。GUI 版で 'paste' をオンにすると次のような副作用がある: 例. 「ペ + ースト」ツールバーボタンがインサートモードで動作しなくなる。このボタン + はマッピングを使っているためである。 'paste' がオンのときは、以下のように設定が変わる。 - InsertモードとCommand-lineモードでのマッピングが無効になる - 略語展開が無効になる @@ -4092,6 +5015,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 圧縮ファイルに 'patchmode' を使うと、ファイル名末尾に拡張子が付けられ るので (例えば "file.gz.orig")、その結果できたファイルは必ずしも圧縮ファ イルとは認識されなくなってしまう。 + 通常のファイル名文字だけが使える。"/\*?[|<>" は不正である。 *'path'* *'pa'* *E343* *E345* *E347* 'path' 'pa' 文字列 (Unixでの既定値: ".,/usr/include,," @@ -4164,6 +5088,22 @@ Note 1番目の形式では、行全体がオプション指定に使われる < 文字 ';' を ':' または指定可能な区切り文字で置換する。 Note この方法 は、$INCL がコンマや空白を含んでいるときには使えないので注意。 + *'preserveindent'* *'pi'* *'nopreserveindent'* *'nopi'* +'preserveindent' 'pi' 切替 (既定ではオフ) + バッファについてローカル + {Vi にはない} + カレント行のインデントを変更するとき、可能な限りインデントの構造を保つ + ようにする。普通、インデントはまずタブで埋められ、その後に必要なだけス + ペースで埋められる(|'expandtab'|がオンになっているときは違い、スペース + だけで埋められる)。このオプションをオンにすると、インデントの既存の文 + 字をできるだけそのままにし、追加の際に必要なだけタブやスペースを追加す + るようになる。 + NOTE: ">>" を複数回使うと、インデントにタブとスペースが混在するように + なる。これは好ましくないかもしれない。 + NOTE: 'compatible' がオンになると 'preserveindent' はオフになる。 + 'copyindent' も参照。 + 空白文字を揃えるには |:retab| を使う。 + *'previewheight'* *'pvh'* 'previewheight' 'pvh' 数値 (既定では 12) グローバル @@ -4174,7 +5114,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ドで使われる。|CTRL-W_}| にカウントが指定されなかったときもこれが使わ れる。 - *'previewwindow'* *'nopreviewwindow'* *'pvw'* *'nopvw'* + *'previewwindow'* *'nopreviewwindow'* + *'pvw'* *'nopvw'* *E590* 'previewwindow' 'pvw' 切替 (既定ではオフ) ウィンドウについてローカル {Vi にはない} @@ -4190,11 +5131,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vi mが |+printer| 機能付きでコンパイルされたときのみ 有効} - このオプションは、コマンド |:hardcopy| が '!' 付きで実行され、プリンタ - 選択ダイアログが省かれたときに使われるプリンタ名を指定する。Win32では、 - 標準のプリンタ選択ダイアログで選択するのと正確に同じプリンタ名であるべ - きである。 - 値が空のときは、Vimは ":hardcopy!" にはシステムの既定プリンタを使う。 + |:hardcopy| で使われるプリンタの名前。 + |pdev-option| を参照。 + + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 + + *'printencoding'* *'penc'* +'printencoding' 'penc' 文字列 (いくつかのシステムを除き、既定は空) + グローバル + {Vi にはない} + {Vi mが |+printer| と |+postscript| 機能付きでコンパイ + ルされたときのみ利用可能} + 印刷の際に使われる文字エンコーディングを指定する。 + |penc-option| を参照。 *'printexpr'* *'pexpr'* 'printexpr' 'pexpr' 文字列 (既定値は、以下を参照) @@ -4203,53 +5153,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi mが |+printer| 機能と |+postscript| 機能付きでコン パイルされたときのみ有効} コマンド ":hardcopy" で生成されるPostScript (PS) ファイルを印刷するた - めに評価される expression を指定する。 - 印刷されるファイル名は変数 |v:fname_in| に格納される。 - ":hardcopy" に対する引数は変数 |v:cmdarg| に格納される。 - 指定した expression は、印刷終了後にPSファイルを削除することまでしなけ - ればならない。 - 指定した expression は、エラーが起きたときは非0の値を、エラーがないと - きは0または空の値を返さなければならない。 - MS-WindowsまたはVMSシステム以外での既定値は、ファイルをプリントするの - に "lpr" を使うだけのものである。 > - - system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) - . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error -< - MS-Windowsでの既定値は、現在指定されているプリンタデバイスにファイルを - コピーするものである。 > - - system('copy' . ' ' . v:fname_in . ' "' . &printdevice . '"') - . delete(v:fname_in) -< - VMSでの既定値は、既定のプリンタデバイスまたは現在指定されているプリン - タデバイスのどちらかにファイルを送るものである。 > - - system('print' . (&printdevice == '' ? '' : ' /queue=' . - &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) -< - このオプションを変更するときは、空白を全てエスケープすることを避けられ - るように、関数を使うと簡単に済む。例: > - - :set printexpr=PrintFile(v:fname_in) - :function PrintFile(fname) - : call system("ghostview " . a:fname) - : call delete(a:fname) - : return v:shell_error - :endfunc - -< 印刷プログラムの中には、印刷するPSファイルを読み込む前に制御を返してく - るものがあるので注意。そのPSファイルの削除が早すぎると、印刷できなくなっ - てしまう。普通、そういったプログラムには、プリント終了後にプログラム自 - 身でPSファイルを削除するオプションがついているので、それを利用すること。 - *E365* - 指定した expression の評価に失敗したり、非0の値が返されたときは、エラー - メッセージが表示される。その場合はVimはPSファイルを削除する。 - MS-Windows以外のシステムでの既定値では、巧妙な技が使われている。変数 - "v:shell_error" を追加すると、関数 system() の呼び出しに失敗したときは - 非0の値が返される。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + めに評価される expression を指定する。|pexpr-option| を参照。 *'printfont'* *'pfn'* *E448* 'printfont' 'pfn' 文字列 (既定では "courier") @@ -4257,14 +5161,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vi mが |+printer| 機能付きでコンパイルされたときのみ 有効} - コマンド |:hardcopy| の出力に使われるフォント名。値はオプション - 'guifont' と同じ書式で指定する。ただしフォント名は1個だけが指定可能で、 - コマンド "guifont=*" も使えない。 - Win32のGUI版では 'guifont' と同様に、フォント名を付加属性と共に指定で - きる。 - 他のシステムでは、付加属性は ":h11" 等のみが認識される。ここで "11" は - ポイント単位のフォントサイズである。指定されないときは10ポイントが使わ - れる。 + コマンド |:hardcopy| の出力に使われるフォント名。|pfn-option| を参照。 *'printheader'* *'pheader'* 'printheader' 'pheader' 文字列 (既定では "%<%f%h%m%=Page %N") @@ -4272,10 +5169,26 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vi mが |+printer| 機能付きでコンパイルされたときのみ 有効} - コマンド |:hardcopy| の出力のヘッダの書式を定義する。値の設定方法はオ - プション 'statusline' と同様である。Vimが |+statusline| 機能付きでコン - パイルされていなければ、このオプションの値は無効で、ページ番号を示すだ - けの単純なヘッダが使われる。 + コマンド |:hardcopy| の出力のヘッダの書式を定義する。 + |pheader-option|を参照。 + + *'printmbcharset'* *'pmbcs'* +'printmbcharset' 'pmbcs' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+printer|, |+postscript|, |+multi_byte| 機能 + 付きでコンパイルされたときのみ利用可能} + コマンド |:hardcopy| の出力の中の CJK 文字に使われる文字集合。 + |pmbcs-option| を参照。 + + *'printmbfont'* *'pmbfn'* +'printmbfont' 'pmbfn' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが |+printer|, |+postscript|, |+multi_byte| 機能 + 付きでコンパイルされたときのみ利用可能} + コマンド |:hardcopy| の出力の中の CJK 文字に使われるフォント名のリスト。 + |pmbfn-option| を参照。 *'printoptions'* *'popt'* 'printoptions' 'popt' 文字列 (既定では "") @@ -4283,101 +5196,45 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vi mが |+printer| 機能付きでコンパイルされたときのみ 有効} - コマンド |:hardcopy| の出力の書式を設定する以下の項目を、コンマ区切り - のリストで指定する。 - - left:{spec} 左マージン (既定では 10pc) - right:{spec} 右マージン (既定では 5pc) - top:{spec} 上マージン (既定では 5pc) - bottom:{spec} 下マージン (既定では 5pc) - {spec} は数値で、"in" を付けるとインチ単位、 - "pt" を付けるとポイント単位 (1ポイントは1/72イ - ンチに相当)、"mm" を付けるとミリメートル単位に - なる。 - また "pc" を付けると紙のサイズに対するパーセン - ト単位での相対指定になる。 - 変な例: - left:2in,top:30pt,right:16mm,bottom:3pc - 単位が認識されないときはエラーにはならず、既定 - 値が使われる。 - - header:{nr} ヘッダ印刷用に空けておく行数。 - ヘッダに使われるのは実際は1行のみなので、{nr} - が 2 のときは空行が1行できる。ヘッダはオプショ - ン 'printheader' に従って整形される。 - header:0 ヘッダを印刷しない。 - header:2 (既定) ヘッダに2行使う。 - - syntax:n 構文強調表示を行わない。この方が印刷速度が速い - ので、大きなファイルを印刷するときに便利である。 - syntax:y 構文強調表示を行う。 - syntax:a (既定) プリンタで色つき印刷またはグレー印刷が可能と思 - われるときのみ、構文強調表示を使う。 - - number:y 行番号を印刷する。 - number:n (既定) 行番号を印刷しない。 - - wrap:y (既定) 長い行を折り返す。 - wrap:n 長い行のあふれた部分を切り捨てる。 - - duplex:off 片面印刷をする。 - duplex:long (既定) 可能ならば両面印刷をする。 bind on long side. - (訳注: 意味が分かりません。どなたかご教授下さ - い) - duplex:short 可能ならば両面印刷をする。 bind on short side. - (訳注: 意味が分かりません。どなたかご教授下さ - い) - - collate:y (既定) 何部も印刷するときは一部ごとまとめる。 - 例: 1 2 3, 1 2 3, 1 2 3 - collate:n 同じページは一度に印刷する。 - 例: 1 1 1, 2 2 2, 3 3 3 - - jobsplit:n (既定) 何部も印刷するときにも単一のジョブで印刷する。 - jobsplit:y 何部も印刷するときには別々のジョブで印刷する。 - N-up postprocessing を行うときに便利である。 - (訳注: 意味が分かりません。どなたかご教授下さ - い) - - portrait:y (既定) 紙方向を縦とする。 - portrait:n 紙方向を横とする。 - - - paper:A4 (既定) 紙サイズ: A4 - paper:{name} 紙サイズを以下のように指定する。 - {name} サイズ (インチ単位) (訳注: ミリ単位) ~ - 10x14 10 x 14 254 x 356 - A3 11.69 x 16.54 297 x 420 - A4 8.27 x 11.69 210 x 297 - A5 5.83 x 8.27 148 x 210 - B4 10.12 x 14.33 257 x 364 - B5 7.17 x 10.12 182 x 257 - executive 7.25 x 10.5 184 x 267 - folio 8.27 x 13 210 x 330 - ledger 17 x 11 432 x 279 - legal 8.5 x 14 216 x 356 - letter 8.5 x 11 216 x 279 - quarto 8.5 x 10.8 216 x 275 - statement 5.5 x 8.5 140 x 216 - tabloid 11 x 17 279 x 432 - - (default) が付けられた項目は、指定されなかったときに使われる設定である。 - 値は必ずしも使われるわけではなく、特にプリンタやオプションをダイアログ - で選択したときはそちらの設定が使われる。 - 例: > - :set printoptions=paper:letter,duplex:off -< + コマンド |:hardcopy| の出力の書式を設定する項目のリスト。 + |popt-option| を参照。 + + *'prompt'* *'noprompt'* +'prompt' 切替 (既定ではオン) + グローバル + オンならば、Ex モードでプロンプト ":" が表示される。 + + *'pumheight'* *'ph'* +'pumheight' 'ph' 数値 (既定では 0) + グローバル + {Vi m が |+insert_expand| 機能付きでコンパイルされたと + きのみ利用可能} + {Vi にはない} + インサートモード補完のポップアップメニューに表示される項目数の最大値。 + 0 のときはスペースの許す限り多く表示される。 + |ins-completion-menu| + + + *'quoteescape'* *'qe'* +'quoteescape' 'qe' 文字列 (既定では "\") + バッファについてローカル + {Vi にはない} + 文字列内で引用符をエスケープする文字。テキストオブジェクト a', a", a` + |a'| などで使われる。 + このオプションの文字のどれかが文字列内に現れると、その次の文字はスキッ + プされる。既定値では、テキスト "foo\"bar\\" が1つの文字列とみなされる。 + *'readonly'* *'ro'* *'noreadonly'* *'noro'* 'readonly' 'ro' 切替 (既定ではオフ) バッファについてローカル - {Vi にはない} オンのときは、書き込みコマンドは '!' を付けないと使えない。これは間違っ てファイルを上書きしてしまうことを防ぐためのものである。Vimが読み込み 専用モードで起動された ("vim -R") ときと、実行ファイルの名前が "view" のときにはオンが既定値になる。 + 'cpoptions' にフラグ 'Z' が入っていない場合、":w!" を使うとカレントバッ + ファの 'readonly' がオフになる。 {Vi には、以下のコマンドはない} コマンド ":view" を使って開かれたバッ - ファでは、オプション 'readonly' はオンになる。":w!" を使ったバッファで - は 'readonly' はオフになる。 + ファでは、オプション 'readonly' はオンになる。 *'remap'* *'noremap'* 'remap' 切替 (既定ではオン) @@ -4385,6 +5242,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 再帰的マッピング (訳注: マッピングに対するマッピング、に対するマッピン グ...) を有効にする。特定のマッピングに対して再帰的マッピングを禁止し たいときは、コマンド ":noremap[!]" を使うこと。 + NOTE: Vim スクリプトのポータビリティのために、このオプションは常に既定 + 値のオンのままにしておくこと。昔の Vi スクリプトを使うときだけこれをオ + フにすること。 *'report'* 'report' 数値 (既定では 2) @@ -4398,7 +5258,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'restorescreen'* *'rs'* *'norestorescreen'* *'nors'* 'restorescreen' 'rs' 切替 (既定ではオン) グローバル - {Vi にはない} {Vi mのWindows 95/NTのコンソール版のみ} + {Vi にはない} {Vi mのWindows 95/NTのコンソール版} オンのとき、Vimを終了した後にコンソール画面の内容が復元される。外部コ マンドを実行するときも同様である。 @@ -4433,8 +5293,22 @@ Note 1番目の形式では、行全体がオプション指定に使われる イ語やアラビア語のような右から左に向かって書かれる言語によるファイルを 編集できる。このオプションはウィンドウごとに設定可能なので、ヘブライ語 と英語のファイルを同時に編集したり、同一のファイルを2通りに表示するこ - とができる (これは Hebrew TeX--XeT のファイルを編集するときに便利なこ - とがある)。|rileft.txt| を参照。 + とができる (これは右から左のテキストと左から右のテキストが混在している + ファイルを編集するときに便利である。両方を異なるウィンドウで適切に表示 + することができる)。|rileft.txt| を参照。 + + *'rightleftcmd'* *'rlc'* *'norightleftcmd'* *'norlc'* +'rightleftcmd' 'rlc' 文字列 (既定では "search") + ウィンドウについてローカル + {Vi にはない} + {Vi m が |+rightleft| 機能付きでコンパイルされたときの + み利用可能} + 左←右書きモードで動作するコマンドを指定する: + + search コマンド "/" と "?" + + これはヘブライ語、アラビア語、ペルシア語などの言語で便利である。 + オプション 'rightleft' を設定しないと 'rightleftcmd' は効果がない。 *'ruler'* *'ru'* *'noruler'* *'noru'* 'ruler' 'ru' 切替 (既定ではオフ) @@ -4479,6 +5353,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる "%15(" を置き、末尾に "%)" を置くこと。例: > :set rulerformat=%15(%c%V\ %p%%%) < + *'runtimepath'* *'rtp'* *vimfiles* *'runtimepath'* *'rtp'* 'runtimepath' 'rtp' 文字列 (既定値: Unix: "$HOME/.vim, @@ -4506,13 +5381,14 @@ Note 1番目の形式では、行全体がオプション指定に使われる $VIM/vimfiles, $VIMRUNTIME, $VIM/vimfiles/after, - sys$login:vimfiles/after" + sys$login:vimfiles/after") グローバル {Vi にはない} 以下のランタイムファイルが検索されるディレクトリのリスト。 filetype.vim ファイル名によるファイルタイプの決定 |new-filetype| scripts.vim ファイルの内容によるファイルタイプの決定 |new-filetype-scripts| + autoload/ 自動的に読み込まれるスクリプト |autoload-functions| colors/ 色テーマ定義ファイル |:colorscheme| compiler/ コンパイラ定義ファイル |:compiler| doc/ ヘルプドキュメント |write-local-help| @@ -4522,6 +5398,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる lang/ 翻訳版メニュー |:menutrans| menu.vim GUI版メニュー |menu.vim| plugin/ プラグインスクリプト |write-plugin| + print/ 印刷用のファイル |postscript-print-encoding| + spell/ スペルチェック用のファイル |spell| syntax/ 文法ファイル |mysyntaxfile| tutor/ Vimtutor用ファイル |tutor| @@ -4533,6 +5411,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 2. システム管理者による設定を読み込むため、システム共通のVim用ディレク トリを検索する。 3. Vim付属のファイルを読み込むため、環境変数 $VIMRUNTIME 内を検索する。 + *after-directory* 4. システム管理者が付属ファイルによる設定を上書きしたり、それに追加設 定をしたりできるようにするため、システム共通のVimディレクトリ内のディ レクトリ "after" を検索する (これは滅多に使われない)。 @@ -4556,8 +5435,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ファイルを置くディレクトリは、環境変数 $VIMRUNTIME の前に指定すればよ い。付属ランタイムファイルによる設定に追加するためのファイルを置くディ レクトリは、環境変数 $VIMRUNTIME の後に指定すればよい。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'scroll'* *'scr'* 'scroll' 'scr' 数値 (既定では、ウィンドウ高の半分) @@ -4581,6 +5460,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 違いを見るのに便利である。オプション 'diff' を参照。 このオプションがどのように解釈されるかを決定するオプションについては、 オプション 'scrollopt' を参照。 + ウィンドウを分割して他のファイルを編集すると、ほとんどの場合このオプショ + ンはオフになる。よって ":split | edit file" はウィンドウを2つに分割し、 + scroll-binding を設定するが、":split file" はそうならない。 *'scrolljump'* *'sj'* 'scrolljump' 'sj' 数値 (既定では 1) @@ -4589,6 +5471,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる カーソルが画面外に出たときにスクロールする行数の最小値 (例えばコマンド "j" 等によって)。スクロールコマンド (例えば CTRL-E, CTRL-D) には使われ ない。ユーザのターミナルのスクロールがとても遅いときに便利である。 + -1 から -100 までの負の数に設定すると、ウィンドウの高さのパーセンテー + ジとして扱われる。つまり -50 はウィンドウの高さの半分スクロールする。 NOTE: このオプションは、オプション 'compatible' がオンのときは 1 にな るので注意。 @@ -4612,7 +5496,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる み有効} {Vi にはない} スクロール同調中ウィンドウ (訳注: オプション 'scrollbind' がオンのウィ - ンドウ) の動作を設定するキーワードの、コンマ区切りのリスト。 + ンドウ) の動作を設定するキーワードの、コンマ区切りのリスト。'sbo' は + ScrollBindOptions の略である。 指定可能なキーワードは以下の通りである。 ver 同調中ウィンドウの垂直スクロールを同調させる hor 同調中ウィンドウの水平スクロールを同調させる @@ -4650,6 +5535,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ているとしたが、始めがずれているとそれが基準となることに注意) |scroll-binding| も参照。 + 差分モードでは、たとえ "ver" が含まれていなくても常に垂直スクロール同 + 調をする。 *'sections'* *'sect'* 'sections' 'sect' 文字列 (既定では "SHNHH HUnhsh") @@ -4659,7 +5546,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 既定では、章は nroff マクロの ".SH", ".NH", ".H", ".HU", ".nh" および ".sh" で始まることになる。 - *'secure'* *'nosecure'* + *'secure'* *'nosecure'* *E523* 'secure' 切替 (既定ではオフ) グローバル {Vi にはない} @@ -4672,8 +5559,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ユーザ自身でないときのみ使われる。これはユーザが "chown" を使えるシス テムでは危険である。そのときにはユーザのファイル ~/.vimrc の末尾で 'secure' をオンにしておいた方がよい。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'selection'* *'sel'* 'selection' 'sel' 文字列 (既定では "inclusive") @@ -4689,6 +5576,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 「行末の後」というのは、カーソルを行末より1文字後ろに置けることを表す。 「末尾に操作」というのは、選択領域の末尾の文字が操作を受けることを表す。 例えば、選択領域の削除に "x" が使われたときなどに違いが出る。 + "exclusive" に設定していると、'virtualedit' が空のときノーマルモードか + ら選択を開始し、末尾から後方に選択すると行末の文字を含めることができな + くなる。 オプション 'selection' は、コマンド |:behave| によって設定される。 @@ -4708,7 +5598,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'sessionoptions'* *'ssop'* 'sessionoptions' 'ssop' 文字列 (既定では "blank,buffers,curdir,folds, - help,options,winsize") + help,options,tabpages,winsize") グローバル {Vi にはない} {Vi mが |+mksession| 機能付きでコンパイルされたときの @@ -4723,7 +5613,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる folds 手動で作られた折り畳み、折り畳みの開閉の区別、折り畳み 関連のローカルなオプション globals 大文字で始まり、最低1個の小文字を含む名前のグローバル - 変数 + 変数。文字列型と数値型の変数のみ保存される。 help ヘルプウィンドウ localoptions ウィンドウまたはバッファに対してローカルなオプションと マッピング (ローカルなオプションのグローバルな値ではな @@ -4735,12 +5625,18 @@ Note 1番目の形式では、行全体がオプション指定に使われる トディレクトリになる (ネットワーク越しに、異なったシス テムからアクセスを受けるプロジェクトでは便利である) slash ファイル名内の '\' がスラッシュに置換される + tabpages 全タブページ。これが含まれていないと、カレントタブペー + ジのみが復元される。そのため、タブページごとに別々のセッ + ションを保存することができる。 unix WindowsやDOS上でも、Unix形式の end-of-line (1個の <NL>) を使う winpos Vimのウィンドウ全体の位置 winsize ウィンドウサイズ "curdir" と "sesdir" の両方を含めないこと。 + タブページを含めるオプションはまだ存在しない。カレントタブページのみが + セッションに保存される。|tab-page| + (訳注: "tabpages"という値が「タブページを含めるオプション」なのでは?) "curdir" も "sesdir" も含まれていないときは、ファイル名は絶対パスで保 存される。 "slash" と "unix" は、Windows上でセッションファイルをUnixと共有すると @@ -4774,8 +5670,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 理由は不明だが、"4dos.com" を使ったときはカレントディレクトリが "C:\" に変更される。これを防ぐには 'shell' を次のようにすること。 > :set shell=command.com\ /c\ 4dos -< 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 +< 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'shellcmdflag'* *'shcf'* 'shellcmdflag' 'shcf' 文字列 (既定では "-c", @@ -4789,8 +5685,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ション 'shell' に従って設定される。OS/2では使われない (EMXは自分でこれ を理解する)。値に空白や '\' を含める方法については、|option-backslash| を参照。|dos-shell| も参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'shellpipe'* *'sp'* 'shellpipe' 'sp' 文字列 (既定では ">", "| tee", "|& tee" または @@ -4822,8 +5718,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる うに '\' を置くことを忘れないこと。 将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代 遅れになるだろう (少なくともUnixでは)。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'shellquote'* *'shq'* 'shellquote' 'shq' 文字列 (既定では ""; MS-DOSとWin32で 'shell' に @@ -4838,8 +5734,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ドパーティ製のシェルに対してのみ便利である。それらのシェルでは引用符を "\"" とするべきである。ユーザが必ずこのオプションを設定しなくともよい ように、既定値は 'shell' に従って設定される。|dos-shell| を参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'shellredir'* *'srr'* 'shellredir' 'srr' 文字列 (既定では ">", ">&" or ">%s 2>&1") @@ -4863,8 +5759,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ザ自らによって設定されていたときは、自動設定は行われない。 将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代 遅れになるだろう (少なくともUnixでは)。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'shellslash'* *'ssl'* *'noshellslash'* *'nossl'* 'shellslash' 'ssl' 切替 (既定ではオフ) @@ -4878,6 +5774,25 @@ Note 1番目の形式では、行全体がオプション指定に使われる たファイル名には影響がないので、完全を期すためにはこのオプションはどの ファイルを開くのよりも先に設定する必要があることに注意。この点は将来変 更になるかもしれない。 + 'shellslash' はパスの区切りとして '\' が使われるときだけ働く。これをテ + ストするには次のようにする: > + if exists('+shellslash') +< + *'shelltemp'* *'stmp'* *'noshelltemp'* *'nostmp'* +'shelltemp' 'stmp' 切替 (Vi の既定はオフ, Vim の既定はオン) + グローバル + {Vi にはない} + オンのときは、シェルコマンドに一時ファイルを使う。オフのときはパイプを + 使う。オフであってもパイプが使えない場合は一時ファイルを使う。 + 現在のところパイプは Unix でのみサポートされている。これを確認するには + 次のようにする: > + :if has("filterpipe") +< パイプを使うことの利点は、一時ファイルを他人に読み取られないことと、 + 'shell' のプログラムがリダイレクトをサポートしていなくてもよいことである。 + 一時ファイルを使うことの利点は、ファイルタイプとエンコーディングを判別 + できることである。 + 'shelltemp' がオフのときは自動コマンドイベント |FilterReadPre|, + |FilterReadPost|, |FilterWritePre|, |FilterWritePost| が発生しない。 *'shelltype'* *'st'* 'shelltype' 'st' 数値 (既定では 0) @@ -4906,8 +5821,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ドパーティ製のシェルに対してのみ便利である。それらのシェルでは引用符を "\"" とするべきである。ユーザが必ずこのオプションを設定しなくともよい ように、既定値は 'shell' に従って設定される。 |dos-shell| を参照。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'shiftround'* *'sr'* *'noshiftround'* *'nosr'* 'shiftround' 'sr' 切替 (既定ではオフ) @@ -4929,7 +5844,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'tabstop' は画面上でタブ文字が占める幅) *'shortmess'* *'shm'* -'shortmess' 'shm' 文字列 (Vimの既定値: "filnxtToO", Viの既定値: "") +'shortmess' 'shm' 文字列 (Vimの既定値: "filnxtToO", Viの既定値: "", + POSIX の既定値: "A") グローバル {Vi にはない} このオプションは、コマンド CTRL-G 等によるファイル関連のメッセージで、 @@ -4993,17 +5909,18 @@ Note 1番目の形式では、行全体がオプション指定に使われる ているときは、このオプションは常に既定ではオンである (訳注: いや、オフ だと思う)。 - *'showbreak'* *'sbr'* + *'showbreak'* *'sbr'* *E595* 'showbreak' 'sbr' 文字列 (既定では "") グローバル {Vi にはない} {Vi mが |+linebreak| 機能付きでコンパイルされたときの み有効} 折り返された行の先頭に表示する文字列。"> " や "+++ " に設定すると便利 - である。<Tab> 文字とコンマ以外の、printable な文字のみが指定できる (将 - 来のヴァージョンでは、行末に表示される部分と行頭に表示される部分の区切 - りにコンマが使われるかもしれない)。この文字列は、オプション - 'highlight' のフラグ '@' に従って強調表示される。 + である。 + <Tab> 文字とコンマ以外の、printable な文字 (訳注: 文書先頭を参照) のみ + が指定できる (将来のヴァージョンでは、行末に表示される部分と行頭に表示 + される部分の区切りにコンマが使われるかもしれない)。 + この文字列は、オプション'highlight' のフラグ'@' に従って強調表示される。 Note 'showbreak' の文字列の次にタブ文字が来たときは、表示方法が異なる ので注意。 'showbreak' の文字列を行番号の間に表示したいときは、'cpoptions' にフラ @@ -5047,6 +5964,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる 力するとカーソルがすぐに元の場所に戻る。 マッチの表示時のカーソルの形状や点滅方法については、'guicursor' の "sm" の項目を参照。 + オプション 'matchpairs' によって対応する文字を指定することができる。対 + 応する括弧を探すときは 'rightleft' と 'revins' が適用される。 + カーソル下の括弧に対応する括弧を強調させる方法については matchparen プ + ラグインを参照 |pi_paren.txt|。 Note: このオプションの省略形式の名前の使用には、保護者への説明が望まれ るので注意(笑) @@ -5062,6 +5983,19 @@ Note 1番目の形式では、行全体がオプション指定に使われる NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 値に、オフのときはVimの既定値になるので注意。 + *'showtabline'* *'stal'* +'showtabline' 'stal' 数値 (既定では 1) + グローバル + {Vi にはない} + {Vi mが +windows 機能付きでコンパイルされたときのみ利 + 用可能} + このオプションは、いつタブページのラベルを表示するかを指定する。 + 0: 表示しない + 1: 2個以上のタブページがあるときのみ表示 + 2: 常に表示 + これは GUI 版と非 GUI 版両方に適用される。 + タブページについて詳しくは |tab-page| を参照。 + *'sidescroll'* *'ss'* 'sidescroll' 'ss' 数値 (既定では 0) グローバル @@ -5080,9 +6014,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる オプション 'nowrap' がオフのとき、カーソルの右または左には、最低でもこ の数だけの列が表示される。'sidescroll' を 1 以上に設定しているときにこ のオプションも 1 以上にすると、水平スクロールをしている周辺のテキスト - が見えるようになる (行頭または行末の近くにいるとき以外)。とても大きい - 値 (999等) にすると、カーソルの置かれた列は常にウィンドウの中央に表示 - される (行頭または行末の近くにいるとき以外)。 + が見えるようになる (行頭の近くにいるとき以外)。とても大きい値 (999等) + にすると、カーソルの置かれた列は常にウィンドウの中央に表示される (行頭 + の近くにいるとき以外)。 NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな るので注意。 @@ -5140,10 +6074,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる グローバル {Vi にはない} オンのときは、行頭の余白内で <Tab> を打ち込むと、'shiftwidth' の数だけ - 空白が挿入される。他の場所では 'tabstop' の数だけ空白が挿入される。 - オフのときは、<Tab> を打ち込むと常に 'tabstop' の数だけ空白が挿入され - る。'shiftwidth' はテキストを右左にずらすときのみ使われる - |shift-left-right|。 + 空白が挿入される。他の場所では 'tabstop' または 'softtabstop' の数だけ + 空白が挿入される。<BS> を使うと行頭の 'shiftwidth' 分のスペースを削除 + する。 + オフのときは、<Tab> を打ち込むと常に 'tabstop' または 'softtabstop' の + 数だけ空白が挿入される。'shiftwidth' はテキストを右左にずらすときのみ + 使われる|shift-left-right|。 挿入される文字 (タブ文字または空白) は 'expandtab' によって変わる。 |ins-expandtab| も参照。'expandtab' がオフのときは、 <Tab> を打ち込む と空白の数が最小になる (訳注: できる限り空白をタブ文字で置き換える)。 @@ -5165,12 +6101,164 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションは、'paste' がオンのときは 0 になる。 |ins-expandtab| も参照。'expandtab' がオフのときは、<Tab> を打ち込むと 空白の数が最小になる (訳注: できる限り空白をタブ文字で置き換える)。 + 'cpoptions' にフラグ 'L' を含めると、'list' がオンのとき、タブの扱い方 + が変わる。 NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな るので注意。 (訳注: 'shiftwidth' は自動インデントやコマンド "<<", ">>" でずれる幅。 'softtabstop' は <Tab> や <BS> を打ち込んだときにカーソルが動く幅。 'tabstop' は画面上でタブ文字が占める幅の設定) + *'spell'* *'nospell'* +'spell' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 + 用可能} + これがオンのときはスペルチェックが行われる。|spell| を参照。 + その言語は 'spelllang' で指定する。 + + *'spellcapcheck'* *'spc'* +'spellcapcheck' 'spc' 文字列 (既定では "[.?!]\_[\])'" \t]\+") + バッファについてローカル + {Vi にはない} + {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 + 用可能} + 文の末尾を見つけるのに使うパターン。その次の単語が大文字で始まるかどう + かチェックされる。大文字でなければ、その単語が SpellCap |hl-SpellCap| + で強調される (その単語がスペリングミスともみなされていなければ)。 + このチェックを行いたくなければ、このオプションを空にすること。 + 'spell' がオンのときだけ適用される。 + 特殊な文字について注意すること。スペースとバックスラッシュを含める方法 + については |option-backslash| を参照。 + 言語に応じて自動的にこのオプションをオンにする方法については + |set-spc-auto| を参照。 + + *'spellfile'* *'spf'* +'spellfile' 'spf' 文字列 (既定では空) + バッファについてローカル + {Vi にはない} + {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 + 用可能} + コマンド |zg|, |zw| で単語を追加するための単語リストファイルの名前。こ + のファイル名の末尾は ".{encoding}.add" でなければならない。ここにパス + を含める必要がある。そうしないと、カレントディレクトリにそのファイルが + 作られる。 + *E765* + このオプションの値はファイル名のコンマ区切りのリストであってもよい。 + コマンド |zg| と |zw| に与えるカウントによって、そのリストのどれにアク + セスするかを指定することができる。これによって、個人用の単語リストファ + イルとプロジェクト用の単語リストファイルを使い分けることができる。 + このオプションが空なのに単語が追加されたときは、Vim が自動的に値を設定 + する: 書き込み可能な最初の 'runtimepath' のディレクトリを使用する。そ + こに "spell" というディレクトリがなければ作成する。ファイル名には + 'spelllang' に現れる最初の言語名が使われ、地域名は無視される。 + そうして作られる ".spl" ファイルがスペルチェックに作られる。このファイ + ルは 'spelllang' に入っていなくてもよい。 + 普通は全ての地域に対して1つのファイルが使われるが、望むなら地域名を追 + 加することもできる。しかしその場合、'spellfile' がそのファイル名に設定 + されているときだけ使われる。'spelllang' のエントリに対しては地域名を省 + いたファイルだけが使われる。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 + + *'spelllang'* *'spl'* +'spelllang' 'spl' 文字列 (既定では "en") + バッファについてローカル + {Vi にはない} + {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 + 用可能} + コンマ区切りの単語リスト名のリスト。オプション 'spell' がオンのとき、 + これらの言語に対してスペルチェックが行われる。例: > + set spelllang=en_us,nl,medical +< こうすると US 英語、オランダ語、医学用語が認識される。認識されない単語 + は強調される。 + 単語リスト名はコンマやドットを含んではならない。2文字の言語名と詳細を + 区切るのにダッシュを使うことが推奨される。つまり、"en-rare" は頻度の低 + い(rare)英語となる。 + 地域名は最後に書いて、"_xx" という形でなければならない。ここで "xx" は + 小文字で2文字の地域名である。複数の地域名を列挙することもできる: + "en_us, en_ca" とすると US 英語とカナダ英語の両方に対応する。しかしオ + ーストラリア、ニュージーランド、英国に固有の単語には対応しない。 + *E757* + 特別な場合として、.spl ファイルの名前をそのまま指定することができる。 + その名前の最初の "_xx" は除去され、地域名として使われる (_xx はアンダ + ースコア、2文字、そしてその後にアルファベットでないものが続くことを意 + 味する)。これは主にテスト用のためである。正しいエンコーディングが使わ + れているかどうか Vim はチェックしないので、ユーザが確認しなければなら + ない。 + 'encoding' が設定されると、単語リストは再読み込みされる。そのため、2度 + 読み込むのを避けるため、'encoding' の後で 'spelllang' を設定するとよい。 + 関係するスペルファイルがどう探されるかについてはここで説明されている: + |spell-load|. + + プラグイン |spellfile.vim| が動作しているならば、'runtimepath'に.splファ + イルが見つからない言語名が指定されたとき、このプラグインによりユーザに + 対してファイルをダウンロードするかどうか問い合わせが行われる。 + + このオプションの設定が成功すると、'runtimepath' の"spell/LANG.vim" が + 読み込まれる。"LANG" は 'spelllang' の値の最初のコンマ、ドット、アンダー + スコアまでの部分である。 + |set-spc-auto| を参照。 + + *'spellsuggest'* *'sps'* +'spellsuggest' 'sps' 文字列 (既定では "best") + グローバル + {Vi にはない} + {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 + 用可能} + スペリング補完の方法を指定する。コマンド |z=| と関数 |spellsuggest()| + の両方に適用される。次の要素のコンマ区切りのリストになる: + + best 英語にもっともよく対応している内部メソッド。「高速に」 + 似た相異点を発見し、音の近さによるスコア判定を少しして + 順序を改善する。 + + double 2つの方法を用い、その結果を混合させる内部メソッド。第 + 一の方法は「高速」で、第二の方法は候補と修正対象の音が + どれだけ似ているかを計算する。これは言語が sound + folding を指定するときだけ機能する。時間がかかるかもし + れず、必ずしもよい結果を出すとは限らない。 + + fast 文字の挿入、削除、交換など、単純な相異だけを判定する内 + 部メソッド。単純なタイプミスに対してよく機能する。 + + {number} |z=| でリストされる候補の最大数。|spellsuggest()| には + 適用されない。候補の数は決して 'lines' の値 - 2 を超え + ない。 + + file:{filename} {filename} を読み込む。そのファイルにはスラッシュで + 区切られた2つの列が書いていなければならない。第1列に間 + 違った単語が書かれ、第2列に候補となる正しい単語が書か + れている。 + 例: + theribal/terrible ~ + 内部メソッドでは候補リストの上の方には出てこない、あり + がちなミスのためにこれを使う。スラッシュを含まない行は + 無視されるのでコメントとすることができる。 + このファイルは全ての言語に対して使われる。 + + expr:{expr} 式 {expr} を評価する。スペースによるトラブルを避けるた + め、関数を使うこと。|v:val| が間違ってつづられた単語を + 保持する。この式を評価した結果が候補とスコアからなるリ + ストのリストにならなければならない。 + 例: + [['the', 33], ['that', 44]] + 'verbose' をオンにして |z=| を使うと内部メソッドが使う + スコアを見ることができる。スコアは低いほどよい。 + 一時的に 'spellsuggest' から "expr:" の部分を除くなら + ば |spellsuggest()| を呼び出してもよい。 + オプション 'verbose' が非0になっていない限り、エラーは + 警告無しに無視される。 + + "best", "double", "fast" は、どれか1つだけ指定できる。他のものはどんな + 順序で何回指定してもよい。例: > + :set sps=file:~/.vim/sugg,best,expr:MySuggest() +< + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 + + *'splitbelow'* *'sb'* *'nosplitbelow'* *'nosb'* 'splitbelow' 'sb' 切替 (既定ではオフ) グローバル @@ -5193,12 +6281,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'startofline' 'sol' 切替 (既定ではオン) グローバル {Vi にはない} - オンのときは、以下のコマンドで移動すると、カーソルは行内の最初の余白に - 移動する。オフのときは、カーソルは (可能ならば) 同じ列に置かれる。 + オンのときは、以下のコマンドで移動すると、カーソルは行内の最初の非空白 + 文字に移動する。オフのときは、カーソルは (可能ならば) 同じ列に置かれる。 適用されるコマンド: CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", - "L", 行単位で行うときの "d", "<<", ">>", カウントを指定したときの "%"、 - バッファ変更コマンド (CTRL-^, :bnext, :bNext 等)、行番号のみのExコマ - ンド (例えば ":25" や ":+")。 + "L", gg, 行単位で行うときの "d", "<<", ">>", カウントを指定したときの + "%"、バッファ変更コマンド (CTRL-^, :bnext, :bNext 等)、行番号のみのEx + コマンド (例えば ":25" や ":+")。 バッファ変更コマンドの場合は、カーソルはそのバッファが最後に編集された ときの列に置かれる。 NOTE: このオプションは、オプション 'compatible' がオンのときはオンにな @@ -5207,9 +6295,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる 以外の最初の文字の場合が混在している。ただ、オンのときはカーソルが元い た列を無視して先頭の「方に」移動するのは確か) - *'statusline'* *'stl'* + *'statusline'* *'stl'* *E540* *E541* *E542* 'statusline' 'stl' 文字列 (既定では空) - グローバル + グローバルまたは + ウィンドウについてローカル |global-local| {Vi にはない} {Vi mが |+statusline| 機能付きでコンパイルされたときの み有効} @@ -5220,7 +6309,16 @@ Note 1番目の形式では、行全体がオプション指定に使われる 式は以下の通りである。 %-0{minwid}.{maxwid}{item} {item} 以外の欄は指定しなくてもよい。パーセント記号そのものを表示する - には "%%" とする。 + には "%%" とする。80個までの項目を指定できる。 + + このオプションの先頭が "%!" である場合は式とみなされ、評価した結果がオ + プションの値となる。例: > + :set statusline=%!MyStatusLine() +< この結果が %{} を含んでいると、それも評価される。 + + オプションを評価している間にエラーが発生すると、それ以降のエラーを避け + るためにオプションに空が設定される。そうしないと画面更新がループに陥っ + てしまう。 Note このオプションが設定されているとき (さらにオプション 'laststatus' が 2 であるとき) は、'ruler' にはコマンド |CTRL-G| の出力を設定する効 @@ -5231,6 +6329,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 既定では右寄せになる。 0 数値の頭に0を表示する。欄 '-' が優先する。 minwid 項目の長さの最小値。余白の穴埋めは '-' と '0' で設定する。 + 50以下でなければならない。 maxwid 項目の長さの最大値。文字列の項目の切り詰めでは '<' が左に 表示される。数値の項目は maxwid-2 文字に切り詰められ、それ に ">数" が続く。ここで "数" は表示されなかった文字数であ @@ -5248,8 +6347,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる f S バッファ内のファイルの、カレントディレクトリに対する相対パス。 F S バッファ内のファイルのフルパス。 t S バッファ内のファイルのファイル名 (パスを除く)。 - m F 修正フラグ。表示されるのは 'modifiable' がオフならば " [+]" また - は " [-]" + m F 修正フラグ。表示されるのは " [+]"。'modifiable' がオフのときは + " [-]" M F 修正フラグ。表示されるのは ",+" または ",-"。 r F 読み込み専用フラグ。表示されるのは " [RO]"。 R F 読み込み専用フラグ。表示されるのは ",RO"。 @@ -5283,13 +6382,22 @@ Note 1番目の形式では、行全体がオプション指定に使われる a S 既定のタイトルと同様の引数ファイルリストを "({current} of {max})" と表示する。ファイル引数の数が0または1の ときは空。 - { NF '{' と '}' の間の expression を評価し、結果に置き換える。 + { NF '%{' と '}' の間の expression を評価し、結果に置き換える。 + 閉じ括弧 '}' の前には '%' がつかないことに注意。 ( - 項目グループの開始。グループ内の項目全てに対する幅と寄せ方の設定 に使える。どこかで %) で閉じられなければならない。 ) - 項目グループの終了。欄 width は指定できない。 + T N 'tabline' 用: ラベル「タブページ N」の開始。最後のラベルの後に + %T を書くこと。この情報はマウスクリックに使われる。 + X N 'tabline' 用: ラベル「タブ N を閉じる」の開始。ラベルの後に %X + を書くこと。例: %3Xclose%X。%999X は「カレントタブを閉じる」を + 意味する。この情報はマウスクリックに使われる。 < - 行が長すぎるときに切り詰める位置。既定では先頭。欄 width は指定 できない。 = - 左寄せ項目と右寄せ項目の区切り。欄 width は指定できない。 + # - 強調グループを設定する。この後に名前を書き、その後にまた # を書く。 + つまり、%#HLname# と書くと、強調グループ HLname になる。カレン + トウィンドウ以外のステータスラインに対しても同じ強調が施される。 * - 使われる強調表示グループを User{N} に設定する。ここで {N} は欄 minwid から取られる。例えば %1* と設定する。%* や %0* で通常の強 調表示を復元する。強調表示グループ User{N} と StatusLine の違い @@ -5317,7 +6425,13 @@ Note 1番目の形式では、行全体がオプション指定に使われる れている最中は、一時的にそのバッファまたはウィンドウがカレントバッファ またはカレントウィンドウに設定され、そこで expression が評価される。変 数 "actual_curbuf" は、本当のカレントバッファで関数 'bufnr()' が返す値 - に設定される。Expression はサンドボックス |sandbox| 内でも評価される。 + に設定される。 + + オプション 'statusline' は |sandbox| の中でも評価することができる。 + |sandbox-option| を参照。 + + 'statusline' を評価している間にテキストを変更したり他のウィンドウにジャ + ンプすることは許されていない |textlock|。 ステータス行が望みの時点 (例えば expression 内で使われる変数の設定をし た後) で更新されていないときは、オプションを値を変えずに設定し直すこと @@ -5334,14 +6448,14 @@ Note 1番目の形式では、行全体がオプション指定に使われる にして) ユーザのファイル .vimrc か何かを編集し、正常に戻す。 例: - カーソルが置かれているバイト数、カーソル下の文字のコード、修正フラグを - 赤で表示 > - :set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b' - :hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red -< 'ruler' がオンのときの標準のステータス行に似せる > + 'ruler' がオンのときの標準のステータス行に似せる > :set statusline=%<%f%h%m%r%=%l,%c%V\ %P < 同上、しかしカーソル下の文字の10/16進表現を表示する ("ga" のように) > :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P +< カーソルが置かれているバイト数、カーソル下の文字のコード、修正フラグを + 赤で表示 > + :set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b' + :hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red < 圧縮ファイルが読み込まれたとき、フラグ ,GZ を表示するには次のようにす る。まず > :set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h... @@ -5413,6 +6527,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる ることの不利益は小さい。システムによってはスワップファイルは全く書き込 まれない。Unixシステムでは、値を "sync" にすると既定の関数 fsync() で はなく関数 sync() を呼び出すが、システムによってはそちらの方がよい。 + 実ファイルに対してはオプション 'fsync' が適用される。 *'switchbuf'* *'swb'* 'switchbuf' 'swb' 文字列 (既定では "") @@ -5427,11 +6542,25 @@ Note 1番目の形式では、行全体がオプション指定に使われる するとき (":cc", ":cn", "cp" 等で) に影響する。また ":sbuffer", ":sbnext", ":sbrewind" 等のバッファ関係の ウィンドウ分割コマンド全てにも影響する。 + usetab "useopen"と同様だが、他のタブページで開かれているウィ + ンドウも考慮する。 split これが含まれたときは、カレントウィンドウをバッファの読 み込み前に分割する。含まれないときは、ウィンドウを分割 せず、カレントウィンドウを使う。 |quickfix| 関連の、エラーを表示するコマンドに影響する。 + *'synmaxcol'* *'smc'* +'synmaxcol' 'smc' 数値 (既定では 3000) + バッファについてローカル + {Vi にはない} + {Vi mが|+syntax|機能付きでコンパイルされたときのみ有効} + 構文アイテムを検索する桁数の最大値。長い行において、この桁以降のテキス + トは強調されない。また構文の状態がクリアされるため、これ以下の行は正し + く強調されない可能性がある。 + これは長い行を持つXMLファイルの描画が非常に遅くなるのを避けるために役 + に立つ。 + ゼロにするとその制限がなくなる。 + *'syntax'* *'syn'* 'syntax' 'syn' 文字列 (既定では "") バッファについてローカル @@ -5443,9 +6572,15 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションは、その時点以外では使われている構文定義を常に反映する訳 ではない (常に反映するのは変数 b:current_syntax)。 このオプションは、構文が自動的に認識されないファイルのモードラインで使 - うのが最も便利である。例えば、IDLファイルでは次のようにする。 > - /* vim: set syntax=idl : */ -< カレントファイルに対する構文強調表示を無効にするにはこうする。 > + うのが最も便利である。例えば、IDLファイルでは次のようにする。 + /* vim: set syntax=idl : */ ~ + このオプションの値にドットを含めると、ファイルタイプの区切りとなる。 + 例: + /* vim: set syntax=c.doxygen : */ ~ + こうするとまず最初に"c"の構文を使い、次に"doxygen"の構文を使うようにな + る。2番目のファイルタイプは追加として読み込まれるように準備されていな + ければならない。そうでないとスキップされる。ドットは1つ以上現れてもよ + い。カレントファイルに対する構文強調表示を無効にするにはこうする。 > :set syntax=OFF < オプション 'filetype' に従って、構文強調表示を開始するにはこうする。 > :set syntax=ON @@ -5453,6 +6588,38 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションの値を引数にして発生するということだ。 'cpoptions' のフラグ 's' や 'S' に関わらず、このオプションの値は別のバッ ファにはコピーされない。 + 通常のファイル名文字だけが使える。"/\*?[|<>"は不正である。 + + *'tabline'* *'tal'* +'tabline' 'tal' 文字列 (既定では"") + グローバル + {Vi にはない} + {Vi mが|+windows|機能付きでコンパイルされたときのみ有 + 効} + このオプションが空でないとき、Vimウィンドウの上にあるタブページ行の表 + 示内容を指定する。空のときは、既定のタブページ行が使われる。より詳しく + は|setting-tabline|を参照。 + + タブページ行はオプション'showtabline'で指定されたとき、またGUIのタブ行 + がないときだけ表示される。'guioptions'に'e'が入っていて、GUIがタブ行に + 対応しているときは代わりに'guitablabel'が使われる。 + + このオプションの値は'statusline'と同じように評価される。|tabpagenr()|, + |tabpagewinnr()|, |tabpagebuflist()|を使えば表示されるテキストを把握す + ることができる。1番目のラベルには"%1T"、2番目のラベルには"%2T"など。閉 + じラベルにはアイテム"%X"を使う。 + + アクティブなタブページは1つだけである。他のタブページは表示されず、そ + の中のウィンドウにジャンプすることはできない。 + + *'tabpagemax'* *'tpm'* +'tabpagemax' 'tpm' 数値 (既定では 10) + グローバル + {Vi にはない} + {Vi mが|+windows|機能付きでコンパイルされたときのみ有 + 効} + コマンドライン引数|-p|や":tab all"で開かれるタブページの最大数。 + |tabpage| *'tabstop'* *'ts'* 'tabstop' 'ts' 数値 (既定では 8) @@ -5512,6 +6679,15 @@ Note 1番目の形式では、行全体がオプション指定に使われる 整列されていないタグファイル内のタグや、大文字と小文字の違いのあるマッ チは、再試行でのみ見つかるだろう。 + 次に、タグファイルが大文字・小文字を無視して整列されていることを示して + いるなら、'ignorecase'の場合には線形探索をしなくてすむ。この場合には + "!_TAG_FILE_SORTED"の行で値'2'を設定すること。ほとんどのUnixでは"sort" + にオプション-fをつけると大文字・小文字を無視してタグファイルを整列する + ことができる。そのコマンドは次のようになる: "sort -f -o tags tags"。 + "Exuberant ctags"バージョン5.3以降ではオプション-fまたは + --fold-case-sortをつけるとこれと同様のことができる。こうするためには文 + 字を大文字に統一していなければならないことに注意。 + 'tagbsearch' がオフのとき、完全なマッチがあるとタグの検索は遅くなるが、 完全なマッチが全くないと逆に速くなる。整列されていないタグファイル内の タグは、'tagbsearch' がオフでないと見つからないかもしれない。 @@ -5549,9 +6725,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる えられる。ただしそれはオプション 'cpoptions' にフラグ 'd' が含まれてい ないときのみである。環境変数は展開される |:set_env|。|tags-option| も 参照。 - ワイルドカード "*" や "**" を使い、ディレクトリツリーの下に向かってタ - グファイルを検索できる。|file-searching| を参照。{Vi mが |+path_extra| - 機能付きでコンパイルされたときのみ有効} + "*" や "**" などのワイルドカードを使い、ディレクトリツリーの下に向かっ + てタグファイルを検索できる。|file-searching| を参照。{Vi mが + |+path_extra|機能付きでコンパイルされたときのみ有効} + 関数|tagfiles()|を使うと実際に使われるファイル名のリストを取得すること + ができる。 Vimが |+emacs_tags| 機能付きでコンパイルされたときは、Emacs形式のタグ ファイルも利用できる。形式は自動的に認識される。そのときの既定値は、大 文字と小文字の区別がないシステム (MS-Windows) 以外では @@ -5574,7 +6752,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションをオンにするのは、":tag" をマッピング内で使っていて、タ グスタックを変更すべきでないときに便利である。 - *'term'* + *'term'* *E529* *E530* *E531* 'term' 文字列 (既定では $TERM、それが失敗したら GUI版では: "builtin_gui" Amigaでは: "amiga" @@ -5594,7 +6772,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる < |termcap| を参照。 *'termencoding'* *'tenc'* -'termencoding' 'tenc' 文字列 (既定では "") +'termencoding' 'tenc' 文字列 (既定では ""; GTK+ 2 GUI では"utf-8"; + Macintosh GUI では"macroman") グローバル {Vi mが |+multi_byte| 機能付きでコンパイルされたときの み有効} @@ -5603,13 +6782,21 @@ Note 1番目の形式では、行全体がオプション指定に使われる コーディングをキーボードが生成し、どの文字エンコーディングをディスプレ イが理解できるかを指定する。GUI版ではキーボードにのみ適用される (ディ スプレイにはオプション 'encoding' が使われる)。 + Win32 のコンソール版では、コンソールのコードページがANSIコードページで + ないなら場合、その値が既定値となる。 + *E617* + Note: これはGTK+ 2 GUIには適用されない。GUIの初期化に成功した後で強制 + 的に'termencoding'が"utf-8"に設定される。 + これを他の値に設定しようとしても失敗し、エラーメッセージが表示される。 + Win32 GUIでは'termencoding'は入力された文字に対しては適用されない。 + Win32では常にユニコード文字が渡されるからである。 空のときは、'encoding' で指定されたエンコーディングが使われる。これが 通常の値である。 'termencoding' と 'encoding' の組み合わせが全て正しいわけではない。 |encoding-table| を参照。 - このオプションの値は、関数 iconv() でサポートされていなければならない。 - iconv() が値を扱えないときは、変換はなされず、非ASCII文字で問題が生じ - るだろう。 + このオプションの値は、内部変換または関数 iconv() でサポートされていな + ければならない。iconv() が値を扱えないときは、変換はなされず、非ASCII + 文字で問題が生じるだろう。 例: ユーザは euc-jp (日本語) に設定されたロケールで作業していて、UTF-8 のファイルを編集したいとする。 > :let &termencoding = &encoding @@ -5653,6 +6840,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる いように空白の後で改行される。値を 0 に設定すると無効になる。オプショ ン 'textwidth' が 0 のときは、'wrapmargin' が使われる場合がある。 'formatoptions' と |ins-textwidth| を参照。 + 'formatexpr'が設定されている場合、その値を使って改行される。 NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな るので注意。 @@ -5672,7 +6860,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる リストにディレクトリを追加するときには |:set+=|、リストからディレクト リを除くときには |:set-=| を使うのがよい。こうすると将来のヴァージョン で異なった既定値が使われるようになったときに、問題が起きるのを防げる。 - 安全上の問題のため、このオプションに逆単引用符 backtick '`' は使えない。 + 安全上の問題のため、このオプションにバッククォート '`' は使えない。 *'tildeop'* *'top'* *'notildeop'* *'notop'* 'tildeop' 'top' 切替 (既定ではオフ) @@ -5728,6 +6916,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる グローバル {Vi にはない} キーコードやマッピングされたキー列が完了するのを待つ時間 (ミリ秒単位)。 + すでにコマンドの一部がタイプされているとき、CTRL-\ CTRL-NとCTRL-\ + CTRL-Gにも適用される。 普通オプション 'timeoutlen' のみが使われ、'ttimeoutlen' は -1 に設定さ れる。キーコードに対して異なった待ち時間を設定したいときは、 'ttimeoutlen' を非負の値に設定すること。 @@ -5804,6 +6994,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションの値は、Vimの終了時に元のウィンドウタイトルが復元できな い場合のタイトルに使われる。オプション 'title' がオンであるか 'titlestring' が空でないときのみ有効である。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'titlestring'* 'titlestring' 文字列 (既定では "") グローバル @@ -5840,6 +7032,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ツールバーの様々な設定を行う。指定可能な値は以下の通り。 icons ツールバーのボタンにアイコンが表示される。 text ツールバーのボタンに名前が表示される。 + horiz ツールバーのボタンのアイコンとテキストが水平に + 配置される。|GTK+ 2 GUIでのみ利用可能| tooltips ツールバーのボタンでツールティップが表示される。 ツールティップとは、マウスカーソルがツールバーのボタン上にしばらく置か れたときに飛び出す、ヘルプテキストのことである。 @@ -5855,6 +7049,23 @@ Note 1番目の形式では、行全体がオプション指定に使われる :set guioptions-=T < |gui-toolbar| も参照。 + *'toolbariconsize'* *'tbis'* +'toolbariconsize' 'tbis' 文字列 (既定では "small") + グローバル + {Vi にはない} + {GTK+ 2 GUI版でのみ利用可能} + ツールバーのアイコンのサイズを制御する。設定可能な値は次の通り: + tiny 最も小さいツールバーのアイコンを使用する。 + small 小さいツールバーのアイコンを使用する(既定値)。 + medium 中程度のツールバーのアイコンを使用する。 + large 大きいツールバーのアイコンを使用する。 + 各種アイコンサイズのピクセル単位での正確な大きさは、使用しているテーマ + に依存する。共通の大きさはlarge=32x32、medium=24x24、small=20x20、 + tiny=16x16である。 + + 'toolbariconsize'が空のときは、ユーザの設定または現在使用しているテー + マによって決定されるグローバルなデフォルトサイズが使用される。 + *'ttybuiltin'* *'tbi'* *'nottybuiltin'* *'notbi'* 'ttybuiltin' 'tbi' 切替 (既定ではオン) グローバル @@ -5899,8 +7110,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる "<Esc>[Mscr" である。ここで "scr" は次のような3バイト のコードである。 "s" = ボタンの状態 - "c" = 列数足す 33 + "c" = 桁数足す 33 "r" = 行数足す 33 + これは223桁までしか機能しないことに注意。解決策につい + ては"dec"を参照。 xterm2 "xterm" と動作が似ているが、ドラッグ中もマウス位置を返 すような xterm に対して働く。こちらの方がずっと動作が 速く、正確である。これを使うには、ユーザの xterm が最 @@ -5914,6 +7127,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる *dec-mouse* dec DEC terminal 風にマウスを扱う。マウスが生成するのは、 "<Esc>[" で始まるかなり複雑なコードである。 + Xtermが"--enable-dec-locator"つきでconfigureされている + ならば、Xtermでもこれを利用できる。 *jsbterm-mouse* jsbterm JSB term 風にマウスを扱う。 @@ -5982,7 +7197,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'updatecount' を 0 に設定できる。|startup| を参照。読み込み専用モード で編集しているときは、このオプションは 10000 に初期化される。 'swapfile' により、スワップファイルをバッファごとに無効化できる。 - 'updatecount' が非0 から 0 に変更されたときは、'swapfile' がオンになっ + 'updatecount' が 0 から 非0 に変更されたときは、'swapfile' がオンになっ ている全てのバッファで、スワップファイルが作られる。'updatecount' が 0 になったときは、既存のスワップファイルは削除されない。 'swapsync' も参照。 @@ -6006,15 +7221,31 @@ Note 1番目の形式では、行全体がオプション指定に使われる 現在のところ、以下のメッセージが表示される。 1以上 ファイル viminfo が読み書きされたとき 2以上 コマンド ":source" でファイルを読み込んだとき - 5以上 検索されたタグファイル全て + 5以上 検索されたタグファイルとインクルードファイル全て 8以上 autocommand のグループが実行されたファイル 9以上 実行された autocommand 全て 12以上 実行された関数全て + 13以上 例外が発生/捕捉/終了/破棄されたとき + 14以上 ":finally"節において保留されている全て 15以上 実行された Ex コマンド全て (200 文字から後は切り捨て) このオプションは、引数 "-V" でも設定できる。|-V| を参照。 このオプションは、コマンド |:verbose| でも設定できる。 + 'verbosefile'が設定されている場合、verboseのメッセージは表示されない。 + + *'verbosefile'* *'vfile'* +'verbosefile' 'vfile' 文字列 (既定では "") + グローバル + {Vi にはない} + このオプションが空でないとき、全てのメッセージはこの名前のファイルに書 + き出される。ファイルが既に存在するときは、そこに追加される。 + ファイルへの書き出しはVimが終了したときか、または'verbosefile'が空に設 + 定されたとき終了する。 + 'verbosefile'を新しい値に設定すると、最初に空に設定したのと同じことに + なる。|:redir|との違いは、'verbosefile'が設定されているとき冗長なメッ + セージは画面に表示されないことである。 + *'viewdir'* *'vdir'* 'viewdir' 'vdir' 文字列 (Amiga, MS-DOS, OS/2とWin32での既定値: "$VIM/vimfiles/view", @@ -6027,8 +7258,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi mが |+mksession| 機能付きでコンパイルされたときの み有効} コマンド |:mkview| によるファイルを格納するディレクトリの名前。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'viewoptions'* *'vop'* 'viewoptions' 'vop' 文字列 (既定では "folds,options,cursor") @@ -6045,10 +7276,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる options ウィンドウまたはバッファについてローカルなオプションと マッピング (ローカルなオプションのグローバルな値は含め ない) - (訳注: 次のキーワードも使用可能と思われる。実際、下の注釈には出てい - る。 slash ファイル名内の '\' がスラッシュに置換される - ) unix WindowsやDOS上でも、Unix形式の end-of-line (1個の <NL>) を使う @@ -6056,12 +7284,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる 便利である。Unix版のVimはdos形式のスクリプトを読み込めないが、Windows 版のVimはunix形式のスクリプトを読み込めるからだ。 - *'viminfo'* *'vi'* + *'viminfo'* *'vi'* *E526* *E527* *E528* 'viminfo' 'vi' 文字列 (Viの既定値は "", Vimの既定値は、 - MS-DOS, WindowsとOS/2では: '20,"50,h,rA:,rB: - Amigaでは: '20,"50,h,rdf0:,rdf1:,rdf2: - 他のシステムでは: '20,"50,h) + MS-DOS, WindowsとOS/2では: '20,<50,s10,h,rA:,rB:, + Amigaでは: '20,<50,s10,h,rdf0:,rdf1:,rdf2: + 他のシステムでは: '20,<50,s10,h) グローバル {Vi にはない} {Vi mが |+viminfo| 機能付きでコンパイルされたときの @@ -6075,24 +7303,31 @@ Note 1番目の形式では、行全体がオプション指定に使われる ! これが含まれると、アルファベットの大文字で始まり、小文字を含ま ないグローバル変数を保存・復元する。つまり "KEEPTHIS" と "K_L_M" は保存されるが、"KeepThis" と "_K_L_M" は保存されない。 - " 各レジスタで保存される行数の最大値。0 にすると、レジスタは保存 - されなくなる。指定されないときは、すべての行が保存される。文字 - '"' の前に '\' を置くことを忘れないこと。そうでないと、コメン - トの開始と見なされてしまう! + 文字列と数値型のみ保存される。 + " 各レジスタで保存される行数の最大値。これはフラグ'<'の古い表記 + である。この表記の不利点は、エスケープのために"を前に書かない + といけないことである。そうしないとコメントの開始と見なされてし + まう! % これが含まれると、バッファリストを保存・復元する。Vimの起動時 にファイル名が引数に含まれていると、バッファリストは復元されな い。 Vimの起動時にファイル名が引数に含まれていないと、バッファ リストが viminfo ファイルから復元される。ファイル名のないバッ ファとヘルプ用バッファは、viminfo ファイルには書き込まれない。 + このフラグの後に続けて数値を書くと、保存されるバッファ数の最大 + 値を指定することができる。数値が書かれていない場合、全てのバッ + ファが保存される。 ' マークが復元されるファイル履歴の最大値。オプション 'viminfo' が空でないときは、常にこれを設定しなければならない。 - また、このオプションを設定するとジャンプリスト |jumplist| も - viminfo ファイルに蓄えられることになる。 + また、このオプションを設定するとジャンプリスト |jumplist|と + |changelist| も viminfo ファイルに蓄えられることになる。 / 保存される検索パターンの履歴の最大値。非0 の値を指定すると、前 回の検索パターンと置換パターンも保存される。これが含まれないと きは、'history' の値が使われる。 : 保存されるコマンドライン履歴の最大値。これが含まれないときは、 'history' の値が使われる。 + < 各レジスタで保存される行数の最大値。0 にすると、レジスタは保存 + されなくなる。'"'はこのフラグの古い表記である。 + 下記のフラグ's'も参照: 's'はKbyte単位で最大値を指定する。 @ 保存される input-line 履歴の最大値。これが含まれないときは、 'history' の値が使われる。 c これが含まれると、viminfo ファイル内のテキストを、書き込まれた @@ -6116,14 +7351,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる これは複数個指定できる。それぞれがマーク履歴の対象外になるパス の先頭部を指定する。これはリムーバブル・メディアを避けるためで ある。 MS-DOSでは "ra:,rb:", Amigaでは "rdf0:,rdf1:,rdf2:" と - するとよい。大文字と小文字の区別はない。それぞれの 'r' の引数 - の最大長は 50 文字である。 + するとよい。ここに一時ファイルを指定することもできる(Unixの例: + "r/tmp")。大文字と小文字の区別はない。それぞれの 'r' の引数の + 最大長は 50 文字である。 + s Kbyte単位でのフラグの最大値。0のときレジスタは保存されない。現 + 在のところこれはレジスタにのみ適用される。既定値の"s10"の状態 + では、10Kbyteを超えるテキストを持つレジスタは除外される。上記 + のフラグ'<'も参照: '<'は行数で制限値を指定する。 例: > - :set viminfo='50,\"1000,:0,n~/vim/viminfo + :set viminfo='50,<1000,s100,:0,n~/vim/viminfo < '50 最近編集した 50 ファイル内のマークは保存される。 - "1000 レジスタの中身 (それぞれ 1000 行まで) は保存される。 + <1000 レジスタの中身 (それぞれ 1000 行まで) は保存される。 + s100 100Kbyteを超えるテキストを持つレジスタは保存されない。 :0 コマンドラインの履歴は保存されない。 n~/vim/viminfo 使用するファイル名は "~/vim/viminfo" である。 '/' がない '/' が指定されていないので、既定値が使われる。つまり全 @@ -6132,8 +7373,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる '%' がない バッファリストは、保存も復元もされない。 'h' がない 'hlsearch' による強調表示は復元される。 - 安全上の理由から、このオプションをモードライン |modeline| から設定する - ことはできない。 + 'viminfo'を空の値から他の値へ変更するとき、|:rviminfo|を使うと、そのファ + イルの中身を読み込むことができる。これは自動的には行われない。 + + 安全上の理由から、このオプションをモードライン|modeline|やサンドボック + ス|sandbox|の中で設定することはできない。 *'virtualedit'* *'ve'* 'virtualedit' 've' 文字列 (既定では "") @@ -6145,10 +7389,21 @@ Note 1番目の形式では、行全体がオプション指定に使われる block Visual blockモードで仮想編集を有効にする。 insert Insertモードで仮想編集を有効にする。 all 全てのモードで仮想編集を有効にする。 + onemore 行末の1文字先までカーソルを移動できるようにする。 仮想編集とは、実際に文字がないところにもカーソルを置けるようにすること である。つまりタブ文字の内部や行末より後ろにカーソルを移動できる。 Visualモードで長方形を選択するときや、表を編集するときに便利である。 (訳注: フリーカーソルモードとも呼ばれる) + "onemore"は同じではない。"onemore"は単にカーソルを行の最後の文字の直後 + まで移動できるようにするだけである。これによっていくつかのコマンドがよ + り一貫性を持つようになる。以前は、空行では常にカーソルは行末を越えてい + た。しかしこれはVi互換からはほど遠い。これを設定すると動かなくなるプラ + グインやVimスクリプトもあるかもしれない。例えば|l|でカーソルが最後の文 + 字の後に移動できるためである。よく注意して使うこと! + コマンド|$|はカーソルを行の最後の文字へ移動させる。最後の文字を越えは + しない。そのため、|$|によってカーソルが左へ移動することもありえる。 + "all"と"onemore"を同時に設定することは意味がないが、そのように設定して + も警告は出ない。 *'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep* 'visualbell' 'vb' 切替 (既定ではオフ) @@ -6193,8 +7448,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる フラグ キー モード ~ b <BS> NormalとVisual s <Space> NormalとVisual - h "h" NormalとVisual - l "l" NormalとVisual + h "h" NormalとVisual (非推奨) + l "l" NormalとVisual (非推奨) < <Left> NormalとVisual > <Right> NormalとVisual ~ "~" Normal @@ -6209,8 +7464,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる のコマンドは "dl" と "dh" と同様に働くからだ。これを使うときは、バック スペースでカーソル前の文字を削除できるようにするため、マッピング ":map <BS> X" を使うとよい。 - 値に 'l' が含まれたときは副作用がある。空行で "yl" を実行すると <EOL> - も含まれるため、その後の "p" は新しい行を挿入する。 + 値に 'l' が含まれているとき、行末でオペレータの後にlを使うと、カーソル + が次行に移動しない。これによって"dl", "cl", "yl"などが普通に動作する。 NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 値に、オフのときはVimの既定値になるので注意。 @@ -6331,6 +7586,21 @@ Note 1番目の形式では、行全体がオプション指定に使われる :set wildmode=longest,list < 共通する最長の文字列を補完し、次から他の候補を羅列する + *'wildoptions'* *'wop'* +'wildoptions' 'wop' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vi mが|+wildignore|機能付きでコンパイルされたときのみ + 有効} + コマンドライン補完の挙動を変える単語のリスト。 + 現在のところ1つの単語だけが設定できる: + tagfile CTRL-Dでマッチするタグを一覧表示するとき、タグの種類と + そのタグのファイル名が表示される。1行につき1つのマッチ + が表示される。よく使われるタグの種類は次の通り: + d #define マクロ + f 関数 + |cmdline-completion|も参照。 + *'winaltkeys'* *'wak'* 'winaltkeys' 'wak' 文字列 (既定では "menu") グローバル @@ -6350,10 +7620,24 @@ Note 1番目の形式では、行全体がオプション指定に使われる 使える。 オプション 'guioptions' からフラグ 'm' が取り除かれ、メニューが無効に なっていると、ALT キーはメニューには全く使われない。 - Win32版では、キー <F10> も同様に扱われる。それはMS-Windowsはこれをメ - ニューの選択に使うからである。 - - *'winheight'* *'wh'* + このオプションは<F10>には適用されない; Win32版とGTK版では、マッピング + されていない限り<F10>を押すとメニューが選択される。 + + *'window'* *'wi'* +'window' 'wi' 数値 (既定では: 画面の高さ - 1) + グローバル + ウィンドウの高さ。Vimウィンドウの高さと混同しないこと。そちらには + 'lines'を使う。 + ウィンドウが1つだけで、このオプションの値が'lines' - 1 より小さいとき、 + |CTRL-F|と|CTRL-B|でスクロールする行数に影響する。'window' - 2 行(ただ + し最小値は1行)だけ画面がスクロールする。 + 'window'が'lines' - 1 に等しいとき、CTRL-FとCTRL-Bは折り返された行を考 + 慮したより賢い方法でスクロールする。 + Vimウィンドウをリサイズするとき、このオプションの値が1より小さいか + 'lines'以上ならば'lines' - 1 に設定される。 + {Vi はこのオプションによって表示する行の数も決定する} + + *'winheight'* *'wh'* *E591* 'winheight' 'wh' 数値 (既定では 1) グローバル {Vi にはない} @@ -6363,12 +7647,35 @@ Note 1番目の形式では、行全体がオプション指定に使われる ないときには行数はこれよりも少なくなる。カレントウィンドウの行数が指定 したものより少ないときは、他のウィンドウの行数を減らしてそれを増やす。 カレントウィンドウが常に画面を埋めるようにするには、値を 999 にするこ - と。普通の編集時には小さい値にすること。 + と(ただしこうすると":all"を使ったときウィンドウが2つしか作られないとい + う難点もある)。普通の編集時には小さい値にすること。 + 最小値は1。 カレントウィンドウの高さを変更するコマンドの後では、ウィンドウの高さは 調整されない。 'winheight' はカレントウィンドウに適用される。他のウィンドウの高さの最 小値の設定には、'winminheight' を使うこと。 + *'winfixheight'* *'wfh'* *'nowinfixheight'* *'nowfh'* +'winfixheight' 'wfh' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vi mが|+windows|機能付きでコンパイルされたときのみ有 + 効} + 'equalalways'をオンにしてウィンドウを開閉したとき、ウィンドウの高さを + 保つ。|preview-window|と|quickfix-window|に対してはデフォルトでオンに + なる。 + これをオンにしていても、利用できる高さが不足している場合には高さが変わ + る。 + + *'winfixwidth'* *'wfw'* *'nowinfixwidth'* *'nowfw'* +'winfixwidth' 'wfw' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vi mが|+windows|機能付きでコンパイルされたときのみ利 + 用可能} + 'equalalways'がオンになっていてウィンドウを開閉したとき、ウィンドウの + 幅を保つ。これをオンにしていても、利用できる幅が不足している場合には幅 + が変わる。 *'winminheight'* *'wmh'* 'winminheight' 'wmh' 数値 (既定では 1) グローバル @@ -6401,7 +7708,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 大きな値を使わないこと。そうするとウィンドウを幾つも開いたときにエラー になる。値は 0 から 12 までが適当である。 - *'winwidth'* *'wiw'* + *'winwidth'* *'wiw'* *E592* 'winwidth' 'wiw' 数値 (既定では 20) グローバル {Vi にはない} @@ -6438,6 +7745,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる バッファについてローカル ウィンドウの右端からこの文字数だけ離れたところで折り返しが始まる。この 境界を超えてテキストを入力すると、 <EOL> が挿入され、挿入は次行に続く。 + 'number'や'foldcolumn'など幅をとるオプションを使用していると、テキスト + の幅がこの値より少なくなる。これはVi互換の動作である。 オプション 'textwidth' が非0 のときは、このオプションは使われない。 'formatoptions' と |ins-textwidth| も参照。 {Vi: 少し不便な、違った動 作をする} @@ -6445,7 +7754,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'wrapscan'* *'ws'* *'nowrapscan'* *'nows'* 'wrapscan' 'ws' 切替 (既定ではオン) *E384* *E385* グローバル - 検索がファイル末尾まで進んだら、ファイル先頭から再び検索する。 + 検索がファイル末尾まで進んだら、ファイル先頭から再び検索する。スペリン + グミスを検索する|]s|と|[s|にも適用される。 *'write'* *'nowrite'* 'write' 切替 (既定ではオン) diff --git a/ja/vim_faq_help.jax b/ja/vim_faq_help.jax index c500843a9..2cd3a3471 100644 --- a/ja/vim_faq_help.jax +++ b/ja/vim_faq_help.jax @@ -297,7 +297,7 @@ SECTION 18 - リモート編集 か? *faq-options* SECTION 19 - オプション -|faq-19.1| Vimを簡単な方法で設定するには? +|faq-19.1| Vimを設定する簡単な方法は? |faq-19.2| オプションの値をトグルするには? |faq-19.3| 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプション を設定するには? @@ -440,10 +440,10 @@ SECTION 26 - プラグイン |faq-26.2| プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイル タイププラグインをダウンロードしました。Vimがこれらのファイルを読 み込むようにするには、どこにコピーすればいいですか? -|faq-26.3| 既存のファイルタイププラグインを拡張するには? +|faq-26.3| 既存のファイル形式別プラグインを拡張するには? |faq-26.4| プラグインの読み込みをオフにするには? -|faq-26.5| ファイルタイププラグインの読み込みをオフにするには? -|faq-26.6| 全てのファイル形式に対し、グローバルのファイルタイププラグインで +|faq-26.5| ファイル形式別プラグインの読み込みをオフにするには? +|faq-26.6| 全てのファイル形式に対し、グローバルのファイル形式別プラグインで なされる設定を上書きするには? |faq-26.7| Vimのディレクトリブラウザプラグインを無効にするには? |faq-26.8| 特定のパターンにマッチする名前のファイルや拡張子に応じてファイル @@ -601,7 +601,7 @@ SECTION 37 - ユニコード |faq-37.1| Vimでユニコードのファイルを作ることはできますか? |faq-37.2| ユニコードのファイルを編集するにあたって特に重要な設定は? |faq-37.3| オプション'encoding'とは何ですか? -|faq-37.4| Vimでは様々なユニコードエンコーディングをどう書き表しますか? +|faq-37.4| Vimでは様々なユニコードエンコーディングをどう表記しますか? |faq-37.5| バイト順マークの有無を指定するには? |faq-37.6| オプション'fileencoding'とは何ですか? |faq-37.7| オプション'fileencodings'とは何ですか? @@ -1002,7 +1002,7 @@ Amiga、Atari、BeOS、DOS、Macintosh、MachTen、OS/2、RiscOS、VMS です。 3.4. どこでVimのランタイムファイルの最新バージョンをダウンロードできますか? -Vimランタイムファイル(構文ファイル、ファイルタイププラグイン、コンパイラプラ +Vimランタイムファイル(構文ファイル、ファイル形式別プラグイン、コンパイラプラ グイン、カラースキーム、ドキュメント、インデントファイル、キーマップ)はVim ftpサイトのftp://ftp.vim.org/pub/vim/runtimeディレクトリでダウンロードできます 。 @@ -1466,7 +1466,7 @@ CTRL-^を使ってバッファを切り替えることもできます。キー 6.7. ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? 標準Vimディストリビューションに同梱のnetrw.vimを使えばftp/scp/rcp/httpでネット -ワークごしに府ぃあるを編集することができます。このプラグインを使うと、Vimは +ワークごしにファイルを編集することができます。このプラグインを使うと、Vimは ftp/scp/rcp/httpごしのファイルを透過的に読み込み、保存します。例えば、ftpごし にファイルを編集するには、以下のコマンドを使います: > @@ -1590,7 +1590,7 @@ SECTION 8 - バッファ ":enew"コマンドを使うとカレントウィンドウのバッファに換わって空バッファを読み 込みます。 -For more information, read > +さらなる情報については以下を参照してください。 > :help :enew < @@ -2116,7 +2116,7 @@ SECTION 11 - テキストを検索する 11.4. '~R', '~S'などと表示される文字を検索・置換するには? 'ga'で特殊文字のアスキーコードを表示することができます。例えばアスキーコードが -142だったらなら、次のコマンドでその特殊文字を検索することができます: > +142であるなら、次のコマンドでその特殊文字を検索することができます: > /^V142 < @@ -3798,7 +3798,7 @@ Vimのリモートサーバ機能についての情報はこれを読めば得 SECTION 19 - オプション *faq-19.1* -19.1. Vimを簡単な方法で設定するには? +19.1. Vimを設定する簡単な方法は? ":options"でオプションウィンドウを開くことができます: > @@ -5404,14 +5404,14 @@ SECTION 26 - プラグイン *faq-26.1* 26.1. ファイル形式ごとに異なるオプションを設定するには? -ファイルタイププラグインを作れば、ファイル形式ごとに異なるオプションを設定する -ことができます。まず最初に次のコマンドでファイルタイププラグインを有効にしてく +ファイル形式別プラグインを作れば、ファイル形式ごとに異なるオプションを設定する +ことができます。まず最初に次のコマンドでファイル形式別プラグインを有効にしてく ださい: > :filetype plugin on < -ファイルタイププラグインは、Vimでその形式のファイルを作成したり開く度に読み込 -まれるVimスクリプトです。例えば、Cプログラム(ファイルタイプ'c')を編集するとき +ファイル形式別プラグインは、Vimでその形式のファイルを作成したり開く度に読み込 +まれるVimスクリプトです。例えば、Cプログラム(ファイル形式'c')を編集するとき は常に'textwidth'を80にするには、次のファイルのどれかを作ります: > ~/.vim/ftplugin/c.vim (Unix) @@ -5441,7 +5441,7 @@ SECTION 26 - プラグイン するには、どこにコピーすればいいですか? ランタイムファイル(プラグイン、構文ファイル、インデントファイル、カラースキー -ム、ファイルタイププラグインなど)は'runtimepath'で指定されたディレクトリのうち +ム、ファイル形式別プラグインなど)は'runtimepath'で指定されたディレクトリのうち どれかの下に置きます。'runtimepath'の現在の値を知るには次のコマンドを使います : > @@ -5455,7 +5455,7 @@ Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになり colors/ - カラースキームファイル compiler/ - コンパイラファイル doc/ - ドキュメント - ftplugin/ - ファイルタイププラグイン + ftplugin/ - ファイル形式別プラグイン indent/ - インデントスクリプト keymap/ - キーマップファイル lang/ - メニューの翻訳 @@ -5470,17 +5470,17 @@ Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになり :help :runtime < *faq-26.3* -26.3. 既存のファイルタイププラグインを拡張するには? +26.3. 既存のファイル形式別プラグインを拡張するには? ディレクトリ$VIMRUNTIME/after/ftpluginまたは$VIMRUNTIME/ftpluginの下にファイル -を作ることによって、既存のファイルタイププラグインを拡張することができます。 -そのファイルの名前は既存のファイルタイププラグインの名前と同じにすべきです。 +を作ることによって、既存のファイル形式別プラグインを拡張することができます。 +そのファイルの名前は既存のファイル形式別プラグインの名前と同じにすべきです。 この新しいファイルにあなたの拡張を書き加えます。 そのファイルをafter/ftpluginディレクトリに置くと、Vimはまず既存のファイルタイ ププラグインを読み込み、その後にその新しいファイルを読み込みます。そのファイル を$VIMRUNTIME/ftpluginディレクトリに置くと、Vimはまずその新しいファイルを読み -込み、その後に既存のファイルタイププラグインを読み込みます。 +込み、その後に既存のファイル形式別プラグインを読み込みます。 さらなる情報については以下を参照してください。 > @@ -5508,14 +5508,14 @@ Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになり :help load-plugins < *faq-26.5* -26.5. ファイルタイププラグインの読み込みをオフにするには? +26.5. ファイル形式別プラグインの読み込みをオフにするには? -デフォルトではvimはファイルタイププラグインを読み込みません。ファイルタイププ +デフォルトではvimはファイル形式別プラグインを読み込みません。ファイル形式別プ ラグインを読み込むように設定するには次のコマンドを使います: > filetype plugin on < -ファイルタイププラグインの読み込みをオフにするにはこうします: > +ファイル形式別プラグインの読み込みをオフにするにはこうします: > filetype plugin off < @@ -5526,10 +5526,10 @@ Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになり :help :filetype < *faq-26.6* -26.6. 全てのファイル形式に対し、グローバルのファイルタイププラグインでなされる +26.6. 全てのファイル形式に対し、グローバルのファイル形式別プラグインでなされる 設定を上書きするには? -ファイルタイプイベントで引き起こされる自動コマンドを使います: > +ファイル形式イベントで引き起こされる自動コマンドを使います: > au Filetype * set formatoptions=xyz < @@ -5537,8 +5537,8 @@ Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになり の"myfiletypefile"ファイル中で行うのがベストです。そうすればこれは必ず最後に実 行されるようになります。 -特定のファイルタイプに対して設定を上書きしたいなら、~/.vim/after/ftpluginに元 -のファイルと同盟のファイルを作ります。例えば、ファイルタイププラグインc.vimの +特定のファイル形式に対して設定を上書きしたいなら、~/.vim/after/ftpluginに元 +のファイルと同名のファイルを作ります。例えば、ファイル形式別プラグインc.vimの 設定を上書きするには、~/.vim/after/ftpluginにc.vimを作り、そこに好みの設定を書 き込みます。 @@ -5560,7 +5560,7 @@ Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになり :help file-explorer < *faq-26.8* -26.8. 特定のパターンにマッチする名前のファイルや拡張子に応じてファイルタイプオ +26.8. 特定のパターンにマッチする名前のファイルや拡張子に応じてファイル形式オ プションを設定するには? 特定のパターンにマッチする名前のファイルに対しては、自動コマンドを使って @@ -5594,7 +5594,7 @@ SECTION 27 - プログラムファイルを編集する *faq-27.1* 27.1. C/C++のファイルに対してオートインデントを有効化するには? -ファイルタイプに基づくインデントを有効化するには次を実行します: > +ファイル形式に基づくインデントを有効化するには次を実行します: > :filetype indent on < @@ -5969,8 +5969,8 @@ SECTION 30 - 外部プログラムとの連携 :10,20!sort < -また、バッファを外部プログラムにパイプしたいが、バッファを出力で書き換えたく内 -場合はこうします: > +また、バッファを外部プログラムにパイプしたいが、バッファを出力で書き換えたくな +い場合はこうします: > :w !sort < @@ -6268,7 +6268,7 @@ Vimは等幅フォントのみサポートしています。プロポーショ 31.14. テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコピーし たテキストがペーストされてしまいます。この挙動を無効にするには? -マウスの中央ボタンを<Nop>にマップすると中央ボタンを無効化できます: > +マウスの中央ボタンに<Nop>をマップすると中央ボタンを無効化できます: > :map <MiddleMouse> <Nop> :map! <MiddleMouse> <Nop> @@ -6281,7 +6281,7 @@ Vimは等幅フォントのみサポートしています。プロポーショ 31.15. GVimウィンドウの位置とサイズを変更するには? コマンド"winpos"を使えばVimウィンドウの位置を変えることができます。ウィンドウ -のサイズを帰るには、オプション"lines"と"columns"を変更します。 +のサイズを変えるには、オプション"lines"と"columns"を変更します。 例えば、次のコマンドはGVimウィンドウのX,Y座標を50,50に、行数を50に、桁数を80に セットします。 > @@ -6432,7 +6432,7 @@ xtermは「代替スクリーン」("alternate screen")という機能を持っ <Ctrl-Z>をマップすればサスペンドするのを防げます。いくつかの提案を示します: -- <Ctrl-Z>をなにもしないようにする: > +- <Ctrl-Z>でなにもしないようにする: > :map <C-Z> <Nop> < @@ -6497,11 +6497,12 @@ SECTION 33 - MS-Windows上のVim 33.1. MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。どうな っているのですか? -mswin.vimプラグインは、VimがMS-Windowsアプリケーションに似た挙動をするようにキ -ーマッピングとオプションを設定します。そのキーマップの一つがCTRL-Vで、これは -MS-Windowsアプリケーションではテキストをペーストします。そしてCTRL-Vでビジュア -ル矩形モードが始まらないようにします。mswin.vimではビジュアル矩形モードの開始 -がCTRL-Qにマップされています。ですのでCTRL-Vの代わりにCTRL-Qを使ってください。 +mswin.vimプラグインは、VimがMS-Windowsアプリケーションに似た挙動をするようにキー +マッピングとオプションを設定します。そのキーマップの一つがCTRL-Vで、これは +MS-Windowsアプリケーションではテキストをペーストします。このためCTRL-Vでビジュ +アル矩形モードが始まらないようになっています。mswin.vimではビジュアル矩形モー +ドの開始がCTRL-Qにマップされています。ですのでCTRL-Vの代わりにCTRL-Qを使ってく +ださい。 さらなる情報については以下を参照してください > @@ -6693,7 +6694,6 @@ UnixシステムでVimをソースからビルドするには、次のステッ $ bunzip2 -c <filename> | tar -xf - < - 'make'を実行してVimをデフォルト設定で調整し、ビルドします。 - configuration. - 'make install'してVimをデフォルトのディレクトリにインストールします。 Vimの様々な機能を有効/無効にするには、'make'を実行する前に'configure'コマンド @@ -6702,6 +6702,8 @@ Vimの様々な機能を有効/無効にするには、'make'を実行する前 $ configure -help < +訳注: --help の間違い? + さらなる情報については以下を参照してください > :help install @@ -7035,7 +7037,7 @@ Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> :help 'encoding' < *faq-37.4* -37.4. Vimでは様々なユニコードエンコーディングをどう書き表しますか? +37.4. Vimでは様々なユニコードエンコーディングをどう表記しますか? Utf-8はutf-8またはutf8と書きます。utf-16はucs-2またはucs2と書きます。utf-32は ucs-4またはucs4と書きます。エンディアンを指定することもできます(utf-8はエンディ @@ -7053,7 +7055,7 @@ ucs-4のエンコーディングでファイルを作成すると、Vimはあな *faq-37.5* 37.5. バイト順マークの有無を指定するには? -'fileencodings'が"ucs-bom"を含むなら、ファイルを読み込むときにバイト順マークの +'fileencodings'が"ucs-bom"を含む場合、ファイルを読み込むときにバイト順マークの チェックが行われます。オプション'bomb'がオンなら、ファイルを書き込むときに、そ のファイルのエンコーディングを保証するバイト順マークを書き込みます。 From b10c2a2969b6bbf7e6d9c546d3b954b3a952fb39 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Fri, 26 Jan 2007 09:37:31 +0000 Subject: [PATCH 079/783] fix: map.jax git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@79 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/map.jax | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ja/map.jax b/ja/map.jax index c8fc03078..4a6bbc7ab 100644 --- a/ja/map.jax +++ b/ja/map.jax @@ -470,6 +470,18 @@ CTRL-V を1つだけ入力した後に (実際にはCTRL-Vを2度押しで入力 :map <F8> <Nop> :map! <F8> <Nop> < + *map-multibyte* +マルチバイト文字をマップすることができます。ただし、マルチバイト文字の一部のバ +イトだけをマップすることはできません。それは次のような問題が起こるのを防ぐため +です: > + :set encoding=latin1 + :imap <M-C> foo + :set encoding=utf-8 +latin1 環境で文字「Ã」(0xC3 または <M-C>) をマップしています。例えば、「á」 +(0xE1 または <M-a>) は UTF-8 では 0xC3 0xA1 の 2 バイトで表現されるので、0xC3 +をマップしてしまうと á が入力できなくなってしまいます。 +訳注: 原文á(0xea <M-a>)はtypo? + *<Leader>* *mapleader* マップコマンドで特別な文字列 "<Leader>" を使用すると、その部分が変数 "mapleader" に設定された文字列で置き換わります。"mapleader" が空文字列のときや From 0253c5b8bbc5fa05ddfbb1e38bae4533d0ab8213 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 18 Mar 2007 07:28:26 +0000 Subject: [PATCH 080/783] fix: update to 7.0 fix: STATUS header remove: not translated files git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@80 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/arabic.txt | 323 -- en/hebrew.txt | 145 - en/netbeans.txt | 735 --- en/russian.txt | 82 - en/term.txt | 808 --- en/todo.txt | 3418 ----------- en/usr_09.txt | 4 +- en/usr_10.txt | 7 +- en/usr_11.txt | 16 +- en/usr_12.txt | 6 +- en/version5.txt | 7813 ------------------------- en/version6.txt | 13846 -------------------------------------------- ja/arabic.jax | 326 -- ja/hebrew.jax | 149 - ja/netbeans.jax | 739 --- ja/pi_netrw.jax | 2 +- ja/pi_tar.jax | 2 +- ja/pi_vimball.jax | 2 +- ja/pi_zip.jax | 2 +- ja/quickfix.jax | 2 +- ja/russian.jax | 86 - ja/term.jax | 812 --- ja/usr_09.jax | 350 +- ja/usr_10.jax | 832 ++- ja/usr_11.jax | 412 +- ja/usr_12.jax | 431 +- ja/various.jax | 2 +- ja/windows.jax | 2 +- 28 files changed, 1013 insertions(+), 30341 deletions(-) delete mode 100644 en/arabic.txt delete mode 100644 en/hebrew.txt delete mode 100644 en/netbeans.txt delete mode 100644 en/russian.txt delete mode 100644 en/term.txt delete mode 100644 en/todo.txt delete mode 100644 en/version5.txt delete mode 100644 en/version6.txt delete mode 100644 ja/arabic.jax delete mode 100644 ja/hebrew.jax delete mode 100644 ja/netbeans.jax delete mode 100644 ja/russian.jax delete mode 100644 ja/term.jax diff --git a/en/arabic.txt b/en/arabic.txt deleted file mode 100644 index b9910b10e..000000000 --- a/en/arabic.txt +++ /dev/null @@ -1,323 +0,0 @@ -*arabic.txt* For Vim version 6.3. Last change: 2003 May 11 - - - VIM REFERENCE MANUAL by Nadim Shaikli - - -Arabic Language support (options & mappings) for Vim *Arabic* - -{Vi does not have any of these commands} - - *E800* -In order to use right-to-left and Arabic mapping support, it is -necessary to compile VIM with the |+arabic| feature. - -These functions have been created by Nadim Shaikli <nadim-at-arabeyes.org> - -It is best to view this file with these settings within VIM's GUI: > - - :set encoding=utf-8 - :set arabicshape - - -Introduction ------------- -Arabic is a rather demanding language in which a number of special -features are required. Characters are right-to-left oriented and -ought to appear as such on the screen (ie. from right to left). -Arabic also requires shaping of its characters, meaning the same -character has a different visual form based on its relative location -within a word (initial, medial, final or stand-alone). Arabic also -requires two different forms of combining and the ability, in -certain instances, to either superimpose upto two characters on top -of another (composing) or the actual substitution of two characters -into one (combining). Lastly, to display Arabic properly one will -require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also -require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are -subsets within a so-called ISO-10646-1 font. - -The commands, prompts and help files are not in Arabic, therefore -the user interface remains the standard Vi interface. - - -Highlights ----------- -o Editing left-to-right files as in the original VIM hasn't changed. - -o Viewing and editing files in right-to-left windows. File - orientation is per window, so it is possible to view the same - file in right-to-left and left-to-right modes, simultaneously. - -o No special terminal with right-to-left capabilities is required. - The right-to-left changes are completely hardware independent. - Only Arabic fonts are necessary. - -o Compatible with the original VIM. Almost all features work in - right-to-left mode (there are liable to be bugs). - -o Changing keyboard mapping and reverse insert modes using a single - command. - -o Toggling complete Arabic support via a single command. - -o While in Arabic mode, numbers are entered from left to right. Upon - entering a none number character, that character will be inserted - just into the left of the last number. - -o Arabic keymapping on the command line in reverse insert mode. - -o Proper Bidirectional functionality is possible given VIM is - started within a Bidi capable terminal emulator. - - -Arabic Fonts *arabicfonts* ------------- - -VIM requires monospaced fonts of which there are many out there. -Arabic requires ISO-8859-6 as well as Presentation Form-B fonts -(without Form-B, Arabic will _NOT_ be usable). It is highly -recommended that users search for so-called 'ISO-10646-1' fonts. -Do an Internet search or check www.arabeyes.org for further -info on where to attain the necessary Arabic fonts. - - -Font Installation ------------------ - -o Installation of fonts for X Window systems (Unix/Linux) - - Depending on your system, copy your_ARABIC_FONT file into a - directory of your choice. Change to the directory containing - the Arabic fonts and execute the following commands: - - % mkfontdir - % xset +fp path_name_of_arabic_fonts_directory - - -Usage ------ -Prior to the actual usage of Arabic within VIM, a number of settings -need to be accounted for and invoked. - -o Setting the Arabic fonts - - + For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done - by entering the following command in the VIM window. -> - :set guifont=your_ARABIC_FONT -< - NOTE: the string 'your_ARABIC_FONT' is used to denote a complete - font name akin to that used in linux/unix system. - (eg. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1) - - You can append the 'guifont' set command to your .vimrc file - in order to get the same above noted results. In other words, - you can include ':set guifont=your_ARABIC_FONT' to your .vimrc - file. - - + Under the X Window environment, you can also start VIM with - '-fn your_ARABIC_FONT' option. - -o Setting the appropriate character Encoding - To enable the correct Arabic encoding the following command needs - to be appended, -> - :set encoding=utf-8 -< - to your .vimrc file (entering the command manually into you VIM - window is highly discouraged). In short, include ':set - encoding=utf-8' to your .vimrc file. - - Attempts to use Arabic without UTF-8 will result the following - warning message, - - *W17* > - Arabic requires UTF-8, do ':set encoding=utf-8' - -o Enable Arabic settings [short-cut] - - In order to simplify and streamline things, you can either invoke - VIM with the command-line option, - - % vim -A my_utf8_arabic_file ... - - or enable 'arabic' via the following command within VIM -> - :set arabic -< - The two above noted possible invocations are the preferred manner - in which users are instructed to proceed. Baring an enabled 'termbidi' - setting, both command options: - - 1. set the appropriate keymap - 2. enable the deletion of a single combined pair character - 3. enable rightleft mode - 4. enable rightleftcmd mode (affecting the command-line) - 5. enable arabicshape mode (do visual character alterations) - - You may also append the command to your .vimrc file and simply - include ':set arabic' to it. - - You are also capable of disabling Arabic support via -> - :set noarabic -< - which resets everything that the command had enabled without touching - the global settings as they could affect other possible open buffers. - In short the 'noarabic' command, - - 1. resets to the alternate keymap - 2. disables the deletion of a single combined pair character - 3. disables rightleft mode - - NOTE: the 'arabic' command takes into consideration 'termbidi' for - possible external bi-directional (bidi) support from the - terminal ("mlterm" for instance offers such support). - 'termbidi', if available, is superior to rightleft support - and its support is preferred due to its level of offerings. - 'arabic' when 'termbidi' is enabled only sets the keymap. - - If, on the other hand, you'd like to be verbose and explicit and - are opting not to use the 'arabic' short-cut command, here's what - is needed (ie. if you use ':set arabic' you can skip this section) - - - + Arabic Keymapping Activation - - To activate the Arabic keymap (ie. to remap your english/latin - keyboard to look-n-feel like a standard Arabic one), set the - 'keymap' command to "arabic". This is done by entering -> - :set keymap=arabic -< - in your VIM window. You can also append the 'keymap' set command to - your .vimrc file. In other words, you can include ':set keymap=arabic' - to your .vimrc file. - - To turn toggle (or switch) your keymapping between Arabic and the - default mapping (english), its advised that users use the 'CTRL-^' - key press while in insert (or add/replace) mode. The command-line - will display your current mapping by displaying an "Arabic" string - next to your insertion mode (eg. -- INSERT Arabic --) indicating - your current keymap. - - + Arabic deletion of a combined pair character - - By default VIM has the 'delcombine' option disabled. This option - allows the deletion of ALEF in a LAM_ALEF (LAA) combined character - and still retain the LAM (ie. it reverts to treating the combined - character as its natural two characters form -- this also pertains - to harakat and their combined forms). You can enable this option - by entering -> - :set delcombine -< - in our VIM window. You can also append the 'delcombine' set command - to your .vimrc file. In other words, you can include ':set delcombine' - to your .vimrc file. - - + Arabic right-to-left Mode - - By default VIM starts in Left-to-right mode. 'rightleft' is the - command that allows one to alter a window's orientation - that can - be accomplished via, - - - Toggling between left-to-right and right-to-left modes is - accomplished through ':set rightleft' and ':set norightleft'. - - - While in Left-to-right mode, enter ':set rl' in the command line - ('rl' is the abbreviation for rightleft). - - - Put the ':set rl' line in your '.vimrc' file to start the VIM in - right-to-left mode permanently. - - + Arabic right-to-left command-line Mode - - For certain commands the editing can be done in right-to-left mode. - Currently this is only applicable to search commands. - - This is controlled with the 'rightleftcmd' option. The default is - "search", which means that windows in which 'rightleft' is set will - edit search commands in right-left mode. To disable this behavior, -> - :set rightleftcmd= -< - To enable right-left editing of search commands again, -> - :set rightleftcmd& -< - + Arabic Shaping Mode - - To activate the required visual characters alterations (shaping, - composing, combining) which the Arabic language requires, enable - the 'arabicshape' command. This is done by entering -> - :set arabicshape -< - in our VIM window. You can also append the 'arabicshape' set - command to your .vimrc file. In other words, you can include - ':set arabicshape' to your .vimrc file. - - -Keymap/Keyboard *arabickeymap* ---------------- - -The character/letter encoding used in VIM is the standard UTF-8. -It is widely discouraged that any other encoding be used or even -attempted. - -Note: UTF-8 is an all encompassing encoding and as such is - the only supported (and encouraged) encoding with - regard to Arabic (all other proprietary encodings - should be discouraged and frowned upon). - -o Keyboard - - + CTRL-^ in insert/replace mode toggles between Arabic/Latin mode - - + Keyboard mapping is based on the Microsoft's Arabic keymap (the - defacto standard in the Arab world): - - +---------------------------------------------------------------------+ - |! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ | - |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ | - +---------------------------------------------------------------------+ - |Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > | - |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د | - +-----------------------------------------------------------+ - |A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" | - |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط | - +------------------------------------------------------+ - |Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ | - |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ | - +-------------------------------------------------+ - -Restrictions ------------- - -o VIM in its GUI form does not currently support Bi-directionality - (ie. the ability to see both Arabic and Latin intermixed within - the same line). - - -Known Bugs ----------- - -There is one known minor bug, - - 1. If you insert a haraka (eg. Fatha (U+064E)) after a LAM (U+0644) - and then insert an ALEF (U+0627), the appropriate combining will - not happen due to the sandwiched haraka resulting in something - that will NOT be displayed correctly. - - WORK-AROUND: Don't include harakats between LAM and ALEF combos. - In general, don't anticipate to see correct visual - representation with regard to harakats and LAM+ALEF - combined characters (even those entered after both - characters). The problem noted is strictly a visual - one, meaning saving such a file will contain all the - appropriate info/encodings - nothing is lost. - -No other bugs are known to exist. - - vim:tw=78:ts=8:ft=help:norl: - diff --git a/en/hebrew.txt b/en/hebrew.txt deleted file mode 100644 index 85743ca8d..000000000 --- a/en/hebrew.txt +++ /dev/null @@ -1,145 +0,0 @@ -*hebrew.txt* For Vim version 6.3. Last change: 2003 May 11 - - - VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem) - - -Hebrew Language support (options & mapping) for Vim *hebrew* - -The supporting 'rightleft' functionality was originally created by Avner -Lottem: - E-mail: alottem@iil.intel.com - Phone: +972-4-8307322 - -Ron Aaron <ron@ronware.org> is currently helping support these features. - -{Vi does not have any of these commands} - -All this is only available when the |+rightleft| feature was enabled at -compile time. - - -Introduction ------------- -Hebrew-specific options are 'hkmap', 'hkmapp' 'keymap'=hebrew and 'aleph'. -Hebrew-useful options are 'delcombine', 'allowrevins', 'revins', 'rightleft' -and 'rightleftcmd'. - -The 'rightleft' mode reverses the display order, so characters are displayed -from right to left instead of the usual left to right. This is useful -primarily when editing Hebrew or other Middle-Eastern languages. -See |rileft.txt| for further details. - -Details --------------- -+ Options: - + 'rightleft' ('rl') sets window orientation to right-to-left. This means - that the logical text 'ABC' will be displayed as 'CBA', and will start - drawing at the right edge of the window, not the left edge. - + 'hkmap' ('hk') sets keyboard mapping to Hebrew, in insert/replace modes. - + 'aleph' ('al'), numeric, holds the decimal code of Aleph, for keyboard - mapping. - + 'hkmapp' ('hkp') sets keyboard mapping to 'phonetic hebrew' - - NOTE: these three ('hkmap', 'hkmapp' and 'aleph') are obsolete. You should - use ":set keymap=hebrewp" instead. - - + 'delcombine' ('deco'), boolean, if editing UTF-8 encoded Hebrew, allows - one to remove the niqud or te`amim by pressing 'x' on a character (with - associated niqud). - - + 'rightleftcmd' ('rlc') makes the command-prompt for searches show up on - the right side. It only takes effect if the window is 'rightleft'. - -+ Encoding: - + Under Unix, ISO 8859-8 encoding (Hebrew letters codes: 224-250). - + Under MS DOS, PC encoding (Hebrew letters codes: 128-154). - These are defaults, that can be overridden using the 'aleph' option. - + You should prefer using UTF8, as it supports the combining-characters - ('deco' does nothing if UTF8 encoding is not active). - -+ Vim arguments: - + 'vim -H file' starts editing a Hebrew file, i.e. 'rightleft' and 'hkmap' - are set. - -+ Keyboard: - + The 'allowrevins' option enables the CTRL-_ command in Insert mode and - in Command-line mode. - - + CTRL-_ in insert/replace modes toggles 'revins' and 'hkmap' as follows: - - When in rightleft window, 'revins' and 'nohkmap' are toggled, since - English will likely be inserted in this case. - - When in norightleft window, 'revins' 'hkmap' are toggled, since Hebrew - will likely be inserted in this case. - - CTRL-_ moves the cursor to the end of the typed text. - - + CTRL-_ in command mode only toggles keyboard mapping (see Bugs below). - This setting is independent of 'hkmap' option, which only applies to - insert/replace mode. - - Note: On some keyboards, CTRL-_ is mapped to CTRL-?. - - + Keyboard mapping while 'hkmap' is set (standard Israeli keyboard): - - q w e r t y u i o p - / ' ק ר א ט ו ן ם פ - - a s d f g h j k l ; ' - ש ד ג כ ע י ח ל ך ף , - - z x c v b n m , . / - ז ס ב ה נ מ צ ת ץ . - - This is also the keymap when 'keymap=hebrew' is set. The advantage of - 'keymap' is that it works properly when using UTF8, e.g. it inserts the - correct characters; 'hkmap' does not. The 'keymap' keyboard can also - insert niqud and te`amim. To see what those mappings are,look at the - keymap file 'hebrew.vim' etc. - - -Typing backwards - -If the 'revins' (reverse insert) option is set, inserting happens backwards. -This can be used to type Hebrew. When inserting characters the cursor is not -moved and the text moves rightwards. A <BS> deletes the character under the -cursor. CTRL-W and CTRL-U also work in the opposite direction. <BS>, CTRL-W -and CTRL-U do not stop at the start of insert or end of line, no matter how -the 'backspace' option is set. - -There is no reverse replace mode (yet). - -If the 'showmode' option is set, "-- REVERSE INSERT --" will be shown in the -status line when reverse Insert mode is active. - -When the 'allowrevins' option is set, reverse Insert mode can be also entered -via CTRL-_, which has some extra functionality: First, keyboard mapping is -changed according to the window orientation -- if in a left-to-right window, -'revins' is used to enter Hebrew text, so the keyboard changes to Hebrew -('hkmap' is set); if in a right-to-left window, 'revins' is used to enter -English text, so the keyboard changes to English ('hkmap' is reset). Second, -when exiting 'revins' via CTRL-_, the cursor moves to the end of the typed -text (if possible). - - -Pasting when in a rightleft window ----------------------------------- -When cutting text with the mouse and pasting it in a rightleft window -the text will be reversed, because the characters come from the cut buffer -from the left to the right, while inserted in the file from the right to -the left. In order to avoid it, toggle 'revins' (by typing CTRL-? or CTRL-_) -before pasting. - - -Hebrew characters and the 'isprint' variable --------------------------------------------- -Sometimes Hebrew character codes are in the non-printable range defined by -the 'isprint' variable. For example in the Linux console, the Hebrew font -encoding starts from 128, while the default 'isprint' variable is @,161-255. -The result is that all Hebrew characters are displayed as ~x. To solve this -problem, set isprint=@,128-255. - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/en/netbeans.txt b/en/netbeans.txt deleted file mode 100644 index 9b5a15b8c..000000000 --- a/en/netbeans.txt +++ /dev/null @@ -1,735 +0,0 @@ -*netbeans.txt* For Vim version 6.3. Last change: 2004 May 01 - - - VIM REFERENCE MANUAL by Gordon Prieur - - -NetBeans ExternalEditor Integration Features *netbeans* - *netbeans-support* -1. Introduction |netbeans-intro| -2. NetBeans Key Bindings |netbeans-keybindings| -3. Configuring Vim for NetBeans |netbeans-configure| -4. Downloading NetBeans |netbeans-download| -5. Preparing NetBeans for Vim |netbeans-preparation| -6. Obtaining the External Editor Module |obtaining-exted| -7. Setting up NetBeans to run with Vim |netbeans-setup| -8. Messages |netbeans-messages| -9. Running Vim from NetBeans |netbeans-run| -10. NetBeans protocol |netbeans-protocol| -11. Known problems |netbeans-problems| - -{Vi does not have any of these features} -{only available when compiled with the |+netbeans_intg| feature} - -============================================================================== -1. Introduction *netbeans-intro* - -NetBeans is an open source Integrated Development Environment developed -jointly by Sun Microsystems, Inc. and the netbeans.org developer community. -Initially just a Java IDE, NetBeans has had C, C++, and Fortran support added -in recent releases. - -For more information visit the main NetBeans web site http://www.netbeans.org -or the NetBeans External Editor site at http://externaleditor.netbeans.org. - -Sun Microsystems, Inc. also ships NetBeans under the name Sun ONE Studio. -Visit http://www.sun.com for more information regarding the Sun ONE Studio -product line. - -Current releases of NetBeans provide full support for Java and limited support -for C, C++, and Fortran. Current releases of Sun ONE Studio provide full -support for Java, C, C++, and Fortran. - -The interface to NetBeans is also supported by Agide, the A-A-P GUI IDE. -Agide is very different from NetBeans: -- Based on Python instead of Java, much smaller footprint and fast startup. -- Agide is a framework in which many different tools can work together. -See the A-A-P website for information: http://www.A-A-P.org. - -============================================================================== -2. NetBeans Key Bindings *netbeans-keybindings* - -Vim understands a number of key bindings that execute NetBeans commands. These -are typically all the Function key combinations. To execute a NetBeans command, -the user must press the Pause key followed by a NetBeans key binding. For -example, in order to compile a Java file, the NetBeans key binding is "F9". So, -while in vim, press "Pause F9" to compile a java file. To toggle a breakpoint -at the current line, press "Pause Shift F8". - -The Pause key is Function key 21. If you don't have a working Pause key and -want to use F8 instead, use: > - - :map <F8> <F21> - -The External Editor module dynamically reads the NetBeans key bindings so vim -should always have the latest key bindings, even when NetBeans changes them. - -============================================================================== -3. Configuring Vim for NetBeans *netbeans-configure* - -For more help installing vim, please read |usr_90.txt| in the Vim User Manual. - - -On Unix - -When running configure without arguments the NetBeans interface should be -included. That is, if the configure check to find out if your system supports -the required features succeeds. - -In case you do not want the NetBeans interface you can disable it by -uncommenting a line with "--disable-netbeans" in the Makefile. - -Currently, only gvim is supported in this integration as NetBeans does not -have means to supply a terminal emulator for the vim command. Furthermore, -there is only GUI support for GTK, GNOME, and Motif. - -If Motif support is required the user must supply XPM libraries. See -|workshop-xpm| for details on obtaining the latest version of XPM. - - -On MS-Windows - -The Win32 support is now in beta stage. - -To use XPM signs on Win32 (e.g. when using with NetBeans) you can compile -XPM by yourself or use precompiled libraries from http://iamphet.nm.ru/misc/ -(for MS Visual C++) or http://gnuwin32.sourceforge.net (for MinGW). - -============================================================================== -4. Downloading NetBeans *netbeans-download* - -The NetBeans IDE is available for download from netbeans.org. You can download -a released version, download sources, or use CVS to download the current -source tree. If you choose to download sources, follow directions from -netbeans.org on building NetBeans. - -Depending on the version of NetBeans you download, you may need to do further -work to get the required External Editor module. This is the module which lets -NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org -for details on downloading this module if your NetBeans release does not have -it. - -For C, C++, and Fortran support you will also need the cpp module. See -http://cpp.netbeans.org for information regarding this module. - -You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day -free trial. See http://www.sun.com for further details. - -============================================================================== -5. Preparing NetBeans for Vim *netbeans-preparation* - -In order for NetBeans to work with vim, the NetBeans External Editor module -must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition -then this module should be loaded and enabled. If you have a NetBeans release -you may need to find another way of obtaining this open source module. - -You can check if you have this module by opening the Tools->Options dialog -and drilling down to the "Modules" list (IDE Configuration->System->Modules). -If your Modules list has an entry for "External Editor" you must make sure -it is enabled (the "Enabled" property should have the value "True"). If your -Modules list has no External Editor see the next section on |obtaining-exted|. - -============================================================================== -6. Obtaining the External Editor Module *obtaining-exted* - -There are 2 ways of obtaining the External Editor module. The easiest way -is to use the NetBeans Update Center to download and install the module. -Unfortunately, some versions do not have this module in their update -center. If you cannot download via the update center you will need to -download sources and build the module. I will try and get the module -available from the NetBeans Update Center so building will be unnecessary. -Also check http://externaleditor.netbeans.org for other availability options. - -To download the External Editor sources via CVS and build your own module, -see http://externaleditor.netbeans.org and http://www.netbeans.org. -Unfortunately, this is not a trivial procedure. - -============================================================================== -7. Setting up NetBeans to run with Vim *netbeans-setup* - -Assuming you have loaded and enabled the NetBeans External Editor module -as described in |netbeans-preparation| all you need to do is verify that -the gvim command line is properly configured for your environment. - -Open the Tools->Options dialog and open the Editing category. Select the -External Editor. The right hand pane should contain a Properties tab and -an Expert tab. In the Properties tab make sure the "Editor Type" is set -to "Vim". In the Expert tab make sure the "Vim Command" is correct. - -You should be careful if you change the "Vim Command". There are command -line options there which must be there for the connection to be properly -set up. You can change the command name but thats about it. If your gvim -can be found by your $PATH then the VIM Command can start with "gvim". If -you don't want gvim searched from your $PATH then hard code in the full -Unix path name. At this point you should get a gvim for any source file -you open in NetBeans. - -If some files come up in gvim and others (with different file suffixes) come -up in the default NetBeans editor you should verify the MIME type in the -Expert tab MIME Type property. NetBeans is MIME oriented and the External -Editor will only open MIME types specified in this property. - -============================================================================== -8. Messages *netbeans-messages* - -These messages are specific for NetBeans: - - *E463* -Region is guarded, cannot modify - NetBeans defines guarded areas in the text, which you cannot - change. - - *E656* -NetBeans dissallows writes of unmodified buffers - NetBeans does not support writes of unmodified buffers that - were opened from NetBeans. - - *E657* -Partial writes disallowed for NetBeans buffers - NetBeans does not support partial writes for buffers that were - opened from NetBeans. - - *E658* -NetBeans connection lost for this buffer - NetBeans has become confused about the state of this file. - Rather than risc data corruption, NetBeans has severed the - connection for this file. Vim will take over responsibility - for saving changes to this file and NetBeans will no longer - know of these changes. - -============================================================================== -9. Running Vim from NetBeans *netbeans-run* - -NetBeans starts Vim with the |-nb| argument. Three forms can be used, that -differ in the way the information for the connection is specified: - - -nb={fname} from a file - -nb:{hostname}:{addr}:{password} directly - -nb from a file or environment - - *E660* *E668* -For security reasons, the best method is to write the information in a file -readable only by the user. The name of the file can be passed with the -"-nb={fname}" argument or, when "-nb" is used without a parameter, the -environment variable "__NETBEANS_CONINFO". The file must contain these three -lines, in any order: - - host={hostname} - port={addr} - auth={password} - -Other lines are ignored. The caller of Vim is responsible for deleting the -file afterwards. - -{hostname} is the name of the machine where NetBeans is running. When omitted -the environment variable "__NETBEANS_HOST" is used or the default "localhost". - -{addr} is the port number for NetBeans. When omitted the environment variable -"__NETBEANS_SOCKET" is used or the default 3219. - -{password} is the password for connecting to NetBeans. When omitted the -environment variable "__NETBEANS_VIM_PASSWORD" is used or "changeme". - -============================================================================== -10. NetBeans protocol *netbeans-protocol* - -The communication between NetBeans and Vim uses plain text messages. This -protocol was first designed to work with the external editor module of -NetBeans (see http://externaleditor.netbeans.org). Later it was extended to -work with Agide (A-A-P GUI IDE, see http://www.a-a-p.org). The extensions are -marked with "version 2.1". - -Version 2.2 of the protocol has several minor changes which should only -affect NetBeans users (ie, not Agide users). However, a bug was fixed which -could cause confusion. The netbeans_saved() function sent a "save" protocol -command. In protocol version 2.1 and earlier this was incorrectly interpreted -as a notification that a write had taken place. In reality, it told NetBeans -to save the file so multiple writes were being done. This caused various -problems and has been fixed in 2.2. To decrease the likelyhood of this -confusion happening again, netbeans_saved() has been renamed to -netbeans_save_buffer(). - -The messages are currently sent over a socket. Since the messages are in -plain UTF-8 text this protocol could also be used with any other communication -mechanism. - -10.1 Kinds of messages |nb-messages| -10.2 Terms |nb-terms| -10.3 Commands |nb-commands| -10.4 Functions and Replies |nb-functions| -10.5 Events |nb-events| -10.6 Special messages |nb-special| - -*E627* *E628* *E629* *E630* *E631* *E632* *E633* *E634* *E635* *E636* -*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646* -*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654* -These errors occur when a message violates the protocol. - - -10.1 Kinds of messages *nb-messages* - -There are four kinds of messages: - -kind direction comment ~ -Command IDE -> editor no reply necessary -Function IDE -> editor editor must send back a reply -Reply editor -> IDE only in response to a Function -Event editor -> IDE no reply necessary - -The messages are sent as a single line with a terminating newline character. -Arguments are separated by a single space. The first item of the message -depends on the kind of message: - -kind first item example ~ -Command bufID:name!seqno 11:showBalloon!123 "text" -Function bufID:name/seqno 11:getLength/123 -Reply seqno 123 5000 -Event bufID:name=123 11:keyCommand=123 "S-F2" - - -10.2 Terms *nb-terms* - -bufID Buffer number. A message may be either for a specific buffer - or generic. Generic messages use a bufID of zero. NOTE: this - buffer ID is assigned by the IDE, it is not Vim's buffer - number. The bufID must be a sequentially rising number, - starting at one. - -seqno The IDE uses a sequence number for Commands and Functions. A - Reply must use the sequence number of the Function that it is - associated with. A zero sequence number can be used for - Events (the seqno of the last received Command or Function can - also be used). - -string Argument in double quotes. Text is in UTF-8 encoding. This - means ASCII is passed as-is. Special characters are - represented with a backslash: - \" double quote - \n newline - \r carriage-return - \t tab (optional, also works literally) - \\ backslash - NUL bytes are not allowed! - -boolean Argument with two possible values: - T true - F false - -number Argument with a decimal number. - -optnum Argument with either a decimal number or "none" (without the - quotes). - -offset A number argument that indicates a byte position in a buffer. - The first byte has offset zero. Line breaks are counted for - how they appear in the file (CR/LF counts for two bytes). - Note that a multi-byte character is counted for the number of - bytes it takes. - -lnum/col Argument with a line number and column number position. The - line number starts with one, the column is the byte position, - starting with zero. Note that a multi-byte character counts - for several columns. - -pathname String argument: file name with full path. - - -10.3 Commands *nb-commands* - -actionMenuItem Not implemented. - -actionSensitivity - Not implemented. - -addAnno serNum typeNum off len - Place an annotation in this buffer. - Arguments: - serNum number serial number of this placed - annotation, used to be able to remove - it - typeNum number sequence number of the annotation - defined with defineAnnoType for this - buffer - off number offset where annotation is to be placed - len number not used - In version 2.1 "lnum/col" can be used instead of "off". - -balloonResult text - Not implemented. - -close Close the buffer. This leaves us without current buffer, very - dangerous to use! - -create Creates a buffer without a name. Replaces the current buffer - (it's hidden when it was changed). - NetBeans uses this as the first command for a file that is - being opened. The sequence of commands could be: - create - setCaretListener (ignored) - setModified (no effect) - setContentType (ignored) - startDocumentListen - setTitle - setFullName - -defineAnnoType typeNum typeName tooltip glyphFile fg bg - Define a type of annotation for this buffer. - Arguments: - typeNum number sequence number (not really used) - typeName string name that identifies this annotation - tooltip string not used - glyphFile string name of icon file - fg optnum foreground color for line highlighting - bg optnum background color for line highlighting - Vim will define a sign for the annotation. - When both "fg" and "bg" are "none" no line highlighting is - used (new in version 2.1). - When "glyphFile" is empty, no text sign is used (new in - version 2.1). - When "glyphFile" is one or two characters long, a text sign is - defined (new in version 2.1). - Note: the annotations will be defined in sequence, and the - sequence number is later used with addAnno. - -editFile pathname - Set the name for the buffer and edit the file "pathname", a - string argument. - Normal way for the IDE to tell the editor to edit a file. If - the IDE is going to pass the file text to the editor use these - commands instead: - setFullName - insert - initDone - New in version 2.1. - -enableBalloonEval - Not implemented. - -endAtomic End an atomic operation. The changes between "startAtomic" - and "endAtomic" can be undone as one operation. But it's not - implemented yet. Redraw when necessary. - -guard off len - Mark an area in the buffer as guarded. This means it cannot - be edited. "off" and "len" are numbers and specify the text - to be guarded. - -initDone Mark the buffer as ready for use. Implicitly makes the buffer - the current buffer. Fires the BufReadPost autocommand event. - -moveAnnoToFront serNum - Not implemented. - -netbeansBuffer isNetbeansBuffer - If "isNetbeansBuffer" is "T" then this buffer is ``owned'' by - NetBeans. - New in version 2.2. - -putBufferNumber pathname - Associate a buffer number with the Vim buffer by the name - "pathname", a string argument. To be used when the editor - reported editing another file to the IDE and the IDE needs to - tell the editor what buffer number it will use for this file. - Also marks the buffer as initialized. - New in version 2.1. - -raise Bring the editor to the foreground. - New in version 2.1. - -removeAnno serNum - Remove a previously place annotation for this buffer. - "serNum" is the same number used in addAnno. - -save Save the buffer when it was modified. The other side of the - interface is expected to write the buffer and invoke - "setModified" to reset the "changed" flag of the buffer. - The writing is skipped when one of these conditions is true: - - 'write' is not set - - the buffer is read-only - - the buffer does not have a file name - - 'buftype' disallows writing - New in version 2.2. - -setAsUser Not implemented. - -setBufferNumber pathname - Associate a buffer number with Vim buffer by the name - "pathname". To be used when the editor reported editing - another file to the IDE and the IDE needs to tell the editor - what buffer number it will use for this file. - Has the side effect of making the buffer the current buffer. - See "putBufferNumber" for a more useful command. - -setContentType - Not implemented. - -setDot off Make the buffer the current buffer and set the cursor at the - specified position. If there are folds they are opened to - make the cursor line visible. - In version 2.1 "lnum/col" can be used instead of "off". - -setExitDelay seconds - Set the delay for exiting to "seconds", a number. - This delay is used to give the IDE a chance to handle things - before really exiting. The default delay is two seconds. - New in version 2.1. - -setFullName pathname - Set the file name to be used for a buffer to "pathname", a - string argument. - Used when the IDE wants to edit a file under control of the - IDE. This makes the buffer the current buffer, but does not - read the file. "insert" commands will be used next to set the - contents. - -setLocAndSize Not implemented. - -setMark Not implemented. - -setModified modified - When the boolean argument "modified" is "T" mark the buffer as - modified, when it is "F" mark it as unmodified. - -setReadOnly Not implemented. - -setStyle Not implemented. - -setTitle name - Set the title for the buffer to "name", a string argument. - The title is only used for NetBeans functions, not by Vim. - -setVisible visible - When the boolean argument "visible" is "T", goto the buffer. - The "F" argument does nothing. - -showBalloon text - Show a balloon (popup window) at the mouse pointer position, - containing "text", a string argument. The balloon should - disappear when the mouse is moved more than a few pixels. - New in version 2.1. - -specialKeys Not implemented. - -startAtomic Begin an atomic operation. The screen will not be updated - until "endAtomic" is given. - -startCaretListen - Not implemented. - -startDocumentListen - Mark the buffer to report changes to the IDE with the - "insert" and "remove" events. The default is to report - changes. - -stopCaretListen - Not implemented. - -stopDocumentListen - Mark the buffer to stop reporting changes to the IDE. - Opposite of startDocumentListen. - -unguard off len - Opposite of "guard", remove guarding for a text area. - -version Not implemented. - - -10.4 Functions and Replies *nb-functions* - -getDot Not implemented. - -getCursor Return the current buffer and cursor position. - The reply is: - seqno bufID lnum col off - seqno = sequence number of the function - bufID = buffer ID of the current buffer (if this is unknown -1 - is used) - lnum = line number of the cursor (first line is one) - col = column number of the cursor (in bytes, zero based) - off = offset of the cursor in the buffer (in bytes) - New in version 2.1. - -getLength Return the length of the buffer in bytes. - Reply example for a buffer with 5000 bytes: - 123 5000 - TODO: explain use of partial line. - -getMark Not implemented. - -getModified When a buffer is specified: Return zero if the buffer does not - have changes, one if it does have changes. - When no buffer is specified (buffer number zero): Return the - number of buffers with changes. When the result is zero it's - safe to tell Vim to exit. - New in version 2.1. - -getText Return the contents of the buffer as a string. - Reply example for a buffer with two lines - 123 "first line\nsecond line\n" - NOTE: docs indicate an offset and length argument, but this is - not implemented. - -insert off text - Insert "text" before position "off". "text" is a string - argument, "off" a number. - Possible replies: - 123 no problem - 123 !message failed - Note that the message in the reply is not quoted. - -remove off length - Delete "length" bytes of text at position "off". Both - arguments are numbers. - Possible replies: - 123 no problem - 123 !message failed - Note that the message in the reply is not quoted. - -saveAndExit Perform the equivalent of closing Vim: ":confirm qall". - If there are no changed files or the user does not cancel the - operation Vim exits and no result is sent back. The IDE can - consider closing the connection as a successful result. - If the user cancels the operation the number of modified - buffers that remains is returned and Vim does not exit. - New in version 2.1. - - -10.5 Events *nb-events* - -balloonEval off len type - The mouse pointer rests on text for a short while. When "len" - is zero, there is no selection and the pointer is at position - "off". When "len" is non-zero the text from position "off" to - "off" + "len" is selected. - Only sent after "enableBalloonEval" was used for this buffer. - "type" is not yet defined. - Not implemented yet. - -balloonText text - Used when 'ballooneval' is set and the mouse pointer rests on - some text for a moment. "text" is a string, the text under - the mouse pointer. - New in version 2.1. - -buttonRelease button lnum col - Report which button was pressed and the location of the cursor - at the time of the release. Only for buffers that are owned - by NetBeans. This event is not sent if the button was - released while the mouse was in the status line or in a - separator line. If col is less than 1 the button release was - in the sign area. - New in version 2.2. - -fileClosed Not implemented. - -fileModified Not implemented. - -fileOpened pathname open modified - A file was opened by the user. - Arguments: - pathname string name of the file - open boolean always "T" - modified boolean always "F" - -geometry cols rows x y - Report the size and position of the editor window. - Arguments: - cols number number of text columns - rows number number of text rows - x number pixel position on screen - y number pixel position on screen - Only works for Motif. - -insert off text - Text "text" has been inserted in Vim at position "off". - Only fired when enabled, see "startDocumentListen". - -invokeAction Not implemented. - -keyCommand keyName - Reports a special key being pressed with name "keyName", which - is a string. - Supported key names: - F1 function key 1 - F2 function key 2 - ... - F12 function key 12 - - ' ' space (without the quotes) - ! exclamation mark - ... any other ASCII printable character - ~ tilde - - X any unrecognized key - - The key may be prepended by "C", "S" and/or "M" for Control, - Shift and Meta (Alt) modifiers. If there is a modifier a dash - is used to separate it from the key name. For example: - "C-F2". - ASCII characters are new in version 2.1. - -keyAtPos keyName lnum/col - Like "keyCommand" and also report the line number and column - of the cursor. - New in version 2.1. - -killed A file was closed by the user. Only for files that have been - assigned a number by the IDE. - -newDotAndMark off off - Reports the position of the cursor being at "off" bytes into - the buffer. Only sent just before a "keyCommand" event. - -quit Not implemented. - -remove off len - Text was deleted in Vim at position "off" with byte length - "len". - Only fired when enabled, see "startDocumentListen". - -revert Not implemented. - -save The buffer has been saved and is now unmodified. - Only fired when enabled, see "startDocumentListen". - -startupDone The editor has finished its startup work and is ready for - editing files. - New in version 2.1. - -unmodified The buffer is now unmodified. - Only fired when enabled, see "startDocumentListen". - -version vers Report the version of the interface implementation. Vim - reports "2.2" (including the quotes). - - -10.6 Special messages *nb-special* - -These messages do not follow the style of the messages above. They are -terminated by a newline character. - -ACCEPT Not used. - -AUTH password editor -> IDE: First message that the editor sends to the IDE. - Must contain the password for the socket server, as specified - with the |-nb| argument. No quotes are used! - -DISCONNECT IDE -> editor: break the connection. The editor will exit. - The IDE must only send this message when there are no unsaved - changes! - -DETACH IDE -> editor: break the connection without exiting the - editor. Used when the IDE exits without bringing down the - editor as well. - New in version 2.1. - -REJECT Not used. - -============================================================================== -11. Known problems *netbeans-problems* - -NUL bytes are not possible. For editor -> IDE they will appear as NL -characters. For IDE -> editor they cannot be inserted. - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/en/russian.txt b/en/russian.txt deleted file mode 100644 index 473ae149a..000000000 --- a/en/russian.txt +++ /dev/null @@ -1,82 +0,0 @@ -*russian.txt* For Vim version 6.3. Last change: 2004 May 16 - - - VIM REFERENCE MANUAL by Vassily Ragosin - - -Russian language localization and support in Vim *russian* *Russian* - -1. Introduction |russian-intro| -2. Russian keymaps |russian-keymap| -3. Localization |russian-l18n| -4. Known issues |russian-issues| - -=============================================================================== -1. Introduction *russian-intro* - -Russian language is supported perfectly well in Vim. You can type and view -Russian text just as any other, without the need to tweak the settings. - -=============================================================================== -2. Russian keymaps *russian-keymap* - -To switch between languages you can use your system native keyboard switcher, -or use one of the russian keymaps, included in Vim distribution. For example, -> - :set keymap=russian-jcukenwin -< -In the later case, you can switch between languages even if you do not have -system Russian keyboard or independently from a system-wide keyboard settings. -See 'keymap'. You can also map a key to switch between keyboards, if you -choose the later option. See |:map|. - -For your convenience, to avoid switching between keyboards, when you need to -enter Normal mode command, you can also set 'langmap' option: -> - :set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ, - фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz - -This is in utf-8, you cannot read this if your 'encoding' is not utf-8. -You have to type this command in one line, it is wrapped for the sake of -readability. - -=============================================================================== -3. Localization *russian-l18n* - -If you wish to use messages, help files, menus and other items translated to -Russian, you will need to install RuVim Language Pack, available in different -codepages from - - http://www.sourceforge.net/projects/ruvim/ - -Make sure that your Vim is at least 6.2.506 and use ruvim 0.5 or later for -automatic installs. Vim also needs to be compiled with |+gettext| feature for -user interface items translations to work. - -After downloading an archive from RuVim project, unpack it into your -$VIMRUNTIME directory. We recommend using UTF-8 archive, if your version of -Vim is compiled with |+multi_byte| feature enabled. - -In order to use Russian documentation, make sure you have set 'helplang' -option to "ru". - -=============================================================================== -4. Known issues *russian-issues* - --- If you are using Russian message translations in Win32 console, then - you may see the output produced by "vim --help", "vim --version" commands - and Win32 console window title appearing in a wrong codepage. This problem - is related to a bug in GNU gettext library and may be fixed in the future - releases of gettext. - --- When using Win32 console version of Vim you may experience a problem with - many cyrillic glyphs being replaced by whitespaces for some unknown reason. - Sergey Khorev suggested a registry hack to avoid this: - - REGEDIT4 - - [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage] - "1252"="c_1251.nls" - -=============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/en/term.txt b/en/term.txt deleted file mode 100644 index ec5614fc1..000000000 --- a/en/term.txt +++ /dev/null @@ -1,808 +0,0 @@ -*term.txt* For Vim version 6.3. Last change: 2004 Jan 09 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Terminal information *terminal-info* - -Vim uses information about the terminal you are using to fill the screen and -recognize what keys you hit. If this information is not correct, the screen -may be messed up or keys may not be recognized. The actions which have to be -performed on the screen are accomplished by outputting a string of -characters. Special keys produce a string of characters. These strings are -stored in the terminal options, see |terminal-options|. - -NOTE: Most of this is not used when running the |GUI|. - -1. Startup |startup-terminal| -2. Terminal options |terminal-options| -3. Window size |window-size| -4. Slow and fast terminals |slow-fast-terminal| -5. Using the mouse |mouse-using| - -============================================================================== -1. Startup *startup-terminal* - -When Vim is started a default terminal type is assumed. For the Amiga this is -a standard CLI window, for MS-DOS the pc terminal, for Unix an ansi terminal. -A few other terminal types are always available, see below |builtin-terms|. - -You can give the terminal name with the '-T' Vim argument. If it is not given -Vim will try to get the name from the TERM environment variable. - - *termcap* *terminfo* *E557* *E558* *E559* -On Unix the terminfo database or termcap file is used. This is referred to as -"termcap" in all the documentation. At compile time, when running configure, -the choice whether to use terminfo or termcap is done automatically. When -running Vim the output of ":version" will show |+terminfo| if terminfo is -used. Also see |xterm-screens|. - -On non-Unix systems a termcap is only available if Vim was compiled with -TERMCAP defined. - - *builtin-terms* *builtin_terms* -Which builtin terminals are available depends on a few defines in feature.h, -which need to be set at compile time: - define output of ":version" terminals builtin ~ -NO_BUILTIN_TCAPS -builtin_terms none -SOME_BUILTIN_TCAPS +builtin_terms most common ones (default) -ALL_BUILTIN_TCAPS ++builtin_terms all available - -You can see a list of available builtin terminals with ":set term=xxx" (when -not running the GUI). Also see |+builtin_terms|. - -If the termcap code is included Vim will try to get the strings for the -terminal you are using from the termcap file and the builtin termcaps. Both -are always used, if an entry for the terminal you are using is present. Which -one is used first depends on the 'ttybuiltin' option: - -'ttybuiltin' on 1: builtin termcap 2: external termcap -'ttybuiltin' off 1: external termcap 2: builtin termcap - -If an option is missing in one of them, it will be obtained from the other -one. If an option is present in both, the one first encountered is used. - -Which external termcap file is used varies from system to system and may -depend on the environment variables "TERMCAP" and "TERMPATH". See "man -tgetent". - -Settings depending on terminal *term-dependent-settings* - -If you want to set options or mappings, depending on the terminal name, you -can do this best in your .vimrc. Example: > - - if &term == "xterm" - ... xterm maps and settings ... - elseif &term =~ "vt10." - ... vt100, vt102 maps and settings ... - endif -< - *raw-terminal-mode* -For normal editing the terminal will be put into "raw" mode. The strings -defined with 't_ti' and 't_ks' will be sent to the terminal. Normally this -puts the terminal in a state where the termcap codes are valid and activates -the cursor and function keys. When Vim exits the terminal will be put back -into the mode it was before Vim started. The strings defined with 't_te' and -'t_ke' will be sent to the terminal. On the Amiga, with commands that execute -an external command (e.g., "!!"), the terminal will be put into Normal mode -for a moment. This means that you can stop the output to the screen by -hitting a printing key. Output resumes when you hit <BS>. - - *cs7-problem* -Note: If the terminal settings are changed after running Vim, you might have -an illegal combination of settings. This has been reported on Solaris 2.5 -with "stty cs8 parenb", which is restored as "stty cs7 parenb". Use -"stty cs8 -parenb -istrip" instead, this is restored correctly. - -Some termcap entries are wrong in the sense that after sending 't_ks' the -cursor keys send codes different from the codes defined in the termcap. To -avoid this you can set 't_ks' (and 't_ke') to empty strings. This must be -done during initialization (see |initialization|), otherwise it's too late. - -Some termcap entries assume that the highest bit is always reset. For -example: The cursor-up entry for the Amiga could be ":ku=\E[A:". But the -Amiga really sends "\233A". This works fine if the highest bit is reset, -e.g., when using an Amiga over a serial line. If the cursor keys don't work, -try the entry ":ku=\233A:". - -Some termcap entries have the entry ":ku=\E[A:". But the Amiga really sends -"\233A". On output "\E[" and "\233" are often equivalent, on input they -aren't. You will have to change the termcap entry, or change the key code with -the :set command to fix this. - -Many cursor key codes start with an <Esc>. Vim must find out if this is a -single hit of the <Esc> key or the start of a cursor key sequence. It waits -for a next character to arrive. If it does not arrive within one second a -single <Esc> is assumed. On very slow systems this may fail, causing cursor -keys not to work sometimes. If you discover this problem reset the 'timeout' -option. Vim will wait for the next character to arrive after an <Esc>. If -you want to enter a single <Esc> you must type it twice. Resetting the -'esckeys' option avoids this problem in Insert mode, but you lose the -possibility to use cursor and function keys in Insert mode. - -On the Amiga the recognition of window resizing is activated only when the -terminal name is "amiga" or "builtin_amiga". - -Some terminals have confusing codes for the cursor keys. The televideo 925 is -such a terminal. It sends a CTRL-H for cursor-left. This would make it -impossible to distinguish a backspace and cursor-left. To avoid this problem -CTRL-H is never recognized as cursor-left. - - *vt100-cursor-keys* *xterm-cursor-keys* -Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA, -<Esc>OB, etc. Unfortunately these are valid commands in insert mode: Stop -insert, Open a new line above the new one, start inserting 'A', 'B', etc. -Instead of performing these commands Vim will erroneously recognize this typed -key sequence as a cursor key movement. To avoid this and make Vim do what you -want in either case you could use these settings: > - :set notimeout " don't timeout on mappings - :set ttimeout " do timeout on terminal key codes - :set timeoutlen=100 " timeout after 100 msec -This requires the key-codes to be sent within 100msec in order to recognize -them as a cursor key. When you type you normally are not that fast, so they -are recognized as individual typed commands, even though Vim receives the same -sequence of bytes. - - *vt100-function-keys* *xterm-function-keys* -An xterm can send function keys F1 to F4 in two modes: vt100 compatible or -not. Because Vim cannot know what the xterm is sending, both types of keys -are recognized. The same happens for the <Home> and <End> keys. - normal vt100 ~ - <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* - <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* - <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* - <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* - <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* - <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* - -When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc. This means that -by default both codes do the same thing. If you make a mapping for <xF2>, -because your terminal does have two keys, the default mapping is overwritten, -thus you can use the <F2> and <xF2> keys for something different. - - *xterm-shifted-keys* -Newer versions of xterm support shifted function keys and special keys. Vim -recognizes most of them. Use ":set termcap" to check which are supported and -what the codes are. Mostly these are not in a termcap, they are only -supported by the builtin_xterm termcap. - - *xterm-scroll-region* -The default termcap entry for xterm on Sun and other platforms does not -contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm -entry in /etc/termcap and everything should work. - - *xterm-end-home-keys* -On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the -<End> and <Home> keys send contain a <Nul> character. To make these keys send -the proper key code, add these lines to your ~/.Xdefaults file: - -*VT100.Translations: #override \n\ - <Key>Home: string("0x1b") string("[7~") \n\ - <Key>End: string("0x1b") string("[8~") - - *xterm-8bit* *xterm-8-bit* -Xterm can be run in a mode where it uses 8-bit escape sequences. The CSI code -is used instead of <Esc>[. The advantage is that an <Esc> can quickly be -recognized in Insert mode, because it can't be confused with the start of a -special key. -For the builtin termcap entries, Vim checks if the 'term' option contains -"8bit" anywhere. It then uses 8-bit characters for the termcap entries, the -mouse and a few other things. You would normally set $TERM in your shell to -"xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting -automatically. -When Vim receives a response to the |t_RV| (request version) sequence and it -starts with CSI, it assumes that the terminal is in 8-bit mode and will -convert all key sequences to their 8-bit variants. - -============================================================================== -2. Terminal options *terminal-options* *E436* - -The terminal options can be set just like normal options. But they are not -shown with the ":set all" command. Instead use ":set termcap". - -It is always possible to change individual strings by setting the -appropriate option. For example: > - :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) - -{Vi: no terminal options. You have to exit Vi, edit the termcap entry and -try again} - -The options are listed below. The associated termcap code is always equal to -the last two characters of the option name. Only one termcap code is -required: Cursor motion, 't_cm'. - -The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap. -When the termcap flag is present, the option will be set to "y". But any -non-empty string means that the flag is set. An empty string means that the -flag is not set. 't_CS' works like this too, but it isn't a termcap flag. - -OUTPUT CODES - option meaning ~ - - t_AB set background color (ANSI) *t_AB* *'t_AB'* - t_AF set foreground color (ANSI) *t_AF* *'t_AF'* - t_AL add number of blank lines *t_AL* *'t_AL'* - t_al add new blank line *t_al* *'t_al'* - t_bc backspace character *t_bc* *'t_bc'* - t_cd clear to end of screen *t_cd* *'t_cd'* - t_ce clear to end of line *t_ce* *'t_ce'* - t_cl clear screen *t_cl* *'t_cl'* - t_cm cursor motion (required!) *E437* *t_cm* *'t_cm'* - t_Co number of colors *t_Co* *'t_Co'* - t_CS if non-empty, cursor relative to scroll region *t_CS* *'t_CS'* - t_cs define scrolling region *t_cs* *'t_cs'* - t_CV define vertical scrolling region *t_CV* *'t_CV'* - t_da if non-empty, lines from above scroll down *t_da* *'t_da'* - t_db if non-empty, lines from below scroll up *t_db* *'t_db'* - t_DL delete number of lines *t_DL* *'t_DL'* - t_dl delete line *t_dl* *'t_dl'* - t_fs set window title end (from status line) *t_fs* *'t_fs'* - t_ke exit "keypad transmit" mode *t_ke* *'t_ke'* - t_ks start "keypad transmit" mode *t_ks* *'t_ks'* - t_le move cursor one char left *t_le* *'t_le'* - t_mb blinking mode *t_mb* *'t_mb'* - t_md bold mode *t_md* *'t_md'* - t_me Normal mode (undoes t_mr, t_mb, t_md and color) *t_me* *'t_me'* - t_mr reverse (invert) mode *t_mr* *'t_mr'* - *t_ms* *'t_ms'* - t_ms if non-empty, cursor can be moved in standout/inverse mode - t_nd non destructive space character *t_nd* *'t_nd'* - t_op reset to original color pair *t_op* *'t_op'* - t_RI cursor number of chars right *t_RI* *'t_RI'* - t_Sb set background color *t_Sb* *'t_Sb'* - t_Sf set foreground color *t_Sf* *'t_Sf'* - t_se standout end *t_se* *'t_se'* - t_so standout mode *t_so* *'t_so'* - t_sr scroll reverse (backward) *t_sr* *'t_sr'* - t_te out of "termcap" mode *t_te* *'t_te'* - t_ti put terminal in "termcap" mode *t_ti* *'t_ti'* - t_ts set window title start (to status line) *t_ts* *'t_ts'* - t_ue underline end *t_ue* *'t_ue'* - t_us underline mode *t_us* *'t_us'* - t_ut clearing uses the current background color *t_ut* *'t_ut'* - t_vb visual bell *t_vb* *'t_vb'* - t_ve cursor visible *t_ve* *'t_ve'* - t_vi cursor invisible *t_vi* *'t_vi'* - t_vs cursor very visible *t_vs* *'t_vs'* - *t_xs* *'t_xs'* - t_xs if non-empty, standout not erased by overwriting (hpterm) - t_ZH italics mode *t_ZH* *'t_ZH'* - t_ZR italics end *t_ZR* *'t_ZR'* - -Added by Vim (there are no standard codes for these): - t_IS set icon text start *t_IS* *'t_IS'* - t_IE set icon text end *t_IE* *'t_IE'* - t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* - t_WS set window size (height, width) in characters *t_WS* *'t_WS'* - t_RV request terminal version string (for xterm) *t_RV* *'t_RV'* - |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| - -KEY CODES -Note: Use the <> form if possible - - option name meaning ~ - - t_ku <Up> arrow up *t_ku* *'t_ku'* - t_kd <Down> arrow down *t_kd* *'t_kd'* - t_kr <Right> arrow right *t_kr* *'t_kr'* - t_kl <Left> arrow left *t_kl* *'t_kl'* - <S-Up> shift arrow up - <S-Down> shift arrow down - t_%i <S-Right> shift arrow right *t_%i* *'t_%i'* - t_#4 <S-Left> shift arrow left *t_#4* *'t_#4'* - t_k1 <F1> function key 1 *t_k1* *'t_k1'* - <xF1> alternate F1 *<xF1>* - t_k2 <F2> function key 2 *<F2>* *t_k2* *'t_k2'* - <xF2> alternate F2 *<xF2>* - t_k3 <F3> function key 3 *<F3>* *t_k3* *'t_k3'* - <xF3> alternate F3 *<xF3>* - t_k4 <F4> function key 4 *<F4>* *t_k4* *'t_k4'* - <xF4> alternate F4 *<xF4>* - t_k5 <F5> function key 5 *<F5>* *t_k5* *'t_k5'* - t_k6 <F6> function key 6 *<F6>* *t_k6* *'t_k6'* - t_k7 <F7> function key 7 *<F7>* *t_k7* *'t_k7'* - t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* - t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* - t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* - t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* - t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* - t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* - t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* - t_F5 <F15> function key 15 *<F15>* *t_F5* *'t_F5'* - t_F6 <F16> function key 16 *<F16>* *t_F6* *'t_F6'* - t_F7 <F17> function key 17 *<F17>* *t_F7* *'t_F7'* - t_F8 <F18> function key 18 *<F18>* *t_F8* *'t_F8'* - t_F9 <F19> function key 19 *<F19>* *t_F9* *'t_F9'* - <S-F1> shifted function key 1 - <S-xF1> alternate <S-F1> *<S-xF1>* - <S-F2> shifted function key 2 *<S-F2>* - <S-xF2> alternate <S-F2> *<S-xF2>* - <S-F3> shifted function key 3 *<S-F3>* - <S-xF3> alternate <S-F3> *<S-xF3>* - <S-F4> shifted function key 4 *<S-F4>* - <S-xF4> alternate <S-F4> *<S-xF4>* - <S-F5> shifted function key 5 *<S-F5>* - <S-F6> shifted function key 6 *<S-F6>* - <S-F7> shifted function key 7 *<S-F7>* - <S-F8> shifted function key 8 *<S-F8>* - <S-F9> shifted function key 9 *<S-F9>* - <S-F10> shifted function key 10 *<S-F10>* - <S-F11> shifted function key 11 *<S-F11>* - <S-F12> shifted function key 12 *<S-F12>* - t_%1 <Help> help key *t_%1* *'t_%1'* - t_&8 <Undo> undo key *t_&8* *'t_&8'* - t_kI <Insert> insert key *t_kI* *'t_kI'* - t_kD <Del> delete key *t_kD* *'t_kD'* - t_kb <BS> backspace key *t_kb* *'t_kb'* - t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* - t_kh <Home> home key *t_kh* *'t_kh'* - t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* - <xHome> alternate home key *<xHome>* - t_@7 <End> end key *t_@7* *'t_@7'* - t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* - <xEnd> alternate end key *<xEnd>* - t_kP <PageUp> page-up key *t_kP* *'t_kP'* - t_kN <PageDown> page-down key *t_kN* *'t_kN'* - t_K1 <kHome> keypad home key *t_K1* *'t_K1'* - t_K4 <kEnd> keypad end key *t_K4* *'t_K4'* - t_K3 <kPageUp> keypad page-up key *t_K3* *'t_K3'* - t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* - t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* - t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* - t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* - t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* - t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* - t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* - t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* - t_KD <k1> keypad 1 *<k1>* *t_KD* *'t_KD'* - t_KE <k2> keypad 2 *<k2>* *t_KE* *'t_KE'* - t_KF <k3> keypad 3 *<k3>* *t_KF* *'t_KF'* - t_KG <k4> keypad 4 *<k4>* *t_KG* *'t_KG'* - t_KH <k5> keypad 5 *<k5>* *t_KH* *'t_KH'* - t_KI <k6> keypad 6 *<k6>* *t_KI* *'t_KI'* - t_KJ <k7> keypad 7 *<k7>* *t_KJ* *'t_KJ'* - t_KK <k8> keypad 8 *<k8>* *t_KK* *'t_KK'* - t_KL <k9> keypad 9 *<k9>* *t_KL* *'t_KL'* - <Mouse> leader of mouse code *<Mouse>* - -Note about t_so and t_mr: When the termcap entry "so" is not present the -entry for "mr" is used. And vice versa. The same is done for "se" and "me". -If your terminal supports both inversion and standout mode, you can see two -different modes. If your terminal supports only one of the modes, both will -look the same. - -The keypad keys, when they are not mapped, behave like the equivalent normal -key. - *xterm-codes* -There is a special trick to obtain the key codes which currently only works -for xterm. When |t_RV| is defined and a response is received which indicates -an xterm with patchlevel 141 or higher, Vim uses special escape sequences to -request the key codes directly from the xterm. The responses are used to -adjust the various t_ codes. This avoids the problem that the xterm can -produce different codes, depending on the mode it is in (8-bit, VT102, -VT220, etc.). The result is that codes like <xF1> are no longer needed. -Note: This is only done on startup. If the xterm options are changed after -Vim has started, the escape sequences may not be recognized any more. - - *termcap-colors* -Note about colors: The 't_Co' option tells Vim the number of colors available. -When it is non-zero, the 't_AB' and 't_AF' options are used to set the color. -If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used -to reset to the default colors. - - *termcap-title* -The 't_ts' and 't_fs' options are used to set the window title if the terminal -allows title setting via sending strings. They are sent before and after the -title string, respectively. Similar 't_IS' and 't_IE' are used to set the -icon text. These are Vim-internal extensions of the Unix termcap, so they -cannot be obtained from an external termcap. However, the builtin termcap -contains suitable entries for xterm and iris-ansi, so you don't need to set -them here. - *hpterm* -If inversion or other highlighting does not work correctly, try setting the -'t_xs' option to a non-empty string. This makes the 't_ce' code be used to -remove highlighting from a line. This is required for "hpterm". Setting the -'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice -versa. - - *scroll-region* -Some termcaps do not include an entry for 'cs' (scroll region), although the -terminal does support it. For example: xterm on a Sun. You can use the -builtin_xterm or define t_cs yourself. For example: > - :set t_cs=^V^[[%i%d;%dr -Where ^V is CTRL-V and ^[ is <Esc>. - -The vertical scroll region t_CV is not a standard termcap code. Vim uses it -internally in the GUI. But it can also be defined for a terminal, if you can -find one that supports it. The two arguments are the left and right column of -the region which to restrict the scrolling to. Just like t_cs defines the top -and bottom lines. Defining t_CV will make scrolling in vertically split -windows a lot faster. Don't set t_CV when t_da or t_db is set (text isn't -cleared when scrolling). - -Unfortunately it is not possible to deduce from the termcap how cursor -positioning should be done when using a scrolling region: Relative to the -beginning of the screen or relative to the beginning of the scrolling region. -Most terminals use the first method. A known exception is the MS-DOS console -(pcterm). The 't_CS' option should be set to any string when cursor -positioning is relative to the start of the scrolling region. It should be -set to an empty string otherwise. It defaults to "yes" when 'term' is -"pcterm". - -Note for xterm users: The shifted cursor keys normally don't work. You can - make them work with the xmodmap command and some mappings in Vim. - - Give these commands in the xterm: - xmodmap -e "keysym Up = Up F13" - xmodmap -e "keysym Down = Down F16" - xmodmap -e "keysym Left = Left F18" - xmodmap -e "keysym Right = Right F19" - - And use these mappings in Vim: - :map <t_F3> <S-Up> - :map! <t_F3> <S-Up> - :map <t_F6> <S-Down> - :map! <t_F6> <S-Down> - :map <t_F8> <S-Left> - :map! <t_F8> <S-Left> - :map <t_F9> <S-Right> - :map! <t_F9> <S-Right> - -Instead of, say, <S-Up> you can use any other command that you want to use the -shift-cursor-up key for. (Note: To help people that have a Sun keyboard with -left side keys F14 is not used because it is confused with the undo key; F15 -is not used, because it does a window-to-front; F17 is not used, because it -closes the window. On other systems you can probably use them.) - -============================================================================== -3. Window size *window-size* - -[This is about the size of the whole window Vim is using, not a window that is -created with the ":split" command.] - -If you are running Vim on an Amiga and the terminal name is "amiga" or -"builtin_amiga", the amiga-specific window resizing will be enabled. On Unix -systems three methods are tried to get the window size: - -- an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system) -- the environment variables "LINES" and "COLUMNS" -- from the termcap entries "li" and "co" - -If everything fails a default size of 24 lines and 80 columns is assumed. If -a window-resize signal is received the size will be set again. If the window -size is wrong you can use the 'lines' and 'columns' options to set the -correct values. - -One command can be used to set the screen size: - - *:mod* *:mode* *E359* *E362* -:mod[e] [mode] - -Without argument this only detects the screen size and redraws the screen. -With MS-DOS it is possible to switch screen mode. [mode] can be one of these -values: - "bw40" 40 columns black&white - "c40" 40 columns color - "bw80" 80 columns black&white - "c80" 80 columns color (most people use this) - "mono" 80 columns monochrome - "c4350" 43 or 50 lines EGA/VGA mode - number mode number to use, depends on your video card - -============================================================================== -4. Slow and fast terminals *slow-fast-terminal* - *slow-terminal* - -If you have a fast terminal you may like to set the 'ruler' option. The -cursor position is shown in the status line. If you are using horizontal -scrolling ('wrap' option off) consider setting 'sidescroll' to a small -number. - -If you have a slow terminal you may want to reset the 'showcmd' option. -The command characters will not be shown in the status line. If the terminal -scrolls very slowly, set the 'scrolljump' to 5 or so. If the cursor is moved -off the screen (e.g., with "j") Vim will scroll 5 lines at a time. Another -possibility is to reduce the number of lines that Vim uses with the command -"z{height}<CR>". - -If the characters from the terminal are arriving with more than 1 second -between them you might want to set the 'timeout' and/or 'ttimeout' option. -See the "Options" chapter |options|. - -If your terminal does not support a scrolling region, but it does support -insert/delete line commands, scrolling with multiple windows may make the -lines jump up and down. If you don't want this set the 'ttyfast' option. -This will redraw the window instead of scroll it. - -If your terminal scrolls very slowly, but redrawing is not slow, set the -'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the -screen instead of scrolling, when there are more than 3 lines to be scrolled. - -If you are using a color terminal that is slow, use this command: > - hi NonText cterm=NONE ctermfg=NONE -This avoids that spaces are sent when they have different attributes. On most -terminals you can't see this anyway. - -If you are using Vim over a slow serial line, you might want to try running -Vim inside the "screen" program. Screen will optimize the terminal I/O quite -a bit. - -If you are testing termcap options, but you cannot see what is happening, -you might want to set the 'writedelay' option. When non-zero, one character -is sent to the terminal at a time (does not work for MS-DOS). This makes the -screen updating a lot slower, making it possible to see what is happening. - -============================================================================== -5. Using the mouse *mouse-using* - -This section is about using the mouse on a terminal or a terminal window. How -to use the mouse in a GUI window is explained in |gui-mouse|. For scrolling -with a mouse wheel see |scroll-mouse-wheel|. - -Don't forget to enable the mouse with this commands: > - :set mouse=a -Otherwise Vim won't recognize the mouse in all modes (See 'mouse'). - -Currently the mouse is supported for Unix in an xterm window, in a Linux -console (with GPM |gpm-mouse|), for MS-DOS and in a Windows console. -Mouse clicks can be used to position the cursor, select an area and paste. - -These characters in the 'mouse' option tell in which situations the mouse will -be used by Vim: - n Normal mode - v Visual mode - i Insert mode - c Command-line mode - h all previous modes when in a help file - a all previous modes - r for |hit-enter| prompt - A auto-select in Visual mode - -The default for 'mouse' is empty, the mouse is not used. Normally you would -do: > - :set mouse=a -to start using the mouse (this is equivalent to setting 'mouse' to "nvich"). -If you only want to use the mouse in a few modes or also want to use it for -the two questions you will have to concatenate the letters for those modes. -For example: > - :set mouse=nv -Will make the mouse work in Normal mode and Visual mode. > - :set mouse=h -Will make the mouse work in help files only (so you can use "g<LeftMouse>" to -jump to tags). - -Whether the selection that is started with the mouse is in Visual mode or -Select mode depends on whether "mouse" is included in the 'selectmode' -option. - -In an xterm, with the currently active mode included in the 'mouse' option, -normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key -pressed go to the xterm. With the currently active mode not included in -'mouse' all mouse clicks go to the xterm. - - *xterm-clipboard* -In the Athena and Motif GUI versions, when running in a terminal and there is -access to the X-server (DISPLAY is set), the copy and paste will behave like -in the GUI. If not, the middle mouse button will insert the unnamed register. -In that case, here is how you copy and paste a piece of text: - -Copy/paste with the mouse and Visual mode ('mouse' option must be set, see -above): -1. Press left mouse button on first letter of text, move mouse pointer to last - letter of the text and release the button. This will start Visual mode and - highlight the selected area. -2. Press "y" to yank the Visual text in the unnamed register. -3. Click the left mouse button at the insert position. -4. Click the middle mouse button. - -Shortcut: If the insert position is on the screen at the same time as the -Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button -at the insert position. - -Note: When the |-X| command line argument is used, Vim will not connect to the -X server and copy/paste to the X clipboard (selection) will not work. Use the -shift key with the mouse buttons to let the xterm do the selection. - - *xterm-command-server* -When the X-server clipboard is available, the command server described in -|x11-clientserver| can be enabled with the --servername command line argument. - - *xterm-copy-paste* -NOTE: In some (older) xterms, it's not possible to move the cursor past column -95. This is an xterm problem, not Vim's. Get a newer xterm |color-xterm|. - -Copy/paste in xterm with (current mode NOT included in 'mouse'): -1. Press left mouse button on first letter of text, move mouse pointer to last - letter of the text and release the button. -2. Use normal Vim commands to put the cursor at the insert position. -3. Press "a" to start Insert mode. -4. Click the middle mouse button. -5. Press ESC to end Insert mode. -(The same can be done with anything in 'mouse' if you keep the shift key -pressed while using the mouse.) - -Note: if you lose the 8th bit when pasting (special characters are translated -into other characters), you may have to do "stty cs8 -istrip -parenb" in your -shell before starting Vim. - -Thus in an xterm the shift and ctrl keys cannot be used with the mouse. Mouse -commands requiring the CTRL modifier can be simulated by typing the "g" key -before using the mouse: - "g<LeftMouse>" is "<C-LeftMouse> (jump to tag under mouse click) - "g<RightMouse>" is "<C-RightMouse> ("CTRL-T") - - *mouse-mode-table* *mouse-overview* -A short overview of what the mouse buttons do, when 'mousemodel' is "extend": - -Normal Mode: -event position selection change action ~ - cursor window ~ -<LeftMouse> yes end yes -<C-LeftMouse> yes end yes "CTRL-]" (2) -<S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* -<LeftDrag> yes start or extend (1) no *<LeftDrag>* -<LeftRelease> yes start or extend (1) no -<MiddleMouse> yes if not active no put -<MiddleMouse> yes if active no yank and put -<RightMouse> yes start or extend yes -<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* -<C-RightMouse> no no change no "CTRL-T" -<RightDrag> yes extend no *<RightDrag>* -<RightRelease> yes extend no *<RightRelease>* - -Insert or Replace Mode: -event position selection change action ~ - cursor window ~ -<LeftMouse> yes (cannot be active) yes -<C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) -<S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) -<LeftDrag> yes start or extend (1) no like CTRL-O (1) -<LeftRelease> yes start or extend (1) no like CTRL-O (1) -<MiddleMouse> no (cannot be active) no put register -<RightMouse> yes start or extend yes like CTRL-O -<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) -<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" - -In a help window: -event position selection change action ~ - cursor window ~ -<2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) - -When 'mousemodel' is "popup", these are different: - -Normal Mode: -event position selection change action ~ - cursor window ~ -<S-LeftMouse> yes start or extend (1) no -<RightMouse> no popup menu no - -Insert or Replace Mode: -event position selection change action ~ - cursor window ~ -<S-LeftMouse> yes start or extend (1) no like CTRL-O (1) -<RightMouse> no popup menu no - -(1) only if mouse pointer moved since press -(2) only if click is in same buffer - -Clicking the left mouse button causes the cursor to be positioned. If the -click is in another window that window is made the active window. When -editing the command-line the cursor can only be positioned on the -command-line. When in Insert mode Vim remains in Insert mode. If 'scrolloff' -is set, and the cursor is positioned within 'scrolloff' lines from the window -border, the text is scrolled. - -A selection can be started by pressing the left mouse button on the first -character, moving the mouse to the last character, then releasing the mouse -button. You will not always see the selection until you release the button, -only in some versions (GUI, MS-DOS, WIN32) will the dragging be shown -immediately. Note that you can make the text scroll by moving the mouse at -least one character in the first/last line in the window when 'scrolloff' is -non-zero. - -In Normal, Visual and Select mode clicking the right mouse button causes the -Visual area to be extended. When 'mousemodel' is "popup", the left button has -to be used while keeping the shift key pressed. When clicking in a window -which is editing another buffer, the Visual or Select mode is stopped. - - *double-click* -Double, triple and quadruple clicks are supported when the GUI is active, -for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is -available). For selecting text, extra clicks extend the selection: - click select ~ - double word or % match *<2-LeftMouse>* - triple line *<3-LeftMouse>* - quadruple rectangular block *<4-LeftMouse>* -Exception: In a Help window a double click jumps to help for the word that is -clicked on. -A double click on a word selects that word. 'iskeyword' is used to specify -which characters are included in a word. A double click on a character -that has a match selects until that match (like using "v%"). If the match is -an #if/#else/#endif block, the selection becomes linewise. -For MS-DOS and xterm the time for double clicking can be set with the -'mousetime' option. For the other systems this time is defined outside of -Vim. -An example, for using a double click to jump to the tag under the cursor: > - :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR> - -Dragging the mouse with a double click (button-down, button-up, button-down -and then drag) will result in whole words to be selected. This continues -until the button is released, at which point the selection is per character -again. - - *gpm-mouse* -The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at -compile time. The GPM mouse driver (Linux console) does not support quadruple -clicks. - -In Insert mode, when a selection is started, Vim goes into Normal mode -temporarily. When Visual or Select mode ends, it returns to Insert mode. -This is like using CTRL-O in Insert mode. Select mode is used when the -'selectmode' option contains "mouse". - - *drag-status-line* -When working with several windows, the size of the windows can be changed by -dragging the status line with the mouse. Point the mouse at a status line, -press the left button, move the mouse to the new position of the status line, -release the button. Just clicking the mouse in a status line makes that window -the current window, without moving the cursor. If by selecting a window it -will change position or size, the dragging of the status line will look -confusing, but it will work (just try it). - - *<MiddleRelease>* *<MiddleDrag>* -Mouse clicks can be mapped. The codes for mouse clicks are: - code mouse button normal action ~ - <LeftMouse> left pressed set cursor position - <LeftDrag> left moved while pressed extend selection - <LeftRelease> left released set selection end - <MiddleMouse> middle pressed paste text at cursor position - <MiddleDrag> middle moved while pressed - - <MiddleRelease> middle released - - <RightMouse> right pressed extend selection - <RightDrag> right moved while pressed extend selection - <RightRelease> right released set selection end - <X1Mouse> X1 button pressed - *X1Mouse* - <X1Drag> X1 moved while pressed - *X1Drag* - <X1Release> X1 button release - *X1Release* - <X2Mouse> X2 button pressed - *X2Mouse* - <X2Drag> X2 moved while pressed - *X2Drag* - <X2Release> X2 button release - *X2Release* - -The X1 and X2 buttons refer to the extra buttons found on some mice. The -'Microsoft Explorer' mouse has these buttons available to the right thumb. -Currently X1 and X2 only work on Win32 environments. - -Examples: > - :noremap <MiddleMouse> <LeftMouse><MiddleMouse> -Paste at the position of the middle mouse button click (otherwise the paste -would be done at the cursor position). > - - :noremap <LeftRelease> <LeftRelease>y -Immediately yank the selection, when using Visual mode. - -Note the use of ":noremap" instead of "map" to avoid a recursive mapping. -> - :map <X1Mouse> <C-O> - :map <X2Mouse> <C-I> -Map the X1 and X2 buttons to go forwards and backwards in the jump list, see -|CTRL-O| and |CTRL-I|. - - *mouse-swap-buttons* -To swap the meaning of the left and right mouse buttons: > - :noremap <LeftMouse> <RightMouse> - :noremap <LeftDrag> <RightDrag> - :noremap <LeftRelease> <RightRelease> - :noremap <RightMouse> <LeftMouse> - :noremap <RightDrag> <LeftDrag> - :noremap <RightRelease> <LeftRelease> - :noremap g<LeftMouse> <C-RightMouse> - :noremap g<RightMouse> <C-LeftMouse> - :noremap! <LeftMouse> <RightMouse> - :noremap! <LeftDrag> <RightDrag> - :noremap! <LeftRelease> <RightRelease> - :noremap! <RightMouse> <LeftMouse> - :noremap! <RightDrag> <LeftDrag> - :noremap! <RightRelease> <LeftRelease> -< - vim:tw=78:ts=8:ft=help:norl: diff --git a/en/todo.txt b/en/todo.txt deleted file mode 100644 index 00b2e7e7b..000000000 --- a/en/todo.txt +++ /dev/null @@ -1,3418 +0,0 @@ -*todo.txt* For Vim version 6.3. Last change: 2004 Jun 07 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - TODO list for Vim *todo* - -This is a veeeery long list of known bugs, current work and desired -improvements. To make it a little bit accessible, the items are grouped by -subject. In the first column of the line a classification is used to be able -to look for "the next thing to do": - -Priority classification: -9 next point release -8 next release -7 as soon as possible -6 soon -5 should be included -4 nice to have -3 consider including -2 maybe not -1 probably not -- unclassified - - *votes-for-changes* -See |develop.txt| for development plans. You can vote for which items should -be worked on, but only if you sponsor Vim development. See |sponsor|. - - *known-bugs* --------------------- Known bugs and current work ----------------------- - -Vi incompatibility: -8 With undo/redo only marks in the changed lines should be changed. Other - marks should be kept. Vi keeps each mark at the same text, even when it - is deleted or restored. (Webb) - Also: A mark is lost after: make change, undo, redo and undo. - Example: "{d''" then "u" then "d''": deletes an extra line, because the '' - position is one line down. (Veselinovic) -8 ":change" in a single-line file adds an empty line. When the file used to - be longer a "~" line is displayed, but there really is an empty line. - (Haakon Riiser, 2003 Dec 3 and Dec 16) -8 ":append" and ":insert" in an empty file add an extra empty line. (Haakon - Riiser, 2003 Dec 3) Test for ML_EMPTY. -8 When stdin is not a tty, and Vim reads commands from it, an error should - make Vim exit. -7 Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line - (currently you can continue typing, but it's truncated later anyway). - Requires a way to make CTRL-C interrupt select() when in cooked input. -8 When loading a file in the .exrc, Vi loads the argument anyway. Vim skips - loading the argument if there is a file already. When no file argument - given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded) -6 In Insert mode, when using <BS> or <Del>, don't wipe out the text, but - only move back the cursor. Behaves like '$' in 'cpoptions'. Use a flag - in 'cpoptions' to switch this on/off. -8 When editing a file which is a symbolic link, and then opening another - symbolic link on the same file, Vim uses the name of the first one. - Adjust the file name in the buffer to the last one used? Use several file - names in one buffer??? - Also: When first editing file "test", which is symlink to "test2", and - then editing "test2", you end up editing buffer "test" again. It's not - logical that the name that was first used sticks with the buffer. -7 The ":undo" command works differently in Ex mode. Edit a file, make some - changes, "Q", "undo" and _all_ changes are undone, like the ":visual" - command was one command. -7 The ":map" command output overwrites the command. Perhaps it should keep - the ":map" when it's used without arguments? -7 CTRL-L is not the end of a section? It is for Posix! Make it an option. -7 Implement 'prompt' option. Init to off when stdin is not a tty. -7 CTRL-T in Insert mode inserts 'shiftwidth' of spaces at the cursor. Add a - flag in 'cpoptions' for this. -7 Add a way to send an email for a crashed edit session. Create a file when - making changes (containing name of the swap file), delete it when writing - the file. Supply a program that can check for crashed sessions (either - all, for a system startup, or for one user, for in a .login file). -7 Vi doesn't do autoindenting when input is not from a tty (in Ex mode). -7 "z3<CR>" should still use the whole window, but only redisplay 3 lines. -7 ":tag xx" should move the cursor to the first non-blank. Or should it go - to the match with the tag? Option? -7 Implement 'autoprint'/'ap' option. -7 Add flag in 'cpoptions' that makes <BS> after a count work like <Del> - (Sayre). -7 Add flag in 'cpoptions' that makes operator (yank, filter) not move the - cursor, at least when cancelled. (default Vi compatible). -7 Make "5dd" on last-but-one-line not delete anything (Vi compatible). - Add flag in 'cpoptions' for this. When not present, "2dd" in the last - line should delete the last line. Patch from greenx 2002 Apr 11. -7 This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual". - In Vi you can edit in visual mode, and when doing "Q" you jump to the next - match. Nvi can do it too. -7 Support '\' for line continuation in Ex mode for these commands: (Luebking) - g/./a\ g/pattern1/ s/pattern2/rep1\\ - line 1\ line 2\\ - line 2\ line 3\\ - . line4/ -6 ":e /tmp/$tty" doesn't work. ":e $uid" does. Is $tty not set because of - the way the shell is started? -6 Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange - thing. (only repeat insert for the first line). - - -GTK+ 1 (OK in GTK 2): -8 When menus are disabled, 'm' removed from 'guioptions', Alt-F still pops - up the File menu. Cannot reproduce this: gives a warning for a NULL - pointer if the menu was never displayed. -8 When using "gvim -geom 40x30" or setting 'columns' in .gvimrc or with a - GUIEnter autocommand, the width is still set to fit the toolbar. Also - happens when changing the font. How to avoid that the toolbar specifies - the minimal window width? -8 When using a theme with different scrollbars (gtkstep), the scrollbars can - be too narrow. (Drazen Kacar) -8 Font "7x14" has a bold version "7x14bold". Try to find the bold font by - appending "bold" when there are not 14 dashes. - -GTK+ GUI known bugs: -8 GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj - Machowski) They are displayed as separate characters. Problem in - creating a label? -9 Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim - when it is longer than 4000 characters. Works OK from gvim to gvim and - vim to vim. Pasting through xterm (using the shift key) also works. - It starts working after GTK gvim loses the selection and gains it again. -7 DND doesn't work with KDE (also with GTK 1). - - -Win32 GUI known bugs: -8 On Windows 98 the unicows library is needed to support functions with UCS2 - file names. Can we load unicows.dll dynamically? -8 The -P argument doesn't work very well with many MDI applications. - The last argument of CreateWindowEx() should be used, see MSDN docs. - Tutorial: http://win32assembly.online.fr/tut32.html -8 In eval.c, io.h is included when MSWIN32 is defined. Shouldn't this be - WIN32? Or can including io.h be moved to vim.h? (Dan Sharp) -7 Windows XP: When using "ClearType" for text smoothing, a column of yellow - pixels remains when typing spaces in front of a "D" ('guifont' set to - "lucida_console:h8"). -6 Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":" - of ":only" is highlighted like the cursor. (Lipelis) -7 When font smoothing is enabled, redrawing can become very slow. The reason - appears to be drawing with a transparent background. Would it be possible - to use an opaque background in most places? -8 Use another default for 'termencoding': the active codepage. Means that - when 'encoding' is changed typing characters still works properly. - Alternative: use the Unicode functions to obtain typed characters. -8 Win32: Multi-byte characters are not displayed, even though the same font - in Notepad can display them. (Srinath Avadhanula) Try with the - UTF-8-demo.txt page with Andale Mono. -7 The cursor color indicating IME mode doesn't work properly. (Shizhu Pan, - 2004 May 9) -8 Win32: When clicking on the gvim title bar, which gives it focus, produces - a file-changed dialog, after clicking on a button in that dialog the gvim - window follows the mouse. The button-up event is lost. Only with - MS-Windows 98? - Try this: ":set sw ts", get enter-prompt, then change the file in a - console, go back to Vim and click "reload" in the dialog for the changed - file: Window moves with the cursor! - Put focus event in input buffer and let generic Vim code handle it? -8 When activating the Vim window with mouse click, don't move cursor to - mouse position. Catch WM_MOUSEACTIVATE. (Luevelsmeyer) -9 The print dialog uses a font which doesn't display multi-byte messages. - Include patch from Vipin Aravind? Update from Yasuhiro Matsumoto. -8 Win32: When mouse is hidden and in the toolbar, moving it won't make it - appear. (Sami Salonen) -8 Windows NT: writing to aux.* makes Vim hang. (Acevedo) -8 Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that - comes available. (Poucet) It works OK on Win 98 but doesn't work on Win - NT 4.0. Leaves a grey area where the scrollbar was. ":set go+=r" also - doesn't work properly. -8 When Vim is minimized and when maximizing it a file-changed dialog pops - up, Vim isn't maximized. It should be done before the dialog, so that it - appears in the right position. (Webb) -9 When selecting at the more-prompt or hit-enter-prompt, the right mouse - button doesn't give popup menu. - At the hit-enter prompt CTRL-Y doesn't work to copy the modeless - selection. - On the command line, don't get a popup menu for the right mouse button. - Let the middle button paste selected text (not the clipboard but the - non-Visual selection)? Otherwise CTRL-Y has to be used to copy the text. -8 When 'grepprg' doesn't execute, the error only flashes by, the - user can hardly see what is wrong. (Moore) - Could use vimrun with an "-nowait" argument to only wait when an error - occurs, but "command.com" doesn't return an error code. -8 When the 'shell' cannot be executed, should give an appropriate error msg. - Esp. for a filter command, currently it only complains the file could not - be read. -8 MessageBox used for error messages can be too big. There is no way to - scroll it, or even hit the OK button (but you can hit return). - Use a scrollable window. -7 Add an option to add one pixel column to the character width? Lucida - Console italic is wider than the normal font ("d" overlaps with next char). - Opposite of 'linespace': 'columnspace'. -7 At the hit-enter prompt scrolling now no longer works. Need to use the - keyboard to get around this. Pretend <CR> was hit when the user tries to - scroll? Need to be able to get out of hit-enter prompt with the mouse - anyway. -7 Scrollbar width doesn't change when selecting other windows appearance. - Also background color of Toolbar and rectangle below vert. scrollbar. -7 "!start /min cmd" should run in a minimized window, instead of using - "/min" as the command name. (Rogall) -6 Drawing text transparently doesn't seem to work (when drawing part cursor). -8 CTRL key doesn't always work in combination with ALT key. It does work - for function keys, not for alphabetic characters. Perhaps this is because - CTRL-ALT is used by Windows as AltGr? -8 CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY. How do we - know which keyboard is being used? -7 When scrolling, and a background color is dithered, the dither pattern - doesn't always join correctly between the scrolled area and the new drawn - area (Koloseike). -8 When gui_init_font() is called with "*", p_guifont is freed while it might - still be used somewhere. This is too tricky, do the font selection first, - then set the new font by name (requires putting all logfont parameters in - the font name). - - -Athena and Motif: -9 Can configure be changed to disable netbeans if the Xpm library is - required and it's missing? -8 When using the resource "Vim*borderwidth 2" the widgets are positioned - wrong. -9 XIM is disabled by default for SGI/IRIX. Fix XIM so that 'imdisable' can - be off by default. -9 XIM doesn't work properly for Athena/Motif. (Yasuhiro Matsumoto) For now, - keep XIM active at all times when the input method has the preediting - flag. -8 X11: A menu that contains an umlaut is truncated at that character. - Happens when the locale is "C", which uses ASCII instead of IS0-8859-1. - Is there a way to use latin1 by default? Gnome_init() seems to do this. -8 Perhaps use fontsets for everything? -6 When starting in English and switching the language to Japanese, setting - the locale with ":lang", 'guifontset' and "hi menu font=", deleting all - menus and setting them again, the menus don't use the new font. Most of - the tooltips work though... -7 Motif: when using a file selection dialog, the specified file name is not - always used (when specifying a filter or another directory). -8 When 'encoding' is different from the current locale (e.g., utf-8) the - menu strings don't work. Requires conversion from 'encoding' to the - current locale. Workaround: set 'langmenu'. - - -Athena GUI: -9 When dragging the scrollbar thumb very fast, focus is only obtained in - the scrollbar itself. And the thumb is no longer updated when moving - through files. -7 The file selector is not resizable. With a big font it is difficult to - read long file names. (Schroeder) -4 Re-write the widget attachments and code so that we will not have to go - through and calculate the absolute position of every widget every time the - window is refreshed/changes size. This will help the "flashing-widgets" - problem during a refresh. -5 When starting gvim with all the default colors and then typing - ":hi Menu guibg=cyan", the menus change color but the background of the - pullright pixmap doesn't change colors. - If you type ":hi Menu guibg=cyan font=anyfont", then the pixmap changes - colors as it should. - Allocating a new pixmap and setting the resource doesn't change the - pullright pixmap's colors. Why? Possible Athena bug? - - -Motif GUI: -8 Popup menu ordering is wrong. -8 Accelerators don't work in a dialog. Include patch from Martin Dalecki - (Jan 3, tested by David Harrison). Should work with Alt-o then. -7 Use accelerators for the Motif file selection dialog. Patch from Martin - Dalecki 2002 Jan 11. -7 Use XmStringCreateLocalized() instead of XmStringCreateSimple()? - David Harrison says it's OK (it exists in Motif 1.2). -8 The texts in the find/replace dialog don't use the right font. -8 Lesstif: When deleting a menu that's torn off, the torn off menu becomes - very small instead of disappearing. When closing it, Vim crashes. - (Phillipps) - - -GUI: -9 On Solaris, creating the popup menu causes the right mouse button no - longer to work for extending the selection. (Halevy) -9 When running an external program, it can't always be killed with CTRL-C. - e.g. on Solaris 5.5, when using "K" (Keech). Other 'guipty' problems on - Solaris 2.6. (Marley) -9 On Solaris: Using a "-geometry" argument, bigger than the window where Vim - is started from, causes empty lines below the cmdline. (raf) -8 X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key - should not be used to trigger a menu (like the Win32 version). -8 When setting 'langmenu', it should be effective immediately. Store both - the English and the translated text in the menu structure. Re-generate - the translation when 'langmenu' has changed. -8 Basic flaw in the GUI code: NextScreen is updated before calling - gui_write(), but the GUI code relies on NextScreen to represent the state - of where it is processing the output. - Need better separation of Vim core and GUI code. -8 When fontset support is enabled, setting 'guifont' to a single font - doesn't work. -8 Menu priority for sub-menus for: Amiga, BeOS. -8 Add menu separators for Amiga, RISCOS. -8 Add a few more command names. Patch from Jiri Brezina (28 feb 2002). -8 Add way to specify the file filter for the browse dialog. At least for - browse(). -8 Add dialog for search/replace to other GUIs? Tk has something for this, - use that code? Or use console dialog. -8 When selecting a font with the font dialog and the font is invalid, the - error message disappears too quick. -8 gui_check_colors() is not called at the right moment. Do it much later, - to avoid problems. -8 gui_update_cursor() is called for a cursor shape change, even when there - are mappings to be processed. Only do something when going to wait for - input. Or maybe every 100 ms? -8 X11: When the window size is reduced to fit on screen, there are blank - lines below the text and bottom scrollbar. "gvim -geometry 80x78+0+0". - When the "+0+0" is omitted it works. -8 When starting an external command, and 'guipty' set, BS and DEL are mixed - up. Set erase character somehow? -8 A dead circumflex followed by a space should give the '^' character - (Rommel). Look how xterm does this. - Also: Bednar has some code for dead key handling. - Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya) -8 The compose key doesn't work properly (Cepas). Both for Win32 and X11. -7 The cursor in an inactive window should be hollow. Currently it's not - visible. -7 GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is - hollow, after window lowered/raised it's OK. (Godfrey) -7 When starting GUI with ":gui", and window is made smaller because it - doesn't fit on the screen, there is an extra redraw. -8 When setting font with .Xdefaults, there is an extra empty line at the - bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek) -8 When font shape changes, but not the size, doing ":set font=" does not - redraw the screen with the new font. Also for Win32. - When the size changes, on Solaris 2.5 there isn't a redraw for the - remaining part of the window (Phillipps). -- Flashes really badly in certain cases when running remotely from a Sun. -4 Re-write the code so that the highlighting isn't changed multiple times - when doing a ":hi clear". The color changes happen three or more times - currently. This is very obvious on a 66Mhz 486. - - -MSDOS/DJGPP: -9 Pressing CTRL-C often crashes the console Vim runs in. (Ken Liao) - When 'bioskey' isn't set it doesn't happen. Could be a problem with the - BIOS emulation of the console. Version 5.6 already had this problem. -8 DJGPP: "cd c:" can take us to a directory that no longer exists. - change_drive() doesn't check this. How to check for this error? -9 The 16 bit version runs out of memory very quickly. Should find unused - code and reduce static data. -9 Crash when running on Windows 98 in a console window and pressing CTRL-C. - Happens now and then. When debugging Vim in gdb this also happens. Since - the console crashes, might be a bug in the DOS console. Resetting - 'bioskey' avoids it, but then CTRL-C doesn't work. -9 DOS: Make CTRL-Fx and ALT-Fx work. - CTRL-F1 = CE-5E, CTRL-F2 = CE-5F, .., CTRL-F10 = CE-67 - ALT-F1 = CE-68, ALT-F2 = CE-69, .., ALT-F10 = CE-71 - Shifted cursor keys produce same codes as unshifted keys. Use bioskey(2) - to get modifier mask for <S-C-M-Fx>. - Use K_SPECIAL/KS_MODIFIER codes to insert modifier mask in input stream? - Make this work like in Win32 console. - Mapping things like <M-A> doesn't work, because it generates an extended - key code. Use a translation table? -9 Can't read an opened swap file when the "share" command has not been used. - At least ignore the swap files that Vim has opened itself. -8 Use DJGPP 2.03. -8 The Dos32 version (DJGPP) can't use long file names on Windows NT. - Check if new package can be used (v2misc/ntlfn08[bs].zip). -8 setlocale() is bogus. -8 Vim busy waits for new characters or mouse clicks. Should put in some - sort of sleep, to avoid eating 50% of the CPU time. Test on an unpatched - Windows 95 system! -8 DJGPP: when shell is bash, make fails. (Donahoe) -7 Hitting CTRL-P twice quickly (e.g. in keyword completion) on a 8088 - machine, starts printer echo! (John Mullin). -7 MSDOS 16 bit version can't work with COMSPEC that has an argument, e.g.: - COMSPEC=C:\WINDOWS\COMMAND.COM /E:4096 (Bradley) - Caused by BCC system() function (Borland "make" has the same problem). -8 Mouse: handle left&right button pressed as middle button pressed. Add - modifier keys shift, ctrl and alt. -7 When too many files are open (depends on FILES), strange things happen. - The Dos16 version runs out of memory, in the Dos32 version "!ls" causes a - crash. Another symptom: .swp files are not deleted, existing files are - "[New file]". -7 DJGPP version doesn't work with graphics display mode. Switch to a mode - that is supported? -8 DJGPP: ":mode" doesn't work for many modes. Disable them. -8 DJGPP: When starting in Ex mode, shouldn't clear the screen. (Walter - Briscoe) - - -MSDOS, OS/2 and Win32: -8 OS/2: Add backtick expansion. Undefine NO_EXPANDPATH and use - gen_expand_wildcards(). -8 OS/2: Add clipboard support? See example clipbrd.exe from Alexander - Wagner. -8 OS/2: Add Extended Attributes support and define HAVE_ACL. -8 OS/2: When editing a file name "foo.txt" that is actually called FOO.txt, - writing uses "foo.txt". Should obtain the real file name. -8 Should $USERPROFILE be used instead of $HOMEDRIVE/$HOMEPATH? -8 Win32 console: <M-Up> and <M-Down> don't work. (Geddes) We don't have - special keys for these. Should use modifier + key. -8 Win32 console: caps-lock makes non-alpha keys work like with shift. - Should work like in the GUI version. -8 Environment variables in DOS are not case sensitive. Make a define for - STRCMP_ENV(), and use it when comparing environment var names. -8 Setting 'shellslash' has no immediate effect. Change all file names when - it is set/reset? Or only use it when actually executing a shell command? -8 When editing a file on a Samba server, case might matter. ":e file" - followed by ":e FILE" will edit "file" again, even though "FILE" might be - another one. Set last used name in buflist_new()? Fix do_ecmd(), etc. -8 ":mksession" generates a "cd" command where "aa\#bb" means directory "#bb" - in "aa", but it's used as "aa#bb". (Ronald Hoellwarth) -8 When a buffer is editing a file like "ftp://mach/file", which is not going - to be used like a normal file name, don't change the slashes to - backslashes. (Ronald Hoellwarth) - - -Windows 95: -8 Editing a file by it's short file name and writing it, makes the long file - name disappear. Setting 'backupcopy' helps. - Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly). -8 Doing wildcard expansion, will match the short filename, but result in the - long filename (both DJGPP and Win32). - - -Win32 console: -9 When editing a file by its short file name, it should be expanded into its - long file name, to avoid problems like these: (Mccollister) - 1) Create a file called ".bashrc" using some other editor. - 2) Drag that file onto a shortcut or the actual executable. - 3) Note that the file name is something like BASHRC~1 - 4) Go to File->Save As menu item and type ".bashrc" as the file name. - 5) Press "Yes" to indicate that I want to overwrite the file. - 6) Note that the message "File exists (add ! to override)" is displayed - and the file is not saved. - Use FindFirstFile() to expand a file name and directory in the path to its - long name. -8 Also implement 'conskey' option for the Win32 console version? Look at - how Xvi does console I/O under Windows NT. -7 Re-install the use of $TERM and support the use of different terminals, - besides the console. -8 Use of <altgr> modifier doesn't work? 5.3 was OK. (Garcia-Suarez/Guckes) -9 Mapping <C-S-Tab> doesn't work correctly. How to see the difference with - <C-S-i>? -9 tmpnam() uses file in root of file system: "\asdf". That doesn't work on - a Netware network drive. Use same function as for Win32 GUI? -8 In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__ - is not defined. Shouldn't that be the other way around? -8 ":winpos" doesn't work. Patch from Vipin Aravind. -7 Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'? - Avoids that input and output work differently. Need to be restored when - exiting. - - -Amiga: -8 In mch_inchar() should use convert_input_safe() to handle incomplete byte - sequences. -9 In mch_expandpath() a "*" is to be expanded, but "\*" isn't. Remove - backslashes in result. -8 Executing a shell, only one option for 'shell' is separated. Should do - all options, using white space separation. - - -Macintosh: -9 Mac: The motion type is not stored on the clipboard. Using ":set - clipboard=unnamed" makes "yyp" work characterwise. (Michael DeMoney) -7 Loading the Perl library only works on OS/X 10.2 or 10.3, never on both. - Load the Perl library dynamically see Python sources file dynload_mac - (Jack) - dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html -8 Inputting Unicode characters does not work in the terminal. They appear - to arrive as upper and lower bytes. (David Brown, 2004 April 17) -8 Typing Unicode characters doesn't work at all in the GUI. -8 Patch to add 'transparency' option. Disadvantage: it's slow. (Eckehard - Berns, 2004 May 9) http://ecki.to/vim-icns/TransBack.diff -8 Patches from "Rain Dog" Cucka: - - guifont selector (2002 Dec 15) - - scrollbar (2002 Dec 8) - - Quartz fonts (2002 Dec 8) -9 Problems in Carbon version for OS X: (Benji Fisher) - - keyboard shortcuts in the menus get lost. -8 The Vim/About menu doesn't work. -8 ":gui" doesn't fork. Enabling the code in gui.c to fork causes a SEGV. -8 Define vim_mkdir() for Macintosh. -8 Define mch_writable() for Macintosh. -9 When DiskLock is running, using a swap file causes a crash. Appears to be - a problem with writing a file that starts with a dot. (Giacalone) -9 On G3 Mac, OS version 8, control strip causes characters messed up when - scrolling (CTRL-L cleans it up). (Benji Fisher) -9 On G3 Mac, OS version 8, variable-speed scrolling doesn't work, after two - seconds of scrolling the screen freezes. (Benji Fisher) -9 In mac_expandpath() check that handling of backslashes is done properly. -8 Standard Mac shortcuts are missing. (Amerige) -8 Handling of non-fixed width fonts is wrong. (Amerige) - - -"Small" problems: -8 When an ":edit" is inside a try command and the ATTENTION prompt is used, - the :catch commands are always executed, also when the file is edited - normally. Should reset did_emsg and undo side effects. Also make sure - the ATTENTION message shows up. -9 When using ":e ++enc=foo file" and the file is already loaded with - 'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though - the fileencoding differs. Reload the buffer in this situation? Need to - check for the buffer to be unmodified. -8 ":g//" gives "Pattern not found error" with E486. Should not use the - error number, it's not a regular error message. -7 Vimtutor leaves escape sequence in terminal. This is the xterm response to - requesting the version number. (Yasuhiro Matsumoto) -8 When redirecting and using ":silent" the current column for displaying and - redirection can be different. Use a separate variable to hold the column - for redirection. -7 There is no way to change directory and go back without changing the local - and/or global directory. Add a way to find out if the current window uses - a local directory. Add cdcmd() that returns ":cd" or ":lcd"? -7 After running "make test" the window title is sometimes not restored. - Mostly sticks at "test3.in", but not always. Appears to happen more often - when compiled with Python (threading). -7 The messages for "vim --help" and "vim --version" don't use - 'termencoding'. -7 ATTENTION dialog choices are more logical when "Delete it' appears before - "Quit". Patch by Robert Webb, 2004 May 3. -8 When 'scrollbind' is set, a window won't scroll horizontally if the cursor - line is too short. Add a word in 'scrollopt' to allow moving the cursor - to longer line that is visible. A similar thing is done for the GUI when - using the horizontal scrollbar. -7 VisVim can only open one file. Hard to solve: each opened file is passed - with a separate invocation, would need to use timestamps to know the - invocations belong together. -8 When giving a ":bwipeout" command a file-changed dialog may popup for this - buffer, which is pointless. (Mike Williams) -8 On MS-Windows ":make" doesn't show output while it is working. Use the - tee.exe from http://unxutils.sourceforge.net/ ? About 16 Kbyte in the - UnxUtils.zip archive. - Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter - Briscoe says it's not as good. -8 'fillchars' doesn't work for multi-byte characters. -9 Editing a XML file with a long line is extremely slow. Example file from - Randy Parker (Dec 13). - Limit the searching for items to a few hundred characters? -8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing - ":buf foo<Tab>" doesn't find the second one. (George V. Reilly) -7 Output for ":scriptnames" and ":breaklist" should shorten the file names: - use "~/" when possible. -8 After using diff mode, ":set nodiff" doesn't restore the old foldmethod. - (Thomas S. Urban) -7 mb_off2cells() doesn't work correctly on the tail byte of a double-byte - character. (Yasuhiro Matsumoto) It should return 1 when used on a tail - byte, like for utf-8. Store second byte of double-byte in ScreenLines2[] - (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8). -8 'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when - defined. -7 Inside a function with "perl <<EOF" a line with "$i++" is recognized as an - ":insert" command, causing the following "endfunction" not to be found. - Add skipping this perl construction inside function definitions. -7 When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode - "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second - delay should not be interpreted as a keycode. (Hans Ginzel) -7 ":botright 1 new" twice causes all window heights to be changed. Make the - bottom window only bigger as much as needed. -7 "[p" doesn't work in Visual mode. (David Brown) -7 The Cygwin and MingW makefiles define "PC", but it's not used anywhere. - Remove? (Dan Sharp) -9 The argument <f-args> of a user command doesn't handle backslashes - properly. "Cmd \ e" is one argument, "Cmd \\ e" still is one argument. - "Cmd \ e" is two arguments, first one ending in space. (Kontra Gergely) -9 User commands use the context of the script they were defined in. This - causes a "s:var" argument to unexpectedly use a variable in the defining - script, not the calling script. Add an argument to ":command": - "-keepcontext". Do replace <SID>, so that a function in the defining - script can be called. -8 The Japanese message translations for MS-Windows are called ja.sjis.po, - but they use encoding cp932. Rename the file and check that it still - works. -9 When a syntax region does not use "keepend" and a contained item does use - "extend", this makes the outer region stop at the end of the contained - region. (Lutz Eymers) Another example Nov 14 2002. -8 A very long message in confirm() can't be quit. Make this possible with - CTRL-C. -7 clip_x11_own_selection() uses CurrentTime, that is not allowed. VNC X - server has a problem with this. (Mark Waggoner) Remembering the timestamp - of events isn't always possible. We don't get them in an xterm. GTK - doesn't obtain the selection again when the timestamp differs, thus it - won't work for GTK anyway. -8 When the clipboard isn't supported: ":yank*" gives a confusing error - message. Specifically mention that the register name is invalid. -8 "gf" always excludes trailing punctuation characters. file_name_in_line() - is currently fixed to use ".,:;!". Add an option to make this - configurable? -8 'hkmap' should probably be global-local. -9 When "$" is in 'cpoptions' and folding is active, a "C" command changes - the folds and resets w_lines_valid. The display updating doesn't work - then. (Pritesh Mistry) -8 ":s!from!to!" works, but ":smagic!from!to!" doesn't. It sees the "!" as a - flag to to the command. Same for ":snomagic". (Johan Spetz) -8 Using ":s" in a function changes the previous replacement string. Save - "old_sub" in save_search_patterns()? -8 When appending to a file and 'patchmode' isn't empty, a backup file is - always written, even when the original file already exists. -7 When using "daw" on the last word in a file and this is a single letter, - nothing is deleted. Should delete the letter and preceding white space. -9 When getting focus while writing a large file, could warn for this file - being changed outside of Vim. Avoid checking this while the file is being - written. -9 The "Error detected while processing modelines" message should have an - error number. -7 The message in bt_dontwrite_msg() could be clearer. -8 Unix: When libcall() fails there is no clear error message. Johannes - Zellner has a patch for this. -8 The script ID that is stored with an option and displayed with ":verbose - set" isn't reset when the option is set internally. For example when - 'foldlevel' is set from 'foldlevelstart'. -8 In the fileformat dialog, "Cancel" isn't translated. Add a global - variable for this. (Eduardo Fernandez) -9 When editing a file with 'readonly' set, there is no check for an existing - swap file. Then using ":write" (without making any changes) doesn't give - a warning either. Should check for an existing swap file without creating - one. -7 On MS-DOS or MS-Windows, when editing the same file over a network, the - drive letter is different, thus an existing swap file doesn't generate a - warning. Use some flag to indicate the swap file is in the same directory - as the original file? Could make b0_fname[] start with a special - character like ">". -7 When 'showbreak' is set, the amount of space a Tab occupies changes. - Should work like 'showbreak' is inserted without changing the Tabs. -7 When there is a "help.txt" window in a session file, restoring that - session will not get the "LOCAL ADDITIONS" back. -7 When 'mousefocus' is set and switching to another window with a typed - command, the mouse pointer may be moved to a part of the window that's - covered by another window and we lose focus. Only move in the y - direction, not horizontally? -8 When using CTRL-D after ":help", restrict the number of matches to a - thousand, otherwise using CTRL-D without an argument takes too long. -8 ":hardcopy": - - Using the cterm_color[] table is wrong when t_colors is > 16. - - Need to handle unprintable characters. - - Win32: On a B&W printer syntax highlighting isn't visible. Perform - dithering to make grey text? - - support printing multi-byte characters. Patch from Motonobu Ichimura. - New (better) patch from Mike Williams (2004 Jan 20) - - Add a flag in 'printoptions' to add an empty page to make the total - number even. "addempty"? (Mike Williams) - - Should interpreted CTRL-L as a page break. - - Grey line numbers are not always readable. Add field in 'printoptions'. - Default to black when no syntax highlighting. - - Be able to print a window in diff mode. - - Be able to specify a colorscheme to use for printing. And a separate - one for B&W printing (if that can be detected). -8 In Visual block mode with 'lbr' set, a change command doesn't insert the - text in following lines where the linebreak changes. -9 dosinst.c: The DJGPP version can't uninstall the Uninstall registry key on - Windows NT. How to install a .inf file on Windows NT and how to detect - that Windows NT is being used? -8 When opening the same file on Unix and on MS-Windows, there is no - ATTENTION message, because the path in the swap file is different. Using - a relative path name will cause no ATTENTION for Vim 5.8. - Somehow add a flag that the swap file is in the same dir as the file? -8 When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a - block of one double-wide character, then "d" deletes only half of it. -8 When 'virtualedit' is set, should "I" in blockwise visual mode also insert - in lines that don't extend into the block? -8 With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O - yh does not yank the last character of the line. (Pavel Papushev) - Doing "hl" first appears to make it work. -8 With 'virtualedit' set it's possible to move into the blank area from - 'linebreak'. -8 With 'virtualedit' set and 'selection' "exclusive", a Visual selection - that ends in or after a tab, "d" doesn't delete (part of) the tab. - (Helmut Stiegler) -8 With 'virtualedit' set, a blockwise Visual selection that starts and ends - in a tab, "<" shifts too much. (Helmut Stiegler) -9 When jumping to a tag, the search pattern is put in the history. When - 'magic' is on, the pattern may not work. Translate the pattern depending - on p_magic when putting it in the history? Alternative: Store value of - 'magic' in history. (Margo) -9 optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for - ":noremap". Add "mapcmd({string}, {mode})? Use code from ":mkexrc". -9 incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern - isn't updated). -9 term_console is used before it is set (msdos, Amiga). -9 Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled - correctly. Get many error messages while redrawing the screen, which - cause another redraw, etc. -8 [<C-I> doesn't work when '*' is in 'iskeyword'. find_pattern_in_path() - must escape special characters in the pattern. -8 Vim can overwrite a read-only file with ":w!". ":w" can't overwrite an - existing file, "w!" can, but perhaps not a read-only file? Then use - ":w!!" for that. - Or ask for permission to overwrite it (if file can be made writable) and - restore file to readonly afterwards. -7 When compiled with "xterm_clipboard", startup can be slower and might get - error message for invalid $DISPLAY. Try connecting to the X server in the - background (forked), so that Vim starts up quicker? Connect as soon as - the clipboard is to be used (Visual select mode starts, paste from - clipboard) -7 X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal - selection. Add an "xclipboard" argument to the 'clipboard' option? (Mark - Waggoner) -8 For xterm need to open a connection to the X server to get the window - title, which can be slow. Can also get the title with "<Esc>[21t", no - need to use X11 calls. This returns "<Esc>]l{title}<Esc>\". -8 When the builtin xterm termcap contains codes that are not wanted, need a - way to avoid using the builtin termcap. -8 Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode. Also - recognize these keys? Mostly useful for xterm simulators, like gnometerm. - See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style. -8 '[ and '] should be set to start/end of line when using a linewise operator - (e.g., ":w"). -8 CTRL-A can't handle big "long" numbers, they become negative. Check for - "-" character, if not present, use unsigned long. -8 Make it possible to disable the special meaning of "#" in the first column - for ">>". -8 Add suspending with CTRL-Z at the "more" prompt, and when executing a long - script in do_cmdline(). -8 When using 'hidden', many swap files will be open. When Vim runs into the - maximum number of open files, error messages will appear. Detect that - this problem is present, and close any hidden files that don't have - changes. -8 With 'viminfo' set such that the ".viminfo" file is written on a FAT - filesystem, an illegal file name may be created: ".vim". -8 For each buffer that is opened, the viminfo file is opened and read to - check for file marks. This can be slow. -7 In xterm, recognize both vt100 and vt220 cursor keys. Change - add_termcode() to not remove an existing entry for a name, when it's - needed. - Need a generic solution to recognize different codes for the same key. -8 Core dump within signal function: gdb doesn't show stack backtrace! Option - to skip catch_signals()? -9 Repeating a "cw" with "." doesn't work if the text was pasted from the - clipboard. (Thomas Jones) It's because the menu/toolbar item exits Insert - mode and uses "gP". How to fix this without breaking inserting a block of - text? -8 In Replace mode pasting from the clipboard (using menu or toolbar) inserts - all the text. Add ":rmenu"? -8 Pasting with the mouse in Replace mode inserts the text, instead of - overwriting, when it is more than one line. Same for using <C-R>. -9 CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are - wrapping (Acevedo/in.226). E.g., when using CTRL-E, window height 7, - window might actually scroll down when last line of buffer is displayed. - --> Remember if the previous command was "cursor follows screen" or - "screen follow cursor" and use this in cursupdate(). -7 tilde_replace() can only handle "~/", should also do "~user/". - Get the list of home directories (from /etc/passwd? Use getpwent()) and - use some clever algorithm to match a path with that. Find common strings - in the list? -8 When dragging status line with mouse, sometimes a jump when first clicking - on the status line (caused by 'winheight'). Select window on button up, - instead of on button down. -8 Dragging the status line doesn't scroll but redraw. -9 Evaluating 'statusline' in build_stl_str_hl() does not properly check for - reaching the end of the available buffer. -8 When performing incremental search, should abort searching as soon as a - character is typed. -8 When the value of $MAKE contains a path, configure can't handle this. - It's an autoconf bug. Remove the path from $MAKE to work around it. -8 How to set VIMRC_FILE to \"something\" for configure? Why does this not - work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure -8 The temporary file is sometimes not writable. Check for this, and use an - alternate name when it isn't. Or add the 'temptemplate' option: template - for the temp file name ":set temptemplate=/usr/tmp/?????.tmp". - Also: Win32 version uses Windows temp directory, which might not work for - cygwin bash. -7 Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}". - Remember flags for backreferences. -7 When switching to Daylight Saving Time, Vim complains that a file has been - changed since last read. Can we use a function that uses GMT? -7 When completing an environment variable after a '$', check for file names - that contain a '$' after all have been found. -8 When "cm" termcap entry is missing, starting gvim shouldn't complain about - it. (Lohner) Try out with "vt100" entry, cm replaced with cX. -7 When an include file starts with "../", the check for already visiting - this file doesn't work. Need to simplify the file name. -8 On Sinix SYS_NMLN isn't defined. Include patch from Cristiano De Michele. -7 The names and comments for the arguments of do_browse() are confusing. - "dflt" isn't the default file name when "initdir" is not NULL and - "initdir" is the default path to be used. -7 When 'scrolloff' is exactly half the window height, "j" causes a scroll of - two lines at a time. "k" doesn't do this. (Cory T. Echols) -8 When write_viminfo() is used while there are many orphaned viminfo - tempfiles writing the viminfo file fails. Give a clear error message so - that the user knows he has to delete the files. -7 It's possible to redefine a script-local function with ":func - <SNR>123_Test()". (Krishna) Disallow this. -7 After ":%d" an undo reports the number of lines added as if there still - was one line. - - -I can't reproduce these (if you can, let me know how!): -9 NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file - disappears. Editing ".xyz" is OK. Also, drag&drop only works for three - files. (McCollister) -8 Motif: Tear-off menu item crashes Vim on some machines. (Netherton) It - works fine for me, maybe it's a Motif problem. - - -Problems that will (probably) not be solved: -- In a terminal with 'mouse' set such that the mouse is active when entering - a command line, after executing a shell command that scrolls up the - display and then pressing ":": Selecting text with the mouse works like - the display wasn't scrolled. Vim doesn't know how much the external - command scrolled up the display. Use Shift to select text. -- X windows: When $DISPLAY points to a X server where there is no access - permission, trying to connect to the X server causes an error message. - XtOpenDisplay() prints this directly, there is no way to avoid it. -- X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim. - This is caused by a fault in a X library function, can't be solved in Vim. -- Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will - be underlined, instead of in "Symbol". Motif doesn't let us specify which - character gets the highlighting. -- Moving the cursor removes color in color-xterm. This is a color-xterm - problem! color-xterm ver. 6.1 beta 3 and later work properly. -- In zsh, "gvim&" changes the terminal settings. This is a zsh problem. - (Jennings) -- Problem with HPterm under X: old contents of window is lost (Cosentino). -- Amiga: When using quickfix with the Manx compiler we only get the first 25 - errors. How do we get the rest? -- Amiga: The ":cq" command does not always abort the Manx compiler. Why? -- Linux: A file with protection r--rw-rw- is seen readonly for others. The - access() function in GNU libc is probably wrong. -- MSDOS: When using smartdrive with write-back buffering, writing to a - readonly floppy will cause problems. How to test for a writable floppy - first? -- MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for - names that start with a dot. These used to be illegal file names. -- When doing a CTRL-Z and typing a command for the shell, while Vim is busy - (e.g. writing a file), the command for the shell is sometimes eaten by Vim, - because the terminal mode is changed from RAW to CBREAK. -- An old version of GNU tgoto can't handle the terminfo code for "AF". The - "%p1" is interpreted as "%p" and "1", causing color not to be working. - Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p". - (Benzinger). -- When running an external command from the GUI, typeahead is going to that - program, not to Vim. It looks like the shell eats the characters, Vim - can't get back what the external command didn't use. -- Win32 GUI: Error code from external command not returned in shell_error. - It appears that cmd.exe and command.com don't return an error code. -- Win32 GUI: The Toolbar is a bit too high when the flat style is being - used. We don't have control over the height of the Toolbar. -- Win32: All files created on the day of switching from winter to summer - time cause "changed since editing started" messages. It goes away when - the file is written again the next day, or the timezone is adjusted. - DJGPP version is OK. (Zaimi) Looks like a problem with the Win32 library. - Rebooting doesn't help. Time stamps look OK in directory. (Penn) - Is this on FAT (stores wall clock time) or NTFS (stores UTS)? -- Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles - are not on the boot disk. This is caused by a wrong value of $HOMEDRIVE. - This is a bug in XP, see MSKB article 818134. -- SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal - scroll bar for the "files" selection. This is a problem in the Motif - libraries, get a patch from Sun. -- Solaris 2.6 with GTK and Perl: gvim crashes when started. Problem with X - input method called from GDK code. Without Perl it doesn't crash. -- VMS: Vimdiff doesn't work with the VMS diff, because the output looks - different. This makes test 47 fail. Install a Unix-compatible diff. -- VMS v7.1 and older: Tests 21 and 32 fail. From VMS v7.1-2 and newer Vim - does not have this behavior. (Zoltan Arpadffy) -- Win32 GUI: mouse wheel always scrolls rightmost window. The events arrive - in Vim as if the rightmost scrollbar was used. -- GTK with Gnome: Produces an error message when starting up: - Gdk-WARNING **: locale not supported by C library - This is caused by the gnome library gnome_init() setting $LC_CTYPE to - "en_US". Not all systems support this locale name, thus causing the - error. Hopefully a newer version of GTK/Gnome fixes this problem. -- GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the - screen, at other times there is a grey area below the command line: - :nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr> -- GTK: When pasting a selection from Vim to xclipboard gvim crashes with a - ABRT signal. Probably an error in the file gdkselection.c, the assert - always fails when XmbTextListToTextProperty() fails. (Tom Allard) -- When using an xterm that supports the termresponse feature, and the 't_Co' - termcap option was wrong when Vim started, it will be corrected when the - termresponse is received. Since the number of colors changes, the - highlighting needs to be initialized again. This may cause colors defined - in the vimrc file to be lost. -- On Windows NT 4.0 the number of files passed to Vim with drag&drop and - "Edit with Vim" is limited. The maximum command line length is 255 chars. - ---------------------- extensions and improvements ---------------------- - *extensions-improvements* - -For version 7.0: -- Include the kvim patch. http://freenux.org/vim/ (Mickael Marchand) - Do not add Qtopia yet, it doesn't work very well. -- The main() function is very long. Move parts to separate functions, - especially loops. Ideas from Walter Briscoe (2003 Apr 3, 2004 Feb 9). -- Store messages to allow scrolling back for all commands. And other "less" - like commands. -7 When a dos format file was edited with ":e ++ff=unix", Vim is killed and - trying to recover the file, 'ff' will be dos. Same for non-default - fileencoding. (Miroslaw Dobrzanski-Neumann, Jul 17) Should store the - values in block 0 of the swap file, but that is an incompatible change. - - -Documentation: -8 Extend usr_27.txt a bit. (Adam Seyfarth) -9 Merge in ideas from ~/vim/patches/tutor.txt (Gabriel Zachmann) -7 Add a section on debugging scripts in the user manual. -9 Make the Reference Manual more precise. For each command mention: - - change to cursor position and curswant - - if it can be undone (u/CTRL-R) and redone (.) - - how it works for folded lines - - how it works with multi-byte characters -9 In change.txt, remark about Javadoc isn't right. Right alignment would - work too. -8 Spread the windows commands over the other files. For example, ":stag" - should be with ":tag". Cross-link with tags to avoid too much double - text. -7 MS-Windows: When a wrong command is typed with an ALT key, give a hint to - look at the help for 'winaltkeys'. -7 Add a help.vim plugin that maps <Tab> to jump to the next tag in || and - <C-Tab> (and <S-Tab>) to the previous tag. -- Check text editor compendium for vi and Vim remarks. - - -Help: -- First try using the ":help" argument literally, before using it as a - pattern. And then match it as part of a tag. -- When a help item has multiple matches make it possible to use ":tn" to go - to the other matches. -- Support a way to view (and edit) .info files. -- Default mapping for help files: <Tab> to position cursor on next |:tag|. -- Implement a "sticky" help window, some help text lines that are always - displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file, - user can edit it to insert his favorite commands, new account can contain a - default contents. -- Make 'winminheight' a local option, so that the user can set a minimal - height for the help window (and other windows). -- ":help :s^I" should expand to ":help :substitute". -- Make the help key (<F1>) context sensitive? -- Learn mode: show short help while typing commands. - - -User Friendlier: -8 Windows install with install.exe: Use .exe instead of .bat files for - links, so that command line arguments are passed on unmodified? (Walter - Briscoe) -8 Windows install: Be able to associate Vim with a selection of file types? -8 Windows uninstall: Have uninstal.c delete the vimfiles directories that - dosinst.c creates. List the contents of the directory (recursively) if - the user asks for it. Requires an implementation of "rm -rf". -8 Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc, - $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu. -- Add a way to save local settings and mappings into a new plugin file. - ":mkplugin <file>"? -8 Add ":plugininstall" command. Can be used to install a plugin file that - includes documentation. Let the user select a directory from - 'runtimepath'. - " Vim plugin - <main plugin code> - " >>> plugin help start <<< - <plugin docs> -- Add mappings local to a window: ":map <window> ..."? -9 Add buffer-local menu. Should offer a choice between removing the menu or - disabling it. Be careful that tear-offs don't disappear (keep one empty - item?). - Alternative: use BufEnter and BufLeave autocommands. -8 Add file locking. Lock a file when starting to edit it with flock() or - fcntl(). This patch has advisory file locking while reading/writing the - file: ~/vim/patches/kahn_file_locking . -8 make a vimtutor script for Amiga and other systems. -7 Add the arguments for configure to the ":version" output? - - -Diff mode: -8 Add a command to stop diff mode: ":set nodiff fdc = 0 noscrollbind" -8 Use diff mode to show the changes made in a buffer (compared to the file). - Use an unnamed buffer, like doing: - new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis -7 Add cursor-binding: when moving the cursor in one diff'ed buffer, also - move it in other diff'ed buffers, so that CTRL-W commands go to the same - location. - - -Folding: - (commands still available: zg zG zI zJ zK zp zP zq zQ zV zw zW zy zY; - secondary: zB zS zT zZ) -8 Add different highlighting for a fold line depending on the fold level. - (Noel Henson) -8 When a closed fold is displayed open because of 'foldminlines', the - behavior of commands is still like the fold is closed. How to make the - user aware of this? -8 Add an option 'foldskip' with values like 'foldopen' that specifies which - commands skip over a closed fold. -8 "H" and "L" count buffer lines instead of window lines. (Servatius Brandt) -8 Add a way to add fold-plugins. Johannes Zellner has one for VB. -7 When using 2html.vim, also reproduce folds as you can see them. When - someone doesn't want the folds he can disable them before converting. - First attempt by Carl Osterwisch, 2004 May 10. -7 When using manual folding, the undo command should also restore folds. -- Allow completely hiding a closed fold. Require showing a character in - 'foldcolumn' to avoid the missing line goes unnoticed. -- When pressing the down arrow of a scrollbar, a closed fold doesn't scroll - until after a long time. How to make scrolling with closed folds - smoother? -- When creating a session, also store folds for buffers in the buffer list, - using the wininfo in wi_folds. -- 'foldmethod' "textobject": fold on sections and paragraph text objects. -- Add 'hidecomment' option: don't display comments in /* */ and after //. -- "zu": undo change in manual fold. "zU" redo change in manual fold. How to - implement this? -- "zJ" command: add the line or fold below the fold in the fold under the - cursor. -- 'foldmethod' "syntax": "fold=3": set fold level for a region. -- Can set 'foldtext' to empty string: don't display any line. How to - implement this? -- Apply a new foldlevel to a range of lines. (Steve Litt) -- Have some way to restrict commands to not folded text. Also commands like - searches. - - -Multi-byte characters: -9 When the tail byte of a double-byte character is illegal (e.g., a CR), the - display is messed up (Yasuhiro Matsumoto). Should check for illegal - double-byte characters and display them differently (display each single - byte). -8 Add an item in 'fileencodings' to check the first lines of a file for - the encoding. See Python PEP: http://www.python.org/peps/pep-0263.html. - To avoid getting a wrong encoding only accept something Emacs-like: - "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-" - Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first - item. -8 Add an item in 'fileencodings' to check the first line of an XML file for - the encoding. <?xml version="1.0" encoding="UTF-8"?> Or "charset=UTF-8"? -8 The quickfix file is read without conversion, thus in 'encoding'. Add an - option to specify the encoding of the errorfile and convert it. Also for - ":grep". -8 When a file was converted from 'fileencoding' to 'encoding', a tag search - should also do this on the search pattern. (Andrzej M. Ostruszka) -7 When converting a file fails, mention which byte could not be converted, - so that the user can fix the problem. -8 Add configure option to be able to disable using the iconv library. (Udo - Schweigert) -8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac? -9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El) -8 Should add test for using various commands with multi-byte characters. -- Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work for - multi-byte characters. -8 'infercase' doesn't work with multi-byte characters. -8 toupper() function doesn't handle byte count changes. -8 Support four composing characters, needed for Hebrew. (Ron Aaron) -8 "ga" should show all composing characters, also if there are more than 2. -7 When searching, should order of composing characters be ignored? -8 Should implement 'delcombine' for command line editing. -8 Detect overlong UTF-8 sequences and handle them like illegal bytes. -8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte - characters. -8 UTF-8: "r" in Visual mode doesn't take composing characters. -8 UTF-8: When there is a precomposed character in the font, use it instead - of a character and a composing character. See xterm for an example. -7 When a character can't be displayed, display its digraph instead. - 'display' option to specify this. -7 Use ideas for nl_langinfo() from Markus Kuhn in enc_default(): - (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c) -- GTK and Win32: Allow selecting fonts for 'guifontset' with the - fontselector somehow. -- GTK and Win32: make it possible to set the font for the menu to make it - possible to have 'encoding' different from the current locale. -- dbcs_class() only works for Japanese and Korean. Implement this for - other encodings. The "euc-jp" and "euc-kr" choices might be wrong. -- Find some way to automatically select the right GUI font or fontset, - depending on the default value of 'encoding'. - Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used. - For Windows, the charset_pairs[] table could be used. But how do we know - if a font exists? -- Do keyboard conversion from 'termencoding' to 'encoding' with - convert_input() for Mac GUI, RiscOS GUI, BeOS GUI. -- Add mnemonics from RFC1345 longer than two characters. - Support CTRL-K _{mnemonic}_ -7 In "-- INSERT (lang) --" show the name of the keymap used instead of - "lang". (Ilya Dogolazky) -- Make 'langmap' accept multi-byte characters. -- Do we need the reverse of 'keymap', like 'langmap' but with files and - multi-byte characters? E.g., when using a Russian keyboard. -- Add the possibility to enter mappings which are used whenever normal text - could be entered. E.g., for "f" command. But not in Normal mode. Sort - of opposite of 'langmap'. Use ":tmap" command? -- When breaking a line, take properties of multi-byte characters into - account. The "linebreak" program from Bruno Haible can do it: - ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz - But it's very complicated... - - -Printing: -- Add "page width" to wrap long lines. -- Win32: use a font dialog for setting 'printfont'. Can reuse the code for - the 'guifont' dialog, put the common code in a separate function. -- Win32: when 'printfont' is empty use 'guifont'. -- Unix: Use some dialog box to do the obvious settings (paper size, printer - name, portrait/landscape, etc). -- Win32: add options to print dialog. Patch from Vipin Aravind. -- PostScript: only works for 7-bit ASCII and EBCDIC. Should support - different 'encoding' values somehow. -- Allow specifying the paper size, instead of using a standard size. Same - units as for the margins. -- Support right-to-left text? -8 Make the foreground color darkening function preserve the hue of the - color. - - -Syntax highlighting: -- Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5) - use the patch that keeps using HLF_8 if HLF_WS has not - been given values. - Add section in help files for these highlight groups? -8 Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson) - Should do the same for ":syn on" and ":syn manual". -8 Support "containedin" argument for ":syn include", so that the defined - cluster can be added to existing syntax items. -8 C syntax: Don't highlight {} as errors inside () when used like this: - "({ something })", often used in GCC code. -8 When editing a new file without a name and giving it a name (by writing - it) and 'filetype' is not set, detect the filetype. Avoid doing it for - ":wq file". -8 Make conversion to HTML faster (Write it in C or pre-compile the script). -9 There is still a redraw bug somewhere. Probably because a cached state is - used in a wrong way. I can't reproduce it... -7 Make syntax keyword table configurable. Set number of bits used with - ":syn clear [hashbits]", so that we don't need to reallocate the table. - minimal 4 bits, maximal 16. (Campbell) -7 Be able to change only the background highlighting. Useful for Diff* and - Search highlighting. -8 Allow the user to add items to the Syntax menu sorted, without having to - change this for each release. -8 Add a "matchcontains" for regions: items contained in the start or end - pattern, but not in the body. -8 Add a "keepend-contained" argument: Don't change the end of an item this - one is contained in. Like "keepend" but specified on the contained item, - instead of the containing item. -8 For keywords, allow to define the size of the hash table with ":syn - clear". Change KHASH_ defines into variables stored in buffer struct. - Use something else than linear linked list from the hash table. (Campbell) -8 cpp.vim: In C++ it's allowed to use {} inside (). -8 Some syntax files set 'iskeyword'. When switching to another filetype - this isn't reset. Add a special keyword definition for the syntax rules? - When this is done, use vim.vim syntax highlighting for help file examples, - but without ":" in 'iskeyword' for syntax. -8 Add specific syntax item to match with parens/braces that don't have a - "%" match. :syntax nomatch cMatchError (,{,[,),},] [contained] -8 Highlight the text between two matching parens (e.g., with a grey - background) when on one of the parens or in between them. - Or highlight the matching paren when the cursor is on one. -8 Add a command to jump to the next character highlighted with "Error". -8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop - sequences. Add remark in docs that :if 'term' == "term-name" should be - used. -8 Add @spell cluster to String and Comment groups for many languages. Will - allow spell checking. (Fleiner) -8 When listing syntax items, try to sort the keywords alphabetically. And - re-insert the [] if possible. -8 Make it possible to use color of text for Visual highlight group (like for - the Cursor). -8 "fg" and "bg" don't work in an xterm. Get default colors from xterm with - an ESC sequence. Ideas in: ~/vim/patches/vikas.xtermcolors . -8 Make it possible to only highlight a sub-expression of a match. Like - using "\1" in a ":s" command. -8 Support for deleting syntax items: - :syn keyword cTodo remove this - :syn match cTodo remove "pattern" - :syn region cString remove start="this" end="that" -8 Add possibility to sync on something else, when the syncing in one way - doesn't find match. For HTML: When no {script} is found, try looking for - a '<'. (Fleiner) -7 Replace the synchronizing method with a state machine specification? - Should be able to start at any line in the file, search forwards or - backwards, and use the result of matching a pattern. -7 Use parsing like awk, so that e.g., a ( without a matching ) can be - detected. -8 Make it possible to use "inverted" highlighting, invert the original - character. For Visual mode. (xterm-selection already does this). -8 Highlight non-printable characters with "SpecialChar", linked to - "Special". Display them with the digraph characters, if possible. -7 Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Martin - Dalecki has a patch for Motif) -8 Highlight the clipboard-selection with a highlight group. -8 Be able to reset highlighting to its original (default) values. -7 Be able to write current highlighting to a file as commands, similar to - ":mkvimrc". -8 Improve c.vim: - - Add check for unterminated strings, with a variable to switch it on: - "c_strict_ansi". - - Detect unbalanced "#endif". Requires looking back a long way... -8 Add an option to restrict the updating of syntax highlighting to the - current line while in Insert mode. -8 When guessing value of 'background', the syntax file has already been - loaded (from the .gvimrc). After changing 'background', load it again? -8 Add ":syn resync" command, to re-parse the whole file until the current - display position. -8 Should support "me" offset for a region start pattern. To be used to - allow searching for the end pattern inside the match of the end pattern. - Example: syn region pikeXX start="([^{]" end=")" should work on "()". -8 When using a regexp for "contains=", should delay matching with it until - redrawing happens. Set a flag when a group is added, check this flag when - highlighting starts. -7 Add "semitrans": Add highlighting. E.g., make the text bold, but keep the - colors. And add colors, so that Green+Red becomes Yellow. - E.g. for this html: - <B> bold text <I> italic+bold text </B> italic text </I> -7 Wild idea: Not only set highlighting, but also change what is displayed - (e.g., remove characters, so that "<B>bold</B>" can be shown as "bold"): - :syn region boldstuff start="<B>" display="" end="</B>" display="" -7 CTRL-] checks the highlight group for finding out what the tag is. -7 Add an explanation how a list of words can be used to highlight misspelled - words. -8 Add spell checking. Use "ispell -a" somehow. - ~/vim/patches/wm_vim-5_4d.zip can be used as an example (includes ispell - inside Vim). Gautam Iyer has an example with "aspell". "engspchk" from - Charles Campbell is a good way. Support for approximate-regexps will help - (agrep http://www.tgries.de/agrep/). -7 Command line completion for ":find" should search in 'path'. -8 Add more command line completion for :syntax. -8 Add more command line completion for :highlight. -8 Add more command line completion for :sign. -7 Should find a better way to parse the :syntax and :highlight commands. - Use tables or lists that can be shared by parsing for execution and - completion? -8 Add ColorSchemePost autocommand event, so that scripts can set up their - highlighting. (Salman Halim) -7 Add a few sets of colors (e.g. Borland Turbo C one). With a menu to - select one of the sets. -8 Add offsets to sub-matches: "\(a*\) *"he=e1-1 - 'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch - 2, etc. -8 In Insert mode, when there are typeahead characters, postpone the - highlighting (for "." command). -8 Syncing on comments isn't 100% correct when / / lines mix with / * and * /. - For example: What about a line that starts with / / and contains * /? -8 Ignore / * and * / inside strings, when syncing. -7 Build a few more syntax files from the file "/usr/share/misc/vgrindefs": - ISP, LDL, Icon, ratfor. And check "nedit/source/highlight.c". -6 Add possibility to have background color continue until the right edge of - the window. Useful for comment blocks and function headings. (Rogall) -- Make it possible to add "contains" items for all items in a group. Useful - when extending an already existing syntax file. -- Add line-continuation pattern for non-syncing items too? -- Add possibility to highlight specific columns (for Fortran). Or put a - line in between columns (e.g. for 'textwidth'). - Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20. -- Add possibility to highlight the whole line, including the right margin - (for comment blocks). -- Add 'hlmatch' option: List of flags: - 'c': highlight match for character under the cursor. - 'b': highlight the previous (, and its match. - 'a': highlight all text from the previous ( until its match. - Also for {}, <>, etc.? - 'e': highlight all braces without a match (slow?) - OR: add an argument "cursor" to the syntax command, which means that the - region/match/keyword is only highlighted when the cursor is on it. - (Campbell) - Or do it like Elvis: define text objects and how to highlight them around - the cursor. (Iain Truskett) -7 Make it possible to use all words in the tags files as Keyword. - Can also be done with a script (but it's slow). -7 Make it possible to call a ":" command when a match is found. Should - allow for adding keywords from the text (e.g. variables that are set). - And allows for sections with different highlighting. -7 Add highlight group for commandline: "Commandline". Make sure it - highlights the command line while typing a command, and any output from - messages. And external commands? -8 Make a version that works like less, but with highlighting: read stdin for - text, exit at end of file, don't allow editing, etc. moreim? lessim? -7 SpecialKey highlighting overrules syntax highlighting. Can't give an - unprintable char another color. Would be useful for ^M at end of line. - - -Built-in script language: -8 Add referring to key options with "&t_xx". Both for "echo &t_xx" and - ":let &t_xx =". Useful for making portable mappings. -8 Allow range for ":exec". Pass it on to the executed command. (Webb) -8 exists("&&option") tests if 'option' is actually implemented. Useful for - 'shellslash', for example. -7 Be able to call a function while passing on a variable number of - arguments: - :function Foo(abc, ...) - : call Bar(a:abc, a:*) - Charles Campbell has a patch for this -8 Have a look at VSEL. Would it be useful to include? (Bigham) -8 Add ":fungroup" command, to group function definitions together. When - encountered, all functions in the group are removed. Suggest using an - obscure name to avoid name clashes. Require a ":fungroup END" in the same - sourced file? Assume the group ends at the end of the file. Handle - nested packages? - Alternative: Support packages. {package-name}:{function-name}(). - Packages are loaded automatically when first used, from - $VIMRUNTIME/packages (or use a search path). -7 Make globpath() also work with "**" and upwards search. (Brian Medley) -7 Pre-parse or compile Vim scripts into a bytecode. - 1. Put the bytecode with the original script, with an ":if - has('bytecode')" around it, so that it's only used with a Vim that - supports it. Update the code with a command, can be used in an - autocommand. - 2. Use a ".vic" file (like Python use .pyc). Create it when writing a - .vim file. Problem: distribution. - 3. Use a cache directory for each user. How to recognize which cached - file belongs to a sourced script? -7 Add "n" flag to search() function, just like searchpair(). (Alexey - Marinichev) -8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible. - Aric Blumer has a patch for this. -7 Add argument to winwidth() to subtract the space taken by 'foldcolumn', - signs and/or 'number'. -8 Add functions: - multibyteidx(string, idx) Byte index in multi-byte character. - Patch by Ilya Sher, 2004 Feb 25 - menuprop({name}, {idx}, {what}) - Get menu property of menu {name} item {idx}. - menuprop("", 1, "name") returns "File". - menuprop("File", 1, "n") returns "nmenu - File.Open..." argument. - Patch by Ilya Sher, 2004 Apr 22 - mapname({idx}, mode) return the name of the idx'th mapping. - Patch by Ilya Sher, 2004 Mar 4. - match({pat}, {string} [,start] [,count]) get index of count'th match - Patch by Ilya Sher, 2004 Mar 31 - sprintf(format, arg, ..) How to prevent a crash??? - mousex() mousey() get position of mouse pointer (patch by Ross - Presser) - attributes() return file protection flags "drwxrwxrwx" - mkdir(dir) Create directory - copy(from, to) Copy a file - perl(cmd) call Perl and return string - shorten(fname) shorten a file name, like home_replace() - input(prompt, complete) like input() but do specified completion - inputrl() like input() but right-to-left - virtualmode() add argument to obtain whether "$" was used in - Visual block mode. - tagtype(tag) get type of tag (also checks if it exists) - getacp() Win32: get codepage (Glenn Maynard) - tr(expr, from, to) translate chars (Patch from Ron Aaron, Apr 8 - 2004) - find() find file in 'path' (patch from Johannes - Zellner 2001 Dec 20) - realname() Get user name (first, last, full) - user_fullname() patch by Nikolai Weibull, Nov - 3 2002) - getfperm() file permissions, in form "rwxrwxrwx" - (patch from Nikolai Weibull 2003 Jan 13) - getftype() "file", "dir", "link", "other"? - (patch from Nikolai Weibull 2003 Jan 13) - setbufline() set line in any buffer (patch from Yegappan - Lakshmanan, 2003 Jan 21) - getbufline() get line from any buffer - deletebufline() delete line in any buffer - appendbufline() append line in any buffer - winnr("$") Get number of windows. (patch from Nikolai - Weibull 2003 Jan 13) (another patch from - Yegappan Lakshmanan, 2003 Aug 31) - search() Add optional offset argument. - Add 'n' flag. (patch from Nikolai Weibull - 2003 Jan 13) - sort() Sort a newline-separated string. Also: - ":sort". - libcall() Allow more than one argument. - libcallext() Like libcall(), but using a callback function - to allow the library to execute a command or - evaluate an expression. - confirm() add "flags" argument, with 'v' for vertical - layout and 'c' for console dialog. (Haegg) - Flemming Madsen has a patch for the 'c' flag - (2003 May 13) - system({cmd}, {expr}) Filter {expr} through the shell command - {cmd} and return the result. - (Patch from Yegappan Lakshmanan) - raisewin() raise gvim window (see HierAssist patch for - Tcl implementation ~/vim/HierAssist/ ) - gettext() Translate a message. (Patch from Yasuhiro - Matsumoto) How to get the messages into the - .po files? - strrep() Repeat a string (patch from Christophe Poucet, - 2003 Sep 12, also contains XX) - char2hex() convert char string to hex string. XX - hex2char() convert hex string to char string. XX -7 Make bufname("'0") return the buffer name from mark '0. How to get the - column and line number? col("'0") currently returns zero. -8 argc() returns 0 when using "vim -t tag". How to detect that no file was - specified in any way? To be able to jump to the last edited file. -8 Pass the executable name to the Vim scripts in some way. As v:argv0? -8 Add command arguments with three dashes, passed on to Vim scripts. -8 When starting to source a vim script, delete all functions that it has - previously defined? Avoids using ":fun!" all the time. -7 Add optional arguments to user functions: - :func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17) -6 User functions: Functions local to buffer "b:func()"? -8 Add ":let var[{expr}] = {expr}". When past the end of "var" just ignore. -8 The "= register should be writable, if followed by the name of a variable, - option or environment variable. -8 ":let &option" should list the value of the option. -7 Add synIDlist(), making the whole list of syntax items on the - stack available (separated with '\n'). -8 Add autocommand-event for when a variable is changed: - :au VarChanged {varname} {commands} -8 Add "has("gui_capable")", to check if the GUI can be started. -8 Add possibility to use variables like registers: characterwise (default), - linewise (when ending in '\n'), blockwise (when ending in '\001'). reg0, - rega, reg%, etc. Add functions linewise({expr}), blockwise({expr}) and - charwise({expr}). -7 Make it possible to do any command on a string variable (make a buffer - with one line, containing the string). Maybe add an (invisible) scratch - buffer for this? - result = scratch(string, command) - result = apply(string, command) - result = execute(string, command) - "command" would use <> notation. - Does scratch buffer have a number? Or re-use same number? -7 Add function to generate unique number (date in milliseconds). -7 Automatically load a function from a file when it is called. Need an - option for the search path. (Sekera) -7 Persistent variables: "p:var"; stored in viminfo file and sessions files. -7 Include support for arrays? Patch from Robert Webb. - This is restricted to fixed-size arrays indexed by number. Better: Use - associative arrays: a[5] = 3, a["some"] = 'x'. Implement by translating - into ordinary variables: a[5] is "-a-5", a["some"] is "a-some", a[5][6] is - "a-5-6". But how to do array assignment and concatenation? - Alternative: use dictionaries, like Python. - - -Robustness: -8 This pattern in syntax/java.vim causes a recursive call of regmatch(): - syn match javaStringError +"\([^"\\]\|\\.\)*$+ - A long line with a " in it can cause a crash when it runs out of stack - space (on systems where this isn't caught). How can we catch this for - more systems? - - -Performance: -8 Loading plugins takes startup time. Only load the part that is used to - trigger the rest, and load the rest when it's needed? -8 Turn b_syn_ic and b_syn_containedin into b_syn_flags. -9 Loading menu.vim still takes quite a bit of time. How to make it faster? -8 in_id_list() takes much time for syntax highlighting. Cache the result? -7 setpcmark() shifts the jumplist, this takes quite a bit of time when - jumping around. Instead use an index for the start? -8 When displaying a space with only foreground highlighting, it's the same - as a space without attributes. Avoid displaying spaces for the "~" lines - when starting up in a color terminal. -8 Avoid alloc() for scratch buffer use, esp. in syntax.c. It's very slow on - Win16. -9 Setting GUI options in the console (e.g., 'guifont') should not cause a - redraw. -8 Profiling shows that in_id_list() is used very often for C code. Can this - function be improved? -8 For an existing file, the page size of the swap file is always the - default, instead of using the block size of the device, because the swap - file is created only after setting the block size in mf_open(). How can - this be improved? -8 Set default for 'ttyscroll' to half a screen height? Should speed up - MS-DOS version. (Negri) -7 C syntax highlighting gets a lot slower when adding a region for folding - from { to }. (Charles Campbell) Inserting a "{" is very slow. (dman) -7 HTML syntax highlighting is slow for long lines. Try displaying - http://www.theregister.co.uk/content/4/22908.html. (Andre Pang) -7 Check how performance of loading the wordlist can be improved (adding a - lot of abbreviations). -7 DOS console: Add t_DL support, to make scrolling faster. -7 Compile Ex commands to byte codes. Store byte codes in a vim script file - at the end, after "compiled:. Make it look like a single comment line - for old Vim versions. Insert first line "Vim script compiled <timestamp>. - Only used compiled code when timestamp matches the file stat. - Add command to compile a vim script and add it to the file in-place. - Split Ex command executing into a parsing and executing phase. - Use compiled code for functions, while loops, etc. -8 When editing a file with extremely long lines (e.g., an executable), the - "linerest" in readfile() is allocated twice to be able to copy what was - read so far. Use realloc() instead? Or split the line when allocating - memory fails and "linerest" is big (> 100000)? -8 When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to - compare each pattern with all existing patterns. Use a hash code to avoid - using strcmp() too often? -7 Include turbo_loader patches, speeding up reading a file? - Speed up reading a file by reading it into a fixed-size buffer, creating - the list of indexes in another buffer, and then copying the result into a - memfile block with two copies. Then read the next block into another - fixed-size buffer, create the second list of indexes and copy text from - the two blocks to the memfile block. -7 do_cmdline(): Avoid that the command line is copied to allocated memory - and freed again later all the time. For while loops, and for when called - with an argument that can be messed with. - Generic solution: Make a struct that contains a pointer and a flag that - indicates if the pointer should be freed when replaced. -7 Check that the file size is not more than "sizeof(long)". -- Further improve finding mappings in maphash[] in vgetorpeek() -8 Syntax highlighting is slow when deleting lines. Try in - $VIMRUNTIME/filetype.vim. -- "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of - lines (27000) a few times. Memory fragmentation? -- Have a look at how pdksh does memory allocation (alloc.c). (Dalecki) -- Do profiling on: - - :g/pat/normal cmd - - 1000ii<Esc> - - deleting 10Mbyte worth of lines (netscape binary) - - "[i" and "[d" (Yegappan Lakshmanan) - - ":g/^/m0" on a 450Kbyte file. And the "u". - - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and - "~/vim/test/lockup.pl". - - loading a syntax file to highlight all words not from a dictionary. - - editing a vim script with syntax highlighting on (loading vim.vim). -7 Screen updating can be further improved by only redrawing lines that were - changed (and lines after them, when syntax highlighting was used, and it - changed). - - On each change, remember start and end of the change. - - When inserting/deleting lines, remember begin, end, and line count. -- Use macros/duarte/capicua for profiling. Nvi 1.71 is the fastest! -- When using a file with one long line (1Mbyte), then do "$hhhh", is still - very slow. Avoid calling getvcol() for each "h"? -- Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to - move the previous commands forward each time. Pass count from - normal_cmd() down to do_execreg(). -- Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of - the <Esc> at the end. Make this work faster (disable redrawing). -- Avoid calls to plines() for cursor line, use w_cline_height. -- After ":set nowrap" remove superfluous redraw with wrong hor. offset if - cursor is right of the screen. -8 Make CTRL-C on Unix generate a signal, avoid using select() to check for a - CTRL-C (it's slow). - - -Code size: -8 GUI: When NO_CONSOLE is defined, more code can be excluded. -- Put getline() and cookie in a struct, so only one argument has to be - passed to do_cmdline() and other functions. -8 Make a GUI-only version for Unix? -8 In buf_write _() isn't needed when setting errmsg, do it once when using - it. -7 When compiling with a GUI-only version, the code for cterm colors can be - left out. -8 When compiled with a GUI-only version, the termcap entries for terminals - can be removed. -8 Can the check for libelf in configure.in be removed? - - -Messages: -8 When using ":q" in a changed file, the error says to "add !". Add the - command so that beginners understand it: "use :q!". -8 For 'verbose' level 12 prints commands from source'ed files. How to skip - lines that aren't executed? Perhaps move the echoing to do_cmdline()? -8 Use 'report' for ":bdel"? (Krishna) To avoid these messages when using a - script. -8 "vim --version" output goes to stderr, should be stdout. Can all output - from messages using printf() go to stdout? -- Delete message after new command has been entered and have waited for key. - Perhaps after ten seconds? -- Make message history available in "msg" variables: msg1, msg2, .. msg9. -9 Check handling of overwriting of messages and delays: - Very wrong: errors while redrawing cause endless loop. - When switching to another file and screen scrolls because of the long - message and return must be typed, don't scroll the screen back before - redrawing. -7 Add an option, which is a regexp, that disables warning messages which - match that regexp (Tsirkin). -8 When address range is wrong you only get "Invalid range". Be a bit more - specific: Negative, beyond last line, reverse range? Include the text. -8 Make it possible to ignore errors for a moment ('errorignore'?). Another - option to switch off giving error messages ('errorquiet'?). Also an option - not to give any messages ('quiet')? Or ":quiet on", ":quiet off". - Careful: For a severe error (out of memory), and when the user starts - typing, error messages must be switched back on. - Also a flag to ignore error messages for shell commands (for mappings). -- Option to set time for emsg() sleep. Interrupt sleep when key is typed? - sleep before second message? -8 In Ex silent mode or when reading commands from a file, what exactly is - not printed and what is? Check ":print", ":set all", ":args", ":vers", - etc. At least there should be no prompt. (Smulders) And don't clear the - screen when reading commands from stdin. (Kendall) - --> Make a difference between informative messages, prompts, etc. and - error messages, printing text, etc. -8 Window should be redrawn when resizing at the hit-enter prompt. - Also at the ":tselect" prompt. Find a generic solution for redrawing when - a prompt is present (with a callback function?). - - -Screen updating: -7 Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one - screen line, also if this means the first line doesn't start with the - first character (like what happens with a single line that doesn't fit). -- screen_line(): - - insert/delete character stuff. - - improve delete rest of line (spaces at end of line). -- When moving or resizing window, try to avoid a complete redraw (esp. when - dragging the status line with the mouse). -- When 'lazyredraw' set, don't echo :ex commands? Need a flag to redraw when - waiting for a character. -8 Add a ":refresh [winnr]" command, to force updating a window. Useful from - an event handler where ":normal" can't be used. Also useful when - 'lazyredraw' is set in a mapping. -7 Make 'list' and 'linebreak' work together. -7 Add "nbsp" in 'listchars'? Patch from David Blanchet, 2003 Jul 28. - - -Scrolling: -8 Add "zm" command: scroll horizontally to put the cursor in the middle. -6 Add option to set the overlap for CTRL-F and CTRL-B. (Garhi) -- extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc.. - Also 'e'xecute some commands (search, vertical movements) in all bound - windows. -7 Add 'scrollbind' feature to make the offset of one window with the next - one equal to the window height. When editing one file in both windows it - looks like each window displays a page of the buffer. -- Allow scrolling by dragging with the mouse (grab a character and move it - up/down). Like the "hand" in Acrobat reader. Use Alt-LeftMouse for this? - (Goldfarb) -- Add command to execute some commands (search, vertical movements) in all - bound windows. -- Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to - be bound by regexp searches -- Add "z>" and "z<": scroll sideways one screenfull. (Campbell) -- Add option to set the number of lines when not to scroll, instead of the - fixed number used now (for terminals that scroll slow with a large number - of lines but not with a single line). - - -Autoconf: -8 Should use acconfig.h to define prototypes that are used by autoheader. -8 Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb) - Add a check for the warning, so that "Olimit" can be added automatically? -- Autoconf: Use @datadir@ for the system independent files. Make sure the - system dependent and system independent files are separated. (Leitner). -- Add autoconf check for waitpid()/wait4(). -- Remove fcntl() from autoconf, all systems have it? -- Set default for 'dictionary', add search for dictionary to autoconf. - - -Perl interface: -8 Rename typemap file to something else? -7 Add patch from Benoit Cerrina to integrate Vim and Perl functions better. - Now also works for Ruby (2001 Nov 10) -7 Make buffers accessed as Perl arrays. (Clark) -7 Make it possible to compile with non-ANSI C? -6 Tcl/Tk has the "load" command: load a shared library (.so or .dll). - - -Shared libraries: -6 Add support for loading shared libraries, and calling functions in it. - :libload internal-name libname - :libunload internal-name - :liblist - :libcall internal-name function(arg1, arg2, ...) - :libcall function(arg1, arg2, ...) - libcall() can have only one integer or String argument at the moment. -6 Have a look on how Perl handles loading dynamic libraries. - - -Tags: -8 Add a command to jump to a certain kind of tag. Allow the user to specify - values for the optional fields. E.g., ":tag size type=m". -8 Add a function that returns the line in the tags file for a matching tag. - Can be used to extract more info (class name, inheritance, etc.) (Rico - Hendriks) -7 Count before CTRL-]: jump to N'th match -8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis. -8 When output of ":tselect" is long, getting the more-prompt, should be able - to type the tag number directly. -7 Add a tag-select window. Works like ":cwindow". (Michal Malecki) -7 Add the possibility to use the "-t {tag}" argument multiple times. Open a - window for each tag. -7 Make output of ":tselect" a bit nicer. Use highlighting? -7 Highlight the "tag 1 of >2" message. New highlight group, or same as "hit - bottom" search message. -7 When using ":tag" at the top of the tag stack, should add another entry, - so CTRL-T can bring you back to where you are now AND to where you were - before the previous ":tag" command. (Webb) -7 When using CTRL-] on someClass::someMethod, separate class from method and - use ":ta class:someClass someMethod". - Include C++ tags changes (Bertin). Change "class::func" tag into "func" - with "class=class"? Docs in oldmail/bertin/in.xxx. -7 Add ":tagargs", to set values for fields: - :tagargs class:someclass file:version.c - :tagargs clear - These are then the default values (changes the order of priority in tag - matching). -7 Support for "gtags" and "global"? With ":rtag" command? - There is an example for how to do this in Nvi. - Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi) - The Elvis method is far more flexible, do it that way. -7 Support "col:99" extra field, to position the cursor in that column. With - a flag in 'cpoptions' to switch it off again. -7 Better support for jumping to where a function or variable is used. Use - the id-utils, with a connection to "gid" (Emacs can do it too). Add - ":idselect", which uses an "ID" database (made by "mkid") like "tselect". -7 Add 'taglistfiles' option, show file name and type when listing matching - tags name with CTRL-D completion. Patch from Yegappan Lakshmanan. - - -Security: -- nothing at the moment - - -Win32 GUI: -8 Make debug mode work while starting up (vim -D). Open console window for - the message and input? -7 The Python interface only works with one version of Python, selected at - compile time. Can this be made to work with version 2.1 and 2.2 - dynamically? -7 GvimExt: when there are several existing Vims, move the list to a submenu. - (Mike McCollister) -8 When using "Edit with Vim" for one file it changes directory, when several - files are selected and using "Edit with single Vim" the directory isn't - changed. At least change directory when the path is the same for all - files. Perhaps just use the path of the first file or use the longest - common part of the path. -8 Add font argument to set the lfCharSet. (Bobcik) -8 Somehow automatically detect the system language and set $LANG, so that - gettext and menus work. -8 Could keep console open to run multiple commands, to avoid the need to hit - return in every console. - Also: Look at how Emacs does runs external commands: - http://www.cs.washington.edu/homes/voelker/ntemacs.html. -8 Need a separate PopUp menu for modeless selection. Need two new commands: - Copy selection to clipboard, Paste selection (as typed text). -8 Support copy/paste for other file formats. At least HTML, perhaps RTF. - Add "copy special" and "paste special" commands? -7 Use different default colors, to match the current Windows color scheme. - Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser) -7 Use <C-Tab> to cycle through open windows (e.g., the find dialog). -7 <Esc> should close a dialog. -7 Keep the console for external commands open. Don't wait for a key to be - hit. Re-open it when the user has closed it anyway. Or use a prepended - command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any - prompts. -7 Should be able to set an option so that when you double click a file that - is associated with Vim, you can either get a new instance of Vim, or have - the file added into an already running Vim. -7 The "-P" argument only works for the current codepage. Use wide - functions to find the window title. - - -GUI: -8 Add GTK 2.3 file dialog support. Patch by Grahame Bowland, 2004 Mar 15, - but it doesn't use "initdir" or "dflt". -8 Make inputdialog() work for Photon, Amiga, RiscOS. -- <C--> cannot be mapped. Should be possible to recognize this as a - normal "-" with the Ctrl modifier. -7 Implement ":popup" for other systems than Windows. -8 Implement ":tearoff" for other systems than Win32 GUI. -6 Implement ":untearoff": hide a torn-off menu. -8 When using the scrollbar to scroll, don't move the cursor position. When - moving the cursor: scroll to the cursor position. -9 Make <S-Insert> paste from the clipboard by default. (Kunze) -7 Menu local to a buffer, like mappings. Or local to a filetype? -8 In Buffers menu, add a choice whether selecting a buffer opens it in the - current window, splits the window or uses ":hide". -8 Dragging the mouse pointer outside of a Vim Window should make the text - scroll. Return a value from gui_send_mouse_event() to the machine - specific code to indicate the time in which the event should be repeated. -8 Make it possible to ignore a mouse click when it's used to give Vim (gvim) - window focus. Also when a mouse click is used to bring a window to front. -8 Make the split into system independent code and system specific code more - explicit. There are too many #ifdefs in gui.c. - If possible, separate the Vim code completely from the GUI code, to allow - running them in separate processes. -8 Support a background bitmap. Useful for marking a column. Patch from - Heather Downs (GTK) and Vince Negri (Win32). -7 X11: Support cursorColor resource and "-cr" argument. -8 X11 (and others): CTRL-; is not different from ';'. Set the modifier mask - to include CTRL for keys where CTRL produces the same ASCII code. -7 Add some code to handle proportional fonts? Need to draw each character - separately (like xterm). Also for when a double-width font is not exactly - double-width. (Maeda) -8 Should take font from xterm where gvim was started (if no other default). -8 Selecting font names in X11 is difficult, make a script or something to - select one. Martin Dalecki has a font selector for Motif, but it needs a - bit more work. -7 Motif: use the menu font consistently. Patch from Martin Dalecki 2002 Jan - 11. -8 Visual highlighting should keep the same font (bold, italic, etc.). -8 Add flag to 'guioptions' to not put anything in the clipboard at all? -8 Should support a way to use keys that we don't recognize yet. Add a - command that adds entries to special_keys somehow. How do we make this - portable (X11, Win32, ..)? -7 Add a flag to 'guioptions' that tells not to remove inactive menu items. - For systems where greying-out or removing menu items is very slow. The - menu items would remain visibly normally, but not do anything. -7 Add ":minimize" and ":maximize", which iconize the window and back. - Useful when using gvim to run a script (e.g. 2html.vim). -7 X11: Is it possible to free allocated colors, so that other programs can - use them again? Otherwise, allow disabling allocating the default colors. - Or allocate an own colormap (check UAE). With an option to use it. For - the commandline, "-install" is mostly used for X11 programs. -7 Add command line argument for "gvim" not to start the GUI. Sort of the - inverse of "vim -g". (Vikas) -7 Should support multi-column menus. -- Should add option for where to put the "Help" menu: like Motif at the far - right, or with the other menus (but still at the right). -- Add menu item to "Keep Insert mode". -8 ":mkgvimrc" command, that includes menus. -6 Big change: Move GUI to separate program "vimgui", to make startup of vim a - lot faster, but still be able to do "vim -g" or ":gui". -7 More explicit mouse button binding instead of 'mousemodel'? -7 Add option to set the position of the window on the screen. 'windowpos', - which has a value of "123,456": <x>,<y>. - Or add a command, like ":winsize"? -7 Add toolbar for more GUIs. -8 Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item - name can be chosen free. -7 Make it possible to put the toolbar on top, left, right and/or bottom of - the window? Allows for softkey-like use. -6 Separate the part of Vim that does the editing from the part that runs the - GUI. Communicate through a pseudo-tty. Vim starts up, creates a - pty that is connected to the terminal. When the GUI starts, the pty is - reconnected to the GUI process. When the GUI stops, it is connected to - the terminal again. Also use the pty for external processes, it looks - like a vt100 terminal to them. Vim uses extra commands to communicate GUI - things. -7 Motif: For a confirm() dialog <Enter> should be ignored when no default - button selected, <Esc> should close the dialog. -- Motif steals <F10> from us, to pop up menus with the keyboard. How do we - get it back if we want it? -- Motif: add 3D shading for the menu entries? Patch from Martin Dalecki. -- Paste in Insert mode should not do autowrap etc. Or maybe this should be - changeable with an option? -- Put a nice picture in the icon (but how do we do that?). -7 When using a pseudo-tty Vim should behave like some terminal (vt52 looks - simple enough). Terminal codes to/from shell should be translated. -- Would it be useful to be able to quit the GUI and go back to the terminal - where it was started from? -7 Support "-visual <type>" command line argument. - - -VMS: -- Improvement: rewrite term/TTY handling. -- Improvement: create VMS GTK runtime libraries on OpenVMS 7.1-2 (today GTK - works just on 7.3). - - -Autocommands: -9 Make sure that side effects of autocommands are handled correctly. Don't - execute autocommands when a buffer or window is halfway some changes. - Move all apply_autocmds() calls to a higher level where needed. -8 Add ScriptReadCmd event: used to load remote Vim scripts, e.g. - "vim -u http://mach/path/vimrc". -8 Use another option than 'updatetime' for the CursorHold event. The two - things are unrelated for the user (but the implementation is more - difficult). -8 Also trigger CursorHold in Insert mode? -7 Add autocommand event for when a buffer cannot be abandoned. So that user - can define the action taking (autowrite, dialog, fail) based on the kind - of file. (Yakov Lerner) Or is BufLeave sufficient? -8 Can't use ":normal" in CursorHold autocommands. Make the CursorHold event - insert a special key code, and call the autocommand functions from a - higher level, so that vgetc() isn't used recursively. -8 Autocommands should not change registers. And marks? And the jumplist? - And anything else? -8 Autocommand for when modified files have been found, when getting input - focus again (e.g., FileChangedFocus). - Check when: getting focus, jumping to another buffer, ... -8 Add autocommands, user functions and user commands to ":mkvimrc". -8 Add "TagJumpFile" autocommand: When jumping to another file for a tag. - Can be used to open "main.c.gz" when "main.c" isn't found. -6 Add KeymapChanged event, so that the effects of a different keymap can be - handled (e.g., other font) (Ron Aaron) -7 Add a way to skip an autocommand if going from one *.c file to another *.c - file. -7 When trying to open a directory, don't load the file but trigger an - autocommand event OpenDirectory. -7 Add file type in front of file pattern: <d> for directory, <l> for link, - <x> for executable, etc. <&xxx> for Risc OS. With commas to separate - alternatives. The autocommand is only executed when both the file type - AND the file pattern match. (Leonard) -5 Add option that specifies extensions which are to be discarded from the - file name. E.g. 'ausuffix', with ".gz,.orig". Such that file.c.gz will - trigger the "*.c" autocommands. (Belabas) -7 Add something to break the autocommands for the current event, and for - what follows. Useful for a "BufWritePre" that wants to avoid writing the - file. -8 When editing "tt.gz", which is in DOS format, 'fileformat' stays at - "unix", thus writing the file changes it. Somehow detect that the read - command used dos fileformat. Same for 'fileencoding'. -8 Add buffer-local autocommands? Reduces overhead for autocommands that - trigger often (inserting a character, switching mode). - :au Event <buffer> do-something - E.g.: - :au BufEnter <buffer> menu enable ... - :au BufLeave <buffer> menu disable ... - Patch from Yakov Lerner, including test (2004 Jan 7). -- Add events to autocommands: - Error - When an error happens - NormalEnter - Entering Normal mode - InsertEnter - Entering Insert mode - ReplaceEnter - Entering Replace mode - CmdEnter - Entering Cmdline mode - VisualEnter - Entering Visual mode - CmdUndefined - Like FuncUndefined but for user commands. - *Leave - Leaving the mode - SearchPost - After doing a search command (e.g. to do "M") - PreDirChanged/PostDirChanged - - Before/after ":cd" has been used (for changing the - window title) - BufReadAction - replaces reading a file - BufWriteAction - replaces writing a file - ShutDown - when the system is about to shut down - InsertCharPre - user typed character Insert mode, before inserting the - char. Pattern is matched with text before the cursor. - Set v:char to the character, can be changed. - (not triggered when 'paste' is set). - InsertCharPost - user typed a character in Insert mode, after inserting - the char. - BufModified - When a buffer becomes modified, or unmodified (for - putting a [+] in the window title or checking out the - file from CVS). - BufFirstChange - When making a change, when 'modified' is set. Can be - used to do a :preserve for remote files. - BufChange - after a change was made. Set some variables to indicate - the position and number of inserted/deleted lines, so - that marks can be updated. HierAssist has patch to add - BufChangePre, BufChangePost and RevertBuf. (Shah) - WinResized - When a window has been resized - VimResized - When the Vim window has been resized (SIGWINCH) - patch from Yakov Lerner, 2003 July 24. -- Add autocommand to be executed every so many seconds? For writing the - file now and then ('autosave'). - *'autosave'* *'as'* *'noautosave'* *'noas'* - 'autosave' 'aw' number (default 0) - Automatically write the current buffer to file N seconds after the - last change has been made and when |'modified'| is still set. - Default: 0 = do not autosave the buffer. - Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make - them save the file itself besides the swapfile. - - -Insert mode completion/expansion: -8 When there is no word before the cursor but something like "sys." complete - with "sys.". Works well for C and similar languages. -9 ^X^L completion doesn't repeat correctly. It uses the first match with - the last added line, instead of continuing where the last match ended. - (Webb) -8 The code has become too complex. Redesign it, or at least add proper - comments. -8 Add option to set different behavior for Insert mode completion: - - ignore/match case - - different characters than 'iskeyword' -8 Add expression-expansion, so that the user can define his own kind of - completion. Patch from Taro Muraoka, 2003 Aug 26. -8 Add a command to undo the completion, go back to the original text. -8 Use the class information in the tags file to do context-sensitive - completion. After "foo." complete all member functions/variables of - "foo". Need to search backwards for the class definition of foo. - Should work for C++ and Java. - Even more context would be nice: "import java.^N" -> "io", "lang", etc. -7 When expanding $HOME/dir with ^X^F keep the $HOME (with an option?). -7 Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS - instead of words. -8 Add CTRL-X CTRL-R: complete words from register contents. -8 Add completion of previously inserted texts (like what CTRL-A does). - Requires remembering a number of insertions. -8 Add 'f' flag to 'complete': Expand file names. - Also apply 'complete' to whole line completion. -- Make it possible to search include files in several places. Use the - 'path' option? Can this be done with the dictionary completion (use - wildcards in the file name)? -- Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted). -- Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?). -- Set a mark at the position where the match was found (file mark, could - be in another file). -- Add CTRL-A command in CTRL-X mode: show all matches. -- Make CTRL-X CTRL-L use the 'complete' option? -- Add command in CTRL-X mode to add following words to the completed string - (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W) -- CTRL-X CTRL-F: Use 'path' to find completions. -- CTRL-X CTRL-F: Option to use forward slashes on MS-Windows? -- CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly) -8 Add option 'isexpand', containing characters when doing expansion (so that - "." and "\" can be included, without changing 'iskeyword'). (Goldfarb) - Also: 'istagword': characters used for CTRL-]. - When 'isexpand' or 'istagword' are empty, use 'iskeyword'. -- Allow listing all matches in some way (and picking one from the list). - - -Command line editing: -7 Add commands (keys) to delete from the cursor to the end of the command - line. -8 Custom completion of user commands can't use the standard completion - functions. Add a hook to invoke a user function that returns the type of - completion to be done: "file", "tag", "custom", etc. -- Add flags to 'whichwrap' for command line editing (cursor right at end of - lines wraps to start of line). -- Make editing the command line work like Insert mode in a single-line view - on a buffer that contains the command line history. But this has many - disadvantages, only implement it when these can be solved. Elvis has run - into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012). - - Going back in history and editing a line there would change the history. - Would still need to keep a copy of the history elsewhere. Like the - cmdwin does now already. - - Use CTRL-O to execute one Normal mode command. How to switch to normal - mode for more commands? <Esc> should cancel the command line. CTRL-T? - - To allow "/" and "= need to recursively call getcmdline(), overwrite the - cmdline. But then we are editing a command-line again. How to avoid - that the user gets confused by the stack of command lines? - - Use edit() for normal cmdline editing? Would have to integrate - getcmdline() into edit(). Need to solve conflicts between Insert mode - and Command-line mode commands. Make it work like Korn shell and tcsh. - Problems: - - Insert: completion with 'wildchar' - - Insert: use cmdline abbreviations - - Insert: CTRL-D deletes indent instead of listing matches - - Normal: no CTRL-W commands - - Normal: no ":" commands? - - Normal: allow Visual mode only within one line. - - where to show insert/normal mode message? Change highlighting of - character in first column? - - Implementation ideas: - - Set "curwin" and "curbuf" to the command line window and buffer. - - curwin->w_topline is always equal to curwin->w_cursor.lnum. - - never set 'number', no folding, etc. No status line. - - sync undo after entering a command line? - - use NV_NOCL flag for commands that are not allowed in Command-line - Mode. - - -Command line completion: -8 Change expand_interactively into a flag that is passed as an argument. -8 With command line completion after '%' and '#', expand current/alternate - file name, so it can be edited. Also with modifiers, such as "%:h". -8 When completing command names, either sort them on the long name, or list - them with the optional part inside []. -7 Completion of network shares, patch by Yasuhiro Matsumoto. -7 Completion of ":map x ": fill in the current mapping, so that it can be - edited. (Sven Guckes) -7 Add completion for when entering an expression after CTRL-R= and "=. - (Servatius Brandt) -- For 'wildmenu': Simplify "../bar" when possible. -- When using <Up> in wildmenu mode for a submenu, should go back to the - current menu, not the first one. E.g., ":emenu File.Save<Up>". -8 For ":find" and ":sfind" expand files found in 'path'. -8 Add cmdline completion for the ":debug" command. -8 When using backtick expansion, the external command may write a greeting - message. Add an option or commands to remove lines that match a regexp? -7 When listing matches of files, display the common path separately from the - file names, if this makes the listing shorter. (Webb) -- Add command line completion for ":ilist" and friends, show matching - identifiers (Webb). -8 Add command line completion for "old value" of a command. ":args <key>" - would result in the current list of arguments, which you can then edit. -7 Add command line completion with CTRL-X, just like Insert mode completion. - Useful for ":s/word/xx/". -- Add command to go back to the text as it was before completion started. - Also to be used for <Up> in the command line. -- Add 'wildlongest' option: Key to use to find longest common match for - command line completion (default CTRL-L), like 'wildchar'. (Cregut) - Also: when there are several matches, show them line a CTRL-D. -- Add completion for Environment variables: ":echo $SH<Tab>" -> "$SHELL". - - -Command line history: -- Add "KeyWasTyped" flag: It's reset before each command and set when a - character from the keyboard is consumed. Value is used to decide to put a - command line in history or not. Put line in history if it didn't - completely resulted from one mapping. -- When using ":browse", also put the resulting edit command in the history, - so that it can be repeated. (Demirel) - - -Insert mode: -9 When 'autoindent' is set, hitting <CR> twice, while there is text after - the cursor, doesn't delete the autoindent in the resulting blank line. - (Rich Wales) This is Vi compatible, but it looks like a bug. Rich has a - suggestion for a patch to fix this. -8 When using CTRL-O in Insert mode, then executing an insert command - "a" or "i", should we return to Insert mode after <Esc>? (Eggink) - Perhaps it can be allowed a single time, to be able to do - "<C-O>10axyz<Esc>". Nesting this further is confusing. - ":map <F2> 5aabc<Esc>" works only once from Insert mode. -7 Use CTRL-G <count> to repeat what follows. Useful for inserting a - character multiple times or repeating CTRL-Y. -7 Make ":startinsert" command work directly for functions and scripts? - Also make it possible to append (it's difficult at end of line). - And add ":startreplace" (patch by Charles Campbell, 2004 Jan 9, - http://www.erols.com/astronaut/vim/index.html#Patch) -7 Use 'matchpairs' for 'showmatch': When inserting a character check if it - appears in the rhs of 'matchpairs'. -- In Insert mode (and command line editing?): Allow undo of the last typed - character. This is useful for CTRL-U, CTRL-W, delete and backspace, and - also for characters that wrap to the next line. - Also: be able to undo CTRL-R (insert register). - Possibly use 'backspace'="whole" for a mode where at least a <CR> that - inserts autoindent is undone by a single <BS>. -- Use CTRL-G in Insert mode for an extra range of commands, like "g" in - Normal mode. -- Make 'paste' work without resetting other options, but override their - value. Avoids problems when changing files and modelines or autocommands - are used. -- When typing CTRL-V and a digit higher than 2, only expect two digits. -- Insert binary numbers with CTRL-V b. -- Make it possible to undo <BS>, <C-W> and <C-U>. Bash uses CTRL-Y. - - -'cindent', 'smartindent': -8 Wrong indent for ":" after a method with line break in arguments: - Foo::Foo (int one, - int two) - : something(4) - {} -8 Wrong indent for ":" after a method with multiple lines: - Foo::Foo (int one, int two) - : something(4), - somethingelse(3) - {} -9 Too much indent for "lulu": (Uwe Zeisberger) - int main () - { - if (lala) - do - ++(*lolo); - while (lili - && lele); - lulu; - } -9 Function gets extra indent: (Jamax) - void function(int param) { - if (false) - return; - } -9 brace not indented correctly: - case 'c': if (cond) - { - Should align with "if" in case statement. -7 Allow aligning a closing ")" with the line above, instead of the matching - "(": (Riehm) if (asdfasdf && - asdf - ) -8 Java: Inside an anonymous class, after an "else" or "try" the indent is - too small. (Vincent Bergbauer) -8 In C++ it's possible to have {} inside (): (Kirshna) - func( - new String[] { - "asdf", - "asdf" - } - ); -7 Separate "(0" option into inside/outside a function (Zellner): - func( - int x) // indent like "(4" - { - if (a - && b) // indent like "(0" -8 Strange problem with this code, "hello" is indented wrong: (Gary Holloway) - main() { char foo[] = "/*"; - /* This is a comment; the indentation of C - * source below this comment gets messed up due to the string above. - */ - hello -9 Using "{" in a comment: (Helmut Stiegler) - if (a) - { - if (b) - { - // { - } - } <-- this is indented incorrect -9 Wrong indent for cino=(4, removing the (void) fixes it: (Zellner) - (void) MyFancyFunction( - argument); -- Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the - indent to 0 should be switched on/off. -7 Support ANSI style function header, with each argument on its own line. -- "[p" and "]p" should use 'cindent' code if it's on (only for the first - line). -- Add option to 'cindent' to set indent for comments outside of {}? -- Make a command to line up a comment after a code line with a previous - comment after a code line. Can 'cindent' do this automatically? -7 Add 'j' flag to 'formatoptions': Remove comment leader when joining lines. -- When 'cindent'ing a '}', showmatch is done before fixing the indent. It - looks better when the indent is fixed before the showmatch. (Webb) -- Add option to make indenting work in comments too (for commented-out - code), unless the line starts with "*". -- Don't use 'cindent' when doing formatting with "gq"? -- When formatting a comment after some text, insert the '*' for the new line - (indent is correct if 'cindent' is set, but '*' doesn't get inserted). -8 When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the - 'x' flag always uses the first match. Need to continue looking for more - matches of "*" and remember all characters that could end the comment. -- For smartindent: When typing 'else' line it up with matching 'if'. -- 'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where - lines start with "\item". -- Support this style of comments (with an option): (Brown) - /* here is a comment that - is just autoindented, and - nothing else */ -- Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi". -7 Use Tabs for the indent of starting lines, pad with spaces for - continuation lines. Allows changing 'tabstop' without messing up the - indents. - And/or: Add option to copy indent as-is, without changing spaces to tabs. - also for 'autoindent'. 'keeptabs': when set don't change the tabs and - spaces used for indent, when the indent remains the same or increases. - - -Java: -8 Can have {} constructs inside parens. Include changes from Steve - Odendahl? -8 Recognize "import java.util.Vector" and use $CLASSPATH to find files for - "[i" commands and friends. -- For files found with 'include': handle "*" in included name, for Java. - (Jason) -- How to make a "package java.util" cause all classes in the package to be - searched? Also for "import java.util.*". (Mark Brophy) - - -'comments': -8 When formatting C comments that are after code, the "*" isn't repeated - like it's done when there is no code. And there is no automatic wrapping. - Recognize comments that come after code. Should insert the comment leader - when it's "#" or "//". -7 When using "comments=fg:--", Vim inserts three spaces for a new line. - When hitting a TAB, these spaces could be removed. -7 The 'n'esting flag doesn't do the indenting of the last (rightmost) item. -6 Make strings in 'comments' option a RE, to be able to match more - complicated things. (Phillipps) Use a special flag to indicate that a - regexp is used. -8 Make the 'comments' option with "/* * */" lines only repeat the "*" line - when there is a "/*" before it? Or include this in 'cindent'? - - -Virtual edit: -8 Make the horizontal scrollbar work to move the text further left. -7 Add a mode where the cursor is only allowed to go one character after the - end of the line? -7 Allow specifying it separately for Tabs and beyond end-of-line? - - -Text objects: -8 Add test script for text object commands "aw", "iW", etc. -7 Add text object for current search pattern: "a/" and "i/". Makes it - possible to turn text highlighted for 'hlsearch' into a Visual area. -8 Add "gp" and "gP" commands: insert text and make sure there is a single - space before it, unless at the start of the line, and after it, unless at - the end of the line or before a ".". -7 Add objects with backwards extension? Use "I" and "A". Thus "2dAs" - deletes the current and previous sentence. (Jens Paulus) -7 Add "g{" and "g}" to move to the first/last character of a paragraph - (instead of the line just before/after a paragraph as with "{" and "}"). -8 Add "a'" and 'a"': a single or double quoted string. (Tim Chase) - Patch from Taro Muraoka (2003 Dec 16). -6 Ignore comment leaders for objects. Make "das" work in reply-email. -5 Make it possible to use syntax group matches as a text object. For - example, define a "ccItem" group, then do "da<ccItem>" to delete one. - Or, maybe just define "dai", delete-an-item, to delete the syntax item the - cursor is on. - - -Select mode: -8 In blockwise mode, typed characters are inserted in front of the block, - backspace deletes a column before the block. (Steve Hall) -7 Alt-leftmouse starts block mode selection in MS Word. -7 Add Cmdline-select mode. Like Select mode, but used on the command line. - - Change gui_send_mouse_event() to pass on mouse events when 'mouse' - contains 'C' or 'A'. - - Catch mouse events in ex_getln.c. Also shift-cursor, etc., like in - normal_cmd(). - - remember start and end of selection in cmdline_info. - - Typing text replaces the selection. - - -Visual mode: -- When dragging the Visual selection with the mouse and 'scrolloff' is zero, - behave like 'scrolloff' is one, so that the text scrolls when the pointer - is in the top line. -8 When using "I" or "A" in Visual block mode, short lines do not get the new - text. make it possible to add the text to short lines too, with padding - where needed. -7 With a Visual block selected, "2x" deletes a block of double the width, - "3y" yanks a block of triple width, etc. -7 When selecting linewise, using "itext" should insert "text" at the start - of each selected line. -8 What is "R" supposed to do in Visual mode? -8 Make Visual mode local to the buffer. Allow changing to another buffer. - When starting a new Visual selection, remove the Visual selection in any - other buffer. (Ron Aaron) -8 Support dragging the Visual area to drop it somewhere else. (Ron Aaron, - Ben Godfrey) -7 Support dragging the Visual area to drop it in another program, and - receive dropped text from another program. (Ben Godfrey) -7 With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of - a <CR>. The entered lines are repeated over the Visual area. -7 CTRL-V :s should substitute only in the block, not to whole lines. (David - Young is working on this) -7 Filtering a block should only apply to the block, not to the whole lines. - When the number of lines is increased, add lines. When decreased, padd with - spaces or delete? Use ":`<,`>" on the command line. -8 After filtering the Visual area, make "gv" select the filtered text? - Currently "gv" only selects a single line, not useful. -7 Don't move the cursor when scrolling? Needed when the selection should - stay the same. Scroll to the cursor at any movement command. With an - option! -7 In Visual block mode, need to be able to define a corner on a position - that doesn't have text? Also: when using the mouse, be able to select - part of a TAB. Even more: Add a mode where the cursor can be on a screen - position where there is no text. When typing, add spaces to fill the gap. - Other solution: Always use curswant, so that you can move the cursor to - the right column, and then use up/down movements to select the line, - without changing the column. -6 ":left" and ":right" should work in Visual block mode. -7 For Visual mode: Command to do a search for the string in the marked area. - Only when fewer than two lines. Use "g/" and "gb". Patch from Yegappan - Lakshmanan. -7 CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the - current buffer. -7 CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area. -6 In non-Block mode, "I" should insert the same text in front of each line, - before the first non-blank, "gI" in column 1. -6 In non-Block mode, "A" should append the same text after each line. -6 ":'<,'>source" should read the selected lines and ":source" them. -6 When in blockwise visual selection (CTRL-V), allow cursor to be placed - right of the line. Could also allow cursor to be placed anywhere on a TAB - or other special character. -6 Add commands to move selected text, without deselecting. - - -More advanced repeating commands: -- Add "." command for visual mode: redo last visual command (e.g. ":fmt"). -7 Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember - the command line so that it can be repeated? -- Add "." command after operator: repeat last command of same operator. E.g. - "c." will repeat last change, also when "x" used since then (Webb). - "y." will repeat last yank. - "c2." will repeat the last but one change? - Also: keep history of Normal mode commands, add command to list the history - and/or pick an older command. -- History stack for . command? Use "g." command. - - -Mappings and Abbreviations: -8 Let ":verbose map xx" report where the mapping was set, just like with - ":verbose set". -8 When "0" is mapped (it is a movement command) this mapping should not be - used after typing another number, e.g. "20l". (Charles Campbell) - Is this possible without disabling the mapping of the following command? -8 Should mapping <C-A> and <C-S-A> both work? -7 ":abbr b byte", append "b " to an existing word still expands to "byte". - This is Vi compatible, but can we avoid it anyway? -8 ":verbose map" could show the script where the mapping was defined. - m_script_ID can be used. -8 To make a mapping work with a prepended "x to select a register, store the - last _typed_ register name and access it with "&. -8 Add ":amap", like ":amenu". -8 Add ":cab!", abbreviations that only apply to Command-line mode and not to - entering search strings. -8 Add a flag to ":abbrev" to eat the character that triggers the - abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and - not the <Space>. -8 Allow mapping of CTRL-@ (anywhere in the LHS). -8 Give a warning when using CTRL-C in the lhs of a mapping. It will never - (?) work. -7 ":verbose map" should display where a mapping was defined, like ":verbose - set". -8 Add a way to save a current mapping and restore it later. Use a function - that returns the mapping command to restore it: mapcmd()? mapcheck() is - not fool proof. How to handle ambiguous mappings? -7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation? -7 Allow mapping "Q" and "Q}" at the same time. Need to put a flag with "Q", - that it needs an extra character before it can match. See Vile 'maplonger' - option. -7 When someone tries to unmap with a trailing space, and it fails, try - unmapping without the trailing space. Helps for ":unmap xx | unmap yy". -7 Make it possible to map 'wildchar', but only when it's a special character - (like CTRL-E). Currently it's only recognized when typed. Useful for - mapping a key to do something and then completion. -7 Add a mapping that works always, for remapping the keyboard. -6 Context-sensitive abbreviations: Specify syntax group(s) in which the - abbreviations are to be used. -- Add mappings that take arguments. Could work like the ":s" command. For - example, for a mouse escape sequence: - :mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l -- Make it possible to include a <Nul> in the lhs and rhs of a mapping. -- Add command to repeat a whole mapping ("." only repeats the last change in - a mapping). Also: Repeat a whole insert command, including any mappings - that it included. Sort-of automatic recording? -- Make it possible to undo all the commands from a mapping, including a - trailing unfinished command, e.g. for ":map K iX^[r". -- Add an option to ":map" that makes it display the special keys in - <> notation (e.g. <CR> instead of ^M). Or just always do this? -- Include an option (or flag to 'cpoptions') that makes errors in mappings - not flush the rest of the mapping (like nvi does). -- Use context sensitiveness of completion to switch abbreviations and - mappings off for :unab and :unmap. -6 When using mappings in Insert mode, insert characters for incomplete - mappings first, then remove them again when a mapping matches. Avoids - that characters that are the start of some mapping are not shown until you - hit another character. -- Add optional <Number> argument for mappings: - :map <Number>q ^W^W<Number>G - :map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l - :map q<Char> :s/<Char>/\u\0/g - Or implicit: - :map q <Register>d<Number>$ -- Add mappings for replace mode: ":rmap". How do we then enter mappings for - non-replace Insert mode? -- Add separate mappings for Visual-character/block/line mode? -6 Alias for Normal mode commands, works like :substitute? Would allow - mappings with arguments. -- Add 'mapstop' command, to stop recursive mappings. -- List mappings that have a raw escape sequence both with the name of the key - for that escape sequence (if there is one) and the sequence itself. -- List mappings: Once with special keys listed as <>, once with meta chars as - <M-a>, once with the byte values (octal?). Sort of "spell mapping" command? -- When entering mappings: Add the possibility to enter meta keys like they - are displayed, within <>: <M-a>, <~@> or <|a>. -- Allow multiple arguments to :unmap. -- Command to show keys that are not used and available for mapping - ":freekeys". -- Allow any character except white space in abbreviations lhs (Riehm). - - -Incsearch: -- Add a limit to the number of lines that are searched for 'incsearch'? -- When no match is found and the user types more, the screen is redrawn - anyway. Could skip that. Esp. if the line wraps and the text is scrolled - up every time. -- Temporarily open folds to show where the search ends up. Restore the - folds when going to another line. -- When incsearch used and hitting return, no need to search again in many - cases, saves a lot of time in big files. (Slootman wants to work on this?) - When not using special characters, can continue search from the last match - (or not at all, when there was no match). See oldmail/webb/in.872. -- With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other - key to copy matched word to search pattern (Alexander Schmid). - - -Searching: -8 Add a mechanism for recursiveness: "\(([^()]*\@@[^()]*)\)\@r". \@@ stands - for "go recursive here" and \@r marks the recursive atom. -item stack to allow matching (). One side is "push X on - the stack if previous atom matched". Other side is "match with top of - stack, pop it when it matches". Use "\@pX" and "\@m"? - Example: \((\@p).\{-}\@m\)* -7 Add an option to accept a match at the cursor position. Also for - search(). (Brett) -7 Add pattern item to use properties of Unicode characters. In Perl it's - "\p{L}" for a letter. See Regular Expression Pocket Reference. -7 When 'rightleft' is set, the search pattern should be displayed right to - left as well? See patch of Dec 26. (Nadim Shaikli) -8 Would it be possible to allow ":23,45/pat/flags" to search for "pat" in - lines 23 to 45? Or does this conflict with Ex range syntax? -8 Allow identical pairs in 'matchpairs'. Restrict the search to the current - line. -7 Allow longer pairs in 'matchpairs'. Use ~/vim/macros/matchit.vim as an - example. -8 Make it possible to define the character that "%" checks for in - #if/#endif. For nmake it's !if/!endif. -- For "%" command: set hierarchy for which things include other things that - should be ignored (like "*/" or "#endif" inside /* */). - Also: use "%" to jump from start to end of syntax region and back. - Alternative: use matchit.vim -8 "/:/e+1" gets stuck on a match at the end of the line. Do we care? -8 A pattern like "\([^a]\+\)\+" takes an awful long time. Recognize that - the recursive "\+" is meaningless and optimize for it. - This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$". -7 Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and - "\d". -7 Add a way to specify characters as hex, octal or <C-M> form. Could be - \%1ax, \%200o and \%<C-M>. Also \%1234u for multi-byte chars. -8 Flags that apply to the whole pattern. - This works for all places where a regexp is used. - Add "\q" to not store this pattern as the last search pattern? -8 Add an argument after ":s/pat/str/" for a range of matches. For example, - ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line. -8 Add an option not to use 'hlsearch' highlighting for ":s" and ":g" - commands. (Kahn) It would work like ":noh" is used after that command. - Also: An extra flag to do this once, and a flag to keep the existing - search pattern. -- Add \%h{group-name}; to search for a specific highlight group. - Add \%s{syntax-group}; to search for a specific syntax group. -- Support Perl regexp. Use PCRE (Perl Compatible RE) package. (Shade) - Or translate the pattern to a Vim one. - Don't switch on with an option for typed commands/mappings/functions, it's - too confusing. Use "\@@" in the pattern, to avoid incompatibilities. -7 Add POSIX regexp, like Nvi, with 'extended' option? It's like very-magic. -- Remember flags for backreferenced items, so that "*" can be used after it. - Check with "\(\S\)\1\{3}". (Hemmerling) -- Add flags to search command (also for ":s"?): - i ignore case - I use case - p use Perl regexp syntax (or POSIX?) - v use Vi regexp syntax - f forget pattern, don't keep it for "n" command - F remember pattern, keep it for "n" command - Perl uses these too: - e evaluate the right side as an expression (Perl only) - m multiple line expression (we don't need it) - o compile only once (Perl only) - s single line expression (we don't need it) - x extended regexp (we don't need it) - When used after ":g" command, backslash needed to avoid confusion with the - following command. - Add 'searchflags' for default flags (replaces 'gdefault'). -- Add command to display the last used substitute pattern and last used - pattern. (Margo) Maybe make it accessible through a register (like "/ - for search string)? -7 Use T-search algorithm, to speed up searching for strings without special - characters. See C't article, August 1997. -- Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are - equivalent (for Unix filenames). -- Add 'v' flag to search command: enter Visual mode, with the matching text - as Visual area. (variation on idea from Bertin) -- Searching: "/this//that/" should find "that" after "this". -- Add global search commands: Instead of wrapping at the end of the buffer, - they continue in another buffer. Use flag after search pattern: - a for the next file in the argument list - f for file in the buffer list - w for file edited in a window. - e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for - ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask - before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No - Save-all/hide-All/Quit) ". -- ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler) -- Special characters in patterns: - Inside []: - \012 octal character - \0x1a hex character - \0<BS> \0<Esc>: special character -7 When searching with 'n' give message when getting back where the search - first started. Remember start of search in '/ mark. -7 Add option that scrolls screen to put cursor in middle of screen after - search always/when off-screen/never. And after a ":tag" command. Maybe - specify how many lines below the screen causes a redraw with the cursor in - the middle (default would be half a screen, zero means always). -6 Support multiple search buffers, so macros can be made without side - effects. -7 From xvim: Allow a newline in search patterns (also for :s, can delete - newline). Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc. - [not in xvim:] Add option to switch on matches crossing ONE line boundary. -7 Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron) - Also ":dselect". - - -Undo: -- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not - possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a", - etc. Postpone saving for undo until something is really inserted? -8 When Inserting a lot of text, it can only be undone as a whole. Make undo - sync points at every line or word. Could recognize the start of a new - word (white space and then non-white space) and backspacing. - Can already use CTRL-G u, but that requires remapping a lot of things. -8 Make undo more memory-efficient: Compare text before and after change, - only remember the lines that really changed. -7 Add undo for a range of lines. Can change these back to a previous - version without changing the rest of the file. Stop doing this when a - change includes only some of these lines and changes the line count. Need - to store these undo actions as a separate change that can be undone. -7 Add an undo tree: When making a change, instead of clearing any future - undo (thus redo) info, make a new branch. How to navigate through the - undo tree? -- For u_save() include the column number. This can be used to set '[ and ']. - And in the future the undo can be made more efficient (Webb). -- In out-of-memory situations: Free allocated space in undo, and reduce the - number of undo levels (with confirmation). -- Instead of [+], give the number of changes since the last write: [+123]. - When undoing to before the last write, change this to a negative number: - [-99]. -- With undo with simple line delete/insert: optimize screen updating. -- When executing macro's: Save each line for undo only once. -- Store undo info in a file that survives until the next edit. Then it's - possible to undo to before the current editing session. Combined with - viminfo? -- When doing a global substitute, causing almost all lines to be changed, - undo info becomes very big. Put undo info in swap file?? - - -Buffer list: -8 Add patch from Charles Campbell to have ":0file!" remove the name of the - current buffer. (2003 June 17) -7 Command to execute a command in another buffer: ":inbuf {bufname} {cmd}". - Also for other windows: ":inwin {winnr} {cmd}". How to make sure that - this works properly for all commands, and still be able to return to the - current buffer/window? E.g.: ":inbuf xxx only". -8 Add File.{recent_files} menu entries: Recently edited files. - Ron Aaron has a plugin for this: mru.vim. -8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check - inode too. -7 Add another number for a buffer, which is visible for the user. When - creating a new buffer, use the lowest number not in use. (or the highest - number in use plus one?) -7 Offer some buffer selection from the command line? Like using ":ls" and - asking for a buffer number. (Zachmann) -- When starting to edit a file that is already in the buffer list, use the - file name argument for the new short file name. (Webb) -- Add an option to make ":bnext" and ":bprev" wrap around the end of the - buffer list. Also for ":next" and ":prev"? -7 Add argument to ":ls" which is a pattern for buffers to list. - E.g. ":ls *.c". (Thompson) -7 Add expansion of buffer names, so that "*.c" is expanded to all buffer - names. Needed for ":bdel *.c", ":bunload *.c", etc. -8 Support for <afile> where a buffer name is expected. -8 Some commands don't use line numbers, but buffer numbers. '$' - should then mean the number of the last buffer. E.g.: "4,$bdel". -7 Add an option to mostly use slashes in file names. Separately for - internal use and for when executing an external program? - - -Swap (.swp) files: -8 If writing to the swap file fails, should try to open one in another - directory from 'dir'. Useful in case the file system is full and when - there are short file name problems. -8 Also use the code to try using a short file name for the backup and swap - file for the Win32 and Dos 32 bit versions. -8 When a file is edited by root, add $LOGNAME to know who did su. -8 When the edited file is a symlink, try to put the swap file in the same - dir as the actual file. Adjust FullName(). Avoids editing the same file - twice (e.g. when using quickfix). Also try to make the name of the backup - file the same as the actual file? - Use the code for resolve()? -7 Store the options 'fileencoding', 'fileformat', etc. in the swapfile, - because they change what will be written to the file. Requires adding - another block to the swapfile. -7 When using 64 bit inode numbers, also store the top 32 bits. Add another - field for this, using part of bo_fname[], to keep it compatible. -7 When editing a file on removable media, should put swap file somewhere - else. Use something like 'r' flag in 'viminfo'. 'diravoid'? - Also: Be able to specify minimum disk space, skip directory when not - enough room. -7 Add a configure check for which directory should be used: /tmp, /var/tmp - or /var/preserve. -- Add an option to create a swap file only when making the first change to - the buffer. (Liang) Or only when the buffer is not read-only. -- Add option to set "umask" for backup files and swap files (Antwerpen). - 'backupumask' and 'swapumask'? Or 'umaskback' and 'umaskswap'? -- When editing a readonly file, don't use a swap file but read parts from the - original file. Also do this when the file is huge (>'maxmem'). We do - need to load the file once to count the number of lines? Perhaps keep a - cached list of which line is where. - - -Viminfo: -7 Can probably remove the code that checks for a writable viminfo file, - because we now do the chown() for root, and others can't overwrite someone - else's viminfo file. -8 Add argument to keep the list of buffers when Vim is started with a file - name. (Schild) -8 Keep the last used directory of the file browser (File/Open menu). -8 Remember the last used register for "@@". -8 Remember a list of last accessed files. To be used in the - "File.Open Recent" menu. Default is to remember 10 files or so. - Also remember which files have been read and written. How to display - this? -7 Also store the ". register (last inserted text). -7 Make it possible to store buffer names in viminfo file relative to some - directory, to make them portable over a network. (Aaron) -6 Store a snapshot of the currently opened windows. So that when quitting - Vim, and then starting again (without a file name argument), you see the - same files in the windows. Use ":mksession" code? -- Make marks present in .viminfo usable as file marks: Display a list of - "last visited files" and select one to jump to. - - -Modelines: -8 Before trying to execute a modeline, check that it looks like one (valid - option names). If it's very wrong, silently ignore it. - Ignore a line that starts with "Subject: ". -- When an option value is coming from a modeline, do not carry it over to - another edited file? Would need to remember the value from before the - modeline setting. -- Allow setting a variable from a modeline? Only allow using fixed strings, - no function calls, to avoid a security problem. -- Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for - .cpp files. -- Support the "abbreviate" command in modelines (Kearns). Careful for - characters after <Esc>, that is a security leak. -- Add option setting to ask user if he wants to have the modelines executed - or not. Same for .exrc in local dir. - - -Options: -8 Make ":mksession" store buffer-specific options for the specific buffer. -8 With ":mksession" always store the 'sessionoptions' option, even when - "options" isn't in it. (St-Amant) -7 Setting an option always sets "w_set_curswant", while this is only - required for a few options. Only do it for those options to avoid the - side effect. -8 When using ":mksession", also store a command to reset all options to - their default value, before setting the options that are not at their - default value. -8 Should ":mksession" restore the current directory when writing the - session, or the directory where the session file is? Probably need a word - in 'sessionoptions' to make a choice: - "curdir" (cd to current directory when session file was generated) - "sessiondir" (cd to directory of session file) - "nodir" (don't cd at all) -8 Make "old" number options that really give a number of effects into string - options that are a comma separated list. The old number values should - also be supported. -8 Add commands to save and restore an option, which also preserves the flag - that marks if the option was set. Useful to keep the effect of setting - 'compatible' after ":syntax on" has been used. -7 There is 'titleold', why is there no 'iconold'? (Chazelas) -7 Make 'scrolloff' a global-local option, so that it can be different in the - quickfix window, for example. (Gary Holloway) -7 Add plugins for formatting. Should be able to make a choice depending on - the language of a file (English/Korean/Japanese/etc.). - - -External commands: -8 When filtering text, redirect stderr so that it can't mess up the screen - and Vim doesn't need to redraw it. Also for ":r !cmd". -4 Set separate shell for ":sh", piping "range!filter", reading text "r !ls" - and writing text "w !wc". (Deutsche) Allow arguments for fast start (e.g. - -f). -4 Allow direct execution, without using a shell. -4 Run an external command in the background. But how about I/O in the GUI? - Careful: don't turn Vim into a shell! -4 Add feature to disable using a shell or external commands. - - -Multiple Windows: -7 "vim -oO file ..." use both horizontal and vertical splits. -8 Add CTRL-W T: go to the top window in the column of the current window. - And CTRL-W B: go to bottom window. -7 Use CTRL-W <Tab>, like alt-tab, to switch between buffers. Repeat <Tab> - to select another buffer (only loaded ones?), <BS> to go back, <Enter> to - select buffer, <Esc> to go back to original buffer. -7 Support tabs in a window. Either manually setup or for buffers of a - certain type. (Patch for GTK 1.2 from Christian Michon, 2004 Jan 6) -7 Add a 'winfixwidth' option, similar to 'winfixheight'. -6 Add an option to resize the shell when splitting and/or closing a window. - ":vsp" would make the shell wider by as many columns as needed for the new - window. Specify a maximum size (or use the screen size). ":close" would - shrink the shell by as many columns as come available. (Demirel) -7 When starting Vim several times, instantiate a Vim server, that allows - communication between the different Vims. Feels like one Vim running with - multiple top-level windows. Esp. useful when Vim is started from an IDE - too. Requires some form of inter process communication. -- Support a connection to an external viewer. Could call the viewer - automatically after some seconds of non-activity, or with a command. - Allow some way of reporting scrolling and cursor positioning in the viewer - to Vim, so that the link between the viewed and edited text can be made. - - -Marks: -8 When cursor is first moved because of scrolling, set a mark at this - position. (Rimon Barr) Use '-. -8 Add a command to jump to a mark and make the motion inclusive. g'm and g`m? -8 The '" mark is set to the first line, even when doing ":next" a few times. - Only set the '" mark when the cursor was really moved in a file. -8 Make `` and '', which would position the new cursor position in the middle - of the window, restore the old topline (or relative position) from when - the mark was set. -7 Make a list of file marks in a separate window. For listing all buffers, - matching tags, errors, etc. Normal commands to move around. Add commands - to jump to the mark (in current window or new window). Start it with - ":browse marks"? -6 Add a menu that lists the Marks like ":marks". (Amerige) -8 Make it possible to delete marks. Charles Campbell has a patch that does - this with the markclear() function (2004 Jan 9). And the ":delmark" - command (2004 Feb 9) -7 For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the - text at the mark. Highlight the column with the mark. -7 Highlight each mark in some way (With "Mark" highlight group). - Or display marks in a separate column, like 'number' does. -7 Use d"m to delete rectangular area from cursor to mark m (like Vile's \m - command). -7 Try to keep marks in the same position when: - - replacing with a line break, like in ":s/pat/^M/", move marks after the - line break column to the next line. (Acevedo) - - inserting/deleting characters in a line. -5 Include marks for start/end of the current word and section. Useful in - mappings. -6 Add "unnamed mark" feature: Like marks for the ":g" command, but place and - unplace them with commands before doing something with the lines. - Highlight the marked lines somehow. - - -Digraphs: -7 Make "ga" show the digraph for a character, if it exists. - Also the keymap? -- Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line - below/above). -- Use digraph table to tell Vim about the collating sequence of special - characters? -8 Add command to remove (all) digraphs. (Brown) -7 Support different sets of digraphs (depending on the character set?). At - least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32). - - -Writing files: -- In vim_rename(), should lock "from" file when deleting "to" file for - systems other than Amiga. Avoids problems with unexpected longname to - shortname conversion. -8 write mch_isdevice() for Amiga, Mac, VMS, etc. -8 When appending to a file, Vim should also make a backup and a 'patchmode' - file. -8 'backupskip' doesn't write a backup file at all, a bit dangerous for some - applications. Add 'backupelsewhere' to write a backup file in another - directory? Or add a flag to 'backupdir'? -7 The 'directory' option supports changing path separators to "%" to make - file names unique, also support this for 'backupdir'. (Mikolaj Machowski) -6 Add an option to write a new, numbered, backup file each time. Like - 'patchmode', e.g., 'backupmode'. -6 Make it possible to write 'patchmode' files to a different directory. - E.g., ":set patchmode=~/backups/*.orig". (Thomas) -6 Add an option to prepend something to the backup file name. E.g., "#". - Or maybe allow a function to modify the backup file name? -8 Only make a backup when overwriting a file for the first time. Avoids - losing the original when writing twice. (Slootman) -7 On non-Unix machines, also overwrite the original file in some situations - (file system full, it's a link on an NFS partition). -7 When editing a file, check that it has been change outside of Vim more - often, not only when writing over it. E.g., at the time the swap file is - flushed. Or every ten seconds or so (use the time of day, check it before - waiting for a character to be typed). -8 When a file was changed since editing started, show this in the status - line of the window, like "[time]". - Make it easier to reload all outdated files that don't have changes. - Automatic and/or with a command. - - -Substitute: -8 Make it easier to replace in all files in the argument list. E.g.: - ":argsub/oldword/newword/". Works like ":argdo %s/oldword/newword/g|w". -- :s///p prints the line after a substitution. -- With :s///c replace \&, ~, etc. when showing the replacement pattern. -8 With :s///c allow scrolling horizontally when 'nowrap' is effective. - Also allow a count before the scrolling keys. -- Add number option to ":s//2": replace second occurrence of string? Or: - :s///N substitutes N times. -- Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.: - ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do - any replacements, 'u' undo last substitution. -7 Substitute in a block of text. Use {line}.{column} notation in an Ex - range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the - last line column 5. -5 Add commands to bookmark lines, display bookmarks, remove bookmarks, - operate on lines with bookmarks, etc. Like ":global" but with the - possibility to keep the bookmarks and use them with several commands. - (Stanislav Sitar) - - -Mouse support: -7 Win32: Add patch for 5-button mouse. (Michael Geddes 2001 Nov 26) -8 Add 'o' flag to 'mouse'? -7 Be able to set a 'mouseshape' for the popup menu. -8 Add 'mouse' flag, which sets a behavior like Visual mode, but automatic - yanking at the button-up event. Or like Select mode, but typing gets you - out of Select mode, instead of replacing the text. (Bhaskar) -7 Checkout sysmouse() for FreeBSD console mouse support. -- Implement mouse support for the Amiga console. -- Using right mouse button to extend a blockwise selection should attach to - the nearest corner of the rectangle (four possible corners). -- Precede mouse click by a number to simulate double clicks?!? -- When mouse click after 'r' command, get character that was pointed to. - - -Crypt and security: -8 Also crypt the swapfile, each block separately. Change mf_write() and - mf_read(). How to get b_p_key to these functions? -7 Support a stronger encryption. Jason Holt implemented AES (May 6 2003). -8 Lock all used memory so that it doesn't get swapped to disk (uncrypted). - Patch by Jason Holt, 2003 May 23. - - -Argument list: -6 Add command to put all filenames from the tag files in the argument list. - When given an argument, only use the files where that argument matches - (like `grep -l ident`) and jump to the first match. -6 Add command to form an args list from all the buffers? - - -Registers: -8 Don't display empty registers with ":display". (Etienne) -8 Make the # register writable, so that it can be restored after jumping - around in windows. -8 Add put command that overwrites existing text. Should also work for - blocks. Useful to move text around in a table. Works like using "R ^R r" - for every line. -6 When yanking into the unnamed registers several times, somehow make the - previous contents also available (like it's done for deleting). What - register names to use? g"1, g"2, etc.? -- When appending to a register, also report the total resulting number of - lines. Or just say "99 more lines yanked", add the "more". -- When inserting a register in Insert mode with CTRL-R, don't insert comment - leader when line wraps? -- The ":@r" commands should take a range and execute the register for each - line in the range. -- Add "P" command to insert contents of unnamed register, move selected text - to position of previous deleted (to swap foo and bar in " + foo") -8 Should be able to yank and delete into the "/ register. - How to take care of the flags (offset, magic)? -7 Add ! register, for shell commands. (patch from Grenie) - -Debug mode: -7 Add something to enable debugging when a remote message is received. -8 Add breakpoints for setting an option -8 Add breakpoits for assigning to a variable. -7 Add a watchpoint in the debug mode: An expression that breaks execution - when evaluating to non-zero. -7 Store the history from debug mode in viminfo. -7 Make the debug mode history available with histget() et al. - - -Various improvements: -8 Add ":rename" command: rename the file of the current buffer and rename - the buffer. Buffer may be modified. -7 Add the MzScheme interface. Patch on http://iamphet.nm.ru/scheme/ - (Sergey Khorev) -6 In the quickfix window statusline add the command used to get the list of - errors, e.g. ":make foo", ":grep something *.c". -6 Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5) -7 Support using ":vert" with User commands. Add expandable items <vert>. - Do the same for ":browse" and ":confirm"? - For ":silent" and ":debug" apply to the whole user command. -7 Allow a window not to have a statusline. Makes it possible to use a - window as a buffer-tab selection. -7 Add an invisible buffer which can be edited. For use in scripts that want - to manipulate text without changing the window layout. -8 Add a command to revert to the saved version of file; undo or redo until - all changes are gone. -8 Make 'statusline' local, so that each window can have a different value. - But should it also be local to a buffer? (Yegappan Lakshmanan has a patch, - 2002 feb 15) -7 Add a ":cpfile", go in the other direction as ":cnfile". -6 "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri) -8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's - done for filetype detection. Patch from Walter Briscoe, 2003 Jul 1. -8 Add "--remote-fail": When contacting the server fails, exit Vim. - Add "--remote-self": When contacting the server fails, do it in this Vim. - Overrules the default of "--remote-send" to fail and "--remote" to do it - in this Vim. -8 When Vim was started without a server, make it possible to start one, as - if the "--servername" argument was given. ":startserver <name>"? -8 No address range can be used before the command modifiers. This makes - them difficult to use in a menu for Visual mode. Accept the range and - have it apply to the following command. -8 Add the possibility to set 'fileformats' to force a format and strip other - CR characters. For example, for "dos" files remove CR characters at the - end of the line, so that a file with mixed line endings is cleaned up. - To just not display the CR characters: Add a flag to 'display'? -7 Add a "-@ filelist" argument: read file names from a file. (David Kotchan - has a patch for it) -7 Some compilers give error messages in which the file name does not have a - path. Be able to specify that 'path' is used for these files. -8 Add term entries for function keys on xterm with alt and ctrl (new in pl - 94). E.g., Control adds ";5" in "<Esc>[20;5~". Find a generic way to - prepend a modifier in console mode, to avoid having to specify each - individual modified key. - Steve Wall has a patch (2002 Mar 12) for adding function keys up to 37, - with modifiers. -7 Xterm sends <Esc>O3F for <M-End>. Similarly for other <M-Home>, <M-Left>, - etc. Combinations of Alt, Ctrl and Shift are also possible. Recognize - these to avoid inserting the raw byte sequence, handle like the key - without modifier (unless mapped). -8 Add ":breakdel *": delete all breakpoints. -7 Support ":browse edit" in console, using explorer.vim? -6 Add "gG": like what "gj" is to "j": go to the N'th window line. -8 Add command like ":normal" that accepts <Key> notation like ":map". -9 Support ACLs on more systems. -7 Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be - highlighted differently. -8 Allow using "**" as a wildcard in commands like ":next" and ":args". -8 Provide a way to avoid wildcard expansion. Use double quotes, like in the - shell? :edit "my[file].txt" (currently works if there is no "myf.txt") -7 Add a message area for the user. Set some option to reserve space (above - the command line?). Use an ":echouser" command to display the message - (truncated to fit in the space). -7 Add %s to 'keywordprg': replace with word under the cursor. (Zellner) -8 Support printing on Unix. Can use "lpansi.c" as an example. (Bookout) -8 Add put command that replaces the text under it. Esp. for blockwise - Visual mode. -7 Enhance termreponse stuff: Add t_CV(?): pattern of term response, use - regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV. -7 Add "g|" command: move to N'th column from the left margin (after wrapping - and applying 'leftcol'). Works as "|" like what "g0" is to "0". -7 Add patch from Wall for this one ( ~/Mail/oldmail/wall/in.00019 ): - 'flipcase' variable: upper/lowercase pairs. - Insert comma's between pairs and allow a range, make it look like - 'isfname'. E.g. ":set flipcase=a-zA-Z,xX,23-33:143-153". The colon to - separate the from and to part is optional. -7 Support setting 'equalprg' to a user function name. -9 Add cursor-column highlighting. Enable it with 'cursorcolumn' option, set - highlighting with "CursorColumn" group. Useful for aligning text. - Also cursor-row highlighting. - Patch from Yasuhiro Matsumoto for underlining the cursor line, 2004 Mar 24. - Alternatie: when 'number' is set highlight the number of the current line. -7 Highlight the characters after the end-of-line differently. -7 When 'whichwrap' contains "l", "$dl" should join lines? -8 Include a connection to an external program through a pipe? See patches - from Felbinger for a mathematica interface. - Or use emacs server kind of thing? -8 Add an argument to configure to use $CFLAGS and not modify it? (Mooney) -8 Enabling features is a mix of configure arguments and defines in - feature.h. How to make this consistent? Feature.h is required for - non-unix systems. Perhaps let configure define CONF_XXX, and use #ifdef - CONF_XXX in feature.h? Then what should min-features and max-features do? -8 Add "g^E" and "g^Y", to scroll a screen-full line up and down. -6 Add ":timer" command, to set a command to be executed at a certain - interval, or once after some time has elapsed. (Aaron) -8 Add ":confirm" handling in open_exfile(), for when file already exists. -8 Use confirm/dialog stuff to ask the user, when a file has changed outside - of Vim, if he wants to reload it. Triggered when focus gained, after - shell command, when entering another buffer, etc.. - Also do this when editing a new file, and another application creates - the file before doing ":w" in Vim. - Also check if the file protection has changed. When checking a file into - RCS it is made read-only, when checking out it is made read-write. -8 When quitting with changed files, make the dialog list the changed file - and allow "write all", "discard all", "write some". The last one would - then ask "write" or "discard" for each changed file. Patch in HierAssist - does something like this. (Shah) -7 Use growarray for replace stack. -7 Have a look at viH (Hellenic or Greek version of Vim). But a solution - outside of Vim might be satisfactory (Haritsis). -3 Make "2d%" work like "d%d%" instead of "d2%"? -8 Make "more" prompt accept command characters, like "hit-enter" prompt? - Or extend it with more commands, like "less": 'b' for back, 'j' for one - line down, etc. -8 For the "--more--" prompt, support the 'b'ack command for more commands. - Possible implementation: Do it at a very low level, caching the lines that - are on the screen (with highlight attributes). Avoids that changes have - to be made for all functions that list something. -7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same - buffer. Make jumplist remember the last ten accessed buffers? -- Keep a list of most recently used files for each window, use "[o" to go - back (older file) and "]n" to go forward (newer file) (like ^O and ^I for - jumps) (Webb). Use ":files" and ":ls" to list the files in history order. -7 Add a history of recently accessed buffer. Maybe make "2 CTRL-^" jump to - the 2nd previously visited buffer, "3 CTRL-^" to the third, etc. Or use - "3 g CTRL-^" for this? -7 Add an option to set the width of the 'number' column. Eight positions is - often more than needed. Or adjust the width to the length of the file? - Add patch that adds 'numberlen' option. (James Harvey) - Other patch with min and max from Emmanuel Renieris (2002 Jul 24) - Other patch without an option by Gilles Roy (2002 Jul 25) -- Add code to disable the CAPS key when going from Insert to Normal mode. -- Set date/protection/etc. of the patchfile the same as the original file. -- Use growarray for termcodes[] in term.c -- Add <window-99>, like <cword> but use filename of 99'th window. -7 Add a way to change an operator to always work characterwise-inclusive - (like "v" makes the operator characterwise-exclusive). "x" could be used. -- Make a set of operations on list of names: expand wildcards, replace home - dir, append a string, delete a string, etc. -- Remove mktemp() and use tmpname() only? Ctags does this. -- When replacing environment variables, and there is one that is not set, - turn it into an empty string? Only when expanding options? (Hiebert) -- Option to set command to be executed instead of producing a beep (e.g. to - call "play newbeep.au"). -- Add option to show the current function name in the status line. More or - less what you find with "[[k", like how 'cindent' recognizes a function. - (Bhatt). -- "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for - blockwise registers). -- Add 'timecheck' option, on by default. Makes it possible to switch off the - timestamp warning and question. (Dodt). -- Add an option to set the time after which Vim should check the timestamps - of the files. Only check when an event occurs (e.g., character typed, - mouse moved). Useful for non-GUI versions where keyboard focus isn't - noticeable. -9 When using ":w <fname>" it's possible that this file is loaded in another - buffer. Give a warning right away, don't wait for a shell command. -- Make 'smartcase' work even though 'ic' isn't set (Webb). -7 Add ":justify" command. Patch from Vit Stradal 2002 Nov 25. -7 When formatting text, allow to break the line at a number of characters. - Use an option for this: 'breakchars'? Useful for formatting Fortran code. -- Add flag to 'formatoptions' to be able to format book-style paragraphs - (first line of paragraph has larger indent, no empty lines between - paragraphs). Complements the '2' flag. Use '>' flag when larger indent - starts a new paragraph, use '<' flag when smaller indent starts a new - paragraph. Both start a new paragraph on any indent change. -8 Add 'formatexpr' option: Used for formatting operator "gq" instead of the - builtin formatting or 'formatprg'. -8 Allow using a trailing space to signal a paragraph that continues on the - next line (MIME text/plain; format=flowed, RFC 2646). Can be used for - continuous formatting. Could use 'autoformat' option, which specifies a - regexp which triggers auto-formatting (for one line). - ":set autoformat=\\s$". -- Be able to redefine where a sentence stops. Use a regexp pattern? -7 Add command "g)" to go to the end of a sentence, "g(" to go back to the - end of a sentence. (Servatius Brandt) -- Be able to redefine where a paragraph starts. For "[[" where the '{' is - not in column 1. -6 Add ":cdprev": go back to the previous directory. Need to remember a - stack of previous directories. We also need ":cdnext". -7 Should ":cd" for MS-DOS go to $HOME, when it's defined? -- Make "gq<CR>" work on the last line in the file. Maybe for every operator? -8 findmatchlimit() should be able to skip comments. Solves problem of - matching the '{' in /* if (foo) { */ (Fiveash) -- findmatch() should be adjusted for Lisp. See remark at get_lisp_indent(). - Esp. \( and \) should be skipped. (Dorai Sitaram, incomplete patch Mar 18) -- Add more redirecting of Ex commands: - :redir @> register (append) - :redir # bufname - :redir #> bufname (append) - :redir = variable - :redir => variable (append) -- Setting of options, specifically for a buffer or window, with - ":set window.option" or ":set buffer.option=val". Or use ":buffer.set". - Also: "buffer.map <F1> quit". -6 Would it be possible to change the color of the cursor in the Win32 - console? (Klaus Hast) -- Add :delcr command: - *:delcr* - :[range]delcr[!] Check [range] lines (default: whole buffer) for lines - ending in <CR>. If all lines end in <CR>, or [!] is - used, remove the <CR> at the end of lines in [range]. - A CTRL-Z at the end of the file is removed. If - [range] is omitted, or it is the whole file, and all - lines end in <CR> 'textmode' is set. {not in Vi} -- Should integrate addstar() and file_pat_to_reg_pat(). -- When working over a serial line with 7 bit characters, remove meta - characters from 'isprint'. -- Use fchdir() in init_homedir(), like in FullName(). -- In win_update(), when the GUI is active, always use the scrolling area. - Avoid that the last status line is deleted and needs to be redrawn. -- That "cTx" fails when the cursor is just after 'x' is Vi compatible, but - may not be what you expect. Add a flag in 'cpoptions' for this? More - general: Add an option to allow "c" to work with a null motion. -- Give better error messages by using errno (strerror()). -- Give "Usage:" error message when command used with wrong arguments (like - Nvi). -- Make 'restorescreen' option also work for xterm (and others), replaces the - SAVE_XTERM_SCREEN define. -7 Support for ":winpos" In xterm: report the current window position. -- Give warning message when using ":set t_xx=asdf" for a termcap code that - Vim doesn't know about. Add flag in 'shortmess'? -6 Add ":che <file>", list all the include paths which lead to this file. -- For a commandline that has several commands (:s, :d, etc.) summarize the - changes all together instead of for each command (e.g. for the rot13 - macro). -- Add command like "[I" that also shows the tree of included files. -- Add command like ":ts" that shows the output of "[I" and asks for a match - to jump to. (Zellner) -- ":set sm^L" results in ":set s", because short names of options are also - expanded. Is there a better way to do this? -- Add ":@!" command, to ":@" like what ":source!" is to ":source". -8 Add ":@:!": repeat last command with forceit set. -- Should be possible to write to a device, e.g. ":w! /dev/null". -- Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty. -- ":cab map test ^V| je", ":cunab map" doesn't work. This is vi compatible! -- CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down - if it is not the first or last window. -- Include-file-search commands should look in the loaded buffer of a file (if - there is one) instead of the file itself. -7 Change 'nrformats' to include the leader for each format. Example: - nrformats=hex:$,binary:b,octal:0 - Add setting of 'nrformats' to syntax files. -- 'path' can become very long, don't use NameBuff for expansion. -- When unhiding a hidden buffer, put the same line at top of the window as - the one before hiding it. Or: keep the same relative cursor position (so - many percent down the windows). -- Make it possible for the 'showbreak' to be displayed at the end of the - line. Use a comma to separate the part at the end and the start of the - line? Highlight the linebreak characters, add flag in 'highlight'. -- Some string options should be expanded if they have wildcards, e.g. - 'dictionary' when it is "*.h". -- Use a specific type for number and boolean options, making it possible to - change it for specific machines (e.g. when a long is 64 bit). -- Add option for <Insert> in replace mode going to normal mode. (Nugent) -- Add a next/previous possibility to "[^I" and friends. -- Add possibility to change the HOME directory. Use the directory from the - passwd file? (Antwerpen) -- When doing "[^I" or "[^D" add position to tag stack. -- Add command to put current position to tag stack: ":tpush". -8 Add commands to push and pop all or individual options. ":setpush tw", - ":setpop tw", ":setpush all". Maybe pushing/popping all options is - sufficient. ":setflush" resets the option stack? - How to handle an aborted mapping? Remember position in tag stack when - mapping starts, restore it when an error aborts the mapping? -- Use a builtin grep command for ":grep"? Makes it possible to add the - column number. Can use the code of ":helpgrep". - Also support using "**" in filename, so that a directory tree can be - searched. -- Change ":fixdel" into option 'fixdel', t_del will be adjusted each time - t_bs is set? (Webb) -- "gc": goto character, move absolute character positions forward, also - counting newlines. "gC" goes backwards (Weigert). -- When doing CTRL-^, redraw buffer with the same topline (Demirel). Store - cursor row and window height to redraw cursor at same percentage of window - (Webb). -- Besides remembering the last used line number of a file, also remember the - column. Use it with CTRL-^ et. al. -- Check for non-digits when setting a number option (careful when entering - hex codes like 0xff). -- Add option to make "." redo the "@r" command, instead of the last command - executed by it. Also to make "." redo the whole mapping. Basically: redo - the last TYPED command. -- Support URL links for ^X^F in Insert mode, like for "gf". -- Support %name% expansion for "gf" on Windows. -- Make "gf" work on "file://c:/path/name". "file:/c:/" and "file:///c:/" - should also work? -- Add 'urlpath', used like 'path' for when "gf" used on an URL? -8 When using "gf" on an absolute file name, while editing a remote file - (starts with scp:// or http://) should prepend the method and machine - name. -- When finding an URL or file name, and it doesn't exist, try removing a - trailing '.'. -- Add ":path" command modifier. Should work for every command that takes a - file name argument, to search for the file name in 'path'. Use - find_file_in_path(). -- Highlight control characters on the screen: Shows the difference between - CTRL-X and "^" followed by "X" (Colon). -- Integrate parsing of cmdline command and parsing for expansion. -- Create a program that can translate a .swp file from any machine into a - form usable by Vim on the current machine. -- Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have - a readonly file. ":noro!" will reset all 'ro' flags. -- Add a variant of CTRL-V that stops interpretation of more than one - character. For entering mappings on the command line where a key contains - several special characters, e.g. a trailing newline. -- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine - the two into a regex for searching. (Ned Konz) -- Make '2' option in 'formatoptions' also work inside comments. -- Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt) -- When window size changed (with the mouse) and made too small, set it back - to the minimal size. -- Add "]>" and "[<", shift comment at end of line (command; /* comment */). -- Should not call cursorcmd() for each vgetc() in getcmdline(). -- ":split file1 file2" adds two more windows (Webb). -- Don't give message "Incomplete last line" when editing binary file. -- Add ":a", ":i" for preloading of named buffers. -- Allow autowrite when doing ":e file" (with an option 'eaw'). -- Allow a "+command" argument before each file name in the Vim command line: - "vim +123 file1 +234 file2 +345 file3". ??? -- When entering text, keep other windows on same buffer updated (when a line - entered)? -- Check out how screen does output optimizing. Apparently this is possible - as an output filter. -- In dosub() regexec is called twice for the same line. Try to avoid this. -- Window updating from memline.c: insert/delete/replace line. -- Optimize ml_append() for speed, esp. for reading a file. -- V..c should keep indent when 'ai' is set, just like [count]cc. -- Updatescript() can be done faster with a string instead of a char. -- Screen updating is inefficient with CTRL-F and CTRL-B when there are long - lines. -- Uppercase characters in ex commands can be made lowercase? -8 Add option to show characters in text not as "|A" but as decimal ("^129"), - hex ("\x81") or octal ("\201") or meta (M-x). Nvi has the 'octal' option - to switch from hex to octal. Vile can show unprintable characters in hex - or in octal. -7 Tighter integration with xxd to edit binary files. Make it more - easy/obvious to use. Command line argument? -- How does vi detect whether a filter has messed up the screen? Check source. - After ":w !command" a wait_return? -- Improve screen updating code for doput() (use s_ins()). -- With 'p' command on last line: scroll screen up (also for terminals without - insert line command). -- Use insert/delete char when terminal supports it. -- Optimize screen redraw for slow terminals. -- Optimize "dw" for long row of spaces (say, 30000). -- Add "-d null" for editing from a script file without displaying. -- In Insert mode: Remember the characters that were removed with backspace - and re-insert them one at a time with <key1>, all together with <key2>. -- Amiga: Add possibility to set a keymap. The code in amiga.c does not work - yet. -- Implement 'redraw' option. -- Add special code to 'sections' option to define something else but '{' or - '}' as the start of a section (e.g. one shiftwidth to the right). -- Add 'indent' option: Always use this amount of indent when starting a new - line and when formatting text. -- Use pipes for filtering on Unix. Requires using fork() to be able to read - and write at the same time, or some select() mechanism. -7 Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy". Only needs - implementing ":w" to stdout in the buffer that was read from stdin. -8 Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd". Vile can - do it. -- Add commands like ]] and [[ that do not include the line jumped to. -- When :unab without matching "from" part and several matching "to" parts, - delete the entry that was used last, instead of the first in the list. -- Add text justification option. -- Set boolean options on/off with ":set paste=off", ":set paste=on". -- After "inv"ing an option show the value: ":set invpaste" gives "paste is - off". -- Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR. -- When a file cannot be opened but does exist, give error message. -- Amiga: When 'r' protection bit is not set, file can still be opened but - gives read errors. Check protection before opening. -- When writing check for file exists but no permission, "Permission denied". -- If file does not exists, check if directory exists. -- MSDOS: although t_cv and t_ci are not set, do invert char under cursor. -- Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex - commands. -- ":set -w all": list one option per line. -- Amiga: test for 'w' flag when reading a file. -- :table command (Webb) -- Add new operator: clear, make area white (replace with spaces): "g ". -- Make it possible for a user to define a new operator. Implementation with - internal scripting language or Perl? -- Add command to ":read" a file at a certain column (blockwise read?). -- Add sort of replace mode where case is taken from the old text (Goldfarb). -- Allow multiple arguments for ":read", read all the files. -- Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel). -- Add 'searchdir' option: Directories to search for file name being edited - (Demirel). -- Modifier for the put command: Change to linewise, charwise, blockwise, etc. -- Add commands for saving and restoring options ":set save" "set restore", - for use in macro's and the like. -- Keep output from listings in a window, so you can have a look at it while - working in another window. Put cmdline in a separate window? -- Add possibility to put output of ex commands in a buffer or file, e.g. for - ":set all". ":r :set all"? -- 'edit' option: When off changing the buffer is not possible (Really - read-only mode). -- When the 'equalalways' option is set, creating a new window should not - result in windows to become bigger. Deleting a window should not result in - a window to become smaller (Webb). -- When resizing the whole Vim window, the windows inside should be resized - proportionally (Webb). -- Include options directly in option table, no indirect pointers. Use - mkopttab to make option table? -- When doing ":w dir", where "dir" is a directory name, write the current - file into that directory, with the current file name (without the path)? -- Support for 'dictionary's that are sorted, makes access a lot faster - (Haritsis). -- Add "^Vrx" on the command line, replace with contents of register x. Used - instead of CTRL-R to make repeating possible. (Marinichev) -- Add "^Vb" on the command line, replace with word before or under the - cursor? -- Option to make a .swp file only when a change is made (Templeton). -- Support mapping for replace mode and "r" command (Vi doesn't do this)? -5 Add 'ignorefilecase' option: Ignore case when expanding file names. - ":e ma<Tab>" would also find "Makefile" on Unix. -8 Sorting of filenames for completion is wrong on systems that ignore case - of filenames. Add 'ignorefncase' option. When set, case in filenames is - ignored for sorting them. Patch by Mike Williams: - ~/vim/patches/ignorefncase. Also change what matches? Or use another - option name. -8 Should be able to compile Vim in another directory, with $(srcdir) set to - where the sources are. Add $(srcdir) in the Makefile in a lot of places. - (Netherton) -6 Make it configurable when "J" inserts a space or not. Should not add a - space after "(", for example. -5 When inserting spaces after the end-of-line for 'virtualedit', use tabs - when the user wants this (e.g., add a "tab" field to 'virtualedit'). - (Servatius Brandt) - - -From Elvis: -- Use "instman.sh" to install manpages? -- Add ":alias" command. -- fontchanges recognized "\\fB" etc. -- Search patterns: - \@ match word under cursor. - but do: - \@w match the word under the cursor? - \@W match the WORD under the cursor? -8 ":window" command: - :win + next window (up) - :win ++ idem, wrapping - :win - previous window (down) - :win -- idem, wrapping - :win nr to window number "nr" - :win name to window editing buffer "name" -7 ":cc" compiles a single file (default: current one). 'ccprg' option is - program to use with ":cc". Use ":compile" instead of ":cc"? - - -From Nvi: -- 'searchincr' option, alias for 'incsearch'? -- 'leftright' option, alias for 'nowrap'? -- Have a look at "vi/doc/vi.chart", for Nvi specialties. -8 Add 'keytime', time in 1/10 sec for mapping timeout? -- Add 'filec' option as an alternative for 'wildchar'. -6 Support Nvi command names as an alias: - :bg :hide - :fg fname :buf fname (with 'hidden' set?) - :dis b :ls - :Edit fname :split fname - :Fg fname :sbuf fname (with 'hidden' set?) - :Next :snext (can't do this, already use :Next) - :Previous :sprevious - :Tag :stag - - -From xvi: -- CTRL-_ : swap 8th bit of character. -- Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet) - - -From vile: -- When horizontal scrolling, use '>' for lines continuing right of a window. -- Support putting .swp files in /tmp: Command in rc.local to move .swp files - from /tmp to some directory before deleting files. - - -Far future and "big" extensions: -- Make it possible to run Vim inside a window of another program. For - Xwindows this can be done with XReparentWindow(). - For GTK Neil Bird has a patch to use Vim like a widget. -- Add debugger interface. Implementation for gdb by Xavier de Gaye, - assisted by Mikolaj Machowski. Should work like an IDE. Try to keep it - generic. Also found here: http://skawina.eu.org/mikolaj/vimgdb - To be able to start the debugger from inside Vim: For GUI run a program - with a netbeans connection; for console: start a program that splits the - terminal, runs the debugger in one window and reconnect Vim I/O to the - other window. - Wishes for NetBeans commands: - - make it possible to have 'defineAnnoType' also handle terminal colors. - - send 'balloonText' events for the cursor position (using CursorHold ?) - in terminal mode. -- Add a way of scrolling that leaves the cursor where it is. Especially - when using the scrollbar. Typing a cursor-movement command scrolls back - to where the cursor is. -- Make it easy to setup Vim for groups of users: novice vi users, novice - Vim users, C programmers, xterm users, GUI users,... -- Change layout of blocks in swap file: Text at the start, with '\n' in - between lines (just load the file without changes, except for Mac). - Indexes for lines are from the end of the block backwards. It's the - current layout mirrored. -- Make it possible to edit a register, in a window, like a buffer. -- Add stuff to syntax highlighting to change the text (upper-case keywords, - set indent, define other highlighting, etc.). -- Mode to keep C-code formatted all the time (sort of on-line indent). -- Several top-level windows in one Vim session. Be able to use a different - font in each top-level window. -- Allow editing above start and below end of buffer (flag in 'virtualedit'). -- Smart cut/paste: recognize words and adjust spaces before/after them. -- Add column numbers to ":" commands ":line1,line2[col1,col2]cmd". Block - can be selected with CTRL-V. Allow '$' (end of line) for col2. -- Add open mode, use it when terminal has no cursor positioning. -- Special "drawing mode": a line is drawn where the cursor is moved to. - Backspace deletes along the line (from jvim). -- Implement ":Bset", set option in all buffers. Also ":Wset", set in all - windows, ":Aset, set in all arguments and ":Tset", set in all files - mentioned in the tags file. - Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???) - Add search string: "B/*.c/%s/.."? Or ":F/*.c/%s/.."? -- Support for underlining (underscore-BS-char), bold (char-BS-char) and other - standout modes switched on/off with , 'overstrike' option (Reiter). -- Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five - lines, "3vitextESC" will insert "text" in three lines, etc.. -4 Recognize l, #, p as 'flags' to EX commands: - :g/RE/#l shall print lines with line numbers and in list format. - :g/RE/dp shall print lines that are deleted. - POSIX: Commands where flags shall apply to all lines written: list, - number, open, print, substitute, visual, &, z. For other commands, flags - shall apply to the current line after the command completes. Examples: - :7,10j #l Join the lines 7-10 and print the result in list -- Allow two or more users to edit the same file at the same time. Changes - are reflected in each Vim immediately. Could work with local files but - also over the internet. See http://www.codingmonkeys.de/subethaedit/. - - -vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl: -vim: set fo+=n : diff --git a/en/usr_09.txt b/en/usr_09.txt index 87b95b4f5..fcfbcb65a 100644 --- a/en/usr_09.txt +++ b/en/usr_09.txt @@ -1,4 +1,4 @@ -*usr_09.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*usr_09.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -129,7 +129,7 @@ select text in a standard manner. The X Window system also has a standard system for using the mouse. Unfortunately, these two standards are not the same. Fortunately, you can customize Vim. You can make the behavior of the mouse -work like an X Window system mouse or a Microsoft Windows mouse. The following +work like an X Window system mouse or a Microsoft Windows mouse. The following command makes the mouse behave like an X Window mouse: > :behave xterm diff --git a/en/usr_10.txt b/en/usr_10.txt index 0aebeeff6..b094a7296 100644 --- a/en/usr_10.txt +++ b/en/usr_10.txt @@ -1,4 +1,4 @@ -*usr_10.txt* For Vim version 6.3. Last change: 2004 Mar 12 +*usr_10.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -437,7 +437,8 @@ If the string you insert contains a newline, the "I" acts just like a Normal insert command and affects only the first line of the block. The "A" command works the same way, except that it appends after the right -side of the block. +side of the block. And it does insert text in a short line. Thus you can +make a choice whether you do or don't want to append text to a short line. There is one special case for "A": Select a Visual block and then use "$" to make the block extend to the end of each line. Using "A" now will append the text to the end of each line. @@ -699,7 +700,7 @@ as input. The output of this command then replaces the selected block. Because this summarizes badly if you are unfamiliar with UNIX filters, take a look at an example. The sort command sorts a file. If you execute the following command, the unsorted file input.txt will be sorted and written to -output.txt. (This works on both UNIX and Microsoft Windows.) > +output.txt. (This works on both UNIX and Microsoft Windows.) > sort <input.txt >output.txt diff --git a/en/usr_11.txt b/en/usr_11.txt index 53a9f555c..01e3155f4 100644 --- a/en/usr_11.txt +++ b/en/usr_11.txt @@ -1,4 +1,4 @@ -*usr_11.txt* For Vim version 6.3. Last change: 2004 Apr 23 +*usr_11.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -181,7 +181,7 @@ something wrong. It may be one of these two situations. either it was changed after the crash (perhaps you recovered it earlier, but didn't delete the swap file?), or else the file was saved before the crash but after the last write of the swap file (then you're lucky: you - don't even need that old swap file). Vim will warn you for this with this + don't even need that old swap file). Vim will warn you for this with this extra line: NEWER than swap file! ~ @@ -193,17 +193,17 @@ Sometimes the line [cannot be read] ~ -will appear under the name of the swap file. This can be good or bad, +will appear under the name of the swap file. This can be good or bad, depending on circumstances. It is good if a previous editing session crashed without having made any -changes to the file. Then a directory listing of the swap file will show -that it has zero bytes. You may delete it and proceed. +changes to the file. Then a directory listing of the swap file will show +that it has zero bytes. You may delete it and proceed. -It is slightly bad if you don't have read permission for the swap file. You -may want to view the file read-only, or quit. On multi-user systems, if you +It is slightly bad if you don't have read permission for the swap file. You +may want to view the file read-only, or quit. On multi-user systems, if you yourself did the last changes under a different login name, a logout -followed by a login under that other name might cure the "read error". Or +followed by a login under that other name might cure the "read error". Or else you might want to find out who last edited (or is editing) the file and have a talk with them. diff --git a/en/usr_12.txt b/en/usr_12.txt index 6bbbcf224..1e2ee2475 100644 --- a/en/usr_12.txt +++ b/en/usr_12.txt @@ -1,4 +1,4 @@ -*usr_12.txt* For Vim version 6.3. Last change: 2004 May 01 +*usr_12.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -273,7 +273,7 @@ To display a man page for the word under the cursor, use this: > For example, you want to know the return value of "strstr()" while editing this line: - if (strstr(input, "aap") == ) ~ + if ( strstr (input, "aap") == ) ~ Move the cursor to somewhere on "strstr" and type "\K". A window will open to display the man page for strstr(). @@ -345,7 +345,7 @@ program files, for example, enter the following command: > This causes Vim to search for the string "error_string" in all the specified files (*.c). The editor will now open the first file where a match is found and position the cursor on the first matching line. To go to the next -matching line (no matter in what it is file), use the ":cnext" command. To go +matching line (no matter in what file it is), use the ":cnext" command. To go to the previous match, use the ":cprev" command. Use ":clist" to see all the matches and where they are. The ":grep" command uses the external commands grep (on Unix) or findstr diff --git a/en/version5.txt b/en/version5.txt deleted file mode 100644 index 8c0fd2189..000000000 --- a/en/version5.txt +++ /dev/null @@ -1,7813 +0,0 @@ -*version5.txt* For Vim version 6.3. Last change: 2004 Jan 17 - - - VIM REFERENCE MANUAL by Bram Moolenaar - -Welcome to Vim Version 5.0! - -This document lists the differences between Vim 4.x and Vim 5.0. -Although 5.0 is mentioned here, this is also for version 5.1, 5.2, etc.. -See |vi_diff.txt| for an overview of differences between Vi and Vim 5.0. -See |version4.txt| for differences between Vim 3.0 and Vim 4.0. - -INCOMPATIBLE: |incompatible-5| - -Default value for 'compatible' changed |cp-default| -Text formatting command "Q" changed |Q-command-changed| -Command-line arguments changed |cmdline-changed| -Autocommands are kept |autocmds-kept| -Use of 'hidden' changed |hidden-changed| -Text object commands changed |text-objects-changed| -X-Windows Resources removed |x-resources| -Use of $VIM |$VIM-use| -Use of $HOME for MS-DOS and Win32 |$HOME-use| -Tags file format changed |tags-file-changed| -Options changed |options-changed| -CTRL-B in Insert mode gone |i_CTRL-B-gone| - -NEW FEATURES: |new-5| - -Syntax highlighting |new-highlighting| -Built-in script language |new-script| -Perl and Python support |new-perl-python| -Win32 GUI version |added-win32-GUI| -VMS version |added-VMS| -BeOS version |added-BeOS| -Macintosh GUI version |added-Mac| -More Vi compatible |more-compatible| -Read input from stdin |read-stdin| -Regular expression patterns |added-regexp| -Overloaded tags |tag-overloaded| -New commands |new-commands| -New options |added-options| -New command-line arguments |added-cmdline-args| -Various additions |added-various| - -IMPROVEMENTS |improvements-5| - -COMPILE TIME CHANGES |compile-changes-5| - -BUG FIXES |bug-fixes-5| - -VERSION 5.1 |version-5.1| -Changed |changed-5.1| -Added |added-5.1| -Fixed |fixed-5.1| - -VERSION 5.2 |version-5.2| -Long lines editable |long-lines| -File browser added |file-browser-5.2| -Dialogs added |dialogs-added| -Popup menu added |popup-menu-added| -Select mode added |new-Select-mode| -Session files added |new-session-files| -User defined functions and commands |new-user-defined| -New interfaces |interfaces-5.2| -New ports |ports-5.2| -Multi-byte support |new-multi-byte| -New functions |new-functions-5.2| -New options |new-options-5.2| -New Ex commands |new-ex-commands-5.2| -Changed |changed-5.2| -Added |added-5.2| -Fixed |fixed-5.2| - -VERSION 5.3 |version-5.3| -Changed |changed-5.3| -Added |added-5.3| -Fixed |fixed-5.3| - -VERSION 5.4 |version-5.4| -Runtime directory introduced |new-runtime-dir| -Filetype introduced |new-filetype-5.4| -Vim script line continuation |new-line-continuation| -Improved session files |improved-sessions| -Autocommands improved |improved-autocmds-5.4| -Encryption |new-encryption| -GTK GUI port |new-GTK-GUI| -Menu changes |menu-changes-5.4| -Viminfo improved |improved-viminfo| -Various new commands |new-commands-5.4| -Various new options |new-options-5.4| -Vim scripts |new-script-5.4| -Avoid hit-enter prompt |avoid-hit-enter| -Improved quickfix |improved-quickfix| -Regular expressions |regexp-changes-5.4| -Changed |changed-5.4| -Added |added-5.4| -Fixed |fixed-5.4| - -VERSION 5.5 |version-5.5| -Changed |changed-5.5| -Added |added-5.5| -Fixed |fixed-5.5| - -VERSION 5.6 |version-5.6| -Changed |changed-5.6| -Added |added-5.6| -Fixed |fixed-5.6| - -VERSION 5.7 |version-5.7| -Changed |changed-5.7| -Added |added-5.7| -Fixed |fixed-5.7| - -VERSION 5.8 |version-5.8| -Changed |changed-5.8| -Added |added-5.8| -Fixed |fixed-5.8| - -============================================================================== - INCOMPATIBLE *incompatible-5* - -Default value for 'compatible' changed *cp-default* --------------------------------------- - -Vim version 5.0 tries to be more Vi compatible. This helps people who use Vim -as a drop-in replacement for Vi, but causes some things to be incompatible -with version 4.x. - -In version 4.x the default value for the 'compatible' option was off. Now the -default is on. The first thing you will notice is that the "u" command undoes -itself. Other side effects will be that mappings may work differently or not -work at all. - -Since a lot of people switching from Vim 4.x to 5.0 will find this annoying, -the 'compatible' option is switched off if Vim finds a vimrc file. This is a -bit of magic to make sure that 90% of the Vim users will not be bitten by -this change. - -What does this mean? -- If you prefer to run in 'compatible' mode and don't have a vimrc file, you - don't have to do anything. -- If you prefer to run in 'nocompatible' mode and do have a vimrc file, you - don't have to do anything. -- If you prefer to run in 'compatible' mode and do have a vimrc file, you - should put this line first in your vimrc file: > - :set compatible -- If you prefer to run in 'nocompatible' mode and don't have a vimrc file, - you can do one of the following: - - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix). - - Put this command in your .exrc file or $EXINIT: > - :set nocompatible -< - Start Vim with the "-N" argument. - -If you are new to Vi and Vim, using 'nocompatible' is strongly recommended, -because Vi has a lot of unexpected side effects, which are avoided by this -setting. See 'compatible'. - -If you like some things from 'compatible' and some not, you can tune the -compatibility with 'cpoptions'. - -When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode. - - -Text formatting command "Q" changed *Q-command-changed* ------------------------------------ - -The "Q" command formerly formatted lines to the width the 'textwidth' option -specifies. The command for this is now "gq" (see |gq| for more info). The -reason for this change is that "Q" is the standard Vi command to enter "Ex" -mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info). - -If you still want to use "Q" for formatting, use this mapping: > - :noremap Q gq -And if you also want to use the functionality of "Q": > - :noremap gQ Q - - -Command-line arguments changed *cmdline-changed* ------------------------------- - -Command-line file-arguments and option-arguments can now be mixed. You can -give options after the file names. Example: > - vim main.c -g - -This is not possible when editing a file that starts with a '-'. Use the "--" -argument then |---|: > - vim -g -- -main.c - -"-v" now means to start Ex in Vi mode, use "-R" for read-only mode. -old: "vim -v file" |-v| -new: "vim -R file" |-R| - -"-e" now means to start Vi in Ex mode, use "-q" for quickfix. -old: "vim -e errorfile" |-e| -new: "vim -q errorfile" |-q| - -"-s" in Ex mode now means to run in silent (batch) mode. |-s-ex| - -"-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga). -old: "vim -x file" |-x| -new: "vim -f file" |-f| - -Vim allows up to ten "+cmd" and "-c cmd" arguments. Previously Vim executed -only the last one. - -"-n" now overrides any setting for 'updatecount' in a vimrc file, but not in -a gvimrc file. - - -Autocommands are kept *autocmds-kept* ---------------------- - -Before version 5.0, autocommands with the same event, file name pattern, and -command could appear only once. This was fine for simple autocommands (like -setting option values), but for more complicated autocommands, where the same -command might appear twice, this restriction caused problems. Therefore -Vim stores all autocommands and keeps them in the order that they are defined. - -The most obvious side effect of this change is that when you source a vimrc -file twice, the autocommands in it will be defined twice. To avoid this, do -one of these: - -- Remove any autocommands that might potentially defined twice before - defining them. Example: > - :au! * *.ext - :au BufEnter *.ext ... - -- Put the autocommands inside an ":if" command. Example: > - if !exists("did_ext_autocmds") - let did_ext_autocmds = 1 - autocmd BufEnter *.ext ... - endif - -- Put your autocommands in a different autocommand group so you can remove - them before defining them |:augroup|: > - augroup uncompress - au! - au BufReadPost *.gz ... - augroup END - - -Use of 'hidden' changed *hidden-changed* ------------------------ - -In version 4.x, only some commands used the 'hidden' option. Now all commands -uses it whenever a buffer disappears from a window. - -Previously you could do ":buf xxx" in a changed buffer and that buffer would -then become hidden. Now you must set the 'hidden' option for this to work. - -The new behavior is simpler: whether Vim hides buffers no longer depends on -the specific command that you use. -- with 'hidden' not set, you never get hidden buffers. Exceptions are the - ":hide" and ":close!" commands and, in rare cases, where you would otherwise - lose changes to the buffer. -- With 'hidden' set, you almost never unload a buffer. Exceptions are the - ":bunload" or ":bdel" commands. - -":buffer" now supports a "!": abandon changes in current buffer. So do -":bnext", ":brewind", etc. - - -Text object commands changed *text-objects-changed* ----------------------------- - -Text object commands have new names. This allows more text objects and makes -characters available for other Visual mode commands. Since no more single -characters were available, text objects names now require two characters. -The first one is always 'i' or 'a'. - OLD NEW ~ - a aw a word |v_aw| - A aW a WORD |v_aW| - s as a sentence |v_as| - p ap a paragraph |v_ap| - S ab a () block |v_ab| - P aB a {} block |v_aB| - -There is another set of text objects that starts with "i", for "inner". These -select the same objects, but exclude white space. - - -X-Windows Resources removed *x-resources* --------------------------- - -Vim no longer supports the following X resources: -- boldColor -- italicColor -- underlineColor -- cursorColor - -Vim now uses highlight groups to set colors. This avoids the confusion of -using a bold Font, which would imply a certain color. See |:highlight| and -|gui-resources|. - - -Use of $VIM *$VIM-use* ------------ - -Vim now uses the VIM environment variable to find all Vim system files. This -includes the global vimrc, gvimrc, and menu.vim files and all on-line help -and syntax files. See |$VIM|. Starting with version 5.4, |$VIMRUNTIME| can -also be used. -For Unix, Vim sets a default value for $VIM when doing "make install". -When $VIM is not set, its default value is the directory from 'helpfile', -excluding "/doc/help.txt". - - -Use of $HOME for MS-DOS and Win32 *$HOME-use* ---------------------------------- - -The MS-DOS and Win32 versions of Vim now first check $HOME when searching for -a vimrc or exrc file and for reading/storing the viminfo file. Previously Vim -used $VIM for these systems, but this causes trouble on a system with several -users. Now Vim uses $VIM only when $HOME is not set or the file is not found -in $HOME. See |_vimrc|. - - -Tags file format changed *tags-file-changed* ------------------------- - -Only Tabs are allowed to separate fields in a tags file. This allows for -spaces in a file name and is still Vi compatible. In previous versions of -Vim, any white space was allowed to separate the fields. If you have a file -which doesn't use a single Tab between fields, edit the tags file and execute -this command: > - :%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/ - - -Options changed *options-changed* ---------------- - -The default value of 'errorfile' has changed from "errors.vim" to "errors.err". -The reason is that only Vim scripts should have the ".vim" extensions. - -The ":make" command no longer uses the 'errorfile' option. This prevents the -output of the ":make" command from overwriting a manually saved error file. -":make" uses the 'makeef' option instead. This also allows for generating a -unique name, to prevent concurrently running ":make" commands from overwriting -each other's files. - -With 'insertmode' set, a few more things change: -- <Esc> in Normal mode goes to Insert mode. -- <Esc> in Insert mode doesn't leave Insert mode. -- When doing ":set im", go to Insert mode immediately. - -Vim considers a buffer to be changed when the 'fileformat' (formerly the -'textmode' option) is different from the buffer's initial format. - - -CTRL-B in Insert mode gone *i_CTRL-B-gone* --------------------------- - -When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to -toggle the 'revins' option. Unfortunately, some people hit the 'B' key -accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to -undo this. Since toggling the 'revins' option can easily be done with the -mapping below, this use of the CTRL-B key is disabled. You can still use the -CTRL-_ key for this |i_CTRL-_|. > - :imap <C-B> <C-O>:set revins!<CR> - -============================================================================== - NEW FEATURES *new-5* - -Syntax highlighting *new-highlighting* -------------------- - -Vim now has a very flexible way to highlighting just about any type of file. -See |syntax|. Summary: > - :syntax on - -Colors and attributes can be set for the syntax highlighting, and also for -other highlighted items with the ':' flag in the 'highlight' option. All -highlighted items are assigned a highlight group which specifies their -highlighting. See |:highlight|. The default colors have been improved. - -You can use the "Normal" group to set the default fore/background colors for a -color terminal. For the GUI, you can use this group to specify the font, too. - -The "2html.vim" script can be used to convert any file that has syntax -highlighting to HTML. The colors will be exactly the same as how you see them -in Vim. With a HTML viewer you can also print the file with colors. - - -Built-in script language *new-script* ------------------------- - -A few extra commands and an expression evaluator enable you to write simple -but powerful scripts. Commands include ":if" and ":while". Expressions can -manipulate numbers and strings. You can use the '=' register to insert -directly the result of an expression. See |expression|. - - -Perl and Python support *new-perl-python* ------------------------ - -Vim can call Perl commands with ":perldo", ":perl", etc. See |perl|. -Patches made by Sven Verdoolaege and Matt Gerassimoff. - -Vim can call Python commands with ":python" and ":pyfile". See |python|. - -Both of these are only available when enabled at compile time. - - -Win32 GUI version *added-win32-GUI* ------------------ - -The GUI has been ported to MS Windows 95 and NT. All the features of the X11 -GUI are available to Windows users now. |gui-w32| -This also fixes problems with running the Win32 console version under Windows -95, where console support has always been bad. -There is also a version that supports OLE automation interface. |if_ole.txt| -Vim can be integrated with Microsoft Developer Studio using the VisVim DLL. -It is possible to produce a DLL version of gvim with Borland C++ (Aaron). - - -VMS version *added-VMS* ------------ - -Vim can now also be used on VMS systems. Port done by Henk Elbers. -This has not been tested much, but it should work. -Sorry, no documentation! - - -BeOS version *added-BeOS* ------------- - -Vim can be used on BeOS systems (including the BeBox). (Olaf Seibert) -See |os_beos.txt|. - - -Macintosh GUI version *added-Mac* ---------------------- - -Vim can now be used on the Macintosh. (Dany St-Amant) -It has not been tested much yet, be careful! -See |os_mac.txt|. - - -More Vi compatible *more-compatible* ------------------- - -There is now a real Ex mode. Started with the "Q" command, or by calling the -executable "ex" or "gex". |Ex-mode| - -Always allow multi-level undo, also in Vi compatible mode. When the 'u' flag -in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo -(like "." in Nvi). - - -Read input from stdin *read-stdin* ---------------------- - -When using the "-" command-line argument, Vim reads its text input from stdin. -This can be used for putting Vim at the end of a pipe: > - grep "^a.*" *.c | vim - -See |--|. - - -Regular expression patterns *added-regexp* ---------------------------- - -Added specifying a range for the number of matches of a atom: "\{a,b}". |/\{| -Added the "shortest match" regexp "\{-}" (Webb). -Added "\s", matches a white character. Can replace "[ \t]". |/\s| -Added "\S", matches a non-white character. Can replace "[^ \t]". |/\S| - - -Overloaded tags *tag-overloaded* ---------------- - -When using a language like C++, there can be several tags for the same -tagname. Commands have been added to be able to jump to any of these -overloaded tags: -|:tselect| List matching tags, and jump to one of them. -|:stselect| Idem, and split window. -|g_CTRL-]| Do ":tselect" with the word under the cursor. - - After ":ta {tagname}" with multiple matches: -|:tnext| Go to next matching tag. -|:tprevious| Go to previous matching tag. -|:trewind| Go to first matching tag. -|:tlast| Go to last matching tag. - -The ":tag" command now also accepts wildcards. When doing command-line -completion on tags, case-insensitive matching is also available (at the end). - - -New commands *new-commands* ------------- - -|:amenu| Define menus for all modes, inserting a CTRL-O for Insert - mode, ESC for Visual and CTRL-C for Cmdline mode. "amenu" is - used for the default menus and the Syntax menu. - -|:augroup| Set group to be used for following autocommands. Allows the - grouping of autocommands to enable deletion of a specific - group. - -|:crewind| Go to first error. -|:clast| Go to last error. - -|:doautoall| Execute autocommands for all loaded buffers. - -|:echo| Echo its argument, which is an expression. Can be used to - display messages which include variables. - -|:execute| Execute its argument, which is an expression. Can be used to - built up an Ex command with anything. - -|:hide| Works like ":close". - -|:if| Conditional execution, for built-in script language. - -|:intro| Show introductory message. This is always executed when Vim - is started without file arguments. - -|:let| Assign a value to an internal variable. - -|:omap| Map only in operator-pending mode. Makes it possible to map - text-object commands. - -|:redir| Redirect output of messages to a file. - -|:update| Write when buffer has changed. - -|:while| While-loop for built-in script language. - -Visual mode: -|v_O| "O" in Visual block mode, moves the cursor to the other corner - horizontally. -|v_D| "D" in Visual block mode deletes till end of line. - -Insert mode: -|i_CTRL-]| Triggers abbreviation, without inserting any character. - - -New options *added-options* ------------ - -'background' Used for selecting highlight color defaults. Also used in - "syntax.vim" for selecting the syntax colors. Often set - automatically, depending on the terminal used. - -'complete' Specifies how Insert mode completion works. - -'eventignore' Makes it possible to ignore autocommands temporarily. - -'fileformat' Current file format. Replaces 'textmode'. -'fileformats' Possible file formats. Replaces 'textauto'. - New is that this also supports Macintosh format: A single <CR> - separates lines. - The default for 'fileformats' for MS-DOS, Win32 and OS/2 is - "dos,unix", also when 'compatible' set. Unix type files - didn't work anyway when 'fileformats' was empty. - -'guicursor' Set the cursor shape and blinking in various modes. - Default is to adjust the cursor for Insert and Replace mode, - and when an operator is pending. Blinking is default on. - -'fkmap' Farsi key mapping. - -'hlsearch' Highlight all matches with the last used search pattern. - -'hkmapp' Phonetic Hebrew mapping (Ilya Dogolazky). - -'iconstring' Define the name of the icon, when not empty. (version 5.2: the - string is used literally, a newline can be used to make two - lines). - -'lazyredraw' Don't redraw the screen while executing macros, registers or - other not typed commands. - -'makeef' Errorfile to be used for ":make". "##" is replaced with a - unique number. Avoids that two Vim sessions overwrite each - others errorfile. The Unix default is "/tmp/vim##.err"; for - Amiga "t:vim##.Err, for others "vim##.err". - -'matchtime' 1/10s of a second to show a matching paren, when 'showmatch' - is set. Like Nvi. - -'mousehide' Hide mouse pointer in GUI when typing text. - -'nrformats' Defines what bases Vim will consider for numbers when using - the CTRL-A and CTRL-X commands. Default: "hex,octal". - -'shellxquote' Add extra quotes around the whole shell command, including - redirection. - -'softtabstop' Make typing behave like tabstop is set at this value, without - changing the value of 'tabstop'. Makes it more easy to keep - 'ts' at 8, while still getting four spaces for a <Tab>. - -'titlestring' String for the window title, when not empty. (version 5.2: - this string is used literally, a newline can be used to make - two lines). - -'verbose' Level of verbosity. Makes it possible to show which .vimrc, - .exrc, .viminfo files etc. are used for initializing. Also - to show autocommands that are being executed. Can also be set - by using the "-V" command-line argument. - - -New command-line arguments *added-cmdline-args* --------------------------- - -|-U| Set the gvimrc file to be used. Like "-u" for the vimrc. - -|-V| Set the 'verbose' option. E.g. "vim -V10". - -|-N| Start in non-compatible mode. - -|-C| Start in compatible mode. - -|-Z| Start in restricted mode, disallow shell commands. Can also - be done by calling the executable "rvim". - -|-h| Show usage information and exit. - - -Various additions *added-various* ------------------ - -Added support for SNiFF+ connection (submitted by Toni Leherbauer). Vim can -be used as an editor for SNiFF. No documentation available... - -For producing a bug report, the bugreport.vim script has been included. -Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file -"bugreport.txt" in the current directory. |bugs| - -Added range to ":normal" command. Now you can repeat the same command for -each line in the range. |:normal-range| - -Included support for the Farsi language (Shiran). Only when enabled at -compile time. See |farsi|. - -============================================================================== - IMPROVEMENTS *improvements-5* - -Performance: -- When 'showcmd' was set, mappings would execute much more slowly because the - output would be flushed very often. Helps a lot when executing the "life" - macros with 'showcmd' set. -- Included patches for binary searching in tags file (David O'Neill). - Can be disabled by resetting the 'tagbsearch' option. -- Don't update the ruler when repeating insert (slowed it down a lot). -- For Unix, file name expansion is now done internally instead of starting a - shell for it. -- Expand environment variables with expand_env(), instead of calling the - shell. Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster. -- Reduced output for cursor positioning: Use CR-LF for moving to first few - columns in next few lines; Don't output CR twice when using termios. -- Optimized cursor positioning. Use CR, BS and NL when it's shorter than - absolute cursor positioning. -- Disable redrawing while repeating insert "1000ii<Esc>". -- Made "d$" or "D" for long lines a lot faster (delete all characters at once, - instead of one by one). -- Access option table by first letter, instead of searching from start. -- Made setting special highlighting attributes a lot faster by using - highlight_attr[], instead of searching in the 'highlight' string. -- Don't show the mode when redrawing is disabled. -- When setting an option, only redraw the screen when required. -- Improved performance of Ex commands by using a lookup table for the first - character. - -Options: -'cinoptions' Added 'g' flag, for C++ scope declarations. -'cpoptions' Added 'E' flag: Disallow yanking, deleting, etc. empty text - area. Default is to allow empty yanks. When 'E' is included, - "y$" in an empty line now is handled as an error (Vi - compatible). - Added 'j' flag: Only add two spaces for a join after a '.', - not after a '?' or '!'. - Added 'A' flag: don't give ATTENTION message. - Added 'L' flag: When not included, and 'list' is set, - 'textwidth' formatting works like 'list' is not set. - Added 'W' flag: Let ":w!" behave like Vi: don't overwrite - readonly files, or a file owned by someone else. -'highlight' Added '@' flag, for '@' characters after the last line on the - screen, and '$' at the end of the line when 'list' is set. - Added 'i' flag: Set highlighting for 'incsearch'. Default - uses "IncSearch" highlight group, which is linked to "Visual". - Disallow 'h' flag in 'highlight' (wasn't used anymore since - 3.0). -'guifont' Win32 GUI only: When set to "*" brings up a font requester. -'guipty' Default on, because so many people need it. -'path' Can contain wildcards, and "**" for searching a whole tree. -'shortmess' Added 'I' flag to avoid the intro message. -'viminfo' Added '%' flag: Store buffer list in viminfo file. - -- Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32. Most - machines have much more RAM now that prices have dropped. -- Implemented ":set all&", set all options to their default value. |:set| - -Swap file: -- Don't create a swap file for a readonly file. Then create one on the first - change. Also create a swapfile when the amount of memory used is getting - too high. |swap-file| -- Make swap file "hidden", if possible. On Unix this is done by prepending a - dot to the swap file name. When long file names are used, the DJGPP and - Win32 versions also prepend a dot, in case a file on a mounted Unix file - system is edited. |:swapname| On MSDOS the hidden file attribute is NOT - set, because this causes problems with share.exe. -- 'updatecount' always defaults to non-zero, also for Vi compatible mode. - This means there is a swap file, which can be used for recovery. - -Tags: -- Included ctags 2.0 (Darren Hiebert). The syntax for static tags changed - from - {tag}:{fname} {fname} {command} - to - {tag} {fname} {command};" file: - Which is both faster to parse, shorter and Vi compatible. The old format is - also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS). - |tags-file-format| -- Completion of tags now also includes static tags for other files, at the - end. -- Included "shtags" from Stephen Riehm. -- When finding a matching tag, but the file doesn't exist, continue searching - for another match. Helps when using the same tags file (with links) for - different versions of source code. -- Give a tag with a global match in the current file a higher priority than a - global match in another file. - -Included xxd version V1.8 (Juergen Weigert). - -Autocommands: -- VimLeave autocommands are executed after writing the viminfo file, instead - of before. |VimLeave| -- Allow changing autocommands while executing them. This allows for - self-modifying autocommands. (idea from Goldberg) -- When using autocommands with two or more patterns, could not split - ":if/:endif" over two lines. Now all matching autocommands are executed in - one do_cmdline(). -- Autocommands no longer change the command repeated with ".". -- Search patterns are restored after executing autocommands. This avoids - that the 'hlsearch' highlighting is messed up by autocommands. -- When trying to execute an autocommand, also try matching the pattern with - the short file name. Helps when short file name is different from full - file name (expanded symbolic links). |autocmd-patterns| -- Made the output of ":autocmd" shorter and look better. -- Expand <sfile> in an ":autocmd" when it is defined. |<sfile>| -- Added "nested" flag to ":autocmd", allows nesting. |autocmd-nested| -- Added [group] argument to ":autocmd". Overrides the currently set group. - |autocmd-groups| -- new events: - |BufUnload| before a buffer is unloaded - |BufDelete| before a buffer is deleted from the buffer list - |FileChangedShell| when a file's modification time has changed after - executing a shell command - |User| user-defined autocommand -- When 'modified' was set by a BufRead* autocommand, it was reset again - afterwards. Now the ":set modified" is remembered. - -GUI: -- Improved GUI scrollbar handling when redrawing is slower than the scrollbar - events are generated. -- "vim -u NONE" now also stops loading the .gvimrc and other GUI inits. |-u| - Use "-U" to use another gvimrc file. |-U| -- Handle CTRL-C for external command, also for systems where "setsid()" is - supported. -- When starting the GUI, restrict the window size to the screen size. -- The default menus are read from $VIMRUNTIME/menu.vim. This allows for a - customized default menu. |menu.vim| -- Improved the default menus. Added File/Print, a Window menu, Syntax menu, - etc. -- Added priority to the ":menu" command. Now each menu can be put in a place - where you want it, independent of the order in which the menus are defined. - |menu-priority| - -Give a warning in the intro screen when running the Win32 console version on -Windows 95 because there are problems using this version under Windows 95. -|win32-problems| - -Added 'e' flag for ":substitute" command: Don't complain when not finding a -match (Campbell). |:s| - -When using search commands in a mapping, only the last one is kept in the -history. Avoids that the history is trashed by long mappings. - -Ignore characters after "ex", "view" and "gvim" when checking startup mode. -Allows the use of "gvim5" et. al. |gvim| "gview" starts the GUI in readonly -mode. |gview| - -When resizing windows, the cursor is kept in the same relative position, if -possible. (Webb) - -":all" and ":ball" no longer close and then open a window for the same buffer. -Avoids losing options, jumplist, and other info. - -"-f" command-line argument is now ignored if Vim was compiled without GUI. -|-f| - -In Visual block mode, the right mouse button picks up the nearest corner. - -Changed default mappings for DOS et al. Removed the DOS-specific mappings, -only use the Windows ones. Added Shift-Insert, Ctrl-Insert, Ctrl-Del and -Shift-Del. - -Changed the numbers in the output of ":jumps", so you can see where {count} -CTRL-O takes you. |:jumps| - -Using "~" for $HOME now works for all systems. |$HOME| - -Unix: Besides using CTRL-C, also use the INTR character from the tty settings. -Somebody has INTR set to DEL. - -Allow a <LF> in a ":help" command argument to end the help command, so another -command can follow. - -Doing "%" on a line that starts with " #if" didn't jump to matching "#else". -Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag. -|%| - -Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved -|ins-completion|: -- 'complete' option added. -- When 'nowrapscan' is set, and no match found, report the searched direction - in the error message. -- Repeating CTRL-X commands adds following words/lines after the match. -- When adding-expansions, accept single character matches. -- Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole - insertion. Also fixes not being able to backspace over a word that has been - inserted with CTRL-N. - -When copying characters in Insert mode from previous/next line, with CTRL-E or -CTRL-Y, 'textwidth' is no longer used. |i_CTRL-E| - -Commands that move in the arglist, like ":n" and ":rew", keep the old cursor -position of the file (this is mostly Vi compatible). - -Vim now remembers the '< and '> marks for each buffer. This fixes a problem -that a line-delete in one buffer invalidated the '< and '> marks in another -buffer. |'<| - -For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable. -When using the executable path for $VIM, remove "src/" when present. Should -make Vim find the docs and syntax files when it is run directly after -compiling. |$VIM| - -When quitting Visual mode with <Esc>, the cursor is put at start of the Visual -area (like after executing an operator). - -Win32 and Unix version: Removed 1100 character limit on external commands. - -Added possibility to include a space in a ":edit +command" argument, by -putting a backslash before it. |+cmd| - -After recovery, BufReadPost autocommands are applied. |:recover| - -Added color support for "os2ansi", OS/2 console. (Slootman) |os2ansi| - -Allow "%:p:h" when % is empty. |:_%| - -Included "<sfile>": file name from the ":source" command. |<sfile>| - -Added "<Bslash>" special character. Helps for avoiding multiple backslashes -in mappings and menus. - -In a help window, a double-click jumps to the tag under the cursor (like -CTRL-]). - -<C-Left> and <C-Right> now work like <S-Left> and <S-Right>, move a word -forward/backward (Windows compatible). |<C-Left>| - -Removed the requirement for a ":version" command in a .vimrc file. It wasn't -used for anything. You can use ":if" to handle differences between versions. -|:version| - -For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't -make a difference between '/' and '\' for path separator. - -New termcap options: -"mb": blink. Can only be used by assigning it to one of the other highlight - options. |t_mb| -"bc": backspace character. |t_bc| -"nd": Used for moving the cursor right in the GUI, to avoid removing one line - of pixels from the last bold character. |t_nd| -"xs": highlighting not erased by overwriting, for hpterm. Combined with - 'weirdinvert'. Visual mode works on hpterm now. |t_xs| - -Unix: Set time of patch and backup file same as original file. (Hiebert). - -Amiga: In QuickFix mode no longer opens another window. Shell commands can be -used now. - -Added decmouse patches from David Binette. Can now use Dec and Netterm mouse. -But only when enabled at compile time. - -Added '#' register: Alternate file name |quote#|. Display '#' register with -":dis" command. |:display| - -Removed ':' from 'isfname' default for Unix. Check for "://" in a file name -anyway. Also check for ":\\", for MS-DOS. - -Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in -the man command. "2K" results in "!man 2 <cword>". |K| - -When using "gf" on a relative path name, remove "../" from the file name, like -it's done for file names in the tags file. |gf| - -When finishing recording, don't make the recorded register the default put -register. - -When using "!!", don't put ":5,5!" on the command-line, but ":.!". And some -other enhancements to replace the line number with "." or "$" when possible. - -MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo. It's more consistent: -.vimrc/_vimrc and .viminfo/_viminfo - -For systems where case doesn't matter in file names (MSDOS, Amiga), ignore -case while sorting file names. For buffer names too. - -When reading from stdin doesn't work, read from stderr (helps for "foo | xargs -vim"). - -32 bit MS-DOS version: Replaced csdpmi3 by csdpmi4. - -Changed <C-Left> and <C-Right> to skip a WORD instead of a word. - -Warning for changed modified time when overwriting a file now also works on -other systems than Unix. - -Unix: Changed the defaults for configure to be the same as the defaults for -Makefile: include GUI, Perl, and Python. - -Some versions of Motif require "-lXpm". Added check for this in configure. - -Don't add "-L/usr/lib" to the link line, causes problems on a few systems. - -============================================================================== - COMPILE TIME CHANGES *compile-changes-5* - -When compiling, allow a choice for minimal, normal or maximal features in an -easy way, by changing a single line in src/feature.h. -The DOS16 version has been compiled with minimal features to avoid running -out of memory too quickly. |dos16| -The Win32, DJGPP, and OS/2 versions use maximal features, because they have -enough memory. -The Amiga version is available with normal and maximal features. - -Added "make test" to Unix version Makefile. Allows for a quick check if most -"normal" commands work properly. Also tests a few specific commands. - -Added setlocale() with codepage support for DJGPP version. - -autoconf: -- Added autoconf check for -lXdmcp. -- Included check for -lXmu, no longer needed to edit the Makefile for this. -- Switched to autoconf 2.12. -- Added configure check for <poll.h>. Seems to be needed when including - Perl on Linux? -- termlib is now checked before termcap. -- Added configure check for strncasecmp(), stricmp() and strnicmp(). Added - vim_stricmp() for when there's no library function for stricmp(). -- Use "datadir" in configure, instead of our own check for HELPDIR. - -Removed "make proto" from Makefile.manx. Could not make it work without a lot -of #ifdefs. - -Removed "proto/" from paths in proto.h. Needed for the Mac port. - -Drastically changed Makefile.mint. Now it includes the Unix Makefile. - -Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor) - -All source files are now edited with a tabstop of 8 instead of 4, which is -better when debugging and using other tools. 'softtabstop' is set to 4, to -make editing easier. - -Unix: Added "link.sh" script, which removes a few unnecessary libraries from -the link command. - -Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined. -|digraphs-default| - -============================================================================== - BUG FIXES *bug-fixes-5* - -Note: Some of these fixes may only apply to test versions which were - created after version 4.6, but before 5.0. - - -When doing ":bdel", try going to the next loaded buffer. Don't rewind to the -start of the buffer list. - -mch_isdir() for Unix returned TRUE for "" on some systems. - -Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands. Don't use -backslashes in the temp file names. - -On linux, with a FAT file system, could get spurious "file xxx changed since -editing started" messages, because the time is rounded off to two seconds -unexpectedly. - -Crash in GUI, when selecting a word (double click) and then extend until an -empty line. - -For systems where isdigit() can't handle characters > 255, get_number() caused -a crash when moving the mouse during the prompt for recovery. - -In Insert mode, "CTRL-O P" left the cursor on the last inserted character. -Now the cursor is left after the last putted character. - -When quickfix found an error type other than 'e' or 'w', it was never printed. - -A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument. - -Some systems create a file when generating a temp file name. Filtering would -then create a backup file for this, which was never deleted. Now no backup -file is made when filtering. - -simplify_filename() could remove a ".." after a link, resulting in the wrong -file name. Made simplify_filename also work for MSDOS. Don't use it for -Amiga, since it doesn't have "../". - -otherfile() was unreliable when using links. Could think that reading/writing -was for a different file, when it was the same. - -Pasting with mouse in Replace mode didn't replace anything. - -Window height computed wrong when resizing a window with an autocommand (could -cause a crash). - -":s!foo!bar!" wasn't possible (Vi compatible). - -do_bang() freed memory twice when called recursively, because of autocommands -(test11). Thanks to Electric Fence! - -"v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the -command-line, and inverted the cursor. - -":mkexrc" didn't check for failure to open the file, causing a crash. -(Felderhoff). - -Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to -be recognized. Both console and GUI version. - -Athena GUI: Crash when removing a menu item. Now Vim doesn't crash, but the -reversing of the menu item is still wrong. - -Always reset 'list' option for the help window. - -When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be -in the wrong line and the window to be scrolled (Acevedo). - -After ":set all&", 'lines' and 'ttytype' were still non-default, because the -defaults never got set. Now the defaults for 'lines' and 'columns' are set -after detecting the window size. 'term' and 'ttytype' defaults are set when -detecting the terminal type. - -For (most) non-Unix systems, don't add file names with illegal characters when -expanding. Fixes "cannot open swapfile" error when doing ":e *.burp", when -there is no match. - -In X11 GUI, drawing part of the cursor obscured the text. Now the text is -drawn over the cursor, like when it fills the block. (Seibert) - -when started with "-c cmd -q errfile", the cursor would be left in line 1. -Now a ":cc" is done after executing "cmd". - -":ilist" never ignored case, even when 'ignorecase' set. - -"vim -r file" for a readonly file, then making a change, got ATTENTION message -in insert mode, display mixed up until <Esc> typed. Also don't give ATTENTION -message after recovering a file. - -The abbreviation ":ab #i #include" could not be removed. - -CTRL-L completion (longest common match) on command-line didn't work properly -for case-insensitive systems (MS-DOS, Windows, etc.). (suggested by Richard -Kilgore). - -For terminals that can hide the cursor ("vi" termcap entry), resizing the -window caused the cursor to disappear. - -Using an invalid mark in an Ex address didn't abort the command. - -When 'smarttab' set, would use 'shiftround' when inserting a TAB after a -space. Now it always rounds to a tabstop. - -Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute" -and ":change". (Acevedo). - -"d$" in an empty line still caused an error, even when 'E' is not in -'cpoptions'. - -Help files were stored in the viminfo buffer list without a path. - -GUI: Displaying cursor was not synchronized with other displaying. Caused -several display errors. For example, when the last two lines in the file -start with spaces, "dd" on the last line copied text to the (then) last line. - -Win32: Needed to type CTRL-SHIFT-- to get CTRL-_. - -GUI: Moving the cursor forwards over bold text would remove one column of bold -pixels. - -X11 GUI: When a bold character in the last column was scrolled up or down, one -column of pixels would not be copied. - -Using <BS> to move the cursor left can sometimes erase a character. Now use -"le" termcap entry for this. - -Keyword completion with regexp didn't work. e.g., for "b.*crat". - -Fixed: With CTRL-O that jumps to another file, cursor could end up just after -the line. - -Amiga: '$' was missing from character recognized as wildcards, causing $VIM -sometimes not to be expanded. - -":change" didn't adjust marks for deleted lines. - -":help [range]" didn't work. Also for [pattern], [count] and [quotex]. - -For 'cindent'ing, typing "class::method" doesn't align like a label when the -second ':' is typed. -When inserting a CR with 'cindent' set (and a bunch of other conditions) the -cursor went to a wrong location. -'cindent' was wrong for a line that ends in '}'. -'cindent' was wrong after "else {". - -While editing the cmdline in the GUI, could not use the mouse to select text -from the command-line itself. - -When deleting lines, marks in tag stack were only adjusted for the current -window, not for other windows on the same buffer. - -Tag guessing could find a function "some_func" instead of the "func" we were -looking for. - -Tags file name relative to the current file didn't work. - -":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause -a scroll up. Now you no longer have to hit <CR>. - -X11 GUI: Selecting text could cause a crash. - -32 bit DOS version: CTRL-C in external command killed Vim. When SHELL is set -to "sh.exe", external commands didn't work. Removed using of command.com, no -longer need to set 'shellquote'. - -Fixed crash when using ":g/pat/i". - -Fixed (potential) crash for X11 GUI, when using an X selection. Was giving a -pointer on the stack to a callback function, now it's static. - -Using "#" and "*" with an operator didn't work. E.g. "c#". - -Command-line expansion didn't work properly after ":*". (Acevedo) - -Setting 'weirdinvert' caused highlighting to be wrong in the GUI. - -":e +4 #" didn't work, because the "4" was in unallocated memory (could cause -a crash). - -Cursor position was wrong for ":e #", after ":e #" failed, because of changes -to the buffer. - -When doing ":buf N", going to a buffer that was edited with ":view", the -readonly flag was reset. Now make a difference between ":e file" and ":buf -file": Only set/reset 'ro' for the first one. - -Avoid |hit-enter| prompt when not able to write viminfo on exit. - -When giving error messages in the terminal where the GUI was started, GUI -escape codes would be written to the terminal. In an xterm this could be seen -as a '$' after the message. - -Mouse would not work directly after ":gui", because full_screen isn't set, -which causes starttermcap() not to do its work. - -'incsearch' did not scroll the window in the same way as the actual search. -When 'nowrap' set, incsearch didn't show a match when it was off the side of -the screen. Now it also shows the whole match, instead of just the cursor -position (if possible). - -":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as -the start of a comment. Now it's Vi compatible. - -Using <Up><Left><Left><Up> in the command-line, when there is no previous -cmdline in the history, inserted a NUL on the command-line. - -"i<Esc>" when on a <Tab> in column 0 left the cursor in the wrong place. - -GUI Motif: When adding a lot of menu items, the menu bar goes into two rows. -Deleting menu items, reducing the number of rows, now also works. - -With ":g/pat/s//foo/c", a match in the first line was scrolled off of the -screen, so you could not see it. -When using ":s//c", with 'nowrap' set, a match could be off the side of the -screen, so you could not see it. - -When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would -crash. mch_Fullname can now handle file names in read-only memory. (Lottem) - -When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects -when using CTRL-D next. Also, when repeating inserted text that included "0 -CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo) -Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0' -or '^', removed the '0' or '^' and more indent. - -The command "2".p" caused the last inserted text to be executed as commands. -(Acevedo) - -Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted. - -Repeating Insert completion could fail if there are special characters in the -text. (Acevedo) - -":normal /string<CR>" caused the window to scroll. Now all ":normal" commands -are executed without scrolling messages. - -Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as -commands. - -Line wrapping for 'tw' was done one character off for insert expansion -inserts. - -buffer_exists() function didn't work properly for buffer names with a symbolic -link in them (e.g. when using buffer_exists(#)). - -Removed the "MOTIF_COMMENT" construction from Makefile. It now works with -FreeBSD make, and probably with NeXT make too. - -Matching the 'define' and 'include' arguments now honor the settings for -'ignorecase'. (Acevedo) - -When one file shown in two windows, Visual selection mixed up cursor position -in current window and other window. - -When doing ":e file" from a help file, the 'isk' option wasn't reset properly, -because of a modeline in the help file. - -When doing ":e!", a cursor in another window on the same buffer could become -invalid, leading to "ml_get: invalid lnum" errors. - -Matching buffer name for when expanded name has a different path from not -expanded name (Brugnara). - -Normal mappings didn't work after an operator. For example, with ":map Q gq", -"QQ" didn't work. - -When ":make" resulted in zero errors, a "No Errors" error message was given -(which breaks mappings). - -When ":sourcing" a file, line length was limited to 1024 characters. CTRL-V -before <EOL> was not handled Vi compatible. (Acevedo) - -Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event. (Heimann) - -CTRL-X CTRL-I only found one match per line. (Acevedo) -When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message -was stuck. - -Finally managed to ignore the "Quit" menu entry of the Window manager! Now -Vim only exists when there are no changed buffers. - -Trying to start the GUI when $DISPLAY is not set resulted in a crash. -When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks -for flying Vim". -When $DISPLAY not set, starting "gvim" (dropping back to vim) and then -selecting text with the mouse caused a crash. - -"J", with 'joinspaces' set, on a line ending in ". ", caused one space too -many to be added. (Acevedo) - -In insert mode, a CTRL-R {regname} which didn't insert anything left the '"' -on the screen. - -":z10" didn't work. (Clapp) - -"Help "*" didn't work. - -Renamed a lot of functions, to avoid clashes with POSIX name space. - -When adding characters to a line, making it wrap, the following lines were -sometimes not shifted down (e.g. after a tag jump). - -CTRL-E, with 'so' set and cursor on last line, now does not move cursor as -long as the last line is on the screen. - -When there are two windows, doing "^W+^W-" in the bottom window could cause -the status line to be doubled (not redrawn correctly). - -This command would hang: ":n `cat`". Now connect stdin of the external -command to /dev/null, when expanding. - -Fixed lalloc(0,) error for ":echo %:e:r". (Acevedo) - -The "+command" argument to ":split" didn't work when there was no file name. - -When selecting text in the GUI, which is the output of a command-line command -or an external command, the inversion would sometimes remain. - -GUI: "-mh 70" argument was broken. Now, when menuheight is specified, it is -not changed anymore. - -GUI: When using the scrollbar or mouse while executing an external command, -this caused garbage characters. - -Showmatch sometimes jumped to the wrong position. Was caused by a call to -findmatch() when redrawing the display (when syntax highlighting is on). - -Search pattern "\(a *\)\{3} did not work correctly, also matched "a a". -Problem with brace_count not being decremented. - -Wildcard expansion added too many non-matching file names. - -When 'iskeyword' contains characters like '~', "*" and "#" didn't work -properly. (Acevedo) - -On Linux, on a FAT file system, modification time can change by one second. -Avoid a "file has changed" warning for a one second difference. - -When using the page-switching in an xterm, Vim would position the cursor on -the last line of the window on exit. Also removed the cursor positioning for -":!" commands. - -":g/pat/p" command (partly) overwrote the command. Now the output is on a -separate line. - -With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were -highlighted too. - -"^" on a line with only white space, put cursor beyond the end of the line. - -When deleting characters before where insertion started ('bs' == 2), could not -use abbreviations. - -CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is -non-zero. CTRL-E didn't work when 'so' is big and the line below the window -wraps. CTRL-E, when 'so' is non-zero, at end of the file, caused jumping -up-down. - -":retab" didn't work well when 'list' is set. - -Amiga: When inserting characters at the last line on the screen, causing it -to wrap, messed up the display. It appears that a '\n' on the last line -doesn't always cause a scroll up. - -In Insert mode "0<C-D><C-D>" deleted an extra character, because Vim thought -that the "0" was still there. (Acevedo) - -"z{count}l" ignored the count. Also for "zh" et. al. (Acevedo) - -"S" when 'autoindent' is off didn't delete leading white space. - -"/<Tab>" landed on the wrong character when 'incsearch' is set. - -Asking a yes/no question could cause a |hit-enter| prompt. - -When the file consists of one long line (>4100 characters), making changes -caused various errors and a crash. - -DJGPP version could not save long lines (>64000) for undo. - -"yw" on the last char in the file didn't work. Also fixed "6x" at the end of -the line. "6X" at the start of a line fails, but does not break a mapping. In -general, a movement for an operator doesn't beep or flush a mapping, but when -there is nothing to operate on it beeps (this is Vi compatible). - -"m'" and "m`" now set the '' mark at the cursor position. - -Unix: Resetting of signals for external program didn't work, because SIG_DFL -and NULL are the same! For "!!yes|dd count=1|, the yes command kept on -running. - -Partly fixed: Unix GUI: Typeahead while executing an external command was lost. -Now it's not lost while the command is producing output. - -Typing <S-Tab> in Insert mode, when it isn't mapped, inserted "<S-Tab>". Now -it works like a normal <Tab>, just like <C-Tab> and <M-Tab>. - -Redrawing ruler didn't check for old value correctly (caused UMR warnings in -Purify). - -Negative array index in finish_viminfo_history(). - -":g/^/d|mo $" deleted all the lines. The ":move" command now removes the -:global mark from the moved lines. - -Using "vG" while the last line in the window is a "@" line, didn't update -correctly. Just the "v" showed "~" lines. - -"daw" on the last char of the file, when it's a space, moved the cursor beyond -the end of the line. - -When 'hlsearch' was set or reset, only the current buffer was redrawn, while -this affects all windows. - -CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the -file, put the cursor at the bottom of the window, instead of halfway. - -When scrolling up for ":append" command, not all windows were updated -correctly. - -When 'hlsearch' is set, and an auto-indent is highlighted, pressing <Esc> -didn't remove the highlighting, although the indent was deleted. - -When 'ru' set and 'nosc', using "$j" showed a wrong ruler. - -Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used). - -Mapping <S-Tab> didn't work. Changed the key translations to use the shortest -key code possible. This makes the termcode translations and mappings more -consistent. Now all modifiers work in all combinations, not only with <Tab>, -but also with <Space>, <CR>, etc. - -For Unix, restore three more signals. And Vim catches SIGINT now, so CTRL-C -in Ex mode doesn't make Vim exit. - -""a5Y" yanked 25 lines instead of 5. - -"vrxxx<Esc>" in an empty line could not be undone. - -A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying -when you want to handle what ":make" produced so far). - -":0;/pat" didn't find "pat" in line 1. - -Search for "/test/s+1" at first char of file gave bottom-top message, or -didn't work at all with 'nowrapscan'. - -Bug in viminfo history. Could cause a crash on exit. - -":print" didn't put cursor on first non-blank in line. - -":0r !cat </dev/null" left cursor in line zero, with very strange effects. - -With 'showcmd' set and 'timeoutlen' set to a few seconds, trick to position -the cursor leftwards didn't work. - -AIX stty settings were restored to cs5 instead of cs8 (Winn). - -File name completion didn't work for "zsh" versions that put spaces between -file names, instead of NULs. - -Changed "XawChain*" to "XtChain*", should work for more systems. - -Included quite a few fixes for rightleft mode (Lottem). - -Didn't ask to |hit-enter| when GUI is started and error messages are printed. - -When trying to edit a file in a non-existent directory, ended up with editing -"No file". - -"gqap" to format a paragraph did too much redrawing. - -When 'hlsearch' set, only the current window was updated for a new search -pattern. - -Sometimes error messages on startup didn't cause a |hit-enter| prompt, -because of autocommands containing an empty line. - -Was possible to select part of the window in the border, below the command -line. - -'< and '> marks were not at the correct position after linewise Visual -selection. - -When translating a help argument to "CTRL-x", prepend or append a '_', when -applicable. - -Blockwise visual mode wasn't correct when moving vertically over a special -character (displayed as two screen characters). - -Renamed "struct option" to "struct vimoption" to avoid name clash with GNU -getopt(). - -":abclear" didn't work (but ":iabclear" and ":cabclear" did work). - -When 'nowrap' used, screen wasn't always updated correctly. - -"vim -c split file" displayed extra lines. - -After starting the GUI, searched the termcap for a "gui" term. - -When 'hls' used, search for "^$" caused a hang. -When 'hls' was set, an error in the last regexp caused trouble. - -Unix: Only output an extra <EOL> on exit when outputted something in the -alternate screen, or when there is a message that needs to be cleared. - -"/a\{" did strange things, depending on previous search. - -"c}" only redrew one line (with -u NONE). - -For mappings, CTRL-META-A was shown as <M-^A> instead of <MC-A>, while :map -only accepts <MC-A>. Now <M-C-A> is shown. - -Unix: When using full path name in a tags file, which contains a link, and -'hidden' set and jumping to a tag in the current file, would get bogus -ATTENTION message. Solved by always expanding file names, even when starting -with '/'. - -'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight -the whole thing. - -"r<CR>" didn't work correctly on the last char of a line. - -sometimes a window resize or other signal caused an endless loop, involving -set_winsize(). - -"vim -r" didn't work, it would just hang (using tgetent() while 'term' is -empty). - -"gk" while 'nowrap' set moved two lines up. - -When windows are split, a message that causes a scroll-up messed up one of the -windows, which required a CTRL-L to be typed. - -Possible endless loop when using shell command in the GUI. - -Menus defined in the .vimrc were removed when GUI started. - -Crash when pasting with the mouse in insert mode. - -Crash whith ":unmenu *" in .gvimrc for Athena. - -"5>>" shifted 5 lines 5 times, instead of 1 time. - -CTRL-C when getting a prompt in ":global" didn't interrupt. - -When 'so' is non-zero, and moving the scrollbar completely to the bottom, -there was a lot of flashing. - -GUI: Scrollbar ident must be long for DEC Alpha. - -Some functions called vim_regcomp() without setting reg_magic, which could -lead to unpredictable magicness. - -Crash when clicking around the status line, could get a selection with a -backwards range. - -When deleting more than one line characterwise, the last character wasn't -deleted. - -GUI: Status line could be overwritten when moving the scrollbar quickly (or -when 'wd' is non-zero). - -An ESC at the end of a ":normal" command caused a wait for a terminal code to -finish. Now, a terminal code is not recognized when its start comes from a -mapping or ":normal" command. - -Included patches from Robert Webb for GUI. Layout of the windows is now done -inside Vim, instead of letting the layout manager do this. Makes Vim work -with Lesstif! - -UMR warning in set_expand_context(). - -Memory leak: b_winlnum list was never freed. - -Removed TIOCLSET/TIOCLGET code from os_unix.c. Was changing some of the -terminal settings, and looked like it wasn't doing anything good. (suggested -by Juergen Weigert). - -Ruler overwrote "is a directory" message. When starting up, and 'cmdheight' -set to > 1, first message could still be in the last line. - -Removed prototype for putenv() from proto.h, it's already in osdef2.h.in. - -In replace mode, when moving the cursor and then backspacing, wrong characters -were inserted. - -Win32 GUI was checking for a CTRL-C too often, making it slow. - -Removed mappings for MS-DOS that were already covered by commands. - -When visually selecting all lines in a file, cursor at last line, then "J". -Gave ml_get errors. Was a problem with scrolling down during redrawing. - -When doing a linewise operator, and then an operator with a mouse click, it -was also linewise, instead of characterwise. - -When 'list' is set, the column of the ruler was wrong. - -Spurious error message for "/\(b\+\)*". - -When visually selected many lines, message from ":w file" disappeared when -redrawing the screen. - -":set <M-b>=^[b", then insert "^[b", waited for another character. And then -inserted "<M-b>" instead of the real <M-b> character. Was trying to insert -K_SPECIAL x NUL. - -CTRL-W ] didn't use count to set window height. - -GUI: "-font" command-line argument didn't override 'guifont' setting from -.gvimrc. (Acevedo) - -GUI: clipboard wasn't used for "*y". And some more Win32/X11 differences -fixed for the clipboard (Webb). - -Jumping from one help file to another help file, with 'compatible' set, -removed the 'help' flag from the buffer. - -File-writable bit could be reset when using ":w!" for a readonly file. - -There was a wait for CTRL-O n in Insert mode, because the search pattern was -shown. -Reduced wait, to allow reading a message, from 10 to 3 seconds. It seemed -nothing was happening. - -":recover" found same swap file twice. - -GUI: "*yy only worked the second time (when pasting to an xterm)." - -DJGPP version (dos32): The system flags were cleared. - -Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin). - -Version 4.1 of ncurses can't handle tputs("", ..). Avoid calling tputs() with -an empty string. - -<S-Tab> in the command-line worked like CTRL-P when no completion started yet. -Now it does completion, last match first. - -Unix: Could get annoying "can't write viminfo" message after doing "su". Now -the viminfo file is overwritten, and the user set back to the original one. - -":set term=builtin_gui" started the GUI in a wrong way. Now it's not -allowed anymore. But "vim -T gui" does start the GUI correctly now. - -GUI: Triple click after a line only put last char in selection, when it is a -single character word. - -When the window is bigger than the screen, the scrolling up of messages was -wrong (e.g. ":vers", ":hi"). Also when the bottom part of the window was -obscured by another window. - -When using a wrong option only an error message is printed, to avoid that the -usage information makes it scroll off the screen. - -When exiting because of not being able to read from stdin, didn't preserve the -swap files properly. - -Visual selecting all chars in more than one line, then hit "x" didn't leave an -empty line. For one line it did leave an empty line. - -Message for which autocommand is executing messed up file write message (for -FileWritePost event). - -"vim -h" included "-U" even when GUI is not available, and "-l" when lisp is -not available. - -Crash for ":he <C-A>" (command-line longer than screen). - -":s/this/that/gc", type "y" two times, then undo, did reset the modified -option, even though the file is still modified. - -Empty lines in a tags file caused a ":tag" to be aborted. - -When hitting 'q' at the more prompt for ":menu", still scrolled a few lines. - -In an xterm that uses the bold trick a single row of characters could remain -after an erased bold character. Now erase one extra char after the bold char, -like for the GUI. - -":pop!" didn't work. - -When the reading a buffer was interrupted, ":w" should not be able to -overwrite the file, ":w!" is required. - -":cf%" caused a crash. - -":gui longfilename", when forking is enabled, could leave part of the -longfilename at the shell prompt. - -============================================================================== -VERSION 5.1 *version-5.1* - -Improvements made between version 5.0 and 5.1. - -This was mostly a bug-fix release, not many new features. - - -Changed *changed-5.1* -------- - -The expand() function now separates file names with <NL> instead of a space. -This avoids problems for file names with embedded spaces. To get the old -result, use substitute(expand(foo), "\n", " ", "g"). - -For Insert-expanding dictionaries allow a backslash to be used for -wildchars. Allows expanding "ze\kra", when 'isk' includes a backslash. - -New icon for the Win32 GUI. - -":tag", ":tselect" etc. only use the argument as a regexp when it starts -with '/'. Avoids that ":tag xx~" gives an error message: "No previous sub. -regexp". Also, when the :tag argument contained wildcard characters, it was -not Vi compatible. -When using '/', the argument is taken literally too, with a higher priority, -so it's found before wildcard matches. -Only when the '/' is used are matches with different case found, even though -'ignorecase' isn't set. -Changed "g^]" to only do ":tselect" when there is more than on matching tag. - -Changed some of the default colors, because they were not very readable on a -dark background. - -A character offset to a search pattern can move the cursor to the next or -previous line. Also fixes that "/pattern/e+2" got stuck on "pattern" at the -end of a line. - -Double-clicks in the status line do no longer start Visual mode. Dragging a -status line no longer stops Visual mode. - -Perl interface: Buffers() and Windows() now use more logical arguments, like -they are used in the rest of Vim (Moore). - -Init '" mark to the first character of the first line. Makes it possible to -use '" in an autocommand without getting an error message. - - -Added *added-5.1* ------ - -"shell_error" internal variable: result of last shell command. - -":echohl" command: Set highlighting for ":echo". - -'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for -status line of not-current window. Default is to use bold for current -window. - -Added buffer_name() and buffer_number() functions (Aaron). -Added flags argument "g" to substitute() function (Aaron). -Added winheight() function. - -Win32: When an external command starts with "start ", no console is opened -for it (Aaron). - -Win32 console: Use termcap codes for bold/reverse based on the current -console attributes. - -Configure check for "strip". (Napier) - -CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally, -instead of as typed. - -Made a few "No match" error messages more informative by adding the pattern -that didn't match. - -"make install" now also copies the macro files. - -tools/tcltags, a shell script to generate a tags file from a TCL file. - -"--with-tlib" setting for configure. Easy way to use termlib: "./configure ---with-tlib=termlib". - -'u' flag in 'cino' for setting the indent for contained () parts. - -When Win32 OLE version can't load the registered type library, ask the user -if he wants to register Vim now. (Erhardt) -Win32 with OLE: When registered automatically, exit Vim. -Included VisVim 1.1b, with a few enhancements and the new icon (Heiko -Erhardt). - -Added patch from Vince Negri for Win32s support. Needs to be compiled with -VC 4.1! - -Perl interface: Added $curbuf. Rationalized Buffers() and Windows(). -(Moore) Added "group" argument to Msg(). - -Included Perl files in DOS source archive. Changed Makefile.bor and -Makefile.w32 to support building a Win32 version with Perl included. - -Included new Makefile.w32 from Ken Scott. Now it's able to make all Win32 -versions, including OLE, Perl and Python. - -Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^]. - -Added "g]" to always do ":tselect" for the ident under the cursor. -Added ":tjump" and ":stjump" commands. -Improved listing of ":tselect" when tag names are a bit long. - -Included patches for the Macintosh version. Also for Python interface. -(St-Amant) - -":buf foo" now also restores cursor column, when the buffer was used before. - -Adjusted the Makefile for different final destinations for the syntax files -and scripts (for Debian Linux). - -Amiga: $VIM can be used everywhere. When $VIM is not defined, "VIM:" is -used. This fixes that "VIM:" had to be assigned for the help files, and -$VIM set for the syntax files. Now either of these work. - -Some xterms send vt100 compatible function keys F1-F4. Since it's not -possible to detect this, recognize both type of keys and translate them to -<F1> - <F4>. - -Added "VimEnter" autocommand. Executed after loading all the startup stuff. - -BeOS version now also runs on Intel CPUs (Seibert). - - -Fixed *fixed-5.1* ------ - -":ts" changed position in the tag stack when cancelled with <CR>. -":ts" changed the cursor position for CTRL-T when cancelled with <CR>. -":tn" would always jump to the second match. Was using the wrong entry in -the tag stack. -Doing "tag foo", then ":tselect", overwrote the original cursor position in -the tag stack. - -"make install" changed the vim.1 manpage in a wrong way, causing "doc/doc" -to appear for the documentation files. - -When compiled with MAX_FEAT, xterm mouse handling failed. Was caused by DEC -mouse handling interfering. - -Was leaking memory when using selection in X11. - -CTRL-D halfway a command-line left some characters behind the first line(s) -of the listing. - -When expanding directories for ":set path=", put two extra backslashes -before a space in a directory name. - -When 'lisp' set, first line of a function would be indented. Now its indent -is set to zero. And use the indent of the first previous line that is at -the same () level. Added test33. - -"so<Esc>u" in an empty file didn't work. - -DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe, -because the swap file was made hidden. It's no longer hidden. - -":global" command would sometimes not execute on a matching line. Happened -when a data block is full in ml_replace(). - -For AIX use a tgetent buffer of 2048 bytes, instead of 1024. - -Win32 gvim now only sets the console size for external commands to 25x80 -on Windows 95, not on NT. - -Win32 console: Dead key could cause a crash, because of a missing "WINAPI" -(Deshpande). - -The right mouse button started Visual mode, even when 'mouse' is empty, and -in the command-line, a left click moved the cursor when 'mouse' is empty. -In Visual mode, 'n' in 'mouse' would be used instead of 'v'. - -A blinking cursor or focus change cleared a non-Visual selection. - -CTRL-Home and CTRL-End didn't work for MS-DOS versions. - -Could include NUL in 'iskeyword', causing a crash when doing insert mode -completion. - -Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version. - -In mappings, CTRL-H was replaced by the backspace key code. This caused -problems when it was used as text, e.g. ":map _U :%s/.^H//g<CR>". - -":set t_Co=0" was not handled like a normal term. Now it's translated into -":set t_Co=", which works. - -For ":syntax keyword" the "transparent" option did work, although not -mentioned in the help. But synID() returned wrong name. - -"gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and -not interruptable. - -"gq" operator inserted screen lines in the wrong situation. Now screen -lines are inserted or deleted when this speeds up displaying. - -cindent was wrong when an "if" contained "((". - -'r' flag in 'viminfo' was not used for '%'. Could get files in the buffer -list from removable media. - -Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project. -Hand-edited to fix this... - -With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at -the end of the line. - -Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP -bug. That bug appears to have been fixed, therefore this translation has -been removed. - -"/^*" didn't work (find '*' in first column). - -"<afile>" was not always set for autocommands. E.g., for ":au BufEnter * -let &tags = expand("<afile>:p:h") . "/tags". - -In an xterm, the window may be a child of the outer xterm window. Use the -parent window when getting the title and icon names. (Smith) - -When starting with "gvim -bg black -fg white", the value of 'background' is -only set after reading the .gvimrc file. This causes a ":syntax on" to use -the wrong colors. Now allow using ":gui" to open the GUI window and set the -colors. Previously ":gui" in a gvimrc crashed Vim. - -tempname() returned the same name all the time, unless the file was actually -created. Now there are at least 26 different names. - -File name used for <afile> was sometimes full path, sometimes file name -relative to current directory. - -When 'background' was set after the GUI window was opened, it could change -colors that were set by the user in the .gvimrc file. Now it only changes -colors that have not been set by the user. - -Ignore special characters after a CSI in the GUI version. These could be -interpreted as special characters in a wrong way. (St-Amant) - -Memory leak in farsi code, when using search or ":s" command. -Farsi string reversing for a mapping was only done for new mappings. Now it -also works for replacing a mapping. - -Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron) - -When BufDelete autocommands were executed, some things for the buffer were -already deleted (esp. Perl stuff). - -Perl interface: Buffer specific items were deleted too soon; fixes "screen -no longer exists" messages. (Moore) - -The Perl functions didn't set the 'modified' flag. - -link.sh did not return an error on exit, which may cause Vim to start -installing, even though there is no executable to install. (Riehm) - -Vi incompatibility: In Vi "." redoes the "y" command. Added the 'y' flag to -'cpoptions'. Only for 'compatible' mode. - -":echohl" defined a new group, when the argument was not an existing group. - -"syn on" and ":syn off" could move the cursor, if there is a hidden buffer -that is shorter that the current cursor position. - -The " mark was not set when doing ":b file". - -When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at -the end of the line made the nextgroup also be found in the next line. - -":he g<CTRL-D>", then ":" and backspace to the start didn't redraw. - -X11 GUI: "gvim -rv" reversed the colors twice on Sun. Now Vim checks if the -result is really reverse video (background darker than foreground). - -"cat link.sh | vim -" didn't set syntax highlighting. - -Win32: Expanding "file.sw?" matched ".file.swp". This is an error of -FindnextFile() that we need to work around. (Kilgore) - -"gqgq" gave an "Invalid lnum" error on the last line. -Formatting with "gq" didn't format the first line after a change of comment -leader. - -There was no check for out-of-memory in win_alloc(). - -"vim -h" didn't mention "-register" and "-unregister" for the OLE version. - -Could not increase 'cmdheight' when the last window is only one line. Now -other windows are also made smaller, when necessary. - -Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x. -Changed return type of main() from void to int. (Nam) - -Using '~' twice in a substitute pattern caused a crash. - -"syn on" and ":syn off" could scroll the window, if there is a hidden buffer -that is shorter that the current cursor position. - -":if 0 | if 1 | endif | endif" didn't work. Same for ":while" and "elseif". - -With two windows on modified files, with 'autowrite' set, cursor in second -window, ":qa" gave a warning for the file in the first window, but then -auto-wrote the file in the second window. (Webb) - -Win32 GUI scrollbar could only handle 32767 lines. Also makes the -intellimouse wheel use the configurable number of scrolls. (Robinson) - -When using 'patchmode', and the backup file is on another partition, the file -copying messed up the write-file message. - -GUI X11: Alt-Backspace and Alt-Delete didn't work. - -"`0" could put the cursor after the last character in the line, causing -trouble for other commands, like "i". - -When completing tags in insert mode with ^X^], some matches were skipped, -because the compare with other tags was wrong. E.g., when "mnuFileSave" was -already there, "mnuFile" would be skipped. (Negri) - -When scrolling up/down, a syntax item with "keepend" didn't work properly. -Now the flags are also stored for the syntax state a the start of each line. - -When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the -effect. - -Win32 GUI: Don't display "No write since last chance" in a message box, but in -the Vim window. - -============================================================================== -VERSION 5.2 *version-5.2* - -Improvements made between version 5.1 and 5.2. - - -Long lines editable *long-lines* -------------------- - -A single long line that doesn't fit in the window doesn't show a line of @@@ -anymore. Redrawing starts at a character further on in the line, such that -the text around the cursor can be seen. This makes it possible to edit these -long lines when wrapping is on. - - -File browser added *file-browser-5.2* ------------------- - -The Win32, Athena and Motif GUI bring up a file requester if the user asks to -":browse" for the ":e", ":w", ":r", ":so", ":redirect" and -":mkexrc/vimrc/vsess" commands. ::browse e /foo/bar" opens the requester in -the /foo/bar directory, so you can have nice mapping rhs's like ":browse so -$vim/macros". If no initial dir specified for ":browse e", can be compiled to -either begin in the current directory, or that of the current buffer. (Negri -and Kahn) -Added the 'browsedir' option, with value "current", "last" or "buffer". Tells -wether a browse dialog starts in last used dir, dir of current buffer, or -current dir. ":browse w" is unaffected. -The default menus have been changed to use the ":browse" command. - - -Dialogs added *dialogs-added* -------------- - -Added the ":confirm" command. Works on ":e", ":q", ":w", ":cl". Win32, -Athena and Motif GUI uses a window-dialog. All other platforms can use -prompt in command-line. ":confirm qa" offers a choice to save all modified -files. - -confirm() function: allows user access to the confirm engine. - -Added 'v' flag to 'guioptions'. When included, a vertical button layout is -always used for the Win32 GUI dialog. Otherwise, a horizontal layout is -preferred. - -Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace. -To be used from a menu entry. (Negri) - - -Popup menu added *popup-menu-added* ----------------- - -When the 'mousemodel' option is set to "popup", the right mouse button -displays the top level menu headed with "PopUp" as pop-up context menu. The -"PopUp" menu is not displayed in the normal menu bar. This currently only -works for Win32 and Athena GUI. - - -Select mode added *new-Select-mode* ------------------ - -A new mode has been added: "Select mode". It is like Visual mode, but typing -a printable character replaces the selection. -- CTRL-G can be used to toggle between Visual mode and Select mode. -- CTRL-O can be used to switch from Select mode to Visual mode for one command. -- Added 'selectmode' option: tells when to start Select mode instead of Visual - mode. -- Added 'mousemodel' option: Change use of mouse buttons. -- Added 'keymodel' option: tells to use shifted special keys to start a - Visual or Select mode selection. -- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel' - and 'keymodel' for MS-Windows and xterm behavior. -- The xterm-like selection is now called modeless selection. -- Visual mode mappings and menus are used in Select mode. They automatically - switch to Visual mode first. Afterwards, reselect the area, unless it was - deleted. The "gV" command can be used in a mapping to skip the reselection. -- Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode. -- Backspace in Select mode deletes the selected area. - -"mswin.vim" script. Sets behavior mostly like MS-Windows. - - -Session files added *new-session-files* -------------------- - -":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the -currently loaded buffers and current directory, so that :so'ing the file -re-loads those files and cd's to that directory. Also stores and restores -windows. File names are made relative to session file. -The 'sessionoptions' option sets behavior of ":mksession". (Negri) - - -User defined functions and commands *new-user-defined* ------------------------------------ - -Added user defined functions. Defined with ":function" until ":endfunction". -Called with "Func()". Allows the use of a variable number of arguments. -Included support for local variables "l:name". Return a value with ":return". -See |:function|. -Call a function with ":call". When using a range, the function is called for -each line in the range. |:call| -"macros/justify.vim" is an example of using user defined functions. -User functions do not change the last used search pattern or the command to be -redone with ".". -'maxfuncdepth' option. Restricts the depth of function calls. Avoids trouble -(crash because of out-of-memory) when a function uses endless recursion. - -User definable Ex commands: ":command", ":delcommand" and ":comclear". -(Moore) See |user-commands|. - - -New interfaces *interfaces-5.2* --------------- - -Tcl interface. (Wilken) See |tcl|. -Uses the ":tcl", ":tcldo" and "tclfile" commands. - -Cscope support. (Kahn) (Sekera) See |cscope|. -Uses the ":cscope" and ":cstag" commands. Uses the options 'cscopeprg', -'cscopetag', 'cscopetagorder' and 'cscopeverbose'. - - -New ports *ports-5.2* ---------- - -Amiga GUI port. (Nielsen) Not tested much yet! - -RISC OS version. (Thomas Leonard) See |riscos|. -This version can run either with a GUI or in text mode, depending upon where -it is invoked. -Deleted the "os_archie" files, they were not working anyway. - - -Multi-byte support *new-multi-byte* ------------------- - -MultiByte support for Win32 GUI. (Baek) -The 'fileencoding' option decides how the text in the file is encoded. -":ascii" works for multi-byte characters. Multi-byte characters work on -Windows 95, even when using the US version. (Aaron) -Needs to be enabled in feature.h. -This has not been tested much yet! - - -New functions *new-functions-5.2* -------------- - -|browse()| puts up a file requester when available. (Negri) -|escape()| escapes characters in a string with a backslash. -|fnamemodify()| modifies a file name. -|input()| asks the user to enter a line. (Aaron) There is a separate - history for lines typed for the input() function. -|argc()| -|argv()| can be used to access the argument list. -|winbufnr()| buffer number of a window. (Aaron) -|winnr()| window number. (Aaron) -|matchstr()| Return matched string. -|setline()| Set a line to a string value. - - -New options *new-options-5.2* ------------ - -'allowrevins' Enable the CTRL-_ command in Insert and Command-line mode. -'browsedir' Tells in which directory a browse dialog starts. -'confirm' when set, :q :w and :e commands always act as if ":confirm" - is used. (Negri) -'cscopeprg' -'cscopetag' -'cscopetagorder' -'cscopeverbose' Set the |cscope| behavior. -'filetype' RISC-OS specific type of file. -'grepformat' -'grepprg' For the |:grep| command. -'keymodel' Tells to use shifted special keys to start a Visual or Select - mode selection. -'listchars' Set character to show in 'list' mode for end-of-line, tabs and - trailing spaces. (partly by Smith) Also sets character to - display if a line doesn't fit when 'nowrap' is set. -'matchpairs' Allows matching '<' with '>', and other single character - pairs. -'mousefocus' Window focus follows mouse (partly by Terhaar). Changing the - focus with a keyboard command moves the pointer to that - window. Also move the pointer when changing the window layout - (split window, change window height, etc.). -'mousemodel' Change use of mouse buttons. -'selection' When set to "inclusive" or "exclusive", the cursor can go one - character past the end of the line in Visual or Select mode. - When set to "old" the old behavior is used. When - "inclusive", the character under the cursor is included in the - operation. When using "exclusive", the new "ve" entry of - 'guicursor' is used. The default is a vertical bar. -'selectmode' Tells when to start Select mode instead of Visual mode. -'sessionoptions' Sets behavior of ":mksession". (Negri) -'showfulltag' When completing a tag in Insert mode, show the tag search - pattern (tidied up) as a choice as well (if there is one). -'swapfile' Whether to use a swap file for a buffer. -'syntax' When it is set, the syntax by that name is loaded. Allows for - setting a specific syntax from a modeline. -'ttymouse' Allows using xterm mouse codes for terminals which name - doesn't start with "xterm". -'wildignore' List of patterns for files that should not be completed at - all. -'wildmode' Can be used to set the type of expansion for 'wildchar'. - Replaces the CTRL-T command for command line completion. - Don't beep when listing all matches. -'winaltkeys' Win32 and Motif GUI. When "yes", ALT keys are handled - entirely by the window system. When "no", ALT keys are never - used by the window system. When "menu" it depends on whether - a key is a menu shortcut. -'winminheight' Minimal height for each window. Default is 1. Set to 0 if - you want zero-line windows. Scrollbar is removed for - zero-height windows. (Negri) - - - -New Ex commands *new-ex-commands-5.2* ---------------- - -|:badd| Add file name to buffer list without side effects. (Negri) -|:behave| Quickly set MS-Windows or xterm behavior. -|:browse| Use file selection dialog. -|:call| Call a function, optionally with a range. -|:cnewer| -|:colder| To access a stack of quickfix error lists. -|:comclear| Clear all user-defined commands. -|:command| Define a user command. -|:continue| Go back to ":while". -|:confirm| Ask confirmation if something unexpected happens. -|:cscope| Execute cscope command. -|:cstag| Use cscope to jump to a tag. -|:delcommand| Delete a user-defined command. -|:delfunction| Delete a user-defined function. -|:endfunction| End of user-defined function. -|:function| Define a user function. -|:grep| Works similar to ":make". (Negri) -|:mksession| Create a session file. -|:nohlsearch| Stop 'hlsearch' highlighting for a moment. -|:Print| This is Vi compatible. Does the same as ":print". -|:promptfind| Search dialog (Win32 GUI). -|:promptrepl| Search/replace dialog (Win32 GUI). -|:return| Return from a user-defined function. -|:simalt| Win32 GUI: Simulate alt-key pressed. (Negri) -|:smagic| Like ":substitute", but always use 'magic'. -|:snomagic| Like ":substitute", but always use 'nomagic'. -|:tcl| Execute TCL command. -|:tcldo| Execute TCL command for a range of lines. -|:tclfile| Execute a TCL script file. -|:tearoff| Tear-off a menu (Win32 GUI). -|:tmenu| -|:tunmenu| Win32 GUI: menu tooltips. (Negri) -|:star| :* Execute a register. - - -Changed *changed-5.2* -------- - -Renamed functions: - buffer_exists() -> bufexists() - buffer_name() -> bufname() - buffer_number() -> bufnr() - file_readable() -> filereadable() - highlight_exists() -> hlexists() - highlightID() -> hlID() - last_buffer_nr() -> bufnr("$") -The old ones are still there, for backwards compatibility. - -The CTRL-_ command in Insert and Command-line mode is only available when the -new 'allowrevins' option is set. Avoids that people who want to type SHIFT-_ -accidentally enter reverse Insert mode, and don't know how to get out. - -When a file name path in ":tselect" listing is too long, remove a part in the -middle and put "..." there. - -Win32 GUI: Made font selector appear inside Vim window, not just any odd -place. (Negri) - -":bn" skips help buffers, unless currently in a help buffer. (Negri) - -When there is a status line and only one window, don't show '^' in the status -line of the current window. - -":*" used to be used for "'<,'>", the Visual area. But in Vi it's used as an -alternative for ":@". When 'cpoptions' includes '*' this is Vi compatible. - -When 'insertmode' is set, using CTRL-O to execute a mapping will work like -'insertmode' was not set. This allows "normal" mappings to be used even when -'insertmode' is set. - -When 'mouse' was set already (e.g., in the .vimrc file), don't automatically -set 'mouse' when the GUI starts. - -Removed the 'N', 'I' and 'A' flags from the 'mouse' option. - -Renamed "toggle option" to "boolean option". Some people thought that ":set -xyz" would toggle 'xyz' on/off each time. - -The internal variable "shell_error" contains the error code from the shell, -instead of just 0 or 1. - -When inserting or replacing, typing CTRL-V CTRL-<CR> used to insert "<C-CR>". -That is not very useful. Now the CTRL key is ignored and a <CR> is inserted. -Same for all other "normal" keys with modifiers. Mapping these modified key -combinations is still possible. -In Insert mode, <C-CR> and <S-Space> can be inserted by using CTRL-K and then -the special character. - -Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt. They -are now installed like other documentation files. - -winheight() function returns -1 for a non-existing window. It used to be -zero, but that is a valid height now. - -The default for 'selection' is "inclusive", which makes a difference when -using "$" or the mouse to move the cursor in Visual mode. - -":q!" does not exit when there are changed buffers which are hidden. Use -":qa!" to exit anyway. - -Disabled the Perl/Python/Tcl interfaces by default. Not many people use them -and they make the executable a lot bigger. The internal scripting language is -now powerful enough for most tasks. - -The strings from the 'titlestring' and 'iconstring' options are used -untranslated for the Window title and icon. This allows for including a <CR>. -Previously a <CR> would be shown as "^M" (two characters). - -When a mapping is started in Visual or Select mode which was started from -Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode -until the mapping has ended. Makes it possible to use a mapping in Visual -mode that also works when the Visual mode was started from Select mode. - -Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus. This helps -when defining menus in the .vimrc file, or when sourcing mswin.vim. - -Unix: Use /var/tmp for .swp files, if it exists. Files there survive a -reboot (at least on Linux). - - -Added *added-5.2* ------ - ---with-motif-lib configure argument. Allows for using a static Motif library. - -Support for mapping numeric keypad +,-,*,/ keys. (Negri) -When not mapped, they produce the normal character. - -Win32 GUI: When directory dropped on Gvim, cd there and edit new buffer. -(Negri) - -Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be -used for mappings. - -In the output of ":map", highlight the "*" to make clear it's not part of the -rhs. (Roemer) - -When showing the Visual area, the cursor is not switched off, so that it can -be located. The Visual area is now highlighted with a grey background in the -GUI. This makes the cursor visible when it's also reversed. - -Win32: When started with single full pathname (e.g. via double-clicked file), -cd to that file's directory. (Negri) - -Win32 GUI: Tear-off menus, with ":tearoff <menu-name>" command. (Negri) -'t' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif. -It's included by default. -Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri) - -Added ^Kaa and ^KAA digraphs. -Added "euro" symbol to digraph.c. (Corry) - -Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis). -Other GUIs ignore '&' in a menu name. - -DJGPP: Faster screen updating (John Lange). - -Clustering of syntax groups ":syntax cluster" (Bigham). -Including syntax files: ":syntax include" (Bigham). - -Keep column when switching buffers, when 'nosol' is set (Radics). - -Number function for Perl interface. - -Support for Intellimouse in Athena GUI. (Jensen) - -":sleep" also accepts an argument in milliseconds, when "m" is used. - -Added 'p' flag in 'guioptions': Install callbacks for enter/leave window -events. Makes cursor blinking work for Terhaar, breaks it for me. - -"--help" and "--version" command-line arguments. - -Non-text in ":list" output is highlighted with NonText. - -Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as -synonym for "iB". New: "i<" and "i>", to select <thing>. All this also for -"a" objects. - -'O' flag in 'shortmess': message for reading a file overwrites any previous -message. (Negri) - -Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off. -Included a list with self-made toolbar bitmaps. (Negri) - -Added menu priority for sub-menus. Implemented for Win32 and Motif GUI. -Display menu priority with ":menu" command. -Default and Syntax menus now include priority for items. Allows inserting -menu items in between the default ones. - -When the 'number' option is on, highlight line numbers with the LineNr group. - -"Ignore" highlight group: Text highlighted with this is made blank. It is -used to hide special characters in the help text. - -Included Exuberant Ctags version 2.3, with C++ support, Java support and -recurse into directories. (Hiebert) - -When a tags file is not sorted, and this is detected (in a simplistic way), an -error message is given. - -":unlet" accepts a "!", to ignore non-existing variables, and accepts more -than one argument. (Roemer) -Completion of variable names for ":unlet". (Roemer) - -When there is an error in a function which is called by another function, show -the call stack in the error message. - -New file name modifiers: -":.": reduce file name to be relative to current dir. -":~": reduce file name to be relative to home dir. -":s?pat?sub?": substitute "pat" with "sub" once. -":gs?pat?sub?": substitute "pat" with "sub" globally. - -New configure arguments: --enable-min-features and --enable-max-features. -Easy way to switch to minimum or maximum features. - -New compile-time feature: modify_fname. For file name modifiers, e.g, -"%:p:h". Can be disabled to save some code (16 bit DOS). - -When using whole-line completion in Insert mode, and 'cindent' is set, indent -the line properly. - -MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri) - -Included new set of Farsi fonts. (Shiran) - -Accelerator text now also works in Motif. All menus can be defined with & for -mnemonic and TAB for accelerator text. They are ignored on systems that don't -support them. -When removing or replacing a menu, compare the menu name only up to the <Tab> -before the mnemonic. - -'i' and 'I' flags after ":substitute": ignore case or not. - -"make install" complains if the runtime files are missing. - -Unix: When finding an existing swap file that can't be opened, mention the -owner of the file in the ATTENTION message. - -The 'i', 't' and 'k' options in 'complete' now also print the place where they -are looking for matches. (Acevedo) - -"gJ" command: Join lines without inserting a space. - -Setting 'keywordprg' to "man -s" is handled specifically. The "-s" is removed -when no count given, the count is added otherwise. Configure checks if "man --s 2 read" works, and sets the default for 'keywordprg' accordingly. - -If you do a ":bd" and there is only one window open, Vim tries to move to a -buffer of the same type (i.e. non-help to non-help, help to help), for -consistent behavior to :bnext/:bprev. (Negri) - -Allow "<Nop>" to be used as the rhs of a mapping. ":map xx <Nop>", maps "xx" -to nothing at all. - -In a ":menu" command, "<Tab>" can be used instead of a real tab, in the menu -path. This makes it more easy to type, no backslash needed. - -POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:], -[:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], -[:space:], [:upper:] and [:xdigit:]. (Briscoe) - -regexp character classes (for fast syntax highlight matching): - digits: \d [0-9] \D not digit (Roemer) - hex: \x [0-9a-fA-F] \X not hex - octal: \o [0-7] \O not octal - word: \w [a-zA-Z0-9_] \W not word - head: \h [a-zA-Z_] \H not head - alphabetic: \a [a-zA-Z] \A not alphabetic - lowercase: \l [a-z] \L not lowercase - uppercase: \u [A-Z] \U not uppercase - -":set" now accepts "+=", |^=" and "-=": add or remove parts of a string -option, add or subtract a number from a number option. A comma is -automagically inserted or deleted for options that are a comma separated list. - -Filetype feature, for autocommands. Uses a file type instead of a pattern to -match a file. Currently only used for RISC OS. (Leonard) - -In a pattern for an autocommand, environment variables can be used. They are -expanded when the autocommand is defined. - -"BufFilePre" and "BufFilePost" autocommand evens: Before and after applying -the ":file" command to change the name of a buffer. -"VimLeavePre" autocommand event: before writing the .viminfo file. - -For autocommands argument: <abuf> is buffer number, like <afile>. - -Made syntax highlighting a bit faster when scrolling backwards, by keeping -more syncing context. - -Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or -inserting screen lines. - -GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved -less than a pixel. - -Included ":highlight" in bugreport.vim. - -Created install.exe program, for simplistic installation on DOS and -MS-Windows. - -New register: '_', the black hole. When writing to it, nothing happens. When -reading from it, it's always empty. Can be used to avoid a delete or change -command to modify the registers, or reduce memory use for big changes. - -CTRL-V xff enters character by hex number. CTRL-V o123 enters character by -octal number. (Aaron) - -Improved performance of syntax highlighting by skipping check for "keepend" -when there isn't any. - -Moved the mode message ("-- INSERT --") to the last line of the screen. When -'cmdheight' is more than one, messages will remain readable. - -When listing matching files, they are also sorted on 'suffixes', such that -they are listed in the same order as CTRL-N retrieves them. - -synIDattr() takes a third argument (optionally), which tells for which -terminal type to get the attributes for. This makes it possible to run -2html.vim outside of gvim (using color names instead of #RRGGBB). - -Memory profiling, only for debugging. Prints at exit, and with "g^A" command. -(Kahn) - -DOS: When using a file in the current drive, remove the drive name: -"A:\dir\file" -> "\dir\file". This helps when moving a session file on a -floppy from "A:\dir" to "B:\dir". - -Increased number of remembered jumps from 30 to 50 per window. - -Command to temporarily disable 'hls' highlighting until the next search: -":nohlsearch". - -"gp" and "gP" commands: like "p" and "P", but leave the cursor just after the -inserted text. Used for the CTRL-V command in MS-Windows mode. - - -Fixed *fixed-5.2* ------ - -Win32 GUI: Could draw text twice in one place, for fake-bold text. Removed -this, Windows will handle the bold text anyway. (Negri) - -patch 5.1.1: Win32s GUI: pasting caused a crash (Negri) - -patch 5.1.2: When entering another window, where characters before the cursor -have been deleted, could have a cursor beyond the end of the line. - -patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri) - -patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version -(Scott). - -patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that -doesn't fit in the window, and splitting that line in two. - -patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line -(so that the window scrolls horizontally), ":set wrap". Following Visual -selection was wrong. - -patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do -binary searching. - -patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler. - -patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear. - -patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer -without a name exists. - -patch 5.1.11: "make test" didn't work in the shadow directory. Also adjusted -"make shadow" for the links in the ctags directory. - -patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a -buffer name. - -patch 5.1.13: When completing file names on the command-line, reallocating the -command-line may go wrong. - -patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch -specified. - -Graceful handling of NULLs in drag-dropped file list. Handle passing NULL to -Fullname_save(). (Negri) - -Win32: ":!start" to invoke a program without opening a console, swapping -screens, or waiting for completion in either console or gui version. e.g. you -can type ":!start winfile". ALSO fixes "can't delete swapfile after spawning -a shell" bug. (enhancement of Aaron patch) (Negri) - -Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri) - -Shorten filenames on startup. If in /foo/bar, entering "vim ../bar/bang.c" -displays "bang.c" in status bar, not "/foo/bar/bang.c" (Negri) - -Win32 GUI: No copy to Windows clipboard when it's not desired. - -Win32s: Fix pasting from clipboard - made an assumption not valid under -Win32s. (Negri) - -Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing -functions. (Negri) - -Win32 GUI: Middle mouse button emulation now works in GUI! (Negri) - -Could skip messages when combining commands in one line, e.g.: -":echo "hello" | write". - -Perl interpreter was disabled before executing VimLeave autocommands. Could -not use ":perl" in them. (Aaron) - -Included patch for the Intellimouse (Aaron/Robinson). - -Could not set 'ls' to one, when last window has only one line. (Mitterand) - -Fixed a memory leak when removing menus. - -After ":only" the ruler could overwrite a message. - -Dos32: removed changing of __system_flags. It appears to work better when -it's left at the default value. - -p_aleph was an int instead of along, caused trouble on systems where -sizeof(int) != sizeof(long). (Schmidt) - -Fixed enum problems for Ultrix. (Seibert) - -Small redraw problem: "dd" on last line in file cleared wrong line. - -Didn't interpret "cmd | endif" when "cmd" starts with a range. E.g. "if 0 | -.d | endif". - -Command "+|" on the last line of the file caused ml_get errors. - -Memory underrun in eval_vars(). (Aaron) - -Don't rename files in a difficult way, except on Windows 95 (was also done on -Windows NT). - -Win32 GUI: An external command that produces an error code put the error -message in a dialog box. had to close the window and close the dialog. Now -the error code is displayed in the console. (Negri) - -"comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle) - -In Insert mode, when entering a window in Insert mode, allow the cursor to be -one char beyond the text. - -Renamed machine dependent rename() to mch_rename(). Define mch_rename() to -rename() when it works properly. - -Rename vim_chdir() to mch_chdir(), because it's machine dependent. - -When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more -files to edit" error. - -In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed. -Moved the Python_Release_Vim() to before the VimErrorCheck(). (Harkins) - -Give an error message for an unknown argument after "--". E.g. for "vim ---xyz". - -The FileChangedShell autocommand didn't set <afile> to the name of the changed -file. - -When doing ":e file", causing the attention message, there sometimes was no -hit-enter prompt. Caused by empty line or "endif" at end of sourced file. - -A large number of patches for the VMS version. (Hunsaker) - -When CTRL-L completion (find longest match) results in a shorter string, no -completion is done (happens with ":help"). - -Crash in Win32 GUI version, when using an Ex "@" command, because -LinePointers[] was used while not initialized. - -Win32 GUI: allow mapping of Alt-Space. - -Output from "vim -h" was sent to stderr. Sending it to stdout is better, so -one can use "vim -h | more". - -In command-line mode, ":vi[!]" should reload the file, just like ":e[!]". -In Ex mode, ":vi" stops Ex mode, but doesn't reload the file. This is Vi -compatible. - -When using a ":set ls=1" in the .gvimrc file, would get a status line for a -single window. (Robinson) - -Didn't give an error message for ":set ai,xx". (Roemer) -Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx". - -Non-Unix systems: That a file exists but is unreadable is recognized as "new -file". Now check for existence when file can't be opened (like Unix). - -Unix: osdef.sh didn't handle declarations where the function name is at the -first column of the line. - -DJGPP: Shortening of file names didn't work properly, because get_cwd() -returned a path with backslashes. (Negri) - -When using a 'comments' part where a space is required after the middle part, -always insert a space when starting a new line. Helps for C comments, below a -line with "/****". - -Replacing path of home directory with "~/" could be wrong for file names -with embedded spaces or commas. - -A few fixes for the Sniff interface. (Leherbauer) - -When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused -trouble. Same for ":s/x/y/c" prompt. - -With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks, -instead of the characters specified with 'listchars'. Also for other -characters that take more than one screen character. - -When setting 'guifont' to an unknown font name, the previous font was lost and -a default font would be used. (Steed) - -DOS: Filenames in the root directory didn't get shortened properly. (Negri) - -DJGPP: making a full path name out of a file name didn't work properly when -there is no _fullpath() function. (Negri) - -Win32 console: ":sh" caused a crash. (Negri) - -Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably -(could hang Windows 95). (Negri) - -Win32: The change-drive function was not correct, went to the wrong drive. -(Tsindlekht) - -GUI: When editing a command line in Ex mode, Tabs were sometimes not -backspaced properly, and unprintable characters were displayed directly. -non-GUI can still be wrong, because a system function is called for this. - -":set" didn't stop after an error. For example ":set no ai" gave an error for -"no", but still set "ai". Now ":set" stops after the first error. - -When running configure for ctags, $LDFLAGS wasn't passed to it, causing -trouble for IRIX. - -"@%" and "@#" when file name not set gave an error message. Now they just -return an empty string. (Steed) - -CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers. -(Steed) - -":echo" always started with a blank. - -Updating GUI cursor shape didn't always work (e.g., when blinking is off). - -In silent Ex mode ("ex -s" or "ex <file") ":s///p" didn't print a line. Also -a few other commands that explicitly print a text line didn't work. Made this -Vi compatible. - -Win32 version of _chdrive() didn't return correct value. (Tsindlekht) - -When using 't' in 'complete' option, no longer give an error message for a -missing tags file. - -Unix: tgoto() can return NULL, which was not handled correctly in configure. - -When doing ":help" from a buffer where 'binary' is set, also edited the help -file in binary mode. Caused extra ^Ms for DOS systems. - -Cursor position in a file was reset to 1 when closing a window. - -":!ls" in Ex mode switched off echo. - -When doing a double click in window A, while currently in window B, first -click would reset double click time, had to click three times to select a -word. - -When using <F11> in mappings, ":mkexrc" produced an exrc file that can't be -used in Vi compatible mode. Added setting of 'cpo' to avoid this. Also, add -a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a -special key name. - -Gave confusing error message for ":set guifont=-*-lucida-*": first "font is -not fixed width", then "Unknown font". - -Some options were still completely left out, instead of included as hidden -options. - -While running the X11 GUI, ignore SIGHUP signals. Avoids a crash after -executing an external command (in rare cases). - -In os_unixx.h, signal() was defined to sigset(), while it already was. - -Memory leak when executing autocommands (was reported as a memory leak in -syntax highlighting). - -Didn't print source of error sometimes, because pointers were the same, -although names were different. - -Avoid a number of UMR errors from Purify (third argument to open()). - -A swap file could still be created just after setting 'updatecount' to zero, -when there is an empty buffer and doing ":e file". (Kutschera) - -Test 35 failed on 64 bit machines. (Schild) - -With "p" and "P" commands, redrawing was slow. - -Awk script for html documentation didn't work correctly with AIX awk. -Replaced "[ ,.);\] ]" with "[] ,.); ]". (Briscoe) -The makehtml.awk script had a small problem, causing extra lines to be -inserted. (Briscoe) - -"gqgq" could not be repeated. Repeating for "gugu" and "gUgU" worked in a -wrong way. Also made "gqq" work to be consistent with "guu". - -C indent was wrong after "case ':':". - -":au BufReadPre *.c put": Line from put text was deleted, because the buffer -was still assumed to be empty. - -Text pasted with the Edit/Paste menu was subject to 'textwidth' and -'autoindent'. That was inconsistent with using the mouse to paste. Now "*p -is used. - -When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag, -window was split. - -":ts" got stuck on a tags line that has two extra fields. - -In Insert mode, with 'showmode' on, <C-O><C-G> message was directly -overwritten by mode message, if preceded with search command warning message. - -When putting the result of an expression with "=<expr>p, newlines were -inserted like ^@ (NUL in the file). Now the string is split up in lines at -the newline. - -putenv() was declared with "const char *" in pty.c, but with "char *" in -osdef2.h.in. Made the last one also "const char *". - -":help {word}", where +{word} is a feature, jumped to the feature list instead -of where the command was explained. E.g., ":help browse", ":help autocmd". - -Using the "\<xx>" form in an expression only got one byte, even when using a -special character that uses several bytes (e.g., "\<F9>"). -Changed "\<BS>" to produce CTRL-H instead of the special key code for the -backspace key. "\<Del>" produces 0x7f. - -":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'. - -The shell syntax didn't contain a "syn sync maxlines" setting. In a long file -without recognizable items, syncing took so long it looked like Vim hangs. -Added a maxlines setting, and made syncing interruptable. - -The "gs" command didn't flush output before waiting. - -Memory leaks for: - ":if 0 | let a = b . c | endif" - "let a = b[c]" - ":so {file}" where {file} contains a ":while" - -GUI: allocated fonts were never released. (Leonard) - -Makefile.bor: -- Changed $(DEFINES) into a list of "-D" options, so that it can also be used - for the resource compiler. (not tested!) -- "bcc.cfg" was used for all configurations. When building for another - configuration, the settings for the previous one would be used. Moved - "bcc.cfg" to the object directory. (Geddes) -- Included targets for vimrun, install, ctags and xxd. Changed the default to - use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron) - -"2*" search for the word under the cursor with "2" prepended. (Leonard) - -When deleting into a specific register, would still overwrite the non-Win32 -GUI selection. Now ""x"*P works. - -When deleting into the "" register, would write to the last used register. -Now ""x always writes to the unnamed register. - -GUI Athena: A submenu with a '.' in it didn't work. E.g., -":amenu Syntax.XY\.Z.foo lll". - -When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of -matching tags could change, because the current file is different. Now the -existing matches are kept in the same order, newly found matches are added -after them, not matter what the current file is. - -":ta" didn't find the second entry in a tags file, if the second entry was -longer than the first one. - -When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the -wrong position. can_si was still TRUE when the cursor is not in the indent of -the line. - -Running an external command in Win32 version had the problem that Vim exits -when the X on the console is hit (and confirmed). Now use the "vimrun" -command to start the external command indirectly. (Negri) - -Win32 GUI: When running an external filter, do it in a minimized DOS box. -(Negri) - -":let" listed variables without translation into printable characters. - -Win32 console: When resizing the window, switching back to the old size -(when exiting or executing an external command) sometimes failed. (Negri) -This appears to also fix a "non fixable" problem: -Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar, -the scrollbar disappeared and was not restored when Vim exits. This does work -under NT 3.51, it appears not to be a Vim problem. - -When executing BufDelete and BufUnload autocommands for a buffer without a -name, the name of the current buffer was used for <afile>. - -When jumping to a tag it reported "tag 1 of >2", while in fact there could be -only two matches. Changed to "tag 1 of 2 or more". - -":tjump tag" did a linear search in the tags file, which can be slow. - -Configure didn't find "LibXm.so.2.0", a Xm library with a version number. - -Win32 GUI: When using a shifted key with ALT, the shift modifier would remain -set, even when it was already used by changing the used key. E.g., "<M-S-9>" -resulted in "<M-S-(>", but it should be "<M-(>". (Negri) - -A call to ga_init() was often followed by setting growsize and itemsize. -Created ga_init2() for this, which looks better. (Aaron) - -Function filereadable() could call fopen() with an empty string, which might -be illegal. - -X Windows GUI: When executing an external command that outputs text, could -write one character beyond the end of a buffer, which caused a crash. (Kohan) - -When using "*" or "#" on a string that includes '/' or '?' (when these are -included in 'isk'), they were not escaped. (Parmelan) - -When adding a ToolBar menu in the Motif GUI, the submenu_id field was not -cleared, causing random problems. - -When adding a menu, the check if this menu (or submenu) name already exists -didn't compare with the simplified version (no mnemonic or accelerator) of the -new menu. Could get two menus with the same name, e.g., "File" and "&File". - -Breaking a line because of 'textwidth' at the last line in the window caused a -redraw of the whole window instead of a scroll. Speeds up normal typing with -'textwidth' a lot for slow terminals. - -An invalid line number produced an "invalid range" error, even when it wasn't -to be executed (inside "if 0"). - -When the unnamed, first buffer is re-used, the "BufDelete" autocommand was -not called. It would stick in a buffer list menu. - -When doing "%" on the NUL after the line, a "{" or "}" in the last character -of the line was not found. - -The Insert mode menu was not used for the "s" command, the Operator-pending -menu was used instead. - -With 'compatible' set, some syntax highlighting was not correct, because of -using "[\t]" for a search pattern. Now use the regexps for syntax -highlighting like the 'cpoptions' option is empty (as was documented already). - -When using "map <M-Space> ms" or "map <Space> sss" the output of ":map" didn't -show any lhs for the mapping (if 'isprint' includes 160). Now always use -<Space> and <M-Space>, even when they are printable. - -Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for -Athena, where menus don't wrap). - -When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and -digits, repeating the insert didn't work. - -The file "tools/ccfilter.README.txt" could not be unpacked when using short -file names, because of the two dots. Renamed it to -"tools/ccfilter_README.txt". - -For a dark 'background', using Blue for Directory and SpecialKey highlight -groups is not very readable. Use Cyan instead. - -In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into -a block with a local variable. That's illegal for some compilers. - -Win32 GUI: There was a row of pixels at the bottom of the window which was not -drawn. (Aaron) - -Under DOS, editing "filename/" created a swap file of "filename/.swp". Should -be "filename/_swp". - -Win32 GUI: pointer was hidden when executing an external command. - -When 'so' is 999, "J" near the end of the file didn't redisplay correctly. - -":0a" inserted after the first line, instead of before the first line. - -Unix: Wildcard expansion didn't handle single quotes and {} patterns. Now -":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*'). -":file {o}{n}{e}" now results in file name "one". - -Memory leak when setting a string option back to its default value. - -============================================================================== -VERSION 5.3 *version-5.3* - -Version 5.3 was a bug-fix version of 5.2. There are not many changes. -Improvements made between version 5.2 and 5.3: - -Changed *changed-5.3* -------- - -Renamed "IDE" menu to "Tools" menu. - - -Added *added-5.3* ------ - -Win32 GUI: Give a warning when Vim is activated, and one of the files changed -since editing started. (Negri) - - -Fixed *fixed-5.3* ------ - -5.2.1: Win32 GUI: space for external command was not properly allocated, could -cause a crash. (Aaron) This was the reason to bring out 5.3 quickly after -5.2. - -5.2.2: Some commands didn't complain when used without an argument, although -they need one: ":badd", ":browse", ":call", ":confirm", ":behave", -":delfunction", ":delcommand" and ":tearoff". -":endfunction" outside of a function gave wrong error message: "Command not -implemented". Should be ":endfunction not inside a function". - -5.2.3: Win32 GUI: When gvim was installed in "Program files", or another path -with a space in it, executing external commands with vimrun didn't work. - -5.2.4: Pasting with the mouse in Insert mode left the cursor on the last -pasted character, instead of behind it. - -5.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left -didn't include the last character in the selection. - -5.2.6: When deleting text from Insert mode (with "<C-O>D" or the mouse), which -includes the last character in the line, the cursor could be left on the last -character in the line, instead of just after it. - -5.2.7: Win32 GUI: scrollbar was one pixel too big. - -5.2.8: Completion of "PopUp" menu showed the derivates "PopUpc", "PopUPi", -etc. ":menu" also showed these. - -5.2.9: When using two input() functions on a row, the prompt would not be -drawn in column 0. - -5.2.10: A loop with input() could not be broken with CTRL-C. - -5.2.11: ":call asdf" and ":call asdf(" didn't give an error message. - -5.2.12: Recursively using ":normal" crashes Vim after a while. E.g.: -":map gq :normal gq<CR>" - -5.2.13: Syntax highlighting used 'iskeyword' from wrong buffer. When using -":help", then "/\k*" in another window with 'hlsearch' set. - -5.2.14: When using ":source" from a function, global variables would not be -available unless "g:" was used. - -5.2.15: XPM files can have the extension ".pm", which is the same as for Perl -modules. Added "syntax/pmfile.vim" to handle this. - -5.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an -empty buffer. mch_Fullname() didn't append a slash at the end of a directory -name. - -Should include the character under the cursor in the Visual area when using -'selection' "exclusive". This wasn't done for "%", "e", "E", "t" and "f". - -""p would always put register 0, instead of the unnamed (last used) register. -Reverse the change that ""x doesn't write in the unnamed (last used) register. -It would always write in register 0, which isn't very useful. Use "-x for the -paste mappings in Visual mode. - -When there is one long line on the screen, and 'showcmd' is off, "0$" didn't -redraw the screen. - -Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor -shape is changed. (Negri) - -When cancelling Visual mode, and the cursor moves to the start, the wanted -column wasn't set, "k" or "j" moved to the wrong column. - -When using ":browse" or ":confirm", was checking for a comment and separating -bar, which can break some commands. - -Included fixes for Macintosh. (Kielhorn) - -============================================================================== -VERSION 5.4 *version-5.4* - -Version 5.4 adds new features, useful changes and a lot of bug fixes. - - -Runtime directory introduced *new-runtime-dir* ----------------------------- - -The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM. -You normally don't set $VIMRUNTIME but let Vim find it, by using -$VIM/vim{version}, or use $VIM when that doesn't exist. This allows for -separating the user files from the distributed files and makes it more easy to -upgrade to another version. It also makes it possible to keep two versions of -Vim around, each with their own runtime files. - -In the Unix distribution the runtime files have been moved to the "runtime" -directory. This makes it possible to copy all the runtime files at once, -without the need to know what needs to be copied. - -The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level -"vim" directory. This is to make clear that user-modified files should be put -here. The directory that contains the executables doesn't have '-' or '.' -characters. This avoids strange extensions. - -The $VIM and $VIMRUNTIME variables are set when they are first used. This -allows them to be used by Perl, for example. - -The runtime files are also found in a directory called "$VIM/runtime". This -helps when running Vim after just unpacking the runtime archive. When using -an executable in the "src" directory, Vim checks if "vim54" or "runtime" can -be added after removing it. This make the runtime files be found just after -compiling. - -A default for $VIMRUNTIME can be given in the Unix Makefile. This is useful -if $VIM doesn't point to above the runtime directory but to e.g., "/etc/". - - -Filetype introduced *new-filetype-5.4* -------------------- - -Syntax files are now loaded with the new FileType autocommand. Old -"mysyntaxfile" files will no longer work. |filetypes| - -The scripts for loading syntax highlighting have been changed to use the -new Syntax autocommand event. - -This combination of Filetype and Syntax events allows tuning the syntax -highlighting a bit more, also when selected from the Syntax menu. The -FileType autocommand can also be used to set options and mappings specifically -for that type of file. - -The "$VIMRUNTIME/filetype.vim" file is not loaded automatically. The -":filetype on" command has been added for this. ":syntax on" also loads it. - -The 'filetype' option has been added. It is used to trigger the FileType -autocommand event, like the 'syntax' option does for the Syntax event. - -":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch -syntax highlighting on/off for the current file. - -The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim. The Syntax -menu is included both when ":filetype on" and when ":syntax manual" is used. - -Renamed the old 'filetype' option to 'osfiletype'. It was only used for -RISCOS. 'filetype' is now used for the common file type. - -Added the ":syntax manual" command. Allows manual selection of the syntax to -be used, e.g., from a modeline. - - -Vim script line continuation *new-line-continuation* ----------------------------- - -When an Ex line starts with a backslash, it is concatenated to the previous -line. This avoids the need for long lines. |line-continuation| (Roemer) -Example: > - if has("dialog_con") || - \ has("dialog_gui") - :let result = confirm("Enter your choice", - \ "&Yes\n&No\n&Maybe", - \ 2) - endif - - -Improved session files *improved-sessions* ----------------------- - -New words for 'sessionoptions': -- "help" Restore the help window. -- "blank" Restore empty windows. -- "winpos" Restore the Vim window position. Uses the new ":winpos" - command -- "buffers" Restore hidden and unloaded buffers. Without it only the - buffers in windows are restored. -- "slash" Replace backward by forward slashes in file names. -- "globals" Store global variables. -- "unix" Use unix file format (<NL> instead of <CR><NL>) - -The ":mksession" and 'sessionoptions' are now in the +mksession feature. - -The top line of the window is also restored when using a session file. - -":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected -when loading a file. - -(Most of this was done by Vince Negri and Robert Webb) - - -Autocommands improved *improved-autocmds-5.4* ---------------------- - -New events: -|FileType| When the file type has been detected. -|FocusGained| When Vim got input focus. (Negri) -|FocusLost| When Vim lost input focus. (Negri) -|BufCreate| Called just after a new buffer has been created or has been - renamed. (Madsen) -|CursorHold| Triggered when no key has been typed for 'updatetime'. Can be - used to do something with the word under the cursor. (Negri) - Implemented CursorHold autocommand event for Unix. (Zellner) - Also for Amiga and MS-DOS. -|GUIEnter| Can be used to do something with the GUI window after it has - been created (e.g., a ":winpos 100 50"). -|BufHidden| When a buffer becomes hidden. Used to delete the - option-window when it becomes hidden. - -Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen) - -The "<amatch>" pattern can be used like "<afile>" for autocommands, except -that it is the matching value for the FileType and Syntax events. - -When ":let @/ = <string>" is used in an autocommand, this last search pattern -will be used after the autocommand finishes. - -Made loading autocommands a bit faster. Avoid doing strlen() on each exiting -pattern for each new pattern by remembering the length. - - -Encryption *new-encryption* ----------- - -Files can be encrypted when writing and decrypted when reading. Added the -'key' option, "-x" command line argument and ":X" command. |encryption| (based -on patch from Mohsin Ahmed) - -When reading a file, there is an automatic detection whether it has been -crypted. Vim will then prompt for the key. - -Note that the encryption method is not compatible with Vi. The encryption is -not unbreakable. This allows it to be exported from the US. - - -GTK GUI port *new-GTK-GUI* ------------- - -New GUI port for GTK+. Includes a toolbar, menu tearoffs, etc. |gui-gtk| -Added the |:helpfind| command. (Kahn and Dalecki) - - -Menu changes *menu-changes-5.4* ------------- - -Menus can now also be used in the console. It is enabled by the new -'wildmenu' option. This shows matches for command-line completion like a -menu. This works as a minimal file browser. - -The new |:emenu| command can be used to execute a menu item. - -Uses the last status line to list items, or inserts a line just above the -command line. (Negri) - -The 'wildcharx' option can be used to trigger 'wildmenu' completion from a -mapping. - -When compiled without menus, this can be detected with has("menu"). Also show -this in the ":version" output. Allow compiling GUI versions without menu -support. Only include toolbar support when there is menu support. - -Moved the "Window" menu all the way to the right (priority 70). Looks more -familiar for people working with MS-Windows, shouldn't matter for others. - -Included "Buffers" menu. Works with existing autocommands and functions. It -can be disabled by setting the "no_buffers_menu" variable. (Aaron and Madsen) - -Win32 supports separators in a menu: "-.*-". (Geddes) -Menu separators for Motif now work too. - -Made Popup menu for Motif GUI work. (Madsen) - -'M' flag in 'guioptions': Don't source the system menu. - -All the menu code has been moved from gui.c to menu.c. - - -Viminfo improved *improved-viminfo* ----------------- - -New flags for 'viminfo': -'!' Store global variables in the viminfo file if they are in uppercase - letters. (Negri) -'h' Do ":nohlsearch" when loading a viminfo file. - -Store search patterns in the viminfo file with their offset, magic, etc. Also -store the flag whether 'hlsearch' highlighting is on or off (which is not used -if the 'h' flag is in 'viminfo'). - -Give an error message when setting 'viminfo' without commas. - - -Various new commands *new-commands-5.4* --------------------- - -Operator |g?|: rot13 encoding. (Negri) - -|zH| and |zL| commands: Horizontal scrolling by half a page. -|gm| move cursor to middle of screen line. (Ideas by Campbell) - -Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|, -|v_b_<| and |v_b_>|. (Kelly) - -New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to -Normal mode when in Insert or Command-line mode. Can be used by VisVim or -other OLE programs to make sure Vim is in Normal mode, without causing a beep. -|CTRL-\_CTRL-N| - -":cscope kill" command to use the connection filename. |:cscope| (Kahn) - -|:startinsert| command: Start Insert mode next. - -|:history| command, to show all four types of histories. (Roemer) - -|[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end -of method in a (Java) class. - -":@*" executes the * register. |:@| (Acevedo) - -|go| and |:goto| commands: Jump to byte offset in the file. - -|gR| and |gr| command: Virtual Replace mode. Replace characters without -changing the layout. (Webb) - -":cd -" changes to the directory from before the previous ":cd" command. -|:cd-| (Webb) - -Tag preview commands |:ptag|. Shows the result of a ":tag" in a dedicated -window. Can be used to see the context of the tag (e.g., function arguments). -(Negri) -|:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore) -'previewheight' option, height for the preview window. -Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|. - -|:find| and |:sfind| commands: Find a file in 'path', (split window) and edit -it. - -The |:options| command opens an option window that shows the current option -values. Or use ":browse set" to open it. Options are grouped by function. -Offers short help on each option. Hit <CR> to jump to more help. Edit the -option value and hit <CR> on a "set" line to set a new value. - - -Various new options *new-options-5.4* -------------------- - -Scroll-binding: 'scrollbind' and 'scrollopt' options. Added |:syncbind| -command. Makes windows scroll the same amount (horizontally and/or -vertically). (Ralston) - -'conskey' option for MS-DOS. Use direct console I/O. This should work with -telnet (untested!). - -'statusline' option: Configurable contents of the status line. Also allows -showing the byte offset in the file. Highlighting with %1* to %9*, using the -new highlight groups User1 to User9. (Madsen) - -'rulerformat' option: Configurable contents of the ruler, like 'statusline'. -(Madsen) - -'write' option: When off, writing files is not allowed. Avoids overwriting a -file even with ":w!". The |-m| command line option resets 'write'. - -'clipboard' option: How the clipboard is used. Value "unnamed": Use unnamed -register like "*. (Cortopassi) Value "autoselect": Like what 'a' in -'guioptions' does but works in the terminal. - -'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI -versions. Allows using normal fonts when vim is compiled with this feature. -(Nam) - -'guiheadroom' option: How much room to allow above/below the GUI window. -Used for Motif, Athena and GTK. - -Implemented 'tagstack' option: When off, pushing tags onto the stack is -disabled (Vi compatible). Useful for mappings. - -'shellslash' option. Only for systems that use a backslash as a file -separator. This option will use a forward slash in file names when expanding -it. Useful when 'shell' is sh or csh. - -'pastetoggle' option: Key sequence that toggles 'paste'. Works around the -problem that mappings don't work in Insert mode when 'paste' is set. - -'display' option: When set to "lastline", the last line fills the window, -instead of being replaced with "@" lines. Only the last three characters are -replaced with "@@@", to indicate that the line has not finished yet. - -'switchbuf' option: Allows re-using existing windows on a buffer that is being -jumped to, or split the window to open a new buffer. (Roemer) - -'titleold' option. Replaces the fixed string "Thanks for flying Vim", which -is used to set the title when exiting. (Schild) - - -Vim scripts *new-script-5.4* ------------ - -The |exists()| function can also check for existence of a function. (Roemer) -An internal function is now found with a binary search, should be a bit -faster. (Roemer) - -New functions: -- |getwinposx()| and |getwinposy()|: get Vim window position. (Webb) -- |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history - available. (Roemer) -- |maparg()|: Returns rhs of a mapping. Based on a patch from Vikas. -- |mapcheck()|: Check if a map name matches with an existing one. -- |visualmode()|: Return type of last Visual mode. (Webb) -- |libcall()|: Call a function in a library. Currently only for Win32. (Negri) -- |bufwinnr()|: find window that contains the specified buffer. (Roemer) -- |bufloaded()|: Whether a buffer exists and is loaded. -- |localtime()| and |getftime()|: wall clock time and last modification time - of a file (Webb) -- |glob()|: expand file name wildcards only. -- |system()|: get the raw output of an external command. (based on a patch - from Aaron). -- |strtrans()|: Translate String into printable characters. Used for - 2html.vim script. -- |append()|: easy way to append a line of text in a buffer. - -Changed functions: -- Optional argument to |strftime()| to give the time in seconds. (Webb) -- |expand()| now also returns names for files that don't exist. - -Allow numbers in the name of a user command. (Webb) - -Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc. The -ones from version 5.3 can be used without "v:" too, for backwards -compatibility. - -New variables: -"v:warningmsg" and "v:statusmsg" internal variables. Contain the last given -warning and status message. |v:warningmsg| |v:statusmsg| (Madsen) -"v:count1" variable: like "v:count", but defaults to one when no count is -used. |v:count1| - -When compiling without expression evaluation, "if 1" can be used around the -not supported commands to avoid it being executed. Works like in Vim 4.x. -Some of the runtime scripts gave errors when used with a Vim that was compiled -with minimal features. Now "if 1" is used around code that is not always -supported. - -When evaluating an expression with && and ||, skip the parts that will not -influence the outcome. This makes it faster and avoids error messages. (Webb) -Also optimized the skipping of expressions inside an "if 0". - - -Avoid hit-enter prompt *avoid-hit-enter* ------------------------ - -Added 'T' flag to 'shortmess': Truncate all messages that would cause the -hit-enter prompt (unless that would happen anyway). -The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from -the ":cn" command. - -The default for 'shortmess' is now "filnxtToO", to make most messages fit on -the command line, and not cause the hit-enter prompt. - -Previous messages can be viewed with the new |:messages| command. - -Some messages are shown fully, even when 'shortmess' tells to shorten -messages, because the user is expected to want to see them in full: CTRL-G and -some quickfix commands. - - -Improved quickfix *improved-quickfix* ------------------ - -Parse change-directory lines for gmake: "make[1]: Entering directory 'name'". -Uses "%D" and "%X" in 'errorformat'. -Also parse "Making {target} in {dir}" messages from make. Helps when not -using GNU make. (Schandl) - -Use 'isfname' for "%f" in 'errorformat'. - -Parsing of multi-line messages. |errorformat-multi-line| - -Allow a range for the |:clist| command. (Roemer) - -Support for "global" file names, for error formats that output the file name -once for several errors. (Roemer) - -|:cnfile| jumps to first error in next file. - -"$*" in 'makeprg' is replaced by arguments to ":make". (Roemer) - - -Regular expressions *regexp-changes-5.4* -------------------- - -In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$| -In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson) - -In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered -end-of-line. Now use "$" as end-of-line and "\$" for a literal dollar. Same -for '^' after "\(" and "\|". |/\$| |/\^| - -Some search patterns can be extremely slow, even though they are not really -illegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting any regexp -search with CTRL-C. - -Register "/: last search string (read-only). (Kohan) Changed to use last used -search pattern (like what 'hlsearch' uses). Can set the search pattern with -":let @/ = {expr}". - -Added character classes to search patterns, to avoid the need for removing the -'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and -|[:escape:]|. - -By adding a '?' after a comparative operator in an expression, the comparison -is done by ignoring case. |expr-==?| - - -Other improvements made between version 5.3 and 5.4 ---------------------------------------------------- - -Changed *changed-5.4* -------- - -Unix: Use $TMPDIR for temporary files, if it is set and exists. - -Removed "Empty buffer" message. It isn't useful and can cause a hit-enter -prompt. (Negri) - -"ex -" now reads commands from stdin and works in silent mode. This is to be -compatible with the original "ex" command that is used for scripts. - -Default range for ":tcldo" is the whole file. - -Cancelling Visual mode with ESC moved the cursor. There appears to be no -reason for this. Now leave the cursor where it is. - -The ":grep" and ":make" commands see " as part of the arguments, instead of -the start of a comment. - -In expressions the "=~" and "!~" operators no longer are affected by -'ignorecase'. - -Renamed vimrc_example to vimrc_example.vim and gvimrc_example to -gvimrc_example.vim. Makes them being recognized as vim scripts. - -"gd" no longer starts searching at the end of the previous function, but at -the first blank line above the start of the current function. Avoids that -using "gd" in the first function finds global a variable. - -Default for 'complete' changed from ".,b" to ".,w,b,u,t,i". Many more matches -will be found, at the cost of time (the search can be interrupted). - -It is no longer possible to set 'shell*' options from a modeline. Previously -only a warning message was given. This reduces security risks. - -The ordering of the index of documentation files was changed to make it more -easy to find a subject. - -On MS-DOS and win32, when $VIM was not set, $HOME was used. This caused -trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files -would not be found. Now use $HOME only for _vimrc, _gvimrc, etc., not to find -the runtime file. - -When 'tags' is "./{fname}" and there is no file name for the current buffer, -just use it. Previously it was skipped, causing "vim -t {tag}" not to find -many tags. - -When trying to select text in the 'scrolloff' area by mouse dragging, the -resulting scrolling made this difficult. Now 'scrolloff' is temporarily set -to 0 or 1 to avoid this. But still allow scrolling in the top line to extend -to above the displayed text. - -Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc -comments work. Also helps for C comments that start with "/*******". - -CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used -after a non-ID character, which can take a very long time. Now limit this to -200 matches. Also used for command-line tag completion. - -The OS/2 distribution has been split in two files. It was too big to fit on a -floppy. The same runtime archive as for the PC is now used. - -In the documentation, items like <a-z> have been replaced with {a-z} for -non-optional arguments. This avoids confusion with key names: <C-Z> is a -CTRL-Z, not a character between C and Z, that is {C-Z}. - - -Added *added-5.4* ------ - -Color support for the iris-ansi builtin termcap entry. (Tubman) - -Included VisVim version 1.3a. (Erhardt) - -Win32 port for SNiFF+ interface. (Leherbauer) -Documentation file for sniff interface: if_sniff.txt. (Leherbauer) - -Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory. -To be used with the OLE version of gvim under MS-Windows. (Schaller) - -Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert) - -When a file that is being edited is deleted, give a warning (like when the -time stamp changed). - -Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo) - -Linux console mouse support through "gpm". (Tsindlekht) - -Security fix: Disallow changing 'secure' and 'exrc' from a modeline. When -'secure' is set, give a warning for changing options that contain a program -name. - -Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege) - -When giving an error message for an ambiguous mapping, include the offending -mapping. (Roemer) - -Command line editing: -- Command line completion of mappings. (Roemer) -- Command line completion for ":function", ":delfunction", ":let", ":call", - ":if", etc. (Roemer) -- When using CTRL-D completion for user commands that have - "-complete=tag_listfiles" also list the file names. (Madsen) -- Complete the arguments of the ":command" command. (Webb) -- CTRL-R . in command line inserts last inserted text. CTRL-F, CTRL-P, CTRL-W - and CTRL-A after CTRL-R are used to insert an object from under the cursor. - (Madsen) - -Made the text in uganda.txt about copying Vim a bit more clear. - -Updated the Vim tutor. Added the "vimtutor" command, which copies the tutor -and starts Vim on it. "make install" now also copies the tutor. - -In the output of ":clist" the current entry is highlighted, with the 'i' -highlighting (same as used for 'incsearch'). - -For the ":clist" command, you can scroll backwards with "b" (one screenfull), -"u" (half a screenfull) and "k" (one line). - -Multi-byte support: -- X-input method for multi-byte characters. And various fixes for multi-byte - support. (Nam) -- Hangul input method feature: |hangul|. (Nam) -- Cleaned up configuration of multi-byte support, XIM, fontset and Hangul - input. Each is now configurable separately. -- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam) -- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam) -- XIM support for GTK+. (Nam) -- First attempt to include support for SJIS encoding. (Nagano) -- When a double-byte character doesn't fit at the end of the line, put a "~" - there and print it on the next line. -- Optimize output of multi-byte text. (Park) -- Win32 IME: preedit style is like over-the-spot. (Nagano) -- Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano) -- GUI Athena: file selection dialog can display multi-byte characters. - (Nagano) -- Selection reply for XA_TEXT as XA_STRING. (Nagano) - -"runtime/macros/diffwin.vim". Mappings to make a diff window. (Campbell) - -Added ".obj" to the 'suffixes' option. - -Reduced size of syntax/synload.vim by using the ":SynAu" user command. -Automated numbering of Syntax menu entries in menu.vim. -In the Syntax menu, insert separators between syntax names that start with -a different letter. (Geddes) - -Xterm: -- Clipboard support when using the mouse in an xterm. (Madsen) -- When using the xterm mouse, track dragging of the mouse. Use xterm escape - sequences when possible. It is more precise than other methods, but - requires a fairly recent xterm version. It is enabled with "xterm2" in - 'ttymouse'. (Madsen) -- Check xterm patch level, to set the value of 'ttymouse'. Has only been - added to xterm recently (patch level > 95). Uses the new 't_RV' termcap - option. Set 'ttymouse' to "xterm2" when a correct response is recognized. - Will make xterm mouse dragging work better. -- Support for shifted function keys on xterm. Changed codes for shifted - cursor keys to what the xterm actually produces. Added codes for shifted - <End> and <Home>. -- Added 't_WP' to set the window position in pixels and 't_WS' to set the - window size in characters. Xterm can now move (used for ":winpos") and - resize (use for ":set lines=" and ":set columns="). - -X11: -- When in Visual mode but not owning the selection, display the Visual area - with the VisualNOS group to show this. (Madsen) -- Support for requesting the type of clipboard support. Used for AIX and - dtterm. (Wittig) -- Support compound_text selection (even when compiled without multi-byte). - -Swap file: -- New variation for naming swap files: Replace path separators into %, place - all swap files in one directory. Used when a name in 'dir' ends in two path - separators. (Madsen) -- When a swap file is found, show whether it contains modifications or not in - the informative message. (Madsen) -- When dialogs are supported, use a dialog to ask the user what to do when a - swapfile already exists. - -"popup_setpos" in 'mousemodel' option. Allows for moving the cursor when -using the right mouse button. - -When a buffer is deleted, the selection for which buffer to display instead -now uses the most recent entry from the jump list. (Madsen) - -When using CTRL-O/CTRL-I, skip deleted buffers. - -A percentage is shown in the ruler, when there is room. - -Used autoconf 1.13 to generate configure. - -Included get_lisp_indent() from Dirk van Deun. Does better Lisp indenting -when 'p' flag in 'cpoptions' is not included. - -Made the 2html.vim script quite a bit faster. (based on ideas from Geddes) - -Unix: -- Included the name of the user that compiled Vim and the system name it was - compiled on in the version message. -- "make install" now also installs the "tools" directory. Makes them - available for everybody. -- "make check" now does the same as "make test". "make test" checks for - Visual block mode shift, insert, replace and change. -- Speed up comparing a file name with existing buffers by storing the - device/inode number with the buffer. -- Added configure arguments "--disable-gtk", "--disable-motif" and - "--disable-athena", to be able to disable a specific GUI (when it doesn't - work). -- Renamed the configure arguments for disabling the check for specific GUIs. - Should be clearer now. (Kahn) -- On a Digital Unix system ("OSF1") check for the curses library before - termlib and termcap. (Schild) -- "make uninstall_runtime" will only delete the version-specific files. Can - be used to delete the runtime files of a previous version. - -Macintosh: (St-Amant) -- Dragging the scrollbar, like it's done for the Win32 GUI. Moved common code - from gui_w32.c to gui.c -- Added dialogs and file browsing. -- Resource fork preserved, warning when it will be lost. -- Copy original file attributes to newly written file. -- Set title/notitle bug solved. -- Filename completion improved. -- Grow box limit resize to a char by char size. -- Use of rgb.txt for more colors (but give back bad color). -- Apple menu works (beside the about...). -- Internal border now vim compliant. -- Removing a menu doesn't crash anymore. -- Weak-linking of Python 1.5.1 (only on PPC). Python is supported when the - library is available. -- If an error is encountered when sourcing the users .vimrc, the alert box now - shows right away with the OK button defaulted. There's no more "Delete"-key - sign at the start of each line -- Better management of environment variables. Now $VIM is calculated only - once, not regenerated every time it is used. -- No more CPU hog when in background. -- In a sourced Vim script the Mac file format can be recognized, just like DOS - file format is. - -When both "unix" and "mac" are present in 'fileformats', prefer "mac" format -when there are more CR than NL characters. -When using "mac" fileformat, use CR instead of a NL, because NL is used for -NUL. Will preserve all characters in a file. (Madsen) - -The DOS install.exe now contains checks for an existing installation. It -avoids setting $VIM and $PATH again. -The install program for Dos/Windows can now install Vim in the popup menu, by -adding two registry keys. - -Port to EGCS/mingw32. New Makefile.ming. (Aaron) - -DOS 16 bit: Don't include cursor shape stuff. Save some bytes. - -TCL support to Makefile.w32. (Duperval) - -OS/2: Use argv[0] to find runtime files. - -When using "gf" to go to a buffer that has already been used, jump to the -line where the cursor last was. - -Colored the output of ":tselect" a bit more. Different highlighting between -tag name and file name. Highlight field name ("struct:") separately from -argument. - -Backtick expansion for non-Unix systems. Based on a patch from Aaron. -Allows the use of things like ":n `grep -l test *.c`" and -"echo expand('`ls m*`')". - -Check for the 'complete' option when it is set. (Acevedo) -'d' flag in 'complete' searches for defined names or macros. -While searching for Insert mode completions in include files and tags files, -check for typeahead, so that you can use matches early. (Webb) -The '.' flag in 'complete' now scans the current buffer completely, ignoring -'nowrapscan'. (Webb) - -Added '~' flag to 'whichwrap'. (Acevedo) - -When ending the Visual mode (e.g., with ESC) don't grab ownership of the -selection. - -In a color terminal, "fg" and "bg" can be used as color names. They stand for -the "Normal" colors. - -A few cscope cleanups. (Kahn) - -Included changed vimspell.sh from Schemenauer. - -Concatenation of strings in an expression with "." is a bit faster. (Roemer) - -The ":redir" command can now redirect to a register: ":redir @r". (Roemer) - -Made the output of ":marks" and ":jumps" look similar. When the mark is in -the current file, show the text at the mark. Also for ":tags". - -When configure finds ftello() and fseeko(), they are used in tag.c (for when -you have extremely big tags files). - -Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow) - -GUI: -- When using ":gui" in a non-GUI Vim, give a clear error message. -- "gvim -v" doesn't start the GUI (if console support is present). -- When in Ex mode, use non-Visual selection for the whole screen. -- When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim - forked anyway. Now the "-f" flag is remembered for ":gui". Added "gui -b" - to run gvim in the background anyway. - -Motif GUI: -- Check for "-lXp" library in configure (but it doesn't work yet...). -- Let configure check for Lesstif in "/usr/local/Lesstif/Motif*". Changed the - order to let a local Motif version override a system standard version. - -Win32 GUI: -- When using "-register" or "-unregister" in the non-OLE version, give an - error message. -- Use GTK toolbar icons. Make window border look better. Use sizing handles - on the lower left&right corners of the window. (Negri) -- When starting an external command with ":!start" and the command can not be - executed, give an error message. (Webb) -- Use sizing handles for the grey rectangles below the scrollbars. Can draw - toolbar in flat mode now, looks better. (Negri) -- Preparations for MS-Windows 3.1 addition. Mostly changing WIN32 to MSWIN - and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri) - -Avoid allocating the same string four times in buflist_findpat(). (Williams) - -Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and -'t_IE'. Allows doing this on any terminal that supports setting the title -and/or icon text. (Schild) - -New 'x' flag in 'comments': Automatically insert the end part when its last -character is typed. Helps to close a /* */ comment in C. (Webb) - -When expand() has a second argument which is non-zero, don't use 'suffixes' -and 'wildignore', return all matches. - -'O' flag in 'cpoptions: When not included, Vim will not overwrite a file, if -it didn't exist when editing started but it does exist when the buffer is -written to the file. The file must have been created outside of Vim, possibly -without the user knowing it. When this is detected after a shell command, -give a warning message. - -When editing a new file, CTRL-G will show [New file]. When there were errors -while reading the file, CTRL-G will show [Read errors]. - -":wall" can now use a dialog and file-browsing when needed. - -Grouped functionality into new features, mainly to reduce the size of the -minimal version: -+linebreak: 'showbreak', 'breakat' and 'linebreak' -+visualextra: "I"nsert and "A"ppend in Visual block mode, "c"hange all lines - in a block, ">" and "<": Shifting a block, "r": Replacing a - Visual area with one character. -+comments: 'comments' -+cmdline_info: 'ruler' and 'showcmd'. Replaces +showcmd. -"+title" Don't add code to set title or icon for MSDOS, this was not - possible anyway. -+cmdline_compl Disable commandline completion at compile time, except for - files, directories and help items. - -Moved features from a list of function calls into an array. Should save a bit -of space. - -While entering the body of a function, adjust indent according to "if" and -"while" commands. - -VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy. - -The flags in the 'comments' option can now include an offset. This makes it -possible to align "/*****", "/* xxx" and "/*" comments with the same -'comments' setting. The default value for 'comments' uses this. -Added 'O' flag: Don't use this part for the "O" command. Useful for "set -com=sO:*\ -,mO:*\ \ ,exO:*/" - -FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove -them to find the relevant extension. - -The tutorial for writing a Vim script file has been extended. - -Some more highlighting in help files, for items that are not typed literally. - -Can use "CTRL-W CTRL-G" like "CTRL-W g". - -"make test" for OS/2. - -Adjusted configure to automatically use the GUI for BeOS. - - -Fixed *fixed-5.4* ------ - -5.3.1: When using an autocommand for BufWritePre that changes the name of the -buffer, freed memory would be used. (Geddes) - -Mac: Compiler didn't understand start of skip_class_name(). - -Win32 GUI: -- When cancelling the font requester, don't give an error message. -- When a tearoff-menu is open and its menu is deleted, Vim could crash. - (Negri) -- There was a problem on Windows 95 with (un)maximizing the window. - (Williams) -- when 'mousehide' is set, the mouse would stay hidden when a menu is dropped - with the keyboard. (Ralston) -- The tempname() function already created the file. Caused problems when - using ":w". Now the file is deleted. -- Cursor disappeared when ending up in the top-left character on the screen - after scrolling. (Webb) -- When adding a submenu for a torn-off menu, it was not updated. -- Menu tooltip was using the toolbar tooltip. (Negri) -- Setting 'notitle' didn't remove the title. (Steed) -- Using ":!start cmd" scrolled the screen one line up, and didn't wait for - return when the command wasn't found. - -Cscope interface: Sorting of matches was wrong. Starting the interface could -fail. (Kahn) - -Motif GUI: Could not compile with Motif 1.1, because some tear-off -functionality was not in #ifdefs. - -Configure could sometimes not compile or link the test program for sizeof(int) -properly. This caused alignment problems for the undo structure allocations. -Added a safety check that SIZEOF_INT is not zero. - -Added configure check to test if strings.h can be included after string.h. -Some systems can't handle it. -Some systems need both string.h and strings.h included. Adjusted vim.h for -that. Removed including string.h from os_unixx.h, since it's already in -vim.h. (Savage) -AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and -strings.h, but after the configure check said it was OK. Also define -_NO_PROTO for AIX in the configure check. (Winn) - -When closing a window with CTRL-W c, the value of 'hidden' was not taken into -account, the buffer was always unloaded. (Negri) - -Unix Makefile: "make install" always tried to rename an older executable and -remove it. This caused an error message when it didn't exit. Added a check -for the existence of an old executable. -The command line for "make install" could get too long, because of the many -syntax files. Now first do a "cd" to reduce the length. - -On RISCOS and MSDOS, reading a file could fail, because the short filename was -used, which can be wrong after a ":!cd". - -In the DOS versions, the wrong install.exe was included (required Windows). -Now the install.exe version is included that is the same as the Vim version. -This also supports long file names where possible. - -When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O -would also be recorded. - -32bit DOS version: "vim \file", while in a subdirectory, resulted in "new -file" for "file" in the local directory, while "\file" did exist. When -"file" in the current directory existed, this didn't happen. - -MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young) - -"make test" failed in the RedHat RPM, because compatible is off by default. - -In Insert mode <C-O><C-W><C-W> changes to other window, but the status bars -were not updated until another character was typed. - -MSDOS: environment options in lowercase didn't work, although they did in the -Win32 versions. (Negri) - -After ":nohlsearch", a tag command switched highlighting back on. - -When using "append" command as the last line in an autocommand, Vim would -crash. - -RISCOS: The scroll bumpers (?) were not working properly. (Leonard) - -"zl" and "zh" could move the cursor, but this didn't set the column in which -e.g., "k" would move the cursor. - -When doing ":set all&" the value of 'scroll' was not set correctly. This -caused an error message when later setting any other number option. - -When 'hlsearch' highlighting has been disabled with ":nohlsearch", -incremental searching would switch it back on too early. - -When listing tags for ":tselect", and using a non-search command, and the last -character was equal to the first (e.g., "99"), the last char would not be -shown. - -When searching for tags with ":tag" Vim would assume that all matches had been -found when there were still more (e.g. from another tags file). - -Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when -upper/lowercase was different. - -Some xterms (Debian) send <Esc>OH for HOME and <Esc>OF for END. Added these -to the builtin-xterm. - -In ex mode, any CR was seen as the end of the line. Only a NL should be -handled that way. broke ":s/foo/some^Mtext/". - -In menu.vim, a vmenu was used to override an amenu. That didn't work, because -the system menu file doesn't overwrite existing menus. Added explicit vunmenu -to solve this. - -Configure check for terminal library could find a library that doesn't work at -runtime (Solaris: shared library not found). Added a check that a program -with tgoto() can run correctly. - -Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors -compiling pathdef.c. Replaced it with "tr". - -Perl: DO_JOIN was redefined by Perl. Undefined it in the perl files. - -Various XIM and multi-byte fixes: -- Fix user cannot see his language while he is typing his language with - off-the-spot method. (Nagano) -- Fix preedit position using text/edit area (using gui.wid). (Nagano) -- remove 'fix dead key' codes. It was needed since XNFocusWindow was - "x11_window", XNFocusWindow is now gui.wid. (Nagano) -- Remove some compile warnings and fix typos. (Namsh) -- For status area, check the gtk+ version while Vim runs. I believe it is - better than compile time check. (Namsh) -- Remove one FIXME for gtk+-xim. (Namsh) -- XIM: Dead keys didn't work for Czech. (Vyskovsky) -- Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM - could convert it to special character. (Nam) -- Athena/Motif with XIM: fix preedit area. (Nam) -- XIM: Composed strings were sometimes ignored. Vim crashed when compose - string was longer than 256 bytes. IM's geometry control is fixed. (Nam, - Nagano) -- Win32 multi-byte: hollowed cursor width on a double byte char was wrong. - (Nagano) -- When there is no GUI, selecting XIM caused compilation problems. - Automatically disable XIM when there is no GUI in configure. -- Motif and Athena: When compiled with XIM, but the input method was not - enabled, there would still be a status line. Now the status line is gone if - the input method doesn't work. (Nam) - -Win32: tooltip was not removed when selecting a parent menu (it was when -selecting a menu entry). (Negri) - -Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call. -Removed it, it should not be necessary when exiting. - -Win32: Crash on keypress when compiled with Borland C++. (Aaron) - -When checking for Motif library files, prefer the same location as the include -files (with "include" replaced with "lib") above another entry. - -Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's -used in gui_x11.c. - -Win32: When testing for a timestamp of a file on floppy, would get a dialog -box when the floppy has been removed. Now return with an error. (Negri) - -Win32 OLE: When forced to come to the foreground, a minimized window was still -minimized, now it's restored. (Zivkov) - -There was no check for a positive 'shiftwidth'. A negative value could cause -a hangup, a zero value a crash. - -Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right -or left of the thumb. - -When making a Visual-block selection in one window, and trying to scroll -another, could cause errors for accessing non-existent line numbers. - -When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work -properly. - -Changed '\"' to '"' to make it compatible with old C compilers. - -The command line expansion for mappings caused a script with a TAB between lhs -and rhs of a map command to fail. Assume the TAB is to separate lhs and rhs -when there are no mappings to expand. - -When editing a file with very long lines with 'scrolloff' set, "j" would -sometimes end up in a line which wasn't displayed. - -When editing a read-only file, it was completely read into memory, even when -it would not fit. Now create a swap file for a read-only file when running -out of memory while reading the file. - -When using ":set cino={s,e-s", a line after "} else {" was not indented -properly. Also added a check for this in test3.in. - -The Hebrew mapping for the command line was remembered for the next command -line. That isn't very useful, a command is not Hebrew. (Kol) - -When completing file names with embedded spaces, like "Program\ files", this -didn't work. Also for user commands. Moved backslash_halve() down to -mch_expandpath(). - -When using "set mouse=a" in Ex mode, mouse events were handled like typed -text. Then typing "quit" screwed up the mouse behavior of the xterm. - -When repeating an insert with "." that contains a CTRL-Y, a number 5 was -inserted as "053". - -Yanking a Visual area, with the cursor past the line, didn't move the cursor -back onto the line. Same for "~", "u", "U" and "g?" - -Win32: Default for 'grepprg' could be "findstr /n" even though there is no -findstr.exe (Windows 95). Check if it exists, and fall back to "grep -n" if -it doesn't. - -Because gui_mouse_moved() inserted a leftmouse click in the input buffer, -remapping a leftmouse click caused strange effects. Now Insert another code -in the input buffer. Also insert a leftmouse release, to avoid the problem -with ":map <LeftMouse> l" that the next release is seen as the release for the -focus click. - -With 'wrap' on, when using a line that doesn't fit on the screen, if the start -of the Visual area is before the start of the screen, there was no -highlighting. Also, 'showbreak' doesn't work properly. - -DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands. - -When creating a swap file for a buffer which isn't the current buffer, could -get a mixup of short file name, resulting in a long file name when a short -file name was required. makeswapname() was calling modname() instead of -buf_modname(). - -When a function caused an error, and the error message was very long because -of recursiveness, this would cause a crash. - -'suffixes' were always compared with matching case. For MS-DOS, Win32 and -OS/2 case is now ignored. - -The use of CHARBITS in regexp.c didn't work on some Linux. Don't use it. - -When generating a script file, 'cpo' was made empty. This caused backslashes -to disappear from mappings. Set it to "B" to avoid that. - -Lots of typos in the documentation. (Campbell) - -When editing an existing (hidden) buffer, jump to the last used cursor -position. (Madsen) - -On a Sun the xterm screen was not restored properly when suspending. (Madsen) - -When $VIMINIT is processed, 'nocompatible' was only set after processing it. - -Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard -all together. Cleaned up the code for using select() too. - -When executing external commands from the GUI, some typeahead was lost. Added -some code to regain as much typeahead as possible. - -When the window height is 5 lines or fewer, <PageDown> didn't use a one-line -overlap, while <PageUp> does. Made sure that <PageUp> uses the same overlap -as <PageDown>, so that using them both always displays the same lines. - -Removed a few unused functions and variables (found with lint). - -Dictionary completion didn't use 'infercase'. (Raul) - -Configure tests failed when the Perl library was not in LD_LIBRARY_PATH. -Don't use the Perl library for configure tests, add it to the linker line only -when linking Vim. - -When using ncurses/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that -has "%d" instead of "%p1%d". The light background colors didn't work then. - -GTK GUI with ncurses: Crashed when starting up in tputs(). Don't use tputs() -when the GUI is active. - -Could use the ":let" command to set the "count", "shell_error" and "version" -variables, but that didn't work. Give an error message when trying to set -them. - -On FreeBSD 3.0, tclsh is called tclsh8.0. Adjusted configure.in to find it. - -When Vim is linked with -lncurses, but python uses -ltermcap, this causes -trouble: "OOPS". Configure now removes the -ltermcap. - -:@" and :*" didn't work properly, because the " was recognized as the start of -a comment. - -Win32s GUI: Minimizing the console where a filter command runs in caused -trouble for detecting that the filter command has finished. (Negri) - -After executing a filter command from an xterm, the mouse would be disabled. -It would work again after changing the mode. - -Mac GUI: Crashed in newenv(). (St-Amant) - -The menus and mappings in mswin.vim didn't handle text ending in a NL -correctly. (Acevedo) - -The ":k" command didn't check if it had a valid argument or extra characters. -Now give a meaningful error message. (Webb) - -On SGI, the signal function doesn't always have three arguments. Check for -struct sigcontext to find out. Might still be wrong... - -Could crash when using 'hlsearch' and search pattern is "^". - -When search patterns were saved and restored, status of no_hlsearch was not -also saved and restored (from ":nohlsearch" command). - -When using setline() to make a line shorter, the cursor position was not -adjusted. - -MS-DOS and Win95: When trying to edit a file and accidentally adding a slash -or backslash at the end, the file was deleted. Probably when trying to create -the swap file. Explicitly check for a trailing slash or backslash before -trying to read a file. - -X11 GUI: When starting the GUI failed and received a deadly signal while -setting the title, would lock up when trying to exit, because the title is -reset again. Avoid using mch_settitle() recursively. - -X11 GUI: When starting the GUI fails, and then trying it again, would crash, -because argv[] has been freed and x11_display was reset to NULL. - -Win32: When $HOME was set, would put "~user" in the swap file, which would -never compare with a file name, and never cause the attention message. Put -the full path in the swap file instead. - -Win32 console: There were funny characters at the end of the "vim -r" swap -files message (direct output of CR CR LF). - -DOS 32 bit: "vim -r" put the text at the top of the window. - -GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q". - -Motif and Win32 GUI: When changing 'guifont' to a font of the same size the -screen wasn't redrawn. - -Unix: When using ":make", jumping to a file b.c, which is already open as a -symbolic link a.c, opened a new buffer instead of using the existing one. - -Inserting text in the current buffer while sourcing the .vimrc file would -cause a crash or hang. The memfile for the current buffer was never -allocated. Now it's allocated as soon as something is written in the buffer. - -DOS 32 bit: "lightblue" background worked for text, but not drawn parts were -black. - -DOS: Colors of console were not restored upon exiting. - -When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode -caused the "recording" message to be doubled. - -Spurious "file changed" messages could happen on Windows. Now tolerate a one -second difference, like for Linux. - -GUI: When returning from Ex mode, scrollbars were not updated. - -Win32: Copying text to the clipboard containing a <CR>, pasting it would -replace it with a <NL> and drop the next character. - -Entering a double byte character didn't work if the second byte is in [xXoO]. -(Eric Lee) - -vim_realloc was both defined and had a prototype in proto/misc2.pro. Caused -conflicts on Solaris. - -A pattern in an autocommand was treated differently on DOS et al. than on -Unix. Now it's the same, also when using backslashes. - -When using <Tab> twice for command line completion, without a match, the <Tab> -would be inserted. (Negri) - -Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri) - -Testing the result of mktemp() for failure was wrong. Could cause a crash. -(Peters) - -GUI: When checking for a ".gvimrc" file in the current directory, didn't check -for a "_gvimrc" file too. - -Motif GUI: When using the popup menu and then adding an item to the menu bar, -the menu bar would get very high. - -Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and -dialogs. Now they are ignored. - -When at the more-prompt, xterm selection didn't work. Now use the 'r' flag in -'mouse' also for the more-prompt. - -When selecting a Visual area of more than 1023 lines, with 'guioptions' set to -"a", could mess up the display because of a message in free_yank(). Removed -that message, except for the Amiga. - -Moved auto-selection from ui_write() to the screen update functions. Avoids -unexpected behavior from a low-level function. Also makes the different -feedback of owning the selection possible. - -Vi incompatibility: Using "i<CR>" in an indent, with 'ai' set, used the -original indent instead of truncating it at the cursor. (Webb) - -":echo x" didn't stop at "q" for the more prompt. - -Various fixes for Macintosh. (St-Amant) - -When using 'selectmode' set to "exclusive", selecting a word and then using -CTRL-] included the character under the cursor. - -Using ":let a:name" in a function caused a crash. (Webb) - -When using ":append", an empty line didn't scroll up. - -DOS etc.: A file name starting with '!' didn't work. Added '!' to default for -'isfname'. - -BeOS: Compilation problem with prototype of skip_class_name(). (Price) - -When deleting more than one line, e.g., with "de", could still use "U" -command, which didn't work properly then. - -Amiga: Could not compile ex_docmd.c, it was getting too big. Moved some -functions to ex_cmds.c. - -The expand() function would add a trailing slash for directories. - -Didn't give an error message when trying to assign a value to an argument of a -function. (Webb) - -Moved including sys/ptem.h to after termios.h. Needed for Sinix. - -OLE interface: Don't delete the object in CVimCF::Release() when the reference -count becomes zero. (Cordell) -VisVim could still crash on exit. (Erhardt) - -"case a: case b:" (two case statements in one line) aligned with the second -case. Now it uses one 'sw' for indent. (Webb) - -Font initialisation wasn't right for Athena/Motif GUI. Moved the call to -highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam) - -In Replace mode, backspacing over a TAB before where the replace mode started -while 'sts' is different from 'ts', would delete the TAB. - -Win32 console: When executing external commands and switching between the two -console screens, Vim would copy the text between the buffers. That caused the -screen to be messed up for backtick expansion. - -":winpos -1" then ":winpos" gave wrong error message. - -Windows commander creates files called c:\tmp\$wc\abc.txt. Don't remove the -backslash before the $. Environment variables were not expanded anyway, -because of the backslash before the dollar. - -Using "-=" with ":set" could remove half a part when it contains a "\,". -E.g., ":set path+=a\\,b" and then "set path-=b" removed ",b". - -When Visually selecting lines, with 'selection' set to "inclusive", including -the last char of the line, "<<" moved an extra line. Also for other operators -that always work on lines. - -link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed. -Now it only remove whole words. - -When jumped to a mark or using "fz", and there is an error, the current column -was lost. E.g. when using "$fzj". - -The "g CTRL-G" command could not be interrupted, even though it can take a -long time. - -Some terminals do have <F4> and <xF4>. <xF4> was always interpreted as <F4>. -Now map <xF4> to <F4>, so that the user can override this. - -When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be -used. (Aaron) - -This autocommand looped forever: ":au FileChangedShell * nested e <afile>" -Now FileChangeShell never nests. (Roemer) - -When evaluating an ":elseif" that was not going to matter anyway, ignore -errors. (Roemer) - -GUI Lesstif: Tearoff bar was the last item, instead of the first. - -GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to -'guioptions' afterwards. When 't' flag in 'guioptions' is excluded, would -still get a tearoff item in a new menu. - -An inode number can be "long long". Use ino_t instead of long. Added -configure check for ino_t. - -Binary search for tags was using a file offset "long" instead of "off_t". - -Insert mode completion of tags was not using 'ignorecase' properly. - -In Insert mode, the <xFn> keys were not properly mapped to <Fn> for the -default mappings. Also caused errors for ":mkvimrc" and ":mksession". - -When jumping to another window while in Insert mode, would get the "warning: -changing readonly file" even when not making a change. - -A '(' or '{' inside a trailing "//" comment would disturb C-indenting. -When using two labels below each other, the second one was not indented -properly. Comments could mess up C-indenting in many places. (Roemer) - -Could delete or redefine a function while it was being used. Could cause a -crash. -In a function it's logical to prepend "g:" to a system variable, but this -didn't work. (Roemer) - -Hangul input: Buffer would overflow when user inputs invalid key sequence. -(Nam) - -When BufLoad or BufEnter autocommands change the topline of the buffer in the -window, it was overruled and the cursor put halfway the window. Now only put -the cursor halfway if the autocommands didn't change the topline. - -Calling exists("&option") always returned 1. (Roemer) - -Win32: Didn't take actually available memory into account. (Williams) - -White space after an automatically inserted comment leader was not removed -when 'ai' is not set and <CR> hit just after inserting it. (Webb) - -A few menus had duplicated accelerators. (Roemer) - -Spelling errors in documentation, quite a few "the the". (Roemer) - -Missing prototypes for Macintosh. (Kielhorn) - -Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't -executed in a disconnected process. - -When resizing the window, causing a line before the cursor to wrap or unwrap, -the cursor was displayed in the wrong position. - -There was quite a bit of dead code when compiling with minimal features. - -When doing a ":%s///" command that makes lines shorter, such that lines above -the final cursor position no longer wrap, the cursor position was not updated. - -get_id_list() could allocate an array one too small, when a "contains=" item -has a wildcard that matches a group name that is added just after it. E.g.: -"contains=a.*b,axb". Give an error message for it. - -When yanking a Visual area and using the middle mouse button -> crash. When -clipboard doesn't work, now make "* always use "". - -Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file". - -Using ":ts ident", then hit <CR>, with 'cmdheight' set to 2: command line was -not cleared, the tselect prompt was on the last but one line. - -mksession didn't restore the cursor column properly when it was after a tab. -Could not get all windows back when using a smaller terminal screen. Didn't -restore all windows when "winsize" was not in 'sessionoptions'. (Webb) - -Command line completion for ":buffer" depended on 'ignorecase' for Unix, but -not for DOS et al.. Now don't use 'ignorecase', but let it depend on whether -file names are case sensitive or not (like when expanding file names). - -Win32 GUI: (Negri) -- Redrawing the background caused flicker when resizing the window. Removed - _OnEraseBG(). Removed CS_HREDRAW and CS_VREDRAW flags from the - sndclass.style. -- Some parts of the window were drawn in grey, instead of using the color from - the user color scheme. -- Dropping a file on gvim didn't activate the window. -- When there is no menu ('guioptions' excludes 'm'), never use the ALT key for - it. - -GUI: When resizing the window, would make the window height a bit smaller. -Now round off to the nearest char cell size. (Negri) - -In Vi the ")" and "(" commands don't stop at a single space after a dot. -Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer) - -When saving a session without any buffers loaded, there would be a ":normal" -command without arguments in it. (Webb) - -Memory leaks fixed: (Madsen) -- eval.c: forgot to release func structure when func deleted -- ex_docmd.c: forgot to release string after "<sfile>" -- misc1.c: leak when completion pattern had no matches. -- os_unix.c: forgot to release regexp after file completions - -Could crash when using a buffer without a name. (Madsen) -Could crash when doing file name completion, because of backslash_halve(). -(Madsen) - -":@a" would do mappings on register a, which is not Vi compatible. (Roemer) - -":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar" -and displayed "/foo.*()". (Roemer) - -OS/2: get_cmd_output() was not included. Didn't check for $VIM/.vimrc file. - -Command line completion of options didn't work after "+=" and "-=". - -Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these -functions, which could fail if they are defined already. Use mch_memmove() to -redefine. - -Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but -":let a = expand("`xterm&`")" generated an error message, because the -redirection was put after the '&'. - -Win32 GUI: Dialog buttons could not be selected properly with cursor keys, -when the default is not the first button. (Webb) - -The "File has changed since editing started" (when regaining focus) could not -always be seen. (Webb) - -When starting with "ex filename", the file message was overwritten with -the "entering Ex mode" message. - -Output of ":tselect" listed name of file directly from the tags file. Now it -is corrected for the position of the tags file. - -When 'backspace' is 0, could backspace over autoindent. Now it is no longer -allowed (Vi compatible). - -In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting -Tabs, backspacing didn't work correctly for Tabs inserted at the start of the -line (unless 'sts' was set too). Also, when replacing the first non-blank -after which is a space, rounding the indent was done on the first non-blank -instead of on the character under the cursor. - -When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after -four spaces (they are replaced with a tab) couldn't backspace over the tab. - -In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent, -even when it was removed with CTRL-D. - -When repeating an insert command where a <BS>, <Left> or other key causes an -error, would flush buffers and remain in Insert mode. No longer flush -buffers, only beep and continue with the insert command. - -Dos and Win32 console: Setting t_me didn't work to get another color. Made -this works backwards compatible. - -For turkish (LANG = "tr") uppercase 'i' is not an 'I'. Use ASCII uppercase -translation in vim_strup() to avoid language problems. (Komur) - -Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefully -this avoids a hangup in select(0, ..) for Solaris 2.6. - -Vim would crash when using a script file with 'let &sp = "| tee"', starting -vim with "vim -u test", then doing ":set sp=". The P_WAS_SET flag wasn't set -for a string option, could cause problems with any string option. - -When using "cmd | vim -", stdin is not a terminal. This gave problems with -GPM (Linux console mouse) and when executing external commands. Now close -stdin and re-open it as a copy of stderr. - -Syntax highlighting: A "nextgroup" item was not properly stored in the state -list. This caused missing of next groups when not redrawing from start to -end, but starting halfway. - -Didn't check for valid values of 'ttymouse'. - -When executing an external command from the GUI, waiting for the child to -terminate might not work, causing a hang. (Parmelan) - -"make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim -files and the vimtutor. - -Win32: "expand("%:p:h")" with no buffer name removed the directory name. -"fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it. - -Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions': -highlighting was not correct. Now overlapping matches are handled correctly. - -Athena, Motif and GTK GUI: When started without focus, cursor was shown as if -with focus. - -Don't include 'shellpipe' when compiled without quickfix, it's not used. -Don't include 'dictionary' option when compiled without the +insert_expand -feature. -Only include the 'shelltype' option for the Amiga. - -When making a change to a line, with 'hlsearch' on, causing it to wrap, while -executing a register, the screen would not be updated correctly. This was a -generic problem in update_screenline() being called while must_redraw is -VALID. - -Using ":bdelete" in a BufUnload autocommand could cause a crash. The window -height was added to another window twice in close_window(). - -Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri) - -Some performance bottlenecks removed. Allocating memory was not efficient. -For Win32 checking for available memory was slow, don't check it every time -now. On NT obtaining the user name takes a long time, cache the result (for -all systems). - -fnamemodify() with an argument ":~:." or ":.:~" didn't work properly. - -When editing a new file and exiting, the marks for the buffer were not saved -in the viminfo file. - -":confirm only" didn't put up a dialog. - -These text objects didn't work when 'selection' was "exclusive": va( vi( va{ -vi{ va< vi< vi[ va[. - -The dialog for writing a readonly file didn't have a valid default. (Negri) - -The line number used for error messages when sourcing a file was reset when -modelines were inspected. It was wrong when executing a function. - -The file name and line number for an error message wasn't displayed when it -was the same as for the last error, even when this was long ago. Now reset -the name/lnum after a hit-enter prompt. - -In a session file, a "%" in a file name caused trouble, because fprintf() was -used to write it to the file. - -When skipping statements, a mark in an address wasn't skipped correctly: -"ka|if 0|'ad|else|echo|endif". (Roemer) - -":wall" could overwrite a not-edited file without asking. - -GUI: When $DISPLAY was not set or starting the GUI failed in another way, the -console mode then started with wrong colors and skipped initializations. Now -do an early check if the GUI can be started. Don't source the menu.vim or -gvimrc when it will not. Also do normal terminal initializations if the GUI -might not start. - -When using a BufEnter autocommand to position the cursor and scroll the -window, the cursor was always put at the last used line and halfway the window -anyhow. - -When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn't list -the matches. Also avoid that listing after a "longest" lists the wrong -matches when the first expansion changed the string in front of the cursor. - -When using ":insert", ":append" or ":change" inside a while loop, was not able -to break out of it with a CTRL-C. - -Win32: ":e ." took an awful long time before an error message when used in -"C:\". Was caused by adding another backslash and then trying to get the full -name for "C:\\". - -":winpos -10 100" was working like ":winpos -10 -10", because a pointer was -not advanced past the '-' sign. - -When obtaining the value of a hidden option, would give an error message. Now -just use a zero value. - -OS/2: Was using argv[0], even though it was not a useful name. It could be -just "vim", found in the search path. - -Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until -after a delay of 'updatetime'. Didn't check for the size-changed signal. - -'scrollbind' didn't work in Insert mode. -Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g., -when 'showcmd' was off). - -When compiled with minimal features but with GUI, switching on the mouse in an -xterm caused garbage, because the mouse codes were not recognized. Don't -enable the mouse when it can't be recognized. In the GUI it also didn't work, -the arguments to the mouse code were not interpreted. - -When 'showbreak' used, in Insert mode, when the cursor is just after the last -character in the line, which is also the in the rightmost column, the cursor -position would be like the 'showbreak' string is shown, but it wasn't. - -Autocommands could move the cursor in a new file, so that CTRL-W i didn't show -the right line. Same for when using a filemark to jump to another file. - -When redefining the argument list, the title used for other windows could be -showing the wrong info about the position in the argument list. Also update -this for a ":split" command without arguments. - -When editing file 97 of 13, ":Next" didn't work. Now it goes to the last -file in the argument list. - -Insert mode completion (for dictionaries or included files) could not be -interrupted by typing an <Esc>. Could get hit-enter prompt after line -completion, or whenever the informative message would get too long. - -When using the ":edit" command to re-edit the same file, an autocommand to -jump to the last cursor position caused the cursor to move. Now set the last -used cursor position to avoid this. - -When 'comments' has a part that starts with white space, formatting the -comment didn't work. - -At the ":tselect" prompt Normal mode mappings were used. That has been -disabled. - -When 'selection' is not "old", some commands still didn't allow the cursor -past the end-of-line in Visual mode. - -Athena: When a menu was deleted, it would appear again (but not functional) -when adding another menu. Now they don't reappear anymore (although they are -not really deleted either). - -Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri) - -"ze" didn't work when 'number' was on. (Davis) - -Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson) - -A few files were including proto.h a second time, after vim.h had already done -that, which could cause problems with the vim_realloc() macro. - -Win32 console: <M-x> or ALT-x was not recognized. Also keypad '+', '-' and -'*'. (Negri) -MS-DOS: <M-x> didn't work, produced a two-byte code. Now the alphabetic and -number keys work. (Negri) - -When finding a lot of matches for a tag completion, the check for avoiding -double matches could take a lot of time. Add a line_breakcheck() to be able -to interrupt this. (Deshpande) - -When the command line was getting longer than the screen, the more-prompt -would be given regularly, and the cursor position would be wrong. Now only -show the part of the command line that fits on the screen and force the cursor -to be positioned on the visible part. There can be text after the cursor -which isn't editable. - -At the more prompt and with the console dialog, a cursor key was interpreted -as <Esc> and OA. Now recognize special keys in get_keystroke(). Ignore mouse -and scrollbar events. - -When typing a BS after inserting a middle comment leader, typing the last char -of the end comment leader still changed it into the end comment leader. (Webb) - -When a file system is full, writing to a swap file failed. Now first try to -write one block to the file. Try next entry in 'dir' if it fails. - -When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the -display. - -Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was -translated to "}" before the shell got it. Now don't remove backslashes when -wildcards are going to be expanded. - -Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a -file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty" -still doesn't work though. - -"make test" didn't always work on DOS/Windows for test30, because it depended -on the external "echo" command. - -The link.sh script used "make" instead of $MAKE from the Makefile. Caused -problems for generating pathdef.c when "make" doesn't work properly. - -On versions that can do console and GUI: In the console a typed CSI code could -cause trouble. - -The patterns in expression evaluation didn't ignore the 'l' flag in -'cpoptions'. This broke the working of <CR> in the options window. - -When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still -highlighted red for trailing space. - -Win32 GUI: Dropping an encrypted file on a running gvim didn't work right. Vim -would loop while outputting "*" characters. vgetc() was called recursively, -thus it returns NUL. Added safe_vgetc(), which reads input directly from the -user in this situation. - -While reading text from stdin, only an empty screen was shown. Now show that -Vim is reading from stdin. - -The cursor shape wasn't set properly when returning to Insert mode, after -using a CTRL-O /asdf command which fails. It would be OK after a few seconds. -Now it's OK right away. - -The 'isfname' default for DOS/Windows didn't include the '@' character. File -names that contained "dir\@file" could not be edited. - -Win32 console: <C-S-Left> could cause a crash when compiled with Borland or -egcs. (Aaron) - -Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use -"#ifdef HAVE_DIRENT_H" instead. (Jones) - -When a matching tag is in the current file but has a search pattern that -doesn't match, the cursor would jump to the first line. - -Unix: Dependencies for pty.c were not included in Makefile. Dependency of -ctags/config.h was not included (only matters for parallel make). - -Removed a few Uninitialized Memory Reads (potential crashes). In do_call() -calling clear_var() when not evaluating. In win32_expandpath() and -dos_expandpath() calling backslash_halve() past the end of a file name. - -Removed memory leaks: Set_vim_var_string() never freed the value. The -next_list for a syntax keyword was never freed. - -On non-Unix systems, using a file name with wildcards without a match would -silently fail. E.g., ":e *.sh". Now give a "No match" error message. - -The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized -as Vim scripts. Renamed them to *.vim. - -[Note: some numbered patches are not relevant when upgrading from version 5.3, -they have been removed] - -Patch 5.4m.1 -Problem: When editing a file with a long name, would get the hit-enter - prompt, even though all settings are such that the name should be - truncated to avoid that. filemess() was printing the file name - without truncating it. -Solution: Truncate the message in filemess(). Use the same code as for - msg_trunc_attr(), which is moved to the new function - msg_may_trunc(). -Files: src/message.c, src/proto/message.pro, src/fileio.c - -Patch 5.4m.3 -Problem: The Motif libraries were not found by configure for Digital Unix. -Solution: Add "/usr/shlib" to the search path. (Andy Kahn) -Files: src/configure.in, src/configure - -Patch 5.4m.5 -Problem: Win32 GUI: When using the Save-As menu entry and selecting an - existing file in the file browser, would get a dialog to confirm - overwriting twice. (Ed Krall) -Solution: Removed the dialog from the file browser. It would be nicer to - set the "forceit" flag and skip Vim's ":confirm" dialog, but it - requires quite a few changes to do that. -Files: src/gui_w32.c - -Patch 5.4m.6 -Problem: Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -", - a message box would pop up with "-stdin-" (when exiting). (Michael - Schaap) -Solution: Don't switch off termcap mode for versions that are GUI-only. - They use another terminal to read from stdin. -Files: src/main.c, src/fileio.c - -Patch 5.4m.7 -Problem: Unix: running configure with --enable-gtk-check, - --enable-motif-check, --enable-athena-check or --enable-gtktest - had the reverse effect. (Thomas Koehler) -Solution: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE(). -Files: src/configure.in, src/configure - -Patch 5.4m.9 -Problem: Multi-byte: With wrapping lines, the cursor was sometimes 2 - characters to the left. Syntax highlighting was wrong when a - double-byte character was split for a wrapping line. When - 'showbreak' was on the splitting also didn't work. -Solution: Adjust getvcol() and win_line(). (Chong-Dae Park) -Files: src/charset.c, src/screen.c - -Patch 5.4m.11 -Problem: The ":call" command didn't check for illegal trailing characters. - (Stefan Roemer) -Solution: Add the check in do_call(). -Files: src/eval.c - -Patch 5.4m.13 -Problem: With the ":s" command: - 1. When performing a substitute command, the mouse would be - disabled and enabled for every substitution. - 2. The cursor position could be beyond the end of the line. - Calling line_breakcheck() could try to position the cursor, - which causes a crash in the Win32 GUI. - 3. When using ":s" in a ":g" command, the cursor was not put on - the first non-white in the line. - 4. There was a hit-enter prompt when confirming the substitution - and the replacement was a bit longer. -Solution: 1. Only disable/enable the mouse when asking for confirmation. - 2. Always put the cursor on the first character, it is going to be - moved to the first non-blank anyway. - Don't use the cursor position in gui_mch_draw_hollow_cursor(), - get the character from the screen buffer. - 3. Added global_need_beginline flag to call beginline() after ":g" - has finished all substitutions. - 4. Clear the need_wait_return flag after prompting the user. -Files: src/ex_cmds.c, src/gui_w32.c - -Patch 5.4m.14 -Problem: When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end - up with two swapfiles for "xxx". That is caused by the ":bdel" - command which is executed when unloading the option-window. - Also, there was no check if closing a buffer made the new one - invalid, this could cause a crash. -Solution: When closing a buffer causes the current buffer to be deleted, - use the new buffer to replace it. Also detect that the new buffer - has become invalid as a side effect of closing the current one. - Make autocommand that calls ":bdel" in optwin.vim nested, so that - the buffer loading it triggers also executes autocommands. - Also added a test for this in test13. -Files: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h - src/testdir/test13.in, src/testdir/test13.ok - -Patch 5.4m.15 -Problem: When using a BufEnter autocommand to reload the syntax file, - conversion to HTML caused a crash. (Sung-Hyun Nam) -Solution: When using ":syntax clear" the current stack of syntax items was - not cleared. This will cause memory to be used that has already - been freed. Added call to invalidate_current_state() in - syntax_clear(). -Files: src/syntax.c - -Patch 5.4m.17 -Problem: When omitting a ')' in an expression it would not be seen as a - failure. - When detecting an error inside (), there would be an error message - for a missing ')' too. - When using ":echo 1+|echo 2" there was no error message. (Roemer) - When using ":exe 1+" there was no error message. - When using ":return 1+" there was no error message. -Solution: Fix do_echo(), do_execute() and do_return() to give an error - message when eval1() returns FAIL. - Fix eval6() to handle trailing ')' correctly and return FAIL when - it's missing. -Files: src/eval.c - -Patch 5.4m.18 -Problem: When using input() from inside an expression entered with - "CTRL-R =" on the command line, there could be a crash. And the - resulting command line was wrong. -Solution: Added getcmdline_prompt(), which handles recursive use of - getcmdline() correctly. It also sets the command line prompt. - Removed cmdline_prompt(). Also use getcmdline_prompt() for - getting the crypt key in get_crypt_key(). -Files: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c - -Patch 5.4m.21 -Problem: When starting up, the screen structures were first allocated at - the minimal size, then initializations were done with Rows - possibly different from screen_Rows. Caused a crash in rare - situations (GTK with XIM and fontset). -Solution: Call screenalloc() in main() only after calling ui_get_winsize(). - Also avoids a potential delay because of calling screenclear() - while "starting" is non-zero. -Files: src/main.c - -Patch 5.4m.22 -Problem: In the GUI it was possible that the screen was resized and the - screen structures re-allocated while redrawing the screen. This - could cause a crash (hard to reproduce). The call sequence goes - through update_screen() .. syntax_start() .. ui_breakcheck() .. - gui_resize_window() .. screenalloc(). -Solution: Set updating_screen while redrawing. If the window is resized - remember the new size and handle it only after redrawing is - finished. - This also fixes that resizing the screen while still redrawing - (slow syntax highlighting) would not work properly. - Also disable display_hint, it was never used. -Files: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro - -Patch 5.4m.23 -Problem: When using expand("<cword>") when there was no word under the - cursor, would get an error message. Same for <cWORD> and <cfile>. -Solution: Don't give an error message, return an empty string. -Files: src/eval.c - -Patch 5.4m.24 -Problem: ":help \|" didn't find anything. It was translated to "/\\|". -Solution: Translate "\|" into "\\bar". First check the table for specific - translations before checking for "\x". -Files: src/ex_cmds.c - -Patch 5.4m.25 -Problem: Unix: When using command line completion on files that contain - ''', '"' or '|' the file name could not be used. - Adding this file name to the Buffers menu caused an error message. -Solution: Insert a backslash before these three characters. - Adjust Mungename() function to insert a backslash before '|'. -Files: src/ex_getln.c, runtime/menu.vim - -Patch 5.4m.26 -Problem: When using a mapping of two function keys, e.g., <F1><F1>, and - only the first char of the second key has been read, the mapping - would not be recognized. Noticed on some Unix systems with xterm. -Solution: Add 'K' flag to 'cpoptions' to wait for the whole key code, even - when halfway a mapping. -Files: src/option.h, src/term.c - -Patch 5.4m.27 -Problem: When making test33 without the lisp feature it hangs. Interrupting - the execution of the script then might cause a crash. -Solution: In inchar(), after closing a script, don't use buf[] anymore. - closescript() has freed typebuf[] and buf[] might be pointing - inside typebuf[]. - Avoid that test33 hangs when the lisp feature is missing. -Files: src/getchar.c src/testdir/test33.in - -"os2" was missing from the feature list. Useful for has("os2"). - -BeOS: -- Included patches from Richard Offer for BeOS R4.5. -- menu code didn't work right. Crashed in the Buffers menu. The window title - wasn't set. (Offer) - -Patch 5.4n.3 -Problem: C-indenting was wrong after " } else". The white space was not - skipped. Visible when 'cino' has "+10". -Solution: Skip white space before calling cin_iselse(). (Norbert Zeh) -Files: src/misc1.c - -Patch 5.4n.4 -Problem: When the 't' flag in 'cpoptions' is included, after a - ":nohlsearch" the search highlighting would not be enabled again - after a tag search. (Norbert Zeh) -Solution: When setting the new search pattern in jumpto_tag(), don't restore - no_hlsearch. -Files: src/tag.c - -Patch 5.4n.5 -Problem: When using ":normal" from a CursorHold autocommand Vim hangs. The - autocommand is executed down from vgetc(). Calling vgetc() - recursively to execute the command doesn't work then. -Solution: Forbid the use of ":normal" when vgetc_busy is set. Give an error - message when this happens. -Files: src/ex_docmd.c, runtime/doc/autocmd.txt - -Patch 5.4n.6 -Problem: "gv" could reselect a Visual that starts and/or ends past the end - of a line. (Robert Webb) -Solution: Check that the start and end of the Visual area are on a valid - character by calling adjust_cursor(). -Files: src/normal.c - -Patch 5.4n.8 -Problem: When a mark was on a non existing line (e.g., when the .viminfo - was edited), jumping to it caused ml_get errors. (Alexey - Marinichev). -Solution: Added check_cursor_lnum() in nv_gomark(). -Files: src/normal.c - -Patch 5.4n.9 -Problem: ":-2" moved the cursor to a negative line number. (Ralf Schandl) -Solution: Give an error message for a negative line number. -Files: src/ex_docmd.c - -Patch 5.4n.10 -Problem: Win32 GUI: At the hit-enter prompt, it was possible to scroll the - text. This erased the prompt and made Vim look like it is in - Normal mode, while it is actually still waiting for a <CR>. -Solution: Disallow scrolling at the hit-enter prompt for systems that use - on the fly scrolling. -Files: src/message.c - -Patch 5.4n.14 -Problem: Win32 GUI: When using ":winsize 80 46" and the height is more than - what fits on the screen, the window size was made smaller than - asked for (that's OK) and Vim crashed (that's not OK)> -Solution: Call check_winsize() from gui_set_winsize() to resize the windows. -Files: src/gui.c - -Patch 5.4n.16 -Problem: Win32 GUI: The <F10> key both selected the menu and was handled as - a key hit. -Solution: Apply 'winaltkeys' to <F10>, like it is used for Alt keys. -Files: src/gui_w32.c - -Patch 5.4n.17 -Problem: Local buffer variables were freed when the buffer is unloaded. - That's not logical, since options are not freed. (Ron Aaron) -Solution: Free local buffer variables only when deleting the buffer. -Files: src/buffer.c - -Patch 5.4n.19 -Problem: Doing ":e" (without argument) in an option-window causes trouble. - The mappings for <CR> and <Space> are not removed. When there is - another buffer loaded, the swap file for it gets mixed up. - (Steve Mueller) -Solution: Also remove the mappings at the BufUnload event, if they are still - present. - When re-editing the same file causes the current buffer to be - deleted, don't try editing it. - Also added a test for this situation. -Files: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in, - src/testdir/test13.ok - -Patch 5.4n.24 -Problem: BeOS: configure never enabled the GUI, because $with_x was "no". - Unix prototypes caused problems, because Display and Widget are - undefined. - Freeing fonts on exit caused a crash. -Solution: Only disable the GUI when $with_x is "no" and $BEOS is not "yes". - Add dummy defines for Display and Widget in proto.h. - Don't free the fonts in gui_exit() for BeOS. -Files: src/configure.in, src/configure, src/proto.h, src/gui.c. - - -The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild) - -Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined. -(Aaron) - -VMS: -- mch_setenv() had two arguments instead of three. -- The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc". - Removed the dot. -- call to RealWaitForChar() had one argument too many. (Campbell) -- WaitForChar() is static, removed the prototype from proto/os_vms.pro. -- Many file accesses failed, because Unix style file names were used. - Translate file names to VMS style by using vim_fopen(). -- Filtering didn't work, because the temporary file name was generated wrong. -- There was an extra newline every 9192 characters when writing a file. Work - around it by writing line by line. (Campbell) -- os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;". - Only mattered for generating prototypes. -- Added file name translation to many places. Made easy by defining macros - mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat(). -- Set default for 'tagbsearch' to off, because binary tag searching apparently - doesn't work for VMS. -- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell) - - -Patch 5.4o.2 -Problem: Crash when using "gf" on "file.c://comment here". (Scott Graham) -Solution: Fix wrong use of pointers in get_file_name_in_path(). -Files: src/window.c - -Patch 5.4o.3 -Problem: The horizontal scrollbar was not sized correctly when 'number' is - set and 'wrap' not set. - Athena: Horizontal scrollbar wasn't updated when the cursor was - positioned with a mouse click just after dragging. -Solution: Subtract 8 from the size when 'number' set and 'wrap' not set. - Reset gui.dragged_sb when a mouse click is received. -Files: src/gui.c - -Patch 5.4o.4 -Problem: When running in an xterm and $WINDOWID is set to an illegal value, - Vim would exit with "Vim: Got X error". -Solution: When using the display which was opened for the xterm clipboard, - check if x11_window is valid by trying to obtain the window title. - Also add a check in setup_xterm_clip(), for when using X calls to - get the pointer position in an xterm. -Files: src/os_unix.c - -Patch 5.4o.5 -Problem: Motif version with Lesstif: When removing the menubar and then - using a menu shortcut key, Vim would crash. (raf) -Solution: Disable the menu mnemonics when the menu bar is removed. -Files: src/gui_motif.c - -Patch 5.4o.9 -Problem: The DOS install.exe program used the "move" program. That doesn't - work on Windows NT, where "move" is internal to cmd.exe. -Solution: Don't use an external program for moving the executables. Use C - functions to copy the file and delete the original. -Files: src/dosinst.c - -Motif and Athena obtained the status area height differently from GTK. Moved -status_area_enabled from global.h to gui_x11.c and call -xim_get_status_area_height() to get the status area height. - -Patch 5.4p.1 -Problem: When using auto-select, and the "gv" command is used, would not - always obtain ownership of the selection. Caused by the Visual - area still being the same, but ownership taken away by another - program. -Solution: Reset the clipboard Visual mode to force updating the selection. -Files: src/normal.c - -Patch 5.4p.2 -Problem: Motif and Athena with XIM: Typing 3-byte - <multibyte><multibyte><space> doesn't work correctly with Ami XIM. -Solution: Avoid using key_sym XK_VoidSymbol. (Nam) -Files: src/multbyte.c, src/gui_x11.c - -Patch 5.4p.4 -Problem: Win32 GUI: The scrollbar values were reduced for a file with more - than 32767 lines. But this info was kept global for all - scrollbars, causing a mixup between the windows. - Using the down arrow of a scrollbar in a large file didn't work. - Because of round-off errors there is no scroll at all. -Solution: Give each scrollbar its own scroll_shift field. When the down - arrow is used, scroll several lines. -Files: src/gui.h, src/gui_w32.c - -Patch 5.4p.5 -Problem: When changing buffers in a BufDelete autocommand, there could be - ml_line errors and/or a crash. (Schandl) Was caused by deleting - the current buffer. -Solution: When the buffer to be deleted unexpectedly becomes the current - buffer, don't delete it. - Also added a check for this in test13. -Files: src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok - -Patch 5.4p.7 -Problem: Win32 GUI: When using 'mousemodel' set to "popup_setpos" and - clicking the right mouse button outside of the selected area, the - selected area wasn't removed until the popup menu has gone. - (Aaron) -Solution: Set the cursor and update the display before showing the popup - menu. -Files: src/normal.c - -Patch 5.4p.8 -Problem: The generated bugreport didn't contain information about - $VIMRUNTIME and whether runtime files actually exist. -Solution: Added a few checks to the bugreport script. -Files: runtime/bugreport.vim - -Patch 5.4p.9 -Problem: The windows install.exe created a wrong entry in the popup menu. - The "%1" was "". The full directory was included, even when the - executable had been moved elsewhere. (Ott) -Solution: Double the '%' to get one from printf. Only include the path to - gvim.exe when it wasn't moved and it's not in $PATH. -Files: src/dosinst.c - -Patch 5.4p.10 -Problem: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used - a short file name for a directory. -Solution: Change the "%1" to "%L" in the registry entry. -Files: src/dosinst.c - -Patch 5.4p.11 -Problem: Motif, Athena and GTK: When closing the GUI window when there is a - changed buffer, there was only an error message and Vim would not - exit. -Solution: Put up a dialog, like for ":confirm qa". Uses the code that was - already used for MS-Windows. -Files: src/gui.c, src/gui_w32.c - -Patch 5.4p.12 -Problem: Win32: Trying to expand a string that is longer than 256 - characters could cause a crash. (Steed) -Solution: For the buffer in win32_expandpath() don't use a fixed size array, - allocate it. -Files: src/os_win32.c - -MSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes for -fname_case() and mch_update_cursor() were missing. "fd" was unused in -mf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused in -mch_call_shell() for DJGPP version. - -============================================================================== -VERSION 5.5 *version-5.5* - -Version 5.5 is a bug-fix version of 5.4. - - -Changed *changed-5.5* -------- - -The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the -size of the executables. - -Moved the src/STYLE file to runtime/doc/develop.txt. Added the design goals -to it. - -'backspace' is now a string option. See patch 5.4.15. - - -Added *added-5.5* ------ - -Included Exuberant Ctags version 3.3. (Darren Hiebert) - -In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used -everywhere to do what CTRL-V used to do. - -Support for decompression of bzip2 files in vimrc_example.vim. - -When a patch is included, the patch number is entered in a table in version.c. -This allows skipping a patch without breaking a next one. - -Support for mouse scroll wheel in X11. See patch 5.5a.14. - -line2byte() can be used to get the size of the buffer. See patch 5.4.35. - -The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to -insert a register literally. See patch 5.4.48. - -Uninstall program for MS-Windows. To be able to remove the registry entries -for "Edit with Vim". It is registered to be run from the "Add/Remove -programs" application. See patch 5.4.x7. - - -Fixed *fixed-5.5* ------ - -When using vimrc_example.vim: An error message when the cursor is on a line -higher than the number of lines in the compressed file. Move the autocommand -for jumping to the last known cursor position to after the decompressing -autocommands. - -":mkexrc" and ":mksession" wrote the current value of 'textmode'. That may -mark a file as modified, which causes problems. This is a buffer-specific -setting, it should not affect all files. - -"vim --version" wrote two empty lines. - -Unix: The alarm signal could kill Vim. It is generated by the Perl alarm() -function. Ignore SIGALRM. - -Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script. - -BeOS: "tmo" must be bigtime_t, instead of double. (Seibert) - -Patch 5.4.1 -Problem: Test11 fails when $GZIP is set to "-v". (Matthew Jackson) -Solution: Set $GZIP to an empty string. -Files: src/testdir/test11.in - -Patch 5.4.2 -Problem: Typing <Esc> at the crypt key prompt caused a crash. (Kallingal) -Solution: Check for a NULL pointer returned from get_crypt_key(). -Files: src/fileio.c - -Patch 5.4.3 -Problem: Python: Trying to use the name of an unnamed buffer caused a - crash. (Daniel Burrows) -Solution: Check for b_fname being a NULL pointer. -Files: src/if_python.c - -Patch 5.4.4 -Problem: Win32: When compiled without toolbar, but the 'T' flag is in - 'guioptions', there would be an empty space for the toolbar. -Solution: Add two #ifdefs where checking for the 'T' flag. (Vince Negri) -Files: src/gui.c - -Patch 5.4.5 -Problem: Athena GUI: Using the Buffers.Refresh menu entry caused a crash. - Looks like any ":unmenu" command may cause trouble. -Solution: Disallow ":unmenu" in the Athena version. Disable the Buffers - menu, because the Refresh item would not work. -Files: src/menu.c, runtime/menu.vim - -Patch 5.4.6 -Problem: GTK GUI: Using ":gui" in the .gvimrc file caused an error. Only - happens when the GUI forks. -Solution: Don't fork in a recursive call of gui_start(). -Files: src/gui.c - -Patch 5.4.7 -Problem: Typing 'q' at the more prompt for the ATTENTION message causes the - file loading to be interrupted. (Will Day) -Solution: Reset got_int after showing the ATTENTION message. -Files: src/memline.c - -Patch 5.4.8 -Problem: Edit some file, ":he", ":opt": options from help window are shown, - but pressing space updates from the other window. (Phillipps) - Also: When there are changes in the option-window, ":q!" gives an - error message. -Solution: Before creating the option-window, go to a non-help window. - Use ":bdel!" to delete the buffer. -Files: runtime/optwin.vim - -Patch 5.4.9 - Just updates version.h. The real patch has been moved to 5.4.x1. - This patch is just to keep the version number correct. - -Patch 5.4.10 -Problem: GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits. It - should run in the terminal. -Solution: Use gtk_init_check() instead of gtk_init(). -Files: src/gui_gtk_x11.c - -Patch 5.4.11 -Problem: When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to - the next buffer for some commands, e.g., ":buffer". -Solution: When the BCO_NOHELP flag is given to buf_copy_options(), still - copy the options used by do_help() when neither the "from" or "to" - buffer is a help buffer. -Files: src/option.c - -Patch 5.4.12 -Problem: When using 'smartindent', there would be no extra indent if the - current line did not have any indent already. (Hanus Adler) -Solution: There was a wrongly placed "else", that previously matched with - the "if" that set trunc_line. Removed the "else" and added a - check for trunc_line to be false. -Files: src/misc1.c - -Patch 5.4.13 -Problem: New SGI C compilers need another option for optimisation. -Solution: Add a check in configure for "-OPT:Olimit". (Chin A Young) -Files: src/configure.in, src/configure - -Patch 5.4.14 -Problem: Motif GUI: When the popup menu is present, a tiny window appears - on the desktop for some users. -Solution: Set the menu widget ID for a popup menu to 0. (Thomas Koehler) -Files: src/gui_motif.c - -Patch 5.4.15 -Problem: Since 'backspace' set to 0 has been made Vi compatible, it is no - longer possible to only allow deleting autoindent. -Solution: Make 'backspace' a list of parts, to allow each kind of - backspacing separately. -Files: src/edit.c, src/option.c, src/option.h, src/proto/option.pro, - runtime/doc/option.txt, runtime/doc/insert.txt - -Patch 5.4.16 -Problem: Multibyte: Locale zh_TW.Big5 was not checked for in configure. -Solution: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang) -Files: src/configure.in, src/configure - -Patch 5.4.17 -Problem: GUI: When started from inside gvim with ":!gvim", Vim would not - start. ":!gvim -f" works fine. -Solution: After forking, wait a moment in the parent process, to give the - child a chance to set its process group. -Files: src/gui.c - -Patch 5.4.18 -Problem: Python: The clear_history() function also exists in a library. -Solution: Rename clear_history() to clear_hist(). -Files: src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro - -Patch 5.4.19 -Problem: In a terminal with 25 lines, there is a more prompt after the - ATTENTION message. When hitting 'q' here the dialog prompt - doesn't appear and file loading is interrupted. (Will Day) -Solution: Don't allow quitting the printing of a message for the dialog - prompt. Added the msg_noquit_more flag for this. -Files: src/message.c - -Patch 5.4.20 -Problem: GTK: When starting gvim, would send escape sequences to the - terminal to switch the cursor off and on. -Solution: Don't call msg_start() if the GUI is expected to start. -Files: src/main.c - -Patch 5.4.21 -Problem: Motif: Toplevel menu ordering was wrong when using tear-off items. -Solution: Don't add one to the index for a toplevel menu. -Files: src/gui_motif.c - -Patch 5.4.22 -Problem: In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't - update the column used for vertical movement. -Solution: Set curwin->w_set_curswant for those commands. -Files: src/edit.c - -Patch 5.4.23 -Problem: When a Visual selection is lost to another program, and then the - same text is Visually selected again, the clipboard ownership - wasn't regained. -Solution: Set clipboard.vmode to NUL to force regaining the clipboard. -Files: src/normal.c - -Patch 5.4.24 -Problem: Encryption: When using ":r file" while 'key' has already entered, - the 'key' option would be messed up. When writing the file it - would be encrypted with an unknown key and lost! (Brad Despres) -Solution: Don't free cryptkey when it is equal to the 'key' option. -Files: src/fileio.c - -Patch 5.4.25 -Problem: When 'cindent' is set, but 'autoindent' isn't, comments are not - properly indented when starting a new line. (Mitterand) -Solution: When there is a comment leader for the new line, but 'autoindent' - isn't set, do C-indenting. -Files: src/misc1.c - -Patch 5.4.26 -Problem: Multi-byte: a multi-byte character is never recognized in a file - name, causing a backslash before it to be removed on Windows. -Solution: Assume that a leading-byte character is a file name character in - vim_isfilec(). -Files: src/charset.c - -Patch 5.4.27 -Problem: Entries in the PopUp[nvic] menus were added for several modes, but - only deleted for the mode they were used for. This resulted in - the entry remaining in the PopUp menu. - When removing a PopUp[nvic] menu, the name had been truncated, - could result in greying-out the whole PopUp menu. -Solution: Remove entries for all modes from the PopUp[nvic] menus. Remove - the PopUp[nvic] menu entries first, before the name is changed. -Files: src/menu.c - -Patch 5.4.28 -Problem: When using a BufWritePre autocommand to change 'fileformat', the - new value would not be used for writing the file. -Solution: Check 'fileformat' after executing the autocommands instead of - before. -Files: src/fileio.c - -Patch 5.4.29 -Problem: Athena GUI: When removing the 'g' flag from 'guioptions', using a - menu can result in a crash. -Solution: Always grey-out menus for Athena, don't hide them. -Files: src/menu.c - -Patch 5.4.30 -Problem: BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim). The - first character typed after ":sh" goes to Vim, instead of the - started shell. -Solution: Don't suspend Vim, start a new shell. Kill the async read thread - when starting a new shell. It will be restarted later. (Will Day) -Files: src/os_unix.c, src/ui.c - -Patch 5.4.31 -Problem: GUI: When 'mousefocus' is set, moving the mouse over where a - window boundary was, causes a hit-enter prompt to be finished. - (Jeff Walker) -Solution: Don't use 'mousefocus' at the hit-enter prompt. Also ignore it - for the more prompt and a few other situations. When an operator - is pending, abort it first. -Files: src/gui.c - -Patch 5.4.32 -Problem: Unix: $LDFLAGS was not passed to configure. -Solution: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner) -Files: src/Makefile - -Patch 5.4.33 -Problem: Unix: After expanding an environment variable with the shell, the - next expansion would also use the shell, even though it is not - needed. -Solution: Reset "recursive" before returning from gen_expand_wildcards(). -Files: src/misc1.c - -Patch 5.4.34 (also see 5.4.x5) -Problem: When editing a file, and the file name is relative to a directory - above the current directory, the file name was made absolute. - (Gregory Margo) -Solution: Add an argument to shorten_fnames() which indicates if all file - names should be shortened, or only absolute names. In main() only - use shorten_fnames() to shorten absolute names. -Files: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro - -Patch 5.4.35 -Problem: There is no function to get the current file size. -Solution: Allow using line2byte() with the number of lines in the file plus - one. This returns the offset of the line past the end of the - file, which is the file size plus one. -Files: src/eval.c, runtime/doc/eval.txt - -Patch 5.4.36 -Problem: Comparing strings while ignoring case didn't work correctly for - some machines. (Mide Steed) -Solution: vim_stricmp() and vim_strnicmp() only returned 0 or 1. Changed - them to return -1 when the first argument is smaller. -Files: src/misc2.c - -Patch 5.4.37 (also see 5.4.40 and 5.4.43) -Problem: Long strings from the viminfo file are truncated. -Solution: When writing a long string to the viminfo file, first write a line - with the length, then the string itself in a second line. -Files: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c, - src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim - -Patch 5.4.38 -Problem: In the option-window, ":set go&" resulted in 'go' being handled - like a boolean option. - Mappings for <Space> and <CR> were overruled by the option-window. -Solution: When the value of an option isn't 0 or 1, don't handle it like a - boolean option. - Save and restore mappings for <Space> and <CR> when entering and - leaving the option-window. -Files: runtime/optwin.vim - -Patch 5.4.39 -Problem: When setting a hidden option, spaces before the equal sign were - not skipped and cause an error message. E.g., ":set csprg =cmd". -Solution: When skipping over a hidden option, check for a following "=val" - and skip it too. -Files: src/option.c - -Patch 5.4.40 (depends on 5.4.37) -Problem: Compiler error for "atol(p + 1)". (Axel Kielhorn) -Solution: Add a typecast: "atol((char *)p + 1)". -Files: src/ex_cmds.c - -Patch 5.4.41 -Problem: Some commands that were not included would give an error message, - even when after "if 0". -Solution: Don't give an error message for an unsupported command when not - executing the command. -Files: src/ex_docmd.c - -Patch 5.4.42 -Problem: ":w" would also cause a truncated message to appear in the message - history. -Solution: Don't put a kept message in the message history when it starts - with "<". -Files: src/message.c - -Patch 5.4.43 (depends on 5.4.37) -Problem: Mixing long lines with multiple lines in a register causes errors - when writing the viminfo file. (Robinson) -Solution: When reading the viminfo file to skip register contents, skip - lines that start with "<". -Files: src/ops.c - -Patch 5.4.44 -Problem: When 'whichwrap' includes '~', a "~" command that goes on to the - next line cannot be properly undone. (Zellner) -Solution: Save each line for undo in n_swapchar(). -Files: src/normal.c - -Patch 5.4.45 (also see 5.4.x8) -Problem: When expand("$ASDF") fails, there is an error message. -Solution: Remove the global expand_interactively. Pass a flag down to skip - the error message. - Also: expand("$ASDF") returns an empty string if $ASDF isn't set. - Previously it returned "$ASDF" when 'shell' is "sh". - Also: system() doesn't print an error when the command returns an - error code. -Files: many - -Patch 5.4.46 -Problem: Backspacing did not always use 'softtabstop' after hitting <CR>, - inserting a register, moving the cursor, etc. -Solution: Reset inserted_space much more often in edit(). -Files: src/edit.c - -Patch 5.4.47 -Problem: When executing BufWritePre or BufWritePost autocommands for a - hidden buffer, the cursor could be moved to a non-existing - position. (Vince Negri) -Solution: Save and restore the cursor and topline for the current window - when it is going to be used to execute autocommands for a hidden - buffer. Use an existing window for the buffer when it's not - hidden. -Files: src/fileio.c - -Patch 5.4.48 -Problem: A paste with the mouse in Insert mode was not repeated exactly the - same with ".". For example, when 'autoindent' is set and pasting - text with leading indent. (Perry) -Solution: Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert - mode, which insert the contents of a register literally. -Files: src/edit.c, src/normal.c, runtime/doc/insert.txt - -Patch 5.4.49 -Problem: When pasting text with [ <MiddleMouse>, the cursor could end up - after the last character of the line. -Solution: Correct the cursor position for the change in indent. -Files: src/ops.c - -Patch 5.4.x1 (note: Replaces patch 5.4.9) -Problem: Win32 GUI: menu hints were never used, because WANT_MENU is not - defined until vim.h is included. -Solution: Move the #ifdef WANT_MENU from where MENUHINTS is defined to where - it is used. -Files: src/gui_w32.c - -Patch 5.4.x2 -Problem: BeOS: When pasting text, one character was moved to the end. -Solution: Re-enable the BeOS code in fill_input_buf(), and fix timing out - with acquire_sem_etc(). (Will Day) -Files: src/os_beos.c, src/ui.c - -Patch 5.4.x3 -Problem: Win32 GUI: When dropping a directory on a running gvim it crashes. -Solution: Avoid using a NULL file name. Also display a message to indicate - that the current directory was changed. -Files: src/gui_w32.c - -Patch 5.4.x4 -Problem: Win32 GUI: Removing an item from the popup menu doesn't work. -Solution: Don't remove the item from the menubar, but from the parent popup - menu. -Files: src/gui_w32.c - -Patch 5.4.x5 (addition to 5.4.34) -Files: src/gui_w32.c - -Patch 5.4.x6 -Problem: Win32: Expanding (dir)name starting with a dot doesn't work. - (McCormack) Only when there is a path before it. -Solution: Fix the check, done before expansion, if the file name pattern - starts with a dot. -Files: src/os_win32.c - -Patch 5.4.x7 -Problem: Win32 GUI: Removing "Edit with Vim" from registry is difficult. -Solution: Add uninstall program to remove the registry keys. It is installed - in the "Add/Remove programs" list for ease of use. - Also: don't set $VIM when the executable is with the runtime files. - Also: Add a text file with a step-by-step description of how to - uninstall Vim for DOS and Windows. -Files: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt - -Patch 5.4.x8 (addition to 5.4.45) -Files: many - -Patch 5.4.x9 -Problem: Win32 GUI: After executing an external command, focus is not - always regained (when using focus-follows-mouse). -Solution: Add SetFocus() in mch_system(). (Mike Steed) -Files: src/os_win32.c - - -Patch 5.5a.1 -Problem: ":let @* = @:" did not work. The text was not put on the - I clipboard. (Fisher) -Solution: Own the clipboard and put the text on it. -Files: src/ops.c - -Patch 5.5a.2 -Problem: append() did not mark the buffer modified. Marks below the - new line were not adjusted. -Solution: Fix the f_append() function. -Files: src/eval.c - -Patch 5.5a.3 -Problem: Editing compressed ".gz" files doesn't work on non-Unix systems, - because there is no "mv" command. -Solution: Add the rename() function and use it instead of ":!mv". - Also: Disable the automatic jump to the last position, because it - changes the jumplist. -Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim - -Patch 5.5a.4 -Problem: When using whole-line completion in insert mode while the cursor - is in the indent, get "out of memory" error. (Stekrt) -Solution: Don't allocate a negative amount of memory in ins_complete(). -Files: src/edit.c - -Patch 5.5a.5 -Problem: Win32: The 'path' option can hold only up to 256 characters, - because _MAX_PATH is 256. (Robert Webb) -Solution: Use a fixed path length of 1024. -Files: src/os_win32.h - -Patch 5.5a.6 -Problem: Compiling with gcc on Win32, using the Unix Makefile, didn't work. -Solution: Add $(SUFFIX) to all places where an executable is used. Also - pass it to ctags. (Reynolds) -Files: src/Makefile - -Patch 5.5a.7 -Problem: When using "cat | vim -" in an xterm, the xterm version reply - would end up in the file. -Solution: Read the file from stdin before switching the terminal to RAW - mode. Should also avoid problems with programs that use a - specific terminal setting. - Also: when using the GUI, print "Reading from stdin..." in the GUI - window, to give a hint why it doesn't do anything. -Files: src/main.c, src/fileio.c - -Patch 5.5a.8 -Problem: On multi-threaded Solaris, suspending doesn't work. -Solution: Call pause() when the SIGCONT signal was not received after - sending the SIGTSTP signal. (Nagano) -Files: src/os_unix.c - -Patch 5.5a.9 -Problem: 'winaltkeys' could be set to an empty argument, which is illegal. -Solution: Give an error message when doing ":set winaltkeys=". -Files: src/option.c - -Patch 5.5a.10 -Problem: Win32 console: Using ALTGR on a German keyboard to produce "}" - doesn't work, because the 8th bit is set when ALT is pressed. -Solution: Don't set the 8th bit when ALT and CTRL are used. (Leipert) -Files: src/os_win32.c - -Patch 5.5a.11 -Problem: Tcl: Configure always uses tclsh8.0. - Also: Loading a library doesn't work. -Solution: Add "--with-tclsh" configure argument to allow specifying another - name for the tcl shell. - Call Tcl_Init() in tclinit() to make loading libraries work. - (Johannes Zellner) -Files: src/configure.in, src/configure, src/if_tcl.c - -Patch 5.5a.12 -Problem: The "user_commands" feature is called "user-commands". -Solution: Replace "user-commands" with "user_commands". (Kim Sung-bom) - Keep "user-commands" for the has() function, to remain backwards - compatible with 5.4. -Files: src/eval.c, src/version.c - -Patch 5.5a.13 -Problem: OS/2: When $HOME is not defined, "C:/" is used for the viminfo - file. That is very wrong when OS/2 is on another partition. -Solution: Use $VIM for the viminfo file when it is defined, like for MSDOS. - Also: Makefile.os2 didn't depend on os_unix.h. -Files: src/os_unix.h, src/Makefile.os2 - -Patch 5.5a.14 -Problem: Athena, Motif and GTK: The Mouse scroll wheel doesn't work. -Solution: Interpret a click of the wheel as a key press of the <MouseDown> - or <MouseUp> keys. Default behavior is to scroll three lines, or - a full page when Shift is used. -Files: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c, - src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c, - src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h, - runtime/doc/scroll.txt - -Patch 5.5a.15 -Problem: Using CTRL-A in Insert mode doesn't work correctly when the insert - started with the <Insert> key. (Andreas Rohrschneider) -Solution: Replace <Insert> with "i" before setting up the redo buffer. -Files: src/normal.c - -Patch 5.5a.16 -Problem: VMS: GUI does not compile and run. -Solution: Various fixes. (Zoltan Arpadffy) - Moved functions from os_unix.c to ui.c, so that VMS can use them - too: open_app_context(), x11_setup_atoms() and clip_x11* functions. - Made xterm_dpy global, it's now used by ui.c and os_unix.c. - Use gethostname() always, sys_hostname doesn't exist. -Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c, - src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro - -Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar() -to avoid symbol length limit of 31 characters. (Steve P. Wall) - -Patch 5.5b.1 -Problem: SASC complains about dead assignments and implicit type casts. -Solution: Removed the dead assignments. Added explicit type casts. -Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c, - src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c, - src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c, - src/screen.c - -Patch 5.5b.2 -Problem: When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in - another line truncates that line. (Devin Weaver) -Solution: When using a command that starts Insert mode from CTRL-O, reset - "restart_edit" first. This avoids that edit() is called with a - mix of starting a new edit command and restarting a previous one. -Files: src/normal.c - -============================================================================== -VERSION 5.6 *version-5.6* - -Version 5.6 is a bug-fix version of 5.5. - - -Changed *changed-5.6* -------- - -Small changes to OleVim files. (Christian Schaller) - -Inserted "/**/" between patch numbers in src/version.c. This allows for one -line of context, which some versions of patch need. - -Reordered the Syntax menu to avoid long submenus. Removed keyboard shortcuts -for alphabetical items to avoid a clash with fixed items. - - -Added *added-5.6* ------ - -Included Exuberant Ctags version 3.4. (Darren Hiebert) - -OpenWithVim in Python. (Christian Schaller) - -Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry. Avoids -the reported problems with the MS Office taskbar. Now it's a Shell Extension. -(Tianmiao Hu) - -New syntax files: -abel Abel (John Cook) -aml Arc Macro Language (Nikki Knuit) -apachestyle Apache-style config file (Christian Hammers) -cf Cold Fusion (Jeff Lanzarotta) -ctrlh files with CTRL-H sequences (Bram Moolenaar) -cupl CUPL (John Cook) -cuplsim CUPL simulation (John Cook) -erlang Erlang (Kresimir Marzic) -gedcom Gedcom (Paul Johnson) -icon Icon (Wendell Turner) -ist MakeIndex style (Peter Meszaros) -jsp Java Server Pages (Rafael Garcia-Suarez) -rcslog Rcslog (Joe Karthauser) -remind Remind (Davide Alberani) -sqr Structured Query Report Writer (Paul Moore) -tads TADS (Amir Karger) -texinfo Texinfo (Sandor Kopanyi) -xpm2 X Pixmap v2 (Steve Wall) - -The 'C' flag in 'cpoptions' can be used to switch off concatenation for -sourced lines. See patch 5.5.013 below. |line-continuation| - -"excludenl" argument for the ":syntax" command. See patch 5.5.032 below. -|:syn-excludenl| - -Implemented |z+| and |z^| commands. See patch 5.5.050 below. - -Vim logo in Corel Draw format. Can be scaled to any resolution. - - -Fixed *fixed-5.6* ------ - -Using this mapping in Select mode, terminated completion: -":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher) -Ignore K_SELECT in ins_compl_prep(). - -VMS (Zoltan Arpadffy, David Elins): -- ioctl() in pty.c caused trouble, #ifndef VMS added. -- Cut & paste mismatch corrected. -- Popup menu line crash corrected. (Patch 5.5.047) -- Motif directories during open and save as corrected. -- Handle full file names with version numbers. (Patch 5.5.046) -- Directory handling (CD command etc.) -- Corrected file name conversion VMS to Unix and v.v. -- Recovery was not working. -- Terminal and signal handling was outdated compared to os_unix.c. -- Improved os_vms.txt. - -Configure used fprintf() instead of printf() to check for __DATE__ and -__TIME__. (John Card II) - -BeOS: Adjust computing the char_height and char_ascent. Round them up -separately, avoids redrawing artifacts. (Mike Steed) - -Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and -findmatchlimit(). (Taro Muraoka) - -GTK GUI: -- With GTK 1.2.5 and later the scrollbars were not redrawn correctly. -- Adjusted the gtk_form_draw() function. -- SNiFF connection didn't work. -- 'mousefocus' was not working. (Dalecki) -- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@. - - -Patch 5.5.001 -Problem: Configure in the top directory did not pass on an argument with a - space correctly. For example "./configure --previs="/My home". - (Stephane Chazelas) -Solution: Use '"$@"' instead of '$*' to pass on the arguments. -Files: configure - -Patch 5.5.002 -Problem: Compilation error for using "fds[] & POLLIN". (Jeff Walker) -Solution: Use "fds[].revents & POLLIN". -Files: src/os_unix.c - -Patch 5.5.003 -Problem: The autoconf check for sizeof(int) is wrong on machines where - sizeof(size_t) != sizeof(int). -Solution: Use our own configure check. Also fixes the warning for - cross-compiling. -Files: src/configure.in, src/configure - -Patch 5.5.004 -Problem: On Unix it's not possible to interrupt ":sleep 100". -Solution: Switch terminal to cooked mode while asleep, to allow a SIGINT to - wake us up. But switch off echo, added TMODE_SLEEP. -Files: src/term.h, src/os_unix.c - -Patch 5.5.005 -Problem: When using <f-args> with a user command, an empty argument to the - command resulted in one empty string, while no string was - expected. -Solution: Catch an empty argument and pass no argument to the function. - (Paul Moore) -Files: src/ex_docmd.c - -Patch 5.5.006 -Problem: Python: When platform-dependent files are in another directory - than the platform-independent files it doesn't work. -Solution: Also check the executable directory, and add it to CFLAGS. (Tessa - Lau) -Files: src/configure.in, src/configure - -Patch 5.5.007 (extra) -Problem: Win32 OLE: Occasional crash when exiting while still being used - via OLE. -Solution: Move OleUninitialize() to before deleting the application object. - (Vince Negri) -Files: src/if_ole.cpp - -Patch 5.5.008 -Problem: 10000@@ takes a long time and cannot be interrupted. -Solution: Check for CTRL-C typed while in the loop to push the register. -Files: src/normal.c - -Patch 5.5.009 -Problem: Recent Sequent machines don't link with "-linet". (Kurtis Rader) -Solution: Remove configure check for Sequent. -Files: src/configure.in, src/configure - -Patch 5.5.010 -Problem: Ctags freed a memory block twice when exiting. When out of - memory, a misleading error message was given. -Solution: Update to ctags 3.3.2. Also fixes a few other problems. (Darren - Hiebert) -Files: src/ctags/* - -Patch 5.5.011 -Problem: After "CTRL-V s", the cursor jumps back to the start, while all - other operators leave the cursor on the last changed character. - (Xiangjiang Ma) -Solution: Position cursor on last changed character, if possible. -Files: src/ops.c - -Patch 5.5.012 -Problem: Using CTRL-] in Visual mode doesn't work when the text includes a - space (just where it's useful). (Stefan Bittner) -Solution: Don't escape special characters in a tag name with a backslash. -Files: src/normal.c - -Patch 5.5.013 -Problem: The ":append" and ":insert" commands allow using a leading - backslash in a line. The ":source" command concatenates those - lines. (Heinlein) -Solution: Add the 'C' flag in 'cpoptions' to switch off concatenation. -Files: src/ex_docmd.c, src/option.h, runtime/doc/options.txt, - runtime/filetype.vim, runtime/scripts.vim - -Patch 5.5.014 -Problem: When executing a register with ":@", the ":append" command would - get text lines with a ':' prepended. (Heinlein) -Solution: Remove the ':' characters. -Files: src/ex_docmd.c, src/ex_getln.c, src/globals.h - -Patch 5.5.015 -Problem: When using ":g/pat/p", it's hard to see where the output starts, - the ":g" command is overwritten. Vi keeps the ":g" command. -Solution: Keep the ":g" command, but allow overwriting it with the report - for the number of changes. -Files: src/ex_cmds.c - -Patch 5.5.016 (extra) -Problem: Win32: Using regedit to install Vim in the popup menu requires the - user to confirm this in a dialog. -Solution: Use "regedit /s" to avoid the dialog -Files: src/dosinst.c - -Patch 5.5.017 -Problem: If an error occurs when closing the current window, Vim could get - stuck in the error handling. -Solution: Don't set curwin to NULL when closing the current window. -Files: src/window.c - -Patch 5.5.018 -Problem: Absolute paths in shell scripts do not always work. -Solution: Use /usr/bin/env to find out the path. -Files: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl, - runtime/tools/shtags.pl - -Patch 5.5.019 -Problem: A function call in 'statusline' stops using ":q" twice from - exiting, when the last argument hasn't been edited. -Solution: Don't decrement quitmore when executing a function. (Madsen) -Files: src/ex_docmd.c - -Patch 5.5.020 -Problem: When the output of CTRL-D completion in the commandline goes all - the way to the last column, there is an empty line. -Solution: Don't add a newline when the cursor wrapped already. (Madsen) -Files: src/ex_getln.c - -Patch 5.5.021 -Problem: When checking if a file name in the tags file is relative, - environment variables were not expanded. -Solution: Expand the file name before checking if it is relative. (Madsen) -Files: src/tag.c - -Patch 5.5.022 -Problem: When setting or resetting 'paste' the ruler wasn't updated. -Solution: Update the status lines when 'ruler' changes because of 'paste'. -Files: src/option.c - -Patch 5.5.023 -Problem: When editing a new file and autocommands change the cursor - position, the cursor was moved back to the first non-white, unless - 'startofline' was reset. -Solution: Keep the new column, just like the line number. -Files: src/ex_cmds.c - -Patch 5.5.024 (extra) -Problem: Win32 GUI: When using confirm() to put up a dialog without a - default button, the dialog would not have keyboard focus. - (Krishna) -Solution: Always set focus to the dialog window. Only set focus to a button - when a default one is specified. -Files: src/gui_w32.c - -Patch 5.5.025 -Problem: When using "keepend" in a syntax region, a contained match that - includes the end-of-line could still force that region to - continue, if there is another contained match in between. -Solution: Check the keepend_level in check_state_ends(). -Files: src/syntax.c - -Patch 5.5.026 -Problem: When starting Vim in a white-on-black xterm, with 'bg' set to - "dark", and then starting the GUI with ":gui", setting 'bg' to - "light" in the gvimrc, the highlighting isn't set. (Tsjokwing) -Solution: Set the highlighting when 'bg' is changed in the gvimrc, even - though full_screen isn't set. -Files: src/option.c - -Patch 5.5.027 -Problem: Unix: os_unix.c doesn't compile when XTERM_CLIP is used but - WANT_TITLE isn't. (Barnum) -Solution: Move a few functions that are used by the X11 title and clipboard - and put another "#if" around it. -Files: src/os_unix.c - -Patch 5.5.028 (extra) -Problem: Win32 GUI: When a file is dropped on Win32 gvim while at the ":" - prompt, the file is edited but the command line is actually still - there, the cursor goes back to command line on the next command. - (Krishna) -Solution: When dropping a file or directory on gvim while at the ":" prompt, - insert the name of the file/directory. Allows using the - file/directory name for any Ex command. -Files: src/gui_w32.c - -Patch 5.5.029 -Problem: "das" at the end of the file didn't delete the last character of - the sentence. -Solution: When there is no character after the sentence, make the operation - inclusive in current_sent(). -Files: src/search.c - -Patch 5.5.030 -Problem: Unix: in os_unix.c, "term_str" is used, which is also defined in - vim.h as a macro. (wuxin) -Solution: Renamed "term_str" to "buf" in do_xterm_trace(). -Files: src/os_unix.c - -Patch 5.5.031 (extra) -Problem: Win32 GUI: When exiting Windows, gvim will leave swap files behind - and will be killed ungracefully. (Krishna) -Solution: Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to - exit gracefully. Allow the user to cancel the shutdown if there - is a changed buffer. -Files: src/gui_w32.c - -Patch 5.5.032 -Problem: Patch 5.5.025 wasn't right. And C highlighting was still not - working correctly for a #define. -Solution: Added "excludenl" argument to ":syntax", to be able not to extend - a containing item when there is a match with the end-of-line. -Files: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim - -Patch 5.5.033 -Problem: When reading from stdin, a long line in viminfo would mess up the - file message. readfile() uses IObuff for keep_msg, which could be - overwritten by anyone. -Solution: Copy the message from IObuff to msg_buf and set keep_msg to that. - Also change vim_fgets() to not use IObuff any longer. -Files: src/fileio.c - -Patch 5.5.034 -Problem: "gvim -rv" caused a crash. Using 't_Co' before it's set. -Solution: Don't try to initialize the highlighting before it has been - initialized from main(). -Files: src/syntax.c - -Patch 5.5.035 -Problem: GTK with XIM: Resizing with status area was messy, and - ":set guioptions+=b" didn't work. -Solution: Make status area a separate widget, but not a separate window. - (Chi-Deok Hwang) -Files: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c - -Patch 5.5.036 -Problem: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to - uncompress a file did not do detection for 'fileformat'. This is - because the filtering is done with 'binary' set. -Solution: Split the filtering into separate write, filter and read commands. -Files: runtime/vimrc_example.vim - -Patch 5.5.037 -Problem: The "U" command didn't mark the buffer as changed. (McCormack) -Solution: Set the 'modified' flag when using "U". -Files: src/undo.c - -Patch 5.5.038 -Problem: When typing a long ":" command, so that the screen scrolls up, - causes the hit-enter prompt, even though the user just typed - return to execute the command. -Solution: Reset need_wait_return if (part of) the command was typed in - getcmdline(). -Files: src/ex_getln.c - -Patch 5.5.039 -Problem: When using a custom status line, "%a" (file # of #) reports the - index of the current window for all windows. -Solution: Pass a window pointer to append_arg_number(), and pass the window - being updated from build_stl_str_hl(). (Stephen P. Wall) -Files: src/buffer.c, src/screen.c, src/proto/buffer.pro - -Patch 5.5.040 -Problem: Multi-byte: When there is some error in xim_real_init(), it can - close XIM and return. After this there can be a segv. -Solution: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try - to find more matches for supported styles. (Sung-Hyun Nam) -Files: src/multbyte.c - -Patch 5.5.041 -Problem: X11 GUI: CTRL-_ requires the SHIFT key only on some machines. -Solution: Translate CTRL-- to CTRL-_. (Robert Webb) -Files: src/gui_x11.c - -Patch 5.5.042 -Problem: X11 GUI: keys with ALT were assumed to be used for the menu, even - when the menu has been disabled by removing 'm' from 'guioptions'. -Solution: Ignore keys with ALT only when gui.menu_is_active is set. (Raf) -Files: src/gui_x11.c - -Patch 5.5.043 -Problem: GTK: Handling of fontset fonts was not right when 'guifontset' - contains exactly 14 times '-'. -Solution: Avoid setting fonts when working with a fontset. (Sung-Hyun Nam) -Files: src/gui_gtk_x11.c - -Patch 5.5.044 -Problem: pltags.pl contains an absolute path "/usr/local/bin/perl". That - might not work everywhere. -Solution: Use "/usr/bin/env perl" instead. -Files: runtime/tools/pltags.pl - -Patch 5.5.045 -Problem: Using "this_session" variable does not work, requires preceding it - with "v:". Default filename for ":mksession" isn't mentioned - in the docs. (Fisher) -Solution: Support using "this_session" to be backwards compatible. -Files: src/eval.c, runtime/doc/options.txt - -Patch 5.5.046 (extra) -Problem: VMS: problems with path and filename. -Solution: Truncate file name at last ';', etc. (Zoltan Arpadffy) -Files: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c, - src/proto/os_vms.pro - -Patch 5.5.047 -Problem: VMS: Crash when using the popup menu -Solution: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy) -Files: src/structs.h, src/menu.c - -Patch 5.5.048 -Problem: HP-UX 11: Compiling doesn't work, because both string.h and - strings.h are included. (Squassabia) -Solution: The configure test for including both string.h and strings.h - must include <Xm/Xm.h> first, because it causes problems. -Files: src/configure.in, src/configure, src/config.h.in - -Patch 5.5.049 -Problem: Unix: When installing Vim, the protection bits of files might be - influenced by the umask. -Solution: Add $(FILEMOD) to Makefile. (Shetye) -Files: src/Makefile - -Patch 5.5.050 -Problem: "z+" and "z^" commands are missing. -Solution: Implemented "z+" and "z^". -Files: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt - -Patch 5.5.051 -Problem: Several Unix systems have a problem with the optimization limits - check in configure. -Solution: Removed the configure check, let the user add it manually in - Makefile or the environment. -Files: src/configure.in, src/configure, src/Makefile - -Patch 5.5.052 -Problem: Crash when using a cursor key at the ATTENTION prompt. (Alberani) -Solution: Ignore special keys at the console dialog. Also ignore characters - > 255 for other uses of tolower() and toupper(). -Files: src/menu.c, src/message.c, src/misc2.c - -Patch 5.5.053 -Problem: Indenting is wrong after a function when 'cino' has "fs". Another - problem when 'cino' has "{s". -Solution: Put line after closing "}" of a function at the left margin. - Apply ind_open_extra in the right way after a '{'. -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - -Patch 5.5.054 -Problem: Unix: ":e #" doesn't work if the alternate file name contains a - space or backslash. (Hudacek) -Solution: When replacing "#", "%" or other items that stand for a file name, - prepend a backslash before special characters. -Files: src/ex_docmd.c - -Patch 5.5.055 -Problem: Using "<C-V>$r-" in blockwise Visual mode replaces one character - beyond the end of the line. (Zivkov) -Solution: Only replace existing characters. -Files: src/ops.c - -Patch 5.5.056 -Problem: After "z20<CR>" messages were printed at the old command line - position once. (Veselinovic) -Solution: Set msg_row and msg_col when changing cmdline_row in - win_setheight(). -Files: src/window.c - -Patch 5.5.057 -Problem: After "S<Esc>" it should be possible to restore the line with "U". - (Veselinovic) -Solution: Don't call u_clearline() in op_delete() when changing only one - line. -Files: src/ops.c - -Patch 5.5.058 -Problem: Using a long search pattern and then "n" causes the hit-enter - prompt. (Krishna) -Solution: Truncate the echoed pattern, like other messages. Moved code for - truncating from msg_attr() to msg_strtrunc(). -Files: src/message.c, src/proto/message.pro, src/search.c - -Patch 5.5.059 -Problem: GTK GUI: When $term is invalid, using "gvim" gives an error - message, even though $term isn't really used. (Robbins) -Solution: When the GUI is about to start, skip the error messages for a - wrong $term. -Files: src/term.c - -Patch 5.5.060 (extra) -Problem: Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w" - causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf) -Solution: The code to work around a LFN bug in Windows 95 doesn't handle a - non-existing target name correctly. When renaming fails, make - sure the file has its original name. Also do this for the Win32 - version, although it's unlikely that it runs into this problem. -Files: src/os_msdos.c, src/os_win32.c - -Patch 5.5.061 -Problem: When using "\:" in a modeline, the backslash is included in the - option value. (Mohsin) -Solution: Remove one backslash before the ':' in a modeline. -Files: src/buffer.c, runtime/doc/options.txt - -Patch 5.5.062 (extra) -Problem: Win32 console: Temp files are created in the root of the current - drive, which may be read-only. (Peterson) -Solution: Use the same mechanism of the GUI version: Use $TMP, $TEMP or the - current directory. Cleaned up vim_tempname() a bit. -Files: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt - -Patch 5.5.063 -Problem: When using whole-line completion in Insert mode, 'cindent' is - applied, even after changing the indent of the line. -Solution: Don't reindent the completed line after inserting/removing indent. - (Robert Webb) -Files: src/edit.c - -Patch 5.5.064 -Problem: has("sniff") doesn't work correctly. -Solution: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer) -Files: src/eval.c - -Patch 5.5.065 -Problem: When dropping a file on Vim, the 'shellslash' option is not - effective. (Krishna) -Solution: Fix the slashes in the dropped file names according to - 'shellslash'. -Files: src/ex_docmd.c, runtime/doc/options.txt - -Patch 5.5.066 -Problem: For systems with backslash in file name: Setting a file name - option to a value starting with "\\machine" removed a backslash. -Solution: Keep the double backslash for "\\machine", but do change - "\\\\machine" to "\\machine" for backwards compatibility. -Files: src/option.c, runtime/doc/options.txt - -Patch 5.5.067 -Problem: With 'hlsearch' set, the pattern "\>" doesn't highlight the first - match in a line. (Benji Fisher) -Solution: Fix highlighting an empty match. Also highlight the first - character in an empty line for "$". -Files: src/screen.c - -Patch 5.5.068 -Problem: Crash when a ":while" is used with an argument that has an error. - (Sylvain Viart) -Solution: Was using an uninitialized index in the cs_line[] array. The - crash only happened when the index was far off. Made sure the - uninitialized index isn't used. -Files: src/ex_docmd.c - -Patch 5.5.069 -Problem: Shifting lines in blockwise Visual mode didn't set the 'modified' - flag. -Solution: Do set the 'modified' flag. -Files: src/ops.c - -Patch 5.5.070 -Problem: When editing a new file, creating that file outside of Vim, then - editing it again, ":w" still warns for overwriting an existing - file. (Nam) -Solution: The BF_NEW flag in the "b_flags" field wasn't cleared properly. -Files: src/buffer.c, src/fileio.c - -Patch 5.5.071 -Problem: Using a matchgroup in a ":syn region", which is the same syntax - group as the region, didn't stop a contained item from matching in - the start pattern. -Solution: Also push an item on the stack when the syntax ID of the - matchgroup is the same as the syntax ID of the region. -Files: src/syntax.c - -Patch 5.5.072 (extra) -Problem: Dos 32 bit: When setting 'columns' to a too large value, Vim may - crash, and the DOS console too. -Solution: Check that the value of 'columns' isn't larger than the number of - columns that the BIOS reports. -Files: src/os_msdos.c, src/proto/os_msdos.pro, src/option.c - -Patch 5.5.073 (extra) -Problem: Win 32 GUI: The Find and Find/Replace dialogs didn't show the - "match case" checkbox. The Find/Replace dialog didn't handle the - "match whole word" checkbox. -Solution: Support the "match case" and "match whole word" checkboxes. -Files: src/gui_w32.c - -Patch 5.6a.001 -Problem: Using <C-End> with a count doesn't work like it does with "G". - (Benji Fisher) -Solution: Accept a count for <C-End> and <C-Home>. -Files: src/normal.c - -Patch 5.6a.002 -Problem: The script for conversion to HTML was an older version. -Solution: Add support for running 2html.vim on a color terminal. -Files: runtime/syntax/2html.vim - -Patch 5.6a.003 -Problem: Defining a function inside a function didn't give an error - message. A missing ":endfunction" doesn't give an error message. -Solution: Allow defining a function inside a function. -Files: src/eval.c, runtime/doc/eval.txt - -Patch 5.6a.004 -Problem: A missing ":endwhile" or ":endif" doesn't give an error message. - (Johannes Zellner) -Solution: Check for missing ":endwhile" and ":endif" in sourced files. - Add missing ":endif" in file selection macros. -Files: src/ex_docmd.c, runtime/macros/file_select.vim - -Patch 5.6a.005 -Problem: 'hlsearch' was not listed alphabetically. The value of 'toolbar' - was changed when 'compatible' is set. -Solution: Moved entry of 'hlsearch' in options[] table down. - Don't reset 'toolbar' option to the default value when - 'compatible' is set. -Files: src/option.c - -Patch 5.6a.006 -Problem: Using a backwards range inside ":if 0" gave an error message. -Solution: Don't complain about a range when it is not going to be used. - (Stefan Roemer) -Files: src/ex_docmd.c - -Patch 5.6a.007 -Problem: ":let" didn't show internal Vim variables. (Ron Aaron) -Solution: Do show ":v" variables for ":let" and ":let v:name". -Files: src/eval.c - -Patch 5.6a.008 -Problem: Selecting a syntax from the Syntax menu gives an error message. -Solution: Replace "else if" in SetSyn() with "elseif". (Ronald Schild) -Files: runtime/menu.vim - -Patch 5.6a.009 -Problem: When compiling with +extra_search but without +syntax, there is a - compilation error in screen.c. (Axel Kielhorn) -Solution: Adjust the #ifdef for declaring and initializing "line" in - win_line(). Also solve compilation problem when +statusline is - used without +eval. Another one when +cmdline_compl is used - without +eval. -Files: src/screen.c, src/misc2.c - -Patch 5.6a.010 -Problem: In a function, ":startinsert!" does not append to the end of the - line if a ":normal" command was used to move the cursor. (Fisher) -Solution: Reset "w_set_curswant" to avoid that w_curswant is changed again. -Files: src/ex_docmd.c - -Patch 5.6a.011 (depends on 5.6a.004) -Problem: A missing ":endif" or ":endwhile" in a function doesn't give an - error message. -Solution: Give that error message. -Files: src/ex_docmd.c - -Patch 5.6a.012 (depends on 5.6a.008) -Problem: Some Syntax menu entries caused a hit-enter prompt. -Solution: Call a function to make the command shorter. Also rename a few - functions to avoid name clashes. -Files: runtime/menu.vim - -Patch 5.6a.013 -Problem: Command line completion works different when another completion - was done earlier. (Johannes Zellner) -Solution: Reset wim_index when starting a new completion. -Files: src/ex_getln.c - -Patch 5.6a.014 -Problem: Various warning messages when compiling and running lint with - different combinations of features. -Solution: Fix the warning messages. -Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c, - src/option.c, src/screen.c, src/search.c, src/syntax.c, - src/feature.h, src/globals.h - -Patch 5.6a.015 -Problem: The vimtutor command doesn't always know the value of $VIMRUNTIME. -Solution: Let Vim expand $VIMRUNTIME, instead of the shell. -Files: src/vimtutor - -Patch 5.6a.016 (extra) -Problem: Mac: Window size is restricted when starting. Cannot drag the - window all over the desktop. -Solution: Get real screen size instead of assuming 640x400. Do not use a - fixed number for the drag limits. (Axel Kielhorn) -Files: src/gui_mac.c - -Patch 5.6a.017 -Problem: The "Paste" entry in popup menu for Visual, Insert and Cmdline - mode is in the wrong position. (Stol) -Solution: Add priority numbers for all Paste menu entries. -Files: runtime/menu.vim - -Patch 5.6a.018 -Problem: GTK GUI: submenu priority doesn't work. - Help dialog could be destroyed too soon. - When closing a dialog window (e.g. the "ATTENTION" one), Vim would - just hang. - When GTK theme is changed, Vim doesn't adjust to the new colors. - Argument for ":promptfind" isn't used. -Solution: Fixed the mentioned problems. - Made the dialogs look&feel nicer. - Moved functions to avoid the need for a forward declaration. - Fixed reentrancy of the file browser dialog. - Added drag&drop support for GNOME. - Init the text for the Find/replace dialog from the last used - search string. Set "match whole word" toggle button correctly. - Made repeat rate for drag outside of window depend on the - distance from the window. (Marcin Dalecki) - Made the drag in Visual mode actually work. - Removed recursiveness protection from gui_mch_get_rgb(), it might - cause more trouble than it solves. -Files: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c, - src/proto/ui.pro, src/misc2.c - -Patch 5.6a.019 -Problem: When trying to recover through NFS, which uses a large block size, - Vim might think the swap file is empty, because mf_blocknr_max is - zero. (Scott McDermott) -Solution: When computing the number of blocks of the file in mf_open(), - round up instead of down. -Files: src/memfile.c - -Patch 5.6a.020 -Problem: GUI GTK: Could not set display for gvim. -Solution: Add "-display" and "--display" arguments. (Marcin Dalecki) -Files: src/gui_gtk_x11.c - -Patch 5.6a.021 -Problem: Recovering still may not work when the block size of the device - where the swap file is located is larger than 4096. -Solution: Read block 0 with the minimal block size. -Files: src/memline.c, src/memfile.c, src/vim.h - -Patch 5.6a.022 (extra) -Problem: Win32 GUI: When an error in the vimrc causes a dialog to pop up - (e.g., for an existing swap file), Vim crashes. (David Elins) -Solution: Before showing a dialog, open the main window. -Files: src/gui_w32.c - -Patch 5.6a.023 -Problem: Using expand("%:gs??/?") causes a crash. (Ron Aaron) -Solution: Check for running into the end of the string in do_string_sub(). -Files: src/eval.c - -Patch 5.6a.024 -Problem: Using an autocommand to delete a buffer when leaving it can cause - a crash when jumping to a tag. (Franz Gorkotte) -Solution: In do_tag(), store tagstacklen before jumping to another buffer. - Check tagstackidx after jumping to another buffer. - Add extra check in win_split() if tagname isn't NULL. -Files: src/tag.c, src/window.c - -Patch 5.6a.025 (extra) -Problem: Win32 GUI: The tables for toupper() and tolower() are initialized - too late. (Mike Steed) -Solution: Move the initialization to win32_init() and call it from main(). -Files: src/main.c, src/os_w32.c, src/proto/os_w32.pro - -Patch 5.6a.026 -Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer) -Solution: Skip a second wait() call if waitpid() already detected that the - child has exited. -Files: src/os_unix.c - -Patch 5.6a.027 (extra) -Problem: Win32 GUI: The "Edit with Vim" popup menu entry causes problems - for the Office toolbar. -Solution: Use a shell extension dll. (Tianmiao Hu) - Added it to the install and uninstal programs, replaces the old - "Edit with Vim" menu registry entries. -Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt - -Patch 5.6a.028 (extra) -Problem: Win32 GUI: Dialogs and tear-off menus can't handle multi-byte - characters. -Solution: Adjust nCopyAnsiToWideChar() to handle multi-byte characters - correctly. -Files: src/gui_w32.c - -============================================================================== -VERSION 5.7 *version-5.7* - -Version 5.7 is a bug-fix version of 5.6. - -Changed *changed-5.7* -------- - -Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a -wrong file type. Also renamed src/INSTALL.amiga to INSTALL_ami.txt. - - -Added *added-5.7* ------ - -New syntax files: -stp Stored Procedures (Jeff Lanzarotta) -snnsnet, snnspat, snnsres SNNS (Davide Alberani) -mel MEL (Robert Minsk) -ruby Ruby (Mirko Nasato) -tli TealInfo (Kurt W. Andrews) -ora Oracle config file (Sandor Kopanyi) -abaqus Abaqus (Carl Osterwisch) -jproperties Java Properties (Simon Baldwin) -apache Apache config (Allan Kelly) -csp CSP (Jan Bredereke) -samba Samba config (Rafael Garcia-Suarez) -kscript KDE script (Thomas Capricelli) -hb Hyper Builder (Alejandro Forero Cuervo) -fortran Fortran (rewritten) (Ajit J. Thakkar) -sml SML (Fabrizio Zeno Cornelli) -cvs CVS commit (Matt Dunford) -aspperl ASP Perl (Aaron Hope) -bc BC calculator (Vladimir Scholtz) -latte Latte (Nick Moffitt) -wml WML (Gerfried Fuchs) - -Included Exuberant ctags 3.5.1. (Darren Hiebert) - -"display" and "fold" arguments for syntax items. For future extension, they -are ignored now. - -strftime() function for the Macintosh. - -macros/explorer.vim: A file browser script (M A Aziz Ahmed) - - -Fixed *fixed-5.7* ------ - -The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0. The -executable is smaller. - -When a "make test" failed, the output file was lost. Rename it to -test99.failed to be able to see what went wrong. - -After sourcing bugreport.vim, it's not clear that bugreport.txt has been -written in the current directory. Edit bugreport.txt to avoid that. - -Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka) - -Win32 console: Mouse drags were passed on even when the mouse didn't move. - -Perl interface: In Buffers(), type of argument to SvPV() was int, should be -STRLEN. (Tony Leneis) - -Problem with prototype for index() on AIX 4.3.0. Added check for _AIX43 in -os_unix.h. (Jake Hamby) - -Mappings in mswin.vim could break when some commands are mapped. Add "nore" -to most mappings to avoid re-mapping. - -modify_fname() made a copy of a file name for ":p" when it already was a full -path name, which is a bit slow. - -Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags, -to avoid depending on $PATH. Fixed "make clean". - -Many fixes to Macintosh specific parts: (mostly by Dany StAmant) -- Only one Help menu. -- No more crash when removing a menu item. -- Support as External Editor for Codewarrior (still some little glitches). -- Popup menu support. -- Fixed crash when pasting after application switch. -- Color from rgb.txt properly displayed. -- 'isprint' default includes all chars above '~'. (Axel Kielhorn) -- mac_expandpath() was leaking memory. -- Add digraphs table. (Axel Kielhorn) -- Multi-byte support: (Kenichi Asai) - Switch keyscript when going in/out of Insert mode. - Draw multi-byte character correctly. - Don't use mblen() but highest bit of char to detect multi-byte char. - Display value of multi-byte in statusline (also for other systems). -- mouse button was not initialized properly to MOUSE_LEFT when - USE_CTRLCLICKMENU not defined. -- With Japanese SJIS characters: Make "w", "b", and "e" work - properly. (Kenichi Asai) -- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx. - -Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below) -- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the - tests. -- Various fixes. -- Set 'undolevels' to 1000 by default. -- Made mch_settitle() equivalent to the one in os_unix.c. - -RiscOS: A few prototypes for os_riscos.c were outdated. Generate prototypes -automatically. - - -Previously released patches: - -Patch 5.6.001 -Problem: When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which - reduces the indent doesn't delete the "#" or "}". (Lorton) -Solution: Adjust ai_col in ins_try_si(). -Files: src/edit.c - -Patch 5.6.002 -Problem: When using the vim.vim syntax file, a comment with all uppercase - characters causes a hang. -Solution: Adjust pattern for vimCommentTitle (Charles Campbell) -Files: runtime/syntax/vim.vim - -Patch 5.6.003 -Problem: GTK GUI: Loading a user defined toolbar bitmap gives a warning - about the colormap. Probably because the window has not been - opened yet. -Solution: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file. - (Keith Radebaugh) -Files: src/gui_gtk.c - -Patch 5.6.004 (extra) -Problem: Win32 GUI with IME: When setting 'guifont' to "*", the font - requester appears twice. -Solution: In gui_mch_init_font() don't call get_logfont() but copy - norm_logfont from fh. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 5.6.005 -Problem: When 'winminheight' is zero, CTRL-W - with a big number causes a - crash. (David Kotchan) -Solution: Check for negative window height in win_setheight(). -Files: src/window.c - -Patch 5.6.006 -Problem: GTK GUI: Bold font cannot always be used. Memory is freed too - early in gui_mch_init_font(). -Solution: Move call to g_free() to after where sdup is used. (Artem Hodyush) -Files: src/gui_gtk_x11.c - -Patch 5.6.007 (extra) -Problem: Win32 IME: Font is not changed when screen font is changed. And - IME composition window does not trace the cursor. -Solution: Initialize IME font. When cursor is moved, set IME composition - window with ImeSetCompositionWindow(). Add call to - ImmReleaseContext() in several places. (Taro Muraoka) -Files: src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro - -Patch 5.6.008 (extra) -Problem: Win32: When two files exist with the same name but different case - (through NFS or Samba), fixing the file name case could cause the - wrong one to be edited. -Solution: Prefer a perfect match above a match while ignoring case in - fname_case(). (Flemming Madsen) -Files: src/os_win32.c - -Patch 5.6.009 (extra) -Problem: Win32 GUI: Garbage in Windows Explorer help line when selecting - "Edit with Vim" popup menu entry. -Solution: Only return the help line when called with the GCS_HELPTEXT flag. - (Tianmiao Hu) -Files: GvimExt/gvimext.cpp - -Patch 5.6.010 -Problem: A file name which contains a TAB was not read correctly from the - viminfo file and the ":ls" listing was not aligned properly. -Solution: Parse the buffer list lines in the viminfo file from the end - backwards. Count a Tab for two characters to align the ":ls" list. -Files: src/buffer.c - -Patch 5.6.011 -Problem: When 'columns' is huge (using a tiny font) and 'statusline' is - used, Vim can crash. -Solution: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin) -Files: src/screen.c - -Patch 5.6.012 -Problem: When using "zsh" for /bin/sh, toolcheck may hang until "exit" is - typed. (Kuratczyk) -Solution: Add "-c exit" when checking for the shell version. -Files: src/toolcheck - -Patch 5.6.013 -Problem: Multibyte char in tooltip is broken. -Solution: Consider multibyte char in replace_termcodes(). (Taro Muraoka) -Files: src/term.c - -Patch 5.6.014 -Problem: When cursor is at the end of line and the character under cursor - is a multibyte character, "yl" doesn't yank 1 multibyte-char. - (Takuhiro Nishioka) -Solution: Recognize a multibyte-char at end-of-line correctly in oneright(). - (Taro Muraoka) - Also: make "+quickfix" in ":version" output appear alphabetically. -Files: src/edit.c - -Patch 5.6.015 -Problem: New xterm delete key sends <Esc>[3~ by default. -Solution: Added <kDel> and <kIns> to make the set of keypad keys complete. -Files: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c, - src/misc2.c, src/normal.c, src/os_unix.c, src/term.c - -Patch 5.6.016 -Problem: When deleting a search string from history from inside a mapping, - another entry is deleted too. (Benji Fisher) -Solution: Reset last_maptick when deleting the last entry of the search - history. Also: Increment maptick when starting a mapping from - typed characters to avoid a just added search string being - overwritten or removed from history. -Files: src/ex_getln.c, src/getchar.c - -Patch 5.6.017 -Problem: ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the - line. (Calder) -Solution: Replace the backslash with a CTRL-V internally. (Stephen P. Wall) -Files: src/ex_cmds.c - -Patch 5.6.018 -Problem: ":help [:digit:]" takes a long time to jump to the wrong place. -Solution: Insert a backslash to avoid the special meaning of '[]'. -Files: src/ex_cmds.c - -Patch 5.6.019 -Problem: "snd.c", "snd.java", etc. were recognized as "mail" filetype. -Solution: Make pattern for mail filetype more strict. -Files: runtime/filetype.vim - -Patch 5.6.020 (extra) -Problem: The DJGPP version eats processor time (Walter Briscoe). -Solution: Call __dpmi_yield() in the busy-wait loop. -Files: src/os_msdos.c - -Patch 5.6.021 -Problem: When 'selection' is "exclusive", a double mouse click in Insert - mode doesn't select last char in line. (Lutz) -Solution: Allow leaving the cursor on the NUL past the line in this case. -Files: src/edit.c - -Patch 5.6.022 -Problem: ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work. -Solution: Re-insert the backslash before the '~'. -Files: src/ex_getln.c - -Patch 5.6.023 (extra) -Problem: Various warnings for the Ming compiler. -Solution: Changes to avoid the warnings. (Bill McCarthy) -Files: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c, - src/syntax.c, src/vim.rc - -Patch 5.6.024 (extra) -Problem: Win32 console: Entering CTRL-_ requires the shift key. (Kotchan) -Solution: Specifically catch keycode 0xBD, like the GUI. -Files: src/os_win32.c - -Patch 5.6.025 -Problem: GTK GUI: Starting the GUI could be interrupted by a SIGWINCH. - (Nils Lohner) -Solution: Repeat the read() call to get the gui_in_use value when - interrupted by a signal. -Files: src/gui.c - -Patch 5.6.026 (extra) -Problem: Win32 GUI: Toolbar bitmaps are searched for in - $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith - Radebaugh) -Solution: Use $VIM/bitmaps for both, because these are not part of the - distribution but defined by the user. -Files: src/gui_w32.c, runtime/doc/gui.txt - -Patch 5.6.027 -Problem: TCL: Crash when using a Tcl script (reported for Win32). -Solution: Call Tcl_FindExecutable() in main(). (Brent Fulgham) -Files: src/main.c - -Patch 5.6.028 -Problem: Xterm patch level 126 sends codes for mouse scroll wheel. - Fully works with xterm patch level 131. -Solution: Recognize the codes for button 4 (0x60) and button 5 (0x61). -Files: src/term.c - -Patch 5.6.029 -Problem: GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes - Zellner) -Solution: Add support for shortcut keys. (Marcin Dalecki) -Files: src/gui_gtk.c - -Patch 5.6.030 -Problem: When closing a window and 'ea' is set, Vim can crash. (Yasuhiro - Matsumoto) -Solution: Set "curbuf" to a valid value in win_close(). -Files: src/window.c - -Patch 5.6.031 -Problem: Multi-byte: When a double-byte character ends in CSI, Vim waits - for another character to be typed. -Solution: Recognize the CSI as the second byte of a character and don't wait - for another one. (Yasuhiro Matsumoto) -Files: src/getchar.c - -Patch 5.6.032 -Problem: Functions with an argument that is a line number don't all accept - ".", "$", etc. (Ralf Arens) -Solution: Add get_art_lnum() and use it for setline(), line2byte() and - synID(). -Files: src/eval.c - -Patch 5.6.033 -Problem: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun - Nam) -Solution: Change logic in searchc() to skip trailing byte of a double-byte - character. - Also: Ask for second byte when searching for double-byte - character. (Park Chong-Dae) -Files: src/search.c - -Patch 5.6.034 (extra) -Problem: Compiling with Borland C++ 5.5 fails on tolower() and toupper(). -Solution: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile - to make using bcc 5.5 easier. -Files: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor - -Patch 5.6.035 -Problem: Listing the"+comments" feature in the ":version" output depended - on the wrong ID. (Stephen P. Wall) -Solution: Change "CRYPTV" to "COMMENTS". -Files: src/version.c - -Patch 5.6.036 -Problem: GTK GUI: Copy/paste text doesn't work between gvim and Eterm. -Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang) -Files: src/gui_gtk_x11.c - -Patch 5.6.037 -Problem: Multi-byte: Can't use "f" command with multi-byte character in GUI. -Solution: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam) -Files: src/gui_gtk_x11.c, src/multbyte.c - -Patch 5.6.038 -Problem: Multi-clicks in GUI are interpreted as a mouse wheel click. When - 'ttymouse' is "xterm" a mouse click is interpreted as a mouse - wheel click. -Solution: Don't recognize the mouse wheel in check_termcode() in the GUI. - Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63. -Files: src/term.c, src/os_unix.c - -Patch 5.6.039 -Problem: Motif GUI under KDE: When trying to logout, Vim hangs up the - system. (Hermann Rochholz) -Solution: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND - property of the window to let the session manager know we finished - saving ourselves. -Files: src/gui_x11.c - -Patch 5.6.040 -Problem: When using ":s" command, matching the regexp is done twice. -Solution: After copying the matched line, adjust the pointers instead of - finding the match again. (Loic Grenie) Added vim_regnewptr(). -Files: src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro - -Patch 5.6.041 -Problem: GUI: Athena, Motif and GTK don't give more than 10 dialog buttons. -Solution: Remove the limit on the number of buttons. - Also support the 'v' flag in 'guioptions'. - For GTK: Center the buttons. -Files: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c - -Patch 5.6.042 -Problem: When doing "vim -u vimrc" and vimrc contains ":q", the cursor in - the terminal can remain off. -Solution: Call cursor_on() in mch_windexit(). -Files: src/os_unix.c - -Patch 5.6.043 (extra) -Problem: Win32 GUI: When selecting guifont with the dialog, 'guifont' - doesn't include the bold or italic attributes. -Solution: Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font(). -Files: src/gui_w32.c - -Patch 5.6.044 (extra) -Problem: MS-DOS and Windows: The line that dosinst.exe appends to - autoexec.bat to set PATH is wrong when Vim is in a directory with - an embedded space. -Solution: Use double quotes for the value when there is an embedded space. -Files: src/dosinst.c - -Patch 5.6.045 (extra) (fixed version) -Problem: VMS: Various small problems. -Solution: Many small changes. (Zoltan Arpadffy) - File name modifier ":h" keeps the path separator. - File name modifier ":e" also removes version. - Compile with MAX_FEAT by default. - When checking for autocommands ignore version in file name. - Be aware of file names being case insensitive. - Added vt320 builtin termcap. - Be prepared for an empty default_vim_dir. -Files: runtime/gvimrc_example.vim, runtime/vimrc_example.vim, - runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c, - src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c, - src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c, - src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c - -Patch 5.6.046 -Problem: Systems with backslash in file name: With 'shellslash' set, "vim - */*.c" only uses a slash for the first file name. (Har'El) -Solution: Fix slashes in file name arguments after reading the vimrc file. -Files: src/option.c - -Patch 5.6.047 -Problem: $CPPFLAGS is not passed on to ctags configure. -Solution: Add it. (Walter Briscoe) -Files: src/config.mk.in, src/Makefile - -Patch 5.6.048 -Problem: CTRL-R in Command-line mode is documented to insert text as typed, - but inserts text literally. -Solution: Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert - literally. This is consistent with Insert mode. But characters - that end Command-line mode are inserted literally. -Files: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c, - src/ops.c, src/proto/ops.pro - -Patch 5.6.049 -Problem: Documentation for [!] after ":ijump" is wrong way around. (Benji - Fisher) -Solution: Fix the documentation. Also improve the code to check for a match - after a /* */ comment. -Files: runtime/doc/tagsearch.txt, src/search.c - -Patch 5.6.050 -Problem: Replacing is wrong when replacing a single-byte char with - double-byte char or the other way around. -Solution: Shift the text after the character when it is replaced. - (Yasuhiro Matsumoto) -Files: src/normal.c, src/misc1.c - -Patch 5.6.051 -Problem: ":tprev" and ":tnext" don't give an error message when trying to - go before the first or beyond the last tag. (Robert Webb) -Solution: Added error messages. Also: Delay a second when a file-read - message is going to overwrite an error message, otherwise it won't - be seen. -Files: src/fileio.c, src/tag.c - -Patch 5.6.052 -Problem: Multi-byte: When an Ex command has a '|' or '"' as a second byte, - it terminates the command. -Solution: Skip second byte of multi-byte char when checking for '|' and '"'. - (Asai Kenichi) -Files: src/ex_docmd.c - -Patch 5.6.053 -Problem: CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius) -Solution: Escape '|', '"' and '\' in tag names when using CTRL-] and also - for command-line completion. -Files: src/ex_getln.c, src/normal.c - -Patch 5.6.054 -Problem: When using ":e" and ":e #" the cursor is put in the first column - when 'startofline' is set. (Cordell) -Solution: Use the last known column when 'startofline' is set. - Also, use ECMD_LAST more often to simplify the code. -Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro - -Patch 5.6.055 -Problem: When 'statusline' only contains a text without "%" and doesn't fit - in the window, Vim crashes. (Ron Aaron) -Solution: Don't use the pointer for the first item if there is no item. -Files: src/screen.c - -Patch 5.6.056 (extra) -Problem: MS-DOS: F11 and F12 don't work when 'bioskey' is set. -Solution: Use enhanced keyboard functions. (Vince Negri) - Detect presence of enhanced keyboard and set bioskey_read and - bioskey_ready. -Files: src/os_msdos.c - -Patch 5.6.057 (extra) -Problem: Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off - menus. -Solution: Use system font instead of a fixed font. (Matsumoto, Muraoka) -Files: src/gui_w32.c - -Patch 5.6.058 -Problem: When the 'a' flag is not in 'guioptions', non-Windows systems - copy Visually selected text to the clipboard/selection on a yank - or delete command anyway. On Windows it isn't done even when the - 'a' flag is included. -Solution: Respect the 'a' flag in 'guioptions' on all systems. -Files: src/normal.c - -Patch 5.6.059 (extra) -Problem: When moving the cursor over italic text and the characters spill - over to the cell on the right, that spill-over is deleted. - Noticed in the Win32 GUI, can happen on other systems too. -Solution: Redraw italic text starting from a blank, like this is already - done for bold text. (Vince Negri) -Files: src/gui.c, src/gui.h, src/gui_w32.c - -Patch 5.6.060 -Problem: Some bold characters spill over to the cell on the left, that - spill-over can remain sometimes. -Solution: Redraw a characters when the next character was bold and needs - redrawing. (Robert Webb) -Files: src/screen.c - -Patch 5.6.061 -Problem: When xterm sends 8-bit controls, recognizing the version response - doesn't work. - When using CSI instead of <Esc>[ for the termcap color codes, - using 16 colors doesn't work. (Neil Bird) -Solution: Also accept CSI in place of <Esc>[ for the version string. - Also check for CSI when handling colors 8-15 in term_color(). - Use CSI for builtin xterm termcap entries when 'term' contains - "8bit". -Files: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c, - src/os_unix.c, src/proto/option.pro, src/proto/term.pro - -Patch 5.6.062 -Problem: The documentation says that setting 'smartindent' doesn't have an - effect when 'cindent' is set, but it does make a difference for - lines starting with "#". (Neil Bird) -Solution: Really ignore 'smartindent' when 'cindent' is set. -Files: src/misc1.c, src/ops.c - -Patch 5.6.063 -Problem: Using "I" in Visual-block mode doesn't accept a count. (Johannes - Zellner) -Solution: Pass the count on to do_insert() and edit(). (Allan Kelly) -Files: src/normal.c, src/ops.c, src/proto/ops.pro - -Patch 5.6.064 -Problem: MS-DOS and Win32 console: Mouse doesn't work correctly after - including patch 5.6.28. (Vince Negri) -Solution: Don't check for mouse scroll wheel when the mouse code contains - the number of clicks. -Files: src/term.c - -Patch 5.6.065 -Problem: After moving the cursor around in Insert mode, typing a space can - still trigger an abbreviation. (Benji Fisher) -Solution: Don't check for an abbreviation after moving around in Insert mode. -Files: src/edit.c - -Patch 5.6.066 -Problem: Still a few bold character spill-over remains after patch 60. -Solution: Clear character just in front of blanking out rest of the line. - (Robert Webb) -Files: src/screen.c - -Patch 5.6.067 -Problem: When a file name contains a NL, the viminfo file is corrupted. -Solution: Use viminfo_writestring() to convert the NL to CTRL-V n. - Also fix the Buffers menu and listing a menu name with a newline. -Files: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c - -Patch 5.6.068 -Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. - (Bernhard Rosenkraenzer) -Solution: Also check xs_apiversion for the version number when prepending - defines for PL_*. -Files: src/Makefile - -Patch 5.6.069 -Problem: "go" doesn't always end up at the right character when - 'fileformat' is "dos". (Bruce DeVisser) -Solution: Correct computations in ml_find_line_or_offset(). -Files: src/memline. - -Patch 5.6.070 (depends on 5.6.068) -Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. - (Bernhard Rosenkraenzer) -Solution: Simpler check instead of the one from patch 68. -Files: src/Makefile - -Patch 5.6.071 -Problem: "A" in Visual block mode on a Tab positions the cursor one char to - the right. (Michael Haumann) -Solution: Correct the column computation in op_insert(). -Files: src/ops.c - -Patch 5.6.072 -Problem: When starting Vim with "vim +startinsert", it enters Insert mode - only after typing the first command. (Andrew Pimlott) -Solution: Insert a dummy command in the stuff buffer. -Files: src/main.c - -Patch 5.6.073 (extra) (depends on 5.6.034) -Problem: Win32 GUI: When compiled with Bcc 5.5 menus don't work. - In dosinst.c toupper() and tolower() give an "internal compiler - error" for Bcc 5.5. -Solution: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan - Sharp) Also cleaned up compilation arguments. - Use our own implementation of toupper() in dosinst.c. Use - mytoupper() instead of tolower(). -Files: src/Makefile.bor, src/dosinst.c - -Patch 5.6.074 (extra) -Problem: Entering CSI directly doesn't always work, because it's recognized - as the start of a special key. Mostly a problem with multi-byte - in the GUI. -Solution: Use K_CSI for a typed CSI character. Use <CSI> for a normal CSI, - <xCSI> for a CSI typed in the GUI. -Files: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c, - src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c, - src/keymap.h, src/misc2.c - -Patch 5.6.075 -Problem: When using "I" or "A" in Visual block mode while 'sts' is set may - change spaces to a Tab the inserted text is not correct. (Mike - Steed) And some other problems when using "A" to append after the - end of the line. -Solution: Check for change in spaces/tabs after inserting the text. Append - spaces to fill the gap between the end-of-line and the right edge - of the block. -Files: src/ops.c - -Patch 5.6.076 -Problem: GTK GUI: Mapping <M-Space> doesn't work. -Solution: Don't use the "Alt" modifier twice in key_press_event(). -Files: src/gui_gtk_x11.c - -Patch 5.6.077 -Problem: GUI: When interrupting an external program with CTRL-C, gvim might - crash. (Benjamin Korvemaker) -Solution: Avoid using a NULL pointer in ui_inchar_undo(). -Files: src/ui.c - -Patch 5.6.078 -Problem: Locale doesn't always work on FreeBSD. (David O'Brien) -Solution: Link with the "xpg4" library when available. -Files: src/configure.in, src/configure - -Patch 5.6.079 -Problem: Vim could crash when several Tcl interpreters are created and - destroyed. -Solution: handle the "exit" command and nested ":tcl" commands better. (Ingo - Wilken) -Files: runtime/doc/if_tcl.txt, src/if_tcl.c - -Patch 5.6.080 -Problem: When jumping to a tag, generating the tags file and jumping to the - same tag again uses the old search pattern. (Sung-Hyun Nam) -Solution: Flush cached tag matches when executing an external command. -Files: src/misc2.c, src/proto/tag.pro, src/tag.c - -Patch 5.6.081 -Problem: ":syn include" uses a level for the included file, this confuses - contained items included at the same level. -Solution: Use a unique tag for each included file. Changed sp_syn_inc_lvl - to sp_syn_inc_tag. (Scott Bigham) -Files: src/syntax.c, src/structs.h - -Patch 5.6.082 -Problem: When using cscope, Vim can crash. -Solution: Initialize tag_fname in find_tags(). (Anton Blanchard) -Files: src/tag.c - -Patch 5.6.083 (extra) -Problem: Win32: The visual beep can't be seen. (Eric Roesinger) -Solution: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum) - Also: Allow specifying the delay in t_vb for the GUI. -Files: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c, - src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc, - src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro, - src/proto/gui_mac.pro, src/proto/gui_riscos.pro, - src/proto/gui_w32.pro, src/proto/gui_x11.pro, - src/proto/gui_beos.pro - -Patch 5.6.084 (depends on 5.6.074) -Problem: GUI: Entering CSI doesn't always work for Athena and Motif. -Solution: Handle typed CSI as <xCSI> (forgot this bit in 5.6.074). -Files: src/gui_x11.c - -Patch 5.6.085 -Problem: Multi-byte: Using "r" to replace a double-byte char with a - single-byte char moved the cursor one character. (Matsumoto) - Also, using a count when replacing a single-byte char with a - double-byte char didn't work. -Solution: Don't use del_char() to delete the second byte. - Get "ptr" again after calling ins_char(). -Files: src/normal.c - -Patch 5.6.086 (extra) -Problem: Win32: When using libcall() and the returned value is not a valid - pointer, Vim crashes. -Solution: Use IsBadStringPtr() to check if the pointer is valid. -Files: src/os_win32.c - -Patch 5.6.087 -Problem: Multi-byte: Commands and messages with multi-byte characters are - displayed wrong. -Solution: Detect double-byte characters. (Yasuhiro Matsumoto) -Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c - -Patch 5.6.088 -Problem: Multi-byte with Motif or Athena: The message "XIM requires - fontset" is annoying when Vim was compiled with XIM support but it - is not being used. -Solution: Remove that message. -Files: src/multbyte.c - -Patch 5.6.089 -Problem: On non-Unix systems it's possible to overwrite a read-only file - without using "!". -Solution: Check if the file permissions allow overwriting before moving the - file to become the backup file. -Files: src/fileio.c - -Patch 5.6.090 -Problem: When editing a file in "/home/dir/home/dir" this was replaced with - "~~". (Andreas Jellinghaus) -Solution: Replace the home directory only once in home_replace(). -Files: src/misc1.c - -Patch 5.6.091 -Problem: When editing many "no file" files, can't create swap file, because - .sw[a-p] have all been used. (Neil Bird) -Solution: Also use ".sv[a-z]", ".su[a-z]", etc. -Files: src/memline.c - -Patch 5.6.092 -Problem: FreeBSD: When setting $TERM to a non-valid terminal name, Vim - hangs in tputs(). -Solution: After tgetent() returns an error code, call it again with the - terminal name "dumb". This apparently creates an environment in - which tputs() doesn't fail. -Files: src/term.c - -Patch 5.6.093 (extra) -Problem: Win32 GUI: "ls | gvim -" will show a message box about reading - stdin when Vim exits. (Donohue) -Solution: Don't write a message about the file read from stdin until the GUI - has started. -Files: src/fileio.c - -Patch 5.6.094 -Problem: Problem with multi-byte string for ":echo var". -Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam) - Also make do_echo() aware of multi-byte characters. -Files: src/eval.c, src/message.c - -Patch 5.6.095 -Problem: With an Emacs TAGS file that include another a relative path - doesn't always work. -Solution: Use expand_tag_fname() on the name of the included file. - (Utz-Uwe Haus) -Files: src/tag.c - -Patch 5.6.096 -Problem: Unix: When editing many files, startup can be slow. (Paul - Ackersviller) -Solution: Halve the number of stat() calls used to add a file to the buffer - list. -Files: src/buffer.c - -Patch 5.7a.001 -Problem: GTK doesn't respond on drag&drop from ROX-Filer. -Solution: Add "text/uri-list" target. (Thomas Leonard) - Also: fix problem with checking for trash arguments. -Files: src/gui_gtk_x11.c - -Patch 5.7a.002 -Problem: Multi-byte: 'showmatch' is performed when second byte of an - inserted double-byte char is a paren or brace. -Solution: Check IsTrailByte() before calling showmatch(). (Taro Muraoka) -Files: src/misc1.c - -Patch 5.7a.003 -Problem: Multi-byte: After using CTRL-O in Insert mode with the cursor at - the end of the line on a multi-byte character the cursor moves to - the left. -Solution: Check for multi-byte character at end-of-line. (Taro Muraoka) - Also: fix cls() to detect a double-byte character. (Chong-Dae Park) -Files: src/edit.c, src/search.c - -Patch 5.7a.004 -Problem: When reporting the search pattern offset, the string could be - unterminated, which may cause a crash. -Solution: Terminate the string for the search offset. (Stephen P. Wall) -Files: src/search.c - -Patch 5.7a.005 -Problem: When ":s//~/" doesn't find a match it reports "[NULL]" for the - pattern. -Solution: Use get_search_pat() to obtain the actually used pattern. -Files: src/ex_cmds.c, src/proto/search.pro, src/search.c - -Patch 5.7a.006 (extra) -Problem: VMS: Various problems, also with the VAXC compiler. -Solution: In many places use the Unix code for VMS too. - Added time, date and compiler version to version message. - (Zoltan Arpadffy) -Files: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h, - src/main.c, src/message.c, src/misc1.c, src/os_vms.c, - src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h, - src/proto/os_vms.pro, src/proto/version.pro, src/term.c, - src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c - -Patch 5.7a.007 -Problem: Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C. -Solution: Only use "intr_char" when it has been set. -Files: src/gui_x11.c - -Patch 5.7a.008 -Problem: GTK GUI: When using CTRL-L the screen is redrawn twice, causing - trouble for bold characters. Also happens when moving with the - scrollbar. Best seen when 'writedelay' is non-zero. - When starting the GUI with ":gui" the screen is redrawn once with - the wrong colors. -Solution: Only set the geometry hints when the window size really changed. - This avoids setting it each time the scrollbar is forcefully - redrawn. - Don't redraw in expose_event() when gui.starting is still set. -Files: src/gui_gtk_x11.c - - -============================================================================== -VERSION 5.8 *version-5.8* - -Version 5.8 is a bug-fix version of 5.7. - - -Changed *changed-5.8* -------- - -Ctags is no longer included with Vim. It has grown into a project of its own. -You can find it here: http://ctags.sf.net. It is highly recommended as a Vim -companion when you are writing programs. - - -Added *added-5.8* ------ - -New syntax files: -acedb AceDB (Stewart Morris) -aflex Aflex (Mathieu Clabaut) -antlr Antlr (Mathieu Clabaut) -asm68k 68000 Assembly (Steve Wall) -automake Automake (John Williams) -ayacc Ayacc (Mathieu Clabaut) -b B (Mathieu Clabaut) -bindzone BIND zone (glory hump) -blank Blank (Rafal Sulejman) -cfg Configure files (Igor Prischepoff) -changelog ChangeLog (Gediminas Paulauskas) -cl Clever (Phil Uren) -crontab Crontab (John Hoelzel) -csc Essbase script (Raul Segura Acevedo) -cynlib Cynlib(C++) (Phil Derrick) -cynpp Cyn++ (Phil Derrick) -debchangelog Debian Changelog (Wichert Akkerman) -debcontrol Debian Control (Wichert Akkerman) -dns DNS zone file (Jehsom) -dtml Zope's DTML (Jean Jordaan) -dylan Dylan, Dylan-intr and Dylan-lid (Brent Fulgham) -ecd Embedix Component Description (John Beppu) -fgl Informix 4GL (Rafal Sulejman) -foxpro FoxPro (Powing Tse) -gsp GNU Server Pages (Nathaniel Harward) -gtkrc GTK rc (David Necas) -hercules Hercules (Avant! Corporation) (Dana Edwards) -htmlos HTML/OS by Aestiva (Jason Rust) -inittab SysV process control (David Necas) -iss Inno Setup (Dominique Stephan) -jam Jam (Ralf Lemke) -jess Jess (Paul Baleme) -lprolog LambdaProlog (Markus Mottl) -ia64 Intel Itanium (parth malwankar) -kix Kixtart (Nigel Gibbs) -mgp MaGic Point (Gerfried Fuchs) -mason Mason (HTML with Perl) (Andrew Smith) -mma Mathematica (Wolfgang Waltenberger) -nqc Not Quite C (Stefan Scherer) -omnimark Omnimark (Paul Terray) -openroad OpenROAD (Luis Moreno Serrano) -named BIND configuration (glory hump) -papp PApp (Marc Lehmann) -pfmain Postfix main config (Peter Kelemen) -pic PIC assembly (Aleksandar Veselinovic) -ppwiz PPWizard (Stefan Schwarzer) -progress Progress (Phil Uren) -psf Product Specification File (Rex Barzee) -r R (Tom Payne) -registry MS-Windows registry (Dominique Stephan) -robots Robots.txt (Dominique Stephan) -rtf Rich Text Format (Dominique Stephan) -setl SETL (Alex Poylisher) -sgmldecl SGML Declarations (Daniel A. Molina W.) -sinda Sinda input (Adrian Nagle) -sindacmp Sinda compare (Adrian Nagle) -sindaout Sinda output (Adrian Nagle) -smith SMITH (Rafal Sulejman) -snobol4 Snobol 4 (Rafal Sulejman) -strace Strace (David Necas) -tak TAK input (Adrian Nagle) -takcmp TAK compare (Adrian Nagle) -takout TAK output (Adrian Nagle) -tasm Turbo assembly (FooLman) -texmf TeX configuration (David Necas) -trasys Trasys input (Adrian Nagle) -tssgm TSS Geometry (Adrian Nagle) -tssop TSS Optics (Adrian Nagle) -tsscl TSS Command line (Adrian Nagle) -virata Virata Configuration Script (Manuel M.H. Stol) -vsejcl VSE JCL (David Ondrejko) -wdiff Wordwise diff (Gerfried Fuchs) -wsh Windows Scripting Host (Paul Moore) -xkb X Keyboard Extension (David Necas) - -Renamed php3 to php, it now also supports php4 (Lutz Eymers) - -Patch 5.7.015 -Problem: Syntax files for Vim 6.0 can't be used with 5.x. -Solution: Add the "default" argument to the ":highlight" command: Ignore the - command if highlighting was already specified. -Files: src/syntax.c - -Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done -when Vim is starting up. Reduces the startup time of the GUI. - - -Fixed *fixed-5.8* ------ - -Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink. - -Fixed compiling under NeXT. (Jeroen C.M. Goudswaard) - -optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C'). - -Tcl interpreter: "buffer" command didn't check for precense of an argument. -(Dave Bodenstab) - -dosinst.c: Added checks for too long file name. - -Amiga: a file name starting with a colon was considered absolute but it isn't. -Amiga: ":pwd" added a slash when in the root of a drive. - -Macintosh: Warnings for unused variables. (Bernhard Pruemmer) - -Unix: When catching a deadly signal, handle it in such a way that it's -unlikely that Vim will hang. Call _exit() instead of exit() in case of a -severe problem. - -Setting the window title from nothing to something didn't work after patch 29. - -Check for ownership of .exrc and .vimrc was done with stat(). Use lstat() as -well for extra security. - -Win32 GUI: Printing a file with 'fileformat' "unix" didn't work. Set -'fileformat' to "dos" before writing the temp file. - -Unix: Could start waiting for a character when checking for a CTRL-C typed -when an X event is received. - -Could not use Perl and Python at the same time on FreeBSD, because Perl used -"-lc" and Python used the threaded C library. - -Win32: The Mingw compiler gave a few warning messages. - -When using "ZZ" and an autocommand for writing uses an abbreviation it didn't -work. Don't stuff the ":x" command but execute it directly. (Mikael Berthe) - -VMS doesn't always have lstat(), added an #ifdef around it. - -Added a few corrections for the Macintosh. (Axel Kielhorn) - -Win32: Gvimext could not edit more than a few files at once, the length of the -argument was fixed. - - -Previously released patches for Vim 5.7: - -Patch 5.7.001 -Problem: When the current buffer is crypted, and another modified buffer - isn't, ":wall" will encrypt the other buffer. -Solution: In buf_write() use "buf" instead of "curbuf" to check for the - crypt key. -Files: src/fileio.c - -Patch 5.7.002 -Problem: When 'showmode' is set, using "CTRL-O :r file" waits three seconds - before displaying the read text. (Wichert Akkerman) -Solution: Set "keep_msg" to the file message so that the screen is redrawn - before the three seconds wait for displaying the mode message. -Files: src/fileio.c - -Patch 5.7.003 -Problem: Searching for "[[:cntrl:]]" doesn't work. -Solution: Exclude NUL from the matching characters, it terminates the list. -Files: src/regexp.c - -Patch 5.7.004 -Problem: GTK: When selecting a new font, Vim can crash. -Solution: In gui_mch_init_font() unreference the old font, not the new one. -Files: src/gui_gtk_x11.c - -Patch 5.7.005 -Problem: Multibyte: Inserting a wrapped line corrupts kterm screen. - Pasting TEXT/COMPOUND_TEXT into Vim does not work. - On Motif no XIM status line is displayed even though it is - available. -Solution: Don't use xterm trick for wrapping lines for multibyte mode. - Correct a missing "break", added TEXT/COMPOUND_TEXT selection - request. - Add XIMStatusArea fallback code. - (Katsuhito Nagano) -Files: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c - -Patch 5.7.006 -Problem: GUI: redrawing the non-Visual selection is wrong when the window - is unobscured. (Jean-Pierre Etienne) -Solution: Redraw the selection properly and don't clear it. Added "len" - argument to clip_may_redraw_selection(). -Files: src/gui.c, src/ui.c, src/proto/ui.pro - -Patch 5.7.007 -Problem: Python: Crash when using the current buffer twice. -Solution: Increase the reference count for buffer and window objects. - (Johannes Zellner) -Files: src/if_python.c - -Patch 5.7.008 -Problem: In Ex mode, backspacing over the first TAB doesn't work properly. - (Wichert Akkerman) -Solution: Switch the cursor on before printing the newline. -Files: src/ex_getln.c - -Patch 5.7.009 (extra) -Problem: Mac: Crash when using a long file. -Solution: Don't redefine malloc() and free(), because it will break using - realloc(). -Files: src/os_mac.h - -Patch 5.7.010 -Problem: When using CTRL-A on a very long number Vim can crash. (Michael - Naumann) -Solution: Truncate the length of the new number to avoid a buffer overflow. -Files: src/ops.c - -Patch 5.7.011 (extra) -Problem: Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed. -Solution: Output each character separately, to avoid that Windows reverses - the text for some fonts. (Ron Aaron) -Files: src/gui_w32.c - -Patch 5.7.012 -Problem: When using "-complete=buffer" for ":command" the user command - fails. -Solution: In a user command don't replace the buffer name with a count for - the buffer number. -Files: src/ex_docmd.c - -Patch 5.7.013 -Problem: "gD" didn't always find a match in the first line, depending on - the column the search started at. -Solution: Reset the column to zero before starting to search. -Files: src/normal.c - -Patch 5.7.014 -Problem: Rot13 encoding was done on characters with accents, which is - wrong. (Sven Gottwald) -Solution: Only do rot13 encoding on ASCII characters. -Files: src/ops.c - -Patch 5.7.016 -Problem: When hitting 'n' for a ":s///c" command, the ignore-case flag was - not restored, some matches were skipped. (Daniel Blaustein) -Solution: Restore the reg_ic variable when 'n' was hit. -Files: src/ex_cmds.c - -Patch 5.7.017 -Problem: When using a Vim script for Vim 6.0 with <SID> before a function - name, it produces an error message even when inside an "if version - >= 600". (Charles Campbell) -Solution: Ignore errors in the function name when the function is not going - to be defined. -Files: src/eval.c - -Patch 5.7.018 -Problem: When running "rvim" or "vim -Z" it was still possible to execute a - shell command with system() and backtick-expansion. (Antonios A. - Kavarnos) -Solution: Disallow executing a shell command in get_cmd_output() and - mch_expand_wildcards(). -Files: src/misc1.c, src/os_unix.c - -Patch 5.7.019 -Problem: Multibyte: In a substitute string, a multi-byte character isn't - skipped properly, can be a problem when the second byte is a - backslash. -Solution: Skip an extra byte for a double-byte character. (Muraoka Taro) -Files: src/ex_cmds.c - -Patch 5.7.020 -Problem: Compilation doesn't work on MacOS-X. -Solution: Add a couple of #ifdefs. (Jamie Curmi) -Files: src/regexp.c, src/ctags/general.h - -Patch 5.7.021 -Problem: Vim sometimes produces a beep when started in an xterm. Only - happens when compiled without mouse support. -Solution: Requesting the xterm version results in a K_IGNORE. This wasn't - handled when mouse support is disabled. Accept K_IGNORE always. -Files: src/normal.c - -Patch 5.7.022 -Problem: %v in 'statusline' is not displayed when it's equal to %c. -Solution: Check if %V or %v is used and handle them differently. -Files: src/screen.c - -Patch 5.7.023 -Problem: Crash when a WinLeave autocommand deletes the buffer in the other - window. -Solution: Check that after executing the WinLeave autocommands there still - is a window to be closed. Also update the test that was supposed - to check for this problem. -Files: src/window.c, testdir/test13.in, testdir/test13.ok - -Patch 5.7.024 -Problem: Evaluating an expression for 'statusline' can have side effects. -Solution: Evaluate the expression in a sandbox. -Files: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c, - src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c, - src/screen.c, src/undo.c - -Patch 5.7.025 (fixed) -Problem: Creating a temp file has a race condition. -Solution: Create a private directory to write the temp files in. -Files: src/fileio.c, src/misc1.c, src/proto/misc1.pro, - src/proto/fileio.pro, src/memline.c, src/os_unix.h - -Patch 5.7.026 (extra) -Problem: Creating a temp file has a race condition. -Solution: Create a private directory to write the temp files in. - This is the extra part of patch 5.7.025. -Files: src/os_msdos.h - -Patch 5.7.027 -Problem: Starting to edit a file can cause a crash. For example when in - Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and - then <CR>, which edits a help file. (Robert Bogomip) -Solution: Check if keep_msg is NULL before copying it. -Files: src/fileio.c - -Patch 5.7.028 -Problem: Creating a backup or swap file could fail in rare situations. -Solution: Use O_EXCL for open(). -Files: src/fileio.c, src/memfile.c - -Patch 5.7.029 -Problem: Editing a file with an extremely long name crashed Vim. -Solution: Check for length of the name when setting the window title. -Files: src/buffer.c - -Patch 5.7.030 -Problem: A ":make" or ":grep" command with a very long argument could cause - a crash. -Solution: Allocate the buffer for the shell command. -Files: src/ex_docmd.c - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/en/version6.txt b/en/version6.txt deleted file mode 100644 index 58ad714fd..000000000 --- a/en/version6.txt +++ /dev/null @@ -1,13846 +0,0 @@ -*version6.txt* For Vim version 6.3. Last change: 2004 Jun 07 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Welcome to Vim Version 6.0! A large number of features has been added. This -file mentions all the new items that have been added, changes to existing -features and bug fixes compared to Vim 5.x. - -See |vi_diff.txt| for an overview of differences between Vi and Vim 6.0. -See |version4.txt| for differences between Vim 3.0 and Vim 4.0. -See |version5.txt| for differences between Vim 4.0 and Vim 5.0. - -INCOMPATIBLE CHANGES |incompatible-6| - -Cursor position in Visual mode |curpos-visual| -substitute command Vi compatible |substitute-CR| -global option values introduced |new-global-values| -'fileencoding' changed |fileencoding-changed| -Digraphs changed |digraphs-changed| -Filetype detection changed |filetypedetect-changed| -Unlisted buffers introduced |new-unlisted-buffers| -CTRL-U in Command-line mode changed |CTRL-U-changed| -Ctags gone |ctags-gone| -Documentation reorganized |documentation-6| -Modeless selection and clipboard |modeless-and-clipboard| -Small incompatibilities |incomp-small-6| - -NEW FEATURES |new-6| - -Folding |new-folding| -Vertically split windows |new-vertsplit| -Diff mode |new-diff-mode| -Easy Vim: click-and-type |new-evim| -User manual |new-user-manual| -Flexible indenting |new-indent-flex| -Extended search patterns |new-searchpat| -UTF-8 support |new-utf-8| -Multi-language support |new-multi-lang| -Plugin support |new-plugins| -Filetype plugins |new-filetype-plugins| -File browser |new-file-browser| -Editing files over a network |new-network-files| -Window for command-line editing |new-cmdwin| -Debugging mode |new-debug-mode| -Cursor in virtual position |new-virtedit| -Debugger interface |new-debug-itf| -Communication between Vims |new-vim-server| -Buffer type options |new-buftype| -Printing |new-printing| -Ports |ports-6| -Quickfix extended |quickfix-6| -Operator modifiers |new-operator-mod| -Search Path |new-search-path| -Writing files improved |new-file-writing| -Argument list |new-argument-list| -Restore a View |new-View| -Color schemes |new-color-schemes| -Various new items |new-items-6| - -IMPROVEMENTS |improvements-6| - -COMPILE TIME CHANGES |compile-changes-6| - -BUG FIXES |bug-fixes-6| - -VERSION 6.1 |version-6.1| -Changed |changed-6.1| -Added |added-6.1| -Fixed |fixed-6.1| - -VERSION 6.2 |version-6.2| -Changed |changed-6.2| -Added |added-6.2| -Fixed |fixed-6.2| - -VERSION 6.3 |version-6.3| -Changed |changed-6.3| -Added |added-6.3| -Fixed |fixed-6.3| - -============================================================================== -INCOMPATIBLE CHANGES *incompatible-6* - -These changes are incompatible with previous releases. Check this list if you -run into a problem when upgrading from Vim 5.x to 6.0 - - -Cursor position in Visual mode *curpos-visual* ------------------------------- - -When going from one window to another window on the same buffer while in -Visual mode, the cursor position of the other window is adjusted to keep the -same Visual area. This can be used to set the start of the Visual area in one -window and the end in another. In vim 5.x the cursor position of the other -window would be used, which could be anywhere and was not very useful. - - -Substitute command Vi compatible *substitute-CR* --------------------------------- - -The substitute string (the "to" part of the substitute command) has been made -Vi compatible. Previously a CTRL-V had a special meaning and could be used to -prevent a <CR> to insert a line break. This made it impossible to insert a -CTRL-V before a line break. Now a backslash is used to prevent a <CR> to -cause a line break. Since the number of backslashes is halved, it is still -possible to insert a line break at the end of the line. This now works just -like Vi, but it's not compatible with Vim versions before 6.0. - -When a ":s" command doesn't make any substitutions, it no longer sets the '[ -and '] marks. This is not related to Vi, since it doesn't have these marks. - - -Global option values introduced *new-global-values* -------------------------------- - -There are now global values for options which are local to a buffer or window. -Previously the local options were copied from one buffer to another. When -editing another file this could cause option values from a modeline to be used -for the wrong file. Now the global values are used when entering a buffer -that has not been used before. Also, when editing another buffer in a window, -the local window options are reset to their global values. The ":set" command -sets both the local and global values, this is still compatible. But a -modeline only sets the local value, this is not backwards compatible. - -":let &opt = val" now sets the local and global values, like ":set". New -commands have been added to set the global or local value: - :let &opt = val like ":set" - :let &g:opt = val like ":setglobal" - :let &l:opt = val like ":setlocal" - - -'fileencoding' changed *fileencoding-changed* ----------------------- - -'fileencoding' was used in Vim 5.x to set the encoding used inside all of Vim. -This was a bit strange, because it was local to a buffer and worked for all -buffers. It could never be different between buffers, because it changed the -way text in all buffers was interpreted. -It is now used for the encoding of the file related to the buffer. If you -still set 'fileencoding' it is likely to be overwritten by the detected -encoding from 'fileencodings', thus it is "mostly harmless". -The old FileEncoding autocommand now does the same as the new EncodingChanged -event. - - -Digraphs changed *digraphs-changed* ----------------- - -The default digraphs now correspond to RFC1345. This is very different from -what was used in Vim 5.x. |digraphs| - - -Filetype detection changed *filetypedetect-changed* --------------------------- - -The filetype detection previously was using the "filetype" autocommand group. -This caused confusion with the FileType event name (case is ignored). The -group is now called "filetypedetect". It still works, but if the "filetype" -group is used the autocommands will not be removed by ":filetype off". - The support for 'runtimepath' has made the "myfiletypefile" and -"mysyntaxfile" mechanism obsolete. They are still used for backwards -compatibility. - -The connection between the FileType event and setting the 'syntax' option was -previously in the "syntax" autocommand group. That caused confusion with the -Syntax event name. The group is now called "syntaxset". - -The distributed syntax files no longer contain "syntax clear". That makes it -possible to include one in the other without tricks. The syntax is now -cleared when the 'syntax' option is set (by an autocommand added from -synload.vim). This makes the syntax cleared when the value of 'syntax' does -not correspond to a syntax file. Previously the existing highlighting was -kept. - - -Unlisted buffers introduced *new-unlisted-buffers* ---------------------------- - -There is now a difference between buffers which don't appear in the buffer -list and buffers which are really not in the buffer list. Commands like -":ls", ":bnext", ":blast" and the Buffers menu will skip buffers not in the -buffer list. |unlisted-buffer| -The 'buflisted' option can be used to make a buffer appear in the buffer list -or not. - -Several commands that previously added a buffer to the buffer list now create -an unlisted buffer. This means that a ":bnext" and ":ball" will not find these -files until they have actually been edited. For example, buffers used for the -alternative file by ":write file" and ":read file". - Other commands previously completely deleted a buffer and now only remove -the buffer from the buffer list. Commands relying on a buffer not to be -present might fail. For example, a ":bdelete" command in an autocommand that -relied on something following to fail (was used in the automatic tests). -|:bwipeout| can be used for the old meaning of ":bdelete". - -The BufDelete autocommand event is now triggered when a buffer is removed from -the buffer list. The BufCreate event is only triggered when a buffer is -created that is added to the buffer list, or when an existing buffer is added -to the buffer list. BufAdd is a new name for BufCreate. -The new BufNew event is for creating any buffer and BufWipeout for really -deleting a buffer. - -When doing Insert mode completion, only buffers in the buffer list are -scanned. Added the 'U' flag to 'complete' to do completion from unlisted -buffers. - -Unlisted buffers are not stored in a viminfo file. - - -CTRL-U in Command-line mode changed *CTRL-U-changed* ------------------------------------ - -Using CTRL-U when editing the command line cleared the whole line. Most -shells only delete the characters before the cursor. Made it work like that. -(Steve Wall) - -You can get the old behavior with CTRL-E CTRL-U: > - :cnoremap <C-U> <C-E><C-U> - - -Ctags gone *ctags-gone* ----------- - -Ctags is no longer part of the Vim distribution. It's now a grown-up program -by itself, it deserves to be distributed separately. -Ctags can be found here: http://ctags.sf.net/. - - -Documentation reorganized *documentation-6* -------------------------- - -The documentation has been reorganized, an item may not be where you found it -in Vim 5.x. -- The user manual was added, some items have been moved to it from the - reference manual. -- The quick reference is now in a separate file (so that it can be printed). - -The examples in the documentation were previously marked with a ">" in the -first column. This made it difficult to copy/paste them. There is now a -single ">" before the example and it ends at a "<" or a non-blank in the first -column. This also looks better without highlighting. - -'helpfile' is no longer used to find the help tags file. This allows a user -to add its own help files (e.g., for plugins). - - -Modeless selection and clipboard *modeless-and-clipboard* --------------------------------- - -The modeless selection is used to select text when Visual mode can't be used, -for example when editing the command line or at the more prompt. -In Vim 5.x the modeless selection was always used. On MS-Windows this caused -the clipboard to be overwritten, with no way to avoid that. The modeless -selection now obeys the 'a' and 'A' flags in 'guioptions' and "autoselect" and -"autoselectml" in 'clipboard'. By default there is no automatic copy on -MS-Windows. Use the |c_CTRL-Y| command to manually copy the selection. - -To get the old behavior back, do this: > - - :set clipboard^=autoselectml guioptions+=A - - -Small incompatibilities *incomp-small-6* ------------------------ - -'backupdir', 'cdpath', 'directory', 'equalprg', 'errorfile', 'formatprg', -'grepprg', 'helpfile', 'makeef', 'makeprg', 'keywordprg', 'cscopeprg', -'viminfo' and 'runtimepath' can no longer be set from a modeline, for better -security. - -Removed '_' from the 'breakat' default: It's commonly used in keywords. - -The default for 'mousehide' is on, because this works well for most people. - -The Amiga binary is now always compiled with "big" features. The "big" binary -archive no longer exists. - -The items "[RO]", "[+]", "[help]", "[Preview]" and "[filetype]" in -'statusline' no longer have a leading space. - -Non-Unix systems: When expanding wildcards for the Vim arguments, don't use -'suffixes'. It now works as if the shell had expanded the arguments. - -The 'lisp', 'smartindent' and 'cindent' options are not switched off when -'paste' is set. The auto-indenting is disabled when 'paste' is set, but -manual indenting with "=" still works. - -When formatting with "=" uses 'cindent' or 'indentexpr' indenting, and there -is no change in indent, this is not counted as a change ('modified' isn't set -and there is nothing to undo). - -Report 'modified' as changed when 'fileencoding' or 'fileformat' was set. -Thus it reflects the possibility to abandon the buffer without losing changes. - -The "Save As" menu entry now edits the saved file. Most people expect it to -work like this. - -A buffer for a directory is no longer added to the Buffers menu. - -Renamed <Return> to <Enter>, since that's what it's called on most keyboards. -Thus it's now the hit-enter prompt instead of the hit-return prompt. -Can map <Enter> just like <CR> or <Return>. - -The default for the 'viminfo' option is now '20,"50,h when 'compatible' isn't -set. Most people will want to use it, including beginners, but it required -setting the option, which isn't that easy. - -After using ":colder" the newer error lists are overwritten. This makes it -possible to use ":grep" to browse in a tree-like way. Must use ":cnewer 99" -to get the old behavior. - -The patterns in 'errorformat' would sometimes ignore case (MS-Windows) and -sometimes not (Unix). Now case is always ignored. Add "\C" to the pattern to -match case. - -The 16 bit MS-DOS version is now compiled without the +listcmds feature -(buffer list manipulation commands). They are not often needed and this -executable needs to be smaller. - -'sessionoptions' now includes "curdir" by default. This means that restoring -a session will result in the current directory being restored, instead of -going to the directory where the session file is located. - -A session deleted all buffers, deleting all marks. Now keep the buffer list, -it shouldn't hurt for some existing buffers to remain present. -When the argument list is empty ":argdel *" caused an error message. - -No longer put the search pattern from a tag jump in the history. - -Use "SpecialKey" highlighting for unprintable characters instead of "NonText". -The idea is that unprintable text or any text that's displayed differently -from the characters in the file is using "SpecialKey", and "NonText" is used -for text that doesn't really exist in the file. - -Motif now uses the system default colors for the menu and scrollbar. Used to -be grey. It's still possible to set the colors with ":highlight" commands and -resources. - -Formatting text with "gq" breaks a paragraph at a non-empty blank line. -Previously the line would be removed, which wasn't very useful. - -":normal" does no longer hang when the argument ends in half a command. -Previously Vim would wait for more characters to be typed, without updating -the screen. Now it pretends an <Esc> was typed. - -Bitmaps for the toolbar are no longer searched for in "$VIM/bitmaps" but in -the "bitmaps" directories in 'runtimepath'. - -Now use the Cmdline-mode menus for the hit-enter prompt instead of the Normal -mode menus. This generally works better and allows using the "Copy" menu to -produce CTRL-Y to copy the modeless selection. - -Moved the font selection from the Window to the Edit menu, together with the -other settings. - -The default values for 'isfname' include more characters to make "gf" work -better. - -Changed the license for the documentation to the Open Publication License. -This seemed fair, considering the inclusion of parts of the Vim book, which is -also published under the OPL. The downside is that we can't force someone who -would sell copies of the manual to contribute to Uganda. - -After "ayy don't let ""yy or :let @" = val overwrite the "a register. -Use the unnamed register instead. - -MSDOS: A pattern "*.*" previously also matched a file name without a dot. -This was inconsistent with other versions. - -In Insert mode, CTRL-O CTRL-\ CTRL-N {cmd} remains in Normal mode. Previously -it would go back to Insert mode, thus confusing the meaning of CTRL-\ CTRL-N, -which is supposed to take us to Normal mode (especially in ":amenu"). - -Allow using ":" commands after an operator. Could be used to implement a new -movement command. Thus it no longer aborts a pending operator. - -For the Amiga the "-d {device}" argument was possible. When compiled with the -diff feature, this no longer works. Use "-dev {device}" instead. |-dev| - -Made the default mappings for <S-Insert> in Insert mode insert the text -literally, avoids that special characters like BS cause side effects. - -Using ":confirm" applied to the rest of the line. Now it applies only to the -command right after it. Thus ":confirm if x | edit | endif" no longer works, -use ":if x | confirm edit | endif". This was the original intention, that it -worked differently was a bug. - -============================================================================== -NEW FEATURES *new-6* - -Folding *new-folding* -------- - -Vim can now display a buffer with text folded. This allows overviewing the -structure of a file quickly. It is also possible to yank, delete and put -folded text, for example to move a function to another position. - -There is a whole bunch of new commands and options related to folding. -See |folding|. - - -Vertically split windows *new-vertsplit* ------------------------- - -Windows can also be split vertically. This makes it possible to have windows -side by side. One nice use for this is to compare two similar files (see -|new-diff-mode|). The 'scrollbind' option can be used to synchronize -scrolling. - -A vertical split can be created with the commands: - :vsplit or CTRL-W v or CTRL-W CTRL-V |:vsplit| - :vnew |:vnew| - :vertical {cmd} |:vertical| -The last one is a modifier, which has a meaning for any command that splits a -window. For example: > - :vertical stag main -Will vertically split the window and jump to the tag "main" in the new window. - -Moving from window to window horizontally can be done with the |CTRL-W_h| and -|CTRL-W_l| commands. The |CTRL-W_k| and |CTRL-W_j| commands have been changed -to jump to the window above or below the cursor position. - -The vertical and horizontal splits can be mixed as you like. Resizing windows -is easy when using the mouse, just position the pointer on a status line or -vertical separator and drag it. In the GUI a special mouse pointer shape -indicates where you can drag a status or separator line. - -To resize vertically split windows use the |CTRL-W_<| and |CTRL-W_>| commands. -To make a window the maximum width use the CTRL-W | command |CTRL-W_bar|. - -To force a new window to use the full width or height of the Vim window, -these two modifiers are available: - :topleft {cmd} New window appears at the top with full - width or at the left with full height. - :botright {cmd} New window appears at the bottom with full - width or at the right with full height. -This can be combined with ":vertical" to force a vertical split: > - :vert bot dsplit DEBUG -This will open a window at the far right, occupying the full height of the Vim -window, with the cursor on the first definition of "DEBUG". -The help window is opened at the top, like ":topleft" was used, if the current -window is fewer than 80 characters wide. - -A few options can be used to set the preferences for vertically split windows. -They work similar to their existing horizontal equivalents: - horizontal vertical ~ - 'splitbelow' 'splitright' - 'winheight' 'winwidth' - 'winminheight' 'winminwidth' -It's possible to set 'winminwidth' to zero, so that temporarily unused windows -hardly take up space without closing them. - -The new 'eadirection' option tells where 'equalalways' applies: - :set eadirection=both both directions - :set eadirection=ver equalize window heights - :set eadirection=hor equalize windows widths -This can be used to avoid changing window sizes when you want to keep them. - -Since windows can become quite narrow with vertical splits, text lines will -often not fit. The 'sidescrolloff' has been added to keep some context left -and right of the cursor. The 'listchars' option has been extended with the -"precedes" item, to show a "<" for example, when there is text left off the -screen. (Utz-Uwe Haus) - -"-O" command line argument: Like "-o" but split windows vertically. (Scott -Urban) - -Added commands to move the current window to the very top (CTRL-W K), bottom -(CTRL-W J), left (CTRL-W H) and right (CTRL-W L). In the new position the -window uses the full width/height of the screen. - -When there is not enough room in the status line for both the file name and -the ruler, use up to half the width for the ruler. Useful for narrow windows. - - -Diff mode *new-diff-mode* ---------- - -In diff mode Vim shows the differences between two, three or four files. -Folding is used to hide the parts of the file that are equal. -Highlighting is used to show deleted and changed lines. -See |diff-mode|. - -An easy way to start in diff mode is to start Vim as "vimdiff file1 file2". -Added the vimdiff manpage. - -In a running Vim the |:diffsplit| command starts diff mode for the current -file and another file. The |:diffpatch| command starts diff mode using the -current file and a patch file. The |:diffthis| command starts diff mode for -the current window. - -Differences can be removed with the |:diffget| and |:diffput| commands. - -- The 'diff' option switches diff mode on in a window. -- The |:diffupdate| command refreshes the diffs. -- The 'diffopt' option changes how diffs are displayed. -- The 'diffexpr' option can be set how a diff is to be created. -- The 'patchexpr' option can be set how patch is applied to a file. -- Added the "diff" folding method. When opening a window for diff-mode, set - 'foldlevel' to zero and 'foldenable' on, to close the folds. -- Added the DiffAdd, DiffChange, DiffDelete and DiffText highlight groups to - specify the highlighting for differences. The defaults are ugly... -- Unix: make a vimdiff symbolic link for "make install". -- Removed the now obsolete "vimdiff.vim" script from the distribution. -- Added the "[c" and "]c" commands to move to the next/previous change in diff - mode. - - -Easy Vim: click-and-type *new-evim* ------------------------- - -eVim stands for "Easy Vim". This is a separate program, but can also be -started as "vim -y". - -This starts Vim with 'insertmode' set to allow click-and-type editing. The -$VIMRUNTIME/evim.vim script is used to add mappings and set options to be able -to do most things like Notepad. This is only for people who can't stand two -modes. - -eView does the same but in readonly mode. - -In the GUI a CTRL-C now only interrupts when busy with something, not when -waiting for a character. Allows using CTRL-C to copy text to the clipboard. - - -User manual *new-user-manual* ------------ - -The user manual has been added. It is organised around editing tasks. It -reads like a book, from start to end. It should allow beginners to start -learning Vim. It helps everybody to learn using the most useful Vim features. -It is much easier to read than the reference manual, but omits details. See -|user-manual|. - -The user manual includes parts of the Vim book by Steve Oualline |frombook|. -It is published under the OPL |manual-copyright|. - -When syntax highlighting is not enabled, the characters in the help file which -mark examples ('>' and '<') and header lines ('~') are replaced with a space. - -When closing the help window, the window layout is restored from before -opening it, if the window layout didn't change since then. -When opening the help window, put it at the top of the Vim window if the -current window is fewer than 80 characters and not full width. - - -Flexible indenting *new-indent-flex* ------------------- - -Automatic indenting is now possible for any language. It works with a Vim -script, which makes it very flexible to compute the indent. - -The ":filetype indent on" command enables using the provided indent scripts. -This is explained in the user manual: |30.3|. - -The 'indentexpr' option is evaluated to get the indent for a line. The -'indentkeys' option tells when to trigger re-indenting. Normally these -options are set from an indent script. Like Syntax files, indent scripts will -be created and maintained by many people. - - -Extended search patterns *new-searchpat* ------------------------- - -Added the possibility to match more than one line with a pattern. (partly by -Loic Grenie) -New items in a search pattern for multi-line matches: -\n match end-of-line, also in [] -\_[] match characters in range and end-of-line -\_x match character class and end-of-line -\_. match any character or end-of-line -\_^ match start-of-line, can be used anywhere in the regexp -\_$ match end-of-line, can be used anywhere in the regexp - -Various other new items in search patterns: -\c ignore case for the whole pattern -\C match case for the whole pattern -\m magic on for the following -\M magic off for the following -\v make following characters "very magic" -\V make following characters "very nomagic" - -\@! don't match atom before this. - Example: "foo\(bar\)\@!" matches "foo " but not "foobar". -\@= match atom, resulting in zero-width match - Example: "foo\(bar\)\@=" matches "foo" in "foobar". -\@<! don't match preceding atom before the current position -\@<= match preceding atom before the current position -\@> match preceding atom as a subexpression - -\& match only when branch before and after it match - -\%[] optionally match a list of atoms; "end\%[if]" matches "end", - "endi" and "endif" -\%(\) like \(\), but without creating a back-reference; there can be - any number of these, overcomes the limit of nine \( \) pairs -\%^ match start-of-file (Chase Tingley) -\%$ match end-of-file (Chase Tingley) -\%# Match with the cursor position. (Chase Tingley) -\? Just like "\=" but can't be used in a "?" command. - -\%23l match in line 23 -\%<23l match before line 23 -\%>23l match after line 23 -\%23c, \%<23c, \%>23c match in/before/after column 23 -\%23v, \%<23v, \%>23v match in/before/after virtual column 23 - - -For syntax items: -\z(...\) external reference match set (in region start pattern) -\z1 - \z9 external reference match use (in region skip or end pattern) - (Scott Bigham) - -\zs use position as start of match -\ze use position as end of match - -Removed limit of matching only up to 32767 times with *, \+, etc. - -Added support to match multi-byte characters. (partly by Muraoka Taro) -Made "\<" and "\>" work for UTF-8. (Muraoka Taro) - - -UTF-8 support *new-utf-8* -------------- - -Vim can now edit files in UTF-8 encoding. Up to 31 bit characters can be -used, but only 16 bit characters are displayed. Up to two combining -characters are supported, they overprint the preceding character. -Double-wide characters are also supported. See |UTF-8|. - -UCS-2, UCS-4 and UTF-16 encodings are supported too, they are converted to -UTF-8 internally. There is also support for editing Unicode files in a Latin1 -environment. Other encodings are converted with iconv() or an external -converter specified with 'charconvert'. - -Many new items for Multi-byte support: -- Added 'encoding' option: specifies character encoding used inside Vim. It - can be any 8-bit encoding, some double-byte encodings or Unicode. - It is initialized from the environment when a supported value is found. -- Added 'fileencoding' and 'fileencodings': specify character coding in a - file, similar to 'fileformat' and 'fileformats'. - When 'encoding' is "utf-8" and 'fileencodings' is "utf-8,latin1" this will - automatically switch to latin1 if a file does not contain valid UTF-8. -- Added 'bomb' option and detection of a BOM at the start of a file. Can be - used with "ucs-bom" in 'fileencodings' to automatically detect a Unicode - file if it starts with a BOM. Especially useful on MS-Windows (NT and - 2000), which uses ucs-2le files with a BOM (e.g., when exporting the - registry). -- Added the 'termencoding' option: Specifies the encoding used for the - terminal. Useful to put Vim in utf-8 mode while in a non-Unicode locale: > - :let &termencoding = &encoding - :set encoding=utf-8 -- When 'viminfo' contains the 'c' flag, the viminfo file is converted from the - 'encoding' it was written with to the current 'encoding'. -- Added ":scriptencoding" command: convert lines in a sourced script to - 'encoding'. Useful for menu files. -- Added 'guifontwide' to specify a font for double-wide characters. -- Added Korean support for character class detection. Also fix cls() in - search.c. (Chong-Dae Park) -- Win32: Typing multi-byte characters without IME. (Alexander Smishlajev) -- Win32 with Mingw: compile with iconv library. (Ron Aaron) -- Win32 with MSVC: dynamically load iconv.dll library. (Muraoka Taro) -- Make it possible to build a version with multi-byte and iconv support with - Borland 5.5. (Yasuhiro Matsumoto) -- Added 'delcombine' option: Delete combining character separately. (Ron - Aaron) -- The "xfontset" feature isn't required for "xim". These are now two - independent features. -- XIM: enable XIM when typing a language character (Insert mode, Search - pattern, "f" or "r" command). Disable XIM when typing a Normal mode - command. -- When the XIM is active, show "XIM" in the 'showmode' message. (Nam SungHyun) -- Support "CursorIM" for XIM. (Nam SungHyun) -- Added 'm' flag to 'formatoptions': When wrapping words, allow splitting at - each multibyte character, not only at a space. -- Made ":syntax keyword" work with multi-byte characters. -- Added support for Unicode upper/lowercase flipping and comparing. (based on - patch by Raphael Finkel) - Let "~" on multi-byte characters that have a third case ("title case") - switch between the three cases. (Raphael Finkel) - -Allow defining digraphs for multi-byte characters. -Added RFC1345 digraphs for Unicode. -Most Normal mode commands that accept a character argument, like "r", "t" and -"f" now accept a digraph. The 'D' flag in 'cpoptions' disables this to remain -Vi compatible. - -Added Language mapping and 'keymap' to be able to type multi-byte characters: -- Added the ":lmap" command and friends: Define mappings that are used when - typing characters in the language of the text. Also for "r", "t", etc. In - Insert and Command-line mode CTRL-^ switches the use of the mappings on/off. - CTRL-^ also toggles the use of an input method when no language mappings are - present. Allows switching the IM back on halfway typing. -- "<char-123>" argument to ":map", allows to specify the decimal, octal or - hexadecimal value of a character. -- Implemented the 'keymap' option: Load a keymap file. Uses ":lnoremap" to - define mappings for the keymap. The new ":loadkeymap" command is used in - the keymap file. -- Added 'k' flag in 'statusline': Value of "b:keymap_name" or 'keymap' when - it's being used. Uses "<lang>" when no keymap is loaded and ":lmap"s are - active. Show this text in the default statusline too. -- Added the 'iminsert' and 'imsearch' options: Specify use of langmap mappings - and Input Method with an option. (Muraoka Taro) - Added 'imcmdline' option: When set the input method is always enabled when - starting to edit a command line. Useful for a XIM that uses dead keys to - type accented characters. - Added 'imactivatekey' option to better control XIM. (Muraoka Taro) -- When typing a mapping that's not finished yet, display the last character - under the cursor in Insert mode and Command-line mode. Looks good for dead - characters. -- Made the 'langmap' option recognize multi-byte characters. But mapping only - works for 8-bit characters. Helps when using UTF-8. -- Use a different cursor for when ":lmap" mappings are active. Can specify - two highlight groups for an item in 'guicursor'. By default "lCursor" and - "Cursor" are equal, the user must set a color he likes. - Use the cursor color for hangul input as well. (Sung-Hyun Nam) -- Show "(lang)" for 'showmode' when language mapping is enabled. -- UTF-8: Made "r" work with a ":lmap" that includes a composing character. - Also works for "f", which now works to find a character that includes a - composing character. - -Other multi-byte character additions: -- Support double-byte single-width characters for euc-jp: Characters starting - with 0x8E. Added ScreenLines2[] to store the second byte. - - -Multi-language support *new-multi-lang* ----------------------- - -The messages used in Vim can be translated. Several translations are -available. This uses the gettext mechanism. It allows adding a translation -without recompiling Vim. |multi-lang| (partly by Marcin Dalecki) - -The translation files are in the src/po directory. The src/po/README.txt file -explains a few things about doing a translation. - -Menu translations are available as well. This uses the new |:menutranslate| -command. The translations are found in the runtime directory "lang". This -allows a user to add a translation. - -Added |:language| command to set the language (locale) for messages, time and -character type. This allows switching languages in Vim without changing the -locale outside of Vim. - -Made it possible to have vimtutor use different languages. (Eduardo Fernandez) -Spanish (Eduardo Fernandez), Italian (Antonio Colombo), Japanese (Yasuhiro -Matsumoto) and French (Adrien Beau) translations are included. -Added "vimtutor.bat": script to start Vim on a copy of the tutor file for -MS-Windows. (Dan Sharp) - -- Added v:lang variable to be able to get current language setting. - (Marcin Dalecki) Also v:lc_time and v:ctype. -- Make it possible to translate the dialogs used by the menus. Uses global - "menutrans_" variables. ":menutrans clear" deletes them. -- removed "broken locale" (Marcin Dalecki). -- Don't use color names in icons, use RGB values. The names could be - translated. -- Win32: Added global IME support (Muraoka) -- Win32: Added dynamic loading of IME support. -- ":messages" prints a message about who maintains the messages or the - translations. Useful to find out where to make a remark about a wrong - translation. -- --disable-nls argument for configure: Disable use of gettext(). (Sung-Hyun - Nam) -- Added NLS support for Win32 with the MingW compiler. (Eduardo Fernandez) -- When available, call bind_textdomain_codeset() to have gettext() translate - messages to 'encoding'. This requires GNU gettext 0.10.36 or later. -- Added gettext support for Win32. This means messages will be translated - when the locale is set and libintl.dll can be found. (Muraoka Taro) - Also made it work with MingW compiler. (Eduardo Fernandez) - Detect the language and set $LANG to get the appropriate translated messages - (if supported). Also use $LANG to select a language, v:lang is a very - different kind of name. -- Made gvimext.dll use translated messages, if possible. (Yasuhiro Matsumoto) - - -Plugin support *new-plugins* --------------- - -To make it really easy to load a Vim script when starting Vim, the "plugin" -runtime directory can be used. All "*.vim" files in it will be automatically -loaded. For Unix, the directory "~/.vim/plugin" is used by default. The -'runtimepath' option can be set to look in other directories for plugins. -|load-plugins| |add-plugin| - -The |:runtime| command has been added to load one or more files in -'runtimepath'. - -Standard plugins: -netrw.vim - Edit files over a network |new-network-files| -gzip.vim - Edit compressed files -explorer.vim - Browse directories |new-file-browser| - -Added support for local help files. |add-local-help|. -When searching for help tags, all "doc/tags" files in 'runtimepath' are used. -Added the ":helptags" command: Generate a tags file for a help directory. -The first line of each help file is automagically added to the "LOCAL -ADDITIONS" section in doc/help.txt. - -Added the <unique> argument to ":map": only add a mapping when it wasn't -defined before. - -When displaying an option value with 'verbose' set will give a message about -where the option was last set. Very useful to find out which script did set -the value. - -The new |:scriptnames| command displays a list of all scripts that have been -sourced. - -GUI: For Athena, Motif and GTK look for a toolbar bitmap in the "bitmaps" -directories in 'runtimepath'. Allows adding your own bitmaps. - - -Filetype plugins *new-filetype-plugins* ------------------ - -A new group of files has been added to do settings for specific file types. -These can be options and mappings which are specifically used for one value of -'filetype'. - -The files are located in "$VIMRUNTIME/ftplugin". The 'runtimepath' option -makes it possible to use several sets of plugins: Your own, system-wide, -included in the Vim distribution, etc. - -To be able to make this work, several features were added: -- Added the "s:" variables, local to a script. Avoids name conflicts with - global variables. They can be used in the script and in functions, - autocommands and user commands defined in the script. They are kept between - invocations of the same script. |s:var| -- Added the global value for local options. This value is used when opening - a new buffer or editing another file. The option value specified in a - modeline or filetype setting is not carried over to another buffer. - ":set" sets both the local and the global value. - ":setlocal" sets the local option value only. - ":setglobal" sets or displays the global value for a local option. - ":setlocal name<" sets a local option to its global value. -- Added the buffer-local value for some global options: 'equalprg', 'makeprg', - 'errorformat', 'grepprg', 'path', 'dictionary', 'thesaurus', 'tags', - 'include' and 'define'. This allows setting a local value for these global - options, without making it incompatible. -- Added mappings and abbreviations local to a buffer: ":map <buffer>". -- In a mapping "<Leader>" can be used to get the value of the "mapleader" - variable. This simplifies mappings that use "mapleader". "<Leader>" - defaults to "\". "<LocalLeader>" does the same with "maplocalleader". This - is to be used for mappings local to a buffer. -- Added <SID> Script ID to define functions and mappings local to a script. -- Added <script> argument to ":noremap" and ":noremenu": Only remap - script-local mappings. Avoids that mappings from other scripts get in the - way, but does allow using mappings defined in the script. -- User commands can be local to a buffer: ":command -buffer". - -The new ":setfiletype" command is used in the filetype detection autocommands, -to avoid that 'filetype' is set twice. - - -File browser *new-file-browser* ------------- - -When editing a directory, the explorer plugin will list the files in the -directory. Pressing <Enter> on a file name edits that file. Pressing <Enter> -on a directory moves the browser to that directory. - -There are several other possibilities, such as opening a file in the preview -window, renaming files and deleting files. - -See |file-explorer|. - - -Editing files over a network *new-network-files* ----------------------------- - -Files starting with scp://, rcp://, ftp:// and http:// are recognized as -remote files. An attempt is made to access these files with the indicated -method. For http:// only reading is possible, for the others writing is also -supported. Uses the netrw.vim script as a standard "plugin". |netrw| - -Made "gf" work on a URL. It no longer assumes the file is local on the -computer (mostly didn't work anyway, because the full path was required). -Adjusted test2 for this. - -Allow using a URL in 'path'. Makes ":find index.html" work. - -GTK: Allow dropping a http:// and ftp:// URL on Vim. The netrw plugin takes -care of downloading the file. (MiKael Berthe) - - -Window for command-line editing *new-cmdwin* -------------------------------- - -The Command-line window can be used to edit a command-line with Normal and -Insert mode commands. When it is opened it contains the history. This allows -copying parts of previous command lines. |cmdwin| - -The command-line window can be opened from the command-line with the key -specified by the 'cedit' option (like Nvi). It can also be opened directly -from Normal mode with "q:", "q/" and "q?". - -The 'cmdwinheight' is used to specify the initial height of the window. - -In Insert mode CTRL-X CTRL-V can be used to complete an Ex command line, like -it's done on the command-line. This is also useful for writing Vim scripts! - -Additionally, there is "improved Ex mode". Entered when Vim is started as -"exim" or "vim -E", and with the "gQ" command. Works like repeated use of -":", with full command-line editing and completion. (Ulf Carlsson) - - -Debugging mode *new-debug-mode* --------------- - -In debugging mode sourced scripts and user functions can be executed line by -line. There are commands to step over a command or step into it. |debug-mode| - -Breakpoints can be set to run until a certain line in a script or user -function is executed. |:breakadd| - -Debugging can be started with ":debug {cmd}" to debug what happens when a -command executes. The |-D| argument can be used to debug while starting up. - - -Cursor in virtual position *new-virtedit* --------------------------- - -Added the 'virtualedit' option: Allow positioning the cursor where there is no -actual character in Insert mode, Visual mode or always. (Matthias Kramm) -This is especially useful in Visual-block mode. It allows positioning a -corner of the area where there is no text character. (Many improvements by -Chase Tingley) - - -Debugger interface *new-debug-itf* ------------------- - -This was originally made to work with Sun Visual Workshop. (Gordon Prieur) -See |debugger.txt|, |sign.txt| and |workshop.txt|. - -Added the ":sign" command to define and place signs. They can be displayed -with two ASCII characters or an icon. The line after it can be highlighted. -Useful to display breakpoints and the current PC position. - -Added the |:wsverb| command to execute debugger commands. - -Added balloon stuff: 'balloondelay' and 'ballooneval' options. - -Added "icon=" argument for ":menu". Allows defining a specific icon for a -ToolBar item. - - -Communication between Vims *new-vim-server* --------------------------- - -Added communication between two Vims. Makes it possible to send commands from -one Vim to another. Works for X-Windows and MS-Windows |clientserver|. - -Use "--remote" to have files be edited in an already running Vim. -Use "--remote-wait" to do the same and wait for the editing to finish. -Use "--remote-send" to send commands from one Vim to another. -Use "--remote-expr" to have an expression evaluated in another Vim. -Use "--serverlist" to list the currently available Vim servers. (X only) -There are also functions to communicate between the server and the client. -|remote_send()| |remote_expr()| - -(X-windows version implemented by Flemming Madsen, MS-Windows version by Paul -Moore) - -Added the command server name to the window title, so you can see which server -name belongs to which Vim. - -Removed the OleVim directory and SendToVim.exe and EditWithVim.exe from the -distribution. Can now use "gvim --remote" and "gvim --remote-send", which is -portable. - -GTK+: Support running Vim inside another window. Uses the --socketid argument -(Neil Bird) - - -Buffer type options *new-buftype* -------------------- - -The 'buftype' and 'bufhidden' options have been added. They can be set to -have different kinds of buffers. For example: -- 'buftype' = "quickfix": buffer with error list -- 'buftype' = "nofile" and 'bufhidden' = "delete": scratch buffer that will be - deleted as soon as there is no window displaying it. - -'bufhidden' can be used to overrule the 'hidden' option for one buffer. - -In combination with 'buflisted' and 'swapfile' this offers the possibility to -use various kinds of special buffers. See |special-buffers|. - - -Printing *new-printing* --------- - -Included first implementation of the ":hardcopy" command for printing -to paper. For MS-Windows any installed printer can be used. For other -systems a PostScript file is generated, which can be printed with the -'printexpr' option. -(MS-Windows part by Vince Negri, Vipin Aravind, PostScript by Vince Negri and -Mike Williams) - -Made ":hardcopy" work with multi-byte characters. (Muraoka Taro, Yasuhiro -Matsumoto) - -Added options to tune the way printing works: (Vince Negri) -- 'printoptions' defines various things. -- 'printheader' specifies the header format. Added "N" field to 'statusline' - for the page number. -- 'printfont' specifies the font name and attributes. -- 'printdevice' defines the default printer for ":hardcopy!". - - -Ports *ports-6* ------ - -Port to OS/390 Unix (Ralf Schandl) -- A lot of changes to handle EBCDIC encoding. -- Changed Ctrl('x') to Ctrl_x define. - -Included jsbmouse support. (Darren Garth) -Support for dec mouse in Unix. (Steve Wall) - -Port to 16-bit MS Windows (Windows 3.1x) (Vince Negri) - -Port to QNX. Supports the Photon GUI, mouse, etc. (Julian Kinraid) - -Allow cross-compiling the Win32 version with Make_ming.mak. (Ron Aaron) -Added Python support for compiling with Mingw. (Ron Aaron) - -Dos 32 bit: Added support the Windows clipboard. (David Kotchan) - -Win32: Dynamically load Perl and Python. Allows compiling Vim with these -interfaces and will try to find the DLLs at runtime. (Muraoka Taro) - -Compiling the Win32 GUI with Cygwin. Also compile vimrun, dosinst and -uninstall. (Gerfried) - -Mac: Make Vim compile with the free MPW compiler supplied by Apple. And -updates for CodeWarrior. (Axel Kielhorn) - -Added typecasts and ifdefs as a start to make Vim work on Win64 (George -Reilly) - - -Quickfix extended *quickfix-6* ------------------ - -Added the "error window". It contains all the errors of the current error -list. Pressing <Enter> in a line makes Vim jump to that line (in another -window). This makes it easy to navigate through the error list. -|quickfix-window|. - -- |:copen| opens the quickfix window. -- |:cclose| closes the quickfix window. -- |:cwindow| takes care that there is a quickfix window only when there are - recognized errors. (Dan Sharp) - -- Quickfix also knows "info", next to "warning" and "error" types. "%I" can be - used for the start of a multi-line informational message. (Tony Leneis) -- The "%p" argument can be used in 'errorformat' to get the column number from - a line where "^" points to the column. (Stefan Roemer) -- When using "%f" in 'errorformat' on a DOS/Windows system, also include "c:" - in the filename, even when using "%f:". - - -Operator modifiers *new-operator-mod* ------------------- - -Insert "v", "V" or CTRL-V between an operator and a motion command to force -the operator to work characterwise, linewise or blockwise. |o_v| - - -Search Path *new-search-path* ------------ - -Vim can search in a directory tree not only in downwards but also upwards. -Works for the 'path', 'cdpath' and 'tags' options. (Ralf Schandl) - -Also use "**" for 'tags' option. (Ralf Schandl) - -Added 'includeexpr', can be used to modify file name found by 'include' -option. -Also use 'includeexpr' for "gf" and "<cfile>" when the file can't be found -without modification. Useful for doing "gf" on the name after an include or -import statement. - -Added the 'cdpath' option: Locations to find a ":cd" argument. (Raf) - -Added the 'suffixesadd' option: Suffixes to be added to a file name when -searching for a file for the "gf", "[I", etc. commands. - - -Writing files improved *new-file-writing* ----------------------- - -Added the 'backupcopy' option: Select whether a file is to be copied or -renamed to make a backup file. Useful on Unix to speed up writing an ordinary -file. Useful on other systems to preserve file attributes and when editing a -file on a Unix filesystem. - -Added the 'autowriteall' option. Works like 'autowrite' but for more -commands. - -Added the 'backupskip' option: A list of file patterns to skip making a backup -file when it matches. The default for Unix includes "/tmp/*", this makes -"crontab -e" work. - -Added support for Access Control Lists (ACL) for FreeBSD and Win32. The ACL -is copied from the original file to the new file (or the backup if it's -copied). -ACL is also supported for AIX, Solaris and generic POSIX. (Tomas Ogren) -And on SGI. - - -Argument list *new-argument-list* -------------- - -The support for the argument list has been extended. It can now be -manipulated to contain the files you want it to contain. - -The argument list can now be local to a window. It is created with the -|:arglocal| command. The |:argglobal| command can be used to go back to the -global argument list. - -The |:argdo| command executes a command on all files in the argument list. - -File names can be added to the argument list with |:argadd|. File names can -be removed with |:argdelete|. - -"##" can be used like "#", it is replaced by all the names in the argument -list concatenated. Useful for ":grep foo ##". - -The |:argedit| adds a file to the argument list and edits it. Like ":argadd" -and then ":edit". - - -Restore a View *new-View* --------------- - -The ":mkview" command writes a Vim script with the settings and mappings for -one window. When the created file is sourced, the view of the window is -restored. It's like ":mksession" for one window. -The View also contains the local argument list and manually created, opened -and closed folds. - -Added the ":loadview" command and the 'viewdir' option: Allows for saving and -restoring views of a file with simple commands. ":mkview 1" saves view 1 for -the current file, ":loadview 1" loads it again. Also allows quickly switching -between two views on one file. And saving and restoring manual folds and the -folding state. - -Added 'viewoptions' to specify how ":mkview" works. - -":mksession" now also works fine with vertical splits. It has been further -improved and restores the view of each window. It also works properly with -preview and quickfix windows. - -'sessionoptions' is used for ":mkview" as well. -Added "curdir" and "sesdir" to 'sessionoptions'. Allows selection of what -the current directory will be restored to. - -The session file now also contains the argument list(s). - - -Color schemes *new-color-schemes* -------------- - -Support for loading a color scheme. Added the ":colorscheme" command. -Automatically add menu entries for available schemes. -Should now properly reset the colors when 'background' or 't_Co' is changed. -":highlight clear" sets the default colors again. -":syntax reset" sets the syntax highlight colors back to the defaults. -For ":set bg&" guess the value. This allows a color scheme to switch back to -the default colors. -When syntax highlighting is switched on and a color scheme was defined, reload -the color scheme to define the colors. - - -Various new items *new-items-6* ------------------ - -Normal mode commands: ~ - -"gi" Jump to the ^ mark and start Insert mode. Also works when the - mark is just after the line. |gi| - -"g'm" and "g`m" - Jump to a mark without changing the jumplist. Now you can use - g`" to jump to the last known position in a file without side - effects. Also useful in mappings. - -[', [`, ]' and ]` - move the cursor to the next/previous lowercase mark. - -g_ Go to last non-blank in line. (Steve Wall) - - -Options: ~ - -'autoread' When detected that a file changed outside of Vim, - automatically read a buffer again when it's not changed. - It has a global and a local value. Use ":setlocal autoread<" - to go back to using the global value for 'autoread'. - -'debug' When set to "msg" it will print error messages that would - otherwise be omitted. Useful for debugging 'indentexpr' and - 'foldexpr'. - -'lispwords' List of words used for lisp indenting. It was previously hard - coded. Added a number of Lisp names to the default. - -'fold...' Many new options for folding. - -'modifiable' When off, it is impossible to make changes to a buffer. - The %m and %M items in 'statusline' show a '-'. - -'previewwindow' Set in the preview window. Used in a session file to mark a - window as the preview window. - -'printfont' -'printexpr' -'printheader' -'printdevice' -'printoptions' for ":hardcopy". - -'buflisted' Makes a buffer appear in the buffer list or not. - -Use "vim{version}:" for modelines, only to be executed when the version is ->= {version}. Also "vim>{version}", "vim<{version}" and "vim={version}". - - -Ex commands: ~ - -:sav[eas][!] {file} - Works like ":w file" and ":e #", but without loading the file - again and avoiding other side effects. |:saveas| - -:silent[!] {cmd} - Execute a command silently. Also don't use a delay that would - come after the message. And don't do 'showmatch'. - RISCOS: Removed that "!~cmd" didn't output anything, and - didn't wait for <Enter> afterwards. Can use ":silent !cmd" - now. -:menu <silent> Add a menu that won't echo Ex commands. -:map <silent> Add a mapping that won't echo Ex commands. - -:checktime Check for changed buffers. - -:verbose {cmd} Set 'verbose' for one command. - -:echomsg {expr} -:echoerr {expr} Like ":echo" but store the message in the history. (Mark - Waggoner) - -:grepadd Works just like ":grep" but adds to the current error list - instead of defining a new list. |:grepadd| - -:finish Finish sourcing a file. Can be used to skip the rest of a Vim - script. |:finish| - -:leftabove -:aboveleft Split left/above current window. - -:rightbelow -:belowright Split right/below current window. - -:first, :bfirst, :ptfirst, etc. - Alias for ":rewind". It's more logical compared to ":last". - -:enew Edit a new, unnamed buffer. This is needed, because ":edit" - re-edits the same file. (Wall) - -:quitall Same as ":qall". - -:match Define match highlighting local to a window. Allows - highlighting an item in the current window without interfering - with syntax highlighting. - -:menu enable -:menu disable Commands to enable/disable menu entries without removing them. - (Monish Shah) - -:windo Execute a command in all windows. -:bufdo Execute a command in all buffers. - -:wincmd Window (CTRL-W) command. Useful when a Normal mode command - can't be used (e.g., for a CursorHold autocommand). See - |CursorHold-example| for a nice application with it. - -:lcd and :lchdir - Set local directory for a window. (Benjie Chen) - -:hide {command} - Execute {command} with 'hidden' set. - -:emenu in Visual mode to execute a ":vmenu" entry. - -:popup Pop up a popup menu. - -:redraw Redraw the screen even when busy with a script or function. - -:hardcopy Print to paper. - -:compiler Load a Vim script to do settings for a specific compiler. - -:z# List numbered lines. (Bohdan Vlasyuk) - - -New marks: ~ - -'( and ') Begin or end of current sentence. Useful in Ex commands. -'{ and '} Begin or end of current paragraph. Useful in Ex commands. -'. Position of the last change in the current buffer. -'^ Position where Insert mode was stopped. - -Store the ^ and . marks in the viminfo file. Makes it possible to jump to the -last insert position or changed text. - - -New functions: ~ -argidx() Current index in argument list. -buflisted() Checks if the buffer exists and has 'buflisted' set. -cindent() Get indent according to 'cindent'. -eventhandler() Returns 1 when inside an event handler and interactive - commands can't be used. -executable() Checks if a program or batch script can be executed. -filewritable() Checks if a file can be written. (Ron Aaron) -foldclosed() Find out if there is a closed fold. (Johannes Zellner). -foldcloseend() Find the end of a closed fold. -foldlevel() Find out the foldlevel. (Johannes Zellner) -foreground() Move the GUI window to the foreground. -getchar() Get one character from the user. Can be used to define a - mapping that takes an argument. -getcharmod() Get last used key modifier. -getbufvar() gets the value of an option or local variable in a buffer (Ron - Aaron) -getfsize() Return the size of a file. -getwinvar() gets the value of an option or local variable in a window (Ron - Aaron) -globpath() Find matching files in a list of directories. -hasmapto() Detect if a mapping to a string is already present. -iconv() Convert a string from one encoding to another. -indent() gets the indent of a line (Ron Aaron) -inputdialog() Like input() but use a GUI dialog when possible. Currently - only works for Win32, Motif, Athena and GTK. - Use inputdialog() for the Edit/Settings/Text Width menu. Also - for the Help/Find.. and Toolbar FindHelp items. - (Win32 support by Thore B. Karlsen) - (Win16 support by Vince Negri) -inputsecret() Ask the user to type a string without showing the typed keys. - (Charles Campbell) -libcall() for Unix (Neil Bird, Johannes Zellner, Stephen Wall) -libcallnr() for Win32 and Unix -lispindent() Get indent according to 'lisp'. -mode() Return a string that indicates the current mode. -nextnonblank() Skip blank lines forwards. -prevnonblank() Skip blank lines backwards. Useful to for indent scripts. -resolve() MS-Windows: resolve a shortcut to the file it points to. - Unix: resolve a symbolic link. -search() Search for a pattern. -searchpair() Search for matching pair. Can be used in indent files to find - the "if" matching an endif. -setbufvar() sets an option or variable local to a buffer (Ron Aaron) -setwinvar() sets an option or variable local to a window (Ron Aaron) -stridx() Search for first occurrence of one string in another. -strridx() Search for last occurrence of one string in another. -tolower() Convert string to all-lowercase. -toupper() Convert string to all-uppercase. -type() Check the type of an expression. -wincol() window column of the cursor -winwidth() Width of a window. (Johannes Zellner) -winline() window line of the cursor - - -Added expansion of curly braces in variable and function names. This can be -used for variable names that include the value of an option. Or a primitive -form of arrays. (Vince Negri) - - -New autocommand events: ~ -BufWinEnter Triggered when a buffer is displayed in a window, after using - the modelines. Can be used to load a view. -BufWinLeave Triggered when a buffer is no longer in a window. Also - triggered when exiting Vim. Can be used to save views. -FileChangedRO Triggered before making the first change to a read-only file. - Can be used to check-out the file. (Scott Graham) -TermResponse Triggered when the terminal replies to the version-request. - The v:termresponse internal variable holds the result. Can be - used to react to the version of the terminal. (Ronald Schild) -FileReadCmd Triggered before reading a file. -BufReadCmd Triggered before reading a file into a buffer. -FileWriteCmd Triggered before writing a file. -BufWriteCmd Triggered before writing a buffer into a file. -FileAppendCmd Triggered before appending to a file. -FuncUndefined Triggered when a user function is not defined. (Ron Aaron) - -The autocommands for the *Cmd events read or write the file instead of normal -file read/write. Use this in netrw.vim to be able to edit files on a remote -system. (Charles Campbell) - - -New Syntax files: ~ - -bdf BDF font definition (Nikolai Weibull) -catalog SGML catalog (Johannes Zellner) -debchangelog Debian Changelog (Wichert Akkerman) -debcontrol Debian Control (Wichert Akkerman) -dot dot (Markus Mottl) -dsl DSSSL syntax (Johannes Zellner) -eterm Eterm configuration (Nikolai Weibull) -indent Indent profile (Nikolai Weibull) -lftp LFTP (Nikolai Weibull) -lynx Lynx config (Doug Kearns) -mush mush sourcecode (Bek Oberin) -natural Natural (Marko Leipert) -pilrc Pal resource compiler (Brian Schau) -plm PL/M (Philippe Coulonges) -povini Povray configuration (David Necas) -ratpoison Ratpoison config/command (Doug Kearns) -readline readline config (Nikolai Weibull) -screen Screen RC (Nikolai Weibull) -specman Specman (Or Freund) -sqlforms SQL*Forms (Austin Ziegler) -terminfo terminfo (Nikolai Weibull) -tidy Tidy configuration (Doug Kearns) -wget Wget configuration (Doug Kearns) - - -Updated many syntax files to work both with Vim 5.7 and 6.0. - -Interface to Ruby. (Shugo Maeda) -Support dynamic loading of the Ruby interface on MS-Windows. (Muraoka Taro) -Support this for Mingw too. (Benoit Cerrina) - -Win32: Added possibility to load TCL dynamically. (Muraoka Taro) -Also for Borland 5.5. (Dan Sharp) - -Win32: When editing a file that is a shortcut (*.lnk file), edit the file it -links to. Unless 'binary' is set, then edit the shortcut file itself. -(Yasuhiro Matsumoto) - -The ":command" command now accepts a "-bar" argument. This allows the user -command to be followed by "| command". - -The preview window is now also used by these commands: -- |:pedit| edits the specified file in the preview window -- |:psearch| searches for a word in included files, like |:ijump|, and - displays the found text in the preview window. -Added the CTRL-W P command: go to preview window. - -MS-DOS and MS-Windows also read the system-wide vimrc file $VIM/vimrc. Mostly -for NT systems with multiple users. - -A double-click of the mouse on a character that has a "%" match selects from -that character to the match. Similar to "v%". - -"-S session.vim" argument: Source a script file when starting up. Convenient -way to start Vim with a session file. - -Added "--cmd {command}" Vim argument to execute a command before a vimrc file -is loaded. (Vince Negri) - -Added the "-M" Vim argument: reset 'modifiable' and 'write', thus disallow -making changes and writing files. - -Added runtime/delmenu.vim. Source this to remove all menus and prepare for -loading new menus. Useful when changing 'langmenu'. - -Perl script to filter Perl error messages to quickfix usable format. (Joerg -Ziefle) - -Added runtime/macros/less.vim: Vim script to simulate less, but with syntax -highlighting. - -MS-Windows install program: (Jon Merz) -- The Win32 program can now create shortcuts on the desktop and install Vim in - the Start menu. -- Possibly remove old "Edit with Vim" entries. -- The Vim executable is never moved or $PATH changed. A small batch file is - created in a directory in $PATH. Fewer choices to be made. -- Detect already installed Vim versions and offer to uninstall them first. - -Improved the MS-Windows uninstal program. It now also deletes the entries in -the Start menu, icons from the desktop and the created batch files. (Jon Merz) -Also made it possible to delete only some of these. Also unregister gvim for -OLE. - -Generate a self-installing Vim package for MS-Windows. This uses NSIS. (Jon -Merz et al.) - -Added ":filetype detect". Try detecting the filetype again. Helps when -writing a new shell script, after adding "#!/bin/csh". - -Added ":augroup! name" to delete an autocommand group. Needed for the -client-server "--remote-wait". - -Add the Vim version number to the viminfo file, useful for debugging. - -============================================================================== -IMPROVEMENTS *improvements-6* - -Added the 'n' flag in 'cpoptions': When omitted text of wrapped lines is not -put between line numbers from 'number' option. Makes it a lot easier to read -wrapped lines. - -When there is a format error in a tags file, the byte position is reported so -that the error can be located. - -"gf" works in Visual mode: Use the selected text as the file name. (Chase -Tingley) - -Allow ambiguous mappings. Thus "aa" and "aaa" can both be mapped, the longest -matching one is used. Especially useful for ":lmap" and 'keymap'. - -Encryption: Ask the key to be typed twice when crypting the first time. -Otherwise a typo might cause the text to be lost forever. (Chase Tingley) - -The window title now has "VIM" on the end. The file name comes first, useful -in the taskbar. A "+" is added when the file is modified. "=" is added for -a read-only file. "-" is added for a file with 'modifiable' off. - -In Visual mode, mention the size of the selected area in the 'showcmd' -position. - -Added the "b:changedtick" variable. Incremented at each change, also for -undo. Can be used to take action only if the buffer has been changed. - -In the replacement string of a ":s" command "\=" can be used to replace with -the result of an expression. From this expression the submatch() function can -be used to access submatches. - -When doing ":qall" and there is a change in a buffer that is being edited in -another window, jump to that window, instead of editing that buffer in the -current window. - -Added the "++enc=" and "++ff=" arguments to file read/write commands to force -using the given 'encoding' or 'fileformat'. And added the "v:cmdarg" -variable, to be used for FileReadCmd autocommands that read/write the file -themselves. - -When reading stdin, first read the text in binary mode and then re-read it -with automatic selection of 'fileformat' and 'fileencoding'. This avoids -problems with not being able to rewind the file (e.g., when a line near the -end of the file ends in LF instead of CR-LF). -When reading text from stdin and the buffer is empty, don't mark it changed. -Allows exiting without trouble. - -Added an ID to many error messages. This will make it easier to find help for -a message. - -Insert mode: -- "CTRL-G j" and "CTRL-G k" can be used to insert in another line in the same - column. Useful for editing a table. -- Added Thesaurus completion with CTRL-X CTRL-T. (Vince Negri) -- Added the 'thesaurus' option, to use instead of 'dictionary' for thesaurus - completion. Added the 's' flag in 'complete'. -- Made CTRL-X CTRL-L in Insert mode use the 'complete' option. It now also - scans other loaded buffers for matching lines. -- CTRL-R now also works in Insert mode while doing completion with CTRL-X or - CTRL-N. (Neil Bird) -- When doing Insert mode completion, when completion is finished check for a - match with words from 'cinkeys' or 'indentkeys'. - -Performance: -- Made display updating more efficient. Insert/delete lines may be used for - all changes, also for undo/redo. -- The display is not redrawn when there is typeahead in Insert mode. Speeds - up CTRL-R a lot. -- Improved speed of screen output for 32 bit DOS version. (Vince Negri) -- When dragging with the mouse, there is a lookahead to skip mouse codes when - there is another one next. Makes dragging with the mouse a lot faster. -- Also a memory usage improvement: When calling u_save with a single line, - don't save it if the line was recently saved for the same undo already. -- When using a script that appends one character at a time, the amount of - allocated memory was growing steadily. Also when 'undolevels' is -1. - Caused by the line saved for "U" never to be freed. Now free an undo block - when it becomes empty. -- GUI and Dos32: Use a vertical scroll region, to make scrolling in a - vertically split window faster. No need to redraw the whole window. -- When scrolling isn't possible with terminal codes (e.g., for a vertically - split window) redraw from ScreenLines[]. That should be faster than going - through the lines with win_line(), especially when using syntax - highlighting. -- The Syntax menu is now pre-generated by a separate script. Makes loading - the menu 70% faster. This can halve the startup time of gvim. -- When doing ":help tag", don't open help.txt first, jump directly to the help - tag. It's faster and avoids an extra message. -- Win32: When a file name doesn't end in ".lnk" don't try resolving a - shortcut, it takes quite a bit of time. -- Don't update the mouse pointer shape while there are typeahead characters. -- Change META[] from a string into an array, avoids using strchr() on it. -- Don't clear the command line when adding characters, avoids that screen_fill - is called but doesn't do anything. - -Robustness: -- Unix: Check for running out of stack space when executing a regexp. Avoids - a nasty crash. Only works when the system supports running the signal - function on another stack. -- Disallow ":source <dirname>". On unix it's possible to read a directory, - does not make sense to use it as Vim commands. - -Security: -- When reading from or writing to a temporary file, check that it isn't a - symbolic link. Gives some protection against symlink attacks. -- When creating a backup file copy or a swap file, check for it already - existing to avoid a symlink attack. (Colin Phipps) -- Evaluating options which are an expression is done in a |sandbox|. If the - option was set by a modeline, it cannot cause damage. -- Use a secure way to generate temp file names: Create a private directory for - temp files. Used for Unix, MS-DOS and OS/2. -- 'makeef' can be empty, which means that an internally generated file name is - used. The old default was "/tmp/file", which is a security risk. - Writing 'makeef' in the current directory fails in a read-only directory and - causes trouble when using ":grep" on all files. Made the default empty for - all systems, so that a temp file is used. -- The command from a tags file is executed in the sandbox for better security. -- The Ruby, Tcl and Python interfaces cannot be used from the sandbox. They - might do dangerous things. Perl is still possible, but limited to the Safe - environment. (Donnie Smith) - -Syntax highlighting: -- Optimized the speed by caching the state stack all over the file, not just - the part being displayed. Required for folding. -- Added ":syntax sync fromstart": Always parse from the start of the file. -- Added the "display" argument for syntax items: use the item only when - displaying the result. Can make parsing faster for text that isn't going to - be displayed. -- When using CTRL-L, the cached states are deleted, to force parsing the text - again. -- Use elfhash algorithm for table of keywords. This should give a better - distribution and speedup keyword lookup. (Campbell) -- Also allow the "lc" leading context for skip and end patterns. (Scott - Bigham) -- Syntax items can have the "extend" argument to undo the effect of a - "keepend" argument of an item it is contained in. Makes it possible to have - some contained items extend a region while others don't. -- ":syntax clear" now deletes the b:current_syntax variable. That's logical, - since no syntax is defined after this command. -- Added ":syntax enable": switch on syntax highlighting without changing the - colors. This allows specifying the colors in the .vimrc file without the - need for a mysyntaxfile. -- Added ":syntax reset": reset the colors to their defaults. -- Added the "contains=TOP" and "contains=CONTAINED" arguments. Makes it - possible to define a transparent item that doesn't contain itself. -- Added a "containedin" argument to syntax items. Allows adding a contained - item to an existing item (e.g., to highlight a name in a comment). - -Modeless selection: -- When in the command-line window, use modeless selection in the other - windows. Makes it possible to copy visible text to the command-line window. -- Support modeless selection on the cmdline in a terminal. Previously it was - only possible for the GUI. -- Make double-right-click in modeless selection select a whole word. Single - right click doesn't use the word selection started by a double-left-click. - Makes it work like in Visual mode. -- The modeless selection no longer has an implied automatic copy to the - clipboard. It now obeys the 'a' and 'A' flags in 'guioptions' or - "autoselect" and "autoselectml" in 'clipboard'. -- Added the CTRL-Y command in Cmdline-mode to copy the modeless selection to - the clipboard. Also works at the hit-enter prompt and the more prompt. - Removed the mappings in runtime/mswin.vim for CTRL-Y and CTRL-Z in - cmdline-mode to be able to use CTRL-Y in the new way. - -Reduced the amount of stack space used by regmatch() to allow it to handle -complicated patterns on a longer text. - -'isfname' now includes '%' and '#'. Makes "vim dir\#file" work for MS-DOS. - -Added keypad special keys <kEnter>, <k0> - <k9>. When not mapped they behave -like the ASCII equivalent. (Ivan Wellesz and Vince Negri) -Recognize a few more xterm keys: <C-Right>, <C-Left>, <C-End>, <C-Home> - -Also trigger the BufUnload event when Vim is going to exit. Perhaps a script -needs to do some cleaning up. - -Expand expression in backticks: `={expr}`. Can be used where backtick -expansion is done. (Vince Negri) - -GUI: -- Added 'L' and 'R' flags in 'guioptions': Add a left or right scrollbar only - when there is a vertically split window. -- X11: When a color can't be allocated, use the nearest match from the - colormap. This avoids that black is used for many things. (Monish Shah) - Also do this for the menu and scrollbar, to avoid that they become black. -- Win32 and X11: Added 'mouseshape' option: Adjust the mouse pointer shape to - the current mode. (Vince Negri) -- Added the 'linespace' option: Insert a pixel line between lines. (Nam) -- Allow modeless selection (without moving the cursor) by keeping CTRL and - SHIFT pressed. (Ivan Wellesz) -- Motif: added toolbar. (Gordon Prieur) Also added tooltips. -- Athena: added toolbar and tooltips. (David Harrison -- based on Gordon - Prieur's work) -- Made the 'toolbar' option work for Athena and Motif. Can now switch between - text and icons on the fly. (David Harrison) -- Support menu separator lines for Athena. (David Harrison) -- Athena: Adjust the arrow pixmap used in a pullright menu to the size of the - font. (David Harrison) -- Win32: Added "c" flag to 'guifont' to be able to specify the charset. (Artem - Khodush) -- When no --enable-xim argument is given, automatically enable it when a X GUI - is used. Required for dead key support (and multi-byte input). -- After a file selection dialog, check that the edited files were not changed - or deleted. The Win32 dialog allows deleting and renaming files. -- Motif and Athena: Added support for "editres". (Martin Dalecki) -- Motif and Athena: Added "menuFont" to be able to specify a font or fontset - for the menus. Can also be set with the "Menu" highlight group. Useful - when the locale is different from 'encoding'. (David Harrison) - When FONTSET_ALWAYS is defined, always use a fontset for the menus. Should - avoid trouble with changing from a font to a fontset. (David Harrison) -- Highlighting and font for the tooltips can be specified with the "Tooltip" - highlight group. (David Harrison) -- The Cmdline-mode menus can be used at the more-prompt. This mostly works - fine, because they start with a CTRL-C. The "Copy" menu works to copy the - modeless selection. Allows copying the output of ":set all" or ":intro" - without auto-selection. -- When starting the GUI when there is no terminal connected to stdout and - stderr, display error messages in a dialog. Previously they wouldn't be - displayed at all. -- Allow setting 'browsedir' to the name of a directory, to be used for the - file dialog. (Dan Sharp) -- b:browsefilter and g:browsefilter can be set to the filters used for the - file dialog. Supported for Win32 and Motif GUI. (Dan Sharp) - -X11: -- Support for the clipboard selection as register "+. When exiting or - suspending copy the selection to cut buffer 0. Should allow copy/paste with - more applications in a X11-standard way. (Neil Bird) -- Use the X clipboard in any terminal, not just in an xterm. - Added "exclude:" in 'clipboard': Specify a pattern to match against terminal - names for which no connection should be made to the X server. The default - currently work for FreeBSD and Linux consoles. -- Added a few messages for when 'verbose' is non-zero to show what happens - when trying to connect to the X server. Should help when trying to find out - why startup is slow. - -GTK GUI: (partly by Marcin Dalecki) -- With some fonts the characters can be taller than ascent + descent. E.g., - "-misc-fixed-*-*-*-*-18-*-*-*-*-*-iso10646-1". Add one to the character - cell height. -- Implement "no" value for 'winaltkeys': don't use Alt-Key as a menu shortcut, - when 'wak' changed after creating the menus. -- Setting 'wak' after the GUI started works. -- recycle text GC's to reduce communication. -- Adjust icon size to window manager. -- Cleanup in font handling. -- Replace XQueryColor with GDK calls. -- Gnome support. Detects Gnome in configure and uses different widgets. - Otherwise it's much like GTK. (Andy Kahn) - It is disabled by default, because it causes a few problems. -- Removed the special code to fork first and then start the GUI. Now use - _exit() instead of exit(), this works fine without special tricks. -- Dialogs sometimes appeared a bit far away. Position the dialogs inside - the gvim window. (Brent Verner) -- When dropping a file on Vim, remove extra slashes from the start of the - path. Also shorten the file name if possible. - -Motif: (Martin Dalecki) -- Made the dialog layout better. -- Added find and find/replace dialogs. -- For the menus, change "iso-8859" to "iso_8859", Linux appears to need this. -- Added icon to dialogs, like for GTK. -- Use XPM bitmaps for the icon when possible. Use the Solaris XpmP.h include - file when it's available. -- Change the shadow of the toolbar items to get a visual feedback of it being - pressed on non-LessTiff. -- Use gadgets instead of windows for some items for speed. - -Command line completion: -- Complete environment variable names. (Mike Steed) -- For ":command", added a few completion methods: "mapping", "function", - "expression" and "environment". -- When a function doesn't take arguments, let completion add () instead of (. - -For MS-DOS, MS-Windows and OS/2: Expand %VAR% environment variables like $VAR. -(Walter Briscoe) - -Redirect messages to the clipboard ":redir @*" and to the unnamed register -":redir @"". (Wall) - -":let @/ = ''" clears the search pattern, instead of setting it to an empty -string. - -Expression evaluation: -- "? :" can be used like in C. -- col("$") returns the length of the cursor line plus one. (Stephen P. Wall) -- Optional extra argument for match(), matchend() and matchstr(): Offset to - start looking for a match. -- Made third argument to strpart() optional. (Paul Moore, Zdenek Sekera) -- exists() can also be used to check for Ex commands and defined autocommands. -- Added extra argument to input(): Default text. -- Also set "v:errmsg" when using ":silent! cmd". -- Added the v:prevcount variable: v:count for the previous command. -- Added "v:progname", name with which Vim was started. (Vince Negri) -- In the verbose message about returning from a function, also show the return - value. - -Cscope: -- Added the cscope_connection() function. (Andy Kahn) -- ":cscope kill -1" kills all cscope connections. (Andy Kahn) -- Added the 'cscopepathcomp' option. (Scott Hauck) -- Added ":scscope" command, split window and execute Cscope command. (Jason - Duell) - -VMS: -- Command line arguments are always uppercase. Interpret a "-X" argument as - "-x" and "-/X" as "-X". -- Set 'makeprg' and 'grepprg' to meaningful defaults. (Zoltan Arpadffy) -- Use the X-clipboard feature and the X command server. (Zoltan Arpadffy) - -Macintosh: (Dany St-Amant) -- Allow a tags file to have CR, CR-LF or LF line separator. (Axel Kielhorn) -- Carbonized (while keeping non Carbon code) - (Some work "stolen" from Ammon Skidmore) -- Improved the menu item index handling (should be faster) -- Runtime commands now handle / in file name (MacOS 9 version) -- Added ":winpos" support. -- Support using "~" in file names for home directory. - -Options: -- When using set += or ^= , check for items used twice. Duplicates are - removed. (Vince Negri) -- When setting an option that is a list of flags, remove duplicate flags. -- If possible, use getrlimit() to set 'maxmemtot' and 'maxmem'. (Pina) -- Added "alpha" to 'nrformats': increment or decrement an alphabetic character - with CTRL-A and CTRL-X. -- ":set opt&vi" sets an option to its Vi default, ":set opt&vim" to its Vim - default. Useful to set 'cpo' to its Vim default without knowing what flags - that includes. -- 'scrolloff' now also applies to a long, wrapped line that doesn't fit in the - window. -- Added more option settings to the default menus. -- Updated the option window with new options. Made it a bit easier to read. - -Internal changes: -- Split line pointers in text part and attributes part. Allows for future - change to make attribute more than one byte. -- Provide a qsort() function for systems that don't have it. -- Changed the big switch for Normal mode commands into a table. This cleans - up the code considerably and avoids trouble for some optimizing compilers. -- Assigned a negative value to special keys, to avoid them being mixed up with - Unicode characters. -- Global variables expand_context and expand_pattern were not supposed to be - global. Pass them to ExpandOne() and all functions called by it. -- No longer use the global reg_ic flag. It caused trouble and in a few places - it was not set. -- Removed the use of the stuff buffer for "*", "K", CTRL-], etc. Avoids - problem with autocommands. -- Moved some code from ex_docmd.c to ex_cmds2.c. The file was getting too - big. Also moved some code from screen.c to move.c. -- Don't include the CRC table for encryption, generate it. Saves quite a bit - of space in the source code. (Matthias Kramm) -- Renamed multibyte.c to mbyte.c to avoid a problem with 8.3 filesystems. -- Removed the GTK implementation of ":findhelp", it now uses the - ToolBar.FindHelp menu entry. -- Renamed mch_windexit() to mch_exit(), mch_init() to mch_early_init() and - mch_shellinit() to mch_init(). - -Highlighting: -- In a ":highlight" listing, show "xxx" with the highlight color. -- Added support for xterm with 88 or 256 colors. The right color numbers will - be used for the name used in a ":highlight" command. (Steve Wall) -- Added "default" argument for ":highlight". When included, the command is - ignored if highlighting for the group was already defined. - All syntax files now use ":hi default ..." to allow the user to specify - colors in his vimrc file. Also, the "if did_xxx_syntax_inits" is not needed - anymore. This greatly simplifies using non-default colors for a specific - language. -- Adjusted colortest.vim: Included colors on normal background and reduced the - size by using a while loop. (Rafael Garcia-Suarez) -- Added the "DarkYellow" color name. Just to make the list of standard colors - consistent, it's not really a nice color to use. - -When an xterm is in 8-bit mode this is detected by the code returned for -|t_RV|. All key codes are automatically converted to their 8-bit versions. - -The OPT_TCAP_QUERY in xterm patch level 141 and later is used to obtain the -actual key codes used and the number of colors for t_Co. Only when |t_RV| is -also used. - -":browse set" now also works in the console mode. ":browse edit" will give an -error message. - -":bdelete" and ":bunload" only report the number of deleted/unloaded buffers -when more than 'report'. The message was annoying when deleting a buffer in a -script. - -Jump list: -- The number of marks kept in the jumplist has been increased from 50 to 100. -- The jumplist is now stored in the viminfo file. CTRL-O can be used to jump - to positions from a previous edit session. -- When doing ":split" copy the jumplist to the new window. - -Also set the '[ and '] marks for the "~" and "r" commands. These marks are -now always set when making a change with a Normal mode command. - -Python interface: Allow setting the width of a vertically split window. (John -Cook) - -Added "=word" and "=~word" to 'cinkeys' (also used in 'indentkeys'). - -Added "j1" argument in 'cinoptions': indent {} inside () for Java. (Johannes -Zellner) -Added the "l" flag in 'cinoptions'. (Anduin Withers) -Added 'C', 'U', 'w' and 'm' flags to 'cinoptions'. (Servatius Brandt) - -When doing ":wall" or ":wqall" and a modified buffer doesn't have a name, -mention its buffer number in the error message. - -":function Name" lists the function with line numbers. Makes it easier to -find out where an error happened. - -In non-blockwise Visual mode, "r" replaces all selected characters with the -typed one, like in blockwise Visual mode. - -When editing the last file in the argument list in any way, allow exiting. -Previously this was only possible when getting to that file with ":next" or -":last". - -Added the '1' flag to 'formatoptions'. (Vit Stradal) -Added 'n' flag in 'formatoptions': format a numbered list. - -Swap file: -- When a swap file already exists, and the user selects "Delete" at the - ATTENTION prompt, use the same ".swp" swapfile, to avoid creating a ".swo" - file which won't always be found. -- When giving the ATTENTION message and the date of the file is newer than the - date of swap file, give a warning about this. -- Made the info for an existing swap file a bit shorter, so that it still fits - on a 24 line screen. -- It was possible to make a symlink with the name of a swap file, linking to a - file that doesn't exist. Vim would then silently use another file (if open - with O_EXCL refuses a symlink). Now check for a symlink to exist. Also do - another check for an existing swap file just before creating it to catch a - symlink attack. - -The g CTRL-G command also works in Visual mode and counts the number of words. -(Chase Tingley) - -Give an error message when using 'shell' and it's empty. - -Added the possibility to include "%s" in 'shellpipe'. - -Added "uhex" value for 'display': show non-printable characters as <xx>. -Show unprintable characters with NonText highlighting, also in the command -line. - -When asked to display the value of a hidden option, tell it's not supported. - -Win32: -- When dropping a shortcut on gvim (.lnk file) edit the target, not the - shortcut itself. (Yasuhiro Matsumoto) -- Added C versions of the OpenWithVim and SendToVim programs. (Walter Briscoe) -- When 'shell' is "cmd" or "cmd.exe", set 'shellredir' to redirect stderr too. - Also check for the Unix shell names. -- When $HOMEDRIVE and $HOMEPATH are defined, use them to define $HOME. (Craig - Barkhouse) - -Win32 console version: -- Includes the user and system name in the ":version" message, when available. - It generates a pathdef.c file for this. (Jon Miner) -- Set the window icon to Vim's icon (only for Windows 2000). While executing - a shell command, modify the window title to show this. When exiting, - restore the cursor position too. (Craig Barkhouse) -- The Win32 console version can be compiled with OLE support. It can only - function as a client, not as an OLE server. - -Errorformat: -- Let "%p" in 'errorformat' (column of error indicated by a row of characters) - also accept a line of dots. -- Added "%v" item in 'errorformat': Virtual column number. (Dan Sharp) -- Added a default 'errorformat' value for VMS. (Jim Bush) - -The "p" command can now be used in Visual mode. It overwrites the selected -text with the contents of a register. - -Highlight the <> items in the intro message to make clear they are special. - -When using the "c" flag for ":substitute", allow typing "l" for replacing this -item and then stop: "last". - -When printing a verbose message about sourcing another file, print the line -number. - -When resizing the Vim window, don't use 'equalalways'. Avoids that making the -Vim window smaller makes split windows bigger. And it's what the docs say. - -When typing CTRL-D in Insert mode, just after an autoindent, then hitting CR -kept the remaining white space. Now made it work like BS: delete the -autoindent to avoid a blank non-empty line results. - -Added a GetHwnd() call to the OLE interface. (Vince Negri) - -Made ":normal" work in an event handler. Useful when dropping a file on Vim -and for CursorHold autocommands. - -For the MS-Windows version, don't change to the directory of the file when a -slash is used instead of a backslash. Explorer should always use a backslash, -the user can use a slash when typing the command. - -Timestamps: -- When a buffer was changed outside of Vim and regaining focus, give a dialog - to allow the user to reload the file. Now also for other GUIs than - MS-Windows. And also used in the console, when compiled with dialog - support. -- Inspect the file contents to find out if it really changed, ignore - situations where only the time stamp changed (e.g., checking the file out - from CVS). -- When checking the timestamp, first check if the file size changed, to avoid - a file compare then. Makes it quicker for large (log) files that are - appended to. -- Don't give a warning for a changed or deleted file when 'buftype' is set. -- No longer warn for a changed directory. This avoids that the file explorer - produces warnings. -- Checking timestamps is only done for buffers that are not hidden. These - will be checked when they become unhidden. -- When checking for a file being changed outside of Vim, also check if the - file permissions changed. When the file contents didn't change but the - permissions did, give a warning. -- Avoid checking too often, otherwise the dialog keeps popping up for a log - file that steadily grows. - -Mapping <M-A> when 'encoding' is "latin1" and then setting 'encoding' to -"utf-8" causes the first byte of a multi-byte to be mapped. Can cause very -hard to find problems. Disallow mapping part of a multi-byte character. - -For ":python" and ":tcl" accept an in-line script. (Johannes Zellner) -Also for ":ruby" and ":perl". (Benoit Cerrina) - -Made ":syn include" use 'runtimepath' when the file name is not a full path. - -When 'switchbuf' contains "split" and the current window is empty, don't split -the window. - -Unix: Catch SIGPWR to preserve files when the power is about to go down. - -Sniff interface: (Anton Leherbauer) -- fixed windows code, esp. the event handling stuff -- adaptations for sniff 4.x ($SNIFF_DIR4) -- support for adding sniff requests at runtime - -Support the notation <A-x> as an alias for <M-x>. This logical, since the Alt -key is used. - -":find" accepts a count, which means that the count'th match in 'path' is -used. - -":ls" and ":buffers" output shows modified/readonly/modifiable flag. When a -buffer is active show "a" instead of nothing. When a buffer isn't loaded -show nothing instead of "-". - -Unix install: -- When installing the tools, set absolute paths in tools scripts efm_perl.pl - and mve.awk. Avoids that the user has to edit these files. -- Install Icons for KDE when the directories exist and the icons do not exist - yet. - -Added has("win95"), to be able to distinguish between MS-Windows 95/98/ME and -NT/2000/XP in a Vim script. - -When a ":cd" command was typed, echo the new current directory. (Dan Sharp) - -When using ":winpos" before the GUI window has been opened, remember the -values until it is opened. - -In the ":version" output, add "/dyn" for features that are dynamically loaded. -This indicates the feature may not always work. - -On Windows NT it is possible that a directory is read-only, but a file can be -deleted. When making a backup by renaming the file and 'backupdir' doesn't -use the current directory, this causes the original file to be deleted, -without the possibility to create a new file. Give an extra error message -then to warn to user about this. - -Made CTRL-R CTRL-O at the command line work like CTRL-R CTRL-R, so that it's -consistent with Insert mode. - -============================================================================== -COMPILE TIME CHANGES *compile-changes-6* - -All generated files have been moved out of the "src" directory. This makes it -easy to see which files are not edited by hand. The files generated by -configure are now in the "src/auto" directory. For Unix, compiled object -files go in the objects directory. - -The source archive was over the 1.4M floppy limit. The archives are now split -up into two runtime and two source archives. Also provide a bzip2 compressed -archive that contains all the sources and runtime files. - -Added "reconfig" as a target for make. Useful when changing some of the -arguments that require flushing the cache, such as switching from GTK to -Motif. Adjusted the meaning of GUI_INC_LOC and GUI_LIB_LOC to be consistent -over different GUIs. - -Added src/README.txt to give an overview of the main parts of the source code. - -The Unix Makefile now fully supports using $(DESTDIR) to install to a specific -location. Replaces the manual setting of *ENDLOC variables. - -Added the possibility for a maintainer of a binary version to include his -e-mail address with the --with-compiledby configure argument. - -Included features are now grouped in "tiny", "small", "normal", "big" and -"huge". This replaces "min-features" and "max-features". Using "tiny" -disables multiple windows for a really small Vim. - -For the tiny version or when FEAT_WINDOWS is not defined: Firstwin and lastwin -are equal to curwin and don't use w_next and w_prev. - -Added the +listcmds feature. Can be used to compile without the Vim commands -that manipulate the buffer list and argument list (the buffer list itself is -still there, can't do without it). - -Added the +vreplace feature. It is disabled in the "small" version to avoid -that the 16 bit DOS version runs out of memory. - -Removed GTK+ support for versions older than 1.1.16. - -The configure checks for using PTYs have been improved. Code taken from a -recent version of screen. - -Added configure options to install Vim, Ex and View under another name (e.g., -vim6, ex6 and view6). - -Added "--with-global-runtime" configure argument. Allows specifying the -global directory used in the 'runtimepath' default. - -Made enabling the SNiFF+ interface possible with a configure argument. - -Configure now always checks /usr/local/lib for libraries and -/usr/local/include for include files. Helps finding the stuff for iconv() and -gettext(). - -Moved the command line history stuff into the +cmdline_hist feature, to -exclude the command line history from the tiny version. - -MS-Windows: Moved common functions from Win16 and Win32 to os_mswin.c. Avoids -having to change two files for one problem. (Vince Negri) - -Moved common code from gui_w16.c and gui_w32.c to gui_w48.c (Vince Negri) - -The jumplist is now a separate feature. It is disabled for the "small" -version (16 bit MS-DOS). - -Renamed all types ending in _t to end in _T. Avoids potential problems with -system types. - -Added a configure check for X11 header files that implicitly define the return -type to int. (Steve Wall) - -"make doslang" in the top directory makes an archive with the menu and .mo -files for Windows. This uses the files generated on Unix, these should work -on MS-Windows as well. - -Merged a large part of os_vms.c with os_unix.c. The code was duplicated in -the past which made maintenance more work. (Zoltan Arpadffy) - -Updated the Borland C version 5 Makefile: (Dan Sharp) -- Fixed the Perl build -- Added python and tcl builds -- Added dynamic perl and dynamic python builds -- Added uninstal.exe build -- Use "yes" and "no" for the options, like in Make_mvc.mak. - -Win32: Merged Make_gvc.mak and Make_ovc.mak into one file: Make_ivc.mak. It's -much smaller, many unnecessary text has been removed. (Walter Briscoe) -Added Make_dvc.mak to be able to debug exe generated with Make_mvc.mak in -MS-Devstudio. (Walter Briscoe) - -MS-Windows: The big gvim.exe, which includes OLE, now also includes -dynamically loaded Tcl, Perl and Python. This uses ActivePerl 5.6.1, -ActivePython 2.1.1 and ActiveTCL 8.3.3 - -Added AC_EXEEXT to configure.in, to check if the executable needs ".exe" for -Cygwin or MingW. Renamed SUFFIX to EXEEXT in Makefile. - -Win32: Load comdlg32.dll delayed for faster startup. Only when using VC 6. -(Vipin Aravind) - -Win32: When compiling with Borland, allow using IME. (Yasuhiro Matsumoto) - -Win32: Added Makefile for Borland 5 to compile gvimext.dll. (Yasuhiro -Matsumoto) - -============================================================================== -BUG FIXES *bug-fixes-6* - -When checking the command name for "gvim", "ex", etc. ignore case. Required -for systems where case is ignored in command names. - -Search pattern "[a-c-e]" also matched a 'd' and didn't match a '-'. - -When double-clicking in another window, wasn't recognized as double click, -because topline is different. Added set_mouse_topline(). - -The BROKEN_LOCALE check was broken. (Marcin Dalecki) - -When "t_Co" is set, the default colors remain the same, thus wrong. Reset the -colors after changing "t_Co". (Steve Wall) - -When exiting with ":wqall" the messages about writing files could overwrite -each other and be lost forever. - -When starting Vim with an extremely long file name (around 1024 characters) it -would crash. Added a few checks to avoid buffer overflows. - -CTRL-E could get stuck in a file with very long lines. - -":au syntax<Tab>" expanded event names while it should expand groups starting -with "syntax". - -When expanding a file name caused an error (e.g., for <amatch>) it was -produced even when inside an "if 0". - -'cindent' formatted C comments differently from what the 'comments' option -specified. (Steve Wall) - -Default for 'grepprg' didn't include the file name when only grepping in one -file. Now /dev/null has been added for Unix. - -Opening the option window twice caused trouble. Now the cursor goes to the -existing option window. - -":sview" and ":view" didn't set 'readonly' for an existing buffer. Now do set -'readonly', unless the buffer is also edited in another window. - -GTK GUI: When 'guioptions' excluded 'g', the more prompt caused the toolbar -and menubar to disappear and resize the window (which clears the text). -Now always grey-out the toplevel menus to avoid that the menubar changes size -or disappears. - -When re-using the current buffer for a new buffer, buffer-local variables were -not deleted. - -GUI: when 'scrolloff' is 0 dragging the mouse above the window didn't cause a -down scroll. Now pass on a mouse event with mouse_row set to -1. - -Win32: Console version didn't work on telnet, because of switching between two -console screens. Now use one console screen and save/restore the contents -when needed. (Craig Barkhouse) - -When reading a file the magic number for encryption was included in the file -length. (Antonio Colombo) - -The quickfix window contained leading whitespace and NULs for multi-line -messages. (David Harrison) - -When using cscope, redundant tags were removed. This caused a numbering -problem, because they were all listed. Don't remove redundant cscope tags. -(David Bustos). - -Cscope: Test for which matches are in the current buffer sometimes failed, -causing a jump to another match than selected. (David Bustos) - -Win32: Buffer overflow when adding a charset name in a font. - -'titlestring' and 'iconstring' were evaluating an expression in the current -context, which could be a user function, which is a problem for local -variables vs global variables. - -Win32 GUI: Mapping <M-F> didn't work. Now handle SHIFT and CTRL in -_OnSysChar(). - -Win32 GUI: (on no file), :vs<CR>:q<CR> left a trail of pixels down the middle. -Could also happen for the ruler. screen_puts() didn't clear the right char in -ScreenLines[] for the bold trick. - -Win32: ":%!sort|uniq" didn't work, because the input file name touches the -"|". Insert a space before the "|". - -OS/2: Expanding wildcards included non-existing files. Caused ":runtime" to -fail, which caused syntax highlighting to fail. - -Pasting a register containing CTRL-R on the command line could cause an -endless loop that can't be interrupted. Now it can be stopped with CTRL-C. - -When 'verbose' is set, a message for file read/write could overwrite the -previous message. -When 'verbose' is set, the header from ":select" was put after the last -message. Now start a new line. - -The hit-enter prompt reacted to the response of the t_RV string, causing -messages at startup to disappear. - -When t_Co was set to 1, colors were still used. Now only use color when t_Co -> 1. - -Listing functions with ":function" didn't quit when 'q' or ':' was typed at -the more prompt. - -Use mkstemp() instead of mktemp() when it's available, avoids a warning for -linking on FreeBSD. - -When doing Insert mode completion it's possible that b_sfname is NULL. Don't -give it to printf() for the "Scanning" message. - -":set runtimepath-=$VIMRUNTIME" didn't work, because expansion of wildcards -was done after trying to remove the string. Now for ":set opt+=val" and ":set -opt-=val" the expansion of wildcards is done before adding or removing "val". - -Using CTRL-V with the "r" command with a blockwise Visual selection inserted a -CTRL-V instead of getting a special character. - -Unix: Changed the order of libraries: Put -lXdmcp after -lX11 and -lSM -lICE -after -lXdmcp. Should fix link problem on HP-UX 10.20. - -Don't remove the last "-lm" from the link line. Vim may link but fail later -when the GUI starts. - -When the shell returns with an error when trying to expand wildcards, do -include the pattern when the "EW_NOTFOUND" flag was set. -When expanding wildcards with the shell fails, give a clear error message -instead of just "1 returned". - -Selecting a Visual block, with the start partly on a Tab, deleting it leaves -the cursor too far to the left. Causes "s" to work in the wrong position. - -Pound sign in normal.c caused trouble on some compilers. Use 0xA3 instead. - -Warning for changing a read-only file wasn't given when 'insertmode' was set. - -Win32: When 'shellxquote' is set to a double quote (e.g., using csh), ":!start -notepad file" doesn't work. Remove the double quotes added by 'shellxquote' -when using ":!start". (Pavol Juhas) - -The "<f-args>" argument of ":command" didn't accept Tabs for white space. -Also, don't add an empty argument when there are trailing blanks. - -":e test\\je" edited "test\je", but ":next test\\je" edited "testje". -Backslashes were removed one time too many for ":next". - -VMS: "gf" didn't work properly. Use vms_fixfilename() to translate the file -name. (Zoltan Arpadffy) - -After ":hi Normal ctermbg=black ctermfg=white" and suspending Vim not all -characters are redrawn with the right background. - -When doing "make test" without +eval or +windows feature, many tests failed. -Now have test1 generate a script to copy the correct output, so that a test -that doesn't work is skipped. - -On FreeBSD the Perl interface added "-lc" to the link command and Python added -"-pthread". These two don't work together, because the libc_r library should -be used. Removed "-lc" from Perl, it should not be needed. -Also: Add "-pthread" to $LIBS, so that the checks for functions is done with -libc_r. Sigaltstack() appears to be missing from libc_r. - -The Syntax sub-menus were getting too long, reorganized them and added another -level for some languages. - -Visual block "r"eplace didn't work well when a Tab is partly included. -(Matthias Kramm) - -When yanking a Visual block, where some lines end halfway the block, putting -the text somewhere else doesn't insert a block. Padd with spaces for missing -characters. Added "y_width" to struct yankreg. (Matthias Kramm) - -If a substitute string has a multibyte character after a backslash only the -first byte of it was skipped. (Muraoka Taro) - -Win32: Numeric keypad keys were missing from the builtin termcap entry. - -When a file was read-only ":wa!" didn't force it to be written. (Vince Negri) - -Amiga: A file name starting with a colon was considered absolute but it isn't. -Amiga: ":pwd" added a slash when in the root of a drive. - -Don't let 'ttymouse' default to "dec" when compiled with dec mouse support. -It breaks the gpm mouse (Linux console). - -The prototypes for the Perl interface didn't work for threaded Perl. Added a -sed command to remove the prototypes from proto/if_perl.pro and added them -manually to if_perl.xs. - -When ":w!" resets the 'readonly' option the title and status lines were not -updated. - -":args" showed the current file when the argument list was empty. Made this -work like Vi: display nothing. - -"99:<C-U>echo v:count" echoed "99" in Normal mode, but 0 in Visual mode. -Don't set v:count when executing a stuffed command. - -Amiga: Got a requester for "home:" because it's in the default runtime path. -Don't bring up a requester when searching for a file in 'path', sourcing the -.vimrc file or using ":runtime". - -Win16 and Win32: Considered a file "\path\file" absolute. Can cause the same -file to appear as two different buffers. - -Win32: Renaming a file to an empty string crashed Vim. Happened when using -explorer.vim and hitting ESC at the rename prompt. - -Win32: strftime() crashed when called with a "-1" value for the time. - -Win32 with Borland compiler: mch_FullName() didn't work, caused tag file not -to be found. - -Cscope sometimes jumped to the wrong tag. (David Bustos) - -OS/2: Could not find the tags file. mch_expand_wildcards() added another -slash to a directory name. - -When using ">>" the `] mark was not in the last column. - -When Vim was compiled without menu support, filetype.vim was still trying to -source the menu.vim script. (Rafael Garcia-Suarez) - -":ptag" added an item to the tag stack. - -Win32 IME: "gr" didn't use IME mode. - -In the "vim --help" message the term "options" was used for arguments. That's -confusing, call them "arguments". - -When there are two windows, and a BufUnload autocommand for closing window #1 -closed window #2, Vim would crash. - -When there is a preview window and only one other window, ":q" wouldn't exit. - -In Insert mode, when cancelling a digraph with ESC, the '?' wasn't removed. - -On Unix glob(".*") returned "." and "..", on Windows it didn't. On Windows -glob("*") also returned files starting with a dot. Made this work like Unix -on all systems. - -Win32: Removed old code to open a console. Vimrun is now used and works fine. - -Compute the room needed by the intro message accurately, so that it also fits -on a 25 line console. (Craig Barkhouse) - -":ptnext" was broken. Now remember the last tag used in the preview window -separately from the tagstack. - -Didn't check for "-display" being the last argument. (Wichert Akkerman) - -GTK GUI: When starting "gvim" under some conditions there would be an X error. -Don't replace the error handler when creating the xterm clipboard. (Wichert -Akkerman) - -Adding a space after a help tag caused the tag not to be found. E.g., ":he -autoindent ". - -Was trying to expand a URL into a full path name. On Windows this resulted in -the current directory to be prepended to the URL. Added vim_isAbsName() and -vim_FullName() to avoid that various machine specific functions do it -differently. - -":n *.c" ":cd .." ":n" didn't use the original directory of the file. Vi only -does it for the current file (looks like a bug). Now remember the buffer used -for the entry in the argument list and use it's name (adjusted when doing -":cd"), unless it's deleted. - -When inserting a special key as its name ("<F8>" as four characters) after -moving around in Insert mode, undo didn't work properly. - -Motif GUI: When using the right mouse button, for some people gvim froze for -a couple of seconds (Motif 1.2?). This doesn't happen when there is no Popup -menu. Solved by only creating a popup menu when 'mousemodel' is "popup" or -"popup_setpos". (David Harrison) - -Motif: When adding many menu items, the "Help" menu disappeared but the -menubar didn't wrap. Now manually set the menubar height. - -When using <BS> in Insert mode to remove a line break, or using "J" to join -lines, the cursor could end up halfway a multi-byte character. (Muraoka Taro) - -Removed defining SVR4 in configure. It causes problems for some X header -files and doesn't appear to be used anywhere. - -When 'wildignore' is used, 'ignorecase' for a tag match was not working. - -When 'wildignore' contains "*~" it was impossible to edit a file ending in a -"~". Now don't recognize a file ending in "~" as containing wildcards. - -Disabled the mouse code for OS/2. It was not really used. - -":mksession" always used the full path name for a buffer, also when the short -name could be used. -":mkvimrc" and ":mksession" didn't save 'wildchar' and 'pastetoggle' in such a -way that they would be restored. Now use the key name if possible, this is -portable. - -After recovering a file and abandoning it, an ":edit" command didn't give the -ATTENTION prompt again. Would be useful to be able to delete the file in an -easy way. Reset the BF_RECOVERED flag when unloading the buffer. - -histdel() could match or ignore case, depending on what happened before it. -Now always match case. - -When a window size was specified when splitting a window, it would still get -the size from 'winheight' or 'winwidth' if it's larger. - -When using "append" or "insert" inside a function definition, a line starting -with "function" or "endfunction" caused confusion. Now recognize the commands -and skip lines until a ".". - -At the end of any function or sourced file need_wait_return could be reset, -causing messages to disappear when redrawing. - -When in a while loop the line number for error messages stayed fixed. Now the -line number is remembered in the while loop. - -"cd c:/" didn't work on MS-DOS. mch_isdir() removed a trailing slash. - -MS-Windows: getftime() didn't work when a directory had a trailing slash or -backslash. Didn't show the time in the explorer because of this. - -When doing wildcard completion, a directory "a/" sorted after "a-b". Now -recognize path separators when sorting files. - -Non-Unix systems: When editing "c:/dir/../file" and "c:/file" they were -created as different buffers, although it's the same file. Expand to a full -file name also when an absolute name contains "..". - -"g&" didn't repeat the last substitute properly. - -When 'clipboard' was set to "unnamed", a "Y" command would not write to "0. -Now make a copy of register 0 to the clipboard register. - -When the search pattern matches in many ways, it could not always be -interrupted with a CTRL-C. And CTRL-C would have to be hit once for every -line when 'hlsearch' is on. -When 'incsearch' is on and interrupting the search for a match, don't abandon -the command line. - -When turning a directory name into a full path, e.g., with fnamemodify(), -sometimes a slash was added. Make this consistent: Don't add a slash. - -When a file name contains a "!", using it in a shell command will cause -trouble: ":!cat %". Escape the "!" to avoid that. Escape it another time -when 'shell' contains "sh". - -Completing a file name that has a tail that starts with a "~" didn't work: -":e view/~<Tab>". - -Using a ":command" argument that contains < and > but not for a special -argument was not skipped properly. - -The DOS install program: On Win2000 the check for a vim.exe or gvim.exe in -$PATH didn't work, it always found it in the current directory. -Rename the vim.exe in the current dir to avoid this. (Walter Briscoe) - -In the MS-DOS/Windows install program, use %VIM% instead of an absolute path, -so that moving Vim requires only one change in the batch file. - -Mac: mch_FullName() changed the "fname" argument and didn't always initialize -the buffer. - -MS-DOS: mch_FullName() didn't fix forward/backward slashes in an absolute file -name. - -"echo expand("%:p:h")" with an empty file name removed one directory name on -MS-DOS. For Unix, when the file name is a directory, the directory name was -removed. Now make it consistent: "%:p" adds a path separator for all systems, -but no path separator is added in other situations. - -Unix: When checking for a CTRL-C (could happen any time) and there is an X -event (e.g., clipboard updated) and there is typeahead, Vim would hang until a -character was typed. - -MS-DOS, MS-Windows and Amiga: expanding "$ENV/foo" when $ENV ends in a colon, -had the slash removed. - -":he \^=" gave an error for using \_. ":he ^=" didn't find tag :set^=. Even -"he :set^=" didn't find it. - -A tags file name "D:/tags" was used as file "tags" in "D:". That doesn't work -when the current path for D: isn't the root of the drive. - -Removed calls to XtInitializeWidgetClass(), they shouldn't be necessary. - -When using a dtterm or various other color terminals, and the Normal group has -been set to use a different background color, the background wouldn't always -be displayed with that color. Added check for "ut" termcap entry: If it's -missing, clearing the screen won't give us the current background color. Need -to draw each character instead. Vim now also works when the "cl" (clear -screen) termcap entry is missing. - -When repeating a "/" search command with a line offset, the "n" did use the -offset but didn't make the motion linewise. Made "d/pat/+2" and "dn" do the -same. - -Win32: Trying to use ":tearoff" for a menu that doesn't exist caused a crash. - -OpenPTY() didn't work on Sequent. Add a configure check for getpseudotty(). - -C-indenting: Indented a line starting with ")" with the matching "(", but not -a line starting with "x)" looks strange. Also compute the indent for aligning -with items inside the () and use the lowest indent. - -MS-DOS and Windows: ":n *.vim" also matched files ending in "~". -Moved mch_expandpath() from os_win16.c and os_msdos.c to misc1.c, they are -equal. - -Macintosh: (Dany St-Amant) -- In Vi-compatible mode didn't read files with CR line separators. -- Fixed a bug in the handling of Activate/Deactivate Event -- Fixed a bug in gui_mch_dialog (using wrong pointer) - -Multibyte GDK XIM: While composing a multibyte-word, if user presses a -mouse button, then the word is removed. It should remain and composing end. -(Sung-Hyun Nam) - -MS-DOS, MS-Windows and OS/2: When reading from stdin, automatic CR-LF -conversion by the C library got in the way of detecting a "dos" 'fileformat'. - -When 'smartcase' is set, patterns with "\S" would also make 'ignorecase' -reset. - -When clicking the mouse in a column larger than 222, it moved to the first -column. Can't encode a larger number in a character. Now limit the number to -222, don't jump back to the first column. - -GUI: In some versions CSI would cause trouble, either when typed directly or -when part of a multi-byte sequence. - -When using multibyte characters in a ":normal" command, a trailing byte that -is CSI or K_SPECIAL caused problems. - -Wildmenu didn't handle multi-byte characters. - -":sleep 10" could not be interrupted on Windows, while "gs" could. Made them -both work the same. - -Unix: When waiting for a character is interrupted by an X-windows event (e.g., -to obtain the contents of the selection), the wait time would not be honored. -A message could be overwritten quickly. Now compute the remaining waiting -time. - -Windows: Completing "\\share\c$\S" inserted a backslash before the $ and then -the name is invalid. Don't insert the backslash. - -When doing an auto-write before ":make", IObuff was overwritten and the wrong -text displayed later. - -On the Mac the directories "c:/tmp" and "c:/temp" were used in the defaults -for 'backupdir' and 'directory', they don't exist. - -The check for a new file not to be on an MS-DOS filesystem created the file -temporarily, which can be slow. Don't do this if there is another check for -the swap file being on an MS-DOS filesystem. - -Don't give the "Changing a readonly file" warning when reading from stdin. - -When using the "Save As" menu entry and not entering a file name, would get an -error message for the trailing ":edit #". Now only do that when the -alternate file name was changed. - -When Vim owns the X11 selection and is being suspended, an application that -tries to use the selection hangs. When Vim continues it could no longer -obtain the selection. Now give up the selection when suspending. - -option.h and globals.h were included in some files, while they were already -included in vim.h. Moved the definition of EXTERN to vim.h to avoid doing it -twice. - -When repeating an operator that used a search pattern and the search pattern -contained characters that have a special meaning on the cmdline (e.g., CTRL-U) -it didn't work. - -Fixed various problems with using K_SPECIAL (0x80) and CSI (0x9b) as a byte in -a (multibyte) character. For example, the "r" command could not be repeated. - -The DOS/Windows install program didn't always work from a directory with a -long filename, because $VIM and the executable name would not have the same -path. - -Multi-byte: -- Using an any-but character range [^x] in a regexp didn't work for UTF-8. - (Muraoka Taro) -- When backspacing over inserted characters in Replace mode multi-byte - characters were not handled correctly. (Muraoka Taro) -- Search commands "#" and "*" didn't work with multibyte characters. (Muraoka - Taro) -- Word completion in Insert mode didn't work with multibyte characters. - (Muraoka Taro) -- Athena/Motif GUI: when 'linespace' is non-zero the cursor would be drawn too - wide (number of bytes instead of cell width). -- When changing 'encoding' to "euc-jp" and inserting a character Vim would - crash. -- For euc-jp characters positioning the cursor would sometimes be wrong. - Also, with two characters with 0x8e leading byte only the first one would be - displayed. -- When using DYNAMIC_ICONV on Win32 conversion might fail because of using the - wrong error number. (Muraoka Taro) -- Using Alt-x in the GUI while 'encoding' was set to "utf-8" didn't produce - the right character. -- When using Visual block selection and only the left halve of a double-wide - character is selected, the highlighting continued to the end of the line. -- Visual-block delete didn't work properly when deleting the right halve of a - double-wide character. -- Overstrike mode for the cmdline replaced only the first byte of a multibyte - character. -- The cursor in Replace mode (also in the cmdline) was to small on a - double-wide character. -- When a multibyte character contained a 0x80 byte, it didn't work (was using - a CSI byte instead). (Muraoka Taro) -- Wordwise selection with the mouse didn't work. -- Yanking a modeless selection of multi-byte characters didn't work. -- When 'selection' is "exclusive", selecting a word that ends in a multi-byte - character used wrong highlighting for the following character. - -Win32 with Make_mvc.mak: Didn't compile for debugging. (Craig Barkhouse) - -Win32 GUI: When "vimrun.exe" is used to execute an external command, don't -give a message box with the return value, it was already printed by vimrun. -Also avoid printing the return value of the shell when ":silent!" is used. - -Win32: selecting a lot of text and using the "find/replace" dialog caused a -crash. - -X11 GUI: When typing a character with the 8th bit set and the Meta/Alt -modifier, the modifier was removed without changing the character. - -Truncating a message to make it fit on the command line, using "..." for the -middle, didn't always compute the space correctly. - -Could not imap <C-@>. Now it works like <Nul>. - -VMS: -- Fixed a few things for VAXC. os_vms_fix.com had some strange CTRL-M - characters. (Zoltan Arpadffy and John W. Hamill) -- Added VMS-specific defaults for the 'isfname' and 'isprint' options. - (Zoltan Arpadffy) -- Removed os_vms_osdef.h, it's no longer used. - -The gzip plugin used a ":normal" command, this doesn't work when dropping a -compressed file on Vim. - -In very rare situations a binary search for a tag would fail, because an -uninitialized value happens to be half the size of the tag file. (Narendran) - -When using BufEnter and BufLeave autocommands to enable/disable a menu, it -wasn't updated right away. - -When doing a replace with the "c"onfirm flag, the cursor was positioned after -the ruler, instead of after the question. With a long replacement string the -screen could scroll up and cause a "more" prompt. Now the message is -truncated to make it fit. - -Motif: The autoconf check for the Xp library didn't work. - -When 'verbose' is set to list lines of a sourced file, defining a function -would reset the counter used for the "more" prompt. - -In the Win32 find/replace dialog, a '/' character caused problems. Escape it -with a backslash. - -Starting a shell with ":sh" was different from starting a shell for CTRL-Z -when suspending doesn't work. They now work the same way. - -Jumping to a file mark while in a changed buffer gave a "mark not set" error. - -":execute histget("cmd")" causes an endless loop and crashed Vim. Now catch -all commands that cause too much recursiveness. - -Removed "Failed to open input method" error message, too many people got this -when they didn't want to use a XIM. - -GUI: When compiled without the +windows feature, the scrollbar would start -below line one. - -Removed the trick with redefining character class functions from regexp.c. - -Win32 GUI: Find dialog gives focus back to main window, when typing a -character mouse pointer is blanked, it didn't reappear when moving it in the -dialog window. (Vince Negri) - -When recording and typing a CTRL-C, no character was recorded. When in Insert -mode or cancelling half a command, playing back the recorded sequence wouldn't -work. Now record the CTRL-C. - -When the GUI was started, mouse codes for DEC and netterm were still checked -for. - -GUI: When scrolling and 'writedelay' is non-zero, the character under the -cursor was displayed in the wrong position (one line above/below with -CTRL-E/CTRL-Y). - -A ":normal" command would reset the 'scrollbind' info. Causes problems when -using a ":normal" command in an autocommand for opening a file. - -Windows GUI: a point size with a dot, like "7.5", wasn't recognized. (Muraoka -Taro) - -When 'scrollbind' wasn't set would still remember the current position, -wasting time. - -GTK: Crash when 'shell' doesn't exist and doing":!ls". Use _exit() instead of -exit() when the child couldn't execute the shell. - -Multi-byte: -- GUI with double-byte encoding: a mouse click in left halve of double-wide - character put the cursor in previous char. -- Using double-byte encoding and 'selection' is "exclusive": "vey" and "^Vey" - included the character after the word. -- When using a double-byte encoding and there is a lead byte at the end of the - line, the preceding line would be displayed. "ga" also showed wrong info. -- "gf" didn't include multi-byte characters before the cursor properly. - (Muraoka Taro) - -GUI: The cursor was sometimes not removed when scrolling. Changed the policy -from redrawing the cursor after each call to gui_write() to only update it at -the end of update_screen() or when setting the cursor position. Also only -update the scrollbars at the end of update_screen(), that's the only place -where the window text may have been scrolled. - -Formatting "/*<Tab>long text", produced "* <Tab>" in the next line. Now -remove the space before the Tab. -Formatting "/*<Tab> long text", produced "* <Tab> long text" in the next -line. Now keep the space after the Tab. - -In some places non-ASCII alphabetical characters were accepted, which could -cause problems. For example, ":X" (X being such a character). - -When a pattern matches the end of the line, the last character in the line was -highlighted for 'hlsearch'. That looks wrong for "/\%3c". Now highlight the -character just after the line. - -Motif: If a dialog was closed by clicking on the "X" of the window frame Vim -would no longer respond. - -When using CTRL-X or CTRL-A on a number with many leading zeros, Vim would -crash. (Matsumoto) - -When 'insertmode' is set, the mapping in mswin.vim for CTRL-V didn't work in -Select mode. Insert mode wasn't restarted after overwriting the text. -Now allow nesting Insert mode with insert and change commands. CTRL-O -cwfoo<Esc> now also works. - -Clicking with the right mouse button in another window started Visual mode, -but used the start position of the current window. Caused ml_get errors when -the line number was invalid. Now stay in the same window. - -When 'selection' is "exclusive", "gv" sometimes selected one character fewer. - -When 'comments' contains more than one start/middle/end triplet, the optional -flags could be mixed up. Also didn't align the end with the middle part. - -Double-right-click in Visual mode didn't update the shown mode. - -When the Normal group has a font name, it was never used when starting up. -Now use it when 'guifont' and 'guifontset' are empty. -Setting a font name to a highlight group before the GUI was started didn't -work. - -"make test" didn't use the name of the generated Vim executable. - -'cindent' problems: -- Aligned with an "else" inside a do-while loop for a line below that loop. - (Meikel Brandmeyer) -- A line before a function would be indented even when terminated with a - semicolon. (Meikel Brandmeyer) -- 'cindent' gave too much indent to a line after a "};" that ends an array - init. -- Support declaration lines ending in "," and "\". (Meikel Brandmeyer) -- A case statement inside a do-while loop was used for indenting a line after - the do-while loop. (Meikel Brandmeyer) -- When skipping a string in a line with one double quote it could continue in - the previous line. (Meikel Brandmeyer) - -When 'list' is set, 'hlsearch' didn't highlight a match at the end of the -line. Now highlight the '$'. - -The Paste menu item in the menu bar, the popup menu and the toolbar were all -different. Now made them all equal to how it was done in mswin.vim. - -st_dev can be smaller than "unsigned". The compiler may give an overflow -warning. Added a configure check for dev_t. - -Athena: closing a confirm() dialog killed Vim. - -Various typos in the documentation. (Matt Dunford) - -Python interface: The definition of _DEBUG could cause trouble, undefine it. -The error message for not being able to load the shared library wasn't -translated. (Muraoka Taro) - -Mac: (Dany St-Amant and Axel Kielhorn) -- Several fixes. -- Vim was eating 80% of the CPU time. -- The project os_mac.pbxproj didn't work, Moved it to a subdirectory. -- Made the menu priority work for the menubar. -- Fixed a problem with dragging the scrollbar. -- Cleaned up the various #ifdefs. - -Unix: When catching a deadly signal and we keep getting one use _exit() to -exit in a quick and dirty way. - -Athena menu ordering didn't work correctly. (David Harrison) - -A ":make" or ":grep" command with a long argument could cause a crash. - -Doing ":new file" and using "Quit" for the ATTENTION dialog still opened a new -window. - -GTK: When starting the GUI and there is an error in the .vimrc file, don't -present the wait-return prompt, since the message was given in the terminal. - -When there was an error in a .vimrc file the terminal where gvim was started -could be cleared. Set msg_row in main.c before writing any messages. - -GTK and X11 GUI: When trying to read characters from the user (e.g. with -input()) before the Vim window was opened caused Vim to hang when it was -started from the desktop. - -OS/390 uses 31 bit pointers. That broke some computations with MAX_COL. -Reduce MAX_COL by one bit for OS/390. (Ralf Schandl) - -When defining a function and it already exists, Vim didn't say it existed -until after typing it. Now do this right away when typing it. - -The message remembered for displaying later (keep_msg) was sometimes pointing -into a generic buffer, which might be changed by the time the message is -displayed. Now make a copy of the message. - -When using multi-byte characters in a menu and a trailing byte is a backslash, -the menu would not be created correctly. (Muraoka Taro) -Using a multibyte character in the substitute string where a trail byte is a -backslash didn't work. (Muraoka Taro) - -When setting "t_Co" in a vimrc file, then setting it automatically from an -xterm termresponse and then setting it again manually caused a crash. - -When getting the value of a string option that is not supported, the number -zero was returned. This breaks a check like "&enc == "asdf". Now an empty -string is returned for string options. - -Crashed when starting the GTK GUI while using 'notitle' in the vimrc, setting -'title' in the gvimrc and starting the GUI with ":gui". Closed the connection -to the X server accidentally. - -Had to hit return after selecting an entry for ":ts". - -The message from ":cn" message was sometimes cleared. Now display it after -redrawing if it doesn't cause a scroll (truncated when necessary). - -hangulin.c didn't compile when the GUI was disabled. Disable it when it won't -work. - -When setting a termcap option like "t_CO", the value could be displayed as -being for a normal key with a modifier, like "<M-=>". - -When expanding the argument list, entries which are a directory name did not -get included. This stopped "vim c:/" from opening the file explorer. - -":syn match sd "^" nextgroup=asdf" skipped the first column and matched the -nextgroup in the second column. - -GUI: When 'lazyredraw' is set, 'showmatch' didn't work. Required flushing -the output. - -Don't define the <NetMouse> termcode in an xterm, reduces the problem when -someone types <Esc> } in Insert mode. - -Made slash_adjust() work correctly for multi-byte characters. (Yasuhiro -Matsumoto) -Using a filename in Big5 encoding for autocommands didn't work (backslash in -trailbyte). (Yasuhiro Matsumoto) - -DOS and Windows: Expanding *.vim also matched file.vimfoo. Expand path like -Unix to avoid problems with Windows dir functions. Merged the DOS and Win32 -functions. - -Win32: Gvimext could not edit more than a few files at once, the length of the -argument was fixed. - -"ls -1 * | xargs vim" worked, but the input was in cooked mode. Now switch to -raw mode when needed. Use dup() to copy the stderr file descriptor to stdin -to make shell commands work. No longer requires an external program to do -this. - -When using ":filetype off", ftplugin and indent usage would be switched off at -the same time. Don't do this, setting 'filetype' manually can still use them. - -GUI: When writing a double-byte character, it could be split up in two calls -to gui_write(), which doesn't work. Now flush before the output buffer -becomes full. - -When 'laststatus' is set and 'cmdheight' is two or bigger, the intro message -would be written over the status line. -The ":intro" command didn't work when there wasn't enough room. - -Configuring for Ruby failed with a recent version of Ruby. (Akinori Musha) - -Athena: When deleting the directory in which Vim was started, using the file -browser made Vim exit. Removed the use of XtAppError(). - -When using autoconf 2.50, UNIX was not defined. Moved the comment for "#undef -UNIX" to a separate line. - -Win32: Disabled _OnWindowPosChanging() to make maximize work better. - -Win32: Compiling with VC 4.0 didn't work. (Walter Briscoe) - -Athena: -- Finally fixed the problems with deleting a menu. (David Harrison) -- Athena: When closing the confirm() dialog, worked like OK was pressed, - instead of Cancel. - -The file explorer didn't work in compatible mode, because of line -continuation. - -Didn't give an error message for ":digraph a". - -When using Ex mode in the GUI and typing a special key, <BS> didn't delete it -correctly. Now display '?' for a special key. - -When an operator is pending, clicking in another window made it apply to that -window, even though the line numbers could be beyond the end of the buffer. - -When a function call doesn't have a terminating ")" Vim could crash. - -Perl interface: could crash on exit with perl 5.6.1. (Anduin Withers) - -Using %P in 'errorformat' wasn't handled correctly. (Tomas Zellerin) - -Using a syntax cluster that includes itself made Vim crash. - -GUI: With 'ls' set to 2, dragging the status line all the way up, then making -the Vim window smaller: Could not the drag status line anymore. - -"vim -c startinsert! file" placed cursor on last char of a line, instead of -after it. A ":set" command in the buffer menu set w_set_curswant. Now don't -do this when w_curswant is MAXCOL. - -Win32: When the gvim window was maximized and selecting another font, the -window would no longer fill the screen. - -The line with 'pastetoggle' in ":options" didn't show the right value when it -is a special key. Hitting <CR> didn't work either. - -Formatting text, resulting in a % landing in the first line, repeated the % in -the following lines, like it's the start of a comment. - -GTK: When adding a toolbar item while gvim is already running, it wasn't -possible to use the tooltip. Now it works by adding the tooltip first. - -The output of "g CTRL-G" mentioned "Char" but it's actually bytes. - -Searching for the end of a oneline region didn't work correctly when there is -an offset for the highlighting. - -Syntax highlighting: When synchronizing on C-comments, //*/ was seen as the -start of a comment. - -Win32: Without scrollbars present, the MS mouse scroll wheel didn't work. -Also handle the scrollbars when they are not visible. - -Motif: When there is no right scrollbar, the bottom scrollbar would still -leave room for it. (Martin Dalecki) - -When changing 'guicursor' and the value is invalid, some of the effects would -still take place. Now first check for errors and only make the new value -effective when it's OK. - -Using "A" In Visual block mode, appending to lines that don't extend into the -block, padding was wrong. - -When pasting a block of text, a character that occupies more than one screen -column could be deleted and spaces inserted instead. Now only do that with a -tab. - -Fixed conversion of documentation to HTML using Perl. (Dan Sharp) - -Give an error message when a menu name starts with a dot. - -Avoid a hang when executing a shell from the GUI on HP-UX by pushing "ptem" -even when sys/ptem.h isn't present. - -When creating the temp directory, make sure umask is 077, otherwise the -directory is not accessible when it was set to 0177. - -Unix: When resizing the window and a redraw is a bit slow, could get a window -resize event while redrawing, resulting in a messed up window. Any input -(e.g., a mouse click) would redraw. - -The "%B" item in the status line became zero in Insert mode (that's normal) -for another than the current window. - -The menu entries to convert to xxd and back didn't work in Insert mode. - -When ":vglobal" didn't find a line where the pattern doesn't match, the error -message would be the wrong way around. - -When ignoring a multi-line error message with "%-A", the continuation lines -would be used anyway. (Servatius Brandt) - -"grx" on a double-wide character inserted "x", instead of replacing the -character with "x ". "gR" on <xx> ('display' set the "uhex") didn't replace -at all. When doing "gRxx" on a control character the first "x" would be -inserted, breaking the alignment. - -Added "0)" to 'cinkeys', so that when typing a ) it is put in the same place -as where "==" would put it. - -Win32: When maximized, adding/removing toolbar didn't resize the text area. - -When using <C-RightMouse> a count was discarded. - -When typing CTRL-V and <RightMouse> in the command line, would insert -<LeftMouse>. - -Using "vis" or "vas" when 'selection' is exclusive didn't include the last -character. - -When adding to an option like 'grepprg', leading space would be lost. Don't -expand environment variables when there is no comma separating the items. - -GUI: When using a bold-italic font, would still use the bold trick and -underlining. - -Motif: The default button didn't work in dialogs, the first one was always -used. Had to give input focus to the default button. - -When using CTRL-T to jump within the same file, the '' mark wasn't set. - -Undo wasn't Vi compatible when using the 'c' flag for ":s". Now it undoes the -whole ":s" command instead of each confirmed replacement. - -The Buffers menu, when torn-off, disappeared when being refreshed. Add a -dummy item to avoid this. - -Removed calling msg_start() in main(), it should not be needed. - -vim_strpbrk() did not support multibyte characters. (Muraoka Taro) - -The Amiga version didn't compile, the code was too big for relative jumps. -Moved a few files from ex_docmd.c to ex_cmds2.c - -When evaluating the "= register resulted in the "= register being changed, Vim -would crash. - -When doing ":view file" and it fails, the current buffer was made read-only. - -Motif: For some people the separators in the toolbar disappeared when resizing -the Vim window. (Martin Dalecki) - -Win32 GUI: when setting 'lines' to a huge number, would not compute the -available space correctly. Was counting the menu height twice. - -Conversion of the docs to HTML didn't handle the line with the +quickfix tag -correctly. (Antonio Colombo) - -Win32: fname_case() didn't handle multi-byte characters correctly. (Yasuhiro -Matsumoto) - -The Cygwin version had trouble with fchdir(). Don't use that function for -Cygwin. - -The generic check in scripts.vim for "conf" syntax was done before some checks -in filetype.vim, resulting in "conf" syntax too often. - -Dos32: Typing lagged behind. Would wait for one biostick when checking if a -character is available. - -GTK: When setting 'columns' while starting up "gvim", would set the width of -the terminal it was started in. - -When using ESC in Insert mode, an autoindent that wraps to the next line -caused the cursor to move to the end of the line temporarily. When the -character before the cursor was a double-wide multi-byte character the cursor -would be on the right halve, which causes problems with some terminals. - -Didn't handle multi-byte characters correctly when expanding a file name. -(Yasuhiro Matsumoto) - -Win32 GUI: Errors generated before the GUI is decided to start were not -reported. - -globpath() didn't reserve enough room for concatenated results. (Anduin -Withers) - -When expanding an option that is very long already, don't do the expansion, it -would be truncated to MAXPATHL. (Anduin Withers) - -When 'selection' is "exclusive", using "Fx" in Visual mode only moved until -just after the character. - -When using IME on the console to enter a file name, the screen may scroll up. -Redraw the screen then. (Yasuhiro Matsumoto) - -Motif: In the find/replace dialog the "Replace" button didn't work first time, -second time it replaced all matches. Removed the use of ":s///c". -GTK: Similar problems with the find/replace dialog, moved the code to a common -function. - -X11: Use shared GC's for text. (Martin Dalecki) - -"]i" found the match under the cursor, instead of the first one below it. -Same for "]I", "] CTRL-I", "]d", "]D" and "] CTRL-D". - -Win16: When maximized and the font is changed, don't change the window size. -(Vince Negri) - -When 'lbr' is set, deleting a block of text could leave the cursor in the -wrong position. - -Win32: When opening a file with the "Edit with Vim" popup menu entry, -wildcards would cause trouble. Added the "--literal" argument to avoid -expanding file names. - -When using "gv", it didn't restore that "$" was used in Visual block mode. - -Win32 GUI: While waiting for a shell command to finish, the window wasn't -redrawn at all. (Yasuhiro Matsumoto) - -Syntax highlighting: A match that continues on a next line because of a -contained region didn't end when that region ended. - -The ":s" command didn't allow flags like 'e' and 'i' right after it. - -When using ":s" to split a line, marks were moved to the next line. Vi keeps -them in the first line. - -When using ":n" ":rew", the previous context mark was at the top of the file, -while Vi puts it in the same place as the cursor. Made it Vi compatible. - -Fixed Vi incompatibility: Text was not put in register 1 when using "c" and -"d" with a motion character, when deleting within one line with one of the -commands: % ( ) `<character> / ? N n { } - -Win32 GUI: The tooltip for tear-off items remained when the tear-off item was -no longer selected. - -GUI: When typing ":" at the more prompt, would return to Normal mode and not -redraw the screen. - -When starting Vim with an argument "-c g/at/p" the printed lines would -overwrite each other. - -BeOS: Didn't compile. Configure didn't add the os_beos files, the QNX check -removed them. Various changes to os_beos.cc. (Joshua Haberman) -Removed the check for the hardware platform, the BeBox has not been produced -for a long time now. - -Win32 GUI: don't use a message box when the shell returns an error code, -display the message in the Vim window. - -Make_mvc.mak always included "/debug" for linking. "GUI=no" argument didn't -work. Use "DEBUG=yes" instead of "DEBUG=1" to make it consistent. (Dan Sharp) - -When a line in the tags file ended in ;" (no TAB following) the command would -not be recognized as a search command. - -X11: The inputMethod resource never worked. Don't use the "none" input method -for SGI, it apparently makes the first character in Input method dropped. - -Fixed incorrect tests in os_mac.h. (Axel Kielhorn) - -Win32 console: When the console where Vim runs in is closed, Vim could hang in -trying to restore the window icon. (Yasuhiro Matsumoto) - -When using ":3call func()" or ":3,3call func() the line number was ignored. - -When 'showbreak' and 'linebreak' were both set, Visual highlighting sometimes -continued until the end of the line. - -GTK GUI: Tearoff items were added even when 'guioptions' didn't contain 't' -when starting up. - -MS-Windows: When the current directory includes a "~", searching files with -"gf" or ":find" didn't work. A "$" in the directory had the same problem. -Added mch_has_exp_wildcard() functions. - -When reducing the Vim window height while starting up, would get an -out-of-memory error message. - -When editing a very long search pattern, 'incsearch' caused the redraw of the -command line to fail. - -Motif GUI: On some systems the "Help" menu would not be on the far right, as -it should be. On some other systems (esp. IRIX) the command line would not -completely show. Solution is to only resize the menubar for Lesstif. - -Using "%" in a line that contains "\\" twice didn't take care of the quotes -properly. Now make a difference between \" and \\". - -For non-Unix systems a dummy file is created when finding a swap name to -detect a 8.3 filesystem. When there is an existing swap file, would get a -warning for the file being created outside of Vim. Also, when closing the Vim -window the file would remain. - -Motif: The menu height was always computed, using a "-menuheight" argument -was setting the room for the command line. Now make clear the argument is not -supported. - -For some (EBCDIC) systems, POUND was equal to '#'. Added an #if for that to -avoid a duplicate case in a switch. - -The GUI may have problems when forking. Always call _exit() instead of exit() -in the parent, the child will call exit(). - -Win32 GUI: Accented characters were often wrong in dialogs and tearoff menus. -Now use CP_ACP instead of CP_OEMCP. (Vince Negri) - -When displaying text with syntax highlighting causes an error (e.g., running -out of stack) the syntax highlighting is disabled to avoid further messages. - -When a command in a .vimrc or .gvimrc causes an ATTENTION prompt, and Vim was -started from the desktop (no place to display messages) it would hang. Now -open the GUI window early to be able to display the messages and pop up the -dialog. - -"r<CR>" on a multi-byte character deleted only the first byte of the -character. "3r<CR>" deleted three bytes instead of three characters. - -When interrupting reading a file, Vi considers the buffer modified. Added the -'i' flag in 'cpoptions' flag for this (we don't want it modified to be able to -do ":q"). - -When using an item in 'guicursor' that starts with a colon, Vim would get -stuck or crash. - -When putting a file mark in a help file and later jumping back to it, the -options would not be set. Extended the modeline in all help files to make -this work better. - -When a modeline contained "::" the local option values would be printed. Now -ignore it. - -Some help files did not use a 8.3 names, which causes problems when using -MS-DOS unzip. Renamed "multibyte.txt" to "mbyte.txt", "rightleft.txt" to -"rileft.txt", "tagsearch.txt" to "tagsrch.txt", "os_riscos.txt" to -"os_risc.txt". - -When Visual mode is blockwise, using "iw" or "aw" made it characterwise. That -doesn't seem right, only do this when in linewise mode. But then do it -always, not only when start and end of Visual mode are equal. - -When using "viw" on a single-letter word and 'selection' is exclusive, would -not include the word. - -When formatting text from Insert mode, using CTRL-O, could mess up undo -information. - -While writing a file (also for the backup file) there was no check for an -interrupt (hitting CTRL-C). Vim could hang when writing a large file over a -slow network, and moving the mouse didn't make it appear (when 'mousehide' is -set) and the screen wasn't updated in the GUI. Also allow interrupting when -syncing the swap file, it can take a long time. - -When using ":mksession" while there is help window, it would later be restored -to the right file but not marked as a help buffer. ":help" would then open -another window. Now use the value "help" for 'buftype' to mark a help buffer. - -The session file contained absolute path names in option values, that doesn't -work when the home directory depends on the situation. Replace the home -directory with ~/ when possible. - -When using 'showbreak' a TAB just after the shown break would not be counted -correctly, the cursor would be positioned wrong. - -With 'showbreak' set to "--->" or "------->" and 'sts' set to 4, inserting -tabs did not work right. Could cause a crash. Backspacing was also wrong, -could get stuck at a line break. - -Win32: crashed when tearing off a menu with over 300 items. - -GUI: A menu or toolbar item would appear when only a tooltip was defined for -it. - -When 'scrolloff' is non-zero and "$" is in 'cpoptions', using "s" while the -last line of the file is the first line on screen, the text wasn't displayed. - -When running "autoconf", delete the configure cache to force starting cleanly -when configure is run again. - -When changing the Normal colors for cterm, the value of 'background' was -changed even when the GUI was used. - -The warning for a missing vimrun.exe was always given on startup, but some -people just editing a file don't need to be bothered by it. Only show it when -vimrun would be used. - -When using "%" in a multibyte text it could get confused by trailbytes that -match. (Muraoka Taro) - -Termcap entry for RiscOS was wrong, using 7 and 8 in octal codes. - -Athena: The title of a dialog window and the file selector window were not -set. (David Harrison) - -The "htmlLink" highlight group specified colors, which gives problems when -using a color scheme. Added the "Underlined" highlight group for this. - -After using ":insert" or ":change" the '[ mark would be one line too low. - -When looking for the file name after a match with 'include' one character was -skipped. Same for 'define'. - -Win32 and DJGPP: When editing a file with a short name in a directory, and -editing the same file but using the long name, would end up with two buffers -on the same file. - -"gf" on a filename that starts with "../" only worked when the file being -edited is in the current directory. An include file search didn't work -properly for files starting with "../" or ".". Now search both relative to -the file and to the current directory. - -When 'printheader', 'titlestring', 'iconstring', 'rulerformat' or 'statusline' -contained "%{" but no following "}" memory was corrupted and a crash could -happen. - -":0append" and then inserting two lines did not redraw the blank lines that -were scrolled back down. - -When using insert mode completion in a narrow window, the message caused a -scroll up. Now shorten the message if it doesn't fit and avoid writing the -ruler over the message. - -XIM still didn't work correctly on some systems, especially SGI/IRIX. Added -the 'imdisable' option, which is set by default for that system. - -Patch 6.0aw.008 -Problem: When the first character of a file name is over 127, the Buffers - menu entry would get a negative priority and cause problems. -Solution: Reduce the multiplier for the first character when computing - the hash value for a Buffers menu entry. -Files: runtime/menu.vim - -Patch 6.0aw.010 -Problem: Win32: ":browse edit dir/dir" didn't work. (Vikas) -Solution: Change slashes to backslashes in the directory passed to the file - browser. -Files: src/gui_w48.c - -Athena file browser: On some systems wcstombs() can't be used to get the -length of a multi-byte string. Use the maximum length then. (Yasuhiro -Matsumoto) - -Patch 6.0ax.001 -Problem: When 'patchmode' is set, appending to a file gives an empty - original file. (Ed Ralston) -Solution: Also make a backup copy when appending and 'patchmode' is set. -Files: src/fileio.c - -Patch 6.0ax.002 -Problem: When 'patchmode' is set, appending to a compressed file gives an - uncompressed original file. (Ed Ralston) -Solution: Create the original file before decompressing. -Files: runtime/plugin/gzip.vim - -Patch 6.0ax.005 -Problem: Athena file selector keeps the title of the first invocation. -Solution: Set the title each time the file selector is opened. (David - Harrison) -Files: src/gui_at_fs.c - -Patch 6.0ax.007 -Problem: When using GPM (mouse driver in a Linux console) a double click is - interpreted as a scroll wheel click. -Solution: Check if GPM is being used when deciding if a mouse event is for - the scroll wheel. -Files: src/term.c - -Patch 6.0ax.010 -Problem: The Edit.Save menu and the Save toolbar button didn't work when - the buffer has no file name. -Solution: Use a file browser to ask for a file name. Also fix the toolbar - Find item in Visual mode. -Files: runtime/menu.vim - -Patch 6.0ax.012 -Problem: When 'cpoptions' contains "$", breaking a line for 'textwidth' - doesn't redraw properly. (Stefan Schulze) -Solution: Remove the dollar before breaking the line. -Files: src/edit.c - -Patch 6.0ax.014 -Problem: Win32: On Windows 98 ":make -f file" doesn't work when 'shell' is - "command.com" and 'makeprg' is "nmake". The environment isn't - passed on to "nmake". -Solution: Also use vimrun.exe when redirecting the output of a command. -Files: src/os_win32.c - -Patch 6.0ax.016 -Problem: The version number was reported wrong in the intro screen. -Solution: Check for a version number with two additional letters. -Files: src/version.c - -Patch 6.0ax.019 -Problem: When scrolling a window with folds upwards, switching to another - vertically split window and back may not update the scrollbar. -Solution: Limit w_botline to the number of lines in the buffer plus one. -Files: src/move.c - - -============================================================================== -VERSION 6.1 *version-6.1* - -This section is about improvements made between version 6.0 and 6.1. - -This is a bug-fix release, there are not really any new features. - - -Changed *changed-6.1* -------- - -'iminsert' and 'imsearch' are no longer set as a side effect of defining a -language-mapping using ":lmap". - - -Added *added-6.1* ------ - -Syntax files: -ampl AMPL (David Krief) -ant Ant (Johannes Zellner) -baan Baan (Her van de Vliert) -cs C# (Johannes Zellner) -lifelines Lifelines (Patrick Texier) -lscript LotusScript (Taryn East) -moo MOO (Timo Frenay) -nsis NSIS (Alex Jakushev) -ppd Postscript Printer Description (Bjoern Jacke) -rpl RPL/2 (Joel Bertrand) -scilab Scilab (Benoit Hamelin) -splint Splint (Ralf Wildenhues) -sqlj SQLJ (Andreas Fischbach) -wvdial WvDial (Prahlad Vaidyanathan) -xf86conf XFree86 config (Nikolai Weibull) -xmodmap Xmodmap (Nikolai Weibull) -xslt Xslt (Johannes Zellner) -monk Monk (Mike Litherland) -xsd Xsd (Johannes Zellner) -cdl CDL (Raul Segura Acevedo) -sendpr Send-pr (Hendrik Scholz) - -Added indent file for Scheme. (Dorai Sitaram) -Added indent file for Prolog. (Kontra Gergely) -Added indent file for Povray (David Necas) -Added indent file for IDL (Aleksandar Jelenak) -Added C# indent and ftplugin scripts. - -Added Ukrainian menu translations. (Bohdan Vlasyuk) -Added ASCII version of the Czech menus. (Jiri Brezina) - -Added Simplified Chinese translation of the tutor. (Mendel L Chan) - -Added Russian keymap for yawerty keyboard. - -Added an explanation of using the vimrc file in the tutor. -Changed tutor.vim to get the right encoding for the Taiwainese tutor. - -Added Russian tutor. (Andrey Kiselev) -Added Polish tutor. (Mikolaj Machowski) - -Added darkblue color scheme. (Bohdan Vlasyuk) - -When packing the dos language archive automatically generate the .mo files -that are required. - -Improved NSIS script to support NSIS 180. Added icons for the -enabled/disabled status. (Mirek Pruchnik) - -cp1250 version of the Slovak message translations. - -Compiler plugins for IRIX compilers. (David Harrison) - - -Fixed *fixed-6.1* ------ - -The license text was updated to make the meaning clearer and make it -compatible with the GNU GPL. Otherwise distributors have a problem when -linking Vim with a GPL'ed library. - -When installing the "less.sh" script it was not made executable. (Chuck Berg) - -Win32: The "9" key on the numpad wasn't working. (Julian Kinraid) - -The NSIS install script didn't work with NSIS 1.80 or later. Also add -Vim-specific icons. (Pruchnik) - -The script for conversion to HTML contained an "if" in the wrong place. -(Michael Geddes) - -Allow using ":ascii" in the sandbox, it's harmless. - -Removed creat() from osdef2.h.in, it wasn't used and may cause a problem when -it's redefined to creat64(). - -The text files in the VisVim directory were in "dos" format. This caused -problems when applying a patch. Now keep them in "unix" format and convert -them to "dos" format only for the PC archives. - -Add ruby files to the dos source archive, they can be used by Make_mvc.mak. -(Mirek Pruchnik) - -"cp -f" doesn't work on all systems. Change "cp -f" in the Makefile to "rm --f" and "cp". - -Didn't compile on a Compaq Tandem Himalaya OSS. (Michael A. Benzinger) - -The GTK file selection dialog didn't include the "Create Dir", "Delete File" -and "Rename File" buttons. - -When doing ":browse source" the dialog has the title "Run Macro". Better -would be "Source Vim script". (Yegappan Lakshmanan) - -Win32: Don't use the printer font as default for the font dialog. - -"make doslang" didn't work when configure didn't run (yet). Set $MAKEMO to -"yes". (Mirek Pruchnik) - -The ToolBar TagJump item used "g]", which prompts for a selection even when -there is only one matching tag. Use "g<C-]>" instead. - -The ming makefile for message translations didn't have the right list of -files. - -The MS-Windows 3.1 version complains about LIBINTL.DLL not found. Compile -this version without message translations. - -The Borland 5 makefile contained a check for Ruby which is no longer needed. -The URLs for the TCL library was outdated. (Dan Sharp) - -The eviso.ps file was missing from the DOS runtime archive, it's needed for -printing PostScript in the 32bit DOS version. - -In menu files ":scriptencoding" was used in a wrong way after patch 6.1a.032 -Now use ":scriptencoding" in the file where the translations are given. Do -the same for all menus in latin1 encoding. - -Included a lot of fixes for the Macintosh, mostly to make it work with Carbon. -(Dany StAmant, Axel Kielhorn, Benji Fisher) - -Improved the vimtutor shell script to use $TMPDIR when it exists, and delete -the copied file when exiting in an abnormal way. (Max Ischenko) - -When "iconv.dll" can't be found, try using "libiconv.dll". - -When encryption is used, filtering with a shell command wasn't possible. - -DJGPP: ":cd c:" always failed, can't get permissions for "c:". -Win32: ":cd c:/" failed if the previous current directory on c: had become -invalid. - -DJGPP: Shift-Del and Del both produce \316\123. Default mapping for Del is -wrong. Disabled it. - -Dependencies on header files in MingW makefile was wrong. - -Win32: Don't use ACL stuff for MSVC 4.2, it's not supported. (Walter Briscoe) - -Win32 with Borland: bcc.cfg was caching the value for $(BOR), but providing a -different argument to make didn't regenerate it. - -Win32 with MSVC: Make_ivc.mak generates a new if_ole.h in a different -directory, the if_ole.h in the src directory may be used instead. Delete the -distributed file. - -When a window is vertically split and then ":ball" is used, the window layout -is messed up, can cause a crash. (Muraoka Taro) - -When 'insertmode' is set, using File/New menu and then double clicking, "i" is -soon inserted. (Merlin Hansen) - -When Select mode is active and using the Buffers menu to switch to another -buffer, an old selection comes back. Reset VIsual_reselect for a ":buffer" -command. - -When Select mode is active and 'insertmode' is set, using the Buffers menu to -switch to another buffer, did not return to Insert mode. Make sure -"restart_edit" is set. - -When double clicking on the first character of a word while 'selection' is -"exclusive" didn't select that word. - - -Patch 6.0.001 -Problem: Loading the sh.vim syntax file causes error messages . (Corinna - Vinschen) -Solution: Add an "if". (Charles Campbell) -Files: runtime/syntax/sh.vim - -Patch 6.0.002 -Problem: Using a '@' item in 'viminfo' doesn't work. (Marko Leipert) -Solution: Add '@' to the list of accepted items. -Files: src/option.c - -Patch 6.0.003 -Problem: The configure check for ACLs on AIX doesn't work. -Solution: Fix the test program so that it compiles. (Tomas Ogren) -Files: src/configure.in, src/auto/configure - -Patch 6.0.004 -Problem: The find/replace dialog doesn't reuse a previous argument - properly. -Solution: After removing a "\V" terminate the string. (Zwane Mwaikambo) -Files: src/gui.c - -Patch 6.0.005 -Problem: In Insert mode, "CTRL-O :ls" has a delay before redrawing. -Solution: Don't delay just after wait_return() was called. Added the - did_wait_return flag. -Files: src/globals.h, src/message.c, src/normal.c, src/screen.c - -Patch 6.0.006 -Problem: With a vertical split, 'number' set and 'scrolloff' non-zero, - making the window width very small causes a crash. (Niklas - Lindstrom) -Solution: Check for a zero width. -Files: src/move.c - -Patch 6.0.007 -Problem: When setting 'filetype' while there is no FileType autocommand, a - following ":setfiletype" would set 'filetype' again. (Kobus - Retief) -Solution: Set did_filetype always when 'filetype' has been set. -Files: src/option.c - -Patch 6.0.008 -Problem: 'imdisable' is missing from the options window. (Michael Naumann) -Solution: Add an entry for it. -Files: runtime/optwin.vim - -Patch 6.0.009 -Problem: Nextstep doesn't have S_ISBLK. (John Beppu) -Solution: Define S_ISBLK using S_IFBLK. -Files: src/os_unix.h - -Patch 6.0.010 -Problem: Using "gf" on a file name starting with "./" or "../" in a buffer - without a name causes a crash. (Roy Lewis) -Solution: Check for a NULL file name. -Files: src/misc2.c - -Patch 6.0.011 -Problem: Python: After replacing or deleting lines get an ml_get error. - (Leo Lipelis) -Solution: Adjust the cursor position for deleted or added lines. -Files: src/if_python.c - -Patch 6.0.012 -Problem: Polish translations contain printf format errors, this can result - in a crash when using one of them. -Solution: Fix for translated messages. (Michal Politowski) -Files: src/po/pl.po - -Patch 6.0.013 -Problem: Using ":silent! cmd" still gives some error messages, like for an - invalid range. (Salman Halim) -Solution: Reset emsg_silent after calling emsg() in do_one_cmd(). -Files: src/ex_docmd.c - -Patch 6.0.014 -Problem: When 'modifiable' is off and 'virtualedit' is "all", "rx" on a TAB - still changes the buffer. (Muraoka Taro) -Solution: Check if saving the line for undo fails. -Files: src/normal.c - -Patch 6.0.015 -Problem: When 'cpoptions' includes "S" and "filetype plugin on" has been - used, can get an error for deleting the b:did_ftplugin variable. - (Ralph Henderson) -Solution: Only delete the variable when it exists. -Files: runtime/ftplugin.vim - -Patch 6.0.016 -Problem: bufnr(), bufname() and bufwinnr() don't find unlisted buffers when - the argument is a string. (Hari Krishna Dara) - Also for setbufvar() and getbufvar(). -Solution: Also find unlisted buffers. -Files: src/eval.c - -Patch 6.0.017 -Problem: When 'ttybuiltin' is set and a builtin termcap entry defines t_Co - and the external one doesn't, it gets reset to empty. (David - Harrison) -Solution: Only set t_Co when it wasn't set yet. -Files: src/term.c - -Patch 6.0.018 -Problem: Initializing 'encoding' may cause a crash when setlocale() is not - used. (Dany St-Amant) -Solution: Check for a NULL pointer. -Files: src/mbyte.c - -Patch 6.0.019 -Problem: Converting a string with multi-byte characters to a printable - string, e.g., with strtrans(), may cause a crash. (Tomas Zellerin) -Solution: Correctly compute the length of the result in transstr(). -Files: src/charset.c - -Patch 6.0.020 -Problem: When obtaining the value of a global variable internally, could - get the function-local value instead. Applies to using <Leader> - and <LocalLeader> and resetting highlighting in a function. -Solution: Prepend "g:" to the variable name. (Aric Blumer) -Files: src/syntax.c, src/term.c - -Patch 6.0.021 -Problem: The 'cscopepathcomp' option didn't work. -Solution: Change USE_CSCOPE to FEAT_CSCOPE. (Mark Feng) -Files: src/option.c - -Patch 6.0.022 -Problem: When using the 'langmap' option, the second character of a command - starting with "g" isn't adjusted. -Solution: Apply 'langmap' to the second character. (Alex Kapranoff) -Files: src/normal.c - -Patch 6.0.023 -Problem: Loading the lhaskell syntax doesn't work. (Thore B. Karlsen) -Solution: Use ":runtime" instead of "source" to load haskell.vim. -Files: runtime/syntax/lhaskell.vim - -Patch 6.0.024 -Problem: Using "CTRL-V u 9900" in Insert mode may cause a crash. (Noah - Levitt) -Solution: Don't insert a NUL byte in the text, use a newline. -Files: src/misc1.c - -Patch 6.0.025 -Problem: The pattern "\vx(.|$)" doesn't match "x" at the end of a line. - (Preben Peppe Guldberg) -Solution: Always see a "$" as end-of-line after "\v". Do the same for "^". -Files: src/regexp.c - -Patch 6.0.026 -Problem: GTK: When using arrow keys to navigate through the menus, the - separators are selected. -Solution: Set the separators "insensitive". (Pavel Kankovsky) -Files: src/gui_gtk.c, src/gui_gtk_x11.c - -Patch 6.0.027 -Problem: VMS: Printing doesn't work, the file is deleted too quickly. - No longer need the VMS specific printing menu. - gethostname() is not available with VAXC. - The makefile was lacking selection of the tiny-huge feature set. -Solution: Adjust the 'printexpr' option default. Fix the other problems and - update the documentation. (Zoltan Arpadffy) -Files: runtime/doc/os_vms.txt, runtime/menu.vim, src/INSTALLvms.txt, - src/Make_vms.mms, src/option.c, src/os_unix.c, src/os_vms_conf.h - -Patch 6.0.028 -Problem: Can't compile without +virtualedit and with +visualextra. (Geza - Lakner) -Solution: Add an #ifdef for +virtualedit. -Files: src/ops.c - -Patch 6.0.029 -Problem: When making a change in line 1, then in line 2 and then deleting - line 1, undo info could be wrong. Only when the changes are undone - at once. (Gerhard Hochholzer) -Solution: When not saving a line for undo because it was already done - before, remember for which entry the last line must be computed. - Added ue_getbot_entry pointer for this. When the number of lines - changes, adjust the position of newer undo entries. -Files: src/structs.h, src/undo.c - -Patch 6.0.030 -Problem: Using ":source! file" doesn't work inside a loop or after - ":argdo". (Pavol Juhas) -Solution: Execute the commands in the file right away, do not let the main - loop do it. -Files: src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, src/globals.h, - src/proto/ex_docmd.pro, src/proto/getchar.pro - -Patch 6.0.031 -Problem: Nextstep doesn't have setenv() or putenv(). (John Beppu) -Solution: Move putenv() from pty.c to misc2.c -Files: src/misc2.c, src/pty.c - -Patch 6.0.032 -Problem: When changing a setting that affects all folds, they are not - displayed immediately. -Solution: Set the redraw flag in foldUpdateAll(). -Files: src/fold.c - -Patch 6.0.033 -Problem: Using 'wildmenu' on MS-Windows, file names that include a space - are only displayed starting with that space. (Xie Yuheng) -Solution: Don't recognize a backslash before a space as a path separator. -Files: src/screen.c - -Patch 6.0.034 -Problem: Calling searchpair() with three arguments could result in a crash - or strange error message. (Kalle Bjorklid) -Solution: Don't use the fifth argument when there is no fourth argument. -Files: src/eval.c - -Patch 6.0.035 -Problem: The menu item Edit/Global_Settings/Toggle_Toolbar doesn't work - when 'ignorecase' is set. (Allen Castaban) -Solution: Always match case when checking if a flag is already present in - 'guioptions'. -Files: runtime/menu.vim - -Patch 6.0.036 -Problem: OS/2, MS-DOS and MS-Windows: Using a path that starts with a - slash in 'tags' doesn't work as expected. (Mathias Koehrer -Solution: Only use the drive, not the whole path to the current directory. - Also make it work for "c:dir/file". -Files: src/misc2.c - -Patch 6.0.037 -Problem: When the user has set "did_install_syntax_menu" to avoid the - default Syntax menu it still appears. (Virgilio) -Solution: Don't add the three default items when "did_install_syntax_menu" - is set. -Files: runtime/menu.vim - -Patch 6.0.038 -Problem: When 'selection' is "exclusive", deleting a block of text at the - end of a line can leave the cursor beyond the end of the line. -Solution: Correct the cursor position. -Files: src/ops.c - -Patch 6.0.039 -Problem: "gP" leaves the cursor in the wrong position when 'virtualedit' is - used. Using "c" in blockwise Visual mode leaves the cursor in a - strange position. -Solution: For "gP" reset the "coladd" field for the '] mark. For "c" leave - the cursor on the last inserted character. -Files: src/ops.c - -Patch 6.0.040 -Problem: When 'fileencoding' is invalid and writing fails because of - this, the original file is gone. (Eric Carlier) -Solution: Restore the original file from the backup. -Files: src/fileio.c - -Patch 6.0.041 -Problem: Using ":language messages en" when LC_MESSAGES is undefined - results in setting LC_CTYPE. (Eric Carlier) -Solution: Set $LC_MESSAGES instead. -Files: src/ex_cmds2.c - -Patch 6.0.042 -Problem: ":mksession" can't handle file names with a space. -Solution: Escape special characters in file names with a backslash. -Files: src/ex_docmd.c - -Patch 6.0.043 -Problem: Patch 6.0.041 was wrong. -Solution: Use mch_getenv() instead of vim_getenv(). -Files: src/ex_cmds2.c - -Patch 6.0.044 -Problem: Using a "containedin" list for a syntax item doesn't work for an - item that doesn't have a "contains" argument. Also, "containedin" - doesn't ignore a transparent item. (Timo Frenay) -Solution: When there is a "containedin" argument somewhere, always check for - contained items. Don't check for the transparent item but the - item it's contained in. -Files: src/structs.h, src/syntax.c - -Patch 6.0.045 -Problem: After creating a fold with a Visual selection, another window - with the same buffer still has inverted text. (Sami Salonen) -Solution: Redraw the inverted text. -Files: src/normal.c - -Patch 6.0.046 -Problem: When getrlimit() returns an 8 byte number the check for running - out of stack may fail. (Anthony Meijer) -Solution: Skip the stack check if the limit doesn't fit in a long. -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/os_unix.c - -Patch 6.0.047 -Problem: Using a regexp with "\(\)" inside a "\%[]" item causes a crash. - (Samuel Lacas) -Solution: Don't allow nested atoms inside "\%[]". -Files: src/regexp.c - -Patch 6.0.048 -Problem: Win32: In the console the mouse doesn't always work correctly. - Sometimes after getting focus a mouse movement is interpreted like - a button click. -Solution: Use a different function to obtain the number of mouse buttons. - Avoid recognizing a button press from undefined bits. (Vince Negri) -Files: src/os_win32.c - -Patch 6.0.049 -Problem: When using evim the intro screen is misleading. (Adrian Nagle) -Solution: Mention whether 'insertmode' is set and the menus to be used. -Files: runtime/menu.vim, src/version.c - -Patch 6.0.050 -Problem: UTF-8: "viw" doesn't include non-ASCII characters before the - cursor. (Bertilo Wennergren) -Solution: Use dec_cursor() instead of decrementing the column number. -Files: src/search.c - -Patch 6.0.051 -Problem: UTF-8: Using CTRL-R on the command line doesn't insert composing - characters. (Ron Aaron) -Solution: Also include the composing characters and fix redrawing them. -Files: src/ex_getln.c, src/ops.c - -Patch 6.0.052 -Problem: The check for rlim_t in patch 6.0.046 does not work on some - systems. (Zdenek Sekera) -Solution: Also look in sys/resource.h for rlim_t. -Files: src/auto/configure, src/configure.in - -Patch 6.0.053 (extra) -Problem: Various problems with QNX. -Solution: Minor fix for configure. Switch on terminal clipboard support in - main.c. Fix "pterm" mouse support. os_qnx.c didn't build without - photon. (Julian Kinraid) -Files: src/auto/configure, src/configure.in, src/gui_photon.c, - src/main.c, src/misc2.c, src/option.h, src/os_qnx.c, src/os_qnx.h, - src/syntax.c - -Patch 6.0.054 -Problem: When using mswin.vim, CTRL-V pastes a block of text like it is - normal text. Using CTRL-V in blockwise Visual mode leaves "x" - characters behind. -Solution: Make CTRL-V work as it should. Do the same for the Paste menu - entries. -Files: runtime/menu.vim, runtime/mswin.vim - -Patch 6.0.055 -Problem: GTK: The selection isn't copied the first time. -Solution: Own the selection at the right moment. -Files: src/gui_gtk_x11.c - -Patch 6.0.056 -Problem: Using "CTRL-O cw" in Insert mode results in a nested Insert mode. - <Esc> doesn't leave Insert mode then. -Solution: Only use nested Insert mode when 'insertmode' is set or when a - mapping is used. -Files: src/normal.c - -Patch 6.0.057 -Problem: Using ":wincmd g}" in a function doesn't work. (Gary Holloway) -Solution: Execute the command directly, instead of putting it in the - typeahead buffer. -Files: src/normal.c, src/proto/normal.pro, src/window.c - -Patch 6.0.058 -Problem: When a Cursorhold autocommand moved the cursor, the ruler wasn't - updated. (Bohdan Vlasyuk) -Solution: Update the ruler after executing the autocommands. -Files: src/gui.c - -Patch 6.0.059 -Problem: Highlighting for 'hlsearch' isn't visible in lines that are - highlighted for diff highlighting. (Gary Holloway) -Solution: Let 'hlsearch' highlighting overrule diff highlighting. -Files: src/screen.c - -Patch 6.0.060 -Problem: Motif: When the tooltip is to be popped up, Vim crashes. - (Gary Holloway) -Solution: Check for a NULL return value from gui_motif_fontset2fontlist(). -Files: src/gui_beval.c - -Patch 6.0.061 -Problem: The toolbar buttons to load and save a session do not correctly - use v:this_session. -Solution: Check for v:this_session to be empty instead of existing. -Files: runtime/menu.vim - -Patch 6.0.062 -Problem: Crash when 'verbose' is > 3 and using ":shell". (Yegappan - Lakshmanan) -Solution: Avoid giving a NULL pointer to printf(). Also output a newline - and switch the cursor on. -Files: src/misc2.c - -Patch 6.0.063 -Problem: When 'cpoptions' includes "$", using "cw" to type a ')' on top of - the "$" doesn't update syntax highlighting after it. -Solution: Stop displaying the "$" when typing a ')' in its position. -Files: src/search.c - -Patch 6.0.064 (extra) -Problem: The NSIS install script doesn't work with newer versions of NSIS. - The diff feature doesn't work when there isn't a good diff.exe on - the system. -Solution: Replace the GetParentDir instruction by a user function. - Fix a few cosmetic problems. Use defined constants for the - version number, so that it's defined in one place only. - Only accept the install directory when it ends in "vim". - (Eduardo Fernandez) - Add a diff.exe and use it from the default _vimrc. -Files: nsis/gvim.nsi, nsis/README.txt, src/dosinst.c - -Patch 6.0.065 -Problem: When using ":normal" in 'indentexpr' it may use redo characters - before its argument. (Neil Bird) -Solution: Save and restore the stuff buffer in ex_normal(). -Files: src/ex_docmd.c, src/getchar.c, src/globals.h, src/structs.h - -Patch 6.0.066 -Problem: Sometimes undo for one command is split into two undo actions. - (Halim Salman) -Solution: Don't set the undo-synced flag when reusing a line that was - already saved for undo. -Files: src/undo.c - -Patch 6.0.067 -Problem: if_xcmdsrv.c doesn't compile on systems where fd_set isn't defined - in the usual header file (e.g., AIX). (Mark Waggoner) -Solution: Include sys/select.h in if_xcmdsrv.c for systems that have it. -Files: src/if_xcmdsrv.c - -Patch 6.0.068 -Problem: When formatting a Visually selected area with "gq" and the number - of lines increases the last line may not be redrawn correctly. - (Yegappan Lakshmanan) -Solution: Correct the area to be redrawn for inserted/deleted lines. -Files: src/ops.c - -Patch 6.0.069 -Problem: Using "K" on a word that includes a "!" causes a "No previous - command" error, because the "!" is expanded. (Craig Jeffries) -Solution: Put a backslash before the "!". -Files: src/normal.c - -Patch 6.0.070 -Problem: Win32: The error message for a failed dynamic linking of a Perl, - Ruby, Tcl and Python library is unclear about what went wrong. -Solution: Give the name of the library or function that could not be loaded. - Also for the iconv and gettext libraries when 'verbose' is set. -Files: src/eval.c, src/if_perl.xs, src/if_python.c, src/if_ruby.c, - src/if_tcl.c, src/mbyte.c, src/os_win32.c, src/proto/if_perl.pro, - src/proto/if_python.pro, src/proto/if_ruby.pro, - src/proto/if_tcl.pro, src/proto/mbyte.pro - -Patch 6.0.071 -Problem: The "iris-ansi" builtin termcap isn't very good. -Solution: Fix the wrong entries. (David Harrison) -Files: src/term.c - -Patch 6.0.072 -Problem: When 'lazyredraw' is set, a mapping that stops Visual mode, moves - the cursor and starts Visual mode again causes a redraw problem. - (Brian Silverman) -Solution: Redraw both the old and the new Visual area when necessary. -Files: src/normal.c, src/screen.c - -Patch 6.0.073 (extra) -Problem: DJGPP: When using CTRL-Z to start a shell, the prompt is halfway - the text. (Volker Kiefel) -Solution: Position the system cursor before starting the shell. -Files: src/os_msdos.c - -Patch 6.0.074 -Problem: When using "&" in a substitute string a multi-byte character with - a trailbyte 0x5c is not handled correctly. -Solution: Recognize multi-byte characters inside the "&" part. (Muraoka Taro) -Files: src/regexp.c - -Patch 6.0.075 -Problem: When closing a horizontally split window while 'eadirection' is - "hor" another horizontally split window is still resized. (Aron - Griffis) -Solution: Only resize windows in the same top frame as the window that is - split or closed. -Files: src/main.c, src/proto/window.pro, src/window.c - -Patch 6.0.076 -Problem: Warning for wrong pointer type when compiling. -Solution: Use char instead of char_u pointer. -Files: src/version.c - -Patch 6.0.077 -Problem: Patch 6.0.075 was incomplete. -Solution: Fix another call to win_equal(). -Files: src/option.c - -Patch 6.0.078 -Problem: Using "daw" at the end of a line on a single-character word didn't - include the white space before it. At the end of the file it - didn't work at all. (Gavin Sinclair) -Solution: Include the white space before the word. -Files: src/search.c - -Patch 6.0.079 -Problem: When "W" is in 'cpoptions' and 'backupcopy' is "no" or "auto", can - still overwrite a read-only file, because it's renamed. (Gary - Holloway) -Solution: Add a check for a read-only file before renaming the file to - become the backup. -Files: src/fileio.c - -Patch 6.0.080 -Problem: When using a session file that has the same file in two windows, - the fileinfo() call in do_ecmd() causes a scroll and a hit-enter - prompt. (Robert Webb) -Solution: Don't scroll this message when 'shortmess' contains 'O'. -Files: src/ex_cmds.c - -Patch 6.0.081 -Problem: After using ":saveas" the new buffer name is added to the Buffers - menu with a wrong number. (Chauk-Mean Proum) -Solution: Trigger BufFilePre and BufFilePost events for the renamed buffer - and BufAdd for the old name (which is with a new buffer). -Files: src/ex_cmds.c - -Patch 6.0.082 -Problem: When swapping screens in an xterm and there is an (error) message - from the vimrc script, the shell prompt is after the message. -Solution: Output a newline when there was output on the alternate screen. - Also when starting the GUI. -Files: src/main.c - -Patch 6.0.083 -Problem: GTK: When compiled without menu support the buttons in a dialog - don't have any text. (Erik Edelmann) -Solution: Add the text also when GTK_USE_ACCEL isn't defined. And define - GTK_USE_ACCEL also when not using menus. -Files: src/gui_gtk.c - -Patch 6.0.084 -Problem: UTF-8: a "r" command with an argument that is a keymap for a - character with a composing character can't be repeated with ".". - (Raphael Finkel) -Solution: Add the composing characters to the redo buffer. -Files: src/normal.c - -Patch 6.0.085 -Problem: When 'mousefocus' is set, using "s" to go to Insert mode and then - moving the mouse pointer to another window stops Insert mode, - while this doesn't happen with "a" or "i". (Robert Webb) -Solution: Reset finish_op before calling edit(). -Files: src/normal.c - -Patch 6.0.086 -Problem: When using "gu" the message says "~ed". -Solution: Make the message say "changed". -Files: src/ops.c - -Patch 6.0.087 (lang) -Problem: Message translations are incorrect, which may cause a crash. - (Peter Figura) - The Turkish translations needed more work and the maintainer - didn't have time. -Solution: Fix order of printf arguments. Remove %2$d constructs. - Add "-v" to msgfmt to get a warning for wrong translations. - Don't install the Turkish translations for now. - Update a few more translations. -Files: src/po/Makefile, src/po/af.po, src/po/cs.po, src/po/cs.cp1250.po, - src/po/de.po, src/po/es.po, src/po/fr.po, src/po/it.po, - src/po/ja.po, src/po/ja.sjis.po, src/po/ko.po, src/po/pl.po, - src/po/sk.po, src/po/uk.po, src/po/zh_CN.UTF-8.po, - src/po/zh_CN.cp936.po, src/po/zh_CN.po, src/po/zh_TW.po - -Patch 6.0.088 -Problem: "." doesn't work after using "rx" in Visual mode. (Charles - Campbell) -Solution: Also store the replacement character in the redo buffer. -Files: src/normal.c - -Patch 6.0.089 -Problem: In a C file, using "==" to align a line starting with "* " after - a line with "* -" indents one space too few. (Piet Delport) -Solution: Align with the previous line if the comment-start-string matches - there. -Files: src/misc1.c - -Patch 6.0.090 -Problem: When a wrapping line does not fit in a window and 'scrolloff' is - bigger than half the window height, moving the cursor left or - right causes the screen to flash badly. (Lubomir Host) -Solution: When there is not enough room to show 'scrolloff' screen lines and - near the end of the line, show the end of the line. -Files: src/move.c - -Patch 6.0.091 -Problem: Using CTRL-O in Insert mode, while 'virtualedit' is "all" and the - cursor is after the end-of-line, moves the cursor left. (Yegappan - Lakshmanan) -Solution: Keep the cursor in the same position. -Files: src/edit.c - -Patch 6.0.092 -Problem: The explorer plugin doesn't ignore case of 'suffixes' on - MS-Windows. (Mike Williams) -Solution: Match or ignore case as appropriate for the OS. -Files: runtime/plugin/explorer.vim - -Patch 6.0.093 -Problem: When the Tcl library couldn't be loaded dynamically, get an error - message when closing a buffer or window. (Muraoka Taro) -Solution: Only free structures if already using the Tcl interpreter. -Files: src/if_tcl.c - -Patch 6.0.094 -Problem: Athena: When clicking in the horizontal scrollbar Vim crashes. - (Paul Ackersviller) -Solution: Use the thumb size instead of the window pointer of the scrollbar - (which is NULL). (David Harrison) - Also avoid that scrolling goes the wrong way in a narrow window. -Files: src/gui_athena.c - -Patch 6.0.095 -Problem: Perl: Deleting lines may leave the cursor beyond the end of the - file. -Solution: Check the cursor position after deleting a line. (Serguei) -Files: src/if_perl.xs - -Patch 6.0.096 -Problem: When ":saveas fname" fails because the file already exists, the - file name is changed anyway and a following ":w" will overwrite - the file. (Eric Carlier) -Solution: Don't change the file name if the file already exists. -Files: src/ex_cmds.c - -Patch 6.0.097 -Problem: Re-indenting in Insert mode with CTRL-F may cause a crash with a - multi-byte encoding. -Solution: Avoid using a character before the start of a line. (Sergey - Vlasov) -Files: src/edit.c - -Patch 6.0.098 -Problem: GTK: When using Gnome the "Search" and "Search and Replace" dialog - boxes are not translated. -Solution: Define ENABLE_NLS before including gnome.h. (Eduardo Fernandez) -Files: src/gui_gtk.c, src/gui_gtk_x11.c - -Patch 6.0.099 -Problem: Cygwin: When running Vi compatible MS-DOS line endings cause - trouble. -Solution: Make the default for 'fileformats' "unix,dos" in Vi compatible - mode. (Michael Schaap) -Files: src/option.h - -Patch 6.0.100 -Problem: ":badd +0 test%file" causes a crash. -Solution: Take into account that the "+0" is NUL terminated when allocating - room for replacing the "%". -Files: src/ex_docmd.c - -Patch 6.0.101 -Problem: ":mksession" doesn't restore editing a file that has a '#' or '%' - in its name. (Wolfgang Blankenburg) -Solution: Put a backslash before the '#' and '%'. -Files: src/ex_docmd.c - -Patch 6.0.102 -Problem: When changing folds the cursor may appear halfway a closed fold. - (Nam SungHyun) -Solution: Set w_cline_folded correctly. (Yasuhiro Matsumoto) -Files: src/move.c - -Patch 6.0.103 -Problem: When using 'scrollbind' a large value of 'scrolloff' will make the - scroll binding stop near the end of the file. (Coen Engelbarts) -Solution: Don't use 'scrolloff' when limiting the topline for scroll - binding. (Dany StAmant) -Files: src/normal.c - -Patch 6.0.104 -Problem: Multi-byte: When '$' is in 'cpoptions', typing a double-wide - character that overwrites the left halve of an old double-wide - character causes a redraw problem and the cursor stops blinking. -Solution: Clear the right half of the old character. (Yasuhiro Matsumoto) -Files: src/edit.c, src/screen.c - -Patch 6.0.105 -Problem: Multi-byte: In a window of one column wide, with syntax - highlighting enabled a crash might happen. -Solution: Skip getting the syntax attribute when the character doesn't fit - anyway. (Yasuhiro Matsumoto) -Files: src/screen.c - -Patch 6.0.106 (extra) -Problem: Win32: When the printer font is wrong, there is no error message. -Solution: Give an appropriate error message. (Yasuhiro Matsumoto) -Files: src/os_mswin.c - -Patch 6.0.107 (extra) -Problem: VisVim: When editing another file, a modified file may be written - unexpectedly and without warning. -Solution: Split the window if a file was modified. -Files: VisVim/Commands.cpp - -Patch 6.0.108 -Problem: When using folding could try displaying line zero, resulting in an - error for a NULL pointer. -Solution: Stop decrementing w_topline when the first line of a window is in - a closed fold. -Files: src/window.c - -Patch 6.0.109 -Problem: XIM: When the input method is enabled, repeating an insertion with - "." disables it. (Marcel Svitalsky) -Solution: Don't store the input method status when a command comes from the - stuff buffer. -Files: src/ui.c - -Patch 6.0.110 -Problem: Using undo after executing "OxjAxkdd" from a register in - an empty buffer gives an error message. (Gerhard Hochholzer) -Solution: Don't adjust the bottom line number of an undo block when it's - zero. Add a test for this problem. -Files: src/undo.c, src/testdir/test20.in, src/testdir/test20.ok - -Patch 6.0.111 -Problem: The virtcol() function doesn't take care of 'virtualedit'. -Solution: Add the column offset when needed. (Yegappan Lakshmanan) -Files: src/eval.c - -Patch 6.0.112 -Problem: The explorer plugin doesn't sort directories with a space or - special character after a directory with a shorter name. -Solution: Ignore the trailing slash when comparing directory names. (Mike - Williams) -Files: runtime/plugin/explorer.vim - -Patch 6.0.113 -Problem: ":edit ~/fname" doesn't work if $HOME includes a space. Also, - expanding wildcards with the shell may fail. (John Daniel) -Solution: Escape spaces with a backslash when needed. -Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/os_unix.c - -Patch 6.0.114 -Problem: Using ":p" with fnamemodify() didn't expand "~/" or "~user/" to a - full path. For Win32 the current directory was prepended. - (Michael Geddes) -Solution: Expand the home directory. -Files: src/eval.c - -Patch 6.0.115 (extra) -Problem: Win32: When using a dialog with a textfield it cannot scroll the - text. -Solution: Add ES_AUTOHSCROLL to the textfield style. (Pedro Gomes) -Files: src/gui_w32.c - -Patch 6.0.116 (extra) -Problem: MS-Windows NT/2000/XP: filewritable() doesn't work correctly for - filesystems that use ACLs. -Solution: Use ACL functions to check if a file is writable. (Mike Williams) -Files: src/eval.c, src/macros.h, src/os_win32.c, src/proto/os_win32.pro - -Patch 6.0.117 (extra) -Problem: Win32: when disabling the menu, "set lines=999" doesn't use all - the available screen space. -Solution: Don't subtract the fixed caption height but the real menu height - from the available screen space. Also: Avoid recursion in - gui_mswin_get_menu_height(). -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.0.118 -Problem: When $TMPDIR is a relative path, the temp directory is missing a - trailing slash and isn't deleted when Vim exits. (Peter Holm) -Solution: Add the slash after expanding the directory to an absolute path. -Files: src/fileio.c - -Patch 6.0.119 (depends on patch 6.0.116) -Problem: VMS: filewritable() doesn't work properly. -Solution: Use the same method as for Unix. (Zoltan Arpadffy) -Files: src/eval.c - -Patch 6.0.120 -Problem: The conversion to html isn't compatible with XHTML. -Solution: Quote the values. (Jess Thrysoee) -Files: runtime/syntax/2html.vim - -Patch 6.0.121 (extra) (depends on patch 6.0.116) -Problem: Win32: After patch 6.0.116 Vim doesn't compile with mingw32. -Solution: Add an #ifdef HAVE_ACL. -Files: src/os_win32.c - -Patch 6.0.122 (extra) -Problem: Win16: Same resize problems as patch 6.0.117 fixed for Win32. And - dialog textfield problem from patch 6.0.115. -Solution: Set old_menu_height only when used. Add ES_AUTOHSCROLL flag. - (Vince Negri) -Files: src/gui_w16.c - -Patch 6.0.123 (depends on patch 6.0.119) -Problem: Win16: Compilation problems. -Solution: Move "&&" to other lines. (Vince Negri) -Files: src/eval.c - -Patch 6.0.124 -Problem: When using a ":substitute" command that starts with "\=" - (evaluated as an expression), "~" was still replaced with the - previous substitute string. -Solution: Skip the replacement when the substitute string starts with "\=". - Also adjust the documentation about doubling backslashes. -Files: src/ex_cmds.c, runtime/doc/change.txt - -Patch 6.0.125 (extra) -Problem: Win32: When using the multi_byte_ime feature pressing the shift - key would be handled as if a character was entered, thus mappings - with a shifted key didn't work. (Charles Campbell) -Solution: Ignore pressing the shift, control and alt keys. -Files: src/os_win32.c - -Patch 6.0.126 -Problem: The python library was always statically linked. -Solution: Link the python library dynamically. (Matthias Klose) -Files: src/auto/configure, src/configure.in - -Patch 6.0.127 -Problem: When using a terminal that swaps screens and the Normal background - color has a different background, using an external command may - cause the color of the wrong screen to be changed. (Mark Waggoner) -Solution: Don't call screen_stop_highlight() in stoptermcap(). -Files: src/term.c - -Patch 6.0.128 -Problem: When moving a vertically split window to the far left or right, - the scrollbars are not adjusted. (Scott E Lee) When 'mousefocus' - is set the mouse pointer wasn't adjusted. -Solution: Adjust the scrollbars and the mouse pointer. -Files: src/window.c - -Patch 6.0.129 -Problem: When using a very long file name, ":ls" (repeated a few times) - causes a crash. Test with "vim `perl -e 'print "A"x1000'`". - (Tejeda) -Solution: Terminate a string before getting its length in buflist_list(). -Files: src/buffer.c - -Patch 6.0.130 -Problem: When using ":cprev" while the error window is open, and the new - line at the top wraps, the window isn't correctly drawn. - (Yegappan Lakshmanan) -Solution: When redrawing the topline don't scroll twice. -Files: src/screen.c - -Patch 6.0.131 -Problem: When using bufname() and there are two matches for listed buffers - and one match for an unlisted buffer, the unlisted buffer is used. - (Aric Blumer) -Solution: When there is a match with a listed buffer, don't check for - unlisted buffers. -Files: src/buffer.c - -Patch 6.0.132 -Problem: When setting 'iminsert' in the vimrc and using an xterm with two - screens the ruler is drawn in the wrong screen. (Igor Goldenberg) -Solution: Only draw the ruler when using the right screen. -Files: src/option.c - -Patch 6.0.133 -Problem: When opening another buffer while 'keymap' is set and 'iminsert' - is zero, 'iminsert' is set to one unexpectedly. (Igor Goldenberg) -Solution: Don't set 'iminsert' as a side effect of defining a ":lmap" - mapping. Only do that when 'keymap' is set. -Files: src/getchar.c, src/option.c - -Patch 6.0.134 -Problem: When completing ":set tags=" a path with an embedded space causes - the completion to stop. (Sektor van Skijlen) -Solution: Escape spaces with backslashes, like for ":set path=". Also take - backslashes into account when searching for the start of the path - to complete (e.g., for 'backupdir' and 'cscopeprg'). -Files: src/ex_docmd.c, src/ex_getln.c, src/option.c, src/structs.h - -Patch 6.0.135 -Problem: Menus that are not supposed to do anything used "<Nul>", which - still produced an error beep. - When CTRL-O is mapped for Insert mode, ":amenu" commands didn't - work in Insert mode. - Menu language falls back to English when $LANG ends in "@euro". -Solution: Use "<Nop>" for a menu item that doesn't do anything, just like - mappings. - Use ":anoremenu" instead of ":amenu". - Ignore "@euro" in the locale name. -Files: runtime/makemenu.vim, runtime/menu.vim, src/menu.c - -Patch 6.0.136 -Problem: When completing in Insert mode, a mapping could be unexpectedly - applied. -Solution: Don't use mappings when checking for a typed character. -Files: src/edit.c - -Patch 6.0.137 -Problem: GUI: When using the find or find/replace dialog from Insert mode, - the input mode is stopped. -Solution: Don't use the input method status when the main window doesn't - have focus. -Files: src/ui.c - -Patch 6.0.138 -Problem: GUI: When using the find or find/replace dialog from Insert mode, - the text is inserted when CTRL-O is mapped. (Andre Pang) - When opening the dialog again, a whole word search isn't - recognized. - When doing "replace all" a whole word search was never done. -Solution: Don't put a search or replace command in the input buffer, - execute it directly. - Recognize "\<" and "\>" after removing "\V". - Add "\<" and "\>" also for "replace all". -Files: src/gui.c - -Patch 6.0.139 -Problem: When stopping 'wildmenu' completion, the statusline of the - bottom-left vertically split window isn't redrawn. (Yegappan - Lakshmanan) -Solution: Redraw all the bottom statuslines. -Files: src/ex_getln.c, src/proto/screen.pro, src/screen.c - -Patch 6.0.140 -Problem: Memory allocated for local mappings and abbreviations is leaked - when the buffer is wiped out. -Solution: Clear the local mappings when deleting a buffer. -Files: src/buffer.c, src/getchar.c, src/proto/getchar.pro, src/vim.h - -Patch 6.0.141 -Problem: When using ":enew" in an empty buffer, some buffer-local things - are not cleared. b:keymap_name is not set. -Solution: Clear user commands and mappings local to the buffer when re-using - the current buffer. Reload the keymap. -Files: src/buffer.c - -Patch 6.0.142 -Problem: When Python is linked statically, loading dynamic extensions might - fail. -Solution: Add an extra linking flag when needed. (Andrew Rodionoff) -Files: src/configure.in, src/auto/configure - -Patch 6.0.143 -Problem: When a syntax item includes a line break in a pattern, the syntax - may not be updated properly when making a change. -Solution: Add the "linebreaks" argument to ":syn sync". -Files: runtime/doc/syntax.txt, src/screen.c, src/structs.h, src/syntax.c - -Patch 6.0.144 -Problem: After patch 6.0.088 redoing "veU" doesn't work. -Solution: Don't add the "U" to the redo buffer, it will be used as an undo - command. -Files: src/normal.c - -Patch 6.0.145 -Problem: When Vim can't read any input it might get stuck. When - redirecting stdin and stderr Vim would not read commands from a - file. (Servatius Brandt) -Solution: When repeatedly trying to read a character when it's not possible, - exit Vim. When stdin and stderr are not a tty, still try reading - from them, but don't do a blocking wait. -Files: src/ui.c - -Patch 6.0.146 -Problem: When 'statusline' contains "%{'-'}" this results in a zero. - (Milan Vancura) -Solution: Don't handle numbers with a minus as a number, they were not - displayed anyway. -Files: src/buffer.c - -Patch 6.0.147 -Problem: It's not easy to mark a Vim version as being modified. The new - license requires this. -Solution: Add the --modified-by argument to configure and the MODIFIED_BY - define. I's used in the intro screen and the ":version" output. -Files: src/auto/configure, src/configure.in, src/config.h.in, - src/feature.h, src/version.c - -Patch 6.0.148 -Problem: After "p" in an empty line, `[ goes to the second character. - (Kontra Gergely) -Solution: Don't increment the column number in an empty line. -Files: src/ops.c - -Patch 6.0.149 -Problem: The pattern "\(.\{-}\)*" causes a hang. When using a search - pattern that causes a stack overflow to be detected Vim could - still hang. -Solution: Correctly report "operand could be empty" when using "\{-}". - Check for "out_of_stack" inside loops to avoid a hang. -Files: src/regexp.c - -Patch 6.0.150 -Problem: When using a multi-byte encoding, patch 6.0.148 causes "p" to work - like "P". (Sung-Hyun Nam) -Solution: Compute the byte length of a multi-byte character. -Files: src/ops.c - -Patch 6.0.151 -Problem: Redrawing the status line and ruler can be wrong when it contains - multi-byte characters. -Solution: Use character width and byte length correctly. (Yasuhiro Matsumoto) -Files: src/screen.c - -Patch 6.0.152 -Problem: strtrans() could hang on an illegal UTF-8 byte sequence. -Solution: Skip over illegal bytes. (Yasuhiro Matsumoto) -Files: src/charset.c - -Patch 6.0.153 -Problem: When using (illegal) double-byte characters and Vim syntax - highlighting Vim can crash. (Yasuhiro Matsumoto) -Solution: Increase a pointer over a character instead of a byte. -Files: src/regexp.c - -Patch 6.0.154 -Problem: MS-DOS and MS-Windows: The menu entries for xxd don't work when - there is no xxd in the path. - When converting back from Hex the filetype may remain "xxd" if it - is not detected. -Solution: When xxd is not in the path use the one in the runtime directory, - where the install program has put it. - Clear the 'filetype' option before detecting the new value. -Files: runtime/menu.vim - -Patch 6.0.155 -Problem: Mac: compilation problems in ui.c after patch 6.0.145. (Axel - Kielhorn) -Solution: Don't call mch_inchar() when NO_CONSOLE is defined. -Files: src/ui.c - -Patch 6.0.156 -Problem: Starting Vim with the -b argument and two files, ":next" doesn't - set 'binary' in the second file, like Vim 5.7. (Norman Diamond) -Solution: Set the global value for 'binary'. -Files: src/option.c - -Patch 6.0.157 -Problem: When defining a user command with "-complete=dir" files will also - be expanded. Also, "-complete=mapping" doesn't appear to work. - (Michael Naumann) -Solution: Use the expansion flags defined with the user command. - Handle expanding mappings specifically. -Files: src/ex_docmd.c - -Patch 6.0.158 -Problem: When getting the warning for a file being changed outside of Vim - and reloading the file, the 'readonly' option is reset, even when - the permissions didn't change. (Marcel Svitalsky) -Solution: Keep 'readonly' set when reloading a file and the permissions - didn't change. -Files: src/fileio.c - -Patch 6.0.159 -Problem: Wildcard expansion for ":emenu" also shows separators. -Solution: Skip menu separators for ":emenu", ":popup" and ":tearoff". - Also, don't handle ":tmenu" as if it was ":tearoff". And leave - out the alternatives with "&" included. -Files: src/menu.c - -Patch 6.0.160 -Problem: When compiling with GCC 3.0.2 and using the "-O2" argument, the - optimizer causes a problem that makes Vim crash. -Solution: Add a configure check to avoid "-O2" for this version of gcc. -Files: src/configure.in, src/auto/configure - -Patch 6.0.161 (extra) -Problem: Win32: Bitmaps don't work with signs. -Solution: Make it possible to use bitmaps with signs. (Muraoka Taro) -Files: src/ex_cmds.c, src/feature.h, src/gui_w32.c, src/gui_x11.c, - src/proto/gui_w32.pro, src/proto/gui_x11.pro - -Patch 6.0.162 -Problem: Client-server: An error message for a wrong expression appears in - the server instead of the client. -Solution: Pass the error message from the server to the client. Also - adjust the example code. (Flemming Madsen) -Files: src/globals.h, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, - src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro, - runtime/doc/eval.txt, runtime/tools/xcmdsrv_client.c - -Patch 6.0.163 -Problem: When using a GUI dialog, a file name is sometimes used like it was - a directory. -Solution: Separate path and file name properly. - For GTK, Motif and Athena concatenate directory and file name for - the default selection. -Files: src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, - src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c, src/message.c - -Patch 6.0.164 -Problem: After patch 6.0.135 the menu entries for pasting don't work in - Insert and Visual mode. (Muraoka Taro) -Solution: Add <script> to allow script-local mappings. -Files: runtime/menu.vim - -Patch 6.0.165 -Problem: Using --remote and executing locally gives unavoidable error - messages. -Solution: Add --remote-silent and --remote-wait-silent to silently execute - locally. - For Win32 there was no error message when a server didn't exist. -Files: src/eval.c, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, - src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro - -Patch 6.0.166 -Problem: GUI: There is no way to avoid dialogs to pop up. -Solution: Add the 'c' flag to 'guioptions': Use console dialogs. (Yegappan - Lakshmanan) -Files: runtime/doc/options.txt, src/option.h, src/message.c - -Patch 6.0.167 -Problem: When 'fileencodings' is "latin2" some characters in the help files - are displayed wrong. -Solution: Force the 'fileencoding' for the help files to be "latin1". -Files: src/fileio.c - -Patch 6.0.168 -Problem: ":%s/\n/#/" doesn't replace at an empty line. (Bruce DeVisser) -Solution: Don't skip matches after joining two lines. -Files: src/ex_cmds.c - -Patch 6.0.169 -Problem: When run as evim and the GUI can't be started we get stuck in a - terminal without menus in Insert mode. -Solution: Exit when using "evim" and "gvim -y" when the GUI can't be - started. -Files: src/main.c - -Patch 6.0.170 -Problem: When printing double-width characters the size of tabs after them - is wrong. (Muraoka Taro) -Solution: Correctly compute the column after a double-width character. -Files: src/ex_cmds2.c - -Patch 6.0.171 -Problem: With 'keymodel' including "startsel", in Insert mode after the end - of a line, shift-Left does not move the cursor. (Steve Hall) -Solution: CTRL-O doesn't move the cursor left, need to do that explicitly. -Files: src/edit.c - -Patch 6.0.172 -Problem: CTRL-Q doesn't replace CTRL-V after CTRL-X in Insert mode while it - does in most other situations. -Solution: Make CTRL-X CTRL-Q work like CTRL-X CTRL-V in Insert mode. -Files: src/edit.c - -Patch 6.0.173 -Problem: When using "P" to insert a line break the cursor remains past the - end of the line. -Solution: Check for the cursor being beyond the end of the line. -Files: src/ops.c - -Patch 6.0.174 -Problem: After using "gd" or "gD" the search direction for "n" may still be - backwards. (Servatius Brandt) -Solution: Reset the search direction to forward. -Files: src/normal.c, src/search.c, src/proto/search.pro - -Patch 6.0.175 -Problem: ":help /\z(\)" doesn't work. (Thomas Koehler) -Solution: Double the backslashes. -Files: src/ex_cmds.c - -Patch 6.0.176 -Problem: When killed by a signal autocommands are still triggered as if - nothing happened. -Solution: Add the v:dying variable to allow autocommands to work differently - when a deadly signal has been trapped. -Files: src/eval.c, src/os_unix.c, src/vim.h - -Patch 6.0.177 -Problem: When 'commentstring' is empty and 'foldmethod' is "marker", "zf" - doesn't work. (Thomas S. Urban) -Solution: Add the marker even when 'commentstring' is empty. -Files: src/fold.c, src/normal.c - -Patch 6.0.178 -Problem: Uninitialized memory read from xp_backslash field. -Solution: Initialize xp_backslash field properly. -Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/misc1.c, src/tag.c - -Patch 6.0.179 -Problem: Win32: When displaying UTF-8 characters may read uninitialized - memory. -Solution: Add utfc_ptr2len_check_len() to avoid reading past the end of a - string. -Files: src/mbyte.c, src/proto/mbyte.pro, src/gui_w32.c - -Patch 6.0.180 -Problem: Expanding environment variables in a string that ends in a - backslash could go past the end of the string. -Solution: Detect the trailing backslash. -Files: src/misc1.c - -Patch 6.0.181 -Problem: When using ":cd dir" memory was leaked. -Solution: Free the allocated memory. Also avoid an uninitialized memory - read. -Files: src/misc2.c - -Patch 6.0.182 -Problem: When using a regexp on multi-byte characters, could try to read a - character before the start of the line. -Solution: Don't decrement a pointer to before the start of the line. -Files: src/regexp.c - -Patch 6.0.183 -Problem: Leaking memory when ":func!" redefines a function. -Solution: Free the function name when it's not used. -Files: src/eval.c - -Patch 6.0.184 -Problem: Leaking memory when expanding option values. -Solution: Don't always copy the expanded option into allocated memory. -Files: src/option.c - -Patch 6.0.185 -Problem: Crash in Vim when pasting a selection in another application, on a - 64 bit machine. -Solution: Fix the format for an Atom to 32 bits. (Peter Derr) -Files: src/ui.c - -Patch 6.0.186 -Problem: X11: Three warnings when compiling the client-server code. -Solution: Add a typecast to unsigned char. -Files: src/if_xcmdsrv.c - -Patch 6.0.187 -Problem: "I" in Visual mode and then "u" reports too many changes. (Andrew - Stryker) - "I" in Visual linewise mode adjusts the indent for no apparent - reason. -Solution: Only save those lines for undo that are changed. - Don't change the indent after inserting in Visual linewise mode. -Files: src/ops.c - -Patch 6.0.188 -Problem: Win32: After patch 6.0.161 signs defined in the vimrc file don't - work. -Solution: Initialize the sign icons after initializing the GUI. (Vince - Negri) -Files: src/gui.c, src/gui_x11.c - -Patch 6.0.189 -Problem: The size of the Visual area isn't always displayed when scrolling - ('ruler' off, 'showcmd' on). Also not when using a search - command. (Sylvain Hitier) -Solution: Redisplay the size of the selection after showing the mode. -Files: src/screen.c - -Patch 6.0.190 -Problem: GUI: when 'mouse' is empty a click with the middle button still - moves the cursor. -Solution: Paste at the cursor position instead of the mouse position. -Files: src/normal.c - -Patch 6.0.191 -Problem: When no servers are available serverlist() gives an error instead - of returning an empty string. (Hari Krishna) -Solution: Don't give an error message. -Files: src/eval.c - -Patch 6.0.192 -Problem: When 'virtualedit' is set, "ylj" goes to the wrong column. (Andrew - Nikitin) -Solution: Reset the flag that w_virtcol is valid when moving the cursor back - to the start of the operated area. -Files: src/normal.c - -Patch 6.0.193 -Problem: When 'virtualedit' is set, col(".") after the end of the line - should return one extra. -Solution: Add one to the column. -Files: src/eval.c - -Patch 6.0.194 -Problem: "--remote-silent" tries to send a reply to the client, like it was - "--remote-wait". -Solution: Properly check for the argument. -Files: src/main.c - -Patch 6.0.195 -Problem: When 'virtualedit' is set and a search starts in virtual space - ":call search('x')" goes to the wrong position. (Eric Long) -Solution: Reset coladd when finding a match. -Files: src/search.c - -Patch 6.0.196 -Problem: When 'virtualedit' is set, 'selection' is "exclusive" and visually - selecting part of a tab at the start of a line, "x" joins it with - the previous line. Also, when the selection spans more than one - line the whole tab is deleted. -Solution: Take coladd into account when adjusting for 'selection' being - "exclusive". Also expand a tab into spaces when deleting more - than one line. -Files: src/normal.c, src/ops.c - -Patch 6.0.197 -Problem: When 'virtualedit' is set and 'selection' is "exclusive", "v$x" - doesn't delete the last character in the line. (Eric Long) -Solution: Don't reset the inclusive flag. (Helmut Stiegler) -Files: src/normal.c - -Patch 6.0.198 -Problem: When 'virtualedit' is set and 'showbreak' is not empty, moving the - cursor over the line break doesn't work properly. (Eric Long) -Solution: Make getviscol() and getviscol2() use getvvcol() to obtain the - virtual cursor position. Adjust coladvance() and oneleft() to - skip over the 'showbreak' characters. -Files: src/edit.c, src/misc2.c - -Patch 6.0.199 -Problem: Multi-byte: could use iconv() after calling iconv_end(). - (Yasuhiro Matsumoto) -Solution: Stop converting input and output stream after calling iconv_end(). -Files: src/mbyte.c - -Patch 6.0.200 -Problem: A script that starts with "#!perl" isn't recognized as a Perl - filetype. -Solution: Ignore a missing path in a script header. Also, speed up - recognizing scripts by simplifying the patterns used. -Files: runtime/scripts.vim - -Patch 6.0.201 -Problem: When scrollbinding and doing a long jump, switching windows jumps - to another position in the file. Scrolling a few lines at a time - is OK. (Johannes Zellner) -Solution: When setting w_topline reset the flag that indicates w_botline is - valid. -Files: src/diff.c - -Patch 6.0.202 -Problem: The "icon=" argument for the menu command to define a toolbar icon - with a file didn't work for GTK. (Christian J. Robinson) - For Motif and Athena a full path was required. -Solution: Search the icon file using the specified path. Expand environment - variables in the file name. -Files: src/gui_gtk.c, src/gui_x11.c - -Patch 6.0.203 -Problem: Can change 'fileformat' even though 'modifiable' is off. - (Servatius Brandt) -Solution: Correct check for kind of set command. -Files: src/option.c - -Patch 6.0.204 -Problem: ":unlet" doesn't work for variables with curly braces. (Thomas - Scott Urban) -Solution: Handle variable names with curly braces properly. (Vince Negri) -Files: src/eval.c - -Patch 6.0.205 (extra) -Problem: "gvim -f" still forks when using the batch script to start Vim. -Solution: Add an argument to "start" to use a foreground session (Michael - Geddes) -Files: src/dosinst.c - -Patch 6.0.206 -Problem: Unix: if expanding a wildcard in a file name results in a - wildcard character and there are more parts in the path with a - wildcard, it is expanded again. - Windows: ":edit \[abc]" could never edit the file "[abc]". -Solution: Don't expand wildcards in already expanded parts. - Don't remove backslashes used to escape the special meaning of a - wildcard; can edit "[abc]" if '[' is removed from 'isfname'. -Files: src/misc1.c, src/os_unix.c - -Patch 6.0.207 (extra) -Problem: Win32: The shortcuts and start menu entries let Vim startup in the - desktop directory, which is not very useful. -Solution: Let shortcuts start Vim in $HOME or $HOMEDIR$HOMEPATH. -Files: src/dosinst.c - -Patch 6.0.208 -Problem: GUI: When using a keymap and the cursor is not blinking, CTRL-^ in - Insert mode doesn't directly change the cursor color. (Alex - Solow) -Solution: Force a redraw of the cursor after CTRL-^. -Files: src/edit.c - -Patch 6.0.209 -Problem: GUI GTK: After selecting a 'guifont' with the font dialog there - are redraw problems for multi-byte characters. -Solution: Separate the font dialog from setting the new font name to avoid - that "*" is used to find wide and bold fonts. - When redrawing extra characters for the bold trick, take care of - UTF-8 characters. -Files: src/gui.c, src/gui_gtk_x11.c, src/option.c, src/proto/gui.pro, - src/proto/gui_gtk_x11.pro - -Patch 6.0.210 -Problem: After patch 6.0.167 it's no longer possible to edit a help file in - another encoding than latin1. -Solution: Let the "++enc=" argument overrule the encoding. -Files: src/fileio.c - -Patch 6.0.211 -Problem: When reading a file fails, the buffer is empty, but it might still - be possible to write it with ":w" later. The original file is - lost then. (Steve Amerige) -Solution: Set the 'readonly' option for the buffer. -Files: src/fileio.c - -Patch 6.0.212 -Problem: GUI GTK: confirm("foo", "") causes a crash. -Solution: Don't make a non-existing button the default. Add a default "OK" - button if none is specified. -Files: src/eval.c, src/gui_gtk.c - -Patch 6.0.213 -Problem: When a file name contains unprintable characters, CTRL-G and other - commands don't work well. -Solution: Turn unprintable into printable characters. (Yasuhiro Matsumoto) -Files: src/buffer.c, src/charset.c - -Patch 6.0.214 -Problem: When there is a buffer without a name, empty entries appear in the - jumplist saved in the viminfo file. -Solution: Don't write jumplist entries without a file name. -Files: src/mark.c - -Patch 6.0.215 -Problem: After using "/" from Visual mode the Paste menu and Toolbar - entries don't work. Pasting with the middle mouse doesn't work - and modeless selection doesn't work. -Solution: Use the command line mode menus and use the mouse like in the - command line. -Files: src/gui.c, src/menu.c, src/ui.c - -Patch 6.0.216 -Problem: After reloading a file, displayed in another window than the - current one, which was changed outside of Vim the part of the file - around the cursor set by autocommands may be displayed, but - jumping back to the original cursor position when entering the - window again. -Solution: Restore the topline of the window. -Files: src/fileio.c - -Patch 6.0.217 -Problem: When getting help from a help file that was used before, an empty - unlisted buffer remains in the buffer list. (Eric Long) -Solution: Wipe out the buffer used to do the tag jump from. -Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro - -Patch 6.0.218 -Problem: With explorer plugin: "vim -o filename dirname" doesn't load the - explorer window until entering the window. -Solution: Call s:EditDir() for each window after starting up. -Files: runtime/plugin/explorer.vim - -Patch 6.0.219 -Problem: ":setlocal" and ":setglobal", without arguments, display terminal - options. (Zdenek Sekera) -Solution: Skip terminal options for these two commands. -Files: src/option.c - -Patch 6.0.220 -Problem: After patch 6.0.218 get a beep on startup. (Muraoka Taro) -Solution: Don't try going to another window when there isn't one. -Files: runtime/plugin/explorer.vim - -Patch 6.0.221 -Problem: When using ":bdel" and all other buffers are unloaded the lowest - numbered buffer is jumped to instead of the most recent one. (Dave - Cecil) -Solution: Prefer an unloaded buffer from the jumplist. -Files: src/buffer.c - -Patch 6.0.222 -Problem: When 'virtualedit' is set and using autoindent, pressing Esc after - starting a new line leaves behind part of the autoindent. (Helmut - Stiegler) -Solution: After deleting the last char in the line adjust the cursor - position in del_bytes(). -Files: src/misc1.c, src/ops.c - -Patch 6.0.223 -Problem: When splitting a window that contains the explorer, hitting CR on - a file name gives error messages. -Solution: Set the window variables after splitting the window. -Files: runtime/plugin/explorer.vim - -Patch 6.0.224 -Problem: When 'sidescroll' and 'sidescrolloff' are set in a narrow window - the text may jump left-right and the cursor is displayed in the - wrong position. (Aric Blumer) -Solution: When there is not enough room, compute the left column for the - window to put the cursor in the middle. -Files: src/move.c - -Patch 6.0.225 -Problem: In Visual mode "gk" gets stuck in a closed fold. (Srinath - Avadhanula) -Solution: Behave differently in a closed fold. -Files: src/normal.c - -Patch 6.0.226 -Problem: When doing ":recover file" get the ATTENTION prompt. - After recovering the same file five times get a read error or a - crash. (Alex Davis) -Solution: Set the recoverymode flag before setting the file name. - Correct the amount of used memory for the size of block zero. -Files: src/ex_docmd.c - -Patch 6.0.227 (extra) -Problem: The RISC OS port has several problems. -Solution: Update the makefile and fix some of the problems. (Andy Wingate) -Files: src/Make_ro.mak, src/os_riscos.c, src/os_riscos.h, - src/proto/os_riscos.pro, src/search.c - -Patch 6.0.228 -Problem: After putting text in Visual mode the '] mark is not at the end of - the put text. - Undo doesn't work properly when putting a word into a Visual - selection that spans more than one line. -Solution: Correct the '] mark for the deleting the Visually selected text. - #ifdef code that depends on FEAT_VISUAL properly. - Also fix that "d" crossing line boundary puts '[ just before - deleted text. - Fix undo by saving all deleted lines at once. -Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/ops.c, - src/structs.h, src/vim.h - -Patch 6.0.229 -Problem: Multi-byte: With 'm' in 'formatoptions', formatting doesn't break - at a multi-byte char followed by an ASCII char, and the other way - around. (Muraoka Taro) - When joining lines a space is inserted between multi-byte - characters, which is not always wanted. -Solution: Check for multi-byte character before and after the breakpoint. - Don't insert a space before or after a multi-byte character when - joining lines and the 'M' flag is in 'formatoptions'. Don't - insert a space between multi-byte characters when the 'B' flag is - in 'formatoptions'. -Files: src/edit.c, src/ops.c, src/option.h - -Patch 6.0.230 -Problem: The ":" used as a motion after an operator is exclusive, but - sometimes it should be inclusive. -Solution: Make the "v" in between an operator and motion toggle - inclusive/exclusive. (Servatius Brandt) -Files: runtime/doc/motion.txt, src/normal.c - -Patch 6.0.231 -Problem: "gd" and "gD" don't work when the variable matches in a comment - just above the match to be found. (Servatius Brandt) -Solution: Continue searching in the first column below the comment. -Files: src/normal.c - -Patch 6.0.232 -Problem: "vim --version" prints on stderr while "vim --help" prints on - stdout. -Solution: Make "vim --version" use stdout. -Files: runtime/doc/starting.txt, src/globals.h, src/main.c, src/message.c - -Patch 6.0.233 -Problem: "\1\{,8}" in a regexp is not allowed, but it should work, because - there is an upper limit. (Jim Battle) -Solution: Allow using "\{min,max}" after an atom that can be empty if there - is an upper limit. -Files: src/regexp.c - -Patch 6.0.234 -Problem: It's not easy to set the cursor position without modifying marks. -Solution: Add the cursor() function. (Yegappan Lakshmanan) -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.0.235 -Problem: When writing a file and renaming the original file to make the - backup, permissions could change when setting the owner. -Solution: Only set the owner when it's needed and set the permissions again - afterwards. - When 'backupcopy' is "auto" check that the owner and permissions - of a newly created file can be set properly. -Files: src/fileio.c - -Patch 6.0.236 -Problem: ":edit" without argument should move cursor to line 1 in Vi - compatible mode. -Solution: Add 'g' flag to 'cpoptions'. -Files: runtime/doc/options.txt, src/ex_docmd.c, src/option.h - -Patch 6.0.237 -Problem: In a C file, using the filetype plugin, re-indenting a comment - with two spaces after the middle "*" doesn't align properly. -Solution: Don't use a middle entry from a start/middle/end to line up with - the start of the comment when the start part doesn't match with - the actual comment start. -Files: src/misc1.c - -Patch 6.0.238 -Problem: Using a ":substitute" command with a substitute() call in the - substitution expression causes errors. (Srinath Avadhanula) -Solution: Save and restore pointers when doing substitution recursively. -Files: src/regexp.c - -Patch 6.0.239 -Problem: Using "A" to append after a Visually selected block which is after - the end of the line, spaces are inserted in the wrong line and - other unexpected effects. (Michael Naumann) -Solution: Don't advance the cursor to the next line. -Files: src/ops.c - -Patch 6.0.240 -Problem: Win32: building with Python 2.2 doesn't work. -Solution: Add support for Python 2.2 with dynamic linking. (Paul Moore) -Files: src/if_python.c - -Patch 6.0.241 -Problem: Win32: Expanding the old value of an option that is a path that - starts with a backslash, an extra backslash is inserted. -Solution: Only insert backslashes where needed. - Also handle multi-byte characters properly when removing - backslashes. -Files: src/option.c - -Patch 6.0.242 -Problem: GUI: On a system with an Exceed X server sometimes get a "Bad - Window" error. (Tommi Maekitalo) -Solution: When forking, use a pipe to wait in the parent for the child to - have done the setsid() call. -Files: src/gui.c - -Patch 6.0.243 -Problem: Unix: "vim --version" outputs a NL before the last line instead of - after it. (Charles Campbell) -Solution: Send the NL to the same output stream as the text. -Files: src/message.c, src/os_unix.c, src/proto/message.pro - -Patch 6.0.244 -Problem: Multi-byte: Problems with (illegal) UTF-8 characters in menu and - file name (e.g., icon text, status line). -Solution: Correctly handle unprintable characters. Catch illegal UTF-8 - characters and replace them with <xx>. Truncating the status line - wasn't done correctly at a multi-byte character. (Yasuhiro - Matsumoto) - Added correct_cmdspos() and transchar_byte(). -Files: src/buffer.c, src/charset.c, src/ex_getln.c, src/gui.c, - src/message.c, src/screen.c, src/vim.h - -Patch 6.0.245 -Problem: After using a color scheme, setting the 'background' option might - not work. (Peter Horst) -Solution: Disable the color scheme if it switches 'background' back to the - wrong value. -Files: src/option.c - -Patch 6.0.246 -Problem: ":echomsg" didn't use the highlighting set by ":echohl". (Gary - Holloway) -Solution: Use the specified attributes for the message. (Yegappan - Lakshmanan) -Files: src/eval.c - -Patch 6.0.247 -Problem: GTK GUI: Can't use gvim in a kpart widget. -Solution: Add the "--echo-wid" argument to let Vim echo the window ID on - stdout. (Philippe Fremy) -Files: runtime/doc/starting.txt, src/globals.h, src/gui_gtk_x11.c, - src/main.c - -Patch 6.0.248 -Problem: When using compressed help files and 'encoding' isn't "latin1", - Vim converts the help file before decompressing. (David Reviejo) -Solution: Don't convert a help file when 'binary' is set. -Files: src/fileio.c - -Patch 6.0.249 -Problem: "vim -t edit -c 'sta ex_help'" doesn't move cursor to edit(). -Solution: Don't set the cursor on the first line for "-c" arguments when - there also is a "-t" argument. -Files: src/main.c - -Patch 6.0.250 (extra) -Problem: Macintosh: Various problems when compiling. -Solution: Various fixes, mostly #ifdefs. (Dany St. Amant) -Files: src/gui_mac.c, src/main.c, src/misc2.c, src/os_mac.h, - src/os_mac.pbproj/project.pbxproj, src/os_unix.c - -Patch 6.0.251 (extra) -Problem: Macintosh: menu shortcuts are not very clear. -Solution: Show the shortcut with the Mac clover symbol. (raindog) -Files: src/gui_mac.c - -Patch 6.0.252 -Problem: When a user function was defined with "abort", an error that is - not inside if/endif or while/endwhile doesn't abort the function. - (Servatius Brandt) -Solution: Don't reset did_emsg when the function is to be aborted. -Files: src/ex_docmd.c - -Patch 6.0.253 -Problem: When 'insertmode' is set, after "<C-O>:edit file" the next <C-O> - doesn't work. (Benji Fisher) <C-L> has the same problem. -Solution: Reset need_start_insertmode once in edit(). -Files: src/edit.c - -Patch 6.0.254 (extra) -Problem: Borland C++ 5.5: Checking for stack overflow doesn't work - correctly. Matters when using a complicated regexp. -Solution: Remove -N- from Make_bc5.mak. (Yasuhiro Matsumoto) -Files: src/Make_bc5.mak - -Patch 6.0.255 (extra) (depends on patch 6.0.116 and 6.0.121) -Problem: Win32: ACL support doesn't work well on Samba drives. -Solution: Add a check for working ACL support. (Mike Williams) -Files: src/os_win32.c - -Patch 6.0.256 (extra) -Problem: Win32: ":highlight Comment guifg=asdf" does not give an error - message. (Randall W. Morris) Also for other systems. -Solution: Add gui_get_color() to give one error message for all systems. -Files: src/gui.c, src/gui_amiga.c, src/gui_athena.c, src/gui_motif.c, - src/gui_riscos.c, src/gui_x11.c, src/gui_gtk_x11.c, - src/proto/gui.pro, src/syntax.c - -Patch 6.0.257 -Problem: Win32: When 'mousefocus' is set and there is a BufRead - autocommand, after the dialog for permissions changed outside of - Vim: 'mousefocus' stops working. (Robert Webb) -Solution: Reset need_mouse_correct after checking timestamps. -Files: src/fileio.c - -Patch 6.0.258 -Problem: When 'scrolloff' is 999 and there are folds, the text can jump up - and down when moving the cursor down near the end of the file. - (Lubomir Host) -Solution: When putting the cursor halfway the window start counting lines at - the end of a fold. -Files: src/move.c - -Patch 6.0.259 -Problem: MS-DOS: after editing the command line the cursor shape may remain - like in Insert mode. (Volker Kiefel) -Solution: Reset the cursor shape after editing the command line. -Files: src/ex_getln.c - -Patch 6.0.260 -Problem: GUI: May crash while starting up when giving an error message for - missing color. (Servatius Brandt) -Solution: Don't call gui_write() when still starting up. Don't give error - message for empty color name. Don't use 't_vb' while the GUI is - still starting up. -Files: src/fileio.c, src/gui.c, src/misc1.c, src/ui.c - -Patch 6.0.261 -Problem: nr2char() and char2nr() don't work with multi-byte characters. -Solution: Use 'encoding' for these functions. (Yasuhiro Matsumoto) -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.0.262 (extra) -Problem: Win32: IME doesn't work properly. OnImeComposition() isn't used - at all. -Solution: Adjust various things for IME. -Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/proto/ui.pro, - src/structs.h, src/ui.c - -Patch 6.0.263 -Problem: GTK: When a dialog is closed by the window manager, Vim hangs. - (Christian J. Robinson) -Solution: Use GTK_WIDGET_DRAWABLE() instead of GTK_WIDGET_VISIBLE(). -Files: src/gui_gtk.c, src/gui_gtk_x11.c - -Patch 6.0.264 -Problem: The amount of virtual memory is used to initialize 'maxmemtot', - which may be much more than the amount of physical memory, - resulting in a lot of swapping. -Solution: Get the amount of physical memory with sysctl(), sysconf() or - sysinfo() when possible. -Files: src/auto/configure, src/configure.in, src/config.h.in, - src/os_unix.c, src/os_unix.h - -Patch 6.0.265 -Problem: Win32: Using backspace while 'fkmap' is set causes a crash. - (Jamshid Oasjmoha) -Solution: Don't try mapping special keys. -Files: src/farsi.c - -Patch 6.0.266 -Problem: The rename() function deletes the file if the old and the new name - are the same. (Volker Kiefel) -Solution: Don't do anything if the names are equal. -Files: src/fileio.c - -Patch 6.0.267 -Problem: UTF-8: Although 'isprint' says a character is printable, - utf_char2cells() still considers it unprintable. -Solution: Use vim_isprintc() for characters upto 0x100. (Yasuhiro Matsumoto) -Files: src/mbyte.c - -Patch 6.0.268 (extra) (depends on patch 6.0.255) -Problem: Win32: ACL check crashes when using forward slash in file name. -Solution: Improve the check for the path in the file name. -Files: src/os_win32.c - -Patch 6.0.269 -Problem: Unprintable characters in a file name may cause problems when - using the 'statusline' option or when 'buftype' is "nofile". -Solution: call trans_characters() for the resulting statusline. (Yasuhiro - Matsumoto) -Files: src/buffer.c, src/screen.c, src/charset.c - -Patch 6.0.270 (depends on patch 6.0.267) -Problem: A tab causes UTF-8 text to be displayed in the wrong position. - (Ron Aaron) -Solution: Correct utf_char2cells() again. -Files: src/mbyte.c - -Patch 6.1a.001 (extra) -Problem: 32bit DOS: copying text to the clipboard may cause a crash. - (Jonathan D Johnston) -Solution: Don't copy one byte too much in SetClipboardData(). -Files: src/os_msdos.c - -Patch 6.1a.002 -Problem: GTK: On some configurations, when closing a dialog from the window - manager, Vim hangs. -Solution: Catch the "destroy" signal. (Aric Blumer) -Files: src/gui_gtk.c - -Patch 6.1a.003 -Problem: Multi-byte: With UTF-8 double-wide char and 'virtualedit' set: - yanking in Visual mode doesn't include the last byte. (Eric Long) -Solution: Don't add a space for a double-wide character. -Files: src/ops.c - -Patch 6.1a.004 (extra) -Problem: MINGW: undefined type. (Ron Aaron) -Solution: Make GetCompositionString_inUCS2() static. -Files: src/gui_w32.c, src/gui_w48.c, src/proto/gui_w32.pro - -Patch 6.1a.005 (extra) -Problem: Win32: ":hardcopy" doesn't work after ":hardcopy!". (Jonathan - Johnston) -Solution: Don't keep the driver context when using ":hardcopy!". (Vince - Negri) -Files: src/os_mswin.c - -Patch 6.1a.006 -Problem: multi-byte: after setting 'encoding' the window title might be - wrong. -Solution: Force resetting the title. (Yasuhiro Matsumoto) -Files: src/option.c - -Patch 6.1a.007 -Problem: Filetype detection for "*.inc" doesn't work. -Solution: Use a ":let" command. (David Schweikert) -Files: runtime/filetype.vim - -Patch 6.1a.008 (extra) -Problem: Win32: ACL detection for network shares doesn't work. -Solution: Include the trailing (back)slash in the root path. (Mike Williams) -Files: src/os_win32.c - -Patch 6.1a.009 -Problem: When using "\@<=" or "\@<!" in a pattern, a "\1" may refer to a () - part that follows, but it generates an error message. -Solution: Allow a forward reference when there is a following "\@<=" or - "\@<!". -Files: runtime/doc/pattern.txt, src/regexp.c - -Patch 6.1a.010 -Problem: When using ":help" and opening a new window, the alternate file - isn't set. -Solution: Set the alternate file to the previously edited file. -Files: src/ex_cmds.c - -Patch 6.1a.011 -Problem: GTK: ":set co=77", change width with the mouse, ":set co=77" - doesn't resize the window. (Darren Hiebert) -Solution: Set the form size after handling a resize event. -Files: src/gui_gtk_x11.c - -Patch 6.1a.012 -Problem: GTK: The file browser always returns a full path. (Lohner) -Solution: Shorten the file name if possible. -Files: src/gui_gtk.c - -Patch 6.1a.013 -Problem: When using "=~word" in 'cinkeys' or 'indentkeys', the case of the - last character of the word isn't ignored. (Raul Segura Acevedo) -Solution: Ignore case when checking the last typed character. -Files: src/edit.c - -Patch 6.1a.014 -Problem: After patch 6.1a.006 can't compile without the title feature. -Solution: Add an #ifdef. -Files: src/option.c - -Patch 6.1a.015 -Problem: MS-Windows: When expanding a file name that contains a '[' or '{' - an extra backslash is inserted. (Raul Segura Acevedo) -Solution: Avoid adding the backslash. -Files: src/ex_getln.c - -Patch 6.1a.016 -Problem: Completion after ":language" doesn't include "time". (Raul Segura - Acevedo) -Solution: Add the alternative to the completions. -Files: src/ex_cmds2.c - -Patch 6.1a.017 -Problem: Clicking the mouse in the top row of a window where the first line - doesn't fit moves the cursor to the wrong column. -Solution: Add the skipcol also for the top row of a window. -Files: src/ui.c - -Patch 6.1a.018 -Problem: When 'scrolloff' is one and the window height is one, "gj" can put - the cursor above the window. (Raul Segura Acevedo) -Solution: Don't let skipcol become bigger than the cursor column. -Files: src/move.c - -Patch 6.1a.019 -Problem: When using a composing character on top of an ASCII character, the - "l" command clears the composing character. Only when 'ruler' and - 'showcmd' are off. (Raphael Finkel) -Solution: Don't move the cursor by displaying characters when there are - composing characters. -Files: src/screen.c - -Patch 6.1a.020 -Problem: GTK: after patch 6.1a.011 resizing with the mouse doesn't always - work well for small sizes. (Adrien Beau) -Solution: Use another way to avoid the problem with ":set co=77". -Files: src/gui_gtk_x11.c - -Patch 6.1a.021 -Problem: Several Syntax menu entries are wrong or confusing. -Solution: Rephrase and correct the menu entries. (Adrien Beau) -Files: runtime/makemenu.vim, runtime/menu.vim - -Patch 6.1a.022 -Problem: A tags file might be used twice on case insensitive systems. - (Rick Swanton) -Solution: Don't use the same file name twice in the default for the 'tags' - option. Ignore case when comparing names of already visited - files. -Files: src/misc2.c, src/option.c - -Patch 6.1a.023 -Problem: When starting the GUI get "C" characters echoed in the terminal. -Solution: Don't try sending a clear-screen command while the GUI is starting - up. -Files: src/screen.c - -Patch 6.1a.024 -Problem: In other editors CTRL-F is often used for a find dialog. -Solution: In evim use CTRL-F for the find dialog. -Files: runtime/evim.vim - -Patch 6.1a.025 -Problem: The choices for the fileformat dialog can't be translated. -Solution: Add g:menutrans_fileformat_choices. (Adrien Beau) -Files: runtime/menu.vim - -Patch 6.1a.026 -Problem: Indenting Java files is wrong with "throws", "extends" and - "implements" clauses. -Solution: Update the Java indent script. -Files: runtime/indent/java.vim - -Patch 6.1a.027 -Problem: A few Syntax menu entries missing or incorrect. -Solution: Add and correct the menu entries. (Adrien Beau) - Shorten a few menus to avoid they become too long. -Files: runtime/makemenu.vim, runtime/menu.vim - -Patch 6.1a.028 -Problem: XIM: problems with feedback and some input methods. -Solution: Use iconv for calculating the cells. Remove the queue for - key_press_event only when text was changed. (Yasuhiro Matsumoto) -Files: src/globals.h, src/mbyte.c, src/screen.c - -Patch 6.1a.029 -Problem: After patch 6.1a.028 can't compile GTK version with XIM but - without multi-byte chars. -Solution: Add an #ifdef. (Aschwin Marsman) -Files: src/mbyte.c - -Patch 6.1a.030 -Problem: With double-byte encodings toupper() and tolower() may have wrong - results. -Solution: Skip double-byte characters. (Eric Long) -Files: src/eval.c - -Patch 6.1a.031 -Problem: Accessing the 'balloondelay' variable may cause a crash. -Solution: Make the variable for 'balloondelay' a long. (Olaf Seibert) -Files: src/option.h - -Patch 6.1a.032 (extra) -Problem: Some menu files used a wrong encoding name for "scriptencoding". -Solution: Move the translations to a separate file, which is sourced after - setting "scriptencoding". - Also add Czech menu translations in ASCII and update the other - encodings. -Files: runtime/lang/menu_cs_cz.iso_8859-1.vim, - runtime/lang/menu_cs_cz.iso_8859-2.vim, - runtime/lang/menu_czech_czech_republic.1250.vim, - runtime/lang/menu_czech_czech_republic.1252.vim, - runtime/lang/menu_czech_czech_republic.ascii.vim, - runtime/lang/menu_de_de.iso_8859-1.vim, - runtime/lang/menu_de_de.latin1.vim, - runtime/lang/menu_fr_fr.iso_8859-1.vim, - runtime/lang/menu_fr_fr.latin1.vim, - runtime/lang/menu_french_france.1252.vim, - runtime/lang/menu_german_germany.1252.vim, - runtime/lang/menu_ja_jp.euc-jp.vim, - runtime/lang/menu_ja_jp.utf-8.vim, - runtime/lang/menu_japanese_japan.932.vim - -Patch 6.1a.033 -Problem: XIM: doesn't reset input context. -Solution: call xim_reset() with im_set_active(FALSE). (Takuhiro Nishioka) -Files: src/mbyte.c - -Patch 6.1a.034 (extra) -Problem: Win32: The ACL checks for a readonly file still don't work well. -Solution: Remove the ACL checks, go back to how it worked in Vim 6.0. -Files: src/os_win32.c - -Patch 6.1a.035 -Problem: multi-byte: When using ":sh" in the GUI, typed and displayed - multi-byte characters are not handled correctly. -Solution: Deal with multi-byte characters to and from the shell. (Yasuhiro - Matsumoto) Also handle UTF-8 composing characters. -Files: src/os_unix.c - -Patch 6.1a.036 -Problem: GTK: the save-yourself event was not handled. -Solution: Catch the save-yourself event and preserve swap files. (Neil Bird) -Files: src/gui_gtk_x11.c - -Patch 6.1a.037 -Problem: The MS-Windows key mapping doesn't include CTRL-S for saving. - (Vlad Sandrini) -Solution: Map CTRL-S to ":update". -Files: runtime/mswin.vim - -Patch 6.1a.038 -Problem: Solaris: Including both sys/sysctl.h and sys/sysinfo.h doesn't - work. (Antonio Colombo) -Solution: Don't include sys/sysinfo.h when not calling sysinfo(). -Files: src/os_unix.c - -Patch 6.1a.039 -Problem: Not all visual basic files are recognized. -Solution: Add checks to catch *.ctl files. (Raul Segura Acevedo) -Files: runtime/filetype.vim - -Patch 6.1a.040 -Problem: A *.pl file is recognized as Perl, but it could be a prolog file. -Solution: Check the first non-empty line. (Kontra Gergely) -Files: runtime/filetype.vim - -Patch 6.1a.041 -Problem: When pressing the left mouse button in the command line and them - moving the mouse upwards, nearly all the text is selected. -Solution: Don't try extending a modeless selection when there isn't one. -Files: src/ui.c - -Patch 6.1a.042 -Problem: When merging files, ":diffput" and ":diffget" are used a lot, but - they require a lot of typing. -Solution: Add "dp" for ":diffput" and "do" for ":diffget". -Files: runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro - - -Patch 6.1b.001 (extra) -Problem: Checking for wildcards in a path does not handle multi-byte - characters with a trail byte which is a wildcard. -Solution: Handle multi-byte characters correctly. (Muraoka Taro) -Files: src/os_amiga.c, src/os_mac.c, src/os_msdos.c, src/os_mswin.c, - src/os_unix.c - -Patch 6.1b.002 -Problem: A regexp that ends in "\{" is not flagged as an error. May cause - a stack overflow when 'incsearch' is set. (Gerhard Hochholzer) -Solution: Handle a missing "}" as an error. -Files: src/regexp.c - -Patch 6.1b.003 (extra) -Problem: The RISC OS GUI doesn't compile. -Solution: Include changes since Vim 5.7. (Andy Wingate) -Files: src/Make_ro.mak, src/gui_riscos.c, src/os_riscos.c, - src/os_riscos.h, src/proto/gui_riscos.pro - -Patch 6.1b.004 -Problem: col("'>") returns a negative number for linewise selection. (Neil - Bird) -Solution: Don't add one to MAXCOL. -Files: src/eval.c - -Patch 6.1b.005 -Problem: Using a search pattern that causes an out-of-stack error while - 'hlsearch' is set keeps giving the hit-Enter prompt. - A search pattern that takes a long time delays typing when - 'incsearch' is set. -Solution: Stop 'hlsearch' highlighting when the regexp causes an error. - Stop searching for 'incsearch' when a character is typed. -Files: src/globals.h, src/message.c, src/screen.c, src/search.c, - src/vim.h - -Patch 6.1b.006 -Problem: When entering a composing character on the command line with - CTRL-V, the text isn't redrawn correctly. -Solution: Redraw the text under and after the cursor. -Files: src/ex_getln.c - -Patch 6.1b.007 -Problem: When the cursor is in the white space between two sentences, "dis" - deletes the first character of the following sentence, "das" - deletes a space after the sentence. -Solution: Backup the cursor one character in these situations. -Files: src/search.c - -Patch 6.1b.008 -Problem: *.xsl files are not recognized as xslt but xml. - Monk files are not recognized. -Solution: Delete the duplicate line for *.xsl. (Johannes Zellner) - Recognize monk files. -Files: runtime/filetype.vim - -Patch 6.1b.009 -Problem: Can't always compile small features and then adding eval feature, - "sandbox" is undefined. (Axel Kielhorn) -Solution: Always define "sandbox" when the eval feature is used. -Files: src/globals.h - -Patch 6.1b.010 (extra) -Problem: When compiling gvimext.cpp with MSVC 4.2 get a number of warnings. -Solution: Change "true" to "TRUE". (Walter Briscoe) -Files: GvimExt/gvimext.cpp - -Patch 6.1b.011 -Problem: When using a very long string for confirm(), can't quit the - displaying at the more prompt. (Hari Krishna Dara) -Solution: Jump to the end of the message to show the choices. -Files: src/message.c - -Patch 6.1b.012 -Problem: Multi-byte: When 'showbreak' is set and a double-wide character - doesn't fit at the right window edge the cursor gets stuck there. - Using cursor-left gets stuck when 'virtualedit' is set. (Eric - Long) -Solution: Fix the way the extra ">" character is counted when 'showbreak' is - set. Don't correct cursor for virtual editing on a double-wide - character. -Files: src/charset.c, src/edit.c - -Patch 6.1b.013 -Problem: A user command that partly matches with a buffer-local user - command and matches full with a global user command unnecessarily - gives an 'ambiguous command' error. -Solution: Find the full global match even after a partly local match. -Files: src/ex_docmd.c - -Patch 6.1b.014 -Problem: EBCDIC: switching mouse events off causes garbage on screen. - Positioning the cursor in the GUI causes garbage. -Solution: Insert an ESC in the terminal code. (Ralf Schandl) - Use "\b" instead of "\010" for KS_LE. -Files: src/os_unix.c, src/term.c - -Patch 6.1b.015 -Problem: Vimtutor has a typo. Get a warning for "tempfile" if it - doesn't exist. -Solution: Move a quote to the end of a line. (Max Ischenko) - Use "mktemp" first, more systems have it. -Files: src/vimtutor - -Patch 6.1b.016 -Problem: GTK: loading a fontset that works partly, Vim might hang or crash. -Solution: Avoid that char_width becomes zero. (Yasuhiro Matsumoto) -Files: src/gui_gtk_x11.c - -Patch 6.1b.017 -Problem: GUI: When using ":shell" and there is a beep, nothing happens. -Solution: Call vim_beep() to produce the beep from the shell. (Yasuhiro - Matsumoto) -Files: src/message.c - -Patch 6.1b.018 (depends on 6.1b.006) -Problem: When entering the encryption key, special keys may still reveal - the typed characters. -Solution: Make sure stars are used or nothing is shown in all cases. -Files: src/digraph.c, src/getchar.c, src/ex_getln.c - -Patch 6.1b.019 (depends on 6.1b.005) -Problem: A search pattern that takes a long time slows down typing when - 'incsearch' is set. -Solution: Pass SEARCH_PEEK to dosearch(). -Files: src/ex_getln.c - -Patch 6.1b.020 -Problem: When using the matchit plugin, "%" finds a match on the "end" of a - ":syntax region" command in Vim scripts. -Solution: Skip over ":syntax region" commands by setting b:match_skip. -Files: runtime/ftplugin/vim.vim - -Patch 6.1b.021 -Problem: when 'mousefocus' is set, CTRL-W CTRL-] sometimes doesn't warp the - pointer to the new window. (Robert Webb) -Solution: Don't reset need_mouse_correct when checking the timestamp of a - file. -Files: src/fileio.c - -Patch 6.1b.022 -Problem: With lots of folds "j" does not obey 'scrolloff' properly. - (Srinath Avadhanula) -Solution: Go to end of the fold before counting context lines. -Files: src/move.c - -Patch 6.1b.023 -Problem: On MS-Windows system() may cause checking timestamps, because Vim - looses and gains input focus, while this doesn't happen on Unix. -Solution: Don't check timestamps while system() is busy. -Files: src/ex_cmds2.c, src/fileio.c, src/globals.h, src/misc1.c - -Patch 6.1b.024 (extra) -Problem: Gettext 0.11 complains that "sjis" is not a standard name. -Solution: Use "cp932" instead. -Files: src/po/sjiscorr.c - -Patch 6.1b.025 (extra) -Problem: Win32: When closing gvim while it is minimized and has a changed - file, the file-changed dialog pops up in a corner of the screen. -Solution: Put the dialog in the middle of the screen. -Files: src/gui_w48.c - -Patch 6.1b.026 -Problem: When 'diffopt' contains 'iwhite' but not 'icase': differences in - case are not highlighted properly. (Gerhard Hochholzer) -Solution: Don't ignore case when ignoring white space differences. -Files: src/diff.c - -Patch 6.1b.027 -Problem: "vim --remote +" may cause a crash. -Solution: Check for missing file name argument. (Martin Kahlert) -Files: src/main.c - -Patch 6.1b.028 (extra) -Problem: Win16: Can't compile after patch 6.1b.025. -Solution: Add code specifically for Win16. (Vince Negri) -Files: src/gui_w48.c - -Patch 6.1b.029 -Problem: Win32: When a directory on an NTFS partition is read/execute (no - delete,modify,write) and the file has modify rights, trying to - write the file deletes it. Making the file read/write/execute - (not delete) solves it. (Mark Canup) -Solution: Use the Unix code to check for a writable directory. If not, then - make a backup copy and overwrite the file. -Files: src/fileio.c - -Patch 6.1b.030 (extra) -Problem: Mac: small mistake in the build script and prototypes. -Solution: Fix the build script and add the prototypes. (Axel Kielhorn) -Files: src/os_mac.build, src/gui_mac.c - -Patch 6.1b.031 (extra) -Problem: Win32 GUI: ":set guifont=*" doesn't set 'guifont' to the resulting - font name. (Vlad Sandrini) -Solution: Put the code back in gui_mch_init_font() to form the font name out - of the logfont. -Files: src/gui_w48.c - -Patch 6.1b.032 -Problem: Athena: Setting a color scheme before the GUI has started causes a - crash. (Todd Blumer) -Solution: Don't try using color names that haven't been set yet. -Files: src/gui_athena.c - -Patch 6.1b.033 -Problem: When using a count after a ":s" command may get ml_get errors. - (Dietmar Lang) -Solution: Check that the resulting range does not go past the end of the - buffer. -Files: src/ex_cmds.c - -Patch 6.1b.034 -Problem: After sourcing mswin.vim, when using <C-S-Right> after - auto-indenting and then <Del>, get warning for allocating - ridiculous amount of memory. (Dave Delgreco) -Solution: Adjust the start of the Visual area when deleting the auto-indent. -Files: src/edit.c - -Patch 6.1b.035 -Problem: When using evim, dropping a file on Vim and then double clicking - on a word, it is changed to "i". (Merlin Hansen) -Solution: Reset need_start_insertmode after editing the file. -Files: src/ex_docmd.c - - -============================================================================== -VERSION 6.2 *version-6.2* - -This section is about improvements made between version 6.1 and 6.2. - -This is mainly a bug-fix release. There are also a few new features. - -Main new features: -- Support for GTK 2. (Daniel Elstner) -- Support for editing Arabic text. (Nadim Shaikli & Isam Bayazidi) -- ":try" command and exception handling. (Servatius Brandt) -- Support for the neXtaw GUI toolkit (mostly like Athena). (Alexey Froloff) -- Cscope support for Win32. (Khorev Sergey) -- Support for PostScript printing in various 8-bit encodings. (Mike Williams) - - -Changed *changed-6.2* -------- - -Removed the scheme indent file, the internal Lisp indenting works well now. - -Moved the GvimEXt, OleVim and VisVim directories into the "src" directory. -This is more consistent with how xxd is handled. - -The VisVim.dll file is installed in the top directory, next to gvimext.dll, -instead of in a subdirectory "VisVim". Fixes that NSIS was uninstalling it -from the wrong directory. - -Removed the art indent file, it didn't do anything. - -submatch() returned line breaks with CR instead of LF. - -Changed the Win32 Makefiles to become more uniform and compile gvimext.dll. -(Dan Sharp) - -'cindent': Align a "//" comment with a "//" comment in a previous line. -(Helmut Stiegler) - -Previously only for xterm-like terminals parent widgets were followed to find -the title and icon label. Now do this for all terminal emulators. - -Made it possible to recognize backslashes for "%" matching. The 'M' flag in -'cpoptions' disables it. (Haakon Riiser) - -Removed the Make_tcc.mak makefile for Turbo C. It didn't work and we probably -can't make it work (the compiler runs out of memory). - -Even though the documentation refers to keywords, "[ CTRL-D" was using -'isident' to find matches. Changed it to use 'iskeyword'. Also applies to -other commands that search for defined words in included files such as -":dsearch", "[D" and "[d". - -Made 'keywordprg' global-local. (Christian Robinson) - -Enabled the Netbeans interface by default. Reversed the configure argument -from "--enable-netbeans" to "--disable-netbeans". - - -Added *added-6.2* ------ - -New options: - 'arabic' - 'arabicshape' - 'ambiwidth' - 'autochdir' - 'casemap' - 'copyindent' - 'cscopequickfix' - 'preserveindent' - 'printencoding' - 'rightleftcmd' - 'termbidi' - 'toolbariconsize' - 'winfixheight' - -New keymaps: - Serbian (Aleksandar Veselinovic) - Chinese Pinyin (Fredrik Roubert) - Esperanto (Antoine J. Mechelynck) - -New syntax files: - Valgrind (Roger Luethi) - Smarty template (Manfred Stienstra) - MySQL (Kenneth Pronovici) - RockLinux package description (Piotr Esden-Tempski) - MMIX (Dirk Huesken) - gkrellmrc (David Necas) - Tilde (Tobias Rundtrom) - Logtalk (Paulo Moura) - PLP (Juerd Waalboer) - fvwm2m4 (David Necas) - IPfilter (Hendrik Scholz) - fstab (Radu Dineiu) - Quake (Nikolai Weibull) - Occam (Mario Schweigler) - lpc (Shizhu Pan) - Exim conf (David Necas) - EDIF (Artem Zankovich) - .cvsrc (Nikolai Weibull) - .fetchmailrc (Nikolai Weibull) - GNU gpg (Nikolai Weibull) - Grub (Nikolai Weibull) - Modconf (Nikolai Weibull) - RCS (Dmitry Vasiliev) - Art (Dorai Sitaram) - Renderman Interface Bytestream (Andrew J Bromage) - Mailcap (Doug Kearns) - Subversion commit file (Dmitry Vasiliev) - Microsoft IDL (Vadim Zeitlin) - WildPackets EtherPeek Decoder (Christopher Shinn) - Spyce (Rimon Barr) - Resolv.conf (Radu Dineiu) - A65 (Clemens Kirchgatterer) - sshconfig and sshdconfig (David Necas) - Cheetah and HTMLCheetah (Max Ischenko) - Packet filter (Camiel Dobbelaar) - -New indent files: - Eiffel (David Clarke) - Tilde (Tobias Rundtrom) - Occam (Mario Schweigler) - Art (Dorai Sitaram) - PHP (Miles Lott) - Dylan (Brent Fulgham) - -New tutor translations: - Slovak (Lubos Celko) - Greek (Christos Kontas) - German (Joachim Hofmann) - Norwegian (�yvind Holm) - -New filetype plugins: - Occam (Mario Schweigler) - Art (Dorai Sitaram) - ant.vim, aspvbs.vim, config.vim, csc.vim, csh.vim, dtd.vim, html.vim, - jsp.vim, pascal.vim, php.vim, sgml.vim, sh.vim, svg.vim, tcsh.vim, - xhtml.vim, xml.vim, xsd.vim. (Dan Sharp) - -New compiler plugins: - Checkstyle (Doug Kearns) - g77 (Ralf Wildenhues) - fortran (Johann-Guenter Simon) - Xmllint (Doug Kearns) - Ruby (Tim Hammerquist) - Modelsim vcom (Paul Baleme) - -New menu translations: - Brazilian (Jos� de Paula) - British (Mike Williams) - Korean in UTF-8. (Nam SungHyun) - Norwegian (�yvind Holm) - Serbian (Aleksandar Jelenak) - -New message translation for Norwegian. (�yvind Holm) - -New color scheme: - desert (Hans Fugal) - -Arabic specific features. 'arabicshape', 'termbidi', 'arabic' and -'rightleftcmd' options. (Nadim Shaikli & Isam Bayazidi) - -Support for neXtaw GUI toolkit, mostly like Athena. (Alexey Froloff) - -Win32: cscope support. (Khorev Sergey) - -VMS: various improvements to documentation and makefiles. (Zoltan Arpadffy) - -Added "x" key to the explorer plugin: execute the default action. (Yasuhiro -Matsumoto) - -Compile gvimext.dll with MingW. (Rene de Zwart) - -Add the "tohtml.vim" plugin. It defines the ":TOhtml" user command, an easy -way to convert text to HTML. - -Added ":try" / ":catch" / ":finally" / ":endtry" commands. Add E999 numbers -to all error messages, so that they can be caught by the number. -(Servatius Brandt) -Moved part of ex_docmd.c to the new ex_eval.c source file. - -Include support for GTK+ 2.2.x (Daniel Elstner) -Adds the "~" register: drag & drop text. -Adds the 'toolbariconsize' option. -Add -Dalloca when running lint to work around a problem with alloca() -prototype. - -When selecting an item in the error window to jump to, take some effort to -find an ordinary window to show the file in (not a preview window). - -Support for PostScript printing of various 8-bit encodings. (Mike Williams) - -inputdialog() accepts a third argument that is used when the dialog is -cancelled. Makes it possible to see a difference between cancelling and -entering nothing. - -Included Aap recipes. Can be used to update Vim to the latest version, -building and installing. - -"/" option in 'cinoptions': extra indent for comment lines. (Helmut Stiegler) - -Vim variable "v:register" and functions setreg(), getreg() and getregtype(). -(Michael Geddes) - -"v" flag in 'cpoptions': Leave text on screen with backspace in Insert mode. -(Phillip Vandry) - -Dosinst.exe also finds gvimext.dll in the "GvimExt" directory. Useful when -running install in the "src" directory for testing. - -Support tag files that were sorted with case ignored. (Flemming Madsen) - -When completing a wildcard in a leading path element, as in "../*/Makefile", -only the last part ("Makefile") was listed. Support custom defined -command line completion. (Flemming Madsen) - -Also recognize "rxvt" as an xterm-like terminal. (Tomas Styblo) - -Proper X11 session management. Fixes that the WM_SAVE_YOURSELF event was not -used by popular desktops. (Neil Bird) -Not used for Gnome 2, it has its own handling. - -Support BOR, DEBUG and SPAWNO arguments for the Borland 3 Makefile. (Walter -Briscoe) - -Support page breaks for printing. Adds the "formfeed" field in -'printoptions'. (Mike Williams) - -Mac OSX: multi-language support: iconv and gettext. (Muraoka Taro, Axel -Kielhorn) - -"\Z" flag in patterns: ignore differences in combining characters. (Ron Aaron) - -Added 'preserveindent' and 'copyindent' options. They use existing white -space characters instead of using Tabs as much as possible. (Chris Leishman) - -Updated Unicode tables to Unicode 4.0. (Raphael Finkel) - -Support for the mouse wheel in rxvt. (AIDA Shinra) - -Win32: Added ":8" file modifier to get short filename. Test50 tests the ":8" -expansion on Win32 systems. (Michael Geddes) - -'cscopequickfix' option: Open quickfix window for Cscope commands. Also -cleanup the code for giving messages. (Khorev Sergey) - -GUI: Support more than 222 columns for mouse positions. - -":stopinsert" command: Don't return to Insert mode. - -"interrupt" command for debug mode. Useful for simulating CTRL-C. (Servatius -Brandt) - - -Fixed *fixed-6.2* ------ - -Removed a few unused #defines from config.h.in, os_os2_cfg.h and os_vms_conf.h. - -The Vim icons in PNG format didn't have a transparent background. (Greg -Roelofs) - -Fixed a large number of spelling mistakes in the docs. (Adri Verhoef) - -The #defines for prototype generation were causing trouble. Changed them to -typedefs. - -A new version of libintl.h uses __asm__, which confuses cproto. Define a -dummy __asm__ macro. - -When 'virtualedit' is set can't move to halfway an unprintable character. -Cripples CTRL-V selection. (Taro Muraoka) -Allow moving to halfway an unprintable character. Don't let getvvcol() change -the pos->coladd argument. - -When a tab wraps to the next line, 'listchars' is set and 'foldcolumn' is -non-zero, only one character of the foldcolumn is highlighted. (Muraoka Taro) - -When using ":catch" without an argument Vim crashes. (Yasuhiro Matsumoto) -When no argument given use the ".*" pattern. - -Win32: When gvim.exe is started from a shortcut with the window style property -set to maximize Vim doesn't start with a maximized window. (Yasuhiro -Matsumoto) Open the window with the default size and don't call ShowWindow() -again when it's already visible. (Helmut Stiegler) - -gui_gtk.c used MAX, but it's undefined to avoid a conflict with system header -files. - -Win32: When closing a window from a mapping some pixels remain on the -statusline. (Yasuhiro Matsumoto) - -A column number in an errorformat that goes beyond the end of the line may -cause a crash. - -":throw 'test'" crashes Vim. (Yasuhiro Matsumoto) - -The file selector's scrollbar colors are not set after doing a ":hi Scrollbar -guifg=color". And the file selector's colors are not changed by the -colorscheme command. (David Harrison) - -Motif: When compiling with FEAT_FOOTER defined, the text area gets a few -pixels extra space on the right. Remove the special case in -gui_get_base_width(). (David Harrison) - -Using CTRL-R CTRL-P in Insert mode puts the '] mark in the wrong position. -(Helmut Stiegler) - -When 'formatoptions' includes "awct" a non-comment wasn't auto-formatted. - -Using a "--cmd" argument more than 10 times caused a crash. - -DEC style mouse support didn't work if the page field is not empty. -(Uribarri) - -"vim -l one two" did only set 'lisp' in the first file. Vi does it for every -file. - -":set tw<" didn't work. Was checking for '^' instead of '<'. - -In ":hardcopy > %.ps" the "%" was not expanded to the current filename. - -Made ":redraw" also update the Visual area. - -When a not implemented command, such as ":perl", has wrong arguments the less -important error was reported, giving the user the idea the command could work. - -On non-Unix systems autocommands for writing did not attempt a match with the -short file name, causing a pattern like "a/b" to fail. - -VMS: e_screenmode was not defined and a few other fixes for VMS. (Zoltan -Arpadffy) - -redraw_msg() depended on FEAT_ARABIC instead of FEAT_RIGHTLEFT. (Walter -Briscoe) - -Various changes for the PC Makefiles. (Walter Briscoe) - -Use _truename() instead of our own code to expand a file name into a full -path. (Walter Briscoe) - -Error in filetype check for /etc/modutils. (Lubomir Host) - -Cscope interface: allocated a buffer too small. - -Win16: remove a trailing backslash from a path when obtaining the permission -flags. (Vince Negri) - -When searching for tags with case ignored Vim could hang. - -When searching directories with a stopdir could get a crash. Did not -re-allocate enough memory. (Vince Negri) - -A user command may cause a crash. Don't use the command index when it's -negative. (Vince Negri) - -putenv() didn't work for MingW and Cygwin. (Dan Sharp) - -Many functions were common between os_msdos.c and os_win16.c. Use os_msdos.c -for compiling the Win16 version and remove the functions from os_win16.c. -(Vince Negri) - -For terminals that behave like an xterm but didn't have a name that is -recognized, the window title would not always be set. - -When syntax highlighting is off ":hardcopy" could still attempt printing -colors. - -Crash when using ":catch" without an argument. (Servatius Brandt) - -Win32: ":n #" doubled the backslashes. - -Fixed Arabic shaping for the command line. (Nadim Shaikli) - -Avoid splitting up a string displayed on the command line into individual -characters, it breaks Arabic shaping. - -Updated Cygwin and MingW makefiles to use more dependencies. (Dan Sharp) - -2html.vim didn't work with 'nomagic' set. - -When a local argument list is used and doing ":only" Vim could crash later. -(Muraoka Taro) - -When using "%P" in 'statusline' and the fillchar is "-", a percentage of 3% -could result in "-3%". Also avoid changing a space inside a filename to the -fill character. - -MSwin: Handling of backslashes and double quotes for command line arguments -was not like what other applications do. (Walter Briscoe) - -Test32 sometimes didn't work, because test11.out was written as TEST11.OUT. - -Avoid pointer conversions warnings for Borland C 5.5 in dosinst.c and -uninstal.c. - -More improvements for Make_bc3.mak file. (Walter Briscoe) - -When ":syn sync linebreaks=1" is used, editing the first line caused a redraw -of the whole screen. - -Making translated messages didn't work, if_perl.xs wasn't found. (Vlad -Sandrini) - -Motif and Athena: moving Vim to the foreground didn't uniconify it. Use -XMapRaised() instead of XRaiseWindow(). (Srikanth Sankaran) - -When using ":ptag" in a window where 'scrollbind' is set the preview window -would also have 'scrollbind' set. Also reset 'foldcolumn' and 'diff'. - -Various commands that split a window took over 'scrollbind', which is hardly -ever desired. Esp. for "q:" and ":copen". Mostly reset 'scrollbind' when -splitting a window. - -When 'shellslash' is set in the vimrc file the first entry of ":scriptnames" -would still have backslashes. Entries in the quickfix list could also have -wrong (back)slashes. - -Win32: printer dialog texts were not translated. (Yasuhiro Matsumoto) - -When using a multi-byte character with a K_SPECIAL byte or a special key code -with "--remote-send" the received byte sequence was mangled. Put it in the -typeahead buffer instead of the input buffer. - -Win32: The cursor position was incorrect after changing cursor shape. -(Yasuhiro Matsumoto). - -Win32: When 'encoding' is not the current codepage the title could not be set -to non-ascii characters. - -"vim -d scp://machine/file1 scp://machine/file2" did not work, there was only -one window. Fixed the netrw plugin not to wipe out the buffer if it is -displayed in other windows. - -"/$" caused "e" in last column of screen to disappear, a highlighted blank was -displayed instead. - -":s/ *\ze\n//e" removed the line break and introduced arbitrary text. Was -using the line count including what matched after the "\ze". - -Using the "c" flag with ":s" changed the behavior when a line break is -replaced and "\@<=" is used. Without "c" a following match was not found. - -":%s/\vA@<=\nB@=//gce" got stuck on "A\nB" when entering "n". - -VMS: add HAVE_STRFTIME in the config file. (Zoltan Arpadffy) - -When a delete prompts if a delete should continue when yanking is not -possible, restore msg_silent afterwards. - -":sign" did not complain about a missing argument. - -When adding or deleting a sign 'hlsearch' highlighting could disappear. -Use the generic functions for updating signs. - -On MS-Windows NT, 2K and XP don't use command.com but cmd.exe for testing. -Makes the tests work on more systems. - -In the DOS tests don't create "/tmp" to avoid an error. - -Mac classic: Problems with reading files with CR vs CR/LF. Rely on the -library version of fgets() to work correctly for Metrowerks 2.2. (Axel -Kielhorn) - -When typing a password a "*" was shown for each byte instead of for each -character. Added multi-byte handling to displaying the stars. (Yasuhiro -Matsumoto) - -When using Perl 5.6 accessing $curbuf doesn't work. Add an #ifdef to use -different code for 5.6 and 5.8. (Dan Sharp) - -MingW and Cygwin: Don't strip the debug executable. (Dan Sharp) - -An assignment to a variable with curlies that includes "==" doesn't work. -Skip over the curlies before searching for an "=". (Vince Negri) - -When cancelling the selection of alternate matching tags the tag stack index -could be advanced too far, resulting in an error message when using CTRL-T. - - -Patch 6.1.001 -Problem: When formatting UTF-8 text it might be wrapped at a space that is - followed by a composing character. (Raphael Finkel) - Also correct a display error for removing a composing char on top - of a space. -Solution: Check for a composing character on a space. -Files: src/edit.c, src/misc1.c, src/screen.c - -Patch 6.1.002 (extra) -Problem: Win32: after a ":popup" command the mouse pointer stays hidden. -Solution: Unhide the mouse pointer before showing the menu. -Files: src/gui_w48.c - -Patch 6.1.003 -Problem: When 'laststatus' is zero and there is a vertical split, the - vertical separator is drawn in the command line. (Srikant - Sankaran) -Solution: Don't draw the vertical separator where there is no statusline. -Files: src/screen.c - -Patch 6.1.004 -Problem: Unicode 3.2 changes width and composing of a few characters. - (Markus Kuhn) -Solution: Adjust the Unicode functions for the character width and composing - characters. -Files: src/mbyte.c - -Patch 6.1.005 -Problem: When using more than 50 items in 'statusline' Vim might crash. - (Steve Hall) -Solution: Increment itemcnt in check_stl_option(). (Flemming Madsen) -Files: src/option.c - -Patch 6.1.006 -Problem: When using "P" in Visual mode to put linewise selected text, the - wrong text is deleted. (Jakub Turski) -Solution: Put the text before the Visual area and correct the text to be - deleted for the inserted lines. - Also fix that "p" of linewise text in Visual block mode doesn't - work correctly. -Files: src/normal.c, src/ops.c - -Patch 6.1.007 -Problem: Using ":filetype plugin off" when filetype plugins were never - enabled causes an error message. (Yiu Wing) -Solution: Use ":silent!" to avoid the error message. -Files: runtime/ftplugof.vim - -Patch 6.1.008 -Problem: The "%" command doesn't ignore \" inside a string, it's seen as - the end of the string. (Ken Clark) -Solution: Skip a double quote preceded by an odd number of backslashes. -Files: src/search.c - -Patch 6.1.009 -Problem: Vim crashes when using a huge number for the maxwid value in a - statusline. (Robert M. Nowotniak) -Solution: Check for an overflow that makes maxwid negative. -Files: src/buffer.c - -Patch 6.1.010 -Problem: Searching backwards for a question mark with "?\?" doesn't work. - (Alan Isaac) Same problem in ":s?\??" and ":g?\??". -Solution: Change the "\?" in a pattern to "?" when using "?" as delimiter. -Files: src/ex_cmds.c, src/ex_docmd.c, src/proto/regexp.pro, src/regexp.c, - src/search.c, src/syntax.c, src/tag.c - -Patch 6.1.011 -Problem: XIM: doesn't work correctly when 'number' is set. Also, a focus - problem when selecting candidates. -Solution: Fix the XIM problems. (Yasuhiro Matsumoto) -Files: src/mbyte.c, src/screen.c - -Patch 6.1.012 -Problem: A system() call might fail if fread() does CR-LF to LF - translation. -Solution: Open the output file in binary mode. (Pavol Huhas) -Files: src/misc1.c - -Patch 6.1.013 -Problem: Win32: The default for 'printexpr' doesn't work when there are - special characters in 'printdevice'. -Solution: Add double quotes around the device name. (Mike Williams) -Files: runtime/doc/option.txt, src/option.c - -Patch 6.1.014 -Problem: An operator like "r" used in Visual block mode doesn't use - 'virtualedit' when it's set to "block". -Solution: Check for 'virtualedit' being active in Visual block mode when the - operator was started. -Files: src/ex_docmd.c, src/globals.h, src/misc2.c, src/normal.c, - src/ops.c, src/undo.c - -Patch 6.1.015 -Problem: After patch 6.1.014 can't compile with tiny features. (Christian - J. Robinson) -Solution: Add the missing define of virtual_op. -Files: src/vim.h - -Patch 6.1.016 (extra) -Problem: Win32: Outputting Hebrew or Arabic text might have a problem with - reversing. -Solution: Replace the RevOut() function with ETO_IGNORELANGUAGE. (Ron Aaron) -Files: src/gui_w32.c - -Patch 6.1.017 -Problem: Cygwin: After patch 6.1.012 Still doesn't do binary file I/O. - (Pavol Juhas) -Solution: Define BINARY_FILE_IO for Cygwin. -Files: src/os_unix.h - -Patch 6.1.018 -Problem: Error message when using cterm highlighting. (Leonardo Di Lella) -Solution: Remove a backslash before a question mark. -Files: runtime/syntax/cterm.vim - -Patch 6.1.019 (extra) -Problem: Win32: File name is messed up when editing just a drive name. - (Walter Briscoe) -Solution: Append a NUL after the drive name. (Vince Negri) -Files: src/os_win32.c - -Patch 6.1.020 -Problem: col("'>") returns a huge number after using Visual line mode. -Solution: Return the length of the line instead. -Files: src/eval.c - -Patch 6.1.021 (depends on patch 6.1.009) -Problem: Vim crashes when using a huge number for the minwid value in a - statusline. (Robert M. Nowotniak) -Solution: Check for an overflow that makes minwid negative. -Files: src/buffer.c - -Patch 6.1.022 -Problem: Grabbing the status line above the command-line window works like - the bottom status line was grabbed. (Jim Battle) -Solution: Make it possible to grab the status line above the command-line - window, so that it can be resized. -Files: src/ui.c - -Patch 6.1.023 (extra) -Problem: VMS: running tests doesn't work properly. -Solution: Adjust the makefile. (Zoltan Arpadffy) -Files: src/testdir/Make_vms.mms - -Patch 6.1.024 -Problem: When header files use a new syntax for declaring functions, Vim - can't figure out missing prototypes properly. -Solution: Accept braces around a function name. (M. Warner Losh) -Files: src/osdef.sh - -Patch 6.1.025 -Problem: Five messages for "vim --help" don't start with a capital. (Vlad - Sandrini) -Solution: Make the messages consistent. -Files: src/main.c - -Patch 6.1.026 -Problem: *.patch files are not recognized as diff files. In a script a - "VAR=val" argument after "env" isn't ignored. PHP scripts are not - recognized. -Solution: Add *.patch for diff filetypes. Ignore "VAR=val". Recognize PHP - scripts. (Roman Neuhauser) -Files: runtime/filetype.vim, runtime/scripts.vim - -Patch 6.1.027 -Problem: When 'foldcolumn' is non-zero, a special character that wraps to - the next line disturbs the foldcolumn highlighting. (Yasuhiro - Matsumoto) -Solution: Only use the special highlighting when drawing text characters. -Files: src/screen.c - -Patch 6.1.028 -Problem: Client-server: When a --remote-expr fails, Vim still exits with - status zero. -Solution: Exit Vim with a non-zero status to indicate the --remote-expr - failed. (Thomas Scott Urban) -Files: src/main.c - -Patch 6.1.029 -Problem: When 'encoding' is an 8-bit encoding other than "latin1", editing - a utf-8 or other Unicode file uses the wrong conversion. (Jan - Fedak) -Solution: Don't use Unicode to latin1 conversion for 8-bit encodings other - than "latin1". -Files: src/fileio.c - -Patch 6.1.030 -Problem: When CTRL-N is mapped in Insert mode, it is also mapped after - CTRL-X CTRL-N, while it is not mapped after CTRL-X CTRL-F. - (Kontra Gergely) -Solution: Don't map CTRL-N after CTRL-X CTRL-N. Same for CTRL-P. -Files: src/getchar.c - -Patch 6.1.031 -Problem: Cygwin: Xxd could read a file in text mode intead of binary mode. -Solution: Use "rb" or "rt" when needed. (Pavol Juhas) -Files: src/xxd/xxd.c - -Patch 6.1.032 -Problem: Can't specify a quickfix file without jumping to the first error. -Solution: Add the ":cgetfile" command. (Yegappan Lakshmanan) -Files: runtime/doc/index.txt, runtime/doc/quickfix.txt, src/ex_cmds.h, - src/quickfix.c - -Patch 6.1.033 -Problem: GUI: When the selection is lost and the Visual highlighting is - changed to underlining, the cursor is left in a different - position. (Christian Michon) -Solution: Update the cursor position after redrawing the selection. -Files: src/ui.c - -Patch 6.1.034 -Problem: A CVS diff file isn't recognized as diff filetype. -Solution: Skip lines starting with "? " before checking for an "Index:" line. -Files: runtime/scripts.vim - -Patch 6.1.035 (extra, depends on 6.1.016) -Problem: Win32: Outputting Hebrew or Arabic text might have a problem with - reversing on MS-Windows 95/98/ME. -Solution: Restore the RevOut() function and use it in specific situations - only. (Ron Aaron) -Files: src/gui_w32.c - -Patch 6.1.036 -Problem: This command may cause a crash: ":v/./,//-j". (Ralf Arens) -Solution: Compute the right length of the regexp when it's empty. -Files: src/search.c - -Patch 6.1.037 -Problem: When 'lazyredraw' is set, pressing "q" at the hit-enter prompt - causes an incomplete redraw and the cursor isn't positioned. - (Lubomir Host) -Solution: Overrule 'lazyredraw' when do_redraw is set. -Files: src/main.c, src/screen.c - -Patch 6.1.038 -Problem: Multi-byte: When a ":s" command contains a multi-byte character - where the trail byte is '~' the text is messed up. -Solution: Properly skip multi-byte characters in regtilde() (Muraoka Taro) -Files: src/regexp.c - -Patch 6.1.039 -Problem: When folds are defined and the file is changed outside of Vim, - reloading the file doesn't update the folds. (Anders - Schack-Nielsen) -Solution: Recompute the folds after reloading the file. -Files: src/fileio.c - -Patch 6.1.040 -Problem: When changing directory for expanding a file name fails there is - no error message. -Solution: Give an error message for this situation. Don't change directory - if we can't return to the original directory. -Files: src/diff.c, src/ex_docmd.c, src/globals.h, src/misc1.c, - src/os_unix.c - -Patch 6.1.041 -Problem: ":mkvimrc" doesn't handle a mapping that has a leading space in - the rhs. (Davyd Ondrejko) -Solution: Insert a CTRL-V before the leading space. Also display leading - and trailing white space in <> form. -Files: src/getchar.c, src/message.c - -Patch 6.1.042 -Problem: "vim -r" doesn't show all matches when 'wildignore' removes swap - files. (Steve Talley) -Solution: Keep all matching swap file names. -Files: src/memline.c - -Patch 6.1.043 -Problem: After patch 6.1.040 a few warnings are produced. -Solution: Add a type cast to "char *" for mch_chdir(). (Axel Kielhorn) -Files: src/diff.c, src/ex_docmd.c.c, src/misc1.c, src/os_unix.c - -Patch 6.1.044 (extra) -Problem: GUI: When using the find/replace dialog with text that contains a - slash, an invalid substitute command is generated. - On Win32 a find doesn't work when 'insertmode' is set. -Solution: Escape slashes with a backslash. - Make the Win32, Motif and GTK gui use common code for the - find/replace dialog. - Add the "match case" option for Motif and GTK. -Files: src/feature.h, src/proto/gui.pro, src/gui.c, src/gui.h, - src/gui_motif.c, src/gui_gtk.c, src/gui_w48.c - -Patch 6.1.045 -Problem: In Visual mode, with lots of folds and 'scrolloff' set to 999, - moving the cursor down near the end of the file causes the text to - jump up and down. (Lubomir Host) -Solution: Take into account that the cursor may be on the last line of a - closed fold. -Files: src/move.c - -Patch 6.1.046 -Problem: X11 GUI: ":set lsp=2 gcr=n-v-i:hor1-blinkon0" draws a black - rectangle. ":set lsp=2 gcr=n-v-i:hor10-blinkon0" makes the cursor - disappear. (Nam SungHyun) -Solution: Correctly compute the height of the horizontal cursor. -Files: src/gui_gtk_x11.c, src/gui_x11.c - -Patch 6.1.047 -Problem: When skipping commands after an error was encountered, expressions - for ":if", ";elseif" and ":while" are still evaluated. -Solution: Skip the expression after an error. (Servatius Brandt) -Files: src/ex_docmd.c - -Patch 6.1.048 -Problem: Unicode 3.2 changes were missing a few Hangul Jamo characters. -Solution: Recognize more characters as composing characters. (Jungshik Shin) -Files: src/mbyte.c - -Patch 6.1.049 (extra) -Problem: On a 32 bit display a valid color may cause an error message, - because its pixel value is negative. (Chris Paulson-Ellis) -Solution: Check for -11111 instead of the color being negative. - Don't add one to the pixel value, -1 may be used for white. -Files: src/globals.h, src/gui.c, src/gui.h, src/gui_amiga.c, - src/gui_athena.c, src/gui_beos.cc, src/gui_gtk_x11.c, - src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, - src/gui_riscos.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c, - src/gui_x11.c, src/mbyte.c, src/syntax.c - -Patch 6.1.050 (depends on 6.1.049) -Problem: After patch 6.1.049 the non-GUI version doesn't compile. -Solution: Add an #ifdef FEAT_GUI. (Robert Stanton) -Files: src/syntax.c - -Patch 6.1.051 (depends on 6.1.044) -Problem: Doesn't compile with GUI and small features. -Solution: Adjust the #if for ga_append(). -Files: src/misc2.c - -Patch 6.1.052 -Problem: Unix: The executable() function doesn't work when the "which" - command isn't available. -Solution: Go through $PATH manually. Also makes it work for VMS. -Files: src/os_unix.c - -Patch 6.1.053 -Problem: When 'sessionoptions' contains "globals", or "localoptions" and an - option value contains a line break, the resulting script is wrong. -Solution: Use "\n" and "\r" for a line break. (Srinath Avadhanula) -Files: src/eval.c - -Patch 6.1.054 -Problem: GUI: A mouse click is not recognized at the more prompt, even when - 'mouse' includes 'r'. -Solution: Recognize a mouse click at the more prompt. - Also accept a mouse click in the last line in the GUI. - Add "ml" entry in 'mouseshape'. -Files: src/gui.c, src/message.c, src/misc1.c, src/misc2.c, src/option.c, - src/structs.h - -Patch 6.1.055 -Problem: When editing a compressed file, Vim will inspect the contents to - guess the filetype. -Solution: Don't source scripts.vim for .Z, .gz, .bz2, .zip and .tgz files. -Files: runtime/filetype.vim, runtime/plugin/gzip.vim - -Patch 6.1.056 -Problem: Loading the Syntax menu can take quite a bit of time. -Solution: Add the "skip_syntax_sel_menu" variable. When its defined the - available syntax files are not in the Syntax menu. -Files: runtime/doc/gui.txt, runtime/menu.vim - -Patch 6.1.057 -Problem: An ESC inside a mapping doesn't work as documented when - 'insertmode' is set, it does go from Visual or Normal mode to - Insert mode. (Benji Fisher) -Solution: Make it work as documented. -Files: src/normal.c - -Patch 6.1.058 -Problem: When there is a closed fold just above the first line in the - window, using CTRL-X CTRL-Y in Insert mode will show only one line - of the fold. (Alexey Marinichev) -Solution: Correct the topline by putting it at the start of the fold. -Files: src/move.c - -Patch 6.1.059 -Problem: ":redir > ~/file" doesn't work. (Stephen Rasku) -Solution: Expand environment variables in the ":redir >" argument. -Files: src/ex_docmd.c - -Patch 6.1.060 -Problem: When 'virtualedit' is set and 'selection' is "exclusive", deleting - a character just before a tab changes the tab into spaces. Undo - doesn't restore the tab. (Helmut Stiegler) -Solution: Don't replace the tab by spaces when it's not needed. Correctly - save the line before it's changed. -Files: src/ops.c - -Patch 6.1.061 -Problem: When 'virtualedit' is set and 'selection' is "exclusive", a Visual - selection that ends just after a tab doesn't include that tab in - the highlighting. (Helmut Stiegler) -Solution: Use a different way to exclude the character under the cursor. -Files: src/screen.c - -Patch 6.1.062 -Problem: The "man" filetype plugin doesn't work properly on Solaris 5. -Solution: Use a different way to detect that "man -s" should be used. (Hugh - Sasse) -Files: runtime/ftplugin/man.vim - -Patch 6.1.063 -Problem: Java indenting doesn't work properly. -Solution: Ignore comments when checking if the indent doesn't increase after - a "}". -Files: runtime/indent/java.vim - -Patch 6.1.064 -Problem: The URLs that the netrw plugin recognized for ftp and rcp did not - conform to the standard method://[user@]host[:port]/path. -Solution: Use ftp://[user@]host[[:#]port]/path, which supports both the new - and the previous style. Also added a bit of dav/cadaver support. - (Charles Campbell) -Files: runtime/plugin/netrw.vim - -Patch 6.1.065 -Problem: VMS: The colorscheme, keymap and compiler menus are not filled in. -Solution: Ignore case when looking for ".vim" files. (Coen Engelbarts) -Files: runtime/menu.vim - -Patch 6.1.066 (extra) -Problem: When calling system() in a plugin reading stdin hangs. -Solution: Don't set the terminal to RAW mode when it wasn't in RAW mode - before the system() call. -Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_unix.c, - src/os_win16.c, src/os_win32.c - -Patch 6.1.067 -Problem: ":set viminfo+=f0" is not working. (Benji Fisher) -Solution: Check the "f" flag instead of "'" in 'viminfo'. -Files: src/mark.c - -Patch 6.1.068 -Problem: When a file is reloaded after it was changed outside of Vim, diff - mode isn't updated. (Michael Naumann) -Solution: Invalidate the diff info so that it's updated when needed. -Files: src/fileio.c - -Patch 6.1.069 -Problem: When 'showmatch' is set and "$" is in 'cpoptions', using - "C}<Esc>" may forget to remove the "$". (Preben Guldberg) -Solution: Restore dollar_vcol after displaying the matching cursor position. -Files: src/search.c - -Patch 6.1.070 (depends on 6.1.060) -Problem: Compiler warning for signed/unsigned mismatch. (Mike Williams) -Solution: Add a typecast to int. -Files: src/ops.c - -Patch 6.1.071 -Problem: When 'selection' is exclusive, g CTRL-G in Visual mode counts one - character too much. (David Necas) -Solution: Subtract one from the end position. -Files: src/ops.c - -Patch 6.1.072 -Problem: When a file name in a tags file starts with http:// or something - else for which there is a BufReadCmd autocommand, the file isn't - opened anyway. -Solution: Check if there is a matching BufReadCmd autocommand and try to - open the file. -Files: src/fileio.c, src/proto/fileio.pro, src/tag.c - -Patch 6.1.073 (extra) -Problem: BC5: Can't easily specify a tiny, small, normal, big or huge - version. -Solution: Allow selecting the version with the FEATURES variable. (Ajit - Thakkar) -Files: src/Make_bc5.mak - -Patch 6.1.074 -Problem: When 'cdpath' includes "../..", changing to a directory in which - we currently already are doesn't work. ff_check_visited() adds - the directory both when using it as the root for searching and for - the actual matches. (Stephen Rasku) -Solution: Use a separate list for the already searched directories. -Files: src/misc2.c - -Patch 6.1.075 (depends on 6.1.072) -Problem: Can't compile fileio.c on MS-Windows. -Solution: Add a declaration for the "p" pointer. (Madoka Machitani) -Files: src/fileio.c - -Patch 6.1.076 (extra) -Problem: Macintosh: explorer plugin doesn't work on Mac Classic. - IME doesn't work. Dialog boxes don't work on Mac OS X -Solution: Fix explorer plugin and key modifiers. (Axel Kielhorn) - Fix IME support. (Muraoka Taro) - Disable dialog boxes. (Benji Fisher) -Files: src/edit.c, src/feature.h, src/gui_mac.c, src/os_mac.c - -Patch 6.1.077 -Problem: On a Debian systEm wht ACL linking fails. (Lubomir Host) -Solution: When the "acl" library is used, check if the "attr" library is - present and use it. -Files: src/auto/configure, src/configure.in, src/link.sh - -Patch 6.1.078 -Problem: When using 'foldmethod' "marker" and the end marker appears before - the start marker in the file, no fold is found. (Nazri Ramliy) -Solution: Don't let the fold depth go negative. -Files: src/fold.c - -Patch 6.1.079 -Problem: When using "s" in Visual block mode with 'virtualedit' set, when - the selected block is after the end of some lines the wrong text - is inserted and some lines are skipped. (Servatius Brandt) -Solution: Insert the right text and extend short lines. -Files: src/ops.c - -Patch 6.1.080 -Problem: When using gcc with /usr/local already in the search path, adding - it again causes problems. -Solution: Adjust configure.in to avoid adding /usr/local/include and - /usr/local/lib when using GCC and they are already used. (Johannes - Zellner) -Files: src/auto/configure, src/configure.in - -Patch 6.1.081 -Problem: ":help CTRL-\_CTRL-N" doesn't work. (Christian J. Robinson) -Solution: Double the backslash to avoid the special meaning of "\_". -Files: src/ex_cmds.c - -Patch 6.1.082 -Problem: On MS-Windows the vimrc_example.vim script is sourced and then - mswin.vim. This enables using select mode, but since "p" is - mapped it doesn't replace the selection. -Solution: Remove the mapping of "p" from vimrc_example.vim, it's obsolete. - (Vlad Sandrini) -Files: runtime/vimrc_example.vim - -Patch 6.1.083 -Problem: When $LANG is "sk" or "sk_sk", the Slovak menu file isn't found. - (Martin Lacko) -Solution: Guess the right menu file based on the system. -Files: runtime/lang/menu_sk_sk.vim - -Patch 6.1.084 (depends on 6.1.080) -Problem: "include" and "lib" are mixed up when checking the directories gcc - already searches. -Solution: Swap the variable names. (SunHo Kim) -Files: src/auto/configure, src/configure.in - -Patch 6.1.085 -Problem: When using CTRL-O CTRL-\ CTRL-N from Insert mode, the displayed - mode "(insert)" isn't removed. (Benji Fisher) -Solution: Clear the command line. -Files: src/normal.c - -Patch 6.1.086 (depends on 6.1.049) -Problem: The guifg color for CursorIM doesn't take effect. -Solution: Use the foreground color when it's defined. (Muraoka Taro) -Files: src/gui.c - -Patch 6.1.087 -Problem: A thesaurus with Japanese characters has problems with characters - in different word classes. -Solution: Only separate words with single-byte non-word characters. - (Muraoka Taro) -Files: src/edit.c - -Patch 6.1.088 (extra) -Problem: Win32: no debugging info is generated. Tags file excludes .cpp - files. -Solution: Add "/map" to compiler flags. Add "*.cpp" to ctags command. - (Muraoka Taro) -Files: src/Make_mvc.mak - -Patch 6.1.089 -Problem: On BSDI systems there is no ss_sp field in stack_t. (Robert Jan) -Solution: Use ss_base instead. -Files: src/auto/configure, src/configure.in, src/config.h.in, - src/os_unix.c - -Patch 6.1.090 -Problem: CTRL-F gets stuck when 'scrolloff' is non-zero and there is a mix - of long wrapping lines and a non-wrapping line. -Solution: Check that CTRL-F scrolls at least one line. -Files: src/move.c - -Patch 6.1.091 -Problem: GTK: Can't change preeditstate without setting 'imactivatekey'. -Solution: Add some code to change preeditstate for OnTheSpot. (Yasuhiro - Matsumoto) -Files: src/mbyte.c - -Patch 6.1.092 -Problem: ":mapclear <buffer>" doesn't work. (Srikanth Adayapalam) -Solution: Allow an argument for ":mapclear". -Files: src/ex_cmds.h - -Patch 6.1.093 (extra) -Problem: Mac and MS-Windows GUI: when scrolling while ":s" is working the - results can be messed up, because the cursor is moved. -Solution: Disallow direct scrolling when not waiting for a character. -Files: src/gui_mac.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c - -Patch 6.1.094 -Problem: Cygwin: Passing a file name that has backslashes isn't handled - very well. -Solution: Convert file name arguments to Posix. (Chris Metcalf) -Files: src/main.c - -Patch 6.1.095 -Problem: When using signs can free an item on the stack. - Overruling sign colors doesn't work. (Srikanth Sankaran) -Solution: Don't free the item on the stack. Use NULL instead of "none" for - the value of the color. -Files: src/gui_x11.c - -Patch 6.1.096 -Problem: When erasing the right halve of a double-byte character, it may - cause further characters to be erased. (Yasuhiro Matsumoto) -Solution: Make sure only one character is erased. -Files: src/screen.c - -Patch 6.1.097 (depends on 6.1.090) -Problem: When 'scrolloff' is set to a huge value, CTRL-F at the end of the - file scrolls one line. (Lubomir Host) -Solution: Don't scroll when CTRL-F detects the end-of-file. -Files: src/move.c - -Patch 6.1.098 -Problem: MS-Windows: When the xxd program is under "c:\program files" the - "Convert to Hex" menu doesn't work. (Brian Mathis) -Solution: Put the path to xxd in double quotes. -Files: runtime/menu.vim - -Patch 6.1.099 -Problem: Memory corrupted when closing a fold with more than 99999 lines. -Solution: Allocate more space for the fold text. (Walter Briscoe) -Files: src/eval.c - -Patch 6.1.100 (extra, depends on 6.1.088) -Problem: Win32: VC5 and earlier don't support the /mapinfo option. -Solution: Add "/mapinfo" only when "MAP=lines" is specified. (Muraoka Taro) -Files: src/Make_mvc.mak - -Patch 6.1.101 -Problem: After using ":options" the tabstop of a new window is 15. Entry - in ":options" window for 'autowriteall' is wrong. (Antoine J - Mechelynck) Can't insert a space in an option value. -Solution: Use ":setlocal" instead of ":set". Change "aw" to "awa". - Don't map space in Insert mode. -Files: runtime/optwin.vim - -Patch 6.1.102 -Problem: Unprintable and multi-byte characters in a statusline item are not - truncated correctly. (Yasuhiro Matsumoto) -Solution: Count the width of characters instead of the number of bytes. -Files: src/buffer.c - -Patch 6.1.103 -Problem: A function returning from a while loop, with 'verbose' set to 12 - or higher, doesn't mention the return value. A function with the - 'abort' attribute may return -1 while the verbose message says - something else. -Solution: Move the verbose message about returning from a function to - call_func(). (Servatius Brandt) -Files: src/eval.c - -Patch 6.1.104 -Problem: GCC 3.1 appears to have an optimizer problem that makes test 3 - crash. -Solution: For GCC 3.1 add -fno-strength-reduce to avoid the optimizer bug. - Filter out extra info from "gcc --version". -Files: src/auto/configure, src/configure.in - -Patch 6.1.105 -Problem: Win32: The default for 'shellpipe' doesn't redirect stderr. (Dion - Nicolaas) -Solution: Redirect stderr, depending on the shell (like for 'shellredir'). -Files: src/option.c - -Patch 6.1.106 -Problem: The maze program crashes. -Solution: Change "11" to "27" and it works. (Greg Roelofs) -Files: runtime/macros/maze/mazeansi.c - -Patch 6.1.107 -Problem: When 'list' is set the current line in the error window may be - displayed wrong. (Muraoka Taro) -Solution: Don't continue the line after the $ has been displayed and the - rightmost column is reached. -Files: src/screen.c - -Patch 6.1.108 -Problem: When interrupting a filter command such as "!!sleep 20" the file - becomes read-only. (Mark Brader) -Solution: Only set the read-only flag when opening a buffer is interrupted. - When the shell command was interrupted, read the output that was - produced so far. -Files: src/ex_cmds.c, src/fileio.c - -Patch 6.1.109 -Problem: When 'eadirection' is "hor", using CTRL-W = doesn't equalize the - window heights. (Roman Neuhauser) -Solution: Ignore 'eadirection' for CTRL-W = -Files: src/window.c - -Patch 6.1.110 -Problem: When using ":badd file" when "file" is already present but not - listed, it stays unlisted. (David Frey) -Solution: Set 'buflisted'. -Files: src/buffer.c - -Patch 6.1.111 -Problem: It's not possible to detect using the Unix sources on Win32 or Mac. -Solution: Add has("macunix") and has("win32unix"). -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.1.112 -Problem: When using ":argdo", ":bufdo" or ":windo", CTRL-O doesn't go to - the cursor position from before this command but every position - where the argument was executed. -Solution: Only remember the cursor position from before the ":argdo", - ":bufdo" and ":windo". -Files: src/ex_cmds2.c, src/mark.c - -Patch 6.1.113 -Problem: ":bufdo bwipe" only wipes out half the buffers. (Roman Neuhauser) -Solution: Decide what buffer to go to next before executing the command. -Files: src/ex_cmds2.c - -Patch 6.1.114 -Problem: ":python import vim", ":python vim.current.buffer[0:0] = []" gives - a lalloc(0) error. (Chris Southern) -Solution: Don't allocate an array when it's size is zero. -Files: src/if_python.c - -Patch 6.1.115 -Problem: "das" on the white space at the end of a paragraph does not delete - the "." the sentence ends with. -Solution: Don't exclude the last character when it is not white space. -Files: src/search.c - -Patch 6.1.116 -Problem: When 'endofline' is changed while 'binary' is set a file should be - considered modified. (Olaf Buddenhagen) -Solution: Remember the 'eol' value when editing started and consider the - file changed when the current value is different and 'binary' is - set. Also fix that the window title isn't updated when 'ff' or - 'bin' changes. -Files: src/option.c, src/structs.h - -Patch 6.1.117 -Problem: Small problem with editing a file over ftp: and with Cygwin. -Solution: Remove a dot from a ":normal" command. Use "cygdrive" where - appropriate. (Charles Campbell) -Files: runtime/plugin/netrw.vim - -Patch 6.1.118 -Problem: When a file in diff mode is reloaded because it changed outside - of Vim, other windows in diff mode are not always updated. - (Michael Naumann) -Solution: After reloading a file in diff mode mark all windows in diff mode - for redraw. -Files: src/diff.c - -Patch 6.1.119 (extra) -Problem: With the Sniff interface, using Sniff 4.0.X on HP-UX, there may be - a crash when connecting to Sniff. -Solution: Initialize sniff_rq_sep such that its value can be changed. - (Martin Egloff) -Files: src/if_sniff.c - -Patch 6.1.120 (depends on 6.1.097) -Problem: When 'scrolloff' is non-zero and there are folds, CTRL-F at the - end of the file scrolls part of a closed fold. (Lubomir Host) -Solution: Adjust the first line to the start of a fold. -Files: src/move.c - -Patch 6.1.121 (depends on 6.1.098) -Problem: When starting Select mode from Insert mode, then using the Paste - menu entry, the cursor is left before the laste pasted character. - (Mario Schweigler) -Solution: Set the cursor for Insert mode one character to the right. -Files: runtime/menu.vim - -Patch 6.1.122 -Problem: ":file name" creates a new buffer to hold the old buffer name, - which becomes the alternate file. This buffer is unexpectedly - listed. -Solution: Create the buffer for the alternate name unlisted. -Files: src/ex_cmds.c - -Patch 6.1.123 -Problem: A ":match" command with more than one argument doesn't report an - error. -Solution: Check for extra characters. (Servatius Brandt) -Files: src/ex_docmd.c - -Patch 6.1.124 -Problem: When trying to exit and there is a hidden buffer that had 'eol' - off and 'bin' set exiting isn't possible. (John McGowan) -Solution: Set b_start_eol when clearing the buffer. -Files: src/buffer.c - -Patch 6.1.125 -Problem: Explorer plugin asks for saving a modified buffer even when it's - open in another window as well. -Solution: Count the number of windows using the buffer. -Files: runtime/plugin/explorer.vim - -Patch 6.1.126 -Problem: Adding the choices in the syntax menu is consuming much of the - startup time of the GUI while it's not often used. -Solution: Only add the choices when the user wants to use them. -Files: Makefile, runtime/makemenu.vim, runtime/menu.vim, - runtime/synmenu.vim, src/Makefile - -Patch 6.1.127 -Problem: When using "--remote file" and the server has 'insertmode' set, - commands are inserted instead of being executed. (Niklas Volbers) -Solution: Go to Normal mode again after the ":drop" command. -Files: src/main.c - -Patch 6.1.128 -Problem: The expression "input('very long prompt')" puts the cursor in the - wrong line (column is OK). -Solution: Add the wrapped lines to the indent. (Yasuhiro Matsumoto) -Files: src/ex_getln.c - -Patch 6.1.129 -Problem: On Solaris editing "file/" and then "file" results in using the - same buffer. (Jim Battle) -Solution: Before using stat(), check that there is no illegal trailing - slash. -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/macros.h src/misc2.c, src/proto/misc2.pro - -Patch 6.1.130 -Problem: The documentation for some of the 'errorformat' items is unclear. -Solution: Add more examples and explain hard to understand items. (Stefan - Roemer) -Files: runtime/doc/quickfix.txt - -Patch 6.1.131 -Problem: X11 GUI: when expanding a CSI byte in the input stream to K_CSI, - the CSI byte itself isn't copied. -Solution: Copy the CSI byte. -Files: src/gui_x11.c - -Patch 6.1.132 -Problem: Executing a register in Ex mode may cause commands to be skipped. - (John McGowan) -Solution: In Ex mode use an extra check if the register contents was - consumed, to avoid input goes into the typeahead buffer. -Files: src/ex_docmd.c - -Patch 6.1.133 -Problem: When drawing double-wide characters in the statusline, may clear - half of a character. (Yasuhiro Matsumoto) -Solution: Force redraw of the next character by setting the attributes - instead of putting a NUL in ScreenLines[]. Do put a NUL in - ScreenLines[] when overwriting half of a double-wide character. -Files: src/screen.c - -Patch 6.1.134 -Problem: An error for a trailing argument of ":match" should not be given - after ":if 0". (Servatius Brandt) -Solution: Only do the check when executing commands. -Files: src/ex_docmd.c - -Patch 6.1.135 -Problem: Passing a command to the shell that includes a newline always has - a backslash before the newline. -Solution: Remove one backslash before the newline. (Servatius Brandt) -Files: src/ex_docmd.c - -Patch 6.1.136 -Problem: When $TERM is "linux" the default for 'background' is "dark", even - though the GUI uses a light background. (Hugh Allen) -Solution: Don't mark the option as set when defaulting to "dark" for the - linux console. Also reset 'background' to "light" when the GUI - has a light background. -Files: src/option.c - -Patch 6.1.137 -Problem: Converting to HTML has a clumsy way of dealing with tabs which may - change the highlighting. -Solution: Replace tabs with spaces after converting a line to HTML. (Preben - Guldberg) -Files: runtime/syntax/2html.vim - -Patch 6.1.138 (depends on 6.1.126) -Problem: Adding extra items to the Syntax menu can't be done when the "Show - individual choices" menu is used. -Solution: Use ":runtime!" instead of ":source", so that all synmenu.vim - files in the runtime path are loaded. (Servatius Brandt) - Also fix that a translated menu can't be removed. -Files: runtime/menu.vim - -Patch 6.1.139 -Problem: Cygwin: PATH_MAX is not defined. -Solution: Include limits.h. (Dan Sharp) -Files: src/main.c - -Patch 6.1.140 -Problem: Cygwin: ":args `ls *.c`" does not work if the shell command - produces CR NL line separators. -Solution: Remove the CR characters ourselves. (Pavol Juhas) -Files: src/os_unix.c - -Patch 6.1.141 -Problem: ":wincmd gx" may cause problems when mixed with other commands. - ":wincmd c" doesn't close the window immediately. (Benji Fisher) -Solution: Pass the extra command character directly instead of using the - stuff buffer and call ex_close() directly. -Files: src/ex_docmd.c, src/normal.c, src/proto/normal.pro, - src/proto/window.pro, src/window.c - -Patch 6.1.142 -Problem: Defining paragraphs without a separating blank line isn't - possible. Paragraphs can't be formatted automatically. -Solution: Allow defining paragraphs with lines that end in white space. - Added the 'w' and 'a' flags in 'formatoptions'. -Files: runtime/doc/change.txt, src/edit.c, src/misc1.c, src/normal.c, - src/option.h, src/ops.c, src/proto/edit.pro, src/proto/ops.pro, - src/vim.h - -Patch 6.1.143 (depends on 6.1.142) -Problem: Auto formatting near the end of the file moves the cursor to a - wrong position. In Insert mode some lines are made one char too - narrow. When deleting a line undo might not always work properly. -Solution: Don't always move to the end of the line in the last line. Don't - position the cursor past the end of the line in Insert mode. - After deleting a line save the cursor line for undo. -Files: src/edit.c, src/ops.c, src/normal.c - -Patch 6.1.144 -Problem: Obtaining the size of a line in screen characters can be wrong. - A pointer may wrap around zero. -Solution: In win_linetabsize() check for a MAXCOL length argument. (Jim - Dunleavy) -Files: src/charset.c - -Patch 6.1.145 -Problem: GTK: Drag&drop with more than 3 files may cause a crash. (Mickael - Marchand) -Solution: Rewrite the code that parses the received list of files to be more - robust. -Files: src/charset.c, src/gui_gtk_x11.c - -Patch 6.1.146 -Problem: MS-Windows: When $HOME is constructed from $HOMEDRIVE and - $HOMEPATH, it is not used for storing the _viminfo file. (Normal - Diamond) -Solution: Set $HOME with the value obtained from $HOMEDRIVE and $HOMEPATH. -Files: src/misc1.c - -Patch 6.1.147 (extra) -Problem: MS-Windows: When a dialog has no default button, pressing Enter - ends it anyway and all buttons are selected. -Solution: Don't end a dialog when there is no default button. Don't select - all button when there is no default. (Vince Negri) -Files: src/gui_w32.c - -Patch 6.1.148 (extra) -Problem: MS-Windows: ACL is not properly supported. -Solution: Add an access() replacement that also works for ACL. (Mike - Williams) -Files: runtime/doc/editing.txt, src/os_win32.c - -Patch 6.1.149 (extra) -Problem: MS-Windows: Can't use diff mode from the file explorer. -Solution: Add a "diff with Vim" context menu entry. (Dan Sharp) -Files: GvimExt/gvimext.cpp, GvimExt/gvimext.h - -Patch 6.1.150 -Problem: OS/2, MS-Windows and MS-DOS: When 'shellslash' is set getcwd() - still uses backslash. (Yegappan Lakshmanan) -Solution: Adjust slashes in getcwd(). -Files: src/eval.c - -Patch 6.1.151 (extra) -Problem: Win32: The NTFS substream isn't copied. -Solution: Copy the substream when making a backup copy. (Muraoka Taro) -Files: src/fileio.c, src/os_win32.c, src/proto/os_win32.pro - -Patch 6.1.152 -Problem: When $LANG is iso8859-1 translated menus are not used. -Solution: Change iso8859 to iso_8859. -Files: runtime/menu.vim - -Patch 6.1.153 -Problem: Searching in included files may search recursively when the path - starts with "../". (Sven Berkvens-Matthijsse) -Solution: Compare full file names, use inode/device when possible. -Files: src/search.c - -Patch 6.1.154 (extra) -Problem: DJGPP: "vim -h" leaves the cursor in a wrong position. -Solution: Don't position the cursor using uninitialized variables. (Jim - Dunleavy) -Files: src/os_msdos.c - -Patch 6.1.155 -Problem: Win32: Cursor may sometimes disappear in Insert mode. -Solution: Change "hor10" in 'guicursor' to "hor15". (Walter Briscoe) -Files: src/option.c - -Patch 6.1.156 -Problem: Conversion between DBCS and UCS-2 isn't implemented cleanly. -Solution: Clean up a few things. -Files: src/mbyte.c, src/structs.h - -Patch 6.1.157 -Problem: 'hlsearch' highlights only the second comma in ",,,,," with - "/,\@<=[^,]*". (Preben Guldberg) -Solution: Also check for an empty match to start just after a previous - match. -Files: src/screen.c - -Patch 6.1.158 -Problem: "zs" and "ze" don't work correctly with ":set nowrap siso=1". - (Preben Guldberg) -Solution: Take 'siso' into account when computing the horizontal scroll - position for "zs" and "ze". -Files: src/normal.c - -Patch 6.1.159 -Problem: When expanding an abbreviation that includes a multi-byte - character too many characters are deleted. (Andrey Urazov) -Solution: Delete the abbreviation counting characters instead of bytes. -Files: src/getchar.c - -Patch 6.1.160 -Problem: ":$read file.gz" doesn't work. (Preben Guldberg) -Solution: Don't use the '[ mark after it has become invalid. -Files: runtime/plugin/gzip.vim - -Patch 6.1.161 (depends on 6.1.158) -Problem: Warning for signed/unsigned compare. Can set 'siso' to a negative - value. (Mike Williams) -Solution: Add a typecast. Add a check for 'siso' being negative. -Files: src/normal.c, src/option.c - -Patch 6.1.162 -Problem: Python interface: Didn't initialize threads properly. -Solution: Call PyEval_InitThreads() when starting up. -Files: src/if_python.c - -Patch 6.1.163 -Problem: Win32: Can't compile with Python after 6.1.162. -Solution: Dynamically load PyEval_InitThreads(). (Dan Sharp) -Files: src/if_python.c - -Patch 6.1.164 -Problem: If 'modifiable' is off, converting to xxd fails and 'filetype' is - changed to "xxd" anyway. -Solution: Don't change 'filetype' when conversion failed. -Files: runtime/menu.vim - -Patch 6.1.165 -Problem: Making changes in several lines and then a change in one of these - lines that splits it in two or more lines, undo information was - corrupted. May cause a crash. (Dave Fishburn) -Solution: When skipping to save a line for undo because it was already - saved, move it to become the last saved line, so that when the - command changes the line count other saved lines are not involved. -Files: src/undo.c - -Patch 6.1.166 -Problem: When 'autoindent' is set and mswin.vim has been sourced, pasting - with CTRL-V just after auto-indenting removes the indent. (Shlomi - Fish) -Solution: First insert an "x" and delete it again, so that the auto-indent - remains. -Files: runtime/mswin.vim - -Patch 6.1.167 -Problem: When giving a negative argument to ":retab" strange things start - happening. (Hans Ginzel) -Solution: Check for a negative value. -Files: src/ex_cmds.c - -Patch 6.1.168 -Problem: Pressing CTRL-C at the hit-enter prompt doesn't end the prompt. -Solution: Make CTRL-C stop the hit-enter prompt. -Files: src/message.c - -Patch 6.1.169 -Problem: bufexists() finds a buffer by using the name of a symbolic link to - it, but bufnr() doesn't. (Yegappan Lakshmanan) -Solution: When bufnr() can't find a buffer, try using the same method as - bufexists(). -Files: src/eval.c - -Patch 6.1.170 -Problem: Using ":mksession" uses the default session file name, but "vim - -S" doesn't. (Hans Ginzel) -Solution: Use the default session file name if "-S" is the last command - line argument or another option follows. -Files: runtime/doc/starting.txt, src/main.c - -Patch 6.1.171 -Problem: When opening a line just above a closed fold with "O" and the - comment leader is automatically inserted, the cursor is displayed - in the first column. (Sung-Hyun Nam) -Solution: Update the flag that indicates the cursor is in a closed fold. -Files: src/misc1.c - -Patch 6.1.172 -Problem: Command line completion of ":tag /pat" does not show the same - results as the tags the command actually finds. (Gilles Roy) -Solution: Don't modify the pattern to make it a regexp. -Files: src/ex_getln.c, src/tag.c - -Patch 6.1.173 -Problem: When using remote control to edit a position in a file and this - file is the current buffer and it's modified, the window is split - and the ":drop" command fails. -Solution: Don't split the window, keep editing the same buffer. - Use the ":drop" command in VisVim to avoid the problem there. -Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds2.pro, - VisVim/Commands.cpp - -Patch 6.1.174 -Problem: It is difficult to know in a script whether an option not only - exists but really works. -Solution: Add "exists('+option')". -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.1.175 -Problem: When reading commands from a pipe and a CTRL-C is pressed, Vim - will hang. (Piet Delport) -Solution: Don't keep reading characters to clear typeahead when an interrupt - was detected, stop when a single CTRL-C is read. -Files: src/getchar.c, src/ui.c - -Patch 6.1.176 -Problem: When the stack limit is very big a false out-of-stack error may - be detected. -Solution: Add a check for overflow of the stack limit computation. (Jim - Dunleavy) -Files: src/os_unix.c - -Patch 6.1.177 (depends on 6.1.141) -Problem: ":wincmd" does not allow a following command. (Gary Johnson) -Solution: Check for a following " | cmd". Also give an error for trailing - characters. -Files: src/ex_docmd.c - -Patch 6.1.178 -Problem: When 'expandtab' is set "r<C-V><Tab>" still expands the Tab. - (Bruce deVisser) -Solution: Replace with a literal Tab. -Files: src/normal.c - -Patch 6.1.179 (depends on 6.1.091) -Problem: When using X11R5 XIMPreserveState is undefined. (Albert Chin) -Solution: Include the missing definitions. -Files: src/mbyte.c - -Patch 6.1.180 -Problem: Use of the GUI code for forking is inconsistent. -Solution: Define MAY_FORK and use it for later #ifdefs. (Ben Fowlwer) -Files: src/gui.c - -Patch 6.1.181 -Problem: If the terminal doesn't wrap from the last char in a line to the - next line, the last column is blanked out. (Peter Karp) -Solution: Don't output a space to mark the wrap, but the same character - again. -Files: src/screen.c - -Patch 6.1.182 (depends on 6.1.142) -Problem: It is not possible to auto-format comments only. (Moshe Kaminsky) -Solution: When the 'a' and 'c' flags are in 'formatoptions' only auto-format - comments. -Files: runtime/doc/change.txt, src/edit.c - -Patch 6.1.183 -Problem: When 'fencs' is empty and 'enc' is utf-8, reading a file with - illegal bytes gives "CONVERSION ERROR" even though no conversion - is done. 'readonly' is set, even though writing the file results - in an unmodified file. -Solution: For this specific error use "ILLEGAL BYTE" and don't set - 'readonly'. -Files: src/fileio.c - -Patch 6.1.184 (extra) -Problem: The extra mouse buttons found on some mice don't work. -Solution: Support two extra buttons for MS-Windows. (Michael Geddes) -Files: runtime/doc/term.txt, src/edit.c, src/ex_getln.c, src/gui.c, - src/gui_w32.c, src/gui_w48.c, src/keymap.h, src/message.c, - src/misc1.c, src/misc2.c, src/normal.c. src/vim.h - -Patch 6.1.185 (depends on 6.1.182) -Problem: Can't compile without +comments feature. -Solution: Add #ifdef FEAT_COMMENTS. (Christian J. Robinson) -Files: src/edit.c - -Patch 6.1.186 (depends on 6.1.177) -Problem: ":wincmd" does not allow a following comment. (Aric Blumer) -Solution: Check for a following double quote. -Files: src/ex_docmd.c - -Patch 6.1.187 -Problem: Using ":doarg" with 'hidden' set and the current file is the only - argument and was modified gives an error message. (Preben - Guldberg) -Solution: Don't try re-editing the same file. -Files: src/ex_cmds2.c - -Patch 6.1.188 (depends on 6.1.173) -Problem: Unused variable in the small version. -Solution: Move the declaration for "p" inside #ifdef FEAT_LISTCMDS. -Files: src/ex_cmds2.c - -Patch 6.1.189 -Problem: inputdialog() doesn't work when 'c' is in 'guioptions'. (Aric - Blumer) -Solution: Fall back to the input() function in this situation. -Files: src/eval.c - -Patch 6.1.190 (extra) -Problem: VMS: doesn't build with GTK GUI. Various other problems. -Solution: Fix building for GTK. Improved Perl, Python and TCL support. - Improved VMS documentation. (Zoltan Arpadffy) - Added Vimtutor for VMS (T. R. Wyant) -Files: runtime/doc/os_vms.txt, src/INSTALLvms.txt, src/gui_gtk_f.h, - src/if_tcl.c, src/main.c, src/gui_gtk_vms.h, src/Make_vms.mms, - src/os_vms.opt, src/proto/if_tcl.pro, vimtutor.com, - src/testdir/Make_vms.mms - -Patch 6.1.191 -Problem: When using "vim -s script" and redirecting the output, the delay - for the "Output is not to a terminal" warning slows Vim down too - much. -Solution: Don't delay when reading commands from a script. -Files: src/main.c - -Patch 6.1.192 -Problem: ":diffsplit" doesn't add "hor" to 'scrollopt'. (Gary Johnson) -Solution: Add "hor" to 'scrollopt' each time ":diffsplit" is used. -Files: src/diff.c, src/main.c - -Patch 6.1.193 -Problem: Crash in in_id_list() for an item with a "containedin" list. (Dave - Fishburn) -Solution: Check for a negative syntax id, used for keywords. -Files: src/syntax.c - -Patch 6.1.194 -Problem: When "t_ti" is set but it doesn't cause swapping terminal pages, - "ZZ" may cause the shell prompt to appear on top of the file-write - message. -Solution: Scroll the text up in the Vim page before swapping to the terminal - page. (Michael Schroeder) -Files: src/os_unix.c - -Patch 6.1.195 -Problem: The quickfix and preview windows always keep their height, while - other windows can't fix their height. -Solution: Add the 'winfixheight' option, so that a fixed height can be - specified for any window. Also fix that the wildmenu may resize a - one-line window to a two-line window if 'ls' is zero. -Files: runtime/doc/options.txt, runtime/optwin.vim, src/ex_cmds.c, - src/ex_getln.c, src/globals.h, src/option.c, src/quickfix.c, - src/screen.c, src/structs.h, src/window.c - -Patch 6.1.196 (depends on 6.1.084) -Problem: On Mac OS X 10.2 generating osdef.h fails. -Solution: Add -no-cpp-precomp to avoid using precompiled header files, which - disables printing the search path. (Ben Fowler) -Files: src/auto/configure, src/configure.in - -Patch 6.1.197 -Problem: ":help <C-V><C-\><C-V><C-N>" (resulting in <1c><0e>) gives an - error message. (Servatius Brandt) -Solution: Double the backslash in "CTRL-\". -Files: src/ex_cmds.c - -Patch 6.1.198 (extra) (depends on 6.1.076) -Problem: Mac OS X: Dialogues don't work. -Solution: Fix a crashing problem for some GUI dialogues. Fix a problem when - saving to a new file from the GUI. (Peter Cucka) -Files: src/feature.h, src/gui_mac.c - -Patch 6.1.199 -Problem: 'guifontwide' doesn't work on Win32. -Solution: Output each wide character separately. (Michael Geddes) -Files: src/gui.c - -Patch 6.1.200 -Problem: ":syn sync fromstart" is not skipped after ":if 0". This can make - syntax highlighting very slow. -Solution: Check "eap->skip" appropriately. (Rob West) -Files: src/syntax.c - -Patch 6.1.201 (depends on 6.1.192) -Problem: Warning for illegal pointer combination. (Zoltan Arpadffy) -Solution: Add a typecast. -Files: src/diff.c - -Patch 6.1.202 (extra)(depends on 6.1.148) -Problem: Win32: filewritable() doesn't work properly on directories. -Solution: fix filewritable(). (Mike Williams) -Files: src/os_win32.c - -Patch 6.1.203 -Problem: ":%s/~//" causes a crash after ":%s/x//". (Gary Holloway) -Solution: Avoid reading past the end of a line when "~" is empty. -Files: src/regexp.c - -Patch 6.1.204 (depends on 6.1.129) -Problem: Warning for an illegal pointer on Solaris. -Solution: Add a typecast. (Derek Wyatt) -Files: src/misc2.c - -Patch 6.1.205 -Problem: The gzip plugin changes the alternate file when editing a - compressed file. (Oliver Fuchs) -Solution: Temporarily remove the 'a' and 'A' flags from 'cpo'. -Files: runtime/plugin/gzip.vim - -Patch 6.1.206 -Problem: The script generated with ":mksession" doesn't work properly when - some commands are mapped. -Solution: Use ":normal!" instead of ":normal". And use ":wincmd" where - possible. (Muraoka Taro) -Files: src/ex_docmd.c, src/fold.c - -Patch 6.1.207 -Problem: Indenting a Java file hangs below a line with a comment after a - command. -Solution: Break out of a loop. (Andre Pang) - Also line up } with matching {. -Files: runtime/indent/java.vim - -Patch 6.1.208 -Problem: Can't use the buffer number from the Python interface. -Solution: Add buffer.number. (Michal Vitecek) -Files: src/if_python.c - -Patch 6.1.209 -Problem: Printing doesn't work on Mac OS classic. -Solution: Use a ":" for path separator when opening the resource file. (Axel - Kielhorn) -Files: src/ex_cmds2.c - -Patch 6.1.210 -Problem: When there is an iconv() conversion error when reading a file - there can be an error the next time iconv() is used. -Solution: Reset the state of the iconv() descriptor. (Yasuhiro Matsumoto) -Files: src/fileio.c - -Patch 6.1.211 -Problem: The message "use ! to override" is confusing. -Solution: Make it "add ! to override". -Files: src/buffer.c, src/eval.c, src/ex_docmd.c, src/fileio.c, - src/globals.h - -Patch 6.1.212 -Problem: When Vim was started with "-R" ":new" creates a buffer - 'noreadonly' while ":enew" has 'readonly' set. (Preben Guldberg) -Solution: Don't set 'readonly in a new empty buffer for ":enew". -Files: src/ex_docmd.c - -Patch 6.1.213 -Problem: Using CTRL-W H may cause a big gap to appear below the last - window. (Aric Blumer) -Solution: Don't set the window height when there is a vertical split. - (Yasuhiro Matsumoto) -Files: src/window.c - -Patch 6.1.214 -Problem: When installing Vim and the runtime files were checked out from - CVS the CVS directories will also be installed. -Solution: Avoid installing the CVS dirs and their contents. -Files: src/Makefile - -Patch 6.1.215 -Problem: Win32: ":pwd" uses backslashes even when 'shellslash' is set. - (Xiangjiang Ma) -Solution: Adjust backslashes before printing the message. -Files: src/ex_docmd.c - -Patch 6.1.216 -Problem: When dynamically loading the iconv library, the error codes may be - confused. -Solution: Use specific error codes for iconv and redefine them for dynamic - loading. (Yasuhiro Matsumoto) -Files: src/fileio.c, src/mbyte.c, src/vim.h - -Patch 6.1.217 -Problem: When sourcing the same Vim script using a different name (symbolic - link or MS-Windows 8.3 name) it is listed twice with - ":scriptnames". (Tony Mechelynck) -Solution: Turn the script name into a full path before using it. On Unix - compare inode/device numbers. -Files: src/ex_cmds2.c - -Patch 6.1.218 -Problem: No error message for using the function argument "5+". (Servatius - Brandt) -Solution: Give an error message if a function or variable is expected but is - not found. -Files: src/eval.c - -Patch 6.1.219 -Problem: When using ":amenu :b 1<CR>" with a Visual selection and - 'insertmode' is set, Vim does not return to Insert mode. (Mickael - Marchand) -Solution: Add the command CTRL-\ CTRL-G that goes to Insert mode if - 'insertmode' is set and to Normal mode otherwise. Append this to - menus defined with ":amenu". -Files: src/edit.c, src/ex_getln.c, src/normal.c - -Patch 6.1.220 -Problem: When using a BufReadPost autocommand that changes the line count, - e.g., "$-1join", reloading a file that was changed outside Vim - does not work properly. (Alan G Isaac) -Solution: Make the buffer empty before reading the new version of the file. - Save the lines in a dummy buffer, so that they can be put back - when reading the file fails. -Files: src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h, - src/proto/buffer.pro - -Patch 6.1.221 -Problem: Changing case may not work properly, depending on the current - locale. -Solution: Add the 'casemap' option to let the user chose how changing case - is to be done. - Also fix lowering case when an UTF-8 character doesn't keep the - same byte length. -Files: runtime/doc/options.txt, src/ascii.h, src/auto/configure, - src/buffer.c, src/charset.c, src/config.h.in, src/configure.in, - src/diff.c, src/edit.c, src/eval.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/gui_amiga.c - src/gui_mac.c, src/gui_photon.c, src/gui_w48.c, src/gui_beos.cc, - src/macros.h, src/main.c, src/mbyte.c, src/menu.c, src/message.c, - src/misc1.c, src/misc2.c, src/option.c, src/os_msdos.c, - src/os_mswin.c, src/proto/charset.pro, src/regexp.c, src/option.h, - src/syntax.c - -Patch 6.1.222 (depends on 6.1.219) -Problem: Patch 6.1.219 was incomplete. -Solution: Add the changes for ":amenu". -Files: src/menu.c - -Patch 6.1.223 (extra) -Problem: Win32: When IME is activated 'iminsert' is set, but it might never - be reset when IME is disabled. (Muraoka Taro) - All systems: 'iminsert' is set to 2 when leaving Insert mode, even - when langmap is being used. (Peter Valach) -Solution: Don't set "b_p_iminsert" in _OnImeNotify(). (Muraoka Taro) - Don't store the status of the input method in 'iminsert' when - 'iminsert' is one. Also for editing the command line and for - arguments to Normal mode commands. -Files: src/edit.c, src/ex_getln.c, src/gui_w32.c, src/normal.c - -Patch 6.1.224 -Problem: "expand('$VAR')" returns an empty string when the expanded $VAR - is not an existing file. (Aric Blumer) -Solution: Included non-existing files, as documented. -Files: src/eval.c - -Patch 6.1.225 -Problem: Using <C-O><C-^> in Insert mode has a delay when starting "vim -u - NONE" and ":set nocp hidden". (Emmanuel) do_ecmd() uses - fileinfo(), the redraw is done after a delay to give the user time - to read the message. -Solution: Put the message from fileio() in "keep_msg", so that the redraw is - done before the delay (still needed to avoid the mode message - overwrites the fileinfo() message). -Files: src/buffer.c - -Patch 6.1.226 -Problem: Using ":debug" with a ":normal" command may cause a hang. (Colin - Keith) -Solution: Save the typeahead buffer when obtaining a debug command. -Files: src/ex_cmds2.c, src/getchar.c, src/proto/getchar.pro - -Patch 6.1.227 -Problem: It is possible to use a variable name "asdf:asdf" and ":let j:asdf - = 5" does not give an error message. (Mikolaj Machowski) -Solution: Check for a ":" inside the variable name. -Files: src/eval.c - -Patch 6.1.228 (extra) -Problem: Win32: The special output function for Hangul is used too often, - causing special handling for other situations to be skipped. - bInComposition is always FALSE, causing ImeGetTempComposition() - always to return NULL. -Solution: Remove HanExtTextOut(). Delete the dead code around - bInComposition and ImeGetTempComposition(). -Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c - -Patch 6.1.229 -Problem: Win32: Conversion to/from often used codepages requires the iconv - library, which is not always available. -Solution: Use standard MS-Windows functions for the conversion when - possible. (mostly by Glenn Maynard) - Also fixes missing declaration for patch 6.1.220. -Files: src/fileio.c - -Patch 6.1.230 (extra) -Problem: Win16: building doesn't work. -Solution: Exclude the XBUTTON handling. (Vince Negri) -Files: src/gui_w48.c - -Patch 6.1.231 -Problem: Double clicking with the mouse to select a word does not work for - multi-byte characters. -Solution: Use vim_iswordc() instead of vim_isIDc(). This means 'iskeyword' - is used intead of 'isident'. Also fix that mixing ASCII with - multi-byte word characters doesn't work, the mouse class for - punctuation and word characters was mixed up. -Files: src/normal.c - -Patch 6.1.232 (depends on 6.1.226) -Problem: Using ex_normal_busy while it might not be available. (Axel - Kielhorn) -Solution: Only use ex_normal_busy when FEAT_EX_EXTRA is defined. -Files: src/ex_cmds2.c - -Patch 6.1.233 -Problem: ":help expr-||" does not work. -Solution: Don't use the '|' as a command separator -Files: src/ex_cmds.c - -Patch 6.1.234 (depends on 6.1.217) -Problem: Get a warning for using a negative value for st_dev. -Solution: Don't assign a negative value to st_dev. -Files: src/ex_cmds2.c - -Patch 6.1.235 (depends on 6.1.223) -Problem: 'iminsert' is changed from 1 to 2 when leaving Insert mode. (Peter - Valach) -Solution: Check "State" before resetting it to NORMAL. -Files: src/edit.c - -Patch 6.1.236 -Problem: Memory leaks when appending lines for ":diffget" or ":diffput" and - when reloading a changed buffer. -Solution: Free a line after calling ml_append(). -Files: src/diff.c, src/fileio.c - -Patch 6.1.237 -Problem: Putting in Visual block mode does not work correctly when "$" was - used or when the first line is short. (Christian Michon) -Solution: First delete the selected text and then put the new text. Save - and restore registers as necessary. -Files: src/globals.h, src/normal.c, src/ops.c, src/proto/ops.pro, - src/vim.h - -Patch 6.1.238 (extra) -Problem: Win32: The "icon=" argument for the ":menu" command does not - search for the bitmap file. -Solution: Expand environment variables and search for the bitmap file. - (Vince Negri) - Make it consistent, use the same mechanism for X11 and GTK. -Files: src/gui.c src/gui_gtk.c, src/gui_w32.c, src/gui_x11.c, - src/proto/gui.pro - -Patch 6.1.239 -Problem: Giving an error for missing :endif or :endwhile when being - interrupted. -Solution: Don't give these messages when interrupted. -Files: src/ex_docmd.c, src/os_unix.c - -Patch 6.1.240 (extra) -Problem: Win32 with BCC 5: CPU may be defined in the environment, which - causes a wrong argument for the compiler. (Walter Briscoe) -Solution: Use CPUNR instead of CPU. -Files: src/Make_bc5.mak - -Patch 6.1.241 -Problem: Something goes wrong when drawing or undrawing the cursor. -Solution: Remember when the cursor invalid in a better way. -Files: src/gui.c - -Patch 6.1.242 -Problem: When pasting a large number of lines on the command line it is not - possible to interrupt. (Jean Jordaan) -Solution: Check for an interrupt after each pasted line. -Files: src/ops.c - -Patch 6.1.243 (extra) -Problem: Win32: When the OLE version is started and wasn't registered, a - message pops up to suggest registering, even when this isn't - possible (when the registry is not writable). -Solution: Check if registering is possible before asking whether it should - be done. (Walter Briscoe) - Also avoid restarting Vim after registering. -Files: src/if_ole.cpp - -Patch 6.1.244 -Problem: Patch 6.1.237 was missing the diff for vim.h. (Igor Goldenberg) -Solution: Include it here. -Files: src/vim.h - -Patch 6.1.245 -Problem: Comparing with ignored case does not work properly for Unicode - with a locale where case folding an ASCII character results in a - multi-byte character. (Glenn Maynard) -Solution: Handle ignore-case compare for Unicode differently. -Files: src/mbyte.c - -Patch 6.1.246 -Problem: ":blast" goes to the first buffer if the last one is unlisted. - (Andrew Stryker) -Solution: From the last buffer search backwards for the first listed buffer - instead of forwards. -Files: src/ex_docmd.c - -Patch 6.1.247 -Problem: ACL support doesn't always work properly. -Solution: Add a configure argument to disable ACL "--disable-acl". (Thierry - Vignaud) -Files: src/auto/configure, src/configure.in - -Patch 6.1.248 -Problem: Typing 'q' at the more-prompt for ":let" does not quit the - listing. (Hari Krishna Dara) -Solution: Quit the listing when got_int is set. -Files: src/eval.c - -Patch 6.1.249 -Problem: Can't expand a path on the command line if it includes a "|" as a - trail byte of a multi-byte character. -Solution: Check for multi-byte characters. (Yasuhiro Matsumoto) -Files: src/ex_docmd.c - -Patch 6.1.250 -Problem: When changing the value of 'lines' inside the expression set with - 'diffexpr' Vim might crash. (Dave Fishburn) -Solution: Don't allow changing the screen size while updating the screen. -Files: src/globals.h, src/option.c, src/screen.c - -Patch 6.1.251 -Problem: Can't use completion for ":lcd" and ":lchdir" like ":cd". -Solution: Expand directory names for these commands. (Servatius Brandt) -Files: src/ex_docmd.c - -Patch 6.1.252 -Problem: "vi}" does not include a line break when the "}" is at the start - of a following line. (Kamil Burzynski) -Solution: Include the line break. -Files: src/search.c - -Patch 6.1.253 (extra) -Problem: Win32 with Cygwin: Changes the path of arguments in a wrong way. - (Xiangjiang Ma) -Solution: Don't use cygwin_conv_to_posix_path() for the Win32 version. - Update the Cygwin makefile to support more features. (Dan Sharp) -Files: src/Make_cyg.mak, src/if_ole.cpp, src/main.c - -Patch 6.1.254 -Problem: exists("foo{bar}") does not work. ':unlet v{"a"}r' does not work. - ":let v{a}r1 v{a}r2" does not work. ":func F{(1)}" does not work. - ":delfunc F{" does not give an error message. ':delfunc F{"F"}' - does not work. -Solution: Support magic braces for the exists() argument. (Vince Negri) - Check for trailing comments explicitly for ":unlet". Add support - for magic braces in further arguments of ":let". Look for a - parenthesis only after the function name. (Servatius Brandt) - Also expand magic braces for "exists('*expr')". Give an error - message for an invalid ":delfunc" argument. Allow quotes in the - ":delfunc" argument. -Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c - -Patch 6.1.255 (depends on 6.1.254) -Problem: Crash when loading menu.vim a second time. (Christian Robinson) - ":unlet garbage foo" tries unletting "foo" after an error message. - (Servatius Brandt) - Very long function arguments cause very long messages when - 'verbose' is 14 or higher. -Solution: Avoid reading from uninitialized memory. - Break out of a loop after an invalid argument for ":unlet". - Truncate long function arguments to 80 characters. -Files: src/eval.c - -Patch 6.1.256 (depends on 6.1.255) -Problem: Defining a function after ":if 0" could still cause an error - message for an existing function. - Leaking memory when there are trailing characters for ":delfunc". -Solution: Check the "skip" flag. Free the memory. (Servatius Brandt) -Files: src/eval.c - -Patch 6.1.257 -Problem: ":cwindow" always sets the previous window to the last but one - window. (Benji Fisher) -Solution: Set the previous window properly. -Files: src/globals.c, src/quickfix.c, src/window.c - -Patch 6.1.258 -Problem: Buffers menu doesn't work properly for multibyte buffer names. -Solution: Use a pattern to get the left and right part of the name. - (Yasuhiro Matsumoto) -Files: runtime/menu.vim - -Patch 6.1.259 (extra) -Problem: Mac: with 'patchmode' is used filenames are truncated. -Solution: Increase the BASENAMELEN for Mac OS X. (Ed Ralston) -Files: src/os_mac.h - -Patch 6.1.260 (depends on 6.1.104) -Problem: GCC 3.2 still seems to have an optimizer problem. (Zvi Har'El) -Solution: Use the same configure check as used for GCC 3.1. -Files: src/auto/configure, src/configure.in - -Patch 6.1.261 -Problem: When deleting a line in a buffer which is not the current buffer, - using the Perl interface Delete(), the cursor in the current - window may move. (Chris Houser) -Solution: Don't adjust the cursor position when changing another buffer. -Files: src/if_perl.xs - -Patch 6.1.262 -Problem: When jumping over folds with "z[", "zj" and "zk" the previous - position is not remembered. (Hari Krishna Dara) -Solution: Set the previous context mark before jumping. -Files: src/fold.c - -Patch 6.1.263 -Problem: When typing a multi-byte character that triggers an abbreviation - it is not inserted properly. -Solution: Handle adding the typed multi-byte character. (Yasuhiro Matsumoto) -Files: src/getchar.c - -Patch 6.1.264 (depends on patch 6.1.254) -Problem: exists() does not work for built-in functions. (Steve Wall) -Solution: Don't check for the function name to start with a capital. -Files: src/eval.c - -Patch 6.1.265 -Problem: libcall() can be used in 'foldexpr' to call any system function. - rename(), delete() and remote_send() can also be used in - 'foldexpr'. These are security problems. (Georgi Guninski) -Solution: Don't allow using libcall(), rename(), delete(), remote_send() and - similar functions in the sandbox. -Files: src/eval.c - -Patch 6.1.266 (depends on 6.1.265) -Problem: Win32: compile error in eval.c. (Bill McCarthy) -Solution: Move a variable declaration. -Files: src/eval.c - -Patch 6.1.267 -Problem: Using "p" to paste into a Visual selected area may cause a crash. -Solution: Allocate enough memory for saving the register contents. (Muraoka - Taro) -Files: src/ops.c - -Patch 6.1.268 -Problem: When triggering an abbreviation with a multi-byte character, this - character is not correctly inserted after expanding the - abbreviation. (Taro Muraoka) -Solution: Add ABBR_OFF to all characters above 0xff. -Files: src/edit.c, src/ex_getln.c, src/getchar.c - -Patch 6.1.269 -Problem: After using input() text written with ":redir" gets extra indent. - (David Fishburn) -Solution: Restore msg_col after using input(). -Files: src/ex_getln.c - -Patch 6.1.270 (depends on 6.1.260) -Problem: GCC 3.2.1 still seems to have an optimizer problem. -Solution: Use the same configure check as used for GCC 3.1. -Files: src/auto/configure, src/configure.in - -Patch 6.1.271 -Problem: When compiling without the +syntax feature there are errors. -Solution: Don't use some code for syntax highlighting. (Roger Cornelius) - Make test 45 work without syntax highlighting. - Also fix an error in a pattern matching: "\%(" was not supported. -Files: src/ex_cmds2.c, src/regexp.c, src/testdir/test45.in - -Patch 6.1.272 -Problem: After using ":set define<" a crash may happen. (Christian Robinson) -Solution: Make a copy of the option value in allocated memory. -Files: src/option.c - -Patch 6.1.273 -Problem: When the cursor doesn't blink, redrawing an exposed area may hide - the cursor. -Solution: Always draw the cursor, also when it didn't move. (Muraoka Taro) -Files: src/gui.c - -Patch 6.1.274 (depends on 6.1.210) -Problem: Resetting the iconv() state after each error is wrong for an - incomplete sequence. -Solution: Don't reset the iconv() state. -Files: src/fileio.c - -Patch 6.1.275 -Problem: When using "v" in a startup script, get warning message that - terminal cannot highlight. (Charles Campbell) -Solution: Only give the message after the terminal has been initialized. -Files: src/normal.c - -Patch 6.1.276 -Problem: "gvim --remote file" doesn't prompt for an encryption key. -Solution: The further characters the client sends to the server are used. - Added inputsave() and inputrestore() to allow prompting the - user directly and not using typeahead. - Also fix possible memory leak for ":normal". -Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, - src/main.c, src/proto/getchar.pro, src/proto/ui.pro, - src/runtime/doc/eval.txt, src/structs.h, src/ui.c, src/vim.h - -Patch 6.1.277 (depends on 6.1.276) -Problem: Compilation error when building with small features. -Solution: Define trash_input_buf() when needed. (Kelvin Lee) -Files: src/ui.c - -Patch 6.1.278 -Problem: When using signs the line number of a closed fold doesn't line up - with the other line numbers. (Kamil Burzynski) -Solution: Insert two spaces for the sign column. -Files: src/screen.c - -Patch 6.1.279 -Problem: The prototype for smsg() and smsg_attr() do not match the function - definition. This may cause trouble for some compilers. (Nix) -Solution: Use va_list for systems that have stdarg.h. Use "int" instead of - "void" for the return type. -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/proto.h, src/message.c - -Patch 6.1.280 -Problem: It's possible to use an argument "firstline" or "lastline" for a - function but using "a:firstline" or "a:lastline" in the function - won't work. (Benji Fisher) -Solution: Give an error message for these arguments. - Also avoid that the following function body causes a whole row of - errors, skip over it after an error in the first line. -Files: src/eval.c - -Patch 6.1.281 -Problem: In Insert mode CTRL-X CTRL-G leaves the cursor after the ruler. -Solution: Set the cursor position before waiting for the argument of CTRL-G. - (Yasuhiro Matsumoto) -Files: src/edit.c - -Patch 6.1.282 -Problem: Elvis uses "se" in a modeline, Vim doesn't recognize this. -Solution: Also accept "se " where "set " is accepted in a modeline. - (Yasuhiro Matsumoto) -Files: src/buffer.c - -Patch 6.1.283 -Problem: For ":sign" the icon file name cannot contain a space. -Solution: Handle backslashes in the file name. (Yasuhiro Matsumoto) -Files: src/ex_cmds.c - -Patch 6.1.284 -Problem: On Solaris there is a warning for "struct utimbuf". -Solution: Move including "utime.h" to outside the function. (Derek Wyatt) -Files: src/fileio.c - -Patch 6.1.285 -Problem: Can't wipe out a buffer with 'bufhide' option. -Solution: Add "wipe" value to 'bufhide'. (Yegappan Lakshmanan) -Files: runtime/doc/options.txt, src/buffer.c, src/option.c, - src/quickfix.c - -Patch 6.1.286 -Problem: 'showbreak' cannot contain multi-byte characters. -Solution: Allow using all printable characters for 'showbreak'. -Files: src/charset.c, src/move.c, src/option.c - -Patch 6.1.287 (depends on 6.1.285) -Problem: Effect of "delete" and "wipe" in 'bufhide' were mixed up. -Solution: Wipe out when wiping out is asked for. -Files: src/buffer.c - -Patch 6.1.288 -Problem: ":silent function F" hangs. (Hari Krishna Dara) -Solution: Don't use msg_col, it is not incremented when using ":silent". - Also made the function output look a bit better. Don't translate - "function". -Files: src/eval.c - -Patch 6.1.289 (depends on 6.1.278) -Problem: Compiler warning for pointer. (Axel Kielhorn) -Solution: Add a typecast for " ". -Files: src/screen.c - -Patch 6.1.290 (extra) -Problem: Truncating long text for message box may break multi-byte - character. -Solution: Adjust to start of multi-byte character. (Yasuhiro Matsumoto) -Files: src/os_mswin.c - -Patch 6.1.291 (extra) -Problem: Win32: CTRL-@ doesn't work. Don't even get a message for it. -Solution: Recognize the keycode for CTRL-@. (Yasuhiro Matsumoto) -Files: src/gui_w48.c - -Patch 6.1.292 (extra, depends on 6.1.253) -Problem: Win32: Can't compile with new MingW compiler. - Borland 5 makefile doesn't generate pathdef.c. -Solution: Remove -wwide-multiply argument. (Rene de Zwart) - Various fixes for other problems in Win32 makefiles. (Dan Sharp) -Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak, - src/Make_mvc.mak - -Patch 6.1.293 -Problem: byte2line() returns a wrong result for some values. -Solution: Change ">=" to ">" in ml_find_line_or_offset(). (Bradford C Smith) - Add one to the line number when at the end of a block. -Files: src/memline.c - -Patch 6.1.294 -Problem: Can't include a multi-byte character in a string by its hex value. - (Benji Fisher) -Solution: Add "\u....": a character specified with up to four hex numbers - and stored according to the value of 'encoding'. -Files: src/eval.c - -Patch 6.1.295 (extra) -Problem: Processing the cs.po file generates an error. (Rahul Agrawal) -Solution: Fix the printf format characters in the translation. -Files: src/po/cs.po - -Patch 6.1.296 -Problem: Win32: When cancelling the font dialog 'guifont' remains set to - "*". -Solution: Restore the old value of 'guifont' (Yasuhiro Matsumoto) -Files: src/option.c - -Patch 6.1.297 -Problem: "make test" fails in test6 in an UTF-8 environment. (Benji Fisher) -Solution: Before executing the BufReadPost autocommands save the current - fileencoding, so that the file isn't marked changed. -Files: src/fileio.c - -Patch 6.1.298 -Problem: When using signs and the first line of a closed fold has a sign - it can be redrawn as if the fold was open. (Kamil Burzynski) -Solution: Don't redraw a sign inside a closed fold. -Files: src/screen.c - -Patch 6.1.299 -Problem: ":edit +set\ ro file" doesn't work. -Solution: Halve the number of backslashes in the "+cmd" argument. -Files: src/ex_docmd.c - -Patch 6.1.300 (extra) -Problem: Handling of ETO_IGNORELANGUAGE is confusing. -Solution: Clean up the handling of ETO_IGNORELANGUAGE. (Glenn Maynard) -Files: src/gui_w32.c - -Patch 6.1.301 (extra) -Problem: French translation of file-save dialog doesn't show file name. -Solution: Insert a star in the printf string. (Francois Terrot) -Files: src/po/fr.po - -Patch 6.1.302 -Problem: Counting lines of the Visual area is incorrect for closed folds. - (Mikolaj Machowski) -Solution: Correct the start and end for the closed fold. -Files: src/normal.c - -Patch 6.1.303 (extra) -Problem: The Top/Bottom/All text does not always fit in the ruler when - translated to Japanese. Problem with a character being wider when - in a bold font. -Solution: Use ETO_PDY to specify the width of each character. (Yasuhiro - Matsumoto) -Files: src/gui_w32.c - -Patch 6.1.304 (extra, depends on 6.1.292) -Problem: Win32: Postscript is always enabled in the MingW Makefile. - Pathdef.c isn't generated properly with Make_bc5.mak. (Yasuhiro - Matsumoto) -Solution: Change an ifdef to an ifeq. (Madoka Machitani) - Use the Borland make redirection to generate pathdef.c. (Maurice - Barnum) -Files: src/Make_bc5.mak, src/Make_ming.mak - -Patch 6.1.305 -Problem: When 'verbose' is 14 or higher, a function call may cause reading - uninitialized data. (Walter Briscoe) -Solution: Check for end-of-string in trunc_string(). -Files: src/message.c - -Patch 6.1.306 -Problem: The AIX VisualAge cc compiler doesn't define __STDC__. -Solution: Use __EXTENDED__ like __STDC__. (Jess Thrysoee) -Files: src/os_unix.h - -Patch 6.1.307 -Problem: When a double-byte character has an illegal tail byte the display - is messed up. (Yasuhiro Matsumoto) -Solution: Draw "XX" instead of the wrong character. -Files: src/screen.c - -Patch 6.1.308 -Problem: Can't reset the Visual mode returned by visualmode(). -Solution: Use an optional argument to visualmode(). (Charles Campbell) -Files: runtime/doc/eval.txt, src/eval.c, src/normal.c, - src/structs.h - -Patch 6.1.309 -Problem: The tutor doesn't select German if the locale name is - "German_Germany.1252". (Joachim Hofmann) -Solution: Check for "German" in the locale name. Also check for - ".ge". And include the German and Greek tutors. -Files: runtime/tutor/tutor.de, runtime/tutor/tutor.vim, - runtime/tutor/tutor.gr, runtime/tutor/tutor.gr.cp737 - -Patch 6.1.310 (depends on 6.1.307) -Problem: All double-byte characters are displayed as "XX". -Solution: Use ">= 32" instead of "< 32". (Yasuhiro Matsumoto) -Files: src/screen.c - -Patch 6.1.311 (extra) -Problem: VMS: path in window title doesn't include necessary separator. - file version doesn't always work properly with Unix. - Crashes because of memory overwrite in GUI. - Didn't always handle files with lowercase and correct path. -Solution: Fix the problems. Remove unnecessary file name translations. - (Zoltan Arpadffy) -Files: src/buffer.c, src/ex_cmds2.c, src/fileio.c, src/memline.c, - src/misc1.c, src/misc2.c, src/os_unix.c, src/os_vms.c, src/tag.c - -Patch 6.1.312 -Problem: When using ":silent" debugging is also done silently. -Solution: Disable silence while at the debug prompt. -Files: src/ex_cmds2.c - -Patch 6.1.313 -Problem: When a ":drop fname" command is used and "fname" is open in - another window, it is also opened in the current window. -Solution: Change to the window with "fname" instead. - Don't redefine the argument list when dropping only one file. -Files: runtime/doc/windows.txt, src/ex_cmds2.c, src/ex_cmds.c, - src/ex_docmd.c, src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro - -Patch 6.1.314 (depends on 6.1.126) -Problem: Missing backslash in "Generic Config file" syntax menu. -Solution: Insert the backslash. (Zak Beck) -Files: runtime/makemenu.vim, runtime/synmenu.vim - -Patch 6.1.315 (extra) -Problem: A very long hostname may lead to an unterminated string. Failing - to obtain a hostname may result in garbage. (Walter Briscoe) -Solution: Add a NUL at the end of the hostname buffer. -Files: src/os_mac.c, src/os_msdos.c, src/os_unix.c, src/os_win16.c, - src/os_win32.c - -Patch 6.1.316 -Problem: When exiting with "wq" and there is a hidden buffer, after the - "file changed" dialog there is a warning for a changed buffer. - (Ajit Thakkar) -Solution: Do update the buffer timestamps when exiting. -Files: src/fileio.c - -Patch 6.1.317 -Problem: Closing a window may cause some of the remaining windows to be - positioned wrong if there is a mix of horizontal and vertical - splits. (Stefan Ingi Valdimarsson) -Solution: Update the frame sizes before updating the window positions. -Files: src/window.c - -Patch 6.1.318 -Problem: auto/pathdef.c can include wrong quotes when a compiler flag - includes quotes. -Solution: Put a backslash before the quotes in compiler flags. (Shinra Aida) -Files: src/Makefile - -Patch 6.1.319 (depends on 6.1.276) -Problem: Using "--remote +cmd file" does not execute "cmd". -Solution: Call inputrestore() in the same command line as inputsave(), - otherwise it will never get executed. -Files: src/main.c - -Patch 6.1.320 (depends on 6.1.313) -Problem: When a ":drop one\ file" command is used the file "one\ file" is - opened, the backslash is not removed. (Taro Muraoka) -Solution: Handle backslashes correctly. Always set the argument list to - keep it simple. -Files: runtime/doc/windows.txt, src/ex_cmds.c - -Patch 6.1.321 -Problem: When 'mouse' includes 'n' but not 'v', don't allow starting Visual - mode with the mouse. -Solution: Don't use MOUSE_MAY_VIS when there is no 'v' in 'mouse'. (Flemming - Madsen) -Files: src/normal.c - -Patch 6.1.322 (extra, depends on 6.1.315) -Problem: Win32: The host name is always "PC " plus the real host name. -Solution: Don't insert "PC " before the host name. -Files: src/os_win32.c - -Patch 6.1.323 -Problem: ":registers" doesn't stop listing for a "q" at the more prompt. - (Hari Krishna Dara) -Solution: Check for interrupt and got_int. -Files: src/ops.c, src/proto/ops.pro - -Patch 6.1.324 -Problem: Crash when dragging a vertical separator when <LeftMouse> is - remapped to jump to another window. -Solution: Pass the window pointer to the function doing the dragging instead - of always using the current window. (Daniel Elstner) - Also fix that starting a drag changes window focus. -Files: src/normal.c, src/proto/window.pro, src/ui.c, src/vim.h, - src/window.c - -Patch 6.1.325 -Problem: Shift-Tab is not automatically recognized in an xterm. -Solution: Add <Esc>[Z as the termcap code. (Andrew Pimlott) -Files: src/term.c - -Patch 6.1.326 -Problem: Using a search pattern may read from uninitialized data (Yasuhiro - Matsumoto) -Solution: Initialize pointers to NULL. -Files: src/regexp.c - -Patch 6.1.327 -Problem: When opening the "mbyte.txt" help file the utf-8 characters are - unreadable, because the fileencoding is forced to be latin1. -Solution: Check for utf-8 encoding first in help files. (Daniel Elstner) -Files: runtime/doc/mbyte.txt, src/fileio.c - -Patch 6.1.328 -Problem: Prototype for enc_canon_search() is missing. -Solution: Add the prototype. (Walter Briscoe) -Files: src/mbyte.c - -Patch 6.1.329 -Problem: When editing a file "a b c" replacing "%" in ":Cmd %" or ":next %" - does not work properly. (Hari Krishna Dara) -Solution: Always escape spaces when expanding "%". Don't split argument for - <f-args> in a user command when only one argument is used. -Files: src/ex_docmd.c - -Patch 6.1.330 -Problem: GTK, Motif and Athena: Keypad keys produce the same code as - non-keypad keys, making it impossible to map them separately. -Solution: Use different termcap codes for the keypad keys. (Neil Bird) -Files: src/gui_gtk_x11.c, src/gui_x11.c - -Patch 6.1.331 -Problem: When translating the help files, "LOCAL ADDITIONS" no longer marks - the spot where help files from plugins are to be listed. -Solution: Add a "local-additions" tag and use that to find the right spot. -Files: runtime/doc/help.txt, src/ex_cmds.c - -Patch 6.1.332 (extra) -Problem: Win32: Loading Perl dynamically doesn't work with Perl 5.8. - Perl 5.8 also does not work with Cygwin and Ming. -Solution: Adjust the function calls. (Taro Muraoka) - Adjust the cyg and ming makefiles. (Dan Sharp) -Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, - src/if_perl.xs - -Patch 6.1.333 (extra) -Problem: Win32: Can't handle Unicode text on the clipboard. - Can't pass NUL byte, it becomes a line break. (Bruce DeVisser) -Solution: Support Unicode for the clipboard (Ron Aaron and Glenn Maynard) - Also support copy/paste of NUL bytes. -Files: src/os_mswin.c, src/os_win16.c src/os_win32.c - -Patch 6.1.334 (extra, depends on 6.1.303) -Problem: Problem with drawing Hebrew characters. -Solution: Only use ETO_PDY for Windows NT and the like. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 6.1.335 (extra) -Problem: Failure of obtaining the cursor position and window size is - ignored. -Solution: Remove a semicolon after an "if". (Walter Briscoe) -Files: src/gui_w32.c - -Patch 6.1.336 (extra) -Problem: Warning for use of function prototypes of smsg(). -Solution: Define HAVE_STDARG_H. (Walter Briscoe) -Files: src/os_win32.h - -Patch 6.1.337 -Problem: When using "finish" in debug mode in function B() for ":call - A(B())" does not stop after B() is finished. -Solution: Increase debug_level while evaluating a function. -Files: src/ex_docmd.c - -Patch 6.1.338 -Problem: When using a menu that checks out the current file from Insert - mode, there is no warning for the changed file until exiting - Insert mode. (Srikanth Sankaran) -Solution: Add a check for need_check_timestamps in the Insert mode loop. -Files: src/edit.c - -Patch 6.1.339 -Problem: Completion doesn't allow "g:" in ":let g:did_<Tab>". (Benji - Fisher) -Solution: Return "g:var" for global variables when that is what is being - expanded. (Flemming Madsen) -Files: src/eval.c - -Patch 6.1.340 (extra, depends on 6.1.332) -Problem: Win32: Can't compile the Perl interface with nmake. -Solution: Don't compare the version number as a string but as a number. - (Juergen Kraemer) -Files: src/Make_mvc.mak - -Patch 6.1.341 -Problem: In Insert mode with 'rightleft' set the cursor is drawn halfway a - double-wide character. For CTRL-R and CTRL-K in Insert mode the " - or ? is not displayed. -Solution: Draw the cursor in the next character cell. Display the " or ? - over the right half of the double-wide character. (Yasuhiro - Matsumoto) Also fix that cancelling a digraph doesn't redraw - a double-byte character correctly. -Files: src/edit.c, src/gui.c, src/mbyte.c - -Patch 6.1.342 (depends on 6.1.341) -Problem: With 'rightleft' set typing "c" on a double-wide character causes - the cursor to be displayed one cell to the left. -Solution: Draw the cursor in the next character cell. (Yasuhiro Matsumoto) -Files: src/gui.c - -Patch 6.1.343 (depends on 6.1.342) -Problem: Cannot compile with the +multi_byte feature but without +rightleft. - Cannot compile without the GUI. -Solution: Fix the #ifdefs. (partly by Nam SungHyun) -Files: src/gui.c, src/mbyte.c, src/ui.c - -Patch 6.1.344 -Problem: When using ":silent filetype" the output is still put in the - message history. (Hari Krishna Dara) -Solution: Don't add messages in the history when ":silent" is used. -Files: src/message.c - -Patch 6.1.345 (extra) -Problem: Win32: 'imdisable' doesn't work. -Solution: Make 'imdisable' work. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 6.1.346 -Problem: The scroll wheel can only scroll the current window. -Solution: Make the scroll wheel scroll the window that the mouse points to. - (Daniel Elstner) -Files: src/edit.c, src/gui.c, src/normal.c, src/term.c - -Patch 6.1.347 -Problem: When using cscope to list matching tags, the listed number is - sometimes not equal to what cscope uses. (Vihren Milev) -Solution: For cscope tags use only one table, don't give tags in the current - file a higher priority. -Files: src/tag.c - -Patch 6.1.348 -Problem: Wildmode with wildmenu: ":set wildmode=list,full", ":colorscheme - <tab>" results in "zellner" instead of the first entry. (Anand - Hariharan) -Solution: Don't call ExpandOne() from globpath(). (Flemming Madsen) -Files: src/ex_getln.c - -Patch 6.1.349 -Problem: "vim --serverlist" when no server was ever started gives an error - message without "\n". - "vim --serverlist" doesn't exit when the X server can't be - contacted, it starts Vim unexpectedly. (Ricardo Signes) -Solution: Don't give an error when no Vim server was ever started. - Treat failing of opening the display equal to errors inside the - remote*() functions. (Flemming Madsen) -Files: src/if_xcmdsrv.c, src/main.c - -Patch 6.1.350 -Problem: When entering a buffer with ":bnext" for the first time, using an - autocommand to restore the last used cursor position doesn't work. - (Paolo Giarusso) -Solution: Don't use the last known cursor position of the current Vim - invocation if an autocommand changed the position. -Files: src/buffer.c - -Patch 6.1.351 (depends on 6.1.349) -Problem: Crash when starting Vim the first time in an X server. (John - McGowan) -Solution: Don't call xFree() with a fixed string. -Files: src/if_xcmdsrv.c - -Patch 6.1.352 (extra, depends on 6.1.345) -Problem: Win32: Crash when setting "imdisable" in _vimrc. -Solution: Don't call IME functions when imm32.dll was not loaded (yet). - Also add typecasts to avoid Compiler warnings for - ImmAssociateContext() argument. -Files: src/gui_w32.c - -Patch 6.1.353 (extra, depends on 6.1.334) -Problem: Problem with drawing Arabic characters. -Solution: Don't use ETO_PDY, do use padding. -Files: src/gui_w32.c - -Patch 6.1.354 (extra, depends on 6.1.333) -Problem: MS-Windows 98: Notepad can't paste text copied from Vim when - 'encoding' is "utf-8". -Solution: Also make CF_TEXT available on the clipboard. (Ron Aaron) -Files: src/os_mswin.c - -Patch 6.1.355 -Problem: In a regexp '\n' will never match anything in a string. -Solution: Make '\n' match a newline character. -Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/misc1.c, - src/option.c, src/os_mac.c, src/os_unix.c, src/quickfix.c, - src/regexp.c, src/search.c, src/syntax.c, src/tag.c, src/vim.h - -Patch 6.1.356 (extra, depends on, well, eh, several others) -Problem: Compiler warnings for using convert_setup() and a few other - things. -Solution: Add typecasts. -Files: src/mbyte.c, src/os_mswin.c, src/proto/os_win32.pro, src/os_win32.c - -Patch 6.1.357 -Problem: CR in the quickfix window jumps to the error under the cursor, but - this doesn't work in Insert mode. (Srikanth Sankaran) -Solution: Handle CR in Insert mode in the quickfix window. -Files: src/edit.c - -Patch 6.1.358 -Problem: The tutor doesn't select another locale version properly. -Solution: Insert the "let" command. (Yasuhiro Matsumoto) -Files: runtime/tutor/tutor.vim - -Patch 6.1.359 (extra) -Problem: Mac Carbon: Vim doesn't get focus when started from the command - line. Crash when using horizontal scroll bar. -Solution: Set Vim as the frontprocess. Fix scrolling. (Peter Cucka) -Files: src/gui_mac.c - -Patch 6.1.360 (depends on 6.1.341) -Problem: In Insert mode CTRL-K ESC messes up a multi-byte character. - (Anders Helmersson) -Solution: Save all bytes of a character when displaying a character - temporarily. -Files: src/edit.c, src/proto/screen.pro, src/screen.c - -Patch 6.1.361 -Problem: Cannot jump to a file mark with ":'M". -Solution: Allow jumping to another file for a mark in an Ex address when it - is the only thing in the command line. -Files: src/ex_docmd.c - -Patch 6.1.362 -Problem: tgetent() may return zero for success. tgetflag() may return -1 - for an error. -Solution: Check tgetflag() for returning a positive value. Add an autoconf - check for the value that tgetent() returns. -Files: src/auto/configure, src/config.h.in, src/configure.in, src/term.c - -Patch 6.1.363 -Problem: byte2line() can return one more than the number of lines. -Solution: Return -1 if the offset is one byte past the end. -Files: src/memline.c - -Patch 6.1.364 -Problem: That the FileChangedShell autocommand event never nests makes it - difficult to reload a file in a normal way. -Solution: Allow nesting for the FileChangedShell event but do not allow - triggering itself again. - Also avoid autocommands for the cmdline window in rare cases. -Files: src/ex_getln.c, src/fileio.c, src/window.c - -Patch 6.1.365 (depends on 6.1.217) -Problem: Setting a breakpoint in a sourced file with a relative path name - doesn't work. (Servatius Brandt) -Solution: Expand the file name to a full path. -Files: src/ex_cmds2.c - -Patch 6.1.366 -Problem: Can't use Vim with Netbeans. -Solution: Add the Netbeans interface. Includes support for sign icons and - "-fg" and "-bg" arguments for GTK. Add the 'autochdir' - option. (Gordon Prieur, George Hernandez, Dave Weatherford) - Make it possible to display both a sign with a text and one with - line highlighting in the same line. - Add support for Agide, interface version 2.1. - Also fix that when 'iskeyword' includes '?' the "*" command - doesn't work properly on a word that includes "?" (Bill McCarthy): - Don't escape "?" to "\?" when searching forward. -Files: runtime/doc/Makefile, runtime/doc/netbeans.txt, - runtime/doc/options.txt, runtime/doc/various.txt, - src/Makefile, src/auto/configure, src/buffer.c, src/config.h.in, - src/config.mk.in, src/configure.in, src/edit.c, src/ex_cmds.c, - src/ex_docmd.c, src/feature.h, src/fileio.c, src/globals.h, - src/gui.c, src/gui_beval.c, src/gui_gtk_x11.c, src/gui_x11.c, - src/main.c, src/memline.c, src/misc1.c, src/misc2.c, src/move.c, - src/nbdebug.c, src/nbdebug.h, src/netbeans.c, src/normal.c, - src/ops.c, src/option.c, src/option.h, src/proto/buffer.pro, - src/proto/gui_beval.pro, src/proto/gui_gtk_x11.pro, - src/proto/gui_x11.pro, src/proto/misc2.pro, - src/proto/netbeans.pro, src/proto/normal.pro, src/proto/ui.pro, - src/proto.h, src/screen.c, src/structs.h, src/ui.c, src/undo.c, - src/vim.h, src/window.c, src/workshop.c - -Patch 6.1.367 (depends on 6.1.365) -Problem: Setting a breakpoint in a function doesn't work. For a sourced - file it doesn't work when symbolic links are involved. (Servatius - Brandt) -Solution: Expand the file name in the same way as do_source() does. Don't - prepend the path to a function name. -Files: src/ex_cmds2.c - -Patch 6.1.368 -Problem: Completion for ":map" does not include <silent> and <script>. - ":mkexrc" do not save the <silent> attribute of mappings. -Solution: Add "<silent>" to the generated map commands when appropriate. - (David Elstner) - Add <silent> and <script> to command line completion. -Files: src/getchar.c - -Patch 6.1.369 (extra) -Problem: VMS: Vim hangs when attempting to edit a read-only file in the - terminal. Problem with VMS filenames for quickfix. -Solution: Rewrite low level input. Remove version number from file name in - a couple more places. Fix crash after patch 6.1.362. Correct - return code for system(). (Zoltan Arpadffy, Tomas Stehlik) -Files: src/misc1.c, src/os_unix.c, src/os_vms.c, src/proto/os_vms.pro, - src/os_vms_conf.h, src/quickfix.c, src/ui.c - -Patch 6.1.370 -Problem: #ifdef nesting is unclear. -Solution: Insert spaces to indicate the nesting. -Files: src/os_unix.c - -Patch 6.1.371 -Problem: "%V" in 'statusline' doesn't show "0-1" in an empty line. -Solution: Add one to the column when comparing with virtual column (Andrew - Pimlott) -Files: src/buffer.c - -Patch 6.1.372 -Problem: With 16 bit ints there are compiler warnings. (Walter Briscoe) -Solution: Change int into long. -Files: src/structs.h, src/syntax.c - -Patch 6.1.373 -Problem: The default page header for printing is not translated. -Solution: Add _() around the two places where "Page" is used. (Mike - Williams) Translate the default value of the 'titleold' and - 'printheader' options. -Files: src/ex_cmds2.c, src/option.c - -Patch 6.1.374 (extra) -Problem: MS-Windows: Cannot build GvimExt with MingW or Cygwin. -Solution: Add makefile and modified resource files. (Rene de Zwart) - Also support Cygwin. (Alejandro Lopez_Valencia) -Files: GvimExt/Make_cyg.mak, GvimExt/Make_ming.mak, GvimExt/Makefile, - GvimExt/gvimext_ming.def, GvimExt/gvimext_ming.rc - -Patch 6.1.375 -Problem: MS-Windows: ':!dir "%"' does not work for a file name with spaces. - (Xiangjiang Ma) -Solution: Don't insert backslashes for spaces in a shell command. -Files: src/ex_docmd.c - -Patch 6.1.376 -Problem: "vim --version" and "vim --help" have a non-zero exit code. - That is unusual. (Petesea) -Solution: Use a zero exit code. -Files: src/main.c - -Patch 6.1.377 -Problem: Can't add words to 'lispwords' option. -Solution: Add P_COMMA and P_NODUP flags. (Haakon Riiser) -Files: src/option.c - -Patch 6.1.378 -Problem: When two buffer-local user commands are ambiguous, a full match - with a global user command isn't found. (Hari Krishna Dara) -Solution: Detect this situation and accept the global command. -Files: src/ex_docmd.c - -Patch 6.1.379 -Problem: Linux with kernel 2.2 can't use the alternate stack in combination - with threading, causes an infinite loop. -Solution: Don't use the alternate stack in this situation. -Files: src/os_unix.c - -Patch 6.1.380 -Problem: When 'winminheight' is zero and the quickfix window is zero lines, - entering the window doesn't make it higher. (Christian J. - Robinson) -Solution: Make sure the current window is at least one line high. -Files: src/window.c - -Patch 6.1.381 -Problem: When a BufWriteCmd is used and it leaves the buffer modified, the - window may still be closed. (Hari Krishna Dara) -Solution: Return FAIL from buf_write() when the buffer is still modified - after a BufWriteCmd autocommand was used. -Files: src/fileio.c - -Patch 6.1.382 (extra) -Problem: Win32 GUI: When using two monitors, the code that checks/fixes the - window size and position (e.g. when a font changes) doesn't work - properly. (George Reilly) -Solution: Handle a double monitor situation. (Helmut Stiegler) -Files: src/gui_w32.c - -Patch 6.1.383 -Problem: The filling of the status line doesn't work properly for - multi-byte characters. (Nam SungHyun) - There is no check for going past the end of the buffer. -Solution: Properly distinguish characters and bytes. Properly check for - running out of buffer space. -Files: src/buffer.c, src/ex_cmds2.c, src/proto/buffer.pro, src/screen.c - -Patch 6.1.384 -Problem: It is not possible to find if a certain patch has been included. - (Lubomir Host) -Solution: Support using has() to check if a patch was included. -Files: runtime/doc/eval.txt, src/eval.c, src/proto/version.pro, - src/version.c - -Patch 6.1.385 (depends on 6.1.383) -Problem: Can't compile without the multi-byte feature. -Solution: Move an #ifdef. (Christian J. Robinson) -Files: src/buffer.c - -Patch 6.1.386 -Problem: Get duplicate tags when running ":helptags". -Solution: Do the other halve of moving a section to another help file. -Files: runtime/tagsrch.txt - -Patch 6.1.387 (depends on 6.1.373) -Problem: Compiler warning for pointer cast. -Solution: Add (char_u *). -Files: src/option.c - -Patch 6.1.388 (depends on 6.1.384) -Problem: Compiler warning for pointer cast. -Solution: Add (char *). Only include has_patch() when used. -Files: src/eval.c, src/version.c - -Patch 6.1.389 (depends on 6.1.366) -Problem: Balloon evaluation doesn't work for GTK. - has("balloon_eval") doesn't work. -Solution: Add balloon evaluation for GTK. Also improve displaying of signs. - (Daniel Elstner) - Also make ":gui" start the netbeans connection and avoid using - netbeans functions when the connection is not open. -Files: src/Makefile, src/feature.h, src/gui.c, src/gui.h, - src/gui_beval.c, src/gui_beval.h, src/gui_gtk.c, - src/gui_gtk_x11.c, src/eval.c, src/memline.c, src/menu.c, - src/netbeans.c, src/proto/gui_beval.pro, src/proto/gui_gtk.pro, - src/structs.h, src/syntax.c, src/ui.c, src/workshop.c - -Patch 6.1.390 (depends on 6.1.389) -Problem: It's not possible to tell Vim to save and exit through the - Netbeans interface. Would still try to send balloon eval text - after the connection is closed. - Can't use Unicode characters for sign text. -Solution: Add functions "saveAndExit" and "getModified". Check for a - working connection before sending a balloonText event. - various other cleanups. - Support any character for sign text. (Daniel Elstner) -Files: runtime/doc/netbeans.txt, runtime/doc/sign.txt, src/ex_cmds.c, - src/netbeans.c, src/screen.c - -Patch 6.1.391 -Problem: ml_get() error when using virtualedit. (Charles Campbell) -Solution: Get a line from a specific window, not the current one. -Files: src/charset.c - -Patch 6.1.392 (depends on 6.1.383) -Problem: Highlighting in the 'statusline' is in the wrong position when an - item is truncated. (Zak Beck) -Solution: Correct the start of 'statusline' items properly for a truncated - item. -Files: src/buffer.c - -Patch 6.1.393 -Problem: When compiled with Python and threads, detaching the terminal may - cause Vim to loop forever. -Solution: Add -pthread to $CFLAGS when using Python and gcc. (Daniel - Elstner) -Files: src/auto/configure,, src/configure.in - -Patch 6.1.394 (depends on 6.1.390) -Problem: The netbeans interface doesn't recognize multibyte glyph names. -Solution: Check the number of cells rather than bytes to decide - whether a glyph name is not a filename. (Daniel Elstner) -Files: src/netbeans.c - -Patch 6.1.395 (extra, depends on 6.1.369) -Problem: VMS: OLD_VMS is never defined. Missing function prototype. -Solution: Define OLD_VMS in Make_vms.mms. Add vms_sys_status() to - os_vms.pro. (Zoltan Arpadffy) -Files: src/Make_vms.mms, src/proto/os_vms.pro - -Patch 6.1.396 (depends on 6.1.330) -Problem: Compiler warnings for using enum. -Solution: Add typecast to char_u. -Files: src/gui_gtk_x11.c, src/gui_x11.c - -Patch 6.1.397 (extra) -Problem: The install program may use a wrong path for the diff command if - there is a space in the install directory path. -Solution: Use double quotes around the path if necessary. (Alejandro - Lopez-Valencia) Also use double quotes around the file name - arguments. -Files: src/dosinst.c - -Patch 6.1.398 -Problem: Saving the typeahead for debug mode causes trouble for a test - script. (Servatius Brandt) -Solution: Add the ":debuggreedy" command to avoid saving the typeahead. -Files: runtime/doc/repeat.txt, src/ex_cmds.h, src/ex_cmds2.c, - src/ex_docmd.c, src/proto/ex_cmds2.pro - -Patch 6.1.399 -Problem: Warning for unused variable. -Solution: Remove the variable two_or_more. -Files: src/ex_cmds.c - -Patch 6.1.400 (depends on 6.1.381) -Problem: When a BufWriteCmd wipes out the buffer it may still be accessed. -Solution: Don't try accessing a buffer that has been wiped out. -Files: src/fileio.c - -Patch 6.1.401 (extra) -Problem: Building the Win16 version with Borland 5.01 doesn't work. - "make test" doesn't work with Make_dos.mak. (Walter Briscoe) -Solution: Various fixes to the w16 makefile. (Walter Briscoe) - Don't use deltree. Use "mkdir \tmp" instead of "mkdir /tmp". -Files: src/Make_w16.mak, src/testdir/Make_dos.mak - -Patch 6.1.402 -Problem: When evaluating a function name with curly braces, an error - is not handled consistently. -Solution: Accept the result of an curly braces expression when an - error was encountered. Skip evaluating an expression in curly - braces when skipping. (Servatius Brandt) -Files: src/eval.c - -Patch 6.1.403 (extra) -Problem: MS-Windows 16 bit: compiler warnings. -Solution: Add typecasts. (Walter Briscoe) -Files: src/ex_cmds2.c, src/gui_w48.c, src/os_mswin.c, src/os_win16.c, - src/syntax.c - -Patch 6.1.404 (extra) -Problem: Various small problems. -Solution: Fix comments. Various small additions, changes in indent, removal - of unused items and fixes. -Files: Makefile, README.txt, runtime/menu.vim, runtime/vimrc_example.vim, - src/INSTALL, src/INSTALLole.txt, src/Make_bc5.mak, - src/Make_cyg.mak, src/Make_ming.mak, src/Makefile, - src/config.h.in, src/edit.c, src/eval.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/getchar.c, - src/gui.c, src/gui_gtk.c, src/gui_photon.c, src/if_cscope.c, - src/if_python.c, src/keymap.h, src/mark.c, src/mbyte.c, - src/message.c, src/misc1.c, src/misc2.c, src/normal.c, - src/option.c, src/os_os2_cfg.h, src/os_win32.c, - src/proto/getchar.pro, src/proto/message.pro, - src/proto/regexp.pro, src/screen.c, src/structs.h, src/syntax.c, - src/term.c, src/testdir/test15.in, src/testdir/test15.ok, - src/vim.rc, src/xxd/Make_cyg.mak, src/xxd/Makefile - -Patch 6.1.405 -Problem: A few files are missing from the toplevel Makefile. -Solution: Add the missing files. -Files: Makefile - -Patch 6.1.406 (depends on 6.1.392) -Problem: When a statusline item doesn't fit arbitrary text appears. - (Christian J. Robinson) -Solution: When there is just enough room but not for the "<" truncate the - statusline item like there is no room. -Files: src/buffer.c - -Patch 6.1.407 -Problem: ":set scrollbind | help" scrollbinds the help window. (Andrew - Pimlott) -Solution: Reset 'scrollbind' when opening a help window. -Files: src/ex_cmds.c - -Patch 6.1.408 -Problem: When 'rightleft' is set unprintable character 0x0c is displayed as - ">c0<". -Solution: Reverse the text of the hex character. -Files: src/screen.c - -Patch 6.1.409 -Problem: Generating tags for the help doesn't work for some locales. -Solution: Set LANG=C LC_ALL=C in the environment for "sort". (Daniel - Elstner) -Files: runtime/doc/Makefile - -Patch 6.1.410 (depends on 6.1.390) -Problem: Linking error when compiling with Netbeans but without sign icons. - (Malte Neumann) -Solution: Don't define buf_signcount() when sign icons are unavailable. -Files: src/buffer.c - -Patch 6.1.411 -Problem: When 'virtualedit' is set, highlighting a Visual block beyond the - end of a line may be wrong. -Solution: Correct the virtual column when the end of the line is before the - displayed part of the line. (Muraoka Taro) -Files: src/screen.c - -Patch 6.1.412 -Problem: When swapping terminal screens and using ":gui" to start the GUI, - the shell prompt may be after a hit-enter prompt. -Solution: Output a newline in the terminal when starting the GUI and there - was a hit-enter prompt.. -Files: src/gui.c - -Patch 6.1.413 -Problem: When 'clipboard' contains "unnamed", "p" in Visual mode doesn't - work correctly. -Solution: Save the register before overwriting it and put the resulting text - on the clipboard afterwards. (Muraoka Taro) -Files: src/normal.c, src/ops.c - -Patch 6.1.414 (extra, depends on 6.1.369) -Problem: VMS: Vim busy waits when waiting for input. -Solution: Delay for a short while before getting another character. (Zoltan - Arpadffy) -Files: src/os_vms.c - -Patch 6.1.415 -Problem: When there is a vertical split and a quickfix window, reducing the - size of the Vim window may result in a wrong window layout and a - crash. -Solution: When reducing the window size and there is not enough space for - 'winfixheight' set the frame height to the larger height, so that - there is a retry while ignoring 'winfixheight'. (Yasuhiro - Matsumoto) -Files: src/window.c - -Patch 6.1.416 (depends on 6.1.366) -Problem: When using the Netbeans interface, a line with a sign cannot be - changed. -Solution: Respect the GUARDEDOFFSET for sign IDs when checking for a guarded - area. -Files: src/netbeans.c - -Patch 6.1.417 -Problem: Unprintable multi-byte characters are not handled correctly. - Multi-byte characters above 0xffff are displayed as another - character. -Solution: Handle unprintable multi-byte characters. Display multi-byte - characters above 0xffff with a marker. Recognize UTF-16 words and - BOM words as unprintable. (Daniel Elstner) -Files: src/charset.c, src/mbyte.c, src/screen.c - -Patch 6.1.418 -Problem: The result of strftime() is in the current locals. Need to - convert it to 'encoding'. -Solution: Obtain the current locale and convert the argument for strftime() - to it and the result back to 'encoding'. (Daniel Elstner) -Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/mbyte.c, - src/proto/mbyte.pro, src/option.c, src/os_mswin.c - -Patch 6.1.419 -Problem: Vim doesn't compile on AIX 5.1. -Solution: Don't define _NO_PROTO on this system. (Uribarri) -Files: src/auto/configure, src/configure.in - -Patch 6.1.420 (extra) -Problem: convert_input() has an unnecessary STRLEN(). - Conversion from UCS-2 to a codepage uses word count instead of - byte count. -Solution: Remove the STRLEN() call. (Daniel Elstner) - Always use byte count for string_convert(). -Files: src/gui_w32.c, src/mbyte.c - -Patch 6.1.421 (extra, depends on 6.1.354) -Problem: MS-Windows 9x: When putting text on the clipboard it can be in - the wrong encoding. -Solution: Convert text to the active codepage for CF_TEXT. (Glenn Maynard) -Files: src/os_mswin.c - -Patch 6.1.422 -Problem: Error in .vimrc doesn't cause hit-enter prompt when swapping - screens. (Neil Bird) -Solution: Set msg_didany also when sending a message to the terminal - directly. -Files: src/message.c - -Patch 6.1.423 -Problem: Can't find arbitrary text in help files. -Solution: Added the ":helpgrep" command. -Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, - src/proto/quickfix.pro, src/quickfix.c - -Patch 6.1.424 (extra) -Problem: Win32: Gvim compiled with VC++ 7.0 run on Windows 95 does not show - menu items. -Solution: Define $WINVER to avoid an extra item is added to MENUITEMINFO. - (Muraoka Taro) -Files: src/Make_mvc.mak - -Patch 6.1.425 -Problem: ":helptags $VIMRUNTIME/doc" does not add the "help-tags" tag. -Solution: Do add the "help-tags" tag for that specific directory. -Files: src/ex_cmds.c - -Patch 6.1.426 -Problem: "--remote-wait +cmd file" waits forever. (Valery Kondakoff) -Solution: Don't wait for the "+cmd" argument to have been edited. -Files: src/main.c - -Patch 6.1.427 -Problem: Several error messages for regexp patterns are not translated. -Solution: Use _() properly. (Muraoka Taro) -Files: src/regexp.c - -Patch 6.1.428 -Problem: FreeBSD: wait() may hang when compiled with Python support and - doing a system() call in a startup script. -Solution: Use waitpid() instead of wait() and poll every 10 msec, just like - what is done in the GUI. -Files: src/os_unix.c - -Patch 6.1.429 (depends on 6.1.390) -Problem: Crash when using showmarks.vim plugin. (Charles Campbell) -Solution: Check for sign_get_text() returning a NULL pointer. -Files: src/screen.c - -Patch 6.1.430 -Problem: In Lisp code backslashed parens should be ignored for "%". (Dorai) -Solution: Skip over backslashed parens. -Files: src/search.c - -Patch 6.1.431 -Problem: Debug commands end up in redirected text. -Solution: Disable redirection while handling debug commands. -Files: src/ex_cmds2.c - -Patch 6.1.432 (depends on 6.1.375) -Problem: MS-Windows: ":make %:p" inserts extra backslashes. (David Rennalls) -Solution: Don't add backslashes, handle it like ":!cmd". -Files: src/ex_docmd.c - -Patch 6.1.433 -Problem: ":popup" only works for Win32. -Solution: Add ":popup" support for GTK. (Daniel Elstner) -Files: runtime/doc/gui.txt, src/ex_docmd.c, src/gui_gtk.c, src/menu.c, - src/proto/gui_gtk.pro - -Patch 6.1.434 (extra) -Problem: Win32: When there are more than 32767 lines, the scrollbar has a - roundoff error. -Solution: Make a click on an arrow move one line. Also move the code to - gui_w48.c, there is hardly any difference between the 16 bit and - 32 bit versions. (Walter Briscoe) -Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c - -Patch 6.1.435 -Problem: ":winsize x" resizes the Vim window to the minimal size. (Andrew - Pimlott) -Solution: Give an error message for wrong arguments of ":winsize" and - ":winpos". -Files: src/ex_docmd.c - -Patch 6.1.436 -Problem: When a long UTF-8 file contains an illegal byte it's hard to find - out where it is. (Ron Aaron) -Solution: Add the line number to the error message. -Files: src/fileio.c - -Patch 6.1.437 (extra, depends on 6.1.421) -Problem: Using multi-byte functions when they are not available. -Solution: Put the clipboard conversion inside an #ifdef. (Vince Negri) - Also fix a pointer type mistake. (Walter Briscoe) -Files: src/os_mswin.c - -Patch 6.1.438 -Problem: When Perl has thread support Vim cannot use the Perl interface. -Solution: Add a configure check and disable Perl when it will not work. - (Aron Griffis) -Files: src/auto/configure, src/configure.in - -Patch 6.1.439 -Problem: Netbeans: A "create" function doesn't actually create a buffer, - following functions may fail. -Solution: Create a Vim buffer without a name when "create" is called. - (Gordon Prieur) -Files: runtime/doc/netbeans.txt, src/netbeans.c - -Patch 6.1.440 -Problem: The "@*" command doesn't obtain the actual contents of the - clipboard. (Hari Krishna Dara) -Solution: Obtain the clipboard text before executing the command. -Files: src/ops.c - -Patch 6.1.441 -Problem: "zj" and "zk" cannot be used as a motion command after an - operator. (Ralf Hetzel) -Solution: Accept these commands as motion commands. -Files: src/normal.c - -Patch 6.1.442 -Problem: Unicode 3.2 defines more space and punctuation characters. -Solution: Add the new characters to the Unicode tables. (Raphael Finkel) -Files: src/mbyte.c - -Patch 6.1.443 (extra) -Problem: Win32: The gvimext.dll build with Borland 5.5 requires another - DLL. -Solution: Build a statically linked version by default. (Dan Sharp) -Files: GvimExt/Make_bc5.mak - -Patch 6.1.444 (extra) -Problem: Win32: Enabling a build with gettext support is not consistent. -Solution: Use "GETTEXT" for Borland and msvc makefiles. (Dan Sharp) -Files: src/Make_bc5.mak, src/Make_mvc.mak - -Patch 6.1.445 (extra) -Problem: DJGPP: get warning for argument of putenv() -Solution: Define HAVE_PUTENV to use DJGPP's putenv(). (Walter Briscoe) -Files: src/os_msdos.h - -Patch 6.1.446 (extra) -Problem: Win32: The MingW makefile uses a different style of arguments than - other makefiles. - Dynamic IME is not supported for Cygwin. -Solution: Use "no" and "yes" style arguments. Remove the use of the - dyn-ming.h include file. (Dan Sharp) - Do not include the ime.h file and adjust the makefile. (Alejandro - Lopez-Valencia) -Files: src/Make_cyg.mak, src/Make_ming.mak, src/gui_w32.c, - src/if_perl.xs, src/if_python.c, src/if_ruby.c, src/os_win32.c - -Patch 6.1.447 -Problem: "make install" uses "make" directly for generating help tags. -Solution: Use $(MAKE) instead of "make". (Tim Mooney) -Files: src/Makefile - -Patch 6.1.448 -Problem: 'titlestring' has a default maximum width of 50 chars per item. -Solution: Remove the default maximum (also for 'statusline'). -Files: src/buffer.c - -Patch 6.1.449 -Problem: When "1" and "a" are in 'formatoptions', auto-formatting always - moves a newly added character to the next line. (Servatius Brandt) -Solution: Don't move a single character to the next line when it was just - typed. -Files: src/edit.c - -Patch 6.1.450 -Problem: Termcap entry "kB" for back-tab is not recognized. -Solution: Use back-tab as the shift-tab code. -Files: src/keymap.h, src/misc2.c, src/term.c - -Patch 6.1.451 -Problem: GUI: When text in the find dialog contains a slash, a backslash is - inserted the next time it is opened. (Mezz) -Solution: Remove escaped backslashes and question marks. (Daniel Elstner) -Files: src/gui.c - -Patch 6.1.452 (extra, after 6.1.446) -Problem: Win32: IME support doesn't work for MSVC. -Solution: Use _MSC_VER instead of __MSVC. (Alejandro Lopez-Valencia) -Files: src/gui_w32.c - -Patch 6.1.453 (after 6.1.429) -Problem: When compiled without sign icons but with sign support, adding a - sign may cause a crash. -Solution: Check for the text sign to exist before using it. (Kamil - Burzynski) -Files: src/screen.c - -Patch 6.1.454 (extra) -Problem: Win32: pasting Russian text in Vim with 'enc' set to cp1251 - results in utf-8 bytes. (Perelyubskiy) - Conversion from DBCS to UCS2 does not work when 'encoding' is not - the active codepage. -Solution: Introduce enc_codepage and use it for conversion to 'encoding' - (Glenn Maynard) - Use MultiByteToWideChar() and WideCharToMultiByte() instead of - iconv(). Should do most needed conversions without iconv.dll. -Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/os_mswin.c, - src/proto/mbyte.pro, src/proto/os_mswin.pro, src/structs.h - -Patch 6.1.455 -Problem: Some Unicode characters can be one or two character cells wide. -Solution: Add the 'ambiwidth' option to tell Vim how to display these - characters. (Jungshik Shin) - Also reset the script ID when setting an option to its default - value, so that ":verbose set" won't give wrong info. -Files: runtime/doc/options.txt, src/mbyte.c, src/option.c, src/option.h - -Patch 6.1.456 (extra, after 6.1.454) -Problem: Win32: IME doesn't work. -Solution: ImmGetCompositionStringW() returns the size in bytes, not words. - (Yasuhiro Matsumoto) Also fix typecast problem. -Files: src/gui_w32.c, src/os_mswin.c - -Patch 6.1.457 -Problem: An empty register in viminfo causes conversion to fail. -Solution: Don't convert an empty string. (Yasuhiro Matsumoto) -Files: src/ex_cmds.c, src/mbyte.c - -Patch 6.1.458 -Problem: Compiler warning for pointer. -Solution: Add a typecast. -Files: src/ex_cmds.c - -Patch 6.1.459 (extra) -Problem: Win32: libcall() may return an invalid pointer and cause Vim to - crash. -Solution: Add a strict check for the returned pointer. (Bruce Mellows) -Files: src/os_mswin.c - -Patch 6.1.460 -Problem: GTK: after scrolling the text one line with a key, clicking the - arrow of the scrollbar does not always work. (Nam SungHyun) -Solution: Always update the scrollbar thumb when the value changed, even - when it would not move, like for RISCOS. (Daniel Elstner) -Files: src/gui.c, src/gui.h - -Patch 6.1.461 -Problem: When a keymap is active, typing a character in Select mode does - not use it. (Benji Fisher) -Solution: Apply Insert mode mapping to the character typed in Select mode. -Files: src/normal.c - -Patch 6.1.462 -Problem: When autocommands wipe out a buffer, a crash may happen. (Hari - Krishna Dara) -Solution: Don't decrement the window count of a buffer before calling the - autocommands for it. When re-using the current buffer, watch out - for autocommands changing the current buffer. -Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro - -Patch 6.1.463 -Problem: When writing a compressed file, the file name that gzip stores in - the file is the weird temporary file name. (David Rennalls) -Solution: Use the real file name when possible. -Files: runtime/plugin/gzip.vim - -Patch 6.1.464 -Problem: Crash when using C++ syntax highlighting. (Gerhard Hochholzer) -Solution: Check for a negative index. -Files: src/syntax.c - -Patch 6.1.465 (after 6.1.454) -Problem: Compile error when using cygwin. -Solution: Change #ifdef WIN32 to #ifdef WIN3264. (Alejandro Lopez-Valencia) - Undefine WIN32 after including windows.h -Files: src/mbyte.c - -Patch 6.1.466 -Problem: The "-f" argument is a bit obscure. -Solution: Add the "--nofork" argument. Improve the help text a bit. -Files: runtime/doc/starting.txt, src/main.c - -Patch 6.1.467 -Problem: Setting the window title doesn't work for Chinese. -Solution: Use an X11 function to convert text to a text property. (Kentaro - Nakazawa) -Files: src/os_unix.c - -Patch 6.1.468 -Problem: ":mksession" also stores folds for buffers which will not be - restored. -Solution: Only store folds for a buffer with 'buftype' empty and help files. -Files: src/ex_docmd.c - -Patch 6.1.469 -Problem: 'listchars' cannot contain multi-byte characters. -Solution: Handle multi-byte UTF-8 list characters. (Matthew Samsonoff) -Files: src/message.c, src/option.c, src/screen.c - -Patch 6.1.470 (lang) -Problem: Polish messages don't show up correctly on MS-Windows. -Solution: Convert messages to cp1250. (Mikolaj Machowski) - Also add English message translations, because it got in the way - of the patch. -Files: Makefile, src/po/Makefile, src/po/en_gb.po, src/po/pl.po - -Patch 6.1.471 -Problem: ":jumps" output continues after pressing "q" at the more-prompt. - (Hari Krishna Dara) -Solution: Check for "got_int" being set. -Files: src/mark.c - -Patch 6.1.472 -Problem: When there is an authentication error when connecting to the X - server Vim exits. -Solution: Use XSetIOErrorHandler() to catch the error and longjmp() to avoid - the exit. Also do this in the main loop, so that when the X - server exits a Vim running in a console isn't killed. -Files: src/globals.h, src/main.c, src/os_unix.c - -Patch 6.1.473 -Problem: Referring to $curwin or $curbuf in Perl 5.6 causes a crash. -Solution: Add "pTHX_" to cur_val(). (Yasuhiro Matsumoto) -Files: src/if_perl.xs - -Patch 6.1.474 -Problem: When opening the command-line window in Ex mode it's impossible to - go back. (Pavol Juhas) -Solution: Reset "exmode_active" and restore it when the command-line window - is closed. -Files: src/ex_getln.c - - -Patch 6.2f.001 -Problem: The configure check for Ruby didn't work properly for Ruby 1.8.0. -Solution: Change the way the Ruby check is done. (Aron Griffis) -Files: src/auto/configure, src/configure.in - -Patch 6.2f.002 -Problem: The output of ":ls" doesn't show whether a buffer had read errors. -Solution: Add the "x" flag in the ":ls" output. -Files: runtime/doc/windows.txt, src/buffer.c - -Patch 6.2f.003 -Problem: Test49 doesn't properly test the behavior of ":catch" without an - argument. -Solution: Update test49. (Servatius Brandt) -Files: src/testdir/test49.ok, src/testdir/test49.vim - -Patch 6.2f.004 -Problem: "vim --version" always uses CR/LF in the output. -Solution: Omit the CR. -Files: src/message.c, src/os_unix.c - -Patch 6.2f.005 -Problem: Two error messages without a colon after the number. -Solution: Add the colon. (Taro Muraoka) -Files: src/if_cscope.c - -Patch 6.2f.006 -Problem: When saving a file takes a while and Vim regains focus this can - result in a "file changed outside of Vim" warning and ml_get() - errors. (Mike Williams) -Solution: Add the "b_saving" flag to avoid checking the timestamp while the - buffer is being saved. (Michael Schaap) -Files: src/fileio.c, src/structs.h - -Patch 6.2f.007 -Problem: Irix compiler complains about multiple defined symbols. - vsnprintf() is not available. (Charles Campbell) -Solution: Insert EXTERN for variables in globals.h. Change the configure - check for vsnprintf() from compiling to linking. -Files: src/auto/configure, src/configure.in, src/globals.h - -Patch 6.2f.008 -Problem: The Aap recipe doesn't work with Aap 0.149. -Solution: Change targetarg to TARGETARG. Update the mysign file. -Files: src/main.aap, src/mysign - -Patch 6.2f.009 (extra) -Problem: Small problem when building with Borland 5.01. -Solution: Use mkdir() instead of _mkdir(). (Walter Briscoe) -Files: src/dosinst.h - -Patch 6.2f.010 -Problem: Warning for missing prototypes. -Solution: Add missing prototypes. (Walter Briscoe) -Files: src/if_cscope.c - -Patch 6.2f.011 -Problem: The configure script doesn't work with autoconf 2.5x. -Solution: Add square brackets around a header check. (Aron Griffis) - Note: touch src/auto/configure after applying this patch. -Files: src/configure.in - -Patch 6.2f.012 -Problem: ":echoerr" doesn't work correctly inside try/endtry. -Solution: Don't reset did_emsg inside a try/endtry. (Servatius Brandt) -Files: src/eval.c - -Patch 6.2f.013 (extra) -Problem: Macintosh: Compiler warning for a trigraph. -Solution: Insert a backslash before each question mark. (Peter Cucka) -Files: src/os_mac.h - -Patch 6.2f.014 (extra) -Problem: Macintosh: ex_eval is not included in the project file. -Solution: Add ex_eval. (Dany St-Amant) -Files: src/os_mac.pbproj/project.pbxproj - -Patch 6.2f.015 (extra) -Problem: Win32: When changing header files not all source files involved - are recompiled. -Solution: Improve the dependency rules. (Dan Sharp) -Files: src/Make_cyg.mak, src/Make_ming.mak - -Patch 6.2f.016 -Problem: "vim --version > ff" on non-Unix systems results in a file with a - missing line break at the end. (Bill McCArthy) -Solution: Add a line break. -Files: src/main.c - -Patch 6.2f.017 -Problem: Unix: starting Vim in the background and then bringing it to the - foreground may cause the terminal settings to be wrong. -Solution: Check for tcsetattr() to return an error, retry when it does. - (Paul Tapper) -Files: src/os_unix.c - -Patch 6.2f.018 -Problem: Mac OS X 10.2: OK is defined to zero in cursus.h while Vim uses - one. Redefining it causes a warning message. -Solution: Undefine OK before defining it to one. (Taro Muraoka) -Files: src/vim.h - -Patch 6.2f.019 -Problem: Mac OS X 10.2: COLOR_BLACK and COLOR_WHITE are defined in - curses.h. -Solution: Rename them to PRCOLOR_BLACK and PRCOLOR_WHITE. -Files: src/ex_cmds2.c - -Patch 6.2f.020 -Problem: Win32: test50 produces beeps and fails with some versions of diff. -Solution: Remove empty lines and convert the output to dos fileformat. -Files: src/testdir/test50.in - -Patch 6.2f.021 -Problem: Running configure with "--enable-netbeans" disables Netbeans. - (Gordon Prieur) -Solution: Fix the tests in configure.in where the default is to enable a - feature. Fix that "--enable-acl" reported "yes" confusingly. -Files: src/auto/configure, src/configure.in, src/mysign - -Patch 6.2f.022 -Problem: A bogus value for 'foldmarker' is not rejected, possibly causing a - hang. (Derek Wyatt) -Solution: Check for a non-empty string before and after the comma. -Files: src/option.c - -Patch 6.2f.023 -Problem: When the help files are not in $VIMRUNTIME but 'helpfile' is - correct Vim still can't find the help files. -Solution: Also look for a tags file in the directory of 'helpfile'. -Files: src/tag.c - -Patch 6.2f.024 -Problem: When 'delcombine' is set and a character has more than two - composing characters "x" deletes them all. -Solution: Always delete only the last composing character. -Files: src/misc1.c - -Patch 6.2f.025 -Problem: When reading a file from stdin that has DOS line endings but a - missing end-of-line for the last line 'fileformat' becomes "unix". - (Bill McCarthy) -Solution: Don't add the missing line break when re-reading the text from the - buffer. -Files: src/fileio.c - -Patch 6.2f.026 -Problem: When typing new text at the command line, old composing characters - may be displayed. -Solution: Don't read composing characters from after the end of the - text to be displayed. -Files: src/ex_getln.c, src/mbyte.c, src/message.c, src/proto/mbyte.pro, - src/screen.c - -Patch 6.2f.027 -Problem: Compiler warnings for unsigned char pointers. (Tony Leneis) -Solution: Add typecasts to char pointer. -Files: src/quickfix.c - -Patch 6.2f.028 -Problem: GTK: When 'imactivatekey' is empty and XIM is inactive it can't be - made active again. Cursor isn't updated immediately when changing - XIM activation. Japanese XIM may hang when using 'imactivatekey'. - Can't activate XIM after typing fFtT command or ":sh". -Solution: Properly set the flag that indicates the IM is active. Update the - cursor right away. Do not send a key-release event. Handle - Normal mode and running an external command differently. - (Yasuhiro Matsumoto) -Files: src/mbyte.c - -Patch 6.2f.029 -Problem: Mixing use of int and enum. -Solution: Adjust argument type of cs_usage_msg(). Fix wrong typedef. -Files: src/if_cscope.c, src/if_cscope.h - -Patch 6.2f.030 (after 6.2f.028) -Problem: Cursor moves up when using XIM. -Solution: Reset im_preedit_cursor. (Yasuhiro Matsumoto) -Files: src/mbyte.c - -Patch 6.2f.031 -Problem: Crash when listing a function argument in the debugger. (Ron Aaron) -Solution: Init the name field of an argument to NULL. -Files: src/eval.c - -Patch 6.2f.032 -Problem: When a write fails for a ":silent!" while inside try/endtry the - BufWritePost autocommands are not triggered. -Solution: Check the emsg_silent flag in should_abort(). (Servatius Brandt) -Files: src/ex_eval.c, src/testdir/test49.ok, src/testdir/test49.vim - -Patch 6.2f.033 -Problem: Cscope: re-entrance problem for ":cscope" command. Checking for - duplicate database didn't work well for Win95. Didn't check for - duplicate databases after an empty entry. -Solution: Don't set postponed_split too early. Remember first empty - database entry. (Sergey Khorev) -Files: src/if_cscope.c - -Patch 6.2f.034 -Problem: The netbeans interface cannot be used on systems without - vsnprintf(). (Tony Leneis) -Solution: Use EMSG(), EMSGN() and EMSG2() instead. -Files: src/auto/configure, src/configure.in, src/netbeans.c - -Patch 6.2f.035 -Problem: The configure check for the netbeans interface doesn't work if the - socket and nsl libraries are required. -Solution: Check for the socket and nsl libraries before the netbeans check. -Files: src/auto/configure, src/configure.in - -Patch 6.2f.036 -Problem: Moving leftwards over text with an illegal UTF-8 byte moves one - byte instead of one character. -Solution: Ignore an illegal byte after the cursor position. -Files: src/mbyte.c - -Patch 6.2f.037 -Problem: When receiving a Netbeans command at the hit-enter or more prompt - the screen is redrawn but Vim is still waiting at the prompt. -Solution: Quit the prompt like a CTRL-C was typed. -Files: src/netbeans.c - -Patch 6.2f.038 -Problem: The dependency to run autoconf causes a patch for configure.in - to run autoconf, even though the configure script was updated as - well. -Solution: Only run autoconf with "make autoconf". -Files: src/Makefile - -Patch 6.2f.039 -Problem: CTRL-W K makes the new top window very high. -Solution: When 'equalalways' is set equalize the window heights. -Files: src/window.c - - -============================================================================== -VERSION 6.3 *version-6.3* - -This section is about improvements made between version 6.2 and 6.3. - -This is mainly a bug-fix release. There are also a few new features. -The major number of new items is in the runtime files and translations. - - -Changed *changed-6.3* -------- - -The intro message also displays a note about sponsoring Vim, mixed randomly -with the message about helping children in Uganda. - -Included the translated menus, keymaps and tutors with the normal runtime -files. The separate "lang" archive now only contains translated messages. - -Made the translated menu file names a bit more consistent. Use "latin1" for -"iso_8859-1" and "iso_8859-15". - -Removed the "file_select.vim" script from the distribution. It's not more -useful than other scripts that can be downloaded from www.vim.org. - -The "runtime/doc/tags" file is now always in unix fileformat. On MS-Windows -it used to be dos fileformat, but ":helptags" generates a unix format file. - - -Added *added-6.3* ------ - -New commands: - :cNfile go to last error in previous file - :cpfile idem - :changes print the change list - :keepmarks following command keeps marks where they are - :keepjumps following command keeps jumplist and marks - :lockmarks following command keeps marks where they are - :redrawstatus force a redraw of the status line(s) - -New options: - 'antialias' Mac OS X: use smooth, antialiased fonts - 'helplang' preferred help languages - -Syntax files: - Arch inventory (Nikolai Weibull) - Calendar (Nikolai Weibull) - Ch (Wayne Cheng) - Controllable Regex Mutilator (Nikolai Weibull) - D (Jason Mills) - Desktop (Mikolaj Machowski) - Dircolors (Nikolai Weibull) - Elinks configuration (Nikolai Weibull) - FASM (Ron Aaron) - GrADS scripts (Stefan Fronzek) - Icewm menu (James Mahler) - LDIF (Zak Johnson) - Locale input, fdcc. (Dwayne Bailey) - Pinfo config (Nikolai Weibull) - Pyrex (Marco Barisione) - Relax NG Compact (Nikolai Weibull) - Slice (Morel Bodin) - VAX Macro Assembly (Tom Uijldert) - grads (Stefan Fronzek) - libao (Nikolai Weibull) - mplayer (Nikolai Weibull) - rst (Nikolai Weibull) - tcsh (Gautam Iyer) - yaml (Nikolai Weibull) - -Compiler plugins: - ATT dot (Marcos Macedo) - Apple Project Builder (Alexander von Below) - Intel (David Harrison) - bdf (Nikolai Weibull) - icc (Peter Puck) - javac (Doug Kearns) - neato (Marcos Macedo) - onsgmls (Robert B. Rowsome) - perl (Christian J. Robinson) - rst (Nikolai Weibull) - se (SmartEiffel) (Doug Kearns) - tcl (Doug Kearns) - xmlwf (Robert B. Rowsome) - -Filetype plugins: - Aap (Bram Moolenaar) - Ch (Wayne Cheng) - Css (Nikolai Weibull) - Pyrex (Marco Barisione) - Rst (Nikolai Weibull) - -Indent scripts: - Aap (Bram Moolenaar) - Ch (Wayne Cheng) - DocBook (Nikolai Weibull) - MetaPost (Eugene Minkovskii) - Objective-C (Kazunobu Kuriyama) - Pyrex (Marco Barisione) - Rst (Nikolai Weibull) - Tcsh (Gautam Iyer) - XFree86 configuration file (Nikolai Weibull) - Zsh (Nikolai Weibull) - -Keymaps: - Greek for cp1253 (Panagiotis Louridas) - Hungarian (Magyar) (Laszlo Zavaleta) - Persian-Iranian (Behnam Esfahbod) - -Message translations: - Catalan (Ernest Adrogue) - Russian (Vassily Ragosin) - Swedish (Johan Svedberg) - -Menu translations: - Catalan (Ernest Adrogue) - Russian (Tim Alexeevsky) - Swedish (Johan Svedberg) - -Tutor translations: - Catalan (Ernest Adrogue) - Russian in cp1251 (Alexey Froloff) - Slovak in cp1251 and iso8859-2 (Lubos Celko) - Swedish (Johan Svedberg) - Korean (Kee-Won Seo) - UTF-8 version of the Japanese tutor (Yasuhiro Matsumoto) Use this as - the original, create the other Japanese tutor by conversion. - -Included "russian.txt" help file. (Vassily Ragosin) - -Include Encapsulated PostScript and PDF versions of the Vim logo in the extra -archive. - -The help highlighting finds the highlight groups and shows them in the color -that is actually being used. (idea from Yakov Lerner) - -The big Win32 version is now compiled with Ruby interface, version 1.8. For -Python version 2.3 is used. For Perl version 5.8 is used. - -The "ftdetect" directory is mentioned in the documentation. The DOS install -program creates it. - - -Fixed *fixed-6.3* ------ - -Test 42 failed on MS-Windows. Set and reset 'fileformat' and 'binary' options -here and there. (Walter Briscoe) - -The explorer plugin didn't work for double-byte 'encoding's. - -Use "copy /y" in Make_bc5.mak to avoid a prompt for overwriting. - -Patch 6.2.001 -Problem: The ":stopinsert" command doesn't have a help tag. -Solution: Add the tag. (Antoine J. Mechelynck) -Files: runtime/doc/insert.txt, runtime/doc/tags - -Patch 6.2.002 -Problem: When compiled with the +multi_byte feature but without +eval, - displaying UTF-8 characters may cause a crash. (Karsten Hopp) -Solution: Also set the default for 'ambiwidth' when compiled without the - +eval feature. -Files: src/option.c - -Patch 6.2.003 -Problem: GTK 2: double-wide characters below 256 are not displayed - correctly. -Solution: Check the cell width for characters above 127. (Yasuhiro - Matsumoto) -Files: src/gui_gtk_x11.c - -Patch 6.2.004 -Problem: With a line-Visual selection at the end of the file a "p" command - puts the text one line upwards. -Solution: Detect that the last line was deleted and put forward. (Taro - Muraoka) -Files: src/normal.c - -Patch 6.2.005 -Problem: GTK: the "Find" and "Find and Replace" tools don't work. (Aschwin - Marsman) -Solution: Show the dialog after creating it. (David Necas) -Files: src/gui_gtk.c - -Patch 6.2.006 -Problem: The Netbeans code contains an obsolete function that uses "vim61" - and sets the fall-back value for $VIMRUNTIME. -Solution: Delete the obsolete function. -Files: src/main.c, src/netbeans.c, src/proto/netbeans.pro - -Patch 6.2.007 -Problem: Listing tags for Cscope doesn't always work. -Solution: Avoid using smgs_attr(). (Sergey Khorev) -Files: src/if_cscope.c - -Patch 6.2.008 -Problem: XIM with GTK 2: After backspacing preedit characters are wrong. -Solution: Reset the cursor position. (Yasuhiro Matsumoto) -Files: src/mbyte.c - -Patch 6.2.009 -Problem: Win32: The self-installing executable "Full" selection only - selects some of the items to install. (Salman Mohsin) -Solution: Change commas to spaces in between section numbers. -Files: nsis/gvim.nsi - -Patch 6.2.010 -Problem: When 'virtualedit' is effective and a line starts with a - multi-byte character, moving the cursor right doesn't work. -Solution: Obtain the right character to compute the column offset. (Taro - Muraoka) -Files: src/charset.c - -Patch 6.2.011 -Problem: Alpha OSF1: stat() is a macro and doesn't allow an #ifdef halfway. - (Moshe Kaminsky) -Solution: Move the #ifdef outside of stat(). -Files: src/os_unix.c - -Patch 6.2.012 -Problem: May hang when polling for a character. -Solution: Break the wait loop when not waiting for a character. -Files: src/os_unix.c - -Patch 6.2.013 (extra) -Problem: Win32: The registry key for uninstalling GvimExt still uses "6.1". -Solution: Change the version number to "6.2". (Ajit Thakkar) -Files: src/GvimExt/GvimExt.reg - -Patch 6.2.014 (after 6.2.012) -Problem: XSMP doesn't work when using poll(). -Solution: Use xsmp_idx instead of gpm_idx. (Neil Bird) -Files: src/os_unix.c - -Patch 6.2.015 -Problem: The +xsmp feature is never enabled. -Solution: Move the #define for USE_XSMP to below where WANT_X11 is defined. - (Alexey Froloff) -Files: src/feature.h - -Patch 6.2.016 -Problem: Using ":scscope find" with 'cscopequickfix' does not always split - the window. (Gary Johnson) - Win32: ":cscope add" could make the script that contains it - read-only until the corresponding ":cscope kill". - Errors during ":cscope add" may not be handled properly. -Solution: When using the quickfix window may need to split the window. - Avoid file handle inheritance for the script. - Check for a failed connection and/or process. (Sergey Khorev) -Files: src/ex_cmds2.c, src/if_cscope.c - -Patch 6.2.017 -Problem: Test11 sometimes prompts the user, because a file would have been - changed outside of Vim. (Antonio Colombo) -Solution: Add a FileChangedShell autocommand to avoid the prompt. -Files: src/testdir/test11.in - -Patch 6.2.018 -Problem: When using the XSMP protocol and reading from stdin Vim may wait - for a key to be pressed. -Solution: Avoid that RealWaitForChar() is used recursively. -Files: src/os_unix.c - -Patch 6.2.019 (lang) -Problem: Loading the Portuguese menu causes an error message. -Solution: Join two lines. (Jose Pedro Oliveira, Jos� de Paula) -Files: runtime/lang/menu_pt_br.vim - -Patch 6.2.020 -Problem: The "Syntax/Set syntax only" menu item causes an error message. - (Oyvind Holm) -Solution: Set the script-local variable in a function. (Benji Fisher) -Files: runtime/synmenu.vim - -Patch 6.2.021 -Problem: The user manual section on exceptions contains small mistakes. -Solution: Give a good example of an error that could be missed and other - improvements. (Servatius Brandt) -Files: runtime/doc/usr_41.txt - -Patch 6.2.022 (extra) -Problem: Win32: After deleting a menu item it still appears in a tear-off - window. -Solution: Set the mode to zero for the deleted item. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 6.2.023 (extra) -Problem: Win32: Make_ivc.mak does not clean everything. -Solution: Delete more files in the clean rule. (Walter Briscoe) -Files: src/Make_ivc.mak - -Patch 6.2.024 (extra) -Problem: Win32: Compiler warnings for typecasts. -Solution: Use DWORD instead of WORD. (Walter Briscoe) -Files: src/gui_w32.c - -Patch 6.2.025 -Problem: Missing prototype for sigaltstack(). -Solution: Add the prototype when it is not found in a header file. -Files: src/os_unix.c - -Patch 6.2.026 -Problem: Warning for utimes() argument. -Solution: Add a typecast. -Files: src/fileio.c - -Patch 6.2.027 -Problem: Warning for uninitialized variable. -Solution: Set mb_l to one when not using multi-byte characters. -Files: src/message.c - -Patch 6.2.028 -Problem: Cscope connection may kill Vim process and others. -Solution: Check for pid being larger than one. (Khorev Sergey) -Files: src/if_cscope.c - -Patch 6.2.029 -Problem: When using the remote server functionality Vim may leak memory. - (Srikanth Sankaran) -Solution: Free the result of XListProperties(). -Files: src/if_xcmdsrv.c - -Patch 6.2.030 -Problem: Mac: Warning for not being able to use precompiled header files. -Solution: Don't redefine select. Use -no-cpp-precomp for compiling, so that - function prototypes are still found. -Files: src/os_unix.c, src/osdef.sh - -Patch 6.2.031 -Problem: The langmenu entry in the options window doesn't work. (Rodolfo - Lima) - With GTK 1 the ":options" command causes an error message. - (Michael Naumann) -Solution: Change "lmenu" to "langmenu". Only display the 'tbis' option for - GTK 2. -Files: runtime/optwin.vim - -Patch 6.2.032 -Problem: The lpc filetype is never recognized. (Shizhu Pan) -Solution: Check for g:lpc_syntax_for_c instead of the local variable - lpc_syntax_for_c. (Benji Fisher) -Files: runtime/filetype.vim - -Patch 6.2.033 (extra) -Problem: Mac: Various compiler warnings. -Solution: Don't include Classic-only headers in Unix version. - Remove references to several unused variables. (Ben Fowler) - Fix double definition of DEFAULT_TERM. - Use int instead of unsigned short for pixel values, so that the - negative error values are recognized. -Files: src/gui_mac.c, src/term.c - -Patch 6.2.034 -Problem: Mac: Compiler warning for redefining DEFAULT_TERM. -Solution: Fix double definition of DEFAULT_TERM. -Files: src/term.c - -Patch 6.2.035 -Problem: Mac: Compiler warnings in Python interface. -Solution: Make a difference between pure Mac and Unix-Mac. (Peter Cucka) -Files: src/if_python.c - -Patch 6.2.036 (extra) -Problem: Mac Unix version: If foo is a directory, then ":e f<Tab>" should - expand to ":e foo/" instead of ":e foo" . (Vadim Zeitlin) -Solution: Define DONT_ADD_PATHSEP_TO_DIR only for pure Mac. (Benji Fisher) -Files: src/os_mac.h - -Patch 6.2.037 -Problem: Win32: converting an encoding name to a codepage could result in - an arbitrary number. -Solution: make encname2codepage() return zero if the encoding name doesn't - contain a codepage number. -Files: src/mbyte.c - -Patch 6.2.038 (extra) -Problem: Warning messages when using the MingW compiler. (Bill McCarthy) - Can't compile console version without +mouse feature. -Solution: Initialize variables, add parenthesis. - Add an #ifdef around g_nMouseClick. (Ajit Thakkar) -Files: src/eval.c, src/os_win32.c, src/gui_w32.c, src/dosinst.c - -Patch 6.2.039 (extra) -Problem: More warning messages when using the MingW compiler. -Solution: Initialize variables. (Bill McCarthy) -Files: src/os_mswin.c - -Patch 6.2.040 -Problem: FreeBSD: Crash while starting up when compiled with +xsmp feature. -Solution: Pass a non-NULL argument to IceAddConnectionWatch(). -Files: src/os_unix.c - -Patch 6.2.041 (extra, after 6.2.033) -Problem: Mac: Compiler warnings for conversion types, missing prototype, - missing return type. -Solution: Change sscanf "%hd" to "%d", the argument is an int now. Add - gui_mch_init_check() prototype. Add "int" to termlib functions. -Files: src/gui_mac.c, src/proto/gui_mac.pro, src/termlib.c. - -Patch 6.2.042 (extra) -Problem: Cygwin: gcc 3.2 has an optimizer problem, sometimes causing a - crash. -Solution: Add -fno-strength-reduce to the compiler arguments. (Dan Sharp) -Files: src/Make_cyg.mak - -Patch 6.2.043 -Problem: Compiling with both netbeans and workshop doesn't work. -Solution: Move the shellRectangle() function to gui_x11.c. (Gordon Prieur) -Files: src/gui_x11.c, src/integration.c, src/netbeans.c, - src/proto/netbeans.pro - -Patch 6.2.044 -Problem: ":au filetypedetect" gives an error for a non-existing event name, - but it's actually a non-existing group name. (Antoine Mechelynck) -Solution: Make the error message clearer. -Files: src/fileio.c - -Patch 6.2.045 -Problem: Obtaining the '( mark changes the '' mark. (Gary Holloway) -Solution: Don't set the '' mark when searching for the start/end of the - current sentence/paragraph. -Files: src/mark.c - -Patch 6.2.046 -Problem: When evaluating an argument of a function throws an exception the - function is still called. (Hari Krishna Dara) -Solution: Don't call the function when an exception was thrown. -Files: src/eval.c - -Patch 6.2.047 (extra) -Problem: Compiler warnings when using MingW. (Bill McCarthy) -Solution: Give the s_dwLastClickTime variable a type. Initialize dwEndTime. -Files: src/os_win32.c - -Patch 6.2.048 -Problem: The Python interface doesn't compile with Python 2.3 when - dynamically loaded. -Solution: Use dll_PyObject_Malloc and dll_PyObject_Free. (Paul Moore) -Files: src/if_python.c - -Patch 6.2.049 -Problem: Using a "-range=" argument with ":command" doesn't work and - doesn't generate an error message. -Solution: Generate an error message. -Files: src/ex_docmd.c - -Patch 6.2.050 -Problem: Test 32 didn't work on MS-Windows. -Solution: Write the temp file in Unix fileformat. (Walter Briscoe) -Files: src/testdir/test32.in - -Patch 6.2.051 -Problem: When using "\=submatch(0)" in a ":s" command, line breaks become - NUL characters. -Solution: Change NL to CR characters, so that they become line breaks. -Files: src/regexp.c - -Patch 6.2.052 -Problem: A few messages are not translated. -Solution: Add _() to the messages. (Muraoka Taro) -Files: src/ex_cmds.c - -Patch 6.2.053 -Problem: Prototype for bzero() doesn't match most systems. -Solution: Use "void *" instead of "char *" and "size_t" intead of "int". -Files: src/osdef1.h.in - -Patch 6.2.054 -Problem: A double-byte character with a second byte that is a backslash - causes problems inside a string. -Solution: Skip over multi-byte characters in a string properly. (Yasuhiro - Matsumoto) -Files: src/eval.c - -Patch 6.2.055 -Problem: Using col('.') from CTRL-O in Insert mode does not return the - correct value for multi-byte characters. -Solution: Correct the cursor position when it is necessary, move to the - first byte of a multi-byte character. (Yasuhiro Matsumoto) -Files: src/edit.c - -Patch 6.2.056 (extra) -Problem: Building with Sniff++ doesn't work. -Solution: Use the multi-threaded libc when needed. (Holger Ditting) -Files: src/Make_mvc.mak - -Patch 6.2.057 (extra) -Problem: Mac: With -DMACOS_X putenv() is defined twice, it is in a system - library. Get a warning for redefining OK. Unused variables in - os_mac.c -Solution: Define HAVE_PUTENV. Undefine OK after including curses.h. - Remove declarations for unused variables. -Files: src/os_mac.c, src/os_mac.h, src/vim.h - -Patch 6.2.058 -Problem: When 'autochdir' is set ":bnext" to a buffer without a name causes - a crash. -Solution: Don't call vim_chdirfile() when the file name is NULL. (Taro - Muraoka) -Files: src/buffer.c - -Patch 6.2.059 -Problem: When 'scrolloff' is a large number and listing completion results - on the command line, then executing a command that jumps close to - where the cursor was before, part of the screen is not updated. - (Yakov Lerner) -Solution: Don't skip redrawing part of the window when it was scrolled. -Files: src/screen.c - -Patch 6.2.060 (extra) -Problem: Win32: When 'encoding' is set to "iso-8859-7" copy/paste to/from - the clipboard gives a lalloc(0) error. (Kriton Kyrimis) -Solution: When the string length is zero allocate one byte. Also fix that - when the length of the Unicode text is zero (conversion from - 'encoding' to UCS-2 was not possible) the normal text is used. -Files: src/os_mswin.c - -Patch 6.2.061 -Problem: GUI: Using the left mouse button with the shift key should work - like "*" but it scrolls instead. (Martin Beller) -Solution: Don't recognize an rxvt scroll wheel event when using the GUI. -Files: src/term.c - -Patch 6.2.062 -Problem: When one buffer uses a syntax with "containedin" and another - buffer does not, redrawing depends on what the current buffer is. - (Brett Pershing Stahlman) -Solution: Use "syn_buf" instead of "curbuf" to get the b_syn_containedin - flag. -Files: src/syntax.c - -Patch 6.2.063 -Problem: When using custom completion end up with no matches. -Solution: Make cmd_numfiles and cmd_files local to completion to avoid that - they are overwritten when ExpandOne() is called recursively by - f_glob(). -Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/ex_getln.pro, - src/misc1.c, src/structs.h, src/tag.c - -Patch 6.2.064 -Problem: resolve() only handles one symbolic link, need to repeat it to - resolve all of them. Then need to simplify the file name. -Solution: Make resolve() resolve all symbolic links and simplify the result. - Add simplify() to just simplify a file name. Fix that test49 - doesn't work if /tmp is a symbolic link. (Servatius Brandt) -Files: runtime/doc/eval.txt, src/eval.c, src/tag.c, - src/testdir/test49.vim - -Patch 6.2.065 -Problem: ":windo 123" only updates other windows when entering them. - (Walter Briscoe) -Solution: Update the topline before going to the next window. -Files: src/ex_cmds2.c - -Patch 6.2.066 (extra) -Problem: Ruby interface doesn't work with Ruby 1.8.0. -Solution: Change "defout" to "stdout". (Aron Grifis) - Change dynamic loading. (Taro Muraoka) -Files: src/if_ruby.c, src/Make_mvc.mak - -Patch 6.2.067 -Problem: When searching for a string that starts with a composing character - the command line isn't drawn properly. -Solution: Don't count the space to draw the composing character on and - adjust the cursor column after drawing the string. -Files: src/message.c - -Patch 6.2.068 -Problem: Events for the netbeans interface that include a file name with - special characters don't work properly. -Solution: Use nb_quote() on the file name. (Sergey Khorev) -Files: src/netbeans.c - -Patch 6.2.069 (after 6.2.064) -Problem: Unused variables "limit" and "new_st" and unused label "fail" in - some situation. (Bill McCarthy) -Solution: Put the declarations inside an #ifdef. (Servatius Brandt) -Files: src/eval.c, src/tag.c - -Patch 6.2.070 (after 6.2.069) -Problem: Still unused variable "new_st". (Bill McCarthy) -Solution: Move the declaration to the right block this time. -Files: src/tag.c - -Patch 6.2.071 -Problem: 'statusline' can only contain 50 % items. (Antony Scriven) -Solution: Allow 80 items and mention it in the docs. -Files: runtime/doc/option.txt, src/vim.h - -Patch 6.2.072 -Problem: When using expression folding, foldexpr() mostly returns -1 for - the previous line, which makes it difficult to write a fold - expression. -Solution: Make the level of the previous line available while still looking - for the end of a fold. -Files: src/fold.c - -Patch 6.2.073 -Problem: When adding detection of a specific filetype for a plugin you need - to edit "filetype.vim". -Solution: Source files from the "ftdetect" directory, so that a filetype - detection plugin only needs to be dropped in a directory. -Files: runtime/doc/filetype.txt, runtime/doc/usr_05.txt, - runtime/doc/usr_41.txt, runtime/filetype.vim - -Patch 6.2.074 -Problem: Warnings when compiling the Python interface. (Ajit Thakkar) -Solution: Use ANSI function declarations. -Files: src/if_python.c - -Patch 6.2.075 -Problem: When the temp file for writing viminfo can't be used "NULL" - appears in the error message. (Ben Lavender) -Solution: Print the original file name when there is no temp file name. -Files: src/ex_cmds.c - -Patch 6.2.076 -Problem: The tags listed for cscope are in the wrong order. (Johannes - Stezenbach) -Solution: Remove the reordering of tags for the current file. (Sergey - Khorev) -Files: src/if_cscope.c - -Patch 6.2.077 -Problem: When a user function specifies custom completion, the function - gets a zero argument instead of an empty string when there is no - word before the cursor. (Preben Guldberg) -Solution: Don't convert an empty string to a zero. -Files: src/eval.c - -Patch 6.2.078 -Problem: "make test" doesn't work if Vim wasn't compiled yet. (Ed Avis) -Solution: Build Vim before running the tests. -Files: src/Makefile - -Patch 6.2.079 -Problem: ":w ++enc=utf-8 !cmd" doesn't work. -Solution: Check for the "++" argument before the "!". -Files: src/ex_docmd.c - -Patch 6.2.080 -Problem: When 't_ti' is not empty but doesn't swap screens, using "ZZ" in - an unmodified file doesn't clear the last line. -Solution: Call msg_clr_eos() when needed. (Michael Schroeder) -Files: src/os_unix.c - -Patch 6.2.081 -Problem: Problem when using a long multibyte string for the statusline. -Solution: Use the right pointer to get the cell size. (Taro Muraoka) -Files: src/buffer.c - -Patch 6.2.082 -Problem: Can't compile with Perl 5.8.1. -Solution: Rename "e_number" to "e_number_exp". (Sascha Blank) -Files: src/digraph.c, src/globals.h - -Patch 6.2.083 -Problem: When a compiler uses ^^^^ to mark a word the information is not - visible in the quickfix window. (Srikanth Sankaran) -Solution: Don't remove the indent for a line that is not recognized as an - error message. -Files: src/quickfix.c - -Patch 6.2.084 -Problem: "g_" in Visual mode always goes to the character after the line. - (Jean-Rene David) -Solution: Ignore the NUL at the end of the line. -Files: src/normal.c - -Patch 6.2.085 -Problem: ":verbose set ts" doesn't say an option was set with a "-c" or - "--cmd" argument. -Solution: Remember the option was set from a Vim argument. -Files: src/main.c, src/ex_cmds2.c, src/vim.h - -Patch 6.2.086 -Problem: "{" and "}" stop inside a closed fold. -Solution: Only stop once inside a closed fold. (Stephen Riehm) -Files: src/search.c - -Patch 6.2.087 -Problem: CTRL-^ doesn't use the 'confirm' option. Same problem with - ":bnext". (Yakov Lerner) -Solution: Put up a dialog for a changed file when 'confirm' is set in more - situations. -Files: src/buffer.c, src/ex_cmds.c - -Patch 6.2.088 -Problem: When 'sidescrolloff' is set 'showmatch' doesn't work correctly if - the match is less than 'sidescrolloff' off from the side of the - window. (Roland Stahn) -Solution: Set 'sidescrolloff' to zero while displaying the match. -Files: src/search.c - -Patch 6.2.089 -Problem: ":set isk+=" adds a comma. (Mark Waggoner) -Solution: Don't add a comma when the added value is empty. -Files: src/option.c - -Patch 6.2.090 (extra) -Problem: Win32: MingW compiler complains about #pragmas. (Bill McCarthy) -Solution: Put an #ifdef around the #pragmas. -Files: src/os_win32.c - -Patch 6.2.091 -Problem: When an autocommand is triggered when a file is dropped on Vim and - it produces output, messages from a following command may be - scrolled unexpectedly. (David Rennalls) -Solution: Save and restore msg_scroll in handle_drop(). -Files: src/ex_docmd.c - -Patch 6.2.092 -Problem: Invalid items appear in the help file tags. (Antonio Colombo) -Solution: Only accept tags with white space before the first "*". -Files: runtime/doc/doctags.c, src/ex_cmds.c - -Patch 6.2.093 -Problem: ":nnoremenu" also defines menu for Visual mode. (Klaus Bosau) -Solution: Check the second command character for an "o", not the third. -Files: src/menu.c - -Patch 6.2.094 -Problem: Can't compile with GTK and tiny features. -Solution: Include handle_drop() and vim_chdirfile() when FEAT_DND is defined. - Do not try to split the window. -Files: src/ex_docmd.c, src/misc2.c - -Patch 6.2.095 -Problem: The message "Cannot go to buffer x" is confusing for ":buf 6". - (Frans Englich) -Solution: Make it "Buffer x does not exist". -Files: src/buffer.c - -Patch 6.2.096 -Problem: Win32: ":let @* = ''" put a newline on the clipboard. (Klaus - Bosau) -Solution: Put zero bytes on the clibpoard for an empty string. -Files: src/ops.c - -Patch 6.2.097 -Problem: Setting or resetting 'insertmode' in a BufEnter autocommand - doesn't always have immediate effect. (Nagger) -Solution: When 'insertmode' is set, set need_start_insertmode, when it's - reset set stop_insert_mode. -Files: src/option.c - -Patch 6.2.098 (after 6.2.097) -Problem: Can't build Vim with tiny features. (Christian J. Robinson) -Solution: Declare stop_insert_mode always. -Files: src/edit.c, src/globals.h - -Patch 6.2.099 (extra) -Problem: Test 49 fails. (Mikolaj Machowski) -Solution: The Polish translation must not change "E116" to "R116". -Files: src/po/pl.po - -Patch 6.2.100 -Problem: "make proto" fails when compiled with the Perl interface. -Solution: Remove "-fno.*" from PERL_CFLAGS, cproto sees it as its option. -Files: src/auto/configure, src/configure.in - -Patch 6.2.101 -Problem: When using syntax folding, opening a file slows down a lot when - it's size increases by only 20%. (Gary Johnson) -Solution: The array with cached syntax states is leaking entries. After - cleaning up the list obtain the current entry again. -Files: src/syntax.c - -Patch 6.2.102 -Problem: The macros equal() and CR conflict with a Carbon header file. -Solution: Rename equal() to equalpos(). Rename CR to CAR. - Do this in the non-extra files only. -Files: src/ascii.h, src/buffer.c, src/charset.c, src/edit.c, src/eval.c, - src/ex_cmds.c, src/ex_cmds2.c, src/ex_getln.c, src/fileio.c, - src/getchar.c, src/gui.c, src/gui_athena.c, src/gui_gtk_x11.c, - src/gui_motif.c, src/macros.h, src/mark.c, src/message.c, - src/misc1.c, src/misc2.c, src/normal.c, src/ops.c, src/os_unix.c, - src/regexp.c, src/search.c, src/ui.c, src/workshop.c - -Patch 6.2.103 (extra) -Problem: The macros equal() and CR conflict with a Carbon header file. -Solution: Rename equal() to equalpos(). Rename CR to CAR. - Do this in the extra files only. -Files: src/gui_photon.c, src/gui_w48.c - -Patch 6.2.104 -Problem: Unmatched braces in the table with options. -Solution: Move the "}," outside of the #ifdef. (Yakov Lerner) -Files: src/option.c - -Patch 6.2.105 -Problem: When the cursor is past the end of the line when calling - get_c_indent() a crash might occur. -Solution: Don't look past the end of the line. (NJ Verenini) -Files: src/misc1.c - -Patch 6.2.106 -Problem: Tag searching gets stuck on a very long line in the tags file. -Solution: When skipping back to search the first matching tag remember the - offset where searching started looking for a line break. -Files: src/tag.c - -Patch 6.2.107 (extra) -Problem: The NetBeans interface cannot be used on Win32. -Solution: Add support for the NetBeans for Win32. Add support for reading - XPM files on Win32. Also fixes that a sign icon with a space in - the file name did not work through the NetBeans interface. - (Sergey Khorev) - Also: avoid repeating error messages when the connection is lost. -Files: Makefile, runtime/doc/netbeans.txt, src/Make_bc5.mak, - src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, - src/bigvim.bat, src/feature.h, src/gui_beval.c, src/gui_beval.h, - src/gui_w32.c, src/gui_w48.c, src/menu.c, src/nbdebug.c, - src/nbdebug.h, src/netbeans.c, src/os_mswin.c, src/os_win32.h, - src/proto/gui_beval.pro, src/proto/gui_w32.pro, - src/proto/netbeans.pro, src/proto.h, src/version.c, src/vim.h, - src/xpm_w32.c, src/xpm_w32.h - -Patch 6.2.108 -Problem: Crash when giving a message about ignoring case in a tag. (Manfred - Kuehn) -Solution: Use a longer buffer for the message. -Files: src/tag.c - -Patch 6.2.109 -Problem: Compiler warnings with various Amiga compilers. -Solution: Add typecast, prototypes, et al. that are also useful for other - systems. (Flavio Stanchina) -Files: src/eval.c, src/ops.c - -Patch 6.2.110 -Problem: When $LANG includes the encoding, a menu without an encoding name - is not found. -Solution: Also look for a menu file without any encoding. -Files: runtime/menu.vim - -Patch 6.2.111 -Problem: Encoding "cp1251" is not recognized. -Solution: Add "cp1251" to the table of encocings. (Alexey Froloff) -Files: src/mbyte.c - -Patch 6.2.112 -Problem: After applying patches test32 fails. (Antonio Colombo) -Solution: Have "make clean" in the testdir delete *.rej and *.orig files. - Use this when doing "make clean" in the src directory. -Files: src/Makefile, src/testdir/Makefile - -Patch 6.2.113 -Problem: Using ":startinsert" after "$" works like "a" instead of "i". - (Ajit Thakkar) -Solution: Reset "w_curswant" for ":startinsert" and reset o_eol in edit(). -Files: src/edit.c, src/ex_docmd.c - -Patch 6.2.114 -Problem: When stdout is piped through "tee", the size of the screen may not - be correct. -Solution: Use stdin instead of stdout for ioctl() when stdin is a tty and - stdout isn't. -Files: src/os_unix.c - -Patch 6.2.115 (extra) -Problem: Compiler warnings with various Amiga compilers. -Solution: Add typecast, prototypes, et al. Those changes that are - Amiga-specific. (Flavio Stanchina) -Files: src/fileio.c, src/memfile.c, src/os_amiga.c, src/os_amiga.h, - src/vim.h - -Patch 6.2.116 (extra) -Problem: German keyboard with Numlock set different from system startup - causes problems. -Solution: Ignore keys with code 0xff. (Helmut Stiegler) -Files: src/gui_w48.c - -Patch 6.2.117 -Problem: Breakpoints in loops of sourced files and functions are not - detected. (Hari Krishna Dara) -Solution: Check for breakpoints when using lines that were previously read. - (Servatius Brandt) -Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/proto/eval.pro, - src/proto/ex_cmds2.pro - -Patch 6.2.118 (extra) -Problem: Mac: Compiling is done in a non-standard way. -Solution: Use the Unix method for Mac OS X, with autoconf. Add "CARBONGUI" - to Makefile and configure. (Eric Kow) - Move a few prototypes from os_mac.pro to gui_mac.pro. -Files: src/Makefile, src/auto/configure, src/configure.in, - src/config.mk.in, src/gui_mac.c, src/os_mac.h, src/os_macosx.c, - src/proto/gui_mac.pro, src/proto/os_mac.pro, - src/infplist.xml, src/vim.h - -Patch 6.2.119 (after 6.2.107) -Problem: When packing the MS-Windows archives a few files are missing. - (Guopeng Wen) -Solution: Add gui_beval.* to the list of generic source files. -Files: Makefile - -Patch 6.2.120 -Problem: Win32 GUI: The console dialogs are not supported on MS-Windows, - disabling the 'c' flag of 'guioptions'. (Servatius Brandt) -Solution: Define FEAT_CON_DIALOG also for GUI-only builds. -Files: src/feature.h - -Patch 6.2.121 (after 6.2.118) -Problem: Not all make programs support "+=". (Charles Campbell) -Solution: Use a normal assignment. -Files: src/Makefile - -Patch 6.2.122 (after 6.2.119) -Problem: Not all shells can expand [^~]. File missing. (Guopeng Wen) -Solution: Use a simpler pattern. Add the Aap recipe for the maze program - and a clean version of the source code. -Files: Makefile, runtime/macros/maze/Makefile, - runtime/macros/maze/README.txt, runtime/macros/maze/main.aap, - runtime/macros/maze/mazeclean.c - -Patch 6.2.123 (after 6.2.118) -Problem: Running configure fails. (Tony Leneis) -Solution: Change "==" to "=" for a test. -Files: src/auto/configure, src/configure.in - -Patch 6.2.124 (after 6.2.121)(extra) -Problem: Mac: Recursive use of M4FLAGS causes problems. When running Vim - directly it can't find the runtime files. (Emily Jackson) - Using GNU constructs causes warnings with other make programs. - (Ronald Schild) -Solution: Use another name for the M4FLAGS variable. - Don't remove "Vim.app" from the path. - Update the explanation for compiling on the Mac. (Eric Kow) - Don't use $(shell ) and $(addprefix ). -Files: src/INSTALLmac.txt, src/Makefile, src/misc1.c - -Patch 6.2.125 (after 6.2.107) -Problem: The "winsock2.h" file isn't always available. -Solution: Don't include this header file. -Files: src/netbeans.c - -Patch 6.2.126 -Problem: Typing CTRL-C at a confirm() prompt doesn't throw an exception. -Solution: Reset "mapped_ctrl_c" in get_keystroke(), so that "got_int" is set - in _OnChar(). -Files: src/misc1.c - -Patch 6.2.127 (extra) -Problem: Win32 console: Typing CTRL-C doesn't throw an exception. -Solution: Set got_int immediately when CTRL-C is typed, don't wait for - mch_breakcheck() being called. -Files: src/os_win32.c - -Patch 6.2.128 (after 6.2.118) -Problem: src/auto/configure is not consistent with src/configure.in. -Solution: Use the newly generated configure script. -Files: src/auto/configure - -Patch 6.2.129 -Problem: When 'number' is set 'wrapmargin' does not work Vi-compatible. - (Yasuhiro Matsumoto) -Solution: Reduce the textwidth when 'number' is set. Also for 'foldcolumn' - and similar things. -Files: src/edit.c - -Patch 6.2.130 (extra) -Problem: Win32 console: When 'restorescreen' is not set exiting Vim causes - the screen to be cleared. (Michael A. Mangino) -Solution: Don't clear the screen when exiting and 'restorescreen' isn't set. -Files: src/os_win32.c - -Patch 6.2.131 (extra) -Problem: Win32: Font handles are leaked. -Solution: Free italic, bold and bold-italic handles before overwriting them. - (Michael Wookey) -Files: src/gui_w48.c - -Patch 6.2.132 (extra) -Problem: Win32: console version doesn't work on latest Windows Server 2003. -Solution: Copy 12000 instead of 15000 cells at a time to avoid running out - of memory. -Files: src/os_win32.c - -Patch 6.2.133 -Problem: When starting the GUI a bogus error message about 'imactivatekey' - may be given. -Solution: Only check the value of 'imactivatekey' when the GUI is running. -Files: src/gui.c, src/option.c - -Patch 6.2.134 (extra) -Problem: Win32: When scrolling parts of the window are redrawn when this - isn't necessary. -Solution: Only invalidate parts of the window when they are obscured by - other windows. (Michael Wookey) -Files: src/gui_w48.c - -Patch 6.2.135 -Problem: An item <> in the ":command" argument is interpreted as <args>. -Solution: Avoid that <> is recognized as <args>. -Files: src/ex_docmd.c - -Patch 6.2.136 -Problem: ":e ++enc=latin1 newfile" doesn't set 'fenc' when the file doesn't - exist. (Miroslaw Dobrzanski-Neumann) -Solution: Set 'fileencoding' to the specified encoding when editing a file - that does not exist. -Files: src/fileio.c - -Patch 6.2.137 -Problem: "d:cmd<CR>" cannot be repeated with ".". Breaks repeating "d%" - when using the matchit plugin. -Solution: Store the command to be repeated. This is restricted to - single-line commands. -Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/vim.h - -Patch 6.2.138 (extra) -Problem: Compilation problem on VMS with dynamic buffer on the stack. -Solution: Read one byte less than the size of the buffer, so that we can - check for the string length without an extra buffer. -Files: src/os_vms.c - -Patch 6.2.139 -Problem: Code is repeated in the two Perl files. -Solution: Move common code from if_perl.xs and if_perlsfio.c to vim.h. - Also fix a problem with generating prototypes. -Files: src/if_perl.xs, src/if_perlsfio.c, src/vim.h - -Patch 6.2.140 (after 6.2.121) -Problem: Mac: Compiling with Python and Perl doesn't work. -Solution: Adjust the configure check for Python to use "-framework Python" - for Python 2.3 on Mac OS/X. - Move "-ldl" after "DynaLoader.a" in the link command. - Change "perllibs" to "PERL_LIBS". -Files: src/auto/configure, src/configure.in, src/config.mk.in - -Patch 6.2.141 (extra) -Problem: Mac: The b_FSSpec field is sometimes unused. -Solution: Change the #ifdef to FEAT_CW_EDITOR and defined it in feature.h -Files: src/fileio.c, src/gui_mac.c, src/structs.h, src/feature.h - -Patch 6.2.142 (after 6.2.124) -Problem: Mac: building without GUI through configure doesn't work. - When the system is slow, unpacking the resource file takes too - long. -Solution: Don't always define FEAT_GUI_MAC when MACOS is defined, define it - in the Makefile. - Add a configure option to skip Darwin detection. - Use a Python script to unpack the resources to avoid a race - condition. (Taro Muraoka) -Files: Makefile, src/Makefile, src/auto/configure, src/configure.in, - src/dehqx.py, src/vim.h - -Patch 6.2.143 -Problem: Using "K" on Visually selected text doesn't work if it ends in - a multi-byte character. -Solution: Include all the bytes of the last character. (Taro Muraoka) -Files: src/normal.c - -Patch 6.2.144 -Problem: When "g:html_use_css" is set the HTML header generated by the - 2html script is wrong. -Solution: Add the header after adding HREF for links. - Also use ":normal!" instead of ":normal" to avoid mappings - getting in the way. -Files: runtime/syntax/2html.vim - -Patch 6.2.145 (after 6.2.139) -Problem: Undefining "bool" doesn't work for older systems. (Wojtek Pilorz) -Solution: Only undefine "bool" on Mac OS. -Files: src/vim.h - -Patch 6.2.146 -Problem: On some systems the prototype for iconv() is wrong, causing a - warning message. -Solution: Use a cast (void *) to avoid the warning. (Charles Campbell) -Files: src/fileio.c, src/mbyte.c - -Patch 6.2.147 -Problem: ":s/pat/\=col('.')" always replaces with "1". -Solution: Set the cursor to the start of the match before substituting. - (Helmut Stiegler) -Files: src/ex_cmds.c - -Patch 6.2.148 -Problem: Can't break an Insert into several undoable parts. -Solution: Add the CTRL-G u command. -Files: runtime/doc/insert.txt, src/edit.c - -Patch 6.2.149 -Problem: When the cursor is on a line past 21,474,748 the indicated - percentage of the position is invalid. With that many lines - "100%" causes a negative cursor line number, resulting in a crash. - (Daniel Goujot) -Solution: Divide by 100 instead of multiplying. Avoid overflow when - computing the line number for "100%". -Files: src/buffer.c, src/ex_cmds2.c, src/normal.c - -Patch 6.2.150 -Problem: When doing "vim - < file" lines are broken at NUL chars. - (Daniel Goujot) -Solution: Change NL characters back to NUL when reading from the temp - buffer. -Files: src/fileio.c - -Patch 6.2.151 -Problem: When doing "vim --remote +startinsert file" some commands are - inserted as text. (Klaus Bosau) -Solution: Put all the init commands in one Ex line, not using a <CR>, so - that Insert mode isn't started too early. -Files: src/main.c - -Patch 6.2.152 -Problem: The cursor() function doesn't reset the column offset for - 'virtualedit'. -Solution: Reset the offset to zero. (Helmut Stiegler) -Files: src/eval.c - -Patch 6.2.153 -Problem: Win32: ":lang german" doesn't use German messages. -Solution: Add a table to translate the Win32 language names to two-letter - language codes. -Files: src/ex_cmds2.c - -Patch 6.2.154 -Problem: Python bails out when giving a warning message. (Eugene - Minkovskii) -Solution: Set sys.argv[] to an empty string. -Files: src/if_python.c - -Patch 6.2.155 -Problem: Win32: Using ":tjump www" in a help file gives two results. - (Dave Roberts) -Solution: Ignore differences between slashes and backslashes when checking - for identical tag matches. -Files: src/tag.c - -Patch 6.2.156 (after 6.2.125) -Problem: Win32: Netbeans fails to build, EINTR is not defined. -Solution: Redefine EINTR to WSAEINTR. (Mike Williams) -Files: src/netbeans.c - -Patch 6.2.157 -Problem: Using "%p" in 'errorformat' gives a column number that is too - high. -Solution: Set the flag to use the number as a virtual column. (Lefteris - Koutsoloukas) -Files: src/quickfix.c - -Patch 6.2.158 -Problem: The sed command on Solaris and HPUX doesn't work for a line that - doesn't end in a newline. -Solution: Add a newline when feeding text to sed. (Mark Waggoner) -Files: src/configure.in, src/auto/configure - -Patch 6.2.159 -Problem: When using expression folding and 'foldopen' is "undo" an undo - command doesn't always open the fold. -Solution: Save and restore the KeyTyped variable when evaluating 'foldexpr'. - (Taro Muraoka) -Files: src/fold.c - -Patch 6.2.160 -Problem: When 'virtualedit' is "all" and 'selection is "exclusive", - selecting a double-width character below a single-width character - may cause a crash. -Solution: Avoid overflow on unsigned integer decrement. (Taro Muraoka) -Files: src/normal.c - -Patch 6.2.161 (extra) -Problem: VMS: Missing header file. Reading input busy loops. -Solution: Include termdef.h. Avoid the use of a wait function in - vms_read(). (Frank Ries) -Files: src/os_unix.h, src/os_vms.c - -Patch 6.2.162 -Problem: ":redraw" doesn't always display the text that includes the cursor - position, e.g. after ":call cursor(1, 0)". (Eugene Minkovskii) -Solution: Call update_topline() before redrawing. -Files: src/ex_docmd.c - -Patch 6.2.163 -Problem: "make install" may also copy AAPDIR directories. -Solution: Delete AAPDIR directories, just like CVS directories. -Files: src/Makefile - -Patch 6.2.164 (after 6.2.144) -Problem: When "g:html_use_css" is set the HTML header generated by the - 2html script is still wrong. -Solution: Search for a string instead of jumping to a fixed line number. - Go to the start of the line before inserting the header. - (Jess Thrysoee) -Files: runtime/syntax/2html.vim - -Patch 6.2.165 -Problem: The configure checks hang when using autoconf 2.57. -Solution: Invoke AC_PROGRAM_EGREP to set $EGREP. (Aron Griffis) -Files: src/auto/configure, src/configure.in - -Patch 6.2.166 -Problem: When $GZIP contains "-N" editing compressed files doesn't work - properly. -Solution: Add "-n" to "gzip -d" to avoid restoring the file name. (Oyvind - Holm) -Files: runtime/plugin/gzip.vim - -Patch 6.2.167 -Problem: The Python interface leaks memory when assigning lines to a - buffer. (Sergey Khorev) -Solution: Do not copy the line when calling ml_replace(). -Files: src/if_python.c - -Patch 6.2.168 -Problem: Python interface: There is no way to get the indices from a range - object. -Solution: Add the "start" and "end" attributes. (Maurice S. Barnum) -Files: src/if_python.c, runtime/doc/if_pyth.txt - -Patch 6.2.169 -Problem: The prototype for _Xmblen() appears in a recent XFree86 header - file, causing a warning for our prototype. (Hisashi T Fujinaka) -Solution: Move the prototype to an osdef file, so that it's filtered out. -Files: src/mbyte.c, src/osdef2.h.in - -Patch 6.2.170 -Problem: When using Sun WorkShop the current directory isn't changed to - where the file is. -Solution: Set the 'autochdir' option when using WorkShop. And avoid using - the basename when 'autochdir' is not set. -Files: src/gui_x11.c, src/ex_cmds.c - -Patch 6.2.171 (after 6.2.163) -Problem: The "-or" argument of "find" doesn't work for SysV systems. -Solution: Use "-o" instead. (Gordon Prieur) -Files: src/Makefile - -Patch 6.2.172 (after 6.2.169) -Problem: The prototype for _Xmblen() still causes trouble. -Solution: Include the X11 header file that defines the prototype. -Files: src/osdef2.h.in, src/osdef.sh - -Patch 6.2.173 (extra) -Problem: Win32: Ruby interface doesn't work with Ruby 1.8.0 for other - compilers than MSVC. -Solution: Fix the BC5, Cygwin and Mingw makefiles. (Dan Sharp) -Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak - -Patch 6.2.174 -Problem: After the ":intro" message only a mouse click in the last line - gets past the hit-return prompt. -Solution: Accept a click at or below the hit-return prompt. -Files: src/gui.c, src/message.c - -Patch 6.2.175 -Problem: Changing 'backupext' in a *WritePre autocommand doesn't work. - (William Natter) -Solution: Move the use of p_bex to after executing the *WritePre - autocommands. Also avoids reading allocated memory after freeing. -Files: src/fileio.c - -Patch 6.2.176 -Problem: Accented characters in translated help files are not handled - correctly. (Fabien Vayssiere) -Solution: Include "192-255" in 'iskeyword' for the help window. -Files: src/ex_cmds.c - -Patch 6.2.177 (extra) -Problem: VisVim: Opening a file with a space in the name doesn't work. (Rob - Retter) Arbitrary commands are being executed. (Neil Bird) -Solution: Put a backslash in front of every space in the file name. - (Gerard Blais) Terminate the CTRL-\ CTRL-N command with a NUL. -Files: src/VisVim/Commands.cpp, src/VisVim/VisVim.rc - -Patch 6.2.178 -Problem: People who don't know how to exit Vim try pressing CTRL-C. -Solution: Give a message how to exit Vim when CTRL-C is pressed and it - doesn't cancel anything. -Files: src/normal.c - -Patch 6.2.179 (extra) -Problem: The en_gb messages file isn't found on case sensitive systems. -Solution: Rename en_gb to en_GB. (Mike Williams) -Files: src/po/en_gb.po, src/po/en_GB.po, src/po/Make_ming.mak, - src/po/Make_mvc.mak, src/po/Makefile, src/po/README_mvc.txt - -Patch 6.2.180 -Problem: Compiling with GTK2 on Win32 doesn't work. -Solution: Include gdkwin32.h instead of gdkx.h. (Srinath Avadhanula) -Files: src/gui_gtk.c, src/gui_gtk_f.c, src/gui_gtk_x11.c, src/mbyte.c - -Patch 6.2.181 (after 6.2.171) -Problem: The "-o" argument of "find" has lower priority than the implied - "and" with "-print". -Solution: Add parenthesis around the "-o" expression. (Gordon Prieur) -Files: src/Makefile - -Patch 6.2.182 (after 6.2.094) -Problem: Compilation with tiny features fails because of missing - get_past_head() function. -Solution: Adjust the #ifdef for get_past_head(). -Files: src/misc1.c - -Patch 6.2.183 (after 6.2.178) -Problem: Warning for char/unsigned char mixup. -Solution: Use MSG() instead of msg(). (Tony Leneis) -Files: src/normal.c - -Patch 6.2.184 -Problem: With 'formatoptions' set to "1aw" inserting text may cause the - paragraph to be ended. (Alan Schmitt) -Solution: Temporarily add an extra space to make the paragraph continue - after moving the word after the cursor to the next line. - Also format when pressing Esc. -Files: src/edit.c, src/normal.c, src/proto/edit.pro - -Patch 6.2.185 -Problem: Restoring a session with zero-height windows does not work - properly. (Charles Campbell) -Solution: Accept a zero argument to ":resize" as intended. Add a window - number argument to ":resize" to be able to set the size of other - windows, because the current window cannot be zero-height. - Fix the explorer plugin to avoid changing the window sizes. Add - the winrestcmd() function for this. -Files: runtime/doc/eval.txt, runtime/plugin/explorer.vim, src/eval.c, - src/ex_cmds.h, src/ex_docmd.c, src/proto/window.pro, src/window.c - -Patch 6.2.186 (after 6.2.185) -Problem: Documentation file eval.txt contains examples without indent. -Solution: Insert the indent. Also fix other mistakes. -Files: runtime/doc/eval.txt - -Patch 6.2.187 -Problem: Using Insure++ reveals a number of bugs. (Dominuque Pelle) -Solution: Initialize variables where needed. Free allocated memory to avoid - leaks. Fix comparing tags to avoid reading past allocated memory. -Files: src/buffer.c, src/diff.c, src/fileio.c, src/mark.c, src/misc1.c, - src/misc2.c, src/ops.c, src/option.c, src/tag.c, src/ui.c - -Patch 6.2.188 (extra) -Problem: MS-Windows: Multi-byte characters in a filename cause trouble for - the window title. -Solution: Return when the wide function for setting the title did its work. -Files: src/gui_w48.c - -Patch 6.2.189 -Problem: When setting 'viminfo' after editing a new buffer its marks are - not stored. (Keith Roberts) -Solution: Set the "b_marks_read" flag when skipping to read marks from the - viminfo file. -Files: src/fileio.c - -Patch 6.2.190 -Problem: When editing a compressed files, marks are lost. -Solution: Add the ":lockmarks" modifier and use it in the gzip plugin. - Make exists() also check for command modifiers, so that the - existence of ":lockmarks" can be checked for. - Also add ":keepmarks" to avoid that marks are deleted when - filtering text. - When deleting lines put marks 'A - 'Z and '0 - '9 at the first - deleted line instead of clearing the mark. They were kept in the - viminfo file anyway. - Avoid that the gzip plugin puts deleted text in registers. -Files: runtime/doc/motion.txt, runtime/plugin/gzip.vim, src/ex_cmds.c, - src/ex_docmd.c, src/mark.c, src/structs.h - -Patch 6.2.191 -Problem: The intro message is outdated. Information about sponsoring and - registering is missing. -Solution: Show info about sponsoring and registering Vim in the intro - message now and then. Add help file about sponsoring. -Files: runtime/doc/help.txt, runtime/doc/sponsor.txt, runtime/doc/tags, - runtime/menu.vim, src/version.c - -Patch 6.2.192 -Problem: Using CTRL-T and CTRL-D with "gR" messes up the text. (Jonahtan - Hankins) -Solution: Avoid calling change_indent() recursively. -Files: src/edit.c - -Patch 6.2.193 -Problem: When recalling a search pattern from the history from a ":s,a/c," - command the '/' ends the search string. (JC van Winkel) -Solution: Store the separator character with the history entries. Escape - characters when needed, replace the old separator with the new one. - Also fixes that recalling a "/" search for a "?" command messes up - trailing flags. -Files: src/eval.c, src/ex_getln.c, src/normal.c, src/proto/ex_getln.pro, - src/search.c, src/tag.c - -Patch 6.2.194 (after 6.2.068) -Problem: For NetBeans, instead of writing the file and sending an event - about it, tell NetBeans to write the file. -Solution: Add the "save" command, "netbeansBuffer" command and - "buttonRelease" event to the netbeans protocol. Updated the - interface to version 2.2. (Gordon Prieur) - Also: open a fold when the cursor has been positioned. - Also: fix memory leak, free result of nb_quote(). -Files: runtime/doc/netbeans.txt, src/fileio.c, src/netbeans.c, - src/normal.c, src/proto/netbeans.pro, src/structs.h - -Patch 6.2.195 (after 6.2.190) -Problem: Compiling fails for missing CPO_REMMARK symbol. -Solution: Add the patch I forgot to include... -Files: src/option.h - -Patch 6.2.196 (after 6.2.191) -Problem: Rebuilding the documentation doesn't use the sponsor.txt file. -Solution: Add sponsor.txt to the Makefile. (Christian J. Robinson) -Files: runtime/doc/Makefile - -Patch 6.2.197 -Problem: It is not possible to force a redraw of status lines. (Gary - Johnson) -Solution: Add the ":redrawstatus" command. -Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, - src/screen.c - -Patch 6.2.198 -Problem: A few messages are not translated. (Ernest Adrogue) -Solution: Mark the messages to be translated. -Files: src/ex_cmds.c - -Patch 6.2.199 (after 6.2.194) -Problem: Vim doesn't work perfectly well with NetBeans. -Solution: When NetBeans saves the file, reset the timestamp to avoid "file - changed" warnings. Close a buffer in a proper way. Don't try - giving a debug message with an invalid pointer. Send a - newDotAndMark message when needed. Report a change by the "r" - command to NetBeans. (Gordon Prieur) -Files: src/netbeans.c, src/normal.c - -Patch 6.2.200 -Problem: When recovering a file, 'fileformat' is always the default, thus - writing the file may result in differences. (Penelope Fudd) -Solution: Before recovering the file try reading the original file to obtain - the values of 'fileformat', 'fileencoding', etc. -Files: src/memline.c - -Patch 6.2.201 -Problem: When 'autowriteall' is set ":qall" still refuses to exit if there - is a modified buffer. (Antoine Mechelynck) -Solution: Attempt writing modified buffers as intended. -Files: src/ex_cmds2.c - -Patch 6.2.202 -Problem: Filetype names of CHILL and ch script are confusing. -Solution: Rename "ch" to "chill" and "chscript" to "ch". -Files: runtime/filetype.vim, runtime/makemenu.vim, runtime/synmenu.vim - runtime/syntax/ch.vim, runtime/syntax/chill.vim - -Patch 6.2.203 -Problem: With characterwise text that has more than one line, "3P" works - wrong. "3p" has the same problem. There also is a display - problem. (Daniel Goujot) -Solution: Perform characterwise puts with a count in the right position. -Files: src/ops.c - -Patch 6.2.204 (after 6.2.086) -Problem: "]]" in a file with closed folds moves to the end of the file. - (Nam SungHyun) -Solution: Find one position in each closed fold, then move to after the fold. -Files: src/search.c - -Patch 6.2.205 (extra) -Problem: MS-Windows: When the taskbar is at the left or top of the screen, - the Vim window placement is wrong. -Solution: Compute the size and position of the window correctly. (Taro - Muraoka) -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.2.206 -Problem: Multi-byte characters cannot be used as hotkeys in a console - dialog. (Mattias Erkisson) -Solution: Handle multi-byte characters properly. Also put () or [] around - default hotkeys. -Files: src/message.c, src/macros.h - -Patch 6.2.207 -Problem: When 'encoding' is a multi-byte encoding, expanding an - abbreviation that starts where insertion started results in - characters before the insertion to be deleted. (Xiangjiang Ma) -Solution: Stop searching leftwards for the start of the word at the position - where insertion started. -Files: src/getchar.c - -Patch 6.2.208 -Problem: When using fold markers, three lines in a row have the start - marker and deleting the first one with "dd", a nested fold is not - deleted. (Kamil Burzynski) - Using marker folding, a level 1 fold doesn't stop when it is - followed by "{{{2", starting a level 2 fold. -Solution: Don't stop updating folds at the end of a change when the nesting - level of folds is larger than the fold level. - Correctly compute the number of folds that start at "{{{2". - Also avoid a crash for a NULL pointer. -Files: src/fold.c - -Patch 6.2.209 -Problem: A bogus fold is created when using "P" while the cursor is in the - middle of a closed fold. (Kamil Burzynski) -Solution: Correct the line number where marks are modified for closed folds. -Files: src/ops.c - -Patch 6.2.210 (extra) -Problem: Mac OSX: antialiased fonts are not supported. -Solution: Add the 'antialias' option to switch on antialiasing on Mac OSX - 10.2 and later. (Peter Cucka) -Files: runtime/doc/options.txt, src/gui_mac.c, src/option.h, src/option.c - -Patch 6.2.211 (extra) -Problem: Code for handling file dropped on Vim is duplicated. -Solution: Move the common code to gui_handle_drop(). - Add code to drop the files in the window under the cursor. - Support drag&drop on the Macintosh. (Taro Muraoka) - When dropping a directory name edit that directory (using the - explorer plugin) - Fix that changing directory with Shift pressed didn't work for - relative path names. -Files: src/fileio.c, src/gui.c, src/gui_gtk_x11.c, src/gui_mac.c, - src/gui_w48.c, src/proto/fileio.pro, src/proto/gui.pro - -Patch 6.2.212 (after 6.2.199) -Problem: NetBeans: Replacing with a count is not handled correctly. -Solution: Move reporting the change outside of the loop for the count. - (Gordon Prieur) -Files: src/normal.c - -Patch 6.2.213 (after 6.2.208) -Problem: Using marker folding, "{{{1" doesn't start a new fold when already - at fold level 1. (Servatius Brandt) -Solution: Correctly compute the number of folds that start at "{{{1". -Files: src/fold.c - -Patch 6.2.214 (after 6.2.211) (extra) -Problem: Warning for an unused variable. -Solution: Delete the declaration. (Bill McCarthy) -Files: src/gui_w48.c - -Patch 6.2.215 -Problem: NetBeans: problems saving an unmodified file. -Solution: Add isNetbeansModified() function. Disable netbeans_unmodified(). - (Gordon Prieur) -Files: src/fileio.c, src/netbeans.c, src/proto/netbeans.pro, - runtime/doc/netbeans.txt, runtime/doc/tags - -Patch 6.2.216 (after 6.2.206) -Problem: Multi-byte characters stil cannot be used as hotkeys in a console - dialog. (Mattias Erkisson) -Solution: Make get_keystroke() handle multi-byte characters. -Files: src/misc1.c - -Patch 6.2.217 -Problem: GTK: setting the title doesn't always work correctly. -Solution: Invoke gui_mch_settitle(). (Tomas Stehlik) -Files: src/os_unix.c - -Patch 6.2.218 -Problem: Warning for function without prototype. -Solution: Add argument types to the msgCB field of the BalloonEval struct. -Files: src/gui_beval.h - -Patch 6.2.219 -Problem: Syntax highlighting hangs on an empty match of an item with a - nextgroup. (Charles Campbell) -Solution: Remember that the item has already matched and don't match it - again at the same position. -Files: src/syntax.c - -Patch 6.2.220 -Problem: When a Vim server runs in a console a remote command isn't handled - before a key is typed. (Joshua Neuheisel) -Solution: Don't try reading more input when a client-server command has been - received. -Files: src/os_unix.c - -Patch 6.2.221 -Problem: No file name completion for ":cscope add". -Solution: Add the XFILE flag to ":cscope". (Gary Johnson) -Files: src/ex_cmds.h - -Patch 6.2.222 -Problem: Using "--remote" several times on a row only opens some of the - files. (Dany St-Amant) -Solution: Don't delete all typehead when the server receives a command from - a client, only delete typed characters. -Files: src/main.c - -Patch 6.2.223 -Problem: Cscope: Avoid a hang when cscope waits for a response while Vim - waits for a prompt. - Error messages from Cscope mess up the display. -Solution: Detect the hit-enter message and respond by sending a return - character to cscope. (Gary Johnson) - Use EMSG() and strerror() when possible. Replace perror() with - PERROR() everywhere, add emsg3(). -Files: src/diff.c, src/if_cscope.c, src/integration.c, src/message.c, - src/proto/message.pro, src/misc2.c, src/netbeans.c, src/vim.h - -Patch 6.2.224 -Problem: Mac: Can't compile with small features. (Axel Kielhorn) -Solution: Also include vim_chdirfile() when compiling for the Mac. -Files: src/misc2.c - -Patch 6.2.225 -Problem: NetBeans: Reported modified state isn't exactly right. -Solution: Report a file being modified in the NetBeans way. -Files: src/netbeans.c - -Patch 6.2.226 (after 6.2.107) (extra) -Problem: The "ws2-32.lib" file isn't always available. -Solution: Use "WSock32.lib" instead. (Taro Muraoka, Dan Sharp) -Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak - -Patch 6.2.227 (extra) -Problem: The "PC" symbol is defined but not used anywhere. -Solution: Remove "-DPC" from the makefiles. -Files: src/Make_bc3.mak, src/Make_bc5.mak, src/Make_cyg.mak, - src/Make_ming.mak - -Patch 6.2.228 -Problem: Receiving CTRL-\ CTRL-N after typing "f" or "m" doesn't switch Vim - back to Normal mode. Same for CTRL-\ CTRL-G. -Solution: Check if the character typed after a command is CTRL-\ and obtain - another character to check for CTRL-N or CTRL-G, waiting up to - 'ttimeoutlen' msec. -Files: src/normal.c - -Patch 6.2.229 -Problem: ":function" with a name that uses magic curlies does not work - inside a function. (Servatius Brandt) -Solution: Skip over the function name properly. -Files: src/eval.c - -Patch 6.2.230 (extra) -Problem: Win32: a complex pattern may cause a crash. -Solution: Use __try and __except to catch the exception and handle it - gracefully, when possible. Add myresetstkoflw() to reset the - stack overflow. (Benjamin Peterson) -Files: src/Make_bc5.mak, src/os_mswin.c src/os_win32.c, src/os_win32.h, - src/proto/os_win32.pro, src/regexp.c - -Patch 6.2.231 (after 6.2.046) -Problem: Various problems when an error exception is raised from within a - builtin function. When it is invoked while evaluating arguments - to a function following arguments are still evaluated. When - invoked with a line range it will be called for remaining lines. -Solution: Update "force_abort" also after calling a builtin function, so - that aborting() always returns the correct value. (Servatius - Brandt) -Files: src/eval.c, src/ex_eval.c, src/proto/ex_eval.pro, - src/testdir/test49.ok, src/testdir/test49.vim - -Patch 6.2.232 -Problem: ":python vim.command('python print 2*2')" crashes Vim. (Eugene - Minkovskii) -Solution: Disallow executing a Python command recursively and give an error - message. -Files: src/if_python.c - -Patch 6.2.233 -Problem: On Mac OSX adding -pthread for Python only generates a warning. - The test for Perl threads rejects Perl while it's OK. - Tcl doesn't work at all. - The test for Ruby fails if ruby exists but there are no header - files. The Ruby library isn't detected properly -Solution: Avoid adding -pthread on Mac OSX. Accept Perl threads when it's - not the 5.5 threads. - Use the Tcl framework for header files. For Ruby rename cWindow - to cVimWindow to avoid a name clash. (Ken Scott) - Only enable Ruby when the header files can be found. Use "-lruby" - instead of "libruby.a" when it can't be found. -Files: src/auto/configure, src/configure.in, src/if_ruby.c - -Patch 6.2.234 -Problem: GTK 2 GUI: ":sp" and the ":q" leaves the cursor on the command - line. -Solution: Flush output before removing scrollbars. Also do this in other - places where gui_mch_*() functions are invoked. -Files: src/ex_cmds.c, src/option.c, src/window.c - -Patch 6.2.235 (extra) -Problem: Win32: Cursor isn't removed with a 25x80 window and doing: - "1830ia<Esc>400a-<Esc>0w0". (Yasuhiro Matsumoto) -Solution: Remove the call to gui_undraw_cursor() from gui_mch_insert_lines(). -Files: src/gui_w48.c - -Patch 6.2.236 -Problem: Using gvim with Agide gives "connection lost" error messages. -Solution: Only give the "connection lost" message when the buffer was once - owned by NetBeans. -Files: src/netbeans.c, src/structs.h - -Patch 6.2.237 -Problem: GTK 2: Thai text is drawn wrong. It changes when moving the - cursor over it. -Solution: Disable the shaping engine, it moves combining characters to a - wrong position and combines characters, while drawing the cursor - doesn't combine characters. -Files: src/gui_gtk_x11.c - -Patch 6.2.238 (after 6.2.231) -Problem: ":function" does not work inside a while loop. (Servatius Brandt) -Solution: Add get_while_line() and pass it to do_one_cmd() when in a while - loop, so that all lines are stored and can be used again when - repeating the loop. - Adjust test 49 so that it checks for the fixed problems. - (Servatius Brandt) -Files: src/digraph.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, - src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro, - src/testdir/test49.in, src/testdir/test49.ok, - src/testdir/test49.vim - -Patch 6.2.239 -Problem: GTK 2: With closed folds the arrow buttons of a vertical scrollbar - often doesn't scroll. (Moshe Kaminsky) -Solution: Hackish solution: Detect that the button was pressed from the - mouse pointer position. -Files: src/gui_gtk.c, src/gui.c - -Patch 6.2.240 -Problem: GTK 2: Searching for bitmaps for the toolbar doesn't work as with - other systems. Need to explicitly use "icon=name". (Ned Konz, - Christian J. Robinson) -Solution: Search for icons like done for Motif. -Files: src/gui_gtk.c - -Patch 6.2.241 -Problem: GTK 2: Search and Search/Replace dialogs are synced, that makes no - sense. Buttons are sometimes greyed-out. (Jeremy Messenger) -Solution: Remove the code to sync the two dialogs. Adjust the code to react - to an empty search string to also work for GTK2. (David Necas) -Files: src/gui_gtk.c - -Patch 6.2.242 -Problem: Gnome: "vim --help" only shows the Gnome arguments, not the Vim - arguments. -Solution: Don't let the Gnome code remove the "--help" argument and don't - exit at the end of usage(). -Files: src/gui_gtk_x11.c, src/main.c - -Patch 6.2.243 (extra) -Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt. -Solution: Move the dropped files to the global argument list, instead of the - usual drop handling. (Eckehard Berns) -Files: src/main.c, src/gui_mac.c - -Patch 6.2.244 -Problem: ':echo "\xf7"' displays the illegal byte as if it was a character - and leaves "cho" after it. -Solution: When checking the length of a UTF-8 byte sequence and it's shorter - than the number of bytes available, assume it's an illegal byte. -Files: src/mbyte.c - -Patch 6.2.245 -Problem: Completion doesn't work for ":keepmarks" and ":lockmarks". -Solution: Add the command modifiers to the table of commands. (Madoka - Machitani) -Files: src/ex_cmds.h, src/ex_docmd.c - -Patch 6.2.246 -Problem: Mac: Starting Vim from Finder doesn't show error messages. -Solution: Recognize that output is being displayed by stderr being - "/dev/console". (Eckehard Berns) -Files: src/main.c, src/message.c - -Patch 6.2.247 (after 6.2.193) -Problem: When using a search pattern from the viminfo file the last - character is replaced with a '/'. -Solution: Store the separator character in the right place. (Kelvin Lee) -Files: src/ex_getln.c - -Patch 6.2.248 -Problem: GTK: When XIM is enabled normal "2" and keypad "2" cannot be - distinguished. -Solution: Detect that XIM changes the keypad key to the expected ASCII - character and fall back to the non-XIM code. (Neil Bird) -Files: src/gui_gtk_x11.c, src/mbyte.c, src/proto/mbyte.pro - -Patch 6.2.249 -Problem: ":cnext" moves to the error in the next file, but there is no - method to go back. -Solution: Add ":cpfile" and ":cNfile". -Files: src/ex_cmds.h, src/quickfix.c, src/vim.h, runtime/doc/quickfix.txt - -Patch 6.2.250 -Problem: Memory leaks when using signs. (Xavier de Gaye) -Solution: Delete the list of signs when unloading a buffer. -Files: src/buffer.c - -Patch 6.2.251 -Problem: GTK: The 'v' flag in 'guioptions' doesn't work. (Steve Hall) - Order of buttons is reversed for GTK 2.2.4. Don't always get - focus back after handling a dialog. -Solution: Make buttons appear vertically when desired. Reverse the order in - which buttons are added to a dialog. Move mouse pointer around - when the dialog is done and we don't have focus. -Files: src/gui_gtk.c - -Patch 6.2.252 (extra, after 6.2.243) -Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt for - Mac OS classic. -Solution: Remove the #ifdef from the code that fixes it for Mac OSX. -Files: src/gui_mac.c - -Patch 6.2.253 -Problem: When 'tagstack' is not set a ":tag id" command does not work after - a ":tjump" command. -Solution: Set "new_tag" when 'tagstack' isn't set. (G. Narendran) -Files: src/tag.c - -Patch 6.2.254 -Problem: May run out of space for error messages. -Solution: Keep room for two more bytes. -Files: src/quickfix.c - -Patch 6.2.255 -Problem: GTK: A new item in the popup menu is put just after instead of - just before the right item. (Gabriel Zachmann) -Solution: Don't increment the menu item index. -Files: src/gui_gtk.c - -Patch 6.2.256 -Problem: Mac: "macroman" encoding isn't recognized, need to use - "8bit-macroman. -Solution: Recognize "macroman" with an alias "mac". (Eckehard Berns) -Files: src/mbyte.c - -Patch 6.2.257 (after 6.2.250) -Problem: Signs are deleted for ":bdel", but they could still be useful. -Solution: Delete signs only for ":bwipe". -Files: src/buffer.c - -Patch 6.2.258 -Problem: GUI: can't disable (grey-out) a popup menu item. (Ajit Thakkar) -Solution: Loop over the popup menus for all modes. -Files: src/menu.c - -Patch 6.2.259 -Problem: If there are messages when exiting, on the console there is a - hit-enter prompt while the message can be read; in the GUI the - message may not be visible. -Solution: Use the hit-enter prompt when there is an error message from - writing the viminfo file or autocommands, or when there is any - output in the GUI and 'verbose' is set. Don't use a hit-enter - prompt for the non-GUI version unless there is an error message. -Files: src/main.c - -Patch 6.2.260 -Problem: GTK 2: Can't quit a dialog with <Esc>. - GTK 1 and 2: <Enter> always gives a result, even when the default - button has been disabled. -Solution: Handle these keys explicitly. When no default button is specified - use the first one (works mostly like it was before). -Files: src/gui_gtk.c - -Patch 6.2.261 -Problem: When 'autoindent' and 'cindent' are set and a line is recognized - as a comment, starting a new line won't do 'cindent' formatting. -Solution: Also use 'cindent' formatting for lines that are used as a - comment. (Servatius Brandt) -Files: src/misc1.c - -Patch 6.2.262 -Problem: 1 CTRL-W w beeps, even though going to the first window is - possible. (Charles Campbell) -Solution: Don't beep. -Files: src/window.c - -Patch 6.2.263 -Problem: Lint warnings: Duplicate function prototypes, duplicate macros, - use of a zero character instead of a zero pointer, unused - variable. Clearing allocated memory in a complicated way. -Solution: Remove the function prototypes from farsi.h. Remove the - duplicated lines in keymap.h. Change getvcol() argument from NUL - to NULL. Remove the "col" variable in regmatch(). Use - lalloc_clear() instead of lalloc(). (Walter Briscoe) -Files: src/farsi.h, src/keymap.h, src/ops.c, src/regexp.c, src/search.c - -Patch 6.2.264 (after 6.2.247) -Problem: Writing past allocated memory when using a command line from the - viminfo file. -Solution: Store the NUL in the right place. -Files: src/ex_getln.c - -Patch 6.2.265 -Problem: Although ":set" is not allowed in the sandbox, ":let &opt = val" - works. -Solution: Do allow changing options in the sandbox, but not the ones that - can't be changed from a modeline. -Files: src/ex_cmds.h, src/options.c - -Patch 6.2.266 -Problem: When redirecting output and using ":silent", line breaks are - missing from output of ":map" and ":tselect". Alignment of - columns is wrong. -Solution: Insert a line break where "msg_didout" was tested. Update msg_col - when redirecting and using ":silent". -Files: src/getchar.c, src/message.c - -Patch 6.2.267 (extra) -Problem: Win32: "&&" in a tearoff menu is not shown. (Luc Hermitte) -Solution: Use the "name" item from the menu instead of the "dname" item. -Files: src/gui_w32.c, src/menu.c - -Patch 6.2.268 -Problem: GUI: When changing 'guioptions' part of the window may be off - screen. (Randall Morris) -Solution: Adjust the size of the window when changing 'guioptions', but only - when adding something. -Files: src/gui.c - -Patch 6.2.269 -Problem: Diff mode does not highlight a change in a combining character. - (Raphael Finkel) -Solution: Make diff_find_change() multi-byte aware: find the start byte of - a character that contains a change. -Files: src/diff.c - -Patch 6.2.270 -Problem: Completion in Insert mode, then repeating with ".", doesn't handle - composing characters in the completed text. (Raphael Finkel) -Solution: Don't skip over composing chars when adding completed text to the - redo buffer. -Files: src/getchar.c - -Patch 6.2.271 -Problem: NetBeans: Can't do "tail -f" on the log. Passing socket info with - an argument or environment variable is not secure. -Solution: Wait after initializing the log. Allow passing the socket info - through a file. (Gordon Prieur) -Files: runtime/doc/netbeans.txt, src/main.c, src/netbeans.c - -Patch 6.2.272 -Problem: When the "po" directory exists, but "po/Makefile" doesn't, - building fails. Make loops when the "po" directory has been - deleted after running configure. -Solution: Check for the "po/Makefile" instead of just the "po" directory. - Check this again before trying to run make with that Makefile. -Files: src/auto/configure, src/configure.in, src/Makefile - -Patch 6.2.273 -Problem: Changing the sort order in an explorer window for an empty - directory produces error messages. (Doug Kearns) -Solution: When an invalid range is used for a function that is not going to - be executed, skip over the arguments anyway. -Files: src/eval.c - -Patch 6.2.274 -Problem: ":print" skips empty lines when 'list' is set and there is no - "eol" in 'listchars'. (Yakov Lerner) -Solution: Skip outputting a space for an empty line only when 'list' is set - and the end-of-line character is not empty. -Files: src/message.c - -Patch 6.2.275 (extra, after 6.2.267) -Problem: Warning for uninitialized variable when using gcc. -Solution: Initialize "acLen" to zero. (Bill McCarthy) -Files: src/gui_w32.c - -Patch 6.2.276 -Problem: ":echo X()" does not put a line break between the message that X() - displays and the text that X() returns. (Yakov Lerner) -Solution: Invoke msg_start() after evaluating the argument. -Files: src/eval.c - -Patch 6.2.277 -Problem: Vim crashes when a ":runtime ftplugin/ada.vim" causes a recursive - loop. (Robert Nowotniak) -Solution: Restore "msg_list" before returning from do_cmdline(). -Files: src/ex_docmd.c - -Patch 6.2.278 -Problem: Using "much" instead of "many". -Solution: Correct the error message. -Files: src/eval.c - -Patch 6.2.279 -Problem: There is no default choice for a confirm() dialog, now that it is - possible not to have a default choice. -Solution: Make the first choice the default choice. -Files: runtime/doc/eval.txt, src/eval.c - -Patch 6.2.280 -Problem: "do" and ":diffget" don't work in the first line and the last line - of a buffer. (Aron Griffis) -Solution: Find a difference above the first line and below the last line. - Also fix a few display updating bugs. -Files: src/diff.c, src/fold.c, src/move.c - -Patch 6.2.281 -Problem: PostScript printing doesn't work on Mac OS X 10.3.2. -Solution: Adjust the header file. (Mike Williams) -Files: runtime/print/prolog.ps - -Patch 6.2.282 -Problem: When using CTRL-O to go back to a help file, it becomes listed. - (Andrew Nesbit) - Using ":tag" or ":tjump" in a help file doesn't keep the help file - settings (e.g. for 'iskeyword'). -Solution: Don't mark a buffer as listed when its help flag is set. Put all - the option settings for a help buffer together in do_ecmd(). -Files: src/ex_cmds.c - -Patch 6.2.283 -Problem: The "local additions" in help.txt are used without conversion, - causing latin1 characters showing up wrong when 'enc' is utf-8. - (Antoine J. Mechelynck) -Solution: Convert the text to 'encoding'. -Files: src/ex_cmds.c - -Patch 6.2.284 -Problem: Listing a function puts "endfunction" in the message history. - Typing "q" at the more prompt isn't handled correctly when listing - variables and functions. (Hara Krishna Dara) -Solution: Don't use msg() for "endfunction". Check "got_int" regularly. -Files: src/eval.c - -Patch 6.2.285 -Problem: GUI: In a single wrapped line that fills the window, "gj" in the - last screen line leaves the cursor behind. (Ivan Tarasov) -Solution: Undraw the cursor before scrolling the text up. -Files: src/gui.c - -Patch 6.2.286 -Problem: When trying to rename a file and it doesn't exist, the destination - file is deleted anyway. (Luc Deux) -Solution: Don't delete the destination when the source doesn't exist. (Taro - Muraoka) -Files: src/fileio.c - -Patch 6.2.287 (after 6.2.264) -Problem: Duplicate lines are added to the viminfo file. -Solution: Compare with existing entries without an offset. Also fixes - reading very long history lines from viminfo. -Files: src/ex_getln.c - -Patch 6.2.288 (extra) -Problem: Mac: An external program can't be interrupted. -Solution: Don't use the 'c' key for backspace. (Eckehard Berns) -Files: src/gui_mac.c - -Patch 6.2.289 -Problem: Compiling the Tcl interface with thread support causes ":make" to - fail. (Juergen Salk) -Solution: Use $TCL_DEFS from the Tcl config script to obtain the required - compile flags for using the thread library. -Files: src/auto/configure, src/configure.in - -Patch 6.2.290 (extra) -Problem: Mac: The mousewheel doesn't work. -Solution: Add mousewheel support. Also fix updating the thumb after a drag - and then using another way to scroll. (Eckehard Berns) -Files: src/gui_mac.c - -Patch 6.2.291 (extra) -Problem: Mac: the plus button and close button don't do anything. -Solution: Make the plus button maximize the window and the close button - close Vim. (Eckehard Berns) -Files: src/gui.c, src/gui_mac.c - -Patch 6.2.292 -Problem: Motif: When removing GUI arguments from argv[] a "ps -ef" shows - the last argument repeated. -Solution: Set argv[argc] to NULL. (Michael Jarvis) -Files: src/gui_x11.c - -Patch 6.2.293 (after 6.2.255) -Problem: GTK: A new item in a menu is put before the tearoff item. -Solution: Do increment the menu item index for non-popup menu items. -Files: src/gui_gtk.c - -Patch 6.2.294 (extra) -Problem: Mac: Cannot use modifiers with Space, Tab, Enter and Escape. -Solution: Handle all modifiers for these keys. (Eckehard Berns) -Files: src/gui_mac.c - -Patch 6.2.295 -Problem: When in debug mode, receiving a message from a remote client - causes a crash. Evaluating an expression causes Vim to wait for - "cont" to be typed, without a prompt. (Hari Krishna Dara) -Solution: Disable debugging when evaluating an expression for a client. - (Michael Geddes) Don't try reading into the typehead buffer when - it may have been filled in another way. -Files: src/ex_getln.c, src/getchar.c, src/if_xcmdsrv.c, src/main.c, - src/misc1.c, src/proto/getchar.pro, src/proto/main.pro, - src/proto/os_unix.pro, src/proto/ui.pro, src/structs.h, - src/os_unix.c, src/ui.c - -Patch 6.2.296 (extra) -Problem: Same as 6.2.295. -Solution: Extra files for patch 6.2.295. -Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_win32.c, - src/proto/os_amiga.pro, src/proto/os_msdos.pro, - src/proto/os_riscos.pro, src/proto/os_win32.pro - -Patch 6.2.297 (after 6.2.232) -Problem: Cannot invoke Python commands recursively. -Solution: With Python 2.3 and later use the available mechanisms to invoke - Python recursively. (Matthew Mueller) -Files: src/if_python.c - -Patch 6.2.298 -Problem: A change always sets the '. mark and an insert always sets the '^ - mark, even when this is not wanted. - Cannot go back to the position of older changes without undoing - those changes. -Solution: Add the ":keepjumps" command modifier. - Add the "g," and "g;" commands. -Files: runtime/doc/motion.txt, src/ex_cmds.h, src/ex_docmd.c, src/edit.c, - src/mark.c, src/misc1.c, src/normal.c, src/proto/mark.pro, - src/structs.h, src/undo.c - -Patch 6.2.299 -Problem: Can only use one language for help files. -Solution: Add the 'helplang' option to select the preferred language(s). - Make ":helptags" generate tags files for all languages. -Files: runtime/doc/options.txt, runtime/doc/various.txt, src/Makefile, - src/ex_cmds.c, src/ex_cmds2.c, src/ex_cmds.h, src/ex_getln.c, - src/normal.c, src/option.c, src/option.h, src/proto/ex_cmds.pro, - src/proto/ex_cmds2.pro, src/proto/option.pro, src/structs.h, - src/tag.c, src/vim.h - -Patch 6.2.300 (after 6.2.297) -Problem: Cannot build Python interface with Python 2.2 or earlier. -Solution: Add a semicolon. -Files: src/if_python.c - -Patch 6.2.301 -Problem: The "select all" item from the popup menu doesn't work for Select - mode. -Solution: Use the same commands as for the "Edit.select all" menu. - (Benji Fisher) -Files: runtime/menu.vim - -Patch 6.2.302 -Problem: Using "CTRL-O ." in Insert mode doesn't work properly. (Benji - Fisher) -Solution: Restore "restart_edit" after an insert command that was not typed. - Avoid waiting with displaying the mode when there is no text to be - overwritten. - Fix that "CTRL-O ." sometimes doesn't put the cursor back after - the end-of-line. Only reset the flag that CTRL-O was used past - the end of the line when restarting editing. Update "o_lnum" - number when inserting text and "o_eol" is set. -Files: src/edit.c, src/normal.c - -Patch 6.2.303 -Problem: Cannot use Unicode digraphs while 'encoding' is not Unicode. -Solution: Convert the character from Unicode to 'encoding' when needed. - Use the Unicode digraphs for the Macintosh. (Eckehard Berns) -Files: src/digraph.c - -Patch 6.2.304 (extra, after 6.2.256) -Problem: Mac: No proper support for 'encoding'. Conversion without iconv() - is not possible. -Solution: Convert input from 'termencoding' to 'encoding'. Add - mac_string_convert(). Convert text for the clipboard when needed. - (Eckehard Berns) -Files: src/gui_mac.c, src/mbyte.c, src/structs.h, src/vim.h - -Patch 6.2.305 (after 6.2.300) -Problem: Win32: Cannot build Python interface with Python 2.3. (Ajit - Thakkar) -Solution: Add two functions to the dynamic loading feature. -Files: src/if_python.c - -Patch 6.2.306 (extra) -Problem: Win32: Building console version with BCC 5.5 gives a warning for - get_cmd_args() prototype missing. (Ajit Thakkar) -Solution: Don't build os_w32exe.c for the console version. -Files: src/Make_bc5.mak - -Patch 6.2.307 (after 6.2.299) -Problem: Installing help files fails. -Solution: Expand wildcards for translated help files separately. -Files: src/Makefile - -Patch 6.2.308 -Problem: Not all systems have "whoami", resulting in an empty user name. -Solution: Use "logname" when possible, "whoami" otherwise. (David Boyce) -Files: src/Makefile - -Patch 6.2.309 -Problem: "3grx" waits for two ESC to be typed. (Jens Paulus) -Solution: Append the ESC to the stuff buffer when redoing the "gr" insert. -Files: src/edit.c - -Patch 6.2.310 -Problem: When setting 'undolevels' to -1, making a change and setting - 'undolevels' to a positive value an "undo list corrupt" error - occurs. (Madoka Machitani) -Solution: Sync undo before changing 'undolevels'. -Files: src/option.c - -Patch 6.2.311 (after 6.2.298) -Problem: When making several changes in one line the changelist grows - quickly. There is no error message for reaching the end of the - changelist. Reading changelist marks from viminfo doesn't work - properly. -Solution: Only make a new entry in the changelist when making a change in - another line or 'textwidth' columns away. Add E662, E663 and E664 - error messages. Put a changelist mark from viminfo one position - before the end. -Files: runtime/doc/motion.txt, src/mark.c, src/misc1.c, src/normal.c - -Patch 6.2.312 (after 6.2.299) -Problem: "make install" clears the screen when installing the docs. -Solution: Execute ":helptags" in silent mode. -Files: runtime/doc/Makefile - -Patch 6.2.313 -Problem: When opening folds in a diff window, other diff windows no longer - show the same text. -Solution: Sync the folds in diff windows. -Files: src/diff.c, src/fold.c, src/move.c, src/proto/diff.pro, - src/proto/move.pro - -Patch 6.2.314 -Problem: When 'virtualedit' is set "rx" may cause a crash with a blockwise - selection and using "$". (Moritz Orbach) -Solution: Don't try replacing chars in a line that has no characters in the - block. -Files: src/ops.c - -Patch 6.2.315 -Problem: Using CTRL-C in a Visual mode mapping while 'insertmode' is set - stops Vim from returning to Insert mode. -Solution: Don't reset "restart_edit" when a CTRL-C is found and 'insertmode' - is set. -Files: src/normal.c - -Patch 6.2.316 (after 6.2.312) -Problem: "make install" tries connecting to the X server when installing - the docs. (Stephen Thomas) -Solution: Add the "-X" argument. -Files: runtime/doc/Makefile - -Patch 6.2.317 (after 6.2.313) -Problem: When using "zi" in a diff window, other diff windows are not - adjusted. (Richard Curnow) -Solution: Distribute a change in 'foldenable' to other diff windows. -Files: src/normal.c - -Patch 6.2.318 -Problem: When compiling with _THREAD_SAFE external commands don't echo - typed characters. -Solution: Don't set the terminal mode to TMODE_SLEEP when it's already at - TMODE_COOK. -Files: src/os_unix.c - -Patch 6.2.319 (extra) -Problem: Building gvimext.dll with Mingw doesn't work properly. -Solution: Use gcc instead of dllwrap. Use long option names. (Alejandro - Lopez-Valencia) -Files: src/GvimExt/Make_ming.mak - -Patch 6.2.320 -Problem: Win32: Adding and removing the menubar resizes the Vim window. - (Jonathon Merz) -Solution: Don't let a resize event change 'lines' unexpectedly. -Files: src/gui.c - -Patch 6.2.321 -Problem: When using modeless selection, wrapping lines are not recognized, - a line break is always inserted. -Solution: Add LineWraps[] to remember whether a line wrapped or not. -Files: src/globals.h, src/screen.c, src/ui.c - -Patch 6.2.322 -Problem: With 'showcmd' set, after typing "dd" the next "d" may not be - displayed. (Jens Paulus) -Solution: Redraw the command line after updating the screen, scrolling may - have set "clear_cmdline". -Files: src/screen.c - -Patch 6.2.323 -Problem: Win32: expanding "~/file" in an autocommand pattern results in - backslashes, while this pattern should only have forward slashes. -Solution: Make expanding environment variables respect 'shellslash' and set - p_ssl when expanding the autocommand pattern. -Files: src/fileio.c, src/misc1.c, src/proto/fileio.pro - -Patch 6.2.324 (extra) -Problem: Win32: when "vimrun.exe" has a path with white space, such as - "Program Files", executing external commands may fail. -Solution: Put double quotes around the path to "vimrun". -Files: src/os_win32.c - -Patch 6.2.325 -Problem: When $HOME includes a space, doing ":set tags=~/tags" doesn't - work, the space is used to separate file names. (Brett Stahlman) -Solution: Escape the space with a backslash. -Files: src/option.c - -Patch 6.2.326 -Problem: ":windo set syntax=foo" doesn't work. (Tim Chase) -Solution: Don't change 'eventignore' for ":windo". -Files: src/ex_cmds2.c - -Patch 6.2.327 -Problem: When formatting text all marks in the formatted lines are lost. - A word is not joined to a previous line when this would be - possible. (Mikolaj Machowski) -Solution: Try to keep marks in the same position as much as possible. - Also keep mark positions when joining lines. - Start auto-formatting in the previous line when appropriate. - Add the "gw" operator: Like "gq" but keep the cursor where it is. -Files: runtime/doc/change.txt, src/edit.c, src/globals.h, src/mark.c, - src/misc1.c, src/normal.c, src/ops.c, src/proto/edit.pro, - src/proto/mark.pro, src/proto/ops.pro, src/structs.h, src/vim.h - -Patch 6.2.328 -Problem: XIM with GTK: It is hard to understand what XIM is doing. -Solution: Add xim_log() to log XIM events and help with debugging. -Files: src/mbyte.c - -Patch 6.2.329 -Problem: ":=" does not work Vi compatible. (Antony Scriven) -Solution: Print the last line number instead of the current line. Don't - print "line". -Files: src/ex_cmds.h, src/ex_docmd.c - -Patch 6.2.330 (extra, after 6.2.267) -Problem: Win32: Crash when tearing off a menu. -Solution: Terminate a string with a NUL. (Yasuhiro Matsumoto) -Files: src/gui_w32.c - -Patch 6.2.331 (after 6.2.327) -Problem: "gwap" leaves cursor in the wrong line. -Solution: Remember the cursor position before finding the ends of the - paragraph. -Files: src/normal.c, src/ops.c, src/structs.h - -Patch 6.2.332 (extra) -Problem: Amiga: Compile error for string array. Compiling the Amiga GUI - doesn't work. -Solution: Use a char pointer instead. Move including "gui_amiga.h" to after - including "vim.h". Add a semicolon. (Ali Akcaagac) -Files: src/gui_amiga.c, src/os_amiga.c - -Patch 6.2.333 (extra) -Problem: Win32: printing doesn't work with specified font charset. -Solution: Use the specified font charset. (Mike Williams) -Files: src/os_mswin.c - -Patch 6.2.334 (extra, after 6.2.296) -Problem: Win32: evaluating client expression in debug mode requires typing - "cont". -Solution: Use eval_client_expr_to_string(). -Files: src/os_mswin.c - -Patch 6.2.335 -Problem: The ":sign" command cannot be followed by another command. -Solution: Add TRLBAR to the command flags. -Files: src/ex_cmds.h - -Patch 6.2.336 (after 6.2.327) -Problem: Mixup of items in an expression. -Solution: Move "== NUL" to the right spot. -Files: src/edit.c - -Patch 6.2.337 (extra, after 6.2.319) -Problem: Building gvimext.dll with Mingw doesn't work properly. -Solution: Fix white space and other details. (Alejandro Lopez-Valencia) -Files: src/GvimExt/Make_ming.mak - -Patch 6.2.338 (after 6.2.331) -Problem: When undoing "gwap" the cursor is always put at the start of the - paragraph. When undoing auto-formatting the cursor may be above - the change. -Solution: Try to move the cursor back to where it was or to the first line - that actually changed. -Files: src/normal.c, src/ops.c, src/undo.c - -Patch 6.2.339 -Problem: Crash when using many different highlight groups and a User - highlight group. (Juergen Kraemer) -Solution: Do not use the sg_name_u pointer when it is NULL. Also simplify - use of the highlight group table. -Files: src/syntax.c - -Patch 6.2.340 -Problem: ":reg" doesn't show the actual contents of the clipboard if it was - filled outside of Vim. (Stuart MacDonald) -Solution: Obtain the clipboard contents before displaying it. -Files: src/ops.c - -Patch 6.2.341 (extra) -Problem: Win32: When the path to diff.exe contains a space and using the - vimrc generated by the install program, diff mode does not work. -Solution: Put the first double quote just before the space instead of before - the path. -Files: src/dosinst.c - -Patch 6.2.342 (extra) -Problem: Win32: macros are not always used as expected. -Solution: Define WINVER to 0x0400 instead of 0x400. (Alejandro - Lopez-Valencia) -Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_mvc.mak - -Patch 6.2.343 -Problem: Title doesn't work with some window managers. X11: Setting the - text property for the window title is hard coded. -Solution: Use STRING format when possible. Use the UTF-8 function when - it's available and 'encoding' is utf-8. Use - XStringListToTextProperty(). Do the same for the icon name. - (David Harrison) -Files: src/os_unix.c - -Patch 6.2.344 (extra, after 6.2.337) -Problem: Cannot build gvimext.dll with MingW on Linux. -Solution: Add support for cross compiling. (Ronald Hoellwarth) -Files: src/GvimExt/Make_ming.mak - -Patch 6.2.345 (extra) -Problem: Win32: Copy/paste between two Vims fails if 'encoding' is not set - properly or there are illegal bytes. -Solution: Use a raw byte format. Always set it when copying. When pasting - use the raw format if 'encoding' is the same. -Files: src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h - -Patch 6.2.346 -Problem: Win32 console: After using "chcp" Vim does not detect the - different codepage. -Solution: Use GetConsoleCP() and when it is different from GetACP() set - 'termencoding'. -Files: src/option.c - -Patch 6.2.347 (extra) -Problem: Win32: XP theme support is missing. -Solution: Add a manifest and refer to it from the resource file. (Michael - Wookey) -Files: Makefile, src/gvim.exe.mnf, src/vim.rc - -Patch 6.2.348 -Problem: Win32: "vim c:\dir\(test)" doesn't work, because the 'isfname' - default value doesn't contain parenthesis. -Solution: Temporarily add '(' and ')' to 'isfname' when expanding file name - arguments. -Files: src/main.c - -Patch 6.2.349 -Problem: Finding a match using 'matchpairs' may cause a crash. - 'matchpairs' is not used for 'showmatch'. -Solution: Don't look past the NUL in 'matchpairs'. Use 'matchpairs' for - 'showmatch'. (Dave Olszewkski) -Files: src/misc1.c, src/normal.c, src/proto/search.pro, src/search.c - -Patch 6.2.350 -Problem: Not enough info about startup timing. -Solution: Add a few more TIME_MSG() calls. -Files: src/main.c - -Patch 6.2.351 -Problem: Win32: $HOME may be set to %USERPROFILE%. -Solution: Expand %VAR% at the start of $HOME. -Files: src/misc1.c - -Patch 6.2.352 (after 6.2.335) -Problem: ":sign texthl=||" does not work. -Solution: Remove the check for a following command. Give an error for extra - arguments after "buff=1". -Files: src/ex_cmds.c, src/ex_cmds.h - -Patch 6.2.353 (extra) -Problem: Win32: Supported server name length is limited. (Paul Bossi) -Solution: Use MAX_PATH instead of 25. -Files: src/os_mswin.c - -Patch 6.2.354 (extra) -Problem: Win32: When the mouse pointer is on a tear-off menu it is hidden - when typing but is not redisplayed when moved. (Markx Hackmann) -Solution: Handle the pointer move event for the tear-off menu window. -Files: src/gui_w32.c - -Patch 6.2.355 (after 6.2.303) -Problem: When 'encoding' is a double-byte encoding different from the - current locale, the width of characters is not correct. - Possible failure and memory leak when using iconv, Unicode - digraphs and 'encoding' is not "utf-8". -Solution: Use iconv() to discover the actual width of characters. - Add the "vc_fail" field to vimconv_T. - When converting a digraph, init the conversion type to NONE and - cleanup afterwards. -Files: src/digraph.c, src/mbyte.c, src/structs.h - -Patch 6.2.356 -Problem: When using a double-byte 'encoding' and 'selection' is - "exclusive", "vy" only yanks the first byte of a double-byte - character. (Xiangjiang Ma) -Solution: Correct the column in unadjust_for_sel() to position on the first - byte, always include the trailing byte of the selected text. -Files: src/normal.c - -Patch 6.2.357 (after 6.2.321) -Problem: Memory leak when resizing the Vim window. -Solution: Free the LineWraps array. -Files: src/screen.c - -Patch 6.2.358 (after 6.2.299) -Problem: Memory leak when using ":help" and the language doesn't match. -Solution: Free the array with matching tags. -Files: src/ex_cmds.c - -Patch 6.2.359 (after 6.2.352) -Problem: Compiler warning for long to int type cast. -Solution: Add explicit type cast. -Files: src/ex_cmds.c - -Patch 6.2.360 -Problem: "100|" in an empty line results in a ruler "1,0-100". (Pavol - Juhas) -Solution: Recompute w_virtcol if the target column was not reached. -Files: src/misc2.c - -Patch 6.2.361 (extra) -Problem: Win32: Run gvim, ":set go-=m", use Alt-Tab, keep Alt pressed while - pressing Esc, then release Alt: Cursor disappears and typing a key - causes a beep. (Hari Krishna Dara) -Solution: Don't ignore the WM_SYSKEYUP event when the menu is disabled. -Files: src/gui_w32.c - -Patch 6.2.362 (extra, after 6.2.347) -Problem: Win32: The manifest causes Gvim not to work. (Dave Roberts) -Solution: Change "x86" to "X86". (Serge Pirotte) -Files: src/gvim.exe.mnf - -Patch 6.2.363 -Problem: In an empty file with 'showmode' off, "i" doesn't change the ruler - from "0-1" to "1". Typing "x<BS>" does show "1", but then <Esc> - doesn't make it "0-1" again. Same problem for ruler in - statusline. (Andrew Pimlott) -Solution: Remember the "empty line" flag with Insert mode and'ed to it. -Files: src/screen.c - -Patch 6.2.364 -Problem: HTML version of the documentation doesn't mention the encoding, - which is a problem for mbyte.txt. -Solution: Adjust the awk script. (Ilya Sher) -Files: runtime/doc/makehtml.awk - -Patch 6.2.365 -Problem: The configure checks for Perl and Python may add compile and link - arguments that break building Vim. -Solution: Do a sanity check: try building with the arguments. -Files: src/auto/configure, src/configure.in - -Patch 6.2.366 -Problem: When the GUI can't start because no valid font is found, there is - no error message. (Ugen) -Solution: Add an error message. -Files: src/gui.c - -Patch 6.2.367 -Problem: Building the help tags file while installing may fail if there is - another Vim in $PATH. -Solution: Specify the just installed Vim executable. (Gordon Prieur) -Files: src/Makefile - -Patch 6.2.368 -Problem: When 'autochdir' is set, closing a window doesn't change to the - directory of the new current window. (Salman Halim) -Solution: Handle 'autochdir' always when a window becomes the current one. -Files: src/window.c - -Patch 6.2.369 -Problem: Various memory leaks: when using globpath(), when searching for - help tags files, when defining a function inside a function, when - giving an error message through an exception, for the final "." - line in ":append", in expression "cond ? a : b" that fails and for - missing ")" in an expression. Using NULL pointer when adding - first user command and for pointer computations with regexp. - (tests by Dominique Pelle) -Solution: Fix the leaks by freeing the allocated memory. Don't use the - array of user commands when there are no entries. Use a macro - instead of a function call for saving and restoring regexp states. -Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, - src/misc2.c, src/regexp.c, src/screen.c, src/tag.c - -Patch 6.2.370 (extra, after6.2.341) -Problem: Win32: When the path to diff.exe contains a space and using the - vimrc generated by the install program, diff mode may not work. - (Alejandro Lopez-Valencia) -Solution: Do not use double quotes for arguments that do not have a space. -Files: src/dosinst.c - -Patch 6.2.371 -Problem: When 'virtualedit' is set and there is a Tab before the next "x", - "dtx" does not delete the whole Tab. (Ken Hashishi) -Solution: Move the cursor to the last position of the Tab. Also for - "df<Tab>". -Files: src/normal.c - -Patch 6.2.372 -Problem: When using balloon evaluation, no value is displayed for members - of structures and items of an array. -Solution: Include "->", "." and "[*]" in the expression. -Files: src/gui_beval.c, src/normal.c, src/vim.h - -Patch 6.2.373 -Problem: When 'winminheight' is zero and a window is reduced to zero - height, the ruler always says "Top" instead of the cursor - position. (Antoine J. Mechelynck) -Solution: Don't recompute w_topline for a zero-height window. -Files: src/window.c - -Patch 6.2.374 -Problem: ":echo "hello" | silent normal n" removes the "hello" message. - (Servatius Brandt) -Solution: Don't echo the search string when ":silent" was used. Also don't - show the mode. In general: don't clear to the end of the screen. -Files: src/gui.c, src/message.c, src/os_unix.c, src/proto/message.pro, - src/screen.c, src/search.c, src/window.c - -Patch 6.2.375 -Problem: When changing 'guioptions' the hit-enter prompt may be below the - end of the Vim window. -Solution: Call screen_alloc() before showing the prompt. -Files: src/message.c - -Patch 6.2.376 -Problem: Win32: Ruby interface cannot be dynamically linked with Ruby 1.6. -Solution: Add #ifdefs around use of rb_w32_snprintf(). (Beno�t Cerrina) -Files: src/if_ruby.c - -Patch 6.2.377 (after 6.2.372) -Problem: Compiler warnings for signed/unsigned compare. (Michael Wookey) -Solution: Add type cast. -Files: src/normal.c - -Patch 6.2.378 (extra, after 6.2.118) -Problem: Mac: cannot build with Project Builder. -Solution: Add remove_tail_with_ext() to locate and remove the "build" - directory from the runtime path. Include os_unix.c when needed. - (Dany St Amant) -Files: src/misc1.c, src/os_macosx.c, src/vim.h - -Patch 6.2.379 -Problem: Using ":mkvimrc" in the ":options" window sets 'bufhidden' to - "delete". (Michael Naumann) -Solution: Do not add buffer-specific option values to a global vimrc file. -Files: src/option.c - -Patch 6.2.380 (extra) -Problem: DOS: "make test" fails when running it again. Can't "make test" - with Borland C. -Solution: Make sure ".out" files are deleted when they get in the way. Add - a "test" target to the Borland C Makefile. -Files: src/Make_bc5.mak, src/testdir/Make_dos.mak - -Patch 6.2.381 -Problem: Setting 'fileencoding' to a comma separated list (confusing it - with 'fileencodings') does not result in an error message. - Setting 'fileencoding' in an empty file marks it as modified. - There is no "+" in the title after setting 'fileencoding'. -Solution: Check for a comma in 'fileencoding'. Only consider a non-empty - file modified by changing 'fileencoding'. Update the title after - changing 'fileencoding'. -Files: src/option.c - -Patch 6.2.382 -Problem: Running "make test" puts marks from test files in viminfo. -Solution: Specify a different viminfo file to use. -Files: src/testdir/test15.in, src/testdir/test49.in - -Patch 6.2.383 -Problem: ":hi foo term='bla" crashes Vim. (Antony Scriven) -Solution: Check that the closing ' is there. -Files: src/syntax.c - -Patch 6.2.384 -Problem: ":menu a.&b" ":unmenu a.b" only works if "&b" isn't translated. -Solution: Also compare the names without '&' characters. -Files: src/menu.c - -Patch 6.2.385 (extra) -Problem: Win32: forward_slash() and trash_input_buf() are undefined when - compiling with small features. (Ajit Thakkar) -Solution: Change the #ifdefs for forward_slash(). Don't call - trash_input_buf() if the input buffer isn't used. -Files: src/fileio.c, src/os_win32.c - -Patch 6.2.386 -Problem: Wasting time trying to read marks from the viminfo file for a - buffer without a name. -Solution: Skip reading marks when the buffer has no name. -Files: src/fileio.c - -Patch 6.2.387 -Problem: There is no highlighting of translated items in help files. -Solution: Search for a "help_ab.vim" syntax file when the help file is - called "*.abx". Also improve the help highlighting a bit. -Files: runtime/syntax/help.vim - -Patch 6.2.388 -Problem: GTK: When displaying some double-width characters they are drawn - as single-width, because of conversion to UTF-8. -Solution: Check the width that GTK uses and add a space if it's one instead - of two. -Files: src/gui_gtk_x11.c - -Patch 6.2.389 -Problem: When working over a slow connection, it's very annoying that the - last line is partly drawn and then cleared for every change. -Solution: Don't redraw the bottom line if no rows were inserted or deleted. - Don't draw the line if we know "@" lines will be used. -Files: src/screen.c - -Patch 6.2.390 -Problem: Using "r*" in Visual mode on multi-byte characters only replaces - every other character. (Tyson Roberts) -Solution: Correct the cursor position after replacing each character. -Files: src/ops.c - -Patch 6.2.391 (extra) -Problem: The ":highlight" command is not tested. -Solution: Add a test script for ":highlight". -Files: src/testdir/Makefile, src/testdir/Make_amiga.mak, - src/testdir/Make_dos.mak, src/testdir/Make_os2.mak, - src/testdir/Make_vms.mms, src/testdir/test51.in, - src/testdir/test51.ok - -Patch 6.2.392 (after 6.2.384) -Problem: Unused variable. -Solution: Remove "dlen". -Files: src/menu.c - -Patch 6.2.393 -Problem: When using very long lines the viminfo file can become very big. -Solution: Add the "s" flag to 'viminfo': skip registers with more than the - specified Kbyte of text. -Files: runtime/doc/options.txt, src/ops.c, src/option.c - -Patch 6.2.394 (after 6.2.391) -Problem: Test 51 fails on a terminal with 8 colors. (Tony Leneis) -Solution: Use "DarkBlue" instead of "Blue" to avoid the "bold" attribute. -Files: src/testdir/test51.in - -Patch 6.2.395 -Problem: When using ":tag" or ":pop" the previous matching tag is used. - But since the current file is different, the ordering of the tags - may change. -Solution: Remember what the current buffer was for when re-using cur_match. -Files: src/edit.c, src/ex_cmds.c, src/proto/tag.pro, src/structs.h, - src/tag.c - -Patch 6.2.396 -Problem: When CTRL-T jumps to another file and an autocommand moves the - cursor to the '" mark, don't end up on the right line. (Michal - Malecki) -Solution: Set the line number after loading the file. -Files: src/tag.c - -Patch 6.2.397 -Problem: When using a double-byte 'encoding' mapping <M-x> doesn't work. - (Yasuhiro Matsumoto) -Solution: Do not set the 8th bit of the character but use a modifier. -Files: src/gui_gtk_x11.c, src/gui_x11.c, src/misc2.c - -Patch 6.2.398 (extra) -Problem: Win32 console: no extra key modifiers are supported. -Solution: Encode the modifiers into the input stream. Also fix that special - keys are converted and stop working when 'tenc' is set. Also fix - that when 'tenc' is intialized the input and output conversion is - not setup properly until 'enc' or 'tenc' is set. -Files: src/getchar.c, src/option.c, src/os_win32.c - -Patch 6.2.399 -Problem: A ":set" command that fails still writes a message when it is - inside a try/catch block. -Solution: Include all the text of the message in the error message. -Files: src/charset.c, src/option.c - -Patch 6.2.400 -Problem: Can't compile if_xcmdsrv.c on HP-UX 11.0. -Solution: Include header file poll.h. (Malte Neumann) -Files: src/if_xcmdsrv.c - -Patch 6.2.401 -Problem: When opening a buffer that was previously opened, Vim does not - restore the cursor position if the first line starts with white - space. (Gregory Margo) -Solution: Don't skip restoring the cursor position if it is past the blanks - in the first line. -Files: src/buffer.c - -Patch 6.2.402 -Problem: Mac: "make install" doesn't generate help tags. (Benji Fisher) -Solution: Generate help tags before copying the runtime files. -Files: src/Makefile - -Patch 6.2.403 -Problem: ":@y" checks stdin if there are more commands to execute. This - fails if stdin is not connected, e.g., when starting the GUI from - KDE. (Ned Konz) -Solution: Only check for a next command if there still is typeahead. -Files: src/ex_docmd.c - -Patch 6.2.404 -Problem: Our own function to determine width of Unicode characters may get - outdated. (Markus Kuhn) -Solution: Use wcwidth() when it is available. Also use iswprint(). -Files: src/auto/configure, src/configure.in, src/config.h.in, src/mbyte.c - -Patch 6.2.405 -Problem: Cannot map zero without breaking the count before a command. - (Benji Fisher) -Solution: Disable mapping zero when entering a count. -Files: src/getchar.c, src/globals.h, src/normal.c - -Patch 6.2.406 -Problem: ":help \zs", ":help \@=" and similar don't find useful help. -Solution: Prepend "/\" to the arguments to find the desired help tag. -Files: src/ex_cmds.c - -Patch 6.2.407 (after 6.2.299) -Problem: ":help \@<=" doesn't find help. -Solution: Avoid that ":help \@<=" searches for the "<=" language. -Files: src/tag.c - -Patch 6.2.408 -Problem: ":compiler" is not consistent: Sets local options and a global - variable. (Douglas Potts) There is no error message when a - compiler is not supported. -Solution: Use ":compiler!" to set a compiler globally, otherwise it's local - to the buffer and "b:current_compiler" is used. Give an error - when no compiler script could be found. - Note: updated compiler plugins can be found at - ftp://ftp.vim.org/pub/vim/runtime/compiler/ -Files: runtime/compiler/msvc.vim, runtime/doc/quickfix.txt, src/eval.c, - src/ex_cmds2.c - -Patch 6.2.409 -Problem: The cursor ends up in the last column instead of after the line - when doing "i//<Esc>o" with 'indentexpr' set to "cindent(v:lnum)". - (Toby Allsopp) -Solution: Adjust the cursor as if in Insert mode. -Files: src/misc1.c - -Patch 6.2.410 (after 6.2.389) -Problem: In diff mode, when there are more filler lines than fit in the - window, they are not drawn. -Solution: Check for filler lines when skipping to draw a line that doesn't - fit. -Files: src/screen.c - -Patch 6.2.411 -Problem: A "\n" inside a string is not seen as a line break by the regular - expression matching. (Hari Krishna Dara) -Solution: Add the vim_regexec_nl() function for strings where "\n" is to be - matched with a line break. -Files: src/eval.c, src/ex_eval.c, src/proto/regexp.c, src/regexp.c - -Patch 6.2.412 -Problem: Ruby: "ruby << EOF" inside a function doesn't always work. Also - for ":python", ":tcl" and ":perl". -Solution: Check for "<< marker" and skip until "marker" before checking for - "endfunction". -Files: src/eval.c - -Patch 6.2.413 (after 6.2.411) -Problem: Missing prototype for vim_regexec_nl(). (Marcel Svitalsky) -Solution: Now really include the prototype. -Files: src/proto/regexp.pro - -Patch 6.2.414 -Problem: The function used for custom completion of user commands cannot - have <SID> to make it local. (Hari Krishna Dara) -Solution: Pass the SID of the script where the user command was defined on - to the completion. Also clean up #ifdefs. -Files: src/ex_docmd.c, src/eval.c, src/ex_getln.c, src/structs.h - -Patch 6.2.415 -Problem: Vim may crash after a sequence of events that change the window - size. The window layout assumes a larger window than is actually - available. (Servatius Brandt) -Solution: Invoke win_new_shellsize() from screenalloc() instead of from - set_shellsize(). -Files: src/screen.c, src/term.c - -Patch 6.2.416 -Problem: Compiler warning for incompatible pointer. -Solution: Remove the "&" in the call to poll(). (Xavier de Gaye) -Files: src/os_unix.c - -Patch 6.2.417 (after 6.2.393) -Problem: Many people forget that the '"' item in 'viminfo' needs to be - preceded with a backslash, -Solution: Add '<' as an alias for the '"' item. -Files: runtime/doc/options.txt, src/ops.c, src/option.c - -Patch 6.2.418 -Problem: Using ":nnoremap <F12> :echo "cheese" and ":cabbr cheese xxx": - when pressing <F12> still uses the abbreviation. (Hari Krishna) -Solution: Also apply "noremap" to abbreviations. -Files: src/getchar.c - -Patch 6.2.419 (extra) -Problem: Win32: Cannot open the Vim window inside another application. -Solution: Add the "-P" argument to specify the window title of the - application to run inside. (Zibo Zhao) -Files: runtime/doc/starting.txt, src/main.c, src/gui_w32.c, - src/gui_w48.c, src/if_ole.cpp, src/os_mswin.c, - src/proto/gui_w32.pro - -Patch 6.2.420 -Problem: Cannot specify a file to be edited in binary mode without setting - the global value of the 'binary' option. -Solution: Support ":edit ++bin file". -Files: runtime/doc/editing.txt, src/buffer.c, src/eval.c, src/ex_cmds.h, - src/ex_docmd.c, src/fileio.c, src/misc2.c - -Patch 6.2.421 -Problem: Cannot set the '[ and '] mark, which may be necessary when an - autocommand simulates reading a file. -Solution: Allow using "m[" and "m]". -Files: runtime/doc/motion.txt, src/mark.c - -Patch 6.2.422 -Problem: In CTRL-X completion messages the "/" makes them less readable. -Solution: Remove the slashes. (Antony Scriven) -Files: src/edit.c - -Patch 6.2.423 -Problem: ":vertical wincmd ]" does not split vertically. -Solution: Add "postponed_split_flags". -Files: src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/tag.c - -Patch 6.2.424 -Problem: A BufEnter autocommand that sets an option stops 'mousefocus' from - working in Insert mode (Normal mode is OK). (Gregory Seidman) -Solution: In the Insert mode loop invoke gui_mouse_correct() when needed. -Files: src/edit.c - -Patch 6.2.425 -Problem: Vertical split and command line window: can only drag status line - above the cmdline window on the righthand side, not lefthand side. -Solution: Check the status line row instead of the window pointer. -Files: src/ui.c - -Patch 6.2.426 -Problem: A syntax region end match with a matchgroup that includes a line - break only highlights the last line with matchgroup. (Gary - Holloway) -Solution: Also use the line number of the position where the region - highlighting ends. -Files: src/syntax.c - -Patch 6.2.427 (extra) -Problem: When pasting a lot of text in a multi-byte encoding, conversion - from 'termencoding' to 'encoding' may fail for some characters. - (Kuang-che Wu) -Solution: When there is an incomplete byte sequence at the end of the read - text keep it for the next time. -Files: src/mbyte.c, src/os_amiga.c, src/os_mswin.c, src/proto/mbyte.pro, - src/proto/os_mswin.pro, src/ui.c - -Patch 6.2.428 -Problem: The X11 clipboard supports the Vim selection for char/line/block - mode, but since the encoding is not included can't copy/paste - between two Vims with a different 'encoding'. -Solution: Add a new selection format that includes the 'encoding'. Perform - conversion when necessary. -Files: src/gui_gtk_x11.c, src/ui.c, src/vim.h - -Patch 6.2.429 -Problem: Unix: glob() doesn't work for a directory with a single quote in - the name. (Nazri Ramliy) -Solution: When using the shell to expand, only put double quotes around - spaces and single quotes, not the whole thing. -Files: src/os_unix.c - -Patch 6.2.430 -Problem: BOM at start of a vim script file is not recognized and causes an - error message. -Solution: Detect the BOM and skip over it. Also fix that after using - ":scriptencoding" the iconv() file descriptor was not closed - (memory leak). -Files: src/ex_cmds2.c - -Patch 6.2.431 -Problem: When using the horizontal scrollbar, the scrolling is limited to - the length of the cursor line. -Solution: Make the scroll limit depend on the longest visible line. The - cursor is moved when necessary. Including the 'h' flag in - 'guioptions' disables this. -Files: runtime/doc/gui.txt, runtime/doc/options.txt, src/gui.c, - src/misc2.c, src/option.h - -Patch 6.2.432 (after 6.2.430 and 6.2.431) -Problem: Lint warnings. -Solution: Add type casts. -Files: src/ex_cmds2.c, src/gui.c - -Patch 6.2.433 -Problem: Translating "VISUAL" and "BLOCK" separately doesn't give a good - result. (Alejandro Lopez Valencia) -Solution: Use a string for each combination. -Files: src/screen.c - -Patch 6.2.434 (after 6.2.431) -Problem: Compiler warning. (Salman Halim) -Solution: Add type casts. -Files: src/gui.c - -Patch 6.2.435 -Problem: When there are vertically split windows the minimal Vim window - height is computed wrong. -Solution: Use frame_minheight() to correctly compute the minimal height. -Files: src/window.c - -Patch 6.2.436 -Problem: Running the tests changes the user's viminfo file. -Solution: In test 49 tell the extra Vim to use the test viminfo file. -Files: src/testdir/test49.vim - -Patch 6.2.437 -Problem: ":mksession" always puts "set nocompatible" in the session file. - This changes option settings. (Ron Aaron) -Solution: Add an "if" to only change 'compatible' when needed. -Files: src/ex_docmd.c - -Patch 6.2.438 -Problem: When the 'v' flag is present in 'cpoptions', backspacing and then - typing text again: one character too much is overtyped before - inserting is done again. -Solution: Set "dollar_vcol" to the right column. -Files: src/edit.c - -Patch 6.2.439 -Problem: GTK 2: Changing 'lines' may cause a mismatch between the window - layout and the size of the window. -Solution: Disable the hack with force_shell_resize_idle(). -Files: src/gui_gtk_x11.c - -Patch 6.2.440 -Problem: When 'lazyredraw' is set the window title is still updated. - The size of the Visual area and the ruler are displayed too often. -Solution: Postpone redrawing the window title. Only show the Visual area - size when waiting for a character. Don't draw the ruler - unnecessary. -Files: src/buffer.c, src/normal.c, src/screen.c - -Patch 6.2.441 -Problem: ":unabbreviate foo " doesn't work, because of the trailing space, - while an abbreviation with a trailing space is not possible. (Paul - Jolly) -Solution: Accept a match with the lhs of an abbreviation without the - trailing space. -Files: src/getchar.c - -Patch 6.2.442 -Problem: Cannot manipulate the command line from a function. -Solution: Add getcmdline(), getcmdpos() and setcmdpos() functions and the - CTRL-\ e command. -Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, src/eval.c - src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro, - src/proto/ops.pro - -Patch 6.2.443 -Problem: With ":silent! echoerr something" you don't get the position of - the error. emsg() only writes the message itself and returns. -Solution: Also redirect the position of the error. -Files: src/message.c - -Patch 6.2.444 -Problem: When adding the 'c' flag to a ":substitute" command it may replace - more times than without the 'c' flag. Happens for a match that - starts with "\ze" (Marcel Svitalsk) and when using "\@<=" (Klaus - Bosau). -Solution: Correct "prev_matchcol" when replacing the line. Don't replace - the line when the pattern uses look-behind matching. -Files: src/ex_cmds.c, src/proto/regexp.pro, src/regexp.c - -Patch 6.2.445 -Problem: Copying vimtutor to /tmp/something is not secure, a symlink may - cause trouble. -Solution: Create a directory and create the file in it. Use "umask" to - create the directory with mode 700. (Stefan Nordhausen) -Files: src/vimtutor - -Patch 6.2.446 (after 6.2.404) -Problem: Using library functions wcwidth() and iswprint() results in - display problems for Hebrew characters. (Ron Aaron) -Solution: Disable the code to use the library functions, use our own. -Files: src/mbyte.c - -Patch 6.2.447 (after 6.2.440) -Problem: Now that the title is only updated when redrawing, it is no longer - possible to show it while executing a function. (Madoka Machitani) -Solution: Make ":redraw" also update the title. -Files: src/ex_docmd.c - -Patch 6.2.448 (after 6.2.427) -Problem: Mac: conversion done when 'termencoding' differs from 'encoding' - fails when pasting a longer text. -Solution: Check for an incomplete sequence at the end of the chunk to be - converted. (Eckehard Berns) -Files: src/mbyte.c - -Patch 6.2.449 (after 6.2.431) -Problem: Get error messages when switching files. -Solution: Check for a valid line number when calculating the width of the - horizontal scrollbar. (Helmut Stiegler) -Files: src/gui.c - -Patch 6.2.450 -Problem: " #include" and " #define" are not recognized with the default - option values for 'include' and 'defined'. (RG Kiran) -Solution: Adjust the default values to allow white space before the #. -Files: runtime/doc/options.txt, src/option.c - -Patch 6.2.451 -Problem: GTK: when using XIM there are various problems, including setting - 'modified' and breaking undo at the wrong moment. -Solution: Add "xim_changed_while_preediting", "preedit_end_col" and - im_is_preediting(). (Yasuhiro Matsumoto) -Files: src/ex_getln.c, src/globals.h, src/gui_gtk.c, src/gui_gtk_x11.c, - src/mbyte.c, src/misc1.c, src/proto/mbyte.pro, src/screen.c, - src/undo.c - -Patch 6.2.452 -Problem: In diff mode, when DiffAdd and DiffText highlight settings are - equal, an added line is highlighted with DiffChange. (Tom Schumm) -Solution: Remember the diff highlight type instead of the attributes. -Files: src/screen.c - -Patch 6.2.453 -Problem: ":s/foo\|\nbar/x/g" does not replace two times in "foo\nbar". - (Pavel Papushev) -Solution: When the pattern can match a line break also try matching at the - NUL at the end of a line. -Files: src/ex_cmds.c, src/regexp.c - -Patch 6.2.454 -Problem: ":let b:changedtick" doesn't work. (Alan Schmitt) ":let - b:changedtick = 99" does not give an error message. -Solution: Add code to recognize ":let b:changedtick". -Files: src/eval.c - -Patch 6.2.455 (after 6.2.297) -Problem: In Python commands the current locale changes how certain Python - functions work. (Eugene M. Minkovskii) -Solution: Set the LC_NUMERIC locale to "C" while executing a Python command. -Files: src/if_python.c - -Patch 6.2.456 (extra) -Problem: Win32: Editing a file by its Unicode name (dropping it on Vim or - using the file selection dialog) doesn't work. (Yakov Lerner, Alex - Jakushev) -Solution: Use wide character functions when file names are involved and - convert from/to 'encoding' where needed. -Files: src/gui_w48.c, src/macros.h, src/memfile.c, src/memline.c, - src/os_mswin.c, src/os_win32.c - -Patch 6.2.457 (after 6.2.244) -Problem: When 'encoding' is "utf-8" and writing text with chars above 0x80 - in latin1, conversion is wrong every 8200 bytes. (Oyvind Holm) -Solution: Correct the utf_ptr2len_check_len() function and fix the problem - of displaying 0xf7 in utfc_ptr2len_check_len(). -Files: src/mbyte.c - -Patch 6.2.458 -Problem: When 'virtualedit' is set "$" doesn't move to the end of an - unprintable character, causing "y$" not to include that character. - (Fred Ma) -Solution: Set "coladd" to move the cursor to the end of the character. -Files: src/misc2.c - -Patch 6.2.459 (after 6.2.454) -Problem: Variable "b" cannot be written. (Salman Halim) -Solution: Compare strings properly. -Files: src/eval.c - -Patch 6.2.460 (extra, after 6.2.456) -Problem: Compiler warnings for missing prototypes. -Solution: Include the missing prototypes. -Files: src/proto/os_win32.pro - -Patch 6.2.461 -Problem: After using a search command "x" starts putting single characters - in the numbered registers. -Solution: Reset "use_reg_one" at the right moment. -Files: src/normal.c - -Patch 6.2.462 -Problem: Finding a matching parenthesis does not correctly handle a - backslash in a trailing byte. -Solution: Handle multi-byte characters correctly. (Taro Muraoka) -Files: src/search.c - -Patch 6.2.463 (extra) -Problem: Win32: An NTFS file system may contain files with extra info - streams. The current method to copy them creates one and then - deletes it again. (Peter Toennies) Also, only three streams with - hard coded names are copied. -Solution: Use BackupRead() to check which info streams the original file - contains and only copy these streams. -Files: src/os_win32.c - -Patch 6.2.464 (extra, after 6.2.427) -Problem: Amiga: Compilation error with gcc. (Ali Akcaagac) -Solution: Move the #ifdef outside of Read(). -Files: src/os_amiga.c - -Patch 6.2.465 -Problem: When resizing the GUI window the window manager sometimes moves it - left of or above the screen. (Michael McCarty) -Solution: Check the window position after resizing it and move it onto the - screen when it isn't. -Files: src/gui.c - -Patch 6.2.466 (extra, after 6.2.456) -Problem: Win32: Compiling with Borland C fails, and an un/signed warning. -Solution: Redefine wcsicmp() to wcscmpi() and add type casts. (Yasuhiro - Matsumoto) -Files: src/os_win32.c - -Patch 6.2.467 (extra, after 6.2.463) -Problem: Win32: can't compile without multi-byte feature. (Ajit Thakkar) -Solution: Add #ifdefs around the info stream code. -Files: src/os_win32.c - -Patch 6.2.468 -Problem: Compiler warnings for shadowed variables. (Matthias Mohr) -Solution: Delete superfluous variables and rename others. -Files: src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/if_cscope.c, - src/fold.c, src/option.c, src/os_unix.c, src/quickfix.c, - src/regexp.c - -Patch 6.2.469 (extra, after 6.2.456) -Problem: Win32: Can't create swap file when 'encoding' differs from the - active code page. (Kriton Kyrimis) -Solution: In enc_to_ucs2() terminate the converted string with a NUL -Files: src/os_mswin.c - -Patch 6.2.470 -Problem: The name returned by tempname() may be equal to the file used for - shell output when ignoring case. -Solution: Skip 'O' and 'I' in tempname(). -Files: src/eval.c - -Patch 6.2.471 -Problem: "-L/usr/lib" is used in the link command, even though it's - supposed to be filtered out. "-lw" and "-ldl" are not - automatically added when needed for "-lXmu". (Antonio Colombo) -Solution: Check for a space after the argument instead of before. Also - remove "-R/usr/lib" if it's there. Check for "-lw" and "-ldl" - before trying "-lXmu". -Files: src/auto/configure, src/configure.in, src/link.sh - -Patch 6.2.472 -Problem: When using a FileChangedShell autocommand that changes the current - buffer, a buffer exists that can't be wiped out. - Also, Vim sometimes crashes when executing an external command - that changes the buffer and a FileChangedShell autocommand is - used. (Hari Krishna Dara) - Users are confused by the warning for a file being changed outside - of Vim. -Solution: Avoid that the window counter for a buffer is incremented twice. - Avoid that buf_check_timestamp() is used recursively. - Add a hint to look in the help for more info. -Files: src/ex_cmds.c, src/fileio.c - -Patch 6.2.473 -Problem: Using CTRL-] in a help buffer without a name causes a crash. -Solution: Check for name to be present before using it. (Taro Muraoka) -Files: src/tag.c - -Patch 6.2.474 (extra, after 6.2.456) -Problem: When Vim is starting up conversion is done unnecessarily. Failure - to find the runtime files on Windows 98. (Randall W. Morris) -Solution: Init enc_codepage negative, only use it when not negative. - Don't use GetFileAttributesW() on Windows 98 or earlier. -Files: src/globals.h, src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, - src/os_win32.c - -Patch 6.2.475 -Problem: Commands after "perl <<EOF" are parsed as Vim commands when they - are not executed. -Solution: Properly skip over the perl commands. -Files: src/ex_docmd.c, src/ex_getln.c, src/if_perl.xs, src/if_python.c, - src/if_ruby.c, src/if_tcl.c, src/misc2.c - -Patch 6.2.476 -Problem: When reloading a hidden buffer changed outside of Vim and the - current buffer is read-only, the reloaded buffer becomes - read-only. (Hari Krishna Dara) -Solution: Save the 'readonly' flag of the realoaded buffer instead of the - current buffer. -Files: src/fileio.c - -Patch 6.2.477 -Problem: Using remote_send(v:servername, "\<C-V>") causes Vim to hang. - (Yakov Lerner) -Solution: When the resulting string is empty don't set received_from_client. -Files: src/main.c - -Patch 6.2.478 -Problem: Win32: "--remote file" fails changing directory if the current - directory name starts with a single quote. (Iestyn Walters) -Solution: Add a backslash where it will be removed later. -Files: src/main.c, src/misc2.c, src/proto/misc2.pro - -Patch 6.2.479 -Problem: The error message for errors during recovery goes unnoticed. -Solution: Avoid that the hit-enter prompt overwrites the message. Add a few - lines to make the error stand out. -Files: src/main.c, src/message.c, src/memline.c - -Patch 6.2.480 -Problem: NetBeans: Using negative index in array. backslash at end of - message may cause Vim to crash. (Xavier de Gaye) -Solution: Initialize buf_list_used to zero. Check for trailing backslash. -Files: src/netbeans.c - -Patch 6.2.481 -Problem: When writing a file it is not possible to specify that hard and/or - symlinks are to be broken instead of preserved. -Solution: Add the "breaksymlink" and "breakhardlink" values to 'backupcopy'. - (Simon Ekstrand) -Files: runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h - -Patch 6.2.482 -Problem: Repeating insert of CTRL-K 1 S doesn't work. The superscript 1 is - considered to be a digit. (Juergen Kraemer) -Solution: In vim_isdigit() only accept '0' to '9'. Use VIM_ISDIGIT() for - speed where possible. Also add vim_isxdigit(). -Files: src/buffer.c, src/charset.c, src/diff.c, src/digraph.c, - src/edit.c, src/eval.c,, src/ex_cmds.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, - src/if_xcmdsrv.c, src/farsi.c, src/fileio.c, src/fold.c, - src/getchar.c, src/gui.c, src/if_cscope.c, src/macros.h, - src/main.c, src/mark.c, src/mbyte.c, src/menu.c, src/misc1.c, - src/misc2.c, src/normal.c, src/ops.c, src/option.c, - src/proto/charset.pro, src/regexp.c, src/screen.c, src/search.c, - src/syntax.c, src/tag.c, src/term.c, src/termlib.c - -Patch 6.2.483 (extra, after 6.2.482) -Problem: See 6.2.482. -Solution: Extra part of patch 6.2.482. -Files: src/gui_photon.c, src/gui_w48.c, src/os_msdos.c, src/os_mswin.c - -Patch 6.2.484 -Problem: MS-Windows: With the included diff.exe, differences after a CTRL-Z - are not recognized. (Peter Keresztes) -Solution: Write the files with unix fileformat and invoke diff with --binary - if possible. -Files: src/diff.c - -Patch 6.2.485 -Problem: A BufWriteCmd autocommand cannot know if "!" was used or not. - (Hari Krishna Dara) -Solution: Add the v:cmdbang variable. -Files: runtime/doc/eval.txt, src/eval.c, src/proto/eval.pro, - src/fileio.c, src/vim.h - -Patch 6.2.486 (6.2.482) -Problem: Diff for eval.c is missing. -Solution: Addition to patch 6.2.482. -Files: src/eval.c - -Patch 6.2.487 (extra, after 6.2.456) -Problem: Compiler warnings for wrong prototype. (Alejandro Lopez Valencia) -Solution: Delete the prototype for Handle_WM_Notify(). -Files: src/proto/gui_w32.pro - -Patch 6.2.488 -Problem: Missing ")" in *.ch filetype detection. -Solution: Add the ")". (Ciaran McCreesh) -Files: runtime/filetype.vim - -Patch 6.2.489 -Problem: When accidentally opening a session in Vim which has already been - opened in another Vim there is a long row of ATTENTION prompts. - Need to quit each of them to get out. (Robert Webb) -Solution: Add the "Abort" alternative to the dialog. -Files: src/memline.c - -Patch 6.2.490 -Problem: With 'paragraph' it is not possible to use a single dot as a - paragraph boundary. (Dorai Sitaram) -Solution: Allow using " " (two spaces) in 'paragraph' to match ".$" or - ". $" -Files: src/search.c - -Patch 6.2.491 -Problem: Decrementing a position doesn't take care of multi-byte chars. -Solution: Adjust the column for multi-byte characters. Remove mb_dec(). - (Yasuhiro Matsumoto) -Files: src/mbyte.c, src/misc2.c, src/proto/mbyte.pro - -Patch 6.2.492 -Problem: When using ":redraw" while there is a message, the next ":echo" - still causes text to scroll. (Yasuhiro Matsumoto) -Solution: Reset msg_didout and msg_col, so that after ":redraw" the next - message overwrites an existing one. -Files: src/ex_docmd.c - -Patch 6.2.493 -Problem: "@x" doesn't work when 'insertmode' is set. (Benji Fisher) -Solution: Put "restart_edit" in the typeahead buffer, so that it's used - after executing the register contents. -Files: src/ops.c - -Patch 6.2.494 -Problem: Using diff mode with two windows, when moving horizontally in - inserted lines, a fold in the other window may open. -Solution: Compute the line number in the other window correctly. -Files: src/diff.c - -Patch 6.2.495 (extra, after 6.2.456) -Problem: Win32: The file dialog doesn't work on Windows 95. -Solution: Put the wide code of gui_mch_browse() in gui_mch_browseW() and use - it only on Windows NT/2000/XP. -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.2.496 -Problem: FreeBSD 4.x: When compiled with the pthread library (Python) a - complicated pattern may cause Vim to crash. Catching the signal - doesn't work. -Solution: When compiled with threads, instead of using the normal stacksize - limit, use the size of the initial stack. -Files: src/auto/configure, src/config.h.in, src/configure.in, - src/os_unix.c - -Patch 6.2.497 (extra) -Problem: Russian messages are only available in one encoding. -Solution: Convert the messages to MS-Windows codepages. (Vassily Ragosin) -Files: src/po/Makefile - -Patch 6.2.498 -Problem: Non-latin1 help files are not properly supported. -Solution: Support utf-8 help files and convert them to 'encoding' when - needed. -Files: src/fileio.c - -Patch 6.2.499 -Problem: When writing a file and halting the system, the file might be lost - when using a journalling file system. -Solution: Use fsync() to flush the file data to disk after writing a file. - (Radim Kolar) -Files: src/fileio.c - -Patch 6.2.500 (extra) -Problem: The DOS/MS-Windows the installer doesn't use the --binary flag for - diff. -Solution: Add --binary to the diff argument in MyDiff(). (Alejandro Lopez- - Valencia) -Files: src/dosinst.c - -Patch 6.2.501 -Problem: Vim does not compile with MorphOS. -Solution: Add a Makefile and a few changes to make Vim work with MorphOS. - (Ali Akcaagac) -Files: runtime/doc/os_amiga.txt, src/INSTALLami.txt, - src/Make_morphos.mak, src/memfile.c, src/term.c - -Patch 6.2.502 -Problem: Building fails for generating message files. -Solution: Add dummy message files. -Files: src/po/ca.po, src/po/ru.po, src/po/sv.po - -Patch 6.2.503 -Problem: Mac: Can't compile MacRoman conversions without the GUI. -Solution: Also link with the Carbon framework for the terminal version, for - the MacRoman conversion functions. (Eckehard Berns) - Remove -ltermcap from the GUI link command, it is not needed. -Files: src/auto/configure, src/Makefile, src/configure.in - -Patch 6.2.504 -Problem: Various problems with 'cindent', among which that a - list of variable declarations is not indented properly. -Solution: Fix the wrong indenting. Improve indenting of C++ methods. - Add the 'i', 'b' and 'W' options to 'cinoptions'. (mostly by - Helmut Stiegler) - Improve indenting of preprocessor-continuation lines. -Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, - src/testdir/test3.ok - -Patch 6.2.505 -Problem: Help for -P argument is missing. (Ronald Hoellwarth) -Solution: Add the patch that was missing in 6.2.419. -Files: runtime/doc/starting.txt - -Patch 6.2.506 (extra) -Problem: Win32: When 'encoding' is a codepage then reading a utf-8 file - only works when iconv is available. Writing a file in another - codepage uses the wrong kind of conversion. -Solution: Use internal conversion functions. Enable reading and writing - files with 'fileencoding' different from 'encoding' for all valid - codepages and utf-8 without the need for iconv. -Files: src/fileio.c, src/testdir/Make_dos.mak, src/testdir/test52.in, - src/testdir/test52.ok - -Patch 6.2.507 -Problem: The ownership of the file with the password for the NetBeans - connection is not checked. "-nb={file}" doesn't work for GTK. -Solution: Only accept the file when owned by the user and not accessible by - others. Detect "-nb=" for GTK. -Files: src/netbeans.c, src/gui_gtk_x11.c - -Patch 6.2.508 -Problem: Win32: "v:lang" does not show the current language for messages if - it differs from the other locale settings. -Solution: Use the value of the $LC_MESSAGES environment variable. -Files: src/ex_cmds2.c - -Patch 6.2.509 (after 6.2.508) -Problem: Crash when $LANG is not set. -Solution: Add check for NULL pointer. (Ron Aaron) -Files: src/ex_cmds2.c - -Patch 6.2.510 (after 6.2.507) -Problem: Warning for pointer conversion. -Solution: Add a type cast. -Files: src/gui_gtk_x11.c - -Patch 6.2.511 -Problem: Tags in Russian help files are in utf-8 encoding, which may be - different from 'encoding'. -Solution: Use the "TAG_FILE_ENCODING" field in the tags file to specify the - encoding of the tags. Convert help tags from 'encoding' to the - tag file encoding when searching for matches, do the reverse when - listing help tags. -Files: runtime/doc/tagsrch.txt, src/ex_cmds.c, src/tag.c - -Patch 6.2.512 -Problem: Translating "\"\n" is useless. (Gerfried Fuchs) -Solution: Remove the _() around it. -Files: src/main.c, src/memline.c - -Patch 6.2.513 (after 6.2.507) -Problem: NetBeans: the check for owning the connection info file can be - simplified. (Nikolay Molchanov) -Solution: Only check if the access mode is right. -Files: src/netbeans.c - -Patch 6.2.514 -Problem: When a highlight/syntax group name contains invalid characters - there is no warning. -Solution: Add an error for unprintable characters and a warning for other - invalid characters. -Files: src/syntax.c - -Patch 6.2.515 -Problem: When using the options window 'swapfile' is reset. -Solution: Use ":setlocal" instead of ":set". -Files: runtime/optwin.vim - -Patch 6.2.516 -Problem: The sign column cannot be seen, looks like there are two spaces - before the text. (Rob Retter) -Solution: Add the SignColumn highlight group. -Files: runtime/doc/options.txt, runtime/doc/sign.txt, src/option.c, - src/screen.c, src/syntax.c, src/vim.h - -Patch 6.2.517 -Problem: Using "r*" in Visual mode on multi-byte characters replaces - too many characters. In Visual Block mode replacing with a - multi-byte character doesn't work. -Solution: Adjust the operator end for the difference in byte length of the - original and the replaced character. Insert all bytes of a - multi-byte character, take care of double-wide characters. -Files: src/ops.c - -Patch 6.2.518 -Problem: Last line of a window is not updated after using "J" and then "D". - (Adri Verhoef) -Solution: When no line is found below a change that doesn't need updating, - update all lines below the change. -Files: src/screen.c - -Patch 6.2.519 -Problem: Mac: cannot read/write files in MacRoman format. -Solution: Do internal conversion from/to MacRoman to/from utf-8 and latin1. - (Eckehard Berns) -Files: src/fileio.c - -Patch 6.2.520 (extra) -Problem: The NSIS installer is outdated. -Solution: Make it work with NSIS 2.0. Also include console executables for - Win 95/98/ME and Win NT/2000/XP. Use LZWA compression. Use - "/oname" to avoid having to rename files before running NSIS. -Files: Makefile, nsis/gvim.nsi - -Patch 6.2.521 -Problem: When using silent Ex mode the "changing a readonly file" warning - is omitted but the one second wait isn't. (Yakov Lerner) -Solution: Skip the delay when "silent_mode" is set. -Files: src/misc1.c - -Patch 6.2.522 -Problem: GUI: when changing 'cmdheight' in the gvimrc file the window - layout is messed up. (Keith Dart) -Solution: Skip updating the window layout when changing 'cmdheight' while - still starting up. -Files: src/option.c - -Patch 6.2.523 -Problem: When loading a session and aborting when a swap file already - exists, the user is left with useless windows. (Robert Webb) -Solution: Load one file before creating the windows. -Files: src/ex_docmd.c - -Patch 6.2.524 (extra, after 6.2.520) -Problem: Win32: (un)installing gvimext.dll may fail if it was used. - The desktop and start menu links are created for the current user - instead of all users. - Using the home directory as working directory for the links is a - bad idea for multi-user systems. - Cannot use Vim from the "Open With..." menu. -Solution: Force a reboot if necessary. (Alejandro Lopez-Valencia) Also use - macros for the directory of the source and runtime files. Use - "CSIDL_COMMON_*" instead of "CSIDL_*" when possible. - Do not specify a working directory in the links. - Add Vim to the "Open With..." menu. (Giuseppe Bilotta) -Files: nsis/gvim.nsi, src/dosinst.c, src/dosinst.h, src/uninstal.c - -Patch 6.2.525 -Problem: When the history contains a very long line ":history" causes a - crash. (Volker Kiefel) -Solution: Shorten the history entry to fit it in one line. -Files: src/ex_getln.c - -Patch 6.2.526 -Problem: When s:lang is "ja" the Japanese menus are not used. -Solution: Add 'encoding' to the language when there is no charset. -Files: runtime/menu.vim - -Patch 6.2.527 -Problem: The 2html script uses ":wincmd p", which breaks when using some - autocommands. -Solution: Remember the window numbers and jump to them with ":wincmd w". - Also add XHTML support. (Panagiotis Issaris) -Files: runtime/syntax/2html.vim - -Patch 6.2.528 -Problem: NetBeans: Changes of the "~" command are not reported. -Solution: Call netbeans_inserted() after performing "~". (Gordon Prieur) - Also change NetBeans debugging to append to the log file. - Also fix that "~" in Visual block mode changes too much if there - are multi-byte characters. -Files: src/nbdebug.c, src/normal.c, src/ops.c - -Patch 6.2.529 (extra) -Problem: VisVim only works for Admin. Doing it for one user doesn't work. - (Alexandre Gouraud) -Solution: When registering the module fails, simply continue. -Files: src/VisVim/VisVim.cpp - -Patch 6.2.530 -Problem: Warning for missing prototype on the Amiga. -Solution: Include time.h -Files: src/version.c - -Patch 6.2.531 -Problem: In silent ex mode no messages are given, which makes debugging - very difficult. -Solution: Do output messages when 'verbose' is set. -Files: src/message.c, src/ui.c - -Patch 6.2.532 (extra) -Problem: Compiling for Win32s with VC 4.1 doesn't work. -Solution: Don't use CP_UTF8 if it's not defined. Don't use CSIDL_COMMON* - when not defined. -Files: src/dosinst.h, src/fileio.c - -Win32 console: After patch 6.2.398 Ex mode did not work. (Yasuhiro Matsumoto) - -Patch 6.3a.001 -Problem: Win32: if testing for the "--binary" option fails, diff isn't used - at all. -Solution: Handle the "ok" flag properly. (Yasuhiro Matsumoto) -Files: src/diff.c - -Patch 6.3a.002 -Problem: NetBeans: An insert command from NetBeans beyond the end of a - buffer crashes Vim. (Xavier de Gaye) -Solution: Use a local pos_T structure for the position. -Files: src/netbeans.c - -Patch 6.3a.003 -Problem: E315 error with auto-formatting comments. (Henry Van Roessel) -Solution: Pass the line number to same_leader(). -Files: src/ops.c - -Patch 6.3a.004 -Problem: Test32 fails on Windows XP for the DJGPP version. Renaming - test11.out fails. -Solution: Don't try renaming, create new files to use for the test. -Files: src/testdir/test32.in, src/testdir/test32.ok - -Patch 6.3a.005 -Problem: ":checkpath!" does not use 'includeexpr'. -Solution: Use a file name that was found directly. When a file was not - found and the located name is empty, use the rest of the line. -Files: src/search.c - -Patch 6.3a.006 -Problem: "yip" moves the cursor to the first yanked line, but not to the - first column. Looks like not all text was yanked. (Jens Paulus) -Solution: Move the cursor to the first column. -Files: src/search.c - -Patch 6.3a.007 -Problem: 'cindent' recognizes "enum" but not "typedef enum". -Solution: Skip over "typedef" before checking for "enum". (Helmut Stiegler) - Also avoid that searching for this item goes too far back. -Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok - -Patch 6.3a.008 (extra) -Problem: Windows 98: Some of the wide functions are not implemented, - resulting in file I/O to fail. This depends on what Unicode - support is installed. -Solution: Handle the failure and fall back to non-wide functions. -Files: src/os_win32.c - -Patch 6.3a.009 -Problem: Win32: Completion of filenames does not work properly when - 'encoding' differs from the active code page. -Solution: Use wide functions for expanding wildcards when appropriate. -Files: src/misc1.c - -Patch 6.3a.010 (extra) -Problem: Win32: Characters in the window title that do not appear in the - active codepage are replaced by a question mark. -Solution: Use DefWindowProcW() instead of DefWindowProc() when possible. -Files: src/glbl_ime.cpp, src/globals.h, src/proto/gui_w16.pro, - src/proto/gui_w32.pro, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c - -Patch 6.3a.011 -Problem: Using the explorer plugin changes a local directory to the global - directory. -Solution: Don't use ":chdir" to restore the current directory. Make - "expand('%:p')" remove "/../" and "/./" items from the path. -Files: runtime/plugin/explorer.vim, src/eval.c, src/os_unix.c - -Patch 6.3a.012 (extra) -Problem: On Windows 98 the installer doesn't work, don't even get the "I - agree" button. The check for the path ending in "vim" makes the - browse dialog hard to use. The default path when no previous Vim - is installed is "c:\vim" instead of "c:\Program Files\Vim". -Solution: Remove the background gradient command. Change the - .onVerifyInstDir function to a leave function for the directory - page. Don't let the install program default to c:\vim when no - path could be found. -Files: nsis/gvim.nsi, src/dosinst.c - -Patch 6.3a.013 (extra) -Problem: Win32: Characters in the menu that are not in the active codepage - are garbled. -Solution: Convert menu strings from 'encoding' to the active codepage. -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.3a.014 -Problem: Using multi-byte text and highlighting in a statusline causes gaps - to appear. (Helmut Stiegler) -Solution: Advance the column by text width instead of number of bytes. Add - the vim_strnsize() function. -Files: src/charset.c, src/proto/charset.pro, src/screen.c - -Patch 6.3a.015 -Problem: Using the "select all" menu item when 'insertmode' is set and - clicking the mouse button doesn't return to Insert mode. The - Buffers/Delete menu doesn't offer a choice to abandon a changed - buffer. (Jens Paulus) -Solution: Don't use CTRL-\ CTRL-N. Add ":confirm" for the Buffers menu - items. -Files: runtime/menu.vim - -Patch 6.3a.016 -Problem: After cancelling the ":confirm" dialog the error message and - hit-enter prompt may not be displayed properly. -Solution: Flush output after showing the dialog. -Files: src/message.c - -Patch 6.3a.017 -Problem: servername() doesn't work when Vim was started with the "-X" - argument or when the "exclude" in 'clipboard' matches the terminal - name. (Robert Nowotniak) -Solution: Force connecting to the X server when using client-server - commands. -Files: src/eval.c, src/globals.h, src/os_unix.c - -Patch 6.3a.018 (after 6.3a.017) -Problem: Compiler warning for return value of make_connection(). -Solution: Use void return type. -Files: src/eval.c - -Patch 6.3a.019 (extra) -Problem: Win32: typing non-latin1 characters doesn't work. -Solution: Invoke _OnChar() directly to avoid that the argument is truncated - to a byte. Convert the UTF-16 character to bytes according to - 'encoding' and ignore 'termencoding'. Same for _OnSysChar(). -Files: src/gui_w32.c, src/gui_w48.c - -Patch 6.3a.020 (extra) -Problem: Missing support for AROS (AmigaOS reimplementation). Amiga GUI - doesn't work. -Solution: Add AROS support. (Adam Chodorowski) - Fix Amiga GUI problems. (Georg Steger, Ali Akcaagac) -Files: Makefile, src/Make_aros.mak, src/gui_amiga.c, src/gui_amiga.h, - src/memfile.c, src/os_amiga.c, src/term.c - -Patch 6.3a.021 (after 6.3a.017) -Problem: Can't compile with X11 but without GUI. -Solution: Put use of "gui.in_use" inside an #ifdef. -Files: src/eval.c - -Patch 6.3a.022 -Problem: When typing Tabs when 'softtabstop' is used and 'list' is set a - tab is counted for two spaces. -Solution: Use the "L" flag in 'cpoptions' to tell whether a tab is counted - as two spaces or as 'tabstop'. (Antony Scriven) -Files: runtime/doc/options.txt, src/edit.c - -Patch 6.3a.023 -Problem: Completion on the command line doesn't handle backslashes - properly. Only the tail of matches is shown, even when not - completing filenames. -Solution: When turning the string into a pattern double backslashes. Don't - omit the path when not expanding files or directories. -Files: src/ex_getln.c - -Patch 6.3a.024 -Problem: The "save all" toolbar item fails for buffers that don't have a - name. When using ":wa" or closing the Vim window and there are - nameless buffers, browsing for a name may cause the name being - given to the wrong buffer or not stored properly. ":browse" only - worked for one file. -Solution: Use ":confirm browse" for "save all". - Pass buffer argument to setfname(). Restore "browse" flag and - "forceit" after doing the work for one file. -Files: runtime/menu.vim, src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, - src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/memline.c, - src/message.c, src/window.c, src/proto/buffer.pro, - src/proto/ex_cmds2.pro, src/proto/memline.pro - -Patch 6.3a.025 -Problem: Setting 'virtualedit' moves the cursor. (Benji Fisher) -Solution: Update the virtual column before using it. -Files: src/option.c - -Patch 6.3a.026 (extra, after 6.3a.008) -Problem: Editing files on Windows 98 doesn't work when 'encoding' is - "utf-8" (Antoine Mechelynck) - Warning for missing function prototype. -Solution: For all wide functions check if it failed because it is not - implemented. Use ANSI function declaration for char_to_string(). -Files: src/gui_w48.c, src/os_mswin.c, src/os_win32.c - -Patch 6.3a.027 (extra, after 6.3a.026) -Problem: Compiler warning for function argument. -Solution: Declare both char and WCHAR arrays. -Files: src/gui_w48.c - -Patch 6.3a.028 -Problem: ":normal ." doesn't work inside a function, because redo is saved - and restored. (Benji Fisher) -Solution: Make a copy of the redo buffer when executing a function. -Files: src/getchar.c - -Patch 6.3b.001 (extra) -Problem: Bcc 5: The generated auto/pathdef can't be compiled. -Solution: Fix the way quotes and backslashes are escaped. -Files: src/Make_bc5.mak - -Patch 6.3b.002 -Problem: Win32: conversion during file write fails when a double-byte - character is split over two writes. -Solution: Fix the conversion retry without a trailing byte. (Taro Muraoka) -Files: src/fileio.c - -Patch 6.3b.003 (extra) -Problem: Win32: When compiling with Borland C 5.5 and 'encoding' is "utf-8" - then Vim can't open files under MS-Windows 98. (Antoine J. - Mechelynck) -Solution: Don't use _wstat(), _wopen() and _wfopen() in this situation. -Files: src/os_mswin.c, src/os_win32.c - -Patch 6.3b.004 -Problem: ":helpgrep" includes a trailing CR in the text line. -Solution: Remove the CR. -Files: src/quickfix.c - -Patch 6.3b.005 -Problem: ":echo &g:ai" results in the local option value. (Salman Halim) -Solution: Pass the flags from find_option_end() to get_option_value(). -Files: src/eval.c - -Patch 6.3b.006 -Problem: When using "mswin.vim", CTRL-V in Insert mode leaves cursor before - last pasted character. (Mathew Davis) -Solution: Use the same Paste() function as in menu.vim. -Files: runtime/mswin.vim - -Patch 6.3b.007 -Problem: Session file doesn't restore view on windows properly. (Robert - Webb) -Solution: Restore window sizes both before and after restoring the view, so - that the view, cursor position and size are restored properly. -Files: src/ex_docmd.c - -Patch 6.3b.008 -Problem: Using ":finally" in a user command doesn't always work. (Hari - Krishna Dara) -Solution: Don't assume that using getexline() means the command was typed. -Files: src/ex_docmd.c - -Patch 6.3b.009 (extra) -Problem: Win32: When the -P argument is not found in a window title, there - is no error message. -Solution: When the window can't be found give an error message and exit. - Also use try/except to catch failing to open the MDI window. - (Michael Wookey) -Files: src/gui_w32.c - -Patch 6.3b.010 -Problem: Win32: Using the "-D" argument and expanding arguments may cause a - hang, because the terminal isn't initialized yet. (Vince Negri) -Solution: Don't go into debug mode before the terminal is initialized. -Files: src/main.c - -Patch 6.3b.011 -Problem: Using CTRL-\ e while obtaining an expression aborts the command - line. (Hari Krishna Dara) -Solution: Insert the CTRL-\ e as typed. -Files: src/ex_getln.c - -Patch 6.3b.012 (after 6.3b.010) -Problem: Can't compile with tiny features. (Norbert Tretkowski) -Solution: Add #ifdefs. -Files: src/main.c - -Patch 6.3b.013 -Problem: Loading a session file results in editing the wrong file in the - first window when this is not the file at the current position in - the argument list. (Robert Webb) -Solution: Check w_arg_idx_invalid to decide whether to edit a file. -Files: src/ex_docmd.c - -Patch 6.3b.014 -Problem: ":runtime! foo*.vim" may using freed memory when a sourced script - changes the value of 'runtimepath'. -Solution: Make a copy of 'runtimepath' when looping over the matches. -Files: src/ex_cmds2.c - -Patch 6.3b.015 -Problem: Get lalloc(0) error when using "p" in Visual mode while - 'clipboard' contains "autoselect,unnamed". (Mark Wagonner) -Solution: Avoid allocating zero bytes. Obtain the clipboard when necessary. -Files: src/ops.c - -Patch 6.3b.016 -Problem: When 'virtualedit' is used "x" doesn't delete the last character - of a line that has as many characters as 'columns'. (Yakov Lerner) -Solution: When the cursor isn't moved let oneright() return FAIL. -Files: src/edit.c - -Patch 6.3b.017 -Problem: Win32: "vim --remote-wait" doesn't exit when the server finished - editing the file. (David Fishburn) -Solution: In the rrhelper plugin change backslashes to forward slashes and - escape special characters. -Files: runtime/plugin/rrhelper.vim - -Patch 6.3b.018 -Problem: The list of help files in the "local additions" table doesn't - recognize utf-8 encoding. (Yasuhiro Matsumoto) -Solution: Recognize utf-8 characters. -Files: src/ex_cmds.c - -Patch 6.3b.019 -Problem: When $VIMRUNTIME is not a full path name the "local additions" - table lists all the help files. -Solution: Use fullpathcmp() instead of fnamecmp() to compare the directory - names. -Files: src/ex_cmds.c - -Patch 6.3b.020 -Problem: When using CTRL-^ when entering a search string, the item in the - statusline that indicates the keymap is not updated. (Ilya - Dogolazky) -Solution: Mark the statuslines for updating. -Files: src/ex_getln.c - -Patch 6.3b.021 -Problem: The swapfile is not readable for others, the ATTENTION prompt does - not show all info when someone else is editing the same file. - (Marcel Svitalsky) -Solution: Use the protection of original file for the swapfile and set it - after creating the swapfile. -Files: src/fileio.c - -Patch 6.3b.022 -Problem: Using "4v" to select four times the old Visual area may put the - cursor beyond the end of the line. (Jens Paulus) -Solution: Correct the cursor column. -Files: src/normal.c - -Patch 6.3b.023 -Problem: When "3dip" starts in an empty line, white lines after the - non-white lines are not deleted. (Jens Paulus) -Solution: Include the white lines. -Files: src/search.c - -Patch 6.3b.024 -Problem: "2daw" does not delete leading white space like "daw" does. (Jens - Paulus) -Solution: Include the white space when a count is used. -Files: src/search.c - -Patch 6.3b.025 -Problem: Percentage in ruler isn't updated when a line is deleted. (Jens - Paulus) -Solution: Check for a change in line count when deciding to update the ruler. -Files: src/screen.c, src/structs.h - -Patch 6.3b.026 -Problem: When selecting "abort" at the ATTENTION prompt for a file that is - already being edited Vim crashes. -Solution: Don't abort creating a new buffer when we really need it. -Files: src/buffer.c, src/vim.h - -Patch 6.3b.027 -Problem: Win32: When enabling the menu in a maximized window, Vim uses more - lines than what is room for. (Shizhu Pan) -Solution: When deciding to call shell_resized(), also compare the text area - size with Rows and Columns, not just with screen_Rows and - screen_Columns. -Files: src/gui.c - -Patch 6.3b.028 -Problem: When in diff mode, setting 'rightleft' causes a crash. (Eddine) -Solution: Check for last column differently when 'rightleft' is set. -Files: src/screen.c - -Patch 6.3b.029 -Problem: Win32: warning for uninitialized variable. -Solution: Initialize to zero. -Files: src/misc1.c - -Patch 6.3b.030 -Problem: After Visually selecting four characters, changing it to other - text, Visually selecting and yanking two characters: "." changes - four characters, another "." changes two characters. (Robert Webb) -Solution: Don't store the size of the Visual area when redo is active. -Files: src/normal.c - - vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/arabic.jax b/ja/arabic.jax deleted file mode 100644 index 5ebda61d6..000000000 --- a/ja/arabic.jax +++ /dev/null @@ -1,326 +0,0 @@ -COMMENT: アラビア語サポート -STATUS: suspend 6.3.054 -MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> - -*arabic.txt* For Vim version 6.3. Last change: 2003 May 11 - - - VIM REFERENCE MANUAL by Nadim Shaikli - - -Arabic Language support (options & mappings) for Vim *Arabic* - -{Vi does not have any of these commands} - - *E800* -In order to use right-to-left and Arabic mapping support, it is -necessary to compile VIM with the |+arabic| feature. - -These functions have been created by Nadim Shaikli <nadim-at-arabeyes.org> - -It is best to view this file with these settings within VIM's GUI: > - - :set encoding=utf-8 - :set arabicshape - - -Introduction ------------- -Arabic is a rather demanding language in which a number of special -features are required. Characters are right-to-left oriented and -ought to appear as such on the screen (ie. from right to left). -Arabic also requires shaping of its characters, meaning the same -character has a different visual form based on its relative location -within a word (initial, medial, final or stand-alone). Arabic also -requires two different forms of combining and the ability, in -certain instances, to either superimpose upto two characters on top -of another (composing) or the actual substitution of two characters -into one (combining). Lastly, to display Arabic properly one will -require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also -require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are -subsets within a so-called ISO-10646-1 font. - -The commands, prompts and help files are not in Arabic, therefore -the user interface remains the standard Vi interface. - - -Highlights ----------- -o Editing left-to-right files as in the original VIM hasn't changed. - -o Viewing and editing files in right-to-left windows. File - orientation is per window, so it is possible to view the same - file in right-to-left and left-to-right modes, simultaneously. - -o No special terminal with right-to-left capabilities is required. - The right-to-left changes are completely hardware independent. - Only Arabic fonts are necessary. - -o Compatible with the original VIM. Almost all features work in - right-to-left mode (there are liable to be bugs). - -o Changing keyboard mapping and reverse insert modes using a single - command. - -o Toggling complete Arabic support via a single command. - -o While in Arabic mode, numbers are entered from left to right. Upon - entering a none number character, that character will be inserted - just into the left of the last number. - -o Arabic keymapping on the command line in reverse insert mode. - -o Proper Bidirectional functionality is possible given VIM is - started within a Bidi capable terminal emulator. - - -Arabic Fonts *arabicfonts* ------------- - -VIM requires monospaced fonts of which there are many out there. -Arabic requires ISO-8859-6 as well as Presentation Form-B fonts -(without Form-B, Arabic will _NOT_ be usable). It is highly -recommended that users search for so-called 'ISO-10646-1' fonts. -Do an Internet search or check www.arabeyes.org for further -info on where to attain the necessary Arabic fonts. - - -Font Installation ------------------ - -o Installation of fonts for X Window systems (Unix/Linux) - - Depending on your system, copy your_ARABIC_FONT file into a - directory of your choice. Change to the directory containing - the Arabic fonts and execute the following commands: - - % mkfontdir - % xset +fp path_name_of_arabic_fonts_directory - - -Usage ------ -Prior to the actual usage of Arabic within VIM, a number of settings -need to be accounted for and invoked. - -o Setting the Arabic fonts - - + For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done - by entering the following command in the VIM window. -> - :set guifont=your_ARABIC_FONT -< - NOTE: the string 'your_ARABIC_FONT' is used to denote a complete - font name akin to that used in linux/unix system. - (eg. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1) - - You can append the 'guifont' set command to your .vimrc file - in order to get the same above noted results. In other words, - you can include ':set guifont=your_ARABIC_FONT' to your .vimrc - file. - - + Under the X Window environment, you can also start VIM with - '-fn your_ARABIC_FONT' option. - -o Setting the appropriate character Encoding - To enable the correct Arabic encoding the following command needs - to be appended, -> - :set encoding=utf-8 -< - to your .vimrc file (entering the command manually into you VIM - window is highly discouraged). In short, include ':set - encoding=utf-8' to your .vimrc file. - - Attempts to use Arabic without UTF-8 will result the following - warning message, - - *W17* > - Arabic requires UTF-8, do ':set encoding=utf-8' - -o Enable Arabic settings [short-cut] - - In order to simplify and streamline things, you can either invoke - VIM with the command-line option, - - % vim -A my_utf8_arabic_file ... - - or enable 'arabic' via the following command within VIM -> - :set arabic -< - The two above noted possible invocations are the preferred manner - in which users are instructed to proceed. Baring an enabled 'termbidi' - setting, both command options: - - 1. set the appropriate keymap - 2. enable the deletion of a single combined pair character - 3. enable rightleft mode - 4. enable rightleftcmd mode (affecting the command-line) - 5. enable arabicshape mode (do visual character alterations) - - You may also append the command to your .vimrc file and simply - include ':set arabic' to it. - - You are also capable of disabling Arabic support via -> - :set noarabic -< - which resets everything that the command had enabled without touching - the global settings as they could affect other possible open buffers. - In short the 'noarabic' command, - - 1. resets to the alternate keymap - 2. disables the deletion of a single combined pair character - 3. disables rightleft mode - - NOTE: the 'arabic' command takes into consideration 'termbidi' for - possible external bi-directional (bidi) support from the - terminal ("mlterm" for instance offers such support). - 'termbidi', if available, is superior to rightleft support - and its support is preferred due to its level of offerings. - 'arabic' when 'termbidi' is enabled only sets the keymap. - - If, on the other hand, you'd like to be verbose and explicit and - are opting not to use the 'arabic' short-cut command, here's what - is needed (ie. if you use ':set arabic' you can skip this section) - - - + Arabic Keymapping Activation - - To activate the Arabic keymap (ie. to remap your english/latin - keyboard to look-n-feel like a standard Arabic one), set the - 'keymap' command to "arabic". This is done by entering -> - :set keymap=arabic -< - in your VIM window. You can also append the 'keymap' set command to - your .vimrc file. In other words, you can include ':set keymap=arabic' - to your .vimrc file. - - To turn toggle (or switch) your keymapping between Arabic and the - default mapping (english), its advised that users use the 'CTRL-^' - key press while in insert (or add/replace) mode. The command-line - will display your current mapping by displaying an "Arabic" string - next to your insertion mode (eg. -- INSERT Arabic --) indicating - your current keymap. - - + Arabic deletion of a combined pair character - - By default VIM has the 'delcombine' option disabled. This option - allows the deletion of ALEF in a LAM_ALEF (LAA) combined character - and still retain the LAM (ie. it reverts to treating the combined - character as its natural two characters form -- this also pertains - to harakat and their combined forms). You can enable this option - by entering -> - :set delcombine -< - in our VIM window. You can also append the 'delcombine' set command - to your .vimrc file. In other words, you can include ':set delcombine' - to your .vimrc file. - - + Arabic right-to-left Mode - - By default VIM starts in Left-to-right mode. 'rightleft' is the - command that allows one to alter a window's orientation - that can - be accomplished via, - - - Toggling between left-to-right and right-to-left modes is - accomplished through ':set rightleft' and ':set norightleft'. - - - While in Left-to-right mode, enter ':set rl' in the command line - ('rl' is the abbreviation for rightleft). - - - Put the ':set rl' line in your '.vimrc' file to start the VIM in - right-to-left mode permanently. - - + Arabic right-to-left command-line Mode - - For certain commands the editing can be done in right-to-left mode. - Currently this is only applicable to search commands. - - This is controlled with the 'rightleftcmd' option. The default is - "search", which means that windows in which 'rightleft' is set will - edit search commands in right-left mode. To disable this behavior, -> - :set rightleftcmd= -< - To enable right-left editing of search commands again, -> - :set rightleftcmd& -< - + Arabic Shaping Mode - - To activate the required visual characters alterations (shaping, - composing, combining) which the Arabic language requires, enable - the 'arabicshape' command. This is done by entering -> - :set arabicshape -< - in our VIM window. You can also append the 'arabicshape' set - command to your .vimrc file. In other words, you can include - ':set arabicshape' to your .vimrc file. - - -Keymap/Keyboard *arabickeymap* ---------------- - -The character/letter encoding used in VIM is the standard UTF-8. -It is widely discouraged that any other encoding be used or even -attempted. - -Note: UTF-8 is an all encompassing encoding and as such is - the only supported (and encouraged) encoding with - regard to Arabic (all other proprietary encodings - should be discouraged and frowned upon). - -o Keyboard - - + CTRL-^ in insert/replace mode toggles between Arabic/Latin mode - - + Keyboard mapping is based on the Microsoft's Arabic keymap (the - defacto standard in the Arab world): - - +---------------------------------------------------------------------+ - |! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ | - |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ | - +---------------------------------------------------------------------+ - |Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > | - |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د | - +-----------------------------------------------------------+ - |A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" | - |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط | - +------------------------------------------------------+ - |Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ | - |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ | - +-------------------------------------------------+ - -Restrictions ------------- - -o VIM in its GUI form does not currently support Bi-directionality - (ie. the ability to see both Arabic and Latin intermixed within - the same line). - - -Known Bugs ----------- - -There is one known minor bug, - - 1. If you insert a haraka (eg. Fatha (U+064E)) after a LAM (U+0644) - and then insert an ALEF (U+0627), the appropriate combining will - not happen due to the sandwiched haraka resulting in something - that will NOT be displayed correctly. - - WORK-AROUND: Don't include harakats between LAM and ALEF combos. - In general, don't anticipate to see correct visual - representation with regard to harakats and LAM+ALEF - combined characters (even those entered after both - characters). The problem noted is strictly a visual - one, meaning saving such a file will contain all the - appropriate info/encodings - nothing is lost. - -No other bugs are known to exist. - - vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/hebrew.jax b/ja/hebrew.jax deleted file mode 100644 index 188882954..000000000 --- a/ja/hebrew.jax +++ /dev/null @@ -1,149 +0,0 @@ -COMMENT: ヘブライ語サポート -STATUS: suspend 6.3.054 -MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> - -*hebrew.txt* For Vim version 6.3. Last change: 2003 May 11 - - - VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem) - - -Hebrew Language support (options & mapping) for Vim *hebrew* - -The supporting 'rightleft' functionality was originally created by Avner -Lottem: - E-mail: alottem@iil.intel.com - Phone: +972-4-8307322 - -Ron Aaron <ron@ronware.org> is currently helping support these features. - -{Vi does not have any of these commands} - -All this is only available when the |+rightleft| feature was enabled at -compile time. - - -Introduction ------------- -Hebrew-specific options are 'hkmap', 'hkmapp' 'keymap'=hebrew and 'aleph'. -Hebrew-useful options are 'delcombine', 'allowrevins', 'revins', 'rightleft' -and 'rightleftcmd'. - -The 'rightleft' mode reverses the display order, so characters are displayed -from right to left instead of the usual left to right. This is useful -primarily when editing Hebrew or other Middle-Eastern languages. -See |rileft.txt| for further details. - -Details --------------- -+ Options: - + 'rightleft' ('rl') sets window orientation to right-to-left. This means - that the logical text 'ABC' will be displayed as 'CBA', and will start - drawing at the right edge of the window, not the left edge. - + 'hkmap' ('hk') sets keyboard mapping to Hebrew, in insert/replace modes. - + 'aleph' ('al'), numeric, holds the decimal code of Aleph, for keyboard - mapping. - + 'hkmapp' ('hkp') sets keyboard mapping to 'phonetic hebrew' - - NOTE: these three ('hkmap', 'hkmapp' and 'aleph') are obsolete. You should - use ":set keymap=hebrewp" instead. - - + 'delcombine' ('deco'), boolean, if editing UTF-8 encoded Hebrew, allows - one to remove the niqud or te`amim by pressing 'x' on a character (with - associated niqud). - - + 'rightleftcmd' ('rlc') makes the command-prompt for searches show up on - the right side. It only takes effect if the window is 'rightleft'. - -+ Encoding: - + Under Unix, ISO 8859-8 encoding (Hebrew letters codes: 224-250). - + Under MS DOS, PC encoding (Hebrew letters codes: 128-154). - These are defaults, that can be overridden using the 'aleph' option. - + You should prefer using UTF8, as it supports the combining-characters - ('deco' does nothing if UTF8 encoding is not active). - -+ Vim arguments: - + 'vim -H file' starts editing a Hebrew file, i.e. 'rightleft' and 'hkmap' - are set. - -+ Keyboard: - + The 'allowrevins' option enables the CTRL-_ command in Insert mode and - in Command-line mode. - - + CTRL-_ in insert/replace modes toggles 'revins' and 'hkmap' as follows: - - When in rightleft window, 'revins' and 'nohkmap' are toggled, since - English will likely be inserted in this case. - - When in norightleft window, 'revins' 'hkmap' are toggled, since Hebrew - will likely be inserted in this case. - - CTRL-_ moves the cursor to the end of the typed text. - - + CTRL-_ in command mode only toggles keyboard mapping (see Bugs below). - This setting is independent of 'hkmap' option, which only applies to - insert/replace mode. - - Note: On some keyboards, CTRL-_ is mapped to CTRL-?. - - + Keyboard mapping while 'hkmap' is set (standard Israeli keyboard): - - q w e r t y u i o p - / ' ק ר א ט ו ן ם פ - - a s d f g h j k l ; ' - ש ד ג כ ע י ח ל ך ף , - - z x c v b n m , . / - ז ס ב ה נ מ צ ת ץ . - - This is also the keymap when 'keymap=hebrew' is set. The advantage of - 'keymap' is that it works properly when using UTF8, e.g. it inserts the - correct characters; 'hkmap' does not. The 'keymap' keyboard can also - insert niqud and te`amim. To see what those mappings are,look at the - keymap file 'hebrew.vim' etc. - - -Typing backwards - -If the 'revins' (reverse insert) option is set, inserting happens backwards. -This can be used to type Hebrew. When inserting characters the cursor is not -moved and the text moves rightwards. A <BS> deletes the character under the -cursor. CTRL-W and CTRL-U also work in the opposite direction. <BS>, CTRL-W -and CTRL-U do not stop at the start of insert or end of line, no matter how -the 'backspace' option is set. - -There is no reverse replace mode (yet). - -If the 'showmode' option is set, "-- REVERSE INSERT --" will be shown in the -status line when reverse Insert mode is active. - -When the 'allowrevins' option is set, reverse Insert mode can be also entered -via CTRL-_, which has some extra functionality: First, keyboard mapping is -changed according to the window orientation -- if in a left-to-right window, -'revins' is used to enter Hebrew text, so the keyboard changes to Hebrew -('hkmap' is set); if in a right-to-left window, 'revins' is used to enter -English text, so the keyboard changes to English ('hkmap' is reset). Second, -when exiting 'revins' via CTRL-_, the cursor moves to the end of the typed -text (if possible). - - -Pasting when in a rightleft window ----------------------------------- -When cutting text with the mouse and pasting it in a rightleft window -the text will be reversed, because the characters come from the cut buffer -from the left to the right, while inserted in the file from the right to -the left. In order to avoid it, toggle 'revins' (by typing CTRL-? or CTRL-_) -before pasting. - - -Hebrew characters and the 'isprint' variable --------------------------------------------- -Sometimes Hebrew character codes are in the non-printable range defined by -the 'isprint' variable. For example in the Linux console, the Hebrew font -encoding starts from 128, while the default 'isprint' variable is @,161-255. -The result is that all Hebrew characters are displayed as ~x. To solve this -problem, set isprint=@,128-255. - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/netbeans.jax b/ja/netbeans.jax deleted file mode 100644 index 3e28ee46b..000000000 --- a/ja/netbeans.jax +++ /dev/null @@ -1,739 +0,0 @@ -COMMENT: NetBeansの外部エディタ統合機能 -STATUS: suspend 6.3.054 -MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> - -*netbeans.txt* For Vim version 6.3. Last change: 2004 May 01 - - - VIM REFERENCE MANUAL by Gordon Prieur - - -NetBeans ExternalEditor Integration Features *netbeans* - *netbeans-support* -1. Introduction |netbeans-intro| -2. NetBeans Key Bindings |netbeans-keybindings| -3. Configuring Vim for NetBeans |netbeans-configure| -4. Downloading NetBeans |netbeans-download| -5. Preparing NetBeans for Vim |netbeans-preparation| -6. Obtaining the External Editor Module |obtaining-exted| -7. Setting up NetBeans to run with Vim |netbeans-setup| -8. Messages |netbeans-messages| -9. Running Vim from NetBeans |netbeans-run| -10. NetBeans protocol |netbeans-protocol| -11. Known problems |netbeans-problems| - -{Vi does not have any of these features} -{only available when compiled with the |+netbeans_intg| feature} - -============================================================================== -1. Introduction *netbeans-intro* - -NetBeans is an open source Integrated Development Environment developed -jointly by Sun Microsystems, Inc. and the netbeans.org developer community. -Initially just a Java IDE, NetBeans has had C, C++, and Fortran support added -in recent releases. - -For more information visit the main NetBeans web site http://www.netbeans.org -or the NetBeans External Editor site at http://externaleditor.netbeans.org. - -Sun Microsystems, Inc. also ships NetBeans under the name Sun ONE Studio. -Visit http://www.sun.com for more information regarding the Sun ONE Studio -product line. - -Current releases of NetBeans provide full support for Java and limited support -for C, C++, and Fortran. Current releases of Sun ONE Studio provide full -support for Java, C, C++, and Fortran. - -The interface to NetBeans is also supported by Agide, the A-A-P GUI IDE. -Agide is very different from NetBeans: -- Based on Python instead of Java, much smaller footprint and fast startup. -- Agide is a framework in which many different tools can work together. -See the A-A-P website for information: http://www.A-A-P.org. - -============================================================================== -2. NetBeans Key Bindings *netbeans-keybindings* - -Vim understands a number of key bindings that execute NetBeans commands. These -are typically all the Function key combinations. To execute a NetBeans command, -the user must press the Pause key followed by a NetBeans key binding. For -example, in order to compile a Java file, the NetBeans key binding is "F9". So, -while in vim, press "Pause F9" to compile a java file. To toggle a breakpoint -at the current line, press "Pause Shift F8". - -The Pause key is Function key 21. If you don't have a working Pause key and -want to use F8 instead, use: > - - :map <F8> <F21> - -The External Editor module dynamically reads the NetBeans key bindings so vim -should always have the latest key bindings, even when NetBeans changes them. - -============================================================================== -3. Configuring Vim for NetBeans *netbeans-configure* - -For more help installing vim, please read |usr_90.txt| in the Vim User Manual. - - -On Unix - -When running configure without arguments the NetBeans interface should be -included. That is, if the configure check to find out if your system supports -the required features succeeds. - -In case you do not want the NetBeans interface you can disable it by -uncommenting a line with "--disable-netbeans" in the Makefile. - -Currently, only gvim is supported in this integration as NetBeans does not -have means to supply a terminal emulator for the vim command. Furthermore, -there is only GUI support for GTK, GNOME, and Motif. - -If Motif support is required the user must supply XPM libraries. See -|workshop-xpm| for details on obtaining the latest version of XPM. - - -On MS-Windows - -The Win32 support is now in beta stage. - -To use XPM signs on Win32 (e.g. when using with NetBeans) you can compile -XPM by yourself or use precompiled libraries from http://iamphet.nm.ru/misc/ -(for MS Visual C++) or http://gnuwin32.sourceforge.net (for MinGW). - -============================================================================== -4. Downloading NetBeans *netbeans-download* - -The NetBeans IDE is available for download from netbeans.org. You can download -a released version, download sources, or use CVS to download the current -source tree. If you choose to download sources, follow directions from -netbeans.org on building NetBeans. - -Depending on the version of NetBeans you download, you may need to do further -work to get the required External Editor module. This is the module which lets -NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org -for details on downloading this module if your NetBeans release does not have -it. - -For C, C++, and Fortran support you will also need the cpp module. See -http://cpp.netbeans.org for information regarding this module. - -You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day -free trial. See http://www.sun.com for further details. - -============================================================================== -5. Preparing NetBeans for Vim *netbeans-preparation* - -In order for NetBeans to work with vim, the NetBeans External Editor module -must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition -then this module should be loaded and enabled. If you have a NetBeans release -you may need to find another way of obtaining this open source module. - -You can check if you have this module by opening the Tools->Options dialog -and drilling down to the "Modules" list (IDE Configuration->System->Modules). -If your Modules list has an entry for "External Editor" you must make sure -it is enabled (the "Enabled" property should have the value "True"). If your -Modules list has no External Editor see the next section on |obtaining-exted|. - -============================================================================== -6. Obtaining the External Editor Module *obtaining-exted* - -There are 2 ways of obtaining the External Editor module. The easiest way -is to use the NetBeans Update Center to download and install the module. -Unfortunately, some versions do not have this module in their update -center. If you cannot download via the update center you will need to -download sources and build the module. I will try and get the module -available from the NetBeans Update Center so building will be unnecessary. -Also check http://externaleditor.netbeans.org for other availability options. - -To download the External Editor sources via CVS and build your own module, -see http://externaleditor.netbeans.org and http://www.netbeans.org. -Unfortunately, this is not a trivial procedure. - -============================================================================== -7. Setting up NetBeans to run with Vim *netbeans-setup* - -Assuming you have loaded and enabled the NetBeans External Editor module -as described in |netbeans-preparation| all you need to do is verify that -the gvim command line is properly configured for your environment. - -Open the Tools->Options dialog and open the Editing category. Select the -External Editor. The right hand pane should contain a Properties tab and -an Expert tab. In the Properties tab make sure the "Editor Type" is set -to "Vim". In the Expert tab make sure the "Vim Command" is correct. - -You should be careful if you change the "Vim Command". There are command -line options there which must be there for the connection to be properly -set up. You can change the command name but thats about it. If your gvim -can be found by your $PATH then the VIM Command can start with "gvim". If -you don't want gvim searched from your $PATH then hard code in the full -Unix path name. At this point you should get a gvim for any source file -you open in NetBeans. - -If some files come up in gvim and others (with different file suffixes) come -up in the default NetBeans editor you should verify the MIME type in the -Expert tab MIME Type property. NetBeans is MIME oriented and the External -Editor will only open MIME types specified in this property. - -============================================================================== -8. Messages *netbeans-messages* - -These messages are specific for NetBeans: - - *E463* -Region is guarded, cannot modify - NetBeans defines guarded areas in the text, which you cannot - change. - - *E656* -NetBeans dissallows writes of unmodified buffers - NetBeans does not support writes of unmodified buffers that - were opened from NetBeans. - - *E657* -Partial writes disallowed for NetBeans buffers - NetBeans does not support partial writes for buffers that were - opened from NetBeans. - - *E658* -NetBeans connection lost for this buffer - NetBeans has become confused about the state of this file. - Rather than risc data corruption, NetBeans has severed the - connection for this file. Vim will take over responsibility - for saving changes to this file and NetBeans will no longer - know of these changes. - -============================================================================== -9. Running Vim from NetBeans *netbeans-run* - -NetBeans starts Vim with the |-nb| argument. Three forms can be used, that -differ in the way the information for the connection is specified: - - -nb={fname} from a file - -nb:{hostname}:{addr}:{password} directly - -nb from a file or environment - - *E660* *E668* -For security reasons, the best method is to write the information in a file -readable only by the user. The name of the file can be passed with the -"-nb={fname}" argument or, when "-nb" is used without a parameter, the -environment variable "__NETBEANS_CONINFO". The file must contain these three -lines, in any order: - - host={hostname} - port={addr} - auth={password} - -Other lines are ignored. The caller of Vim is responsible for deleting the -file afterwards. - -{hostname} is the name of the machine where NetBeans is running. When omitted -the environment variable "__NETBEANS_HOST" is used or the default "localhost". - -{addr} is the port number for NetBeans. When omitted the environment variable -"__NETBEANS_SOCKET" is used or the default 3219. - -{password} is the password for connecting to NetBeans. When omitted the -environment variable "__NETBEANS_VIM_PASSWORD" is used or "changeme". - -============================================================================== -10. NetBeans protocol *netbeans-protocol* - -The communication between NetBeans and Vim uses plain text messages. This -protocol was first designed to work with the external editor module of -NetBeans (see http://externaleditor.netbeans.org). Later it was extended to -work with Agide (A-A-P GUI IDE, see http://www.a-a-p.org). The extensions are -marked with "version 2.1". - -Version 2.2 of the protocol has several minor changes which should only -affect NetBeans users (ie, not Agide users). However, a bug was fixed which -could cause confusion. The netbeans_saved() function sent a "save" protocol -command. In protocol version 2.1 and earlier this was incorrectly interpreted -as a notification that a write had taken place. In reality, it told NetBeans -to save the file so multiple writes were being done. This caused various -problems and has been fixed in 2.2. To decrease the likelyhood of this -confusion happening again, netbeans_saved() has been renamed to -netbeans_save_buffer(). - -The messages are currently sent over a socket. Since the messages are in -plain UTF-8 text this protocol could also be used with any other communication -mechanism. - -10.1 Kinds of messages |nb-messages| -10.2 Terms |nb-terms| -10.3 Commands |nb-commands| -10.4 Functions and Replies |nb-functions| -10.5 Events |nb-events| -10.6 Special messages |nb-special| - -*E627* *E628* *E629* *E630* *E631* *E632* *E633* *E634* *E635* *E636* -*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646* -*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654* -These errors occur when a message violates the protocol. - - -10.1 Kinds of messages *nb-messages* - -There are four kinds of messages: - -kind direction comment ~ -Command IDE -> editor no reply necessary -Function IDE -> editor editor must send back a reply -Reply editor -> IDE only in response to a Function -Event editor -> IDE no reply necessary - -The messages are sent as a single line with a terminating newline character. -Arguments are separated by a single space. The first item of the message -depends on the kind of message: - -kind first item example ~ -Command bufID:name!seqno 11:showBalloon!123 "text" -Function bufID:name/seqno 11:getLength/123 -Reply seqno 123 5000 -Event bufID:name=123 11:keyCommand=123 "S-F2" - - -10.2 Terms *nb-terms* - -bufID Buffer number. A message may be either for a specific buffer - or generic. Generic messages use a bufID of zero. NOTE: this - buffer ID is assigned by the IDE, it is not Vim's buffer - number. The bufID must be a sequentially rising number, - starting at one. - -seqno The IDE uses a sequence number for Commands and Functions. A - Reply must use the sequence number of the Function that it is - associated with. A zero sequence number can be used for - Events (the seqno of the last received Command or Function can - also be used). - -string Argument in double quotes. Text is in UTF-8 encoding. This - means ASCII is passed as-is. Special characters are - represented with a backslash: - \" double quote - \n newline - \r carriage-return - \t tab (optional, also works literally) - \\ backslash - NUL bytes are not allowed! - -boolean Argument with two possible values: - T true - F false - -number Argument with a decimal number. - -optnum Argument with either a decimal number or "none" (without the - quotes). - -offset A number argument that indicates a byte position in a buffer. - The first byte has offset zero. Line breaks are counted for - how they appear in the file (CR/LF counts for two bytes). - Note that a multi-byte character is counted for the number of - bytes it takes. - -lnum/col Argument with a line number and column number position. The - line number starts with one, the column is the byte position, - starting with zero. Note that a multi-byte character counts - for several columns. - -pathname String argument: file name with full path. - - -10.3 Commands *nb-commands* - -actionMenuItem Not implemented. - -actionSensitivity - Not implemented. - -addAnno serNum typeNum off len - Place an annotation in this buffer. - Arguments: - serNum number serial number of this placed - annotation, used to be able to remove - it - typeNum number sequence number of the annotation - defined with defineAnnoType for this - buffer - off number offset where annotation is to be placed - len number not used - In version 2.1 "lnum/col" can be used instead of "off". - -balloonResult text - Not implemented. - -close Close the buffer. This leaves us without current buffer, very - dangerous to use! - -create Creates a buffer without a name. Replaces the current buffer - (it's hidden when it was changed). - NetBeans uses this as the first command for a file that is - being opened. The sequence of commands could be: - create - setCaretListener (ignored) - setModified (no effect) - setContentType (ignored) - startDocumentListen - setTitle - setFullName - -defineAnnoType typeNum typeName tooltip glyphFile fg bg - Define a type of annotation for this buffer. - Arguments: - typeNum number sequence number (not really used) - typeName string name that identifies this annotation - tooltip string not used - glyphFile string name of icon file - fg optnum foreground color for line highlighting - bg optnum background color for line highlighting - Vim will define a sign for the annotation. - When both "fg" and "bg" are "none" no line highlighting is - used (new in version 2.1). - When "glyphFile" is empty, no text sign is used (new in - version 2.1). - When "glyphFile" is one or two characters long, a text sign is - defined (new in version 2.1). - Note: the annotations will be defined in sequence, and the - sequence number is later used with addAnno. - -editFile pathname - Set the name for the buffer and edit the file "pathname", a - string argument. - Normal way for the IDE to tell the editor to edit a file. If - the IDE is going to pass the file text to the editor use these - commands instead: - setFullName - insert - initDone - New in version 2.1. - -enableBalloonEval - Not implemented. - -endAtomic End an atomic operation. The changes between "startAtomic" - and "endAtomic" can be undone as one operation. But it's not - implemented yet. Redraw when necessary. - -guard off len - Mark an area in the buffer as guarded. This means it cannot - be edited. "off" and "len" are numbers and specify the text - to be guarded. - -initDone Mark the buffer as ready for use. Implicitly makes the buffer - the current buffer. Fires the BufReadPost autocommand event. - -moveAnnoToFront serNum - Not implemented. - -netbeansBuffer isNetbeansBuffer - If "isNetbeansBuffer" is "T" then this buffer is ``owned'' by - NetBeans. - New in version 2.2. - -putBufferNumber pathname - Associate a buffer number with the Vim buffer by the name - "pathname", a string argument. To be used when the editor - reported editing another file to the IDE and the IDE needs to - tell the editor what buffer number it will use for this file. - Also marks the buffer as initialized. - New in version 2.1. - -raise Bring the editor to the foreground. - New in version 2.1. - -removeAnno serNum - Remove a previously place annotation for this buffer. - "serNum" is the same number used in addAnno. - -save Save the buffer when it was modified. The other side of the - interface is expected to write the buffer and invoke - "setModified" to reset the "changed" flag of the buffer. - The writing is skipped when one of these conditions is true: - - 'write' is not set - - the buffer is read-only - - the buffer does not have a file name - - 'buftype' disallows writing - New in version 2.2. - -setAsUser Not implemented. - -setBufferNumber pathname - Associate a buffer number with Vim buffer by the name - "pathname". To be used when the editor reported editing - another file to the IDE and the IDE needs to tell the editor - what buffer number it will use for this file. - Has the side effect of making the buffer the current buffer. - See "putBufferNumber" for a more useful command. - -setContentType - Not implemented. - -setDot off Make the buffer the current buffer and set the cursor at the - specified position. If there are folds they are opened to - make the cursor line visible. - In version 2.1 "lnum/col" can be used instead of "off". - -setExitDelay seconds - Set the delay for exiting to "seconds", a number. - This delay is used to give the IDE a chance to handle things - before really exiting. The default delay is two seconds. - New in version 2.1. - -setFullName pathname - Set the file name to be used for a buffer to "pathname", a - string argument. - Used when the IDE wants to edit a file under control of the - IDE. This makes the buffer the current buffer, but does not - read the file. "insert" commands will be used next to set the - contents. - -setLocAndSize Not implemented. - -setMark Not implemented. - -setModified modified - When the boolean argument "modified" is "T" mark the buffer as - modified, when it is "F" mark it as unmodified. - -setReadOnly Not implemented. - -setStyle Not implemented. - -setTitle name - Set the title for the buffer to "name", a string argument. - The title is only used for NetBeans functions, not by Vim. - -setVisible visible - When the boolean argument "visible" is "T", goto the buffer. - The "F" argument does nothing. - -showBalloon text - Show a balloon (popup window) at the mouse pointer position, - containing "text", a string argument. The balloon should - disappear when the mouse is moved more than a few pixels. - New in version 2.1. - -specialKeys Not implemented. - -startAtomic Begin an atomic operation. The screen will not be updated - until "endAtomic" is given. - -startCaretListen - Not implemented. - -startDocumentListen - Mark the buffer to report changes to the IDE with the - "insert" and "remove" events. The default is to report - changes. - -stopCaretListen - Not implemented. - -stopDocumentListen - Mark the buffer to stop reporting changes to the IDE. - Opposite of startDocumentListen. - -unguard off len - Opposite of "guard", remove guarding for a text area. - -version Not implemented. - - -10.4 Functions and Replies *nb-functions* - -getDot Not implemented. - -getCursor Return the current buffer and cursor position. - The reply is: - seqno bufID lnum col off - seqno = sequence number of the function - bufID = buffer ID of the current buffer (if this is unknown -1 - is used) - lnum = line number of the cursor (first line is one) - col = column number of the cursor (in bytes, zero based) - off = offset of the cursor in the buffer (in bytes) - New in version 2.1. - -getLength Return the length of the buffer in bytes. - Reply example for a buffer with 5000 bytes: - 123 5000 - TODO: explain use of partial line. - -getMark Not implemented. - -getModified When a buffer is specified: Return zero if the buffer does not - have changes, one if it does have changes. - When no buffer is specified (buffer number zero): Return the - number of buffers with changes. When the result is zero it's - safe to tell Vim to exit. - New in version 2.1. - -getText Return the contents of the buffer as a string. - Reply example for a buffer with two lines - 123 "first line\nsecond line\n" - NOTE: docs indicate an offset and length argument, but this is - not implemented. - -insert off text - Insert "text" before position "off". "text" is a string - argument, "off" a number. - Possible replies: - 123 no problem - 123 !message failed - Note that the message in the reply is not quoted. - -remove off length - Delete "length" bytes of text at position "off". Both - arguments are numbers. - Possible replies: - 123 no problem - 123 !message failed - Note that the message in the reply is not quoted. - -saveAndExit Perform the equivalent of closing Vim: ":confirm qall". - If there are no changed files or the user does not cancel the - operation Vim exits and no result is sent back. The IDE can - consider closing the connection as a successful result. - If the user cancels the operation the number of modified - buffers that remains is returned and Vim does not exit. - New in version 2.1. - - -10.5 Events *nb-events* - -balloonEval off len type - The mouse pointer rests on text for a short while. When "len" - is zero, there is no selection and the pointer is at position - "off". When "len" is non-zero the text from position "off" to - "off" + "len" is selected. - Only sent after "enableBalloonEval" was used for this buffer. - "type" is not yet defined. - Not implemented yet. - -balloonText text - Used when 'ballooneval' is set and the mouse pointer rests on - some text for a moment. "text" is a string, the text under - the mouse pointer. - New in version 2.1. - -buttonRelease button lnum col - Report which button was pressed and the location of the cursor - at the time of the release. Only for buffers that are owned - by NetBeans. This event is not sent if the button was - released while the mouse was in the status line or in a - separator line. If col is less than 1 the button release was - in the sign area. - New in version 2.2. - -fileClosed Not implemented. - -fileModified Not implemented. - -fileOpened pathname open modified - A file was opened by the user. - Arguments: - pathname string name of the file - open boolean always "T" - modified boolean always "F" - -geometry cols rows x y - Report the size and position of the editor window. - Arguments: - cols number number of text columns - rows number number of text rows - x number pixel position on screen - y number pixel position on screen - Only works for Motif. - -insert off text - Text "text" has been inserted in Vim at position "off". - Only fired when enabled, see "startDocumentListen". - -invokeAction Not implemented. - -keyCommand keyName - Reports a special key being pressed with name "keyName", which - is a string. - Supported key names: - F1 function key 1 - F2 function key 2 - ... - F12 function key 12 - - ' ' space (without the quotes) - ! exclamation mark - ... any other ASCII printable character - ~ tilde - - X any unrecognized key - - The key may be prepended by "C", "S" and/or "M" for Control, - Shift and Meta (Alt) modifiers. If there is a modifier a dash - is used to separate it from the key name. For example: - "C-F2". - ASCII characters are new in version 2.1. - -keyAtPos keyName lnum/col - Like "keyCommand" and also report the line number and column - of the cursor. - New in version 2.1. - -killed A file was closed by the user. Only for files that have been - assigned a number by the IDE. - -newDotAndMark off off - Reports the position of the cursor being at "off" bytes into - the buffer. Only sent just before a "keyCommand" event. - -quit Not implemented. - -remove off len - Text was deleted in Vim at position "off" with byte length - "len". - Only fired when enabled, see "startDocumentListen". - -revert Not implemented. - -save The buffer has been saved and is now unmodified. - Only fired when enabled, see "startDocumentListen". - -startupDone The editor has finished its startup work and is ready for - editing files. - New in version 2.1. - -unmodified The buffer is now unmodified. - Only fired when enabled, see "startDocumentListen". - -version vers Report the version of the interface implementation. Vim - reports "2.2" (including the quotes). - - -10.6 Special messages *nb-special* - -These messages do not follow the style of the messages above. They are -terminated by a newline character. - -ACCEPT Not used. - -AUTH password editor -> IDE: First message that the editor sends to the IDE. - Must contain the password for the socket server, as specified - with the |-nb| argument. No quotes are used! - -DISCONNECT IDE -> editor: break the connection. The editor will exit. - The IDE must only send this message when there are no unsaved - changes! - -DETACH IDE -> editor: break the connection without exiting the - editor. Used when the IDE exits without bringing down the - editor as well. - New in version 2.1. - -REJECT Not used. - -============================================================================== -11. Known problems *netbeans-problems* - -NUL bytes are not possible. For editor -> IDE they will appear as NL -characters. For IDE -> editor they cannot be inserted. - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/pi_netrw.jax b/ja/pi_netrw.jax index fc57cfad8..4df1fef0f 100644 --- a/ja/pi_netrw.jax +++ b/ja/pi_netrw.jax @@ -1,5 +1,5 @@ COMMENT: プラグイン:ネットワーク越しの編集 -STATUS: finish 6.3.054 +STATUS: finished 6.3.054 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> diff --git a/ja/pi_tar.jax b/ja/pi_tar.jax index 11a7f1c0e..f94a15aa6 100644 --- a/ja/pi_tar.jax +++ b/ja/pi_tar.jax @@ -1,5 +1,5 @@ COMMENT: tarファイルインターフェース -STATUS: suspend 7.0 +STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> *pi_tar.txt* For Vim version 7.0. Last change: 2006 May 02 diff --git a/ja/pi_vimball.jax b/ja/pi_vimball.jax index e902409b5..5cdd12d48 100644 --- a/ja/pi_vimball.jax +++ b/ja/pi_vimball.jax @@ -1,5 +1,5 @@ COMMENT: Vimballアーカイバ -STATUS: suspend 7.0 +STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> *pi_vimball.txt* For Vim version 7.0. Last change: 2006 May 01 diff --git a/ja/pi_zip.jax b/ja/pi_zip.jax index 49f2cc0f2..7fd99fd52 100644 --- a/ja/pi_zip.jax +++ b/ja/pi_zip.jax @@ -1,5 +1,5 @@ COMMENT: zipファイルインターフェース -STATUS: suspend 7.0 +STATUS: finished 7.0 TRANSLATOR: nakadaira <hopper2@nanameue.jp> *pi_zip.txt* For Vim version 7.0. Last change: 2006 May 01 diff --git a/ja/quickfix.jax b/ja/quickfix.jax index df0c864c4..b13ff1b13 100644 --- a/ja/quickfix.jax +++ b/ja/quickfix.jax @@ -1,5 +1,5 @@ COMMENT: クイックフィックス(プログラム開発支援) -STATUS: finish 7.0 +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> diff --git a/ja/russian.jax b/ja/russian.jax deleted file mode 100644 index d5e5d8e75..000000000 --- a/ja/russian.jax +++ /dev/null @@ -1,86 +0,0 @@ -COMMENT: ロシア語ローカライゼーションとサポート -STATUS: suspend 6.3.054 -MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> - -*russian.txt* For Vim version 6.3. Last change: 2004 May 16 - - - VIM REFERENCE MANUAL by Vassily Ragosin - - -Russian language localization and support in Vim *russian* *Russian* - -1. Introduction |russian-intro| -2. Russian keymaps |russian-keymap| -3. Localization |russian-l18n| -4. Known issues |russian-issues| - -=============================================================================== -1. Introduction *russian-intro* - -Russian language is supported perfectly well in Vim. You can type and view -Russian text just as any other, without the need to tweak the settings. - -=============================================================================== -2. Russian keymaps *russian-keymap* - -To switch between languages you can use your system native keyboard switcher, -or use one of the russian keymaps, included in Vim distribution. For example, -> - :set keymap=russian-jcukenwin -< -In the later case, you can switch between languages even if you do not have -system Russian keyboard or independently from a system-wide keyboard settings. -See 'keymap'. You can also map a key to switch between keyboards, if you -choose the later option. See |:map|. - -For your convenience, to avoid switching between keyboards, when you need to -enter Normal mode command, you can also set 'langmap' option: -> - :set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ, - фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz - -This is in utf-8, you cannot read this if your 'encoding' is not utf-8. -You have to type this command in one line, it is wrapped for the sake of -readability. - -=============================================================================== -3. Localization *russian-l18n* - -If you wish to use messages, help files, menus and other items translated to -Russian, you will need to install RuVim Language Pack, available in different -codepages from - - http://www.sourceforge.net/projects/ruvim/ - -Make sure that your Vim is at least 6.2.506 and use ruvim 0.5 or later for -automatic installs. Vim also needs to be compiled with |+gettext| feature for -user interface items translations to work. - -After downloading an archive from RuVim project, unpack it into your -$VIMRUNTIME directory. We recommend using UTF-8 archive, if your version of -Vim is compiled with |+multi_byte| feature enabled. - -In order to use Russian documentation, make sure you have set 'helplang' -option to "ru". - -=============================================================================== -4. Known issues *russian-issues* - --- If you are using Russian message translations in Win32 console, then - you may see the output produced by "vim --help", "vim --version" commands - and Win32 console window title appearing in a wrong codepage. This problem - is related to a bug in GNU gettext library and may be fixed in the future - releases of gettext. - --- When using Win32 console version of Vim you may experience a problem with - many cyrillic glyphs being replaced by whitespaces for some unknown reason. - Sergey Khorev suggested a registry hack to avoid this: - - REGEDIT4 - - [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage] - "1252"="c_1251.nls" - -=============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/term.jax b/ja/term.jax deleted file mode 100644 index 5ca3b43bd..000000000 --- a/ja/term.jax +++ /dev/null @@ -1,812 +0,0 @@ -COMMENT: 端末設定 -STATUS: supspend 6.3.054 -MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> - -*term.txt* For Vim version 6.3. Last change: 2004 Jan 09 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Terminal information *terminal-info* - -Vim uses information about the terminal you are using to fill the screen and -recognize what keys you hit. If this information is not correct, the screen -may be messed up or keys may not be recognized. The actions which have to be -performed on the screen are accomplished by outputting a string of -characters. Special keys produce a string of characters. These strings are -stored in the terminal options, see |terminal-options|. - -NOTE: Most of this is not used when running the |GUI|. - -1. Startup |startup-terminal| -2. Terminal options |terminal-options| -3. Window size |window-size| -4. Slow and fast terminals |slow-fast-terminal| -5. Using the mouse |mouse-using| - -============================================================================== -1. Startup *startup-terminal* - -When Vim is started a default terminal type is assumed. For the Amiga this is -a standard CLI window, for MS-DOS the pc terminal, for Unix an ansi terminal. -A few other terminal types are always available, see below |builtin-terms|. - -You can give the terminal name with the '-T' Vim argument. If it is not given -Vim will try to get the name from the TERM environment variable. - - *termcap* *terminfo* *E557* *E558* *E559* -On Unix the terminfo database or termcap file is used. This is referred to as -"termcap" in all the documentation. At compile time, when running configure, -the choice whether to use terminfo or termcap is done automatically. When -running Vim the output of ":version" will show |+terminfo| if terminfo is -used. Also see |xterm-screens|. - -On non-Unix systems a termcap is only available if Vim was compiled with -TERMCAP defined. - - *builtin-terms* *builtin_terms* -Which builtin terminals are available depends on a few defines in feature.h, -which need to be set at compile time: - define output of ":version" terminals builtin ~ -NO_BUILTIN_TCAPS -builtin_terms none -SOME_BUILTIN_TCAPS +builtin_terms most common ones (default) -ALL_BUILTIN_TCAPS ++builtin_terms all available - -You can see a list of available builtin terminals with ":set term=xxx" (when -not running the GUI). Also see |+builtin_terms|. - -If the termcap code is included Vim will try to get the strings for the -terminal you are using from the termcap file and the builtin termcaps. Both -are always used, if an entry for the terminal you are using is present. Which -one is used first depends on the 'ttybuiltin' option: - -'ttybuiltin' on 1: builtin termcap 2: external termcap -'ttybuiltin' off 1: external termcap 2: builtin termcap - -If an option is missing in one of them, it will be obtained from the other -one. If an option is present in both, the one first encountered is used. - -Which external termcap file is used varies from system to system and may -depend on the environment variables "TERMCAP" and "TERMPATH". See "man -tgetent". - -Settings depending on terminal *term-dependent-settings* - -If you want to set options or mappings, depending on the terminal name, you -can do this best in your .vimrc. Example: > - - if &term == "xterm" - ... xterm maps and settings ... - elseif &term =~ "vt10." - ... vt100, vt102 maps and settings ... - endif -< - *raw-terminal-mode* -For normal editing the terminal will be put into "raw" mode. The strings -defined with 't_ti' and 't_ks' will be sent to the terminal. Normally this -puts the terminal in a state where the termcap codes are valid and activates -the cursor and function keys. When Vim exits the terminal will be put back -into the mode it was before Vim started. The strings defined with 't_te' and -'t_ke' will be sent to the terminal. On the Amiga, with commands that execute -an external command (e.g., "!!"), the terminal will be put into Normal mode -for a moment. This means that you can stop the output to the screen by -hitting a printing key. Output resumes when you hit <BS>. - - *cs7-problem* -Note: If the terminal settings are changed after running Vim, you might have -an illegal combination of settings. This has been reported on Solaris 2.5 -with "stty cs8 parenb", which is restored as "stty cs7 parenb". Use -"stty cs8 -parenb -istrip" instead, this is restored correctly. - -Some termcap entries are wrong in the sense that after sending 't_ks' the -cursor keys send codes different from the codes defined in the termcap. To -avoid this you can set 't_ks' (and 't_ke') to empty strings. This must be -done during initialization (see |initialization|), otherwise it's too late. - -Some termcap entries assume that the highest bit is always reset. For -example: The cursor-up entry for the Amiga could be ":ku=\E[A:". But the -Amiga really sends "\233A". This works fine if the highest bit is reset, -e.g., when using an Amiga over a serial line. If the cursor keys don't work, -try the entry ":ku=\233A:". - -Some termcap entries have the entry ":ku=\E[A:". But the Amiga really sends -"\233A". On output "\E[" and "\233" are often equivalent, on input they -aren't. You will have to change the termcap entry, or change the key code with -the :set command to fix this. - -Many cursor key codes start with an <Esc>. Vim must find out if this is a -single hit of the <Esc> key or the start of a cursor key sequence. It waits -for a next character to arrive. If it does not arrive within one second a -single <Esc> is assumed. On very slow systems this may fail, causing cursor -keys not to work sometimes. If you discover this problem reset the 'timeout' -option. Vim will wait for the next character to arrive after an <Esc>. If -you want to enter a single <Esc> you must type it twice. Resetting the -'esckeys' option avoids this problem in Insert mode, but you lose the -possibility to use cursor and function keys in Insert mode. - -On the Amiga the recognition of window resizing is activated only when the -terminal name is "amiga" or "builtin_amiga". - -Some terminals have confusing codes for the cursor keys. The televideo 925 is -such a terminal. It sends a CTRL-H for cursor-left. This would make it -impossible to distinguish a backspace and cursor-left. To avoid this problem -CTRL-H is never recognized as cursor-left. - - *vt100-cursor-keys* *xterm-cursor-keys* -Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA, -<Esc>OB, etc. Unfortunately these are valid commands in insert mode: Stop -insert, Open a new line above the new one, start inserting 'A', 'B', etc. -Instead of performing these commands Vim will erroneously recognize this typed -key sequence as a cursor key movement. To avoid this and make Vim do what you -want in either case you could use these settings: > - :set notimeout " don't timeout on mappings - :set ttimeout " do timeout on terminal key codes - :set timeoutlen=100 " timeout after 100 msec -This requires the key-codes to be sent within 100msec in order to recognize -them as a cursor key. When you type you normally are not that fast, so they -are recognized as individual typed commands, even though Vim receives the same -sequence of bytes. - - *vt100-function-keys* *xterm-function-keys* -An xterm can send function keys F1 to F4 in two modes: vt100 compatible or -not. Because Vim cannot know what the xterm is sending, both types of keys -are recognized. The same happens for the <Home> and <End> keys. - normal vt100 ~ - <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* - <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* - <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* - <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* - <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* - <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* - -When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc. This means that -by default both codes do the same thing. If you make a mapping for <xF2>, -because your terminal does have two keys, the default mapping is overwritten, -thus you can use the <F2> and <xF2> keys for something different. - - *xterm-shifted-keys* -Newer versions of xterm support shifted function keys and special keys. Vim -recognizes most of them. Use ":set termcap" to check which are supported and -what the codes are. Mostly these are not in a termcap, they are only -supported by the builtin_xterm termcap. - - *xterm-scroll-region* -The default termcap entry for xterm on Sun and other platforms does not -contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm -entry in /etc/termcap and everything should work. - - *xterm-end-home-keys* -On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the -<End> and <Home> keys send contain a <Nul> character. To make these keys send -the proper key code, add these lines to your ~/.Xdefaults file: - -*VT100.Translations: #override \n\ - <Key>Home: string("0x1b") string("[7~") \n\ - <Key>End: string("0x1b") string("[8~") - - *xterm-8bit* *xterm-8-bit* -Xterm can be run in a mode where it uses 8-bit escape sequences. The CSI code -is used instead of <Esc>[. The advantage is that an <Esc> can quickly be -recognized in Insert mode, because it can't be confused with the start of a -special key. -For the builtin termcap entries, Vim checks if the 'term' option contains -"8bit" anywhere. It then uses 8-bit characters for the termcap entries, the -mouse and a few other things. You would normally set $TERM in your shell to -"xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting -automatically. -When Vim receives a response to the |t_RV| (request version) sequence and it -starts with CSI, it assumes that the terminal is in 8-bit mode and will -convert all key sequences to their 8-bit variants. - -============================================================================== -2. Terminal options *terminal-options* *E436* - -The terminal options can be set just like normal options. But they are not -shown with the ":set all" command. Instead use ":set termcap". - -It is always possible to change individual strings by setting the -appropriate option. For example: > - :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) - -{Vi: no terminal options. You have to exit Vi, edit the termcap entry and -try again} - -The options are listed below. The associated termcap code is always equal to -the last two characters of the option name. Only one termcap code is -required: Cursor motion, 't_cm'. - -The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap. -When the termcap flag is present, the option will be set to "y". But any -non-empty string means that the flag is set. An empty string means that the -flag is not set. 't_CS' works like this too, but it isn't a termcap flag. - -OUTPUT CODES - option meaning ~ - - t_AB set background color (ANSI) *t_AB* *'t_AB'* - t_AF set foreground color (ANSI) *t_AF* *'t_AF'* - t_AL add number of blank lines *t_AL* *'t_AL'* - t_al add new blank line *t_al* *'t_al'* - t_bc backspace character *t_bc* *'t_bc'* - t_cd clear to end of screen *t_cd* *'t_cd'* - t_ce clear to end of line *t_ce* *'t_ce'* - t_cl clear screen *t_cl* *'t_cl'* - t_cm cursor motion (required!) *E437* *t_cm* *'t_cm'* - t_Co number of colors *t_Co* *'t_Co'* - t_CS if non-empty, cursor relative to scroll region *t_CS* *'t_CS'* - t_cs define scrolling region *t_cs* *'t_cs'* - t_CV define vertical scrolling region *t_CV* *'t_CV'* - t_da if non-empty, lines from above scroll down *t_da* *'t_da'* - t_db if non-empty, lines from below scroll up *t_db* *'t_db'* - t_DL delete number of lines *t_DL* *'t_DL'* - t_dl delete line *t_dl* *'t_dl'* - t_fs set window title end (from status line) *t_fs* *'t_fs'* - t_ke exit "keypad transmit" mode *t_ke* *'t_ke'* - t_ks start "keypad transmit" mode *t_ks* *'t_ks'* - t_le move cursor one char left *t_le* *'t_le'* - t_mb blinking mode *t_mb* *'t_mb'* - t_md bold mode *t_md* *'t_md'* - t_me Normal mode (undoes t_mr, t_mb, t_md and color) *t_me* *'t_me'* - t_mr reverse (invert) mode *t_mr* *'t_mr'* - *t_ms* *'t_ms'* - t_ms if non-empty, cursor can be moved in standout/inverse mode - t_nd non destructive space character *t_nd* *'t_nd'* - t_op reset to original color pair *t_op* *'t_op'* - t_RI cursor number of chars right *t_RI* *'t_RI'* - t_Sb set background color *t_Sb* *'t_Sb'* - t_Sf set foreground color *t_Sf* *'t_Sf'* - t_se standout end *t_se* *'t_se'* - t_so standout mode *t_so* *'t_so'* - t_sr scroll reverse (backward) *t_sr* *'t_sr'* - t_te out of "termcap" mode *t_te* *'t_te'* - t_ti put terminal in "termcap" mode *t_ti* *'t_ti'* - t_ts set window title start (to status line) *t_ts* *'t_ts'* - t_ue underline end *t_ue* *'t_ue'* - t_us underline mode *t_us* *'t_us'* - t_ut clearing uses the current background color *t_ut* *'t_ut'* - t_vb visual bell *t_vb* *'t_vb'* - t_ve cursor visible *t_ve* *'t_ve'* - t_vi cursor invisible *t_vi* *'t_vi'* - t_vs cursor very visible *t_vs* *'t_vs'* - *t_xs* *'t_xs'* - t_xs if non-empty, standout not erased by overwriting (hpterm) - t_ZH italics mode *t_ZH* *'t_ZH'* - t_ZR italics end *t_ZR* *'t_ZR'* - -Added by Vim (there are no standard codes for these): - t_IS set icon text start *t_IS* *'t_IS'* - t_IE set icon text end *t_IE* *'t_IE'* - t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* - t_WS set window size (height, width) in characters *t_WS* *'t_WS'* - t_RV request terminal version string (for xterm) *t_RV* *'t_RV'* - |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| - -KEY CODES -Note: Use the <> form if possible - - option name meaning ~ - - t_ku <Up> arrow up *t_ku* *'t_ku'* - t_kd <Down> arrow down *t_kd* *'t_kd'* - t_kr <Right> arrow right *t_kr* *'t_kr'* - t_kl <Left> arrow left *t_kl* *'t_kl'* - <S-Up> shift arrow up - <S-Down> shift arrow down - t_%i <S-Right> shift arrow right *t_%i* *'t_%i'* - t_#4 <S-Left> shift arrow left *t_#4* *'t_#4'* - t_k1 <F1> function key 1 *t_k1* *'t_k1'* - <xF1> alternate F1 *<xF1>* - t_k2 <F2> function key 2 *<F2>* *t_k2* *'t_k2'* - <xF2> alternate F2 *<xF2>* - t_k3 <F3> function key 3 *<F3>* *t_k3* *'t_k3'* - <xF3> alternate F3 *<xF3>* - t_k4 <F4> function key 4 *<F4>* *t_k4* *'t_k4'* - <xF4> alternate F4 *<xF4>* - t_k5 <F5> function key 5 *<F5>* *t_k5* *'t_k5'* - t_k6 <F6> function key 6 *<F6>* *t_k6* *'t_k6'* - t_k7 <F7> function key 7 *<F7>* *t_k7* *'t_k7'* - t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* - t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* - t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* - t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* - t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* - t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* - t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* - t_F5 <F15> function key 15 *<F15>* *t_F5* *'t_F5'* - t_F6 <F16> function key 16 *<F16>* *t_F6* *'t_F6'* - t_F7 <F17> function key 17 *<F17>* *t_F7* *'t_F7'* - t_F8 <F18> function key 18 *<F18>* *t_F8* *'t_F8'* - t_F9 <F19> function key 19 *<F19>* *t_F9* *'t_F9'* - <S-F1> shifted function key 1 - <S-xF1> alternate <S-F1> *<S-xF1>* - <S-F2> shifted function key 2 *<S-F2>* - <S-xF2> alternate <S-F2> *<S-xF2>* - <S-F3> shifted function key 3 *<S-F3>* - <S-xF3> alternate <S-F3> *<S-xF3>* - <S-F4> shifted function key 4 *<S-F4>* - <S-xF4> alternate <S-F4> *<S-xF4>* - <S-F5> shifted function key 5 *<S-F5>* - <S-F6> shifted function key 6 *<S-F6>* - <S-F7> shifted function key 7 *<S-F7>* - <S-F8> shifted function key 8 *<S-F8>* - <S-F9> shifted function key 9 *<S-F9>* - <S-F10> shifted function key 10 *<S-F10>* - <S-F11> shifted function key 11 *<S-F11>* - <S-F12> shifted function key 12 *<S-F12>* - t_%1 <Help> help key *t_%1* *'t_%1'* - t_&8 <Undo> undo key *t_&8* *'t_&8'* - t_kI <Insert> insert key *t_kI* *'t_kI'* - t_kD <Del> delete key *t_kD* *'t_kD'* - t_kb <BS> backspace key *t_kb* *'t_kb'* - t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* - t_kh <Home> home key *t_kh* *'t_kh'* - t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* - <xHome> alternate home key *<xHome>* - t_@7 <End> end key *t_@7* *'t_@7'* - t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* - <xEnd> alternate end key *<xEnd>* - t_kP <PageUp> page-up key *t_kP* *'t_kP'* - t_kN <PageDown> page-down key *t_kN* *'t_kN'* - t_K1 <kHome> keypad home key *t_K1* *'t_K1'* - t_K4 <kEnd> keypad end key *t_K4* *'t_K4'* - t_K3 <kPageUp> keypad page-up key *t_K3* *'t_K3'* - t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* - t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* - t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* - t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* - t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* - t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* - t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* - t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* - t_KD <k1> keypad 1 *<k1>* *t_KD* *'t_KD'* - t_KE <k2> keypad 2 *<k2>* *t_KE* *'t_KE'* - t_KF <k3> keypad 3 *<k3>* *t_KF* *'t_KF'* - t_KG <k4> keypad 4 *<k4>* *t_KG* *'t_KG'* - t_KH <k5> keypad 5 *<k5>* *t_KH* *'t_KH'* - t_KI <k6> keypad 6 *<k6>* *t_KI* *'t_KI'* - t_KJ <k7> keypad 7 *<k7>* *t_KJ* *'t_KJ'* - t_KK <k8> keypad 8 *<k8>* *t_KK* *'t_KK'* - t_KL <k9> keypad 9 *<k9>* *t_KL* *'t_KL'* - <Mouse> leader of mouse code *<Mouse>* - -Note about t_so and t_mr: When the termcap entry "so" is not present the -entry for "mr" is used. And vice versa. The same is done for "se" and "me". -If your terminal supports both inversion and standout mode, you can see two -different modes. If your terminal supports only one of the modes, both will -look the same. - -The keypad keys, when they are not mapped, behave like the equivalent normal -key. - *xterm-codes* -There is a special trick to obtain the key codes which currently only works -for xterm. When |t_RV| is defined and a response is received which indicates -an xterm with patchlevel 141 or higher, Vim uses special escape sequences to -request the key codes directly from the xterm. The responses are used to -adjust the various t_ codes. This avoids the problem that the xterm can -produce different codes, depending on the mode it is in (8-bit, VT102, -VT220, etc.). The result is that codes like <xF1> are no longer needed. -Note: This is only done on startup. If the xterm options are changed after -Vim has started, the escape sequences may not be recognized any more. - - *termcap-colors* -Note about colors: The 't_Co' option tells Vim the number of colors available. -When it is non-zero, the 't_AB' and 't_AF' options are used to set the color. -If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used -to reset to the default colors. - - *termcap-title* -The 't_ts' and 't_fs' options are used to set the window title if the terminal -allows title setting via sending strings. They are sent before and after the -title string, respectively. Similar 't_IS' and 't_IE' are used to set the -icon text. These are Vim-internal extensions of the Unix termcap, so they -cannot be obtained from an external termcap. However, the builtin termcap -contains suitable entries for xterm and iris-ansi, so you don't need to set -them here. - *hpterm* -If inversion or other highlighting does not work correctly, try setting the -'t_xs' option to a non-empty string. This makes the 't_ce' code be used to -remove highlighting from a line. This is required for "hpterm". Setting the -'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice -versa. - - *scroll-region* -Some termcaps do not include an entry for 'cs' (scroll region), although the -terminal does support it. For example: xterm on a Sun. You can use the -builtin_xterm or define t_cs yourself. For example: > - :set t_cs=^V^[[%i%d;%dr -Where ^V is CTRL-V and ^[ is <Esc>. - -The vertical scroll region t_CV is not a standard termcap code. Vim uses it -internally in the GUI. But it can also be defined for a terminal, if you can -find one that supports it. The two arguments are the left and right column of -the region which to restrict the scrolling to. Just like t_cs defines the top -and bottom lines. Defining t_CV will make scrolling in vertically split -windows a lot faster. Don't set t_CV when t_da or t_db is set (text isn't -cleared when scrolling). - -Unfortunately it is not possible to deduce from the termcap how cursor -positioning should be done when using a scrolling region: Relative to the -beginning of the screen or relative to the beginning of the scrolling region. -Most terminals use the first method. A known exception is the MS-DOS console -(pcterm). The 't_CS' option should be set to any string when cursor -positioning is relative to the start of the scrolling region. It should be -set to an empty string otherwise. It defaults to "yes" when 'term' is -"pcterm". - -Note for xterm users: The shifted cursor keys normally don't work. You can - make them work with the xmodmap command and some mappings in Vim. - - Give these commands in the xterm: - xmodmap -e "keysym Up = Up F13" - xmodmap -e "keysym Down = Down F16" - xmodmap -e "keysym Left = Left F18" - xmodmap -e "keysym Right = Right F19" - - And use these mappings in Vim: - :map <t_F3> <S-Up> - :map! <t_F3> <S-Up> - :map <t_F6> <S-Down> - :map! <t_F6> <S-Down> - :map <t_F8> <S-Left> - :map! <t_F8> <S-Left> - :map <t_F9> <S-Right> - :map! <t_F9> <S-Right> - -Instead of, say, <S-Up> you can use any other command that you want to use the -shift-cursor-up key for. (Note: To help people that have a Sun keyboard with -left side keys F14 is not used because it is confused with the undo key; F15 -is not used, because it does a window-to-front; F17 is not used, because it -closes the window. On other systems you can probably use them.) - -============================================================================== -3. Window size *window-size* - -[This is about the size of the whole window Vim is using, not a window that is -created with the ":split" command.] - -If you are running Vim on an Amiga and the terminal name is "amiga" or -"builtin_amiga", the amiga-specific window resizing will be enabled. On Unix -systems three methods are tried to get the window size: - -- an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system) -- the environment variables "LINES" and "COLUMNS" -- from the termcap entries "li" and "co" - -If everything fails a default size of 24 lines and 80 columns is assumed. If -a window-resize signal is received the size will be set again. If the window -size is wrong you can use the 'lines' and 'columns' options to set the -correct values. - -One command can be used to set the screen size: - - *:mod* *:mode* *E359* *E362* -:mod[e] [mode] - -Without argument this only detects the screen size and redraws the screen. -With MS-DOS it is possible to switch screen mode. [mode] can be one of these -values: - "bw40" 40 columns black&white - "c40" 40 columns color - "bw80" 80 columns black&white - "c80" 80 columns color (most people use this) - "mono" 80 columns monochrome - "c4350" 43 or 50 lines EGA/VGA mode - number mode number to use, depends on your video card - -============================================================================== -4. Slow and fast terminals *slow-fast-terminal* - *slow-terminal* - -If you have a fast terminal you may like to set the 'ruler' option. The -cursor position is shown in the status line. If you are using horizontal -scrolling ('wrap' option off) consider setting 'sidescroll' to a small -number. - -If you have a slow terminal you may want to reset the 'showcmd' option. -The command characters will not be shown in the status line. If the terminal -scrolls very slowly, set the 'scrolljump' to 5 or so. If the cursor is moved -off the screen (e.g., with "j") Vim will scroll 5 lines at a time. Another -possibility is to reduce the number of lines that Vim uses with the command -"z{height}<CR>". - -If the characters from the terminal are arriving with more than 1 second -between them you might want to set the 'timeout' and/or 'ttimeout' option. -See the "Options" chapter |options|. - -If your terminal does not support a scrolling region, but it does support -insert/delete line commands, scrolling with multiple windows may make the -lines jump up and down. If you don't want this set the 'ttyfast' option. -This will redraw the window instead of scroll it. - -If your terminal scrolls very slowly, but redrawing is not slow, set the -'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the -screen instead of scrolling, when there are more than 3 lines to be scrolled. - -If you are using a color terminal that is slow, use this command: > - hi NonText cterm=NONE ctermfg=NONE -This avoids that spaces are sent when they have different attributes. On most -terminals you can't see this anyway. - -If you are using Vim over a slow serial line, you might want to try running -Vim inside the "screen" program. Screen will optimize the terminal I/O quite -a bit. - -If you are testing termcap options, but you cannot see what is happening, -you might want to set the 'writedelay' option. When non-zero, one character -is sent to the terminal at a time (does not work for MS-DOS). This makes the -screen updating a lot slower, making it possible to see what is happening. - -============================================================================== -5. Using the mouse *mouse-using* - -This section is about using the mouse on a terminal or a terminal window. How -to use the mouse in a GUI window is explained in |gui-mouse|. For scrolling -with a mouse wheel see |scroll-mouse-wheel|. - -Don't forget to enable the mouse with this commands: > - :set mouse=a -Otherwise Vim won't recognize the mouse in all modes (See 'mouse'). - -Currently the mouse is supported for Unix in an xterm window, in a Linux -console (with GPM |gpm-mouse|), for MS-DOS and in a Windows console. -Mouse clicks can be used to position the cursor, select an area and paste. - -These characters in the 'mouse' option tell in which situations the mouse will -be used by Vim: - n Normal mode - v Visual mode - i Insert mode - c Command-line mode - h all previous modes when in a help file - a all previous modes - r for |hit-enter| prompt - A auto-select in Visual mode - -The default for 'mouse' is empty, the mouse is not used. Normally you would -do: > - :set mouse=a -to start using the mouse (this is equivalent to setting 'mouse' to "nvich"). -If you only want to use the mouse in a few modes or also want to use it for -the two questions you will have to concatenate the letters for those modes. -For example: > - :set mouse=nv -Will make the mouse work in Normal mode and Visual mode. > - :set mouse=h -Will make the mouse work in help files only (so you can use "g<LeftMouse>" to -jump to tags). - -Whether the selection that is started with the mouse is in Visual mode or -Select mode depends on whether "mouse" is included in the 'selectmode' -option. - -In an xterm, with the currently active mode included in the 'mouse' option, -normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key -pressed go to the xterm. With the currently active mode not included in -'mouse' all mouse clicks go to the xterm. - - *xterm-clipboard* -In the Athena and Motif GUI versions, when running in a terminal and there is -access to the X-server (DISPLAY is set), the copy and paste will behave like -in the GUI. If not, the middle mouse button will insert the unnamed register. -In that case, here is how you copy and paste a piece of text: - -Copy/paste with the mouse and Visual mode ('mouse' option must be set, see -above): -1. Press left mouse button on first letter of text, move mouse pointer to last - letter of the text and release the button. This will start Visual mode and - highlight the selected area. -2. Press "y" to yank the Visual text in the unnamed register. -3. Click the left mouse button at the insert position. -4. Click the middle mouse button. - -Shortcut: If the insert position is on the screen at the same time as the -Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button -at the insert position. - -Note: When the |-X| command line argument is used, Vim will not connect to the -X server and copy/paste to the X clipboard (selection) will not work. Use the -shift key with the mouse buttons to let the xterm do the selection. - - *xterm-command-server* -When the X-server clipboard is available, the command server described in -|x11-clientserver| can be enabled with the --servername command line argument. - - *xterm-copy-paste* -NOTE: In some (older) xterms, it's not possible to move the cursor past column -95. This is an xterm problem, not Vim's. Get a newer xterm |color-xterm|. - -Copy/paste in xterm with (current mode NOT included in 'mouse'): -1. Press left mouse button on first letter of text, move mouse pointer to last - letter of the text and release the button. -2. Use normal Vim commands to put the cursor at the insert position. -3. Press "a" to start Insert mode. -4. Click the middle mouse button. -5. Press ESC to end Insert mode. -(The same can be done with anything in 'mouse' if you keep the shift key -pressed while using the mouse.) - -Note: if you lose the 8th bit when pasting (special characters are translated -into other characters), you may have to do "stty cs8 -istrip -parenb" in your -shell before starting Vim. - -Thus in an xterm the shift and ctrl keys cannot be used with the mouse. Mouse -commands requiring the CTRL modifier can be simulated by typing the "g" key -before using the mouse: - "g<LeftMouse>" is "<C-LeftMouse> (jump to tag under mouse click) - "g<RightMouse>" is "<C-RightMouse> ("CTRL-T") - - *mouse-mode-table* *mouse-overview* -A short overview of what the mouse buttons do, when 'mousemodel' is "extend": - -Normal Mode: -event position selection change action ~ - cursor window ~ -<LeftMouse> yes end yes -<C-LeftMouse> yes end yes "CTRL-]" (2) -<S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* -<LeftDrag> yes start or extend (1) no *<LeftDrag>* -<LeftRelease> yes start or extend (1) no -<MiddleMouse> yes if not active no put -<MiddleMouse> yes if active no yank and put -<RightMouse> yes start or extend yes -<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* -<C-RightMouse> no no change no "CTRL-T" -<RightDrag> yes extend no *<RightDrag>* -<RightRelease> yes extend no *<RightRelease>* - -Insert or Replace Mode: -event position selection change action ~ - cursor window ~ -<LeftMouse> yes (cannot be active) yes -<C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) -<S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) -<LeftDrag> yes start or extend (1) no like CTRL-O (1) -<LeftRelease> yes start or extend (1) no like CTRL-O (1) -<MiddleMouse> no (cannot be active) no put register -<RightMouse> yes start or extend yes like CTRL-O -<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) -<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" - -In a help window: -event position selection change action ~ - cursor window ~ -<2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) - -When 'mousemodel' is "popup", these are different: - -Normal Mode: -event position selection change action ~ - cursor window ~ -<S-LeftMouse> yes start or extend (1) no -<RightMouse> no popup menu no - -Insert or Replace Mode: -event position selection change action ~ - cursor window ~ -<S-LeftMouse> yes start or extend (1) no like CTRL-O (1) -<RightMouse> no popup menu no - -(1) only if mouse pointer moved since press -(2) only if click is in same buffer - -Clicking the left mouse button causes the cursor to be positioned. If the -click is in another window that window is made the active window. When -editing the command-line the cursor can only be positioned on the -command-line. When in Insert mode Vim remains in Insert mode. If 'scrolloff' -is set, and the cursor is positioned within 'scrolloff' lines from the window -border, the text is scrolled. - -A selection can be started by pressing the left mouse button on the first -character, moving the mouse to the last character, then releasing the mouse -button. You will not always see the selection until you release the button, -only in some versions (GUI, MS-DOS, WIN32) will the dragging be shown -immediately. Note that you can make the text scroll by moving the mouse at -least one character in the first/last line in the window when 'scrolloff' is -non-zero. - -In Normal, Visual and Select mode clicking the right mouse button causes the -Visual area to be extended. When 'mousemodel' is "popup", the left button has -to be used while keeping the shift key pressed. When clicking in a window -which is editing another buffer, the Visual or Select mode is stopped. - - *double-click* -Double, triple and quadruple clicks are supported when the GUI is active, -for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is -available). For selecting text, extra clicks extend the selection: - click select ~ - double word or % match *<2-LeftMouse>* - triple line *<3-LeftMouse>* - quadruple rectangular block *<4-LeftMouse>* -Exception: In a Help window a double click jumps to help for the word that is -clicked on. -A double click on a word selects that word. 'iskeyword' is used to specify -which characters are included in a word. A double click on a character -that has a match selects until that match (like using "v%"). If the match is -an #if/#else/#endif block, the selection becomes linewise. -For MS-DOS and xterm the time for double clicking can be set with the -'mousetime' option. For the other systems this time is defined outside of -Vim. -An example, for using a double click to jump to the tag under the cursor: > - :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR> - -Dragging the mouse with a double click (button-down, button-up, button-down -and then drag) will result in whole words to be selected. This continues -until the button is released, at which point the selection is per character -again. - - *gpm-mouse* -The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at -compile time. The GPM mouse driver (Linux console) does not support quadruple -clicks. - -In Insert mode, when a selection is started, Vim goes into Normal mode -temporarily. When Visual or Select mode ends, it returns to Insert mode. -This is like using CTRL-O in Insert mode. Select mode is used when the -'selectmode' option contains "mouse". - - *drag-status-line* -When working with several windows, the size of the windows can be changed by -dragging the status line with the mouse. Point the mouse at a status line, -press the left button, move the mouse to the new position of the status line, -release the button. Just clicking the mouse in a status line makes that window -the current window, without moving the cursor. If by selecting a window it -will change position or size, the dragging of the status line will look -confusing, but it will work (just try it). - - *<MiddleRelease>* *<MiddleDrag>* -Mouse clicks can be mapped. The codes for mouse clicks are: - code mouse button normal action ~ - <LeftMouse> left pressed set cursor position - <LeftDrag> left moved while pressed extend selection - <LeftRelease> left released set selection end - <MiddleMouse> middle pressed paste text at cursor position - <MiddleDrag> middle moved while pressed - - <MiddleRelease> middle released - - <RightMouse> right pressed extend selection - <RightDrag> right moved while pressed extend selection - <RightRelease> right released set selection end - <X1Mouse> X1 button pressed - *X1Mouse* - <X1Drag> X1 moved while pressed - *X1Drag* - <X1Release> X1 button release - *X1Release* - <X2Mouse> X2 button pressed - *X2Mouse* - <X2Drag> X2 moved while pressed - *X2Drag* - <X2Release> X2 button release - *X2Release* - -The X1 and X2 buttons refer to the extra buttons found on some mice. The -'Microsoft Explorer' mouse has these buttons available to the right thumb. -Currently X1 and X2 only work on Win32 environments. - -Examples: > - :noremap <MiddleMouse> <LeftMouse><MiddleMouse> -Paste at the position of the middle mouse button click (otherwise the paste -would be done at the cursor position). > - - :noremap <LeftRelease> <LeftRelease>y -Immediately yank the selection, when using Visual mode. - -Note the use of ":noremap" instead of "map" to avoid a recursive mapping. -> - :map <X1Mouse> <C-O> - :map <X2Mouse> <C-I> -Map the X1 and X2 buttons to go forwards and backwards in the jump list, see -|CTRL-O| and |CTRL-I|. - - *mouse-swap-buttons* -To swap the meaning of the left and right mouse buttons: > - :noremap <LeftMouse> <RightMouse> - :noremap <LeftDrag> <RightDrag> - :noremap <LeftRelease> <RightRelease> - :noremap <RightMouse> <LeftMouse> - :noremap <RightDrag> <LeftDrag> - :noremap <RightRelease> <LeftRelease> - :noremap g<LeftMouse> <C-RightMouse> - :noremap g<RightMouse> <C-LeftMouse> - :noremap! <LeftMouse> <RightMouse> - :noremap! <LeftDrag> <RightDrag> - :noremap! <LeftRelease> <RightRelease> - :noremap! <RightMouse> <LeftMouse> - :noremap! <RightDrag> <LeftDrag> - :noremap! <RightRelease> <LeftRelease> -< - vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_09.jax b/ja/usr_09.jax index 61fcdbe70..14da06972 100644 --- a/ja/usr_09.jax +++ b/ja/usr_09.jax @@ -1,301 +1,297 @@ COMMENT: GUIの利用法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> -*usr_09.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*usr_09.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - GUIを使う + GUI を使う -vimは極く普通の端末で動きます。gvimは同じこともできますが、もうちょっとだけ -できることがあります。GUIではメニューやツールバー、スクロールバーといった部 -品を提供します。本章ではGUIが提供する追加事項について説明します。 +Vim は普通の端末で動作します。GVim はそれより少しだけ多機能です。GUI ではメ +ニュー、ツールバー、スクロールバーなどが利用できます。本章では GUI が提供する +それらの機能を説明します。 -|09.1| GUIの部品 +|09.1| GUI の部品 |09.2| マウスを使う |09.3| クリップボード -|09.4| 選択モード +|09.4| セレクトモード - Next chapter: |usr_10.txt| 大きな変更を行う - Previous chapter: |usr_08.txt| ウィンドウの分割 -Table of contents: |usr_toc.txt| +次章: |usr_10.txt| 大規模な編集 +前章: |usr_08.txt| ウィンドウの分割 +目次: |usr_toc.txt| ============================================================================== -*09.1* GUIの部品 +*09.1* GUI の部品 -gVimを起動するためのアイコンがデスクトップにあるかもしれません。でなければ、 -次のコマンドのどちらかでそれができます。 > +おそらく、gVim を起動するためのアイコンがデスクトップにあるはずです。ない場合 +は、次のコマンドのどちらかで起動できます: > gvim file.txt vim -g file.txt -うまく動かないようであれば、GUIをサポートしていないバージョンのvimだという -ことです。まず最初にGUI版をインストールしてください。 -vimはウィンドウを開いて、そこに"file.txt"を表示します。ウィンドウの見た目は -お使いのvimのバージョンに依りますが、概ね次のような画面が出るはずです。 -(この図はASCIIで正しく表示されます) +GUI 版の Vim がインストールされていない場合は起動できません。まず最初に GUI 版 +の Vim をインストールしてください。 +起動すると、ウィンドウが開き、そこに "file.txt" が表示されます。ウィンドウの外 +見は Vim のバージョンによって違うかもしれませんが、だいたい次のような画面が表 +示されるはずです (この図は ASCII で正しく表示されます)。 +----------------------------------------------------+ - | file.txt + (~/dir) - VIM X | <- window title + | file.txt + (~/dir) - VIM X | <- ウィンドウ + +----------------------------------------------------+ タイトル + | File Edit Tools Syntax Buffers Window Help | <- メニューバー +----------------------------------------------------+ - | File Edit Tools Syntax Buffers Window Help | <- menubar - +----------------------------------------------------+ - | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- toolbar + | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- ツールバー | aaa bbb ccc ddd eee fff ggg hhh iii jjj | +----------------------------------------------------+ | file text | ^ | | ~ | # | - | ~ | # | <- scrollbar - | ~ | # | + | ~ | # | <- スクロール + | ~ | # | バー | ~ | # | | ~ | # | | | V | +----------------------------------------------------+ -一番大きな場所はファイル内容が占めています。これは端末での表示と同じやり方 -で表示しますが、色やフォントは違っているだろうと思います。 +一番大きな領域にはファイルのテキストが表示されています。その部分は端末での表示 +と同じです。色やフォントは違うかもしれません。 -THE WINDOW TITLE [ウィンドウタイトル] +ウィンドウタイトル +------------------ -一番上はウィンドウタイトルです。この部分はウィンドウシステム(WindowsとかXの -ウィンドウマネージャとか)が描画します。vimは現在のファイル名をタイトルに設 -定します。一部の特殊文字やファイル名のディレクトリ部分はカッコで囲みます。 -特殊文字というのは以下の通りです。 +最上部はウィンドウタイトルです。この部分はウィンドウシステム (Windows や X の +ウィンドウマネージャなど) によって描画されます。Vim はカレントファイルの名前を +タイトルに設定します。ファイル名が先頭に表示され、それから、記号、カッコで囲ま +れたディレクトリ名が表示されます。記号には次の意味があります。 - - このファイルは変更不可である。(例:ヘルプファイル) - + このファイルは変更されている。 - = このファイルは読み込み専用である。 - =+ このファイルは読み込み専用だが、変更を含んでいる。 + - ファイルは変更不可。(例: ヘルプファイル) + + ファイルは変更された。 + = ファイルは読み込み専用。 + =+ ファイルは読み込み専用だが、変更された。 -何も表示されていなければ、通常の変更していないファイルだということです。 +何も表示されていなければ、変更されていない通常のファイルです。 メニューバー ------------ -メニューの使い方はわかりますよね? vimは便利な項目とプラスアルファがありま -す。メニューをざっと見て、何に使えそうかを理解しておいてください。 -[編集]-[全体設定]には関連したサブメニュー設定があります。次のようなエントリ -が見つかるでしょう。 +メニューの使い方はわかりますよね? 一般的な項目に加え、Vim 特有の項目が少しあ +ります。メニューをざっと眺めてどんなものがあるか確認してください。この章に関連 +したサブメニューが [編集]-[全体設定] にあります。次のような項目です: ツールバー表示切替 ツールバーの表示のon/off スクロールバー(下)表示切替 スクロールバー(下)の表示のon/off スクロールバー(左)表示切替 スクロールバー(左)の表示のon/off スクロールバー(右)表示切替 スクロールバー(右)の表示のon/off -ほとんどのシステムではメニューの切り離しができます。メニューの最初にある点 -線のような項目を選択します。すると、メニューと同じ内容の別ウィンドウが表示 -されます。あなたがそれを閉じるまでは、そのウィンドウは開いたままです。 +ほとんどのシステムではメニューの切り離しができます。メニューの最上部にある点線 +のような項目を選択すると、メニューが別ウィンドウで表示されます。明示的に閉じる +まで、ウィンドウは開いたままです。 ツールバー ---------- -ここにはよく使われる機能をアイコンとして格納しています。うまくいけば、アイ -コンはそれを見れば意味がわかります。マウスをアイコンの上に動かして、クリック -せずに1秒ほど待つと、ツールチップと呼ばれるちょっとした説明を表示します。 +ツールバーには、よく使われる機能がアイコンの形で格納されています。アイコンを見 +ればその機能を連想できると思います。マウスをアイコンの上に動かしてクリックせず +に一秒ほど待つと、機能の説明がツールチップで表示されます。 -メニューの[編集]-[全体設定]-[ツールバー表示切換]を使うとツールバーを表示しな -いようにできます。ツールバーを全く使わないのであれば、次のコマンドをvimrcに -書いておくこともできます。 > +メニューの [編集]-[全体設定]-[ツールバー表示切換] を使うとツールバーを非表示に +できます。ツールバーを全く使わないのであれば、次のコマンドを vimrc に書いてく +ださい: > :set guioptions-=T -これは'guioption'オプションから"T"フラグを取り除きます。GUIの他の部分につい -てもこのオプションを使って使用する/しないを指定できます。詳しくはこのオプ -ションのヘルプをご覧ください。 +これは 'guioption' オプションから "T" フラグを取り除くコマンドです。GUI の他の +部品もこのオプションを使って、表示/非表示を指定できます。詳しくはオプションの +ヘルプを参照してください。 スクロールバー -------------- -デフォルトでは右側にスクロールバーが1つあります。これの機能は明確です。 -ウィンドウを分割すると各ウィンドウ用のスクロールバーが作られます。 -メニュー[編集]-[全体設定]-[スクロールバー(下)表示切換]を使えば横スクロール -バーを表示できます。これはdiffモードで有効です。これは差分モードの時や'wrap' -オプションをoffにしている時に便利です。(詳しくは後で説明します) - -垂直分割しているウィンドウがある時は、右側のウィンドウにだけスクロールバーが -付きます。ただし、左側のウィンドウにカーソルを移動するとスクロールバーはその -ウィンドウの管理下に置かれます。 -縦分割ウィンドウを使う場合は左側にスクロールバーを付けるかどうか考えてくださ -い。これはメニューから選ぶか、'guioptions'で設定できます。 -> +初期設定では右側にスクロールバーが表示されます。動作は一般的なアプリケーション +と同じです。ウィンドウを分割するとウィンドウごとにスクロールバーが作られます。 +メニューの [編集]-[全体設定]-[スクロールバー(下)表示切換] を使うと横スクロール +バーを表示できます。差分モードのときや 'wrap' オプションをオフにしているときに +便利です。(詳しくは後で説明します) + +ウィンドウを垂直分割していて、右側のウィンドウにだけスクロールバーが付いている +場合は、左側のウィンドウにカーソルを移動すれば、スクロールバーはそのウィンドウ +に作用するようになります。 +垂直分割をよく使うなら、左側にもスクロールバーを付けるといいかもしれません。メ +ニューから選択するか、'guioptions' を設定してください: > + :set guioptions+=l -このコマンドは'guioptions'に'l'フラグを追加します。 +これは 'guioptions' に 'l' フラグを追加しています。 ============================================================================== -*09.2* マウスの利用 +*09.2* マウスを使う -標準は素晴らしい。Microsoft Windowsでは文字列を選択する標準的な方法としてマ -ウスが使えます。X Windowでもマウスを使う標準的な方法が用意されています。 -ただ不幸なことにこの2つの標準は繰作方法などが同じではありません。 -幸運なことにvimではカスタマイズができます。マウスの振る舞いをX Windowsのマウ -ス方式とすることも、Microsoft Windowsのマウス方式とすることもできます。次の -コマンドはマウスの振る舞いをX Windowのマウス方式に設定します。 > +標準は素晴らしい。Microsoft Windows では、マウスを使った標準的な操作方法でテキ +ストを選択できます。X ウィンドウシステムにもマウスの操作方法の標準があります。 +残念ながら、この二つの標準は別物です。 +幸運なことに Vim はカスタマイズできます。マウスの振る舞いを X ウィンドウシステ +ム方式か Microsoft Windows 方式のどちらかに変更できます。次のコマンドでマウス +の振る舞いを X ウィンドウシステム方式に設定できます: > :behave xterm -The following command makes the mouse work like a Microsoft Windows mouse: > -次のコマンドはマウスの振る舞いをMicrosoft Windowsのマウス方式に設定します。 > +次のコマンドでマウスの振る舞いを Microsoft Windows 方式に設定できます: > :behave mswin -UNIXシステムでのデフォルトのマウス方式は xterm です。一方、Microsoft Windows -システムでのデフォルトの方式はインストール中に選択できます。 -JP注: 村岡版のデストリビューションではmswin形式になっているようです。 -2つの振る舞いの詳細については|:behave|をご覧ください。以下では概要だけを説 -明します。 +UNIX での初期設定は xterm です。Microsoft Windows での初期設定はインストール時 +に選択できます。二つの振る舞いの詳細については|:behave|をご覧ください。ここで +は概要だけ説明します。 XTERM 方式のマウスの振る舞い -左ボタンクリック カーソルを移動 -左ボタンドラッグ visualモードで文字列を選択 -中ボタンクリック クリップボードから文字列をペースト -右ボタンクリック マウスポインタが指す場所まで選択範囲を拡張 +左クリック カーソル移動 +左ドラッグ ビジュアルモードでテキストを選択 +中クリック クリップボードからテキストを貼り付け +右クリック マウスポインタで指した場所まで選択範囲を拡張 MSWIN 方式のマウスの振る舞い -左マウスクリック カーソルを移動 -左マウスドラッグ 選択モードで文字列を選択(|09.4|をご覧ください) -左マウスクリック+シフトキー マウスポインタが指す場所まで選択範囲を拡張 -中ボタンクリック クリップボードから文字列をペースト -右ボタンクリック ポップアップメニューを表示 +左クリック カーソル移動 +左ドラッグ セレクトモードでテキストを選択 (|09.4| 参照) +シフトキー + 左クリック マウスポインタで指した場所まで選択範囲を拡張 +中クリック クリップボードからテキストを貼り付け +右クリック ポップアップメニューを表示 -マウスの動きはさらにチューンできます。マウスの動きを変更したければ、以下のオ -プションをチェックしてください。 +マウスの動作はさらに細かく設定できます。マウスの動作を変更したい場合は、以下の +オプションを確認してください。 - 'mouse' vimのどのモードでマウスを使うのかを指定 - 'mousemodel' マウスクリックした時に何に影響があるかを指定 + 'mouse' Vim のどのモードでマウスを使うのか + 'mousemodel' クリックしたときの動作 'mousetime' ダブルクリックのクリック間隔 - 'mousehide' 入力している間、マウスを隠すかどうかの指定 - 'selectmode' マウスでの選択がvisualモードか選択モードかの - 指定 + 'mousehide' 入力している間、マウスを隠す + 'selectmode' マウスで選択したときにビジュアルモードとセレク + トモードのどちらを開始するか ============================================================================== *09.3* クリップボード -|04.7|の節ではクリップボードの基本的な使い方を説明しました。ここではX Window -での基本的なことについて説明します。X Windowではプログラム間で文字列をやり取 -り用に2つの場所があります。MS-Windowにはこれはありません。 - -X Windowではカレントセレクション("current selection")と呼ばれます。これは現 -在ハイライト表示されている文字列のことです。vimではこれはビジュアル範囲(vim -をデフォルトのオプション設定で使っている場合)と呼びます。この選択範囲は特に -何もせずに他のアプリケーションにペーストできます。 -例えば、この文章のいくつかの単語をマウスで選んだとします。vimは自動的にvisual -モードになり、その文字列をハイライト表示します。ここで別のvimをファイル名な -しで起動します。当然ウィンドウ内は空っぽで表示されます。ここで中央ボタンをク -リックします。選択してあった文字列が挿入されます。 - -カレントセレクションは他の文字列を選択しない限りずっと残っています。他のgvim -にペーストした後に、そのウィンドウの数文字を選択します。この時、先程まで選択 -してあった別ウィンドウのgvimでの単語の表示が違っていることに気付いたでしょう。 -もはや、先程の選択範囲はカレントセレクションではないのです。 - -文字列の選択はマウスでなくても構いません。visualモード用のコマンドをキーボー +|04.7| ではクリップボードの基本的な使い方を説明しました。ここでは X Window +での必須事項を説明します。X Window にはプログラム間でテキストを交換するための +空間が二つあります。MS-Window にはありません。 + +X Window にはカレントセレクション ("current selection") があります。これは選択 +中のテキストのことです。Vim において、それはビジュアル選択している範囲のことで +す (初期設定の場合)。選択しているテキストは特に何もしなくても他のアプリケーショ +ンにペーストできます。 +例えば、この文章のどこかを適当にマウスで選択したとします。Vim は自動的にビジュ +アルモードに切り替わり、選択したテキストが強調表示されます。ここで、別の Vim +を引数なしで起動し、空のウィンドウを開きます。中央ボタンをクリックすると、選択 +したテキストが挿入されます。 + +カレントセレクションは他のテキストを選択するまで有効です。他の gVim にペースト +した後、そのウィンドウのテキストを選択すると、直前に別の gVim で選択していたテ +キストの表示が変わるのが確認できると思います。その選択範囲はもうカレントセレク +ションではないのです。 + +テキストの選択はマウスでなくても構いません。ビジュアルモードのコマンドをキーボー ドで入力しても同じことになります。 真のクリップボード --------------------- - -さて、文字列のやり取り用のもう一つの方法についての番です。今までの説明との混 -同を避けるために、ここでは真のクリップボード("real clipboard")と呼びます。 -普通はカレントセレクションと真のクリップボードをいっしょにしてクリップボードと -呼んでいますが、ここでは真のクリップボードのことだけを指します。 -真のクリップボードに文字列をプットするために、動作中のgvimのウィンドウの一つ -でいくつかの単語を選択し、メニューの[編集]-[コピー]コマンドを実行します。 -これで文字列が真のクリップボードにコピーされました。クリップボードの内容は -それ用のアプリケーション(例えばKDEのklipper)がなければ見ることはできません。 -さて、ここでもうひとつのgvimを選び、カーソルを適当なところに置いて、[編集]- -[貼り付け]コマンドを実行します。真のクリップボードから挿入された文字列が表 -示されます。 - - -両方を使う +------------------ + +さて、テキストを交換するためのもう一つの空間を説明します。今までの説明との混同 +を避けるために、ここでは真のクリップボード ("real clipboard") と呼びます。普通 +はカレントセレクションと真のクリップボードはどちらもクリップボードと呼ばれます +が、慣れてください。 +真のクリップボードにテキストをプットするために、動作中の gVim で適当なテキスト +を選択し、メニューの [編集]-[コピー] コマンドを実行してください。これで、テキ +ストが真のクリップボードにコピーされました。クリップボードの内容は専用のアプリ +ケーション (例えば KDE の klipper) がなければ見ることはできません。 +次に、別の gVim に移り、カーソルを適当なところに移動し、メニューの [編集]-[貼 +り付け] コマンドを実行します。真のクリップボードからテキストが挿入されます。 + + +両方を使う ---------- -このカレントセレクションと真のクリップボードの両方を使うことは混乱しそうに思 -われるかも知れません。でもこれはとても便利なのです。例で説明しましょう。 -テキストファイルをgvimを使って以下の処理を実行してみます。 +カレントセレクションと真のクリップボードを両方使うのは少し複雑ですが、でもこれ +はとても便利なのです。例を挙げましょう。 +gVim でテキストファイルを開いて以下の操作を実行してください: > -- 2つの単語をvisualモードで選択します。 -- [編集]-[コピー]コマンドを実行して単語をクリップボードに入れます。 -- visualモードで別の1つの単語を選択します。 -- [編集]-[貼り付け]コマンドを実行します。この結果は選択している1つの単語が - クリップボードにある2つの単語と入れ替わります。 -- マウスポインタを他のところに動かして中央ボタンを押します。クリップボードで - 上書きした単語がその場所に挿入されます。 +- 単語をビジュアルモードで選択する。 +- [編集]-[コピー] メニューを実行して単語をクリップボードに入れる。 +- ビジュアルモードで別の単語を選択する。 +- [編集]-[貼り付け] メニューを実行する。選択している単語がクリップボードにあ + る単語で置き換えられます。 +- マウスポインタを他のところに動かして中央ボタンを押す。直前にクリップボード + のテキストで上書きされた単語がその場所に挿入されます。 カレントセレクションと真のクリップボードは気を付けて使いさえすれば、非常に役立 -つテクニックとなります。 +つテクニックになります。 -キーボードの利用 +キーボードを使う ---------------- -マウスを使うのが好きでなくても、カレントセレクションと真のクリップボードに、 -2種類のレジスタを通してアクセスできます。 最初にレジスタ"*"はカレントセレ -クションを示します。 -文字列をカレントセレクションにするにはvisualモードを使います。例えば行全体 -を選択したければ"V"を使います。 -カレントセレクションを現在のカーソル位置の前に挿入するなら、次のようにします。 -> +マウスが嫌いなあなたでも、二つのレジスタを使って、カレントセレクションと真のク +リップボードにアクセスできます。カレントセレクションには "* レジスタでアクセス +します。 +テキストをカレントセレクションにするにはビジュアルモードを使います。例えば、 +"V" を押せば行全体を選択できます。 +次のコマンドでカレントセレクションのテキストをカーソルの直前に挿入できます: > + "*P -大文字の"P"であることに気を付けてください。小文字の"p"だと文字列をカーソルの -後ろにプットします。 +大文字の "P" であることに注意してください。小文字の "p" だとカーソルの直後に +プットされます。 -次にレジスタ"+"は真のクリップボードを示します。例えばカーソル位置から行末ま -でを真のクリップボードにコピーするのであれば、次のようにします。 > +真のクリップボードには "+ レジスタでアクセスします。例えば、カーソル位置から行 +末までを真のクリップボードにコピーするには、次のようにします: > "+y$ -"y"はヤンク、つまりvimでのコピーコマンドのことでしたね。 -真のクリップボードの内容をカーソルの前に挿入するには次のようにします。 > +"y" はヤンク、つまり Vim のコピーコマンドのことでしたね。 +次のコマンドで真のクリップボードのテキストをカーソルの直前に挿入できます: > "+P -これはカレントセレクションの場合とほとんど同じですが、レジスタ"*"の代わりに -レジスタ"+"を使っています。 +カレントセレクションの場合とコマンドは同じですが、スター (*) ではなくプラス +(+) レジスタを使っています。 ============================================================================== -*09.4* 選択モード +*09.4* セレクトモード -さて、これはX WindowよりもMS-Windowsでよく利用される機能です。ですがどちらのOS -でも利用可能です。Visualモードについては既に知っている通りです。選択モードは -Visualモードに似ています。というのはどちらも文字列を選択する時に使うものだから -です。しし、両者には明らかな違いがあります。文字列を入力している時、選択された -文字列は削除され、入力したものに置き換わります。 +これは X Window よりも MS-Windows でよく利用される機能です。しかし、どちらの環 +境でも利用できます。ビジュアルモードについては既に知っていますね。セレクトモー +ドはビジュアルモードに似ています。セレクトモードもテキストを選択するための機能 +です。違いは、文字を入力すると、選択されていたテキストが削除され、入力した文字 +に置き換わることです。 -選択モードで作業を始めるには、最初にそれを有効にする必要があります。(MS- -Windows用ならば、多分、既に有効となっていますが、この方法でもできます。) > +セレクトモードを使うには、最初にそれを有効にする必要があります。(MS-Windows で +は、既に有効になっていると思いますが、これを実行しても問題ありません): > :set selectmode+=mouse -ここで、マウスを使って文字列を選択してみてください。visualモードの時のように -ハイライト表示となります。さらに何かの文字を入力してください。すると選択され -ていた文字列は削除され、入力した文字に置き換わります。この時、挿入モードに -なっており、続けて入力を行うことができます。 +設定したら、マウスを使ってテキストを選択してみてください。ビジュアルモードのよ +うにテキストが強調表示されます。そして、文字を入力してください。選択されていた +テキストが削除され、入力した文字に置き換わります。挿入モードに入るので、続けて +文字を入力することができます。 -普通に文字を入力することで選択されている文字列を削除するため、通常の移動コ -マンドの"hjkl"や"w"などは使えません。その代わりシフト+特殊キーが使えます。 -<S-Left>(シフト+左矢印キー)はカーソルを左に動かします。この時、選択された -文字列はvisualモードの時のように変化します。シフトキーと他の矢印キーの組み合 -せも使えます。<S-End>と<S-Home>も使えます。 +普通に文字を入力すると選択中のテキストが削除されてしまうので、通常の移動コマン +ドの "hjkl" や "w" などは使えません。代わりに、シフト + 特殊キーの組み合わせを +使ってください。<S-Left> (シフト + 左矢印キー) でカーソルが左に移動します。ビ +ジュアルモードと同じように選択範囲が変化します。他の矢印キーも同様に使えます。 +<S-End> と <S-Home> も使えます。 -選択モードでの動きについては'selectmode'オプションでカスタマイズできます。 +選択モードの動作は 'selectmode' オプションで変更できます。 ============================================================================== -Next chapter: |usr_10.txt| 大規摸な変更 +次章: |usr_10.txt| 大規摸な編集 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_10.jax b/ja/usr_10.jax index d2a222a72..a76d066d4 100644 --- a/ja/usr_10.jax +++ b/ja/usr_10.jax @@ -1,78 +1,76 @@ COMMENT: テキストの大規模な修正方法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> -*usr_10.txt* For Vim version 6.1. Last change: 2001 Sep 18 -*usr_10.txt* For Vim version 6.3. Last change: 2004 Mar 12 +*usr_10.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - 大規模な変更 + 大規模な編集 -第4章では、ちょっとした変更を加える方法について説明しました。この章では変更 -を繰り返したり、大量の文書に影響を与えるような変更方法について説明いをしま -しょう。visualモードでは矩形のテキストに対していろいろな処理を行えます。また -本当に複雑なことを実行するような外部プログラムを使うこともできます。 +四章では、小さな変更を加える方法について説明しました。この章では、同じ操作を再 +実行する方法や、広範囲のテキストを変更する方法を説明します。ビジュアルモードで +は選択範囲にさまざまな処理を実行できます。外部プログラムを使えばとても複雑な処 +理もできます。 -|10.1| レコーディング(記録)とプレイバック(再現) +|10.1| 操作の記録と再実行 |10.2| 置換 -|10.3| コマンドの範囲 -|10.4| グローバル(global)コマンド -|10.5| visualブロックモード +|10.3| コマンドの範囲指定 +|10.4| global コマンド +|10.5| 矩形選択 |10.6| ファイルの一部の保存と読み込み |10.7| テキストの整形 -|10.8| 大文字/小文字の変更 -|10.9| 外部プログラムの利用 +|10.8| 大文字/小文字の変換 +|10.9| 外部プログラムを使う - Next chapter: |usr_11.txt| クラッシュからの回復 - Previous chapter: |usr_09.txt| GUIの利用 -Table of contents: |usr_toc.txt| +次章: |usr_11.txt| クラッシュからの復帰 +前章: |usr_09.txt| GUI を使う +目次: |usr_toc.txt| ============================================================================== -*10.1* レコーディング(記録)とプレイバック(再現) +*10.1* 操作の記録と再実行 -"."コマンドは直前の変更コマンドを繰り返します。しかし、一箇所だけではない、 -もう少し複雑なことを繰り返したい場合はどうすればよいでしょう?このために記録 -コマンドがあります。次の3つの手順を行います。 +"." コマンドを使えば直前の変更を繰り返せますが、複数のコマンドを組み合わせた、 +もっと複雑な操作を繰り返すにはどうすればいいでしょうか。それには記録コマンドを +使います。次の手順で記録できます: -1. "q{register}" コマンドを実行すると、指定の{register}に一連のキー入力を記録 - し始めます。レジスタ名は"a"~"z"のいずれかです。 -2. 記録したいコマンドを入力します。 -3. 記録を終了させるには"q"を押します。 +1. "q{register}" コマンドを実行する。指定したレジスタ {register} へのキー入力 + の記録が開始されます。レジスタ名は a から z のいずれかです。 +2. コマンドを入力して編集する。 +3. q を押して記録を終了する (レジスタの指定は必要ない)。 -記録したマクロは"@{register}"コマンドで実行できます。 +記録したマクロは "@{register}" コマンドで実行できます。 -このコマンドをどのように使うか練習してみましょう。次のようなファイル名リスト -があるとします。 +このコマンドの使い方を練習してみましょう。次のようなファイル名の一覧がありま +す: stdio.h ~ fcntl.h ~ unistd.h ~ stdlib.h ~ -これを次のように変更したいとします。 +これを次のように変更します: #include "stdio.h" ~ #include "fcntl.h" ~ #include "unistd.h" ~ #include "stdlib.h" ~ -まず1行目の行頭に移動します。そして次のコマンドを実行します。 +まず、一行目の行頭に移動してください。そして次のコマンドを実行します。 - qa マクロの記録をレジスタaに開始します。 - ^ 行頭に移動します。 - i#include "<Esc> 行頭に次の文字列を挿入します。 - #include " - $ 行末に移動します。 - a"<Esc> 行末に引用符(")を追加します。 - j カーソルを次の行に移動します。 - q マクロの記録を終了します。 + qa レジスタ a へのマクロの記録を開始。 + ^ 行頭に移動。 + i#include "<Esc> 行頭に #include " を挿入。 + $ 行末に移動。 + a"<Esc> 行末に引用符 (") を追加。 + j 次の行に移動。 + q マクロの記録を終了。 -さて、1回分の作業はこれで終りました。ここで"@a"コマンドを3回実行して、変更 -を繰り返すことができます。 -"@a"コマンドの前にはカウンタ指定ができます。指定するとその回数だけマクロを実 -行します。この場合なら、次のようにします。 > +さて、一回分の作業はこれで終りました。"@a" コマンドを使って変更を繰り返してみ +てください。 +"@a" コマンドには繰り返し回数を指定できます。三回繰り返すには、次のようにしま +す: > 3@a @@ -80,103 +78,101 @@ Table of contents: |usr_toc.txt| 移動と実行 ---------- -変更したい行がいろんな場所に分散している場合は、カーソルを各場所に移動して、 -"@a"コマンドを使います。それを一度でも実行すれば、再実行は"@@"でできます。 -こっちの方がちょっとだけ入力が簡単です。今、レジスタbを実行するために"@b"を -使うと、次に"@@"を実行した時にはレジスタbのマクロが実行されます。 -このプレイバック方法と"."を使う方法を比べると、数点の違いがあります。まず最 -初に"."は1箇所の変更しか繰り返せないという点です。上の練習でも見たように、 -"@a"では複数の変更と移動がこなせます。次に"."は直前の変更しか繰り返せないと -いう点です。レジスタ内容を実行する方法なら、何らかの変更を加えた後でも"@a" -を使って記録したコマンドを再実行できます。最後に、26のレジスタを使える点で -す。つまり実行したいコマンド群を26個まで覚えておけるということです。 +変更したい行がいろんな場所に分散している場合は、それぞれの場所に移動してから +"@a" コマンドを使います。一度でも再実行すると、次からは "@@" で同じマクロを再 +実行できます。"@@" の方が少しだけ入力が簡単です。例えば、"@b" でレジスタ b を +実行すると、次に "@@" を実行したときはレジスタ b が使われます。 +マクロの実行と "." にはいくつか違いがあります。まず第一に、"." は一つの変更し +か繰り返せません。上述の例のように、"@a" では複数の変更やカーソルの移動も繰り +返せます。第二に、"." は直前の変更しか繰り返せません。レジスタを実行する方法な +ら、他の変更を加えた後でも、"@a" を使って、記録されたコマンドを繰り返せます。 +最後に、レジスタは 26 個あります。つまり、26 個のコマンド操作を記録しておける +のです。 -レジスタの使用 +レジスタを使う -------------- -記録に用いるレジスタはヤンクや削除で使っているのと同じものです。これはレジス -タを操作して、記録内容を他のコマンドと合成することができるということです。 -レジスタnにいくつかのコマンドが記録されているとしましょう。ところが、それを -"@n"で実行しようとして何かミスがあることに気付きました。最初から記録をやり直 -すこともできますが、また他の間違いをしてしまうかもしれません。そうではなく、 -次のようなテクニックを使います。 - - G ファイルの最後にジャンプ - o<Esc> 空行を作成 - "np レジスタnの内容をプット。すると記録した - 時に入力したコマンドが文字列表示されます - {edits} 間違っている部分を修正。これは普通に編集して - 実施 - 0 その行の行頭に移動 - "ny$ 修正したコマンドをレジスタnに格納 +記録に用いるレジスタはヤンクや削除で使っているのと同じものです。そのため、レジ +スタを操作して、記録されたコマンドと他のコマンドを合成することができます。 +レジスタ n にいくつかのコマンドが記録されているとします。ところが、"@n" で実行 +してみると、ミスがあることに気付きました。最初から記録をやり直すこともできます +が、また何か間違えてしまうかもしれません。代わりに、次のようなテクニックを使っ +てみましょう。 + + G ファイルの最後にジャンプ。 + o<Esc> 空行を作成。 + "np レジスタ n の内容をプット。記録されたコマンド + がテキストとして表示されます。 + {edits} 間違っている部分を修正。普通にテキストを編集す + るのと同じです。 + 0 行頭に移動。 + "ny$ 修正したコマンドをレジスタ n にヤンク dd 不要になった最終行を削除 -さて、これで"@n"すると正しいコマンドが実行されます。(記録されたコマンドが改 -行を含む場合は上記の最後の2項目はその全内容を含むようにしてください) +さて、"@n" で正しいコマンドが実行されるようになりました。(記録されたコマンドに +改行が含まれている場合は、上記の最後の二項目はその全内容が含まれるようにしてく +ださい) レジスタに追記 -------------- -ここまでレジスタ名には小文字を使ってきました。レジスタに追記するには大文字を +これまで、レジスタ名には小文字を使ってきました。レジスタに追記するには大文字を 使います。 -単語を変更するためのコマンドがレジスタcに記録されているとします。これは目的 -通り動くのですが、次に変更すべき単語を探す処理を追加する場合、次のようにしま -す。 > +単語を変更するためのコマンドがレジスタ c に記録されているとします。これは正し +く動作するのですが、変更すべき次の単語を検索する処理を追加したくなりました。次 +のようにすればできます: > qC/word<Enter>q -このコマンドは、記録内容をレジスタcに追記するという"qC"で始まっています。 -つまり書き込むレジスタ名を大文字で書くと、その小文字のレジスタに追記すると -いう意味になるのです。 +レジスタ c に追記するために "qC" で記録を開始しています。レジスタ名を大文字で +書くと、同じレジスタに追記するという意味になるのです。 -これは記録コマンドだけでなく、ヤンクや削除コマンドでも同じです。例えば、いく -つかの行をレジスタaに集めたいとします。最初の行では次のコマンドを実行し -ます。 > +これは記録コマンドだけでなく、ヤンクや削除コマンドでも同じです。例えば、いくつ +かの行をレジスタ a に集めたいとします。最初の行を次のコマンドでヤンクしましょ +う: > "aY -次に2つ目の行に移動し、このように入力します。 > +次の行に移動し、このように入力します: > "AY -これを該当する全ての行で実行します。レジスタaにはヤンクした順に全行が含ま -れています。 +これを全ての行で実行します。レジスタ a にはヤンクした順にすべての行が保存され +ます。 ============================================================================== *10.2* 置換 *find-replace* -":substitute"コマンドはファイルの全行について文字列の置換を実行します。この -コマンドは次の形式で指定します。 > +":substitute" コマンドを使うと、指定した範囲内の文字列を置換できます。コマンド +の書式は次のとおりです: > :[range]substitute/from/to/[flags] -このコマンドは[range]で指定した行範囲の中で、文字列"from"を文字列"to"に変更 -します。例えば、次のコマンドを実行すると、全行の"Professor"を"Teacher"に置換 -します。 > +このコマンドは [range] で指定された行範囲の中の文字列 "from" を文字列 "to" に +置換します。例えば、次のコマンドを実行すると、すべての行の "Professor" が +"Teacher" に置換されます: > :%substitute/Professor/Teacher/ < Note: - ":substitute"の綴りを完全に入力するような人はまずいません。たいてい - の場合、短縮形の":s"が使われます。以降ではこの短縮形を使います。 + ":substitute" の綴りを完全に入力するような人はまずいません。普通は短縮 + 形の ":s" が使われます。以降ではこの短縮形を使います。 -コマンドの前の"%"はファイル全体を対象とする指定です。範囲指定をしないと、 -":s"コマンドは現在行のみを対象とします。範囲指定については次の節で述べます。 -|10.3| +コマンドの前の "%" はファイル全体を意味する範囲指定です。範囲指定がない場合は、 +現在行のみ置換されます。範囲指定については次の節で述べます |10.3|。 -デフォルトでは、":substitute" コマンドは各行の最初に見つかったものだけを変 -更します。例えば、上のコマンドは次のように動きます。 +初期設定では、各行の最初に見つかったものだけが変更されます。例えば、上のコマン +ドを実行すると、次の行は: Professor Smith criticized Professor Johnson today. ~ -これを次のように変更します。 +このように変更されます: Teacher Smith criticized Professor Johnson today. ~ -その行にある全箇所を置換するには g(グローバル)フラグをコマンドに追加します。 -次のようになります。 > +すべてを置換するには g (global) フラグを指定してください: > :%s/Professor/Teacher/g @@ -184,322 +180,310 @@ Table of contents: |usr_toc.txt| Teacher Smith criticized Teacher Johnson today. ~ -他にもフラグには p(print=出力) と c(confirm=確認)があります。pフラグは変更の -ある各行を画面に表示します。また cフラグは置換する前に本当に置き換えるかどう -かを確認します。次のように入力します。 > +フラグは他にもあります。p (print=出力) フラグ を指定すると、変更された行が画 +面に表示されます。c (confirm=確認) フラグを指定すると、一つ一つ確認しながら置 +換できます。次のようにして使います: > :%s/Professor/Teacher/c -vimは最初に"Professor"が現れる箇所を見つけ、今まさに置換しようとしているテキス -トを表示し、次のようなプロンプトを表示します。 -> - replace with Teacher (y/n/a/q/l/^E/^Y)? +"Professor" が現れる最初の場所が検索され、置換される予定のテキストが表示されま +す。そして、次のようなプロンプトが表示されます: > + + Teacher に置換しますか? (y/n/a/q/l/^E/^Y) ここでは次のいずれかの返答が必要です。 - y Yes; 変更 - n No; 変更せずにスキップ - a All; これは変更し、以降のものは全て確認なしで変更 - q Quit; これも含めて、以降は変更しない - l Last; これを変更した上で置換を終了 - CTRL-E 画面を1行逆スクロールする - CTRL-Y 画面を1行スクロールする + y Yes; 置換する。 + n No; 置換せずにスキップ。 + a All; 置換する。以降すべて確認なしで置換する。 + q Quit; 置換を終了する。 + l Last; 置換をしてから終了する。 + CTRL-E 画面を一行上にスクロールする。 + CTRL-Y 画面を一行下にスクロールする。 -置換コマンドの"from"の部分は実際にはパターンです。これは検索コマンドで使わ -れるのと同じ種類のものです。例えば次の例では、行頭に現れる"the"のみを置換 -の対象とします。 > +置換コマンドの "from" の部分は実際にはパターン (正規表現) です。これは検索コマ +ンドで使うのと同じものです。例えば、次のコマンドでは、行頭に現れる "the" のみ +が置換されます: > :s/^the/these/ -"from"や"to"にスラッシュ(/)を含むようなパターンを書きたいのであれば、その前 -に逆スラッシュ(\)を置きます。例えば次の通りです。 > - - :s/one\/two/one or two/ - -ここでは"one/two"という文字列を"one or two"に置換しています。 -もっと簡単な方法もあります。実は":s"コマンドの直後の文字は別にスラッシュ(/) -でなくてもいいのです。例えば、これをプラス(+)にするとこのようになります。 > +"from" や "to" にスラッシュ (/) を含めるには、バックスラッシュ (\) を前置する +必要がありますが、スラッシュの代わりに他の文字を使えばその必要はありません。例 +えばプラス (+) など: > :s+one/two+one or two+ -この場合は、スラッシュの前に逆スラッシュを付ける必要はありません。 - ============================================================================== -*10.3* コマンドの範囲 +*10.3* コマンドの範囲指定 -":substitute"コマンドや多くのコマンドラインモードのコマンドでは一部の行に -対して実行させることができます。これを範囲(range)と呼びます。 -範囲指定の基本形式は {number},{number} です。 > +":substitute" などの : コマンドは、実行する範囲を指定できます。これを範囲指定 +(range) と呼びます。 +範囲指定の基本形式は {number},{number} です。例: > :1,5s/this/that/g -この例では置換コマンドを1行目~5行目に対して実行します。5行目も範囲に入 -ります。範囲指定は必ずコマンドの前に指定します。 +1 行目から 5 行目まで置換コマンドが実行されます。5 行目も範囲に入ります。範囲 +指定はコマンドの前に指定してください。 -数字が1つだけの場合は、特定の1行を指定する時に使います。 > +特定の一行だけ指定するには、数字を一つだけ指定します: > :54s/President/Fool/ -一部には範囲を指定しないとファイル全体を対象とするコマンドもあります。このよ -うなコマンドに現在行を対象とさせるには"."を使います。":write"コマンドはその -ように動きます。範囲を指定しないとファイル全体を保存し、現在行だけをファイル -に保存するには次のようにします。 > +一部のコマンドは範囲指定を省略するとファイル全体を処理します。そのようなコマン +ドで現在行だけを処理するには "." を使います。例えば、":write" コマンドの範囲指 +定を省略するとファイル全体が保存されますが、現在行だけを保存するには、次のよう +にします: > :.write otherfile -最初の行は1行目となります。では最終行の指定は? それは"$"で示します。例え -ば、現在行から最終行を範囲として置換を行うのは次のとおりです。 > +一行目の行番号は 1 です。最終行は "$" で指定できます。例えば、現在行から最終行 +までの範囲で置換をするには、次のようにします: > :.,$s/yes/no/ -先程も使った"%"は実際には"1,$"、つまり最初の行から最終行までと同じことです。 +先程使った "%" は "1,$"、つまり一行目から最終行までと同じことです。 -範囲でのカッコの使用 --------------------- +パターンを使った範囲指定 +------------------------ -本のある章を編集していて、そこに出てくる"grey"を全て"gray"に置換したいとし -ましょう。ただしその章だけを対象とし、以降の章は対象にしたくありません。また -章の区切りは行頭が"Chapter"の行があるものとします。次のコマンドでそれができ -ます。 > +例えば、本のどこかの章を編集していて、その章で使われている "grey" を全て +"gray" に置換したいとします。ただし、その章だけを置換、つまり次章は変更したく +ありません。章は行頭が "Chapter" で始まる行で区切られています。次のコマンドで +それができます: > :?^Chapter?,/^Chapter/s=grey=gray=g -パターン検索を2回使っています。最初の"?^Chapter?"は現在行から逆方向に検索 -を行い、ヒットするパターンを探します。この ?pattern? という範囲の書き方は逆 -方向の検索に使います。同じように "/^Chapter/"は前方検索を行い、次の章の先 -頭を求めています。 -上の例では置換コマンドのセパレータには"="を使っています。これはスラッシュを -多用することによる解りにくさを避けるためです。スラッシュでもそれ以外の文字 -でも問題なく動きます。 +パターン検索が二回使われています。最初の "?^Chapter?" では現在行から上に向かっ +て検索しています。この ?pattern? という範囲の書き方は後方検索をするために使い +ます。同様に、"/^Chapter/" で前方検索を行い、次章の先頭を検索しています。 +上の例では、説明をわかりやすくするために、置換コマンドの区切りに "=" を使って +います。スラッシュでも他の文字でも動作に違いはありません。 加算と減算 ---------- -実は上のコマンドには、ちょっとだけ間違いがあります。もし次の章のタイトルに -"grey"の文字列がある場合も置換の対象となってしまいます。まあそれが期待して -いたことかも知れませんが、そうでなければ? その場合はオフセットを指定すれば -よいのです。 -パターンを探して、その直前の行までを対象とするには次のようにします。 > +実は上のコマンドには少しだけ間違いがあります。次章のタイトルに "grey" が含まれ +ていると、それも置換されてしまいます。それが期待どおりの動作ならいいのですが、 +そうでなければ? その場合はオフセットを指定すればよいのです。 +パターンを検索し、その一行上の行を使うには、次のようにします: > /Chapter/-1 -数字は1でなくても構いません。次の例はヒットした行の2行下を指定するという意 -味になります。 > +数字は 1 でなくても構いません。ヒットした行の 2 行下を指定するなら、次のように +します: > /Chapter/+2 -オフセット値は範囲を示す他の項目にも使えます。次のようにも使えます。 > +オフセットは他の範囲指定にも使えます。例えば: > :.+3,$-5 -これは、現在行の3行下から、最終行の5行上までの範囲を指定してます。 +これは、現在行の 3 行下から、最終行の 5 行上までの範囲を指定しています。 -マークの利用 +マークを使う ------------ -特定の場所を示すのに行番号の代りに、その場所を覚えておいてそれを範囲として -使用するのにマークが使えます。 -マークについては第3章で触れました。例えば、選択範囲としたい領域の先頭で"mt" -でマークし、領域の末尾で"mb"でマークします。すると、マークを使って次のように -範囲指定をすることができます。(マークのある行も範囲に入ります) > +行番号を直接指定する代わりに、マークを使うこともできます。 +マークの使い方は三章で説明しました。例えば、範囲指定したい領域の先頭を "mt" で +マークし、領域の末尾を "mb" でマークします。すると、マークを使って次のように範 +囲指定をすることができます (マークのある行は範囲に含まれます): > :'t,'b -visualモードと範囲 +ビジュアルモードと範囲指定 +-------------------------- -visualモードでも範囲選択ができます。":"を押してコマンドラインモードに入った -時、次のような表示となります。 > +ビジュアルモードでテキストを選択し、":" を押してコマンドラインモードに入ると、 +次のような表示になります: > :'<,'> -ここでコマンドを入力すると、そのコマンドはビジュアルに選択した行範囲に対し -て適用されます。 +この状態でコマンドを入力すると、そのコマンドはビジュアル選択した範囲に対して適 +用されます。 Note: - 行の一部をvisualモードで選択した場合や、CTRL-Vで文字列を矩形選択し - た場合でも、コマンドラインモードのコマンドは行全体を対象とします。 - これは今後のバージョンのvimでは変更になるかも知れません。 + 行の一部だけビジュアルモードで選択した場合や、CTRL-V で矩形選択した場 + 合でも、コマンドは行全体に適用されます。これは将来、変更されるかも知れ + ません。 -'<と'>の実体はvisual選択範囲の始点と終点です。他の範囲をvisualモードで選択 -しない限り、この2つのマークの場所は残っています。ですから、"'<"コマンドを -使えば、visualモードで選択していた範囲の始点にジャンプできます。次のように -マークと他の項目を組み合せることもできます。 > +実は、'< と '> はマークです。ビジュアル選択の始点と終点を示しています。このマー +クは、次にビジュアル選択するまで同じ場所を指しています。そのため、 "'<" コマン +ドでその場所にジャンプすることもできます。マークと他の範囲指定方法を組み合わせ +ることもできます: > :'>,$ -これはvisual領域の終点から、ファイルの末尾までを行範囲を示します。 +これは、選択範囲の終点からファイルの末尾までを範囲指定しています。 -行番号 ------- +行数指定 +-------- -変更したい行数が分かっている場合、その数を入力してから":"を押します。例えば -"5:"と入力した場合、次のような表示となります。 > +変更したい行数が分かっているなら、その数を入力してから ":" を押してください。 +例えば、"5:" と入力すると、次のような表示になります: > :.,.+4 -続けて、使いたいコマンドを入力できます。範囲として、"."(現在行)~".+4"(4行 -下)が使われます。つまり範囲は5行ということです。 +続けて、使いたいコマンドを入力してください。これは、"." (現在行) から ".+4" (4 +行下) が範囲指定されています。つまり範囲は 5 行ということです。 ============================================================================== -*10.4* global(グローバル)コマンド +*10.4* global コマンド -ここで説明する":global"コマンドはvimの中でも最強の部類に属するコマンドです。 -これはパターンにヒットする行を探し、その行で任意のコマンドを実行します。コマン -ドの形式は次の通りです。 > +":global" コマンドは Vim の中でも最も強力な機能の一つです。パターンにヒットす +る行を検索し、その行で、任意のコマンドを実行できます。コマンドの書式は次のとお +りです: > :[range]global/{pattern}/{command} -これは":substitute"コマンドに似ています。ただ、文字列を他のものに置き換える -のではなく、{command}コマンドを実行するのです。 +":substitute" コマンドに似ていますが、文字列が置換されるのではなく、{command} +コマンドが実行されます。 Note: - ":global"で実行するコマンドは":"で始まるコマンドだけです。通常モード - のコマンドは直接は使えません。ただし、|:normal|コマンドについては実 - 行できます。 + ":global" で実行できるのは ":" で始まるコマンドだけです。ノーマルモー + ドコマンドはそのままでは使えません。|:normal|コマンドを使ってください。 -C++スタイルのコメント行にある"foobar"だけを"barfoo"に置換したいとしましょう。 -コメント行は"//"で始まる行とします。次のコマンドを使いましょう。 > +例えば、C++ スタイルのコメント内の "foobar" を "barfoo" に置換したいとします。 +コメントは "//" で開始されています。次のコマンドを使いましょう: > :g+//+s/foobar/barfoo/g -ここでの":g"は":global"の短縮形です。":substitute"を":s"と縮めるのと同じで -す。次に"+"記号で囲まれた文字があります。今回はスラッシュを含んだパターンを -検索するので、パターンのセパレータに"+"を使っています。その次は"foobar"を -"barfoo"に置換するコマンドがあります。 -グローバルコマンドの適用範囲はデフォルトではファイル全体です。ですから上の例 -では範囲指定をしていません。この点は":substitute"がデフォルトでは現在行だけ -を対象とするのと異なります。 -このコマンドは完全ではありません。というのは行の途中で"//"が出てきた場合も -ヒットするため、行頭から"//"までの間も置換の対象となってしまいます。 +最初の ":g" は ":global" の短縮形です。":substitute" を ":s" と縮めるのと同じ +です。次に "+" 記号で囲まれたパターンがあります。今回はスラッシュを含んだパター +ンを検索するので、セパレータに "+" を使っています。その後に、"foobar" を +"barfoo" に置換するコマンドが続きます。 +範囲指定を省略した場合、global コマンドはファイル全体に適用されます。そのため、 +上の例では範囲指定をしていません。この点は、":substitute" が、範囲指定を省略す +ると現在行だけ処理するのと異なっています。 +このコマンドは完璧ではありません。"//" が行の途中にあった場合もヒットしてしま +うので、行頭から "//" までの文字も置換されてしまいます。 -":substitute"と同じく、どんなパターンでも使えます。もっと複雑なパターンについ -て後で学べば、それも使えます。 +":substitute" と同じく、どんなパターンでも使えます。もっと複雑なパターンを覚え +たら使ってみてください。 ============================================================================== -*10.5* ブロック選択のビジュアルモード +*10.5* 矩形選択 -CTRL-Vを使うと、テキストの矩形部分を選択することができます。ここではブロック -で使える特殊なコマンドについて説明します。 +CTRL-V を使うと、テキストの矩形部分を選択することができます。ここでは、矩形選 +択でのみ使える特殊なコマンドを説明します。 -visualブロックモードでは、"$"コマンドには特殊な意味があります。直前のモーショ -ンコマンドに"$"を使ったのであれば、ビジュアル領域の全行が行末まで拡張されま -す。これは現在のカーソル行が他の行よりも短かくても全行の行末まで選択が拡張 -されます。この効果は左右のカーソル移動コマンドを使わない限り、残ります。 -つまり、"j"なら効果は残りますが、"h"では停止します。 +矩形選択では、"$" コマンドに特殊な意味があります。"$" で移動した直後は、選択範 +囲のすべての行で、選択範囲が行末まで拡張されます。現在行より長い行も行末まで選 +択されます。この選択効果は、左右の移動をすると失われてしまいます。つまり、"j" +なら効果は残りますが、"h" では元に戻ってしまいます。 テキストの挿入 -------------- -"I{string}<Esc>"コマンドを使うと、ビジュアルブロックの各行の左側に{string}を -挿入します。CTRL-Vを押すと、ブロック選択のビジュアルモードに入ります。そこで -ブロックを決めるためにカーソルを動かします。次に"I"を押して挿入モードに入り、 -文字列の挿入を開始します。ここで文字を入力するとは最初の行にだけ表示されます。 -<Esc>を押して挿入モードを抜けると、上で入力した文字列が魔法のようにビジュア -ル領域の残りの行に挿入されます。例を示します。 +"I{string}<Esc>" コマンドを使うと、各行の、矩形選択した左側に {string} を挿入 +できます。例えば、CTRL-V を押して矩形選択を開始し、カーソルを動かして選択範囲 +を設定します。次に I を押して挿入モードに入り、テキストを挿入します。このとき、 +挿入したテキストは最初の行にだけ表示されます。 +<Esc> を押して挿入モードを抜けると、テキストが魔法のように選択範囲の残りの行に +挿入されます。例: include one ~ include two ~ include three ~ include four ~ -カーソルを"one"の"o"に合わせてCTRL-Vを押します。"3j"で、カーソルを"four"の -場所まで動かします。これで4行にまたがるブロック選択が出来ました。ここで、 -次のコマンドを入力します。 > +カーソルを "one" の "o" に移動し CTRL-V を押します。"3j" で、"four" まで移動し +ます。これで 4 行が矩形選択されました。そして、次のコマンドを入力します: > Imain.<Esc> -結果は次のようになります。 +結果は次のようになります: include main.one ~ include main.two ~ include main.three ~ include main.four ~ -もしブロックの途中に短かい行があって、ブロックに入っていない行があった場合、その -行には何も挿入されません。例えば、ビジュアル領域選択をする -もしブロックの矩形からはずれているような短かい行がブロックの範囲にあった場合 -は、その行は何も影響を受けません。次のように最初と最後の行に"long"という文字 -を含んだ行があって、2行目が短かい場合、2行目は選択されません。 +選択範囲の途中に短い行があって、その行の文字が選択範囲に入ってなかった場合は、 +その行には何も挿入されません。例えば、以下のテキストで、一行目と三行目の +"long" を矩形選択します。二行目は短いのでなにも選択されていません: This is a long line ~ short ~ Any other long line ~ - ^^^^ selected block + ^^^^ 選択範囲 -さて、ここで、"Ivery <Esc>"を入力すると、次の結果となります。 +そして、"Ivery <Esc>" を入力すると、次のようになります: This is a very long line ~ short ~ Any other very long line ~ -短かい行には何も挿入されません。入力した行で改行をした場合は、"I"は通常モー -ドでの挿入コマンドのようにブロックの最初の行にだけ挿入されます。 +短かい行には何も挿入されません。 -"A"コマンドも同じように動きます。違いは、追加されるのがブロックの左側ではな -く右側である点です。 -"A"にはひとつ、特別なケースがあります。ブロック選択のvisualモードで"$"を使っ -て各行の行末まで選択範囲を拡張した場合、"A"を使うと各行の行末に文字列を追加 -します。 -上と同じ例を使って、"$A XXX<Esc>"を入力すると、次のような結果となります。 +改行を含むテキストを挿入した場合、"I" は通常の挿入コマンドと同じ動作をします。 +つまり、最初の行にだけテキストが挿入されます。 + +"A" コマンドも同様の動作をします。ただし、テキストは右側に挿入されます。そし +て、短い行にもテキストが挿入されます。"I" と使い分ければ、短い行にテキストを挿 +入するかどうかを選択することができます。 +"A" には特別な場合が一つあります。矩形選択時に "$" を使って各行の行末まで選択 +範囲を拡張した場合、"A"を使うと各行の行末にテキストが追加されます。 +上と同じ例を使って、こんどは "$A XXX<Esc>" と入力すると、結果は次のようになり +ます: This is a long line XXX ~ short XXX ~ Any other long line XXX ~ -これは実際に"$"コマンドを使う必要があります。vimはそれを使ったことを覚えてい -ます。カーソルを使って一番長い行の行末までカーソルを移動させ、見た目の範囲を -同じにしても、結果は違ってきます。 +"$" を使わなければこの効果は出せません。Vim は "$" が使われたかどうかを記憶し +ています。カーソルを一番長い行の行末に移動し、見た目の選択範囲を同じにしても、 +同じ結果にはなりません。 -文字列の変更 ------------- +テキストの変更 +-------------- -ビジュアルブロックでの"c"コマンドはブロックを削除し、挿入モードに入って文字 -列を入力できるようにします。入力された文字列はブロックの各行に挿入されます。 -上での例と同様に"long"を選択している時に、"c_LONG_<Esc>"を入力すると、次のよ -うになります。 +矩形選択で "c" コマンドを使うと、選択範囲が削除され、挿入モードに入ります。入 +力された文字列は選択されていた各行に挿入されます。 +上と同じ例を使って、"long" を選択しているときに今度は "c_LONG_<Esc>" と入力す +ると、結果は次のようになります: This is a _LONG_ line ~ short ~ Any other _LONG_ line ~ -"I"コマンドの場合と同じく、短かい行は無視されます。また、新しい文字列には改 -行は入力できません。 +"I" コマンドの場合と同じく、短い行は無視されます。また、新しい文字列には改行は +入力できません。 -"C"コマンドの場合は、ブロックの左端から行末までを削除します。次に挿入モード -に入り、文字列を入力できるようになります。その文字列は各行の行末に追加され +"C" コマンドの場合は、ブロックの左端から行末までが削除されます。そして、挿入 +モードに入り、文字列を入力できるようになります。その文字列は各行の行末に追加さ +れます。 +また同じ例ですが、こんどは "Cnew text<Esc>" と入力すると、結果は次のようになり ます。 -また同じ例ですが、"Cnew text<Esc>"を入力すると次のようになります。 This is a new text ~ short ~ Any other new text ~ -注意すべきは、"long"という単語だけが選択されていても、これを実行すると、行末 -まで全部消えてしまう点です。つまりビジュアルブロックの左端だけしか見ないとい -うことです。 -繰り返しですが、ブロックに含まれないような短かい行はここでも無視されます。 +注意すべきは、"long" という単語だけが選択されていても、これを実行すると、行末 +まで全部消えてしまう点です。つまり、選択範囲の左端の位置だけが意味を持ちます。 +繰り返しですが、文字が選択されていない短い行はここでも無視されます。 -その他にブロック内の文字列を変更するコマンドには次のようなものがあります。 +その他に、矩形選択内の文字列を変更するコマンドには次のようなものがあります。 ~ 大文字/小文字切換え (a -> A and A -> a) U 大文字化する (a -> A and A -> A) u 小文字化する (a -> a and A -> a) -ひとつの文字で埋める --------------------- +一つの文字で埋める +------------------ -ブロック全体を1つの文字で埋めるには"r"コマンドを使います。またまた、上で用 -いた例ですが、"long"を選択した上で"rx"と入力します。 +選択範囲全体を一つの文字で埋めるには "r" コマンドを使います。またまた、上で用 +いた例ですが、こんどは "long" を選択した上で "rx" と入力します: This is a xxxx line ~ short ~ @@ -507,62 +491,63 @@ visualブロックモードでは、"$"コマンドには特殊な意味があ Note: - ブロック内の行末以降の文字も含めたい場合には、25章の'virtualedit' - 機能の説明をご覧ください。 + 行末を越えて矩形選択したい場合は、25 章の 'virtualedit' の説明を参照し + てください。 -左シフト、右シフト ------------------- +シフト +------ -">"コマンドは選択範囲を決まった桁数だけ右にシフトして空白で埋めます。シフト -の開始位置はビジュアルブロックの左端となります。 -これまた同じ例ですが、">"を行うと次のようになります。 +">" コマンドを使うと、選択されたテキストを右側にシフトできます。間は空白で埋め +られます。シフトの開始位置は矩形選択の左端です。 +また同じ例を使って、今度は ">" を実行すると次のようになります: This is a long line ~ short ~ Any other long line ~ -このシフト桁数は'shiftwidth'オプションで指定します。これを4に変更するには次 -のようにします。 > +シフトされる桁数は 'shiftwidth' オプションで設定します。これを 4 に変更するに +は次のようにします: > :set shiftwidth=4 -"<"コマンドはブロックの左端にある空白類を決まった桁数だけ削除します。このコ -マンドはそこにある文字列の量によって制限を受けます。つまり、シフトできるだけ -の空白文字がない場合は、あるだけしか削除しません。 +"<" コマンドを使うと、選択範囲の左側にある空白を一つのシフト分だけ削除できま +す。このコマンドは選択範囲の左側にある空白の量によって制限されます。つまり、空 +白がシフト量より少ない場合は、可能な範囲だけ空白が削除されます。 行の結合 -------- -"J"コマンドは選択している全行を1行に連結します。つまり改行を削除します。 -正確には、改行記号、行頭の空白類、行末の空白類、の3つをまとめて1つの空白 -に置換します。(これは'joinspaces'オプションで変更できます) -さて、見慣れたいつもの例題を使ってみましょう。"J"の結果はこうなります。 +"J" コマンドを使うと、選択範囲の行を一行に連結できます。つまり改行が削除されま +す。正確には、改行、行頭の空白、行末の空白、が一つの空白で置換されます +('joinspaces' オプションで動作を変更できます)。 +さて、また同じ例を使って、今度は "J" を実行します: This is a long line short Any other long line ~ -"J"コマンドはブロック選択のvisualモードでなくても使えます。"v"や"V"でのvisual -モードの場合も全く同じ結果となります。 +"J" コマンドは矩形選択以外でも使えます。"v" や "V" で選択した場合も全く同じ動 +作をします。 -空白文字類を変更したくないの場合は、"gJ"コマンドを使います。 +空白を変更したくない場合は、"gJ" コマンドを使ってください。 ============================================================================== -*10.6* ファイルの一部の保存や読み込み +*10.6* ファイルの一部の保存と読み込み -Eメールを書く時に、他のファイルを取り込みたいことがあります。これは":read -{filename}"コマンドで実行できます。そのファイルの内容はカーソルの下にプット -されます。次の文章でやってみましょう。 +メールを書いているとき、他のファイルを取り込みたいことがあるかもしれません。そ +れには ":read {filename}" コマンドを使います。指定したファイルの内容が現在行の +下にプットされます。 +次の文章でやってみましょう。 Hi John, ~ Here is the diff that fixes the bug: ~ Bye, Pierre. ~ -カーソルを2行目のに移動し、次のコマンドを入力します。 > +カーソルを二行目に移動し、次のコマンドを入力します: > :read patch -"patch"という名前のファイルが挿入されます。その結果は次の通りです。 +"patch" という名前のファイルが挿入され、次のようになります: Hi John, ~ Here is the diff that fixes the bug: ~ @@ -572,160 +557,155 @@ visualブロックモードでは、"$"コマンドには特殊な意味があ > for (i = 0; i < length; ++i) ~ Bye, Pierre. ~ -":read"コマンドには範囲を指定できます。ファイル内容はこの範囲の後の数字の行 -の下にプットされます。例えば":$r patch"ならば、"patch"をファイルの最後に追加 -します。 -最初の行よりも上にファイルを読み込むにはどうすればいいのでしょう?これは行 -番号として0を指定すればできます。そんな行は本当はありませんから、ほとんどの -コマンドではエラーメッセージが出ます。ですが、このコマンドでなら使えるのです。 -> +":read" コマンドに範囲指定すると、指定されたファイルが範囲指定された行の下に +プットされます。例えば、":$r patch" なら、"patch" の内容がファイルの末尾に追加 +されます。 +ファイルの先頭に読み込むにはどうすればいいでしょうか。それには、行番号 0 を指 +定します。そのような行は実際にはないので、他のコマンドに指定するとエラーになる +かもしれませんが、このコマンドでは指定できます: > + :0read patch -"patch"の内容はファイルの先頭にプットされます。 +"patch" の内容がファイルの先頭にプットされます。 -行範囲を指定しての保存 +ファイルの一部だけ保存 ---------------------- -行範囲を指定してファイルに保存するには、":write"コマンドを使います。 -範囲指定をしなければファイル全体を保存します。範囲指定するとその範囲内の行だ -けを保存します。 > +ファイルの一部だけ保存するには、":write" コマンドを使います。範囲指定を省略す +るとファイル全体が保存されますが、範囲指定すると、指定した範囲の行だけが保存さ +れます: > :.,$write tempo -上の例はカーソル位置の行から末尾までをファイル"tempo"に保存します。そのファ -イルが既に存在しているのであれば、エラーメッセージが出ます。vimは間違って既 -存のファイルに上書きするのを防止してくれます。もし上書きしても大丈夫なことが -わかっているのなら、次のように"!"を付けます。 > +このコマンドで、現在行から最終行までが "tempo" に保存されます。ファイルが既に +存在している場合はエラーメッセージが表示されるので、間違ってファイルを上書きす +る心配はありません。ファイルを上書きしたい場合は、! を付けてください: > :.,$write! tempo -注意:上の"!"は":write"の直後に(空白などを置かずに)指定しないといけません。 -でないと、この章の後半で説明するフィルタコマンドになってしまいます。 +注意: ! は ":write" コマンドの直後に指定してください。間に空白を入れると、フィ +ルタコマンドになってしまいます。フィルタコマンドについては後で説明します。 ファイルに追記する ------------------ -この章の最初の節で、レジスタaに複数の行内容を集める方法を説明しました。同じ -ように、ファイルでも行を集めることができます。次のコマンドで現在行だけを保存 -してください。 > +この章の最初の節で、複数の行をレジスタに集める方法を説明しました。同じように、 +複数の行をファイルに集めることができます。まず、次のコマンドで最初の行を保存し +てください: > :.write collection -次にカーソルを2つ目に追記した行に移動し、次のように入力します。 > +次に、二行目として保存したい行に移動し、次のように入力します: > :.write >>collection -">>"はvimに"collection"に新規ファイルとして保存するのではなく、ファイルの末 -尾に追記することを指示します。この指定は必要な回数分自由に繰り返すことができ -ます。 +新規ファイルとして保存するのではなく、">>" を使って、ファイルの末尾に追記する +ことを指示しています。あとは必要なだけこの操作を繰り返してください。 ============================================================================== -*10.7* 文章の整形 +*10.7* テキストの整形 -プレインテキストを入力している時に、各行の長さを画面に合うように自動的に調整 -してくれれば助かります。文章の入力中にそれをさせるには'textwidth'オプション -を設定します。 > +文章を入力しているとき、行が画面内に収まるように自動的に改行してくれたら便利で +すよね。そうするには、'textwidth' オプションを設定します: > :set textwidth=72 -サンプルのvimrcファイルではどのファイルでもこのコマンドを使っていることを覚 -えているかもしれません。つまり、vimrcファイルを使っていたのであれば、あなた -は既にこのコマンドを使っていたということです。次のコマンドで'textwidth'の現 -在の値を確認してみましょう。 > +vimrc ファイルの見本 (|vimrc_example.vim|) で、テキストファイルが開かれたとき +にこのオプションが設定されるようにしていたのを覚えているでしょうか。したがっ +て、vimrc ファイルの見本をそのまま使っているなら、オプションは既に設定されてい +ます。現在の 'textwidth' の設定を確認するには、次のようにします: > :set textwidth -これで各行の長さは72文字までで分割されます。ただし、行の途中まで文章を挿入 -している時や、単語を削除している時には行が長くなったり短かくなったりします。 -vimは既存の文章を勝手に整形はしません。vimに現在の段落を整形させるには次の -ようにします。 > +これで、行が 72 文字より長くなった行が改行されるようになりました。ただし、行の +途中からテキストを挿入したときや、単語削除をしたときは、行が 72 文字よりも長く +なったり短くなったりします。既存の文章が自動的に再整形されたりはしません。 +現在の段落を整形するには、次のコマンドを使います: > gqap -これは"gq"というオペレータで始まるコマンドです。次に"ap"というテキストオブ -ジェクトが続きます。これは「1段落(=a paragraph)」という意味です。段落は、 -空行に囲まれた領域のことを示します。 +これは "gq" というオペレータで始まるコマンドです。次に "ap" というテキストオブ +ジェクトが指定されています。これは "a paragraph" (一つの段落) という意味です。 +段落は、空行で区切られたテキストです。 Note: - 空行(改行文字だけの行)と空白行(空白文字だけの行)は違います。段落の - 区切りとなるのは「空行」だけです。見た目では気付きにくいので注意! + 空行 (改行文字だけの行) と空白行 (空白文字だけの行) は違います。段落の + 区切りは「空行」だけです。見た目では気付きにくいので注意! + +"ap" 以外のテキストオブジェクトや、移動コマンドも指定できます。段落が正しく分 +割されているなら、次のコマンドでファイル全体を整形できます: > -"ap"の代りに任意のモーションやテキストオブジェクトが使えます。段落が正しく -分割されていれば、次のコマンドでファイル全体を整形できます。 -> gggqG -"gg"は1行目にカーソルを動かします。"gqG"の先頭の2文字は文章整形のオペレー -タ、"G"はファイルの末尾へのジャンプをするモーションです。 +これは、"gg" で一行目に移動し、"gq" で整形オペレータを指定、"G" でファイル末尾 +までジャンプしています。 -段落を明確に定義していない場合は、対象となる行を選択して整形することができ -ます。カーソルを整形したい範囲の最初の行に移動し、"gqj"コマンドを使います。 -これは現在行と次の行を整形します。もし最初の行が短かければ次の行の単語が追加 -されます。逆に長ければ、次の行にあふれた単語を追いやります。処理後のカーソル -は、2行目に移動します。ここで"."を使うとこのコマンドを繰り返します。これを -フォーマット化したい範囲の最後まで続ければよいのです。 +段落の区切りが明確でない場合は、手動で行を選択して整形してください。整形したい +範囲の最初の行に移動し、"gqj" コマンドを使います。現在行と次の行が整形されま +す。現在行が短い場合は、次の行の単語が現在行に移動します。現在行が長い場合は、 +現在行の単語が次の行に移動します。カーソルは次の行に移動しているので、"." でコ +マンドを再実行できます。あとは必要なだけ繰り返してください。 ============================================================================== -*10.8* 大文字/小文字変換 +*10.8* 大文字/小文字の変換 + +"section header" という小文字のテキストがあります。これを、"section" だけ大文 +字にするには、"gU" オペレータを使います。カーソルを先頭に移動して、コマンドを +実行してください: > -"section header"という小文字の文字列があり、そのうち、"section"を大文字にし -たい場合、"gU"オペレータで行います。まずカーソルをその単語の先頭に置きます。 -> gUw < section header ----> SECTION header -"gu"オペレータは全く逆に動きます。 > +"gu" オペレータで小文字に変換できます: > guw < SECTION header ----> section header -同様に"g~"は大文字/小文字の入れ換えをします。これらは全てオペレータ、つまり -モーションコマンドやテキストオブジェクトやvisualモードが使えます。 -オペレータを行単位にするには2回指定します。例えば削除オペレータは"d"ですが、 -1行を削除するのは"dd"です。同じように"gugu"は行全体を小文字にします。これを -さらに短縮して"guu"でも構いません。"gUgU"も"gUU"となりますし、"g~g~"は"g~~" -です。次のようになります。 > +"g~" を使うと、大文字と小文字を切り替えることができます。今説明したのは全てオ +ペレータなので、移動コマンドやテキストオブジェクトやビジュアルモードと組み合わ +せることができます。 +オペレータを行に適用するには、オペレータを二回繰り返してください。例えば、"d" +は削除オペレータなので、"dd" で一行削除になります。同じように、"gugu" で行全体 +が小文字になります。もっと短く、"guu" でも構いません。"gUgU" は "gUU"、"g~g~" +は "g~~" と短縮できます。例: > g~~ < Some GIRLS have Fun ----> sOME girls HAVE fUN ~ ============================================================================== -*10.9* 外部プログラムの利用 - -vimにはパワフルなコマンドセットがありますから何でもできます。でも外部のコマ -ンドを使った方が良い場合や速く処理できる場合もあります。 -"!{motion}{program}"コマンドは文章のかたまりを与えて、外部コマンドにフィルタ -リングさせることができます。言い換えると{program}で指定されたシステムのコマ -ンドを実行し、それに{motion}で指定された範囲の文章を入力として与えます。その -コマンドの出力結果を受け取り、選択されていた範囲の文章と入れ換えます。 -UNIXのフィルタに慣染んでいない方には、要領を得ない説明かと思いますので、例を -挙げて説明します。ソート(並べ換え)プログラムはファイルをソートします。次のよ -うなコマンドを実行すると、ソートされていないinput.txtというファイルの内容を -並べ換えてoutput.txtというファイルに保存します。(この例はUNIXでもMicrosoft -Windowsでも動きます) > +*10.9* 外部プログラムを使う + +Vim には強力なコマンドがたくさんあるので何でもできますが、外部プログラムを使っ +た方がもっとキレイで高速に処理できる場合もあります。 +"!{motion}{program}" コマンドを使うと、ファイルの一部を、外部プログラムでフィ +ルタすることができます。つまり、{program} で指定したプログラムが実行され、 +{motion} で指定した範囲のテキストがプログラムに入力され、指定された範囲のテキ +ストがプログラムの出力で置き換えられます。 +UNIX のフィルタに馴染のない方にはわかりにくいと思うので、例を交えて説明します。 +sort コマンドはファイルの中身をソート (並べ替え) するコマンドです。次のコマン +ドを実行すると、ソートされていない input.txt の中身が整列され、output.txt に保 +存されます。(この例は UNIX でも Microsoft Windows でも動作します) > sort <input.txt >output.txt -さて、ここで同じことをvimでやってみましょう。編集中のファイルの1~5行目を -ソートしたいとします。カーソルを1行目に動かしてから、次のコマンドを実行し -ます。 > +さて、同じことを Vim でやってみましょう。1 行目から 5 行目までをソートしてみま +す。カーソルを一行目に移動して、次のコマンドを実行します: > !5G -"!"コマンドはvimにフィルタを実行させるための指示です。これはオペレータですの -で、次にモーションコマンドが必要です。これによってフィルタに渡す範囲を指定し -ます。"5G"は5行目までジャンプするモーションコマンドです。これで1~5行目が -フィルタの範囲であることがわかりました。 -フィルタリングの場合、ここでカーソルが最下段に動き、画面の行頭には"!"と表示 -されます。ここでフィルタコマンド名を入力します。この場合なら、"sort"ですね。 -結局、このコマンドの全体は次のようになります。 > +"!" はフィルタを実行するためのコマンドです。次に、移動コマンドを実行し、フィル +タに渡す範囲を指定しています。"5G" は 5 行目に移動するコマンドなので、1 行目 +(現在行) から 5 行目までがフィルタの範囲として指定されます。 +カーソルが画面の一番下に移動し、! プロンプトが表示されるので、フィルタプログラ +ムの名前を入力してください。この場合なら "sort" ですね。したがって、コマンドは +全部で次のようになります。 > !5Gsort<Enter> -この結果はソートプログラムが最初の5行について動作します。元の5行はプログラ -ムの出力によって置き換えられます。 +コマンドを実行すると、最初の五行が sort プログラムで処理され、元のテキストが、 +プログラムの出力で置き換えられます。 line 55 line 11 line 33 line 22 @@ -734,39 +714,37 @@ Windowsでも動きます) > line 44 line 55 last line last line -"!!"コマンドは現在のカーソル行をフィルタにかけるコマンドです。UNIXでは"date" -コマンドは日付と時刻を表示します。"!!date<Enter>"は現在の行内容を"date"の出 -力結果に置き換えます。これはファイルにタイムスタンプを追加するのに便利です。 +"!!" コマンドを使うと、現在行をフィルタできます。Unix では "date" コマンドで現 +在の日時を出力できるので、"!!date<Enter>" で現在行を "date" の出力で置き換える +ことができます。これはファイルに日付を挿入するのに便利です。 -うまく動かない場合 ------------------- +うまく動作しない場合 +-------------------- -シェルを起動し、テキストを送りこみ、出力を取り込む、という処理を行うには、 -vimはどのようにシェルが動くかを完全に把握していることが必要です。フィルタ -処理に問題がある場合は、以下のオプションの内容をチェックしてください。 +シェルを起動し、テキストを入力し、出力を取り込むためには、シェルが正しく実行で +きるように設定されている必要があります。フィルタ処理に問題がある場合は、以下の +オプションを確認してください。 - 'shell' vimが外部プログラムを実行するのに使うプログラムの指 - 定 - 'shellcmdflag' シェルにコマンドを渡すための引数 - 'shellquote' コマンド名を囲むためのクオート文字 - 'shellxquote' コマンド名とリダイレクトを囲むための文字 - 'shelltype' シェルの種類(Amiga専用) + 'shell' 外部プログラムを実行するために使われるプログラムの指定 + 'shellcmdflag' シェルにコマンドを渡すための引数指定 + 'shellquote' コマンドを囲むためのクオート文字 + 'shellxquote' コマンドとリダイレクトを囲むためのクオート文字 + 'shelltype' シェルの種類 (Amiga専用) 'shellslash' ファイル名のバックスラッシュをスラッシュにする - (MS-Windows系専用) + (MS-Windows 系専用) 'shellredir' コマンドの出力をファイルに保存するために指定する文字列 -UNIXではこれはほとんど問題になりません。というのはシェルは2種類("sh"系と -"csh"系)に集約されるからです。vimは'shell'オプションをチェックし、関連オプ -ション値を自動的に設定します。その内容は'shell'のどこかに"csh"という文字があ -るかどうかで決めています。 -しかし、MS-Windowsでは多種のシェルが存在するため、フィルタ処理がうまく動くよ -うにオプション値を調整してやる必要があります。より詳しい情報はヘルプでご覧 -ください。 +Unix では、設定する必要はほとんどありません。なぜなら、おそらく sh 系か csh 系 +のシェルが使われているからです。Vim は 'shell' に "csh" という文字列が含まれて +いるかどうかでシェルの種類を判断し、関連したオプションを自動的に設定します。 +しかし、MS-Windows ではいろんなシェルがあるので、フィルタを動作させるためには、 +オプションを設定する必要があるかもしれません。詳しくはオプションのヘルプを参照 +してください。 -コマンドの出力を読む --------------------- +コマンドの出力を読み込む +------------------------ カレントディレクトリの内容を読み込むには、次のようにします。 @@ -775,56 +753,56 @@ Unix系: > MS-Windows系: > :read !dir -"ls"や"dir"コマンドの出力を取り込んで、カーソル以降に挿入します。これはファ -イルからの読み込みコマンドに似ていますが、"!"があることでコマンドが続くこと -を指定している点が違います。 -コマンドには引数が指定できます。範囲も指定できます。どこに処理結果をプットす -るかを指定できます。 > - +"ls" や "dir" コマンドの出力が取り込まれ、カーソルの下に挿入されます。これは +ファイルの読み込みに似ていますが、"!" を使ってコマンドを指定している点が違いま +す。 +コマンドに引数を指定することもできます。出力をプットする場所を指定することもで +きます: +> :0read !date -u -これはファイルの先頭に現在の日付と時間をUTC形式で挿入します。("-u"引数が使え -るようなdateコマンドが必要ですよ。当たり前ですが...) なお、"!!date"は現在行 -を入れ換えるのに対して、":read !date"は行を挿入するという点が違います。 +これはファイルの先頭に現在の日付と時間を UTC 形式で挿入します ("-u" 引数が使え +る date コマンドが必要ですよ。当たり前ですが...)。Note: "!!date" が現在行を置 +き換えるのに対して、":read !date" は行を挿入するという点が違います。 -コマンドにテキストを書き出す +コマンドにテキストを入力する ---------------------------- -UNIXの"wc"コマンドは単語数を返します。編集中のファイルの単語数をカウントする -には次のようにします。 > +Unix の "wc" コマンドは単語を数えることができます。編集中のファイル内の単語を +数えるには、次のようにします: > :write !wc -これは既に述べたwriteコマンドと似ています。ただ、ファイル名の代わりに"!"と外 -部コマンド名が指定されています。ここで書き込んだ文字列は指定のコマンドの標準 -入力として渡されます。出力は次のようになります。 +これは上述の write コマンドと似ていますが、"!" を使って外部プログラムを指定し +ている点が違います。テキストがコマンドの標準入力に渡され、次のような結果が表示 +されます: 4 47 249 ~ -"wc"コマンドは冗長なメッセージを出しません。上の例は行数が4、単語数が47、 -文字数が249であることを示しています。 +"wc" コマンドは冗長なメッセージを出力しません。この出力は、行数が 4、単語数が +47、文字数が 249 であることを示しています。 -次のような間違いに気をつけてください。 > +次のような間違いに気をつけてください: > :write! wc -これはカレントディレクトリの"wc"というファイルに強制的に上書きをするコマンド -です。writeの直後の空白は重要です! +これはカレントディレクトリの "wc" というファイルに強制上書きするコマンドです。 +空白は重要ですよ! 画面の再描画 ------------ -外部コマンドがエラーメッセージを出した場合、画面がめちゃくちゃになってしまう -かもしれません。vimは自身が再描画が必要な場所を把握しているため、最低限必要 -な領域だけを再描画します。しかし他のプログラムがどのようん描画をしたかまでは -把握できません。次のコマンドはvimに画面全体を再描画させます。 > +外部プログラムがエラーを起こした場合、画面がめちゃくちゃになってしまうことがあ +ります。Vim は必要だと思われる最小限の領域だけを再描画しますが、他のプログラム +の出力内容を完全に把握することはできません。次のコマンドで画面を再描画できま +す: > CTRL-L ============================================================================== -Next chapter: |usr_11.txt| クラッシュから立ち直る +次章: |usr_11.txt| クラッシュからの復帰 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_11.jax b/ja/usr_11.jax index 69cf196fd..cd297c01e 100644 --- a/ja/usr_11.jax +++ b/ja/usr_11.jax @@ -1,301 +1,289 @@ COMMENT: クラッシュ時の対処方法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_11.txt* For Vim version 6.3. Last change: 2004 Apr 23 +*usr_11.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - クラッシュから立ち直る + クラッシュからの復帰 -マシンがクラッシュした?しかも何時間もかけて編集していたところだった? -大丈夫!vimはあなたの作業のほとんどを復元できるだけの情報をハードディスク上 -に残しています。この章では復元方法を示し、さらにスワップファイルの使い方につ -いて説明をします。 +マシンがクラッシュした?しかも何時間もかけて編集していたところだった?大丈夫! +作業を復元するための情報がハードディスクに記録されています。この章では、作業の +復元方法や、スワップファイルの扱いについて説明します。 -|11.1| 基本的なリカバリ +|11.1| リカバリの基本 |11.2| スワップファイルはどこにある? -|11.3| クラッシュかどうか? -|11.4| さらに詳しい情報 +|11.3| クラッシュした? +|11.4| さらなる情報 - Next chapter: |usr_12.txt| ちょっとしたテクニック - Previous chapter: |usr_10.txt| 大規模な変更 -Table of contents: |usr_toc.txt| +次章: |usr_12.txt| 便利な小技 +前章: |usr_10.txt| 大規模な編集 +目次: |usr_toc.txt| ============================================================================== -*11.1* 基本的なリカバリ +*11.1* リカバリの基本 -ほとんどの場合、編集中のファイル名さえ覚えていれば(そしてハードディスクが正 -しく動いていれば)ファイルのリカバリはとても簡単です。vimを起動する時にその -ファイル名に"-r"オプションを付けるだけです。 > +ほとんどの場合、編集していたファイルの名前さえ覚えていれば (そしてハードディス +クが正しく動いていれば) ファイルのリカバリはとても簡単です。Vim を起動するとき +に、ファイル名に "-r" 引数を付けるだけです: > vim -r help.txt -vimはスワップファイル(編集中の文書を保持するのに使います)を読み込み、元ファ -イルのかけらを見つけます。全てがうまくいけば、次のようなメッセージが表示され -ます。(当たり前ですがファイル名は違います) +スワップファイル (編集中の文書を保持するのに使われる) が読み込まれ、編集してい +たファイルのかけらが読み込まれます。正しく動作すると、次のようなメッセージが表 +示されます (もちろん、ファイル名は違うでしょう): - Using swap file ".help.txt.swp" ~ - Original file "~/vim/runtime/doc/help.txt" ~ - Recovery completed. You should check if everything is OK. ~ - (You might want to write out this file under another name ~ - and run diff with the original file to check for changes) ~ - Delete the .swp file afterwards. ~ + スワップファイル ".help.txt.swp" を使用中 ~ + 原本ファイル "~/vim/runtime/doc/help.txt" ~ + リカバリが終了しました. 全てが正しいかチェックしてください. ~ + (変更をチェックするために, このファイルを別の名前で保存した上で ~ + 原本ファイルとの diff を実行すると良いでしょう) ~ + それから.swpファイルを削除してください ~ -念のために、このファイルを別ファイル名で保存します。 > +念のため、ファイルを違う名前で保存しましょう: > :write help.txt.recovered -最終的にあなたが期待していたものになっているかどうかを調べるために元のファイ -ルと比較してください。このような場合はvimdiff(|08.7|)が便利です。オリジナルの -ファイルに新しいバージョン(クラッシュする前に保存してあったファイル)の内容を -含んでいることを確認します。なくなっている行がないかどうかも確認してください。 -(時々vimがリカバリできない場合もあります) -リカバリの時に警告メッセージが表示された場合は、気をつけて読んでください。 -まあ、こんなことは滅多にありませんが。 +復元前のファイルと比較して、正しく復元できたどうかを確認してください。それには +vimdiff (|08.7|) が便利です。復元したファイルが、復元前のファイル (クラッシュ +する前に保存してあったファイル) の内容を含んでいることを確認し、失われた行がな +いかどうかも確認してください (Vim がリカバリに失敗することもあるので)。 +リカバリ時に警告メッセージが表示された場合は、それを注意深く読んでください。ま +あ、そんなことは滅多にありませんが。 -さて、うまくいった場合でもクラッシュ直前の変更内容はリカバリできないのが普通 -です。vimは4秒間入力をしないか、約200文字の入力があった場合に、ディスクに変 -更内容を書き出(フラッシュ)します。これは'updatetime'と'updatecount'オプション -で指定できます。ですから、システムがダウンする時に、それを保存するチャンスが -なければ、最後にフラッシュした以降の変更は失われてしまうのです。 +普通は、クラッシュ直前の変更はリカバリできません。スワップファイルは、四秒間入 +力がなかったときや、約 200 文字入力されるごとに、ディスクに書き出されます。こ +の動作は 'updatetime' と 'updatecount' で設定できます。ですから、変更を保存す +る間もなしにシステムがダウンすると、最後に書き出した後の変更は失われてしまうの +です。 -ファイル名なしで編集していた場合は、引数として空文字列を与えます。 > +名前のないファイルを編集していた場合は、引数に空文字列を与えてください: > vim -r "" -これはクラッシュした時のディレクトリで実行しなくてはなりません。そうでないと -vimはスワップファイルを探し出せません。 +これは正しいディレクトリで実行してください。ディレクトリが違うとスワップファイ +ルを検出できません。 ============================================================================== -*11.2* スワップファイルはどこに? +*11.2* スワップファイルはどこにある? -vimがスワップファイルを置く場所はいくつかあります。通常は元のファイルと同じ -ディレクトリにあります。それを探し出すには、そのファイルのあるディレクトリに -移動して、次のコマンドを使います。 > +スワップファイルはいろんな場所に保存できます。通常は元のファイルと同じディレク +トリに保存されます。スワップファイルを見つけるには、ファイルのあるディレクトリ +に移動して、次のコマンドを使います: > vim -r -vimは発見したスワップファイルをリスト表示します。現在のディレクトリにある -ファイル用のスワップファイルが別ディレクトリにあれば、それも表示します。どの -ディレクトリでもスワップファイルが見つけられない場合でも、ディレクトリツリー -の検索は行いません。 -結果出力は次のようになります。 +検出されたスワップファイルの一覧が表示されます。カレントディレクトリのファイル +のスワップファイルが別ディレクトリにある場合はそれも表示されます。ディレクトリ +ツリーを再帰的に処理したりはしません。 +出力は次のようなものです: - Swap files found: ~ - In current directory: ~ + スワップファイルが複数見つかりました: ~ + 現在のディレクトリ: ~ 1. .main.c.swp ~ - owned by: mool dated: Tue May 29 21:00:25 2001 ~ - file name: ~mool/vim/vim6/src/main.c ~ - modified: YES ~ - user name: mool host name: masaka.moolenaar.net ~ - process ID: 12525 ~ - In directory ~/tmp: ~ - -- none -- ~ - In directory /var/tmp: ~ - -- none -- ~ - In directory /tmp: ~ - -- none -- ~ - -リカバリの対象に該当しそうなファイルがいくつもある場合には、スワップファイル -のリストを表示します。その中から使いたいファイルの番号を入力して、決定しま + 所有者: mool 日付: Tue May 29 21:00:25 2001 ~ + ファイル名: ~mool/vim/vim6/src/main.c ~ + 変更状態: あり ~ + ユーザ名: mool ホスト名: masaka.moolenaar.net ~ + プロセスID: 12525 ~ + ディレクトリ ~/tmp: ~ + -- なし -- ~ + ディレクトリ /var/tmp: ~ + -- なし -- ~ + ディレクトリ /tmp: ~ + -- なし -- ~ + +リカバリを実行したとき、スワップファイルが複数見つかった場合は、スワップファイ +ルの一覧が表示されるので、使いたいスワップファイルを番号で選択してください。日 +付を見て慎重に選択してください。 +どれを指定したらよいかわからない場合は、一つずつ試して中身を確認してください。 + + +スワップファイルを直接指定する +------------------------------ + +使いたいスワップファイルがわかっている場合は、スワップファイルの名前を指定すれ +ばリカバリすることができます。元ファイルの名前はスワップファイルから取得されま す。 -どれが本当に必要なファイルかは日付を見て注意して決定してください。 -どれを指定したらよいかわからない場合には、1つづつ試してみて、期待していた結 -果となるファイルを探してください。 - -スワップファイル名の直接指定 ------------------------- - -リカバリしたいスワップファイルが解っている場合には、そのスワップファイル名を -指定してリカバリさせることができます。vimはスワップファイルから元のファイル -名を復元します。 - -例えば次のとおりです。 > +例: > vim -r .help.txt.swo -これはスワップファイルが思っているのとは違うディレクトリにある場合に便利です。 -それでもうまく動かない場合、vimがリポートするファイル名が何かを見て、そのファ -イルに従ってください。'directory'オプションの値を見て、vimがスワップファイル -をどこに置くのかを確認してください。 +これはスワップファイルが本来の場所以外にある場合にも便利です。うまく動作しない +場合は、Vim が表示したファイル名を見て、それにしたがってファイル名を変更してく +ださい。'directory' オプションを確認し、スワップファイルが保存される場所も確認 +してください。 Note: - vimは'dir'オプションで定義されたディレクトリを検索して"filename.sw?" - というパターンにヒットするスワップファイルを見つけます。ワイルドカー - ド拡張がうまく動かない(例えば'shell'オプションが無効であった)場合で - もvimはしつこく"filname.swp"というファイルを見つけようとします。 - それも失敗した場合は、ファイルをリカバリできるようなスワップファイル - 名を与えるしかありません。 + スワップファイルには、'dir' オプションに指定されたディレクトリ内の、 + "filename.sw?" というパターンにマッチしたファイルが使われます。ワイル + ドカードの展開ができなかった (例えば 'shell' オプションが無効であった) + 場合は、"filname.swp" というファイルが検索されます。それも失敗した場合 + は、スワップファイルを直接指定してリカバリするしかありません。 ============================================================================== -*11.3* クラッシュした?してない? *ATTENTION* *E325* +*11.3* クラッシュした? *ATTENTION* *E325* -vimはおバカをしてしまうことからあなたを守ろうとします。無邪気にファイルの内容 -を確認しようとして、ファイル編集を始めようとします。vimはその代わりに次のよう -な長いメッセージを表示します。 +Vim には、うっかりミスを防止するための仕組みがあります。ファイルを開こうとした +ときに、次のようなメッセージが表示されることがあります: E325:注意 ~ - 次の名前でスワップファイルを見つけました。".main.c.swp" ~ - 所有者: mool ~ - 日付: Tue May 29 21:09:28 2001 ~ - ファイル名: ~mool/vim/vim6/src/main.c ~ - 変更状態: あり ~ - ユーザ名: mool ホスト名: masaka.moolenaar.net ~ - プロセスID: 12559 (still running) ~ - ファイルを開いている最中 "main.c" ~ - - (1) 別のプログラムが同じファイルを編集しているのでしょう. ~ - そうであるならば, 変更をした際に最終的に, 同じファイルの異なる ~ + 次の名前でスワップファイルを見つけました ".main.c.swp" ~ + 所有者: mool 日付: Tue May 29 21:09:28 2001 ~ + ファイル名: ~mool/vim/vim6/src/main.c ~ + 変更状態: なし ~ + ユーザ名: mool ホスト名: masaka.moolenaar.net ~ + プロセスID: 12559 (まだ実行中) ~ + 次のファイルを開いている最中 "main.c" ~ + 日付: Tue May 29 19:46:12 2001 ~ + + (1) 別のプログラムが同じファイルを編集しているかもしれません. ~ + この場合には, 変更をした際に最終的に, 同じファイルの異なる ~ 2つのインスタンスができてしまうことに注意してください. ~ 終了するか, 注意しながら続けます. ~ (2) このファイルの編集セッションがクラッシュした. ~ - その場合には ":recover" か "vim -r main.c" ~ + この場合には ":recover" か "vim -r main.c" ~ を使用して変更をリカバーします(":help recover" を参照). ~ - 既にこれを行ったのならば, スワップファイル ".main.c.swp" ~ + 既にこれを行なったのならば, スワップファイル ".main.c.swp" ~ を消せばこのメッセージを回避できます. ~ -vimはファイルの編集を開始する時に、そのファイル用のスワップファイルがあるか -どうかをチェックします。既にそれがある場合には、何かがおかしくなっています。 -次のいずれかでしょう。 +ファイルを開くとき、スワップファイルが既に存在するかどうかがチェックされます。 +既に存在しているなら、何かがおかしくなっているのです。原因は次の二つの内のどち +らかでしょう。 -1. このファイルを編集している別のセッションがあります。上記のメッセージ中の - "プロセスID"の行を見てください。次のような形式になっているはずです。 +1. 別のセッションが同じファイルを編集している。上記メッセージの "プロセスID" + の行に注目してください。次のようになっていますね: - process ID: 12559 (still running) ~ + プロセスID: 12559 (まだ実行中) ~ - "(still running)" というのは、同じマシン上でこのファイルを編集しているプ - ロセスがあることを示しています。ただし、非Unixシステムではこれは表示され - ないでしょう。ネットワーク越しにファイルを編集している場合もこのメッセー - ジは表示されません。というのはそのプロセスは他のマシン上で動いているため - です。この2つのケースでは何が起こっているかを、あなたが調べなければなり - ません。 - 同じファイルを編集しているvimプロセスが他にいる場合に、編集を続けると同じ - ファイルに対して2つのバージョンができてしまいます。両者のうち、最後に書 - き込んだ時に、その前のを上書きしますから、変更内容(の一部)を失なうことに - なります。この場合は後で起動したvimを終わるのが良いでしょう。 + "(まだ実行中)" というのは、このファイルを編集しているプロセスが、同じマシン + 上で実行されていることを示しています。この情報は Unix 以外のシステムでは表 + 示されないかもしれません。ネットワーク越しにファイルを編集している場合も、 + この情報は表示されません。なぜなら、そのプロセスは他のコンピュータで実行さ + れているからです。そのような場合は、自分で状況判断してください。 + 別の Vim が同じファイルを編集している場合、そのまま編集を続けると同じファイ + ルの二つのバージョンができてしまいます。後から書き込まれたファイルがもう一 + 方のファイルを上書きしてしまうので、変更内容が失われることになります。この + ような場合は、そのまま Vim を終了したほうがいいでしょう。 -2. スワップファイルはマシンやvimが前回クラッシュした時の結果かもしれません。 - メッセージに表示される日付を確認してください。スワップファイルの日付が - 編集しようとしているファイルよりも新しい場合は次のように表示されます。 +2. Vim またはマシンがクラッシュしたのでスワップファイルが残っている。メッセー + ジの日付を確認してください。スワップファイルの日付が開こうとしたファイルよ + りも新しく、メッセージに次の行が含まれている場合: - modified: YES ~ + 変更状態: あり ~ - この場合、リカバリすべきクラッシュしたセッションがある可能性が高いです。 - ファイルの日付の方がスワップファイルより新しいという場合もあります。、これ - はクラッシュした後に何らかの変更を加えたのでしょう(おそらく、以前にリカバリ - したのに、スワップファイルを消し忘れているのではないですか?)。もしくは、ス - ワップファイルが更新されてからクラッシュする前にファイルが保存されたのかも - しれません(そうならラッキーです。ふるいスワップファイルは必要ありません)。 - こういう場合、vimは次のような警告を表示します。 + この場合、クラッシュしたセッションが存在し、リカバリすべき内容が含まれてい + る可能性があります。 + ファイルの日付がスワップファイルの日付よりも新しい場合、クラッシュした後に + 何らかの変更が加えられた可能性があります (おそらく、リカバリした後に、スワッ + プファイルを消し忘れたのではないですか?)。もしくは、スワップファイルが更新 + されてからクラッシュするまでの間にファイルが保存されたのかもしれません (そ + れならラッキーです。古いスワップファイルは必要ありません)。そういう場合は、 + 次のような警告が表示されます: - NEWER than swap file! ~ + スワップファイルよりも新しいです! ~ 読めないスワップファイル ------------------------ -ときどき次の行が +ときどき、スワップファイルの名前の下に、次の行が表示されることがあります - [読込めません] ([cannot be read]) + [読込めません] ~ -スワップファイルの名前の下に表示されます。これは状況により、良い場合と悪い場 -合があります。 +これには良い状態と悪い状態があります。 -以前のセッションがファイルに変更を加えることなくクラッシュした場合は良い状態 -です。その場合ゼロバイトのファイルがスワップファイル用のディレクトリにあるで -しょう。それを削除して作業を続けてください。 +以前のセッションがファイルに変更を加えることなくクラッシュした場合は良い状態で +す。その場合、ゼロバイトのスワップファイルが作成されているはずです。それを削除 +して作業を続けてください。 -あなたにスワップファイルの読み込み権限がない場合は少し悪い状態です。ファイル -をリードオンリーで開くか、そのまま終了してください。マルチユーザーシステム -で、あなたが最後に変更を加えたときに違う名前でログインしていたら、その名前で -ログインしなおせば"リードエラー"が直るかもしれません。あるいはそのファイルを -最後に変更した(している)人を見つけて話し合ってください。 +スワップファイルの読み込み権限があなたにない場合は少し悪い状態です。ファイルを +読み込み専用で開くか、Vim を終了するかしてください。マルチユーザーシステムで、 +あなたが違う名前でログインしていたときに変更を加えていたのだとしたら、その名前 +でログインしなおせば "読み込みエラー" を直せるかもしれません。あるいは、その +ファイルを最後に変更した (している) 人を探して話し合う必要があるかもしれませ +ん。 -スワップファイルを保存しているディスクの物理的な故障の場合はとても悪い状態で -す。幸いにもこれはほとんど起こりません。始めに(もしできるなら)どの変更が失わ -れたかを確認するために、リードオンリーでファイルを開いてください。あなたがそ -のファイルの責任者なら、変更をやり直す覚悟をしてください。 +スワップファイルを保存しているディスクが物理的に故障している場合はとても悪い状 +態です。幸いにも、そんなことはほとんど起こりません。(可能なら) まず、ファイル +を読み込み専用で開き、変更がどの程度失われたか確認してください。あなたがその +ファイルの責任者なら、変更をやり直す覚悟を決めましょう。 -どうしようか? +どうしますか? -------------- -ダイアログが出た時は、次の5つからどれか1つを選びます。 - - Swap file ".main.c.swp" already exists! ~ - [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~ - -"O" ファイルを読み込み専用で開きます。これはリカバリは要らないが、ファイルの - 内容を確認したい場合に使います。これは、誰か他の人が編集しているのは解っ - ていて、それでも(変更をしないで)内容を確認したい時に使います。 - -"E" ファイルを普通に編集します。注意してください!ファイルを他のvimで編集し - ている場合、そのファイルの2つのバージョンを作ってしまう可能性がありま - す。このような現象が発生した場合vimは警告を発します。後でごめんなさい、 - するより、最初から安全な方法を選ぶのが良いでしょう。 - -"R" スワップファイルを使ってファイルを復元します。復元したい内容がスワップ - ファイルにあることがわかっている場合に使います。 - -"Q" 終わる。ファイル編集を取り止めます。同じファイルを編集しているvimが他に - ある場合に使います。 - vimを起動した時なら、vimが終了します。既にいくつかのウィンドウを開いてい - る場合はスワップファイルがあるようなウィンドウだけを終わります。":edit" - コマンドで開こうとした場合は、このファイルを開かずに直前に編集していた - ファイルに戻ります。 - -"A" 停止する。Quitに似ていますが、これはコマンドを即座に停止します。例えば複数 - のウインドウで作業している時に、スクリプトを使っていくつかのファイルを編集 - する時に便利です。 - (訳注)以下のスクリプトで確認するとわかりやすいと思います。 - func Test() - edit some_file.txt " すでに他のvimウインドウで開いているファイルを開く - call confirm("Hello") " Quit: 表示される Abort: 表示されない - endfunc - -"D" スワップファイルを削除します。スワップファイルが不要なことがはっきりして - いる時に使ってください。例えば、何も変更を加えていない場合や、ファイル本 - 体の日付がスワップファイルより新しい場合に使います。 - Unixではスワップファイルを生成したプロセスが見当らない場合だけこの選択肢 - を表示します。 - -サポート外のバージョンのvimを使っていて、このようなダイアログが出ない場合は、 -復元を手動で行わなければなりません。ファイル復元には次のコマンドを使います。 -> +ダイアログがサポートされている場合、次の五つの選択肢が表示されます: + + スワップファイル ".main.c.swp" が既にあります! ~ + 読込専用で開く([O]), とにかく編集する((E)), 復活させる((R)), ~ + 削除する((D)), 終了する((Q)), 中止する((A)): ~ + +"O" ファイルを読み込み専用で開く。リカバリが必要なくて、ただファイルを表示した + い場合に選択してください。他の誰かがファイルを編集しているときに、ファイル + の内容を変更したいのではなく、確認だけしたい場合にも使えます。 + +"E" ファイルを普通に編集する。注意!他の Vim がそのファイルを編集中の場合、そ + のファイルの二つのバージョンができてしまいます。そうなる前に Vim は警告を + 発しますが、後で残念なことにならないように、最初から安全な選択をしましょ + う。 + +"R" スワップファイルを使ってファイルを復元する。復元すべき内容がスワップファイ + ルに含まれていることがわかっている場合に使ってください。 + +"Q" 終了する。ファイル編集を取り止めます。他の Vim が同じファイルを編集してい + る場合に使ってください。 + Vim を起動中なら、Vim が終了します。複数のファイルを開こうとしていた場合、 + Vim が終了するのは、それが最初のファイルだった場合のみです。":edit" コマン + ドで開こうとしていた場合は、ファイルを開かずに、直前のファイルに戻ります。 + +"A" 停止する。「終了する」に似ていますが、コマンドも即座に停止します。例えば、 + 複数のファイルを開くようなスクリプトを実行したときに、スクリプトを即座に停 + 止させることができます。 + +"D" スワップファイルを削除する。スワップファイルが不要なことがはっきりしている + 場合に使ってください。例えば、スワップファイルが変更を何も含んでいない場合 + や、ファイル本体の日付がスワップファイルより新しい場合に使います。 + Unixでは、スワップファイルを生成したプロセスがまだ実行中の場合、この選択肢 + は表示されません。 + +ダイアログが表示されない (ダイアログをサポートしていない Vim を使っている) 場 +合は、手動で復元作業を実行してください。ファイルを復元するには、次のコマンドを +使います: > + :recover -vimはそのファイル用のスワップファイルが存在していることを必ず見つけ出せるわ -けではありません。他のセッションが別のディレクトリにスワップファイルを置いて -いる場合や、別のマシン上で編集している時にそのファイルのパスが違っていたりす -る場合などがそうです。ですからvimが常に警告してくれるとは考えないでください。 +スワップファイルの存在を常に検出できるとは限りません。例えば、他のセッションが +別のディレクトリにスワップファイルを保存している場合や、他のマシンのファイルを +編集しているためにファイルのパスが違っている場合などです。ですから、警告が表示 +されないからといって安心しないでください。 -もしこのメッセージを全く見たくないのであれば、'shortmess'オプションに"A"フラ -グを追加してください。ただし、これが必要なのは非常に特殊な状況といえます。 +スワップファイルの警告を表示したくない場合は、'shortmess' オプションに "A" フ +ラグを追加してください。しかし特別な理由がなければ設定を変更する必要はないで +しょう。 ============================================================================== *11.4* さらなる情報 -|swap-file| いつ、どんな名前のスワップファイルが作成されるかについての説 - 明。 -|:preserve| スワップファイルの内容をディスクに手動でフラッシュする。 -|:swapname| 現在のファイル用のスワップファイルの名前を見る。 -'updatecount' キーストロークの数。指定数の入力があれば、スワップファイルの - 内容をディスクにフラッシュする。 -'updatetime' タイムアウト値。指定の時間が過ぎたらスワップファイルの内容を - ディスクにフラッシュする。 -'swapsync' スワップファイルをフラッシュした時にそのディスク内容を同期さ - せるかどうか -'directory' スワップファイルを置くディレクトリ名のリスト -'maxmem' ファイルを書き込むまでにスワップファイルに使えるメモリの上限 +|swap-file| スワップファイルの名前と作成される場所の説明。 +|:preserve| スワップファイルを手動でディスクに書き込む。 +|:swapname| カレントファイル用のスワップファイルの名前を表示する。 +'updatecount' キーストロークの数。指定された数だけキーが入力されると、スワッ + プファイルがディスクに書き込まれる。 +'updatetime' タイムアウト値。指定された時間内に入力がなかったら、スワップ + ファイルがディスクに書き込まれる。 +'swapsync' スワップファイルを書き込んだときにディスクを同期するかどうか。 +'directory' スワップファイルが保存されるディレクトリの一覧。 +'maxmem' テキストをスワップファイルに保存せずに扱えるメモリの上限。 'maxmemtot' 同上。ただし、全ファイルの合計値。 ============================================================================== -Next chapter: |usr_12.txt| Clever tricks +目次: |usr_12.txt| 便利な小技 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_12.jax b/ja/usr_12.jax index 9044bf63d..2ca2850cf 100644 --- a/ja/usr_12.jax +++ b/ja/usr_12.jax @@ -1,145 +1,144 @@ COMMENT: 使いやすくするちょっとした工夫 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_12.txt* For Vim version 6.3. Last change: 2004 May 01 +*usr_12.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - ちょっとしたテクニック + 便利な小技 -いくつかのコマンドを組み合わせれば、ほとんど何でもvimにさせることができます。 -この章では、多くの便利な組み合せについて説明します。ここでは、今までに紹介し -たコマンドの他にいくつか新しいコマンドも使います。 +コマンドを組み合わせれば、ほとんど何でもこなすことができます。この章では、便利 +なコマンドの組み合わせをいくつか紹介します。今までに紹介したコマンドを主に使い +ますが、まだ紹介していないコマンドも少し登場します。 -|12.1| 単語の置き換え -|12.2| "Last, First"を"First Last"に変更 -|12.3| リストの並べ替え -|12.4| 行の順を逆にする -|12.5| 単語数のカウント -|12.6| マニュアルを探す -|12.7| 空白文字をまとめる -|12.8| 単語を使っている場所を探す +|12.1| 単語を置換する +|12.2| "Last, First" を "First Last" に変更する +|12.3| リストをソートする +|12.4| 行を逆順に並べ替える +|12.5| 単語を数える +|12.6| マニュアルを引く +|12.7| 空白を取り除く +|12.8| 単語が使われている場所を検索する - Next chapter: |usr_20.txt| コマンドラインのコマンドを素早く入力する - Previous chapter: |usr_11.txt| クラッシュから立ち直る -Table of contents: |usr_toc.txt| +次章: |usr_20.txt| コマンドラインを素早く入力する +前章: |usr_11.txt| クラッシュからの復帰 +目次: |usr_toc.txt| ============================================================================== -*12.1* 単語の置き換え +*12.1* 単語を置換する -置換コマンドを使うとある単語を全て他の単語に置き換ることができます。 > +置換コマンドを使うと、文章中に現れる単語を別の単語に置換することができます: > :%s/four/4/g -ここで"%"というのは全行という意味の範囲指定です。行末の"g"は1行内でヒットし -た全部を置き換えるという意味になります。 -JP注: 行末の"g"を付けないと、行の最初にヒットした個所だけを置換します。 -ですが、これだと"thirtyfour"のようなパターンも含まれ、思った結果になりません。 -この場合ですと、"thirty4"になります。これを避けるには"\<"を使って単語の先頭 -にヒットさせます。 > +"%" はすべての行を処理するための範囲指定です。末尾の "g" は、行のすべての単語 +を置換するための指定です。 + +上記のコマンドは正しく動作しません。例えば、"thirtyfour" という単語がファイル +に含まれていた場合、"thirty4" に置換されてしまいます。これを防ぐには、"\<" を +使って単語の先頭にヒットさせます: > :%s/\<four/4/g -これでもまだ、"fourty"のような場合はうまくいきません。今度は"\>"を使って単語 -の末尾にヒットさせましょう。 > +これでもまだ、"fourty" のような単語が間違って置換されてしまいます。"\>" を使っ +て単語の末尾にヒットさせましょう: > :%s/\<four\>/4/g -プログラムを作っている場合なら、コード中ではなくコメントにある"four"だけを置 -き換えたい場合もあるでしょう。これは指定するのが難しいですから、"c"フラグを -置換コマンドに与えて、置換する前に確認するようにします。 > +プログラムを書いているなら、コメントの中にある "four" だけを置換したい場合もあ +るでしょう。コメントの中かどうかを区別するのは難しいので、置換コマンドに "c" +フラグを指定して、確認しながら置換してください: > :%s/\<four\>/4/gc -複数のファイルで置換する ------------------------- +複数のファイル内で置換する +-------------------------- -2つ以上のファイルで単語の置換をしたい場合を考えます。各ファイルを開いて、手 -でコマンドを入力することもできます。でもレコーディング(記録)とプレイバック -(再現)を使うと、はるかに素早くできます。 -".cpp"で終わるC++ファイルの入ったディレクトリがあるとします。その中で使って -いる"GetResp"という関数を"GetAnswer"に名前を変更したいとします。 +複数のファイル内で置換したい場合を考えます。ファイルを一つずつ開いて、その都度 +コマンドを入力することもできますが、操作の記録と再実行を使えば、はるかに素早く +置換できます。 +拡張子が ".cpp" の C++ ファイルが入ったディレクトリがあるとします。"GetResp" +という関数を "GetAnswer" に置換してみましょう。 - vim *.cpp 引数を全C++ファイルを対象としてvimを起動 - します。起動時はその最初のファイルから始まり - ます。 - qq レジスタ"q"にレコーディングを始めます。 + vim *.cpp Vim を起動して、すべての C++ ファイルを引数リ + ストに加える。Vim が起動すると、最初のファイル + が表示されます。 + qq レジスタ "q" に記録を開始する。 :%s/\<GetResp\>/GetAnswer/g - 最初のファイルで置換コマンドを実行します。 - :wnext このファイルを保存し次のファイルに移ります。 - q レコーディングを中止します。 - @q レジスタ"q"を実行します。これは置換コマンド - と":wnext"を繰り返します。ここでエラーメッセ - ージが表示されたりしないか確認します。 - 999@q (エラーがなければ)残りの全ファイルに対して、 - レジスタ"q"の内容をプレイバックします。 - -最後のファイルで実行した時には、":wnext"コマンドの対象となる次のファイルがな -いためにエラーメッセージが表示されます。ここで実行を中断し、全てが完了です。 + 最初のファイルで置換コマンドを実行する。 + :wnext ファイルを保存し、次のファイルに移動する。 + q 記録を終了する。 + @q レジスタ "q" を実行する。置換コマンドと + ":wnext" が再実行されます。エラーメッセージが + 表示されたりしないか確認してください。 + 999@q レジスタ "q" を繰り返し実行し、残りのファイル + をすべて処理します。 + +最後のファイルを処理したとき、もうそれ以上ファイルがないので、":wnext" コマン +ドがエラーメッセージを表示します。それにより、実行が中断され、すべてが完了しま +す。 Note: - 一連のレコーディング内容をプレイバックした時にエラーが発生すると実行 - を中断します。ですから、レコーディング中はエラーメッセージが出ないよ - うに注意してください。 + 記録されたコマンドの実行中にエラーが発生すると、実行は中断されます。 + ですから、エラーが出ないように注意して操作を記録してください。 -一点気をつけてください。もし".cpp"の中に"GetResp"を使っていないファイルが一 -つでもあれば、置き換え時にエラーが発生し、処理を停止してしまいます。これを避 -けるには置換コマンドの最後に"e"フラグを付けてください。 > +まだ問題が一つ残っています。もしも、"GetResp" を含んでいないファイルがあった場 +合、置換コマンドがエラーを発生し、そこで処理が停止してしまいます。それを避ける +には、置換コマンドに "e" フラグを指定してください: > :%s/\<GetResp\>/GetAnswer/ge -"e"フラグは":substitute"でヒットしなくてもエラーにしないという意味になります。 +"e" フラグは、パターンが見つからなくてもエラーを発生させないための指定です。 ============================================================================== -*12.2* "Last, First"を"First Last"に置換 +*12.2* "Last, First" を "First Last" に変更する -次のような形式で名前の一覧があるとします。 +次のような形式で名前の一覧があるとします: Doe, John ~ Smith, Peter ~ -これを次のように変更したいとします。 +これを次のように変更したいとします: John Doe ~ Peter Smith ~ -これは次の1コマンドでできてしまいます。 > +これはたった一つのコマンドでできてしまいます: > :%s/\([^,]*\), \(.*\)/\2 \1/ -これを各部品にバラしてみましょう。最初が置換コマンドであることは明らかです -ね。"%"は行範囲でファイル全体を示します。ですから、次の置換はファイル中の各 -行に対して実施されます。 -置換コマンドの引数は"/from/to"ですね。スラッシュ(/)は"from"パターンと"to"パ -ターンのセパレータに使います。"from"パターンは次のようになっています。 +一つずつ説明しましょう。これが置換コマンドであることはわかりますよね。"%" はす +べての行を示す範囲指定です。つまり、ファイルのすべての行で置換が実行されます。 +置換コマンドには "/from/to/" という形式で引数を指定します。スラッシュ (/) は +"from" パターンと "to" 文字列の区切りです。"from" パターンは次のようになってい +ます: \([^,]*\), \(.*\) ~ - 最初の\( と \) で囲まれた部分は"Last" \( \) - カンマ(,)以外の全文示にヒット [^,] - 何文字でもヒット * - ", "という文字パターンにヒット , - 2つ目の\( と \)に囲まれた部分は"First" \( \) - どんな文字でもヒット . - 何文字でもヒット * - -"to"部分には"\2"と"\1"という指定があります。これをバックリファレンスと呼びま -す。これは"from"パターンの"\( \)"部分にヒットした文字列を示します。"\2"は2つ -目の"\( \)"にヒットする文字列となります。この場合なら名("First" name)になりま -す。また、"\1"は最初の"\( \)"の文字列を示します。この場合なら姓("Last" name)で -す。 -置換コマンドの"to"部分には最大で9つのバックリファレンスが指定できます。 -"\0"はヒットしたパターン全体の意味となります。置換コマンドにはこの他にいくつ -か特殊なアイテムがあります。|sub-replace-special|をご覧ください。 + 一つ目の \( \) で囲まれた部分は "Last" です \( \) + カンマ (,) 以外の文字が [^,] + 何文字でもマッチする * + ", " という文字にそのままマッチ , + 二つ目の \( \) で囲まれた部分は "First" です \( \) + どんな文字でも . + 何文字でもマッチする * + +"to" の部分には "\2" と "\1" が指定されています。これはバックリファレンスとい +うものです。"\( \)" で囲まれた部分にマッチしたテキストを参照しています。"\2" +は二つ目の "\( \)" で囲まれた部分にマッチしたテキスト ("First" name) を参照し +ています。"\1" は一つ目の "\( \)" ("Last" name) を参照しています。 +置換コマンドの "to" 部分には最大で 9 個のバックリファレンスを指定できます。 +"\0" はパターンがマッチしたテキスト全体になります。置換コマンドには他にもいく +つか特殊なアイテムがあります。|sub-replace-special| を参照してください。 ============================================================================== -*12.3* リストの並び替え +*12.3* リストをソートする -Makefileではファイル名リストをよく使います。例をあげます。 +Makefile ではよく、ファイルのリストが使われます。例: OBJS = \ ~ version.o \ ~ @@ -151,18 +150,18 @@ Makefileではファイル名リストをよく使います。例をあげます patch.o \ ~ backup.o ~ -このリストを並べ替えするには、外部のソートコマンドを使って文字列をフィルタリ -ングします。 > +このリストをソートするには、外部コマンドの sort を使ってテキストをフィルタリン +グします: > /^OBJS j :.,/^$/-1!sort -まず"OBJS"を行頭に含む最初の行にジャンプします。次に1行下にカーソルを動かし -て次の空行までをフィルタに通します。行範囲をビジュアルモードで選択し"!sort" -コマンドを使うこともできます。この方法は入力しやすいですが、行がたくさんある -場合は作業量が多くなります。 -この結果、次のようになります。 +リストの先頭 (行頭が "OBJS" で始まる行) に移動してから、一行下に移動、その行か +ら次の空行までの範囲をフィルタに通しています。ビジュアルモードで範囲を選択して +から "!sort" を実行する方法でも構いません。その方が入力は簡単です。行がたくさ +んある場合は少し面倒かもしれませんが。 +結果は、次のようになります: OBJS = \ ~ backup.o ~ @@ -175,199 +174,191 @@ Makefileではファイル名リストをよく使います。例をあげます version.o \ ~ -各行の最後に行結合のためのバックスラッシュ(\)を使っている点に注意して下さい。 -並べ替えたために、これがうまくいかなくなっています!元々は"backup.o"は最後に -あったので行末にバックシュラッシュがありません。しかし並べ替えで他の場所に移 -動してしまったのでバックスラッシュが必要です。 -一番簡単な解決は"A \<Esc>"でバックスラッシュを追加することです。最後の行にあ -るバックスラッシュはそのままにしておいても、次の行を空白行にしておけば問題あ -りません。これで同じ問題は二度と起きないでしょう。 +各行の末尾に行結合のためのバックスラッシュ (\) が使われている点に注意して下さ +い。並べ替えたために、これが壊れてしまいました。"backup.o" はリストの最後にあっ +たので行末にバックスラッシュが付いていませんでしたが、並べ替えによって別の場所 +に移動したため、バックスラッシュが必要になったのです。 +一番簡単な解決方法は "A \<Esc>" でバックスラッシュを追加することです。最後の行 +にあるバックスラッシュは次の行を空白行にしておけば削除しなくても問題ありませ +ん。これで同じ問題は二度と起きないでしょう。 ============================================================================== -*12.4* 行順序の逆転 +*12.4* 行を逆順に並べ替える -|:global|コマンドは|:move|コマンドと組み合せて、全ての行を1行目の上に移動す -ることで、結果として行の順序が逆転したファイルを作ることができます。そのコマ -ンドは次の通りです。 > +|:global| コマンドと |:move| コマンドを組み合せて、全ての行を 1 行目の上に移動 +することで、行を逆順に並べ替えたファイルを作ることができます。コマンドは次の通 +りです: > :global/^/m 0 -< -その短縮形はこの通りです。 > - :g/^/m 0 -< +短縮して書くこともできます: > + + :g/^/m 0 -"^"という正規表現は行の先頭に(その行が空行でも)合致します。|:move|コマンドは -合致した行を0行目(実際には存在しない仮想的な行)の後に移動します。ですから、 -現在の合致行はファイルの先頭行となるわけです。 -|:global|コマンドでは行番号が変更となることによる混乱が生じませんので、条件 -に合致する全ての行について、1つづつ最初の行としてプットすることになります。 +"^" という正規表現は行の先頭に (それが空行であっても) マッチします。|:move| コ +マンドはマッチした行を 0 行目 (実際には存在しない仮想的な行) の下に移動します。 +つまり、マッチした行がファイルの先頭行になります。|:global| コマンドは行番号が +変更されても処理を継続できます。そして、マッチしたすべての行が、順番にファイル +の先頭に移動していきます。 -これは行範囲を指定した時も正しく動きます。まず、範囲としたい最初の行にカーソ -ルを移動し、"mt"コマンドでマークします。次に範囲としたい最終行にカーソルを動 -かし、次のように入力します。 > +ある一定の範囲だけ並べ替えることもできます。まず、並べ替えたい範囲の一行上に移 +動し、"mt" でマークします。そして、範囲の末尾に移動し、次のように入力します: > :'t+1,.g/^/m 't ============================================================================== -*12.5* 単語数のカウント +*12.5* 単語を数える -時には単語数の最大値を気にしながら文章に書かなければならない場合もあるでしょ -う。vimは単語数を教えてくれます。 -ファイル全体の単語数をカウントしたい場合は、次のコマンドを使います。 > +ときには、単語数に制限のある文章を書かなければならない場合もあるでしょう。Vim +には単語を数えるための機能があります。 +ファイル全体の単語数を数えるには、次のコマンドを使います: > g CTRL-G -"g"の後に空白キーを押さないでください。上の例で空白を使っているのはコマンド -を読み易くするためです。 -この出力結果は次のようになります。 +"g" の後の空白は入力しないでください。この空白はコマンドを読み易く表記するため +のものです。 +次のような結果が出力されます: - Col 1 of 0; Line 141 of 157; Word 748 of 774; Byte 4489 of 4976 ~ -JP注: 日本語環境では 次のように出力される。 -JP注: 列 1 / 0; 行 141 of 157; 単語 748 / 774; 文字 4489 / 4976 -smz なんで行のトコロだけ"of"なんだろう^^ -KRN なんでだろうね? (^_^; + 列 1 / 0; 行 141 / 157; 単語 748 / 774; バイト 4489 / 4976 ~ -これを見れば、カーソルが何番目の単語にあり(748)、ファイル全体でいくつの単語 -があるのか(774)がわかります。 +これを見れば、何番目の単語 (748) にカーソルがあり、ファイル全体でいくつの単語 +(774) があるのかがわかります。 -ファイルの一部の文章だけの場合は、その先頭に移動し、"g CTRL-G"を入力し -ます。次に末尾に移動して"g CTRL-G"をもう一度押します。で、あとはあなたが、引 -き算で単語数を求めてください。これは頭の体操にはなりますが、あまり簡単とは言 -えません。ビジュアルモードを使えば、かぞえたい範囲を選んでから"g CTRL-G"を入 -力します。結果は次のようになります。 +ファイルの一部の文章だけ単語を数えたい場合は、テキストの先頭に移動して +"g CTRL-G" を入力し、テキストの末尾に移動して "g CTRL-G" をもう一度入力し、そ +して、表示された単語の位置を引き算して単語数を求めます…これは頭の体操にはなり +ますが簡単な方法とは言えませんね。ビジュアルモードを使えば、テキストを選択して +から "g CTRL-G" を入力するだけです。次のような結果が表示されます: - Selected 5 of 293 Lines; 70 of 1884 Words; 359 of 10928 Bytes ~ -JP注: 日本語環境では 次のように出力される。 -JP注: 選択 5 / 293 行; 70 / 1884 単語; 359 / 10928 文字 + 選択 5 / 293 行; 70 / 1884 単語; 359 / 10928 バイト ~ -単語数や行数などをカウントする他の方法については、|count-items|をご覧くださ -い。 +単語や行などを数える他の方法については |count-items| を参照してください。 ============================================================================== -*12.6* マニュアルページの参照 *find-manpage* +*12.6* マニュアルを引く *find-manpage* -シェルスクリプトやCプログラムを編集している時に、(Unix環境なら)使っているコ -マンドや関数のマニュアルページ(man pages)を参照したいでしょう。まずは簡単な -方法でやってみましょう。カーソルを見つけたい単語の上に移動して、次のコマンド -を入力します。 > +シェルスクリプトや C プログラムを書いているときに、コマンドや関数のマニュアル +を引きたいことがあると思います (Unix での話です)。まずは簡単な方法でやってみま +しょう。ヘルプを引きたい単語の上にカーソルを移動して、次のコマンドを入力しま +す: > K -vimはカーソル位置の単語を"man"プログラムを使って探します。マニュアルページが -見つかった場合はそれを表示します。これは普通のページャ(ほとんど"more"コマン -ドと同じ)を使ってテキストをスクロール表示します。マニュアルの最後まで表示し -て、<Enter>を押すと、vimに戻ります。 +単語を引数として "man" プログラムが実行され、マニュアルが見つかった場合は、そ +れが表示されます。テキストをスクロール表示するために、標準設定のページャ (おそ +らく "more" プログラム) が使われます。マニュアルを最後まで表示したら、<Enter> +を押して Vim に戻ってください。 -これの欠点はマニュアルページと編集中の文章を同時に見れないことです。実はvim -ウィンドウの中にマニュアルページを表示させるテクニックもあります。最初に"man" -ファイルタイププラグインをロードします。 > +この方法の欠点は編集中のテキストとマニュアルを同時に表示できないことです。しか +し、Vim ウィンドウの中にマニュアルを表示する方法もあります。最初に、man ファイ +ルタイププラグインをロードしてください: > :runtime! ftplugin/man.vim -このコマンドをいつも使うのであれば、vimrcファイルに書いておけばよいでしょう。 -こうすると、":Man"コマンドを使ってマニュアルページ用のウィンドウを開くことが -できます。 > - +このコマンドを vimrc ファイルに書いておけばいつでも使えるようになります。さて、 +":Man" コマンドが使えるようになりました。新しいウィンドウにマニュアルを表示で +きます: +> :Man csh -ハイライト化されたテキストをスクロールして見ることができます。スクロールした -り、ハイライト化したりできます。これで探しているヘルプを見つけることができま -す。CTRL-W w を使うと、ウィンドウ間をジャンプして編集中のプログラムに戻れま -す。 -特定のセクションのマニュアルページを探すには、セクション番号を最初に付けま -す。例えば、セクション3にある"echo"を探すには次のようにします。 > +カラー表示されたテキストをスクロールして表示することができます。これで、調べた +い説明を見つけることができますね。CTRL-W w を使えば、元のウィンドウにジャンプ +できます。 +特定のセクションのマニュアルを表示したいときは、セクション番号を指定してくださ +い。例えば、セクション 3 にある "echo" を調べるなら、次のようにします: > :Man 3 echo -ヘルプ本文中の他のマニュアルページ(例えば"word(1)"の形式)にジャンプするには、 -そこの上でCTRL-]を押します。もう一度":Man"コマンドを使った場合も同じウィンド -ウを使います。 +マニュアルの中で "word(1)" のような形式で示されている他のマニュアルにジャンプ +するには CTRL-] を押してください。":Man" コマンドが続けて使われた場合は、同じ +ウィンドウが使用されます。 -カーソル下にある単語のマニュアルページを表示するのは次のコマンドです。 > +カーソル下の単語のマニュアルを表示するには、次のコマンドを使います: > \K -(もし<Leader>を再定義しているのであれば、"\"ではなくそれを使います) -例えば、次の行を編集中に"strstr()"の復帰値を知りたくなれば、 +(自分で <Leader> を再定義している場合は、"\" ではなく、それを使ってください) +例えば、次の行を編集中に "strstr()" の返り値を知りたくなったら: - if (strstr(input, "aap") == ) ~ + if ( strstr (input, "aap") == ) ~ -カーソルを"strstr"の上に動かし、"\K"を入力します。ウィンドウが開いてstrstr() -のマニュアルページを表示してくれます。 +"strstr" の上にカーソルを移動し、"\K" と入力してください。ウィンドウが開いて +strstr() のマニュアルが表示されます。 ============================================================================== -*12.7* 空白の圧縮(trim) +*12.7* 空白を取り除く -一部には、行末にある空白やTABの類を無用であり、浪費であり、見苦しいものである -と考える人々がいます。各行の末尾の空白類を取り除くには、次のコマンドを使いま -す。 > +行末の空白は無用であり、浪費であり、見苦しいものであると考える人々がいます。す +べての行末から空白を取り除くには、次のコマンドを使います: > :%s/\s\+$// -ここでも行範囲に"%"を使っています。これはファイル全体を示します。 -":substitute"コマンドが探すパターンは"\s\+$"です。これは空白類の文字(\s)が -1文字以上続き(\+)、そこで行が終わる($)パターンを探します。 -後の章(|usr_27.txt|)で、このようなパターンの書き方を説明します。 -この置換コマンドの"to"部分は空っぽ("//")です。つまり、「無」に置き換えるわけ -で、結局空白類を削除することになるわけです。 +"%" を使ってすべての行を範囲指定しています。":substitute" コマンドに指定されて +いるパターンは "\s\+$" です。これは、空白文字 (\s) が一文字以上続き (\+)、行末 +($) で終わる文字列にマッチします。このようなパターンの書き方は |usr_27.txt| で +説明されています。"to" の部分は空 ("//") になっています。空文字列で置き換える、 +つまり、マッチした空白を削除するという意味になります。 -もう一つの浪費パターンとして、TABの直前に空白文字を使っている場合があります。 -たいていは空白の(見た目の)量を変えずに削除できます。が、いつもというわけじゃ -ありません!ですから、これは手作業でやるのがベストです。次の検索コマンドを使 -います。 > +もう一つの浪費パターンとして、Tab の直前にスペースが使われている場合がありま +す。たいていは、そのスペースを削除しても見た目の空白の量は変わりませんが、いつ +も大丈夫というわけではありません。ですから、手作業で削除するのがベストです。次 +の検索コマンドを使ってください: > / -何も見えないですが、このコマンドではTAB文字の前に空白文字があります。つまり -これは"/<Space><Tab>"なのです。ここで、"x"コマンドを使って空白を削除して、 -TAB位置などに変化がないか確認します。次のヒットを探すために"n"を押し、同じ作 -業をヒットするものがなくなるまで繰り返します。 +何も見えないかもしれませんが、Tab 文字の直前にスペースがあります。つまりこれは +"/<Space><Tab>" です。検索したら、"x" コマンドを使ってスペースを削除し、見た目 +の変化がないことを確認してください。変化があった場合は、Tab 文字を挿入して調整 +しましょう。"n" を押して次の場所を検索します。マッチするものがなくなるまで同じ +操作を繰り返してください。 ============================================================================== -*12.8* 単語を使っている場所を探す +*12.8* 単語が使われている場所を検索する -Unixユーザであれば、vimと"grep"コマンドを組み合せれば、ある単語を使っている全 -ファイルを編集することができます。これはプログラムを作っていて、特定の変数を -使っている全ファイルを編集したい場合に、もの凄く便利です。 -例えば、全Cプログラムファイル中の"frame_counter"という単語を含んでいる全て -のファイルを編集するとします。次のコマンドでそれができます。 > +UNIX を使っているなら、Vim と grep コマンドを組み合わせれば、指定した単語が含 +まれているすべてのファイルを開くことができます。これは、プログラムを書いている +ときに、特定の変数が使われているファイルを表示または編集したい場合にとても便利 +です。 +例えば、"frame_counter" という単語が含まれているすべての C 言語ファイルを開く +には、次のようにします: > vim `grep -l frame_counter *.c` -このコマンドを詳しく見てみましょう。"grep"コマンドは与えられたファイル一覧か -ら、指定の単語を検索します。"-l"オプションが付いていますので、合致する行自体 -を表示するのではなく、その単語を含んでいるファイル名だけを表示します。 -検索する単語は"frame_counter"です。実際にはここにあらゆる正規表現が使えます。 -(Note:grepで使える正規表現のパターンはvimとは完全には一致しません) -このコマンド全体をバッククオート(`)で囲んでいます。これはUNIXのシェルにこの -コマンドを先に実行し、その結果でコマンド行を置き換えます。ですからここでは -"grep"コマンドが実行して得たファイル一覧がvimのコマンド行に与えられます。 -この結果、"grep"の出力のファイル一覧をvimで編集することになります。vimの中で -は":next"や":first"を使ってファイル間を行き来できます。 +このコマンドを詳しく見てみましょう。"grep" コマンドは、指定されたファイルの中 +から単語を検索します。"-l" 引数が指定されているので、単語が含まれているファイ +ルの名前だけが表示されます。マッチした行は表示されません。検索される単語は +"frame_counter" です。単語の指定には正規表現が使えます。(Note: grep で使える正 +規表現は Vim の正規表現と完全に同じではありません。) +コマンドはバッククオート (`) で囲まれています。これは、コマンドを実行し、その +出力を、コマンドラインに入力されたものとして扱うように UNIX シェルに指示してい +ます。つまり、grep コマンドが実行され、出力されたファイルの一覧が Vim の引数に +渡されます。Vim が起動した後は、":next" や ":first" などのコマンドでそれらの +ファイルを切り替えられます。 -各行を探す ----------- +単語が使われている行を検索する +------------------------------ -上述のコマンドはその単語を含むファイルを見つけるだけでした。ファイル中の単語 -は自力で探す必要があります。 -vimには与えられた文字列をファイルリストから探すことのできる組み込みコマンド -があります。もし、全Cプログラムファイルから"error_string"が現れる場所を全て -探すのであれば、例えば次のコマンドを入力します。 > +上述のコマンドは単語が含まれているファイルを見つけるだけなので、単語が使われて +いる行は自分で検索する必要がありました。 +Vim には、指定された文字列を複数のファイルの中から検索するための組み込みコマン +ドがあります。例えば、"error_string" という文字列をすべての C 言語ファイルの中 +から検索するには、次のコマンドを使います: > :grep error_string *.c -これは全ての指定ファイル(*.c)から"error_string"という文字列を探し出します。 -vimはそのパターンを含んでいる最初のファイルを開き、カーソルを最初にヒットす -る場所に移動します。次にヒットしている場所に移動するには、(それが同じファイ -ルかどうかは気にせず)":cnext"コマンドを使います。一つ前に戻るには":cprev"コ -マンドを使います。":clist"を使うと、一致した全リストと現在位置を表示します。 -":grep"コマンドは、外部コマンドの"grep"(Unixの場合)か"findstr"(Windowsの場 -合)を使っています。実行するプログラムは'grepprg'オプションで設定できます。 +指定されたファイル (*.c) の中から、"error_string" という文字列が検索されます。 +コマンドを実行すると、文字列が含まれている最初のファイルが開き、検索にヒットし +た最初の行にカーソルが移動します。文字列が現れる次の場所 (同じファイルとは限り +ません) に移動するには、":cnext" コマンドを使います。一つ前に戻るには ":cprev" +コマンドを使います。":clist" コマンドを使うと、検索結果の一覧と現在位置が表示 +されます。 +":grep" コマンドの実行には、外部プログラムの grep (Unix) または findstr +(Windows) が使われます。使われるプログラムは 'grepprg' オプションで変更できま +す。 ============================================================================== -Next chapter: |usr_20.txt| コマンド行のコマンドを素早く入力する +次章: |usr_20.txt| コマンドラインを素早く入力する Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/various.jax b/ja/various.jax index a8c84d116..9b569992e 100644 --- a/ja/various.jax +++ b/ja/various.jax @@ -1,5 +1,5 @@ COMMENT: 様々なコマンド(コマンド、ヘルプ、印刷) -STATUS: finished 7.0e +STATUS: finished 7.0 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> diff --git a/ja/windows.jax b/ja/windows.jax index 8f0c248ff..eb4458d85 100644 --- a/ja/windows.jax +++ b/ja/windows.jax @@ -1,5 +1,5 @@ COMMENT: 複数のウィンドウとバッファの使用法 -STATUS: finish 7.0 +STATUS: finished 7.0 TRANSLATOR: 小野尾隆一 <onoo@lsidiv.kawasaki-steel.co.jp> TRANSLATOR: nobi TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> From 95d9ccfebdef1812d9320fea2405407934c0e180 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 25 Mar 2007 04:38:47 +0000 Subject: [PATCH 081/783] fix: update to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@81 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/usr_20.txt | 4 +- en/usr_21.txt | 10 +- ja/help.jax | 3 + ja/usr_20.jax | 415 +++++++++++++++++++-------------------- ja/usr_21.jax | 533 ++++++++++++++++++++++++-------------------------- 5 files changed, 469 insertions(+), 496 deletions(-) diff --git a/en/usr_20.txt b/en/usr_20.txt index 5fb174894..78e7a5660 100644 --- a/en/usr_20.txt +++ b/en/usr_20.txt @@ -1,4 +1,4 @@ -*usr_20.txt* For Vim version 6.3. Last change: 2003 Apr 30 +*usr_20.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -263,7 +263,7 @@ now check the list for the item you wanted. If it isn't there, you can use characters before pressing <Tab> to complete the rest. If you have watched carefully, you will have noticed that "incsearch" doesn't start with "is". In this case "is" stands for the short name of -"incsearch". (Many options have a short and a long name.) Vim is clever +"incsearch". (Many options have a short and a long name.) Vim is clever enough to know that you might have wanted to expand the short name of the option into the long name. diff --git a/en/usr_21.txt b/en/usr_21.txt index 434eb037d..53228cc81 100644 --- a/en/usr_21.txt +++ b/en/usr_21.txt @@ -1,4 +1,4 @@ -*usr_21.txt* For Vim version 6.3. Last change: 2004 Mar 29 +*usr_21.txt* For Vim version 7.0. Last change: 2006 Apr 25 VIM USER MANUAL - by Bram Moolenaar @@ -65,7 +65,7 @@ a look at an overview: :w !{program} execute {program} and send text to its input :[range]!{program} filter text through {program} -Notice that the precense of a range before "!{program}" makes a big +Notice that the presence of a range before "!{program}" makes a big difference. Without it executes the program normally, with the range a number of text lines is filtered through the program. @@ -120,7 +120,7 @@ looks like this: > :set viminfo='1000 The f option controls whether global marks (A-Z and 0-9) are stored. If this -option is 0, none are stored. If it is 1 or you do not specify an f option, +option is 0, none are stored. If it is 1 or you do not specify an f option, the marks are stored. You want this feature, so now you have this: > :set viminfo='1000,f1 @@ -165,7 +165,7 @@ And you are right back where you left Vim. So you can get on with your work. Vim creates a mark each time you exit Vim. The last one is '0. The position that '0 pointed to is made '1. And '1 is made to '2, and so forth. Mark '9 is lost. - The ":marks" command is useful to find out where '0 to '9 will take you. + The |:marks| command is useful to find out where '0 to '9 will take you. MOVE INFO FROM ONE VIM TO ANOTHER @@ -199,7 +199,7 @@ work and pick up where you left off the next day. You can do this by saving your editing session and restoring it the next day. A Vim session contains all the information about what you are editing. This includes things such as the file list, window layout, global variables, -options and other information. (Exactly what is remembered is controlled by +options and other information. (Exactly what is remembered is controlled by the 'sessionoptions' option, described below.) The following command creates a session file: > diff --git a/ja/help.jax b/ja/help.jax index 0fb1c9a22..10e86b0b5 100644 --- a/ja/help.jax +++ b/ja/help.jax @@ -204,6 +204,9 @@ Versions ~ |pi_tar.txt| Tar ファイルエクスプローラ |pi_zip.txt| Zip アーカイブエクスプローラ +その他 ~ +|vim_faq.txt| FAQ + LOCAL ADDITIONS: *local-additions* ------------------------------------------------------------------------------ diff --git a/ja/usr_20.jax b/ja/usr_20.jax index 7f2381009..dcbc4090c 100644 --- a/ja/usr_20.jax +++ b/ja/usr_20.jax @@ -1,74 +1,73 @@ COMMENT: コマンドラインの使用法 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> -*usr_20.txt* For Vim version 6.3. Last change: 2003 Apr 30 - 日本語訳:2002/07/12 清水 俊彦 +*usr_20.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - コマンド行のコマンドを素早く入力する + コマンドラインを素早く入力する +Vim にはコマンド入力を簡単にするための一般的な機能が備わっています。コロン (:) +コマンドでは短縮入力、編集、履歴、文脈依存の補完機能が利用できます。 -vimはコマンドの入力を簡便に行うための汎用的な機能を持っています。コロン(:)コ -マンドでは短縮入力、行内編集、再利用ができます。補完機能もほとんど全てのケー -スで使えます。 +|20.1| コマンドライン編集 +|20.2| コマンドライン短縮入力 +|20.3| コマンドライン補完 +|20.4| コマンドライン履歴 +|20.5| コマンドラインウィンドウ -|20.1| コマンド行の編集 -|20.2| コマンド行の短縮入力 -|20.3| コマンド行の補完 -|20.4| コマンド行の履歴 -|20.5| コマンド行ウィンドウ - - Next chapter: |usr_21.txt| 行ったり来たり - Previous chapter: |usr_12.txt| ちょっとしたテクニック -Table of contents: |usr_toc.txt| +次章: |usr_21.txt| 中断と再開 +前章: |usr_12.txt| 便利な小技 +目次: |usr_toc.txt| ============================================================================== -*20.1* コマンド行の編集 +*20.1* コマンドライン編集 -コロン(:)コマンドや検索(/や?)コマンドを使うときには、カーソルが画面の一番下に -動きます。そこにコマンドや検索パターンを入力するわけです。この行を「コマンド -行」と呼びます。この呼び方は検索コマンドの場合にも使います。 +コロン (:) コマンドや検索コマンド (/ or ?) を使うとき、カーソルは画面の一番下 +に表示されます。そこにコマンドや検索パターンを入力するわけです。その場所を「コ +マンドライン」と呼びます。 -入力したコマンドを編集する一番わかりやすい方法は<BS>キーを使うことです。これ -はカーソル位置の直前の文字を削除できます。それより左側の文字を削除したい場合 -は、まず矢印キーでカーソルをその場所まで動かします。 -例えば、次のように入力してあるとします。 > +コマンドラインの編集で最もわかりやすいのは <BS> でしょう。カーソルの直前の文字 +を削除できます。他の位置にある文字を削除したい場合は、矢印キーでカーソルを動か +してから <BS> を押してください。 +例えば、次のように入力して: > :s/col/pig/ < -<Enter>キーを押す前になって、"col"が"cow"の入力ミスであることに気付きました。 -これを修正するには、左矢印キー(<Left>)を5回押し、"col"の直後にカーソルを動 -かします。次に<BS>キーと"w"を押して正しいものにします。 > +<Enter> を押す前になって、"col" が "cow" の入力ミスであることに気づきました。 +これを修正するには、左矢印キー (<Left>) を 5 回押して "col" の直後にカーソルを +動かしてから、<BS> と "w" を入力します: > :s/cow/pig/ -修正したら、そこで<Enter>キーを押します。コマンドを実行するのに、わざわざ -カーソルを行末まで動かす必要はありません。 +修正したら、その場で <Enter> を押しましょう。コマンドを実行するためにカーソル +を行末まで動かす必要はありません。 -コマンド行でカーソルを動かすのに一番使うコマンドを掲げておきます。 +コマンドラインでのカーソル移動には次のキーがよく使われます: - <Left> 1文字左へ - <Right> 1文字右へ - <S-Left> or <C-Left> 1単語左へ - <S-Right> or <C-Right> 1単語右へ - CTRL-B or <Home> 行頭へ - CTRL-E or <End> 行末へ + <Left> 1 文字左 + <Right> 1 文字右 + <S-Left> or <C-Left> 1 単語左 + <S-Right> or <C-Right> 1 単語右 + CTRL-B or <Home> 行頭 + CTRL-E or <End> 行末 Note: - <S-Left> (シフトキーを押したまま左矢印キーを押す)と<C-Left> (コント - ロールキーを押したまま左矢印キーを押す)は使えないキーボードもありま - す。他のシフトキー、コントロールキーの組み合せも同様です。 + <S-Left> (シフトキーを押したまま左矢印キーを押す) と <C-Left> (コント + ロールキーを押したまま左矢印キーを押す) が機能しないキーボードもありま + す。その他のシフトキーとコントロールキーの組み合せも同様に、機能しない + ことがあります。 -カーソルはマウスを使っても動かせます。 +カーソルはマウスでも動かせます。 -DELETING +削除 +----- -上で述べたように<BS>キーはカーソルの直前の文字を削除します。単語を削除するに -は、CTRL-W を使います。 +上述のとおり、<BS> でカーソルの直前の文字を削除できます。単語を削除するには +CTRL-W を使います。 /the fine pig ~ @@ -76,147 +75,141 @@ DELETING /the fine ~ -また、行全体を最初から打ち直したい時には CTRL-U で行全体を消去できます。 +CTRL-U ですべてのテキストを削除できます。コマンドを最初から入力し直したいとき +に使ってください。 上書き ------ -<Insert>キーは挿入モードと上書きモードを交互に切り換えます。次の例で説明しま -しょう。 +<Insert> キーを押すと、挿入と上書きが切り替わります。次のテキストを使って説明 +します: /the fine pig ~ -カーソルを<S-Left>を2回使って(<S-Left>が使えない場合は、<Left>を8回使って) -"fine"の最初まで動かします。ここで<Insert>を押すと上書きモードになります。 -ここで"great"と入力します。 +<S-Left> を 2 回押して (<S-Left> が機能しない場合は <Left> を 8 回押して) +"fine" の先頭にカーソルを動かします。<Insert> を押して上書きに切り替え、 +"great" と入力します: /the greatpig ~ -あれれ、空白文字がなくなってしまいました。でもここで<BS>を押すと"t"が消えて -しまいますから使えません。(これが上書きモードと挿入モードの違いです)。そこで -<Insert>キーをもう一度押して、上書きモードから挿入モードに戻してから、空白を -入力すればOKです。 +おっと、スペースが消えてしまいました。ここで <BS> を押すと "t" が削除されてし +まいます (置換モードとは違いますね)。<Insert> を押して、上書きから挿入に切り替 +え、スペースを入力します: /the great pig ~ -キャンセル処理 --------------- +キャンセル +---------- -":"や"/"コマンド実行しようとしたけれど、止めたくなった場合はどうしましょう? -既に入力したコマンドを実行せずに取り止めるにはCTRL-Cか<Esc>を押します。 +: または / コマンドを入力した後で、そのコマンドの実行をキャンセルしたくなった +場合は、CTRL-C または <Esc> を押してください。 Note: - <Esc>キーはどこでも使える「脱出」キーです。残念なことに、古き良きvi - ではコマンド行で<Esc>を押すとコマンドを実行してしまいます。これはバ - グであるように思われますので、vimでは<Esc>でコマンドをキャンセルする - 仕様としています。ただし、'cpoptions'オプションを使えば、vi互換にす - ることもできます。なお、マップを使う時は(vi用に書かれているかも知れ - ないので)viと同じように動きます。つまりコマンドを実行します。結局、 - CTRL-Cを使えばどちらでもうまく動くということです。 + <Esc> キーはどこでも使える「脱出」キーですが、残念なことに、古き良き + Vi では、コマンドラインで <Esc> を押すと、コマンドが実行されてしまいま + す。これはおそらくバグなので、Vim では <Esc> でコマンドをキャンセルで + きるようになっています。ただし、'cpoptions' を設定して Vi 互換の動作に + 変更することもできます。また、マップが適用されたときは (それが Vi 用に + 書かれたものであってもなくても) <Esc> は Vi 互換の動作をします。CTRL-C + を使えば設定に関係なくキャンセルできます。 -なお、コマンド行の先頭にカーソルがある時に<BS>キーを押すとコマンドをキャンセ -ルします。これは行頭にある":"や"/"を削除するような動きとなります。 +コマンドラインの先頭にカーソルがあるときに <BS> キーを押すとコマンドをキャンセ +ルできます。これは行頭にある ":" や "/" を削除するような感覚です。 ============================================================================== -*20.2* コマンド行の短縮入力 +*20.2* コマンドライン短縮入力 -":"コマンドはものによってとても長いものがあります。既に出てきた":subsititute" -は":s"と短縮して入力できます。全ての":"コマンドでは短縮入力するための一般的 -な仕掛けがあります。 +とても長い名前の ":" コマンドがいくつかあります。":substitute" が ":s" と短縮 +できることは既に説明しましたが、これはなにも特別なことではありません。すべての +":" コマンドが短縮できます。 -コマンドをどれだけ短縮できるか?アルファベットは26文字ですが、コマンドはそれ -よりたくさんあります。例えば、":set"は":s"で始まりますが、":s"は":set"を実行 -するわけではありません。その代わり":set"は":se"と短縮入力できます。 -このように短縮形に合致するコマンドが2つ以上あっても、使えるのは1つのコマン -ドだけです。その選択基準に明確なルールはありませんので、覚えるいただくしかあ -りません。ヘルプファイルには各コマンドの最短入力方法を説明してあります。例え -ば、 > +コマンドはどこまで短縮できるでしょうか。アルファベットは 26 文字ですが、コマン +ドはそれよりたくさんあります。例えば、":set" の先頭は ":s" ですが、":s" では +":set" を実行できません。":set" の短縮形は ":se" です。 +二つのコマンドが同じ名前に短縮できたとしても、最短の名前を使えるのは一つのコマ +ンドだけです。その決定方法に明確なルールはないので、個別に覚えるしかありませ +ん。コマンドの最短の名前はヘルプファイルに記述されています。例: > :s[ubstitute] -これは":substitute"の最短入力形式が":s"であることを示しています。それ以降の -文字はオプションです。":su"でも":sub"でも正しく動きます。 +これは ":substitute" の短縮形が ":s" であることを示しています。それ以降の文字 +は任意です。":su" でも ":sub" でも動作します。 -ユーザマニュアルではコマンドのフル形式と短縮形式のどちらも使っています。た -だ、短縮形は読み易さを損わない範囲にとどめています。例えば、":function"とい -うコマンドは":fu"と略せますが、これだけだと大半の人が何の略なのか理解できな -いでしょう。ですからこのマニュアルでは":fun"を使っています。(vimには":funny" -コマンドなんてないですから。そうでなければ、":fun"でもやはり混乱を招きますよ -ね) +ユーザーマニュアルではコマンドの長い名前と短い名前の両方が使われますが、読み難 +い短縮形は使われません。例えば、":function" は ":fu" と短縮できますが、これだ +と大半の人が何の略なのか理解できないので ":fun" が使われます。(Vim に ":funny" +コマンドはありませんが、もしあれば、":fun" でも混乱を招きますよね) -vimスクリプトでは完全なコマンド名で記述することをお勧めします。そうしておけ -ば、後になって変更したい時に読み直すのが楽ですから。あまりに頻繁に用いるコ -マンド(保存コマンドの":w"とか読み込みコマンドの":r"とか)はその限りではありま -せんが。 -特にややこしいのは":end"です。これは":endif"の短縮形ですが、":endwhile"にも -":endfunction"にも見えます。ですから、常にフル形式を使うようにしましょう。 +Vim スクリプトを書くときはコマンドの長い名前を使うことをお勧めします。そうして +おけば、後で変更しようと思ったときに読むのが楽です。しかし、":w" (":write") や +":r" (":read") のような頻繁に使われるコマンドなら短縮形を使っても構わないでしょ +う。 +特にややこしいのは ":end" です。これは ":endif" の短縮形ですが、":endwhile" や +":endfunction" と誤解しやすいので、常に長い名前を使うようにしましょう。 -オプション名の短縮形 +オプションの短い名前 -------------------- -ユーザマニュアルではオプション名はフル形式を使っています。実際には多くのオプ -ションに短縮名があります。":"コマンドと違い、オプションの短縮名はユニークに -なっています。例えば'autoindent'の短縮形は'ai'です。ですからこの2つのコマン -ドは同じ動きとなります。 > +ユーザーマニュアルではオプションの長い名前が使われますが、ほとんどのオプション +には短い名前があります。":" コマンドと違い、オプションの短い名前は一つしかあり +ません。例えば、'autoindent' の短い名前は 'ai' なので、次の二つのコマンドは同 +じ動作をします: > :set autoindent :set ai -オプション名のフル形式と短縮形式の全リストは|option-list|をご覧ください。 +オプションの長い名前と短い名前の一覧は |option-list| を参照してください。 ============================================================================== -*20.3* コマンド行の補完 +*20.3* コマンドライン補完 -コマンド行の補完機能は、これだけでもviからvimに乗り換えたる理由になる程の機 -能です。一度使ってしまえば、もうこれなしでは生きていけなくなります。 +コマンドライン補完はこれだけでも Vi から Vim に乗り換えるに値する程の機能です。 +一度使ってしまったら、手放せなくなるでしょう。 -次のようなファイルを含むディレクトリがあるとします。 +次のようなファイルを含むディレクトリがあるとします: info.txt intro.txt bodyofthepaper.txt -最後のbodyofthepaper.txtを編集するには、このコマンドを使います。 > +bodyofthepaper.txt を開くには次のコマンドを使います: > :edit bodyofthepaper.txt -でもいかにも打ち間違えそうです。これの方がずっと早くて確実です。 > +いかにも打ち間違えそうです。もっと簡単にやりましょう: > :edit b<Tab> -どちらも結果は同じコマンドになります。どういうことでしょうか?これは<Tab>キー -がカーソル位置にある単語(この場合なら"b")を補ってくれたためです。vimがディレ -クトリを見ると、"b"で始まるファイルは1つしかにことが解ります。これはあなたが -探しているファイルに違いありませんから、そのファイル名をvimが補ってくれたので -す。 +どちらも結果は同じになります。どういうことでしょうか。<Tab> キーによってカーソ +ル直前の単語 (この場合なら "b") が補完されたのです。ディレクトリが検索され、 +"b" で始まるファイルが一つだけ見つかり、それはあなたが探しているファイルに違い +ないので、その名前が補完されました。 -さて、次はこのように入力してみます。 > +さて、次はこのように入力してみます: > :edit i<Tab> -vimは警告音を鳴らし、次のように表示します。 > +ビープ音が鳴り、次のように表示されます: > :edit info.txt - -この警告音はvimがヒットしたファイルが2つ以上あったことを示します。そこで(ア -ルファベット順で)最初にヒットしたファイルを表示しています。もう一度<Tab>を押 -すと、次のようになります。 > +ビープ音は複数のファイルが見つかったことを示しています。まずは (アルファベット +順で) 最初のファイルが表示されます。もう一度 <Tab> を押すと、次のようになりま +す: > :edit intro.txt -つまり、最初の<Tab>で探しているファイルが出てこなければ、もう一度<Tab>を押せ -ば良いのです。もっとある場合は順に1つづつ表示してくれます。 -ヒットするものを全部表示した後に<Tab>を押すと、最初に<Tab>を押す直前に戻りま -す。 > +つまり、最初の <Tab> で、探しているファイルが出てこなかったら、もう一度 <Tab> +を押せばよいのです。ファイルがたくさんあるなら、一つずつ表示していきましょう。 +最後の補完候補を表示しているときに <Tab> を押すと、最初の状態に戻ります: > :edit i -次はまた最初から繰り返し、合致するリストをサイクリックに表示します。CTRL-Pを -押すと、逆方向にリストを表示します。 +また最初から補完候補を表示できます。つまり、補完候補は循環表示されます。CTRL-P +を使うと、逆方向に移動できます: <------------------- <Tab> -------------------------+ | @@ -227,132 +220,132 @@ vimは警告音を鳴らし、次のように表示します。 > +---------------------- CTRL-P ------------------------> -文脈による違い --------------- +文脈 +----- -":edit i"ではなく":set i"と入力した時に<Tab>を押すとどうなるでしょう? > +":edit i" ではなく、":set i" と入力してから <Tab> を押すと、次のようになりま +す: > :set icon -あれ?どうして":set info.txt"とならないのでしょう?vimは文脈を考慮して補完を -行っているからです。vimが探そうとする単語の種類はその前のコマンドに依るので -す。vimは":set"コマンドの直後にファイル名は使えなくて、オプション名なら使え -ることを解っているのです。 -さらに<Tab>の入力を繰り返すと、ヒットするものを順に表示します。ほとんどない -のですが、あらかじめ数文字を入力しておいた方がよいこともあります。 > +どうして ":set info.txt" にならないのでしょうか。それは、Vim が文脈を認識して +いるからです。補完される単語の種類は入力されたコマンドに依存します。":set" コ +マンドに指定するのはファイル名ではなくオプション名であることを Vim は知ってい +るのです。 +上述の例と同様、<Tab> を入力すれば補完候補が一つずつ順番に表示されます。たいて +いは、いくつかの文字を入力してから補完した方が素早く補完できます: > :set isk<Tab> -上の結果は、こうなります。 > +次のような結果になります: > :set iskeyword -ここで"="を押してから<Tab>を押します。 > +さて、"=" を入力してから <Tab> を押してみましょう: > :set iskeyword=@,48-57,_,192-255 -ここではオプションの古い値を挿入しています。この状態から、その値を編集すること -ができます。 -<Tab>を押した際に補完される内容は、Vimがその補完場所に期待する内容です。何が補 -完されるのかは、実際にやってみるのがわかりやすいでしょう。しかし状況によって -は、望んでいる結果が得られない場合もあります。そうなる原因は、1つはVimがあなた -のやりたいことを理解しているわけではないことであり、また単にその状況における補 -完が提供されていないだけなのかもしれません。そのような場合は、<Tab>文字(画面上 -では ^I として表示)が挿入されます。 +オプションの現在の設定が挿入されるので、それを編集することができます。 +<Tab> で補完されるのはその場所に入力すべき内容です。どのように動作するかは自分 +で試してみてください。期待したような結果にならないこともあると思いますが、それ +は、Vim がその文脈を認識できなかったか、その文脈における補完が実装されていない +かのどちらかです。その場合は <Tab> 文字が挿入されます (画面上では ^I と表示さ +れます)。 -ヒットリスト +補完候補一覧 ------------ -ヒットしたものが大量にある場合は、概要を見たいでしょう。これをするにはCTRL-D -を押してください。例えば、次の状態でCTRL-Dを押してみましょう。 > +補完候補がたくさんあるとき、その一覧を確認することができます。それには CTRL-D +を使います。例えば、次のコマンドを入力してから CTRL-D を押してみます: > :set is -この結果はこのようになります。 > +次のような結果になります: > :set is incsearch isfname isident iskeyword isprint :set is -vimはヒットした項目のリストを入力中のテキストに挿入します。このリストから欲 -しい項目をチェックできます。その中にもない場合、<BS>を押してまた別の単語を -探すことができます。ヒット項目が多い場合、残りの補完をするために<Tab>を押す -前にもう少し文字を入力してください。慎重に探せば"incsearch"は"is"で始まらな -いことに気付くでしょう。(多くのオプションには短縮名とフル形式名があります) -vimは,あなたがオプションの短縮名をフル形式に拡張して欲しいだろうと知っている -程度に賢明です。 +補完候補の一覧が表示され、また元の入力に戻ります。この一覧に期待した項目がある +かどうか確認してください。ない場合は、<BS> でテキストを削除し、入力し直してく +ださい。補完候補がたくさんある場合は、さらにいくつかの文字を入力してから <Tab> +を押して補完してください。 +注意深い方なら、候補一覧にある "incsearch" が "is" で始まっていないことに気づ +いたと思います。"is" は "incsearch" の短縮形です。ほとんどのオプションには短い +名前と長い名前がありますが、Vim は賢いので、 オプションの短い名前を見て、長い +名前に展開してくれます。 さらに他にも ------------ -CTRL-Lコマンドを使うと、最長一致した単語まで補完してくれます。例えば":edit i" -と入力したところ、"info.txt"と"info_backup.txt"というファイルがあったとする -と、":edit info"という文字列が得られます。 +CTRL-L コマンドを使うと、共通したところまで補完できます。例えば、"info.txt" と +"info_backup.txt" というファイルがあって、":edit i" と入力してから CTRL-L を押 +すと、":edit info" になります。 -'wildmode'オプションは補完の動作を変更します。 -'wildmenu'オプションはヒットしたリストをメニューのように表示させる時に使い -ます。 -'suffixes'オプションにはあまり大切でないファイルを指定しておいて、ファイル -リストの末尾に表示するようにします。 -'wildignore'オプションはファイルをリスト表示しない時に指定します。 +'wildmode' オプションで補完の動作を変更できます。 +'wildmenu' オプションを設定すると補完候補をメニューのように表示できます。 +'suffixes' オプションに優先度の低いファイルを指定しておくと、それらのファイル +は補完候補の末尾に現れます。 +'wildignore' オプションには補完候補として表示して欲しくないファイルを指定しま +す。 -この全部については|cmdline-completion|をご覧ください。 +コマンドライン補完についての詳細は |cmdline-completion| を参照してください。 ============================================================================== -*20.4* コマンド行の履歴 +*20.4* コマンドライン履歴 -3章でも履歴について少しだけお話しました。基本的には以前に使ったコマンドを -<Up>キーで呼び出す時に使うものです。<Down>キーを押すとより最近のコマンドに -戻ります。 +履歴については三章で簡単に説明しました。簡単に言えば、<Up> キーで以前に入力し +た古いコマンドラインを呼び出すことができる機能です。<Down> で新しい方のコマン +ドに戻れます。 -実際には履歴には4種類があります。ここで述べるのは":"コマンドと"/","?"検索コ -マンド用のものです。"/"と"?"はどちらも検索コマンドですので、同じ履歴を共有し -ます。これ以外の2つの履歴は式と、input()関数で使う入力行です。 -詳しくは|cmdline-history|をご覧ください。 +履歴には四種類あります。ここでは ":" コマンドと検索コマンド ("/" or "?") の履 +歴を説明します。"/" と "?" はどちらも検索コマンドなので、同じ履歴を共有します。 +他には、式入力と input() 関数の履歴があります。|cmdline-history| -":set"コマンドを実行してから、10個のコマンド行のコマンドを実行した後で、もう -一度":set"コマンドを実行したいとします。これは":"を押してから<Up>を10回押せ -ばできます。ですが、もっと素早い方法があります。 > +例えば、":set" コマンドを実行した後で、他のコマンドを 10 個実行し、再び ":set" +コマンドを実行したいとします。":" を押してから <Up> を 10 回押せばできますが、 +もっと簡単な方法があります: > :se<Up> -Vimは "se" で始まった最近のコマンドにまで戻ります。その上で、それが求めていた -":set" コマンドであるか、確かめることができます。普通は何度も<Up>を押すような -ことはありません(入力したのが全部":set"コマンドででもない限り)。 +以前使った "se" で始まるコマンドに戻ります。これなら探していた ":set" コマンド +に効率良くたどり着けるでしょう。少なくとも、何度も何度も <Up> を押す必要はあり +ません (入力したすべてのコマンドが ":set" コマンドでもない限り)。 -<Up>キーを押すと、その行に入力されているパターン(ここでは"se")と履歴の各行を -較べて、一致する行だけを表示します。 -探している行に一致するものがなければ、<Down>キーで戻って入力した内容を変更し -ます。もちろんCTRL-Uで最初からやり直すこともできます。 +<Up> キーを押すと、入力されたテキストと履歴のコマンドラインが比較され、マッチ +した履歴だけが使われます。 +探していた履歴が見つからなかった場合は、<Down> で元に戻ってから正しく入力し直 +すか、CTRL-U を押して最初からやり直してください。 -履歴の全行を見るにはこのようにします。 > +履歴をすべて見るには次のコマンドを使います: > :history -これはコロン(:)コマンドのヒストリを表示します。検索コマンドの履歴を表示する -には次のようにします。 > +":" コマンドの履歴が表示されます。検索コマンドの履歴を表示するには、次のコマン +ドを使います: > :history / - -矢印キーを使いたくない方は、<Up>の代わりにCTRL-Pを、また<Down>の代わりに -CTRL-Nが使えます。CTRL-Pは前(Previous)の意味で、CTRL-Nは次(Next)の意味です。 +< +<Up> の代わりに CTRL-P を使うこともできますが、CTRL-P の前に入力されていたテキ +ストは無視されます。同様に、<Down> の代わりに CTRL-N を使うこともできます。 +CTRL-P は previous (前)、CTRL-N は next (次) という意味です。 ============================================================================== -*20.5* コマンド行のウィンドウ +*20.5* コマンドラインウィンドウ -コマンド行での文字入力は通常の挿入モードでの入力とは違いがあります。コマンド -行では文字編集の多くのコマンドが使えません。たいていはあまり問題になりません -が、時に複雑なコマンドを入力したいこともあります。このような場合にはコマンド -行のウィンドウが便利です。 +コマンドラインでの文字入力は挿入モードでの文字入力とは違います。テキストを編集 +するための多くのコマンドが使えません。通常のコマンドライン入力ではそれほど問題 +になりませんが、複雑なコマンドを入力しなければならないときもあるでしょう。その +ようなときは、コマンドラインウィンドウが便利です。 -コマンド行のウィンドウを開くにはこのようにします。 > +次のコマンドでコマンドラインウィンドウを開いてください: > q: -すると画面の下の方に(小さな)ウィンドウが開きます。ここにはコマンド行の履歴が -表示され、一番下には空行が表示されます。 +画面の下の方に (小さな) ウィンドウが作成されます。ウィンドウにはコマンドライン +履歴が表示され、最終行には空行があります: +-------------------------------------+ |other window | @@ -369,31 +362,29 @@ CTRL-Nが使えます。CTRL-Pは前(Previous)の意味で、CTRL-Nは次(Next) | | +-------------------------------------+ -ここでは通常モードのコマンドが使えます。"hjkl"でカーソルが動かせます。上の例 -を使いましょう。まず"5k"を入力して":e config.h.in"の行まで動きます、次に"$h" -で行末の"in"の"i"にカーソルを置いてから、"cwout"と入力します。そうするとこの -ように行が変更されます。 +ウィンドウを開いた後はノーマルモードになっています。"hjkl" キーで移動できます。 +例えば、"5k" を入力し、":e config.h.in" の行に移動します。"$h" で "in" の "i" +に移動し "cwout" と入力します。行が次のように変更されました: :e config.h.out ~ -ここで<Enter>を押すとコマンドを実行して、コマンド行のウィンドウは閉じられます。 -<Enter>キーを押した時に実行するのはカーソルのある行の内容です。その時にvimが -通常モードだったか、挿入モードだったかは関係ありません。 -コマンド行のウィンドウで変更した内容は保存されません。ですから履歴の内容も変 -化しません。ただ、実際に実行したコマンドは他の場合と同じく履歴に追加されます -から、その点は違うといえば違います。 - -コマンド行のウィンドウは履歴を一覧で見て、似たようなコマンドを探して、それを -ちょっと変更して再実行するような場合に便利です。コマンド行のウィンドウで検索 -コマンドを使って何かを探すのもできます。 -上の例の場合なら、"?config"という検索コマンドを実行すれば、以前に実行したコ -マンドの中から"config"という文字列を含むものを探します。これはちょっと妙な感 -じかも知れません。だってコマンド行ウィンドウの中を探すコマンド行を実行するわ -けですから。ただ、検索コマンドを入力している時は新たなコマンド行のウィンドウ -を開くことはできません。コマンド行ウィンドウは常に1つだけなのです。 +<Enter> を押すとこのコマンドが実行され、コマンドラインウィンドウが閉じます。 +<Enter> コマンドで現在行が実行されます。挿入モードでもノーマルモードでも同じ動 +作です。 +コマンドラインウィンドウでの編集は失われます。つまり、コマンドライン履歴は変更 +されません。ただし、実行したコマンドは、通常どおり、履歴に追加されます。 + +コマンドラインウィンドウは、実行したいコマンドに似たコマンドを履歴の一覧から探 +し、それをちょっと変更して再実行するような場合に便利です。コマンドラインウィン +ドウでは検索コマンドも使えます。 +上の例の場合なら、"?config" という検索コマンドを実行すれば、以前に実行した +"config" を含んでいるコマンドを探せます。これは少し不思議ですね。コマンドライ +ンを使ってコマンドラインウィンドウの中を検索しているのですから。しかし、検索コ +マンドを入力するための新たなコマンドラインウィンドウを作成することはできませ +ん。コマンドラインウィンドウは常に一つだけです。 ============================================================================== -Next chapter: |usr_21.txt| 行ったり来たり +次章: |usr_21.txt| 中断と再開 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_21.jax b/ja/usr_21.jax index ebe176a79..2e6ac7cd2 100644 --- a/ja/usr_21.jax +++ b/ja/usr_21.jax @@ -1,283 +1,268 @@ COMMENT: 外部コマンドの使用法、およびモードライン -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> -*usr_21.txt* For Vim version 6.3. Last change: 2004 Mar 29 +*usr_21.txt* For Vim version 7.0. Last change: 2006 Apr 25 VIM USER MANUAL - by Bram Moolenaar - 行ったり来たり + 中断と再開 -この章ではvimから他のプログラムを呼び出す方法について説明します。vimの中から -外部プログラムを呼び出す方法とvimを一旦離れて、後で戻ってくる方法の両方を説 -明します。さらにvimの状態を覚えさせておき、後でそれを復元する方法についても -述べます。 +この章では、Vim と他のプログラムを並行して使う方法を説明します。Vim の中から外 +部プログラムを実行したり、Vim を一次的に中断することでそれを実現できます。さら +に、作業状態を記録しておいて、後から復元する方法も説明します。 -|21.1| 退避(サスペンド)と復元(リジューム) +|21.1| サスペンドとレジューム |21.2| シェルコマンドの実行 -|21.3| viminfoによる情報の記憶 +|21.3| viminfo に情報を記録する |21.4| セッション |21.5| ビュー -|21.6| モード行 +|21.6| モードライン - Next chapter: |usr_22.txt| 編集したいファイルを見つける - Previous chapter: |usr_20.txt| コマンドラインコマンドを素早く入力する -Table of contents: |usr_toc.txt| +次章: |usr_22.txt| ファイルを探す +前章: |usr_20.txt| コマンドラインを素早く入力する +目次: |usr_toc.txt| ============================================================================== -*21.1* 退避(サスペンド)と復元(リジューム) +*21.1* サスペンドとレジューム -他のUnixのアプリケーションと同じくvimでもCTRL-Zを押してサスペンドできます。 -CTRL-Zを押すと、vimを停止し、呼び元のシェルに制御を戻します。そこで嫌になる -まで他のコマンドを何でも実行できます。vimに戻ってくるにはシェルの"fg"コマン -ドを使います。 > +他の Unix プログラムと同様に、Vim も CTRL-Z でサスペンドできます。CTRL-Z を押 +すと Vim が停止し、実行元のシェルに制御が戻ります。そこで好きなだけ他のコマン +ドを実行できます。Vim に戻るには "fg" コマンドを使います。 > CTRL-Z {任意のシェルコマンドを実行} fg -vimに戻って来たときには、何一つ変化はありません。 -CTRL-Zがうまく動かない場合のために、":suspend"コマンドも用意しています。vim -をフォアグラウンドに戻すことを忘れないでください。でないと折角の変更内容を全 -て失ってしまうことになります。 +サスペンドする前とまったく同じ状態に戻ることができます。 +CTRL-Z を押しても反応がなかった場合は ":suspend" コマンドを使ってください。 +Vim をフォアグラウンドに戻すのを忘れないでください。戻さなかった場合は編集作業 +が失われてしまいます。 -なお、この機能はUnixでのみサポートされます。他システムのvimでは新たに別シェ -ルを起動します。これでもシェルのコマンドを使えるという機能に違いはありません。 -ただ、vimの呼び出し元のシェルではなく新たなシェルだという違いがあります。 -GUI版の場合は、vimを起動したシェルに戻ることができません。その代わりCTRL-Zを -押すとvimのウィンドウを最小化(ウィンドウシステムやOSによって表現は違います) -します。 +この機能は Unix でのみサポートされています。他のシステムでは新しいシェルが起動 +されるでしょう。シェルのコマンドが使えることに違いはありませんが、しかしそれは +Vim を実行したシェルではなく、新しいシェルです。 +GUI で実行しているときは実行元のシェルに戻ることはできません。CTRL-Z を押すと +Vim ウィンドウが最少化されます。 ============================================================================== *21.2* シェルコマンドの実行 -vimに単一のシェルコマンドを実行させるには":!{command}"を使います。例えばディ -レクトリの一覧を得るにはこのようにします。 > +一つのシェルコマンドを実行するには ":!{command}" を使います。例えば、ディレク +トリのファイル一覧を見るには次のようにします: > - :!ls (Unix環境) - :!dir (MS-DOS/MS-Windows環境) + :!ls (Unix 環境) + :!dir (MS-DOS/MS-Windows 環境) -vimは外部コマンドを実行します。 コマンドの実行が終わると<Enter>キー入力を促 -すメッセージが出ます。こうすることで編集中の文章に戻る前にコマンドの実行結果 -をちゃんと確認できるわけです。 -"!"コマンドは他の場所でも外部コマンドを動かすのに使えます。次の概略をご覧く -ださい。 +外部プログラムが実行されます。コマンドの実行が終わると <Enter> キーの入力を促 +すプロンプトが表示されるので、コマンドの出力を確認してから通常画面に戻ってくだ +さい。 +"!" は他のコマンドで外部プログラムを指定するときにも使われます。次のコマンドで +指定できます: - :!{program} {program}を起動する - :r !{program} {program}を起動し、その出力をバッファに取込む - :w !{program} 現在の文章を標準入力として{program}を起動する - :[range]!{program} 指定の範囲を{program}の標準入力とする + :!{program} {program} を実行する + :r !{program} {program} を実行し、その出力を読み込む + :w !{program} {program} を実行し、標準入力にテキストを書き込む + :[range]!{program} {program} を実行し、テキストをフィルタリングする -"!{program}"の前に範囲指定があるのとないのとで大違いである点には気を付けてく -ださい。範囲指定がなければ、単純にプログラムを実行するだけですが、範囲指定が -あると、その範囲の文字列はそのプログラムでフィルタ処理するのです。 - -プログラムの全行を実行するのもこの方法で可能です。しかし、シェルを使う方がよ -り良いでしょう。新たなシェルを起こすのはこのコマンドです。 > +"!{program}" に範囲指定をするとまったく違う動作になるので注意してください。範 +囲指定がなければ単純にプログラムが実行されるだけですが、範囲指定があると、その +範囲のテキストがプログラムでフィルタ処理されます。 +この方法で外部プログラムを何度でも実行できますが、続けてたくさん実行したい場合 +はシェルを起動した方がいいでしょう。次のコマンドで新しいシェルを起動できます: +> :shell -これはCTRL-Zによるサスペンドと似ていますが、":shell"では新たなシェルを起動さ -せる点が異なります。 +CTRL-Z で Vim をサスペンドしたときの動作に似ていますが、新しいシェルが起動され +るという点が違います。 + +GUI を使っている場合は、シェルの入出力に Vim ウィンドウが使われます。Vim は端 +末エミュレータではないので、端末の機能を完全に再現することはできません。うまく +動作しない場合は、'guipty' オプションを設定してみてください。それでも動作しな +い場合は、新しい端末を作成し、そこでシェルを実行してください。例えば、次のよう +にします: > -GUI版を使っている時にはシェルは標準入出力用にvimのウィンドウを使います。vim -は端末ソフト(Terminal emulator)ではないので、うまく動かないかも知れません。 -困った場合は'guipty'オプションを逆にしてみてください。それでもうまくいかない -場合は、新しい端末ウィンドウを開いてそこでシェルを動かしてください。例えば、 -次のようにします。 -> :!xterm& ============================================================================== -*21.3* viminfoで情報を記憶する +*21.3* viminfo に情報を記録する -しばらく編集作業をしていると、いろいろなファイルにレジスタやマークを定義した -り、手間をかけて作ったコマンド行がコマンド履歴に入ったりします。でもvimを終 -了すると、全てがなくなってしまいます。でも、実はこれを復元できるんです! +テキストを保持しているレジスタ、いろんな場所に設定されたマーク、慎重に書き上げ +たコマンドが記録されたコマンドライン履歴などは、Vim を終了するとすべて失われて +しまいます。ただし、それらを復元することは可能です! -次のような情報を保持するために設計されたviminfoというファイルがあります。 +viminfo ファイルには以下の情報を記録できます: - ・コマンド行と検索パターンの履歴 - ・レジスタに登録された文字列 - ・各ファイルに定義されたマーク - ・バッファリスト - ・グローバル変数 + コマンドライン履歴と検索履歴 + レジスタ + マーク + バッファリスト + グローバル変数 -vimを終了する都度、上の内容をviminfoというファイルに保存します。vimを再起動 -する時にviminfoの内容を読み込んで上の項目を再設定します。 +Vim を終了すると、これらの情報が viminfo ファイルに保存されます。次に Vim を起 +動すると、viminfo ファイルが読み込まれ、状態が復元されます。 -'viminfo'オプションはデフォルトでonになっていて、一定の項目数まで情報を保存 -します。この項目数をもっと大きく設定することもできます。それにはこのような -コマンドを使います。 > +'viminfo' オプションの初期設定では、あまり多くの情報は記録されません。たくさん +の情報を記録したい場合は、次のコマンドで設定してください: > :set viminfo=string -"string"の部分には何を保存したいかを指定します。これは1文字のオプション指定 -と引数という文法です。オプションと引数のペアはカンマ(,)で区切ります。 -独自のviminfo指定を行う方法を順を追って見ていきましょう。最初に ' オプション -はマークを覚えておくファイルの数を指定するのに使います。このオプションに丁度 -良い数字を決めましょう(例えば1000)。この時点ではこのようなコマンド指定となり -ます。 > +"string" の部分に、記録したい情報を指定します。設定の書式は、オプション文字と +引数の組み合わせをカンマ (,) で区切ったリストです。 +'viminfo' の設定方法を順番に見ていきましょう。まず、' オプションを設定してみま +す。' オプションには、マーク (a-z) を記録するファイルの数を指定できます。適当 +な数 (例えば 1000) を設定しましょう。コマンドは次のようになります: > :set viminfo='1000 -< - f オプションはグローバルマーク(A~Zと0~9)を覚えておくかどうかを指定し -ます。ここに0を指定すると何も保存しません。何も指定しないか、1を指定した場合 -はグローバルマークを保存します。これを保存するのであれば、コマンドはこのよう -になります。 > - :set viminfo='1000,f1 +f オプションには、グローバルマーク (A-Z と 0-9) を記録するかどうかを指定できま +す。引数が 0 ならなにも記録されません。f オプションを指定しない、あるいは引数 +に 1 を指定すると、マークが保存されます。このオプションを指定すると、コマンド +は次のようになります: > -次に < オプションは各ファイルのレジスタを合計でいくつ覚えておくかを指定しま -す。デフォルトでは全ての行を保存します。これが0であれば何も保存しません。何 -千行もの(使うこともなく、vimの起動を遅くするだけの)データをviminfoファイルに -追加しても仕方がないので、ここでは最大500個とします。 > + :set viminfo='1000,f1 +< +< オプションには、レジスタの行数制限を指定できます。初期設定ではすべての行が記 +録されます。引数が 0 なら何も記録されません。何千行もの (起動を遅くする以外に +使い道のない) テキストを viminfo ファイルに記録したくはないので、500 行に制限 +してみます: > :set viminfo='1000,f1,<500 < - Note: - " 記号はコメントの開始記号ですので、必ず直前にバックスラッシュを付 - けてクオートしないといけません。 - -上記以外にも次のようなオプションがあります。 - : コマンド行の履歴として保存する行数 - @ 入力行の履歴として保存する行数 - / 検索コマンドの履歴として保存する行数 - r マーク情報を保存しないリムーバブルメディアの指定(このオプショ - ンは何度でも指定できます) - ! 全てが大文字で、小文字を含まないグローバル変数 - h 起動直後は'hlsearch'によるハイライト表示をしない - % バッファリスト(これはvimをファイル引数なしで起動した時のみ復 - 元します) - c 文章を'encoding'の指定に従って変換する - n viminfoファイルの名前を指定(このオプションは最後にしか指定で - きない) - -さらに詳しい内容は'viminfo'オプションや|viminfo-file|をご覧ください。 - -vimを複数個立ち上げている場合は、最後に終了したVimの情報が記憶されます。ですか -ら、それ以前に終了したVimが保存した内容は失われてしまいます。どの項目も記憶さ -れるのは1度きりなのです。 +他にも次のようなオプションがあります: + : 記録するコマンドライン履歴の数 + @ 記録する入力行履歴の数 + / 記録する検索履歴の数 + r 指定されたリムーバブルメディア上のファイルのマークを記録しない + (複数指定可) + ! 名前がすべて大文字のグローバル変数を記録する + h 起動直後に 'hlsearch' による強調表示をしない + % バッファリスト (Vim をファイル引数なしで起動したときのみ復元さ + れます) + c テキストを 'encoding' で変換する + n viminfo ファイルの名前 (このオプションは末尾に指定する必要があ + ります) + +詳細は 'viminfo' と |viminfo-file| を参照してください。 + +Vim を複数起動した場合は、最後に終了した Vim の状態が記録されます。それより前 +に終了した Vim が記録した情報は失われます。記録できるのは一つの状態だけです。 前回の場所に戻る ---------------- -ファイルの編集の途中で休暇で抜ける時間になってしまった場合、vimを終わって、 -休暇を満喫している時は仕事のことなどすっかり忘れてしまいます。2週間経って仕 -事に戻ったら、vimを立ち上げて、こう入力しましょう。 +ファイルの編集中に終業時間が来てしまいました。明日から休暇です。Vim を終了し、 +家路につきましょう。仕事の事はすべて忘れて休暇を楽しんでください。数週間後、仕 +事に戻ったら、Vim を立ち上げて、こう入力します: > > '0 -すると、最後にvimを終わった時の場所に戻ってくれます。これで仕事が続けられま -すよね。 -vimを終了する時に毎回マークを生成します。直前の終了時のが '0 です。その前の -'0 は '1 となり、 '1 は '2 という具合です。最後の '9 は消えてしまいます。 -":marks"コマンドは '0 ~ '9 がどこを示しているかを見るのに便利です。 +すると、最後に編集していた場所に戻れます。これで仕事が続けられますね。 +Vim を終了するたびにマークが設定されます。最新のマークは '0 です。マークは '0 +から '1 へ、'1 から '2 へ、しだいにずれていき、'9 まで記録されます。 +'0 から '9 までのマークがどこを指しているのかは |:marks| コマンドで確認できま +す。 -MOVE INFO FROM ONE VIM TO ANOTHER -1つのvimから他のへ情報移動(?) ------------------------------- +他の Vim に情報を移動する +------------------------- -":wviminfo"と":rviminfo"コマンドはvimの動作中にviminfoを保存したり、復元した -りするのに使えます。これは、vimが2つ起動している時にレジスタの内容を交換す -る時に便利です。1つ目のvimで次のようにして保存します。 > +":wviminfo" コマンドと ":rviminfo" コマンドを使うと、Vim の実行中でも viminfo +ファイルの保存と復元ができます。例えば、他の Vim からレジスタの内容をコピーす +ることができます。片方の Vim で次のようにして保存し: > :wviminfo! ~/tmp/viminfo -そして2つ目のvimではそれを読み込みます。 > +もう一方の Vim でそれを読み込みます: > :rviminfo! ~/tmp/viminfo -分かりきったことでしょうが、"wviminfo"の"w"は"write"のことで、"rviminfo"の -"r"は"read"のことです。 -":wviminfo"に ! 記号を加えて、強制的に既存ファイルに上書きすることもできま -す。これを省略した場合はファイルが存在すれば、情報をマージしてファイルに保存 -します。 -また":rviminfo"に ! 記号を付けた場合は、ファイルの全情報を使うという意味にな -りますので、ファイルの内容を現在の設定状態に上書きします。! なしの場合はファ -イルの内容のうち現在使用していないものだけをセットします。 -上のコマンドは情報を保存し、後で再利用するのにも使えます。例えば、viminfo専 -用のディレクトリを作っておいて、目的ごとに使い分けるといったことも可能です。 +言うまでもなく、"w" は "write"、"r" は "read" の意味です。 +既存のファイルに上書きするときは、":wviminfo" に ! を付けてください。! を指定 +しなかった場合は、現在の情報と既存のファイルの情報がマージされます。 +":rviminfo" に ! を付けると、ファイルのすべての情報が使われます。つまり、現在 +の情報が上書きされます。! を指定しなかった場合は、まだ設定されていない情報だけ +が使われます。 +これらのコマンドを使えば、状態を保存しておいて後で再利用することもできます。例 +えば、viminfo 専用のディレクトリに状態を保存しておき、目的ごとに使い分けること +も可能です。 ============================================================================== *21.4* セッション -編集作業を一日中やっていて、まだ続きがあるような場合、中断個所を明日になって -思い出せるように、どこまでやったかを記録しておきたいことでしょう。これは編集 -中のセッションを保存して、翌日にそれを復元すれば可能です。 -vimのセッションにはあなたが編集していた全ての情報を含んでいます。ここには、 -例えばファイルリスト、ウィンドウのレイアウト、グローバル変数、オプションetc -といった情報を含んでいます。(正確には、後述するように'sessionoptions'で指定 -しているものが復元の対象となります) -このコマンドでセッションファイルを作れます。 > +作業が終わらない内に一日が終わってしまった場合、その日の作業を中断し、次の日に +同じ状態で作業を再開できたら便利ですよね。編集セッションを保存しておけば、作業 +状態を復元することができます。 +セッションには、作業状態に関するすべての情報が保存されます。例えば、ファイルリ +スト、ウィンドウレイアウト、グローバル変数、オプションの設定などです。(正確に +は、下記で説明されている 'sessionoptions' に指定された項目が保存されます。) +次のコマンドでセッションファイルを作成できます: > :mksession vimbook.vim -後でこのセッション情報を復元するには、こうします。 > +セッションを復元するには、次のコマンドを使います: > :source vimbook.vim -vimを起動する時に指定のセッションを復元するには、起動時オプションをこのよう -に指定します。 > +Vim の起動と同時にセッションを再開するには、次のようにして Vim を起動します: > vim -S vimbook.vim -これはvimの起動時に特定のファイルを読み込むように指示するものです。'S'はセッ -ションの意味です。(って、実は"-S"を使うとどんなvimスクリプトでも(sourceコマ -ンド同様に)読み込みできます。ですからこれは"source"の意味とも言えます) +Vim が起動し、指定したファイルが読み込まれます。'S' はセッション (Session) の +意味です (実際には、-S には Vim スクリプトならなんでも指定できるので、 +"source" を意味しているとも言えます)。 -開いていたウィンドウは同じ大きさで同じ場所に開きます。マップやオプション値も -保存時と同じ値になります。 -正確には、復元される情報は'sessionoptions'オプションの内容によります。デフォ -ルト値は"blank,buffers,curdir,folds,help,options,winsize"となります。 +以前に開いていたウィンドウが、同じ場所、同じ大きさで作成されます。マップやオプ +ションの設定も復元されます。 +復元される情報は 'sessionoptions' オプションで設定できます。初期設定は +"blank,buffers,curdir,folds,help,options,winsize" です。 blank 空のウィンドウ - buffers ウィンドウになっていないものも含めて全バッファ - curdir 現ディレクトリ - folds 手動で作成したものも含めてフォールド + buffers すべてのバッファ (ウィンドウに表示されていないバッファ + も含む) + curdir カレントディレクトリ + folds 折り畳み (手動で設定したものも含む) help ヘルプウィンドウ - options 全オプションとマップ + options すべてのオプションとマップ winsize ウィンドウの大きさ -好みに応じて変更してください。例えば、vim自身のウィンドウの大きさも復元した -いのであれば、このようにします。 > +好きなように設定してください。例えば、Vim ウィンドウの大きさも復元したい場合 +は、次のようにします: > :set sessionoptions+=resize -こっちもセッション、あっちもセッション --------------------------------------- +こっちにもセッション、あっちにもセッション +------------------------------------------ -セッションが便利に使えるわかりやすい例を挙げましょう。例えば複数のプロジェク -トに参加している時がそうです。セッションファイルを"~/.vim"ディレクトリ下に保 -存するとしましょう。現在の作業が"secret"プロジェクトで、それを別の"boring"と -いうプロジェクトに切り換えてみましょう。 > +セッションは、複数のプロジェクトで仕事をするときなどに使われます。 +例えば、"~/.vim" にセッションファイルを保存するとします。そして、"secret" プロ +ジェクトで作業している最中に、"boring" プロジェクトで作業する必要がでてきまし +た: > :wall :mksession! ~/.vim/secret.vim :source ~/.vim/boring.vim -最初の":wall"は変更のあったファイルを全部保存します。次に現在のセッション情 -報を":mksession!"で保存します。これは前回のセッションファイルに上書き保存さ -れます。次回にこの"secret"セッションをロードすれば、ここで保存した時の状態か -ら作業を始められます。最後の1行で新たに"boring"セッションをロードしています。 +最初に、":wall" ですべてのファイルを保存します。次に、現在のセッションを +":mksession!" で保存します。以前のセッション情報が上書きされました。後で +secret セッションをロードすると今現在の状態から作業を再開できます。最後に、 +"boring" セッションをロードします。 -ヘルプウィンドウを開いたり、ウィンドウ分割、ウィンドウクローズなどを繰り返し -てウィンドウのレイアウトがぐちゃぐちゃになった時は、最後に保存したセッション -に戻るのにも使えます。 > +ヘルプを開いたり、ウィンドウを分割したり閉じたりして、ウィンドウレイアウトが乱 +れてしまった場合、セッションをロードし直せば元に戻せます: > :source ~/.vim/boring.vim -結局セッションファイルは、現在の状況を保存して次回に続きを行うという目的にも -ある種のスタート地点として使う目的にも、どちらでも好きなように使えるというこ -とです。 -これ以外にも、好みのウィンドウのレイアウトを作っておいてそれを保存するという -目的にもセッションが使えます。これならいつでも好きな時にそのレイアウトに戻る -ことができあますからね。 -例えば、こんなのは使いやすいレイアウトです。 +毎回新しいセッションを保存するか、あるいは最初に保存したセッションを使い続ける +かは自由に選択できます。 +セッションには他の使い方もあります。例えば、好みのウィンドウレイアウトをセッ +ションに保存しておけば、いつでも好きなときにそのレイアウトに戻ることができま +す。 +例えば、このようなレイアウトは使いやすいでしょう: +----------------------------------------+ | VIM - main help file | @@ -295,64 +280,61 @@ vimを起動する時に指定のセッションを復元するには、起動 | | +----------------------------------------+ -これはヘルプがウィンドウの上部にあり、いつでも参照できます。左端の縦長のウィ -ンドウはファイルエクスプローラです。ファイルエクスプローラはディレクトリ内容 -を見たりできるvimプラグインです。ここで編集するファイルを選択できます。これ -については次章で詳しく説明します。 -このウィンドウをvim起動直後に作るには次のようにします。 > +ヘルプウィンドウが上部に表示され、いつでも参照できます。左端の縦長のウィンドウ +はファイルエクスプローラという Vim のプラグインでです。ディレクトリのファイル +一覧を表示し、その中からファイルを選択して開くことができます。詳しくは次章で説 +明します。 +このようなウィンドウを作るには、Vim を起動してから次のコマンドを実行します: > :help CTRL-W w :vertical split ~/ -ウィンドウの大きさはお好みでどうぞ。さてここでセッションを保存します。 +ウィンドウの大きさを調節し、セッションを保存してください: > > :mksession ~/.vim/mine.vim -これで、次のようにすればいつでもこのレイアウトが使えるようになりました。 > +これで、同じレイアウトで Vim を起動できます: > vim -S ~/.vim/mine.vim -Hint: エクスプローラウィンドウに出ているリストで選択したファイルを右側の空 -ウィンドウで開くには、カーソルをファイル名のところに動かして"O"を押します。 -マウスでダブルクリックしても同じ結果となります。 +Hint: エクスプローラでファイルを選択し、空のウィンドウでファイルを開くには、 +ファイル名の場所にカーソルを移動して "O" を押します。マウスのダブルクリックで +も同じ動作になります。 -UnixとMS-Windows ----------------- +UNIX と MS-WINDOWS +------------------ -ある日はMS-Windows上で作業を行い、また別の日はUnix上で作業を行うというのが必 -要な方もいるでしょう。あなたがそうなら、'sessionoptions'に"slash"と"unix"を -追加することを考えましょう。こうすれば、保存されるセッションファイルはどちら -のシステムでも使える形式になります。あなたのvimrcファイルに次の行を追加しま -しょう。 > +MS-Windows と Unix を両方使わなければならない人もいるでしょう。そのような人は、 +'sessionoptions' に "slash" と "unix" を追加した方がいいかもしれません。その設 +定で保存されたセッションファイルはどちらのシステムでも使えます。次のコマンドを +vimrc ファイルに追加してください: > :set sessionoptions+=unix,slash -これでvimはUnix形式を使うようになりますから、MS-Windows側のvimはUnixファイル -の読み書きができるようになります。ただしUnix側のvimはMS-Windows形式のセッショ -ンファイルを読み込めません。 -同じように、MS-Windows側のvimはディレクトリの区切りの"/"を理解しますが、Unix -側のvimは"\"を理解できません。 +セッションファイルが Unix 形式で保存されるようになります。MS-Windows の Vim は +Unix 形式のセッションファイルを読み書きできますが、Unix の Vim は MS-Windows +形式のセッションファイルを読み込むことができません。同様に、MS-Windows の Vim +は / で区切られたファイル名を処理できますが、Unix の Vim は \ を処理できませ +ん。 -セッションとviminfo -------------------- +セッション と viminfo +--------------------- -セッションにはいろんなものが保存されますが、マークやレジスタ、コマンド行の履 -歴などは含まれません。こういった情報を保存するにはviminfo機能を使うしかあり -ません。 -たいていはセッションを使いたいシチュエーションはvininfoを使いたい時と違って -いるようです。例えば、他のセッションに切り換えたい場合でもコマンドの履歴はそ -のままにしておきたいでしょうし、あるセッションでレジスタにヤンクした文字列を -他のセッションにペーストしたい場合もそうでしょう。 -セッションにviminfoの内容も保存したほうがよい場合もあるかも知れませんが、そ -れはその時に手動でやるしかありません。こんな感じです。 > +セッションファイルにはたくさんの情報が保存されますが、マークやレジスタ、コマン +ドライン履歴などは保存されません。それらの情報を保存するには viminfo を使って +ください。 +セッションと viminfo は分けて使うことが多いと思います。他のセッションに切り換 +えてもコマンドライン履歴をそのまま残すことができますし、テキストをレジスタにヤ +ンクし、他のセッションでペーストするということもできます。 +セッションと viminfo を同時に使いたい場合は、自分で保存してください。例: > :mksession! ~/.vim/secret.vim :wviminfo! ~/.vim/secret.viminfo -これを復元する時も同様です。 > +復元するには次のようにします: > :source ~/.vim/secret.vim :rviminfo! ~/.vim/secret.viminfo @@ -360,114 +342,111 @@ UnixとMS-Windows ============================================================================== *21.5* ビュー -セッションではvim全体に関する保存を行います。1つのウィンドウについてのプロ -パティだけを保存したい場合には「ビュー」を使います。 -ビューを使うのは、特定の方法でファイルを編集する時のためです。例えば、行番号 -を表示するために'number'オプションを定義し、新たなフォールドを定義するとしま -す。セッションと同じようにこのファイル上のビューを憶えておき、後で復元して利 -用できます。実際、セッションの保存というのは各ウィンドウのビューを保存してい -ることに他なりません。 -ビューを使うには2つの基本的な方法があります。1つ目はvimにビューファイルの -名前を拾わせる方法です。後で同じファイルを編集する時にビューを復元することが -できます。カレントウィンドウのビューを保存するには、このようにします。 > +セッションは Vim 全体の表示設定を扱います。一つのウィンドウに関する設定だけ保 +存したい場合は、ビューを使います。 +ビューは、ファイルごとに表示設定を変更したい場合に使います。例えば、'number' +を設定して行番号を表示し、いくつかの折り畳みを定義した場合に、その情報を保存し +て、後で復元することができます。実際のところ、セッションには、各ウィンドウの +ビューが保存されているのです。 +ビューの使い方は二つあります。一つは、ビューファイルの名前を Vim に決めさせる +方法です。保存したビューは、同じ名前のファイルを開いているときに復元できます。 +カレントウィンドウのビューを保存するには、次のコマンドを使います: > :mkview -vimはビューをどこに置くか自分で判断します。同じファイルを後で編集する時には -このコマンドでビューを呼び戻せます。 > +ビューを保存する場所は自動的に決定されます。後で同じファイルを開いたときに、次 +のコマンドでビューを復元できます: > :loadview -ね、簡単でしょ? -さて、今度は'number'オプションをonにせず、全てのフォールドを開いた状態でファ -イルを見たいとします。まずオプションをそのように設定します。次にこのビューを -保存しましょう。 > +簡単ですね。 +さて、同じファイルを違う設定で表示してみましょう。'number' オプションをオフに +設定、あるいは折り畳みをすべて開き、ウィンドウの表示を変更してみます。そして、 +次のコマンドでビューを保存します: > :mkview 1 -ご想像通り、これを呼び戻す時はこうなります。 > +当然、次のようにして復元します: > :loadview 1 -さて、これで":loadview"の引数の有無で2つのビューを使い分けることができます。 -1つのファイルにつき最大で10のビューを定義できます。そのうち1つは番号なしで -のこりの9つは1~9の番号で指定します。 +これで、":loadview" と ":loadview 1" を使って、同じファイルの二つのビューを切 +り替えられるようになりました。 +ファイル一つにつき、番号なしのビューと、1 から 9 までの 9 個のビュー、合わせて +10 個のビューが使えます。 名前付きのビュー ---------------- -2つ目の基本的な方法はあなたが選んだ名前でファイルのビューを保存する方法です。 -このビューは他のファイルを編集する時にもロードできます。vimはビューで指定さ -れたファイルに切り換えます。ですから、これを使うと以前保存した時のファイルに -素早く切り換えることができます。 -例えば、現在のファイルをビューに保存するにはこのようにします。 > +ビューのもう一つの使用方法は、指定したファイルにビューを保存する方法です。この +方法なら、他のファイルを開いていてもビューを復元できます。ビューを復元すると、 +ビューに関連付けられたファイルが開くので、編集するファイルを素早く切り替える方 +法としても使えます。 +例えば、カレントファイルのビューを保存するには、次のようにします: > :mkview ~/.vim/main.vim -それを戻すのはこうです。 > +次のコマンドで復元できます: > :source ~/.vim/main.vim ============================================================================== -*21.6* モード行 - -あるファイルを編集する時に、いつもそのファイル用のオプションを設定したいこと -もあるでしょう。毎回そのコマンドを手入力するのはバカバカしい話です。セッショ -ンやビューを使ってもいいのですが、そのファイルを他のメンバと共有している場合 -は定義を共有できません。 -こういった場合はファイルにモード行を追加すれば解決します。これはvimにオプショ -ンの値を指定のファイルに対してだけ適用するように通知する行データです。 -Cプログラムでのインデント設定を4にするというのが典型的な使い方でしょう。 -この場合なら、'shiftwidth'オプションを4に設定します。このモード行は次のよう -にします。 +*21.6* モードライン + +ファイル固有の設定を、ファイルを開くたびに設定しても構いませんが、何度も何度も +同じコマンドを入力するのはうんざりですよね。セッションやビューでは同じ設定を他 +人と共有できません。 +そのような場合にはモードラインを使います。モードラインとは、ファイル固有の設定 +をファイル内に記述するための仕組みです。 +例えば、C 言語ファイルのインデントをスペース 4 個分に設定したい場合に使います。 +それには 'shiftwidth' オプションを 4 に設定する必要があるので、モードラインは +次のようになります: /* vim:set shiftwidth=4: */ ~ -上の行をファイルの先頭5行か末尾5行のどこかに置きます。このファイルを編集し -ようとすると、'shiftwidth'が4桁に設定されているのがわかるでしょう。他のファ -イルを編集すると、またデフォルトの8桁に戻ります。 -一部のファイルではモード行をヘッダに置くのがフィットします。そういう場合は -ファイルの先頭に置きましょう。テキストファイルなど、通常の文章の中に入れる -場合ならファイルの末尾に置くのがよいでしょう。 -'modelines'オプションを使うとファイルの先頭と末尾から、それぞれ何行分をモー -ド行を含みうるかを指定できます。これを10行とするにはこのようにします。 > +この行を、ファイルの先頭または末尾から五行以内のどこかに書いてください。その +ファイルを開くと 'shiftwidth' が自動的に設定されます。他のファイルを開くと、初 +期設定の 8 に戻ります。 +モードラインをファイルヘッダとして書くのが適当な場合は、ファイルの先頭にモード +ラインを書いてください。テキストファイルなど、ファイルの内容とモードラインの区 +別が付きにくいような場合は、末尾に書いた方がいいかもしれません。 + +'modelines' オプションでモードラインの有効範囲を設定できます。ファイルの先頭ま +たは末尾からの行数で指定してください。例えば、10 行にしたい場合は次のように設 +定します: > :set modelines=10 -'modeline'オプションはモード行の機能を禁止するのに使います。これはrootとして -作業を行う場合や編集しようとしているファイルが(セキュリティ的に)信用できない -場合に使います。 > +モードライン機能を無効にするには 'modeline' オプションをオフに設定します。root +で作業する場合や、信用できないファイルを開く場合に設定してください: > :set nomodeline -モード行の内容は次の形式で記述します。 +モードラインは次の書式で書きます: any-text vim:set {option}={value} ... : any-text ~ -vimが使う部分の前後にある"any-text"には、どんな文字列が来ても構いません。 -これはモード行の内容をコメント化したりするのに使います。最初の例であれば、 -/* と */ を使っています。 -" vim:"の部分で、vimはこれがモード行であることを認識します。vimの直前に空白 -文字があるか、vimが行頭で始まっていなければなりません。ですから"gvim:"といっ -た記述ではうまく動きません。 -":"に挟まれた部分は":set"コマンドです。これはvimの中で":set"コマンドを入力す -るのと同じように働きます。ただし":"記号を使う時はバックスラッシュ(\)でクオー -トする必要があります。(これをしないとここがモード行の最後とみなされてしまい -ます) +モードラインの前後、"any-text" の部分はどんな文字列でも構いません。例えば上述 +の例のように、/* と */ で囲んでコメントにすることができます。 +Vim は " vim:" という部分を見てモードラインを認識します。直前に空白のある +"vim"、または行頭の "vim" だけが認識されます。つまり、例えば "gvim:" は機能し +ません。 +二つのコロン (:) の間には ":set" コマンドを記述します。これは通常の ":set" コ +マンドと同じです。ただし、コロンの前にバックスラッシュ (\) を置く必要がありま +す (バックスラッシュがない場合はそれがモードラインの終端だと認識されます)。 -もう一つの例です。 +例: // vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here ~ -ここでは最初のコロンの前にバックスラッシュがあります。ですからこれは":set"コ -マンドの一部です。ですが、2つ目のコロン以降はコメントとみなされますので -無視されます。 +最初のコロンにはバックスラッシュが前置されているので、それは ":set" コマンドの +一部です。二つ目のコロン以降は無視されるので、説明を書くことができます。 -もっと詳しいことは|modeline|をご覧ください。 +詳細は |modeline| を参照してください。 ============================================================================== -Next chapter: |usr_22.txt| 編集するファイルを見つける +次章: |usr_22.txt| ファイルを探す Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: From 7d23f073ce46bbf9c8b416ced774f504be011599 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 8 Apr 2007 12:04:12 +0000 Subject: [PATCH 082/783] fix: update to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@82 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/usr_22.txt | 8 +- en/usr_23.txt | 4 +- ja/usr_22.jax | 392 +++++++++++++++++++++++++------------------------- ja/usr_23.jax | 391 ++++++++++++++++++++++++------------------------- 4 files changed, 383 insertions(+), 412 deletions(-) diff --git a/en/usr_22.txt b/en/usr_22.txt index 49cc45b36..85113aea5 100644 --- a/en/usr_22.txt +++ b/en/usr_22.txt @@ -1,4 +1,4 @@ -*usr_22.txt* For Vim version 6.3. Last change: 2003 Mar 17 +*usr_22.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -95,7 +95,7 @@ The following commands are used to display other information: s Use the field the cursor is in to sort on. First display the size and date with i. Then Move the cursor to the size of any file and press s. The files - will now be sorted on size. Press s wile the cursor + will now be sorted on size. Press s while the cursor is on a date and the items will be sorted on date. r reverse the sorting order (either size or date) @@ -291,7 +291,7 @@ shorter to type: > The output could look like this: 1 #h "help.txt" line 62 ~ - 2 %l+ "usr_21.txt" line 1 ~ + 2 %a+ "usr_21.txt" line 1 ~ 3 "usr_toc.txt" line 1 ~ The first column contains the buffer number. You can use this to edit the @@ -303,7 +303,7 @@ and the line number where the cursor was the last time. u Buffer is unlisted |unlisted-buffer|. % Current buffer. # Alternate buffer. - l Buffer is loaded and displayed. + a Buffer is loaded and displayed. h Buffer is loaded but hidden. = Buffer is read-only. - Buffer is not modifiable, the 'modifiable' option is off. diff --git a/en/usr_23.txt b/en/usr_23.txt index b382f6d60..120fe73d2 100644 --- a/en/usr_23.txt +++ b/en/usr_23.txt @@ -1,4 +1,4 @@ -*usr_23.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*usr_23.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -82,7 +82,7 @@ Vim guesses wrong. OVERRULING THE FORMAT If you use the good old Vi and try to edit an MS-DOS format file, you will -find that each line ends with a ^M character. (^M is <CR>). The automatic +find that each line ends with a ^M character. (^M is <CR>). The automatic detection avoids this. Suppose you do want to edit the file that way? Then you need to overrule the format: > diff --git a/ja/usr_22.jax b/ja/usr_22.jax index 11ef4ab95..694739528 100644 --- a/ja/usr_22.jax +++ b/ja/usr_22.jax @@ -1,39 +1,38 @@ COMMENT: ファイルの検索(ファイルブラウザ) -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_22.txt* For Vim version 6.3. Last change: 2003 Mar 17 +*usr_22.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - 編集したいファイルを見つける + ファイルを探す -ファイルはどこにでもあります。ではどうやって見つけますか?vimではいろいろな -方法でディレクトリ構造を調べる方法を提供しています。既に他で説明したように、 -ファイルにジャンプするコマンドがあり、vimは以前に編集したことのあるファイル -を憶えています。 +ファイルはどこにでもありますが、どうやって目的のファイルを見つければいいので +しょうか。Vim ではさまざまな方法でディレクトリツリーをブラウズできます。ファイ +ルにジャンプするコマンドもあります。開いたことのあるファイルは後から参照できま +す。 |22.1| ファイルエクスプローラ |22.2| カレントディレクトリ -|22.3| ファイルを見つける +|22.3| ファイルを探す |22.4| バッファリスト - Next chapter: |usr_23.txt| 他のファイルを編集する - Previous chapter: |usr_21.txt| 行ったり来たり -Table of contents: |usr_toc.txt| +次章: |usr_23.txt| 特殊なファイルを編集する +前章: |usr_21.txt| 中断と再開 +目次: |usr_toc.txt| ============================================================================== *22.1* ファイルエクスプローラ -vimにはディレクトリを編集できるようなプラグインがあります。これを実行してみ -てください。 > +ディレクトリを編集するためのプラグインがあります。試してみましょう: > :edit . -自動コマンドとvimスクリプトの魔法によって、ウィンドウにはディレクトリの内容 -が表示されているはずです。例えばこんな具合です。 +自動コマンドと Vim スクリプトの魔法により、ディレクトリの内容がウィンドウに表 +示されます。例えばこんな具合です: " Press ? for keyboard shortcuts ~ " Sorted by name (.bak,~,.o,.h,.info,.swp,.obj,.orig,.rej at end of list) ~ @@ -47,33 +46,28 @@ vimにはディレクトリを編集できるようなプラグインがあり filetype.txt~ ~ help.txt.info ~ -次のような項目が表示されるでしょう。 -1. "?"の使い方についてのコメント。ファイルエクスプローラの機能についてのヘ - ルプ。 -2. 2行目はディレクトリ内の各項目をどのようにリストしているかの説明。ソート - 方法はいくつか用意されている。 -3. 3行目は現ディレクトリの名前 -4. "../"ディレクトリ。これは親ディレクトリのこと。 -5. 子ディレクトリの名前 -6. 通常ファイルの名前。2行目での説明の通り、ここではなく末尾に表示されるファ - イルもある。 -7. あまり重要でない通常ファイルの名前。あまり使わないようなファイルについて - は、このように末尾に移動できる。 - -シンタックスハイライトを有効にしている場合は、それぞれを違う色で表示しますか -ら見分けるのが簡単になります。 - -この画面ではリストの中を動くのvimの通常モードのコマンドが使えます。例えば、 -あるファイルの上にカーソルを動かして、<Enter>を押すと、そのファイルを編集で -きます。エクスプローラに戻るには":edit ."と入力します。CTRL-Oでも同じ意味に -なります。 -カーソルがディレクトリ名の上にある時に<Enter>を押してみましょう。すると、エ -クスプローラはその子ディレクトリに移動し、そのディレクトリ内のファイルなどを -表示します。最初に表示されている"../"ディレクトリで<Enter>を押すと、1つ上の -階層に移動します。その行まで移動しなくても、"-"を押しても同じ意味になります。 - -"?"を押すと、エクスプローラの使い方についての簡単なヘルプが出ます。 -このような表示となります。 +次の項目が表示されます: +1. ヘルプの表示方法。? を押すとファイルエクスプローラのヘルプが表示されます。 +2. 二行目は、ファイル一覧の表示方法の説明。ソート方法は変更できます。 +3. 三行目は、カレントディレクトリの名前。 +4. "../" ディレクトリ。親ディレクトリです。 +5. ディレクトリ一覧。 +6. ファイル一覧。二行目の "at the end of the list" に指定されているファイルは + ここに表示されません。 +7. 優先順位の低いファイル一覧。使用頻度が低いと思われるファイルはここ (末尾) + に表示されます。 + +構文強調表示が有効な場合は各項目が別々の色で表示され、視認性が上がります。 + +一覧の中はノーマルモードコマンドで移動できます。ファイル名の上にカーソルを動か +して <Enter> を押すとファイルが開きます。もう一度 ":edit ." と入力すればエクス +プローラに戻れます。CTRL-O で戻ることもできます。 +ディレクトリ名の上にカーソルを動かして <Enter> を押すと、エクスプローラがその +ディレクトリに移動し、新たなファイル一覧が表示されます。"../" ディレクトリの上 +で <Enter> を押すと上の階層に移動できます。あるいは、"../" までカーソルを移動 +しなくても、"-" を押すだけで上の階層に移動できます。 + +"?" を押すとエクスプローラで使えるコマンドの簡単なヘルプが表示されます: " <enter> : open file or directory ~ " o : open new window for file/directory ~ @@ -85,65 +79,62 @@ vimにはディレクトリを編集できるようなプラグインがあり " R : rename file D : delete file ~ " :help file-explorer for detailed help ~ -最初の数行は選択したファイルを表示するためのコマンドです。利用するコマンドに -よって、ファイルの表示のされ方が違います。 - - <Enter> 現在のウィンドウを使って表示 - o 新たなウィンドウを開く - O 直前に使っていたウィンドウを使う。 - p プレビューウィンドウを使う。カーソルはエクスプローラ - ウィンドウに戻ってくる。|preview-window|を参照。 - -次のコマンドはそれ以外の情報表示に使います。 - - i 指定のファイルの大きさと日付を表示します。もう一度"i" - を押すと非表示にします。 - s カーソルのあるフィールドを使って並べ替えを行います。 - まず、"i"コマンドで大きさと日付を表示します。次にカー - ソルをどれかのファイルの大きさフィールドに動かして、 - "s"を押します。するとファイルは大きさ順に並べ替えら - れます。カーソルが日付にあれば、日付順に並べ替えられ - ます。 - r 並べ替えの順序を逆にします(大きさでも日付でも) - -また、次のような特殊コマンドもあります。 - - c 表示されているディレクトリをカレントディレクトリとし - ます。そうすると":edit"コマンドでフルパスを指定しな - くてもよくなります。 - R カーソル下のファイル名を変更します。新しいファイル名 - を入力するためのプロンプトを表示します。 - D カーソル下のファイルを削除します。本当に実行してもよ - いかを確認するプロンプトを表示します。 +最初の四つはファイルを開くコマンドです。使うコマンドによってファイルの開き方が +違います: + + <Enter> カレントウィンドウで開く。 + o 新しいウィンドウで開く。 + O 直前に使っていたウィンドウで開く。 + p プレビューウィンドウで開く。カーソルはエクスプローラ + ウィンドウに戻ります。|preview-window| + +次のコマンドは表示を変更するために使います: + + i ファイルのサイズと日付を表示する。もう一度 i を押すと + 非表示になる。 + s カーソルのあるフィールドを使ってファイルを並べ替える。 + 例えば、i コマンドでサイズと日付を表示し、ファイルサイ + ズが表示されている場所に移動して s を押すと、ファイル + 一覧がサイズ順にソートされます。日付の場所で s を押せ + ば日付順にソートされます + r 逆順に並べ替える (サイズと日付、両方可) + +次のようなコマンドもあります: + + c 表示されているディレクトリをカレントディレクトリにす + る。":edit" コマンドを使うときに、ファイル名の指定が簡 + 単になります。 + R ファイルの名前を変更する。プロンプトが表示されるので、 + 新しい名前を入力してください。 + D ファイルを削除する。プロンプトが表示されるので、確認し + てから実行してください。 ============================================================================== *22.2* カレントディレクトリ -シェルと同じようにvimにもカレントディレクトリという概念があります。例えば、 -ホームディレクトリにいる時に、"VeryLongFileName"というディレクトリにあるファ -イルをいくつか編集したいとします。こうすればできますが、打ち込む文字数が多く -なります。 > +シェルと同じように Vim にもカレントディレクトリという概念があります。例えば、 +ホームディレクトリにいるときに "VeryLongFileName" ディレクトリにあるファイルを +開きたい場合、そのまま実行することもできますが: > :edit VeryLongFileName/file1.txt :edit VeryLongFileName/file2.txt :edit VeryLongFileName/file3.txt -こんなに文字を打つのを止めたければ、このようにします。 > +次のようにすれば、入力が簡単です: > :cd VeryLongFileName :edit file1.txt :edit file2.txt :edit file3.txt -このように":cd"コマンドでカレントディレクトリを変更できます。カレントディレ -クトリが何かを知るには、":pwd"コマンドを使います。 > +":cd" コマンドでカレントディレクトリを変更できます。現在のカレントディレクトリ +を確認するには ":pwd" コマンドを使います: > :pwd /home/Bram/VeryLongFileName -vimは直前のディレクトリ名を覚えています。":cd -"を使うとそのディレクトリに戻 -ることができます。 -例を示しましょう。 > +直前のカレントディレクトリは記録されているので ":cd -" で元の場所に戻れます。 +例: > :pwd /home/Bram/VeryLongFileName @@ -158,12 +149,13 @@ vimは直前のディレクトリ名を覚えています。":cd -"を使うと /etc -ウィンドウ毎のカレントディレクトリ +ウィンドウローカルディレクトリ +------------------------------ -ウィンドウを分割すると、両方のウィンドウのカレントディレクトリは同じになりま -す。でも新しく分割したウィンドウで別のディレクトリにあるファイル群を編集した -ければ、他のウィンドウのカレントディレクトリに影響を与えずに、ディレクトリ変 -更ができます。これをローカルディレクトリと呼びます。 > +ウィンドウを分割した直後、二つのウィンドウは同じカレントディレクトリを使ってい +ます。カレントディレクトリはウィンドウ毎に設定できるので、新しいウィンドウだけ +カレントディレクトリを変更して別の場所で作業できます。これを、ローカルディレク +トリといいます。 > :pwd /home/Bram/VeryLongFileName @@ -175,203 +167,203 @@ vimは直前のディレクトリ名を覚えています。":cd -"を使うと :pwd /home/Bram/VeryLongFileName -":lcd"コマンドを使うまでは、全ウィンドウは同じカレントディレクトリを共有しま -す。ですから、あるウィンドウで":cd"コマンドを実行すれば、他の全ウィンドウの +":lcd" コマンドを使うまでは、すべてのウィンドウが共通のカレントディレクトリを +使っています。一つのウィンドウで ":cd" コマンドを実行すると、他のウィンドウの カレントディレクトリも変更されます。 -でも、":lcd"を使って違ったディレクトリに変更されたウィンドウは違います。他の -ウィンドウで":cd"や":lcd"を行っても影響を受けません。 -他とは別のカレントディレクトリを使っているウィンドウで":cd"コマンドを実行す -ると、共有のディレクトリを使うようになります。 +":lcd" を使ってカレントディレクトリを変更したウィンドウは、固有のカレントディ +レクトリを持ちます。固有のカレントディレクトリは、他のウィンドウで ":cd" また +は ":lcd" を使っても変更されません。 +固有のカレントディレクトリを持っているウィンドウで ":cd" コマンドを使うと、再 +び共通のカレントディレクトリを使うようになります。 ============================================================================== -*22.3* ファイルを見つける +*22.3* ファイルを探す -次のような行を含むCのプログラムを編集しているとします。 +C 言語のファイルを編集していて、次のような行があったとします: #include "inits.h" ~ -この"inits.h"ファイルの内容を見たければ、カーソルをそのファイル名の上に動か -して、次のように入力します。 > +"inits.h" を開いて内容を確認したい場合は、カーソルをファイル名の上に動かして、 +次のように入力します: > gf -vimはそのファイルを見つけて、開いてくれます。 -ファイルがカレントディレクトリにない場合はどうしましょうか?その場合は'path' -オプションを使ってそのファイルを探します。このオプションにはファイルを探す時 -に見にいくディレクトリのリストを入れておきます。 -例えば、インクルードファイルが"c:/prog/include"にあるのであれば、次のコマン -ドで'path'オプションにそのディレクトリを追加します。 > +ファイルが検索され、開かれます。 +ファイルがカレントディレクトリにない場合は 'path' オプションが使われます。この +オプションはディレクトリ名のリストです。指定されたディレクトリからファイルが検 +索されます。 +例えば、"c:/prog/include" にインクルードファイルがある場合は次のコマンドでディ +レクトリを追加できます: > :set path+=c:/prog/include -ここで指定しているディレクトリは絶対パスです。ですからカレントディレクトリが -どこであれ、常に同じ場所を示します。ではファイルのある場所のサブディレクトリ -にファイル群を配置してある場合はどうでしょうか。この場合は相対パスで指定がで -きます。相対パスはこのように、"."文字で始めます。 > +ディレクトリを絶対パスで指定した場合は、どこで作業していても同じディレクトリが +参照されます。開いているファイル以下のサブディレクトリにインクルードファイルが +ある場合は相対パスを指定してください。相対パスの先頭はドットです: > :set path+=./proto -この場合、"gf"を実行したファイルがあるディレクトリのサブディレクトリ"proto" -の中を探します。つまり、"inits.h"の上で"gf"と入力すると、vimは"proto/inits.h" -を探し、そのファイルのディレクトリで編集を開始します。 -"./"なしで、つまり"proto"だけだった場合、vimはカレントディレクトリの下にある -"proto"ディレクトリを探します。ただ、編集中のファイルがある場所と、カレント -ディレクトリが、いつも一致しているとは限りません。 +この場合、ファイルが保存されているディレクトリの "proto" ディレクトリからファ +イルが検索されます。つまり、"inits.h" の上で "gf" を使うと、同じディレクトリの +"inits.h" が検索された後に、"proto/inits.h" が検索されます。 +"./" を付けなかった場合、つまり "proto" と指定した場合は、カレントディレクトリ +の "proto" ディレクトリが検索されます。ファイルのディレクトリとカレントディレ +クトリは意味が異なるので注意してください。 -'path'オプションでは、これ以外にもいろいろな方法で検索対象のディレクトリを指 -定することができます。詳しくはヘルプの'path'オプションをご覧ください。 -'isfname'オプションはファイル名に使える文字とそうでない文字を決めるのに使い -ます。(例えば、上の例にもあるように "(ダブルクオート)文字がそうです) +ディレクトリの指定方法は他にもあります。'path' オプションのヘルプを参照してく +ださい。 +'isfname' オプションには、ファイル名として使える文字、あるいは使えない文字を設 +定できます (例えば上の例では " 文字がファイル名に含まれてませんね)。 -ファイルの中では使っていないが、ファイル名を知っているようなファイルを探すに -は、次のコマンドを使います。 > +ファイルの名前がわかっている場合は、その名前がファイル内で使われていなくても、 +検索することができます: > :find inits.h -vimは'path'オプションでそのファイルの場所を決めようとします。これは":edit"コ -マンドと似ていますが、'path'を使う点が違っています。 +'path' オプションを使ってファイルが検索されます。'path' が使われる以外は +":edit" コマンドと同じです。 + +検索したファイルを新しいウィンドウで開くには、"gf" ":find" ではなく "CTRL-W f" +":sfind" を使います。 -見つけたファイルを別ウィンドウで開くには"gf"コマンドの代わりにCTRL-W fコマン -ドを使います。また、":find"の代わりは":sfind"となります。 -Vim起動時に'path'にあるファイルの編集を開始するにはこの方法が便利です。 > +Vim を起動して 'path' の中からファイルを開くには、次の方法が便利です: > vim "+find stdio.h" -こうすると"stdio.h"というファイルを'path'の中から探しだします。クオート(")は引 -数を一つにまとめるために必ず必要です|-+c|。 +'path' 内の "stdio.h" が検索されます。引数はクオート (") で囲む必要があります +|-+c|。 ============================================================================== *22.4* バッファリスト -vimでは編集中のファイルを表すのにバッファという用語を使います。実際にはバッ -ファは編集しているファイルのコピーです。バッファの変更を終わる時にそのファイ -ルにバッファの内容を書き出すのです。バッファにはファイルの内容だけが入ってい -るわけではなく、マークや設定などバッファに属する情報も持っています。 +Vim では編集中のファイルのことをバッファといいます。バッファはファイルのコピー +です。編集を終えて保存したときに、バッファの内容がファイルに書き込まれます。 +バッファにはファイルのテキストの他に、マークやオプション設定などのファイルに関 +連した情報も記録されます。 -隠しバッファ +隠れバッファ (HIDDEN BUFFERS) ------------ -ファイル"one.txt"を編集している時に"two.txt"を編集する必要があったとします。 -単純に":edit two.txt"と入力してもいいのですが、"one.txt"に変更を加えている時 -にはうまくいきません。でもまだ"one.txt"を書き出したくはないとします。こんな -場合、vimなら次のコマンドで解決できます。 > +例えば、one.txt を編集しているときに two.txt を編集したくなったとします。 +one.txt は変更されているので ":edit two.txt" は使えません。しかも、あなたはま +だ one.txt を保存したくはありません。次のコマンドで解決できます: > :hide edit two.txt -"one.txt"というバッファは画面から消えますが、vimはそのバッファを編集中である -ことを覚えていて、変更されている内容も覚えています。これを隠しバッファと呼び -ます。このバッファに文章が含まれていますが、見ることはできません。 -パラメタ付きの":hide"コマンドは別のコマンドです。これは'hidden'オプションが -設定されている時のようにふるまいます。このオプションを自分で設定することもで -きます。これを設定しておくといずれかのバッファを破棄する時に、隠しバッファの -状態となります。 -気を付けてください。変更された隠しバッファがある時には全バッファを保存済であ -ることを確認してからvimを終了してください。 +"one.txt" というバッファは画面から消えます。しかしバッファの内容が失われるわけ +ではありません。未保存のテキストはまだ残っています。このようなバッファを隠れ +バッファといいます。 +":hide" コマンドの引数はコマンドです。指定されたコマンドは、'hidden' オプショ +ンがオンに設定されているかのように振る舞います。もちろん、自分で 'hidden' オプ +ションを設定しても構いません。バッファが破棄されたとき、'hidden' がオンなら、 +そのバッファは隠れバッファになります。 +隠れバッファを使ったときは、すべてのバッファが保存されたのを確認してから Vim +を終了してください。 -非アクティブバッファ --------------------- +休眠バッファ (INACTIVE BUFFERS) +------------ -一度使ったバッファに関する情報はずっと覚えています。ウィンドウが表示されてい -ない時で隠しバッファでもない場合もバッファリストには出てきます。こういった -バッファを「非アクティブバッファ」と呼びます。バッファの種類を整理しておきま -しょう。 +バッファを閉じてもいくつかの情報は失われずに残ります。バッファリストに入ってい +るバッファの内、画面に表示されず、隠れバッファでもないバッファのことを休眠バッ +ファといいます: - Active 文章ロード済でウィンドウを表示中 - Hidden 文章ロード済だがウィンドウは非表示 - Inactive 文章は未ロードでウィンドウも非表示 + アクティブバッファ ウィンドウに表示されている。テキストはメモリの中。 + 隠れバッファ 表示されていない。テキストはメモリの中。 + 休眠バッファ 表示されていない。テキストは保持されていない。 -非アクティブバッファについてマークと同じようにvim側で情報を保持していますの -で覚えています。ファイル名を覚えていますので、編集したことのあるファイルを見 -ることができ、便利です。後で再編集できます。 +休眠バッファにはファイル名やマークなどの情報が保存されています。ファイル名が保 +存されているので、編集したことのあるファイルを確認し、それを再び開くことができ +ます。 -バッファリスト --------------- +バッファリストの表示 +-------------------- -バッファリストを見るのは次のコマンドです。 > +次のコマンドでバッファリストを表示できます: > :buffers -同じことを行うコマンドがあります。これはバッファリストを表示するという意味に -は取りにくいですが、ずっと入力は楽です。 > +次のコマンドも同じです。コマンドの名前と機能が連想しずらいかもしれませんが、入 +力は簡単です: > :ls -コマンドの実行結果は例えば次のようになります。 +コマンドの出力例: 1 #h "help.txt" line 62 ~ - 2 %l+ "usr_21.txt" line 1 ~ + 2 %a+ "usr_21.txt" line 1 ~ 3 "usr_toc.txt" line 1 ~ -最初のカラムはバッファ番号です。バッファ番号を使えば、後で述べるようにファイ -ル名を入力せずにそのバッファを編集できます。 -バッファ番号の次にはフラグ、そしてファイル名、最後に編集した時の行番号と続き -ます。フラグ部分には次のようなものが(左から右へ)表示されます。 +行頭の数字はバッファ番号です。バッファを開くときに名前の代わりにバッファ番号を +指定することもできます。下記参照。 +バッファ番号に続いてフラグ、ファイル名、最後にカーソルが位置していた行番号、が +表示されます。 +フラグ部分には以下の文字が (左から右へ) 表示されます。 - u バッファはリストに入らない(|unlisted-buffer|をご覧ください) - % 現在のバッファ - # 直前のバッファ - l バッファはロード済で表示中 - h バッファはロード済ですが非表示 - = バッファは読み込み専用 - - バッファは未変更。'modifiable'オプションがoff - + バッファは変更済 + u 非列挙バッファ (|unlisted-buffer|)。 + % カレントバッファ。 + # オルタネートバッファ。 + a テキストを持っている。表示されている。 + h テキストを持っている。隠れバッファ。 + = 読み込み専用。 + - 変更不可 ('modifiable' オプションがオフ)。 + + 変更あり。 -バッファを編集 +バッファを開く -------------- -番号を指定してバッファを編集できます。ファイル名を入力する手間を省けます。 -> +バッファ番号を指定してバッファを開くことができます。ファイル名を入力する必要は +ありません: > + :buffer 2 -しかしバッファ番号を知る唯一の方法はバッファリストを見ることです。その代わり -に、名前の一部を使うこともできます。 > +しかし、バッファ番号を知るためにはバッファリストを表示しなければなりません。名 +前の一部分だけを指定して開くこともできます: > :buffer help -vimは入力された名前に一番近いファイルを探します。その名前に合うバッファが1 -つだけの場合はそれになります。この例であれば、"help.txt"がそうです。 -新しいウィンドウを開いてバッファを開く時はこうします。 > +指定された名前に近いバッファが検索され、名前が一致したバッファが一つだけなら、 +そのバッファが使われます。この例なら "help.txt" など。 +バッファを新しいウィンドウで開くには、次のコマンドを使います: > :sbuffer 3 -この場合も名前で指定ができます。 +もちろん名前も指定できます。 -バッファリストの利用 +バッファリストを使う -------------------- -次のコマンド群を使って、バッファリスト内を動くことができます。 +次のコマンドでバッファリストの中を移動できます: :bnext 次のバッファを開く - :bprevious 1つ前のバッファを開く + :bprevious 前のバッファを開く :bfirst 最初のバッファを開く :blast 最後のバッファを開く -バッファをリストからはずすには、このコマンドを使います。 > +次のコマンドでバッファリストからバッファを削除できます: > :bdelete 3 -繰り返しですが、この場合も名前が使えます。 -アクティブ(ウィンドウ内に見えている)バッファを削除すると、そのウィンドウも閉 -じます。またカレントバッファを削除すると、カレントウィンドウを閉じます。ただ -し、1つしかウィンドウが残っていない場合は、編集する他のバッファを探します。 -何も編集しないわけにはいかないですからね! +もちろん名前も指定できます。 +アクティブバッファ (ウィンドウに表示されているバッファ) を削除すると、表示して +いたウィンドウも閉じます。カレントバッファを削除するば、カレントウィンドウが閉 +じます。ウィンドウが一つしかなかった場合は、他のバッファに切り替わります。なに +もないを開くことはできません! Note: - ":bdelete"でバッファを削除した後でもvimはそれを覚えています。実際に - はそれを"unlieted"にして、":buffers"で表示されるリストに現れないよう - にしているのです。":buffers!"コマンドを使うとこの"unlisted"なウィン - ドウも表示します。(そう、vimは不可能なことも可能にするのです) - バッファのことを本当に忘れてしまうようにするには":bwipe"を使います。 - 'buflisted'オプションも併せてご覧ください。 + ":bdelete" でバッファを削除してもバッファの情報は失われません。バッファ + が "unlisted" 状態になり、":buffers" コマンドで表示されなくなるだけで + す。":buffers!" コマンドを使えば unlisted バッファも表示されます (そ + う、Vim は不可能を可能にするのです)。バッファの情報を完全に消去するに + は ":bwipe" を使ってください。'buflisted' オプション参照。 ============================================================================== -Next chapter: |usr_23.txt| 他の種類のファイルを編集する +次章: |usr_23.txt| 特殊なファイルを編集する Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_23.jax b/ja/usr_23.jax index 0f739ab17..a018ed651 100644 --- a/ja/usr_23.jax +++ b/ja/usr_23.jax @@ -1,288 +1,269 @@ COMMENT: ファイルの改行、ネットワーク、暗号、バイナリ、圧縮 -STATUS: finished 6.3.054 +STATUS: finished 7.0 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> -*usr_23.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*usr_23.txt* For Vim version 7.0. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar - 他の種類のファイルを編集する + 特殊なファイルを編集する -この章では通常ファイル以外のファイルの編集方法を述べます。vimでは圧縮された -ファイルや暗号化されたファイルの編集ができます。時にはインターネット経由でア -クセスする必要もあるでしょう。また、多少の制限はありますが、バイナリファイル -の編集もやってのけます。 +この章では特殊なファイルの編集について説明します。圧縮ファイルや暗号化された +ファイルを編集できます。多少不便ですが、バイナリファイルも編集できます。イン +ターネット越しにファイルアクセスする方法も説明します。 -|23.1| DOS形式、Mac形式、Unix形式のファイル +|23.1| DOS、Mac、Unix形式のファイル |23.2| インターネット上のファイル |23.3| 暗号化 |23.4| バイナリファイル -|23.5| 圧縮済ファイル +|23.5| 圧縮ファイル - Next chapter: |usr_24.txt| 素早く挿入する - Previous chapter: |usr_22.txt| 編集するファイルを見つける -Table of contents: |usr_toc.txt| +次章: |usr_24.txt| 効率的な入力 +前章: |usr_22.txt| ファイルを探す +目次: |usr_toc.txt| ============================================================================== -*23.1* DOS形式、Mac形式、Unix形式のファイル - -ずっとずっと以前、旧いテレタイプを使っていた頃は新しい行を始めるのに2つの文 -字(コード)を使っていました。1つは最初の桁位置に戻すための文字<CR>(キャリッ -ジリターン、復帰ともいう)で、もう1つは用紙を1行送る文字<LF>(ラインフィード -改行ともいう)です。 -コンピュータが登場した頃、記憶装置はとても高価なものでした。そこで行末を示す -だけのために2つもの記憶領域を使うことはない、と判断する人々が出てきたのです。 -UNIXを設計した人々は行末を示す記号として<LF>だけとすることを決め、Macintosh -を設計した(Appleの)人々は<CR>を標準としました。またMS-DOS(MS Windowsも)の場 -合は古来の<CR><LF>を使い続けました。 -このような事情があるため、あるシステムのファイルを他のシステムに持っていこう -とすると、ラインブレイク問題が持ち上ります。vimは自動的にファイル形式を認識 -して、うまく処理してくれます。 -'fileformats'オプションには新しいファイルを編集する時にチェックすべきフォー -マットを指定できます。例えば、次のコマンドは最初にUnix形式、2番目にMS-DOS形 -式のチェックをするという指示になります。 > - +*23.1* DOS、Mac、Unix形式のファイル + +その昔、旧いテレタイプマシンは改行のために二つの文字を使っていました。一つ目の +文字 (キャリッジリターン。<CR>) でキャリッジを初期位置に戻し、二つ目の文字 (ラ +インフィード。<LF>) で用紙を送っていたのです。 +コンピュータが登場した頃は記憶装置がとても高価だったので、改行のために二文字も +使う必要はないと考える人たちがいました。UNIX の人々は <LF> だけを使って改行す +ることに決めました。Apple の人々は <CR> を標準としました。MS-DOS (と Microsoft +Windows) の人々は <CR><LF> を使い続けました。 +このような事情により、異なるシステム間でファイルを交換するときには改行文字の非 +互換が問題になります。Vim はファイル形式を自動的に認識し、それを適切に処理する +ことができます。 +'fileformats' オプションを設定して使用するファイル形式を指定してください。例え +ば、最初に Unix 形式を試し、次に MS-DOS 形式を試すには、次のように設定します: +> :set fileformats=unix,dos -ファイルを編集する時に表示されるメッセージでファイル形式がわかります。そのシ -ステム用のファイル形式の時には何も表示されません。つまりUnix形式のファイルを -Unixシステムで編集するのは特別なことはないからです。しかしDOS形式のファイル -を編集する時には、次のようなメッセージを表示します。 +ファイルを開いたときのメッセージにファイル形式が表示されることがあります。シス +テム標準のファイル形式だった場合は表示されません。例えば、Unix で Unix 形式の +ファイルを編集するときに注意は必要ないでしょう。しかし、DOS 形式のファイルな +ら注意が必要です。次のようなメッセージが表示されます: "/tmp/test" [dos] 3L, 71C ~ -Macintosh形式なら"[mac]"と表示します。 -検出したファイル形式は'fileformat'オプションに格納します。今のファイル形式を -確認するには次のコマンドを使います。 > +Mac 形式なら "[mac]" と表示されます。 +ファイル形式は 'fileformat' オプションに設定されます。現在のファイル形式を確認 +するには、次のコマンドを使います: > :set fileformat? -vimが使うのは次の3つの名前です +Vim では次の3つの名前が使われます: unix <LF> dos <CR><LF> mac <CR> -Macintoshフォーマットを使う ---------------------------- +Mac 形式を使う +-------------- -Unixでは、<LF>が改行です。行の途中に<CR>文字がくることは普通はありません。余 -談ですが、Unixでもvi(vimも)スクリプトでは<CR>が頻繁に現れます。 -一方、Macintoshでは<CR>が改行記号ですから行の途中に<LF>文字が出てくることも -ありえます。 -ということは、<CR>と<LF>の両方を含んでいるようなファイルがMac形式かUnix形式 -かを100%確実には区別できないのです。ですから、Unix上ではMac形式のファイルを -編集することはないものとみなし、このタイプのファイルチェックを行いません。 -それでも、Mac形式をチェックしたいのであれば、'fileformats'オプションに"mac" -を追加してください。 > +Unix では <LF> が改行文字です。行の途中に <CR> 文字がくることは普通はありませ +ん。ただし、Vi (と Vim) のスクリプトでは <CR> 文字が使われることがあります。 +Macintosh では <CR> が改行文字なので、行の途中に <LF> 文字を使うことができま +す。 +つまり、<CR> と <LF> を両方含んでいるファイルは、ファイル形式を 100% 確実に判 +別することはできません。 +そのため、Unix では Mac 形式の改行はチェックされません。おそらく、Unix で Mac +形式のファイルを編集することはあまりないでしょう。どうしても Mac 形式のファイ +ルを使いたい場合は 'fileformats' オプションに "mac" を追加してください。 > :set fileformats+=mac -こうすれば、ファイル形式のチェックを行います。ただ、vimがミスをする可能性が -あることはお忘れなく。 +これで、Mac 形式の改行が認識されるようになります。ただし、正しく認識できないこ +とがあるので注意してください。 -フォーマットルールの上書き (OVERRULING THE FORMAT) --------------------------- +ファイル形式を指定する +---------------------- -MS-DOS形式のファイルを古き良き時代のviで編集すると各行の行末に^M(=<CR>)の文 -字が表示されます。自動検出はこうならないようにしてくれます。でも、敢えて^Mを -表字したいのであれば、フォーマットルールを上書きする必要があります。 > +古き良き Vi で MS-DOS 形式のファイルを開くと、すべての行末に ^M が付きます。 +(^M = <CR>)。Vim では改行が自動認識されるので、そのようなことにはなりません。 +敢えて昔の動作を再現したい場合は、ファイル形式を指定してください: > :edit ++ff=unix file.txt -コマンドの中で"++"とオプションを指定して、オプションをデフォルト以外の値に設 -定することができます。"++ff"の"ff"は'fileformat'のことです。"++ff=mac"だとか -"++ff=dos"といった指定もできます。 -ただし、これはどのオプションでも使えるわけではありません。現在のところ"++ff" -と"++enc"だけを実装してあります。"++fileformat"と"++encoding" も使えます。 +"++" に続いてオプション名を指定することで、コマンドの設定を変更できます。 +'fileformat' なら "++ff" です。もちろん "++ff=mac" または "++ff=dos" と設定す +ることもできます。 +この方法ではすべてのオプションを設定できません。現在のところ "++ff" と "++enc" +だけが実装されています。"++fileformat" や "++encoding" のようにフルネームでも +指定できます。 -フォーマット変換 ----------------- +ファイル形式の変換 +------------------ -'fileformat'オプションを使ってあるフォーマットのファイルを別フォーマットに変 -換することができます。例えば、MS-DOS形式のREADME.TXTというファイルがあり、そ -れをUNIX形式に変換したいとします。まずMS-DOS形式のファイルを編集します。 > +'fileformat' オプションを使ってファイル形式を変換できます。例えば、README.TXT +を MS-DOS 形式から UNIX 形式に変換してみます。まず、MS-DOS 形式のファイルを開 +きます: > vim README.TXT -vimはこれがDOS形式であることを認識します。次にこのファイル形式をUNIX形式に変 -換します。 > +ファイル形式は自動的に認識されます。では、ファイル形式を変換しましょう: > :set fileformat=unix :write -ファイルはUnix形式で保存されます。 +ファイルは Unix 形式で保存されます。 ============================================================================== *23.2* インターネット上のファイル -誰かからファイルのある場所をURLで指定したEメールを受けとったとします。それ -がこのようなメールだったとします。 +誰かがあなたにメールを出しました。メールには URL が書いてあります。例: そのことならここに情報があったよ。 ~ ftp://ftp.vim.org/pub/vim/README ~ -何らかのアプリケーションを使ってこのファイルをダウンロードし、自分のマシンに -保存してからvimで編集する方法もあります。 -もっと簡単な方法があります。カーソルをそのURLのどこかに動かしてこのコマンド -を入力するのです。 > +他のプログラムを使ってファイルをダウンロードし、それを Vim で開いても構いませ +んが、もっと簡単な方法があります。カーソルを URL の上に移動して次のコマンドを +入力してください。 > gf -運が良ければ、vimはファイルをダウンロードするアプリを見つけ出して、ファイル -をダウンロードし、それを編集します。別のウィンドウでそのファイルを開くのであ -れば、"CTRL-W f"コマンドを使います。 -エラーメッセージが出てうまくいかない場合は、次のどれかでしょう。 - ・URLが間違っている。 - ・そのファイルをダウンロードする権限がない。 - ・ネットワークがダウンしている。 - ・などなど -残念ながら、エラーの理由を正しく説明することはほとんど不可能です。ファイルの -ダウンロードを手作業で行いたい場合もあるかもしれません。 +運が良ければ、ダウンロード用のプログラムが実行され、ダウンロードされたファイル +が開かれます。新しいウィンドウで開きたい場合は "CTRL-W f" を使ってください。 +ダウンロードが失敗してエラーメッセージが表示された場合は、次のような原因が考え +られます。 + - URL が間違っている。 + - アクセス権限がない。 + - ネットワークがダウンしている。 + - その他。 +残念ながら、エラーの原因を把握するのは非常に困難です。エラーが起きた場合は手作 +業でファイルをダウンロードしてください。 -インターネット経由でのファイルアクセスは netrw プラグインで行います。今のと -ころ、次のような形式のURLを取り扱うことができます。 +インターネット経由のファイルアクセスは netrw プラグインによって実行されます。 +現在、以下の形式の URL が認識可能です。 - ftp:// ftpを使う - rcp:// rcpを使う - scp:// scpを使う - http:// wgetを使う (取り込みのみ) + ftp:// ftp を使う + rcp:// rcp を使う + scp:// scp を使う + http:// wget を使う (読込専用) -vimは自分自身で通信を行うわけではありません。あなたのマシン上で使用可能なア -プリに依存しています。ほとんどのUnixシステムでは"ftp"と"rcp"は標準で用意され -ています。"scp"と"wget"はインストールされていないかもしれません。 +Vim 自身は通信機能を持っていません。インターネットアクセスは外部プログラムを +使って実行されます。"ftp" と "rcp" はほとんどの Unix システムで利用できるはず +です。"scp" と "wget" は別途インストールする必要があるかもしれません。 -vimのコマンドで、ファイルの編集を開始するコマンドは上で述べたURLを認識します。 -例えば、":edit"とか":split"などがそういったコマンドです。保存コマンドでもURL -は使えます。但し、"http://"は保存には使えません。 +":edit" や ":split" などのコマンドでファイルを開くときにも URL を指定できます。 +もちろん保存もできます (http:// は不可)。 -パスワードの件も含めて、もっと詳しいことについては|netrw|をご覧ください。 +パスワードの指定方法など、詳細は|netrw|を参照してください。 ============================================================================== *23.3* 暗号化 -情報によっては、自分自身で管理した方がよいものもあります。例えば、生徒も使う -マシン上でテスト問題を作成する場合を考えてください。テストが始まる前に問題を -読む方法を探し当ててしまうような賢い生徒は困りものです。vimではファイルを暗 -号化できます。これで多少なりとも防御になるでしょう。 - -暗号化したファイルを編集するにはvimの起動時に"-x"パラメタを指定します。例え -ば次の通りです。 > +情報を秘密にしたいことがあると思います。例えば、生徒と共有のコンピュータを使っ +てテストを作成している場合、賢い生徒にテスト問題を盗み見られてしまうようでは困 +ります。Vim の暗号化機能を使って情報を保護しましょう。 +ファイルを暗号化するには、Vim の起動引数に "-x" を指定します。例: > vim -x exam.txt -vimは暗号を解く時に、暗号化に使った鍵の文字列の入力を促します。 +プロンプトが表示されるので、ファイルを暗号化または複号するための鍵を入力してく +ださい: - Enter encryption key: ~ + 暗号化用のキーを入力してください: ~ -気をつけて秘密鍵を入力します。入力した文字は表示されず、代わりにアスタリスク -(*)を表示します。入力を間違った時にはエラーを発生するのではなく、次のような -再入力メッセージを表示します。 +慎重に秘密鍵を入力してください。入力した文字は表示されません。代りにスター (*) +が表示されます。入力ミスがあると大変なので、念のため、もう一度同じ鍵を入力して +ください: - Enter same key again: ~ + もう一度同じキーを入力してください: ~ -正しく入力すると、通常通りファイルを編集し、ないしょのことを全部書き込んでく -ださい。ファイルの編集を終え、vimを終了する時にはそのファイルは再度暗号化して -保存します。 -vimでこのファイルを再編集する時には、同じ鍵文字列の再入力を求められます。この -時は"-x"パラメタは不要です。もちろん":edit"コマンドも使えます。vimはファイル -に「魔法の文字列(magic string)」を埋め込むので、それが暗号化されているかどう -かを識別できるのです。 -他のプログラムからこのファイルを見ようとすると、全くのゴミファイルのように見 -えます。またvimでファイルを編集する時に違った鍵文字列を与えた場合もゴミファ -イルに見えます。vimではその鍵文字列が正しいかどうかをチェックする方法があり -ません。(これを実現するのは暗号を破るよりもはるかに難しいのです) +ファイルの編集方法は通常のファイルと同じです。秘密にしたいことを書き込んでくだ +さい。ファイルを保存すると、暗号化されて保存されます。 +次にそのファイルを Vim で開くと、鍵を入力するためのプロンプトが表示されます。 +既に暗号化されたファイルを開くときは "-x" 引数を指定する必要はありません。通常 +の ":edit" コマンドで開くこともできます。暗号化ファイルにはマジック文字列が埋 +め込まれているので、Vim は暗号化ファイルを認識できます。 +他のプログラムで暗号化ファイルを開くと、ゴミが表示されます。たとえ Vim で開い +たとしても、不正な鍵を使った場合は、やはりゴミが表示されます。鍵が正しいかどう +かを判断する機能は Vim にはありません (暗号をより強固なものにするため)。 -暗号化のon/offの切り換え ------------------------- +暗号化と解除 +------------ + +ファイルの暗号化を解除するには、'key' オプションに空文字を設定します: > -ファイルの暗号化を止めるには'key'オプションの内容を空文字列に設定します。 -> :set key= -この指定の後にファイルを保存すると暗号化せずに保存します。暗号化のために、こ -の'key'オプションを設定すると、パスワードが平文で表示されてしまいます。 -これだと誰でも肩越しにパスワードを盗むことができてしまいます。 -これを避けるため":X"コマンドを提供しています。これだと"-x"パラメタを指定した -時と同じように暗号化の鍵文字列を聞いてきます。 > +空に設定してからファイルを保存すると、暗号化されずに保存されます。 +'key' オプションに鍵を設定すれば暗号化を有効にできますが、それは安全ではありま +せん。パスワードがコマンドラインに表示されるので、肩越しに盗み見られてしまいま +す。 +安全に暗号化を有効にするには、":X" コマンドを使ってください。"-x" 引数を使った +ときと同じプロンプトが表示されます: > :X - Enter encryption key: ****** - Enter same key again: ****** + 暗号化用のキーを入力してください: ****** + もう一度同じキーを入力してください: ****** 暗号化の限界 ------------ -vimで利用している暗号アルゴリズムは決して強固なものではありません。お手軽な -クラッカーから内容を保護するには十分ですが、暗号のエキスパートがじっくり時間 -をかけて解析するのに耐えられる程ではありません。 -またスワップファイルが暗号化されない点も忘れてはいけません。Unixのようなマル -チユーザシステムではスーパーユーザ権限があれば、あなたが編集している文章を -スワップファイルを使えば暗号化していない状態で読めてしまいます。 -他の人がスワップファイルを見れないようにするため、敢えてスワップファイルを使 -わないという方法もあります。vimを実行する時に"-n"パラメタを指定すれば、スワッ -プファイルは作らなくなります(その代わり何でもメモリに置こうとします)例えば -暗号化した"file.txt"をスワップファイルなしで編集するには、このようなパラメタ -で起動します。 > +Vim の暗号アルゴリズムは脆弱です。いたずら小僧を撃退するには十分ですが、暗号エ +キスパートのハックには耐えられません。さらに、スワップファイルが暗号化されない +ことにも注意が必要です。ファイルを編集している間、スーパーユーザ権限さえあれば +誰でも平文のスワップファイルを読むことができます。 +スワップファイルを使わないというのも一つの手です。起動引数に "-n" を指定すれ +ば、スワップファイルは作成されなくなります (代わりにメモリが使われます)。例え +ば、暗号化した "file.txt" をスワップファイル無しで開くには、次のコマンドを使い +ます: > vim -x -n file.txt -既にファイルを編集中なら、こうすればスワップファイルを使わなくなります。 > +既にファイルを編集中なら、次のコマンドでスワップファイルを無効にできます: > :setlocal noswapfile -スワップファイルがないということは、リカバリが不可能だということです。編集結 -果を失わないように普段よりもちょっと多い目に保存コマンドを実行する方がよいで -しょう。 +スワップファイルが無いということは、リカバリできないということです。普段よりま +めにファイルを保存し、クラッシュによるリスクを抑えましょう。 -メモリ上ではファイルの内容は暗号化されません。マシンのメモリ内容を見る権限が -あれば、誰でもファイルの内容を知ることは可能です。viminfoファイルを使ってい -るのであれば、テキストレジスタの内容も暗号化されずに書き込まれる点にご注意く -ださい。 -もし本気でファイル内容をガードしたいのなら、ネットワークから切り離したマシン -で編集作業を行い、もっと強力な暗号化ツールで暗号化して、そのマシンを使わない -時は金庫に入れて保管してください。 +メモリ上のファイルは暗号化されていません。権限さえあれば誰でもエディタのメモリ +を調べてファイルの内容を知ることができます。 +viminfo ファイルを使っている場合、レジスタの中身が平文で保存されることにも注意 +が必要です。 +本気でファイルを秘密にしたいなら、ネットワークから切り離したマシンで作業し、強 +力な暗号化ツールを使い、そのマシンを使わないときは金庫に入れておきましょう。 ============================================================================== *23.4* バイナリファイル -Vimではバイナリファイルを編集することもできます。それ専用に作られているわけで -はないので、若干の制限があります。それでもファイルを読み込み、バイトシーケンス -を変更し、結果を保存することはできます。ただしバイナリファイルの編集では1バイ -トを変更しただけでも、ファイルとしての意味が全く別のものになってしまう場合があ -ります。 -Vimが変に気をきかさないようにするためには、vimを"-b"パラメタ付きで起動します。 -> +Vim はバイナリファイルを編集できます。専用ツールではないので若干の制限はありま +すが、ファイルを読み込み、編集し、保存できます。 +Vim の便利な (そして今は邪魔な) 機能を無効にするために、"-b" 引数を付けて Vim +を起動してください: > + vim -b datafile -これは'binary'オプションをonにします。その結果、予期しないような副作用が起こ -らないようにしてくれます。例えば、'textwidth'を0に初期化します。これは行桁 -数を自動的に揃えるのを避けるのに必要です。ファイルは常にUnix形式で読み込みま -れます。 +'binary' オプションがオンになります。これにより、余計な機能が無効になります。 +例えば、'textwidth' が 0 に設定され、自動整形が無効になります。そして、ファイ +ルは Unix 形式で読み込まれます。 -バイナリモードはプログラム内のメッセージを変更する時などに使えます。文字数を -増やしたり減らしたりしないように気を付けてください。そうでないとプログラムが -動かなくなってしまうかもしれません。"R"の置換モードを使うのがよいでしょう。 +バイナリモードを使うと、例えば実行ファイルのメッセージを変更できます。ただし、 +文字を挿入したり削除したりするとプログラムが動かなくなってしまうので注意してく +ださい。"R" コマンドの置換モードを使いましょう。 -ファイル内の文字の多くが非表示文字となっているでしょう。これを16進数で見るに -は、このようにします。 > +バイナリファイルには非印字可能文字がたくさんあります。これを 16 進数で表示する +には、次のように設定してください: > :set display=uhex -この他に、調べたい文字にカーソルを移動し"ga"コマンドを使うことで、その値を知 -る方法もあります。例えば、カーソルが<Esc>の上にあれば、次のような表示となり -ます。 +あるいは、調べたい文字にカーソルを移動して "ga" コマンドを使います。例えば、 +<Esc> の上で "ga" を実行すると、次のように表示されます: <^[> 27, Hex 1b, Octal 033 ~ -ファイルに多くの改行コードを含んでいるかも知れません。概略を見たいのなら、 -'wrap'オプションをoffにします。 > +ファイルに含まれている改行コードが少ない場合、'wrap' オプションをオフにすると +全体をざっくり眺めることができます: > :set nowrap @@ -290,19 +271,18 @@ Vimが変に気をきかさないようにするためには、vimを"-b"パラ バイト位置 ---------- -今現在、ファイルの何バイト目にいるかを知るには、このコマンドを使います。 > +次のコマンドで現在のカーソル位置をバイト単位で表示できます: > g CTRL-G -出力はやや長くなります。 +冗長なメッセージが表示されます: - Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~ + 列 9-16 / 9-16; 行 277 / 330; 単語 1806 / 2058; バイト 10580 / 12206 ~ -最後の2つの数字がファイル中のバイト位置と、全バイト数です。例えばです、 -'fileformat'の設定で、どのように改行の数が変化してしまうかを数値で見ることが -できます。 -ファイルの特定のバイト位置に移動するには"go"コマンドを使います。例えば、2345 -バイト目にジャンプしたければ、このようにします。 > +末尾の数字に注目してください。カーソルの位置とファイルの大きさがバイト単位で表 +示されています。'fileformat' の設定による改行の種類もちゃんと考慮されています。 +指定したバイト位置に移動するには "go" コマンドを使います。例えば、2345 バイト +目に移動するには、次のようにします: > 2345go @@ -310,52 +290,51 @@ Vimが変に気をきかさないようにするためには、vimを"-b"パラ XXDを使う --------- -本物のバイナリエディタでは内容を2通りで表示してくれます。1つは文字そのもの -で、もう1つは16進数表記です。vimでも標準添付の"xxd"プログラムを使ってファイ -ルを変換すれば、同じことができます。 -まず、ファイルをバイナリモードで開きます。 > +本物のバイナリエディタは、テキスト表示と 16 進表示の二通りの方法でファイルを表 +示します。"xxd" を使ってファイルを変換すれば Vim でも同じように表示できます。 +"xxd" は Vim に付属しています。 +まず、ファイルをバイナリモードで開いてください: > vim -b datafile -次にxxdを使って16進数ダンプ形式のファイルにします。 > +そして、xxd を使って16進数ダンプ形式に変換します: > :%!xxd -ファイル内容は次のようになります。 +テキストは次のように変換されます: 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ -これで、ファイルを好きなように編集することができます。vimはこれを普通のテキ -ストと同じように扱います。16進数部分を変更しても右側の文字表示は変りませんし -その逆も同様です。 -> +あとは、好きなようにテキストを編集してください。普通のテキストを編集するのと同 +じです。16 進数部分を変更しても、テキスト部分は更新されません。逆も同様です。 +編集が済んだら変換し、テキストに戻します: > + :%!xxd -r -xxdは16進数の部分だけに着目して処理を行います。右側の文字表示部分を変更して -も無視します。 +16 進数部分への変更だけが反映されます。右側のテキスト部分への変更は無視されま +す。 -See the manual page of xxd for more information. -さらに詳しいことについては"xxd"のマニュアル(man pages)をご覧ください。 +詳細は xxd のマニュアルを参照してください。 ============================================================================== -*23.5* 圧縮済ファイル +*23.5* 圧縮ファイル -これは簡単です。圧縮してあるファイルであっても他のファイルと全く同じように編 -集できます。ファイルを編集する時に、"gzip"プラグインが解凍の面倒を見てくれま -す。また保存する時はその逆をやってくれます。 -現バージョンでサポートしている圧縮形式は次の通りです。 +これは簡単です。圧縮ファイルを編集するのに特別な操作は必要ありません。ただファ +イルを開くだけです。"gzip" プラグインが展開の面倒をみてくれます。ファイルを保 +存すれば勝手に圧縮してくれます。 +現在、以下の圧縮形式がサポートされています: .Z compress .gz gzip .bz2 bzip2 -実際の圧縮/解凍作業には上に掲げたプログラムを使います。形式によっては最初に -プログラムをインストールする必要があるかもしれません。 +実際の圧縮と展開には上記のプログラムが使われます。無い場合は別途インストールし +てください。 ============================================================================== -Next chapter: |usr_24.txt| 素早く挿入する +次章: |usr_24.txt| 効率的な入力 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: From 3461e91cab6aa9c3b03c104ec5fbd4b472bbfa27 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Mon, 28 May 2007 09:09:32 +0000 Subject: [PATCH 083/783] fix: update usr_02 to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@83 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/usr_02.txt | 64 ++++++++++++++++++++++++++++++++++++++++++++++-- ja/usr_02.jax | 68 ++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 126 insertions(+), 6 deletions(-) diff --git a/en/usr_02.txt b/en/usr_02.txt index 2b3dd788a..a00c26fa2 100644 --- a/en/usr_02.txt +++ b/en/usr_02.txt @@ -1,4 +1,4 @@ -*usr_02.txt* For Vim version 7.0. Last change: 2006 Apr 24 +*usr_02.txt* For Vim version 7.1. Last change: 2007 Feb 28 VIM USER MANUAL - by Bram Moolenaar @@ -302,7 +302,7 @@ edited. Typing this command twice cancels the preceding "U". The "U" command is a change by itself, which the "u" command undoes and CTRL-R redoes. This might be a bit confusing. Don't worry, with "u" and CTRL-R you -can go to any of the situations you had. More about that in section ||. +can go to any of the situations you had. More about that in section |32.1|. ============================================================================== *02.6* Other editing commands @@ -497,6 +497,66 @@ You can use the error ID at the start to find help about it: > :help E37 + +Summary: *help-summary* > + :help +< Gives you very general help. Scroll down to see a list of all + helpfiles, including those added locally (i.e. not distributed + with Vim). > + :help user-toc.txt +< Table of contents of the User Manual. > + :help :subject +< Ex-command "subject", for instance the following: > + :help :help +< Help on getting help. > + :help abc +< normal-mode command "abc". > + :help CTRL-B +< Control key <C-B> in Normal mode. > + :help i_abc + :help i_CTRL-B +< The same in Insert mode. > + :help v_abc + :help v_CTRL-B +< The same in Visual mode. > + :help c_abc + :help c_CTRL-B +< The same in Command-line mode. > + :help 'subject' +< Option 'subject'. > + :help subject() +< Function "subject". > + :help -subject +< Command-line option "-subject". > + :help +subject +< Compile-time feature "+subject'. > + :help EventName +< Autocommand event "EventName". > + :help digraphs.txt +< The top of the helpfile "digraph.txt". + Similarly for any other helpfile. > + :help pattern<Tab> +< Find a help tag starting with "pattern". Repeat <Tab> for + others. > + :help pattern<Ctrl-D> +< See all possible help tag matches "pattern" at once. > + :helpgrep pattern +< Search the whole text of all help files for pattern "pattern". + Jumps to the first match. Jump to other matches with: > + :cn +< next match > + :cprev + :cN +< previous match > + :cfirst + :clast +< first or last match > + :copen + :cclose +< open/close the quickfix window; press <Enter> to jump + to the item under the cursor + + ============================================================================== Next chapter: |usr_03.txt| Moving around diff --git a/ja/usr_02.jax b/ja/usr_02.jax index 6ffa78e3b..dccdfe3e0 100644 --- a/ja/usr_02.jax +++ b/ja/usr_02.jax @@ -1,9 +1,10 @@ COMMENT: 編集するために必要な最低限の情報 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*usr_02.txt* For Vim version 7.0. Last change: 2006 Apr 24 +*usr_02.txt* For Vim version 7.1. Last change: 2007 Feb 28 VIM USER MANUAL - by Bram Moolenaar @@ -310,8 +311,7 @@ xxxxxxx と入力し、"A young"を削除します。結果は次のようにな "u"がアンドゥで、 CTRL-R がリドゥであるのに対し、"U"コマンドはそれ自身が変更 コマンドです。ちょっとわかりにくいかも知れませんが、心配はいりません。"u"と -CTRL-Rがあればどんな場合でも大丈夫だ、ってことです。詳細は || にあります。 -訳注: 原文抜け +CTRL-Rがあればどんな場合でも大丈夫だ、ってことです。詳細は |32.1| にあります。 ============================================================================== *02.6* 他の編集コマンド @@ -505,6 +505,66 @@ Vimでは数多くのオプションがあり、それを設定することで :help E37 +サマリー: *help-summary* > + + :help +< 一般的なヘルプを表示します。下へスクロールすると、全てのヘルプ + ファイルの一覧を表示します。ここには独自に追加された、Vim標準 + には添付されていないヘルプファイルも含まれます。 > + :help user-toc.txt +< ユーザーマニュアルの目次を表示します。 > + :help :subject +< Exコマンド"subject"のヘルプ。例えば次のようなもの: > + :help :help +< ヘルプの探し方のヘルプ。 > + :help abc +< ノーマルモードコマンド"abc"のヘルプ。 > + :help CTRL-B +< ノーマルモードコマンドにおけるキー<C-b>のヘルプ。 > + :help i_abc + :help i_CTRL-B +< インサートモードにおける特定のキーのヘルプ。 > + :help v_abc + :help v_CTRL-B +< ビジュアルモードにおける特定のキーのヘルプ。 > + :help c_abc + :help c_CTRL-B +< コマンドラインモードにおける特定のキーのヘルプ。 > + :help 'subject' +< オプション'subject'のヘルプ。 > + :help subject() +< 関数"subject"のヘルプ。 > + :help -subject +< コマンドラインオプション"-subject"のヘルプ。 > + :help +subject +< コンパイル時機能"+subject"のヘルプ。 > + :help EventName +< 自動コマンドイベント"EventName"のヘルプ。 > + :help digraphs.txt +< ヘルプファイル"digraph.txt"のトップ。 + 他のヘルプファイルについても同様。 > + :help pattern<Tab> +< "pattern"で始まるヘルプタグを検索。<Tab>を繰り返し押すと他の候 + 補を検索する。 > + :help pattern<Ctrl-D> +< "pattern"にマッチするヘルプタグを全て表示する。 > + :helpgrep pattern +< 全ヘルプファイルの全テキストからパターン"pattern"を検索し、最 + 初のマッチへジャンプする。他のマッチへジャンプするには以下のコ + マンドを使う: > + :cn +< 次のマッチへ > + :cprev + :cN +< 前のマッチへ > + :cfirst + :clast +< 最初/最後のマッチへ > + :copen + :cclose +< quickfixウィンドウを開く/閉じる。quickfixウィンドウで + <Enter>を押すと、カーソル下の要素へジャンプする。 + ============================================================================== 次章: |usr_03.txt| カーソルの移動 From d89d5255096523b8f77f3853d86aa9480d66e932 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 2 Jun 2007 10:51:37 +0000 Subject: [PATCH 084/783] fix: update quickfix to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@84 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/quickfix.txt | 47 ++++++++++++++++++++++++++++++++-------- ja/quickfix.jax | 57 ++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 82 insertions(+), 22 deletions(-) diff --git a/en/quickfix.txt b/en/quickfix.txt index 73a34be0f..a40cb9e49 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*quickfix.txt* For Vim version 7.1. Last change: 2007 May 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -178,15 +178,16 @@ command with 'l'. current window is used instead of the quickfix list. *:cb* *:cbuffer* *E681* -:cb[uffer] [bufnr] Read the error list from the current buffer. +:cb[uffer][!] [bufnr] Read the error list from the current buffer. When [bufnr] is given it must be the number of a loaded buffer. That buffer will then be used instead of the current buffer. A range can be specified for the lines to be used. Otherwise all lines in the buffer are used. + See |:cc| for [!]. *:lb* *:lbuffer* -:lb[uffer] [bufnr] Same as ":cbuffer", except the location list for the +:lb[uffer][!] [bufnr] Same as ":cbuffer", except the location list for the current window is used instead of the quickfix list. *:cgetb* *:cgetbuffer* @@ -431,10 +432,10 @@ lists, use ":cnewer 99" first. errorfile (for Unix it is also echoed on the screen). 5. The errorfile is read using 'errorformat'. - 6. If [!] is not given the first error is jumped to. - 7. The errorfile is deleted. - 8. If vim was built with |+autocmd|, all relevant + 6. If vim was built with |+autocmd|, all relevant |QuickFixCmdPost| autocommands are executed. + 7. If [!] is not given the first error is jumped to. + 8. The errorfile is deleted. 9. You can now move through the errors with commands like |:cnext| and |:cprevious|, see above. This command does not accept a comment, any " @@ -714,6 +715,17 @@ not "b:current_compiler". What the command actually does is the following: For writing a compiler plugin, see |write-compiler-plugin|. +GCC *quickfix-gcc* *compiler-gcc* + +There's one variable you can set for the GCC compiler: + +g:compiler_gcc_ignore_unmatched_lines + Ignore lines that don't match any patterns + defined for GCC. Useful if output from + commands run from make are generating false + positives. + + MANX AZTEC C *quickfix-manx* *compiler-manx* To use Vim with Manx's Aztec C compiler on the Amiga you should do the @@ -1233,15 +1245,32 @@ additionally to the default. > Jikes(TM) produces a single-line error message when invoked with the option "+E", and can be matched with the following: > - :set efm=%f:%l:%v:%*\\d:%*\\d:%*\\s%m + :setl efm=%f:%l:%v:%*\\d:%*\\d:%*\\s%m < *errorformat-javac* This 'errorformat' has been reported to work well for javac, which outputs a line with "^" to indicate the column of the error: > - :set efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%# + :setl efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%# or: > - :set efm=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%# + :setl efm=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%# < +Here is an alternative from Michael F. Lamb for Unix that filters the errors +first: > + :setl errorformat=%Z%f:%l:\ %m,%A%p^,%-G%*[^sl]%.%# + :setl makeprg=javac\ %\ 2>&1\ \\\|\ vim-javac-filter + +You need to put the following in "vim-javac-filter" somewhere in your path +(e.g., in ~/bin) and make it executable: > + #!/bin/sed -f + /\^$/s/\t/\ /g;/:[0-9]\+:/{h;d};/^[ \t]*\^/G; + +In English, that sed script: +- Changes single tabs to single spaces and +- Moves the line with the filename, line number, error message to just after + the pointer line. That way, the unused error text between doesn't break + vim's notion of a "multi-line message" and also doesn't force us to include + it as a "continuation of a multi-line message." + *errorformat-ant* For ant (http://jakarta.apache.org/) the above errorformat has to be modified to honour the leading [javac] in front of each javac output line: > diff --git a/ja/quickfix.jax b/ja/quickfix.jax index b13ff1b13..726663604 100644 --- a/ja/quickfix.jax +++ b/ja/quickfix.jax @@ -1,9 +1,9 @@ COMMENT: クイックフィックス(プログラム開発支援) -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*quickfix.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*quickfix.txt* For Vim version 7.1. Last change: 2007 May 10 VIMリファレンスマニュアル by Bram Moolenaar @@ -170,14 +170,15 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる ウィンドウのロケーションリストが使われる。 *:cb* *:cbuffer* *E681* -:cb[uffer] [bufnr] カレントバッファからエラーリストを読み込む。[bufnr]を +:cb[uffer][!] [bufnr] カレントバッファからエラーリストを読み込む。[bufnr]を 指定すると、カレントバッファの代わりにそのバッファが使 われる。bufnrには読み込まれているバッファ番号を指定しな ければならない。範囲を指定すると、読み込む行を指定する ことができる。範囲指定がないとバッファ全体が使われる。 + [!]については|:cc|を参照。 *:lb* *:lbuffer* -:lb[uffer] [bufnr] ":cbuffer"と同様だが、QuickFixリストでなく、カレント +:lb[uffer][!] [bufnr] ":cbuffer"と同様だが、QuickFixリストでなく、カレント ウィンドウのロケーションリストが使われる。 *:cgetb* *:cgetbuffer* @@ -408,11 +409,11 @@ BufWinEnterイベントも発生する。ここでもバッファ名は"quickfix 出力がerrorfileに保存される(Unixではそれも画面に echoされる)。 5. 'errorformat'を使ってerrorfileが読みこまれる。 - 6. [!]が与えられていないときは最初のエラーに移動する。 - 7. エラーファイルが削除される。 - 8. vimが|+autocmd|つきでビルドされているならば、 + 6. vimが|+autocmd|つきでビルドされているならば、 |QuickFixCmdPost|に関連付けられた自動コマンドが全て 実行される。 + 7. [!]が与えられていないときは最初のエラーに移動する。 + 8. エラーファイルが削除される。 9.|:cnext|や|:cprevious|などのコマンドでエラー間を移動 できる。上を参照。 このコマンドは如何なるコメントも受けつけず、どんな " @@ -681,6 +682,17 @@ piler"でなく"current_compiler"を使う。このコマンドが実際に行 コンパイラプラグインを書くためには|write-compiler-plugin|を参照せよ。 +GCC *quickfix-gcc* *compiler-gcc* + +GCC用に設定できる変数は1つある: + +g:compiler_gcc_ignore_unmatched_lines + GCC用に定義されたどのパターンにもマッチしない + 行を無視する。makeから起動されたコマンドの出力 + のせいで誤検出(false positive)が発生してしまう + ときに有用である。 + + MANX AZTEC C *quickfix-manx* *compiler-manx* Amiga上でManx's Aztec C compilerとともにVimを使うには次のようにする: @@ -795,7 +807,7 @@ opmode"をサポートしていなければ、コマンドラインから\nonsto %n エラー番号(数字を検索) %m エラーメッセージ(文字列を検索) %r その行の残り全部 %O/%P/%Q - %p ポインタライン('-', '.', ' 'の列を検索し、その長さを桁 + %p ポインタ行('-', '.', ' 'の列を検索し、その長さを桁 番号とする) %*{conv} scanfに割り当てられない変換 %% 1個のリテラル'%' @@ -1183,15 +1195,34 @@ IBM Researchによって公開されているJavaコンパイラーJikes(TM)は Jikes(TM)はオプション"+E"とともに起動されたときは1行エラーメッセージを出力す る。これは次によってマッチできる。 - :set efm=%f:%l:%v:%*\\d:%*\\d:%*\\s%m + :setl efm=%f:%l:%v:%*\\d:%*\\d:%*\\s%m *errorformat-javac* この'errorformat'は、エラーの桁を示すのに"^"の行を出力するjavac用にうまく動作 -すると報告されている: - :set efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%# -または: - :set efm=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%# +すると報告されている: > + :setl efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%# +または: > + :setl efm=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%# < +Michael F. Lambが考案した別の方法を以下に示す。これはUnix用で、最初にエラーを +フィルタリングする: > + :setl errorformat=%Z%f:%l:\ %m,%A%p^,%-G%*[^sl]%.%# + :setl makeprg=javac\ %\ 2>&1\ \\\|\ vim-javac-filter + +以下の行を"vim-javac-filter"というファイルに書いて、PATHの通ったディレクトリ( +例えば~/bin)に置き、実行可能にしておく必要がある: > + #!/bin/sed -f + /\^$/s/\t/\ /g;/:[0-9]\+:/{h;d};/^[ \t]*\^/G; + +訳注: BSD sed では動作しないようです。GNU sed では動作します。 + +このsedスクリプトを言葉で説明すると次のようになる: +- 1つのタブを1つのスペースに置換し、 +- ファイル名・行番号・エラーメッセージを含む行をポインタ行("^"の行のこと)の直 + 後に移動する。これによって、エラーメッセージ行とポインタ行の間の使われないテ + キストが無視され、vimの「複数行メッセージ」の記法にマッチするようになり、ま + た、それを「複数行メッセージの継続」として含めなくてもよいようになる。 + *errorformat-ant* ant(http://jakarta.apache.org/)用には、各javacの出力行の前につく[javac]を受け 取るために、上のエラーフォーマットを修正しなければならない: From de6003a708ccd6a50bb68436937377db701a2a6d Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sun, 3 Jun 2007 11:53:27 +0000 Subject: [PATCH 085/783] fix: update autocmd, windows, indent to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@85 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/autocmd.txt | 58 +++++++++++++++++++++++++++++++++----------------- en/indent.txt | 33 +++++++++++++++++++++++++--- en/windows.txt | 11 ++++++++-- ja/autocmd.jax | 58 +++++++++++++++++++++++++++++++++++--------------- ja/indent.jax | 28 ++++++++++++++++++++++-- ja/windows.jax | 9 +++++++- 6 files changed, 153 insertions(+), 44 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index 1144af847..978686a3a 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.0. Last change: 2006 May 06 +*autocmd.txt* For Vim version 7.1. Last change: 2007 Mar 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -263,7 +263,7 @@ Name triggered by ~ Startup and exit |VimEnter| after doing all the startup stuff |GUIEnter| after starting the GUI successfully -|TermResponse| after the termainal response to |t_RV| is received +|TermResponse| after the terminal response to |t_RV| is received |VimLeavePre| before exiting Vim, before writing the viminfo file |VimLeave| before exiting Vim, after writing the viminfo file @@ -279,6 +279,7 @@ Name triggered by ~ |FuncUndefined| a user function is used but it isn't defined |SpellFileMissing| a spell file is used but it can't be found |SourcePre| before sourcing a Vim script +|SourceCmd| before sourcing a Vim script |Cmd-event| |VimResized| after the Vim window size changed |FocusGained| Vim got input focus @@ -460,6 +461,9 @@ CursorHold When the user doesn't press a key for the time make some coffee. :) See |CursorHold-example| for previewing tags. This event is only triggered in Normal mode. + It is not triggered when waiting for a command + argument to be typed, or a movement after an + operator. While recording the CursorHold event is not triggered. |q| Note: Interactive commands cannot be used for @@ -527,8 +531,6 @@ FileChangedShell When Vim notices that the modification time of and the buffer was not changed. If a FileChangedShell autocommand is present the warning message and prompt is not given. - This is useful for reloading related buffers - which are affected by a single command. The |v:fcs_reason| variable is set to indicate what happened and |v:fcs_choice| can be used to tell Vim what to do next. @@ -560,7 +562,8 @@ FileReadPost After reading a file with a ":read" command. *FileReadPre* FileReadPre Before reading a file with a ":read" command. *FileType* -FileType When the 'filetype' option has been set. +FileType When the 'filetype' option has been set. The + pattern is matched against the filetype. <afile> can be used for the name of the file where this option was set, and <amatch> for the new value of 'filetype'. @@ -616,8 +619,9 @@ FocusLost When Vim lost input focus. Only for the GUI *FuncUndefined* FuncUndefined When a user function is used but it isn't defined. Useful for defining a function only - when it's used. Both <amatch> and <afile> are - set to the name of the function. + when it's used. The pattern is matched + against the function name. Both <amatch> and + <afile> are set to the name of the function. See |autoload-functions|. *GUIEnter* GUIEnter After starting the GUI successfully, and after @@ -625,6 +629,12 @@ GUIEnter After starting the GUI successfully, and after VimEnter when using gvim. Can be used to position the window from a .gvimrc file: > :autocmd GUIEnter * winpos 100 50 +< *GUIFailed* +GUIFailed After starting the GUI failed. Vim may + continue to run in the terminal, if possible + (only on Unix and alikes, when connecting the + X server fails). You may want to quit Vim: > + :autocmd GUIFailed * qall < *InsertChange* InsertChange When typing <Insert> while in Insert or Replace mode. The |v:insertmode| variable @@ -632,8 +642,8 @@ InsertChange When typing <Insert> while in Insert or Be careful not to move the cursor or do anything else that the user does not expect. *InsertEnter* -InsertEnter When starting Insert mode. Also for Replace - mode and Virtual Replace mode. The +InsertEnter Just before starting Insert mode. Also for + Replace mode and Virtual Replace mode. The |v:insertmode| variable indicates the mode. Be careful not to move the cursor or do anything else that the user does not expect. @@ -656,7 +666,7 @@ MenuPopup Just before showing the popup menu (under the QuickFixCmdPre Before a quickfix command is run (|:make|, |:lmake|, |:grep|, |:lgrep|, |:grepadd|, |:lgrepadd|, |:vimgrep|, |:lvimgrep|, - |:vimgrepadd|, |:vimgrepadd|). The pattern is + |:vimgrepadd|, |:lvimgrepadd|). The pattern is matched against the command being run. When |:grep| is used but 'grepprg' is set to "internal" it still matches "grep". @@ -670,7 +680,8 @@ QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix location. *RemoteReply* RemoteReply When a reply from a Vim that functions as - server was received |server2client()|. + server was received |server2client()|. The + pattern is matched against the {serverid}. <amatch> is equal to the {serverid} from which the reply was sent, and <afile> is the actual reply string. @@ -690,10 +701,17 @@ ShellFilterPost After executing a shell command with Can be used to check for any changed files. *SourcePre* SourcePre Before sourcing a Vim script. |:source| + <afile> is the name of the file being sourced. + *SourceCmd* +SourceCmd When sourcing a Vim script. |:source| + <afile> is the name of the file being sourced. + The autocommand must source this file. + |Cmd-event| *SpellFileMissing* SpellFileMissing When trying to load a spell checking file and - it can't be found. <amatch> is the language, - 'encoding' also matters. See + it can't be found. The pattern is matched + against the language. <amatch> is the + language, 'encoding' also matters. See |spell-SpellFileMissing|. *StdinReadPost* StdinReadPost After reading from the stdin into the buffer, @@ -727,7 +745,8 @@ SwapExists Detected an existing swap file when starting Note: Do not try to change the buffer, the results are unpredictable. *Syntax* -Syntax When the 'syntax' option has been set. +Syntax When the 'syntax' option has been set. The + pattern is matched against the syntax name. <afile> can be used for the name of the file where this option was set, and <amatch> for the new value of 'syntax'. @@ -1219,8 +1238,8 @@ highlighting when starting Vim. *Cmd-event* When using one of the "*Cmd" events, the matching autocommands are expected to -do the file reading or writing. This can be used when working with a special -kind of file, for example on a remote system. +do the file reading, writing or sourcing. This can be used when working with +a special kind of file, for example on a remote system. CAREFUL: If you use these events in a wrong way, it may have the effect of making it impossible to read or write the matching files! Make sure you test your autocommands properly. Best is to use a pattern that will never match a @@ -1233,9 +1252,10 @@ possible with a BufReadCmd, use the |:preserve| command to make sure the original file isn't needed for recovery. You might want to do this only when you expect the file to be modified. -The |v:cmdarg| variable holds the "++enc=" and "++ff=" argument that are -effective. These should be used for the command that reads/writes the file. -The |v:cmdbang| variable is one when "!" was used, zero otherwise. +For file read and write commands the |v:cmdarg| variable holds the "++enc=" +and "++ff=" argument that are effective. These should be used for the command +that reads/writes the file. The |v:cmdbang| variable is one when "!" was +used, zero otherwise. See the $VIMRUNTIME/plugin/netrw.vim for examples. diff --git a/en/indent.txt b/en/indent.txt index e00358334..d75595737 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*indent.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -113,7 +113,7 @@ If you really want to reindent when you type 'o', 'O', 'e', '0', '<', '>', "<!>", respectively, for those keys. For an emacs-style indent mode where lines aren't indented every time you -press Enter but only if you press Tab, I suggest: +press <Enter> but only if you press <Tab>, I suggest: :set cinkeys=0{,0},:,0#,!<Tab>,!^F You might also want to switch off 'autoindent' then. @@ -434,10 +434,15 @@ assume a 'shiftwidth' of 4. limits the time needed to search for the start of a comment. (default 30 lines). + #N When N is non-zero recognize shell/Perl comments, starting with + '#'. Default N is zero: don't recognizes '#' comments. Note + that lines starting with # will still be seen as preprocessor + lines. + The defaults, spelled out in full, are: cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,c3,C0, - /0,(2s,us,U0,w0,W0,m0,j0,)20,*30 + /0,(2s,us,U0,w0,W0,m0,j0,)20,*30,#0 Vim puts a line in column 1 if: - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. @@ -510,6 +515,28 @@ Indent for a continuation line: > let g:pyindent_continue = '&sw * 2' +SHELL *ft-sh-indent* + +The amount of indent applied under various circumstances in a shell file can +be configured by setting the following keys in the |Dictionary| +b:sh_indent_defaults to a specific amount or to a |Funcref| that references a +function that will return the amount desired: + +b:sh_indent_options['default'] Default amount of indent. + +b:sh_indent_options['continuation-line'] + Amount of indent to add to a continued line. + +b:sh_indent_options['case-labels'] + Amount of indent to add for case labels. + +b:sh_indent_options['case-statement'] + Amount of indent to add for case statements. + +b:sh_indent_options['case-breaks'] + Amount of indent to add (or more likely + remove) for case breaks. + VERILOG *ft-verilog-indent* General block statements such as if, for, case, always, initial, function, diff --git a/en/windows.txt b/en/windows.txt index fb4a3b436..76c331060 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 7.0. Last change: 2006 Apr 24 +*windows.txt* For Vim version 7.1. Last change: 2007 Mar 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -200,6 +200,7 @@ window will appear. :vert[ical] {cmd} Execute {cmd}. If it contains a command that splits a window, it will be split vertically. + Doesn't work for |:execute| and |:normal|. :lefta[bove] {cmd} *:lefta* *:leftabove* :abo[veleft] {cmd} *:abo* *:aboveleft* @@ -207,6 +208,7 @@ window will appear. it will be opened left (vertical split) or above (horizontal split) the current window. Overrules 'splitbelow' and 'splitright'. + Doesn't work for |:execute| and |:normal|. :rightb[elow] {cmd} *:rightb* *:rightbelow* :bel[owright] {cmd} *:bel* *:belowright* @@ -214,6 +216,7 @@ window will appear. it will be opened right (vertical split) or below (horizontal split) the current window. Overrules 'splitbelow' and 'splitright'. + Doesn't work for |:execute| and |:normal|. *:topleft* *E442* :to[pleft] {cmd} @@ -221,6 +224,7 @@ window will appear. it will appear at the top and occupy the full width of the Vim window. When the split is vertical the window appears at the far left and occupies the full height of the Vim window. + Doesn't work for |:execute| and |:normal|. *:botright* :bo[tright] {cmd} @@ -228,6 +232,7 @@ window will appear. it will appear at the bottom and occupy the full width of the Vim window. When the split is vertical the window appears at the far right and occupies the full height of the Vim window. + Doesn't work for |:execute| and |:normal|. These command modifiers can be combined to make a vertically split window occupy the full height. Example: > @@ -447,6 +452,8 @@ CTRL-W T Move the current window to a new tab page. This fails if *CTRL-W_=* CTRL-W = Make all windows (almost) equally high and wide, but use 'winheight' and 'winwidth' for the current window. + Windows with 'winfixheight' set keep their height and windows + with 'winfixwidth' set keep their width. :res[ize] -N *:res* *:resize* *CTRL-W_-* CTRL-W - Decrease current window height by N (default 1). @@ -1118,7 +1125,7 @@ list of buffers. |unlisted-buffer| of windows opened ('winwidth' if |:vertical| was prepended). Buf/Win Enter/Leave autocommands are not executed for the new windows here, that's only done when they are really entered. - When the |:tab| modifier is used new windows are opended in a + When the |:tab| modifier is used new windows are opened in a new tab, up to 'tabpagemax'. Note: All the commands above that start editing another buffer, keep the diff --git a/ja/autocmd.jax b/ja/autocmd.jax index f96a2b644..311b077c1 100644 --- a/ja/autocmd.jax +++ b/ja/autocmd.jax @@ -5,7 +5,7 @@ TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*autocmd.txt* For Vim version 7.0. Last change: 2006 May 06 +*autocmd.txt* For Vim version 7.1. Last change: 2007 Mar 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -294,6 +294,7 @@ Vimは以下のイベントを認識する。イベント名が大文字か小 たとき |SpellFileMissing| スペリングファイルを使おうとしたが見つからなかったとき |SourcePre| Vimスクリプトを読み込む前 +|SourceCmd| Vimスクリプトを読み込む前 |Cmd-event| |VimResized| Vimのウィンドウサイズが変わったとき |FocusGained| Vimが入力フォーカスを得たとき @@ -478,6 +479,11 @@ CursorHold 'updatetime' の時間の間、ユーザがキーを押さな タグをプレビューするためには、 |CursorHold-example| を参照。 このイベントはノーマルモードのときのみ呼ばれる。 + コマンドの引数の入力待ち状態、またはオペレータ + の後の移動コマンド入力待ち状態のときは発生しな + い。 + レコーディングの最中にはCursorHoldイベントは発 + 生しない。|q| Note: このイベントには対話的なコマンドは使えな いことに注意。「続けるには」プロンプトは現れず、 スクリーンは必要に応じて直接更新される。 @@ -541,8 +547,9 @@ FileChangedShell ファイルのタイムスタンプが、ファイルの編 かつバッファが変更されていないときには使われな い。もし FileChangedShell の autocommand が存 在しても、警告メッセージやプロンプトは現れない。 - これは、単一のコマンドに影響を受ける、複数の関 - 連バッファを再読み込みするのに便利である。 + 変数|v:fcs_reason|に何が起こったのかが設定され + 、|v:fcs_choice|によってVimに次に何をすべきか + を指示できる。 NOTE: このイベントで autocommand が実行された ときは、"%" で表されるカレントバッファと "<afile>" で表される解放されるバッファとは異な @@ -572,6 +579,7 @@ FileReadPost コマンド ":read" でファイルを読み込んだ後。 FileReadPre コマンド ":read" でファイルを読み込む前。 *FileType* FileType オプション 'filetype' が設定されたとき。 + パターンはファイルタイプに対して照合される。 <afile> は 'filetype' が設定されたファイルの名 前として使える。<amatch> は 'filetype' の新し い値として使える。 @@ -619,14 +627,21 @@ FocusLost Vimが入力フォーカスを失ったとき。GUI版と、入力 *FuncUndefined* FuncUndefined ユーザ定義関数が使われたが、定義されていなかっ たとき。必要なときのみ関数を定義するのに便利で - ある。<amatch> と <afile> の両方とも関数名に設 - 定される。|autoload-functions|を参照。 + ある。パターンは関数名に対して照合される。 + <amatch> と <afile> の両方とも関数名に設定され + る。|autoload-functions|を参照。 *GUIEnter* GUIEnter GUI の開始に成功し、ウィンドウを開いた後。 gvim を使ったときは、VimEnter の前に発生する。 ファイル .gvimrc からウィンドウの配置場所を設 定するために使うことができる。 > :autocmd GUIEnter * winpos 100 50 +< *GUIFailed* +GUIFailed GUIの開始に失敗した後。可能ならば、Vimはターミ + ナル内で実行を継続する(Unix系のみ。Xサーバへ接 + 続が失敗したとき)。ここでVimを終了させるには、 + 次のようにする: > + :autocmd GUIFailed * qall < *InsertChange* InsertChange インサート・上書きモードで<Insert>をタイプした とき。変数|v:insertmode|が新しいモードを示す。 @@ -634,7 +649,7 @@ InsertChange インサート・上書きモードで<Insert>をタイプした は行わないように注意。 *InsertEnter* InsertEnter インサートモード・上書きモード・Virtual上書き - モードを開始したとき。変数|v:insertmode|がモー + モードを開始する直前。変数|v:insertmode|がモー ドを示す。カーソルを移動したりなどユーザが予期 しないことは行わないように注意。 *InsertLeave* @@ -655,7 +670,7 @@ MenuPopup (マウス右ボタンで)ポップアップメニューを表示す QuickFixCmdPre QuickFixコマンドが実行される前 (|:make|, |:lmake|, |:grep|, |:lgrep|, |:grepadd|, |:lgrepadd|, |:vimgrep|, |:lvimgrep|, - |:vimgrepadd|, |:vimgrepadd|)。パターンには実 + |:vimgrepadd|, |:lvimgrepadd|)。パターンには実 行されるコマンドを記述する。|:grep|が書かれて いると、'grepprg'が"internal"にセットされてい ても実行される。このコマンドを使って変数 @@ -668,7 +683,8 @@ QuickFixCmdPost QuickFixCmdPreと同様だが、QuickFixコマンドが実 る。 *RemoteReply* RemoteReply サーバとして働くVimからの応答を受け取ったとき - |server2client()|。 + |server2client()|。パターンは|serverid|に対し + て照合される。 <amatch> は応答が送られてきたサーバの {serverid} になり、<afile> は応答の実際の内容 になる。 @@ -689,10 +705,17 @@ ShellFilterPost ":{range}!cmd", ":w !cmd", ":r !cmd"を使ってシ チェックするのに使える。 *SourcePre* SourcePre Vimスクリプトを読み込む前。 |:source| + <afile>は読み込まれるファイルの名前となる。 + *SourceCmd* +SourceCmd Vimスクリプトを読み込むとき。|:source| + <afile>は読み込まれるファイルの名前となる。こ + のautocommandはこのファイルを読み込まねばなら + ない。 *SpellFileMissing* SpellFileMissing スペルチェックファイルを読み込もうとしたが、見 - つからなかったとき。<amatch>は言語。'encoding' - も関係する。|spell-SpellFileMissing|を参照。 + つからなかったとき。パターンは言語に対して照合 + される。<amatch>は言語。'encoding'も関係する。 + |spell-SpellFileMissing|を参照。 *StdinReadPost* StdinReadPost 標準入力からバッファへ読み込んだ後で、モードラ インを実行する前。Vimを開始したときに引数 "-" @@ -728,6 +751,7 @@ SwapExists ファイルの編集を始めようとしてスワップファイ うすると予測できない結果になる。 *Syntax* Syntax オプション 'syntax' が設定されたとき。 + パターンは構文名に対して照合される。 <afile> は 'syntax' が設定されたファイルの名前 として使える。<amatch> は 'syntax' の新しい値 として使える。 @@ -1213,9 +1237,9 @@ Autocommand の中で ":nohlsearch" を使って、検索語の強調表示を 'h' を使うこと。 *Cmd-event* -イベント "*Cmd" のうちどれかを使うと、それによる autocommand が読み込みまたは -書き込みを行うものと想定される。これは特殊なファイル、例えばリモートシステム上 -のファイルに作業をするときに使える。 +イベント "*Cmd" のうちどれかを使うと、それによる autocommand が読み込み、書き +込み、またはsourceを行うものと想定される。これは特殊なファイル、例えばリモート +システム上のファイルに作業をするときに使える。 注意: これらのイベントを誤った方法で使うと、そのイベントが発生するファイルの読 み書きが不可能になってしまう。自分の autocommand をしっかりテストすること。最 良の方法は、普通のファイル名には決してマッチしないパターン (例えば "ftp://*") @@ -1227,10 +1251,10 @@ BufReadCmd に対して autocommand を定義すると、クラッシュした 能なので、コマンド |:preserve| を使って元のファイルが復旧に必要ないようにする こと。そうするのはファイルが変更を受けたと判断したときのみでもよい。 -Vim変数 |v:cmdarg| は引数 "++enc=" と "++ff=" の、有効だったものを保持している。 -これらはファイルを読み書きするコマンドで使われるべきである。 -Vim変数 |v:cmdbang|はコマンドに"!"が使われたときに 1。そうでないときに 0 が設 -定される。 +読み込みと書き込みのコマンドの場合、Vim変数 |v:cmdarg| は引数 "++enc=" と +"++ff=" の、有効だったものを保持している。これらはファイルを読み書きするコマン +ドで使われるべきである。Vim変数 |v:cmdbang|はコマンドに"!"が使われたときに 1。 +そうでないときに 0 が設定される。 例は標準プラグイン $VIMRUNTIME/plugin/netrw.vim を参照。 diff --git a/ja/indent.jax b/ja/indent.jax index 4af91d337..22997d4eb 100644 --- a/ja/indent.jax +++ b/ja/indent.jax @@ -4,7 +4,7 @@ TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*indent.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*indent.txt* For Vim version 7.1. Last change: 2007 May 11 VIMリファレンスマニュアル by Bram Moolenaar @@ -445,10 +445,14 @@ CTRL-TやCTRL-Dを使用してインデントを変更した後では、Vimは トの始まりを探すのにかかる時間を制限する。 (省略値 30行) + #N Nがゼロでないときは'#'で始まるshell/Perlのコメントを認識する。N + の既定値はゼロであり、'#'のコメントを認識しない。'#'で始まる行は + プリプロセッサ行としても認識されることに注意。 + 省略値を全て並べるとこうなる: cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,c3,C0, - /0,(2s,us,U0,w0,W0,m0,j0,)20,*30 + /0,(2s,us,U0,w0,W0,m0,j0,)20,*30,#0 次のような場合にはVimは行頭を1列目に持っていく: - 'cinkeys'が '#' を含み行が '#' (プリプロセッサ命令)で始まる場合 @@ -515,6 +519,26 @@ PYTHON *ft-python-indent* 継続行のインデント: > let g:pyindent_continue = '&sw * 2' +SHELL *ft-sh-indent* + +シェルファイルの様々な状況に適用されるインデント量を調整するには、|Dictionary| +b:sh_indent_defaults の以下のキーを設定するか、またはインデント量を計算して返 +す関数への参照|Funcref|を用いる。 + +b:sh_indent_options['default'] インデント量の既定値。 + +b:sh_indent_options['continuation-line'] + 継続行に対して追加されるインデント量。 + +b:sh_indent_options['case-labels'] + caseのラベルに対して追加されるインデント量。 + +b:sh_indent_options['case-statement'] + caseの文に対して追加されるインデント量。 + +b:sh_indent_options['case-breaks'] + caseのbreakに対して追加(あるいは削減)されるイ + ンデント量。 VERILOG *ft-verilog-indent* diff --git a/ja/windows.jax b/ja/windows.jax index eb4458d85..16518c448 100644 --- a/ja/windows.jax +++ b/ja/windows.jax @@ -4,7 +4,7 @@ TRANSLATOR: 小野尾隆一 <onoo@lsidiv.kawasaki-steel.co.jp> TRANSLATOR: nobi TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*windows.txt* For Vim version 7.0. Last change: 2006 Apr 24 +*windows.txt* For Vim version 7.1. Last change: 2007 Mar 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -217,18 +217,21 @@ CTRL-W ^ ":split #" と同じ。つまり、ウィンドウを2つに分割し :vert[ical] {cmd} {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで いれば、垂直分割させる。 + cmdとして|:execute|または|:normal|を指定しても効果がない。 :lefta[bove] {cmd} *:lefta* *:leftabove* :abo[veleft] {cmd} *:abo* *:aboveleft* {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで いる場合は、垂直分割ならば左側に、水平分割ならば上側にカレント ウィンドウを出現させる。'splitbelow'と'splitright'を上書きする。 + cmdとして|:execute|または|:normal|を指定しても効果がない。 :rightb[elow] {cmd} *:rightb* *:rightbelow* :bel[owright] {cmd} *:bel* *:belowright* {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで いる場合は、垂直分割ならば右側に、水平分割ならば下側にカレント ウィンドウを出現させる。'splitbelow'と'splitright'を上書きする。 + cmdとして|:execute|または|:normal|を指定しても効果がない。 *:topleft* *E442* :to[pleft] {cmd} @@ -236,6 +239,7 @@ CTRL-W ^ ":split #" と同じ。つまり、ウィンドウを2つに分割し いる場合は、最上段に現れ、Vimのウィンドウの中で幅を最大にする。 垂直分割のときはウィンドウは最も左側に現れ、Vimウィンドウの中で 高さを最大にする。 + cmdとして|:execute|または|:normal|を指定しても効果がない。 *:botright* :bo[tright] {cmd} @@ -243,6 +247,7 @@ CTRL-W ^ ":split #" と同じ。つまり、ウィンドウを2つに分割し いる場合は、最下段に現れ、Vimのウィンドウの中で幅を最大にす る。垂直分割のときはウィンドウは最も右側に現れ、Vimウィンドウ の中で高さを最大にする。 + cmdとして|:execute|または|:normal|を指定しても効果がない。 これらのコマンドモディファイヤを組み合わせて、最大高さの垂直分割したウィンドウ を作ることができる。例: > @@ -459,6 +464,8 @@ CTRL-W T カレントウィンドウを新しいタブページへ移動する *CTRL-W_=* CTRL-W = 総てのウィンドウの高さ・幅を(ほとんど)同じにする。ただしカレン トウィンドウに対しては 'winheight' と 'winwidth' が適用される。 + 'winfixheight'がセットされたウィンドウの高さはそのままにし、 + 'winfixwidth'がセットされたウィンドウの幅はそのままにする。 :res[ize] -N *:res* *:resize* *CTRL-W_-* CTRL-W - カレントウィンドウの高さをN(デフォルトは1)行分低くする。 From b25752c7473f7521860685894976e0fe4a2d4870 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 6 Jun 2007 14:15:18 +0000 Subject: [PATCH 086/783] fix: update motion, message, mbyte, options to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@86 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/mbyte.txt | 5 +- en/message.txt | 5 +- en/motion.txt | 20 +++--- en/options.txt | 170 ++++++++++++++++++++++++++++++++----------------- ja/mbyte.jax | 7 +- ja/message.jax | 6 +- ja/motion.jax | 16 ++--- ja/options.jax | 130 ++++++++++++++++++++++++++----------- 8 files changed, 233 insertions(+), 126 deletions(-) diff --git a/en/mbyte.txt b/en/mbyte.txt index 809abda4b..121dec174 100644 --- a/en/mbyte.txt +++ b/en/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*mbyte.txt* For Vim version 7.1. Last change: 2006 Aug 11 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -403,7 +403,8 @@ depends on the system used, no detailed list can be given. 8bit 2byte MS-Windows: works for all codepages installed on your system; you can only type 8bit characters; Other systems: does NOT work. - 8bit Unicode Works, but you can only type 8bit characters; in a + 8bit Unicode Works, but only 8bit characters can be typed directly + (others through digraphs, keymaps, etc.); in a terminal you can only see 8bit characters; the GUI can show all characters that the 'guifont' supports. diff --git a/en/message.txt b/en/message.txt index 0c3a6a232..885d1eea6 100644 --- a/en/message.txt +++ b/en/message.txt @@ -1,4 +1,4 @@ -*message.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*message.txt* For Vim version 7.1. Last change: 2007 Mar 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -25,7 +25,8 @@ for other versions. *g<* The "g<" command can be used to see the last page of previous command output. This is especially useful if you accidentally typed <Space> at the hit-enter -prompt. +prompt. You are then back at the hit-enter prompt and can then scroll further +back. Note: when you stopped the output with "q" at the more prompt only up to that point will be displayed. The previous command output is cleared when another command produces output. diff --git a/en/motion.txt b/en/motion.txt index 6fdfd9310..a7302e928 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*motion.txt* For Vim version 7.1. Last change: 2006 Dec 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -169,15 +169,15 @@ l or *l* *0* 0 To the first character of the line. |exclusive| - motion. When moving up or down, stay in same screen - column (if possible). + motion. *<Home>* *<kHome>* <Home> To the first character of the line. |exclusive| - motion. When moving up or down, stay in same text - column (if possible). Works like "1|", which differs - from "0" when the line starts with a <Tab>. {not in - Vi} + motion. When moving up or down next, stay in same + TEXT column (if possible). Most other commands stay + in the same SCREEN column. <Home> works like "1|", + which differs from "0" when the line starts with a + <Tab>. {not in Vi} *^* ^ To the first non-blank character of the line. @@ -752,11 +752,11 @@ m[ or m] Set the |'[| or |']| mark. Useful when an operator is be omitted. *'* *'a* *`* *`a* -'{a-z} `{a-z} Jump to the mark {a-z}. +'{a-z} `{a-z} Jump to the mark {a-z} in the current buffer. *'A* *'0* *`A* *`0* -'{A-Z0-9} `{A-Z0-9} To the mark {A-Z0-9} in the correct file (not a motion - command when in another file). {not in Vi} +'{A-Z0-9} `{A-Z0-9} To the mark {A-Z0-9} in the file where it was set (not + a motion command when in another file). {not in Vi} *g'* *g'a* *g`* *g`a* g'{mark} g`{mark} diff --git a/en/options.txt b/en/options.txt index 8fb22f850..eed885459 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.0. Last change: 2006 May 04 +*options.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -312,7 +312,7 @@ For example, you have two windows, both on C source code. They use the global then the other window will switch to the same value. There is no need to set the 'makeprg' option in the other C source window too. However, if you start editing a Perl file in a new window, you want to use -another 'makeprog' for it, without changing the value used for the C source +another 'makeprg' for it, without changing the value used for the C source files. You use this command: > :setlocal makeprg=perlmake You can switch back to using the global value by making the local value empty: > @@ -455,7 +455,7 @@ There are two forms of modelines. The first form: [white] optional white space {options} a list of option settings, separated with white space or ':', where each part between ':' is the argument for a ":set" - command + command (can be empty) Example: vi:noai:sw=3 ts=6 ~ @@ -528,7 +528,12 @@ This sets the 'dir' option to "c:\tmp". Only a single backslash before the ':' is removed. Thus to include "\:" you have to specify "\\:". No other commands than "set" are supported, for security reasons (somebody -might create a Trojan horse text file with modelines). +might create a Trojan horse text file with modelines). And not all options +can be set. For some options a flag is set, so that when it's used the +|sandbox| is effective. Still, there is always a small risk that a modeline +causes trouble. E.g., when some joker sets 'textwidth' to 5 all your lines +are wrapped unexpectedly. So disable modelines before editing untrusted text. +The mail ftplugin does this, for example. Hint: If you would like to do something else than setting an option, you could define an autocommand that checks the file for a specific string. For @@ -734,9 +739,9 @@ A jump table for the options with a short description can be found at |Q_op|. Copy indent from current line when starting a new line (typing <CR> in Insert mode or when using the "o" or "O" command). If you do not type anything on the new line except <BS> or CTRL-D and then type - <Esc> or <CR>, the indent is deleted again. Moving the cursor to - another line has the same effect, unless the 'I' flag is included in - 'cpoptions'. + <Esc>, CTRL-O or <CR>, the indent is deleted again. Moving the cursor + to another line has the same effect, unless the 'I' flag is included + in 'cpoptions'. When autoindent is on, formatting (with the "gq" command or when you reach 'textwidth' in Insert mode) uses the indentation of the first line. @@ -896,8 +901,8 @@ A jump table for the options with a short description can be found at |Q_op|. The "auto" value is the middle way: When Vim sees that renaming file is possible without side effects (the attributes can be passed on and - and the file is not a link) that is used. When problems are expected, - a copy will be made. + the file is not a link) that is used. When problems are expected, a + copy will be made. The "breaksymlink" and "breakhardlink" values can be used in combination with any of "yes", "no" and "auto". When included, they @@ -1000,7 +1005,12 @@ A jump table for the options with a short description can be found at |Q_op|. Watch out for special characters, see |option-backslash|. When $TMPDIR, $TMP or $TEMP is not defined, it is not used for the default value. "/tmp/*" is only used for Unix. - Note that the default also makes sure that "crontab -e" works (when a + + Note that environment variables are not expanded. If you want to use + $HOME you must expand it explicitly, e.g.: > + :let backupskip = escape(expand('$HOME'), '\') . '/tmp/*' + +< Note that the default also makes sure that "crontab -e" works (when a backup would be made by renaming the original file crontab won't see the newly created file). Also see 'backupcopy' and |crontab|. @@ -1464,8 +1474,12 @@ A jump table for the options with a short description can be found at |Q_op|. option will cause the window size to be changed. When you only want to use the size for the GUI, put the command in your |gvimrc| file. When you set this option and Vim is unable to change the physical - number of columns of the display, the display may be messed up. - Minimum value is 12, maximum value is 10000. + number of columns of the display, the display may be messed up. For + the GUI it is always possible and Vim limits the number of columns to + what fits on the screen. You can use this command to get the widest + window possible: > + :set columns=9999 +< Minimum value is 12, maximum value is 10000. *'comments'* *'com'* *E524* *E525* 'comments' 'com' string (default @@ -1510,8 +1524,9 @@ A jump table for the options with a short description can be found at |Q_op|. modified will be set to the Vim defaults. Effectively, this means that when a |vimrc| or |gvimrc| file exists, Vim will use the Vim defaults, otherwise it will use the Vi defaults. (Note: This doesn't - happen for the system-wide vimrc or gvimrc file). Also see - |compatible-default| and |posix-compliance|. + happen for the system-wide vimrc or gvimrc file, nor for a file given + with the |-u| argument). Also see |compatible-default| and + |posix-compliance|. You can also set this option with the "-C" argument, and reset it with "-N". See |-C| and |-N|. Switching this option off makes the Vim defaults be used for options @@ -1658,7 +1673,9 @@ A jump table for the options with a short description can be found at |Q_op|. used. preview Show extra information about the currently selected - completion in the preview window. + completion in the preview window. Only works in + combination with "menu" or "menuone". + *'confirm'* *'cf'* *'noconfirm'* *'nocf'* 'confirm' 'cf' boolean (default off) @@ -2326,7 +2343,7 @@ A jump table for the options with a short description can be found at |Q_op|. NOTE: Changing this option will not change the encoding of the existing text in Vim. It may cause non-ASCII text to become invalid. It should normally be kept at its default value, or set when Vim - starts up. See |multibyte|. + starts up. See |multibyte|. To reload the menus see |:menutrans|. NOTE: For GTK+ 2 it is highly recommended to set 'encoding' to "utf-8". Although care has been taken to allow different values of @@ -2516,7 +2533,8 @@ A jump table for the options with a short description can be found at |Q_op|. |mbyte-conversion|. When reading a file 'fileencoding' will be set from 'fileencodings'. To read a file in a certain encoding it won't work by setting - 'fileencoding', use the |++enc| argument. + 'fileencoding', use the |++enc| argument. One exception: when + 'fileencodings' is empty the value of 'fileencoding' is used. For a new file the global value of 'fileencoding' is used. Prepending "8bit-" and "2byte-" has no meaning here, they are ignored. When the option is set, the value is converted to lowercase. Thus @@ -3311,7 +3329,7 @@ A jump table for the options with a short description can be found at |Q_op|. "+=" and "-=" feature of ":set" |add-option-flags|. Valid letters are as follows: - *guioptions_a* + *guioptions_a* *'go-a'* 'a' Autoselect: If present, then whenever VISUAL mode is started, or the Visual area extended, Vim tries to become the owner of the windowing system's global selection. This means that the @@ -3326,7 +3344,7 @@ A jump table for the options with a short description can be found at |Q_op|. windowing system's global selection unless explicitly told to by a yank or delete operation for the "* register. The same applies to the modeless selection. - + *'go-A'* 'A' Autoselect for the modeless selection. Like 'a', but only applies to the modeless selection. @@ -3336,15 +3354,16 @@ A jump table for the options with a short description can be found at |Q_op|. "A" - yes "aA" yes yes + *'go-c'* 'c' Use console dialogs instead of popup dialogs for simple choices. - + *'go-e'* 'e' Add tab pages when indicated with 'showtabline'. 'guitablabel' can be used to change the text in the labels. When 'e' is missing a non-GUI tab pages line may be used. The GUI tabs are only supported on some systems, currently GTK, Motif and MS-Windows. - + *'go-f'* 'f' Foreground: Don't use fork() to detach the GUI from the shell where it was started. Use this for programs that wait for the editor to finish (e.g., an e-mail program). Alternatively you @@ -3352,51 +3371,63 @@ A jump table for the options with a short description can be found at |Q_op|. foreground. |gui-fork| Note: Set this option in the vimrc file. The forking may have happened already when the |gvimrc| file is read. - + *'go-i'* 'i' Use a Vim icon. For GTK with KDE it is used in the left-upper corner of the window. It's black&white on non-GTK, because of limitations of X11. For a color icon, see |X11-icon|. - + *'go-m'* 'm' Menu bar is present. + *'go-M'* 'M' The system menu "$VIMRUNTIME/menu.vim" is not sourced. Note that this flag must be added in the .vimrc file, before switching on syntax or filetype recognition (when the |gvimrc| file is sourced the system menu has already been loaded; the ":syntax on" and ":filetype on" commands load the menu too). + *'go-g'* 'g' Grey menu items: Make menu items that are not active grey. If 'g' is not included inactive menu items are not shown at all. Exception: Athena will always use grey menu items. - + *'go-t'* 't' Include tearoff menu items. Currently only works for Win32, GTK+, and Motif 1.2 GUI. + *'go-T'* 'T' Include Toolbar. Currently only in Win32, GTK+, Motif, Photon and Athena GUIs. - + *'go-r'* 'r' Right-hand scrollbar is always present. + *'go-R'* 'R' Right-hand scrollbar is present when there is a vertically split window. + *'go-l'* 'l' Left-hand scrollbar is always present. + *'go-L'* 'L' Left-hand scrollbar is present when there is a vertically split window. + *'go-b'* 'b' Bottom (horizontal) scrollbar is present. Its size depends on the longest visible line, or on the cursor line if the 'h' flag is included. |gui-horiz-scroll| + *'go-h'* 'h' Limit horizontal scrollbar size to the length of the cursor line. Reduces computations. |gui-horiz-scroll| And yes, you may even have scrollbars on the left AND the right if you really want to :-). See |gui-scrollbars| for more information. + *'go-v'* 'v' Use a vertical button layout for dialogs. When not included, a horizontal layout is preferred, but when it doesn't fit a vertical layout is used anyway. + *'go-p'* 'p' Use Pointer callbacks for X11 GUI. This is required for some window managers. If the cursor is not blinking or hollow at the right moment, try adding this flag. This must be done before starting the GUI. Set it in your |gvimrc|. Adding or removing it after the GUI has started has no effect. + *'go-F'* 'F' Add a footer. Only for Motif. See |gui-footer|. + *'guipty'* *'noguipty'* 'guipty' boolean (default on) global @@ -4278,11 +4309,11 @@ A jump table for the options with a short description can be found at |Q_op|. eol:c Character to show at the end of each line. When omitted, there is no extra character at the end of the line. - tab:xy Two characters to be used to show a Tab. The first + tab:xy Two characters to be used to show a tab. The first char is used once. The second char is repeated to - fill the space that the Tab normally occupies. - "tab:>-" will show a Tab that takes four spaces as - ">---". When omitted, a Tab is show as ^I. + fill the space that the tab normally occupies. + "tab:>-" will show a tab that takes four spaces as + ">---". When omitted, a tab is show as ^I. trail:c Character to show for trailing spaces. When omitted, trailing spaces are blank. extends:c Character to show in the last column, when 'wrap' is @@ -4304,6 +4335,7 @@ A jump table for the options with a short description can be found at |Q_op|. :set lcs=extends:>,precedes:< < The "NonText" highlighting will be used for "eol", "extends" and "precedes". "SpecialKey" for "nbsp", "tab" and "trail". + |hl-NonText| |hl-SpecialKey| *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'* 'loadplugins' 'lpl' boolean (default on) @@ -4328,7 +4360,9 @@ A jump table for the options with a short description can be found at |Q_op|. if exists('&macatsui') set nomacatsui endif -< +< Another option to check if you have drawing problems is + 'termencoding'. + *'magic'* *'nomagic'* 'magic' boolean (default on) global @@ -4361,13 +4395,14 @@ A jump table for the options with a short description can be found at |Q_op|. 'makeprg' 'mp' string (default "make", VMS: "MMS") global or local to buffer |global-local| {not in Vi} - Program to use for the ":make" command. See |:make_makeprg|. This - option may contain '%' and '#' characters, which are expanded like - when used in a command-line. Environment variables are expanded - |:set_env|. See |option-backslash| about including spaces and - backslashes. Note that a '|' must be escaped twice: once for ":set" - and once for the interpretation of a command. When you use a filter - called "myfilter" do it like this: > + Program to use for the ":make" command. See |:make_makeprg|. + This option may contain '%' and '#' characters, which are expanded to + the current and alternate file name. |:_%| |:_#| + Environment variables are expanded |:set_env|. See |option-backslash| + about including spaces and backslashes. + Note that a '|' must be escaped twice: once for ":set" and once for + the interpretation of a command. When you use a filter called + "myfilter" do it like this: > :set makeprg=gmake\ \\\|\ myfilter < The placeholder "$*" can be given (even multiple times) to specify where the arguments will be included, for example: > @@ -4380,10 +4415,10 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} Characters that form pairs. The |%| command jumps from one to the - other. Currently only single character pairs are allowed, and they - must be different. The characters must be separated by a colon. The - pairs must be separated by a comma. Example for including '<' and '>' - (HTML): > + other. Currently only single byte character pairs are allowed, and + they must be different. The characters must be separated by a colon. + The pairs must be separated by a comma. Example for including '<' and + '>' (HTML): > :set mps+=<:> < A more exotic example, to jump between the '=' and ';' in an @@ -4419,6 +4454,8 @@ A jump table for the options with a short description can be found at |Q_op|. 'maxfuncdepth' 'mfd' number (default 100) global {not in Vi} + {not available when compiled without the +eval + feature} Maximum depth of function calls for user functions. This normally catches endless recursion. When using a recursive function with more depth, set 'maxfuncdepth' to a bigger number. But this will use @@ -4453,8 +4490,8 @@ A jump table for the options with a short description can be found at |Q_op|. Maximum amount of memory (in Kbyte) to use for pattern matching. Maximum value 2000000. Use this to work without a limit. *E363* - When Vim runs into the limit it gives an error message mostly behaves - like CTRL-C was typed. + When Vim runs into the limit it gives an error message and mostly + behaves like CTRL-C was typed. Running into the limit often means that the pattern is very inefficient or too complex. This may already happen with the pattern "\(.\)*" on a very long line. ".*" works much better. @@ -4520,7 +4557,8 @@ A jump table for the options with a short description can be found at |Q_op|. languages, no matter what you set 'mkspellmem' to. *'modeline'* *'ml'* *'nomodeline'* *'noml'* -'modeline' 'ml' boolean (Vim default: on, Vi default: off) +'modeline' 'ml' boolean (Vim default: on (off for root), + Vi default: off) local to buffer *'modelines'* *'mls'* 'modelines' 'mls' number (default 5) @@ -4792,10 +4830,22 @@ A jump table for the options with a short description can be found at |Q_op|. completion with CTRL-X CTRL-O. |i_CTRL-X_CTRL-O| See |complete-functions| for an explanation of how the function is invoked and what it should return. - This option is usually set by a filetype plugin. + This option is usually set by a filetype plugin: |:filetype-plugin-on| + *'opendevice'* *'odev'* *'noopendevice'* *'noodev'* +'opendevice' 'odev' boolean (default off) + global + {not in Vi} + {only for MS-DOS, MS-Windows and OS/2} + Enable reading and writing from devices. This may get Vim stuck on a + device that can be opened but doesn't actually do the I/O. Therefore + it is off by default. + Note that on MS-Windows editing "aux.h", "lpt1.txt" and the like also + result in editing a device. + + *'operatorfunc'* *'opfunc'* 'operatorfunc' 'opfunc' string (default: empty) global @@ -5410,7 +5460,7 @@ A jump table for the options with a short description can be found at |Q_op|. 1. When "jump" is not included, the relative offset is adjusted for the scroll position in the new current window. When going back to the other window, the - the new relative offset will be used. + new relative offset will be used. 2. When "jump" is included, the other windows are scrolled to keep the same relative offset. When going back to the other window, it still uses the @@ -5515,8 +5565,6 @@ A jump table for the options with a short description can be found at |Q_op|. winsize window sizes Don't include both "curdir" and "sesdir". - There is no option to include tab pages yet, only the current tab page - is stored in the session. |tab-page| When "curdir" nor "sesdir" is included, file names are stored with absolute paths. "slash" and "unix" are useful on Windows when sharing session files @@ -5811,8 +5859,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {not available when compiled without the |+cmdline_info| feature} - Show (partial) command in status line. Set this option off if your - terminal is slow. + Show (partial) command in the last line of the screen. Set this + option off if your terminal is slow. In Visual mode the size of the selected area is shown: - When selecting characters within a line, the number of characters. - When selecting more than one line, the number of lines. @@ -5959,7 +6007,7 @@ A jump table for the options with a short description can be found at |Q_op|. When off, a <Tab> always inserts blanks according to 'tabstop' or 'softtabstop'. 'shiftwidth' is only used for shifting text left or right |shift-left-right|. - What gets inserted (a Tab or spaces) depends on the 'expandtab' + What gets inserted (a <Tab> or spaces) depends on the 'expandtab' option. Also see |ins-expandtab|. When 'expandtab' is not set, the number of spaces is minimized by using <Tab>s. NOTE: This option is reset when 'compatible' is set. @@ -6216,7 +6264,8 @@ A jump table for the options with a short description can be found at |Q_op|. - not applicable item meaning ~ - f S Path to the file in the buffer, relative to current directory. + f S Path to the file in the buffer, as typed or relative to current + directory. F S Full path to the file in the buffer. t S File name (tail) of file in the buffer. m F Modified flag, text is " [+]"; " [-]" if 'modifiable' is off. @@ -6502,7 +6551,7 @@ A jump table for the options with a short description can be found at |Q_op|. There are four main ways to use tabs in Vim: 1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4 (or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim - will use a mix of tabs and spaces, but typing Tab and BS will + will use a mix of tabs and spaces, but typing <Tab> and <BS> will behave like a tab appears every 4 (or 3) characters. 2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use 'expandtab'. This way you will always insert spaces. The @@ -6660,7 +6709,8 @@ A jump table for the options with a short description can be found at |Q_op|. Encoding used for the terminal. This specifies what character encoding the keyboard produces and the display will understand. For the GUI it only applies to the keyboard ('encoding' is used for the - display). + display). Except for the Mac when 'macatsui' is off, then + 'termencoding' should be "macroman". In the Win32 console version the default value is the console codepage when it differs from the ANSI codepage. *E617* @@ -6981,7 +7031,7 @@ A jump table for the options with a short description can be found at |Q_op|. {only in Unix and VMS, doesn't work in the GUI; not available when compiled without |+mouse|} Name of the terminal type for which mouse codes are to be recognized. - Currently these three strings are valid: + Currently these strings are valid: *xterm-mouse* xterm xterm-like mouse handling. The mouse generates "<Esc>[Mscr", where "scr" is three bytes: @@ -7274,7 +7324,7 @@ A jump table for the options with a short description can be found at |Q_op|. onemore Allow the cursor to move just past the end of the line Virtual editing means that the cursor can be positioned where there is - no actual character. This can be halfway into a Tab or beyond the end + no actual character. This can be halfway into a tab or beyond the end of the line. Useful for selecting a rectangle in Visual mode and editing a table. "onemore" is not the same, it will only allow moving the cursor just @@ -7439,7 +7489,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Completion mode that is used for the character specified with 'wildchar'. It is a comma separated list of up to four parts. Each - part specifies what to do for each consecutive use of 'wildchar. The + part specifies what to do for each consecutive use of 'wildchar'. The first part specifies the behavior for the first use of 'wildchar', The second part for the second use, etc. These are the possible values for each part: @@ -7547,8 +7597,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the +windows feature} Keep the window height when windows are opened or closed and - 'equalalways' is set. Set by default for the |preview-window| and - |quickfix-window|. + 'equalalways' is set. Also for |CTRL-W_=|. Set by default for the + |preview-window| and |quickfix-window|. The height may be changed anyway when running out of room. *'winfixwidth'* *'wfw'* *'nowinfixwidth'* *'nowfw'* @@ -7558,7 +7608,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the +windows feature} Keep the window width when windows are opened or closed and - 'equalalways' is set. + 'equalalways' is set. Also for |CTRL-W_=|. The width may be changed anyway when running out of room. *'winminheight'* *'wmh'* diff --git a/ja/mbyte.jax b/ja/mbyte.jax index f0945fca9..35ba8c75a 100644 --- a/ja/mbyte.jax +++ b/ja/mbyte.jax @@ -1,10 +1,10 @@ COMMENT: マルチバイト文字(旧:multibyte.txt) -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*mbyte.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*mbyte.txt* For Vim version 7.1. Last change: 2006 Aug 11 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -403,7 +403,8 @@ MS-WindowsはリトルエンディアンのUCS-2を使用するので、MS-Windo 8bit 2byte MS-Windows: インストールされているすべてのコードページ で機能する。8ビットの文字だけ入力することができる。 他のシステム: 機能しない。 - 8bit Unicode 機能するが、8ビット文字しか入力できず、端末には8ビット + 8bit Unicode 機能するが、8ビット文字しか直接入力できない(他の文字は + DIGRAPH、キーマップなどで入力できる)。端末には8ビット 文字しか表示できない。GUIでは'guifont'がサポートしてい る文字であれば表示できる。 diff --git a/ja/message.jax b/ja/message.jax index 5f7a0cb1f..2358de8c3 100644 --- a/ja/message.jax +++ b/ja/message.jax @@ -1,9 +1,9 @@ COMMENT: メッセージ -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*message.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*message.txt* For Vim version 7.1. Last change: 2007 Mar 20 VIMリファレンスマニュアル by Bram Moolenaar @@ -30,6 +30,8 @@ TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> *g<* コマンド "g<" を使うと前のコマンドの出力の最後のページを見ることができる。 hit-enter プロンプトで誤って <Space> を押してしまったときにこれは便利である。 +このコマンドを使うと hit-enter プロンプトまで戻り、そこでスクロールバックがで +きる。 Note: 出力を表示中に "q" を押してそれ以降の出力表示をさせなかった場合は、 "g<" を使ったときもそこまでしか表示されない。 他のコマンドが出力を行うと、前のコマンドの出力は消去される。 diff --git a/ja/motion.jax b/ja/motion.jax index 6c4182fe9..4622d7800 100644 --- a/ja/motion.jax +++ b/ja/motion.jax @@ -1,11 +1,11 @@ COMMENT: カーソル移動 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> MAINTAINER: 村岡太郎 <koron@tka.att.ne.jp> -*motion.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*motion.txt* For Vim version 7.1. Last change: 2006 Dec 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -172,15 +172,13 @@ l or *l* *0* 0 その行の最初の文字に移動します|exclusive|。 - 上下に移動するときはスクリーンの同一の桁位置に位置した - ままでいます(可能であれば)。 *<Home>* *<kHome>* <Home> その行の最初の文字に移動します|exclusive|。 - 上下に移動するときはテキストの同じ桁位置に位置したまま - でいます(可能であれば)。"1|" と同じように動作し、"0" - との違いは行が <Tab> で始まる場合です。{Vi にはない機 - 能です} + 上下に移動するときは同じ論理桁位置に留まります。(可能 + であれば)。他のほとんどのコマンドは同じ物理桁位置に留 + まります。<Home>は"1|" と同じように動作し、"0"との違い + は行が <Tab> で始まる場合です。{Vi にはない機能です} *^* ^ その行の最初の非空白文字に移動します|exclusive|。 @@ -740,7 +738,7 @@ m[ or m] マーク |'[| or |']| をセットします。演算コマンドが 入しなくてもよいです。 *'* *'a* *`* *`a* -'{a-z} `{a-z} マーク {a-z} へジャンプ。 +'{a-z} `{a-z} カレントバッファのマーク {a-z} へジャンプ。 *'A* *'0* *`A* *`0* '{A-Z0-9} `{A-Z0-9} マーク {A-Z0-9} を含むファイル・位置へジャンプ。 diff --git a/ja/options.jax b/ja/options.jax index b85ce59d9..733e9a2c2 100644 --- a/ja/options.jax +++ b/ja/options.jax @@ -1,9 +1,9 @@ COMMENT: 全オプション解説 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*options.txt* For Vim version 7.0. Last change: 2006 May 04 +*options.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -491,7 +491,7 @@ Note 展開されるオプションの値の長さ制限に注意。システム {vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 [white] 空白、なくても良い {options} オプション設定が、空白か ':' で区切られて並んだもので、':' の - 間の部分はコマンド ":set" の引数である + 間の部分はコマンド ":set" の引数である(空でもよい) 例: vi:noai:sw=3 ts=6 ~ @@ -568,7 +568,13 @@ Note 1番目の形式では、行全体がオプション指定に使われる "\\:" を指定すること。 安全上の理由から、コマンド "set" 以外は使用できない (誰かがテキストファイルで -「トロイの木馬」を作るかもしれないから) 。 +「トロイの木馬」を作るかもしれないから) 。また、全てのオプションが設定できるわ +けではない。ある種のオプションにはフラグが設定されており、それが使用されるとき +には|sandbox|が有効になる。しかしそれでもモードラインが問題を引き起こす可能性 +はわずかに残る。例えば、悪意のある誰かが'textwidth'を5にすると、ファイルの全て +の行が予期せず折り返されてしまう。そのため、信用できないファイルを編集する前に +はモードラインを無効にすること。 +例えばmail ftpluginはそれを行っている。 ヒント: ファイルを読み込みときにオプション設定以外を行いたいなら、ファイル内の 特定の文字列を調べる autocommand を定義すればよい。例: > @@ -777,9 +783,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる バッファについてローカル 新しい行を開始したとき (Insertモードで <CR> を打ち込むか、コマンド "o" や "O" を使ったとき)、新しい行のインデントを現在行と同じくする。新しい - 行で <BS> か CTRL-D 以外を打ち込まずに <Esc> か <CR> を打ち込むと、そ - の行のインデントは削除される。'cpoptions'にフラグ'I'が入っていないかぎ - り、カーソルを他の行に移動させても同様である。 + 行で <BS> か CTRL-D 以外を打ち込まずに <Esc>、CTRL-O か <CR> を打ち込 + むと、その行のインデントは削除される。'cpoptions'にフラグ'I'が入ってい + ないかぎり、カーソルを他の行に移動させても同様である。 オプション 'autoindent' がオンのときは、テキストの整形処理 (コマンド "gq" を使ったり、挿入モードで 1行の文字数がオプション 'textwidth' で指 定した数に届いたとき) には最初の行のインデントが使われる。 @@ -1073,7 +1079,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる 照。特別な文字に注意するために |option-backslash| を参照。 環境変数の$TMPDIR, $TMP または $TEMP が定義されていないとき、それらは 既定値に使われない。"/tmp/*" はUnixでのみ使われる。 - 既定値は"crontab -e"が正常に機能するように定められている(元のファイル + + 環境変数は展開されない。$HOMEを使いたい場合は、明示的に展開しなければ + ならない。例: > + :let backupskip = escape(expand('$HOME'), '\') . '/tmp/*' + +< 既定値は"crontab -e"が正常に機能するように定められている(元のファイル をリネームすることによってバックアップを作ると、crontabは新しく作られ たファイルを参照しない)。'backupcopy'と|crontab|も参照。 @@ -1533,8 +1544,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる を使用したい場合は、このコマンドを|gvimrc|に書くこと。 ユーザがこのオプションを変更したのに、Vimがディスプレイの列幅の物理的 な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが - ある。 - 最小値は12、最大値は10000。 + ある。GUIでは常にその可能性があるので、Vimは桁数を画面に収まる値に制限 + している。可能なウィンドウ幅の最大値を取得するには、次のコマンドを使 + う: > + :set columns=9999 +< 最小値は12、最大値は10000。 (訳注: オプション 'lines' も参照) *'comments'* *'com'* *E524* *E525* @@ -1577,8 +1591,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる のオプションはオフにされ、その他のオプションで変更されていないものは、 みなVimの既定値に設定される。要するに、Vimはファイル |vimrc| または |gvimrc| が存在するならVimの既定値を、存在しないならViの既定値を使うの - だ ( Note: システム全体用のファイルvimrc は関係ないことに注意)。 - |compatible-default| と |posix-compliance| も参照。 + だ ( Note: システム全体用のファイルvimrc や引数|-u|で指定されるファイ + ルは関係ないことに注意)。|compatible-default| と |posix-compliance| も + 参照。 このオプションは引数 "-C" でオンに、引数 "-N" でオフにできる。 |-C| と |-N| を参照。 @@ -1723,7 +1738,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ファのテキストについてはオプション'ignorecase'が適用される。 preview 現在選択されている候補についての付加的な情報をプレビューウ - ィンドウに表示する。 + ィンドウに表示する。"menu"または"menuone"と組み合わせたと + きのみ有効。 *'confirm'* *'cf'* *'noconfirm'* *'nocf'* 'confirm' 'cf' 切替 (既定ではオフ) @@ -2397,7 +2413,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる NOTE: このオプションの値を変更しても、Vim内部の既存のテキストのエンコー ディングは変化しないので注意。非アスキー文字がおかしくなる恐れもある。 既定の値から変更しないか、Vimの起動時に限って設定すること。|multibyte| - を参照。 + を参照。メニューを再読み込みするには|:menutrans|を参照。 NOTE: GTK+2では'encoding'を"utf-8"に設定することが強く推奨される。 他の値であってもよいが、この環境では"utf-8"が自然な選択であり、不必要 @@ -2587,7 +2603,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 換可能なエンコーディングの値も設定できる。|mbyte-conversion|を参照。 ファイルを読み込むときは、'fileencoding' は 'fileencodings' の値の中か ら設定される。あるエンコーディングのファイルを読み込むには - 'fileencoding' を設定してもだめで、引数 |++enc| を使う。 + 'fileencoding' を設定してもだめで、引数 |++enc| を使う。1つの例外: + 'fileencodings'が空のときは'fileencoding'の値が使われる。 新規ファイルに対しては'fileencoding'のグローバルな値が使われる。 "8bit-" や "2byte-" を頭に付けてもここでは意味がなく、無視される。 オプションが設定されると、値は小文字に変換される。そのため、値を大文字 @@ -3397,7 +3414,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる のもののために残される。ウィンドウを画面よりも高くするには、負の値を指 定すること。 - *'guioptions'* *'go'* + *guioptions_a* *'go-a'* 'guioptions' 'go' 文字列 (既定では "gmrLtT" (MS-Windows), "agimrLtT" (GTK, MotifとAthena)) グローバル @@ -3425,6 +3442,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる を使おうとはしない。 モードレスセレクションについても同様である。 + *'go-A'* 'A' モードレスセレクションに対する自動選択。フラグ 'a' と似ている が、モードレスセレクションにのみ適用される。 @@ -3434,15 +3452,18 @@ Note 1番目の形式では、行全体がオプション指定に使われる "A" X O "aA" O O + *'go-c'* 'c' 単純な選択にはポップアップダイアログでなくコンソールダイアログ を使う。 + *'go-e'* 'e' 'showtabline'で指定されたタイミングでタブを追加する。 'guitablabel'を使うとタブのラベルのテキストを変更することがで きる。'e'がないと非GUIのタブページラインが使われる。GUIのタブ はいくつかのシステム上(現在はGTK, Motif, MS-Windows)でのみサポー トされている。 + *'go-f'* 'f' フォアグラウンド (foreground): シェルからGUIを開始し、そのシェ ルからgVimを独立させる際に関数 fork() を使わない。これはエディ タが終了するのを待つプログラム (例えばメールプログラム等) に対 @@ -3452,35 +3473,45 @@ Note 1番目の形式では、行全体がオプション指定に使われる イル|gvimrc|が読み込まれたときはフォーキングがすでに実行されて いるかもしれない。 + *'go-i'* 'i' Vimのアイコンを使う。KDEのGTKではウィンドウの左上に表示される。 GTKでないX11では、制限のため白黒のアイコンが使われる。色つきの アイコンについては |X11-icon| を参照。 + *'go-m'* 'm' メニューバーを表示する。 + *'go-M'* 'M' システムメニューの実体 "$VIMRUNTIME/menu.vim" が読み込まれない。 Note このフラグは、構文認識やファイルタイプ認識を起動する前に、 ファイル .vimrc 内で追加されていなければならない (ファイル .gvimrc が読み込まれたときには、システムメニューはすでに読み込 まれた後である。コマンド ":syntax on" と ":filetype on" でもメ ニューは読み込まれる)。 + *'go-g'* 'g' メニュー項目の灰色表示: 無効のメニュー項目を灰色で表示する。含 まれていないと、無効のメニュー項目は全く表示されない。 例外: Athenaでは常にグレー表示を使う。 - + *'go-t'* 't' メニュー項目の切り離しを有効にする。現在のところWin32, GTK+ と Motif 1.2 GUI でのみ有効である。 + *'go-T'* 'T' ツールバーを表示する。現在のところWin32, GTK+ と Motif, Photon, Athena GUIでのみ有効である。 - + *'go-r'* 'r' 右スクロールバーを常に表示する。 + *'go-R'* 'R' 垂直分割されたウィンドウがあるときのみ、右スクロールバーを表示 する。 + *'go-l'* 'l' 左スクロールバーを常に表示する。 + *'go-L'* 'L' 垂直分割されたウィンドウがあるときのみ、左スクロールバーを表示 する。 + *'go-b'* 'b' 下 (水平) スクロールバーを表示する。サイズは表示されている行の 中で一番長い行によって決まる。またはフラグ'h'が含まれていると きはカーソル行によって決まる。|gui-horiz-scroll| + *'go-h'* 'h' 水平スクロールバーのサイズをカーソル行の長さに制限する。計算量 を軽減させる。|gui-horiz-scroll| @@ -3488,17 +3519,21 @@ Note 1番目の形式では、行全体がオプション指定に使われる 「両方」使うことだってできる :-) 詳しい情報については |gui-scrollbars| を参照。 + *'go-v'* 'v' ダイアログのボタン配置を垂直方向にする。含まれていないとなるべ く水平方向の配置を使うが、収まらないときには結局、垂直配置が使 われる。 + *'go-p'* 'p' X11のGUIにおいて、ポインタ・コールバックを使う。ウィンドウマネー ジャの中にはこれが必要なものもある。カーソルが正しいタイミング で点滅したり変形したりしないときは、これを追加してみること。こ れはGUIを開始する前に設定しなければならない。ユーザのファイル |gvimrc|内で設定すること。GUIが開始した後にこのフラグを追加した り取り除いたりしても、効果はない。 + *'go-F'* 'F' フッタを追加する。Motifでのみ有効である。|gui-footer| を参照。 + *'guipty'* *'noguipty'* 'guipty' 切替 (既定ではオン) グローバル @@ -4407,6 +4442,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる :set lcs=extends:>,precedes:< < "eol", "extends", "precedes" には強調表示グループ "NonText" が、 "nbsp", "tab" と "trail" には "SpecialKey" が適用される。 + |hl-NonText| |hl-SpecialKey| *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'* 'loadplugins' 'lpl' 切替 (既定ではオン) @@ -4432,7 +4468,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる if exists('&macatsui') set nomacatsui endif -< +< 描画の問題があるかをチェックするもう1つのオプションは、'termencoding' + である。 *'magic'* *'nomagic'* 'magic' 切替 (既定ではオン) グローバル @@ -4466,11 +4503,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる グローバル/バッファについてローカル |global-local| {Vi にはない} コマンド ":make" で使われるプログラム。|:make_makeprg| を参照。値には - 文字 '%' と '#' を使える。これらはコマンドラインで使われたときのように - 展開される。環境変数は展開される |:set_env|。値に空白や '\' を含める方 - 法については、 |option-backslash| を参照。Note 文字 '|' は2回エスケー - プすることに注意: 1回目はコマンド ":set" に対して、 2回目はコマンドの - 解釈に対してである。 + 文字 '%' と '#' を使える。これらはそれぞれ現在のファイル名と代替ファイ + ル名に展開される。|:_%| |:_#| + 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については、 + |option-backslash| を参照。Note 文字 '|' は2回エスケープすることに注意: + 1回目はコマンド ":set" に対して、 2回目はコマンドの解釈に対してである。 ユーザのフィルタが "マイフィルタ" であるときは、次のようにする。 > :set makeprg=gmake\ \\\|\ マイフィルタ < 引数が挿入される場所を指定するには、"$*" を (複数回でも) 使える。例: > @@ -4483,9 +4520,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる バッファについてローカル {Vi にはない} 括弧などの組を構成する文字。コマンド |%| で片方からもう片方にジャンプ - する。現在のところ、互いに異なる1文字ずつの組のみが指定可能である。文 - 字はコロンで区切らなければならない。組はコンマで区切って指定する。値に - '<' と '>' を設定する例 (HTML用): > + する。現在のところ、互いに異なる1バイトの文字の組のみが指定可能である。 + 文字はコロンで区切らなければならない。組はコンマで区切って指定する。値 + に'<' と '>' を設定する例 (HTML用): > :set mps+=<:> < さらに興味深い例は、代入文の '=' と ';' の間でジャンプするもので、Cや @@ -4523,6 +4560,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'maxfuncdepth' 'mfd' 数値 (既定では 100) グローバル {Vi にはない} + {Vi mが |+eval| 機能付きでコンパイルされたときのみ有効} ユーザ定義関数の関数呼び出しの深さの最大値。これは普通、終わらない再帰 呼び出しを捉えるために使われる。関数のさらに深い再帰呼び出しを使うとき は、オプション 'maxfuncdepth' に、さらに大きい値を設定すること。しかし @@ -4618,7 +4656,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 値であっても、ある言語に対しては |:mkspell|が失敗するかもしれない。 *'modeline'* *'ml'* *'nomodeline'* *'noml'* -'modeline' 'ml' 切替 (Vimの既定値はオン、Viの既定値はオフ) +'modeline' 'ml' 切替 (Vimの既定値はオン (rootの場合はオフ)、 + Viの既定値はオフ) バッファについてローカル *'modelines'* *'mls'* 'modelines' 'mls' 数値 (既定では 5) @@ -4891,6 +4930,21 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションは普通ファイルタイププラグインによって設定される。 |:filetype-plugin-on| + *'opendevice'* *'odev'* *'noopendevice'* *'noodev'* +'opendevice' 'odev' 切替 (既定ではオフ) + グローバル + {Vi にはない} + {MS-DOS, MS-Windows and OS/2 でのみ有効} + デバイスからの読み書きを有効にする。これを有効にすると、オープンされて + いる可能性があるが、実際には入出力を行わないデバイスにひっかかる + 可能性がある。(訳注: 原文は次の通り: + This may get Vim stuck on a device that can be opened but doesn't + actually do the I/O. ) + そのため既定ではオフになっている。 + MS-Windowsで"aux.h"、"lpt1.txt"などを編集するとデバイスを編集中になる + ことに注意。 + + *'operatorfunc'* *'opfunc'* 'operatorfunc' 'opfunc' 文字列 (既定では: 空) グローバル @@ -5634,9 +5688,6 @@ Note 1番目の形式では、行全体がオプション指定に使われる winsize ウィンドウサイズ "curdir" と "sesdir" の両方を含めないこと。 - タブページを含めるオプションはまだ存在しない。カレントタブページのみが - セッションに保存される。|tab-page| - (訳注: "tabpages"という値が「タブページを含めるオプション」なのでは?) "curdir" も "sesdir" も含まれていないときは、ファイル名は絶対パスで保 存される。 "slash" と "unix" は、Windows上でセッションファイルをUnixと共有すると @@ -5933,7 +5984,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vi mが |+cmdline_info| 機能付きでコンパイルされたとき のみ有効} - コマンド (の一部) をステータス行に表示する。ユーザのターミナルの表示が + コマンド (の一部) を画面の最下行に表示する。ユーザのターミナルの表示が 遅いときにはオフにすること。 Visualモードでは、選択領域のサイズが以下のように表示される。 - 1行の中で選択しているときは、文字数を表示。 @@ -6344,7 +6395,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる - 実際に表示されるものではない item 意味 ~ - f S バッファ内のファイルの、カレントディレクトリに対する相対パス。 + f S バッファ内のファイルのパス(入力された通り、またはカレントディレ + クトリに対する相対パス) F S バッファ内のファイルのフルパス。 t S バッファ内のファイルのファイル名 (パスを除く)。 m F 修正フラグ。表示されるのは " [+]"。'modifiable' がオフのときは @@ -6781,7 +6833,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ターミナルで使われるエンコーディング名。このオプションは、どの文字エン コーディングをキーボードが生成し、どの文字エンコーディングをディスプレ イが理解できるかを指定する。GUI版ではキーボードにのみ適用される (ディ - スプレイにはオプション 'encoding' が使われる)。 + スプレイにはオプション 'encoding' が使われる)。Macで'macatsui'がオフに + なっているときは例外で、'termencoding'は"macroman"になる。 Win32 のコンソール版では、コンソールのコードページがANSIコードページで ないなら場合、その値が既定値となる。 *E617* @@ -7662,8 +7715,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi mが|+windows|機能付きでコンパイルされたときのみ有 効} 'equalalways'をオンにしてウィンドウを開閉したとき、ウィンドウの高さを - 保つ。|preview-window|と|quickfix-window|に対してはデフォルトでオンに - なる。 + 保つ。|CTRL-W_=|に対しても同様。|preview-window|と|quickfix-window|に + 対してはデフォルトでオンになる。 これをオンにしていても、利用できる高さが不足している場合には高さが変わ る。 @@ -7674,8 +7727,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi mが|+windows|機能付きでコンパイルされたときのみ利 用可能} 'equalalways'がオンになっていてウィンドウを開閉したとき、ウィンドウの - 幅を保つ。これをオンにしていても、利用できる幅が不足している場合には幅 - が変わる。 + 幅を保つ。|CTRL-W_=|に対しても同様。 + これをオンにしていても、利用できる幅が不足している場合には幅が変わる。 + *'winminheight'* *'wmh'* 'winminheight' 'wmh' 数値 (既定では 1) グローバル From ab77b011fbcc788bc63e0dccbc6dca0d22bcf625 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 6 Jun 2007 14:54:51 +0000 Subject: [PATCH 087/783] fix: update to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@87 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/cmdline.txt | 6 +++++- en/debug.txt | 2 +- en/debugger.txt | 2 +- en/diff.txt | 17 ++++++++++------- en/digraph.txt | 15 +++++++-------- en/editing.txt | 16 +++++++++------- en/filetype.txt | 37 ++++++++++++++++++++++++++----------- ja/autocmd.jax | 2 +- ja/cmdline.jax | 7 +++++-- ja/debug.jax | 4 ++-- ja/debugger.jax | 4 ++-- ja/diff.jax | 20 ++++++++++++-------- ja/digraph.jax | 16 ++++++++-------- ja/editing.jax | 18 ++++++++++-------- ja/filetype.jax | 37 +++++++++++++++++++++++++------------ ja/indent.jax | 2 +- ja/windows.jax | 2 +- 17 files changed, 126 insertions(+), 81 deletions(-) diff --git a/en/cmdline.txt b/en/cmdline.txt index 414ef429a..69a711d1f 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*cmdline.txt* For Vim version 7.1. Last change: 2006 Jul 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -301,6 +301,10 @@ CTRL-^ Toggle the use of language |:lmap| mappings and/or Input for the next command or Search pattern. {not in Vi} + *c_CTRL-]* +CTRL-] Trigger abbreviation, without inserting a character. {not in + Vi} + For Emacs-style editing on the command-line see |emacs-keys|. The <Up> and <Down> keys take the current command-line as a search string. diff --git a/en/debug.txt b/en/debug.txt index 599e18138..ffc178dcc 100644 --- a/en/debug.txt +++ b/en/debug.txt @@ -1,4 +1,4 @@ -*debug.txt* For Vim version 7.0. Last change: 2006 May 01 +*debug.txt* For Vim version 7.1. Last change: 2006 May 01 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/debugger.txt b/en/debugger.txt index d7268209d..26bc966de 100644 --- a/en/debugger.txt +++ b/en/debugger.txt @@ -1,4 +1,4 @@ -*debugger.txt* For Vim version 7.0. Last change: 2005 Mar 29 +*debugger.txt* For Vim version 7.1. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Gordon Prieur diff --git a/en/diff.txt b/en/diff.txt index a0e8053a4..10870f76f 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.0. Last change: 2006 Apr 14 +*diff.txt* For Vim version 7.1. Last change: 2006 Oct 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -155,13 +155,16 @@ All the buffers edited in a window where the 'diff' option is set will join in the diff. This is also possible for hidden buffers. They must have been edited in a window first for this to be possible. + *:DiffOrig* *diff-original-file* Since 'diff' is a window-local option, it's possible to view the same buffer in diff mode in one window and "normal" in another window. It is also -possible to view the changes you have made to a buffer, but since Vim doesn't -allow having two buffers for the same file, you need to make a copy of the -original file and diff with that. For example: > - :!cp % tempfile - :diffsplit tempfile +possible to view the changes you have made to a buffer since the file was +loaded. Since Vim doesn't allow having two buffers for the same file, you +need another buffer. This command is useful: > + command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis + \ | wincmd p | diffthis +(this is in |vimrc_example.vim|). Use ":DiffOrig" to see the differences +between the current buffer and the file it was loaded from. A buffer that is unloaded cannot be used for the diff. But it does work for hidden buffers. You can use ":hide" to close a window without unloading the @@ -239,7 +242,7 @@ that the buffers will be equal within the specified range. mode. See below for [range]. - *:diffpu* *:diffput* + *:diffpu* *:diffput* *E793* :[range]diffpu[t] [bufspec] Modify another buffer to undo difference with the current buffer. Just like ":diffget" but the other buffer is modified diff --git a/en/digraph.txt b/en/digraph.txt index ec5aec5a5..904142ace 100644 --- a/en/digraph.txt +++ b/en/digraph.txt @@ -1,4 +1,4 @@ -*digraph.txt* For Vim version 7.0. Last change: 2006 Apr 25 +*digraph.txt* For Vim version 7.1. Last change: 2006 Jul 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -107,13 +107,12 @@ If you accidentally typed an 'a' that should be an 'e', you will type 'a' <BS> this, you will have to type <BS> e again. To avoid this don't set the 'digraph' option and use CTRL-K to enter digraphs. -You may have problems using Vim with characters which have an ASCII value -above 128. For example: You insert ue (u-umlaut) and the editor echoes \334 -in Insert mode. After leaving the Insert mode everything is fine. Note that -fmt removes all characters with ASCII codes above 128 from the text being -formatted. On some Unix systems this means you have to define the -environment-variable LC_CTYPE. If you are using csh, then put the following -line in your .cshrc: > +You may have problems using Vim with characters which have a value above 128. +For example: You insert ue (u-umlaut) and the editor echoes \334 in Insert +mode. After leaving the Insert mode everything is fine. Note that fmt +removes all characters with a value above 128 from the text being formatted. +On some Unix systems this means you have to define the environment-variable +LC_CTYPE. If you are using csh, then put the following line in your .cshrc: > setenv LC_CTYPE iso_8859_1 ============================================================================== diff --git a/en/editing.txt b/en/editing.txt index 4c982c50e..0df39dc4f 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*editing.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -372,7 +372,7 @@ Example: The command ":e Long File Name " will edit the file "Long File Name". When using a command that accepts more than one file name (like ":next file1 file2") embedded spaces must be escaped with a backslash. - *wildcard* + *wildcard* *wildcards* Wildcards in {file} are expanded. Which wildcards are supported depends on the system. These are the common ones: ? matches one character @@ -749,7 +749,7 @@ Thus you can use the command "vim *.c" to edit all the C files. From within Vim the command ":n *.c" does the same. White space is used to separate file names. Put a backslash before a space or -Tab to include it in a file name. E.g., to edit the single file "foo bar": > +tab to include it in a file name. E.g., to edit the single file "foo bar": > :next foo\ bar On Unix and a few other systems you can also use backticks, for example: > @@ -849,7 +849,7 @@ Note: When the 'write' option is off, you are not able to write any file. *:w* *:write* *E502* *E503* *E504* *E505* - *E512* *E514* *E667* + *E512* *E514* *E667* *E796* :w[rite] Write the whole buffer to the current file. This is the normal way to save changes to a file. It fails when the 'readonly' option is set or when there is @@ -1150,8 +1150,8 @@ If you want to always use ":confirm", set the 'confirm' option. *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* :bro[wse] {command} Open a file selection dialog for an argument to {command}. At present this works for |:e|, |:w|, - |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc| and - |:mksession|. + |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc|, + |:mksession|, |:split|, |:vsplit|, and |:tabe|. {only in Win32, Athena, Motif, GTK and Mac GUI} When ":browse" is not possible you get an error message. If the |+browse| feature is missing or the @@ -1469,7 +1469,9 @@ problem goes away the next day. {not available when compiled without the |+path_extra| feature} The file searching is currently used for the 'path', 'cdpath' and 'tags' -options. There are three different types of searching: +options, for |finddir()| and |findfile()|. + +There are three different types of searching: 1) Downward search: *starstar* Downward search uses the wildcards '*', '**' and possibly others diff --git a/en/filetype.txt b/en/filetype.txt index 58b33b889..21019b27e 100644 --- a/en/filetype.txt +++ b/en/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.0. Last change: 2006 Apr 28 +*filetype.txt* For Vim version 7.1. Last change: 2007 May 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -43,6 +43,8 @@ Detail: The ":filetype on" command will load one of these files: BufNewFile and BufRead events. If the file type is not found by the name, the file $VIMRUNTIME/scripts.vim is used to detect it from the contents of the file. + When the GUI is running or will start soon, the menu.vim script is + also sourced. See |'go-M'| about avoiding that. To add your own file types, see |new-filetype| below. To search for help on a filetype prepend "ft-" and optionally append "-syntax", "-indent" or @@ -304,24 +306,28 @@ all loaded. For example, if this command: > set runtimepath -produces this output: > +produces this output: - runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 + runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 ~ -then Vim will load all plugins in these directories: > +then Vim will load all plugins in these directories and below: - /etc/vim/plugin/ - ~/.vim/plugin/ - /usr/local/share/vim/vim60/plugin/ + /etc/vim/plugin/ ~ + ~/.vim/plugin/ ~ + /usr/local/share/vim/vim60/plugin/ ~ Note that the last one is the value of $VIMRUNTIME which has been expanded. What if it looks like your plugin is not being loaded? You can find out what happens when Vim starts up by using the |-V| argument: > - vim -V1 + + vim -V2 + You will see a lot of messages, in between them is a remark about loading the -plugins. It starts with: > - Searching for "plugin/*.vim" in +plugins. It starts with: + + Searching for "plugin/**/*.vim" in ~ + There you can see where Vim looks for your plugin scripts. ============================================================================== @@ -417,7 +423,8 @@ Global mappings: same as the local <Leader>o described above. Variables: -g:changelog_timeformat The date (and time) format used in ChangeLog entries. +g:changelog_timeformat Deprecated; use g:changelog_dateformat instead. +g:changelog_dateformat The date (and time) format used in ChangeLog entries. The format accepted is the same as for the |strftime()| function. The default is "%Y-%m-%d" which is the standard format @@ -467,6 +474,14 @@ g:changelog_date_entry_search |2003-01-14 Full Name <user@host> < and some similar formats. +g:changelog_date_end_entry_search + The search pattern to use when searching for the end + of a date-entry. + The same tokens that can be used for + g:changelog_new_date_format can be used here as well. + The default is '^\s*$' which finds lines that contain + only whitespace or are completely empty. + The Changelog entries are inserted where they add the least amount of text. After figuring out the current date and user, the file is searched for an entry beginning with the current date and user and if found adds another item diff --git a/ja/autocmd.jax b/ja/autocmd.jax index 311b077c1..33fbd9657 100644 --- a/ja/autocmd.jax +++ b/ja/autocmd.jax @@ -1,5 +1,5 @@ COMMENT: -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: GIMPAI TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> diff --git a/ja/cmdline.jax b/ja/cmdline.jax index 28489d840..5b9ca9dba 100644 --- a/ja/cmdline.jax +++ b/ja/cmdline.jax @@ -1,11 +1,11 @@ COMMENT: Ex、検索等のコマンド入力エリアでの操作 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 北条耀 TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*cmdline.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*cmdline.txt* For Vim version 7.1. Last change: 2006 Jul 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -293,6 +293,9 @@ CTRL-^ 言語マッピング |:lmap| を切り替えたり、Input Method (IM) い。 {Vi にはない} + *c_CTRL-]* +CTRL-] 文字を挿入することなく短縮入力を展開する。{Vi にはない} + コマンドラインをEmacsスタイルで編集する方法については |emacs-keys| を参照。 キー <Up> と <Down> は現在のコマンドラインを検索文字列として扱う。次/以前のコ diff --git a/ja/debug.jax b/ja/debug.jax index 0182b214f..294cd5cd5 100644 --- a/ja/debug.jax +++ b/ja/debug.jax @@ -1,8 +1,8 @@ COMMENT: Vimのデバッグ -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*debug.txt* For Vim version 7.0. Last change: 2006 May 01 +*debug.txt* For Vim version 7.1. Last change: 2006 May 01 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/ja/debugger.jax b/ja/debugger.jax index dd7a73068..ad67c7981 100644 --- a/ja/debugger.jax +++ b/ja/debugger.jax @@ -1,8 +1,8 @@ COMMENT: 統合開発環境(IDE)におけるデバッガとの協調 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*debugger.txt* For Vim version 7.0. Last change: 2005 Mar 29 +*debugger.txt* For Vim version 7.1. Last change: 2005 Mar 29 VIM リファレンスマニュアル by Gordon Prieur diff --git a/ja/diff.jax b/ja/diff.jax index be9683b31..47d4d1259 100644 --- a/ja/diff.jax +++ b/ja/diff.jax @@ -1,10 +1,10 @@ COMMENT: 差分表示モード(+diff) -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*diff.txt* For Vim version 7.0. Last change: 2006 Apr 14 +*diff.txt* For Vim version 7.1. Last change: 2006 Oct 02 VIMリファレンスマニュアル by Bram Moolenaar @@ -157,13 +157,17 @@ Vimが各ファイルについてウィンドウを開く時に起こること へ連結される。これは隠し(hidden)バッファにもあてはまる。これを可能にするには初 めに1つのウィンドウでそれらが編集される必要がある。 + *:DiffOrig* *diff-original-file* 'diff'はウィンドウローカルのオプションであるから、1つのバッファをあるウィンド ウでは差分モードで、別のウィンドウでは通常のウィンドウで表示することも可能であ -る。バッファに対して行なった変更を表示することも可能だが、Vimは1つのファイルに -対して複数のバッファを持つことはできないから、オリジナルファイルのコピーを作成 -しそれとの差分を取る必要がある。例: > - :!cp % tempfile - :diffsplit tempfile +る。ファイルを読み込んで以来バッファに対して行なった変更を表示することも可能で +ある。だが、Vimは1つのファイルに対して複数のバッファを持つことはできないから、 +別のバッファを作る必要がある。 +次のコマンドが便利である: > + command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis + \ | wincmd p | diffthis +(これは|vimrc_example.vim|に書かれている)。":DiffOrig"を実行すると、カレントバ +ッファと元のファイルの差分を見ることができる。 アンロードされたバッファの差分をとることはできない。隠れバッファの差分をとるこ とはできる。コマンド ":hide" を使うと、バッファをアンロードせずにウィンドウを @@ -239,7 +243,7 @@ Vimは片方のウィンドウには存在しないがもう一方には存在 作する。 [range]については以下を参照。 - *:diffpu* *:diffput* + *:diffpu* *:diffput* *E793* :[range]diffpu[t] [bufspec] もう1つのバッファを現在のバッファと同じくなるように変更する。 ":diffget"と同様だが現在のバッファではなく、もう一方のバッファ diff --git a/ja/digraph.jax b/ja/digraph.jax index 1b5d5fa35..2ff5781b8 100644 --- a/ja/digraph.jax +++ b/ja/digraph.jax @@ -1,10 +1,10 @@ COMMENT: 合わせ文字の解説(設定・入力方法) -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*digraph.txt* For Vim version 7.0. Last change: 2006 Apr 25 +*digraph.txt* For Vim version 7.1. Last change: 2006 Jul 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -115,12 +115,12 @@ DIGRAPHの入力を止め、DIGRAPHを使用していないときと同様に、 するためには、<BS> eをもう一度打ち込む必要がある。これを避けるためには、 'digraph'オプションを設定せず、DIGRAPHの入力にCTRL-Kを使う。 -ASCII値が128以上のキャラクタを持つキャラクタセットにおいて、Vimの使用は問題 -を生じる。例えば: 挿入モードでue(u-umlaut)を入力した際、エディタは\334を返す。 -挿入モードを抜ければ、全て正常になる。fmtは整形中のテキストから128以上のASCII -コードを持つ全てのキャラクタを取り除くことに注意せよ。いくつかのUnixシステム -においては、LC_CTYPE環境変数を定義する必要があるということである。cshを使っ -ているならば、.cshrcに次の1行を加える: > +値128以上のキャラクタを持つキャラクタセットにおいて、Vimの使用は問題を生じる。 +例えば: 挿入モードでue(u-umlaut)を入力した際、エディタは\334を返す。挿入モード +を抜ければ、全て正常になる。fmtは整形中のテキストから128以上の値を持つ全てのキャ +ラクタを取り除くことに注意せよ。いくつかのUnixシステムにおいては、LC_CTYPE環境 +変数を定義する必要があるということである。cshを使っているならば、.cshrcに次の +1行を加える: > setenv LC_CTYPE iso_8859_1 ============================================================================== diff --git a/ja/editing.jax b/ja/editing.jax index 899357f13..73aae8894 100644 --- a/ja/editing.jax +++ b/ja/editing.jax @@ -1,11 +1,11 @@ COMMENT: テキストファイル編集全般にわたる解説 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*editing.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*editing.txt* For Vim version 7.1. Last change: 2007 May 11 VIMリファレンスマニュアル by Bram Moolenaar @@ -379,7 +379,7 @@ Note UnixとMS-DOS以外のシステムに対する注意: 1つのファイル ンド (":next file1 file2" 等) を使うときは、ファイル名内の空白は '\' でエスケー プしなければならない。 - *wildcard* + *wildcard* *wildcards* {file} 内のワイルドカードは展開される。使用できるワイルドカードの種類は、シス テムによって異なる。以下は標準的なものである。 ? あらゆる1文字にマッチ @@ -861,7 +861,7 @@ Note: オプション 'write' がオフのときは、どのファイルも書 *:w* *:write* *E502* *E503* *E504* *E505* - *E512* *E514* *E667* + *E512* *E514* *E667* *E796* :w[rite] バッファ全体をカレントファイルに書き込む。これはファイ ルに対する変更点を保存するときの普通の方法である。 オプション 'readonly' がオンであるかファイルに書き込め @@ -1158,8 +1158,8 @@ ZQ 変更点を確かめずに終了する (コマンド |:q!| と同様)。 *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* :bro[wse] {command} {command} の引数のためにファイル選択ダイアログを開く。 現在の所、コマンド |:e|, |:w|, |:r|, |saveas|, |:sp|, - |:mkexrc|, - |:mkvimrc| や |:mksession| と共に使える。 + |:mkexrc|, |:mkvimrc|, |:mksession| |:split|, + |:vsplit|, |:tabe|と共に使える。 {Vi mのWin32版、Motif、Athena、GTKやMacのGUI版でのみ利 用可能。} |:browse|が使えない時ははエラーが表示される。|+browse| @@ -1465,8 +1465,10 @@ Win32 でサマータイムが始まる日である。Win32 ライブラリに {Vi mが |+path_extra| 機能付きでコンパイルされたときのみ有効} -現在の所、オプション 'path', 'cdpath' と 'tags' でファイル検索が使われる。ファ -イル検索には以下の3種類がある。 +現在の所、オプション 'path', 'cdpath', 'tags'と|finddir()|, |findfile()| でファ +イル検索が使われる。ファイル検索には以下の3種類がある。 + +3つの異なるタイプの検索がある: 1) 下向き検索: *starstar* 下向き検索にはワイルドカード '*' と '**' 及びユーザのOSがサポートするその他 diff --git a/ja/filetype.jax b/ja/filetype.jax index cbd87445a..9d5789408 100644 --- a/ja/filetype.jax +++ b/ja/filetype.jax @@ -1,10 +1,10 @@ COMMENT: ファイル形式の自動判別 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*filetype.txt* For Vim version 7.0. Last change: 2006 Apr 28 +*filetype.txt* For Vim version 7.1. Last change: 2007 May 10 VIMリファレンスマニュアル by Bram Moolenaar @@ -49,6 +49,8 @@ NOTE: Viコンパチブルとは全てのオプションがグローバルであ 義するVimスクリプトファイルである。ファイル形式がファイル名から決定で きない時には、ファイルの内容を検出するために$VIMRUNTIME/scripts.vimが 使用される。 + GUIで使用しているとき、またはGUIを開始しようとしているときには、 + menu.vimも読み込まれる。これを避けるには|'go-M'|を参照。 独自のファイルタイプを追加するには、下の|new-filetype|を参照。あるファイルタイ プについてのヘルプを検索するには、ファイルタイプ名の前に "ft-" をつけ、さらに @@ -314,24 +316,28 @@ OSによる「形式」を利用するには自動実行コマンドの検出パ set runtimepath -次の内容が出力される: > +次の内容が出力される: - runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 + runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 ~ -この時Vimは以下に示すディレクトリにある全てのプラグインを読み込む: > +この時Vimは以下に示すディレクトリとそれ以下にある全てのプラグインを読み込む: - /etc/vim/plugin/ - ~/.vim/plugin/ - /usr/local/share/vim/vim60/plugin/ + /etc/vim/plugin/ ~ + ~/.vim/plugin/ ~ + /usr/local/share/vim/vim60/plugin/ ~ 最後の1つは$VIMRUNTIMEが展開されたものであることに注意。 プラグインが読み込まれていないらしい場合はどうすれば良いのか? Vim起動時に|-V| 引数を使用すれば何が起こっているか知ることができる: > - vim -V1 + + vim -V2 + 多くのメッセージが表示されるが、プラグインの読み込みの前には特定の記述がなされ る。それは次のように始まる: - Searching for "plugin/*.vim" in + + Searching for "plugin/**/*.vim" in ~ + これを見ればVimがプラグインスクリプトをどこから探しているのかがわかる。 ============================================================================== @@ -428,7 +434,8 @@ NewChangelogEntry 適切にアイテムを追加する(以下参照)。 く。 変数: -g:changelog_timeformat エントリに入れる日付(と時間)の書式。 +g:changelog_timeformat 非推奨。g:changelog_dateformatを使うこと。 +g:changelog_dateformat エントリに入れる日付(と時間)の書式。 使えるフォーマットは |strftime()| と同じ。 デフォルトでは標準的に使われている "%Y-%m-%d" が設定 されている。 @@ -464,12 +471,18 @@ g:changelog_new_entry_format | * | < g:changelog_date_entry_search - エントリを探すための検索パターン。 + 日付エントリを探すための検索パターン。 g:changelog_new_date_formatと同じ特別な文字が使え る。デフォルトは '^/\s*%d\_s*%u' で、次のような行 > |2003-01-14 Full Name <user@host> < を見つける。 +g:changelog_date_end_entry_search + 日付エントリの終端を探すための検索パターン。 + g:changelog_new_date_formatにおけるトークンと同じもの + が使用できる。デフォルトは'^\s*$'で、空白文字のみを含 + む行または完全な空行を検索する。 + チェンジログエントリは適切な位置に挿入される。現在の日付とユーザーを得た後 に、その日付とユーザーのエントリをファイルから探し、見つかればその下にアイテ ムを加える。なければ新しいエントリとアイテムをファイルの先頭に加える。 diff --git a/ja/indent.jax b/ja/indent.jax index 22997d4eb..f56758b3b 100644 --- a/ja/indent.jax +++ b/ja/indent.jax @@ -1,5 +1,5 @@ COMMENT: C言語自動インデントとプログラム可能な自動インデント -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> diff --git a/ja/windows.jax b/ja/windows.jax index 16518c448..8aec6bc9a 100644 --- a/ja/windows.jax +++ b/ja/windows.jax @@ -1,5 +1,5 @@ COMMENT: 複数のウィンドウとバッファの使用法 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 小野尾隆一 <onoo@lsidiv.kawasaki-steel.co.jp> TRANSLATOR: nobi TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> From f72e2d9c6f2cc4681265d34f6659cde7c1292059 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Thu, 7 Jun 2007 06:13:04 +0000 Subject: [PATCH 088/783] fix: update usr_toc to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@88 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/usr_toc.txt | 25 +++++++++++++++++++------ ja/usr_toc.jax | 30 ++++++++++++++++++++++-------- 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/en/usr_toc.txt b/en/usr_toc.txt index ec98aa2c0..29e856bbc 100644 --- a/en/usr_toc.txt +++ b/en/usr_toc.txt @@ -1,4 +1,4 @@ -*usr_toc.txt* For Vim version 6.3. Last change: 2003 Aug 18 +*usr_toc.txt* For Vim version 7.1. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -34,6 +34,7 @@ Editing Effectively |usr_29.txt| Moving through programs |usr_30.txt| Editing programs |usr_31.txt| Exploiting the GUI +|usr_32.txt| The undo tree Tuning Vim |usr_40.txt| Make new commands @@ -47,6 +48,9 @@ Making Vim Run |usr_90.txt| Installing Vim +Reference manual +|reference_toc| More detailed information for all commands + The user manual is available as a single, ready to print HTML and PDF file here: http://vimdoc.sf.net @@ -268,6 +272,11 @@ Subjects that can be read independently. |31.4| Vim window position and size |31.5| Various +|usr_32.txt| The undo tree + |32.1| Numbering changes + |32.2| Jumping around the tree + |32.3| Time travelling + ============================================================================== Tuning Vim ~ @@ -286,11 +295,15 @@ Make Vim work as you like it. |41.5| Executing an expression |41.6| Using functions |41.7| Defining a function - |41.8| Exceptions - |41.9| Various remarks - |41.10| Writing a plugin - |41.11| Writing a filetype plugin - |41.12| Writing a compiler plugin + |41.8| Lists and Dictionaries + |41.9| Exceptions + |41.10| Various remarks + |41.11| Writing a plugin + |41.12| Writing a filetype plugin + |41.13| Writing a compiler plugin + |41.14| Writing a plugin that loads quickly + |41.15| Writing library scripts + |41.16| Distributing Vim scripts |usr_42.txt| Add new menus |42.1| Introduction diff --git a/ja/usr_toc.jax b/ja/usr_toc.jax index aabd0a2c1..90783eaf0 100644 --- a/ja/usr_toc.jax +++ b/ja/usr_toc.jax @@ -1,9 +1,9 @@ COMMENT: ユーザマニュアル目次 -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_toc.txt* For Vim version 6.3. Last change: 2003 Aug 18 +*usr_toc.txt* For Vim version 7.1. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -39,6 +39,7 @@ vim入門 ~ |usr_29.txt| プログラム内の移動 |usr_30.txt| プログラムの編集 |usr_31.txt| GUIの活用 +|usr_32.txt| undoツリー vimのチューニング ~ |usr_40.txt| 新しいコマンドを作る @@ -51,10 +52,14 @@ vimのチューニング ~ vimを動くように設定する ~ |usr_90.txt| Vimのインストール + +リファレンスマニュアル +|reference_toc| 全コマンドに対する詳細な情報 + ユーザマニュアルは各章毎にHTML形式とPDF形式で印刷できる形で、次のサイトに置 いてあります。 http://vimdoc.sf.net - + ============================================================================== vim入門 ~ @@ -272,6 +277,11 @@ vim入門 ~ |31.4| vimウィンドウ位置と大きさ |31.5| その他 +|usr_32.txt| undoツリー + |32.1| 変更の番号付け + |32.2| ツリーを飛び回る + |32.3| タイムトラベル + ============================================================================== vimのチューニング ~ @@ -290,11 +300,15 @@ vimをあなたの思い通りに動くようにしましょう。 |41.5| 式の実行 |41.6| 関数を使う |41.7| 関数を定義する - |41.8| 例外 - |41.9| いろんな注釈 - |41.10| プラグインを書く - |41.11| ファイルタイププラグインを書く - |41.12| コンパイラプラグインを書く + |41.8| リストと辞書 + |41.9| 例外 + |41.10| いろんな注釈 + |41.11| プラグインを書く + |41.12| ファイルタイププラグインを書く + |41.13| コンパイラプラグインを書く + |41.14| 高速に読み込まれるプラグインを書く + |41.15| ライブラリスクリプトを書く + |41.16| Vimスクリプトを配布する |usr_42.txt| 新しいメニューの追加 |42.1| はじめに From 9f54d2007b4d89055ffb1404429bfe85fcf8f9a5 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 9 Jun 2007 02:38:13 +0000 Subject: [PATCH 089/783] fix: update usr_41 to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@89 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/usr_41.txt | 815 +++++++++++++++++++++++++++++++++++++++++++++----- ja/usr_41.jax | 805 ++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 1470 insertions(+), 150 deletions(-) diff --git a/en/usr_41.txt b/en/usr_41.txt index 440c93b67..da5bf7ce9 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 6.3. Last change: 2004 May 06 +*usr_41.txt* For Vim version 7.1. Last change: 2007 Apr 26 VIM USER MANUAL - by Bram Moolenaar @@ -16,18 +16,22 @@ script. There are a lot of them, thus this is a long chapter. |41.5| Executing an expression |41.6| Using functions |41.7| Defining a function -|41.8| Exceptions -|41.9| Various remarks -|41.10| Writing a plugin -|41.11| Writing a filetype plugin -|41.12| Writing a compiler plugin +|41.8| Lists and Dictionaries +|41.9| Exceptions +|41.10| Various remarks +|41.11| Writing a plugin +|41.12| Writing a filetype plugin +|41.13| Writing a compiler plugin +|41.14| Writing a plugin that loads quickly +|41.15| Writing library scripts +|41.16| Distributing Vim scripts Next chapter: |usr_42.txt| Add new menus Previous chapter: |usr_40.txt| Make new commands Table of contents: |usr_toc.txt| ============================================================================== -*41.1* Introduction *vim-script-intro* +*41.1* Introduction *vim-script-intro* *script* Your first experience with Vim scripts is the vimrc file. Vim reads it when it starts up and executes the commands. You can set options to values you @@ -42,7 +46,7 @@ Let's start with a simple example: > :let i = 1 :while i < 5 : echo "count is" i - : let i = i + 1 + : let i += 1 :endwhile < Note: @@ -50,8 +54,19 @@ Let's start with a simple example: > them when you type a command. In a Vim script file they can be left out. We will use them here anyway to make clear these are colon commands and make them stand out from Normal mode commands. + Note: + You can try out the examples by yanking the lines from the text here + and executing them with :@" + +The output of the example code is: + + count is 1 ~ + count is 2 ~ + count is 3 ~ + count is 4 ~ -The ":let" command assigns a value to a variable. The generic form is: > +In the first line the ":let" command assigns a value to a variable. The +generic form is: > :let {variable} = {expression} @@ -66,48 +81,52 @@ the number one. The statements until the matching ":endwhile" are executed for as long as the condition is true. The condition used here is the expression "i < 5". This is true when the variable i is smaller than five. - The ":echo" command prints its arguments. In this case the string "count -is" and the value of the variable i. Since i is one, this will print: + Note: + If you happen to write a while loop that keeps on running, you can + interrupt it by pressing CTRL-C (CTRL-Break on MS-Windows). + +The ":echo" command prints its arguments. In this case the string "count is" +and the value of the variable i. Since i is one, this will print: count is 1 ~ -Then there is another ":let i =" command. The value used is the expression "i -+ 1". This adds one to the variable i and assigns the new value to the same -variable. - The output of the example code is: +Then there is the ":let i += 1" command. This does the same thing as +":let i = i + 1". This adds one to the variable i and assigns the new value +to the same variable. - count is 1 ~ - count is 2 ~ - count is 3 ~ - count is 4 ~ +The example was given to explain the commands, but would you really want to +make such a loop it can be written much more compact: > - Note: - If you happen to write a while loop that keeps on running, you can - interrupt it by pressing CTRL-C (CTRL-Break on MS-Windows). + :for i in range(1, 4) + : echo "count is" i + :endfor + +We won't explain how |:for| and |range()| work until later. Follow the links +if you are impatient. THREE KINDS OF NUMBERS Numbers can be decimal, hexadecimal or octal. A hexadecimal number starts -with "0x" or "0X". For example "0x1f" is 31. An octal number starts with a -zero. "017" is 15. Careful: don't put a zero before a decimal number, it -will be interpreted as an octal number! +with "0x" or "0X". For example "0x1f" is decimal 31. An octal number starts +with a zero. "017" is decimal 15. Careful: don't put a zero before a decimal +number, it will be interpreted as an octal number! The ":echo" command always prints decimal numbers. Example: > :echo 0x7f 036 < 127 30 ~ A number is made negative with a minus sign. This also works for hexadecimal -and octal numbers. A minus sign is also for subtraction. Compare this with -the previous example: > +and octal numbers. A minus sign is also used for subtraction. Compare this +with the previous example: > :echo 0x7f -036 < 97 ~ White space in an expression is ignored. However, it's recommended to use it for separating items, to make the expression easier to read. For example, to -avoid the confusion with a negative number, put a space between the minus sign -and the following number: > +avoid the confusion with a negative number above, put a space between the +minus sign and the following number: > :echo 0x7f - 036 @@ -138,7 +157,7 @@ example, one script contains this code: > :let s:count = 1 :while s:count < 5 : source other.vim - : let s:count = s:count + 1 + : let s:count += 1 :endwhile Since "s:count" is local to this script, you can be sure that sourcing the @@ -189,15 +208,21 @@ exists() checks. That's not what you want. The exclamation mark ! negates a value. When the value was true, it becomes false. When it was false, it becomes true. You can read it as "not". Thus "if !exists()" can be read as "if not exists()". - What Vim calls true is anything that is not zero. Only zero is false. + What Vim calls true is anything that is not zero. Zero is false. + Note: + Vim automatically converts a string to a number when it is looking for + a number. When using a string that doesn't start with a digit the + resulting number is zero. Thus look out for this: > + :if "true" +< The "true" will be interpreted as a zero, thus as false! STRING VARIABLES AND CONSTANTS So far only numbers were used for the variable value. Strings can be used as -well. Numbers and strings are the only two types of variables that Vim -supports. The type is dynamic, it is set each time when assigning a value to -the variable with ":let". +well. Numbers and strings are the basic types of variables that Vim supports. +The type is dynamic, it is set each time when assigning a value to the +variable with ":let". More about types in |41.8|. To assign a string value to a variable, you need to use a string constant. There are two types of these. First the string in double quotes: > @@ -218,9 +243,9 @@ To avoid the need for a backslash, you can use a string in single quotes: > :echo name < "peter" ~ -Inside a single-quote string all the characters are taken literally. The -drawback is that it's impossible to include a single quote. A backslash is -taken literally as well, thus you can't use it to change the meaning of the +Inside a single-quote string all the characters are as they are. Only the +single quote itself is special: you need to use two to get one. A backslash +is taken literally, thus you can't use it to change the meaning of the character after it. In double-quote strings it is possible to use special characters. Here are a few useful ones: @@ -268,7 +293,8 @@ do something and restore the old value. Example: > :let &ic = save_ic This makes sure the "The Start" pattern is used with the 'ignorecase' option -off. Still, it keeps the value that the user had set. +off. Still, it keeps the value that the user had set. (Another way to do +this would be to add "\C" to the pattern, see |/\C|.) MATHEMATICS @@ -374,7 +400,7 @@ ones: The result is one if the condition is met and zero otherwise. An example: > - :if v:version >= 600 + :if v:version >= 700 : echo "congratulations" :else : echo "you are using an old version, upgrade!" @@ -415,8 +441,8 @@ pattern, like what's used for searching. Example: > :endif Notice the use of a single-quote string for the pattern. This is useful, -because backslashes need to be doubled in a double-quote string and patterns -tend to contain many backslashes. +because backslashes would need to be doubled in a double-quote string and +patterns tend to contain many backslashes. The 'ignorecase' option is used when comparing strings. When you don't want that, append "#" to match case and "?" to ignore case. Thus "==?" compares @@ -451,6 +477,8 @@ Example: > The ":sleep" command makes Vim take a nap. The "50m" specifies fifty milliseconds. Another example is ":sleep 4", which sleeps for four seconds. +Even more looping can be done with the ":for" command, see below in |41.8|. + ============================================================================== *41.5* Executing an expression @@ -490,6 +518,17 @@ This inserts "new text " in the current line. Notice the use of the special key "\<Esc>". This avoids having to enter a real <Esc> character in your script. +If you don't want to execute a string but evaluate it to get its expression +value, you can use the eval() function: > + + :let optname = "path" + :let optval = eval('&' . optname) + +A "&" character is prepended to "path", thus the argument to eval() is +"&path". The result will then be the value of the 'path' option. + The same thing can be done with: > + :exe 'let optval = &' . optname + ============================================================================== *41.6* Using functions @@ -513,9 +552,9 @@ A function can be called in an expression. Example: > :let repl = substitute(line, '\a', "*", "g") :call setline(".", repl) -The getline() function obtains a line from the current file. Its argument is -a specification of the line number. In this case "." is used, which means the -line where the cursor is. +The getline() function obtains a line from the current buffer. Its argument +is a specification of the line number. In this case "." is used, which means +the line where the cursor is. The substitute() function does something similar to the ":substitute" command. The first argument is the string on which to perform the substitution. The second argument is the pattern, the third the replacement @@ -538,15 +577,19 @@ used for. You can find an alphabetical list here: |functions|. Use CTRL-] on the function name to jump to detailed help on it. String manipulation: - char2nr() get ASCII value of a character nr2char() get a character by its ASCII value + char2nr() get ASCII value of a character + str2nr() convert a string to a number + printf() format a string according to % items escape() escape characters in a string with a '\' + tr() translate characters from one set to another strtrans() translate a string to make it printable tolower() turn a string to lowercase toupper() turn a string to uppercase match() position where a pattern matches in a string matchend() position where a pattern match ends in a string matchstr() match of a pattern in a string + matchlist() like matchstr() and also return submatches stridx() first index of a short string in a long string strridx() last index of a short string in a long string strlen() length of a string @@ -554,49 +597,128 @@ String manipulation: submatch() get a specific match in a ":substitute" strpart() get part of a string expand() expand special keywords - type() type of a variable iconv() convert text from one encoding to another + byteidx() byte index of a character in a string + repeat() repeat a string multiple times + eval() evaluate a string expression + +List manipulation: + get() get an item without error for wrong index + len() number of items in a List + empty() check if List is empty + insert() insert an item somewhere in a List + add() append an item to a List + extend() append a List to a List + remove() remove one or more items from a List + copy() make a shallow copy of a List + deepcopy() make a full copy of a List + filter() remove selected items from a List + map() change each List item + sort() sort a List + reverse() reverse the order of a List + split() split a String into a List + join() join List items into a String + range() return a List with a sequence of numbers + string() String representation of a List + call() call a function with List as arguments + index() index of a value in a List + max() maximum value in a List + min() minimum value in a List + count() count number of times a value appears in a List + repeat() repeat a List multiple times + +Dictionary manipulation: + get() get an entry without an error for a wrong key + len() number of entries in a Dictionary + has_key() check whether a key appears in a Dictionary + empty() check if Dictionary is empty + remove() remove an entry from a Dictionary + extend() add entries from one Dictionary to another + filter() remove selected entries from a Dictionary + map() change each Dictionary entry + keys() get List of Dictionary keys + values() get List of Dictionary values + items() get List of Dictionary key-value pairs + copy() make a shallow copy of a Dictionary + deepcopy() make a full copy of a Dictionary + string() String representation of a Dictionary + max() maximum value in a Dictionary + min() minimum value in a Dictionary + count() count number of times a value appears + +Variables: + type() type of a variable + islocked() check if a variable is locked + function() get a Funcref for a function name + getbufvar() get a variable value from a specific buffer + setbufvar() set a variable in a specific buffer + getwinvar() get a variable from specific window + gettabwinvar() get a variable from specific window & tab page + setwinvar() set a variable in a specific window + settabwinvar() set a variable in a specific window & tab page + garbagecollect() possibly free memory -Working with text in the current buffer: - byte2line() get line number at a specific byte count - line2byte() byte count at a specific line +Cursor and mark position: col() column number of the cursor or a mark virtcol() screen column of the cursor or a mark line() line number of the cursor or mark wincol() window column number of the cursor winline() window line number of the cursor cursor() position the cursor at a line/column - getline() get a line from the buffer + getpos() get position of cursor, mark, etc. + setpos() set position of cursor, mark, etc. + byte2line() get line number at a specific byte count + line2byte() byte count at a specific line + diff_filler() get the number of filler lines above a line + +Working with text in the current buffer: + getline() get a line or list of lines from the buffer setline() replace a line in the buffer - append() append {string} below line {lnum} + append() append line or list of lines in the buffer indent() indent of a specific line cindent() indent according to C indenting lispindent() indent according to Lisp indenting nextnonblank() find next non-blank line prevnonblank() find previous non-blank line search() find a match for a pattern + searchpos() find a match for a pattern searchpair() find the other end of a start/skip/end + searchpairpos() find the other end of a start/skip/end + searchdecl() search for the declaration of a name System functions and manipulation of files: - browse() put up a file requester glob() expand wildcards globpath() expand wildcards in a number of directories + findfile() find a file in a list of directories + finddir() find a directory in a list of directories resolve() find out where a shortcut points to fnamemodify() modify a file name + pathshorten() shorten directory names in a path + simplify() simplify a path without changing its meaning executable() check if an executable program exists filereadable() check if a file can be read filewritable() check if a file can be written to + getfperm() get the permissions of a file + getftype() get the kind of a file isdirectory() check if a directory exists - getcwd() get the current working directory getfsize() get the size of a file - getftime() get last modification time of a file - localtime() get current time - strftime() convert time to a string + getcwd() get the current working directory + haslocaldir() check if current window used |:lcd| tempname() get the name of a temporary file + mkdir() create a new directory delete() delete a file rename() rename a file system() get the result of a shell command hostname() name of the system + readfile() read a file into a List of lines + writefile() write a List of lines into a file + +Date and Time: + getftime() get last modification time of a file + localtime() get current time in seconds + strftime() convert time to a string + reltime() get the current or elapsed time accurately + reltimestr() convert reltime() result to a string Buffers, windows and the argument list: argc() number of entries in the argument list @@ -607,26 +729,52 @@ Buffers, windows and the argument list: bufloaded() check if a buffer exists and is loaded bufname() get the name of a specific buffer bufnr() get the buffer number of a specific buffer + tabpagebuflist() return List of buffers in a tab page + tabpagenr() get the number of a tab page + tabpagewinnr() like winnr() for a specified tab page winnr() get the window number for the current window bufwinnr() get the window number of a specific buffer winbufnr() get the buffer number of a specific window - getbufvar() get a variable value from a specific buffer - setbufvar() set a variable in a specific buffer - getwinvar() get a variable value from a specific window - setwinvar() set a variable in a specific window + getbufline() get a list of lines from the specified buffer + +Command line: + getcmdline() get the current command line + getcmdpos() get position of the cursor in the command line + setcmdpos() set position of the cursor in the command line + getcmdtype() return the current command-line type + +Quickfix and location lists: + getqflist() list of quickfix errors + setqflist() modify a quickfix list + getloclist() list of location list items + setloclist() modify a location list + +Insert mode completion: + complete() set found matches + complete_add() add to found matches + complete_check() check if completion should be aborted + pumvisible() check if the popup menu is displayed Folding: foldclosed() check for a closed fold at a specific line foldclosedend() like foldclosed() but return the last line foldlevel() check for the fold level at a specific line foldtext() generate the line displayed for a closed fold + foldtextresult() get the text displayed for a closed fold -Syntax highlighting: +Syntax and highlighting: hlexists() check if a highlight group exists hlID() get ID of a highlight group synID() get syntax ID at a specific position synIDattr() get a specific attribute of a syntax ID synIDtrans() get translated syntax ID + diff_hlID() get highlight ID for diff mode at a position + matcharg() get info about |:match| arguments + +Spelling: + spellbadword() locate badly spelled word at or after cursor + spellsuggest() return suggested spelling corrections + soundfold() return the sound-a-like equivalent of a word History: histadd() add an item to a history @@ -635,15 +783,23 @@ History: histnr() get highest index of a history list Interactive: + browse() put up a file requester + browsedir() put up a directory requester confirm() let the user make a choice getchar() get a character from the user getcharmod() get modifiers for the last typed character input() get a line from the user + inputlist() let the user pick an entry from a list inputsecret() get a line from the user without showing it inputdialog() get a line from the user in a dialog - inputresave save and clear typeahead + inputsave() save and clear typeahead inputrestore() restore typeahead +GUI: + getfontname() get name of current font being used + getwinposx() X position of the GUI Vim window + getwinposy() Y position of the GUI Vim window + Vim server: serverlist() return the list of server names remote_send() send command characters to a Vim server @@ -654,6 +810,13 @@ Vim server: foreground() move the Vim window to the foreground remote_foreground() move the Vim server window to the foreground +Window size and position: + winheight() get height of a specific window + winwidth() get width of a specific window + winrestcmd() return command to restore window sizes + winsaveview() get view of current window + winrestview() restore saved view of current window + Various: mode() get current editing mode visualmode() last visual mode used @@ -662,19 +825,21 @@ Various: maparg() get rhs of a mapping exists() check if a variable, function, etc. exists has() check if a feature is supported in Vim + changenr() return number of most recent change cscope_connection() check if a cscope connection exists did_filetype() check if a FileType autocommand was used eventhandler() check if invoked by an event handler - getwinposx() X position of the GUI Vim window - getwinposy() Y position of the GUI Vim window - winheight() get height of a specific window - winwidth() get width of a specific window + libcall() call a function in an external library libcallnr() idem, returning a number + getreg() get contents of a register getregtype() get type of a register setreg() set contents and type of a register + taglist() get list of matching tags + tagfiles() get a list of tags files + ============================================================================== *41.7* Defining a function @@ -734,7 +899,16 @@ The complete function definition is as follows: > : return smaller :endfunction -A user defined function is called in exactly the same way as a builtin +For people who like short functions, this does the same thing: > + + :function Min(num1, num2) + : if a:num1 < a:num2 + : return a:num1 + : endif + : return a:num2 + :endfunction + +A user defined function is called in exactly the same way as a built-in function. Only the name is different. The Min function can be used like this: > @@ -821,6 +995,9 @@ This uses the ":echohl" command to specify the highlighting used for the following ":echo" command. ":echohl None" stops it again. The ":echon" command works like ":echo", but doesn't output a line break. +You can also use the a:000 variable, it is a List of all the "..." arguments. +See |a:000|. + LISTING FUNCTIONS @@ -857,8 +1034,327 @@ To delete the Show() function: > You get an error when the function doesn't exist. + +FUNCTION REFERENCES + +Sometimes it can be useful to have a variable point to one function or +another. You can do it with the function() function. It turns the name of a +function into a reference: > + + :let result = 0 " or 1 + :function! Right() + : return 'Right!' + :endfunc + :function! Wrong() + : return 'Wrong!' + :endfunc + : + :if result == 1 + : let Afunc = function('Right') + :else + : let Afunc = function('Wrong') + :endif + :echo call(Afunc, []) +< Wrong! ~ + +Note that the name of a variable that holds a function reference must start +with a capital. Otherwise it could be confused with the name of a builtin +function. + The way to invoke a function that a variable refers to is with the call() +function. Its first argument is the function reference, the second argument +is a List with arguments. + +Function references are most useful in combination with a Dictionary, as is +explained in the next section. + +============================================================================== +*41.8* Lists and Dictionaries + +So far we have used the basic types String and Number. Vim also supports two +composite types: List and Dictionary. + +A List is an ordered sequence of things. The things can be any kind of value, +thus you can make a List of numbers, a List of Lists and even a List of mixed +items. To create a List with three strings: > + + :let alist = ['aap', 'mies', 'noot'] + +The List items are enclosed in square brackets and separated by commas. To +create an empty List: > + + :let alist = [] + +You can add items to a List with the add() function: > + + :let alist = [] + :call add(alist, 'foo') + :call add(alist, 'bar') + :echo alist +< ['foo', 'bar'] ~ + +List concatenation is done with +: > + + :echo alist + ['foo', 'bar'] +< ['foo', 'bar', 'foo', 'bar'] ~ + +Or, if you want to extend a List directly: > + + :let alist = ['one'] + :call extend(alist, ['two', 'three']) + :echo alist +< ['one', 'two', 'three'] ~ + +Notice that using add() will have a different effect: > + + :let alist = ['one'] + :call add(alist, ['two', 'three']) + :echo alist +< ['one', ['two', 'three']] ~ + +The second argument of add() is added as a single item. + + +FOR LOOP + +One of the nice things you can do with a List is iterate over it: > + + :let alist = ['one', 'two', 'three'] + :for n in alist + : echo n + :endfor +< one ~ + two ~ + three ~ + +This will loop over each element in List "alist", assigning the value to +variable "n". The generic form of a for loop is: > + + :for {varname} in {listexpression} + : {commands} + :endfor + +To loop a certain number of times you need a List of a specific length. The +range() function creates one for you: > + + :for a in range(3) + : echo a + :endfor +< 0 ~ + 1 ~ + 2 ~ + +Notice that the first item of the List that range() produces is zero, thus the +last item is one less than the length of the list. + You can also specify the maximum value, the stride and even go backwards: > + + :for a in range(8, 4, -2) + : echo a + :endfor +< 8 ~ + 6 ~ + 4 ~ + +A more useful example, looping over lines in the buffer: > + + :for line in getline(1, 20) + : if line =~ "Date: " + : echo matchstr(line, 'Date: \zs.*') + : endif + :endfor + +This looks into lines 1 to 20 (inclusive) and echoes any date found in there. + + +DICTIONARIES + +A Dictionary stores key-value pairs. You can quickly lookup a value if you +know the key. A Dictionary is created with curly braces: > + + :let uk2nl = {'one': 'een', 'two': 'twee', 'three': 'drie'} + +Now you can lookup words by putting the key in square brackets: > + + :echo uk2nl['two'] +< twee ~ + +The generic form for defining a Dictionary is: > + + {<key> : <value>, ...} + +An empty Dictionary is one without any keys: > + + {} + +The possibilities with Dictionaries are numerous. There are various functions +for them as well. For example, you can obtain a list of the keys and loop +over them: > + + :for key in keys(uk2nl) + : echo key + :endfor +< three ~ + one ~ + two ~ + +The will notice the keys are not ordered. You can sort the list to get a +specific order: > + + :for key in sort(keys(uk2nl)) + : echo key + :endfor +< one ~ + three ~ + two ~ + +But you can never get back the order in which items are defined. For that you +need to use a List, it stores items in an ordered sequence. + + +DICTIONARY FUNCTIONS + +The items in a Dictionary can normally be obtained with an index in square +brackets: > + + :echo uk2nl['one'] +< een ~ + +A method that does the same, but without so many punctuation characters: > + + :echo uk2nl.one +< een ~ + +This only works for a key that is made of ASCII letters, digits and the +underscore. You can also assign a new value this way: > + + :let uk2nl.four = 'vier' + :echo uk2nl +< {'three': 'drie', 'four': 'vier', 'one': 'een', 'two': 'twee'} ~ + +And now for something special: you can directly define a function and store a +reference to it in the dictionary: > + + :function uk2nl.translate(line) dict + : return join(map(split(a:line), 'get(self, v:val, "???")')) + :endfunction + +Let's first try it out: > + + :echo uk2nl.translate('three two five one') +< drie twee ??? een ~ + +The first special thing you notice is the "dict" at the end of the ":function" +line. This marks the function as being used from a Dictionary. The "self" +local variable will then refer to that Dictionary. + Now let's break up the complicated return command: > + + split(a:line) + +The split() function takes a string, chops it into white separated words +and returns a list with these words. Thus in the example it returns: > + + :echo split('three two five one') +< ['three', 'two', 'five', 'one'] ~ + +This list is the first argument to the map() function. This will go through +the list, evaluating its second argument with "v:val" set to the value of each +item. This is a shortcut to using a for loop. This command: > + + :let alist = map(split(a:line), 'get(self, v:val, "???")') + +Is equivalent to: > + + :let alist = split(a:line) + :for idx in range(len(alist)) + : let alist[idx] = get(self, alist[idx], "???") + :endfor + +The get() function checks if a key is present in a Dictionary. If it is, then +the value is retrieved. If it isn't, then the default value is returned, in +the example it's '???'. This is a convenient way to handle situations where a +key may not be present and you don't want an error message. + +The join() function does the opposite of split(): it joins together a list of +words, putting a space in between. + This combination of split(), map() and join() is a nice way to filter a line +of words in a very compact way. + + +OBJECT ORIENTED PROGRAMMING + +Now that you can put both values and functions in a Dictionary, you can +actually use a Dictionary like an object. + Above we used a Dictionary for translating Dutch to English. We might want +to do the same for other languages. Let's first make an object (aka +Dictionary) that has the translate function, but no words to translate: > + + :let transdict = {} + :function transdict.translate(line) dict + : return join(map(split(a:line), 'get(self.words, v:val, "???")')) + :endfunction + +It's slightly different from the function above, using 'self.words' to lookup +word translations. But we don't have a self.words. Thus you could call this +an abstract class. + +Now we can instantiate a Dutch translation object: > + + :let uk2nl = copy(transdict) + :let uk2nl.words = {'one': 'een', 'two': 'twee', 'three': 'drie'} + :echo uk2nl.translate('three one') +< drie een ~ + +And a German translator: > + + :let uk2de = copy(transdict) + :let uk2de.words = {'one': 'ein', 'two': 'zwei', 'three': 'drei'} + :echo uk2de.translate('three one') +< drei ein ~ + +You see that the copy() function is used to make a copy of the "transdict" +Dictionary and then the copy is changed to add the words. The original +remains the same, of course. + +Now you can go one step further, and use your preferred translator: > + + :if $LANG =~ "de" + : let trans = uk2de + :else + : let trans = uk2nl + :endif + :echo trans.translate('one two three') +< een twee drie ~ + +Here "trans" refers to one of the two objects (Dictionaries). No copy is +made. More about List and Dictionary identity can be found at |list-identity| +and |dict-identity|. + +Now you might use a language that isn't supported. You can overrule the +translate() function to do nothing: > + + :let uk2uk = copy(transdict) + :function! uk2uk.translate(line) + : return a:line + :endfunction + :echo uk2uk.translate('three one wladiwostok') +< three one wladiwostok ~ + +Notice that a ! was used to overwrite the existing function reference. Now +use "uk2uk" when no recognized language is found: > + + :if $LANG =~ "de" + : let trans = uk2de + :elseif $LANG =~ "nl" + : let trans = uk2nl + :else + : let trans = uk2uk + :endif + :echo trans.translate('one two three') +< one two three ~ + +For further reading see |Lists| and |Dictionaries|. + ============================================================================== -*41.8* Exceptions +*41.9* Exceptions Let's start with an example: > @@ -915,7 +1411,7 @@ More information about exception handling can be found in the reference manual: |exception-handling|. ============================================================================== -*41.9* Various remarks +*41.10* Various remarks Here is a summary of items that apply to Vim scripts. They are also mentioned elsewhere, but form a nice checklist. @@ -986,7 +1482,9 @@ commands (there are a few more commands with this restriction). For the :execute cmd |" do it With the '|' character the command is separated from the next one. And that -next command is only a comment. +next command is only a comment. For the last command you need to do two +things: |:execute| and use '|': > + :exe '!ls *.c' |" list C files Notice that there is no white space before the '|' in the abbreviation and mapping. For these commands, any character until the end-of-line or '|' is @@ -995,9 +1493,19 @@ trailing whitespace is included: > :map <F4> o#include -To avoid these problems, you can set the 'list' option when editing vimrc +To spot these problems, you can set the 'list' option when editing vimrc files. +For Unix there is one special way to comment a line, that allows making a Vim +script executable: > + #!/usr/bin/env vim -S + echo "this is a Vim script" + quit + +The "#" command by itself lists a line with the line number. Adding an +exclamation mark changes it into doing nothing, so that you can add the shell +command to execute the rest of the file. |:#!| |-S| + PITFALLS @@ -1073,7 +1581,7 @@ Example: > let XXX_loaded = 1 ============================================================================== -*41.10* Writing a plugin *write-plugin* +*41.11* Writing a plugin *write-plugin* You can write a Vim script in such a way that many people can use it. This is called a plugin. Vim users can drop your script in their plugin directory and @@ -1486,13 +1994,13 @@ hasmapto() Function to test if the user already defined a mapping exists(":Cmd") Check if a user command already exists. ============================================================================== -*41.11* Writing a filetype plugin *write-filetype-plugin* *ftplugin* +*41.12* Writing a filetype plugin *write-filetype-plugin* *ftplugin* A filetype plugin is like a global plugin, except that it sets options and defines mappings for the current buffer only. See |add-filetype-plugin| for how this type of plugin is used. -First read the section on global plugins above |41.10|. All that is said there +First read the section on global plugins above |41.11|. All that is said there also applies to filetype plugins. There are a few extras, which are explained here. The essential thing is that a filetype plugin should only have an effect on the current buffer. @@ -1672,7 +2180,7 @@ exists("*s:Func") Check if a function was already defined. Also see |plugin-special|, the special things used for all plugins. ============================================================================== -*41.12* Writing a compiler plugin *write-compiler-plugin* +*41.13* Writing a compiler plugin *write-compiler-plugin* A compiler plugin sets options for use with a specific compiler. The user can load it with the |:compiler| command. The main use is to set the @@ -1696,7 +2204,7 @@ a user to overrule or add to the default file. The default files start with: > When you write a compiler file and put it in your personal runtime directory (e.g., ~/.vim/compiler for Unix), you set the "current_compiler" variable to make the default file skip the settings. - + *:CompilerSet* The second mechanism is to use ":set" for ":compiler!" and ":setlocal" for ":compiler". Vim defines the ":CompilerSet" user command for this. However, older Vim versions don't, thus your plugin should define it then. This is an @@ -1717,6 +2225,161 @@ don't check "current_compiler". This plugin is supposed to be loaded last, thus it should be in a directory at the end of 'runtimepath'. For Unix that could be ~/.vim/after/compiler. +============================================================================== +*41.14* Writing a plugin that loads quickly *write-plugin-quickload* + +A plugin may grow and become quite long. The startup delay may become +noticeable, while you hardly every use the plugin. Then it's time for a +quickload plugin. + +The basic idea is that the plugin is loaded twice. The first time user +commands and mappings are defined that offer the functionality. The second +time the functions that implement the functionality are defined. + +It may sound surprising that quickload means loading a script twice. What we +mean is that it loads quickly the first time, postponing the bulk of the +script to the second time, which only happens when you actually use it. When +you always use the functionality it actually gets slower! + +Note that since Vim 7 there is an alternative: use the |autoload| +functionality |41.15|. + +The following example shows how it's done: > + + " Vim global plugin for demonstrating quick loading + " Last Change: 2005 Feb 25 + " Maintainer: Bram Moolenaar <Bram@vim.org> + " License: This file is placed in the public domain. + + if !exists("s:did_load") + command -nargs=* BNRead call BufNetRead(<f-args>) + map <F19> :call BufNetWrite('something')<CR> + + let s:did_load = 1 + exe 'au FuncUndefined BufNet* source ' . expand('<sfile>') + finish + endif + + function BufNetRead(...) + echo 'BufNetRead(' . string(a:000) . ')' + " read functionality here + endfunction + + function BufNetWrite(...) + echo 'BufNetWrite(' . string(a:000) . ')' + " write functionality here + endfunction + +When the script is first loaded "s:did_load" is not set. The commands between +the "if" and "endif" will be executed. This ends in a |:finish| command, thus +the rest of the script is not executed. + +The second time the script is loaded "s:did_load" exists and the commands +after the "endif" are executed. This defines the (possible long) +BufNetRead() and BufNetWrite() functions. + +If you drop this script in your plugin directory Vim will execute it on +startup. This is the sequence of events that happens: + +1. The "BNRead" command is defined and the <F19> key is mapped when the script + is sourced at startup. A |FuncUndefined| autocommand is defined. The + ":finish" command causes the script to terminate early. + +2. The user types the BNRead command or presses the <F19> key. The + BufNetRead() or BufNetWrite() function will be called. + +3. Vim can't find the function and triggers the |FuncUndefined| autocommand + event. Since the pattern "BufNet*" matches the invoked function, the + command "source fname" will be executed. "fname" will be equal to the name + of the script, no matter where it is located, because it comes from + expanding "<sfile>" (see |expand()|). + +4. The script is sourced again, the "s:did_load" variable exists and the + functions are defined. + +Notice that the functions that are loaded afterwards match the pattern in the +|FuncUndefined| autocommand. You must make sure that no other plugin defines +functions that match this pattern. + +============================================================================== +*41.15* Writing library scripts *write-library-script* + +Some functionality will be required in several places. When this becomes more +than a few lines you will want to put it in one script and use it from many +scripts. We will call that one script a library script. + +Manually loading a library script is possible, so long as you avoid loading it +when it's already done. You can do this with the |exists()| function. +Example: > + + if !exists('*MyLibFunction') + runtime library/mylibscript.vim + endif + call MyLibFunction(arg) + +Here you need to know that MyLibFunction() is defined in a script +"library/mylibscript.vim" in one of the directories in 'runtimepath'. + +To make this a bit simpler Vim offers the autoload mechanism. Then the +example looks like this: > + + call mylib#myfunction(arg) + +That's a lot simpler, isn't it? Vim will recognize the function name and when +it's not defined search for the script "autoload/mylib.vim" in 'runtimepath'. +That script must define the "mylib#myfunction()" function. + +You can put many other functions in the mylib.vim script, you are free to +organize your functions in library scripts. But you must use function names +where the part before the '#' matches the script name. Otherwise Vim would +not know what script to load. + +If you get really enthusiastic and write lots of library scripts, you may +want to use subdirectories. Example: > + + call netlib#ftp#read('somefile') + +For Unix the library script used for this could be: + + ~/.vim/autoload/netlib/ftp.vim + +Where the function is defined like this: > + + function netlib#ftp#read(fname) + " Read the file fname through ftp + endfunction + +Notice that the name the function is defined with is exactly the same as the +name used for calling the function. And the part before the last '#' +exactly matches the subdirectory and script name. + +You can use the same mechanism for variables: > + + let weekdays = dutch#weekdays + +This will load the script "autoload/dutch.vim", which should contain something +like: > + + let dutch#weekdays = ['zondag', 'maandag', 'dinsdag', 'woensdag', + \ 'donderdag', 'vrijdag', 'zaterdag'] + +Further reading: |autoload|. + +============================================================================== +*41.16* Distributing Vim scripts *distribute-script* + +Vim users will look for scripts on the Vim website: http://www.vim.org. +If you made something that is useful for others, share it! + +Vim scripts can be used on any system. There might not be a tar or gzip +command. If you want to pack files together and/or compress them the "zip" +utility is recommended. + +For utmost portability use Vim itself to pack scripts together. This can be +done with the Vimball utility. See |vimball|. + +It's good if you add a line to allow automatic updating. See |glvs-plugins|. + ============================================================================== Next chapter: |usr_42.txt| Add new menus diff --git a/ja/usr_41.jax b/ja/usr_41.jax index 09d457ee7..0f8c05926 100644 --- a/ja/usr_41.jax +++ b/ja/usr_41.jax @@ -1,9 +1,10 @@ COMMENT: Vimスクリプト書法 -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*usr_41.txt* For Vim version 6.3. Last change: 2004 May 06 +*usr_41.txt* For Vim version 7.1. Last change: 2007 Apr 26 VIM USER MANUAL - by Bram Moolenaar @@ -21,18 +22,22 @@ vimスクリプト言語は、起動時のvimrcファイル、シンタックス |41.5| 式の実行 |41.6| 関数を使う |41.7| 関数を定義する -|41.8| 例外 -|41.9| いろんな注釈 -|41.10| プラグインを書く -|41.11| ファイルタイププラグインを書く -|41.12| コンパイラプラグインを書く +|41.8| リストと辞書 +|41.9| 例外 +|41.10| いろんな注釈 +|41.11| プラグインを書く +|41.12| ファイルタイププラグインを書く +|41.13| コンパイラプラグインを書く +|41.14| 高速に読み込まれるプラグインを書く +|41.15| ライブラリスクリプトを書く +|41.16| Vimスクリプトを配布する Next chapter: |usr_42.txt| 新たなメニューを作る Previous chapter: |usr_40.txt| 新たなコマンドを作る Table of contents: |usr_toc.txt| ============================================================================== -*41.1* はじめに *vim-script-intro* +*41.1* はじめに *vim-script-intro* *script* 一番最初に見るvimスクリプトはvimrc ファイルでしょう。vimは起動する時にこの ファイルを読み込み、書いてあるコマンドを実行します。あなたの好みに合せて、 @@ -48,7 +53,7 @@ Table of contents: |usr_toc.txt| :let i = 1 :while i < 5 : echo "count is" i - : let i = i + 1 + : let i += 1 :endwhile < Note: @@ -56,8 +61,19 @@ Table of contents: |usr_toc.txt| 必要です。vimスクリプトファイルでは、取り除いても構いません。 ここでは、これらが":"コマンドであり、通常コマンドとは違っていること をハッキリさせるために使っています。 + Note: + ここからテキストをヤンクして、:@"として実行することでこの例を試してみ + ることができます。 -":let"コマンドは変数に値を代入します。一般的な書式は次の通りです。 > +この例の出力は次のようになります: + + count is 1 ~ + count is 2 ~ + count is 3 ~ + count is 4 ~ + +1行目で":let"コマンドにより変数に値を代入しています。一般的な書式は次の通りで +す。 > :let {variable} = {expression} @@ -71,33 +87,37 @@ Table of contents: |usr_toc.txt| 呼応する":endwhile"までの間にある命令はwhileの条件({condition})が True であ る間、繰り返して実行します。ここでの条件は"i < 5"という式です。これは変数 i が5よりも小さい間は True となります。 + Note: + 誤ってループが止まらなくなってしまったときは、CTRL-C (MS-Windowsでは + CTRL-Break)を押すことで中断できます。 + ":echo"コマンドはパラメタの内容を表示します。ここでは"count is"という文字列 と変数 i の内容となります。i が1であれば、このような結果となります。 count is 1 ~ -ここにはさらに":let i ="というコマンドがあります。ここで使われる値は"i + 1" -という式です。結局、変数 i の内容に1を加え、その値を同じ変数の新たな値とし -て代入します。 -この例の実行結果は次のようになります。 +ここにはさらに":let i += 1"というコマンドがあります。これは":let i = i + 1"と +同じことをします。変数 i の内容に1を加え、その値を同じ変数の新たな値として代 +入します。 - count is 1 ~ - count is 2 ~ - count is 3 ~ - count is 4 ~ +この例はコマンドの説明として出しましたが、実際にこういったループを書きたいとき +は、より簡潔に次のように書くことができます: > - Note: - もし、whileループの中で動きっぱなしになってしまったら、CTRL-Cを - (MS-WindowsではCTRL-Break)を押して強制割込してください。 + :for i in range(1, 4) + : echo "count is" i + :endfor + +|:for|と|range()|の説明はずっと先にあります。すぐに読みたい場合は、このリンク +をたどってください。 3種類の数字 ----------- 数字には10進数、16進数、8進数のいずれかを指定できます。16進数は先頭が"0x"か -"0X"で始まります。例えば"0x1f"は31のことです。8進数は先頭が"0"で始まります。 -例えば、"017"は15です。10進数のつもりで先頭に"0"を付けないように注意してくだ -さい。8進数として扱われてしまいます。 +"0X"で始まります。例えば"0x1f"は10進数の31のことです。8進数は先頭が"0"で始まり +ます。例えば、"017"は10進数の15です。10進数のつもりで先頭に"0"を付けないように +注意してください。8進数として扱われてしまいます。 ":echo"コマンドは常に10進数で出力を行います。このようになります。 > :echo 0x7f 036 @@ -109,9 +129,9 @@ Table of contents: |usr_toc.txt| :echo 0x7f -036 < 97 ~ -式の途中にある空白は無視します。とはいっても項目のセパレータに空白を使うと、 -式の可読性を高めることになりますのでお勧めします。例えば、負数であるかのよう -な誤解を防ぐために、マイナス記号に続く数値の前には空白を置きましょう。 > +式の途中にある空白は無視します。とはいっても項目のセパレータに空白を使うと、式 +の可読性を高めることになりますのでお勧めします。例えば上の例で、負数であるかの +ような誤解を防ぐために、マイナス記号に続く数値の前には空白を置きましょう。 > :echo 0x7f - 036 @@ -145,7 +165,7 @@ Table of contents: |usr_toc.txt| :let s:count = 1 :while s:count < 5 : source other.vim - : let s:count = s:count + 1 + : let s:count += 1 :endwhile "s:count"はスクリプト内にローカルですから、"other.vim"というスクリプトからは @@ -196,15 +216,20 @@ Table of contents: |usr_toc.txt| ビックリマーク(exclamation mark)は値を反転します。変数がTrueの場合はFalseと なり、Falseの場合はTrueになります。これを"not"と呼いんでも構いません。つまり "if !exists()"は"if not exists()"とも読めるということです。 -vimでは、0以外の値は全てTrueです。 +vimでは、0以外の値は全てTrueです。0はFalseです。 + Note: + 数値が期待される文脈においては、文字列は自動的に数値に変換されます。数 + 字で始まらない文字列は0に変換されます。つまり、次の例を見てください: > + :if "true" +< "true"は0に変換されるので、Falseとなります。 文字列変数と定数 ---------------- ここまでは、変数の値には数値だけを使ってきました。値には文字列も使えます。vim -で扱える型は数値と文字列の2種類だけです。 型は":let"コマンドで変数に値を代 -入する度に動的に変化します。 +で扱える基本型は数値と文字列です。 型は":let"コマンドで変数に値を代入する度に +動的に変化します。詳しくは|41.8|を参照してください。 変数に文字列値を代入するには文字列定数を使います。文字列定数には2つのタイプ があります。1つ目はダブルクオート(")で囲った文字列です。 > @@ -225,9 +250,10 @@ vimでは、0以外の値は全てTrueです。 :echo name < "peter" ~ -シングルクオートで囲った場合、全ての文字は見た目の通りの意味となります。この -ため、中にシングルクオートを含むことはできません。バックスラッシュも見た目の -通りに扱われるため、次の文字の特殊な意味を打ち消すといった働きをしません。 +シングルクオートで囲った場合、全ての文字は見た目の通りの意味となります。シング +ルクオートのみが特別な意味を持ちます。シングルクオート1つを出すには、2個連続さ +せます。バックスラッシュも見た目の通りに扱われるため、次の文字の特殊な意味を打 +ち消すといった働きをしません。 ダブルクオートで囲った文字列には特殊な意味の文字が使えます。以下に便利なもの を掲げておきます。 @@ -275,6 +301,7 @@ vimには豊富ながらもシンプルな方法で式の処理を行えます 'ignorecase'オプションをoffにすることで、"The Start"パターンの検索を明示的に 大文字と小文字を分別させています。また、保存しておいた値を後で戻しています。 +もう1つの方法としては、パターンに"\C"をつけることです。|/\C|を参照。 演算 @@ -382,7 +409,7 @@ vimrcファイルで便利に使えるサンプルを例にしましょう。こ この結果は条件に合致していれば1、そうでなければ0となります。例を示しま しょう。 > - :if v:version >= 600 + :if v:version >= 700 : echo "congratulations" :else : echo "you are using an old version, upgrade!" @@ -459,6 +486,8 @@ vimrcファイルで便利に使えるサンプルを例にしましょう。こ ":sleep"コマンドを使うと一定時間、何もしないようにできます。"50m"という指定 なら、50ミリ秒となります。また":sleep 4"であれば、4秒スリープします。 +また、":for"コマンドを使うことでもループができます。|41.8|を参照。 + ============================================================================== *41.5* 式を実行する @@ -501,6 +530,17 @@ vimrcファイルで便利に使えるサンプルを例にしましょう。こ さい。これはスクリプトの中での本当の<Esc>記号が入力されるのを避けるのに必要 です。 +文字列を実行するのでなく、それを評価して値を取得したいときは、eval()を使いま +す: > + + :let optname = "path" + :let optval = eval('&' . optname) + +文字'&'を"path"の前につけているので、eval()の引数は"&path"となります。そのため、 +この結果はオプション'path'の値となります。 +同じことは次のようにしてもできます: > + :exe 'let optval = &' . optname + ============================================================================== *41.6* 関数の利用 @@ -524,7 +564,7 @@ search()関数は最初のパラメタが検索パターンで、2つ目がフ :let repl = substitute(line, '\a', "*", "g") :call setline(".", repl) -getline() 関数は現在のファイルから1行を抽出する関数です。パラメタには行番号を +getline() 関数は現在のバッファから1行を抽出する関数です。パラメタには行番号を 指定します。この場合は"."ですが、これは現在カーソルのある行を示します。 substitute()関数は":substitute"コマンドとほぼ同じです。最初のパラメタは置き換 えを実行する文字列で、2つ目のパラメタはパターン、3つ目は置き換える文字列、最 @@ -546,16 +586,20 @@ setline() 関数は1つ目のパラメタでの指定行を、2つ目のパ 説明がご覧いただけます。 文字列繰作: - char2nr() 文字のASCII値を得る。 nr2char() ASCII値から文字を得る + char2nr() 文字のASCII値を得る + str2nr() 文字列を数値に変換する + printf() %項目に従って文字列を整形する escape() '\'で始まるように文字をクオートする - strtrans() 文字列を印刷可能な状態とする。 + tr() ある文字の集合を別の文字の集合へ置き換える + strtrans() 文字列を印刷可能な状態とする tolower() 文字列を小文字にする toupper() 文字列を大文字にする match() 文字列の中でパターンが一致する桁位置を返す matchend() 文字列の中でパターンと一致する末尾の桁位置を 返す matchstr() 文字列の中で一致したパターンを返す + matchlist() matchstr()と同様だが、部分一致も返す。 stridx() 長い文字列の中にある短かい文字列の最初の位置 strridx() 長い文字列の中にある短かい文字列の最後の位置 strlen() 文字列の長さ @@ -563,49 +607,129 @@ setline() 関数は1つ目のパラメタでの指定行を、2つ目のパ submatch() ":substitute"の中で合致した部分を得る strpart() 文字列の一部分を得る expand() 特定のキーワードを拡張する - type() 変数のタイプを得る iconv() テキストのエンコーディングを変換する + byteidx() 文字列におけるある文字のバイトのインデックス + repeat() 文字列を複数回繰り返す + eval() 文字列の式を評価する + +リスト操作: + get() 要素を取得。存在しないインデックスでもエラーを + 出さない + len() リスト中の要素の個数 + empty() リストが空であるか判定する + insert() リストの任意の位置に要素を挿入する + add() リストに要素を追加する + extend() リストにリストを連結する + remove() リストから1個以上の要素を取り除く + copy() リストの浅いコピーを作成する + deepcopy() リストの完全なコピーを作成する + filter() リストから選択された要素を取り除く + map() リストの各要素を変換する + sort() リストをソートする + reverse() リストの並び順を反転させる + split() 文字列を分割し、リストにする + join() リストの要素を連結し、文字列にする + range() 数列リストを返す + string() リストの文字列表現 + call() リストを引数として関数を呼ぶ + index() リスト中の要素のインデックス + max() リスト中の最大値 + min() リスト中の最小値 + count() ある要素がリスト中に出現する回数を返す + repeat() リストを複数回繰り返す + +辞書操作: + get() 辞書の要素を返す。存在しないキーでもエラーを出 + さない + len() 辞書の要素の個数 + has_key() あるキーが辞書に含まれているか判定する + empty() 辞書が空であるか判定する + remove() 辞書から要素を取り除く + extend() ある辞書の要素をすべて別の辞書に追加する + filter() 辞書から選択された要素を取り除く + map() 辞書の各要素を変換する + keys() 辞書の全キーのリストを取得する + values() 辞書の全値のリストを取得する + items() 辞書の全キー・値のペアを取得する + copy() 辞書の浅いコピーを作成する + deepcopy() 辞書の完全なコピーを作成する + string() 辞書の文字列表現 + max() 辞書中の最大値 + min() 辞書中の最小値 + count() ある値が出現する回数を返す + +変数: + type() 変数の型 + islocked() 変数がロックされているか判定する + function() 関数名からFuncrefを取得する + getbufvar() 指定バッファの変数値を得る + setbufvar() 指定バッファに変数を設定する + getwinvar() 指定ウィンドウの変数値を得る + gettabwinvar() 指定ウィンドウ・タブページから変数値を取得する + setwinvar() 指定ウィンドウに変数を設定する + settabwinvar() 指定ウィンドウ・タブページに変数を設定する + garbagecollect() メモリの解放を指示する -現在のバッファ内のテキストの繰作 - byte2line() 指定のバイト位置の行番号を得る - line2byte() 指定の行のバイト位置を得る +カーソルとマークの位置: col() カーソル位置かマーク位置の桁位置を得る virtcol() カーソル位置かマーク位置の画面上の桁位置を得る line() カーソル位置かマーク位置の行番号を得る wincol() カーソルのウィンドウカラム番号 winline() カーソル位置の画面上での行数 cursor() カーソルを指定した位置に移動させる + getpos() カーソル・マークなどの位置を取得する + setpos() カーソル・マークなどの位置を設定する + byte2line() 指定のバイト位置の行番号を得る + line2byte() 指定の行のバイト位置を得る + diff_filler() ある行より上に挿入された行の数を取得する + +現在のバッファ内のテキストの繰作: getline() バッファから行を得る setline() バッファの行を入れ換える - append() {lnum}で指定した行の下に{string}を追加する + append() バッファに行・行のリストを追加する indent() 指定の行をインデントする cindent() C言語のルールに基いてインデントを行う lispindent() Lisp 言語のルールに基いてインデントを行う nextnonblank() 次の空行を探す。 prevnonblank() 逆方向に空行を探す search() パターンに合致する場所を探す + searchpos() パターンに合致する場所を探す searchpair() start/skip/endの呼応しているものを探す + searchpairpos() start/skip/endの呼応しているものを探す + searchdecl() ある名前の宣言を探す -システム関数とファイル繰作 - browse() 指定のファイルを見る +システム関数とファイル繰作: glob() ワイルドカードを拡張する globpath() 指定のディレクトリのワイルドカードを全部拡張 + findfile() ディレクトリのリストからファイルを探す + finddir() ディレクトリのリストからディレクトリを探す resolve() ショートカットがどこを示しているか探す - fnamemodify() ファイル名を変更する。 + fnamemodify() ファイル名を変更する + pathshorten() パス中のディレクトリ名を短くする + simplify() パスの意味を変えずに簡略化する executable() 実行形式ファイルかどうかをチェックする filereadable() ファイルが読み込み可能かどうかをチェックする filewritable() ファイルが書き込み可能かどうかをチェックする + getfperm() ファイルのパーミッションを取得する + getftype() ファイルの種類を取得する isdirectory() ディレクトリがあるかどうかをチェックする + getfsize() ファイルのサイズを取得する getcwd() 現在のカレントディレクトリを得る - getfsize() ファイルのサイズを得る - getftime() ファイルの最終更新日時を得る - localtime() 現在時刻を得る - strftime() 時刻を文字列に変換する - tempname() テンポラリファイルの名前を得る。 + tempname() テンポラリファイルの名前を得る + mkdir() create a new directory delete() ファイルを削除する rename() ファイル名を変える system() シェルコマンドを実行し、その結果を知る hostname() システムの名称を得る + readfile() ファイルを読み込み、行のリストにする + writefile() 行のリストをファイルに書き込む + +日付と時刻: + getftime() ファイルの最終更新日時を得る + localtime() 現在時刻を秒単位で得る + strftime() 時刻を文字列に変換する + reltime() 現在時刻または経過時間を正確に取得する + reltimestr() reltime()の結果を文字列に変換する バッファ、ウィンドウ、パラメタリストの繰作 argc() パラメタリストの項目数 @@ -618,26 +742,52 @@ setline() 関数は1つ目のパラメタでの指定行を、2つ目のパ チェックする bufname() 指定バッファの名前を得る bufnr() 指定バッファのバッファ番号を得る + tabpagebuflist() タブページ中のバッファのリストを返す + tabpagenr() タブページの番号を取得する + tabpagewinnr() タブページを対象にwinnr()と同様 winnr() 現在バッファのウィンドウ番号を得る bufwinnr() 現在バッファのウィンドウ番号を得る winbufnr() 指定ウィンドウのバッファ番号を得る - getbufvar() 指定バッファの変数値を得る - setbufvar() 指定バッファに変数を設定する - getwinvar() 指定ウィンドウの変数値を得る - setwinvar() 指定ウィンドウに変数を設定する + getbufline() 指定のバッファから行のリストを得る + +コマンドライン: + getcmdline() 現在のコマンドラインを取得 + getcmdpos() コマンドラインにおけるカーソル位置を取得 + setcmdpos() コマンドラインにおけるカーソル位置を設定 + getcmdtype() 現在のコマンドラインのタイプを返す + +Quickfixとロケーションリスト: + getqflist() quickfixエラーのリスト + setqflist() quickfixを変更する + getloclist() ロケーションリストの項目のリスト + setloclist() ロケーションリストを変更する + +インサートモード補完: + complete() マッチリストを設定する + complete_add() マッチリストに追加する + complete_check() 補完を強制終了すべきかどうか判定する + pumvisible() ポップアップメニューが表示されているか判定 フォールド(折り畳み処理) foldclosed() 指定の行に閉じたフォールドがあるかチェック foldclosedend() foldclosed()に似ている。最後の行番号を返す foldlevel() 指定の行のフォールドレベルをチェック foldtext() 閉じたフォールドの表示行を生成 + foldtextresult() 閉じた折りたたみに表示されているテキストを取得 シンタックスハイライト hlexists() ハイライトグループがあるかチェック - hlID() ハイライトグループのIDを得る - synID() 指定の場所のシンタックスIDを得る - synIDattr() シンタックスIDの指定の属性を得る - synIDtrans() 変換したシンタックスIDを得る + hlID() ハイライトグループのIDを得る + synID() 指定の場所のシンタックスIDを得る + synIDattr() シンタックスIDの指定の属性を得る + synIDtrans() 変換したシンタックスIDを得る + diff_hlID() diffモードの指定位置のシンタックスIDを得る + matcharg() |:match|の引数の情報を得る + +スペリング: + spellbadword() カーソル位置以降のスペルミスを探す + spellsuggest() スペル訂正の候補を返す + soundfold() 単語のsound-a-like equivalentを返す 履歴 histadd() 履歴に項目を追加 @@ -646,15 +796,23 @@ setline() 関数は1つ目のパラメタでの指定行を、2つ目のパ histnr() 履歴の最大番号を得る 会話処理 + browse() ファイル選択ダイアログを開く + browsedir() ディレクトリ選択ダイアログを開く confirm() 利用者に選択をさせる getchar() 利用者の入力した文字を得る getcharmod() 最後に入力した識別子(modifier)を得る input() 利用者の入力した行を得る + inputlist() 利用者にリストから項目を選択させる inputsecret() 利用者の入力した行を得る。ただし表示はしない inputdialog() ダイアログを使って利用者の入力した行を得る inputsave() 先行した入力を保存して状態をクリアする inputrestore() inputsave()で保存した状態に戻す +GUI: + getfontname() 現在使っているフォントの名前を取得 + getwinposx() GUIのVimウィンドウのX座標 + getwinposy() GUIのVimウィンドウのY座標 + vimサーバ serverlist() サーバ名のリストを返す remote_send() vimサーバにコマンド文字を送る @@ -665,6 +823,13 @@ vimサーバ foreground() vimのウィンドウを前面に持ってくる remote_foreground() vimサーバのウィンドウを前面に持ってくる +ウィンドウサイズと位置: + winheight() 指定ウィンドウの高さを取得 + winwidth() 指定ウィンドウの幅を取得 + winrestcmd() ウィンドウサイズを復元するコマンドを返す + winsaveview() カレントウィンドウのビューを取得 + winrestview() カレントウィンドウの保存したビューを復元 + その他 mode() 現在の編集モードを得る visualmode() 最後にビジュアルモードを使った時の情報 @@ -673,19 +838,20 @@ vimサーバ maparg() マップのrhsを得る exists() 変数、関数などがあるかどうかチェック has() vimが機能をサポートしているかをチェック + changenr() 最近の変更の番号を返す cscope_connection() cscope接続があるかどうかをチェック did_filetype() FileType自動コマンドを使っているかをチェック eventhandler() イベントハンドラによって起動されたかをチェック - getwinposx() GUI版vimウィンドウのX座標 - getwinposy() GUI版vimウィンドウのY座標 - winheight() 指定ウィンドウの高さを得る - winwidth() 指定ウィンドウの横巾を得る libcall() 外部ライブラリの関数を呼ぶ libcallnr() 同上、ただし、復帰値を見る + getreg() レジスタの値を得る getregtype() レジスタのタイプを得る setreg() レジスタの値を設定する + taglist() マッチするタグのリストを取得 + tagfiles() タグファイルのリストを取得 + ============================================================================== *41.7* 関数の定義 @@ -745,6 +911,15 @@ vimでは自作の関数を定義することができます。基本的な関 : return smaller :endfunction +短い関数が好きな人向けには、次のコードも同じことをします: > + + :function Min(num1, num2) + : if a:num1 < a:num2 + : return a:num1 + : endif + : return a:num2 + :endfunction + ユーザ定義関数は組み込み関数の場合と全く同じ方法で呼び出します。違いは名前だ けです。上で定義した"Min"関数の場合なら次のように使います。 > @@ -831,6 +1006,9 @@ vimではパラメタが可変個となるような関数を定義できます っています。":echohl None"はそれを停止しています。":echon"コマンドは":echo" と同様ですが、最後の改行を出力しません。 +変数a:000を使うこともできます。これは"..."で表した引数全部のリストです。 +|a:000|を参照。 + 関数のリスト ------------ @@ -869,11 +1047,322 @@ vimではパラメタが可変個となるような関数を定義できます 存在しない関数を削除しようとするとエラーとなります。 + +関数への参照 + +ときに、関数を参照する変数があると役に立つことがあります。これは関数function +()をつかうことで実現できます。この関数は関数の名前を受け取り、その関数への参照 +を返します: > + + :let result = 0 " or 1 + :function! Right() + : return 'Right!' + :endfunc + :function! Wrong() + : return 'Wrong!' + :endfunc + : + :if result == 1 + : let Afunc = function('Right') + :else + : let Afunc = function('Wrong') + :endif + :echo call(Afunc, []) +< Wrong! ~ + +Note 関数への参照を保持する変数の名前は大文字で始めなければなりません。そうで +ないと組み込み関数の名前との混乱を招きます。 +変数が参照する関数を呼び出すには、関数call()を使います。そのとき最初の引数は関 +数への参照で、2番目の引数は全引数のリストになります。 + +関数への参照は、次節で説明される辞書と組み合わせたときもっとも役に立ちます。 + ============================================================================== -*41.8* 例外 +*41.8* リストと辞書 + +ここまでは基本型(文字列と数値)を扱ってきました。Vimはリストと辞書という複合型 +も備えています。 + +リストとは、要素の順序つきの列です。要素はどんな種類の値でもよく、数値のリスト、 +リストのリスト、さらには要素の混在したリストでも作れます。3個の文字列からなる +リストを作るには次のようにします: > + + :let alist = ['aap', 'mies', 'noot'] + +リストの要素は角括弧で囲み、コンマで区切られます。空のリストを作るには次のよう +にします: > + + :let alist = [] + +関数add()を使うとリストに要素を追加することができます: > + + :let alist = [] + :call add(alist, 'foo') + :call add(alist, 'bar') + :echo alist +< ['foo', 'bar'] ~ + +リストの連結には + を使います: > + + :echo alist + ['foo', 'bar'] +< ['foo', 'bar', 'foo', 'bar'] ~ + +直接リストを拡張するには次のようにします: > + + :let alist = ['one'] + :call extend(alist, ['two', 'three']) + :echo alist +< ['one', 'two', 'three'] ~ + +add()とは効果が異なることに注意してください: > + + :let alist = ['one'] + :call add(alist, ['two', 'three']) + :echo alist +< ['one', ['two', 'three']] ~ + +add()の第二引数は1つの要素として追加されます。 + +FORループ + +リストを使ってできる素晴らしいことの1つが、リストに対する繰り返しです: > + + :let alist = ['one', 'two', 'three'] + :for n in alist + : echo n + :endfor +< one ~ + two ~ + three ~ + +上の例は、リスト"alist"の各要素に対して、その値を変数"n"に代入しながらループを +行います。forループの一般的な書式は次の通りです: > + + :for {varname} in {listexpression} + : {commands} + :endfor + +ある回数だけループするには、その長さのリストを使います。関数range()を使うと、 +そのようなリストを作成できます: > + + :for a in range(3) + : echo a + :endfor +< 0 ~ + 1 ~ + 2 ~ + +range()が生成するリストの最初の要素は0であることに注意してください。そのた +め、最後の要素はリストの長さより1小さい値になります。 +最大値、ステップ幅を指定することもでき、逆方向に進むこともできます: > + + :for a in range(8, 4, -2) + : echo a + :endfor +< 8 ~ + 6 ~ + 4 ~ + +より有用な例として、バッファ中の行に対するループ: > + + :for line in getline(1, 20) + : if line =~ "Date: " + : echo matchstr(line, 'Date: \zs.*') + : endif + :endfor + +1から20行目(両端を含む)を調べ、そこに含まれる日付を全て表示しています。 + + +辞書 + +辞書はキーと値のペアを保持します。キーがわかっていれば、値は高速に検索すること +ができます。辞書は波括弧で作ります: > + + :let uk2nl = {'one': 'een', 'two': 'twee', 'three': 'drie'} + +そして角括弧の中にキーを書くことで単語を検索します: > + + :echo uk2nl['two'] +< twee ~ + +辞書の定義の一般的な書式は次の通りです: > + + {<key> : <value>, ...} + +空の辞書とは、どんなキーも持たない辞書のことです: > + + {} + +辞書の可能性は巨大です。辞書を扱う関数もたくさんあります。例えば、キーのリスト +を取得してそれに対してループするには次のようにします: > + + :for key in keys(uk2nl) + : echo key + :endfor +< three ~ + one ~ + two ~ + +キーはソートされていないことに注意してください。特定の順序にするには、リストを +ソートします: > + + :for key in sort(keys(uk2nl)) + : echo key + :endfor +< one ~ + three ~ + two ~ + +しかし要素を定義された順序に戻すことは決してできません。そのような目的にはリス +トを使ってください。リストは順序を保って要素を保持します。 + + +辞書の関数 + +辞書の要素は角括弧でインデックスを指定して取得します: > + + :echo uk2nl['one'] +< een ~ + +メソッドはより少ない記号でこれと同じことをします: > + + :echo uk2nl.one +< een ~ + +これはキーがアルファベット、数字、アンダースコアから構成される場合だけうまくい +きます。次のようにしても新しい値を代入することができます: > + + :let uk2nl.four = 'vier' + :echo uk2nl +< {'three': 'drie', 'four': 'vier', 'one': 'een', 'two': 'twee'} ~ + +そして、特別なことができます: 関数を定義して、それへの参照を直接辞書に入れるこ +とができます: > + + :function uk2nl.translate(line) dict + : return join(map(split(a:line), 'get(self, v:val, "???")')) + :endfunction + +これを実行してみましょう: > + + :echo uk2nl.translate('three two five one') +< drie twee ??? een ~ + +最初に気付くのは、":function"の行の最後の"dict"でしょう。これは、その関数が辞 +書から使われることを示します。ローカル変数"self"がその辞書を指すようになりま +す。 +次に、複雑なreturnコマンドを分解してみましょう: > + + split(a:line) + +関数split()は文字列を受け取り、空白文字で単語に区切ってリストにして返します。 +そのため、この例での戻り値は次のようになります: > + + :echo split('three two five one') +< ['three', 'two', 'five', 'one'] ~ + +このリストがmap()関数の第一引数になります。map()はリストの各要素の値を"v:val" +に設定しながら第二引数を評価します。これによりforループより短いコードにできま +す。このコード: > + + :let alist = map(split(a:line), 'get(self, v:val, "???")') + +は次のコードと同値です: > + + :let alist = split(a:line) + :for idx in range(len(alist)) + : let alist[idx] = get(self, alist[idx], "???") + :endfor + +関数get()はそのキーが辞書に入っているかをチェックします。入っていればその値を +引き出します。入っていなければデフォルト値(この例では'???')を返します。キーが +入っていないときにエラーになってほしくないという場合に便利です。 + +関数join()はsplit()の逆を行います。つまり単語のリストをスペースで区切って連結 +します。 +split(), map(), join() の組み合わせは、単語からなる行をとても簡潔に処理するす +ばらしい方法です。 + + +オブジェクト指向プログラミング + +変数も関数も辞書に入れることができます。辞書をオブジェクトのように使うことが実 +際できるのです。 +上ではオランダ語から英語に翻訳するために辞書を使いました。これをほかの言語に対 +しても行いたいと思うかもしれません。まずオブジェクト(辞書でもある)を作りま +しょう。しかし翻訳する単語ではなく、翻訳する関数を入れます: > + + :let transdict = {} + :function transdict.translate(line) dict + : return join(map(split(a:line), 'get(self.words, v:val, "???")')) + :endfunction + +単語を翻訳するのに'self.words'を使う前の関数とはだいぶ違います。今度のは +self.wordsがありません。よって、これは抽象クラスと呼ぶことができます。 + +オランダ語を翻訳するオブジェクトをインスタンス化しましょう: > + + :let uk2nl = copy(transdict) + :let uk2nl.words = {'one': 'een', 'two': 'twee', 'three': 'drie'} + :echo uk2nl.translate('three one') +< drie een ~ + +そしてドイツ語の翻訳器は次のようになります: > + + :let uk2de = copy(transdict) + :let uk2de.words = {'one': 'ein', 'two': 'zwei', 'three': 'drei'} + :echo uk2de.translate('three one') +< drei ein ~ + +"transdict"辞書のコピーを作るのにcopy()関数が使われていて、そのコピーに単語を +追加して変更していることに気づくでしょう。もちろん元の方はそのまま残ります。 + +さらに一歩進んで、あなた自身の翻訳器を作ることができます: > + + :if $LANG =~ "de" + : let trans = uk2de + :else + : let trans = uk2nl + :endif + :echo trans.translate('one two three') +< een twee drie ~ + +ここで"trans"は2つのオブジェクト(辞書)のどちらか1つを参照します。コピーは作ら +れていません。リストと辞書の同一性についてのより詳しい情報は|list-identity|と +|dict-identity|にあります。 + +ここで対応していない言語も使いたいと思うかもしれません。関数translate()を何も +しないように上書きすることができます: > + + :let uk2uk = copy(transdict) + :function! uk2uk.translate(line) + : return a:line + :endfunction + :echo uk2uk.translate('three one wladiwostok') +< three one wladiwostok ~ + +!を使って既に存在している関数への参照を上書きしていることに注意してください。 +認識できない言語が見つかったときは"uk2uk"を使うことにしましょう: > + + :if $LANG =~ "de" + : let trans = uk2de + :elseif $LANG =~ "nl" + : let trans = uk2nl + :else + : let trans = uk2uk + :endif + :echo trans.translate('one two three') +< one two three ~ + +さらなる情報については|List|と|Dictionaries|を参照してください。 + +============================================================================== +*41.9* 例外 例題から始めましょう: > + :try : read ~/templates/pascal.tmpl :catch /E484:/ @@ -926,7 +1415,7 @@ delete(tmp)"は必ず呼ばれます。一時ファイルを残す心配はあ 参照してください。 ============================================================================== -*41.9* いろいろな留意事項 +*41.10* いろいろな留意事項 ここではvimスクリプトに適用される項目の概要を述べます。他の場所でも同じよう な説明を行っていますが、手頃なチェックリストに使えることでしょう。 @@ -998,7 +1487,9 @@ delete(tmp)"は必ず呼ばれます。一時ファイルを残す心配はあ :execute cmd |" do it '|'文字を使うと、コマンドを複数に分割できます。この場合、2つ目のコマンドに -はコメントしかないということになります。 +はコメントしかないということになります。最後のlsの場合は、|:execute|と'|'の2つ +を使わないとできません: > + :exe '!ls *.c' |" list C files ":map"と":abbreviate"の場合は'|'の前に空白類を置かないように注意してくださ い。このコマンドでは行末か'|'の前までの全文字が含まれてしまいます。この振舞 @@ -1006,8 +1497,18 @@ delete(tmp)"は必ず呼ばれます。一時ファイルを残す心配はあ :map <F4> o#include -この問題を避けるには、vimrcを編集する時には'list'オプションをonにするのが -よいでしょう。 +この問題に気づきやすくするには、vimrcを編集する時には'list'オプションをonにす +るのがよいでしょう。 + +Unixの場合は、行をコメントにする特別な方法があります。それはVimスクリプトを実 +行可能にすることです: > + #!/usr/bin/env vim -S + echo "this is a Vim script" + quit + +"#"コマンドはその行を行番号をつけて表示します。'!'をつけることで、このコマンド +は何もしなくなります。よってそのファイルを実行するコマンドを記述することができ +ます。|:#!| |-S| 落とし穴 @@ -1089,7 +1590,7 @@ PACKAGING let XXX_loaded = 1 ============================================================================== -*41.10* プラグインを書く *write-plugin* +*41.11* プラグインを書く *write-plugin* 多くの人が使えるようなvimスクリプトを書くこともできます。これをプラグインと呼 びます。vimのユーザはあなたが作ったプラグインを"plugin"ディレクトリにドロップ @@ -1200,8 +1701,8 @@ PACKAGING これを使うとスクリプトの2重ロードを避けることもできます。2重ロードしてしま うと、関数の2重定義エラーや自動コマンドを2回追加することによるトラブルを防 ぐことになります。 -JP補: 要はユーザのvimrcなどで上記の"loaded_typecorr"というグローバル変数を定 -JP補: 義してしまえばよいわけです。(本当か?) +訳注: 要はユーザのvimrcなどで上記の"loaded_typecorr"というグローバル変数を定 +訳注: 義してしまえばよいわけです。 マップ @@ -1300,7 +1801,7 @@ JP補: 義してしまえばよいわけです。(本当か?) メニューにプラグインを追加するには"Plugin"ディレクトリを用いることをお勧めし ます。この場合、選択できるのは1つの項目だけです。2つ以上を追加するにはサブ -メニューを作ることをお勧めします。例えば、"Plubin.CVS"というプラグインがあり +メニューを作ることをお勧めします。例えば、"Plugin.CVS"というプラグインがあり このプラグインはCVSの繰作をする"Plugin.CVS.checkin"と"Plugin.CVS.checkout"を 提供しているといった場合です。 @@ -1526,7 +2027,7 @@ hasmapto() スクリプトが提供している機能と同じマップが既 exists(":Cmd") ユーザ定義コマンドが既にあるかどうかをチェックする。 ============================================================================== -*41.11* ファイルタイププラグインを書く *write-filetype-plugin* *ftplugin* +*41.12* ファイルタイププラグインを書く *write-filetype-plugin* *ftplugin* ファイルタイププラグインはグローバルプラグインと似ています。違うのは現在の バッファ専用のマップ定義やオプション設定が行える点です。ファイルタイププラグ @@ -1726,7 +2227,7 @@ exists("*s:Func") 関数が既に定義済かどうかをチェック 全プラグインで使える特別な項目については|plugin-special|も併せてご覧ください。 ============================================================================== -*41.12* コンパイラプラグインを書く *write-compiler-plugin* +*41.13* コンパイラプラグインを書く *write-compiler-plugin* コンパイラプラグインでは特定のコンパイラを使うためのオプション設定ができます。 この呼び出しは|:compiler|コマンドで行います。この中心となるのは'errorformat' @@ -1774,6 +2275,162 @@ vimの配布用やステム全体のランタイムディレクトリに置く くようにすべきです。例えば、Unixでは~/.vim/after/compilerなどが使えるでしょ う。 +============================================================================== +*41.14* 高速に読み込まれるプラグインを書く write-plugin-quickload* + +プラグインが成長し、非常に長くなることがあります。起動時の遅延が顕著になり、と +ても全てのプラグインを使っていられなくなることがあります。そのときは、クイック +ロードプラグインを使うときです。 + +基本的な考えは、プラグインを2回に分けて読み込むことです。1回目は、機能を提供す +るユーザー定義コマンドとマッピングを定義します。2回目は定義された機能を実装す +る関数を読み込みます。 + +スクリプトを2回読み込むことがクイックロードだというと驚かれるかもしれません。 +この手法の意味は、1回目は高速に読み込み、スクリプトの重い部分は2回目に後回しに +するということです。2回目の読み込みは、ユーザが実際にその機能を使用するときだ +け発生します。あなたがその機能をいつも使っているのなら、これはやはり遅くなって +しまうでしょう。 + +Note Vim 7以降では代わりの方法があります。|41.15|で説明されている|autoload|機 +能を使うことです。 + +以下の例は、これをどうやって行うかを説明しています: > + + " クイックロードのデモ用のグローバルプラグイン + " Last Change: 2005 Feb 25 + " Maintainer: Bram Moolenaar <Bram@vim.org> + " License: This file is placed in the public domain. + + if !exists("s:did_load") + command -nargs=* BNRead call BufNetRead(<f-args>) + map <F19> :call BufNetWrite('something')<CR> + + let s:did_load = 1 + exe 'au FuncUndefined BufNet* source ' . expand('<sfile>') + finish + endif + + function BufNetRead(...) + echo 'BufNetRead(' . string(a:000) . ')' + " read 機能をここに書く + endfunction + + function BufNetWrite(...) + echo 'BufNetWrite(' . string(a:000) . ')' + " write 機能をここに書く + endfunction + +このスクリプトが最初に読み込まれたとき、"s:did_load"は設定されていません。 +"if"と"endif"の間のコマンドが実行されます。この部分はコマンド|:finish|によって +終了し、スクリプトの残りの部分は実行されません。 + +2回目に読み込まれたときは"s:did_load"が存在し、"endif"以降のコマンドが実行され +ます。この部分では(長くなる可能性のある)BufNetRead()とBufNetWrite()関数を定義 +します。 + +このスクリプトをプラグインディレクトリに置くと、Vimの起動時に実行されます。そ +のときの流れは次のようになります: + +1. 起動時、このスクリプトが読み込まれたときに"BNRead"コマンドが定義され、<F19> + キーにマッピングされる。自動コマンド|FuncUndefined|が定義される。コマンド + ":finish"によりこのスクリプトが終了する。 + +2. ユーザがコマンドBNReadを入力する、または<F19>キーを押す。関数BufNetRead()ま + たはBufNetWrite()が呼ばれる。 + +3. Vimはこの関数を見つけることができず、自動コマンドイベント|FuncUndefined|が + 発生する。呼ばれた関数の名前がパターン"BufNet*"がマッチするので、コマンド + "source fname"が実行される。ここで"<sname>"(|expand()|を参照)が展開されるの + で、スクリプトがどこにあろうとも、fnameはこのスクリプトの名前になる。 + +4. このスクリプトが再び読み込まれ、変数"s:did_load"が存在するので、関数が定義 + される。 + +読み込まれる関数の名前が、自動コマンド|FuncUndefined|におけるパターンにマッチ +しなければならないことに注意してください。他のどのプラグインも、このパターンに +マッチする関数を定義していないことを確認しなければなりません。 + +============================================================================== +*41.15* ライブラリスクリプトを書く *write-library-script* + +ある種の機能はいろいろな場所で必要になります。それが2,3行以上になる場合は、そ +れを1つのスクリプトにして、他のスクリプトから利用できるようにするとよいでしょ +う。このようなスクリプトのことをライブラリスクリプトと呼びます。 + +手動でライブラリスクリプトを読み込むことは可能ですが、すでに読み込まれている場 +合は二重に読み込むのを防がねばなりません。それには関数|exists()|を使います。 +例: > + + if !exists('*MyLibFunction') + runtime library/mylibscript.vim + endif + call MyLibFunction(arg) + +ここで、あなたは'runtimepath'にあるディレクトリのどこかの +"library/mylibscript.vim"でMyLibFunction()が定義されていることを知っていなけれ +ばなりません。 + +これをより簡単にするために、Vimにはautoloadの機構が備わっています。これを使う +とこの例は次のようになります: > + + call mylib#myfunction(arg) + +この方がずっと簡単でしょう?Vimはこの関数名を認識し、それがまだ定義されていな +い場合は"autoload/mylib.vim"を'runtimepath'から検索します。そのスクリプトは関 +数"mylib#myfunction()"を定義していなければなりません。 + +このmylib.vimに他の関数を入れることもできます。ライブラリスクリプト中の関数を +自由に構成することができます。しかし関数名の'#'より前の部分はそのスクリプトの +名前に一致するようにしなければなりません。そうしないとVimはどのスクリプトを読 +み込んだらいいかわからなくなってしまいます。 + +これに熱狂してライブラリスクリプトをたくさん書くと、サブディレクトリを使いたく +なるかもしれません。例: > + + call netlib#ftp#read('somefile') + +Unixでは、このライブラリスクリプトを次の場所に置けます: > + + ~/.vim/autoload/netlib/ftp.vim + +この関数は次のように定義します: > + + function netlib#ftp#read(fname) + " Read the file fname through ftp + endfunction + +関数定義に使われている名前が、それを使っているときの名前とまったく同じであるこ +とに注意してください。そして最後の'#'より前の部分がサブディレクトリとスクリプ +トの名前に対応しています。 + +これと同じ機構を変数にも使用することができます: > + + let weekdays = dutch#weekdays + +これはスクリプト"autoload/dutch.vim"を読み込みます。そのスクリプトは次のような +コードを含んでいるはずです: > + + let dutch#weekdays = ['zondag', 'maandag', 'dinsdag', 'woensdag', + \ 'donderdag', 'vrijdag', 'zaterdag'] + +より詳しくは|autoload|を参照してください。 + +============================================================================== +*41.16* Vimスクリプトを配布する *distribute-script* + +VimのユーザはVimのウェブサイトhttp://www.vim.orgでスクリプトを探すでしょう。他 +の人の役に立つものを作ったら、それを共有しましょう。 + +Vimスクリプトはどんなシステム上でも使えます。tarやgzipコマンドは存在しないかも +しれません。ファイルをまとめたり圧縮したいときは、"zip"コマンドが推奨されてい +ます。 + +最大限の移植性のために、スクリプトをアーカイブするのにVim自身を使いましょう。 +それはVimballユーティリティによってできます。|vimball|を参照。 + +自動更新をできるように1行を加えておくとよいでしょう。|glvs-plugins|を参照。 + ============================================================================== Next chapter: |usr_42.txt| 新しいメニューの追加 From 974e1f97689f105766ab299ccd50b7aa83b33d77 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 9 Jun 2007 12:53:32 +0000 Subject: [PATCH 090/783] fix: update syntax to 7.1 add: ada git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@90 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/ada.txt | 515 ++++++++++++++++++++++++++++++++++++++++++++++++++ en/syntax.txt | 120 +++++------- ja/ada.jax | 508 +++++++++++++++++++++++++++++++++++++++++++++++++ ja/syntax.jax | 62 ++++-- 4 files changed, 1112 insertions(+), 93 deletions(-) create mode 100644 en/ada.txt create mode 100644 ja/ada.jax diff --git a/en/ada.txt b/en/ada.txt new file mode 100644 index 000000000..6054ac7e1 --- /dev/null +++ b/en/ada.txt @@ -0,0 +1,515 @@ +*ada.txt* For Vim version 7.1. Last change: 2007 May 08 + + + ADA FILE TYPE PLUG-INS REFERENCE MANUAL~ + +ADA *ada.vim* + +1. Syntax Highlighting |ft-ada-syntax| +2. Plug-in |ft-ada-plugin| +3. Omni Completion |ft-ada-omni| + 3.1 Omni Completion with "gnat xref" |gnat-xref| + 3.2 Omni Completion with "ctags" |ada-ctags| +4. Compiler Support |ada-compiler| + 4.1 GNAT |compiler-gnat| + 4.1 Dec Ada |compiler-decada| +5. References |ada-reference| + 5.1 Options |ft-ada-options| + 5.2 Functions |ft-ada-functions| + 5.3 Commands |ft-ada-commands| + 5.4 Variables |ft-ada-variables| + 5.5 Constants |ft-ada-constants| +8. Extra Plug-ins |ada-extra-plugins| + +============================================================================== +1. Syntax Highlighting ~ + *ft-ada-syntax* + +This mode is designed for the 2005 edition of Ada ("Ada 2005"), which includes +support for objected-programming, protected types, and so on. It handles code +written for the original Ada language ("Ada83", "Ada87", "Ada95") as well, +though code which uses Ada 2005-only keywords will be wrongly colored (such +code should be fixed anyway). For more information about Ada, see +http://www.adapower.com. + +The Ada mode handles a number of situations cleanly. + +For example, it knows that the "-" in "-5" is a number, but the same character +in "A-5" is an operator. Normally, a "with" or "use" clause referencing +another compilation unit is coloured the same way as C's "#include" is coloured. +If you have "Conditional" or "Repeat" groups coloured differently, then "end +if" and "end loop" will be coloured as part of those respective groups. + +You can set these to different colours using vim's "highlight" command (e.g., +to change how loops are displayed, enter the command ":hi Repeat" followed by +the colour specification; on simple terminals the colour specification +ctermfg=White often shows well). + +There are several options you can select in this Ada mode. See|ft-ada-options| +for a complete list. + +To enable them, assign a value to the option. For example, to turn one on: + > + > let g:ada_standard_types = 1 +> +To disable them use ":unlet". Example: +> + > unlet g:ada_standard_types + +You can just use ":" and type these into the command line to set these +temporarily before loading an Ada file. You can make these option settings +permanent by adding the "let" command(s), without a colon, to your "~/.vimrc" +file. + +Even on a slow (90Mhz) PC this mode works quickly, but if you find the +performance unacceptable, turn on |g:ada_withuse_ordinary|. + +Syntax folding instructions (|fold-syntax|) are added when |g:ada_folding| is +set. + +============================================================================== +2. File type Plug-in ~ + *ft-ada-indent* *ft-ada-plugin* + +The Ada plug-in provides support for: + + - auto indenting (|indent.txt|) + - insert completion (|i_CTRL-N|) + - user completion (|i_CTRL-X_CTRL-U|) + - tag searches (|tagsrch.txt|) + - Quick Fix (|quickfix.txt|) + - backspace handling (|'backspace'|) + - comment handling (|'comments'|, |'commentstring'|) + +The plug-in only activates the features of the Ada mode whenever an Ada +files is opened and add adds Ada related entries to the main and pop-up menu. + +============================================================================== +3. Omni Completion ~ + *ft-ada-omni* + +The Ada omni-completions (|i_CTRL-X_CTRL-O|) uses tags database created either +by "gnat xref -v" or the "exuberant Ctags (http://ctags.sourceforge.net). The +complete function will automatically detect which tool was used to create the +tags file. + +------------------------------------------------------------------------------ +3.1 Omni Completion with "gnat xref" ~ + *gnat-xref* + +GNAT XREF uses the compiler internal informations (ali-files) to produce the +tags file. This has the advantage to be 100% correct and the option of deep +nested analysis. However the code must compile, the generator is quite +slow and the created tags file contains only the basic Ctags informations for +each entry - not enough for some of the more advanced Vim code browser +plug-ins. + +NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic + output - If nothing is printed then usually the parameters are wrong. + Here some important tips: + +1) You need to compile your code first and use the "-aO" option to point to + your .ali files. +2) "gnat xref -v ../Include/adacl.ads" won't work - use the "gnat xref -v + -aI../Include adacl.ads" instead. +3) "gnat xref -v -aI../Include *.ad?" won't work - use "cd ../Include" and + then "gnat xref -v *.ad?" +4) Project manager support is completely broken - don't even try "gnat xref + -Padacl.gpr". +5) VIM is faster when the tags file is sorted - use "sort --unique + --ignore-case --output=tags tags" . +6) Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark + the file assorted. + +------------------------------------------------------------------------------ +3.2 Omni Completion with "ctags"~ + *ada-ctags* + +Exuberant Ctags uses its own multi-language code parser. The parser is quite +fast, produces a lot of extra informations (hence the name "Exuberant Ctags") +and can run on files which currently do not compile. + +There are also lots of other Vim-tools which use exuberant Ctags. + +You will need to install a version of the Exuberant Ctags which has Ada +support patched in. Such a version is available from the GNU Ada Project +(http://gnuada.sourceforge.net). + +The Ada parser for Exuberant Ctags is fairly new - don't expect complete +support yet. + +============================================================================== +4. Compiler Support ~ + *ada-compiler* + +The Ada mode supports more then one Ada compiler and will automatically load the +compiler set in|g:ada_default_compiler|whenever an Ada source is opened. The +provided compiler plug-ins are split into the actual compiler plug-in and a +collection of support functions and variables. This allows the easy +development of specialized compiler plug-ins fine tuned to your development +environment. + +------------------------------------------------------------------------------ +4.1 GNAT ~ + *compiler-gnat* + +GNAT is the only free (beer and speech) Ada compiler available. There are +several version available which differentiate in the licence terms used. + +The GNAT compiler plug-in will perform a compile on pressing <F7> and then +immediately shows the result. You can set the project file to be used by +setting: + > + > call g:gnat.Set_Project_File ('my_project.gpr') + +Setting a project file will also create a Vim session (|views-sessions|) so - +like with the GPS - opened files, window positions etc. will remembered +separately for all projects. + + *gnat_members* +GNAT OBJECT ~ + + *g:gnat.Make()* +g:gnat.Make() + Calls|g:gnat.Make_Command|and displays the result inside a + |quickfix| window. + + *g:gnat.Pretty()* +g:gnat.Pretty() + Calls|g:gnat.Pretty_Command| + + *g:gnat.Find()* +g:gnat.Find() + Calls|g:gnat.Find_Command| + + *g:gnat.Tags()* +g:gnat.Tags() + Calls|g:gnat.Tags_Command| + + *g:gnat.Set_Project_File()* +g:gnat.Set_Project_File([{file}]) + Set gnat project file and load associated session. An open + project will be closed and the session written. If called + without file name the file selector opens for selection of a + project file. If called with an empty string then the project + and associated session are closed. + + *g:gnat.Project_File* +g:gnat.Project_File string + Current project file. + + *g:gnat.Make_Command* +g:gnat.Make_Command string + External command used for|g:gnat.Make()| (|'makeprg'|). + + *g:gnat.Pretty_Program* +g:gnat.Pretty_Program string + External command used for|g:gnat.Pretty()| + + *g:gnat.Find_Program* +g:gnat.Find_Program string + External command used for|g:gnat.Find()| + + *g:gnat.Tags_Command* +g:gnat.Tags_Command string + External command used for|g:gnat.Tags()| + + *g:gnat.Error_Format* +g:gnat.Error_Format string + Error format (|'errorformat'|) + +------------------------------------------------------------------------------ +4.2 Dec Ada ~ + *compiler-hpada* *compiler-decada* + *compiler-vaxada* *compiler-compaqada* + +Dec Ada (also known by - in chronological order - VAX Ada, Dec Ada, Compaq Ada +and HP Ada) is a fairly dated Ada 83 compiler. Support is basic: <F7> will +compile the current unit. + +The Dec Ada compiler expects the package name and not the file name to be +passed a parameter. The compiler plug-in supports the usual file name +convention to convert the file into a unit name. For separates both '-' and +'__' are allowed. + + *decada_members* +DEC ADA OBJECT ~ + + *g:decada.Make()* +g:decada.Make() function + Calls|g:decada.Make_Command|and displays the result inside a + |quickfix| window. + + *g:decada.Unit_Name()* +g:decada.Unit_Name() function + Get the Unit name for the current file. + + *g:decada.Make_Command* +g:decada.Make_Command string + External command used for|g:decadat.Make()| (|'makeprg'|). + + *g:decada.Error_Format* +g:decada.Error_Format| string + Error format (|'errorformat'|). + +============================================================================== +5. References ~ + *ada-reference* + +------------------------------------------------------------------------------ +5.1 Options ~ + *ft-ada-options* + + *g:ada_standard_types* +g:ada_standard_types bool (true when exists) + Highlight types in package Standard (e.g., "Float") + + *g:ada_space_errors* + *g:ada_no_trail_space_error* + *g:ada_no_tab_space_error* + *g:ada_all_tab_usage* +g:ada_space_errors bool (true when exists) + Highlight extraneous errors in spaces ... + g:ada_no_trail_space_error + - but ignore trailing spaces at the end of a line + g:ada_no_tab_space_error + - but ignore tabs after spaces + g:ada_all_tab_usage + - highlight all tab use + + *g:ada_line_errors* +g:ada_line_errors bool (true when exists) + Highlight lines which are to long. Note: This highlighting + option is quite CPU intensive. + + *g:ada_rainbow_color* +g:ada_rainbow_color bool (true when exists) + Use rainbow colours for '(' and ')'. You need the + rainbow_parenthesis for this to work + + *g:ada_folding* +g:ada_folding set ('sigpft') + Use folding for Ada sources. + 's': activate syntax folding on load + 'p': fold packages + 'f': fold functions and procedures + 't': fold types + 'c': fold conditionals + 'g': activate gnat pretty print folding on load + 'i': lone 'is' folded with line above + 'b': lone 'begin' folded with line above + 'p': lone 'private' folded with line above + 'x': lone 'exception' folded with line above + 'i': activate indent folding on load + + Note: Syntax folding is in an early (unusable) stage and + indent or gnat pretty folding is suggested. + + For gnat pretty folding to work the following settings are + suggested: -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5 + + For indent folding to work the following settings are + suggested: shiftwidth=3 softtabstop=3 + + *g:ada_abbrev* +g:ada_abbrev bool (true when exists) + Add some abbreviations. This feature more or less superseded + by the various completion methods. + + *g:ada_withuse_ordinary* +g:ada_withuse_ordinary bool (true when exists) + Show "with" and "use" as ordinary keywords (when used to + reference other compilation units they're normally highlighted + specially). + + *g:ada_begin_preproc* +g:ada_begin_preproc bool (true when exists) + Show all begin-like keywords using the colouring of C + preprocessor commands. + + *g:ada_omni_with_keywords* +g:ada_omni_with_keywords + Add Keywords, Pragmas, Attributes to omni-completions + (|compl-omni|). Note: You can always complete then with user + completion (|i_CTRL-X_CTRL-U|). + + *g:ada_extended_tagging* +g:ada_extended_tagging enum ('jump', 'list') + use extended tagging, two options are available + 'jump': use tjump to jump. + 'list': add tags quick fix list. + Normal tagging does not support function or operator + overloading as these features are not available in C and + tagging was originally developed for C. + + *g:ada_extended_completion* +g:ada_extended_completion + Uses extended completion for <C-N> and <C-R> completions + (|i_CTRL-N|). In this mode the '.' is used as part of the + identifier so that 'Object.Method' or 'Package.Procedure' are + completed together. + + *g:ada_gnat_extensions* +g:ada_gnat_extensions bool (true when exists) + Support GNAT extensions. + + *g:ada_with_gnat_project_files* +g:ada_with_gnat_project_files bool (true when exists) + Add gnat project file keywords and Attributes. + + *g:ada_default_compiler* +g:ada_default_compiler string + set default compiler. Currently supported is 'gnat' and + 'decada'. + +An "exists" type is a boolean is considered true when the variable is defined +and false when the variable is undefined. The value which the variable is +set makes no difference. + +------------------------------------------------------------------------------ +5.3 Commands ~ + *ft-ada-commands* + +:AdaRainbow *:AdaRainbow* + Toggles rainbow colour (|g:ada_rainbow_color|) mode for + '(' and ')' + +:AdaLines *:AdaLines* + Toggles line error (|g:ada_line_errors|) display + +:AdaSpaces *:AdaSpaces* + Toggles space error (|g:ada_space_errors|) display. + +:AdaTagDir *:AdaTagDir* + Creates tags file for the directory of the current file. + +:AdaTagFile *:AdaTagFile* + Creates tags file for the current file. + +:AdaTypes *:AdaTypes* + Toggles standard types (|g:ada_standard_types|) colour. + +:GnatFind *:GnatFind* + Calls |g:gnat.Find()| + +:GnatPretty *:GnatPretty* + Calls |g:gnat.Pretty()| + +:GnatTags *:GnatTags* + Calls |g:gnat.Tags()| + +------------------------------------------------------------------------------ +5.3 Variables ~ + *ft-ada-variables* + + *g:gnat* +g:gnat object + Control object which manages GNAT compiles. The object + is created when the first Ada source code is loaded provided + that |g:ada_default_compiler|is set to 'gnat'. See|gnat_members| + for details. + + *g:decada* +g:decada object + Control object which manages Dec Ada compiles. The object + is created when the first Ada source code is loaded provided + that |g:ada_default_compiler|is set to 'decada'. See + |decada_members|for details. + +------------------------------------------------------------------------------ +5.4 Constants ~ + *ft-ada-constants* + +All constants are locked. See |:lockvar| for details. + + *g:ada#WordRegex* +g:ada#WordRegex string + Regular expression to search for Ada words + + *g:ada#DotWordRegex* +g:ada#DotWordRegex string + Regular expression to search for Ada words separated by dots. + + *g:ada#Comment* +g:ada#Comment string + Regular expression to search for Ada comments + + *g:ada#Keywords* +g:ada#Keywords list of dictionaries + List of keywords, attributes etc. pp. in the format used by + omni completion. See |complete-items| for details. + + *g:ada#Ctags_Kinds* +g:ada#Ctags_Kinds dictionary of lists + Dictionary of the various kinds of items which the Ada support + for Ctags generates. + +------------------------------------------------------------------------------ +5.2 Functions ~ + *ft-ada-functions* + +ada#Word([{line}, {col}]) *ada#Word()* + Return full name of Ada entity under the cursor (or at given + line/column), stripping white space/newlines as necessary. + +ada#List_Tag([{line}, {col}]) *ada#Listtags()* + List all occurrences of the Ada entity under the cursor (or at + given line/column) inside the quick-fix window + +ada#Jump_Tag ({ident}, {mode}) *ada#Jump_Tag()* + List all occurrences of the Ada entity under the cursor (or at + given line/column) in the tag jump list. Mode can either be + 'tjump' or 'stjump'. + +ada#Create_Tags ({option}) *ada#Create_Tags()* + Creates tag file using Ctags. The option can either be 'file' + for the current file, 'dir' for the directory of the current + file or a file name. + +gnat#Insert_Tags_Header() *gnat#Insert_Tags_Header()* + Adds the tag file header (!_TAG_) informations to the current + file which are missing from the GNAT XREF output. + +ada#Switch_Syntax_Option ({option}) *ada#Switch_Syntax_Option()* + Toggles highlighting options on or off. Used for the Ada menu. + + *gnat#New()* +gnat#New () + Create a new gnat object. See |g:gnat| for details. + + +============================================================================== +8. Extra Plugins ~ + *ada-extra-plugins* + +You can optionally install the following extra plug-in. They work well with Ada +and enhance the ability of the Ada mode.: + +backup.vim + http://www.vim.org/scripts/script.php?script_id=1537 + Keeps as many backups as you like so you don't have to. + +rainbow_parenthsis.vim + http://www.vim.org/scripts/script.php?script_id=1561 + Very helpful since Ada uses only '(' and ')'. + +nerd_comments.vim + http://www.vim.org/scripts/script.php?script_id=1218 + Excellent commenting and uncommenting support for almost any + programming language. + +matchit.vim + http://www.vim.org/scripts/script.php?script_id=39 + '%' jumping for any language. The normal '%' jump only works for '{}' + style languages. The Ada mode will set the needed search patters. + +taglist.vim + http://www.vim.org/scripts/script.php?script_id=273 + Source code explorer sidebar. There is a patch for Ada available. + +The GNU Ada Project distribution (http://gnuada.sourceforge.net) of Vim +contains all of the above. + +============================================================================== +vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab +vim: filetype=help encoding=latin1 diff --git a/en/syntax.txt b/en/syntax.txt index fa7b0439f..acde5428b 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*syntax.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -467,52 +467,9 @@ abel_obsolete_ok obsolete keywords are statements, not errors abel_cpp_comments_illegal do not interpret '//' as inline comment leader -ADA *ada.vim* *ft-ada-syntax* - -This mode is designed for the 1995 edition of Ada ("Ada95"), which -includes support for objected-programming, protected types, and so on. -It handles code written for the original Ada language -("Ada83" or "Ada87") as well, though Ada83 code which uses Ada95-only -keywords will be wrongly colored (such code should be fixed anyway). -For more information about Ada, see http://www.adapower.com. - -The Ada mode handles a number of situations cleanly. -For example, it knows that the "-" in "-5" is a number, but the same -character in "A-5" is an operator. Normally, a "with" or "use" clause -referencing another compilation unit is colored the same way as C's -"#include" is colored. If you have "Conditional" or "Repeat" -groups colored differently, then "end if" and "end loop" will be -colored as part of those respective groups. -You can set these to different colors using vim's "highlight" command -(e.g., to change how loops are displayed, enter the command -":hi Repeat" followed by the color specification; on simple terminals -the color specification ctermfg=White often shows well). - -There are several options you can select in this Ada mode. -To enable them, assign a value to the option. For example, to turn one on: - let ada_standard_types = 1 -To disable them use ":unlet". Example: - unlet ada_standard_types = 1 -You can just use ":" and type these into the command line to set these -temporarily before loading an Ada file. You can make these option settings -permanent by adding the "let" command(s), without a colon, -to your "~/.vimrc" file. - -Here are the Ada mode options: - -Variable Action ~ -ada_standard_types Highlight types in package Standard (e.g., "Float") -ada_space_errors Highlight extraneous errors in spaces... -ada_no_trail_space_error but ignore trailing spaces at the end of a line -ada_no_tab_space_error but ignore tabs after spaces -ada_withuse_ordinary Show "with" and "use" as ordinary keywords - (when used to reference other compilation units - they're normally highlighted specially). -ada_begin_preproc Show all begin-like keywords using the coloring - of C preprocessor commands. - -Even on a slow (90Mhz) PC this mode works quickly, but if you find -the performance unacceptable, turn on ada_withuse_ordinary. +ADA + +See |ft-ada-syntax| ANT *ant.vim* *ft-ant-syntax* @@ -897,19 +854,16 @@ Doxygen generates code documentation using a special documentation format (similar to Javadoc). This syntax script adds doxygen highlighting to c, cpp and idl files, and should also work with java. -There are a few of ways to turn on doxygen formatting. It can be done explicity -or in a modeline by appending '.doxygen' to the syntax of the file. Example: > +There are a few of ways to turn on doxygen formatting. It can be done +explicitly or in a modeline by appending '.doxygen' to the syntax of the file. +Example: > :set syntax=c.doxygen or > // vim:syntax=c.doxygen -To use doxygen formatting on top of any filetype, add the following to your -.vimrc for each filetype, replacing {filetype} with the relevent value. > - :let g:syntax_extra_{filetype}='doxygen' - -It can also be done automaticly for c, cpp and idl files by setting the global -or buffer-local variable load_doxygen_syntax. This is done by adding the -following to your .vimrc. > +It can also be done automatically for c, cpp and idl files by setting the +global or buffer-local variable load_doxygen_syntax. This is done by adding +the following to your .vimrc. > :let g:load_doxygen_syntax=1 There are a couple of variables that have an affect on syntax highlighting, and @@ -1042,7 +996,7 @@ FORM *form.vim* *ft-form-syntax* The coloring scheme for syntax elements in the FORM file uses the default modes Conditional, Number, Statement, Comment, PreProc, Type, and String, -following the language specifications in 'Symbolic Manipulation with FORM'' by +following the language specifications in 'Symbolic Manipulation with FORM' by J.A.M. Vermaseren, CAN, Netherlands, 1991. If you want include your own changes to the default colors, you have to @@ -1338,7 +1292,7 @@ are recognized by the html.vim syntax coloring file and change the way normal text is shown: <B> <I> <U> <EM> <STRONG> (<EM> is used as an alias for <I>, while <STRONG> as an alias for <B>), <H1> - <H6>, <HEAD>, <TITLE> and <A>, but only if used as a link (that is, it must include a href as in -<A href="somfile.html">). +<A href="somefile.html">). If you want to change how such text is rendered, you must redefine the following syntax groups: @@ -1455,7 +1409,7 @@ Microsoft land, this is also used for defining COM interfaces and calls. IDL's structure is simple enough to permit a full grammar based approach to rather than using a few heuristics. The result is large and somewhat -repetative but seems to work. +repetitive but seems to work. There are some Microsoft extensions to idl files that are here. Some of them are disabled by defining idl_no_ms_extensions. @@ -2295,7 +2249,7 @@ experience slow redrawing (or you are on a terminal with poor color support) you may want to turn it off by defining the "ruby_no_expensive" variable: > :let ruby_no_expensive = 1 - +< In this case the same color will be used for all control keywords. If you do want this feature enabled, but notice highlighting errors while @@ -2303,15 +2257,15 @@ scrolling backwards, which are fixed when redrawing with CTRL-L, try setting the "ruby_minlines" variable to a value larger than 50: > :let ruby_minlines = 100 - +< Ideally, this value should be a number of lines large enough to embrace your largest class or module. -Highlighting of special identifiers can be disabled by defining -"ruby_no_identifiers": > - - :let ruby_no_identifiers = 1 +Highlighting of special identifiers can be disabled by removing the +rubyIdentifier highlighting: > + :hi link rubyIdentifier NONE +< This will prevent highlighting of special identifiers like "ConstantName", "$global_var", "@@class_var", "@instance_var", "| block_param |", and ":symbol". @@ -2320,14 +2274,19 @@ Significant methods of Kernel, Module and Object are highlighted by default. This can be disabled by defining "ruby_no_special_methods": > :let ruby_no_special_methods = 1 - +< This will prevent highlighting of important methods such as "require", "attr", "private", "raise" and "proc". +Ruby operators can be highlighted. This is enabled by defining +"ruby_operators": > + + :let ruby_operators = 1 +< Whitespace errors can be highlighted by defining "ruby_space_errors": > :let ruby_space_errors = 1 - +< This will highlight trailing whitespace and tabs preceded by a space character as errors. This can be refined by defining "ruby_no_trail_space_error" and "ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after @@ -2336,9 +2295,16 @@ spaces respectively. Folding can be enabled by defining "ruby_fold": > :let ruby_fold = 1 - +< This will set the 'foldmethod' option to "syntax" and allow folding of classes, modules, methods, code blocks, heredocs and comments. + +Folding of multiline comments can be disabled by defining +"ruby_no_comment_fold": > + + :let ruby_no_comment_fold = 1 +< + SCHEME *scheme.vim* *ft-scheme-syntax* By default only R5RS keywords are highlighted and properly indented. @@ -2598,6 +2564,16 @@ If you have a slow computer, you may wish to reduce the values for > increase them. This primarily affects synchronizing (i.e. just what group, if any, is the text at the top of the screen supposed to be in?). +*tex-morecommands* *tex-package* +Wish To Highlight More Commmands? ~ + +LaTeX is a programmable language, and so there are thousands of packages full +of specialized LaTeX commands, syntax, and fonts. If you're using such a +package you'll often wish that the distributed syntax/tex.vim would support +it. However, clearly this is impractical. So please consider using the +techniques in |mysyntaxfile-add| to extend or modify the highlighting provided +by syntax/tex.vim. + *tex-error* Excessive Error Highlighting? ~ @@ -3305,7 +3281,7 @@ skipempty *:syn-skipempty* These arguments are only used in combination with "nextgroup". They can be used to allow the next group to match after skipping some text: - skipwhite skip over space and Tab characters + skipwhite skip over space and tab characters skipnl skip over the end of a line skipempty skip over empty lines (implies a "skipnl") @@ -4396,7 +4372,7 @@ Put these lines in your Makefile: # Make a highlight file for types. Requires Exuberant ctags and awk types: types.vim types.vim: *.[ch] - ctags -i=gstuS -o- *.[ch] |\ + ctags --c-kinds=gstu -o- *.[ch] |\ awk 'BEGIN{printf("syntax keyword Type\t")}\ {printf("%s ", $$1)}END{print ""}' > $@ @@ -4504,7 +4480,7 @@ You probably want to use these X resources (in your ~/.Xdefaults file): [Note: The cursorColor is required to work around a bug, which changes the cursor color to the color of the last drawn text. This has been fixed by a -newer version of xterm, but not everybody is it using yet.] +newer version of xterm, but not everybody is using it yet.] To get these right away, reload the .Xdefaults file to the X Option database Manager (you only need to do this when you just changed the .Xdefaults file): > @@ -4520,7 +4496,7 @@ these resources: XTerm*cursorColor: White *hpterm-color* -These settings work (more or less) for a hpterm, which only supports 8 +These settings work (more or less) for an hpterm, which only supports 8 foreground colors: > :if has("terminfo") : set t_Co=8 diff --git a/ja/ada.jax b/ja/ada.jax new file mode 100644 index 000000000..f9117cb7d --- /dev/null +++ b/ja/ada.jax @@ -0,0 +1,508 @@ +COMMENT: ADAファイルタイププラグイン +STATUS: finished 7.1 +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> + +*ada.txt* For Vim version 7.1. Last change: 2007 May 08 + + + ADAファイルタイププラグイン リファレンスマニュアル~ + +ADA *ada.vim* + +1. 構文強調 |ft-ada-syntax| +2. プラグイン |ft-ada-plugin| +3. オムニ補完 |ft-ada-omni| + 3.1 "gnat xref"を使ったオムニ補完 |gnat-xref| + 3.2 "ctags"を使ったオムニ補完 |ada-ctags| +4. コンパイラへの対応 |ada-compiler| + 4.1 GNAT |compiler-gnat| + 4.1 Dec Ada |compiler-decada| +5. リファレンス |ada-reference| + 5.1 オプション |ft-ada-options| + 5.2 関数 |ft-ada-functions| + 5.3 コマンド |ft-ada-commands| + 5.4 変数 |ft-ada-variables| + 5.5 定数 |ft-ada-constants| +8. その他のプラグイン |ada-extra-plugins| + +============================================================================== +1. 構文強調 ~ + + *ft-ada-syntax* + +このモードはオブジェクト指向プログラムや型保護等の機能がサポートされた、Adaの +2005年版("Ada 2005")を想定して作られている。Ada 2005で追加されたキーワードを使 +用しているコード(そのようなコードは修正をすべき)は誤った強調色で表示してしまう +ものの、オリジナルのAda言語("Ada83", "Ada87", "Ada95")で書かれたコードも概ね取 +り扱うことができる。Adaについての詳細はhttp://www.adapower.com/を参照。 + +Adaモードは多くの状況を綺麗に取り扱う。 + +例えば、"-5"のなかの"-"は数字の一部として認識するが、"A-5"という表記の中の同じ +文字は演算子として認識される。通常、他のコンパイルユニットを参照する"with"や +"use"節は、Cにおける"#include"と同じ強調色で表示される。"Conditional"や +"Repeat"グループを異なる強調色に設定すれば、"end if"と"end loop"はそれぞれのグ +ループの強調色で表示される。 + +これらにはコマンド"highlight"を使って異なる強調色を設定することができる。(例: +ループの色を変えるには":hi Repeat"に続けて強調色指定を続ける; 単純な端末上では +ctermfg=Whiteという指定がしばしば見やすい) + +Adaモードではユーザが設定できる幾つかのオプションが存在する。その完全なリスト +は|ft-ada-options|を参照。 + +それら有効化するには、オプションに値を設定する。あるオプションを有効化する例は: +> + let ada_standard_types = 1 +> +無効化するには":unlet"を使用する。例: > + unlet ada_standard_types = 1 + +Adaファイルを読込む前に、コマンドラインで":"とこれらコマンドをキー入力すること +で、設定することができる。ファイルに"~/.vimrc"、コロン(":")を除いて"let"コマン +ドを追加すれば、これらのオプション設定を永続化することができる。 + +このモードは遅いコンピュータ(90MHz)上でも高速に動作するが、もしもパフォーマン +スが受け入れられないほど低いようならば、|g:ada_withuse_ordinary|を有効化する。 + +|g:ada_folding|がセットされていると、構文による折り畳み命令(|fold-syntax|)が追 +加される。 + +============================================================================== +2. ファイルタイププラグイン ~ + *ft-ada-indent* *ft-ada-plugin* + +Adaプラグインは以下のことに対応している: + + - オートインデント (|indent.txt|) + - 入力補完 (|i_CTRL-N|) + - ユーザ定義補完 (|i_CTRL-X_CTRL-U|) + - タグ検索 (|tagsrch.txt|) + - Quick Fix (|quickfix.txt|) + - バックスペース制御 (|'backspace'|) + - コメント制御 (|'comments'|, |'commentstring'|) + +Adaファイルが開かれたときだけこのプラグインはAdaモード機能を有効化し、メニュー +やポップアップメニューにAda関連の項目を追加する。 + +============================================================================== +3. オムニ補完 ~ + *ft-ada-omni* + +Adaオムニ補完(|i_CTRL-X_CTRL-O|)は"gnat xref -v" または "exuberant Ctags" +(http://ctags.sourceforge.net) によって作られたtagsデータベースを利用する。補 +完関数は、tagsファイルがどちらのツールを使って作られたのかを自動的に判定する。 + +------------------------------------------------------------------------------ +3.1 "gnat xref"を使ったオムニ補完 ~ + *gnat-xref* + +GNAT XREFはコンパイラの内部情報(aliファイル)を使ってtagsファイルを生成する。こ +れは100%正しいというアドバンテージと、深くネストした解析のオプションを持つ。し +かしそのコードはコンパイルが通らねばならず、生成器はとても遅く、生成されたtags +ファイルは各項目に対して基本的なCtags情報しか持たない。これではVimの高度なコー +ドブラウザプラグインに対しては十分ではない。 + +NOTE: "gnat xref -v"はとてもトリッキーで診断情報をほとんど出力しない。もし何も + 表示されなかったら、たいていパラメータが間違っている。 + いくつか重要なtips: + +1) 最初にコードをコンパイルし、"-aO"オプションを使って.aliファイルの位置を示さ + ねばならない。 +2) "gnat xref -v ../Include/adacl.ads" はうまく動かないので、代わりに"gnat + xref -v -aI../Include adacl.ads"を使うこと。 +3) "gnat xref -v -aI../Include *.ad?"はうまく動かないので、代わりに"cd + ../Include"と"gnat xref -v *.ad?"を使うこと。 +4) プロジェクトマネージャ対応は完全に壊れている。"gnat xref -Padacl.gpr"と試 + してみるのもいけない。 +5) タグファイルがソートされているとVimは高速に検索できるので、"sort --unique + --ignore-case --output=tags tags"とすること。 +6) タグファイルがソートされていることを示すために、1行目に"!_TAG_FILE_SORTED + 2 %sort ui"と入れるのを忘れないこと。 + +------------------------------------------------------------------------------ +3.2 "ctags"を使ったオムニ補完~ + *ada-ctags* + +Exuberant Ctagsは内蔵の多言語コードパーサを使う。このパーサはとても高速で、大 +量の付加情報を生成する(それゆえ"Exuberant Ctags"という名前がつけられている)。 +また、コンパイルが通らないファイルに対しても実行できる。 + +Exuberant Ctagsを使うVimのツールはたくさんある。 + +まず最初に、Ada対応のパッチを適用したExuberant Ctagsをインストールしなければな +らない。これはGNU Adaプロジェクトから入手できる。 +(http://gnuada.sourceforge.net). + +Exuberant CtagsのAdaパーサはかなり新しく、完全な対応は期待しないこと。 + +============================================================================== +4. コンパイラへの対応 ~ + *ada-compiler* + +Adaモードは複数のAdaコンパイラに対応していて、Adaソースを開くとき、 +|g:ada_default_compiler|で設定されているコンパイラセットを自動的に読み込む。 +このコンパイラプラグインは、実際のコンパイラプラグインとサポート関数・変数の集 +合に分かれている。これによって、ユーザの開発環境用に特殊化したコンパイラプラグ +インを作るのが容易になっている。 + +------------------------------------------------------------------------------ +4.1 GNAT ~ + *compiler-gnat* + +GNATは現在入手可能な唯一のフリーな(ビールとスピーチ)Adaコンパイラである。ライ +センス条項に違いのある複数のバージョンが用意されている。 + +GNATコンパイラプラグインは<F7>を押すとコンパイルを行い、その後即座に結果を表示 +する。プロジェクトファイルを設定することができる: + > + > call g:gnat.Set_Project_File ('my_project.gpr') + +プロジェクトファイルを設定すると、GPSと同じようにVimのセッション +(|views-sessions|)も作成される。これは開いているファイル、ウィンドウ位置などを +プロジェクトごとに記憶しておく。 + + *gnat_members* +GNAT オブジェクト ~ + + *g:gnat.Make()* +g:gnat.Make() + |g:gnat.Make_Command|を呼び出し、結果を|quickfix| ウィンドウに + 表示する。 + + *g:gnat.Pretty()* +g:gnat.Pretty() + |g:gnat.Pretty_Command|を呼び出す。 + + *g:gnat.Find()* +g:gnat.Find() + |g:gnat.Find_Command|を呼び出す。 + + *g:gnat.Tags()* +g:gnat.Tags() + |g:gnat.Tags_Command|を呼び出す。 + + *g:gnat.Set_Project_File()* +g:gnat.Set_Project_File([{file}]) + gnatプロジェクトファイルを設定し、関連付けられたセッションを読 + み込む。そのとき開かれていたプロジェクトは閉じられ、セッション + が書き出される。ファイル名なしで呼び出したときは、プロジェクト + ファイルを選択するためのファイル選択ダイアログが開く。空文字列 + を指定して呼び出したときは、そのプロジェクトを閉じ、関連付けら + れたセッションを閉じる。 + + *g:gnat.Project_File* +g:gnat.Project_File 文字列 + 現在のプロジェクトファイル。 + + *g:gnat.Make_Command* +g:gnat.Make_Command 文字列 + |g:gnat.Make()|に使われる外部プログラム (|'makeprg'|). + + *g:gnat.Pretty_Program* +g:gnat.Pretty_Program 文字列 + |g:gnat.Pretty()|に使われる外部プログラム + + *g:gnat.Find_Program* +g:gnat.Find_Program 文字列 + |g:gnat.Find()|に使われる外部プログラム + + *g:gnat.Tags_Command* +g:gnat.Tags_Command 文字列 + |g:gnat.Tags()|に使われる外部プログラム + + *g:gnat.Error_Format* +g:gnat.Error_Format 文字列 + エラーフォーマット (|'errorformat'|) + +------------------------------------------------------------------------------ +4.2 Dec Ada ~ + *compiler-hpada* *compiler-decada* + *compiler-vaxada* *compiler-compaqada* + +Dec Ada (歴代の名前は VAX Ada, Dec Ada, Compaq Ada, HP Ada)は相当古いAda 83の +コンパイラである。対応は基本的なものである: <F7>で現在のユニットをコンパイルす +る。 + +Dec Adaは引数としてファイル名でなくパッケージ名が渡されることを期待する。コン +パイラプラグインは普通のファイル名の慣習に対応しており、ファイル名をユニット名 +に変換する。区切りとして'-'と'__'の両方に対応している。 + + *decada_members* +DEC ADA オブジェクト ~ + + *g:decada.Make()* +g:decada.Make() 関数 + |g:decada.Make_Command|を呼び出し、結果を|quickfix|ウィンドウ + に表示する。 + + *g:decada.Unit_Name()* +g:decada.Unit_Name() 関数 + 現在のファイルのユニット名を取得する。 + + *g:decada.Make_Command* +g:decada.Make_Command 文字列 + |g:decadat.Make()| に使われる外部プログラム (|'makeprg'|). + + *g:decada.Error_Format* +g:decada.Error_Format| 文字列 + エラーフォーマット (|'errorformat'|). + +============================================================================== +5. リファレンス ~ + *ada-reference* + +------------------------------------------------------------------------------ +5.1 オプション ~ + *ft-ada-options* + + *g:ada_standard_types* +g:ada_standard_types 切替 (存在するなら真) + パッケージStandard内の型を強調する(例: "Float") + + *g:ada_space_errors* + *g:ada_no_trail_space_error* + *g:ada_no_tab_space_error* + *g:ada_all_tab_usage* +g:ada_space_errors 切替 (存在するなら真) + 余計な空白文字をエラーとして強調する。 + g:ada_no_trail_space_error + - ただし行末のスペースを無視する。 + g:ada_no_tab_space_error + - ただしスペースの後のタブを無視する。 + g:ada_all_tab_usage + - 全てのタブを強調する。 + + *g:ada_line_errors* +g:ada_line_errors 切替 (存在するなら真) + 長すぎる行を強調する。Note: このオプションはCPUに多大な負荷が + かかる。 + + *g:ada_rainbow_color* +g:ada_rainbow_color 切替 (存在するなら真) + '('と')'にレインボーカラーを使う。rainbow_parenthesisを使わな + いとこれは意味がない。 + + *g:ada_folding* +g:ada_folding 集合 ('sigpft') + Adaのソースに折り畳みを使う。 + 's': 読み込み時に構文折り畳みを有効化する。 + 'p': パッケージを折り畳む + 'f': 関数と手続きを折り畳む + 't': 型を折り畳む + 'c': 条件文を折り畳む + 'g': 読み込み時にgnat整形折り畳みを有効化する。 + 'i': 孤立した 'is' を上の行といっしょに折り畳む + 'b': 孤立した 'begin' を上の行といっしょに折り畳む + 'p': 孤立した 'private' を上の行といっしょに折り畳む + 'x': 孤立した 'exception' を上の行といっしょに折り + 畳む + 'i': 読み込み時にインデント折り畳みを有効化する。 + + Note: 構文折り畳みは初期段階(使用に耐えない)であり、インデント + かgnat整形折り畳みが勧められている。 + + gnat整形折り畳みを使うときは、次の設定が勧められている: + -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5 + + インデント折り畳みを使うときは、次の設定が勧められている: + shiftwidth=3 softtabstop=3 + + *g:ada_abbrev* +g:ada_abbrev 切替 (存在するなら真) + いくつかの短縮入力を追加する。この機能は様々な補完方法によりい + くらか取って代わられている。 + + *g:ada_withuse_ordinary* +g:ada_withuse_ordinary 切替 (存在するなら真) + "with"と"use"を通常のキーワードで表示する(これらが他のコンパイ + ルユニットへの参照として使われた場合には、特別に通常の強調とし + て表示する)。 + + *g:ada_begin_preproc* +g:ada_begin_preproc 切替 (存在するなら真) + 全てのbegin-likeなキーワードをCのプリプロセッサ命令の色で強調 + する。 + + *g:ada_omni_with_keywords* +g:ada_omni_with_keywords + オムニ補完(|compl-omni|)にキーワード、プラグマ、属性を追加する。 + Note: いつでも補完して、それからユーザ定義補完 + (|i_CTRL-X_CTRL-U|)をすることができる。 + + *g:ada_extended_tagging* +g:ada_extended_tagging 列挙 ('jump', 'list') + 拡張タグ機能を使う。2つのオプションがある + 'jump': ジャンプするのにtjumpを使う + 'list': QuickFixリストにタグを追加する + 普通のタグ機能は関数や演算子のオーバーロードに対応していない。 + これらの機能がCになく、タグ機能はもともとC用に開発されたためで + ある。 + + *g:ada_extended_completion* +g:ada_extended_completion + <C-N>と<C-R>補完(|i_CTRL-N|)に拡張補完を使う。このモードでは + '.'が識別子の一部となり、'Object.Method'や'Package.Procedure' + の全体が補完される。 + + *g:ada_gnat_extensions* +g:ada_gnat_extensions 切替 (存在するなら真) + GNATの拡張に対応する。 + + *g:ada_with_gnat_project_files* +g:ada_with_gnat_project_files 切替 (存在するなら真) + gnatプロジェクトファイルのキーワードと属性を追加する。 + + *g:ada_default_compiler* +g:ada_default_compiler 文字列 + デフォルトのコンパイラを設定する。現在対応しているのは'gnat'と + 'decada'である。 + +「存在するなら真」の変数は、その変数が定義されているときは真で、定義されていな +いときは偽となる。その変数がどんな値であろうとも、違いはない。 + +------------------------------------------------------------------------------ +5.3 コマンド ~ + *ft-ada-commands* + +:AdaRainbow *:AdaRainbow* + '('と')'に対するレインボーカラーモード(|g:ada_rainbow_color|) + をトグルする。 + +:AdaLines *:AdaLines* + 行エラー表示(|g:ada_line_errors|)をトグルする。 + +:AdaSpaces *:AdaSpaces* + スペースエラー表示(|g:ada_space_errors|)をトグルする。 + +:AdaTagDir *:AdaTagDir* + 現在のファイルのディレクトリに対してtagsファイルを作成する。 + +:AdaTagFile *:AdaTagFile* + 現在のファイルに対してtagsファイルを作成する。 + +:AdaTypes *:AdaTypes* + 標準型(|g:ada_standard_types|)の色をトグルする。 + +:GnatFind *:GnatFind* + |g:gnat.Find()|を呼び出す。 + +:GnatPretty *:GnatPretty* + |g:gnat.Pretty()|を呼び出す。 + +:GnatTags *:GnatTags* + |g:gnat.Tags()|を呼び出す。 + +------------------------------------------------------------------------------ +5.3 変数 ~ + *ft-ada-variables* + + *g:gnat* +g:gnat オブジェクト + GNATコンパイラを管理するコントロールオブジェクト。このオブジェ + クトは最初にAdaのソースコードが読み込まれたときに、 + |g:ada_default_compiler|が'gnat'に設定されているならば作成され + る。詳しくは|gnat_members|を参照。 + + *g:decada* +g:decada オブジェクト + Dec Adaコンパイラを管理するコントロールオブジェクト。このオブ + ジェクトは最初にAdaのソースコードが読み込まれたときに、 + |g:ada_default_compiler|が'decada'に設定されているならば作成さ + れる。詳しくは|decada_members|を参照。 + +------------------------------------------------------------------------------ +5.4 定数 ~ + *ft-ada-constants* + +全ての定数はロックされる。詳しくは|:lockvar|を参照。 + + *g:ada#WordRegex* +g:ada#WordRegex 文字列 + Adaの単語を検索する正規表現。 + + *g:ada#DotWordRegex* +g:ada#DotWordRegex 文字列 + ドットで区切られるAdaの単語を検索する正規表現。 + + *g:ada#Comment* +g:ada#Comment 文字列 + Adaのコメントを検索する正規表現。 + + *g:ada#Keywords* +g:ada#Keywords 辞書のリスト + キーワード、属性などのリスト。オムニ補完で用いられる形式。詳し + くは|complete-items|を参照。 + + *g:ada#Ctags_Kinds* +g:ada#Ctags_Kinds リストの辞書 + CtagsがAdaのタグを生成する際の、要素の種類の辞書。 + +------------------------------------------------------------------------------ +5.2 関数 ~ + *ft-ada-functions* + +ada#Word([{line}, {col}]) *ada#Word()* + カーソル下(または指定の行・桁)のAda要素のフルネームを返す。必 + 要に応じてスペース・改行は取り除かれる。 + +ada#List_Tag([{line}, {col}]) *ada#Listtags()* + カーソル下(または指定の行・桁)のAda要素の全ての出現位置を + QuickFixウィンドウ内にリストする。 + +ada#Jump_Tag ({ident}, {mode}) *ada#Jump_Tag()* + カーソル下(または指定の行・桁)のAda要素の全ての出現位置を + タグジャンプリスト内にリストする。引数modeは'tjump'、'stjump' + のどちらか。 + +ada#Create_Tags ({option}) *ada#Create_Tags()* + Ctagsを使ってtagsファイルを作成する。引数optionが'file'なら現 + 在のファイル、'dir'なら現在のファイルのディレクトリ、またはフ + ァイル名とする。 + +gnat#Insert_Tags_Header() *gnat#Insert_Tags_Header()* + GNAT XREFの出力に欠けているタグファイルヘッダ(!_TAG_)の情報を + 現在のファイルに追加する。 + +ada#Switch_Syntax_Option ({option}) *ada#Switch_Syntax_Option()* + 強調のオプションをオン・オフにする。Adaのメニューに使われる。 + + *gnat#New()* +gnat#New () + 新しくgnatオブジェクトを作成する。詳しくは|g:gnat|を参照。 + + +============================================================================== +8. その他のプラグイン ~ + *ada-extra-plugins* + +以下の外部プラグインをインストールしてもよい。これらはAdaの編集に役に立ち、 +Adaモードの機能を向上させてくれる: + +backup.vim + http://www.vim.org/scripts/script.php?script_id=1537 + 可能なかぎりたくさんのバックアップを取ってくれ、自分自身でやる必要がな + くなる。 + +rainbow_parenthsis.vim + http://www.vim.org/scripts/script.php?script_id=1561 + Adaは'('と')'しか使わないのでとても助かる。 + +nerd_comments.vim + http://www.vim.org/scripts/script.php?script_id=1218 + ほとんど全てのプログラミング言語に対応するコメント化・アンコメント化 + +matchit.vim + http://www.vim.org/scripts/script.php?script_id=39 + ほとんどの言語に対応する'%'でのジャンプ。通常の'%'は'{}'形式の言語に対 + してだけ役に立つ。Adaモードはこれに必要な検索パターンを設定する。 + +taglist.vim + http://www.vim.org/scripts/script.php?script_id=273 + ソースコードエクスプローラサイドバー。Adaで利用可能にするパッチがある。 + +GNU Adaプロジェクトが配布するVimは以上を全て含んでいる。 + +============================================================================== +vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab +vim: filetype=help encoding=latin1 diff --git a/ja/syntax.jax b/ja/syntax.jax index 77ba7dfe6..fb2ca3bb4 100644 --- a/ja/syntax.jax +++ b/ja/syntax.jax @@ -1,10 +1,10 @@ COMMENT: 構文強調(テキストの着色) -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*syntax.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*syntax.txt* For Vim version 7.1. Last change: 2007 May 11 VIMリファレンスマニュアル by Bram Moolenaar @@ -463,8 +463,12 @@ abel_obsolete_ok 古いキーワードをエラーでなく命令文として abel_cpp_comments_illegal '//'をインラインコメントリーダとして扱わない -ADA *ada.vim* *ft-ada-syntax* +ADA +|ft-ada-syntax|を参照。 + + +ANT このモードはオブジェクト指向プログラムや型保護等の機能がサポートされた、Adaの 1995年版("Ada95")を想定して作られている。Ada95で追加されたキーワードを使用して いるAda83のコード(そのようなコードは修正をすべき)は誤った強調色で表示してしま @@ -879,14 +883,9 @@ Doxygen は JavaDoc に似た特殊なフォーマットからコードのドキ Doxygen のフォーマットを有効にするにはいくつかの方法がある。手動でか、またはモー ドラインでそのファイルの syntax に '.doxygen' を追加する。例: > :set syntax=c.doxygen -または > +または > // vim:syntax=c.doxygen -任意のファイルタイプの上で Doxygen のフォーマットを有効にするには、各ファイル -タイプに対して次の行を .vimrc に加える。ここで {filetype} は適切な値に置き換え -る。 > - :let g:syntax_extra_{filetype}='doxygen' - c, cpp, idl のファイルに対しては、グローバルまたはバッファローカルな変数 load_doxygen_syntax を設定すれば自動的にこれが行われる。次の行を .vimrc に加え る。 > @@ -1021,7 +1020,7 @@ FORM *form.vim* *ft-form-syntax* FORMファイルの構文要素に使用するカラースキームには、Conditional, Number, Statement, Comment, PreProc, Type, そしてStringが、次の文献で定義される言語仕 様に沿って行なわれる。 -文献: 'Symbolic Manipulation with FORM'' by J.A.M. Vermaseren, CAN, +文献: 'Symbolic Manipulation with FORM' by J.A.M. Vermaseren, CAN, Netherlands, 1991. 初期設定の色に変更を加えるには、次の構文グループを再定義すれば良い: @@ -2196,7 +2195,7 @@ Ruby構文強調にはたくさんのオプションがある。 てこの機能をオフにできる: > :let ruby_no_expensive = 1 - +< この場合すべての制御キーワードに同じ色が使われる。 この機能を有効化したいが、 @@ -2204,14 +2203,14 @@ Ruby構文強調にはたくさんのオプションがある。 うなら、変数"ruby_minlines"を50以上の値にセットしてみるとよい: > :let ruby_minlines = 100 - +< 理想的にはこの値はファイル中の最も大きいクラスやモジュールの長さよりも大きくし ておくとよい。 -"ruby_no_identifiers" を定義すると、特別な識別子が強調されなくなる: > - - :let ruby_no_identifiers = 1 +rubyIdentifierを取り除くと、特別な識別子が強調されなくなる: > + :hi link rubyIdentifier NONE +< これによって "ConstantName", "$global_var", "@@class_var", "@instance_var", "| block_param |", ":symbol" のような特別な識別子が強調されなくなる。 @@ -2219,14 +2218,20 @@ Kernel, Module, Object などの重要なメソッドはデフォルトで強調 "ruby_no_special_methods" を定義するとこれらの強調がされなくなる: > :let ruby_no_special_methods = 1 - +< これによって "require", "attr", "private", "raise", "proc" などの重要なメソッ ドの強調がされなくなる。 -"ruby_space_errors" を定義するとホワイトスペースのエラーが強調されるようになる。 +Rubyの演算子を強調することができる。これは"ruby_operators"を定義すると有効にな +る: > - :let ruby_space_errors = 1 + :let ruby_operators = 1 +< +"ruby_space_errors" を定義するとホワイトスペースのエラーが強調されるように +なる: > + :let ruby_space_errors = 1 +< これによって行末のホワイトスペースやタブ文字の前のスペース文字がエラーとして強 調されるようになる。これは "ruby_no_trail_space_error" と "ruby_no_tab_space_error" を定義すると改善することができる。これらはそれぞれ行 @@ -2235,11 +2240,15 @@ Kernel, Module, Object などの重要なメソッドはデフォルトで強調 "ruby_fold" を定義すると折り畳みを有効にすることができる: > :let ruby_fold = 1 - +< これを定義すると、オプション 'foldmethod' が "syntax" になり、クラス、モジュー ル、メソッド、コードブロック、ヒアドキュメント、コメントの折り畳みを行うように なる。 +"ruby_no_comment_fold"を定義すると複数行コメントの折り畳みを無効にできる: > + + :let ruby_no_comment_fold = 1 +< SCHEME *scheme.vim* *ft-scheme-syntax* @@ -2330,7 +2339,7 @@ SGMLファイル中のタグを強調する方法は以下のように動作す SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* -これは「普通の」Unix (Borne) sh、bashそしてKornシェルをカバーしている。 +これは「普通の」Unix (Bourne) sh、bashそしてKornシェルをカバーしている。 Vimは様々なファイル名がどのタイプであるかを指定することによって、どのシェルが 使われているかを決定しようとする: > @@ -2482,6 +2491,15 @@ texZone, texMathZoneの3つの主な区間・範囲がサポートされてい らは第一にシンクロナイズ(つまり、画面最上行のテキストがどのグループに入るか)に 影響を与える。 +*tex-morecommands* *tex-package* +もっとコマンドを強調させたい? + +LaTeXはプログラミング言語であり、特殊化されたLaTeXのコマンド、構文、フォントが +つまったパッケージがたくさんある。そのようなパッケージを使っている人は、標準の +syntax/tex.vimにそのパッケージを対応させてほしいと思うだろう。しかしそれは明ら +かに非現実的である。そこで、|mysyntaxfile-add|で使われているテクニックを使って +、syntax/tex.vimで提供されている強調を拡張・修正してみてください。 + *tex-error* エラーの強調が行き過ぎならば ~ @@ -4076,6 +4094,8 @@ Cコメントに対してQuestionの強調をつけたい場合、これをvimrc :highlight link cComment Question もしC構文ファイル中の"default"がないと、構文ファイルが読み込まれた時点で強調が 上書きされてしまう。 +訳注: "default" がないと、.vimrc に書いた設定が、後に読み込まれる +訳注: C構文ファイルによって上書きされてしまうということ。 ============================================================================== 14. 構文の消去 *:syn-clear* *E391* @@ -4182,7 +4202,7 @@ typedef、union、structだけを強調することもできる。そのため # 型用の強調ファイルを作成する。Exuberant ctagsとawkが必要 types: types.vim types.vim: *.[ch] - ctags -i=gstuS -o- *.[ch] |\ + ctags --c-kinds=gstu -o- *.[ch] |\ awk 'BEGIN{printf("syntax keyword Type\t")}\ {printf("%s ", $$1)}END{print ""}' > $@ From d636254ff7686dbf5a62af2570d13dc83b1607d0 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Tue, 12 Jun 2007 04:27:16 +0000 Subject: [PATCH 091/783] fix: update quickref, help, change to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@91 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/change.txt | 20 +- en/help.txt | 49 ++- en/quickref.txt | 773 ++++++++++++++++++++++++++---------------------- ja/change.jax | 20 +- ja/help.jax | 7 +- ja/quickref.jax | 15 +- 6 files changed, 485 insertions(+), 399 deletions(-) diff --git a/en/change.txt b/en/change.txt index 01f9a4bf9..e82256dfa 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.0. Last change: 2006 May 05 +*change.txt* For Vim version 7.1. Last change: 2007 Jan 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -640,7 +640,7 @@ The flags that you can use for the substitute commands: [#] Like [p] and prepend the line number. -[l] Like [l] but print the text like |:list|. +[l] Like [p] but print the text like |:list|. [r] Only useful in combination with ":&" or ":s" without arguments. ":&r" works the same way as ":~": When the search pattern is empty, use the @@ -670,14 +670,20 @@ pattern from the last substitute or ":global" command. With the [r] flag, the command uses the pattern from the last substitute, ":global", or search command. +If the {string} is omitted the substitute is done as if it's empty. Thus the +matched pattern is deleted. The separator after {pattern} can also be left +out then. Example: > + :%s/TESTING +This deletes "TESTING" from all lines, but only one per line. + For compatibility with Vi these two exceptions are allowed: "\/{string}/" and "\?{string}?" do the same as "//{string}/r". "\&{string}&" does the same as "//{string}/". *E146* Instead of the '/' which surrounds the pattern and replacement string, you -can use any other character, but not an alphanumeric character, '\', '"' or -'|'. This is useful if you want to include a '/' in the search pattern or -replacement string. Example: > +can use any other single-byte character, but not an alphanumeric character, +'\', '"' or '|'. This is useful if you want to include a '/' in the search +pattern or replacement string. Example: > :s+/+//+ For the definition of a pattern, see |pattern|. @@ -1075,7 +1081,7 @@ and ":put" commands and with CTRL-R. {not in Vi} {not available when compiled without the |+cmdline_hist| feature} -6. Expression register "= *quote_=* *quote=* +6. Expression register "= *quote_=* *quote=* *@=* This is not really a register that stores text, but is a way to use an expression in commands which use a register. The expression register is read-only; you cannot put text into it. After the '=', the cursor moves to @@ -1365,7 +1371,7 @@ readability. letter meaning when present in 'formatoptions' ~ -t Auto-wrap text using textwidth (does not apply to comments) +t Auto-wrap text using textwidth c Auto-wrap comments using textwidth, inserting the current comment leader automatically. r Automatically insert the current comment leader after hitting diff --git a/en/help.txt b/en/help.txt index f4bfa6eb6..5bc8800e0 100644 --- a/en/help.txt +++ b/en/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 6.3. Last change: 2004 May 04 +*help.txt* For Vim version 7.1. Last change: 2006 Nov 07 VIM - main help file k @@ -7,23 +7,23 @@ Close this window: Use ":q<Enter>". Get out of Vim: Use ":qa!<Enter>" (careful, all changes are lost!). -Jump to a subject: Position the cursor on a tag between |bars| and hit CTRL-]. +Jump to a subject: Position the cursor on a tag (e.g. |bars|) and hit CTRL-]. With the mouse: ":set mouse=a" to enable the mouse (in xterm or GUI). - Double-click the left mouse button on a tag between |bars|. + Double-click the left mouse button on a tag, e.g. |bars|. Jump back: Type CTRL-T or CTRL-O (repeat to go further back). Get specific help: It is possible to go directly to whatever you want help - on, by giving an argument to the ":help" command |:help|. + on, by giving an argument to the |:help| command. It is possible to further specify the context: *help-context* WHAT PREPEND EXAMPLE ~ - Normal mode commands (nothing) :help x - Visual mode commands v_ :help v_u - Insert mode commands i_ :help i_<Esc> - Command-line commands : :help :quit + Normal mode command (nothing) :help x + Visual mode command v_ :help v_u + Insert mode command i_ :help i_<Esc> + Command-line command : :help :quit Command-line editing c_ :help c_<Del> - Vim command arguments - :help -r - Options ' :help 'textwidth' + Vim command argument - :help -r + Option ' :help 'textwidth' Search for help: Type ":help word", then hit CTRL-D to see matching help entries for "word". @@ -71,6 +71,7 @@ Editing Effectively ~ |usr_29.txt| Moving through programs |usr_30.txt| Editing programs |usr_31.txt| Exploiting the GUI +|usr_32.txt| The undo tree Tuning Vim ~ |usr_40.txt| Make new commands @@ -84,7 +85,7 @@ Making Vim Run ~ |usr_90.txt| Installing Vim -REFERENCE MANUAL: These files explain every detail of Vim. +REFERENCE MANUAL: These files explain every detail of Vim. *reference_toc* General subjects ~ |intro.txt| general introduction to Vim; notation used in help files @@ -97,6 +98,7 @@ General subjects ~ |quotes.txt| remarks from users of Vim |todo.txt| known problems and desired extensions |develop.txt| development of Vim +|debug.txt| debugging Vim itself |uganda.txt| Vim distribution conditions and what to do with your money Basic editing ~ @@ -121,7 +123,9 @@ Advanced editing ~ |tagsrch.txt| tags and special searches |quickfix.txt| commands for a quick edit-compile-fix cycle |windows.txt| commands for using multiple windows and buffers +|tabpage.txt| commands for using multiple tab pages |syntax.txt| syntax highlighting +|spell.txt| spell checking |diff.txt| working with two or three versions of the same file |autocmd.txt| automatically executing commands on an event |filetype.txt| settings done specifically for a type of file @@ -129,6 +133,7 @@ Advanced editing ~ |fold.txt| hide (fold) ranges of lines Special issues ~ +|print.txt| printing |remote.txt| using Vim as a server or client |term.txt| using different terminals and mice |digraph.txt| list of available digraphs @@ -138,6 +143,7 @@ Special issues ~ |farsi.txt| Farsi (Persian) editing |hebrew.txt| Hebrew language support and editing |russian.txt| Russian language support and editing +|ada.txt| Ada (the programming language) support |hangulin.txt| Hangul (Korean) input mode |rileft.txt| right-to-left editing mode @@ -148,7 +154,8 @@ GUI ~ |gui_x11.txt| X11 GUI Interfaces ~ -|if_cscop.txt| using cscope with Vim +|if_cscop.txt| using Cscope with Vim +|if_mzsch.txt| MzScheme interface |if_perl.txt| Perl interface |if_pyth.txt| Python interface |if_sniff.txt| SNiFF+ interface @@ -165,6 +172,7 @@ Versions ~ |version4.txt| Differences between Vim version 3.0 and 4.x |version5.txt| Differences between Vim version 4.6 and 5.x |version6.txt| Differences between Vim version 5.7 and 6.x +|version7.txt| Differences between Vim version 6.4 and 7.x *sys-file-list* Remarks about specific systems ~ |os_390.txt| OS/390 Unix @@ -182,9 +190,13 @@ Remarks about specific systems ~ |os_win32.txt| MS-Windows 95/98/NT *standard-plugin-list* Standard plugins ~ -|pi_netrw.txt| Reading and writing files over a network -|pi_gzip.txt| Reading and writing compressed files -|pi_expl.txt| File explorer +|pi_getscript.txt| Downloading latest version of Vim scripts +|pi_gzip.txt| Reading and writing compressed files +|pi_netrw.txt| Reading and writing files over a network +|pi_paren.txt| Highlight matching parens +|pi_tar.txt| Tar file explorer +|pi_vimball.txt| Create a self-installing Vim script +|pi_zip.txt| Zip archive explorer LOCAL ADDITIONS: *local-additions* @@ -193,5 +205,12 @@ LOCAL ADDITIONS: *local-additions* Now that you've jumped here with CTRL-] or a double mouse click, you can use CTRL-T, CTRL-O, g<RightMouse>, or <C-RightMouse> to go back to where you were. + +Note that tags are within | characters, but when highlighting is enabled these +are hidden. That makes it easier to read a command. + +Anyway, you can use CTRL-] on any word, also when it is not within |, and Vim +will try to find help for it. + ------------------------------------------------------------------------------ vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl: diff --git a/en/quickref.txt b/en/quickref.txt index bbb7df04c..0f05d8b0b 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 6.3. Last change: 2004 May 05 +*quickref.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -18,10 +18,10 @@ |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_ss| insert: Special keys |Q_st| Starting VIM +|Q_di| insert: Digraphs |Q_ed| Editing a file +|Q_si| insert: Special inserts |Q_fl| Using the argument list +|Q_de| change: Deleting text |Q_wq| Writing and quitting |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 @@ -211,6 +211,8 @@ N is used to indicate an optional count that can be given before the command. |:ts| :ts[elect][!] [tag] List matching tags and select one to jump to |:tjump| :tj[ump][!] [tag] Jump to tag [tag] or select from list when there are multiple matches +|:ltag| :lt[ag][!] [tag] Jump to tag [tag] and add matching tags to the + location list. |:tags| :tags Print tag list |CTRL-T| N CTRL-T Jump back from Nth older tag in tag list @@ -255,6 +257,7 @@ These only work when 'wrap' is off: |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) |:startinsert| :star[tinsert][!] start Insert mode, append when [!] used +|:startreplace| :startr[eplace][!] start Replace mode, at EOL when [!] used in Visual block mode: |v_b_I| I insert the same text in front of all the selected lines @@ -585,313 +588,349 @@ In Insert or Command-line mode: the help. Short explanation of each option: *option-list* -|'aleph'| |'al'| ASCII code of the letter Aleph (Hebrew) -|'allowrevins'| |'ari'| allow CTRL-_ in Insert and Command-line mode -|'altkeymap'| |'akm'| for default second language (Farsi/Hebrew) -|'ambiwidth'| |'ambw'| what to do with Unicode chars of ambiguous width -|'antialias'| |'anti'| Mac OS X: use smooth, antialiased fonts -|'autochdir'| |'acd'| change directory to the file in the current window -|'arabic'| |'arab'| for Arabic as a default second language -|'arabicshape'| |'arshape'| do shaping for Arabic characters -|'autoindent'| |'ai'| take indent for new line from previous line -|'autoread'| |'ar'| autom. read file when changed outside of Vim -|'autowrite'| |'aw'| automatically write file if changed -|'autowriteall'| |'awa'| as 'autowrite', but works with more commands -|'background'| |'bg'| "dark" or "light", used for highlight colors -|'backspace'| |'bs'| how backspace works at start of line -|'backup'| |'bk'| keep backup file after overwriting a file -|'backupcopy'| |'bkc'| make backup as a copy, don't rename the file -|'backupdir'| |'bdir'| list of directories for the backup file -|'backupext'| |'bex'| extension used for the backup file -|'backupskip'| |'bsk'| no backup for files that match these patterns -|'balloondelay'| |'bdlay'| delay in mS before a balloon may pop up -|'ballooneval'| |'beval'| switch on balloon evaluation -|'binary'| |'bin'| read/write/edit file in binary mode -|'bioskey'| |'biosk'| MS-DOS: use bios calls for input characters -|'bomb'| prepend a Byte Order Mark to the file -|'breakat'| |'brk'| characters that may cause a line break -|'browsedir'| |'bsdir'| which directory to start browsing in -|'bufhidden'| |'bh'| what to do when buffer is no longer in window -|'buflisted'| |'bl'| whether the buffer shows up in the buffer list -|'buftype'| |'bt'| special type of buffer -|'casemap'| |'cmp'| specifies how case of letters is changed -|'cdpath'| |'cd'| list of directories searched with ":cd" -|'cedit'| key used to open the command-line window -|'charconvert'| |'ccv'| expression for character encoding conversion -|'cindent'| |'cin'| do C program indenting -|'cinkeys'| |'cink'| keys that trigger indent when 'cindent' is set -|'cinoptions'| |'cino'| how to do indenting when 'cindent' is set -|'cinwords'| |'cinw'| words where 'si' and 'cin' add an indent -|'clipboard'| |'cb'| use the clipboard as the unnamed register -|'cmdheight'| |'ch'| number of lines to use for the command-line -|'cmdwinheight'| |'cwh'| height of the command-line window -|'columns'| |'co'| number of columns in the display -|'comments'| |'com'| patterns that can start a comment line -|'commentstring'| |'cms'| template for comments; used for fold marker -|'compatible'| |'cp'| behave Vi-compatible as much as possible -|'complete'| |'cpt'| specify how Insert mode completion works -|'confirm'| |'cf'| ask what to do about unsaved/read-only files -|'conskey'| |'consk'| get keys directly from console (MS-DOS only) -|'copyindent'| |'ci'| make 'autoindent' use existing indent structure -|'cpoptions'| |'cpo'| flags for Vi-compatible behavior -|'cscopepathcomp'| |'cspc'| how many components of the path to show -|'cscopeprg'| |'csprg'| command to execute cscope -|'cscopequickfix'| |'csqf'| use quickfix window for cscope results -|'cscopetag'| |'cst'| use cscope for tag commands -|'cscopetagorder'| |'csto'| determines ":cstag" search order -|'cscopeverbose'| |'csverb'| give messages when adding a cscope database -|'debug'| set to "msg" to see all error messages -|'define'| |'def'| pattern to be used to find a macro definition -|'delcombine'| |'deco'| delete combining characters on their own -|'dictionary'| |'dict'| list of file names used for keyword completion -|'diff'| use diff mode for the current window -|'diffexpr'| |'dex'| expression used to obtain a diff file -|'diffopt'| |'dip'| options for using diff mode -|'digraph'| |'dg'| enable the entering of digraphs in Insert mode -|'directory'| |'dir'| list of directory names for the swap file -|'display'| |'dy'| list of flags for how to display text -|'eadirection'| |'ead'| in which direction 'equalalways' works -|'edcompatible'| |'ed'| toggle flags of ":substitute" command -|'encoding'| |'enc'| encoding used internally -|'endofline'| |'eol'| write <EOL> for last line in file -|'equalalways'| |'ea'| windows are automatically made the same size -|'equalprg'| |'ep'| external program to use for "=" command -|'errorbells'| |'eb'| ring the bell for error messages -|'errorfile'| |'ef'| name of the errorfile for the QuickFix mode -|'errorformat'| |'efm'| description of the lines in the error file -|'esckeys'| |'ek'| recognize function keys in Insert mode -|'eventignore'| |'ei'| autocommand events that are ignored -|'expandtab'| |'et'| use spaces when <Tab> is inserted -|'exrc'| |'ex'| read .vimrc and .exrc in the current directory -|'fileencoding'| |'fenc'| file encoding for multi-byte text -|'fileencodings'| |'fencs'| automatically detected character encodings -|'fileformat'| |'ff'| file format used for file I/O -|'fileformats'| |'ffs'| automatically detected values for 'fileformat' -|'filetype'| |'ft'| type of file, used for autocommands -|'fillchars'| |'fcs'| characters to use for displaying special items -|'fkmap'| |'fk'| Farsi keyboard mapping -|'foldclose'| |'fcl'| close a fold when the cursor leaves it -|'foldcolumn'| |'fdc'| width of the column used to indicate folds -|'foldenable'| |'fen'| set to display all folds open -|'foldexpr'| |'fde'| expression used when 'foldmethod' is "expr" -|'foldignore'| |'fdi'| ignore lines when 'foldmethod' is "indent" -|'foldlevel'| |'fdl'| close folds with a level higher than this -|'foldlevelstart'| |'fdls'| 'foldlevel' when starting to edit a file -|'foldmarker'| |'fmr'| markers used when 'foldmethod' is "marker" -|'foldmethod'| |'fdm'| folding type -|'foldminlines'| |'fml'| minimum number of lines for a fold to be closed -|'foldnestmax'| |'fdn'| maximum fold depth -|'foldopen'| |'fdo'| for which commands a fold will be opened -|'foldtext'| |'fdt'| expression used to display for a closed fold -|'formatoptions'| |'fo'| how automatic formatting is to be done -|'formatprg'| |'fp'| name of external program used with "gq" command -|'gdefault'| |'gd'| the ":substitute" flag 'g' is default on -|'grepformat'| |'gfm'| format of 'grepprg' output -|'grepprg'| |'gp'| program to use for ":grep" -|'guicursor'| |'gcr'| GUI: settings for cursor shape and blinking -|'guifont'| |'gfn'| GUI: Name(s) of font(s) to be used -|'guifontset'| |'gfs'| GUI: Names of multi-byte fonts to be used -|'guifontwide'| |'gfw'| list of font names for double-wide characters -|'guiheadroom'| |'ghr'| GUI: pixels room for window decorations -|'guioptions'| |'go'| GUI: Which components and options are used -|'guipty'| GUI: try to use a pseudo-tty for ":!" commands -|'helpfile'| |'hf'| full path name of the main help file -|'helpheight'| |'hh'| minimum height of a new help window -|'helplang'| |'hlg'| preferred help languages -|'hidden'| |'hid'| don't unload buffer when it is |abandon|ed -|'highlight'| |'hl'| sets highlighting mode for various occasions -|'hlsearch'| |'hls'| highlight matches with last search pattern -|'history'| |'hi'| number of command-lines that are remembered -|'hkmap'| |'hk'| Hebrew keyboard mapping -|'hkmapp'| |'hkp'| phonetic Hebrew keyboard mapping -|'icon'| let Vim set the text of the window icon -|'iconstring'| string to use for the Vim icon text -|'ignorecase'| |'ic'| ignore case in search patterns -|'imactivatekey'| |'imak'| key that activates the X input method -|'imcmdline'| |'imc'| use IM when starting to edit a command line -|'imdisable'| |'imd'| do not use the IM in any mode -|'iminsert'| |'imi'| use :lmap or IM in Insert mode -|'imsearch'| |'ims'| use :lmap or IM when typing a search pattern -|'include'| |'inc'| pattern to be used to find an include file -|'includeexpr'| |'inex'| expression used to process an include line -|'incsearch'| |'is'| highlight match while typing search pattern -|'indentexpr'| |'inde'| expression used to obtain the indent of a line -|'indentkeys'| |'indk'| keys that trigger indenting with 'indentexpr' -|'infercase'| |'inf'| adjust case of match for keyword completion -|'insertmode'| |'im'| start the edit of a file in Insert mode -|'isfname'| |'isf'| characters included in file names and pathnames -|'isident'| |'isi'| characters included in identifiers -|'iskeyword'| |'isk'| characters included in keywords -|'isprint'| |'isp'| printable characters -|'joinspaces'| |'js'| two spaces after a period with a join command -|'key'| encryption key -|'keymap'| |'kmp'| name of a keyboard mapping -|'keymodel'| |'km'| enable starting/stopping selection with keys -|'keywordprg'| |'kp'| program to use for the "K" command -|'langmap'| |'lmap'| alphabetic characters for other language mode -|'langmenu'| |'lm'| language to be used for the menus -|'laststatus'| |'ls'| tells when last window has status lines -|'lazyredraw'| |'lz'| don't redraw while executing macros -|'linebreak'| |'lbr'| wrap long lines at a blank -|'lines'| number of lines in the display -|'linespace'| |'lsp'| number of pixel lines to use between characters -|'lisp'| automatic indenting for Lisp -|'lispwords'| |'lw'| words that change how lisp indenting works -|'list'| show <Tab> and <EOL> -|'listchars'| |'lcs'| characters for displaying in list mode -|'loadplugins'| |'lpl'| load plugin scripts when starting up -|'magic'| changes special characters in search patterns -|'makeef'| |'mef'| name of the errorfile for ":make" -|'makeprg'| |'mp'| program to use for the ":make" command -|'matchpairs'| |'mps'| pairs of characters that "%" can match -|'matchtime'| |'mat'| tenths of a second to show matching paren -|'maxfuncdepth'| |'mfd'| maximum recursive depth for user functions -|'maxmapdepth'| |'mmd'| maximum recursive depth for mapping -|'maxmem'| |'mm'| maximum memory (in Kbyte) used for one buffer -|'maxmemtot'| |'mmt'| maximum memory (in Kbyte) used for all buffers -|'menuitems'| |'mis'| maximum number of items in a menu -|'modeline'| |'ml'| recognize modelines at start or end of file -|'modelines'| |'mls'| number of lines checked for modelines -|'modifiable'| |'ma'| changes to the text are not possible -|'modified'| |'mod'| buffer has been modified -|'more'| pause listings when the whole screen is filled -|'mouse'| enable the use of mouse clicks -|'mousefocus'| |'mousef'| keyboard focus follows the mouse -|'mousehide'| |'mh'| hide mouse pointer while typing -|'mousemodel'| |'mousem'| changes meaning of mouse buttons -|'mouseshape'| |'mouses'| shape of the mouse pointer in different modes -|'mousetime'| |'mouset'| max time between mouse double-click -|'nrformats'| |'nf'| number formats recognized for CTRL-A command -|'number'| |'nu'| print the line number in front of each line -|'osfiletype'| |'oft'| operating system-specific filetype information -|'paragraphs'| |'para'| nroff macros that separate paragraphs -|'paste'| allow pasting text -|'pastetoggle'| |'pt'| key code that causes 'paste' to toggle -|'patchexpr'| |'pex'| expression used to patch a file -|'patchmode'| |'pm'| keep the oldest version of a file -|'path'| |'pa'| list of directories searched with "gf" et.al. -|'preserveindent'| |'pi'| preserve the indent structure when reindenting -|'previewheight'| |'pvh'| height of the preview window -|'previewwindow'| |'pvw'| identifies the preview window -|'printdevice'| |'pdev'| name of the printer to be used for :hardcopy -|'printencoding'| |'penc'| encoding to be used for printing -|'printexpr'| |'pexpr'| expression used to print PostScript for :hardcopy -|'printfont'| |'pfn'| name of the font to be used for :hardcopy -|'printheader'| |'pheader'| format of the header used for :hardcopy -|'printoptions'| |'popt'| controls the format of :hardcopy output -|'readonly'| |'ro'| disallow writing the buffer -|'remap'| allow mappings to work recursively -|'report'| threshold for reporting nr. of lines changed -|'restorescreen'| |'rs'| Win32: restore screen when exiting -|'revins'| |'ri'| inserting characters will work backwards -|'rightleft'| |'rl'| window is right-to-left oriented -|'rightleftcmd'| |'rlc'| commands for which editing works right-to-left -|'ruler'| |'ru'| show cursor line and column in the status line -|'rulerformat'| |'ruf'| custom format for the ruler -|'runtimepath'| |'rtp'| list of directories used for runtime files -|'scroll'| |'scr'| lines to scroll with CTRL-U and CTRL-D -|'scrollbind'| |'scb'| scroll in window as other windows scroll -|'scrolljump'| |'sj'| minimum number of lines to scroll -|'scrolloff'| |'so'| minimum nr. of lines above and below cursor -|'scrollopt'| |'sbo'| how 'scrollbind' should behave -|'sections'| |'sect'| nroff macros that separate sections -|'secure'| secure mode for reading .vimrc in current dir -|'selection'| |'sel'| what type of selection to use -|'selectmode'| |'slm'| when to use Select mode instead of Visual mode -|'sessionoptions'| |'ssop'| options for |:mksession| -|'shell'| |'sh'| name of shell to use for external commands -|'shellcmdflag'| |'shcf'| flag to shell to execute one command -|'shellpipe'| |'sp'| string to put output of ":make" in error file -|'shellquote'| |'shq'| quote character(s) for around shell command -|'shellredir'| |'srr'| string to put output of filter in a temp file -|'shellslash'| |'ssl'| use forward slash for shell file names -|'shelltype'| |'st'| Amiga: influences how to use a shell -|'shellxquote'| |'sxq'| like 'shellquote', but include redirection -|'shiftround'| |'sr'| round indent to multiple of shiftwidth -|'shiftwidth'| |'sw'| number of spaces to use for (auto)indent step -|'shortmess'| |'shm'| list of flags, reduce length of messages -|'shortname'| |'sn'| non-MS-DOS: Filenames assumed to be 8.3 chars -|'showbreak'| |'sbr'| string to use at the start of wrapped lines -|'showcmd'| |'sc'| show (partial) command in status line -|'showfulltag'| |'sft'| show full tag pattern when completing tag -|'showmatch'| |'sm'| briefly jump to matching bracket if insert one -|'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 -|'smartindent'| |'si'| smart autoindenting for C programs -|'smarttab'| |'sta'| use 'shiftwidth' when inserting <Tab> -|'softtabstop'| |'sts'| number of spaces that <Tab> uses while editing -|'splitbelow'| |'sb'| new window from split is below the current one -|'splitright'| |'spr'| new window is put right of the current one -|'startofline'| |'sol'| commands move cursor to first blank in line -|'statusline'| |'stl'| custom format for the status line -|'suffixes'| |'su'| suffixes that are ignored with multiple match -|'suffixesadd'| |'sua'| suffixes added when searching for a file -|'swapfile'| |'swf'| whether to use a swapfile for a buffer -|'swapsync'| |'sws'| how to sync the swap file -|'switchbuf'| |'swb'| sets behavior when switching to another buffer -|'syntax'| |'syn'| syntax to be loaded for current buffer -|'tabstop'| |'ts'| number of spaces that <Tab> in file uses -|'tagbsearch'| |'tbs'| use binary searching in tags files -|'taglength'| |'tl'| number of significant characters for a tag -|'tagrelative'| |'tr'| file names in tag file are relative -|'tags'| |'tag'| list of file names used by the tag command -|'tagstack'| |'tgst'| push tags onto the tag stack -|'term'| name of the terminal -|'termbidi'| |'tbidi'| terminal takes care of bi-directionality -|'termencoding'| |'tenc'| character encoding used by the terminal -|'terse'| shorten some messages -|'textauto'| |'ta'| obsolete, use 'fileformats' -|'textmode'| |'tx'| obsolete, use 'fileformat' -|'textwidth'| |'tw'| maximum width of text that is being inserted -|'thesaurus'| |'tsr'| list of thesaurus files for keyword completion -|'tildeop'| |'top'| tilde command "~" behaves like an operator -|'timeout'| |'to'| time out on mappings and key codes -|'timeoutlen'| |'tm'| time out time in milliseconds -|'title'| let Vim set the title of the window -|'titlelen'| percentage of 'columns' used for window title -|'titleold'| old title, restored when exiting -|'titlestring'| string to use for the Vim window title -|'toolbar'| |'tb'| GUI: which items to show in the toolbar -|'toolbariconsize'| |'tbis'| size of the toolbar icons (for GTK 2 only) -|'ttimeout'| time out on mappings -|'ttimeoutlen'| |'ttm'| time out time for key codes in milliseconds -|'ttybuiltin'| |'tbi'| use built-in termcap before external termcap -|'ttyfast'| |'tf'| indicates a fast terminal connection -|'ttymouse'| |'ttym'| type of mouse codes generated -|'ttyscroll'| |'tsl'| maximum number of lines for a scroll -|'ttytype'| |'tty'| alias for 'term' -|'undolevels'| |'ul'| maximum number of changes that can be undone -|'updatecount'| |'uc'| after this many characters flush swap file -|'updatetime'| |'ut'| after this many milliseconds flush swap file -|'verbose'| |'vbs'| give informative messages -|'viewdir'| |'vdir'| directory where to store files with :mkview -|'viewoptions'| |'vop'| specifies what to save for :mkview -|'viminfo'| |'vi'| use .viminfo file upon startup and exiting -|'virtualedit'| |'ve'| when to use virtual editing -|'visualbell'| |'vb'| use visual bell instead of beeping -|'warn'| warn for shell command when buffer was changed -|'weirdinvert'| |'wi'| for terminals that have weird inversion method -|'whichwrap'| |'ww'| allow specified keys to cross line boundaries -|'wildchar'| |'wc'| command-line character for wildcard expansion -|'wildcharm'| |'wcm'| like 'wildchar' but also works when mapped -|'wildignore'| |'wig'| files matching these patterns are not completed -|'wildmenu'| |'wmnu'| use menu for command line completion -|'wildmode'| |'wim'| mode for 'wildchar' command-line expansion -|'winaltkeys'| |'wak'| when the windows system handles ALT keys -|'winheight'| |'wh'| minimum number of lines for the current window -|'winfixheight'| |'wfh'| keep window height when opening/closing windows -|'winminheight'| |'wmh'| minimum number of lines for any window -|'winminwidth'| |'wmw'| minimal number of columns for any window -|'winwidth'| |'wiw'| minimal number of columns for current window -|'wrap'| long lines wrap and continue on the next line -|'wrapmargin'| |'wm'| chars from the right where wrapping starts -|'wrapscan'| |'ws'| searches wrap around the end of the file -|'write'| writing to a file is allowed -|'writeany'| |'wa'| write to file with no need for "!" override -|'writebackup'| |'wb'| make a backup before overwriting a file -|'writedelay'| |'wd'| delay this many msec for each char (for debug) +'aleph' 'al' ASCII code of the letter Aleph (Hebrew) +'allowrevins' 'ari' allow CTRL-_ in Insert and Command-line mode +'altkeymap' 'akm' for default second language (Farsi/Hebrew) +'ambiwidth' 'ambw' what to do with Unicode chars of ambiguous width +'antialias' 'anti' Mac OS X: use smooth, antialiased fonts +'autochdir' 'acd' change directory to the file in the current window +'arabic' 'arab' for Arabic as a default second language +'arabicshape' 'arshape' do shaping for Arabic characters +'autoindent' 'ai' take indent for new line from previous line +'autoread' 'ar' autom. read file when changed outside of Vim +'autowrite' 'aw' automatically write file if changed +'autowriteall' 'awa' as 'autowrite', but works with more commands +'background' 'bg' "dark" or "light", used for highlight colors +'backspace' 'bs' how backspace works at start of line +'backup' 'bk' keep backup file after overwriting a file +'backupcopy' 'bkc' make backup as a copy, don't rename the file +'backupdir' 'bdir' list of directories for the backup file +'backupext' 'bex' extension used for the backup file +'backupskip' 'bsk' no backup for files that match these patterns +'balloondelay' 'bdlay' delay in mS before a balloon may pop up +'ballooneval' 'beval' switch on balloon evaluation +'balloonexpr' 'bexpr' expression to show in balloon +'binary' 'bin' read/write/edit file in binary mode +'bioskey' 'biosk' MS-DOS: use bios calls for input characters +'bomb' prepend a Byte Order Mark to the file +'breakat' 'brk' characters that may cause a line break +'browsedir' 'bsdir' which directory to start browsing in +'bufhidden' 'bh' what to do when buffer is no longer in window +'buflisted' 'bl' whether the buffer shows up in the buffer list +'buftype' 'bt' special type of buffer +'casemap' 'cmp' specifies how case of letters is changed +'cdpath' 'cd' list of directories searched with ":cd" +'cedit' key used to open the command-line window +'charconvert' 'ccv' expression for character encoding conversion +'cindent' 'cin' do C program indenting +'cinkeys' 'cink' keys that trigger indent when 'cindent' is set +'cinoptions' 'cino' how to do indenting when 'cindent' is set +'cinwords' 'cinw' words where 'si' and 'cin' add an indent +'clipboard' 'cb' use the clipboard as the unnamed register +'cmdheight' 'ch' number of lines to use for the command-line +'cmdwinheight' 'cwh' height of the command-line window +'columns' 'co' number of columns in the display +'comments' 'com' patterns that can start a comment line +'commentstring' 'cms' template for comments; used for fold marker +'compatible' 'cp' behave Vi-compatible as much as possible +'complete' 'cpt' specify how Insert mode completion works +'completefunc' 'cfu' function to be used for Insert mode completion +'completeopt' 'cot' options for Insert mode completion +'confirm' 'cf' ask what to do about unsaved/read-only files +'conskey' 'consk' get keys directly from console (MS-DOS only) +'copyindent' 'ci' make 'autoindent' use existing indent structure +'cpoptions' 'cpo' flags for Vi-compatible behavior +'cscopepathcomp' 'cspc' how many components of the path to show +'cscopeprg' 'csprg' command to execute cscope +'cscopequickfix' 'csqf' use quickfix window for cscope results +'cscopetag' 'cst' use cscope for tag commands +'cscopetagorder' 'csto' determines ":cstag" search order +'cscopeverbose' 'csverb' give messages when adding a cscope database +'cursorcolumn' 'cuc' highlight the screen column of the cursor +'cursorline' 'cul' highlight the screen line of the cursor +'debug' set to "msg" to see all error messages +'define' 'def' pattern to be used to find a macro definition +'delcombine' 'deco' delete combining characters on their own +'dictionary' 'dict' list of file names used for keyword completion +'diff' use diff mode for the current window +'diffexpr' 'dex' expression used to obtain a diff file +'diffopt' 'dip' options for using diff mode +'digraph' 'dg' enable the entering of digraphs in Insert mode +'directory' 'dir' list of directory names for the swap file +'display' 'dy' list of flags for how to display text +'eadirection' 'ead' in which direction 'equalalways' works +'edcompatible' 'ed' toggle flags of ":substitute" command +'encoding' 'enc' encoding used internally +'endofline' 'eol' write <EOL> for last line in file +'equalalways' 'ea' windows are automatically made the same size +'equalprg' 'ep' external program to use for "=" command +'errorbells' 'eb' ring the bell for error messages +'errorfile' 'ef' name of the errorfile for the QuickFix mode +'errorformat' 'efm' description of the lines in the error file +'esckeys' 'ek' recognize function keys in Insert mode +'eventignore' 'ei' autocommand events that are ignored +'expandtab' 'et' use spaces when <Tab> is inserted +'exrc' 'ex' read .vimrc and .exrc in the current directory +'fileencoding' 'fenc' file encoding for multi-byte text +'fileencodings' 'fencs' automatically detected character encodings +'fileformat' 'ff' file format used for file I/O +'fileformats' 'ffs' automatically detected values for 'fileformat' +'filetype' 'ft' type of file, used for autocommands +'fillchars' 'fcs' characters to use for displaying special items +'fkmap' 'fk' Farsi keyboard mapping +'foldclose' 'fcl' close a fold when the cursor leaves it +'foldcolumn' 'fdc' width of the column used to indicate folds +'foldenable' 'fen' set to display all folds open +'foldexpr' 'fde' expression used when 'foldmethod' is "expr" +'foldignore' 'fdi' ignore lines when 'foldmethod' is "indent" +'foldlevel' 'fdl' close folds with a level higher than this +'foldlevelstart' 'fdls' 'foldlevel' when starting to edit a file +'foldmarker' 'fmr' markers used when 'foldmethod' is "marker" +'foldmethod' 'fdm' folding type +'foldminlines' 'fml' minimum number of lines for a fold to be closed +'foldnestmax' 'fdn' maximum fold depth +'foldopen' 'fdo' for which commands a fold will be opened +'foldtext' 'fdt' expression used to display for a closed fold +'formatlistpat' 'flp' pattern used to recognize a list header +'formatoptions' 'fo' how automatic formatting is to be done +'formatprg' 'fp' name of external program used with "gq" command +'formatexpr' 'fex' expression used with "gq" command +'fsync' 'fs' whether to invoke fsync() after file write +'gdefault' 'gd' the ":substitute" flag 'g' is default on +'grepformat' 'gfm' format of 'grepprg' output +'grepprg' 'gp' program to use for ":grep" +'guicursor' 'gcr' GUI: settings for cursor shape and blinking +'guifont' 'gfn' GUI: Name(s) of font(s) to be used +'guifontset' 'gfs' GUI: Names of multi-byte fonts to be used +'guifontwide' 'gfw' list of font names for double-wide characters +'guiheadroom' 'ghr' GUI: pixels room for window decorations +'guioptions' 'go' GUI: Which components and options are used +'guipty' GUI: try to use a pseudo-tty for ":!" commands +'guitablabel' 'gtl' GUI: custom label for a tab page +'guitabtooltip' 'gtt' GUI: custom tooltip for a tab page +'helpfile' 'hf' full path name of the main help file +'helpheight' 'hh' minimum height of a new help window +'helplang' 'hlg' preferred help languages +'hidden' 'hid' don't unload buffer when it is |abandon|ed +'highlight' 'hl' sets highlighting mode for various occasions +'hlsearch' 'hls' highlight matches with last search pattern +'history' 'hi' number of command-lines that are remembered +'hkmap' 'hk' Hebrew keyboard mapping +'hkmapp' 'hkp' phonetic Hebrew keyboard mapping +'icon' let Vim set the text of the window icon +'iconstring' string to use for the Vim icon text +'ignorecase' 'ic' ignore case in search patterns +'imactivatekey' 'imak' key that activates the X input method +'imcmdline' 'imc' use IM when starting to edit a command line +'imdisable' 'imd' do not use the IM in any mode +'iminsert' 'imi' use :lmap or IM in Insert mode +'imsearch' 'ims' use :lmap or IM when typing a search pattern +'include' 'inc' pattern to be used to find an include file +'includeexpr' 'inex' expression used to process an include line +'incsearch' 'is' highlight match while typing search pattern +'indentexpr' 'inde' expression used to obtain the indent of a line +'indentkeys' 'indk' keys that trigger indenting with 'indentexpr' +'infercase' 'inf' adjust case of match for keyword completion +'insertmode' 'im' start the edit of a file in Insert mode +'isfname' 'isf' characters included in file names and pathnames +'isident' 'isi' characters included in identifiers +'iskeyword' 'isk' characters included in keywords +'isprint' 'isp' printable characters +'joinspaces' 'js' two spaces after a period with a join command +'key' encryption key +'keymap' 'kmp' name of a keyboard mapping +'keymodel' 'km' enable starting/stopping selection with keys +'keywordprg' 'kp' program to use for the "K" command +'langmap' 'lmap' alphabetic characters for other language mode +'langmenu' 'lm' language to be used for the menus +'laststatus' 'ls' tells when last window has status lines +'lazyredraw' 'lz' don't redraw while executing macros +'linebreak' 'lbr' wrap long lines at a blank +'lines' number of lines in the display +'linespace' 'lsp' number of pixel lines to use between characters +'lisp' automatic indenting for Lisp +'lispwords' 'lw' words that change how lisp indenting works +'list' show <Tab> and <EOL> +'listchars' 'lcs' characters for displaying in list mode +'loadplugins' 'lpl' load plugin scripts when starting up +'macatsui' Mac GUI: use ATSUI text drawing +'magic' changes special characters in search patterns +'makeef' 'mef' name of the errorfile for ":make" +'makeprg' 'mp' program to use for the ":make" command +'matchpairs' 'mps' pairs of characters that "%" can match +'matchtime' 'mat' tenths of a second to show matching paren +'maxcombine' 'mco' maximum nr of combining characters displayed +'maxfuncdepth' 'mfd' maximum recursive depth for user functions +'maxmapdepth' 'mmd' maximum recursive depth for mapping +'maxmem' 'mm' maximum memory (in Kbyte) used for one buffer +'maxmempattern' 'mmp' maximum memory (in Kbyte) used for pattern search +'maxmemtot' 'mmt' maximum memory (in Kbyte) used for all buffers +'menuitems' 'mis' maximum number of items in a menu +'mkspellmem' 'msm' memory used before |:mkspell| compresses the tree +'modeline' 'ml' recognize modelines at start or end of file +'modelines' 'mls' number of lines checked for modelines +'modifiable' 'ma' changes to the text are not possible +'modified' 'mod' buffer has been modified +'more' pause listings when the whole screen is filled +'mouse' enable the use of mouse clicks +'mousefocus' 'mousef' keyboard focus follows the mouse +'mousehide' 'mh' hide mouse pointer while typing +'mousemodel' 'mousem' changes meaning of mouse buttons +'mouseshape' 'mouses' shape of the mouse pointer in different modes +'mousetime' 'mouset' max time between mouse double-click +'mzquantum' 'mzq' the interval between polls for MzScheme threads +'nrformats' 'nf' number formats recognized for CTRL-A command +'number' 'nu' print the line number in front of each line +'numberwidth' 'nuw' number of columns used for the line number +'omnifunc' 'ofu' function for filetype-specific completion +'opendevice' 'odev' allow reading/writing devices on MS-Windows +'operatorfunc' 'opfunc' function to be called for |g@| operator +'osfiletype' 'oft' operating system-specific filetype information +'paragraphs' 'para' nroff macros that separate paragraphs +'paste' allow pasting text +'pastetoggle' 'pt' key code that causes 'paste' to toggle +'patchexpr' 'pex' expression used to patch a file +'patchmode' 'pm' keep the oldest version of a file +'path' 'pa' list of directories searched with "gf" et.al. +'preserveindent' 'pi' preserve the indent structure when reindenting +'previewheight' 'pvh' height of the preview window +'previewwindow' 'pvw' identifies the preview window +'printdevice' 'pdev' name of the printer to be used for :hardcopy +'printencoding' 'penc' encoding to be used for printing +'printexpr' 'pexpr' expression used to print PostScript for :hardcopy +'printfont' 'pfn' name of the font to be used for :hardcopy +'printheader' 'pheader' format of the header used for :hardcopy +'printmbcharset' 'pmbcs' CJK character set to be used for :hardcopy +'printmbfont' 'pmbfn' font names to be used for CJK output of :hardcopy +'printoptions' 'popt' controls the format of :hardcopy output +'pumheight' 'ph' maximum height of the popup menu +'quoteescape' 'qe' escape characters used in a string +'readonly' 'ro' disallow writing the buffer +'remap' allow mappings to work recursively +'report' threshold for reporting nr. of lines changed +'restorescreen' 'rs' Win32: restore screen when exiting +'revins' 'ri' inserting characters will work backwards +'rightleft' 'rl' window is right-to-left oriented +'rightleftcmd' 'rlc' commands for which editing works right-to-left +'ruler' 'ru' show cursor line and column in the status line +'rulerformat' 'ruf' custom format for the ruler +'runtimepath' 'rtp' list of directories used for runtime files +'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D +'scrollbind' 'scb' scroll in window as other windows scroll +'scrolljump' 'sj' minimum number of lines to scroll +'scrolloff' 'so' minimum nr. of lines above and below cursor +'scrollopt' 'sbo' how 'scrollbind' should behave +'sections' 'sect' nroff macros that separate sections +'secure' secure mode for reading .vimrc in current dir +'selection' 'sel' what type of selection to use +'selectmode' 'slm' when to use Select mode instead of Visual mode +'sessionoptions' 'ssop' options for |:mksession| +'shell' 'sh' name of shell to use for external commands +'shellcmdflag' 'shcf' flag to shell to execute one command +'shellpipe' 'sp' string to put output of ":make" in error file +'shellquote' 'shq' quote character(s) for around shell command +'shellredir' 'srr' string to put output of filter in a temp file +'shellslash' 'ssl' use forward slash for shell file names +'shelltemp' 'stmp' whether to use a temp file for shell commands +'shelltype' 'st' Amiga: influences how to use a shell +'shellxquote' 'sxq' like 'shellquote', but include redirection +'shiftround' 'sr' round indent to multiple of shiftwidth +'shiftwidth' 'sw' number of spaces to use for (auto)indent step +'shortmess' 'shm' list of flags, reduce length of messages +'shortname' 'sn' non-MS-DOS: Filenames assumed to be 8.3 chars +'showbreak' 'sbr' string to use at the start of wrapped lines +'showcmd' 'sc' show (partial) command in status line +'showfulltag' 'sft' show full tag pattern when completing tag +'showmatch' 'sm' briefly jump to matching bracket if insert one +'showmode' 'smd' message on status line to show current mode +'showtabline' 'stal' tells when the tab pages line is displayed +'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 +'smartindent' 'si' smart autoindenting for C programs +'smarttab' 'sta' use 'shiftwidth' when inserting <Tab> +'softtabstop' 'sts' number of spaces that <Tab> uses while editing +'spell' enable spell checking +'spellcapcheck' 'spc' pattern to locate end of a sentence +'spellfile' 'spf' files where |zg| and |zw| store words +'spelllang' 'spl' language(s) to do spell checking for +'spellsuggest' 'sps' method(s) used to suggest spelling corrections +'splitbelow' 'sb' new window from split is below the current one +'splitright' 'spr' new window is put right of the current one +'startofline' 'sol' commands move cursor to first blank in line +'statusline' 'stl' custom format for the status line +'suffixes' 'su' suffixes that are ignored with multiple match +'suffixesadd' 'sua' suffixes added when searching for a file +'swapfile' 'swf' whether to use a swapfile for a buffer +'swapsync' 'sws' how to sync the swap file +'switchbuf' 'swb' sets behavior when switching to another buffer +'synmaxcol' 'smc' maximum column to find syntax items +'syntax' 'syn' syntax to be loaded for current buffer +'tabstop' 'ts' number of spaces that <Tab> in file uses +'tabline' 'tal' custom format for the console tab pages line +'tabpagemax' 'tpm' maximum number of tab pages for |-p| and "tab all" +'tagbsearch' 'tbs' use binary searching in tags files +'taglength' 'tl' number of significant characters for a tag +'tagrelative' 'tr' file names in tag file are relative +'tags' 'tag' list of file names used by the tag command +'tagstack' 'tgst' push tags onto the tag stack +'term' name of the terminal +'termbidi' 'tbidi' terminal takes care of bi-directionality +'termencoding' 'tenc' character encoding used by the terminal +'terse' shorten some messages +'textauto' 'ta' obsolete, use 'fileformats' +'textmode' 'tx' obsolete, use 'fileformat' +'textwidth' 'tw' maximum width of text that is being inserted +'thesaurus' 'tsr' list of thesaurus files for keyword completion +'tildeop' 'top' tilde command "~" behaves like an operator +'timeout' 'to' time out on mappings and key codes +'timeoutlen' 'tm' time out time in milliseconds +'title' let Vim set the title of the window +'titlelen' percentage of 'columns' used for window title +'titleold' old title, restored when exiting +'titlestring' string to use for the Vim window title +'toolbar' 'tb' GUI: which items to show in the toolbar +'toolbariconsize' 'tbis' size of the toolbar icons (for GTK 2 only) +'ttimeout' time out on mappings +'ttimeoutlen' 'ttm' time out time for key codes in milliseconds +'ttybuiltin' 'tbi' use built-in termcap before external termcap +'ttyfast' 'tf' indicates a fast terminal connection +'ttymouse' 'ttym' type of mouse codes generated +'ttyscroll' 'tsl' maximum number of lines for a scroll +'ttytype' 'tty' alias for 'term' +'undolevels' 'ul' maximum number of changes that can be undone +'updatecount' 'uc' after this many characters flush swap file +'updatetime' 'ut' after this many milliseconds flush swap file +'verbose' 'vbs' give informative messages +'verbosefile' 'vfile' file to write messages in +'viewdir' 'vdir' directory where to store files with :mkview +'viewoptions' 'vop' specifies what to save for :mkview +'viminfo' 'vi' use .viminfo file upon startup and exiting +'virtualedit' 've' when to use virtual editing +'visualbell' 'vb' use visual bell instead of beeping +'warn' warn for shell command when buffer was changed +'weirdinvert' 'wi' for terminals that have weird inversion method +'whichwrap' 'ww' allow specified keys to cross line boundaries +'wildchar' 'wc' command-line character for wildcard expansion +'wildcharm' 'wcm' like 'wildchar' but also works when mapped +'wildignore' 'wig' files matching these patterns are not completed +'wildmenu' 'wmnu' use menu for command line completion +'wildmode' 'wim' mode for 'wildchar' command-line expansion +'wildoptions' 'wop' specifies how command line completion is done. +'winaltkeys' 'wak' when the windows system handles ALT keys +'winheight' 'wh' minimum number of lines for the current window +'winfixheight' 'wfh' keep window height when opening/closing windows +'winfixwidth' 'wfw' keep window width when opening/closing windows +'winminheight' 'wmh' minimum number of lines for any window +'winminwidth' 'wmw' minimal number of columns for any window +'winwidth' 'wiw' minimal number of columns for current window +'wrap' long lines wrap and continue on the next line +'wrapmargin' 'wm' chars from the right where wrapping starts +'wrapscan' 'ws' searches wrap around the end of the file +'write' writing to a file is allowed +'writeany' 'wa' write to file with no need for "!" override +'writebackup' 'wb' make a backup before overwriting a file +'writedelay' 'wd' delay this many msec for each char (for debug) ------------------------------------------------------------------------------ *Q_ur* Undo/Redo commands @@ -913,6 +952,15 @@ Short explanation of each option: *option-list* |:cprevious| :cp display the previous error |:clist| :cl list all errors |:cfile| :cf read errors from the file 'errorfile' +|:cgetbuffer| :cgetb like :cbuffer but don't jump to the first error +|:cgetfile| :cg like :cfile but don't jump to the first error +|:cgetexpr| :cgete like :cexpr but don't jump to the first error +|:caddfile| :caddf add errors from the error file to the current + quickfix list +|:caddexpr| :cad add errors from an expression to the current + quickfix list +|:cbuffer| :cb read errors from text in a buffer +|:cexpr| :cex read errors from an expression |:cquit| :cq quit without writing and return error code (to the compiler) |:make| :make [args] start make, read errors, and jump to first @@ -927,6 +975,8 @@ Short explanation of each option: *option-list* position |ga| ga show ascii value of character under cursor in decimal, hex, and octal +|g8| g8 for utf-8 encoding: show byte sequence for + character under cursor in hex. |g_CTRL-G| g CTRL-G show cursor column, line, and character position |CTRL-C| CTRL-C during searches: Interrupt the search @@ -1039,6 +1089,55 @@ Context-sensitive completion on the command-line: |::e| :e extension |::s| :s/{pat}/{repl}/ substitute {pat} with {repl} ------------------------------------------------------------------------------ +*Q_st* Starting VIM + +|-vim| vim [options] start editing with an empty buffer +|-file| vim [options] {file} .. start editing one or more files +|--| vim [options] - read file from stdin +|-tag| vim [options] -t {tag} edit the file associated with {tag} +|-qf| vim [options] -q [fname] start editing in QuickFix mode, + display the first error + + Most useful Vim arguments (for full list see |startup-options|) + +|-gui| -g start GUI (also allows other options) + +|-+| +[num] put the cursor at line [num] (default: last line) +|-+c| +{command} execute {command} after loading the file +|-+/| +/{pat} {file} .. put the cursor at the first occurrence of {pat} +|-v| -v Vi mode, start ex in Normal mode +|-e| -e Ex mode, start vim in Ex mode +|-R| -R Read-only mode, implies -n +|-m| -m modifications not allowed (resets 'write' option) +|-d| -d diff mode |diff| +|-b| -b binary mode +|-l| -l lisp mode +|-A| -A Arabic mode ('arabic' is set) +|-F| -F Farsi mode ('fkmap' and 'rightleft' are set) +|-H| -H Hebrew mode ('hkmap' and 'rightleft' are set) +|-V| -V Verbose, give informative messages +|-C| -C Compatible, set the 'compatible' option +|-N| -N Nocompatible, reset the 'compatible' option +|-r| -r give list of swap files +|-r| -r {file} .. recover aborted edit session +|-n| -n do not create a swap file +|-o| -o [num] open [num] windows (default: one for each file) +|-f| -f GUI: foreground process, don't fork + Amiga: do not restart VIM to open a window (for + e.g., mail) +|-s| -s {scriptin} first read commands from the file {scriptin} +|-w| -w {scriptout} write typed chars to file {scriptout} (append) +|-W| -W {scriptout} write typed chars to file {scriptout} (overwrite) +|-T| -T {terminal} set terminal name +|-d| -d {device} Amiga: open {device} to be used as a console +|-u| -u {vimrc} read inits from {vimrc} instead of other inits +|-U| -U {gvimrc} idem, for when starting the GUI +|-i| -i {viminfo} read info from {viminfo} instead of other files +|---| -- end of options, other arguments are file names +|--help| --help show list of arguments and exit +|--version| --version show version info and exit +|--| - Read file from stdin. +------------------------------------------------------------------------------ *Q_ed* Editing a file Without !: Fail if changes has been made to the current buffer. @@ -1111,58 +1210,10 @@ Context-sensitive completion on the command-line: |:xall| :xa[ll][!] or :wqall[!] Write all changed buffers and exit -|:stop| :st[op][!] Suspend VIM or start new shell. If 'aw' option +|:stop| :st[op][!] Suspend VIM or start new shell. If 'aw' option is set and [!] not given write the buffer. |CTRL-Z| CTRL-Z Same as ":stop" ------------------------------------------------------------------------------ -*Q_st* Starting VIM - -|-vim| vim [options] start editing with an empty buffer -|-file| vim [options] {file} .. start editing one or more files -|--| vim [options] - read file from stdin -|-tag| vim [options] -t {tag} edit the file associated with {tag} -|-qf| vim [options] -q [fname] start editing in QuickFix mode, - display the first error - - Vim arguments: - -|-gui| -g start GUI (also allows other options) - -|-+| +[num] put the cursor at line [num] (default: last line) -|-+c| +{command} execute {command} after loading the file -|-+/| +/{pat} {file} .. put the cursor at the first occurrence of {pat} -|-v| -v Vi mode, start ex in Normal mode -|-e| -e Ex mode, start vim in Ex mode -|-R| -R Read-only mode, implies -n -|-m| -m modifications not allowed (resets 'write' option) -|-b| -b binary mode -|-l| -l lisp mode -|-A| -A Arabic mode ('arabic' is set) -|-F| -F Farsi mode ('fkmap' and 'rightleft' are set) -|-H| -H Hebrew mode ('hkmap' and 'rightleft' are set) -|-V| -V Verbose, give informative messages -|-C| -C Compatible, set the 'compatible' option -|-N| -N Nocompatible, reset the 'compatible' option -|-r| -r give list of swap files -|-r| -r {file} .. recover aborted edit session -|-n| -n do not create a swap file -|-o| -o [num] open [num] windows (default: one for each file) -|-f| -f GUI: foreground process, don't fork - Amiga: do not restart VIM to open a window (for - e.g., mail) -|-s| -s {scriptin} first read commands from the file {scriptin} -|-w| -w {scriptout} write typed chars to file {scriptout} (append) -|-W| -W {scriptout} write typed chars to file {scriptout} (overwrite) -|-T| -T {terminal} set terminal name -|-d| -d {device} Amiga: open {device} to be used as a console -|-u| -u {vimrc} read inits from {vimrc} instead of other inits -|-U| -U {gvimrc} idem, for when starting the GUI -|-i| -i {viminfo} read info from {viminfo} instead of other files -|---| -- end of options, other arguments are file names -|--help| --help show list of arguments and exit -|--version| --version show version info and exit -|--| - Read file from stdin. ------------------------------------------------------------------------------- *Q_ac* Automatic Commands |viminfo-file| Read registers, marks, history at startup, save when exiting. diff --git a/ja/change.jax b/ja/change.jax index 773b46bbd..8c08e1c82 100644 --- a/ja/change.jax +++ b/ja/change.jax @@ -1,11 +1,11 @@ COMMENT: テキストファイルの修正(削除・変更) -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 北条耀 TRANSLATOR: 野田 開 <g340299@mail.ecc.u-tokyo.ac.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*change.txt* For Vim version 7.0. Last change: 2006 May 05 +*change.txt* For Vim version 7.1. Last change: 2007 Jan 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -656,13 +656,20 @@ NOTE パターンに 'magic' が適用されるかどうかを変更するフラ ド ":global" のパターンが使われる。フラグ [r] を指定すると、最後の置換または検 索コマンド、または ":global" のパターンを使用する。 +{string}を省略した場合は、空文字列を指定したのと同じ結果になる。すなわち、マッ +チしたパターンが削除される。{pattern}の後のセパレータも省略することができる。 +例: > + :%s/TESTING +これは、全行から"TESTING"を削除する例である。ただし、1つの行に2個以上あっても +1個しか削除されない。 + Viとの互換性のため、これら2つの例外が許される。 "\/{string}/" と "\?{string}?" は "//{string}/r" と同様の効果。 "\&{string}&" は "//{string}/" と同様の効果。 *E146* '/' でパターンと置換文字列を囲む代わりに、英数字や '\', '"', '|' 以外であれば、 -他の文字を使うことができる。これは検索パターンや置換文字列に '/' を含む場合に -有益である。例 > +他の1バイト文字を使うことができる。これは検索パターンや置換文字列に '/' を含む +場合に有益である。例 > :s+/+//+ パターンの定義については |pattern| を参照。 @@ -1053,7 +1060,7 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト 変化はない。 {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} -6. Expression レジスタ "= *quote_=* *quote=* +6. Expression レジスタ "= *quote_=* *quote=* *@=* これは、本当はテキストを蓄えるレジスタではないが、レジスタを使うコマンドで expression を使うために使える。この expression レジスタは読み取り専用である。 これにはテキストをコピーできない。'=' を打ち込むと、カーソルはコマンド行に移動 @@ -1327,8 +1334,7 @@ Javadocのコメントでは次のものが使われる (":set" を使うとき フラグ 'formatoptions' に指定されたときの作用 ~ -t 'textwidth' を使ってテキストを自動折返しする (コメントには適用されな - い)。 +t 'textwidth' を使ってテキストを自動折返しする c 'textwidth' を使ってコメントを自動折返して、現在のコメント開始文字列を 自動挿入する。 r 挿入モードで <Enter> を打ち込んだ後に、現在のコメント開始文字列を自動 diff --git a/ja/help.jax b/ja/help.jax index 10e86b0b5..6716fbe1b 100644 --- a/ja/help.jax +++ b/ja/help.jax @@ -1,11 +1,11 @@ COMMENT: リファレンスマニュアル目次 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 西岡拓洋 TRANSLATOR: 北条耀 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*help.txt* For Vim version 7.0. Last change: 2006 May 07 +*help.txt* For Vim version 7.1. Last change: 2006 Nov 07 VIM - メインヘルプファイル k @@ -152,6 +152,7 @@ Vimのインストール ~ |farsi.txt| ペルシア語のサポート |hebrew.txt| ヘブライ語のサポート |russian.txt| ロシア語のサポート +|ada.txt| Ada(プログラミング言語)のサポート |hangulin.txt| ハングル(韓国語)の入力 |rileft.txt| 右横書き (書字方向が右から左になるモード) @@ -198,10 +199,12 @@ Versions ~ |os_win32.txt| MS-Windows 95/98/NT *standard-plugin-list* 標準プラグイン ~ +|pi_getscript.txt| Vimスクリプトの最新版をダウンロードする |pi_gzip.txt| 圧縮されたファイルの読み書き |pi_netrw.txt| ネットワーク越しのファイルの読み書き |pi_paren.txt| 対応するカッコの強調表示 |pi_tar.txt| Tar ファイルエクスプローラ +|pi_vimball.txt| 自己インストール機能付きのVimスクリプトを作成 |pi_zip.txt| Zip アーカイブエクスプローラ その他 ~ diff --git a/ja/quickref.jax b/ja/quickref.jax index 2be857229..9b157fee7 100644 --- a/ja/quickref.jax +++ b/ja/quickref.jax @@ -1,10 +1,10 @@ COMMENT: クイックリファレンスガイド -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*quickref.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*quickref.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -165,7 +165,7 @@ smz ※ f,F,t,Tで指定する{char}は1文字分の文字だけです。 直前に指定したatomと0回以上一致 * \* 直前に指定したatomと1回以上一致 \+ \+ 直前に指定した文字と0回もしくは1回一致 \= \= - 直前に指定した文字と2回~5回一致 \{2,5} \{2,5} + 直前に指定した文字と2回〜5回一致 \{2,5} \{2,5} 2種類の正規表現を列記 \| \| パターンをグループ化してatomとする \(\) \(\) @@ -485,10 +485,10 @@ smz 号のこと。英語圏では昔から使われている。 |v_is| N is "inner sentence"を選択 |v_ap| N ap "a paragraph"を選択 |v_ip| N ip "inner paragraph"を選択 -|v_ab| N ab "a block"( "[("~"])"の範囲)を選択 -|v_ib| N ib "inner block" ( "[("~"])"の範囲)を選択 -|v_aB| N aB "a Block" ( "[{"~"]}"の範囲)を選択 -|v_iB| N iB "inner Block" ( "[{"~"]}"の範囲)を選択 +|v_ab| N ab "a block"( "[("〜"])"の範囲)を選択 +|v_ib| N ib "inner block" ( "[("〜"])"の範囲)を選択 +|v_aB| N aB "a Block" ( "[{"〜"]}"の範囲)を選択 +|v_iB| N iB "inner Block" ( "[{"〜"]}"の範囲)を選択 ------------------------------------------------------------------------------ *Q_re* 繰り返しコマンド @@ -808,6 +808,7 @@ smz 号のこと。英語圏では昔から使われている。 'number' 'nu' 行番号を表示する 'numberwidth' 'nuw' 行番号に使われる桁数 'omnifunc' 'ofu' ファイル形式ごとの補完に使われる +'opendevice' 'odev' MS-Windows上でデバイスの読み書きを許可する 'operatorfunc' 'opfunc' オペレータ|g@|で呼ばれる関数 'osfiletype' 'oft' オペレーティングシステムのファイル付加情報 'paragraphs' 'para' 段落を分けるためのnroffのマクロ From b9c0c7f5ac0634d32f6b387045bc0da2738f4dbe Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 13 Jun 2007 12:49:20 +0000 Subject: [PATCH 092/783] fix: update develop to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@92 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/develop.txt | 128 ++++++++++++++++++++++++++++++++++++++++++++----- ja/develop.jax | 128 +++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 230 insertions(+), 26 deletions(-) diff --git a/en/develop.txt b/en/develop.txt index 8f91655f5..a6e9e026f 100644 --- a/en/develop.txt +++ b/en/develop.txt @@ -1,4 +1,4 @@ -*develop.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*develop.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -123,7 +123,8 @@ VIM IS... MAINTAINABLE *design-maintain* - The source code should not become a mess. It should be reliable code. - Use the same layout in all files to make it easy to read |coding-style|. -- Use comments in a useful way! +- Use comments in a useful way! Quoting the function name and argument names + is NOT useful. Do explain what they are for. - Porting to another platform should be made easy, without having to change too much platform-independent code. - Use the object-oriented spirit: Put data and code together. Minimize the @@ -148,6 +149,7 @@ VIM IS... NOT *design-not* A satirical way to say this: "Unlike Emacs, Vim does not attempt to include everything but the kitchen sink, but some people say that you can clean one with it. ;-)" + To use Vim with gdb see: http://www.agide.org and http://clewn.sf.net. - Vim is not a fancy GUI editor that tries to look nice at the cost of being less consistent over all platforms. But functional GUI features are welcomed. @@ -185,9 +187,9 @@ strcpy() STRCPY() Includes cast to (char *), for char_u * args strchr() vim_strchr() Accepts special characters strrchr() vim_strrchr() Accepts special characters isspace() vim_isspace() Can handle characters > 128 -iswhite() vim_iswhite() Only TRUE for Tab and space -memcpy() vim_memmove() Handles overlapped copies -bcopy() vim_memmove() Handles overlapped copies +iswhite() vim_iswhite() Only TRUE for tab and space +memcpy() mch_memmove() Handles overlapped copies +bcopy() mch_memmove() Handles overlapped copies memset() vim_memset() Uniform for all systems @@ -222,7 +224,7 @@ __.* POSIX, system _[A-Z].* POSIX, system E[A-Z0-9]* POSIX, errno.h -*_t POSIX, for typedefs. Use *_T instead. +.*_t POSIX, for typedefs. Use .*_T instead. wait don't use as argument to a function, conflicts with types.h index shadows global declaration @@ -237,8 +239,8 @@ get_env_value() Linux system function VARIOUS *style-various* -Typedef'ed names should end in "_t": > - typedef int some_t; +Typedef'ed names should end in "_T": > + typedef int some_T; Define'ed names should be uppercase: > #define SOME_THING Features always start with "FEAT_": > @@ -366,7 +368,111 @@ window View on a buffer. There can be several windows in Vim, fit in the shell. -To be continued... +Spell checking *develop-spell* + +When spell checking was going to be added to Vim a survey was done over the +available spell checking libraries and programs. Unfortunately, the result +was that none of them provided sufficient capabilities to be used as the spell +checking engine in Vim, for various reasons: + +- Missing support for multi-byte encodings. At least UTF-8 must be supported, + so that more than one language can be used in the same file. + Doing on-the-fly conversion is not always possible (would require iconv + support). +- For the programs and libraries: Using them as-is would require installing + them separately from Vim. That's mostly not impossible, but a drawback. +- Performance: A few tests showed that it's possible to check spelling on the + fly (while redrawing), just like syntax highlighting. But the mechanisms + used by other code are much slower. Myspell uses a hashtable, for example. + The affix compression that most spell checkers use makes it slower too. +- For using an external program like aspell a communication mechanism would + have to be setup. That's complicated to do in a portable way (Unix-only + would be relatively simple, but that's not good enough). And performance + will become a problem (lots of process switching involved). +- Missing support for words with non-word characters, such as "Etten-Leur" and + "et al.", would require marking the pieces of them OK, lowering the + reliability. +- Missing support for regions or dialects. Makes it difficult to accept + all English words and highlight non-Canadian words differently. +- Missing support for rare words. Many words are correct but hardly ever used + and could be a misspelled often-used word. +- For making suggestions the speed is less important and requiring to install + another program or library would be acceptable. But the word lists probably + differ, the suggestions may be wrong words. + + +Spelling suggestions *develop-spell-suggestions* + +For making suggestions there are two basic mechanisms: +1. Try changing the bad word a little bit and check for a match with a good + word. Or go through the list of good words, change them a little bit and + check for a match with the bad word. The changes are deleting a character, + inserting a character, swapping two characters, etc. +2. Perform soundfolding on both the bad word and the good words and then find + matches, possibly with a few changes like with the first mechanism. + +The first is good for finding typing mistakes. After experimenting with +hashtables and looking at solutions from other spell checkers the conclusion +was that a trie (a kind of tree structure) is ideal for this. Both for +reducing memory use and being able to try sensible changes. For example, when +inserting a character only characters that lead to good words need to be +tried. Other mechanisms (with hashtables) need to try all possible letters at +every position in the word. Also, a hashtable has the requirement that word +boundaries are identified separately, while a trie does not require this. +That makes the mechanism a lot simpler. + +Soundfolding is useful when someone knows how the words sounds but doesn't +know how it is spelled. For example, the word "dictionary" might be written +as "daktonerie". The number of changes that the first method would need to +try is very big, it's hard to find the good word that way. After soundfolding +the words become "tktnr" and "tkxnry", these differ by only two letters. + +To find words by their soundfolded equivalent (soundalike word) we need a list +of all soundfolded words. A few experiments have been done to find out what +the best method is. Alternatives: +1. Do the sound folding on the fly when looking for suggestions. This means + walking through the trie of good words, soundfolding each word and + checking how different it is from the bad word. This is very efficient for + memory use, but takes a long time. On a fast PC it takes a couple of + seconds for English, which can be acceptable for interactive use. But for + some languages it takes more than ten seconds (e.g., German, Catalan), + which is unacceptable slow. For batch processing (automatic corrections) + it's too slow for all languages. +2. Use a trie for the soundfolded words, so that searching can be done just + like how it works without soundfolding. This requires remembering a list + of good words for each soundfolded word. This makes finding matches very + fast but requires quite a lot of memory, in the order of 1 to 10 Mbyte. + For some languages more than the original word list. +3. Like the second alternative, but reduce the amount of memory by using affix + compression and store only the soundfolded basic word. This is what Aspell + does. Disadvantage is that affixes need to be stripped from the bad word + before soundfolding it, which means that mistakes at the start and/or end + of the word will cause the mechanism to fail. Also, this becomes slow when + the bad word is quite different from the good word. + +The choice made is to use the second mechanism and use a separate file. This +way a user with sufficient memory can get very good suggestions while a user +who is short of memory or just wants the spell checking and no suggestions +doesn't use so much memory. + + +Word frequency + +For sorting suggestions it helps to know which words are common. In theory we +could store a word frequency with the word in the dictionary. However, this +requires storing a count per word. That degrades word tree compression a lot. +And maintaining the word frequency for all languages will be a heavy task. +Also, it would be nice to prefer words that are already in the text. This way +the words that appear in the specific text are preferred for suggestions. + +What has been implemented is to count words that have been seen during +displaying. A hashtable is used to quickly find the word count. The count is +initialized from words listed in COMMON items in the affix file, so that it +also works when starting a new file. + +This isn't ideal, because the longer Vim is running the higher the counts +become. But in practice it is a noticeable improvement over not using the word +count. ============================================================================== 4. Assumptions *design-assumptions* @@ -374,8 +480,8 @@ To be continued... Size of variables: char 8 bit signed char_u 8 bit unsigned -int 16, 32 or 64 bit signed -unsigned 16, 32 or 64 bit unsigned +int 32 or 64 bit signed (16 might be possible with limited features) +unsigned 32 or 64 bit unsigned (16 as with ints) long 32 or 64 bit signed, can hold a pointer Note that some compilers cannot handle long lines or strings. The C89 diff --git a/ja/develop.jax b/ja/develop.jax index 16525f65f..8b1a6941a 100644 --- a/ja/develop.jax +++ b/ja/develop.jax @@ -1,9 +1,10 @@ COMMENT: Vim自身の開発方針 -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 北条耀 TRANSLATOR: nakadaira <hopper2@nanameue.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*develop.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*develop.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -131,7 +132,8 @@ VIM IS... MAINTAINABLE *design-maintain* らない。 - 読みやすくするため、すべてのファイルで同じレイアウトを取ること |coding-style|。 -- 役に立つコメントをいれること! +- 役に立つコメントをいれること!関数名と引数名を引用しても役に立たない。それ + が何のためにあるのか説明すること。 - プラットホーム独立のコードに多くの変更を加える必要をなくし、他のプラットホ ームへの移植を簡単にできるようにすること。 - オブジェクト指向の精神を使う: データとコードを同じ場所に。コードの他の部分 @@ -154,12 +156,11 @@ VIM IS... NOT *design-not* 能するものである: シェルやIDEの1つのコンポーネントとして使いなさい。 これを皮肉をもって言うならば: "Emacsとは違い、Vimは流し台以外の全てのものを 取り込もうとはしない、だが、VimでEmacsをきれいにすることはできるという ;-)" - Vim is not a shell or an Operating System. You will not be able to run a - shell inside Vim or use it to control a debugger. This should work the - other way around: Use Vim as a component from a shell or in an IDE. A satirical way to say this: "Unlike Emacs, Vim does not attempt to include everything but the kitchen sink, but some people say that you can clean one with it. ;-)" + Vim と gdb を連携させる方法については次を参照: + http://www.agide.org と http://clewn.sf.net. - Vimは、全てのプラットホームに渡って調和を欠くという代償を払って、見栄えをよ くしようとする装飾的なGUIエディタではない。しかし、機能的なGUI特性は歓迎さ れる。 @@ -199,8 +200,8 @@ strchr() vim_strchr() スペシャルキャラクタを受け入れる strrchr() vim_strrchr() スペシャルキャラクタを受け入れる isspace() vim_isspace() 128以上のキャラクタを扱うことができる iswhite() vim_iswhite() Tabとスペースに対してのみTRUE -memcpy() vim_memmove() オーバーラップしたコピーを扱う -bcopy() vim_memmove() オーバーラップしたコピーを扱う +memcpy() mch_memmove() オーバーラップしたコピーを扱う +bcopy() mch_memmove() オーバーラップしたコピーを扱う memset() vim_memset() 全てのシステムで一定である @@ -234,7 +235,7 @@ __.* POSIX, system _[A-Z].* POSIX, system E[A-Z0-9]* POSIX, errno.h -*_t POSIX, for typedefs, *_Tを使ってください。 +.*_t POSIX, for typedefs, *_Tを使ってください。 wait types.hとコンフリクトするため、関数の引数として使わない index グローバル宣言を覆い隠す @@ -249,8 +250,8 @@ get_env_value() Linux システム関数 VARIOUS *style-various* -型の定義に使う名前は最後を"_t"にします: > - typedef int some_t; +型の定義に使う名前は最後を"_T"にします: > + typedef int some_T; マクロ定義はすべて大文字にします: > #define SOME_THING 機能に関する定義は"FEAT_"で始めます: > @@ -361,7 +362,8 @@ OK: /* Prepare for building the table. */ 同じバッファにいくつもの折畳状態を設定可能にする。例えば、あるウインドウに関 数を折畳んだ状態で表示し、他のウインドウで関数の中身を表示するなど。 -折畳はテキストを表示する方法である。テキストを変更すべきではない。したがってバッファ内のテキストをウインドウに表示する際のフィルタとして実行される。 +折畳はテキストを表示する方法である。テキストを変更すべきではない。したがってバッ +ファ内のテキストをウインドウに表示する際のフィルタとして実行される。 ウインドウの名前 @@ -384,7 +386,103 @@ OK: /* Prepare for building the table. */ ツールバーなどといっしょに表示される。これらはシェル に納まる。 -To be continued... +スペルチェック *develop-spell* + +Vim にスペルチェックを追加することになったとき、利用可能なスペルチェックのライ +ブラリやプログラムについて調査が行われた。その結果は残念なことに、Vim 内でスペ +ルチェックエンジンとして使えるものはないとわかった。これには様々な理由がある: + +- マルチバイトエンコーディングをサポートしていない。1つのファイル内で複数の言 + 語を使えるようにするために、少なくとも UTF-8 はサポートしていなければならな + い。 + オンザフライな変換は常に可能とは限らない(iconv に対応している必要がある)。 +- プログラムとライブラリに対して: それらをそのまま(as-is)使うには、Vim と別個 + にインストールしなければならない。これはたいてい不可能ではないが、難点である。 +- パフォーマンス: いくつかのテストによると、スペルチェックを構文強調のようにオ + ンザフライで(再描画中に)行うことは可能であった。しかし他のコードで使われたメ + カニズムはもっと遅かった。例えば、Myspell はハッシュテーブルを使用する。ほと + んどのスペルチェッカが使用している接辞圧縮を使うと遅くなった。 +- aspell のような外部プログラムを使うには、通信メカニズムを用意しなければなら + ない。これをポータブルな方法で行うのは複雑過ぎる(Unix だけなら比較的簡単だが、 + それでは十分ではない)。そしてパフォーマンスが問題になる(何回ものプロセス切替 + が行われる)。 +- "Etten-Leur" や "et al." など、単語でない単語のサポートを欠いている。そのた + めこれらの部分を OK とマークしなければならないが、そうすると信頼性が低下する。 +- 地域や方言のサポートを欠いている。英語の単語をすべて受け付け、カナダ語でない + 単語を別に扱うことが難しくなる。 +- 頻度が低い単語のサポートを欠いている。正しいがめったに使われないたくさんの単 + 語が、よく使われる単語のスペルミスとみなされてしまう。 +- スペル候補を作成するには速度はそれほど重要ではなく、他のプログラムやライブラ + リをインストールすることは許容できる。しかし、単語リストが異なるとスペル候補 + が誤単語になってしまう。 + + +スペル候補 *develop-spell-suggestions* + +候補の作成には2つの基本的なメカニズムがある: +1. 誤った単語を少し変更して正しい単語とマッチするかチェックする。あるいは、正 + しい単語全てに対し、それを少し変更して誤った単語とマッチするかチェックする。 + 変更とは、文字の削除・文字の挿入・2つの文字の交換などである。 +2. 誤った単語と正しい単語のリストの両方に soundfolding (発音が近い単語を同じグ + ループとみなすこと) を行って、そこでマッチを見つける。1番目のメカニズムと同 + 様にいくつか変更をしてもよい。 + +最初のメカニズムはタイプミスを見つけるのにはよい。ハッシュテーブルの実験と、他 +のスペルチェッカのソリューションを見ると、これにはtrie(ツリー構造の一種)が最適 +であるとの結論になった。メモリ使用量の削減と、賢い変更を試みるということの両方 +に面でである。例えば、文字を挿入するときは正しい単語につながる文字だけを試せば +よい。他の(ハッシュテーブルを使った)メカニズムは、単語のすべての位置で、ありう +るすべての文字を試さねばならない、また、ハッシュテーブルを使うには、単語の境界 +が個別に認識されなければならないのに対し、trie はそれを要求しない。そのためメ +カニズムがより単純になる。 + +ある単語の発音は知っているがスペルを知らないという場合に soundfolding は有用で +ある。例えば、"dictionary"という単語を"daktonerie"と書いてしまうかもしれない。 +これを最初の方法で訂正しようとすると変更回数が非常に多くなってしまい、正しいス +ペルを見つけるのは困難である。それに対し、これらの単語にsoundfoldingを行うと +"tktnr"と"tkxnry"になり、2文字しか違わない。 + +soundfoldの同値(音が似ている単語)により単語を見つけるには全てのsoundfolded +wordsのリストが必要である。どれが最良の方法かを探すための実験が行われた。案: +1. 修正候補を探すときに、その場でsound foldingを行う。つまり、正しい単語のtrie + をたどりながら、各単語をsoundfoldingし、それがスペルミスしている単語からど + れだけ異なるかをチェックする。これはメモリ効率の面でとても優れているが、時 + 間は長くかかる。英語の場合、高速なPCで2秒ほどかかる。これは対話的な利用とし + て受け入れられる。しかしいくつかの言語(ドイツ語、カタルニャ語など)に対して + は10秒以上かかり、受け入れがたい。バッチ処理(自動訂正)に使うには全ての言語 + で遅すぎる。 +2. soundfoldされた単語に対してtrieを使い、soundfoldingなしのときとまったく同じ + ように検索できるようにする。そのためには、soundfoldされた各単語に対し、正し + い単語のリストを記憶しておく必要がある。そうすると照合がとても高速になるが、 + 1MB〜10MBのオーダーの大量のメモリを必要とする。ある言語の場合は元の単語のリ + ストよりも多くなる。 +3. 2番目の案と同様だが、接辞圧縮を使い、soundfoldした基本単語だけを保存するこ + とによりメモリ消費量をへらす。これはAspellが採用している方法である。不利点 + は、誤った単語をsoundfoldする前に接辞を取り除いておかねばならないことである。 + そのため、単語の先頭・末尾における誤りに対しては対応できない。また、誤った + 単語が正しい単語から大きく異なるときは遅くなる。 + +我々が採用したのは、2番目のメカニズムを使い、別ファイルを使う方法である。こう +することによって、十分なメモリを持っているユーザはとてもよい候補を得ることがで +きるし、メモリが不足しているユーザやスペルチェックだけで候補は出さなくてよいと +いうユーザはそれほどメモリを使わなくてすむ。 + + +単語の頻度 + +候補をソートするにはどの単語が共通であるかを知ると役にたつ。理論的には単語の頻 +度は単語とともに辞書の中に保持することができる。しかしそうすると単語につき回数 +を保持しなければならない。これは単語ツリー圧縮を大いに劣化させる。また、全ての +言語に対して単語の頻度を保守するのは大変な作業である。 +また、テキストに既に出てきている単語を優先するとよいだろう。このようにして特定 +のテキスト内に表れる単語は候補の中で優先度が高くなる。 + +実装されたのは、表示中に単語を数えることである。ハッシュテーブルを使ってその単 +語の回数を高速に検索する。回数は接辞ファイルでCOMMONアイテムにリストされている +単語から初期化される。そのため新規ファイルの編集を始めたときも機能する。 + +これは理想的ではない。Vimが長時間稼働しているほど回数は大きくなるためである。 +しかし実用的には単語の回数を使わない場合に比べて注目に値するほどの改善である。 ============================================================================== 4. Assumptions *design-assumptions* @@ -392,8 +490,8 @@ To be continued... 変数のサイズ: char 8 bit signed char_u 8 bit unsigned -int 16, 32 or 64 bit signed -unsigned 16, 32 or 64 bit unsigned +int 32 or 64 bit signed (限定された機能については16ビットもありうる) +unsigned 32 or 64 bit unsigned (16ビットについてはintと同様) long 32 or 64 bit signed, can hold a pointer Note いくつかのコンパイラは長すぎる行は文字列をうまく扱えない。C89の標準規格で From 753d98a7a2db956b283503962d4264ce26fd2dbf Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 13 Jun 2007 14:56:30 +0000 Subject: [PATCH 093/783] fix: update to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@93 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/fold.txt | 4 ++-- en/gui.txt | 6 +++--- en/gui_w16.txt | 30 +++++++++++++++--------------- en/gui_w32.txt | 7 +++++-- en/gui_x11.txt | 15 +++++---------- en/tabpage.txt | 35 +++++++++++++++++++++-------------- ja/change.jax | 4 ++-- ja/fold.jax | 4 ++-- ja/gui.jax | 6 +++--- ja/gui_w16.jax | 4 ++-- ja/gui_w32.jax | 9 ++++++--- ja/gui_x11.jax | 16 ++++++---------- ja/insert.jax | 2 ++ ja/tabpage.jax | 31 +++++++++++++++++++------------ 14 files changed, 93 insertions(+), 80 deletions(-) diff --git a/en/fold.txt b/en/fold.txt index d29fa4cf1..fd71db9d3 100644 --- a/en/fold.txt +++ b/en/fold.txt @@ -1,4 +1,4 @@ -*fold.txt* For Vim version 7.0. Last change: 2006 Mar 29 +*fold.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -73,7 +73,7 @@ EXPR *fold-expr* The folds are automatically defined by their foldlevel, like with the "indent" method. The value of the 'foldexpr' option is evaluated to get the foldlevel of a line. Examples: -This will create a fold for all consecutive lines that start with a Tab: > +This will create a fold for all consecutive lines that start with a tab: > :set foldexpr=getline(v:lnum)[0]==\"\\t\" This will call a function to compute the fold level: > :set foldexpr=MyFoldLevel(v:lnum) diff --git a/en/gui.txt b/en/gui.txt index ba62fc5b6..b5ae414d6 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 7.0. Last change: 2006 May 04 +*gui.txt* For Vim version 7.1. Last change: 2007 May 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -510,7 +510,7 @@ floating menus that do not appear on the main menu bar. *:ime* *:imenu* *:inoreme* *:inoremenu* *:cme* *:cmenu* *:cnoreme* *:cnoremenu* *E330* *E327* *E331* *E336* *E333* - *E328* *E329* *E337* + *E328* *E329* *E337* *E792* To create a new menu item, use the ":menu" commands. They are mostly like the ":map" set of commands but the first argument is a menu item name, given as a path of menus and submenus with a '.' between them, e.g.: > @@ -532,7 +532,7 @@ Special characters in a menu name: <Tab> Separates the menu name from right-aligned text. This can be used to show the equivalent typed command. The text "<Tab>" can be used here for convenience. If you are using a real - Tab, don't forget to put a backslash before it! + tab, don't forget to put a backslash before it! Example: > :amenu &File.&Open<Tab>:e :browse e<CR> diff --git a/en/gui_w16.txt b/en/gui_w16.txt index 7c11a9bb0..50c5f2977 100644 --- a/en/gui_w16.txt +++ b/en/gui_w16.txt @@ -1,4 +1,4 @@ -*gui_w16.txt* For Vim version 6.3. Last change: 2001 Sep 03 +*gui_w16.txt* For Vim version 7.1. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -21,32 +21,32 @@ Other relevant documentation: {Vi does not have a Windows GUI} -The Win16 version of Vim will run on Windows 3.1 or later. It has not been +The Win16 version of Vim will run on Windows 3.1 or later. It has not been tested on 3.0, it probably won't work without being recompiled and -modified. (but you really should upgrade to 3.11 anyway. :) +modified. (But you really should upgrade to 3.11 anyway. :) In most respects it behaves identically to the Win32 GUI version, including -having a flat-style toolbar(!). The chief differences: +having a flat-style toolbar(!). The chief differences: 1) Bold/Italic text is not available, to speed up repaint/reduce resource - usage. (You can re-instate this by undefining MSWIN16_FASTTEXT.) + usage. (You can re-instate this by undefining MSWIN16_FASTTEXT.) 2) No tearoff menu emulation. 3) No OLE interface. -4) No long filename support (of course) +4) No long filename support (of course). 5) No tooltips on toolbar buttons - instead they produce command-line tips like menu items do. -6) Line length limited to 32767 characters (like 16-bit DOS version) +6) Line length limited to 32767 characters (like 16-bit DOS version). ============================================================================== 1. Starting the GUI *win16-start* The Win16 GUI version of Vim will always start the GUI, no matter how you -start it or what it's called. There is no 'console' version as such, but you +start it or what it's called. There is no 'console' version as such, but you can use one of the DOS versions in a DOS box. The Win16 GUI has an extra menu item: "Window/Select Font". It brings up the -standard Windows font selector. Note that bold and italic fonts are not +standard Windows font selector. Note that bold and italic fonts are not supported in an attempt to maximize GDI drawing speed. Setting the menu height doesn't work for the Win16 GUI. @@ -82,7 +82,7 @@ The clipboard works in the same way as the Win32 version: see |gui-clipboard|. 4. Shell Commands *win16-shell* Vim spawns a DOS window for external commands, to make it possible to run any -DOS command. The window uses the _default.pif settings. +DOS command. The window uses the _default.pif settings. *win16-!start* Normally, Vim waits for a command to complete before continuing (this makes @@ -135,7 +135,7 @@ as the traditional interface shared with the console version. 6.1 Dialogs The dialogs displayed by the "confirm" family (i.e. the 'confirm' option, -|:confirm| command and |confirm()| function are GUI-based rather than the +|:confirm| command and |confirm()| function) are GUI-based rather than the console-based ones used by other versions. There is no option to change this. @@ -157,7 +157,7 @@ PrintFile. See $VIMRUNTIME/menu.vim for how it works by default. Using this should also work: > :w >>prn -Vim supports a number of standard MS Windows features. Some of these are +Vim supports a number of standard MS Windows features. Some of these are detailed elsewhere: see |'mouse'|, |win32-hidden-menus|. Also see |:simalt| @@ -176,11 +176,11 @@ names with any Ex command. *win16-truetype* It is recommended that you use a raster font and not a TrueType -fixed-pitch font. e.g. Use Courier, not Courier New. This is not just +fixed-pitch font. E.g. use Courier, not Courier New. This is not just to use less resources but because there are subtle bugs in the -handling of fixed-pitch TrueType in Win3.1x. In particular, when you move +handling of fixed-pitch TrueType in Win3.1x. In particular, when you move a block cursor over a pipe character '|', the cursor is drawn in the wrong -size and bits get left behind. This is a bug in the Win3.1x GDI, it doesn't +size and bits get left behind. This is a bug in the Win3.1x GDI, it doesn't happen if you run the exe under 95/NT. vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/en/gui_w32.txt b/en/gui_w32.txt index 25b0e164a..b92a69321 100644 --- a/en/gui_w32.txt +++ b/en/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 7.0. Last change: 2005 Mar 29 +*gui_w32.txt* For Vim version 7.1. Last change: 2007 May 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -233,7 +233,8 @@ $VIMRUNTIME/mswin.vim script. You could add this line to your _vimrc file: > Since CTRL-C is used to copy the text to the clipboard, it can't be used to cancel an operation. Use CTRL-Break for that. -CTRL-Z is used for undo. This means you can't suspend Vim. +CTRL-Z is used for undo. This means you can't suspend Vim with this key, use +|:suspend| instead (if it's supported at all). *CTRL-V-alternative* *CTRL-Q* Since CTRL-V is used to paste, you can't use it to start a blockwise Visual @@ -463,6 +464,8 @@ This maps Alt-Space to pop down the system menu for the Vim window. Note that Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the Vim window via the system menu. +Note that the key changes depending on the language you are using. + *intellimouse-wheel-problems* When using the Intellimouse mouse wheel causes Vim to stop accepting input, go to: diff --git a/en/gui_x11.txt b/en/gui_x11.txt index a78dd3640..9ff6177b7 100644 --- a/en/gui_x11.txt +++ b/en/gui_x11.txt @@ -1,4 +1,4 @@ -*gui_x11.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*gui_x11.txt* For Vim version 7.1. Last change: 2006 Jul 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -406,8 +406,9 @@ These are the different looks: - That means the menubar and toolbar handles are back! Yeah! And the resizing grid still works too. -GNOME is automatically compiled with if it was found by configure. -(FIXME: Is this still true? Use --enable-gnome-check to force it to.) +GNOME is compiled with if it was found by configure and the +--enable-gnome-check argument was used. + GNOME session support *gui-gnome-session* *gnome-session* @@ -436,7 +437,7 @@ command line argument). ============================================================================== 7. KDE version *gui-kde* *kde* *KDE* *KVim* - + *gui-x11-kde* There is no KDE version of Vim. There has been some work on a port using the Qt toolkit, but it never worked properly and it has been abandoned. Work continues on Yzis: www.yzis.org. @@ -497,12 +498,6 @@ menus look a bit better. Edit the Makefile and look for "XAW_LIB". The scrollbars will remain the same, because Vim has its own, which are already 3D (in fact, they look more like Motif). - *gui-x11-kde* -For Vim-KDE, you need at least Qt(>=2.x) and the corresponding kdelibs. -To compile, you must use the --with-qt-dir configure flag because QTDIR is not -automatically detected yet. Giving KDE's directories to the configure script -may also help in some cases. - *gui-x11-neXtaw* The neXtaw version is mostly like Athena, but uses different widgets. diff --git a/en/tabpage.txt b/en/tabpage.txt index a6bbd6461..5826cf6cf 100644 --- a/en/tabpage.txt +++ b/en/tabpage.txt @@ -1,4 +1,4 @@ -*tabpage.txt* For Vim version 7.0. Last change: 2006 May 02 +*tabpage.txt* For Vim version 7.1. Last change: 2007 Mar 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -74,7 +74,8 @@ In the GUI tab pages line you can use the right mouse button to open menu. :[count]tab {cmd} *:tab* Execute {cmd} and when it opens a new window open a new tab - page instead. Doesn't work for |:diffsplit| or |:diffpatch|. + page instead. Doesn't work for |:diffsplit|, |:diffpatch|, + |:execute| and |:normal|. When [count] is omitted the tab page appears after the current one. When [count] is specified the new tab page comes after tab page [count]. Use ":0tab cmd" to get the new tab page as @@ -129,23 +130,25 @@ label to switch to that tab page. Click where there is no label to go to the next tab page. |'tabline'| :tabn[ext] *:tabn* *:tabnext* *gt* -gt *CTRL-<PageDown>* *<C-PageDown>* -<C-PageDown> *i_CTRL-<PageDown>* *i_<C-PageDown>* +<C-PageDown> *CTRL-<PageDown>* *<C-PageDown>* +gt *i_CTRL-<PageDown>* *i_<C-PageDown>* Go to the next tab page. Wraps around from the last to the first one. -:tabn[ext] {count} *CTRL-<PageUp>* *<C-PageUp>* -{count}gt *i_CTRL-<PageUp>* *i_<C-PageUp>* -<C-PageUp> Go to tab page {count}. The first tab page has number one. +:tabn[ext] {count} +{count}<C-PageDown> +{count}gt Go to tab page {count}. The first tab page has number one. -:tabp[revious] *:tabp* *:tabprevious* *gT* -:tabN[ext] *:tabN* *:tabNext* +:tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN* +:tabN[ext] *:tabNext* *CTRL-<PageUp>* +<C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>* gT Go to the previous tab page. Wraps around from the first one to the last one. :tabp[revious] {count} :tabN[ext] {count} +{count}<C-PageUp> {count}gT Go {count} tab pages back. Wraps around from the first one to the last one. @@ -203,7 +206,7 @@ The entries are: pointer. New Tab Open a tab page, editing an empty buffer. It appears to the left of the mouse pointer. - Open Tab... Like "New Tab" and additionaly use a file selector to + Open Tab... Like "New Tab" and additionally use a file selector to select a file to edit. Diff mode works per tab page. You can see the diffs between several files @@ -247,6 +250,10 @@ always. The highlighting of the tab pages line is set with the groups TabLine TabLineSel and TabLineFill. |hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| +A "+" will be shown for a tab page that has a modified window. The number of +windows in a tabpage is also shown. Thus "3+" means three windows and one of +them has a modified buffer. + The 'tabline' option allows you to define your preferred way to tab pages labels. This isn't easy, thus an example will be given here. @@ -254,8 +261,8 @@ For basics see the 'statusline' option. The same items can be used in the 'tabline' option. Additionally, the |tabpagebuflist()|, |tabpagenr()| and |tabpagewinnr()| functions are useful. -Since the number of tab labels will vary, you need to use an expresion for the -whole option. Something like: > +Since the number of tab labels will vary, you need to use an expression for +the whole option. Something like: > :set tabline=%!MyTabLine() Then define the MyTabLine() function to list all the tab pages labels. A @@ -300,7 +307,7 @@ Now the MyTabLabel() function is called for each tab page to get its label. > This is just a simplistic example that results in a tab pages line that resembles the default, but without adding a + for a modified buffer or -trunctating the names. You will want to reduce the width of labels in a +truncating the names. You will want to reduce the width of labels in a clever way when there is not enough room. Check the 'columns' option for the space available. @@ -330,7 +337,7 @@ label: > :set guitablabel=%N\ %f An example that resembles the default 'guitablabel': Show the number of -windows in the tab page and a '+' if there is a modifed buffer: > +windows in the tab page and a '+' if there is a modified buffer: > function GuiTabLabel() let label = '' diff --git a/ja/change.jax b/ja/change.jax index 8c08e1c82..9408cefa9 100644 --- a/ja/change.jax +++ b/ja/change.jax @@ -1153,9 +1153,9 @@ Note: "~ レジスタはプレインテキストをVimにドロップしたと *gq* gq{motion} {motion} の行を整形する。整形は3種類の方法のうちどれか で行われる。 - 1. 'formatexpr'がから出なければそのexpressionが評価さ + 1. 'formatexpr'が空でなければそのexpressionが評価さ れる。これはバッファごとに異なってもよい。 - 2. 'formatprg'がから出なければ外部プログラムが使われる。 + 2. 'formatprg'が空でなければ外部プログラムが使われる。 3. それ以外の場合は内部整形ルーチンが使われる。 3番目の場合は、オプション 'textwidth'が整形された各行 diff --git a/ja/fold.jax b/ja/fold.jax index 9667766f1..aa0926d34 100644 --- a/ja/fold.jax +++ b/ja/fold.jax @@ -1,10 +1,10 @@ COMMENT: 折畳み機能 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*fold.txt* For Vim version 7.0. Last change: 2006 Mar 29 +*fold.txt* For Vim version 7.1. Last change: 2007 May 11 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/ja/gui.jax b/ja/gui.jax index 6eeea06d1..a794f7359 100644 --- a/ja/gui.jax +++ b/ja/gui.jax @@ -1,10 +1,10 @@ COMMENT: GUI機能:一般事項 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*gui.txt* For Vim version 7.0. Last change: 2006 May 04 +*gui.txt* For Vim version 7.1. Last change: 2007 May 11 VIMリファレンスマニュアル by Bram Moolenaar @@ -512,7 +512,7 @@ Win32 GUIバージョンはMotifの切取りメニューをエミュレートす *:ime* *:imenu* *:inoreme* *:inoremenu* *:cme* *:cmenu* *:cnoreme* *:cnoremenu* *E330* *E327* *E331* *E336* *E333* - *E328* *E329* *E337* + *E328* *E329* *E337* *E792* 新しいメニュー項目を作るには、":menu"コマンドを使用する。これはほとんど":map" のコマンド群と同じだが最初の引数はメニュー項目の名前であり、'.'で区切ったメ ニューとサブメニューのパスとして与えられる。例えば: > diff --git a/ja/gui_w16.jax b/ja/gui_w16.jax index 280ef0a46..0c983747c 100644 --- a/ja/gui_w16.jax +++ b/ja/gui_w16.jax @@ -1,8 +1,8 @@ COMMENT: GUI機能:Windows 3.1以前 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*gui_w16.txt* For Vim version 7.0. Last change: 2005 Mar 29 +*gui_w16.txt* For Vim version 7.1. Last change: 2005 Mar 29 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/ja/gui_w32.jax b/ja/gui_w32.jax index 9174d99a3..90dcd4578 100644 --- a/ja/gui_w32.jax +++ b/ja/gui_w32.jax @@ -1,10 +1,10 @@ COMMENT: GUI機能:Windows 9x/Me/NT/2K/XP -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*gui_w32.txt* For Vim version 7.0. Last change: 2005 Mar 29 +*gui_w32.txt* For Vim version 7.1. Last change: 2007 May 03 VIMリファレンスマニュアル by Bram Moolenaar @@ -245,7 +245,8 @@ CTRL-Cがクリップボードへのコピーになってしまうので、操 ループに陥ったスクリプトを停止するなど)が、できなくなってしまう。代わりに CTRL-Breakが使える。 -CTRL-Z がアンドゥになる。そのため、Vimをサスペンドすることはできない。 +CTRL-Z がアンドゥになる。そのため、このキーでVimをサスペンドすることはできない。 +代わりに|:suspend|を使うこと(これがサポートされていればだが)。 *CTRL-V-alternative* *CTRL-Q* CTRL-Vがペーストに使われてしまうので、方形視覚選択(Visualモードの一種)を開始す @@ -476,6 +477,8 @@ Windows標準のアクションを興すための、Altキーの組み合わせ( Control-Nに、Alt-SpaceにNを続けるマッピングを施す。これはシステムメニュー経由 でVimのウィンドウを最小化する。 +これらのキーは使用している言語によって異なることがある。 + *intellimouse-wheel-problems* インテリマウスのホイールを使用すると、Vimは入力を受け付けなくなることがある。 次の場所へ行き: diff --git a/ja/gui_x11.jax b/ja/gui_x11.jax index bb76f3534..9b80a5896 100644 --- a/ja/gui_x11.jax +++ b/ja/gui_x11.jax @@ -1,11 +1,11 @@ COMMENT: GUI機能:X11 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 高野亮(BlackLynx) <wolfpack@rose.ocn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> -*gui_x11.txt* For Vim version 7.0. Last change: 2006 Apr 30 +*gui_x11.txt* For Vim version 7.1. Last change: 2006 Jul 12 VIMリファレンスマニュアル by Bram Moolenaar @@ -412,8 +412,9 @@ GNOME GUI は GTK+ バージョンと同じように機能する。どのよう - これはメニューバーとツールバーのハンドルが戻ってきたということだ! やった! もちろんサイズ変更グリッドもまだ使える。 -GNOME バージョンは configure が GNOME を認識すれば自動的にコンパイルされる。 -(FIXME: これはあってる? --enable-gnome-check を使うのが確実。) +GNOME バージョンは configure が GNOME を認識し、引数--enable-gnome-checkが指定 +されていればコンパイルされる。 + GNOME セッションサポート *gui-gnome-session* *gnome-session* @@ -441,6 +442,7 @@ GUI ウインドウの位置とサイズは保存されない、それはウイ ============================================================================== 7. KDE バージョン *gui-kde* *kde* *KDE* *KVim* + *gui-x11-kde* KDE バージョンの Vim は存在しない。Qt ツールキットを使って移植する作業が行われ ていたが、ちゃんと動かなかったので、今は放棄されている。作業は Yzis で継続され @@ -501,12 +503,6 @@ AthenaバージョンはデフォルトでXaw ウィジットセットを用い 。スクロールバーは、Vimは既に3Dのそれ自体を持っているので(実際には、それらはも っとMotifのように見える)、同じままだろう。 - *gui-x11-kde* -Vim-KDE には少なくとも Qt(>=2.x) とそれに対応する kdelib が必要である。 -コンパイルするには、QTDIR が自動的に検出されないため、configure フラグ ---with-qt-dir を使う必要がある。configure スクリプトに KDE のディレクトリを与 -えると助けになる場合がある。 - *gui-x11-neXtaw* neXtawバージョンについては、異なるウィジェットを使うだけでほとんどAthenaと変わ らない。 diff --git a/ja/insert.jax b/ja/insert.jax index 1fc529fb7..2b8899d21 100644 --- a/ja/insert.jax +++ b/ja/insert.jax @@ -349,6 +349,8 @@ Note: カーソルキーを押した時に挿入モードから抜けてしま CTRL-Oコマンドは時々副作用を生じる: カーソルが行末を越えている場合に、最後の文 字をその行に表示してしまうかもしれない。マッピングでは<Esc>を使うのが無難です +訳注: 「カーソルが行末を越えている場合に、行の最後の文字の上へ移動してしまうか +訳注: もしれない」では? (まず"x"を入力し、<Esc>を押すとカーソルは常にその文字の上に置かれます)。 Shiftキーを押しながらのカーソルキー操作は、全ての端末で可能なわけではない。 diff --git a/ja/tabpage.jax b/ja/tabpage.jax index 00276bb0a..149cef61c 100644 --- a/ja/tabpage.jax +++ b/ja/tabpage.jax @@ -1,8 +1,8 @@ COMMENT: タブページの使い方 -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*tabpage.txt* For Vim version 7.0. Last change: 2006 May 02 +*tabpage.txt* For Vim version 7.1. Last change: 2007 Mar 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -72,9 +72,10 @@ GUI でタブページラインを右クリックするとメニューが表示 :[count]tab {cmd} *:tab* {cmd} を実行します。そのコマンドが新しいウィンドウを作成すると - きは、その代わりに新しいタブページを作成します。|:diffsplit| - と |:diffpatch| に対しては機能しません。[count] を省略すると、 - 新しいタブページはカレントタブページの後ろに作成されます。 + きは、その代わりに新しいタブページを作成します。|:diffsplit|と + |:diffpatch|, |:execute|, |:normal| に対しては機能しません。 + [count] を省略すると、新しいタブページはカレントタブページの後 + ろに作成されます。 [count] を指定すると、[count] 番目のタブページの後ろに作成され ます。タブページを一番左に作成するには ":0tab cmd" とします。 例: > @@ -128,24 +129,26 @@ CTRL-W gF カーソル下のファイル名のファイルを新しいタブペ と、次のタブページに移動できます。 |'tabline'| :tabn[ext] *:tabn* *:tabnext* *gt* -gt *CTRL-<PageDown>* *<C-PageDown>* -<C-PageDown> *i_CTRL-<PageDown>* *i_<C-PageDown>* +<C-PageDown> *CTRL-<PageDown>* *<C-PageDown>* +gt *i_CTRL-<PageDown>* *i_<C-PageDown>* 次のタブページに移動します。次のタブページがない場合は、最初の タブページに移動します。 -:tabn[ext] {count} *CTRL-<PageUp>* *<C-PageUp>* -{count}gt *i_CTRL-<PageUp>* *i_<C-PageUp>* -<C-PageUp> {count} 番目のタブページに移動します。最初のタブページの番号は +:tabn[ext] {count} +{count}<C-PageDown> +{count}gt {count} 番目のタブページに移動します。最初のタブページの番号は 1 です。 -:tabp[revious] *:tabp* *:tabprevious* *gT* -:tabN[ext] *:tabN* *:tabNext* +:tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN* +:tabN[ext] *:tabNext* *CTRL-<PageUp>* +<C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>* gT 前のタブページに移動します。前のタブページがない場合は、最後の タブページに移動します。 :tabp[revious] {count} :tabN[ext] {count} +{count}<C-PageUp> {count}gT {count} の数だけ前のタブページに移動します。前のタブページがな い場合は最後のタブページに移動します。 @@ -247,6 +250,10 @@ Diff モードはタブページ単位で機能します。一つのタブペー タブページラインの強調表示には TabLine、TabLineSel、TabLineFill が使われます。 |hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| +変更されているウィンドウを含むタブページには "+" が表示されます。タブページ内 +のウィンドウの個数も表示されます。よって "3+" という表示は3個のウィンドウを含 +む、そのうちの1つが変更されているバッファを含むということを意味します。 + オプション 'tabline' を使って、タブページラベルを好みの表示に設定できます。こ れはあまり簡単ではないので、サンプルを用意してあります。 From a10e58f25e8c7733c6b6292a23adb54ee57cd66d Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Wed, 13 Jun 2007 15:26:25 +0000 Subject: [PATCH 094/783] fix: update usr_30, usr_31, usr_44, various to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@94 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/usr_30.txt | 16 ++++++++-------- en/usr_31.txt | 15 ++++++++++----- en/usr_44.txt | 44 ++++++++++++++++++++++---------------------- en/various.txt | 24 ++++++++++++++++++------ ja/usr_30.jax | 4 ++-- ja/usr_31.jax | 15 ++++++++++----- ja/usr_44.jax | 42 +++++++++++++++++++++--------------------- ja/various.jax | 36 +++++++++++++++++++++++++----------- 8 files changed, 116 insertions(+), 80 deletions(-) diff --git a/en/usr_30.txt b/en/usr_30.txt index e0e23ed90..5f4b55771 100644 --- a/en/usr_30.txt +++ b/en/usr_30.txt @@ -1,4 +1,4 @@ -*usr_30.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*usr_30.txt* For Vim version 7.1. Last change: 2007 Apr 22 VIM USER MANUAL - by Bram Moolenaar @@ -35,7 +35,7 @@ you give) and captures the results: > If errors were generated, they are captured and the editor positions you where the first error occurred. - Take a look at an example ":make" session. (Typical :make sessions generate + Take a look at an example ":make" session. (Typical :make sessions generate far more errors and fewer stupid ones.) After typing ":make" the screen looks like this: @@ -50,7 +50,7 @@ like this: 2 returned ~ "main.c" 11L, 111C ~ (3 of 6): too many arguments to function 'do_sub' ~ - Hit ENTER or type command to continue ~ + Press ENTER or type command to continue ~ From this you can see that you have errors in the file "main.c". When you press <Enter>, Vim displays the file "main.c", with the cursor positioned on @@ -148,7 +148,7 @@ More about these modifiers here: |filename-modifiers|. OLD ERROR LISTS -Suppose you ":make" a program. There is an warning message in one file and an +Suppose you ":make" a program. There is a warning message in one file and an error message in another. You fix the error and use ":make" again to check if it was really fixed. Now you want to look at the warning message. It doesn't show up in the last error list, since the file with the warning wasn't @@ -242,7 +242,7 @@ form is: > This indents the current line. Like with all operators, there are three ways to use it. In Visual mode "=" indents the selected lines. A useful text object is "a{". This selects the current {} block. Thus, to re-indent the -code code block the cursor is in: > +code block the cursor is in: > =a{ @@ -315,7 +315,7 @@ In this file the output is: filetype=help ~ -This you would use "help" for {filetype}. +Thus you would use "help" for {filetype}. For the {directory} part you need to use your runtime directory. Look at the output of this command: > @@ -339,7 +339,7 @@ How to do that is explained here: |indent-expression|. The most simple form of automatic indenting is with the 'autoindent' option. It uses the indent from the previous line. A bit smarter is the 'smartindent' option. This is useful for languages where no indent file is available. -'smartindent'is not as smart as 'cindent', but smarter than 'autoindent'. +'smartindent' is not as smart as 'cindent', but smarter than 'autoindent'. With 'smartindent' set, an extra level of indentation is added for each { and removed for each }. An extra level of indentation will also be added for any of the words in the 'cinwords' option. Lines that begin with # are @@ -606,7 +606,7 @@ This allows formatting a message like this: Try setting 'textwidth' to a different value, e.g., 80, and format the text by Visually selecting it and typing "gq". The result is: - > ! Did you see that site? It looks really great. ~ + > ! Did you see that site? It looks really great. ~ > I don't like it. The colors are terrible. ~ What is the URL of that site? ~ diff --git a/en/usr_31.txt b/en/usr_31.txt index 7ef5c290f..10794d5b4 100644 --- a/en/usr_31.txt +++ b/en/usr_31.txt @@ -1,4 +1,4 @@ -*usr_31.txt* For Vim version 6.3. Last change: 2003 Oct 21 +*usr_31.txt* For Vim version 7.1. Last change: 2007 May 08 VIM USER MANUAL - by Bram Moolenaar @@ -15,7 +15,7 @@ between alternatives. Use keyboard shortcuts to access menu items quickly. |31.4| Vim window position and size |31.5| Various - Next chapter: |usr_40.txt| Make new commands + Next chapter: |usr_32.txt| The undo tree Previous chapter: |usr_30.txt| Editing programs Table of contents: |usr_toc.txt| @@ -76,7 +76,7 @@ Will start the browser in "/usr". When you are not using the GUI version, you could use the file explorer window to select files like in a file browser. However, this doesn't work for the -":browse" command. See |file-explorer|. +":browse" command. See |netrw-browse|. ============================================================================== *31.2* Confirmation @@ -248,7 +248,12 @@ you can set the 'lines' option to set a different window size: > You don't want to do this in a terminal, since it's size is fixed (except for an xterm that supports resizing). The gvimrc file is searched for in the same locations as the vimrc file. -Normally it's name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows. +Normally its name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows. +The $MYGVIMRC environment variable is set to it, thus you can use this command +to edit the file, if you have one: > + + :edit $MYGVIMRC +< If for some reason you don't want to use the normal gvimrc file, you can specify another one with the "-U" argument: > @@ -262,6 +267,6 @@ another font size, for example. ============================================================================== -Next chapter: |usr_40.txt| Make new commands +Next chapter: |usr_32.txt| The undo tree Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/en/usr_44.txt b/en/usr_44.txt index ac713e79a..390638736 100644 --- a/en/usr_44.txt +++ b/en/usr_44.txt @@ -1,4 +1,4 @@ -*usr_44.txt* For Vim version 6.3. Last change: 2002 Oct 10 +*usr_44.txt* For Vim version 7.1. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -550,7 +550,7 @@ before the top of the screen: > If it cannot figure out where it is in that space, it starts looking farther and farther back until it figures out what to do. But it looks no farther -back than 500 lines. (A large "maxlines" slows down processing. A small one +back than 500 lines. (A large "maxlines" slows down processing. A small one might cause synchronization to fail.) To make synchronizing go a bit faster, tell Vim which syntax items can be skipped. Every match and region that only needs to be used when actually @@ -667,8 +667,13 @@ the syntax file "name.vim", 'filetype', b:current_syntax the start of each syntax group (nameType, nameStatement, nameString, etc). Start with a check for "b:current_syntax". If it is defined, some other -syntax file, earlier in 'runtimepath' was already loaded. To be compatible -with Vim 5.8 use: > +syntax file, earlier in 'runtimepath' was already loaded: > + + if exists("b:current_syntax") + finish + endif + +To be compatible with Vim 5.8 use: > if version < 600 syntax clear @@ -689,25 +694,20 @@ Do not include anything that is a user preference. Don't set 'tabstop', Do not include mappings or abbreviations. Only include setting 'iskeyword' if it is really necessary for recognizing keywords. -Avoid using specific colors. Link to the standard highlight groups whenever -possible. Don't forget that some people use a different background color, or -have only eight colors available. -For backwards compatibility with Vim 5.8 this construction is used: > - - if version >= 508 || !exists("did_c_syn_inits") - if version < 508 - let did_c_syn_inits = 1 - command -nargs=+ HiLink hi link <args> - else - command -nargs=+ HiLink hi def link <args> - endif - - HiLink nameString String - HiLink nameNumber Number - ... etc ... +To allow users select their own preferred colors, make a different group name +for every kind of highlighted item. Then link each of them to one of the +standard highlight groups. That will make it work with every color scheme. +If you select specific colors it will look bad with some color schemes. And +don't forget that some people use a different background color, or have only +eight colors available. - delcommand HiLink - endif +For the linking use "hi def link", so that the user can select different +highlighting before your syntax file is loaded. Example: > + + hi def link nameString String + hi def link nameNumber Number + hi def link nameCommand Statement + ... etc ... Add the "display" argument to items that are not used when syncing, to speed up scrolling backwards and CTRL-L. diff --git a/en/various.txt b/en/various.txt index 2f1d3fff6..d5ce26471 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.0. Last change: 2006 Apr 25 +*various.txt* For Vim version 7.1. Last change: 2007 Jan 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -121,6 +121,12 @@ g8 Print the hex values of the bytes used in the :[range]# [count] [flags] synonym for :number. + *:#!* +:#!{anything} Ignored, so that you can start a Vim script with: > + #!/usr/bin/env vim -S + echo "this is a Vim script" + quit +< *:z* *E144* :{range}z[+-^.=]{count} Display several lines of text surrounding the line specified with {range}, or around the current line @@ -163,6 +169,7 @@ g8 Print the hex values of the bytes used in the it possible to execute Normal mode commands typed on the command-line. {commands} is executed like it is typed. For undo all commands are undone together. + Execution stops when an error is encountered. If the [!] is given, mappings will not be used. {commands} should be a complete command. If {commands} does not finish a command, the last one @@ -377,7 +384,7 @@ m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn| N *+termresponse* support for |t_RV| and |v:termresponse| N *+textobjects* |text-objects| selection *+tgetent* non-Unix only: able to use external termcap -N *+title* Setting the window title |'title'| +N *+title* Setting the window 'title' and 'icon' N *+toolbar* |gui-toolbar| N *+user_commands* User-defined commands. |user-commands| N *+viminfo* |'viminfo'| @@ -434,10 +441,14 @@ N *+X11* Unix only: can restore window title |X11| after the register name can be omitted. {not in Vi} :redi[r] @{a-z}>> Append messages to register {a-z}. {not in Vi} -:redi[r] @*> Redirect messages to the clipboard. For backward - compatibility, the ">" after the register name can be - omitted. {not in Vi} -:redi[r] @*>> Append messages to the clipboard. {not in Vi} +:redi[r] @*> +:redi[r] @+> Redirect messages to the selection or clipboard. For + backward compatibility, the ">" after the register + name can be omitted. See |quotestar| and |quoteplus|. + {not in Vi} +:redi[r] @*>> +:redi[r] @+>> Append messages to the selection or clipboard. + {not in Vi} :redi[r] @"> Redirect messages to the unnamed register. For backward compatibility, the ">" after the register @@ -447,6 +458,7 @@ N *+X11* Unix only: can restore window title |X11| :redi[r] => {var} Redirect messages to a variable. If the variable doesn't exist, then it is created. If the variable exists, then it is initialized to an empty string. + The variable will remain empty until redirection ends. Only string variables can be used. After the redirection starts, if the variable is removed or locked or the variable type is changed, then further diff --git a/ja/usr_30.jax b/ja/usr_30.jax index c82569308..133a046f2 100644 --- a/ja/usr_30.jax +++ b/ja/usr_30.jax @@ -1,9 +1,9 @@ COMMENT: プログラマー支援機能(コンパイル、インデント、タブ、整形) -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_30.txt* For Vim version 6.3. Last change: 2004 Jan 17 +*usr_30.txt* For Vim version 7.1. Last change: 2007 Apr 22 VIM USER MANUAL - by Bram Moolenaar diff --git a/ja/usr_31.jax b/ja/usr_31.jax index e457b8d27..2eedaf9ea 100644 --- a/ja/usr_31.jax +++ b/ja/usr_31.jax @@ -1,9 +1,9 @@ COMMENT: GUIコンポーネントの利用 -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*usr_31.txt* For Vim version 6.3. Last change: 2003 Oct 21 +*usr_31.txt* For Vim version 7.1. Last change: 2007 May 08 VIM USER MANUAL - by Bram Moolenaar @@ -21,7 +21,7 @@ vimは端末でもちゃんと動きますが、GUIバージョンでは |31.4| vimウィンドウ位置と大きさ |31.5| その他 - Next chapter: |usr_40.txt| 新しいコマンドを作る + Next chapter: |usr_32.txt| undo ツリー Previous chapter: |usr_30.txt| プログラムの編集 Table of contents: |usr_toc.txt| @@ -81,7 +81,7 @@ vimでほとんどのコマンドを入力するのであれば、同様にコ GUIでないバージョンを使っている場合でも、ファイルエクスプローラのウィンド ウを使えば、ファイルブラウザと同じようにファイル選択ができます。ですがその場 -合でも":browse"コマンドは使えません。|file-explorer|をご覧ください。 +合でも":browse"コマンドは使えません。|netrw-browse|をご覧ください。 ============================================================================== *31.2* 確認 @@ -259,6 +259,11 @@ gvimの起動時にはgvimrcファイルを読み込みます。これはvim起 は固定ですから、GUI以外では不要でしょう。 gvimrcファイルはvimrcファイルと同じ場所を探します。通常はUnixで"~/.gvimrc"、 MS-Windowsでは"$VIM/_gvimrc"というファイル名となります。 +環境変数$MYGVIMRCの値がそれになります。よって次のコマンドでそのファイルを編集 +することができます: > + + :edit $MYGVIMRC +< 何らかの理由でいつものgvimrcファイルを使いたくない場合は、"-U"パラメタを使っ て、他のファイルを指定することができます。 > @@ -272,6 +277,6 @@ MS-Windowsでは"$VIM/_gvimrc"というファイル名となります。 ============================================================================== -Next chapter: |usr_40.txt| 新しいコマンドを作る +Next chapter: |usr_32.txt| undo ツリー Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_44.jax b/ja/usr_44.jax index cdef6e42d..1e48c9772 100644 --- a/ja/usr_44.jax +++ b/ja/usr_44.jax @@ -1,8 +1,8 @@ COMMENT: 独自の構文強調(テキストの色つけ)を定義する -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> -*usr_44.txt* For Vim version 6.3. Last change: 2002 Oct 10 +*usr_44.txt* For Vim version 7.1. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -708,8 +708,13 @@ Perlファイルで定義された項目に戻ります。 "b:current_syntax"というのはバッファローカルな変数のことです。 最初に"b:current_syntax"を確認します。これが定義済であれば、'runtimepath'の -最初の方でシンタックスファイルをロード済です。さらにvim5.8との互換が必要なら -こうします。 > +最初の方でシンタックスファイルをロード済です: > + + if exists("b:current_syntax") + finish + endif + +vim5.8との互換が必要なら次のようにします: > if version < 600 syntax clear @@ -730,25 +735,20 @@ Perlファイルで定義された項目に戻ります。 また、マップや短縮形も含んではいけません。ただし'iskeyword'だけは、キーワー ドの識別にどうしても必要であれば、設定してもかまいません。 -特定の色を使うことは避けてください。可能な限り標準ハイライトグループへのリン -クを使ってください。利用者の環境によって背景色が違っていたり、色数が8色しか -使えない場合もあるということを忘れないでください。 -vim5.8との後方互換を保つには次のような構文を使います。 > - - if version >= 508 || !exists("did_c_syn_inits") - if version < 508 - let did_c_syn_inits = 1 - command -nargs=+ HiLink hi link <args> - else - command -nargs=+ HiLink hi def link <args> - endif +利用者が好きな色を選択できるようにするために、ハイライトする要素の全ての種類に +対して異なるグループ名を与えてください。そしてそれらを標準のハイライトグループ +のどれかにリンクしてください。そうすればどのカラースキームでも動作するようにな +ります。あなたが特定の色を選んでしまうと、カラースキームによっては見え方が悪く +なってしまいます。また、利用者の環境によって背景色が違っていたり、色数が8色し +か使えない場合もあるということを忘れないでください。 - HiLink nameString String - HiLink nameNumber Number - ... etc ... +リンクするには"hi def link"を使います。すると利用者はあなたの文法ファイルが読 +み込まれる前に異なるハイライトを選ぶことができます。例: > - delcommand HiLink - endif + hi def link nameString String + hi def link nameNumber Number + hi def link nameCommand Statement + ... etc ... 同期を取る時には使わない項目には"display"パラメタを与えることで、逆スクロー ル時やCTRL-Lを実行した時のスピードアップを図ることができます。 diff --git a/ja/various.jax b/ja/various.jax index 9b569992e..d9e767cb6 100644 --- a/ja/various.jax +++ b/ja/various.jax @@ -1,9 +1,9 @@ COMMENT: 様々なコマンド(コマンド、ヘルプ、印刷) -STATUS: finished 7.0 +STATUS: finished 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> TRANSLATOR: nakadaira <hopper2@nanameue.jp> -*various.txt* For Vim version 7.0. Last change: 2006 Apr 25 +*various.txt* For Vim version 7.1. Last change: 2007 Jan 14 VIM リファレンスマニュアル by Bram Moolenaar @@ -126,6 +126,13 @@ g8 カーソル位置の文字のバイト列を 16 進数で表示します :[range]# [count] [flags] :number と同じです。 + *:#!* +:#!{anything} 無視されます。そのため、次のようにして Vim スクリプト + を実行することができます: > + #!/usr/bin/env vim -S + echo "this is a Vim script" + quit +< *:z* *E144* :{range}z[+-^.=]{count} {range}に指定した行の周辺を表示します。{range} を省略 した場合は現在行の周辺を表示します。行の範囲をどれだけ @@ -169,6 +176,7 @@ g8 カーソル位置の文字のバイト列を 16 進数で表示します {commands} は、ノーマルモードで入力されたときと同じよ うに実行されます。{commands} による変更は、一回のアン ドゥで取り消されます。 + エラーが発生すると実行停止します。 [!] を付けた場合はマップは適用されません。 {commands} は実行を完了する (ノーマルモードに戻る) 必 要があります。 @@ -381,7 +389,7 @@ m *+tcl/dyn* Tcl インターフェース |tcl-dynamic| |/dyn| N *+termresponse* |t_RV| と |v:termresponse| のサポート N *+textobjects* |text-objects| 選択 *+tgetent* 非Unix のみ: 外部termcapを使用可能 -N *+title* ウィンドウタイトル設定 |'title'| +N *+title* ウィンドウタイトルとアイコン設定 |'title'| |'icon'| N *+toolbar* |gui-toolbar| N *+user_commands* ユーザ定義コマンド |user-commands| N *+viminfo* |'viminfo'| @@ -439,10 +447,14 @@ N *+X11* Unix のみ: ウィンドウタイトルを復帰可能 |X11| ます。{Vi にはない} :redi[r] @{a-z}>> メッセージをレジスタ {a-z} に追記します。 {Vi にはない} -:redi[r] @*> メッセージをクリップボードにリダイレクトします。互換性 - のため、レジスタ名の後ろの ">" は省略できます。{Viには - ない} -:redi[r] @*>> メッセージをクリップボードに追記します。 {Vi にはない} +:redi[r] @*> +:redi[r] @+> メッセージをセレクションまたはクリップボードにリダイレ + クトします。互換性のため、レジスタ名の後ろの ">" は省 + 略できます。|quotestar| と |quoteplus| を参照。 + {Vi にはない} +:redi[r] @*>> +:redi[r] @+>> メッセージをクリップボードに追記します。 + {Vi にはない} :redi[r] @"> メッセージを無名レジスタにリダイレクトします。互換性の ため、レジスタ名の後ろの ">" は省略できます。 @@ -451,10 +463,12 @@ N *+X11* Unix のみ: ウィンドウタイトルを復帰可能 |X11| :redi[r] => {var} メッセージを変数にリダイレクトします。変数が存在しない 場合は、作成されます。変数がすでにある場合は、空文字列 - で初期化されます。文字列変数のみ使えます。リダイレクト - を開始した後で変数を変更したり、ロックしたり、変数タイ - プを変更したりすると、それ以降のコマンドがメッセージを - 出力するときにエラーが起こります。{Vi にはない} + で初期化されます。 + リダイレクトが終了するまでは、変数は空のままです。 + 文字列変数のみ使えます。リダイレクトを開始した後で変数 + を変更したり、ロックしたり、変数タイプを変更したりする + と、それ以降のコマンドがメッセージを出力するときにエラー + が起こります。{Vi にはない} :redi[r] =>> {var} メッセージを変数に追記します。文字列変数のみ使えます。 {Vi にはない} From 450a9ae8ba5e25f608ddb41ca9b2ef563ae10d1b Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 16 Jun 2007 10:28:33 +0000 Subject: [PATCH 095/783] fix: eval.jax: merged untranslated texts git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@95 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/eval.jax | 5639 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 5394 insertions(+), 245 deletions(-) diff --git a/ja/eval.jax b/ja/eval.jax index 9a1e2930c..0f73d5a42 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -1,8 +1,8 @@ COMMENT: Vimスクリプト -STATUS: suspended 6.3.054 +STATUS: suspended 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> -*eval.txt* For Vim version 6.3. Last change: 2004 May 18 +*eval.txt* For Vim version 7.1. Last change: 2007 May 11 VIMリファレンスマニュアル by Bram Moolenaar @@ -14,31 +14,51 @@ Vimスクリプトの利用についてはユーザマニュアルの41章|user_ いる。 注意:Vimスクリプトはコンパイル時に無効化できる。もしそうなっているとこのドキュ -メントに書かれている事は有効ではない。|+eval|と後の最終章とを参照。 +メントに書かれている事は有効ではない。|+eval|と|no-eval-feature|を参照。 1. 変数 |variables| + 1.1 変数の型 + 1.2 関数への参照 |Funcref| + 1.3 リスト |Lists| + 1.4 辞書 |Dictionaries| + 1.5 変数について補足 |more-variables| 2. 式の文法 |expression-syntax| 3. 内部変数 |internal-variables| 4. 組み込み関数 |functions| 5. 関数定義 |user-functions| 6. 波括弧{}の名前 |curly-braces-names| 7. コマンド |expression-commands| -8. 例外のハンドリング |exception-handling| +8. 例外処理 |exception-handling| 9. 例 |eval-examples| 10. +eval機能が無効 |no-eval-feature| 11. サンドボックス |eval-sandbox| +12. テキストロック |textlock| {Vi にはこれらのコマンドは存在しない} ============================================================================== 1. 変数 *variables* -変数には2種類の型がある: +1.1 変数の型 ~ + *E712* +変数には5種類の型がある: 数値 32ビット符合有整数 -文字列 終端がNUL文字である8ビットの符号無し文字 + 例: -123 0x10 0177 -これらは文脈に応じて相互に変換される。 +文字列 終端がNUL文字である8ビットの符号無し文字(バイト) + 例: "ab\txx\"--" 'x-z''a,c' + +Funcref 関数への参照 |Funcref|. + 例: function("strlen") + +リスト 要素の順序つきの列 |List|. + 例: [1, 2, ['a', 'b']] + +辞書 順序を持たない連想配列: 各要素はキーと値を持つ。|Dictionary| + 例: {'blue': "#0000ff", 'red': "#ff0000"} + +数値と文字列は文脈に応じて相互に変換される。 数値から文字列への変換は数字のASCII表現によって行なわれる。例: > 数値 123 --> 文字列 "123" @@ -57,6 +77,10 @@ Vimスクリプトの利用についてはユーザマニュアルの41章|user_ 文字列を強制的に数値に変換するには0を足す: > :echo "0100" + 0 +< 64 ~ + +先頭の0によって8進数とみなされるのを防いだり、異なる基数を使うには|str2nr()|を +使う。 ブール(真理値)演算には数値が使われる。0は偽を意味し、非0は真を表す。 @@ -65,6 +89,456 @@ Note 次のコマンドをみると > "foo"は0に変換され、それは偽を意味する。文字列が空ではないか調べるためには strlen()を使用して次のようにする。 > :if strlen("foo") +< *E745* *E728* *E703* *E729* *E730* *E731* +List, Dictionary and Funcref types are not automatically converted. + + *E706* +You will get an error if you try to change the type of a variable. You need +to |:unlet| it first to avoid this error. String and Number are considered +equivalent though. Consider this sequence of commands: > + :let l = "string" + :let l = 44 " changes type from String to Number + :let l = [1, 2, 3] " error! + + +1.2 Function references ~ + *Funcref* *E695* *E718* +A Funcref variable is obtained with the |function()| function. It can be used +in an expression in the place of a function name, before the parenthesis +around the arguments, to invoke the function it refers to. Example: > + + :let Fn = function("MyFunc") + :echo Fn() +< *E704* *E705* *E707* +A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:". You +cannot have both a Funcref variable and a function with the same name. + +A special case is defining a function and directly assigning its Funcref to a +Dictionary entry. Example: > + :function dict.init() dict + : let self.val = 0 + :endfunction + +The key of the Dictionary can start with a lower case letter. The actual +function name is not used here. Also see |numbered-function|. + +A Funcref can also be used with the |:call| command: > + :call Fn() + :call dict.init() + +The name of the referenced function can be obtained with |string()|. > + :let func = string(Fn) + +You can use |call()| to invoke a Funcref and use a list variable for the +arguments: > + :let r = call(Fn, mylist) + + +1.3 Lists ~ + *List* *Lists* *E686* +A List is an ordered sequence of items. An item can be of any type. Items +can be accessed by their index number. Items can be added and removed at any +position in the sequence. + + +List creation ~ + *E696* *E697* +A List is created with a comma separated list of items in square brackets. +Examples: > + :let mylist = [1, two, 3, "four"] + :let emptylist = [] + +An item can be any expression. Using a List for an item creates a +List of Lists: > + :let nestlist = [[11, 12], [21, 22], [31, 32]] + +An extra comma after the last item is ignored. + + +List index ~ + *list-index* *E684* +An item in the List can be accessed by putting the index in square brackets +after the List. Indexes are zero-based, thus the first item has index zero. > + :let item = mylist[0] " get the first item: 1 + :let item = mylist[2] " get the third item: 3 + +When the resulting item is a list this can be repeated: > + :let item = nestlist[0][1] " get the first list, second item: 12 +< +A negative index is counted from the end. Index -1 refers to the last item in +the List, -2 to the last but one item, etc. > + :let last = mylist[-1] " get the last item: "four" + +To avoid an error for an invalid index use the |get()| function. When an item +is not available it returns zero or the default value you specify: > + :echo get(mylist, idx) + :echo get(mylist, idx, "NONE") + + +List concatenation ~ + +Two lists can be concatenated with the "+" operator: > + :let longlist = mylist + [5, 6] + :let mylist += [7, 8] + +To prepend or append an item turn the item into a list by putting [] around +it. To change a list in-place see |list-modification| below. + + +Sublist ~ + +A part of the List can be obtained by specifying the first and last index, +separated by a colon in square brackets: > + :let shortlist = mylist[2:-1] " get List [3, "four"] + +Omitting the first index is similar to zero. Omitting the last index is +similar to -1. > + :let endlist = mylist[2:] " from item 2 to the end: [3, "four"] + :let shortlist = mylist[2:2] " List with one item: [3] + :let otherlist = mylist[:] " make a copy of the List + +If the first index is beyond the last item of the List or the second item is +before the first item, the result is an empty list. There is no error +message. + +If the second index is equal to or greater than the length of the list the +length minus one is used: > + :let mylist = [0, 1, 2, 3] + :echo mylist[2:8] " result: [2, 3] + +NOTE: mylist[s:e] means using the variable "s:e" as index. Watch out for +using a single letter variable before the ":". Insert a space when needed: +mylist[s : e]. + + +List identity ~ + *list-identity* +When variable "aa" is a list and you assign it to another variable "bb", both +variables refer to the same list. Thus changing the list "aa" will also +change "bb": > + :let aa = [1, 2, 3] + :let bb = aa + :call add(aa, 4) + :echo bb +< [1, 2, 3, 4] + +Making a copy of a list is done with the |copy()| function. Using [:] also +works, as explained above. This creates a shallow copy of the list: Changing +a list item in the list will also change the item in the copied list: > + :let aa = [[1, 'a'], 2, 3] + :let bb = copy(aa) + :call add(aa, 4) + :let aa[0][1] = 'aaa' + :echo aa +< [[1, aaa], 2, 3, 4] > + :echo bb +< [[1, aaa], 2, 3] + +To make a completely independent list use |deepcopy()|. This also makes a +copy of the values in the list, recursively. Up to a hundred levels deep. + +The operator "is" can be used to check if two variables refer to the same +List. "isnot" does the opposite. In contrast "==" compares if two lists have +the same value. > + :let alist = [1, 2, 3] + :let blist = [1, 2, 3] + :echo alist is blist +< 0 > + :echo alist == blist +< 1 + +Note about comparing lists: Two lists are considered equal if they have the +same length and all items compare equal, as with using "==". There is one +exception: When comparing a number with a string they are considered +different. There is no automatic type conversion, as with using "==" on +variables. Example: > + echo 4 == "4" +< 1 > + echo [4] == ["4"] +< 0 + +Thus comparing Lists is more strict than comparing numbers and strings. You +can compare simple values this way too by putting them in a string: > + + :let a = 5 + :let b = "5" + echo a == b +< 1 > + echo [a] == [b] +< 0 + + +List unpack ~ + +To unpack the items in a list to individual variables, put the variables in +square brackets, like list items: > + :let [var1, var2] = mylist + +When the number of variables does not match the number of items in the list +this produces an error. To handle any extra items from the list append ";" +and a variable name: > + :let [var1, var2; rest] = mylist + +This works like: > + :let var1 = mylist[0] + :let var2 = mylist[1] + :let rest = mylist[2:] + +Except that there is no error if there are only two items. "rest" will be an +empty list then. + + +List modification ~ + *list-modification* +To change a specific item of a list use |:let| this way: > + :let list[4] = "four" + :let listlist[0][3] = item + +To change part of a list you can specify the first and last item to be +modified. The value must at least have the number of items in the range: > + :let list[3:5] = [3, 4, 5] + +Adding and removing items from a list is done with functions. Here are a few +examples: > + :call insert(list, 'a') " prepend item 'a' + :call insert(list, 'a', 3) " insert item 'a' before list[3] + :call add(list, "new") " append String item + :call add(list, [1, 2]) " append a List as one new item + :call extend(list, [1, 2]) " extend the list with two more items + :let i = remove(list, 3) " remove item 3 + :unlet list[3] " idem + :let l = remove(list, 3, -1) " remove items 3 to last item + :unlet list[3 : ] " idem + :call filter(list, 'v:val !~ "x"') " remove items with an 'x' + +Changing the order of items in a list: > + :call sort(list) " sort a list alphabetically + :call reverse(list) " reverse the order of items + + +For loop ~ + +The |:for| loop executes commands for each item in a list. A variable is set +to each item in the list in sequence. Example: > + :for item in mylist + : call Doit(item) + :endfor + +This works like: > + :let index = 0 + :while index < len(mylist) + : let item = mylist[index] + : :call Doit(item) + : let index = index + 1 + :endwhile + +Note that all items in the list should be of the same type, otherwise this +results in error |E706|. To avoid this |:unlet| the variable at the end of +the loop. + +If all you want to do is modify each item in the list then the |map()| +function will be a simpler method than a for loop. + +Just like the |:let| command, |:for| also accepts a list of variables. This +requires the argument to be a list of lists. > + :for [lnum, col] in [[1, 3], [2, 8], [3, 0]] + : call Doit(lnum, col) + :endfor + +This works like a |:let| command is done for each list item. Again, the types +must remain the same to avoid an error. + +It is also possible to put remaining items in a List variable: > + :for [i, j; rest] in listlist + : call Doit(i, j) + : if !empty(rest) + : echo "remainder: " . string(rest) + : endif + :endfor + + +List functions ~ + *E714* +Functions that are useful with a List: > + :let r = call(funcname, list) " call a function with an argument list + :if empty(list) " check if list is empty + :let l = len(list) " number of items in list + :let big = max(list) " maximum value in list + :let small = min(list) " minimum value in list + :let xs = count(list, 'x') " count nr of times 'x' appears in list + :let i = index(list, 'x') " index of first 'x' in list + :let lines = getline(1, 10) " get ten text lines from buffer + :call append('$', lines) " append text lines in buffer + :let list = split("a b c") " create list from items in a string + :let string = join(list, ', ') " create string from list items + :let s = string(list) " String representation of list + :call map(list, '">> " . v:val') " prepend ">> " to each item + +Don't forget that a combination of features can make things simple. For +example, to add up all the numbers in a list: > + :exe 'let sum = ' . join(nrlist, '+') + + +1.4 Dictionaries ~ + *Dictionaries* *Dictionary* +A Dictionary is an associative array: Each entry has a key and a value. The +entry can be located with the key. The entries are stored without a specific +ordering. + + +Dictionary creation ~ + *E720* *E721* *E722* *E723* +A Dictionary is created with a comma separated list of entries in curly +braces. Each entry has a key and a value, separated by a colon. Each key can +only appear once. Examples: > + :let mydict = {1: 'one', 2: 'two', 3: 'three'} + :let emptydict = {} +< *E713* *E716* *E717* +A key is always a String. You can use a Number, it will be converted to a +String automatically. Thus the String '4' and the number 4 will find the same +entry. Note that the String '04' and the Number 04 are different, since the +Number will be converted to the String '4'. + +A value can be any expression. Using a Dictionary for a value creates a +nested Dictionary: > + :let nestdict = {1: {11: 'a', 12: 'b'}, 2: {21: 'c'}} + +An extra comma after the last entry is ignored. + + +Accessing entries ~ + +The normal way to access an entry is by putting the key in square brackets: > + :let val = mydict["one"] + :let mydict["four"] = 4 + +You can add new entries to an existing Dictionary this way, unlike Lists. + +For keys that consist entirely of letters, digits and underscore the following +form can be used |expr-entry|: > + :let val = mydict.one + :let mydict.four = 4 + +Since an entry can be any type, also a List and a Dictionary, the indexing and +key lookup can be repeated: > + :echo dict.key[idx].key + + +Dictionary to List conversion ~ + +You may want to loop over the entries in a dictionary. For this you need to +turn the Dictionary into a List and pass it to |:for|. + +Most often you want to loop over the keys, using the |keys()| function: > + :for key in keys(mydict) + : echo key . ': ' . mydict[key] + :endfor + +The List of keys is unsorted. You may want to sort them first: > + :for key in sort(keys(mydict)) + +To loop over the values use the |values()| function: > + :for v in values(mydict) + : echo "value: " . v + :endfor + +If you want both the key and the value use the |items()| function. It returns +a List in which each item is a List with two items, the key and the value: > + :for [key, value] in items(mydict) + : echo key . ': ' . value + :endfor + + +Dictionary identity ~ + *dict-identity* +Just like Lists you need to use |copy()| and |deepcopy()| to make a copy of a +Dictionary. Otherwise, assignment results in referring to the same +Dictionary: > + :let onedict = {'a': 1, 'b': 2} + :let adict = onedict + :let adict['a'] = 11 + :echo onedict['a'] + 11 + +Two Dictionaries compare equal if all the key-value pairs compare equal. For +more info see |list-identity|. + + +Dictionary modification ~ + *dict-modification* +To change an already existing entry of a Dictionary, or to add a new entry, +use |:let| this way: > + :let dict[4] = "four" + :let dict['one'] = item + +Removing an entry from a Dictionary is done with |remove()| or |:unlet|. +Three ways to remove the entry with key "aaa" from dict: > + :let i = remove(dict, 'aaa') + :unlet dict.aaa + :unlet dict['aaa'] + +Merging a Dictionary with another is done with |extend()|: > + :call extend(adict, bdict) +This extends adict with all entries from bdict. Duplicate keys cause entries +in adict to be overwritten. An optional third argument can change this. +Note that the order of entries in a Dictionary is irrelevant, thus don't +expect ":echo adict" to show the items from bdict after the older entries in +adict. + +Weeding out entries from a Dictionary can be done with |filter()|: > + :call filter(dict, 'v:val =~ "x"') +This removes all entries from "dict" with a value not matching 'x'. + + +Dictionary function ~ + *Dictionary-function* *self* *E725* +When a function is defined with the "dict" attribute it can be used in a +special way with a dictionary. Example: > + :function Mylen() dict + : return len(self.data) + :endfunction + :let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")} + :echo mydict.len() + +This is like a method in object oriented programming. The entry in the +Dictionary is a |Funcref|. The local variable "self" refers to the dictionary +the function was invoked from. + +It is also possible to add a function without the "dict" attribute as a +Funcref to a Dictionary, but the "self" variable is not available then. + + *numbered-function* *anonymous-function* +To avoid the extra name for the function it can be defined and directly +assigned to a Dictionary in this way: > + :let mydict = {'data': [0, 1, 2, 3]} + :function mydict.len() dict + : return len(self.data) + :endfunction + :echo mydict.len() + +The function will then get a number and the value of dict.len is a |Funcref| +that references this function. The function can only be used through a +|Funcref|. It will automatically be deleted when there is no |Funcref| +remaining that refers to it. + +It is not necessary to use the "dict" attribute for a numbered function. + + +Functions for Dictionaries ~ + *E715* +Functions that can be used with a Dictionary: > + :if has_key(dict, 'foo') " TRUE if dict has entry with key "foo" + :if empty(dict) " TRUE if dict is empty + :let l = len(dict) " number of items in dict + :let big = max(dict) " maximum value in dict + :let small = min(dict) " minimum value in dict + :let xs = count(dict, 'x') " count nr of times 'x' appears in dict + :let s = string(dict) " String representation of dict + :call map(dict, '">> " . v:val') " prepend ">> " to each item + + +1.5 変数について補足 ~ + *more-variables* 変数や式の結果の型を知りたいのならば、関数|type()|を使う。 @@ -108,7 +582,10 @@ MY_VAR_6 viminfoファイル etc. 上記の各式は大小文字の区別を、?を付加すると行 わず、#を付加すると行う -|expr5| expr6 + expr6 .. 足し算 + expr5 is expr5 同一の |List| のインスタンス + expr5 isnot expr5 異なる |List| のインスタンス + +|expr5| expr6 + expr6 .. 足し算またはリストの連結 expr6 - expr6 .. 引き算 expr6 . expr6 .. 文字列の連結 @@ -119,13 +596,17 @@ MY_VAR_6 viminfoファイル |expr7| ! expr7 論理否定 - expr7 単項のマイナス(訳注:-1等) + expr7 単項のプラス - expr8 -|expr8| expr9[expr1] 文字列内でのインデックス +|expr8| expr8[expr1] 文字列のバイト、またはリストの要素 + expr8[expr1 : expr1] 文字列の部分文字列、またはリストの部分リスト + expr8.name 辞書 |Dictionary| の要素 + expr8(expr1, ...) |Funcref| 変数による関数呼び出し |expr9| number 数定数 - "string" 文字列定数 - 'string' リテラル文字列定数 + "string" 文字列定数。バックスラッシュは特別な意味を持つ + 'string' リテラル文字列定数。'を含めるには2重にする + [expr1, ...] リスト |List| + {expr1: expr1, ...} 辞書 |Dictionary| &option オプション変数 (expr1) 式の入れ子 variable 内部変数 @@ -165,6 +646,9 @@ expr2 ? expr1 : expr1 :\ ? "last" :\ : lnum +':'の前には必ずスペースを入れること。そうでないと"a:1"のような変数の使用と間違 +えてしまう可能性がある。 + expr2 and expr3 *expr2* *expr3* --------------- @@ -215,6 +699,7 @@ expr5 {cmp} expr5 *expr-<#* *expr-<=#* *expr-=~#* *expr-!~#* *expr-==?* *expr-!=?* *expr->?* *expr->=?* *expr-<?* *expr-<=?* *expr-=~?* *expr-!~?* + *expr-is* 'ignorecase'次第 大小文字考慮 大小文字無視 ~ 等しい == ==# ==? 等しくない != !=# !=? @@ -224,12 +709,35 @@ expr5 {cmp} expr5 より小さいか等しい <= <=# <=? 正規表現マッチ =~ =~# =~? 正規表現非マッチ !~ !~# !~? +同一のインスタンス is +異なるインスタンス isnot Examples: "abc" ==# "Abc" 0と評価される "abc" ==? "Abc" 1と評価される "abc" == "Abc" 'ignorecase'が設定されていれば1と、でなければ0と評価 + *E691* *E692* +A |List| can only be compared with a |List| and only "equal", "not equal" and +"is" can be used. This compares the values of the list, recursively. +Ignoring case means case is ignored when comparing item values. + + *E735* *E736* +A |Dictionary| can only be compared with a |Dictionary| and only "equal", "not +equal" and "is" can be used. This compares the key/values of the |Dictionary| +recursively. Ignoring case means case is ignored when comparing item values. + + *E693* *E694* +A |Funcref| can only be compared with a |Funcref| and only "equal" and "not +equal" can be used. Case is never ignored. + +When using "is" or "isnot" with a |List| this checks if the expressions are +referring to the same |List| instance. A copy of a |List| is different from +the original |List|. When using "is" without a |List| it is equivalent to +using "equal", using "isnot" equivalent to using "not equal". Except that a +different type means the values are different. "4 == '4'" is true, "4 is '4'" +is false. + 文字列と数値を比較した場合、文字列が数値に変換され、数値として比較される。これ は"0 == 'x'"が、'x'が数値としては0であることから、真となることを意味する。 @@ -238,10 +746,12 @@ Examples: い。 '#'を付けた演算子を使うか、省略形かつ'ignorecase'が設定されていない場合、比較 -はstrcmp()で行なわれる。 +はstrcmp()で行なわれる。大文字・小文字は区別される。 '?'を付けた演算子を使うか、省略形かつ'ignorecase'が設定されている場合、比較は -stricmp()で行なわれる。 +stricmp()で行なわれる。大文字・小文字は区別されない。 + +'smartcase' は適用されない。 "=~"と"!~"演算子は右側の引数を正規表現のパターンとして、左側の引数に対してマッ チを試みる。正規表現のパターンに関しては|pattern|を参照。このマッチは'magic'が @@ -258,13 +768,16 @@ stricmp()で行なわれる。 expr5 and expr6 *expr5* *expr6* --------------- -expr6 + expr6 .. 足し算 *expr-+* -expr6 - expr6 .. 引き算 *expr--* -expr6 . expr6 .. 文字列の連結 *expr-.* +expr6 + expr6 .. 足し算、またはリストの連結 *expr-+* +expr6 - expr6 .. 引き算 *expr--* +expr6 . expr6 .. 文字列の連結 *expr-.* -expr7 * expr7 .. 掛け算 *expr-star* -expr7 / expr7 .. 割り算 *expr-/* -expr7 % expr7 .. 剰余(割った余り) *expr-%* +リストに対しては"+"のみ可能で、expr6は両方ともリストでなければならない。結果は +2つのリストを連結した新しいリスト。 + +expr7 * expr7 .. 掛け算 *expr-star* +expr7 / expr7 .. 割り算 *expr-/* +expr7 % expr7 .. 剰余(割った余り) *expr-%* "."を除く全ての演算子は自動的に文字列を数値に変換する。 @@ -275,6 +788,8 @@ expr7 % expr7 .. 剰余(割った余り) *expr-%* '/'の右辺(除数)が0の場合、結果は0x7ffffffになる。 '%'の右辺(法)が0の場合、結果は0になる。 +これらは全て|Funcref|には適用できない。 + expr7 *expr7* ----- @@ -296,18 +811,89 @@ expr7 *expr7* expr8 *expr8* ----- -expr9[expr1] 文字列内でのインデックス *expr-[]* *E111* +expr8[expr1] 文字列またはリストの要素 *expr-[]* *E111* -これの結果は文字列expr9のexpr1番目の単一の文字からなる文字列である。expr9は文 -字列、expr1は数である。ただしマルチバイトエンコーディングの文字列については、 -単なるバイトコードであることに注意。 +expr8が数値か文字列ならば、これの結果は文字列expr8のexpr1番目の単一のバイトか +らなる文字列である。expr8は文字列、expr1は数である。ただしマルチバイトエンコー +ディングの文字列については、単なるバイトコードであることに注意。 インデックスが0の場合、先頭のキャラクタが得られることに注意。これはC言語のよう に働く。注意:カラム番号は1から始まる。例えばカーソルの下の文字を得るためには、 次のようにする必要がある: > - :let c = getline(line("."))[col(".") - 1] + :let c = getline(".")[col(".") - 1] + +文字列の長さよりも大きなインデックスが指定された場合、結果は空文字列になる。負 +数のインデックスを指定すると、結果は常に空文字列になる(後方互換性のため)。 +最後のバイトを得るには[-1:]を使うこと。 + +If expr8 is a |List| then it results the item at index expr1. See |list-index| +for possible index values. If the index is out of range this results in an +error. Example: > + :let item = mylist[-1] " get last item + +Generally, if a |List| index is equal to or higher than the length of the +|List|, or more negative than the length of the |List|, this results in an +error. + + +expr8[expr1a : expr1b] substring or sublist *expr-[:]* + +If expr8 is a Number or String this results in the substring with the bytes +from expr1a to and including expr1b. expr8 is used as a String, expr1a and +expr1b are used as a Number. Note that this doesn't recognize multi-byte +encodings. + +If expr1a is omitted zero is used. If expr1b is omitted the length of the +string minus one is used. + +A negative number can be used to measure from the end of the string. -1 is +the last character, -2 the last but one, etc. + +If an index goes out of range for the string characters are omitted. If +expr1b is smaller than expr1a the result is an empty string. + +Examples: > + :let c = name[-1:] " last byte of a string + :let c = name[-2:-2] " last but one byte of a string + :let s = line(".")[4:] " from the fifth byte to the end + :let s = s[:-3] " remove last two bytes + +If expr8 is a |List| this results in a new |List| with the items indicated by +the indexes expr1a and expr1b. This works like with a String, as explained +just above, except that indexes out of range cause an error. Examples: > + :let l = mylist[:3] " first four items + :let l = mylist[4:4] " List with one item + :let l = mylist[:] " shallow copy of a List + +Using expr8[expr1] or expr8[expr1a : expr1b] on a |Funcref| results in an +error. + + +expr8.name entry in a |Dictionary| *expr-entry* + +If expr8 is a |Dictionary| and it is followed by a dot, then the following +name will be used as a key in the |Dictionary|. This is just like: +expr8[name]. + +The name must consist of alphanumeric characters, just like a variable name, +but it may start with a number. Curly braces cannot be used. + +There must not be white space before or after the dot. + +Examples: > + :let dict = {"one": 1, 2: "two"} + :echo dict.one + :echo dict .2 + +Note that the dot is also used for String concatenation. To avoid confusion +always put spaces around the dot for String concatenation. + + +expr8(expr1, ...) |Funcref| function call + +When expr8 is a |Funcref| type variable, invoke the function it refers to. + -文字列の長さよりも大きなインデックスが指定された場合、結果は空文字列になる。 *expr9* 数 @@ -344,18 +930,27 @@ number 数定数 *expr-number* \" ダブルクォート \<xxx> "xxx"というなの特別キー。 例 "\<C-W>" は CTRL-W. +Note that "\xff" is stored as the byte 255, which may be invalid in some +encodings. Use "\u00ff" to store character 255 according to the current value +of 'encoding'. + Note "\000"と"\x00"は強制的に文字列の終端として扱われる。 リテラル文字列 *literal-string* *E115* --------------- -'string' リテラル文字列定数 *expr-'* +'string' 文字列定数 *expr-'* Note シングルクォートが使われていることに注意。 この文字列は文字通りに扱われる。バックスラッシュは取り除かれないし、また特別な -意味を持ったりもしない。リテラル文字列中にはシングルクォートを含む事ができな -い。含む必要がある場合は普通の文字列(ダブルクォート)を使用すること。 +意味を持ったりもしない。唯一の例外は、2つのシングルクォートで1つのシングルクォ +ートになることである。 + +Single quoted strings are useful for patterns, so that backslashes do not need +to be doubled. These two commands are equivalent: > + if a =~ "\\s*" + if a =~ '\s*' オプション *expr-option* *E112* *E113* @@ -373,14 +968,16 @@ Note シングルクォートが使われていることに注意。 は、グローバル変数が利用される。 -レジスタ *expr-register* +レジスタ *expr-register* *@r* -------- @r レジスタ'r'の値 結果は、名前付けられたレジスタの内容が単一の文字列として与えられる。必要なとこ -ろには改行文字が挿入されている。無名レジスタの内容を取得するためには@@を使う。 -'='レジスタはここには使えない。どのようなレジスタがあるのかは、|registers|を参 -照。 +ろには改行文字が挿入されている。無名レジスタの内容を取得するためには@"か@@を使 +う。どのようなレジスタがあるのかは、|registers|を参照。 + +When using the '=' register you get the expression itself, not what it +evaluates to. Use |eval()| to evaluate it. 入れ子 *expr-nesting* *E110* @@ -411,7 +1008,7 @@ variable 内部変数 以下の|internal-variables|を参照。 -関数呼出 *expr-function* *E116* *E117* *E118* *E119* *E120* +関数呼出 *expr-function* *E116* *E118* *E119* *E120* ------------- function(expr1, ...) 関数呼出 以下の|functions|を参照。 @@ -424,9 +1021,9 @@ function(expr1, ...) 関数呼出 字で始めることはできない。波括弧を使うこともできる。 詳細は|curly-braces-names|を参照。 -内部変数は":let"コマンドで作成される|:let|。":unlet"コマンドで内部変数を破棄す -ることができる|:unlet|。内部変数に使われてない名前か、既に破棄された内部変数を -使うとエラーとなる。 +内部変数は":let"コマンドで作成される|:let|。":unlet"コマンドで明示的に内部変数 +を破棄することができる|:unlet|。内部変数に使われてない名前か、既に破棄された内 +部変数を使うとエラーとなる。 変数には幾つもの名前空間が存在する。実際にどれが利用されるかは、どのような前置 子が使われたかで決まる: @@ -434,12 +1031,19 @@ function(expr1, ...) 関数呼出 (無し) 関数の中では関数ローカル、それ以外ではグローバル |buffer-variable| b: 現在のバッファにローカル |window-variable| w: 現在のウィンドウにローカル +|tabpage-variable| t: 現在のタブページにローカル |global-variable| g: グローバル |local-variable| l: 関数にローカル |script-variable| s: |:source|されたVimスクリプトにローカル |function-argument| a: 関数の引数(関数内のみ) |vim-variable| v: グローバル、Vimがあらかじめ定義 +The scope name by itself can be used as a |Dictionary|. For example, to +delete all script-local variables: > + :for k in keys(s:) + : unlet s:[k] + :endfor +< *buffer-variable* *b:var* "b:"で始まる変数名は、カレントバッファに局所的な変数を意味する。このように一つ 一つのバッファ毎に、変数"b:foo"を別々に使用することができる。この種の変数は @@ -461,6 +1065,11 @@ b:changedtick 現在のバッファに対する総変更の回数。変更を行 "w:"で始まる変数名は、カレントウィンドウに局所的な変数を意味する。これはウィン ドウを閉じるときに破棄される。 + *tabpage-variable* *t:var* +A variable name that is preceded with "t:" is local to the current tab page, +It is deleted when the tab page is closed. {not available when compiled +without the +windows feature} + *global-variable* *g:var* 関数の中からグローバル変数へアクセスするには、"g:"を付けた名前を使用する。これ が省略された場合は関数ローカルな変数にアクセスする。ただし"g:"自体は、関数の外 @@ -468,7 +1077,11 @@ b:changedtick 現在のバッファに対する総変更の回数。変更を行 *local-variable* *l:var* 関数の中からそのローカル変数にアクセスするには何も前置しなければ良い。しかし明 -示的に"l:"を付けることも可能。 +示的に"l:"を付けることも可能。However, without prepending "l:" +you may run into reserved variable names. For example "count". By itself it +refers to "v:count". Using "l:count" you can have a local variable with the +same name. + *script-variable* *s:var* In a Vim script variables starting with "s:" can be used. They cannot be @@ -487,7 +1100,7 @@ Thus not in: - etc. script variables can be used to avoid conflicts with global variable names. -Take this example: +Take this example: > let s:counter = 0 function MyCounter() @@ -547,6 +1160,35 @@ variables for each buffer. Use local buffer variables instead |b:var|. Vimの定義済変数: *vim-variable* *v:var* + *v:beval_col* *beval_col-variable* +v:beval_col The number of the column, over which the mouse pointer is. + This is the byte index in the |v:beval_lnum| line. + Only valid while evaluating the 'balloonexpr' option. + + *v:beval_bufnr* *beval_bufnr-variable* +v:beval_bufnr The number of the buffer, over which the mouse pointer is. Only + valid while evaluating the 'balloonexpr' option. + + *v:beval_lnum* *beval_lnum-variable* +v:beval_lnum The number of the line, over which the mouse pointer is. Only + valid while evaluating the 'balloonexpr' option. + + *v:beval_text* *beval_text-variable* +v:beval_text The text under or after the mouse pointer. Usually a word as + it is useful for debugging a C program. 'iskeyword' applies, + but a dot and "->" before the position is included. When on a + ']' the text before it is used, including the matching '[' and + word before it. When on a Visual area within one line the + highlighted text is used. + Only valid while evaluating the 'balloonexpr' option. + + *v:beval_winnr* *beval_winnr-variable* +v:beval_winnr The number of the window, over which the mouse pointer is. Only + valid while evaluating the 'balloonexpr' option. + + *v:char* *char-variable* +v:char Argument for evaluating 'formatexpr'. + *v:charconvert_from* *charconvert_from-variable* v:charconvert_from The name of the character encoding of a file to be converted. @@ -582,6 +1224,7 @@ v:count 最後に実行されたノーマルモードコマンドに渡され :map _x :<C-U>echo "the count is " . count<CR> < Note: <C-U>は、カウントの後に':'をタイプした時に示される、行範 囲指定を削除するために必要となる。 + オプション'formatexpr'を評価するためにも使われる。 また"count"は、以前の版のVimとの互換性の為に動作する。 *v:count1* *count1-variable* @@ -625,6 +1268,32 @@ v:exception The value of the exception most recently caught and not :endtry < Output: "caught oops". + *v:fcs_reason* *fcs_reason-variable* +v:fcs_reason The reason why the |FileChangedShell| event was triggered. + Can be used in an autocommand to decide what to do and/or what + to set v:fcs_choice to. Possible values: + deleted file no longer exists + conflict file contents, mode or timestamp was + changed and buffer is modified + changed file contents has changed + mode mode of file changed + time only file timestamp changed + + *v:fcs_choice* *fcs_choice-variable* +v:fcs_choice What should happen after a |FileChangedShell| event was + triggered. Can be used in an autocommand to tell Vim what to + do with the affected buffer: + reload Reload the buffer (does not work if + the file was deleted). + ask Ask the user what to do, as if there + was no autocommand. Except that when + only the timestamp changed nothing + will happen. + <empty> Nothing, the autocommand should do + everything that needs to be done. + The default is empty. If another (invalid) value is used then + Vim behaves like it is empty, there is no warning message. + *v:fname_in* *fname_in-variable* v:fname_in The name of the input file. Only valid while evaluating: option used for ~ @@ -632,6 +1301,7 @@ v:fname_in The name of the input file. Only valid while evaluating: 'diffexpr' original file 'patchexpr' original file 'printexpr' file to be printed + And set to the swap file name for |SwapExists|. *v:fname_out* *fname_out-variable* v:fname_out The name of the output file. Only valid while @@ -656,19 +1326,31 @@ v:fname_diff The name of the diff (patch) file. Only valid while *v:folddashes* *folddashes-variable* v:folddashes Used for 'foldtext': dashes representing foldlevel of a closed fold. - Read-only. |fold-foldtext| + Read-only in the |sandbox|. |fold-foldtext| *v:foldlevel* *foldlevel-variable* v:foldlevel Used for 'foldtext': foldlevel of closed fold. - Read-only. |fold-foldtext| + Read-only in the |sandbox|. |fold-foldtext| *v:foldend* *foldend-variable* v:foldend Used for 'foldtext': last line of closed fold. - Read-only. |fold-foldtext| + Read-only in the |sandbox|. |fold-foldtext| *v:foldstart* *foldstart-variable* v:foldstart Used for 'foldtext': first line of closed fold. - Read-only. |fold-foldtext| + Read-only in the |sandbox|. |fold-foldtext| + + *v:insertmode* *insertmode-variable* +v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand + events. Values: + i Insert mode + r Replace mode + v Virtual Replace mode + + *v:key* *key-variable* +v:key Key of the current item of a |Dictionary|. Only valid while + evaluating the expression used with |map()| and |filter()|. + Read-only. *v:lang* *lang-variable* v:lang The current locale setting for messages of the runtime @@ -689,9 +1371,25 @@ v:lc_time The current locale setting for time messages of the runtime command. See |multi-lang|. *v:lnum* *lnum-variable* -v:lnum Line number for the 'foldexpr' and 'indentexpr' expressions. - Only valid while one of these expressions is being evaluated. - Read-only. |fold-expr| 'indentexpr' +v:lnum Line number for the 'foldexpr' |fold-expr| and 'indentexpr' + expressions, tab page number for 'guitablabel' and + 'guitabtooltip'. Only valid while one of these expressions is + being evaluated. Read-only when in the |sandbox|. + + *v:mouse_win* *mouse_win-variable* +v:mouse_win Window number for a mouse click obtained with |getchar()|. + First window has number 1, like with |winnr()|. The value is + zero when there was no mouse button click. + + *v:mouse_lnum* *mouse_lnum-variable* +v:mouse_lnum Line number for a mouse click obtained with |getchar()|. + This is the text line number, not the screen line number. The + value is zero when there was no mouse button click. + + *v:mouse_col* *mouse_col-variable* +v:mouse_col Column number for a mouse click obtained with |getchar()|. + This is the screen column number, like with |virtcol()|. The + value is zero when there was no mouse button click. *v:prevcount* *prevcount-variable* v:prevcount The count given for the last but one Normal mode command. @@ -700,6 +1398,10 @@ v:prevcount The count given for the last but one Normal mode command. :vmap % <Esc>:call MyFilter(v:prevcount)<CR> < Read-only. + *v:profiling* *profiling-variable* +v:profiling Normally zero. Set to one after using ":profile start". + See |profiling|. + *v:progname* *progname-variable* v:progname Contains the name (with path removed) with which Vim was invoked. Allows you to do special initialisations for "view", @@ -710,6 +1412,14 @@ v:progname Contains the name (with path removed) with which Vim was v:register The name of the register supplied to the last normal mode command. Empty if none were supplied. |getreg()| |setreg()| + *v:scrollstart* *scrollstart-variable* +v:scrollstart String describing the script or function that caused the + screen to scroll up. It's only set when it is empty, thus the + first reason is remembered. It is set to "Unknown" for a + typed command. + This can be used to find out why your script causes the + hit-enter prompt. + *v:servername* *servername-variable* v:servername The resulting registered |x11-clientserver| name if any. Read-only. @@ -731,6 +1441,30 @@ v:shell_error 最後に実行したシェルコマンドの結果。シェルコ v:statusmsg 最後に表示されたステータスメッセージ。この変数はセットすること が許されている。 + *v:swapname* *swapname-variable* +v:swapname Only valid when executing |SwapExists| autocommands: Name of + the swap file found. Read-only. + + *v:swapchoice* *swapchoice-variable* +v:swapchoice |SwapExists| autocommands can set this to the selected choice + for handling an existing swap file: + 'o' Open read-only + 'e' Edit anyway + 'r' Recover + 'd' Delete swapfile + 'q' Quit + 'a' Abort + The value should be a single-character string. An empty value + results in the user being asked, as would happen when there is + no SwapExists autocommand. The default is empty. + + *v:swapcommand* *swapcommand-variable* +v:swapcommand Normal mode command to be executed after a file has been + opened. Can be used for a |SwapExists| autocommand to have + another Vim open the file and jump to the right place. For + example, when jumping to a tag the value is ":tag tagname\r". + For ":edit +cmd file" the value is ":cmd\r". + *v:termresponse* *termresponse-variable* v:termresponse The escape sequence returned by the terminal for the |t_RV| termcap entry. It is set when Vim receives an escape sequence @@ -764,6 +1498,11 @@ v:throwpoint The point where the exception most recently caught and not :endtry < Output: "Exception from test.vim, line 2" + *v:val* *val-variable* +v:val Value of the current item of a |List| or |Dictionary|. Only + valid while evaluating the expression used with |map()| and + |filter()|. Read-only. + *v:version* *version-variable* v:version Vimのバージョン番号。メジャーバージョン番号は100倍され、マイ ナーバージョン番号と足されている。Version 5.0は500。Version @@ -785,35 +1524,103 @@ v:warningmsg 最後に表示された警告メッセージ。この変数はセ 使用法 結果 説明 ~ +add( {list}, {item}) List append {item} to |List| {list} append( {lnum}, {string}) 数値 {string}を{lnum}行目に付け加える +append( {lnum}, {list}) Number append lines {list} below line {lnum} argc() 数値 引数内のファイルの数 argv( {nr}) 文字列 引数の第{nr}番目 +argv( ) List the argument list browse( {save}, {title}, {initdir}, {default}) 文字列 ファイル選択ダイアログを表示 +browsedir( {title}, {initdir}) String put up a directory requester bufexists( {expr}) 数値 バッファ{expr}が存在すればTRUE bufloaded( {expr}) 数値 バッファ{expr}がロード済みならTRUE bufname( {expr}) 文字列 バッファ{expr}の名前 bufnr( {expr}) 数値 バッファ{expr}の番号 bufwinnr( {nr}) 数値 バッファ{nr}のウィンドウ番号 byte2line( {byte}) 数値 {byte}番目のバイトの行番号 +byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr} +call( {func}, {arglist} [, {dict}]) + any call {func} with arguments {arglist} +changenr() Number current change number char2nr( {expr}) 数値 {expr}の先頭文字のASCIIコード col( {expr}) 数値 カーソルかマークのカラム番号nr +complete({startcol}, {matches}) String set Insert mode completion +complete_add( {expr}) Number add completion match +complete_check() Number check for key typed during completion confirm( {msg}, {choices} [, {default} [, {type}]]) 数値 ユーザへの選択肢と番号 +copy( {expr}) any make a shallow copy of {expr} +count( {list}, {expr} [, {start} [, {ic}]]) + Number count how many {expr} are in {list} +cscope_connection( [{num} , {dbpath} [, {prepend}]]) + Number checks existence of cscope connection +cursor( {lnum}, {col} [, {coladd}]) + Number move cursor to {lnum}, {col}, {coladd} +cursor( {list}) Number move cursor to position in {list} +deepcopy( {expr}) any make a full copy of {expr} delete( {fname}) 数値 ファイル{fname}を消す did_filetype() 数値 FileTypeのautocommandが実行されたか? +diff_filler( {lnum}) Number diff filler lines about {lnum} +diff_hlID( {lnum}, {col}) Number diff highlighting at {lnum}/{col} +empty( {expr}) Number TRUE if {expr} is empty escape( {string}, {chars}) 文字列 {string}内の{chars}を'\'でエスケープ +eval( {string}) any evaluate {string} into its value exists( {var}) 数値 変数{var}が存在したらTRUE +extend({expr1}, {expr2} [, {expr3}]) + List/Dict insert items of {expr2} into {expr1} expand( {expr}) 文字列 {expr}内の特別なキーワードを展開 +feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer filereadable( {file}) 数値 {file}が読みこみ可能ならTRUE +filewritable( {file}) Number TRUE if {file} is a writable file +filter( {expr}, {string}) List/Dict remove items from {expr} where + {string} is 0 +finddir( {name}[, {path}[, {count}]]) + String find directory {name} in {path} +findfile( {name}[, {path}[, {count}]]) + String find file {name} in {path} fnamemodify( {fname}, {mods}) 文字列 ファイル名を変更 +foldclosed( {lnum}) Number first line of fold at {lnum} if closed +foldclosedend( {lnum}) Number last line of fold at {lnum} if closed +foldlevel( {lnum}) Number fold level at {lnum} +foldtext( ) String line displayed for closed fold +foldtextresult( {lnum}) String text for closed fold at {lnum} +foreground( ) Number bring the Vim window to the foreground +function( {name}) Funcref reference to function {name} +garbagecollect() none free memory, breaking cyclic references +get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def} +get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def} +getbufline( {expr}, {lnum} [, {end}]) + List lines {lnum} to {end} of buffer {expr} +getbufvar( {expr}, {varname}) any variable {varname} in buffer {expr} +getcmdline() String return the current command-line +getcmdpos() Number return cursor position in command-line +getcmdtype() String return the current command-line type getcwd() 文字列 現在の作業ディレクトリ +getfperm( {fname}) String file permissions of file {fname} +getfsize( {fname}) Number size in bytes of file {fname} +getfontname( [{name}]) String name of font being used getftime( {fname}) 数値 ファイルの最終更新時間 +getftype( {fname}) String description of type of file {fname} getline( {lnum}) 文字列 現在のバッファから行の内容を取得 +getline( {lnum}, {end}) List lines {lnum} to {end} of current buffer +getloclist({nr}) List list of location list items +getpos( {expr}) List position of cursor, mark, etc. +getqflist() List list of quickfix items +getreg( [{regname} [, 1]]) String contents of register +getregtype( [{regname}]) String type of register +gettabwinvar( {tabnr}, {winnr}, {name}) + any {name} in {winnr} in tab page {tabnr} getwinposx() 数値 GUI vim windowのX座標 getwinposy() 数値 GUI vim windowのY座標 +getwinvar( {nr}, {varname}) any variable {varname} in window {nr} glob( {expr} [, {flag}]) 文字列 {expr}内のfile wildcardを展開 +globpath( {path}, {expr}) String do glob({expr}) for all dirs in {path} has( {feature}) 数値 機能{feature}がサポートならばTRUE +has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} +haslocaldir() Number TRUE if current window executed |:lcd| +hasmapto( {what} [, {mode} [, {abbr}]]) + Number TRUE if mapping to {what} exists histadd( {history},{item}) 文字列 ヒストリに追加 histdel( {history} [, {item}]) 文字列 ヒストリからitemを削除 histget( {history} [, {index}]) 文字列 ヒストリから{index}アイテムを取得 @@ -821,48 +1628,180 @@ histnr( {history}) 数値 ヒストリの数 hlexists( {name}) 数値 highligth group {name}が存在したらTRUE hlID( {name}) 数値 highlight group {name}のID hostname() 文字列 vimが動作しているマシンの名前 -input( {prompt}) 文字列 ユーザからの入力を取得 +iconv( {expr}, {from}, {to}) String convert encoding of {expr} +indent( {lnum}) Number indent of line {lnum} +index( {list}, {expr} [, {start} [, {ic}]]) + Number index in {list} where {expr} appears +input( {prompt} [, {text} [, {completion}]]) + 文字列 ユーザからの入力を取得 +inputdialog( {p} [, {t} [, {c}]]) String like input() but in a GUI dialog +inputlist( {textlist}) Number let the user pick from a choice list +inputrestore() Number restore typeahead +inputsave() Number save and clear typeahead +inputsecret( {prompt} [, {text}]) String like input() but hiding the text +insert( {list}, {item} [, {idx}]) List insert {item} in {list} [before {idx}] isdirectory( {directory}) 数値 {directory}がディレクトリならばTRUE +islocked( {expr}) Number TRUE if {expr} is locked +items( {dict}) List key-value pairs in {dict} +join( {list} [, {sep}]) String join {list} items into one String +keys( {dict}) List keys in {dict} +len( {expr}) Number the length of {expr} libcall( {lib}, {func}, {arg} 文字列 ライブラリ{lib}の関数{func}をコール +libcallnr( {lib}, {func}, {arg}) Number idem, but return a Number line( {expr}) 数値 行番号の取得 line2byte( {lnum}) 数値 行{lnum}のバイトカウント +lispindent( {lnum}) Number Lisp indent for line {lnum} localtime() 数値 現在時刻 -maparg( {name}[, {mode}]) 文字列 rhs of mapping {name} in mode {mode} -mapcheck( {name}[, {mode}]) 文字列 check for mappings matching {name} -match( {expr}, {pat}) 数値 {expr}内で{pat}のマッチした先頭位置 -matchend( {expr}, {pat}) 数値 {expr}内で{pat}のマッチした末尾位置 -matchstr( {expr}, {pat}) 文字列 {expr}で{pat}がマッチした文字列 +maparg( {name}[, {mode} [, {abbr}]]) + String rhs of mapping {name} in mode {mode} +mapcheck( {name}[, {mode} [, {abbr}]]) + String check for mappings matching {name} +match( {expr}, {pat}[, {start}[, {count}]]) + Number position where {pat} matches in {expr} +matcharg( {nr}) List arguments of |:match| +matchend( {expr}, {pat}[, {start}[, {count}]]) + Number position where {pat} ends in {expr} +matchlist( {expr}, {pat}[, {start}[, {count}]]) + List match and submatches of {pat} in {expr} +matchstr( {expr}, {pat}[, {start}[, {count}]]) + String {count}'th match of {pat} in {expr} +max({list}) Number maximum value of items in {list} +min({list}) Number minimum value of items in {list} +mkdir({name} [, {path} [, {prot}]]) + Number create directory {name} +mode() String current editing mode +nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} nr2char( {expr}) 文字列 ASCIIコード{expr}で示されるキャラクタ +pathshorten( {expr}) String shorten directory names in a path +prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} +printf( {fmt}, {expr1}...) String format text +pumvisible() Number whether popup menu is visible +range( {expr} [, {max} [, {stride}]]) + List items from {expr} to {max} +readfile({fname} [, {binary} [, {max}]]) + List get list of lines from file {fname} +reltime( [{start} [, {end}]]) List get time value +reltimestr( {time}) String turn time value into a String +remote_expr( {server}, {string} [, {idvar}]) + String send expression +remote_foreground( {server}) Number bring Vim server to the foreground +remote_peek( {serverid} [, {retvar}]) + Number check for reply string +remote_read( {serverid}) String read reply string +remote_send( {server}, {string} [, {idvar}]) + String send key sequence +remove( {list}, {idx} [, {end}]) any remove items {idx}-{end} from {list} +remove( {dict}, {key}) any remove entry {key} from {dict} rename({from}, {to}) 数値 {file}から{to}へファイル名変更 +repeat( {expr}, {count}) String repeat {expr} {count} times +resolve( {filename}) String get filename a shortcut points to +reverse( {list}) List reverse {list} in-place +search( {pattern} [, {flags}]) Number search for {pattern} +searchdecl({name} [, {global} [, {thisblock}]]) + Number search for variable declaration +searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) + Number search for other end of start/end pair +searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) + List search for other end of start/end pair +searchpos( {pattern} [, {flags} [, {stopline}]]) + List search for {pattern} +server2client( {clientid}, {string}) + Number send reply string +serverlist() String get a list of available servers +setbufvar( {expr}, {varname}, {val}) set {varname} in buffer {expr} to {val} +setcmdpos( {pos}) Number set cursor position in command-line setline( {lnum}, {line}) 数値 行{lnum}に{line}(文字列)をセット +setloclist( {nr}, {list}[, {action}]) + Number modify location list using {list} +setpos( {expr}, {list}) none set the {expr} position to {list} +setqflist( {list}[, {action}]) Number modify quickfix list using {list} +setreg( {n}, {v}[, {opt}]) Number set register to value and type +settabwinvar( {tabnr}, {winnr}, {varname}, {val}) set {varname} in window + {winnr} in tab page {tabnr} to {val} +setwinvar( {nr}, {varname}, {val}) set {varname} in window {nr} to {val} +shellescape( {string}) String escape {string} for use as shell + command argument +simplify( {filename}) String simplify filename as much as possible +sort( {list} [, {func}]) List sort {list}, using {func} to compare +soundfold( {word}) String sound-fold {word} +spellbadword() String badly spelled word at cursor +spellsuggest( {word} [, {max} [, {capital}]]) + List spelling suggestions +split( {expr} [, {pat} [, {keepempty}]]) + List make |List| from {pat} separated {expr} +str2nr( {expr} [, {base}]) Number convert string to number strftime( {format}[, {time}]) 文字列 指定されたフォーマットでの時刻 +stridx( {haystack}, {needle}[, {start}]) + Number index of {needle} in {haystack} +string( {expr}) String String representation of {expr} value strlen( {expr}) 数値 文字列{expr}の長さ -strpart( {src}, {start}, {len}) 文字列 {src}内{start}から長さ{len}の部分 +strpart( {src}, {start}[, {len}]) + 文字列 {src}内{start}から長さ{len}の部分 +strridx( {haystack}, {needle} [, {start}]) + Number last index of {needle} in {haystack} strtrans( {expr}) 文字列 文字列を表示可能に変更 +submatch( {nr}) String specific match in ":substitute" substitute( {expr}, {pat}, {sub}, {flags}) 文字列 {expr}の{pat}を{sub}に置換え synID( {line}, {col}, {trans}) 数値 {line}と{col}のsyntax IDを取得 synIDattr( {synID}, {what} [, {mode}]) 文字列 syntax ID{synID}の属性{what}を取得 synIDtrans( {synID}) 数値 {synID}の翻訳されたsyntax ID -system( {expr}) 文字列 シェルコマンド{expr}の出力結果 +system( {expr} [, {input}]) 文字列 シェルコマンド{expr}の出力結果 +tabpagebuflist( [{arg}]) List list of buffer numbers in tab page +tabpagenr( [{arg}]) Number number of current or last tab page +tabpagewinnr( {tabarg}[, {arg}]) + Number number of current window in tab page +taglist( {expr}) List list of tags matching {expr} +tagfiles() List tags files used tempname() 文字列 テンポラリファイルの名前 +tolower( {expr}) String the String {expr} switched to lowercase +toupper( {expr}) String the String {expr} switched to uppercase +tr( {src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr} + to chars in {tostr} +type( {name}) Number type of variable {name} +values( {dict}) List values in {dict} virtcol( {expr}) 数値 カーソルのスクリーンカラム位置 -visualmode() 文字列 最後に使われたVisualモード +visualmode( [expr]) 文字列 最後に使われたVisualモード winbufnr( {nr}) 数値 ウィンドウ{nr}のバッファ番号 +wincol() Number window column of the cursor winheight( {nr}) 数値 ウィンドウ{nr}の高さ +winline() Number window line of the cursor winnr() 数値 現在のウィンドウの番号 - -append({lnum}, {string} *append()* - 現在のバッファの{lnum}行の後に、テキスト{string}を付加する。 - バッファの先頭に行を追加する時は、{lnum}に0を使用する。失敗し - た場合、戻り値は1となる({lnum}が範囲外)。成功ならば0となる。 +winrestcmd() String returns command to restore window sizes +winrestview({dict}) None restore view of current window +winsaveview() Dict save view of current window +winwidth( {nr}) Number width of window {nr} +writefile({list}, {fname} [, {binary}]) + Number write list of lines to file {fname} + + +add({list}, {expr}) *add()* + Append the item {expr} to |List| {list}. Returns the + resulting |List|. Examples: > + :let alist = add([1, 2, 3], item) + :call add(mylist, "woodstock") +< Note that when {expr} is a |List| it is appended as a single + item. Use |extend()| to concatenate |Lists|. + Use |insert()| to add an item at another position. + + +append({lnum}, {expr}) *append()* + When {expr} is a |List|: Append each item of the |List| as a + text line below line {lnum} in the current buffer. + Otherwise append {expr} as one text line below line {lnum} in + the current buffer. + {lnum} can be zero to insert a line before the first one. + Returns 1 for failure ({lnum} out of range or out of memory), + 0 for success. Example: > + :let failed = append(line('$'), "# THE END") + :let failed = append(0, ["Chapter 1", "the beginning"]) *argc()* argc() 結果は引数のリスト内の、ファイルの数。|arglist|を参照。 *argv()* -argv({nr}) 結果は引数リスト内の、{nr}番目のファイル。|arglist|を参照。 +argv([{nr}]) 結果は引数リスト内の、{nr}番目のファイル。|arglist|を参照。 "argv(0)"は一番最初のファイルを示す。例: > let i = 0 > while i < argc() @@ -870,6 +1809,8 @@ argv({nr}) 結果は引数リスト内の、{nr}番目のファイル。|arglist > exe 'amenu Arg.' . f . ' :e ' . f . '<CR>' > let i = i + 1 > endwhile +< Without the {nr} argument a |List| with the whole |arglist| is + returned. *browse()* browse({save}, {title}, {initdir}, {default}) @@ -883,13 +1824,36 @@ browse({save}, {title}, {initdir}, {default}) ダイアログがキャンセルされるか、何かエラーがあるか、もしくはブ ラウジングが不可能ならば、空文字列が戻ってくる。 + *browsedir()* +browsedir({title}, {initdir}) + Put up a directory requester. This only works when + "has("browse")" returns non-zero (only in some GUI versions). + On systems where a directory browser is not supported a file + browser is used. In that case: select a file in the directory + to be used. + The input fields are: + {title} title for the requester + {initdir} directory to start browsing in + When the "Cancel" button is hit, something went wrong, or + browsing is not possible, an empty string is returned. + *bufexists()* bufexists({expr}) 結果は数値で、{expr}と呼ばれるバッファが存在すれば非零となる。 + If the {expr} argument is a number, buffer numbers are used. {expr}が文字列だった場合、バッファ名に正確にマッチしなければな - らない。{expr}が数値だった場合、比較にはバッファ番号が使用され - る。裏バッファ(#)があるかどうかをテストするには、bufexists(0) - を使用する。 + らない。The name can be: + - Relative to the current directory. + - A full path. + - The name of a buffer with 'filetype' set to "nofile". + - A URL name. + Unlisted buffers will be found. + Note that help files are listed by their short name in the + output of |:buffers|, but bufexists() requires using their + long name to be able to find them. + Use "bufexists(0)" to test for the existence of an alternate + file name. + *buffer_exists()* 以前の名前: buffer_exists(). @@ -897,7 +1861,7 @@ bufexists({expr}) bufloaded({expr}) 戻り値は数値で、{expr}と呼ばれるバッファが存在しロード済み( ウィンドウに表示されているか、隠されているかは問わない)ならば - 結果は非零となる。引数{expr}はbufexists()と同じように扱われ + 結果は非零となる。引数{expr}は|bufexists()|と同じように扱われ る。 *bufname()* @@ -910,6 +1874,13 @@ bufname({expr}) マッチングは常に、'magic'をセットし'cpoptions'を空にした状態で 行なわれる。複数マッチしてしまった場合には空文字列が返される。 ""や"%"は現在のバッファを意味し、"#"は裏バッファを意味する。 + A full match is preferred, otherwise a match at the start, end + or middle of the buffer name is accepted. If you only want a + full match then put "^" at the start and "$" at the end of the + pattern. + Listed buffers are found first. If there is a single match + with a listed buffer, that one is returned. Next unlisted + buffers are searched for. {expr}が文字列のときに、それをバッファ番号として使いたいなら ば、0を足すことによって強制的に数値にすることができる: > echo bufname("3" + 0) @@ -923,11 +1894,13 @@ bufname({expr}) 以前の名前: buffer_name(). *bufnr()* -bufnr({expr}) +bufnr({expr} [, {create}]) 結果はバッファの番号。バッファ番号はコマンド":ls"で表示される ものと同様。{expr}の使い方は前述のbufname()を参照。バッファが - 存在しない場合-1が返される。bufnr("$")は最後のバッファを意味す - る: + 存在しない場合-1が返される。 Or, if the + {create} argument is present and not zero, a new, unlisted, + buffer is created and its number is returned. + bufnr("$")は最後のバッファを意味する: > :let last_buffer = bufnr("$") 結果は存在しているバッファのうちで、もっとも大きなバッファ番号 となる。 Note そのバッファ番号より小さいバッファ番号を持つ(ハ @@ -942,9 +1915,13 @@ bufnr({expr}) bufwinnr({expr}) 結果は数値で、バッファ{expr}に関連付けられた最初のウィンドウの 番号。{expr}の使い方は前述のbufname()を参照。バッファ{expr}が - 存在しないか、ウィンドウが無い場合には-1が返される。例: -> echo "A window containing buffer 1 is " . (bufwinnr(1)) + 存在しないか、ウィンドウが無い場合には-1が返される。例: > + + echo "A window containing buffer 1 is " . (bufwinnr(1)) +< The number can be used with |CTRL-W_w| and ":wincmd w" + |:wincmd|. + Only deals with the current tab page. *byte2line()* byte2line({byte}) 現在のバッファの先頭から{byte}番目のキャラクタが、何行目に含ま @@ -955,24 +1932,132 @@ byte2line({byte}) {|+byte_offset|機能を有効にしてコンパイルしなければ利用できな い} +byteidx({expr}, {nr}) *byteidx()* + Return byte index of the {nr}'th character in the string + {expr}. Use zero for the first character, it returns zero. + This function is only useful when there are multibyte + characters, otherwise the returned value is equal to {nr}. + Composing characters are counted as a separate character. + Example : > + echo matchstr(str, ".", byteidx(str, 3)) +< will display the fourth character. Another way to do the + same: > + let s = strpart(str, byteidx(str, 3)) + echo strpart(s, 0, byteidx(s, 1)) +< If there are less than {nr} characters -1 is returned. + If there are exactly {nr} characters the length of the string + is returned. + +call({func}, {arglist} [, {dict}]) *call()* *E699* + Call function {func} with the items in |List| {arglist} as + arguments. + {func} can either be a |Funcref| or the name of a function. + a:firstline and a:lastline are set to the cursor line. + Returns the return value of the called function. + {dict} is for functions with the "dict" attribute. It will be + used to set the local variable "self". |Dictionary-function| + +changenr() *changenr()* + Return the number of the most recent change. This is the same + number as what is displayed with |:undolist| and can be used + with the |:undo| command. + When a change was made it is the number of that change. After + redo it is the number of the redone change. After undo it is + one less than the number of the undone change. + *char2nr()* char2nr({expr}) {expr}の最初の文字のASCIIコードを返す。例: > char2nr(" ") returns 32 > char2nr("ABC") returns 65 +< The current 'encoding' is used. Example for "utf-8": > + char2nr("á") returns 225 + char2nr("á"[0]) returns 195 +< nr2char() does the opposite. + +cindent({lnum}) *cindent()* + Get the amount of indent for line {lnum} according the C + indenting rules, as with 'cindent'. + The indent is counted in spaces, the value of 'tabstop' is + relevant. {lnum} is used just like in |getline()|. + When {lnum} is invalid or Vim was not compiled the |+cindent| + feature, -1 is returned. + See |C-indenting|. *col()* col({expr}) 戻り値は数値で、{expr}で与えられるファイル上でのカラム番号。有 効な位置は: . 現在の位置 + $ the end of the cursor line (the result is the + number of characters in the cursor line plus one) 'x マークxの位置(マークが設定されていない場合0) + To get the line number use |line()|. To get both use + |getpos()|. + For the screen column position use |virtcol()|. Note 現在のファイルのマークしか使えないことに注意。 例: > col(".") カーソルのカラム + col("$") length of cursor line plus one > col("'t") マークtのカラム > col("'" . markname) マークmarknameのカラム 先頭のカラムは1になる。返された0はエラーを示す。 + For an uppercase mark the column may actually be in another + buffer. + For the cursor position, when 'virtualedit' is active, the + column is one higher if the cursor is after the end of the + line. This can be used to obtain the column in Insert mode: > + :imap <F2> <C-O>:let save_ve = &ve<CR> + \<C-O>:set ve=all<CR> + \<C-O>:echo col(".") . "\n" <Bar> + \let &ve = save_ve<CR> +< +complete({startcol}, {matches}) *complete()* *E785* + Set the matches for Insert mode completion. + Can only be used in Insert mode. You need to use a mapping + with CTRL-R = |i_CTRL-R|. It does not work after CTRL-O or + with an expression mapping. + {startcol} is the byte offset in the line where the completed + text start. The text up to the cursor is the original text + that will be replaced by the matches. Use col('.') for an + empty string. "col('.') - 1" will replace one character by a + match. + {matches} must be a |List|. Each |List| item is one match. + See |complete-items| for the kind of items that are possible. + Note that the after calling this function you need to avoid + inserting anything that would completion to stop. + The match can be selected with CTRL-N and CTRL-P as usual with + Insert mode completion. The popup menu will appear if + specified, see |ins-completion-menu|. + Example: > + inoremap <F5> <C-R>=ListMonths()<CR> + + func! ListMonths() + call complete(col('.'), ['January', 'February', 'March', + \ 'April', 'May', 'June', 'July', 'August', 'September', + \ 'October', 'November', 'December']) + return '' + endfunc +< This isn't very useful, but it shows how it works. Note that + an empty string is returned to avoid a zero being inserted. + +complete_add({expr}) *complete_add()* + Add {expr} to the list of matches. Only to be used by the + function specified with the 'completefunc' option. + Returns 0 for failure (empty string or out of memory), + 1 when the match was added, 2 when the match was already in + the list. + See |complete-functions| for an explanation of {expr}. It is + the same as one item in the list that 'omnifunc' would return. + +complete_check() *complete_check()* + Check for a key typed while looking for completion matches. + This is to be used when looking for matches takes some time. + Returns non-zero when searching for matches is to be aborted, + zero otherwise. + Only to be used by the function specified with the + 'completefunc' option. + *confirm()* confirm({msg}, {choices} [, {default} [, {type}]]) @@ -1019,15 +2104,140 @@ confirm({msg}, {choices} [, {default} [, {type}]]) 置しようと試みられる。水平配置がうまくマッチしない場合は、垂直 配置が使われる。幾つかのシステムでは常に水平配置が使われる。 + *copy()* +copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't + different from using {expr} directly. + When {expr} is a |List| a shallow copy is created. This means + that the original |List| can be changed without changing the + copy, and vise versa. But the items are identical, thus + changing an item changes the contents of both |Lists|. Also + see |deepcopy()|. + +count({comp}, {expr} [, {ic} [, {start}]]) *count()* + Return the number of times an item with value {expr} appears + in |List| or |Dictionary| {comp}. + If {start} is given then start with the item with this index. + {start} can only be used with a |List|. + When {ic} is given and it's non-zero then case is ignored. + + + *cscope_connection()* +cscope_connection([{num} , {dbpath} [, {prepend}]]) + Checks for the existence of a |cscope| connection. If no + parameters are specified, then the function returns: + 0, if cscope was not available (not compiled in), or + if there are no cscope connections; + 1, if there is at least one cscope connection. + + If parameters are specified, then the value of {num} + determines how existence of a cscope connection is checked: + + {num} Description of existence check + ----- ------------------------------ + 0 Same as no parameters (e.g., "cscope_connection()"). + 1 Ignore {prepend}, and use partial string matches for + {dbpath}. + 2 Ignore {prepend}, and use exact string matches for + {dbpath}. + 3 Use {prepend}, use partial string matches for both + {dbpath} and {prepend}. + 4 Use {prepend}, use exact string matches for both + {dbpath} and {prepend}. + + Note: All string comparisons are case sensitive! + + Examples. Suppose we had the following (from ":cs show"): > + + # pid database name prepend path + 0 27664 cscope.out /usr/local +< + Invocation Return Val ~ + ---------- ---------- > + cscope_connection() 1 + cscope_connection(1, "out") 1 + cscope_connection(2, "out") 0 + cscope_connection(3, "out") 0 + cscope_connection(3, "out", "local") 1 + cscope_connection(4, "out") 0 + cscope_connection(4, "out", "local") 0 + cscope_connection(4, "cscope.out", "/usr/local") 1 +< +cursor({lnum}, {col} [, {off}]) *cursor()* +cursor({list}) + Positions the cursor at the column (byte count) {col} in the + line {lnum}. The first column is one. + When there is one argument {list} this is used as a |List| + with two or three items {lnum}, {col} and {off}. This is like + the return value of |getpos()|, but without the first item. + Does not change the jumplist. + If {lnum} is greater than the number of lines in the buffer, + the cursor will be positioned at the last line in the buffer. + If {lnum} is zero, the cursor will stay in the current line. + If {col} is greater than the number of bytes in the line, + the cursor will be positioned at the last character in the + line. + If {col} is zero, the cursor will stay in the current column. + When 'virtualedit' is used {off} specifies the offset in + screen columns from the start of the character. E.g., a + position within a <Tab> or after the last character. + + +deepcopy({expr}[, {noref}]) *deepcopy()* *E698* + Make a copy of {expr}. For Numbers and Strings this isn't + different from using {expr} directly. + When {expr} is a |List| a full copy is created. This means + that the original |List| can be changed without changing the + copy, and vise versa. When an item is a |List|, a copy for it + is made, recursively. Thus changing an item in the copy does + not change the contents of the original |List|. + When {noref} is omitted or zero a contained |List| or + |Dictionary| is only copied once. All references point to + this single copy. With {noref} set to 1 every occurrence of a + |List| or |Dictionary| results in a new copy. This also means + that a cyclic reference causes deepcopy() to fail. + *E724* + Nesting is possible up to 100 levels. When there is an item + that refers back to a higher level making a deep copy with + {noref} set to 1 will fail. + Also see |copy()|. + *delete()* delete({fname}) {fname}という名前のファイルを削除する。戻り値は数値で、削除に 成功したら0、失敗したら1が返る。 + Use |remove()| to delete an item from a |List|. *did_filetype()* did_filetype() autocommandが実行されFileTypeイベントが一度でも起こっていれ ば、非零が返る。スクリプトのFileTypeイベントが、複数回呼び出さ れるのを回避するのに使える。 |FileType| +diff_filler({lnum}) *diff_filler()* + Returns the number of filler lines above line {lnum}. + These are the lines that were inserted at this point in + another diff'ed window. These filler lines are shown in the + display but don't exist in the buffer. + {lnum} is used like with |getline()|. Thus "." is the current + line, "'m" mark m, etc. + Returns 0 if the current window is not in diff mode. + +diff_hlID({lnum}, {col}) *diff_hlID()* + Returns the highlight ID for diff mode at line {lnum} column + {col} (byte index). When the current line does not have a + diff change zero is returned. + {lnum} is used like with |getline()|. Thus "." is the current + line, "'m" mark m, etc. + {col} is 1 for the leftmost column, {lnum} is 1 for the first + line. + The highlight ID can be used with |synIDattr()| to obtain + syntax information about the highlighting. + +empty({expr}) *empty()* + Return the Number 1 if {expr} is empty, zero otherwise. + A |List| or |Dictionary| is empty when it does not have any + items. A Number is empty when its value is zero. + For a long |List| this is much faster then comparing the + length with zero. + escape({string}, {chars}) *escape()* {string}内に現れる{chars}のキャラクタをバックスラッシュでエス ケープする。例: @@ -1035,6 +2245,42 @@ escape({string}, {chars}) *escape()* 結果: > c:\\program\ files\\vim +< *eval()* +eval({string}) Evaluate {string} and return the result. Especially useful to + turn the result of |string()| back into the original value. + This works for Numbers, Strings and composites of them. + Also works for |Funcref|s that refer to existing functions. + +eventhandler() *eventhandler()* + Returns 1 when inside an event handler. That is that Vim got + interrupted while waiting for the user to type a character, + e.g., when dropping a file on Vim. This means interactive + commands cannot be used. Otherwise zero is returned. + +executable({expr}) *executable()* + This function checks if an executable with the name {expr} + exists. {expr} must be the name of the program without any + arguments. + executable() uses the value of $PATH and/or the normal + searchpath for programs. *PATHEXT* + On MS-DOS and MS-Windows the ".exe", ".bat", etc. can + optionally be included. Then the extensions in $PATHEXT are + tried. Thus if "foo.exe" does not exist, "foo.exe.bat" can be + found. If $PATHEXT is not set then ".exe;.com;.bat;.cmd" is + used. A dot by itself can be used in $PATHEXT to try using + the name without an extension. When 'shell' looks like a + Unix shell, then the name is also tried without adding an + extension. + On MS-DOS and MS-Windows it only checks if the file exists and + is not a directory, not if it's really executable. + On MS-Windows an executable in the same directory as Vim is + always found. Since this directory is added to $PATH it + should also work to execute it |win32-PATH|. + The result is a Number: + 1 exists + 0 does not exist + -1 not implemented on this system + *exists()* exists({expr}) 結果は数値で、変数{expr}が存在すれば1となり、そうでなければ0と なる。引数{expr}は文字列で次のうちいずれかである。 @@ -1044,18 +2290,64 @@ exists({expr}) 結果は数値で、変数{expr}が存在すれば1となり、 *funcname 組み込み関数(|functions|参照)かユーザ が定義した関数(|user-functions|参照) varname 内部変数(|internal-variables|) + Also works + for |curly-braces-names|, |Dictionary| + entries, |List| items, etc. Beware + that this may cause functions to be + invoked cause an error message for an + invalid expression. + :cmdname Ex command: built-in command, user + command or command modifier |:command|. + Returns: + 1 for match with start of a command + 2 full match with a command + 3 matches several user commands + To check for a supported command + always check the return value to be 2. + :2match The |:2match| command. + :3match The |:3match| command. + #event autocommand defined for this event + #event#pattern autocommand defined for this event and + pattern (the pattern is taken + literally and compared to the + autocommand patterns character by + character) + #group autocommand group exists + #group#event autocommand defined for this group and + event. + #group#event#pattern + autocommand defined for this group, + event and pattern. + ##event autocommand for this event is + supported. + For checking for a supported feature use |has()|. 例: -> exists("&shortname") -> exists("$HOSTNAME") -> exists("*strftime") -> exists("bufcount") + exists("&shortname") + exists("$HOSTNAME") + exists("*strftime") + exists("*s:MyFunc") + exists("bufcount") + exists(":Make") + exists("#CursorHold") + exists("#BufReadPre#*.gz") + exists("#filetypeindent") + exists("#filetypeindent#FileType") + exists("#filetypeindent#FileType#*") + exists("##ColorScheme") シンボルである&/$/*と名前の間には、空白文字があってはならな - い。 Note 引数は変数自信ではなくて、文字列でなければならないこ - とに注意。次の例は変数"bufcount"が存在するかのチェックにはなら - ない。この場合、存在するならば"bufcount"の中身で表わされる変数 - の存在をチェックする: + い。That may become more strict in + the future, thus don't count on it! + Working example: > + exists(":make") +< NOT working example: > + exists(":make install") + +< Note that the argument must be a string, not the name of the + variable itself. For example: > exists(bufcount) +< This doesn't check for existence of the "bufcount" variable, + but gets the value of "bufcount", and checks if that exists. *expand()* expand({expr} [, {flag}]) @@ -1112,7 +2404,11 @@ expand({expr} [, {flag}]) '%'や'#'や'<'で始まらない{expr}は、コマンドラインのファイル名 と同じように展開される。オプションの{flag}が使用され、その値が 非ゼロでない時以外は'suffixes'と'wildignore'が使用される。 - + The "**" item can be used to + search in a directory tree. For example, to find all "README" + files in the current directory and below: > + :echo expand("**/README") +< Expand()は、シェルの持っている変数や環境変数を展開することがで きる。しかしシェルが起動されなければならないので、遅くなる。 |expr-env-expand|を参照。 @@ -1120,15 +2416,124 @@ expand({expr} [, {flag}]) 存在するファイルを探すには|glob()|を参照。外部コマンドの「生 の」実行結果を扱うには|system()|を参照。 +extend({expr1}, {expr2} [, {expr3}]) *extend()* + {expr1} and {expr2} must be both |Lists| or both + |Dictionaries|. + + If they are |Lists|: Append {expr2} to {expr1}. + If {expr3} is given insert the items of {expr2} before item + {expr3} in {expr1}. When {expr3} is zero insert before the + first item. When {expr3} is equal to len({expr1}) then + {expr2} is appended. + Examples: > + :echo sort(extend(mylist, [7, 5])) + :call extend(mylist, [2, 3], 1) +< Use |add()| to concatenate one item to a list. To concatenate + two lists into a new list use the + operator: > + :let newlist = [1, 2, 3] + [4, 5] +< + If they are |Dictionaries|: + Add all entries from {expr2} to {expr1}. + If a key exists in both {expr1} and {expr2} then {expr3} is + used to decide what to do: + {expr3} = "keep": keep the value of {expr1} + {expr3} = "force": use the value of {expr2} + {expr3} = "error": give an error message *E737* + When {expr3} is omitted then "force" is assumed. + + {expr1} is changed when {expr2} is not empty. If necessary + make a copy of {expr1} first. + {expr2} remains unchanged. + Returns {expr1}. + + +feedkeys({string} [, {mode}]) *feedkeys()* + Characters in {string} are queued for processing as if they + come from a mapping or were typed by the user. They are added + to the end of the typeahead buffer, thus if a mapping is still + being executed these characters come after them. + The function does not wait for processing of keys contained in + {string}. + To include special keys into {string}, use double-quotes + and "\..." notation |expr-quote|. For example, + feedkeys("\<CR>") simulates pressing of the <Enter> key. But + feedkeys('\<CR>') pushes 5 characters. + If {mode} is absent, keys are remapped. + {mode} is a String, which can contain these character flags: + 'm' Remap keys. This is default. + 'n' Do not remap keys. + 't' Handle keys as if typed; otherwise they are handled as + if coming from a mapping. This matters for undo, + opening folds, etc. + Return value is always 0. + *filereadable()* filereadable({file}) 結果は数値で、{file}というファイルが存在し、読みこむことが可能 ならばTRUEとなる。ファイル{file}が存在しないかディレクトリだっ た場合には、結果はFALSEとなる。引数{file}は文字列として使えれ ばどのような表現でもよい。 + If you don't care about the file being readable you can use + |glob()|. *file_readable()* 以前の名前: file_readable(). +filewritable({file}) *filewritable()* + The result is a Number, which is 1 when a file with the + name {file} exists, and can be written. If {file} doesn't + exist, or is not writable, the result is 0. If (file) is a + directory, and we can write to it, the result is 2. + + +filter({expr}, {string}) *filter()* + {expr} must be a |List| or a |Dictionary|. + For each item in {expr} evaluate {string} and when the result + is zero remove the item from the |List| or |Dictionary|. + Inside {string} |v:val| has the value of the current item. + For a |Dictionary| |v:key| has the key of the current item. + Examples: > + :call filter(mylist, 'v:val !~ "OLD"') +< Removes the items where "OLD" appears. > + :call filter(mydict, 'v:key >= 8') +< Removes the items with a key below 8. > + :call filter(var, 0) +< Removes all the items, thus clears the |List| or |Dictionary|. + + Note that {string} is the result of expression and is then + used as an expression again. Often it is good to use a + |literal-string| to avoid having to double backslashes. + + The operation is done in-place. If you want a |List| or + |Dictionary| to remain unmodified make a copy first: > + :let l = filter(copy(mylist), 'v:val =~ "KEEP"') + +< Returns {expr}, the |List| or |Dictionary| that was filtered. + When an error is encountered while evaluating {string} no + further items in {expr} are processed. + + +finddir({name}[, {path}[, {count}]]) *finddir()* + Find directory {name} in {path}. Supports both downwards and + upwards recursive directory searches. See |file-searching| + for the syntax of {path}. + Returns the path of the first found match. When the found + directory is below the current directory a relative path is + returned. Otherwise a full path is returned. + If {path} is omitted or empty then 'path' is used. + If the optional {count} is given, find {count}'s occurrence of + {name} in {path} instead of the first one. + When {count} is negative return all the matches in a |List|. + This is quite similar to the ex-command |:find|. + {only available when compiled with the +file_in_path feature} + +findfile({name}[, {path}[, {count}]]) *findfile()* + Just like |finddir()|, but find a file instead of a directory. + Uses 'suffixesadd'. + Example: > + :echo findfile("tags.vim", ".;") +< Searches from the directory of the current file upwards until + it finds the file "tags.vim". + *fnamemodify()* fnamemodify({fname}, {mods}) ファイル名{fname}を{mods}にしたがって変更する。{mods}はコマン @@ -1138,10 +2543,262 @@ fnamemodify({fname}, {mods}) > :echo fnamemodify("main.c", ":p:h") 結果: > /home/mool/vim/vim/src/ +< Note: Environment variables and "~" don't work in {fname}, use + |expand()| first then. + + +foldclosed({lnum}) *foldclosed()* + The result is a Number. If the line {lnum} is in a closed + fold, the result is the number of the first line in that fold. + If the line {lnum} is not in a closed fold, -1 is returned. + +foldclosedend({lnum}) *foldclosedend()* + The result is a Number. If the line {lnum} is in a closed + fold, the result is the number of the last line in that fold. + If the line {lnum} is not in a closed fold, -1 is returned. + +foldlevel({lnum}) *foldlevel()* + The result is a Number, which is the foldlevel of line {lnum} + in the current buffer. For nested folds the deepest level is + returned. If there is no fold at line {lnum}, zero is + returned. It doesn't matter if the folds are open or closed. + When used while updating folds (from 'foldexpr') -1 is + returned for lines where folds are still to be updated and the + foldlevel is unknown. As a special case the level of the + previous line is usually available. + + *foldtext()* +foldtext() Returns a String, to be displayed for a closed fold. This is + the default function used for the 'foldtext' option and should + only be called from evaluating 'foldtext'. It uses the + |v:foldstart|, |v:foldend| and |v:folddashes| variables. + The returned string looks like this: > + +-- 45 lines: abcdef +< The number of dashes depends on the foldlevel. The "45" is + the number of lines in the fold. "abcdef" is the text in the + first non-blank line of the fold. Leading white space, "//" + or "/*" and the text from the 'foldmarker' and 'commentstring' + options is removed. + {not available when compiled without the |+folding| feature} + +foldtextresult({lnum}) *foldtextresult()* + Returns the text that is displayed for the closed fold at line + {lnum}. Evaluates 'foldtext' in the appropriate context. + When there is no closed fold at {lnum} an empty string is + returned. + {lnum} is used like with |getline()|. Thus "." is the current + line, "'m" mark m, etc. + Useful when exporting folded text, e.g., to HTML. + {not available when compiled without the |+folding| feature} + + *foreground()* +foreground() Move the Vim window to the foreground. Useful when sent from + a client to a Vim server. |remote_send()| + On Win32 systems this might not work, the OS does not always + allow a window to bring itself to the foreground. Use + |remote_foreground()| instead. + {only in the Win32, Athena, Motif and GTK GUI versions and the + Win32 console version} + + +function({name}) *function()* *E700* + Return a |Funcref| variable that refers to function {name}. + {name} can be a user defined function or an internal function. + + +garbagecollect() *garbagecollect()* + Cleanup unused |Lists| and |Dictionaries| that have circular + references. There is hardly ever a need to invoke this + function, as it is automatically done when Vim runs out of + memory or is waiting for the user to press a key after + 'updatetime'. Items without circular references are always + freed when they become unused. + This is useful if you have deleted a very big |List| and/or + |Dictionary| with circular references in a script that runs + for a long time. + +get({list}, {idx} [, {default}]) *get()* + Get item {idx} from |List| {list}. When this item is not + available return {default}. Return zero when {default} is + omitted. +get({dict}, {key} [, {default}]) + Get item with key {key} from |Dictionary| {dict}. When this + item is not available return {default}. Return zero when + {default} is omitted. + + *getbufline()* +getbufline({expr}, {lnum} [, {end}]) + Return a |List| with the lines starting from {lnum} to {end} + (inclusive) in the buffer {expr}. If {end} is omitted, a + |List| with only the line {lnum} is returned. + + For the use of {expr}, see |bufname()| above. + + For {lnum} and {end} "$" can be used for the last line of the + buffer. Otherwise a number must be used. + + When {lnum} is smaller than 1 or bigger than the number of + lines in the buffer, an empty |List| is returned. + + When {end} is greater than the number of lines in the buffer, + it is treated as {end} is set to the number of lines in the + buffer. When {end} is before {lnum} an empty |List| is + returned. + + This function works only for loaded buffers. For unloaded and + non-existing buffers, an empty |List| is returned. + + Example: > + :let lines = getbufline(bufnr("myfile"), 1, "$") + +getbufvar({expr}, {varname}) *getbufvar()* + The result is the value of option or local buffer variable + {varname} in buffer {expr}. Note that the name without "b:" + must be used. + This also works for a global or buffer-local option, but it + doesn't work for a global variable, window-local variable or + window-local option. + For the use of {expr}, see |bufname()| above. + When the buffer or variable doesn't exist an empty string is + returned, there is no error message. + Examples: > + :let bufmodified = getbufvar(1, "&mod") + :echo "todo myvar = " . getbufvar("todo", "myvar") +< +getchar([expr]) *getchar()* + Get a single character from the user or input stream. + If [expr] is omitted, wait until a character is available. + If [expr] is 0, only get a character when one is available. + Return zero otherwise. + If [expr] is 1, only check if a character is available, it is + not consumed. Return zero if no character available. + + Without {expr} and when {expr} is 0 a whole character or + special key is returned. If it is an 8-bit character, the + result is a number. Use nr2char() to convert it to a String. + Otherwise a String is returned with the encoded character. + For a special key it's a sequence of bytes starting with 0x80 + (decimal: 128). This is the same value as the string + "\<Key>", e.g., "\<Left>". The returned value is also a + String when a modifier (shift, control, alt) was used that is + not included in the character. + + When {expr} is 1 only the first byte is returned. For a + one-byte character it is the character itself as a number. + Use nr2char() to convert it to a String. + + When the user clicks a mouse button, the mouse event will be + returned. The position can then be found in |v:mouse_col|, + |v:mouse_lnum| and |v:mouse_win|. This example positions the + mouse as it would normally happen: > + let c = getchar() + if c == "\<LeftMouse>" && v:mouse_win > 0 + exe v:mouse_win . "wincmd w" + exe v:mouse_lnum + exe "normal " . v:mouse_col . "|" + endif +< + There is no prompt, you will somehow have to make clear to the + user that a character has to be typed. + There is no mapping for the character. + Key codes are replaced, thus when the user presses the <Del> + key you get the code for the <Del> key, not the raw character + sequence. Examples: > + getchar() == "\<Del>" + getchar() == "\<S-Left>" +< This example redefines "f" to ignore case: > + :nmap f :call FindChar()<CR> + :function FindChar() + : let c = nr2char(getchar()) + : while col('.') < col('$') - 1 + : normal l + : if getline('.')[col('.') - 1] ==? c + : break + : endif + : endwhile + :endfunction + +getcharmod() *getcharmod()* + The result is a Number which is the state of the modifiers for + the last obtained character with getchar() or in another way. + These values are added together: + 2 shift + 4 control + 8 alt (meta) + 16 mouse double click + 32 mouse triple click + 64 mouse quadruple click + 128 Macintosh only: command + Only the modifiers that have not been included in the + character itself are obtained. Thus Shift-a results in "A" + with no modifier. + +getcmdline() *getcmdline()* + Return the current command-line. Only works when the command + line is being edited, thus requires use of |c_CTRL-\_e| or + |c_CTRL-R_=|. + Example: > + :cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR> +< Also see |getcmdtype()|, |getcmdpos()| and |setcmdpos()|. + +getcmdpos() *getcmdpos()* + Return the position of the cursor in the command line as a + byte count. The first column is 1. + Only works when editing the command line, thus requires use of + |c_CTRL-\_e| or |c_CTRL-R_=|. Returns 0 otherwise. + Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|. + +getcmdtype() *getcmdtype()* + Return the current command-line type. Possible return values + are: + : normal Ex command + > debug mode command |debug-mode| + / forward search command + ? backward search command + @ |input()| command + - |:insert| or |:append| command + Only works when editing the command line, thus requires use of + |c_CTRL-\_e| or |c_CTRL-R_=|. Returns an empty string + otherwise. + Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|. *getcwd()* getcwd() 結果は文字列で、現在のディレクトリ名。 +getfsize({fname}) *getfsize()* + The result is a Number, which is the size in bytes of the + given file {fname}. + If {fname} is a directory, 0 is returned. + If the file {fname} can't be found, -1 is returned. + +getfontname([{name}]) *getfontname()* + Without an argument returns the name of the normal font being + used. Like what is used for the Normal highlight group + |hl-Normal|. + With an argument a check is done whether {name} is a valid + font name. If not then an empty string is returned. + Otherwise the actual font name is returned, or {name} if the + GUI does not support obtaining the real name. + Only works when the GUI is running, thus not in your vimrc or + gvimrc file. Use the |GUIEnter| autocommand to use this + function just after the GUI has started. + Note that the GTK 2 GUI accepts any font name, thus checking + for a valid name does not work. + +getfperm({fname}) *getfperm()* + The result is a String, which is the read, write, and execute + permissions of the given file {fname}. + If {fname} does not exist or its directory cannot be read, an + empty string is returned. + The result is of the form "rwxrwxrwx", where each group of + "rwx" flags represent, in turn, the permissions of the owner + of the file, the group the file belongs to, and other users. + If a user does not have a given permission the flag for this + is replaced with the string "-". Example: > + :echo getfperm("/etc/passwd") +< This will hopefully (from a security point of view) display + the string "rw-r--r--" or even "rw-------". + *getftime()* getftime({fname}) 結果は{fname}で与えられたファイルの、最終更新時間を示す数値。 @@ -1149,8 +2806,29 @@ getftime({fname}) だろう。|localtime()|と|strftime()|も参照。 ファイル{fname}が見つからなかった場合には-1を返す。 +getftype({fname}) *getftype()* + The result is a String, which is a description of the kind of + file of the given file {fname}. + If {fname} does not exist an empty string is returned. + Here is a table over different kinds of files and their + results: + Normal file "file" + Directory "dir" + Symbolic link "link" + Block device "bdev" + Character device "cdev" + Socket "socket" + FIFO "fifo" + All other "other" + Example: > + getftype("/home") +< Note that a type such as "link" will only be returned on + systems that support it. On some systems only "dir" and + "file" are returned. + *getline()* -getline({lnum}) 結果は現在のバッファの{lnum}行目の内容(文字列)。例: +getline({lnum} [, {end}]) + 結果は現在のバッファの{lnum}行目の内容(文字列)。例: > getline(1) {lnum}が数字ではない文字で始まる文字列であった場合、line()に よってその文字列が数字に変換される。よって、カーソルのある行の @@ -1159,6 +2837,93 @@ getline({lnum}) 結果は現在のバッファの{lnum}行目の内容(文字列 {lnum}が1より小さいかバッファの行数よりも大きい数値の場合、空 文字列が返される。 + When {end} is given the result is a |List| where each item is + a line from the current buffer in the range {lnum} to {end}, + including line {end}. + {end} is used in the same way as {lnum}. + Non-existing lines are silently omitted. + When {end} is before {lnum} an empty |List| is returned. + Example: > + :let start = line('.') + :let end = search("^$") - 1 + :let lines = getline(start, end) + +< To get lines from another buffer see |getbufline()| + +getloclist({nr}) *getloclist()* + Returns a list with all the entries in the location list for + window {nr}. When {nr} is zero the current window is used. + For a location list window, the displayed location list is + returned. For an invalid window number {nr}, an empty list is + returned. Otherwise, same as getqflist(). + +getqflist() *getqflist()* + Returns a list with all the current quickfix errors. Each + list item is a dictionary with these entries: + bufnr number of buffer that has the file name, use + bufname() to get the name + lnum line number in the buffer (first line is 1) + col column number (first column is 1) + vcol non-zero: "col" is visual column + zero: "col" is byte index + nr error number + pattern search pattern used to locate the error + text description of the error + type type of the error, 'E', '1', etc. + valid non-zero: recognized error message + + When there is no error list or it's empty an empty list is + returned. Quickfix list entries with non-existing buffer + number are returned with "bufnr" set to zero. + + Useful application: Find pattern matches in multiple files and + do something with them: > + :vimgrep /theword/jg *.c + :for d in getqflist() + : echo bufname(d.bufnr) ':' d.lnum '=' d.text + :endfor + +getreg([{regname} [, 1]]) *getreg()* + The result is a String, which is the contents of register + {regname}. Example: > + :let cliptext = getreg('*') +< getreg('=') returns the last evaluated value of the expression + register. (For use in maps.) + getreg('=', 1) returns the expression itself, so that it can + be restored with |setreg()|. For other registers the extra + argument is ignored, thus you can always give it. + If {regname} is not specified, |v:register| is used. + + +getregtype([{regname}]) *getregtype()* + The result is a String, which is type of register {regname}. + The value will be one of: + "v" for |characterwise| text + "V" for |linewise| text + "<CTRL-V>{width}" for |blockwise-visual| text + 0 for an empty or unknown register + <CTRL-V> is one character with value 0x16. + If {regname} is not specified, |v:register| is used. + +gettabwinvar({tabnr}, {winnr}, {varname}) *gettabwinvar()* + Get the value of window-local variable {varname} in window + {winnr} in tab page {tabnr}. + When {varname} starts with "&" get the value of a window-local + option. + Tabs are numbered starting with one. For the current tabpage + use |getwinvar()|. + When {winnr} is zero the current window is used. + This also works for a global option, buffer-local option and + window-local option, but it doesn't work for a global variable + or buffer-local variable. + When {varname} is empty a dictionary with all window-local + variables is returned. + Note that {varname} must be the name without "w:". + Examples: > + :let list_is_on = gettabwinvar(1, 2, '&list') + :echo "myvar = " . gettabwinvar(3, 1, 'myvar') +< + *getwinposx()* getwinposx() 結果はGUIのVimウィンドウの左端の、デスクトップ上でのX座標値(数 値)。情報が存在しない(コンソールの)場合は-1となる。 @@ -1167,8 +2932,16 @@ getwinposx() 結果はGUIのVimウィンドウの左端の、デスクトップ getwinposy() 結果はGUIのVimウィンドウの上端の、デスクトップ上でのY座標値(数 値)。情報が存在しない(コンソールの)場合は-1となる。 +getwinvar({winnr}, {varname}) *getwinvar()* + Like |gettabwinvar()| for the current tabpage. + Examples: > + :let list_is_on = getwinvar(2, '&list') + :echo "myvar = " . getwinvar(1, 'myvar') + *glob()* -glob({expr}) Expand the file wildcards in {expr}. The result is a String. +glob({expr}) Expand the file wildcards in {expr}. See |wildcards| for the + use of special characters. + The result is a String. {expr}内のファイル名のワイルドカードを展開する。結果は文字列。 結果が複数存在する場合、各々が文字<NL>によって区切られる。 展開が失敗した場合、結果は空文字列。結果には、存在しないファイ @@ -1184,10 +2957,65 @@ glob({expr}) Expand the file wildcards in {expr}. The result is a String. 特殊なVimの変数を展開するためには|expand()|を参照。外部コマン ドの生の出力を得るためには|system()|を参照。 +globpath({path}, {expr}) *globpath()* + Perform glob() on all directories in {path} and concatenate + the results. Example: > + :echo globpath(&rtp, "syntax/c.vim") +< {path} is a comma-separated list of directory names. Each + directory name is prepended to {expr} and expanded like with + glob(). A path separator is inserted when needed. + To add a comma inside a directory name escape it with a + backslash. Note that on MS-Windows a directory may have a + trailing backslash, remove it if you put a comma after it. + If the expansion fails for one of the directories, there is no + error message. + The 'wildignore' option applies: Names matching one of the + patterns in 'wildignore' will be skipped. + + The "**" item can be used to search in a directory tree. + For example, to find all "README.txt" files in the directories + in 'runtimepath' and below: > + :echo globpath(&rtp, "**/README.txt") +< *has()* has({feature}) 結果は機能{feature}がサポートされる場合1、されない場合0とな る。引数{feature}は文字列。下記の|feature-list|を参照。 +has_key({dict}, {key}) *has_key()* + The result is a Number, which is 1 if |Dictionary| {dict} has + an entry with key {key}. Zero otherwise. + +haslocaldir() *haslocaldir()* + The result is a Number, which is 1 when the current + window has set a local path via |:lcd|, and 0 otherwise. + +hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()* + The result is a Number, which is 1 if there is a mapping that + contains {what} in somewhere in the rhs (what it is mapped to) + and this mapping exists in one of the modes indicated by + {mode}. + When {abbr} is there and it is non-zero use abbreviations + instead of mappings. Don't forget to specify Insert and/or + Command-line mode. + Both the global mappings and the mappings local to the current + buffer are checked for a match. + If no matching mapping is found 0 is returned. + The following characters are recognized in {mode}: + n Normal mode + v Visual mode + o Operator-pending mode + i Insert mode + l Language-Argument ("r", "f", "t", etc.) + c Command-line mode + When {mode} is omitted, "nvo" is used. + + This function is useful to check if a mapping already exists + to a function in a Vim script. Example: > + :if !hasmapto('\ABCdoit') + : map <Leader>d \ABCdoit + :endif +< This installs the mapping to "\ABCdoit" only if there isn't + already a mapping to "\ABCdoit". *histadd()* histadd({history}, {item}) 文字列{item}を履歴{history}に追加する。履歴{history}は以下のう @@ -1285,7 +3113,46 @@ hostname() 結果は文字列で、現在Vimが実行されているマシンの名前。名前が256 文字を超える場合、超えた部分は切り捨てられる。 -input({prompt}) *input()* +iconv({expr}, {from}, {to}) *iconv()* + The result is a String, which is the text {expr} converted + from encoding {from} to encoding {to}. + When the conversion fails an empty string is returned. + The encoding names are whatever the iconv() library function + can accept, see ":!man 3 iconv". + Most conversions require Vim to be compiled with the |+iconv| + feature. Otherwise only UTF-8 to latin1 conversion and back + can be done. + This can be used to display messages with special characters, + no matter what 'encoding' is set to. Write the message in + UTF-8 and use: > + echo iconv(utf8_str, "utf-8", &enc) +< Note that Vim uses UTF-8 for all Unicode encodings, conversion + from/to UCS-2 is automatically changed to use UTF-8. You + cannot use UCS-2 in a string anyway, because of the NUL bytes. + {only available when compiled with the +multi_byte feature} + + *indent()* +indent({lnum}) The result is a Number, which is indent of line {lnum} in the + current buffer. The indent is counted in spaces, the value + of 'tabstop' is relevant. {lnum} is used just like in + |getline()|. + When {lnum} is invalid -1 is returned. + + +index({list}, {expr} [, {start} [, {ic}]]) *index()* + Return the lowest index in |List| {list} where the item has a + value equal to {expr}. + If {start} is given then start looking at the item with index + {start} (may be negative for an item relative to the end). + When {ic} is given and it is non-zero, ignore case. Otherwise + case must match. + -1 is returned when {expr} is not found in {list}. + Example: > + :let idx = index(words, "the") + :if index(numbers, 123) >= 0 + + +input({prompt} [, {text} [, {completion}]]) *input()* 結果は文字列で、ユーザがコマンドラインに入力したものが返され る。引数はプロンプト用文字列であり、プロンプトが必要なければ空 文字列でかまわない。新しい行から入力させるために'\n'をプロンプ @@ -1301,6 +3168,62 @@ input({prompt}) *input()* > :if input("Coffee or beer? ") == "beer" > : echo "Cheers!" > :endif + +inputlist({textlist}) *inputlist()* + {textlist} must be a |List| of strings. This |List| is + displayed, one string per line. The user will be prompted to + enter a number, which is returned. + The user can also select an item by clicking on it with the + mouse. For the first string 0 is returned. When clicking + above the first item a negative number is returned. When + clicking on the prompt one more than the length of {textlist} + is returned. + Make sure {textlist} has less then 'lines' entries, otherwise + it won't work. It's a good idea to put the entry number at + the start of the string. And put a prompt in the first item. + Example: > + let color = inputlist(['Select color:', '1. red', + \ '2. green', '3. blue']) + +inputrestore() *inputrestore()* + Restore typeahead that was saved with a previous inputsave(). + Should be called the same number of times inputsave() is + called. Calling it more often is harmless though. + Returns 1 when there is nothing to restore, 0 otherwise. + +inputsave() *inputsave()* + Preserve typeahead (also from mappings) and clear it, so that + a following prompt gets input from the user. Should be + followed by a matching inputrestore() after the prompt. Can + be used several times, in which case there must be just as + many inputrestore() calls. + Returns 1 when out of memory, 0 otherwise. + +inputsecret({prompt} [, {text}]) *inputsecret()* + This function acts much like the |input()| function with but + two exceptions: + a) the user's response will be displayed as a sequence of + asterisks ("*") thereby keeping the entry secret, and + b) the user's response will not be recorded on the input + |history| stack. + The result is a String, which is whatever the user actually + typed on the command-line in response to the issued prompt. + NOTE: Command-line completion is not supported. + +insert({list}, {item} [, {idx}]) *insert()* + Insert {item} at the start of |List| {list}. + If {idx} is specified insert {item} before the item with index + {idx}. If {idx} is zero it goes before the first item, just + like omitting {idx}. A negative {idx} is also possible, see + |list-index|. -1 inserts just before the last item. + Returns the resulting |List|. Examples: > + :let mylist = insert([2, 3, 5], 1) + :call insert(mylist, 4, -1) + :call insert(mylist, 6, len(mylist)) +< The last example can be done simpler with |add()|. + Note that when {item} is a |List| it is inserted as a single + item. Use |extend()| to concatenate |Lists|. + *isdirectory()* isdirectory({directory}) 結果は数値で、{directory}という名前のディレクトリが存在すれば @@ -1309,6 +3232,51 @@ isdirectory({directory}) できるのならば{directory}の表現はどのようなものであってもかま わない。 +islocked({expr}) *islocked()* *E786* + The result is a Number, which is non-zero when {expr} is the + name of a locked variable. + {expr} must be the name of a variable, |List| item or + |Dictionary| entry, not the variable itself! Example: > + :let alist = [0, ['a', 'b'], 2, 3] + :lockvar 1 alist + :echo islocked('alist') " 1 + :echo islocked('alist[1]') " 0 + +< When {expr} is a variable that does not exist you get an error + message. Use |exists()| to check for existence. + +items({dict}) *items()* + Return a |List| with all the key-value pairs of {dict}. Each + |List| item is a list with two items: the key of a {dict} + entry and the value of this entry. The |List| is in arbitrary + order. + + +join({list} [, {sep}]) *join()* + Join the items in {list} together into one String. + When {sep} is specified it is put in between the items. If + {sep} is omitted a single space is used. + Note that {sep} is not added at the end. You might want to + add it there too: > + let lines = join(mylist, "\n") . "\n" +< String items are used as-is. |Lists| and |Dictionaries| are + converted into a string like with |string()|. + The opposite function is |split()|. + +keys({dict}) *keys()* + Return a |List| with all the keys of {dict}. The |List| is in + arbitrary order. + + *len()* *E701* +len({expr}) The result is a Number, which is the length of the argument. + When {expr} is a String or a Number the length in bytes is + used, as with |strlen()|. + When {expr} is a |List| the number of items in the |List| is + returned. + When {expr} is a |Dictionary| the number of entries in the + |Dictionary| is returned. + Otherwise an error is given. + *libcall()* libcall({libname}, {funcname}, {argument}) ランタイムライブラリ{libname}の関数{funcname}を、引数 @@ -1342,6 +3310,16 @@ libcall({libname}, {funcname}, {argument}) は、フルパスで指定する必要がある。 {Win32バージョン限定の機能} + *libcallnr()* +libcallnr({libname}, {funcname}, {argument}) + Just like libcall(), but used for a function that returns an + int instead of a string. + {only in Win32 on some Unix versions, when the |+libcall| + feature is present} + Example (not very useful...): > + :call libcallnr("libc.so", "printf", "Hello World!\n") + :call libcallnr("libc.so", "sleep", 10) +< *line()* line({expr}) 結果は数値で、{expr}で与えられた位置のファイル内での行番号。受 け付けられる位置指定は次の通り: @@ -1349,8 +3327,12 @@ line({expr}) 結果は数値で、{expr}で与えられた位置のファイル $ 現在のバッファの最後の位置 'x マークxの位置(マークが設定されていない場合、0が返 る) - 現在のファイルに対して設定されているマークだけが使用可能なこと - に注意。 + w0 first line visible in current window + w$ last line visible in current window + Note that a mark in another file can be used. The line number + then applies to another buffer. + To get the column number use |col()|. To get both use + |getpos()|. 例: > line(".") カーソルの行番号 > line("'t") マークtの位置の行番号 @@ -1374,13 +3356,44 @@ line2byte({lnum}) されている場合、-1が返される。 |byte2line()|、|go|及び|:goto|も参照。 +lispindent({lnum}) *lispindent()* + Get the amount of indent for line {lnum} according the lisp + indenting rules, as with 'lisp'. + The indent is counted in spaces, the value of 'tabstop' is + relevant. {lnum} is used just like in |getline()|. + When {lnum} is invalid or Vim was not compiled the + |+lispindent| feature, -1 is returned. + *localtime()* localtime() 現在の時刻、1970年1月1日からの経過秒数を返す。|strftime()|と |getftime()|も参照。 - *maparg()* -maparg({name}[, {mode}]) +map({expr}, {string}) *map()* + {expr} must be a |List| or a |Dictionary|. + Replace each item in {expr} with the result of evaluating + {string}. + Inside {string} |v:val| has the value of the current item. + For a |Dictionary| |v:key| has the key of the current item. + Example: > + :call map(mylist, '"> " . v:val . " <"') +< This puts "> " before and " <" after each item in "mylist". + + Note that {string} is the result of an expression and is then + used as an expression again. Often it is good to use a + |literal-string| to avoid having to double backslashes. You + still have to double ' quotes + + The operation is done in-place. If you want a |List| or + |Dictionary| to remain unmodified make a copy first: > + :let tlist = map(copy(mylist), ' & . "\t"') + +< Returns {expr}, the |List| or |Dictionary| that was filtered. + When an error is encountered while evaluating {string} no + further items in {expr} are processed. + + +maparg({name}[, {mode} [, {abbr}]]) *maparg()* モード{mode}におけるキーマップ{name}のrhsを返す。{name}という キーマップが存在しない場合、空文字列が返される。{mode}には次の 文字が使用可能: @@ -1391,14 +3404,23 @@ maparg({name}[, {mode}]) "c" コマンドライン "" ノーマル、ビジュアル、及びモーション待ち {mode}が省略された場合、""が使用される。 + When {abbr} is there and it is non-zero use abbreviations + instead of mappings. {name}には":map"コマンドで使用可能な、特殊なキー名が指定でき る。結果の文字列内の特殊文字は、":map"コマンドでリスト表示した 時のように変換される。 + The mappings local to the current buffer are checked first, + then the global mappings. + This function can be used to map a key even when it's already + mapped, and have it do the original mapping too. Sketch: > + exe 'nnoremap <Tab> ==' . maparg('<Tab>', 'n') + - *mapcheck()* -mapcheck({name}[, {mode}]) +mapcheck({name}[, {mode} [, {abbr}]]) *mapcheck()* モード{mode}におけるキーマップ{name}が存在するかチェックする。 {name}に指定できる特殊文字は|maparg()|を参照。 + When {abbr} is there and it is non-zero use abbreviations + instead of mappings. {name}に対応するキーマップが存在しない時には、空文字列が返され る。結果が一つならばマップされたrhsが返される。複数見つかった 場合には、それらのうちどれか一つのrhsが返される。 @@ -1410,17 +3432,72 @@ mapcheck({name}[, {mode}]) "_vv"というマッピングは"_v"とか"_vvv"といったマッピングと衝突 する可能性がある。 - *match()* -match({expr}, {pat}) - 結果は数値で、正規表現パターン{pat}が文字列{expr}の何処にマッ - チしたか、そのインデックスを示す。最初の文字にマッチした場合に - は0を返す。マッチしなかった場合には-1が返される。例: -> :echo match("testing", "ing") - 結果は"4"。 - 受け付け可能なパターンは|pattern|を参照。 - オプション'ignorecase'が指定されていると大文字小文字は無視され - る。'smartcase'は使われない。マッチングは常に'magic'がセットさ - れ、'cpoptions'が指定されない状態で行なわれる。 + +match({expr}, {pat}[, {start}[, {count}]]) *match()* + When {expr} is a |List| then this returns the index of the + first item where {pat} matches. Each item is used as a + String, |Lists| and |Dictionaries| are used as echoed. + Otherwise, {expr} is used as a String. The result is a + Number, which gives the index (byte offset) in {expr} where + {pat} matches. + A match at the first character or |List| item returns zero. + If there is no match -1 is returned. + Example: > + :echo match("testing", "ing") " results in 4 + :echo match([1, 'x'], '\a') " results in 1 +< See |string-match| for how {pat} is used. + *strpbrk()* + Vim doesn't have a strpbrk() function. But you can do: > + :let sepidx = match(line, '[.,;: \t]') +< *strcasestr()* + Vim doesn't have a strcasestr() function. But you can add + "\c" to the pattern to ignore case: > + :let idx = match(haystack, '\cneedle') +< + If {start} is given, the search starts from byte index + {start} in a String or item {start} in a |List|. + The result, however, is still the index counted from the + first character/item. Example: > + :echo match("testing", "ing", 2) +< result is again "4". > + :echo match("testing", "ing", 4) +< result is again "4". > + :echo match("testing", "t", 2) +< result is "3". + For a String, if {start} > 0 then it is like the string starts + {start} bytes later, thus "^" will match at {start}. Except + when {count} is given, then it's like matches before the + {start} byte are ignored (this is a bit complicated to keep it + backwards compatible). + For a String, if {start} < 0, it will be set to 0. For a list + the index is counted from the end. + If {start} is out of range ({start} > strlen({expr}) for a + String or {start} > len({expr}) for a |List|) -1 is returned. + + When {count} is given use the {count}'th match. When a match + is found in a String the search for the next one starts one + character further. Thus this example results in 1: > + echo match("testing", "..", 0, 2) +< In a |List| the search continues in the next item. + Note that when {count} is added the way {start} works changes, + see above. + + See |pattern| for the patterns that are accepted. + The 'ignorecase' option is used to set the ignore-caseness of + the pattern. 'smartcase' is NOT used. The matching is always + done like 'magic' is set and 'cpoptions' is empty. + + +matcharg({nr}) *matcharg()* + Selects the {nr} match item, as set with a |:match|, + |:2match| or |:3match| command. + Return a |List| with two elements: + The name of the highlight group used + The pattern used. + When {nr} is not 1, 2 or 3 returns an empty |List|. + When there is no match item set returns ['', '']. + This is usef to save and restore a |:match|. + *matchend()* matchend({expr}, {pat}) @@ -1428,31 +3505,1026 @@ matchend({expr}, {pat}) インデックスである。例: > :echo matchend("testing", "ing") 結果は"7"。 - - *matchstr()* -matchstr({expr}, {pat}) + *strspn()* *strcspn()* + Vim doesn't have a strspn() or strcspn() function, but you can + do it with matchend(): > + :let span = matchend(line, '[a-zA-Z]') + :let span = matchend(line, '[^a-zA-Z]') +< Except that -1 is returned when there are no matches. + + The {start}, if given, has the same meaning as for match(). > + :echo matchend("testing", "ing", 2) +< results in "7". > + :echo matchend("testing", "ing", 5) +< result is "-1". + When {expr} is a |List| the result is equal to match(). + +matchlist({expr}, {pat}[, {start}[, {count}]]) *matchlist()* + Same as match(), but return a |List|. The first item in the + list is the matched string, same as what matchstr() would + return. Following items are submatches, like "\1", "\2", etc. + in |:substitute|. When an optional submatch didn't match an + empty string is used. Example: > + echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)') +< Results in: ['acd', 'a', '', 'c', 'd', '', '', '', '', ''] + When there is no match an empty list is returned. + +matchstr({expr}, {pat}[, {start}[, {count}]]) *matchstr()* match()と同じだが、返されるのはマッチした文字列。例: > :echo matchstr("testing", "ing") 結果は"ing"。 マッチしなければ""が返される。 + The {start}, if given, has the same meaning as for match(). > + :echo matchstr("testing", "ing", 2) +< results in "ing". > + :echo matchstr("testing", "ing", 5) +< result is "". + When {expr} is a |List| then the matching item is returned. + The type isn't changed, it's not necessarily a String. + + *max()* +max({list}) Return the maximum value of all items in {list}. + If {list} is not a list or one of the items in {list} cannot + be used as a Number this results in an error. + An empty |List| results in zero. + + *min()* +min({list}) Return the minimum value of all items in {list}. + If {list} is not a list or one of the items in {list} cannot + be used as a Number this results in an error. + An empty |List| results in zero. + + *mkdir()* *E739* +mkdir({name} [, {path} [, {prot}]]) + Create directory {name}. + If {path} is "p" then intermediate directories are created as + necessary. Otherwise it must be "". + If {prot} is given it is used to set the protection bits of + the new directory. The default is 0755 (rwxr-xr-x: r/w for + the user readable for others). Use 0700 to make it unreadable + for others. + This function is not available in the |sandbox|. + Not available on all systems. To check use: > + :if exists("*mkdir") +< + *mode()* +mode() Return a string that indicates the current mode: + n Normal + v Visual by character + V Visual by line + CTRL-V Visual blockwise + s Select by character + S Select by line + CTRL-S Select blockwise + i Insert + R Replace + c Command-line + r Hit-enter prompt + This is useful in the 'statusline' option. In most other + places it always returns "c" or "n". + +nextnonblank({lnum}) *nextnonblank()* + Return the line number of the first line at or below {lnum} + that is not blank. Example: > + if getline(nextnonblank(1)) =~ "Java" +< When {lnum} is invalid or there is no non-blank line at or + below it, zero is returned. + See also |prevnonblank()|. *nr2char()* nr2char({expr}) 結果はアスキーコード{expr}を持つ1文字からなる文字列となる。例: > nr2char(64) "@"が返される > nr2char(32) " "が返される +< The current 'encoding' is used. Example for "utf-8": > + nr2char(300) returns I with bow character +< Note that a NUL character in the file is specified with + nr2char(10), because NULs are represented with newline + characters. nr2char(0) is a real NUL and terminates the + string, thus results in an empty string. + + *getpos()* +getpos({expr}) Get the position for {expr}. For possible values of {expr} + see |line()|. + The result is a |List| with four numbers: + [bufnum, lnum, col, off] + "bufnum" is zero, unless a mark like '0 or 'A is used, then it + is the buffer number of the mark. + "lnum" and "col" are the position in the buffer. The first + column is 1. + The "off" number is zero, unless 'virtualedit' is used. Then + it is the offset in screen columns from the start of the + character. E.g., a position within a <Tab> or after the last + character. + This can be used to save and restore the cursor position: > + let save_cursor = getpos(".") + MoveTheCursorAround + call setpos('.', save_cursor) +< Also see |setpos()|. + +pathshorten({expr}) *pathshorten()* + Shorten directory names in the path {expr} and return the + result. The tail, the file name, is kept as-is. The other + components in the path are reduced to single letters. Leading + '~' and '.' characters are kept. Example: > + :echo pathshorten('~/.vim/autoload/myfile.vim') +< ~/.v/a/myfile.vim ~ + It doesn't matter if the path exists or not. + +prevnonblank({lnum}) *prevnonblank()* + Return the line number of the first line at or above {lnum} + that is not blank. Example: > + let ind = indent(prevnonblank(v:lnum - 1)) +< When {lnum} is invalid or there is no non-blank line at or + above it, zero is returned. + Also see |nextnonblank()|. + + +printf({fmt}, {expr1} ...) *printf()* + Return a String with {fmt}, where "%" items are replaced by + the formatted form of their respective arguments. Example: > + printf("%4d: E%d %.30s", lnum, errno, msg) +< May result in: + " 99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~ + + Often used items are: + %s string + %6s string right-aligned in 6 bytes + %.9s string truncated to 9 bytes + %c single byte + %d decimal number + %5d decimal number padded with spaces to 5 characters + %x hex number + %04x hex number padded with zeros to at least 4 characters + %X hex number using upper case letters + %o octal number + %% the % character itself + + Conversion specifications start with '%' and end with the + conversion type. All other characters are copied unchanged to + the result. + + The "%" starts a conversion specification. The following + arguments appear in sequence: + + % [flags] [field-width] [.precision] type + + flags + Zero or more of the following flags: + + # The value should be converted to an "alternate + form". For c, d, and s conversions, this option + has no effect. For o conversions, the precision + of the number is increased to force the first + character of the output string to a zero (except + if a zero value is printed with an explicit + precision of zero). + For x and X conversions, a non-zero result has + the string "0x" (or "0X" for X conversions) + prepended to it. + + 0 (zero) Zero padding. For all conversions the converted + value is padded on the left with zeros rather + than blanks. If a precision is given with a + numeric conversion (d, o, x, and X), the 0 flag + is ignored. + + - A negative field width flag; the converted value + is to be left adjusted on the field boundary. + The converted value is padded on the right with + blanks, rather than on the left with blanks or + zeros. A - overrides a 0 if both are given. + + ' ' (space) A blank should be left before a positive + number produced by a signed conversion (d). + + + A sign must always be placed before a number + produced by a signed conversion. A + overrides + a space if both are used. + + field-width + An optional decimal digit string specifying a minimum + field width. If the converted value has fewer bytes + than the field width, it will be padded with spaces on + the left (or right, if the left-adjustment flag has + been given) to fill out the field width. + + .precision + An optional precision, in the form of a period '.' + followed by an optional digit string. If the digit + string is omitted, the precision is taken as zero. + This gives the minimum number of digits to appear for + d, o, x, and X conversions, or the maximum number of + bytes to be printed from a string for s conversions. + + type + A character that specifies the type of conversion to + be applied, see below. + + A field width or precision, or both, may be indicated by an + asterisk '*' instead of a digit string. In this case, a + Number argument supplies the field width or precision. A + negative field width is treated as a left adjustment flag + followed by a positive field width; a negative precision is + treated as though it were missing. Example: > + :echo printf("%d: %.*s", nr, width, line) +< This limits the length of the text used from "line" to + "width" bytes. + + The conversion specifiers and their meanings are: + + doxX The Number argument is converted to signed decimal + (d), unsigned octal (o), or unsigned hexadecimal (x + and X) notation. The letters "abcdef" are used for + x conversions; the letters "ABCDEF" are used for X + conversions. + The precision, if any, gives the minimum number of + digits that must appear; if the converted value + requires fewer digits, it is padded on the left with + zeros. + In no case does a non-existent or small field width + cause truncation of a numeric field; if the result of + a conversion is wider than the field width, the field + is expanded to contain the conversion result. + + c The Number argument is converted to a byte, and the + resulting character is written. + + s The text of the String argument is used. If a + precision is specified, no more bytes than the number + specified are used. + + % A '%' is written. No argument is converted. The + complete conversion specification is "%%". + + Each argument can be Number or String and is converted + automatically to fit the conversion specifier. Any other + argument type results in an error message. + + *E766* *E767* + The number of {exprN} arguments must exactly match the number + of "%" items. If there are not sufficient or too many + arguments an error is given. Up to 18 arguments can be used. + + +pumvisible() *pumvisible()* + Returns non-zero when the popup menu is visible, zero + otherwise. See |ins-completion-menu|. + This can be used to avoid some things that would remove the + popup menu. + + *E726* *E727* +range({expr} [, {max} [, {stride}]]) *range()* + Returns a |List| with Numbers: + - If only {expr} is specified: [0, 1, ..., {expr} - 1] + - If {max} is specified: [{expr}, {expr} + 1, ..., {max}] + - If {stride} is specified: [{expr}, {expr} + {stride}, ..., + {max}] (increasing {expr} with {stride} each time, not + producing a value past {max}). + When the maximum is one before the start the result is an + empty list. When the maximum is more than one before the + start this is an error. + Examples: > + range(4) " [0, 1, 2, 3] + range(2, 4) " [2, 3, 4] + range(2, 9, 3) " [2, 5, 8] + range(2, -2, -1) " [2, 1, 0, -1, -2] + range(0) " [] + range(2, 0) " error! +< + *readfile()* +readfile({fname} [, {binary} [, {max}]]) + Read file {fname} and return a |List|, each line of the file + as an item. Lines broken at NL characters. Macintosh files + separated with CR will result in a single long line (unless a + NL appears somewhere). + When {binary} is equal to "b" binary mode is used: + - When the last line ends in a NL an extra empty list item is + added. + - No CR characters are removed. + Otherwise: + - CR characters that appear before a NL are removed. + - Whether the last line ends in a NL or not does not matter. + All NUL characters are replaced with a NL character. + When {max} is given this specifies the maximum number of lines + to be read. Useful if you only want to check the first ten + lines of a file: > + :for line in readfile(fname, '', 10) + : if line =~ 'Date' | echo line | endif + :endfor +< When {max} is negative -{max} lines from the end of the file + are returned, or as many as there are. + When {max} is zero the result is an empty list. + Note that without {max} the whole file is read into memory. + Also note that there is no recognition of encoding. Read a + file into a buffer if you need to. + When the file can't be opened an error message is given and + the result is an empty list. + Also see |writefile()|. + +reltime([{start} [, {end}]]) *reltime()* + Return an item that represents a time value. The format of + the item depends on the system. It can be passed to + |reltimestr()| to convert it to a string. + Without an argument it returns the current time. + With one argument is returns the time passed since the time + specified in the argument. + With two arguments it returns the time passed between {start} + and {end}. + The {start} and {end} arguments must be values returned by + reltime(). + {only available when compiled with the +reltime feature} + +reltimestr({time}) *reltimestr()* + Return a String that represents the time value of {time}. + This is the number of seconds, a dot and the number of + microseconds. Example: > + let start = reltime() + call MyFunction() + echo reltimestr(reltime(start)) +< Note that overhead for the commands will be added to the time. + The accuracy depends on the system. + Leading spaces are used to make the string align nicely. You + can use split() to remove it. > + echo split(reltimestr(reltime(start)))[0] +< Also see |profiling|. + {only available when compiled with the +reltime feature} + + *remote_expr()* *E449* +remote_expr({server}, {string} [, {idvar}]) + Send the {string} to {server}. The string is sent as an + expression and the result is returned after evaluation. + The result must be a String or a |List|. A |List| is turned + into a String by joining the items with a line break in + between (not at the end), like with join(expr, "\n"). + If {idvar} is present, it is taken as the name of a + variable and a {serverid} for later use with + remote_read() is stored there. + See also |clientserver| |RemoteReply|. + This function is not available in the |sandbox|. + {only available when compiled with the |+clientserver| feature} + Note: Any errors will cause a local error message to be issued + and the result will be the empty string. + Examples: > + :echo remote_expr("gvim", "2+2") + :echo remote_expr("gvim1", "b:current_syntax") +< + +remote_foreground({server}) *remote_foreground()* + Move the Vim server with the name {server} to the foreground. + This works like: > + remote_expr({server}, "foreground()") +< Except that on Win32 systems the client does the work, to work + around the problem that the OS doesn't always allow the server + to bring itself to the foreground. + Note: This does not restore the window if it was minimized, + like foreground() does. + This function is not available in the |sandbox|. + {only in the Win32, Athena, Motif and GTK GUI versions and the + Win32 console version} + + +remote_peek({serverid} [, {retvar}]) *remote_peek()* + Returns a positive number if there are available strings + from {serverid}. Copies any reply string into the variable + {retvar} if specified. {retvar} must be a string with the + name of a variable. + Returns zero if none are available. + Returns -1 if something is wrong. + See also |clientserver|. + This function is not available in the |sandbox|. + {only available when compiled with the |+clientserver| feature} + Examples: > + :let repl = "" + :echo "PEEK: ".remote_peek(id, "repl").": ".repl + +remote_read({serverid}) *remote_read()* + Return the oldest available reply from {serverid} and consume + it. It blocks until a reply is available. + See also |clientserver|. + This function is not available in the |sandbox|. + {only available when compiled with the |+clientserver| feature} + Example: > + :echo remote_read(id) +< + *remote_send()* *E241* +remote_send({server}, {string} [, {idvar}]) + Send the {string} to {server}. The string is sent as input + keys and the function returns immediately. At the Vim server + the keys are not mapped |:map|. + If {idvar} is present, it is taken as the name of a variable + and a {serverid} for later use with remote_read() is stored + there. + See also |clientserver| |RemoteReply|. + This function is not available in the |sandbox|. + {only available when compiled with the |+clientserver| feature} + Note: Any errors will be reported in the server and may mess + up the display. + Examples: > + :echo remote_send("gvim", ":DropAndReply ".file, "serverid"). + \ remote_read(serverid) + + :autocmd NONE RemoteReply * + \ echo remote_read(expand("<amatch>")) + :echo remote_send("gvim", ":sleep 10 | echo ". + \ 'server2client(expand("<client>"), "HELLO")<CR>') +< +remove({list}, {idx} [, {end}]) *remove()* + Without {end}: Remove the item at {idx} from |List| {list} and + return it. + With {end}: Remove items from {idx} to {end} (inclusive) and + return a list with these items. When {idx} points to the same + item as {end} a list with one item is returned. When {end} + points to an item before {idx} this is an error. + See |list-index| for possible values of {idx} and {end}. + Example: > + :echo "last item: " . remove(mylist, -1) + :call remove(mylist, 0, 9) +remove({dict}, {key}) + Remove the entry from {dict} with key {key}. Example: > + :echo "removed " . remove(dict, "one") +< If there is no {key} in {dict} this is an error. + + Use |delete()| to remove a file. + rename({from}, {to}) *rename()* - ファイルの名前を{from}から{to}へ変える。ファイルシステムを超え + ファイルの名前を{from}から{to}へ変える。ファイルシステムを越え てファイルを移動するのにも使用できる。結果は数値で、成功すれば - 0、失敗すれば1になる。 + 0、失敗すれば非ゼロになる。 + This function is not available in the |sandbox|. + +repeat({expr}, {count}) *repeat()* + Repeat {expr} {count} times and return the concatenated + result. Example: > + :let separator = repeat('-', 80) +< When {count} is zero or negative the result is empty. + When {expr} is a |List| the result is {expr} concatenated + {count} times. Example: > + :let longlist = repeat(['a', 'b'], 3) +< Results in ['a', 'b', 'a', 'b', 'a', 'b']. + + +resolve({filename}) *resolve()* *E655* + On MS-Windows, when {filename} is a shortcut (a .lnk file), + returns the path the shortcut points to in a simplified form. + On Unix, repeat resolving symbolic links in all path + components of {filename} and return the simplified result. + To cope with link cycles, resolving of symbolic links is + stopped after 100 iterations. + On other systems, return the simplified {filename}. + The simplification step is done as by |simplify()|. + resolve() keeps a leading path component specifying the + current directory (provided the result is still a relative + path name) and also keeps a trailing path separator. + + *reverse()* +reverse({list}) Reverse the order of items in {list} in-place. Returns + {list}. + If you want a list to remain unmodified make a copy first: > + :let revlist = reverse(copy(mylist)) + +search({pattern} [, {flags} [, {stopline}]]) *search()* + Search for regexp pattern {pattern}. The search starts at the + cursor position (you can use |cursor()| to set it). + + {flags} is a String, which can contain these character flags: + 'b' search backward instead of forward + 'c' accept a match at the cursor position + 'e' move to the End of the match + 'n' do Not move the cursor + 'p' return number of matching sub-pattern (see below) + 's' set the ' mark at the previous location of the cursor + 'w' wrap around the end of the file + 'W' don't wrap around the end of the file + If neither 'w' or 'W' is given, the 'wrapscan' option applies. + + If the 's' flag is supplied, the ' mark is set, only if the + cursor is moved. The 's' flag cannot be combined with the 'n' + flag. + + 'ignorecase', 'smartcase' and 'magic' are used. + + When the {stopline} argument is given then the search stops + after searching this line. This is useful to restrict the + search to a range of lines. Examples: > + let match = search('(', 'b', line("w0")) + let end = search('END', '', line("w$")) +< When {stopline} is used and it is not zero this also implies + that the search does not wrap around the end of the file. + + If there is no match a 0 is returned and the cursor doesn't + move. No error message is given. + When a match has been found its line number is returned. + *search()-sub-match* + With the 'p' flag the returned value is one more than the + first sub-match in \(\). One if none of them matched but the + whole pattern did match. + To get the column number too use |searchpos()|. + + The cursor will be positioned at the match, unless the 'n' + flag is used. + + Example (goes over all files in the argument list): > + :let n = 1 + :while n <= argc() " loop over all files in arglist + : exe "argument " . n + : " start at the last char in the file and wrap for the + : " first search to find match at start of file + : normal G$ + : let flags = "w" + : while search("foo", flags) > 0 + : s/foo/bar/g + : let flags = "W" + : endwhile + : update " write the file if modified + : let n = n + 1 + :endwhile +< + Example for using some flags: > + :echo search('\<if\|\(else\)\|\(endif\)', 'ncpe') +< This will search for the keywords "if", "else", and "endif" + under or after the cursor. Because of the 'p' flag, it + returns 1, 2, or 3 depending on which keyword is found, or 0 + if the search fails. With the cursor on the first word of the + line: + if (foo == 0) | let foo = foo + 1 | endif ~ + the function returns 1. Without the 'c' flag, the function + finds the "endif" and returns 3. The same thing happens + without the 'e' flag if the cursor is on the "f" of "if". + The 'n' flag tells the function not to move the cursor. + + +searchdecl({name} [, {global} [, {thisblock}]]) *searchdecl()* + Search for the declaration of {name}. + + With a non-zero {global} argument it works like |gD|, find + first match in the file. Otherwise it works like |gd|, find + first match in the function. + + With a non-zero {thisblock} argument matches in a {} block + that ends before the cursor position are ignored. Avoids + finding variable declarations only valid in another scope. + + Moves the cursor to the found match. + Returns zero for success, non-zero for failure. + Example: > + if searchdecl('myvar') == 0 + echo getline('.') + endif +< + *searchpair()* +searchpair({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) + Search for the match of a nested start-end pair. This can be + used to find the "endif" that matches an "if", while other + if/endif pairs in between are ignored. + The search starts at the cursor. The default is to search + forward, include 'b' in {flags} to search backward. + If a match is found, the cursor is positioned at it and the + line number is returned. If no match is found 0 or -1 is + returned and the cursor doesn't move. No error message is + given. + + {start}, {middle} and {end} are patterns, see |pattern|. They + must not contain \( \) pairs. Use of \%( \) is allowed. When + {middle} is not empty, it is found when searching from either + direction, but only when not in a nested start-end pair. A + typical use is: > + searchpair('\<if\>', '\<else\>', '\<endif\>') +< By leaving {middle} empty the "else" is skipped. + + {flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with + |search()|. Additionally: + 'r' Repeat until no more matches found; will find the + outer pair + 'm' return number of Matches instead of line number with + the match; will be > 1 when 'r' is used. + + When a match for {start}, {middle} or {end} is found, the + {skip} expression is evaluated with the cursor positioned on + the start of the match. It should return non-zero if this + match is to be skipped. E.g., because it is inside a comment + or a string. + When {skip} is omitted or empty, every match is accepted. + When evaluating {skip} causes an error the search is aborted + and -1 returned. + + For {stopline} see |search()|. + + The value of 'ignorecase' is used. 'magic' is ignored, the + patterns are used like it's on. + + The search starts exactly at the cursor. A match with + {start}, {middle} or {end} at the next character, in the + direction of searching, is the first one found. Example: > + if 1 + if 2 + endif 2 + endif 1 +< When starting at the "if 2", with the cursor on the "i", and + searching forwards, the "endif 2" is found. When starting on + the character just before the "if 2", the "endif 1" will be + found. That's because the "if 2" will be found first, and + then this is considered to be a nested if/endif from "if 2" to + "endif 2". + When searching backwards and {end} is more than one character, + it may be useful to put "\zs" at the end of the pattern, so + that when the cursor is inside a match with the end it finds + the matching start. + + Example, to find the "endif" command in a Vim script: > + + :echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W', + \ 'getline(".") =~ "^\\s*\""') + +< The cursor must be at or after the "if" for which a match is + to be found. Note that single-quote strings are used to avoid + having to double the backslashes. The skip expression only + catches comments at the start of a line, not after a command. + Also, a word "en" or "if" halfway a line is considered a + match. + Another example, to search for the matching "{" of a "}": > + + :echo searchpair('{', '', '}', 'bW') + +< This works when the cursor is at or before the "}" for which a + match is to be found. To reject matches that syntax + highlighting recognized as strings: > + + :echo searchpair('{', '', '}', 'bW', + \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"') +< + *searchpairpos()* +searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) + Same as searchpair(), but returns a |List| with the line and + column position of the match. The first element of the |List| + is the line number and the second element is the byte index of + the column position of the match. If no match is found, + returns [0, 0]. +> + :let [lnum,col] = searchpairpos('{', '', '}', 'n') +< + See |match-parens| for a bigger and more useful example. + +searchpos({pattern} [, {flags} [, {stopline}]]) *searchpos()* + Same as |search()|, but returns a |List| with the line and + column position of the match. The first element of the |List| + is the line number and the second element is the byte index of + the column position of the match. If no match is found, + returns [0, 0]. + Example: > + :let [lnum, col] = searchpos('mypattern', 'n') + +< When the 'p' flag is given then there is an extra item with + the sub-pattern match number |search()-sub-match|. Example: > + :let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np') +< In this example "submatch" is 2 when a lowercase letter is + found |/\l|, 3 when an uppercase letter is found |/\u|. + +server2client( {clientid}, {string}) *server2client()* + Send a reply string to {clientid}. The most recent {clientid} + that sent a string can be retrieved with expand("<client>"). + {only available when compiled with the |+clientserver| feature} + Note: + This id has to be stored before the next command can be + received. I.e. before returning from the received command and + before calling any commands that waits for input. + See also |clientserver|. + Example: > + :echo server2client(expand("<client>"), "HELLO") +< +serverlist() *serverlist()* + Return a list of available server names, one per line. + When there are no servers or the information is not available + an empty string is returned. See also |clientserver|. + {only available when compiled with the |+clientserver| feature} + Example: > + :echo serverlist() +< +setbufvar({expr}, {varname}, {val}) *setbufvar()* + Set option or local variable {varname} in buffer {expr} to + {val}. + This also works for a global or local window option, but it + doesn't work for a global or local window variable. + For a local window option the global value is unchanged. + For the use of {expr}, see |bufname()| above. + Note that the variable name without "b:" must be used. + Examples: > + :call setbufvar(1, "&mod", 1) + :call setbufvar("todo", "myvar", "foobar") +< This function is not available in the |sandbox|. + +setcmdpos({pos}) *setcmdpos()* + Set the cursor position in the command line to byte position + {pos}. The first position is 1. + Use |getcmdpos()| to obtain the current position. + Only works while editing the command line, thus you must use + |c_CTRL-\_e|, |c_CTRL-R_=| or |c_CTRL-R_CTRL-R| with '='. For + |c_CTRL-\_e| and |c_CTRL-R_CTRL-R| with '=' the position is + set after the command line is set to the expression. For + |c_CTRL-R_=| it is set after evaluating the expression but + before inserting the resulting text. + When the number is too big the cursor is put at the end of the + line. A number smaller than one has undefined results. + Returns 0 when successful, 1 when not editing the command + line. + +setline({lnum}, {line}) *setline()* + Set line {lnum} of the current buffer to {line}. + {lnum} is used like with |getline()|. + When {lnum} is just below the last line the {line} will be + added as a new line. + If this succeeds, 0 is returned. If this fails (most likely + because {lnum} is invalid) 1 is returned. Example: > + :call setline(5, strftime("%c")) +< When {line} is a |List| then line {lnum} and following lines + will be set to the items in the list. Example: > + :call setline(5, ['aaa', 'bbb', 'ccc']) +< This is equivalent to: > + :for [n, l] in [[5, 6, 7], ['aaa', 'bbb', 'ccc']] + : call setline(n, l) + :endfor +< Note: The '[ and '] marks are not set. + +setloclist({nr}, {list} [, {action}]) *setloclist()* + Create or replace or add to the location list for window {nr}. + When {nr} is zero the current window is used. For a location + list window, the displayed location list is modified. For an + invalid window number {nr}, -1 is returned. + Otherwise, same as setqflist(). + + *setpos()* +setpos({expr}, {list}) + Set the position for {expr}. Possible values: + . the cursor + 'x mark x + + {list} must be a |List| with four numbers: + [bufnum, lnum, col, off] + + "bufnum" is the buffer number. Zero can be used for the + current buffer. Setting the cursor is only possible for + the current buffer. To set a mark in another buffer you can + use the |bufnr()| function to turn a file name into a buffer + number. + Does not change the jumplist. + + "lnum" and "col" are the position in the buffer. The first + column is 1. Use a zero "lnum" to delete a mark. + + The "off" number is only used when 'virtualedit' is set. Then + it is the offset in screen columns from the start of the + character. E.g., a position within a <Tab> or after the last + character. + + Also see |getpos()| + + This does not restore the preferred column for moving + vertically. See |winrestview()| for that. + + +setqflist({list} [, {action}]) *setqflist()* + Create or replace or add to the quickfix list using the items + in {list}. Each item in {list} is a dictionary. + Non-dictionary items in {list} are ignored. Each dictionary + item can contain the following entries: + + bufnr buffer number; must be the number of a valid + buffer + filename name of a file; only used when "bufnr" is not + present or it is invalid. + lnum line number in the file + pattern search pattern used to locate the error + col column number + vcol when non-zero: "col" is visual column + when zero: "col" is byte index + nr error number + text description of the error + type single-character error type, 'E', 'W', etc. + + The "col", "vcol", "nr", "type" and "text" entries are + optional. Either "lnum" or "pattern" entry can be used to + locate a matching error line. + If the "filename" and "bufnr" entries are not present or + neither the "lnum" or "pattern" entries are present, then the + item will not be handled as an error line. + If both "pattern" and "lnum" are present then "pattern" will + be used. + Note that the list is not exactly the same as what + |getqflist()| returns. + + If {action} is set to 'a', then the items from {list} are + added to the existing quickfix list. If there is no existing + list, then a new list is created. If {action} is set to 'r', + then the items from the current quickfix list are replaced + with the items from {list}. If {action} is not present or is + set to ' ', then a new list is created. + + Returns zero for success, -1 for failure. + + This function can be used to create a quickfix list + independent of the 'errorformat' setting. Use a command like + ":cc 1" to jump to the first position. + + + *setreg()* +setreg({regname}, {value} [,{options}]) + Set the register {regname} to {value}. + If {options} contains "a" or {regname} is upper case, + then the value is appended. + {options} can also contains a register type specification: + "c" or "v" |characterwise| mode + "l" or "V" |linewise| mode + "b" or "<CTRL-V>" |blockwise-visual| mode + If a number immediately follows "b" or "<CTRL-V>" then this is + used as the width of the selection - if it is not specified + then the width of the block is set to the number of characters + in the longest line (counting a <Tab> as 1 character). + + If {options} contains no register settings, then the default + is to use character mode unless {value} ends in a <NL>. + Setting the '=' register is not possible. + Returns zero for success, non-zero for failure. + + Examples: > + :call setreg(v:register, @*) + :call setreg('*', @%, 'ac') + :call setreg('a', "1\n2\n3", 'b5') + +< This example shows using the functions to save and restore a + register. > + :let var_a = getreg('a', 1) + :let var_amode = getregtype('a') + .... + :call setreg('a', var_a, var_amode) + +< You can also change the type of a register by appending + nothing: > + :call setreg('a', '', 'al') + +settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()* + Set option or local variable {varname} in window {winnr} to + {val}. + Tabs are numbered starting with one. For the current tabpage + use |setwinvar()|. + When {winnr} is zero the current window is used. + This also works for a global or local buffer option, but it + doesn't work for a global or local buffer variable. + For a local buffer option the global value is unchanged. + Note that the variable name without "w:" must be used. + Vim briefly goes to the tab page {tabnr}, this may trigger + TabLeave and TabEnter autocommands. + Examples: > + :call settabwinvar(1, 1, "&list", 0) + :call settabwinvar(3, 2, "myvar", "foobar") +< This function is not available in the |sandbox|. + +setwinvar({nr}, {varname}, {val}) *setwinvar()* + Like |settabwinvar()| for the current tab page. + Examples: > + :call setwinvar(1, "&list", 0) + :call setwinvar(2, "myvar", "foobar") + +shellescape({string}) *shellescape()* + Escape {string} for use as shell command argument. + On MS-Windows and MS-DOS, when 'shellslash' is not set, it + will enclose {string} double quotes and double all double + quotes within {string}. + For other systems, it will enclose {string} in single quotes + and replace all "'" with "'\''". + Example: > + :echo shellescape('c:\program files\vim') +< results in: + "c:\program files\vim" ~ + Example usage: > + :call system("chmod +x -- " . shellescape(expand("%"))) + + +simplify({filename}) *simplify()* + Simplify the file name as much as possible without changing + the meaning. Shortcuts (on MS-Windows) or symbolic links (on + Unix) are not resolved. If the first path component in + {filename} designates the current directory, this will be + valid for the result as well. A trailing path separator is + not removed either. + Example: > + simplify("./dir/.././/file/") == "./file/" +< Note: The combination "dir/.." is only removed if "dir" is + a searchable directory or does not exist. On Unix, it is also + removed when "dir" is a symbolic link within the same + directory. In order to resolve all the involved symbolic + links before simplifying the path name, use |resolve()|. + + +sort({list} [, {func}]) *sort()* *E702* + Sort the items in {list} in-place. Returns {list}. If you + want a list to remain unmodified make a copy first: > + :let sortedlist = sort(copy(mylist)) +< Uses the string representation of each item to sort on. + Numbers sort after Strings, |Lists| after Numbers. + For sorting text in the current buffer use |:sort|. + When {func} is given and it is one then case is ignored. + When {func} is a |Funcref| or a function name, this function + is called to compare items. The function is invoked with two + items as argument and must return zero if they are equal, 1 if + the first one sorts after the second one, -1 if the first one + sorts before the second one. Example: > + func MyCompare(i1, i2) + return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1 + endfunc + let sortedlist = sort(mylist, "MyCompare") +< - *setline()* -setline({lnum}, {line}) - カレントバッファの{lnum}行目を{line}にする。成功した場合0が返 - される。失敗した(大抵は{lnum}に無効な値を設定したことによる)場 - 合には1が返される。例: -> :call setline(5, strftime("%c")) + *soundfold()* +soundfold({word}) + Return the sound-folded equivalent of {word}. Uses the first + language in 'spellang' for the current window that supports + soundfolding. 'spell' must be set. When no sound folding is + possible the {word} is returned unmodified. + This can be used for making spelling suggestions. Note that + the method can be quite slow. + + *spellbadword()* +spellbadword([{sentence}]) + Without argument: The result is the badly spelled word under + or after the cursor. The cursor is moved to the start of the + bad word. When no bad word is found in the cursor line the + result is an empty string and the cursor doesn't move. + + With argument: The result is the first word in {sentence} that + is badly spelled. If there are no spelling mistakes the + result is an empty string. + + The return value is a list with two items: + - The badly spelled word or an empty string. + - The type of the spelling error: + "bad" spelling mistake + "rare" rare word + "local" word only valid in another region + "caps" word should start with Capital + Example: > + echo spellbadword("the quik brown fox") +< ['quik', 'bad'] ~ + + The spelling information for the current window is used. The + 'spell' option must be set and the value of 'spelllang' is + used. + + *spellsuggest()* +spellsuggest({word} [, {max} [, {capital}]]) + Return a |List| with spelling suggestions to replace {word}. + When {max} is given up to this number of suggestions are + returned. Otherwise up to 25 suggestions are returned. + + When the {capital} argument is given and it's non-zero only + suggestions with a leading capital will be given. Use this + after a match with 'spellcapcheck'. + + {word} can be a badly spelled word followed by other text. + This allows for joining two words that were split. The + suggestions also include the following text, thus you can + replace a line. + + {word} may also be a good word. Similar words will then be + returned. {word} itself is not included in the suggestions, + although it may appear capitalized. + + The spelling information for the current window is used. The + 'spell' option must be set and the values of 'spelllang' and + 'spellsuggest' are used. + + +split({expr} [, {pattern} [, {keepempty}]]) *split()* + Make a |List| out of {expr}. When {pattern} is omitted or + empty each white-separated sequence of characters becomes an + item. + Otherwise the string is split where {pattern} matches, + removing the matched characters. + When the first or last item is empty it is omitted, unless the + {keepempty} argument is given and it's non-zero. + Other empty items are kept when {pattern} matches at least one + character or when {keepempty} is non-zero. + Example: > + :let words = split(getline('.'), '\W\+') +< To split a string in individual characters: > + :for c in split(mystring, '\zs') +< If you want to keep the separator you can also use '\zs': > + :echo split('abc:def:ghi', ':\zs') +< ['abc:', 'def:', 'ghi'] ~ + Splitting a table where the first element can be empty: > + :let items = split(line, ':', 1) +< The opposite function is |join()|. + + +str2nr( {expr} [, {base}]) *str2nr()* + Convert string {expr} to a number. + {base} is the conversion base, it can be 8, 10 or 16. + When {base} is omitted base 10 is used. This also means that + a leading zero doesn't cause octal conversion to be used, as + with the default String to Number conversion. + When {base} is 16 a leading "0x" or "0X" is ignored. With a + different base the result will be zero. + Text after the number is silently ignored. *strftime()* strftime({format} [, {time}]) @@ -1469,8 +4541,52 @@ strftime({format} [, {time}]) > :echo strftime("%c", getftime("file.c")) > file.cの更新時刻を表示 +< Not available on all systems. To check use: > + :if exists("*strftime") + +stridx({haystack}, {needle} [, {start}]) *stridx()* + The result is a Number, which gives the byte index in + {haystack} of the first occurrence of the String {needle}. + If {start} is specified, the search starts at index {start}. + This can be used to find a second match: > + :let comma1 = stridx(line, ",") + :let comma2 = stridx(line, ",", comma1 + 1) +< The search is done case-sensitive. + For pattern searches use |match()|. + -1 is returned if the {needle} does not occur in {haystack}. + See also |strridx()|. + Examples: > + :echo stridx("An Example", "Example") 3 + :echo stridx("Starting point", "Start") 0 + :echo stridx("Starting point", "start") -1 +< *strstr()* *strchr()* + stridx() works similar to the C function strstr(). When used + with a single character it works similar to strchr(). + + *string()* +string({expr}) Return {expr} converted to a String. If {expr} is a Number, + String or a composition of them, then the result can be parsed + back with |eval()|. + {expr} type result ~ + String 'string' + Number 123 + Funcref function('name') + List [item, item] + Dictionary {key: value, key: value} + Note that in String values the ' character is doubled. + Also see |strtrans()|. + *strlen()* strlen({expr}) 結果は数値で、文字列{expr}の長さ。 + If you want to count the number of multi-byte characters (not + counting composing characters) use something like this: > + + :let len = strlen(substitute(str, ".", "x", "g")) +< + If the argument is a Number it is first converted to a String. + For other types an error is given. + Also see |len()|. + *strpart()* strpart({src}, {start}, {len}) @@ -1482,7 +4598,25 @@ strpart({src}, {start}, {len}) > strpart("abcdefg", 5, 4) == "fg" 注意: 文字列の最初の文字を指定するためには、{start}は0でなけれ ばならない。カーソルのある位置から3文字を取得する例: -> strpart(getline(line(".")), col(".") - 1, 3) +> strpart(getline("."), col(".") - 1, 3) + +strridx({haystack}, {needle} [, {start}]) *strridx()* + The result is a Number, which gives the byte index in + {haystack} of the last occurrence of the String {needle}. + When {start} is specified, matches beyond this index are + ignored. This can be used to find a match before a previous + match: > + :let lastcomma = strridx(line, ",") + :let comma2 = strridx(line, ",", lastcomma - 1) +< The search is done case-sensitive. + For pattern searches use |match()|. + -1 is returned if the {needle} does not occur in {haystack}. + If the {needle} is empty the length of {haystack} is returned. + See also |stridx()|. Examples: > + :echo strridx("an angry armadillo", "an") 3 +< *strrchr()* + When used with a single character it works similar to the C + function strrchr(). *strtrans()* strtrans({expr}) @@ -1493,6 +4627,15 @@ strtrans({expr}) これはレジスタの中の改行を、改行として表示する変わりに"^@"と表 示する。 +submatch({nr}) *submatch()* + Only for an expression in a |:substitute| command. Returns + the {nr}'th submatch of the matched text. When {nr} is 0 + the whole matched text is returned. + Example: > + :s/\d\+/\=submatch(0) + 1/ +< This finds the first number in the line and adds one to it. + A line break is included as a newline character. + *substitute()* substitute({expr}, {pat}, {sub}, {flags}) 結果は文字列で、{expr}内で最初に{pat}にマッチした部分を{sub}に @@ -1514,14 +4657,16 @@ substitute({expr}, {pat}, {sub}, {flags}) > :echo substitute("testing", ".*", "\\U\\0", "") 結果は"TESTING"。 - *synID()* -synID({line}, {col}, {trans}) - 結果は数値で、現在のウィンドウ内での位置{line}と{col}の位置の +synID({lnum}, {col}, {trans}) *synID()* + 結果は数値で、現在のウィンドウ内での位置{lnum}と{col}の位置の シンタックスID。 シンタックスIDは|synIDattr()|と|synIDtrans()|に渡すことで、テ - キストについてのシンタックス情報を取得するのに使用できる。最左 - のカラムを指定するには{col}に1を、最初の行を指定するには{line} - に1を指定する。 + キストについてのシンタックス情報を取得するのに使用できる。 + + 最左のカラムを指定するには{col}に1を、最初の行を指定するには + {line}に1を指定する。'synmaxcol' applies, in a longer line + zero is returned. + {trans}が非ゼロならば、透過属性のアイテムは省略され、実際に表 示されているアイテムが評価対象になる。これは実際に有効になって いるカラーを知りたい時に役に立つ。{trans}がゼロならば、透過属 @@ -1555,6 +4700,7 @@ synIDattr({synID}, {what} [, {mode}]) "reverse" 反転なら"1" "inverse" 反転(原文inverse)なら"1"(reverseと等価) "underline" 下線付きなら"1" + "undercurl" "1" if undercurled GUIではなく、ctermモードが要求されていない場合、"fg#"は"fg"と 同じに、"bg#"は"bg"と同じになる。 @@ -1569,19 +4715,117 @@ synIDtrans({synID}) ":highlight link"によって与えられるハイライトのリンクはこれに 従っている。 - *system()* -system({expr}) シェルコマンド{expr}の実行結果を得る。注意: {expr}内の改行はコ - マンドを失敗させるだろう。対話的なコマンドを使用することはでき - ない。 - 結果は文字列。システムに依存しないような結果にするために、シェ - ルの出力にはマッキントッシュにおいては<CR>を<NL>に変換し、DOS - 系のシステムにおいては<CR><NL>を<NL>に変換するフィルタを作用さ - せている。 - コマンドの結果を取り込むためにオプション'shellredir'が使用され - る。オプション'shell'に応じて、標準出力を取りこむならば">"を、 - 標準出力に加えて標準エラー出力もとりこむならば">&"(csh系)、標 - 準エラー出力を取りこむならば"2>"(sh系)を使用する。 +system({expr} [, {input}]) *system()* *E677* + シェルコマンド{expr}の実行結果を得る。 + {input}が与えられた場合は、この文字列はファイルに書き出され、 + コマンドの標準入力として渡される。この文字列はそのまま(as-is) + 書き出され、正しい改行文字を使うよう自分自身で気を付けなければ + ならない。パイプは使われない。 + 注意: {expr}内の改行はコマンドを失敗させるだろう。 + 'shellquote'と'shellxquote'に入っている文字は問題を引き起こす + かもしれない。 + 対話的なコマンドを使用することはできない。 + 結果は文字列。例: > + + :let files = system("ls") + +< システムに依存しないような結果にするために、シェルの出力にはマッ + キントッシュにおいては<CR>を<NL>に変換し、DOS系のシステムにお + いては<CR><NL>を<NL>に変換するフィルタを作用させている。 + 実行されるコマンドはいくつかのオプションを適用して構成される: + 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote' + ({tmp}は自動的に生成されるファイル名) + UnixとOS/2ではコマンドの連結ができるように{expr}の両側に波括弧 + が置かれる。 + + コマンドは「coocked」モードで実行される。そのためCTRL-Cでコマ + ンドを中断できる(少なくともUnixでは)。 + エラーコードは|v:shell_error|に格納される。 + この関数は|restrict-mode|では失敗する。 + + Note that any wrong value in the options mentioned above may + make the function fail. It has also been reported to fail + when using a security agent application. + Unlike ":!cmd" there is no automatic check for changed files. + Use |:checktime| to force a check. + +tabpagebuflist([{arg}]) *tabpagebuflist()* + The result is a |List|, where each item is the number of the + buffer associated with each window in the current tab page. + {arg} specifies the number of tab page to be used. When + omitted the current tab page is used. + When {arg} is invalid the number zero is returned. + To get a list of all buffers in all tabs use this: > + tablist = [] + for i in range(tabpagenr('$')) + call extend(tablist, tabpagebuflist(i + 1)) + endfor +< Note that a buffer may appear in more than one window. + + +tabpagenr([{arg}]) *tabpagenr()* + The result is a Number, which is the number of the current + tab page. The first tab page has number 1. + When the optional argument is "$", the number of the last tab + page is returned (the tab page count). + The number can be used with the |:tab| command. + + +tabpagewinnr({tabarg}, [{arg}]) *tabpagewinnr()* + Like |winnr()| but for tab page {arg}. + {tabarg} specifies the number of tab page to be used. + {arg} is used like with |winnr()|: + - When omitted the current window number is returned. This is + the window which will be used when going to this tab page. + - When "$" the number of windows is returned. + - When "#" the previous window nr is returned. + Useful examples: > + tabpagewinnr(1) " current window of tab page 1 + tabpagewinnr(4, '$') " number of windows in tab page 4 +< When {tabarg} is invalid zero is returned. + + *tagfiles()* +tagfiles() Returns a |List| with the file names used to search for tags + for the current buffer. This is the 'tags' option expanded. + + +taglist({expr}) *taglist()* + Returns a list of tags matching the regular expression {expr}. + Each list item is a dictionary with at least the following + entries: + name Name of the tag. + filename Name of the file where the tag is + defined. It is either relative to the + current directory or a full path. + cmd Ex command used to locate the tag in + the file. + kind Type of the tag. The value for this + entry depends on the language specific + kind values. Only available when + using a tags file generated by + Exuberant ctags or hdrtag. + static A file specific tag. Refer to + |static-tag| for more information. + More entries may be present, depending on the content of the + tags file: access, implementation, inherits and signature. + Refer to the ctags documentation for information about these + fields. For C code the fields "struct", "class" and "enum" + may appear, they give the name of the entity the tag is + contained in. + + The ex-command 'cmd' can be either an ex search pattern, a + line number or a line number followed by a byte number. + + If there are no matching tags, then an empty list is returned. + + To get an exact tag match, the anchors '^' and '$' should be + used in {expr}. Refer to |tag-regexp| for more information + about the tag search regular expression pattern. + + Refer to |'tags'| for information about how the tags file is + located by Vim. Refer to |tags-file-format| for the format of + the tags file generated by the different ctags tools. *tempname()* *temp-file-name* tempname() @@ -1591,18 +4835,48 @@ tempname() > let tmpfile = tempname() > exe "redir > " . tmpfile - *visualmode()* -visualmode() - 結果は文字列で、最後に使われたVisualモードを教えてくれる。初期 - 状態では単に空文字列を返すだけだが、一度でもVisualモードが使わ - れた場合、その種類によって"v"か"V"か"<CTRL-V>"(CTRL-Vのキャラ - クタが1文字で)返される。これはそれぞれキャラクタ選択、行選択、 - ブロック選択を意味している。 - 例: -> exe "normal " . visualmode() - これは最後に使われたのと同じVisualモードに入る。また、スクリプ - トの動作を、最後に使われたVisualモードに応じて変更したい場合に - も便利だろう。 +tolower({expr}) *tolower()* + The result is a copy of the String given, with all uppercase + characters turned into lowercase (just like applying |gu| to + the string). + +toupper({expr}) *toupper()* + The result is a copy of the String given, with all lowercase + characters turned into uppercase (just like applying |gU| to + the string). + +tr({src}, {fromstr}, {tostr}) *tr()* + The result is a copy of the {src} string with all characters + which appear in {fromstr} replaced by the character in that + position in the {tostr} string. Thus the first character in + {fromstr} is translated into the first character in {tostr} + and so on. Exactly like the unix "tr" command. + This code also deals with multibyte characters properly. + + Examples: > + echo tr("hello there", "ht", "HT") +< returns "Hello THere" > + echo tr("<blob>", "<>", "{}") +< returns "{blob}" + + *type()* +type({expr}) The result is a Number, depending on the type of {expr}: + Number: 0 + String: 1 + Funcref: 2 + List: 3 + Dictionary: 4 + To avoid the magic numbers it should be used this way: > + :if type(myvar) == type(0) + :if type(myvar) == type("") + :if type(myvar) == type(function("tr")) + :if type(myvar) == type([]) + :if type(myvar) == type({}) + +values({dict}) *values()* + Return a |List| with all the values of {dict}. The |List| is + in arbitrary order. + *virtcol()* virtcol({expr}) @@ -1612,16 +4886,40 @@ virtcol({expr}) ブ文字)が指定した位置にあった場合には、戻り値はそのタブの最後 のカラム(列)位置になる。具体的に、'ts'が8に設定された状態でカ ラム1に<Tab>があった場合、戻ってくる値は8になる。 + For the use of {expr} see |col()|. Additionally you can use + [lnum, col]: a |List| with the line and column number. When + "lnum" or "col" is out of range then virtcol() returns zero. + When 'virtualedit' is used it can be [lnum, col, off], where + "off" is the offset in screen columns from the start of the + character. E.g., a position within a <Tab> or after the last + character. 可能な位置指定: . カーソルの位置 'x マークxの位置(マークが設定されていない場合、0が返 る) 現在のファイルに対して設定されているマークだけが使用可能なこと に注意。 + 例: > + virtcol(".") "foo^Lbar"の"^L"の位置にカーソル、戻り値5 + virtcol("$") with text "foo^Lbar", returns 9 + virtcol("'t") " there"の'h'に'tを設定、戻り値6 +< 最初の列は1となる。0はエラーとして返される。 + A more advanced example that echoes the maximum length of + all lines: > + echo max(map(range(1, line('$')), "virtcol([v:val, '$'])")) + + *visualmode()* +visualmode() + 結果は文字列で、最後に使われたVisualモードを教えてくれる。初期 + 状態では単に空文字列を返すだけだが、一度でもVisualモードが使わ + れた場合、その種類によって"v"か"V"か"<CTRL-V>"(CTRL-Vのキャラ + クタが1文字で)返される。これはそれぞれキャラクタ選択、行選択、 + ブロック選択を意味している。 例: -> virtcol(".") "foo^Lbar"の"^L"の位置にカーソル、戻り値5 -> virtcol("'t") " there"の'h'に'tを設定、戻り値6 - 最初の列は1となる。0はエラーとして返される。 +> exe "normal " . visualmode() + これは最後に使われたのと同じVisualモードに入る。また、スクリプ + トの動作を、最後に使われたVisualモードに応じて変更したい場合に + も便利だろう。 *winbufnr()* winbufnr({nr}) 結果は数値で、{nr}番目のウィンドウに関連付けられているバッファ @@ -1631,6 +4929,11 @@ winbufnr({nr}) 結果は数値で、{nr}番目のウィンドウに関連付け 例: > echo "The file in the current window is " . bufname(winbufnr(0)) + *wincol()* +wincol() The result is a Number, which is the virtual column of the + cursor in the window. This is counting screen cells from the + left side of the window. The leftmost column is one. + *winheight()* winheight({nr}) 結果は数値で、{nr}で示されるウィンドウの高さ(行数)を示す。{nr} @@ -1640,28 +4943,126 @@ winheight({nr}) 例: > echo "The current window has " . winheight(0) . " lines." + *winline()* +winline() The result is a Number, which is the screen line of the cursor + in the window. This is counting screen lines from the top of + the window. The first line is one. + If the cursor was moved the view on the file will be updated + first, this may cause a scroll. + *winnr()* winnr() 結果は現在のウィンドウを示す数値。最上位のウィンドウは1であ る。 - + When the optional argument is "$", the number of the + last window is returned (the window count). + When the optional argument is "#", the number of the last + accessed window is returned (where |CTRL-W_p| goes to). + If there is no previous window or it is in another tab page 0 + is returned. + The number can be used with |CTRL-W_w| and ":wincmd w" + |:wincmd|. + Also see |tabpagewinnr()|. + + *winrestcmd()* +winrestcmd() Returns a sequence of |:resize| commands that should restore + the current window sizes. Only works properly when no windows + are opened or closed and the current window and tab page is + unchanged. + Example: > + :let cmd = winrestcmd() + :call MessWithWindowSizes() + :exe cmd +< + *winrestview()* +winrestview({dict}) + Uses the |Dictionary| returned by |winsaveview()| to restore + the view of the current window. + If you have changed the values the result is unpredictable. + If the window size changed the result won't be the same. + + *winsaveview()* +winsaveview() Returns a |Dictionary| that contains information to restore + the view of the current window. Use |winrestview()| to + restore the view. + This is useful if you have a mapping that jumps around in the + buffer and you want to go back to the original view. + This does not save fold information. Use the 'foldenable' + option to temporarily switch off folding, so that folds are + not opened when moving around. + The return value includes: + lnum cursor line number + col cursor column + coladd cursor column offset for 'virtualedit' + curswant column for vertical movement + topline first line in the window + topfill filler lines, only in diff mode + leftcol first column displayed + skipcol columns skipped + Note that no option values are saved. + + +winwidth({nr}) *winwidth()* + The result is a Number, which is the width of window {nr}. + When {nr} is zero, the width of the current window is + returned. When window {nr} doesn't exist, -1 is returned. + An existing window always has a width of zero or more. + Examples: > + :echo "The current window has " . winwidth(0) . " columns." + :if winwidth(0) <= 50 + : exe "normal 50\<C-W>|" + :endif +< + *writefile()* +writefile({list}, {fname} [, {binary}]) + Write |List| {list} to file {fname}. Each list item is + separated with a NL. Each list item must be a String or + Number. + When {binary} is equal to "b" binary mode is used: There will + not be a NL after the last list item. An empty item at the + end does cause the last line in the file to end in a NL. + All NL characters are replaced with a NUL character. + Inserting CR characters needs to be done before passing {list} + to writefile(). + An existing file is overwritten, if possible. + When the write fails -1 is returned, otherwise 0. There is an + error message if the file can't be created or when writing + fails. + Also see |readfile()|. + To copy a file byte for byte: > + :let fl = readfile("foo", "b") + :call writefile(fl, "foocopy", "b") +< *feature-list* -機能は大別して2つの系統に分けられる: -1. コンパイル時に|+feature-list|とした時にだけサポートされる機能。例: -> :if has("cindent") -2. ある状態の時にだけサポートされる機能。例: -> :if has("gui_running") +機能は大別して3つの系統に分けられる: +1. コンパイル時に|+feature-list|とした時にだけサポートされる機能。例: > + :if has("cindent") +2. ある状態の時にだけサポートされる機能。例: > + :if has("gui_running") +< *has-patch* +3. Included patches. First check |v:version| for the version of Vim. + Then the "patch123" feature means that patch 123 has been included for + this version. Example (checking version 6.2.148 or later): > + :if v:version > 602 || v:version == 602 && has("patch148") +< Note that it's possible for patch 147 to be omitted even though 148 is + included. + all_builtin_terms 総ての組込みターミナルを有効にしてコンパイル amiga AMIGAバージョン +arabic Compiled with Arabic support |Arabic|. arp ARPをサポート (Amiga) -autocmd autocommandsをサポート +autocmd autocommandsをサポート。|autocommand| +balloon_eval Compiled with |balloon-eval| support. +balloon_multiline GUI supports multiline balloons. beos BeOSバージョン browse |:browse|をサポートし、browseが恐らく動作する builtin_terms 幾つかの組込みターミナルが有効 byte_offset 'statusline'において'o'がサポートされる cindent 'cindent'をサポート +clientserver Compiled with remote invocation support |clientserver|. clipboard 'clipboard'をサポート cmdline_compl |cmdline-completion| コマンドライン補完をサポート +cmdline_hist Compiled with |cmdline-history| support. cmdline_info 'showcmd'と'ruler'をサポート comments |'comments'|をサポート cryptv 暗号化をサポート |encryption| @@ -1670,57 +5071,87 @@ compatible Vi互換度を非常に高めてコンパイルされている debug デバッグバージョンである dialog_con コンソールダイアログのサポート dialog_gui GUIダイアログのサポート +diff Compiled with |vimdiff| and 'diff' support. digraphs digraphsをサポート +dnd Compiled with support for the "~ register |quote_~|. dos32 32ビットDOSバージョン (DJGPP) dos16 16ビットDOSバージョン +ebcdic Compiled on a machine with ebcdic character set. emacs_tags Emacs式のタグファイルをサポート eval 式評価をサポート。もちろん常に真。 ex_extra 拡張EXコマンドをサポート |+ex_extra|. extra_search |'incsearch'|と|'hlsearch'|をサポート farsi |farsi|をサポート file_in_path |gf|と|<cfile>|をサポート +filterpipe When 'shelltemp' is off pipes are used for shell + read/write/filter commands find_in_path includeファイル内の検索をサポート |+find_in_path| fname_case ファイル名の大文字小文字が区別される(Amiga,MS-DOS, そしてWindowsでは区別されないので偽) +folding Compiled with |folding| support. +footer Compiled with GUI footer support. |gui-footer| fork system()の代わりにfork()/exec()を用いている +gettext Compiled with message translation |multi-lang| gui GUIが有効である gui_athena AthenaのGUIが有効である -gui_beos BeOSのGUIが有効である gui_gtk GTK+のGUIが有効である +gui_gtk2 Compiled with GTK+ 2 GUI (gui_gtk is also defined). gui_mac マッキントッシュのGUIが有効である gui_motif MotifのGUIが有効である +gui_photon Compiled with Photon GUI. gui_win32 Win32のGUIが有効である gui_win32s Win32sのGUIが有効である (Windows 3.1) gui_running VimがGUIモードで起動している、もしくは間もなくする hangul_input ハングル入力サポート insert_expand インサートモード時にCTRL-Xの展開がサポートされる +jumplist Compiled with |jumplist| support. +keymap Compiled with 'keymap' support. langmap 'langmap'サポート +libcall Compiled with |libcall()| support. linebreak 'linebreak', 'breakat'そして'showbreak'をサポート lispindent lisp式のインデントをサポート +listcmds Compiled with commands for the buffer list |:files| + and the argument list |arglist|. +localmap Compiled with local mappings and abbr. |:map-local| mac マッキントッシュバージョン +macunix Macintosh version of Vim, using Unix files (OS-X). menu |:menu|をサポート mksession |:mksession|をサポート modify_fname ファイル名変換子をサポート |filename-modifiers| mouse マウスをサポート +mouseshape Compiled with support for 'mouseshape'. mouse_dec DECのターミナルマウスをサポート mouse_gpm gpmをサポート (Linuxのコンソールマウス) mouse_netterm nettermのマウスをサポート +mouse_pterm Compiled with support for qnx pterm mouse. mouse_xterm xtermのマウスをサポート multi_byte 中国語・日本語・韓国語その他の言語をサポート multi_byte_ime IMEによる入力をサポート +multi_lang Compiled with support for multiple languages. +mzscheme Compiled with MzScheme interface |mzscheme|. +netbeans_intg Compiled with support for |netbeans|. +netbeans_enabled Compiled with support for |netbeans| and it's used. ole Win32にてOLEオートメーションをサポート os2 OS/2バージョン osfiletype osfiletypesをサポート |+osfiletype| +path_extra Compiled with up/downwards search in 'path' and 'tags' perl Perlインターフェースをサポート +postscript Compiled with PostScript file printing. python Pythonインターフェースをサポート +qnx QNX version of Vim. quickfix |quickfix|をサポート +reltime Compiled with |reltime()| support. rightleft 'rightleft'をサポート +ruby Compiled with Ruby interface |ruby|. scrollbind 'scrollbind'をサポート showcmd 'showcmd'をサポート +signs Compiled with |:sign| support. smartindent 'smartindent'をサポート sniff SniFFインターフェースをサポート statusline 'statusline', 'rulerformat'そして'titlestring'と 'iconstring'の特殊フォーマットをサポート +sun_workshop Compiled with support for Sun |workshop|. +spell Compiled with spell checking support |spell|. syntax シンタックスハイライティングをサポート syntax_items 現在のバッファに有効なシンタックスが設定されている system fork()/exec()の代わりにsystem()が使用されている @@ -1730,44 +5161,106 @@ tag_any_white タグファイル内の空白文字をサポート files |tag-any-white|. tcl TCLインターフェースをサポート terminfo termcapの代わりにterminfoをサポート +termresponse Compiled with support for |t_RV| and |v:termresponse|. textobjects |text-objects|をサポート tgetent tgetentをサポート。termcapかterminfoファイルが使用可能 title ウィンドウタイトルをサポート |'title'|. +toolbar Compiled with support for |gui-toolbar|. unix UNIXバージョン user_commands ユーザ定義コマンドをサポート viminfo viminfoをサポート vim_starting Vimの初期化プロセス中は真となる +vertsplit Compiled with vertically split windows |:vsplit|. +virtualedit Compiled with 'virtualedit' option. +visual Compiled with Visual mode. visualextra 拡張Visualモードをサポート |blockwise-operators| vms VMSバージョン +vreplace Compiled with |gR| and |gr| commands. +wildignore Compiled with 'wildignore' option. wildmenu オプション'wildmenu'を指定してコンパイル wildignore オプション'wildignore'を指定してコンパイル +windows Compiled with support for more than one window. winaltkeys オプション'winaltkeys'を指定してコンパイル win16 Win16バージョン(Windows 3.1) win32 Win32バージョン(Windows 95/NT) +win32unix Win32 version of Vim, using Unix files (Cygwin) +win95 Win32 version for MS-Windows 95/98/ME. writebackup オプション'writebackup'が起動時にonになる -xim XIMをサポート |xim| xfontset X fontsetをサポート |xfontset| +xim XIMをサポート |xim| +xsmp Compiled with X session management support. +xsmp_interact Compiled with interactive X session management support. xterm_clipboard xtermのクリップボードサポート xterm_save xtermのスクリーンの保存復帰をサポート x11 X11をサポート + *string-match* +Matching a pattern in a String + +A regexp pattern as explained at |pattern| is normally used to find a match in +the buffer lines. When a pattern is used to find a match in a String, almost +everything works in the same way. The difference is that a String is handled +like it is one line. When it contains a "\n" character, this is not seen as a +line break for the pattern. It can be matched with a "\n" in the pattern, or +with ".". Example: > + :let a = "aaaa\nxxxx" + :echo matchstr(a, "..\n..") + aa + xx + :echo matchstr(a, "a.x") + a + x + +Don't forget that "^" will only match at the first character of the String and +"$" at the last character of the string. They don't match after or before a +"\n". + ============================================================================== 5. 関数定義 *user-functions* 新しい関数を定義することができる。これらは組込み関数と同様に呼び出すことができ -る。 +る。関数は一連のExコマンドを実行する。ノーマルモードコマンドはコマンド +|:normal|によって実行できる。 関数名は組込み関数との混同を避ける為、大文字で始まらなければならない。他のスク リプトで同じ関数名を使用してしまうことを避ける為に、露骨に短い名前は避けるべき である。関数名を例えば"HTMLcolor()"のように、スクリプトの名前から始めるという のは良い習慣である。 - *:fu* *:function* +It's also possible to use curly braces, see |curly-braces-names|. And the +|autoload| facility is useful to define a function only when it's called. + + *local-function* +A function local to a script must start with "s:". A local script function +can only be called from within the script and from functions, user commands +and autocommands defined in the script. It is also possible to call the +function from a mappings defined in the script, but then |<SID>| must be used +instead of "s:" when the mapping is expanded outside of the script. + + *:fu* *:function* *E128* *E129* *E123* :fu[nction] 総ての関数と、その引数を表示する。 :fu[nction] {name} 関数{name}を表示する。 + {name} can also be a |Dictionary| entry that is a + |Funcref|: > + :function dict.init -:fu[nction][!] {name}([arguments]) [range] [abort] +:fu[nction] /{pattern} List functions with a name matching {pattern}. + Example that lists all functions ending with "File": > + :function /File$ +< + *:function-verbose* +When 'verbose' is non-zero, listing a function will also display where it was +last defined. Example: > + + :verbose function SetFileTypeSH + function SetFileTypeSH(name) + Last set from /usr/share/vim/vim-7.0/filetype.vim +< +See |:verbose-cmd| for more information. + + *E124* *E125* +:fu[nction][!] {name}([arguments]) [range] [abort] [dict] {name}という名前で新しい関数を定義する。関数名はアル ファベットと数字と'_'からなり、アルファベットの大文字 で始まらなければならない。 @@ -1803,13 +5296,46 @@ x11 X11をサポート 関数の実行によって、最後に使用されたサーチパターン、及 びredoコマンドの"."の内容は変更されない。 - *:endf* *:endfunction* -:endf[unction] 関数定義の終了。 + *E127* *E122* + When a function by this name already exists and [!] is + not used an error message is given. When [!] is used, + an existing function is silently replaced. Unless it + is currently being executed, that is an error. - *:delf* *:delfunction* -:delf[unction] {name} 関数{name}を削除する。 + For the {arguments} see |function-argument|. + + *a:firstline* *a:lastline* + When the [range] argument is added, the function is + expected to take care of a range itself. The range is + passed as "a:firstline" and "a:lastline". If [range] + is excluded, ":{range}call" will call the function for + each line in the range, with the cursor on the start + of each line. See |function-range-example|. + + When the [abort] argument is added, the function will + abort as soon as an error is detected. + + When the [dict] argument is added, the function must + be invoked through an entry in a |Dictionary|. The + local variable "self" will then be set to the + dictionary. See |Dictionary-function|. + + The last used search pattern and the redo command "." + will not be changed by the function. - *:retu* *:return* + *:endf* *:endfunction* *E126* *E193* +:endf[unction] 関数定義の終了。このコマンド1つで1行とすること。他のコ + マンドをいっしょに書いてはならない。 + + *:delf* *:delfunction* *E130* *E131* +:delf[unction] {name} 関数{name}を削除する。 + {name} can also be a |Dictionary| entry that is a + |Funcref|: > + :delfunc dict.init +< This will remove the "init" entry from "dict". The + function is deleted if there are no more references to + it. + *:retu* *:return* *E133* :retu[rn] [expr] 関数から戻る。"[expr]"が与えられた場合、それは評価され 関数の戻り値として呼出し側に渡される。"[expr]"が与えら れない場合、数値0が呼出し側に渡される。 @@ -1817,59 +5343,77 @@ x11 X11をサポート いことに留意すること。つまり、たとえ":return"命令の後 に何か命令があったとしても、警告も何も与えられない。 + If the ":return" is used after a |:try| but before the + matching |:finally| (if present), the commands + following the ":finally" up to the matching |:endtry| + are executed first. This process applies to all + nested ":try"s inside the function. The function + returns at the outermost ":endtry". + + *function-argument* *a:var* +An argument can be defined by giving its name. In the function this can then +be used as "a:name" ("a:" for argument). + *a:0* *a:1* *a:000* *E740* *...* +Up to 20 arguments can be given, separated by commas. After the named +arguments an argument "..." can be specified, which means that more arguments +may optionally be following. In the function the extra arguments can be used +as "a:1", "a:2", etc. "a:0" is set to the number of extra arguments (which +can be 0). "a:000" is set to a |List| that contains these arguments. Note +that "a:1" is the same as "a:000[0]". + *E742* +The a: scope and the variables in it cannot be changed, they are fixed. +However, if a |List| or |Dictionary| is used, you can changes their contents. +Thus you can pass a |List| to a function and have the function add an item to +it. If you want to make sure the function cannot change a |List| or +|Dictionary| use |:lockvar|. + +When not using "...", the number of arguments in a function call must be equal +to the number of named arguments. When using "...", the number of arguments +may be larger. + +It is also possible to define a function without any arguments. You must +still supply the () then. The body of the function follows in the next lines, +until the matching |:endfunction|. It is allowed to define another function +inside a function body. + + *local-variables* 関数の中で変数を使うこともできる。これらは関数から戻ると消滅するローカル変数と して振舞う。グローバル変数にアクセスするためには"g:"を付ける必要がある。 -例: -> :function Table(title, ...) -> : echohl Title -> : echo a:title -> : echohl None -> : let idx = 1 -> : while idx <= a:0 -> : exe "echo a:" . idx -> : let idx = idx + 1 -> : endwhile -> : return idx -> :endfunction - -この関数は次のように呼ぶことが出きる: -> let lines = Table("Table", "line1", "line2") -> let lines = Table("Empty Table") - -一つ以上の値を返したい場合には、グローバル変数の名前を渡すようにする: -> :function Compute(n1, n2, divname) -> : if a:n2 == 0 -> : return "fail" -> : endif -> : exe "let g:" . a:divname . " = ". a:n1 / a:n2 -> : return "ok" -> :endfunction - -この関数は次のように呼ぶことができる: -> :let success = Compute(13, 1324, "div") -> :if success == "ok" -> : echo div -> :endif - -次の例は実行可能なコマンドを返すものである。これは関数呼出し内の局所変数と一緒 -にも働く。例: -> :function Foo() -> : execute Bar() -> : echo "line " . lnum . " column " . col -> :endfunction -> -> :function Bar() -> : return "let lnum = " . line(".") . " | let col = " . col(".") -> :endfunction - -"lnum"や"col"といった変数の名前もBar()への引数として渡すことが可能なので、呼出 -し側が指定することができる。 +例: > + :function Table(title, ...) + : echohl Title + : echo a:title + : echohl None + : echo a:0 . " items:" + : for s in a:000 + : echon ' ' . s + : endfor + :endfunction + +この関数は次のように呼ぶことが出きる: > + let lines = Table("Table", "line1", "line2") + let lines = Table("Empty Table") + +一つ以上の値を返したい場合には、グローバル変数の名前を渡すようにする: > + :function Compute(n1, n2) + : if a:n2 == 0 + : return ["fail", 0] + : endif + : return ["ok", a:n1 / a:n2] + :endfunction + +この関数は次のように呼ぶことができる: > + :let [success, div] = Compute(102, 6) + :if success == "ok" + : echo div + :endif +< - *:cal* *:call* + *:cal* *:call* *E107* *E117* :[range]cal[l] {name}([arguments]) 関数を呼び出す。関数の名前と引数は|:function|によって指定され - るものである。引数は最大20まで使用可能。 + るものである。引数は最大20まで使用可能。戻り値は破棄される。 「領域」を受け付ける関数に「領域」を指定しなかった場合、関数は カーソルの現在位置について一度だけ呼び出される。 「領域」を受け付けない関数に「領域」を指定した場合、その領域の @@ -1877,12 +5421,12 @@ x11 X11をサポート 頭に設定される。カーソルは「領域」の最下行の左端になる(恐らく 最後の関数呼出しの結果、動いた先である)。引数は各呼出しについ て繰り返し評価される。それは次の例で確かめることができる: - *function-range-example* -> :function Mynumber(arg) -> : echo line(".") . " " . a:arg -> :endfunction -> :1,5call Mynumber(getline(".")) - + *function-range-example* > + :function Mynumber(arg) + : echo line(".") . " " . a:arg + :endfunction + :1,5call Mynumber(getline(".")) +< "a:firstline"と"a:lastline"はとにかく定義されるので、「領域」 の最初や最後で何か違った事をするのにも用いることができる。 @@ -1897,19 +5441,175 @@ x11 X11をサポート めの文字"\"を挿入する。 + When the function returns a composite value it can be further + dereferenced, but the range will not be used then. Example: > + :4,8call GetDict().method() +< Here GetDict() gets the range but method() does not. + + *E132* 関数の再帰的な使用はオプション|'maxfuncdepth'|によって制限することができる。 +AUTOMATICALLY LOADING FUNCTIONS ~ + *autoload-functions* +When using many or large functions, it's possible to automatically define them +only when they are used. There are two methods: with an autocommand and with +the "autoload" directory in 'runtimepath'. + + +Using an autocommand ~ + +This is introduced in the user manual, section |41.14|. + +The autocommand is useful if you have a plugin that is a long Vim script file. +You can define the autocommand and quickly quit the script with |:finish|. +That makes Vim startup faster. The autocommand should then load the same file +again, setting a variable to skip the |:finish| command. + +Use the FuncUndefined autocommand event with a pattern that matches the +function(s) to be defined. Example: > + + :au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim + +The file "~/vim/bufnetfuncs.vim" should then define functions that start with +"BufNet". Also see |FuncUndefined|. + + +Using an autoload script ~ + *autoload* *E746* +This is introduced in the user manual, section |41.15|. + +Using a script in the "autoload" directory is simpler, but requires using +exactly the right file name. A function that can be autoloaded has a name +like this: > + + :call filename#funcname() + +When such a function is called, and it is not defined yet, Vim will search the +"autoload" directories in 'runtimepath' for a script file called +"filename.vim". For example "~/.vim/autoload/filename.vim". That file should +then define the function like this: > + + function filename#funcname() + echo "Done!" + endfunction + +The file name and the name used before the # in the function must match +exactly, and the defined function must have the name exactly as it will be +called. + +It is possible to use subdirectories. Every # in the function name works like +a path separator. Thus when calling a function: > + + :call foo#bar#func() + +Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'. + +This also works when reading a variable that has not been set yet: > + + :let l = foo#bar#lvar + +However, when the autoload script was already loaded it won't be loaded again +for an unknown variable. + +When assigning a value to such a variable nothing special happens. This can +be used to pass settings to the autoload script before it's loaded: > + + :let foo#bar#toggle = 1 + :call foo#bar#func() + +Note that when you make a mistake and call a function that is supposed to be +defined in an autoload script, but the script doesn't actually define the +function, the script will be sourced every time you try to call the function. +And you will get an error message every time. + +Also note that if you have two script files, and one calls a function in the +other and vise versa, before the used function is defined, it won't work. +Avoid using the autoload functionality at the toplevel. + +Hint: If you distribute a bunch of scripts you can pack them together with the +|vimball| utility. Also read the user manual |distribute-script|. + ============================================================================== -6. Commands *expression-commands* +6. Curly braces names *curly-braces-names* + +Wherever you can use a variable, you can use a "curly braces name" variable. +This is a regular variable name with one or more expressions wrapped in braces +{} like this: > + my_{adjective}_variable + +When Vim encounters this, it evaluates the expression inside the braces, puts +that in place of the expression, and re-interprets the whole as a variable +name. So in the above example, if the variable "adjective" was set to +"noisy", then the reference would be to "my_noisy_variable", whereas if +"adjective" was set to "quiet", then it would be to "my_quiet_variable". + +One application for this is to create a set of variables governed by an option +value. For example, the statement > + echo my_{&background}_message + +would output the contents of "my_dark_message" or "my_light_message" depending +on the current value of 'background'. + +You can use multiple brace pairs: > + echo my_{adverb}_{adjective}_message +..or even nest them: > + echo my_{ad{end_of_word}}_message +where "end_of_word" is either "verb" or "jective". + +However, the expression inside the braces must evaluate to a valid single +variable name, e.g. this is invalid: > + :let foo='a + b' + :echo c{foo}d +.. since the result of expansion is "ca + bd", which is not a variable name. + + *curly-braces-function-names* +You can call and define functions by an evaluated name in a similar way. +Example: > + :let func_end='whizz' + :call my_func_{func_end}(parameter) + +This would call the function "my_func_whizz(parameter)". + +============================================================================== +7. Commands *expression-commands* :let {var-name} = {expr1} *:let* 内部変数{var-name}に式{expr1}の結果をセットする。変数 の型は{expr1}によって決定される。{var-name}という変数 がまだ存在しない場合、新たに作成される。 +:let {var-name}[{idx}] = {expr1} *E689* + Set a list item to the result of the expression + {expr1}. {var-name} must refer to a list and {idx} + must be a valid index in that list. For nested list + the index can be repeated. + This cannot be used to add an item to a list. + + *E711* *E719* +:let {var-name}[{idx1}:{idx2}] = {expr1} *E708* *E709* *E710* + Set a sequence of items in a |List| to the result of + the expression {expr1}, which must be a list with the + correct number of items. + {idx1} can be omitted, zero is used instead. + {idx2} can be omitted, meaning the end of the list. + When the selected range of items is partly past the + end of the list, items will be added. + + *:let+=* *:let-=* *:let.=* *E734* +:let {var} += {expr1} Like ":let {var} = {var} + {expr1}". +:let {var} -= {expr1} Like ":let {var} = {var} - {expr1}". +:let {var} .= {expr1} Like ":let {var} = {var} . {expr1}". + These fail if {var} was not set yet and when the type + of {var} and {expr1} don't fit the operator. + + :let ${env-name} = {expr1} *:let-environment* *:let-$* 環境変数{env-name}に式{expr1}の結果をセットする。型は 常に文字列。 +:let ${env-name} .= {expr1} + Append {expr1} to the environment variable {env-name}. + If the environment variable didn't exist yet this + works like "=". :let @{reg-name} = {expr1} *:let-register* *:let-@* 式{expr1}の結果をレジスタ{reg-name}に書きこむ。 @@ -1920,17 +5620,165 @@ x11 X11をサポート {expr1}の結果が<CR>か<NL>で終了していた場合、レジスタ は行単位で設定され、そうでなければキャラクタ単位で設定 される。 + 次のコマンドにより最後に検索したパターンをクリアするこ + とができる: > + :let @/ = "" +< This is different from searching for an empty string, + that would match everywhere. + +:let @{reg-name} .= {expr1} + Append {expr1} to register {reg-name}. If the + register was empty it's like setting it to {expr1}. + + A String or Number value is + always converted to the type of the option. + For an option local to a window or buffer the effect + is just like using the |:set| command: both the local + value and the global value are changed. + Example: > + :let &path = &path . ',/usr/local/include' + +:let &{option-name} .= {expr1} + For a string option: Append {expr1} to the value. + Does not insert a comma like |:set+=|. + +:let &{option-name} += {expr1} +:let &{option-name} -= {expr1} + For a number or boolean option: Add or subtract + {expr1}. + +:let &l:{option-name} = {expr1} +:let &l:{option-name} .= {expr1} +:let &l:{option-name} += {expr1} +:let &l:{option-name} -= {expr1} + Like above, but only set the local value of an option + (if there is one). Works like |:setlocal|. + +:let &g:{option-name} = {expr1} +:let &g:{option-name} .= {expr1} +:let &g:{option-name} += {expr1} +:let &g:{option-name} -= {expr1} + Like above, but only set the global value of an option + (if there is one). Works like |:setglobal|. + +:let [{name1}, {name2}, ...] = {expr1} *:let-unpack* *E687* *E688* + {expr1} must evaluate to a |List|. The first item in + the list is assigned to {name1}, the second item to + {name2}, etc. + The number of names must match the number of items in + the |List|. + Each name can be one of the items of the ":let" + command as mentioned above. + Example: > + :let [s, item] = GetItem(s) +< Detail: {expr1} is evaluated first, then the + assignments are done in sequence. This matters if + {name2} depends on {name1}. Example: > + :let x = [0, 1] + :let i = 0 + :let [i, x[i]] = [1, 2] + :echo x +< The result is [0, 2]. + +:let [{name1}, {name2}, ...] .= {expr1} +:let [{name1}, {name2}, ...] += {expr1} +:let [{name1}, {name2}, ...] -= {expr1} + Like above, but append/add/subtract the value for each + |List| item. + +:let [{name}, ..., ; {lastname}] = {expr1} + Like |:let-unpack| above, but the |List| may have more + items than there are names. A list of the remaining + items is assigned to {lastname}. If there are no + remaining items {lastname} is set to an empty list. + Example: > + :let [a, b; rest] = ["aval", "bval", 3, 4] +< +:let [{name}, ..., ; {lastname}] .= {expr1} +:let [{name}, ..., ; {lastname}] += {expr1} +:let [{name}, ..., ; {lastname}] -= {expr1} + Like above, but append/add/subtract the value for each + |List| item. + *E106* +:let {var-name} .. List the value of variable {var-name}. Multiple + variable names may be given. Special names recognized + here: *E738* + g: global variables + b: local buffer variables + w: local window variables + t: local tab page variables + s: script-local variables + l: local function variables + v: Vim variables. + +:let List the values of all variables. The type of the + variable is indicated before the value: + <nothing> String + # Number + * Funcref + + +:unl[et][!] {name} ... *:unlet* *:unl* *E108* *E795* + Remove the internal variable {name}. Several variable + names can be given, they are all removed. The name + may also be a |List| or |Dictionary| item. + With [!] no error message is given for non-existing + variables. + One or more items from a |List| can be removed: > + :unlet list[3] " remove fourth item + :unlet list[3:] " remove fourth item to last +< One item from a |Dictionary| can be removed at a time: > + :unlet dict['two'] + :unlet dict.two + +:lockv[ar][!] [depth] {name} ... *:lockvar* *:lockv* + Lock the internal variable {name}. Locking means that + it can no longer be changed (until it is unlocked). + A locked variable can be deleted: > + :lockvar v + :let v = 'asdf' " fails! + :unlet v +< *E741* + If you try to change a locked variable you get an + error message: "E741: Value of {name} is locked" + + [depth] is relevant when locking a |List| or + |Dictionary|. It specifies how deep the locking goes: + 1 Lock the |List| or |Dictionary| itself, + cannot add or remove items, but can + still change their values. + 2 Also lock the values, cannot change + the items. If an item is a |List| or + |Dictionary|, cannot add or remove + items, but can still change the + values. + 3 Like 2 but for the |List| / + |Dictionary| in the |List| / + |Dictionary|, one level deeper. + The default [depth] is 2, thus when {name} is a |List| + or |Dictionary| the values cannot be changed. + *E743* + For unlimited depth use [!] and omit [depth]. + However, there is a maximum depth of 100 to catch + loops. + + Note that when two variables refer to the same |List| + and you lock one of them, the |List| will also be + locked when used through the other variable. + Example: > + :let l = [0, 1, 2, 3] + :let cl = l + :lockvar l + :let cl[1] = 99 " won't work! +< You may want to make a copy of a list to avoid this. + See |deepcopy()|. + + +:unlo[ckvar][!] [depth] {name} ... *:unlockvar* *:unlo* + Unlock the internal variable {name}. Does the + opposite of |:lockvar|. -:let &{option-name} = {expr1} *:let-option* *:let-star* - オプション{option-name}に式{expr1}の結果をセットする。 - オプションの型が常に使用される。 - *:unlet* *:unl* -:unl[et][!] {var-name} ... - 内部変数{var-name}を削除する。複数の場前を指定すること - もでき、それらは総て削除される。[!]を使えば、たとえ存 - 在しない変数を指定しても、エラーメッセージが表示される - ことはない。 :if {expr1} *:if* *:endif* *:en* :en[dif] {expr1}が非ゼロと評価された場合に、対応する":else"か @@ -1943,10 +5791,22 @@ x11 X11をサポート 無視され、"else"部分は一切実行されないことに注意。 あなたはこれを、旧バージョンとの互換性を保ったまま使用 - することができる: -> :if version >= 500 -> : version-5-specific-commands -> :endif + することができる: > + :if version >= 500 + : version-5-specific-commands + :endif +< The commands still need to be parsed to find the + "endif". Sometimes an older Vim has a problem with a + new command. For example, ":silent" is recognized as + a ":substitute" command. In that case ":execute" can + avoid problems: > + :if version >= 600 + : execute "silent 1,$delete" + :endif +< + NOTE: The ":append" and ":insert" commands don't work + properly in between ":if" and ":endif". + *:else* *:el* :el[se] 対応する":if"ブロックが実行されなかった場合には、これ @@ -1958,31 +5818,210 @@ x11 X11をサポート る)手間を省くことができる。 :wh[ile] {expr1} *:while* *:endwhile* *:wh* *:endw* + *E170* *E585* *E588* *E733* :endw[hile] {expr1}が非ゼロとして評価される間、":while"と ":endwhile"の間のコマンドを繰り返し実行する。 ループの内側でエラーが生じた場合、endwhileの直後から実 行が再開される。 - + 例: > + :let lnum = 1 + :while lnum <= line("$") + :call FixLine(lnum) + :let lnum = lnum + 1 + :endwhile +< 注意: ":append"や":insert"コマンドは":while"ループの内側では正 しく動かない。 - *:continue* *:con* -:con[tinue] ":while"ループの内側で使用すると、残りの実行部分をキャ - ンセルし":while"に戻る。 - - *:break* *:brea* -:brea[k] ":while"ループの内側で使用すると、残りの部分の実行を - キャンセルし、対応する":endwhile"以降から実行を再開す - る。 - +:for {var} in {list} *:for* *E690* *E732* +:endfo[r] *:endfo* *:endfor* + Repeat the commands between ":for" and ":endfor" for + each item in {list}. Variable {var} is set to the + value of each item. + When an error is detected for a command inside the + loop, execution continues after the "endfor". + Changing {list} inside the loop affects what items are + used. Make a copy if this is unwanted: > + :for item in copy(mylist) +< When not making a copy, Vim stores a reference to the + next item in the list, before executing the commands + with the current item. Thus the current item can be + removed without effect. Removing any later item means + it will not be found. Thus the following example + works (an inefficient way to make a list empty): > + :for item in mylist + :call remove(mylist, 0) + :endfor +< Note that reordering the list (e.g., with sort() or + reverse()) may have unexpected effects. + Note that the type of each list item should be + identical to avoid errors for the type of {var} + changing. Unlet the variable at the end of the loop + to allow multiple item types. + +:for {var} in {list} *:for* *E690* *E732* +:endfo[r] *:endfo* *:endfor* + Repeat the commands between ":for" and ":endfor" for + each item in {list}. Variable {var} is set to the + value of each item. + When an error is detected for a command inside the + loop, execution continues after the "endfor". + Changing {list} inside the loop affects what items are + used. Make a copy if this is unwanted: > + :for item in copy(mylist) +< When not making a copy, Vim stores a reference to the + next item in the list, before executing the commands + with the current item. Thus the current item can be + removed without effect. Removing any later item means + it will not be found. Thus the following example + works (an inefficient way to make a list empty): > + :for item in mylist + :call remove(mylist, 0) + :endfor +< Note that reordering the list (e.g., with sort() or + reverse()) may have unexpected effects. + Note that the type of each list item should be + identical to avoid errors for the type of {var} + changing. Unlet the variable at the end of the loop + to allow multiple item types. + +:for [{var1}, {var2}, ...] in {listlist} +:endfo[r] + Like ":for" above, but each item in {listlist} must be + a list, of which each item is assigned to {var1}, + {var2}, etc. Example: > + :for [lnum, col] in [[1, 3], [2, 5], [3, 8]] + :echo getline(lnum)[col] + :endfor +< + *:continue* *:con* *E586* +:con[tinue] When used inside a ":while" or ":for" loop, jumps back + to the start of the loop. + If it is used after a |:try| inside the loop but + before the matching |:finally| (if present), the + commands following the ":finally" up to the matching + |:endtry| are executed first. This process applies to + all nested ":try"s inside the loop. The outermost + ":endtry" then jumps back to the start of the loop. + + *:break* *:brea* *E587* +:brea[k] When used inside a ":while" or ":for" loop, skips to + the command after the matching ":endwhile" or + ":endfor". + If it is used after a |:try| inside the loop but + before the matching |:finally| (if present), the + commands following the ":finally" up to the matching + |:endtry| are executed first. This process applies to + all nested ":try"s inside the loop. The outermost + ":endtry" then jumps to the command after the loop. + +:try *:try* *:endt* *:endtry* *E600* *E601* *E602* +:endt[ry] Change the error handling for the commands between + ":try" and ":endtry" including everything being + executed across ":source" commands, function calls, + or autocommand invocations. + + When an error or interrupt is detected and there is + a |:finally| command following, execution continues + after the ":finally". Otherwise, or when the + ":endtry" is reached thereafter, the next + (dynamically) surrounding ":try" is checked for + a corresponding ":finally" etc. Then the script + processing is terminated. (Whether a function + definition has an "abort" argument does not matter.) + Example: > + :try | edit too much | finally | echo "cleanup" | endtry + :echo "impossible" " not reached, script terminated above +< + Moreover, an error or interrupt (dynamically) inside + ":try" and ":endtry" is converted to an exception. It + can be caught as if it were thrown by a |:throw| + command (see |:catch|). In this case, the script + processing is not terminated. + + The value "Vim:Interrupt" is used for an interrupt + exception. An error in a Vim command is converted + to a value of the form "Vim({command}):{errmsg}", + other errors are converted to a value of the form + "Vim:{errmsg}". {command} is the full command name, + and {errmsg} is the message that is displayed if the + error exception is not caught, always beginning with + the error number. + Examples: > + :try | sleep 100 | catch /^Vim:Interrupt$/ | endtry + :try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry +< + *:cat* *:catch* *E603* *E604* *E605* +:cat[ch] /{pattern}/ The following commands until the next ":catch", + |:finally|, or |:endtry| that belongs to the same + |:try| as the ":catch" are executed when an exception + matching {pattern} is being thrown and has not yet + been caught by a previous ":catch". Otherwise, these + commands are skipped. + When {pattern} is omitted all errors are caught. + Examples: > + :catch /^Vim:Interrupt$/ " catch interrupts (CTRL-C) + :catch /^Vim\%((\a\+)\)\=:E/ " catch all Vim errors + :catch /^Vim\%((\a\+)\)\=:/ " catch errors and interrupts + :catch /^Vim(write):/ " catch all errors in :write + :catch /^Vim\%((\a\+)\)\=:E123/ " catch error E123 + :catch /my-exception/ " catch user exception + :catch /.*/ " catch everything + :catch " same as /.*/ +< + Another character can be used instead of / around the + {pattern}, so long as it does not have a special + meaning (e.g., '|' or '"') and doesn't occur inside + {pattern}. + NOTE: It is not reliable to ":catch" the TEXT of + an error message because it may vary in different + locales. + + *:fina* *:finally* *E606* *E607* +:fina[lly] The following commands until the matching |:endtry| + are executed whenever the part between the matching + |:try| and the ":finally" is left: either by falling + through to the ":finally" or by a |:continue|, + |:break|, |:finish|, or |:return|, or by an error or + interrupt or exception (see |:throw|). + + *:th* *:throw* *E608* +:th[row] {expr1} The {expr1} is evaluated and thrown as an exception. + If the ":throw" is used after a |:try| but before the + first corresponding |:catch|, commands are skipped + until the first ":catch" matching {expr1} is reached. + If there is no such ":catch" or if the ":throw" is + used after a ":catch" but before the |:finally|, the + commands following the ":finally" (if present) up to + the matching |:endtry| are executed. If the ":throw" + is after the ":finally", commands up to the ":endtry" + are skipped. At the ":endtry", this process applies + again for the next dynamically surrounding ":try" + (which may be found in a calling function or sourcing + script), until a matching ":catch" has been found. + If the exception is not caught, the command processing + is terminated. + Example: > + :try | throw "oops" | catch /^oo/ | echo "caught" | endtry +< *:ec* *:echo* :ec[ho] {expr1} .. スペースで区切られ<EOL>で終了する引数{expr1}を表示す る。|:comment|も参照。 改行が必要な場合"\n"を使用する。カーソルを第1列(カラ ム)に持って行くには"\r"を使用する。 コメント文を同じ行に続けることはできない。 - 例: -> :echo "the value of 'shell' is" &shell + 例: > + :echo "the value of 'shell' is" &shell +< *:echo-redraw* + A later redraw may make the message disappear again. + And since Vim mostly postpones redrawing until it's + finished with a sequence of commands this happens + quite often. To avoid that a command from before the + ":echo" causes a redraw afterwards (redraws are often + postponed until you type something), force a redraw + with the |:redraw| command. Example: > + :new | redraw | echo "there is a new window" +< *:echon* :echon {expr1} .. 改行を付けずに、{expr1}を表示する。|:comment|も参照。 @@ -2012,6 +6051,36 @@ x11 X11をサポート に。さもないとそれ以降のechoの表示総てがハイライトされ てしまう。 + *:echom* *:echomsg* +:echom[sg] {expr1} .. Echo the expression(s) as a true message, saving the + message in the |message-history|. + Spaces are placed between the arguments as with the + |:echo| command. But unprintable characters are + displayed, not interpreted. + The parsing works slightly different from |:echo|, + more like |:execute|. All the expressions are first + evaluated and concatenated before echoing anything. + The expressions must evaluate to a Number or String, a + Dictionary or List causes an error. + Uses the highlighting set by the |:echohl| command. + Example: > + :echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see." +< See |:echo-redraw| to avoid the message disappearing + when the screen is redrawn. + *:echoe* *:echoerr* +:echoe[rr] {expr1} .. Echo the expression(s) as an error message, saving the + message in the |message-history|. When used in a + script or function the line number will be added. + Spaces are placed between the arguments as with the + :echo command. When used inside a try conditional, + the message is raised as an error exception instead + (see |try-echoerr|). + Example: > + :echoerr "This script just failed!" +< If you just want a highlighted message use |:echohl|. + And to get a beep: > + :exe "normal \<Esc>" +< *:exe* *:execute* :exe[cute] {expr1} .. {expr1}の評価結果の文字列をExコマンドとして実行する。 スペースで区切られた複数の引数は連結される。 @@ -2048,7 +6117,1001 @@ x11 X11をサポート > :echo "foo" | "this is a comment ============================================================================== -7. 例 *eval-examples* +8. 例外処理 *exception-handling* + +The Vim script language comprises an exception handling feature. This section +explains how it can be used in a Vim script. + +Exceptions may be raised by Vim on an error or on interrupt, see +|catch-errors| and |catch-interrupt|. You can also explicitly throw an +exception by using the ":throw" command, see |throw-catch|. + + +TRY CONDITIONALS *try-conditionals* + +Exceptions can be caught or can cause cleanup code to be executed. You can +use a try conditional to specify catch clauses (that catch exceptions) and/or +a finally clause (to be executed for cleanup). + A try conditional begins with a |:try| command and ends at the matching +|:endtry| command. In between, you can use a |:catch| command to start +a catch clause, or a |:finally| command to start a finally clause. There may +be none or multiple catch clauses, but there is at most one finally clause, +which must not be followed by any catch clauses. The lines before the catch +clauses and the finally clause is called a try block. > + + :try + : ... + : ... TRY BLOCK + : ... + :catch /{pattern}/ + : ... + : ... CATCH CLAUSE + : ... + :catch /{pattern}/ + : ... + : ... CATCH CLAUSE + : ... + :finally + : ... + : ... FINALLY CLAUSE + : ... + :endtry + +The try conditional allows to watch code for exceptions and to take the +appropriate actions. Exceptions from the try block may be caught. Exceptions +from the try block and also the catch clauses may cause cleanup actions. + When no exception is thrown during execution of the try block, the control +is transferred to the finally clause, if present. After its execution, the +script continues with the line following the ":endtry". + When an exception occurs during execution of the try block, the remaining +lines in the try block are skipped. The exception is matched against the +patterns specified as arguments to the ":catch" commands. The catch clause +after the first matching ":catch" is taken, other catch clauses are not +executed. The catch clause ends when the next ":catch", ":finally", or +":endtry" command is reached - whatever is first. Then, the finally clause +(if present) is executed. When the ":endtry" is reached, the script execution +continues in the following line as usual. + When an exception that does not match any of the patterns specified by the +":catch" commands is thrown in the try block, the exception is not caught by +that try conditional and none of the catch clauses is executed. Only the +finally clause, if present, is taken. The exception pends during execution of +the finally clause. It is resumed at the ":endtry", so that commands after +the ":endtry" are not executed and the exception might be caught elsewhere, +see |try-nesting|. + When during execution of a catch clause another exception is thrown, the +remaining lines in that catch clause are not executed. The new exception is +not matched against the patterns in any of the ":catch" commands of the same +try conditional and none of its catch clauses is taken. If there is, however, +a finally clause, it is executed, and the exception pends during its +execution. The commands following the ":endtry" are not executed. The new +exception might, however, be caught elsewhere, see |try-nesting|. + When during execution of the finally clause (if present) an exception is +thrown, the remaining lines in the finally clause are skipped. If the finally +clause has been taken because of an exception from the try block or one of the +catch clauses, the original (pending) exception is discarded. The commands +following the ":endtry" are not executed, and the exception from the finally +clause is propagated and can be caught elsewhere, see |try-nesting|. + +The finally clause is also executed, when a ":break" or ":continue" for +a ":while" loop enclosing the complete try conditional is executed from the +try block or a catch clause. Or when a ":return" or ":finish" is executed +from the try block or a catch clause of a try conditional in a function or +sourced script, respectively. The ":break", ":continue", ":return", or +":finish" pends during execution of the finally clause and is resumed when the +":endtry" is reached. It is, however, discarded when an exception is thrown +from the finally clause. + When a ":break" or ":continue" for a ":while" loop enclosing the complete +try conditional or when a ":return" or ":finish" is encountered in the finally +clause, the rest of the finally clause is skipped, and the ":break", +":continue", ":return" or ":finish" is executed as usual. If the finally +clause has been taken because of an exception or an earlier ":break", +":continue", ":return", or ":finish" from the try block or a catch clause, +this pending exception or command is discarded. + +For examples see |throw-catch| and |try-finally|. + + +NESTING OF TRY CONDITIONALS *try-nesting* + +Try conditionals can be nested arbitrarily. That is, a complete try +conditional can be put into the try block, a catch clause, or the finally +clause of another try conditional. If the inner try conditional does not +catch an exception thrown in its try block or throws a new exception from one +of its catch clauses or its finally clause, the outer try conditional is +checked according to the rules above. If the inner try conditional is in the +try block of the outer try conditional, its catch clauses are checked, but +otherwise only the finally clause is executed. It does not matter for +nesting, whether the inner try conditional is directly contained in the outer +one, or whether the outer one sources a script or calls a function containing +the inner try conditional. + +When none of the active try conditionals catches an exception, just their +finally clauses are executed. Thereafter, the script processing terminates. +An error message is displayed in case of an uncaught exception explicitly +thrown by a ":throw" command. For uncaught error and interrupt exceptions +implicitly raised by Vim, the error message(s) or interrupt message are shown +as usual. + +For examples see |throw-catch|. + + +EXAMINING EXCEPTION HANDLING CODE *except-examine* + +Exception handling code can get tricky. If you are in doubt what happens, set +'verbose' to 13 or use the ":13verbose" command modifier when sourcing your +script file. Then you see when an exception is thrown, discarded, caught, or +finished. When using a verbosity level of at least 14, things pending in +a finally clause are also shown. This information is also given in debug mode +(see |debug-scripts|). + + +THROWING AND CATCHING EXCEPTIONS *throw-catch* + +You can throw any number or string as an exception. Use the |:throw| command +and pass the value to be thrown as argument: > + :throw 4711 + :throw "string" +< *throw-expression* +You can also specify an expression argument. The expression is then evaluated +first, and the result is thrown: > + :throw 4705 + strlen("string") + :throw strpart("strings", 0, 6) + +An exception might be thrown during evaluation of the argument of the ":throw" +command. Unless it is caught there, the expression evaluation is abandoned. +The ":throw" command then does not throw a new exception. + Example: > + + :function! Foo(arg) + : try + : throw a:arg + : catch /foo/ + : endtry + : return 1 + :endfunction + : + :function! Bar() + : echo "in Bar" + : return 4710 + :endfunction + : + :throw Foo("arrgh") + Bar() + +This throws "arrgh", and "in Bar" is not displayed since Bar() is not +executed. > + :throw Foo("foo") + Bar() +however displays "in Bar" and throws 4711. + +Any other command that takes an expression as argument might also be +abandoned by an (uncaught) exception during the expression evaluation. The +exception is then propagated to the caller of the command. + Example: > + + :if Foo("arrgh") + : echo "then" + :else + : echo "else" + :endif + +Here neither of "then" or "else" is displayed. + + *catch-order* +Exceptions can be caught by a try conditional with one or more |:catch| +commands, see |try-conditionals|. The values to be caught by each ":catch" +command can be specified as a pattern argument. The subsequent catch clause +gets executed when a matching exception is caught. + Example: > + + :function! Foo(value) + : try + : throw a:value + : catch /^\d\+$/ + : echo "Number thrown" + : catch /.*/ + : echo "String thrown" + : endtry + :endfunction + : + :call Foo(0x1267) + :call Foo('string') + +The first call to Foo() displays "Number thrown", the second "String thrown". +An exception is matched against the ":catch" commands in the order they are +specified. Only the first match counts. So you should place the more +specific ":catch" first. The following order does not make sense: > + + : catch /.*/ + : echo "String thrown" + : catch /^\d\+$/ + : echo "Number thrown" + +The first ":catch" here matches always, so that the second catch clause is +never taken. + + *throw-variables* +If you catch an exception by a general pattern, you may access the exact value +in the variable |v:exception|: > + + : catch /^\d\+$/ + : echo "Number thrown. Value is" v:exception + +You may also be interested where an exception was thrown. This is stored in +|v:throwpoint|. Note that "v:exception" and "v:throwpoint" are valid for the +exception most recently caught as long it is not finished. + Example: > + + :function! Caught() + : if v:exception != "" + : echo 'Caught "' . v:exception . '" in ' . v:throwpoint + : else + : echo 'Nothing caught' + : endif + :endfunction + : + :function! Foo() + : try + : try + : try + : throw 4711 + : finally + : call Caught() + : endtry + : catch /.*/ + : call Caught() + : throw "oops" + : endtry + : catch /.*/ + : call Caught() + : finally + : call Caught() + : endtry + :endfunction + : + :call Foo() + +This displays > + + Nothing caught + Caught "4711" in function Foo, line 4 + Caught "oops" in function Foo, line 10 + Nothing caught + +A practical example: The following command ":LineNumber" displays the line +number in the script or function where it has been used: > + + :function! LineNumber() + : return substitute(v:throwpoint, '.*\D\(\d\+\).*', '\1', "") + :endfunction + :command! LineNumber try | throw "" | catch | echo LineNumber() | endtry +< + *try-nested* +An exception that is not caught by a try conditional can be caught by +a surrounding try conditional: > + + :try + : try + : throw "foo" + : catch /foobar/ + : echo "foobar" + : finally + : echo "inner finally" + : endtry + :catch /foo/ + : echo "foo" + :endtry + +The inner try conditional does not catch the exception, just its finally +clause is executed. The exception is then caught by the outer try +conditional. The example displays "inner finally" and then "foo". + + *throw-from-catch* +You can catch an exception and throw a new one to be caught elsewhere from the +catch clause: > + + :function! Foo() + : throw "foo" + :endfunction + : + :function! Bar() + : try + : call Foo() + : catch /foo/ + : echo "Caught foo, throw bar" + : throw "bar" + : endtry + :endfunction + : + :try + : call Bar() + :catch /.*/ + : echo "Caught" v:exception + :endtry + +This displays "Caught foo, throw bar" and then "Caught bar". + + *rethrow* +There is no real rethrow in the Vim script language, but you may throw +"v:exception" instead: > + + :function! Bar() + : try + : call Foo() + : catch /.*/ + : echo "Rethrow" v:exception + : throw v:exception + : endtry + :endfunction +< *try-echoerr* +Note that this method cannot be used to "rethrow" Vim error or interrupt +exceptions, because it is not possible to fake Vim internal exceptions. +Trying so causes an error exception. You should throw your own exception +denoting the situation. If you want to cause a Vim error exception containing +the original error exception value, you can use the |:echoerr| command: > + + :try + : try + : asdf + : catch /.*/ + : echoerr v:exception + : endtry + :catch /.*/ + : echo v:exception + :endtry + +This code displays + + Vim(echoerr):Vim:E492: Not an editor command: asdf ~ + + +CLEANUP CODE *try-finally* + +Scripts often change global settings and restore them at their end. If the +user however interrupts the script by pressing CTRL-C, the settings remain in +an inconsistent state. The same may happen to you in the development phase of +a script when an error occurs or you explicitly throw an exception without +catching it. You can solve these problems by using a try conditional with +a finally clause for restoring the settings. Its execution is guaranteed on +normal control flow, on error, on an explicit ":throw", and on interrupt. +(Note that errors and interrupts from inside the try conditional are converted +to exceptions. When not caught, they terminate the script after the finally +clause has been executed.) +Example: > + + :try + : let s:saved_ts = &ts + : set ts=17 + : + : " Do the hard work here. + : + :finally + : let &ts = s:saved_ts + : unlet s:saved_ts + :endtry + +This method should be used locally whenever a function or part of a script +changes global settings which need to be restored on failure or normal exit of +that function or script part. + + *break-finally* +Cleanup code works also when the try block or a catch clause is left by +a ":continue", ":break", ":return", or ":finish". + Example: > + + :let first = 1 + :while 1 + : try + : if first + : echo "first" + : let first = 0 + : continue + : else + : throw "second" + : endif + : catch /.*/ + : echo v:exception + : break + : finally + : echo "cleanup" + : endtry + : echo "still in while" + :endwhile + :echo "end" + +This displays "first", "cleanup", "second", "cleanup", and "end". > + + :function! Foo() + : try + : return 4711 + : finally + : echo "cleanup\n" + : endtry + : echo "Foo still active" + :endfunction + : + :echo Foo() "returned by Foo" + +This displays "cleanup" and "4711 returned by Foo". You don't need to add an +extra ":return" in the finally clause. (Above all, this would override the +return value.) + + *except-from-finally* +Using either of ":continue", ":break", ":return", ":finish", or ":throw" in +a finally clause is possible, but not recommended since it abandons the +cleanup actions for the try conditional. But, of course, interrupt and error +exceptions might get raised from a finally clause. + Example where an error in the finally clause stops an interrupt from +working correctly: > + + :try + : try + : echo "Press CTRL-C for interrupt" + : while 1 + : endwhile + : finally + : unlet novar + : endtry + :catch /novar/ + :endtry + :echo "Script still running" + :sleep 1 + +If you need to put commands that could fail into a finally clause, you should +think about catching or ignoring the errors in these commands, see +|catch-errors| and |ignore-errors|. + + +CATCHING ERRORS *catch-errors* + +If you want to catch specific errors, you just have to put the code to be +watched in a try block and add a catch clause for the error message. The +presence of the try conditional causes all errors to be converted to an +exception. No message is displayed and |v:errmsg| is not set then. To find +the right pattern for the ":catch" command, you have to know how the format of +the error exception is. + Error exceptions have the following format: > + + Vim({cmdname}):{errmsg} +or > + Vim:{errmsg} + +{cmdname} is the name of the command that failed; the second form is used when +the command name is not known. {errmsg} is the error message usually produced +when the error occurs outside try conditionals. It always begins with +a capital "E", followed by a two or three-digit error number, a colon, and +a space. + +Examples: + +The command > + :unlet novar +normally produces the error message > + E108: No such variable: "novar" +which is converted inside try conditionals to an exception > + Vim(unlet):E108: No such variable: "novar" + +The command > + :dwim +normally produces the error message > + E492: Not an editor command: dwim +which is converted inside try conditionals to an exception > + Vim:E492: Not an editor command: dwim + +You can catch all ":unlet" errors by a > + :catch /^Vim(unlet):/ +or all errors for misspelled command names by a > + :catch /^Vim:E492:/ + +Some error messages may be produced by different commands: > + :function nofunc +and > + :delfunction nofunc +both produce the error message > + E128: Function name must start with a capital: nofunc +which is converted inside try conditionals to an exception > + Vim(function):E128: Function name must start with a capital: nofunc +or > + Vim(delfunction):E128: Function name must start with a capital: nofunc +respectively. You can catch the error by its number independently on the +command that caused it if you use the following pattern: > + :catch /^Vim(\a\+):E128:/ + +Some commands like > + :let x = novar +produce multiple error messages, here: > + E121: Undefined variable: novar + E15: Invalid expression: novar +Only the first is used for the exception value, since it is the most specific +one (see |except-several-errors|). So you can catch it by > + :catch /^Vim(\a\+):E121:/ + +You can catch all errors related to the name "nofunc" by > + :catch /\<nofunc\>/ + +You can catch all Vim errors in the ":write" and ":read" commands by > + :catch /^Vim(\(write\|read\)):E\d\+:/ + +You can catch all Vim errors by the pattern > + :catch /^Vim\((\a\+)\)\=:E\d\+:/ +< + *catch-text* +NOTE: You should never catch the error message text itself: > + :catch /No such variable/ +only works in the english locale, but not when the user has selected +a different language by the |:language| command. It is however helpful to +cite the message text in a comment: > + :catch /^Vim(\a\+):E108:/ " No such variable + + +IGNORING ERRORS *ignore-errors* + +You can ignore errors in a specific Vim command by catching them locally: > + + :try + : write + :catch + :endtry + +But you are strongly recommended NOT to use this simple form, since it could +catch more than you want. With the ":write" command, some autocommands could +be executed and cause errors not related to writing, for instance: > + + :au BufWritePre * unlet novar + +There could even be such errors you are not responsible for as a script +writer: a user of your script might have defined such autocommands. You would +then hide the error from the user. + It is much better to use > + + :try + : write + :catch /^Vim(write):/ + :endtry + +which only catches real write errors. So catch only what you'd like to ignore +intentionally. + +For a single command that does not cause execution of autocommands, you could +even suppress the conversion of errors to exceptions by the ":silent!" +command: > + :silent! nunmap k +This works also when a try conditional is active. + + +CATCHING INTERRUPTS *catch-interrupt* + +When there are active try conditionals, an interrupt (CTRL-C) is converted to +the exception "Vim:Interrupt". You can catch it like every exception. The +script is not terminated, then. + Example: > + + :function! TASK1() + : sleep 10 + :endfunction + + :function! TASK2() + : sleep 20 + :endfunction + + :while 1 + : let command = input("Type a command: ") + : try + : if command == "" + : continue + : elseif command == "END" + : break + : elseif command == "TASK1" + : call TASK1() + : elseif command == "TASK2" + : call TASK2() + : else + : echo "\nIllegal command:" command + : continue + : endif + : catch /^Vim:Interrupt$/ + : echo "\nCommand interrupted" + : " Caught the interrupt. Continue with next prompt. + : endtry + :endwhile + +You can interrupt a task here by pressing CTRL-C; the script then asks for +a new command. If you press CTRL-C at the prompt, the script is terminated. + +For testing what happens when CTRL-C would be pressed on a specific line in +your script, use the debug mode and execute the |>quit| or |>interrupt| +command on that line. See |debug-scripts|. + + +CATCHING ALL *catch-all* + +The commands > + + :catch /.*/ + :catch // + :catch + +catch everything, error exceptions, interrupt exceptions and exceptions +explicitly thrown by the |:throw| command. This is useful at the top level of +a script in order to catch unexpected things. + Example: > + + :try + : + : " do the hard work here + : + :catch /MyException/ + : + : " handle known problem + : + :catch /^Vim:Interrupt$/ + : echo "Script interrupted" + :catch /.*/ + : echo "Internal error (" . v:exception . ")" + : echo " - occurred at " . v:throwpoint + :endtry + :" end of script + +Note: Catching all might catch more things than you want. Thus, you are +strongly encouraged to catch only for problems that you can really handle by +specifying a pattern argument to the ":catch". + Example: Catching all could make it nearly impossible to interrupt a script +by pressing CTRL-C: > + + :while 1 + : try + : sleep 1 + : catch + : endtry + :endwhile + + +EXCEPTIONS AND AUTOCOMMANDS *except-autocmd* + +Exceptions may be used during execution of autocommands. Example: > + + :autocmd User x try + :autocmd User x throw "Oops!" + :autocmd User x catch + :autocmd User x echo v:exception + :autocmd User x endtry + :autocmd User x throw "Arrgh!" + :autocmd User x echo "Should not be displayed" + : + :try + : doautocmd User x + :catch + : echo v:exception + :endtry + +This displays "Oops!" and "Arrgh!". + + *except-autocmd-Pre* +For some commands, autocommands get executed before the main action of the +command takes place. If an exception is thrown and not caught in the sequence +of autocommands, the sequence and the command that caused its execution are +abandoned and the exception is propagated to the caller of the command. + Example: > + + :autocmd BufWritePre * throw "FAIL" + :autocmd BufWritePre * echo "Should not be displayed" + : + :try + : write + :catch + : echo "Caught:" v:exception "from" v:throwpoint + :endtry + +Here, the ":write" command does not write the file currently being edited (as +you can see by checking 'modified'), since the exception from the BufWritePre +autocommand abandons the ":write". The exception is then caught and the +script displays: > + + Caught: FAIL from BufWrite Auto commands for "*" +< + *except-autocmd-Post* +For some commands, autocommands get executed after the main action of the +command has taken place. If this main action fails and the command is inside +an active try conditional, the autocommands are skipped and an error exception +is thrown that can be caught by the caller of the command. + Example: > + + :autocmd BufWritePost * echo "File successfully written!" + : + :try + : write /i/m/p/o/s/s/i/b/l/e + :catch + : echo v:exception + :endtry + +This just displays: > + + Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e) + +If you really need to execute the autocommands even when the main action +fails, trigger the event from the catch clause. + Example: > + + :autocmd BufWritePre * set noreadonly + :autocmd BufWritePost * set readonly + : + :try + : write /i/m/p/o/s/s/i/b/l/e + :catch + : doautocmd BufWritePost /i/m/p/o/s/s/i/b/l/e + :endtry +< +You can also use ":silent!": > + + :let x = "ok" + :let v:errmsg = "" + :autocmd BufWritePost * if v:errmsg != "" + :autocmd BufWritePost * let x = "after fail" + :autocmd BufWritePost * endif + :try + : silent! write /i/m/p/o/s/s/i/b/l/e + :catch + :endtry + :echo x + +This displays "after fail". + +If the main action of the command does not fail, exceptions from the +autocommands will be catchable by the caller of the command: > + + :autocmd BufWritePost * throw ":-(" + :autocmd BufWritePost * echo "Should not be displayed" + : + :try + : write + :catch + : echo v:exception + :endtry +< + *except-autocmd-Cmd* +For some commands, the normal action can be replaced by a sequence of +autocommands. Exceptions from that sequence will be catchable by the caller +of the command. + Example: For the ":write" command, the caller cannot know whether the file +had actually been written when the exception occurred. You need to tell it in +some way. > + + :if !exists("cnt") + : let cnt = 0 + : + : autocmd BufWriteCmd * if &modified + : autocmd BufWriteCmd * let cnt = cnt + 1 + : autocmd BufWriteCmd * if cnt % 3 == 2 + : autocmd BufWriteCmd * throw "BufWriteCmdError" + : autocmd BufWriteCmd * endif + : autocmd BufWriteCmd * write | set nomodified + : autocmd BufWriteCmd * if cnt % 3 == 0 + : autocmd BufWriteCmd * throw "BufWriteCmdError" + : autocmd BufWriteCmd * endif + : autocmd BufWriteCmd * echo "File successfully written!" + : autocmd BufWriteCmd * endif + :endif + : + :try + : write + :catch /^BufWriteCmdError$/ + : if &modified + : echo "Error on writing (file contents not changed)" + : else + : echo "Error after writing" + : endif + :catch /^Vim(write):/ + : echo "Error on writing" + :endtry + +When this script is sourced several times after making changes, it displays +first > + File successfully written! +then > + Error on writing (file contents not changed) +then > + Error after writing +etc. + + *except-autocmd-ill* +You cannot spread a try conditional over autocommands for different events. +The following code is ill-formed: > + + :autocmd BufWritePre * try + : + :autocmd BufWritePost * catch + :autocmd BufWritePost * echo v:exception + :autocmd BufWritePost * endtry + : + :write + + +EXCEPTION HIERARCHIES AND PARAMETERIZED EXCEPTIONS *except-hier-param* + +Some programming languages allow to use hierarchies of exception classes or to +pass additional information with the object of an exception class. You can do +similar things in Vim. + In order to throw an exception from a hierarchy, just throw the complete +class name with the components separated by a colon, for instance throw the +string "EXCEPT:MATHERR:OVERFLOW" for an overflow in a mathematical library. + When you want to pass additional information with your exception class, add +it in parentheses, for instance throw the string "EXCEPT:IO:WRITEERR(myfile)" +for an error when writing "myfile". + With the appropriate patterns in the ":catch" command, you can catch for +base classes or derived classes of your hierarchy. Additional information in +parentheses can be cut out from |v:exception| with the ":substitute" command. + Example: > + + :function! CheckRange(a, func) + : if a:a < 0 + : throw "EXCEPT:MATHERR:RANGE(" . a:func . ")" + : endif + :endfunction + : + :function! Add(a, b) + : call CheckRange(a:a, "Add") + : call CheckRange(a:b, "Add") + : let c = a:a + a:b + : if c < 0 + : throw "EXCEPT:MATHERR:OVERFLOW" + : endif + : return c + :endfunction + : + :function! Div(a, b) + : call CheckRange(a:a, "Div") + : call CheckRange(a:b, "Div") + : if (a:b == 0) + : throw "EXCEPT:MATHERR:ZERODIV" + : endif + : return a:a / a:b + :endfunction + : + :function! Write(file) + : try + : execute "write" a:file + : catch /^Vim(write):/ + : throw "EXCEPT:IO(" . getcwd() . ", " . a:file . "):WRITEERR" + : endtry + :endfunction + : + :try + : + : " something with arithmetics and I/O + : + :catch /^EXCEPT:MATHERR:RANGE/ + : let function = substitute(v:exception, '.*(\(\a\+\)).*', '\1', "") + : echo "Range error in" function + : + :catch /^EXCEPT:MATHERR/ " catches OVERFLOW and ZERODIV + : echo "Math error" + : + :catch /^EXCEPT:IO/ + : let dir = substitute(v:exception, '.*(\(.\+\),\s*.\+).*', '\1', "") + : let file = substitute(v:exception, '.*(.\+,\s*\(.\+\)).*', '\1', "") + : if file !~ '^/' + : let file = dir . "/" . file + : endif + : echo 'I/O error for "' . file . '"' + : + :catch /^EXCEPT/ + : echo "Unspecified error" + : + :endtry + +The exceptions raised by Vim itself (on error or when pressing CTRL-C) use +a flat hierarchy: they are all in the "Vim" class. You cannot throw yourself +exceptions with the "Vim" prefix; they are reserved for Vim. + Vim error exceptions are parameterized with the name of the command that +failed, if known. See |catch-errors|. + + +PECULIARITIES + *except-compat* +The exception handling concept requires that the command sequence causing the +exception is aborted immediately and control is transferred to finally clauses +and/or a catch clause. + +In the Vim script language there are cases where scripts and functions +continue after an error: in functions without the "abort" flag or in a command +after ":silent!", control flow goes to the following line, and outside +functions, control flow goes to the line following the outermost ":endwhile" +or ":endif". On the other hand, errors should be catchable as exceptions +(thus, requiring the immediate abortion). + +This problem has been solved by converting errors to exceptions and using +immediate abortion (if not suppressed by ":silent!") only when a try +conditional is active. This is no restriction since an (error) exception can +be caught only from an active try conditional. If you want an immediate +termination without catching the error, just use a try conditional without +catch clause. (You can cause cleanup code being executed before termination +by specifying a finally clause.) + +When no try conditional is active, the usual abortion and continuation +behavior is used instead of immediate abortion. This ensures compatibility of +scripts written for Vim 6.1 and earlier. + +However, when sourcing an existing script that does not use exception handling +commands (or when calling one of its functions) from inside an active try +conditional of a new script, you might change the control flow of the existing +script on error. You get the immediate abortion on error and can catch the +error in the new script. If however the sourced script suppresses error +messages by using the ":silent!" command (checking for errors by testing +|v:errmsg| if appropriate), its execution path is not changed. The error is +not converted to an exception. (See |:silent|.) So the only remaining cause +where this happens is for scripts that don't care about errors and produce +error messages. You probably won't want to use such code from your new +scripts. + + *except-syntax-err* +Syntax errors in the exception handling commands are never caught by any of +the ":catch" commands of the try conditional they belong to. Its finally +clauses, however, is executed. + Example: > + + :try + : try + : throw 4711 + : catch /\(/ + : echo "in catch with syntax error" + : catch + : echo "inner catch-all" + : finally + : echo "inner finally" + : endtry + :catch + : echo 'outer catch-all caught "' . v:exception . '"' + : finally + : echo "outer finally" + :endtry + +This displays: > + inner finally + outer catch-all caught "Vim(catch):E54: Unmatched \(" + outer finally +The original exception is discarded and an error exception is raised, instead. + + *except-single-line* +The ":try", ":catch", ":finally", and ":endtry" commands can be put on +a single line, but then syntax errors may make it difficult to recognize the +"catch" line, thus you better avoid this. + Example: > + :try | unlet! foo # | catch | endtry +raises an error exception for the trailing characters after the ":unlet!" +argument, but does not see the ":catch" and ":endtry" commands, so that the +error exception is discarded and the "E488: Trailing characters" message gets +displayed. + + *except-several-errors* +When several errors appear in a single command, the first error message is +usually the most specific one and therefor converted to the error exception. + Example: > + echo novar +causes > + E121: Undefined variable: novar + E15: Invalid expression: novar +The value of the error exception inside try conditionals is: > + Vim(echo):E121: Undefined variable: novar +< *except-syntax-error* +But when a syntax error is detected after a normal error in the same command, +the syntax error is used for the exception being thrown. + Example: > + unlet novar # +causes > + E108: No such variable: "novar" + E488: Trailing characters +The value of the error exception inside try conditionals is: > + Vim(unlet):E488: Trailing characters +This is done because the syntax error might change the execution path in a way +not intended by the user. Example: > + try + try | unlet novar # | catch | echo v:exception | endtry + catch /.*/ + echo "outer catch:" v:exception + endtry +This displays "outer catch: Vim(unlet):E488: Trailing characters", and then +a "E600: Missing :endtry" error message is given, see |except-single-line|. + +============================================================================== +9. 例 *eval-examples* 16進数で表示する ~ @@ -2167,8 +7230,36 @@ Vimにはsscanf()に相当する関数が無い。もしも行の一部を取り 入力は変数"line"、結果は"file"と"lnum"と"col"に格納される(アイデアはMichael Geddesによる)。 +getting the scriptnames in a Dictionary ~ + *scriptnames-dictionary* +The |:scriptnames| command can be used to get a list of all script files that +have been sourced. There is no equivalent function or variable for this +(because it's rarely needed). In case you need to manipulate the list this +code can be used: > + " Get the output of ":scriptnames" in the scriptnames_output variable. + let scriptnames_output = '' + redir => scriptnames_output + silent scriptnames + redir END + + " Split the output into lines and parse each line. Add an entry to the + " "scripts" dictionary. + let scripts = {} + for line in split(scriptnames_output, "\n") + " Only do non-blank lines. + if line =~ '\S' + " Get the first number in the line. + let nr = matchstr(line, '\d\+') + " Get the file name, remove the script number " 123: ". + let name = substitute(line, '.\+:\s*', '', '') + " Add an item to the Dictionary + let scripts[nr] = name + endif + endfor + unlet scriptnames_output + ============================================================================== -8. +eval機能が無効 *no-eval-feature* +10. +eval機能が無効 *no-eval-feature* コンパイル時に|+eval|機能が無効とされている場合、総ての式評価(eval)コマンドは 提供されない。その場合、Vimスクリプトが総ての種類のエラーを引き起こすことを避 @@ -2178,8 +7269,66 @@ Geddesによる)。 認識されない。 |+eval|機能が存在しなかった場合、どのようにコマンドが実行を免れるかの例: -> if 1 -> echo "Expression evaluation is compiled in" -> endif + + :if 1 + : echo "Expression evaluation is compiled in" + :else + : echo "You will _never_ see this message" + :endif + +============================================================================== +11. サンドボックス *eval-sandbox* *sandbox* *E48* + +The 'foldexpr', 'includeexpr', 'indentexpr', 'statusline' and 'foldtext' +options are evaluated in a sandbox. This means that you are protected from +these expressions having nasty side effects. This gives some safety for when +these options are set from a modeline. It is also used when the command from +a tags file is executed and for CTRL-R = in the command line. +The sandbox is also used for the |:sandbox| command. + +These items are not allowed in the sandbox: + - changing the buffer text + - defining or changing mapping, autocommands, functions, user commands + - setting certain options (see |option-summary|) + - setting certain v: variables (see |v:var|) *E794* + - executing a shell command + - reading or writing a file + - jumping to another buffer or editing a file + - executing Python, Perl, etc. commands +This is not guaranteed 100% secure, but it should block most attacks. + + *:san* *:sandbox* +:san[dbox] {cmd} Execute {cmd} in the sandbox. Useful to evaluate an + option that may have been set from a modeline, e.g. + 'foldexpr'. + + *sandbox-option* +A few options contain an expression. When this expression is evaluated it may +have to be done in the sandbox to avoid a security risk. But the sandbox is +restrictive, thus this only happens when the option was set from an insecure +location. Insecure in this context are: +- sourcing a .vimrc or .exrc in the current directory +- while executing in the sandbox +- value coming from a modeline + +Note that when in the sandbox and saving an option value and restoring it, the +option will still be marked as it was set in the sandbox. + +============================================================================== +12. テキストロック *textlock* + +In a few situations it is not allowed to change the text in the buffer, jump +to another window and some other things that might confuse or break what Vim +is currently doing. This mostly applies to things that happen when Vim is +actually doing something else. For example, evaluating the 'balloonexpr' may +happen any moment the mouse cursor is resting at some position. + +This is not allowed when the textlock is active: + - changing the buffer text + - jumping to another buffer or window + - editing another file + - closing a window or quitting Vim + - etc. + vim:tw=78:ts=8:ft=help:norl: From 4c8e0c056f1a8d27f203436d84c7fa5f3f688e24 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Sat, 16 Jun 2007 11:07:38 +0000 Subject: [PATCH 096/783] fix: translated *eval-examples*, *eval-sandbox*, *textlock* git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@96 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/eval.jax | 256 +++++++++++++++++++++------------------------------- 1 file changed, 101 insertions(+), 155 deletions(-) diff --git a/ja/eval.jax b/ja/eval.jax index 0f73d5a42..d2c8e7356 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -7114,145 +7114,90 @@ a "E600: Missing :endtry" error message is given, see |except-single-line|. 9. 例 *eval-examples* 16進数で表示する ~ - -> " The function Nr2Hex() returns the Hex string of a number. -> func Nr2Hex(nr) -> let n = a:nr -> let r = "" -> while n -> let r = '0123456789ABCDEF'[n % 16] . r -> let n = n / 16 -> endwhile -> return r -> endfunc > -> " The function String2Hex() converts each character in a string to a two -> " character Hex string. -> func String2Hex(str) -> let out = '' -> let ix = 0 -> while ix < strlen(a:str) -> let out = out . Nr2Hex(char2nr(a:str[ix])) -> let ix = ix + 1 -> endwhile -> return out -> endfunc - -使い方: -> echo Nr2Hex(32) -結果: "20" -> echo String2Hex("32") -結果: "3332" + :" 関数 Nr2Bin() は数値の2進文字列を返す。 + :func Nr2Bin(nr) + : let n = a:nr + : let r = "" + : while n + : let r = '01'[n % 2] . r + : let n = n / 2 + : endwhile + : return r + :endfunc + + :" 関数 String2Bin() は文字列中の各文字を2進文字列に変換して、ハイフン(-)で + :" 区切って返す。 + :func String2Bin(str) + : let out = '' + : for ix in range(strlen(a:str)) + : let out = out . '-' . Nr2Bin(char2nr(a:str[ix])) + : endfor + : return out[1:] + :endfunc + +使い方の例: > + :echo Nr2Bin(32) +結果: "100000" > + :echo String2Bin("32") +結果: "110011-110010" + 行をソート(並べ替え)する (by Robert Webb) ~ -これは行をソートするためのVimスクリプトである。Vimにおいて行を(Visualモードで) -選択し":Sort"とタイプする。これは如何なる外部プログラムも起動しない。よってど -のようなプラットホームであっても動作する。実は関数Sort()は、C言語のqsort()のよ -うに引数として比較関数を受けつける。よって、データ毎に必要となるソート順に応じ -た、異なった比較関数を与えることができる。 - -> " Function for use with Sort(), to compare two strings. -> func! Strcmp(str1, str2) -> if (a:str1 < a:str2) -> return -1 -> elseif (a:str1 > a:str2) -> return 1 -> else -> return 0 -> endif -> endfunction -> -> " Sort lines. SortR() is called recursively. -> func! SortR(start, end, cmp) -> if (a:start >= a:end) -> return -> endif -> let partition = a:start - 1 -> let middle = partition -> let partStr = getline((a:start + a:end) / 2) -> let i = a:start -> while (i <= a:end) -> let str = getline(i) -> exec "let result = " . a:cmp . "(str, partStr)" -> if (result <= 0) -> " Need to put it before the partition. Swap lines i and partition. -> let partition = partition + 1 -> if (result == 0) -> let middle = partition -> endif -> if (i != partition) -> let str2 = getline(partition) -> call setline(i, str2) -> call setline(partition, str) -> endif -> endif -> let i = i + 1 -> endwhile -> -> " Now we have a pointer to the "middle" element, as far as partitioning -> " goes, which could be anywhere before the partition. Make sure it is at -> " the end of the partition. -> if (middle != partition) -> let str = getline(middle) -> let str2 = getline(partition) -> call setline(middle, str2) -> call setline(partition, str) -> endif -> call SortR(a:start, partition - 1, a:cmp) -> call SortR(partition + 1, a:end, a:cmp) -> endfunc -> -> " To Sort a range of lines, pass the range to Sort() along with the name of a -> " function that will compare two lines. -> func! Sort(cmp) range -> call SortR(a:firstline, a:lastline, a:cmp) -> endfunc -> -> " :Sort takes a range of lines and sorts them. -> command! -nargs=0 -range Sort <line1>,<line2>call Sort("Strcmp") +以下は、指定した比較関数を使って行をソートする例である。 > + + :func SortBuffer() + : let lines = getline(1, '$') + : call sort(lines, function("Strcmp")) + : call setline(1, lines) + :endfunction + +ワンライナーにすると次のようになる: > + :call setline(1, sort(getline(1, '$'), function("Strcmp"))) +scanf() の代替 ~ *sscanf* Vimにはsscanf()に相当する関数が無い。もしも行の一部を取り出す必要があるのなら ば、matchstr()やsubstitute()を使って行なうことができる。この例は"foobar.txt, 123, 45"のような行から、どうやってファイル名と行番号とカラム番号を取り出すかを -示している。 -> " Set up the match bit -> let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)' -> "get the part matching the whole expression -> let l = matchstr(line, mx) -> "get each item out of the match -> let file = substitute(l, mx, '\1', '') -> let lnum = substitute(l, mx, '\2', '') -> let col = substitute(l, mx, '\3', '') +示している。 > + :" 正規表現を設定 + :let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)' + :" 正規表現全体にマッチする部分を取り出す + :let l = matchstr(line, mx) + :" マッチ結果から各要素を取り出す + :let file = substitute(l, mx, '\1', '') + :let lnum = substitute(l, mx, '\2', '') + :let col = substitute(l, mx, '\3', '') 入力は変数"line"、結果は"file"と"lnum"と"col"に格納される(アイデアはMichael Geddesによる)。 -getting the scriptnames in a Dictionary ~ + +辞書からscriptnamesを取り出す ~ *scriptnames-dictionary* -The |:scriptnames| command can be used to get a list of all script files that -have been sourced. There is no equivalent function or variable for this -(because it's rarely needed). In case you need to manipulate the list this -code can be used: > - " Get the output of ":scriptnames" in the scriptnames_output variable. +コマンド|:scriptnames|により今までにsourceされた全てのスクリプトファイルのリス +トを取得することができる。これと等価な関数や変数は存在しない(めったに必要にな +らないからである)。そのような場合には次のコードが利用できる: > + " ":scriptnames" の出力を変数scriptnames_outputに入れる。 let scriptnames_output = '' redir => scriptnames_output silent scriptnames redir END - " Split the output into lines and parse each line. Add an entry to the - " "scripts" dictionary. + " 出力を行のリストに分割し、各行をパースする。辞書"scripts"に要素を追加 + " する。 let scripts = {} for line in split(scriptnames_output, "\n") - " Only do non-blank lines. + " 空行以外に対して実行 if line =~ '\S' - " Get the first number in the line. + " 行内の最初の番号を取得 let nr = matchstr(line, '\d\+') - " Get the file name, remove the script number " 123: ". + " ファイル名を取得。スクリプト番号" 123: "を削除。 let name = substitute(line, '.\+:\s*', '', '') - " Add an item to the Dictionary + " 辞書に要素を追加 let scripts[nr] = name endif endfor @@ -7279,56 +7224,57 @@ code can be used: > ============================================================================== 11. サンドボックス *eval-sandbox* *sandbox* *E48* -The 'foldexpr', 'includeexpr', 'indentexpr', 'statusline' and 'foldtext' -options are evaluated in a sandbox. This means that you are protected from -these expressions having nasty side effects. This gives some safety for when -these options are set from a modeline. It is also used when the command from -a tags file is executed and for CTRL-R = in the command line. -The sandbox is also used for the |:sandbox| command. - -These items are not allowed in the sandbox: - - changing the buffer text - - defining or changing mapping, autocommands, functions, user commands - - setting certain options (see |option-summary|) - - setting certain v: variables (see |v:var|) *E794* - - executing a shell command - - reading or writing a file - - jumping to another buffer or editing a file - - executing Python, Perl, etc. commands -This is not guaranteed 100% secure, but it should block most attacks. +オプション 'foldexpr', 'includeexpr', 'indentexpr', 'statusline', 'foldtext' +はサンドボックスの中で評価される。これによって、悪質な副作用を持つ式からの保護 +がなされている。これによって、これらのオプションがモードラインから設定された場合 +にある種の安全性がもたらされている。tagsファイルからのコマンドが実行されたとき +とコマンドラインでのCTRL-R =に対してもサンドボックスが使われる。 +コマンド|:sandbox|に対してもサンドボックスが使われる。 + +サンドボックス内では以下の事が禁止される: + - バッファの変更 + - マッピング、自動コマンド、関数、ユーザ定義コマンドの定義・変更 + - ある種のオプションの設定 (|option-summary|を参照) + - ある種のVim定義済変数(v:)の設定 (|v:var|を参照) *E794* + - シェルコマンドの実行 + - ファイルの読み書き + - 他のバッファへの移動・ファイルを開く + - Python, Perl等のコマンドの実行 +これは100%安全と保証されているものではない。しかしある種の攻撃を防ぐ事ができる +はずである。 *:san* *:sandbox* -:san[dbox] {cmd} Execute {cmd} in the sandbox. Useful to evaluate an - option that may have been set from a modeline, e.g. - 'foldexpr'. +:san[dbox] {cmd} サンドボックス内で{cmd}を実行する。モードラインから設 + 定された可能性のあるオプションを評価するために使える。 + 例: 'foldexpr'. *sandbox-option* -A few options contain an expression. When this expression is evaluated it may -have to be done in the sandbox to avoid a security risk. But the sandbox is -restrictive, thus this only happens when the option was set from an insecure -location. Insecure in this context are: -- sourcing a .vimrc or .exrc in the current directory -- while executing in the sandbox -- value coming from a modeline +いくつかのオプションは式を含んでいる。その式を評価するときはセキュリティ上の危 +険性を回避するためにサンドボックス内で行わねばならない。しかしサンドボックスに +は制限があるので、これはそのオプションが安全でない場所で設定されたときのみ行わ +れる。ここで「安全でない」とは次の場合をいう: +- カレントディレクトリの .vimrc や .exrc を source するとき +- サンドボックス内で実行している最中 +- モードラインから設定された値 -Note that when in the sandbox and saving an option value and restoring it, the -option will still be marked as it was set in the sandbox. +Note サンドボックス内でオプションの値を退避し、それから復元した場合、そのオプ +ションはやはりサンドボックス内で設定されたものとマークされる。 ============================================================================== 12. テキストロック *textlock* -In a few situations it is not allowed to change the text in the buffer, jump -to another window and some other things that might confuse or break what Vim -is currently doing. This mostly applies to things that happen when Vim is -actually doing something else. For example, evaluating the 'balloonexpr' may -happen any moment the mouse cursor is resting at some position. - -This is not allowed when the textlock is active: - - changing the buffer text - - jumping to another buffer or window - - editing another file - - closing a window or quitting Vim - - etc. +いくつか状況において、バッファを変更する・他のウィンドウへジャンプするなどVim +の現在の処理を混乱させたり破壊してしまうような動作は禁止される。これはvimが実 +際に他の何かをしているときに起こることに対して当てはまる。例えば、 +'balloonexpr'の評価は、マウスカーソルがある位置に留まっているどんなときにでも +起こる。 + +テキストロックが有効になっているときは、以下の事が禁止される: + - バッファの変更 + - 他のバッファやウィンドウへの移動 + - 他のファイルを開く + - ウィンドウを閉じる。Vimを終了する。 + - など。 vim:tw=78:ts=8:ft=help:norl: From d210ce113a75150dc27446299e67e285c914dfd1 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro <jod@r9.dion.ne.jp> Date: Mon, 18 Jun 2007 12:26:23 +0000 Subject: [PATCH 097/783] translated "8. Exception handling" in eval.txt git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@97 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/eval.jax | 753 +++++++++++++++++++++++++--------------------------- 1 file changed, 358 insertions(+), 395 deletions(-) diff --git a/ja/eval.jax b/ja/eval.jax index d2c8e7356..33d6a31b3 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -1,6 +1,7 @@ COMMENT: Vimスクリプト STATUS: suspended 7.1 TRANSLATOR: 村岡太郎 <koron@tka.att.ne.jp> +TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> *eval.txt* For Vim version 7.1. Last change: 2007 May 11 @@ -6119,148 +6120,131 @@ This would call the function "my_func_whizz(parameter)". ============================================================================== 8. 例外処理 *exception-handling* -The Vim script language comprises an exception handling feature. This section -explains how it can be used in a Vim script. +Vimスクリプト言語は例外処理機構を備えている。この節では例外処理をどのように行 +うかについて説明する。 -Exceptions may be raised by Vim on an error or on interrupt, see -|catch-errors| and |catch-interrupt|. You can also explicitly throw an -exception by using the ":throw" command, see |throw-catch|. +例外はエラー発生時や割り込み発生時にVimによって投げられる。それについては +|catch-errors|と|catch-interrupt|を参照。ユーザはコマンド|:throw|によって明示 +的に例外を投げることができる。|throw-catch|を参照。 -TRY CONDITIONALS *try-conditionals* +TRY 条件文 *try-conditionals* -Exceptions can be caught or can cause cleanup code to be executed. You can -use a try conditional to specify catch clauses (that catch exceptions) and/or -a finally clause (to be executed for cleanup). - A try conditional begins with a |:try| command and ends at the matching -|:endtry| command. In between, you can use a |:catch| command to start -a catch clause, or a |:finally| command to start a finally clause. There may -be none or multiple catch clauses, but there is at most one finally clause, -which must not be followed by any catch clauses. The lines before the catch -clauses and the finally clause is called a try block. > +例外を捕捉したり、例外を引き金として後始末のコードを実行することができる。try +条件文を使う事によってcatch節(これが例外を捕捉する)やfinally節(後始末のために +実行される)を指定する事ができる。 +try条件文はコマンド|:try|によって始まり、対応するコマンド|:endtry|によって終了 +する。その間でコマンド|:catch|によりcatch節を定めたり、コマンド|:finally|によ +ってfinally節を定めることができる。catch節は1個もなかったり、複数個あってもよ +い。しかしfinally節は1個までしか持てない。finally節の後にcatch節があってはなら +ない。catch節とfinally節の前の部分はtryブロックと呼ばれる。 :try : ... - : ... TRY BLOCK + : ... try ブロック : ... :catch /{pattern}/ : ... - : ... CATCH CLAUSE + : ... catch 節 : ... :catch /{pattern}/ : ... - : ... CATCH CLAUSE + : ... catch 節 : ... :finally : ... - : ... FINALLY CLAUSE + : ... finally 節 : ... :endtry -The try conditional allows to watch code for exceptions and to take the -appropriate actions. Exceptions from the try block may be caught. Exceptions -from the try block and also the catch clauses may cause cleanup actions. - When no exception is thrown during execution of the try block, the control -is transferred to the finally clause, if present. After its execution, the -script continues with the line following the ":endtry". - When an exception occurs during execution of the try block, the remaining -lines in the try block are skipped. The exception is matched against the -patterns specified as arguments to the ":catch" commands. The catch clause -after the first matching ":catch" is taken, other catch clauses are not -executed. The catch clause ends when the next ":catch", ":finally", or -":endtry" command is reached - whatever is first. Then, the finally clause -(if present) is executed. When the ":endtry" is reached, the script execution -continues in the following line as usual. - When an exception that does not match any of the patterns specified by the -":catch" commands is thrown in the try block, the exception is not caught by -that try conditional and none of the catch clauses is executed. Only the -finally clause, if present, is taken. The exception pends during execution of -the finally clause. It is resumed at the ":endtry", so that commands after -the ":endtry" are not executed and the exception might be caught elsewhere, -see |try-nesting|. - When during execution of a catch clause another exception is thrown, the -remaining lines in that catch clause are not executed. The new exception is -not matched against the patterns in any of the ":catch" commands of the same -try conditional and none of its catch clauses is taken. If there is, however, -a finally clause, it is executed, and the exception pends during its -execution. The commands following the ":endtry" are not executed. The new -exception might, however, be caught elsewhere, see |try-nesting|. - When during execution of the finally clause (if present) an exception is -thrown, the remaining lines in the finally clause are skipped. If the finally -clause has been taken because of an exception from the try block or one of the -catch clauses, the original (pending) exception is discarded. The commands -following the ":endtry" are not executed, and the exception from the finally -clause is propagated and can be caught elsewhere, see |try-nesting|. - -The finally clause is also executed, when a ":break" or ":continue" for -a ":while" loop enclosing the complete try conditional is executed from the -try block or a catch clause. Or when a ":return" or ":finish" is executed -from the try block or a catch clause of a try conditional in a function or -sourced script, respectively. The ":break", ":continue", ":return", or -":finish" pends during execution of the finally clause and is resumed when the -":endtry" is reached. It is, however, discarded when an exception is thrown -from the finally clause. - When a ":break" or ":continue" for a ":while" loop enclosing the complete -try conditional or when a ":return" or ":finish" is encountered in the finally -clause, the rest of the finally clause is skipped, and the ":break", -":continue", ":return" or ":finish" is executed as usual. If the finally -clause has been taken because of an exception or an earlier ":break", -":continue", ":return", or ":finish" from the try block or a catch clause, -this pending exception or command is discarded. - -For examples see |throw-catch| and |try-finally|. - - -NESTING OF TRY CONDITIONALS *try-nesting* - -Try conditionals can be nested arbitrarily. That is, a complete try -conditional can be put into the try block, a catch clause, or the finally -clause of another try conditional. If the inner try conditional does not -catch an exception thrown in its try block or throws a new exception from one -of its catch clauses or its finally clause, the outer try conditional is -checked according to the rules above. If the inner try conditional is in the -try block of the outer try conditional, its catch clauses are checked, but -otherwise only the finally clause is executed. It does not matter for -nesting, whether the inner try conditional is directly contained in the outer -one, or whether the outer one sources a script or calls a function containing -the inner try conditional. - -When none of the active try conditionals catches an exception, just their -finally clauses are executed. Thereafter, the script processing terminates. -An error message is displayed in case of an uncaught exception explicitly -thrown by a ":throw" command. For uncaught error and interrupt exceptions -implicitly raised by Vim, the error message(s) or interrupt message are shown -as usual. - -For examples see |throw-catch|. - - -EXAMINING EXCEPTION HANDLING CODE *except-examine* - -Exception handling code can get tricky. If you are in doubt what happens, set -'verbose' to 13 or use the ":13verbose" command modifier when sourcing your -script file. Then you see when an exception is thrown, discarded, caught, or -finished. When using a verbosity level of at least 14, things pending in -a finally clause are also shown. This information is also given in debug mode -(see |debug-scripts|). - - -THROWING AND CATCHING EXCEPTIONS *throw-catch* - -You can throw any number or string as an exception. Use the |:throw| command -and pass the value to be thrown as argument: > +try条件文により、コードから発生する例外を監視したり、適切な対応を取ることができる。 +tryブロック内で発生した例外は捕捉される。tryブロックとcatch節内で発生した例外 +は捕捉され、後始末が行われる。 +tryブロックの実行中に例外が発生しなかった場合は、制御は(もしあれば)finally節に +移動する。その実行後に、スクリプトは":endtry"の後の行から実行を継続する。 +tryブロックの実行中に例外が発生した場合は、tryブロックの残りの行はスキップされる。 +例外はコマンド":catch"の引数として指定された正規表現に照合される。最初にマッチ +した":catch"の後のcatch節が実行される。他のcatch節は実行されない。catch節は次 +に":catch", ":finally", ":endtry"が現れたところで終了する(どれでもよい)。 +":endtry"に達すると、スクリプトは次の行から通常通り実行が続けられる。 +発生した例外が、コマンド":catch"で指定されたどの正規表現にもマッチしないとき、 +その例外はそのtry条件文で捕捉されず、どのcatch節も実行されない。finally節があ +るならば実行される。finally節の実行中は例外は後回しにされ、":endtry"のときに実 +行される。そして":endtry"の後のコマンドは実行されず、例外は他のどこかで捕捉さ +れる。|try-nesting|を参照。 +catch節の実行中に新たな例外が発生した場合は、そのcatch節の残りの行は実行されな +い。新しい例外は同じtry条件文のどの":catch"コマンドの正規表現にも照合されず、 +どのcatch節も実行されない。しかしfinally節があるならばそこが実行され、その間そ +の例外は保留される。":endtry"の後のコマンドは実行されない。新しい例外は他のど +こかで捕捉される。|try-nesting|を参照。 +finally節の実行中に例外が発生した場合は、そのfinally節の残りの行は実行されない。 +tryブロックやそのcatch節のどこかで例外が発生してからそのfinally節が実行されて +いた場合は、元の(保留されていた)例外は破棄される。":endtry"の後のコマンドは実 +行されない。finally節で発生した例外は伝播し、他のどこかで捕捉される。 +|try-nesting|を参照。 + +完全なtry条件文を囲む":while"ループ内で、tryブロックやcatch節において":break" +や":continue"が実行されたときもfinally節が実行される。 +また、関数の中やsourceされたスクリプト中で、tryブロックやtry条件文のcatch節に +おいて":return"や":finish"が実行されたときもfinally節が実行される。finally節の +実行中は":break", ":continue", ":return", ":finish"は保留され、":endtry"に達し +たとき再開される。しかしこれらは、そのfinally節内で例外が発生したときは破棄さ +れる。 +完全なtry条件節を囲む":while"ループ内での":break"や":continue"、またはfinally +節内で":return"や":finish"に出会ったときは、finally節の残りはスキップされ、通 +常通り":break", "continue", ":return", "finish"が実行される。もしそのfinally節 +の前に、tryブロックやcatch節内で例外が発生したり、":break", ":continue", +":return", ":finally"が行われていた場合は、それらの保留されていた例外やコマン +ドは破棄される。 + +例として |throw-catch| と |try-finally| を参照。 + + +try条件文のネスト *try-nesting* + +try条件文は任意にネストされられる。つまり、try条件文のtryブロック・catch節・ +finally節のなかに別の完全なtry条件文を書くことができる。内側のtry条件文がtryブ +ロックで発生した例外を捕捉しなかったときや、catch節・finally節で新たな例外が発 +生したときは、外側のtry条件文がそのルールにしたがって例外を捕捉する。内側の +try条件文が外側の条件文のtryブロックの中にある場合はcatch節が判定されるが、そ +うでない場合はfinally節のみが実行される。これはネストの仕方には関係ない。つま +り、内側のtry条件文が直接外側のtry条件文に含まれていてもよいし、外側がスクリプ +トをsourceしたり、内側のtry条件文を含む関数を呼び出していてもよい。 + +有効なtry条件文のどれも例外を捕捉しなかったときは、それらのfinally節が実行され +る。その後、スクリプトの実行は停止する。":throw"コマンドにより明示的に投げられ +た例外が捕捉されなかった場合は、エラーメッセージが表示される。Vimによって暗黙 +的に投げられたエラーや割り込み例外については、通常通りエラーメッセージや割り込 +みメッセージが表示される。 + +例として |throw-catch| を参照。 + + +例外処理コードの検査 *except-examine* + +例外処理のコードはトリッキーになりがちである。何が起こっているか知りたいときは +スクリプトファイルをsourceするときに'verbose'を13に設定するか、コマンド修飾子 +":13verbose"を使う。すると例外が発生・破棄・捕捉・完了したときには表示されるよ +うになる。冗長度のレベルを14異常にすると、finally節において保留されているもの +も表示されるようになる。この情報はデバッグモードでも表示される +(|debug-scripts|を参照)。 + + +例外の生成と捕捉 *throw-catch* + +任意の数値や文字列を例外として投げることができる。コマンド|:throw|を使い、投げ +られる値を引数に渡す: > :throw 4711 :throw "string" < *throw-expression* -You can also specify an expression argument. The expression is then evaluated -first, and the result is thrown: > +式を引数に指定することもできる。まずその式が評価され、その結果が投げられる: > :throw 4705 + strlen("string") :throw strpart("strings", 0, 6) -An exception might be thrown during evaluation of the argument of the ":throw" -command. Unless it is caught there, the expression evaluation is abandoned. -The ":throw" command then does not throw a new exception. - Example: > +":throw"コマンドの引数を評価している最中に例外が発生することもありうる。その例 +外が捕捉されない限り、その式の評価は破棄される。 +よって、その":throw"コマンドは例外を投げることができない。 + 例: > :function! Foo(arg) : try @@ -6277,15 +6261,14 @@ The ":throw" command then does not throw a new exception. : :throw Foo("arrgh") + Bar() -This throws "arrgh", and "in Bar" is not displayed since Bar() is not -executed. > +この例を実行すると"arrgh"が投げられ、Bar()が実行されないため"in Bar"は表示され +ない。しかし次のようにすると > :throw Foo("foo") + Bar() -however displays "in Bar" and throws 4711. +"in Bar"を表示し、4711を投げる。 -Any other command that takes an expression as argument might also be -abandoned by an (uncaught) exception during the expression evaluation. The -exception is then propagated to the caller of the command. - Example: > +式を引数として受け取る他のコマンドでも、式の評価中に捕捉されない例外が発生する +とコマンドが破棄される。そして例外はそのコマンドを呼び出した位置へ伝播する。 + 例: > :if Foo("arrgh") : echo "then" @@ -6293,14 +6276,14 @@ exception is then propagated to the caller of the command. : echo "else" :endif -Here neither of "then" or "else" is displayed. +この例で、"then"と"else"のどちらも表示されない。 *catch-order* -Exceptions can be caught by a try conditional with one or more |:catch| -commands, see |try-conditionals|. The values to be caught by each ":catch" -command can be specified as a pattern argument. The subsequent catch clause -gets executed when a matching exception is caught. - Example: > +例外は、1個以上の|:catch|コマンドを持つtry条件文で捕捉することができる。これに +ついては|try-conditionals|を参照。各":catch"コマンドで捕捉される値は、引数にて +正規表現で指定できる。マッチする例外が捕捉されると、その後に続くcatch節が実行 +される。 + 例: > :function! Foo(value) : try @@ -6315,30 +6298,29 @@ gets executed when a matching exception is caught. :call Foo(0x1267) :call Foo('string') -The first call to Foo() displays "Number thrown", the second "String thrown". -An exception is matched against the ":catch" commands in the order they are -specified. Only the first match counts. So you should place the more -specific ":catch" first. The following order does not make sense: > +最初のFoo()の呼び出しは"Number thrown"を表示し、2番目の呼び出しは"String +thrown"を表示する。例外は、順番に":catch"コマンドに照合される。最初にマッチし +たcatch節だけが実行される。そのため、より限定的な":catch"を先に書くべきである。 +次の順序で書くと無意味になってしまう: > : catch /.*/ : echo "String thrown" : catch /^\d\+$/ : echo "Number thrown" -The first ":catch" here matches always, so that the second catch clause is -never taken. +最初の":catch"は常にマッチするため、2番目のcatch節は決して実行されない。 *throw-variables* -If you catch an exception by a general pattern, you may access the exact value -in the variable |v:exception|: > +一般的な正規表現により例外を捕捉した場合、その正確な値には変数|v:exception|に +よりアクセスできる: > : catch /^\d\+$/ : echo "Number thrown. Value is" v:exception -You may also be interested where an exception was thrown. This is stored in -|v:throwpoint|. Note that "v:exception" and "v:throwpoint" are valid for the -exception most recently caught as long it is not finished. - Example: > +また、どこで例外が発生したかも知りたいだろう。これは|v:throwpoint|に保持されて +いる。Note "v:exception"と"v:throwpoint"は最も直近に捕捉された例外に対し、それ +が終了するまで有効である。 + 例: > :function! Caught() : if v:exception != "" @@ -6369,15 +6351,15 @@ exception most recently caught as long it is not finished. : :call Foo() -This displays > +上の例は次のように表示する > Nothing caught Caught "4711" in function Foo, line 4 Caught "oops" in function Foo, line 10 Nothing caught -A practical example: The following command ":LineNumber" displays the line -number in the script or function where it has been used: > +実用的な例: 次のコマンド":LineNumber"は、それが呼び出されたスクリプトや関数中 +の行番号を表示する: > :function! LineNumber() : return substitute(v:throwpoint, '.*\D\(\d\+\).*', '\1', "") @@ -6385,8 +6367,8 @@ number in the script or function where it has been used: > :command! LineNumber try | throw "" | catch | echo LineNumber() | endtry < *try-nested* -An exception that is not caught by a try conditional can be caught by -a surrounding try conditional: > +try条件文によって捕捉されないはそれを囲むtry条件文によって捕捉することができる +: > :try : try @@ -6400,13 +6382,12 @@ a surrounding try conditional: > : echo "foo" :endtry -The inner try conditional does not catch the exception, just its finally -clause is executed. The exception is then caught by the outer try -conditional. The example displays "inner finally" and then "foo". +内側のtry条件文はこの例外を捕捉せず、finally節が実行されるだけである。そしてこ +の例外は外側のtry条件文で捕捉される。この例を実行すると"inner finally"と"foo" +が表示される。 *throw-from-catch* -You can catch an exception and throw a new one to be caught elsewhere from the -catch clause: > +例外を捕捉した後、新しい例外を投げて他のcatch節で捕捉させることができる: > :function! Foo() : throw "foo" @@ -6427,11 +6408,11 @@ catch clause: > : echo "Caught" v:exception :endtry -This displays "Caught foo, throw bar" and then "Caught bar". +これを実行すると"Caught foo, throw bar"と"Caught bar"が表示される。 *rethrow* -There is no real rethrow in the Vim script language, but you may throw -"v:exception" instead: > +Vimスクリプト言語には本物のrethrowはないが、代わりに"v:exception"を使うことが +できる: > :function! Bar() : try @@ -6442,11 +6423,10 @@ There is no real rethrow in the Vim script language, but you may throw : endtry :endfunction < *try-echoerr* -Note that this method cannot be used to "rethrow" Vim error or interrupt -exceptions, because it is not possible to fake Vim internal exceptions. -Trying so causes an error exception. You should throw your own exception -denoting the situation. If you want to cause a Vim error exception containing -the original error exception value, you can use the |:echoerr| command: > +Note この方法はVimのエラーや割り込み例外を"rethrow"するためには使えない。Vimの +内部例外を偽装することはできないからである。それを行おうとするとエラー例外が発 +生する。その状況を表す自分自身の例外を投げるべきである。独自のエラー例外値を含 +むVimのエラー例外を発生させたい場合には、コマンド|:echoerr|を使うことができる: > :try : try @@ -6458,24 +6438,22 @@ the original error exception value, you can use the |:echoerr| command: > : echo v:exception :endtry -This code displays +このコードを実行すると次が表示される Vim(echoerr):Vim:E492: Not an editor command: asdf ~ -CLEANUP CODE *try-finally* +後始末処理 *try-finally* -Scripts often change global settings and restore them at their end. If the -user however interrupts the script by pressing CTRL-C, the settings remain in -an inconsistent state. The same may happen to you in the development phase of -a script when an error occurs or you explicitly throw an exception without -catching it. You can solve these problems by using a try conditional with -a finally clause for restoring the settings. Its execution is guaranteed on -normal control flow, on error, on an explicit ":throw", and on interrupt. -(Note that errors and interrupts from inside the try conditional are converted -to exceptions. When not caught, they terminate the script after the finally -clause has been executed.) -Example: > +しばしばスクリプト中でグローバルな設定を変更し、最後に元の設定を復元することが +ある。しかしユーザがCTRL-Cを押してスクリプトを中断すると、設定が一貫しない状態 +になってしまう。スクリプトの開発段階においても、エラーが発生したり、明示的に例 +外を投げたが捕捉されなかった場合に、同じことが起こりうる。この問題は、try条件 +文を使ってfinally節で設定を復元することで解決できる。finally節は、通常の制御フ +ロー・エラー時・明示的な":throw"時・割り込み時に実行されることが保証されている。 +(Note try条件文の内側で発生したエラーと割り込みは例外に変換される。これらが捕 +捉されなかったときには、finally節の実行の後にスクリプトの実行が停止する。) +例: > :try : let s:saved_ts = &ts @@ -6488,14 +6466,14 @@ Example: > : unlet s:saved_ts :endtry -This method should be used locally whenever a function or part of a script -changes global settings which need to be restored on failure or normal exit of -that function or script part. +関数やスクリプトの一部でグローバルな設定を変更し、その関数・スクリプトの失敗時・ +通常終了時に設定を復元する必要があるときは、必ず局所的にこの手法を使うべきであ +る。 *break-finally* -Cleanup code works also when the try block or a catch clause is left by -a ":continue", ":break", ":return", or ":finish". - Example: > +":continue", ":break", ":return", ":finish"などによってtryブロックやcatch節を +抜けるときも後始末処理が働く。 + 例: > :let first = 1 :while 1 @@ -6517,8 +6495,8 @@ a ":continue", ":break", ":return", or ":finish". :endwhile :echo "end" -This displays "first", "cleanup", "second", "cleanup", and "end". > - +上の例を実行すると"first", "cleanup", "second", "cleanup", "end"と表示される: +> :function! Foo() : try : return 4711 @@ -6530,17 +6508,15 @@ This displays "first", "cleanup", "second", "cleanup", and "end". > : :echo Foo() "returned by Foo" -This displays "cleanup" and "4711 returned by Foo". You don't need to add an -extra ":return" in the finally clause. (Above all, this would override the -return value.) +上の例を実行すると"cleanup"と"4711 returned by Foo"が表示される。finally節に余 +計な":return"を書く必要はない。(そうすると戻り値が上書きされてしまう) *except-from-finally* -Using either of ":continue", ":break", ":return", ":finish", or ":throw" in -a finally clause is possible, but not recommended since it abandons the -cleanup actions for the try conditional. But, of course, interrupt and error -exceptions might get raised from a finally clause. - Example where an error in the finally clause stops an interrupt from -working correctly: > +finally節で":continue", ":break", ":return", ":finish", ":throw"を使うことは可 +能である。しかしそうするとtry条件文の後始末を破棄してしまうことになるので推奨 +されていない。しかし、当然、finally節の中で割り込みとエラー例外が発生すること +はありうる。 +finally節におけるエラーにより、割り込みが正しく動作しなくなる例: > :try : try @@ -6555,134 +6531,130 @@ working correctly: > :echo "Script still running" :sleep 1 -If you need to put commands that could fail into a finally clause, you should -think about catching or ignoring the errors in these commands, see -|catch-errors| and |ignore-errors|. +失敗する可能性のあるコマンドをfinally節に書く必要があるときは、それらのコマン +ドにより発生するエラーを捕捉したり無視したりすることについて考えること。 +|catch-errors| と |ignore-errors| を参照。 -CATCHING ERRORS *catch-errors* +エラーを変更する *catch-errors* -If you want to catch specific errors, you just have to put the code to be -watched in a try block and add a catch clause for the error message. The -presence of the try conditional causes all errors to be converted to an -exception. No message is displayed and |v:errmsg| is not set then. To find -the right pattern for the ":catch" command, you have to know how the format of -the error exception is. - Error exceptions have the following format: > +特定のエラーを捕捉するには、監視したいコードをtryブロックに入れ、そのエラーメ +ッセージに対するcatch節を加えるだけでよい。try条件節が存在すると全てのエラーは +例外に変換される。そのため、メッセージはまったく表示されず、|v:errmsg|は設定さ +れない。":catch"コマンドに対する正しい正規表現を作るには、エラー例外のフォーマ +ットがどのようなものか知っていなければならない。 + エラー例外は次のフォーマットを持つ: > Vim({cmdname}):{errmsg} -or > +または > Vim:{errmsg} -{cmdname} is the name of the command that failed; the second form is used when -the command name is not known. {errmsg} is the error message usually produced -when the error occurs outside try conditionals. It always begins with -a capital "E", followed by a two or three-digit error number, a colon, and -a space. +{cmdname}は失敗したコマンド名である。2番目の形式はコマンド名が不明のとき用いら +れる。{errmsg}は、そのエラーがtry条件文の外で発生したときに通常表示されるエラー +メッセージである。エラーメッセージは必ず大文字の"E"で始まり、その後に2,3桁のエ +ラー番号、コロン、スペースが続く。 -Examples: +例: -The command > +次のコマンドを実行すると、 > :unlet novar -normally produces the error message > +通常次のエラーメッセージが表示される > E108: No such variable: "novar" -which is converted inside try conditionals to an exception > +これはtry条件文の中では例外に変換される > Vim(unlet):E108: No such variable: "novar" -The command > +次のコマンドを実行すると、 > :dwim -normally produces the error message > +通常次のエラーメッセージが表示される > E492: Not an editor command: dwim -which is converted inside try conditionals to an exception > +これはtry条件文の中では例外に変換される > Vim:E492: Not an editor command: dwim -You can catch all ":unlet" errors by a > +":unlet"の全てのエラーを次によって捕捉できる > :catch /^Vim(unlet):/ -or all errors for misspelled command names by a > +また、全てのミススペルされたコマンドのエラーは次で捕捉できる > :catch /^Vim:E492:/ -Some error messages may be produced by different commands: > +複数のコマンドによって同一のエラーメッセージが表示される場合もある: > :function nofunc -and > +と > :delfunction nofunc -both produce the error message > +は両方とも次のエラーメッセージを表示する。 E128: Function name must start with a capital: nofunc -which is converted inside try conditionals to an exception > +これはtry条件節の中では例外に変換される。それぞれ > Vim(function):E128: Function name must start with a capital: nofunc -or > +または > Vim(delfunction):E128: Function name must start with a capital: nofunc -respectively. You can catch the error by its number independently on the -command that caused it if you use the following pattern: > +となる。どのコマンドによって発生したかに関係なくこのエラーを捕捉するには、次の +正規表現を使う: > :catch /^Vim(\a\+):E128:/ -Some commands like > +複数のエラーメッセージを表示するコマンドもある: > :let x = novar -produce multiple error messages, here: > +は次のエラーメッセージを表示する: > E121: Undefined variable: novar E15: Invalid expression: novar -Only the first is used for the exception value, since it is the most specific -one (see |except-several-errors|). So you can catch it by > +最初のエラーメッセージのみが例外の値として使われる。それが最も限定的なメッセー +ジだからである(|except-several-errors|を参照)。これは次のようにして捕捉できる +> :catch /^Vim(\a\+):E121:/ -You can catch all errors related to the name "nofunc" by > +"nofunc"という名前に関係したエラー全てを捕捉するには > :catch /\<nofunc\>/ -You can catch all Vim errors in the ":write" and ":read" commands by > +コマンド":write"と":read"による全てのVimエラーを捕捉するには > :catch /^Vim(\(write\|read\)):E\d\+:/ -You can catch all Vim errors by the pattern > +全てのVimエラーを捕捉するには次の正規表現を使う > :catch /^Vim\((\a\+)\)\=:E\d\+:/ < *catch-text* -NOTE: You should never catch the error message text itself: > +NOTE: エラーメッセージのテキスト自身を捕捉してはならない > :catch /No such variable/ -only works in the english locale, but not when the user has selected -a different language by the |:language| command. It is however helpful to -cite the message text in a comment: > +こうすると英語の環境では動作するが、コマンド |:language|により他の言語を使って +いるユーザの環境では動作しなくなる。しかし、コメントとしてメッセージテキストを +引用することは役に立つ: > :catch /^Vim(\a\+):E108:/ " No such variable - IGNORING ERRORS *ignore-errors* -You can ignore errors in a specific Vim command by catching them locally: > +特定のコマンドで発生したエラーを捕捉すれば、エラーを無視することができる: > :try : write :catch :endtry -But you are strongly recommended NOT to use this simple form, since it could -catch more than you want. With the ":write" command, some autocommands could -be executed and cause errors not related to writing, for instance: > +しかしこの単純な形は使わないよう強く推奨されている。なぜなら、これはあなたが望 +むより多くの例外を捕捉してしまうからである。":write"コマンドを使うと自動コマン +ドが実行され、書き込みとは関係ないエラーが発生する可能性がある。例えば: > :au BufWritePre * unlet novar -There could even be such errors you are not responsible for as a script -writer: a user of your script might have defined such autocommands. You would -then hide the error from the user. - It is much better to use > +このようなエラーの中には、スクリプトの作者が責任を追わないものもある: つまり、 +スクリプトのユーザがそのような自動コマンドを定義している場合である。その場合、 +上の例のようにすると、ユーザからエラーを隠してしまうことになる。エラーを無視す +るには、次のようにした方がよい > :try : write :catch /^Vim(write):/ :endtry -which only catches real write errors. So catch only what you'd like to ignore -intentionally. +これは書き込みエラーだけを捕捉する。つまり、あなたが意図的に無視したいエラーだ +けである。 -For a single command that does not cause execution of autocommands, you could -even suppress the conversion of errors to exceptions by the ":silent!" -command: > +自動コマンドを発生させないような1つのコマンドに対しては、":silent!"を使えば +エラーを例外に変換すること自体を抑制させることができる: > :silent! nunmap k -This works also when a try conditional is active. +これはtry条件文が有効なときも機能する。 -CATCHING INTERRUPTS *catch-interrupt* +割り込みを捕捉する *catch-interrupt* -When there are active try conditionals, an interrupt (CTRL-C) is converted to -the exception "Vim:Interrupt". You can catch it like every exception. The -script is not terminated, then. - Example: > +有効なtry条件文内では、割り込み(CTRL-C)は例外"Vim:Interrupt"に変換される。これ +を他の例外と同様に捕捉することができる。するとそのスクリプトは停止しない。 + 例: > :function! TASK1() : sleep 10 @@ -6709,38 +6681,38 @@ script is not terminated, then. : endif : catch /^Vim:Interrupt$/ : echo "\nCommand interrupted" - : " Caught the interrupt. Continue with next prompt. + : " 例外捕捉。次のプロンプトから継続する。 : endtry :endwhile -You can interrupt a task here by pressing CTRL-C; the script then asks for -a new command. If you press CTRL-C at the prompt, the script is terminated. +ここでCTRL-Cを押すとタスクに割り込むことができる。するとスクリプトは新しいコマ +ンドを要求する。プロンプトでCTRL-Cを押すとスクリプトが終了する。 -For testing what happens when CTRL-C would be pressed on a specific line in -your script, use the debug mode and execute the |>quit| or |>interrupt| -command on that line. See |debug-scripts|. +スクリプト中の特定の行でCTRL-Cが押されたとき何が起こるかをテストするにはデバッ +グモードを使い、その行の上で|>quit|や|>interrupt|コマンドを使う。 +|debug-scripts|を参照。 -CATCHING ALL *catch-all* +全てを捕捉する *catch-all* -The commands > +次のコマンドは > :catch /.*/ :catch // :catch -catch everything, error exceptions, interrupt exceptions and exceptions -explicitly thrown by the |:throw| command. This is useful at the top level of -a script in order to catch unexpected things. - Example: > +全てをエラー例外・割り込み例外・|:throw|コマンドにより明示的に投げられた例外の +捕捉する。これはスクリプトのトップレベルで予期しないことを捕捉するために役に立 +つ。 + 例: > :try : - : " do the hard work here + : " ここで難しいことをする : :catch /MyException/ : - : " handle known problem + : " 既知の問題を制御する : :catch /^Vim:Interrupt$/ : echo "Script interrupted" @@ -6748,13 +6720,13 @@ a script in order to catch unexpected things. : echo "Internal error (" . v:exception . ")" : echo " - occurred at " . v:throwpoint :endtry - :" end of script + :" スクリプトの終わり -Note: Catching all might catch more things than you want. Thus, you are -strongly encouraged to catch only for problems that you can really handle by -specifying a pattern argument to the ":catch". - Example: Catching all could make it nearly impossible to interrupt a script -by pressing CTRL-C: > +Note: 全てを捕捉すると、期待していた以上のものを捕捉してしまうかもしれない。そ +れゆえ、":catch"コマンドの引数に正規表現を指定することにより、自分が本当に制御 +できる問題だけを捕捉することが強く推奨されている。 +例: 全てを捕捉してしまうと、CTRL-Cを押してスクリプトを中断することがほぼ不可能 +になってしまうかも知れない: > :while 1 : try @@ -6764,9 +6736,9 @@ by pressing CTRL-C: > :endwhile -EXCEPTIONS AND AUTOCOMMANDS *except-autocmd* +例外と自動コマンド *except-autocmd* -Exceptions may be used during execution of autocommands. Example: > +自動コマンドの実行中に例外を使うこともできる。例: > :autocmd User x try :autocmd User x throw "Oops!" @@ -6782,14 +6754,14 @@ Exceptions may be used during execution of autocommands. Example: > : echo v:exception :endtry -This displays "Oops!" and "Arrgh!". +上の例を実行すると"Oops!"と"Arrgh!"が表示される。 *except-autocmd-Pre* -For some commands, autocommands get executed before the main action of the -command takes place. If an exception is thrown and not caught in the sequence -of autocommands, the sequence and the command that caused its execution are -abandoned and the exception is propagated to the caller of the command. - Example: > +いくつかのコマンドでは、それ自身が実行される前に自動コマンドが実行される。 +例外が発生し、それが一連の自動コマンドの中で捕捉されない場合、一連の自動コマン +ドと、その引き金となったコマンドは破棄され、例外がそのコマンドを呼んだ位置へ伝 +播する。 + 例: > :autocmd BufWritePre * throw "FAIL" :autocmd BufWritePre * echo "Should not be displayed" @@ -6800,19 +6772,18 @@ abandoned and the exception is propagated to the caller of the command. : echo "Caught:" v:exception "from" v:throwpoint :endtry -Here, the ":write" command does not write the file currently being edited (as -you can see by checking 'modified'), since the exception from the BufWritePre -autocommand abandons the ":write". The exception is then caught and the -script displays: > +ここで":write"コマンドは現在編集しているファイルを書き込まない('modified'を確 +認すればわかる)。BufWritePreの自動コマンドで発生した例外により、":write"が破棄 +されたためである。そしてその例外は捕捉され、次を表示する: > Caught: FAIL from BufWrite Auto commands for "*" < *except-autocmd-Post* -For some commands, autocommands get executed after the main action of the -command has taken place. If this main action fails and the command is inside -an active try conditional, the autocommands are skipped and an error exception -is thrown that can be caught by the caller of the command. - Example: > +いくつかのコマンドでは、それ自身が実行された後で自動コマンドが実行される。引き +金となったコマンド自身が失敗して、それが有効なtry条件文の内側にあった場合、自 +動コマンドはスキップされ、エラー例外が発生する。その例外は、コマンドを呼んだ位 +置で捕捉することができる。 + 例: > :autocmd BufWritePost * echo "File successfully written!" : @@ -6822,13 +6793,13 @@ is thrown that can be caught by the caller of the command. : echo v:exception :endtry -This just displays: > +この例は次を表示する: > Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e) -If you really need to execute the autocommands even when the main action -fails, trigger the event from the catch clause. - Example: > +引き金となったコマンドが失敗したときでさえも自動コマンドを実行したいという場合 +は、catch節の中でそのイベントを引き起こすことできる。 + 例: > :autocmd BufWritePre * set noreadonly :autocmd BufWritePost * set readonly @@ -6839,7 +6810,7 @@ fails, trigger the event from the catch clause. : doautocmd BufWritePost /i/m/p/o/s/s/i/b/l/e :endtry < -You can also use ":silent!": > +":silent!"を使うこともできる: > :let x = "ok" :let v:errmsg = "" @@ -6852,10 +6823,10 @@ You can also use ":silent!": > :endtry :echo x -This displays "after fail". +上の例は"after fail"を表示する。 -If the main action of the command does not fail, exceptions from the -autocommands will be catchable by the caller of the command: > +引き金となったコマンドが失敗しなかった場合、自動コマンドから発生した例外は、元 +のコマンドを呼んだ位置から捕捉できる: > :autocmd BufWritePost * throw ":-(" :autocmd BufWritePost * echo "Should not be displayed" @@ -6867,12 +6838,11 @@ autocommands will be catchable by the caller of the command: > :endtry < *except-autocmd-Cmd* -For some commands, the normal action can be replaced by a sequence of -autocommands. Exceptions from that sequence will be catchable by the caller -of the command. - Example: For the ":write" command, the caller cannot know whether the file -had actually been written when the exception occurred. You need to tell it in -some way. > +いくつかのコマンドでは、通常の処理を一連の自動コマンドで置き換えることができる。 +そのコマンド列で発生した例外は元のコマンドの呼び出し位置で捕捉できる。 + 例: ":write"コマンドでは、例外が発生したとき、呼び出し側は実際にファイルが +書き込まれたのかどうかを知ることができない。これを教える必要があるときは、なん +らかの手段を使わねばならない。 > :if !exists("cnt") : let cnt = 0 @@ -6902,18 +6872,18 @@ some way. > : echo "Error on writing" :endtry -When this script is sourced several times after making changes, it displays -first > +バッファに変更を行った後でこのスクリプトを数回sourceすると、1回目は次のように +表示される > File successfully written! -then > +2回目は > Error on writing (file contents not changed) -then > +3回目は > Error after writing -etc. +以下同様。 *except-autocmd-ill* -You cannot spread a try conditional over autocommands for different events. -The following code is ill-formed: > +異なるイベントに対する自動コマンドにわたってtry条件文を展開することはできない。 +以下のコードは不正である: > :autocmd BufWritePre * try : @@ -6924,21 +6894,20 @@ The following code is ill-formed: > :write -EXCEPTION HIERARCHIES AND PARAMETERIZED EXCEPTIONS *except-hier-param* +例外の階層と付加情報つき例外 *except-hier-param* -Some programming languages allow to use hierarchies of exception classes or to -pass additional information with the object of an exception class. You can do -similar things in Vim. - In order to throw an exception from a hierarchy, just throw the complete -class name with the components separated by a colon, for instance throw the -string "EXCEPT:MATHERR:OVERFLOW" for an overflow in a mathematical library. - When you want to pass additional information with your exception class, add -it in parentheses, for instance throw the string "EXCEPT:IO:WRITEERR(myfile)" -for an error when writing "myfile". - With the appropriate patterns in the ":catch" command, you can catch for -base classes or derived classes of your hierarchy. Additional information in -parentheses can be cut out from |v:exception| with the ":substitute" command. - Example: > +プログラミング言語の中には例外クラスを階層化したり、例外クラスのオブジェクトに +付加的な情報を渡すことができるものがある。これと似たことをVimでもできる。 +階層構造を持った例外を投げるには、各部分をコロンで区切った完全なクラス名を投げ +ればよい。例えば、数学ライブラリ内でオーバーフローが発生したときに +"EXCEPT:MATHERR:OVERFLOW"を投げる。 +例外クラスに付加的な情報を与えたいときは、それを括弧の中に書く。例えば、 +"myfile"の書き込み中にエラーが発生したときに文字列"EXCEPT:IO:WRITEERR(myfile)" +を投げる。 +":catch"コマンドにおいて適切な正規表現を使えば、階層の基底クラスや派生クラスを +捕捉できる。括弧の中の付加情報は、":substitute"コマンドを使って|v:exception|か +ら切り出すことができる。 +例: > :function! CheckRange(a, func) : if a:a < 0 @@ -6975,7 +6944,7 @@ parentheses can be cut out from |v:exception| with the ":substitute" command. : :try : - : " something with arithmetics and I/O + : " 計算やI/Oを行う : :catch /^EXCEPT:MATHERR:RANGE/ : let function = substitute(v:exception, '.*(\(\a\+\)).*', '\1', "") @@ -6997,55 +6966,47 @@ parentheses can be cut out from |v:exception| with the ":substitute" command. : :endtry -The exceptions raised by Vim itself (on error or when pressing CTRL-C) use -a flat hierarchy: they are all in the "Vim" class. You cannot throw yourself -exceptions with the "Vim" prefix; they are reserved for Vim. - Vim error exceptions are parameterized with the name of the command that -failed, if known. See |catch-errors|. +エラー時やCTRL-Cを押したときにVim自身によって投げられる例外は平坦な階層になっ +ている: つまりこれらは全て"Vim"クラスに入っている。ユーザは接頭辞"Vim"をつけた +例外を投げることはできない。これらはVim用に予約されている。 +Vimのエラー例外は失敗したコマンドの名前(わかっているならば)という付加情報がつ +いている。|catch-errors|を参照。 PECULIARITIES *except-compat* -The exception handling concept requires that the command sequence causing the -exception is aborted immediately and control is transferred to finally clauses -and/or a catch clause. - -In the Vim script language there are cases where scripts and functions -continue after an error: in functions without the "abort" flag or in a command -after ":silent!", control flow goes to the following line, and outside -functions, control flow goes to the line following the outermost ":endwhile" -or ":endif". On the other hand, errors should be catchable as exceptions -(thus, requiring the immediate abortion). - -This problem has been solved by converting errors to exceptions and using -immediate abortion (if not suppressed by ":silent!") only when a try -conditional is active. This is no restriction since an (error) exception can -be caught only from an active try conditional. If you want an immediate -termination without catching the error, just use a try conditional without -catch clause. (You can cause cleanup code being executed before termination -by specifying a finally clause.) - -When no try conditional is active, the usual abortion and continuation -behavior is used instead of immediate abortion. This ensures compatibility of -scripts written for Vim 6.1 and earlier. - -However, when sourcing an existing script that does not use exception handling -commands (or when calling one of its functions) from inside an active try -conditional of a new script, you might change the control flow of the existing -script on error. You get the immediate abortion on error and can catch the -error in the new script. If however the sourced script suppresses error -messages by using the ":silent!" command (checking for errors by testing -|v:errmsg| if appropriate), its execution path is not changed. The error is -not converted to an exception. (See |:silent|.) So the only remaining cause -where this happens is for scripts that don't care about errors and produce -error messages. You probably won't want to use such code from your new -scripts. +例外制御のコンセプトは、例外を引き起こしたコマンドは即座に異常終了し、制御が +finally節またはcatch節に移るという前提に基づいている。 + +Vimスクリプト言語では、エラーの後もスクリプトや関数が処理を続行する場合がある。 +"abort"フラグのない関数や、":silent!"をつけて実行されたコマンドでは、制御は次 +の行、そして関数の外へ移り、制御フローは最外側の":endwhile"や":endif"の次の行へ +移る。一方、エラーは例外と同様に捕捉できるべきである(つまり、即座に異常終了す +ることが要求される)。 + +この問題は、try条件文が有効なときだけエラーを例外に変換し、(":silent!"で抑制さ +れていない限り)即座に異常終了することで解決される。(エラー)例外は有効なtry条件 +文でのみ捕捉可能であるため、これはなんら制約とはならない。エラーを捕捉せずに即 +座に終了してほしいなら、単にcatch節を持たないtry条件文を使えばよい。(finally節 +を指定すれば、終了の前に後始末処理を行うことができる) + +有効なtry条件文がないとき、即座の異常終了でなく、通常の異常終了と継続が行われ +る。これによってVim6.1以前用に書かれたスクリプトの互換性を保証している。 + +しかし、有効なtry条件文の中から、例外処理コマンドを使っていない既存のスクリプ +トをsourceする(またはその関数の1つを呼ぶ)と、エラー発生時に既存のスクリプトの +制御フローが変わるかもしれない。エラー発生時に即座に異常終了し、新しい方のスク +リプト内でエラーを捕捉できる。しかしsourceされたスクリプトが":silent!"コマンド +でエラーメッセージを抑制していた場合(それが適切なスクリプトなら|v:errmsg|を見 +ることでエラーを確認している)、実行パスは変わらない。そのエラーは例外に変換さ +れない(|:silent|を参照)。これが起こる残りのただ1つの原因は、エラーに関心を払っ +ていなく、エラーメッセージを表示させるスクリプトである。おそらく新しいスクリプ +トからそのようなコードを使いたいとは思わないだろう。 *except-syntax-err* -Syntax errors in the exception handling commands are never caught by any of -the ":catch" commands of the try conditional they belong to. Its finally -clauses, however, is executed. - Example: > +例外処理コマンドにおける構文エラーは、それが族するtry条件文のどの":catch"コマ +ンドでも決して捕捉されない。しかしfinally節は実行される。 + 例: > :try : try @@ -7063,52 +7024,54 @@ clauses, however, is executed. : echo "outer finally" :endtry -This displays: > +上の例を実行すると次が表示される: > inner finally outer catch-all caught "Vim(catch):E54: Unmatched \(" outer finally -The original exception is discarded and an error exception is raised, instead. +元の例外は破棄され、代わりにエラー例外が投げられる。 + +訳注: throw 4711により例外が発生したが、その後の catch /\(/ に構文エラーがある +訳注: ためエラー例外が発生し、最初の例外は破棄された。 *except-single-line* -The ":try", ":catch", ":finally", and ":endtry" commands can be put on -a single line, but then syntax errors may make it difficult to recognize the -"catch" line, thus you better avoid this. - Example: > +コマンド":try", ":catch", ":finally", ":endtry"は1行の中に書くことができる。し +かし構文エラーがあったとき"catch"の行を認識するのが難しくなるので、避けた方が +よい。 + 例: > :try | unlet! foo # | catch | endtry -raises an error exception for the trailing characters after the ":unlet!" -argument, but does not see the ":catch" and ":endtry" commands, so that the -error exception is discarded and the "E488: Trailing characters" message gets -displayed. +この例は":unlet!"の後に余計な文字があるためエラー例外を発生させる。そして +":catch"と":endtry"が認識されないため、この例外は破棄され、"E488: Trailing +characters"のメッセージが表示される。 *except-several-errors* -When several errors appear in a single command, the first error message is -usually the most specific one and therefor converted to the error exception. - Example: > +1つのコマンドにより複数のエラーが発生した場合、普通は最初のエラーメッセージが +最も限定的であるため、それがエラー例外に変換される。 + 例: > echo novar -causes > +は次を発生させる: > E121: Undefined variable: novar E15: Invalid expression: novar -The value of the error exception inside try conditionals is: > +try条件文の中のエラー例外の値は次になる: > Vim(echo):E121: Undefined variable: novar < *except-syntax-error* -But when a syntax error is detected after a normal error in the same command, -the syntax error is used for the exception being thrown. - Example: > +しかし、同じコマンドにおいて通常のエラーの後に構文エラーが検出されたときは、構 +文エラーが例外として投げられる。 + 例: > unlet novar # -causes > +これは次を発生させる: > E108: No such variable: "novar" - E488: Trailing characters -The value of the error exception inside try conditionals is: > + E488: Trailing characters +try条件文の中のエラー例外の値は次になる: > Vim(unlet):E488: Trailing characters -This is done because the syntax error might change the execution path in a way -not intended by the user. Example: > +この理由は、構文エラーによってユーザが予期していない実行パスになってしまうかも +しれないためである。例: > try try | unlet novar # | catch | echo v:exception | endtry catch /.*/ echo "outer catch:" v:exception endtry -This displays "outer catch: Vim(unlet):E488: Trailing characters", and then -a "E600: Missing :endtry" error message is given, see |except-single-line|. +これは"outer catch: Vim(unlet):E488: Trailing characters"を表示し、次にエラー +メッセージ "E600: Missing :endtry"が表示される。|except-single-line|を参照。 ============================================================================== 9. 例 *eval-examples* From 36b0e4575132bf07235b9c8102af6f7244edb8e9 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 23 Jun 2007 16:49:05 +0000 Subject: [PATCH 098/783] fix: update to 7.0 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@98 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/ada.txt | 2 +- en/usr_24.txt | 53 ++++- ja/ada.jax | 2 +- ja/usr_01.jax | 103 +++++---- ja/usr_02.jax | 393 +++++++++++++++++----------------- ja/usr_03.jax | 223 ++++++++++--------- ja/usr_04.jax | 258 +++++++++++----------- ja/usr_05.jax | 133 ++++++------ ja/usr_06.jax | 35 +-- ja/usr_07.jax | 91 ++++---- ja/usr_23.jax | 2 +- ja/usr_24.jax | 579 +++++++++++++++++++++++++------------------------- 12 files changed, 949 insertions(+), 925 deletions(-) diff --git a/en/ada.txt b/en/ada.txt index 6054ac7e1..b6b459900 100644 --- a/en/ada.txt +++ b/en/ada.txt @@ -512,4 +512,4 @@ contains all of the above. ============================================================================== vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab -vim: filetype=help encoding=latin1 +vim: filetype=help diff --git a/en/usr_24.txt b/en/usr_24.txt index 2d5e7976f..4911745c0 100644 --- a/en/usr_24.txt +++ b/en/usr_24.txt @@ -1,4 +1,4 @@ -*usr_24.txt* For Vim version 6.3. Last change: 2003 Aug 18 +*usr_24.txt* For Vim version 7.1. Last change: 2006 Jul 23 VIM USER MANUAL - by Bram Moolenaar @@ -104,7 +104,7 @@ Vim do that use this command: > When you now type a text like "(example)", as soon as you type the ) Vim will briefly move the cursor to the matching (, keep it there for half a second, and move back to where you were typing. - In case there is not matching (, Vim will beep. Then you know that you + In case there is no matching (, Vim will beep. Then you know that you might have forgotten the ( somewhere, or typed a ) too many. The match will also be shown for [] and {} pairs. You don't have to wait with typing the next character, as soon as Vim sees it the cursor will move @@ -232,6 +232,39 @@ and go one directory level deeper, use CTRL-X CTRL-F again: The results depend on what is found in your file system, of course. The matches are sorted alphabetically. + +COMPLETING IN SOURCE CODE + +Source code files are well structured. That makes it possible to do +completion in an intelligent way. In Vim this is called Omni completion. In +some other editors it's called intellisense, but that is a trademark. + +The key to Omni completion is CTRL-X CTRL-O. Obviously the O stands for Omni +here, so that you can remember it easier. Let's use an example for editing C +source: + + { ~ + struct foo *p; ~ + p-> ~ + +The cursor is after "p->". Now type CTRL-X CTRL-O. Vim will offer you a list +of alternatives, which are the items that "struct foo" contains. That is +quite different from using CTRL-P, which would complete any word, while only +members of "struct foo" are valid here. + +For Omni completion to work you may need to do some setup. At least make sure +filetype plugins are enabled. Your vimrc file should contain a line like +this: > + filetype plugin on +Or: > + filetype plugin indent on + +For C code you need to create a tags file and set the 'tags' option. That is +explained |ft-c-omni|. For other filetypes you may need to do something +similar, look below |compl-omni-filetypes|. It only works for specific +filetypes. Check the value of the 'omnifunc' option to find out if it would +work. + ============================================================================== *24.4* Repeating an insert @@ -505,8 +538,8 @@ a 16 bit and a 32 bit number (e.g., for a Unicode character): > *24.9* Digraphs Some characters are not on the keyboard. For example, the copyright character -(�). To type these characters in Vim, you use digraphs, where two characters -represent one. To enter a �, for example, you press three keys: > +(©). To type these characters in Vim, you use digraphs, where two characters +represent one. To enter a ©, for example, you press three keys: > CTRL-K Co @@ -516,12 +549,12 @@ To find out what digraphs are available, use the following command: > Vim will display the digraph table. Here are three lines of it: - AC ~_ 159 NS | 160 !I � 161 Ct � 162 Pd � 163 Cu � 164 Ye � 165 ~ - BB � 166 SE � 167 ': � 168 Co � 169 -a � 170 << � 171 NO � 172 ~ - -- � 173 Rg � 174 'm � 175 DG � 176 +- � 177 2S � 178 3S � 179 ~ + AC ~_ 159 NS | 160 !I ¡ 161 Ct ¢ 162 Pd £ 163 Cu ¤ 164 Ye ¥ 165 ~ + BB ¦ 166 SE § 167 ': ¨ 168 Co © 169 -a ª 170 << « 171 NO ¬ 172 ~ + -- ­ 173 Rg ® 174 'm ¯ 175 DG ° 176 +- ± 177 2S ² 178 3S ³ 179 ~ This shows, for example, that the digraph you get by typing CTRL-K Pd is the -character (�). This is character number 163 (decimal). +character (£). This is character number 163 (decimal). Pd is short for Pound. Most digraphs are selected to give you a hint about the character they will produce. If you look through the list you will understand the logic. @@ -536,9 +569,9 @@ that combination. Thus CTRL-K dP also works. Since there is no digraph for You can define your own digraphs. Example: > - :digraph a" � + :digraph a" ä -This defines that CTRL-K a" inserts an � character. You can also specify the +This defines that CTRL-K a" inserts an ä character. You can also specify the character with a decimal number. This defines the same digraph: > :digraph a" 228 diff --git a/ja/ada.jax b/ja/ada.jax index f9117cb7d..9c6b616cd 100644 --- a/ja/ada.jax +++ b/ja/ada.jax @@ -505,4 +505,4 @@ GNU Adaプロジェクトが配布するVimは以上を全て含んでいる。 ============================================================================== vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab -vim: filetype=help encoding=latin1 +vim: filetype=help diff --git a/ja/usr_01.jax b/ja/usr_01.jax index 832027d1b..7c4ad0e10 100644 --- a/ja/usr_01.jax +++ b/ja/usr_01.jax @@ -37,19 +37,18 @@ Vim のマニュアルは二部構成になっています。 他のトピックへのジャンプ ------------------------ -二つのマニュアルにはハイパーリンクが張ってあります。それを使えば、編集手順の説 -明と、その説明で使われているコマンドやオプションの正しい定義とを素早く行き来で -きます。次のコマンドを使ってください。 +二つのマニュアルにはハイパーリンクが張ってあります。編集手順の説明とコマンドや +オプションの詳しい説明とを素早く行き来できます。次のコマンドを使ってください。 - CTRL-] : カーソル位置の項目にジャンプします。 - CTRL-O : ジャンプ先から戻ります。 + CTRL-] : カーソル位置の項目にジャンプする。 + CTRL-O : ジャンプ先から戻る。 リンクは |bars| のように縦棒で囲まれています。オプション名は 'number' のように -アポストロフィで、コマンドは ":write" のように引用符で囲まれています。これ以外 -の単語もリンクになっている場合があります。試しに、カーソルを CTRL-] の上に動か -して、CTRL-] を押してみましょう。 +アポストロフィで、コマンドは ":write" のように引用符で囲まれています。普通の単 +語もリンクとして使えます。試しに、カーソルを CTRL-] の上に動かして CTRL-] を押 +してみてください。 -他の項目は":help"コマンドで見つけることができます。|help.txt|をご覧ください。 +":help" コマンドでヘルプの目次を表示できます。|help.txt|をご覧ください。 ============================================================================== *01.2* Vim の準備 @@ -59,12 +58,12 @@ Vim のマニュアルは二部構成になっています。 い、GUI でメニューが出ないなどの)場合は、インストールの章 |usr_90.txt| を読ん でください。 *not-compatible* -このマニュアルでは「vi互換スイッチ('compatible')」がオフであることを前提にし -ている個所がたくさんあります。大部分のコマンドは関係ないのですが、重要なもの -(例: 複数回アンドゥできる機能)もあります。正しく設定されていることを確実にする -には、サンプル設定ファイルをコピーするのが簡単です。次のように、Vim からコマン -ドを実行すれば、どこにあるかを探す必要はありません。なお、コピーの方法はお使い -のシステムによって異なります。 +このマニュアルでは「vi互換スイッチ('compatible')」がオフになっていることを前提 +にしています。ほとんどのコマンドは互換スイッチの影響を受けませんが、例えば、複 +数回アンドゥなどの機能を使うときは設定が重要になります。正しく設定されているこ +とを確実にするには、サンプル設定ファイルをコピーするのが簡単です。Vim の中から +コピーを実行するなら、サンプル設定ファイルの場所を確認する必要はありません。コ +ピーの方法はシステムによって違います: Unix: > :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc @@ -73,40 +72,40 @@ MS-DOS, MS-Windows, OS/2: > Amiga: > :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc -既に vimrc ファイルがあるのなら、控えを取っておいた方がよいでしょう。 +vimrc ファイルが既にある場合はコピーする必要はないかもしれません。 Vim を起動すると、オプション 'compatible' はオフになっているはずです。次のコマ -ンドで現在の設定を確認できます。 > +ンドで現在の設定を確認できます: > :set compatible? -"nocompatible" と表示されれば大丈夫です。"compatible" と表示された場合は、問題 -があります。オプションがオンになっている理由を確認してください。もしかしたら、 -先程保存した設定ファイルが見つからなかったのかもしれません。次のコマンドで確認 -できます: > +"nocompatible" と表示されればオフになっています。"compatible" と表示された場合 +は正しく設定されていません。オプションがオンになっている理由を確認してくださ +い。もしかしたら、先程保存した設定ファイルが読み込まれていないのかもしれませ +ん。次のコマンドで確認してください: > :scriptnames -あなたの vimrc ファイルがこの一覧にないようなら、vimrc ファイルの名前と場所を -確認してください。一覧に入っている場合は、その一覧の他のファイルがオプション -'compatible' をオンに設定してしまっています。 +ファイルが一覧に無い場合は、vimrc ファイルの名前と場所を確認してください。一覧 +に入っている場合は、他のファイルによって 'compatible' がオンに設定されているは +ずです。 詳しくは|vimrc|と|compatble-default|をご覧ください。 Note: このマニュアルはVimを普通に使うための説明書です。実は evim(=easy vim) という別の Vim があります。これも Vim なのですが、メモ帳 のように - 「クリック&入力」方式であったり、常に挿入モードあったり、普通の Vim - とはかなり雰囲気が違います。このユーザーマニュアルでは evim には触れま - せん。(メモ帳形式だから)使えばわかるはずです。 - 詳しいことは|evim-keys|をご覧ください。 + 「クリック & 入力」方式であったり、常に挿入モードあったり、普通の Vim + とはかなり雰囲気が違います。このユーザーマニュアルでは evim について説 + 明していません。操作方法は使えばわかるはずです。 + 詳しいことは |evim-keys| をご覧ください。 ============================================================================== *01.3* チュートリアル *tutor* *vimtutor* -テキストを読むだけじゃなく(退屈だし!)初めて Vim を使う人のために、vimtutor -というのを用意しています。これは 30 分の演習コースで、最低限の Vim の使い方を -繰作しながら覚えられます。 +テキストを読むだけではなく (退屈だし!) チュートリアルを使って Vim の初歩を学ぶ +ことができます。vimtutor は 30 分の演習コースです。実際に操作しながら Vim の最 +低限の操作方法を習得できます。 Unix では、Vim が適切にインストールしてあれば、シェルから起動できます: > @@ -115,8 +114,8 @@ Unix では、Vim が適切にインストールしてあれば、シェルか MS-Windows では、スタートメニューの Program/Vim から起動できます。あるいは、 $VIMRUNTIME ディレクトリにある vimtutor.bat を実行してください。 -演習ファイルのコピーを使って演習するので、オリジナルの演習ファイルを壊してしま -う心配はありません。 +演習ファイルのコピーが作られるので、テキストを編集してもオリジナルの演習ファイ +ルを壊してしまう心配はありません。 チュートリアルはいくつかの言語に翻訳されています。翻訳されたチュートリアルを使 うには、二文字の言語コードを指定します。日本語の場合は次のようにします: > @@ -131,24 +130,24 @@ OpenVMS では、VMS プロンプトから次のようにして起動できま Unix 以外のシステムでは、多少の作業が必要です。 -1. 演習用ファイルをコピーします。これは Vim でできます(どこにあるかを知ってい - ますから) +1. 演習用ファイルをコピーします。これは Vim を使ってコピーできます(Vim はファ + イルの場所を知っている): > vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' < - "TUTORCOPY" というファイルがカレントディレクトリに作成されます。翻訳された - 演習ファイルを使うには、二文字の言語コードを指定します。日本語の場合は次の - ようにします: > +"TUTORCOPY" というファイルがカレントディレクトリに作成されます。翻訳された演習 +ファイルを使うには、二文字の言語コードを指定します。日本語の場合は次のようにし +ます: > vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.ja' -c 'w! TUTORCOPY' -c 'q' < -2. コピーしたファイルを Vim で開きます。 +2. コピーしたファイルを Vim で開きます: > vim -u NONE -c "set nocp" TUTORCOPY < - オマケの引数は Vim をイイ感じで起動してくれます。 +指定している引数によって Vim がイイ感じで起動されます。 -3. 練習が終わったら、コピーしたファイルを削除します。 +3. 練習が終わったら、コピーしたファイルを削除します: > del TUTORCOPY < @@ -157,27 +156,27 @@ Unix 以外のシステムでは、多少の作業が必要です。 Vim のユーザマニュアルとリファレンスマニュアルの著作権は以下の通りです。 Copyright (c) 1988-2003 by Bram Moolenaar -これは Open Publication License, v1.0 以降での項目と条件に従って配布される -ものです。ライセンスの最新バージョンは以下で入手できます。 +Open Publication License, v1.0 以降の条件に従って配布することができます。ライ +センスの最新バージョンは次の場所から入手できます: http://www.opencontent.org/opl.shtml -マニュアルに貢献する人々は上記の著作権通達に同意しなければなりません。 +マニュアルに貢献する人は上記の著作権通達に同意しなければなりません。 *frombook* -ユーザマニュアルの一部は以下の本から抽出しています。 +ユーザマニュアルの一部は "Vi IMproved - VIM" から取られたものです。 "Vi IMproved - Vim" Steve Oualline著 (出版:New Riders Publishing, ISBN: 0735710015) -この本には Open Publication License が適用されています。必要な部分のみ引用し、 -変更も加えています。(図を削除したり、vim6.0用に書き直したり、間違いを訂正した -りしています) |frombook|タグの漏れがあったとしても、この本からの引用があること -を否定するものではありません。 +この本には Open Publication License が適用されています。必要な部分のみコピー +し、変更を加えています (図を削除したり、Vim 6.0 用に書き直したり、間違いを訂正 +したり)。|frombook|タグが省略されていたとしても、この本からコピーしたことを否 +定するものではありません。 この本を OPL で出版してくださった Steve Oualline 氏と New Riders に深く感謝し -ます。ユーザマニュアルの執筆にあたり、大いに助けとなりました。文章の提供という -だけではなく、スタイルや文体も参考にさせていただきました。 +ます。ユーザマニュアルの執筆においてとても助けられました。文章を提供してもらっ +ただけでなく、スタイルや文体も参考にさせていただきました。 このマニュアルの販売で収益を上げた方は、利益の一部を寄付してくださるようお願い -します。ウガンダのAIDS犠牲者を助けてあげてください。詳しくは|iccf|をご覧くださ +します。ウガンダのエイズ患者を助けてあげてください。詳しくは|iccf|をご覧くださ い。 ============================================================================== diff --git a/ja/usr_02.jax b/ja/usr_02.jax index dccdfe3e0..ad77f5a05 100644 --- a/ja/usr_02.jax +++ b/ja/usr_02.jax @@ -11,16 +11,15 @@ TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> 初めての Vim -この章では、Vim を使ってファイルを編集するのにとりあえずこと足りるだけの -情報を提供します。上手でも速くもありませんが、とにかく編集はできます。 -ここで出てくるコマンドには多少の時間を取って練習してください。以降に出てくる -コマンドの基礎となるものですから。 +この章では、Vim を使ってファイルを編集するための最低限のことを説明します。操作 +が下手でも遅くても、とにかく編集できるようになりましょう。この章に出てくるコマ +ンドはこれからの基礎になるものなので、少し時間をとって練習してください。 |02.1| Vim の起動方法 |02.2| 文字の挿入 |02.3| カーソル移動 |02.4| 文字の削除 -|02.5| アンドゥ(取り消し)とリドゥ(やり直し) +|02.5| undo (取り消し) と redo (やり直し) |02.6| 他の編集コマンド |02.7| Vim の終了 |02.8| ヘルプの引き方 @@ -36,10 +35,10 @@ Vim を起動するには次のコマンドを入力します。 > gvim file.txt -UNIXでは、コマンドプロンプトで入力します。Microsoft Windows環境では、MS-DOS +UNIXならコマンドプロンプトから実行できます。Microsoft Windows環境では、MS-DOS プロンプトを開いて、入力してください。 -いずれの場合でも、Vim は file.txt という名前のファイルの編集を開始します。 -画面には次のように表示されていることでしょう。 +Vim が起動して file.txt という名前のファイルの編集が開始されます。これは新しい +ファイルなので、ウィンドウは空になっています。次のような画面が表示されます: +---------------------------------------+ |# | @@ -49,46 +48,46 @@ UNIXでは、コマンドプロンプトで入力します。Microsoft Windows |~ | |"file.txt" [New file] | +---------------------------------------+ - ("#" はカーソル位置を示します) + ("#" はカーソルの位置です) -ティルド(~)の行は、ファイルにその行がないことを示しています。Vimは、ファイルの -末尾より後ろを表示する場合に、ティルドを表示します。画面の下の方に、編集中の -ファイル名は"file.txt"で、新しいファイルであることが表示されています。この行を -メッセージ情報行と呼びます。メッセージ情報行の表示は一時的で、他のメッセージが -表示されると消えてしまいます。 +ティルド(~)の行は、ファイルにその行がないことを示しています。ファイルの +末尾より後ろを表示する場合にティルドが表示されます。画面の下の方に、編集中の +ファイル名は "file.txt" で、それが新しいファイルであることが表示されています。 +このメッセージの表示は一時的なもので、他のメッセージが表示されると消えてしまい +ます。 VIM コマンド ------------ -gvimは編集用に新たなウィンドウを生成します。次のコマンドを用いた場合は、 > +gvim は編集用のウィンドウを新しく作ります。次のコマンドを使った場合は: > vim file.txt -コマンドウィンドウの中で編集を行えます。すなわち、xtermの中で実行すれば、Vimは -xtermウィンドウ内で動くのです。Microsoft Windows上でMS-DOSプロンプト画面を使っ -ていれば、エディタはそのウィンドウの中で動きます。どちらのバージョンでも同じよ -うに表示されますが、gvimにはメニューバーなどの追加機能があります。詳しくは後で -述べます。 +コマンドウィンドウの中で編集できます。つまり、xterm の中で実行すれば、Vim は +xterm ウィンドウを使います。Microsoft Windows の MS-DOS プロンプトを使っている +場合も、そのウィンドウの中で編集できます。gvim でも vim でもテキストは同じよう +に表示されますが、gvimにはメニューバーなどの追加機能があります。詳しくは後で述 +べます。 ============================================================================== *02.2* 文字の挿入 -Vimはモード型エディタです。モードによって挙動が変わります。一番よく使うモード -は、「ノーマルモード」と「挿入モード」です。ノーマルモードでは、入力した文字は +Vim はモード型エディタです。モードによって挙動が変わります。一番よく使うモード +は「ノーマルモード」と「挿入モード」です。ノーマルモードでは、入力した文字は コマンドとして扱われます。挿入モードでは、入力した文字はそのまま挿入されます。 -Vimを起動した直後はノーマルモードになっています。挿入モードに入るには、"i"コマ -ンド(iはInsertの意味です)を入力します。これで、文章を入力できるようになりま -す。入力した文章はファイルに挿入されます。入力を間違っても気にしないようにしま -しょう。後で修正する方法も説明します。次のように、プログラマーのリメリック(詩 -の一種)を入力したとしましょう。 -> +Vim を起動した直後はノーマルモードになっています。挿入モードに入るには、"i" コ +マンドを入力します (i は Insert の意)。これで、文章を入力できるようになります。 +入力した文章はファイルに挿入されます。入力を間違えても心配する必要はありませ +ん。後から修正できます。プログラマーのリメリック(詩の一種)を入力して見ましょ +う。次のように入力します: > + iA very intelligent turtle Found programming UNIX a hurdle -"turtle"を入力した後に<Enter>キーを押すと改行されます。最後に<Esc>キーを押す -と、挿入モードが終了し、ノーマルモードに戻ります。このとき、Vimウィンドウには -次のような2行が表示されています。 +"turtle" を入力した後で <Enter> キーを押して改行します。最後に <Esc> キーを押 +して挿入モードを終了し、ノーマルモードに戻ります。このとき、Vim ウィンドウには +次のような二行が表示されています。 +---------------------------------------+ |A very intelligent turtle | @@ -99,18 +98,18 @@ Vimを起動した直後はノーマルモードになっています。挿入 +---------------------------------------+ -今は何モード? --------------- +今は何モード? +------------- 現在のモードを確認できるようにするには、次のコマンドを入力してください。 > :set showmode -":"(コロン記号)を入力すると、カーソルがウィンドウの最下段に移動します。ここ -はコロンコマンド(最初が":"で始まるコマンド)を入力する場所です。コマンドの最 -後に<Enter>キーを入力します(コロンで始まるコマンドは全てこの方法を使います) -さて、ここで"i"コマンドを入力すると、ウィンドウの最下段に"― 挿入 ―"という -表示が現れます。これは、あなたが挿入モードにいることを示しています。 +":" (コロン記号) を入力すると、カーソルがウィンドウの最下段に移動します。ここ +はコロンコマンド (":"で始まるコマンド) を入力する場所です。<Enter> キーを押す +とコマンドが実行されます (コロンで始まるコマンドは全てこの方法を使います)。 +さて、"i" コマンドを入力すると、ウィンドウの最下段に "― 挿入 ―" という表示が +現れます。これは、あなたが挿入モードにいることを示しています。 +---------------------------------------+ @@ -121,56 +120,52 @@ Vimを起動した直後はノーマルモードになっています。挿入 |― 挿入 ― | +---------------------------------------+ -<Esc>を押すとノーマルモードに戻り、最下段は空白となります。 +<Esc> を押すとノーマルモードに戻り、最下段は空白になります。 トラブルを避ける ---------------- -Vimを使い始めたときにはモードを混同してしまいがちです。これは今のモードが解ら -なくなったり、間違ってモード変更を伴うコマンドを入力した時に起こります。どの -モードにいる場合でも<Esc>を押すとノーマルモードに戻ります。時には<Esc>を2回押 -さないといけない場合もあります。ノーマルモードで<Esc>を押すと、警告音が鳴りま -す。つまりVimが警告音を出したらノーマルモードだ、ということです。 +Vim を使い始めたときはモードを混同しがちです。現在のモードを忘れてしまったり、 +知らないうちに間違ってモードを変更してしまったりすることがあります。どのモード +にいる場合でも <Esc> を押せばノーマルモードに戻れます。<Esc> を二回押さなけれ +ばならないときもあります。ノーマルモードで <Esc> を押すとビープ音が鳴るので、 +その場合は既にノーマルモードにいるということです。 ============================================================================== *02.3* カーソル移動 -ノーマルモードに戻ると、次のキーを使ってカーソルを動かすことができます。 +ノーマルモードでは、次のキーを使って移動できます: h 左 *hjkl* j 下 k 上 l 右 -最初は、まるでランダムに選んだコマンドに見えるかもしれませんね。"L"キーで -「右(Right)」に移動するなんて聞いたことないですよね。でもこれには実に合理的 -な理由があります。エディタで一番よく使うコマンドはカーソル移動コマンドです。 -viでは右手のホームポジションの段にそのコマンドを集中させたのです。つまり、 -このコマンドは、あなた(特に10本の指を使ってタイプする人)が一番速く打てる場所 -に配置してあるのです。 +最初はでたらめなコマンドに思えるかもしれません。"l" キーで 右 (right) に移動す +るなんておかしいですね。しかしこれには合理的な理由があります。エディタで最もよ +く使うのはカーソル移動であり、これらのキーは右手のホームポジションにあるので +す。つまり、(特に 10 本の指を使ってタイプする人が) 最も速く打てる場所にコマン +ドが配置されています。 Note: - カーソル移動は矢印キーでも行えます。でもそれだと、編集速度は大きく落ち - ます。これは矢印キーを押すのにメインキー(アルファベットのある部分)か - ら手を動かさなければならないためです。 - 1時間に数百回もそれをすることを考えると、合計時間はバカにならない量と - なるでしょう。 - また、世の中には矢印キーのないキーボードや変な場所に配置してあるキー - ボードもあります。そんな場合でもhjklの使い方を知っていれば役に立つこと - でしょう。 - -このコマンドは、"h"は左で、"l"は右、"j"は下を指している、とでも覚えておきま -しょう。図で示すと次の通りです。 > + カーソルは矢印キーでも移動できます。しかし、ホームポジションから手を離 + さなければならないので、編集速度は落ちてしまいます。一時間に数百回も移 + 動することを考えると、結構な時間が消費されることになります。 + また、矢印キーが無いキーボードや、矢印キーの配置場所がおかしいキーボー + ドもあります。hjkl の使い方を知っていれば、そのような場合でも安心です。 + +コマンドを覚えるには、"h" は左にあって、"l" は右にあって、"j" は下を指してい +る、とでも覚えてください。図で示します: > k h l j -移動コマンドを覚える一番の方法は使ってみることです。"i"コマンドを使ってさら -に数行の文を打ちましょう。その上で、hjkl キーを使って動き回り、いろんな場所 -に文字を挿入してみましょう。ノーマルモードに戻るのには<Esc>キーを押すのを忘れ -ずに。|vimtutor| を使うのも慣れるにはいい方法でしょう。 +移動コマンドを覚える一番の方法は使ってみることです。"i" コマンドを使って適当な +テキストを入力し、hjkl キーを使って動き回り、いろんな場所に文字を挿入してみて +ください。<Esc> キーを押してノーマルモードに戻るのを忘れずに。|vimtutor| を使っ +て練習してみるのもいいでしょう。 日本のユーザーへ、Hiroshi Iwataniさんは次のような提案をしています。 @@ -185,10 +180,10 @@ viでは右手のホームポジションの段にそのコマンドを集中さ ============================================================================== *02.4* 文字の削除 -文字を削除するにはカーソルをその上に置いて"x"を押します。(これはずっと昔に -タイプライタで消したい文字の上に"xxxxxx"などとやっていたのと同じです)例えば -カーソルを1行目に動かして、xxxxxxx(xを7つ)打ち、"A very "を消しましょう。 -その結果は次のようになります。 +文字を削除したい場合は、文字の上にカーソルを移動して "x" を押します。(これはタ +イプライタを使っていた古い時代に、消したい文字の上に "xxxxxx" と印字していたの +と同じ感覚です)。例えば、例文の一行目にカーソルを移動して、xxxxxxx (xを7つ) 打 +ち、"A very " を消してみましょう。その結果は次のようになります: +---------------------------------------+ |intelligent turtle | @@ -198,12 +193,12 @@ viでは右手のホームポジションの段にそのコマンドを集中さ | | +---------------------------------------+ -さて、ここに新たに文を挿入しましょう。例えば次を入力します。 > +さて、新しいテキストを挿入してみましょう。例えば次のように入力します: > iA young <Esc> -これは挿入を"i"コマンドで始め、"A young "を入力します。次に(最後の<Esc>キー -で)挿入モードを抜けます。結果は次のようになります。 +"i" で挿入を開始し、"A young " を入力しています。最後に <Esc> キーを押して挿入 +モードを抜けます。結果は次のようになります。 +---------------------------------------+ |A young intelligent turtle | @@ -217,8 +212,8 @@ viでは右手のホームポジションの段にそのコマンドを集中さ 行削除 ------ -行全体を消すには"dd"コマンドを使います。以降の行は空白行を埋めるように -上に繰り上げられます。 +行全体を消すには "dd" コマンドを使います。行が消された場所は、それ以降の行を上 +げることで詰められます。 +---------------------------------------+ |Found programming UNIX a hurdle | @@ -232,42 +227,41 @@ viでは右手のホームポジションの段にそのコマンドを集中さ 改行を取る ---------- -Vimでは複数の行を1行にまとめられます。これは行と行の間にある改行を削除する -ことに他なりません。"J"コマンドでそれを行えます。 -例えば、次の2行があるとします。 +Vim では複数の行を一行にまとめることができます。これは行と行の間にある改行文字 +を削除するのと同じです。それには "J" コマンドを使います。 +例えば、次の二行があるとします: A young intelligent ~ turtle ~ -最初の行にカーソルを動かし"J"を押すと次のようになります。 +最初の行にカーソルを動かし "J" を押すと次のようになります: A young intelligent turtle ~ ============================================================================== -*02.5* アンドゥ(取り消し)とリドゥ(やり直し) +*02.5* undo (取り消し) と redo (やり直し) -間違って削除しすぎたとしましょう。確かに、打ち直せばいいのですが、もっと簡単 -な方法があります。"u"コマンドで直前の編集結果をアンドゥ(取り消し)できます。 -実例で見てみましょう。"dd"コマンドで1行目を削除した後で、"u"コマンドを実行 -します。すると削除した行が復元されます。 -もう一つの例。カーソルを1行目の A まで動かします。 +間違ってテキストを削除してしまった場合、同じ内容を入力し直すこともできますが、 +もっと簡単な方法があります。"u" コマンドで直前の編集結果を undo (取り消し) +できます。例えば、"dd" コマンドで削除した行を、"u" コマンドで元に戻せます。 +もう一つ例を示します。カーソルを一行目の A に移動して: A young intelligent turtle ~ -xxxxxxx と入力し、"A young"を削除します。結果は次のようになります。 +xxxxxxx とタイプし、"A young" を削除します。結果は次のようになります: intelligent turtle ~ -ここで、"u"を押すと、直前の削除が取り消されます。直前の削除では"g"を削除して -いました。それが取り消されて"g"が復活します。 +"u" で直前の削除が取り消されます。最後に削除されたのは g なので、その文字が復 +活します。 g intelligent turtle ~ -もう一度"u"を実行すると、最後の1つ前の削除("n")が取り消されます。 +もう一度 "u" を実行すると、さらに一つ前に削除された文字が復活します: ng intelligent turtle ~ -次の"u"コマンドは "u" の削除を、と同様に取り消します。 +次の "u" コマンドでは u が復活し、次々と元に戻すことができます: ung intelligent turtle ~ oung intelligent turtle ~ @@ -276,26 +270,26 @@ xxxxxxx と入力し、"A young"を削除します。結果は次のようにな A young intelligent turtle ~ Note: - "u"を2回押した時に、最初の状態に戻ってしまったのであれば、きっとvi - 互換モードで動いています。|not-compatible|を見て、修正しておきま - しょう。 - このマニュアルでは「Vim方式」でやることを前提にしています。もし古き - 良き時代のvi方式を望むのであれば、細かな違いが各所にありますので、 - 気をつけてください。 + "u" を二回押したときに、最初の状態に戻ってしまった場合は、Vi 互換モー + ドが設定されています。|not-compatible| を参照して正しく設定してくださ + い。 + このマニュアルでは「Vim方式」の使い方を前提にしています。古き良き時代 + の Vi 方式を使いたい場合は、細かい部分でマニュアルの説明と違うことがあ + るので注意してください。 -リドゥ(やり直し) ----------------- +redo (やり直し) +--------------- -もし、アンドゥをやり過ぎたら、CTRL-R(リドゥ)を押して直前のコマンドを反転させ -ることができます。言い換えると、アンドゥを取り消すのです。実際に2回CTRL-Rを -押してみましょう。"A "の2文字が消えます。 +undo し過ぎてしまった場合は、CTRL-R (redo) を押すことで、直前のコマンドを +取り消せます。つまり、undo を undo します。実際に二回 CTRL-R を押してみましょ +う。"A "の二文字が消えます。 young intelligent turtle ~ -アンドゥコマンドには特別なバージョン、"U"(行アンドゥ)コマンドがあります。行ア -ンドゥコマンドは直前に編集した行の全変更を取り消します。このコマンドを2回実行 -すると、1回目の"U"が取り消されます。 +undo コマンドには特別なバージョン、"U" (行 undo) コマンドがあります。行 undo +コマンドは直前に編集した行のすべての変更を取り消します。このコマンドは、二回実 +行すると、直前の "U" が取り消されます。 A very intelligent turtle ~ xxxx "very"を削除 @@ -304,204 +298,199 @@ xxxxxxx と入力し、"A young"を削除します。結果は次のようにな xxxxxx "turtle"を削除 A intelligent ~ - "U"コマンドで行全体をアンドゥ + "U" で行全体を元に戻す A very intelligent turtle ~ - "U"コマンドを"u"でアンドゥ + "u" で "U" を undo A intelligent ~ -"u"がアンドゥで、 CTRL-R がリドゥであるのに対し、"U"コマンドはそれ自身が変更 -コマンドです。ちょっとわかりにくいかも知れませんが、心配はいりません。"u"と -CTRL-Rがあればどんな場合でも大丈夫だ、ってことです。詳細は |32.1| にあります。 +"u" が undo で、 CTRL-R が redo であるのに対し、"U" コマンドはそれ自身が変更コ +マンドです。ちょっとわかりにくいかも知れませんが心配はいりません。"u" と +CTRL-R があればどんな場合でも大丈夫だ、ってことです。詳細は |32.1| にあります。 ============================================================================== *02.6* 他の編集コマンド -Vimには文章を編集するための数多くのコマンドがあります。下記、または|Q_in|を参 +Vim には文章を編集するための数多くのコマンドがあります。下記、または|Q_in|を参 照してください。ここでは頻繁に使うものだけを述べます。 -APPENDING(追記) --------------- +追記 (APPENDING) +---------------- -"i"コマンドはカーソルの前に文字列を挿入しますが、**行末**に何か追加したい時に -はどうしましょう?カーソルの後ろに文を挿入しないといけません。"a" (append) コ -マンドでそれを行います。 +"i" コマンドはカーソルの前に文字列を挿入しますが、行末に文字を追加したいときは +はどうすればいいでしょうか? それにはカーソルの後ろに文を挿入できないといけませ +ん。"a" (append) コマンドで追記できます。 例えば、次の行を and that's not saying much for the turtle. ~ -このように変更したいとします。 +このように変更したいとします and that's not saying much for the turtle!!! ~ -まずカーソルを行末のピリオドの上に動かし、"x"でピリオドを消します。この時 -カーソルは行末の turtle の "e" の上にあります。ここで、次のコマンドを入力 -します。 > - +まずカーソルを行末のピリオドの上に動かし、"x" でピリオドを消します。この時カー +ソルは行末の turtle の "e" の上にあります。ここで、次のコマンドを入力します。 +> a!!!<Esc> -これでturtleの後ろに3つの"!"記号が追加されます。 +これで turtle の後ろに三つの "!" 記号が追加されます: and that's not saying much for the turtle!!! ~ -新しい行を空ける ----------------- +新しい行を開く +-------------- -"o"コマンドは、カーソルの下に新しい行を作り、Vimを挿入モードにします。 -続けて、新たな行に文章を入力できます。 -以下のような二行があり、カーソルが一行目のどこかにあるとします。 +"o" コマンドを使うと、カーソルの下に新しい空の行が作成され、挿入モードに入りま +す。そのため、そのまま新しい行の文章を入力できます。 +以下のような二行があり、カーソルが一行目のどこかにあるとします: A very intelligent turtle ~ Found programming UNIX a hurdle ~ -"o"コマンドを実行し、テキストを入力すると: > +"o" コマンドを実行し、テキストを入力すると: > oThat liked using Vim<Esc> -結果は次の通りです。 +次のような結果になります: A very intelligent turtle ~ That liked using Vim ~ Found programming UNIX a hurdle ~ -"O"コマンド(大文字)もあり、こちらはカーソルの上に空行を作ります。 +"O" コマンド (大文字) を使うと、カーソルの上に空行を作成できます。 -カウンタの利用 +カウンタを使う -------------- -9行上に移動するには、"kkkkkkkkk"と入力することもできますが、"9k"でもOKで -す。実はVimでは多くのコマンドの前に数値を指定できます。上にあげた例で、3つの -"!"を追加するのに"a!!!<Esc>"と入力しましたが、"3a!<Esc>"でも同じ結果になりま -す。最初の"3"は以降のコマンドを3回実行することを示します。3文字削除するので -あれば、"3x"というコマンドでできます。このような回数指定のことをカウンタと呼び -ます。カウンタは常に対象となるコマンドより前に指定します。 +例えば、9 行上に移動したい場合、"kkkkkkkkk" とタイプすることもできますが、"9k" +コマンドでも同様に移動できます。実はほとんどのコマンドには回数を指定できます。 +例えば上記の例では、"a!!!<Esc>" で三つの "!" 記号を追加しましたが、これは +"3a!<Esc>" と入力することもできます。最初の 3 はコマンドを三回実行することを指 +定しています。同様に、三文字削除したい場合は "3x" を使います。カウントは必ず対 +象となるコマンドの前に指定してください。 ============================================================================== *02.7* Vim の終了 -Vimを終了するには、"ZZ"コマンドを使います。このコマンドは、ファイルを保存し -て、終了します。 +Vim を終了するには "ZZ"コマンドを使います。ファイルが保存され、Vim が終了しま +す。 Note: - 他の多くのエディタと違い、Vimには自動的にバックアップを作成する機能 - はありません。"ZZ"と打つと、変更点は上書きされるため、以前のものを - 取り戻す方法はありません。もちろん設定さえ行えば、バックアップを生成 - するようにできます。|07.4|を見てください。 + 他の多くのエディタと違い、Vim は自動的にバックアップを作成しません。 + "ZZ" と打つとファイルが上書きされるため、元に戻す方法はありません。バッ + クアップファイルを作成するように設定することもできます。|07.4|を参照し + てください。 変更を破棄する -------------- -何らかの変更を行った後で、突然もっと良い方法を思いつくこともあるでしょう。 -大丈夫です。Vimには「全部投げ捨てて終了する」コマンドがあります。 > +ファイルを編集した後で、元の方が良かったと気づくことがあると思います。心配はい +りません。「全部投げ捨てて終了する」コマンドがあります。 > :q! -コマンドを確定するには<Enter>キーが必要ですよ。お忘れなく。 +コマンドを確定するには <Enter> キーが必要ですよ。お忘れなく。 -詳しい内容に興味がある方に説明しておくと、このコマンドは3部構成になっていて -最初の":"はコマンドラインモードに入るため、次の"q"はエディタを終了するコマン -ド、最後の"!"は上書きのコマンドオプションです。 -上書きコマンドオプションはVimに変更内容を投げ捨てさせるために必要です。これ -を":q"とすると、Vimは次のようなエラーを出して、終了を拒否します。 +詳細を説明すると、このコマンドは三つの部分から成っています。":" はコマンドライ +ンモードの開始、"q" コマンドはエディタを終了するコマンド、"!" はオーバーライド +修飾詞です。 +変更を破棄するにはオーバーライド修飾詞が必要です。単に ":q" を実行した場合、エ +ラーメッセージが表示され、コマンドは実行されません: - E37: No write since last change (use ! to override) ~ E37: 最後の変更が保存されていません (! で変更を破棄) ~ -上書きを指定することで、Vimに「バカげたことをしてるように見えるのはわかって -る。でもボクは大人だし、本当にそうしたいんだ」と告げているわけです。 +オーバーライドを指定することで、「バカげたことをしてるように見えるのはわかって +る。でもボクは大人だし、本当にそうしたいんだ」と Vim に告げているわけです。 -もし、Vimでの編集を続けたいのであれば、":e!"コマンドで元のファイルを読み込 -み直してくれます。 +Vim を終了したくない場合は、":e!" コマンドでオリジナルのファイルを再読み込みで +きます。 ============================================================================== *02.8* ヘルプの引き方 -知りたいことは何でもVimのヘルプから見付けられるでしょう。 -どんどん調べてください! -次のコマンドでヘルプの総合案内が表示されます。 > +知りたいことは何でも Vim のヘルプで調べることができます。どんどん調べてくださ +い! +次のコマンドでヘルプの総合案内が表示されます: > :help -ファンクションキー<F1>を使ってもいいです。キーボードに<Help>キーがあれば、 -それも使えるかもしれません。 -":help" に調べたい項目を指定しなかった場合は、総合案内がヘルプウィンドウに表示 -されます。Vimの作者はとっても賢い(いや、とっても怠け者かも)ので、ヘルプウィ -ンドウには普通の編集ウィンドウをそのまま使っています。そのおかげでヘルプの情報 -を探す時にもVimの全コマンドが使えます。つまり、h , j , k , l で 上下左右に動け -るのです。 -ヘルプウィンドウを閉じるには、エディタを終了する時と同じコマンド、"ZZ"が使えま -す。この場合は、ヘルプウィンドウを閉じるだけで、Vimは終了しません。 - -ヘルプを見ていると、縦棒"|"で囲まれた文字に気づくでしょう。(例:|help|) -これはハイパーリンクです。この場所にカーソルを置いて、CTRL-](タグジャンプ) -を押します。するとそのタイトルのヘルプにジャンプします。(理由は省きますが、 -Vimではハイパーリンクのことをタグと呼びます) CTRL-] はカーソル下の単語を -タグとみなして、その場所にジャンプします。 -ジャンプを繰り返した後で、戻りたくなった場合は CTRL-T(タグをポップする)を -押せば直前の場所に戻ります。この場合はCTRL-O(古い場所へのジャンプ)もうまく -動くでしょう。 - -ヘルプ画面のトップには*help.txt*といった表記があります。"*"で囲まれた名前はヘ -ルプシステム側でタグ(ハイパーリンクの飛び先)を定義する時に使っています。タグ -の使い方の詳細は、|29.1|をご覧ください。 - -指定した項目のヘルプを見るには次のコマンドを使います。 > +ヘルプは <F1> ファンクションキーでも表示できます。キーボードに <Help> キーがあ +る場合はそれも使えます。 +":help" に引数を指定しなかった場合は総合案内が表示されます。Vim の作者はとても +賢い (いや、すごい怠け者かも) ので、ヘルプウィンドウには普通の編集ウィンドウが +使われています。ヘルプウィンドの中ではすべてのノーマルモードコマンドが使えま +す。したがって、h, j, k, l で 上下左右に移動できます。 +ヘルプウィンドウは、エディタを終了するのと同じコマンド ("ZZ") で閉じることがで +きます。この場合は、ヘルプウィンドウが閉じるだけで、Vim は終了しません。 + +ヘルプを読むと、縦棒 "|" で囲まれた文字に気づくと思います (例:|help|)。それは +ハイパーリンクです。その場所にカーソルを置いて、CTRL-] (タグジャンプ) を押す +と、そのヘルプにジャンプできます。(理由は省きますが、Vim ではハイパーリンクの +ことをタグと呼びます。CTRL-] はカーソル下の単語をタグとみなして、その場所にジャ +ンプします。) +ジャンプした後は CTRL-T (タグをポップする) で元の場所に戻れます。CTRL-O(古い +場所へのジャンプ)でも元に場所に戻れます。 + +ヘルプ画面の最上部に*help.txt*という表記があります。"*" で囲まれた名前はヘルプ +システムのタグ(ハイパーリンクの飛び先)を定義するために使われています。 +タグの使い方の詳細は |29.1| を参照してください。 + +特定のヘルプ項目を見るには次のコマンドを使います: > :help {subject} -例えば"x"コマンドのヘルプを見るには次のように指定します。 > +例えば "x" コマンドのヘルプを見るには次のようにします: > :help x -文字の削除方法を知りたければ次のコマンドです。 > +文字の削除方法を調べるには次のようにします: > :help deleting -Vimコマンドの全目次を見るには次のコマンドです。 > +Vim のコマンド一覧を見たい場合は次のようにします: > :help index -コントロール文字のコマンド(例えば、CTRL-A)のヘルプを見るには、"CTRL-"に続けて -その文字を指定します。 > +コントロール文字コマンド (例えば CTRL-A) のヘルプを見るには、"CTRL-" に続けて +その文字を指定します: > :help CTRL-A -Vimにはいろんなモードがあります。特に指定がなければ、ノーマルモードのコマンド -のヘルプが表示されます。例えば、以下のコマンドはノーマルモードのCTRL-Hコマンド -のヘルプを表示します。 > +Vim にはいろんなモードがあります。特に指定がなければノーマルモードコマンドのヘ +ルプが表示されます。例えば、次のコマンドでノーマルモードの CTRL-H コマンドのヘ +ルプが表示されます: > :help CTRL-H -他のモードを指定するには、プレフィクスを付けてください。例えば、挿入モードのヘ -ルプが見たいときには、"i_"を付けます。CTRL-Hの場合なら次のようになります。 > +他のモードを指定するにはプレフィクスを付けてください。例えば、挿入モードのヘル +プが見たいときには、"i_"を付けます。CTRL-H の場合なら次のようになります: > :help i_CTRL-H -Vimの起動時に、コマンドライン引数が指定できます。引数は先頭が"-"で始まりま -す。例えば、"-t"オプションの意味を知るには次のコマンドを使います。 > +Vim を起動するときにはコマンドライン引数を指定できます。引数は先頭が "-" で始 +まります。例えば、"-t" 引数の意味を調べるには次のコマンドを使います: > :help -t -Vimでは数多くのオプションがあり、それを設定することでカスタマイズができます。 +Vim にはオプションがたくさんあり、それを設定することでカスタマイズができます。 オプションのヘルプを見るには、アポストロフィでそれを囲ってください。例えば、 -'number'オプションの意味を知るには次のコマンドを使います。 > +'number'オプションの意味を調べるには次のコマンドを使います: > :help 'number' -全モードのプレフックス一覧は |help-context| をご覧ください。 +モードのプレフィクス一覧は |help-context| を参照してください。 -特殊キーを指定したければ、不等号"<",">"で囲みます。例えば、挿入モードでの上 -矢印キーのヘルプはこのコマンドです。 > +特殊キー不等号で囲んで表記します。例えば、挿入モードの上矢印キーのヘルプを見る +には次のコマンドを使います: > :help i_<Up> -次のようなエラーが出て、その意味がよくわからない場合は、 +例えば次のようなエラーメッセージが表示された場合: - E37: No write since last change (use ! to override) ~ E37: 最後の変更が保存されていません (! で変更を破棄) ~ -行頭のエラーIDを使えば、そのヘルプを検索できるでしょう。 > +行頭のエラーIDを使えばヘルプを検索できます: > :help E37 diff --git a/ja/usr_03.jax b/ja/usr_03.jax index 471d64564..e19ed966b 100644 --- a/ja/usr_03.jax +++ b/ja/usr_03.jax @@ -10,9 +10,10 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> カーソルの移動 -文の入力や削除の前には、カーソルを目的の場所に動かさなくてはなりません。 -Vimはカーソル移動のための数多くのコマンドを持っています。本章では、その中で -も重要なコマンドの使い方を述べます。一覧は|Q_lr|をご覧下さい。 +文の入力したり削除したりするには、カーソルを目的の場所に動かさなくてはなりませ +ん。Vim にはカーソル移動のためのコマンドがたくさんあります。本章では、その中で +も重要なコマンドの使い方を述べます。コマンドの一覧は |Q_lr| を参照してくださ +い。 |03.1| 単語ごとの移動 |03.2| 行頭、行末への移動 @@ -32,37 +33,37 @@ Vimはカーソル移動のための数多くのコマンドを持っていま ============================================================================== *03.1* 単語ごとの移動 -カーソルを1単語先に進めるには、"w"コマンドを使います。他のVimコマンドも -そうですが、複数の単語を一気に進めるために数値による回数指定(カウンタ) -ができます。例えば、"3w"では3単語進めます。図で示すと次のようになります。 +カーソルを 1 単語先に進めるには、"w"コマンドを使います。他の Vim コマンドもそ +うですが、複数の単語を一気に進めるために数値 (カウンタ) による回数指定ができま +す。例えば、"3w"では 3 単語進みます。図で示すと次のようになります。 This is a line with example text ~ --->-->->-----------------> w w w 3w -"w"は次の単語の先頭に移動します。既にカーソルが単語の先頭にある場合も、その -次の単語の先頭に移動します。 -逆に"b"コマンドは直前の単語の先頭に戻ります。 +"w" で次の単語の先頭に移動します。既にカーソルが単語の先頭にある場合は、その次 +の単語の先頭に移動します。 +逆に "b" コマンドで直前の単語の先頭に戻ります。 This is a line with example text ~ <----<--<-<---------<--- b b b 2b b -"e"コマンドは次の単語の末尾に移動します。"ge"は直前の単語の末尾に移動します。 +"e" コマンドで次の単語の末尾に移動します。"ge" で直前の単語の末尾に移動します。 This is a line with example text ~ <- <--- -----> ----> ge ge e e -カーソルが行末の単語にある場合、"w"コマンドは次の行の最初の単語に進みます。 -これを使うと"l"よりもずっと早く文章の中を動けます。"b"なら逆方向に同じルールで -動きます。 +カーソルが行末の単語にある場合、"w" コマンドは次の行の最初の単語に進みます。こ +れを使うと "l" よりもずっと速く文章の中を動けます。"b" は "w" の逆方向に同じ +ルールで動きます。 単語は"."や"-"、")"といったアルファベット以外の文字で区切られます。Vimが何を単 語とみなすかは、'iskeyword'オプションの設定で変更できます。 空白を区切りとした単語(WORD)を移動することもできます。これは普段意識する単語 -(word)とは若干違うため、大文字で書いています。WORD単位で動くコマンドは全部大文 -字です。図で示すと次の通りです。 +(word)とは若干違うため、大文字を使いっています。WORD単位で動くコマンドは全部大 +文字です。図で示すと次の通りです。 ge b w e <- <- ---> ---> @@ -70,16 +71,15 @@ Vimはカーソル移動のための数多くのコマンドを持っていま <----- <----- --------------------> -----> gE B W E -小文字と大文字のコマンドを両方使うと、文章中をより素早く動けるようになり -ます。 +小文字と大文字のコマンドを両方使うと、文章中をより素早く動けるようになります。 ============================================================================== *03.2* 行頭、行末への移動 -"$"コマンドはカーソルを行末に移動します。キーボードに<End>キーがあれば、それも +"$"コマンドでカーソルを行末に移動します。キーボードに<End>キーがあれば、それも 同じ意味で使えます。 -"^"コマンドはカーソルを行頭から最初の非空白文字に移動します。"0"(数字のゼロ)コ +"^"コマンドでカーソルを行頭から最初の非空白文字に移動します。"0"(数字のゼロ)コ マンドは行頭に移動します。<Home>キーも同じです。図で示しましょう。 ^ @@ -90,33 +90,33 @@ Vimはカーソル移動のための数多くのコマンドを持っていま ("....." は空白文字があることを示します) -"$"コマンドでも他の移動コマンドのようにカウンタの指定ができます。行末への移 -動を何度やっても意味がありませんので、"$"コマンドでのカウンタは他の行の行末 -への移動の意味になります。例えば、"1$"は"$"と同じで現在行の行末への移動です -が、"2$"は次の行末への移動、"3$"は2行下の行末への移動、となります。 -"0"コマンドは回数指定できません。これは、"0"自身が回数指定の一部になってしま -うからです。意外でしょうが、"^"に回数指定を行っても、何も起こりません。 +"$"コマンドでも他の移動コマンドのようにカウンタの指定ができます。行末への移動 +を何度やっても意味がありませんので、"$"コマンドでのカウンタは他の行の行末への +移動の意味になります。例えば、"1$"は"$"と同じで現在行の行末への移動ですが、 +"2$"は次の行末への移動、"3$"は 2 行下の行末への移動、となります。 +"0"コマンドは回数指定できません。これは、"0"自身が回数指定の一部になってしまう +からです。"^"に回数指定をした場合は単に無視されます。 ============================================================================== *03.3* 文字への移動 特に便利な移動コマンドはいくつかありますが、一文字検索コマンドもその一つです。 コマンド "fx" はその行にある文字 x を前方検索します。(f は Find の意味です)。 -例えば、下図で示した行の先頭にカーソルがあり、 human の h に移動したいとしま -す。"fh"コマンドを実行すると、'h'の上にカーソルが進みます。 +例えば、次の文の先頭にカーソルがあり、 human の h に移動したいとします。"fh"コ +マンドを実行すると、'h'の上にカーソルが進みます。 To err is human. To really foul up you need a computer. ~ ---------->---------------> fh fy -続いて、"fy"コマンドで really の y まで移動しています。 -これもカウンタ指定ができます。例えば下図で foul の l に進むには "3fl" です。 +続いて、"fy"コマンドで really の y まで移動できます。 +これもカウンタ指定ができます。例えば次の文の foul の l に進むには "3fl" です。 To err is human. To really foul up you need a computer. ~ ---------------------> 3fl -"F"コマンドは左向きに検索します。 +"F"コマンドで左向きに検索できます。 To err is human. To really foul up you need a computer. ~ <--------------------- @@ -130,9 +130,9 @@ Vimはカーソル移動のための数多くのコマンドを持っていま <------------ -------------> Th tn -この4つのコマンドは ";" コマンドで繰り返せます。反対方向に繰り返すには "," コ -マンドです。このコマンドは、カーソルが他の行に移動することはありません。文が次 -行に続いていても移動しません。 +この 4 つのコマンドは ";" コマンドで繰り返せます。反対方向に繰り返すには "," +コマンドです。このコマンドは、カーソルが他の行に移動することはありません。文が +次行に続いていても移動しません。 検索をしようとして、コマンドを打ち間違うこともあるでしょう。例えば、逆方向検索 のつもりで("F"と打つべきところを)"f"と打ってしまったとしましょう。コマンドの実 @@ -157,9 +157,9 @@ Vimはカーソル移動のための数多くのコマンドを持っていま このコマンドは [] や {} のペアでも機能します。(これは'matchpairs'オプションで 定義できます) -カーソルがカッコの上にない場合、"%"はまず前方検索をしてカッコを探します。上図 -の例と同じ行の行頭にカーソルがあった場合、"%" は前方検索をして "(" を見つけ、 -それから、対応するカッコ ")" に移動します。 +カーソルがカッコの上にない場合、"%"はまず前方検索をしてカッコを探します。上記 +の例文で行頭にカーソルがあった場合、"%" は前方検索をして "(" を見つけ、それか +ら、対応するカッコ ")" に移動します。 if (a == (b * c) / d) ~ ---+----------------> @@ -196,12 +196,12 @@ CやC++のプログラマであれば、次のようなパターンのエラー last line of a file V 特定行に移動するもう一つの方法はカウンタ付きの"%"コマンドです。例えば、"50%" -はそのファイルの真ん中まで移動します。"90%"だとファイルのほぼ最後(90%の場所) -に移動します。 +でファイルの真ん中に移動できます。"90%"ならファイルのほぼ最後(90%の場所) に移 +動します。 以上述べたのは、画面上に見えているかどうかに関係なくファイルの特定行に移動した い場合のコマンドでした。では画面上に見えている行に移動したい場合はどうしましょ -うか?そういう時に使える3つのコマンドを下図に示します。 +うか?そういう時に使える 3 つのコマンドを下図に示します。 +---------------------------+ H --> | text sample text | @@ -220,7 +220,7 @@ CやC++のプログラマであれば、次のようなパターンのエラー ============================================================================== *03.6* 現在の場所を表示 -ファイル中の現在の場所を知るには、次の3つの方法があります。 +ファイル中の現在の場所を知るには、次の 3 つの方法があります。 1. CTRL-Gコマンド。次のようなメッセージが表示されます。('ruler'オプション がオフの場合) @@ -242,12 +242,11 @@ CやC++のプログラマであれば、次のようなパターンのエラー :set nonumber < - 'number'は論理値オプションなので、オプション名の先頭に"no"を付けると、オフ - の意味になります。論理値オプションにはオンかオフの2つの状態しかありませ - ん。 - Vimには多数のオプションがあります。論理値オプションの他に、数値オプ - ションと文字列オプションがあります。そういったオプションを使う時に例を - お見せしましょう。 + 'number'は論理値オプションなので、オプション名の先頭に"no"をつければオフに + できます。論理値オプションにはオンかオフの 2 つの状態しかありません。 + Vimには多数のオプションがあります。論理値オプションの他に、数値オプション + と文字列オプションがあります。それらのオプションの設定方法はそのうち説明し + ます。 3. 'ruler'オプションを設定する。現在のカーソル位置が、Vimウィンドウの右下隅に 表示されるようになります: > @@ -259,7 +258,7 @@ CやC++のプログラマであれば、次のようなパターンのエラー ============================================================================== *03.7* スクロール -CTRL-U コマンドは画面の半分だけ下にスクロールします。窓を通してテキストを見て +CTRL-U コマンドで画面の半分だけ下にスクロールします。窓を通してテキストを見て いて、その窓を高さの半分だけ上に動かす、と考えてください。窓が上に動き、さっき より上の位置のテキストが表示されます。どっちが上でどっちが下かわかりにくいかと 思いますが、気にすることはありません。みんな同じように悩むことですから。 @@ -284,17 +283,16 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが | example | +----------------+ -1行だけスクロールするにはCTRL-E(スクロールアップ)とCTRL-Y(スクロールダウン) -を使います。CTRL-Eについても同様に考えてみてください。(MS-Windows互換のキー -マップをお使いの場合、CTRL-Yはスクロールではなく、再実行(redo)コマンドとなり -ます) +1 行だけスクロールするにはCTRL-E(スクロールアップ)とCTRL-Y(スクロールダウン) +を使います。(MS-Windows互換のキーマップをお使いの場合、CTRL-Yはスクロールでは +なく、redo コマンドとなります) -1画面分スクロールするにはCTRL-Fを使います(2行は重複します)。逆方向へのスク +1 画面分スクロールするにはCTRL-Fを使います(2行は重複します)。逆方向へのスク ロールはCTRL-Bコマンドを使います。CTRL-FはForward、CTRL-BはBackward、ですから 覚えやすいでしょう。 -"j" で何行も下に移動して、カーソルが画面の最下段にあるとします。そして、カーソ -ル前後の行を確認したいと思うかもしれません。それには "zz" コマンドを使います。 +"j" で何行も下に移動して、カーソルが画面の最下段にあるとします。カーソル前後の +行を表示したい場合は "zz" コマンドを使います。 +------------------+ +------------------+ | some text | | some text | @@ -306,10 +304,10 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが | line with cursor | | some text | +------------------+ +------------------+ -"zt" コマンドはカーソル行を画面の1行目に置きます。"zb"コマンドなら画面の最下 -段です。これ以外にもいくつかスクロールコマンドがあります。|Q_sc|をご覧くださ -い。常にカーソル近辺の数行を表示させたいのであれば、'scrolloff'オプションを -使ってください。 +"zt" コマンドでカーソル行を画面の 1 行目として表示できます。"zb" コマンドなら +画面の最下段です。これ以外にもいくつかスクロールコマンドがあります。|Q_sc|を参 +照してください。カーソル近辺の数行を常に表示させたい場合は、'scrolloff'オプショ +ンを使ってください。 ============================================================================== *03.8* 簡単な検索 @@ -319,10 +317,10 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが /include -"/"を押すと、コマンドラインモードの時のように、カーソルがVimウィンドウの最下段 -に移動します。そこで検索したい単語を入力します。入力した文字を訂正するには、 -バックスペースキー (逆矢印 または <BS>) を使います。必要に応じて<Left>や -<Right>の矢印キーも使います。 +"/"を押すと、コマンドラインモードのときのように、カーソルがVimウィンドウの最下 +段に移動します。そこで検索したい単語を入力します。入力した文字を訂正するには、 +バックスペースキー (左矢印 または <BS>) を使います。必要に応じて<Left>や +<Right>の矢印キーを使ってください。 <Enter>を押すとコマンドが実行されます。 Note: @@ -335,8 +333,8 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが /#include -次に"n"を数回押すと、順々に #include にジャンプします。移動したい場所がいくつ -目かわかっているなら、カウンタも使えます。例えば、"3n"なら3つ目の #include を +次に"n"を数回押すと、順々に #include にジャンプします。移動したい場所が何個目 +かわかっているなら、カウンタも使えます。例えば、"3n"なら 3 つ目の #include を 探します。"/" にはカウンタを指定できません。 "?"コマンドは"/"と同じですが、逆方向に検索します。 > @@ -370,15 +368,15 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが /two /three -ここで、"/"だけを入力し、<Enter>を押さずにおきます。<Up>(上矢印キー)を押す -と、コマンド行に /three と表示されます。ここで、<Enter>を押すと、"three"が検索 -されます。<Enter>を押さずに<Up>を押すとコマンド行には"/two"と表示されます。さ -らに<Up>を押すと"/one"となります。 +さて、"/" だけを入力し、まだ <Enter> を押さないでください。<Up>(上矢印キー) +を押すと、コマンド行に /three と表示されます。ここで <Enter> を押すと、 +"three"が検索されます。<Enter>を押さずに<Up>を押すとコマンド行には"/two"と表示 +されます。さらに<Up>を押すと"/one"となります。 同じように<Down>キーを使って逆方向に検索ヒストリを移動できます。 以前に使ったパターンを覚えていて、それをまた使いたい場合には、そのパターンの先 頭文字を入力してから <Up> を押してください。上の例で言えば、"/o<Up>"と入力する -と、Vimはコマンドラインに"/one"と表示してくれます。 +と、コマンドラインに"/one"と表示されます。 ":"で始まるコマンドにもヒストリがあります。以前のコマンドを呼び出して、再実行 できます。検索用ヒストリと":"コマンドヒストリは分かれています。 @@ -391,10 +389,9 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが します。もちろん、"/TheLongFunctionName"として検索もできますが、たくさんの打鍵 が必要です。それに、打ち間違えてしまうとうまく検索できません。 もっと簡単な方法があります。探したい単語の上にカーソルを置いて、"*"コマンドを -使うのです。Vimはカーソル位置の単語を抜き出してそれを検索文字列として使いま -す。 +使うのです。カーソル位置の単語が抜き出され、それが検索文字列として使われます。 "#"コマンドは同じことを逆方向に実行します。このコマンドもカウンタが指定でき -ます。例えば、"3*"はカーソル位置の単語が3回目に現われる場所を探します。 +ます。例えば、"3*"はカーソル位置の単語が 3 回目に現われる場所を探します。 単語全体を一致させる検索 @@ -425,9 +422,8 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが :set hlsearch -ここで、"nr"を検索すると、Vimはヒットした全てのパターンを強調表示します。これ -だと余計なコマンド入力が要りませんから、変数の使用箇所を確認したい時にはとても -便利でしょう。 +"nr"を検索すると、ヒットした全てのパターンが強調表示されます。これなら余計なコ +マンド入力が必要ないので、変数の使用箇所を確認したいときには便利です。 このオプションは次のコマンドでオフにできます。 > :set nohlsearch @@ -438,8 +434,7 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが :nohlsearch これならオプションはオフになりません。強調表示だけを取り消せます。次に検索コマ -ンドを実行すると、ふたたび強調表示を使うようになります。"n"や"N"を使った時も同 -様です。 +ンドを実行すると、ふたたび強調表示されます。"n"や"N"を使ったときも同様です。 検索のチューニング @@ -464,9 +459,9 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが ところで... ----------- -これまでに出てきたオプションでVimを使う時に毎回設定しておきたいものがあれば、 -Vimのスタートアップファイルにそのコマンドを書いておくといいでしょう。 -|not-compatible|の説明のどおりにファイルを編集するか、次のコマンドを入力して、 +これまでに出てきたオプションを毎回設定したい場合は、スタートアップファイルにそ +のコマンドを書いてください。 +|not-compatible|の説明のとおりにファイルを編集するか、次のコマンドを入力して、 ファイルがどこにあるか確認してください。 > :scriptnames @@ -502,11 +497,10 @@ Vimでは、検索に正規表現(regular expressions)を使います。 行頭と行末 ---------- -"^"は行頭を示します。英語(ASCII)キーボードでは6のキーに、日本語(JIS)キー -ボードでは0のキーの2つ右側に刻印してあります。 -例えば、"include"というパターンは 行のどこかに include という単語を含んでい -れば、ヒットします。一方、"^include"は行頭が include で始まっている場合だけ -ヒットします。 +"^"は行頭を示します。英語(ASCII)キーボードでは 6 のキーに、日本語(JIS)キーボー +ドでは 0 のキーの 2 つ右側に刻印してあります。 +例えば、"include"というパターンは 行のどこかに include という単語を含んでいれ +ば、ヒットします。一方、"^include" は行頭にある include にだけマッチします。 "$"は同様に行末にヒットします。ですから、パターン"was$" は、行末が was で終 わっている場合だけヒットします。 @@ -530,12 +524,11 @@ Vimでは、検索に正規表現(regular expressions)を使います。 字を含んでいた場合は、"/the$"のパターンではヒットしません。 -任意の1文字 ------------- +任意の 1 文字 +------------- -"." はあらゆる文字にヒットします。例えば、"c.m"は最初が"c"で始まり、2文字 -目は何でも良くて、3文字目が"m"であるパターンにヒットします。 -例を示します。 +"." はあらゆる文字にヒットします。例えば、"c.m"は最初が"c"で始まり、2 文字目は +何でも良くて、3 文字目が"m"であるパターンにヒットします。例を示します。 We use a computer that became the cummin winter. ~ xxx xxx xxx @@ -551,20 +544,20 @@ Vimでは、検索に正規表現(regular expressions)を使います。 We use a computer that became the cummin winter. ~ xxxx xxxx -これを"ter\."で検索すると、上図の2つ目だけがヒットします。 +これを"ter\."で検索すると、上図の 2 つ目だけがヒットします。 ============================================================================== *03.10* マークの使用 -"G"コマンドでジャンプすると、Vimはその直前のカーソル位置を覚えています。これ -をマークと呼びます。元の場所に戻るには、次のコマンドを使います。 > +"G"コマンドでジャンプすると、その直前のカーソル位置が記録されます。これをマー +クと呼びます。元の場所に戻るには、次のコマンドを使います。 > `` この ` は backtick とか open single-quote と呼ばれる(日本では「バッククオート」 が多いでしょうか)ものです。 -このコマンドを2回実行すると、最初の場所に戻ります。これは ` コマンドもジャン -プコマンドなので、実行前の場所が記録されるためです。 +このコマンドを 2 回実行すると、元の場所に戻ります。これは ` コマンドもジャンプ +コマンドなので、実行前の場所が記録されるためです。 通常、現在行以外にカーソルが動くようなコマンドを実行した場合、それをジャンプ と呼びます。"/"や"n"もジャンプの一種です(ジャンプ先がどれだけ離れているかは @@ -573,18 +566,18 @@ Vimでは、検索に正規表現(regular expressions)を使います。 "j"や"k"はカウンタを指定すればカーソルをはるか彼方に移動できますが、これも ジャンプ扱いではありません。 -``コマンドは2個所の間を交互にジャンプします。CTRL-Oコマンドはより古いマーク -( Oは Olderの意味です)にジャンプします。CTRL-Iはより新しいマーク("I"キーは +``コマンドは 2 個所の間を交互にジャンプします。CTRL-Oコマンドはより古いマーク +(O は Older の意味です)にジャンプします。CTRL-Iはより新しいマーク("I"キーは "O"キーのすぐ左隣りです)にジャンプします。次のコマンドを例にしましょう。 > 33G /^The CTRL-O -まず33行目にジャンプします。次に"The"で始まる行を探します。ここでCTRL-Oを -使うと、33行目にジャンプします。もう一度CTRL-Oを使うと、最初の場所に戻りま -す。CTRL-Iを使うと33行目に戻り、さらにCTRL-Iを使うと行頭が"The"で始まる行に -戻ります。 +まず33行目にジャンプします。次に"The"で始まる行を探します。ここでCTRL-Oを使う +と、33行目に戻ります。もう一度CTRL-Oを使うと、最初の場所に戻ります。そして、 +CTRL-Iを使うと33行目にジャンプし、さらにCTRL-Iを使うと行頭が"The"で始まる行に +ジャンプします。 | example text ^ | 33G | example text | CTRL-O | CTRL-I @@ -598,30 +591,28 @@ Vimでは、検索に正規表現(regular expressions)を使います。 Note: CTRL-Iは<Tab>キーと同じです。 -":jumps"コマンドは今までにジャンプした場所の一覧を表示します。最後に使った -エントリには">"記号がついています。 +":jumps"コマンドで今までにジャンプした場所の一覧を表示できます。最後に使ったエ +ントリには">"記号がついています。 名前付きマーク *bookmark* -------------- -Vimでは文章中に自分でマークを付けることができます。"ma"コマンドは現在のカー -ソル位置をマーク a に記録します。文章には26個(aからzまで)のマークを付け -られます。マークは Vim が記録している位置情報です。何かが表示されるわけではあ -りません。 +文章中にマークを付けることができます。"ma"コマンドで現在のカーソル位置をマーク +a に記録します。文章には 26 個 (aからzまで) のマークを付けられます。マークは +Vim が記録している位置情報です。画面に何かが表示されるわけではありません。 マークへの移動は `{mark} コマンドを使います。{mark}はマーク文字のことです。 マーク a に移動するには次のようにします。 > `a < -'{mark}(アポストロフィ+マーク名)コマンドはその{mark}を設定してある行の行頭 -に移動します。`{mark}の場合は{mark}を設定した桁位置に移動します。 +'{mark}(アポストロフィ + マーク名)コマンドで{mark}を設定してある行の行頭に移動 +できます。`{mark}の場合は{mark}を設定した桁位置に移動します。 -マーク機能はファイル中の関連している2箇所で作業をする場合に便利です。例えば、 -ファイルの最後の方を編集している時に、ファイルの最初の方の内容を確認する必要 -が生じた場合を考えてみましょう。 -この時、まずファイルの最初の方に移動して、マーク s (startのつもり) を付けま -す。 > +マーク機能はファイル中の関連している 2 箇所で作業をする場合に便利です。例えば、 +ファイルの最後の方を編集している時に、ファイルの最初の方の内容を確認する必要が +生じた場合を考えてみましょう。 +まずファイルの最初の方に移動して、マーク s (startのつもり) を付けます。 > ms @@ -629,8 +620,8 @@ Vimでは文章中に自分でマークを付けることができます。"ma" me -これで自由に行き来ができます。ファイルの先頭に移動したい時は、これでジャンプ -できます。 > +これで自由に行き来ができます。ファイルの先頭に移動したい時は、次のコマンドで +ジャンプできます。 > 's diff --git a/ja/usr_04.jax b/ja/usr_04.jax index fdafea04c..3b968688d 100644 --- a/ja/usr_04.jax +++ b/ja/usr_04.jax @@ -10,9 +10,9 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> 簡単な編集 -本章では、 文の修正方法や他の場所への移動方法の一部を述べます。 -また、変更する範囲を選択する3つ(カーソルモーション、ビジュアルモード、テキスト -オブジェクト)の基本的な繰作方法についても説明します。 +本章では、 テキストの修正方法や他の場所への移動方法をいくつか説明します。テキ +ストを変更するための三つの基本操作方法 (オペレータとモーション、ビジュアルモー +ド、テキストオブジェクト) についても説明します。 |04.1| オペレータとモーション |04.2| テキストの変更 @@ -32,13 +32,13 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> ============================================================================== *04.1* オペレータとモーション -2章で学んだように、"x"は1文字削除コマンドです。カウンタを使って、"4x"とす -れば4文字を削除します。 -"dw"コマンドは単語を削除します。"w"が単語単位で移動するコマンドであることを思 -い出してください。"d"コマンドにモーション(移動)コマンドを続けることで、現在の -場所から、モーションコマンドで移動した場所までを削除できます。 -例えば、"4w"コマンドはカーソルを4単語分、動かします。ということは、"d4w"は -4つの単語を削除するコマンドなわけです。 +二章で学んだように、"x"は 1 文字削除するコマンドです。カウンタを使って、"4x"と +すれば 4 文字削除されます。 +"dw"コマンドで単語を削除できます。"w" が単語単位で移動するコマンドであることを +思い出してください。"d" コマンドにモーション (移動) コマンドを続けることで、現 +在の場所から、モーションコマンドで移動した場所までを削除できます。 +例えば、"4w" コマンドはカーソルを 4 単語分、動かします。ということは、"d4w"は +4 つの単語を削除するコマンドなわけです。 To err is human. To really foul up you need a computer. ~ ------------------> @@ -47,8 +47,8 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> To err is human. you need a computer. ~ モーションコマンドでカーソルが移動した場所までが削除されます。移動先の単語の先 -頭文字が削除されないのは、そのほうが便利だろうと判断したからです。"e" コマンド -で単語の末尾まで移動した場合は、末尾の文字も削除したほうが便利でしょう: +頭文字が削除されないのは、そのほうが便利だからです。しかし、"e" コマンドで単語 +の末尾まで移動した場合は、末尾の文字も削除したほうが便利ですよね: To err is human. you need a computer. ~ --------> @@ -60,9 +60,9 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> ます。リファレンスマニュアルでは、移動先の文字が含まれないことを "exclusive" (排他的)、含まれることを "inclusive" (包括的) と呼んでいます。 -"$"コマンドは行末まで移動します。"d$"コマンドはカーソル位置から、行末まで -を削除します。これは包括的モーションなので行末の文字は削除処理の対象と -なります。 +"$"コマンドで行末まで移動できます。"d$"コマンドならカーソル位置から行末までが +削除されます。これは包括的モーションなので行末の文字は削除処理の対象となりま +す。 To err is human. a computer. ~ ------------> @@ -70,16 +70,16 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> To err is human ~ -オペレータ-モーション というのは定型操作です。最初にオペレータコマンドを入力し -ます。例えば、"d" は削除オペレータです。次に "4l" や "w" といったモーションコ -マンドを入力します。この方法なら、動ける範囲のどんな文章でも操作ができます。 +オペレータとモーションを組み合わせるときは、最初にオペレータコマンドを入力しま +す。例えば、"d" は削除オペレータです。次に "4l" や "w" といったモーションコマ +ンドを入力します。この方法ならテキストのどんな範囲でも操作できます。 ============================================================================== *04.2* テキストの変更 "c" は「変更」オペレータです。"d" オペレータと同じように使えますが、挿入モード -に入る点が違います。例えば、"cw" は単語を変更します。もっと正確に言うと、単語 -を削除してから挿入モードに入ります。 +に入る点が違います。例えば、"cw" は単語を変更します。正確に言うと、単語を削除 +してから挿入モードに入ります。 To err is human ~ -------> @@ -87,10 +87,10 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> To be human ~ -"c2wbe<Esc>" には次の成分が含まれます。 +"c2wbe<Esc>" は次の部分から成ります: c 変更オペレータ - 2w 2単語進む (単語が削除され、挿入モードに入る) + 2w 2 単語進む (単語が削除され、挿入モードに入る) be この文字列を挿入する <Esc> ノーマルモードに戻る @@ -100,23 +100,23 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> タは "d" オペレータと全く同じように使えますが、"cw" はその例外なのです。実際に はこれは"ce"と同じく、単語末までを変更します。ですから、単語の後ろの空白は含ま れないのです。これはかつての Vi までさかのぼる例外です。多くの人々がこれを使っ -ていますので、Vim でも不本意ながら残してあるのです。 +ているので、Vim でも不本意ながら残してあるのです。 その他の変更コマンド -------------------- -"dd" が行を削除するのと同じように、"cc" は行全体を変更します。ただし、インデン -ト(行頭の空白類)は残されます。 +"dd" で行が削除できるのと同じように、"cc" で行全体を変更できます。ただし、イン +デント(行頭の空白類)は残されます。 -"d$"が行末まで削除するのと同じように、"c$"は行末までを変更します。この機能は -"d$"で行末まで削除した上で、"a"で挿入モードに入り、文を追加するのと同じです。 +"d$" で行末まで削除できるのと同じように、"c$" で行末まで変更できます。この機能 +は "d$" で行末まで削除してから"a"で挿入モードに入り、文を追加するのと同じです。 ショートカット -------------- -いくつかのオペレータ-モーションの組合せは頻繁に使われるため、1文字コマンドと +いくつかのオペレータとモーションの組合せは頻繁に使われるため、1 文字コマンドと して用意されています。 x は dl (カーソル下の文字を削除) @@ -130,14 +130,14 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> カウンタの使い方 ---------------- -"3dw"も"d3w"も3つの単語を削除するコマンドです。細かいことが気になる方のため -に補足しておくと、最初の例(3dw)は1単語削除を3回実行し、2つ目の例(d3w)は -3単語の削除を1度だけ実行します。2つの違いは区別できません。やろうと思えば、 -カウンタを2個所で指定できます。例えば、"3d2w"は2単語の削除を3回繰り返し、 -結果として、6単語を削除します。 +"3dw" も "d3w" も 3 つの単語を削除するコマンドです。細かいことが気になる方のた +めに補足しておくと、最初の例(3dw)は 1 単語削除を 3 回実行し、2 つ目の例(d3w)は +3 単語の削除を 1 度だけ実行します。2 つの違いは区別できません。カウンタを 2 個 +所で指定することもできます。例えば、"3d2w"は 2 単語の削除を 3 回繰り返し、結果 +として 6 単語が削除されます。 -1文字の置き換え +1 文字の置き換え ---------------- "r" コマンドはオペレータではありません。文字が入力されるまで待機し、入力された @@ -157,9 +157,9 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> There is something xxxxx here ~ -文字を改行に置き換えたければ、"r<Enter>"を使います。1文字を削除した上で、 -改行を挿入します。ただし、改行に対してはカウンタは無効で、削除する文字にのみ -有効となります。"4r<Enter>"は4文字削除し、1つの改行を挿入します。 +文字を改行に置き換えたい場合は "r<Enter>"を使います。1 文字削除され、改行が挿 +入されます。ただし、改行に対してカウンタは適用されません。削除する文字にのみ適 +用されます。"4r<Enter>" は 4 文字削除し、1 つの改行を挿入します。 ============================================================================== *04.3* 変更の繰り返し @@ -172,18 +172,18 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> カーソルを"<"の上に置いて、"."を打てばよいのです。 To <B>generate</B> a table of <B>contents ~ - f< find first < ---> - df> delete to > --> - f< find next < ---------> - . repeat df> ---> - f< find next < -------------> - . repeat df> --> + f< 最初の < を検索 ---> + df> > まで削除 --> + f< 次の < を検索 ---------> + . df> を繰り返し ---> + f< 次の < を検索 -------------> + . df> を繰り返し --> -"." コマンドはすべての変更操作を繰り返せますが、 "u" (アンドゥ)、CTRL-R (リ -ドゥ)、先頭が ":" のコマンドは繰り返せません。 +"." コマンドではすべての変更を繰り返すことができますが、 "u" (undo)、CTRL-R +(redo)、先頭が ":" のコマンド、は繰り返せません。 -例2:文中に何度も出てくる単語"four"を"five"に変更したいとします。 - 次に示した手順でそれができます。 +例2: 文中に何度も出てくる単語 "four" を "five" に変更したいとします。次の手順 + で変更できます。 /four<Enter> 最初の"four"を探す。 cwfive<Esc> その単語を"five"に変更する。 @@ -191,19 +191,19 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> . 直前の変更を繰り返す。 n 次の"four"を探す . 直前の変更を繰り返す。 - 以下同文。 + 以下繰り返し。 ============================================================================== *04.4* ビジュアルモード -単純なものならオペレータ-モーション方式で簡単に変更できますが、どのコマンドを -使えば目的の範囲を選択できるか簡単には決められないこともよくあります。そんなと -きは ビジュアルモードを使ってください。 +単純なものならオペレータ-モーション方式で簡単に変更できますが、変更する範囲に +適したコマンドを選択するのが難しいこともあります。そんなときはビジュアルモード +を使ってください。 -ビジュアルモードに入るには "v" を押します。ここでカーソルを動かして対象とした -い領域を選択します。選択中はその領域が強調表示されます。最後にオペレータコマン -ドを入力します。 -例えば、単語の途中から、次の単語の途中までを削除するには、次のようにします。 +ビジュアルモードに入るには "v" を押します。そしてカーソルを動かして変更したい +領域を選択します。選択中はその領域が強調表示されます。最後にオペレータコマンド +を入力します。 +例えば、単語の途中から次の単語の途中までを削除するには、次のようにします。 This is an examination sample of visual mode ~ ----------> @@ -211,21 +211,20 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> This is an example of visual mode ~ -この方法だと、"l"を何回押せば目的の場所まで移動できるか?などと考える必要が -全くありません。その場で削除の範囲を確認してから、"d"を押すことができるので -す。 +この方法なら、"l" を何回押せば目的の場所まで移動できるか? などと考える必要が +全くありません。削除する範囲を確認してから "d" を押すことができます。 -選択されている範囲に対して何もしたくない場合は <Esc> キーを押してください。 -ビジュアルモードが終了し、なにも変更されません。 +選択した範囲を変更したくなくなった場合は <Esc> キーを押してください。ビジュア +ルモードが終了し、なにも変更されません。 行選択 ------ -行全体を対象としたければ、"V" コマンドでビジュアルモードを開始してください。ただ -ちに、行全体が選択されます。ここで左右に移動しても何も起こりません。上下に移動 -すると、選択範囲が行単位で拡張されます。 -例えば、"Vjj"で3行を選択してみましょう。 +行全体を選択するには "V" コマンドでビジュアルモードを開始します。行全体が選択 +されます。左右に移動しても選択範囲は変更されません。上下に移動すると、選択範囲 +が行単位で拡張されます。 +例えば、"Vjj" で 3 行を選択してみましょう。 +------------------------+ | text more text | @@ -239,8 +238,8 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> ブロック選択 ------------ -四角いブロック(矩形)の処理を行いたければ、CTRL-V でビジュアルモードを開始しま -す。このモードは表を編集するような場合に非常に便利です。 +四角いブロック (矩形) の範囲を変更したい場合は CTRL-V でビジュアルモードを開始 +します。このモードは表を編集するような場合に非常に便利です。 name Q1 Q2 Q3 pierre 123 455 234 @@ -249,20 +248,20 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> 例えば、中央の Q2 の列を削除するには、カーソルを "Q2" の "Q" に移動します。 CTRL-V を押し、ブロック選択ビジュアルモードに入ります。次にカーソルを "3j" で -3行下に動かし、"w"を押して1単語分右に移動します。この状態では、最後の列の先 -頭を範囲に含んでいますので、"h" でそれをはずします。"d" を押すと、選択してあっ -た範囲が削除されます。 +3 行下に動かし、"w" を押して 1 単語分右に移動します。この状態では、最後の列の +先頭が範囲に含まれているので、"h" でそれをはずします。"d" を押すと、選択範囲が +削除されます。 反対側に移動 ------------ -ビジュアルモードで選択中に、選択範囲の反対側(始点)にカーソルを動かしたい時は、 -"o"を押します (o は "other end" の意味です) 。カーソルは始点に動き、始点を自由 -に変更できるようになります。もう一度 "o" を押すと、元の終点側に戻ります。 +ビジュアルモードで選択中に、選択範囲の反対側(始点)にカーソルを動かしたいとき +は、"o" を押します (o は "other end" の意味です) 。カーソルは始点に動き、始点 +を自由に変更できるようになります。もう一度 "o" を押すと、元の終点側に戻ります。 -ブロック選択のときは4隅が存在します。"o" は始点と終点を斜めに動くだけです。同 -じ行の反対側に移動するには "O" を使ってください。 +ブロック選択のときは 4 隅が存在します。"o" は始点と終点を斜めに動くだけです。 +同じ行の反対側に移動するには "O" を使ってください。 Note: ビジュアルモードの "o" と "O" はノーマルモードのコマンドとはまったく違う 動作なので注意してください。ノーマルモードではカーソル行の上や下に空行を作る機 @@ -275,17 +274,16 @@ Note: ビジュアルモードの "o" と "O" はノーマルモードのコマ コマンドを使うと、そのテキストをペースト (張り付け。Vimではこれをプットと呼び ます) できます。 どのように動くかを見てみましょう。まず、削除したい行にカーソルを移動し、"dd" -コマンドでその行を削除します。次にプットしたい場所にカーソルを動かして "p" を -押します。先ほど削除した行の内容がカーソルの下の行に挿入されます。 +コマンドでその行を削除します。次に、プットしたい場所にカーソルを動かして "p" +を押します。先ほど削除した行がカーソルの下に挿入されます。 最初 削除後 プット後 a line a line a line line 2 dd line 3 p line 3 line 3 line 2 -行全体を削除した時にその内容を保存していたので、"p"コマンドを使った時にその -内容がカーソルの下の行にプットされたわけです。行の一部(単語など)を削除した -場合は、"p"コマンドはカーソルの直後にそれをプットします。 +行全体を削除したので、"p" コマンドにより行が挿入されました。行の一部 (単語な +ど) を削除した場合は、"p"コマンドはカーソルの直後にそれがプットされます。 Some more boring try text to out commands. ~ ----> @@ -302,24 +300,24 @@ Note: ビジュアルモードの "o" と "O" はノーマルモードのコマ その他のプット -------------- -"P"コマンドは"p"と同じですが、カーソルの前にプットします。直前に"dd"コマン -ドで削除をしていれば、"P"はカーソルの上にその行をプットします。"dw"で単語を -削除した場合は、カーソルの直前にプットします。 +"P" コマンドは "p" と同じですが、カーソルの前にプットします。直前に"dd"コマン +ドで行を削除したなら、カーソルの上にその行がプットされます。"dw" で単語を削除 +した場合は、カーソルの直前にプットされます。 プットは何回でも好きなだけ繰り返せます。同じ文が毎回使われます。 -"p"も"P"もカウンタを指定できます。指定しただけ、プット処理を繰り返します。例え -ば、"dd"の後に、"3p"を実行すると、削除した行のコピーが3つプットされます。 +"p"も"P"もカウンタを指定できます。指定しただけ、プット処理が繰り返されます。例 +えば、"dd"の後に "3p" を実行すると、削除した行のコピーが 3 つプットされます。 -2文字の入れ換え +2 文字の入れ換え ---------------- -入力している時には、指が頭を追い越してしまうことがしばしばあります。その結果 -は、"the"が"teh"になるといった類のタイポ(打ち間違い)です。Vimではこの種の間違 -いを簡単に修正できます。カーソルを"teh"の"e"の上に置いて、"xp"と打てばよいので -す。これは、"x"で"e"の文字を削除してレジスタに入れ、"p"でカーソル ("h"の上にあ -る) の後ろにレジスタ内容をプットするのです。 +入力しているときに、指が頭を追い越してしまうことがしばしばあります。その結果、 +"the" を "teh" とタイポ (打ち間違い) したりすることがあります。Vim ではこの種 +の間違いを簡単に修正できます。カーソルを "teh" の "e" の上に置いて、"xp" と打 +てばよいのです。"x" で "e" の文字を削除してレジスタに入れ、"p" で ("h"の上にあ +る) カーソル の後ろにレジスタ内容をプットするのです。 teh th the ~ x p @@ -329,14 +327,14 @@ Note: ビジュアルモードの "o" と "O" はノーマルモードのコマ テキストを別の場所にコピーするには、それを削除して、"u" で削除を取り消し、他の 場所で "p" を使いプットすることもできますが、ヤンク (yank) を使えばもっと簡単 -です。"y" オペレータは文字列をレジスタにコピーします。その文字列は "p" コマン -ドでプットできます。 +です。"y" オペレータで文字列をレジスタにコピーできます。その文字列は "p" コマ +ンドでプットできます。 コピーのことを Vim ではヤンクと呼びます。文字 "c" は既に変更オペレータのために -使われていましたが、"y" は利用可能でした。"y" キーを覚えやすくするするために、 -コピー操作をヤンク (yank) と呼びます。 +使われていたので "y" を使うことになったわけですが、"y" キーを覚えやすくするた +めにコピー操作をヤンク (yank) と読んでいます。 "y" はオペレータなので、"yw" とすれば単語をヤンクできます。カウンタも当然指定 -可能です。2単語をヤンクするには、"y2w" とします。例を示しましょう。 +できます。2 単語をヤンクするには、"y2w" とします。例を示しましょう。 let sqr = LongVariable * ~ --------------> @@ -347,10 +345,10 @@ Note: ビジュアルモードの "o" と "O" はノーマルモードのコマ let sqr = LongVariable * LongVariable ~ -"yw" は単語の後の空白まで含むので気をつけてください。それが嫌なら、"ye" を使っ -てください。 +"yw" は単語の後の空白まで含まれるので注意してください。それが嫌なら、"ye" を +使ってください。 -"yy" コマンドは "dd" が行削除するのと同様に、行全体をヤンクします。ただ、"D"は +"yy" コマンドは "dd" が行削除するのと同様に、行全体をヤンクします。ただ、"D"が 行末まで削除するのに対して、"Y" は "yy" と同じ動きになります。この点は気をつけ てください。行末までヤンクしたい時には "y$" を使ってください。 @@ -367,18 +365,18 @@ GUI版の Vim (gvim) を使っている場合は、[編集] メニューに [コ 使ってください。選択文字列がクリップボードにコピーされるので、それを他のプログ ラムにペーストできます。もちろん Vim 自身でも使えます。 -他のアプリケーションでクリップボードに文字列をコピーしておけば、Vim の [編集]- -[貼り付け] メニューでそれをペーストできます。これはノーマルモードでも挿入モー -ドでも機能します。ビジュアルモードでは、選択文字列がペーストされた文字列に置換 -されます。 +他のアプリケーションでクリップボードに文字列をコピーすれば、Vim の [編集]-[貼 +り付け] メニューでそれをペーストできます。これはノーマルモードでも挿入モードで +も機能します。ビジュアルモードでは、選択文字列がペーストされた文字列に置換され +ます。 -メニューの [編集]-[切り取り] はクリップボードにプットする前に文字列を削除しま -す。[コピー]、[切り取り]、[貼り付け] の3つはポップアップメニューでも (ポップ -アップメニューが出る時だけですよ、当り前ですが) 使えます。お使いの Vim にツー -ルバーがあれば、そこにも同じ項目があるはずです。 +メニューの [編集]-[切り取り] はクリップボードにプットする前に文字列が削除され +ます。[コピー]、[切り取り]、[貼り付け] の 3 つはポップアップメニューでも使えま +す (ポップアップメニューが利用可能な場合のみ)。ツールバーが利用可能なら、そこ +にも同じ項目があるはずです。 -GUI を使っていない場合やメニューを使うのが嫌いな場合は他の方法を使うしかありま -せん。普通の "y" や "p" コマンドを使う前に "* (ダブルクオート+アステリスク)を +GUI を使っていない場合やメニューを使いたくない場合は他の方法を使うしかありませ +ん。普通の "y" や "p" コマンドを使う前に "* (ダブルクオート + アステリスク)を 指定するのです。行を丸ごとクリップボードにコピーするには次のようにします: > "*yy @@ -393,8 +391,8 @@ GUI を使っていない場合やメニューを使うのが嫌いな場合は ============================================================================== *04.8* テキストオブジェクト -単語の真ん中にカーソルがあり、その単語を削除したい場合、"dw" をする前にカーソ -ルをその単語の先頭に戻す必要があります。"daw" を使うともっと簡単です。 +単語の真ん中にカーソルがある場合、その単語を削除するには "dw" を実行する前に +カーソルを単語の先頭に戻す必要があります。"daw" を使うともっと簡単です。 this is some example text. ~ daw @@ -406,9 +404,9 @@ word" の意味です。つまり "daw" は "Delete A Word" という意味に は、単語の後の空白も削除されます (単語が行末にある場合は、行末までのすべての空 白が削除されます)。 -テキストオブジェクトの利用は Vim での第3の変更方法です。オペレータ-モーション -方式とビジュアルモードは既に述べました。そこにオペレータ+テキストオブジェクト -方式を追加します。 +テキストオブジェクトは基本操作方法の一つです。。オペレータ-モーション方式とビ +ジュアルモードは既に述べました。そこにオペレータ + テキストオブジェクト方式が +加わります。 これはオペレータ-モーション方式と非常に似ていますが、オペレータ-モーション方式 では移動コマンドの前と後のカーソル位置がオペレータの範囲となっていたのに対し、 テキストオブジェクトではオブジェクト全体を対象とします。オブジェクトのどこに @@ -420,22 +418,22 @@ word" の意味です。つまり "daw" は "Delete A Word" という意味に is an example. Just ~ some text. ~ -2行目の先頭、"is an" の上に移動し、"cis"を実行してください: +2 行目の先頭、"is an" の上に移動し、"cis"を実行してください: Hello there. Just ~ some text. ~ -カーソルは1行目の空白の間にあります。ここで新たな文 "Another line." を入力し +カーソルは 1 行目の空白の間にあります。ここで新たな文 "Another line." を入力し ます: Hello there. Another line. Just ~ some text. ~ -"cis" は変更オペレータの "c" と、テキストオブジェクトの "is" に分けられます。 -"is" は "Inner Sentence" の意味です。"as" (a sentence) オブジェクトというのも -あります。"as" では文の後の空白を含みますが、"is" は含みません。文を削除する時 -に、前後の空白も同時に消したい場合は、"das" を使います。文を修正するため、空白 -を残しておきたい場合は、"cis"を使えばよいでしょう。 +"cis" は変更オペレータの "c" とテキストオブジェクトの "is" から成ります。"is" +は "Inner Sentence" の意味です。"as" (a sentence) オブジェクトというのもありま +す。"as" は文の後の空白を含みますが、"is" は含みません。文を削除するときに、前 +後の空白も同時に消したい場合は "das" を使います。文を修正するため、空白を残し +ておきたい場合は "cis"を使えばよいでしょう。 テキストオブジェクトはビジュアルモードでも使えます。テキストオブジェクトを選択 範囲に含めることができます。テキストオブジェクトを指定してもビジュアルモードは @@ -444,14 +442,14 @@ word" の意味です。つまり "daw" は "Delete A Word" という意味に 加できます。最後にオペレータを使って、選択した文を対象として、何らかの処理を行 います。 -テキストオブジェクトの機能一覧は |text-objects| をご覧ください。 +テキストオブジェクトの機能一覧は |text-objects| を参照してください。 ============================================================================== *04.9* 置換モード "R" コマンドを使うと置換モードに入ります。このモードでは、入力した文字が、カー ソル下の文字を置き換えます。このモードは <Esc> を押すまで続きます。 -例えば、"text" の1つ目の "t" で置換モードを開始したとします: +例えば、"text" の 1 つ目の "t" で置換モードを開始したとします: This is text. ~ Rinteresting.<Esc> @@ -463,17 +461,17 @@ word" の意味です。つまり "daw" は "Delete A Word" という意味に <Insert> キーで挿入モードと置換モードを切り換えることができます。 -<BS> キーで修正をしようとすると、元の文字が復元されます。直前に打った文字をア -ンドゥするような働きをします。 +<BS> キーで修正をしようとすると、元の文字が復元されます。直前に打った文字を +undo するような働きをします。 ============================================================================== *04.10* 終わりに オペレータ、移動コマンド、テキストオブジェクトを組み合せると、とてつもない数 -のコンビネーションを生み出すことができます。既に説明したように、N個のオペ -レータとM個の移動コマンドを使えば、N*M個のコマンドが作れるのです! +のコンビネーションを生み出すことができます。N 個のオペレータと M 個の移動コマ +ンドを組み合わせれば N * M 個のコマンドが作れるのです! -オペレータの一覧を探すのなら |operator| をご覧ください。 +オペレータの一覧は |operator| を参照してください。 テキストの一部を削除するには数多くの方法があります。ほんの一部ですが、よく使 うものを挙げておきましょう。 @@ -492,12 +490,12 @@ dgg ファイルの先頭まで削除 ばヤンクコマンドです。他のオペレータも同様です。 -他の章では触れる機会のない変更コマンドをいくつか挙げておきます。 +他の章では特に説明されない雑多な変更コマンドをいくつか挙げておきます: ~ カーソル位置の大文字/小文字を変更し、カーソルを次に進めます。 これは('tildeop'がオフの場合は)オペレータではありません。つま - りモーションコマンドを使うことはできません。ビジュアルモードで - 選択した文字列については全体が対象となります。 + りモーションコマンドと組み合わせることができません。ビジュアル + モードで使うと選択範囲のテキスト全体が変更されます。 I (大文字の"i"です) カーソルを行の最初の非空白文字に移動して 挿入モードを開始します。 diff --git a/ja/usr_05.jax b/ja/usr_05.jax index 663b282be..8cc699e06 100644 --- a/ja/usr_05.jax +++ b/ja/usr_05.jax @@ -10,8 +10,8 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> 設定の変更 -Vim は、あなたの好みに合わせてチューニングできます。本章では、好みの設定で Vim -を起動する方法を述べます。Vim にプラグインを追加して機能拡張したり、自分でマク +あなたの望みどおりに Vim をチューニングできます。本章では、好みの設定で Vim を +起動する方法を説明します。Vim にプラグインを追加して機能拡張したり、自分でマク ロを定義する方法も説明します。 |05.1| vimrc ファイル @@ -38,9 +38,9 @@ Vim は、あなたの好みに合わせてチューニングできます。本 :edit $MYVIMRC -vimrc ファイルがまだない場合は |vimrc| を参照し、vimrc ファイルを作る場所を確 -認してください。":version" コマンドを使っても、"ユーザ vimrc" の場所を表示でき -ます。 +vimrc ファイルがまだない場合は |vimrc| を参照して vimrc ファイルを作成する場所 +を確認してください。":version" コマンドで表示される "ユーザ vimrc" の表示を見 +て確認することもできます。 Unix と Macintosh ではこのファイルを使ってください。 @@ -74,8 +74,8 @@ vimrc ファイルには、コロン (:) を押してから入力するコマン $VIMRUNTIME/vimrc_example.vim ~ この節では、このファイルで使われているコマンドを説明します。自分用の設定をする -ときの参考になると思います。しかし、全てを説明するわけではないので、詳しいこと -は ":help" コマンドで調べてください。 +ときの参考にしてください。しかし、全てを説明するわけではないので、詳しいことは +":help" コマンドで調べてください。 > set nocompatible @@ -87,8 +87,8 @@ vimrc ファイルには、コロン (:) を押してから入力するコマン > set backspace=indent,eol,start < -挿入モードで <BS> を使った場合に、どの文字を削除できるかを指定しています。コン -マで区切られた三つの部分はそれぞれ次の文字の削除を許可しています。 +挿入モードで <BS> を使って削除できる文字を指定しています。コンマで区切られた三 +つの部分はそれぞれ次の文字の削除を許可しています。 indent 行頭の空白 eol 改行 start 挿入モード開始位置より手前の文字 @@ -116,8 +116,8 @@ vimrc ファイルには、コロン (:) を押してから入力するコマン set history=50 -コマンドを50個分、検索パターンを50個分、ヒストリ(履歴)として残します。覚えさ -せたい量を増減したいときはこの値を変更してください。 +コマンドを50個分、検索パターンを50個分、ヒストリ(履歴)として残します。記録の容 +量を増減したいときはこの値を変更してください。 > set ruler @@ -128,9 +128,9 @@ vimrc ファイルには、コロン (:) を押してから入力するコマン set showcmd 入力途中の (まだ実行していない) コマンドを Vim ウィンドウの右下 (rulerの左側) -に表示します。例えば、"2f" と入力したとき、Vim は検索したい文字の入力を待って -いて、画面の右下には "2f" と表示されます。次に "w" と入力すると、"2fw" という -コマンドが完成するので、それが実行され、画面の "2f" という表示も消去されます。 +に表示します。例えば、"2f" と入力したとき、Vim は検索文字の入力を待っていて、 +画面の右下には "2f" と表示されます。次に "w" と入力すると、"2fw" というコマン +ドが完成するので、それが実行され、画面の "2f" という表示も消去されます。 +-------------------------------------------------+ |text in the Vim window | @@ -151,8 +151,8 @@ vimrc ファイルには、コロン (:) を押してから入力するコマン キーマップを定義しています。詳しくは次の節で述べます。ここでは、"gq" オペレー タのフォーマット機能を "Q" コマンドとして定義しています。"Q" の動作が Vim 4.0 -以前と同じになります。上の定義をしなければ "Q" は EX モードへの移行コマンドで -すが、それは必要ないでしょう。 +以前と同じになります。実際の "Q" は EX モードへの移行コマンドですが、おそらく +必要ないでしょう。 > vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR> @@ -182,10 +182,10 @@ vimrc ファイルには、コロン (:) を押してから入力するコマン 開いた場合は、拡張子の ".c" を見てファイルタイプは "c" だと判断します。ファ イルの一行目が "#!/bin/sh" で始まっていた場合は、ファイルタイプは "sh" だと 判断します。 - 検出されたファイルタイプは構文強調と次の2つの項目で使われます。 + 検出されたファイルタイプは構文強調と次の 2 つの項目で使われます。 |filetypes|参照。 -2. ファイルタイププラグインファイルを使う +2. ファイルタイププラグインを使う ファイルを開いたときに、ファイルタイプに応じたオプションが設定されます。例 えば、"c" ファイルの場合なら自動的にインデントしてくれる'cindent' オプショ ンは欠かせないでしょう。こういった、一般的に便利な設定がファイルタイププラ @@ -214,15 +214,15 @@ textwidth=78" はそのファイルの 'textwidth' オプションを 78 に設 オートコマンドをもう一つ。ファイルを読み込んだ直後に実行されるオートコマンドを 定義しています。後ろのごちゃごちゃした部分は「'" マークが定義されているかどう -かをチェックし、定義があれば、そこにジャンプする」という意味です。コマンドを複 -数行に分けて書くために、行頭に "\" を書いています。行がやたらと長くなるのを防 -ぐためです。|line-continuation|参照。"\" は Vim スクリプト内でのみ使えます。コ -マンドラインで入力するときは使えません。 +かをチェックし、定義があればそこにジャンプする」という意味です。コマンドを複数 +行に分けて書くために、行頭に "\" を書いています。行がやたらと長くなるのを防ぐ +ためです。|line-continuation|参照。"\" は Vim スクリプト内でのみ使えます。コマ +ンドラインで入力するときは使えません。 ============================================================================== *05.3* 簡単なマップ -マップを使うと、複数のコマンドを1つのキー繰作にまとめることができます。例え +マップを使うと、複数のコマンドを 1 つのキー繰作にまとめることができます。例え ば、ある単語を {} で囲みたいとします。つまり、"amount" を "{amount}" にしたい わけです。:map コマンドを使って、その操作を <F5> キーに割り当てることができま す。次のように書きます。 > @@ -230,12 +230,12 @@ textwidth=78" はそのファイルの 'textwidth' オプションを 78 に設 :map <F5> i{<Esc>ea}<Esc> < Note: - このコマンドを入力する時にはちょっと注意してください。 - <F5>は4文字の文字列として入力してください。<Esc>も同じで、<Esc>キー - を押すのではなく、5文字の文字列として入力してください。このマニュ - アルを読むときはその違いに注意してください ! + このコマンドを入力するときの注意点。 + <F5> 見たままのは 4 文字の文字列として入力してください。<Esc> も同じで + す。<Esc> キーを押すのではなく、 5 文字の文字列として入力してください。 + このマニュアルを読むときはその違いに注意してください ! -この定義内容を分解してみましょう。 +この定義を分解してみましょう。 <F5> ファンクションキーのF5です。このキーを押すと、定義してあるコマ ンドが実行されます。 @@ -248,9 +248,9 @@ textwidth=78" はそのファイルの 'textwidth' オプションを 78 に設 この ":map" コマンドを実行した後は、カーソルを単語の先頭に動かして F5 キーを押 すだけで単語の両側に {} を追加できます。 -この例では、コマンドは1キーでしたが、どの文字列でも割り当てることができます。 +この例では、コマンドは 1 キーでしたが、どの文字列でも割り当てることができます。 ただし、Vim のコマンドと同じ文字列を割り当てると、元のコマンドが使えなくなるの -で、それは避けた方がいいでしょう。 +で、それは避けた方が無難です。 複数キーを組み合わせるときには、バックスラッシュ(日本語環境では円記号)がよく使 われます。マップをたくさん定義したい場合は、複数文字を使ってください。例えば、 単語を () で囲むには "\p" で、単語を {} で囲むには "\c" で、といったことができ @@ -259,22 +259,22 @@ textwidth=78" はそのファイルの 'textwidth' オプションを 78 に設 :map \p i(<Esc>ea)<Esc> :map \c i{<Esc>ea}<Esc> -"\" と "p" はくっつけてください。こうすれば Vim は2文字のマップだと認識できま -す。 +"\" と "p" はくっつけてください。そうすれば Vim は 2 文字のマップだと認識でき +ます。 -引数なしの ":map" コマンドは現在のマップ定義の一覧を表示します。表示されたマッ -プは、少なくともノーマルモードで使えます。より詳しくは|40.1|章を参照してくださ -い。 +引数なしの ":map" コマンドで現在のマップ定義の一覧を表示できます。表示された +マップは、少なくともノーマルモードで使えます。より詳しくは|40.1|章を参照してく +ださい。 ============================================================================== *05.4* プラグインの追加 *add-plugin* *plugin* -Vim はプラグインを追加することで機能拡張できます。プラグインといっても、Vimが -起動されたときに自動的に読み込まれる、ただの Vim スクリプトファイルです。ファ +プラグインを追加することで機能拡張できます。プラグインといっても、Vimが起動さ +れたときに自動的に読み込まれるだけの、ただの Vim スクリプトファイルです。ファ イルをプラグインディレクトリにコピーするだけで簡単にプラグインを追加できます。 {|+eval|が有効な場合のみ利用できます} -プラグインには次の2種類があります。 +2 種類のプラグインがあります。 グローバルプラグイン 全種類のファイルで使われるプラグイン ファイルタイププラグイン 特定タイプのファイルでのみ使われるプラグイン @@ -294,9 +294,9 @@ Vim を起動すると、自動的にいくつものグローバルプラグイ *add-global-plugin* グローバルプラグインを追加すると、いつでもその機能を使えるようになります。 -グローバルプラグインの追加は次の2つを行うだけです。 +グローバルプラグインを追加するのは簡単です。 1. プラグインを入手する -2. それを正しいディレクトリに入れる +2. 正しいディレクトリにコピーする グローバルプラグインを入手する @@ -338,13 +338,13 @@ Unixの場合の例 (プラグインディレクトリがまだない場合) > plugin/ ディレクトリ以下にファイルを置く代わりに、それらのファイルを plugin/ ディレクトリ以下のサブディレクトリに置くこともできます。例えば、Perl 用のプラ -グインをすべて "~/.vim/plugin/perl/*.vim" に置くのはどうでしょうか。 +グインを "~/.vim/plugin/perl/*.vim" に置いたりできます。 ファイルタイププラグイン *add-filetype-plugin* *ftplugins* ------------------------ -Vim の配布パッケージにはいろんなファイルタイプ用のプラグインが入っています。 +Vim の配布パッケージにはたくさんのファイルタイププラグインが入っています。 次のコマンドで利用開始できます。 > :filetype plugin on @@ -352,9 +352,10 @@ Vim の配布パッケージにはいろんなファイルタイプ用のプラ これだけです。|vimrc-filetype|も参照してください。 使いたいファイルタイププラグインがない場合や、標準より良いものを見つけた場合 -は、追加できます。ファイルタイププラグインの追加は次の手順で行います: +は、追加することもできます。ファイルタイププラグインの追加は次の手順で行いま +す: 1. プラグインを入手する -2. それを正しいディレクトリに入れる +2. 正しいディレクトリにコピーする ファイルタイププラグインを入手する @@ -372,9 +373,9 @@ Vim の配布パッケージにはいろんなファイルタイプ用のプラ ファイルタイププラグインは正しいディレクトリにコピーするだけで追加できます。 ディレクトリの場所はグローバルプラグインと同じですが、ディレクトリ名の最後の部 -分が "ftplugin" となります。例えば "staff" ファイルタイプ用のプラグインを見つ -け、Unixシステムに入れるとしましょう。入手したファイルを次のコマンドで -ftplugin ディレクトリに移します: > +分が "ftplugin" となります。例えば "staff" ファイルタイプ用のプラグインを Unix +システムに入れるとしましょう。入手したファイルを次のコマンドで ftplugin ディレ +クトリに移します: > mv thefile ~/.vim/ftplugin/stuff.vim @@ -385,13 +386,13 @@ ftplugin ディレクトリに移します: > mv thefile ~/.vim/ftplugin/stuff_too.vim アンダースコアはファイルタイプの名前とそれ以外を区切るのに使います。アンダース -コア以降はどんな文字列でも構いません。"otherstuff.vim" といった名前にしてもう -まく動きません。そのファイルは "otherstuff" というファイルタイプのときにだけ -ロードされます。 +コア以降はどんな文字列でも構いません。しかし、"otherstuff.vim" といった名前に +した場合はうまく動きません。そのファイルは "otherstuff" というファイルタイプの +ときにだけロードされます。 -MS-DOS では長いファイル名が使えません。2 つ目のプラグインを追加するときに、 -ファイルタイプ名が 6 文字以上だと問題が生じます。そういうときはさらにディレク -トリを掘ってください: > +MS-DOS では長いファイル名が使えません。プラグインを追加するときに、ファイルタ +イプ名が 6 文字以上だと問題が生じます。そういうときはさらにディレクトリを掘っ +てください: > mkdir $VIM/vimfiles/ftplugin/fortran copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim @@ -428,17 +429,17 @@ Note: ファイルの拡張子は必ず ".vim" にしてください。 ============================================================================== *05.5* ヘルプファイルの追加 *add-local-help* *matchit-install* -運が良ければ、プラグインにはヘルプファイルが添付されています。ここでは、ヘル -プファイルのインストール方法を述べます。 そうすれば、新しいプラグインのヘル -プを簡単に探せますね。 +運が良ければ、プラグインにはヘルプファイルが添付されています。ここでは、ヘルプ +ファイルのインストール方法を説明します。 インストールしておけば新しいプラグイ +ンのヘルプを簡単に調べることができます。 "matchit.vim" プラグイン (Vim の配布パッケージに入っています) を例にやってみま しょう。このプラグインは "%" コマンドを拡張し、対応する HTML タグや、Vim スク -リプトの if/else/endif間でジャンプできるようになります。これはとても便利です。 -後方互換ではないので、標準では有効になっていません。 +リプトの if/else/endif間でジャンプできるようにします。これはとても便利です。後 +方互換性がないので、標準では有効になっていません。 このプラグインにはヘルプ "matchit.txt" が付属しています。最初にプラグイン本体 -を適切なディレクトリにコピーしましょう。今回は Vim の中からやってみます。です -ので、$VIMRUNTIME が使えます。(ディレクトリがすでにある場合は、"mkdir" コマン -ドを省略してください。) > +を適切なディレクトリにコピーしましょう。今回は Vim の中から操作するので、 +$VIMRUNTIME が使えます。(ディレクトリがすでにある場合は、"mkdir" コマンドを省 +略してください。) > :!mkdir ~/.vim :!mkdir ~/.vim/plugin @@ -487,7 +488,7 @@ Note: ファイルの拡張子は必ず ".vim" にしてください。 すとそこにジャンプできます。もう一度 <Enter> を押すか、CTRL-O を押すと戻れま す。 -ここでオプションの値を変えられます。例えば、"displaying text" グループに移動 +その場でオプションの値を設定できます。例えば、"displaying text" グループに移動 し、カーソルを次の行まで持っていきます: set wrap nowrap ~ @@ -509,7 +510,7 @@ Note: ファイルの拡張子は必ず ".vim" にしてください。 "$" コマンドでカーソルを "0" の上に動かし、"r5" で値を 5 に変更します。<Enter> を押すと、その値が設定されます。カーソルを動かしてみると、画面の端までカーソル -が達する前にスクロールが始まることに気づくでしょう。これは 'scrolloff' オプ +が達する前にスクロールが始まることに気づくと思います。これは 'scrolloff' オプ ションのしわざです。ウィンドウの端からのオフセットを設定し、スクロールが開始す る位置を指定しています。 @@ -523,8 +524,8 @@ Vim には本当に大量のオプションがあります。ほとんどのオ :help 'wrap' -オプションの値がごしゃごしゃになってしまったら、初期設定に戻すことができます。 -初期設定に戻すのにはアンパサンド(&)を使います: > +オプションの値がおかしくなってしまったら、初期設定に戻すことができます。初期設 +定に戻すのにはアンパサンド(&)を使います: > :set iskeyword& @@ -555,7 +556,7 @@ Vim には本当に大量のオプションがあります。ほとんどのオ :set whichwrap=b,s -ここでは、<BS> キーで行頭から1つ上の行の行末へ動くことを許可しています。ま +ここでは、<BS> キーで行頭から 1 つ上の行の行末へ動くことを許可しています。ま た、<Space> キーで行末から次の行の行頭への移動することを許可しています。 カーソルキーの <Left> と <Right> もこのコマンドで折り返しを許可できます: > diff --git a/ja/usr_06.jax b/ja/usr_06.jax index 51bb5eeda..fc8c48d89 100644 --- a/ja/usr_06.jax +++ b/ja/usr_06.jax @@ -10,9 +10,10 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> 構文強調表示 -白黒だけのテキストは退屈です。カラー表示すれば、ファイルも生き生きと見えます。 +白黒だけのテキストは退屈です。カラー表示すればファイルも生き生き見えてきます。 これは単に見た目が良いだけではなく、作業のスピードアップにもつながります。意味 -のある文字列は違う色で表示しましょう。そして、画面と同じ色で印刷しましょう。 +のある文字列は違う色で表示しましょう。そして、画面と同じ色で印刷しましょ +う。 |06.1| 構文強調表示を有効にする |06.2| 色がつかない?変な色になる? @@ -35,7 +36,7 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> これで、カラー表示になるはずです。ファイルタイプが自動的に特定され、適切な構文 強調がロードされます。すると、コメントは青、キーワードは茶色、文字列は赤、と いった具合にカラー表示になります。ファイルが見やすくなりましたね。しばらくする -と、白黒のテキストがあなたを遅くしていたことに気づくでしょう。 +と、白黒のテキストがあなたの足を引っ張っていたことに気づくでしょう。 常に構文強調表示を使いたい場合は、":syntax enable" コマンドを|vimrc|ファイルに 追加してください。 @@ -75,38 +76,38 @@ GUI バージョンのときだけ使いたい場合は、":syntax enable" を | ではありません) - ファイルタイプが識別できなかった。 - いくら Vim でも古今東西のファイルタイプを知っているわけではありませ - ん。ファイルが使っている言語を伝えるのが難しい場合もあります。このコマ - ンドを使ってみてください。 > + いくら Vim でも古今東西のファイルタイプをすべて知っているわけではあり + ません。ファイルが言語を特定するのが困難な場合もあります。このコマンド + を使ってみてください。 > :set filetype < - この結果が"filetype="ならば、ファイルタイプが認識できなかったというこ - とです。ファイルタイプの指定は手動でもできます。 > + この結果が "filetype=" ならば、ファイルタイプが認識できなかったという + ことです。手動でファイルタイプを指定することもできます。 > :set filetype=fortran < どんなタイプが使えるかは、$VIMRUNTIME/syntax のディレクトリを見て ください。GUI なら、[シンタックス]メニューも使えます。 - ファイルタイプの設定はモード行(|modeline|)でも出来ます。モード行で - 指定すればそのファイルを開くと必ずカラー表示になります。例えば、 - Makefileならば次の行が使えます。(ファイルの最初か最後に近い場所に書い - てください): > + ファイルタイプの設定はモード行(|modeline|)でも出来ます。モード行で指定 + すれば、そのファイルを開いたときにカラー表示が必ず設定されます。例え + ば、Makefile なら次のように書きます。(ファイルの最初か最後に近い場所に + 書いてください): > # vim: syntax=make < あなたはファイルタイプの判定方法を知っているかもしれませんね。ほとんど のファイルは拡張子を見ればファイルタイプがわかります。 - ファイルタイプを検出して Vim に通知する方法については|new-filetype|を - 参照してください。 + ファイルタイプを検出して設定する方法については|new-filetype|を参照して + ください。 -- そのファイルタイプ用の構文定義がない +- ファイルタイプ用の構文定義がない 似ているファイルタイプを手動で設定して使ってみてください。それでも不満 な場合は、自分で構文定義ファイルを書くこともできます。詳しくは |mysyntaxfile|を参照してください。 -色がおかしくなる場合もあります: +色がおかしい場合: - 色付きの文字が非常に読みづらい Vim は使われている背景色を推測します。黒 (もしくは同様の暗色) なら、明 @@ -183,7 +184,7 @@ GUI バージョンのときだけ使いたい場合は、":syntax enable" を | colorscheme mine -次のコマンドで、よく使われる色の組み合わせの見栄えを確認できます: > +次のコマンドで、よく使われる色の組み合わせを表示して、見栄えを確認できます: > :runtime syntax/colortest.vim diff --git a/ja/usr_07.jax b/ja/usr_07.jax index 69248015d..796f32964 100644 --- a/ja/usr_07.jax +++ b/ja/usr_07.jax @@ -42,17 +42,17 @@ TRANSLATOR: nakadaira <hopper2@nanameue.jp> Note: エラーメッセージの先頭には エラーID が表示されます。エラーの意味や原因 - がわからない場合は、この ID をヘルプで引いてください。上の場合なら、こ - のようにします: > + がわからない場合は、この ID をヘルプで引いてください。上記エラーの場合 + は、このようにします: > :help E37 -このエラーを回避するには、次のコマンドで、ファイルを保存してください: > +このエラーを回避するには、次のコマンドでファイルを保存してください: > :write -あるいは、変更を破棄して、新しいファイルを開くこともできます。(!) 文字を使って -ください: > +あるいは、変更を破棄して新しいファイルを開くこともできます。(!) 文字を使ってく +ださい: > :edit! foo.txt @@ -72,8 +72,8 @@ Vim を起動するときに、複数のファイルを指定することがで vim one.c two.c three.c このコマンドは Vim を起動し、三つのファイルを開くように指示しています。Vim は -一つ目のファイル (one.c) だけを表示します。このファイルの編集が終わり、次の -ファイル (two.c) を編集するにはこのコマンドを使います。 > +一つ目のファイル (one.c) だけを表示します。そのファイルの編集が終わり、次のファ +イル (two.c) を編集したい場合はこのコマンドを使います: > :next @@ -83,8 +83,8 @@ Vim を起動するときに、複数のファイルを指定することがで :next! -でも、たいていは変更を保存してから次のファイルを開くことでしょう。それには専用 -のコマンドが用意されています。 > +しかしほとんどの場合、変更を保存してから次のファイルを開くと思います。それには +専用のコマンドが用意されています。 > :wnext @@ -169,15 +169,15 @@ Vim を再起動しなくても、ファイルリストを変更できます。 リストの最初のファイルがまず開かれます。ここでも、現在のファイルの変更をまだ保 存していない場合は、ファイルを保存するか、":args!" (! が付いています) を使って -変更を破棄してください。 +変更を破棄する必要があります。 最後のファイルまで編集した? ---------------------------- *arglist-quit* ファイルリストが使われると、Vim は、すべてのファイルが編集対象だと判断します。 -間違って Vim を終了してしまうことがないように、最後のファイルをまだ開いていな -いのに終了しようとした場合は、エラーメッセージを表示します。 +間違って Vim を終了してしまうことがないように、すべてのファイルをまだ開いてい +ないのに終了しようとした場合は、エラーメッセージが表示されます: E173: 編集すべきファイルがあと 46 個あります。 ~ @@ -205,8 +205,9 @@ CTRL-^ を使うと二つのファイル間を素早く移動できます(日本 すると、"three.c" になります。CTRL-^ コマンドはファイルリスト中での現在地を変 更しません。":next" や ":previous" のようなコマンドだけが現在地を変更します。 -直前に編集していたファイルのことを 代替ファイル ("alternate" file) と言います。 -Vim の起動直後は代替ファイルがまだないため CTRL-^ は動作しません。 +直前に編集していたファイルのことをオルタネートファイル (alternate file) と言い +ます。Vim の起動直後はオルタネートファイルがまだ無いため CTRL-^ は動作しませ +ん。 定義済マーク @@ -218,7 +219,7 @@ Vim の起動直後は代替ファイルがまだないため CTRL-^ は動作 `" このコマンドを実行すると、以前にファイルを開いていたときにいた場所にカーソルが -移動します。もう一つは、最後に変更を加えた場所を覚えているマークです。 > +移動します。もう一つは、最後に変更を加えた場所に設定されたマークです。 > `. @@ -235,23 +236,23 @@ Vim の起動直後は代替ファイルがまだないため CTRL-^ は動作 -------------- 4 章 (|4.1|) では "mx" でマークを付け、"`x" でその場所にジャンプする方法を説明 -しました。そのマークはそのファイルの中だけで使えます。別のファイルを開いて、そ -れに同じマークを付けても、マークはそのファイルに固有のものとなります。つまり各 -ファイルは各々一組のマークを持っていて、ファイル内に閉じているということです。 -いままでは、マークに小文字を使ってきましたが、大文字のマークも使えます。 +しました。そのマークはファイルの中だけで使えます。別のファイルを開いて、それに +同じマークを付けても、マークはそのファイルに固有のものとなります。つまり各ファ +イルはそれぞれのマークを持っていて、ファイル内に閉じているということです。いま +までは、マークに小文字を使ってきましたが、大文字のマークも使えます。 大文字のマークはグローバルで、どのファイルからでも使えます。例えば "foo.txt" -というファイルを開き、"50%" コマンドでファイルの真ん中にジャンプして、そこに F -というマークを付けたとします。 > +というファイルを開き、"50%" コマンドでファイルの真ん中にジャンプして、その場所 +に F というマークを付けたとします: > 50%mF -次に "bar.txt" を開き、最終行にマーク B を付けます。 -> +次に "bar.txt" を開き、最終行にマーク B を付けます: > + GmB さて、ここで "'F" コマンドを使うと、いきなり foo.txt の真ん中にジャンプできま -す。さらに、他のファイルを開いてから、"'B" を入力すると、bar.txt の行末に移動 -できます。 +す。さらに、他のファイルを開いてから "'B" を入力すると、bar.txt の行末に移動で +きます。 他の場所を設定するまで、ファイルマークは同じ場所を記憶しています。そのため、一 度マークを付ければ、何時間も編集を行ってからでもそのマークに戻って来ることがで @@ -287,10 +288,10 @@ C といった具合です。 :set backupext=.bak これで、バックアップファイルの名前が data.txt.bak になります。 -もう一つのオプション 'backupdir' にも触れておきましょう。これはバックアップ +もう一つのオプション 'backupdir' についても説明しましょう。これはバックアップ ファイルを保存するディレクトリを指定するオプションです。初期設定ではバックアッ -プは元ファイルと同じディレクトリに保存されますが、たいていの場合はこれで問題な -いはずです。 +プは元ファイルと同じディレクトリに保存されます。たいていの場合はこれで問題ない +はずです。 Note: 'writebackup' がオンの場合、'backup' がオフでもバックアップファイルは @@ -325,9 +326,9 @@ C といった具合です。 ここではファイルから別のファイルにテキストをコピーする方法を説明します。簡単な 例で始めましょう。コピーしたいテキストを含んでいるファイルを開きます。テキスト -の先頭にカーソルを移動して "v" を押します。ビジュアルモードが開始しました。テ -キストの末尾までカーソルを移動して "y" を押します。これでテキストがヤンク (コ -ピー) されました。 +の先頭にカーソルを移動して "v" を押すとビジュアルモードが開始します。テキスト +の末尾までカーソルを移動して "y" を押します。これでテキストがヤンク (コピー) +されました。 例えば、上の段落をコピーするには、次のようにします。 > @@ -386,9 +387,9 @@ f (fはfirstのつもり) にヤンクしてみましょう。 > どのレジスタからプットしても構いません。他のテキストをヤンクし直さない限り、レ ジスタの内容は変わらないので、同じレジスタを何度でも好きなだけプットできます。 -テキストを削除するときにも、レジスタを指定できます。テキストを何ヶ所か移動する -ときなどに使ってください。例えば、単語を削除 (delete-a-word) してその内容をレ -ジスタ w に入れるには次のようにします。 > +テキストを削除するときにも、レジスタを指定できます。テキストを何ヶ所かに移動す +るときなどに使ってください。例えば、単語を削除 (delete-a-word) してその内容を +レジスタ w に入れるには次のようにします。 > "wdaw @@ -402,9 +403,9 @@ f (fはfirstのつもり) にヤンクしてみましょう。 > :write >> logfile -これは編集中のファイルの内容を "logfile" の末尾に追記します。テキストをコピー -して、"logfile" を開き、テキストをプットする手間が省けます。つまり、作業を 2 -手節約できます。ただし、ファイルの末尾への追加しかできません。 +カレントファイルの内容が "logfile" の末尾に追記されます。テキストをコピーして、 +"logfile" を開き、テキストをプットするより簡単です。作業を 2 手節約できます。 +ただし、ファイルの末尾への追加しかできません。 ファイルの一部だけ追記したい場合は、ビジュアルモードでテキストを選択してから ":write" を実行してください。テキストを選択する方法は他にもありますが、10 章で 説明します。 @@ -423,14 +424,14 @@ Unix なら、次のコマンドも同じ意味になります。 > view file -これで "file" が読み込み専用モードで開きます。":w" をしようとしても、エラー -メッセージが表示され保存はされません。 -ファイルに変更を加えようとすると、Vim は次のような警告を表示します。 +"file" が読み込み専用モードで開きます。":w" をしようとしても、エラーメッセージ +が表示され保存はされません。 +ファイルに変更を加えようとすると、次のような警告が表示されます。 W10: 警告:読込専用ファイルを変更します ~ -警告は出ますが、変更は可能です。これは、例えばファイルを読みやすくするために、 -フォーマットできるようにするためです。 +警告は出ますが、変更は可能です。これは、例えばファイルを読みやすくフォーマット +したりするためです。 読み込み専用モードであることを忘れて、ファイルを修正してしまったようなときは、 write コマンドに ! を付けて強制保存してください。 @@ -453,9 +454,9 @@ write コマンドに ! を付けて強制保存してください。 ============================================================================== *07.7* ファイル名の変更 -新しいファイルを作成するときに、目的に近いファイルがあるなら、それを使うのが効 -率的です。例えば、ファイルを移動するプログラムを作りたいとしましょう。ファイル -をコピーするプログラムがすでにあるので、それを流用することにしました。 > +新しいファイルを作成するときに、目的に近いファイルがあるなら、それを利用するの +が効率的です。例えば、ファイルを移動するプログラムを作りたいとしましょう。ファ +イルをコピーするプログラムがすでにあるので、それを流用することにしました。 > :edit copy.c diff --git a/ja/usr_23.jax b/ja/usr_23.jax index a018ed651..68fc9542a 100644 --- a/ja/usr_23.jax +++ b/ja/usr_23.jax @@ -335,6 +335,6 @@ XXDを使う ============================================================================== -次章: |usr_24.txt| 効率的な入力 +次章: |usr_24.txt| 素早く入力する Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_24.jax b/ja/usr_24.jax index eacfcad7a..f22a9c368 100644 --- a/ja/usr_24.jax +++ b/ja/usr_24.jax @@ -1,407 +1,426 @@ COMMENT: 少ないキータイプ数で入力する方法 -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) <mailto:t_smz@syd.odn.ne.jp> -*usr_24.txt* For Vim version 6.3. Last change: 2003 Aug 18 +*usr_24.txt* For Vim version 7.1. Last change: 2006 Jul 23 VIM USER MANUAL - by Bram Moolenaar - 素早く挿入する + 素早く入力する -テキストを入力する時、キーを押す回数を減らし入力ミスを防ぐために、いろいろな -方法を提供しています。挿入モードで前回に入力した文字列を繰り返してくれる補完 -機能があります。長い文字列を短縮形で入力することもできます。キーボード上にな -いような文字を入力する方法もあります。 +テキストを入力するときに、キーストロークを減らしたり入力ミスを防いだりする方法 +がいくつかあります。補完機能を使えば以前に入力した単語を繰り返し入力できます。 +長い単語を短縮形で入力することもできます。キーボードに無い文字を入力する方法も +あります。 -|24.1| 修正を行う -|24.2| 一致するものを表示する +|24.1| 修正する +|24.2| 対応する括弧を表示する |24.3| 補完 |24.4| 挿入を繰り返す -|24.5| 他の行をコピーする -|24.6| レジスタ内容を挿入する +|24.5| 隣の行からコピーする +|24.6| レジスタを挿入する |24.7| 短縮形 |24.8| 特殊な文字を入力する -|24.9| ダイグラフ(二重字) -|24.10| 通常モードのコマンド +|24.9| 二重字 (Digraph) +|24.10| ノーマルモードコマンド - Next chapter: |usr_25.txt| フォーマット付きテキストを編集する - Previous chapter: |usr_23.txt| 他の種類のファイルを編集する -Table of contents: |usr_toc.txt| +次章: |usr_25.txt| テキストの整形 +前章: |usr_23.txt| 特殊なファイルを編集する +目次: |usr_toc.txt| ============================================================================== -*24.1* 修正を行う +*24.1* 修正する -<BS>キーについては既に説明しました。これはカーソルの直前の文字を削除します。 -<Del>キーはカーソル下の(次の)文字について同じことを行います。 -入力した単語をまるごと削除するのであれば、CTRL-Wを使います。 +<BS> キーは既に説明しましたね。<BS> はカーソル直前の文字を削除します。<Del> +キーはカーソルの下(後)の文字を削除します。 +直前の単語をまるごと削除したい場合は CTRL-W を使います: The horse had fallen to the sky ~ CTRL-W The horse had fallen to the ~ -行全体がグチャグチャになってしまって、行頭から全部を消すのなら、CTRL-Uを使い -ます。ただしカーソルの後ろにある文字列は消えません。行頭の非空白文示からカー -ソル位置までの文字だけが削除されます。カーソルが"fallen"の"f"にある時にCTRL-U -を押すと、このようになります。 +行全体を削除して行頭から入力しなおしたい場合は CTRL-U を使います。カーソルより +後ろの文字とインデントは削除されません。最初の非空白文字からカーソルまでのテキ +ストだけが削除されます。例えば、カーソルが "fallen" の "f" にある場合、CTRL-U +を押すと次のようになります: The horse had fallen to the ~ CTRL-U fallen to the ~ -いくつか前に入力した単語に誤りがあった場合、カーソルを動かして修正する必要が -あります。例えば、このような文があるとします。 +何個か前の単語だけを修正したい場合はカーソルを動かす必要があります。例えば、次 +のように入力してから: The horse had follen to the ground ~ -途中にある"follen"を"fallen"に直す必要があります。カーソルが行末にある場合、 -次のようにして修正ができます。 > +途中にある "follen" を "fallen" に修正してみます。カーソルが末尾にある場合、次 +のように入力すれば修正できます: > <Esc>4blraA < 挿入モードを抜ける <Esc> - 4単語分戻る 4b - 最初の"o"に移動する l - "a"に置換する ra + 4 単語戻る 4b + 最初の "o" に移動する l + "a" に置換する ra 行末に移動して挿入モードを再開 A -他にもこういった方法があります。 > +他の方法もあります: > <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End> -< 4単語文戻る。 <C-Left><C-Left><C-Left><C-Left> - 最初の"o"に移動する <Right> - "o"を削除する <Del> - "a"を挿入する a +< 4 単語戻る。 <C-Left><C-Left><C-Left><C-Left> + 最初の "o" に移動する <Right> + "o" を削除する <Del> + "a" を挿入する a 行末に移動する <End> -この場合は挿入モードのままで移動に特殊キーを使ます。これは普通のモードレスの -エディタと似ています。こちらの方が覚えやすいでしょうが、速くは入力できません。 -これは手を文字キーからカーソルキーや<End>キーのように、キーボードを見ないと -押せないような場所にあるキーを押す必要があるからです。 -特殊キーを使うと挿入モードから抜ける必要がないので、マップを書く時にとても便 -利です。ここでは打鍵数が増えることには触れないことにします。 -挿入モードで使える特殊キーの概要を次に示します。 +挿入モードの中で特殊キーを使って移動しています。これは普通のモードレスエディタ +の操作と似ています。操作方法は覚えやすいかもしれませんが少し面倒です (カーソル +キーを押すには手をホームポジションから離さなければならないし、<End> キーを押す +にはキーボードに視線を移さなければならない)。 +特殊キーは挿入モードの中で使えるのでマップを書くときに重宝します。マップの中で +使う分には入力が面倒になることもありません。 +挿入モードでは次の特殊キーが使えます: <C-Home> ファイルの先頭に移動 - <PageUp> 1画面分、逆スクロール - <Home> 業頭 - <S-Left> 1単語左へ移動 - <C-Left> 1単語左へ移動 - <S-Right> 1単語右へ移動 - <C-Right> 1単語右へ移動 + <PageUp> 1 画面分、逆スクロール + <Home> 行頭へ移動 + <S-Left> 1 単語左へ移動 + <C-Left> 1 単語左へ移動 + <S-Right> 1 単語右へ移動 + <C-Right> 1 単語右へ移動 <End> 行末へ移動 - <PageDown> 1画面分、スクロール + <PageDown> 1 画面分、スクロール <C-End> ファイルの末尾に移動 -さらなる情報が必要であれば、|ins-special-special|をご覧ください。 +使えるキーは他にもあります。|ins-special-special| 参照。 ============================================================================== -*24.2* 呼応したものの表示 +*24.2* 対応する括弧を表示する -")"を入力した時に呼応する"("の場所にカーソルが動くと便利でしょう。vimでこれ -をやるには次のコマンドを入力します。 > +")" を入力したときに、対応する "(" の場所を確認できたら便利ですよね。次のコマ +ンドでそのように設定できます: > :set showmatch -"(example)"といった文字列を入力した時、")"を入力した瞬間にカーソルを対応する -カッコ"("まで動かし、0.5秒間そこにいてから、元の入力位置に戻ります。 -呼応するカッコがない場合は警告音で知らせます。こういう時は"("をどこかで入力 -し忘れたか、")"が多すぎるかのどちらかだということがわかります。 -このような呼応のチェックは[ ]や{ }の組み合せでも動きます。カーソルが呼応する -カッコにある時でも次の文字を入力して構いません。その場合はすぐにカーソルが元 -の場所に戻って挿入処理を始めてくれます。 -呼応するカッコでの待ち時間は'matchtime'オプションで設定できます。例えば、次 -の例では1.5秒待つようになります。 > + +例えば "(example)" と入力したとき、")" を入力した瞬間に、対応する括弧にカーソ +ルが移動します。カーソルは 0.5 秒くらいその場所に留まり、再び元の場所に帰って +きます。 +対応する括弧が見つからなかった場合はビープ音が鳴ります。そのときは、( を入力し +忘れてないか、) を入力し過ぎてないか、確認しましょう。 +この機能は、[] や {} の組み合わせにも対応しています。カーソルが移動していると +きに、戻ってくるまで次の入力を待つ必要はありません。次の文字を入力した瞬間に +カーソルは元に戻るので、すぐに入力を再開できます。 +カーソルが移動先で待機する時間は 'matchtime' オプションで設定できます。例えば、 +1.5 秒待機するには次のように設定します: > :set matchtime=15 -時間は1/10秒単位で指定します。 +時間は 1/10 秒単位で指定してください。 ============================================================================== *24.3* 補完 -vimは自動的に挿入時に補完を行います。単語の最初の部分を入力し、CTRL-Pを入力 -します。するとvimは残りを補ないます。 -例えば、Cプログラムを作っていて、次のように入力したいとします。 +テキストの中から単語を検索して補完することができます。単語の出だしを入力して +CTRL-P を押すと、残りの部分が入力されます。 +例えば、C プログラムを書いていて、次のように入力したいとします: total = ch_array[0] + ch_array[1] + ch_array[2]; ~ -まずこのように入力を行います。 +まず、次のように入力してください: total = ch_array[0] + ch_ ~ -ここで、vimに単語の補完をさせるためにCTRL-Pコマンドを入力します。vimはカー -ソル位置にある単語の最初の部分と一致する単語を探そうとします。この場合なら、 -"ch_"がそうです。これに合致するパターンとして"ch_array"があります。ですか -ら、CTRL-Pを押すことで次のような結果となります。 +ここで、CTRL-P コマンドを使って単語を補完します。カーソル直前の文字列にマッチ +する単語が検索されます。この場合なら、"ch_" にマッチする単語、つまり +"ch_array" がヒットします。したがって、CTRL-P を押すと次のようになります: total = ch_array[0] + ch_array ~ -さらにちょっと入力をおこなって、こうなりました。(行末は空白文字です) +続けて入力し、次のようになりました (末尾に空白があります): total = ch_array[0] + ch_array[1] + ~ -さて、ここでCTRL-Pを押すとvimは先ほどと同じようにカーソル位置にある単語と一 -致する単語を探そうとします。しかしカーソル位置には何も入力されていませんので -直前の単語、つまり"ch_array"を見つけます。もう一度CTRL-Pを押すと、さらに一つ -前の単語、つまり"total"を見つけます。さらにCTRL-Pを押すともう一つ前に逆登り -ます。それ以上単語がなくなると、最初の状態に戻ります。つまり何もしないわけ -です。CTRL-Pを4回押すと、また"ch_array"から始めます。 +さて、ここで CTRL-P を押すと再びカーソル直前の文字列が補完されます。今回は文字 +が無いので、最初に見つかった単語、つまり "ch_array" が補完されます。もう一度 +CTRL-P を押すと、さらに次の候補が補完されます。この場合は "total" です。もう一 +度 CTRL-P を押せばさらに次の候補が補完されます。次の単語が見つからなかった場合 +は元の文字列に戻ります。この例では空文字列です。四度目に CTRL-P を押すと再び最 +初の "ch_array" が補完されます。 -前方検索する場合はCTRL-Nを使います。ファイルの末尾まで(もしくは先頭)までたど -り着くと、ファイルの先頭(もしくは末尾)から処理を続けますので、CTRL-NとCTRL-P -は順序は違いますが、同じ単語を見つけることになります。 -Hint: CTRL-Nは次(Next)の意味で、CTRL-Pは直前(Previous)の意味です。 +前方検索する場合は CTRL-N を使います。検索はファイル終端を超えて処理されるの +で、CTRL-N と CTRL-P は順番が違うだけで、同じ単語が検索されます。Hint: CTRL-N +は Next-match (次の候補)、CTRL-P は Previous-match (前の候補) です。 -vimは補完できる単語を見つけるのに多大な努力を通過します。 -smz 意味不明(笑) なんでgo throughなの?結局、努力するの?しないの? -デフォルトでは、次の場所を探します。 +単語の補完では、様々な場所から単語を検索できます。初期設定では、次の場所が検索 +されます: - 1. 編集中のファイル + 1. カレントファイル 2. 他のウィンドウのファイル - 3. 他のロード済ファイル(隠しバッファ) - 4. ロードしていないファイル(非アクティブバッファ) + 3. ロードされたファイル (隠しバッファ) + 4. ロードされてないファイル (休眠バッファ) 5. タグファイル - 6. 現在のファイルから#include しているファイル + 6. カレントファイルが #include しているファイル オプション ---------- -検索する順序については'complete'オプションでカスタマイズできます。 +検索場所の順番は 'complete' オプションで設定できます。 -また検索時には'ignorecase'オプションも使います。これがonの時は、検索する文字 -列の大文字小文字は無視します。 +検索には 'ignorecase' オプションが使われます。このオプションがオンのときは、大 +文字と小文字は区別されません。 -補完で使う特別オプションに'infercase'があります。これは大文字小文字を無視す -る('ignorecase'がonであるのが条件)が、その単語を実際に引用する時には入力済の -部分はそちらを使います。つまり、"For"と入力した時、"fortunately"が見つかった -とすると、その結果は"Fortunately"となるわけです。 +'infercase' は補完用の特別なオプションです。大文字と小文字を区別しない +('ignorecase' がオンに設定されている) ときでも、自分で入力した文字の種類をその +まま使えます。つまり、"For" と入力して "fortunately" がマッチしたとき、結果は +"Fortunately" になります。 -特定タイプの補完 +補完タイプの指定 ---------------- -ある特定のタイプの項目を探している場合には、次のようなコマンドでそのタイプだ -けを検索することができます。 +補完したい単語の種類がわかっている場合は、次のコマンドで補完の種類を指定できま +す: CTRL-X CTRL-F ファイル名 CTRL-X CTRL-L 行全体 - CTRL-X CTRL-D マクロ定義(インクルードファイルの中も探す) - CTRL-X CTRL-I 現在のファイルとインクルードファイル - CTRL-X CTRL-K 辞書の単語 - CTRL-X CTRL-T 同義語辞書(シソーラス)の単語 + CTRL-X CTRL-D マクロ定義 (インクルードファイルの中も探す) + CTRL-X CTRL-I カレントファイルとインクルードファイル + CTRL-X CTRL-K 辞書 + CTRL-X CTRL-T 同義語辞書 (シソーラス) CTRL-X CTRL-] タグ - CTRL-X CTRL-V vimのコマンド行 + CTRL-X CTRL-V Vim のコマンドライン -上記のいずれかの指定の後でCTRL-Nを押すと次の一致項目を探し、CTRL-Pで1つ前の -項目を探します。 -各コマンドの詳しい説明は|ins-completion|をご覧ください。 +補完を実行した後は、CTRL-N で次の候補、CTRL-P で前の候補を検索できます。 +各コマンドの詳細は |ins-completion| を参照してください。 ファイル名の補完 ----------------- -例としてCTRL-X CTRL-Fを取り上げましょう。これはファイル名を探すコマンドです。 -カレントディレクトリのファイルを検索し、カーソル位置の単語にヒットする単語を -順に表示します。 -例えば、カレントディレクトリにこのようなファイル群があるとしましょう。 +例として CTRL-X CTRL-F を使って説明します。これはファイル名を補完するコマンド +です。カレントディレクトリのファイルが検索され、カーソル直前の文字列にマッチす +るファイル名が補完されます。 +例えば、カレントディレクトリに次のファイルがあるとします: main.c sub_count.c sub_done.c sub_exit.c -vimを挿入モードにして、次のように入力します。 +挿入モードに入って次のように入力します: The exit code is in the file sub ~ -ここでCTRL-X CTRL-Fを入力します。vimはカーソル位置の単語"sub"を補完しようと -して、カレントディレクトリにあるファイルを見ます。最初に見つかったのは、 -"sub_count.c"です。これは望みのファイルではなかったので、次のファイル名を表 -示させるために、CTRL-Nを押します。ここでヒットしたのは"sub_done.c"です。もう -一度CTRL-Nを押すと、"sub_exit.c"が出てきます。 -結局、次のような表示となります。 +そして、CTRL-X CTRL-F を入力します。カレントディレクトリから "sub" にマッチす +るファイルが検索されます。最初にマッチするのは sub_count.c です。このファイル +は求めているファイルではありませんでした。CTRL-N を押して次の候補を検索しましょ +う。次に sub_done.c がマッチします。もう一度 CTRL-N を押すと sub_exit.c がマッ +チします。結果: The exit code is in the file sub_exit.c ~ -もしファイル名の先頭が"/"(Unix)やC:\(DOSやMS-Windows)の場合は、そのファイル -システムの全ファイルが対象となります。例えば、"/u"と入力した後で、CTRL-X -CTRL-F を入力します。これは例えば"/usr"(Unixの場合)にヒットするでしょう。 +ファイル名の先頭を / (Unix) や C:\ (MS-Windows) で開始すれば、ファイルシステム +全体からファイルを検索できます。例えば、"/u" と入力してから CTRL-X CTRL-F と入 +力すると "/usr" がヒットします (Unix の場合): the file is found in /usr/ ~ -もし、ここでCTRL-Nを押すと"/u"に戻ることでしょう。そうではなく"/usr/"を受け -入れた上で、さらに1つ深い階層でCTRL-X CTRL-Fを使うこともできます。 +もう一度 CTRL-N を押すと "/u" に戻ってしまいます。"/usr/" を確定してからさらに +深い階層へ進みたい場合は再び CTRL-X CTRL-F を使います: the file is found in /usr/X11R6/ ~ -この結果はご利用のファイルシステムで何が見つかったかによって変わってきます。 -なお、ヒットした結果はアルファベット順にソートされます。 +もちろん、ファイル構成が違えば結果は異なるでしょう。検索結果はアルファベット順 +にソートされます。 + + +ソースコードの補完 + +ソースコードは書式が決まっているので、より賢い補完を実装することができます。 +Vim ではそれをオムニ補完 (Omni completion) と呼びます。某エディタではインテリ +センスと呼ばれていますが、それは商標です。 + +オムニ補完のキーは CTRL-X CTRL-O です。O は Omni の頭文字なので覚えやすいでしょ +う。C 言語のソースを使って説明します: + + { ~ + struct foo *p; ~ + p-> ~ + +カーソルは "p->" の後ろにあります。CTRL-X CTRL-O を押すと、"struct foo" のメン +バが候補として表示されます。これは CTRL-P の補完とはまったく違います。CTRL-P +ではあらゆる単語が候補になりますが、オムニ補完は "struct foo" のメンバだけが補 +完されます。 + +オムニ補完を使うには設定が必要です。最低でもファイルタイププラグインを有効にし +ておく必要があります。vimrc に以下の行を書き加えてください: > + filetype plugin on +または: > + filetype plugin indent on + +C 言語の場合はタグファイルを作成して 'tags' オプションを設定する必要がありま +す。|ft-c-omni| を参照してください。他のファイルタイプでも似たような設定が必要 +になります。|compl-omni-filetypes| を参照してください。オムニ補完は特定のファ +イルタイプでしか利用できません。'omnifunc' オプションを確認し、オムニ補完が利 +用できるかどうか確認してください。 ============================================================================== *24.4* 挿入を繰り返す -挿入モードでCTRL-Aを押すと、前回の挿入モードの時に入力した内容を挿入します。 -例えば、次のような内容で始まるファイルがあるとします。 +CTRL-A を押すと、前回の挿入モードで入力したテキストを挿入できます。 +例えば、次のようなファイルがあったとします: "file.h" ~ /* Main program begins */ ~ -このファイルの1行目の行頭に"#include "という文字列を追加するように編集しま -す。 +一行目の行頭に "#include " を挿入します: #include "file.h" ~ /* Main program begins */ ~ -ここで"j^"コマンドで次の行の行頭にカーソルを動かします。ここにもうひとつ -"#include "の行を追加しましょう。このようにします。 > +"j^" コマンドで次の行の行頭に移動し、再び "#include " を挿入してみます。次のよ +うに入力しましょう: > i CTRL-A -この結果はこうなります。 +結果は次のようになります: #include "file.h" ~ #include /* Main program begins */ ~ -上で述べたようにCTRL-Aは前回に入力した内容を挿入してくれますので、"#include " -が表示されます。ここで続けて"main.h<Enter>"と入力して行を完成させます。 +CTRL-A は前回に入力したテキストを挿入するコマンドなので、"#include " が挿入さ +れました。続けて "main.h"<Enter> と入力し、行を完成させましょう: #include "file.h" ~ #include "main.h" ~ /* Main program begins */ ~ -CTRL-@ コマンドを使うと、CTRL-Aを実行してから挿入モードを抜けます。これは前 -回と全く同じことを繰り返したい時には便利な方法です +CTRL-@ コマンドは CTRL-A と同じことを実行してから挿入モードを抜けます。まった +く同じ挿入を繰り返したいときに使います。 ============================================================================== -*24.5* 他の行からコピーする +*24.5* 隣の行からコピーする -挿入モードでCTRL-Yを押すと、カーソルの直前の行から1文字複写します。これは直 -前の行内容をコピーしたい時に便利です。例えば、次のようなCコードがあるとしま -す。 +CTRL-Y コマンドを使うと、カーソルの上の文字を挿入できます。一つ上の行を複製し +たい場合に便利です。例えば、次のような C 言語のコードがあるとして: b_array[i]->s_next = a_array[i]->s_next; ~ -次にこの行の"s_next"を"s_prev"に置き換えた行を入力したいとします。まず新しい -行を開いて"next"の"n"の直前まで、CTRL-Yを14回押します。 -このように表示されているはずです。 +"s_next" を "s_prev" に変えただけの同じ行を入力してみます。新しい行を開いて +CTRL-Y を 14 回押して、"next" の "n" の直前まで進みます: b_array[i]->s_next = a_array[i]->s_next; ~ b_array[i]->s_ ~ -ここで"prev"と入力します。 +そして "prev" と入力します: b_array[i]->s_next = a_array[i]->s_next; ~ b_array[i]->s_prev ~ -続けて、次の"next"まで17回CTRL-Yを押します。 +続けて、次の"next"まで CTRL-Y を押します。 b_array[i]->s_next = a_array[i]->s_next; ~ b_array[i]->s_prev = a_array[i]->s_ ~ -ここで"prev;"と入力すれば、行が完成です。 +"prev;" と入力すれば、行が完成です。 -CTRL-Yと似たコマンドにCTRL-Eがあります。こちらはカーソルの直後の行内容を複写 -してくれます。 +CTRL-Y と似たコマンドに CTRL-E があります。これはカーソルの下の文字を挿入する +コマンドです。 ============================================================================== -*24.6* レジスタ内容の挿入 +*24.6* レジスタを挿入する -CTRL-R {register}コマンドはレジスタの内容を挿入します。長い単語を入力する手間 -を省きたい時に便利です。例えば、次の行を入力したいとします。 +CTRL-R {register} コマンドを使うと、レジスタの内容を挿入できます。長い単語を入 +力するのが簡単になります。例えば、次の行を入力したいとします。 r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~ -関数名は違ったファイルで定義しています。そのファイルを開いてカーソルを関数名 -の先頭に合せて次のコマンドでレジスタvにヤンクします。 > +関数名は別のファイルで定義されています。そのファイルを開いてカーソルを関数名の +先頭に移動し、次のコマンドでレジスタ v にヤンクします: > "vyiw -"vはレジスタの指定、"yiw"は現在位置の単語をヤンクするコマンドです。さて、目 -的の行を入力したいファイルに戻り、挿入モードを開始して次のように打ちます。 +"v はレジスタの指定、"yiw" は yank-inner-word (単語をヤンクする) です。さて、 +元のファイルに戻り、挿入モードを開始して次のように入力します: ir = ~ -挿入モードのままで CTRL-R v を入力すると上でヤンクした関数名が挿入されます。 +ここで、CTRL-R v を押して関数の名前を挿入します: r = VeryLongFunction ~ -こうして、関数のパラメタや関数名を入力し続けます。関数名の入力はCTRL-R vで行 +続けて関数の引数などを入力し、関数名を入力するときになったら再び CTRL-R v を使 います。 -同じことを補完を使ってもできます。レジスタの利用は同じ文字で始まる単語がたく -さんある時に便利です。 +同じことは補完を使ってもできますが、同じ文字で始まる単語がたくさんある場合には +レジスタが便利です。 -もしレジスタ内に<BS>といった特殊な文字を含んでいる場合は、実際にその文示を -キーボードから入力されたかのうように処理します。そうなることを望まない場合、 -(例えば、"<BS>"という4文字を入力したい場合)はCTRL-R CTRL-R {register}と指定 -します。 +レジスタの中に <BS> などの特殊な文字が含まれている場合、その文字は、実際にキー +ボードから入力されたのと同じように処理されます。それが望みの動作ではない場合 +(例えば、<BS> をテキストとして挿入したい場合) は CTRL-R CTRL-R {register} を +使ってください。 ============================================================================== -*24.7* 短縮形(abbreviation) +*24.7* 短縮形 (Abbreviations) -短縮形(abbreviation)とは長い単語を置き換える短い単語のことです。"advertisement" -を例えば、"ad"と略したりするわけです。vimではこのような短縮形を入力して、そ -れを自動的に展開することができます。 -"ad"を入力する都度、それを"advertisement"に展開して欲しければ、次のコマンド -を実行します。 > +短縮形とは長い単語を置き換える短い単語のことです。例えば、"ad" は +"advertisement" の短縮形です。Vim では、入力した短縮形を自動的に展開することが +できます。 +"ad" を "advertisement" の短縮形として登録するには、次のコマンドを使います: > :iabbrev ad advertisement -これで、"ad"と入力すると、完全形の"advertisement"を文章中に挿入してくれます。 -この機能は単語の区切りとなるような文字、例えば空白文字を入力した時にだけ実行 -されます。 +これで、"ad" と入力すると、完全形の "advertisement" がテキストに挿入されます。 +短縮形の置き換えは、スペースなどの、単語の一部として認識されない文字を入力した +ときに実行されます: 入力した文字 画面上での見え方 I saw the a I saw the a ~ I saw the ad I saw the ad ~ I saw the ad<Space> I saw the advertisement<Space> ~ -この展開は"ad"を入力すると同時に行われるわけではありません。これは例えば、 -"add"のような単語を入力する時に展開させないためです。単語全体が入力された時 -に短縮形のチェックを行います。 +"ad" と入力しただけでは展開されません。これは例えば "add" のような単語も入力で +きるようにするためです。単語の境界が確定してから短縮形の展開が適用されます。 複数の単語の短縮形 ------------------ -展開後に複数の単語となるような短縮形でも定義できます。例えば、"Jack Benny"の -短縮形を"JB"と定義するには、次のようなコマンドを使います。 > +複数の単語に展開される短縮形を定義できます。例えば、"JB" を "Jack Benny" の短 +縮形として登録するには、次のコマンドを使います: > :iabbrev JB Jack Benny -プログラマとして、私(Bram氏のこと)はちょっと変った短縮形を使っています。 > +プログラムを書くとき、私は少し変った短縮形を使っています: > :iabbrev #b /**************************************** :iabbrev #e <Space>****************************************/ -これはコメントを四角い形にする時に使っています。最初の行を入力する時に"#b"を -使って、コメントを開始します。続けて、コメント本体を入力し最後に"#e"で最終行 -を作ります。 -短縮形"#e"の展開結果が空白文字で始まっている点に気を付けてください。言い代え -ると、展開結果の最初の2文字は「空白+"*"」です。普通はvimは短縮形と展開結果 -の間にある空白を無視します。上の例ではわざと"<Space>"と7文字で書いて、そう -ならないようにしています。 +これはコメントブロックを作成するときに使います。コメントを開始するときに #b で +最初の行を描き、コメントを書いてから、#e で末尾の行を描きます。#e の展開形がス +ペースで始まっています。別の言い方をすれば、最初の二文字がスペースとスターに +なっています。通常、短縮形と展開形の間の空白は無視されるので、スペースを入れた +い場合は <, S, p, a, c, e, > という 7 文字の特殊な表記を使います。 Note: - ":iabbrev"は入力するには長いので、":iab"でもうまく動きます。 - これは短縮コマンドの短縮形というわけですね! + ":iabbrev" は入力するのが長くて大変なので、":iab" でも構いません。 + これは短縮コマンドの短縮形です! 入力ミスを直す -------------- -毎回、同じような入力ミスをしてしまうことってありますよね。例えば、"the"と入 -力するところを"teh"としてしまうとか。これを短縮形を使って直してしまうことが -できます。 > +入力ミスの癖ってありますよね。例えば、"the" と入力するはずが "teh" になってし +まったり。短縮形を使って修正しましょう: > :abbreviate teh the -こういった単語を全部追加してもいいです。よくやる間違いを見つけたらその都度 -その単語を追加しましょう。 +このような短縮形のリストを作成し、入力ミスの癖を見つけたら追加しましょう。 -短縮形の一覧リスト ------------------- +短縮形を一覧表示する +-------------------- -":abbreviate"コマンドで短縮形の一覧を表示してくれます。 +":abbreviate" コマンドで短縮形の一覧を表示できます: > :abbreviate i #e ****************************************/ @@ -410,15 +429,15 @@ CTRL-R {register}コマンドはレジスタの内容を挿入します。長い i ad advertisement ! teh the -1桁目の"i"は挿入モード用の意味です。こういった短縮形は挿入モードの時だけ有 -効となります。他に使われる文字にはこのようなものがあります。 +行頭の "i" は挿入モードの意味です。その短縮形は挿入モードの中だけで有効です。 +他にも、次のような文字が表示されます: - c Command-line mode :cabbrev - ! both Insert and Command-line mode :abbreviate + c コマンドラインモード :cabbrev + ! 挿入モードとコマンドラインモード :abbreviate -コマンド行モードでは短縮形はそれほど使うことはありませんので、多くの場合は -"iabbrev"コマンドを使うことになるでしょう。このコマンドなら、次のようなコマ -ンドの場合に"ad"が展開されるのとを防ぐことができます。 > +コマンドラインモードで短縮形が役に立つことはあまりないので、"iabbrev" コマンド +を主に使うことになるでしょう。"iabbrev" なら、次のようなコマンドで "ad" が展開 +される心配はありません: > :edit ad @@ -426,164 +445,156 @@ CTRL-R {register}コマンドはレジスタの内容を挿入します。長い 短縮形の削除 ------------ -短縮形を取り除くには":unabbreviate"コマンドを使います。次のような短縮形を登 -録してあるとしましょう。 > +短縮形を取り除くには ":unabbreviate" コマンドを使います。次のような短縮形が登 +録されているなら: > :abbreviate @f fresh -これを削除するにはこのコマンドを使います。 > +次のコマンドで削除できます: > :unabbreviate @f -これを入力すると、@fが"fresh"に展開されてしまうのに気付くでしょう。これにつ -いては心配いりません。vimはどうにかしてそれを解ってくれます。(ただし、"fresh" -という短縮形が定義されている場合は例外です。そうあることではないでしょうが) -全部の短縮形を削除するにはこうします。 > +このコマンドを入力すると @f が "fresh" に展開されてしまいますが、心配はいりま +せん。コマンドは正しく処理されます (ただし、"fresh" という別の短縮形が定義され +ている場合は期待した動作になりません。まぁそんなことはほとんどないはずですが)。 +すべての短縮形を削除するには次のコマンドを使います: > :abclear -":unabbreviate"と":abclear"にも、挿入モード用(":iunabbreviate"と":iabclear") -とコマンド行モード用(":cunabbreviate"と":cabclear")のバリエーションがありま -す。 +":unabbreviate" と ":abclear" にも、挿入モード用 (":iunabbreviate" と +":iabclear") とコマンドライン用 (":cunabbreviate" と ":cabclear") があります。 -短縮形をマップする ------------------- +短縮形の再マップ +---------------- -短縮形を定義する時に注意すべき点がもう一つあります。登録された文字列をマップ -するべきではありません。例をあげましょう。 > +短縮形を定義するときに注意すべき点がもう一つあります。展開された文字列がマップ +されないようにしなくてはなりません。例をあげましょう: > :abbreviate @a adder :imap dd disk-door -ここで"@a"を入力すると、"adisk-doorer"になってしまいます。これは望んでいた結 -果ではないでしょう。これを避けるには、":noreabbrev"コマンドを使います。これ -は":abbreviate"と同じですが、展開した結果はマップの対象となりません。 > +"@a" を入力すると "adisk-doorer"になってしまいます。これは意図した動作ではない +はずです。これを避けるには、":noreabbrev" コマンドを使います。":abbreviate" と +機能は同じですが、展開結果にマップが適用されません: > :noreabbrev @a adder -これなら、短縮形の結果がマップされるようなことは起こらなくなります。 +これで、展開結果がマップされなくなります。 ============================================================================== *24.8* 特殊な文字を入力する -CTRL-Vコマンドを使うと、その次に入力した文字をそのまま挿入できます。言い換え -ると、どんな特別な意味を持つキーであっても、その意味が無視されます。例えば、 -こうすると > +CTRL-V コマンドを使うと、その次に入力した文字をそのまま挿入できます。つまり、 +文字の特殊効果が無視されます。例えば、このように入力すると: > CTRL-V <Esc> < -<ESC>文字自身が挿入されるだけで、挿入モードからは抜けません。(上の例もそうで -すが、CTRL-Vの後にある空白は見やすくするためのもので、入力するものではありま -せん) +エスケープ文字が挿入されます。挿入モードは終了しません。(CTRL-V の後ろの空白は +見やすくするためのものなので、実際には入力しないでください) Note: - MS-WindowsではCTRL-Vはテキストのペーストに使っています。CTRL-Qをその - 代わりに使ってください。Unixでは逆に一部の端末ではCTRL-Qに特別な意味 - づけをしているために使えません。 + MS-Windows では CTRL-V はテキストのペーストに使われています。CTRL-V の + 代わりに CTRL-Q を使ってください。Unixでは逆に一部の端末で CTRL-Q に特 + 別な意味があるので使えないかもしれません。 -また、CTRL-V {digits} コマンドを使うと、文字コードを10進数で指定してその文字 -を挿入することができます。例えば、文字コード127は<Del>文字(必ずしも<Del>キー -とは限りませんよ)です。で、この文字を挿入するには次のように入力します。 > +また、CTRL-V {digits} コマンドを使うと、文字コードを 10 進数で指定して、その文 +字を入力できます。例えば、文字コード 127 は <Del> 文字 (<Del> *キー*と同じとは +限りません) です。<Del> を挿入するには次のように入力します: > CTRL-V 127 -同じやりかたで文字コード255までの文字を入力できます。文字コードが99以下の場 -合は、続けて数字以外の文字を入力すれば、それでコマンドは数値を認識できます。 -数字以外の文字を入力するのを避けたいのであれば、数値が3桁となるように1桁か -2桁の"0"を入力してください。 -次のコマンドはいずれも<Tab>と"."を挿入します。 +同じやりかたで文字コード 255 までの文字を入力できます。文字コードが 2 桁以下の +場合は、数字以外の文字を入力してコマンドを確定してください。 +数字以外の文字を入力したくない場合は、数値が 3 桁になるように 1 つか 2 つの +"0" を数値の前に付けてください。 +次のコマンドはいずれも <Tab> と "." を挿入します: CTRL-V 9. CTRL-V 09. CTRL-V 009. -文字コードを16進数で指定もできます。その場合はCTRL-Vの直後に"x"を使います。 -> +文字コードは 16 進数でも指定できます。その場合は CTRL-V の直後に "x" を指定し +ます: > + CTRL-V x7f -この場合もコード255の文字(CTRL-V xff)まで使えます。また、"o"で8進数の指定が -できます。この他にも"u"と"U"でそれぞれ16ビットと32ビットの文字コード(例えば -Unicodeの文字)が指定できます。 +この場合もコード 255 (CTRL-V xff) までの文字が入力できます。"o" で 8 進数の数 +値を指定することもできます。他にも "u" と "U" でそれぞれ 16 ビットと 32 ビット +の文字コード (例えば Unicode の文字) を指定できます: > CTRL-V o123 CTRL-V u1234 CTRL-V U12345678 ============================================================================== -*24.9* ダイグラフ(二重字) - -JP: 二重字というのは、例えば、"ae"がひっついたような記号が発音記号に使われて -JP: いるアレです。この節の記述はラテン語圏(例えばISO-8859-1)での8ビット文字 -JP: の使い方の説明で、ほとんどの日本語環境で意味がないと思います。 +*24.9* 二重字 (Digraph) -一部の文字はキーボード上にありません。例えば、コピーライトに使う文字(丸付き -の"c")がそうです。こういった文字をvimで扱うには2文字を1文字にしたダイグラ -フを使います。例えば、コピーライトの文字を出すには次のように入力します。 +例えば、コピーライト文字 (©) など、キーボードに無い文字がいくつかあります。 +そのような文字を Vim で入力するには二重字を使います。つまり、二文字で一文字を +表現します。例えば、コピーライト文字 (©) を入力するには、次のようにします: > CTRL-K Co -JP: このコマンドを使っても日本語環境ではいわゆる半角カナのウが表示されるだけ -JP: です。どうしても見たい方はvimの表示フォントを欧文フォントに変更してくだ -JP: さい。その場合は当然ですが、日本語は表示されません。あしからず。 - -使えるダイグラフを知りたければ、次のコマンドを入力してください。 > +使用できる二重字の一覧を表示するには、次のコマンドを使います: > :digraphs -ダイグラフの一覧表を表示します。(表及びその説明は省略) +一部抜粋: AC ~_ 159 NS | 160 !I ¡ 161 Ct ¢ 162 Pd £ 163 Cu ¤ 164 Ye ¥ 165 ~ BB ¦ 166 SE § 167 ': ¨ 168 Co © 169 -a ª 170 << « 171 NO ¬ 172 ~ -- ­ 173 Rg ® 174 'm ¯ 175 DG ° 176 +- ± 177 2S ² 178 3S ³ 179 ~ -ポンド記号のダイグラフは"Pd"です。ほとんどのダイグラフは生成される文字から想 -像しやすい文字を選んであります。リストをご覧になれば、どういうルールか解って -いただけるでしょう。 -どのダイグラフもその組み合せを使っていなければ、1文字目と2文字目を入れ換え -ても構いません。ですからCTRL-K dPもポンド記号の意味になります。これは"dP"と -いうダイグラフはなく、"Pd"ダイグラフを探し当てるためです。 +これを見れば、例えば CTRL-K Pd でポンド記号 (£) が入力できることがわかります。 +文字番号は 163 (10進数) です。 +Pd は Pound (ポンド) の略です。ほとんどの二重字には、生成される文字が連想しや +すい文字が割り当てられています。法則は表を見ればだいたいわかると思います。 +二重字の一文字目と二文字目は逆の順番で入力しても構いません。ただし、その組み合 +わせが他の二重字で使われていない場合に限ります。すなわち、CTRL-K dP もポンド記 +号になります。"dP" という組み合わせが他に使われていないので、"Pd" の二重字が使 +われるのです。 Note: - ダイグラフはvimが使用中と認識しているキャラクタセットに依存していま - す。MS-DOSのそれはMS-Windowsのとは違うでしょう。その時点でどのダイグ - ラフが有効かは":digraphs"コマンドで確認するようにしてください。 + 二重字はユーザーが使っている (と Vim が認識している) 文字セットに依存 + します。MS-DOS の文字セットと MS-Windows の文字セットは違います。 + ":digraphs" を使って、利用可能な二重字を確認してください。 -独自のダイグラフを定義することもできます。例えばこのようにします。 > +自分で二重字を定義することもできます。例: > :digraph a" ä -これはCTRL-K a" を入力した時にaウムラウトとなる定義です。文字コードを10 -進数で指定することもできます。この指定は上での指定と同じことです。 > +CTRL-K a" を入力すると ä になります。文字コードを 10 進数で指定することもでき +ます。次のコマンドは上記のコマンドと同じです: > :digraph a" 228 -ダイグラフについてより詳しいことは|digraphs|をご覧ください。 -他にもキーマップを使って特殊な文字を挿入することができます。詳しくは|45.5| -をご覧ください。 +二重字についての詳細は |digraphs| を参照してください。 +他にも、キーマップを使って特殊な文字を入力することもできます。詳しくは |45.5| +参照。 ============================================================================== -*24.10* 通常モードのコマンド +*24.10* ノーマルモードコマンド -挿入モードで提供しているコマンドはそれほど多くはありません。通常モードに -はもっといろいろあります。通常コマンドを使いたければ、普通は一度<Esc>で挿 -入モードを抜けて、通常モードのコマンドを実行し、また"i"や"a"で挿入モード -に戻るという手順が必要です。 -ですが、もっと簡単な方法があります。CTRL-O {command}であれば、通常モード -のコマンドを挿入モードで実行できます。例えば、カーソル位置から行末までを -削除するには次のようにします。 > +挿入モードで使えるコマンドはそれほど多くありませんが、ノーマルモードにはたくさ +んのコマンドがあります。それらのコマンドを使うには <Esc> で挿入モードを抜けて、 +ノーマルモードコマンドを実行し、"i" または "a" で挿入モードに戻ってこなければ +なりません。 +もっと簡単な方法があります。CTRL-O {command} を使えばノーマルモードコマンドを +挿入モードの中で実行できます。例えば、次のコマンドでカーソル位置から行末まで削 +除できます: > CTRL-O D -この方法で実行できるのは1つのコマンドだけです。カウンタによる回数指定は -可能です。これはもう少し複雑な例です。 +この方法で実行できるのは一つのコマンドだけです。ただし、レジスタやカウントの指 +定はできます。もう少し複雑な例: > CTRL-O "g3dw -これは3つの単語を削除してレジスタGに格納します。 +三つの単語を削除してレジスタ g に格納します。 ============================================================================== -Next chapter: |usr_25.txt| フォーマット付きテキストを編集する +次章: |usr_25.txt| テキストの整形 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: From 38533461cd106f9fedcbfb2f28da5b645d627523 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 23 Jun 2007 17:13:14 +0000 Subject: [PATCH 099/783] add: memo.txt makehtml.vim git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@99 a429a4b8-4c93-91f1-de24-85204d8cde48 --- memo.txt | 169 +++++++++++++++++++++++++++++ tools/makehtml.vim | 262 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 431 insertions(+) create mode 100644 memo.txt create mode 100644 tools/makehtml.vim diff --git a/memo.txt b/memo.txt new file mode 100644 index 000000000..9bfb3aafb --- /dev/null +++ b/memo.txt @@ -0,0 +1,169 @@ + +連絡ノート + + +とりあえずの目標を設定してみます。 +1. 全体的な査読。品質を改善または確認する。 +2. ファイルのバージョンを統一してリリース (目標 2007 年内) +3. メンテナンスモード突入。 + + +品質管理 + +一読しただけで意味が理解できるような文章を目指したいと思います。 + +改めて査読する必要はないので、自分で更新したことのあるファイルで、バー +ジョンアップの差分をマージしただけでなく全体を査読/修正した、というやつ +にマークをつけてください。見える形にしておくと作業が楽になると思うので、 +ご協力をお願いします。 + + +進捗表 + +ada.jax :7.1: +autocmd.jax :7.1: +change.jax :7.1: +cmdline.jax :7.1: +debug.jax :7.1: [中平] +debugger.jax :7.1: +develop.jax :7.1: +diff.jax :7.1: +digraph.jax :7.1: +editing.jax :7.1: +eval.jax :7.1: +farsi.jax :7.0: [中平] +filetype.jax :7.1: +fold.jax :7.1: +getscript.jax :7.0: +gui.jax :7.1: +gui_w16.jax :7.1: +gui_w32.jax :7.1: +gui_x11.jax :7.1: +hangulin.jax :7.0: +help.jax :7.1: +howto.jax :7.0: +if_cscop.jax :7.0: +if_ole.jax :7.0: +if_perl.jax :7.0: +if_pyth.jax :7.0: +if_ruby.jax :7.0: +if_sniff.jax :7.0: +if_tcl.jax :7.0: +indent.jax :7.1: +index.jax :7.0: +insert.jax :6.3: +intro.jax :7.0: +map.jax :7.0: [中平] +mbyte.jax :7.1: +message.jax :7.1: +mlang.jax :7.0: +motion.jax :7.1: +options.jax :7.1: +os_390.jax :7.0: +os_amiga.jax :7.0: +os_beos.jax :7.0: +os_dos.jax :7.0: +os_mac.jax :6.3: +os_mint.jax :7.0: +os_msdos.jax :7.0: +os_os2.jax :7.0: +os_qnx.jax :7.0: +os_risc.jax :7.0: +os_unix.jax :7.0: +os_vms.jax :7.0: +os_win32.jax :7.0: +pattern.jax :7.0: [中平] +pi_expl.jax :6.3: +pi_gzip.jax :7.0: +pi_netrw.jax :6.3: +pi_paren.jax :7.0: +pi_spec.jax :7.0: +pi_tar.jax :7.0: [中平] +pi_vimball.jax :7.0: +pi_zip.jax :7.0: [中平] +print.jax :7.0: [中平] +quickfix.jax :7.1: +quickref.jax :7.1: +quotes.jax :7.0: +recover.jax :7.0: +remote.jax :7.0: +repeat.jax :7.0: +rileft.jax :7.0: +scroll.jax :7.0: +sign.jax :7.0: +sponsor.jax :7.0: +starting.jax :7.0: +syntax.jax :7.1: +tabpage.jax :7.1: [中平] +tagsrch.jax :7.0: +tips.jax :7.0: +uganda.jax :7.0: +undo.jax :6.3: +usr_01.jax :7.0: [中平] +usr_02.jax :7.1: [中平] +usr_03.jax :7.0: [中平] +usr_04.jax :7.0: [中平] +usr_05.jax :7.0: [中平] +usr_06.jax :7.0: [中平] +usr_07.jax :7.0: [中平] +usr_08.jax :7.0: [中平] +usr_09.jax :7.0: [中平] +usr_10.jax :7.0: [中平] +usr_11.jax :7.0: [中平] +usr_12.jax :7.0: [中平] +usr_20.jax :7.0: [中平] +usr_21.jax :7.0: [中平] +usr_22.jax :7.0: [中平] +usr_23.jax :7.0: [中平] +usr_24.jax :7.1: [中平] +usr_25.jax :6.3: +usr_26.jax :6.3: +usr_27.jax :6.3: +usr_28.jax :6.3: +usr_29.jax :6.3: +usr_30.jax :7.1: +usr_31.jax :7.1: +usr_32.jax :7.0: +usr_40.jax :6.3: +usr_41.jax :7.1: +usr_42.jax :6.3: +usr_43.jax :6.3: +usr_44.jax :7.1: +usr_45.jax :6.3: +usr_90.jax :6.3: +usr_toc.jax :7.1: +various.jax :7.1: [中平] +version4.jax :6.3: +visual.jax :7.0: +vi_diff.jax :7.0: +windows.jax :7.1: +workshop.jax :7.0: + +vim_faq_help.jax + +evim-ja.UTF-8.1 +vim-ja.UTF-8.1 +vimdiff-ja.UTF-8.1 +vimtutor-ja.UTF-8.1 +xxd-ja.UTF-8.1 + + +作業メモ + +usr_25.txt: +494 You want to add a column, which should be a copy of the third column and +495 placed before the "test 1" column. Do this in seven steps: +- You want to add a column, which should be a copy of the third column and ++ You want to add a column, which should be a copy of the fourth column and + + + + +自分の考えを書いてみました。なんかあったら適当に書いてください。ほとんど +のファイルは最新バージョンになってるみたいなので残りの作業は査読がメイン +です。個人的には、ザックリ読んでみて引っかかったところを片っ端から修正す +る方針でやってます (なので無駄な書き換えが多いかもしれませんが)。私が訳 +したものについてはガンガン修正してもらって構いません。というか気づいたら +お願いします。 +-- 中平 2007-06-24 + diff --git a/tools/makehtml.vim b/tools/makehtml.vim new file mode 100644 index 000000000..36df7c74e --- /dev/null +++ b/tools/makehtml.vim @@ -0,0 +1,262 @@ +" makehtml.vim +" +" Description: +" Convert help file to HTML file. +" +" When there are other language files, multi-language HTML are +" created. (1) HTML files are named with "help.ab.html" (but +" "help.txt" => "help.html"). (2) Header and Footer have links to +" other language. Otherwise single language HTML files are created +" (named with "help.html" and no language links). +" +" Usage: +" :cd doc +" :helptags . +" :source mkhtml.vim +" :call MakeHtmlAll() + +function! MakeHtmlAll() + let files = split(glob('*.??[tx]'), '\n') + call MakeTagsFile() + for i in range(len(files)) + call append('$', printf("%d/%d %s -> %s", i+1, len(files), files[i], s:HtmlName(files[i]))) + endfor + silent 1delete _ + for i in range(len(files)) + call cursor(i+1, 1) + redraw! " show progress + let file = files[i] + call MakeHtml(file) + call setline(i+1, getline(i+1) . ' *DONE*') + endfor +endfunction + +function! MakeHtmlAllBatch() + let files = split(glob('*.??[tx]'), '\n') + call MakeTagsFile() + for i in range(len(files)) + call MakeHtml(files[i]) + endfor +endfunction + +function! MakeTagsFile() + let files = split(glob('tags'), '\n') + let files += split(glob('tags-??'), '\n') + for file in files + let lang = matchstr(file, 'tags-\zs..$') + if lang == "" + let fname = "tags.txt" + else + let fname = printf("tags.%sx", lang) + endif + new `=fname` + silent %delete _ + let tags = s:GetTags(lang) + for tagname in sort(keys(tags)) + if tagname == "help-tags" + continue + endif + call append('$', printf("|%s|\t\t%s", tagname, tags[tagname]["filename"])) + endfor + call append('$', ' vim:ft=help:') + silent 1delete _ + wq! + endfor +endfunction + +function! MakeHtml(fname) + new `=a:fname` + call s:WorkAroundToAvoidSyntaxBug1() + " 2html options + let g:html_use_css = 1 + let g:html_no_pre = 1 + " set dumy highlight to keep syntax identity + if !exists("s:attr_save") + let s:attr_save = {} + for name in ["helpStar", "helpBar", "helpHyperTextEntry", "helpHyperTextJump", "helpOption"] + let s:attr_save[name] = synIDattr(synIDtrans(hlID(name)), "name") + execute printf("hi %s term=bold cterm=bold gui=bold", name) + endfor + endif + + TOhtml + + let lang = s:GetLang(a:fname) + silent %s@<span class="\(helpHyperTextEntry\|helpHyperTextJump\|helpOption\)">\([^<]*\)</span>@\=s:MakeLink(lang, submatch(1), submatch(2))@ge + silent %s@<span class="\(helpStar\|helpBar\|Ignore\)">[^<]*</span>@@ge + " remove style + g/^\.\(helpBar\|helpStar\|helpHyperTextEntry\|helpHyperTextJump\|helpOption\)/silent delete _ + + call s:Header() + call s:Footer() + call s:WorkAroundToAvoidSyntaxBug2() + + wq! `=s:HtmlName(a:fname)` + quit! +endfunction + +function! s:Header() + let name = fnamemodify(bufname("%"), ":r:r") + let indexfile = s:GetIndexFile(bufname("%")) + let title = printf("<title>Vim documentation: %s", name) + call setline(search('^

Vim documentation: %s

', name), + \ printf('main help file', indexfile), + \ '
', + \ ] + call append(search('^', + \ printf('top - main help file
', indexfile), + \ s:MakeLangLinks(bufname("%")), + \ ] + call append(search('^
', 'g') + let tagname = substitute(tagname, '&', '\&', 'g') + if a:hlname == "helpHyperTextEntry" + let sep = "*" + elseif a:hlname == "helpHyperTextJump" + let sep = "|" + elseif a:hlname == "helpOption" + let sep = "" + endif + let tags = s:GetTags(a:lang) + if has_key(tags, tagname) + let href = tags[tagname]["html"] + if tagname !~ '\.txt$' && tagname != "help-tags" + let href .= '#' . tagname + endif + if a:hlname == "helpHyperTextEntry" + let res = printf('%s%s%s', s:attr_save[a:hlname], href, a:tagname, sep, a:tagname, sep) + else + let res = printf('%s%s%s', s:attr_save[a:hlname], href, sep, a:tagname, sep) + endif + else + " missing tag or not translated. use English if possible. + let tags = s:GetTags("") + if has_key(tags, tagname) + let href = tags[tagname]["html"] + if tagname !~ '\.txt$' + let href .= '#' . tagname + endif + let res = printf('%s%s%s', href, sep, a:tagname, sep) + else + let res = printf('%s%s%s', sep, a:tagname, sep) + endif + endif + return res +endfunction + +function! s:GetTags(lang) + if !exists("s:tags_" . a:lang) + let &l:tags = (a:lang == "") ? "./tags" : "./tags-" . a:lang + let tags = {} + for item in taglist(".*") + let item["html"] = s:HtmlName(item["filename"]) + let tags[item["name"]] = item + endfor + " for help-tags + let item = {} + let item["name"] = "help-tags" + if s:IsSingleMode() + let item["html"] = "tags.html" + else + let item["html"] = printf("tags%s.html", (a:lang == "") ? "" : "." . a:lang) + endif + let tags[item["name"]] = item + let s:tags_{a:lang} = tags + endif + return s:tags_{a:lang} +endfunction + +function! s:IsSingleMode() + " if there is one language files, do not append language identifier + " (use "help.html" instead of "help.ab.html"). + if !exists("s:single_mode") + let files = split(glob('tags'), '\n') + let files += split(glob('tags-??'), '\n') + let s:single_mode = (len(files) == 1) + endif + return s:single_mode +endfunction + +function! s:HtmlName(helpfile) + " help.txt => "help.html" + " help.jax => "help.ja.html" + let lang = s:GetLang(a:helpfile) + let base = fnamemodify(a:helpfile, ":r") + if base == "help" + let base = "index" + elseif base == "index" + let base = "vimindex" + endif + if s:IsSingleMode() + return printf("%s.html", base) + endif + return printf("%s%s.html", base, (lang == "") ? "" : "." . lang) +endfunction + +function! s:GetLang(fname) + " help.txt => "" + " help.jax => "ja" + " help.jax.html => "ja" + return matchstr(a:fname, '^.*\.\zs..\zex\%(.html\)\?$') +endfunction + +function! s:GetIndexFile(fname) + if s:IsSingleMode() + return "index.html" + endif + let lang = s:GetLang(a:fname) + return printf("index%s.html", (lang == "") ? "" : "." . lang) +endfunction + +function! s:MakeLangLinks(htmlfile) + if s:IsSingleMode() + return "" + endif + let base = fnamemodify(a:htmlfile, ':r:r') + let files = split(glob(base . '.??x'), '\n') + let res = printf('Language: en', base) + for name in files + let lang = s:GetLang(name) + let res .= printf(' %s', s:HtmlName(name), lang) + endfor + return res +endfunction + +function! s:WorkAroundToAvoidSyntaxBug1() + " |:syn-pattern-offset| can't handle multi-byte character. + g/^./call s:_Sub() +endfunction + +function! s:_Sub() + let c = matchstr(getline('.'), '.') + if len(c) != 1 + if synID(line('.'), 1, 1) != synID(line('.'), len(c), 1) + " put single byte character to avoid bug + silent s@^@#$%@ + endif + endif +endfunction + +function! s:WorkAroundToAvoidSyntaxBug2() + silent %s@^#$%@@ge +endfunction + From 4a3b0516613917571a9302a05b7492e79a10dd67 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira Date: Sat, 23 Jun 2007 23:27:57 +0000 Subject: [PATCH 100/783] fix: update to 7.0 fix: typo git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@100 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/usr_25.txt | 10 +- en/usr_26.txt | 2 +- ja/autocmd.jax | 4 +- ja/change.jax | 18 +- ja/editing.jax | 15 +- ja/fold.jax | 2 +- ja/gui_w32.jax | 4 +- ja/insert.jax | 11 +- ja/intro.jax | 6 +- ja/mlang.jax | 2 +- ja/options.jax | 17 +- ja/os_390.jax | 2 +- ja/print.jax | 2 +- ja/quickfix.jax | 2 +- ja/quickref.jax | 6 +- ja/scroll.jax | 2 +- ja/sign.jax | 4 +- ja/starting.jax | 4 +- ja/tabpage.jax | 2 +- ja/tagsrch.jax | 2 +- ja/usr_01.jax | 2 +- ja/usr_05.jax | 2 +- ja/usr_06.jax | 2 +- ja/usr_07.jax | 2 +- ja/usr_09.jax | 2 +- ja/usr_25.jax | 833 ++++++++++++++++++++++----------------------- ja/usr_26.jax | 239 ++++++------- ja/usr_30.jax | 6 +- ja/usr_40.jax | 2 +- ja/usr_42.jax | 2 +- ja/usr_43.jax | 2 +- ja/vi_diff.jax | 6 +- ja/windows.jax | 10 +- memo.txt | 4 +- tools/makehtml.vim | 26 +- 35 files changed, 613 insertions(+), 644 deletions(-) diff --git a/en/usr_25.txt b/en/usr_25.txt index d7f6d3fee..d6d581567 100644 --- a/en/usr_25.txt +++ b/en/usr_25.txt @@ -1,4 +1,4 @@ -*usr_25.txt* For Vim version 6.3. Last change: 2003 Jun 21 +*usr_25.txt* For Vim version 7.1. Last change: 2007 May 11 VIM USER MANUAL - by Bram Moolenaar @@ -119,10 +119,10 @@ whole file by typing this: > "gg" to move to the first line, "gqG" to format until the last line. Warning: If your paragraphs are not properly separated, they will be joined -together. A common mistake is to have a line with a space or Tab. That's a +together. A common mistake is to have a line with a space or tab. That's a blank line, but not an empty line. -Vim is able format more than just plain text. See |fo-table| for how to +Vim is able to format more than just plain text. See |fo-table| for how to change this. See the 'joinspaces' option to change the number of spaces used after a full stop. It is possible to use an external program for formatting. This is useful @@ -198,7 +198,7 @@ command: > :runtime macros/justify.vim -This Vim script file defines a new visual command "_j". To justify a block of +This Vim script file defines a new visual command "_j". To justify a block of text, highlight the text in Visual mode and then execute "_j". Look in the file for more explanations. To go there, do "gf" on this name: $VIMRUNTIME/macros/justify.vim. @@ -247,7 +247,7 @@ When used on the second line of the example text, this is what you get: TABSTOP If you want to make indents a multiple of 4, you set 'shiftwidth' to 4. But -when pressing a Tab you still get 8 spaces worth of indent. To change this, +when pressing a you still get 8 spaces worth of indent. To change this, set the 'softtabstop' option: > :set softtabstop=4 diff --git a/en/usr_26.txt b/en/usr_26.txt index ba3bd79d2..baeeb3718 100644 --- a/en/usr_26.txt +++ b/en/usr_26.txt @@ -1,4 +1,4 @@ -*usr_26.txt* For Vim version 6.3. Last change: 2002 Oct 29 +*usr_26.txt* For Vim version 7.1. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar diff --git a/ja/autocmd.jax b/ja/autocmd.jax index 33fbd9657..5e1446d8d 100644 --- a/ja/autocmd.jax +++ b/ja/autocmd.jax @@ -683,7 +683,7 @@ QuickFixCmdPost QuickFixCmdPreと同様だが、QuickFixコマンドが実 る。 *RemoteReply* RemoteReply サーバとして働くVimからの応答を受け取ったとき - |server2client()|。パターンは|serverid|に対し + |server2client()|。パターンは{serverid}に対し て照合される。 は応答が送られてきたサーバの {serverid} になり、 は応答の実際の内容 @@ -897,7 +897,7 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに ファ名にマッチしなくとも気にしない。"*.foo" はイベントが発生した時点でのバッファ 名にマッチする。 -しかし、|:bwipte|でワイプアウトされたバッファに対しては、バッファローカルな +しかし、|:bwipe|でワイプアウトされたバッファに対しては、バッファローカルな 自動コマンドは実行されない。|:bdel|で削除されたバッファは実際にはまだ存在して いる(リストされなくなっただけ)なので、自動コマンドは実行される。 diff --git a/ja/change.jax b/ja/change.jax index 9408cefa9..54c80ca87 100644 --- a/ja/change.jax +++ b/ja/change.jax @@ -58,9 +58,9 @@ TRANSLATOR: 青山正太郎(mm) *D* ["x]D カーソル下から行の最後までの文字と、[count]-1 行を、 [レジスタ x に入れ] 削除する。"d$" と同義 - (行単位ではない|linesize|)。 - 'cpoptions'にフラグ'#'が入っているとカウントは無視され - る。 + (行単位ではない|linewise|)。 + 'cpoptions'にフラグ'#'が入っているとカウントは無視され + る。 {Visual}["x]x または *v_x* *v_d* *v_* {Visual}["x]d または @@ -210,7 +210,7 @@ gR 仮想置換モードに入る。打ち込んだ文字が画面上の既存 Note: - 挿入モード、置換モードは で終了できる。 - これらのモードでの他の特殊文字については、「テキストの挿入と置換」の章 - |mode-ins-rep| を参照。 + |mode-ins-repl| を参照。 - [count] の効果は、Vimが挿入モードや置換モードを抜けた後で発生する。 - 'cpoptions' がフラグ '$' を含んでいて、変更が1行以内である場合、Vimは削除さ れるテキストを表示しつづけ、最後に削除された文字の位置に '$' を置く。 @@ -220,7 +220,7 @@ Note: 置換モードは挿入モードと似ているが、文字を打ち込むたびに一文字ずつ削除される点 が違う。行の最後に達すると、Vimはそれ以降は (挿入モードと同様に) 文字を追加す る。置換モードでは、バックスペースキーは (もしあれば) 以前のテキストを復元する -(「テキストの挿入と置換」の章 |mode-ins-rep| を参照すること)。 +(「テキストの挿入と置換」の章 |mode-ins-repl| を参照すること)。 *cw* *cW* 特殊な場合: コマンド "cw" と "cW" は、カーソルが空白上になければ、"ce" と "cE" @@ -267,7 +267,7 @@ r{char} カーソル下の文字を {char} に置き換える。 *gr* gr{char} カーソル下の仮想文字を {char} に置き換える。このコマン ドはファイル上の空白ではなく、画面上の空白を置き換える。 - 詳細は |gR| と |Visual-Replace-mode| を参照。|r| と同 + 詳細は |gR| と |Virtual-Replace-mode| を参照。|r| と同 様、回数を指定できる。 {char} の入力方法は |r| と同様である。 {Vi mが |+vreplace| 機能付きでコンパイルされたときのみ @@ -439,7 +439,7 @@ Note: 'nrformats' が "octal" を含んでいるとき、0で始まる10進数 なくすることもできる。左方向へのシフトは、インデントがなくなったときに終了する。 右方向へのシフトは、空行には適用されない。 -'shiftround' がオンのとき、インデントは 'shiftindent' の倍数に丸められる。 +'shiftround' がオンのとき、インデントは 'shiftwidth' の倍数に丸められる。 'shiftwidth' がオンのとき、あるいは 'cindent' がオンで 'cinkeys' が '#' を含む とき、右方向へのシフトは '#' で始まる行に適用されない (これらの行は、行の最初 @@ -472,7 +472,7 @@ Cのプログラムを整形する "indent" (ただし、フィルタ機能を ルタコマンドはコマンド "." で繰り返せる。Vimは ":!" の後のコメント ('"' で始ま る行) を認識しない。 - *!* *filter* + *!* !{motion}{filter} {motion} のテキストを外部プログラム {filter} でフィル タ処理する。 @@ -1328,7 +1328,7 @@ Javadocのコメントでは次のものが使われる (":set" を使うとき {Vi mが |+comments| 機能付きでコンパイルされたときのみ有効} *fo-table* -テキストの整形方法はオプション 'foramatoptions' で調整できる。 'formatoptions' +テキストの整形方法はオプション 'formatoptions' で調整できる。 'formatoptions' は以下のフラグを含む文字列である。既定値は "tcq" である。読みやすくするために、 フラグをコンマで区切ってもよい。 diff --git a/ja/editing.jax b/ja/editing.jax index 73aae8894..70f5f5ece 100644 --- a/ja/editing.jax +++ b/ja/editing.jax @@ -163,7 +163,7 @@ Vimは入力したファイル名のフルパス名を記憶している。フ トファイルのファイル名に設定される。こうなるのはフラグ 'F' |cpo-F| がオプション 'cpoptions' に含まれているときだけである (既定では含まれている)。これは空のバッ ファにテキストを入力してから、それをファイルに保存するときに便利である。 -'cpoption' が 'f' |cpo-f| を含んでいるときは (既定では含まれて「いない」)、 +'cpoptions' が 'f' |cpo-f| を含んでいるときは (既定では含まれて「いない」)、 ":read file" でファイル名が設定される。これは引数なしでVimを起動してから、 ":read file" でファイルの編集を開始するときに便利である。 ファイル名が設定されていて'filetype'が空のとき、ファイルタイプ判別自動コマンド @@ -809,9 +809,8 @@ Unix およびその他いくつかのシステムではバッククォートも 数リストも影響を受ける。 ウィンドウが分割されると、新しいウィンドウはカレントウィンドウから引数リストを -受け継ぐ。すると2個のウィンドウは、片方でコマンド |:argslocal| か -|:argsglobal| を使って別の引数リストを使うようになるまで、そのリストを共有する -ことになる。 +受け継ぐ。すると2個のウィンドウは、片方でコマンド |:arglocal| か |:argglobal| +を使って別の引数リストを使うようになるまで、そのリストを共有することになる。 引数リストを使う @@ -1059,7 +1058,7 @@ MS-DOSとMS-Windowsでは、デヴァイスは名前から判断される: :q[uit]! 可視なバッファに変更点があっても書き込みをせずに終了す る。隠れバッファに変更点があると終了しない。必ず終了す - るにはコマンド |:qall!| を使うこと。 + るにはコマンド ":qall!" を使うこと。 :cq[uit] 書き込みをせずに必ず終了し、エラーコードを返す。コマン ド |:cq| を参照。Manx の QuickFix モードで使われる @@ -1099,14 +1098,14 @@ ZZ 変更点があればカレントファイルを書き込み、Vimを終了 れば書き込まれ、そしてウィンドウが閉じられることに注意。 *ZQ* -ZQ 変更点を確かめずに終了する (コマンド |:q!| と同様)。 +ZQ 変更点を確かめずに終了する (コマンド ":q!" と同様)。 {Vi にはない} 複数のウィンドウとバッファ *window-exit* *:qa* *:qall* :qa[ll] 変更点のあるバッファがない限り、Vimを終了する (変更点のある次 - のバッファに移動するにはコマンド |:bmod| を使うこと)。 + のバッファに移動するにはコマンド ":bmod" を使うこと)。 オプション 'autowriteall' がオンのときは、|:wqall| と同様に変 更点のあるバッファが全て書き込まれる。 {Vi にはない} @@ -1157,7 +1156,7 @@ ZQ 変更点を確かめずに終了する (コマンド |:q!| と同様)。 *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* :bro[wse] {command} {command} の引数のためにファイル選択ダイアログを開く。 - 現在の所、コマンド |:e|, |:w|, |:r|, |saveas|, |:sp|, + 現在の所、コマンド |:e|, |:w|, |:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc|, |:mksession| |:split|, |:vsplit|, |:tabe|と共に使える。 {Vi mのWin32版、Motif、Athena、GTKやMacのGUI版でのみ利 diff --git a/ja/fold.jax b/ja/fold.jax index aa0926d34..7f75dffa1 100644 --- a/ja/fold.jax +++ b/ja/fold.jax @@ -12,7 +12,7 @@ TRANSLATOR: 青山正太郎(mm) 折畳(folding) *Folding* *folding* -ユーザマニュアルの28章に折畳についての紹介がされている。|user_28.txt| +ユーザマニュアルの28章に折畳についての紹介がされている。|usr_28.txt| 1. 折畳方法 |fold-methods| 2. 折畳コマンド |fold-commands| diff --git a/ja/gui_w32.jax b/ja/gui_w32.jax index 90dcd4578..295ebac13 100644 --- a/ja/gui_w32.jax +++ b/ja/gui_w32.jax @@ -457,8 +457,8 @@ Vimのウィンドウに1つもしくは複数のファイルをドラッグ&ド 通常、Vimでは使用可能なマッピングを増やすために、Alt-の全ての組み合わせを 使うことができる。これはメニューにアクセスするためのAltキーの標準的な使い方と 衝突する。 -標準的な振る舞いをさせるための近道は、'winaltkey'オプションに"yes"を設定するこ -とである。しかしこうするとAltを使用したマッピングは一切使えなくなる。 +標準的な振る舞いをさせるための近道は、'winaltkeys'オプションに"yes"を設定する +ことである。しかしこうするとAltを使用したマッピングは一切使えなくなる。 もう一つの方法は'winaltkeys'に"menu"を指定することである。マッピングされていな いALTキーだけが、メニューのショートカットとしてWindowsに解釈される。だけども現 在の状態に依存することは許さない。 diff --git a/ja/insert.jax b/ja/insert.jax index 2b8899d21..0d33d25b3 100644 --- a/ja/insert.jax +++ b/ja/insert.jax @@ -134,7 +134,7 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* えば"ab^Hc"という内容のレジスタaがあった場合: > CTRL-R a 結果は"ac". CTRL-R CTRL-R a 結果は"ab^Hc". -< オプション'textwidth'、'formatoptons'その他はまだ適用される。 +< オプション'textwidth'、'formatoptions'その他はまだ適用される。 これらも避けたいのならば下記の"r"を使用する。'.'レジ スタ(最後に挿入されたテキスト)は、まだタイプされたように扱われ る。{Vi にはない} @@ -185,7 +185,7 @@ CTRL-Q CTRL-Vと同じ。 CTRL-X CTRL-Xモードに入る。これは単語の補完やウィンドウスクロールのコ マンドを入力する、サブモードである。|i_CTRL-X|と - |ins-completoin|を参照。{Vi にはない} + |ins-completion|を参照。{Vi にはない} *i_CTRL-E* CTRL-E カーソルの下の行の同じ位置の文字を挿入。{Vi にはない} @@ -908,8 +908,7 @@ O カーソルのある行の上に新しい行を作り、そこにテキス される。 これら2つのコマンドは、"."だけを含んだ行を入力するまで、挿入すべきテキストを待 -ちつづける。バックスラッシュで始まる行には警戒すべし。参照 -|lines-continuation|。 +ちつづける。バックスラッシュで始まる行には警戒すべし。|line-continuation|参照。 NOTE: ":append"と":insert"は":if"と":endif"の間では機能しません。 *:start* *:startinsert* @@ -960,8 +959,8 @@ NOTE: ":append"と":insert"は":if"と":endif"の間では機能しません。 念だがViとの互換性のため)。 ":r"にファイル名が与えられた場合、それを裏バッファのファイルになる。これは例え -ば代わりにそのファイルを編集したい時に使うことができる: "e! #"。'cpoption'オプ -ションから'a'フラグを削除することで、オフに切り替えることができる。 +ば代わりにそのファイルを編集したい時に使うことができる: "e! #"。'cpoptions'オ +プションから'a'フラグを削除することで、オフに切り替えることができる。 *file-read* 'fileformat'オプションがファイルのの流儀を決定する: diff --git a/ja/intro.jax b/ja/intro.jax index 08727102d..40e5d4c98 100644 --- a/ja/intro.jax +++ b/ja/intro.jax @@ -690,9 +690,9 @@ gQ "Ex" モードに切り替えます。"Q" と同じですが、実際に ノーマルモードと挿入/置換モードでは、スクリーンに現在のバッファの内容が表示さ れます。つまり、見ているものが得られるもの (WYSIWYG) です。しかし、例外が二つ があります: -- オプション 'cpoption' が '$' を含んでいて、一行に収まる範囲を変更 (|c|) する - ときは、テキストはすぐに削除されず、削除される文字の最後の位置に '$' が表示 - されます。 +- オプション 'cpoptions' が '$' を含んでいて、一行に収まる範囲を変更 (|c|) す + るときは、テキストはすぐに削除されず、削除される文字の最後の位置に '$' が表 + 示されます。 - あるウィンドウでテキストを挿入していて、別のウィンドウでも同じテキストを表示 しているとき、挿入を完了するまでそのウィンドウの表示は更新されません。 訳注: 確認できず diff --git a/ja/mlang.jax b/ja/mlang.jax index 0279e9eb5..2db522a2f 100644 --- a/ja/mlang.jax +++ b/ja/mlang.jax @@ -14,7 +14,7 @@ TRANSLATOR: nakadaira このマニュアルはメッセージとメニューを様々な言語で使用する方法について書かれて いる。マルチバイトテキストの編集については|multibyte|を参照。 -基本的なことはユーザマニュアルでも説明されている: |user_45.txt|。 +基本的なことはユーザマニュアルでも説明されている: |usr_45.txt|。 1. メッセージ |multilang-messages| 2. メニュー |multilang-menus| diff --git a/ja/options.jax b/ja/options.jax index 733e9a2c2..a14c8e9ff 100644 --- a/ja/options.jax +++ b/ja/options.jax @@ -2100,16 +2100,6 @@ Note 1番目の形式では、行全体がオプション指定に使われる |cscopequickfix|を参照。 *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'* -'cscopetag' 'cst' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 - 効} - タグコマンドに cscope を使う。|cscope-options| を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'cursorcolumn'* *'cuc'* *'nocursorcolumn'* *'nocuc'* 'cscopetag' 'cst' 切替 (既定ではオフ) グローバル {Vi mが|+cscope|機能つきでコンパイルされたときのみ @@ -3414,7 +3404,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる のもののために残される。ウィンドウを画面よりも高くするには、負の値を指 定すること。 - *guioptions_a* *'go-a'* + *'guioptions'* *'go'* 'guioptions' 'go' 文字列 (既定では "gmrLtT" (MS-Windows), "agimrLtT" (GTK, MotifとAthena)) グローバル @@ -3426,7 +3416,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる と "-=" を使うこと |add-option-flags|。 使用できるフラグは以下の通りである。 - *guioptions_a* + *guioptions_a* *'go-a'* 'a' 自動選択 (autoselect): 値に含まれると、Visualモードが開始され るたび、またはVisual選択範囲が変更されるたびに、Vimはウィンド ウシステム共通のクリップボードを使おうとする。つまりVisual選択 @@ -5209,7 +5199,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる コマンド ":hardcopy" で生成されるPostScript (PS) ファイルを印刷するた めに評価される expression を指定する。|pexpr-option| を参照。 - *'printfont'* *'pfn'* *E448* + *'printfont'* *'pfn'* 'printfont' 'pfn' 文字列 (既定では "courier") グローバル {Vi にはない} @@ -5408,7 +5398,6 @@ Note 1番目の形式では、行全体がオプション指定に使われる :set rulerformat=%15(%c%V\ %p%%%) < *'runtimepath'* *'rtp'* *vimfiles* - *'runtimepath'* *'rtp'* 'runtimepath' 'rtp' 文字列 (既定値: Unix: "$HOME/.vim, $VIM/vimfiles, diff --git a/ja/os_390.jax b/ja/os_390.jax index 37d6afaa4..80be21422 100644 --- a/ja/os_390.jax +++ b/ja/os_390.jax @@ -167,7 +167,7 @@ Vim スクリプト用に "ebcdic" 機能が追加された。ASCII に依存し < ============================================================================== -5. XTerm の問題 *OS390-has-ebcdic* *zOS-has-ebcdic* +5. XTerm の問題 *OS390-xterm* *zOS-xterm* Note: この問題はバージョン 6.1b で解決された。 ~ diff --git a/ja/print.jax b/ja/print.jax index 386908d06..2d1dd3e5f 100644 --- a/ja/print.jax +++ b/ja/print.jax @@ -62,7 +62,7 @@ ghostscript のようなプログラムが必要です。 中止するには中断キーを押してください (CTRL-C、MS-Windows では CTRL-Break)。 プリンタの出力は 'printfont' と 'printoptions' の設定で制御できます。ページ -ヘッダの書式は 'prinhtheader' に設定します。 +ヘッダの書式は 'printheader' に設定します。 ファイルの印刷は常に余白の設定に影響を受けます。カレントウィンドウの'wrap' や 'linebreak' の設定は影響しません。行の折り返しをしないようにするには diff --git a/ja/quickfix.jax b/ja/quickfix.jax index 726663604..deeb27312 100644 --- a/ja/quickfix.jax +++ b/ja/quickfix.jax @@ -753,7 +753,7 @@ ignore_makefileを設定すればよい(これらは存在するかのみチ を選択する。変数b:tex_flavorかg:tex_flavor(この順で探される)が存在すれば、そ れが:makeコマンドのためのオプションを定義する。もし両方とも存在しなければ、既 定値"latex"になる。例えば、AMS-TeXで書かれたmypaper.texから\input-ed chapter2.t -exを編集中に +exを編集中に > :let b:tex_flavor = 'amstex' :compiler tex diff --git a/ja/quickref.jax b/ja/quickref.jax index 9b157fee7..9d57136ed 100644 --- a/ja/quickref.jax +++ b/ja/quickref.jax @@ -826,10 +826,10 @@ smz 号のこと。英語圏では昔から使われている。 'printfont' 'pfn' |:hardcopy|で使用するフォント 'printheader' 'pheader' |:hardcopy|で使用するヘッダ 'printmbcharset' 'pmbcs' :hardcopyに使われるCJK文字集合 -'printmbfont' 'pbmfn' :hardcopyの出力に使われるフォント名 +'printmbfont' 'pmbfn' :hardcopyの出力に使われるフォント名 'printoptions' 'popt' |:hardcopy|の出力をコントロールする 'pumheight' 'ph' ポップアップメニューの高さの最大値 -'quoteescape' 'qw' 文字列中に使われるエスケープ文字 +'quoteescape' 'qe' 文字列中に使われるエスケープ文字 'readonly' 'ro' バッファの書き込みを制限する 'remap' 再帰的マッピングを有効にする 'report' 変更された行の数の方向が出る最小値 @@ -1269,7 +1269,7 @@ smz 号のこと。英語圏では昔から使われている。 |:split_f| :split {file} ウィンドウを2つに分割し、片方で {file}を開く |:vsplit| :vsplit {file} 同上。ウインドウは縦分割。 -|vertical| :vertical {cmd} {cmd}が縦分割するようにする +|:vertical| :vertical {cmd} {cmd}が縦分割するようにする |:sfind| :sf[ind] {file} ウィンドウを分割し、{file}を'path' 中で探し、それを編集 |CTRL-W_]| CTRL-W ] ウィンドウを分割し、カーソル下のタグ diff --git a/ja/scroll.jax b/ja/scroll.jax index e00115d06..70209ac90 100644 --- a/ja/scroll.jax +++ b/ja/scroll.jax @@ -161,7 +161,7 @@ zl スクリーンを[count]文字右へ移動する。従ってテキスト z or *zh* *z* zh スクリーンを[count]文字左へ移動する。従ってテキストは - [count]文字右へスクロールする。これは'warp'がオフの時 + [count]文字右へスクロールする。これは'wrap'がオフの時 にだけ働く。 {Vi にはない} *zL* diff --git a/ja/sign.jax b/ja/sign.jax index 64e88d415..c8d173d7a 100644 --- a/ja/sign.jax +++ b/ja/sign.jax @@ -16,7 +16,7 @@ TRANSLATOR: nakadaira 2. コマンド |sign-commands| {Vi にはこの機能はない} -{コンパイル時に|+sign|機能を指定した場合にのみ利用可能} +{コンパイル時に|+signs|機能を指定した場合にのみ利用可能} ============================================================================== 1. 機能紹介 *sign-intro* *signs* @@ -122,7 +122,7 @@ SignColumnの色を使う|hl-SignColumn|。色を設定するには次のよう :sign place {id} line={lnum} name={name} file={fname} {name}として定義された目印をファイル{fname}の{lnum}行目に設置 する。 - *sign-fname* + *:sign-fname* ファイル名{fname}は既に読込済みのバッファでなければなら ない。正確なファイル名でなければならず、ワイルドカードや環境変 数そして"~"は展開されない。空白はエスケープされない。末尾の空 diff --git a/ja/starting.jax b/ja/starting.jax index b239fd962..b42d65c82 100644 --- a/ja/starting.jax +++ b/ja/starting.jax @@ -332,8 +332,8 @@ VMSでは全てのオプション引数は小文字であるとみなされる *-N* -N 非コンパチブルモード。オプション'compatible'をオフに設定する。 - ファイル.vimrcがないときに、'nocomatible'(Vimの拡張を有効)にす - ることができる。|compatible-default|も参照。{Vi にはない} + ファイル.vimrcがないときに、'nocompatible'(Vimの拡張を有効)に + することができる。|compatible-default|も参照。{Vi にはない} *-y* *easy* -y 簡易モード。|evim|や|eview|と同じ。'insertmode'をオンに設定し diff --git a/ja/tabpage.jax b/ja/tabpage.jax index 149cef61c..1e81e50f8 100644 --- a/ja/tabpage.jax +++ b/ja/tabpage.jax @@ -32,7 +32,7 @@ TRANSLATOR: nakadaira ラベルをマウスでクリックすると、そのタブページにジャンプできます。他の方法でも タブページを移動できます。 -ほとんどのコマンドは作業中のタブページ内だけで動作します。|CTRL=W| コマンド +ほとんどのコマンドは作業中のタブページ内だけで動作します。|CTRL-W| コマンド や、|:tab| を前置しない |:windo|、|:all|、|:ball| なども同様です。カレントタブ ページ以外にも作用するコマンドについては以下で説明しています。 diff --git a/ja/tagsrch.jax b/ja/tagsrch.jax index bfb1958d0..126f023b9 100644 --- a/ja/tagsrch.jax +++ b/ja/tagsrch.jax @@ -93,7 +93,7 @@ CTRL-]はtelnetの標準エスケープキーである。タグにジャンプ 始まる)パターンを使用し、かつ":tselect"を使ったときには見つけることができる。 大文字、小文字を区別しないタグ検索を使うと、tagsファイル内で2分探索ができなく なるため処理が遅くなる、ということに注意すること。これはタグファイルを大文字と -小文字を区別せずにソートすることで回避できます。'tagsearch'オプションの説明も +小文字を区別せずにソートすることで回避できます。'tagbsearch'オプションの説明も 参照してください。 ============================================================================== diff --git a/ja/usr_01.jax b/ja/usr_01.jax index 7c4ad0e10..8f4ee9792 100644 --- a/ja/usr_01.jax +++ b/ja/usr_01.jax @@ -90,7 +90,7 @@ Vim を起動すると、オプション 'compatible' はオフになってい に入っている場合は、他のファイルによって 'compatible' がオンに設定されているは ずです。 -詳しくは|vimrc|と|compatble-default|をご覧ください。 +詳しくは|vimrc|と|compatible-default|をご覧ください。 Note: このマニュアルはVimを普通に使うための説明書です。実は evim(=easy vim) diff --git a/ja/usr_05.jax b/ja/usr_05.jax index 8cc699e06..a2f031fd1 100644 --- a/ja/usr_05.jax +++ b/ja/usr_05.jax @@ -583,7 +583,7 @@ Tab 文字が ^I と表示されます。行末には $ と表示され、通常 な、行末の空白もよくわかるようになります。 これの欠点はファイルに Tab 文字がたくさんあると見づらくなる点です。カラー端末 か GUI を使っている場合は、空白と Tab 文字を別の文字に置き換えて強調表示するこ -とができます。'listchar' オプションを使ってください: > +とができます。'listchars' オプションを使ってください: > :set listchars=tab:>-,trail:- diff --git a/ja/usr_06.jax b/ja/usr_06.jax index fc8c48d89..642b80a44 100644 --- a/ja/usr_06.jax +++ b/ja/usr_06.jax @@ -58,7 +58,7 @@ GUI バージョンのときだけ使いたい場合は、":syntax enable" を | - カラー端末じゃない。 Vim は、太字やイタリック、下線も使えます。でもそれだけではあまりカッコ 良くはできません。カラー対応の端末を入手するのがいいでしょう。 - Unixなら、XFree86プロジェクト(|xfee-xterm|)のxtermがお勧めです。 + Unixなら、XFree86プロジェクト(|xfree-xterm|)のxtermがお勧めです。 - カラー端末であることを Vim が認識できない $TERM の設定が正しいかどうかを確認してください。例えば、カラー対応の diff --git a/ja/usr_07.jax b/ja/usr_07.jax index 796f32964..7d126ab8f 100644 --- a/ja/usr_07.jax +++ b/ja/usr_07.jax @@ -235,7 +235,7 @@ CTRL-^ を使うと二つのファイル間を素早く移動できます(日本 ファイルマーク -------------- -4 章 (|4.1|) では "mx" でマークを付け、"`x" でその場所にジャンプする方法を説明 +4 章 (|04.1|) では "mx" でマークを付け、"`x" でその場所にジャンプする方法を説明 しました。そのマークはファイルの中だけで使えます。別のファイルを開いて、それに 同じマークを付けても、マークはそのファイルに固有のものとなります。つまり各ファ イルはそれぞれのマークを持っていて、ファイル内に閉じているということです。いま diff --git a/ja/usr_09.jax b/ja/usr_09.jax index 14da06972..22a026ab8 100644 --- a/ja/usr_09.jax +++ b/ja/usr_09.jax @@ -104,7 +104,7 @@ GUI 版の Vim がインストールされていない場合は起動できま :set guioptions-=T -これは 'guioption' オプションから "T" フラグを取り除くコマンドです。GUI の他の +これは 'guioptions' オプションから "T" フラグを取り除くコマンドです。GUI の他の 部品もこのオプションを使って、表示/非表示を指定できます。詳しくはオプションの ヘルプを参照してください。 diff --git a/ja/usr_25.jax b/ja/usr_25.jax index 1ff0248fa..c373ddf48 100644 --- a/ja/usr_25.jax +++ b/ja/usr_25.jax @@ -1,436 +1,422 @@ COMMENT: 整形されたテキストの扱い(折返し、配置、インデント、表) -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) -*usr_25.txt* For Vim version 6.3. Last change: 2003 Jun 21 +*usr_25.txt* For Vim version 7.1. Last change: 2007 May 11 - VIM USER MANUAL - by Bram Moolenaar + VIM USER MANUAL - by Bram Moolenaar - フォーマット付きテキストを編集する + テキストの整形 -文章が1行1文になっていることなどほとんどありません。この章ではページなどの -書式に合うように文を分割する方法について述べます。 -vimには1行の段落や表を編集する便利な機能もあります。 +文章を一行に一文ずつ書くようなことはほとんどありません。この章では、テキストが +画面に収まるように整形する方法などを説明します。 +一行段落や表を編集するための便利な機能もあります。 -|25.1| 行を分割する -|25.2| テキストを揃える -|25.3| インデントとタブ -|25.4| 長い行の分割 -|25.5| 表の編集 +|25.1| 行を改行する +|25.2| テキストの位置揃え +|25.3| インデントとタブ +|25.4| 長い行の扱い +|25.5| 表の編集 - Next chapter: |usr_26.txt| 繰り返し - Previous chapter: |usr_24.txt| 挿入を素早く行う -Table of contents: |usr_toc.txt| +次章: |usr_26.txt| 繰り返し +前章: |usr_24.txt| 素早く入力する +目次: |usr_toc.txt| ============================================================================== -*25.1* 行を分割する +*25.1* 行を改行する -vimには文章をより簡単に分割するための機能がたくさんあります。デフォルトでは、 -自動的に改行することはありません。つまり、利用者が自分でを押す必要が -あります。プログラムを作る時には、行末を自分で決められるこのやり方が使いやす -いでしょう。でも1行が最大70桁にしたい文書を作る時にはあまり良い方法ではあり -ません。 -'textwidth'オプションを設定すると、vimが自動的に改行を挿入してくれます。例え -ば、1行30桁以内のとても巾の狭いコラムを書きたい場合を考えてみましょう。その -場合はこのようなコマンドを実行します。 > +文章を快適に編集するための機能がいくつかあります。初期設定では行は自動的に改行 +されません。つまり自分で を押す必要があります。プログラムを書くときは +その方が便利ですが、ドキュメントを書くときは少し不便です。文章が 70 桁の幅に収 +まるように自分で整形するのは大変でしょう。 +'textwidth' オプションを設定すると、行が自動的に改行されるようになります。例え +ば、30 桁の幅で文章を書きたい場合は次のように設定します: > - :set textwidth=30 + :set textwidth=30 -で、普通に入力を行います。(上の数字は桁数です) +そして、テキストを入力します (上の数字はルーラーです): - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a whi ~ + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a whi ~ -ここで、次に"l"を入力すると、1行が30桁の制限を越えますので、vimはこれに気付 -いて、改行を挿入します。その結果、このようになります。 +次に "l" を入力すると一行が 30 桁の制限を超えるので、自動的に改行が挿入されま +す。その結果、次のようになります: - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a ~ - whil ~ + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + whil ~ -さて、続けましょう。同様に残りのパラグラフを入力します。 +そのまま続けて文章の残りを入力しましょう: - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a ~ - while. One time, I was stopped ~ - by the Fort Worth police, ~ - because my homework was too ~ - hard. True story. ~ + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ -自分で改行を入力する必要はありんせん。vimが自動的にそれを置いてくれます。 +自分で改行する必要はありません。改行は自動的に挿入されます。 - Note: - 'wrap'オプションだと、行を改行して表示してくれます。でもこれはファイ - ルに改行文字を挿入するわけではありません。 + Note: + 'wrap' オプションを使うと長い行を改行して表示できますが、実際に改行文 + 字が挿入されるわけではありません。 -再桁揃え --------- - -vimはワープロではありません。ワープロならば、段落の最初で何か削除すると、改 -行位置を再設定してくれます。vimはそうではありません。ですから、最初の行で -"programming"を削除するとその行だけが短かくなってしまいます。 - - 1 2 3 - 12345678901234567890123456789012345 - I taught for a ~ - while. One time, I was stopped ~ - by the Fort Worth police, ~ - because my homework was too ~ - hard. True story. ~ - -これではうまくありません。パラグラフの形を整えるには"gq"オペレータを使いま -す。 -まず、ビジュアルモードでこれを行ってみましょう。最初の行で次のように入力しま -す。 > - - v4jgq - -"v"はビジュアルモードの開始、"4j"でパラグラフの最後までを範囲とし、"gq"オペ -レータを実行します。この実行結果はこうなります。 - - 1 2 3 - 12345678901234567890123456789012345 - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - -Note: 自動的にフォーマットすることもできます。|auto-format|を見てください。 - -"gq"はオペレータですので、適用対象の範囲を選ぶのに3つの方法が使えます。 -ビジュアルモード、カーソルモーション、テキストオブジェクトの3つです。 -上の例なら"gq4j"でも同じことができます。これだと打鍵数は少ないですが、行数が -わかっていないといけません。"}"という便利なモーションコマンドがあります。こ -のコマンドは段落の最後までカーソルを移動します。 -"gq"でとても便利に使えるテキストオブジェクトがあります。これをやってみてくだ -さい。 > - - gqap - -"ap"はテキストオブジェクトで"a paragraph"の意味です。これは(空行で区切られた) -1つの段落のフォーマットを整えます。 -段落を空行で区切ってあれば、こうすれば、ファイル全体のフォーマットを整えるこ -とができます。 > - - gggqG - -"gg"はファイルの1行目に移動し、"gqG"は最後の行までのフォーマットを整えます。 -Warning: 段落がちゃんと区切られていないと、1つにつながってしまいます。よく -あるのは、空白やTABのみの行を作ってしまう場合です。これは空白行ですが、空行 -ではありません。 +再整形 +------ -vimはプレインテキストを越えたフォーマット設定ができます。この変更のやり方は -|fo-table|をご覧ください。全停止した後ろの空白の数を変える方法については、 -'joinspaces'オプションの説明をご覧ください。 -フォーマットを整えるのに外部コマンドを使うのも可能です。vimの組み込みコマン -ドでは正しくフォーマットが整えられない場合に便利です。'formatprg'オプション -をご覧ください。 +Vim はワープロではありません。ワープロなら、段落の最初の方で文字を削除すると、 +改行の位置が調整されますが、Vim は違います。つまり、一行目の "programming" を +削除すると、単にその行が短くなるだけです: + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ + +これはよくありません。"gq" オペレータを使って段落を整形しましょう。 +まず、ビジュアルモードを使ってやってみます。一行目に移動して次のように入力しま +す: > + + v4jgq + +"v" はビジュアルモードの開始、"4j" で段落の最後まで移動し、"gq" オペレータを実 +行します。結果: + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + +Note: 特定の書式に従った文章なら自動的に整形することもできます。 +|auto-format| 参照。 + +"gp" はオペレータなので、ビジュアルモード、カーソルモーション、テキストオブジェ +クト、の三つの方法で適用範囲を選択できます。 +上記の例は "gq4j" とすることもできます。これはコマンドは短くなりますが、行数を +数えないといけません。"}" というモーションコマンドを使えばもっと簡単です。これ +は段落の末尾に移動するコマンドです。"gq}" でカーソル位置から段落の末尾までが整 +形されます。 +テキストオブジェクトを使うともっと簡単にできます: > + + gqap + +"ap" は "a-paragraph" という意味です。(空行区切りの) 一つの段落が整形されます。 +カーソル位置より前の部分も範囲に入ります。 +段落が空行で区切られているなら、次のコマンドでファイル全体を整形できます: > + + gggqG + +"gg" でファイル先頭に移動し、"gqG" でファイル末尾まで整形します。 +注意: 段落が適切に区切られていない場合、それらの文章は一つにつながってしまいま +す。スペースや Tab 文字だけの行があったりするのはよくあるミスです。それは空白 +行です。空行ではありません。 + +整形できるのは単純なプレインテキストだけではありません。整形の設定については +|fo-table| を参照してください。ピリオドの後ろに挿入されるスペースの数を変更す +るには 'joinspaces' を参照してください。 +外部プログラムを使って整形することもできます。Vim の組み込みコマンドで正しく整 +形できないようなテキストを編集するのに便利です。'formatprg' オプション参照。 ============================================================================== -*25.2* 文章の右寄せ、左寄せ +*25.2* テキストの位置揃え -ある範囲の行をセンタリングするには、このコマンドを使います。 > +テキストを中央揃えするには、次のコマンドを使います: > - :{range}center [width] + :{range}center [width] -{range}は通常はコマンド行で指定した範囲です。[width] はオプションパラメタで -センタリングする行の桁数を指定できます。[width]が指定されていない場合は、デ -フォルト値として'textwidth'の値を用います。(もし'textwidth'が0なら、80とみな -します。例えば、次のように使います。 > +{range} は通常のコマンドライン範囲指定です。 [width] には中央揃えに使う行の幅 +を指定できます。 [width] を指定しなかった場合は 'textwidth' の設定が使われま +す。('textwidth' が 0 なら 80 が使われます) +例: > - :1,5center 40 + :1,5center 40 -この結果はこうなります。 +次のような結果になります: I taught for a while. One ~ time, I was stopped by the ~ Fort Worth police, because my ~ homework was too hard. True ~ - story. ~ + story. ~ -右寄せ ------- +右端揃え +-------- -同じように右寄せするには":right"コマンドを使います。 > +同様に、右端揃えするには ":right" コマンドを使います: > - :1,5right 37 + :1,5right 37 -結果はこの通り。 +結果: - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ -左寄せ ------- +左端揃え +-------- -最後はこのコマンドです。 +次のコマンドで左端揃えできます: > - :{range}left [margin] + :{range}left [margin] -":center"や":right"と違うのは、":left"で指定するパラメタが行の長さではないと -いう点です。ここでの値は左マージンとなります。省略した場合は、文章は画面の左 -端に寄せることになります(つまりマージン値が0の時と同じです)これが5の場合 -は、文章は左端から5桁分のインデントが付きます。例えば、このようなコマンドを -実行してみます。 > +":center" や ":right" と違い、":left" の引数に指定する値は行の幅ではありませ +ん。左マージンを指定します。省略した場合は、文章は左端にぴったり寄せられます +(マージンに 0 を指定したのと同じ)。5 を指定した場合は 5 つのスペースでインデン +トされます。例えば、次のように使います: > - :1left 5 - :2,5left + :1left 5 + :2,5left -この結果はこのようになります。 +次のような結果になります: - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ -文章の両方揃え --------------- +両端揃え +-------- -vimにはテキストを両揃えにする機能は組み込まれていません。とはいっても、それを -行ってくれる素晴らしいマクロパッケージがあります。このパッケージを使うには、 -次のコマンドを実行します。 > +両端揃えするための組み込みコマンドはありません。しかし、そのためのマクロパッ +ケージが用意されています。パッケージを使うには、次のコマンドを実行します: > - :runtime macros/justify.vim + :runtime macros/justify.vim -このvimスクリプトファイルでは新たなビジュアルコマンド"_j"を定義しています。 -このコマンドでブロックを指定するには、まずビジュアルモードで範囲を選択して -"_j"コマンドを実行します。 -より詳しい説明についてはファイルの内容をご覧ください。これは次の行で"gf"コ -マンドでジャンプしてください。 +新しいビジュアルモードコマンド "_j" が定義されます。ビジュアルモードで範囲選択 +して "_j" を実行すればテキストを両端揃えできます。 +詳しい説明はスクリプトファイルを参照してください。この名前の上で "gf" を使えば +ファイルを開けます: $VIMRUNTIME/macros/justify.vim -もう一つは外部プログラムてフィルタを通す方法です。こんな具合です。 > +外部コマンドを使って整形することもできます。例: > - :%!fmt + :%!fmt ============================================================================== -*25.3* インデント(段付け)とタブ +*25.3* インデントとタブ -文章を他の部分より目立たせるのにインデントを使えます。例えば、このマニュアル -では例題の部分を空白8つかでインデントしています。普通に各行でキーを押 -して、入力しても構いません。次の文章を使いましょう。 +テキストをインデントすればその部分を目立たせることができます。例えばこのマニュ +アルでは、例文を示すときに 8 個のスペースまたは Tab 文字でインデントしていま +す。通常なら行頭で Tab キーを押せばインデントできます。例: - the first line ~ - the second line ~ + the first line ~ + the second line ~ -上の例はを押してから文章を入力し、、またを押して文章を入力 -しています。'autoindent'オプションを使うと、自動的にインデントを補ってくれま -す。 > +Tab キーを押してテキストを挿入、、また Tab キーを押してテキストを挿入し +ます。 +'autoindent' オプションを設定すると、自動的にインデントできます: > - :set autoindent + :set autoindent -新しい行を入力しようとすると、その直前の行と同じ桁数のインデントを行います。 -上の例なら、を押した後のは入力する必要がありません。 +新しい行を開始すると、直前の行と同じだけのインデントが挿入されます。上の例な +ら、 を押した後の Tab キーが必要なくなります。 インデントを増やす ------------------ -ある行のインデント量を増やすには">"オペレータを使います。よく使うのは">>"で -す。これは現在行のインデントを増やします。 -このコマンドで増えるインデント量は'shiftwidth'オプションで指定できます。この -デフォルト値は8です。">>"で増やすインデント量を例えば、空白4つにするには、 -このようにします。 > +行のインデント量を増やすには ">" オペレータを使います。現在行のインデントを増 +やしたい場合は ">>" を使うと簡単です。 +インデントの増加量は 'shiftwidth' オプションで設定できます。初期設定は 8 です。 +例えば、">>" でスペース 4 つ分のインデントを増やしたい場合は次のように設定しま +す: > - :set shiftwidth=4 + :set shiftwidth=4 -上で示した例題の2行目で">>"を使うと、このような結果となります。 +上記例文の二行目で ">>" を使うと、次のようになります: - the first line ~ - the second line ~ + the first line ~ + the second line ~ -なお、"4>>"は現在行から4行分のインデント量を増やす命令です。 +"4>>" は四つの行のインデントを増やすコマンドです。 -TABSTOP -------- +タブストップ +------------ -インデントを4桁毎にインデントを設定したい場合には'shiftwidth'を4に設定しま -す。しかしこれだとを押した時には8桁のインデントのままです。これを変更 -するには、'softtabstop'オプションを設定します。 > +インデントを 4 桁にしたい場合は 'shiftwidth' を 4 に設定します。しかしそれだけ +では、 を押したときのインデントの量はスペース 8 個分のままです。これを変 +更するには 'softtabstop' オプションを設定します: > - :set softtabstop=4 + :set softtabstop=4 -これはキーを押すとインデント巾として空白を4つ挿入します。既に空白が4 -つある場合には、文字に置き換えます。(ファイル上で7つ分の空白文示の領域 -を節約できます) -なお、常に空白文字を使い文字を使わせたくない場合は'expandtab'オプション -を使います。 +これで、 キーがスペース 4 個分のインデントになります。既に 4 つスペースで +インデントされている場合は 文字に置き換えられます (7 バイト節約)。(Tab +文字を使いたくない場合は 'expandtab' を設定してください。) - Note: - 'tabstop'オプションは4に設定できます。でも、他の時に'tabstop'の値を - デフォルト(=8)のままで再編集すると、正しく表示されないでしょう。また - 他のアプリケーションで編集する時やプリンタに印刷する時もうまくいかな - いでしょう。ですから'tabstop'の値は常にデフォルトの8のままにしておく - のが良いでしょう。8というのはどこに行っても通じる値ですから。 + Note: + 'tabstop' オプションを 4 に設定することもできますが、その設定で編集し + たファイルを 'tabstop' の初期設定 (8) で見ると見た目が崩れてしまいま + す。他のプログラムで印刷する場合もインデントが崩れてしまうかもしれませ + ん。したがって、'tabstop' は常に 8 のままにしておきましょう。それが標 + 準的な値です。 -TABを変更する -------------- +TAB幅を変更する +--------------- -TABが3であることを前提に書かれたファイルを編集すると、vimでは見苦しく表示さ -れます。普通はTABが8だからです。'tabstop'を3に設定すれば、表示は直ります。 -ですがこのファイルを編集する都度、この設定を行わなければなりません。vimでは -そのファイルのTABの数を変更できます。最初に'tabstop'を正しく見えるように設定 -し、次に":retab"コマンドを使います。 > +tabstop が 3 で書かれたファイルを (tabstop が 8 の) Vim で開くと表示が崩れてし +まいます。'tabstop' を 3 に設定すれば表示を直すことができますが、ファイルを開 +くたびに設定を変更しなければなりません。 +ファイルの tabstop 幅を変更することができます。インデントが正しく表示されるよ +うに 'tabstop' を設定してから ":retab" コマンドを使います: > - :set tabstop=3 - :retab 8 + :set tabstop=3 + :retab 8 -":retab"コマンドは'tabstop'を8に変更し、それでも表示が同じになるように文章 -を変更します。これは連続する空白をと空白記号に置き換えます。 その後で -ファイルの書き込みを行えば、以降はオプション設定を行わなくても正しくインデン -トされた状態で編集ができます。 -Warning: プログラムソースに対して":retab"を使うと、文字列定数の中にある空白 -記号が変更されてしまうかもしれません。ですから、文字列中ではを使わず、 -"\t"を使うようにした方が良いでしょう。 +":retab" コマンドを使って 'tabstop' を 8 に変更しています。ただし、テキストの +見た目は変更されません。空白部分が Tab 文字とスペースに置き換えられます。その +状態でファイルを保存すれば、次からは設定を変更しなくてもインデントが正しく表示 +されます。 +注意: プログラムに対して ":retab" を使った場合、文字列定数の中の空白記号が変更 +されてしまうかもしれません。文字列定数の中では Tab 文字ではなく "\t" を使うよ +うにしましょう。 ============================================================================== -*25.4* 長い行の分割 - -ウィンドウの横巾よりも長い行があるようなファイルを編集する場合には、その内容 -が画面に納まるように、長い行を途中で折り曲げて表示します。 -'wrap'オプションをoffにすると、ファイル中の各行は画面上でも1行に表示されま -す。ですから長い行の行末は画面のずっと右側にあって表示されなくなります。 -カーソルを表示されていない部分に動かそうとすると、vimはその部分を表示できる -ように画面をスクロールします。言ってみれば、文章を見る覗き窓が水平方向に移動 -するイメージです。 -デフォルトでは、GUI版のvimでは水平スクロールバーは表示しません。もし使いたけ -れば、このコマンドを使います。 > - - :set guioptions+=b - -vimウィンドウの下に水平スクロールバーが表示されます。 - -もしスクロールバーがなかったり、使いたくない場合は、次に示すようなコマンドを -使って文章をスクロールします。カーソルは同じ場所のままですが、必要に応じて文 -字のある場所に動くことはあります。 - - zh 右にスクロール - 4zh 右に4文字分スクロール - zH 右にウィンドウ巾の半分だけスクロール - ze カーソルが右端に来るように右スクロール - zl 左にスクロール - 4zl 左に4文字分スクロール - zL 左にウィンドウ巾の半分だけスクロール - zs カーソルが左端に来るように左スクロール - -1行の文章を使ってこれを試してみましょう。最初にカーソルは"which"の"w"の場所 -にあります。上にある"current window"は現在見えている範囲を示しています。その -下にある"window"の行は左に書いてあるコマンドを実行した後に見える範囲を示して -います。 - - |<-- current window -->| - some long text, part of which is visible in the window ~ - ze |<-- window -->| - zH |<-- window -->| - 4zh |<-- window -->| - zh |<-- window -->| - zl |<-- window -->| - 4zl |<-- window -->| - zL |<-- window -->| - zs |<-- window -->| - - -ラップしない場合の移動 ----------------------- - -'wrap'オプションがoffで水平スクロールされた状態の場合、画面に見えている範囲 -でカーソルを動かすコマンドを次に示します。つまり、画面の左右にあるはずの文は -無視します。言い換れば、以下のコマンド群はスクロールをしないということです。 - - g0 その行の右端の文字まで移動 - g^ その行の右端(ただし空白文字類を除く)の文字まで移動 - gm その行の中央に移動 - g$ その行の左端に見えている文字まで移動 - - |<-- window -->| - some long text, part of which is visible ~ - g0 g^ gm g$ - - -単語の分割 *edit-no-break* ----------- +*25.4* 長い行の扱い + +ウィンドウの幅に収まりきらないようなファイルを編集することがあると思います。そ +の場合、すべての行が画面に収まるように折り返して表示されます。 +'wrap' オプションをオフにすると、すべての行が一行で表示されます。長い行の画面 +に収まりきらない部分は表示されません。 +表示されていない部分にカーソルを動かすと、テキストがスクロールされ、その部分が +表示されます。ウィンドウの枠を右に動かすような感じです。 +初期設定では、GUI の水平スクロールバーは表示されません。表示したい場合は次のコ +マンドを使います: > + + :set guioptions+=b + +Vim ウィンドウの下部に水平スクロールバーが表示されます。 + +スクロールバーが使えない、または使いたくない場合は、次のコマンドでテキストをス +クロールしてください。カーソルの位置は必要なければ変更されません。 + + zh 右にスクロール + 4zh 右に 4 文字分スクロール + zH 右にウィンドウの半分だけスクロール + ze カーソル位置が右端になるように右スクロール + zl 左にスクロール + 4zl 左に 4 文字分スクロール + zL 左にウィンドウの半分だけスクロール + zs カーソル位置が左端になるように左スクロール + +例を使って説明します。カーソルは "which" の "w" にあります。上部の "current +window" はウィンドウに表示されている範囲を示しています。コマンド実行後の表示範 +囲を "window" で示します。 + + |<-- current window -->| + some long text, part of which is visible in the window ~ + ze |<-- window -->| + zH |<-- window -->| + 4zh |<-- window -->| + zh |<-- window -->| + zl |<-- window -->| + 4zl |<-- window -->| + zL |<-- window -->| + zs |<-- window -->| + + +折り返し無しの場合の移動 +------------------------ + +'wrap' がオフで、テキストが水平スクロールされているとき、次のコマンドで画面の +表示範囲を基準にして移動できます。ウィンドウの左右のテキストは無視されます。こ +れらのコマンドはテキストをスクロールしません: + + g0 行の右端に移動 + g^ 行の右端の最初の非空白文字に移動 + gm 行の中央に移動 + g$ 行の左端に移動 + + |<-- window -->| + some long text, part of which is visible ~ + g0 g^ gm g$ + + +禁則処理 *edit-no-break* +-------- -他のアプリケーションで使えるようにするため、1つの段落が改行されないようにし -なければならないかもしれません。'wrap'をoffにした場合にはこのような行の全体 -を見通すことができないという欠点があります。'wrap'をonにすると各単語の途中で -も行分割してしまいますから、読みづらくなってしまいます。 -この種の段落を編集する時は、'linebreak'オプションを設定しておくのが良いでしょ -う。これを使うと行を表示する時に適切な箇所で改行をします。'linebreak'がoffの -状態ではこのような表示となります。 - - +---------------------------------+ - |letter generation program for a b| - |ank. They wanted to send out a s| - |pecial, personalized letter to th| - |eir richest 1000 customers. Unfo| - |rtunately for the programmer, he | - +---------------------------------+ -> - :set linebreak - -上の設定を行った後は、このようになります。 - - +---------------------------------+ - |letter generation program for a | - |bank. They wanted to send out a | - |special, personalized letter to | - |their richest 1000 customers. | - |Unfortunately for the programmer,| - +---------------------------------+ - -これ以外にも、次のような関連オプションがあります。 - 'breakat' 改行を挿入しても良い文字を指定します。 - 'showbreak' 行分割した行の先頭に表示する文字を指定します。 - 'textwidth' これを0に設定すると段落を分割しなくなります。 - - - -分割された行内の移動 --------------------- +他のプログラムで使うテキストを編集する場合、一つの段落を改行無しで書かなければ +ならないことがあります。'nowrap' を使うと編集中の文全体を表示することができま +せん。'wrap' をオンにすると単語の途中で行が折り返されて読み難くなってしまいま +す。 +そのような場合は 'linebreak' オプションを使ってください。適切な場所で行が折り +返されるようになります。ファイルの内容は変更されません。 +'linebreak' がオフの状態では次のように表示されますが: + + +---------------------------------+ + |letter generation program for a b| + |ank. They wanted to send out a s| + |pecial, personalized letter to th| + |eir richest 1000 customers. Unfo| + |rtunately for the programmer, he | + +---------------------------------+ + +'linebreak' を設定すると: > + + :set linebreak -"j"と"k"コマンドはカーソルを前後の行に移動します。つまり'wrap'がonの時に長い -行があると、1つの"j"や"k"で何行もの行を一度に動いてしまいます。 -画面上での1行だけカーソルを動かしたい時には"gj"と"gk"コマンドを使います。 -行分割されていない行では"j"や"k"と同じ動きとなります。行が分割されている時は -画面上で1つ下か上の行に移動します。 -この移動コマンドを矢印キーに割り当てたい場合には、このようなマップ定義を行う -ことができます。 > +次のように表示されます: - :map gk - :map gj + +---------------------------------+ + |letter generation program for a | + |bank. They wanted to send out a | + |special, personalized letter to | + |their richest 1000 customers. | + |Unfortunately for the programmer,| + +---------------------------------+ +関連オプション: + 'breakat' 折り返し可能な文字を指定する。 + 'showbreak' 折り返された行の先頭に表示される文字。 + 'textwidth' 0 に設定して段落が改行されないようにしてください。 -1つの段落を1行にまとめる --------------------------- -MS-Wordのようなプログラムに文章を送り込もうとすると、各段落は1行に繋いでお -くべきでしょう。段落を空白行で区切ってある文章なら、次のようにすれば、各段落 -を1つの行に変換できます。 > +表示行単位の移動 +---------------- + +"j" と "k" で上下の行に移動できますが、長い行の上で使うと、一度に複数の表示行 +を移動することになります。 +画面上で一行だけ移動したい場合は "gj" と "gk" を使ってください。行が折り返され +ていないときは "j" と "k" と同じ動作をします。折り返されているときは、画面上の +一行だけ移動します。 +次のようなマップを定義しておくと便利かもしれません: > + + :map gk + :map gj + + +段落を一行につなげる +-------------------- + +MS-Word のようなプログラムにテキストをコピーするとき、段落は一行につながってい +なければなりません。段落が空行で区切られているなら、次のコマンドでそれぞれの段 +落を一行につなげることができます: > :g/./,/^$/join -なんだか複雑そうですね。ではこれを分解してみましょう。 +すこし複雑ですね。分解して説明します: - :g/./ 何でもよいから1文字以上の文字を含む行を探す":global" - コマンド - ,/^$/ 上で見つけた行(空行でない行)から空白行までの範囲を示 - す。 - join 上で定めた範囲に対してそれを1行に繋ぐ":join"コマンド + :g/./ 一文字以上の文字を含んでいる行を探す":global"コマンド + ,/^$/ 現在行(非空行)から空行までの範囲を指定 + join 指定された範囲の行を ":join" コマンドで一行につなげる -次のような8つの改行があるような文章があるとします。 +30 桁で改行された次のようなテキストが: +----------------------------------+ |A letter generation program | @@ -443,8 +429,7 @@ MS-Wordのようなプログラムに文章を送り込もうとすると、各 |the programmer, | +----------------------------------+ -これが次の2行にまとまります。 -You end up with two lines: +二行にまとめられます: +----------------------------------+ |A letter generation program for a | @@ -454,139 +439,131 @@ You end up with two lines: |Unfortunately for the programmer, | +----------------------------------+ -この指定は段落と段落の間に空白やTABを含むような空白行で区切ってあるとうまく -動きません。次のコマンドはそういった空白行でもうまく動きます。 -> +Note: スペースや Tab 文字を含んでいる空白行 (空行ではない) で段落が区切られて +いる場合、上記のコマンドは機能しません。次のコマンドは空白行でも機能します: > + :g/\S/,/^\s*$/join -これでも、最後の段落を1行にまとめるのであれば、最後の行は空行か空白行でなけ -ればなりません。 +最後の段落を処理するには、ファイル末尾に空行または空白行が必要です。 ============================================================================== -*25.5* 表の編集 +*25.5* 表の編集 -次のような4つのカラムがあるような表を編集したいとしましょう。 +次のような 4 列の表を編集していて: - nice table test 1 test 2 test 3 ~ - input A 0.534 ~ - input B 0.913 ~ + nice table test 1 test 2 test 3 ~ + input A 0.534 ~ + input B 0.913 ~ -3つ目のカラムには数値を入力する必要があるとします。2行目にカーソルを動かし -て"A"コマンドで空白を入力してからその数値を入力するのもやり方です。 -ですがこの種の編集をするための特殊オプションを用意しています。 > +3 列目に数字を入力したいと思いました。2 行目に移動して "A" を使い、いくつかス +ペースとテキストを入力すればできます。 +このような編集のための特別なオプションがあります: > - set virtualedit=all + set virtualedit=all -すると、実際に文字がない場所にもカーソルを動かすことができるようになります。 -これを「バーチャルスペース(空白)」と呼びます。これを使うと表の編集がすごく楽 -になります。 -まずカーソルを最後のカラムに動かすために、ヘッダ部を使って検索を行います。 > +これを設定すると、文字が無い場所にもカーソルを移動できるようになります。これを +"virtual space" (仮想空白) と呼びます。この方法を使えば簡単に表を編集できます。 +検索を実行して 4 列目のヘッダに移動します: > - /test 3 + /test 3 -次に"j"を押すと、"input A"の値を入力できる場所に動きますので、"0.693"と入力 -します。するとこのような表示となります。 +"j" を押すとカーソルが適切な場所に移動するので、そのまま "input A" の値を入力 +できます。"0.693" と入力します: - nice table test 1 test 2 test 3 ~ - input A 0.534 0.693 ~ - input B 0.913 ~ + nice table test 1 test 2 test 3 ~ + input A 0.534 0.693 ~ + input B 0.913 ~ -vimは自動的に元の行末と入力した数値とのスキマを空白で埋めます。次に"Bj"コマ -ンドで次の行のカラムに移動します。"B"は空白類で区切られた単語の先頭に移動す -るコマンドです。続く"j"は次の行の値を入力すべき場所に移動します。 +テキストが無かった部分は空白で埋められます。"Bj" コマンドを使って次の行に移動 +しましょう。"B" で単語の先頭に移動し、"j" で次のフィールドに移動します。 - Note: - 表示されているどの場所にでもカーソルは移動できます。最終行の後ろでも - 移動できます。ただし、その場所で何か文字を入力しない限り、空白文字の - 挿入は行われません。 + Note: + 画面上のどの場所にでもカーソルを移動できます。行末を超えて移動すること + もできます。文字を挿入しない限り、スペースは挿入されません。 -カラムのコピー --------------- - -上の表の3つ目のカラムを、"test 1"カラムの前に追加(挿入)するには、次のように -7つの手順でできます。 +列のコピー +---------- - 1. カーソルをこのカラムの左上隅に移動します。例えば、"/test 3"を使います。 - 2. CTRL-Vを押してブロック選択のビジュアルモードを開始します。 - 3. "2j"でカーソルを2行下に移動します。この場所は"input B"の"test 3"カラム - ですので「バーチャルスペース」になります。 - 4. カーソルを右に移動しカラム全体が選択されるようにし、さらにカラム間の空白 - 分を選択します。例えば"9l"とすれば良いでしょう。 - 5. 選択範囲を"y"コマンドでヤンクします。 - 6. カーソルを"test 1"の場所、つまり新しいカラムを挿入したい場所に動かします。 - 7. "P"を押してプットします。 +4 列目をコピーして "test 1" 列の前に追加します。次の手順でできます: +1. カーソルを列の左上隅に移動する。例: "/test 3"。 +2. CTRL-V を押して矩形選択開始。 +3. "2j" で二行下に移動。カーソルは仮想空白の上 ("input B" 行の "test 3" 列) +4. 右に移動して列全体を選択。列を区切るためのスペースも選択する。例えば "9l" + で移動する。 +5. "y" で選択範囲をヤンク。 +6. カーソルを "text 1" に移動。この場所に新しい列を挿入する。 +7. "P" を押す。 -この結果は次のようになります。 +結果は次のようになります: - nice table test 3 test 1 test 2 test 3 ~ - input A 0.693 0.534 0.693 ~ - input B 0.913 ~ + nice table test 3 test 1 test 2 test 3 ~ + input A 0.693 0.534 0.693 ~ + input B 0.913 ~ -"test 1"カラム全体が右側に押し出されます。挿入したカラムで空白しかない部分も -同じように右側に動いている点に注目してください。 +"test 1" 列全体が右側に押し出されます。"test 3" 列のテキストが無い行も同様に移 +動していますね。 -さて、これで元のカーソル移動モードに戻しましょう。 > +次のコマンドでカーソル移動を通常に戻せます: > - :set virtualedit= + :set virtualedit= バーチャル置換モード -------------------- -上の'virtualedit'モードの欠点は「違った感じ」がすることです。最終行より後に -カーソルを動かしても、空白やTABがあるかどうか判断できません。もう一つの方法 -があります。それが今から述べる「バーチャル置換モード」です。 -表の中にTABとそれ以外の文字が混在している行があるとします。その最初のTAB位置 -で、"rx"を実行するとこのようにレイアウトが崩れてしまいます。 +'virtualedit' の不便なところは感覚が狂ってしまうところです。カーソルを動かして +いるときに、カーソルが Tab 文字の上にあるのか、行末を越えた位置にあるのか、認 +識することができません。そこで「バーチャル置換モード」を使います。 +例えば、表の中で Tab 文字が使われているとします。その Tab 文字の上で "rx" を +使ってみます: - inp 0.693 0.534 0.693 ~ + inp 0.693 0.534 0.693 ~ - | - rx | - V + | + rx | + V - inpx0.693 0.534 0.693 ~ + inpx0.693 0.534 0.693 ~ -こうならないようにするには"gr"コマンドを使います。 +レイアウトが崩れてしまいました。こうならないように、"gr" コマンドを使います: - inp 0.693 0.534 0.693 ~ + inp 0.693 0.534 0.693 ~ - | - grx | - V + | + grx | + V - inpx 0.693 0.534 0.693 ~ + inpx 0.693 0.534 0.693 ~ -このように"gr"コマンドは文字の置換によって画面レイアウトが変わらないようにし -てくれます。間を埋めるのに必要なTABや空白を自動的に補います。つまり実際には -元のTABは"x"に置き換えた上でレイアウトが崩れないように空白類を追加しているの -です。この場合ならTAB記号を挿入しています。 -2文字以上の置き換えを行いたい場合は、"R"コマンドで置換モード(|04.9|節をご覧 -ください)に入ります。これもレイアウトを崩したり意図しない置き換えを行ってし -まいます。 +"gr" コマンドで置換すると、置換した結果がスクリーン上で同じ幅になるように調整 +されます。足りない分はスペースか Tab 文字で埋められます。つまり、上の例は、Tab +文字が "x" で置換され、レイアウトが崩れないように空白が追加されたのです。例で +は Tab 文字が挿入されてます。 +複数の文字を置き換えたい場合は "R" コマンドの置換モード (|04.9|参照) を使いま +すが、それだとレイアウトが崩れて意図しない文字が置換されてしまいます: - inp 0 0.534 0.693 ~ + inp 0 0.534 0.693 ~ - | - R0.786 | - V + | + R0.786 | + V - inp 0.78634 0.693 ~ + inp 0.78634 0.693 ~ -このような場合は"gR"コマンドで「バーチャル置換モード」に入ります。これだとレ -イアウトを崩さないようにできます。 +"gR" コマンドのバーチャル置換モードを使いましょう。これならレイアウトは崩れま +せん: - inp 0 0.534 0.693 ~ + inp 0 0.534 0.693 ~ - | - gR0.786 | - V + | + gR0.786 | + V - inp 0.786 0.534 0.693 ~ + inp 0.786 0.534 0.693 ~ ============================================================================== -Next chapter: |usr_26.txt| 繰り返し +次章: |usr_26.txt| 繰り返し Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_26.jax b/ja/usr_26.jax index 64ba77bc7..c01808530 100644 --- a/ja/usr_26.jax +++ b/ja/usr_26.jax @@ -1,36 +1,34 @@ COMMENT: 同じコマンドを繰り返す方法 -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) -*usr_26.txt* For Vim version 6.3. Last change: 2002 Oct 29 +*usr_26.txt* For Vim version 7.1. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar 繰り返し -編集作業では統一しないといったことはまずありません。変更を行う場合には複数回 -それを繰り返さなければならないこともよくあります。この章では変更を繰り返して -行う便利な方法について説明します。 +ほとんどの編集作業は手順が決まっています。同じ変更を繰り返したいと思うことはよ +くあります。この章では、変更を繰り返すための便利な方法をいくつか説明します。 -|26.1| ビジュアルモードでの繰り返し +|26.1| ビジュアルモードを使って繰り返す |26.2| 加算と減算 -|26.3| 多くのファイルに変更を加える -|26.4| シェルスクリプトでvimを使う +|26.3| 複数のファイルを変更する +|26.4| シェルスクリプトから Vim を使う - Next chapter: |usr_27.txt| 検索コマンドと正規表現 - Previous chapter: |usr_25.txt| フォーマット付きテキストを編集する -Table of contents: |usr_toc.txt| +次章: |usr_27.txt| 検索コマンドと正規表現 +前章: |usr_25.txt| テキストの整形 +目次: |usr_toc.txt| ============================================================================== -*26.1* ビジュアルモードでの繰り返し +*26.1* ビジュアルモードを使って繰り返す -ビジュアルモードはあらゆる組み合せに対して変更を加えるためのとてもお手軽な方 -法です。選択範囲はハイライト表示になりますから、変更を加えた行が正しいのかど -うかを確認できます。ですが、選択をするには多少の打鍵が必要です。"gv"コマンド -で同じ範囲の領域を再選択できます。これを使うと同じ範囲に対して別の処理を実行 -させることができます。 -例えば、以下の文の"2001"を"2002"に変更し"2000"を"2001"に変更したいとします。 +ビジュアルモードを使えば好きな範囲のテキストを変更できるのでとても便利です。選 +択範囲は強調表示されるので、変更される範囲が正しいかどうか確認できます。しか +し、何度も範囲選択するのは少し面倒です。"gv" コマンドを使えば同じ範囲を再選択 +できます。同じ範囲に対して別の変更を加えることができます。 +例えば、"2001" を "2002" に変更し、"2000" を "2001" に変更してみます: The financial results for 2001 are better ~ than for 2000. The income increased by 50%, ~ @@ -38,26 +36,26 @@ Table of contents: |usr_toc.txt| 2000 2001 ~ income 45,403 66,234 ~ -まず、"2001"を"2002"に変更します。ビジュアルモードで上の範囲を選択し、次のコ -マンドを実行します。 > +まず "2001" を "2002" に変更します。ビジュアルモードでテキストを選択し、次のコ +マンドを実行します: > :s/2001/2002/g -次に"gv"で同じ範囲を選択します。その時のカーソル位置を気にする必要はありませ -ん。次に":s/2000/2001/g"で2回目の変更を行います。 -当然ながら、同じやり方で何度でも変更を繰り返すことができます。 - +次に "gv" で同じ範囲を再選択します。カーソルの位置は気にしなくて大丈夫です。そ +して、":s/2000/2001/g" で二回目の変更を加えます。 +同じ方法で何度でも変更を繰り返せます。 +============================================================================== *26.2* 加算と減算 -1つの値を別の値に変更することを繰り返すには、いくつも固定値を指定しなければ -なりません。上の例で言えば、各年を1づつ増やしたいわけです。何度も置き換えコ -マンドを入力して年を指定する代わりに、CTRL-A コマンドを使うことができます。 -上と同じ文章に対して年を検索するコマンドを実行します。 > +ある数字を変更し、それと同じ数だけ他の数字を変更したいような場合があります。例 +えば上の例ではすべての年に 1 を加えました。変更したいすべての年に対して置換コ +マンドを実行しなくても、CTRL-A を使って同じことができます。 +上記例文から、年を検索します: > /19[0-9][0-9]\|20[0-9][0-9] -ここでCTRL-Aを押します。するとカーソル位置の数字が1増えます。 +そして CTRL-A を押すと、年が一つ増えます: The financial results for 2002 are better ~ than for 2000. The income increased by 50%, ~ @@ -65,170 +63,157 @@ Table of contents: |usr_toc.txt| 2000 2001 ~ income 45,403 66,234 ~ +"n" で次の年を検索し、"." を押して CTRL-A を繰り返します ("." を押す方が簡単で +すよね)。"n" と "." を繰り返し、全ての年を更新します。 +ヒント: 'hlsearch' オプションを設定して検索にヒットした場所を確認できるように +すると、先の方まで見通せるので作業がはかどります。 -次に"n"コマンドで次の年を探し、"."コマンドでCTRL-Aを繰り返し("."の方が少々打 -ちやすいですから)ます。"n"と"."を繰り返して文章中の全パターンを置き換えます。 -Hint: 変更しようとしているパターンに合うものを見たければ、'hlsearch'オプショ -ンをonにします。すると早くパターンを見つけられますから、作業もはかどるでしょ -う。 - -増加分を2以上にしたい場合はCTRL-Aの前に数を指定できます。次のような文章があ -るとします。 +加算する量を増やしたい場合は CTRL-A の前に数値を指定します。例えば、次のテキス +トで: 1. item four ~ 2. item five ~ 3. item six ~ -カーソルを"1."のところに動かし、こう入力します。 > +カーソルを "1." のところに動かして次のように入力します: > 3 CTRL-A -すると、"1."は"4."に変わります。これを繰り返すには他の数字で"."を使ってくだ -さい。 +"1." が "4." に変わります。"." を使って同じ変更を繰り返せます。 -もう一つ例を示します。 +もう一つ例を示します: 006 foo bar ~ 007 foo bar ~ -上の数字のところでCTRL-Aを使えば、結果はこうなります。 +これらの数字に対して CTRL-A を使うと次のようになります: 007 foo bar ~ 010 foo bar ~ -7+1が10?何が起ったかというと、vimは"007"というのは先頭に"0"があるので8進数 -だと考えたためです。(8進数では7の次が10となりますよね) -これと同じことはCプログラムでもよく言われます。もし先頭に"0"がある数字を8 -進数として処理させたくないのであれば、こうしてください。 > +7 + 1 = 10? これは、"007" の先頭が 0 で始まっているため、八進数と認識されてし +まったのです。この表記方法は C 言語などで使われています。先頭が 0 で始まってい +る数字を八進数として扱いたくない場合は、次のように設定してください: > :set nrformats-=octal -なお、CTRL-Xコマンドは減算コマンドとして同じように使えます。 +CTRL-X コマンドを使うと同じ方法で減算できます。 ============================================================================== -*26.3* 多くのファイルに変更を加える +*26.3* 複数のファイルを変更する -あるプログラムで"x_cnt"という変数を使っており、これを"x_counter"に変更したい -としましょう。この変数はいくつかのCソースファイルで使っています。ですから、 -該当する全ファイルを変更しなければなりません。ここではその手順を説明します。 -まず関連しそうな全ファイルを引数(argument)リストに加えます。 > +あるプログラムに "x_cnt" という変数があり、それを "x_counter" に変更したい場合 +を考えます。変数は複数の C ファイルで使われているので、すべてのファイルを変更 +しなければなりません。その方法を説明します。 +関連ファイルを引数リストに加えます: > :args *.c -< -これで全Cソースファイルが対象となり、最初のファイルが編集画面に出てきます。 -ここで置換コマンドをその全ファイルに対して実行するのです。 > + +すべての C ファイルが検索され、一つ目のファイルが開きます。これで、すべてのファ +イルに対して置換コマンドを実行できます: > :argdo %s/\/x_counter/ge | update -":argdo"コマンドは何らかの他のコマンドを引数に取ります。指定のコマンドは引数 -リストの全ファイルに対して実行されます。 -"%s"は全行を対象とした置換コマンドです。"\"の指定で"x_cnt"という単語 -を探します。"\<"と"\>"は"px_cnt"や"x_cnt2"を除外し、単語としてヒットするもの -だけを抽出します。 -置換コマンドで使っている"g"フラグは1つの行で複数回"x_cnt"が現われた時に全部 -を置換するという指定です。"e"フラグは"x_cnt"があるファイルで見つからない時に -エラーメッセージを表示するのを抑制します。これがないと、":argdo"は"x_cnt"が -含まれていないファイルを処理した時点で中断してしまいます。 -"|"はコマンド間のセパレータです。次の"update"コマンドは変更があった時にだけ -ファイルを保存します。"x_cnt"から"x_counter"への変更がない時には何も起りま +":argdo" コマンドの引数にはコマンドを指定できます。指定されたコマンドは引数リ +スト内のすべてのファイルに対して実行されます。 +"%s" はファイル全体を置換するコマンドです。"\" で "x_cnt" を検索してい +ます。"\<" と "\>" を使って単語全体がマッチするようにしています。つまり +"px_cnt" や "x_cnt2" は置換されません。 +置換コマンドに指定された "g" フラグは、一つの行で複数の "x_cnt" が見つかった場 +合に、すべての "x_cnt" を置換するための指定です。"e" フラグは "x_cnt" が見つか +らなかった場合でもエラーメッセージを表示しないための指定です。エラーが起こると +その場で ":argdo" が止まってしまいます。 +"|" はコマンドの区切りです。"update" コマンドを使って、変更があったときだけ +ファイルを保存しています。置換する "x_cnt" が見つからなければ保存は実行されま せん。 -他に":windo"というコマンドがあります。これは全ウィンドウを引数として処理を実 -行します。また":bufdo"もあり、これは全バッファを引数とします。これを使うのは -気をつけてください。バッファリストにあるファイルは使っている人が思っている以 -上にある場合があります。 -":buffers"コマンド(か":ls"コマンド)で確認をしてください。 +他にも、すべてのウィンドウに対してコマンドを実行する ":windo" コマンド、すべて +のバッファに対してコマンドを実行する ":bufdo" コマンドがあります。バッファリス +トにはあなたの予想以上にファイルが入っているかもしれないので注意してください。 +":buffers" コマンド (or ":ls") で確認できます。 ============================================================================== -*26.4* シェルスクリプトでvimを使う - -JP:注 この章の記述はUnix系OSでのみ有効です。 -例えば、"-person-"という文字列を"Jones"に置き換えて印刷する必要があり、対象 -となるファイルが大量にある場合を思い浮べてください。どのようにして実行すれば -よいでしょう?一つは大量のタイプを厭わない方法です。もう一つはそれを行うシェ -ルスクリプトを書く方法です。 -vimは通常モードのコマンドを使って、スクリーンエディタとしては見事にこの作業 -を片付けます。ですが、バッチ処理用としては通常モードコマンドはあまりにもわか -りにくいでしょう。ですから代りにExモードのコマンドを使います。このモードでは -バッチファイルとの親和性の高いコマンド行単位のインタフェースを提供します。 -("Exコマンド"というのはコマンド行コマンドとかコロンコマンドと呼ばれるものの -別称です) -必要となるExモードのコマンド例を示しましょう。 > +*26.4* シェルスクリプトから Vim を使う + +例えば、たくさんのファイルがあって、"-person-" を "Jones" に置換して印刷する必 +要があるとします。どのように実行すればいいでしょう。すべてを手作業で実行するの +も一つの方法ですが、シェルスクリプトを書いて済ます方法もあります。 +スクリーンエディタとして Vim を使うとき、ノーマルモードコマンドを使えば簡単に +処理できます。しかし、バッチ処理したい場合は、ノーマルモードコマンドでは分かり +難くなってしまいますし、コマンドファイルにコメントも書けません。代わりに Ex +モードを使います。Ex モードのコマンドはバッチファイルを書くのに適しています。 +("EX コマンド" はコマンドライン (:) コマンドの別名です) +必要となる Ex コマンドは次のとおりです: > %s/-person-/Jones/g write tempfile quit -こういったコマンドを"change.vim"に格納しておきます。次にシェルスクリプトから -vimをバッチモードで起動します。 > +これらのコマンドを "change.vim" に保存します。そして、Vim をバッチモードで起動 +します: > for file in *.txt; do vim -e -s $file < change.vim lpr -r tempfile done -"for"~"done"のループは、間にある2つの行を繰り返し実行するシェル構文です。 -変数$fileには繰り返しの都度、違ったファイル名が入ります。 -2行目はvimを(-eパラメタで)Exモードで実行します。対象となるファイル名は$file -での指定となり、実行するコマンドは"change.vim"から読み込みます。"-s"パラメタ -はvimが寡黙モード(非会話モード)で実行します。言い換えると":" プロンプトやそ -の他のプロンプトは全く表示しないということです。 -"lpr -r tempfile"というコマンドは出力結果の"tempfile"を印刷した後でそれを削 -除します。("-r"パラメタがその意味です) +for-done ループは間にある行を繰り返し実行するためのシェル構文です。繰り返すた +びに $file 変数に異なるファイル名が設定されます。 +二行目では、Vim を Ex モード (-e 引数) で起動して $file を開き、"change.vim" +からコマンドを読み込んでいます。-s 引数を指定して Vim をサイレントモードにして +いるので、":" プロンプトやその他のプロンプトは表示されません。 +"lpr -r tempfile" コマンドで出力結果の "tempfile" を印刷し、そのファイルを削除 +しています ("-r" 引数が削除指示)。 標準入力からの読み込み ---------------------- -vimは標準入力から文章を取り込むことができます。通常は標準入力からはコマンド -を読み込みますので、そうでないことをvimに伝えなくてはなりません。これはファ -イル名の代わりにパラメタとして"-"を与えることで行います。例えばこうです。 > +Vim は標準入力からテキストを読み込めます。標準入力からはコマンドを読み込むのが +普通なので、そうでないことを Vim に伝えなくてはなりません。ファイルを指定する +場所に "-" 引数を指定してください。例: > ls | vim - -これで、"ls"コマンドの出力結果をファイルに保存したりせずに、直接編集できま -す。 -標準入力から文章を読み込む場合でも、"-S"パラメタを使えば、スクリプトを読み -込ませることができます。 > +"ls" コマンドの出力結果を、ファイルに保存せずに直接編集できます。 +標準入力からテキストを読み込む場合でも、"-S" 引数を使えば、スクリプトを読み込 +ませることができます。 > producer | vim -S change.vim - -通常モードのスクリプト ----------------------- +ノーマルモードスクリプト +------------------------ -どうしもてスクリプト中で通常モードのコマンドを使いたい場合は、このようにする -ことで可能です。 > +ノーマルモードコマンドをスクリプトの中で使いたい場合は、次のようにすればできま +す: > vim -s script file.txt ... < Note: - "-s"パラメタを"-e"なしで使う場合は違った意味になります。つまり、スク - リプトを通常モードコマンドとみなして取り込みむという意味になります。 - "-e"といっしょに使った場合は寡黙モードであることを示し、ファイル名の - ようなパラメタは取りません。 - -"script"中のコマンドはvimを起動して実際に入力したのと同じように実行されます。 -スクリプト中の改行記号も実際にvimの編集中にを押したのと同じように処理 -しますので注意してください。なお、は通常モードではカーソルを次の行に -動かすコマンドです。 -スクリプトを作るにはそのファイルを開いて、コマンドを入力することで作成できま -す。ただ、そのコマンドの結果を頭でイメージしながらになりますので、多少難しい -でしょう。 -もう一つ方法があって、実際にその作業を行っている間コマンドをレコード(記録)す -るのです。その手順を説明しましょう。 > + "-s" 引数は "-e" の有無で違う意味になります。この例の場合は、"script" + をノーマルモードコマンドとして実行するという意味になります。"-e" といっ + しょに指定された場合はサイレントモードの指定になり、"-s" にファイルを + 指定することはできません。 + +"script" の中のコマンドは、実際に入力したのと同じように実行されます。改行は + として解釈されるので注意してください。次の行へ移動するノーマルモードコ +マンドとして実行されます。 +スクリプトを作る方法はスクリプトファイルを開いてコマンドを入力するだけですが、 +コマンドの結果を自分で想像しなければならないので、少し難しい作業になります。 +実際に編集をしてみて、その操作手順を記録する方法もあります。次のコマンドを使い +ます: > vim -w script file.txt ... -これで入力した全ての操作は"script"ファイルに保存されます。多少のミスがあって -も操作を続けて、後でそのミスを思い出して、スクリプトを修正すれば良いでしょ -う。 -"-w"パラメタは既存のスクリプトに追加します。ですから、少しづつ少しづつスクリ -プトに記録したい時には便利でしょう。何もない状態から作り始めるのなら、"-W"パ -ラメタを使ってください。これは既存のファイルに上書きします。 +入力したすべてのキーが "script" に保存されます。多少のミスがあってもそのまま操 +作を続けて、後からスクリプトを編集できます。 +"-w" 引数は既存のスクリプトに追記します。したがって、スクリプトの記録を少しず +つ進めることができます。スクリプトをスクラッチから作成したい場合は "-W" 引数を +使ってください。既存のファイルが上書きされます。 ============================================================================== -Next chapter: |usr_27.txt| 検索コマンドと正規表現 +次章: |usr_27.txt| 検索コマンドと正規表現 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/ja/usr_30.jax b/ja/usr_30.jax index 133a046f2..15eecf4c9 100644 --- a/ja/usr_30.jax +++ b/ja/usr_30.jax @@ -575,7 +575,7 @@ vimは自動的に"*"と空白を挿入しますので、すぐにコメント * break ~ */ ~ -この機能を使うには'formatpiotions'でいくつか指定しなければならないフラグがあ +この機能を使うには'formatoptions'でいくつか指定しなければならないフラグがあ ります。 r 挿入モードでを押した時に"*"を挿入する。 @@ -587,7 +587,7 @@ vimは自動的に"*"と空白を挿入しますので、すぐにコメント コメントの定義 -コメントがどのような形かは'comment'オプションで定義できます。vimは1行コメン +コメントがどのような形かは'comments'オプションで定義できます。vimは1行コメン トと、開始記号、終端記号、本文が違っているコメントとを違うものとして扱います。 1行コメントの多くは特殊文字で始まります。C++では"//"ですし、Makefileでは "#"です。vimスクリプトなら'"'(ダブルクオート1つ)です。例えば、vimでC++形 @@ -595,7 +595,7 @@ vimは自動的に"*"と空白を挿入しますので、すぐにコメント :set comments=:// -コロン(:)はフラブ部とコメント文字列部の識別に使っています。'comment'オプショ +コロン(:)はフラブ部とコメント文字列部の識別に使っています。'comments'オプショ ンはこういう構造となります。 {flags}:{text} diff --git a/ja/usr_40.jax b/ja/usr_40.jax index 6fe238069..0ae368d69 100644 --- a/ja/usr_40.jax +++ b/ja/usr_40.jax @@ -200,7 +200,7 @@ MAPPING AND MODES 注意:という5文字はCTRL-Aのことです。 -全マッピングを解除するには|:mapclea|コマンドを使います。今現在とは違った +全マッピングを解除するには|:mapclear|コマンドを使います。今現在とは違った モードのバリエーションにも適用されます。このコマンドはundoできませんので、 気を付けて下さい。 diff --git a/ja/usr_42.jax b/ja/usr_42.jax index 3dc4abbba..84b3431a0 100644 --- a/ja/usr_42.jax +++ b/ja/usr_42.jax @@ -370,7 +370,7 @@ bitmap形式でなければなりません。Unixでは"Compile.xpm"という名 ポップアップメニューはマウスポインタのある場所に表示されるメニューです。 MS-Windowsではマウスの右ボタンクリックで表示できます。その中の項目を選択するの はマウスの左ボタンです。Unixではマウスの右ボタンを押したままにします。 -ポップアップメニューは'mousemodal'が"popup"か"popup_setpos"のどちらかに設定さ +ポップアップメニューは'mousemodel'が"popup"か"popup_setpos"のどちらかに設定さ れている場合にだけ表示されます。"popup_setpos"の場合、マウスポインタの場所に カーソルを動かすという点が両者の違いです。選択範囲の中でクリックした場合は選択 範囲は変更しません。ですが、選択範囲がある時にその範囲外をクリックした場合は選 diff --git a/ja/usr_43.jax b/ja/usr_43.jax index 83ea118ec..bf938f1af 100644 --- a/ja/usr_43.jax +++ b/ja/usr_43.jax @@ -74,7 +74,7 @@ Table of contents: |usr_toc.txt| vimが認識してくれないタイプのファイルを使っている場合に認識させる方法を述べ ます。まず自分用のランタイムディレクトリを用意します。これについては上述の -|your-rumtime-dir|をご覧ください。 +|your-runtime-dir|をご覧ください。 次にそのファイルタイプ用の自動コマンドが入っている"filetype.vim"というファイ ルを作ります。(自動コマンドについては|40.3|で説明しています) diff --git a/ja/vi_diff.jax b/ja/vi_diff.jax index c50120d9c..525699a52 100644 --- a/ja/vi_diff.jax +++ b/ja/vi_diff.jax @@ -31,7 +31,7 @@ Vim は大体において POSIX 1003.2-1 に従っています。知られてい 7. POSIX 準拠 |posix-compliance| ============================================================================== -1. シミュレートされているコマンド *missing-commands* +1. シミュレートされているコマンド *simulated-command* このコマンドは Vi にはありますが Vim ではシミュレートしているだけです。 @@ -202,8 +202,8 @@ Vi コンパチビリティ |'compatible'| スペルチェック |spell| オプション'spell'がセットされていると、スペリングの間違いがハイライト されます。現在のところ約40の言語がサポートされています。言語はオプショ - ン'spellang'で選択できます。ソースコード中ではコメントと文字列だけがス - ペルチェックされます。 + ン'spelllang'で選択できます。ソースコード中ではコメントと文字列だけが + スペルチェックされます。 折畳み |folding| 複数行の範囲を一行の「折畳まれた」行として表示することができます。これ diff --git a/ja/windows.jax b/ja/windows.jax index 8aec6bc9a..29ea0106a 100644 --- a/ja/windows.jax +++ b/ja/windows.jax @@ -675,7 +675,7 @@ These are hard values, a window will never become smaller. {cmd} はウィンドウの開閉、並べ替えをしてはならない。 {Vi にはない} {|+listcmds| 機能なしでコンパイルされた場 合は使用できない} - |:tabdo|, |:argdo|, |:budfo| も参照。 + |:tabdo|, |:argdo|, |:bufdo| も参照。 *:bufdo* :bufdo[!] {cmd} {cmd} をバッファリスト内の各バッファに対して実行。 @@ -701,7 +701,7 @@ These are hard values, a window will never become smaller. これは各バッファの編集を大幅にスピードアップさせる。 {Vi にはない} {|+listcmds| 機能なしでコンパイルされた 場合は使用できない} - |:tabdo|, |:argdo|, |:budfo| も参照。 + |:tabdo|, |:argdo|, |:bufdo| も参照。 例: > @@ -853,7 +853,7 @@ CTRL-W g } *CTRL-W_g}* :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("") -この例では、'updateimte' に設定された時間の間カーソルが動かなければ、カーソル +この例では、'updatetime' に設定された時間の間カーソルが動かなければ、カーソル 下のキーワードで ":ptag" が実行される。"nested" は他のオートコマンドを実行する ので、シンタックスハイライトはプレビューウィンドウ内で動作する。"silent!" は タグが見つからなかったときのエラーメッセージを抑止する。|CursorHold|も参照。 @@ -1085,7 +1085,7 @@ CTRL-W g } *CTRL-W_g}* :[N]sbn[ext] [N] ウィンドウを分割しバッファリストの[N]個先のバッファへ移動す る。バッファリストの最後に到達したら、先頭に戻ってバッファを探 - す。ウィンドウ分割の際には、'switchbuf' の 'useopen' 設定に従 + す。ウィンドウ分割の際には、'switchbuf' の "useopen" 設定に従 う。 :[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* @@ -1099,7 +1099,7 @@ CTRL-W g } *CTRL-W_g}* :[N]sbp[revious] [N] ウィンドウを分割しバッファリストの[N]個前のバッファへ移動す る。バッファリストの先頭に到達したら、最後に戻ってバッファを探 - す。ウィンドウ分割の際には、'switchbuf' の 'useopen' 設定に従 + す。ウィンドウ分割の際には、'switchbuf' の "useopen" 設定に従 う。 *:br* *:brewind* diff --git a/memo.txt b/memo.txt index 9bfb3aafb..f66175665 100644 --- a/memo.txt +++ b/memo.txt @@ -116,8 +116,8 @@ usr_21.jax :7.0: [中平] usr_22.jax :7.0: [中平] usr_23.jax :7.0: [中平] usr_24.jax :7.1: [中平] -usr_25.jax :6.3: -usr_26.jax :6.3: +usr_25.jax :7.1: [中平] +usr_26.jax :7.1: [中平] usr_27.jax :6.3: usr_28.jax :6.3: usr_29.jax :6.3: diff --git a/tools/makehtml.vim b/tools/makehtml.vim index 36df7c74e..9b13f8ac3 100644 --- a/tools/makehtml.vim +++ b/tools/makehtml.vim @@ -16,6 +16,10 @@ " :call MakeHtmlAll() function! MakeHtmlAll() + if bufname("%") != "" || &modified + new + endif + let s:log = [] let files = split(glob('*.??[tx]'), '\n') call MakeTagsFile() for i in range(len(files)) @@ -29,6 +33,10 @@ function! MakeHtmlAll() call MakeHtml(file) call setline(i+1, getline(i+1) . ' *DONE*') endfor + if s:log != [] + new + call append(0, s:log) + endif endfunction function! MakeHtmlAllBatch() @@ -66,7 +74,7 @@ endfunction function! MakeHtml(fname) new `=a:fname` - call s:WorkAroundToAvoidSyntaxBug1() + " 2html options let g:html_use_css = 1 let g:html_no_pre = 1 @@ -79,7 +87,9 @@ function! MakeHtml(fname) endfor endif + call s:WorkAroundToAvoidSyntaxBug1() TOhtml + call s:WorkAroundToAvoidSyntaxBug2() let lang = s:GetLang(a:fname) silent %s@\([^<]*\)@\=s:MakeLink(lang, submatch(1), submatch(2))@ge @@ -89,7 +99,6 @@ function! MakeHtml(fname) call s:Header() call s:Footer() - call s:WorkAroundToAvoidSyntaxBug2() wq! `=s:HtmlName(a:fname)` quit! @@ -148,7 +157,8 @@ function! s:MakeLink(lang, hlname, tagname) let res = printf('%s%s%s', s:attr_save[a:hlname], href, sep, a:tagname, sep) endif else - " missing tag or not translated. use English if possible. + " missing tag or not translated or typo. use English if possible. + call s:Log("%s: tag error: %s", bufname("%"), tagname) let tags = s:GetTags("") if has_key(tags, tagname) let href = tags[tagname]["html"] @@ -241,6 +251,16 @@ function! s:MakeLangLinks(htmlfile) return res endfunction +function! s:Log(fmt, ...) + if exists("s:log") + if len(a:000) == 0 + call add(s:log, a:fmt) + else + call add(s:log, call("printf", [a:fmt] + a:000)) + endif + endif +endfunction + function! s:WorkAroundToAvoidSyntaxBug1() " |:syn-pattern-offset| can't handle multi-byte character. g/^./call s:_Sub() From cd56f0bbd14a75aaf64abf6e5a25527821475c5c Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro Date: Sun, 24 Jun 2007 03:29:06 +0000 Subject: [PATCH 101/783] translated index of 4. Builtin Functions, 6. Curly braces names and 7. Commands git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@101 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/eval.jax | 1071 +++++++++++++++++++++++++-------------------------- 1 file changed, 518 insertions(+), 553 deletions(-) diff --git a/ja/eval.jax b/ja/eval.jax index 33d6a31b3..c292c9c1b 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -1,5 +1,5 @@ COMMENT: Vimスクリプト -STATUS: suspended 7.1 +STATUS: halfway 7.1 TRANSLATOR: 村岡太郎 TRANSLATOR: 青山正太郎(mm) @@ -27,7 +27,7 @@ Vimスクリプトの利用についてはユーザマニュアルの41章|user_ 3. 内部変数 |internal-variables| 4. 組み込み関数 |functions| 5. 関数定義 |user-functions| -6. 波括弧{}の名前 |curly-braces-names| +6. 波括弧{}変数 |curly-braces-names| 7. コマンド |expression-commands| 8. 例外処理 |exception-handling| 9. 例 |eval-examples| @@ -1525,103 +1525,111 @@ v:warningmsg 最後に表示された警告メッセージ。この変数はセ 使用法 結果 説明 ~ -add( {list}, {item}) List append {item} to |List| {list} +add( {list}, {item}) リスト {item}をリスト{list}に追加する append( {lnum}, {string}) 数値 {string}を{lnum}行目に付け加える -append( {lnum}, {list}) Number append lines {list} below line {lnum} +append( {lnum}, {list}) Number 行{list}を{lnum}行目に付け加える argc() 数値 引数内のファイルの数 argv( {nr}) 文字列 引数の第{nr}番目 -argv( ) List the argument list +argv( ) リスト 引数リスト browse( {save}, {title}, {initdir}, {default}) 文字列 ファイル選択ダイアログを表示 -browsedir( {title}, {initdir}) String put up a directory requester +browsedir( {title}, {initdir}) 文字列 ディレクトリ選択ダイアログを表示 bufexists( {expr}) 数値 バッファ{expr}が存在すればTRUE +buflisted( {expr}) 数値 バッファ{expr}がリストにあるならTRUE bufloaded( {expr}) 数値 バッファ{expr}がロード済みならTRUE bufname( {expr}) 文字列 バッファ{expr}の名前 bufnr( {expr}) 数値 バッファ{expr}の番号 bufwinnr( {nr}) 数値 バッファ{nr}のウィンドウ番号 byte2line( {byte}) 数値 {byte}番目のバイトの行番号 -byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr} +byteidx( {expr}, {nr}) 数値 {expr}の{nr}文字目のバイトインデックス call( {func}, {arglist} [, {dict}]) - any call {func} with arguments {arglist} -changenr() Number current change number + 任意 引数{arglist}をつけて{func}を呼ぶ +changenr() 数値 現在の変更番号 char2nr( {expr}) 数値 {expr}の先頭文字のASCIIコード +cindent( {lnum}) 数値 {lnum}行目のCインデント量 col( {expr}) 数値 カーソルかマークのカラム番号nr -complete({startcol}, {matches}) String set Insert mode completion -complete_add( {expr}) Number add completion match -complete_check() Number check for key typed during completion +complete({startcol}, {matches}) 文字列 インサートモード補完の結果を設定する +complete_add( {expr}) 数値 補完候補を追加する +complete_check() 数値 補完中に押されたキーをチェックする confirm( {msg}, {choices} [, {default} [, {type}]]) 数値 ユーザへの選択肢と番号 -copy( {expr}) any make a shallow copy of {expr} +copy( {expr}) 任意 {expr}の浅いコピーを作る count( {list}, {expr} [, {start} [, {ic}]]) - Number count how many {expr} are in {list} + 数値 {list}中に{expr}が何個現れるか数える cscope_connection( [{num} , {dbpath} [, {prepend}]]) - Number checks existence of cscope connection + 数値 cscope接続の存在を判定する cursor( {lnum}, {col} [, {coladd}]) - Number move cursor to {lnum}, {col}, {coladd} -cursor( {list}) Number move cursor to position in {list} -deepcopy( {expr}) any make a full copy of {expr} + 数値 カーソルを{lnum}, {col}, {coladd}へ移動 +cursor( {list}) 数値 カーソルを{list}の位置へ移動 +deepcopy( {expr}) 任意 {expr}の完全なコピーを作る delete( {fname}) 数値 ファイル{fname}を消す did_filetype() 数値 FileTypeのautocommandが実行されたか? -diff_filler( {lnum}) Number diff filler lines about {lnum} -diff_hlID( {lnum}, {col}) Number diff highlighting at {lnum}/{col} -empty( {expr}) Number TRUE if {expr} is empty +diff_filler( {lnum}) 数値 diffモードで{lnum}に挿入された行 +diff_hlID( {lnum}, {col}) 数値 diffモードで{lnum}/{col}位置の強調 +empty( {expr}) 数値 {expr}が空ならTRUE escape( {string}, {chars}) 文字列 {string}内の{chars}を'\'でエスケープ -eval( {string}) any evaluate {string} into its value +eval( {string}) 任意 {string}を評価し、値を得る +eventhandler( ) 数値 イベントハンドラの内側ならTRUE +executable( {expr}) 数値 実行可能な{expr}が存在するなら1 exists( {var}) 数値 変数{var}が存在したらTRUE extend({expr1}, {expr2} [, {expr3}]) - List/Dict insert items of {expr2} into {expr1} + リスト/辞書 {expr1}に{expr2}の要素を挿入 expand( {expr}) 文字列 {expr}内の特別なキーワードを展開 -feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer +feedkeys( {string} [, {mode}]) 数値 先行入力バッファにキーシーケンスを追加 filereadable( {file}) 数値 {file}が読みこみ可能ならTRUE -filewritable( {file}) Number TRUE if {file} is a writable file -filter( {expr}, {string}) List/Dict remove items from {expr} where - {string} is 0 +filewritable( {file}) Number {file}が書き込み可能ならTRUE +filter( {expr}, {string}) リスト/辞書 {string}が0となる要素を{expr}から + とり除く finddir( {name}[, {path}[, {count}]]) - String find directory {name} in {path} + 文字列 {path}からディレクトリ{name}を探す findfile( {name}[, {path}[, {count}]]) - String find file {name} in {path} + 文字列 {path}からファイル{name}を探す fnamemodify( {fname}, {mods}) 文字列 ファイル名を変更 -foldclosed( {lnum}) Number first line of fold at {lnum} if closed -foldclosedend( {lnum}) Number last line of fold at {lnum} if closed -foldlevel( {lnum}) Number fold level at {lnum} -foldtext( ) String line displayed for closed fold -foldtextresult( {lnum}) String text for closed fold at {lnum} -foreground( ) Number bring the Vim window to the foreground -function( {name}) Funcref reference to function {name} -garbagecollect() none free memory, breaking cyclic references -get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def} -get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def} +foldclosed( {lnum}) 数値 {lnum}の折り畳みの最初の行(閉じている + なら) +foldclosedend( {lnum}) 数値 {lnum}の折り畳みの最後の行(閉じている + なら) +foldlevel( {lnum}) 数値 {lnum}の折り畳みレベル +foldtext( ) 文字列 閉じた折り畳みに表示されている行 +foldtextresult( {lnum}) 文字列 {lnum}で閉じている折り畳みのテキスト +foreground( ) 数値 Vimウィンドウを前面に移動する +function( {name}) Funcref 関数{name}への参照を取得 +garbagecollect() なし メモリを解放する。循環参照を断ち切る +get( {list}, {idx} [, {def}]) 任意 {list}や{def}から要素{idx}を取得 +get( {dict}, {key} [, {def}]) 任意 {dict}や{def}から要素{key}を取得 getbufline( {expr}, {lnum} [, {end}]) - List lines {lnum} to {end} of buffer {expr} -getbufvar( {expr}, {varname}) any variable {varname} in buffer {expr} -getcmdline() String return the current command-line -getcmdpos() Number return cursor position in command-line -getcmdtype() String return the current command-line type + リスト バッファ{expr}の{lnum}から{end}行目 +getbufvar( {expr}, {varname}) 任意 バッファ{expr}の変数 {varname} +getcmdline() 文字列 現在のコマンドラインを取得 +getcmdpos() 数値 コマンドラインのカーソル位置を取得 +getcmdtype() 文字列 現在のコマンドラインの種類を取得 getcwd() 文字列 現在の作業ディレクトリ -getfperm( {fname}) String file permissions of file {fname} -getfsize( {fname}) Number size in bytes of file {fname} -getfontname( [{name}]) String name of font being used +getfperm( {fname}) 文字列 ファイル{fname}の許可属性を取得 +getfsize( {fname}) 数値 ファイル{fname}のバイト数を取得 +getfontname( [{name}]) 文字列 使用しているフォントの名前 getftime( {fname}) 数値 ファイルの最終更新時間 -getftype( {fname}) String description of type of file {fname} +getftype( {fname}) 文字列 ファイル{fname}の種類の説明 getline( {lnum}) 文字列 現在のバッファから行の内容を取得 -getline( {lnum}, {end}) List lines {lnum} to {end} of current buffer -getloclist({nr}) List list of location list items -getpos( {expr}) List position of cursor, mark, etc. -getqflist() List list of quickfix items -getreg( [{regname} [, 1]]) String contents of register -getregtype( [{regname}]) String type of register +getline( {lnum}, {end}) リスト カレントバッファの{lnum}から{end}行目 +getloclist({nr}) リスト ロケーションリストの要素のリスト +getpos( {expr}) リスト カーソル・マークなどの位置を取得 +getqflist() リスト quickfixリストの要素のリスト +getreg( [{regname} [, 1]]) 文字列 レジスタの中身を取得 +getregtype( [{regname}]) 文字列 レジスタの種類を取得 gettabwinvar( {tabnr}, {winnr}, {name}) - any {name} in {winnr} in tab page {tabnr} + 任意 タブページ{tabnr}の{winnr}の{name} getwinposx() 数値 GUI vim windowのX座標 getwinposy() 数値 GUI vim windowのY座標 -getwinvar( {nr}, {varname}) any variable {varname} in window {nr} +getwinvar( {nr}, {varname}) 文字列 ウィンドウ{nr}の変数{varname} glob( {expr} [, {flag}]) 文字列 {expr}内のfile wildcardを展開 -globpath( {path}, {expr}) String do glob({expr}) for all dirs in {path} +globpath( {path}, {expr}) 文字列 {path}の全ディレクトリに対し + glob({expr})を行う has( {feature}) 数値 機能{feature}がサポートならばTRUE -has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} -haslocaldir() Number TRUE if current window executed |:lcd| +has_key( {dict}, {key}) 数値 {dict}が要素{key}を持つならTRUE +haslocaldir() 数値 現在のウィンドウで|:lcd|が実行された + ならTRUE hasmapto( {what} [, {mode} [, {abbr}]]) - Number TRUE if mapping to {what} exists + 数値 {what}へのマッピングが存在するならTRUE histadd( {history},{item}) 文字列 ヒストリに追加 histdel( {history} [, {item}]) 文字列 ヒストリからitemを削除 histget( {history} [, {index}]) 文字列 ヒストリから{index}アイテムを取得 @@ -1629,119 +1637,124 @@ histnr( {history}) 数値 ヒストリの数 hlexists( {name}) 数値 highligth group {name}が存在したらTRUE hlID( {name}) 数値 highlight group {name}のID hostname() 文字列 vimが動作しているマシンの名前 -iconv( {expr}, {from}, {to}) String convert encoding of {expr} -indent( {lnum}) Number indent of line {lnum} +iconv( {expr}, {from}, {to}) 文字列 {expr}のエンコーディングを変換する +indent( {lnum}) 文字列 行{lnum}のインデントを取得 index( {list}, {expr} [, {start} [, {ic}]]) - Number index in {list} where {expr} appears + 数値 {list}中に{expr}が現れる位置 input( {prompt} [, {text} [, {completion}]]) 文字列 ユーザからの入力を取得 -inputdialog( {p} [, {t} [, {c}]]) String like input() but in a GUI dialog -inputlist( {textlist}) Number let the user pick from a choice list -inputrestore() Number restore typeahead -inputsave() Number save and clear typeahead -inputsecret( {prompt} [, {text}]) String like input() but hiding the text -insert( {list}, {item} [, {idx}]) List insert {item} in {list} [before {idx}] +inputdialog( {p} [, {t} [, {c}]]) 文字列 input()と同様。GUIのダイアログを使用 +inputlist( {textlist}) 数値 ユーザに選択肢から選ばせる +inputrestore() 数値 先行入力を復元する +inputsave() 数値 先行入力を保存し、クリアする +inputsecret( {prompt} [, {text}]) 文字列 input()だがテキストを隠す +insert( {list}, {item} [, {idx}]) リスト {list}に要素{item}を挿入 [{idx}の前] isdirectory( {directory}) 数値 {directory}がディレクトリならばTRUE -islocked( {expr}) Number TRUE if {expr} is locked -items( {dict}) List key-value pairs in {dict} -join( {list} [, {sep}]) String join {list} items into one String -keys( {dict}) List keys in {dict} -len( {expr}) Number the length of {expr} +islocked( {expr}) 数値 {expr}がロックされているならTRUE +items( {dict}) リスト {dict}のキーと値のペアを取得 +join( {list} [, {sep}]) 文字列 {list}の要素を連結して文字列にする +keys( {dict}) リスト {dict}のキーを取得 +len( {expr}) 数値 {expr}の長さを取得 libcall( {lib}, {func}, {arg} 文字列 ライブラリ{lib}の関数{func}をコール -libcallnr( {lib}, {func}, {arg}) Number idem, but return a Number +libcallnr( {lib}, {func}, {arg}) 数値 上と同じ。ただし数値を返す line( {expr}) 数値 行番号の取得 line2byte( {lnum}) 数値 行{lnum}のバイトカウント -lispindent( {lnum}) Number Lisp indent for line {lnum} +lispindent( {lnum}) 数値 {lnum}行目のLispインデント量を取得 localtime() 数値 現在時刻 +map( {expr}, {string}) リスト/辞書 {expr}の各要素を{expr}に変える maparg( {name}[, {mode} [, {abbr}]]) - String rhs of mapping {name} in mode {mode} + 文字列 モード{mode}でのマッピング{name}の値 mapcheck( {name}[, {mode} [, {abbr}]]) - String check for mappings matching {name} + 文字列 {name}にマッチするマッピングを確認 match( {expr}, {pat}[, {start}[, {count}]]) - Number position where {pat} matches in {expr} -matcharg( {nr}) List arguments of |:match| + 数値 {expr}内で{pat}がマッチする位置 +matcharg( {nr}) リスト |:match|の引数 matchend( {expr}, {pat}[, {start}[, {count}]]) - Number position where {pat} ends in {expr} + 数値 {expr}内で{pat}が終了する位置 matchlist( {expr}, {pat}[, {start}[, {count}]]) - List match and submatches of {pat} in {expr} + リスト {expr}内の{pat}のマッチと部分マッチ matchstr( {expr}, {pat}[, {start}[, {count}]]) - String {count}'th match of {pat} in {expr} -max({list}) Number maximum value of items in {list} -min({list}) Number minimum value of items in {list} + 文字列 {expr}内の{count}'番目の{pat}のマッチ +max({list}) 数値 {list}内の要素の最大値 +min({list}) 数値 {list}内の要素の最小値 mkdir({name} [, {path} [, {prot}]]) - Number create directory {name} -mode() String current editing mode -nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} + 数値 ディレクトリ{name}を作成 +mode() 文字列 現在の編集モード +nextnonblank( {lnum}) 数値 {lnum}行目以降で空行でない行の行番号 nr2char( {expr}) 文字列 ASCIIコード{expr}で示されるキャラクタ -pathshorten( {expr}) String shorten directory names in a path -prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} -printf( {fmt}, {expr1}...) String format text -pumvisible() Number whether popup menu is visible +pathshorten( {expr}) 文字列 path内の短縮したディレクトリ名 +prevnonblank( {lnum}) 数値 {lnum}行目以前の空行でない行の行番号 +printf( {fmt}, {expr1}...) 文字列 文字列を組み立てる +pumvisible() 数値 ポップアップメニューが表示されているか range( {expr} [, {max} [, {stride}]]) - List items from {expr} to {max} + リスト {expr}から{max}までの要素のリスト readfile({fname} [, {binary} [, {max}]]) - List get list of lines from file {fname} -reltime( [{start} [, {end}]]) List get time value -reltimestr( {time}) String turn time value into a String + リスト ファイル{fname}から行のリストを取得 +reltime( [{start} [, {end}]]) リスト 時刻の値を取得 +reltimestr( {time}) 文字列 時刻の値を文字列に変換 remote_expr( {server}, {string} [, {idvar}]) - String send expression -remote_foreground( {server}) Number bring Vim server to the foreground + 文字列 式を送信する +remote_foreground( {server}) 数値 Vimサーバを前面に出す remote_peek( {serverid} [, {retvar}]) - Number check for reply string -remote_read( {serverid}) String read reply string + 数値 返信文字列を確認する +remote_read( {serverid}) 文字列 返信文字列を読み込む remote_send( {server}, {string} [, {idvar}]) - String send key sequence -remove( {list}, {idx} [, {end}]) any remove items {idx}-{end} from {list} -remove( {dict}, {key}) any remove entry {key} from {dict} + 文字列 キーシーケンスを送信する +remove( {list}, {idx} [, {end}]) 任意 {list}から{idx}〜{end}の要素を削除 +remove( {dict}, {key}) 任意 {dict}から要素{key}を削除 rename({from}, {to}) 数値 {file}から{to}へファイル名変更 -repeat( {expr}, {count}) String repeat {expr} {count} times -resolve( {filename}) String get filename a shortcut points to -reverse( {list}) List reverse {list} in-place -search( {pattern} [, {flags}]) Number search for {pattern} +repeat( {expr}, {count}) 文字列 {expr}を{count}回繰り返す +resolve( {filename}) 文字列 ショートカットが指す先のファイル名 +reverse( {list}) 文字列 {list}をその場で反転させる +search( {pattern} [, {flags}]) 数値 {pattern}を検索する searchdecl({name} [, {global} [, {thisblock}]]) - Number search for variable declaration + 数値 変数の宣言を検索 searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) - Number search for other end of start/end pair + 数値 開始/終端のペアの他方を検索 searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]]) - List search for other end of start/end pair + リスト 開始/終端のペアの他方を検索 searchpos( {pattern} [, {flags} [, {stopline}]]) - List search for {pattern} + リスト {pattern}を検索 server2client( {clientid}, {string}) - Number send reply string -serverlist() String get a list of available servers -setbufvar( {expr}, {varname}, {val}) set {varname} in buffer {expr} to {val} -setcmdpos( {pos}) Number set cursor position in command-line + 数値 返信文字列を送信する +serverlist() 文字列 利用可能なサーバのリストを取得 +setbufvar( {expr}, {varname}, {val}) バッファ{expr}内の変数{varname}に{val} + をセット +setcmdpos( {pos}) 数値 コマンドライン内のカーソル位置を設定 setline( {lnum}, {line}) 数値 行{lnum}に{line}(文字列)をセット setloclist( {nr}, {list}[, {action}]) - Number modify location list using {list} -setpos( {expr}, {list}) none set the {expr} position to {list} -setqflist( {list}[, {action}]) Number modify quickfix list using {list} -setreg( {n}, {v}[, {opt}]) Number set register to value and type -settabwinvar( {tabnr}, {winnr}, {varname}, {val}) set {varname} in window + 数値 {list}を使ってロケーションリストを変更 +setpos( {expr}, {list}) なし {expr}の位置を{list}にする +setqflist( {list}[, {action}]) 数値 {list}を使ってQuickFixリストを変更 +setreg( {n}, {v}[, {opt}]) 数値 レジスタの値とタイプを設定 +settabwinvar( {tabnr}, {winnr}, {varname}, {val}) タブページ{tabnr}内のウィン + ドウ{nr}の変数{varname}に{val}をセット {winnr} in tab page {tabnr} to {val} -setwinvar( {nr}, {varname}, {val}) set {varname} in window {nr} to {val} -shellescape( {string}) String escape {string} for use as shell - command argument -simplify( {filename}) String simplify filename as much as possible -sort( {list} [, {func}]) List sort {list}, using {func} to compare -soundfold( {word}) String sound-fold {word} -spellbadword() String badly spelled word at cursor +setwinvar( {nr}, {varname}, {val}) ウィンドウ{nr}の変数{varname}に{val}を + セット +shellescape( {string}) 文字列 {string}をシェルコマンド引数として使う + ためにエスケープする。 +simplify( {filename}) 文字列 ファイル名を可能なかぎり簡略化する +sort( {list} [, {func}]) リスト 比較に{func}を使って{list}をソートする +soundfold( {word}) 文字列 {word}のsound-fold +spellbadword() 文字列 カーソル位置のスペルミスした単語 spellsuggest( {word} [, {max} [, {capital}]]) - List spelling suggestions + リスト スペリング補完 split( {expr} [, {pat} [, {keepempty}]]) - List make |List| from {pat} separated {expr} -str2nr( {expr} [, {base}]) Number convert string to number + リスト {expr}を{pat}で区切ってリストを作る +str2nr( {expr} [, {base}]) 数値 文字列を数値に変換する strftime( {format}[, {time}]) 文字列 指定されたフォーマットでの時刻 stridx( {haystack}, {needle}[, {start}]) - Number index of {needle} in {haystack} -string( {expr}) String String representation of {expr} value + 数値 {haystack}内の{needle}のインデックス +string( {expr}) 文字列 {expr}の値の文字列表現 strlen( {expr}) 数値 文字列{expr}の長さ strpart( {src}, {start}[, {len}]) 文字列 {src}内{start}から長さ{len}の部分 strridx( {haystack}, {needle} [, {start}]) - Number last index of {needle} in {haystack} + 数値 {haystack}内の最後の{needle}のインデッ + クス strtrans( {expr}) 文字列 文字列を表示可能に変更 -submatch( {nr}) String specific match in ":substitute" +submatch( {nr}) 文字列 ":substitute"における特定のマッチ substitute( {expr}, {pat}, {sub}, {flags}) 文字列 {expr}の{pat}を{sub}に置換え synID( {line}, {col}, {trans}) 数値 {line}と{col}のsyntax IDを取得 @@ -1749,32 +1762,32 @@ synIDattr( {synID}, {what} [, {mode}]) 文字列 syntax ID{synID}の属性{what}を取得 synIDtrans( {synID}) 数値 {synID}の翻訳されたsyntax ID system( {expr} [, {input}]) 文字列 シェルコマンド{expr}の出力結果 -tabpagebuflist( [{arg}]) List list of buffer numbers in tab page -tabpagenr( [{arg}]) Number number of current or last tab page +tabpagebuflist( [{arg}]) リスト タブページ内のバッファ番号のリスト +tabpagenr( [{arg}]) 数値 現在または最後のタブページの番号 tabpagewinnr( {tabarg}[, {arg}]) - Number number of current window in tab page -taglist( {expr}) List list of tags matching {expr} -tagfiles() List tags files used + 数値 タブページ内の現在のウィンドウの番号 +taglist( {expr}) リスト {expr}にマッチするタグのリスト +tagfiles() リスト 使用しているタグファイルのリスと tempname() 文字列 テンポラリファイルの名前 -tolower( {expr}) String the String {expr} switched to lowercase -toupper( {expr}) String the String {expr} switched to uppercase -tr( {src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr} - to chars in {tostr} -type( {name}) Number type of variable {name} -values( {dict}) List values in {dict} +tolower( {expr}) 文字列 文字列{expr}を小文字にする +toupper( {expr}) 文字列 文字列{expr}を大文字にする +tr( {src}, {fromstr}, {tostr}) 文字列 {src}中に現れる文字{fromstr}を{tostr} + に変換する。 +type( {name}) 数値 変数{name}の型 +values( {dict}) リスト {dict}の値のリスト virtcol( {expr}) 数値 カーソルのスクリーンカラム位置 visualmode( [expr]) 文字列 最後に使われたVisualモード winbufnr( {nr}) 数値 ウィンドウ{nr}のバッファ番号 -wincol() Number window column of the cursor +wincol() 数値 カーソル位置のウィンドウ桁 winheight( {nr}) 数値 ウィンドウ{nr}の高さ -winline() Number window line of the cursor +winline() 数値 カーソル位置のウィンドウ行 winnr() 数値 現在のウィンドウの番号 -winrestcmd() String returns command to restore window sizes -winrestview({dict}) None restore view of current window -winsaveview() Dict save view of current window -winwidth( {nr}) Number width of window {nr} +winrestcmd() 文字列 ウィンドウサイズを復元するコマンド +winrestview({dict}) なし 現在のウィンドウのビューを復元 +winsaveview() Dict 現在のウィンドウのビューを保存 +winwidth( {nr}) 数値 ウィンドウ{nr}の幅を取得 writefile({list}, {fname} [, {binary}]) - Number write list of lines to file {fname} + 数値 行のリストをファイル{fname}に書き込む add({list}, {expr}) *add()* @@ -3624,13 +3637,12 @@ getpos({expr}) Get the position for {expr}. For possible values of {expr} < Also see |setpos()|. pathshorten({expr}) *pathshorten()* - Shorten directory names in the path {expr} and return the - result. The tail, the file name, is kept as-is. The other - components in the path are reduced to single letters. Leading - '~' and '.' characters are kept. Example: > + パス{expr}におけるディレクトリ名を短縮して返す。拡張子、ファイ + ル名はそのまま保たれる。パスのその他の構成要素は1文字に縮めら + れる。1文字目の'~'と'.'はそのまま保たれる。例: > :echo pathshorten('~/.vim/autoload/myfile.vim') < ~/.v/a/myfile.vim ~ - It doesn't matter if the path exists or not. + パスが実際に存在するかどうかは関係ない。 prevnonblank({lnum}) *prevnonblank()* Return the line number of the first line at or above {lnum} @@ -5452,58 +5464,56 @@ inside a function body. AUTOMATICALLY LOADING FUNCTIONS ~ *autoload-functions* -When using many or large functions, it's possible to automatically define them -only when they are used. There are two methods: with an autocommand and with -the "autoload" directory in 'runtimepath'. +たくさんの関数または巨大な関数を使うときは、それらが使用されたときだけ自動的に +定義されるようにすることができる。これには2つの方法がある: 自動コマンドによる +方法と、'runtimepath'内の"autoload"ディレクトリによる方法である。 -Using an autocommand ~ +自動コマンドを使う方法 ~ -This is introduced in the user manual, section |41.14|. +これはユーザマニュアルのセクション|41.14|で説明されている。 -The autocommand is useful if you have a plugin that is a long Vim script file. -You can define the autocommand and quickly quit the script with |:finish|. -That makes Vim startup faster. The autocommand should then load the same file -again, setting a variable to skip the |:finish| command. +自動コマンドは、長いVimスクリプトファイルのプラグインに対して有用である。自動 +コマンドを定義し、すぐに|:finish|でそのスクリプトを抜ける。こうするとVimの起動 +が速くなる。その後自動コマンドにより|:finish|コマンドをスキップする変数を定義 +し、そのファイルが再び読み込まれる。 -Use the FuncUndefined autocommand event with a pattern that matches the -function(s) to be defined. Example: > +定義すべき関数名にマッチするパターンを指定して自動コマンドイベント +FuncUndefinedを使う。例: > :au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim -The file "~/vim/bufnetfuncs.vim" should then define functions that start with -"BufNet". Also see |FuncUndefined|. +ファイル"~/vim/bufnetfuncs.vim"は"BufNet"で始まる関数を定義しなければならない。 +|FuncUndefined|も参照。 -Using an autoload script ~ +自動ロードスクリプトの使い方 ~ *autoload* *E746* -This is introduced in the user manual, section |41.15|. +これはユーザマニュアルのセクション|41.15|で説明されている。 -Using a script in the "autoload" directory is simpler, but requires using -exactly the right file name. A function that can be autoloaded has a name -like this: > +"autoload"ディレクトリのスクリプトを使う方法はより簡単である。しかし完全に正し +いファイル名を使う必要がある。自動ロードされる関数は次のような名前を持つ: > :call filename#funcname() -When such a function is called, and it is not defined yet, Vim will search the -"autoload" directories in 'runtimepath' for a script file called -"filename.vim". For example "~/.vim/autoload/filename.vim". That file should -then define the function like this: > +このような関数が呼ばれ、それがまだ定義されていなかった場合、Vimは'runtimepath' +内の"autoload"ディレクトリから"filename.vim"というスクリプトファイルを探す。 +例えば"~/.vim/autoload/filename.vim"のように。そしてこのファイルは次のような関 +数を定義していなければならない: > function filename#funcname() echo "Done!" endfunction -The file name and the name used before the # in the function must match -exactly, and the defined function must have the name exactly as it will be -called. +このファイル名と関数の # の前の部分は完全に一致しなければならない。そして定義 +された関数は呼ばれた関数と完全に同じ名前でなければならない。 -It is possible to use subdirectories. Every # in the function name works like -a path separator. Thus when calling a function: > +サブディレクトリを使うこともできる。関数名の中の # はパスのセパレータのように +解釈される。つまり、次の関数を呼ぶと: > :call foo#bar#func() -Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'. +Vimは'runtimepath'からファイル"autoload/foo/bar.vim"を探す。 This also works when reading a variable that has not been set yet: > @@ -5531,48 +5541,46 @@ Hint: If you distribute a bunch of scripts you can pack them together with the |vimball| utility. Also read the user manual |distribute-script|. ============================================================================== -6. Curly braces names *curly-braces-names* +6. 波括弧変数 *curly-braces-names* -Wherever you can use a variable, you can use a "curly braces name" variable. -This is a regular variable name with one or more expressions wrapped in braces -{} like this: > +変数を使える文脈ではいつでも「波括弧」変数を使うことができる。これは有効な変数 +名であり、次のように、1個以上の式を波括弧{}で囲む: > my_{adjective}_variable -When Vim encounters this, it evaluates the expression inside the braces, puts -that in place of the expression, and re-interprets the whole as a variable -name. So in the above example, if the variable "adjective" was set to -"noisy", then the reference would be to "my_noisy_variable", whereas if -"adjective" was set to "quiet", then it would be to "my_quiet_variable". +Vimはこれを見つけると、まず波括弧の中の式を評価し、その値をもとの位置に置きか +え、全体を変数名として再解釈する。よって上の例では、変数"adjective"に"noisy"が +代入されていたとすると、この変数は"my_noisy_variable"となる。あるいは、 +"adjective"に"quiet"が代入されていたとすれば"my_quiet_variable"となる。 -One application for this is to create a set of variables governed by an option -value. For example, the statement > +これの応用の1つは、オプション値によって支配される変数の集合を作ることである。 +例えば次の文 > echo my_{&background}_message -would output the contents of "my_dark_message" or "my_light_message" depending -on the current value of 'background'. +は現在の'background'の値に応じて"my_dark_message"か"my_light_message"の中身を +表示する。 -You can use multiple brace pairs: > +波括弧を複数使うこともできる: > echo my_{adverb}_{adjective}_message -..or even nest them: > +ネストさせることもできる: > echo my_{ad{end_of_word}}_message -where "end_of_word" is either "verb" or "jective". +ここで"end_of_word"は"verb"か"jective"のどちらかである。 -However, the expression inside the braces must evaluate to a valid single -variable name, e.g. this is invalid: > +しかし、波括弧の中の式を評価した結果が有効な変数名とならなければならない。 +つまり、次は無効である: > :let foo='a + b' :echo c{foo}d -.. since the result of expansion is "ca + bd", which is not a variable name. +というのは、展開の結果が"ca + bd"となるからで、これは有効な名前ではない。 *curly-braces-function-names* -You can call and define functions by an evaluated name in a similar way. -Example: > +同様の方法で評価した名前により関数を定義したり呼び出したりできる。 +例: > :let func_end='whizz' :call my_func_{func_end}(parameter) -This would call the function "my_func_whizz(parameter)". +この例は関数"my_func_whizz(parameter)"を呼びだす。 ============================================================================== -7. Commands *expression-commands* +7. コマンド *expression-commands* :let {var-name} = {expr1} *:let* 内部変数{var-name}に式{expr1}の結果をセットする。変数 @@ -5580,37 +5588,35 @@ This would call the function "my_func_whizz(parameter)". がまだ存在しない場合、新たに作成される。 :let {var-name}[{idx}] = {expr1} *E689* - Set a list item to the result of the expression - {expr1}. {var-name} must refer to a list and {idx} - must be a valid index in that list. For nested list - the index can be repeated. - This cannot be used to add an item to a list. + リストの要素に式{expr1}の結果をセットする。{var-name} + はリストを参照し、{idx}はそのリストの有効なインデック + スでなければならない。ネストしたリストに対してはインデ + ックスを繰り返すことができる。 + このコマンドはリストに要素を追加するためには使えない。 *E711* *E719* :let {var-name}[{idx1}:{idx2}] = {expr1} *E708* *E709* *E710* - Set a sequence of items in a |List| to the result of - the expression {expr1}, which must be a list with the - correct number of items. - {idx1} can be omitted, zero is used instead. - {idx2} can be omitted, meaning the end of the list. - When the selected range of items is partly past the - end of the list, items will be added. + リスト|List|の一部を式{expr}の値で置き換える。{expr}の + 値は正しい個数の要素を持つリストでなければならない。 + {idx1}を省略すると0となる。 + {idx2}を省略するとリストの末尾となる。 + 指定された範囲の一部がリストの末尾を越える場合、要素が + 追加される。 *:let+=* *:let-=* *:let.=* *E734* -:let {var} += {expr1} Like ":let {var} = {var} + {expr1}". -:let {var} -= {expr1} Like ":let {var} = {var} - {expr1}". -:let {var} .= {expr1} Like ":let {var} = {var} . {expr1}". - These fail if {var} was not set yet and when the type - of {var} and {expr1} don't fit the operator. +:let {var} += {expr1} ":let {var} = {var} + {expr1}"と同様。 +:let {var} -= {expr1} ":let {var} = {var} - {expr1}"と同様。 +:let {var} .= {expr1} ":let {var} = {var} . {expr1}"と同様。 + {var}がセットされていないときや、{var}と{expr1}の型が + 演算子に合わないときは失敗する。 :let ${env-name} = {expr1} *:let-environment* *:let-$* 環境変数{env-name}に式{expr1}の結果をセットする。型は 常に文字列。 :let ${env-name} .= {expr1} - Append {expr1} to the environment variable {env-name}. - If the environment variable didn't exist yet this - works like "=". + 環境変数{env-name}に{expr1}を付け加える。その環境変数 + が存在しないときは"="と同様にはたらく。 :let @{reg-name} = {expr1} *:let-register* *:let-@* 式{expr1}の結果をレジスタ{reg-name}に書きこむ。 @@ -5624,161 +5630,158 @@ This would call the function "my_func_whizz(parameter)". 次のコマンドにより最後に検索したパターンをクリアするこ とができる: > :let @/ = "" -< This is different from searching for an empty string, - that would match everywhere. +< これは空文字列を検索するのとは異なる。空文字列を検索す + ると、いたるところでマッチする。 :let @{reg-name} .= {expr1} - Append {expr1} to register {reg-name}. If the - register was empty it's like setting it to {expr1}. - - A String or Number value is - always converted to the type of the option. - For an option local to a window or buffer the effect - is just like using the |:set| command: both the local - value and the global value are changed. - Example: > + レジスタ{reg-name}に{expr1}を付け加える。このレジスタ + が空のときは、そこに{expr1}をセットする。 + +:let &{option-name} = {expr1} *:let-option* *:let-&* + オプション{option-name}に式{expr}の値をセットする。文 + 字列や数値の値はそのオプションの型に変換される。 + ウィンドウやバッファについてローカルなオプションに対し + ては、その効果は|:set|コマンドを使ったときと同様で、ロー + カルな値とグローバルな値の両方が変更される。 + 例: > :let &path = &path . ',/usr/local/include' :let &{option-name} .= {expr1} - For a string option: Append {expr1} to the value. - Does not insert a comma like |:set+=|. + 文字列のオプションの場合: その値に{expr}を付け加える。 + |:set+=|とは違い、コンマを挿入しない。 :let &{option-name} += {expr1} :let &{option-name} -= {expr1} - For a number or boolean option: Add or subtract - {expr1}. + 数値または切替のオプションの場合: {expr1}を足す・引く。 :let &l:{option-name} = {expr1} :let &l:{option-name} .= {expr1} :let &l:{option-name} += {expr1} :let &l:{option-name} -= {expr1} - Like above, but only set the local value of an option - (if there is one). Works like |:setlocal|. + 上と同様だが、オプションのローカルな値だけをセットする + (ローカルな値があるならば)。|:setlocal|と同様にはたら + く。 :let &g:{option-name} = {expr1} :let &g:{option-name} .= {expr1} :let &g:{option-name} += {expr1} :let &g:{option-name} -= {expr1} - Like above, but only set the global value of an option - (if there is one). Works like |:setglobal|. + 上と同様だが、オプションのグローバルな値だけをセットす + る(グローバルな値があるならば)。|:setglobal|と同様には + たらく。 :let [{name1}, {name2}, ...] = {expr1} *:let-unpack* *E687* *E688* - {expr1} must evaluate to a |List|. The first item in - the list is assigned to {name1}, the second item to - {name2}, etc. - The number of names must match the number of items in - the |List|. - Each name can be one of the items of the ":let" - command as mentioned above. - Example: > + {expr1}の値はリスト|List|でなければならない。そのリス + トの最初の要素が{name1}に代入され、2番目の要素が + {name2}に代入される。以下同様。 + nameの個数がリスト|List|の要素の個数に一致しなければな + らない。 + 前述のように各nameは":let"コマンドの要素の1つになるこ + とができる。 + 例: > :let [s, item] = GetItem(s) -< Detail: {expr1} is evaluated first, then the - assignments are done in sequence. This matters if - {name2} depends on {name1}. Example: > +< 詳細: 最初に{expr1}が評価され、それから順番に代入が行 + われる。{name2}が{name1}に依存するかどうかは問題になる。 + 例: > :let x = [0, 1] :let i = 0 :let [i, x[i]] = [1, 2] :echo x -< The result is [0, 2]. +< 子の結果は[0, 2]となる。 :let [{name1}, {name2}, ...] .= {expr1} :let [{name1}, {name2}, ...] += {expr1} :let [{name1}, {name2}, ...] -= {expr1} - Like above, but append/add/subtract the value for each - |List| item. + 上と同様だが、リスト|List|の各要素に対し連結・足し算・ + 引き算を行う。 :let [{name}, ..., ; {lastname}] = {expr1} - Like |:let-unpack| above, but the |List| may have more - items than there are names. A list of the remaining - items is assigned to {lastname}. If there are no - remaining items {lastname} is set to an empty list. - Example: > + |:let-unpack|と同様だが、リスト|List|の要素数がnamesの + 数より多くてもよい。余った要素のリストが{lastname}に代 + 入される。要素の余りがないとき{lastname}は空リストにな + る。 + 例: > :let [a, b; rest] = ["aval", "bval", 3, 4] < :let [{name}, ..., ; {lastname}] .= {expr1} :let [{name}, ..., ; {lastname}] += {expr1} :let [{name}, ..., ; {lastname}] -= {expr1} - Like above, but append/add/subtract the value for each - |List| item. + 上と同様だが、リスト|List|の各要素に対して連結・足し算 + ・引き算を行う。 *E106* -:let {var-name} .. List the value of variable {var-name}. Multiple - variable names may be given. Special names recognized - here: *E738* - g: global variables - b: local buffer variables - w: local window variables - t: local tab page variables - s: script-local variables - l: local function variables - v: Vim variables. - -:let List the values of all variables. The type of the - variable is indicated before the value: - String - # Number +:let {var-name} .. 変数{var-name}の値を一覧表示する。変数の名前を複数指定 + することができる。以下の特別な名前が認識される: *E738* + g: グローバル変数 + b: バッファローカル変数 + w: ウィンドウローカル変数 + t: タブページローカル変数 + s: スクリプトローカル変数 + l: 関数ローカル変数 + v: Vimの変数 + +:let 全変数の値を一覧表示する。値の前に変数の型が示される: + 文字列 + # 数値 * Funcref :unl[et][!] {name} ... *:unlet* *:unl* *E108* *E795* - Remove the internal variable {name}. Several variable - names can be given, they are all removed. The name - may also be a |List| or |Dictionary| item. - With [!] no error message is given for non-existing - variables. - One or more items from a |List| can be removed: > - :unlet list[3] " remove fourth item - :unlet list[3:] " remove fourth item to last -< One item from a |Dictionary| can be removed at a time: > + 内部変数{name}を削除する。複数の変数名を指定すると、そ + れらが全て削除される。名前はリスト|List|や辞書 + |Dictionary|の要素でもよい。 + [!]をつけると存在しない変数に対するエラーメッセージを + 表示しない。 + リスト|List|から1個以上の要素を削除することができる: > + :unlet list[3] " 4番目の要素を削除 + :unlet list[3:] " 4番目から最後までの要素を + 削除 +< 辞書からは一度に1個の要素を削除することができる: > :unlet dict['two'] :unlet dict.two :lockv[ar][!] [depth] {name} ... *:lockvar* *:lockv* - Lock the internal variable {name}. Locking means that - it can no longer be changed (until it is unlocked). - A locked variable can be deleted: > + 内部変数{name}をロックする。ロックすると、それ以降変更 + ができなくなる(アンロックするまで)。 + ロックされた変数を削除することはできる: > :lockvar v - :let v = 'asdf' " fails! + :let v = 'asdf' " 失敗! :unlet v < *E741* - If you try to change a locked variable you get an - error message: "E741: Value of {name} is locked" - - [depth] is relevant when locking a |List| or - |Dictionary|. It specifies how deep the locking goes: - 1 Lock the |List| or |Dictionary| itself, - cannot add or remove items, but can - still change their values. - 2 Also lock the values, cannot change - the items. If an item is a |List| or - |Dictionary|, cannot add or remove - items, but can still change the - values. - 3 Like 2 but for the |List| / - |Dictionary| in the |List| / - |Dictionary|, one level deeper. - The default [depth] is 2, thus when {name} is a |List| - or |Dictionary| the values cannot be changed. + ロックされた変数を変更しようとするとエラーメッセージ + "E741: Value of {name} is locked"が表示される。 + + [depth]はリスト|List|や辞書|Dictionary|をロックすると + きに意味がある。どれだけ深くロックするかを指定する: + 1 リストや辞書それ自身をロックする。要素 + を追加したり削除はできないが、要素の値 + を変えることはできる。 + 2 要素の値もロックする。その要素がリスト + や辞書である場合、その中の要素の追加や + 削除はできないが、値の変更はできる。 + 3 2と同様だが、リスト・辞書内のリスト・ + 辞書に対してもあてはまる。1レベル深い。 + [depth]の既定値は2であり、{name}がリストまたは辞書であ + る場合、その値は変更できない。 *E743* - For unlimited depth use [!] and omit [depth]. - However, there is a maximum depth of 100 to catch - loops. - - Note that when two variables refer to the same |List| - and you lock one of them, the |List| will also be - locked when used through the other variable. - Example: > + 深さを無限にするには[!]を使い、[depth]を省略する。しか + しループを捕捉するために深さの最大値は100に設定されて + いる。 + + Note 2つの変数が同じリスト|List|を参照している場合、片 + 方の変数をロックすると、もう一方の変数を介してアクセス + した場合もロックされている。 + 例: > :let l = [0, 1, 2, 3] :let cl = l :lockvar l - :let cl[1] = 99 " won't work! -< You may want to make a copy of a list to avoid this. - See |deepcopy()|. + :let cl[1] = 99 " 代入できない! +< + これを回避するにはリストのコピーを作るとよい。 + |deepcopy()|を参照。 :unlo[ckvar][!] [depth] {name} ... *:unlockvar* *:unlo* - Unlock the internal variable {name}. Does the - opposite of |:lockvar|. - + 内部変数{name}をアンロックする。|:lockvar|の逆を行う。 :if {expr1} *:if* *:endif* *:en* @@ -5796,25 +5799,24 @@ This would call the function "my_func_whizz(parameter)". :if version >= 500 : version-5-specific-commands :endif -< The commands still need to be parsed to find the - "endif". Sometimes an older Vim has a problem with a - new command. For example, ":silent" is recognized as - a ":substitute" command. In that case ":execute" can - avoid problems: > +< しかしそれでも"endif"を見つけるために後続のコマンドを + パースする必要がある。古いVimで新しいコマンドを使うと + 問題が起こることがある。例えば":silent"が":substitute" + コマンドと認識されるなど。その場合には、":execute"を使 + うと問題を避けることができる: > :if version >= 600 : execute "silent 1,$delete" :endif < - NOTE: The ":append" and ":insert" commands don't work - properly in between ":if" and ":endif". - + NOTE: ":append"と":insert"コマンドは":if"と":endif"の + 間では正しく動かない。 - *:else* *:el* + *:else* *:el* *E581* *E583* :el[se] 対応する":if"ブロックが実行されなかった場合には、これ に対応する":else"か":endif"までのコマンドが実行され る。 - *:elseif* *:elsei* + *:elseif* *:elsei* *E582* *E584* :elsei[f] {expr1} ":else" ":if"の省略形。":endif"を付け加える(入れ子にす る)手間を省くことができる。 @@ -5836,286 +5838,249 @@ This would call the function "my_func_whizz(parameter)". :for {var} in {list} *:for* *E690* *E732* :endfo[r] *:endfo* *:endfor* - Repeat the commands between ":for" and ":endfor" for - each item in {list}. Variable {var} is set to the - value of each item. - When an error is detected for a command inside the - loop, execution continues after the "endfor". - Changing {list} inside the loop affects what items are - used. Make a copy if this is unwanted: > + {list}の各要素に対し、":for"と":endfor"の間のコマンド + を繰り返す。変数{var}に各要素の値がセットされる。 + ループの内側のコマンドでエラーが検出されたときは + "endfor"の後から実行が継続される。 + ループの内側で{list}を変更するとどの要素が使われるかに + 影響を与える。それを望まない場合はコピーを作ること: > :for item in copy(mylist) -< When not making a copy, Vim stores a reference to the - next item in the list, before executing the commands - with the current item. Thus the current item can be - removed without effect. Removing any later item means - it will not be found. Thus the following example - works (an inefficient way to make a list empty): > +< コピーを作らないと、Vimは現在の要素に対してコマンドを + 実行する前に、リストの次の要素への参照を保存する。その + ため副作用なしに現在の要素を削除することができる。それ + 以降の要素を変更すると、それが見つからなくなる。つまり + 以下の例は動作する(リストを空にする非効率な方法): > :for item in mylist :call remove(mylist, 0) :endfor -< Note that reordering the list (e.g., with sort() or - reverse()) may have unexpected effects. - Note that the type of each list item should be - identical to avoid errors for the type of {var} - changing. Unlet the variable at the end of the loop - to allow multiple item types. +< Note リストを並べ替える(例えばsort()やreverse()で)と予 + 期しない結果になることがある。 + Note {var}の型が変わってしまうのを避けるために、リスト + の各要素の型は同じでなければならない。ループの末尾でこ + の変数をunletすれば要素の型が同一でなくてもよくなる。 -:for {var} in {list} *:for* *E690* *E732* -:endfo[r] *:endfo* *:endfor* - Repeat the commands between ":for" and ":endfor" for - each item in {list}. Variable {var} is set to the - value of each item. - When an error is detected for a command inside the - loop, execution continues after the "endfor". - Changing {list} inside the loop affects what items are - used. Make a copy if this is unwanted: > - :for item in copy(mylist) -< When not making a copy, Vim stores a reference to the - next item in the list, before executing the commands - with the current item. Thus the current item can be - removed without effect. Removing any later item means - it will not be found. Thus the following example - works (an inefficient way to make a list empty): > - :for item in mylist - :call remove(mylist, 0) - :endfor -< Note that reordering the list (e.g., with sort() or - reverse()) may have unexpected effects. - Note that the type of each list item should be - identical to avoid errors for the type of {var} - changing. Unlet the variable at the end of the loop - to allow multiple item types. :for [{var1}, {var2}, ...] in {listlist} :endfo[r] - Like ":for" above, but each item in {listlist} must be - a list, of which each item is assigned to {var1}, - {var2}, etc. Example: > + 上の":for"と同様だが、{listlist}の各要素がリストでなけ + ればならない点が異なる。そのリストの各要素が{var1}, + {var2}などに代入される。例: > :for [lnum, col] in [[1, 3], [2, 5], [3, 8]] :echo getline(lnum)[col] :endfor < *:continue* *:con* *E586* -:con[tinue] When used inside a ":while" or ":for" loop, jumps back - to the start of the loop. - If it is used after a |:try| inside the loop but - before the matching |:finally| (if present), the - commands following the ":finally" up to the matching - |:endtry| are executed first. This process applies to - all nested ":try"s inside the loop. The outermost - ":endtry" then jumps back to the start of the loop. +:con[tinue] ":while"または":for"ループの内側で使われたときは、その + ループの開始位置まで戻る。 + ループの内側の|:try|と|:finally|の間で使われた場合、 + |:finally|から|:endtry|までの間のコマンドがまず実行さ + れる。ループの内側で":try"がネストしている場合、全ての + ":try"に対してこのプロセスが適用される。最も外側の + ":endtry"の後ループの開始位置まで戻る。 *:break* *:brea* *E587* -:brea[k] When used inside a ":while" or ":for" loop, skips to - the command after the matching ":endwhile" or - ":endfor". - If it is used after a |:try| inside the loop but - before the matching |:finally| (if present), the - commands following the ":finally" up to the matching - |:endtry| are executed first. This process applies to - all nested ":try"s inside the loop. The outermost - ":endtry" then jumps to the command after the loop. +:brea[k] ":while"または":for"ループの内側で使われたときは、対応 + する":endwhile"または":endfor"の後のコマンドまでスキッ + プする。 + ループの内側の|:try|と|:finally|の間で使われた場合、 + |:finally|から|:endtry|までの間のコマンドがまず実行さ + れる。ループの内側で":try"がネストしている場合、全ての + ":try"に対してこのプロセスが適用される。最も外側の + ":endtry"の後ループの後までジャンプする。 :try *:try* *:endt* *:endtry* *E600* *E601* *E602* -:endt[ry] Change the error handling for the commands between - ":try" and ":endtry" including everything being - executed across ":source" commands, function calls, - or autocommand invocations. - - When an error or interrupt is detected and there is - a |:finally| command following, execution continues - after the ":finally". Otherwise, or when the - ":endtry" is reached thereafter, the next - (dynamically) surrounding ":try" is checked for - a corresponding ":finally" etc. Then the script - processing is terminated. (Whether a function - definition has an "abort" argument does not matter.) - Example: > +:endt[ry] ":try"と":endtry"の間のコマンド(":source"コマンド、関 + 数呼び出し、自動コマンド実行を含めた全てのコマンド実行) + のエラー制御を変更する。 + + エラーや割り込みが検出された場合、後に|:finally|コマン + ドがあるならば、":finally"の後から実行が継続される。そ + うでければ、または":endtry"に達した後は次の動的に囲ん + でいる":try"に対応する":finally"などが探される。その後 + スクリプトは実行を停止する。(関数定義に引数"abort"がつ + いているかどうかは関係ない) + 例: > :try | edit too much | finally | echo "cleanup" | endtry - :echo "impossible" " not reached, script terminated above + :echo "impossible" " 実行されない。上のコマンドにより + " スクリプトは停止する。 < - Moreover, an error or interrupt (dynamically) inside - ":try" and ":endtry" is converted to an exception. It - can be caught as if it were thrown by a |:throw| - command (see |:catch|). In this case, the script - processing is not terminated. - - The value "Vim:Interrupt" is used for an interrupt - exception. An error in a Vim command is converted - to a value of the form "Vim({command}):{errmsg}", - other errors are converted to a value of the form - "Vim:{errmsg}". {command} is the full command name, - and {errmsg} is the message that is displayed if the - error exception is not caught, always beginning with - the error number. - Examples: > + さらに、(動的に)":try"と":endtry"の内側にあるエラーや + 割り込みは例外に変換される。そしてそれは|:throw|コマン + ドによって投げたときと同様に捕捉できる(|:catch|を参照)。 + この場合はスクリプトの実行は停止しない。 + + 割り込み例外には"Vim:Interrupt"という値が使われる。 + Vimコマンドにおけるエラーは"Vim({command}):{errmsg}"と + いう形式の値に変換される。その他のエラーは + "Vim:{errmsg}"という形式のエラーに変換される。ここで + {command}はコマンドの完全な名前であり、{errmsg}はその + 例外が捕捉されなかった場合に表示されるメッセージで、常 + にエラー番号で始まる。 + 例: > :try | sleep 100 | catch /^Vim:Interrupt$/ | endtry :try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry < *:cat* *:catch* *E603* *E604* *E605* -:cat[ch] /{pattern}/ The following commands until the next ":catch", - |:finally|, or |:endtry| that belongs to the same - |:try| as the ":catch" are executed when an exception - matching {pattern} is being thrown and has not yet - been caught by a previous ":catch". Otherwise, these - commands are skipped. - When {pattern} is omitted all errors are caught. - Examples: > - :catch /^Vim:Interrupt$/ " catch interrupts (CTRL-C) - :catch /^Vim\%((\a\+)\)\=:E/ " catch all Vim errors - :catch /^Vim\%((\a\+)\)\=:/ " catch errors and interrupts - :catch /^Vim(write):/ " catch all errors in :write - :catch /^Vim\%((\a\+)\)\=:E123/ " catch error E123 - :catch /my-exception/ " catch user exception - :catch /.*/ " catch everything - :catch " same as /.*/ +:cat[ch] /{pattern}/ {pattern}にマッチする例外が発生し、より前の":catch" + で捕捉されなかった場合、このコマンドから次の|:catch|, + |:finally|, |:endtry|までのコマンドが実行される。その + ような例外が発生しなかった場合、そのコマンドはスキップ + される。 + {pattern}が省略された場合は全てのエラーが捕捉される。 + 例: > + :catch /^Vim:Interrupt$/ " 割り込み (CTRL-C) を捕捉 + :catch /^Vim\%((\a\+)\)\=:E/ " 全Vimエラーを捕捉 + :catch /^Vim\%((\a\+)\)\=:/ " 例外と割り込みを捕捉 + :catch /^Vim(write):/ " :writeにおける全エラーを捕捉 + :catch /^Vim\%((\a\+)\)\=:E123/ " エラーE123を捕捉 + :catch /my-exception/ " ユーザ定義例外を捕捉 + :catch /.*/ " 全てを捕捉 + :catch " /.*/と同じ < - Another character can be used instead of / around the - {pattern}, so long as it does not have a special - meaning (e.g., '|' or '"') and doesn't occur inside - {pattern}. - NOTE: It is not reliable to ":catch" the TEXT of - an error message because it may vary in different - locales. + {pattern}を囲むのに/以外の文字を使うことができる。ただ + しその文字は特別な意味(例: '|'や'"'など)を持っていては + ならず、{pattern}の内側に現れてはならない。 + NOTE: エラーメッセージの本文によって":catch"することは + 確実ではない。メッセージはロケールによって異なるからで + ある。 *:fina* *:finally* *E606* *E607* -:fina[lly] The following commands until the matching |:endtry| - are executed whenever the part between the matching - |:try| and the ":finally" is left: either by falling - through to the ":finally" or by a |:continue|, - |:break|, |:finish|, or |:return|, or by an error or - interrupt or exception (see |:throw|). +:fina[lly] |:try|と":finally"の間を抜ける前に必ず、このコマンドか + ら対応する|:endtry|の間のコマンドが実行される。つまり + 正常に進んだ場合、|:continue|, |:break|, |:finish|, + |:return|を使った場合、エラー・割り込み・例外が発生し + た場合(|:throw|を参照)のいずれの場合でも。 *:th* *:throw* *E608* -:th[row] {expr1} The {expr1} is evaluated and thrown as an exception. - If the ":throw" is used after a |:try| but before the - first corresponding |:catch|, commands are skipped - until the first ":catch" matching {expr1} is reached. - If there is no such ":catch" or if the ":throw" is - used after a ":catch" but before the |:finally|, the - commands following the ":finally" (if present) up to - the matching |:endtry| are executed. If the ":throw" - is after the ":finally", commands up to the ":endtry" - are skipped. At the ":endtry", this process applies - again for the next dynamically surrounding ":try" - (which may be found in a calling function or sourcing - script), until a matching ":catch" has been found. - If the exception is not caught, the command processing - is terminated. - Example: > +:th[row] {expr1} {expr1}を評価し、例外として投げる。|:try|と|:catch|の + 間で":throw"が使われた場合、{expr1}にマッチする最初の + |:catch|までのコマンドはスキップされる。そのような + ":catch"がない場合、または":catch"と|:finally|の間で + ":throw"が使われた場合、":finally"から|:endtry|までの + コマンドが実行される。":throw"が":finally"の後で実行さ + れた場合、":endtry"までのコマンドはスキップされる。 + ":endtry"において、動的に囲んでいる次の":try"(これは関 + 数呼び出しやスクリプトsourceも含めて探される)から対応 + する":catch"までに対しこのプロセスが再び適用される。例 + 外が捕捉されない場合、コマンドの処理は終了する。 + 例: > :try | throw "oops" | catch /^oo/ | echo "caught" | endtry < *:ec* *:echo* -:ec[ho] {expr1} .. スペースで区切られで終了する引数{expr1}を表示す - る。|:comment|も参照。 +:ec[ho] {expr1} .. 各{expr1}をスペースで区切って表示する。最初の{expr1}の + 表示は、常に新しい行から始まる。 + |:comment|も参照。 改行が必要な場合"\n"を使用する。カーソルを第1列(カラ ム)に持って行くには"\r"を使用する。 + 色強調を行うにはコマンド|:echohl|を使用する。 コメント文を同じ行に続けることはできない。 例: > :echo "the value of 'shell' is" &shell < *:echo-redraw* - A later redraw may make the message disappear again. - And since Vim mostly postpones redrawing until it's - finished with a sequence of commands this happens - quite often. To avoid that a command from before the - ":echo" causes a redraw afterwards (redraws are often - postponed until you type something), force a redraw - with the |:redraw| command. Example: > + 後で再描画を行うとこのメッセージが消えてしまう。そして + Vimはコマンド列が完了するまで再描画を後回しにするので + この現象はよく起きる。":echo"の前に実行したコマンドが + 後で再描画を引き起こす(再描画はしばしばユーザが何か入 + 力するまで後回しにされる)というこの問題を避けるには、 + |:redraw|コマンドにより再描画を強制すること。例: > :new | redraw | echo "there is a new window" < *:echon* :echon {expr1} .. 改行を付けずに、{expr1}を表示する。|:comment|も参照。 + 色強調を行うにはコマンド|:echohl|を使用する。 コメント文を同じ行に続けることはできない。 - 例: -> :echon "the value of 'shell' is " &shell - + 例: > + :echon "the value of 'shell' is " &shell +< Vimコマンドの":echo"と、外部のシェルコマンドである - ":!echo"との違いに注意: -> :!echo % --> filename - ":!"の引数は展開される。|:_%|を参照。 -> :!echo "%" --> filename or "filename" - 前の例のように働く。ダブルクォートが表示されるかどうか - は、使用している'shell'に依存する。 -> :echo % --> 何も表示されない - '%'は式として不当な文字である。 -> :echo "%" --> % - 単に文字'%'を表示する。 -> :echo expand("%") --> filename - '%'を展開するために関数expand()を呼び出している。 + ":!echo"との違いに注意: > + :!echo % --> filename +< ":!"の引数は展開される。|:_%|を参照。 > + :!echo "%" --> filename or "filename" +< 前の例のように働く。ダブルクォートが表示されるかどうか + は、使用している'shell'に依存する。 > + :echo % --> 何も表示されない +< '%'は式として不当な文字である。 > + :echo "%" --> % +< 単に文字'%'を表示する。 > + :echo expand("%") --> filename +< '%'を展開するために関数expand()を呼び出している。 *:echoh* *:echohl* -:echoh[l] {name} 次の":echo[n]"コマンドから、ハイライトグループ{name}を - 適用する。例: -> :echohl WarningMsg | echo "Don't panic!" | echohl None - 使用した後にはグループを"None"に戻すことを忘れないよう +:echoh[l] {name} 次の|:echo|, |:echon|, |:echomsg|"コマンドから、ハイラ + イトグループ{name}を適用する。|input()|のプロンプトに + 対しても適用される。例: > + :echohl WarningMsg | echo "Don't panic!" | echohl None +< 使用した後にはグループを"None"に戻すことを忘れないよう に。さもないとそれ以降のechoの表示総てがハイライトされ てしまう。 *:echom* *:echomsg* -:echom[sg] {expr1} .. Echo the expression(s) as a true message, saving the - message in the |message-history|. - Spaces are placed between the arguments as with the - |:echo| command. But unprintable characters are - displayed, not interpreted. - The parsing works slightly different from |:echo|, - more like |:execute|. All the expressions are first - evaluated and concatenated before echoing anything. - The expressions must evaluate to a Number or String, a - Dictionary or List causes an error. - Uses the highlighting set by the |:echohl| command. - Example: > +:echom[sg] {expr1} .. 式を本当のメッセージとして表示し、そのメッセージをメッ + セージ履歴|message-history|に保存する。 + |:echo|コマンド同様に、引数の間にスペースが挿入される。 + しかし印字不可能な文字は解釈されずに表示される。 + |:echo|とはかなり異なり、むしろ|:execute|に近い方法で + 解析がされる。なんらかを表示する前に、まず最初に全ての + 式が評価し、連結する。式を評価した値は数値か文字列でな + ければならない。辞書やリストはエラーとなる。 + 強調を行うには|:echohl|コマンドを使う。 + 例: > :echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see." -< See |:echo-redraw| to avoid the message disappearing - when the screen is redrawn. +< 画面を再描画したときメッセージが消去されてしまうのを避 + ける方法については|:echo-redraw|を参照。 *:echoe* *:echoerr* -:echoe[rr] {expr1} .. Echo the expression(s) as an error message, saving the - message in the |message-history|. When used in a - script or function the line number will be added. - Spaces are placed between the arguments as with the - :echo command. When used inside a try conditional, - the message is raised as an error exception instead - (see |try-echoerr|). - Example: > +:echoe[rr] {expr1} .. 式をエラーメッセージとして表示し、そのメッセージを + メッセージ履歴|message-history|に保存する。スクリプト + や関数の中で使用されたときは行番号が付け加えられる。 + |:echo|コマンドと同様に引数の間にスペースが挿入される。 + try条件文の中で使用されたときは、このメッセージがエラ + ー例外として投げられる。(|try-echoerr|を参照) + 例: > :echoerr "This script just failed!" -< If you just want a highlighted message use |:echohl|. - And to get a beep: > +< + 単にメッセージを強調させたい場合には|:echohl|を使うこ + と。ビープを鳴らしたいときには次のようにする: > :exe "normal \" < *:exe* *:execute* :exe[cute] {expr1} .. {expr1}の評価結果の文字列をExコマンドとして実行する。 - スペースで区切られた複数の引数は連結される。 + 複数の引数は連結され、間にスペースが挿入される。 + {expr1}は処理されたコマンドとして扱われ、コマンドライ + ン編集用のキーは認識されない。 コメント文を同じ行に続けることはできない。 - 例: -> :execute "buffer " nextbuf -> :execute "normal " count . "w" - - Executeは'|'を受けつけないコマンドに、次のコマンドを続 - けて実行させるのにも使用できる。例: -> :execute '!ls' | echo "theend" - (訳注:普通の使い方では":!ls"の後には'|'を使って、Exコ + 例: > + :execute "buffer " nextbuf + :execute "normal " count . "w" +< + ":execute"は'|'を受けつけないコマンドに、次のコマンドを + 続けて実行させるのにも使用できる。例: > + :execute '!ls' | echo "theend" +< (訳注:普通の使い方では":!ls"の後には'|'を使って、Exコ マンドを続けることはできない) + また":execute"は、Vimスクリプト内でコマンド":normal"の + 引数に制御文字を書くことを避けるために役に立つ。 > + :execute "normal ixxx\" +< これで文字を表す。|expr-string|を参照。 注意:executeに渡す文字列としては、"while"や"if"系のコ マンドが始まったり終ったりするだけのようなものは不適格 - である。よって次のような例は認められない: - Note: The executed string may be any command-line, but - you cannot start or end a "while" or "if" command. - Thus this is illegal: -> :execute 'while i > 5' -> :execute 'echo "test" | break' - + である。よって次のような例は認められない: > + :execute 'while i > 5' + :execute 'echo "test" | break' +< 文字列の中に完全な"while"や"if"コマンドが含まれること - が求められる: -> :execute 'while i < 5 | echo i | let i = i + 1 | endwhile' - + が求められる: > + :execute 'while i < 5 | echo i | let i = i + 1 | endwhile' +< *:comment* ":execute"や":echo"そして":echon"は、同一行に直接コメ ントを続けることはできない。何故ならそれらのコマンドに とって'"'は文字列の始まりに見えてしまうからである。し - かし'|'の後にコメントを書くことは可能である。例: -> :echo "foo" | "this is a comment + かし'|'の後にコメントを書くことは可能である。例: > + :echo "foo" | "this is a comment ============================================================================== 8. 例外処理 *exception-handling* @@ -6609,14 +6574,14 @@ finally節におけるエラーにより、割り込みが正しく動作しな :catch /^Vim\((\a\+)\)\=:E\d\+:/ < *catch-text* -NOTE: エラーメッセージのテキスト自身を捕捉してはならない > +NOTE: エラーメッセージの本文によって捕捉しようとしてはならない > :catch /No such variable/ こうすると英語の環境では動作するが、コマンド |:language|により他の言語を使って いるユーザの環境では動作しなくなる。しかし、コメントとしてメッセージテキストを 引用することは役に立つ: > :catch /^Vim(\a\+):E108:/ " No such variable -IGNORING ERRORS *ignore-errors* +エラーを無視する *ignore-errors* 特定のコマンドで発生したエラーを捕捉すれば、エラーを無視することができる: > @@ -6973,7 +6938,7 @@ Vimのエラー例外は失敗したコマンドの名前(わかっているな いている。|catch-errors|を参照。 -PECULIARITIES +変わった特性 *except-compat* 例外制御のコンセプトは、例外を引き起こしたコマンドは即座に異常終了し、制御が finally節またはcatch節に移るという前提に基づいている。 From 0026559b0fc3d2ca653a567c32b713a12aa1be1d Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro Date: Tue, 26 Jun 2007 15:32:44 +0000 Subject: [PATCH 102/783] fix: translated *user-functions* in eval.jax. revised ada.jax. git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@102 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/ada.jax | 51 +++++----- ja/eval.jax | 266 +++++++++++++++++++++++----------------------------- memo.txt | 4 +- 3 files changed, 147 insertions(+), 174 deletions(-) diff --git a/ja/ada.jax b/ja/ada.jax index 9c6b616cd..8625b80c9 100644 --- a/ja/ada.jax +++ b/ja/ada.jax @@ -46,21 +46,22 @@ Adaモードは多くの状況を綺麗に取り扱う。 これらにはコマンド"highlight"を使って異なる強調色を設定することができる。(例: ループの色を変えるには":hi Repeat"に続けて強調色指定を続ける; 単純な端末上では -ctermfg=Whiteという指定がしばしば見やすい) +ctermfg=Whiteと指定すると見やすいことが多い) -Adaモードではユーザが設定できる幾つかのオプションが存在する。その完全なリスト +Adaモードではユーザが設定できるオプションがいくつか存在する。その完全なリスト は|ft-ada-options|を参照。 -それら有効化するには、オプションに値を設定する。あるオプションを有効化する例は: +それらを有効化するには、オプションに値を設定する。 +あるオプションを有効化する例: > let ada_standard_types = 1 > 無効化するには":unlet"を使用する。例: > unlet ada_standard_types = 1 -Adaファイルを読込む前に、コマンドラインで":"とこれらコマンドをキー入力すること -で、設定することができる。ファイルに"~/.vimrc"、コロン(":")を除いて"let"コマン -ドを追加すれば、これらのオプション設定を永続化することができる。 +Adaファイルを読込む前に、コマンドラインで":"とこれらのコマンドをキー入力するこ +とで、設定することができる。ファイル"~/.vimrc"に、コロン(":")を除いて"let"コマ +ンドを追加すれば、これらのオプション設定を永続化することができる。 このモードは遅いコンピュータ(90MHz)上でも高速に動作するが、もしもパフォーマン スが受け入れられないほど低いようならば、|g:ada_withuse_ordinary|を有効化する。 @@ -89,7 +90,7 @@ Adaファイルが開かれたときだけこのプラグインはAdaモード 3. オムニ補完 ~ *ft-ada-omni* -Adaオムニ補完(|i_CTRL-X_CTRL-O|)は"gnat xref -v" または "exuberant Ctags" +Adaオムニ補完(|i_CTRL-X_CTRL-O|)は、"gnat xref -v" または "exuberant Ctags" (http://ctags.sourceforge.net) によって作られたtagsデータベースを利用する。補 完関数は、tagsファイルがどちらのツールを使って作られたのかを自動的に判定する。 @@ -128,7 +129,7 @@ Exuberant Ctagsは内蔵の多言語コードパーサを使う。このパー 量の付加情報を生成する(それゆえ"Exuberant Ctags"という名前がつけられている)。 また、コンパイルが通らないファイルに対しても実行できる。 -Exuberant Ctagsを使うVimのツールはたくさんある。 +Exuberant Ctagsを利用するVimのツールはたくさんある。 まず最初に、Ada対応のパッチを適用したExuberant Ctagsをインストールしなければな らない。これはGNU Adaプロジェクトから入手できる。 @@ -142,16 +143,16 @@ Exuberant CtagsのAdaパーサはかなり新しく、完全な対応は期待 Adaモードは複数のAdaコンパイラに対応していて、Adaソースを開くとき、 |g:ada_default_compiler|で設定されているコンパイラセットを自動的に読み込む。 -このコンパイラプラグインは、実際のコンパイラプラグインとサポート関数・変数の集 -合に分かれている。これによって、ユーザの開発環境用に特殊化したコンパイラプラグ -インを作るのが容易になっている。 +このコンパイラプラグインは、実際のコンパイラプラグインと、サポート関数・変数の +セットに分かれている。これによって、ユーザの開発環境用に特殊化したコンパイラプ +ラグインを作ることが容易になっている。 ------------------------------------------------------------------------------ 4.1 GNAT ~ *compiler-gnat* -GNATは現在入手可能な唯一のフリーな(ビールとスピーチ)Adaコンパイラである。ライ -センス条項に違いのある複数のバージョンが用意されている。 +GNATは現在入手可能な唯一の(ビールとスピーチ両方の意味で)フリーなAdaコンパイラ +である。ライセンス条項に違いのある複数のバージョンが用意されている。 GNATコンパイラプラグインはを押すとコンパイルを行い、その後即座に結果を表示 する。プロジェクトファイルを設定することができる: @@ -159,7 +160,7 @@ GNATコンパイラプラグインはを押すとコンパイルを行い、 > call g:gnat.Set_Project_File ('my_project.gpr') プロジェクトファイルを設定すると、GPSと同じようにVimのセッション -(|views-sessions|)も作成される。これは開いているファイル、ウィンドウ位置などを +(|views-sessions|)も作成される。これは開いているファイル・ウィンドウ位置などを プロジェクトごとに記憶しておく。 *gnat_members* @@ -226,7 +227,7 @@ Dec Ada (歴代の名前は VAX Ada, Dec Ada, Compaq Ada, HP Ada)は相当古い Dec Adaは引数としてファイル名でなくパッケージ名が渡されることを期待する。コン パイラプラグインは普通のファイル名の慣習に対応しており、ファイル名をユニット名 -に変換する。区切りとして'-'と'__'の両方に対応している。 +に変換する。区切り文字として'-'と'__'の両方に対応している。 *decada_members* DEC ADA オブジェクト ~ @@ -311,13 +312,13 @@ g:ada_folding 集合 ('sigpft') *g:ada_abbrev* g:ada_abbrev 切替 (存在するなら真) いくつかの短縮入力を追加する。この機能は様々な補完方法によりい - くらか取って代わられている。 + くぶん取って代わられている。 *g:ada_withuse_ordinary* g:ada_withuse_ordinary 切替 (存在するなら真) - "with"と"use"を通常のキーワードで表示する(これらが他のコンパイ - ルユニットへの参照として使われた場合には、特別に通常の強調とし - て表示する)。 + "with"と"use"を通常のキーワードとして表示する(これらが他のコン + パイルユニットへの参照として使われた場合には、特別に通常の強調 + として表示する)。 *g:ada_begin_preproc* g:ada_begin_preproc 切替 (存在するなら真) @@ -415,7 +416,7 @@ g:decada オブジェクト 5.4 定数 ~ *ft-ada-constants* -全ての定数はロックされる。詳しくは|:lockvar|を参照。 +全ての定数はロックされている。詳しくは|:lockvar|を参照。 *g:ada#WordRegex* g:ada#WordRegex 文字列 @@ -452,13 +453,13 @@ ada#List_Tag([{line}, {col}]) *ada#Listtags()* ada#Jump_Tag ({ident}, {mode}) *ada#Jump_Tag()* カーソル下(または指定の行・桁)のAda要素の全ての出現位置を - タグジャンプリスト内にリストする。引数modeは'tjump'、'stjump' - のどちらか。 + タグジャンプリスト内にリストする。引数{mode}は + 'tjump'、'stjump'のどちらかとする。 ada#Create_Tags ({option}) *ada#Create_Tags()* - Ctagsを使ってtagsファイルを作成する。引数optionが'file'なら現 - 在のファイル、'dir'なら現在のファイルのディレクトリ、またはフ - ァイル名とする。 + Ctagsを使ってtagsファイルを作成する。引数{option}が'file'なら + 現在のファイル、'dir'なら現在のファイルのディレクトリ、または + ファイル名とする。 gnat#Insert_Tags_Header() *gnat#Insert_Tags_Header()* GNAT XREFの出力に欠けているタグファイルヘッダ(!_TAG_)の情報を diff --git a/ja/eval.jax b/ja/eval.jax index c292c9c1b..3f0a13b78 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -5231,110 +5231,88 @@ Don't forget that "^" will only match at the first character of the String and ============================================================================== 5. 関数定義 *user-functions* -新しい関数を定義することができる。これらは組込み関数と同様に呼び出すことができ -る。関数は一連のExコマンドを実行する。ノーマルモードコマンドはコマンド -|:normal|によって実行できる。 +ユーザは自分で新しい関数を定義することができる。その関数は組込み関数とまったく +同じように呼び出せる。関数は一連のExコマンドを実行する。ノーマルモードコマンド +はコマンド|:normal|によって実行できる。 関数名は組込み関数との混同を避ける為、大文字で始まらなければならない。他のスク リプトで同じ関数名を使用してしまうことを避ける為に、露骨に短い名前は避けるべき である。関数名を例えば"HTMLcolor()"のように、スクリプトの名前から始めるという のは良い習慣である。 -It's also possible to use curly braces, see |curly-braces-names|. And the -|autoload| facility is useful to define a function only when it's called. +波括弧変数というものもある(|curly-braces-names|を参照)。また、オートロード +|autoload|機構を使うと、関数が呼ばれたときだけ定義することができる。 *local-function* -A function local to a script must start with "s:". A local script function -can only be called from within the script and from functions, user commands -and autocommands defined in the script. It is also possible to call the -function from a mappings defined in the script, but then || must be used -instead of "s:" when the mapping is expanded outside of the script. +スクリプトローカルな関数の名前は"s:"で始めなければならない。スクリプトローカル +な関数は、そのスクリプトの中の関数から、またはそのスクリプト内で定義されたユー +ザ定義コマンド、オートコマンドからしか呼ぶことができない。そのスクリプト内で定 +義されたマッピングにより呼ぶこともできるが、スクリプトの外部でマッピングが展開 +された場合は"s:"の代わりに||をつけなければならない。 *:fu* *:function* *E128* *E129* *E123* :fu[nction] 総ての関数と、その引数を表示する。 -:fu[nction] {name} 関数{name}を表示する。 - {name} can also be a |Dictionary| entry that is a - |Funcref|: > +:fu[nction] {name} 関数{name}の定義を表示する。 + {name}は辞書|Dictionary|の要素の|Funcref|であってもよ + い: > :function dict.init -:fu[nction] /{pattern} List functions with a name matching {pattern}. - Example that lists all functions ending with "File": > +:fu[nction] /{pattern} {pattern}にマッチする名前の関数を表示する。"File"で終 + わる関数を全て表示する例: > :function /File$ < *:function-verbose* -When 'verbose' is non-zero, listing a function will also display where it was -last defined. Example: > +'verbose'が 0 でないとき、これらのコマンドで関数を表示すると、それがどこで定義 +されたかも表示する。例: > :verbose function SetFileTypeSH function SetFileTypeSH(name) Last set from /usr/share/vim/vim-7.0/filetype.vim < -See |:verbose-cmd| for more information. +より詳しくは|:verbose-cmd|を参照。 *E124* *E125* :fu[nction][!] {name}([arguments]) [range] [abort] [dict] {name}という名前で新しい関数を定義する。関数名はアル - ファベットと数字と'_'からなり、アルファベットの大文字 - で始まらなければならない。 - 引数は、与えられた名前によって定義される。関数のなかで - は"a:name"("a:"を引数に接頭)のようにして参照することが - できる。 - 引数はカンマで区切ることで、最大20まで与えることができ - る。最後の引数を"..."にすることで、可変長の引数を使用 - できる。関数の中では"a:1"や"a:2"のようにして可変長の引 - 数にアクセスできる。"a:0"は可変長引数が幾つあるかを示 - している(0であること、つまり引数がそれ以上ないこともあ - る)。 - "..."が使われていない時は、引数の数は名前付きの引数の - 個数を示す。"..."を使った時には引数の数は大きくなるだ - ろう。 - 関数を引数無しで定義することも可能である。その時でも() - は付けなければならない。 - 関数の本体は、宣言の次の行から始まり、対応する - |:endfunction|までになる。関数の中で別の関数を定義する - ことも可能である。 + ファベットと数字と'_'からなり、通常の関数はアルファベッ + トの大文字、スクリプトローカル関数は"s:"で始まらなけれ + ばならない。 + + {name}は辞書|Dictionary|の要素の|Funcref|であってもよ + い: > + :function dict.init(arg) +< "dict"は既に定義されている辞書でなければならない。その + 要素"init"がまだ存在しないならば追加される。存在する場 + 合は、既存の関数を上書きするためには[!]をつけなければ + ならない。この値は番号つきの関数を指す|Funcref|である。 + この関数は|Funcref|を通してのみ呼ぶことができ、そこへの + 参照がなくなると削除される。 + *E127* *E122* この名前で定義される関数が既に定義済みで[!]が使用され なかった場合、エラーとなる。[!]が使用されていれば、そ れまで存在していた関数は、速やかに新しいものへ置換えら れる。 - 引数[range]を追加した場合、関数は「領域」を管理するこ - とができる。「領域」は"a:firstline"と"a:lastline"に - よって渡される。[range]がなかった場合、":call"が「領 - 域」を指定されて実行されると、1行1行について、カーソル - をその行の先頭に置いた状態で関数を呼び出すことになる。 - |function-range-example|を参照。 - 引数[abort]を追加すると、関数の実行中にエラーに遭遇し - 次第、即関数は中断される。 - 関数の実行によって、最後に使用されたサーチパターン、及 - びredoコマンドの"."の内容は変更されない。 - *E127* *E122* - When a function by this name already exists and [!] is - not used an error message is given. When [!] is used, - an existing function is silently replaced. Unless it - is currently being executed, that is an error. - - For the {arguments} see |function-argument|. + 引数{arguments}については|function-argument|を参照。 *a:firstline* *a:lastline* - When the [range] argument is added, the function is - expected to take care of a range itself. The range is - passed as "a:firstline" and "a:lastline". If [range] - is excluded, ":{range}call" will call the function for - each line in the range, with the cursor on the start - of each line. See |function-range-example|. + 引数[range]を追加した場合、関数は「範囲」を管理するこ + とができる。「範囲」は"a:firstline"と"a:lastline"に + よって渡される。[range]がなかった場合、":{range}call" + が「範囲」を指定されて実行されると、1行1行について、カー + ソルをその行の先頭に置いた状態で関数を呼び出すことにな + る。|function-range-example|を参照。 - When the [abort] argument is added, the function will - abort as soon as an error is detected. + 引数[abort]を追加すると、関数の実行中にエラーに遭遇し + 次第、即関数は中断される。 - When the [dict] argument is added, the function must - be invoked through an entry in a |Dictionary|. The - local variable "self" will then be set to the - dictionary. See |Dictionary-function|. + 引数[dict]を追加すると、この関数は辞書|Dictionary|の要 + 素を通してしか呼べなくなる。そしてその辞書にローカル変 + 数"self"が定義される。|Dictionary-function|を参照。 - The last used search pattern and the redo command "." - will not be changed by the function. + 関数の実行によって、最後に使用されたサーチパターン、及 + びredoコマンドの"."の内容は変更されない。 *:endf* *:endfunction* *E126* *E193* :endf[unction] 関数定義の終了。このコマンド1つで1行とすること。他のコ @@ -5342,12 +5320,11 @@ See |:verbose-cmd| for more information. *:delf* *:delfunction* *E130* *E131* :delf[unction] {name} 関数{name}を削除する。 - {name} can also be a |Dictionary| entry that is a - |Funcref|: > + {name}は辞書|Dictionary|の要素の|Funcref|であってもよ + い: > :delfunc dict.init -< This will remove the "init" entry from "dict". The - function is deleted if there are no more references to - it. +< この例は"dict"から要素"init"を削除する。この関数への参 + 照がなくなると、関数は削除される。 *:retu* *:return* *E133* :retu[rn] [expr] 関数から戻る。"[expr]"が与えられた場合、それは評価され 関数の戻り値として呼出し側に渡される。"[expr]"が与えら @@ -5356,38 +5333,34 @@ See |:verbose-cmd| for more information. いことに留意すること。つまり、たとえ":return"命令の後 に何か命令があったとしても、警告も何も与えられない。 - If the ":return" is used after a |:try| but before the - matching |:finally| (if present), the commands - following the ":finally" up to the matching |:endtry| - are executed first. This process applies to all - nested ":try"s inside the function. The function - returns at the outermost ":endtry". + |:try|と|:finally|の間で":return"が実行された場合、 + ":finally"から対応する|:endtry|までのコマンドがまず実 + 行される。":try"がネストしている場合、それらの全てに対 + してこのプロセスが適用される。そして最も外側の + ":endtry"にて関数を抜ける。 *function-argument* *a:var* -An argument can be defined by giving its name. In the function this can then -be used as "a:name" ("a:" for argument). +引数は、与えられた名前によって定義される。関数のなかでは"a:name"("a:"を引数に +接頭)のようにして参照することができる。 *a:0* *a:1* *a:000* *E740* *...* -Up to 20 arguments can be given, separated by commas. After the named -arguments an argument "..." can be specified, which means that more arguments -may optionally be following. In the function the extra arguments can be used -as "a:1", "a:2", etc. "a:0" is set to the number of extra arguments (which -can be 0). "a:000" is set to a |List| that contains these arguments. Note -that "a:1" is the same as "a:000[0]". +引数はカンマで区切ることで、最大20まで与えることができる。最後の引数を"..."に +することで、可変長の引数を使用できる。関数の中では"a:1"や"a:2"のようにして可変 +長の引数にアクセスできる。"a:0"は可変長引数が幾つあるかを示している(0であるこ +と、つまり引数がそれ以上ないこともある)。"a:000"は全引数を持つリスト|List|を示 +している。Note "a:1"は"a:000[0]"と同じである。 *E742* -The a: scope and the variables in it cannot be changed, they are fixed. -However, if a |List| or |Dictionary| is used, you can changes their contents. -Thus you can pass a |List| to a function and have the function add an item to -it. If you want to make sure the function cannot change a |List| or -|Dictionary| use |:lockvar|. +a: のスコープとこの変数は固定されており、変更できない。 +しかしリスト|List|か辞書|Dictionary|の場合は、その要素を変更できる。よって関数 +にリスト|List|を渡し、そこに要素を追加させることができる。関数にリストや辞書を +変更させたくない場合は|:lockvar|を使うこと。 -When not using "...", the number of arguments in a function call must be equal -to the number of named arguments. When using "...", the number of arguments -may be larger. +"..."が使われていない時は、引数の数は名前付きの引数の個数を示す。"..."を使った +時には引数の数は大きくなるだろう。 + +関数を引数無しで定義することも可能である。その時でも()は付けなければならない。 +関数の本体は、宣言の次の行から始まり、対応する|:endfunction|までになる。関数の +中で別の関数を定義することも可能である。 -It is also possible to define a function without any arguments. You must -still supply the () then. The body of the function follows in the next lines, -until the matching |:endfunction|. It is allowed to define another function -inside a function body. *local-variables* 関数の中で変数を使うこともできる。これらは関数から戻ると消滅するローカル変数と @@ -5427,11 +5400,11 @@ inside a function body. :[range]cal[l] {name}([arguments]) 関数を呼び出す。関数の名前と引数は|:function|によって指定され るものである。引数は最大20まで使用可能。戻り値は破棄される。 - 「領域」を受け付ける関数に「領域」を指定しなかった場合、関数は + 「範囲」を受け付ける関数に「範囲」を指定しなかった場合、関数は カーソルの現在位置について一度だけ呼び出される。 - 「領域」を受け付けない関数に「領域」を指定した場合、その領域の + 「範囲」を受け付けない関数に「範囲」を指定した場合、その範囲の 一行ずつについて関数が呼び出される。その時カーソルは当該行の先 - 頭に設定される。カーソルは「領域」の最下行の左端になる(恐らく + 頭に設定される。カーソルは「範囲」の最下行の左端になる(恐らく 最後の関数呼出しの結果、動いた先である)。引数は各呼出しについ て繰り返し評価される。それは次の例で確かめることができる: *function-range-example* > @@ -5440,36 +5413,35 @@ inside a function body. :endfunction :1,5call Mynumber(getline(".")) < - "a:firstline"と"a:lastline"はとにかく定義されるので、「領域」 + "a:firstline"と"a:lastline"はとにかく定義されるので、「範囲」 の最初や最後で何か違った事をするのにも用いることができる。 - 「領域」自身を扱っている関数の例: - -> :function Cont() range -> : execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ ' -> :endfunction -> :4,8call Cont() + 「範囲」自身を扱っている関数の例: > - この関数は「領域」の最初の行を除いた総ての行の先頭に、継続のた + :function Cont() range + : execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ ' + :endfunction + :4,8call Cont() +< + この関数は「範囲」の最初の行を除いた総ての行の先頭に、継続のた めの文字"\"を挿入する。 - - When the function returns a composite value it can be further - dereferenced, but the range will not be used then. Example: > + この関数の戻り値からさらに間接参照が行われる場合、その参照先に + は範囲が渡されない。例: > :4,8call GetDict().method() -< Here GetDict() gets the range but method() does not. +< GetDict()には範囲が渡されるが、method()には渡されない。 *E132* 関数の再帰的な使用はオプション|'maxfuncdepth'|によって制限することができる。 -AUTOMATICALLY LOADING FUNCTIONS ~ +自動的に読み込まれる関数 ~ *autoload-functions* たくさんの関数または巨大な関数を使うときは、それらが使用されたときだけ自動的に -定義されるようにすることができる。これには2つの方法がある: 自動コマンドによる -方法と、'runtimepath'内の"autoload"ディレクトリによる方法である。 +定義されるようにすることができる。これには2つの方法がある: オートコマンドによ +る方法と、'runtimepath'内の"autoload"ディレクトリによる方法である。 -自動コマンドを使う方法 ~ +オートコマンドを使う方法 ~ これはユーザマニュアルのセクション|41.14|で説明されている。 @@ -5487,12 +5459,12 @@ FuncUndefinedを使う。例: > |FuncUndefined|も参照。 -自動ロードスクリプトの使い方 ~ +オートロードスクリプトの使い方 ~ *autoload* *E746* これはユーザマニュアルのセクション|41.15|で説明されている。 "autoload"ディレクトリのスクリプトを使う方法はより簡単である。しかし完全に正し -いファイル名を使う必要がある。自動ロードされる関数は次のような名前を持つ: > +いファイル名を使う必要がある。オートロードされる関数は次のような名前を持つ: > :call filename#funcname() @@ -5515,30 +5487,30 @@ FuncUndefinedを使う。例: > Vimは'runtimepath'からファイル"autoload/foo/bar.vim"を探す。 -This also works when reading a variable that has not been set yet: > +これはまだ定義されていない変数を参照するときにも使える: > :let l = foo#bar#lvar -However, when the autoload script was already loaded it won't be loaded again -for an unknown variable. +しかしこのオートロードスクリプトがすでに読み込まれている場合、未知の変数があっ +てもこのスクリプトは再読み込みされない。 -When assigning a value to such a variable nothing special happens. This can -be used to pass settings to the autoload script before it's loaded: > +この変数に値を代入するときは、何も特別なことはない。この方法は、オートロードス +クリプトが読み込まれる前に設定を渡すために使うことができる: > :let foo#bar#toggle = 1 :call foo#bar#func() -Note that when you make a mistake and call a function that is supposed to be -defined in an autoload script, but the script doesn't actually define the -function, the script will be sourced every time you try to call the function. -And you will get an error message every time. +オートロードスクリプト内で定義されるはずの関数を呼んだがスクリプト内で関数が定 +義されなかった場合、その関数を呼ぶたびにそのスクリプトがsourceされる。そして毎 +回エラーメッセージが表示される。 -Also note that if you have two script files, and one calls a function in the -other and vise versa, before the used function is defined, it won't work. -Avoid using the autoload functionality at the toplevel. +また、2つのスクリプト間で、互いに自分が定義される前に相手を呼ぶような関数があ +ると、これは動作しない。 +トップレベルでオートロード機能を使うのは避けること。 -Hint: If you distribute a bunch of scripts you can pack them together with the -|vimball| utility. Also read the user manual |distribute-script|. +Hint: たくさんのファイルからなるスクリプトを配布する場合には、|vimball|ユーティ +リティを使うとそれらをまとめることができる。ユーザマニュアルの +|distribute-script|も参照。 ============================================================================== 6. 波括弧変数 *curly-braces-names* @@ -7087,10 +7059,10 @@ try条件文の中のエラー例外の値は次になる: > scanf() の代替 ~ *sscanf* -Vimにはsscanf()に相当する関数が無い。もしも行の一部を取り出す必要があるのなら -ば、matchstr()やsubstitute()を使って行なうことができる。この例は"foobar.txt, -123, 45"のような行から、どうやってファイル名と行番号とカラム番号を取り出すかを -示している。 > +Vimにはsscanf()に相当する関数が無い。行の一部を取り出す必要がある場合には、 +matchstr()やsubstitute()を使えば実現できる。以下の例は、"foobar.txt, 123, 45" +というような行から、ファイル名と行番号とカラム番号を取り出す方法を示している。 +> :" 正規表現を設定 :let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)' :" 正規表現全体にマッチする部分を取り出す @@ -7100,8 +7072,8 @@ Vimにはsscanf()に相当する関数が無い。もしも行の一部を取り :let lnum = substitute(l, mx, '\2', '') :let col = substitute(l, mx, '\3', '') -入力は変数"line"、結果は"file"と"lnum"と"col"に格納される(アイデアはMichael -Geddesによる)。 +入力は変数"line"、結果は"file"と"lnum"と"col"に格納される(このアイデアは +Michael Geddesによる)。 辞書からscriptnamesを取り出す ~ @@ -7141,7 +7113,7 @@ Geddesによる)。 グが可能である。しかし必ず行の先頭に書かれている必要がある。":else"コマンドは 認識されない。 -|+eval|機能が存在しなかった場合、どのようにコマンドが実行を免れるかの例: +|+eval|機能が存在しなかった場合、どのようにコマンドが実行を免れるかの例: > :if 1 : echo "Expression evaluation is compiled in" @@ -7168,8 +7140,8 @@ Geddesによる)。 - ファイルの読み書き - 他のバッファへの移動・ファイルを開く - Python, Perl等のコマンドの実行 -これは100%安全と保証されているものではない。しかしある種の攻撃を防ぐ事ができる -はずである。 +これは100%安全と保証するものではない。しかし、ある種の攻撃を防ぐ事はできるはずで +ある。 *:san* *:sandbox* :san[dbox] {cmd} サンドボックス内で{cmd}を実行する。モードラインから設 @@ -7191,11 +7163,11 @@ Note サンドボックス内でオプションの値を退避し、それから ============================================================================== 12. テキストロック *textlock* -いくつか状況において、バッファを変更する・他のウィンドウへジャンプするなどVim -の現在の処理を混乱させたり破壊してしまうような動作は禁止される。これはvimが実 -際に他の何かをしているときに起こることに対して当てはまる。例えば、 +いくつか状況においては、バッファを変更する・他のウィンドウへジャンプするなど、 +Vimの現在の処理を混乱させたり破壊してしまうような動作は禁止される。これはVimが +実際に他の何かをしているときに起こることに対して当てはまる。例えば、 'balloonexpr'の評価は、マウスカーソルがある位置に留まっているどんなときにでも -起こる。 +起こりうる。 テキストロックが有効になっているときは、以下の事が禁止される: - バッファの変更 diff --git a/memo.txt b/memo.txt index f66175665..afa50644e 100644 --- a/memo.txt +++ b/memo.txt @@ -20,7 +20,7 @@ 進捗表 -ada.jax :7.1: +ada.jax :7.1: [青山] autocmd.jax :7.1: change.jax :7.1: cmdline.jax :7.1: @@ -139,7 +139,7 @@ vi_diff.jax :7.0: windows.jax :7.1: workshop.jax :7.0: -vim_faq_help.jax +vim_faq_help.jax : [青山] evim-ja.UTF-8.1 vim-ja.UTF-8.1 From c3865b73463a802f631c3bb7fe15e18bab162d0b Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira Date: Fri, 29 Jun 2007 15:10:09 +0000 Subject: [PATCH 103/783] fix: update to 7.1 git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@103 a429a4b8-4c93-91f1-de24-85204d8cde48 --- en/usr_27.txt | 8 +- ja/usr_27.jax | 528 ++++++++++++++++++++++----------------------- tools/makehtml.vim | 4 +- 3 files changed, 262 insertions(+), 278 deletions(-) diff --git a/en/usr_27.txt b/en/usr_27.txt index 89eb55479..713dd42fc 100644 --- a/en/usr_27.txt +++ b/en/usr_27.txt @@ -1,4 +1,4 @@ -*usr_27.txt* For Vim version 6.3. Last change: 2003 Oct 28 +*usr_27.txt* For Vim version 7.1. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -304,9 +304,9 @@ Will match "ab" in "abbb". Actually, it will never match more than one b, because there is no reason to match more. It requires something else to force it to match more than the lower limit. The same rules apply to removing "n" and "m". It's even possible to remove -both of the, resulting in "\{-}". This matches the item before it zero or -more times, as few as possible. The item by itself always match zero times. -It is useful when combined with something else. Example: > +both of the numbers, resulting in "\{-}". This matches the item before it +zero or more times, as few as possible. The item by itself always matches +zero times. It is useful when combined with something else. Example: > /a.\{-}b diff --git a/ja/usr_27.jax b/ja/usr_27.jax index fc43bb9e7..e849e5c42 100644 --- a/ja/usr_27.jax +++ b/ja/usr_27.jax @@ -1,422 +1,411 @@ COMMENT: 検索コマンドと正規表現 -STATUS: finished 6.3.054 +STATUS: finished 7.1 TRANSLATOR: 清水俊彦(しみず) TRANSLATOR: nakadaira -*usr_27.txt* For Vim version 6.3. Last change: 2003 Oct 28 +*usr_27.txt* For Vim version 7.1. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar 検索コマンドと正規表現 -3章では、簡単な検索コマンドとパターンの指定方法について|03.9|節で述べまし -た。vimにはそこで述べたよりはるかに複雑な検索ができます。この章ではよく使わ -れる検索パターンについて説明します。詳細な仕様については|pattern|をご覧くだ -さい。 +3 章で検索パターンについて簡単に説明しました |03.9|。Vim ではもっと複雑な検索 +もできます。この章では、よく使われる検索パターンについて説明します。詳細な仕様 +については |pattern| を参照してください。 -|27.1| 大文字/小文字を無視 -|27.2| ファイル終端に達した時のラップ処理 +|27.1| 大文字と小文字を区別しない +|27.2| ファイルの端で折り返す |27.3| オフセット -|27.4| 複数回の一致 -|27.5| 複数条件の並記 +|27.4| 繰り返しマッチ +|27.5| 選択肢 |27.6| 文字範囲 |27.7| 文字クラス -|27.8| 改行記号に一致 +|27.8| 改行記号にマッチ |27.9| 例 - Next chapter: |usr_28.txt| フォールド(折り畳み) - Previous chapter: |usr_26.txt| 繰り返し -Table of contents: |usr_toc.txt| +次章: |usr_28.txt| 折り畳み +前章: |usr_26.txt| 繰り返し +目次: |usr_toc.txt| ============================================================================== -*27.1* 大文字/小文字の無視 +*27.1* 大文字と小文字を区別しない -デフォルトでは、vimの検索は大文字/小文字を区別します。ですから、"include"と -"INCLUDE"と"Include"は3つの違った単語ですので、検索してもどれか一つとしか一 -致しません。 -では'ignorecase'オプションをonにしてみましょう。 > +初期設定では大文字と小文字は区別されます。つまり "include" と "INCLUDE" と +"Include" は三つの別々の単語として扱われ、検索してもどれか一つにしかマッチしま +せん。 +'ignorecase' オプションをオンにしてみましょう: > :set ignorecase -もう一度、"include"で検索すると、"Include"にも"INCLUDE"にも"InClUDe"にもヒッ -トします。('hlsearch'オプションをonにしておくと、パターンに一致した個所がす -ぐに解ります。) -もう一度、これをoffにしてみましょう。 > +"include" を検索すると、"Include" にも "INCLUDE" にも "InClUDe" にもマッチしま +す。('hlsearch' オプションをオンにするとパターンにマッチした箇所を簡単に確認で +きます。) +次のコマンドでオプションをオフにできます: > :set noignorecase -これを設定したままで"INCLUDE"を索してみます。すると"include"の場合と全く同じ -個所に一致します。では'smartcase'オプションをonにしましょう。 > +しかしまだ設定は変更せずに、そのまま "INCLUDE" を検索してみます。"include" を +検索したときとまったく同じテキストがマッチします。次に 'smartcase' オプション +をオンに設定してみます: > :set ignorecase smartcase -この指定だと、パターンに1つでも大文字がある時だけ、大文字/小文字を区別しま -す。これは、大文字/小文字を区別したい時で入力が必要にならない限り、大文字を -入力することはないだろうというアイデアに基づいています。そう、狡猾ですよね! -この2つのオプションを設定しておくと次のようにヒットします。 > +パターンに大文字が含まれているときに限り、大文字と小文字が区別されるようになり +ます。これは、大文字を入力するのは大文字と小文字を区別したいときだけだろうとい +う考えに基づいています。スマートでしょ! +この二つのオプションを設定すると次のようにマッチします: - パターン ヒット ~ + パターン マッチ ~ word word, Word, WORD, WoRd, etc. Word Word WORD WORD WoRd WoRd -パターンでの大文字/小文字 --------------------------- +パターンの中で指定する +---------------------- -ある特定のパターンの時だけ大文字/小文字を無視したい場合は、文字列の前に"\c" -を置けばできます。"\C"は逆にパターンの大文字/小文字を区別します。 -このルールは'ignorecase'と'smartcase'オプションの設定より優先します。"\c"や -"\C"を用いた場合は上のオプション値は無視します。 +ある特定のパターンの中でだけ大文字と小文字の無視したい場合は、パターンに "\c" +をつけます。大文字と小文字を区別したいときは "\C" を使います。"\c" と "\C" の +指定は 'ignorecase' と 'smartcase' の設定よりも優先されます。 - パターン ヒット ~ + パターン マッチ ~ \Cword word \CWord Word \cword word, Word, WORD, WoRd, etc. \cWord word, Word, WORD, WoRd, etc. -"\c"や"\C"を使う大きな利点はパターンに張りついていることにあります。つまり、 -検索の履歴からパターンを再利用する時には、'ignorecase'や'smartcase'を変更し -ているかどうかに関わらず、常に同じ結果となるわけです。 +"\c" と "\C" の大きな利点はそれがパターンに埋め込まれていることです。検索履歴 +からパターンを再利用したときなどに、同じ検索結果を期待できます。'ignorecase' +や 'smartcase' の設定は影響しません。 Note: - 検索パターンでの"\"アイテムの利用は'magic'オプションに依存します。 - 'magic'はonであることが標準的かつ推奨された設定ですので、この章では - onを前提としています。変更している場合は多くの検索パターンで突然うま - く動かなくなるでしょう。 + 検索パターンでの "\" の扱いは 'magic' オプションに依存します。この章で + は 'magic' がオンに設定されていることを前提にしています。それが標準設 + 定であり推奨設定です。'magic' を変更してしまうと今まで使えていた検索パ + ターンが使えなくなってしまうかもしれません。 Note: - 思っているよりも検索に時間がかかる場合はUnixならCTRL-Cで、MS-DOSや - MS-WindowsではCTRL-Breakを押してください。 + 検索がなかなか終わらない場合は CTRL-C (Unix) または CTRL-Break (MS-DOS + と MS-Windows) で処理を中断できます。 ============================================================================== -*27.2* ファイル終端に達した時のラップ処理 +*27.2* ファイルの端で折り返す -デフォルトでは前方検索は現在のカーソル位置から指定の文字列を検索し始めます。 -するとそのうちにファイルの末尾まで到達します。その時に文字列が見つからかった -場合、カーソル位置をファイルの先頭に戻して最初から検索を再開します。 -"n"コマンドを繰り返して次々と文字列を探していると、結局は最初にヒットした場 -所に戻ってくるということを覚えておいてください。これに気が付かないと永遠に検 -索を続けることになります。ちょっとでも気付き易いように、vimはこのようなメッセ -ージを表示します。 +前方検索を実行すると現在のカーソル位置から処理が開始し、指定された文字列が検索 +されます。そしてファイルの末尾まで検索が進みます。ファイルの末尾まで検索しても +文字列が見つからない場合は、ファイルの先頭からカーソル位置に向かって検索が継続 +します。 +"n" コマンドを使って順々に検索を進めている場合もそのうち最初にヒットした場所に +戻ってきます。これに気が付かないと永遠に検索を続けることになってしまいます! +そのようなことがないように、次のようなメッセージが表示されます: - search hit BOTTOM, continuing at TOP ~ + 下まで検索したので上に戻ります ~ -"?"コマンドを使って、逆方向に検索している場合は、このメッセージとなります。 +"?" コマンドを使って逆方向に検索している場合は次のメッセージが表示されます: - search hit TOP, continuing at BOTTOM ~ + 上まで検索したので下に戻ります ~ -それでも最初に戻った時に気付かない場合もあります。これに気付かせる方法の1つ -に'ruler'オプションをonにするというのがあります。 > +それでも気づかないことがあるかもしれません。'ruler' オプションをオンにすると確 +認しやすくなります: > :set ruler -vimはウィンドウの右下隅(ウィンドウが1つの時はステータス行)に現在のカーソル -位置を表示します。このように見えます。 +ウィンドウの右下隅 (ステータスラインがあるときはその中) にカーソルの位置が表示 +されます。次のような表示です: 101,29 84% ~ -最初の数字はカーソルのある行番号です。検索の開始前にこの行番号を覚えておきま -しょう。再びこの場所に戻ってきたら一周したことが確認できます。 +最初の数字はカーソルの行番号です。検索を開始した行番号を覚えておいて、検索が一 +周してないか確認しましょう。 -ラップ停止 ----------- +折り返さない +------------ -検索時にラップしないようにするには、このコマンドを使います。 > +検索を折り返さないようにするには次のコマンドを使います: > :set nowrapscan -この場合、検索の結果ファイルの末尾に達した時は次のエラーメッセージを表示しま -す。 +検索がファイルの末尾に達するとエラーメッセージが表示されます: - E385: search hit BOTTOM without match for: forever ~ + E385: 下まで検索したけれど該当箇所はありません: forever ~ -ですから、"gg"でファイルの先頭に移動してから上のメッセージが出るまで検索をし -続ければ、一致する全個所を探せることになります。 -なお、"?"を使って逆方向に検索する場合は、このエラーメッセージとなります。 +すべての箇所を検索したい場合は "gg" でファイルの先頭に移動してからこのメッセー +ジが表示されるまで検索を繰り返してください。 +"?" を使って逆方向に検索した場合は次のメッセージが表示されます: - E384: search hit TOP without match for: forever ~ + E384: 上まで検索したけれど該当箇所はありません: forever ~ ============================================================================== *27.3* オフセット -デフォルトでは検索コマンドの実行後カーソルを該当のパターンの先頭に動きます。 -オフセットを指定することでそのカーソル位置を他の場所に変更することができま -す。前方検索コマンド"/"であれば、パターンの後に"/"と続けてオフセット値を指定 -します。 > +通常、検索コマンドを実行すると、パターンにヒットした場所の先頭にカーソルが移動 +します。オフセットを指定することで別の場所に移動することができます。前方検索コ +マンドの "/" の場合、パターンの後ろに "/" とオフセット値を指定します: > /default/2 -上の例では"default"というパターンを検索し、見つかったパターンの2つ後ろの行 -の先頭に移動します。このコマンドを今お読みのこの段落で実行すると、最初の行に -"default"がありますから、2行下のオフセット位置(つまりこの行)に移動します。 +"default" というパターンが検索され、見つかった場所から二行下の行頭にカーソルが +移動します。例えばこのコマンドで今読んでいる段落を検索すると、一行目に +"default" が見つかるので、カーソルはその二行した (つまりこの行) に移動すること +になります。 -オフセット値が数値であれば、カーソルを検索結果位置から指定の行の先頭までカー -ソルを動かします。オフセット値には負の数も指定できます。正の数ならカーソルを -その数だけ下に動かし、負の数なら上に動かします。 +オフセットに数値を指定すると、マッチした行から指定した行数だけ移動した行の行頭 +にカーソルが移動します。オフセット値には負の数も指定できます。正の数ならカーソ +ルが下に移動し、負の数なら上に移動します。 文字オフセット -------------- -"e"は一致パターンの末尾を示すオフセット指定です。カーソルを一致したパターン -の最後の文字に移動します。次のコマンドなら、"count"の最後の"t"にカーソルを動 -かします。 > +"e" はマッチした文字列の末尾を示すオフセットです。マッチした文字列の末尾にカー +ソルが移動します。次のように使います: > /const/e -さらに、数値でそこから何文字前に進めるかの指定を加えられます。 -このコマンドならば、一致した単語の直後にカーソルを動かします。 > +"const" の "t" にカーソルが移動します。 +オフセットに数値を足すと、その場所からさらにカーソルを進めることができます。 +次のコマンドではマッチした文字列の後ろにカーソルが移動します: > /const/e+1 -正の数の場合はカーソルが右に動き、負の数の場合は左に動きます。次の例の場合だ -とカーソルは"const"の"s"に移動します。 > +正の数ならカーソルが右に動き、負の数なら左に動きます。例: > /const/e-1 -オフセットが"b"で始まる場合は、カーソルはパターンの先頭に移動します。これは -単体ではあまり使い道がありません。というのは"b"を指定しなくても同じ結果にな -るからです。この指定が役に立つのは後に数値指定を伴う場合です。こうすれば指定 -の数だけカーソルを前後に動かすことができます。例をあげましょう。 > +"const" の "s" にカーソルが移動します。 + +オフセットに "b" を指定すると、マッチした文字列の先頭に移動できます。これはオ +フセット指定無しの動作と同じなので単体では使い道はありません。数値を足したり引 +いたりしたい場合に使います。指定した数だけカーソルを前後に移動できます。例: > /const/b+2 -これはヒットした文字列の先頭から2文字右にカーソルを動かします。つまり"n"の -位置に来るわけです。 +マッチした文字列の先頭から二文字右にカーソルが移動します。つまり "n" の上です。 繰り返し -------- -直前の検索で使ったパターンを繰り返す時にオフセット値を変更したい場合は、パ -ターン指定を省略します。 > +直前に使った検索パターンを、別のオフセットを使って再検索したい場合は、パターン +指定を省略します: > /that //e -これは次の指定と同じ意味です。 > +これは次の指定と同じです: > /that/e -同じオフセットを使って繰り返す時はこうです。 > +同じオフセットを使って再検索したい場合は: > / -"n"でも同じことです。直前のオフセット指定を取り消して、検索を繰り返す時にはこ -うします。 > +"n" と同じ動作になります。オフセット指定を無効にして再検索したい場合は次のよう +にします: > // -後方(逆方向)検索 ----------------- +後方検索 +-------- -"?"コマンドでも同じようにオフセット指定ができます。ただしこの場合はパターン -とオフセット指定の間には"/"ではなく"?"を使います。 > +"?" コマンドでも同じようにオフセットを指定できますが、パターンとオフセットを区 +切るのは "/" ではなく "?" になります: > ?const?e-2 -"b"と"e"の意味は変わりません。つまり"?"を使う場合でも逆の意味になったりしま -せん。 +"b" と "e" の意味は同じです。"?" を使う場合でも方向は逆になりません。 検索開始位置 ------------ -検索を始める時、通常は現在のカーソル位置から始めます。行オフセットを指定する -と問題となる可能性があります。例を示します。 > +検索は通常、現在のカーソル位置から開始します。オフセットを指定するとうまくいか +ないときがあります。例: > /const/-2 -上の指定は"const"という単語を探し、その2行上にカーソルを動かします。次に"n" -で検索を繰り返すと、その時のカーソル位置から検索を行いますので、直前に見つけ -たのと同じ"const"を見つけることになり、さらにそこから2行上にカーソルを動か -すと、結局元と同じ場所に戻ってしまいますので、困ってしまうでしょう。 -もっとマズい場合もあります。例えば、現在行の次に"const"というパターンがある -場合、検索コマンドは次の行にパターンがあるのを見つけ、そこから2行上にカーソ -ルを動かします。ということはカーソルが逆方向に進むことになるのです! +"const" を検索してその二行上に移動します。"n" を使って再検索すると、その場所か +ら検索が開始して同じ場所の "const" がヒットします。そして、再びオフセットが適 +用されて元の場所に戻ってきます。まったく移動できません。 +次の行に "const" があった場合はもっとおかしなことになります。検索を実行すると +次の行がヒットして、その二行上にカーソルが移動するので、カーソルが逆方向に移動 +してしまうのです。 -文字オフセットを指定する時はvimがそうならないように計らいます。つまり検索を -始める時に数文字分前か後ろから始めるようにするので、同じものが2度ヒットする -ことはありません。 +文字オフセットを使った場合はそうなりません。オフセット指定の分だけ検索開始位置 +がずれるので、同じものが再びヒットすることはありません。 ============================================================================== -*27.4* 複数回の一致 +*27.4* 繰り返しマッチ -"*"は、その直前にあるアイテムの任意回の繰り返しの意味となります。 > +ある文字を任意の数だけマッチさせたい場合は "*" を使います: > /a* -上の例なら、"a"や"aa"や"aaa"のどれでも一致します。さらにいうと""(空文字列)に -も一致します。というのは0回というのも「任意回」の一種だからです。 -"*"の機能は直前にある項目に対してのみ有効です。つまり"ab*"にヒットするのは、 -"a" や "ab", "abb", "abbb" などです。文字列全体の繰り返しに一致させるには、 -1つの項目にグループ化しなければなりません。これには文字列の前に"\("を、後に -"\)"を置きます。ですから、こういうコマンドになります。 > +これは "a" でも "aa" でも "aaa" でもマッチします。0 回というのも任意の数に含ま +れるので "" (空文字列) もマッチします。 +"*" は直前の文字に対してだけ適用されます。"ab*" なら "a"、"ab"、"abb"、"abbb" +などがマッチします。単語を繰り返したい場合は、その単語をグループにまとめなけれ +ばなりません。"\(" と "\)" で単語を囲んでください。次のように使います: > /\(ab\)* -上は"ab"や"abab"、"ababab"などに一致します。""にも一致します。 +"ab"、"abab"、"ababab"、"" などにマッチします。 -空文字列に一致するのを避けるには"\+"を使います。これだと直前の項目が1回以上 -繰り返している時にだけ一致します。 > +空文字列にマッチさせたくない場合は "\+" を使います。直前の文字が一つ以上あると +きだけマッチするようになります: > /ab\+ -上は"ab"や"abab"、"ababab"などに一致します。ですが、"b"が続いていない"a"には -ヒットしません。 +"ab"、"abb"、"abbb" などにマッチします。"b" が後ろに付いていない "a" にはマッ +チしません。 -あってもなくても良い場合には"\="を使います。例えば次の例は"folder"にもヒット -し、"folders"にもヒットします。 > +0 または 1 つの文字にマッチさせたい場合は "\=" を使います。例: > /folders\= +"folder" と "folders" がマッチします。 -カウンタの指定 --------------- -ある項目が指定の回数現れた時だけ一致させるには、"\{n,m}"を使います。"n"と"m" -には数値が入ります。これの直前に書いてある項目が"n"~"m"回続いた場合にヒット -します|inclusive|。例えば、この例では"abbb"や"abbbb"、"abbbbb"にヒットします。 > +回数指定 +-------- + +特定の数だけ文字をマッチさせるには "\{n,m}" を使います。"n" と "m" に数字を指 +定します。直前の文字が "n" から "m" の数だけ連続している場合にマッチします。 +例: > /ab\{3,5} -"n"を省略した場合は、"n"はデフォルトの0となります。"m"が省略された場合は、 -デフォルトの「無限」になります。",m"を省略すると丁度"n"回の時だけヒットしま -す。 +"abbb"、"abbbb"、"abbbbb" にマッチします。 +"n" を省略した場合は 0 が使われます。"m" が省略された場合は繰り返し回数は無制 +限になります。",m" を省略した場合は、正確に "n" 回の繰り返しにマッチします。 +例: pattern match count ~ \{,4} 0, 1, 2, 3 or 4 \{3,} 3, 4, 5, etc. - \{0,1} 0 or 1, same as \= - \{0,} 0 or more, same as * - \{1,} 1 or more, same as \+ + \{0,1} 0 or 1 (\= と同じ) + \{0,} 0 以上 (* と同じ) + \{1,} 1 以上 (\+ と同じ) \{3} 3 -最小一致原則 ------------- +最短一致 +-------- -ある項目がとてもたくさんの文字にヒットするような場合があります。一致を可能な -限り小さくするには"\{-n,m}"を使います。これは"\{n,m}"と同じ意味ですが、最小 -値(minimal amount possible)を使っている点が違います。これはこのように使いま -す。 > +今まで説明した繰り返し指定は、可能な限りたくさんの文字列にマッチしようとしま +す。できるだけ少ない回数だけマッチさせるには "\{-n,m}" を使います。動作は +"\{n,m}" とほとんど同じですが、最短一致が使われます。 +例: > /ab\{-1,3} -上は"abbb"のうちの"ab"だけにヒットします。この場合、1つ以上の"b"には絶対に -一致しません。というのはそれ以上一致させる理由がないからです。最小値よりも -多い文字に強制的にヒットさせるには何か他の方法が必要です。 -"n"や"m"がない場合も同じルールが適用されます。両方の数字を取り除いて、"\{-}" -とすることも可能です。これはその直前の項目が0回かそれ以上繰り返されていて、 -可能な限り少ないパターンにヒットします。項目自身は常に0回にヒットします。 -これは他の何かと組み合せる場合に便利です。例えば、 > +"abbbb" の中の "ab" だけがマッチします。一つの "b" にマッチするだけで条件を満 +たすので、二つ目以降の "b" には絶対にマッチしません。後ろに他のパターンが続い +ているなら最小回数以上の文字にもマッチします。 +"n" と "m" を省略した場合も同じルールが適用されます。両方の数字を省略して +"\{-}" とすることもできます。これは直前の文字が 0 回以上繰り返されている場合に +最小の数だけマッチします。単体で使った場合は常に 0 回にマッチします。他のパター +ンと組み合わせて使うと便利です。例: > /a.\{-}b -これは"axbxb"の中の"axb"にヒットします。次のパターンも考えてみましょう。 > +"axbxb" の中の "axb" にマッチします。次のパターンを使った場合は: > /a.*b -これですと可能な限り多くの文字にヒットさせようとしますから、"axbxb"の全部が -ヒットしてしまいます。 +".*" は可能な限り多くの文字にマッチするので "axbxb" 全体がマッチします。 ============================================================================== -*27.5* 選択肢 +*27.5* 選択肢 -パターンの中での"\|"は「又は」の意味です。例をあげましょう。 > +パターンの中で "or" (または) を指定するには "\|" を使います。例: > /foo\|bar -これは"foo"か"bar"のどちらかにヒットします。さらに別条件を続けることもできま -す。 > +"foo" と "bar" のどちらかがマッチします。複数の選択肢を指定できます: > /one\|two\|three -これは"one"か"two"か"three"にヒットします。 -複数回にヒットさせるにはその全体を"\("と"\)"で囲みます。 > +"one"、"two"、"three" のどれかにマッチします。 +複数回マッチさせるには、全体を "\(" と "\)" で囲みます: > /\(foo\|bar\)\+ -上のパターンは"foo"や"foobar"、"foofoo"、"barfoobar"といったパターンにヒット -します。もう一つの例です。 > +"foo"、"foobar"、"foofoo"、"barfoobar" などにマッチします。 +もう一つの例: > /end\(if\|while\|for\) -これは"endif"や"endwhile"、"endfor"といったパターンにヒットします。 +"endif"、"endwhile"、"endfor" にマッチします。 -これと同じような項目に"\&"があります。これは両方の条件が同じ文字列について両 -立しなければヒットしません。最終的なヒット範囲は最後の条件に会うものを使いま -す。 > +"\&" も似たような条件指定です。指定された選択肢がすべて同じ場所でマッチします。 +マッチ結果としては最後の選択肢が使われます。例: > /forever\&... -これは"forever"のうちの"for"にヒットしますが、例えば "fortuin"にはヒットしま -せん。 +"forever" の "for" にマッチします。"fortuin" にはマッチしません。 ============================================================================== *27.6* 文字範囲 -"a"、"b"、"c"のどれかにヒットさせるには"/a\|b\|c"と書くことができます。です -がこれだと"a"~"z"のどれかにヒットさせたい時に書くの大変です。で、もっと簡単 -な方法があります。 > +"a"、"b"、"c" のどれかにマッチさせるには "/a\|b\|c" が使えます。しかし "a" か +ら "z" までの文字をマッチさせようとするとパターンが長くなってしまいます。簡単 +な方法があります: > /[a-z] -[ ]はどれか1文字にヒットさせる時に使います。[ と ] の中にヒットさせたい文字 -を列記します。文字リストを含めることもできます。例をあげましょう。 > +[] は一つの文字にマッチします。マッチさせたい文字を [] の中に指定します。次の +ようにして文字を一つずつ指定することもできます: > /[0123456789abcdef] -上はこの中に入っている文字のどの文字にでもヒットします。マイナス記号を使うと -連続した文字範囲も指定できます。"0-3"は"0123"の意味ですし、"w-z"なら"wxyz"の -意味です。つまり次の指定は上に書いた例と同じ意味の短縮形なのです。 > +指定された文字の中から一つがマッチします。文字が連続している場合は文字範囲を指 +定できます。例えば "0-3" は "0123" という意味です。"w-z" は "wxyz" という意味 +になります。上記の例は次のように短くできます: > /[0-9a-f] -"-"の文字そのものをパターンに含めたい場合は[ ]の中の最初か最後に書きます。 -次のような特殊な文字については[]の中で簡単に使えるようにしてあります。(実際 -には検索パターンのどこででも使えます) +文字 "-" 自体をマッチさせたい場合は [] の中の一番最初か最後に書いてください。 +[] の中では以下の特殊文字が使えます (これらは [] の中でなくても使えます): \e \t \r \b -この他にも[]中で使える特殊文字がいくつかあります。その全ての説明は|/[]|をご -覧ください。 +[] の中では他にも特殊な指定方法が使えます。詳細は |/[]| を参照してください。 -補集合の範囲 +文字範囲の補集合 +---------------- -指定の文字以外にヒットさせるには、"^"を範囲の最初に指定します。これを指定す -ると[]の中に指定されている文字以外の全てにヒットします。例をあげましょう。 > +マッチして欲しくない文字を指定したい場合は、文字範囲の先頭に "^" を指定します。 +すると、指定した文字以外の文字がマッチするようになります。例: > /"[^"]*" < - " ダブルクオートの文字 - [^"] ダブルクオート以外の文字なら何でもOK - * 上が続く数だけ - " ダブルクオートの文字 + " ダブルクオート + [^"] ダブルクオート以外の文字が + * 可能な限りたくさん + " ダブルクオート -上のパターンには"foo"とか"3!x"といった文字列が(ダブルクオートを含む)ヒットし -ます。 +"foo" や "3!x" がマッチします (ダブルクオートもマッチに含まれる)。 -PREDEFINED RANGES -定義済みの範囲 +定義済み文字範囲 +---------------- -ある種の範囲は特によく使います。vimではあらかじめ定義済の範囲を用意していま -す。例えば、これは任意のアルファベットの意味になります。 > +一般的な文字範囲はあらかじめ定義されています。 +例: > /\a -これは"/[a-zA-Z]"という指定と同じ意味になります。他にもいくつか定義済のもの -があります。 +アルファベット文字が検索されます。これは "/[a-zA-Z]" と同じです。他にも次のよ +うなものがあります: item matches equivalent ~ \d 数字 [0-9] @@ -431,44 +420,40 @@ PREDEFINED RANGES \U 大文字アルファベット以外 [^A-Z] Note: - 定義済の範囲を使う方が同じ意味の範囲を記述するよりずっと早いです。 - 上の項目を使う時は[]の中には入れません。"[\d\l]"と書いても、それは数 - 字か小文字という意味にはなりません。この場合なら"(\(\d\l\)"と書いて - ください。 + 定義済み文字範囲は普通の文字範囲よりも処理が高速です。 + これらのアイテムは [] の中では指定できません。つまり "[\d\l]" と書いた + としても数字と小文字にはマッチしません。"\(\d\|\l\)" を使ってください。 -定義済の範囲の全リストは|/\s|をご覧ください。 +定義済み文字範囲の一覧は |/\s| を参照してください。 ============================================================================== *27.7* 文字クラス -文字範囲はある特定の文字の組み合せにヒットします。文字クラスも似ていますが、 -根本的な違いがあります。文字クラスでは検索パターンを変更せずに文字の組み合せ -を再定義できるのです。 -例えば、次のパターンで検索をするとします。 > +文字範囲は特定の文字のセットにマッチします。文字クラスも似たようなものですが、 +検索パターンを変更せずに文字のセットを変更できるという違いがあります。 +例えば、次のパターンを検索します: > /\f\+ -"\f"というのはファイル名に使われる文字という意味です。ですから、これはファイ -ル名に使える文字集合にヒットします。 -ファイル名にどんな文字が使えるかは、お使いのシステムに依存します。MS-Windows -ならバックスラッシュを含みますが、Unixでは含みません。これは'isfname'オプショ -ンで指定します。Unixでのデフォルト値はこうです。 > +"\f" はファイル名に使える文字を表します。つまりこのパターンはファイル名として +使える文字列にマッチします。 +どの文字がファイル名として使えるかはシステムによって異なります。MS-Windows で +は "\" が使えますが Unix では使えません。これは 'isfname' オプションで指定され +ています。Unix の初期設定: > :set isfname isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,= -他のシステムではデフォルト値が変わります。ですから"\f"を使えば、使っているシ -ステムで使えるファイル名にヒットするような検索パターンを作ることができるわけ -です。 +他のシステムでは初期設定が変わります。ファイル名にマッチさせたいときに "\f" を +使えば、そのパターンはいろいろなシステムで使えます。 Note: - 実際にはUnixではファイル名には空白文字を含むどんな文字でも使えます。 - ですから、'isfname'にこういった文字を含むことは理屈の上では正しいこ - とです。しかしそれだと文章の中からファイル名の終わりを見つけることが - できなくなります。なので'isfname'では妥協したデフォルト値となってい - るのです。 + Unix では空白などのどんな文字でもファイル名に使えます。'isfname' にそ + れらの文字を設定するのは理論的には正しいことです。しかしその場合、テキ + ストの中からファイル名を切り出すのが困難になってしまいます。したがっ + て、'isfname' の初期設定にはすべての文字は含まれていません。 -文字クラスには次のようなものがあります。 +次のような文字クラスがあります: item matches option ~ \i 識別子に使える文字 'isident' @@ -481,100 +466,99 @@ PREDEFINED RANGES \F \fから数字を抜いたもの ============================================================================== -*27.8* 行末との一致 +*27.8* 改行記号にマッチ -vimでは改行を含んだパターンを検索することができます。今までに述べたパターン -ではどれも改行に一致しないので、自分でどこに改行が来るかを指定する必要があり -ます。 -改行のある場所を指定するには、"\n"を使います。 > +改行を含んだパターンを検索することができます。改行の位置は明示的に指定する必要 +があります。今までに説明したパターンアイテムはどれも改行にマッチしません。 +改行の場所を指定するには "\n" を使います: > /the\nword -これは行末が"the"で終わって、次の行の先頭が"word"となっている行にヒットしま -す。"the word"の場合もヒットするためには、改行か空白かのどちらでもヒットする -ような指定が必要です。これを行うには"\_s"を使います。 > +行末が "the" で終わり、次の行の行頭が "word" になっている行がマッチします。 +"the word" にもマッチさせたい場合は、スペースと改行の両方をマッチさせる必要が +あります。それには "\_s" を使います: > /the\_sword -空白がいくつも続く場合も含むならこうします。 > +間に空白をいくつでも挟めるようにするには: > /the\_s\+word -この場合は行末が"the "で終わって、次の行の先頭が" word"であってもヒットし -ます。 +これは、行末が "the " で終わり、次の行の行頭が " word" で始まっているよう +な場所にもマッチします。 -"\s"は空白文字の意味で、"\_s"は空白か改行の意味です。 -同じように"\a"はアルファベット文字で、"\_a"はアルファベット文字か改行にヒッ -トします。これ以外の文字クラスや定義済範囲の場合も"_"を間に挟むことで改行文 -字を含む意味となります。 +"\s" は空白にマッチします。"\_s" は空白と改行にマッチします。 +同様に、"\a" はアルファベットにマッチし、"\_a" はアルファベットと改行にマッチ +します。他の文字クラスや文字範囲も同様に、"_" を付けることによって改行にもマッ +チするようになります。 -他にも多くのアイテムの最初に"\_"を付けると改行文字にヒットさせることができま -す。例えば、"\_."というのは改行を含む任意の文字にヒットします。 +他の多くのパターンアイテムも "\_" を付けることによって改行にマッチさせることが +できます。例えば、"\_." は改行を含めたすべての文字にマッチします。 Note: - "\_.*"というパターンはファイルの末尾までの全てにヒットします。このよ - うなパターンを使うと検索コマンドがとても遅くなりますので注意してくだ - さい。 + "\_.*" はファイル末尾までのすべての文字がマッチします。検索コマンドの + 動作が遅くなるかもしれないので注意してください。 -他にも"\_[]"というパターンを使えば改行を含んだ文字範囲の指定ができるようにな -ります。 > +"\_[]" を使うと文字範囲にも改行を追加できます: > /"\_[^"]*" -これはダブルクオートで囲まれた複数の行にまたがるパターンを探すことができます。 +ダブルクオートで囲まれたテキストが検索されます。間には改行も含むことができま +す。 ============================================================================== -*27.9* 例題 +*27.9* 例 -ここでは便利そうな検索パターンをいくつか示します。今までに説明した項目をどの -ように組み合せられるかを示しています。 +便利そうな検索パターンをいくつか説明します。今までに説明したパターンをどのよう +に使えばいいかを示します。 カリフォルニア州のナンバープレートを探す ---------------------------------------- -例で使うナンバープレートは"1MGU103"だとします。これは先頭が数字、次の3桁が -アルファベット、さらに3桁の数字となっています。機械的にパターンに置き換える -とこうなります。 > +"1MGU103" という番号を検索してみます。これは一つの数字、三つの大文字アルファ +ベット、三つの数字、から成っています。そのままパターンに置き換えてみます: > /\d\u\u\u\d\d\d -3桁の数字と文字と考えると次のような方法も使えます。 > +同じものが並んでいる部分は回数指定に置き換えることができます: > /\d\u\{3}\d\{3} -また、[]指定を使うとこうなります。 > +[] 指定を使うこともできます: > /[0-9][A-Z]\{3}[0-9]\{3} -さて、あなたならどれを使いますか?どれでも覚えやすいのを使ってください。一番 -覚えやすい方法を使う方がそうでないのを頑張って覚えるよりずっと早いですから。 -もし全部覚えられるのなら、最後の1つは使わないようにしましょう。最後のは入力 -する文字も多いし、実行も遅いからです。 +あなたならどれを使いますか? どれでも覚えやすいものを使ってください。簡単に覚え +られる方法を使う方がそうでないものを頑張って覚えるよりずっと効率がよくなりま +す。最後の例は他より長くて実行速度も遅いので、どれでも覚えられるという場合は選 +択肢から外してください。 識別子を見つける +---------------- -C(や多くの他言語の)プログラムでは、識別子は英文字で始まってその後に英数字が -続きます。アンダースコア(_)も使えることでしょう。こういったパターンは次のよ -うに指定できます。 > +C 言語 (などのほとんどの言語) では、識別子は英文字で始まってその後に英数字が続 +きます。アンダースコアも使えるかもしれません。次のパターンでそのような文字を検 +索できます: > /\<\h\w*\> -"\<"と"\>"は単語全体が一致しているものを探すのに使います。"\h"は"[A-Za-z_]" -の意味で"\w"は"[0-9A-Za-z_]".の意味です。 +"\<" と "\>" は単語全体をマッチさせるための指定です。"\h" は "[A-Za-z_]" と同 +じ意味で、"\w" は "[0-9A-Za-z_]" と同じ意味になります。 Note: - "\<"と"\>" は'iskeyword'オプションによります。例えば、"-"を含んでい - れば、"ident-"はヒットしません。この場合は次のようにします。 > + "\<" と "\>" の動作は 'iskeyword' オプションに依存します。例えば "-" + が含まれている場合、上記パターンは "ident-" にマッチしません。次のパ + ターンを使ってください: > /\w\@ %s", i+1, len(files), files[i], s:HtmlName(files[i]))) endfor @@ -40,8 +40,8 @@ function! MakeHtmlAll() endfunction function! MakeHtmlAllBatch() - let files = split(glob('*.??[tx]'), '\n') call MakeTagsFile() + let files = split(glob('*.??[tx]'), '\n') for i in range(len(files)) call MakeHtml(files[i]) endfor From 856b2492710b80f362964742c0ccd7e0ed5ee674 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira Date: Fri, 29 Jun 2007 15:54:01 +0000 Subject: [PATCH 104/783] remove: guide.txt memo.txt git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@104 a429a4b8-4c93-91f1-de24-85204d8cde48 --- guide.txt | 214 ------------------------------------------------------ memo.txt | 169 ------------------------------------------ 2 files changed, 383 deletions(-) delete mode 100644 guide.txt delete mode 100644 memo.txt diff --git a/guide.txt b/guide.txt deleted file mode 100644 index 3414c944b..000000000 --- a/guide.txt +++ /dev/null @@ -1,214 +0,0 @@ - - - Vim ドキュメント翻訳者の手引き - - -- 半角と全角 - ASCII文字は半角文字を使う - カタカナは全角文字を使う - -- 数字 - 漢数字(一、二)ではなく、算用数字(1, 2)を使う - ただし、一時的、統一、など、日本語の一部は漢数字 - -- 文中に英数字がある場合には前後に空白を入れる。 - 例: 文の中に 1 つの English が混ざる。But 句読点の前後は空白なし。 - 他の翻訳プロジェクトでも空白を入れているところ多し - ただ、空白を入れないほうが書きやすいし読みやすいと感じる - -- 行末の「 >」及び行頭の「<」 - これらはサンプルを示すsyntax hightlightをかけるためのキーワードになっている - 。helpIgnoreグループになっているので、見落とさないように色を変えておいた方が - よい。 - :hi Ignore ctermfg=red - :syn match Error /\%>79v.*/ - -- 1行は78カラム以内 - kaoriya版に付属のformat.vimを入れてgqを使うとそのように整形できる。 - -- 口調 - 「だ、である」調にする - 個人的には「です、ます」調が好み - リファレンスマニュアルとユーザーマニュアルで使い分けるのもあり? - -- 句読点は「、」と「。」を使用する - -- 訳注 - 注釈には、原文を捕捉するものと、翻訳者の作業用メモ、の 2 種類がある - 行単位で書くと小細工できて都合がいい -訳注: 原文が分かり難いようだったら -訳注: このように注釈を入れ捕捉する -訳注メモ: こんな感じでリリースに含めないようなメモを書く -訳注メモ: 作業ログ、疑問、注意点など、他の翻訳者が後で参照できるようにする -訳注メモ: リリースに含めないと利用者からのフィードバックを得られないか? -訳注メモ: 消さないほうが利用者にとって分かりやすいか? -訳注メモ: 名前も入れておくと分かりやすい? - -- ファイル形式 - 文字コードは UTF-8 - 改行文字は UNIX 形式(\n) - :set fileencoding=utf-8 fileformat=unix - -- _not_ や ALL などの強調表現 - 全角のバッククォート (‘) で始まり、シングルクォート (’) で終わりを括る。 - 日本語的な表現ではないのでなにもしなくていいのではないか? - というか非日常的な記号は使いたくない - -- 命令形で書かれている文 - リファレンスマニュアルなので、命令しているというよりは操作の手順を簡潔に述 - べているだけであって、特に命令形だからという意識はしなくて良い。 - -- backtick(`) - バッククォート - -- backslash(\) - バックスラッシュ - マニュアルのどこかで円記号との関連についての注意書きをした上で、あとはバッ - クスラッシュに統一する。 - -- カッコの名前 - square brackets([]) - brace({}) - parenthesis(()) - () 丸カッコ - [] 角カッコ - {} 波カッコ - <> 折カッコ - 漢字と記号がわかれば、どれがどれだかハッキリわかる - -- dot(.) - ドット - -- Introduction - はじめに - -- {not in Vi} - {Vi にはない} - -- {not available when compiled without the |+cindent| feature} - {} - -- external command - |:!|で使用するような、"ls"や"cat"などいわゆる普通のプログラム - Vimのコマンドと特に区別して - 「外部プログラム」 - -- syntax highlighting - 構文強調表示 - シンタックスハイライティング - シンタックス強調表示 - 構文ハイライト - -- Vim の表記 - 一般名称として、ソフトウェア、エディタとしてのVimを指す時には「Vim」と書く。 - シェルなどで入力されるコマンドとしては「vim」もしくは「gvim」と書く。 - -- ファイル、オプションその他の表記 - 'compatible' option ... == オプション'compatible' - .vimrc file == ファイル.vimrc - というように型というかクラスというか、そういうものを書くときはその名前の前 - に前置するよう統一する。ただし現状では徹底してない。 - the spec file buffers - specがファイルの名前ではなく一般的なファイルのクラスを定義するようなものの - 場合はこの限りではない。 - 表記や文脈から'compatible'や.vimrcでもわかる?省略したほうがすっきりする - -- Selection (X11の) - セレクション - -- default - 標準設定、標準の、初期設定、デフォルト - なるべくデフォルトはさけたい - -- map → マップ -- abbreviation → 短縮入力 -- user defined command, user command → ユーザーコマンド - -意見 - -どのような利用者を想定するか。それによって表現が変わる。 - -{not in Vi} -のような表記には翻訳マニュアル独自のシンタックスファイルで対応してはどうか - -Ex コマンドやオプションに使われるような単語はそのままカタカナにしたほうが -分かりやすいのではないか? -ただしカタカナばかりでは読みにくい分かりにくい - -モードの名前は漢字かカタカナか統一したほうがいいと思う -思い切って Normal モードとか Insert モードとかでもいい気がする - -コマンドラインはVimのコマンドラインとシェルのコマンドラインで紛らわしい -まぁ分かるか - -専門用語は無理せずそのままカタカナにする -必要なら別のファイルに説明を書いておく? - - -参考資料 - -辞書.辞典.翻訳.語学検索:翻訳のためのインターネットリソース - http://www.kotoba.ne.jp/ - -IBM 情報処理用語英和対訳集 - http://www-6.ibm.com/jp/manuals/nlsdic/nlsdic.html - -Excite エキサイト 翻訳 (機械翻訳) - http://www.excite.co.jp/world/english/ - -Linux JF (Japanese FAQ) Project - http://www.linux.or.jp/JF/ -JF 文章文体ガイド - http://www.linux.or.jp/JF/JFdocs/jf-styleguide.html -JF で翻訳できるぞ mini HOWTO - http://www.linux.or.jp/JF/JFdocs/JFhonyaku.html - -JM Project - http://www.linux.or.jp/JM/ -JM 翻訳作業の手引き - http://www.linux.or.jp/JM/guidance/index.html -翻訳の指針 - http://www.linux.or.jp/JM/guidance/translation_note.html - -Japanese Manual Project for FreeBSD - http://www.jp.freebsd.org/man-jp/ -JPMANマニュアル校正ガイドライン - http://www.jp.freebsd.org/man-jp/docs/guideline.html -共通な訳語の対訳表 - http://www.jp.freebsd.org/man-jp/docs/wordlist.txt - -The FreeBSD Japanese Documentation Project - http://www.jp.freebsd.org/doc-jp/index.html -対訳表 - http://www.jp.freebsd.org/doc-jp/tt.html - -WIDE IPv6 WG による訳語集 - http://www.v6.wide.ad.jp/Documents/glossary.txt - -FreeBSD Security Advisory 翻訳メモ - http://home.jp.freebsd.org/%7Ehrs/doc-jp/freebsd-sa.txt - -X Japanese Documentation Project - http://xjman.dsl.gr.jp/ -翻訳の手引 - http://xjman.dsl.gr.jp/translation.html -訳語リスト - http://xjman.dsl.gr.jp/dist/word.txt -Xlib - C Language X Interface - http://xjman.dsl.gr.jp/X11R6/X11/index.html -用語集 - http://xjman.dsl.gr.jp/X11R6/X11/glossary.html - -Mozilla Japan 翻訳部門 - http://www.mozilla-japan.org/jp/td/ -参考資料 - http://www.mozilla-japan.org/jp/td/links.html - -Pythonドキュメント翻訳プロジェクト - http://www.python.jp/Zope/pythondoc_jp/index_html - -翻訳通信 - http://homepage3.nifty.com/hon-yaku/tsushin/ -仁平和夫(にひら かずお)『翻訳のコツ』 - http://homepage3.nifty.com/hon-yaku/tsushin/bn/200209SAp2.pdf - diff --git a/memo.txt b/memo.txt deleted file mode 100644 index afa50644e..000000000 --- a/memo.txt +++ /dev/null @@ -1,169 +0,0 @@ - -連絡ノート - - -とりあえずの目標を設定してみます。 -1. 全体的な査読。品質を改善または確認する。 -2. ファイルのバージョンを統一してリリース (目標 2007 年内) -3. メンテナンスモード突入。 - - -品質管理 - -一読しただけで意味が理解できるような文章を目指したいと思います。 - -改めて査読する必要はないので、自分で更新したことのあるファイルで、バー -ジョンアップの差分をマージしただけでなく全体を査読/修正した、というやつ -にマークをつけてください。見える形にしておくと作業が楽になると思うので、 -ご協力をお願いします。 - - -進捗表 - -ada.jax :7.1: [青山] -autocmd.jax :7.1: -change.jax :7.1: -cmdline.jax :7.1: -debug.jax :7.1: [中平] -debugger.jax :7.1: -develop.jax :7.1: -diff.jax :7.1: -digraph.jax :7.1: -editing.jax :7.1: -eval.jax :7.1: -farsi.jax :7.0: [中平] -filetype.jax :7.1: -fold.jax :7.1: -getscript.jax :7.0: -gui.jax :7.1: -gui_w16.jax :7.1: -gui_w32.jax :7.1: -gui_x11.jax :7.1: -hangulin.jax :7.0: -help.jax :7.1: -howto.jax :7.0: -if_cscop.jax :7.0: -if_ole.jax :7.0: -if_perl.jax :7.0: -if_pyth.jax :7.0: -if_ruby.jax :7.0: -if_sniff.jax :7.0: -if_tcl.jax :7.0: -indent.jax :7.1: -index.jax :7.0: -insert.jax :6.3: -intro.jax :7.0: -map.jax :7.0: [中平] -mbyte.jax :7.1: -message.jax :7.1: -mlang.jax :7.0: -motion.jax :7.1: -options.jax :7.1: -os_390.jax :7.0: -os_amiga.jax :7.0: -os_beos.jax :7.0: -os_dos.jax :7.0: -os_mac.jax :6.3: -os_mint.jax :7.0: -os_msdos.jax :7.0: -os_os2.jax :7.0: -os_qnx.jax :7.0: -os_risc.jax :7.0: -os_unix.jax :7.0: -os_vms.jax :7.0: -os_win32.jax :7.0: -pattern.jax :7.0: [中平] -pi_expl.jax :6.3: -pi_gzip.jax :7.0: -pi_netrw.jax :6.3: -pi_paren.jax :7.0: -pi_spec.jax :7.0: -pi_tar.jax :7.0: [中平] -pi_vimball.jax :7.0: -pi_zip.jax :7.0: [中平] -print.jax :7.0: [中平] -quickfix.jax :7.1: -quickref.jax :7.1: -quotes.jax :7.0: -recover.jax :7.0: -remote.jax :7.0: -repeat.jax :7.0: -rileft.jax :7.0: -scroll.jax :7.0: -sign.jax :7.0: -sponsor.jax :7.0: -starting.jax :7.0: -syntax.jax :7.1: -tabpage.jax :7.1: [中平] -tagsrch.jax :7.0: -tips.jax :7.0: -uganda.jax :7.0: -undo.jax :6.3: -usr_01.jax :7.0: [中平] -usr_02.jax :7.1: [中平] -usr_03.jax :7.0: [中平] -usr_04.jax :7.0: [中平] -usr_05.jax :7.0: [中平] -usr_06.jax :7.0: [中平] -usr_07.jax :7.0: [中平] -usr_08.jax :7.0: [中平] -usr_09.jax :7.0: [中平] -usr_10.jax :7.0: [中平] -usr_11.jax :7.0: [中平] -usr_12.jax :7.0: [中平] -usr_20.jax :7.0: [中平] -usr_21.jax :7.0: [中平] -usr_22.jax :7.0: [中平] -usr_23.jax :7.0: [中平] -usr_24.jax :7.1: [中平] -usr_25.jax :7.1: [中平] -usr_26.jax :7.1: [中平] -usr_27.jax :6.3: -usr_28.jax :6.3: -usr_29.jax :6.3: -usr_30.jax :7.1: -usr_31.jax :7.1: -usr_32.jax :7.0: -usr_40.jax :6.3: -usr_41.jax :7.1: -usr_42.jax :6.3: -usr_43.jax :6.3: -usr_44.jax :7.1: -usr_45.jax :6.3: -usr_90.jax :6.3: -usr_toc.jax :7.1: -various.jax :7.1: [中平] -version4.jax :6.3: -visual.jax :7.0: -vi_diff.jax :7.0: -windows.jax :7.1: -workshop.jax :7.0: - -vim_faq_help.jax : [青山] - -evim-ja.UTF-8.1 -vim-ja.UTF-8.1 -vimdiff-ja.UTF-8.1 -vimtutor-ja.UTF-8.1 -xxd-ja.UTF-8.1 - - -作業メモ - -usr_25.txt: -494 You want to add a column, which should be a copy of the third column and -495 placed before the "test 1" column. Do this in seven steps: -- You want to add a column, which should be a copy of the third column and -+ You want to add a column, which should be a copy of the fourth column and - - - - -自分の考えを書いてみました。なんかあったら適当に書いてください。ほとんど -のファイルは最新バージョンになってるみたいなので残りの作業は査読がメイン -です。個人的には、ザックリ読んでみて引っかかったところを片っ端から修正す -る方針でやってます (なので無駄な書き換えが多いかもしれませんが)。私が訳 -したものについてはガンガン修正してもらって構いません。というか気づいたら -お願いします。 --- 中平 2007-06-24 - From 26bf371d0864d0db8bfafe5bd8dde8d5c6a6272b Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro Date: Fri, 29 Jun 2007 16:34:41 +0000 Subject: [PATCH 105/783] fix: translated *internal-variables* in eval.jax git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@105 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/eval.jax | 518 +++++++++++++++++++++++++--------------------------- 1 file changed, 253 insertions(+), 265 deletions(-) diff --git a/ja/eval.jax b/ja/eval.jax index 3f0a13b78..077f08f3e 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -102,40 +102,37 @@ equivalent though. Consider this sequence of commands: > :let l = [1, 2, 3] " error! -1.2 Function references ~ +1.2 関数への参照 ~ *Funcref* *E695* *E718* -A Funcref variable is obtained with the |function()| function. It can be used -in an expression in the place of a function name, before the parenthesis -around the arguments, to invoke the function it refers to. Example: > +関数|function()|は関数への参照を返す。関数への参照は、式の中で関数名が要求され +る場所で使うと参照先の関数を呼び出す。例: > :let Fn = function("MyFunc") :echo Fn() < *E704* *E705* *E707* -A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:". You -cannot have both a Funcref variable and a function with the same name. +関数参照の変数名は、大文字、"s:"、"w:"、"t:"、"b:"のいずれかで始めなければなら +ない。関数参照と参照先の関数の名前を同じにすることはできない。 -A special case is defining a function and directly assigning its Funcref to a -Dictionary entry. Example: > +関数を定義して、それへの参照を直接辞書に入れるための特別な形式がある。例: > :function dict.init() dict : let self.val = 0 :endfunction -The key of the Dictionary can start with a lower case letter. The actual -function name is not used here. Also see |numbered-function|. +この辞書のキーは小文字で始めなければならない。実際の関数名はここでは使われない。 +|numbered-function|も参照。 -A Funcref can also be used with the |:call| command: > +|:call|コマンドでも関数参照を使うことができる: > :call Fn() :call dict.init() -The name of the referenced function can be obtained with |string()|. > +参照先の関数名は|string()|で得られる。 > :let func = string(Fn) -You can use |call()| to invoke a Funcref and use a list variable for the -arguments: > +関数参照を呼び出すには|call()|を使い、引数にはリスト型の変数を使う: > :let r = call(Fn, mylist) -1.3 Lists ~ +1.3 リスト ~ *List* *Lists* *E686* A List is an ordered sequence of items. An item can be of any type. Items can be accessed by their index number. Items can be added and removed at any @@ -1039,8 +1036,8 @@ function(expr1, ...) 関数呼出 |function-argument| a: 関数の引数(関数内のみ) |vim-variable| v: グローバル、Vimがあらかじめ定義 -The scope name by itself can be used as a |Dictionary|. For example, to -delete all script-local variables: > +これらのスコープそのものに辞書を通じてアクセスできる。例えば、全てのスクリプト +ローカル変数を削除するには次のようにする: > :for k in keys(s:) : unlet s:[k] :endfor @@ -1063,13 +1060,13 @@ b:changedtick 現在のバッファに対する総変更の回数。変更を行 :endif < *window-variable* *w:var* -"w:"で始まる変数名は、カレントウィンドウに局所的な変数を意味する。これはウィン -ドウを閉じるときに破棄される。 +"w:"で始まる変数名は、カレントウィンドウにローカルな変数を意味する。これはウィ +ンドウを閉じるときに破棄される。 *tabpage-variable* *t:var* -A variable name that is preceded with "t:" is local to the current tab page, -It is deleted when the tab page is closed. {not available when compiled -without the +windows feature} +"t:"で始まる変数名は、カレントタブページにローカルな変数を意味する。これはタブ +ページを閉じるときに破棄される。{+windows 機能つきでコンパイルしたときのみ利用 +可能} *global-variable* *g:var* 関数の中からグローバル変数へアクセスするには、"g:"を付けた名前を使用する。これ @@ -1077,31 +1074,29 @@ without the +windows feature} でも使うことができる。 *local-variable* *l:var* -関数の中からそのローカル変数にアクセスするには何も前置しなければ良い。しかし明 -示的に"l:"を付けることも可能。However, without prepending "l:" -you may run into reserved variable names. For example "count". By itself it -refers to "v:count". Using "l:count" you can have a local variable with the -same name. - +関数の中からそのローカル変数にアクセスするには何も前置しなければ良い。明示的に +"l:"を付けることも可能である。ただし"l:"をつけないと予約されている変数名と衝突 +してしまうことがある。例: "count"とすると"v:count"を参照してしまう。"l:count" +とすればローカル変数countを参照できる。 *script-variable* *s:var* -In a Vim script variables starting with "s:" can be used. They cannot be -accessed from outside of the scripts, thus are local to the script. - -They can be used in: -- commands executed while the script is sourced -- functions defined in the script -- autocommands defined in the script -- functions and autocommands defined in functions and autocommands which were - defined in the script (recursively) -- user defined commands defined in the script -Thus not in: -- other scripts sourced from this one -- mappings -- etc. - -script variables can be used to avoid conflicts with global variable names. -Take this example: > +Vimスクリプト内では"s:"で始まる変数名を使うことができる。これはスクリプトにつ +いてローカルであり、スクリプトの外部からはアクセスできない。 + +スクリプトローカル関数は次の中で使われる: +- そのスクリプトをsourceしている間に実行されるコマンド +- そのスクリプト内で定義される関数 +- そのスクリプト内で定義されるオートコマンド +- そのスクリプト内で定義される関数やオートコマンドで定義される関数やオートコマ + ンド(再帰的) +- そのスクリプト内で定義されるユーザ定義コマンド +次の場面では使えない: +- そのスクリプトからsourceされる他のスクリプト +- マッピング +- など。 + +グローバル変数との衝突を避けるにはスクリプト変数を使う。 +次の例を参照: > let s:counter = 0 function MyCounter() @@ -1110,21 +1105,19 @@ Take this example: > endfunction command Tick call MyCounter() -You can now invoke "Tick" from any script, and the "s:counter" variable in -that script will not be changed, only the "s:counter" in the script where -"Tick" was defined is used. +ここで他のスクリプトから"Tick"を実行してみると、そのスクリプト内の変数 +"s:counter"は変化せず、"Tick"が定義されたスクリプト内の"s:counter"だけが変化す +る。 -Another example that does the same: > +これと同じことをするもう1つの例: > let s:counter = 0 command Tick let s:counter = s:counter + 1 | echo s:counter -When calling a function and invoking a user-defined command, the context for -script varialbes is set to the script where the function or command was -defined. +関数呼び出しやユーザ定義コマンドを実行するとき、スクリプト変数のコンテキストは +その関数、コマンドが定義されたスクリプトとなる。 -The script variables are also available when a function is defined inside a -function that is defined in a script. Example: > +関数の中で関数を定義した場合、スクリプト変数も共有される。例: > let s:counter = 0 function StartCounting(incr) @@ -1139,13 +1132,12 @@ function that is defined in a script. Example: > endif endfunction -This defines the MyCounter() function either for counting up or counting down -when calling StartCounting(). It doesn't matter from where StartCounting() is -called, the s:counter variable will be accessible in MyCounter(). +このStartCounting()を呼ぶと、カウントアップかカウントダウンのどちらかを行う関 +数MyCounter()を定義する。StartCounting()がどこで呼ばれたかに関係なく、 +MyCounter()の中では変数s:counterにアクセスできる。 -When the same script is sourced again it will use the same script variables. -They will remain valid as long as Vim is running. This can be used to -maintain a counter: > +同じスクリプトが再度読み込まれた場合、同一のスクリプト変数が使われる。スクリプ +ト変数はVimが終了するまで存続する。以下の例はカウンタを保持する: > if !exists("s:counter") let s:counter = 1 @@ -1155,69 +1147,69 @@ maintain a counter: > echo "script executed " . s:counter . " times now" endif -Note that this means that filetype plugins don't get a different set of script -variables for each buffer. Use local buffer variables instead |b:var|. +Note これはつまり、ファイルタイププラグインはバッファごとにスクリプト変数を1セッ +ト持つのではないということを意味する。そのような目的にはバッファローカル変数 +|b:var|を使うこと。 Vimの定義済変数: *vim-variable* *v:var* *v:beval_col* *beval_col-variable* -v:beval_col The number of the column, over which the mouse pointer is. - This is the byte index in the |v:beval_lnum| line. - Only valid while evaluating the 'balloonexpr' option. +v:beval_col マウスポインタがある桁の桁番号。|v:beval_lnum|行目のバイトイン + デックスである。オプション'balloonexpr'を評価している最中のみ + 有効。 *v:beval_bufnr* *beval_bufnr-variable* -v:beval_bufnr The number of the buffer, over which the mouse pointer is. Only - valid while evaluating the 'balloonexpr' option. +v:beval_bufnr マウスポインタがあるバッファの番号。オプション'balloonexpr'を + 評価している最中のみ有効。 *v:beval_lnum* *beval_lnum-variable* -v:beval_lnum The number of the line, over which the mouse pointer is. Only - valid while evaluating the 'balloonexpr' option. +v:beval_lnum マウスポインタがある行の行番号。オプション'balloonexpr'を + 評価している最中のみ有効。 *v:beval_text* *beval_text-variable* -v:beval_text The text under or after the mouse pointer. Usually a word as - it is useful for debugging a C program. 'iskeyword' applies, - but a dot and "->" before the position is included. When on a - ']' the text before it is used, including the matching '[' and - word before it. When on a Visual area within one line the - highlighted text is used. - Only valid while evaluating the 'balloonexpr' option. +v:beval_text マウスポインタの下もしくは後ろにあるテキスト。Cプログラムのデ + バッグのために有用。'iskeyword'が適用されるが、マウスポインタ + の下より前にあるドットと"->"は含まれる。マウスポインタが']'の + 上にあるときは、そこから対応する'['とその前にあるテキストまで + が含まれる。マウスポインタが1行に収まるビジュアル領域の上にあ + るときはその選択領域となる。オプション'balloonexpr'を評価して + いる最中のみ有効。 *v:beval_winnr* *beval_winnr-variable* -v:beval_winnr The number of the window, over which the mouse pointer is. Only - valid while evaluating the 'balloonexpr' option. +v:beval_winnr マウスポインタがあるウィンドウの番号。オプション'balloonexpr'を評価して + いる最中のみ有効。 *v:char* *char-variable* -v:char Argument for evaluating 'formatexpr'. +v:char 'formatexpr'を評価しているときの引数。 *v:charconvert_from* *charconvert_from-variable* v:charconvert_from - The name of the character encoding of a file to be converted. - Only valid while evaluating the 'charconvert' option. + 変換しようとしているファイルの文字エンコーディング名。オプショ + ン'charconvert'を評価している最中のみ有効。 *v:charconvert_to* *charconvert_to-variable* v:charconvert_to - The name of the character encoding of a file after conversion. - Only valid while evaluating the 'charconvert' option. + 変換後のファイルの文字エンコーディング名。オプション + 'charconvert'を評価している最中のみ有効。 *v:cmdarg* *cmdarg-variable* -v:cmdarg This variable is used for two purposes: - 1. The extra arguments given to a file read/write command. - Currently these are "++enc=" and "++ff=". This variable is - set before an autocommand event for a file read/write - command is triggered. There is a leading space to make it - possible to append this variable directly after the - read/write command. Note: The "+cmd" argument isn't - included here, because it will be executed anyway. - 2. When printing a PostScript file with ":hardcopy" this is - the argument for the ":hardcopy" command. This can be used - in 'printexpr'. +v:cmdarg 2つの目的のために使われる: + 1. ファイルの読み書きコマンドに与えられる余分な引数。現在のと + ころ"++enc="と"++ff="がそれである。読み書きコマンドに対する + オートコマンドイベントが発生する前にこの変数が代入される。 + その読み書きコマンドの後に直接この変数を連結できるように、 + 先頭にスペースがついている。Note: ここには"+cmd"引数は含ま + れていない。どちらにしろそれは実行されるからである。 + 2. ":hardcopy"でPostScriptファイルを印刷するとき、これが + ":hardcopy"への引数になる。'printexpr'の中で使うことができ + る。 *v:cmdbang* *cmdbang-variable* -v:cmdbang Set like v:cmdarg for a file read/write command. When a "!" - was used the value is 1, otherwise it is 0. Note that this - can only be used in autocommands. For user commands || - can be used. +v:cmdbang v:cmdargと同じく読み書きコマンドを実行したとき設定される。読み + 書きコマンドに"!"が使われたときは1となり、使われていなければ0 + となる。Note オートコマンドの中でのみ利用可能なことに注意。ユー + ザ定義コマンドでは||を使えば同じことができる。 *v:count* *count-variable* v:count 最後に実行されたノーマルモードコマンドに渡されたコマンドの実行 @@ -1233,24 +1225,23 @@ v:count1 "v:count"と同じように、しかしカウントが指定されな 略値として存在する。 *v:ctype* *ctype-variable* -v:ctype The current locale setting for characters of the runtime - environment. This allows Vim scripts to be aware of the - current locale encoding. Technical: it's the value of - LC_CTYPE. When not using a locale the value is "C". - This variable can not be set directly, use the |:language| - command. - See |multi-lang|. +v:ctype 文字に関する実行環境の現在のロケール設定。これを使えばVim + スクリプト内で現在のロケール設定に対応できるようになる。技術的 + な詳細: LC_CTYPEに等しい。ロケールを使用していないときは"C"に + なる。 + この変数を設定するには|:language|コマンドを使うこと。直接設定 + することはできない。 + |multi-lang|を参照。 *v:dying* *dying-variable* -v:dying Normally zero. When a deadly signal is caught it's set to - one. When multiple signals are caught the number increases. - Can be used in an autocommand to check if Vim didn't - terminate normally. {only works on Unix} - Example: > +v:dying 通常時は0。致命的なシグナルを受信したとき1が代入される。複数 + のシグナルを受信すると値が増加していく。オートコマンド内でVim + が正常に終了するかチェックするために使える。{Unix でのみ動作} + 例: > :au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif < *v:errmsg* *errmsg-variable* -v:errmsg 最後に表示されたエラーメッセージ。この変数はセットすることが許 +v:errmsg 最後に表示されたエラーメッセージ。この変数は代入することが許 されている。例: > :let errmsg = "" :next @@ -1259,171 +1250,170 @@ v:errmsg 最後に表示されたエラーメッセージ。この変数はセ < また"errmsg"は、以前の版のVimとの互換性の為に動作する。 *v:exception* *exception-variable* -v:exception The value of the exception most recently caught and not - finished. See also |v:throwpoint| and |throw-variables|. - Example: > +v:exception 最も直近に捕捉され、まだ終了していない例外の値。 + |v:throwpoint|と|throw-variables|を参照。 + 例: > :try : throw "oops" :catch /.*/ : echo "caught" v:exception :endtry -< Output: "caught oops". +< 出力: "caught oops". *v:fcs_reason* *fcs_reason-variable* -v:fcs_reason The reason why the |FileChangedShell| event was triggered. - Can be used in an autocommand to decide what to do and/or what - to set v:fcs_choice to. Possible values: - deleted file no longer exists - conflict file contents, mode or timestamp was - changed and buffer is modified - changed file contents has changed - mode mode of file changed - time only file timestamp changed +v:fcs_reason |FileChangedShell|イベントが発生した理由。オートコマンドの中で + 何をすべきかやv:fcs_choiceに何を代入すべきかを決めるために使う。 + 値は次のどれかとなる: + deleted もはやファイルが存在しない + conflict ファイルの内容、モード、タイムスタンプ + が変化しており、バッファが変更されてい + る状態。 + changed ファイルの内容が変化している + mode ファイルのモードが変化している + time タイムスタンプだけが変化している *v:fcs_choice* *fcs_choice-variable* -v:fcs_choice What should happen after a |FileChangedShell| event was - triggered. Can be used in an autocommand to tell Vim what to - do with the affected buffer: - reload Reload the buffer (does not work if - the file was deleted). - ask Ask the user what to do, as if there - was no autocommand. Except that when - only the timestamp changed nothing - will happen. - Nothing, the autocommand should do - everything that needs to be done. - The default is empty. If another (invalid) value is used then - Vim behaves like it is empty, there is no warning message. +v:fcs_choice |FileChangedShell|イベントが発生した後に何をすべきかを表す。 + オートコマンドの中で、そのバッファに対して何をすべきかを指示す + るために使う。 + reload バッファを読み直す(バッファが削除され + ている場合には効果がない)。 + ask 何をすべきかをユーザに問い合わせる。こ + れはこのオートコマンドがない場合と同じ + である。ただしタイムスタンプだけが変化 + しているときは何もしない。 + 何もしない。オートコマンドの中だけで必 + 要なことは全て行ってしまっているという + 場合にこの値を代入する。 + 既定値は。これら意外の(無効な)値が代入されたときは空の + ときと同じ動作になり、警告メッセージは表示されない。 *v:fname_in* *fname_in-variable* -v:fname_in The name of the input file. Only valid while evaluating: - option used for ~ - 'charconvert' file to be converted - 'diffexpr' original file - 'patchexpr' original file - 'printexpr' file to be printed - And set to the swap file name for |SwapExists|. +v:fname_in 入力ファイルの名前。以下のオプションを評価している最中のみ + 有効: + オプション このファイル名の意味 ~ + 'charconvert' 変換するファイル + 'diffexpr' 元のファイル + 'patchexpr' 元のファイル + 'printexpr' 印刷するファイル + また、オートコマンドイベント|SwapExists|が発生したときスワップ + ファイル名が代入される。 *v:fname_out* *fname_out-variable* -v:fname_out The name of the output file. Only valid while - evaluating: - option used for ~ - 'charconvert' resulting converted file (*) - 'diffexpr' output of diff - 'patchexpr' resulting patched file - (*) When doing conversion for a write command (e.g., ":w - file") it will be equal to v:fname_in. When doing conversion - for a read command (e.g., ":e file") it will be a temporary - file and different from v:fname_in. +v:fname_out 出力ファイルの名前。以下のオプションを評価している最中のみ + 有効: + オプション このファイル名の意味 ~ + 'charconvert' 変換した結果のファイル (*) + 'diffexpr' diffの出力 + 'patchexpr' パッチを当てた結果のファイル + (*) 書き込みコマンド(":w file"など)を実行する際の変換では + v:fname_inと同じになる。読み込みコマンド(":e file"など)を実行 + する際の変換では一時ファイル名になり、v:fname_inと異なる。 *v:fname_new* *fname_new-variable* -v:fname_new The name of the new version of the file. Only valid while - evaluating 'diffexpr'. +v:fname_new 新しい方のファイル名。'diffexpr'を評価している最中のみ有効。 *v:fname_diff* *fname_diff-variable* -v:fname_diff The name of the diff (patch) file. Only valid while - evaluating 'patchexpr'. +v:fname_diff diff(patch)ファイルの名前。'patchexpr'を評価している最中のみ有 + 効。 *v:folddashes* *folddashes-variable* -v:folddashes Used for 'foldtext': dashes representing foldlevel of a closed - fold. - Read-only in the |sandbox|. |fold-foldtext| +v:folddashes 'foldtext'用。閉じた折り畳みのレベルを表すダッシュ。 + サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| *v:foldlevel* *foldlevel-variable* -v:foldlevel Used for 'foldtext': foldlevel of closed fold. - Read-only in the |sandbox|. |fold-foldtext| +v:foldlevel 'foldtext'用。閉じた折り畳みのレベル。 + サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| *v:foldend* *foldend-variable* -v:foldend Used for 'foldtext': last line of closed fold. - Read-only in the |sandbox|. |fold-foldtext| +v:foldend 'foldtext'用。閉じた折り畳みの最後の行。 + サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| *v:foldstart* *foldstart-variable* -v:foldstart Used for 'foldtext': first line of closed fold. - Read-only in the |sandbox|. |fold-foldtext| +v:foldstart 'foldtext'用。閉じた折り畳みの最初の行。 + サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| *v:insertmode* *insertmode-variable* -v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand - events. Values: - i Insert mode - r Replace mode - v Virtual Replace mode +v:insertmode オートコマンドイベント|InsertEnter|と|InsertChange|用。 + 値は次のどれか: + i インサートモード + r 置換モード + v ビジュアル置換モード *v:key* *key-variable* -v:key Key of the current item of a |Dictionary|. Only valid while - evaluating the expression used with |map()| and |filter()|. - Read-only. +v:key 辞書|Dictionary|の現在の要素のキー。|map()|と|filter()|で使わ + れる式を評価している最中のみ有効。 + 読出し専用。 *v:lang* *lang-variable* -v:lang The current locale setting for messages of the runtime - environment. This allows Vim scripts to be aware of the - current language. Technical: it's the value of LC_MESSAGES. - The value is system dependent. - This variable can not be set directly, use the |:language| - command. - It can be different from |v:ctype| when messages are desired - in a different language than what is used for character - encoding. See |multi-lang|. +v:lang メッセージに関する実行環境の現在のロケール設定。これを使えば + Vimスクリプト内で現在のロケール設定に対応できるようになる。 + 技術的な詳細: LC_MESSAGESに等しい。この値はシステムに依存する。 + この変数を設定するには|:language|コマンドを使うこと。直接設定 + することはできない。 + 文字エンコーディングに使うのと違う言語でメッセージを表示させた + い場合は|v:ctype|と異なる値でもよい。|multi-lang|を参照。 *v:lc_time* *lc_time-variable* -v:lc_time The current locale setting for time messages of the runtime - environment. This allows Vim scripts to be aware of the - current language. Technical: it's the value of LC_TIME. - This variable can not be set directly, use the |:language| - command. See |multi-lang|. +v:lc_time 時刻のメッセージに関する実行環境の現在のロケール設定。これを使 + えばVimスクリプト内で現在のロケール設定に対応できるようになる。 + 技術的な詳細: LC_TIMEに等しい。この値はシステムに依存する。こ + の変数を設定するには|:language|コマンドを使うこと。直接設定す + ることはできない。 *v:lnum* *lnum-variable* -v:lnum Line number for the 'foldexpr' |fold-expr| and 'indentexpr' - expressions, tab page number for 'guitablabel' and - 'guitabtooltip'. Only valid while one of these expressions is - being evaluated. Read-only when in the |sandbox|. +v:lnum 'foldexpr'と'indentexpr'に使うための行番号。また'guitablabel' + と'guitabtooltip'の文脈ではタブページ番号になる。これらの式のど + れかを評価しているときのみ有効。サンドボックス|sandbox|の中で + は読出し専用。 *v:mouse_win* *mouse_win-variable* -v:mouse_win Window number for a mouse click obtained with |getchar()|. - First window has number 1, like with |winnr()|. The value is - zero when there was no mouse button click. +v:mouse_win |getchar()|でマウスクリックイベントを取得したとき、この変数に + ウィンドウ番号が代入されている。|winnr()|と同じく番号は1から始 + まる。マウスがクリックされなかったときは0となる。 *v:mouse_lnum* *mouse_lnum-variable* -v:mouse_lnum Line number for a mouse click obtained with |getchar()|. - This is the text line number, not the screen line number. The - value is zero when there was no mouse button click. +v:mouse_lnum |getchar()|でマウスクリックイベントを取得したとき、この変数に + 行番号が代入されている。物理行ではなく論理行。マウスがクリック + されていないときは0となる。 *v:mouse_col* *mouse_col-variable* -v:mouse_col Column number for a mouse click obtained with |getchar()|. - This is the screen column number, like with |virtcol()|. The - value is zero when there was no mouse button click. +v:mouse_col |getchar()|でマウスクリックイベントを取得したとき、この変数に + 桁番号が代入されている。|virtcol()|と同じく画面上の桁番号。マ + ウスがクリックされていないときは0となる。 *v:prevcount* *prevcount-variable* -v:prevcount The count given for the last but one Normal mode command. - This is the v:count value of the previous command. Useful if - you want to cancel Visual mode and then use the count. > +v:prevcount 最後のノーマルモードコマンドに与えられたカウントの値。前のコマ + ンドのv:countの値である。ビジュアルモードをキャンセルし、その + 後にカウントを使う場合に便利である。例: > :vmap % :call MyFilter(v:prevcount) -< Read-only. +< 読出し専用。 *v:profiling* *profiling-variable* -v:profiling Normally zero. Set to one after using ":profile start". - See |profiling|. +v:profiling 通常時は0。":profile start"を実行すると1が代入される。 + |profiling|を参照。 *v:progname* *progname-variable* -v:progname Contains the name (with path removed) with which Vim was - invoked. Allows you to do special initialisations for "view", - "evim" etc., or any other name you might symlink to Vim. - Read-only. +v:progname Vimを起動したときのプログラム名(パスは除かれる)。"view"、 + "evim"などの名前やシンボリックリンクなどで起動した場合に特別な + 初期化を行うのに便利。 + 読出し専用。 *v:register* *register-variable* -v:register The name of the register supplied to the last normal mode - command. Empty if none were supplied. |getreg()| |setreg()| +v:register 最後のノーマルモードコマンドに指定されたレジスタの名前。レジス + タが指定されなかったときは空。|getreg()| |setreg()| *v:scrollstart* *scrollstart-variable* -v:scrollstart String describing the script or function that caused the - screen to scroll up. It's only set when it is empty, thus the - first reason is remembered. It is set to "Unknown" for a - typed command. - This can be used to find out why your script causes the - hit-enter prompt. +v:scrollstart 画面のスクロールの原因となったスクリプトや関数を説明する + 文字列。空であるときのみ代入される。よってこの変数には最初の原 + 因だけが記録されている。原因がキーボードから入力されたコマンド + の場合は"Unknown"が代入される。 + スクリプトを実行したとき現れたhit-enterプロンプトの原因を探る + ために便利。 *v:servername* *servername-variable* -v:servername The resulting registered |x11-clientserver| name if any. - Read-only. +v:servername |x11-clientserver|に登録されている名前。 + 読出し専用。 *v:shell_error* *shell_error-variable* v:shell_error 最後に実行したシェルコマンドの結果。シェルコマンドの実行時にな @@ -1439,70 +1429,68 @@ v:shell_error 最後に実行したシェルコマンドの結果。シェルコ < また"shell_error"は、以前の版のVimとの互換性の為に動作する。 *v:statusmsg* *statusmsg-variable* -v:statusmsg 最後に表示されたステータスメッセージ。この変数はセットすること +v:statusmsg 最後に表示されたステータスメッセージ。この変数は代入すること が許されている。 *v:swapname* *swapname-variable* -v:swapname Only valid when executing |SwapExists| autocommands: Name of - the swap file found. Read-only. +v:swapname オートコマンド|SwapExists|を実行している最中のみ有効。見つかっ + たスワップファイルの名前。読出し専用。 *v:swapchoice* *swapchoice-variable* -v:swapchoice |SwapExists| autocommands can set this to the selected choice - for handling an existing swap file: - 'o' Open read-only - 'e' Edit anyway - 'r' Recover - 'd' Delete swapfile - 'q' Quit - 'a' Abort - The value should be a single-character string. An empty value - results in the user being asked, as would happen when there is - no SwapExists autocommand. The default is empty. +v:swapchoice イベント|SwapExists|により実行されたオートコマンドが、見つかっ + たスワップファイルをどう処理するかをこの変数に代入する。 + 'o' 読込専用で開く + 'e' とにかく編集する + 'r' 復活させる + 'd' スワップファイルを削除する + 'q' 終了する + 'a' 中止する + この変数の値は1文字の文字列でなければならない。値が空のときは + オートコマンドSwapExistsが存在しないときと同じようにユーザに問 + い合わせる。既定値は空。 *v:swapcommand* *swapcommand-variable* -v:swapcommand Normal mode command to be executed after a file has been - opened. Can be used for a |SwapExists| autocommand to have - another Vim open the file and jump to the right place. For - example, when jumping to a tag the value is ":tag tagname\r". - For ":edit +cmd file" the value is ":cmd\r". +v:swapcommand ファイルを開いた後に実行するノーマルモードコマンド。オートコマ + ンド|SwapExists|で、他のVimインスタンスにファイルを開かせ、指 + 定位置までジャンプするために使うことができる。例えば、あるタグ + へジャンプするには、この変数に":tag tagname\r"という値を代入す + る。":edit +cmd file"を実行させるには":cmd\r"を代入する。 *v:termresponse* *termresponse-variable* -v:termresponse The escape sequence returned by the terminal for the |t_RV| - termcap entry. It is set when Vim receives an escape sequence - that starts with ESC [ or CSI and ends in a 'c', with only - digits, ';' and '.' in between. - When this option is set, the TermResponse autocommand event is - fired, so that you can react to the response from the - terminal. - The response from a new xterm is: "[ Pp ; Pv ; Pc c". Pp - is the terminal type: 0 for vt100 and 1 for vt220. Pv is the - patch level (since this was introduced in patch 95, it's - always 95 or bigger). Pc is always zero. - {only when compiled with |+termresponse| feature} +v:termresponse termcapのエントリ|t_RV|で端末から返されるエスケープシーケン + ス。ESC [またはCSIで始まり、途中数字と';'と'.'だけから構成され + 'c'で終わるエスケープシーケンスを受け取ったとき代入される。 + このオプションがセットされるとオートコマンドイベント + TermResponseが発生し、端末からの応答に反応することができる。 + 新しいxtermからの応答は次の形式である: + "[ Pp ; Pv ; Pc c"。ここでPpは端末のタイプ: 0ならvt100、 + 1ならvt220。Pvはパッチレベル(パッチ95で導入されたため常 + に95以上)。Pcは常に0。 + {Vi mが|+termresponse|機能付きでコンパイルされたときのみ有効} *v:this_session* *this_session-variable* v:this_session 最後にロードされたか、セーブされたセッションファイルの完全な - ファイル名。|:mksession|を参照。この変数はセットすることが許さ + ファイル名。|:mksession|を参照。この変数は代入することが許さ れている。それ以前にセーブされたセッションがなければ、この変数 は空となる。 また"this_session"は、以前の版のVimとの互換性の為に動作する。 *v:throwpoint* *throwpoint-variable* -v:throwpoint The point where the exception most recently caught and not - finished was thrown. Not set when commands are typed. See - also |v:exception| and |throw-variables|. - Example: > +v:throwpoint 最も直近に捕捉されてまだ終了していない例外が発生した位置。キー + ボードから入力されたコマンドは記録されていない。|v:exception| + と|throw-variables|も参照。 + 例: > :try : throw "oops" :catch /.*/ : echo "Exception from" v:throwpoint :endtry -< Output: "Exception from test.vim, line 2" +< 出力: "Exception from test.vim, line 2" *v:val* *val-variable* -v:val Value of the current item of a |List| or |Dictionary|. Only - valid while evaluating the expression used with |map()| and - |filter()|. Read-only. +v:val 辞書|Dictionary|の現在の要素の値。|map()|と|filter()|で使わ + れる式を評価している最中のみ有効。 + 読出し専用。 *v:version* *version-variable* v:version Vimのバージョン番号。メジャーバージョン番号は100倍され、マイ @@ -1515,8 +1503,8 @@ v:version Vimのバージョン番号。メジャーバージョン番号は100 えば番号は同じでもパッチの内容は全く異なっている。 *v:warningmsg* *warningmsg-variable* -v:warningmsg 最後に表示された警告メッセージ。この変数はセットすることが許さ - れている。 +v:warningmsg 最後に表示された警告メッセージ。この変数は代入することが許され + ている。 ============================================================================== 4. 組み込み関数 *functions* @@ -1784,7 +1772,7 @@ winline() 数値 カーソル位置のウィンドウ行 winnr() 数値 現在のウィンドウの番号 winrestcmd() 文字列 ウィンドウサイズを復元するコマンド winrestview({dict}) なし 現在のウィンドウのビューを復元 -winsaveview() Dict 現在のウィンドウのビューを保存 +winsaveview() 辞書 現在のウィンドウのビューを保存 winwidth( {nr}) 数値 ウィンドウ{nr}の幅を取得 writefile({list}, {fname} [, {binary}]) 数値 行のリストをファイル{fname}に書き込む From 4951aaa407f753fe709f63fb5b68da402b209c82 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro Date: Sat, 30 Jun 2007 00:39:55 +0000 Subject: [PATCH 106/783] fix: translated 2. expression-syntax in eval.jax git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@106 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/eval.jax | 207 +++++++++++++++++++++++++--------------------------- 1 file changed, 100 insertions(+), 107 deletions(-) diff --git a/ja/eval.jax b/ja/eval.jax index 077f08f3e..2f7de5e55 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -710,31 +710,30 @@ expr5 {cmp} expr5 同一のインスタンス is 異なるインスタンス isnot -Examples: +例: "abc" ==# "Abc" 0と評価される "abc" ==? "Abc" 1と評価される "abc" == "Abc" 'ignorecase'が設定されていれば1と、でなければ0と評価 *E691* *E692* -A |List| can only be compared with a |List| and only "equal", "not equal" and -"is" can be used. This compares the values of the list, recursively. -Ignoring case means case is ignored when comparing item values. +リスト|List|はリストとだけ比較可能で、==系、!=系、is、isnotのみ利用できる。 +これらはそれぞれのリストの値を再帰的に比較する。大文字小文字無視にすると要素を +比較するときに大文字小文字を無視する。 *E735* *E736* -A |Dictionary| can only be compared with a |Dictionary| and only "equal", "not -equal" and "is" can be used. This compares the key/values of the |Dictionary| -recursively. Ignoring case means case is ignored when comparing item values. +辞書|Dictionary|は辞書とだけ比較可能で、==系、!=系、is、isnotのみ利用できる。 +これらは辞書のキー/値を再帰的に比較する。大文字小文字無視にすると要素を +比較するときに大文字小文字を無視する。 *E693* *E694* -A |Funcref| can only be compared with a |Funcref| and only "equal" and "not -equal" can be used. Case is never ignored. +|Funcref|は|Funcref|とだけ比較可能で、"equal"と"not equal"のみ利用できる。大文 +字小文字は常に区別される。 -When using "is" or "isnot" with a |List| this checks if the expressions are -referring to the same |List| instance. A copy of a |List| is different from -the original |List|. When using "is" without a |List| it is equivalent to -using "equal", using "isnot" equivalent to using "not equal". Except that a -different type means the values are different. "4 == '4'" is true, "4 is '4'" -is false. +リスト|List|に対して"is"や"isnot"を使うと、それらの式が同じリストのインスタン +スを参照しているか判定される。リストのコピーと元のリストは異なると判定される。 +リスト以外に対して"is"は"equal"と同じで、"isnot"は"not equal"と同じである。た +だし"is"、"isnot"は型が異なると値が等しくない点が"=="とは異なる。「4 == '4'」 +は真で、「4 is '4'」は偽である。 文字列と数値を比較した場合、文字列が数値に変換され、数値として比較される。これ は"0 == 'x'"が、'x'が数値としては0であることから、真となることを意味する。 @@ -824,72 +823,67 @@ expr8が数値か文字列ならば、これの結果は文字列expr8のexpr1 数のインデックスを指定すると、結果は常に空文字列になる(後方互換性のため)。 最後のバイトを得るには[-1:]を使うこと。 -If expr8 is a |List| then it results the item at index expr1. See |list-index| -for possible index values. If the index is out of range this results in an -error. Example: > - :let item = mylist[-1] " get last item +expr8がリスト|List|ならばインデックスexpr1の要素が返る。取りうるインデックスの +値については|list-index|を参照。インデックスが範囲を超えている場合はエラーとな +る。例: > + :let item = mylist[-1] " 最後の要素を取得 -Generally, if a |List| index is equal to or higher than the length of the -|List|, or more negative than the length of the |List|, this results in an -error. +一般的には、インデックスが正でリストの長さ以上または、負でリストの長さ×-1より +小さいときエラーとなる。 -expr8[expr1a : expr1b] substring or sublist *expr-[:]* +expr8[expr1a : expr1b] 部分文字列または部分リスト *expr-[:]* -If expr8 is a Number or String this results in the substring with the bytes -from expr1a to and including expr1b. expr8 is used as a String, expr1a and -expr1b are used as a Number. Note that this doesn't recognize multi-byte -encodings. +expr8が数値か文字列ならば、expr1aバイトからexpr1bバイトまでの部分文字列となる +(両端を含む)。expr8は文字列として扱われ、expr1aとexpr1bは数値として扱われる。 +Note マルチバイトのエンコーディングは認識しない。 -If expr1a is omitted zero is used. If expr1b is omitted the length of the -string minus one is used. +expr1aが省略されたときは0となる。expr1bが省略されたときは文字列の長さ-1となる。 -A negative number can be used to measure from the end of the string. -1 is -the last character, -2 the last but one, etc. +負数のインデックスを使うことによって文字列の末尾から取り出すことができる。-1は +最後の文字、-2は最後から2文字目…を表す。 -If an index goes out of range for the string characters are omitted. If -expr1b is smaller than expr1a the result is an empty string. +インデックスがその文字の範囲外に出てしまったときは、その文字は省かれる。expr1b +がexpr1aより小さいときは空文字列となる。 -Examples: > - :let c = name[-1:] " last byte of a string - :let c = name[-2:-2] " last but one byte of a string - :let s = line(".")[4:] " from the fifth byte to the end - :let s = s[:-3] " remove last two bytes +例: > + :let c = name[-1:] " 文字列の最後のバイト + :let c = name[-2:-2] " 文字列の最後から2バイト目 + :let s = line(".")[4:] " 5バイト目から末尾まで + :let s = s[:-3] " 最後の2文字を削除する -If expr8 is a |List| this results in a new |List| with the items indicated by -the indexes expr1a and expr1b. This works like with a String, as explained -just above, except that indexes out of range cause an error. Examples: > - :let l = mylist[:3] " first four items - :let l = mylist[4:4] " List with one item - :let l = mylist[:] " shallow copy of a List +expr8がリストならば、インデックスexpr1aとexpr1bの間の要素からなる新しいリスト +となる。上で説明した文字列の場合と同様だが、インデックスが範囲を超えるとエラー +になる。例: > + :let l = mylist[:3] " 最初の4個の要素 + :let l = mylist[4:4] " 1個の要素からなるリスト + :let l = mylist[:] " リストの浅いコピー -Using expr8[expr1] or expr8[expr1a : expr1b] on a |Funcref| results in an -error. +|Funcref|に対してexpr8[expr1]やexpr8[expr1a : expr1b]を使うとエラーになる。 -expr8.name entry in a |Dictionary| *expr-entry* +expr8.name 辞書|Dictionary|の要素 *expr-entry* -If expr8 is a |Dictionary| and it is followed by a dot, then the following -name will be used as a key in the |Dictionary|. This is just like: -expr8[name]. +expr8が辞書|Dictionary|のとき、ドットをつけるとその後に書かれた名前が辞書のキ +ーと見なされる。例: expr8[name]。 -The name must consist of alphanumeric characters, just like a variable name, -but it may start with a number. Curly braces cannot be used. +名前は変数名と同じようにアルファベットと数字だけから構成されなければならない +が、数字で始まってもよい。波括弧は使えない。 -There must not be white space before or after the dot. +ドットの前後に空白があってはならない。 -Examples: > +例: > :let dict = {"one": 1, 2: "two"} :echo dict.one :echo dict .2 -Note that the dot is also used for String concatenation. To avoid confusion -always put spaces around the dot for String concatenation. +Note ドットは文字列連結にも使われる。混乱を避けるために、文字列連結のドットの +周りには必ずスペースを入れること。 -expr8(expr1, ...) |Funcref| function call +expr8(expr1, ...) |Funcref| 関数呼び出し -When expr8 is a |Funcref| type variable, invoke the function it refers to. +expr8が|Funcref|型の変数のとき、その参照する関数を呼び出す。 @@ -926,11 +920,10 @@ number 数定数 *expr-number* \t タブ \\ 円記号(バックスラッシュ) \" ダブルクォート -\ "xxx"というなの特別キー。 例 "\" は CTRL-W. +\ "xxx"という名の特殊キー。 例 "\" は CTRL-W. -Note that "\xff" is stored as the byte 255, which may be invalid in some -encodings. Use "\u00ff" to store character 255 according to the current value -of 'encoding'. +Note "\xff"は値255の1バイトとなる。これはエンコーディングによっては無効な値か +もしれない。現在の'encoding'の値に応じた文字255を得るには"\u00ff"を使う。 Note "\000"と"\x00"は強制的に文字列の終端として扱われる。 @@ -945,8 +938,8 @@ Note シングルクォートが使われていることに注意。 意味を持ったりもしない。唯一の例外は、2つのシングルクォートで1つのシングルクォ ートになることである。 -Single quoted strings are useful for patterns, so that backslashes do not need -to be doubled. These two commands are equivalent: > +シングルクォートの文字列は、バックスラッシュを2重にしなくてよいため、正規表現 +パターンを表すのに便利である。以下の2つのコマンドは同値である: > if a =~ "\\s*" if a =~ '\s*' @@ -970,12 +963,12 @@ to be doubled. These two commands are equivalent: > -------- @r レジスタ'r'の値 -結果は、名前付けられたレジスタの内容が単一の文字列として与えられる。必要なとこ -ろには改行文字が挿入されている。無名レジスタの内容を取得するためには@"か@@を使 -う。どのようなレジスタがあるのかは、|registers|を参照。 +名前付きレジスタの中身を1つの文字列として得る。必要なところには改行文字が挿入 +されている。無名レジスタの中身を取得するには@"か@@を使う。利用可能なレジスタの +説明については|registers|を参照。 -When using the '=' register you get the expression itself, not what it -evaluates to. Use |eval()| to evaluate it. +レジスタ'='を使うと、式の値でなく式そのものを得る。それを評価するには|eval()| +を使う。 入れ子 *expr-nesting* *E110* @@ -996,7 +989,7 @@ Note $VARを直接使用した場合とexpand("$VAR")を使用した場合では れは遅くはなるが、シェルの知りうる総ての変数を展開することができる。例: > :echo $version :echo expand("$version") -最初の一つは恐らく何も帰ってこず、2つ目は$versionの値が帰ってくるだろう(貴方の +最初の一つは恐らく何も返ってこず、2つ目は$versionの値が返ってくるだろう(貴方の シェルがサポートしていたとして) @@ -5433,12 +5426,12 @@ a: のスコープとこの変数は固定されており、変更できない これはユーザマニュアルのセクション|41.14|で説明されている。 -自動コマンドは、長いVimスクリプトファイルのプラグインに対して有用である。自動 +オートコマンドは、長いVimスクリプトファイルのプラグインに対して有用である。自動 コマンドを定義し、すぐに|:finish|でそのスクリプトを抜ける。こうするとVimの起動 -が速くなる。その後自動コマンドにより|:finish|コマンドをスキップする変数を定義 +が速くなる。その後オートコマンドにより|:finish|コマンドをスキップする変数を定義 し、そのファイルが再び読み込まれる。 -定義すべき関数名にマッチするパターンを指定して自動コマンドイベント +定義すべき関数名にマッチするパターンを指定してオートコマンドイベント FuncUndefinedを使う。例: > :au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim @@ -5850,8 +5843,8 @@ Vimはこれを見つけると、まず波括弧の中の式を評価し、そ :try *:try* *:endt* *:endtry* *E600* *E601* *E602* :endt[ry] ":try"と":endtry"の間のコマンド(":source"コマンド、関 - 数呼び出し、自動コマンド実行を含めた全てのコマンド実行) - のエラー制御を変更する。 + 数呼び出し、オートコマンド実行を含めた全てのコマンド実 + 行)のエラー制御を変更する。 エラーや割り込みが検出された場合、後に|:finally|コマン ドがあるならば、":finally"の後から実行が継続される。そ @@ -6557,9 +6550,9 @@ NOTE: エラーメッセージの本文によって捕捉しようとしては :au BufWritePre * unlet novar このようなエラーの中には、スクリプトの作者が責任を追わないものもある: つまり、 -スクリプトのユーザがそのような自動コマンドを定義している場合である。その場合、 -上の例のようにすると、ユーザからエラーを隠してしまうことになる。エラーを無視す -るには、次のようにした方がよい > +スクリプトのユーザがそのようなオートコマンドを定義している場合である。その +場合、上の例のようにすると、ユーザからエラーを隠してしまうことになる。エラーを +無視するには、次のようにした方がよい > :try : write @@ -6569,7 +6562,7 @@ NOTE: エラーメッセージの本文によって捕捉しようとしては これは書き込みエラーだけを捕捉する。つまり、あなたが意図的に無視したいエラーだ けである。 -自動コマンドを発生させないような1つのコマンドに対しては、":silent!"を使えば +オートコマンドを発生させないような1つのコマンドに対しては、":silent!"を使えば エラーを例外に変換すること自体を抑制させることができる: > :silent! nunmap k これはtry条件文が有効なときも機能する。 @@ -6610,7 +6603,7 @@ NOTE: エラーメッセージの本文によって捕捉しようとしては : endtry :endwhile -ここでCTRL-Cを押すとタスクに割り込むことができる。するとスクリプトは新しいコマ +ここでCTRL-Cを押すとタスクに割り込むことができる。その後スクリプトは新しいコマ ンドを要求する。プロンプトでCTRL-Cを押すとスクリプトが終了する。 スクリプト中の特定の行でCTRL-Cが押されたとき何が起こるかをテストするにはデバッ @@ -6620,15 +6613,15 @@ NOTE: エラーメッセージの本文によって捕捉しようとしては 全てを捕捉する *catch-all* -次のコマンドは > +次のコマンド > :catch /.*/ :catch // :catch -全てをエラー例外・割り込み例外・|:throw|コマンドにより明示的に投げられた例外の -捕捉する。これはスクリプトのトップレベルで予期しないことを捕捉するために役に立 -つ。 +は全てをエラー例外・割り込み例外・|:throw|コマンドにより明示的に投げられた例外 +の捕捉する。これは、スクリプトのトップレベルで、予期しないことを捕捉するために +役に立つ。 例: > :try @@ -6650,8 +6643,8 @@ NOTE: エラーメッセージの本文によって捕捉しようとしては Note: 全てを捕捉すると、期待していた以上のものを捕捉してしまうかもしれない。そ れゆえ、":catch"コマンドの引数に正規表現を指定することにより、自分が本当に制御 できる問題だけを捕捉することが強く推奨されている。 -例: 全てを捕捉してしまうと、CTRL-Cを押してスクリプトを中断することがほぼ不可能 -になってしまうかも知れない: > +全てを捕捉してしまうと、CTRL-Cを押してスクリプトを中断することがほぼ不可能になっ +てしまうことがある。その例: > :while 1 : try @@ -6661,9 +6654,9 @@ Note: 全てを捕捉すると、期待していた以上のものを捕捉し :endwhile -例外と自動コマンド *except-autocmd* +例外とオートコマンド *except-autocmd* -自動コマンドの実行中に例外を使うこともできる。例: > +オートコマンドの実行中に例外を使うこともできる。例: > :autocmd User x try :autocmd User x throw "Oops!" @@ -6682,10 +6675,10 @@ Note: 全てを捕捉すると、期待していた以上のものを捕捉し 上の例を実行すると"Oops!"と"Arrgh!"が表示される。 *except-autocmd-Pre* -いくつかのコマンドでは、それ自身が実行される前に自動コマンドが実行される。 -例外が発生し、それが一連の自動コマンドの中で捕捉されない場合、一連の自動コマン -ドと、その引き金となったコマンドは破棄され、例外がそのコマンドを呼んだ位置へ伝 -播する。 +いくつかのコマンドでは、それ自身が実行される前にオートコマンドが実行される。 +例外が発生し、それが一連のオートコマンドの中で捕捉されない場合、一連の自動コマ +ンドと、その引き金となったコマンドは破棄され、例外がそのコマンドを呼んだ位置へ +伝播する。 例: > :autocmd BufWritePre * throw "FAIL" @@ -6698,16 +6691,16 @@ Note: 全てを捕捉すると、期待していた以上のものを捕捉し :endtry ここで":write"コマンドは現在編集しているファイルを書き込まない('modified'を確 -認すればわかる)。BufWritePreの自動コマンドで発生した例外により、":write"が破棄 -されたためである。そしてその例外は捕捉され、次を表示する: > +認すればわかる)。BufWritePreのオートコマンドで発生した例外により、":write"が破 +棄されたためである。そしてその例外は捕捉され、次を表示する: > Caught: FAIL from BufWrite Auto commands for "*" < *except-autocmd-Post* -いくつかのコマンドでは、それ自身が実行された後で自動コマンドが実行される。引き -金となったコマンド自身が失敗して、それが有効なtry条件文の内側にあった場合、自 -動コマンドはスキップされ、エラー例外が発生する。その例外は、コマンドを呼んだ位 -置で捕捉することができる。 +いくつかのコマンドでは、それ自身が実行された後でオートコマンドが実行される。引 +き金となったコマンド自身が失敗して、それが有効なtry条件文の内側にあった場合、 +自動コマンドはスキップされ、エラー例外が発生する。その例外は、コマンドを呼んだ +位置で捕捉することができる。 例: > :autocmd BufWritePost * echo "File successfully written!" @@ -6722,8 +6715,8 @@ Note: 全てを捕捉すると、期待していた以上のものを捕捉し Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e) -引き金となったコマンドが失敗したときでさえも自動コマンドを実行したいという場合 -は、catch節の中でそのイベントを引き起こすことできる。 +引き金となったコマンドが失敗したときでさえもオートコマンドを実行したいという場 +合は、catch節の中でそのイベントを引き起こすことできる。 例: > :autocmd BufWritePre * set noreadonly @@ -6750,8 +6743,8 @@ Note: 全てを捕捉すると、期待していた以上のものを捕捉し 上の例は"after fail"を表示する。 -引き金となったコマンドが失敗しなかった場合、自動コマンドから発生した例外は、元 -のコマンドを呼んだ位置から捕捉できる: > +引き金となったコマンドが失敗しなかった場合、オートコマンドから発生した例外は、 +元のコマンドを呼んだ位置から捕捉できる: > :autocmd BufWritePost * throw ":-(" :autocmd BufWritePost * echo "Should not be displayed" @@ -6763,8 +6756,8 @@ Note: 全てを捕捉すると、期待していた以上のものを捕捉し :endtry < *except-autocmd-Cmd* -いくつかのコマンドでは、通常の処理を一連の自動コマンドで置き換えることができる。 -そのコマンド列で発生した例外は元のコマンドの呼び出し位置で捕捉できる。 +いくつかのコマンドでは、通常の処理を一連のオートコマンドで置き換えることができ +る。そのコマンド列で発生した例外は元のコマンドの呼び出し位置で捕捉できる。 例: ":write"コマンドでは、例外が発生したとき、呼び出し側は実際にファイルが 書き込まれたのかどうかを知ることができない。これを教える必要があるときは、なん らかの手段を使わねばならない。 > @@ -6807,8 +6800,8 @@ Note: 全てを捕捉すると、期待していた以上のものを捕捉し 以下同様。 *except-autocmd-ill* -異なるイベントに対する自動コマンドにわたってtry条件文を展開することはできない。 -以下のコードは不正である: > +異なるイベントに対するオートコマンドにわたってtry条件文を展開することはできな +い。以下のコードは不正である: > :autocmd BufWritePre * try : @@ -7121,7 +7114,7 @@ Michael Geddesによる)。 サンドボックス内では以下の事が禁止される: - バッファの変更 - - マッピング、自動コマンド、関数、ユーザ定義コマンドの定義・変更 + - マッピング、オートコマンド、関数、ユーザ定義コマンドの定義・変更 - ある種のオプションの設定 (|option-summary|を参照) - ある種のVim定義済変数(v:)の設定 (|v:var|を参照) *E794* - シェルコマンドの実行 From 9e1226ade3be6ffb92550e563f47eb0aaafaf8b8 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro Date: Sat, 30 Jun 2007 16:30:44 +0000 Subject: [PATCH 107/783] fix: translated 1. variables in eval.jax git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@107 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/eval.jax | 482 +++++++++++++++++++++++++--------------------------- 1 file changed, 236 insertions(+), 246 deletions(-) diff --git a/ja/eval.jax b/ja/eval.jax index 2f7de5e55..2ad22ac92 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -91,15 +91,14 @@ Note 次のコマンドをみると > strlen()を使用して次のようにする。 > :if strlen("foo") < *E745* *E728* *E703* *E729* *E730* *E731* -List, Dictionary and Funcref types are not automatically converted. +リスト、辞書、Funcrefは自動的に変換されない。 *E706* -You will get an error if you try to change the type of a variable. You need -to |:unlet| it first to avoid this error. String and Number are considered -equivalent though. Consider this sequence of commands: > +変数の型を変えようとするとエラーになる。このエラーを避けるには、まず|:unlet|す +る必要がある。しかし文字列と数値は同値であると見なされる。例: > :let l = "string" - :let l = 44 " changes type from String to Number - :let l = [1, 2, 3] " error! + :let l = 44 " 型が文字列から数値に変わる + :let l = [1, 2, 3] " エラー! 1.2 関数への参照 ~ @@ -134,95 +133,93 @@ equivalent though. Consider this sequence of commands: > 1.3 リスト ~ *List* *Lists* *E686* -A List is an ordered sequence of items. An item can be of any type. Items -can be accessed by their index number. Items can be added and removed at any -position in the sequence. +リストとは順序を保つ要素の列である。要素はどんな型でもよい。要素へはインデック +ス番号を使ってアクセスする。列の任意の位置に要素を追加したり削除することができ +る。 -List creation ~ +リストの作成 ~ *E696* *E697* -A List is created with a comma separated list of items in square brackets. -Examples: > +リストを作るには、[]の中にコンマで区切って要素を書く。 +例: > :let mylist = [1, two, 3, "four"] :let emptylist = [] -An item can be any expression. Using a List for an item creates a -List of Lists: > +要素はどんな式でもよい。要素としてリストを指定すると、リストのリストができる: +> :let nestlist = [[11, 12], [21, 22], [31, 32]] -An extra comma after the last item is ignored. +最後の要素の後に余分なコンマがあると無視される。 -List index ~ +リストのインデックス ~ *list-index* *E684* -An item in the List can be accessed by putting the index in square brackets -after the List. Indexes are zero-based, thus the first item has index zero. > - :let item = mylist[0] " get the first item: 1 - :let item = mylist[2] " get the third item: 3 +リストの要素にアクセスするには、リスト名の後に[]を書き、その中にインデックスを +書く。インデックスは0基点(つまり最初の要素のインデックスは0)である。 > + :let item = mylist[0] " 最初の要素(1)を取得 + :let item = mylist[2] " 3番目の要素(3)を取得 When the resulting item is a list this can be repeated: > - :let item = nestlist[0][1] " get the first list, second item: 12 +取得した要素がリストならば、これを続けて書くことができる: > + :let item = nestlist[0][1] " 最初のリストの2番目の要素(12)を取得 < -A negative index is counted from the end. Index -1 refers to the last item in -the List, -2 to the last but one item, etc. > - :let last = mylist[-1] " get the last item: "four" +負のインデックスを指定すると、リストの末尾から数えられる。インデックス-1は最後 +の要素を示し、-2は最後から2番目を指す > + :let last = mylist[-1] " 最後の要素("four")を取得 -To avoid an error for an invalid index use the |get()| function. When an item -is not available it returns zero or the default value you specify: > +無効なインデックスによるエラーを回避するには関数|get()|を使う。するとインデッ +クスが無効な場合は、0かまたは自分で指定した既定値が返る: > :echo get(mylist, idx) :echo get(mylist, idx, "NONE") -List concatenation ~ +リストの連結 ~ -Two lists can be concatenated with the "+" operator: > +2つのリストを連結するには演算子"+"を使う: > :let longlist = mylist + [5, 6] :let mylist += [7, 8] -To prepend or append an item turn the item into a list by putting [] around -it. To change a list in-place see |list-modification| below. +1個の要素を先頭または末尾に付け加えるには、[]で囲んでリストにして連結する。リ +ストの特定の要素を変更するには後述の|list-modification|を参照。 -Sublist ~ +部分リスト ~ -A part of the List can be obtained by specifying the first and last index, -separated by a colon in square brackets: > - :let shortlist = mylist[2:-1] " get List [3, "four"] +リストの一部分を取り出すには、[]の中に始点と終点のインデックスを書き、コロンで +区切る: > + :let shortlist = mylist[2:-1] " リスト[3, "four"]を得る -Omitting the first index is similar to zero. Omitting the last index is -similar to -1. > - :let endlist = mylist[2:] " from item 2 to the end: [3, "four"] - :let shortlist = mylist[2:2] " List with one item: [3] - :let otherlist = mylist[:] " make a copy of the List +始点のインデックスを省略すると0となる。終点のインデックスを省略すると-1となる > + :let endlist = mylist[2:] " 2番目から最後まで: [3, "four"] + :let shortlist = mylist[2:2] " 1個の要素からなるリスト: [3] + :let otherlist = mylist[:] " リストのコピーを作る -If the first index is beyond the last item of the List or the second item is -before the first item, the result is an empty list. There is no error -message. +終点のインデックスが始点のインデックスよりも前になってしまった場合は空リストと +なる。エラーメッセージは表示されない。 -If the second index is equal to or greater than the length of the list the -length minus one is used: > +終点のインデックスがリストの長さより大きい場合は、長さ-1を指定したときと同じに +なる: > :let mylist = [0, 1, 2, 3] - :echo mylist[2:8] " result: [2, 3] + :echo mylist[2:8] " 結果: [2, 3] -NOTE: mylist[s:e] means using the variable "s:e" as index. Watch out for -using a single letter variable before the ":". Insert a space when needed: -mylist[s : e]. +NOTE: mylist[s:e]と書くと変数"s:e"をインデックスとして使ったと解釈される。":" +の前に1文字の変数を使うときは十分注意すること。必要ならこのようにスペースを入 +れるとよい: mylist[s : e]. -List identity ~ +リストの同一性 ~ *list-identity* -When variable "aa" is a list and you assign it to another variable "bb", both -variables refer to the same list. Thus changing the list "aa" will also -change "bb": > +変数"aa"がリストであり、それを別の変数"bb"に代入したとすると、両方とも同じ変数 +を参照するようになる。よってリスト"aa"を変更すると"bb"も変更される: > :let aa = [1, 2, 3] :let bb = aa :call add(aa, 4) :echo bb < [1, 2, 3, 4] -Making a copy of a list is done with the |copy()| function. Using [:] also -works, as explained above. This creates a shallow copy of the list: Changing -a list item in the list will also change the item in the copied list: > +リストのコピーを作るには関数|copy()|を使う。前述の通り[:]を使ってもできる。こ +れは浅いコピーである。つまりリストの要素であるリストに変更を加えると、コピーさ +れたリスト内の同じ要素も変更される: > :let aa = [[1, 'a'], 2, 3] :let bb = copy(aa) :call add(aa, 4) @@ -232,12 +229,11 @@ a list item in the list will also change the item in the copied list: > :echo bb < [[1, aaa], 2, 3] -To make a completely independent list use |deepcopy()|. This also makes a -copy of the values in the list, recursively. Up to a hundred levels deep. +完全に独立したコピーを作るには|deepcopy()|を使う。これは再帰的にリストの要素の +コピーを作る。ただし深さは100レベルまでである。 -The operator "is" can be used to check if two variables refer to the same -List. "isnot" does the opposite. In contrast "==" compares if two lists have -the same value. > +2つの変数が同じリストを指しているかは演算子"is"で判定できる。"isnot"はその逆で +ある。一方、"=="は2つのリストが同じ値を持っているかを判定する。 > :let alist = [1, 2, 3] :let blist = [1, 2, 3] :echo alist is blist @@ -245,18 +241,17 @@ the same value. > :echo alist == blist < 1 -Note about comparing lists: Two lists are considered equal if they have the -same length and all items compare equal, as with using "==". There is one -exception: When comparing a number with a string they are considered -different. There is no automatic type conversion, as with using "==" on -variables. Example: > +Note リストの比較について注意: 2つのリストは、同じ長さを持ち、全要素が"=="の意 +味で等しいとき、等しいとみなされる。ただ、1つ例外がある: 数値と文字列を比較す +るとそれらは異なるとみなされる。変数に対して"=="で比較したときに行われるような +自動的な型変換は行われない。例: > echo 4 == "4" < 1 > echo [4] == ["4"] < 0 -Thus comparing Lists is more strict than comparing numbers and strings. You -can compare simple values this way too by putting them in a string: > +つまり、リストの比較は数値や文字列の比較よりも厳格である。単純な値もリストに入 +れることによりこの方法で比較することができる: > :let a = 5 :let b = "5" @@ -266,63 +261,61 @@ can compare simple values this way too by putting them in a string: > < 0 -List unpack ~ +リストのアンパック ~ -To unpack the items in a list to individual variables, put the variables in -square brackets, like list items: > +リストの要素を個々の変数としてアンパックするには、[]の中に変数を書く: > :let [var1, var2] = mylist -When the number of variables does not match the number of items in the list -this produces an error. To handle any extra items from the list append ";" -and a variable name: > +変数の個数とリストの要素数が一致しないときはエラーになる。リストにある余分な要 +素をまとめて受け取るには、";"と受け取る変数名を書いておく: > :let [var1, var2; rest] = mylist -This works like: > +上の例は次とほぼ同じである: > :let var1 = mylist[0] :let var2 = mylist[1] :let rest = mylist[2:] -Except that there is no error if there are only two items. "rest" will be an -empty list then. +ただし、要素が2つしかないときエラーにならないところが異なる。"rest"は空リスト +になる。 +訳注: どちらの場合もエラーにはならないようだ。 -List modification ~ +リストの変更 ~ *list-modification* -To change a specific item of a list use |:let| this way: > +リストの中の特定の要素を変更するには次のように|:let|を使う: > :let list[4] = "four" :let listlist[0][3] = item -To change part of a list you can specify the first and last item to be -modified. The value must at least have the number of items in the range: > +始点と終点を指定してリストの一部分を変更することができる。代入する値は、少なく +とも削除する範囲の要素数と同じ数だけ必要である: > :let list[3:5] = [3, 4, 5] -Adding and removing items from a list is done with functions. Here are a few -examples: > - :call insert(list, 'a') " prepend item 'a' - :call insert(list, 'a', 3) " insert item 'a' before list[3] - :call add(list, "new") " append String item - :call add(list, [1, 2]) " append a List as one new item - :call extend(list, [1, 2]) " extend the list with two more items - :let i = remove(list, 3) " remove item 3 - :unlet list[3] " idem - :let l = remove(list, 3, -1) " remove items 3 to last item - :unlet list[3 : ] " idem - :call filter(list, 'v:val !~ "x"') " remove items with an 'x' +リストに要素を追加したり削除するには関数を使う。いくつか例を示す: > + :call insert(list, 'a') " 先頭に要素'a'を挿入する + :call insert(list, 'a', 3) " 要素'a'をlist[3]の前に挿入する + :call add(list, "new") " 文字列の要素を最後に追加する + :call add(list, [1, 2]) " 1個の要素としてリストをを追加する + :call extend(list, [1, 2]) " 2個の要素からなるリストを連結する + :let i = remove(list, 3) " 要素3を削除する + :unlet list[3] " 同上 + :let l = remove(list, 3, -1) " 要素3から最後までを削除する + :unlet list[3 : ] " 同上 + :call filter(list, 'v:val !~ "x"') " 要素'x'を削除 -Changing the order of items in a list: > - :call sort(list) " sort a list alphabetically - :call reverse(list) " reverse the order of items +要素の順番を変更する: > + :call sort(list) " リストをアルファベット順にソート + :call reverse(list) " 要素の順序を反転させる -For loop ~ +for ループ ~ -The |:for| loop executes commands for each item in a list. A variable is set -to each item in the list in sequence. Example: > +|:for|ループは、1つの変数に対してリストの各要素を順番に代入し、コマンドを実行 +していく。例: > :for item in mylist : call Doit(item) :endfor -This works like: > +上の例は次と同じ: > :let index = 0 :while index < len(mylist) : let item = mylist[index] @@ -330,23 +323,22 @@ This works like: > : let index = index + 1 :endwhile -Note that all items in the list should be of the same type, otherwise this -results in error |E706|. To avoid this |:unlet| the variable at the end of -the loop. +Note リストの全要素が同じ型でなければならない。そうでないとエラー|E706|にな +る。ループの最後でループ変数を|:unlet|すれば、異なる型でも扱える。 -If all you want to do is modify each item in the list then the |map()| -function will be a simpler method than a for loop. +やりたいことがリストの各要素を変更するだけなら、forループを使うより関数|map()| +を使った方がよりシンプルになる。 -Just like the |:let| command, |:for| also accepts a list of variables. This -requires the argument to be a list of lists. > +|:let|コマンドと同じように、|:for|は変数のリストをループ変数にすることができる。 +この場合、引数はリストのリストでなければならない。 > :for [lnum, col] in [[1, 3], [2, 8], [3, 0]] : call Doit(lnum, col) :endfor -This works like a |:let| command is done for each list item. Again, the types -must remain the same to avoid an error. +これはリストの各要素に対して|:let|コマンドを実行するかのように実行される。また +この場合も引数の型は全て同じでないとエラーになる。 -It is also possible to put remaining items in a List variable: > +引数の残りを1個のリスト変数に代入することもできる: > :for [i, j; rest] in listlist : call Doit(i, j) : if !empty(rest) @@ -355,184 +347,179 @@ It is also possible to put remaining items in a List variable: > :endfor -List functions ~ +リスト操作関数 ~ *E714* -Functions that are useful with a List: > - :let r = call(funcname, list) " call a function with an argument list - :if empty(list) " check if list is empty - :let l = len(list) " number of items in list - :let big = max(list) " maximum value in list - :let small = min(list) " minimum value in list - :let xs = count(list, 'x') " count nr of times 'x' appears in list - :let i = index(list, 'x') " index of first 'x' in list - :let lines = getline(1, 10) " get ten text lines from buffer - :call append('$', lines) " append text lines in buffer - :let list = split("a b c") " create list from items in a string - :let string = join(list, ', ') " create string from list items - :let s = string(list) " String representation of list - :call map(list, '">> " . v:val') " prepend ">> " to each item - -Don't forget that a combination of features can make things simple. For -example, to add up all the numbers in a list: > +以下はリスト操作に使える関数である: > + :let r = call(funcname, list) " 引数リストをつけて関数を呼び出す + :if empty(list) " リストが空かどうか判定する + :let l = len(list) " リストの要素数 + :let big = max(list) " リスト中の最大値 + :let small = min(list) " リスト中の最小値 + :let xs = count(list, 'x') " 'x'の出現回数を数える + :let i = index(list, 'x') " 最初に'x'が現れる位置のインデックス + :let lines = getline(1, 10) " バッファから10行を取得 + :call append('$', lines) " バッファに行を追加する + :let list = split("a b c") " 文字列を分割してリストにする + :let string = join(list, ', ') " リストの要素を連結して文字列にする + :let s = string(list) " リストの文字列表現 + :call map(list, '">> " . v:val') " 各要素の前に">> "をつける + +機能を組み合わせると、処理を単純に記述できることを覚えておくとよい。例えば、リ +スト中の全ての数値の和を求める例: > :exe 'let sum = ' . join(nrlist, '+') -1.4 Dictionaries ~ +1.4 辞書 ~ *Dictionaries* *Dictionary* -A Dictionary is an associative array: Each entry has a key and a value. The -entry can be located with the key. The entries are stored without a specific -ordering. +辞書とは連想配列である。各要素はキーと値を持つ。要素はキーによって特定できる。 +要素は特に順序を持たずに保持される。 -Dictionary creation ~ +辞書の作成 ~ *E720* *E721* *E722* *E723* -A Dictionary is created with a comma separated list of entries in curly -braces. Each entry has a key and a value, separated by a colon. Each key can -only appear once. Examples: > +辞書を作るには、{}の中にコンマで区切って要素を書く。各要素のキーと値はコロンで +区切る。それぞれのキーは1度しか現れてはならない。例: > :let mydict = {1: 'one', 2: 'two', 3: 'three'} :let emptydict = {} < *E713* *E716* *E717* -A key is always a String. You can use a Number, it will be converted to a -String automatically. Thus the String '4' and the number 4 will find the same -entry. Note that the String '04' and the Number 04 are different, since the -Number will be converted to the String '4'. +キーは必ず文字列である。数値を使うこともできるが、自動的に文字列に変換される。 +よって文字列'4'のキーと数値4のキーは同一の要素を参照する。 +entry. Note 文字列'04'と数値04は異なることに注意。なぜなら数値04は文字列'4'に +変換されるからである。 -A value can be any expression. Using a Dictionary for a value creates a -nested Dictionary: > +値はどんな式でもよい。辞書を値にすると、ネストした辞書ができる: > :let nestdict = {1: {11: 'a', 12: 'b'}, 2: {21: 'c'}} -An extra comma after the last entry is ignored. +最後の要素の後に余分なコンマがあると無視される。 -Accessing entries ~ +要素にアクセスする ~ -The normal way to access an entry is by putting the key in square brackets: > +通常、要素にアクセスするには[]の中にキーを書く: > :let val = mydict["one"] :let mydict["four"] = 4 -You can add new entries to an existing Dictionary this way, unlike Lists. +また、この書き方で既存の辞書に要素を追加できる。この点はリストと異なる。 -For keys that consist entirely of letters, digits and underscore the following -form can be used |expr-entry|: > +キー名がアルファベット、数字、アンダースコアだけからなる場合は、以下の形式が使 +える|expr-entry|: > :let val = mydict.one :let mydict.four = 4 -Since an entry can be any type, also a List and a Dictionary, the indexing and -key lookup can be repeated: > +要素はリストや辞書を含むどんな型でもよいため、インデックス参照とキー参照を続け +て書くことができる: > :echo dict.key[idx].key -Dictionary to List conversion ~ +辞書からリストへの変換 ~ -You may want to loop over the entries in a dictionary. For this you need to -turn the Dictionary into a List and pass it to |:for|. +辞書の全要素に対してループを行いたい場合がある。そのためには辞書をリストに変換 +し、そのリストに対して|:for|ループを行う。 -Most often you want to loop over the keys, using the |keys()| function: > +多くの場合はキーに対してループを行う。これには関数|keys()|を使う: > :for key in keys(mydict) : echo key . ': ' . mydict[key] :endfor -The List of keys is unsorted. You may want to sort them first: > +このキーのリストはソートされていない。ソートさせるには関数|sort()|を使う: > :for key in sort(keys(mydict)) -To loop over the values use the |values()| function: > +値に対してループを行うには関数|values()|を使う: > :for v in values(mydict) : echo "value: " . v :endfor -If you want both the key and the value use the |items()| function. It returns -a List in which each item is a List with two items, the key and the value: > +キーと値両方を得るには関数|items()|を使う。この関数は、キーと値の2個の要素から +なるリストのリストを返す: > :for [key, value] in items(mydict) : echo key . ': ' . value :endfor -Dictionary identity ~ +辞書の同一性 ~ *dict-identity* -Just like Lists you need to use |copy()| and |deepcopy()| to make a copy of a -Dictionary. Otherwise, assignment results in referring to the same -Dictionary: > +ここまで +辞書のコピーを作るにはリストと同様に|copy()|と|deepcopy()|を使う必要がある。そ +うでなく代入を行うと同一の辞書を参照するようになる: > :let onedict = {'a': 1, 'b': 2} :let adict = onedict :let adict['a'] = 11 :echo onedict['a'] 11 -Two Dictionaries compare equal if all the key-value pairs compare equal. For -more info see |list-identity|. +2つの辞書は、全てのキー・値のペアが等しいとき等しいとみなされる。より詳しくは +|list-identity|を参照。 -Dictionary modification ~ +辞書の変更 ~ *dict-modification* -To change an already existing entry of a Dictionary, or to add a new entry, -use |:let| this way: > +辞書の要素を変更したり、新しい要素を追加するには|:let|を使う: > :let dict[4] = "four" :let dict['one'] = item -Removing an entry from a Dictionary is done with |remove()| or |:unlet|. -Three ways to remove the entry with key "aaa" from dict: > +辞書から要素を取り除くには|remove()|か|:unlet|を使う。以下のように辞書からキー +"aaa"を取り除くには3つの方法がある: > :let i = remove(dict, 'aaa') :unlet dict.aaa :unlet dict['aaa'] -Merging a Dictionary with another is done with |extend()|: > +2つの辞書を併合させるには|extend()|を使う: > :call extend(adict, bdict) -This extends adict with all entries from bdict. Duplicate keys cause entries -in adict to be overwritten. An optional third argument can change this. -Note that the order of entries in a Dictionary is irrelevant, thus don't -expect ":echo adict" to show the items from bdict after the older entries in -adict. +上のコマンドはbdictの全ての要素をadictに追加する。キーが重複した要素はbdictの +要素により上書きされる。この動作は3番目の引数により変更できる。 +Note 辞書の要素間に順序は定まっていない。そのため":echo adict"としたとき、もと +もとadictにあった要素が先に、bdictから追加された要素が後に表示されると考えては +ならない。 -Weeding out entries from a Dictionary can be done with |filter()|: > +辞書から条件を指定して要素を取り除くには|filter()|が使える: > :call filter(dict, 'v:val =~ "x"') -This removes all entries from "dict" with a value not matching 'x'. +このコマンドは"dict"から'x'にマッチしない要素を全て取り除く。 -Dictionary function ~ +関数を辞書に入れる ~ *Dictionary-function* *self* *E725* -When a function is defined with the "dict" attribute it can be used in a -special way with a dictionary. Example: > +関数が"dict"属性つきで定義されると、特殊な方法で呼び出すことができる。例: > :function Mylen() dict : return len(self.data) :endfunction :let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")} :echo mydict.len() -This is like a method in object oriented programming. The entry in the -Dictionary is a |Funcref|. The local variable "self" refers to the dictionary -the function was invoked from. - -It is also possible to add a function without the "dict" attribute as a -Funcref to a Dictionary, but the "self" variable is not available then. +これはオブジェクト指向プログラミングのメソッドに似ている。この辞書の要素は +|Funcref|である。暗黙に定義されるローカル変数"self"は、この関数を呼び出した辞 +書を参照している。 +"dict"属性をつけないでFuncrefを辞書に入れることもできる。しかしその場合、変数 +"self"は定義されない。 +ここまで *numbered-function* *anonymous-function* -To avoid the extra name for the function it can be defined and directly -assigned to a Dictionary in this way: > +関数に名前をつける必要をなくすために、関数を定義して直接辞書に代入することがで +きる: > :let mydict = {'data': [0, 1, 2, 3]} :function mydict.len() dict : return len(self.data) :endfunction :echo mydict.len() -The function will then get a number and the value of dict.len is a |Funcref| -that references this function. The function can only be used through a -|Funcref|. It will automatically be deleted when there is no |Funcref| -remaining that refers to it. +こうすると関数に番号がふられ、dict.lenがこの関数を参照する|Funcref|となる。こ +の関数は|Funcref|を通してのみ呼び出せる。参照している|Funcref|がなくなると、こ +の関数は自動的に削除される。 -It is not necessary to use the "dict" attribute for a numbered function. +番号つき関数に必ずしも"dict"属性は必要ではない。 +訳注: It is not necessary to use the "dict" attribute for a numbered function. -Functions for Dictionaries ~ +辞書操作関数 ~ *E715* -Functions that can be used with a Dictionary: > - :if has_key(dict, 'foo') " TRUE if dict has entry with key "foo" - :if empty(dict) " TRUE if dict is empty - :let l = len(dict) " number of items in dict - :let big = max(dict) " maximum value in dict - :let small = min(dict) " minimum value in dict - :let xs = count(dict, 'x') " count nr of times 'x' appears in dict - :let s = string(dict) " String representation of dict - :call map(dict, '">> " . v:val') " prepend ">> " to each item +以下は辞書操作に使える関数である: > + :if has_key(dict, 'foo') " 辞書がキー"foo"の要素を持つなら真 + :if empty(dict) " 辞書が空なら真 + :let l = len(dict) " 辞書の要素数 + :let big = max(dict) " 辞書中の最大値 + :let small = min(dict) " 辞書中の最小値 + :let xs = count(dict, 'x') " 'x'の出現回数を数える + :let s = string(dict) " 辞書の文字列表現 + :call map(dict, '">> " . v:val') " 各要素の前に">> "をつける 1.5 変数について補足 ~ @@ -1772,40 +1759,45 @@ writefile({list}, {fname} [, {binary}]) add({list}, {expr}) *add()* - Append the item {expr} to |List| {list}. Returns the - resulting |List|. Examples: > + リスト|List|{list}の末尾に要素{expr}を追加する。結果のリストを + 返す。例: > :let alist = add([1, 2, 3], item) :call add(mylist, "woodstock") -< Note that when {expr} is a |List| it is appended as a single - item. Use |extend()| to concatenate |Lists|. - Use |insert()| to add an item at another position. +< Note {expr}がリストのときは、1個の要素として追加される。リスト + を連結するには|extend()|を使う。 + 他の位置に要素を追加するには|insert()|を使う。 append({lnum}, {expr}) *append()* - When {expr} is a |List|: Append each item of the |List| as a - text line below line {lnum} in the current buffer. - Otherwise append {expr} as one text line below line {lnum} in - the current buffer. - {lnum} can be zero to insert a line before the first one. - Returns 1 for failure ({lnum} out of range or out of memory), - 0 for success. Example: > + {expr}がリスト|List|のときは、各要素をカレントバッファの{lnum} + 行目以降にテキストとして追加する。 + リストでないときは、{expr}をテキストとしてカレントバッファの{lnum} + 行目以降にテキストとして追加する。 + {lnum}は0でもよく、その場合は1行目の前に行を挿入する。 + 失敗した場合は0を返す({lnum}が不正な範囲であるか、メモリ不足)。 + 成功なら0を返す。例: > :let failed = append(line('$'), "# THE END") :let failed = append(0, ["Chapter 1", "the beginning"]) - +< *argc()* -argc() 結果は引数のリスト内の、ファイルの数。|arglist|を参照。 +argc() カレントウィンドウの引数リスト内の、ファイルの数を返す。 + |arglist|を参照。 + + *argidx()* +argidx() 引数リスト内の現在のインデックスを返す。最初のファイルは0とな + る。argc() - 1が最後のファイルとなる。|arglist|を参照。 *argv()* argv([{nr}]) 結果は引数リスト内の、{nr}番目のファイル。|arglist|を参照。 - "argv(0)"は一番最初のファイルを示す。例: -> let i = 0 -> while i < argc() -> let f = substitute(argv(i), '\([. ]\)', '\\&', 'g') -> exe 'amenu Arg.' . f . ' :e ' . f . '' -> let i = i + 1 -> endwhile -< Without the {nr} argument a |List| with the whole |arglist| is - returned. + "argv(0)"は一番最初のファイルを示す。例: > + :let i = 0 + :while i < argc() + : let f = escape(argv(i), '. ') + : exe 'amenu Arg.' . f . ' :e ' . f . '' + : let i = i + 1 + :endwhile +< 引数{nr}が指定されなかった場合は、引数リスト|arglist|全体を + 返す。 *browse()* browse({save}, {title}, {initdir}, {default}) @@ -2247,10 +2239,10 @@ eval({string}) Evaluate {string} and return the result. Especially useful to Also works for |Funcref|s that refer to existing functions. eventhandler() *eventhandler()* - Returns 1 when inside an event handler. That is that Vim got - interrupted while waiting for the user to type a character, - e.g., when dropping a file on Vim. This means interactive - commands cannot be used. Otherwise zero is returned. + イベントハンドラの中では1を返す。つまり、ユーザの文字入力を待っ + ている間に、ファイルをドラッグ&ドロップするなど割り込みされた + ことを表す。このときは対話的なコマンドは使えない。イベントハン + ドラの中でないときは0を返す。 executable({expr}) *executable()* This function checks if an executable with the name {expr} @@ -2587,13 +2579,13 @@ foldtextresult({lnum}) *foldtextresult()* {not available when compiled without the |+folding| feature} *foreground()* -foreground() Move the Vim window to the foreground. Useful when sent from - a client to a Vim server. |remote_send()| - On Win32 systems this might not work, the OS does not always - allow a window to bring itself to the foreground. Use - |remote_foreground()| instead. - {only in the Win32, Athena, Motif and GTK GUI versions and the - Win32 console version} +foreground() Vimのウィンドウを前面に移動する。この関数はクライアントからVim + サーバへ送ると便利である。|remote_send()| + Win32では自分自身のウィンドウを前面に持ってくることが必ずしも + 許可されていないので、動作しないかもしれない。そのときは代わり + に|remote_foreground()|を使うこと。 + {Win32, Athena, Motif, GTKいずれかのGUI版とWin32コンソール版で + のみ利用できる} function({name}) *function()* *E700* @@ -2714,19 +2706,17 @@ getchar([expr]) *getchar()* :endfunction getcharmod() *getcharmod()* - The result is a Number which is the state of the modifiers for - the last obtained character with getchar() or in another way. - These values are added together: + 最後にgetchar()などで得た文字に対する修飾キーの状態を表す数値 + を返す。以下の値の和となる: 2 shift 4 control 8 alt (meta) - 16 mouse double click - 32 mouse triple click - 64 mouse quadruple click - 128 Macintosh only: command - Only the modifiers that have not been included in the - character itself are obtained. Thus Shift-a results in "A" - with no modifier. + 16 マウスダブルクリック + 32 マウストリプルクリック + 64 マウスクアドラプルクリック + 128 Macintoshのみで: command + 文字自身に含まれていない修飾キーのみ取得できる。つまり、 + Shift-aは修飾キーなしの"A"となる。 getcmdline() *getcmdline()* Return the current command-line. Only works when the command From 979bb18f233af84a6e830d1f0a0236a3e20bf4b2 Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro Date: Fri, 13 Jul 2007 15:11:21 +0000 Subject: [PATCH 108/783] fix: eval.jax: translated from add() to matchend() fix: options.jax: updated a type fix fix: map.jax: unified translation of "operator-pending mode" git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@108 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/eval.jax | 2108 ++++++++++++++++++++++++------------------------ ja/map.jax | 6 +- ja/options.jax | 5 +- 3 files changed, 1067 insertions(+), 1052 deletions(-) diff --git a/ja/eval.jax b/ja/eval.jax index 2ad22ac92..83f751e82 100644 --- a/ja/eval.jax +++ b/ja/eval.jax @@ -438,7 +438,6 @@ entry. Note 文字列'04'と数値04は異なることに注意。なぜなら 辞書の同一性 ~ *dict-identity* -ここまで 辞書のコピーを作るにはリストと同様に|copy()|と|deepcopy()|を使う必要がある。そ うでなく代入を行うと同一の辞書を参照するようになる: > :let onedict = {'a': 1, 'b': 2} @@ -491,7 +490,7 @@ Note 辞書の要素間に順序は定まっていない。そのため":echo ad "dict"属性をつけないでFuncrefを辞書に入れることもできる。しかしその場合、変数 "self"は定義されない。 -ここまで + *numbered-function* *anonymous-function* 関数に名前をつける必要をなくすために、関数を定義して直接辞書に代入することがで きる: > @@ -1801,8 +1800,8 @@ argv([{nr}]) 結果は引数リスト内の、{nr}番目のファイル。|argli *browse()* browse({save}, {title}, {initdir}, {default}) - ファイル選択ダイアログを起動。これは"has("browser")"が、非零を - 返す時(幾つかのGUIバージョンに限定)にだけ働く。 + ファイル選択ダイアログを起動。"has("browser")"が非零を返すとき + (幾つかのGUIバージョンに限定)だけ利用可能。 入力フィールドの意味は: {save} 非零ならば書込み用ファイルの選択 {title} ダイアログのタイトル @@ -1813,34 +1812,31 @@ browse({save}, {title}, {initdir}, {default}) *browsedir()* browsedir({title}, {initdir}) - Put up a directory requester. This only works when - "has("browse")" returns non-zero (only in some GUI versions). - On systems where a directory browser is not supported a file - browser is used. In that case: select a file in the directory - to be used. - The input fields are: - {title} title for the requester - {initdir} directory to start browsing in - When the "Cancel" button is hit, something went wrong, or - browsing is not possible, an empty string is returned. + ディレクトリ選択ダイアログを起動。"has("browse")"が非零を返す + とき(幾つかのGUIバージョンに限定)だけ利用可能。 + ディレクトリ選択ダイアログがないシステムにおいてはファイル選択 + ダイアログが使われる。その場合は、指定したいディレクトリの中の + ファイルを選択すること。 + 入力フィールドの意味は: + {title} ダイアログのタイトル + {initdir} ダイアログの始まるディレクトリ + ダイアログがキャンセルされるか、何かエラーがあるか、もしくはブ + ラウジングが不可能ならば、空文字列が戻ってくる。 *bufexists()* bufexists({expr}) 結果は数値で、{expr}と呼ばれるバッファが存在すれば非零となる。 - If the {expr} argument is a number, buffer numbers are used. - {expr}が文字列だった場合、バッファ名に正確にマッチしなければな - らない。The name can be: - - Relative to the current directory. - - A full path. - - The name of a buffer with 'filetype' set to "nofile". - - A URL name. - Unlisted buffers will be found. - Note that help files are listed by their short name in the - output of |:buffers|, but bufexists() requires using their - long name to be able to find them. - Use "bufexists(0)" to test for the existence of an alternate - file name. - + {expr}が数値の場合、バッファ番号とみなされる。 + {expr}が文字列の場合、バッファ名に正確にマッチしなければな + らない。名前として以下のものが許される: + - カレントディレクトリからの相対パス。 + - フルパス。 + - 'buftype'が"nofile"であるバッファの名前 + - URL名。 + バッファリストにないバッファも検索される。 + Note |:buffers|の出力で、ヘルプファイルは短い名前でリストされ + ているが、bufexists()は長い名前でないと見つけることができない。 + 代替ファイル名が存在するかを判定するには"bufexists(0)"を使う。 *buffer_exists()* 以前の名前: buffer_exists(). @@ -1856,44 +1852,45 @@ bufname({expr}) 戻り値はバッファの名前。バッファ名はコマンド":ls"で表示される ものと同様。 {expr}が数値ならば、その番号のバッファ名が返される。0は現在の - ウィンドウの裏バッファを意味する。{expr}が文字列ならば、バッ - ファ名に対して正規表現マッチングを行なうパターンとなる。この - マッチングは常に、'magic'をセットし'cpoptions'を空にした状態で - 行なわれる。複数マッチしてしまった場合には空文字列が返される。 - ""や"%"は現在のバッファを意味し、"#"は裏バッファを意味する。 - A full match is preferred, otherwise a match at the start, end - or middle of the buffer name is accepted. If you only want a - full match then put "^" at the start and "$" at the end of the - pattern. - Listed buffers are found first. If there is a single match - with a listed buffer, that one is returned. Next unlisted - buffers are searched for. + ウィンドウの裏バッファを意味する。{expr}が文字列ならば、バッファ + 名に対してファイル名マッチング|file-pattern|を行なうパターンと + なる。このマッチングは常に、'magic'をセットし'cpoptions'を空に + した状態で行なわれる。複数マッチしてしまった場合には空文字列が + 返される。""や"%"は現在のバッファを意味し、"#"は裏バッファを意 + 味する。 + 完全マッチのものが優先され、完全マッチがなければ、バッファ名の + 先頭でのマッチ、末尾でのマッチ、中間でのマッチが探される。完全 + マッチのみを探すには、パターン先頭に"^"を、末尾に"$"をつける。 + まずバッファリストにあるバッファが探される。そこで1個だけマッ + チが見つかればそれを返す。次にバッファリストにないものが探され + る。 {expr}が文字列のときに、それをバッファ番号として使いたいなら - ば、0を足すことによって強制的に数値にすることができる: -> echo bufname("3" + 0) - バッファが存在しないか名前を持っていない場合には、空文字列が返 - される。 -> bufname("#") alternate buffer name -> bufname(3) name of buffer 3 -> bufname("%") name of current buffer -> bufname("file2") name of buffer where "file2" matches. - *buffer_name()* + ば、0を足すことによって強制的に数値にすることができる: > + echo bufname("3" + 0) +< バッファが存在しないか名前を持っていない場合には、空文字列が返 + される。 > + bufname("#") alternate buffer name + bufname(3) name of buffer 3 + bufname("%") name of current buffer + bufname("file2") name of buffer where "file2" matches. +< *buffer_name()* 以前の名前: buffer_name(). *bufnr()* bufnr({expr} [, {create}]) 結果はバッファの番号。バッファ番号はコマンド":ls"で表示される ものと同様。{expr}の使い方は前述のbufname()を参照。バッファが - 存在しない場合-1が返される。 Or, if the - {create} argument is present and not zero, a new, unlisted, - buffer is created and its number is returned. - bufnr("$")は最後のバッファを意味する: -> :let last_buffer = bufnr("$") - 結果は存在しているバッファのうちで、もっとも大きなバッファ番号 + 存在しない場合-1が返される。ただし、{create}が与えられて0でな + いときは、バッファリストに載せない新しいバッファを作成しその番 + 号を返す。 + bufnr("$")は最後のバッファを意味する: > + :let last_buffer = bufnr("$") +< 結果は存在しているバッファのうちで、もっとも大きなバッファ番号 となる。 Note そのバッファ番号より小さいバッファ番号を持つ(ハ ズの)バッファが、必ずしも総て存在するとは限らない。なぜなら - ":bdel"がバッファを消すことができるからだ。バッファが存在する - かテストするにはbufexists()を使う。 + ":bwipeout"がバッファを消すことができるからだ。バッファが存在 + するかテストするにはbufexists()を使う。 + *buffer_number()* 以前の名前: buffer_number(). *last_buffer_nr()* bufnr("$")の以前の名前: last_buffer_nr(). @@ -1901,150 +1898,134 @@ bufnr({expr} [, {create}]) *bufwinnr()* bufwinnr({expr}) 結果は数値で、バッファ{expr}に関連付けられた最初のウィンドウの - 番号。{expr}の使い方は前述のbufname()を参照。バッファ{expr}が - 存在しないか、ウィンドウが無い場合には-1が返される。例: > + 番号。{expr}の使い方は前述の|bufname()|を参照。バッファ{expr} + が存在しないか、ウィンドウが無い場合には-1を返す。例: > echo "A window containing buffer 1 is " . (bufwinnr(1)) -< The number can be used with |CTRL-W_w| and ":wincmd w" - |:wincmd|. - Only deals with the current tab page. +< この番号は|CTRL-W_w|や":wincmd w"|:wincmd|で使える。 + カレントタブページ内のウィンドウだけを探す。 *byte2line()* byte2line({byte}) - 現在のバッファの先頭から{byte}番目のキャラクタが、何行目に含ま - れるかを返す。これには現在のバッファの'fileformat'に依存した、 - 改行文字も含まれる。先頭の文字にはバイトカウント1が与えられ - る。 + カレントバッファの先頭から{byte}番目の文字が、何行目に含まれる + かを返す。これにはカレントバッファの'fileformat'に依存した、改 + 行文字も含まれる。先頭の文字にはバイトカウント1が与えられる。 |line2byte()|と|go|と|:goto|も参照。 - {|+byte_offset|機能を有効にしてコンパイルしなければ利用できな - い} + {|+byte_offset|機能付きでコンパイルされたときのみ有効} byteidx({expr}, {nr}) *byteidx()* - Return byte index of the {nr}'th character in the string - {expr}. Use zero for the first character, it returns zero. - This function is only useful when there are multibyte - characters, otherwise the returned value is equal to {nr}. - Composing characters are counted as a separate character. - Example : > + 文字列{expr}の{nr}番目の文字のバイトインデックスを返す。 + 最初の文字の{nr}は0であり、戻り値は0となる。この関数はマルチバ + イト文字が存在するときのみ有用であり、そうでなければこの関数が + 返す値は{nr}に等しい。合成文字は別々の文字と数えられる。 + 例 : > echo matchstr(str, ".", byteidx(str, 3)) -< will display the fourth character. Another way to do the - same: > +< は4文字目を表示する。次も同じことをする: > let s = strpart(str, byteidx(str, 3)) echo strpart(s, 0, byteidx(s, 1)) -< If there are less than {nr} characters -1 is returned. - If there are exactly {nr} characters the length of the string - is returned. +< {expr}が{nr}文字以下の場合は-1を返す。 + {expr}がちょうど{nr}文字の場合は文字列の長さ(バイト単位)を返す。 call({func}, {arglist} [, {dict}]) *call()* *E699* - Call function {func} with the items in |List| {arglist} as - arguments. - {func} can either be a |Funcref| or the name of a function. - a:firstline and a:lastline are set to the cursor line. - Returns the return value of the called function. - {dict} is for functions with the "dict" attribute. It will be - used to set the local variable "self". |Dictionary-function| + リスト|List|{arglist}の要素を引数として関数{func}を呼ぶ。 + {func}は|Funcref|でも関数の名前でもよい。 + a:firstlineとa:lastlineにはカレント行が代入される。 + 呼び出した関数の戻り値を返す。 + {dict}は"dict"属性つきの関数用で、これがローカル変数"self"に代 + 入される。|Dictionary-function|を参照。 changenr() *changenr()* - Return the number of the most recent change. This is the same - number as what is displayed with |:undolist| and can be used - with the |:undo| command. - When a change was made it is the number of that change. After - redo it is the number of the redone change. After undo it is - one less than the number of the undone change. + 最も最近の変更の番号を返す。|:undolist|で表示される番号と同じ + であり、|:undo|コマンドの引数として使うことができる。 + 変更を行った直後ではその変更の番号となる。redoを行った直後は + redoされた変更の番号となる。undoを行った直後はundoされた変更よ + り1小さい番号になる。 *char2nr()* char2nr({expr}) - {expr}の最初の文字のASCIIコードを返す。例: -> char2nr(" ") returns 32 -> char2nr("ABC") returns 65 -< The current 'encoding' is used. Example for "utf-8": > - char2nr("á") returns 225 - char2nr("á"[0]) returns 195 -< nr2char() does the opposite. + {expr}の最初の文字のASCIIコードを返す。例: > + char2nr(" ") returns 32 + char2nr("ABC") returns 65 +< 現在の'encoding'の値が適用される。"utf-8"のときの例: > + char2nr("á") returns 225 + char2nr("á"[0]) returns 195 +< nr2char()はこの逆を行う。 cindent({lnum}) *cindent()* - Get the amount of indent for line {lnum} according the C - indenting rules, as with 'cindent'. - The indent is counted in spaces, the value of 'tabstop' is - relevant. {lnum} is used just like in |getline()|. - When {lnum} is invalid or Vim was not compiled the |+cindent| - feature, -1 is returned. - See |C-indenting|. + 'cindent'で使われるのと同じC言語用のインデント規則に従った場合 + の{lnum}行目のインデント量を返す。 + インデント量はスペースで数えられ、'tabstop'の値は関係ない。 + {lnum}は|getline()|の場合と同様に扱われる。 + {lnum}が無効な値のときや|+cindent|機能なしでコンパイルされてい + るときは-1を返す。 + |C-indenting|を参照。 *col()* col({expr}) - 戻り値は数値で、{expr}で与えられるファイル上でのカラム番号。有 - 効な位置は: + 戻り値は数値で、{expr}で与えられる位置の桁番号(バイトインデッ + クス)。有効な位置は: . 現在の位置 - $ the end of the cursor line (the result is the - number of characters in the cursor line plus one) + $ カレント行の末尾(カレント行のバイト数+1を返す) 'x マークxの位置(マークが設定されていない場合0) - To get the line number use |line()|. To get both use - |getpos()|. - For the screen column position use |virtcol()|. + 行番号を取得するには|line()|を使う。行番号と桁番号両方を取得す + るには|getpos()|を使う。 + 画面上の桁番号を取得するには|virtcol()|を使う。 Note 現在のファイルのマークしか使えないことに注意。 - 例: -> col(".") カーソルのカラム - col("$") length of cursor line plus one -> col("'t") マークtのカラム -> col("'" . markname) マークmarknameのカラム - 先頭のカラムは1になる。返された0はエラーを示す。 - For an uppercase mark the column may actually be in another - buffer. - For the cursor position, when 'virtualedit' is active, the - column is one higher if the cursor is after the end of the - line. This can be used to obtain the column in Insert mode: > + 例: > + col(".") カーソルの桁 + col("$") カレント行の長さ+1 + col("'t") マークtの桁 + col("'" . markname) マークmarknameの桁 +< 先頭の桁は1になる。戻り値0はエラーを意味する。 + 大文字のマークは他のバッファを指しているかもしれない。 + 'virtualedit'が有効なとき、カーソルが行末を越えていると、桁番 + 号は行の長さより1大きい値を返す。インサートモードで桁番号を取 + 得するには次のマップが使える: > :imap :let save_ve = &ve \:set ve=all \:echo col(".") . "\n" \let &ve = save_ve < complete({startcol}, {matches}) *complete()* *E785* - Set the matches for Insert mode completion. - Can only be used in Insert mode. You need to use a mapping - with CTRL-R = |i_CTRL-R|. It does not work after CTRL-O or - with an expression mapping. - {startcol} is the byte offset in the line where the completed - text start. The text up to the cursor is the original text - that will be replaced by the matches. Use col('.') for an - empty string. "col('.') - 1" will replace one character by a - match. - {matches} must be a |List|. Each |List| item is one match. - See |complete-items| for the kind of items that are possible. - Note that the after calling this function you need to avoid - inserting anything that would completion to stop. - The match can be selected with CTRL-N and CTRL-P as usual with - Insert mode completion. The popup menu will appear if - specified, see |ins-completion-menu|. - Example: > + インサートモード補完の候補を設定する。 + インサートモードでのみ使用できる。CTRL-R = |i_CTRL-R|と組み合 + わせてマッピングを作る必要がある。CTRL-Oの後や、マッピン + グの中では正しく動作しない。 + {startcol}は補完すべき単語の開始位置を示す、行内のバイトオフセッ + トである。その位置からカーソルまでのテキストが補完すべき単語と + なる。 + {matches}はリスト|List|でなければならない。リストの各要素が1つ + の候補となる。この要素として許される値については + |complete-items|を参照。 + Note この関数を呼んだ後は補完を停止させるようなテキストの挿入 + をしないように注意しなければならない。 + この関数で設定した候補は普通のインサートモード補完と同じ様に + CTRL-NとCTRL-Pで選択できる。設定されていればポップアップメニュー + が表示される。|ins-completion-menu|を参照。 + 例: > inoremap =ListMonths() - func! ListMonths() call complete(col('.'), ['January', 'February', 'March', \ 'April', 'May', 'June', 'July', 'August', 'September', \ 'October', 'November', 'December']) return '' endfunc -< This isn't very useful, but it shows how it works. Note that - an empty string is returned to avoid a zero being inserted. +< この例はそれほど役には立たないが、使い方を示している。Note 0が + 挿入されてしまわないように空文字列を返していることに注意。 complete_add({expr}) *complete_add()* - Add {expr} to the list of matches. Only to be used by the - function specified with the 'completefunc' option. - Returns 0 for failure (empty string or out of memory), - 1 when the match was added, 2 when the match was already in - the list. - See |complete-functions| for an explanation of {expr}. It is - the same as one item in the list that 'omnifunc' would return. + 候補のリストに{expr}を追加する。'completefunc'で指定された関数 + の中でのみ使われる。 + 失敗したときは0を返す(空文字列かメモリ不足)。候補が追加された + ときは1を返し、その候補が既にリストに存在するときは2を返す。 + {expr}の説明については|complete-functions|を参照。'omnifunc'が + 返すリストと同じである。 complete_check() *complete_check()* - Check for a key typed while looking for completion matches. - This is to be used when looking for matches takes some time. - Returns non-zero when searching for matches is to be aborted, - zero otherwise. - Only to be used by the function specified with the - 'completefunc' option. - + 補完候補を探している間にキーがタイプされたかどうか確認する。補 + 完の検索に時間がかかる場合に使われる。候補の検索を中断しようと + しているときは0以外を返す。そうでないときは0を返す。 + 'completefunc'で指定された関数の中でのみ使われる。 *confirm()* confirm({msg}, {choices} [, {default} [, {type}]]) @@ -2053,22 +2034,24 @@ confirm({msg}, {choices} [, {default} [, {type}]]) Note: confirm()は、ダイアログサポートを有効にしてコンパイルし た時にだけ動作する。|+dialog_con|と|+dialog_gui|を参照。 ダイアログには{msg}に加えて{choices}の選択肢が表示される。 + {choices}が指定されない、または空の場合は選択肢"&OK"が表示され + る(使用している言語に翻訳される)。 {msg}は文字列で'\n'を改行として使用できる。幾つかのシステムで は、長すぎる行は自動的に折り返される。 {choices}は文字列で、個々の選択肢は'\n'によって区切られる。 - 例: -> confirm("Save changes?", "&Yes\n&No\n&Cancel") - '&'の後の文字は選択肢のショートカットキーになる。この場合 + 例: > + confirm("Save changes?", "&Yes\n&No\n&Cancel") +< '&'の後の文字は選択肢のショートカットキーになる。この場合 "Cancel"を選択するのに'c'をタイプすることができる。ショート - カットキーは最初の文字である必要は無い: -> confirm("file has been modified", "&Save\nSave &All") - コンソールでは、デフォルトのショートカットキーとして、各選択肢 + カットキーは最初の文字である必要は無い: > + confirm("file has been modified", "&Save\nSave &All") +< コンソールでは、デフォルトのショートカットキーとして、各選択肢 の最初の文字が使われる。 - オプションの引数{default}はキーを叩いた時に選択される選択 - 肢の番号を指定する。最初の選択肢をデフォルトにするならば1を使 - 用する。デフォルトを設定したくないのならば0を使用する。 + 省略可能な引数{default}はキーを叩いた時に選択される選択肢 + の番号を指定する。最初の選択肢をデフォルトにするならば1を使用 + する。デフォルトを設定したくないのならば0を使用する。 {default}を省略した場合、0が使用される。 - オプションの引数{type}はダイアログのタイプを与える。これは + 省略可能な引数{type}はダイアログの種類を指定する。これは Win32 GUI版でアイコンを指定するのに使う。"Error", "Question", "Info", "Warning", "Generic"のうちどれか一つを指定する。以上の うちの先頭の文字だけで指定できる。{type}が省略された場合、 @@ -2076,69 +2059,66 @@ confirm({msg}, {choices} [, {default} [, {type}]]) ユーザがやCTRL-Cや、その他の割りこみキーでダイアログを中 断した場合、confirm()は0を返す。 - 例: -> :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2) -> :if choice == 0 -> : echo "make up your mind!" -> :elseif choice == 3 -> : echo "tasteful" -> :else -> : echo "I prefer bananas myself." -> :endif - GUIのダイアログではボタンが使用される。ボタンの配置は + 例: > + :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2) + :if choice == 0 + : echo "make up your mind!" + :elseif choice == 3 + : echo "tasteful" + :else + : echo "I prefer bananas myself." + :endif +< GUIのダイアログではボタンが使用される。ボタンの配置は 'guioptions'の'v'フラグに依存する。もしも'v'フラグが含まれてい るのなら、ボタンは常に垂直に配置される。そうでなければ水平に配 置しようと試みられる。水平配置がうまくマッチしない場合は、垂直 配置が使われる。幾つかのシステムでは常に水平配置が使われる。 *copy()* -copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't - different from using {expr} directly. - When {expr} is a |List| a shallow copy is created. This means - that the original |List| can be changed without changing the - copy, and vise versa. But the items are identical, thus - changing an item changes the contents of both |Lists|. Also - see |deepcopy()|. +copy({expr}) {expr}のコピーを作る。数値と文字列の場合は、{expr}そのものとコ + ピーの間に違いはない。 + {expr}がリスト|List|の場合は浅いコピーを作る。つまり元のリスト + を変更してもコピーは変更されず、逆も同じである。しかし要素は共 + 通で、片方の要素に対し変更を加えると、もう一方の要素も変更され + る。|deepcopy()|も参照。 count({comp}, {expr} [, {ic} [, {start}]]) *count()* - Return the number of times an item with value {expr} appears - in |List| or |Dictionary| {comp}. - If {start} is given then start with the item with this index. - {start} can only be used with a |List|. - When {ic} is given and it's non-zero then case is ignored. + リスト|List|または辞書|Dictionary| {comp}の中に値{expr}が何回 + 現れるかを返す。 + {start}が指定されたときはそのインデックスの要素から検索を開始 + する。{start}は{comp}がリストの場合のみ使用できる。 + {ic}が指定され、0でない場合は大文字・小文字は区別されない。 *cscope_connection()* cscope_connection([{num} , {dbpath} [, {prepend}]]) - Checks for the existence of a |cscope| connection. If no - parameters are specified, then the function returns: - 0, if cscope was not available (not compiled in), or - if there are no cscope connections; - 1, if there is at least one cscope connection. + |cscope|接続が存在するかどうか判定する。引数が1個も指定されな + かった場合、戻り値は以下のようになる: + 0, cscopeが利用できない(コンパイル時に無効化されている) + またはcscope接続が存在しない場合 + 1, 1個以上のcscope接続が存在する場合 - If parameters are specified, then the value of {num} - determines how existence of a cscope connection is checked: + 引数が与えられた場合は次のようになる。{num}は、接続の存在を確 + 認する際のマッチング方法を指定する。 - {num} Description of existence check + {num} 存在確認の方法 ----- ------------------------------ - 0 Same as no parameters (e.g., "cscope_connection()"). - 1 Ignore {prepend}, and use partial string matches for - {dbpath}. - 2 Ignore {prepend}, and use exact string matches for - {dbpath}. - 3 Use {prepend}, use partial string matches for both - {dbpath} and {prepend}. - 4 Use {prepend}, use exact string matches for both - {dbpath} and {prepend}. + 0 引数なしの場合と同じ (例: "cscope_connection()"). + 1 {prepend}を無視し、{dbpath}に部分マッチを行う。 + 2 {prepend}を無視し、{dbpath}に部分マッチを行う。 + 3 {prepend}を使用し、{dbpath}と{prepend}に部分マッチを行 + う。 + 4 {prepend}を使用し、{dbpath}と{prepend}に完全マッチを行 + う。 - Note: All string comparisons are case sensitive! + Note: 以上のどの場合も文字列の比較は大文字・小文字を区別する。 - Examples. Suppose we had the following (from ":cs show"): > + 例: ":cs show"の表示が以下のようになったとする: > # pid database name prepend path 0 27664 cscope.out /usr/local < - Invocation Return Val ~ + 実行 戻り値 ~ ---------- ---------- > cscope_connection() 1 cscope_connection(1, "out") 1 @@ -2151,92 +2131,86 @@ cscope_connection([{num} , {dbpath} [, {prepend}]]) < cursor({lnum}, {col} [, {off}]) *cursor()* cursor({list}) - Positions the cursor at the column (byte count) {col} in the - line {lnum}. The first column is one. - When there is one argument {list} this is used as a |List| - with two or three items {lnum}, {col} and {off}. This is like - the return value of |getpos()|, but without the first item. - Does not change the jumplist. - If {lnum} is greater than the number of lines in the buffer, - the cursor will be positioned at the last line in the buffer. - If {lnum} is zero, the cursor will stay in the current line. - If {col} is greater than the number of bytes in the line, - the cursor will be positioned at the last character in the - line. - If {col} is zero, the cursor will stay in the current column. - When 'virtualedit' is used {off} specifies the offset in - screen columns from the start of the character. E.g., a - position within a or after the last character. - + {lnum}行目の{col}桁目(バイトで数える)にカーソルを移動させる。 + 桁番号{col}は1から始まる。 + 引数が1個の場合は、{lnum}, {col}, {off}からなる、2個または3個 + の要素を持つリスト|List|でなければならない。これは|getpos()|の + 戻り値と似ているが、1個目の要素がない点が異なる。 + この関数を呼んでもジャンプリストは変更されない。 + {lnum}がバッファの行数よりも大きい場合は、最後の行へ移動する。 + {lnum}が0の場合はカレント行に留まる。 + {col}がその行のバイト数より大きい場合は、その行の最後の文字へ + 移動する。 + {col}が0の場合は、カレント桁に留まる。 + 'virtualedit'が有効のとき、{off}は文字の先頭からの画面上のオフ + セットを指定する。例えば、の中の位置や最後の文字より後な + どへも移動できる。 deepcopy({expr}[, {noref}]) *deepcopy()* *E698* - Make a copy of {expr}. For Numbers and Strings this isn't - different from using {expr} directly. - When {expr} is a |List| a full copy is created. This means - that the original |List| can be changed without changing the - copy, and vise versa. When an item is a |List|, a copy for it - is made, recursively. Thus changing an item in the copy does - not change the contents of the original |List|. - When {noref} is omitted or zero a contained |List| or - |Dictionary| is only copied once. All references point to - this single copy. With {noref} set to 1 every occurrence of a - |List| or |Dictionary| results in a new copy. This also means - that a cyclic reference causes deepcopy() to fail. + {expr}のコピーを作る。数値と文字列の場合は、{expr}そのものとコ + ピーの間に違いはない。 + {expr}がリスト|List|の場合は完全なコピーを作る。つまり元のリス + トを変更してもコピーは変更されず、逆も同じである。要素の1つが + リストであるときは、再帰的にコピーが作成される。よってコピーの + 要素に変更を加えても元のリストの要素は変更を受けない。 + {noref}が省略された、または0のとき、含まれているリストや辞書は + 1度だけコピーされる。全ての参照はこのただ1つのコピーを指す。 + {noref}が1の場合、リストや辞書は現れるたびに新しいコピーが作ら + れる。そのため循環参照があるとdeepcopy()は失敗する。 *E724* - Nesting is possible up to 100 levels. When there is an item - that refers back to a higher level making a deep copy with - {noref} set to 1 will fail. - Also see |copy()|. + ネストは100レベルまで可能である。それ以上参照を繰り返している + 要素があると、{noref}が1の場合は失敗する。 + |copy()|も参照。 *delete()* delete({fname}) {fname}という名前のファイルを削除する。戻り値は数値で、削除に 成功したら0、失敗したら1が返る。 - Use |remove()| to delete an item from a |List|. + リスト|List|から要素を削除するには|remove()|を使う。 *did_filetype()* did_filetype() autocommandが実行されFileTypeイベントが一度でも起こっていれ ば、非零が返る。スクリプトのFileTypeイベントが、複数回呼び出さ れるのを回避するのに使える。 |FileType| + 他のファイルへ移動すると、このカウンタはリセットされる。よって + 実際は、カレントバッファに対してFileTypeイベントが発生したかど + うかを判定する。他のバッファを開くオートコマンドの中でこの関数 + を使って'filetype'を設定し、構文ファイルを読み込むために使える。 diff_filler({lnum}) *diff_filler()* - Returns the number of filler lines above line {lnum}. - These are the lines that were inserted at this point in - another diff'ed window. These filler lines are shown in the - display but don't exist in the buffer. - {lnum} is used like with |getline()|. Thus "." is the current - line, "'m" mark m, etc. - Returns 0 if the current window is not in diff mode. + {lnum}行目より上にある削除行の数を返す。削除行とは、diffモード + で他方のウィンドウにテキストが挿入されていることを表す行のこと + である。削除行は表示はされているが、実際にはバッファに存在しな + い。 + {lnum}は|getline()|と同様に扱われる。つまり"."はカレント行とな + り、"'m"はマークmを表す。 + カレントウィンドウがdiffモードでないときは0を返す。 diff_hlID({lnum}, {col}) *diff_hlID()* - Returns the highlight ID for diff mode at line {lnum} column - {col} (byte index). When the current line does not have a - diff change zero is returned. - {lnum} is used like with |getline()|. Thus "." is the current - line, "'m" mark m, etc. - {col} is 1 for the leftmost column, {lnum} is 1 for the first - line. - The highlight ID can be used with |synIDattr()| to obtain - syntax information about the highlighting. + diffモードで{lnum}行{col}桁(バイト単位)の位置のハイライトIDを + 返す。カレント行に変更がないときは0を返す。 + {lnum}は|getline()|と同様に扱われる。つまり"."はカレント行とな + り、"'m"はマークmを表す。 + 先頭の桁の{col}は1となり、最初の行の{lnum}は1となる。 + ハイライトIDは|synIDattr()|を使って構文情報を得るために使える。 empty({expr}) *empty()* - Return the Number 1 if {expr} is empty, zero otherwise. - A |List| or |Dictionary| is empty when it does not have any - items. A Number is empty when its value is zero. - For a long |List| this is much faster then comparing the - length with zero. + {expr}が空なら1を、そうでなければ0を返す。 + リスト|List|または辞書|Dictionary|は要素を1個も持たないとき空 + とみなされる。数値は値が0のとき空とみなされる。 + 長いリストに対しては長さを0と比較するよりこちらの方がずっと高 + 速である。 escape({string}, {chars}) *escape()* - {string}内に現れる{chars}のキャラクタをバックスラッシュでエス - ケープする。例: -> :echo escape('c:\program files\vim', ' \') - 結果: -> c:\\program\ files\\vim + {string}内に現れる{chars}の文字をバックスラッシュでエスケープ + する。例: > + :echo escape('c:\program files\vim', ' \') +< 結果: > + c:\\program\ files\\vim < *eval()* -eval({string}) Evaluate {string} and return the result. Especially useful to - turn the result of |string()| back into the original value. - This works for Numbers, Strings and composites of them. - Also works for |Funcref|s that refer to existing functions. +eval({string}) {string}を評価し、値を返す。|string()|の戻り値を元の値に戻すの + に非常に便利である。数値、文字列、それらの複合に対して動作する。 + 実際に存在する関数への|Funcref|に対しても動作する。 eventhandler() *eventhandler()* イベントハンドラの中では1を返す。つまり、ユーザの文字入力を待っ @@ -2245,71 +2219,71 @@ eventhandler() *eventhandler()* ドラの中でないときは0を返す。 executable({expr}) *executable()* - This function checks if an executable with the name {expr} - exists. {expr} must be the name of the program without any - arguments. - executable() uses the value of $PATH and/or the normal - searchpath for programs. *PATHEXT* - On MS-DOS and MS-Windows the ".exe", ".bat", etc. can - optionally be included. Then the extensions in $PATHEXT are - tried. Thus if "foo.exe" does not exist, "foo.exe.bat" can be - found. If $PATHEXT is not set then ".exe;.com;.bat;.cmd" is - used. A dot by itself can be used in $PATHEXT to try using - the name without an extension. When 'shell' looks like a - Unix shell, then the name is also tried without adding an - extension. - On MS-DOS and MS-Windows it only checks if the file exists and - is not a directory, not if it's really executable. - On MS-Windows an executable in the same directory as Vim is - always found. Since this directory is added to $PATH it - should also work to execute it |win32-PATH|. - The result is a Number: - 1 exists - 0 does not exist - -1 not implemented on this system + {expr}という名前の実行可能ファイルが存在するかどうか判定する。 + {expr}は引数を何もつけないプログラム名でなければならない。 + executable()は$PATHと通常のプログラム検索ディレクトリを参照す + る。 *PATHEXT* + MS-DOSとMS-Windowsでは".exe"、".bat"などの拡張子は含めても含め + なくてもよい。省略された場合は$PATHEXTの拡張子を検索する。よっ + て"foo.exe"が存在しなければ"foo.exe.bat"が見つかることもありう + る。$PATHEXTが存在しなければ".exe;.com;.bat;.cmd"が使われる。 + $PATHEXTにドットだけを含めると拡張子なしの名前を検索することが + できる。'shell'がUnixシェルのように思われるときは、{expr}の後 + に拡張子をつけない名前も検索される。 + MS-DOSとMS-Windowsではファイルが存在するかどうかだけを判定し、 + それがディレクトリでないことや、それが本当に実行可能であるかど + うかは判定されない。 + MS-WindowsではVimと同じディレクトリにある実行ファイルは必ず発 + 見できる。Vimがこのディレクトリを$PATHに加えるためである。 + |win32-PATH|。 + 戻り値は数値: + 1 存在する + 0 存在しない + -1 このシステム上では実装されていない *exists()* exists({expr}) 結果は数値で、変数{expr}が存在すれば1となり、そうでなければ0と なる。引数{expr}は文字列で次のうちいずれかである。 - &option-name Vimオプション - $ENVNAME 環境変数(空文字列と比較することで、判 - 定が成される) + &option-name Vimオプション(存在するかだけを判定し、 + 本当に動作するかは判定しない) + +option-name 動作するVimオプション + $ENVNAME 環境変数(空文字列と比較することでも判 + 定できる) *funcname 組み込み関数(|functions|参照)かユーザ が定義した関数(|user-functions|参照) varname 内部変数(|internal-variables|) - Also works - for |curly-braces-names|, |Dictionary| - entries, |List| items, etc. Beware - that this may cause functions to be - invoked cause an error message for an - invalid expression. - :cmdname Ex command: built-in command, user - command or command modifier |:command|. - Returns: - 1 for match with start of a command - 2 full match with a command - 3 matches several user commands - To check for a supported command - always check the return value to be 2. - :2match The |:2match| command. - :3match The |:3match| command. - #event autocommand defined for this event - #event#pattern autocommand defined for this event and - pattern (the pattern is taken - literally and compared to the - autocommand patterns character by - character) - #group autocommand group exists - #group#event autocommand defined for this group and - event. + |curly-braces-names|, |Dictionary|の要 + 素、|List|の要素などに対しても動作する。 + これを使うと関数を呼び出し、無効な式に + よりエラーメッセージが出る可能性がある + ことに注意。 + :cmdname exコマンド: 組み込みコマンド、ユーザ定 + 義コマンド、コマンド修飾子|:command|。 + 戻り値: + 1 コマンド名の先頭に一致 + 2 コマンド名に完全一致 + 3 複数のユーザ定義コマンドに一致 + コマンドが定義されているかどうかを判定 + するには、必ず戻り値が2であるかを確認 + すること。 + :2match |:2match|のコマンド。 + :3match |:3match|のコマンド。 + #event このイベントに対するオートコマンド定義 + #event#pattern このイベントとパターンに対するオートコ + マンド定義(パターンは文字そのままに解 + 釈され、オートコマンドのパターンと1文 + 字ずつ比較される) + #group オートコマンドグループが存在するか + #group#event このグループとイベントに対してオートコ + マンドが定義されているか #group#event#pattern - autocommand defined for this group, - event and pattern. - ##event autocommand for this event is - supported. - For checking for a supported feature use |has()|. + このグループ、イベント、パターンに対す + るオートコマンド定義 + ##event このイベントに対するオートコマンドがサ + ポートされているか + ある機能がサポートされているか判定するには|has()|を使う。 - 例: + 例: > exists("&shortname") exists("$HOSTNAME") exists("*strftime") @@ -2322,19 +2296,21 @@ exists({expr}) 結果は数値で、変数{expr}が存在すれば1となり、 exists("#filetypeindent#FileType") exists("#filetypeindent#FileType#*") exists("##ColorScheme") - シンボルである&/$/*と名前の間には、空白文字があってはならな - い。That may become more strict in - the future, thus don't count on it! - Working example: > +< シンボルである&/$/*と名前の間には、空白文字があってはならな + い。 + ある少数の場合では無視されるが、名前の後に余計な文字があっては + ならない。将来はもっと厳格になる可能性があるので、現在許される + からといって頼ってはならない。 + 正しい例: > exists(":make") -< NOT working example: > +< 正しくない例: > exists(":make install") -< Note that the argument must be a string, not the name of the - variable itself. For example: > +< Note 引数は変数そのものではなく、文字列でなければならない。例 + えば、次は動作しない: > exists(bufcount) -< This doesn't check for existence of the "bufcount" variable, - but gets the value of "bufcount", and checks if that exists. +< これは変数"bufcount"の存在を判定するのではなく、bufcountの値を + 渡し、それが存在するかどうか判定してしまう。 *expand()* expand({expr} [, {flag}]) @@ -2361,6 +2337,8 @@ expand({expr} [, {flag}]) 取り込み(source)中のファイル名 カーソル下の単語(word) カーソル下の単語(WORD) + 最後に受け取ったメッセージの{clientid} + |server2client()| 変換子: :p フルパス名を展開 :h ヘッド(ディレクトリ) @@ -2368,91 +2346,93 @@ expand({expr} [, {flag}]) :r 拡張子が削除される :e 拡張子だけ - 例: -> :let &tags = expand("%:p:h") . "/tags" - '%'や'#'や'<'で始まる文字列を展開する時には、それに続くテキス - トは無視されることに注意。従ってこれは正しくない: -> :let doesntwork = expand("%:h.bak") - こうすると良い: -> :let doeswork = expand("%:h") . ".bak" - ""やそれらを展開する時には、戻り値が完全な展開をされな + 例: > + :let &tags = expand("%:p:h") . "/tags" +< '%'や'#'や'<'で始まる文字列を展開する時には、それに続くテキス + トは無視されることに注意。従ってこれは正しくない: > + :let doesntwork = expand("%:h.bak") +< こうすると良い: > + :let doeswork = expand("%:h") . ".bak" +< ""やそれらを展開する時には、戻り値が完全な展開をされな い参照名であることにも注意が必要。もしも""が"~/.cshrc" であった場合、"~/"を展開してホームディレクトリにするために、も - う一度expand()を呼び出す必要がある: -> :echo expand(expand("")) - + う一度expand()を呼び出す必要がある: > + :echo expand(expand("")) +< 変数と変換子の間には空白文字があってはならない。関数 |fnamemodify()|が通常のファイル名の変換には使用可能である。 - '%'や'#'を名前が未定義の現在や裏バッファのファイルに適用した場 - 合、空文字列が使用される。"%:p"を名無しのバッファに使用した場 - 合、結果はカレントディレクトリに'/'が付加されたものになる。 + カレントバッファや裏バッファの名前が未定義のときに'%'や'#'を使 + うと空文字列になる。"%:p"を名無しのバッファに使用した場合、結 + 果はカレントディレクトリに'/'が付加されたものになる。 '%'や'#'や'<'で始まらない{expr}は、コマンドラインのファイル名 と同じように展開される。オプションの{flag}が使用され、その値が - 非ゼロでない時以外は'suffixes'と'wildignore'が使用される。 - The "**" item can be used to - search in a directory tree. For example, to find all "README" - files in the current directory and below: > + 非ゼロでない時以外は'suffixes'と'wildignore'が使用される。存在 + しないファイルの名前も結果の文字列に含まれる。"**"を使うとディ + レクトリツリーを検索できる。例えば、カレントディレクトリ以下に + ある全ての"README"を見つけるには次のようにする: > :echo expand("**/README") < - Expand()は、シェルの持っている変数や環境変数を展開することがで - きる。しかしシェルが起動されなければならないので、遅くなる。 - |expr-env-expand|を参照。 + expand()は、シェルの持っている変数や環境変数を展開することがで + きる。しかしシェルを起動しなければならないので、遅くなる。 + |expr-env-expand|を参照。展開された変数はファイル名のリストの + ように扱われる。環境変数を展開できないときはそのままになる。よっ + て":echo expand('$FOOBAR')"の結果は"$FOOBAR"となる。 存在するファイルを探すには|glob()|を参照。外部コマンドの「生 の」実行結果を扱うには|system()|を参照。 extend({expr1}, {expr2} [, {expr3}]) *extend()* - {expr1} and {expr2} must be both |Lists| or both - |Dictionaries|. - - If they are |Lists|: Append {expr2} to {expr1}. - If {expr3} is given insert the items of {expr2} before item - {expr3} in {expr1}. When {expr3} is zero insert before the - first item. When {expr3} is equal to len({expr1}) then - {expr2} is appended. - Examples: > + {expr1}と{expr2}は両方ともリスト|List|であるか、両方とも辞書 + |Dictionaries|でなければならない。 + + 両方ともリストであるなら、{expr2}を{expr1}に付け加える。 + {expr3}が指定された場合は{expr1}の中の要素{expr1}の前に + {expr2}の要素を挿入する。{expr3}が0のときは最初の要素の前に挿 + 入する。{expr3}がlen({expr1})に等しいときは末尾に{expr2}が付け + 加えられる。 + 例: > :echo sort(extend(mylist, [7, 5])) :call extend(mylist, [2, 3], 1) -< Use |add()| to concatenate one item to a list. To concatenate - two lists into a new list use the + operator: > +< リストに1個の要素を加えるには|add()|を使う。2つのリストを連結 + して新しいリストを作るには演算子+を使う: > :let newlist = [1, 2, 3] + [4, 5] < - If they are |Dictionaries|: - Add all entries from {expr2} to {expr1}. - If a key exists in both {expr1} and {expr2} then {expr3} is - used to decide what to do: - {expr3} = "keep": keep the value of {expr1} - {expr3} = "force": use the value of {expr2} - {expr3} = "error": give an error message *E737* - When {expr3} is omitted then "force" is assumed. + 両方とも辞書である場合: + {expr2}の全要素を{expr1}に加える。 + {expr1}と{expr2}で共通のキーがある場合は、{expr3}によって動作 + が決まる: + {expr3} = "keep"の場合: {expr1}の値そのままにする + {expr3} = "force"の場合: use the value of {expr2} + {expr3} = "error"の場合: エラーメッセージを表示する *E737* + {expr3}が省略された場合は"force"と同じになる。 - {expr1} is changed when {expr2} is not empty. If necessary - make a copy of {expr1} first. - {expr2} remains unchanged. - Returns {expr1}. + {expr2}が空でないならば{expr1}が変更される。必要ならば最初に + {expr1}のコピーを作ること。 + {expr2}は変更されない。 + {expr1}を返す。 feedkeys({string} [, {mode}]) *feedkeys()* - Characters in {string} are queued for processing as if they - come from a mapping or were typed by the user. They are added - to the end of the typeahead buffer, thus if a mapping is still - being executed these characters come after them. - The function does not wait for processing of keys contained in - {string}. - To include special keys into {string}, use double-quotes - and "\..." notation |expr-quote|. For example, - feedkeys("\") simulates pressing of the key. But - feedkeys('\') pushes 5 characters. - If {mode} is absent, keys are remapped. - {mode} is a String, which can contain these character flags: - 'm' Remap keys. This is default. - 'n' Do not remap keys. - 't' Handle keys as if typed; otherwise they are handled as - if coming from a mapping. This matters for undo, - opening folds, etc. - Return value is always 0. + {string}中の各文字を、あたかもマッピングまたはユーザによってタ + イプされたかのように、処理キューに入れる。 これらの文字は先行 + 入力バッファの末尾に付け足される。そのためマッピングを展開して + いる途中であれば、これらの文字はマッピングを展開した後に来るこ + とになる。 + この関数は、{string}中の文字が処理されるまでは待たない。 + 特殊なキーを{string}に含めるにはダブルクォートと"\..."記法を使 + う(|expr-quote|を参照)。例えば、feedkeys("\")はキー + の押下をシミュレートする。しかしfeedkeys('\')とすると、こ + の文字の通り5文字を挿入する。 + {mode}が省略されたときは、挿入されたキーはマップ展開の対象にな + る。{mode}は以下の文字フラグを含む文字列: + 'm' キーをマップ展開する。これが既定である。 + 'n' キーをマップ展開しない。 + 't' キーをタイプされたかのように扱う。そうでない場合は + マッピングから展開されたかのように扱われる。これは + undoや折り畳みの展開などで違いが現れる。 + 戻り値は常に0。 *filereadable()* filereadable({file}) @@ -2460,123 +2440,125 @@ filereadable({file}) ならばTRUEとなる。ファイル{file}が存在しないかディレクトリだっ た場合には、結果はFALSEとなる。引数{file}は文字列として使えれ ばどのような表現でもよい。 - If you don't care about the file being readable you can use - |glob()|. + ファイルが読み込み可能でなくてもよい場合には|glob()|を使う。 *file_readable()* 以前の名前: file_readable(). filewritable({file}) *filewritable()* - The result is a Number, which is 1 when a file with the - name {file} exists, and can be written. If {file} doesn't - exist, or is not writable, the result is 0. If (file) is a - directory, and we can write to it, the result is 2. + 結果は数値で、{file}というファイルが存在し、書き込むことが可能 + ならば1となる。ファイル{file}が存在しないか書き込み不可能であ + る場合には、結果は0となる。{file}がディレクトリであり、書き込 + み可能な場合、結果は2となる。 filter({expr}, {string}) *filter()* - {expr} must be a |List| or a |Dictionary|. - For each item in {expr} evaluate {string} and when the result - is zero remove the item from the |List| or |Dictionary|. - Inside {string} |v:val| has the value of the current item. - For a |Dictionary| |v:key| has the key of the current item. - Examples: > + {expr}はリスト|List|または辞書|Dictionary|でなければならない。 + {expr}の各要素に対して{string}を評価し、その結果が0ならばリス + トまたは辞書からその要素を削除する。{string}の内部では|v:val| + が現在の要素の値を保持している。 + 辞書の場合は|v:key|が現在の要素のキーを保持している。 + 例: > :call filter(mylist, 'v:val !~ "OLD"') -< Removes the items where "OLD" appears. > +< は要素"OLD"を削除する。 > :call filter(mydict, 'v:key >= 8') -< Removes the items with a key below 8. > +< は8未満のキーを持つ要素を削除する。 > :call filter(var, 0) -< Removes all the items, thus clears the |List| or |Dictionary|. +< は全要素を削除する。つまりリストまたは辞書をクリアする。 - Note that {string} is the result of expression and is then - used as an expression again. Often it is good to use a - |literal-string| to avoid having to double backslashes. + Note {string}は式を表す文字列である。バックスラッシュを二重に + しなくても済むように|literal-string|を使うとよいだろう。 - The operation is done in-place. If you want a |List| or - |Dictionary| to remain unmodified make a copy first: > + この操作はその場で(in-place)行われる。リストや辞書を変更したく + ない場合は最初にコピーを作ること: > :let l = filter(copy(mylist), 'v:val =~ "KEEP"') -< Returns {expr}, the |List| or |Dictionary| that was filtered. - When an error is encountered while evaluating {string} no - further items in {expr} are processed. +< フィルタされたリストまたは辞書を返す。{string}を評価している最 + 中にエラーが発生した場合は、それ以降の要素の処理は行われない。 finddir({name}[, {path}[, {count}]]) *finddir()* - Find directory {name} in {path}. Supports both downwards and - upwards recursive directory searches. See |file-searching| - for the syntax of {path}. - Returns the path of the first found match. When the found - directory is below the current directory a relative path is - returned. Otherwise a full path is returned. - If {path} is omitted or empty then 'path' is used. - If the optional {count} is given, find {count}'s occurrence of - {name} in {path} instead of the first one. - When {count} is negative return all the matches in a |List|. - This is quite similar to the ex-command |:find|. - {only available when compiled with the +file_in_path feature} + {path}から{name}という名前のディレクトリを探す。ディレクトリを + 上方・下方のどちらにも再帰的に検索できる。{path}の記法について + は|file-searching|を参照。 + 最初に見つかったディレクトリのパスを返す。そのディレクトリがカ + レントディレクトリの下にある場合は相対パスを返す。そうでなけれ + ば絶対パスを返す。 + {path}が省略されたとき、または空のときはオプション'path'の値が + 使われる。 + 省略可能な引数{count}が指定されたときは、最初に見つかったディ + レクトリでなく、{count}番目に見つかったディレクトリを返す。 + {count}が負の場合は、見つかったディレクトリ全てのリスト|List| + を返す。これはexコマンド|:find|によく似ている。 + {+file_in_path機能付きでコンパイルされたときのみ利用可能} findfile({name}[, {path}[, {count}]]) *findfile()* - Just like |finddir()|, but find a file instead of a directory. - Uses 'suffixesadd'. - Example: > + |finddir()|とほぼ同様だが、ディレクトリでなくファイルを検索す + る。 + 'suffixesadd'が適用される。 + 例: > :echo findfile("tags.vim", ".;") -< Searches from the directory of the current file upwards until - it finds the file "tags.vim". +< この例は、カレントファイルのディレクトリから上方に"tags.vim"を + 見つけるまで再帰的に検索する。 *fnamemodify()* fnamemodify({fname}, {mods}) ファイル名{fname}を{mods}にしたがって変更する。{mods}はコマン ドラインで使われるのと同様な文字列である。詳細は |filename-modifiers|を参照。 - 例: -> :echo fnamemodify("main.c", ":p:h") - 結果: -> /home/mool/vim/vim/src/ -< Note: Environment variables and "~" don't work in {fname}, use - |expand()| first then. - + 例: > + :echo fnamemodify("main.c", ":p:h") +< 結果: > + /home/mool/vim/vim/src/ +< Note: {fname}の中の環境変数と"~"は展開されない。これらを展開さ + せるには、最初に|expand()|を使うこと。 + 訳注: 環境変数は展開されないが、"~"は使えるようだ? + 訳注: echo fnamemodify("~/.vimrc", ":p:h") + 訳注: => "/home/myname" + 訳注: echo fnamemodify("$HOME/.vimrc", ":p:h") + 訳注: => "$HOME" foldclosed({lnum}) *foldclosed()* - The result is a Number. If the line {lnum} is in a closed - fold, the result is the number of the first line in that fold. - If the line {lnum} is not in a closed fold, -1 is returned. + 結果は数値。{lnum}行目が閉じた折り畳みの中にあるなら、その折り + 畳みを構成する最初の行の行番号を返す。{lnum}行目が閉じた折り畳 + みに入っていないなら-1を返す。 foldclosedend({lnum}) *foldclosedend()* - The result is a Number. If the line {lnum} is in a closed - fold, the result is the number of the last line in that fold. - If the line {lnum} is not in a closed fold, -1 is returned. + 結果は数値。{lnum}行目が閉じた折り畳みの中にあるなら、その折り + 畳みを構成する最後の行の行番号を返す。{lnum}行目が閉じた折り畳 + みに入っていないなら-1を返す。 foldlevel({lnum}) *foldlevel()* - The result is a Number, which is the foldlevel of line {lnum} - in the current buffer. For nested folds the deepest level is - returned. If there is no fold at line {lnum}, zero is - returned. It doesn't matter if the folds are open or closed. - When used while updating folds (from 'foldexpr') -1 is - returned for lines where folds are still to be updated and the - foldlevel is unknown. As a special case the level of the - previous line is usually available. + カレントバッファの{lnum}行目の折り畳みレベルを表す数値を返す。 + 折り畳みがネストしているときは一番下のレベルを返す。{lnum}行目 + に折り畳みがまったくないときは0を返す。折り畳みが開いているか + 閉じているかは関係ない。('foldexpr'の中で)折り畳みを更新してい + る最中に呼ぶと、まだ折り畳みを更新していなく、折り畳みレベルが + 未知の行に対しては-1を返す。特別な場合として、普通は1行前のレ + ベルは取得できる。 *foldtext()* -foldtext() Returns a String, to be displayed for a closed fold. This is - the default function used for the 'foldtext' option and should - only be called from evaluating 'foldtext'. It uses the - |v:foldstart|, |v:foldend| and |v:folddashes| variables. - The returned string looks like this: > +foldtext() 閉じた折り畳みに表示する文字列を返す。これはオプション + 'foldtext'のデフォルトの関数であり、'foldtext'を評価していると + きにだけ呼ぶようにすべきである。この関数は変数|v:foldstart|, + |v:foldend|, |v:folddashes|を使用する。 + 戻り値の文字列は次のようになる: > +-- 45 lines: abcdef -< The number of dashes depends on the foldlevel. The "45" is - the number of lines in the fold. "abcdef" is the text in the - first non-blank line of the fold. Leading white space, "//" - or "/*" and the text from the 'foldmarker' and 'commentstring' - options is removed. - {not available when compiled without the |+folding| feature} +< + ダッシュ(-)の数は折り畳みレベルによって決まる。"45"はその折り + 畳みに含まれている行数である。"abcdef"はその折り畳みの中の最初 + の空行でない行のテキストである。行頭の空白と、"//"や/*"、 + 'foldmarker'と'commentstring'に設定されている文字列は削除され + る。 + {|+folding|機能付きでコンパイルされたときのみ利用可能} foldtextresult({lnum}) *foldtextresult()* - Returns the text that is displayed for the closed fold at line - {lnum}. Evaluates 'foldtext' in the appropriate context. - When there is no closed fold at {lnum} an empty string is - returned. - {lnum} is used like with |getline()|. Thus "." is the current - line, "'m" mark m, etc. - Useful when exporting folded text, e.g., to HTML. - {not available when compiled without the |+folding| feature} + {lnum}行目の閉じた折り畳みに表示される文字列を返す。'foldtext' + を適切なコンテキストの中で評価する。{lnum}行目に閉じた折り畳み + がないときは空文字列を返す。 + {lnum}は|getline()|のときと同様に扱われる。つまり"."はカレント + 行、"'m"はマークmを表す。 + 折り畳まれたテキストをHTMLなどにエクスポートするときに有用。 + {|+folding|機能付きでコンパイルされたときのみ利用可能} *foreground()* foreground() Vimのウィンドウを前面に移動する。この関数はクライアントからVim @@ -2589,95 +2571,90 @@ foreground() Vimのウィンドウを前面に移動する。この関数はク function({name}) *function()* *E700* - Return a |Funcref| variable that refers to function {name}. - {name} can be a user defined function or an internal function. + 関数{name}を参照する|Funcref|の変数を返す。{name}はユーザ定義 + 関数でも組み込み関数でもよい。 garbagecollect() *garbagecollect()* - Cleanup unused |Lists| and |Dictionaries| that have circular - references. There is hardly ever a need to invoke this - function, as it is automatically done when Vim runs out of - memory or is waiting for the user to press a key after - 'updatetime'. Items without circular references are always - freed when they become unused. - This is useful if you have deleted a very big |List| and/or - |Dictionary| with circular references in a script that runs - for a long time. + 循環参照を持ち、使われていないリスト|List|と辞書|Dictionaries| + をクリーンアップする。これはメモリ不足に陥ったときや、 + 'updatetime'経過後ユーザのキー入力を待っているときに自動的に行 + われるので、この関数を呼ぶ必要があることはほとんどない。 + 循環参照を持たない要素は、使われなくなったとき必ず開放される。 + 長時間実行されるスクリプトの中で循環参照を持つ非常に大きなリス + トや辞書を削除したときに有用である。 get({list}, {idx} [, {default}]) *get()* - Get item {idx} from |List| {list}. When this item is not - available return {default}. Return zero when {default} is - omitted. + リスト|List| {list}から{idx}番目の要素を取得する。この要素を取 + 得できないときは{default}を返す。{default}が省略されたときは0 + を返す。 get({dict}, {key} [, {default}]) - Get item with key {key} from |Dictionary| {dict}. When this - item is not available return {default}. Return zero when - {default} is omitted. + 辞書|Dictionary| {dict}からキー{key}に関連づけられた値を取得す + る。この要素を取得できないときは{default}を返す。{default}が省 + 略されたときは0を返す。 *getbufline()* getbufline({expr}, {lnum} [, {end}]) - Return a |List| with the lines starting from {lnum} to {end} - (inclusive) in the buffer {expr}. If {end} is omitted, a - |List| with only the line {lnum} is returned. + バッファ{expr}の{lnum}行目から{end}行目まで(両端含む)の行から + なるリスト|List|を返す。{end}が省略されたときは{lnum}行目だけ + からなるリストを返す。 - For the use of {expr}, see |bufname()| above. + {expr}の指定の仕方については|bufname()|を参照。 - For {lnum} and {end} "$" can be used for the last line of the - buffer. Otherwise a number must be used. + {lnum}と{end}では"$"でバッファの最後の行を表すことができる。そ + れ以外は数値でなければならない。 - When {lnum} is smaller than 1 or bigger than the number of - lines in the buffer, an empty |List| is returned. + {lnum}が1より小さいときや、バッファの行数より大きいときは空リ + ストを返す。 - When {end} is greater than the number of lines in the buffer, - it is treated as {end} is set to the number of lines in the - buffer. When {end} is before {lnum} an empty |List| is - returned. + {end}がバッファの行数より大きいときは、バッファの行数が設定さ + れたものとして扱う。{end}が{lnum}行目より前に設定された場合は + 空リストを返す。 - This function works only for loaded buffers. For unloaded and - non-existing buffers, an empty |List| is returned. + この関数は読み込まれているバッファに対してのみ動作する。既にア + ンロードされているバッファや存在しないバッファに対しては空リス + トを返す。 - Example: > + 例: > :let lines = getbufline(bufnr("myfile"), 1, "$") getbufvar({expr}, {varname}) *getbufvar()* - The result is the value of option or local buffer variable - {varname} in buffer {expr}. Note that the name without "b:" - must be used. - This also works for a global or buffer-local option, but it - doesn't work for a global variable, window-local variable or - window-local option. - For the use of {expr}, see |bufname()| above. - When the buffer or variable doesn't exist an empty string is - returned, there is no error message. - Examples: > + バッファ{expr}のオプションの値やバッファローカル変数{varname} + の値を返す。Note "b:"をつけない変数名を指定すること。 + グローバルオプション、バッファローカルオプションのどちらに対し + ても動作するが、グローバル変数、ウィンドウローカル変数、ウィン + ドウローカルオプションに対しては動作しない。 + {expr}の指定の仕方については|bufname()|を参照。 + バッファや変数が存在しないときは空文字列を返し、エラーメッセー + ジは表示されない。 + 例: > :let bufmodified = getbufvar(1, "&mod") :echo "todo myvar = " . getbufvar("todo", "myvar") < getchar([expr]) *getchar()* - Get a single character from the user or input stream. - If [expr] is omitted, wait until a character is available. - If [expr] is 0, only get a character when one is available. - Return zero otherwise. - If [expr] is 1, only check if a character is available, it is - not consumed. Return zero if no character available. - - Without {expr} and when {expr} is 0 a whole character or - special key is returned. If it is an 8-bit character, the - result is a number. Use nr2char() to convert it to a String. - Otherwise a String is returned with the encoded character. - For a special key it's a sequence of bytes starting with 0x80 - (decimal: 128). This is the same value as the string - "\", e.g., "\". The returned value is also a - String when a modifier (shift, control, alt) was used that is - not included in the character. - - When {expr} is 1 only the first byte is returned. For a - one-byte character it is the character itself as a number. - Use nr2char() to convert it to a String. - - When the user clicks a mouse button, the mouse event will be - returned. The position can then be found in |v:mouse_col|, - |v:mouse_lnum| and |v:mouse_win|. This example positions the - mouse as it would normally happen: > + ユーザまたは入力ストリームから1文字を取得する。 + [expr]が省略されたときは1文字を取得できるまで待つ。 + [expr]が0のときは1文字を取得できる場合のみ取得する。取得できな + ければ0を返す。 + [expr]が1のときは1文字を取得できるか判定し、実際には取得しない。 + 取得できないときは0を返す。 + + {expr}が省略されたときや{expr}が0のときは、文字全体または特殊 + キーを返す。それが8ビット文字なら戻り値は数値である。これを文 + 字列に戻すにはnr2char()を使う。8ビット文字でないならばエンコー + ドして文字列にして返す。 + 特殊キーとは0x80(10進数で128)で始まるバイト列である。これは + 文字列"\"と同じ値である(例: "\")。戻り値は文字列で + あり、修飾キー(shift, contro, alt)は含まれない。 + + {expr}が1のときは最初のバイトだけを返す。1バイト文字の場合、こ + れはその文字そのものを表す数値である。これを文字列に変換するに + はnr2char()を使う。 + + ユーザがマウスをクリックしたときはマウスイベントを返す。クリッ + クした位置は|v:mouse_col|, |v:mouse_lnum|, |v:mouse_win|で得ら + れる。以下の例は、普通にマウスがクリックされたときと同じように + カーソルを移動させる。 > let c = getchar() if c == "\" && v:mouse_win > 0 exe v:mouse_win . "wincmd w" @@ -2685,15 +2662,16 @@ getchar([expr]) *getchar()* exe "normal " . v:mouse_col . "|" endif < - There is no prompt, you will somehow have to make clear to the - user that a character has to be typed. - There is no mapping for the character. - Key codes are replaced, thus when the user presses the - key you get the code for the key, not the raw character - sequence. Examples: > + この関数を呼んだときプロンプトは表示されない。文字入力を待って + いることをなんらかの方法でユーザがわかるようにしなければならな + いだろう。 + 入力された文字に対してマッピングは適用されない。 + キーコードは置換される。つまりユーザがを押した場合、「生 + の」文字シーケンスでなくキーに対応するコードが得られる。 + 例: > getchar() == "\" getchar() == "\" -< This example redefines "f" to ignore case: > +< 以下の例は大文字・小文字を区別しないように"f"を再定義する: > :nmap f :call FindChar() :function FindChar() : let c = nr2char(getchar()) @@ -2714,197 +2692,188 @@ getcharmod() *getcharmod()* 16 マウスダブルクリック 32 マウストリプルクリック 64 マウスクアドラプルクリック - 128 Macintoshのみで: command + 128 Macintoshのみ: command 文字自身に含まれていない修飾キーのみ取得できる。つまり、 Shift-aは修飾キーなしの"A"となる。 getcmdline() *getcmdline()* - Return the current command-line. Only works when the command - line is being edited, thus requires use of |c_CTRL-\_e| or - |c_CTRL-R_=|. - Example: > + 現在のコマンドラインの内容を取得する。コマンドラインを編集して + いるときのみ動作する。つまり|c_CTRL-\_e|または|c_CTRL-R_=|を使っ + ているときのみ有効。 + 例: > :cmap eescape(getcmdline(), ' \') -< Also see |getcmdtype()|, |getcmdpos()| and |setcmdpos()|. +< |getcmdtype()|, |getcmdpos()|, |setcmdpos()|も参照。 getcmdpos() *getcmdpos()* - Return the position of the cursor in the command line as a - byte count. The first column is 1. - Only works when editing the command line, thus requires use of - |c_CTRL-\_e| or |c_CTRL-R_=|. Returns 0 otherwise. - Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|. + コマンドラインにおけるカーソル位置をバイト単位で取得する。最初 + の桁は1となる。コマンドラインを編集しているときのみ動作する。 + つまり|c_CTRL-\_e|または|c_CTRL-R_=|を使っているときのみ有効。 + |getcmdtype()|, |setcmdpos()|, |getcmdline()|も参照。 getcmdtype() *getcmdtype()* - Return the current command-line type. Possible return values - are: - : normal Ex command - > debug mode command |debug-mode| - / forward search command - ? backward search command - @ |input()| command - - |:insert| or |:append| command - Only works when editing the command line, thus requires use of - |c_CTRL-\_e| or |c_CTRL-R_=|. Returns an empty string - otherwise. - Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|. + 現在のコマンドラインの種類を返す。戻り値は次のいずれか: + : 通常のexコマンド + > デバッグモードコマンド |debug-mode| + / 前方検索コマンド + ? 後方検索コマンド + @ |input()| コマンド + - |:insert| または |:append| コマンド + コマンドラインを編集しているときのみ動作する。つまり + |c_CTRL-\_e|または|c_CTRL-R_=|を使っているときのみ有効。そうで + ないときは空文字列を返す。 + |getcmdpos()|, |setcmdpos()|, |getcmdline()|も参照。 *getcwd()* getcwd() 結果は文字列で、現在のディレクトリ名。 getfsize({fname}) *getfsize()* - The result is a Number, which is the size in bytes of the - given file {fname}. - If {fname} is a directory, 0 is returned. - If the file {fname} can't be found, -1 is returned. + 結果は数値で、{fname}で指定されるファイルのサイズをバイト単位 + で返す。 + {fname}がディレクトリのときは0を返す。 + ファイル{fname}が見つからないときは-1を返す。 getfontname([{name}]) *getfontname()* - Without an argument returns the name of the normal font being - used. Like what is used for the Normal highlight group - |hl-Normal|. - With an argument a check is done whether {name} is a valid - font name. If not then an empty string is returned. - Otherwise the actual font name is returned, or {name} if the - GUI does not support obtaining the real name. - Only works when the GUI is running, thus not in your vimrc or - gvimrc file. Use the |GUIEnter| autocommand to use this - function just after the GUI has started. - Note that the GTK 2 GUI accepts any font name, thus checking - for a valid name does not work. + 引数なしで使われた場合には現在の通常のフォント名を返す。ハイラ + イトグループNormalに対して使われるものと同様|hl-Normal|。 + 引数が指定された場合には{name}が有効なフォント名であるか判定さ + れる。有効でないときは空文字列を返す。 + 有効なときは実際のフォント名を返す。またはGUIが実際の名前の取 + 得をサポートしていないときは{name}をそのまま返す。 + GUIモードで実行しているときのみ動作する。よってvimrcやgvimrcの + 中では使えない。GUIモードが起動した直後にこの関数を呼ぶには、 + オートコマンド|GUIEnter|を使うこと。 + Note GTK 2のGUIはどんなフォント名でも受け付けてしまうため、名 + 前が有効であるかのチェックは動作しない。 getfperm({fname}) *getfperm()* - The result is a String, which is the read, write, and execute - permissions of the given file {fname}. - If {fname} does not exist or its directory cannot be read, an - empty string is returned. - The result is of the form "rwxrwxrwx", where each group of - "rwx" flags represent, in turn, the permissions of the owner - of the file, the group the file belongs to, and other users. - If a user does not have a given permission the flag for this - is replaced with the string "-". Example: > + {fname}で指定されたファイルの読み込み、書き込み、実行の許可属 + 性を示す文字列を返す。 + {fname}が存在しない、またはそのディレクトリが読み込み不可能な + ときは空文字列を返す。 + 戻り値は"rwxrwxrwx"の形で、"rwx"フラグの各グループは順にファイ + ルの所有者、ファイルが所属するグループ、その他のユーザを表す。 + 許可属性が与えられていないフラグは"-"で置き換えられる。例: > :echo getfperm("/etc/passwd") -< This will hopefully (from a security point of view) display - the string "rw-r--r--" or even "rw-------". +< この例は、(セキュリティの観点から望ましい設定がされているなら + ば)"rw-r--r--"あるいは"rw-------"と表示する。 *getftime()* getftime({fname}) 結果は{fname}で与えられたファイルの、最終更新時間を示す数値。 - 1970年1月1日からの経過時間(病)で、strftime()に渡すことができる + 1970年1月1日からの経過時間(秒)で、strftime()に渡すことができる だろう。|localtime()|と|strftime()|も参照。 ファイル{fname}が見つからなかった場合には-1を返す。 getftype({fname}) *getftype()* - The result is a String, which is a description of the kind of - file of the given file {fname}. - If {fname} does not exist an empty string is returned. - Here is a table over different kinds of files and their - results: - Normal file "file" - Directory "dir" - Symbolic link "link" - Block device "bdev" - Character device "cdev" - Socket "socket" + {fname}で指定されたファイルの種別を示す文字列を返す。 + {fname}が存在しないときは空文字列を返す。 + ファイルの種別とそれらの結果の表を以下に示す: + 通常ファイル "file" + ディレクトリ "dir" + シンボリックリンク "link" + ブロックデバイス "bdev" + キャラクタデバイス "cdev" + ソケット "socket" FIFO "fifo" - All other "other" - Example: > + それ以外 "other" + 例: > getftype("/home") -< Note that a type such as "link" will only be returned on - systems that support it. On some systems only "dir" and - "file" are returned. +< Note "link"などの種別はそれをサポートしているシステムでのみ返 + される。"dir"と"file"しか返らないシステムもある。 *getline()* getline({lnum} [, {end}]) - 結果は現在のバッファの{lnum}行目の内容(文字列)。例: -> getline(1) - {lnum}が数字ではない文字で始まる文字列であった場合、line()に + {end}が指定されない場合は、カレントバッファの{lnum}行目の内容 + を文字列にして返す。例: > + getline(1) +< {lnum}が数字ではない文字で始まる文字列であった場合、line()に よってその文字列が数字に変換される。よって、カーソルのある行の - 文字列を取得するには: -> getline(".") - {lnum}が1より小さいかバッファの行数よりも大きい数値の場合、空 + 文字列を取得するには: > + getline(".") +< {lnum}が1より小さいかバッファの行数よりも大きい数値の場合、空 文字列が返される。 - When {end} is given the result is a |List| where each item is - a line from the current buffer in the range {lnum} to {end}, - including line {end}. - {end} is used in the same way as {lnum}. - Non-existing lines are silently omitted. - When {end} is before {lnum} an empty |List| is returned. - Example: > + {end}が指定された場合は、カレントバッファの{lnum}行目から + {end}行目までを要素とするリスト|List|を返す。 + {end}は{lnum}と同様に解釈される。 + 存在しない行は省略され、エラーメッセージは表示されない。 + {end}が{lnum}より前になる場合は空リストを返す。 + 例: > :let start = line('.') :let end = search("^$") - 1 :let lines = getline(start, end) -< To get lines from another buffer see |getbufline()| +< 他のバッファの行を取得するには|getbufline()|を参照。 getloclist({nr}) *getloclist()* - Returns a list with all the entries in the location list for - window {nr}. When {nr} is zero the current window is used. - For a location list window, the displayed location list is - returned. For an invalid window number {nr}, an empty list is - returned. Otherwise, same as getqflist(). + ウィンドウ{nr}のロケーションリストの全項目からなるリストを返す。 + {nr}に0を指定するとカレントウィンドウになる。ロケーションリス + トウィンドウに対して使用すると、そこに表示されているロケーショ + ンリストが返る。ウィンドウ番号{nr}が無効な場合は、空リストが返 + る。それ以外はgetqflist()と同じ。 getqflist() *getqflist()* - Returns a list with all the current quickfix errors. Each - list item is a dictionary with these entries: - bufnr number of buffer that has the file name, use - bufname() to get the name - lnum line number in the buffer (first line is 1) - col column number (first column is 1) - vcol non-zero: "col" is visual column - zero: "col" is byte index - nr error number - pattern search pattern used to locate the error - text description of the error - type type of the error, 'E', '1', etc. - valid non-zero: recognized error message - - When there is no error list or it's empty an empty list is - returned. Quickfix list entries with non-existing buffer - number are returned with "bufnr" set to zero. - - Useful application: Find pattern matches in multiple files and - do something with them: > + 現在の全quickfixエラーのリストを返す。リストの各要素は辞書で、 + 以下の要素を持つ: + bufnr ファイル名を持つバッファの番号。その名前を取得 + するにはbufname()を使う。 + lnum バッファ中の行番号(最初の行は1) + col 桁番号(最初の桁は1) + vcol 0以外: "col"は画面上の桁 + 0: "col"はバイトインデックス + nr エラー番号 + pattern エラーの位置を特定するために使う検索パターン + text エラーの説明 + type エラーメッセージの種類。'E', '1'など。 + valid 0以外: エラーメッセージが認識されている + + エラーリストがまったくないか、空であるときは空リストを返す。 + 存在しないバッファ番号を持つquickfixリストの項目は"bufnr"を0に + して返される。 + + 役に立つ応用例: 複数のファイルから正規表現検索を行い、見つかっ + たものに対してなんらかの操作をする: > :vimgrep /theword/jg *.c :for d in getqflist() : echo bufname(d.bufnr) ':' d.lnum '=' d.text :endfor getreg([{regname} [, 1]]) *getreg()* - The result is a String, which is the contents of register - {regname}. Example: > + レジスタ{regname}の中身を文字列にして返す。例: > :let cliptext = getreg('*') -< getreg('=') returns the last evaluated value of the expression - register. (For use in maps.) - getreg('=', 1) returns the expression itself, so that it can - be restored with |setreg()|. For other registers the extra - argument is ignored, thus you can always give it. - If {regname} is not specified, |v:register| is used. +< getreg('=')は最後に評価した式レジスタの値を返す。(マップの中で + 使用する)。 + getreg('=', 1)はその式そのものを返す。これを使って|setreg()|で + 復元することができる。他のレジスタの場合は、この引数は無視され + るので、常に指定していても害はない。 + {regname}を指定しないときは|v:register|が使われる。 getregtype([{regname}]) *getregtype()* - The result is a String, which is type of register {regname}. - The value will be one of: - "v" for |characterwise| text - "V" for |linewise| text - "{width}" for |blockwise-visual| text - 0 for an empty or unknown register - is one character with value 0x16. - If {regname} is not specified, |v:register| is used. + レジスタ{regname}の種類を表す文字列を返す。 + 戻り値は次のいずれかとなる: + "v" 文字指向|characterwise|の場合 + "V" 行指向|linewise|の場合 + "{width}" 矩形指向|blockwise-visual|の場合 + 0 空、または未知のレジスタの場合 + は値0x16の1文字である。 + {regname}を指定しないときは|v:register|が使われる。 gettabwinvar({tabnr}, {winnr}, {varname}) *gettabwinvar()* - Get the value of window-local variable {varname} in window - {winnr} in tab page {tabnr}. - When {varname} starts with "&" get the value of a window-local - option. - Tabs are numbered starting with one. For the current tabpage - use |getwinvar()|. - When {winnr} is zero the current window is used. - This also works for a global option, buffer-local option and - window-local option, but it doesn't work for a global variable - or buffer-local variable. - When {varname} is empty a dictionary with all window-local - variables is returned. - Note that {varname} must be the name without "w:". - Examples: > + タブページ{tabnr}内のウィンドウ{winnr}のウィンドウローカル変数 + {varname}の値を取得する。 + {varname}が文字"&"で始まるときはウィンドウローカルオプションの + 値を取得する。 + タブページ番号は1から始まる。カレントタブページを指定するには + |getwinvar()|を指定する。 + {winnr}が0のときはカレントウィンドウとなる。 + グローバルオプション、バッファローカルオプション、ウィンドウロ + ーカルオプションに対しても動作するが、グローバル変数やバッファ + ローカル変数に対しては動作しない。 + {varname}が空のときは全ウィンドウローカル変数からなる辞書を返 + す。 + Note {varname}は"w:"をつけずに指定しなければならない。 + 例: > :let list_is_on = gettabwinvar(1, 2, '&list') :echo "myvar = " . gettabwinvar(3, 1, 'myvar') < @@ -2918,112 +2887,114 @@ getwinposy() 結果はGUIのVimウィンドウの上端の、デスクトップ 値)。情報が存在しない(コンソールの)場合は-1となる。 getwinvar({winnr}, {varname}) *getwinvar()* - Like |gettabwinvar()| for the current tabpage. - Examples: > + カレントタブページに対する|gettabwinvar()|と同様。 + 例: > :let list_is_on = getwinvar(2, '&list') :echo "myvar = " . getwinvar(1, 'myvar') *glob()* -glob({expr}) Expand the file wildcards in {expr}. See |wildcards| for the - use of special characters. - The result is a String. - {expr}内のファイル名のワイルドカードを展開する。結果は文字列。 +glob({expr}) + {expr}内のファイル名のワイルドカードを展開する。特殊文字につい + ては|wildcards|を参照。結果は文字列。 結果が複数存在する場合、各々が文字によって区切られる。 展開が失敗した場合、結果は空文字列。結果には、存在しないファイ ル名は含まれない。 - 多くのシステムではbackticks(「`」という文字のこと)を、外部コマ - ンドの実行結果からファイル名を取得するために使用できる。例: -> :let tagfiles = glob("`find . -name tags -print`") -> :let &tags = substitute(tagfiles, "\n", ",", "g") - backticks内のプログラムの実行結果は、一行に一つずつの項目が含 - まれてなければならない。項目内のスペースは許容される。 + 多くのシステムではバッククォート(「`」という文字のこと)を、外部コマ + ンドの実行結果からファイル名を取得するために使用できる。例: > + :let tagfiles = glob("`find . -name tags -print`") + :let &tags = substitute(tagfiles, "\n", ",", "g") +< バッククォート内のプログラムの実行結果は、一行に一つずつの項目 + が含まれてなければならない。項目内のスペースは許容される。 特殊なVimの変数を展開するためには|expand()|を参照。外部コマン ドの生の出力を得るためには|system()|を参照。 globpath({path}, {expr}) *globpath()* - Perform glob() on all directories in {path} and concatenate - the results. Example: > + {path}の中の全ディレクトリに対してglob()を実行し、結果を連結す + る。例: > :echo globpath(&rtp, "syntax/c.vim") -< {path} is a comma-separated list of directory names. Each - directory name is prepended to {expr} and expanded like with - glob(). A path separator is inserted when needed. - To add a comma inside a directory name escape it with a - backslash. Note that on MS-Windows a directory may have a - trailing backslash, remove it if you put a comma after it. - If the expansion fails for one of the directories, there is no - error message. - The 'wildignore' option applies: Names matching one of the - patterns in 'wildignore' will be skipped. - - The "**" item can be used to search in a directory tree. - For example, to find all "README.txt" files in the directories - in 'runtimepath' and below: > +< {path}はコンマ区切りのディレクトリのリスト。各ディレクトリを + {expr}の前に付加し、glob()と同様にそれを展開する。必要に応じて + パスの区切り文字が挿入される。 + ディレクトリ名の中にコンマを含めるには、バックスラッシュでエス + ケープすること。Note MS-Windowsではディレクトリ名の末尾にバッ + クスラッシュがつくことがある。その後に区切りのコンマを書くとエ + スケープと見なされてしまうので、バックスラッシュは削除すること。 + どれかのディレクトリに対して展開が失敗してもエラーメッセージは + 表示されない。 + オプション'wildignore'が適用される。つまり、'wildignore'のパター + ンにマッチする名前はスキップされる。 + + "**"を使ってディレクトリツリーを再帰的に検索することができる。 + 例えば、'runtimepath'とそれ以下のディレクトリから全ての + "README.txt"を探すには次のようにする: > :echo globpath(&rtp, "**/README.txt") -< +< *has()* has({feature}) 結果は機能{feature}がサポートされる場合1、されない場合0とな る。引数{feature}は文字列。下記の|feature-list|を参照。 + |exists()|も参照。 has_key({dict}, {key}) *has_key()* - The result is a Number, which is 1 if |Dictionary| {dict} has - an entry with key {key}. Zero otherwise. + 結果は数値で、辞書|Dictionary| {dict}がキー{key}の要素を持つな + ら1、持たないなら0となる。 haslocaldir() *haslocaldir()* - The result is a Number, which is 1 when the current - window has set a local path via |:lcd|, and 0 otherwise. + 結果は数値でカレントウィンドウが|:lcd|によってローカルなカレン + トディレクトリを持つようセットされているなら1、そうでないなら + 0となる。 hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()* - The result is a Number, which is 1 if there is a mapping that - contains {what} in somewhere in the rhs (what it is mapped to) - and this mapping exists in one of the modes indicated by - {mode}. - When {abbr} is there and it is non-zero use abbreviations - instead of mappings. Don't forget to specify Insert and/or - Command-line mode. - Both the global mappings and the mappings local to the current - buffer are checked for a match. - If no matching mapping is found 0 is returned. - The following characters are recognized in {mode}: - n Normal mode - v Visual mode - o Operator-pending mode - i Insert mode - l Language-Argument ("r", "f", "t", etc.) - c Command-line mode - When {mode} is omitted, "nvo" is used. - - This function is useful to check if a mapping already exists - to a function in a Vim script. Example: > + 結果は数値。右辺側(マップした先)の一部分に{what}を含むマッピン + グが存在し、それが{mode}で指定されたモードのいずれかで定義され + ているなら1を返す。 + {abbr}が指定されていて0でないときはマッピングでなく短縮入力の + 存在を判定する。インサートモードまたはコマンドモードを指定する + ことを忘れないように。 + グローバルマップとバッファローカルマップの両方をチェックする。 + マッピングが1個も見つからなかったときは0を返す。 + {mode}に対しては以下の文字が利用できる: + n ノーマルモード + v ビジュアルモード + o モーション待ちモード (Operator-pending) + i インサートモード + l Language-Argumentモード ("r", "f", "t"など) + c コマンドラインモード + {mode}が省略されたときは"nvo"となる。 + + この関数はVimスクリプトの中で、ある関数へのマッピングが既に存 + 在するか判定するために有用である。例: > :if !hasmapto('\ABCdoit') : map d \ABCdoit :endif -< This installs the mapping to "\ABCdoit" only if there isn't - already a mapping to "\ABCdoit". - *histadd()* -histadd({history}, {item}) +< この例は、"\ABCdoit"へのマッピングが存在しないときだけ + "\ABCdoit"へのマッピングを作成する。 + +histadd({history}, {item}) *histadd()* 文字列{item}を履歴{history}に追加する。履歴{history}は以下のう ちどれか一つから選択: *hist-names* "cmd" or ":" コマンドライン履歴 "search" or "/" 検索パターン履歴 - "expr" or "=" タイプされた表現の履歴 + "expr" or "=" タイプされた式の履歴 "input" or "@" input()の履歴 {item}が履歴内に既に存在する場合、それが最新の項目の位置へシフ トされる。結果は数値:操作が成功した場合1、そうでなければ0 - 例: -> :call histadd("input", strftime("%Y %b %d")) -> :let date=input("Enter date: ") + 例: > + :call histadd("input", strftime("%Y %b %d")) + :let date=input("Enter date: ") +< サンドボックス|sandbox|の中では利用できない。 - *histdel()* -histdel({history} [, {item}]) +histdel({history} [, {item}]) *histdel()* {history}の内容を削除する。例えば総てのエントリを消すこともで きる。{history}の部分に可能な値は|hist-names|を参照。 パラメータ{item}が文字列として与えられた場合、これは正規表現と して扱われる。その表現にマッチする総てのエントリがhistoryから 削除される(複数あっても)。 + "\c"をつけない場合、大文字・小文字が一致しなければならない。 + |/\c|。 {item}が数値ならば、インデックスとして解釈される。インデックス については|:history-indexing|を参照。関連するエントリ(訳注:The respective entry)も、存在すれば削除される。 @@ -3031,25 +3002,23 @@ histdel({history} [, {item}]) 結果は数値: 削除に成功すれば1を、そうでなければ0が返る。 例: - 式レジスタの履歴を削除する: -> :call histdel("expr") - - 検索履歴から、"*"で始まるエントリを総て削除する: -> :call histdel("/", '^\*') - - 次の3つは等価である: -> :call histdel("search", histnr("search")) -> :call histdel("search", -1) -> :call histdel("search", '^'.histget("search", -1).'$') - + 式レジスタの履歴を削除する: > + :call histdel("expr") +< + 検索履歴から、"*"で始まるエントリを総て削除する: > + :call histdel("/", '^\*') +< + 次の3つは等価である: > + :call histdel("search", histnr("search")) + :call histdel("search", -1) + :call histdel("search", '^'.histget("search", -1).'$') +< 最後の検索パターンを削除し、一つ前のパターンを"n"コマンド(次の - マッチへ移動)と'hlsearch'の為に設定する: -> :call histdel("search", -1) -> :let @/ = histget("search", -1) - + マッチへ移動)と'hlsearch'の為に設定する: > + :call histdel("search", -1) + :let @/ = histget("search", -1) - *histget()* -histget({history} [, {index}]) +histget({history} [, {index}]) *histget()* 結果は{history}の第{index}エントリーを表わす文字列。{history} の部分に可能な値は|hist-names|を、{index}については |:history-indexing|を参照。指定されたエントリが存在しない場合 @@ -3057,24 +3026,22 @@ histget({history} [, {index}]) 新のエントリが戻り値として使用される。 例: - 2つ前に行なわれた検索をやり直す: -> :execute '/' . histget("search", -2) + 2つ前に行なわれた検索をやり直す: > + :execute '/' . histget("search", -2) - |:history|によって出力される{num}番目のエントリを、再 - 度実行するための":H {num}"というコマンドを定義する。 -> :command -nargs=1 H execute histget("cmd",0+) - - *histnr()* -histnr({history}) +< |:history|によって出力される{num}番目のエントリを、再 + 度実行するための":H {num}"というコマンドを定義する。 > + :command -nargs=1 H execute histget("cmd",0+) +< +histnr({history}) *histnr()* 結果は数値で{history}の現在のエントリー数。{history}の部分に可 能な値は|hist-names|を参照。エラーが起こった場合、-1が返され る。 - 例: -> :let inp_index = histnr("expr") - - *hlexists()* -hlexists({name}) + 例: > + :let inp_index = histnr("expr") +< +hlexists({name}) *hlexists()* 結果は数値で、{name}という名のハイライトグループが存在すれば、 非ゼロの値が返される。これはなんらかの方法でそのグループが既に 定義されている時にのみ起こる。これの為に実際に何らかのハイライ @@ -3088,126 +3055,160 @@ hlID({name}) 結果は数値で、{name}という名前のハイライトグル のハイライトグループが存在しない場合は0が返される。 これはハイライトグループについての情報を獲得するために使用され る。例えば"Comment"グループの背景色を取得するにはこのようにす - る: -> :echo synIDattr(synIDtrans(hlID("Comment")), "bg") - *highlightID()* + る: > + :echo synIDattr(synIDtrans(hlID("Comment")), "bg") +< *highlightID()* 以前の名前: highlightID() - *hostname()* -hostname() +hostname() *hostname()* 結果は文字列で、現在Vimが実行されているマシンの名前。名前が256 文字を超える場合、超えた部分は切り捨てられる。 iconv({expr}, {from}, {to}) *iconv()* - The result is a String, which is the text {expr} converted - from encoding {from} to encoding {to}. - When the conversion fails an empty string is returned. - The encoding names are whatever the iconv() library function - can accept, see ":!man 3 iconv". - Most conversions require Vim to be compiled with the |+iconv| - feature. Otherwise only UTF-8 to latin1 conversion and back - can be done. - This can be used to display messages with special characters, - no matter what 'encoding' is set to. Write the message in - UTF-8 and use: > + 文字列{expr}をエンコーディング{from}からエンコーディング{to}に + 変換した文字列を返す。 + 変換が失敗したときは空文字列を返す。 + エンコーディング名はライブラリ関数iconv()が受け付けるものなら + なんでもよい。":!man 3 iconv"を参照。 + ほとんどの変換は、Vimが|+iconv|機能つきでコンパイルされている + ときのみ利用可能。|+iconv|つきでないときもUTF-8からlatin1への + 変換とその逆は行える。 + オプション'encoding'の値に関係なく、特殊な文字を含むメッセージ + を表示するために使える。UTF-8でエンコードされたメッセージを表 + 示するには次のようにする: > echo iconv(utf8_str, "utf-8", &enc) -< Note that Vim uses UTF-8 for all Unicode encodings, conversion - from/to UCS-2 is automatically changed to use UTF-8. You - cannot use UCS-2 in a string anyway, because of the NUL bytes. - {only available when compiled with the +multi_byte feature} +< Note Vimは全てのUnicodeエンコーディングに対してUTF-8を使う。UCS-2 + との変換を行おうとしても、自動的にUTF-8との変換に変更される。 + いずれにせよ、UCS-2はNULバイトを含むため、文字列にUCS-2を使う + ことはできない。 + {+multi_byte機能付きでコンパイルされたときのみ利用可能} *indent()* -indent({lnum}) The result is a Number, which is indent of line {lnum} in the - current buffer. The indent is counted in spaces, the value - of 'tabstop' is relevant. {lnum} is used just like in - |getline()|. - When {lnum} is invalid -1 is returned. +indent({lnum}) 結果は数値で、カレントバッファの{lnum}行目のインデント量。この + インデント量はスペース単位で数えられ、'tabstop'の値は関係ない。 + {lnum}は|getline()|の場合と同様に扱われる。 + {lnum}が無効なときは-1を返す。 index({list}, {expr} [, {start} [, {ic}]]) *index()* - Return the lowest index in |List| {list} where the item has a - value equal to {expr}. - If {start} is given then start looking at the item with index - {start} (may be negative for an item relative to the end). - When {ic} is given and it is non-zero, ignore case. Otherwise - case must match. - -1 is returned when {expr} is not found in {list}. - Example: > + リスト|List| {list}の中で、{expr}に等しい要素の最小のインデッ + クスを返す。 + {start}が指定された場合はインデックス{start}から要素の検索を始 + める(負数を指定すると末尾からの相対位置となる)。 + {ic}に0でない値が指定された場合、大文字・小文字は区別されない。 + そうでない場合は区別される。 + {list}の中に{expr}が見つからない場合は-1を返す。 + 例: > :let idx = index(words, "the") :if index(numbers, 123) >= 0 - input({prompt} [, {text} [, {completion}]]) *input()* - 結果は文字列で、ユーザがコマンドラインに入力したものが返され - る。引数はプロンプト用文字列であり、プロンプトが必要なければ空 - 文字列でかまわない。新しい行から入力させるために'\n'をプロンプ - トに使用することができる。ハイライトセット|:echohl|はプロンプ - トにも適用される。入力はコマンドラインと同様に行え、幾つかの編 - 集コマンドやキーマップもそのまま使用できる。input()に入力され - た文字列には、他の履歴とは独立した履歴が与えられる。 + 結果は文字列で、ユーザがコマンドラインに入力したものが返される。 + 引数はプロンプト用文字列であり、プロンプトが必要なければ空文字 + 列でかまわない。新しい行から入力させるために'\n'をプロンプトに + 使用することができる。|:echohl|によるハイライトの設定がプロン + プトに適用される。入力はコマンドラインと同様に行え、同じ編集コ + マンドやキーマップが使用できる。input()に入力された文字列には、 + 他の履歴とは独立した履歴が与えられる。 + 例: > + :if input("Coffee or beer? ") == "beer" + : echo "Cheers!" + :endif +< + 省略可能な引数{text}が与えられ、空でないならば、それが入力の初 + 期値として、ユーザが入力したのと同じ様に表示される。例: > + :let color = input("Color? ", "white") + +< 省略可能な引数{completion}はこの入力において利用できる補完の種 + 類を指定する。この引数がないときは補完は行われない。対応してい + る補完の種類は、ユーザ定義コマンドにおいて引数"-complete="で指 + 定するものと同じである。詳しくは|:command-completion|を参照。 + 例: > + let fname = input("File: ", "", "file") +< NOTE: この関数はGUIモードしか持たないバージョン(例、Win32 GUI) のVimでは、スタートアップファイルの中で使用することはできな い。 + NOTE: マッピングの中からinput()を呼ぶと、そのマッピングの残り + の文字が消費される。マッピングは、その文字が入力されたときと同 + じように処理されるためである。 + これを避けるには、input()の前に|inputsave()|を呼び、input()の + 後に|inputrestore()|を呼ぶ。もう1つの対策は、|:execute|や + |:normal|を使うなどして、そのマッピングでそれ以上文字を続けな + いようにすることである。 + + マッピングと同時に使う例: > + :nmap \x :call GetFoo():exe "/" . Foo + :function GetFoo() + : call inputsave() + : let g:Foo = input("enter search pattern: ") + : call inputrestore() + :endfunction - 例: -> :if input("Coffee or beer? ") == "beer" -> : echo "Cheers!" -> :endif +inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()* + input()と同様。GUIで動作していて、テキストダイアログがサポート + されている場合はダイアログを表示してテキストを入力させる。 + 例: > + :let n = inputdialog("value for shiftwidth", &sw) + :if n != "" + : let &sw = n + :endif +< ダイアログがキャンセルされたときは{cancelreturn}を返す。 + {cancelreturn}が省略されているときは空文字列を返す。 + を押すとOKボタンを押すのと同じ動作になる。を押すと + キャンセルボタンを押すのと同じ動作になる。 + NOTE: コマンドライン補完は対応していない。 inputlist({textlist}) *inputlist()* - {textlist} must be a |List| of strings. This |List| is - displayed, one string per line. The user will be prompted to - enter a number, which is returned. - The user can also select an item by clicking on it with the - mouse. For the first string 0 is returned. When clicking - above the first item a negative number is returned. When - clicking on the prompt one more than the length of {textlist} - is returned. - Make sure {textlist} has less then 'lines' entries, otherwise - it won't work. It's a good idea to put the entry number at - the start of the string. And put a prompt in the first item. - Example: > + {textlist}は文字列のリスト|List|でなければならない。1行につき + リストの要素を1個表示し、ユーザに数字を入力するよう促す。入力 + された数字を返す。 + ユーザはマウスで文字列をクリックすることでも選択できる。最初の + 文字列を選択すると0が返る。最初の文字列より上をクリックすると + 負数が返る。プロンプト自身をクリックすると{textlist}の長さ+1が + 返る。 + {textlist}の要素数はオプション'lines'の値より少なくなければな + らない。そうでないと動作しない。最初の要素にメッセージを書き、 + 各文字列の先頭に番号をつけておくとよい。 + 例: > let color = inputlist(['Select color:', '1. red', \ '2. green', '3. blue']) inputrestore() *inputrestore()* - Restore typeahead that was saved with a previous inputsave(). - Should be called the same number of times inputsave() is - called. Calling it more often is harmless though. - Returns 1 when there is nothing to restore, 0 otherwise. + 前回のinputsave()で保存しておいた先行入力を復元する。 + inputsave()と同じ回数だけ呼ぶようにしなければならない。しかし + 多く呼びすぎても害はない。復元するものがなければ1を、そうでな + ければ0を返す。 inputsave() *inputsave()* - Preserve typeahead (also from mappings) and clear it, so that - a following prompt gets input from the user. Should be - followed by a matching inputrestore() after the prompt. Can - be used several times, in which case there must be just as - many inputrestore() calls. - Returns 1 when out of memory, 0 otherwise. + 先行入力(マッピングにより入力された文字も含む)を保存し、クリア + することにより、これ以降のプロンプトがユーザからの入力を得るよ + うにする。プロンプトの後で、対応するinputrestore()を呼び出さね + ばならない。複数回呼ぶこともできる。ただしその場合は同じ回数だ + けinputrestore()を呼ばなくてはならない。 + メモリ不足のときは1を、そうでなければ0を返す。 inputsecret({prompt} [, {text}]) *inputsecret()* - This function acts much like the |input()| function with but - two exceptions: - a) the user's response will be displayed as a sequence of - asterisks ("*") thereby keeping the entry secret, and - b) the user's response will not be recorded on the input - |history| stack. - The result is a String, which is whatever the user actually - typed on the command-line in response to the issued prompt. - NOTE: Command-line completion is not supported. + |input()|とほぼ同じだが、以下の2点が異なる: + a) ユーザの入力をアスタリスク("*")の列として表示し、入力内容を + 読めないようにする。 + b) ユーザの入力が入力履歴|history|に残らない。 + ユーザの入力内容を文字列として返す。 + NOTE: コマンドライン補完には対応していない。 insert({list}, {item} [, {idx}]) *insert()* - Insert {item} at the start of |List| {list}. - If {idx} is specified insert {item} before the item with index - {idx}. If {idx} is zero it goes before the first item, just - like omitting {idx}. A negative {idx} is also possible, see - |list-index|. -1 inserts just before the last item. - Returns the resulting |List|. Examples: > + リスト|List| {list}の初めに{item}を挿入する。 + {idx}が指定されたときはインデックス{idx}の要素の前に{item}を挿 + 入する。{idx}が0のときは{idx}を省略した場合と同じ様に最初の要 + 素の前に挿入する。{idx}は負数でもよい(|list-index|参照)。-1を + 指定すると最後の要素の前に挿入する。 + 挿入した結果のリストを返す。例: > :let mylist = insert([2, 3, 5], 1) :call insert(mylist, 4, -1) :call insert(mylist, 6, len(mylist)) -< The last example can be done simpler with |add()|. - Note that when {item} is a |List| it is inserted as a single - item. Use |extend()| to concatenate |Lists|. +< 最後の例は|add()|を使うともっと簡単に書ける。 + Note {item}がリストの場合は、1個の要素として追加される。リスト + を連結するには|extend()|を使うこと。 *isdirectory()* isdirectory({directory}) @@ -3218,63 +3219,64 @@ isdirectory({directory}) わない。 islocked({expr}) *islocked()* *E786* - The result is a Number, which is non-zero when {expr} is the - name of a locked variable. - {expr} must be the name of a variable, |List| item or - |Dictionary| entry, not the variable itself! Example: > + 結果は数値で、{expr}がロックされている変数の名前ならば非0を返 + す。 + {expr}は変数の名前、リストの要素、辞書の要素のいずれかでなけれ + ばならない。変数そのものを指定しないように注意。例: > :let alist = [0, ['a', 'b'], 2, 3] :lockvar 1 alist :echo islocked('alist') " 1 :echo islocked('alist[1]') " 0 -< When {expr} is a variable that does not exist you get an error - message. Use |exists()| to check for existence. +< {expr}が存在しない変数のときはエラーメッセージが表示される。変 + 数の存在を確認するには|exist()|を使う。 items({dict}) *items()* - Return a |List| with all the key-value pairs of {dict}. Each - |List| item is a list with two items: the key of a {dict} - entry and the value of this entry. The |List| is in arbitrary - order. + {dict}の全要素のキー・値のペアからなるリストを返す。戻り値の各 + 要素はリストであり、キーと値の2個の要素を持つ。戻り値のリスト + の要素の順序は不定である。 join({list} [, {sep}]) *join()* - Join the items in {list} together into one String. - When {sep} is specified it is put in between the items. If - {sep} is omitted a single space is used. - Note that {sep} is not added at the end. You might want to - add it there too: > + リスト{list}の要素を連結し、1個の文字列にして返す。 + {sep}が指定されたときは、要素の間にそれを挿入する。{sep}が指定 + されたときは1個のスペースが使われる。 + Note 末尾には{sep}がつかない。末尾にもつけたければ以下のように + する: > let lines = join(mylist, "\n") . "\n" -< String items are used as-is. |Lists| and |Dictionaries| are - converted into a string like with |string()|. - The opposite function is |split()|. +< {list}の要素が文字列なら、そのまま使われる。リストと辞書は + |string()|を使ったときと同じようにして文字列に変換される。 + この逆を行う関数は|split()|である。 keys({dict}) *keys()* - Return a |List| with all the keys of {dict}. The |List| is in - arbitrary order. + {dict}の全キーからなるリストを返す。リストの順序は不定である。 *len()* *E701* -len({expr}) The result is a Number, which is the length of the argument. - When {expr} is a String or a Number the length in bytes is - used, as with |strlen()|. - When {expr} is a |List| the number of items in the |List| is - returned. - When {expr} is a |Dictionary| the number of entries in the - |Dictionary| is returned. - Otherwise an error is given. +len({expr}) 結果は数値で、引数{expr}の長さ。{expr}が文字列または数値のとき + は|strlen()|と同じようにバイト単位での長さを返す。 + {expr}がリストのときは要素数を返す。 + {expr}が辞書のときは要素数を返す。 + それ以外のときはエラーとなる。 *libcall()* libcall({libname}, {funcname}, {argument}) ランタイムライブラリ{libname}の関数{funcname}を、引数 - {argument}として呼び出す。結果には、呼び出した関数から返された - 文字列が返される。もしも引数が数値ならば、関数にはint型の引数 - が1つ渡される。引数が文字列の場合には、関数にはヌル終端記号を - 持つ文字列が引数として渡される。呼び出した関数がNULLを返した場 - 合には、Vimには空文字列""が戻される。 - - libcall()によってVimを最コンパイルすることなく'plug-in'と呼ば - れる独自の拡張を行なうことができる用になる。それは(直接)システ - ムの関数を呼ぶ、ということではない。システム関数を呼んだらVim - がクラッシュするかもしれない。 + {argument}として呼び出す。 + Vimで使うように特別に作ったライブラリの関数を呼ぶために使われ + る。引数は1個しか指定できないため、普通のライブラリ関数を呼ぶ + にはかなり制限がある。 + 結果には、呼び出した関数から返された文字列が返される。呼び出し + た関数がNULLを返した場合には、Vimには空文字列""が戻される。 + 関数の戻り値が数値である場合には|libcallnr()|を使うこと。 + もしも引数が数値ならば、関数にはint型の引数が1つ渡される。引数 + が文字列の場合には、関数にはヌル終端記号を持つ文字列が引数とし + て渡される。 + |restrict-mode|の中で呼ぶと失敗する。 + + libcall()によってVimを再コンパイルすることなく'plug-in'と呼ば + れる独自の拡張を行なうことができるようになる。それは(直接)シス + テムの関数を呼ぶ、ということではない。システム関数を呼ぶとおそ + らくVimがクラッシュするだろう。 Win32では、あなたが書いた関数をDLLに置かなければならず、また通 常のC呼出し規約を使用しなければならない(WindowsのシステムDLLが @@ -3293,15 +3295,18 @@ libcall({libname}, {funcname}, {argument}) Win32のシステムでは、{libname}はDLLのファイル名の拡張子".DLL" を付けてはならない。通常の(パスの通った)場所にDLLがない場合に は、フルパスで指定する必要がある。 - {Win32バージョン限定の機能} - + Unixでは、独自のプラグインをコンパイルするときはオブジェクトコー + ドを位置独立('PIC')としてコンパイルしなければならない。 + {Win32と、|+libcall|機能が有効になっているUnixでのみ利用可能} + 例: > + :echo libcall("libc.so", "getenv", "HOME") + :echo libcallnr("/usr/lib/libc.so", "getpid", "") +< *libcallnr()* libcallnr({libname}, {funcname}, {argument}) - Just like libcall(), but used for a function that returns an - int instead of a string. - {only in Win32 on some Unix versions, when the |+libcall| - feature is present} - Example (not very useful...): > + libcall()とほぼ同様だが、文字列でなくintを返す関数に使う。 + {Win32と、|+libcall|機能が有効になっているUnixでのみ利用可能} + 例 (あまり役に立たないが…): > :call libcallnr("libc.so", "printf", "Hello World!\n") :call libcallnr("libc.so", "sleep", 10) < @@ -3312,21 +3317,21 @@ line({expr}) 結果は数値で、{expr}で与えられた位置のファイル $ 現在のバッファの最後の位置 'x マークxの位置(マークが設定されていない場合、0が返 る) - w0 first line visible in current window - w$ last line visible in current window - Note that a mark in another file can be used. The line number - then applies to another buffer. - To get the column number use |col()|. To get both use - |getpos()|. - 例: -> line(".") カーソルの行番号 -> line("'t") マークtの位置の行番号 -> line("'" . marker) マークmarkerの位置の行番号 - *last-position-jump* - このautocommandはファイルを開いた時に、最後に開かれていた時の - 行へ自動的にジャンプするものである。これは'"マークがセットされ - ている時にのみ有効である: -> :au BufReadPost * if line("'\"") | exe "normal '\"" | endif + w0 カレントウィンドウの最上行 + w$ カレントウィンドウの最下行 + Note 他のファイルのマークも使える。その場合、戻り値はそのファ + イルの行番号となる。 + 桁番号を取得するには|col()|を使う。両方を取得するには + |getpos()|を使う。 + 例: > + line(".") カーソルの行番号 + line("'t") マークtの位置の行番号 + line("'" . marker) マークmarkerの位置の行番号 +< *last-position-jump* + このオートコマンドはファイルを開いた時に、最後に開かれていた時 + の行へ自動的にジャンプするものである。これは'"マークがセットさ + れている時にのみ有効である: > + :au BufReadPost * if line("'\"") | exe "normal '\"" | endif *line2byte()* line2byte({lnum}) @@ -3334,20 +3339,20 @@ line2byte({lnum}) 在のバッファのオプション'fileformat'に従った、end-of-line(行終 端)文字も含まれている。最初の行においては1が返る。 次のようにすることで最終行を含むバイトサイズを獲得することがで - きる: -> line2byte(line("$") + 1) - これはファイルの大きさプラス1になる。 + きる: > + line2byte(line("$") + 1) +< これはファイルの大きさプラス1になる。 {lnum}が無効であるか、|+byte_offset|機能がコンパイル時に無効に されている場合、-1が返される。 |byte2line()|、|go|及び|:goto|も参照。 lispindent({lnum}) *lispindent()* - Get the amount of indent for line {lnum} according the lisp - indenting rules, as with 'lisp'. - The indent is counted in spaces, the value of 'tabstop' is - relevant. {lnum} is used just like in |getline()|. - When {lnum} is invalid or Vim was not compiled the - |+lispindent| feature, -1 is returned. + 'lisp'をオンにしたときと同じlisp用のインデント規則に従った場合 + の{lnum}行目のインデント量を返す。 + インデント量はスペースで数えられ、'tabstop'の値は関係ない。 + {lnum}は|getline()|の場合と同様に扱われる。 + {lnum}が無効な値のときや|+lispindent|機能なしでコンパイルされ + ているときは-1を返す。 *localtime()* localtime() @@ -3355,27 +3360,24 @@ localtime() |getftime()|も参照。 map({expr}, {string}) *map()* - {expr} must be a |List| or a |Dictionary|. - Replace each item in {expr} with the result of evaluating - {string}. - Inside {string} |v:val| has the value of the current item. - For a |Dictionary| |v:key| has the key of the current item. - Example: > + {expr}はリスト|List|または辞書|Dictionary|。 + {expr}の各要素を、{string}を評価した結果で置き換える。 + {string}の中では|v:val|が現在の要素の値を保持している。 + 辞書の場合は|v:key|が現在の要素のキーを保持している。 + 例: > :call map(mylist, '"> " . v:val . " <"') -< This puts "> " before and " <" after each item in "mylist". +< これは"mylist"の各要素の前に"> "をつけ、後に" <"をつける。 - Note that {string} is the result of an expression and is then - used as an expression again. Often it is good to use a - |literal-string| to avoid having to double backslashes. You - still have to double ' quotes + Note {string}は式を表す文字列である。バックスラッシュを二重に + しなくても済むように|literal-string|を使うとよいだろう。ただし + その場合はシングルクォートを2重にしなければならない。 - The operation is done in-place. If you want a |List| or - |Dictionary| to remain unmodified make a copy first: > + この操作はその場で(in-place)行われる。リストや辞書を変更したく + ない場合は最初にコピーを作ること: > :let tlist = map(copy(mylist), ' & . "\t"') -< Returns {expr}, the |List| or |Dictionary| that was filtered. - When an error is encountered while evaluating {string} no - further items in {expr} are processed. +< 式を適用した結果の{expr}を返す。{string}を評価している最中にエ + ラーが発生した場合は、それ以降の要素は処理されない。 maparg({name}[, {mode} [, {abbr}]]) *maparg()* @@ -3387,122 +3389,137 @@ maparg({name}[, {mode} [, {abbr}]]) *maparg()* "o" モーション待ち (Operator-pending) "i" インサート "c" コマンドライン + "l" langmap |language-mapping| "" ノーマル、ビジュアル、及びモーション待ち {mode}が省略された場合、""が使用される。 - When {abbr} is there and it is non-zero use abbreviations - instead of mappings. + {abbr}が指定され、0でない場合はマッピングでなく短縮入力を対象 + とする。 {name}には":map"コマンドで使用可能な、特殊なキー名が指定でき る。結果の文字列内の特殊文字は、":map"コマンドでリスト表示した 時のように変換される。 - The mappings local to the current buffer are checked first, - then the global mappings. - This function can be used to map a key even when it's already - mapped, and have it do the original mapping too. Sketch: > + まずカレントバッファにローカルなマッピングを探し、次のグローバ + ルマッピングを探す。 + この関数を使うと、あるキーに対して既にマップがされているとき、 + その動作を行いつつ、再マップすることができる。概要: > exe 'nnoremap ==' . maparg('', 'n') - mapcheck({name}[, {mode} [, {abbr}]]) *mapcheck()* モード{mode}におけるキーマップ{name}が存在するかチェックする。 {name}に指定できる特殊文字は|maparg()|を参照。 - When {abbr} is there and it is non-zero use abbreviations - instead of mappings. - {name}に対応するキーマップが存在しない時には、空文字列が返され - る。結果が一つならばマップされたrhsが返される。複数見つかった - 場合には、それらのうちどれか一つのrhsが返される。 + {abbr}が指定され、0でない場合はマッピングでなく短縮入力を対象 + とする。 + マッピングが{name}で始まるとき、またはマッピングが{name}のはじ + めに等しいときマッチすると見なされる。 + + マッチするか "a" "ab" "abc" ~ + mapcheck("a") yes yes yes + mapcheck("abc") yes yes yes + mapcheck("ax") yes no no + mapcheck("b") no no no + + maparg()との違いは、mapcheck()は{name}にマッチするマップを見つ + けるが、maparg()はぴったり{name}に一致するマッピングのみを見つ + ける。 + {name}にマッチするキーマップが存在しない時には、空文字列が返さ + れる。結果が一つならばマップされたrhsが返される。複数見つかっ + た場合には、それらのうちどれか一つのrhsが返される。 + まずカレントバッファにローカルなマッピングを探し、次のグローバ + ルマッピングを探す。 この関数はマッピングが曖昧にならないかチェックするために使うこ - とができる。例: -> if mapcheck("_vv") == "" -> map _vv :set guifont=7x13 -> endif - "_vv"というマッピングは"_v"とか"_vvv"といったマッピングと衝突 - する可能性がある。 - + とができる。例: > + :if mapcheck("_vv") == "" + : map _vv :set guifont=7x13 + :endif +< これは、"_vv"というマッピングが"_v"とか"_vvv"といったマッピン + グと衝突しないように事前にチェックしている。 match({expr}, {pat}[, {start}[, {count}]]) *match()* - When {expr} is a |List| then this returns the index of the - first item where {pat} matches. Each item is used as a - String, |Lists| and |Dictionaries| are used as echoed. - Otherwise, {expr} is used as a String. The result is a - Number, which gives the index (byte offset) in {expr} where - {pat} matches. - A match at the first character or |List| item returns zero. - If there is no match -1 is returned. - Example: > - :echo match("testing", "ing") " results in 4 - :echo match([1, 'x'], '\a') " results in 1 -< See |string-match| for how {pat} is used. + {expr}がリストの場合は、{pat}にマッチする最初の要素のインデッ + クスを返す。各要素は文字列として扱われる。リストと辞書はechoし + たときと同じように文字列表現に変換される。 + それ以外の場合は、{expr}は文字列として扱われる。{expr}の中で + {pat}にマッチするインデックス(バイト単位のオフセット)を表す数 + 値を返す。 + 最初の文字またはリストの最初の要素にマッチしたときは0を返す。 + マッチがないときは-1を返す。 + 例: > + :echo match("testing", "ing") " 結果は 4 + :echo match([1, 'x'], '\a') " 結果は 1 +< {pat}の扱われ方については|string-match|を参照。 *strpbrk()* - Vim doesn't have a strpbrk() function. But you can do: > + strpbrk()に相当する関数はVimに存在しない。しかし同じことを次の + ようにしてできる: > :let sepidx = match(line, '[.,;: \t]') < *strcasestr()* - Vim doesn't have a strcasestr() function. But you can add - "\c" to the pattern to ignore case: > + strcasestr()に相当する関数はVimに存在しない。しかし正規表現に + "\c"をつければ大文字・小文字の違いを無視できる: > :let idx = match(haystack, '\cneedle') < - If {start} is given, the search starts from byte index - {start} in a String or item {start} in a |List|. - The result, however, is still the index counted from the - first character/item. Example: > + {start}が指定されたときは、文字列のバイトインデックス{start}の + 位置、またはリストの{start}の要素から検索を始める。 + その場合も戻り値は最初の文字/要素から数えたインデックスである + ことに注意。例: > :echo match("testing", "ing", 2) -< result is again "4". > +< の結果は"4"。 > :echo match("testing", "ing", 4) -< result is again "4". > +< の結果は"4"。 > :echo match("testing", "t", 2) -< result is "3". - For a String, if {start} > 0 then it is like the string starts - {start} bytes later, thus "^" will match at {start}. Except - when {count} is given, then it's like matches before the - {start} byte are ignored (this is a bit complicated to keep it - backwards compatible). - For a String, if {start} < 0, it will be set to 0. For a list - the index is counted from the end. - If {start} is out of range ({start} > strlen({expr}) for a - String or {start} > len({expr}) for a |List|) -1 is returned. - - When {count} is given use the {count}'th match. When a match - is found in a String the search for the next one starts one - character further. Thus this example results in 1: > +< の結果は"3"。 + 文字列の場合、{start} > 0のときは、その文字列が{start}バイト後 + から始まるかのように扱われる。そのため、"^"は{start}の位置にマッ + チする。ただし{count}が指定されたときは、{start}より前における + マッチを無視しているかのように振る舞う(これは後方互換性を保つ + のを少々複雑にしている)。 + 文字列の場合、{start} < 0のときは{start}に0をセットする。リス + トの場合は、末尾からインデックスを数えるという意味になる。 + {start}が範囲外の場合(文字列で{start} > strlen({expr})となった + 場合、リストで{start} > len({expr})となった場合)は-1を返す。 + + {count}が指定されたときは{count}番目のマッチ位置を返す。文字列 + でマッチが見つかったとき、次のマッチングは1文字先から行われる。 + よって次の例は1を返す: > echo match("testing", "..", 0, 2) -< In a |List| the search continues in the next item. - Note that when {count} is added the way {start} works changes, - see above. +< リストの場合は次の要素から検索を続ける。 + Note {count}を指定すると、{start}の扱い方が変わってしまう。 + 前の段落を参照。 - See |pattern| for the patterns that are accepted. - The 'ignorecase' option is used to set the ignore-caseness of - the pattern. 'smartcase' is NOT used. The matching is always - done like 'magic' is set and 'cpoptions' is empty. + 受け付ける正規表現については|pattern|を参照。 + オプション'ignorecase'により、大文字・小文字を区別するかどうか + を設定できる。'smartcase'は適用されない。マッチングは常に + 'magic'をオン、'cpoptions'を空にした状態で行われる。 matcharg({nr}) *matcharg()* - Selects the {nr} match item, as set with a |:match|, - |:2match| or |:3match| command. - Return a |List| with two elements: - The name of the highlight group used - The pattern used. - When {nr} is not 1, 2 or 3 returns an empty |List|. - When there is no match item set returns ['', '']. - This is usef to save and restore a |:match|. + |:match|、|:2match|、|:3match|によって設定されているマッチパター + ンの情報を返す。{nr}が1のときは|:match|の情報、2のときは + |:2match|の情報、3のときは|:3match|の情報を返す。 + 戻り値は次の2個の要素を持つリストである: + 引数で指定したハイライトグループ名 + 引数で指定した検索パターン + {nr}が1、2、3のどれでもないときは空リストを返す。 + マッチパターンがセットされていないときは['', '']を返す。 + |:match|を保存し、復元するために使われる。 *matchend()* matchend({expr}, {pat}) match()と同じだが、返されるのはマッチした部分文字列の終了後の - インデックスである。例: -> :echo matchend("testing", "ing") - 結果は"7"。 + インデックスである。例: > + :echo matchend("testing", "ing") +< 結果は"7"。 *strspn()* *strcspn()* - Vim doesn't have a strspn() or strcspn() function, but you can - do it with matchend(): > + Vimにはstrspn()やstrcspn()に相当する関数はないが、matchend()を + 使えば同じことができる: > :let span = matchend(line, '[a-zA-Z]') :let span = matchend(line, '[^a-zA-Z]') -< Except that -1 is returned when there are no matches. +< ただしマッチがないときには-1を返すところが異なる。 - The {start}, if given, has the same meaning as for match(). > + {start}はmatch()の場合と同じ意味を持つ。 > :echo matchend("testing", "ing", 2) -< results in "7". > +< 結果は"7"。 > :echo matchend("testing", "ing", 5) -< result is "-1". - When {expr} is a |List| the result is equal to match(). +< 結果は"-1"。 + {expr}がリストの場合、戻り値はmatch()と等しくなる。 matchlist({expr}, {pat}[, {start}[, {count}]]) *matchlist()* Same as match(), but return a |List|. The first item in the @@ -4820,14 +4837,12 @@ tempname() > exe "redir > " . tmpfile tolower({expr}) *tolower()* - The result is a copy of the String given, with all uppercase - characters turned into lowercase (just like applying |gu| to - the string). + 引数の文字列の大文字を小文字に変換してできた文字列を返す(文字 + 列に|gu|を適用するのとちょうど同じ)。 toupper({expr}) *toupper()* - The result is a copy of the String given, with all lowercase - characters turned into uppercase (just like applying |gU| to - the string). + 引数の文字列の小文字を大文字に変換してできた文字列を返す(文字 + 列に|gU|を適用するのとちょうど同じ)。 tr({src}, {fromstr}, {tostr}) *tr()* The result is a copy of the {src} string with all characters @@ -4844,13 +4859,13 @@ tr({src}, {fromstr}, {tostr}) *tr()* < returns "{blob}" *type()* -type({expr}) The result is a Number, depending on the type of {expr}: - Number: 0 - String: 1 +type({expr}) {expr}の型を示す数値を返す: + 数値: 0 + 文字列: 1 Funcref: 2 - List: 3 - Dictionary: 4 - To avoid the magic numbers it should be used this way: > + リスト: 3 + 辞書: 4 + マジックナンバーを使わず次のように使うべきである: > :if type(myvar) == type(0) :if type(myvar) == type("") :if type(myvar) == type(function("tr")) @@ -4858,6 +4873,7 @@ type({expr}) The result is a Number, depending on the type of {expr}: :if type(myvar) == type({}) values({dict}) *values()* + Return a |List| with all the values of {dict}. The |List| is in arbitrary order. diff --git a/ja/map.jax b/ja/map.jax index 4a6bbc7ab..e4c7951a3 100644 --- a/ja/map.jax +++ b/ja/map.jax @@ -269,9 +269,9 @@ Note: 特殊キーが機能するようにしたり、テキスト中の CSI バ マップは以下の 5 つのモード別に管理されています。 - ノーマルモード: ノーマルモードのコマンドを入力するとき。 - ビジュアルモード: ビジュアルモードのコマンドを入力するとき。 -- 演算子未解決モード: コマンドを入力した後で、移動 (|{motion}|) を待っている - とき("d"、"y"、"c"、などの後)。例えば、":omap { w" と定義すると、"y{" は - "yw" として、"d{" は "dw" として機能します。 +- モーション待ちモード: コマンドを入力した後で、移動 (|{motion}|) を待って + いるとき("d"、"y"、"c"、などの後)。例えば、":omap { w" と定義すると、"y{" + は"yw" として、"d{" は "dw" として機能します。 - 挿入モード: 上書きモードでも使われます。 - コマンドラインモード: ":" もしくは "/" コマンドを入力したとき。 diff --git a/ja/options.jax b/ja/options.jax index a14c8e9ff..afccd2799 100644 --- a/ja/options.jax +++ b/ja/options.jax @@ -542,9 +542,8 @@ se[t] "set "または"se " という文字列 ( NOTE 終わりの空白に注 例えば、Vim 6.0またはそれより新しいバージョンでのみモードラインを使うにはこう する。 /* vim600: set foldmethod=marker: */ ~ -Vim 5.7より古いバージョンでのみモードラインを使うにはこうする (訳注: 原典では -vim<570とあったが、これは誤りだろう)。 - /* vim<507: set sw=4: */ ~ +Vim 5.7より古いバージョンでのみモードラインを使うにはこうする + /* vim<570: set sw=4: */ ~ "vim" と ":" の間に空白があってはならない。 From 7bd118f33df89b7e01c58993d619b50c11f0f29b Mon Sep 17 00:00:00 2001 From: AOYAMA Shotaro Date: Wed, 1 Aug 2007 01:07:58 +0000 Subject: [PATCH 109/783] fix: revised syntax.jax git-svn-id: http://vimdoc-ja.googlecode.com/svn/trunk@109 a429a4b8-4c93-91f1-de24-85204d8cde48 --- ja/syntax.jax | 1794 ++++++++++++++++++++++++------------------------- 1 file changed, 888 insertions(+), 906 deletions(-) diff --git a/ja/syntax.jax b/ja/syntax.jax index fb2ca3bb4..d3b019bfb 100644 --- a/ja/syntax.jax +++ b/ja/syntax.jax @@ -1,4 +1,4 @@ -COMMENT: 構文強調(テキストの着色) +COMMENT: 構文ハイライト(テキストの着色) STATUS: finished 7.1 TRANSLATOR: 村岡太郎 TRANSLATOR: nakadaira @@ -10,24 +10,24 @@ TRANSLATOR: 青山正太郎(mm) VIMリファレンスマニュアル by Bram Moolenaar -構文強調 *syntax* *syntax-highlighting* *coloring* +構文ハイライト *syntax* *syntax-highlighting* *coloring* -Vimは構文強調によりテキストの一部を異なるフォントや色で表示することができるよ -うになる。強調する箇所はキーワードやテキストのパターンにより指定することができ -る。Vimはファイル全体を構文解析するわけではないから(動作を速く保つため)、この -強調方法には限界が存在する。単語(レキシカル)強調と呼ぶのがより正しいが、皆が構 -文強調と呼ぶのでそう呼び続けている。 +Vimは構文ハイライトによってテキストの一部を別のフォントや色で表示することがで +きる。ハイライトするキーワードやテキストは、正規表現パターンによって指定する。 +動作を速く保つため、ファイル全体を構文解析するわけではないから、このハイライト +方法には限界が存在する。単語(レキシカル)ハイライトと呼ぶのがより正しいが、皆が +構文ハイライトと呼ぶのでそう呼び続けている。 -Vimは全ての端末で構文強調をサポートしている。しかし多くの普通の端末には非常に -限られた強調効果しか提供されていないので、強調の最も良い効果はGUI版のgvimで動 -作する。 +Vimは全ての端末で構文ハイライトをサポートしている。しかし、多くの普通の端末に +はごく限られたハイライト手段しか提供されていないので、GUI版のgvimで動作させた +ときに見栄えが最もよくなる。 ユーザマニュアルにおける記述: -|usr_06.txt| 構文強調の紹介。 +|usr_06.txt| 構文ハイライトの紹介。 |usr_44.txt| 構文ファイルの記述方法の紹介。 1. クイックスタート |:syn-qstart| -2. 構文強調ファイル |:syn-files| +2. 構文ファイル |:syn-files| 3. 構文ファイル読込の手順 |syntax-loading| 4. 構文ファイルの覚書 |:syn-file-remarks| 5. 構文を定義する |:syn-define| @@ -37,22 +37,22 @@ Vimは全ての端末で構文強調をサポートしている。しかし多 9. 構文ファイルのインクルード |:syn-include| 10. 表示のシンクロナイズ |:syn-sync| 11. 構文アイテムのリストを表示する |:syntax| -12. 強調コマンド |:highlight| +12. ハイライトコマンド |:highlight| 13. グループのリンク |:highlight-link| 14. 構文の消去 |:syn-clear| -15. タグの強調 |tag-highlight| -16. カラーxterms |xterm-color| +15. 関数名などのハイライト |tag-highlight| +16. カラー対応xterm |xterm-color| {これらのコマンドはViには存在しない} -コンパイル時に|+syntax|機能を無効にした場合には構文強調は利用することはできな -い。 +コンパイル時に|+syntax|機能を無効にした場合には構文ハイライトは利用することは +できない。 ============================================================================== 1. クイックスタート *:syn-qstart* *:syn-enable* *:syntax-enable* -次のコマンドで構文強調が有効になる: > +次のコマンドで構文ハイライトが有効になる: > :syntax enable @@ -60,56 +60,55 @@ Vimは全ての端末で構文強調をサポートしている。しかし多 :source $VIMRUNTIME/syntax/syntax.vim 環境変数VIMが設定されていない場合は、Vimは別の方法(|$VIMRUNTIME|参照)でパスの -検索を試みる。通常これでうまくいく。もしもうまく動作しない場合、環境変数VIMに -Vimの構成ファイルが置いてあるディレクトリの設定を試みる。例えば、構文ファイル -がディレクトリ"/usr/vim/vim50/syntax"にあるならば、$VIMRUNTIMEに -"/usr/vim/vim50"を設定する。これはVimを起動する前に、シェルで設定しておかなけ -ればならない。 +検索を試みる。通常はこれでうまくいく。うまく動作しない場合は、環境変数VIMにVim +の構成ファイルが置いてあるディレクトリの設定を試みる。例えば、構文ファイルがディ +レクトリ"/usr/vim/vim50/syntax"にあるならば、$VIMRUNTIMEに"/usr/vim/vim50"を設 +定する。これはVimを起動する前に、シェルで設定しておかなければならない。 *:syn-on* *:syntax-on* -コマンド":syntax enable"は現在の色設定を保持する。これによりこのコマンドを使用 -する前後にコマンド":highlight"で好みの色を設定することが可能になる。Vimにより -強制的にデフォルトの色を設定させたい場合は次のコマンドを使用する: > +コマンド":syntax enable"は現在の色設定を変更しない。そのため、このコマンドを使 +用する前後にコマンド":highlight"で好みの色を設定することができる。現在の設定を +破棄して、デフォルトの色を設定させたい場合は次のコマンドを使用する: > :syntax on < *:hi-normal* *:highlight-normal* GUIを使用している場合は、次のコマンドで黒地に白文字を設定できる: > :highlight Normal guibg=Black guifg=White カラー端末については|:hi-normal-cterm|を参照。 -独自色の構文強調を設定する方法については|syncolor|を参照。 +自分自身で色を設定する方法については|syncolor|を参照。 NOTE: MS-DOSとWindowsの構文ファイルは改行コードがである。UNIXでは -である。これは使用しているシステムに合ったタイプのファイルを使わなければならな -いことを意味している。しかしながらMS-DOSとWindowsではオプション'fileformats'が -空でなければ正しい形式が自動的に選択される。 +である。自分のシステムに合った改行コードのファイルを使わなければならない。しか +し、MS-DOSとWindowsではオプション'fileformats'が空でなければ正しい形式が自動的 +に選択される。 -NOTE: 反転表示("gvim -fg white -bg black")を使用する際は、|gvimrc|が読込まれた -後で、GUIウィンドウが開かれるまでオプション'background'のデフォルト値が設定さ -れない。そのせいで誤ったデフォルト強調手法が使用されてしまう。強調表示を有効化 +NOTE: 反転表示("gvim -fg white -bg black")を使用する場合、|gvimrc|が読込まれた +後、GUIウィンドウが開かれるまでは'background'のデフォルト値が設定されない。そ +のせいで誤ったデフォルトのハイライトが使用されてしまう。ハイライト表示を有効化 する前に'background'のデフォルト値を設定するには、|gvimrc|にコマンド":gui"を含 -める: > +めればよい: > - :gui " ウィンドウを開き'background'にデフォルト値を設定する - :syntax on " 強調を有効化し、色を設定するのに'background'を使用する + :gui " ウィンドウを開き、'background'にデフォルト値を設定する + :syntax on " ハイライトを有効化し、'background'にもとづいて色を設定する NOTE: |.gvimrc|の中で":gui"を使用すると"gvim -f"によりフォアグラウンドで開始す ることができなくなる。その際は":gui -f"を使用すること。 -次のコマンドで構文強調の有・無効を切換えることができる > +次のコマンドで構文ハイライトの有効・無効を切換えることができる > :if exists("syntax_on") | syntax off | else | syntax enable | endif -これをキーマップに設定するには、以下の設定を使うことができる: > +これをキーマップに設定するには、以下のように書く: > :map :if exists("syntax_on") \ syntax off \ else \ syntax enable \ endif -[|<>|表記を入力する際は、文字通りそのままキー入力する] +[全ての文字をそのまま入力すること] 詳細 -コマンド":syntax"はファイルを取り込むことで実装されている。その際取り込まれる -ファイルの中身を見ることで、このコマンドがどのように動作しているのか正確に知る +コマンド":syntax"はファイルをsourceすることで実装されている。その際にsourceさ +れるファイルの中身を見れば、このコマンドがどのように動作しているのか正確に知る ことができる。 コマンド ファイル ~ :syntax enable $VIMRUNTIME/syntax/syntax.vim @@ -119,32 +118,33 @@ NOTE: |.gvimrc|の中で":gui"を使用すると"gvim -f"によりフォアグ |syntax-loading|も参照。 ============================================================================== -2. 構文強調ファイル *:syn-files* +2. 構文ハイライトファイル *:syn-files* -ある1つの言語用の構文と強調色定義コマンドは通常1つのファイル(以下構文ファイル) -に格納される。名前は"{name}.vim"と付ける慣習になっている。{name}はその言語の名 -前か短縮名となる(DOSファイルシステムで要求される、8.3文字の形式にあわせること -が望ましい)。 +ある1つの言語用の構文とハイライト色定義コマンドは通常1つのファイル(以下構文ファ +イル)に格納される。名前は"{name}.vim"と付ける慣習になっている。{name}はその言 +語の名前か短縮名となる(DOSファイルシステムで要求される、8.3文字の形式にあわせ +ることが望ましい)。 例: c.vim perl.vim java.vim html.vim cpp.vim sh.vim csh.vim -構文ファイルはvimrcファイルと同様にExコマンドを記述することができる。しかし1つ -のファイルには或る1つの言語用コマンドのみを記載するよう取り決めている。ある言 -語が別の言語のスーパーセットである時には、他のファイルを内包していても良く、例 -えば、ファイルcpp.vimはファイルc.vimを取り込むようになっている: > +構文ファイルには、vimrcファイルと同様にExコマンドを記述できる。しかし1つのファ +イルには、1つの言語のためのコマンドだけを記述するよう取り決めている。ある言語 +が別の言語のスーパーセットである時には、他のファイルを内包していても良く、例え +ば、ファイルcpp.vimはファイルc.vimを取り込むようになっている: > :so $VIMRUNTIME/syntax/c.vim -通常それら構文ファイル*.vimは自動実行コマンドにより読込まれる。例: > +通常これらの構文ファイルはオートコマンドにより読込まれる。例: > :au Syntax c source $VIMRUNTIME/syntax/c.vim :au Syntax cpp source $VIMRUNTIME/syntax/cpp.vim -通常このようなコマンドはファイル$VIMRUNTIME/syntax/synload.vimに在る。 +このようなコマンドはファイル$VIMRUNTIME/syntax/synload.vimに書かれている。 + 独自構文ファイルの作成 *mysyntaxfile* -独自の構文ファイルを作成し、そのファイルを":syntax enable"によって自動的にVim -に使わせるようにするには、以下のようにする: +独自の構文ファイルを作成し、":syntax enable"をしたとき自動的にそのファイルが使 +われるようにするには、以下のようにする: 1. ユーザランタイムディレクトリを作成する。通常はオプション'runtimepath'に示さ れる最初のディレクトリを使用する。UNIXの例では: > @@ -161,17 +161,17 @@ NOTE: |.gvimrc|の中で":gui"を使用すると"gvim -f"によりフォアグ :set syntax=mine このコマンドを実行するためにVimを再起動する必要はない。 -Vimにそのファイル形式を認識させたいならば、|new-filetype|を参照。 +このファイルタイプが認識されるようにするには、|new-filetype|を参照。 -システム管理者としてユーザ全てに独自構文ファイルを使わせる際には、各ユーザに同 -じ構文ファイルをインストールさせる必要はなく、'runtimepath'に示される他の各 -ユーザ共通のディレクトリにインストールすることができる。 +システム管理者としてユーザ全てに独自構文ファイルを使わせるには、各ユーザに同じ +構文ファイルをインストールさせる必要はなく、全ユーザ共通の'runtimepath'ディレ +クトリにインストールすればよい。 既存の構文ファイルに設定を追加する *mysyntaxfile-add* -既存の構文ファイルでほぼ満足だが、幾つかの設定を追加したり強調手法を変更したい -場合には、以下の手順に従う: +既存の構文ファイルでほぼ満足だが、いくつかの設定を追加したりハイライト手法を変 +更したい場合には、以下の手順に従う: 1. 上同様、'runtimepath'に示されるユーザディレクトリを作成する。 @@ -180,38 +180,38 @@ Vimにそのファイル形式を認識させたいならば、|new-filetype|を mkdir ~/.vim/after/syntax 3. 追加設定を行なうコマンドを含むVimスクリプトファイルを作成する。例として、C - 構文の色を変更するならば: > + 言語のコメントの色を変更するには: > highlight cComment ctermfg=Green guifg=Green -4. その設定ファイルをディレクトリ"after/syntax"に置く。名前には構文名に".vim"を - 追加して使用する。Cの構文を拡張するならば: > +4. その設定ファイルをディレクトリ"after/syntax"に置く。名前には構文名に".vim" + を追加して使用する。Cの構文を拡張するならば: > :w ~/.vim/after/syntax/c.vim 以上。次回Cのファイルを編集する時にはコメントが異なった色で表示される。Vimを再 起動する必要はない。 構文ファイルが複数になるときは、ファイルタイプの名前のディレクトリに置くとよい。 -そのディレクトリの中の全ての "*.vim" ファイルが読み込まれる。例: > +そのディレクトリの中の全ての "*.vim" ファイルが読み込まれるようになる。例: > ~/.vim/after/syntax/c/one.vim ~/.vim/after/syntax/c/two.vim 既存の構文ファイルを置き換える *mysyntaxfile-replace* -配布される構文ファイルが気に入らない場合や、新しいバージョンをダウンロードした -際には、上で述べた|mysyntaxfile|に従えば良い。ただ'runtimepath'内のより先に記 -されたディレクトリに構文ファイルを置くように気を付ければ良い。Vimは適合する構 -文ファイルのうち最初に見つけた1つだけを読込む。 +標準の構文ファイルが気に入らない場合や、新しいバージョンをダウンロードした際に +は、上で述べた|mysyntaxfile|に従えば良い。ただ'runtimepath'で、前の方に記され +たディレクトリに構文ファイルを置くように気を付ければ良い。Vimは適合する構文ファ +イルのうち最初に見つけた1つだけを読込む。 名前付けの慣習 *group-name* -強調や構文グループの名前はアスキー文字、数字、アンダースコアだけでつけなければ -ならない。正規表現では: "[a-zA-Z0-9_]*" +ハイライトや構文グループの名前はアスキー文字、数字、アンダースコアだけでつけな +ければならない。正規表現では: "[a-zA-Z0-9_]*" -各ユーザが好みの色セットを使用できるように、多くの言語に共通する強調グループに -は優先名が与えられている。推奨されているグループ名は以下のとおり(構文強調がち -ゃんと機能していれば、"Ignore"以外はそのグループに設定された色で表示されるだろ -う): +各ユーザが好みの色セットを使用できるように、多くの言語に共通するハイライトグルー +プには優先名が与えられている。推奨されているグループ名は以下のとおり(構文ハイ +ライトがちゃんと機能していれば、"Ignore"以外はそのグループに設定された色で表示 +されるだろう): *Comment o コメント @@ -261,13 +261,13 @@ Vimにそのファイル形式を認識させたいならば、|new-filetype|を のキーワード マーク(*)されている名前が優先グループ、その他はマイナーグループである。優先グ -ループには、"syntax.vim"によりデフォルトの強調手法が定義されている。マイナーグ -ループは優先グループにリンクされ、リンクした先と同じ強調手法になる。ファイル -"syntax.vim"が読込まれた後でコマンド":highlight"を使えば、そのデフォルトを上書 -することができる。 +ループには、"syntax.vim"によりデフォルトのハイライト手法が定義されている。マイ +ナーグループは優先グループにリンクされ、リンクした先と同じハイライト手法になる。 +ファイル"syntax.vim"が読込まれた後でコマンド":highlight"を使えば、そのデフォル +トを上書することができる。 -強調グループ名には大文字小文字の区別がないことに注意。"String" と "string"はど -ちらも同じグループを意味する。 +ハイライトグループ名には大文字小文字の区別がないことに注意。"String" と +"string"はどちらも同じグループを意味する。 以下の名前は予約されているのでグループ名として使用することはできない: NONE ALL ALLBUT contains contained @@ -287,7 +287,7 @@ Vimは初期化の時に、ランタイムファイルの在り処を自動的 | +- 'runtimepath'から$VIMRUNTIME/syntax/synload.vimを読込む | | - | +- 構文強調の色を設定する。 + | +- 構文ハイライトの色を設定する。 | | カラースキームが定義されている場合は":colors {name}"で再度読込む。 | | そうでない場合は":runtime! syntax/syncolor.vim"が使用される。 | | ":syntax on"は既存の色設定を上書設定し、":syntax enable"はまだ設定 @@ -303,8 +303,8 @@ Vimは初期化の時に、ランタイムファイルの在り処を自動的 | けることのできる全てのfiletype.vimを読込む。$VIMRUNTIME/filetype.vimは | 常に読込まれ、以下のことが実行される。 | | - | +- 拡張子に基づいてオプション'filetype'を設定する自動実行コマンドをイ - | | ンストールする。これにより既知のファイル形式に付いて、ファイル名と + | +- 拡張子に基づいてオプション'filetype'を設定するオートコマンドをイン + | | ストールする。これにより既知のファイル形式に付いて、ファイル名と | | 当該形式との関連付けが成される。 *synload-3* | | | +- ユーザによる追加ファイルを変数 *myfiletypefile* から読込む。これは @@ -316,21 +316,21 @@ Vimは初期化の時に、ランタイムファイルの在り処を自動的 | +- 構文メニュー設定のため$VIMRUNTIME/menu.vimを読込む。 |menu.vim| | +- ファイル形式が検出された時にオプション'syntax'を設定するためのFileType - | 自動実行コマンドを設定する。 *synload-6* + | オートコマンドを設定する。 *synload-6* | - +- 既に読込まれているバッファに対して構文強調を行なうために、関連した自動 - 実行コマンドを実行する。 + +- 既に読込まれているバッファに対して構文ハイライトを行なうために、関連し + たオートコマンドを実行する。 ファイルを読込む時には、Vimは以下のように関連した構文ファイルを見つける: - ファイルを読込むとBufReadPost自動実行コマンドが起動する。 + ファイルを読込むとBufReadPostオートコマンドが起動する。 | +- |synload-3|(既知ファイル形式)か|synload-4|(ユーザ定義ファイル形式)の自 | 動実行コマンドがヒットした場合、オプション'filetype'にそのファイル形式 | 名が設定される。 | - +- |synload-5|の自動実行コマンドが実行される。まだファイル形式が決定され + +- |synload-5|のオートコマンドが実行される。まだファイル形式が決定され | ていない場合は、'runtimepath'からscripts.vimが検索される。これは常に以 | 下のことを行なう$VIMRUNTIME/scripts.vimを読込む。 | | @@ -342,7 +342,7 @@ Vimは初期化の時に、ランタイムファイルの在り処を自動的 | 行なわれ、認識できるならば'filetype'を設定する。 | +- ファイル形式が決定されて'filetype'が設定された時に、上記|synload-6|の - | FileType自動実行コマンドが実行される。決定したファイル形式名がそれによ + | FileTypeオートコマンドが実行される。決定したファイル形式名がそれによ | り'syntax'へ設定される。 | +- 上記でオプション'syntax'が設定されると、|synload-1|(と|synload-2|)の自 @@ -350,15 +350,15 @@ Vimは初期化の時に、ランタイムファイルの在り処を自動的 | ファイルが'runtimepath'から読込まれる。 | runtime! syntax/.vim | - +- ユーザがインストールしたその他のFileTypeおよびSyntax自動実行コマンドが - 実行される。これは特定の構文の強調を変更するのに使うことができる。 + +- ユーザがインストールしたその他のFileTypeおよびSyntaxオートコマンドが + 実行される。これは特定の構文のハイライトを変更するのに使うことができる。 ============================================================================== 4. 構文ファイルの覚書 *:syn-file-remarks* *b:current_syntax-variable* -Vimはロードした構文の名前を変数"b:current_syntax"に記憶している。どの構文が選 -択されたかに応じて他の設定を読込みたい時にはこれを使うことができる。例: > +Vimはロードした構文の名前を変数"b:current_syntax"に記憶している。ある構文が有 +効な場合だけある設定を行うにはこの変数が利用できる。例: > :au BufReadPost * if b:current_syntax == "csh" :au BufReadPost * do-some-things :au BufReadPost * endif @@ -391,13 +391,13 @@ Vimはロードした構文の名前を変数"b:current_syntax"に記憶して :let html_start_line = line("'<") :let html_end_line = line("'>") -オプション'number'が設定されている場合には、各行にNumberで強調された行番号が付 -加される。"html_number_lines"に非0の値を設定すればHTMLの出力へ強制的に行番号を -付加することができる: > +オプション'number'が設定されている場合には、各行にNumberでハイライトされた行番 +号が付加される。"html_number_lines"に非0の値を設定すれば、HTMLの出力へ強制的に +行番号を付加することができる: > :let html_number_lines = 1 -値0を設定すれば行番号を強制的に省略することができる: > +この変数に0を設定すれば行番号を強制的に省略できる: > :let html_number_lines = 0 -変数を削除すればデフォルトの'number'を使うように戻すことができる: > +この変数を削除すれば元通り'number'に従うように戻すことができる: > :unlet html_number_lines 閉じた折り畳みは、画面表示通りに HTML に出力される。これが好ましくないなら、 @@ -426,7 +426,7 @@ HTMLファイルの文字集合の指定には現在の'encoding'の値が使わ < 差分モードにおいて、3行以上連続した削除行(訳注:他方のファイルに行が挿入されて いることを示す行)は3行で表示され、そこに何行挿入されているかが真ん中の行に表示 -される。挿入された行数分の空行を表示させたいなら、次のようにする: > +される。挿入された行数分の空行を表示させたい場合は、次のようにする: > :let html_whole_filler = 1 3行で表示するように戻すにはこうする: > :unlet html_whole_filler @@ -452,13 +452,13 @@ HTMLファイルの文字集合の指定には現在の'encoding'の値が使わ ABEL *abel.vim* *ft-abel-syntax* -ABELの強調にはユーザが定義できるオプションが幾つかある。それらを有効化するには -それぞれの変数に何か値を設定すれば良い。例: > +ABELのハイライトにはユーザが定義できるオプションが幾つかある。それらを有効化す +るにはそれぞれの変数に何か値を設定すれば良い。例: > :let abel_obsolete_ok=1 無効化するには":unlet"を使用する。例: > :unlet abel_obsolete_ok -変数 強調 ~ +変数 ハイライト ~ abel_obsolete_ok 古いキーワードをエラーでなく命令文として扱う abel_cpp_comments_illegal '//'をインラインコメントリーダとして扱わない @@ -468,57 +468,16 @@ ADA |ft-ada-syntax|を参照。 -ANT -このモードはオブジェクト指向プログラムや型保護等の機能がサポートされた、Adaの -1995年版("Ada95")を想定して作られている。Ada95で追加されたキーワードを使用して -いるAda83のコード(そのようなコードは修正をすべき)は誤った強調色で表示してしま -うものの、オリジナルのAda言語("Ada83"や"Ada87")で書かれたコードも概ね取り扱う -ことができる。Adaについての詳細はhttp://www.adapower.com/を参照。 - -Adaモードは多くの状況を綺麗に取り扱う。例えば、"-5"のなかの"-"は数字の一部とし -て認識するが、"A-5"という表記の中の同じ文字は演算子として認識される。通常、他 -のコンパイル単位を参照する"with"や"use"節は、Cにおける"#include"と同じ強調色で -表示される。"Conditional"や"Repeat"グループを異なる強調色に設定すれば、"end -if"と"end loop"はそれぞれのグループの強調色で表示される。これらにはコマンド -"highlight"を使って異なる強調色を設定することができる。 -(例:ループの色を変えるには":hi Repeat"に続けて強調色指定を続ける; 単純な端末上 -ではctermfg=Whiteという指定がしばしば見やすい) - -Adaモードではユーザが設定できる幾つかのオプションが存在する。有効化するには、 -オプションに値を設定する。あるオプションを有効化する例は: > - let ada_standard_types = 1 -無効化するには":unlet"を使用する。例: > - unlet ada_standard_types = 1 -Adaファイルを読込む前に、コマンドラインで":"とこれらコマンドをキー入力すること -で、設定することができる。ファイルに"~/.vimrc"、コロン(":")を除いて"let"コマン -ドを追加すれば、これらのオプション設定を永続化することができる。 - -以下、Adaモードのオプションの一覧: - -変数 動作 ~ -ada_standard_types 標準パッケージ内の型(例:"Float")を強調表示する -ada_space_errors 余分な空白文字をエラーとして強調表示する… -ada_no_trail_space_error ただし行末の空白はエラーから除外する -ada_no_tab_space_error ただしスペース後のタブ文字は除外する -ada_withuse_ordinary "with"と"use"を通常のキーワードで表示する - (これらが他のコンパイル単位への参照として使われた場 - 合には、特別に通常の強調として表示する)。 -ada_begin_preproc beginのようなキーワードの全てをCプリプロセッサ命令同 - 様の強調色を使用して表示する。 - -このモードは遅いコンピュータ(90MHz)上でも高速に動作するが、もしもパフォーマン -スが受け入れられないほど低いようならば、ada_withuse_ordinaryを有効化する。 - - ANT *ant.vim* *ft-ant-syntax* -ANTの構文ファイルにはデフォルトでJavaScriptとPythonの構文強調が含まれている。 -関数AntSyntaxScript()の第1引数にタグ名を、第2引数にファイル名を指定することで -その他のスクリプト言語用構文強調をインストールすることができる。例: > +ANTの構文ファイルにはデフォルトでJavaScriptとPythonの構文ハイライトが含まれて +いる。関数AntSyntaxScript()の第1引数にタグ名を、第2引数にファイル名を指定する +ことでその他のスクリプト言語用構文ハイライトをインストールすることができる。 +例: > :call AntSyntaxScript('perl', 'perl.vim') -これは次のようなANTのコードにPerlの構文強調をインストールするものである > +これは次のようなANTのコードにPerlの構文ハイライトをインストールするものである > - -スクリプト言語を永続的にインストールするには|mysyntaxfile-add|を参照。 - - -APACHE *apache.vim* *ft-apache-syntax* - -apacheの構文ファイルはApache HTTPサーバのバージョンに基づいた構文ハイライトを -提供する(デフォルトでは1.3.x)。他のバージョン用の構文ハイライトを利用するには -"apache_version"にApacheのバージョンを文字列としてセットする。例: > - - :let apache_version = "2.0" -< - - *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* -アセンブリ言語 *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax* - *ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim* - -"*.i"にマッチする名前のファイルのタイプはProgressかアセンブリである。自動検出 -が動作しない場合や、Progressを編集しないことが判っている場合には、起動設定ファ -イルvimrcに次のコマンドを書くことができる: > - :let filetype_i = "asm" -"asm"には使用するアセンブリ言語の種類を指定する。 - -同じ拡張子を使用しているアセンブリ言語はたくさんある。そのため、ユーザは自分 -が使っている種類を選択するか、もしくはアセンブリファイルそのものにVimがそれ -と判断できるような行を追加しなければならない。現在は以下の構文ファイルが利用 -可能: - asm GNUアセンブラ(デフォルト) - asm68k モトローラ680x0アセンブラ - asmh8300 日立H-8300用GNUアセンブラ - ia64 インテルItanium 64 - fasm Flat アセンブラ (http://flatassembler.net) - masm マイクロソフトアセンブラ(たぶん80x86汎用) - nasm ネットワイドアセンブラ - tasm ターボアセンブラ(80x86,Pentium,MMXの命令コードを含む) - pic PICアセンブラ(現在はPIC16F84用) - -アセンブリファイルに次のような行を書き加えるのが一番柔軟である: > - asmsyntax=nasm -ここで、"nasm" は実際に使用するアセンブリ構文の名前に置き換えること。この記 -述はファイルの先頭 5 行以内に書いてなければならない。この文字列の前後に非空 -白文字があってはならない。 - -構文の種類はバッファ変数b:asmsyntaxを設定することで常にそちらが優先される: > - :let b:asmsyntax = "nasm" - -自動にしろ手動にしろb:asmsyntaxが設定されていないときには、グローバル変数 -asmsyntaxが使用される。これによりデフォルトのアセンブリ言語を設定することがで -きる: > - :let asmsyntax = "nasm" - -最後の手段として、何も設定されていない場合には、"asm"構文が使用される。 - - -ネットワイドアセンブラ(nasm.vim)の補助ハイライト ~ - -機能を有効化するには: > - :let {variable}=1|set syntax=nasm -無効化するには: > - :unlet {variable} |set syntax=nasm - -変数 ハイライト内容 ~ -nasm_loose_syntax 非オフィシャルな拡張構文をエラーとしない - (パーザ依存; 非推奨) -nasm_ctx_outside_macro マクロ外のコンテキストをエラーとしない -nasm_no_warn 潜在的に危険な構文をToDoとしてハイライトしない - - -ASPPERL and ASPVBS *ft-aspperl-syntax* *ft-aspvbs-syntax* - -*.aspと*.aspという名のファイルはどちらもPerlもしくはVisual Basicのスクリプトた -りえる。Vimにとってこれを判別するのは難しいので、グローバル変数を設定すること -でどちらを使用するのか宣言することができる。どちらでもPerlスクリプトを使用する -なら: > - :let g:filetype_asa = "aspperl" - :let g:filetype_asp = "aspperl" -Visual Basicを使用するなら次のように設定する: > - :let g:filetype_asa = "aspvbs" - :let g:filetype_asp = "aspvbs" - - -BAAN *baan.vim* *baan-syntax* - -baan.vim は リリース BaanIV から SSA ERP LN まで、3 GL と 4 GL プログラミング -両方に対応した構文を定義している。たくさんの標準的な定義/定数がサポートされて -いる。 - -次を |.vimrc| に書いておくと、ある種のコーディング標準違反を教えてくれる: > - let baan_code_stds=1 - -*baan-folding* - -以下の変数によって、様々なレベルで構文折り畳みを有効にできる (これらはユーザの -|.vimrc| で設定すること)。ソースブロックと SQL についてより複雑な折り畳みを行 -うと CPU に負荷がかかる。 - -折り畳みを有効にし、関数レベルで折り畳みをするにはこうする: > - let baan_fold=1 -次の設定を行うと、if, while, for ... のようなソースブロックレベルの折り畳みが -有効になる。キーワード begin/end の前のインデントが等しくなければならない (ス -ペースとタブは異なるとみなされる)。 > - let baan_fold_block=1 -次を設定すると SELECT, SELECTDO, SELECTEMPTY ... のような埋め込み SQL ブロック -の折り畳みが有効になる。キーワード begin/end の前のインデントが等しくなければ -ならない (スペースとタブは異なるとみなされる)。 > - let baan_fold_sql=1 -Note: ブロック折り畳みを有効にすると、小さな折り畳みがたくさんできるかもしれな -い。|.vimrc| でオプション 'foldminlines' と 'foldnestmax' を |:set| するか、... -/after/syntax/baan.vim 内で |:setlocal| をする (|after-directory| を参照) とよ -いかもしれない。例: > - set foldminlines=5 - set foldnestmax=6 - - -BASIC *basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax* - -Visual Basicも「通常の」BASICも、どちらも拡張子には".bas"が使用される。どちら -が使用されているか判別するのに、Vimはファイルの先頭5行以内に"VB_Name"という文 -字列が存在するかどうかを検査する。存在しなければ、ファイル形式は"basic"とな -り、そうでなければ"vb"となる。拡張子が".frm"のファイルは常にVisual Basicとして -扱われる。 - - -C *c.vim* *ft-c-syntax* - -Cには幾つかの補助的なハイライト方法がある。それらを有効化するには対応した変数 -に値を設定する。例: > - :let c_comment_strings = 1 -これを無効化するには":unlet"を使う。例: > - :unlet c_comment_strings - -変数 ハイライト内容 ~ -c_gnu GNU gcc固有の要素 -c_comment_strings コメント内の文字列と数値 -c_space_errors 行末の空白文字とタブ文字前のスペース文字 -c_no_trail_space_error ... 但し行末の空白文字は除外 -c_no_tab_space_error ... 但しタブ文字前のスペース文字は除外 -c_no_bracket_error []の中の{}をエラーとして表示しない -c_no_curly_error { と } が第1桁にあるときを除き、[] と () の内側の {} - をエラーとして表示しない。 -c_curly_error 対応する { がない } をハイライトする。これを有効に - すると、ファイルの先頭から同期が始まるため、遅くなる。 - start of the file, can be slow -c_no_ansi ANSI標準の型と定数をハイライトしない -c_ansi_typedefs ... 但し標準ANSI型はハイライトする -c_ansi_constants ... 但し標準ANSI定数はハイライトする -c_no_utf 文字列中の\uと\Uをハイライトしない -c_syntax_for_h ファイル*.hにC++ではなくCの構文を適用する -c_no_if0 "#if 0"のブロックをコメントとしてハイライトしない -c_no_cformat 文字列中の"%"によるフォーマットをハイライトしない -c_no_c99 C99の標準アイテムをハイライトしない - -'foldmethod' が "syntax" に設定されていると、/* */ のコメントと { } のブロック -が折り畳まれる。コメントを折り畳みたくなければこのようにする: > - :let c_no_comment_fold = 1 -"#if 0" のブロックも同様に折り畳まれる。折り畳みたくなければこのようにする: > - :let c_no_if0_fold = 1 - -上方向にスクロールしているときにハイライト表示がおかしくなり、それがで -再描画すると直るようなら、内部変数"c_minlines"にもっと大きな値を設定すれば解決 -できるかもしれない: > - :let c_minlines = 100 -これにより構文判定のシンクロナイズ位置が表示開始行の100行手前に設定される。初 -期設定の値は50行(c_no_if0を使用した場合は15行)である。ただしこれには、大きな値 -を設定すると再描画が遅くなるという短所がある。 - -"#if 0" / "#endif"のブロックをコメントとしてハイライトしている場合には、 -"#if 0"がウィンドウのトップから"c_minlines"以内にある時にしか正しく動作しない -ことに注意する。長い"#if 0"のブロックを使用した場合には、それは正しくハイライ -トされない。 - -コメント内で追加要素にマッチを行なうには、クラスタcCommentGroupを使用する。 -例: > - :au Syntax c call MyCadd() - :function MyCadd() - : syn keyword cMyItem contained Ni - : syn cluster cCommentGroup add=cMyItem - : hi link cMyItem Title - :endfun - -ANSIの定数はグループ"cConstant"でハイライトされる。これには"NULL", "SIG_IGN"や -その他のものが含まれる。しかしANSI標準でないもの、例えば"TRUE"は含まれない。も -しもこれが紛らわしいならば、cConstant用のハイライトを削除する: > - :hi link cConstant NONE - -文法上エラーではないはずの'{'と'}'がエラーとしてハイライトされてしまう場合には、 -cErrInParen及びcErrInBracketのハイライトをリセットする。 - -Cファイルで折り畳みをするには、以下の行を'runtimepath'中の"after"ディレクトリ -内のファイルに加えるとよい。Unixなら~/.vim/after/syntax/c.vimに加えるとよいだ -ろう: > - syn sync fromstart - set foldmethod=syntax - -CH *ch.vim* *ft-ch-syntax* - -C/C++ インタープリタ。Ch は C に似た構文ハイライトを持ち、C の構文ファイルに基 -づいている。C で利用できる設定については |c.vim| を参照。 - -変数を設定すれば、*.h ファイルに対して C, C++ でなく Ch の構文を使うようにする -ことができる: > - :let ch_syntax_for_h = 1 - - -CHILL *chill.vim* *ft-chill-syntax* - -Chillの構文ハイライトはCに似ている。設定に関しては|c.vim|を参照。それに加えて -次のものがある: - -chill_space_errors c_space_errors と同様 -chill_comment_string c_comment_strings と同様 -chill_minlines c_minlines と同様 - - -CHANGELOG *changelog.vim* *ft-changelog-syntax* - -ChangeLogでは行頭のスペースのハイライトできる。これをオフにしたいなら、次の行を -.vimrcに加える: > - let g:changelog_spacing_errors = 0 -これは次にchangelogファイルを編集するときから有効になる。バッファごとに設定す -るには"b:changelog_spacing_errors"を使う(構文ファイルを読み込む前に設定するこ -と)。 - -例えばスペースをエラーとするかどうかなどのハイライト方法を変えることができる: > - :hi link ChangelogError Error -ハイライトをやめるには: > - :hi link ChangelogError NONE -これは即座に有効になる。 - - -COBOL *cobol.vim* *ft-cobol-syntax* - -既存のCOBOLコードに要求されるハイライト方法と、新規に開発されるコードに要求さ -れるそれには違いがある。この違いはコードのおかれている状況(保守 vs 開発)やその -他の要素によって決定する。既存コードのハイライトを行なうには.vimrcに次の行を加 -える: > - :let cobol_legacy_code=1 -これを再び無効にするには次のようにする: > - :unlet cobol_legacy_code - - -COLD FUSION *coldfusion.vim* *ft-coldfusion-syntax* - -ColdFusionには独自版のHTMLコメントが存在する。ColdFusionのコメントハイライトを -有効化するには、次の行を起動設定ファイルに加える: > - - :let html_wrong_comments=1 - -ColdFusionの構文ファイルはHTML用構文ファイルに基づいている。 - - -CSH *csh.vim* *ft-csh-syntax* - -これは"csh"という名前のシェルに対応している。システムによっては実際に使われて -いるのがtcshである場合もあることに注意。 - -ファイルがcshかtcshかを判定するのは難しいことがよく知られている。いくつかのシ -ステムでは/bin/cshを/bin/tcshにシンボリックリンクしていることが、この判別をほ -ぼ不可能にしている。Vimが間違った判定をする場合には変数"filetype_csh"を設定す -ることが出来る。cshを使うには: *g:filetype_csh* -> - :let g:filetype_csh = "csh" - -tcshを使うには: > - - :let g:filetype_csh = "tcsh" - -拡張子がtcshであるか標準的なtcshファイル名(.tcshrc, tcsh.tcshrc, tcsh.login)を -持つスクリプトはすべてtcshファイル形式とされる。他のtcsh/cshスクリプトは、 -"filetype_csh"変数が存在しない限り、すべてtcshとみなされる。変数"filetype_csh" -が存在するならファイル形式はその値にセットされる。 - - -CYNLIB *cynlib.vim* *ft-cynlib-syntax* - -Cynlibファイルは、ハードウェアのモデリングとシミュレーションを行なうCynlibクラ -スライブラリを使用したC++ファイルである。通常Cynlibのファイルは.ccや.cppという -拡張子を持つので、CynlibではないC++ファイルと区別するのは非常に困難である。だ -から.ccファイルをCynlibでハイライトする際には、ファイル.vimrcに次の行を加える: -> - - :let cynlib_cyntax_for_cc=1 - -cppファイルについても同様(この拡張子は通常Windowsだけで使用される) > - - :let cynlib_cyntax_for_cpp=1 - -これらを再び無効にするには次のコマンドを使用する: > - - :unlet cynlib_cyntax_for_cc - :unlet cynlib_cyntax_for_cpp -< - -CWEB *cweb.vim* *ft-cweb-syntax* - -"*.w"にマッチする名前のファイルのタイプはProgressかCWEBである。自動検出が動作 -しない場合や、Progressを編集しないことが判っている場合には、起動設定ファイル -vimrcに次のコマンドを書くとよい: > - :let filetype_w = "cweb" - - -DESKTOP *desktop.vim* *ft-desktop-syntax* - -この構文ファイルの本来の目的は、freedesktop.org 標準の .desktop と .directory -を構文ハイライトすることである: -http://standards.freedesktop.org/desktop-entry-spec/latest/ -しかし実際にはこの標準を完全に実装したものはほとんどない。なのでこれは全ての -iniファイルをハイライトする。ただし次をvimrcファイルに書くことによって厳格に標 -準に準拠したハイライトをさせることもできる: > - :let enforce_freedesktop_standard = 1 - - -DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* - -dircolorsユーティリティ用のハイライト定義には、Slackware GNU/Linuxディストリ -ビューション版のdircolorsに対応するためのオプションがある。このオプションはほ -とんどのバージョンでは無視されるいくつかのキーワードを付け加える。しかし -Slackwareシステムではdircolorsはこれらのキーワードを認め、処理に用いる。 -Slackwareキーワードを有効化するには次を起動設定ファイルに付け加えればよい: > - let dircolors_is_slackware = 1 - - -DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook* -DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax* -DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax* - -DocBookファイルには2つの種類: SGMLとXMLがある。どちらのタイプを使用するのかを -指定するには変数"b:docbk_type"をセットする。Vimがそのタイプを認識できた場合に -はこれを自動的に行う。認識できなかった場合にはデフォルトはXMLになる。 -これを手動で設定するには: > - :let docbk_type = "sgml" -または: > - :let docbk_type = "xml" -これは構文ファイルを読み込む前に行う必要がある。しかし構文ファイルの読み込みは -込み入っている。より単純な方法はファイル形式を"docbkxml"または"docbksgml"に -セットすることである: > - :set filetype=docbksgml -または: > - :set filetype=docbkxml - - -DOSバッチファイル *dosbatch.vim* *ft-dosbatch-syntax* - -DOSバッチファイルのハイライトにはオプションが1つある。このオプションにより -Windows 2000で導入されたコマンドインタプリタの新しい拡張機能がサポートされ、変 -数dosbatch_cmdextversionによりその有効/無効が制御される。Windows NTでは値1を設 -定し、Windows 2000では2を設定するのが良い。次のようにすれば使用するバージョン -を選択できる: > - - :let dosbatch_cmdextversion = 1 - -変数が定義されていない際のデフォルトはWindows 2000をサポートする2となる。 - -2番目のオプションは、*.btm ファイルを "dosbatch" (MS-DOS バッチファイル) タイ -プか "btm" (4DOS バッチファイル) タイプのどちらと判定するかを指定する。デフォ -ルトでは後者が使われる。前者を使うには、次のようにする: > - - :let g:dosbatch_syntax_for_btm = 1 - -この変数が定義されていない、または0であると btm の構文が使われる。 - -DOXYGEN *doxygen.vim* *doxygen-syntax* - -Doxygen は JavaDoc に似た特殊なフォーマットからコードのドキュメントを生成する。 -この構文スクリプトは c, cpp, idl, php のファイルに対して Doxygen のハイライ -トを追加する。また、Java に対しても使える。 - -Doxygen のフォーマットを有効にするにはいくつかの方法がある。手動、またはモード -ラインでそのファイルの syntax に '.doxygen' を追加する。例: > - :set syntax=c.doxygen -または > - // vim:syntax=c.doxygen - -C, C++, C#, IDL のファイルに対しては、グローバルまたはバッファローカルな変数 -load_doxygen_syntax を設定すれば自動的にこれが行われる。次の行を .vimrc に加え -る。 > - :let g:load_doxygen_syntax=1 - -構文ハイライトに影響を与える変数がいくつかある。また、これらは標準でないハイラ -イトオプションに関係している。 - -変数 既定値 効果 ~ -g:doxygen_enhanced_color -g:doxygen_enhanced_colour 0 Doxygen コメントに対して標準でないハイ - ライトを行う。 - -doxygen_my_rendering 0 HTML の太字、斜体、html_my_rendering - に対する下線の描画を無効にする。 - -doxygen_javadoc_autobrief 1 0にすると JavaDoc の autobrief に対す - るハイライトを無効にする。 - -doxygen_end_punctuation '[.]' brief の終わりを示す句読点にマッチする - 正規表現。 - -また、次のハイライトグループを設定すると便利である。 - -ハイライト 効果 ~ -doxygenErrorComment code, verbatim, dot セクション中で句読点が抜け - ている終了コメントの色 -doxygenLinkError \link セクションで \endlink が抜けているときの - 終了コメントの色。 - - -DTD *dtd.vim* *ft-dtd-syntax* - -初期状態ではDTD構文ハイライトは大/小文字を区別する。区別しないようにするには、 -起動設定ファイルに次の行を書き足す: > - - :let dtd_ignore_case=1 - -DTD構文ファイルでは未知のタグをエラーとしてハイライトする。これが煩わしいなら -ば、構文ファイルdtd.vimが読込まれる前に: > - - :let dtd_no_tag_errors=1 - -と設定することで無効化することができる。定義部内のパラメータのエンティティ名は -ハイライトグループ'Type'、句読点と'%'は'Comment'を使用してハイライトされる。パ -ラメータエンティティの実体はハイライトグループ'Constant'を、区切り文字の%と;は -ハイライトグループ'Type'を使用してハイライトされる。以下を設定するとこれを無効 -化できる: > - - :let dtd_no_param_entities=1 - -XML内の埋め込みDTDをハイライト表示するために、DTDの構文ファイルはxml.vimからも -参照される。 - - -EIFFEL *eiffel.vim* *ft-eiffel-syntax* - -Eiffelは大小文字の区別をしないけれども、スタイルガイドラインが示すように、構文 -ハイライトではそれらが区別される。これにより大小文字が違えば違うクラス名として -ハイライト表示することが可能になっている。大小文字の違いを無視してハイライトを -行なうならば、起動設定ファイルに次の行を書き足す: > - - :let eiffel_ignore_case=1 - -これを行なってもコメント内のクラス名とTODOの印には大小文字の区別がなされる。 - -逆に、もっと厳密に検査するには、次の行のいずれかを書き足す: > - - :let eiffel_strict=1 - :let eiffel_pedantic=1 - -eiffel_strictを設定すると"Current", "Void", "Result", "Precursor"そして"NONE" -の5つの既定単語について、不正な大小文字の使用を捕捉し、機能やクラス名としてそ -れらが使用されれば警告を与えるようになる。 - -eiffel_pedanticを設定すると、Eiffelのスタイルガイドラインを相当に厳格に強制す -る。(キーワードを大文字で書く時代遅れの方法と同様に、大小文字を任意にミックス -したようなものが補足される) - -"Current", "Void", "Result"そして"Precursor"の小文字版を使用するには、大小文字 -を区別するハイライト方法を無効化する代わりに: > - - :let eiffel_lower_case_predef=1 - -という方法を使うことができる。 - -ISEが提案し、実験的に幾つかのコンパイラでは取り扱うことのできる、新しい生成構 -文は次のコマンドで使用できるようになる: > - - :let eiffel_ise=1 - -最後に幾つかのベンダは16進数定数値をサポートしている。それを取り扱うには: > - - :let eiffel_hex_constants=1 - -この行を起動設定ファイルに書き足す。 - - -ERLANG *erlang.vim* *ft-erlang-syntax* - -これはErlang(ERicsson LANGuage: エリクソン言語)をサポートする構文ハイライトファ -イルである。Erlangは大小文字を区別しデフォルトの拡張子は".erl"である。 - -キーワードハイライトを無効化するには、これを.vimrcに書き足す: > - :let erlang_keywords = 1 -組み込み関数ハイライトを無効化するには、これを.vimrcに書き足す: > - :let erlang_functions = 1 -特殊文字のハイライトを無効化するには、これを.vimrcに書き足す: > - :let erlang_characters = 1 - - -FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax* - - -FlexWiki は http://www.flexwiki.com で入手できる ASP.NET ベースの wiki パッ -ケージである。 -NOTE: このサイトは現在機能していない。Wikipedia によると 2009 年に開発がストッ -プした。 - -FlexWiki の構文のほとんどの一般的な要素に対して構文ハイライトができる。 -FlexWiki のtplugin スクリプトはバッファローカルなオプションを設定し、FlexWiki -ページの編集をより便利にする。FlexWiki は改行を新しい段落の開始とみなすので、 -このftplugin は 'tw' を0に設定し (行の長さを制限しない)、'wrap' をオンにし (長 -い行を水平スクロールさせるのでなく、折り返す)、'linebreak' をオンにする (画面 -上の最後の文字でなく 'breakat' の文字で折り返す)、などを行う。また、デフォルト -では無効にされているキーマップも含んでいる。 - -"j"、"k"、カーソルキーで表示行単位で移動するようにするキーマップを有効にするに -は次を .vimrc に追加する: > - :let flexwiki_maps = 1 - - -FORM *form.vim* *ft-form-syntax* - -FORMファイルの構文要素に使用するカラースキームには、Conditional, Number, -Statement, Comment, PreProc, Type, そしてStringが、次の文献で定義される言語仕 -様に沿って行なわれる。 -文献: 'Symbolic Manipulation with FORM' by J.A.M. Vermaseren, CAN, - Netherlands, 1991. - -初期設定の色に変更を加えるには、次の構文グループを再定義すれば良い: - - - formConditional - - formNumber - - formStatement - - formHeaderStatement - - formComment - - formPreProc - - formDirective - - formType - - formString - -構文ファイルform.vimではFORMプリプロセッサコマンドとディレクティブをそれぞれ、 -デフォルトでは同じ構文グループにしていることに注意。 - -FORM用の既定の拡張カラーモードではヘッダ命令とFORMプログラム本体での命令を区別 -できるような色設定が利用可能である。拡張カラーモードを使用可能にするには、ファ -イルvimrcに次の設定を書き足す: > - - :let form_enhanced_color=1 - -拡張モードを使うことは、gvimで暗いディスプレイを使用した場合にも利点がある。命 -令文は黄色ではなく明るい黄色で表示され、条件文は視認性のため明るい青で表示され -る。 - - -FORTRAN *fortran.vim* *ft-fortran-syntax* - -デフォルトのハイライトと方言 ~ -デフォルトでは f95 (Fortran 95) に相当するハイライトが行なわれる。Fortran 95 -は Fortran 90 のスーパーセットであり、かつ Fortran 77のほぼスーパーセットであ -るから、多くのユーザの多くのケースにとって適切な選択である。Fortran 2003 と -Fortran 2008 の機能にも対応しており、これはデフォルトの (f95) ハイライトの中で -自動的に利用可能である。 - -Fortranソースコードの形式 ~ -Fortran 9xのソースコードには固定形式と自由形式が有る。形式が誤って設定されてい -ると構文ハイライトが正しくされないことに注意。 - -新規にFortranのファイルを作成する場合には、構文ファイルは固定形式であると仮定 -する。常に自由形式を使う場合には > - :let fortran_free_source=1 -これを.vimrcでコマンド:syntaxを実行する前に行なう必要がある。常に固定形式を使 -うには > - :let fortran_fixed_source=1 -これも.vimrcでコマンド:syntaxを実行する前に行う必要がある。 - -ソースコードの形式がファイル拡張子によって決定できる場合には、ftpluginファイル -の1つでfortran_free_sourceを設定すると便利になる。ftpluginファイルについての詳 -細は|ftplugin|を参照のこと。例えば、拡張子.f90を持つファイルについては全て自由 -形式として扱い、それ以外のものは固定形式とする場合には、次のコードをftplugin -ファイルに記述すれば良い。 > - let s:extfname = expand("%:e") - if s:extfname ==? "f90" - let fortran_free_source=1 - unlet! fortran_fixed_source - else - let fortran_fixed_source=1 - unlet! fortran_free_source - endif -これは.vimrcで"syntax on"より前に"filetype plugin indent on"が書かれていないと -機能しないことに注意。 - -既存のFortranファイルを編集する時には、変数fortran_free_sourceが設定されていれ -ば構文ファイルは自由形式のソースであると仮定し、変数fortran_fixed_sourceが設定 -されていれば固定形式のソースであると仮定する。どちらも設定されていないときに -は、ファイルの先頭250行の行頭5カラムを調べて、その形式が固定なのか自由なのかを -決定しようと試みる。自由形式コードの兆候が見られない場合には、ファイルは固定形 -式コードとして取り扱われる。このアルゴリズムはほとんどのケースにおいて有効に機 -能する。しかしいくつかのケース、例えば先頭250行以上が行コメントで占められてい -るようなファイルでは、構文ファイルが固定形式コードであると誤った判断をしてしま -うだろう。そのような場合には、ファイルの先頭250行の行頭5桁のどこかに、コメント -以外の命令文を追加し、ファイルの保存(:w)そして再読込(:e!)を行なえば良い。 - -Fortranファイル内のタブ文字 ~ -標準のFortranではタブ文字は認識されない。固定桁位置での境界を必要とする固定形 -式のFortranソースコードでタブ文字を使用するのは良いアイデアではない。従ってタ -ブ文字はエラーとしてハイライトされる。しかしながらプログラマーによってはタブ文 -字を使用することを望む場合があるだろう。Fortranファイルにタブ文字が含まれてい -る場合には、変数fortran_have_tabsをコマンド:syntaxが実行される前に > - :let fortran_have_tabs=1 -このように.vimrcで設定すれば良い。タブ文字を使う場合には残念ながら、構文ファイ -ルによって不正な余白を検出することができなくなる。 - -Fortranファイルの構文による折り畳み ~ -foldmethod=syntaxを使用したいならば、まず変数fortran_foldを > - :let fortran_fold=1 -このようなコマンドで設定しなければならない。これにより構文ファイルはプログラム -単位の領域、プログラム命令文で始まるメインプログラム、サブルーチン、関数、サブ -プログラム、ブロックデータサブプログラム、そしてモジュールといったプログラム単 -位の領域で折り畳みを定義する。同時に変数fortran_fold_conditionalsを > - :let fortran_fold_conditionals=1 -このように設定すると、doループ、ifブロック、そしてselect-case構造の領域が折り -畳まれる。さらに変数fortran_fold_multilinecommentsも > - :let fortran_fold_multilinecomments=1 -このように設定すれば、3行以上にわたって続くコメントの領域が折り畳まれる。大き -なファイルに対してこのように構文による折り畳みを使用すると、非常に遅くなること -に注意。 - -fortran_foldを設定し、fortran_fold_conditionalsか -fortran_fold_multilinecomments(どちらか片方でも両方でも)を設定した場合には、 -foldmethod=syntaxを設定してある時に、Vimはファイルを折り畳む。2つのプログラム単 -位の間にあるコメントや空行は折り畳まれない。なぜならそれらは構文によって定義され -るプログラム単位に属していないからである。 - -より正確なFortranの構文 ~ -変数fortran_more_preciseを > - :let fortran_more_precise=1 -このようなコマンドで設定した場合には、構文ハイライトがより正確になるが動作は遅 -くなる。とりわけ、do、goto、そして算術if命令文に使用される命令ラベルが、do、if、 -selectもしくはforall構造の終端で使用される名前として認識されるようになる。 - -非標準のFortran方言 ~ -構文ファイルは5つのFotranの方言をサポートしている: f95, f90, f77, the Lahey -サブセットの elf90, そして Imagine1 サブセットの F. - -f77の拡張機能を使うときには、それがg77(GNU Fortran)を含む多くのコンパイラがサ -ポートしている一般的な、do/enddoループ、do/whileループ、自由形式ソースコード、 -拡張機能であるならば、恐らくデフォルトのハイライトで満足できるだろう。しかしな -がら、拡張機能を使用せずに厳密なf77を使用する場合や、自由形式やMIL STD 1753の -拡張を用いない場合には問題がある。そのような時に方言としてf77を指定することに -は、SUMのようなf9xの持つ関数として認識されてしまう名前が、ユーザ変数として認識 -されハイライトされないという利点がある。また廃れてしまったASSIGN命令文のような -構造も修正用TODOとしてはハイライトされなくなり、固定形式が仮定されるようになる。 - -elf90やFを使う場合には適切な方言を設定する。それにより、これらの方言においては -除外されるf90の機能はtodoとしてハイライトされ、これらの方言で必要とされる自由 -形式のソースコードが仮定される。 - -方言は変数fortran_dialectを設定することで選択できる。fortran_dialectに設定でき -る値には大小文字の区別があり"f95"、"f70"、"elf"もしくは"F"である。無効な値を -fortran_dialectへ設定した場合にはそれは無視される。 - -全てのFortranファイルで同じ方言を使用するならば、.vimrcでsyntax onが実行される -前にfortran_dialectを設定する。方言がファイルの拡張子に依存して決定する場合に -は、ftpluginファイル内で設定するのが最良の手段である。ftpluginファイル付いての -詳細な情報は、|ftplugin|を参照。例、全ての.f90という拡張子のファイルが"elf"サ -ブセットにより書かれているならば、ftpluginファイルに次のようなコードを書き足す -べきである > - let s:extfname = expand("%:e") - if s:extfname ==? "f90" - let fortran_dialect="elf" - else - unlet! fortran_dialect - endif -これは.vimrcで"syntax on"より前に"filetype plugin indent on"が書かれていないと -機能しないことに注意。 - -拡張子が方言を一意に決定できない場合には、もっと良い制御方法が必要になる。各 -ファイルの先頭3行以内にコメントで"fortran_dialect=xx"という命令を書けば方言の -設定を上書することができる(xxにはf77やelfやFやf90やf95が入る)。これによりファ -イル毎に方言を設定できる。例えば、古い.fファイルはf77の拡張を使用して書かれて -いるが、新しい.fファイルがFで書かれている場合には > - ! fortran_dialect=F -このような形で新しいファイルの先頭3行以内にコメントを追加することで、Fで書かれ -ていることが判別できるようになる。Fとelfの両方が指定された場合には、Fの方が優 -先される。 - -制限事項 ~ -丸カッコチェックは、閉じカッコの不足については捕捉できない。ホレリス定数は認識 -されない。幾つかのキーワードはFortran90の予約語ではないので誤ってハイライトさ -れる。 - -Fortranに関するその他の情報は|ft-fortran-indent|や|ft-fortran-plugin|を参照。 - -FVWM CONFIGURATION FILES *fvwm.vim* *ft-fvwm-syntax* - -*fvwmrc*または*fvwm2rc*というパターンにマッチしないFvwm設定ファイルを認識させ -るには、ファイルmyfiletypefile.vimであなたのシステムに合ったパターンを設定しな -ければならない。具体的には、変数"b:fvwm_version"にFvwmのメジャーバージョンを指 -定し、オプション'filetype'にfvwmを設定する。 - -例えば、/etc/X11/fvwm2/配下の全てのファイルをFvwm2の設定ファイルと認識させるに -は次のようにする: > - - :au! BufNewFile,BufRead /etc/X11/fvwm2/* let b:fvwm_version = 2 | - \ set filetype=fvwm - -全ての有効な色の名前をVimにハイライトさせるには、システムの色データベース -(rgb.txt)の位置を知らせる必要がある。これには変数"rgb_file"にその場所を設定す -る。色データベースが/usr/X11/lib/X11/にあるとすれば: > - - :let rgb_file = "/usr/X11/lib/X11/rgb.txt" - -このような内容をファイル.vimrcに追加する。 - - -GSP *gsp.vim* *ft-gsp-syntax* - -GSPページのデフォルトカラーは|html.vim|にて定義され、Javaコード(Javaタグ内部や -インラインのバッククォート内)のカラーは|java.vim|にて定義される。インライン -Javaコードをハイライトするために、|html.vim|で定義される以下のHTMLグループは、 -再定義されている: - - htmlString - htmlValue - htmlEndTag - htmlTag - htmlTagN - -書かれた大抵の場所のインラインJavaコードは適切にハイライトされるが、幾つかの特 -殊なケースではそうはならない。他のHTMLグループ内にインラインJavaコードを書いて -それが正しくハイライトされない場合には、必要な行を|html.vim|からコピーして -gspJavaをconstains節に加えれば、正しくハイライトされるようになる。 - -インラインJavaを示すバッククォートは、目立ちやすくするためにhtmlErrorグループ -でハイライトされる。 - - -GROFF *groff.vim* *ft-groff-syntax* - -groff構文ファイルは|nroff.vim|のラッパーであり、使用例と設定例についてはそこの -下に書かれている注意を参照。このラッパーの目的は、モードラインか個人用のファイ -ル定義ファイル(|filetype.txt|参照)からファイル形式をセットすることにより、 -groff構文拡張を設定することである。 - - -HASKELL *haskell.vim* *lhaskell.vim* *ft-haskell-syntax* - -Haskell構文ファイルは、プレーンHaskellコードとliterate Haskellコード両方を -サポートしている。後者はBirdスタイルとTeXスタイル両方に対応している。Haskell用 -の構文ハイライトはCプリプロセッサ命令もハイライトできる。 - -区切り文字もハイライトさせるには(明るい背景色を使っているなら便利)、次を.vimrc -に書き足す: > - :let hs_highlight_delimiters = 1 -TrueとFalseを通常の識別子と区別してキーワードとして扱うにはこれを書き足す: > - :let hs_highlight_boolean = 1 -プリミティブ型の名前をキーワードして扱うには: > - :let hs_highlight_types = 1 -比較的一般的な型の名前をキーワードとして扱うには: > - :let hs_highlight_more_types = 1 -デバッグ関数の名前をハイライトさせるには、これを.vimrcに書き足す: > - :let hs_highlight_debug = 1 - -Haskell用の構文ハイライトはCプリプロセッサ命令もハイライトし、#で始まるが命令 -として有効でない行をエラーとして警告する。Haskellの演算子の構文は#で始まること -もあるため、これらが干渉する。これらをエラーでなく演算子としてハイライトしたい -なら、次を.vimrcに書く: > - :let hs_allow_hash_operator = 1 - -literate Haskellコード用の構文ハイライトはファイルがTeXマークアップを含んでい -るかどうか、それに応じてTeX要素をハイライトするかどうかを自動的に推測しようと -する。.vimrcに次のような行を書くと、これをグローバルに上書きすることができる > - :let lhs_markup = none -と書くとまったくハイライトしなくする。または > - :let lhs_markup = tex -と書くと常にTeXマークアップをハイライトするように強制する。より柔軟に、この変 -数のバッファローカル版を使うことも出来る。例. > - :let b:lhs_markup = tex -と書くと特定のバッファにTeXハイライトさせるようにする。これはそのバッファに構 -文ハイライトを有効化するかファイルを読み込む前に設定しなければならない。 - - -HTML *html.vim* *ft-html-syntax* - -HTMLファイルのタグ用の構文ファイルは以下のように動作する。 - -開きタグの<>は、閉じタグのとは異なった色でハイライトされる。これは意図的に -そうしてある!。開きタグにはハイライト'Function'が使用され、閉じタグにはハイラ -イト'Type'が使用される(あなたの環境でこれらがどう定義されているかについては -syntax.vimを参照すること)。 - -既知のタグ名はC命令文と同じようにハイライトされる。未知のタグ名は間違いを見分 -けやすくするために、<>やと同じようにハイライトされる。 - -引数(もしくは属性)名にも同じことが言える。既知の属性名と未知の属性名には異なる -ハイライトがなされる。 - -幾つかのHTMLタグは表示する文字種を変更するために使用される。以下のタグは構文 -ファイルhtml.vimによって認識され、その内容は通常の文字種とは異なる文字種で表示 -される: (のエイリアスとして使われ、 -はのエイリアス)、

-

、、そして<A>、ただしhrefが含まれ -ていてリンクとして使われている(例<A href="somefile.html">)場合。 - -それらのテキストの文字種を変更するには、以下の構文グループを再定義する必要があ -る: - - - htmlBold - - htmlBoldUnderline - - htmlBoldUnderlineItalic - - htmlUnderline - - htmlUnderlineItalic - - htmlItalic - - htmlTitle for titles - - htmlH1 - htmlH6 for headings - -この再定義が機能するためには最後の2つを除くすべてを再定義しなければならない。 -最後の2つ、htmlTitleとhtmlH[1-6]は任意である。そして次の変数をvimrcで設定しな -ければならない(初期化の際に読み込まれるファイルの順序のせい)。 > - :let html_my_rendering=1 - -この例については以下からmysyntax.vimをダウンロードすること。 -http://www.fleiner.com/vim/download.html - -次の行をvimrcに加えればこの描画を無効にできる: > - :let html_no_rendering=1 - -HTMLコメントはむしろ特別で(詳細はHTMLリファレンスドキュメントを参照)、すべての -エラーをハイライトする。しかしその間違ったスタイル(<!--で始まり--!>で終わる)を -使いたいならこれを定義する > - :let html_wrong_comments=1 - -HTMLドキュメント中に埋め込まれたJavaScriptやVisual Basicについては、文は -'Special'でハイライトされ、コメントや文字列などは標準のプログラミング言語と同 -じように色づけされる。現在のところサポートされているのはJapaScriptとVisual -Basicだけであり、他のスクリプト言語はまだ加えられていない。 - -カスケードスタイルシート(CSS)の埋め込みとインラインもハイライトされる。 - -htmlプロセッサ言語は複数ある。html.vimはインクルードしやすいように簡素に書かれ -ている。html.vimをインクルードするには以下の2行をその言語用の構文ファイルに書 -き足すこと(この例はasp.vimからとった): - - runtime! syntax/html.vim - syn cluster htmlPreproc add=asp - -そしてプリプロセッサ言語を含むすべての領域をクラスタhtmlPreprocに加えればよい。 - - -HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax* - -HTML/OS用のカラースキームは以下のように機能する: - -デフォルトでは関数名と変数名は同じである。これは、Vimは関数と識別子に異なる色 -を指定しないためである。これを変えるには(関数名を違う色にしたいならこうすると -よい)次の行を~/.vimrcに書き加える: > - :hi Function term=underline cterm=bold ctermfg=LightGray - -もちろん好みに応じてctermfgは違う色にしてよい。 - -HTML/OSに関するもう1つの問題は、ファイルがHTML/OSコーディングであることを示す -特別なファイル形式が存在しないことである。そのため、ファイルを開いた後に次のよ -うにしてHTML/OS構文をオンにしなければならない: > - :set syntax=htmlos - -HTML/OSコードのブロックの開始と終了を示す文字は、それぞれ<<または[[, ->>または]]のどちらであってもよい。 - - -IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax* - -Intel Itanium 64アセンブリ言語用のハイライト。このファイル形式を認識させる方法 -については|asm.vim|を参照。 - -*.incファイルをIA64と認識させるには次を.vimrcに書き足す: > - :let g:filetype_inc = "ia64" - - -INFORM *inform.vim* *ft-inform-syntax* - -Inform構文ハイライトはInform Libraryによって提供されるシンボルを含んでいる。ほ -とんどのプログラムがそれを利用しているためである。Libraryのシンボルをハイライ -トさせたくないなら、次をvim初期化ファイルに加える: > - :let inform_highlight_simple=1 - -デフォルトではInformプログラムはZ-machineターゲットと仮定され、Z-machineアセン -ブリ言語シンボルが適切にハイライトされる。もしプログラムがGlulx/Glk環境をター -ゲットとしたものなら、次を初期化ファイルに加える: > - :let inform_highlight_glulx=1 - -こうすると代わりにGlulxオペコードをハイライトし、glk()をシステム関数としてハイ -ライトする。 - -Informコンパイラはある古いキーワードをエラーとみなす。普通、これらのキーワード -はエラーとしてハイライトされる。これをエラーとしてハイライトするのをやめるには、 -次を初期化ファイルに加える: > - :let inform_suppress_obsolete=1 - -デフォルトではハイライトされる言語機能はコンパイラのバージョン6.30とライブラリ -のバージョン6.11に従う。これより古いInform開発環境を使っているなら、次の行を初 -期化ファイルに加えるとよいかもしれない: > - :let inform_highlight_old=1 - -IDL *idl.vim* *idl-syntax* - -IDL (Interface Definition Language) ファイルは RPC 呼び出しを定義するために使 -われる。Microsoft の世界では COM インターフェイスと呼び出しの定義にも使われる。 - -IDL の構造は単純であるため、ヒューリスティックな方法でなく、完全に文法にのっとっ -たアプローチができる。その結果は巨大でいくぶん冗長であるが、一応は機能するよう -である。 - -idl ファイルには Microsoft 拡張がある。それらのうちいくつかは -idl_no_ms_extensions を定義すると無効になる。 - -より複雑な拡張は idl_no_extensions を定義すると無効になる。 - -変数 効果 ~ - -idl_no_ms_extensions Microsoft 独自の拡張の一部を無効にする -idl_no_extensions 複雑な拡張を無効にする -idlsyntax_showerror IDL エラーを表示する (少々うるさいがとても助け - になる) -idlsyntax_showerror_soft エラーに対してデフォルトでよりソフトな色を使う - - -JAVA *java.vim* *ft-java-syntax* - -java.vim構文ハイライトファイルはいくつかのオプションを提供している: - -Java 1.0.2では丸括弧の内側に波括弧が入ることは絶対になかったため、これはエラー -と判断された。Java1.1以降では(無名クラスとともに)これが可能になったため、エ -ラーと判断されなくなった。もし以前のようにしたいなら、vimの初期化ファイルに次 -の行を加えること: > - :let java_mark_braces_in_parens_as_errors=1 - -java.lang.*中の全ての識別子は常に全てのクラスから見える。これらをハイライトす -るには - :let java_highlight_java_lang_ids=1 -とする。 - -http://www.fleiner.com/vim/download.html にあるスクリプトjavaid.vimをダウンロー -ドすれば、ほとんどのJava標準パッケージの識別子をハイライトすることもできる。 -java.ioなど特定のパッケージの識別子だけをハイライトしたいならばこうする: > - :let java_highlight_java_io=1 -対応している全パッケージのリストはjavaid.vimを参照のこと。 - -関数を認識する方法はJavaコードの書き方に依存するため、関数名はハイライトされな -い。構文ファイルは関数をハイライトする方法を2つ備えている: - -関数宣言が常にタブ、スペース8個、スペース2個のいずれかでインデントされているな -ら > - :let java_highlight_functions="indent" -とするとよいかもしれない。 -しかし、関数とクラスの命名(大文字・小文字についての)に関するJavaガイドラインに -したがっているなら > - :let java_highlight_functions="style" -とすること。 -もしどちらのオプションもだめで、それでも関数宣言をハイライトしたいなら、 -java.vim中の定義を変更するか、もとのjava.vimに関数をハイライトするコードを加え -て自分用のjava.vimを作るかして独自の定義を作るしかない。 - -Java 1.1では、System.out.println()とSystem.err.println()はデバッグのためだけに -使われるものだった。そのためデバッグ用の文を区別してハイライトすることができる。 -それには次の定義を初期化ファイルに加える: > - :let java_highlight_debug=1 -するとデバッグ用の文が'Special'の文字としてハイライトされるだろう。これらを別 -の色でハイライトさせるには、以下のグループに対して新しいハイライトを定義するこ -と: - Debug, DebugSpecial, DebugString, DebugBoolean, DebugType -これらはそれぞれ、文、デバッグ文字列に使われる特別な文字、文字列、ブール型定 -数、型(this, super)に使われる。私はこれらの文に異なる背景色をつけることにして -いる。 - -Java と C++ 間で移植が容易なコードを書くための支援として、Java プログラム内 -の C++ キーワードをエラーとしてハイライトすることができる。そうするには次の -行を .vimrc に書く: > - :let java_allow_cpp_keywords=1 - -JavadocはJavaプログラム中から特別なコメントを抜き出してHTMLページを作成するプ -ログラムである。標準の設定ではこれらのHTMLコードをHTMLファイル(|html.vim|を参 -照)と同様にハイライトする。さらにこのコードの中にjavascriptとCSSを書くこともで -きる(後述)。しかし4つの違いがある: - 1. タイトル(その後にホワイトスペースが続く最初の'.'まで、または最初の'@'まで - のすべての文字)は異なる色でハイライトされる(この色を変更するには - CommentTitleを変えること)。 - 2. テキストは'Comment'としてハイライトされる。 - 3. HTMLコメントは'Special'としてハイライトされる。 - 4. 特別なJavadocタグ(@see, @param, ...)はSpecialとして、(@see, @param, - @exceptionなどの)引数はFunctionとしてハイライトされる。 -この機能をオフにするには初期化ファイルに次の行を加えること: > - :let java_ignore_javadoc=1 - -以上のjavadocコメントを使う場合、javascript、visual basicスクリプト、埋め込み -CSS(スタイルシート)のハイライトをすることもできる。これは実際にjavascriptや埋 -め込みCSSを含むjavadocコメントがあるときだけ意味がある。これらを有効化するため -のオプションは次の通り > - :let java_javascript=1 - :let java_css=1 - :let java_vb=1 - -ネストした丸括弧に異なる色をつけるには、javaParen、javaParen1、javaParen2に異 -なる色を定義する。例えば > - :hi link javaParen Comment -あるいは > - :hi javaParen ctermfg=blue guifg=#0000ff - -上方向にスクロールしていてハイライトがおかしくなった場合(CTRL-Lで再描画すると -直る)、内部変数"java_minlines"を大きくしてみるとよい: > - :let java_minlines = 50 -こうすると表示行の50行前から構文シンクロナイズが始まるようになる。デフォルト値 -は10である。大きな値にすることの不利点は、再描画が遅くなることである。 - - -LACE *lace.vim* *ft-lace-syntax* - -Lace (Language for Assembly of Classes in Eiffel)は大文字・小文字を無視する。 -しかしスタイルガイドラインはそうでない。大文字・小文字を区別してハイライトさせ -るには、vim変数'lace_case_insensitive'を初期化ファイル中で定義すればよい: > - :let lace_case_insensitive=1 - - -LEX *lex.vim* *ft-lex-syntax* - -"^%%$"セクションデリミタが、その後にどんなセクションが続くかの手がかりを与えな -いため、Lexはブルートフォースなシンクロナイズを行う。それゆえ(巨大なlexファイ -ルなどで)同期の問題が起こる場合には: > - :syn sync minlines=300 -の値を変更するとよいかもしれない。 - - -LIFELINES *lifelines.vim* *ft-lifelines-syntax* - -廃止された関数をエラーとしてハイライトしたい場合は .vimrc で次のように設定して -ください: > - - :let g:lifelines_deprecated = 1 -< -LISP *lisp.vim* *ft-lisp-syntax* - -lisp の構文ハイライトには2つのオプションがある: > - - g:lisp_instring : この変数が存在すると "(...)" 形式の文字列が、その中 - 身が lisp であるかのようにハイライトされる。AutoLisp - 用に便利である。 - g:lisp_rainbow : この変数が存在し、0以外であると段階の異なる括弧に - 対して異なるハイライトがつくようになる。 -< -オプション g:lisp_rainbow は括弧とバッククォートされた括弧に対して10段階の異な -る色をつける。色づけ段階の多さのため、rainbow モード自身が ctermfg とguifg を -使ってハイライトを指定する (rainbow モードでない場合はそうではない)。それゆえ、 -ハイライトグループを使う普通のカラースキームの影響を受けない。実際にどうハイラ -イトされるかはdark/bright の設定 (|'bg'| を参照) による。 - - -LITE *lite.vim* *ft-lite-syntax* - -lite構文ハイライトには2つのオプションがある。 - -文字列中でSQL構文ハイライトを行ってほしいならこうする: > - - :let lite_sql_query = 1 - -シンクロナイズの最小行数はデフォルトで100になっている。他の値に変えたいなら -"lite_minlines"をセットすればよい。例: > - - :let lite_minlines = 200 - - -LPC *lpc.vim* *ft-lpc-syntax* - -LPCはシンプルでメモリ効率的な言語、Lars Pensj| Cの略である。LPCのファイル名は -通常*.cである。これらのファイルをLPCと認識するとCプログラムのみを書くユーザの -迷惑になる。LPC構文を使用したいなら、.vimrcでこの変数をセットすること: > - - :let lpc_syntax_for_c = 1 - -これでも適切に動作しないCまたはLPCのファイルに対してはモードラインを使うこと。 -LPCファイルには: - - // vim:set ft=lpc: - -LPCと認識されてしまうCファイルには: - - // vim:set ft=c: - -変数をセットしたくないなら全てのLPCファイルでモードラインを使うこと。 - -LPCには複数の実装がある。我々はもっとも広く使われているものをサポートしたいと -思っている。デフォルトのLPC文法はMudOSシリーズ用である。MudOS v22以前を使って -いるなら、次をセットすることによりsensible モディファイヤをオフにし、v22以降の -新しいefunを無効にするとよい。MudOSの最新版を使っているときはこの変数をセット -しないこと: > - - :let lpc_pre_v22 = 1 - -LPCのLpMud 3.2シリーズには: > - - :let lpc_compat_32 = 1 - -LPCのLPC4シリーズには: > - - :let lpc_use_lpc4_syntax = 1 - -LPCのuLPCシリーズには: -uLPCはPike用に開発されている。なのでPike構文を代わりに使い、ソースファイルの名 -前を.pikeとすること。 - - -LUA *lua.vim* *ft-lua-syntax* - -この構文ファイルはLua 4.0とLua 5.0, 5.1(デフォルト)用に使える。グローバル変数 -lua_version と lua_subversion を使うと、これらのバージョンを指定することができ -る。例えば、Lua 4.0 の構文ハイライトを有効にするには次のコマンドを使う: > - - :let lua_version = 4 - -Lua 5.0 を使っているなら、次のコマンドを使う: > - - :let lua_version = 5 - :let lua_subversion = 0 - -ハイライトを Lua 5.1 に戻すには次のようにする: > - - :let lua_version = 5 - :let lua_subversion = 1 - - -MAIL *mail.vim* *ft-mail.vim* - -Vimはemailの標準的な要素(ヘッダ、シグネチャ、引用文、URL / emailアドレス)の全 -てをハイライトする。標準的な慣習に従い、シグネチャは、"--"とそれに続く任意個の -空白、そして改行のみからなる行で始まる。 - -Vimは']', '}', '|', '>'で始まる行または'>'が続く単語を引用文とみなす。引用文中 -のヘッダとシグネチャについては、テキストが'>'(1個のスペースが続いてもよい)で引 -用された場合のみハイライトする。 - -デフォルトではmail.vimは先頭表示行の100行前までの構文をシンクロナイズさせる。 -遅いマシンを使っていて、一般的に短いヘッダのemailを扱っているなら、これをより -小さい値に変えることが出来る: > - - :let mail_minlines = 30 - - -MAKE *make.vim* *ft-make-syntax* - -Makefileではエラーを見つけやすくするためにコマンドがハイライトされる。しかし、 -これは色が多すぎるかもしれない。この機能をオフにするにはこうする: > - - :let make_no_commands = 1 - - -MAPLE *maple.vim* *ft-maple-syntax* - -Waterloo Maple IncによるMaple Vは記号代数をサポートしている。その言語はユーザ -によって選択的にロードされる関数のパッケージをたくさんサポートしている。Maple -V release 4で供給される標準的なパッケージセットの関数がユーザの判断によって強 -調される。ユーザは.vimrcに以下を書くと、全てのパッケージ関数がハイライトされる: > - - :let mvpkg_all= 1 - -あるいは以下の表から任意のサブセット変数/パッケージを選んで.vimrcファイル中で -その変数を1にセットしてもよい($VIMRUNTIME/syntax/syntax.vimを読み込む前に行う -必要がある)。 - - Maple V パッケージ関数選択肢の表 > - mv_DEtools mv_genfunc mv_networks mv_process - mv_Galois mv_geometry mv_numapprox mv_simplex - mv_GaussInt mv_grobner mv_numtheory mv_stats - mv_LREtools mv_group mv_orthopoly mv_student - mv_combinat mv_inttrans mv_padic mv_sumtools - mv_combstruct mv_liesymm mv_plots mv_tensor - mv_difforms mv_linalg mv_plottools mv_totorder - mv_finance mv_logic mv_powseries - - -MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax* - -次を .vimrc に書いておかないかぎり、空の *.m ファイルは自動的に Matlab のファ -イルであるとみなされる: > - - let filetype_m = "mma" - - -MOO *moo.vim* *ft-moo-syntax* - -式の中でCスタイルのコメントを使っていて、それがハイライトを乱している場合は、C -スタイル用の拡張マッチ(これは遅い!)を使うことが出来る: > - - :let moo_extended_cstyle_comments = 1 - -文字列中の代名詞置換パターンのハイライトを無効化させるには: > - - :let moo_no_pronoun_sub = 1 - -正規表現演算子'%l'のハイライトと文字列中の'%('と'%)'のマッチを無効化させるには: -> - - :let moo_no_regexp = 1 - -対応していないダブルクォートを認識してエラーとしてハイライトすることが出来る: -> - - :let moo_unmatched_quotes = 1 - -組み込みプロパティ(.name, .location, .programmerなど)をハイライトするには : > - - :let moo_builtin_properties = 1 - -未知の組み込み関数を認識してエラーとしてハイライトすることが出来る。このオプショ -ンを使うなら、mooKnownBuiltinFunctionグループに自分自身の拡張を加えること。こ -のオプションを有効化するには: > - - :let moo_unknown_builtin_functions = 1 - -既知の組み込み関数のリストにsprintf()を加える例: > - - :syn keyword mooKnownBuiltinFunction sprintf contained - - -MSQL *msql.vim* *ft-msql-syntax* - -msql構文ハイライトには2つのオプションがある。 - -文字列中でSQL構文ハイライトをさせるにはこうする: > - - :let msql_sql_query = 1 - -シンクロナイズは、minlinesはデフォルトで100になっている。この値を変えるには、 -"msql_minlines"の望む値にすればよい。例: > - - :let msql_minlines = 200 - - -NCF *ncf.vim* *ft-ncf-syntax* - -NCF構文ハイライトには1つのオプションがある。 - -ncf.vimによって認識されない文をエラーとしてハイライトさせるにはこうする: > - - :let ncf_highlight_unknowns = 1 - -これらをエラーとしてハイライトさせたくない場合は、この変数をセットしないでおく。 - - -NROFF *nroff.vim* *ft-nroff-syntax* - -nroff構文ファイルはそのままでAT&T n/troffに対応している。構文ファイルに含まれ -ているGNU groff拡張機能を使うには、それを有効化する必要がある。 - -例えば、LinuxとBSDディストリビューションは、デフォルトではテキスト処理パッケー -ジとしてgroffを使う。groff用の拡張構文ハイライト機能を有効化するには、次のオプ -ションを初期化ファイルに加える: > - - :let b:nroff_is_groff = 1 - -groffは、Solarisでまだ使われているかもしれない古いAT&T n/troffとは異なる。 -groffのマクロとリクエスト名は2文字以上の長さであってもよく、言語プリミティブに -拡張がされている。例えば、AT&T troffではリクエスト\(yrを使い、2桁の数で年にア -クセスする。groffでは互換性のために同じリクエストを使うことも出来るし、または -groffネイティブの構文,\[yr]を使うことも出来る。さらに、\[year]として4桁の年を -直接使うことも出来る。マクロリクエストは2文字以上の長さであってもよい。例え -ば、GNU mmはverbatim環境を作るのに".VERBON"と".VERBOFF"というリクエストを受け -つける。 - -g/troffによって得られる最良の整形された出力を得るには、スペースと句読点に関す -るいくつかの単純なルールに従うべきである。 - -1. 行の末尾に空のスペースを置かないこと - -2. 文末のピリオド、エクスクラメーションマークなどの後にはちょうど1個のスペース - を置くこと。 - -3. 後述の理由により、全てのピリオドの後に改行(carriage return)を置くとよい。 - -これらの妙なtipsの理由は、g/n/troffが改行に、これらのルールに従わないとすぐに -混乱してしまうアルゴリズムを使っているためである。 - - -troffはTeXと違い、段落ごとでなく行ごとにテキストを書き込む。さらに、glueや -stretchの概念を持たず、入力に水平、垂直の空白があると全てそのまま出力される。 - -それゆえ、最終的なドキュメントで意図する以上の空白を文と文の間にはさまないよう -に注意すること。この理由のため、全ての句読点記号の後すぐに改行を入れるという習 -慣がある。最終的に処理された出力が「一様な」テキストになってほしければ、入力の -テキストで正しくスペースを置いておく必要がある。行末の空白と句読点の後の2個以 -上の空白をエラーとしてハイライトしたいならこうする: > - - :let nroff_space_errors = 1 - -正しい活字組みと干渉するかもしれないが、余分な空白や他のエラーを検出するもう1 -つの方法は、設定ファイル中で構文グループ"nroffDefinition"と"nroffDefSpecial"に -目立つハイライト定義を定義することである。例: > - - hi def nroffDefinition term=italic cterm=italic gui=reverse - hi def nroffDefSpecial term=italic,bold cterm=italic,bold - \ gui=reverse,bold - -ソースファイル中のプリプロセッサのエントリをセクションマーカーと同じくらい容易 -に表示させたいなら、.vimrc中で次のオプションを有効化する: > - - let b:preprocs_as_sections = 1 - -同様に、構文ファイルはmsパッケージ中の拡張段落マクロ(.XP)用の余分な段落マーカー -も含んでいる。 - -最後に、構文ファイル|groff.vim|が存在する。これはデフォルトでfile basisとグ -ローバルの両方でgroff構文ハイライトすることができる。 - - -OCAML *ocaml.vim* *ft-ocaml-syntax* - -OCaml構文ファイルは以下の拡張子を持つファイルに対応している: .ml, .mli, .mll -.mly。以下の変数をセットすると、標準的OCaml構文からcamlp4プリプロセッサでサ -ポートされている修正構文に切り替えることが出来る: > - - :let ocaml_revised = 1 - -以下の変数をセットすると"end"をエラーとしてハイライトするのをやめることが出来 -る。これはVimがシンクロナイズできないほど長い構造を含むソースのとき便利である: -> - - :let ocaml_noend_error = 1 - - -PAPP *papp.vim* *ft-papp-syntax* - -PApp構文ファイルは.pappファイルと、その小さな拡張、トップレベルのファイル -フォーマットとしてxmlを用いたperl/xml/html/その他の混合である.pxml, .pxslファ -イルを扱う。デフォルトでは、phtmlやpxmlセクションの内側の全ては埋め込みプリプ -ロセッサコマンドつきの文字列として扱われる。次の変数を初期化ファイルで設定する -とphtmlセクションの内側のhtmlコードを構文ハイライトしようとする: > - - :let papp_include_html=1 - -しかしこれは比較的遅く、実用的に編集するにはカラフルすぎる。 - -構文ファイルpapp.vimの最新版は、通常以下で得られる。 -http://papp.plan9.de - - -PASCAL *pascal.vim* *ft-pascal-syntax* - -"*.p"にマッチするファイルのタイプはProgressかPascalである。自動判別が機能しな -いなら、またはProgressファイルを一切編集しないとわかっているなら、これをvimrc -ファイルに書くといい: > - - :let filetype_p = "pascal" - -Pascal構文ファイルはTurbo Pascal, Free Pascal CompilerとGNU Pascal Compiler -で提供される拡張に対応するための拡張が施されてきた。Delphiのキーワードもサポー -トされている。デフォルトではTurbo Pascal 7.0の機能が有効化されている。標準的な -Pascalのキーワードだけを使いたいなら、次の行を初期化ファイルに加えること: > - - :let pascal_traditional=1 - -Delphi固有の構文(1行コメント、キーワード等)を有効化したいなら: > - - :let pascal_delphi=1 - - -オプションpascal_symbol_operatorは、+, *などのような演算子記号をOperatorの色を -使って表示するどうかを制御する。演算子記号を色づけするには、次の行を初期化ファ -イルに加えること: > - - :let pascal_symbol_operator=1 - -いくつかの関数はデフォルトでハイライトされる。これをオフにするには: > - - :let pascal_no_functions=1 - -さらに、いくつかのコンパイラ用に個別の変数がある。pascal_delphi, -pascal_gpc, pascal_fpcがある。デフォルトの拡張はTurbo Pascalに合うようになって -いる。 > - - :let pascal_gpc=1 - -または > - - :let pascal_fpc=1 - -文字列が1行で定義されるものとするなら、変数pascal_one_line_string variableを定 -義するとよい。 > - - :let pascal_one_line_string=1 - -タブ文字が好きでないなら、変数pascal_no_tabsをセットするとよい。するとタブがエ -ラーとしてハイライトされる。 > - - :let pascal_no_tabs=1 - - -PERL *perl.vim* *ft-perl-syntax* - -perl用の構文ハイライトにはたくさんのオプションがある。 - -PODファイルやPODセグメントを使っているなら、こうするとよいかもしれない: > - - :let perl_include_pod = 1 - -パースの複雑さを軽減するために (そしてパフォーマンスを上げるために) 、変数名と -内容のパースにおける2つの要素をオフにすることができる。 > - -変数名と関数名中のパッケージ参照('$PkgName::VarName'中の'PkgName::'のような)を -他の名前と区別しないようにするには次のようにする: > - - :let perl_no_scope_in_variables = 1 - -(Vim 6.x では違う方法だった: "perl_want_scope_in_variables" を設定するとこの機 -能が有効になった) - -'@{${"foo"}}'のように複雑なものをパースさせたくないなら次のようにする: > - - :let perl_no_extended_vars = 1 - -(Vim 6.x では違う方法だった: "perl_extended_vars" を設定するとこの機能が有効に -なった) - -文字列の色づけは変更できる。デフォルトでは文字列とqq friendsは第1行と同じよう -にハイライトされる。変数perl_string_as_statementをセットすると第2行のようにハ -イライトされる。 - - "hello world!"; qq|hello world|; - ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) - S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN (let perl_string_as_statement) - -(^ = perlString, S = perlStatement, N = None at all) - -シンクロナイズには3つのオプションがある。最初の2つは、シンクロナイズのトリガー -の一部をオフにするもので、ハイライトが適切に機能しないときのみ必要になる。スク -ロール中に突然スクリーン全体の色がすっかり変わってしまったらこれらのうち1つを -オフにしてみること。その誤りを引き起こした行を特定できるなら、それを知らせてく -ださい。 - -1つのトリガーは"^\s*sub\s*"に関するもので、もう1つはほぼ"^[$@%]"に関するもので -ある。 > - - :let perl_no_sync_on_sub - :let perl_no_sync_on_global_var - -以下のようにして、どこから構文ハイライトを始めるかの最大距離を設定できる: > - - :let perl_sync_dist = 100 - -perlで折りたたみを使いたいならperl_foldをセットすること: > - - :let perl_fold = 1 - -if 文などでも同様にブロックを折り畳みたければ、次のように設定する: > - - :let perl_fold_blocks = 1 - -perl の折り畳みが有効になっているとき、package や sub を折り畳みたくなければ、 -対応する変数を設定する: > - - :unlet perl_nofold_packages - :unlet perl_nofold_subs - - - -PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* - -[注意: これは以前は"php3"と呼ばれていた。しかし現在はphp4もサポートしているの -で"php"と名前が変更された] - -php用の構文ハイライトには以下のオプションがある。 - -文字列中でSQL構文ハイライトを行いたいなら: > - - let php_sql_query = 1 - -Baselibメソッドのハイライトを行いたいなら: > - - let php_baselib = 1 - -文字列中でHTML構文ハイライトを行いたいなら: > - - let php_htmlInStrings = 1 - -古いカラースタイルを使いたいなら: > - - let php_oldStyle = 1 - -ASPスタイルのショートタグを有効化したいなら: > - - let php_asp_tags = 1 - -ショートタグを無効化したいなら: > - - let php_noShortTags = 1 - -] や ) の対応エラーをハイライトしたいなら: > - - let php_parent_error_close = 1 - -対応する閉じ括弧がない開き括弧( や [が存在する場合、php終了タグをスキップさせ -たいなら: > - - let php_parent_error_open = 1 - -クラスや関数の折り畳みを有効化するには: > - - let php_folding = 1 - -シンクロナイズ方法を選ぶには: > - - let php_sync_method = x - -x = -1 で検索によるシンクロナイズ(デフォルト) -x > 0 少なくともx行上までシンクロナイズ -x = 0 最初からシンクロナイズ - - -PLAINTEX *plaintex.vim* *ft-plaintex-syntax* - -TeX とは組版言語であり、plaintex は「素の」TeX に対して使われるファイルタイプ -である。*.tex ファイルを決して素の TeX と認識してほしくないならば -|ft-tex-plugin| を参照。 - -この構文ファイルは次のオプションを持つ > - - let g:plaintex_delimiters = 1 - -角括弧 "[]" と波括弧 "{}" をハイライトさせるには上の変数を設定する。 - -PPWIZARD *ppwiz.vim* *ft-ppwiz-syntax* - -PPWizardはHTMLとOS/2 INFファイル用のプリプロセッサである。 - -構文ファイルは以下のオプションを持つ: - -- ppwiz_highlight_defs : PPWizardの定義についてのハイライトモードを決める。 - とりうる値は - - ppwiz_highlight_defs = 1 : #define 文においてその内容の色を保つ(例. PPWizard - マクロと変数) - - ppwiz_highlight_defs = 2 : 行継続記号を除き、#defineと#evaluate文が単一の色 - で表示される。 - - ppwiz_highlight_defsのデフォルトは1である。 - -- ppwiz_with_html : この値が1(デフォルト)なら、HTMLコードをハイライトする。0なら - HTMLコードを通常のテキストのように扱う。 - - -PHTML *phtml.vim* *ft-phtml-syntax* - -phtml用の構文ハイライトには2つのオプションがある。 - -文字列中でSQL構文ハイライトをさせたいならこうする: > - - :let phtml_sql_query = 1 - -シンクロナイズについては、minlinesのデフォルトは100になっている。他の値にした -いなら"phtml_minlines"を望む値にセットすればよい。例: > - - :let phtml_minlines = 200 - - -POSTSCRIPT *postscr.vim* *ft-postscr-syntax* - -PostScript用の構文ハイライトにはいくつかのオプションがある。 - -まず、どのバージョンのPostScript言語をハイライトするかである。現在のところ、言 -語の3つのバージョン、あるいはレベルが定義されている。レベル1はオリジナルの基本 -バージョンで、レベル2のリリース以前のすべての拡張を含んでいる。レベル2はもっと -も一般的なバージョンで、レベル3リリース以前のすべての拡張を含んでいる。レベル3 -は現在のところサポートされている中でもっともレベルが高い。次のように変数 -postscr_levelを定義することによって、PostScript言語のどのレベルをハイライトす -るか選ぶことができる: > - - :let postscr_level=2 - -この変数が定義されていないときはデフォルトの2(レベル2)になる。これが現在のとこ -ろもっとも普及しているためである。 - -すべてのPSインタープリタがその言語レベルのすべての言語機能をサポートしているわ -けではないことに注意。とくに、PSファイルの先頭の%!PS-Adobe-3.0は現在の -PostScriptがレベル3であることを示すわけではない! - -以下のように変数postscr_displayを定義すると、Display PostScriptの言語機能もハ -イライトさせることができる: > - - :let postscr_display=1 - -以下のように変数postscr_ghostscriptを定義すると、Ghostscript固有の言語機能もハ -イライトさせることができる: > - - :let postscr_ghostscript=1 - -PostScriptはたくさんの定義済み要素を持つ巨大な言語である。これらの要素すべてを -ハイライトすると便利であるが、そうすると遅いマシンではVimの動作が遅くなってし -まう。マシンフレンドリーにするために、デフォルトではフォント名と文字エンコーディ -ングはハイライトされない、これらをハイライトさせるには、以下の変数のどちらか -または両方をセットすること: > - - :let postscr_fonts=1 - :let postscr_encodings=1 - -and、or、notのハイライトについて、スタイル上のオプションが存在する。PostScript -では、これらの演算子の機能はオペランドの型に依存する。オペランドが両方ブール型 -なら論理演算子となり、両方整数型なら2項演算子となる。2項演算子と論理演算子を区 -別してハイライトすることができるので、どちらにしてもこれらはハイライトされなけ -ればならない。デフォルトではどちらも論理演算子としてハイライトされる。変数 -postscr_andornot_binaryを定義すると、どちらも2項演算子としてハイライトされる: > - - :let postscr_andornot_binary=1 -< - - *ptcap.vim* *ft-printcap-syntax* -PRINTCAP + TERMCAP *ft-ptcap-syntax* *ft-termcap-syntax* - -この構文ファイルはprintcapとtermcapデータベースに適用される。 - -*printcap*または*termcap*というパターンにマッチしないprintcap/termcapファイル -を認識させるためには、ファイル|myfiletypefile|において、あなたのシステムに合っ -たパターンを追加しなければならない。これらのパターンには、変数"b:ptcap_type"を -"print"か"term"のどちらかにセットしなければならない。するとオプション -'filetype'の値がptcapになる。 - -例えば、/etc/termcaps/以下の全てのファイルをtermcapファイルと識別させるように -するには次を書き加える: > - - :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" | - \ set filetype=ptcap - -上方向にスクロールしているときハイライトがおかしくなり、それがCTRL-Lで再描画す -ると直るようなら、変数"ptcap_minlines"の値を大きくしてみるとよい: > - - :let ptcap_minlines = 50 - -(デフォルトは20行) - - -PROGRESS *progress.vim* *ft-progress-syntax* - -"*.w"にマッチするファイルのタイプはProgressかCWEBである。自動判別がうまく機能 -しないなら、またはcwebファイルを一切編集しないとわかっているなら、次をvimrcに -加えるとよい: > - :let filetype_w = "progress" -同じことが"*.i"(アセンブリでもありうる)と"*.p"(Pascalでもありうる)にもいえる。 -アセンブリとPascalを使わないとわかっているならこれを使うこと: > - :let filetype_i = "progress" - :let filetype_p = "progress" - - - -PYTHON *python.vim* *ft-python-syntax* - -Python構文ハイライトをコントロールするオプションは4つある。 - -数字のハイライト: > - :let python_highlight_numbers = 1 - -組み込み関数のハイライト: > - :let python_highlight_builtins = 1 - -標準例外のハイライト: > - :let python_highlight_exceptions = 1 - -行末の空白と、スペースとタブの混在をハイライト: > - :let python_highlight_space_errors = 1 - -全てのハイライトを有効化させるには(上の3つのオプションをセットするのと同じ): > - :let python_highlight_all = 1 - - -QUAKE *quake.vim* *ft-quake-syntax* - -Quake構文定義はQuakeエンジンのどれかに基づくほとんど全てのFPS(First Person -Shooter)用に対応するはずである。しかし3つのゲーム(Quake, Quake 2, Quake 3 -Arena)間でコマンド名が少々異なる。そのため、3つのグローバル変数により、どのコ -マンドが有効であるか指定できるようになっている。3つの変数には次のような効果が -ある: - -Quakeでのみ利用可能なコマンドをハイライトするように設定: > - :let quake_is_quake1 = 1 - -Quake 2でのみ利用可能なコマンドをハイライトするように設定: > - :let quake_is_quake2 = 1 - -Quake 3 Arenaでのみ利用可能なコマンドをハイライトするように設定: > - :let quake_is_quake3 = 1 - -これら3つのコマンドを自由に組み合わせることが出来る。しかしゲームで利用できな -いコマンドもハイライトしてしまうかもしれない。 - - -READLINE *readline.vim* *ft-readline-syntax* - -readlineライブラリは主としてBASHシェルで使われ、BASHはかなりの数のコマンドとオ -プションを追加している。これらの項目を同様にハイライトするには次を|vimrc|に加 -えるか、readline構文ファイルを読み込む前にこれをタイプすればよい: > - let readline_has_bash = 1 - -こうするとBASH(バージョン2.05a以降。一部それ以前)が追加するコマンドもハイライ -トするようになる。 - - -REXX *rexx.vim* *ft-rexx-syntax* - -上方向にスクロールしているときにハイライトがおかしくなり、それがCTRL-Lで再描画 -すると直るようなら、変数"rexx_minlines"の値を大きくしてみるとよい: > - :let rexx_minlines = 50 -こうすると構文シンクロナイズが画面最上行の50行前から始まるようになる。値を大き -くすることの欠点は、再描画が遅くなることである。 - -Vim は ".r" ファイルのタイプを推測しようとします。(コメント行から) タイプを特 -定できなかった場合、デフォルトは "r" です。デフォルトを rexx にするには次の行 -を .vimrc に追加します: *g:filetype_r* -> - :let g:filetype_r = "r" - - -RUBY *ruby.vim* *ft-ruby-syntax* - -Ruby構文ハイライトにはたくさんのオプションがある。 - -デフォルトではキーワード"end"はそれに対応するブロック開始文にしたがって色づけ -される。この機能は便利だが、コストがかかる。再描画が遅くなったら(または色機能 -の貧弱なターミナルを使っているなら)変数"ruby_no_expensive"を定義することによっ -てこの機能をオフにできる: > - - :let ruby_no_expensive = 1 -< -この場合すべての制御キーワードに同じ色が使われる。 - -この機能を有効化したいが、上にスクロールしているときにハイライトがおかしくなり、 -それがCTRL-Lで再描画すると直るようなら、変数"ruby_minlines"を50以上の値にセッ -トしてみるとよい: > - - :let ruby_minlines = 100 -< -理想的にはこの値はファイル中の最も大きいクラスやモジュールの長さよりも大きくし -ておくとよい。 - -rubyIdentifierを取り除くと、特別な識別子がハイライトされなくなる: > - - :hi link rubyIdentifier NONE -< -これによって "ConstantName", "$global_var", "@@class_var", "@instance_var", -"| block_param |", ":symbol" のような特別な識別子がハイライトされなくなる。 - -Kernel, Module, Object などの重要なメソッドはデフォルトでハイライトされる。 -"ruby_no_special_methods" を定義するとこれらのハイライトがされなくなる: > - - :let ruby_no_special_methods = 1 -< -これによって "require", "attr", "private", "raise", "proc" などの重要なメソッ -ドのハイライトがされなくなる。 - -Rubyの演算子をハイライトすることができる。これは"ruby_operators"を定義すると有 -効になる: > - - :let ruby_operators = 1 -< -"ruby_space_errors" を定義するとホワイトスペースのエラーがハイライトされるよう -になる: > - - :let ruby_space_errors = 1 -< -これによって行末のホワイトスペースやタブ文字の前のスペース文字がエラーとして強 -調されるようになる。これは "ruby_no_trail_space_error" と -"ruby_no_tab_space_error" を定義すると改善することができる。これらはそれぞれ行 -末のホワイトスペースとスペース文字の後のタブ文字を無視する。 - -"ruby_fold" を定義すると折り畳みを有効にすることができる: > - - :let ruby_fold = 1 -< -これを定義すると、オプション 'foldmethod' が "syntax" になり、クラス、モジュー -ル、メソッド、コードブロック、ヒアドキュメント、コメントの折り畳みを行うように -なる。 - -"ruby_no_comment_fold"を定義すると複数行コメントの折り畳みを無効にできる: > - - :let ruby_no_comment_fold = 1 -< - -SCHEME *scheme.vim* *ft-scheme-syntax* - -デフォルトでは R5RS のキーワードだけをハイライトし、正しくインデントする。 - -変数 b:is_mzscheme または g:is_mzscheme が定義されていると、MzScheme 固有の設 -定が使われる。 - -また、scheme.vim は Chicken Scheme->C コンパイラのキーワードにも対応している。 -それを有効にするには b:is_chicken または g:is_chicken を定義する。 - - -SDL *sdl.vim* *ft-sdl-syntax* - -SDL用のハイライトにはいくつかのキーワードが抜けているかもしれない。しかしSDLに -はたくさんのキーワードがあるので、すべてに対応することはほとんど不可能である。 - -新しい標準SDL-2000ではすべての識別子の大文字・小文字が区別される(以前はそうで -はなかった)。また、すべてのキーワードが全部大文字または全部小文字であってもよ -い。構文ハイライトにこれを反映させるには次の変数をセットすればよい: > - :let sdl_2000=1 - -これはたくさんの新しいキーワードもセットする。古いキーワードを無効にするには( -これはよい考えである)こうする: > - :let SDL_no_96=1 - -インデントもおそらく不完全であるが、今のところ私はこれでとても満足している。 - - -SED *sed.vim* *ft-sed-syntax* - -タブをハイライトして通常の空白と区別しやすくするには、次の行をvimrcに書いて -"highlight_sedtabs"を定義する(TODOと同じ構文グループが使われる) > - - :let highlight_sedtabs = 1 - -(タブのハイライトは、検索パターン、置換テキスト、アドレス、 -Append/Change/Insertコマンドに含まれるテキストいずれかの中のタブにだけ適用され -る)。このオプションを有効化するなら、タブ幅を1文字にするとよい。そうすると文字 -列中のタブの数を数えやすくなる。 - -バグ: - - 変換コマンド(y)は置換コマンドとまったく同様に扱われる。つまり、この構文ファ - イルにおいては、変換は置換と同じフラグを受け取ると判断される。これは間違いで - ある(変換は一切フラグを受け取らない)。これに関係したコマンドは非常に複雑な処 - 理を要求するため(95パターン、もっともらしいパターンデリミタごとに1つ)、私は - このバグを容認している。 - - -SGML *sgml.vim* *ft-sgml-syntax* - -SGMLファイル中のタグをハイライトする方法は以下のように動作する。 - -開きタグ<>と閉じタグ</>は異なる色がつけられる。これは意図されたものである。開 -きタグには'Function'の色が使われ、閉じタグには'Type'の色が使われる(これらがど -う定義されているかを確かめたいならsyntax.vimを見ること)。 - -登録されているタグ名はCの文と同じ方法で色づけされる。エラーを見つけやすくする -ため、登録されていないタグ名は色づけされない。 - -引数名(や属性名)も同様である。登録されている属性名は登録されていない属性名と異 -なる色がつけられる。 - -いくつかのSGMLタグはテキストの外見を変更するのに使われる。以下のタグは構文ファ -イルsgml.vimによって認識され、通常のテキストの表示法を変更する: - <varname> <emphasis> <command> <function> <literal> <replaceable> <ulink> - <link>。 - -そのテキストの表示法を変えたいなら以下の構文グループを再定義しなければならない -: - - sgmlBold - - sgmlBoldItalic - - sgmlUnderline - - sgmlItalic - - sgmlLink for links - -この再定義を機能させるにはこれらすべてを再定義し、以下の変数をvimrc中で定義し -なければならない(初期化の際にファイルが読み込まれる順序のため) > - let sgml_my_rendering=1 - -この表示法を無効にしたければ次の行をvimrcに加える: > - let sgml_no_rendering=1 - -(Claudio Fleiner <claudio@fleiner.com>によるhtml.vimのヘルプテキストから一部借 -用した) - - -SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* - -これは「普通の」Unix (Bourne) sh、bashそしてKornシェルをカバーしている。 - -Vimは様々なファイル名がどのタイプであるかを指定することによって、どのシェルが -使われているかを決定しようとする: > - - ksh : .kshrc* *.ksh - bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash -< -これらのうちどれにも当てはまらなければ、ファイルの第一行によって判断される(例. -/bin/sh /bin/ksh /bin/bash)。第一行でシェルを指定されていれば、そのシェルが使 -用される。しかしいくつかのファイル(例. .profile)はシェルファイルであることはわ -かっていても、どのタイプか明らかではない。さらに、多くのシステムでshは -"bash"(Linux, Windows+cygwin)や"ksh"(Posix)へのシンボリックリンクになっている。 - -以下の3つの変数のどれかを.vimrcで定義することにより、デフォルトを設定すること -が出来る: - - ksh: > - let g:is_kornshell = 1 -< posix: (これは is_kornshell を1に設定することと同じ) > - let g:is_posix = 1 -< bash: > - let g:is_bash = 1 -< sh: (デフォルト) Bourne shell > - let g:is_sh = 1 - -"#! ..." という行がなく、かつユーザが上の方法でデフォルトの sh.vim の構文を設 -定していない場合、sh.vim は Bourne シェルの構文であると仮定する。エラーレポート -に RFC や市場浸透統計の引用を含める必要はありません。単に .vimrc でシステムで -使われるデフォルトの sh のバージョンを選択してください。 - -syntax/sh.vim は構文ベースの折り畳みを数種類用意している: > - let g:sh_fold_enabled= 0 (デフォルト。構文折り畳みなし) - let g:sh_fold_enabled= 1 (関数の折り畳みを有効化) - let g:sh_fold_enabled= 2 (ヒアドキュメントの折り畳みを有効化) - let g:sh_fold_enabled= 4 (if/do/for の折り畳みを有効化) -> -様々な構文要素(ヒアドキュメントと関数の中身)がsyntaxメソッドによって折り畳み可 -能になる(|:syn-fold|)。これらのうち複数を組み合わせることもできる: > - - let g:sh_fold_enabled= 3 (関数とヒアドキュメントの折畳を有効化) - -上方向にスクロールしているときにハイライトがおかしくなり、それがCTRL-Lで再描画 -すると直るようなら、変数"sh_minlines"の値を大きくしてみるとよい。例: > - - let sh_minlines = 500 - -こうすると構文シンクロナイズが画面最上行の500行前から始まるようになる。デフォ -ルトの値は200である。大きい値を設定することの欠点は、動作が遅くなるかもしれな -いことである。 - -シンクロナイズさせるものがあまりないときは表示がとても遅くなるかもしれない。こ -れを減らすために、変数"sh_maxlines"をセットすることができる。例: > - - let sh_maxlines = 100 -< -デフォルトはsh_minlinesの2倍の値が使われる。表示を高速化するにはこれをもっと小 -さい値にすること。欠点はハイライト間違いが出るかもしれないことである。 - - -SPEEDUP (AspenTech plant simulator) *spup.vim* *ft-spup-syntax* - -Speedup構文ファイルにはいくつかのオプションがある: - -- strict_subsections : この変数が定義されていると、セクションとサブセクション - 用のキーワードだけが文としてハイライトされ、他のキーワードにはされなくなる - (OPERATIONセクションのWITHINと同様)。 - -- highlight_types : この変数が定義されていると、温度や圧力のようなストリーム - 型が単純な識別子でなくTypeとしてハイライトされる。Includedは通常DECLAREセク - ション中に現れる型である;ユーザが自分用の型を定義しているならそれらを構文ファ - イルに含めなければならない。 - -- oneline_comments : この値は1から3までの間になり、#スタイルのコメントのハイラ - イトを決定する。 - - oneline_comments = 1 : 偶数個の#の後にも通常のSpeedupコードが現れることを許す - - oneline_comments = 2 : 2番目の#で始まるコードをエラーとして表示する。これが - デフォルトの設定である。 - - oneline_comments = 3 : 1個以上の#を含む行全体をエラーとしてハイライトする。 - -変数のPRESETにより、OPERATIONセクションはとても大きくなりがちであり、そのため -シンクロナイズが追いつかなくなるかもしれない。あなたのコンピュータが十分速いな -ら構文ファイルの最後近くでminlinesとmaxlinesの値を大きくするとよいかもしれない。 - - -SQL *sql.vim* *ft-sql-syntax* - *sqlinformix.vim* *ft-sqlinformix-syntax* - *sqlanywhere.vim* *ft-sqlanywhere-syntax* - -SQLにはANSI標準があるのだが、ほとんどのデータベースエンジンは独自の拡張を追加 -している。現在のところ、VimはOracleとInformixのSQL方言をサポートしている。 -デフォルトではVimは"*.sql"のファイルをOracle SQLであると判断する。 - -現在のところ、Vimは構文スクリプトによって、様々なベンダのSQLに対応している。 -デフォルト設定をOracleから他の対応しているSQLに変更することができる。また、 -バッファごとに使うSQLの方言を変えることも簡単にできる。 - -より詳しい説明は|ft_sql.txt|を参照。 - - -TCSH *tcsh.vim* *tcsh-syntax* - -これは"tcsh"という名前のシェルをカバーしている。これはcshのスーパーセットであ -る。ファイル形式がどのように判定されるかは|csh.vim|を参照。 - -tcshはシェル変数 backslash_quote をセットしていない限り文字列中に\"が現れるこ -とを許さない。Vimにバックスラッシュクォート構文が存在しないと判断させたいな -ら、次の行を.vimrcに加えること: > - - :let tcsh_backslash_quote = 0 - -上方向にスクロールしているときにハイライトがおかしくなり、それがCTRL-Lで再描画 -すると直るようなら、変数 tcsh_minlines の値を大きくしてみるとよい: > - - :let tcsh_minlines = 1000 - -こうすると構文シンクロナイズが画面最上行の1000行前から始まるようになる。 -tcsh_minlines に "fromstart" をセットすると、ファイルの先頭からシンクロナイズ -が行われるようになる。tcsh_minlines の既定値は 100。大きな値にすることの欠点は、 -再描画が遅くなることである。 - - -TEX *tex.vim* *ft-tex-syntax* - - *tex-folding* - Tex: 構文折り畳み? ~ - -<syntax/tex.vim>のバージョン28以降では、構文による部分、章、節、小節などの折り -畳みに対応している。それを有効にするには次の行を<.vimrc>に書き、 > - let g:tex_fold_enabled=1 -:set fdm=syntaxとする。後者をLaTeXファイルの末尾にモードラインとして書いておく -といいかもしれない: > - % vim: fdm=syntax -< - *tex-nospell* - Tex: コメントの中ではスペルチェックを行わせたくない場合 ~ - -LaTeX ファイルのコメントの中にソースコードのようなものを含めることがあるので、 -コメントの中ではスペルチェックを無効にしたいという人もいる。そのようにするには -次の行を .vimrc に加える: > - let g:tex_comment_nospell= 1 -< - *tex-verb* - Tex: Verbatim ゾーンをスペルチェックするには?~ - -たいてい verbatim リージョンはソースコードのようなものを書くのに使われます。 -ソースコードをスペルチェックしたいと思うことはほとんどないでしょう。とはいえ、 -もし verbatim ゾーンの内容をスペルチェックしたいときは <.vimrc> で次のように設 -定してください: > - let g:tex_verbspell= 1 -< - *tex-runon* - Tex: コメントや MathZone の区切り ~ - -<syntax/tex.vim>の構文ハイライトはTeX, LaTeX, AmsTeXをサポートしている。normal, -texZone, texMathZoneの3つの主な区間・範囲がサポートされている。これらの区間を -適切に区切るようかなりの努力がされたが、$..$と$$..$$で線引きされる区間は開始・ -終了のパターンとまったく同じにシンクロナイズさせることは出来ない。その結果、特 -別な"TeX comment"が提供されている > - %stopzone -このコメントがあると、ここで強制的にtexZoneまたはtexMathZoneのハイライトを終わ -らせる。 - - *tex-slow* - Tex: 構文ハイライトが遅いならば ~ - -遅いコンピュータを使っているなら、これらの値を減らすとよいかもしれない > - :syn sync maxlines=200 - :syn sync minlines=50 -(特に後者を)。速いコンピュータを使っているならこれらの値を増やしてもよい。これ -らは第一にシンクロナイズ(つまり、画面最上行のテキストがどのグループに入るか)に -影響を与える。 - - *tex-morecommands* *tex-package* - Tex: もっとコマンドをハイライトさせるには ~ - -LaTeXはプログラミング言語であり、特殊化されたLaTeXのコマンド、構文、フォントが -つまったパッケージがたくさんある。そのようなパッケージを使っている人は、標準の -syntax/tex.vimにそのパッケージを対応させてほしいと思うだろう。しかしそれは明ら -かに非現実的である。そこで、|mysyntaxfile-add|で使われているテクニックを使っ -て、syntax/tex.vimで提供されているハイライトを拡張・修正してみてください。 - - *tex-error* - Tex: エラーのハイライトが行き過ぎならば ~ - -<tex.vim>は様々な種類のレキシカルエラーチェックをサポートしている。すなわち、 -エラーチェックはとても便利だが、実際にはエラーでない箇所もエラーと示すかもしれ -ない。それが嫌なら、次の行を<.vimrc>に置くとよい: > - let tex_no_error=1 -すると<syntax/tex.vim>によるすべてのエラーチェックが行われなくなる。 - - *tex-math* - Tex: 新しいMathグループが必要ならば ~ - -新しいmathグループをLaTeXに含めるには、以下のコードがその例となるだろう: > - - call TexNewMathZone(sfx,mathzone,starform) -新しいmathグループに一意な接尾辞をつけたいと思うだろう(現在のところ、AからLま -でとVからZまでは<syntax/tex.vim>自身によって取得されている)。 -例として、<syntax/tex.vim>でeqnarrayがどのように設定されているかを見てみよ -う: > - call TexNewMathZone("D","eqnarray",1) -"mathzone"をあなたが作ったmathグループの名前に変える必要がある。 -また、それが呼ばれるようにするために.vim/after/syntax/tex.vimに書くこと。 -変数"starform"が真ならば、あなたが作ったmathグループがアスタリスクつきの形を -もつことを意味する(例. eqnarray*)。 - -LOCALMATHをあなたが決めた新しいmathグループに書き換える必要がある。そしてこれ -を.vim/after/syntax/tex.vimに加えること。 - - *tex-style* - Tex: 新しいスタイルを始めるには ~ - -*.texファイルで"\makeatletter"を使う人がいるかもしれないので、コマンド中で"@" -が使えるようになっている。しかし*.texファイルは次の拡張子: sty cls clo dtx ltx -を持たないので@をエラーと判断してハイライトする。これを解決するにはこうする: > - - :let b:tex_stylish = 1 - :set ft=tex - -"let g:tex_stylish=1"を<.vimrc>に書くと<syntax/tex.vim>は常にこのような@の使用 -法を受け入れるようになる。 - - *tex-cchar* *tex-cole* *tex-conceal* - Tex: Conceal モードを活用する ~ - -'conceallevel' が 2 に設定され、エンコーディングとして utf-8 が使われていると -き、さまざまな文字シーケンスがそれに対応した utf-8 グリフとして表示されます。 -対応している文字としてはアクセント付き文字、Math ゾーンの中のギリシア文字、 -Math ゾーンの中の上付き記号と下付き記号などがあります。すべての上付き記号と下 -付き記号を表示できるわけではありません。utf-8 がサポートしている範囲でのみ利用 -可能です。実際のところ、サポートされている下付き記号は少ししかありません。 - -使用例としては、ウィンドウを垂直分割して (|CTRL-W_v| 参照)、一つのウィンドウは -|'conceallevel'| を 0 に設定してもう一方は 2 に設定し、両方で |'scrollbind'| -を設定するような使い方があります。 - - *g:tex_conceal* - Tex: Conceal モードの選択 ~ - -g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示を変更できま -す。初期設定は "admgs" で、これは次の文字セットが Conceal 表示されます: > - - a = アクセント/合字 (accents/ligatures) - d = 区切り記号 (delimiters) - m = 数学記号 (math symbols) - g = ギリシア文字 (Greek) - s = 上付き記号/下付き記号 (superscripts/subscripts) -< -これらの文字を設定から外すことで、それに関連した文字が Conceal 表示されなくな -ります。 - - -TF *tf.vim* *ft-tf-syntax* - -tfの構文ハイライトには1つのオプションがある。 - -シンクロナイズについて、minlinesのデフォルトは100になっている。この値を変える -には、"tf_minlines"に望みの値をセットする。例: > - - :let tf_minlines = your choice - - -VIM *vim.vim* *ft-vim-syntax* - *g:vimsyn_minlines* *g:vimsyn_maxlines* -正確な構文ハイライトと画面更新速度はトレードオフの問題である。正確さを向上させ -るには、変数 g:vimsyn_minlines の値を大きくすればよい。g:vimsyn_maxlines も画 -面更新頻度を高めるのに使える(これについては|:syn-sync|を参照)。 > - g:vim_minlines : シンクロナイズの最小行数を指定する - g:vim_maxlines : シンクロナイズの最大行数を指定する -< - (g:vim_minlines と g:vim_maxlines はこれらのオプションの以前の名前であ - る) - - *g:vimsyn_embed* -g:vimsyn_embed オプションは、どの外部スクリプト言語の埋め込みに対応するかを指 -定する。 > - - g:vimsyn_embed == 0 : どのスクリプトの埋め込みも対応しない - g:vimsyn_embed =~ 'm' : mzscheme に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 'p' : perl に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 'P' : python に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 'r' : ruby に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 't' : tcl に対応 (コンパイル時に有効にした場合のみ) -< -g:vimsyn_embed の既定値は "mpPr" であり、mzscheme, perl, python, ruby に対応し -ている。tcl が利用可能でない環境で has("tcl") の判定を行うと Vim がハングする -ようなので、デフォルトでは tcl の埋め込みには対応していない(もちろん、有効にし -たい場合には g:vimembedscript に含めることで有効にできる)。 - *g:vimsyn_folding* - -syntax/vim.vim によって折り畳みが可能である: > - - g:vimsyn_folding == 0 または変数が存在しない: 構文ベースの折り畳みはしない - g:vimsyn_folding =~ 'a' : augroups - g:vimsyn_folding =~ 'f' : 関数を折り畳む - g:vimsyn_folding =~ 'm' : mzscheme スクリプトを折り畳む - g:vimsyn_folding =~ 'p' : perl スクリプトを折り畳む - g:vimsyn_folding =~ 'P' : python スクリプトを折り畳む - g:vimsyn_folding =~ 'r' : ruby スクリプトを折り畳む - g:vimsyn_folding =~ 't' : tcl スクリプトを折り畳む - - *g:vimsyn_noerror* -syntax/vim.vimによるエラーのハイライトは必ずしも正しいとは限らない。Vimスクリ -プトは正しくハイライトするのが難しい言語である。エラーのハイライトをやめるには -次を|vimrc|に書けばよい: > - - let g:vimsyn_noerror = 1 -< - - -XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax* - -XF86Configファイルの構文はXFree86 v3.xとv4.xで異なっている。両方のバージョンが -サポートされている。自動的に判定がされるが、完全からはほど遠い。手動でバージョ -ンを設定する必要があるかもしれない。使用しているXFree86に応じて、.vimrc中で変 -数xf86conf_xfree86_versionを3または4にセットすること。例: > - :let xf86conf_xfree86_version=3 -複数のバージョンが混在しているときには -変数b:xf86conf_xfree86_versionをセットすること。 - -Note オプション名の中のスペースとアンダースコアはハイライトされない。オプショ -ン名をハイライトさせるには"__s yn con gr_e_e_n"でなく"SyncOnGreen"と書くこと。 - - -XML *xml.vim* *ft-xml-syntax* - -Xml名前空間がデフォルトでハイライトされる。次のグローバル変数をセットするとそ -れが無効化される: > - - :let g:xml_namespace_transparent=1 -< - *xml-folding* -xml構文ファイルを使うと、開始タグと終了タグの間を折りたたむ|folding|ことができ -る(|:syn-fold|を参照)。これをオンにするには > - - :let g:xml_syntax_folding = 1 - :set foldmethod=syntax - -とする。 -構文による折り畳みは、構文ハイライトを著しく遅くする可能性がある。特に巨大なファ -イルではそうである。 - - -X Pixmaps (XPM) *xpm.vim* *ft-xpm-syntax* - -xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を生成する。そのため、色 -設定文字列などを変更したときは":set syn=xpm"などとしてxpm.vimを読み直さなけれ -ばならない。 - -色つきのピクセルをコピーするには"yl"で"pixel"をヤンクし、どこかで"P"としてそれ -を挿入する。 - -マウスで図を描くには、次のようにしてみるとよい: > - :function! GetPixel() - : let c = getline(".")[col(".") - 1] - : echo c - : exe "noremap <LeftMouse> <LeftMouse>r".c - : exe "noremap <LeftDrag> <LeftMouse>r".c - :endfunction - :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR> - :set guicursor=n:hor20 " to see the color beneath the cursor -これを行うと、右ボタンがピペットになり、左ボタンがペンになる。これは1ピクセル -につき1文字だけとなっているXPMファイルでうまく機能する。ピクセル文字列の外をク -リックしてはならない。これを自由に改良してください。 - -セルサイズが正方形のフォントを使うと見栄えがよくなる。Xの場合の例: > - :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* - - -============================================================================== -5. 構文を定義する *:syn-define* *E410* - -構文アイテムには3つのタイプがある。 - -1. キーワード (Keyword) - これはオプション'iskeyword'で定義されるキーワード文字だけからなる。他の構文 - 要素を含むことはできない。完全な単語(マッチの前後にキーワード文字が存在しな - い)にのみマッチする。キーワード"if"は"if(a=b)"にはマッチするが、"ifdef x"に - はマッチしない。"("はキーワード文字でなく、"d"はキーワード文字だから。 - -2. マッチ (Match) - 単一の正規表現パターンにマッチする。 - -3. リージョン (Region) - 正規表現パターン"start"のマッチ位置から始まり、正規表現パターン"end"のマッ - チ位置で終わる。その間にどんなテキストがあってもよい。正規表現パターン - "skip"を使うとパターン"end"にマッチするのを避けることができる。 - -複数の構文アイテムを1つの構文グループに入れることができる。構文グループにはハ -イライト属性を与えることができる。例えば、"/* .. */"のコメントを定義する要素と -"// .."のコメントを定義する要素を作り、両方を"Comment"グループに入れる。そして -"Comment"を青のボールドフォントで表示するように指定すると、両方のタイプのコメ -ントに対して同じハイライトがされるようになる。1つの構文要素に対し1つの構文グルー -プを作ってもよいし、すべての要素を1つのグループに入れてもよい。これはハイライ -ト属性をどう指定したいかによる。各要素をそれ自身のグループに入れるとすると、た -くさんのグループに対して色を指定しなければならなくなる。 - -構文グループとハイライトグループは似ているが異なることに注意。ハイライトグルー -プに対してはハイライト属性を与えることになる。それらの属性が同名の構文グループ -に対して適用される。 - -同じ箇所に対して複数のアイテムがマッチした場合には、最後に定義されたものが有効 -になる。よって同じテキストにマッチする要素を使って、以前に定義された構文アイテ -ムを上書きすることができる。大文字・小文字の違いも含めてマッチするキーワードが -ある場合は、そうでないものより優先される。 - - -優先順位 *:syn-priority* - -複数の構文アイテムがマッチするときは、以下のルールが適用される: - -1. 複数のマッチまたはリージョンアイテムが同じ場所で始まるときは、後に定義され - たものが優先される。 -2. マッチとリージョンよりキーワードが優先される。 -3. より前の位置から始まる要素が優先される。 - - -大文字・小文字の区別 *:syn-case* *E390* - -:sy[ntax] case [match | ignore] - これ以降の":syntax"コマンドが大文字・小文字を区別するかどうかを定義す - る。"match"を使うと区別し、"ignore"を使うと区別しなくなる。これ以前の - 要素には影響せず、次の":syntax case"コマンドまでのすべての要素に影響 - する。 - - -スペルチェック *:syn-spell* - -:sy[ntax] spell [toplevel | notoplevel | default] - 構文アイテムに入っていないテキストに対して、どこでスペルチェック - を行うかを定義する: - - toplevel: テキストのスペルチェックを行う。 - notoplevel: テキストのスペルチェックを行わない。 - default: クラスタ@Spellがあるときスペルチェックを行わない。 - - 構文アイテムに入っているテキストはクラスタ@Spellと@NoSpellを使う - |spell-syntax|。クラスタ@Spellと@NoSpellがないときは、スペルチェックは - "default"と"toplevel"に対して行われる。 - - スペルチェックを有効化するにはオプション'spell'をオンにしなければなら - ない。 - - -キーワードの定義 *:syn-keyword* - -:sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] - - キーワードを定義する。 - - {group-name} "Comment"のような構文グループ名。 - [{options}] 後述の|:syn-arguments|を参照。 - {keyword} .. このグループに含めるキーワードのリスト。 - - 例: > - :syntax keyword Type int long char -< - {options}は行のどこに置いてもよい。それらは与えられたキーワード全てに - 適用される。オプションがキーワードの後にあっても同じ。以下の例はまった - く同じ意味になる: > - :syntax keyword Type contained int long char - :syntax keyword Type int long contained char - :syntax keyword Type int long char contained -< *E789* - Vimのexコマンドのようにキーワードに短縮形があるとき、省略可能な部分を - []のでくくることによって受け入れるキーワードをいっぺんに定義することが - できる: > - :syntax keyword vimCommand ab[breviate] n[ext] -< - キーワードは、その文字全てがオプション'iskeyword'に含まれていないと認 - 識されないことに注意。1文字でも含まれていないものがあると、そのキーワー - ドは認識されない。 - マルチバイト文字を使うこともできる。マルチバイト文字は'iskeyword'に含 - まれている必要はない。 - - キーワードは常にマッチやリージョンより優先される。キーワードは一要素以 - 上マッチしたとき使われる。キーワードは入れ子にならなく、それ以外のもの - を含むこともできない。 - - オプション名と同じ単語は、それがその位置で利用できないものであったとし - ても、キーワードとして定義することはできない。マッチで代用すること。 - - キーワードの長さは最大80文字である。 - - containmentが異なれば、同じキーワードを複数回定義することができる。例 - えば、まずキーワードをcontainedでなく定義して1つのハイライトグループを - 設定し、次にcontainedとして定義して別のハイライトグループを設定するこ - とができる。例: > - :syn keyword vimCommand tag - :syn keyword vimSetting contained tag -< 構文要素の外側に"tag"があったときはハイライトグループ"vimCommand"が適 - 用される。"vimSetting"を含む構文要素の中に"tag"があったときは - "vimSetting"グループが適用される。 - - -マッチの定義 *:syn-match* - -:sy[ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}] - - マッチを定義する。 - - {group-name} "Comment"のような構文グループ名。 - [{options}] 後述の|:syn-arguments|を参照。 - [excludenl] 行末の"$"を含んでいるパターンに対して、行末以 - 降までマッチやリージョンを拡張しないようにす - る。パターンの前に置かなければならない。 - |:syn-excludenl| - {pattern} マッチを定義する検索パターン。|:syn-pattern|を - 後述の参照。 - パターンは複数行にもマッチする。よって検 - 索を開始する場所によってマッチが変わってくる可 - 能性がある。シンクロナイズが関係してくることに - 注意。 - - 例 (文字定数にマッチする): > - :syntax match Character /'.'/hs=s+1,he=e-1 -< - -リージョンの定義 *:syn-region* *:syn-start* *:syn-skip* *:syn-end* - *E398* *E399* - -:sy[ntax] region {group-name} [{options}] - [matchgroup={group-name}] - [keepend] - [extend] - [excludenl] - start={start_pattern} .. - [skip={skip_pattern}] - end={end_pattern} .. - [{options}] - - リージョンを定義する。複数行にわたってもよい。 - - {group-name} "Comment"のような構文グループ名。 - [{options}] 後述の|:syn-arguments|を参照。 - [matchgroup={group-name}] 以下の開始パターンと終了パターンのマッチに - のみ使われる構文グループ。マッチの開始パターン - と終了パターンには使われない。開始パターンと終 - 了パターン用に異なるグループを使わないようにリ - セットするにはNONEを使う。 - |:syn-matchgroup|を参照。 - keepend 内包されたマッチが終了パターンを越えないように - する。 - |:syn-keepend|を参照。 - extend このリージョンを含むアイテムの"keepend"を上書 - きする。|:syn-extend|を参照。 - excludenl 行末の"$"を含んでいるパターンに対して、行末以 - 降までマッチやアイテムを拡張しないようにする。 - 終了パターンに対してのみ使い道がある。適用する - パターンの前に置かねばならない。 - |:syn-excludenl| - start={start_pattern} リージョンの開始を定義する検索パターン。後述の - |:syn-pattern|を参照。 - skip={skip_pattern} その中ではリージョンの終了を探さないテキストを - 定義する検索パターン。|:syn-pattern|を参照。 - end={end_pattern} リージョンの終了を定義する検索パターン。 - 後述の|:syn-pattern|を参照。 - - 例: > - :syntax region String start=+"+ skip=+\\"+ end=+"+ -< - start/skip/endパターンとオプションはどんな順序で書いてもよい。skip - パターンは0個か1個許される。startとendパターンは1個以上なければならな - い。つまりskipパターンは省略できるが、少なくとも1つのstartとendパター - ンを書かなければならない。等号記号の前後にはホワイトスペースがあっても - よい(たいていはホワイトスペースがないほうが見やすいが)。 - - 2個以上のstartパターンが与えられたときは、それらの1つがマッチすれば十 - 分である。つまりstartパターンらの間にはOR関係があることになる。最後に - マッチしたものが使われる。endパターンについても同じである。 - - endパターンの検索はstartパターンの直後から行われる。これはendパターン - のマッチとstartパターンは決して重ならないことを意味する。 - - skipとendパターンは改行をまたいでマッチしてもよい。しかしパターンの検 - 索はどの行からも始まりうるので、望みどおりにならないこともある。 - skipパターンは次の行のendパターンのマッチを回避しない。問題を避けるには - 単一行のパターンを使うこと。 - - Note: リージョンの開始は、startパターンのマッチによってのみ決まる。 - endパターンの照合のチェックはされない。次のは機能しない: > - :syn region First start="(" end=":" - :syn region Second start="(" end=";" -< 2番目のは常にFirstより前にマッチする(最後に定義されたパターンが優先され - る)。こうすると、その前に':'があるかどうかに関わらず、2番目のリージョ - ンが次の';'まで続く。マッチを使うとうまくいく: > - :syn match First "(\_.\{-}:" - :syn match Second "(\_.\{-};" -< このパターンは"\_."によって任意の文字と改行にマッチし、"\{-}"によって - 繰り返しにマッチする(最小限の個数の繰り返し)。 - - *:syn-keepend* - デフォルトでは内包されたマッチはendパターンのマッチを隠す。これはネス - ト用に便利である。例えば、"{"で始まり"}"で終わるリージョンがもう1つの - リージョンを含むことができる。"}"に出会うと内包されたリージョンが終わ - り、外側のリージョンは終了しない: - { 外側の"{}"リージョンの開始 - { 内包された"{}"リージョンの開始 - } 内包された"{}"リージョンの終了 - } 外側の"{}"リージョンの終了 - この挙動が望みでないなら、引数"keepend"をつければ、外側のリージョンの - endパターンのマッチによって内包されたアイテムも終了させることができる。 - そうすると同一リージョンのネストが不可能になるが、内包されたアイテムで - endパターンをスキップさせることなく、endパターンの一部をハイライトする - ことができる。例: > - :syn match vimComment +"[^"]\+$+ - :syn region vimCommand start="set" end="$" contains=vimComment keepend -< "keepend"によってvimCommandが常に行末で終わるようにしている。たとえ内 - 包されたvimCommentが<EOL>とのマッチを含んでいてもそのようになる。 - - "keepend"が使われないときは、内包されたマッチの後でendパターンのマッチ - が検索される。"keepend"が含まれているときは最初にendパターンにマッチし - たところで終了し、内包されたマッチもすべてそこで終了になる。 - - *:syn-extend* - 引数"extend"を使うと"keepend"の挙動が変わる。"keepend"付きのアイテム中 - に"extend"付きのアイテムが内包されていると、"keepend"が無視され、外側 - のリージョンが拡張される。これによっていくつかのアイテムに対して例外的 - にリージョンを拡張させるようにできる。例: > - - :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript - :syn match htmlItem +<[^>]*>+ contained - :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend - -< - この例では、htmlItemの位置でhtmlRefが終了する。htmlItemは<>要素をハイ - ライトするためだけに使われる。htmlScriptアイテムはhtmlRefアイテムを拡 - 張する。 - - もう1つの例: > - :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend -< "</a>"を別の色でハイライトしたいときなどのために、"keepend"つきでリー - ジョンを定義し、内包するアイテムによって終端が変更されないようにしてい - る。ただしxmlFoldがネストしたとき(それ自身を含んだとき)、"extend"が適 - 用され、内側の"</a>"はそのリージョン自身だけを終了させ、それを含んでい - るリージョンは終了しない。 - - *:syn-excludenl* - マッチ用のパターンやリージョンの終了パターンが行末にマッチさせるために - '$'を含んでいると、それを含むリージョンアイテムが次の行まで継続するよ - うになる。例えば、"\\$"(行末のバックスラッシュ)とのマッチを使うと、通 - 常は行末で終了するはずのリージョンを継続させることができる。これはデ - フォルトの挙動である。これが望みどおりでないなら、これをされる2つの方 - 法がある: - 1. 外側のアイテムに"keepend"を使う。こうすると含んでいるアイテム全てに - 対して拡張しないようにする。含んでいるアイテム全てが外側のアイテム - を拡張してはならないときに使える。 - 2. 内側のアイテムに"excludenl"を使う。こうするとそのマッチに対して、そ - れを含んでいるマッチやリージョンを拡張しないようにする。これはいく - つかのアイテムだけが外側のアイテムを拡張してはならないときに使える。 - "excludenl"はそれを適用するパターンの前に置かねばならない。 - - *:syn-matchgroup* - "matchgroup"は、リージョンの本体とその開始・終了パターンに対して異なる - ハイライトをしたいときに使える。例: > - :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ -< こうすると引用符を"Quote"グループでハイライトし、その間にあるテキスト - を"String"グループでハイライトすることができる。"matchgroup"はそれが従 - うすべての開始・終了パターンに対して使われる。matchgroupを使わないよう - に戻すには"matchgroup=NONE"を使う。 - - 開始・終了パターンが"matchgroup"でハイライトされるとき、そのリージョン - に含まれているアイテムは無視される。これによって含まれているアイテムが - 開始・終了パターンにマッチするのを避けることができる。"transparent"を - 使っている場合、これは"matchgroup"でハイライトされる開始・終了パターン - のマッチ部分には適用されない。 - - 次の例は、3段階の括弧を異なる色でハイライトする例である: > - :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2 - :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained - :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained - :hi par1 ctermfg=red guifg=red - :hi par2 ctermfg=blue guifg=blue - :hi par3 ctermfg=darkgreen guifg=darkgreen -< - *E849* -構文グループの最大数は 19999 です。 - -============================================================================== -6. :syntaxの引数 *:syn-arguments* - -構文アイテムを定義する:syntaxコマンドにはたくさんの引数がある。 -ここでは共通のものを説明する。引数はどんな順序でもよく、パターンと混ざっていて -もよい。 - -全てのコマンドが全ての引数を受けいれるわけではない。次の表はどの引数がどのコマ -ンドに対して利用可能かを示している: - *E395* - contains oneline fold display extend concealends~ -:syntax keyword - - - - - - -:syntax match yes - yes yes yes - -:syntax region yes yes yes yes yes yes - -以下の引数は3つのコマンド全てに対して使える: - conceal - cchar - contained - containedin - nextgroup - transparent - skipwhite - skipnl - skipempty - -conceal *conceal* *:syn-conceal* -訳注: conceal = 隠す、秘密にする - -"conceal" 引数が指定されると、そのアイテムは Conceal 可能になります。アイテム -が実際に Conceal 表示されるかどうかは 'conceallevel' オプションの設定に依存し -ます。現在行のアイテムを Conceal 表示するかどうかは 'concealcursor' オプション -で制御できます (行の編集を妨げないようにするため)。 - -concealends *:syn-concealends* - -"concealends" 引数が指定されると、リージョンの開始部分と終了部分が Conceal 可 -能になります (リージョンの中身はなりません)。アイテムが実際に Conceal 表示され -るかどうかは 'conceallevel' の設定に依存します。"matchgroup" で別のハイライト -を設定することでリージョンの終了部分だけを別に Conceal 表示するということもで -きます。 - -cchar *:syn-cchar* - - *E844* -"cchar" 引数はアイテムが Conceal 表示されたときに実際に画面に表示される文字を -定義します ("cchar" は conceal 引数が指定されたときのみ意味を持ちます)。 -"cchar" が指定されていない場合はデフォルトの Conceal 文字として 'listchars' オ -プションが使われます。Tab 文字のようなコントロール文字は使用できません。例: > - :syntax match Entity "&" conceal cchar=& -ハイライトについては |hl-Conceal| を参照してください。 - -contained *:syn-contained* - -引数"contained"が与えられると、そのアイテムはトップレベルでは認識されず、他の -マッチの"contains"フィールドで指定されたときのみ認識される。例: > - :syntax keyword Todo TODO contained - :syntax match Comment "//.*" contains=Todo - - -display *:syn-display* - -引数"display"が与えられると、そのアイテムは検出されたハイライトが表示されない -時にはスキップされる。こうすることで、表示されるべきテキストの構文状態だけを検 -索するときにはこのアイテムはスキップされ、ハイライトが高速になる。 - -通常は、以下の条件に合うときマッチとリージョンに"display"を使うとよい: -- アイテムが行末を越えて継続しない。Cの例: "/*"コメント用のリージョンは - "display"を含んではならない。なぜなら次の行に継続するからである。 -- アイテムが、行を越えて継続したり、そのコンテナを次行まで継続させる効果を持つ - 子アイテムを含んでいない。 -- それを含むどんなアイテムのサイズも変更しない。Cの例: プリプロセッサマッチ中 - の"\\$"とのマッチは"display"を含んではならない。なぜならこれによってプリプロ - セッサマッチが短くなるかもしれないからである。 -- 他のアイテムがマッチすることを許さず、そうでなければマッチせず、加えてマッチ - 自体が非常に長くなるようなアイテム。 - Cの例: "//"コメント用のマッチは"display"を使ってはならない。なぜならそのコメ - ントの内側の"/*"がマッチするかも知れず、そうなると行末をまたぐコメントが始ま - るからである。 - -例としてC言語では次のとき"display"が使える: -- 数字とのマッチ -- ラベルとのマッチ - - -transparent *:syn-transparent* - -引数"transparent"が与えられると、そのアイテムはそれ自身ではハイライトされず、 -それを含むアイテムのハイライトを引き継ぐ。これはハイライトはせず、テキストの一 -部をスキップするためだけに使われる構文アイテムに対して有効である。 - -transparentなアイテム自身に引数"contains"が与えられていない場合、それを含むア -イテムから引数"contains="も受け継がれる。望まないアイテムが含まれるのを避ける -には"contains=NONE"とすること。文字列中の単語をハイライトするが、"vim"だけは -例外とする例: > - :syn match myString /'[^']*'/ contains=myWord,myVim - :syn match myWord /\<[a-z]*\>/ contained - :syn match myVim /\<vim\>/ transparent contained contains=NONE - :hi link myString String - :hi link myWord Comment -"myVimが"myWord"の後に来ているので、"myVim"が優先される(同じ位置で複数のアイテ -ムにマッチした場合、最後に定義されたものが前のものを上書きする)。"transparent" -により、"myVim"にマッチしたテキストは"myString"と同じハイライトになる。しかし -"myVim"は何も含まない。もし"contains=NONE"を取り除くと、"myVim"は"myString"か -ら引数containsを受け継いで"myWord"を含むようになり、テキスト"vim"はConstantと -してハイライトされる。これは、内包されたマッチは同じ位置でそれ自身の内側でマッ -チしないためこうなる。つまり、ここではマッチ"myVim"は"マッチmyWord"を上書きし -ない。 - -色づけされたテキストは、内包されたアイテムの層のようにみなすことができる。内包 -されたアイテムは内包しているアイテムより上にあり、そのため内包されたアイテムを -見ることができる。内包されたアイテムがtransparentな場合、それを透過して見るこ -とができ、よってそれを含んでいるアイテムが見える。図にすると: - - ここから見る - - | | | | | | - V V V V V V - - xxxx yyy さらに内包されたアイテム達 - .................... 内包されたアイテム (transparent) - ============================= 最初のアイテム (最も外側のアイテム) - -'x', 'y', '='はハイライトされた構文アイテムを表す。'.'はtransparentなグループ -を表している。 - -このとき次のように見える: - - =======xxxx=======yyy======== - -つまりtransparentな"...."は透過して見える。 - - -oneline *:syn-oneline* - -引数"oneline"をつけると、そのリージョンは行をまたがないという意味になる。つま -り、現在行の中で完全にマッチしなければならない。しかし、そのリージョンが行をま -たぐアイテムを内包している場合は次の行に継続する。内包されたアイテムによって行 -継続パターンを認識することができる。しかしその場合でも"end"パターンは最初の行 -内でマッチしなければならない。そうでないとリージョンは開始すらしない。 - -startパターンが行末にマッチする"\n"を含んでいるときは、startパターンの終了位置 -と同じ行にendパターンがなければならない。endパターンも行末を含んでもよい。 -つまり引数"oneline"は、startパターンの終了位置とendパターンの開始位置が同一行 -にあることを意味する。改行にマッチするskipパターンを使ってもこの規則を変えるこ -とはできない。 - -fold *:syn-fold* - -引数"fold"はこのアイテムに対して折り畳みレベルを1増加させる。例: > - :syn region myFold start="{" end="}" transparent fold - :syn sync fromstart - :set foldmethod=syntax -これは{}ブロックごとに1つの折り畳みを作らせる。 - -折り畳みはそのアイテムの開始位置から始まり、アイテムの終了位置で終わる。開始位 -置と終了位置が同一行にある場合、折り畳みは作られない。 -オプション'foldnestmax'によって構文折り畳みのネストを制限できる。 -{|+folding|機能なしでコンパイルされた場合は利用できない} - - - *:syn-contains* *E405* *E406* *E407* *E408* *E409* -contains={groupname},.. - -引数"contains"の後には構文グループ名のリストを続ける。"contains"で指定されたグ -ループは、そのアイテムの内側で始まることを許可される(内包されるグループによっ -ては、外側のアイテムの終端が拡張されることもある)。これを使うと、マッチとリー -ジョンが再帰的にネストできるようになる。引数"contains"がまったく指定されない場 -合は、そのアイテムはどんなグループも内包しない。ここで使うグループ名は、必ずし -も以前に定義していなくてもよい。 - -contains=ALL - containsリストが"ALL"だけのとき、全てのグループがこのアイテム - の内側で許可される。 - -contains=ALLBUT,{group-name},.. - - containsリストの最初の要素が"ALLBUT"のとき、{group-name}で列挙 - したグループを除く全てのグループがこのアイテムの内側で許可され - る。例: > - :syntax region Block start="{" end="}" ... contains=ALLBUT,Function - -contains=TOP - containsリストの最初の要素が"TOP"のとき、引数"contained"を持た - ないグループ全てが許可される。 -contains=TOP,{group-name},.. - "TOP"と同様だが、{group-name}に列挙したグループは除かれる。 - -contains=CONTAINED - containsリストの最初の要素が"CONTAINED"のとき、引数 - "contained"を持つグループ全てが許可される。 -contains=CONTAINED,{group-name},.. - "CONTAINED"と同様だが、{group-name}に列挙したグループは除かれ - る。 - - -"contains"リスト内の{group-name}はパターンであってもよい。そのパターンにマッチ -するグループ名全てが含まれる("ALLBUT"が使われたときはそれが除かれる)。パターン -はホワイトスペースや','を含んではならない。例: > - ... contains=Comment.*,Keyw[0-3] -パターンの照合はそのsyntaxコマンドが実行されたときに行われる。それ以降に定義さ -れたグループは照合されない。また、現在のsyntaxコマンドが新しいグループを定義し -ている場合、そのグループは照合されない。ファイル内にsyntaxコマンドを書く場合、 -定義されていないグループを当てにすることはできないことに注意。これは、そのファ -イルは以前に読み込まれているかもしれず、":syn clear"はグループ名を削除しないた -めである。 - -内包されたグループはリージョンのstartとendパターン内にもマッチする。これが望み -の挙動でないなら、引数"matchgroup"を使うとよい|:syn-matchgroup|。オフセット -"ms="と"me="によって内包されたアイテムがマッチする領域を変更することができる。 -これはハイライトされる範囲も制限することに注意。 - - -containedin={groupname}... *:syn-containedin* - -引数"containedin"の後には構文グループ名のリストを続ける。するとこのアイテムが -それらのグループの内側で始まることが許可される。これは外側のアイテムが引数 -"contains="でこのアイテムを指定したのと同じように動作する。 - -{group-name}...の指定の仕方は前述の"contains"と同様である。 - -これは構文アイテムを後から追加するときに便利である。既に定義されているアイテム -の定義を変更することなく、その内側にアイテムを含めることができる。例えば、Cの -構文を読み込んだ後で、Cコメント中の単語をハイライトしたいときは: > - :syn keyword myword HELP containedin=cComment contained -このアイテムがトップレベルではマッチしないように"contained"を使っている。 - -"containedin"の照合は、このアイテムが現れる場所に追加される。引数"contains"も -通常通り追加される。注意: キーワードは他のアイテムを含むことができないため、 -"containedin"の先にキーワードを指定することは無意味である。 - - -nextgroup={groupname},.. *:syn-nextgroup* - -引数"nextgroup"の後には構文グループ名のリストをカンマ区切りで続ける -("contains"と同様。パターンを使うこともできる)。 - -引数"nextgroup"が与えられると、マッチやリージョンの終了位置の後ろで、指定され -た構文グループにマッチする部分が探される。どのグループもマッチしなければ、ハイ -ライトは通常通り続けられる。マッチが見つかった場合はそのグループが使われる。現 -在のグループの引数"contains"でそのグループが指定されていなくてもそうなる。つま -り、これは指定されたグループの優先度を最大にすることと同じである。例: > - :syntax match ccFoobar "Foo.\{-}Bar" contains=ccFoo - :syntax match ccFoo "Foo" contained nextgroup=ccFiller - :syntax region ccFiller start="." matchgroup=ccBar end="Bar" contained - -これは"Foo"の後に"Bar"が現れたときのみ、"Foo"と"Bar"に異なるハイライトをする。 -以下のテキストにおいて、"f"と書いたところはccFooでハイライトされ、"bbb"と書い -たところはccBarでハイライトされる。 > - - Foo asdfasd Bar asdf Foo asdf Bar asdf - fff bbb fff bbb - -".\{-}"を使い、次のBarまでのスキップが最小になるようにしている。もし".*"を使う -と、最初の"Foo"と最後の"Bar"がccFooBarのマッチ部分に含まれるため、"Bar"と"Foo" -の間の"asdf"が"ccFoobar"グループとしてハイライトされてしまう(|pattern|を参照)。 - - -skipwhite *:syn-skipwhite* -skipnl *:syn-skipnl* -skipempty *:syn-skipempty* - -これら3個の引数は"nextgroup"と組み合わせたときのみ意味を持つ。これらを指定する -と、次のグループがマッチする前に、以下のテキストがあってもよくなる。 - skipwhite スペースとタブ文字をスキップする - skipnl 行末をスキップする - skipempty 空行をスキップする(自動的に"skipnl"も含むことになる) - -例えば"skilwhite"を指定した場合、次のどのグループもホワイトスペースにマッチし -ないならば、ホワイトスペースをスキップする。 - -"skipnl"を指定すると、nextgroupの照合が次の行からも探される。これは現在のアイ -テムが行末で終わったときのみ有効である。"skipnl"を指定しない場合、nextgroupは -同一行のそのアイテム以降から照合される。 - -次のグループまでスキップされたテキストの中では他のグループの照合は無視される。 -次のグループの照合が見つからなかったとき、再び他のグループの照合が検索される。 -つまり、次のグループの照合と、ホワイトスペースと<EOL>のスキップは他のアイテム -より優先される。 - -例: > - :syn match ifstart "\<if.*" nextgroup=ifline skipwhite skipempty - :syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained - :syn match ifline "endif" contained -Note マッチ"[^ \t].*"はホワイトスペース以外の全てのテキストにマッチする。よっ -て"endif"にもマッチする。そのためマッチ"endif"を最後に置き、最優先にしている。 -Note この例はネストした"if"には機能しないことに注意。ネストに対応するには引数 -"contains"を指定する必要がある(この例では簡単のため省略した)。 - -暗黙 CONCEAL (IMPLICIT CONCEAL) *:syn-conceal-implicit* - -:sy[ntax] conceal [on|off] - これ以降の ":syntax" コマンドでキーワード、マッチ、リージョンを定義し - たときに "conceal" フラグをセットするかどうかを定義します。":syn - conceal on" を実行した後で ":syn keyword"、":syn match"、":syn region" - を実行すると、暗黙的に "conceal" フラグがセットされます。":syn conceal - off" を実行することで通常の状態、つまり "conceal" フラグを明示的に設定 - しなければならない状態に戻ります。 - -============================================================================== -7. syntaxのパターン *:syn-pattern* *E401* *E402* - -syntaxコマンドでは、パターンの前後を同じ文字で囲まなければならない。これは -":s"コマンドと同様である。もっともよく使われるのはダブルクォートである。しかし -パターンがダブルクォートを含んでいる場合は、そのパターンが含んでいない他の文字 -を使ったほうがよい。例: > - :syntax region Comment start="/\*" end="\*/" - :syntax region String start=+"+ end=+"+ skip=+\\"+ - -パターンの説明については|pattern|を参照。構文パターンは常に'magic'オプションが -セットされているのと同じように解釈される(実際の'magic'オプションの値とは無関 -係)。また、'cpoptions'に'l' フラグが含まれていない場合と同じように解釈される。 -これは構文ファイルの可搬性を高め、'compatible'と'magic'の設定と無関係にするた -めである。 - -"[a-z]*"など空文字列にマッチするパターンは避けること。これは全ての位置にマッチ -するため、ハイライトがとても遅くなる。 - - *:syn-pattern-offset* -パターンに文字数のオフセットを指定することができる。これによってハイライトされ -る部分を変更したり、マッチやリージョンに含まれるテキスト領域(これは他のアイテ -ムを照合するときにだけ関係する)を変更することができる。どちらもマッチしたパター -ンに相対的である。skipパターンに対して文字数のオフセットを指定すると、endパター -ンの検索が始まる位置を決めることができる。 - -オフセットは"{what}={offset}"の形で指定する。 -{what}は次の7個の文字列のどれかである: - -ms Match Start マッチしたテキストの開始位置のオフセット -me Match End マッチしたテキストの終了位置のオフセット -hs Highlight Start ハイライトが始まる位置のオフセット -he Highlight End ハイライトが終わる位置のオフセット -rs Region Start リージョンの本体が始まる位置のオフセット -re Region End リージョンが終わる位置のオフセット -lc Leading Context パターンの"leading context"を過ぎた後のオフセット - -{offset}は次のうちのどれか: - -s パターンのマッチ部分の先頭 -s+{nr} パターンのマッチ部分の先頭から右へ{nr}文字目 -s-{nr} パターンのマッチ部分の先頭から左へ{nr}文字目 -e パターンのマッチ部分の末尾 -e+{nr} パターンのマッチ部分の末尾から右へ{nr}文字目 -e-{nr} パターンのマッチ部分の末尾から左へ{nr}文字目 -{nr} ("lc"専用): ら左へ{nr}文字目 - -例: "ms=s+1", "hs=e-2", "lc=3". - -どのパターンの後にどのオフセットを指定してもよいが、それが意味を持たない場合も -ある。次の表はどのオフセットが実際に有効かを示している: - - ms me hs he rs re lc ~ -match item yes yes yes yes - - yes -region item start yes - yes - yes - yes -region item skip - yes - - - - yes -region item end - yes - yes - yes yes - -複数のオフセットの間に','を入れて連結することができる。例: > - :syn match String /"[^"]*"/hs=s+1,he=e-1 -< - some "string" text - ^^^^^^ ここがハイライトされる - -注意: -- パターンとオフセットの間にホワイトスペースを挟んではならない。 -- ハイライトされる領域がマッチしたテキストの外側にはみ出してはならない。 -- endパターンに対する負のオフセットは機能しない場合がある。これはハイライトが - 既に終わっているべきとき、endパターンは検出されない可能性があるからである。 -- Vim 7.2 以前では、オフセットは文字単位でなくバイト単位であった。それではマル - チバイト文字ではうまく機能しないので、7.2 から変更された。 -- マッチの開始位置が、パターンがマッチした位置と別の行になってはならない。つま - り"a\nb"ms=eというのは正常に機能しない。ハイライトの開始位置は別の行にあって - もかまわない。"a\nb"hs=eというのは正常に機能する。 - -例(コメントにマッチするが /* と */ はハイライトしない): > - :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1 -< - /* this is a comment */ - ^^^^^^^^^^^^^^^^^^^ ここがハイライトされる - -より複雑な例: > - :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1 -< - abcfoostringbarabc - mmmmmmmmmmm マッチ部分 - sssrrreee start/region/endとしてハイライトされる部分 ("Foo", "Exa", "Bar") - -Leading context *:syn-lc* *:syn-leading* *:syn-context* - -注意:これは古い機能であり、以前のバージョンとの後方互換性のためだけに残されて -いる。現在はパターン中の|/\@<=|コンストラクトを使うことが推奨されている。 - -"lc"オフセットはリーディングコンテキストを指定する。これはパターンの一部になけ -ればならないが、マッチ部分の一部とは見なされないものである。"lc=n"のオフセット -を使うとパターンの照合を試みる前にn桁戻るようになる。リーディングコンテキスト -内に他のパターンにマッチしている文字が現れてもよい。これはマッチの前方にあって -はならない「エスケープ」文字を指定する場合などに使える: > - - :syn match ZNoBackslash "[^\\]z"ms=s+1 - :syn match WNoBackslash "[^\\]w"lc=1 - :syn match Underline "_\+" -< - ___zzzz ___wwww - ^^^ ^^^ Underlineにマッチする - ^ ^ ZNoBackslashにマッチする - ^^^^ WNoBackslashにマッチする - -"ms"を指定しないと自動的に"lc"と同じ値にセットされる。 - - -複数行にわたるパターン *:syn-multi-line* - -パターンが"\n"を含むと改行にマッチするようになる。たいていの場合これは期待通り -に動作するが、少しだけ例外がある。 - -startパターンにオフセットをつけるとき、マッチ部分の開始位置が次の行の先頭で -あってはならない。ハイライトは次の行で始まってもよい。"\zs" を使うときも、マッ -チ部分の開始位置が他の行になってはならない。 - -skipパターンも"\n"を含んでよい。ただし次の行の最初の文字がskipパターンにマッチ -していても、そこからendパターンの検索が続けられる。これは、再描画は領域内のど -の行でも始まることができ、skipパターンが前の行から始まったかどうかはチェックさ -れないからである。例えば、skipパターンが"a\nb"で、endパターンが"b"のとき、次の -テキストの2行目でendパターンがマッチする。 > - x x a - b x x -つまり、skipパターンは"\n"以降の文字にはマッチしないことになる。 - - -外部マッチ *:syn-ext-match* - -リージョンのパターンでは特別に以下の正規表現が使える: - - */\z(* */\z(\)* *E50* *E52* - \z(\) 一部を「external」としてマークする。これをつけると他のパターン - からアクセスできるようになる。現在はリージョンのstartパターン - 内でのみ使用可能。 - - */\z1* */\z2* */\z3* */\z4* */\z5* - \z1 ... \z9 */\z6* */\z7* */\z8* */\z9* *E66* *E67* - startパターンにマッチしたテキスト中からマークしておいた部分を - 参照する。 - -リージョンのstartとendパターンで正規表現の一部を共有したい場合がある。 -一般的な例としてはPerlやUnixシェルのヒアドキュメントがある。これは特別な正規表 -現アイテム"\z"を使えば達成できる。これは正規表現の一部を"external"としてマーク -しておく。するとその部分を他のパターンから参照できるようになる。例えば、ヒアド -キュメントは次のようにすればよい: > - :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" - -このように、\zは2つの役割を果たす。startパターンにおいては正規表現の一部 -"\(\I\i*\)"をexternalとしてマークする。endパターンでは\1によってstartパターン -中の最初のマークされた部分への外部参照とする。外部参照はskipパターン中でも使え -る: > - :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" - -通常のマークとexternalなマークはまったく独立であり、別々に番号が振られる。例え -ば、文字列"aabb"に対してパターン"\z(..\)\(..\)"を適用すると、\1は"bb"を参照 -し、\z1は"aa"を参照するようになる。externalなマークをした部分は、通常のマーク -と違って、同一パターン内で後方参照することはできない。ある部分に対して通常の -マーク、externalなマーク両方をつけたい場合は、"\(\z(...\)\)"のようにネストさせ -ればよい。 - -一行内でマッチした部分しか参照できないことに注意。複数行にわたってマッチした部 -分は参照できない。 - -============================================================================== -8. クラスタ *:syn-cluster* *E400* - -:sy[ntax] cluster {cluster-name} [contains={group-name}..] - [add={group-name}..] - [remove={group-name}..] - -このコマンドを使うと、複数の構文グループを1つの名前のもとにまとめることができ -る。このまとまりのことをクラスタと呼ぶ。 - - contains={group-name}.. - クラスタに含まれるグループを指定する。 - add={group-name}.. - 指定したグループをクラスタに加える。 - remove={group-name}.. - 指定したグループをクラスタからとり除く。 - -定義したクラスタはcontains=..やcontainedin=..、nextgroup=..、add=..、remove=.. -などの文脈で使うことができる。そのとき、クラスタ名の頭に"@"をつける。クラスタ -を定義する前にそのクラスタ名を使用してもよい。 - -例: > - :syntax match Thing "# [^#]\+ #" contains=@ThingMembers - :syntax cluster ThingMembers contains=ThingMember1,ThingMember2 - -この例からわかるように、クラスタに対する変更はさかのぼって効果がある。クラスタ -の定義は直前になってチェックされる。例: > - :syntax keyword A aaa - :syntax keyword B bbb - :syntax cluster AandB contains=A - :syntax match Stuff "( aaa bbb )" contains=@AandB - :syntax cluster AandB add=B " これによって2つのキーワードがStuff内で - マッチするようになる - -これはクラスタのネスト度にも関係がある: > - :syntax keyword A aaa - :syntax keyword B bbb - :syntax cluster SmallGroup contains=B - :syntax cluster BigGroup contains=A,@SmallGroup - :syntax match Stuff "( aaa bbb )" contains=@BigGroup - :syntax cluster BigGroup remove=B " BはBigGroup内にないので無意味 - :syntax cluster SmallGroup remove=B " Stuff内でbbbがマッチしなくなる -< - *E848* -クラスタの最大数は 9767 です。 - -============================================================================== -9. 構文ファイルのインクルード *:syn-include* *E397* - -構文ファイルの中で、関係する構文ファイルをインクルードしたい場合がある。 -これには、構文ファイルの関係に応じて2種類の方法がある: - - - インクルードされるファイル内のトップレベルのアイテムをそのままトップ - レベルとしたい場合は、単に|:runtime|コマンドを使えばよい: > - - " In cpp.vim: - :runtime! syntax/c.vim - :unlet b:current_syntax - -< - インクルードされるファイル内のトップレベルのアイテムをリージョンに内 - 包させるには、":syntax include"コマンドを使うとよい: > - -:sy[ntax] include [@{grouplist-name}] {file-name} - - インクルードされるファイル中で宣言された構文アイテム全てに - "contained"フラグがつけられる。さらにグループのリストを指定すると、 - インクルードされるファイル中のトップレベルの構文アイテム全てに対して - そのリストがつけられる。 > - - " In perl.vim: - :syntax include @Pod <sfile>:p:h/pod.vim - :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod -< - {file-name}が絶対パスである場合("/", "c:", "$VAR", "<sfile>"のどれか - で始まる場合)そのファイルが読み込まれる(sourceされる)。相対パスの場 - 合(例:"syntax/pod.vim")、そのファイルが'runtimepath'中から探される。 - マッチしたファイル全てが読み込まれる。相対パスを使用することが推奨さ - れる。そうすればユーザが":syn include"を書き換えることなく、インク - ルードされるファイルを改変して別の場所におけるからである。 - - *E847* -インクルードの最大数は 999 です。 - -============================================================================== -10. 表示のシンクロナイズ *:syn-sync* *E403* *E404* - -ドキュメント中のどの位置からでも再描画を開始できると望ましい。これを実現するに -は、再描画を開始する位置における構文の状態を知る必要がある。 - -:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...] - -シンクロナイズには4つのやり方がある: -1. 常にファイルの最初からパースする。 - |:syn-sync-first| -2. Cスタイルのコメントに基づく。VimはCコメントの仕様を理解し、現在行がコメント - の内側から始まっているか外側から始まっているかを判定することができる。 - |:syn-sync-second| -3. 一定行さかのぼり、そこからパースを開始する。 - |:syn-sync-third| -4. テキストをさかのぼり、シンクロナイズを始める目印の正規表現を検索する。 - |:syn-sync-fourth| - - *:syn-sync-maxlines* *:syn-sync-minlines* -最後の3つの方法に関して、さかのぼる行数は"minlines"と"maxlines"で制限される。 - -引数"minlines={N}"が指定されると、常に少なくともその行数さかのぼってパースが開 -始される。パースする行数が少なすぎて正しくハイライトできないかもしれないとき、 -またはシンクロナイズを使うのが不可能であるとき、この引数を使うとよい。 - -引数"maxlines={N}"が指定されると、コメントや正規表現を検索するためにさかのぼる -行数が最大N行になる。これは遅いマシンを使っていて、シンクロナイズする行数が少 -ないとわかっているときに便利である。例: > - :syntax sync ccomment maxlines=500 -< - *:syn-sync-linebreaks* -複数行にマッチする正規表現を使っているとき、ある行に変更を施すと、前の行でマッ -チしていた正規表現がマッチしなくなってしまうことがある。この場合、変更を施した -位置より上からシンクロナイズを行わなければならない。その行数を引数"linebreaks" -で指定する。例えば、正規表現が改行を1個含んでいる場合はこのようにする: > - :syntax sync linebreaks=1 -こうすると、常に変更が施された行の少なくとも1行前から再描画が開始される。 -"linebreaks"のデフォルト値は0。通常"minlines"の値は"linebreaks"の値より大きい。 - -第一の方法: *:syn-sync-first* -> - :syntax sync fromstart - -ファイルの最初からパースする。この方法を使うと構文ハイライトが正確になるが、大 -きいファイルに対しては遅くなる。Vimは以前にパースしたテキストをキャッシュして -おく。そのため、遅くなるのはファイルを最初にパースするときだけである。しかし、 -変更を施すと、それ以降の一部をパースし直さなければならなくなる(最悪の場合はファ -イルの最後まで)。 - -"fromstart"を使うことは"minlines"を非常に大きな値にすることと同じ効果を持つ。 - - -第二の方法: *:syn-sync-second* *:syn-sync-ccomment* - -第二の方法を使うには、単に引数"ccomment"をつければよい。 -例: > - :syntax sync ccomment - -画面最上行がCスタイルコメントの内側にあると判断される場合、グループ名が -"Comment"のリージョン構文アイテムが使われる。この方法を使うには"Comment"という -グループ名のリージョンがなければならないことに注意。他のグループ名を指定するこ -ともできる。例: > - :syntax sync ccomment javaComment -こうすると、検出されたCコメントのリージョンに対して"syn region javaComment"で -指定されたアイテムのうち最後のものが使われる。ここで指定するリージョンのstart -パターンが"\/*"、endパターンが"*\/"となっていないと適切に機能しない。 - -引数"maxlines"を使うと検索の行数を制限できる。引数"minlines"を使うと少なくとも -その行数だけさかのぼって開始させることができる(例:2,3行だけを受け取るコンスト -ラクトがある場合。ただしその場合シンクロナイズするのが困難) - -注意: "*/"を含む文字列で行をまたぐものがあると、Cコメントによるシンクロナイズ -は適切に機能しない。行をまたいで文字列を書くのは悪いプログラミング習慣である -(多くのコンパイラが警告を出す)。また、コメント中に"*/"が現れる機会はまれなの -で、この制限は注意するほどのものではない。 - - -第三の方法: *:syn-sync-third* - -第三の方法を使うには引数"minlines={N}"を加えればよい。この方法を指定すると、 -{N}行前からパースを開始する。これは{N}行余分にパースされることを意味する。その -ためこの方法は少し遅くなる。 -例: > - :syntax sync minlines=50 - -"lines"は"minlines"と同じ意味である(古いバージョンで使われている)。 - -第四の方法: *:syn-sync-fourth* - -第四の方法は、シンクロナイズパターンと呼ばれる特定のリージョンの末尾でシンクロ -ナイズするものである。行をまたげるのはリージョンだけなので、リージョンの末尾に -出会ったら、どの構文アイテムの中にいるのかを知ることができる。再描画が始まる行 -のすぐ上から検索を開始し、ファイルの上方に向かって検索する。 - -これはシンクロナイズしない構文アイテムとちょうど同じように機能する。内包された -マッチ、nextgroupなどを使うことができる。ただし少しだけ違いがある。 -- キーワードを使うことはできない。 -- "sync"キーワード付きの構文アイテムは、完全に別の構文アイテムのグループを形成 - する。シンクロナイズするグループとしないグループを混ぜることはできない。 -- 照合はバッファ内で1行ごとに逆向きに行われる(前向きではない)。 -- 行継続パターンをつけることができる。これを使うと、あたかも1行であるかのよう - に検索する一連の行を指定することができる。これは、指定したアイテムとの照合が - 継続パターンを含む一連の行の最初から始まることを意味する。 -- "nextgroup"や"contains"は1行(または継続された一連の行)内でだけ有効。 -- リージョンは同一行(または継続された一連の行)内で開始・終了しなければならな - い。そうでないと行末(または継続された一連の行)内で終わるものとされる。 -- シンクロナイズパターンとのマッチが見つかると、その行(または継続された一連の - 行)の残りから再びマッチが探される。最後のマッチが使われる。 - これはリージョンの開始と終了が同一行内にあるとき使われる - (例: /* this */のようなCコメントでは、最後の"*/"が使われる)。 - -シンクロナイズパターンとのマッチは2通りの使い方がある。 -1. 再描画を始める場所(シンクロナイズパターンの検索が始まる場所でもある)から強 - 調のためのパースを始める。そこで有効であると期待される構文グループを指定し - なければならない。行をまたぐリージョンが他のリージョンを含んではならない場 - 合にこれはうまく機能する。 -2. ハイライトのためのパースはマッチの直後から継続される。マッチの直後に現れる - と期待される構文グループを指定しなければならない。 - これは前の方法がうまくいかないときに使われる。より多くのテキストをパースす - る必要があるため、とても遅い。 -両方のタイプを同時に使うこともできる。 - -シンクロナイズパターンだけでなく、他のマッチとリージョンを指定して望まないマッ -チが見つかるのを避けることができる。 - -[シンクロナイズパターンが別々に与えられる理由は、シンクロナイズポイントの検索 -はたいていの場合、ハイライトするところを判別するよりずっと単純だからである。パ -ターンの数が減るとそれだけ速くなる。] - - *syn-sync-grouphere* *E393* *E394* - :syntax sync match {sync-group-name} grouphere {group-name} "pattern" .. - - シンクロナイズ用に使うマッチを定義する。{group-name}はマッチのすぐ後に - 続く構文グループの名前である。ハイライトのためのテキストのパースはマッ - チの直後から始まる。この{group-name}がついたリージョンが存在しなければ - ならない。最初に定義されたリージョンが使われる。マッチの後に構文グルー - プが続かない場合は"NONE"を使う。 - - *syn-sync-groupthere* - :syntax sync match {sync-group-name} groupthere {group-name} "pattern" .. - - "grouphere"と同様。ただし{group-name}はシンクロナイズポイントの検索が - 始まる行の行頭で使われる構文グループの名前である。マッチとシンクロナイ - ズパターンの検索が始まる位置との間のテキストは構文ハイライトを変えては - ならない。例えばCにおいて"/*"と"*/"を後方検索することができる。"/*"が - 先に見つかったら、今はコメントの内側にいるとわかる。なので"groupthere" - は"cComment"となる。"*/"が先に見つかったら今はコメントの中ではないとわ - かる。なので"groupthere"は"NONE"となる。(実際は、文字列の中に"/*"と - "*/"があるかもしれないので、もう少し込み入っている。これは読者の練習問 - 題としておく...)。 - - :syntax sync match .. - :syntax sync region .. - - 引数"groupthere"なしの場合。シンクロナイズポイントの検索の際にスキップ - されるリージョンやマッチを定義する。 - - *syn-sync-linecont* - :syntax sync linecont {pattern} - - {pattern}とのマッチが次の行にも継続されるとみなされる。つまりシンクロ - ナイズポイントの検索の際、行は連結されているものと見なされる。 - -引数"maxlines={N}"が同時に与えられると、マッチを検索する行がN行に制限される。 -これは遅いマシンを使っていて、シンクロナイズするものが少ないとわかっているとき -に便利。例: > - :syntax sync maxlines=100 - -全てのシンクロナイズの設定をクリアするには: > - :syntax sync clear - -あるシンクロナイズパターンをクリアするには: > - :syntax sync clear {sync-group-name} .. - -============================================================================== -11. 構文アイテムのリストを表示する *:syntax* *:sy* *:syn* *:syn-list* - -次のコマンドは全ての構文アイテムのリストを表示する: > - - :sy[ntax] [list] - -ある構文グループに属する構文アイテムを表示するには: > - - :sy[ntax] list {group-name} - -あるクラスタに属する構文グループを表示するには: *E392* > - - :sy[ntax] list @{cluster-name} - -":syntax"コマンドに対する他の引数については上を参照。 - -":syntax"コマンドは":sy"とも略記できる。しかし":syn"の方が見栄えがよいため、普 -通はこちらが使われる。 - -============================================================================== -12. ハイライトコマンド *:highlight* *:hi* *E28* *E411* *E415* - -ハイライトグループには3つのタイプがある: -- 特定の構文言語用のもの。名前がその言語の名前で始まる。このタイプのほとんど - は属性を持たず、2番目のタイプのグループにリンクされる。 -- 全ての構文言語に対して使われるもの。 -- 'highlight'オプションに使われるもの。 - *hitest.vim* -現在有効な全てのグループを知るにはこのコマンドを使う: > - :so $VIMRUNTIME/syntax/hitest.vim -このコマンドは新しいウィンドウを開き、そこに全てのハイライトグループ名を、それ -自身の色を使って表示する。 - - *:colo* *:colorscheme* *E185* -:colo[rscheme] 現在のカラースキームの名前を表示します。 - 基本的には次のコマンドと同じです > - :echo g:colors_name -< g:colors_name が定義されていない場合は "default" と表 - 示されます。|+eval| 機能付きでコンパイルされていない場 - 合は "unknown" と表示されます。 - -:colo[rscheme] {name} カラースキーム{name}を読み込む。これは'runtimepath'中 - から"colors/{name}.vim"というファイルを検索する。最初 - に見つかったものが読み込まれる。 - 現在使われているカラースキームの名前を見るには次のよう - にします: > - :colo -< 名前は g:colors_name 変数にも格納されています。 - 再帰的な読み込みはされない。つまりカラースキームスクリ - プト中で":colorscheme"を使うことはできない。 - カラースキームが読み込まれた後、自動コマンドイベント - |ColorScheme|が発生する。カラースキームファイルを書く - ための情報については次を参照: > - :edit $VIMRUNTIME/colors/README.txt - -:hi[ghlight] 属性がセットされたハイライトグループを全て表示する。 - -:hi[ghlight] {group-name} - 1つのハイライトグループを表示する。 - -:hi[ghlight] clear 全てのハイライトをデフォルトに戻す。ユーザによって加え - られたグループに対するハイライトが全て消去される。 - 現在の'background'の値によってデフォルトの色が決まる。 - -:hi[ghlight] clear {group-name} -:hi[ghlight] {group-name} NONE - 1つのハイライトグループに対するハイライトを無効にする。 - デフォルトの色に戻すわけではない。 - -:hi[ghlight] [default] {group-name} {key}={arg} .. - ハイライトグループを追加する、または既存のグループに対 - する強調を変更する。 - 引数{key}={arg}については|highlight-args|を参照。 - オプショナルな引数[default]については - |:highlight-default|を参照。 - -通常、ハイライトグループは起動時に一度だけ追加される。そこでハイライトのデフォ -ルト値をセットする。その後、ハイライトコマンドを使うことによってデフォルトでな -い値に変えることができる。値"NONE"を使うとその値をオフにしたりデフォルト値に戻 -したりできる。 - -色を変える簡単な方法は|:colorscheme|コマンドを使うことである。すると、次のよう -な":highlight"コマンドが書かれたファイルが読み込まれる: > - - :hi Comment gui=bold - -このファイルに含まれない設定は変更されないままである。指定されたフィールドだけ -が更新され、それ以前の設定とマージされる。なのでその結果は次のコマンド1つを実 -行するのと同じである: > - :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold -< - *:highlight-verbose* -'verbose'を0でない値にしてハイライトグループの一覧を表示すると、最後に設定され -た場所も表示される。例: > - :verbose hi Comment -< Comment xxx term=bold ctermfg=4 guifg=Blue ~ - Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~ - -":hi clear"が実行されると、このコマンドを実行したスクリプトがデフォルト値とし -て言及される。より詳しくは|:verbose-cmd|を参照。 - - *highlight-args* *E416* *E417* *E423* -ハイライトに関して、ターミナルは3種類に分類される: -term 通常のターミナル(vt100, xterm) -cterm カラーターミナル(MS-DOS console, color-xterm。これらはtermcapエントリ - "Co"をもつ) -gui GUI - -ハイライトはこれらのタイプごとに指定できる。そうすることによって、同じ構文ファ -イルを全てのターミナルに対して使用でき、ターミナルごとに最善のハイライトを利用 -できるようになっている。 - -1. highlightコマンドの引数(通常のターミナル用) - - *bold* *underline* *undercurl* - *inverse* *italic* *standout* -term={attr-list} *attr-list* *highlight-term* *E418* - attr-listはカンマ区切りのリスト(スペースは入れない)で、要素は以下の通 - り(順序はどうでもよい): - bold - underline - undercurl 必ずしも使用できるとは限らない - reverse - inverse reverseと同じ - italic - standout - NONE 属性を使用しない(属性をリセットするために使う) - - この引数で"bold"を指定してもよいし、太文字のフォントを指定してもよい。 - どちらも表示は同じになる。 - "undercurl"は波線のこと。"undercurl"が使用できないときは"underline"が - 使われる。一般的には"undercurl"はGUIでのみ使用できる。その色は - |highlight-guisp|で設定できる。 - -start={term-list} *highlight-start* *E422* -stop={term-list} *term-list* *highlight-stop* - これらのターミナルコードのリストを使ってターミナルについての標準的でな - い属性を得ることができる。 - - 引数"start"でエスケープシーケンスを指定すると、ハイライトするテキスト - の前にそれが書き込まれる。そのテキストをハイライトする際にターミナルに - 送りたいものをなんでも指定できる。引数"stop"でエスケープシーケンスを指 - 定すると、強調されるテキストの後にそれが書き込まれる。"start"で行った - ことを"stop"で元に戻すべきである。そうしないとスクリーンがごちゃごちゃ - になってしまうだろう。 - - {term-list}は2つの形を持つ: - - 1. エスケープシーケンス付きの文字列。 - これは"t_"で始まるものと空文字列を除く任意の文字列である。"<Esc>"や - "<Space>"のような<>記法が利用できる。例: - start=<Esc>[27h;<Esc>[<Space>r; - - 2. ターミナルコードのリスト。 - ターミナルコードは"t_xx"の形を持つ。"xx"はtermcapエントリ名である。 - ターミナルコードはカンマで区切る。ホワイトスペースは使えない。例: - start=t_C1,t_BL - 対応するターミナルコードが存在しなければならない。 - -2. highlightコマンドの引数(カラーターミナル用) - -cterm={attr-list} *highlight-cterm* - {attr-list}の説明は上を参照|attr-list|。 - 色を使う場合、引数"cterm"は"term"と異なる結果になる。例えば、通常の - ターミナルではコメントにアンダーラインを引き、カラーターミナルではコメ - ントを青色で表示することができる。 - 注意:DOSコンソールなど多くのターミナルでは色づけの際にこれらの属性を混 - 在させることはできない。"cterm="か"ctermfg="が"ctermbg="のどれか1つだ - けを使うこと。 - -ctermfg={color-nr} *highlight-ctermfg* *E421* -ctermbg={color-nr} *highlight-ctermbg* - 引数{color-nr}で色番号を指定する。色番号の範囲は0からtermcapエントリ - "Co"の値 - 1 までである。 - この色番号で実際に表示される色はターミナルの種類とその設定に依存する。 - "cterm"の設定によって色が変わる場合もある。例えば、あるシステムでは - "cterm=bold ctermfg=3"でそのまま3番の色を表示し、他のシステムでは異な - る色を表示することがある。 - - xtermにおいてはこれはユーザのリソースに依存し、やや予測ができない。デ - フォルトについてはxtermのドキュメントを参照のこと。カラーxterm用の色は - .Xdefaultsファイルで変更することができる。このため、ユーザごとに表示さ - れる色が異なるかもしれない。カラーxtermについては|xterm-color|を参照。 - - コンソールウィンドウ内のMSDOS標準色は固定されている。そのため、これら - の色を名前に使っている。一方、X11の色名の意味は固定されている。そこで - ハイライトの設定に可搬性を持たせるため、X11の色設定が使われている(複雑 - であるが)。以下の色名を、色番号の代わりに使うことができる: - - *cterm-colors* - NR-16 NR-8 COLOR NAME ~ - 0 0 Black - 1 4 DarkBlue - 2 2 DarkGreen - 3 6 DarkCyan - 4 1 DarkRed - 5 5 DarkMagenta - 6 3 Brown, DarkYellow - 7 7 LightGray, LightGrey, Gray, Grey - 8 0* DarkGray, DarkGrey - 9 4* Blue, LightBlue - 10 2* Green, LightGreen - 11 6* Cyan, LightCyan - 12 1* Red, LightRed - 13 5* Magenta, LightMagenta - 14 3* Yellow, LightYellow - 15 7* White - - "NR-16"の下の番号は16色ターミナル('t_Co'が16以上のもの)用である。 - "NR-8"の下の番号は8色ターミナル('t_Co'が16未満のもの)用である。 - '*'はctermfgにbold属性がセットされることを意味している。"linux"な - ど多くの8色ターミナルでは明るい色になる。ただし背景色には適用され - ない。'*'がないものはbold属性なしになる。他の方法でbold属性をつけ - たいなら引数"cterm="を"ctermfg="や"ctermbg="の後に書くこと。または - 色名の代わりに番号を使うこと。 - - 色名の大文字・小文字は無視される。 - 16色ansiスタイルターミナル(xtermを含む)ではNR-8の列の番号が使われ - ることに注意。ここで'*'は'add 8'という意味になる。つまりBlueが12 - に、DarkGrayが8になる。 - - カラーターミナルによっては、色名を使うと間違った色で表示される場合 - もあることに注意。 - - *:hi-normal-cterm* - Normalグループに対して"ctermfg"や"ctermbg"を設定すると、これらはハイラ - イトされないテキストに対する色になる。 - 例: > - :highlight Normal ctermfg=grey ctermbg=darkblue -< Normalグループに対して"ctermbg"を設定すると、オプション'background'が - 自動的に調整される。これによって'background'に依存するハイライトグルー - プが変更される。そのため、まずNormalに対する色を設定し、それから他の色 - を設定するべきである。 - カラースキーム使用時に'background'を変更するとカラースキームが再読み込 - みされる。そしてNormalを含む全ての色がリセットされる。これが嫌なら最初 - に変数"g:colors_name"を削除すること。 - - Normalグループの"ctermfg"や"ctermbg"を変更した場合、Vim終了時にその色 - をリセットする必要がある。これはtermcapエントリ"op"|t_op|を使ってなさ - れる。リセットがうまくいかない場合は.vimrc中で't_op'を設定してみること。 - *E419* *E420* - Vimが通常の文字色と背景色を知っている場合、色名として"fg"と"bg"を使用 - できる。これはNormalグループの色とMS-DOSコンソールの色を設定しないと使 - えない。例えば反転表示をするには: > - :highlight Visual ctermfg=bg ctermbg=fg -< このコマンドを実行した時点で有効な色が使われることに注意。この後で - Normalグループを変更しても"fg"と"bg"は調整されない。 - - -3. highlightコマンドの引数(GUI用) - -gui={attr-list} *highlight-gui* - これらはGUIモードで使われる属性を設定する。 - 説明は|attr-list|を参照。 - ここで"bold"を設定しても太字のフォントを使ってもよい。どちらも同じ効果 - を持つ。 - "Normal"グループに対する属性は無視される。 - -font={font-name} *highlight-font* - font-nameはVimを実行しているシステム上で使われるフォント名である。X11 - ではこれは複雑な名前になる。例えば: > - font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 -< - フォント名"NONE"を使うとデフォルトのフォントに戻る。 - "Normal"グループに対してフォントを設定すると、これがデフォルトフォント - になる(オプション'guifont'が変更されるまでは; 最後に設定したものが使わ - れる)。 - 以下のものはMotifとAthena上でのみ動作し、他のGUI上では利用できない: - "Menu"グループに対してフォントを設定すると、メニューが変更される。 - "Tooltip"グループに対してフォントを設定するt、ツールチップが変更され - る。 - Menu用とTooltip用を除く全てのフォントのサイズがデフォルトフォントのサ - イズと同じでなければならない。そうでないと再描画の際に問題が発生する。 - -guifg={color-name} *highlight-guifg* -guibg={color-name} *highlight-guibg* -guisp={color-name} *highlight-guisp* - guifgは文字色、guibgは背景色、guispは波線の色を指定する。これらはGUIで - 使用される。 - いくつか特別な名前がある: - NONE no color (透明) - bg 通常の背景色を使う - background 通常の背景色を使う - fg 通常の文字色を使う - foreground 通常の文字色を使う - 埋め込みスペースや他の特別な文字に対して色名を使うには、色名をシングル - クォートでくくる。それゆえシングルクォートを使うことはできない。 - 例: > - :hi comment guifg='salmon pink' -< - *gui-colors* - 推奨されている色名 (これらはほとんどのシステムで利用可能である) - Red LightRed DarkRed - Green LightGreen DarkGreen SeaGreen - Blue LightBlue DarkBlue SlateBlue - Cyan LightCyan DarkCyan - Magenta LightMagenta DarkMagenta - Yellow LightYellow Brown DarkYellow - Gray LightGray DarkGray - Black White - Orange Purple Violet - - Win32 GUIバージョンでは他にもシステムカラーが利用できる。 - |win32-colors|を参照。 - - RGB値によって色を指定することもできる。 - フォーマットは"#rrggbb"、ここで - "rr" Red値 - "gg" Green値 - "bb" Blue値 - これらの値は16進であり、範囲は"00"から"ff"。例: > - :highlight Comment guifg=#11f0c3 guibg=#ff00ff -< - *highlight-groups* *highlight-default* -以下はデフォルトのハイライトグループである。これらのグループはデフォルトでオプ -ション'highlight'によって使われる。ただしハイライトは'background'の値に依存す -ることに注意。":highlight"コマンドで現在の設定を知ることができる。 - *hl-ColorColumn* -ColorColumn 'colorcolumn' で設定された列の表示に使われる - *hl-Conceal* -Conceal Conceal されたテキストの代わりに表示される代替文字の表示に使わ - れる ('conceallevel' 参照) - *hl-Cursor* -Cursor カーソル下の文字 - *hl-CursorIM* -CursorIM Cursorと同じだが、IMEモードにいるとき使われる|CursorIM|。 - *hl-CursorColumn* -CursorColumn 'cursorcolumn'がオンになっているときのカーソルがある画面上の桁 - *hl-CursorLine* -CursorLine 'cursorline'がオンになっているときのカーソルがある画面上の行 - *hl-Directory* -Directory ディレクトリ名(とリストにある特別な名前) - *hl-DiffAdd* -DiffAdd diffモード: 追加された行 |diff.txt| - *hl-DiffChange* -DiffChange diff モード: 変更された行 |diff.txt| - *hl-DiffDelete* -DiffDelete diff モード: 削除された行 |diff.txt| - *hl-DiffText* -DiffText diff モード: 変更された行中の変更されたテキスト |diff.txt| - *hl-ErrorMsg* -ErrorMsg コマンドラインに現れるエラーメッセージ - *hl-VertSplit* -VertSplit 垂直分割したウィンドウの区切りとなる桁 - *hl-Folded* -Folded 閉じた折り畳みの行 - *hl-FoldColumn* -FoldColumn 'foldcolumn' - *hl-SignColumn* -SignColumn 目印|signs|が表示される行。 - *hl-IncSearch* -IncSearch 'incsearch'のハイライト; ":s///c"で置換されたテキストにも使わ - れる。 - *hl-LineNr* -LineNr ":number" と ":#" コマンドの行番号。'number' オプションか - 'relativenumber' オプションが設定されているときにはその表示に - も使われる。 - *hl-MatchParen* -MatchParen カーソル下の文字、または直後の文字が括弧であるとき、その文字と - 対応する括弧に使われる。|pi_paren.txt| - - *hl-ModeMsg* -ModeMsg 'showmode'のメッセージ (例. "-- INSERT --") - *hl-MoreMsg* -MoreMsg |more-prompt| - *hl-NonText* -NonText ウィンドウの端の'~'と'@'、'showbreak'で設定された文字など、実 - 際のテキストには存在しない文字(例. 全角文字が行末に収まらない - とき">"が表示される)。 - *hl-Normal* -Normal 通常のテキスト - *hl-Pmenu* -Pmenu ポップアップメニュー: 通常の項目。 - *hl-PmenuSel* -PmenuSel ポップアップメニュー: 選択されている項目。 - *hl-PmenuSbar* -PmenuSbar ポップアップメニュー: スクロールバー。 - *hl-PmenuThumb* -PmenuThumb ポップアップメニュー: スクロールバーのつまみ部分。 - *hl-Question* -Question ヒットエンタープロンプト|hit-enter|とyes/noクエスチョン - *hl-Search* -Search 最後に検索した語のハイライト('hlsearch')を参照。 - quickfixウィンドウ内の現在行のハイライトや、それに類するものに - 使われる。 - *hl-SpecialKey* -SpecialKey ":map"でリストされるメタキーと特別なキー。テキスト中の - unprintableな文字を表示するのにも使われる。 - 一般に: 実際とは異なる文字で表示されるテキスト - *hl-SpellBad* -SpellBad スペルチェッカに認識されない単語。|spell| - これは他のハイライトと同時に組み合わせられる。 - *hl-SpellCap* -SpellCap 大文字で始まるべき単語。 |spell| - これは他のハイライトと同時に組み合わせられる。 - *hl-SpellLocal* -SpellLocal スペルチェッカによって他の地域で使われると判断される単語。 - |spell|これは他のハイライトと同時に組み合わせられる。 - *hl-SpellRare* -SpellRare スペルチェッカによってまず使わないと判断される単語。|spell| - これは他のハイライトと同時に組み合わせられる。 - *hl-StatusLine* -StatusLine カレントウィンドウのステータスライン - *hl-StatusLineNC* -StatusLineNC 非カレントウィンドウのステータスライン。 - Note: これが"StatusLine"に等しい場合、カレントウィンドウのステー - タスラインに"^^^"が使われる。 - *hl-TabLine* -TabLine タブページの行の、アクティブでないタブページのラベル - *hl-TabLineFill* -TabLineFill タブページの行の、ラベルがない部分 - *hl-TabLineSel* -TabLineSel タブページの行の、アクティブなタブページのラベル - *hl-Title* -Title ":set all"、":autocmd"などによる出力のタイトル。 - *hl-Visual* -Visual ビジュアルモード選択 - *hl-VisualNOS* -VisualNOS vimが"Not Owning the Selection"のときのビジュアルモード選択。 - これをサポートしているのはX11GUI|gui-x11|と|xterm-clipboard|の - み。 - *hl-WarningMsg* -WarningMsg 警告メッセージ - *hl-WildMenu* -WildMenu 'wildmenu'補完における現在の候補 - - *hl-User1* *hl-User1..9* *hl-User9* -'statusline'構文によってステータスラインとルーラー('rulerformat'によって)中で9 -個のハイライトが使えるようになっている。その名前はUser1からUser9である。 - -GUI使用時には、これらのグループを使ってメニューやスクロールバー、ツールチップ -の色を設定することができる。これらにデフォルト値はない。これはWin32では利用で -きない。ここではhighlightの引数のうちfont, guibg, guifgの3つだけが効果を持つ。 - - *hl-Menu* -Menu メニューのフォント、文字、背景。ツールバーにも使われる。 - 使用可能なhighlightの引数: font, guibg, guifg. - - NOTE: MotifとAthenaでは'guifontset'が空かどうかに関わらず、常 - に引数fontで実際のフォントセットを指定する。そしてそれが現在の - |:language|に結び付けられる。 - - *hl-Scrollbar* -Scrollbar メインウィンドウのスクロールバーの文字と背景。 - 使用可能なhighlightの引数: guibg, guifg. - - *hl-Tooltip* -Tooltip ツールチップのフォント、文字、背景。 - 使用可能なhighlightの引数: font, guibg, guifg. - - NOTE: MotifとAthenaでは'guifontset'が空かどうかに関わらず、常 - に引数fontで実際のフォントセットを指定する。そしてそれが現在の - |:language|に結び付けられる。 - -============================================================================== -13. グループのリンク *:hi-link* *:highlight-link* *E412* *E413* - -複数の構文グループに対して同じハイライトを適用させるには、両方のグループから一 -つの強調グループにリンクを作り、リンク先に対して色属性を与えると簡単である。 - -リンクを作るには: - - :hi[ghlight][!] [default] link {from-group} {to-group} - -リンクを削除するには: - - :hi[ghlight][!] [default] link {from-group} NONE - -Notes: *E414* -- {from-group}か{to-group}のどちらかが存在しない場合、リンクは作成されない。こ - の場合エラーメッセージは表示されない。 -- リンクされたグループに対して":highlight"を使うと、即座にリンクが削除される。 -- 既に{from-group}にハイライト設定がされている場合、'!'をつけないとリンクは作 - 成されない。sourceされたファイル中の":highlight link"コマンドに関して、エラー - メッセージは表示されない。そのため既に設定を持つグループに対するリンクがスキッ - プされる。 - - *:hi-default* *:highlight-default* -引数[default]によってグループに対するデフォルトのハイライトを設定することがで -きる。そのグループに対して既にハイライトが指定されている場合、このコマンドは無 -視される。既にリンクが存在する場合も同様。 - -[default] は、そのハイライト設定をあとから上書きさせるために使われる。例えば -C 構文ファイルは次の行を含んでいる: > - :highlight default link cComment Comment -この設定を変更し、C コメントに対して Question のハイライトをつけたい場合、次の -行を .vimrc に加える: > - :highlight link cComment Question -"default" をつけないと、.vimrc より C 構文ファイルの方があとに読み込まれるた -め、.vimrc の設定を上書きしてしまう。 - -============================================================================== -14. 構文の消去 *:syn-clear* *E391* - -カレントバッファに対する構文設定を消去したいときはこのコマンドを使う: > - :syntax clear - -このコマンドは、構文ハイライトをオフにしたいときや他の構文を適用したいときに使 -う。通常、これを構文ファイル内で行う必要はない。なぜなら、構文ファイルを読み込 -む自動コマンドによって構文がクリアされる。 -また、このコマンドは変数"b:current_syntax"を削除する。このコマンドの実行後には -すべての構文がなくなるからである。 - -全てのバッファに対して構文ハイライトを無効にしたいときは、構文ファイルを読み込 -む自動コマンドを削除する必要がある: > - :syntax off - -このコマンドが実際に行うことは次のコマンドを実行するのと同じである: > - :source $VIMRUNTIME/syntax/nosyntax.vim -詳細は"nosyntax.vim"を参照。これが正常に機能するためには$VIMRUNTIMEが正しく設 -定されている必要がある。|$VIMRUNTIME|を参照。 - -カレントバッファに対する特定の構文グループを消去するには: > - :syntax clear {group-name} .. -これは{group-name}に対する全てのパターンとキーワードを消去する。 - -カレントバッファに対する特定の構文グループリストを消去するには: > - :syntax clear @{grouplist-name} .. -これは{grouplist-name}の中身を空リストにセットする。 - - *:syntax-reset* *:syn-reset* -色を変えたため、色がごちゃごちゃになってしまったときは、次のコマンドを使うとデ -フォルトに戻る: > - - :syntax reset - -これはオプション'highlight'に対する色は変更しない。 - -ユーザのvimrcファイル中で設定した構文色もVimのデフォルト値に戻ることに注意。 -カラースキームを使っている場合、カラースキームによって定義された色は失われるこ -とに注意。 - -このコマンドが実際に行うことは次と同じ: > - - let g:syntax_cmd = "reset" - runtime! syntax/syncolor.vim - -ここでオプション'runtimepath'が使われていることに注意。 - - *syncolor* -構文ハイライトに別の色を使うには、色を設定するVimスクリプトを作ればよい。その -ファイルを'runtimepath'中('runtimepath'は$VIMRUNTIMEを含む)のディレクトリに置 -くと、その設定がデフォルトの色設定を上書きする。こうして":syntax reset"コマン -ドを実行すると、それらの色が有効になる。 - -Unixでは~/.vim/after/syntax/syncolor.vimファイルを使うとよい。例: > - - if &background == "light" - highlight comment ctermfg=darkgreen guifg=darkgreen - else - highlight comment ctermfg=green guifg=green - endif - -カラースキームを使用すると、ユーザ定義の色が使われるのか、それともカラースキー -ムで定義された色が使われるのかわからなくなる場合がある。これはカラースキーム -ファイルに依存する。|:colorscheme|を参照。 - - *E679* -このsyncolor.vimが"syntax on"を実行しないこと、また、オプション'background'を -設定したりコマンド"colorscheme"を実行しないように注意すること。もしこれらを実 -行すると無限ループに陥ってしまう。 - - *syntax_cmd* -syntax/syncolor.vimファイルが読み込まれると、変数"syntax_cmd"に次の3つの値のど -れかがセットされる: - "on" ":syntax on" コマンド。ハイライト色が上書きされるがリンクはそ - のまま。 - "enable" ":syntax enable" コマンド。まだハイライトが定義されていないグ - ループに対して色を定義するだけ。":syntax default"を使うこと。 - "reset" ":syntax reset" コマンドまたはカラースキームを読み込む。全ての - 色を定義する。 - "skip" 色を定義しない。'runtimepath'で前にあるsyncolor.vimファイルが - 既にデフォルト設定をセットしているとき、そのデフォルト設定をス - キップするために使われる。 - -============================================================================== -15. 関数名などのハイライト *tag-highlight* - -ファイル中の全てのタグ(関数名など)をハイライトするには、次のマッピングを使うと -よい。 - - <F11> -- tags.vimファイルを生成し、タグをハイライトする。 - <F12> -- 既存のtags.vimファイルをもとにハイライトする。 -> - :map <F11> :sp tags<CR>:%s/^\([^ :]*:\)\=\([^ ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12> - :map <F12> :so tags.vim<CR> - -WARNING: tagsファイルが大きくなるほどこの操作は遅くなり、消費するメモリ量も多 -くなる。 - -typedef、union、structだけをハイライトすることもできる。そのためにはExuberant ctags -(http://ctags.sf.netで入手可能)が必要である。 - -以下をあなたのMakefileに加える: - -# 型用のハイライトファイルを作成する。Exuberant ctagsとawkが必要 -types: types.vim -types.vim: *.[ch] - ctags --c-kinds=gstu -o- *.[ch] |\ - awk 'BEGIN{printf("syntax keyword Type\t")}\ - {printf("%s ", $$1)}END{print ""}' > $@ - -そして以下を.vimrcに加える: > - - " load the types.vim highlighting file, if it exists - autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim' - autocmd BufRead,BufNewFile *.[ch] if filereadable(fname) - autocmd BufRead,BufNewFile *.[ch] exe 'so ' . fname - autocmd BufRead,BufNewFile *.[ch] endif - -============================================================================== -16. ウィンドウローカル構文 *:ownsyntax* - -通常は同じバッファを表示するすべてのウィンドウは同じ構文設定を共有します。しか -しながら、特定のウィンドウだけ別の構文設定を使用することも可能です。例えば -一つのウィンドウで LaTeX のソースを普通に表示して、別のウィンドウで異なる表示 -をする (文字を隠したり太字や斜字体で表示したりする) ことが可能です。その場合は -'scrollbind' オプションを使うと便利です。 - -同じバッファを表示しているウィンドウが複数あって、現在のウィンドウの構文だけを -"foo" に設定するには次のようにします: > - :ownsyntax foo -< *w:current_syntax* -"w:current_syntax" 変数が "foo" に設定されます。"b:current_syntax" 変数の値は -変更されません。"b:current_syntax" は構文ファイルによって変更されますが、 -"b:current_syntax" を一時的に保存・復元することで値が変わらないようになってい -ます。構文ファイルによって設定された値が "w:current_syntax" に代入されます。 - -ウィンドウの独自構文が定義されると、同じバッファの他のウィンドウで実行された構 -文コマンドが影響しなくなります。逆に、そのウィンドウで実行された構文コマンドも -他のウィンドウには影響しなくなります。 - -独自構文を持ったウィンドウは他のバッファを読み込むかファイルを再読み込みするこ -とで通常の動作に戻ります。 -ウィンドウを分割したときは、新しいウィンドウは元々の構文を使います。 - -============================================================================== -17. カラー対応xterm *xterm-color* *color-xterm* - -ほとんどのカラー対応xtermは8色しか持たない。デフォルト設定で色がつかない場合は -以下を.vimrcに加えれば正常に色がつくはずである: > - :if &term =~ "xterm" - : if has("terminfo") - : set t_Co=8 - : set t_Sf=<Esc>[3%p1%dm - : set t_Sb=<Esc>[4%p1%dm - : else - : set t_Co=8 - : set t_Sf=<Esc>[3%dm - : set t_Sb=<Esc>[4%dm - : endif - :endif -< [<Esc>はエスケープ文字そのもの。CTRL-V <Esc>とタイプして入力する] - -最初の"if"を自分のターミナル名にマッチするように変更する必要があるかもしれない -例: "xterm"でなく"dtterm"。 - -Note: これらの設定は":syntax on"の前に行うこと。そうでないと色がおかしくなって -しまう。 - *xiterm* *rxvt* -上の設定はxitermとrxvtでも動作するように注意されている。しかしrxvtで16色を使う -場合にはterminfoを設定しなければならない: > - :set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm - :set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm - - *colortest.vim* -色設定をテストするためのファイルがVimディストリビューションに入っている。これ -を使うには次のコマンドを実行する: > - :runtime syntax/colortest.vim - -xtermのあるバージョン(とlinuxコンソールのようなターミナル)は、たとえ色数が8に -定義されていても、より明るい文字色を出力することができる。そのため't_Co'が8の -とき、Vimは明るい文字色に対して"cterm=bold"属性をセットする。 - - *xfree-xterm* -16色以上を使うにはxtermの最新バージョンを入手すること(XFree86 3.3以降に含まれ -ているはずである)。また、以下の場所でも最新バージョンを入手できる: > - http://invisible-island.net/xterm/xterm.html -次にそれをconfigureするよい方法を示す。これは88色を使い、termcap-query機能を有 -効化する。これによってVimがxtermに何色をサポートしているか問い合わせることがで -きるようになる > - ./configure --disable-bold-color --enable-88-color --enable-tcap-query -もし8色しか使えなかったらxtermのコンパイル設定を確認すること。 -(このxtermをUTF-8エンコーディングで使う場合には|UTF8-xterm|も参照)。 - -以下を.vimrcに加えるとこのxtermで動くはずである(16色用): > - :if has("terminfo") - : set t_Co=16 - : set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm - : set t_AF=<Esc>[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm - :else - : set t_Co=16 - : set t_Sf=<Esc>[3%dm - : set t_Sb=<Esc>[4%dm - :endif -< [<Esc>はエスケープ文字そのもの。CTRL-V <Esc>とタイプして入力する] - -|+terminfo|なしではVimはこれらの設定を認識し、自動的にctermの8色と上の設定を -"<Esc>[9%dm" と "<Esc>[10%dm"に変換する。16色以上も自動的に変換される。 - -以下の設定が256色用にうまくいくと報告されている: > - - :set t_AB=<Esc>[48;5;%dm - :set t_AF=<Esc>[38;5;%dm - -または単にTERM環境変数を"xterm-color"または"xterm-16color"にセットし、うまくい -くか試してみるとよい。 - -以下のX resourcesを(~/.Xdefaultsファイルで)使いたいかもしれない: - XTerm*color0: #000000 - XTerm*color1: #c00000 - XTerm*color2: #008000 - XTerm*color3: #808000 - XTerm*color4: #0000c0 - XTerm*color5: #c000c0 - XTerm*color6: #008080 - XTerm*color7: #c0c0c0 - XTerm*color8: #808080 - XTerm*color9: #ff6060 - XTerm*color10: #00ff00 - XTerm*color11: #ffff00 - XTerm*color12: #8080ff - XTerm*color13: #ff40ff - XTerm*color14: #00ffff - XTerm*color15: #ffffff - Xterm*cursorColor: Black - -[Note: cursorColorにはバグがある。カーソルの色が最後に描画されたテキストの色に -なってしまうというものである。これはxtermの新しいバージョンを使うと解決する -が、まだ全ての人がそれを使っているわけではない。] - -これらを即座に更新するには.XdefaultsファイルをXオプションデータベースマネー -ジャに再読み込みさせる(.Xdefaultsを変更したときはこれを行う必要がある): > - xrdb -merge ~/.Xdefaults - *xterm-blink* *xterm-blinking-cursor* -xtermでカーソルを点滅させるにはtools/blink.cを見ること。またはThomas Dickeyの -xtermのパッチレベル107以上を使い(入手場所は上を参照)、以下のリソースを設定す -る。 - XTerm*cursorBlink: on - XTerm*cursorOnTime: 400 - XTerm*cursorOffTime: 250 - XTerm*cursorColor: White - - *hpterm-color* -次の設定はhptermで(大体)うまく機能する。文字色は8色だけサポートしている: > - :if has("terminfo") - : set t_Co=8 - : set t_Sf=<Esc>[&v%p1%dS - : set t_Sb=<Esc>[&v7S - :else - : set t_Co=8 - : set t_Sf=<Esc>[&v%dS - : set t_Sb=<Esc>[&v7S - :endif -< [<Esc>はエスケープ文字そのもの。CTRL-V <Esc>とタイプして入力する] - - *Eterm* *enlightened-terminal* -次の設定がEnlightenedターミナルエミュレータまたはEtermで機能すると報告されてい -る。また、明るい色を表示するのにbold属性を使うxtermライクターミナル全てで機能 -すると思われる。必要なら前述のように":if"をつけること。 > - :set t_Co=16 - :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m - :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m -< - *TTpro-telnet* -次の設定がTTpro telnet用にうまくいく。Tera Term ProはMS-Windows用のフリーウェ -ア/オープンソースプログラムである。 > - set t_Co=16 - set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm - set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm -また、TTproのSetup→Window→Full Colorが有効になっていることと、 -Setup→Font→Enable Boldが無効になっていることを確認すること。 -(この情報はJohn Love-Jensen <eljay@Adobe.COM>によって提供された) - - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/doc/tabpage.jax b/doc/tabpage.jax deleted file mode 100644 index 17165d3f2..000000000 --- a/doc/tabpage.jax +++ /dev/null @@ -1,373 +0,0 @@ -*tabpage.txt* For Vim バージョン 7.3. Last change: 2010 Jul 31 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -タブページの使い方 *tab-page* *tabpage* - -タブページを使うために追加されたコマンドについて説明します。複数のタブページを -開いていると違う働きをするコマンドについても説明します。 - -1. はじめに |tab-page-intro| -2. コマンド |tab-page-commands| -3. その他 |tab-page-other| -4. 'tabline' の設定 |setting-tabline| -5. 'guitablabel' の設定 |setting-guitablabel| - -{Vi にはこれらのコマンドはありません} -{|+windows| が有効な場合のみ利用できます} - -============================================================================== -1. はじめに *tab-page-intro* - -タブページは複数のウィンドウを持てます。タブページを使うと、作業別のウィンドウ -の集合を簡単に切り替えることができます。 - -通常、Vim ウィンドウの最上部にタブページを表すラベルの一覧が表示されます。その -ラベルをマウスでクリックすると、そのタブページにジャンプできます。他の方法でも -タブページを移動できます。 - -ほとんどのコマンドは作業中のタブページ内だけで動作します。|CTRL-W| コマンド -や、|:tab| を前置しない |:windo|、|:all|、|:ball| なども同様です。カレントタブ -ページ以外にも作用するコマンドについては以下で説明しています。 - -タブページを使うと、一時的なバッファを使用するときに、作業中のウィンドウレイア -ウトを変更しなくてすみます。新しいタブページを開いて、何か作業をし、そのタブ -ページを閉じる、という具合です。 - -============================================================================== -2. コマンド *tab-page-commands* - -タブページを開くには: - -Vim を "vim -p filename ..." と起動すると、それぞれのファイルごとに (最大 -'tabpagemax' までの) タブページを開けます。|-p| 参照。 - -CUI の Vim でタブページラインをダブルクリックすると新しいタブページが作成され -ます。新しいタブページはクリックした場所の左に作成されます。最初のクリックが他 -のタブページの選択になってしまうときは、スクリーンが余計に更新されます。 - -この機能は Win32 と Motif の GUI でも使えます。ただし、ラベルの右をクリックし -た場合のみです。 - -GUI でタブページラインを右クリックするとメニューが表示されます。|tabline-menu| - -:[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* -:[count]tabnew - カレントタブページの後ろに空のウィンドウを持った新しいタブペー - ジを作成します。[count] については下記 |:tab| 参照。 - -:[count]tabe[dit] [++opt] [+cmd] {file} -:[count]tabnew [++opt] [+cmd] {file} - {file} を新しいタブページで開きます。|:edit| と同じです。 - [count] については下記 |:tab| 参照。 - -:[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* - 'path' 内の {file} を新しいタブページで開きます。|:find| と同 - じです。[count] については下記 |:tab| 参照。 - {|+file_in_path| が有効な場合のみ利用できます} - -:[count]tab {cmd} *:tab* - {cmd} を実行します。そのコマンドが新しいウィンドウを作成すると - きは、その代わりに新しいタブページを作成します。|:diffsplit|と - |:diffpatch|, |:execute|, |:normal| に対しては機能しません。 - [count] を省略すると、新しいタブページはカレントタブページの後 - ろに作成されます。 - [count] を指定すると、[count] 番目のタブページの後ろに作成され - ます。タブページを一番左に作成するには ":0tab cmd" とします。 - 例: > - :tab split " opens current buffer in new tab page - :tab help gt " opens tab page with help for "gt" - -CTRL-W gf カーソル下のファイル名のファイルを新しいタブページで開きます。 - |CTRL-W_gf| を参照してください。 - -CTRL-W gF カーソル下のファイル名のファイルを新しいタブページで開きます。 - そして、ファイル名の後ろに指定された行番号にジャンプします。 - |CTRL-W_gF| を参照してください。 - -タブページを閉じるには: - -複数のタブページを開いているときは、タブページ内の最後のウィンドウを閉じると、 -そのタブページが閉じられます。 - -タブページラインが表示されているときは、右上に表示されている "X" をマウスでク -リックすると、カレントタブページが閉じます。|'tabline'| を設定しているときは、 -他の何かが表示されているかもしれません。 - - *:tabc* *:tabclose* -:tabc[lose][!] カレントタブページを閉じます。 - このコマンドは次のときに失敗します: - - タブページが一つしかないとき。 *E784* - - 'hidden' がオフのときに [!] を使わず、バッファに変更があり、 - そのバッファを表示しているウィンドウが他にない場合。 - バッファの変更はファイルに保存されませんが、失われることもあり - ません。このコマンドは安全なコマンドです。 - -:tabc[lose][!] {count} - {count} 番目のタブページを閉じます。|:tabclose| と同じ理由で失 - 敗することがあります。 - - *:tabo* *:tabonly* -:tabo[nly][!] カレントタブページ以外のすべてのタブページを閉じます。 - オプション 'hidden' がオンのとき、閉じたウィンドウのバッファは - すべて隠しバッファになります。 - 'hidden' がオフ、'autowrite' がオンのときは、変更のあるバッ - ファはファイルに保存されます。そうでないときは、変更のあるバッ - ファを表示しているウィンドウは閉じません。[!] を指定した場合 - は、変更のあるバッファは隠しバッファになります。変更のあるバッ - ファは絶対に破棄されないので、変更を失うことはありません。 - - -タブページを切り替えるには: - -タブページラインが表示されているときは、タブページラベルをマウスでクリックする -と、そのタブページに移動できます。ラベルが表示されていない場所をクリックする -と、次のタブページに移動できます。 |'tabline'| - -:tabn[ext] *:tabn* *:tabnext* *gt* -<C-PageDown> *CTRL-<PageDown>* *<C-PageDown>* -gt *i_CTRL-<PageDown>* *i_<C-PageDown>* - 次のタブページに移動します。次のタブページがない場合は、最初の - タブページに移動します。 - -:tabn[ext] {count} -{count}<C-PageDown> -{count}gt {count} 番目のタブページに移動します。最初のタブページの番号は - 1 です。 - - -:tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN* -:tabN[ext] *:tabNext* *CTRL-<PageUp>* -<C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>* -gT 前のタブページに移動します。前のタブページがない場合は、最後の - タブページに移動します。 - -:tabp[revious] {count} -:tabN[ext] {count} -{count}<C-PageUp> -{count}gT {count} の数だけ前のタブページに移動します。前のタブページがな - い場合は最後のタブページに移動します。 - -:tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind* -:tabfir[st] 最初のタブページに移動します。 - - *:tabl* *:tablast* -:tabl[ast] 最後のタブページに移動します。 - - -その他のコマンド: - *:tabs* -:tabs タブページと、含まれているウィンドウの一覧を表示します。 - ">" と表示されるのはカレントウィンドウです。 - "+" と表示されるのは変更のあるバッファです。 - - -タブページを並べ替えるには: - -:tabm[ove] [N] *:tabm* *:tabmove* - カレントタブページを N 番目のタブページの後ろに移動します。カ - レントタブページを一番目のタブページにするにはゼロを指定します。 - N を省略すると最後に移動します。 - - -タブページごとにコマンドを実行するには: - - *:tabd* *:tabdo* -:tabd[o] {cmd} タブページごとにコマンドを実行します。 - これは次のような動作をします: > - :tabfirst - :{cmd} - :tabnext - :{cmd} - etc. -< このコマンドは各タブページのカレントウィンドウで実行されます。 - いずれかのタブページでエラーが起きたときは、その場で実行を中断 - します。 - 最後のタブページ (またはエラーが起きたタブページ) がカレントタ - ブページになります。 - {cmd} は '|' を使って複数のコマンドを繋げることができます。 - {cmd} はタブページを開いたり閉じたり並べ替えたりしてはいけませ - ん。 - {Vi にはない機能です} - {|+listcmds| が有効な場合のみ利用できます} - |:windo|、|:argdo|、|:bufdo| も参照してください。 - -============================================================================== -3. その他 *tab-page-other* - - *tabline-menu* -GUI のタブページラインにはポップアップメニューがあります。右クリックで次のメ -ニューが表示されます: - Close マウスポインタの下のタブページを閉じます。マウスがラベ - ルの上にないときは、カレントタブページを閉じます。 - New Tab タブページを新規バッファで開きます。マウスポインタの左 - 側に作成されます。 - Open Tab... "New Tab" と同じですが、ファイル選択ダイアログを使っ - て選択したファイルを新しいタブページで開きます。 - -Diff モードはタブページ単位で機能します。一つのタブページ内でファイル間の差分 -を表示できます。そして、他のタブページでは他のファイルとの差分を表示することが -できます。 - -タブページローカル変数は "t:" で始まります。|tabpage-variable| - -現在、タブページローカルなオプションは 'cmdheight' だけです。 - -オートコマンドイベントの TabLeave と TabEnter を使って、タブページを切り替える -ときにコマンドを実行できます。イベントが起きる正確な順番は何をしたかによって変 -わります。新しいタブページを作成したときは、例えば、編集中のバッファを新しい -ウィンドウで開き、それからそのウィンドウで別のバッファを開いたときと同じような -動きをします。つまり、":tabnew" では次の順番でイベントが実行されます: - WinLeave カレントウィンドウから離れる - TabLeave カレントタブページから離れる - TabEnter 新しいタブページに入る - WinEnter 新しいタブページのウィンドウに入る - BufLeave カレントバッファから離れる - BufEnter 新しい空のバッファに入る - -タブページを切り替えたときは次の順番です: - BufLeave - WinLeave - TabLeave - TabEnter - WinEnter - BufEnter - -============================================================================== -4. 'tabline' の設定 *setting-tabline* - -オプション 'tabline' を設定してタブページラベルの表示方法を指定できます。これ -は CUI の タブページラインで使います。 - -オプション 'showtabline' を設定してタブページラインを表示するかどうかを指定で -きます。表示しない、タブページが複数あるときだけ表示する、常に表示する、から選 -べます。 - -タブページラインの強調表示には TabLine、TabLineSel、TabLineFill が使われます。 -|hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| - -変更されているウィンドウを含むタブページには "+" が表示されます。タブページ内 -のウィンドウの個数も表示されます。よって "3+" という表示は3個のウィンドウを含 -む、そのうちの1つが変更されているバッファを含むということを意味します。 - -オプション 'tabline' を使って、タブページラベルを好みの表示に設定できます。こ -れはあまり簡単ではないので、サンプルを用意してあります。 - -基本的には 'statusline' を参照してください。同じアイテムが 'tabline' で使用で -きます。加えて、|tabpagebuflist()|、|tabpagenr()|、|tabpagewinnr()| という関数 -も使えます。 - -タブページラベルの数は変化するので、オプションには式を使う必要があります。次の -ように設定します: > - :set tabline=%!MyTabLine() - -では、関数 MyTabLine() を定義して、すべてのタブページラベルを表示するようにし -ます。タブページラベル全体の作成と、個々のタブページラベルの作成、という二つの -段階に分けると簡単です。 > - - function MyTabLine() - let s = '' - for i in range(tabpagenr('$')) - " 強調表示グループの選択 - if i + 1 == tabpagenr() - let s .= '%#TabLineSel#' - else - let s .= '%#TabLine#' - endif - - " タブページ番号の設定 (マウスクリック用) - let s .= '%' . (i + 1) . 'T' - - " ラベルは MyTabLabel() で作成する - let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' - endfor - - " 最後のタブページの後は TabLineFill で埋め、タブページ番号をリセッ - " トする - let s .= '%#TabLineFill#%T' - - " カレントタブページを閉じるボタンのラベルを右添えで作成 - if tabpagenr('$') > 1 - let s .= '%=%#TabLine#%999Xclose' - endif - - return s - endfunction - -関数 MyTabLabel() は個々のタブページラベルを得るために呼ばれます。 > - - function MyTabLabel(n) - let buflist = tabpagebuflist(a:n) - let winnr = tabpagewinnr(a:n) - return bufname(buflist[winnr - 1]) - endfunction - -このサンプルは単純なものです。生成されるのは未設定時のタブページラインとほぼ同 -じですが、変更のあるバッファに + が付けたり、名前を切り詰めたりはしません。十 -分な表示領域がない場合など、なんらかのうまい方法でラベルの幅を減らしたいでしょ -う。利用できる表示領域はオプション 'columns' を確認してください。 - -============================================================================== -5. 'guitablabel' の設定 *setting-guitablabel* - -GUI のタブページラインが表示されているとき、'guitablabel' を設定してタブページ -ラベルの表示方法を指定できます。'tabline' とは違い、一度にタブページライン全体 -を指定するのではなく、個々のラベルを得るために 'guitablabel' が使われます。 - -'guitabtooltip' という良く似たオプションがあります。これはラベルのツールチップ -を表示するために使われます。ツールチップはマウスポインタがラベルの上に乗ってい -るときだけ表示されるので、普通は、長い文字を表示します。いくつかのシステムだけ -サポートされています。 - -書式についてはオプション 'statusline' を参照してください。 - -"%N" はカレントタブページ番号になります。このオプションを評価するときに、 -|v:lnum| にも同じ番号が設定されます。ファイル名を参照するアイテムにはタブペー -ジのカレントウィンドウのものが使われます。 - -Note: このオプションでは強調表示は使えません。%T と %X は無視されます。 - -簡単な例として、次のものはタブページ番号とバッファ名をラベルに表示します: > - :set guitablabel=%N\ %f - -次の例は 'guitablabel' の標準設定の動作と似た動作をします。タブページのウィン -ドウ数と、変更のあるバッファがあるときには '+' を表示します: > - - function GuiTabLabel() - let label = '' - let bufnrlist = tabpagebuflist(v:lnum) - - " このタブページに変更のあるバッファがるときには '+' を追加する - for bufnr in bufnrlist - if getbufvar(bufnr, "&modified") - let label = '+' - break - endif - endfor - - " ウィンドウが複数あるときにはその数を追加する - let wincount = tabpagewinnr(v:lnum, '$') - if wincount > 1 - let label .= wincount - endif - if label != '' - let label .= ' ' - endif - - " バッファ名を追加する - return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) - endfunction - - set guitablabel=%{GuiTabLabel()} - -Note: この関数はオプションを設定する前に定義しておく必要があります。そうしない -と、関数未定義のエラーが表示されてしまいます。 - -標準のラベルを使いたい場合は、空文字列を返してください。 - -あるタブページに固有の何かを表示したいときは、タブページローカル変数 |t:var| -が便利です。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/tags-ja b/doc/tags-ja deleted file mode 100644 index d926c5ba4..000000000 --- a/doc/tags-ja +++ /dev/null @@ -1,8205 +0,0 @@ -!_TAG_FILE_ENCODING utf-8 // -! change.jax /*!* -!! change.jax /*!!* -# pattern.jax /*#* -$ motion.jax /*$* -$HOME options.jax /*$HOME* -$MYGVIMRC gui.jax /*$MYGVIMRC* -$MYVIMRC starting.jax /*$MYVIMRC* -$VIM starting.jax /*$VIM* -$VIMRUNTIME starting.jax /*$VIMRUNTIME* -% motion.jax /*%* -%:. cmdline.jax /*%:.* -%:8 cmdline.jax /*%:8* -%:e cmdline.jax /*%:e* -%:gs cmdline.jax /*%:gs* -%:h cmdline.jax /*%:h* -%:p cmdline.jax /*%:p* -%:r cmdline.jax /*%:r* -%:s cmdline.jax /*%:s* -%:t cmdline.jax /*%:t* -%:~ cmdline.jax /*%:~* -& change.jax /*&* -' motion.jax /*'* -'' motion.jax /*''* -'( motion.jax /*'(* -') motion.jax /*')* -'. motion.jax /*'.* -'0 motion.jax /*'0* -'< motion.jax /*'<* -'> motion.jax /*'>* -'A motion.jax /*'A* -'[ motion.jax /*'[* -'] motion.jax /*']* -'^ motion.jax /*'^* -'a motion.jax /*'a* -'acd' options.jax /*'acd'* -'ai' options.jax /*'ai'* -'akm' options.jax /*'akm'* -'al' options.jax /*'al'* -'aleph' options.jax /*'aleph'* -'allowrevins' options.jax /*'allowrevins'* -'altkeymap' options.jax /*'altkeymap'* -'ambiwidth' options.jax /*'ambiwidth'* -'ambw' options.jax /*'ambw'* -'anti' options.jax /*'anti'* -'antialias' options.jax /*'antialias'* -'ap' vi_diff.jax /*'ap'* -'ar' options.jax /*'ar'* -'arab' options.jax /*'arab'* -'arabic' options.jax /*'arabic'* -'arabicshape' options.jax /*'arabicshape'* -'ari' options.jax /*'ari'* -'arshape' options.jax /*'arshape'* -'autochdir' options.jax /*'autochdir'* -'autoindent' options.jax /*'autoindent'* -'autoprint' vi_diff.jax /*'autoprint'* -'autoread' options.jax /*'autoread'* -'autowrite' options.jax /*'autowrite'* -'autowriteall' options.jax /*'autowriteall'* -'aw' options.jax /*'aw'* -'awa' options.jax /*'awa'* -'background' options.jax /*'background'* -'backspace' options.jax /*'backspace'* -'backup' options.jax /*'backup'* -'backupcopy' options.jax /*'backupcopy'* -'backupdir' options.jax /*'backupdir'* -'backupext' options.jax /*'backupext'* -'backupskip' options.jax /*'backupskip'* -'balloondelay' options.jax /*'balloondelay'* -'ballooneval' options.jax /*'ballooneval'* -'balloonexpr' options.jax /*'balloonexpr'* -'bdir' options.jax /*'bdir'* -'bdlay' options.jax /*'bdlay'* -'beautify' vi_diff.jax /*'beautify'* -'beval' options.jax /*'beval'* -'bex' options.jax /*'bex'* -'bexpr' options.jax /*'bexpr'* -'bf' vi_diff.jax /*'bf'* -'bg' options.jax /*'bg'* -'bh' options.jax /*'bh'* -'bin' options.jax /*'bin'* -'binary' options.jax /*'binary'* -'biosk' options.jax /*'biosk'* -'bioskey' options.jax /*'bioskey'* -'bk' options.jax /*'bk'* -'bkc' options.jax /*'bkc'* -'bl' options.jax /*'bl'* -'bomb' options.jax /*'bomb'* -'breakat' options.jax /*'breakat'* -'brk' options.jax /*'brk'* -'browsedir' options.jax /*'browsedir'* -'bs' options.jax /*'bs'* -'bsdir' options.jax /*'bsdir'* -'bsk' options.jax /*'bsk'* -'bt' options.jax /*'bt'* -'bufhidden' options.jax /*'bufhidden'* -'buflisted' options.jax /*'buflisted'* -'buftype' options.jax /*'buftype'* -'casemap' options.jax /*'casemap'* -'cb' options.jax /*'cb'* -'cc' options.jax /*'cc'* -'ccv' options.jax /*'ccv'* -'cd' options.jax /*'cd'* -'cdpath' options.jax /*'cdpath'* -'cedit' options.jax /*'cedit'* -'cf' options.jax /*'cf'* -'cfu' options.jax /*'cfu'* -'ch' options.jax /*'ch'* -'character' intro.jax /*'character'* -'charconvert' options.jax /*'charconvert'* -'ci' options.jax /*'ci'* -'cin' options.jax /*'cin'* -'cindent' options.jax /*'cindent'* -'cink' options.jax /*'cink'* -'cinkeys' options.jax /*'cinkeys'* -'cino' options.jax /*'cino'* -'cinoptions' options.jax /*'cinoptions'* -'cinw' options.jax /*'cinw'* -'cinwords' options.jax /*'cinwords'* -'clipboard' options.jax /*'clipboard'* -'cm' options.jax /*'cm'* -'cmdheight' options.jax /*'cmdheight'* -'cmdwinheight' options.jax /*'cmdwinheight'* -'cmp' options.jax /*'cmp'* -'cms' options.jax /*'cms'* -'co' options.jax /*'co'* -'cocu' options.jax /*'cocu'* -'cole' options.jax /*'cole'* -'colorcolumn' options.jax /*'colorcolumn'* -'columns' options.jax /*'columns'* -'com' options.jax /*'com'* -'comments' options.jax /*'comments'* -'commentstring' options.jax /*'commentstring'* -'compatible' options.jax /*'compatible'* -'complete' options.jax /*'complete'* -'completefunc' options.jax /*'completefunc'* -'completeopt' options.jax /*'completeopt'* -'concealcursor' options.jax /*'concealcursor'* -'conceallevel' options.jax /*'conceallevel'* -'confirm' options.jax /*'confirm'* -'consk' options.jax /*'consk'* -'conskey' options.jax /*'conskey'* -'copyindent' options.jax /*'copyindent'* -'cot' options.jax /*'cot'* -'cp' options.jax /*'cp'* -'cpo' options.jax /*'cpo'* -'cpoptions' options.jax /*'cpoptions'* -'cpt' options.jax /*'cpt'* -'crb' options.jax /*'crb'* -'cryptmethod' options.jax /*'cryptmethod'* -'cscopepathcomp' options.jax /*'cscopepathcomp'* -'cscopeprg' options.jax /*'cscopeprg'* -'cscopequickfix' options.jax /*'cscopequickfix'* -'cscoperelative' options.jax /*'cscoperelative'* -'cscopetag' options.jax /*'cscopetag'* -'cscopetagorder' options.jax /*'cscopetagorder'* -'cscopeverbose' options.jax /*'cscopeverbose'* -'cspc' options.jax /*'cspc'* -'csprg' options.jax /*'csprg'* -'csqf' options.jax /*'csqf'* -'csre' options.jax /*'csre'* -'cst' options.jax /*'cst'* -'csto' options.jax /*'csto'* -'csverb' options.jax /*'csverb'* -'cuc' options.jax /*'cuc'* -'cul' options.jax /*'cul'* -'cursorbind' options.jax /*'cursorbind'* -'cursorcolumn' options.jax /*'cursorcolumn'* -'cursorline' options.jax /*'cursorline'* -'cwh' options.jax /*'cwh'* -'debug' options.jax /*'debug'* -'deco' options.jax /*'deco'* -'def' options.jax /*'def'* -'define' options.jax /*'define'* -'delcombine' options.jax /*'delcombine'* -'dex' options.jax /*'dex'* -'dg' options.jax /*'dg'* -'dict' options.jax /*'dict'* -'dictionary' options.jax /*'dictionary'* -'diff' options.jax /*'diff'* -'diffexpr' options.jax /*'diffexpr'* -'diffopt' options.jax /*'diffopt'* -'digraph' options.jax /*'digraph'* -'dip' options.jax /*'dip'* -'dir' options.jax /*'dir'* -'directory' options.jax /*'directory'* -'display' options.jax /*'display'* -'dy' options.jax /*'dy'* -'ea' options.jax /*'ea'* -'ead' options.jax /*'ead'* -'eadirection' options.jax /*'eadirection'* -'eb' options.jax /*'eb'* -'ed' options.jax /*'ed'* -'edcompatible' options.jax /*'edcompatible'* -'ef' options.jax /*'ef'* -'efm' options.jax /*'efm'* -'ei' options.jax /*'ei'* -'ek' options.jax /*'ek'* -'enc' options.jax /*'enc'* -'encoding' options.jax /*'encoding'* -'endofline' options.jax /*'endofline'* -'eol' options.jax /*'eol'* -'ep' options.jax /*'ep'* -'equalalways' options.jax /*'equalalways'* -'equalprg' options.jax /*'equalprg'* -'errorbells' options.jax /*'errorbells'* -'errorfile' options.jax /*'errorfile'* -'errorformat' options.jax /*'errorformat'* -'esckeys' options.jax /*'esckeys'* -'et' options.jax /*'et'* -'eventignore' options.jax /*'eventignore'* -'ex' options.jax /*'ex'* -'expandtab' options.jax /*'expandtab'* -'exrc' options.jax /*'exrc'* -'fcl' options.jax /*'fcl'* -'fcs' options.jax /*'fcs'* -'fdc' options.jax /*'fdc'* -'fde' options.jax /*'fde'* -'fdi' options.jax /*'fdi'* -'fdl' options.jax /*'fdl'* -'fdls' options.jax /*'fdls'* -'fdm' options.jax /*'fdm'* -'fdn' options.jax /*'fdn'* -'fdo' options.jax /*'fdo'* -'fdt' options.jax /*'fdt'* -'fe' options.jax /*'fe'* -'fen' options.jax /*'fen'* -'fenc' options.jax /*'fenc'* -'fencs' options.jax /*'fencs'* -'fex' options.jax /*'fex'* -'ff' options.jax /*'ff'* -'ffs' options.jax /*'ffs'* -'fileencoding' options.jax /*'fileencoding'* -'fileencodings' options.jax /*'fileencodings'* -'fileformat' options.jax /*'fileformat'* -'fileformats' options.jax /*'fileformats'* -'filetype' options.jax /*'filetype'* -'fillchars' options.jax /*'fillchars'* -'fk' options.jax /*'fk'* -'fkmap' options.jax /*'fkmap'* -'fl' vi_diff.jax /*'fl'* -'flash' vi_diff.jax /*'flash'* -'flp' options.jax /*'flp'* -'fml' options.jax /*'fml'* -'fmr' options.jax /*'fmr'* -'fo' options.jax /*'fo'* -'foldclose' options.jax /*'foldclose'* -'foldcolumn' options.jax /*'foldcolumn'* -'foldenable' options.jax /*'foldenable'* -'foldexpr' options.jax /*'foldexpr'* -'foldignore' options.jax /*'foldignore'* -'foldlevel' options.jax /*'foldlevel'* -'foldlevelstart' options.jax /*'foldlevelstart'* -'foldmarker' options.jax /*'foldmarker'* -'foldmethod' options.jax /*'foldmethod'* -'foldminlines' options.jax /*'foldminlines'* -'foldnestmax' options.jax /*'foldnestmax'* -'foldopen' options.jax /*'foldopen'* -'foldtext' options.jax /*'foldtext'* -'formatexpr' options.jax /*'formatexpr'* -'formatlistpat' options.jax /*'formatlistpat'* -'formatoptions' options.jax /*'formatoptions'* -'formatprg' options.jax /*'formatprg'* -'fp' options.jax /*'fp'* -'fs' options.jax /*'fs'* -'fsync' options.jax /*'fsync'* -'ft' options.jax /*'ft'* -'gcr' options.jax /*'gcr'* -'gd' options.jax /*'gd'* -'gdefault' options.jax /*'gdefault'* -'gfm' options.jax /*'gfm'* -'gfn' options.jax /*'gfn'* -'gfs' options.jax /*'gfs'* -'gfw' options.jax /*'gfw'* -'ghr' options.jax /*'ghr'* -'go' options.jax /*'go'* -'go-A' options.jax /*'go-A'* -'go-F' options.jax /*'go-F'* -'go-L' options.jax /*'go-L'* -'go-M' options.jax /*'go-M'* -'go-R' options.jax /*'go-R'* -'go-T' options.jax /*'go-T'* -'go-a' options.jax /*'go-a'* -'go-b' options.jax /*'go-b'* -'go-c' options.jax /*'go-c'* -'go-e' options.jax /*'go-e'* -'go-f' options.jax /*'go-f'* -'go-g' options.jax /*'go-g'* -'go-h' options.jax /*'go-h'* -'go-i' options.jax /*'go-i'* -'go-l' options.jax /*'go-l'* -'go-m' options.jax /*'go-m'* -'go-p' options.jax /*'go-p'* -'go-r' options.jax /*'go-r'* -'go-t' options.jax /*'go-t'* -'go-v' options.jax /*'go-v'* -'gp' options.jax /*'gp'* -'gr' vi_diff.jax /*'gr'* -'graphic' vi_diff.jax /*'graphic'* -'grepformat' options.jax /*'grepformat'* -'grepprg' options.jax /*'grepprg'* -'gtl' options.jax /*'gtl'* -'gtt' options.jax /*'gtt'* -'guicursor' options.jax /*'guicursor'* -'guifont' options.jax /*'guifont'* -'guifontset' options.jax /*'guifontset'* -'guifontwide' options.jax /*'guifontwide'* -'guiheadroom' options.jax /*'guiheadroom'* -'guioptions' options.jax /*'guioptions'* -'guipty' options.jax /*'guipty'* -'guitablabel' options.jax /*'guitablabel'* -'guitabtooltip' options.jax /*'guitabtooltip'* -'hardtabs' vi_diff.jax /*'hardtabs'* -'helpfile' options.jax /*'helpfile'* -'helpheight' options.jax /*'helpheight'* -'helplang' options.jax /*'helplang'* -'hf' options.jax /*'hf'* -'hh' options.jax /*'hh'* -'hi' options.jax /*'hi'* -'hid' options.jax /*'hid'* -'hidden' options.jax /*'hidden'* -'highlight' options.jax /*'highlight'* -'history' options.jax /*'history'* -'hk' options.jax /*'hk'* -'hkmap' options.jax /*'hkmap'* -'hkmapp' options.jax /*'hkmapp'* -'hkp' options.jax /*'hkp'* -'hl' options.jax /*'hl'* -'hlg' options.jax /*'hlg'* -'hls' options.jax /*'hls'* -'hlsearch' options.jax /*'hlsearch'* -'ht' vi_diff.jax /*'ht'* -'ic' options.jax /*'ic'* -'icon' options.jax /*'icon'* -'iconstring' options.jax /*'iconstring'* -'ignorecase' options.jax /*'ignorecase'* -'im' options.jax /*'im'* -'imactivatekey' options.jax /*'imactivatekey'* -'imak' options.jax /*'imak'* -'imc' options.jax /*'imc'* -'imcmdline' options.jax /*'imcmdline'* -'imd' options.jax /*'imd'* -'imdisable' options.jax /*'imdisable'* -'imi' options.jax /*'imi'* -'iminsert' options.jax /*'iminsert'* -'ims' options.jax /*'ims'* -'imsearch' options.jax /*'imsearch'* -'inc' options.jax /*'inc'* -'include' options.jax /*'include'* -'includeexpr' options.jax /*'includeexpr'* -'incsearch' options.jax /*'incsearch'* -'inde' options.jax /*'inde'* -'indentexpr' options.jax /*'indentexpr'* -'indentkeys' options.jax /*'indentkeys'* -'indk' options.jax /*'indk'* -'inex' options.jax /*'inex'* -'inf' options.jax /*'inf'* -'infercase' options.jax /*'infercase'* -'insertmode' options.jax /*'insertmode'* -'is' options.jax /*'is'* -'isf' options.jax /*'isf'* -'isfname' options.jax /*'isfname'* -'isi' options.jax /*'isi'* -'isident' options.jax /*'isident'* -'isk' options.jax /*'isk'* -'iskeyword' options.jax /*'iskeyword'* -'isp' options.jax /*'isp'* -'isprint' options.jax /*'isprint'* -'joinspaces' options.jax /*'joinspaces'* -'js' options.jax /*'js'* -'key' options.jax /*'key'* -'keymap' options.jax /*'keymap'* -'keymodel' options.jax /*'keymodel'* -'keywordprg' options.jax /*'keywordprg'* -'km' options.jax /*'km'* -'kmp' options.jax /*'kmp'* -'kp' options.jax /*'kp'* -'langmap' options.jax /*'langmap'* -'langmenu' options.jax /*'langmenu'* -'laststatus' options.jax /*'laststatus'* -'lazyredraw' options.jax /*'lazyredraw'* -'lbr' options.jax /*'lbr'* -'lcs' options.jax /*'lcs'* -'linebreak' options.jax /*'linebreak'* -'lines' options.jax /*'lines'* -'linespace' options.jax /*'linespace'* -'lisp' options.jax /*'lisp'* -'lispwords' options.jax /*'lispwords'* -'list' options.jax /*'list'* -'listchars' options.jax /*'listchars'* -'lm' options.jax /*'lm'* -'lmap' options.jax /*'lmap'* -'loadplugins' options.jax /*'loadplugins'* -'lpl' options.jax /*'lpl'* -'ls' options.jax /*'ls'* -'lsp' options.jax /*'lsp'* -'lw' options.jax /*'lw'* -'lz' options.jax /*'lz'* -'ma' options.jax /*'ma'* -'macatsui' options.jax /*'macatsui'* -'magic' options.jax /*'magic'* -'makeef' options.jax /*'makeef'* -'makeprg' options.jax /*'makeprg'* -'mat' options.jax /*'mat'* -'matchpairs' options.jax /*'matchpairs'* -'matchtime' options.jax /*'matchtime'* -'maxcombine' options.jax /*'maxcombine'* -'maxfuncdepth' options.jax /*'maxfuncdepth'* -'maxmapdepth' options.jax /*'maxmapdepth'* -'maxmem' options.jax /*'maxmem'* -'maxmempattern' options.jax /*'maxmempattern'* -'maxmemtot' options.jax /*'maxmemtot'* -'mco' options.jax /*'mco'* -'mef' options.jax /*'mef'* -'menuitems' options.jax /*'menuitems'* -'mesg' vi_diff.jax /*'mesg'* -'mfd' options.jax /*'mfd'* -'mh' options.jax /*'mh'* -'mis' options.jax /*'mis'* -'mkspellmem' options.jax /*'mkspellmem'* -'ml' options.jax /*'ml'* -'mls' options.jax /*'mls'* -'mm' options.jax /*'mm'* -'mmd' options.jax /*'mmd'* -'mmp' options.jax /*'mmp'* -'mmt' options.jax /*'mmt'* -'mod' options.jax /*'mod'* -'modeline' options.jax /*'modeline'* -'modelines' options.jax /*'modelines'* -'modifiable' options.jax /*'modifiable'* -'modified' options.jax /*'modified'* -'more' options.jax /*'more'* -'mouse' options.jax /*'mouse'* -'mousef' options.jax /*'mousef'* -'mousefocus' options.jax /*'mousefocus'* -'mousehide' options.jax /*'mousehide'* -'mousem' options.jax /*'mousem'* -'mousemodel' options.jax /*'mousemodel'* -'mouses' options.jax /*'mouses'* -'mouseshape' options.jax /*'mouseshape'* -'mouset' options.jax /*'mouset'* -'mousetime' options.jax /*'mousetime'* -'mp' options.jax /*'mp'* -'mps' options.jax /*'mps'* -'msm' options.jax /*'msm'* -'mzq' options.jax /*'mzq'* -'mzquantum' options.jax /*'mzquantum'* -'nf' options.jax /*'nf'* -'noacd' options.jax /*'noacd'* -'noai' options.jax /*'noai'* -'noakm' options.jax /*'noakm'* -'noallowrevins' options.jax /*'noallowrevins'* -'noaltkeymap' options.jax /*'noaltkeymap'* -'noanti' options.jax /*'noanti'* -'noantialias' options.jax /*'noantialias'* -'noar' options.jax /*'noar'* -'noarab' options.jax /*'noarab'* -'noarabic' options.jax /*'noarabic'* -'noarabicshape' options.jax /*'noarabicshape'* -'noari' options.jax /*'noari'* -'noarshape' options.jax /*'noarshape'* -'noautochdir' options.jax /*'noautochdir'* -'noautoindent' options.jax /*'noautoindent'* -'noautoread' options.jax /*'noautoread'* -'noautowrite' options.jax /*'noautowrite'* -'noautowriteall' options.jax /*'noautowriteall'* -'noaw' options.jax /*'noaw'* -'noawa' options.jax /*'noawa'* -'nobackup' options.jax /*'nobackup'* -'noballooneval' options.jax /*'noballooneval'* -'nobeval' options.jax /*'nobeval'* -'nobin' options.jax /*'nobin'* -'nobinary' options.jax /*'nobinary'* -'nobiosk' options.jax /*'nobiosk'* -'nobioskey' options.jax /*'nobioskey'* -'nobk' options.jax /*'nobk'* -'nobl' options.jax /*'nobl'* -'nobomb' options.jax /*'nobomb'* -'nobuflisted' options.jax /*'nobuflisted'* -'nocf' options.jax /*'nocf'* -'noci' options.jax /*'noci'* -'nocin' options.jax /*'nocin'* -'nocindent' options.jax /*'nocindent'* -'nocompatible' options.jax /*'nocompatible'* -'noconfirm' options.jax /*'noconfirm'* -'noconsk' options.jax /*'noconsk'* -'noconskey' options.jax /*'noconskey'* -'nocopyindent' options.jax /*'nocopyindent'* -'nocp' options.jax /*'nocp'* -'nocrb' options.jax /*'nocrb'* -'nocscopetag' options.jax /*'nocscopetag'* -'nocscopeverbose' options.jax /*'nocscopeverbose'* -'nocst' options.jax /*'nocst'* -'nocsverb' options.jax /*'nocsverb'* -'nocuc' options.jax /*'nocuc'* -'nocul' options.jax /*'nocul'* -'nocursorbind' options.jax /*'nocursorbind'* -'nocursorcolumn' options.jax /*'nocursorcolumn'* -'nocursorline' options.jax /*'nocursorline'* -'nodeco' options.jax /*'nodeco'* -'nodelcombine' options.jax /*'nodelcombine'* -'nodg' options.jax /*'nodg'* -'nodiff' options.jax /*'nodiff'* -'nodigraph' options.jax /*'nodigraph'* -'noea' options.jax /*'noea'* -'noeb' options.jax /*'noeb'* -'noed' options.jax /*'noed'* -'noedcompatible' options.jax /*'noedcompatible'* -'noek' options.jax /*'noek'* -'noendofline' options.jax /*'noendofline'* -'noeol' options.jax /*'noeol'* -'noequalalways' options.jax /*'noequalalways'* -'noerrorbells' options.jax /*'noerrorbells'* -'noesckeys' options.jax /*'noesckeys'* -'noet' options.jax /*'noet'* -'noex' options.jax /*'noex'* -'noexpandtab' options.jax /*'noexpandtab'* -'noexrc' options.jax /*'noexrc'* -'nofen' options.jax /*'nofen'* -'nofk' options.jax /*'nofk'* -'nofkmap' options.jax /*'nofkmap'* -'nofoldenable' options.jax /*'nofoldenable'* -'nogd' options.jax /*'nogd'* -'nogdefault' options.jax /*'nogdefault'* -'noguipty' options.jax /*'noguipty'* -'nohid' options.jax /*'nohid'* -'nohidden' options.jax /*'nohidden'* -'nohk' options.jax /*'nohk'* -'nohkmap' options.jax /*'nohkmap'* -'nohkmapp' options.jax /*'nohkmapp'* -'nohkp' options.jax /*'nohkp'* -'nohls' options.jax /*'nohls'* -'nohlsearch' options.jax /*'nohlsearch'* -'noic' options.jax /*'noic'* -'noicon' options.jax /*'noicon'* -'noignorecase' options.jax /*'noignorecase'* -'noim' options.jax /*'noim'* -'noimc' options.jax /*'noimc'* -'noimcmdline' options.jax /*'noimcmdline'* -'noimd' options.jax /*'noimd'* -'noimdisable' options.jax /*'noimdisable'* -'noincsearch' options.jax /*'noincsearch'* -'noinf' options.jax /*'noinf'* -'noinfercase' options.jax /*'noinfercase'* -'noinsertmode' options.jax /*'noinsertmode'* -'nois' options.jax /*'nois'* -'nojoinspaces' options.jax /*'nojoinspaces'* -'nojs' options.jax /*'nojs'* -'nolazyredraw' options.jax /*'nolazyredraw'* -'nolbr' options.jax /*'nolbr'* -'nolinebreak' options.jax /*'nolinebreak'* -'nolisp' options.jax /*'nolisp'* -'nolist' options.jax /*'nolist'* -'noloadplugins' options.jax /*'noloadplugins'* -'nolpl' options.jax /*'nolpl'* -'nolz' options.jax /*'nolz'* -'noma' options.jax /*'noma'* -'nomacatsui' options.jax /*'nomacatsui'* -'nomagic' options.jax /*'nomagic'* -'nomh' options.jax /*'nomh'* -'noml' options.jax /*'noml'* -'nomod' options.jax /*'nomod'* -'nomodeline' options.jax /*'nomodeline'* -'nomodifiable' options.jax /*'nomodifiable'* -'nomodified' options.jax /*'nomodified'* -'nomore' options.jax /*'nomore'* -'nomousef' options.jax /*'nomousef'* -'nomousefocus' options.jax /*'nomousefocus'* -'nomousehide' options.jax /*'nomousehide'* -'nonu' options.jax /*'nonu'* -'nonumber' options.jax /*'nonumber'* -'noodev' options.jax /*'noodev'* -'noopendevice' options.jax /*'noopendevice'* -'nopaste' options.jax /*'nopaste'* -'nopi' options.jax /*'nopi'* -'nopreserveindent' options.jax /*'nopreserveindent'* -'nopreviewwindow' options.jax /*'nopreviewwindow'* -'noprompt' options.jax /*'noprompt'* -'nopvw' options.jax /*'nopvw'* -'noreadonly' options.jax /*'noreadonly'* -'norelativenumber' options.jax /*'norelativenumber'* -'noremap' options.jax /*'noremap'* -'norestorescreen' options.jax /*'norestorescreen'* -'norevins' options.jax /*'norevins'* -'nori' options.jax /*'nori'* -'norightleft' options.jax /*'norightleft'* -'norl' options.jax /*'norl'* -'nornu' options.jax /*'nornu'* -'noro' options.jax /*'noro'* -'nors' options.jax /*'nors'* -'noru' options.jax /*'noru'* -'noruler' options.jax /*'noruler'* -'nosb' options.jax /*'nosb'* -'nosc' options.jax /*'nosc'* -'noscb' options.jax /*'noscb'* -'noscrollbind' options.jax /*'noscrollbind'* -'noscs' options.jax /*'noscs'* -'nosecure' options.jax /*'nosecure'* -'nosft' options.jax /*'nosft'* -'noshellslash' options.jax /*'noshellslash'* -'noshelltemp' options.jax /*'noshelltemp'* -'noshiftround' options.jax /*'noshiftround'* -'noshortname' options.jax /*'noshortname'* -'noshowcmd' options.jax /*'noshowcmd'* -'noshowfulltag' options.jax /*'noshowfulltag'* -'noshowmatch' options.jax /*'noshowmatch'* -'noshowmode' options.jax /*'noshowmode'* -'nosi' options.jax /*'nosi'* -'nosm' options.jax /*'nosm'* -'nosmartcase' options.jax /*'nosmartcase'* -'nosmartindent' options.jax /*'nosmartindent'* -'nosmarttab' options.jax /*'nosmarttab'* -'nosmd' options.jax /*'nosmd'* -'nosn' options.jax /*'nosn'* -'nosol' options.jax /*'nosol'* -'nospell' options.jax /*'nospell'* -'nosplitbelow' options.jax /*'nosplitbelow'* -'nosplitright' options.jax /*'nosplitright'* -'nospr' options.jax /*'nospr'* -'nosr' options.jax /*'nosr'* -'nossl' options.jax /*'nossl'* -'nosta' options.jax /*'nosta'* -'nostartofline' options.jax /*'nostartofline'* -'nostmp' options.jax /*'nostmp'* -'noswapfile' options.jax /*'noswapfile'* -'noswf' options.jax /*'noswf'* -'nota' options.jax /*'nota'* -'notagbsearch' options.jax /*'notagbsearch'* -'notagrelative' options.jax /*'notagrelative'* -'notagstack' options.jax /*'notagstack'* -'notbi' options.jax /*'notbi'* -'notbidi' options.jax /*'notbidi'* -'notbs' options.jax /*'notbs'* -'notermbidi' options.jax /*'notermbidi'* -'noterse' options.jax /*'noterse'* -'notextauto' options.jax /*'notextauto'* -'notextmode' options.jax /*'notextmode'* -'notf' options.jax /*'notf'* -'notgst' options.jax /*'notgst'* -'notildeop' options.jax /*'notildeop'* -'notimeout' options.jax /*'notimeout'* -'notitle' options.jax /*'notitle'* -'noto' options.jax /*'noto'* -'notop' options.jax /*'notop'* -'notr' options.jax /*'notr'* -'nottimeout' options.jax /*'nottimeout'* -'nottybuiltin' options.jax /*'nottybuiltin'* -'nottyfast' options.jax /*'nottyfast'* -'notx' options.jax /*'notx'* -'novb' options.jax /*'novb'* -'novice' vi_diff.jax /*'novice'* -'novisualbell' options.jax /*'novisualbell'* -'nowa' options.jax /*'nowa'* -'nowarn' options.jax /*'nowarn'* -'nowb' options.jax /*'nowb'* -'noweirdinvert' options.jax /*'noweirdinvert'* -'nowfh' options.jax /*'nowfh'* -'nowfw' options.jax /*'nowfw'* -'nowic' options.jax /*'nowic'* -'nowildignorecase' options.jax /*'nowildignorecase'* -'nowildmenu' options.jax /*'nowildmenu'* -'nowinfixheight' options.jax /*'nowinfixheight'* -'nowinfixwidth' options.jax /*'nowinfixwidth'* -'nowiv' options.jax /*'nowiv'* -'nowmnu' options.jax /*'nowmnu'* -'nowrap' options.jax /*'nowrap'* -'nowrapscan' options.jax /*'nowrapscan'* -'nowrite' options.jax /*'nowrite'* -'nowriteany' options.jax /*'nowriteany'* -'nowritebackup' options.jax /*'nowritebackup'* -'nows' options.jax /*'nows'* -'nrformats' options.jax /*'nrformats'* -'nu' options.jax /*'nu'* -'number' options.jax /*'number'* -'numberwidth' options.jax /*'numberwidth'* -'nuw' options.jax /*'nuw'* -'odev' options.jax /*'odev'* -'oft' options.jax /*'oft'* -'ofu' options.jax /*'ofu'* -'omnifunc' options.jax /*'omnifunc'* -'op' vi_diff.jax /*'op'* -'open' vi_diff.jax /*'open'* -'opendevice' options.jax /*'opendevice'* -'operatorfunc' options.jax /*'operatorfunc'* -'opfunc' options.jax /*'opfunc'* -'optimize' vi_diff.jax /*'optimize'* -'option' intro.jax /*'option'* -'osfiletype' options.jax /*'osfiletype'* -'pa' options.jax /*'pa'* -'para' options.jax /*'para'* -'paragraphs' options.jax /*'paragraphs'* -'paste' options.jax /*'paste'* -'pastetoggle' options.jax /*'pastetoggle'* -'patchexpr' options.jax /*'patchexpr'* -'patchmode' options.jax /*'patchmode'* -'path' options.jax /*'path'* -'pdev' options.jax /*'pdev'* -'penc' options.jax /*'penc'* -'pex' options.jax /*'pex'* -'pexpr' options.jax /*'pexpr'* -'pfn' options.jax /*'pfn'* -'ph' options.jax /*'ph'* -'pheader' options.jax /*'pheader'* -'pi' options.jax /*'pi'* -'pm' options.jax /*'pm'* -'pmbcs' options.jax /*'pmbcs'* -'pmbfn' options.jax /*'pmbfn'* -'popt' options.jax /*'popt'* -'preserveindent' options.jax /*'preserveindent'* -'previewheight' options.jax /*'previewheight'* -'previewwindow' options.jax /*'previewwindow'* -'printdevice' options.jax /*'printdevice'* -'printencoding' options.jax /*'printencoding'* -'printexpr' options.jax /*'printexpr'* -'printfont' options.jax /*'printfont'* -'printheader' options.jax /*'printheader'* -'printmbcharset' options.jax /*'printmbcharset'* -'printmbfont' options.jax /*'printmbfont'* -'printoptions' options.jax /*'printoptions'* -'prompt' options.jax /*'prompt'* -'pt' options.jax /*'pt'* -'pumheight' options.jax /*'pumheight'* -'pvh' options.jax /*'pvh'* -'pvw' options.jax /*'pvw'* -'qe' options.jax /*'qe'* -'quote motion.jax /*'quote* -'quoteescape' options.jax /*'quoteescape'* -'rdt' options.jax /*'rdt'* -'readonly' options.jax /*'readonly'* -'redraw' vi_diff.jax /*'redraw'* -'redrawtime' options.jax /*'redrawtime'* -'relativenumber' options.jax /*'relativenumber'* -'remap' options.jax /*'remap'* -'report' options.jax /*'report'* -'restorescreen' options.jax /*'restorescreen'* -'revins' options.jax /*'revins'* -'ri' options.jax /*'ri'* -'rightleft' options.jax /*'rightleft'* -'rightleftcmd' options.jax /*'rightleftcmd'* -'rl' options.jax /*'rl'* -'rlc' options.jax /*'rlc'* -'rnu' options.jax /*'rnu'* -'ro' options.jax /*'ro'* -'rs' options.jax /*'rs'* -'rtp' options.jax /*'rtp'* -'ru' options.jax /*'ru'* -'ruf' options.jax /*'ruf'* -'ruler' options.jax /*'ruler'* -'rulerformat' options.jax /*'rulerformat'* -'runtimepath' options.jax /*'runtimepath'* -'sb' options.jax /*'sb'* -'sbo' options.jax /*'sbo'* -'sbr' options.jax /*'sbr'* -'sc' options.jax /*'sc'* -'scb' options.jax /*'scb'* -'scr' options.jax /*'scr'* -'scroll' options.jax /*'scroll'* -'scrollbind' options.jax /*'scrollbind'* -'scrolljump' options.jax /*'scrolljump'* -'scrolloff' options.jax /*'scrolloff'* -'scrollopt' options.jax /*'scrollopt'* -'scs' options.jax /*'scs'* -'sect' options.jax /*'sect'* -'sections' options.jax /*'sections'* -'secure' options.jax /*'secure'* -'sel' options.jax /*'sel'* -'selection' options.jax /*'selection'* -'selectmode' options.jax /*'selectmode'* -'sessionoptions' options.jax /*'sessionoptions'* -'sft' options.jax /*'sft'* -'sh' options.jax /*'sh'* -'shcf' options.jax /*'shcf'* -'shell' options.jax /*'shell'* -'shellcmdflag' options.jax /*'shellcmdflag'* -'shellpipe' options.jax /*'shellpipe'* -'shellquote' options.jax /*'shellquote'* -'shellredir' options.jax /*'shellredir'* -'shellslash' options.jax /*'shellslash'* -'shelltemp' options.jax /*'shelltemp'* -'shelltype' options.jax /*'shelltype'* -'shellxquote' options.jax /*'shellxquote'* -'shiftround' options.jax /*'shiftround'* -'shiftwidth' options.jax /*'shiftwidth'* -'shm' options.jax /*'shm'* -'shortmess' options.jax /*'shortmess'* -'shortname' options.jax /*'shortname'* -'showbreak' options.jax /*'showbreak'* -'showcmd' options.jax /*'showcmd'* -'showfulltag' options.jax /*'showfulltag'* -'showmatch' options.jax /*'showmatch'* -'showmode' options.jax /*'showmode'* -'showtabline' options.jax /*'showtabline'* -'shq' options.jax /*'shq'* -'si' options.jax /*'si'* -'sidescroll' options.jax /*'sidescroll'* -'sidescrolloff' options.jax /*'sidescrolloff'* -'siso' options.jax /*'siso'* -'sj' options.jax /*'sj'* -'slm' options.jax /*'slm'* -'slow' vi_diff.jax /*'slow'* -'slowopen' vi_diff.jax /*'slowopen'* -'sm' options.jax /*'sm'* -'smartcase' options.jax /*'smartcase'* -'smartindent' options.jax /*'smartindent'* -'smarttab' options.jax /*'smarttab'* -'smc' options.jax /*'smc'* -'smd' options.jax /*'smd'* -'sn' options.jax /*'sn'* -'so' options.jax /*'so'* -'softtabstop' options.jax /*'softtabstop'* -'sol' options.jax /*'sol'* -'sourceany' vi_diff.jax /*'sourceany'* -'sp' options.jax /*'sp'* -'spc' options.jax /*'spc'* -'spell' options.jax /*'spell'* -'spellcapcheck' options.jax /*'spellcapcheck'* -'spellfile' options.jax /*'spellfile'* -'spelllang' options.jax /*'spelllang'* -'spellsuggest' options.jax /*'spellsuggest'* -'spf' options.jax /*'spf'* -'spl' options.jax /*'spl'* -'splitbelow' options.jax /*'splitbelow'* -'splitright' options.jax /*'splitright'* -'spr' options.jax /*'spr'* -'sps' options.jax /*'sps'* -'sr' options.jax /*'sr'* -'srr' options.jax /*'srr'* -'ss' options.jax /*'ss'* -'ssl' options.jax /*'ssl'* -'ssop' options.jax /*'ssop'* -'st' options.jax /*'st'* -'sta' options.jax /*'sta'* -'stal' options.jax /*'stal'* -'startofline' options.jax /*'startofline'* -'statusline' options.jax /*'statusline'* -'stl' options.jax /*'stl'* -'stmp' options.jax /*'stmp'* -'sts' options.jax /*'sts'* -'su' options.jax /*'su'* -'sua' options.jax /*'sua'* -'suffixes' options.jax /*'suffixes'* -'suffixesadd' options.jax /*'suffixesadd'* -'sw' options.jax /*'sw'* -'swapfile' options.jax /*'swapfile'* -'swapsync' options.jax /*'swapsync'* -'swb' options.jax /*'swb'* -'swf' options.jax /*'swf'* -'switchbuf' options.jax /*'switchbuf'* -'sws' options.jax /*'sws'* -'sxq' options.jax /*'sxq'* -'syn' options.jax /*'syn'* -'synmaxcol' options.jax /*'synmaxcol'* -'syntax' options.jax /*'syntax'* -'t_#2' term.jax /*'t_#2'* -'t_#4' term.jax /*'t_#4'* -'t_%1' term.jax /*'t_%1'* -'t_%i' term.jax /*'t_%i'* -'t_&8' term.jax /*'t_&8'* -'t_@7' term.jax /*'t_@7'* -'t_AB' term.jax /*'t_AB'* -'t_AF' term.jax /*'t_AF'* -'t_AL' term.jax /*'t_AL'* -'t_CS' term.jax /*'t_CS'* -'t_CV' term.jax /*'t_CV'* -'t_Ce' term.jax /*'t_Ce'* -'t_Co' term.jax /*'t_Co'* -'t_Cs' term.jax /*'t_Cs'* -'t_DL' term.jax /*'t_DL'* -'t_EI' term.jax /*'t_EI'* -'t_F1' term.jax /*'t_F1'* -'t_F2' term.jax /*'t_F2'* -'t_F3' term.jax /*'t_F3'* -'t_F4' term.jax /*'t_F4'* -'t_F5' term.jax /*'t_F5'* -'t_F6' term.jax /*'t_F6'* -'t_F7' term.jax /*'t_F7'* -'t_F8' term.jax /*'t_F8'* -'t_F9' term.jax /*'t_F9'* -'t_IE' term.jax /*'t_IE'* -'t_IS' term.jax /*'t_IS'* -'t_K1' term.jax /*'t_K1'* -'t_K3' term.jax /*'t_K3'* -'t_K4' term.jax /*'t_K4'* -'t_K5' term.jax /*'t_K5'* -'t_K6' term.jax /*'t_K6'* -'t_K7' term.jax /*'t_K7'* -'t_K8' term.jax /*'t_K8'* -'t_K9' term.jax /*'t_K9'* -'t_KA' term.jax /*'t_KA'* -'t_KB' term.jax /*'t_KB'* -'t_KC' term.jax /*'t_KC'* -'t_KD' term.jax /*'t_KD'* -'t_KE' term.jax /*'t_KE'* -'t_KF' term.jax /*'t_KF'* -'t_KG' term.jax /*'t_KG'* -'t_KH' term.jax /*'t_KH'* -'t_KI' term.jax /*'t_KI'* -'t_KJ' term.jax /*'t_KJ'* -'t_KK' term.jax /*'t_KK'* -'t_KL' term.jax /*'t_KL'* -'t_RI' term.jax /*'t_RI'* -'t_RV' term.jax /*'t_RV'* -'t_SI' term.jax /*'t_SI'* -'t_Sb' term.jax /*'t_Sb'* -'t_Sf' term.jax /*'t_Sf'* -'t_WP' term.jax /*'t_WP'* -'t_WS' term.jax /*'t_WS'* -'t_ZH' term.jax /*'t_ZH'* -'t_ZR' term.jax /*'t_ZR'* -'t_al' term.jax /*'t_al'* -'t_bc' term.jax /*'t_bc'* -'t_cd' term.jax /*'t_cd'* -'t_ce' term.jax /*'t_ce'* -'t_cl' term.jax /*'t_cl'* -'t_cm' term.jax /*'t_cm'* -'t_cs' term.jax /*'t_cs'* -'t_da' term.jax /*'t_da'* -'t_db' term.jax /*'t_db'* -'t_dl' term.jax /*'t_dl'* -'t_fs' term.jax /*'t_fs'* -'t_k1' term.jax /*'t_k1'* -'t_k2' term.jax /*'t_k2'* -'t_k3' term.jax /*'t_k3'* -'t_k4' term.jax /*'t_k4'* -'t_k5' term.jax /*'t_k5'* -'t_k6' term.jax /*'t_k6'* -'t_k7' term.jax /*'t_k7'* -'t_k8' term.jax /*'t_k8'* -'t_k9' term.jax /*'t_k9'* -'t_k;' term.jax /*'t_k;'* -'t_kB' term.jax /*'t_kB'* -'t_kD' term.jax /*'t_kD'* -'t_kI' term.jax /*'t_kI'* -'t_kN' term.jax /*'t_kN'* -'t_kP' term.jax /*'t_kP'* -'t_kb' term.jax /*'t_kb'* -'t_kd' term.jax /*'t_kd'* -'t_ke' term.jax /*'t_ke'* -'t_kh' term.jax /*'t_kh'* -'t_kl' term.jax /*'t_kl'* -'t_kr' term.jax /*'t_kr'* -'t_ks' term.jax /*'t_ks'* -'t_ku' term.jax /*'t_ku'* -'t_le' term.jax /*'t_le'* -'t_mb' term.jax /*'t_mb'* -'t_md' term.jax /*'t_md'* -'t_me' term.jax /*'t_me'* -'t_mr' term.jax /*'t_mr'* -'t_ms' term.jax /*'t_ms'* -'t_nd' term.jax /*'t_nd'* -'t_op' term.jax /*'t_op'* -'t_se' term.jax /*'t_se'* -'t_so' term.jax /*'t_so'* -'t_sr' term.jax /*'t_sr'* -'t_star7' term.jax /*'t_star7'* -'t_te' term.jax /*'t_te'* -'t_ti' term.jax /*'t_ti'* -'t_ts' term.jax /*'t_ts'* -'t_ue' term.jax /*'t_ue'* -'t_us' term.jax /*'t_us'* -'t_ut' term.jax /*'t_ut'* -'t_vb' term.jax /*'t_vb'* -'t_ve' term.jax /*'t_ve'* -'t_vi' term.jax /*'t_vi'* -'t_vs' term.jax /*'t_vs'* -'t_xs' term.jax /*'t_xs'* -'ta' options.jax /*'ta'* -'tabline' options.jax /*'tabline'* -'tabpagemax' options.jax /*'tabpagemax'* -'tabstop' options.jax /*'tabstop'* -'tag' options.jax /*'tag'* -'tagbsearch' options.jax /*'tagbsearch'* -'taglength' options.jax /*'taglength'* -'tagrelative' options.jax /*'tagrelative'* -'tags' options.jax /*'tags'* -'tagstack' options.jax /*'tagstack'* -'tal' options.jax /*'tal'* -'tb' options.jax /*'tb'* -'tbi' options.jax /*'tbi'* -'tbidi' options.jax /*'tbidi'* -'tbis' options.jax /*'tbis'* -'tbs' options.jax /*'tbs'* -'tenc' options.jax /*'tenc'* -'term' options.jax /*'term'* -'termbidi' options.jax /*'termbidi'* -'termencoding' options.jax /*'termencoding'* -'terse' options.jax /*'terse'* -'textauto' options.jax /*'textauto'* -'textmode' options.jax /*'textmode'* -'textwidth' options.jax /*'textwidth'* -'tf' options.jax /*'tf'* -'tgst' options.jax /*'tgst'* -'thesaurus' options.jax /*'thesaurus'* -'tildeop' options.jax /*'tildeop'* -'timeout' options.jax /*'timeout'* -'timeoutlen' options.jax /*'timeoutlen'* -'title' options.jax /*'title'* -'titlelen' options.jax /*'titlelen'* -'titleold' options.jax /*'titleold'* -'titlestring' options.jax /*'titlestring'* -'tl' options.jax /*'tl'* -'tm' options.jax /*'tm'* -'to' options.jax /*'to'* -'toolbar' options.jax /*'toolbar'* -'toolbariconsize' options.jax /*'toolbariconsize'* -'top' options.jax /*'top'* -'tpm' options.jax /*'tpm'* -'tr' options.jax /*'tr'* -'ts' options.jax /*'ts'* -'tsl' options.jax /*'tsl'* -'tsr' options.jax /*'tsr'* -'ttimeout' options.jax /*'ttimeout'* -'ttimeoutlen' options.jax /*'ttimeoutlen'* -'ttm' options.jax /*'ttm'* -'tty' options.jax /*'tty'* -'ttybuiltin' options.jax /*'ttybuiltin'* -'ttyfast' options.jax /*'ttyfast'* -'ttym' options.jax /*'ttym'* -'ttymouse' options.jax /*'ttymouse'* -'ttyscroll' options.jax /*'ttyscroll'* -'ttytype' options.jax /*'ttytype'* -'tw' options.jax /*'tw'* -'tx' options.jax /*'tx'* -'uc' options.jax /*'uc'* -'udf' options.jax /*'udf'* -'udir' options.jax /*'udir'* -'ul' options.jax /*'ul'* -'undodir' options.jax /*'undodir'* -'undofile' options.jax /*'undofile'* -'undolevels' options.jax /*'undolevels'* -'undoreload' options.jax /*'undoreload'* -'updatecount' options.jax /*'updatecount'* -'updatetime' options.jax /*'updatetime'* -'ur' options.jax /*'ur'* -'ut' options.jax /*'ut'* -'vb' options.jax /*'vb'* -'vbs' options.jax /*'vbs'* -'vdir' options.jax /*'vdir'* -'ve' options.jax /*'ve'* -'verbose' options.jax /*'verbose'* -'verbosefile' options.jax /*'verbosefile'* -'vfile' options.jax /*'vfile'* -'vi' options.jax /*'vi'* -'viewdir' options.jax /*'viewdir'* -'viewoptions' options.jax /*'viewoptions'* -'viminfo' options.jax /*'viminfo'* -'virtualedit' options.jax /*'virtualedit'* -'visualbell' options.jax /*'visualbell'* -'vop' options.jax /*'vop'* -'w1200' vi_diff.jax /*'w1200'* -'w300' vi_diff.jax /*'w300'* -'w9600' vi_diff.jax /*'w9600'* -'wa' options.jax /*'wa'* -'wak' options.jax /*'wak'* -'warn' options.jax /*'warn'* -'wb' options.jax /*'wb'* -'wc' options.jax /*'wc'* -'wcm' options.jax /*'wcm'* -'wd' options.jax /*'wd'* -'weirdinvert' options.jax /*'weirdinvert'* -'wfh' options.jax /*'wfh'* -'wfw' options.jax /*'wfw'* -'wh' options.jax /*'wh'* -'whichwrap' options.jax /*'whichwrap'* -'wi' options.jax /*'wi'* -'wic' options.jax /*'wic'* -'wig' options.jax /*'wig'* -'wildchar' options.jax /*'wildchar'* -'wildcharm' options.jax /*'wildcharm'* -'wildignore' options.jax /*'wildignore'* -'wildignorecase' options.jax /*'wildignorecase'* -'wildmenu' options.jax /*'wildmenu'* -'wildmode' options.jax /*'wildmode'* -'wildoptions' options.jax /*'wildoptions'* -'wim' options.jax /*'wim'* -'winaltkeys' options.jax /*'winaltkeys'* -'window' options.jax /*'window'* -'winfixheight' options.jax /*'winfixheight'* -'winfixwidth' options.jax /*'winfixwidth'* -'winheight' options.jax /*'winheight'* -'winminheight' options.jax /*'winminheight'* -'winminwidth' options.jax /*'winminwidth'* -'winwidth' options.jax /*'winwidth'* -'wiv' options.jax /*'wiv'* -'wiw' options.jax /*'wiw'* -'wm' options.jax /*'wm'* -'wmh' options.jax /*'wmh'* -'wmnu' options.jax /*'wmnu'* -'wmw' options.jax /*'wmw'* -'wop' options.jax /*'wop'* -'wrap' options.jax /*'wrap'* -'wrapmargin' options.jax /*'wrapmargin'* -'wrapscan' options.jax /*'wrapscan'* -'write' options.jax /*'write'* -'writeany' options.jax /*'writeany'* -'writebackup' options.jax /*'writebackup'* -'writedelay' options.jax /*'writedelay'* -'ws' options.jax /*'ws'* -'ww' options.jax /*'ww'* -'{ motion.jax /*'{* -'} motion.jax /*'}* -( motion.jax /*(* -) motion.jax /*)* -+ motion.jax /*+* -++bad editing.jax /*++bad* -++bin editing.jax /*++bin* -++builtin_terms various.jax /*++builtin_terms* -++edit editing.jax /*++edit* -++enc editing.jax /*++enc* -++ff editing.jax /*++ff* -++nobin editing.jax /*++nobin* -++opt editing.jax /*++opt* -+ARP various.jax /*+ARP* -+GUI_Athena various.jax /*+GUI_Athena* -+GUI_GTK various.jax /*+GUI_GTK* -+GUI_Motif various.jax /*+GUI_Motif* -+GUI_Photon various.jax /*+GUI_Photon* -+GUI_neXtaw various.jax /*+GUI_neXtaw* -+X11 various.jax /*+X11* -+arabic various.jax /*+arabic* -+autocmd various.jax /*+autocmd* -+balloon_eval various.jax /*+balloon_eval* -+browse various.jax /*+browse* -+builtin_terms various.jax /*+builtin_terms* -+byte_offset various.jax /*+byte_offset* -+cindent various.jax /*+cindent* -+clientserver various.jax /*+clientserver* -+clipboard various.jax /*+clipboard* -+cmd editing.jax /*+cmd* -+cmdline_compl various.jax /*+cmdline_compl* -+cmdline_hist various.jax /*+cmdline_hist* -+cmdline_info various.jax /*+cmdline_info* -+comments various.jax /*+comments* -+conceal various.jax /*+conceal* -+cryptv various.jax /*+cryptv* -+cscope various.jax /*+cscope* -+cursorbind various.jax /*+cursorbind* -+cursorshape various.jax /*+cursorshape* -+debug various.jax /*+debug* -+dialog_con various.jax /*+dialog_con* -+dialog_con_gui various.jax /*+dialog_con_gui* -+dialog_gui various.jax /*+dialog_gui* -+diff various.jax /*+diff* -+digraphs various.jax /*+digraphs* -+dnd various.jax /*+dnd* -+emacs_tags various.jax /*+emacs_tags* -+eval various.jax /*+eval* -+ex_extra various.jax /*+ex_extra* -+extra_search various.jax /*+extra_search* -+farsi various.jax /*+farsi* -+feature-list various.jax /*+feature-list* -+file_in_path various.jax /*+file_in_path* -+find_in_path various.jax /*+find_in_path* -+float various.jax /*+float* -+folding various.jax /*+folding* -+footer various.jax /*+footer* -+fork various.jax /*+fork* -+gettext various.jax /*+gettext* -+hangul_input various.jax /*+hangul_input* -+iconv various.jax /*+iconv* -+iconv/dyn various.jax /*+iconv\/dyn* -+insert_expand various.jax /*+insert_expand* -+jumplist various.jax /*+jumplist* -+keymap various.jax /*+keymap* -+langmap various.jax /*+langmap* -+libcall various.jax /*+libcall* -+linebreak various.jax /*+linebreak* -+lispindent various.jax /*+lispindent* -+listcmds various.jax /*+listcmds* -+localmap various.jax /*+localmap* -+lua various.jax /*+lua* -+lua/dyn various.jax /*+lua\/dyn* -+menu various.jax /*+menu* -+mksession various.jax /*+mksession* -+modify_fname various.jax /*+modify_fname* -+mouse various.jax /*+mouse* -+mouse_dec various.jax /*+mouse_dec* -+mouse_gpm various.jax /*+mouse_gpm* -+mouse_netterm various.jax /*+mouse_netterm* -+mouse_pterm various.jax /*+mouse_pterm* -+mouse_sysmouse various.jax /*+mouse_sysmouse* -+mouse_xterm various.jax /*+mouse_xterm* -+mouseshape various.jax /*+mouseshape* -+multi_byte various.jax /*+multi_byte* -+multi_byte_ime various.jax /*+multi_byte_ime* -+multi_lang various.jax /*+multi_lang* -+mzscheme various.jax /*+mzscheme* -+mzscheme/dyn various.jax /*+mzscheme\/dyn* -+netbeans_intg various.jax /*+netbeans_intg* -+ole various.jax /*+ole* -+path_extra various.jax /*+path_extra* -+perl various.jax /*+perl* -+perl/dyn various.jax /*+perl\/dyn* -+persistent_undo various.jax /*+persistent_undo* -+postscript various.jax /*+postscript* -+printer various.jax /*+printer* -+profile various.jax /*+profile* -+python various.jax /*+python* -+python/dyn various.jax /*+python\/dyn* -+python3 various.jax /*+python3* -+python3/dyn various.jax /*+python3\/dyn* -+quickfix various.jax /*+quickfix* -+reltime various.jax /*+reltime* -+rightleft various.jax /*+rightleft* -+ruby various.jax /*+ruby* -+ruby/dyn various.jax /*+ruby\/dyn* -+scrollbind various.jax /*+scrollbind* -+signs various.jax /*+signs* -+smartindent various.jax /*+smartindent* -+sniff various.jax /*+sniff* -+startuptime various.jax /*+startuptime* -+statusline various.jax /*+statusline* -+sun_workshop various.jax /*+sun_workshop* -+syntax various.jax /*+syntax* -+system() various.jax /*+system()* -+tag_any_white various.jax /*+tag_any_white* -+tag_binary various.jax /*+tag_binary* -+tag_old_static various.jax /*+tag_old_static* -+tcl various.jax /*+tcl* -+tcl/dyn various.jax /*+tcl\/dyn* -+terminfo various.jax /*+terminfo* -+termresponse various.jax /*+termresponse* -+textobjects various.jax /*+textobjects* -+tgetent various.jax /*+tgetent* -+title various.jax /*+title* -+toolbar various.jax /*+toolbar* -+user_commands various.jax /*+user_commands* -+vertsplit various.jax /*+vertsplit* -+viminfo various.jax /*+viminfo* -+virtualedit various.jax /*+virtualedit* -+visual various.jax /*+visual* -+visualextra various.jax /*+visualextra* -+vreplace various.jax /*+vreplace* -+wildignore various.jax /*+wildignore* -+wildmenu various.jax /*+wildmenu* -+windows various.jax /*+windows* -+writebackup various.jax /*+writebackup* -+xfontset various.jax /*+xfontset* -+xim various.jax /*+xim* -+xsmp various.jax /*+xsmp* -+xsmp_interact various.jax /*+xsmp_interact* -+xterm_clipboard various.jax /*+xterm_clipboard* -+xterm_save various.jax /*+xterm_save* -, motion.jax /*,* -- motion.jax /*-* --+ starting.jax /*-+* --+/ starting.jax /*-+\/* --+c starting.jax /*-+c* --+reverse gui_x11.jax /*-+reverse* --+rv gui_x11.jax /*-+rv* --- starting.jax /*--* ---- starting.jax /*---* ---cmd starting.jax /*--cmd* ---echo-wid starting.jax /*--echo-wid* ---help starting.jax /*--help* ---literal starting.jax /*--literal* ---nofork starting.jax /*--nofork* ---noplugin starting.jax /*--noplugin* ---remote remote.jax /*--remote* ---remote-expr remote.jax /*--remote-expr* ---remote-send remote.jax /*--remote-send* ---remote-silent remote.jax /*--remote-silent* ---remote-tab remote.jax /*--remote-tab* ---remote-tab-silent remote.jax /*--remote-tab-silent* ---remote-tab-wait remote.jax /*--remote-tab-wait* ---remote-tab-wait-silent remote.jax /*--remote-tab-wait-silent* ---remote-wait remote.jax /*--remote-wait* ---remote-wait-silent remote.jax /*--remote-wait-silent* ---role starting.jax /*--role* ---serverlist remote.jax /*--serverlist* ---servername remote.jax /*--servername* ---socketid starting.jax /*--socketid* ---startuptime starting.jax /*--startuptime* ---version starting.jax /*--version* ---windowid starting.jax /*--windowid* --A starting.jax /*-A* --C starting.jax /*-C* --D starting.jax /*-D* --E starting.jax /*-E* --F starting.jax /*-F* --H starting.jax /*-H* --L starting.jax /*-L* --M starting.jax /*-M* --N starting.jax /*-N* --O starting.jax /*-O* --P starting.jax /*-P* --R starting.jax /*-R* --S starting.jax /*-S* --T starting.jax /*-T* --U starting.jax /*-U* --V starting.jax /*-V* --W starting.jax /*-W* --X starting.jax /*-X* --Z starting.jax /*-Z* --b starting.jax /*-b* --background gui_x11.jax /*-background* --bg gui_x11.jax /*-bg* --boldfont gui_x11.jax /*-boldfont* --borderwidth gui_x11.jax /*-borderwidth* --bw gui_x11.jax /*-bw* --c starting.jax /*-c* --d starting.jax /*-d* --dev starting.jax /*-dev* --display gui_x11.jax /*-display* --e starting.jax /*-e* --f starting.jax /*-f* --fg gui_x11.jax /*-fg* --file starting.jax /*-file* --fn gui_x11.jax /*-fn* --font gui_x11.jax /*-font* --foreground gui_x11.jax /*-foreground* --g starting.jax /*-g* --geom gui_x11.jax /*-geom* --geometry gui_x11.jax /*-geometry* --geometry-example gui_x11.jax /*-geometry-example* --gui gui_x11.jax /*-gui* --h starting.jax /*-h* --i starting.jax /*-i* --iconic gui_x11.jax /*-iconic* --italicfont gui_x11.jax /*-italicfont* --l starting.jax /*-l* --m starting.jax /*-m* --menufont gui_x11.jax /*-menufont* --menufontset gui_x11.jax /*-menufontset* --menuheight gui_x11.jax /*-menuheight* --mf gui_x11.jax /*-mf* --mh gui_x11.jax /*-mh* --n starting.jax /*-n* --nb starting.jax /*-nb* --o starting.jax /*-o* --p starting.jax /*-p* --q starting.jax /*-q* --qf starting.jax /*-qf* --r starting.jax /*-r* --register if_ole.jax /*-register* --reverse gui_x11.jax /*-reverse* --rv gui_x11.jax /*-rv* --s starting.jax /*-s* --s-ex starting.jax /*-s-ex* --scrollbarwidth gui_x11.jax /*-scrollbarwidth* --silent if_ole.jax /*-silent* --sw gui_x11.jax /*-sw* --t starting.jax /*-t* --tag starting.jax /*-tag* --u starting.jax /*-u* --ul gui_x11.jax /*-ul* --unregister if_ole.jax /*-unregister* --v starting.jax /*-v* --vim starting.jax /*-vim* --w starting.jax /*-w* --w_nr starting.jax /*-w_nr* --x starting.jax /*-x* --xrm gui_x11.jax /*-xrm* --y starting.jax /*-y* -. repeat.jax /*.* -... eval.jax /*...* -.Xdefaults gui_x11.jax /*.Xdefaults* -.exrc starting.jax /*.exrc* -.gvimrc gui.jax /*.gvimrc* -.vimrc starting.jax /*.vimrc* -/ pattern.jax /*\/* -/$ pattern.jax /*\/$* -/. pattern.jax /*\/.* -//; pattern.jax /*\/\/;* -/<CR> pattern.jax /*\/<CR>* -/[[. pattern.jax /*\/[[.* -/[[= pattern.jax /*\/[[=* -/[\n] pattern.jax /*\/[\\n]* -/[] pattern.jax /*\/[]* -/\ pattern.jax /*\/\\* -/\$ pattern.jax /*\/\\$* -/\%# pattern.jax /*\/\\%#* -/\%$ pattern.jax /*\/\\%$* -/\%'m pattern.jax /*\/\\%'m* -/\%( pattern.jax /*\/\\%(* -/\%(\) pattern.jax /*\/\\%(\\)* -/\%<'m pattern.jax /*\/\\%<'m* -/\%<c pattern.jax /*\/\\%<c* -/\%<l pattern.jax /*\/\\%<l* -/\%<v pattern.jax /*\/\\%<v* -/\%>'m pattern.jax /*\/\\%>'m* -/\%>c pattern.jax /*\/\\%>c* -/\%>l pattern.jax /*\/\\%>l* -/\%>v pattern.jax /*\/\\%>v* -/\%U pattern.jax /*\/\\%U* -/\%V pattern.jax /*\/\\%V* -/\%[] pattern.jax /*\/\\%[]* -/\%^ pattern.jax /*\/\\%^* -/\%c pattern.jax /*\/\\%c* -/\%d pattern.jax /*\/\\%d* -/\%l pattern.jax /*\/\\%l* -/\%o pattern.jax /*\/\\%o* -/\%u pattern.jax /*\/\\%u* -/\%v pattern.jax /*\/\\%v* -/\%x pattern.jax /*\/\\%x* -/\& pattern.jax /*\/\\&* -/\( pattern.jax /*\/\\(* -/\(\) pattern.jax /*\/\\(\\)* -/\) pattern.jax /*\/\\)* -/\+ pattern.jax /*\/\\+* -/\. pattern.jax /*\/\\.* -/\1 pattern.jax /*\/\\1* -/\2 pattern.jax /*\/\\2* -/\3 pattern.jax /*\/\\3* -/\9 pattern.jax /*\/\\9* -/\< pattern.jax /*\/\\<* -/\= pattern.jax /*\/\\=* -/\> pattern.jax /*\/\\>* -/\? pattern.jax /*\/\\?* -/\@! pattern.jax /*\/\\@!* -/\@<! pattern.jax /*\/\\@<!* -/\@<= pattern.jax /*\/\\@<=* -/\@= pattern.jax /*\/\\@=* -/\@> pattern.jax /*\/\\@>* -/\A pattern.jax /*\/\\A* -/\C pattern.jax /*\/\\C* -/\D pattern.jax /*\/\\D* -/\F pattern.jax /*\/\\F* -/\H pattern.jax /*\/\\H* -/\I pattern.jax /*\/\\I* -/\K pattern.jax /*\/\\K* -/\L pattern.jax /*\/\\L* -/\M pattern.jax /*\/\\M* -/\O pattern.jax /*\/\\O* -/\P pattern.jax /*\/\\P* -/\S pattern.jax /*\/\\S* -/\U pattern.jax /*\/\\U* -/\V pattern.jax /*\/\\V* -/\W pattern.jax /*\/\\W* -/\X pattern.jax /*\/\\X* -/\Z pattern.jax /*\/\\Z* -/\[] pattern.jax /*\/\\[]* -/\\ pattern.jax /*\/\\\\* -/\] pattern.jax /*\/\\]* -/\^ pattern.jax /*\/\\^* -/\_ pattern.jax /*\/\\_* -/\_$ pattern.jax /*\/\\_$* -/\_. pattern.jax /*\/\\_.* -/\_A pattern.jax /*\/\\_A* -/\_D pattern.jax /*\/\\_D* -/\_F pattern.jax /*\/\\_F* -/\_H pattern.jax /*\/\\_H* -/\_I pattern.jax /*\/\\_I* -/\_K pattern.jax /*\/\\_K* -/\_L pattern.jax /*\/\\_L* -/\_O pattern.jax /*\/\\_O* -/\_P pattern.jax /*\/\\_P* -/\_S pattern.jax /*\/\\_S* -/\_U pattern.jax /*\/\\_U* -/\_W pattern.jax /*\/\\_W* -/\_X pattern.jax /*\/\\_X* -/\_[] pattern.jax /*\/\\_[]* -/\_^ pattern.jax /*\/\\_^* -/\_a pattern.jax /*\/\\_a* -/\_d pattern.jax /*\/\\_d* -/\_f pattern.jax /*\/\\_f* -/\_h pattern.jax /*\/\\_h* -/\_i pattern.jax /*\/\\_i* -/\_k pattern.jax /*\/\\_k* -/\_l pattern.jax /*\/\\_l* -/\_o pattern.jax /*\/\\_o* -/\_p pattern.jax /*\/\\_p* -/\_s pattern.jax /*\/\\_s* -/\_u pattern.jax /*\/\\_u* -/\_w pattern.jax /*\/\\_w* -/\_x pattern.jax /*\/\\_x* -/\a pattern.jax /*\/\\a* -/\b pattern.jax /*\/\\b* -/\bar pattern.jax /*\/\\bar* -/\c pattern.jax /*\/\\c* -/\d pattern.jax /*\/\\d* -/\e pattern.jax /*\/\\e* -/\f pattern.jax /*\/\\f* -/\h pattern.jax /*\/\\h* -/\i pattern.jax /*\/\\i* -/\k pattern.jax /*\/\\k* -/\l pattern.jax /*\/\\l* -/\m pattern.jax /*\/\\m* -/\n pattern.jax /*\/\\n* -/\o pattern.jax /*\/\\o* -/\p pattern.jax /*\/\\p* -/\r pattern.jax /*\/\\r* -/\s pattern.jax /*\/\\s* -/\star pattern.jax /*\/\\star* -/\t pattern.jax /*\/\\t* -/\u pattern.jax /*\/\\u* -/\v pattern.jax /*\/\\v* -/\w pattern.jax /*\/\\w* -/\x pattern.jax /*\/\\x* -/\z( syntax.jax /*\/\\z(* -/\z(\) syntax.jax /*\/\\z(\\)* -/\z1 syntax.jax /*\/\\z1* -/\z2 syntax.jax /*\/\\z2* -/\z3 syntax.jax /*\/\\z3* -/\z4 syntax.jax /*\/\\z4* -/\z5 syntax.jax /*\/\\z5* -/\z6 syntax.jax /*\/\\z6* -/\z7 syntax.jax /*\/\\z7* -/\z8 syntax.jax /*\/\\z8* -/\z9 syntax.jax /*\/\\z9* -/\ze pattern.jax /*\/\\ze* -/\zs pattern.jax /*\/\\zs* -/\{ pattern.jax /*\/\\{* -/\{- pattern.jax /*\/\\{-* -/\~ pattern.jax /*\/\\~* -/^ pattern.jax /*\/^* -/atom pattern.jax /*\/atom* -/bar pattern.jax /*\/bar* -/branch pattern.jax /*\/branch* -/character-classes pattern.jax /*\/character-classes* -/collection pattern.jax /*\/collection* -/concat pattern.jax /*\/concat* -/dyn various.jax /*\/dyn* -/ignorecase pattern.jax /*\/ignorecase* -/magic pattern.jax /*\/magic* -/multi pattern.jax /*\/multi* -/ordinary-atom pattern.jax /*\/ordinary-atom* -/pattern pattern.jax /*\/pattern* -/piece pattern.jax /*\/piece* -/star pattern.jax /*\/star* -/zero-width pattern.jax /*\/zero-width* -/~ pattern.jax /*\/~* -0 motion.jax /*0* -01.1 usr_01.jax /*01.1* -01.2 usr_01.jax /*01.2* -01.3 usr_01.jax /*01.3* -01.4 usr_01.jax /*01.4* -02.1 usr_02.jax /*02.1* -02.2 usr_02.jax /*02.2* -02.3 usr_02.jax /*02.3* -02.4 usr_02.jax /*02.4* -02.5 usr_02.jax /*02.5* -02.6 usr_02.jax /*02.6* -02.7 usr_02.jax /*02.7* -02.8 usr_02.jax /*02.8* -03.1 usr_03.jax /*03.1* -03.10 usr_03.jax /*03.10* -03.2 usr_03.jax /*03.2* -03.3 usr_03.jax /*03.3* -03.4 usr_03.jax /*03.4* -03.5 usr_03.jax /*03.5* -03.6 usr_03.jax /*03.6* -03.7 usr_03.jax /*03.7* -03.8 usr_03.jax /*03.8* -03.9 usr_03.jax /*03.9* -04.1 usr_04.jax /*04.1* -04.10 usr_04.jax /*04.10* -04.2 usr_04.jax /*04.2* -04.3 usr_04.jax /*04.3* -04.4 usr_04.jax /*04.4* -04.5 usr_04.jax /*04.5* -04.6 usr_04.jax /*04.6* -04.7 usr_04.jax /*04.7* -04.8 usr_04.jax /*04.8* -04.9 usr_04.jax /*04.9* -05.1 usr_05.jax /*05.1* -05.2 usr_05.jax /*05.2* -05.3 usr_05.jax /*05.3* -05.4 usr_05.jax /*05.4* -05.5 usr_05.jax /*05.5* -05.6 usr_05.jax /*05.6* -05.7 usr_05.jax /*05.7* -06.1 usr_06.jax /*06.1* -06.2 usr_06.jax /*06.2* -06.3 usr_06.jax /*06.3* -06.4 usr_06.jax /*06.4* -06.5 usr_06.jax /*06.5* -06.6 usr_06.jax /*06.6* -07.1 usr_07.jax /*07.1* -07.2 usr_07.jax /*07.2* -07.3 usr_07.jax /*07.3* -07.4 usr_07.jax /*07.4* -07.5 usr_07.jax /*07.5* -07.6 usr_07.jax /*07.6* -07.7 usr_07.jax /*07.7* -08.1 usr_08.jax /*08.1* -08.2 usr_08.jax /*08.2* -08.3 usr_08.jax /*08.3* -08.4 usr_08.jax /*08.4* -08.5 usr_08.jax /*08.5* -08.6 usr_08.jax /*08.6* -08.7 usr_08.jax /*08.7* -08.8 usr_08.jax /*08.8* -08.9 usr_08.jax /*08.9* -09.1 usr_09.jax /*09.1* -09.2 usr_09.jax /*09.2* -09.3 usr_09.jax /*09.3* -09.4 usr_09.jax /*09.4* -10.1 usr_10.jax /*10.1* -10.2 usr_10.jax /*10.2* -10.3 usr_10.jax /*10.3* -10.4 usr_10.jax /*10.4* -10.5 usr_10.jax /*10.5* -10.6 usr_10.jax /*10.6* -10.7 usr_10.jax /*10.7* -10.8 usr_10.jax /*10.8* -10.9 usr_10.jax /*10.9* -11.1 usr_11.jax /*11.1* -11.2 usr_11.jax /*11.2* -11.3 usr_11.jax /*11.3* -11.4 usr_11.jax /*11.4* -12.1 usr_12.jax /*12.1* -12.2 usr_12.jax /*12.2* -12.3 usr_12.jax /*12.3* -12.4 usr_12.jax /*12.4* -12.5 usr_12.jax /*12.5* -12.6 usr_12.jax /*12.6* -12.7 usr_12.jax /*12.7* -12.8 usr_12.jax /*12.8* -1gD pattern.jax /*1gD* -1gd pattern.jax /*1gd* -20.1 usr_20.jax /*20.1* -20.2 usr_20.jax /*20.2* -20.3 usr_20.jax /*20.3* -20.4 usr_20.jax /*20.4* -20.5 usr_20.jax /*20.5* -21.1 usr_21.jax /*21.1* -21.2 usr_21.jax /*21.2* -21.3 usr_21.jax /*21.3* -21.4 usr_21.jax /*21.4* -21.5 usr_21.jax /*21.5* -21.6 usr_21.jax /*21.6* -22.1 usr_22.jax /*22.1* -22.2 usr_22.jax /*22.2* -22.3 usr_22.jax /*22.3* -22.4 usr_22.jax /*22.4* -23.1 usr_23.jax /*23.1* -23.2 usr_23.jax /*23.2* -23.3 usr_23.jax /*23.3* -23.4 usr_23.jax /*23.4* -23.5 usr_23.jax /*23.5* -24.1 usr_24.jax /*24.1* -24.10 usr_24.jax /*24.10* -24.2 usr_24.jax /*24.2* -24.3 usr_24.jax /*24.3* -24.4 usr_24.jax /*24.4* -24.5 usr_24.jax /*24.5* -24.6 usr_24.jax /*24.6* -24.7 usr_24.jax /*24.7* -24.8 usr_24.jax /*24.8* -24.9 usr_24.jax /*24.9* -25.1 usr_25.jax /*25.1* -25.2 usr_25.jax /*25.2* -25.3 usr_25.jax /*25.3* -25.4 usr_25.jax /*25.4* -25.5 usr_25.jax /*25.5* -26.1 usr_26.jax /*26.1* -26.2 usr_26.jax /*26.2* -26.3 usr_26.jax /*26.3* -26.4 usr_26.jax /*26.4* -27.1 usr_27.jax /*27.1* -27.2 usr_27.jax /*27.2* -27.3 usr_27.jax /*27.3* -27.4 usr_27.jax /*27.4* -27.5 usr_27.jax /*27.5* -27.6 usr_27.jax /*27.6* -27.7 usr_27.jax /*27.7* -27.8 usr_27.jax /*27.8* -27.9 usr_27.jax /*27.9* -28.1 usr_28.jax /*28.1* -28.10 usr_28.jax /*28.10* -28.2 usr_28.jax /*28.2* -28.3 usr_28.jax /*28.3* -28.4 usr_28.jax /*28.4* -28.5 usr_28.jax /*28.5* -28.6 usr_28.jax /*28.6* -28.7 usr_28.jax /*28.7* -28.8 usr_28.jax /*28.8* -28.9 usr_28.jax /*28.9* -29.1 usr_29.jax /*29.1* -29.2 usr_29.jax /*29.2* -29.3 usr_29.jax /*29.3* -29.4 usr_29.jax /*29.4* -29.5 usr_29.jax /*29.5* -2html.vim syntax.jax /*2html.vim* -30.1 usr_30.jax /*30.1* -30.2 usr_30.jax /*30.2* -30.3 usr_30.jax /*30.3* -30.4 usr_30.jax /*30.4* -30.5 usr_30.jax /*30.5* -30.6 usr_30.jax /*30.6* -31.1 usr_31.jax /*31.1* -31.2 usr_31.jax /*31.2* -31.3 usr_31.jax /*31.3* -31.4 usr_31.jax /*31.4* -31.5 usr_31.jax /*31.5* -32.1 usr_32.jax /*32.1* -32.2 usr_32.jax /*32.2* -32.3 usr_32.jax /*32.3* -32.4 usr_32.jax /*32.4* -40.1 usr_40.jax /*40.1* -40.2 usr_40.jax /*40.2* -40.3 usr_40.jax /*40.3* -41.1 usr_41.jax /*41.1* -41.10 usr_41.jax /*41.10* -41.11 usr_41.jax /*41.11* -41.12 usr_41.jax /*41.12* -41.13 usr_41.jax /*41.13* -41.14 usr_41.jax /*41.14* -41.15 usr_41.jax /*41.15* -41.16 usr_41.jax /*41.16* -41.2 usr_41.jax /*41.2* -41.3 usr_41.jax /*41.3* -41.4 usr_41.jax /*41.4* -41.5 usr_41.jax /*41.5* -41.6 usr_41.jax /*41.6* -41.7 usr_41.jax /*41.7* -41.8 usr_41.jax /*41.8* -41.9 usr_41.jax /*41.9* -42 usr_42.jax /*42* -42.1 usr_42.jax /*42.1* -42.2 usr_42.jax /*42.2* -42.3 usr_42.jax /*42.3* -42.4 usr_42.jax /*42.4* -43.1 usr_43.jax /*43.1* -43.2 usr_43.jax /*43.2* -44.1 usr_44.jax /*44.1* -44.10 usr_44.jax /*44.10* -44.11 usr_44.jax /*44.11* -44.12 usr_44.jax /*44.12* -44.2 usr_44.jax /*44.2* -44.3 usr_44.jax /*44.3* -44.4 usr_44.jax /*44.4* -44.5 usr_44.jax /*44.5* -44.6 usr_44.jax /*44.6* -44.7 usr_44.jax /*44.7* -44.8 usr_44.jax /*44.8* -44.9 usr_44.jax /*44.9* -45.1 usr_45.jax /*45.1* -45.2 usr_45.jax /*45.2* -45.3 usr_45.jax /*45.3* -45.4 usr_45.jax /*45.4* -45.5 usr_45.jax /*45.5* -672 starting.jax /*672* -8g8 various.jax /*8g8* -90.1 usr_90.jax /*90.1* -90.2 usr_90.jax /*90.2* -90.3 usr_90.jax /*90.3* -90.4 usr_90.jax /*90.4* -90.5 usr_90.jax /*90.5* -: cmdline.jax /*:* -:! various.jax /*:!* -:!! various.jax /*:!!* -:!cmd various.jax /*:!cmd* -:!start os_win32.jax /*:!start* -:# various.jax /*:#* -:#! various.jax /*:#!* -:$ cmdline.jax /*:$* -:% cmdline.jax /*:%* -:& change.jax /*:&* -:' cmdline.jax /*:'* -:, cmdline.jax /*:,* -:. cmdline.jax /*:.* -:/ cmdline.jax /*:\/* -:0file editing.jax /*:0file* -:2match pattern.jax /*:2match* -:3match pattern.jax /*:3match* -::. cmdline.jax /*::.* -::8 cmdline.jax /*::8* -::e cmdline.jax /*::e* -::gs cmdline.jax /*::gs* -::h cmdline.jax /*::h* -::p cmdline.jax /*::p* -::r cmdline.jax /*::r* -::s cmdline.jax /*::s* -::t cmdline.jax /*::t* -::~ cmdline.jax /*::~* -:; cmdline.jax /*:;* -:< change.jax /*:<* -:<abuf> cmdline.jax /*:<abuf>* -:<afile> cmdline.jax /*:<afile>* -:<amatch> cmdline.jax /*:<amatch>* -:<cWORD> cmdline.jax /*:<cWORD>* -:<cfile> cmdline.jax /*:<cfile>* -:<cword> cmdline.jax /*:<cword>* -:<sfile> cmdline.jax /*:<sfile>* -:= various.jax /*:=* -:> change.jax /*:>* -:? cmdline.jax /*:?* -:@ repeat.jax /*:@* -:@: repeat.jax /*:@:* -:@@ repeat.jax /*:@@* -:AdaLines ft_ada.jax /*:AdaLines* -:AdaRainbow ft_ada.jax /*:AdaRainbow* -:AdaSpaces ft_ada.jax /*:AdaSpaces* -:AdaTagDir ft_ada.jax /*:AdaTagDir* -:AdaTagFile ft_ada.jax /*:AdaTagFile* -:AdaTypes ft_ada.jax /*:AdaTypes* -:CompilerSet usr_41.jax /*:CompilerSet* -:DiffOrig diff.jax /*:DiffOrig* -:DoMatchParen pi_paren.jax /*:DoMatchParen* -:Explore pi_netrw.jax /*:Explore* -:GLVS pi_getscript.jax /*:GLVS* -:GetLatestVimScripts_dat pi_getscript.jax /*:GetLatestVimScripts_dat* -:GnatFind ft_ada.jax /*:GnatFind* -:GnatPretty ft_ada.jax /*:GnatPretty* -:GnatTags ft_ada.jax /*:GnatTags* -:Hexplore pi_netrw.jax /*:Hexplore* -:Man filetype.jax /*:Man* -:MkVimball pi_vimball.jax /*:MkVimball* -:N editing.jax /*:N* -:NetrwClean pi_netrw.jax /*:NetrwClean* -:Nexplore pi_netrw.jax /*:Nexplore* -:Next editing.jax /*:Next* -:NoMatchParen pi_paren.jax /*:NoMatchParen* -:Nr pi_netrw.jax /*:Nr* -:Nread pi_netrw.jax /*:Nread* -:Ns pi_netrw.jax /*:Ns* -:Nsource pi_netrw.jax /*:Nsource* -:Nw pi_netrw.jax /*:Nw* -:Nwrite pi_netrw.jax /*:Nwrite* -:P various.jax /*:P* -:Pexplore pi_netrw.jax /*:Pexplore* -:Print various.jax /*:Print* -:Rexplore pi_netrw.jax /*:Rexplore* -:RmVimball pi_vimball.jax /*:RmVimball* -:Sexplore pi_netrw.jax /*:Sexplore* -:TOhtml syntax.jax /*:TOhtml* -:Texplore pi_netrw.jax /*:Texplore* -:UseVimball pi_vimball.jax /*:UseVimball* -:Vexplore pi_netrw.jax /*:Vexplore* -:VimballList pi_vimball.jax /*:VimballList* -:Vimuntar pi_tar.jax /*:Vimuntar* -:X editing.jax /*:X* -:XMLent insert.jax /*:XMLent* -:XMLns insert.jax /*:XMLns* -:\bar cmdline.jax /*:\\bar* -:_! cmdline.jax /*:_!* -:_# cmdline.jax /*:_#* -:_## cmdline.jax /*:_##* -:_#0 cmdline.jax /*:_#0* -:_#< cmdline.jax /*:_#<* -:_#n cmdline.jax /*:_#n* -:_% cmdline.jax /*:_%* -:_%: cmdline.jax /*:_%:* -:_%< cmdline.jax /*:_%<* -:a insert.jax /*:a* -:ab map.jax /*:ab* -:abbreviate map.jax /*:abbreviate* -:abbreviate-<buffer> map.jax /*:abbreviate-<buffer>* -:abbreviate-local map.jax /*:abbreviate-local* -:abbreviate-verbose map.jax /*:abbreviate-verbose* -:abc map.jax /*:abc* -:abclear map.jax /*:abclear* -:abo windows.jax /*:abo* -:aboveleft windows.jax /*:aboveleft* -:al windows.jax /*:al* -:all windows.jax /*:all* -:am gui.jax /*:am* -:amenu gui.jax /*:amenu* -:an gui.jax /*:an* -:anoremenu gui.jax /*:anoremenu* -:append insert.jax /*:append* -:ar editing.jax /*:ar* -:arga editing.jax /*:arga* -:argadd editing.jax /*:argadd* -:argd editing.jax /*:argd* -:argdelete editing.jax /*:argdelete* -:argdo editing.jax /*:argdo* -:arge editing.jax /*:arge* -:argedit editing.jax /*:argedit* -:argglobal editing.jax /*:argglobal* -:arglocal editing.jax /*:arglocal* -:args editing.jax /*:args* -:args_f editing.jax /*:args_f* -:args_f! editing.jax /*:args_f!* -:argu editing.jax /*:argu* -:argument editing.jax /*:argument* -:as various.jax /*:as* -:ascii various.jax /*:ascii* -:au autocmd.jax /*:au* -:aug autocmd.jax /*:aug* -:augroup autocmd.jax /*:augroup* -:augroup-delete autocmd.jax /*:augroup-delete* -:aun gui.jax /*:aun* -:aunmenu gui.jax /*:aunmenu* -:autocmd autocmd.jax /*:autocmd* -:autocmd-verbose autocmd.jax /*:autocmd-verbose* -:b windows.jax /*:b* -:bN windows.jax /*:bN* -:bNext windows.jax /*:bNext* -:ba windows.jax /*:ba* -:bad windows.jax /*:bad* -:badd windows.jax /*:badd* -:ball windows.jax /*:ball* -:bar cmdline.jax /*:bar* -:bd windows.jax /*:bd* -:bdel windows.jax /*:bdel* -:bdelete windows.jax /*:bdelete* -:be gui.jax /*:be* -:behave gui.jax /*:behave* -:bel windows.jax /*:bel* -:belowright windows.jax /*:belowright* -:bf windows.jax /*:bf* -:bfirst windows.jax /*:bfirst* -:bl windows.jax /*:bl* -:blast windows.jax /*:blast* -:bm windows.jax /*:bm* -:bmodified windows.jax /*:bmodified* -:bn windows.jax /*:bn* -:bnext windows.jax /*:bnext* -:botright windows.jax /*:botright* -:bp windows.jax /*:bp* -:bprevious windows.jax /*:bprevious* -:br windows.jax /*:br* -:brea eval.jax /*:brea* -:break eval.jax /*:break* -:breaka repeat.jax /*:breaka* -:breakadd repeat.jax /*:breakadd* -:breakd repeat.jax /*:breakd* -:breakdel repeat.jax /*:breakdel* -:breakl repeat.jax /*:breakl* -:breaklist repeat.jax /*:breaklist* -:brewind windows.jax /*:brewind* -:bro editing.jax /*:bro* -:browse editing.jax /*:browse* -:browse-set options.jax /*:browse-set* -:bu windows.jax /*:bu* -:buf windows.jax /*:buf* -:bufdo windows.jax /*:bufdo* -:buffer windows.jax /*:buffer* -:buffer-! windows.jax /*:buffer-!* -:buffers windows.jax /*:buffers* -:bun windows.jax /*:bun* -:bunload windows.jax /*:bunload* -:bw windows.jax /*:bw* -:bwipe windows.jax /*:bwipe* -:bwipeout windows.jax /*:bwipeout* -:c change.jax /*:c* -:cN quickfix.jax /*:cN* -:cNext quickfix.jax /*:cNext* -:cNf quickfix.jax /*:cNf* -:cNfile quickfix.jax /*:cNfile* -:ca map.jax /*:ca* -:cabbrev map.jax /*:cabbrev* -:cabc map.jax /*:cabc* -:cabclear map.jax /*:cabclear* -:cad quickfix.jax /*:cad* -:caddb quickfix.jax /*:caddb* -:caddbuffer quickfix.jax /*:caddbuffer* -:caddexpr quickfix.jax /*:caddexpr* -:caddf quickfix.jax /*:caddf* -:caddfile quickfix.jax /*:caddfile* -:cal eval.jax /*:cal* -:call eval.jax /*:call* -:cat eval.jax /*:cat* -:catch eval.jax /*:catch* -:cb quickfix.jax /*:cb* -:cbuffer quickfix.jax /*:cbuffer* -:cc quickfix.jax /*:cc* -:ccl quickfix.jax /*:ccl* -:cclose quickfix.jax /*:cclose* -:cd editing.jax /*:cd* -:cd- editing.jax /*:cd-* -:ce change.jax /*:ce* -:center change.jax /*:center* -:cex quickfix.jax /*:cex* -:cexpr quickfix.jax /*:cexpr* -:cf quickfix.jax /*:cf* -:cfile quickfix.jax /*:cfile* -:cfir quickfix.jax /*:cfir* -:cfirst quickfix.jax /*:cfirst* -:cg quickfix.jax /*:cg* -:cgetb quickfix.jax /*:cgetb* -:cgetbuffer quickfix.jax /*:cgetbuffer* -:cgete quickfix.jax /*:cgete* -:cgetexpr quickfix.jax /*:cgetexpr* -:cgetfile quickfix.jax /*:cgetfile* -:ch change.jax /*:ch* -:change change.jax /*:change* -:changes motion.jax /*:changes* -:chd editing.jax /*:chd* -:chdir editing.jax /*:chdir* -:che tagsrch.jax /*:che* -:checkpath tagsrch.jax /*:checkpath* -:checkt editing.jax /*:checkt* -:checktime editing.jax /*:checktime* -:cl quickfix.jax /*:cl* -:cla quickfix.jax /*:cla* -:clast quickfix.jax /*:clast* -:clist quickfix.jax /*:clist* -:clo windows.jax /*:clo* -:close windows.jax /*:close* -:cm map.jax /*:cm* -:cmap map.jax /*:cmap* -:cmap_l map.jax /*:cmap_l* -:cmapc map.jax /*:cmapc* -:cmapclear map.jax /*:cmapclear* -:cme gui.jax /*:cme* -:cmenu gui.jax /*:cmenu* -:cn quickfix.jax /*:cn* -:cnew quickfix.jax /*:cnew* -:cnewer quickfix.jax /*:cnewer* -:cnext quickfix.jax /*:cnext* -:cnf quickfix.jax /*:cnf* -:cnfile quickfix.jax /*:cnfile* -:cno map.jax /*:cno* -:cnorea map.jax /*:cnorea* -:cnoreabbrev map.jax /*:cnoreabbrev* -:cnoremap map.jax /*:cnoremap* -:cnoreme gui.jax /*:cnoreme* -:cnoremenu gui.jax /*:cnoremenu* -:co change.jax /*:co* -:col quickfix.jax /*:col* -:colder quickfix.jax /*:colder* -:colo syntax.jax /*:colo* -:colorscheme syntax.jax /*:colorscheme* -:com map.jax /*:com* -:comc map.jax /*:comc* -:comclear map.jax /*:comclear* -:command map.jax /*:command* -:command-bang map.jax /*:command-bang* -:command-bar map.jax /*:command-bar* -:command-buffer map.jax /*:command-buffer* -:command-complete map.jax /*:command-complete* -:command-completion map.jax /*:command-completion* -:command-completion-custom map.jax /*:command-completion-custom* -:command-completion-customlist map.jax /*:command-completion-customlist* -:command-count map.jax /*:command-count* -:command-nargs map.jax /*:command-nargs* -:command-range map.jax /*:command-range* -:command-register map.jax /*:command-register* -:command-verbose map.jax /*:command-verbose* -:comment cmdline.jax /*:comment* -:comp quickfix.jax /*:comp* -:compiler quickfix.jax /*:compiler* -:con eval.jax /*:con* -:conf editing.jax /*:conf* -:confirm editing.jax /*:confirm* -:continue eval.jax /*:continue* -:cope quickfix.jax /*:cope* -:copen quickfix.jax /*:copen* -:copy change.jax /*:copy* -:cp quickfix.jax /*:cp* -:cpf quickfix.jax /*:cpf* -:cpfile quickfix.jax /*:cpfile* -:cprevious quickfix.jax /*:cprevious* -:cq quickfix.jax /*:cq* -:cquit quickfix.jax /*:cquit* -:cr quickfix.jax /*:cr* -:crewind quickfix.jax /*:crewind* -:cs if_cscop.jax /*:cs* -:cscope if_cscop.jax /*:cscope* -:cstag if_cscop.jax /*:cstag* -:cu map.jax /*:cu* -:cuna map.jax /*:cuna* -:cunabbrev map.jax /*:cunabbrev* -:cunmap map.jax /*:cunmap* -:cunme gui.jax /*:cunme* -:cunmenu gui.jax /*:cunmenu* -:cw quickfix.jax /*:cw* -:cwindow quickfix.jax /*:cwindow* -:d change.jax /*:d* -:de change.jax /*:de* -:debug repeat.jax /*:debug* -:debug-name repeat.jax /*:debug-name* -:debugg repeat.jax /*:debugg* -:debuggreedy repeat.jax /*:debuggreedy* -:del change.jax /*:del* -:delc map.jax /*:delc* -:delcommand map.jax /*:delcommand* -:delete change.jax /*:delete* -:delf eval.jax /*:delf* -:delfunction eval.jax /*:delfunction* -:delm motion.jax /*:delm* -:delmarks motion.jax /*:delmarks* -:di change.jax /*:di* -:diffg diff.jax /*:diffg* -:diffget diff.jax /*:diffget* -:diffo diff.jax /*:diffo* -:diffoff diff.jax /*:diffoff* -:diffp diff.jax /*:diffp* -:diffpatch diff.jax /*:diffpatch* -:diffpu diff.jax /*:diffpu* -:diffput diff.jax /*:diffput* -:diffs diff.jax /*:diffs* -:diffsplit diff.jax /*:diffsplit* -:difft diff.jax /*:difft* -:diffthis diff.jax /*:diffthis* -:diffu diff.jax /*:diffu* -:diffupdate diff.jax /*:diffupdate* -:dig digraph.jax /*:dig* -:digraphs digraph.jax /*:digraphs* -:display change.jax /*:display* -:dj tagsrch.jax /*:dj* -:djump tagsrch.jax /*:djump* -:dli tagsrch.jax /*:dli* -:dlist tagsrch.jax /*:dlist* -:do autocmd.jax /*:do* -:doau autocmd.jax /*:doau* -:doautoa autocmd.jax /*:doautoa* -:doautoall autocmd.jax /*:doautoall* -:doautocmd autocmd.jax /*:doautocmd* -:dr windows.jax /*:dr* -:drop windows.jax /*:drop* -:ds tagsrch.jax /*:ds* -:dsearch tagsrch.jax /*:dsearch* -:dsp tagsrch.jax /*:dsp* -:dsplit tagsrch.jax /*:dsplit* -:e editing.jax /*:e* -:ea undo.jax /*:ea* -:earlier undo.jax /*:earlier* -:ec eval.jax /*:ec* -:echo eval.jax /*:echo* -:echo-redraw eval.jax /*:echo-redraw* -:echoe eval.jax /*:echoe* -:echoerr eval.jax /*:echoerr* -:echoh eval.jax /*:echoh* -:echohl eval.jax /*:echohl* -:echom eval.jax /*:echom* -:echomsg eval.jax /*:echomsg* -:echon eval.jax /*:echon* -:edit editing.jax /*:edit* -:edit! editing.jax /*:edit!* -:edit!_f editing.jax /*:edit!_f* -:edit_f editing.jax /*:edit_f* -:el eval.jax /*:el* -:else eval.jax /*:else* -:elsei eval.jax /*:elsei* -:elseif eval.jax /*:elseif* -:em gui.jax /*:em* -:emenu gui.jax /*:emenu* -:en eval.jax /*:en* -:endf eval.jax /*:endf* -:endfo eval.jax /*:endfo* -:endfor eval.jax /*:endfor* -:endfunction eval.jax /*:endfunction* -:endif eval.jax /*:endif* -:endt eval.jax /*:endt* -:endtry eval.jax /*:endtry* -:endw eval.jax /*:endw* -:endwhile eval.jax /*:endwhile* -:ene editing.jax /*:ene* -:ene! editing.jax /*:ene!* -:enew editing.jax /*:enew* -:enew! editing.jax /*:enew!* -:ex editing.jax /*:ex* -:exe eval.jax /*:exe* -:exe-comment eval.jax /*:exe-comment* -:execute eval.jax /*:execute* -:exi editing.jax /*:exi* -:exit editing.jax /*:exit* -:exu helphelp.jax /*:exu* -:exusage helphelp.jax /*:exusage* -:f editing.jax /*:f* -:fi editing.jax /*:fi* -:file editing.jax /*:file* -:file_f editing.jax /*:file_f* -:filename editing.jax /*:filename* -:files windows.jax /*:files* -:filet filetype.jax /*:filet* -:filetype filetype.jax /*:filetype* -:filetype-indent-off filetype.jax /*:filetype-indent-off* -:filetype-indent-on filetype.jax /*:filetype-indent-on* -:filetype-off filetype.jax /*:filetype-off* -:filetype-overview filetype.jax /*:filetype-overview* -:filetype-plugin-off filetype.jax /*:filetype-plugin-off* -:filetype-plugin-on filetype.jax /*:filetype-plugin-on* -:fin editing.jax /*:fin* -:fina eval.jax /*:fina* -:finally eval.jax /*:finally* -:find editing.jax /*:find* -:fini repeat.jax /*:fini* -:finish repeat.jax /*:finish* -:fir editing.jax /*:fir* -:first editing.jax /*:first* -:fix options.jax /*:fix* -:fixdel options.jax /*:fixdel* -:fo fold.jax /*:fo* -:fold fold.jax /*:fold* -:foldc fold.jax /*:foldc* -:foldclose fold.jax /*:foldclose* -:foldd fold.jax /*:foldd* -:folddoc fold.jax /*:folddoc* -:folddoclosed fold.jax /*:folddoclosed* -:folddoopen fold.jax /*:folddoopen* -:foldo fold.jax /*:foldo* -:foldopen fold.jax /*:foldopen* -:for eval.jax /*:for* -:fu eval.jax /*:fu* -:function eval.jax /*:function* -:function-verbose eval.jax /*:function-verbose* -:g repeat.jax /*:g* -:global repeat.jax /*:global* -:go motion.jax /*:go* -:goto motion.jax /*:goto* -:gr quickfix.jax /*:gr* -:grep quickfix.jax /*:grep* -:grepa quickfix.jax /*:grepa* -:grepadd quickfix.jax /*:grepadd* -:gu gui_x11.jax /*:gu* -:gui gui_x11.jax /*:gui* -:gv gui_x11.jax /*:gv* -:gvim gui_x11.jax /*:gvim* -:h helphelp.jax /*:h* -:ha print.jax /*:ha* -:hardcopy print.jax /*:hardcopy* -:help helphelp.jax /*:help* -:helpf helphelp.jax /*:helpf* -:helpfind helphelp.jax /*:helpfind* -:helpg helphelp.jax /*:helpg* -:helpgrep helphelp.jax /*:helpgrep* -:helpt helphelp.jax /*:helpt* -:helptags helphelp.jax /*:helptags* -:hi syntax.jax /*:hi* -:hi-default syntax.jax /*:hi-default* -:hi-link syntax.jax /*:hi-link* -:hi-normal syntax.jax /*:hi-normal* -:hi-normal-cterm syntax.jax /*:hi-normal-cterm* -:hide windows.jax /*:hide* -:highlight syntax.jax /*:highlight* -:highlight-default syntax.jax /*:highlight-default* -:highlight-link syntax.jax /*:highlight-link* -:highlight-normal syntax.jax /*:highlight-normal* -:highlight-verbose syntax.jax /*:highlight-verbose* -:his cmdline.jax /*:his* -:history cmdline.jax /*:history* -:history-indexing cmdline.jax /*:history-indexing* -:i insert.jax /*:i* -:ia map.jax /*:ia* -:iabbrev map.jax /*:iabbrev* -:iabc map.jax /*:iabc* -:iabclear map.jax /*:iabclear* -:if eval.jax /*:if* -:ij tagsrch.jax /*:ij* -:ijump tagsrch.jax /*:ijump* -:il tagsrch.jax /*:il* -:ilist tagsrch.jax /*:ilist* -:im map.jax /*:im* -:imap map.jax /*:imap* -:imap_l map.jax /*:imap_l* -:imapc map.jax /*:imapc* -:imapclear map.jax /*:imapclear* -:ime gui.jax /*:ime* -:imenu gui.jax /*:imenu* -:in insert.jax /*:in* -:index index.jax /*:index* -:ino map.jax /*:ino* -:inorea map.jax /*:inorea* -:inoreabbrev map.jax /*:inoreabbrev* -:inoremap map.jax /*:inoremap* -:inoreme gui.jax /*:inoreme* -:inoremenu gui.jax /*:inoremenu* -:insert insert.jax /*:insert* -:intro starting.jax /*:intro* -:is tagsrch.jax /*:is* -:isearch tagsrch.jax /*:isearch* -:isp tagsrch.jax /*:isp* -:isplit tagsrch.jax /*:isplit* -:iu map.jax /*:iu* -:iuna map.jax /*:iuna* -:iunabbrev map.jax /*:iunabbrev* -:iunmap map.jax /*:iunmap* -:iunme gui.jax /*:iunme* -:iunmenu gui.jax /*:iunmenu* -:j change.jax /*:j* -:join change.jax /*:join* -:ju motion.jax /*:ju* -:jumps motion.jax /*:jumps* -:k motion.jax /*:k* -:kee motion.jax /*:kee* -:keepa editing.jax /*:keepa* -:keepalt editing.jax /*:keepalt* -:keepj motion.jax /*:keepj* -:keepjumps motion.jax /*:keepjumps* -:keepmarks motion.jax /*:keepmarks* -:l various.jax /*:l* -:lN quickfix.jax /*:lN* -:lNext quickfix.jax /*:lNext* -:lNf quickfix.jax /*:lNf* -:lNfile quickfix.jax /*:lNfile* -:la editing.jax /*:la* -:lad quickfix.jax /*:lad* -:laddb quickfix.jax /*:laddb* -:laddbuffer quickfix.jax /*:laddbuffer* -:laddexpr quickfix.jax /*:laddexpr* -:laddf quickfix.jax /*:laddf* -:laddfile quickfix.jax /*:laddfile* -:lan mlang.jax /*:lan* -:lang mlang.jax /*:lang* -:language mlang.jax /*:language* -:last editing.jax /*:last* -:lat undo.jax /*:lat* -:later undo.jax /*:later* -:lb quickfix.jax /*:lb* -:lbuffer quickfix.jax /*:lbuffer* -:lc editing.jax /*:lc* -:lcd editing.jax /*:lcd* -:lch editing.jax /*:lch* -:lchdir editing.jax /*:lchdir* -:lcl quickfix.jax /*:lcl* -:lclose quickfix.jax /*:lclose* -:lcs if_cscop.jax /*:lcs* -:lcscope if_cscop.jax /*:lcscope* -:le change.jax /*:le* -:left change.jax /*:left* -:lefta windows.jax /*:lefta* -:leftabove windows.jax /*:leftabove* -:let eval.jax /*:let* -:let+= eval.jax /*:let+=* -:let-$ eval.jax /*:let-$* -:let-& eval.jax /*:let-&* -:let-= eval.jax /*:let-=* -:let-@ eval.jax /*:let-@* -:let-environment eval.jax /*:let-environment* -:let-option eval.jax /*:let-option* -:let-register eval.jax /*:let-register* -:let-unpack eval.jax /*:let-unpack* -:let.= eval.jax /*:let.=* -:lex quickfix.jax /*:lex* -:lexpr quickfix.jax /*:lexpr* -:lf quickfix.jax /*:lf* -:lfile quickfix.jax /*:lfile* -:lfir quickfix.jax /*:lfir* -:lfirst quickfix.jax /*:lfirst* -:lg quickfix.jax /*:lg* -:lgetb quickfix.jax /*:lgetb* -:lgetbuffer quickfix.jax /*:lgetbuffer* -:lgete quickfix.jax /*:lgete* -:lgetexpr quickfix.jax /*:lgetexpr* -:lgetfile quickfix.jax /*:lgetfile* -:lgr quickfix.jax /*:lgr* -:lgrep quickfix.jax /*:lgrep* -:lgrepa quickfix.jax /*:lgrepa* -:lgrepadd quickfix.jax /*:lgrepadd* -:lh helphelp.jax /*:lh* -:lhelpgrep helphelp.jax /*:lhelpgrep* -:list various.jax /*:list* -:ll quickfix.jax /*:ll* -:lla quickfix.jax /*:lla* -:llast quickfix.jax /*:llast* -:lli quickfix.jax /*:lli* -:llist quickfix.jax /*:llist* -:lm map.jax /*:lm* -:lmak quickfix.jax /*:lmak* -:lmake quickfix.jax /*:lmake* -:lmap map.jax /*:lmap* -:lmap_l map.jax /*:lmap_l* -:lmapc map.jax /*:lmapc* -:lmapclear map.jax /*:lmapclear* -:ln map.jax /*:ln* -:lne quickfix.jax /*:lne* -:lnew quickfix.jax /*:lnew* -:lnewer quickfix.jax /*:lnewer* -:lnext quickfix.jax /*:lnext* -:lnf quickfix.jax /*:lnf* -:lnfile quickfix.jax /*:lnfile* -:lnoremap map.jax /*:lnoremap* -:lo starting.jax /*:lo* -:loadk mbyte.jax /*:loadk* -:loadkeymap mbyte.jax /*:loadkeymap* -:loadview starting.jax /*:loadview* -:loc motion.jax /*:loc* -:lockmarks motion.jax /*:lockmarks* -:lockv eval.jax /*:lockv* -:lockvar eval.jax /*:lockvar* -:lol quickfix.jax /*:lol* -:lolder quickfix.jax /*:lolder* -:lop quickfix.jax /*:lop* -:lopen quickfix.jax /*:lopen* -:lp quickfix.jax /*:lp* -:lpf quickfix.jax /*:lpf* -:lpfile quickfix.jax /*:lpfile* -:lprevious quickfix.jax /*:lprevious* -:lr quickfix.jax /*:lr* -:lrewind quickfix.jax /*:lrewind* -:ls windows.jax /*:ls* -:lt tagsrch.jax /*:lt* -:ltag tagsrch.jax /*:ltag* -:lu map.jax /*:lu* -:lua if_lua.jax /*:lua* -:luado if_lua.jax /*:luado* -:luafile if_lua.jax /*:luafile* -:lunmap map.jax /*:lunmap* -:lv quickfix.jax /*:lv* -:lvimgrep quickfix.jax /*:lvimgrep* -:lvimgrepa quickfix.jax /*:lvimgrepa* -:lvimgrepadd quickfix.jax /*:lvimgrepadd* -:lw quickfix.jax /*:lw* -:lwindow quickfix.jax /*:lwindow* -:m change.jax /*:m* -:ma motion.jax /*:ma* -:mak quickfix.jax /*:mak* -:make quickfix.jax /*:make* -:make_makeprg quickfix.jax /*:make_makeprg* -:map map.jax /*:map* -:map! map.jax /*:map!* -:map-<buffer> map.jax /*:map-<buffer>* -:map-<expr> map.jax /*:map-<expr>* -:map-<script> map.jax /*:map-<script>* -:map-<silent> map.jax /*:map-<silent>* -:map-<special> map.jax /*:map-<special>* -:map-<unique> map.jax /*:map-<unique>* -:map-alt-keys map.jax /*:map-alt-keys* -:map-arguments map.jax /*:map-arguments* -:map-commands map.jax /*:map-commands* -:map-expression map.jax /*:map-expression* -:map-local map.jax /*:map-local* -:map-modes map.jax /*:map-modes* -:map-operator map.jax /*:map-operator* -:map-script map.jax /*:map-script* -:map-silent map.jax /*:map-silent* -:map-special map.jax /*:map-special* -:map-special-chars map.jax /*:map-special-chars* -:map-special-keys map.jax /*:map-special-keys* -:map-undo map.jax /*:map-undo* -:map-verbose map.jax /*:map-verbose* -:map_l map.jax /*:map_l* -:map_l! map.jax /*:map_l!* -:mapc map.jax /*:mapc* -:mapc! map.jax /*:mapc!* -:mapclear map.jax /*:mapclear* -:mapclear! map.jax /*:mapclear!* -:mark motion.jax /*:mark* -:marks motion.jax /*:marks* -:mat pattern.jax /*:mat* -:match pattern.jax /*:match* -:me gui.jax /*:me* -:menu gui.jax /*:menu* -:menu-<script> gui.jax /*:menu-<script>* -:menu-<silent> gui.jax /*:menu-<silent>* -:menu-<special> gui.jax /*:menu-<special>* -:menu-disable gui.jax /*:menu-disable* -:menu-enable gui.jax /*:menu-enable* -:menu-script gui.jax /*:menu-script* -:menu-silent gui.jax /*:menu-silent* -:menu-special gui.jax /*:menu-special* -:menut mlang.jax /*:menut* -:menutrans mlang.jax /*:menutrans* -:menutranslate mlang.jax /*:menutranslate* -:mes message.jax /*:mes* -:messages message.jax /*:messages* -:mk starting.jax /*:mk* -:mkexrc starting.jax /*:mkexrc* -:mks starting.jax /*:mks* -:mksession starting.jax /*:mksession* -:mkv starting.jax /*:mkv* -:mkvie starting.jax /*:mkvie* -:mkview starting.jax /*:mkview* -:mkvimrc starting.jax /*:mkvimrc* -:mo change.jax /*:mo* -:mod term.jax /*:mod* -:mode term.jax /*:mode* -:move change.jax /*:move* -:mz if_mzsch.jax /*:mz* -:mzf if_mzsch.jax /*:mzf* -:mzfile if_mzsch.jax /*:mzfile* -:mzscheme if_mzsch.jax /*:mzscheme* -:n editing.jax /*:n* -:nbclose netbeans.jax /*:nbclose* -:nbkey netbeans.jax /*:nbkey* -:nbstart netbeans.jax /*:nbstart* -:ne editing.jax /*:ne* -:new windows.jax /*:new* -:next editing.jax /*:next* -:next_f editing.jax /*:next_f* -:nm map.jax /*:nm* -:nmap map.jax /*:nmap* -:nmap_l map.jax /*:nmap_l* -:nmapc map.jax /*:nmapc* -:nmapclear map.jax /*:nmapclear* -:nme gui.jax /*:nme* -:nmenu gui.jax /*:nmenu* -:nn map.jax /*:nn* -:nnoremap map.jax /*:nnoremap* -:nnoreme gui.jax /*:nnoreme* -:nnoremenu gui.jax /*:nnoremenu* -:no map.jax /*:no* -:no! map.jax /*:no!* -:noa autocmd.jax /*:noa* -:noautocmd autocmd.jax /*:noautocmd* -:noh pattern.jax /*:noh* -:nohlsearch pattern.jax /*:nohlsearch* -:norea map.jax /*:norea* -:noreabbrev map.jax /*:noreabbrev* -:noremap map.jax /*:noremap* -:noremap! map.jax /*:noremap!* -:noreme gui.jax /*:noreme* -:noremenu gui.jax /*:noremenu* -:norm various.jax /*:norm* -:normal various.jax /*:normal* -:normal-range various.jax /*:normal-range* -:nu various.jax /*:nu* -:number various.jax /*:number* -:nun map.jax /*:nun* -:nunmap map.jax /*:nunmap* -:nunme gui.jax /*:nunme* -:nunmenu gui.jax /*:nunmenu* -:o vi_diff.jax /*:o* -:ol starting.jax /*:ol* -:oldfiles starting.jax /*:oldfiles* -:om map.jax /*:om* -:omap map.jax /*:omap* -:omap_l map.jax /*:omap_l* -:omapc map.jax /*:omapc* -:omapclear map.jax /*:omapclear* -:ome gui.jax /*:ome* -:omenu gui.jax /*:omenu* -:on windows.jax /*:on* -:only windows.jax /*:only* -:ono map.jax /*:ono* -:onoremap map.jax /*:onoremap* -:onoreme gui.jax /*:onoreme* -:onoremenu gui.jax /*:onoremenu* -:op vi_diff.jax /*:op* -:open vi_diff.jax /*:open* -:opt options.jax /*:opt* -:options options.jax /*:options* -:ou map.jax /*:ou* -:ounmap map.jax /*:ounmap* -:ounme gui.jax /*:ounme* -:ounmenu gui.jax /*:ounmenu* -:ownsyntax syntax.jax /*:ownsyntax* -:p various.jax /*:p* -:pc windows.jax /*:pc* -:pclose windows.jax /*:pclose* -:pe if_perl.jax /*:pe* -:ped windows.jax /*:ped* -:pedit windows.jax /*:pedit* -:perl if_perl.jax /*:perl* -:perld if_perl.jax /*:perld* -:perldo if_perl.jax /*:perldo* -:po tagsrch.jax /*:po* -:pop tagsrch.jax /*:pop* -:popu gui.jax /*:popu* -:popup gui.jax /*:popup* -:pp windows.jax /*:pp* -:ppop windows.jax /*:ppop* -:pr various.jax /*:pr* -:pre recover.jax /*:pre* -:preserve recover.jax /*:preserve* -:prev editing.jax /*:prev* -:previous editing.jax /*:previous* -:print various.jax /*:print* -:pro change.jax /*:pro* -:prof repeat.jax /*:prof* -:profd repeat.jax /*:profd* -:profdel repeat.jax /*:profdel* -:profile repeat.jax /*:profile* -:promptfind change.jax /*:promptfind* -:promptr change.jax /*:promptr* -:promptrepl change.jax /*:promptrepl* -:ps windows.jax /*:ps* -:psearch windows.jax /*:psearch* -:ptN tagsrch.jax /*:ptN* -:ptNext tagsrch.jax /*:ptNext* -:pta windows.jax /*:pta* -:ptag windows.jax /*:ptag* -:ptf tagsrch.jax /*:ptf* -:ptfirst tagsrch.jax /*:ptfirst* -:ptj tagsrch.jax /*:ptj* -:ptjump tagsrch.jax /*:ptjump* -:ptl tagsrch.jax /*:ptl* -:ptlast tagsrch.jax /*:ptlast* -:ptn tagsrch.jax /*:ptn* -:ptnext tagsrch.jax /*:ptnext* -:ptp tagsrch.jax /*:ptp* -:ptprevious tagsrch.jax /*:ptprevious* -:ptr tagsrch.jax /*:ptr* -:ptrewind tagsrch.jax /*:ptrewind* -:pts tagsrch.jax /*:pts* -:ptselect tagsrch.jax /*:ptselect* -:pu change.jax /*:pu* -:put change.jax /*:put* -:pw editing.jax /*:pw* -:pwd editing.jax /*:pwd* -:py if_pyth.jax /*:py* -:py3 if_pyth.jax /*:py3* -:py3file if_pyth.jax /*:py3file* -:pyf if_pyth.jax /*:pyf* -:pyfile if_pyth.jax /*:pyfile* -:python if_pyth.jax /*:python* -:python3 if_pyth.jax /*:python3* -:q editing.jax /*:q* -:qa editing.jax /*:qa* -:qall editing.jax /*:qall* -:quit editing.jax /*:quit* -:quita editing.jax /*:quita* -:quitall editing.jax /*:quitall* -:quote cmdline.jax /*:quote* -:r insert.jax /*:r* -:r! insert.jax /*:r!* -:range cmdline.jax /*:range* -:range! change.jax /*:range!* -:re insert.jax /*:re* -:read insert.jax /*:read* -:read! insert.jax /*:read!* -:rec recover.jax /*:rec* -:recover recover.jax /*:recover* -:recover-crypt recover.jax /*:recover-crypt* -:red undo.jax /*:red* -:redi various.jax /*:redi* -:redir various.jax /*:redir* -:redo undo.jax /*:redo* -:redr various.jax /*:redr* -:redraw various.jax /*:redraw* -:redraws various.jax /*:redraws* -:redrawstatus various.jax /*:redrawstatus* -:reg change.jax /*:reg* -:registers change.jax /*:registers* -:res windows.jax /*:res* -:resize windows.jax /*:resize* -:ret change.jax /*:ret* -:retab change.jax /*:retab* -:retu eval.jax /*:retu* -:return eval.jax /*:return* -:rew editing.jax /*:rew* -:rewind editing.jax /*:rewind* -:ri change.jax /*:ri* -:right change.jax /*:right* -:rightb windows.jax /*:rightb* -:rightbelow windows.jax /*:rightbelow* -:ru repeat.jax /*:ru* -:rub if_ruby.jax /*:rub* -:ruby if_ruby.jax /*:ruby* -:rubyd if_ruby.jax /*:rubyd* -:rubydo if_ruby.jax /*:rubydo* -:rubyf if_ruby.jax /*:rubyf* -:rubyfile if_ruby.jax /*:rubyfile* -:rundo undo.jax /*:rundo* -:runtime repeat.jax /*:runtime* -:rv starting.jax /*:rv* -:rviminfo starting.jax /*:rviminfo* -:s change.jax /*:s* -:s% change.jax /*:s%* -:sN windows.jax /*:sN* -:sNext windows.jax /*:sNext* -:s\= change.jax /*:s\\=* -:s_c change.jax /*:s_c* -:s_flags change.jax /*:s_flags* -:sa windows.jax /*:sa* -:sal windows.jax /*:sal* -:sall windows.jax /*:sall* -:san eval.jax /*:san* -:sandbox eval.jax /*:sandbox* -:sargument windows.jax /*:sargument* -:sav editing.jax /*:sav* -:saveas editing.jax /*:saveas* -:sb windows.jax /*:sb* -:sbN windows.jax /*:sbN* -:sbNext windows.jax /*:sbNext* -:sba windows.jax /*:sba* -:sball windows.jax /*:sball* -:sbf windows.jax /*:sbf* -:sbfirst windows.jax /*:sbfirst* -:sbl windows.jax /*:sbl* -:sblast windows.jax /*:sblast* -:sbm windows.jax /*:sbm* -:sbmodified windows.jax /*:sbmodified* -:sbn windows.jax /*:sbn* -:sbnext windows.jax /*:sbnext* -:sbp windows.jax /*:sbp* -:sbprevious windows.jax /*:sbprevious* -:sbr windows.jax /*:sbr* -:sbrewind windows.jax /*:sbrewind* -:sbuffer windows.jax /*:sbuffer* -:scrip repeat.jax /*:scrip* -:scripte repeat.jax /*:scripte* -:scriptencoding repeat.jax /*:scriptencoding* -:scriptnames repeat.jax /*:scriptnames* -:scs if_cscop.jax /*:scs* -:scscope if_cscop.jax /*:scscope* -:se options.jax /*:se* -:search-args tagsrch.jax /*:search-args* -:set options.jax /*:set* -:set+= options.jax /*:set+=* -:set-! options.jax /*:set-!* -:set-& options.jax /*:set-&* -:set-&vi options.jax /*:set-&vi* -:set-&vim options.jax /*:set-&vim* -:set-= options.jax /*:set-=* -:set-args options.jax /*:set-args* -:set-browse options.jax /*:set-browse* -:set-default options.jax /*:set-default* -:set-inv options.jax /*:set-inv* -:set-termcap options.jax /*:set-termcap* -:set-verbose options.jax /*:set-verbose* -:set^= options.jax /*:set^=* -:set_env options.jax /*:set_env* -:setf options.jax /*:setf* -:setfiletype options.jax /*:setfiletype* -:setg options.jax /*:setg* -:setglobal options.jax /*:setglobal* -:setl options.jax /*:setl* -:setlocal options.jax /*:setlocal* -:sf windows.jax /*:sf* -:sfind windows.jax /*:sfind* -:sfir windows.jax /*:sfir* -:sfirst windows.jax /*:sfirst* -:sh various.jax /*:sh* -:shell various.jax /*:shell* -:si gui_w32.jax /*:si* -:sig sign.jax /*:sig* -:sign sign.jax /*:sign* -:sign-define sign.jax /*:sign-define* -:sign-fname sign.jax /*:sign-fname* -:sign-jump sign.jax /*:sign-jump* -:sign-list sign.jax /*:sign-list* -:sign-place sign.jax /*:sign-place* -:sign-undefine sign.jax /*:sign-undefine* -:sign-unplace sign.jax /*:sign-unplace* -:sil various.jax /*:sil* -:silent various.jax /*:silent* -:simalt gui_w32.jax /*:simalt* -:sl various.jax /*:sl* -:sla windows.jax /*:sla* -:slast windows.jax /*:slast* -:sleep various.jax /*:sleep* -:sm change.jax /*:sm* -:smagic change.jax /*:smagic* -:smap map.jax /*:smap* -:smap_l map.jax /*:smap_l* -:smapc map.jax /*:smapc* -:smapclear map.jax /*:smapclear* -:sme gui.jax /*:sme* -:smenu gui.jax /*:smenu* -:sn windows.jax /*:sn* -:snext windows.jax /*:snext* -:sni if_sniff.jax /*:sni* -:sniff if_sniff.jax /*:sniff* -:sno change.jax /*:sno* -:snomagic change.jax /*:snomagic* -:snor map.jax /*:snor* -:snoremap map.jax /*:snoremap* -:snoreme gui.jax /*:snoreme* -:snoremenu gui.jax /*:snoremenu* -:so repeat.jax /*:so* -:sor change.jax /*:sor* -:sort change.jax /*:sort* -:source repeat.jax /*:source* -:source_crnl repeat.jax /*:source_crnl* -:sp windows.jax /*:sp* -:split windows.jax /*:split* -:split_f windows.jax /*:split_f* -:spr windows.jax /*:spr* -:sprevious windows.jax /*:sprevious* -:sre windows.jax /*:sre* -:srewind windows.jax /*:srewind* -:st starting.jax /*:st* -:sta windows.jax /*:sta* -:stag windows.jax /*:stag* -:star repeat.jax /*:star* -:start insert.jax /*:start* -:startgreplace insert.jax /*:startgreplace* -:startinsert insert.jax /*:startinsert* -:startreplace insert.jax /*:startreplace* -:stj tagsrch.jax /*:stj* -:stjump tagsrch.jax /*:stjump* -:stop starting.jax /*:stop* -:stopi insert.jax /*:stopi* -:stopinsert insert.jax /*:stopinsert* -:sts tagsrch.jax /*:sts* -:stselect tagsrch.jax /*:stselect* -:su change.jax /*:su* -:substitute change.jax /*:substitute* -:sun windows.jax /*:sun* -:sunhide windows.jax /*:sunhide* -:sunm map.jax /*:sunm* -:sunmap map.jax /*:sunmap* -:sunme gui.jax /*:sunme* -:sunmenu gui.jax /*:sunmenu* -:sus starting.jax /*:sus* -:suspend starting.jax /*:suspend* -:sv windows.jax /*:sv* -:sview windows.jax /*:sview* -:sw recover.jax /*:sw* -:swapname recover.jax /*:swapname* -:sy syntax.jax /*:sy* -:syn syntax.jax /*:syn* -:syn-arguments syntax.jax /*:syn-arguments* -:syn-case syntax.jax /*:syn-case* -:syn-cchar syntax.jax /*:syn-cchar* -:syn-clear syntax.jax /*:syn-clear* -:syn-cluster syntax.jax /*:syn-cluster* -:syn-conceal syntax.jax /*:syn-conceal* -:syn-conceal-implicit syntax.jax /*:syn-conceal-implicit* -:syn-concealends syntax.jax /*:syn-concealends* -:syn-contained syntax.jax /*:syn-contained* -:syn-containedin syntax.jax /*:syn-containedin* -:syn-contains syntax.jax /*:syn-contains* -:syn-context syntax.jax /*:syn-context* -:syn-default-override usr_06.jax /*:syn-default-override* -:syn-define syntax.jax /*:syn-define* -:syn-display syntax.jax /*:syn-display* -:syn-enable syntax.jax /*:syn-enable* -:syn-end syntax.jax /*:syn-end* -:syn-excludenl syntax.jax /*:syn-excludenl* -:syn-ext-match syntax.jax /*:syn-ext-match* -:syn-extend syntax.jax /*:syn-extend* -:syn-file-remarks syntax.jax /*:syn-file-remarks* -:syn-files syntax.jax /*:syn-files* -:syn-fold syntax.jax /*:syn-fold* -:syn-include syntax.jax /*:syn-include* -:syn-keepend syntax.jax /*:syn-keepend* -:syn-keyword syntax.jax /*:syn-keyword* -:syn-lc syntax.jax /*:syn-lc* -:syn-leading syntax.jax /*:syn-leading* -:syn-list syntax.jax /*:syn-list* -:syn-manual usr_06.jax /*:syn-manual* -:syn-match syntax.jax /*:syn-match* -:syn-matchgroup syntax.jax /*:syn-matchgroup* -:syn-multi-line syntax.jax /*:syn-multi-line* -:syn-nextgroup syntax.jax /*:syn-nextgroup* -:syn-off usr_06.jax /*:syn-off* -:syn-on syntax.jax /*:syn-on* -:syn-oneline syntax.jax /*:syn-oneline* -:syn-pattern syntax.jax /*:syn-pattern* -:syn-pattern-offset syntax.jax /*:syn-pattern-offset* -:syn-priority syntax.jax /*:syn-priority* -:syn-qstart syntax.jax /*:syn-qstart* -:syn-region syntax.jax /*:syn-region* -:syn-reset syntax.jax /*:syn-reset* -:syn-skip syntax.jax /*:syn-skip* -:syn-skipempty syntax.jax /*:syn-skipempty* -:syn-skipnl syntax.jax /*:syn-skipnl* -:syn-skipwhite syntax.jax /*:syn-skipwhite* -:syn-spell syntax.jax /*:syn-spell* -:syn-start syntax.jax /*:syn-start* -:syn-sync syntax.jax /*:syn-sync* -:syn-sync-ccomment syntax.jax /*:syn-sync-ccomment* -:syn-sync-first syntax.jax /*:syn-sync-first* -:syn-sync-fourth syntax.jax /*:syn-sync-fourth* -:syn-sync-linebreaks syntax.jax /*:syn-sync-linebreaks* -:syn-sync-maxlines syntax.jax /*:syn-sync-maxlines* -:syn-sync-minlines syntax.jax /*:syn-sync-minlines* -:syn-sync-second syntax.jax /*:syn-sync-second* -:syn-sync-third syntax.jax /*:syn-sync-third* -:syn-transparent syntax.jax /*:syn-transparent* -:sync scroll.jax /*:sync* -:syncbind scroll.jax /*:syncbind* -:syntax syntax.jax /*:syntax* -:syntax-enable syntax.jax /*:syntax-enable* -:syntax-on syntax.jax /*:syntax-on* -:syntax-reset syntax.jax /*:syntax-reset* -:t change.jax /*:t* -:tN tagsrch.jax /*:tN* -:tNext tagsrch.jax /*:tNext* -:ta tagsrch.jax /*:ta* -:tab tabpage.jax /*:tab* -:tabN tabpage.jax /*:tabN* -:tabNext tabpage.jax /*:tabNext* -:tabc tabpage.jax /*:tabc* -:tabclose tabpage.jax /*:tabclose* -:tabd tabpage.jax /*:tabd* -:tabdo tabpage.jax /*:tabdo* -:tabe tabpage.jax /*:tabe* -:tabedit tabpage.jax /*:tabedit* -:tabf tabpage.jax /*:tabf* -:tabfind tabpage.jax /*:tabfind* -:tabfir tabpage.jax /*:tabfir* -:tabfirst tabpage.jax /*:tabfirst* -:tabl tabpage.jax /*:tabl* -:tablast tabpage.jax /*:tablast* -:tabm tabpage.jax /*:tabm* -:tabmove tabpage.jax /*:tabmove* -:tabn tabpage.jax /*:tabn* -:tabnew tabpage.jax /*:tabnew* -:tabnext tabpage.jax /*:tabnext* -:tabo tabpage.jax /*:tabo* -:tabonly tabpage.jax /*:tabonly* -:tabp tabpage.jax /*:tabp* -:tabprevious tabpage.jax /*:tabprevious* -:tabr tabpage.jax /*:tabr* -:tabrewind tabpage.jax /*:tabrewind* -:tabs tabpage.jax /*:tabs* -:tag tagsrch.jax /*:tag* -:tags tagsrch.jax /*:tags* -:tc if_tcl.jax /*:tc* -:tcl if_tcl.jax /*:tcl* -:tcld if_tcl.jax /*:tcld* -:tcldo if_tcl.jax /*:tcldo* -:tclf if_tcl.jax /*:tclf* -:tclfile if_tcl.jax /*:tclfile* -:te gui_w32.jax /*:te* -:tearoff gui_w32.jax /*:tearoff* -:tf tagsrch.jax /*:tf* -:tfirst tagsrch.jax /*:tfirst* -:th eval.jax /*:th* -:throw eval.jax /*:throw* -:tj tagsrch.jax /*:tj* -:tjump tagsrch.jax /*:tjump* -:tl tagsrch.jax /*:tl* -:tlast tagsrch.jax /*:tlast* -:tm gui.jax /*:tm* -:tmenu gui.jax /*:tmenu* -:tn tagsrch.jax /*:tn* -:tnext tagsrch.jax /*:tnext* -:topleft windows.jax /*:topleft* -:tp tagsrch.jax /*:tp* -:tprevious tagsrch.jax /*:tprevious* -:tr tagsrch.jax /*:tr* -:trewind tagsrch.jax /*:trewind* -:try eval.jax /*:try* -:ts tagsrch.jax /*:ts* -:tselect tagsrch.jax /*:tselect* -:tu gui.jax /*:tu* -:tunmenu gui.jax /*:tunmenu* -:u undo.jax /*:u* -:un undo.jax /*:un* -:una map.jax /*:una* -:unabbreviate map.jax /*:unabbreviate* -:undo undo.jax /*:undo* -:undoj undo.jax /*:undoj* -:undojoin undo.jax /*:undojoin* -:undol undo.jax /*:undol* -:undolist undo.jax /*:undolist* -:unh windows.jax /*:unh* -:unhide windows.jax /*:unhide* -:unl eval.jax /*:unl* -:unlet eval.jax /*:unlet* -:unlo eval.jax /*:unlo* -:unlockvar eval.jax /*:unlockvar* -:unm map.jax /*:unm* -:unm! map.jax /*:unm!* -:unmap map.jax /*:unmap* -:unmap! map.jax /*:unmap!* -:unme gui.jax /*:unme* -:unmenu gui.jax /*:unmenu* -:unmenu-all gui.jax /*:unmenu-all* -:uns various.jax /*:uns* -:unsilent various.jax /*:unsilent* -:up editing.jax /*:up* -:update editing.jax /*:update* -:v repeat.jax /*:v* -:ve various.jax /*:ve* -:verb various.jax /*:verb* -:verbose various.jax /*:verbose* -:verbose-cmd various.jax /*:verbose-cmd* -:version various.jax /*:version* -:vert windows.jax /*:vert* -:vertical windows.jax /*:vertical* -:vertical-resize windows.jax /*:vertical-resize* -:vglobal repeat.jax /*:vglobal* -:vi editing.jax /*:vi* -:vie editing.jax /*:vie* -:view editing.jax /*:view* -:vim quickfix.jax /*:vim* -:vimgrep quickfix.jax /*:vimgrep* -:vimgrepa quickfix.jax /*:vimgrepa* -:vimgrepadd quickfix.jax /*:vimgrepadd* -:visual editing.jax /*:visual* -:visual_example visual.jax /*:visual_example* -:viu helphelp.jax /*:viu* -:viusage helphelp.jax /*:viusage* -:vm map.jax /*:vm* -:vmap map.jax /*:vmap* -:vmap_l map.jax /*:vmap_l* -:vmapc map.jax /*:vmapc* -:vmapclear map.jax /*:vmapclear* -:vme gui.jax /*:vme* -:vmenu gui.jax /*:vmenu* -:vn map.jax /*:vn* -:vne windows.jax /*:vne* -:vnew windows.jax /*:vnew* -:vnoremap map.jax /*:vnoremap* -:vnoreme gui.jax /*:vnoreme* -:vnoremenu gui.jax /*:vnoremenu* -:vs windows.jax /*:vs* -:vsplit windows.jax /*:vsplit* -:vu map.jax /*:vu* -:vunmap map.jax /*:vunmap* -:vunme gui.jax /*:vunme* -:vunmenu gui.jax /*:vunmenu* -:w editing.jax /*:w* -:w! editing.jax /*:w!* -:wN editing.jax /*:wN* -:wNext editing.jax /*:wNext* -:w_a editing.jax /*:w_a* -:w_c editing.jax /*:w_c* -:w_f editing.jax /*:w_f* -:wa editing.jax /*:wa* -:wall editing.jax /*:wall* -:wh eval.jax /*:wh* -:while eval.jax /*:while* -:win gui.jax /*:win* -:winc windows.jax /*:winc* -:wincmd windows.jax /*:wincmd* -:windo windows.jax /*:windo* -:winp gui.jax /*:winp* -:winpos gui.jax /*:winpos* -:winsize gui.jax /*:winsize* -:wn editing.jax /*:wn* -:wnext editing.jax /*:wnext* -:wp editing.jax /*:wp* -:wprevious editing.jax /*:wprevious* -:wq editing.jax /*:wq* -:wqa editing.jax /*:wqa* -:wqall editing.jax /*:wqall* -:write editing.jax /*:write* -:write_a editing.jax /*:write_a* -:write_c editing.jax /*:write_c* -:write_f editing.jax /*:write_f* -:ws workshop.jax /*:ws* -:wsverb workshop.jax /*:wsverb* -:wundo undo.jax /*:wundo* -:wv starting.jax /*:wv* -:wviminfo starting.jax /*:wviminfo* -:x editing.jax /*:x* -:xa editing.jax /*:xa* -:xall editing.jax /*:xall* -:xit editing.jax /*:xit* -:xm map.jax /*:xm* -:xmap map.jax /*:xmap* -:xmap_l map.jax /*:xmap_l* -:xmapc map.jax /*:xmapc* -:xmapclear map.jax /*:xmapclear* -:xme gui.jax /*:xme* -:xmenu gui.jax /*:xmenu* -:xn map.jax /*:xn* -:xnoremap map.jax /*:xnoremap* -:xnoreme gui.jax /*:xnoreme* -:xnoremenu gui.jax /*:xnoremenu* -:xu map.jax /*:xu* -:xunmap map.jax /*:xunmap* -:xunme gui.jax /*:xunme* -:xunmenu gui.jax /*:xunmenu* -:y change.jax /*:y* -:yank change.jax /*:yank* -:z various.jax /*:z* -:z# various.jax /*:z#* -:~ change.jax /*:~* -; motion.jax /*;* -< change.jax /*<* -<2-LeftMouse> term.jax /*<2-LeftMouse>* -<3-LeftMouse> term.jax /*<3-LeftMouse>* -<4-LeftMouse> term.jax /*<4-LeftMouse>* -<< change.jax /*<<* -<> intro.jax /*<>* -<A- intro.jax /*<A-* -<A-LeftMouse> term.jax /*<A-LeftMouse>* -<A-RightMouse> term.jax /*<A-RightMouse>* -<BS> motion.jax /*<BS>* -<Bar> intro.jax /*<Bar>* -<Bslash> intro.jax /*<Bslash>* -<C- intro.jax /*<C-* -<C-Del> os_dos.jax /*<C-Del>* -<C-End> motion.jax /*<C-End>* -<C-Home> motion.jax /*<C-Home>* -<C-Insert> os_dos.jax /*<C-Insert>* -<C-Left> motion.jax /*<C-Left>* -<C-LeftMouse> tagsrch.jax /*<C-LeftMouse>* -<C-PageDown> tabpage.jax /*<C-PageDown>* -<C-PageUp> tabpage.jax /*<C-PageUp>* -<C-Right> motion.jax /*<C-Right>* -<C-RightMouse> tagsrch.jax /*<C-RightMouse>* -<C-ScrollWheelDown> scroll.jax /*<C-ScrollWheelDown>* -<C-ScrollWheelLeft> scroll.jax /*<C-ScrollWheelLeft>* -<C-ScrollWheelRight> scroll.jax /*<C-ScrollWheelRight>* -<C-ScrollWheelUp> scroll.jax /*<C-ScrollWheelUp>* -<CR> motion.jax /*<CR>* -<CSI> intro.jax /*<CSI>* -<Char-> map.jax /*<Char->* -<Char> map.jax /*<Char>* -<D- intro.jax /*<D-* -<Del> change.jax /*<Del>* -<Down> motion.jax /*<Down>* -<Drop> change.jax /*<Drop>* -<EOL> intro.jax /*<EOL>* -<End> motion.jax /*<End>* -<Enter> intro.jax /*<Enter>* -<Esc> intro.jax /*<Esc>* -<F10> term.jax /*<F10>* -<F11> term.jax /*<F11>* -<F12> term.jax /*<F12>* -<F13> term.jax /*<F13>* -<F14> term.jax /*<F14>* -<F15> term.jax /*<F15>* -<F16> term.jax /*<F16>* -<F17> term.jax /*<F17>* -<F18> term.jax /*<F18>* -<F19> term.jax /*<F19>* -<F1> helphelp.jax /*<F1>* -<F2> term.jax /*<F2>* -<F3> term.jax /*<F3>* -<F4> term.jax /*<F4>* -<F5> term.jax /*<F5>* -<F6> term.jax /*<F6>* -<F7> term.jax /*<F7>* -<F8> term.jax /*<F8>* -<F9> term.jax /*<F9>* -<Help> helphelp.jax /*<Help>* -<Home> motion.jax /*<Home>* -<Insert> insert.jax /*<Insert>* -<Leader> map.jax /*<Leader>* -<Left> motion.jax /*<Left>* -<LeftDrag> term.jax /*<LeftDrag>* -<LeftMouse> visual.jax /*<LeftMouse>* -<LeftRelease> visual.jax /*<LeftRelease>* -<LocalLeader> map.jax /*<LocalLeader>* -<M- intro.jax /*<M-* -<MiddleDrag> term.jax /*<MiddleDrag>* -<MiddleMouse> change.jax /*<MiddleMouse>* -<MiddleRelease> term.jax /*<MiddleRelease>* -<Mouse> term.jax /*<Mouse>* -<MouseDown> scroll.jax /*<MouseDown>* -<MouseUp> scroll.jax /*<MouseUp>* -<NL> motion.jax /*<NL>* -<Nop> map.jax /*<Nop>* -<Nul> intro.jax /*<Nul>* -<PageDown> scroll.jax /*<PageDown>* -<PageUp> scroll.jax /*<PageUp>* -<Plug> map.jax /*<Plug>* -<Return> intro.jax /*<Return>* -<Right> motion.jax /*<Right>* -<RightDrag> term.jax /*<RightDrag>* -<RightMouse> visual.jax /*<RightMouse>* -<RightRelease> term.jax /*<RightRelease>* -<S- intro.jax /*<S-* -<S-Del> os_dos.jax /*<S-Del>* -<S-Down> scroll.jax /*<S-Down>* -<S-End> term.jax /*<S-End>* -<S-F10> term.jax /*<S-F10>* -<S-F11> term.jax /*<S-F11>* -<S-F12> term.jax /*<S-F12>* -<S-F1> intro.jax /*<S-F1>* -<S-F2> term.jax /*<S-F2>* -<S-F3> term.jax /*<S-F3>* -<S-F4> term.jax /*<S-F4>* -<S-F5> term.jax /*<S-F5>* -<S-F6> term.jax /*<S-F6>* -<S-F7> term.jax /*<S-F7>* -<S-F8> term.jax /*<S-F8>* -<S-F9> term.jax /*<S-F9>* -<S-Home> term.jax /*<S-Home>* -<S-Insert> os_dos.jax /*<S-Insert>* -<S-Left> motion.jax /*<S-Left>* -<S-LeftMouse> term.jax /*<S-LeftMouse>* -<S-Right> motion.jax /*<S-Right>* -<S-RightMouse> term.jax /*<S-RightMouse>* -<S-ScrollWheelDown> scroll.jax /*<S-ScrollWheelDown>* -<S-ScrollWheelLeft> scroll.jax /*<S-ScrollWheelLeft>* -<S-ScrollWheelRight> scroll.jax /*<S-ScrollWheelRight>* -<S-ScrollWheelUp> scroll.jax /*<S-ScrollWheelUp>* -<S-Tab> term.jax /*<S-Tab>* -<S-Up> scroll.jax /*<S-Up>* -<S-xF1> term.jax /*<S-xF1>* -<S-xF2> term.jax /*<S-xF2>* -<S-xF3> term.jax /*<S-xF3>* -<S-xF4> term.jax /*<S-xF4>* -<SID> map.jax /*<SID>* -<SNR> map.jax /*<SNR>* -<ScrollWheelDown> scroll.jax /*<ScrollWheelDown>* -<ScrollWheelLeft> scroll.jax /*<ScrollWheelLeft>* -<ScrollWheelRight> scroll.jax /*<ScrollWheelRight>* -<ScrollWheelUp> scroll.jax /*<ScrollWheelUp>* -<Space> motion.jax /*<Space>* -<Tab> motion.jax /*<Tab>* -<Undo> undo.jax /*<Undo>* -<Up> motion.jax /*<Up>* -<abuf> cmdline.jax /*<abuf>* -<afile> cmdline.jax /*<afile>* -<amatch> cmdline.jax /*<amatch>* -<args> map.jax /*<args>* -<bang> map.jax /*<bang>* -<buffer=N> autocmd.jax /*<buffer=N>* -<buffer=abuf> autocmd.jax /*<buffer=abuf>* -<cfile> cmdline.jax /*<cfile>* -<character> intro.jax /*<character>* -<count> map.jax /*<count>* -<f-args> map.jax /*<f-args>* -<k0> term.jax /*<k0>* -<k1> term.jax /*<k1>* -<k2> term.jax /*<k2>* -<k3> term.jax /*<k3>* -<k4> term.jax /*<k4>* -<k5> term.jax /*<k5>* -<k6> term.jax /*<k6>* -<k7> term.jax /*<k7>* -<k8> term.jax /*<k8>* -<k9> term.jax /*<k9>* -<kDivide> term.jax /*<kDivide>* -<kEnd> motion.jax /*<kEnd>* -<kEnter> term.jax /*<kEnter>* -<kHome> motion.jax /*<kHome>* -<kMinus> term.jax /*<kMinus>* -<kMultiply> term.jax /*<kMultiply>* -<kPageDown> scroll.jax /*<kPageDown>* -<kPageUp> scroll.jax /*<kPageUp>* -<kPlus> term.jax /*<kPlus>* -<kPoint> term.jax /*<kPoint>* -<line1> map.jax /*<line1>* -<line2> map.jax /*<line2>* -<lt> intro.jax /*<lt>* -<q-args> map.jax /*<q-args>* -<reg> map.jax /*<reg>* -<register> map.jax /*<register>* -<sfile> cmdline.jax /*<sfile>* -<slnum> cmdline.jax /*<slnum>* -<xCSI> intro.jax /*<xCSI>* -<xDown> term.jax /*<xDown>* -<xEnd> term.jax /*<xEnd>* -<xEnd>-xterm term.jax /*<xEnd>-xterm* -<xF1> term.jax /*<xF1>* -<xF1>-xterm term.jax /*<xF1>-xterm* -<xF2> term.jax /*<xF2>* -<xF2>-xterm term.jax /*<xF2>-xterm* -<xF3> term.jax /*<xF3>* -<xF3>-xterm term.jax /*<xF3>-xterm* -<xF4> term.jax /*<xF4>* -<xF4>-xterm term.jax /*<xF4>-xterm* -<xHome> term.jax /*<xHome>* -<xHome>-xterm term.jax /*<xHome>-xterm* -<xLeft> term.jax /*<xLeft>* -<xRight> term.jax /*<xRight>* -<xUp> term.jax /*<xUp>* -= change.jax /*=* -== change.jax /*==* -> change.jax /*>* ->> change.jax /*>>* ->cont repeat.jax /*>cont* ->finish repeat.jax /*>finish* ->interrupt repeat.jax /*>interrupt* ->next repeat.jax /*>next* ->quit repeat.jax /*>quit* ->step repeat.jax /*>step* -? pattern.jax /*?* -?<CR> pattern.jax /*?<CR>* -@ repeat.jax /*@* -@/ change.jax /*@\/* -@: repeat.jax /*@:* -@= change.jax /*@=* -@@ repeat.jax /*@@* -@r eval.jax /*@r* -A insert.jax /*A* -ACL editing.jax /*ACL* -ATTENTION usr_11.jax /*ATTENTION* -Abbreviations map.jax /*Abbreviations* -Aleph options.jax /*Aleph* -Amiga os_amiga.jax /*Amiga* -Arabic arabic.jax /*Arabic* -Atari os_mint.jax /*Atari* -Athena gui_x11.jax /*Athena* -B motion.jax /*B* -BeBox os_beos.jax /*BeBox* -BeOS os_beos.jax /*BeOS* -Bram intro.jax /*Bram* -BufAdd autocmd.jax /*BufAdd* -BufCreate autocmd.jax /*BufCreate* -BufDelete autocmd.jax /*BufDelete* -BufEnter autocmd.jax /*BufEnter* -BufFilePost autocmd.jax /*BufFilePost* -BufFilePre autocmd.jax /*BufFilePre* -BufHidden autocmd.jax /*BufHidden* -BufLeave autocmd.jax /*BufLeave* -BufNew autocmd.jax /*BufNew* -BufNewFile autocmd.jax /*BufNewFile* -BufRead autocmd.jax /*BufRead* -BufReadCmd autocmd.jax /*BufReadCmd* -BufReadPost autocmd.jax /*BufReadPost* -BufReadPre autocmd.jax /*BufReadPre* -BufUnload autocmd.jax /*BufUnload* -BufWinEnter autocmd.jax /*BufWinEnter* -BufWinLeave autocmd.jax /*BufWinLeave* -BufWipeout autocmd.jax /*BufWipeout* -BufWrite autocmd.jax /*BufWrite* -BufWriteCmd autocmd.jax /*BufWriteCmd* -BufWritePost autocmd.jax /*BufWritePost* -BufWritePre autocmd.jax /*BufWritePre* -C change.jax /*C* -C-editing tips.jax /*C-editing* -C-indenting indent.jax /*C-indenting* -COMSPEC starting.jax /*COMSPEC* -CR-used-for-NL pattern.jax /*CR-used-for-NL* -CTRL-6 editing.jax /*CTRL-6* -CTRL-<PageDown> tabpage.jax /*CTRL-<PageDown>* -CTRL-<PageUp> tabpage.jax /*CTRL-<PageUp>* -CTRL-A change.jax /*CTRL-A* -CTRL-B scroll.jax /*CTRL-B* -CTRL-C pattern.jax /*CTRL-C* -CTRL-D scroll.jax /*CTRL-D* -CTRL-E scroll.jax /*CTRL-E* -CTRL-F scroll.jax /*CTRL-F* -CTRL-G editing.jax /*CTRL-G* -CTRL-H motion.jax /*CTRL-H* -CTRL-I motion.jax /*CTRL-I* -CTRL-J motion.jax /*CTRL-J* -CTRL-L various.jax /*CTRL-L* -CTRL-M motion.jax /*CTRL-M* -CTRL-N motion.jax /*CTRL-N* -CTRL-O motion.jax /*CTRL-O* -CTRL-P motion.jax /*CTRL-P* -CTRL-Q gui_w32.jax /*CTRL-Q* -CTRL-R undo.jax /*CTRL-R* -CTRL-T tagsrch.jax /*CTRL-T* -CTRL-U scroll.jax /*CTRL-U* -CTRL-V visual.jax /*CTRL-V* -CTRL-V-alternative gui_w32.jax /*CTRL-V-alternative* -CTRL-W index.jax /*CTRL-W* -CTRL-W_+ windows.jax /*CTRL-W_+* -CTRL-W_- windows.jax /*CTRL-W_-* -CTRL-W_< windows.jax /*CTRL-W_<* -CTRL-W_<BS> windows.jax /*CTRL-W_<BS>* -CTRL-W_<CR> quickfix.jax /*CTRL-W_<CR>* -CTRL-W_<Down> windows.jax /*CTRL-W_<Down>* -CTRL-W_<Enter> quickfix.jax /*CTRL-W_<Enter>* -CTRL-W_<Left> windows.jax /*CTRL-W_<Left>* -CTRL-W_<Right> windows.jax /*CTRL-W_<Right>* -CTRL-W_<Up> windows.jax /*CTRL-W_<Up>* -CTRL-W_= windows.jax /*CTRL-W_=* -CTRL-W_> windows.jax /*CTRL-W_>* -CTRL-W_CTRL-B windows.jax /*CTRL-W_CTRL-B* -CTRL-W_CTRL-C windows.jax /*CTRL-W_CTRL-C* -CTRL-W_CTRL-D tagsrch.jax /*CTRL-W_CTRL-D* -CTRL-W_CTRL-F windows.jax /*CTRL-W_CTRL-F* -CTRL-W_CTRL-H windows.jax /*CTRL-W_CTRL-H* -CTRL-W_CTRL-I tagsrch.jax /*CTRL-W_CTRL-I* -CTRL-W_CTRL-J windows.jax /*CTRL-W_CTRL-J* -CTRL-W_CTRL-K windows.jax /*CTRL-W_CTRL-K* -CTRL-W_CTRL-L windows.jax /*CTRL-W_CTRL-L* -CTRL-W_CTRL-N windows.jax /*CTRL-W_CTRL-N* -CTRL-W_CTRL-O windows.jax /*CTRL-W_CTRL-O* -CTRL-W_CTRL-P windows.jax /*CTRL-W_CTRL-P* -CTRL-W_CTRL-Q windows.jax /*CTRL-W_CTRL-Q* -CTRL-W_CTRL-R windows.jax /*CTRL-W_CTRL-R* -CTRL-W_CTRL-S windows.jax /*CTRL-W_CTRL-S* -CTRL-W_CTRL-T windows.jax /*CTRL-W_CTRL-T* -CTRL-W_CTRL-V windows.jax /*CTRL-W_CTRL-V* -CTRL-W_CTRL-W windows.jax /*CTRL-W_CTRL-W* -CTRL-W_CTRL-X windows.jax /*CTRL-W_CTRL-X* -CTRL-W_CTRL-Z windows.jax /*CTRL-W_CTRL-Z* -CTRL-W_CTRL-] windows.jax /*CTRL-W_CTRL-]* -CTRL-W_CTRL-^ windows.jax /*CTRL-W_CTRL-^* -CTRL-W_CTRL-_ windows.jax /*CTRL-W_CTRL-_* -CTRL-W_F windows.jax /*CTRL-W_F* -CTRL-W_H windows.jax /*CTRL-W_H* -CTRL-W_J windows.jax /*CTRL-W_J* -CTRL-W_K windows.jax /*CTRL-W_K* -CTRL-W_L windows.jax /*CTRL-W_L* -CTRL-W_P windows.jax /*CTRL-W_P* -CTRL-W_R windows.jax /*CTRL-W_R* -CTRL-W_S windows.jax /*CTRL-W_S* -CTRL-W_T windows.jax /*CTRL-W_T* -CTRL-W_W windows.jax /*CTRL-W_W* -CTRL-W_] windows.jax /*CTRL-W_]* -CTRL-W_^ windows.jax /*CTRL-W_^* -CTRL-W__ windows.jax /*CTRL-W__* -CTRL-W_b windows.jax /*CTRL-W_b* -CTRL-W_bar windows.jax /*CTRL-W_bar* -CTRL-W_c windows.jax /*CTRL-W_c* -CTRL-W_d tagsrch.jax /*CTRL-W_d* -CTRL-W_f windows.jax /*CTRL-W_f* -CTRL-W_gF windows.jax /*CTRL-W_gF* -CTRL-W_g] windows.jax /*CTRL-W_g]* -CTRL-W_g_CTRL-] windows.jax /*CTRL-W_g_CTRL-]* -CTRL-W_gf windows.jax /*CTRL-W_gf* -CTRL-W_g} windows.jax /*CTRL-W_g}* -CTRL-W_h windows.jax /*CTRL-W_h* -CTRL-W_i tagsrch.jax /*CTRL-W_i* -CTRL-W_j windows.jax /*CTRL-W_j* -CTRL-W_k windows.jax /*CTRL-W_k* -CTRL-W_l windows.jax /*CTRL-W_l* -CTRL-W_n windows.jax /*CTRL-W_n* -CTRL-W_o windows.jax /*CTRL-W_o* -CTRL-W_p windows.jax /*CTRL-W_p* -CTRL-W_q windows.jax /*CTRL-W_q* -CTRL-W_r windows.jax /*CTRL-W_r* -CTRL-W_s windows.jax /*CTRL-W_s* -CTRL-W_t windows.jax /*CTRL-W_t* -CTRL-W_v windows.jax /*CTRL-W_v* -CTRL-W_w windows.jax /*CTRL-W_w* -CTRL-W_x windows.jax /*CTRL-W_x* -CTRL-W_z windows.jax /*CTRL-W_z* -CTRL-W_} windows.jax /*CTRL-W_}* -CTRL-X change.jax /*CTRL-X* -CTRL-Y scroll.jax /*CTRL-Y* -CTRL-Z starting.jax /*CTRL-Z* -CTRL-\_CTRL-G intro.jax /*CTRL-\\_CTRL-G* -CTRL-\_CTRL-N intro.jax /*CTRL-\\_CTRL-N* -CTRL-] tagsrch.jax /*CTRL-]* -CTRL-^ editing.jax /*CTRL-^* -CTRL-{char} intro.jax /*CTRL-{char}* -Chinese mbyte.jax /*Chinese* -Cmd-event autocmd.jax /*Cmd-event* -Cmdline cmdline.jax /*Cmdline* -Cmdline-mode cmdline.jax /*Cmdline-mode* -CmdwinEnter autocmd.jax /*CmdwinEnter* -CmdwinLeave autocmd.jax /*CmdwinLeave* -ColorScheme autocmd.jax /*ColorScheme* -Command-line cmdline.jax /*Command-line* -Command-line-mode cmdline.jax /*Command-line-mode* -Contents quickref.jax /*Contents* -Cscope if_cscop.jax /*Cscope* -CursorHold autocmd.jax /*CursorHold* -CursorHold-example windows.jax /*CursorHold-example* -CursorHoldI autocmd.jax /*CursorHoldI* -CursorIM mbyte.jax /*CursorIM* -CursorMoved autocmd.jax /*CursorMoved* -CursorMovedI autocmd.jax /*CursorMovedI* -D change.jax /*D* -DOS os_dos.jax /*DOS* -DOS-format editing.jax /*DOS-format* -DOS-format-write editing.jax /*DOS-format-write* -DPMI os_msdos.jax /*DPMI* -Dictionaries eval.jax /*Dictionaries* -Dictionary eval.jax /*Dictionary* -Dictionary-function eval.jax /*Dictionary-function* -Digraphs digraph.jax /*Digraphs* -E motion.jax /*E* -E10 message.jax /*E10* -E100 diff.jax /*E100* -E101 diff.jax /*E101* -E102 diff.jax /*E102* -E103 diff.jax /*E103* -E104 digraph.jax /*E104* -E105 mbyte.jax /*E105* -E107 eval.jax /*E107* -E108 eval.jax /*E108* -E109 eval.jax /*E109* -E11 cmdline.jax /*E11* -E110 eval.jax /*E110* -E111 eval.jax /*E111* -E112 eval.jax /*E112* -E113 eval.jax /*E113* -E114 eval.jax /*E114* -E115 eval.jax /*E115* -E116 eval.jax /*E116* -E117 eval.jax /*E117* -E118 eval.jax /*E118* -E119 eval.jax /*E119* -E12 message.jax /*E12* -E120 eval.jax /*E120* -E121 eval.jax /*E121* -E122 eval.jax /*E122* -E123 eval.jax /*E123* -E124 eval.jax /*E124* -E125 eval.jax /*E125* -E126 eval.jax /*E126* -E127 eval.jax /*E127* -E128 eval.jax /*E128* -E129 eval.jax /*E129* -E13 message.jax /*E13* -E130 eval.jax /*E130* -E131 eval.jax /*E131* -E132 eval.jax /*E132* -E133 eval.jax /*E133* -E134 change.jax /*E134* -E135 autocmd.jax /*E135* -E136 starting.jax /*E136* -E137 starting.jax /*E137* -E138 starting.jax /*E138* -E139 message.jax /*E139* -E14 cmdline.jax /*E14* -E140 message.jax /*E140* -E141 message.jax /*E141* -E142 message.jax /*E142* -E143 autocmd.jax /*E143* -E144 various.jax /*E144* -E146 change.jax /*E146* -E147 repeat.jax /*E147* -E148 repeat.jax /*E148* -E149 helphelp.jax /*E149* -E15 eval.jax /*E15* -E150 helphelp.jax /*E150* -E151 helphelp.jax /*E151* -E152 helphelp.jax /*E152* -E153 helphelp.jax /*E153* -E154 helphelp.jax /*E154* -E155 sign.jax /*E155* -E156 sign.jax /*E156* -E157 sign.jax /*E157* -E158 sign.jax /*E158* -E159 sign.jax /*E159* -E16 cmdline.jax /*E16* -E160 sign.jax /*E160* -E161 repeat.jax /*E161* -E162 message.jax /*E162* -E163 editing.jax /*E163* -E164 editing.jax /*E164* -E165 editing.jax /*E165* -E166 message.jax /*E166* -E167 repeat.jax /*E167* -E168 repeat.jax /*E168* -E169 message.jax /*E169* -E17 message.jax /*E17* -E170 eval.jax /*E170* -E172 message.jax /*E172* -E173 message.jax /*E173* -E174 map.jax /*E174* -E175 map.jax /*E175* -E176 map.jax /*E176* -E177 map.jax /*E177* -E178 map.jax /*E178* -E179 map.jax /*E179* -E180 map.jax /*E180* -E181 map.jax /*E181* -E182 map.jax /*E182* -E183 map.jax /*E183* -E184 map.jax /*E184* -E185 syntax.jax /*E185* -E186 editing.jax /*E186* -E187 editing.jax /*E187* -E188 gui.jax /*E188* -E189 message.jax /*E189* -E19 message.jax /*E19* -E190 message.jax /*E190* -E191 motion.jax /*E191* -E192 message.jax /*E192* -E193 eval.jax /*E193* -E194 message.jax /*E194* -E195 starting.jax /*E195* -E197 mlang.jax /*E197* -E198 options.jax /*E198* -E199 cmdline.jax /*E199* -E20 motion.jax /*E20* -E200 autocmd.jax /*E200* -E201 autocmd.jax /*E201* -E202 options.jax /*E202* -E203 autocmd.jax /*E203* -E204 autocmd.jax /*E204* -E206 options.jax /*E206* -E207 editing.jax /*E207* -E208 message.jax /*E208* -E209 message.jax /*E209* -E21 options.jax /*E21* -E210 message.jax /*E210* -E211 message.jax /*E211* -E212 message.jax /*E212* -E213 options.jax /*E213* -E214 options.jax /*E214* -E215 autocmd.jax /*E215* -E216 autocmd.jax /*E216* -E217 autocmd.jax /*E217* -E218 autocmd.jax /*E218* -E219 message.jax /*E219* -E22 message.jax /*E22* -E220 message.jax /*E220* -E222 message.jax /*E222* -E223 options.jax /*E223* -E224 map.jax /*E224* -E225 map.jax /*E225* -E226 map.jax /*E226* -E227 map.jax /*E227* -E228 message.jax /*E228* -E229 gui.jax /*E229* -E23 message.jax /*E23* -E230 starting.jax /*E230* -E231 options.jax /*E231* -E232 message.jax /*E232* -E233 gui.jax /*E233* -E234 options.jax /*E234* -E235 options.jax /*E235* -E236 options.jax /*E236* -E237 print.jax /*E237* -E238 print.jax /*E238* -E239 sign.jax /*E239* -E24 message.jax /*E24* -E240 remote.jax /*E240* -E241 eval.jax /*E241* -E243 if_ole.jax /*E243* -E244 options.jax /*E244* -E245 options.jax /*E245* -E246 autocmd.jax /*E246* -E247 remote.jax /*E247* -E248 remote.jax /*E248* -E25 message.jax /*E25* -E250 options.jax /*E250* -E251 remote.jax /*E251* -E252 options.jax /*E252* -E253 mbyte.jax /*E253* -E254 message.jax /*E254* -E255 sign.jax /*E255* -E256 message.jax /*E256* -E257 if_cscop.jax /*E257* -E258 remote.jax /*E258* -E259 if_cscop.jax /*E259* -E26 rileft.jax /*E26* -E261 if_cscop.jax /*E261* -E262 if_cscop.jax /*E262* -E265 if_ruby.jax /*E265* -E266 if_ruby.jax /*E266* -E267 if_ruby.jax /*E267* -E268 if_ruby.jax /*E268* -E269 if_ruby.jax /*E269* -E27 farsi.jax /*E27* -E270 if_ruby.jax /*E270* -E271 if_ruby.jax /*E271* -E272 if_ruby.jax /*E272* -E273 if_ruby.jax /*E273* -E274 if_sniff.jax /*E274* -E275 if_sniff.jax /*E275* -E276 if_sniff.jax /*E276* -E277 remote.jax /*E277* -E278 if_sniff.jax /*E278* -E279 if_sniff.jax /*E279* -E28 syntax.jax /*E28* -E280 if_tcl.jax /*E280* -E281 if_tcl.jax /*E281* -E282 starting.jax /*E282* -E283 motion.jax /*E283* -E284 mbyte.jax /*E284* -E285 mbyte.jax /*E285* -E286 mbyte.jax /*E286* -E287 mbyte.jax /*E287* -E288 mbyte.jax /*E288* -E289 mbyte.jax /*E289* -E29 change.jax /*E29* -E290 mbyte.jax /*E290* -E291 mbyte.jax /*E291* -E292 mbyte.jax /*E292* -E293 message.jax /*E293* -E294 message.jax /*E294* -E295 message.jax /*E295* -E296 message.jax /*E296* -E297 message.jax /*E297* -E298 message.jax /*E298* -E299 if_perl.jax /*E299* -E30 change.jax /*E30* -E300 message.jax /*E300* -E301 message.jax /*E301* -E302 message.jax /*E302* -E303 message.jax /*E303* -E304 message.jax /*E304* -E309 recover.jax /*E309* -E31 message.jax /*E31* -E310 recover.jax /*E310* -E312 recover.jax /*E312* -E315 message.jax /*E315* -E316 message.jax /*E316* -E317 message.jax /*E317* -E318 message.jax /*E318* -E319 message.jax /*E319* -E32 message.jax /*E32* -E320 message.jax /*E320* -E321 editing.jax /*E321* -E322 message.jax /*E322* -E323 message.jax /*E323* -E324 print.jax /*E324* -E325 usr_11.jax /*E325* -E326 recover.jax /*E326* -E327 gui.jax /*E327* -E328 gui.jax /*E328* -E329 gui.jax /*E329* -E33 message.jax /*E33* -E330 gui.jax /*E330* -E331 gui.jax /*E331* -E332 gui.jax /*E332* -E333 gui.jax /*E333* -E334 gui.jax /*E334* -E335 gui.jax /*E335* -E336 gui.jax /*E336* -E337 gui.jax /*E337* -E338 editing.jax /*E338* -E339 message.jax /*E339* -E34 various.jax /*E34* -E340 vi_diff.jax /*E340* -E341 message.jax /*E341* -E342 message.jax /*E342* -E343 options.jax /*E343* -E344 options.jax /*E344* -E345 options.jax /*E345* -E346 options.jax /*E346* -E347 options.jax /*E347* -E348 pattern.jax /*E348* -E349 pattern.jax /*E349* -E35 message.jax /*E35* -E350 fold.jax /*E350* -E351 fold.jax /*E351* -E352 fold.jax /*E352* -E353 change.jax /*E353* -E354 change.jax /*E354* -E355 options.jax /*E355* -E356 message.jax /*E356* -E357 options.jax /*E357* -E358 options.jax /*E358* -E359 term.jax /*E359* -E360 various.jax /*E360* -E362 term.jax /*E362* -E363 options.jax /*E363* -E365 print.jax /*E365* -E367 autocmd.jax /*E367* -E369 pattern.jax /*E369* -E37 message.jax /*E37* -E370 various.jax /*E370* -E371 various.jax /*E371* -E372 quickfix.jax /*E372* -E373 quickfix.jax /*E373* -E374 quickfix.jax /*E374* -E375 quickfix.jax /*E375* -E376 quickfix.jax /*E376* -E377 quickfix.jax /*E377* -E378 quickfix.jax /*E378* -E379 quickfix.jax /*E379* -E38 message.jax /*E38* -E380 quickfix.jax /*E380* -E381 quickfix.jax /*E381* -E382 options.jax /*E382* -E383 pattern.jax /*E383* -E384 options.jax /*E384* -E385 options.jax /*E385* -E386 pattern.jax /*E386* -E387 tagsrch.jax /*E387* -E388 tagsrch.jax /*E388* -E389 tagsrch.jax /*E389* -E39 digraph.jax /*E39* -E390 syntax.jax /*E390* -E391 syntax.jax /*E391* -E392 syntax.jax /*E392* -E393 syntax.jax /*E393* -E394 syntax.jax /*E394* -E395 syntax.jax /*E395* -E397 syntax.jax /*E397* -E398 syntax.jax /*E398* -E399 syntax.jax /*E399* -E40 message.jax /*E40* -E400 syntax.jax /*E400* -E401 syntax.jax /*E401* -E402 syntax.jax /*E402* -E403 syntax.jax /*E403* -E404 syntax.jax /*E404* -E405 syntax.jax /*E405* -E406 syntax.jax /*E406* -E407 syntax.jax /*E407* -E408 syntax.jax /*E408* -E409 syntax.jax /*E409* -E41 message.jax /*E41* -E410 syntax.jax /*E410* -E411 syntax.jax /*E411* -E412 syntax.jax /*E412* -E413 syntax.jax /*E413* -E414 syntax.jax /*E414* -E415 syntax.jax /*E415* -E416 syntax.jax /*E416* -E417 syntax.jax /*E417* -E418 syntax.jax /*E418* -E419 syntax.jax /*E419* -E42 quickfix.jax /*E42* -E420 syntax.jax /*E420* -E421 syntax.jax /*E421* -E422 syntax.jax /*E422* -E423 syntax.jax /*E423* -E424 message.jax /*E424* -E425 tagsrch.jax /*E425* -E426 tagsrch.jax /*E426* -E427 tagsrch.jax /*E427* -E428 tagsrch.jax /*E428* -E429 tagsrch.jax /*E429* -E43 message.jax /*E43* -E430 tagsrch.jax /*E430* -E431 tagsrch.jax /*E431* -E432 message.jax /*E432* -E433 options.jax /*E433* -E434 tagsrch.jax /*E434* -E435 tagsrch.jax /*E435* -E436 term.jax /*E436* -E437 term.jax /*E437* -E438 message.jax /*E438* -E439 message.jax /*E439* -E44 message.jax /*E44* -E440 message.jax /*E440* -E441 windows.jax /*E441* -E442 windows.jax /*E442* -E443 windows.jax /*E443* -E444 windows.jax /*E444* -E445 windows.jax /*E445* -E446 editing.jax /*E446* -E447 editing.jax /*E447* -E448 various.jax /*E448* -E449 eval.jax /*E449* -E45 message.jax /*E45* -E450 os_msdos.jax /*E450* -E451 os_msdos.jax /*E451* -E452 os_msdos.jax /*E452* -E453 os_msdos.jax /*E453* -E454 os_msdos.jax /*E454* -E455 print.jax /*E455* -E456 print.jax /*E456* -E457 print.jax /*E457* -E458 message.jax /*E458* -E459 message.jax /*E459* -E46 message.jax /*E46* -E460 message.jax /*E460* -E461 eval.jax /*E461* -E462 editing.jax /*E462* -E463 netbeans.jax /*E463* -E464 message.jax /*E464* -E465 gui.jax /*E465* -E466 gui.jax /*E466* -E467 map.jax /*E467* -E468 map.jax /*E468* -E469 if_cscop.jax /*E469* -E47 message.jax /*E47* -E470 change.jax /*E470* -E471 message.jax /*E471* -E472 editing.jax /*E472* -E473 message.jax /*E473* -E474 message.jax /*E474* -E475 message.jax /*E475* -E476 pattern.jax /*E476* -E477 message.jax /*E477* -E478 message.jax /*E478* -E48 eval.jax /*E48* -E480 editing.jax /*E480* -E481 message.jax /*E481* -E482 message.jax /*E482* -E483 message.jax /*E483* -E484 message.jax /*E484* -E485 message.jax /*E485* -E486 pattern.jax /*E486* -E487 options.jax /*E487* -E488 message.jax /*E488* -E49 message.jax /*E49* -E490 fold.jax /*E490* -E492 message.jax /*E492* -E493 cmdline.jax /*E493* -E494 editing.jax /*E494* -E495 cmdline.jax /*E495* -E496 cmdline.jax /*E496* -E497 cmdline.jax /*E497* -E498 cmdline.jax /*E498* -E499 cmdline.jax /*E499* -E50 syntax.jax /*E50* -E500 cmdline.jax /*E500* -E501 intro.jax /*E501* -E502 editing.jax /*E502* -E503 editing.jax /*E503* -E504 editing.jax /*E504* -E505 editing.jax /*E505* -E506 editing.jax /*E506* -E507 editing.jax /*E507* -E508 editing.jax /*E508* -E509 editing.jax /*E509* -E51 pattern.jax /*E51* -E510 editing.jax /*E510* -E511 netbeans.jax /*E511* -E512 editing.jax /*E512* -E513 options.jax /*E513* -E514 editing.jax /*E514* -E515 windows.jax /*E515* -E516 windows.jax /*E516* -E517 windows.jax /*E517* -E518 options.jax /*E518* -E519 options.jax /*E519* -E52 syntax.jax /*E52* -E520 options.jax /*E520* -E521 options.jax /*E521* -E522 options.jax /*E522* -E523 options.jax /*E523* -E524 options.jax /*E524* -E525 options.jax /*E525* -E526 options.jax /*E526* -E527 options.jax /*E527* -E528 options.jax /*E528* -E529 options.jax /*E529* -E53 pattern.jax /*E53* -E530 options.jax /*E530* -E531 options.jax /*E531* -E532 netbeans.jax /*E532* -E533 options.jax /*E533* -E534 options.jax /*E534* -E535 options.jax /*E535* -E536 options.jax /*E536* -E537 options.jax /*E537* -E538 options.jax /*E538* -E539 options.jax /*E539* -E54 pattern.jax /*E54* -E540 options.jax /*E540* -E541 options.jax /*E541* -E542 options.jax /*E542* -E543 options.jax /*E543* -E544 options.jax /*E544* -E545 options.jax /*E545* -E546 options.jax /*E546* -E547 options.jax /*E547* -E548 options.jax /*E548* -E549 options.jax /*E549* -E55 pattern.jax /*E55* -E550 options.jax /*E550* -E551 options.jax /*E551* -E552 options.jax /*E552* -E553 quickfix.jax /*E553* -E554 pattern.jax /*E554* -E555 tagsrch.jax /*E555* -E556 tagsrch.jax /*E556* -E557 term.jax /*E557* -E558 term.jax /*E558* -E559 term.jax /*E559* -E56 pattern.jax /*E56* -E560 if_cscop.jax /*E560* -E561 if_cscop.jax /*E561* -E562 if_cscop.jax /*E562* -E563 if_cscop.jax /*E563* -E564 if_cscop.jax /*E564* -E566 if_cscop.jax /*E566* -E567 if_cscop.jax /*E567* -E568 if_cscop.jax /*E568* -E569 if_cscop.jax /*E569* -E57 pattern.jax /*E57* -E570 message.jax /*E570* -E571 if_tcl.jax /*E571* -E572 if_tcl.jax /*E572* -E573 remote.jax /*E573* -E574 starting.jax /*E574* -E575 starting.jax /*E575* -E576 starting.jax /*E576* -E577 starting.jax /*E577* -E578 editing.jax /*E578* -E58 pattern.jax /*E58* -E581 eval.jax /*E581* -E582 eval.jax /*E582* -E583 eval.jax /*E583* -E584 eval.jax /*E584* -E585 eval.jax /*E585* -E586 eval.jax /*E586* -E587 eval.jax /*E587* -E588 eval.jax /*E588* -E589 options.jax /*E589* -E59 pattern.jax /*E59* -E590 options.jax /*E590* -E591 options.jax /*E591* -E592 options.jax /*E592* -E593 options.jax /*E593* -E594 options.jax /*E594* -E595 options.jax /*E595* -E596 options.jax /*E596* -E597 options.jax /*E597* -E598 options.jax /*E598* -E599 options.jax /*E599* -E60 pattern.jax /*E60* -E600 eval.jax /*E600* -E601 eval.jax /*E601* -E602 eval.jax /*E602* -E603 eval.jax /*E603* -E604 eval.jax /*E604* -E605 eval.jax /*E605* -E606 eval.jax /*E606* -E607 eval.jax /*E607* -E608 eval.jax /*E608* -E609 if_cscop.jax /*E609* -E61 pattern.jax /*E61* -E612 sign.jax /*E612* -E613 print.jax /*E613* -E614 editing.jax /*E614* -E615 editing.jax /*E615* -E616 editing.jax /*E616* -E617 options.jax /*E617* -E618 print.jax /*E618* -E619 print.jax /*E619* -E62 pattern.jax /*E62* -E620 print.jax /*E620* -E621 print.jax /*E621* -E622 if_cscop.jax /*E622* -E623 if_cscop.jax /*E623* -E624 print.jax /*E624* -E625 if_cscop.jax /*E625* -E626 if_cscop.jax /*E626* -E627 netbeans.jax /*E627* -E628 netbeans.jax /*E628* -E629 netbeans.jax /*E629* -E63 pattern.jax /*E63* -E630 netbeans.jax /*E630* -E631 netbeans.jax /*E631* -E632 netbeans.jax /*E632* -E633 netbeans.jax /*E633* -E634 netbeans.jax /*E634* -E635 netbeans.jax /*E635* -E636 netbeans.jax /*E636* -E637 netbeans.jax /*E637* -E638 netbeans.jax /*E638* -E639 netbeans.jax /*E639* -E64 pattern.jax /*E64* -E640 netbeans.jax /*E640* -E641 netbeans.jax /*E641* -E642 netbeans.jax /*E642* -E643 netbeans.jax /*E643* -E644 netbeans.jax /*E644* -E645 netbeans.jax /*E645* -E646 netbeans.jax /*E646* -E647 netbeans.jax /*E647* -E648 netbeans.jax /*E648* -E649 netbeans.jax /*E649* -E65 pattern.jax /*E65* -E650 netbeans.jax /*E650* -E651 netbeans.jax /*E651* -E652 netbeans.jax /*E652* -E653 netbeans.jax /*E653* -E654 netbeans.jax /*E654* -E655 eval.jax /*E655* -E656 netbeans.jax /*E656* -E657 netbeans.jax /*E657* -E658 netbeans.jax /*E658* -E659 if_pyth.jax /*E659* -E66 syntax.jax /*E66* -E660 netbeans.jax /*E660* -E661 helphelp.jax /*E661* -E662 motion.jax /*E662* -E663 motion.jax /*E663* -E664 motion.jax /*E664* -E665 gui_x11.jax /*E665* -E666 quickfix.jax /*E666* -E667 editing.jax /*E667* -E668 netbeans.jax /*E668* -E669 syntax.jax /*E669* -E67 syntax.jax /*E67* -E670 helphelp.jax /*E670* -E671 starting.jax /*E671* -E673 print.jax /*E673* -E674 print.jax /*E674* -E675 print.jax /*E675* -E676 options.jax /*E676* -E677 eval.jax /*E677* -E678 pattern.jax /*E678* -E679 syntax.jax /*E679* -E68 pattern.jax /*E68* -E680 autocmd.jax /*E680* -E681 quickfix.jax /*E681* -E682 quickfix.jax /*E682* -E683 quickfix.jax /*E683* -E684 eval.jax /*E684* -E685 message.jax /*E685* -E686 eval.jax /*E686* -E687 eval.jax /*E687* -E688 eval.jax /*E688* -E689 eval.jax /*E689* -E69 pattern.jax /*E69* -E690 eval.jax /*E690* -E691 eval.jax /*E691* -E692 eval.jax /*E692* -E693 eval.jax /*E693* -E694 eval.jax /*E694* -E695 eval.jax /*E695* -E696 eval.jax /*E696* -E697 eval.jax /*E697* -E698 eval.jax /*E698* -E699 eval.jax /*E699* -E70 pattern.jax /*E70* -E700 eval.jax /*E700* -E701 eval.jax /*E701* -E702 eval.jax /*E702* -E703 eval.jax /*E703* -E704 eval.jax /*E704* -E705 eval.jax /*E705* -E706 eval.jax /*E706* -E707 eval.jax /*E707* -E708 eval.jax /*E708* -E709 eval.jax /*E709* -E71 pattern.jax /*E71* -E710 eval.jax /*E710* -E711 eval.jax /*E711* -E712 eval.jax /*E712* -E713 eval.jax /*E713* -E714 eval.jax /*E714* -E715 eval.jax /*E715* -E716 eval.jax /*E716* -E717 eval.jax /*E717* -E718 eval.jax /*E718* -E719 eval.jax /*E719* -E72 message.jax /*E72* -E720 eval.jax /*E720* -E721 eval.jax /*E721* -E722 eval.jax /*E722* -E723 eval.jax /*E723* -E724 eval.jax /*E724* -E725 eval.jax /*E725* -E726 eval.jax /*E726* -E727 eval.jax /*E727* -E728 eval.jax /*E728* -E729 eval.jax /*E729* -E73 tagsrch.jax /*E73* -E730 eval.jax /*E730* -E731 eval.jax /*E731* -E732 eval.jax /*E732* -E733 eval.jax /*E733* -E734 eval.jax /*E734* -E735 eval.jax /*E735* -E736 eval.jax /*E736* -E737 eval.jax /*E737* -E738 eval.jax /*E738* -E739 eval.jax /*E739* -E74 message.jax /*E74* -E740 eval.jax /*E740* -E741 eval.jax /*E741* -E742 eval.jax /*E742* -E743 eval.jax /*E743* -E744 netbeans.jax /*E744* -E745 eval.jax /*E745* -E746 eval.jax /*E746* -E747 editing.jax /*E747* -E748 repeat.jax /*E748* -E749 various.jax /*E749* -E75 vi_diff.jax /*E75* -E750 repeat.jax /*E750* -E757 options.jax /*E757* -E76 pattern.jax /*E76* -E764 options.jax /*E764* -E765 options.jax /*E765* -E766 eval.jax /*E766* -E767 eval.jax /*E767* -E768 message.jax /*E768* -E769 pattern.jax /*E769* -E77 message.jax /*E77* -E773 recover.jax /*E773* -E774 map.jax /*E774* -E775 map.jax /*E775* -E776 quickfix.jax /*E776* -E777 quickfix.jax /*E777* -E78 motion.jax /*E78* -E784 tabpage.jax /*E784* -E785 eval.jax /*E785* -E786 eval.jax /*E786* -E787 diff.jax /*E787* -E788 autocmd.jax /*E788* -E789 syntax.jax /*E789* -E79 message.jax /*E79* -E790 undo.jax /*E790* -E791 mbyte.jax /*E791* -E792 gui.jax /*E792* -E793 diff.jax /*E793* -E794 eval.jax /*E794* -E795 eval.jax /*E795* -E796 editing.jax /*E796* -E798 eval.jax /*E798* -E799 eval.jax /*E799* -E80 message.jax /*E80* -E800 arabic.jax /*E800* -E801 eval.jax /*E801* -E802 eval.jax /*E802* -E803 eval.jax /*E803* -E804 eval.jax /*E804* -E805 eval.jax /*E805* -E806 eval.jax /*E806* -E807 eval.jax /*E807* -E808 eval.jax /*E808* -E809 cmdline.jax /*E809* -E81 map.jax /*E81* -E810 diff.jax /*E810* -E811 autocmd.jax /*E811* -E812 autocmd.jax /*E812* -E813 editing.jax /*E813* -E814 editing.jax /*E814* -E815 if_mzsch.jax /*E815* -E816 diff.jax /*E816* -E817 editing.jax /*E817* -E818 editing.jax /*E818* -E819 editing.jax /*E819* -E82 message.jax /*E82* -E820 editing.jax /*E820* -E821 options.jax /*E821* -E822 undo.jax /*E822* -E823 undo.jax /*E823* -E824 undo.jax /*E824* -E825 undo.jax /*E825* -E826 undo.jax /*E826* -E827 undo.jax /*E827* -E828 undo.jax /*E828* -E829 undo.jax /*E829* -E83 message.jax /*E83* -E830 undo.jax /*E830* -E831 editing.jax /*E831* -E832 undo.jax /*E832* -E833 editing.jax /*E833* -E834 options.jax /*E834* -E835 options.jax /*E835* -E836 if_pyth.jax /*E836* -E837 if_pyth.jax /*E837* -E838 netbeans.jax /*E838* -E839 insert.jax /*E839* -E84 windows.jax /*E84* -E840 insert.jax /*E840* -E841 map.jax /*E841* -E842 cmdline.jax /*E842* -E843 editing.jax /*E843* -E844 syntax.jax /*E844* -E846 options.jax /*E846* -E847 syntax.jax /*E847* -E848 syntax.jax /*E848* -E849 syntax.jax /*E849* -E85 options.jax /*E85* -E850 change.jax /*E850* -E86 windows.jax /*E86* -E88 windows.jax /*E88* -E89 message.jax /*E89* -E90 message.jax /*E90* -E91 options.jax /*E91* -E92 message.jax /*E92* -E93 windows.jax /*E93* -E94 windows.jax /*E94* -E95 message.jax /*E95* -E96 diff.jax /*E96* -E97 diff.jax /*E97* -E98 diff.jax /*E98* -E99 diff.jax /*E99* -EX intro.jax /*EX* -EXINIT starting.jax /*EXINIT* -Elvis intro.jax /*Elvis* -EncodingChanged autocmd.jax /*EncodingChanged* -Eterm syntax.jax /*Eterm* -Ex intro.jax /*Ex* -Ex-mode intro.jax /*Ex-mode* -Exuberant_ctags tagsrch.jax /*Exuberant_ctags* -F motion.jax /*F* -FAQ intro.jax /*FAQ* -Farsi farsi.jax /*Farsi* -FileAppendCmd autocmd.jax /*FileAppendCmd* -FileAppendPost autocmd.jax /*FileAppendPost* -FileAppendPre autocmd.jax /*FileAppendPre* -FileChangedRO autocmd.jax /*FileChangedRO* -FileChangedShell autocmd.jax /*FileChangedShell* -FileChangedShellPost autocmd.jax /*FileChangedShellPost* -FileEncoding autocmd.jax /*FileEncoding* -FileReadCmd autocmd.jax /*FileReadCmd* -FileReadPost autocmd.jax /*FileReadPost* -FileReadPre autocmd.jax /*FileReadPre* -FileType autocmd.jax /*FileType* -FileWriteCmd autocmd.jax /*FileWriteCmd* -FileWritePost autocmd.jax /*FileWritePost* -FileWritePre autocmd.jax /*FileWritePre* -FilterReadPost autocmd.jax /*FilterReadPost* -FilterReadPre autocmd.jax /*FilterReadPre* -FilterWritePost autocmd.jax /*FilterWritePost* -FilterWritePre autocmd.jax /*FilterWritePre* -Float eval.jax /*Float* -FocusGained autocmd.jax /*FocusGained* -FocusLost autocmd.jax /*FocusLost* -Folding fold.jax /*Folding* -FuncUndefined autocmd.jax /*FuncUndefined* -Funcref eval.jax /*Funcref* -G motion.jax /*G* -GNOME gui_x11.jax /*GNOME* -GTK gui_x11.jax /*GTK* -GTK+ gui_x11.jax /*GTK+* -GUI gui.jax /*GUI* -GUI-X11 gui_x11.jax /*GUI-X11* -GUIEnter autocmd.jax /*GUIEnter* -GUIFailed autocmd.jax /*GUIFailed* -GetLatestVimScripts pi_getscript.jax /*GetLatestVimScripts* -GetLatestVimScripts-copyright pi_getscript.jax /*GetLatestVimScripts-copyright* -GetLatestVimScripts_dat pi_getscript.jax /*GetLatestVimScripts_dat* -Gnome gui_x11.jax /*Gnome* -H motion.jax /*H* -I insert.jax /*I* -ICCF uganda.jax /*ICCF* -IM-server mbyte.jax /*IM-server* -IME mbyte.jax /*IME* -Insert insert.jax /*Insert* -Insert-mode insert.jax /*Insert-mode* -InsertChange autocmd.jax /*InsertChange* -InsertCharPre autocmd.jax /*InsertCharPre* -InsertEnter autocmd.jax /*InsertEnter* -InsertLeave autocmd.jax /*InsertLeave* -J change.jax /*J* -Japanese mbyte.jax /*Japanese* -K various.jax /*K* -KDE gui_x11.jax /*KDE* -KVim gui_x11.jax /*KVim* -Kibaale uganda.jax /*Kibaale* -Korean mbyte.jax /*Korean* -L motion.jax /*L* -Linux-backspace options.jax /*Linux-backspace* -List eval.jax /*List* -Lists eval.jax /*Lists* -Lua if_lua.jax /*Lua* -M motion.jax /*M* -MDI starting.jax /*MDI* -MS-DOS os_msdos.jax /*MS-DOS* -MS-Windows os_win32.jax /*MS-Windows* -MSDOS os_msdos.jax /*MSDOS* -MSVisualStudio if_ole.jax /*MSVisualStudio* -MVS os_390.jax /*MVS* -Mac os_mac.jax /*Mac* -Mac-format editing.jax /*Mac-format* -Mac-format-write editing.jax /*Mac-format-write* -Macintosh os_mac.jax /*Macintosh* -Mark motion.jax /*Mark* -MenuPopup autocmd.jax /*MenuPopup* -MiNT os_mint.jax /*MiNT* -Moolenaar intro.jax /*Moolenaar* -MorphOS os_amiga.jax /*MorphOS* -Motif gui_x11.jax /*Motif* -MzScheme if_mzsch.jax /*MzScheme* -N pattern.jax /*N* -N% motion.jax /*N%* -N: cmdline.jax /*N:* -N<Del> various.jax /*N<Del>* -NL-used-for-Nul pattern.jax /*NL-used-for-Nul* -NetBSD-backspace options.jax /*NetBSD-backspace* -NetUserPass() pi_netrw.jax /*NetUserPass()* -Normal intro.jax /*Normal* -Normal-mode intro.jax /*Normal-mode* -Number eval.jax /*Number* -Nvi intro.jax /*Nvi* -O insert.jax /*O* -OS/2 os_os2.jax /*OS\/2* -OS2 os_os2.jax /*OS2* -OS390 os_390.jax /*OS390* -OS390-Motif os_390.jax /*OS390-Motif* -OS390-PuTTY os_390.jax /*OS390-PuTTY* -OS390-bugs os_390.jax /*OS390-bugs* -OS390-has-ebcdic os_390.jax /*OS390-has-ebcdic* -OS390-limitations os_390.jax /*OS390-limitations* -OS390-open-source os_390.jax /*OS390-open-source* -OffTheSpot mbyte.jax /*OffTheSpot* -OnTheSpot mbyte.jax /*OnTheSpot* -Operator-pending intro.jax /*Operator-pending* -Operator-pending-mode intro.jax /*Operator-pending-mode* -OverTheSpot mbyte.jax /*OverTheSpot* -P change.jax /*P* -PATHEXT eval.jax /*PATHEXT* -Pattern pattern.jax /*Pattern* -Perl if_perl.jax /*Perl* -Posix intro.jax /*Posix* -Python if_pyth.jax /*Python* -Q intro.jax /*Q* -QNX os_qnx.jax /*QNX* -Q_ab quickref.jax /*Q_ab* -Q_ac quickref.jax /*Q_ac* -Q_ai quickref.jax /*Q_ai* -Q_bu quickref.jax /*Q_bu* -Q_ce quickref.jax /*Q_ce* -Q_ch quickref.jax /*Q_ch* -Q_cm quickref.jax /*Q_cm* -Q_co quickref.jax /*Q_co* -Q_ct help.jax /*Q_ct* -Q_de quickref.jax /*Q_de* -Q_di quickref.jax /*Q_di* -Q_ed quickref.jax /*Q_ed* -Q_et quickref.jax /*Q_et* -Q_ex quickref.jax /*Q_ex* -Q_fl quickref.jax /*Q_fl* -Q_fo quickref.jax /*Q_fo* -Q_gu quickref.jax /*Q_gu* -Q_in quickref.jax /*Q_in* -Q_km quickref.jax /*Q_km* -Q_lr quickref.jax /*Q_lr* -Q_ma quickref.jax /*Q_ma* -Q_op quickref.jax /*Q_op* -Q_pa quickref.jax /*Q_pa* -Q_qf quickref.jax /*Q_qf* -Q_ra quickref.jax /*Q_ra* -Q_re quickref.jax /*Q_re* -Q_sc quickref.jax /*Q_sc* -Q_si quickref.jax /*Q_si* -Q_ss quickref.jax /*Q_ss* -Q_st quickref.jax /*Q_st* -Q_sy quickref.jax /*Q_sy* -Q_ta quickref.jax /*Q_ta* -Q_tm quickref.jax /*Q_tm* -Q_to quickref.jax /*Q_to* -Q_ud quickref.jax /*Q_ud* -Q_ur quickref.jax /*Q_ur* -Q_vc quickref.jax /*Q_vc* -Q_vi quickref.jax /*Q_vi* -Q_vm quickref.jax /*Q_vm* -Q_wi quickref.jax /*Q_wi* -Q_wq quickref.jax /*Q_wq* -QuickFixCmdPost autocmd.jax /*QuickFixCmdPost* -QuickFixCmdPost-example quickfix.jax /*QuickFixCmdPost-example* -QuickFixCmdPre autocmd.jax /*QuickFixCmdPre* -Quickfix quickfix.jax /*Quickfix* -R change.jax /*R* -RISC-OS os_risc.jax /*RISC-OS* -RISCOS os_risc.jax /*RISCOS* -RemoteReply autocmd.jax /*RemoteReply* -Replace insert.jax /*Replace* -Replace-mode insert.jax /*Replace-mode* -Root mbyte.jax /*Root* -Ruby if_ruby.jax /*Ruby* -Russian russian.jax /*Russian* -S change.jax /*S* -SHELL starting.jax /*SHELL* -SQLGetType ft_sql.jax /*SQLGetType* -SQLSetType ft_sql.jax /*SQLSetType* -Select visual.jax /*Select* -Select-mode visual.jax /*Select-mode* -Select-mode-mapping visual.jax /*Select-mode-mapping* -Session starting.jax /*Session* -SessionLoad-variable starting.jax /*SessionLoad-variable* -SessionLoadPost autocmd.jax /*SessionLoadPost* -ShellCmdPost autocmd.jax /*ShellCmdPost* -ShellFilterPost autocmd.jax /*ShellFilterPost* -SourceCmd autocmd.jax /*SourceCmd* -SourcePre autocmd.jax /*SourcePre* -SpellFileMissing autocmd.jax /*SpellFileMissing* -StdinReadPost autocmd.jax /*StdinReadPost* -StdinReadPre autocmd.jax /*StdinReadPre* -SwapExists autocmd.jax /*SwapExists* -Syntax autocmd.jax /*Syntax* -T motion.jax /*T* -TCL if_tcl.jax /*TCL* -TERM starting.jax /*TERM* -TSQL ft_sql.jax /*TSQL* -TTpro-telnet syntax.jax /*TTpro-telnet* -Tab intro.jax /*Tab* -TabEnter autocmd.jax /*TabEnter* -TabLeave autocmd.jax /*TabLeave* -Tcl if_tcl.jax /*Tcl* -TermChanged autocmd.jax /*TermChanged* -TermResponse autocmd.jax /*TermResponse* -Transact-SQL ft_sql.jax /*Transact-SQL* -U undo.jax /*U* -UTF-8 mbyte.jax /*UTF-8* -UTF8-xterm mbyte.jax /*UTF8-xterm* -Uganda uganda.jax /*Uganda* -Unicode mbyte.jax /*Unicode* -Unix os_unix.jax /*Unix* -Unix-format editing.jax /*Unix-format* -Unix-format-write editing.jax /*Unix-format-write* -User autocmd.jax /*User* -UserGettingBored autocmd.jax /*UserGettingBored* -V visual.jax /*V* -VIMINIT starting.jax /*VIMINIT* -VMS os_vms.jax /*VMS* -Vi intro.jax /*Vi* -View starting.jax /*View* -VimEnter autocmd.jax /*VimEnter* -VimLeave autocmd.jax /*VimLeave* -VimLeavePre autocmd.jax /*VimLeavePre* -VimResized autocmd.jax /*VimResized* -Vimball-copyright pi_vimball.jax /*Vimball-copyright* -Virtual-Replace-mode insert.jax /*Virtual-Replace-mode* -VisVim if_ole.jax /*VisVim* -Visual visual.jax /*Visual* -Visual-mode visual.jax /*Visual-mode* -W motion.jax /*W* -W10 message.jax /*W10* -W11 message.jax /*W11* -W12 message.jax /*W12* -W13 message.jax /*W13* -W14 message.jax /*W14* -W15 repeat.jax /*W15* -W16 message.jax /*W16* -W17 arabic.jax /*W17* -W18 syntax.jax /*W18* -WORD motion.jax /*WORD* -WWW intro.jax /*WWW* -Win32 os_win32.jax /*Win32* -WinEnter autocmd.jax /*WinEnter* -WinLeave autocmd.jax /*WinLeave* -X change.jax /*X* -X11 options.jax /*X11* -X11-icon gui_x11.jax /*X11-icon* -X11_mouse_shapes gui_x11.jax /*X11_mouse_shapes* -X1Drag term.jax /*X1Drag* -X1Mouse term.jax /*X1Mouse* -X1Release term.jax /*X1Release* -X2Drag term.jax /*X2Drag* -X2Mouse term.jax /*X2Mouse* -X2Release term.jax /*X2Release* -XIM mbyte.jax /*XIM* -XLFD mbyte.jax /*XLFD* -Y change.jax /*Y* -Y2K intro.jax /*Y2K* -ZQ editing.jax /*ZQ* -ZZ editing.jax /*ZZ* -[ index.jax /*[* -[# motion.jax /*[#* -[' motion.jax /*['* -[( motion.jax /*[(* -[++opt] editing.jax /*[++opt]* -[+cmd] editing.jax /*[+cmd]* -[..] pattern.jax /*[..]* -[/ motion.jax /*[\/* -[:alnum:] pattern.jax /*[:alnum:]* -[:alpha:] pattern.jax /*[:alpha:]* -[:backspace:] pattern.jax /*[:backspace:]* -[:blank:] pattern.jax /*[:blank:]* -[:cntrl:] pattern.jax /*[:cntrl:]* -[:digit:] pattern.jax /*[:digit:]* -[:escape:] pattern.jax /*[:escape:]* -[:graph:] pattern.jax /*[:graph:]* -[:lower:] pattern.jax /*[:lower:]* -[:print:] pattern.jax /*[:print:]* -[:punct:] pattern.jax /*[:punct:]* -[:return:] pattern.jax /*[:return:]* -[:space:] pattern.jax /*[:space:]* -[:tab:] pattern.jax /*[:tab:]* -[:upper:] pattern.jax /*[:upper:]* -[:xdigit:] pattern.jax /*[:xdigit:]* -[<MiddleMouse> change.jax /*[<MiddleMouse>* -[==] pattern.jax /*[==]* -[D tagsrch.jax /*[D* -[I tagsrch.jax /*[I* -[M motion.jax /*[M* -[P change.jax /*[P* -[[ motion.jax /*[[* -[] motion.jax /*[]* -[_CTRL-D tagsrch.jax /*[_CTRL-D* -[_CTRL-I tagsrch.jax /*[_CTRL-I* -[` motion.jax /*[`* -[c diff.jax /*[c* -[count] intro.jax /*[count]* -[d tagsrch.jax /*[d* -[f editing.jax /*[f* -[i tagsrch.jax /*[i* -[m motion.jax /*[m* -[p change.jax /*[p* -[pattern] pattern.jax /*[pattern]* -[quotex] intro.jax /*[quotex]* -[range] cmdline.jax /*[range]* -[star motion.jax /*[star* -[z fold.jax /*[z* -[{ motion.jax /*[{* -\0 change.jax /*\\0* -] index.jax /*]* -]# motion.jax /*]#* -]' motion.jax /*]'* -]) motion.jax /*])* -]/ motion.jax /*]\/* -]<MiddleMouse> change.jax /*]<MiddleMouse>* -]D tagsrch.jax /*]D* -]I tagsrch.jax /*]I* -]M motion.jax /*]M* -]P change.jax /*]P* -][ motion.jax /*][* -]] motion.jax /*]]* -]_CTRL-D tagsrch.jax /*]_CTRL-D* -]_CTRL-I tagsrch.jax /*]_CTRL-I* -]` motion.jax /*]`* -]c diff.jax /*]c* -]d tagsrch.jax /*]d* -]f editing.jax /*]f* -]i tagsrch.jax /*]i* -]m motion.jax /*]m* -]p change.jax /*]p* -]star motion.jax /*]star* -]z fold.jax /*]z* -]} motion.jax /*]}* -^ motion.jax /*^* -_ motion.jax /*_* -_exrc starting.jax /*_exrc* -_gvimrc gui.jax /*_gvimrc* -_vimrc starting.jax /*_vimrc* -` motion.jax /*`* -`( motion.jax /*`(* -`) motion.jax /*`)* -`-expansion editing.jax /*`-expansion* -`. motion.jax /*`.* -`0 motion.jax /*`0* -`< motion.jax /*`<* -`= editing.jax /*`=* -`> motion.jax /*`>* -`A motion.jax /*`A* -`[ motion.jax /*`[* -`] motion.jax /*`]* -`^ motion.jax /*`^* -`` motion.jax /*``* -`a motion.jax /*`a* -`quote motion.jax /*`quote* -`{ motion.jax /*`{* -`} motion.jax /*`}* -a insert.jax /*a* -a' motion.jax /*a'* -a( motion.jax /*a(* -a) motion.jax /*a)* -a4 print.jax /*a4* -a:0 eval.jax /*a:0* -a:000 eval.jax /*a:000* -a:1 eval.jax /*a:1* -a:firstline eval.jax /*a:firstline* -a:lastline eval.jax /*a:lastline* -a:var eval.jax /*a:var* -a< motion.jax /*a<* -a> motion.jax /*a>* -aB motion.jax /*aB* -aW motion.jax /*aW* -a[ motion.jax /*a[* -a] motion.jax /*a]* -a` motion.jax /*a`* -ab motion.jax /*ab* -abandon editing.jax /*abandon* -abbreviations map.jax /*abbreviations* -abel.vim syntax.jax /*abel.vim* -abs() eval.jax /*abs()* -acos() eval.jax /*acos()* -active-buffer windows.jax /*active-buffer* -ada#Create_Tags() ft_ada.jax /*ada#Create_Tags()* -ada#Jump_Tag() ft_ada.jax /*ada#Jump_Tag()* -ada#Listtags() ft_ada.jax /*ada#Listtags()* -ada#Switch_Syntax_Option() ft_ada.jax /*ada#Switch_Syntax_Option()* -ada#Word() ft_ada.jax /*ada#Word()* -ada-compiler ft_ada.jax /*ada-compiler* -ada-ctags ft_ada.jax /*ada-ctags* -ada-extra-plugins ft_ada.jax /*ada-extra-plugins* -ada-reference ft_ada.jax /*ada-reference* -ada.vim ft_ada.jax /*ada.vim* -add() eval.jax /*add()* -add-filetype-plugin usr_05.jax /*add-filetype-plugin* -add-global-plugin usr_05.jax /*add-global-plugin* -add-local-help usr_05.jax /*add-local-help* -add-option-flags options.jax /*add-option-flags* -add-plugin usr_05.jax /*add-plugin* -after-directory options.jax /*after-directory* -aleph options.jax /*aleph* -alt intro.jax /*alt* -alt-input debugger.jax /*alt-input* -alternate-file editing.jax /*alternate-file* -amiga-window starting.jax /*amiga-window* -anonymous-function eval.jax /*anonymous-function* -ant.vim syntax.jax /*ant.vim* -ap motion.jax /*ap* -apache.vim syntax.jax /*apache.vim* -append() eval.jax /*append()* -aquote motion.jax /*aquote* -arabic.txt arabic.jax /*arabic.txt* -arabicfonts arabic.jax /*arabicfonts* -arabickeymap arabic.jax /*arabickeymap* -arg-functions usr_41.jax /*arg-functions* -argc() eval.jax /*argc()* -argidx() eval.jax /*argidx()* -arglist editing.jax /*arglist* -arglist-position editing.jax /*arglist-position* -arglist-quit usr_07.jax /*arglist-quit* -argument-list editing.jax /*argument-list* -argv() eval.jax /*argv()* -as motion.jax /*as* -asin() eval.jax /*asin()* -asm.vim syntax.jax /*asm.vim* -asm68k syntax.jax /*asm68k* -asmh8300.vim syntax.jax /*asmh8300.vim* -at motion.jax /*at* -atan() eval.jax /*atan()* -atan2() eval.jax /*atan2()* -athena-intellimouse gui.jax /*athena-intellimouse* -attr-list syntax.jax /*attr-list* -author intro.jax /*author* -auto-format change.jax /*auto-format* -auto-setting options.jax /*auto-setting* -auto-shortname editing.jax /*auto-shortname* -autocmd-<> tips.jax /*autocmd-<>* -autocmd-buffer-local autocmd.jax /*autocmd-buffer-local* -autocmd-buflocal autocmd.jax /*autocmd-buflocal* -autocmd-changes autocmd.jax /*autocmd-changes* -autocmd-define autocmd.jax /*autocmd-define* -autocmd-disable autocmd.jax /*autocmd-disable* -autocmd-events autocmd.jax /*autocmd-events* -autocmd-events-abc autocmd.jax /*autocmd-events-abc* -autocmd-execute autocmd.jax /*autocmd-execute* -autocmd-groups autocmd.jax /*autocmd-groups* -autocmd-intro autocmd.jax /*autocmd-intro* -autocmd-list autocmd.jax /*autocmd-list* -autocmd-nested autocmd.jax /*autocmd-nested* -autocmd-osfiletypes filetype.jax /*autocmd-osfiletypes* -autocmd-patterns autocmd.jax /*autocmd-patterns* -autocmd-remove autocmd.jax /*autocmd-remove* -autocmd-searchpat autocmd.jax /*autocmd-searchpat* -autocmd-use autocmd.jax /*autocmd-use* -autocmd.txt autocmd.jax /*autocmd.txt* -autocommand autocmd.jax /*autocommand* -autocommand-events autocmd.jax /*autocommand-events* -autocommand-pattern autocmd.jax /*autocommand-pattern* -autoload eval.jax /*autoload* -autoload-functions eval.jax /*autoload-functions* -aw motion.jax /*aw* -a{ motion.jax /*a{* -a} motion.jax /*a}* -b motion.jax /*b* -b:changedtick-variable eval.jax /*b:changedtick-variable* -b:changelog_name filetype.jax /*b:changelog_name* -b:current_syntax-variable syntax.jax /*b:current_syntax-variable* -b:netrw_lastfile pi_netrw.jax /*b:netrw_lastfile* -b:var eval.jax /*b:var* -baan-folding syntax.jax /*baan-folding* -baan-syntax syntax.jax /*baan-syntax* -baan.vim syntax.jax /*baan.vim* -backslash intro.jax /*backslash* -backspace intro.jax /*backspace* -backspace-delete version4.jax /*backspace-delete* -backtick-expansion editing.jax /*backtick-expansion* -backup editing.jax /*backup* -backup-changed version4.jax /*backup-changed* -backup-extension version4.jax /*backup-extension* -backup-table editing.jax /*backup-table* -balloon-eval debugger.jax /*balloon-eval* -bar motion.jax /*bar* -bars help.jax /*bars* -base_font_name_list mbyte.jax /*base_font_name_list* -basic.vim syntax.jax /*basic.vim* -beep options.jax /*beep* -beos-colors os_beos.jax /*beos-colors* -beos-compiling os_beos.jax /*beos-compiling* -beos-dragndrop os_beos.jax /*beos-dragndrop* -beos-fonts os_beos.jax /*beos-fonts* -beos-general os_beos.jax /*beos-general* -beos-gui os_beos.jax /*beos-gui* -beos-launch os_beos.jax /*beos-launch* -beos-meta os_beos.jax /*beos-meta* -beos-mouse os_beos.jax /*beos-mouse* -beos-perl os_beos.jax /*beos-perl* -beos-timeout os_beos.jax /*beos-timeout* -beos-unicode os_beos.jax /*beos-unicode* -beos-utf8 os_beos.jax /*beos-utf8* -beos-vimdir os_beos.jax /*beos-vimdir* -beval_bufnr-variable eval.jax /*beval_bufnr-variable* -beval_col-variable eval.jax /*beval_col-variable* -beval_lnum-variable eval.jax /*beval_lnum-variable* -beval_text-variable eval.jax /*beval_text-variable* -beval_winnr-variable eval.jax /*beval_winnr-variable* -blockwise-examples visual.jax /*blockwise-examples* -blockwise-operators visual.jax /*blockwise-operators* -blockwise-register change.jax /*blockwise-register* -blockwise-visual visual.jax /*blockwise-visual* -blowfish options.jax /*blowfish* -bold syntax.jax /*bold* -bom-bytes mbyte.jax /*bom-bytes* -book intro.jax /*book* -bookmark usr_03.jax /*bookmark* -boolean options.jax /*boolean* -break-finally eval.jax /*break-finally* -browse() eval.jax /*browse()* -browsedir() eval.jax /*browsedir()* -browsefilter editing.jax /*browsefilter* -bufexists() eval.jax /*bufexists()* -buffer-functions usr_41.jax /*buffer-functions* -buffer-hidden windows.jax /*buffer-hidden* -buffer-list windows.jax /*buffer-list* -buffer-variable eval.jax /*buffer-variable* -buffer-write editing.jax /*buffer-write* -buffer_exists() eval.jax /*buffer_exists()* -buffer_name() eval.jax /*buffer_name()* -buffer_number() eval.jax /*buffer_number()* -buffers windows.jax /*buffers* -buffers-menu gui.jax /*buffers-menu* -buflisted() eval.jax /*buflisted()* -bufloaded() eval.jax /*bufloaded()* -bufname() eval.jax /*bufname()* -bufnr() eval.jax /*bufnr()* -bufwinnr() eval.jax /*bufwinnr()* -bug-reports intro.jax /*bug-reports* -bugreport.vim intro.jax /*bugreport.vim* -bugs intro.jax /*bugs* -builtin-terms term.jax /*builtin-terms* -builtin-tools gui.jax /*builtin-tools* -builtin_terms term.jax /*builtin_terms* -byte-count editing.jax /*byte-count* -byte2line() eval.jax /*byte2line()* -byteidx() eval.jax /*byteidx()* -bzip2 pi_gzip.jax /*bzip2* -c change.jax /*c* -c.vim syntax.jax /*c.vim* -cW change.jax /*cW* -c_# cmdline.jax /*c_#* -c_## cmdline.jax /*c_##* -c_#< cmdline.jax /*c_#<* -c_#n cmdline.jax /*c_#n* -c_% cmdline.jax /*c_%* -c_<BS> cmdline.jax /*c_<BS>* -c_<C-Left> cmdline.jax /*c_<C-Left>* -c_<C-R> cmdline.jax /*c_<C-R>* -c_<C-R>_<C-A> cmdline.jax /*c_<C-R>_<C-A>* -c_<C-R>_<C-F> cmdline.jax /*c_<C-R>_<C-F>* -c_<C-R>_<C-O> cmdline.jax /*c_<C-R>_<C-O>* -c_<C-R>_<C-P> cmdline.jax /*c_<C-R>_<C-P>* -c_<C-R>_<C-R> cmdline.jax /*c_<C-R>_<C-R>* -c_<C-R>_<C-W> cmdline.jax /*c_<C-R>_<C-W>* -c_<C-Right> cmdline.jax /*c_<C-Right>* -c_<CR> cmdline.jax /*c_<CR>* -c_<Del> cmdline.jax /*c_<Del>* -c_<Down> cmdline.jax /*c_<Down>* -c_<End> cmdline.jax /*c_<End>* -c_<Esc> cmdline.jax /*c_<Esc>* -c_<Home> cmdline.jax /*c_<Home>* -c_<Insert> cmdline.jax /*c_<Insert>* -c_<Left> cmdline.jax /*c_<Left>* -c_<LeftMouse> cmdline.jax /*c_<LeftMouse>* -c_<NL> cmdline.jax /*c_<NL>* -c_<PageDown> cmdline.jax /*c_<PageDown>* -c_<PageUp> cmdline.jax /*c_<PageUp>* -c_<Right> cmdline.jax /*c_<Right>* -c_<S-Down> cmdline.jax /*c_<S-Down>* -c_<S-Left> cmdline.jax /*c_<S-Left>* -c_<S-Right> cmdline.jax /*c_<S-Right>* -c_<S-Tab> cmdline.jax /*c_<S-Tab>* -c_<S-Up> cmdline.jax /*c_<S-Up>* -c_<Tab> cmdline.jax /*c_<Tab>* -c_<Up> cmdline.jax /*c_<Up>* -c_BS cmdline.jax /*c_BS* -c_CR cmdline.jax /*c_CR* -c_CTRL-A cmdline.jax /*c_CTRL-A* -c_CTRL-B cmdline.jax /*c_CTRL-B* -c_CTRL-C cmdline.jax /*c_CTRL-C* -c_CTRL-D cmdline.jax /*c_CTRL-D* -c_CTRL-E cmdline.jax /*c_CTRL-E* -c_CTRL-F cmdline.jax /*c_CTRL-F* -c_CTRL-H cmdline.jax /*c_CTRL-H* -c_CTRL-I cmdline.jax /*c_CTRL-I* -c_CTRL-J cmdline.jax /*c_CTRL-J* -c_CTRL-K cmdline.jax /*c_CTRL-K* -c_CTRL-L cmdline.jax /*c_CTRL-L* -c_CTRL-N cmdline.jax /*c_CTRL-N* -c_CTRL-P cmdline.jax /*c_CTRL-P* -c_CTRL-Q cmdline.jax /*c_CTRL-Q* -c_CTRL-R cmdline.jax /*c_CTRL-R* -c_CTRL-R_= cmdline.jax /*c_CTRL-R_=* -c_CTRL-R_CTRL-A cmdline.jax /*c_CTRL-R_CTRL-A* -c_CTRL-R_CTRL-F cmdline.jax /*c_CTRL-R_CTRL-F* -c_CTRL-R_CTRL-O cmdline.jax /*c_CTRL-R_CTRL-O* -c_CTRL-R_CTRL-P cmdline.jax /*c_CTRL-R_CTRL-P* -c_CTRL-R_CTRL-R cmdline.jax /*c_CTRL-R_CTRL-R* -c_CTRL-R_CTRL-W cmdline.jax /*c_CTRL-R_CTRL-W* -c_CTRL-U cmdline.jax /*c_CTRL-U* -c_CTRL-V cmdline.jax /*c_CTRL-V* -c_CTRL-W cmdline.jax /*c_CTRL-W* -c_CTRL-Y cmdline.jax /*c_CTRL-Y* -c_CTRL-\_CTRL-G intro.jax /*c_CTRL-\\_CTRL-G* -c_CTRL-\_CTRL-N intro.jax /*c_CTRL-\\_CTRL-N* -c_CTRL-\_e cmdline.jax /*c_CTRL-\\_e* -c_CTRL-] cmdline.jax /*c_CTRL-]* -c_CTRL-^ cmdline.jax /*c_CTRL-^* -c_CTRL-_ cmdline.jax /*c_CTRL-_* -c_Del cmdline.jax /*c_Del* -c_Down cmdline.jax /*c_Down* -c_End cmdline.jax /*c_End* -c_Esc cmdline.jax /*c_Esc* -c_Home cmdline.jax /*c_Home* -c_Insert cmdline.jax /*c_Insert* -c_Left cmdline.jax /*c_Left* -c_Right cmdline.jax /*c_Right* -c_Up cmdline.jax /*c_Up* -c_digraph cmdline.jax /*c_digraph* -c_wildchar cmdline.jax /*c_wildchar* -call() eval.jax /*call()* -carriage-return intro.jax /*carriage-return* -case change.jax /*case* -catch-all eval.jax /*catch-all* -catch-errors eval.jax /*catch-errors* -catch-interrupt eval.jax /*catch-interrupt* -catch-order eval.jax /*catch-order* -catch-text eval.jax /*catch-text* -cc change.jax /*cc* -ceil() eval.jax /*ceil()* -ch.vim syntax.jax /*ch.vim* -change-list-jumps motion.jax /*change-list-jumps* -change-name tips.jax /*change-name* -change-tabs change.jax /*change-tabs* -change.txt change.jax /*change.txt* -changelist motion.jax /*changelist* -changelog.vim syntax.jax /*changelog.vim* -changenr() eval.jax /*changenr()* -changetick eval.jax /*changetick* -changing change.jax /*changing* -char-variable eval.jax /*char-variable* -char2nr() eval.jax /*char2nr()* -characterwise motion.jax /*characterwise* -characterwise-register change.jax /*characterwise-register* -characterwise-visual visual.jax /*characterwise-visual* -charconvert_from-variable eval.jax /*charconvert_from-variable* -charconvert_to-variable eval.jax /*charconvert_to-variable* -charity uganda.jax /*charity* -charset mbyte.jax /*charset* -charset-conversion mbyte.jax /*charset-conversion* -chill.vim syntax.jax /*chill.vim* -cindent() eval.jax /*cindent()* -cinkeys-format indent.jax /*cinkeys-format* -cino-# indent.jax /*cino-#* -cino-( indent.jax /*cino-(* -cino-) indent.jax /*cino-)* -cino-+ indent.jax /*cino-+* -cino-/ indent.jax /*cino-\/* -cino-2 indent.jax /*cino-2* -cino-: indent.jax /*cino-:* -cino-= indent.jax /*cino-=* -cino-> indent.jax /*cino->* -cino-C indent.jax /*cino-C* -cino-J indent.jax /*cino-J* -cino-L indent.jax /*cino-L* -cino-M indent.jax /*cino-M* -cino-N indent.jax /*cino-N* -cino-U indent.jax /*cino-U* -cino-W indent.jax /*cino-W* -cino-^ indent.jax /*cino-^* -cino-b indent.jax /*cino-b* -cino-c indent.jax /*cino-c* -cino-e indent.jax /*cino-e* -cino-f indent.jax /*cino-f* -cino-g indent.jax /*cino-g* -cino-h indent.jax /*cino-h* -cino-i indent.jax /*cino-i* -cino-j indent.jax /*cino-j* -cino-l indent.jax /*cino-l* -cino-m indent.jax /*cino-m* -cino-n indent.jax /*cino-n* -cino-p indent.jax /*cino-p* -cino-star indent.jax /*cino-star* -cino-t indent.jax /*cino-t* -cino-u indent.jax /*cino-u* -cino-{ indent.jax /*cino-{* -cino-} indent.jax /*cino-}* -cinoptions-values indent.jax /*cinoptions-values* -clear-undo undo.jax /*clear-undo* -clearmatches() eval.jax /*clearmatches()* -client-server remote.jax /*client-server* -clientserver remote.jax /*clientserver* -clipboard gui.jax /*clipboard* -cmdarg-variable eval.jax /*cmdarg-variable* -cmdbang-variable eval.jax /*cmdbang-variable* -cmdline-arguments vi_diff.jax /*cmdline-arguments* -cmdline-completion cmdline.jax /*cmdline-completion* -cmdline-editing cmdline.jax /*cmdline-editing* -cmdline-history cmdline.jax /*cmdline-history* -cmdline-lines cmdline.jax /*cmdline-lines* -cmdline-ranges cmdline.jax /*cmdline-ranges* -cmdline-special cmdline.jax /*cmdline-special* -cmdline-too-long cmdline.jax /*cmdline-too-long* -cmdline-window cmdline.jax /*cmdline-window* -cmdline.txt cmdline.jax /*cmdline.txt* -cmdwin cmdline.jax /*cmdwin* -cmdwin-char cmdline.jax /*cmdwin-char* -cobol.vim syntax.jax /*cobol.vim* -codeset mbyte.jax /*codeset* -coding-style develop.jax /*coding-style* -col() eval.jax /*col()* -coldfusion.vim syntax.jax /*coldfusion.vim* -collapse tips.jax /*collapse* -color-xterm syntax.jax /*color-xterm* -coloring syntax.jax /*coloring* -colortest.vim syntax.jax /*colortest.vim* -command-line-functions usr_41.jax /*command-line-functions* -command-line-window cmdline.jax /*command-line-window* -command-mode intro.jax /*command-mode* -compatible-default starting.jax /*compatible-default* -compiler-compaqada ft_ada.jax /*compiler-compaqada* -compiler-decada ft_ada.jax /*compiler-decada* -compiler-gcc quickfix.jax /*compiler-gcc* -compiler-gnat ft_ada.jax /*compiler-gnat* -compiler-hpada ft_ada.jax /*compiler-hpada* -compiler-manx quickfix.jax /*compiler-manx* -compiler-perl quickfix.jax /*compiler-perl* -compiler-pyunit quickfix.jax /*compiler-pyunit* -compiler-select quickfix.jax /*compiler-select* -compiler-tex quickfix.jax /*compiler-tex* -compiler-vaxada ft_ada.jax /*compiler-vaxada* -compl-current insert.jax /*compl-current* -compl-define insert.jax /*compl-define* -compl-dictionary insert.jax /*compl-dictionary* -compl-filename insert.jax /*compl-filename* -compl-function insert.jax /*compl-function* -compl-generic insert.jax /*compl-generic* -compl-keyword insert.jax /*compl-keyword* -compl-omni insert.jax /*compl-omni* -compl-omni-filetypes insert.jax /*compl-omni-filetypes* -compl-spelling insert.jax /*compl-spelling* -compl-tag insert.jax /*compl-tag* -compl-vim insert.jax /*compl-vim* -compl-whole-line insert.jax /*compl-whole-line* -complete() eval.jax /*complete()* -complete-functions insert.jax /*complete-functions* -complete-items insert.jax /*complete-items* -complete_CTRL-E insert.jax /*complete_CTRL-E* -complete_CTRL-Y insert.jax /*complete_CTRL-Y* -complete_add() eval.jax /*complete_add()* -complete_check() eval.jax /*complete_check()* -completion-functions usr_41.jax /*completion-functions* -complex-change change.jax /*complex-change* -complex-repeat repeat.jax /*complex-repeat* -compress pi_gzip.jax /*compress* -conceal syntax.jax /*conceal* -confirm() eval.jax /*confirm()* -connection-refused message.jax /*connection-refused* -console-menus gui.jax /*console-menus* -control intro.jax /*control* -conversion-server mbyte.jax /*conversion-server* -convert-to-HTML syntax.jax /*convert-to-HTML* -convert-to-XHTML syntax.jax /*convert-to-XHTML* -convert-to-XML syntax.jax /*convert-to-XML* -copy() eval.jax /*copy()* -copy-diffs diff.jax /*copy-diffs* -copy-move change.jax /*copy-move* -copying uganda.jax /*copying* -copyright uganda.jax /*copyright* -cos() eval.jax /*cos()* -cosh() eval.jax /*cosh()* -count intro.jax /*count* -count() eval.jax /*count()* -count-bytes tips.jax /*count-bytes* -count-items tips.jax /*count-items* -count-variable eval.jax /*count-variable* -count1-variable eval.jax /*count1-variable* -cpo-! options.jax /*cpo-!* -cpo-# options.jax /*cpo-#* -cpo-$ options.jax /*cpo-$* -cpo-% options.jax /*cpo-%* -cpo-& options.jax /*cpo-&* -cpo-+ options.jax /*cpo-+* -cpo-- options.jax /*cpo--* -cpo-. options.jax /*cpo-.* -cpo-/ options.jax /*cpo-\/* -cpo-; options.jax /*cpo-;* -cpo-< options.jax /*cpo-<* -cpo-> options.jax /*cpo->* -cpo-A options.jax /*cpo-A* -cpo-B options.jax /*cpo-B* -cpo-C options.jax /*cpo-C* -cpo-D options.jax /*cpo-D* -cpo-E options.jax /*cpo-E* -cpo-F options.jax /*cpo-F* -cpo-H options.jax /*cpo-H* -cpo-I options.jax /*cpo-I* -cpo-J options.jax /*cpo-J* -cpo-K options.jax /*cpo-K* -cpo-L options.jax /*cpo-L* -cpo-M options.jax /*cpo-M* -cpo-O options.jax /*cpo-O* -cpo-P options.jax /*cpo-P* -cpo-R options.jax /*cpo-R* -cpo-S options.jax /*cpo-S* -cpo-W options.jax /*cpo-W* -cpo-X options.jax /*cpo-X* -cpo-Z options.jax /*cpo-Z* -cpo-\ options.jax /*cpo-\\* -cpo-a options.jax /*cpo-a* -cpo-b options.jax /*cpo-b* -cpo-bar options.jax /*cpo-bar* -cpo-c options.jax /*cpo-c* -cpo-d options.jax /*cpo-d* -cpo-e options.jax /*cpo-e* -cpo-f options.jax /*cpo-f* -cpo-g options.jax /*cpo-g* -cpo-i options.jax /*cpo-i* -cpo-j options.jax /*cpo-j* -cpo-k options.jax /*cpo-k* -cpo-l options.jax /*cpo-l* -cpo-m options.jax /*cpo-m* -cpo-n options.jax /*cpo-n* -cpo-o options.jax /*cpo-o* -cpo-p options.jax /*cpo-p* -cpo-q options.jax /*cpo-q* -cpo-r options.jax /*cpo-r* -cpo-s options.jax /*cpo-s* -cpo-star options.jax /*cpo-star* -cpo-t options.jax /*cpo-t* -cpo-u options.jax /*cpo-u* -cpo-v options.jax /*cpo-v* -cpo-w options.jax /*cpo-w* -cpo-x options.jax /*cpo-x* -cpo-y options.jax /*cpo-y* -cpo-{ options.jax /*cpo-{* -crash-recovery recover.jax /*crash-recovery* -creating-menus gui.jax /*creating-menus* -credits intro.jax /*credits* -crontab options.jax /*crontab* -cs-find if_cscop.jax /*cs-find* -cs7-problem term.jax /*cs7-problem* -cscope if_cscop.jax /*cscope* -cscope-commands if_cscop.jax /*cscope-commands* -cscope-find if_cscop.jax /*cscope-find* -cscope-howtouse if_cscop.jax /*cscope-howtouse* -cscope-info if_cscop.jax /*cscope-info* -cscope-intro if_cscop.jax /*cscope-intro* -cscope-limitations if_cscop.jax /*cscope-limitations* -cscope-options if_cscop.jax /*cscope-options* -cscope-suggestions if_cscop.jax /*cscope-suggestions* -cscope-win32 if_cscop.jax /*cscope-win32* -cscope_connection() eval.jax /*cscope_connection()* -cscopepathcomp if_cscop.jax /*cscopepathcomp* -cscopeprg if_cscop.jax /*cscopeprg* -cscopequickfix if_cscop.jax /*cscopequickfix* -cscoperelative if_cscop.jax /*cscoperelative* -cscopetag if_cscop.jax /*cscopetag* -cscopetagorder if_cscop.jax /*cscopetagorder* -cscopeverbose if_cscop.jax /*cscopeverbose* -csh.vim syntax.jax /*csh.vim* -cspc if_cscop.jax /*cspc* -csprg if_cscop.jax /*csprg* -csqf if_cscop.jax /*csqf* -csre if_cscop.jax /*csre* -cst if_cscop.jax /*cst* -csto if_cscop.jax /*csto* -csverb if_cscop.jax /*csverb* -ctags tagsrch.jax /*ctags* -cterm-colors syntax.jax /*cterm-colors* -ctrl intro.jax /*ctrl* -ctype-variable eval.jax /*ctype-variable* -curly-braces-function-names eval.jax /*curly-braces-function-names* -curly-braces-names eval.jax /*curly-braces-names* -current-directory editing.jax /*current-directory* -current-file editing.jax /*current-file* -current_compiler quickfix.jax /*current_compiler* -cursor() eval.jax /*cursor()* -cursor-blinking options.jax /*cursor-blinking* -cursor-down intro.jax /*cursor-down* -cursor-functions usr_41.jax /*cursor-functions* -cursor-left intro.jax /*cursor-left* -cursor-motions motion.jax /*cursor-motions* -cursor-position pattern.jax /*cursor-position* -cursor-right intro.jax /*cursor-right* -cursor-up intro.jax /*cursor-up* -cursor_down intro.jax /*cursor_down* -cursor_left intro.jax /*cursor_left* -cursor_right intro.jax /*cursor_right* -cursor_up intro.jax /*cursor_up* -cw change.jax /*cw* -cweb.vim syntax.jax /*cweb.vim* -cynlib.vim syntax.jax /*cynlib.vim* -d change.jax /*d* -daB motion.jax /*daB* -daW motion.jax /*daW* -dab motion.jax /*dab* -dap motion.jax /*dap* -das motion.jax /*das* -date-functions usr_41.jax /*date-functions* -dav pi_netrw.jax /*dav* -davs pi_netrw.jax /*davs* -daw motion.jax /*daw* -dd change.jax /*dd* -debug-gcc debug.jax /*debug-gcc* -debug-highlight debugger.jax /*debug-highlight* -debug-leaks debug.jax /*debug-leaks* -debug-minidump debug.jax /*debug-minidump* -debug-mode repeat.jax /*debug-mode* -debug-scripts repeat.jax /*debug-scripts* -debug-signs debugger.jax /*debug-signs* -debug-vim debug.jax /*debug-vim* -debug-vs2005 debug.jax /*debug-vs2005* -debug-win32 debug.jax /*debug-win32* -debug-windbg debug.jax /*debug-windbg* -debug.txt debug.jax /*debug.txt* -debugger-compilation debugger.jax /*debugger-compilation* -debugger-features debugger.jax /*debugger-features* -debugger-integration debugger.jax /*debugger-integration* -debugger-support debugger.jax /*debugger-support* -debugger.txt debugger.jax /*debugger.txt* -dec-mouse options.jax /*dec-mouse* -decada_members ft_ada.jax /*decada_members* -deepcopy() eval.jax /*deepcopy()* -definition-search tagsrch.jax /*definition-search* -definitions intro.jax /*definitions* -delete() eval.jax /*delete()* -delete-insert change.jax /*delete-insert* -delete-menus gui.jax /*delete-menus* -deleting change.jax /*deleting* -design-assumptions develop.jax /*design-assumptions* -design-compatible develop.jax /*design-compatible* -design-decisions develop.jax /*design-decisions* -design-documented develop.jax /*design-documented* -design-flexible develop.jax /*design-flexible* -design-goals develop.jax /*design-goals* -design-improved develop.jax /*design-improved* -design-maintain develop.jax /*design-maintain* -design-multi-platform develop.jax /*design-multi-platform* -design-not develop.jax /*design-not* -design-speed-size develop.jax /*design-speed-size* -desktop.vim syntax.jax /*desktop.vim* -develop-spell develop.jax /*develop-spell* -develop-spell-suggestions develop.jax /*develop-spell-suggestions* -develop.txt develop.jax /*develop.txt* -development develop.jax /*development* -dh change.jax /*dh* -diB motion.jax /*diB* -diW motion.jax /*diW* -dialog gui_w32.jax /*dialog* -dib motion.jax /*dib* -dict-functions usr_41.jax /*dict-functions* -dict-identity eval.jax /*dict-identity* -dict-modification eval.jax /*dict-modification* -did_filetype() eval.jax /*did_filetype()* -diff diff.jax /*diff* -diff-diffexpr diff.jax /*diff-diffexpr* -diff-mode diff.jax /*diff-mode* -diff-options diff.jax /*diff-options* -diff-original-file diff.jax /*diff-original-file* -diff-patchexpr diff.jax /*diff-patchexpr* -diff.txt diff.jax /*diff.txt* -diff_filler() eval.jax /*diff_filler()* -diff_hlID() eval.jax /*diff_hlID()* -digraph digraph.jax /*digraph* -digraph-arg change.jax /*digraph-arg* -digraph-encoding digraph.jax /*digraph-encoding* -digraph-table digraph.jax /*digraph-table* -digraph-table-mbyte digraph.jax /*digraph-table-mbyte* -digraph.txt digraph.jax /*digraph.txt* -digraphs digraph.jax /*digraphs* -digraphs-default digraph.jax /*digraphs-default* -digraphs-define digraph.jax /*digraphs-define* -digraphs-use digraph.jax /*digraphs-use* -dip motion.jax /*dip* -dircolors.vim syntax.jax /*dircolors.vim* -dis motion.jax /*dis* -disable-menus gui.jax /*disable-menus* -distribute-script usr_41.jax /*distribute-script* -distribution intro.jax /*distribution* -diw motion.jax /*diw* -dl change.jax /*dl* -do diff.jax /*do* -doc-file-list help.jax /*doc-file-list* -docbk.vim syntax.jax /*docbk.vim* -docbksgml.vim syntax.jax /*docbksgml.vim* -docbkxml.vim syntax.jax /*docbkxml.vim* -docbook syntax.jax /*docbook* -donate uganda.jax /*donate* -dos os_dos.jax /*dos* -dos-:cd os_dos.jax /*dos-:cd* -dos-CTRL-Break os_dos.jax /*dos-CTRL-Break* -dos-backslash os_dos.jax /*dos-backslash* -dos-colors os_dos.jax /*dos-colors* -dos-file-formats os_dos.jax /*dos-file-formats* -dos-locations os_dos.jax /*dos-locations* -dos-shell os_dos.jax /*dos-shell* -dos-standard-mappings os_dos.jax /*dos-standard-mappings* -dos-temp-files os_dos.jax /*dos-temp-files* -dos16 os_msdos.jax /*dos16* -dos32 os_msdos.jax /*dos32* -dosbatch.vim syntax.jax /*dosbatch.vim* -double-click term.jax /*double-click* -download intro.jax /*download* -doxygen-syntax syntax.jax /*doxygen-syntax* -doxygen.vim syntax.jax /*doxygen.vim* -dp diff.jax /*dp* -drag-n-drop gui.jax /*drag-n-drop* -drag-n-drop-win32 gui_w32.jax /*drag-n-drop-win32* -drag-status-line term.jax /*drag-status-line* -dtd.vim syntax.jax /*dtd.vim* -dtd2vim insert.jax /*dtd2vim* -dying-variable eval.jax /*dying-variable* -e motion.jax /*e* -easy starting.jax /*easy* -edit-a-file editing.jax /*edit-a-file* -edit-binary editing.jax /*edit-binary* -edit-dialogs editing.jax /*edit-dialogs* -edit-files editing.jax /*edit-files* -edit-intro editing.jax /*edit-intro* -edit-no-break usr_25.jax /*edit-no-break* -editing.txt editing.jax /*editing.txt* -efm-%> quickfix.jax /*efm-%>* -efm-entries quickfix.jax /*efm-entries* -efm-ignore quickfix.jax /*efm-ignore* -eiffel.vim syntax.jax /*eiffel.vim* -emacs-keys tips.jax /*emacs-keys* -emacs-tags tagsrch.jax /*emacs-tags* -emacs_tags tagsrch.jax /*emacs_tags* -empty() eval.jax /*empty()* -encoding-names mbyte.jax /*encoding-names* -encoding-table mbyte.jax /*encoding-table* -encoding-values mbyte.jax /*encoding-values* -encryption editing.jax /*encryption* -end intro.jax /*end* -end-of-file pattern.jax /*end-of-file* -enlightened-terminal syntax.jax /*enlightened-terminal* -erlang.vim syntax.jax /*erlang.vim* -errmsg-variable eval.jax /*errmsg-variable* -error-file-format quickfix.jax /*error-file-format* -error-messages message.jax /*error-messages* -errorformat quickfix.jax /*errorformat* -errorformat-Jikes quickfix.jax /*errorformat-Jikes* -errorformat-LaTeX quickfix.jax /*errorformat-LaTeX* -errorformat-Perl quickfix.jax /*errorformat-Perl* -errorformat-ant quickfix.jax /*errorformat-ant* -errorformat-changed version4.jax /*errorformat-changed* -errorformat-jade quickfix.jax /*errorformat-jade* -errorformat-javac quickfix.jax /*errorformat-javac* -errorformat-multi-line quickfix.jax /*errorformat-multi-line* -errorformat-separate-filename quickfix.jax /*errorformat-separate-filename* -errorformats quickfix.jax /*errorformats* -errors message.jax /*errors* -escape intro.jax /*escape* -escape() eval.jax /*escape()* -escape-bar version4.jax /*escape-bar* -eval eval.jax /*eval* -eval() eval.jax /*eval()* -eval-examples eval.jax /*eval-examples* -eval-sandbox eval.jax /*eval-sandbox* -eval.txt eval.jax /*eval.txt* -eventhandler() eval.jax /*eventhandler()* -eview starting.jax /*eview* -evim starting.jax /*evim* -evim-keys starting.jax /*evim-keys* -evim.vim starting.jax /*evim.vim* -ex starting.jax /*ex* -ex-cmd-index index.jax /*ex-cmd-index* -ex-edit-index index.jax /*ex-edit-index* -ex-flags cmdline.jax /*ex-flags* -ex: options.jax /*ex:* -except-autocmd eval.jax /*except-autocmd* -except-autocmd-Cmd eval.jax /*except-autocmd-Cmd* -except-autocmd-Post eval.jax /*except-autocmd-Post* -except-autocmd-Pre eval.jax /*except-autocmd-Pre* -except-autocmd-ill eval.jax /*except-autocmd-ill* -except-compat eval.jax /*except-compat* -except-examine eval.jax /*except-examine* -except-from-finally eval.jax /*except-from-finally* -except-hier-param eval.jax /*except-hier-param* -except-several-errors eval.jax /*except-several-errors* -except-single-line eval.jax /*except-single-line* -except-syntax-err eval.jax /*except-syntax-err* -except-syntax-error eval.jax /*except-syntax-error* -exception-handling eval.jax /*exception-handling* -exception-variable eval.jax /*exception-variable* -exclusive motion.jax /*exclusive* -exclusive-linewise motion.jax /*exclusive-linewise* -executable() eval.jax /*executable()* -execute-menus gui.jax /*execute-menus* -exim starting.jax /*exim* -exists() eval.jax /*exists()* -exp() eval.jax /*exp()* -expand() eval.jax /*expand()* -expand-env options.jax /*expand-env* -expand-environment-var options.jax /*expand-environment-var* -expr eval.jax /*expr* -expr-! eval.jax /*expr-!* -expr-!= eval.jax /*expr-!=* -expr-!=# eval.jax /*expr-!=#* -expr-!=? eval.jax /*expr-!=?* -expr-!~ eval.jax /*expr-!~* -expr-!~# eval.jax /*expr-!~#* -expr-!~? eval.jax /*expr-!~?* -expr-% eval.jax /*expr-%* -expr-&& eval.jax /*expr-&&* -expr-' eval.jax /*expr-'* -expr-+ eval.jax /*expr-+* -expr-- eval.jax /*expr--* -expr-. eval.jax /*expr-.* -expr-/ eval.jax /*expr-\/* -expr-< eval.jax /*expr-<* -expr-<# eval.jax /*expr-<#* -expr-<= eval.jax /*expr-<=* -expr-<=# eval.jax /*expr-<=#* -expr-<=? eval.jax /*expr-<=?* -expr-<? eval.jax /*expr-<?* -expr-== eval.jax /*expr-==* -expr-==# eval.jax /*expr-==#* -expr-==? eval.jax /*expr-==?* -expr-=~ eval.jax /*expr-=~* -expr-=~# eval.jax /*expr-=~#* -expr-=~? eval.jax /*expr-=~?* -expr-> eval.jax /*expr->* -expr-># eval.jax /*expr->#* -expr->= eval.jax /*expr->=* -expr->=# eval.jax /*expr->=#* -expr->=? eval.jax /*expr->=?* -expr->? eval.jax /*expr->?* -expr-[:] eval.jax /*expr-[:]* -expr-[] eval.jax /*expr-[]* -expr-barbar eval.jax /*expr-barbar* -expr-entry eval.jax /*expr-entry* -expr-env eval.jax /*expr-env* -expr-env-expand eval.jax /*expr-env-expand* -expr-function eval.jax /*expr-function* -expr-is eval.jax /*expr-is* -expr-is# eval.jax /*expr-is#* -expr-is? eval.jax /*expr-is?* -expr-isnot eval.jax /*expr-isnot* -expr-isnot# eval.jax /*expr-isnot#* -expr-isnot? eval.jax /*expr-isnot?* -expr-nesting eval.jax /*expr-nesting* -expr-number eval.jax /*expr-number* -expr-option eval.jax /*expr-option* -expr-quote eval.jax /*expr-quote* -expr-register eval.jax /*expr-register* -expr-star eval.jax /*expr-star* -expr-string eval.jax /*expr-string* -expr-unary-+ eval.jax /*expr-unary-+* -expr-unary-- eval.jax /*expr-unary--* -expr-variable eval.jax /*expr-variable* -expr1 eval.jax /*expr1* -expr2 eval.jax /*expr2* -expr3 eval.jax /*expr3* -expr4 eval.jax /*expr4* -expr5 eval.jax /*expr5* -expr6 eval.jax /*expr6* -expr7 eval.jax /*expr7* -expr8 eval.jax /*expr8* -expr9 eval.jax /*expr9* -expression eval.jax /*expression* -expression-commands eval.jax /*expression-commands* -expression-syntax eval.jax /*expression-syntax* -exrc starting.jax /*exrc* -extend() eval.jax /*extend()* -extension-removal cmdline.jax /*extension-removal* -f motion.jax /*f* -faq intro.jax /*faq* -farsi farsi.jax /*farsi* -farsi.txt farsi.jax /*farsi.txt* -fasm.vim syntax.jax /*fasm.vim* -fcs_choice-variable eval.jax /*fcs_choice-variable* -fcs_reason-variable eval.jax /*fcs_reason-variable* -feature-list eval.jax /*feature-list* -feedkeys() eval.jax /*feedkeys()* -fetch pi_netrw.jax /*fetch* -file-formats editing.jax /*file-formats* -file-functions usr_41.jax /*file-functions* -file-pattern autocmd.jax /*file-pattern* -file-read insert.jax /*file-read* -file-searching editing.jax /*file-searching* -file-type filetype.jax /*file-type* -file-types filetype.jax /*file-types* -file_readable() eval.jax /*file_readable()* -filename-backslash cmdline.jax /*filename-backslash* -filename-modifiers cmdline.jax /*filename-modifiers* -filereadable() eval.jax /*filereadable()* -filetype filetype.jax /*filetype* -filetype-detect filetype.jax /*filetype-detect* -filetype-ignore filetype.jax /*filetype-ignore* -filetype-overrule filetype.jax /*filetype-overrule* -filetype-plugin usr_43.jax /*filetype-plugin* -filetype-plugins filetype.jax /*filetype-plugins* -filetype.txt filetype.jax /*filetype.txt* -filetypes filetype.jax /*filetypes* -filewritable() eval.jax /*filewritable()* -filter change.jax /*filter* -filter() eval.jax /*filter()* -find-manpage usr_12.jax /*find-manpage* -find-replace usr_10.jax /*find-replace* -finddir() eval.jax /*finddir()* -findfile() eval.jax /*findfile()* -flexwiki.vim syntax.jax /*flexwiki.vim* -float-e eval.jax /*float-e* -float-functions usr_41.jax /*float-functions* -float-pi eval.jax /*float-pi* -float2nr() eval.jax /*float2nr()* -floating-point-format eval.jax /*floating-point-format* -floating-point-precision eval.jax /*floating-point-precision* -floor() eval.jax /*floor()* -fmod() eval.jax /*fmod()* -fname_diff-variable eval.jax /*fname_diff-variable* -fname_in-variable eval.jax /*fname_in-variable* -fname_new-variable eval.jax /*fname_new-variable* -fname_out-variable eval.jax /*fname_out-variable* -fnameescape() eval.jax /*fnameescape()* -fnamemodify() eval.jax /*fnamemodify()* -fo-table change.jax /*fo-table* -fold-behavior fold.jax /*fold-behavior* -fold-colors fold.jax /*fold-colors* -fold-commands fold.jax /*fold-commands* -fold-create-marker fold.jax /*fold-create-marker* -fold-delete-marker fold.jax /*fold-delete-marker* -fold-diff fold.jax /*fold-diff* -fold-expr fold.jax /*fold-expr* -fold-foldcolumn fold.jax /*fold-foldcolumn* -fold-foldlevel fold.jax /*fold-foldlevel* -fold-foldtext fold.jax /*fold-foldtext* -fold-indent fold.jax /*fold-indent* -fold-manual fold.jax /*fold-manual* -fold-marker fold.jax /*fold-marker* -fold-methods fold.jax /*fold-methods* -fold-options fold.jax /*fold-options* -fold-syntax fold.jax /*fold-syntax* -fold.txt fold.jax /*fold.txt* -foldclosed() eval.jax /*foldclosed()* -foldclosedend() eval.jax /*foldclosedend()* -folddashes-variable eval.jax /*folddashes-variable* -foldend-variable eval.jax /*foldend-variable* -folding fold.jax /*folding* -folding-functions usr_41.jax /*folding-functions* -foldlevel() eval.jax /*foldlevel()* -foldlevel-variable eval.jax /*foldlevel-variable* -folds fold.jax /*folds* -foldstart-variable eval.jax /*foldstart-variable* -foldtext() eval.jax /*foldtext()* -foldtextresult() eval.jax /*foldtextresult()* -font-sizes gui_x11.jax /*font-sizes* -fontset mbyte.jax /*fontset* -foreground() eval.jax /*foreground()* -fork os_unix.jax /*fork* -form.vim syntax.jax /*form.vim* -format-bullet-list tips.jax /*format-bullet-list* -format-comments change.jax /*format-comments* -formatting change.jax /*formatting* -formfeed intro.jax /*formfeed* -fortran.vim syntax.jax /*fortran.vim* -frombook usr_01.jax /*frombook* -ft-abel-syntax syntax.jax /*ft-abel-syntax* -ft-ada-commands ft_ada.jax /*ft-ada-commands* -ft-ada-constants ft_ada.jax /*ft-ada-constants* -ft-ada-functions ft_ada.jax /*ft-ada-functions* -ft-ada-indent ft_ada.jax /*ft-ada-indent* -ft-ada-omni ft_ada.jax /*ft-ada-omni* -ft-ada-options ft_ada.jax /*ft-ada-options* -ft-ada-plugin ft_ada.jax /*ft-ada-plugin* -ft-ada-syntax ft_ada.jax /*ft-ada-syntax* -ft-ada-variables ft_ada.jax /*ft-ada-variables* -ft-ant-syntax syntax.jax /*ft-ant-syntax* -ft-apache-syntax syntax.jax /*ft-apache-syntax* -ft-asm-syntax syntax.jax /*ft-asm-syntax* -ft-asm68k-syntax syntax.jax /*ft-asm68k-syntax* -ft-asmh8300-syntax syntax.jax /*ft-asmh8300-syntax* -ft-aspperl-syntax syntax.jax /*ft-aspperl-syntax* -ft-aspvbs-syntax syntax.jax /*ft-aspvbs-syntax* -ft-bash-syntax syntax.jax /*ft-bash-syntax* -ft-basic-syntax syntax.jax /*ft-basic-syntax* -ft-c-omni insert.jax /*ft-c-omni* -ft-c-syntax syntax.jax /*ft-c-syntax* -ft-ch-syntax syntax.jax /*ft-ch-syntax* -ft-changelog-plugin filetype.jax /*ft-changelog-plugin* -ft-changelog-syntax syntax.jax /*ft-changelog-syntax* -ft-chill-syntax syntax.jax /*ft-chill-syntax* -ft-cobol-syntax syntax.jax /*ft-cobol-syntax* -ft-coldfusion-syntax syntax.jax /*ft-coldfusion-syntax* -ft-csh-syntax syntax.jax /*ft-csh-syntax* -ft-css-omni insert.jax /*ft-css-omni* -ft-cweb-syntax syntax.jax /*ft-cweb-syntax* -ft-cynlib-syntax syntax.jax /*ft-cynlib-syntax* -ft-desktop-syntax syntax.jax /*ft-desktop-syntax* -ft-dircolors-syntax syntax.jax /*ft-dircolors-syntax* -ft-docbk-syntax syntax.jax /*ft-docbk-syntax* -ft-docbksgml-syntax syntax.jax /*ft-docbksgml-syntax* -ft-docbkxml-syntax syntax.jax /*ft-docbkxml-syntax* -ft-dosbatch-syntax syntax.jax /*ft-dosbatch-syntax* -ft-dtd-syntax syntax.jax /*ft-dtd-syntax* -ft-eiffel-syntax syntax.jax /*ft-eiffel-syntax* -ft-erlang-syntax syntax.jax /*ft-erlang-syntax* -ft-flexwiki-syntax syntax.jax /*ft-flexwiki-syntax* -ft-form-syntax syntax.jax /*ft-form-syntax* -ft-fortran-indent indent.jax /*ft-fortran-indent* -ft-fortran-plugin filetype.jax /*ft-fortran-plugin* -ft-fortran-syntax syntax.jax /*ft-fortran-syntax* -ft-fvwm-syntax syntax.jax /*ft-fvwm-syntax* -ft-gitcommit-plugin filetype.jax /*ft-gitcommit-plugin* -ft-groff-syntax syntax.jax /*ft-groff-syntax* -ft-gsp-syntax syntax.jax /*ft-gsp-syntax* -ft-haskell-syntax syntax.jax /*ft-haskell-syntax* -ft-html-omni insert.jax /*ft-html-omni* -ft-html-syntax syntax.jax /*ft-html-syntax* -ft-htmlos-syntax syntax.jax /*ft-htmlos-syntax* -ft-ia64-syntax syntax.jax /*ft-ia64-syntax* -ft-inform-syntax syntax.jax /*ft-inform-syntax* -ft-java-syntax syntax.jax /*ft-java-syntax* -ft-javascript-omni insert.jax /*ft-javascript-omni* -ft-ksh-syntax syntax.jax /*ft-ksh-syntax* -ft-lace-syntax syntax.jax /*ft-lace-syntax* -ft-lex-syntax syntax.jax /*ft-lex-syntax* -ft-lifelines-syntax syntax.jax /*ft-lifelines-syntax* -ft-lisp-syntax syntax.jax /*ft-lisp-syntax* -ft-lite-syntax syntax.jax /*ft-lite-syntax* -ft-lpc-syntax syntax.jax /*ft-lpc-syntax* -ft-lua-syntax syntax.jax /*ft-lua-syntax* -ft-mail-plugin filetype.jax /*ft-mail-plugin* -ft-mail.vim syntax.jax /*ft-mail.vim* -ft-make-syntax syntax.jax /*ft-make-syntax* -ft-man-plugin filetype.jax /*ft-man-plugin* -ft-maple-syntax syntax.jax /*ft-maple-syntax* -ft-masm-syntax syntax.jax /*ft-masm-syntax* -ft-mathematica-syntax syntax.jax /*ft-mathematica-syntax* -ft-mma-syntax syntax.jax /*ft-mma-syntax* -ft-moo-syntax syntax.jax /*ft-moo-syntax* -ft-msql-syntax syntax.jax /*ft-msql-syntax* -ft-nasm-syntax syntax.jax /*ft-nasm-syntax* -ft-ncf-syntax syntax.jax /*ft-ncf-syntax* -ft-nroff-syntax syntax.jax /*ft-nroff-syntax* -ft-ocaml-syntax syntax.jax /*ft-ocaml-syntax* -ft-papp-syntax syntax.jax /*ft-papp-syntax* -ft-pascal-syntax syntax.jax /*ft-pascal-syntax* -ft-pdf-plugin filetype.jax /*ft-pdf-plugin* -ft-perl-syntax syntax.jax /*ft-perl-syntax* -ft-php-indent indent.jax /*ft-php-indent* -ft-php-omni insert.jax /*ft-php-omni* -ft-php-syntax syntax.jax /*ft-php-syntax* -ft-php3-syntax syntax.jax /*ft-php3-syntax* -ft-phtml-syntax syntax.jax /*ft-phtml-syntax* -ft-plaintex-syntax syntax.jax /*ft-plaintex-syntax* -ft-postscr-syntax syntax.jax /*ft-postscr-syntax* -ft-ppwiz-syntax syntax.jax /*ft-ppwiz-syntax* -ft-printcap-syntax syntax.jax /*ft-printcap-syntax* -ft-progress-syntax syntax.jax /*ft-progress-syntax* -ft-ptcap-syntax syntax.jax /*ft-ptcap-syntax* -ft-python-indent indent.jax /*ft-python-indent* -ft-python-syntax syntax.jax /*ft-python-syntax* -ft-quake-syntax syntax.jax /*ft-quake-syntax* -ft-readline-syntax syntax.jax /*ft-readline-syntax* -ft-rexx-syntax syntax.jax /*ft-rexx-syntax* -ft-ruby-omni insert.jax /*ft-ruby-omni* -ft-ruby-syntax syntax.jax /*ft-ruby-syntax* -ft-scheme-syntax syntax.jax /*ft-scheme-syntax* -ft-sdl-syntax syntax.jax /*ft-sdl-syntax* -ft-sed-syntax syntax.jax /*ft-sed-syntax* -ft-sgml-syntax syntax.jax /*ft-sgml-syntax* -ft-sh-indent indent.jax /*ft-sh-indent* -ft-sh-syntax syntax.jax /*ft-sh-syntax* -ft-spec-plugin filetype.jax /*ft-spec-plugin* -ft-spup-syntax syntax.jax /*ft-spup-syntax* -ft-sql filetype.jax /*ft-sql* -ft-sql-omni insert.jax /*ft-sql-omni* -ft-sql-syntax syntax.jax /*ft-sql-syntax* -ft-sqlanywhere-syntax syntax.jax /*ft-sqlanywhere-syntax* -ft-sqlinformix-syntax syntax.jax /*ft-sqlinformix-syntax* -ft-syntax-omni insert.jax /*ft-syntax-omni* -ft-termcap-syntax syntax.jax /*ft-termcap-syntax* -ft-tex-plugin filetype.jax /*ft-tex-plugin* -ft-tex-syntax syntax.jax /*ft-tex-syntax* -ft-tf-syntax syntax.jax /*ft-tf-syntax* -ft-vb-syntax syntax.jax /*ft-vb-syntax* -ft-verilog-indent indent.jax /*ft-verilog-indent* -ft-vhdl-indent indent.jax /*ft-vhdl-indent* -ft-vim-indent indent.jax /*ft-vim-indent* -ft-vim-syntax syntax.jax /*ft-vim-syntax* -ft-xf86conf-syntax syntax.jax /*ft-xf86conf-syntax* -ft-xhtml-omni insert.jax /*ft-xhtml-omni* -ft-xml-omni insert.jax /*ft-xml-omni* -ft-xml-syntax syntax.jax /*ft-xml-syntax* -ft-xpm-syntax syntax.jax /*ft-xpm-syntax* -ft_ada.txt ft_ada.jax /*ft_ada.txt* -ft_sql.txt ft_sql.jax /*ft_sql.txt* -ftdetect filetype.jax /*ftdetect* -ftp pi_netrw.jax /*ftp* -ftplugin usr_41.jax /*ftplugin* -ftplugin-docs filetype.jax /*ftplugin-docs* -ftplugin-name usr_05.jax /*ftplugin-name* -ftplugin-overrule filetype.jax /*ftplugin-overrule* -ftplugin-special usr_41.jax /*ftplugin-special* -ftplugins usr_05.jax /*ftplugins* -function() eval.jax /*function()* -function-argument eval.jax /*function-argument* -function-key intro.jax /*function-key* -function-list usr_41.jax /*function-list* -function-range-example eval.jax /*function-range-example* -function-search-undo eval.jax /*function-search-undo* -function_key intro.jax /*function_key* -functions eval.jax /*functions* -fvwm.vim syntax.jax /*fvwm.vim* -g index.jax /*g* -g# pattern.jax /*g#* -g$ motion.jax /*g$* -g& change.jax /*g&* -g' motion.jax /*g'* -g'a motion.jax /*g'a* -g+ undo.jax /*g+* -g, motion.jax /*g,* -g- undo.jax /*g-* -g0 motion.jax /*g0* -g8 various.jax /*g8* -g:NetrwTopLvlMenu pi_netrw.jax /*g:NetrwTopLvlMenu* -g:Netrw_funcref pi_netrw.jax /*g:Netrw_funcref* -g:ada#Comment ft_ada.jax /*g:ada#Comment* -g:ada#Ctags_Kinds ft_ada.jax /*g:ada#Ctags_Kinds* -g:ada#DotWordRegex ft_ada.jax /*g:ada#DotWordRegex* -g:ada#Keywords ft_ada.jax /*g:ada#Keywords* -g:ada#WordRegex ft_ada.jax /*g:ada#WordRegex* -g:ada_abbrev ft_ada.jax /*g:ada_abbrev* -g:ada_all_tab_usage ft_ada.jax /*g:ada_all_tab_usage* -g:ada_begin_preproc ft_ada.jax /*g:ada_begin_preproc* -g:ada_default_compiler ft_ada.jax /*g:ada_default_compiler* -g:ada_extended_completion ft_ada.jax /*g:ada_extended_completion* -g:ada_extended_tagging ft_ada.jax /*g:ada_extended_tagging* -g:ada_folding ft_ada.jax /*g:ada_folding* -g:ada_gnat_extensions ft_ada.jax /*g:ada_gnat_extensions* -g:ada_line_errors ft_ada.jax /*g:ada_line_errors* -g:ada_no_tab_space_error ft_ada.jax /*g:ada_no_tab_space_error* -g:ada_no_trail_space_error ft_ada.jax /*g:ada_no_trail_space_error* -g:ada_omni_with_keywords ft_ada.jax /*g:ada_omni_with_keywords* -g:ada_rainbow_color ft_ada.jax /*g:ada_rainbow_color* -g:ada_space_errors ft_ada.jax /*g:ada_space_errors* -g:ada_standard_types ft_ada.jax /*g:ada_standard_types* -g:ada_with_gnat_project_files ft_ada.jax /*g:ada_with_gnat_project_files* -g:ada_withuse_ordinary ft_ada.jax /*g:ada_withuse_ordinary* -g:colors_name options.jax /*g:colors_name* -g:decada ft_ada.jax /*g:decada* -g:decada.Error_Format ft_ada.jax /*g:decada.Error_Format* -g:decada.Make() ft_ada.jax /*g:decada.Make()* -g:decada.Make_Command ft_ada.jax /*g:decada.Make_Command* -g:decada.Unit_Name() ft_ada.jax /*g:decada.Unit_Name()* -g:filetype_csh syntax.jax /*g:filetype_csh* -g:filetype_r syntax.jax /*g:filetype_r* -g:gnat ft_ada.jax /*g:gnat* -g:gnat.Error_Format ft_ada.jax /*g:gnat.Error_Format* -g:gnat.Find() ft_ada.jax /*g:gnat.Find()* -g:gnat.Find_Program ft_ada.jax /*g:gnat.Find_Program* -g:gnat.Make() ft_ada.jax /*g:gnat.Make()* -g:gnat.Make_Command ft_ada.jax /*g:gnat.Make_Command* -g:gnat.Pretty() ft_ada.jax /*g:gnat.Pretty()* -g:gnat.Pretty_Program ft_ada.jax /*g:gnat.Pretty_Program* -g:gnat.Project_File ft_ada.jax /*g:gnat.Project_File* -g:gnat.Set_Project_File() ft_ada.jax /*g:gnat.Set_Project_File()* -g:gnat.Tags() ft_ada.jax /*g:gnat.Tags()* -g:gnat.Tags_Command ft_ada.jax /*g:gnat.Tags_Command* -g:netrw_alto pi_netrw.jax /*g:netrw_alto* -g:netrw_altv pi_netrw.jax /*g:netrw_altv* -g:netrw_banner pi_netrw.jax /*g:netrw_banner* -g:netrw_browse_split pi_netrw.jax /*g:netrw_browse_split* -g:netrw_browsex_viewer pi_netrw.jax /*g:netrw_browsex_viewer* -g:netrw_bufsettings pi_netrw.jax /*g:netrw_bufsettings* -g:netrw_chgperm pi_netrw.jax /*g:netrw_chgperm* -g:netrw_chgwin pi_netrw.jax /*g:netrw_chgwin* -g:netrw_compress pi_netrw.jax /*g:netrw_compress* -g:netrw_ctags pi_netrw.jax /*g:netrw_ctags* -g:netrw_cursor pi_netrw.jax /*g:netrw_cursor* -g:netrw_cygwin pi_netrw.jax /*g:netrw_cygwin* -g:netrw_dav_cmd pi_netrw.jax /*g:netrw_dav_cmd* -g:netrw_decompress pi_netrw.jax /*g:netrw_decompress* -g:netrw_dirhistmax pi_netrw.jax /*g:netrw_dirhistmax* -g:netrw_fastbrowse pi_netrw.jax /*g:netrw_fastbrowse* -g:netrw_fetch_cmd pi_netrw.jax /*g:netrw_fetch_cmd* -g:netrw_fname_escape pi_netrw.jax /*g:netrw_fname_escape* -g:netrw_ftp pi_netrw.jax /*g:netrw_ftp* -g:netrw_ftp_browse_reject pi_netrw.jax /*g:netrw_ftp_browse_reject* -g:netrw_ftp_cmd pi_netrw.jax /*g:netrw_ftp_cmd* -g:netrw_ftp_list_cmd pi_netrw.jax /*g:netrw_ftp_list_cmd* -g:netrw_ftp_sizelist_cmd pi_netrw.jax /*g:netrw_ftp_sizelist_cmd* -g:netrw_ftp_timelist_cmd pi_netrw.jax /*g:netrw_ftp_timelist_cmd* -g:netrw_ftpextracmd pi_netrw.jax /*g:netrw_ftpextracmd* -g:netrw_ftpmode pi_netrw.jax /*g:netrw_ftpmode* -g:netrw_glob_escape pi_netrw.jax /*g:netrw_glob_escape* -g:netrw_hide pi_netrw.jax /*g:netrw_hide* -g:netrw_home pi_netrw.jax /*g:netrw_home* -g:netrw_http_cmd pi_netrw.jax /*g:netrw_http_cmd* -g:netrw_http_xcmd pi_netrw.jax /*g:netrw_http_xcmd* -g:netrw_ignorenetrc pi_netrw.jax /*g:netrw_ignorenetrc* -g:netrw_keepdir pi_netrw.jax /*g:netrw_keepdir* -g:netrw_list_cmd pi_netrw.jax /*g:netrw_list_cmd* -g:netrw_list_hide pi_netrw.jax /*g:netrw_list_hide* -g:netrw_liststyle pi_netrw.jax /*g:netrw_liststyle* -g:netrw_local_mkdir pi_netrw.jax /*g:netrw_local_mkdir* -g:netrw_local_rmdir pi_netrw.jax /*g:netrw_local_rmdir* -g:netrw_localcopycmd pi_netrw.jax /*g:netrw_localcopycmd* -g:netrw_localmovecmd pi_netrw.jax /*g:netrw_localmovecmd* -g:netrw_maxfilenamelen pi_netrw.jax /*g:netrw_maxfilenamelen* -g:netrw_menu pi_netrw.jax /*g:netrw_menu* -g:netrw_mkdir_cmd pi_netrw.jax /*g:netrw_mkdir_cmd* -g:netrw_mousemaps pi_netrw.jax /*g:netrw_mousemaps* -g:netrw_nogx pi_netrw.jax /*g:netrw_nogx* -g:netrw_preview pi_netrw.jax /*g:netrw_preview* -g:netrw_rcp_cmd pi_netrw.jax /*g:netrw_rcp_cmd* -g:netrw_retmap pi_netrw.jax /*g:netrw_retmap* -g:netrw_rm_cmd pi_netrw.jax /*g:netrw_rm_cmd* -g:netrw_rmdir_cmd pi_netrw.jax /*g:netrw_rmdir_cmd* -g:netrw_rmf_cmd pi_netrw.jax /*g:netrw_rmf_cmd* -g:netrw_rsync_cmd pi_netrw.jax /*g:netrw_rsync_cmd* -g:netrw_scp_cmd pi_netrw.jax /*g:netrw_scp_cmd* -g:netrw_scpport pi_netrw.jax /*g:netrw_scpport* -g:netrw_sepchr pi_netrw.jax /*g:netrw_sepchr* -g:netrw_sftp_cmd pi_netrw.jax /*g:netrw_sftp_cmd* -g:netrw_silent pi_netrw.jax /*g:netrw_silent* -g:netrw_sort_by pi_netrw.jax /*g:netrw_sort_by* -g:netrw_sort_direction pi_netrw.jax /*g:netrw_sort_direction* -g:netrw_sort_options pi_netrw.jax /*g:netrw_sort_options* -g:netrw_sort_sequence pi_netrw.jax /*g:netrw_sort_sequence* -g:netrw_special_syntax pi_netrw.jax /*g:netrw_special_syntax* -g:netrw_ssh_browse_reject pi_netrw.jax /*g:netrw_ssh_browse_reject* -g:netrw_ssh_cmd pi_netrw.jax /*g:netrw_ssh_cmd* -g:netrw_sshport pi_netrw.jax /*g:netrw_sshport* -g:netrw_timefmt pi_netrw.jax /*g:netrw_timefmt* -g:netrw_tmpfile_escape pi_netrw.jax /*g:netrw_tmpfile_escape* -g:netrw_uid pi_netrw.jax /*g:netrw_uid* -g:netrw_use_errorwindow pi_netrw.jax /*g:netrw_use_errorwindow* -g:netrw_use_noswf pi_netrw.jax /*g:netrw_use_noswf* -g:netrw_use_nt_rcp pi_netrw.jax /*g:netrw_use_nt_rcp* -g:netrw_win95ftp pi_netrw.jax /*g:netrw_win95ftp* -g:netrw_winsize pi_netrw.jax /*g:netrw_winsize* -g:netrw_xstrlen pi_netrw.jax /*g:netrw_xstrlen* -g:syntax_on syntax.jax /*g:syntax_on* -g:tar_browseoptions pi_tar.jax /*g:tar_browseoptions* -g:tar_cmd pi_tar.jax /*g:tar_cmd* -g:tar_copycmd pi_tar.jax /*g:tar_copycmd* -g:tar_extractcmd pi_tar.jax /*g:tar_extractcmd* -g:tar_nomax pi_tar.jax /*g:tar_nomax* -g:tar_readoptions pi_tar.jax /*g:tar_readoptions* -g:tar_secure pi_tar.jax /*g:tar_secure* -g:tar_writeoptions pi_tar.jax /*g:tar_writeoptions* -g:tex_conceal syntax.jax /*g:tex_conceal* -g:var eval.jax /*g:var* -g:vimball_home pi_vimball.jax /*g:vimball_home* -g:vimball_mkdir pi_vimball.jax /*g:vimball_mkdir* -g:vimsyn_embed syntax.jax /*g:vimsyn_embed* -g:vimsyn_folding syntax.jax /*g:vimsyn_folding* -g:vimsyn_maxlines syntax.jax /*g:vimsyn_maxlines* -g:vimsyn_minlines syntax.jax /*g:vimsyn_minlines* -g:vimsyn_noerror syntax.jax /*g:vimsyn_noerror* -g:zip_nomax pi_zip.jax /*g:zip_nomax* -g:zip_shq pi_zip.jax /*g:zip_shq* -g:zip_unzipcmd pi_zip.jax /*g:zip_unzipcmd* -g:zip_zipcmd pi_zip.jax /*g:zip_zipcmd* -g; motion.jax /*g;* -g< message.jax /*g<* -g<Down> motion.jax /*g<Down>* -g<End> motion.jax /*g<End>* -g<Home> motion.jax /*g<Home>* -g<LeftMouse> tagsrch.jax /*g<LeftMouse>* -g<RightMouse> tagsrch.jax /*g<RightMouse>* -g<Up> motion.jax /*g<Up>* -g? change.jax /*g?* -g?? change.jax /*g??* -g?g? change.jax /*g?g?* -g@ map.jax /*g@* -gD pattern.jax /*gD* -gE motion.jax /*gE* -gF editing.jax /*gF* -gH visual.jax /*gH* -gI insert.jax /*gI* -gJ change.jax /*gJ* -gP change.jax /*gP* -gQ intro.jax /*gQ* -gR change.jax /*gR* -gT tabpage.jax /*gT* -gU change.jax /*gU* -gUU change.jax /*gUU* -gUgU change.jax /*gUgU* -gV visual.jax /*gV* -g] tagsrch.jax /*g]* -g^ motion.jax /*g^* -g_ motion.jax /*g_* -g_CTRL-A various.jax /*g_CTRL-A* -g_CTRL-G editing.jax /*g_CTRL-G* -g_CTRL-H visual.jax /*g_CTRL-H* -g_CTRL-] tagsrch.jax /*g_CTRL-]* -g` motion.jax /*g`* -g`a motion.jax /*g`a* -ga various.jax /*ga* -garbagecollect() eval.jax /*garbagecollect()* -gd pattern.jax /*gd* -ge motion.jax /*ge* -get() eval.jax /*get()* -get-ms-debuggers debug.jax /*get-ms-debuggers* -getbufline() eval.jax /*getbufline()* -getbufvar() eval.jax /*getbufvar()* -getchar() eval.jax /*getchar()* -getcharmod() eval.jax /*getcharmod()* -getcmdline() eval.jax /*getcmdline()* -getcmdpos() eval.jax /*getcmdpos()* -getcmdtype() eval.jax /*getcmdtype()* -getcwd() eval.jax /*getcwd()* -getfontname() eval.jax /*getfontname()* -getfperm() eval.jax /*getfperm()* -getfsize() eval.jax /*getfsize()* -getftime() eval.jax /*getftime()* -getftype() eval.jax /*getftype()* -getlatestvimscripts-install pi_getscript.jax /*getlatestvimscripts-install* -getline() eval.jax /*getline()* -getloclist() eval.jax /*getloclist()* -getmatches() eval.jax /*getmatches()* -getpid() eval.jax /*getpid()* -getpos() eval.jax /*getpos()* -getqflist() eval.jax /*getqflist()* -getreg() eval.jax /*getreg()* -getregtype() eval.jax /*getregtype()* -getscript pi_getscript.jax /*getscript* -getscript-autoinstall pi_getscript.jax /*getscript-autoinstall* -getscript-data pi_getscript.jax /*getscript-data* -getscript-history pi_getscript.jax /*getscript-history* -getscript-plugins pi_getscript.jax /*getscript-plugins* -getscript-start pi_getscript.jax /*getscript-start* -gettabvar() eval.jax /*gettabvar()* -gettabwinvar() eval.jax /*gettabwinvar()* -getwinposx() eval.jax /*getwinposx()* -getwinposy() eval.jax /*getwinposy()* -getwinvar() eval.jax /*getwinvar()* -gex starting.jax /*gex* -gf editing.jax /*gf* -gg motion.jax /*gg* -gh visual.jax /*gh* -gi insert.jax /*gi* -gj motion.jax /*gj* -gk motion.jax /*gk* -glob() eval.jax /*glob()* -global-ime mbyte.jax /*global-ime* -global-local options.jax /*global-local* -global-variable eval.jax /*global-variable* -global_markfilelist pi_netrw.jax /*global_markfilelist* -globpath() eval.jax /*globpath()* -glvs pi_getscript.jax /*glvs* -glvs-alg pi_getscript.jax /*glvs-alg* -glvs-algorithm pi_getscript.jax /*glvs-algorithm* -glvs-autoinstall pi_getscript.jax /*glvs-autoinstall* -glvs-contents pi_getscript.jax /*glvs-contents* -glvs-copyright pi_getscript.jax /*glvs-copyright* -glvs-data pi_getscript.jax /*glvs-data* -glvs-dist-install pi_getscript.jax /*glvs-dist-install* -glvs-hist pi_getscript.jax /*glvs-hist* -glvs-install pi_getscript.jax /*glvs-install* -glvs-options pi_getscript.jax /*glvs-options* -glvs-plugins pi_getscript.jax /*glvs-plugins* -glvs-usage pi_getscript.jax /*glvs-usage* -gm motion.jax /*gm* -gnat#Insert_Tags_Header() ft_ada.jax /*gnat#Insert_Tags_Header()* -gnat#New() ft_ada.jax /*gnat#New()* -gnat-xref ft_ada.jax /*gnat-xref* -gnat_members ft_ada.jax /*gnat_members* -gnome-session gui_x11.jax /*gnome-session* -go motion.jax /*go* -gp change.jax /*gp* -gpm-mouse term.jax /*gpm-mouse* -gq change.jax /*gq* -gqap change.jax /*gqap* -gqgq change.jax /*gqgq* -gqq change.jax /*gqq* -gr change.jax /*gr* -graphic-option-gone version4.jax /*graphic-option-gone* -greek options.jax /*greek* -grep quickfix.jax /*grep* -groff.vim syntax.jax /*groff.vim* -group-name syntax.jax /*group-name* -gs various.jax /*gs* -gsp.vim syntax.jax /*gsp.vim* -gstar pattern.jax /*gstar* -gt tabpage.jax /*gt* -gtk-tooltip-colors gui_x11.jax /*gtk-tooltip-colors* -gu change.jax /*gu* -gugu change.jax /*gugu* -gui gui.jax /*gui* -gui-clipboard gui_w32.jax /*gui-clipboard* -gui-colors syntax.jax /*gui-colors* -gui-extras gui.jax /*gui-extras* -gui-footer debugger.jax /*gui-footer* -gui-fork gui_x11.jax /*gui-fork* -gui-functions usr_41.jax /*gui-functions* -gui-gnome gui_x11.jax /*gui-gnome* -gui-gnome-session gui_x11.jax /*gui-gnome-session* -gui-gtk gui_x11.jax /*gui-gtk* -gui-gtk-socketid gui_x11.jax /*gui-gtk-socketid* -gui-horiz-scroll gui.jax /*gui-horiz-scroll* -gui-init gui.jax /*gui-init* -gui-kde gui_x11.jax /*gui-kde* -gui-mouse gui.jax /*gui-mouse* -gui-mouse-focus gui.jax /*gui-mouse-focus* -gui-mouse-mapping gui.jax /*gui-mouse-mapping* -gui-mouse-modeless gui.jax /*gui-mouse-modeless* -gui-mouse-move gui.jax /*gui-mouse-move* -gui-mouse-select gui.jax /*gui-mouse-select* -gui-mouse-status gui.jax /*gui-mouse-status* -gui-mouse-various gui.jax /*gui-mouse-various* -gui-pty gui_x11.jax /*gui-pty* -gui-pty-erase gui_x11.jax /*gui-pty-erase* -gui-resources gui_x11.jax /*gui-resources* -gui-scrollbars gui.jax /*gui-scrollbars* -gui-selections gui.jax /*gui-selections* -gui-shell gui.jax /*gui-shell* -gui-shell-win32 gui_w32.jax /*gui-shell-win32* -gui-start gui.jax /*gui-start* -gui-toolbar gui.jax /*gui-toolbar* -gui-vert-scroll gui.jax /*gui-vert-scroll* -gui-w16 gui_w16.jax /*gui-w16* -gui-w32 gui_w32.jax /*gui-w32* -gui-w32-cmdargs gui_w32.jax /*gui-w32-cmdargs* -gui-w32-dialogs gui_w32.jax /*gui-w32-dialogs* -gui-w32-printing gui_w32.jax /*gui-w32-printing* -gui-w32-start gui_w32.jax /*gui-w32-start* -gui-w32-various gui_w32.jax /*gui-w32-various* -gui-w32-windowid gui_w32.jax /*gui-w32-windowid* -gui-w32s gui_w32.jax /*gui-w32s* -gui-win32-maximized gui_w32.jax /*gui-win32-maximized* -gui-x11 gui_x11.jax /*gui-x11* -gui-x11-athena gui_x11.jax /*gui-x11-athena* -gui-x11-compiling gui_x11.jax /*gui-x11-compiling* -gui-x11-gtk gui_x11.jax /*gui-x11-gtk* -gui-x11-kde gui_x11.jax /*gui-x11-kde* -gui-x11-misc gui_x11.jax /*gui-x11-misc* -gui-x11-motif gui_x11.jax /*gui-x11-motif* -gui-x11-neXtaw gui_x11.jax /*gui-x11-neXtaw* -gui-x11-printing gui_x11.jax /*gui-x11-printing* -gui-x11-start gui_x11.jax /*gui-x11-start* -gui-x11-various gui_x11.jax /*gui-x11-various* -gui.txt gui.jax /*gui.txt* -gui_w16.txt gui_w16.jax /*gui_w16.txt* -gui_w32.txt gui_w32.jax /*gui_w32.txt* -gui_x11.txt gui_x11.jax /*gui_x11.txt* -guifontwide_gtk2 options.jax /*guifontwide_gtk2* -guioptions_a options.jax /*guioptions_a* -guu change.jax /*guu* -gv visual.jax /*gv* -gview starting.jax /*gview* -gvim starting.jax /*gvim* -gvimdiff diff.jax /*gvimdiff* -gvimrc gui.jax /*gvimrc* -gw change.jax /*gw* -gwgw change.jax /*gwgw* -gww change.jax /*gww* -gzip pi_gzip.jax /*gzip* -gzip-autocmd pi_gzip.jax /*gzip-autocmd* -gzip-example autocmd.jax /*gzip-example* -gzip-helpfile tips.jax /*gzip-helpfile* -g~ change.jax /*g~* -g~g~ change.jax /*g~g~* -g~~ change.jax /*g~~* -h motion.jax /*h* -hangul hangulin.jax /*hangul* -hangulin.txt hangulin.jax /*hangulin.txt* -has() eval.jax /*has()* -has-patch eval.jax /*has-patch* -has-python if_pyth.jax /*has-python* -has_key() eval.jax /*has_key()* -haskell.vim syntax.jax /*haskell.vim* -haslocaldir() eval.jax /*haslocaldir()* -hasmapto() eval.jax /*hasmapto()* -help helphelp.jax /*help* -help-context help.jax /*help-context* -help-summary usr_02.jax /*help-summary* -help-translated helphelp.jax /*help-translated* -help-writing helphelp.jax /*help-writing* -help-xterm-window helphelp.jax /*help-xterm-window* -help.txt help.jax /*help.txt* -helpfile_name.txt helphelp.jax /*helpfile_name.txt* -helphelp helphelp.jax /*helphelp* -helphelp.txt helphelp.jax /*helphelp.txt* -hex-editing tips.jax /*hex-editing* -hidden-buffer windows.jax /*hidden-buffer* -hidden-menus gui.jax /*hidden-menus* -hidden-options options.jax /*hidden-options* -hidden-quit windows.jax /*hidden-quit* -highlight-args syntax.jax /*highlight-args* -highlight-changed version4.jax /*highlight-changed* -highlight-cterm syntax.jax /*highlight-cterm* -highlight-ctermbg syntax.jax /*highlight-ctermbg* -highlight-ctermfg syntax.jax /*highlight-ctermfg* -highlight-default syntax.jax /*highlight-default* -highlight-font syntax.jax /*highlight-font* -highlight-groups syntax.jax /*highlight-groups* -highlight-gui syntax.jax /*highlight-gui* -highlight-guibg syntax.jax /*highlight-guibg* -highlight-guifg syntax.jax /*highlight-guifg* -highlight-guisp syntax.jax /*highlight-guisp* -highlight-start syntax.jax /*highlight-start* -highlight-stop syntax.jax /*highlight-stop* -highlight-term syntax.jax /*highlight-term* -highlightID() eval.jax /*highlightID()* -highlight_exists() eval.jax /*highlight_exists()* -highlighting-functions usr_41.jax /*highlighting-functions* -hist-names eval.jax /*hist-names* -histadd() eval.jax /*histadd()* -histdel() eval.jax /*histdel()* -histget() eval.jax /*histget()* -histnr() eval.jax /*histnr()* -history cmdline.jax /*history* -history-functions usr_41.jax /*history-functions* -hit-enter message.jax /*hit-enter* -hit-enter-prompt message.jax /*hit-enter-prompt* -hit-return message.jax /*hit-return* -hitest.vim syntax.jax /*hitest.vim* -hjkl usr_02.jax /*hjkl* -hl-ColorColumn syntax.jax /*hl-ColorColumn* -hl-Conceal syntax.jax /*hl-Conceal* -hl-Cursor syntax.jax /*hl-Cursor* -hl-CursorColumn syntax.jax /*hl-CursorColumn* -hl-CursorIM syntax.jax /*hl-CursorIM* -hl-CursorLine syntax.jax /*hl-CursorLine* -hl-DiffAdd syntax.jax /*hl-DiffAdd* -hl-DiffChange syntax.jax /*hl-DiffChange* -hl-DiffDelete syntax.jax /*hl-DiffDelete* -hl-DiffText syntax.jax /*hl-DiffText* -hl-Directory syntax.jax /*hl-Directory* -hl-ErrorMsg syntax.jax /*hl-ErrorMsg* -hl-FoldColumn syntax.jax /*hl-FoldColumn* -hl-Folded syntax.jax /*hl-Folded* -hl-Ignore syntax.jax /*hl-Ignore* -hl-IncSearch syntax.jax /*hl-IncSearch* -hl-LineNr syntax.jax /*hl-LineNr* -hl-MatchParen syntax.jax /*hl-MatchParen* -hl-Menu syntax.jax /*hl-Menu* -hl-ModeMsg syntax.jax /*hl-ModeMsg* -hl-MoreMsg syntax.jax /*hl-MoreMsg* -hl-NonText syntax.jax /*hl-NonText* -hl-Normal syntax.jax /*hl-Normal* -hl-Pmenu syntax.jax /*hl-Pmenu* -hl-PmenuSbar syntax.jax /*hl-PmenuSbar* -hl-PmenuSel syntax.jax /*hl-PmenuSel* -hl-PmenuThumb syntax.jax /*hl-PmenuThumb* -hl-Question syntax.jax /*hl-Question* -hl-Scrollbar syntax.jax /*hl-Scrollbar* -hl-Search syntax.jax /*hl-Search* -hl-SignColumn syntax.jax /*hl-SignColumn* -hl-SpecialKey syntax.jax /*hl-SpecialKey* -hl-SpellBad syntax.jax /*hl-SpellBad* -hl-SpellCap syntax.jax /*hl-SpellCap* -hl-SpellLocal syntax.jax /*hl-SpellLocal* -hl-SpellRare syntax.jax /*hl-SpellRare* -hl-StatusLine syntax.jax /*hl-StatusLine* -hl-StatusLineNC syntax.jax /*hl-StatusLineNC* -hl-TabLine syntax.jax /*hl-TabLine* -hl-TabLineFill syntax.jax /*hl-TabLineFill* -hl-TabLineSel syntax.jax /*hl-TabLineSel* -hl-Title syntax.jax /*hl-Title* -hl-Tooltip syntax.jax /*hl-Tooltip* -hl-User1 syntax.jax /*hl-User1* -hl-User1..9 syntax.jax /*hl-User1..9* -hl-User9 syntax.jax /*hl-User9* -hl-VertSplit syntax.jax /*hl-VertSplit* -hl-Visual syntax.jax /*hl-Visual* -hl-VisualNOS syntax.jax /*hl-VisualNOS* -hl-WarningMsg syntax.jax /*hl-WarningMsg* -hl-WildMenu syntax.jax /*hl-WildMenu* -hlID() eval.jax /*hlID()* -hlexists() eval.jax /*hlexists()* -holy-grail index.jax /*holy-grail* -home intro.jax /*home* -home-replace editing.jax /*home-replace* -hostname() eval.jax /*hostname()* -how-do-i howto.jax /*how-do-i* -how-to howto.jax /*how-to* -howdoi howto.jax /*howdoi* -howto howto.jax /*howto* -howto.txt howto.jax /*howto.txt* -hpterm term.jax /*hpterm* -hpterm-color syntax.jax /*hpterm-color* -html-flavor insert.jax /*html-flavor* -html.vim syntax.jax /*html.vim* -htmlos.vim syntax.jax /*htmlos.vim* -http pi_netrw.jax /*http* -i insert.jax /*i* -i' motion.jax /*i'* -i( motion.jax /*i(* -i) motion.jax /*i)* -i< motion.jax /*i<* -i> motion.jax /*i>* -iB motion.jax /*iB* -iW motion.jax /*iW* -i[ motion.jax /*i[* -i] motion.jax /*i]* -i_0_CTRL-D insert.jax /*i_0_CTRL-D* -i_<BS> insert.jax /*i_<BS>* -i_<C-End> insert.jax /*i_<C-End>* -i_<C-Home> insert.jax /*i_<C-Home>* -i_<C-Left> insert.jax /*i_<C-Left>* -i_<C-PageDown> tabpage.jax /*i_<C-PageDown>* -i_<C-PageUp> tabpage.jax /*i_<C-PageUp>* -i_<C-Right> insert.jax /*i_<C-Right>* -i_<CR> insert.jax /*i_<CR>* -i_<Del> insert.jax /*i_<Del>* -i_<Down> insert.jax /*i_<Down>* -i_<End> insert.jax /*i_<End>* -i_<Esc> insert.jax /*i_<Esc>* -i_<F1> helphelp.jax /*i_<F1>* -i_<Help> helphelp.jax /*i_<Help>* -i_<Home> insert.jax /*i_<Home>* -i_<Insert> insert.jax /*i_<Insert>* -i_<Left> insert.jax /*i_<Left>* -i_<LeftMouse> insert.jax /*i_<LeftMouse>* -i_<NL> insert.jax /*i_<NL>* -i_<PageDown> insert.jax /*i_<PageDown>* -i_<PageUp> insert.jax /*i_<PageUp>* -i_<Right> insert.jax /*i_<Right>* -i_<S-Down> insert.jax /*i_<S-Down>* -i_<S-Left> insert.jax /*i_<S-Left>* -i_<S-Right> insert.jax /*i_<S-Right>* -i_<S-ScrollWheelDown> insert.jax /*i_<S-ScrollWheelDown>* -i_<S-ScrollWheelLeft> insert.jax /*i_<S-ScrollWheelLeft>* -i_<S-ScrollWheelRight> insert.jax /*i_<S-ScrollWheelRight>* -i_<S-ScrollWheelUp> insert.jax /*i_<S-ScrollWheelUp>* -i_<S-Up> insert.jax /*i_<S-Up>* -i_<ScrollWheelDown> insert.jax /*i_<ScrollWheelDown>* -i_<ScrollWheelLeft> insert.jax /*i_<ScrollWheelLeft>* -i_<ScrollWheelRight> insert.jax /*i_<ScrollWheelRight>* -i_<ScrollWheelUp> insert.jax /*i_<ScrollWheelUp>* -i_<Tab> insert.jax /*i_<Tab>* -i_<Up> insert.jax /*i_<Up>* -i_BS insert.jax /*i_BS* -i_CTRL-<PageDown> tabpage.jax /*i_CTRL-<PageDown>* -i_CTRL-<PageUp> tabpage.jax /*i_CTRL-<PageUp>* -i_CTRL-@ insert.jax /*i_CTRL-@* -i_CTRL-A insert.jax /*i_CTRL-A* -i_CTRL-C insert.jax /*i_CTRL-C* -i_CTRL-D insert.jax /*i_CTRL-D* -i_CTRL-E insert.jax /*i_CTRL-E* -i_CTRL-F indent.jax /*i_CTRL-F* -i_CTRL-G_<Down> insert.jax /*i_CTRL-G_<Down>* -i_CTRL-G_<Up> insert.jax /*i_CTRL-G_<Up>* -i_CTRL-G_CTRL-J insert.jax /*i_CTRL-G_CTRL-J* -i_CTRL-G_CTRL-K insert.jax /*i_CTRL-G_CTRL-K* -i_CTRL-G_j insert.jax /*i_CTRL-G_j* -i_CTRL-G_k insert.jax /*i_CTRL-G_k* -i_CTRL-G_u insert.jax /*i_CTRL-G_u* -i_CTRL-H insert.jax /*i_CTRL-H* -i_CTRL-I insert.jax /*i_CTRL-I* -i_CTRL-J insert.jax /*i_CTRL-J* -i_CTRL-K insert.jax /*i_CTRL-K* -i_CTRL-L insert.jax /*i_CTRL-L* -i_CTRL-M insert.jax /*i_CTRL-M* -i_CTRL-N insert.jax /*i_CTRL-N* -i_CTRL-O insert.jax /*i_CTRL-O* -i_CTRL-P insert.jax /*i_CTRL-P* -i_CTRL-Q insert.jax /*i_CTRL-Q* -i_CTRL-R insert.jax /*i_CTRL-R* -i_CTRL-R_= insert.jax /*i_CTRL-R_=* -i_CTRL-R_CTRL-O insert.jax /*i_CTRL-R_CTRL-O* -i_CTRL-R_CTRL-P insert.jax /*i_CTRL-R_CTRL-P* -i_CTRL-R_CTRL-R insert.jax /*i_CTRL-R_CTRL-R* -i_CTRL-T insert.jax /*i_CTRL-T* -i_CTRL-U insert.jax /*i_CTRL-U* -i_CTRL-V insert.jax /*i_CTRL-V* -i_CTRL-V_digit insert.jax /*i_CTRL-V_digit* -i_CTRL-W insert.jax /*i_CTRL-W* -i_CTRL-X insert.jax /*i_CTRL-X* -i_CTRL-X_CTRL-D insert.jax /*i_CTRL-X_CTRL-D* -i_CTRL-X_CTRL-E insert.jax /*i_CTRL-X_CTRL-E* -i_CTRL-X_CTRL-F insert.jax /*i_CTRL-X_CTRL-F* -i_CTRL-X_CTRL-I insert.jax /*i_CTRL-X_CTRL-I* -i_CTRL-X_CTRL-K insert.jax /*i_CTRL-X_CTRL-K* -i_CTRL-X_CTRL-L insert.jax /*i_CTRL-X_CTRL-L* -i_CTRL-X_CTRL-N insert.jax /*i_CTRL-X_CTRL-N* -i_CTRL-X_CTRL-O insert.jax /*i_CTRL-X_CTRL-O* -i_CTRL-X_CTRL-P insert.jax /*i_CTRL-X_CTRL-P* -i_CTRL-X_CTRL-S insert.jax /*i_CTRL-X_CTRL-S* -i_CTRL-X_CTRL-T insert.jax /*i_CTRL-X_CTRL-T* -i_CTRL-X_CTRL-U insert.jax /*i_CTRL-X_CTRL-U* -i_CTRL-X_CTRL-V insert.jax /*i_CTRL-X_CTRL-V* -i_CTRL-X_CTRL-Y insert.jax /*i_CTRL-X_CTRL-Y* -i_CTRL-X_CTRL-] insert.jax /*i_CTRL-X_CTRL-]* -i_CTRL-X_index index.jax /*i_CTRL-X_index* -i_CTRL-X_s insert.jax /*i_CTRL-X_s* -i_CTRL-Y insert.jax /*i_CTRL-Y* -i_CTRL-Z options.jax /*i_CTRL-Z* -i_CTRL-[ insert.jax /*i_CTRL-[* -i_CTRL-\_CTRL-G intro.jax /*i_CTRL-\\_CTRL-G* -i_CTRL-\_CTRL-N intro.jax /*i_CTRL-\\_CTRL-N* -i_CTRL-\_CTRL-O insert.jax /*i_CTRL-\\_CTRL-O* -i_CTRL-] insert.jax /*i_CTRL-]* -i_CTRL-^ insert.jax /*i_CTRL-^* -i_CTRL-_ insert.jax /*i_CTRL-_* -i_DEL insert.jax /*i_DEL* -i_Tab insert.jax /*i_Tab* -i_^_CTRL-D insert.jax /*i_^_CTRL-D* -i_backspacing insert.jax /*i_backspacing* -i_digraph digraph.jax /*i_digraph* -i_esc intro.jax /*i_esc* -i` motion.jax /*i`* -ia64.vim syntax.jax /*ia64.vim* -ib motion.jax /*ib* -iccf uganda.jax /*iccf* -iccf-donations uganda.jax /*iccf-donations* -icon-changed version4.jax /*icon-changed* -iconise starting.jax /*iconise* -iconize starting.jax /*iconize* -iconv() eval.jax /*iconv()* -iconv-dynamic mbyte.jax /*iconv-dynamic* -ident-search tips.jax /*ident-search* -idl-syntax syntax.jax /*idl-syntax* -idl.vim syntax.jax /*idl.vim* -if_cscop.txt if_cscop.jax /*if_cscop.txt* -if_lua.txt if_lua.jax /*if_lua.txt* -if_mzsch.txt if_mzsch.jax /*if_mzsch.txt* -if_ole.txt if_ole.jax /*if_ole.txt* -if_perl.txt if_perl.jax /*if_perl.txt* -if_pyth.txt if_pyth.jax /*if_pyth.txt* -if_ruby.txt if_ruby.jax /*if_ruby.txt* -if_sniff.txt if_sniff.jax /*if_sniff.txt* -if_tcl.txt if_tcl.jax /*if_tcl.txt* -ignore-errors eval.jax /*ignore-errors* -inactive-buffer windows.jax /*inactive-buffer* -include-search tagsrch.jax /*include-search* -inclusive motion.jax /*inclusive* -indent() eval.jax /*indent()* -indent-expression indent.jax /*indent-expression* -indent.txt indent.jax /*indent.txt* -indentkeys-format indent.jax /*indentkeys-format* -index index.jax /*index* -index() eval.jax /*index()* -index.txt index.jax /*index.txt* -info-message starting.jax /*info-message* -inform.vim syntax.jax /*inform.vim* -informix ft_sql.jax /*informix* -initialization starting.jax /*initialization* -input() eval.jax /*input()* -inputdialog() eval.jax /*inputdialog()* -inputlist() eval.jax /*inputlist()* -inputrestore() eval.jax /*inputrestore()* -inputsave() eval.jax /*inputsave()* -inputsecret() eval.jax /*inputsecret()* -ins-completion insert.jax /*ins-completion* -ins-completion-menu insert.jax /*ins-completion-menu* -ins-expandtab insert.jax /*ins-expandtab* -ins-reverse rileft.jax /*ins-reverse* -ins-smarttab insert.jax /*ins-smarttab* -ins-softtabstop insert.jax /*ins-softtabstop* -ins-special-keys insert.jax /*ins-special-keys* -ins-special-special insert.jax /*ins-special-special* -ins-textwidth insert.jax /*ins-textwidth* -insert insert.jax /*insert* -insert() eval.jax /*insert()* -insert-index index.jax /*insert-index* -insert.txt insert.jax /*insert.txt* -insert_expand insert.jax /*insert_expand* -inserting insert.jax /*inserting* -inserting-ex insert.jax /*inserting-ex* -inserting-file insert.jax /*inserting-file* -insertmode-variable eval.jax /*insertmode-variable* -install usr_90.jax /*install* -install-home usr_90.jax /*install-home* -install-registry gui_w32.jax /*install-registry* -intel-itanium syntax.jax /*intel-itanium* -intellimouse-wheel-problems gui_w32.jax /*intellimouse-wheel-problems* -interactive-functions usr_41.jax /*interactive-functions* -internal-variables eval.jax /*internal-variables* -internet intro.jax /*internet* -intro intro.jax /*intro* -intro.txt intro.jax /*intro.txt* -inverse syntax.jax /*inverse* -ip motion.jax /*ip* -iquote motion.jax /*iquote* -is motion.jax /*is* -isdirectory() eval.jax /*isdirectory()* -islocked() eval.jax /*islocked()* -it motion.jax /*it* -italic syntax.jax /*italic* -items() eval.jax /*items()* -iw motion.jax /*iw* -i{ motion.jax /*i{* -i} motion.jax /*i}* -j motion.jax /*j* -java-cinoptions indent.jax /*java-cinoptions* -java-indenting indent.jax /*java-indenting* -java.vim syntax.jax /*java.vim* -javascript-cinoptions indent.jax /*javascript-cinoptions* -javascript-indenting indent.jax /*javascript-indenting* -join() eval.jax /*join()* -jsbterm-mouse options.jax /*jsbterm-mouse* -jtags tagsrch.jax /*jtags* -jump-motions motion.jax /*jump-motions* -jumplist motion.jax /*jumplist* -jumpto-diffs diff.jax /*jumpto-diffs* -k motion.jax /*k* -kcc uganda.jax /*kcc* -kde gui_x11.jax /*kde* -key-codes intro.jax /*key-codes* -key-codes-changed version4.jax /*key-codes-changed* -key-mapping map.jax /*key-mapping* -key-notation intro.jax /*key-notation* -key-variable eval.jax /*key-variable* -keycodes intro.jax /*keycodes* -keymap-accents mbyte.jax /*keymap-accents* -keymap-file-format mbyte.jax /*keymap-file-format* -keymap-hebrew mbyte.jax /*keymap-hebrew* -keypad-0 intro.jax /*keypad-0* -keypad-9 intro.jax /*keypad-9* -keypad-comma term.jax /*keypad-comma* -keypad-divide intro.jax /*keypad-divide* -keypad-end intro.jax /*keypad-end* -keypad-enter intro.jax /*keypad-enter* -keypad-home intro.jax /*keypad-home* -keypad-minus intro.jax /*keypad-minus* -keypad-multiply intro.jax /*keypad-multiply* -keypad-page-down intro.jax /*keypad-page-down* -keypad-page-up intro.jax /*keypad-page-up* -keypad-plus intro.jax /*keypad-plus* -keypad-point intro.jax /*keypad-point* -keys() eval.jax /*keys()* -l motion.jax /*l* -l:var eval.jax /*l:var* -lCursor mbyte.jax /*lCursor* -lace.vim syntax.jax /*lace.vim* -lang-variable eval.jax /*lang-variable* -language-mapping map.jax /*language-mapping* -last-pattern pattern.jax /*last-pattern* -last-position-jump eval.jax /*last-position-jump* -last_buffer_nr() eval.jax /*last_buffer_nr()* -lc_time-variable eval.jax /*lc_time-variable* -left-right-motions motion.jax /*left-right-motions* -len() eval.jax /*len()* -less various.jax /*less* -letter print.jax /*letter* -lex.vim syntax.jax /*lex.vim* -lhaskell.vim syntax.jax /*lhaskell.vim* -libcall() eval.jax /*libcall()* -libcallnr() eval.jax /*libcallnr()* -license uganda.jax /*license* -lid quickfix.jax /*lid* -lifelines.vim syntax.jax /*lifelines.vim* -limits vi_diff.jax /*limits* -line() eval.jax /*line()* -line-continuation repeat.jax /*line-continuation* -line2byte() eval.jax /*line2byte()* -linefeed intro.jax /*linefeed* -linewise motion.jax /*linewise* -linewise-register change.jax /*linewise-register* -linewise-visual visual.jax /*linewise-visual* -lisp.vim syntax.jax /*lisp.vim* -lispindent() eval.jax /*lispindent()* -list-functions usr_41.jax /*list-functions* -list-identity eval.jax /*list-identity* -list-index eval.jax /*list-index* -list-modification eval.jax /*list-modification* -list-repeat windows.jax /*list-repeat* -lite.vim syntax.jax /*lite.vim* -literal-string eval.jax /*literal-string* -lnum-variable eval.jax /*lnum-variable* -load-plugins starting.jax /*load-plugins* -load-vim-script repeat.jax /*load-vim-script* -local-additions help.jax /*local-additions* -local-function eval.jax /*local-function* -local-options options.jax /*local-options* -local-variable eval.jax /*local-variable* -local-variables eval.jax /*local-variables* -local_markfilelist pi_netrw.jax /*local_markfilelist* -locale mbyte.jax /*locale* -locale-name mbyte.jax /*locale-name* -localtime() eval.jax /*localtime()* -location-list quickfix.jax /*location-list* -location-list-window quickfix.jax /*location-list-window* -log() eval.jax /*log()* -log10() eval.jax /*log10()* -lowercase change.jax /*lowercase* -lpc.vim syntax.jax /*lpc.vim* -lua if_lua.jax /*lua* -lua-buffer if_lua.jax /*lua-buffer* -lua-commands if_lua.jax /*lua-commands* -lua-vim if_lua.jax /*lua-vim* -lua-window if_lua.jax /*lua-window* -lua.vim syntax.jax /*lua.vim* -m motion.jax /*m* -m' motion.jax /*m'* -m[ motion.jax /*m[* -m] motion.jax /*m]* -m` motion.jax /*m`* -mac os_mac.jax /*mac* -mac-bug os_mac.jax /*mac-bug* -mac-compile os_mac.jax /*mac-compile* -mac-faq os_mac.jax /*mac-faq* -mac-filename os_mac.jax /*mac-filename* -mac-lack os_mac.jax /*mac-lack* -mac-vimfile os_mac.jax /*mac-vimfile* -macintosh os_mac.jax /*macintosh* -macro map.jax /*macro* -mail-list intro.jax /*mail-list* -mail.vim syntax.jax /*mail.vim* -maillist intro.jax /*maillist* -maillist-archive intro.jax /*maillist-archive* -make.vim syntax.jax /*make.vim* -manual-copyright usr_01.jax /*manual-copyright* -map() eval.jax /*map()* -map-<SID> map.jax /*map-<SID>* -map-ambiguous map.jax /*map-ambiguous* -map-backtick tips.jax /*map-backtick* -map-comments map.jax /*map-comments* -map-examples map.jax /*map-examples* -map-keys-fails map.jax /*map-keys-fails* -map-listing map.jax /*map-listing* -map-modes map.jax /*map-modes* -map-multibyte map.jax /*map-multibyte* -map-overview map.jax /*map-overview* -map-self-destroy tips.jax /*map-self-destroy* -map-typing map.jax /*map-typing* -map-which-keys map.jax /*map-which-keys* -map.txt map.jax /*map.txt* -map_CTRL_C map.jax /*map_CTRL_C* -map_backslash map.jax /*map_backslash* -map_bar map.jax /*map_bar* -map_empty_rhs map.jax /*map_empty_rhs* -map_return map.jax /*map_return* -map_space_in_lhs map.jax /*map_space_in_lhs* -map_space_in_rhs map.jax /*map_space_in_rhs* -maparg() eval.jax /*maparg()* -mapcheck() eval.jax /*mapcheck()* -maple.vim syntax.jax /*maple.vim* -mapleader map.jax /*mapleader* -maplocalleader map.jax /*maplocalleader* -mapmode-c map.jax /*mapmode-c* -mapmode-i map.jax /*mapmode-i* -mapmode-ic map.jax /*mapmode-ic* -mapmode-l map.jax /*mapmode-l* -mapmode-n map.jax /*mapmode-n* -mapmode-nvo map.jax /*mapmode-nvo* -mapmode-o map.jax /*mapmode-o* -mapmode-s map.jax /*mapmode-s* -mapmode-v map.jax /*mapmode-v* -mapmode-x map.jax /*mapmode-x* -mapping map.jax /*mapping* -mark motion.jax /*mark* -mark-functions usr_41.jax /*mark-functions* -mark-motions motion.jax /*mark-motions* -markfilelist pi_netrw.jax /*markfilelist* -masm.vim syntax.jax /*masm.vim* -match() eval.jax /*match()* -match-highlight pattern.jax /*match-highlight* -match-parens tips.jax /*match-parens* -matchadd() eval.jax /*matchadd()* -matcharg() eval.jax /*matcharg()* -matchdelete() eval.jax /*matchdelete()* -matchend() eval.jax /*matchend()* -matchit-install usr_05.jax /*matchit-install* -matchlist() eval.jax /*matchlist()* -matchparen pi_paren.jax /*matchparen* -matchstr() eval.jax /*matchstr()* -max() eval.jax /*max()* -mbyte-IME mbyte.jax /*mbyte-IME* -mbyte-XIM mbyte.jax /*mbyte-XIM* -mbyte-combining mbyte.jax /*mbyte-combining* -mbyte-composing mbyte.jax /*mbyte-composing* -mbyte-conversion mbyte.jax /*mbyte-conversion* -mbyte-encoding mbyte.jax /*mbyte-encoding* -mbyte-first mbyte.jax /*mbyte-first* -mbyte-fonts-MSwin mbyte.jax /*mbyte-fonts-MSwin* -mbyte-fonts-X11 mbyte.jax /*mbyte-fonts-X11* -mbyte-keymap mbyte.jax /*mbyte-keymap* -mbyte-locale mbyte.jax /*mbyte-locale* -mbyte-options mbyte.jax /*mbyte-options* -mbyte-terminal mbyte.jax /*mbyte-terminal* -mbyte-utf8 mbyte.jax /*mbyte-utf8* -mbyte.txt mbyte.jax /*mbyte.txt* -menu-examples gui.jax /*menu-examples* -menu-priority gui.jax /*menu-priority* -menu-separator gui.jax /*menu-separator* -menu.vim gui.jax /*menu.vim* -menus gui.jax /*menus* -merge diff.jax /*merge* -message-history message.jax /*message-history* -message.txt message.jax /*message.txt* -messages message.jax /*messages* -meta intro.jax /*meta* -min() eval.jax /*min()* -minimal-features os_msdos.jax /*minimal-features* -missing-options vi_diff.jax /*missing-options* -mkdir() eval.jax /*mkdir()* -mlang.txt mlang.jax /*mlang.txt* -mma.vim syntax.jax /*mma.vim* -mode() eval.jax /*mode()* -mode-Ex intro.jax /*mode-Ex* -mode-cmdline cmdline.jax /*mode-cmdline* -mode-ins-repl insert.jax /*mode-ins-repl* -mode-replace insert.jax /*mode-replace* -mode-switching intro.jax /*mode-switching* -modeless-selection gui.jax /*modeless-selection* -modeline options.jax /*modeline* -modeline-local options.jax /*modeline-local* -modeline-version options.jax /*modeline-version* -moo.vim syntax.jax /*moo.vim* -more-prompt message.jax /*more-prompt* -more-variables eval.jax /*more-variables* -motion.txt motion.jax /*motion.txt* -mouse-mode-table term.jax /*mouse-mode-table* -mouse-overview term.jax /*mouse-overview* -mouse-swap-buttons term.jax /*mouse-swap-buttons* -mouse-using term.jax /*mouse-using* -mouse_col-variable eval.jax /*mouse_col-variable* -mouse_lnum-variable eval.jax /*mouse_lnum-variable* -mouse_win-variable eval.jax /*mouse_win-variable* -movement intro.jax /*movement* -ms-dos os_msdos.jax /*ms-dos* -msdos os_msdos.jax /*msdos* -msdos-arrows os_msdos.jax /*msdos-arrows* -msdos-clipboard-limits os_msdos.jax /*msdos-clipboard-limits* -msdos-compiling os_msdos.jax /*msdos-compiling* -msdos-copy-paste os_msdos.jax /*msdos-copy-paste* -msdos-fname-extensions os_msdos.jax /*msdos-fname-extensions* -msdos-limitations os_msdos.jax /*msdos-limitations* -msdos-linked-files os_msdos.jax /*msdos-linked-files* -msdos-longfname os_msdos.jax /*msdos-longfname* -msdos-mode gui_w32.jax /*msdos-mode* -msdos-problems os_msdos.jax /*msdos-problems* -msdos-termcap os_msdos.jax /*msdos-termcap* -msdos-versions os_msdos.jax /*msdos-versions* -msql.vim syntax.jax /*msql.vim* -mswin.vim gui_w32.jax /*mswin.vim* -multi-byte mbyte.jax /*multi-byte* -multi-lang mlang.jax /*multi-lang* -multi-repeat repeat.jax /*multi-repeat* -multibyte mbyte.jax /*multibyte* -multibyte-ime mbyte.jax /*multibyte-ime* -multibyte-input mbyte.jax /*multibyte-input* -multilang mlang.jax /*multilang* -multilang-menus mlang.jax /*multilang-menus* -multilang-messages mlang.jax /*multilang-messages* -multilang-scripts mlang.jax /*multilang-scripts* -myfiletypefile syntax.jax /*myfiletypefile* -myscriptsfile syntax.jax /*myscriptsfile* -mysql ft_sql.jax /*mysql* -mysyntaxfile syntax.jax /*mysyntaxfile* -mysyntaxfile-add syntax.jax /*mysyntaxfile-add* -mysyntaxfile-replace syntax.jax /*mysyntaxfile-replace* -mzeval() eval.jax /*mzeval()* -mzscheme if_mzsch.jax /*mzscheme* -mzscheme-buffer if_mzsch.jax /*mzscheme-buffer* -mzscheme-commands if_mzsch.jax /*mzscheme-commands* -mzscheme-dynamic if_mzsch.jax /*mzscheme-dynamic* -mzscheme-examples if_mzsch.jax /*mzscheme-examples* -mzscheme-mzeval if_mzsch.jax /*mzscheme-mzeval* -mzscheme-sandbox if_mzsch.jax /*mzscheme-sandbox* -mzscheme-threads if_mzsch.jax /*mzscheme-threads* -mzscheme-vim if_mzsch.jax /*mzscheme-vim* -mzscheme-vimext if_mzsch.jax /*mzscheme-vimext* -mzscheme-window if_mzsch.jax /*mzscheme-window* -n pattern.jax /*n* -nasm.vim syntax.jax /*nasm.vim* -navigation motion.jax /*navigation* -nb-commands netbeans.jax /*nb-commands* -nb-events netbeans.jax /*nb-events* -nb-functions netbeans.jax /*nb-functions* -nb-messages netbeans.jax /*nb-messages* -nb-protocol_errors netbeans.jax /*nb-protocol_errors* -nb-special netbeans.jax /*nb-special* -nb-terms netbeans.jax /*nb-terms* -ncf.vim syntax.jax /*ncf.vim* -netbeans netbeans.jax /*netbeans* -netbeans-commands netbeans.jax /*netbeans-commands* -netbeans-configure netbeans.jax /*netbeans-configure* -netbeans-debugging netbeans.jax /*netbeans-debugging* -netbeans-download netbeans.jax /*netbeans-download* -netbeans-integration netbeans.jax /*netbeans-integration* -netbeans-intro netbeans.jax /*netbeans-intro* -netbeans-keybindings netbeans.jax /*netbeans-keybindings* -netbeans-messages netbeans.jax /*netbeans-messages* -netbeans-parameters netbeans.jax /*netbeans-parameters* -netbeans-preparation netbeans.jax /*netbeans-preparation* -netbeans-problems netbeans.jax /*netbeans-problems* -netbeans-protocol netbeans.jax /*netbeans-protocol* -netbeans-run netbeans.jax /*netbeans-run* -netbeans-setup netbeans.jax /*netbeans-setup* -netbeans-support netbeans.jax /*netbeans-support* -netbeans.txt netbeans.jax /*netbeans.txt* -netreadfixup pi_netrw.jax /*netreadfixup* -netrw pi_netrw.jax /*netrw* -netrw-% pi_netrw.jax /*netrw-%* -netrw-- pi_netrw.jax /*netrw--* -netrw-C pi_netrw.jax /*netrw-C* -netrw-D pi_netrw.jax /*netrw-D* -netrw-O pi_netrw.jax /*netrw-O* -netrw-P pi_netrw.jax /*netrw-P* -netrw-R pi_netrw.jax /*netrw-R* -netrw-S pi_netrw.jax /*netrw-S* -netrw-T pi_netrw.jax /*netrw-T* -netrw-U pi_netrw.jax /*netrw-U* -netrw-a pi_netrw.jax /*netrw-a* -netrw-activate pi_netrw.jax /*netrw-activate* -netrw-bookmark pi_netrw.jax /*netrw-bookmark* -netrw-bookmarks pi_netrw.jax /*netrw-bookmarks* -netrw-browse pi_netrw.jax /*netrw-browse* -netrw-browse-cmds pi_netrw.jax /*netrw-browse-cmds* -netrw-browse-maps pi_netrw.jax /*netrw-browse-maps* -netrw-browser pi_netrw.jax /*netrw-browser* -netrw-browser-options pi_netrw.jax /*netrw-browser-options* -netrw-browser-var pi_netrw.jax /*netrw-browser-var* -netrw-browsing pi_netrw.jax /*netrw-browsing* -netrw-c pi_netrw.jax /*netrw-c* -netrw-cadaver pi_netrw.jax /*netrw-cadaver* -netrw-chgup pi_netrw.jax /*netrw-chgup* -netrw-clean pi_netrw.jax /*netrw-clean* -netrw-contents pi_netrw.jax /*netrw-contents* -netrw-copyright pi_netrw.jax /*netrw-copyright* -netrw-cr pi_netrw.jax /*netrw-cr* -netrw-createfile pi_netrw.jax /*netrw-createfile* -netrw-credits pi_netrw.jax /*netrw-credits* -netrw-ctrl-h pi_netrw.jax /*netrw-ctrl-h* -netrw-ctrl-l pi_netrw.jax /*netrw-ctrl-l* -netrw-ctrl_l pi_netrw.jax /*netrw-ctrl_l* -netrw-curdir pi_netrw.jax /*netrw-curdir* -netrw-d pi_netrw.jax /*netrw-d* -netrw-debug pi_netrw.jax /*netrw-debug* -netrw-del pi_netrw.jax /*netrw-del* -netrw-delete pi_netrw.jax /*netrw-delete* -netrw-dir pi_netrw.jax /*netrw-dir* -netrw-dirlist pi_netrw.jax /*netrw-dirlist* -netrw-downdir pi_netrw.jax /*netrw-downdir* -netrw-edithide pi_netrw.jax /*netrw-edithide* -netrw-ex pi_netrw.jax /*netrw-ex* -netrw-explore pi_netrw.jax /*netrw-explore* -netrw-explore-cmds pi_netrw.jax /*netrw-explore-cmds* -netrw-externapp pi_netrw.jax /*netrw-externapp* -netrw-file pi_netrw.jax /*netrw-file* -netrw-filigree pi_netrw.jax /*netrw-filigree* -netrw-fixup pi_netrw.jax /*netrw-fixup* -netrw-ftp pi_netrw.jax /*netrw-ftp* -netrw-ftype pi_netrw.jax /*netrw-ftype* -netrw-gb pi_netrw.jax /*netrw-gb* -netrw-gd pi_netrw.jax /*netrw-gd* -netrw-getftype pi_netrw.jax /*netrw-getftype* -netrw-gf pi_netrw.jax /*netrw-gf* -netrw-gh pi_netrw.jax /*netrw-gh* -netrw-gp pi_netrw.jax /*netrw-gp* -netrw-gx pi_netrw.jax /*netrw-gx* -netrw-handler pi_netrw.jax /*netrw-handler* -netrw-help pi_netrw.jax /*netrw-help* -netrw-hexplore pi_netrw.jax /*netrw-hexplore* -netrw-hide pi_netrw.jax /*netrw-hide* -netrw-hiding pi_netrw.jax /*netrw-hiding* -netrw-history pi_netrw.jax /*netrw-history* -netrw-horiz pi_netrw.jax /*netrw-horiz* -netrw-i pi_netrw.jax /*netrw-i* -netrw-incompatible pi_netrw.jax /*netrw-incompatible* -netrw-intro-browse pi_netrw.jax /*netrw-intro-browse* -netrw-leftmouse pi_netrw.jax /*netrw-leftmouse* -netrw-list pi_netrw.jax /*netrw-list* -netrw-listbookmark pi_netrw.jax /*netrw-listbookmark* -netrw-listhack pi_netrw.jax /*netrw-listhack* -netrw-login pi_netrw.jax /*netrw-login* -netrw-mB pi_netrw.jax /*netrw-mB* -netrw-mT pi_netrw.jax /*netrw-mT* -netrw-mb pi_netrw.jax /*netrw-mb* -netrw-mc pi_netrw.jax /*netrw-mc* -netrw-md pi_netrw.jax /*netrw-md* -netrw-me pi_netrw.jax /*netrw-me* -netrw-mf pi_netrw.jax /*netrw-mf* -netrw-mg pi_netrw.jax /*netrw-mg* -netrw-mh pi_netrw.jax /*netrw-mh* -netrw-middlemouse pi_netrw.jax /*netrw-middlemouse* -netrw-ml_get pi_netrw.jax /*netrw-ml_get* -netrw-mm pi_netrw.jax /*netrw-mm* -netrw-mouse pi_netrw.jax /*netrw-mouse* -netrw-move pi_netrw.jax /*netrw-move* -netrw-mp pi_netrw.jax /*netrw-mp* -netrw-mr pi_netrw.jax /*netrw-mr* -netrw-ms pi_netrw.jax /*netrw-ms* -netrw-mt pi_netrw.jax /*netrw-mt* -netrw-mu pi_netrw.jax /*netrw-mu* -netrw-mx pi_netrw.jax /*netrw-mx* -netrw-mz pi_netrw.jax /*netrw-mz* -netrw-netrc pi_netrw.jax /*netrw-netrc* -netrw-nexplore pi_netrw.jax /*netrw-nexplore* -netrw-noload pi_netrw.jax /*netrw-noload* -netrw-nread pi_netrw.jax /*netrw-nread* -netrw-nwrite pi_netrw.jax /*netrw-nwrite* -netrw-o pi_netrw.jax /*netrw-o* -netrw-options pi_netrw.jax /*netrw-options* -netrw-p pi_netrw.jax /*netrw-p* -netrw-p1 pi_netrw.jax /*netrw-p1* -netrw-p10 pi_netrw.jax /*netrw-p10* -netrw-p11 pi_netrw.jax /*netrw-p11* -netrw-p12 pi_netrw.jax /*netrw-p12* -netrw-p13 pi_netrw.jax /*netrw-p13* -netrw-p14 pi_netrw.jax /*netrw-p14* -netrw-p15 pi_netrw.jax /*netrw-p15* -netrw-p2 pi_netrw.jax /*netrw-p2* -netrw-p3 pi_netrw.jax /*netrw-p3* -netrw-p4 pi_netrw.jax /*netrw-p4* -netrw-p5 pi_netrw.jax /*netrw-p5* -netrw-p6 pi_netrw.jax /*netrw-p6* -netrw-p7 pi_netrw.jax /*netrw-p7* -netrw-p8 pi_netrw.jax /*netrw-p8* -netrw-p9 pi_netrw.jax /*netrw-p9* -netrw-passwd pi_netrw.jax /*netrw-passwd* -netrw-password pi_netrw.jax /*netrw-password* -netrw-path pi_netrw.jax /*netrw-path* -netrw-pexplore pi_netrw.jax /*netrw-pexplore* -netrw-preview pi_netrw.jax /*netrw-preview* -netrw-problems pi_netrw.jax /*netrw-problems* -netrw-protocol pi_netrw.jax /*netrw-protocol* -netrw-prvwin pi_netrw.jax /*netrw-prvwin* -netrw-pscp pi_netrw.jax /*netrw-pscp* -netrw-psftp pi_netrw.jax /*netrw-psftp* -netrw-putty pi_netrw.jax /*netrw-putty* -netrw-qb pi_netrw.jax /*netrw-qb* -netrw-qf pi_netrw.jax /*netrw-qf* -netrw-quickcom pi_netrw.jax /*netrw-quickcom* -netrw-quickcoms pi_netrw.jax /*netrw-quickcoms* -netrw-quickhelp pi_netrw.jax /*netrw-quickhelp* -netrw-quickmap pi_netrw.jax /*netrw-quickmap* -netrw-quickmaps pi_netrw.jax /*netrw-quickmaps* -netrw-r pi_netrw.jax /*netrw-r* -netrw-read pi_netrw.jax /*netrw-read* -netrw-ref pi_netrw.jax /*netrw-ref* -netrw-rename pi_netrw.jax /*netrw-rename* -netrw-reverse pi_netrw.jax /*netrw-reverse* -netrw-rexplore pi_netrw.jax /*netrw-rexplore* -netrw-rightmouse pi_netrw.jax /*netrw-rightmouse* -netrw-s pi_netrw.jax /*netrw-s* -netrw-settings pi_netrw.jax /*netrw-settings* -netrw-sexplore pi_netrw.jax /*netrw-sexplore* -netrw-sort pi_netrw.jax /*netrw-sort* -netrw-sortsequence pi_netrw.jax /*netrw-sortsequence* -netrw-source pi_netrw.jax /*netrw-source* -netrw-ssh-hack pi_netrw.jax /*netrw-ssh-hack* -netrw-star pi_netrw.jax /*netrw-star* -netrw-starpat pi_netrw.jax /*netrw-starpat* -netrw-starstar pi_netrw.jax /*netrw-starstar* -netrw-starstarpat pi_netrw.jax /*netrw-starstarpat* -netrw-start pi_netrw.jax /*netrw-start* -netrw-t pi_netrw.jax /*netrw-t* -netrw-texplore pi_netrw.jax /*netrw-texplore* -netrw-todo pi_netrw.jax /*netrw-todo* -netrw-trailingslash pi_netrw.jax /*netrw-trailingslash* -netrw-transparent pi_netrw.jax /*netrw-transparent* -netrw-u pi_netrw.jax /*netrw-u* -netrw-updir pi_netrw.jax /*netrw-updir* -netrw-urls pi_netrw.jax /*netrw-urls* -netrw-userpass pi_netrw.jax /*netrw-userpass* -netrw-v pi_netrw.jax /*netrw-v* -netrw-var pi_netrw.jax /*netrw-var* -netrw-variables pi_netrw.jax /*netrw-variables* -netrw-vexplore pi_netrw.jax /*netrw-vexplore* -netrw-write pi_netrw.jax /*netrw-write* -netrw-x pi_netrw.jax /*netrw-x* -netrw-xfer pi_netrw.jax /*netrw-xfer* -netrw.vim pi_netrw.jax /*netrw.vim* -netrw_filehandler pi_netrw.jax /*netrw_filehandler* -netterm-mouse options.jax /*netterm-mouse* -network pi_netrw.jax /*network* -new-filetype filetype.jax /*new-filetype* -new-filetype-scripts filetype.jax /*new-filetype-scripts* -news intro.jax /*news* -nextnonblank() eval.jax /*nextnonblank()* -no-eval-feature eval.jax /*no-eval-feature* -no_buffers_menu gui.jax /*no_buffers_menu* -non-greedy pattern.jax /*non-greedy* -non-zero-arg eval.jax /*non-zero-arg* -normal-index index.jax /*normal-index* -not-compatible usr_01.jax /*not-compatible* -not-edited editing.jax /*not-edited* -notation intro.jax /*notation* -notepad gui_w32.jax /*notepad* -nr2char() eval.jax /*nr2char()* -nroff.vim syntax.jax /*nroff.vim* -numbered-function eval.jax /*numbered-function* -o insert.jax /*o* -o_CTRL-V motion.jax /*o_CTRL-V* -o_V motion.jax /*o_V* -o_v motion.jax /*o_v* -object-motions motion.jax /*object-motions* -object-select motion.jax /*object-select* -objects index.jax /*objects* -obtaining-exted netbeans.jax /*obtaining-exted* -ocaml.vim syntax.jax /*ocaml.vim* -octal eval.jax /*octal* -octal-number options.jax /*octal-number* -oldfiles-variable eval.jax /*oldfiles-variable* -ole-activation if_ole.jax /*ole-activation* -ole-eval if_ole.jax /*ole-eval* -ole-gethwnd if_ole.jax /*ole-gethwnd* -ole-interface if_ole.jax /*ole-interface* -ole-methods if_ole.jax /*ole-methods* -ole-normal if_ole.jax /*ole-normal* -ole-registration if_ole.jax /*ole-registration* -ole-sendkeys if_ole.jax /*ole-sendkeys* -ole-setforeground if_ole.jax /*ole-setforeground* -omap-info map.jax /*omap-info* -omni-sql-completion ft_sql.jax /*omni-sql-completion* -online-help helphelp.jax /*online-help* -opening-window windows.jax /*opening-window* -operator motion.jax /*operator* -operator-variable eval.jax /*operator-variable* -option-backslash options.jax /*option-backslash* -option-list quickref.jax /*option-list* -option-summary options.jax /*option-summary* -option-window options.jax /*option-window* -options options.jax /*options* -options.txt options.jax /*options.txt* -optwin options.jax /*optwin* -oracle ft_sql.jax /*oracle* -os2 os_os2.jax /*os2* -os2ansi os_os2.jax /*os2ansi* -os390 os_390.jax /*os390* -os_390.txt os_390.jax /*os_390.txt* -os_amiga.txt os_amiga.jax /*os_amiga.txt* -os_beos.txt os_beos.jax /*os_beos.txt* -os_dos.txt os_dos.jax /*os_dos.txt* -os_mac.txt os_mac.jax /*os_mac.txt* -os_mint.txt os_mint.jax /*os_mint.txt* -os_msdos.txt os_msdos.jax /*os_msdos.txt* -os_os2.txt os_os2.jax /*os_os2.txt* -os_qnx.txt os_qnx.jax /*os_qnx.txt* -os_risc.txt os_risc.jax /*os_risc.txt* -os_unix.txt os_unix.jax /*os_unix.txt* -os_vms.txt os_vms.jax /*os_vms.txt* -os_win32.txt os_win32.jax /*os_win32.txt* -other-features vi_diff.jax /*other-features* -p change.jax /*p* -page-down intro.jax /*page-down* -page-up intro.jax /*page-up* -page_down intro.jax /*page_down* -page_up intro.jax /*page_up* -pager message.jax /*pager* -papp.vim syntax.jax /*papp.vim* -paragraph motion.jax /*paragraph* -pascal.vim syntax.jax /*pascal.vim* -pathshorten() eval.jax /*pathshorten()* -pattern pattern.jax /*pattern* -pattern-atoms pattern.jax /*pattern-atoms* -pattern-multi-byte pattern.jax /*pattern-multi-byte* -pattern-multi-items pattern.jax /*pattern-multi-items* -pattern-overview pattern.jax /*pattern-overview* -pattern-searches pattern.jax /*pattern-searches* -pattern.txt pattern.jax /*pattern.txt* -patterns-composing pattern.jax /*patterns-composing* -pdev-option print.jax /*pdev-option* -penc-option print.jax /*penc-option* -perl if_perl.jax /*perl* -perl-Append if_perl.jax /*perl-Append* -perl-Buffer if_perl.jax /*perl-Buffer* -perl-Buffers if_perl.jax /*perl-Buffers* -perl-Count if_perl.jax /*perl-Count* -perl-Delete if_perl.jax /*perl-Delete* -perl-DoCommand if_perl.jax /*perl-DoCommand* -perl-Eval if_perl.jax /*perl-Eval* -perl-Get if_perl.jax /*perl-Get* -perl-GetCursor if_perl.jax /*perl-GetCursor* -perl-Msg if_perl.jax /*perl-Msg* -perl-Name if_perl.jax /*perl-Name* -perl-Number if_perl.jax /*perl-Number* -perl-Set if_perl.jax /*perl-Set* -perl-SetHeight if_perl.jax /*perl-SetHeight* -perl-SetOption if_perl.jax /*perl-SetOption* -perl-Windows if_perl.jax /*perl-Windows* -perl-compiling if_perl.jax /*perl-compiling* -perl-dynamic if_perl.jax /*perl-dynamic* -perl-editing if_perl.jax /*perl-editing* -perl-overview if_perl.jax /*perl-overview* -perl-patterns pattern.jax /*perl-patterns* -perl-using if_perl.jax /*perl-using* -perl.vim syntax.jax /*perl.vim* -persistent-undo undo.jax /*persistent-undo* -pexpr-option print.jax /*pexpr-option* -pfn-option print.jax /*pfn-option* -pheader-option print.jax /*pheader-option* -photon-fonts os_qnx.jax /*photon-fonts* -photon-gui os_qnx.jax /*photon-gui* -php-comment indent.jax /*php-comment* -php-indent indent.jax /*php-indent* -php-indenting indent.jax /*php-indenting* -php.vim syntax.jax /*php.vim* -php3.vim syntax.jax /*php3.vim* -phtml.vim syntax.jax /*phtml.vim* -pi_getscript.txt pi_getscript.jax /*pi_getscript.txt* -pi_gzip.txt pi_gzip.jax /*pi_gzip.txt* -pi_netrw.txt pi_netrw.jax /*pi_netrw.txt* -pi_paren.txt pi_paren.jax /*pi_paren.txt* -pi_spec.txt pi_spec.jax /*pi_spec.txt* -pi_tar.txt pi_tar.jax /*pi_tar.txt* -pi_vimball.txt pi_vimball.jax /*pi_vimball.txt* -pi_zip.txt pi_zip.jax /*pi_zip.txt* -pkzip options.jax /*pkzip* -plaintex.vim syntax.jax /*plaintex.vim* -plsql ft_sql.jax /*plsql* -plugin usr_05.jax /*plugin* -plugin-details filetype.jax /*plugin-details* -plugin-filetype usr_41.jax /*plugin-filetype* -plugin-special usr_41.jax /*plugin-special* -pmbcs-option print.jax /*pmbcs-option* -pmbfn-option print.jax /*pmbfn-option* -popt-option print.jax /*popt-option* -popup-menu gui.jax /*popup-menu* -popupmenu-completion insert.jax /*popupmenu-completion* -popupmenu-keys insert.jax /*popupmenu-keys* -posix vi_diff.jax /*posix* -posix-compliance vi_diff.jax /*posix-compliance* -posix-screen-size vi_diff.jax /*posix-screen-size* -postgresql ft_sql.jax /*postgresql* -postscr.vim syntax.jax /*postscr.vim* -postscript-cjk-printing print.jax /*postscript-cjk-printing* -postscript-print-encoding print.jax /*postscript-print-encoding* -postscript-print-trouble print.jax /*postscript-print-trouble* -postscript-print-util print.jax /*postscript-print-util* -postscript-printing print.jax /*postscript-printing* -pow() eval.jax /*pow()* -ppwiz.vim syntax.jax /*ppwiz.vim* -press-enter message.jax /*press-enter* -press-return message.jax /*press-return* -prevcount-variable eval.jax /*prevcount-variable* -preview-window windows.jax /*preview-window* -prevnonblank() eval.jax /*prevnonblank()* -print-intro print.jax /*print-intro* -print-options print.jax /*print-options* -print.txt print.jax /*print.txt* -printf() eval.jax /*printf()* -printf-% eval.jax /*printf-%* -printf-E eval.jax /*printf-E* -printf-G eval.jax /*printf-G* -printf-X eval.jax /*printf-X* -printf-c eval.jax /*printf-c* -printf-d eval.jax /*printf-d* -printf-e eval.jax /*printf-e* -printf-f eval.jax /*printf-f* -printf-g eval.jax /*printf-g* -printf-o eval.jax /*printf-o* -printf-s eval.jax /*printf-s* -printf-x eval.jax /*printf-x* -printing print.jax /*printing* -printing-formfeed print.jax /*printing-formfeed* -profile repeat.jax /*profile* -profiling repeat.jax /*profiling* -profiling-variable eval.jax /*profiling-variable* -progname-variable eval.jax /*progname-variable* -progress.vim syntax.jax /*progress.vim* -psql ft_sql.jax /*psql* -ptcap.vim syntax.jax /*ptcap.vim* -pterm-mouse options.jax /*pterm-mouse* -pumvisible() eval.jax /*pumvisible()* -put change.jax /*put* -put-Visual-mode change.jax /*put-Visual-mode* -python if_pyth.jax /*python* -python-buffer if_pyth.jax /*python-buffer* -python-buffers if_pyth.jax /*python-buffers* -python-command if_pyth.jax /*python-command* -python-commands if_pyth.jax /*python-commands* -python-current if_pyth.jax /*python-current* -python-dynamic if_pyth.jax /*python-dynamic* -python-error if_pyth.jax /*python-error* -python-eval if_pyth.jax /*python-eval* -python-examples if_pyth.jax /*python-examples* -python-input if_pyth.jax /*python-input* -python-output if_pyth.jax /*python-output* -python-range if_pyth.jax /*python-range* -python-vim if_pyth.jax /*python-vim* -python-window if_pyth.jax /*python-window* -python-windows if_pyth.jax /*python-windows* -python.vim syntax.jax /*python.vim* -python3 if_pyth.jax /*python3* -q repeat.jax /*q* -q/ cmdline.jax /*q\/* -q: cmdline.jax /*q:* -q? cmdline.jax /*q?* -qnx os_qnx.jax /*qnx* -qnx-compiling os_qnx.jax /*qnx-compiling* -qnx-general os_qnx.jax /*qnx-general* -qnx-terminal os_qnx.jax /*qnx-terminal* -quake.vim syntax.jax /*quake.vim* -quickfix quickfix.jax /*quickfix* -quickfix-directory-stack quickfix.jax /*quickfix-directory-stack* -quickfix-error-lists quickfix.jax /*quickfix-error-lists* -quickfix-functions usr_41.jax /*quickfix-functions* -quickfix-gcc quickfix.jax /*quickfix-gcc* -quickfix-manx quickfix.jax /*quickfix-manx* -quickfix-perl quickfix.jax /*quickfix-perl* -quickfix-valid quickfix.jax /*quickfix-valid* -quickfix-window quickfix.jax /*quickfix-window* -quickfix.txt quickfix.jax /*quickfix.txt* -quickref quickref.jax /*quickref* -quickref.txt quickref.jax /*quickref.txt* -quote change.jax /*quote* -quote# change.jax /*quote#* -quote% change.jax /*quote%* -quote+ gui_x11.jax /*quote+* -quote- change.jax /*quote-* -quote. change.jax /*quote.* -quote/ change.jax /*quote\/* -quote0 change.jax /*quote0* -quote1 change.jax /*quote1* -quote2 change.jax /*quote2* -quote3 change.jax /*quote3* -quote4 change.jax /*quote4* -quote9 change.jax /*quote9* -quote: change.jax /*quote:* -quote= change.jax /*quote=* -quote_ change.jax /*quote_* -quote_# change.jax /*quote_#* -quote_% change.jax /*quote_%* -quote_- change.jax /*quote_-* -quote_. change.jax /*quote_.* -quote_/ change.jax /*quote_\/* -quote_: change.jax /*quote_:* -quote_= change.jax /*quote_=* -quote_alpha change.jax /*quote_alpha* -quote_number change.jax /*quote_number* -quote_quote change.jax /*quote_quote* -quote_~ change.jax /*quote_~* -quotea change.jax /*quotea* -quotecommandquote intro.jax /*quotecommandquote* -quoteplus gui_x11.jax /*quoteplus* -quotequote change.jax /*quotequote* -quotes quotes.jax /*quotes* -quotes.txt quotes.jax /*quotes.txt* -quotestar gui.jax /*quotestar* -quote~ change.jax /*quote~* -r change.jax /*r* -range() eval.jax /*range()* -raw-terminal-mode term.jax /*raw-terminal-mode* -rcp pi_netrw.jax /*rcp* -read-messages insert.jax /*read-messages* -read-only-share editing.jax /*read-only-share* -readfile() eval.jax /*readfile()* -readline.vim syntax.jax /*readline.vim* -recording repeat.jax /*recording* -recover.txt recover.jax /*recover.txt* -recovery recover.jax /*recovery* -recursive_mapping map.jax /*recursive_mapping* -redo undo.jax /*redo* -redo-register undo.jax /*redo-register* -ref intro.jax /*ref* -reference intro.jax /*reference* -reference_toc help.jax /*reference_toc* -regexp pattern.jax /*regexp* -register sponsor.jax /*register* -register-faq sponsor.jax /*register-faq* -register-variable eval.jax /*register-variable* -registers change.jax /*registers* -regular-expression pattern.jax /*regular-expression* -reltime() eval.jax /*reltime()* -reltimestr() eval.jax /*reltimestr()* -remote.txt remote.jax /*remote.txt* -remote_expr() eval.jax /*remote_expr()* -remote_foreground() eval.jax /*remote_foreground()* -remote_peek() eval.jax /*remote_peek()* -remote_read() eval.jax /*remote_read()* -remote_send() eval.jax /*remote_send()* -remove() eval.jax /*remove()* -remove-filetype filetype.jax /*remove-filetype* -remove-option-flags options.jax /*remove-option-flags* -rename() eval.jax /*rename()* -rename-files tips.jax /*rename-files* -repeat() eval.jax /*repeat()* -repeat.txt repeat.jax /*repeat.txt* -repeating repeat.jax /*repeating* -replacing change.jax /*replacing* -replacing-ex insert.jax /*replacing-ex* -reselect-Visual visual.jax /*reselect-Visual* -resolve() eval.jax /*resolve()* -restore-cursor usr_05.jax /*restore-cursor* -restore-position tips.jax /*restore-position* -restricted-mode starting.jax /*restricted-mode* -retab-example change.jax /*retab-example* -rethrow eval.jax /*rethrow* -reverse() eval.jax /*reverse()* -rexx.vim syntax.jax /*rexx.vim* -rgb.txt gui_w32.jax /*rgb.txt* -rgview starting.jax /*rgview* -rgvim starting.jax /*rgvim* -right-justify change.jax /*right-justify* -rileft rileft.jax /*rileft* -rileft.txt rileft.jax /*rileft.txt* -riscos os_risc.jax /*riscos* -rot13 change.jax /*rot13* -round() eval.jax /*round()* -rsync pi_netrw.jax /*rsync* -ruby if_ruby.jax /*ruby* -ruby-buffer if_ruby.jax /*ruby-buffer* -ruby-command if_ruby.jax /*ruby-command* -ruby-commands if_ruby.jax /*ruby-commands* -ruby-dynamic if_ruby.jax /*ruby-dynamic* -ruby-evaluate if_ruby.jax /*ruby-evaluate* -ruby-globals if_ruby.jax /*ruby-globals* -ruby-message if_ruby.jax /*ruby-message* -ruby-set_option if_ruby.jax /*ruby-set_option* -ruby-vim if_ruby.jax /*ruby-vim* -ruby-window if_ruby.jax /*ruby-window* -ruby.vim syntax.jax /*ruby.vim* -russian russian.jax /*russian* -russian-intro russian.jax /*russian-intro* -russian-issues russian.jax /*russian-issues* -russian-keymap russian.jax /*russian-keymap* -russian-l18n russian.jax /*russian-l18n* -russian.txt russian.jax /*russian.txt* -rview starting.jax /*rview* -rvim starting.jax /*rvim* -rxvt syntax.jax /*rxvt* -s change.jax /*s* -s/\& change.jax /*s\/\\&* -s/\0 change.jax /*s\/\\0* -s/\1 change.jax /*s\/\\1* -s/\2 change.jax /*s\/\\2* -s/\3 change.jax /*s\/\\3* -s/\9 change.jax /*s\/\\9* -s/\<CR> change.jax /*s\/\\<CR>* -s/\E change.jax /*s\/\\E* -s/\L change.jax /*s\/\\L* -s/\U change.jax /*s\/\\U* -s/\\ change.jax /*s\/\\\\* -s/\b change.jax /*s\/\\b* -s/\e change.jax /*s\/\\e* -s/\l change.jax /*s\/\\l* -s/\n change.jax /*s\/\\n* -s/\r change.jax /*s\/\\r* -s/\t change.jax /*s\/\\t* -s/\u change.jax /*s\/\\u* -s/\~ change.jax /*s\/\\~* -s:netrw_passwd pi_netrw.jax /*s:netrw_passwd* -s:var eval.jax /*s:var* -s<CR> change.jax /*s<CR>* -sandbox eval.jax /*sandbox* -sandbox-option eval.jax /*sandbox-option* -save-file editing.jax /*save-file* -save-settings starting.jax /*save-settings* -scheme.vim syntax.jax /*scheme.vim* -scp pi_netrw.jax /*scp* -script usr_41.jax /*script* -script-here if_perl.jax /*script-here* -script-local map.jax /*script-local* -script-variable eval.jax /*script-variable* -scriptnames-dictionary eval.jax /*scriptnames-dictionary* -scriptout-changed version4.jax /*scriptout-changed* -scroll-binding scroll.jax /*scroll-binding* -scroll-cursor scroll.jax /*scroll-cursor* -scroll-down scroll.jax /*scroll-down* -scroll-horizontal scroll.jax /*scroll-horizontal* -scroll-insert tips.jax /*scroll-insert* -scroll-mouse-wheel scroll.jax /*scroll-mouse-wheel* -scroll-region term.jax /*scroll-region* -scroll-smooth tips.jax /*scroll-smooth* -scroll-up scroll.jax /*scroll-up* -scroll.txt scroll.jax /*scroll.txt* -scrollbind-quickadj scroll.jax /*scrollbind-quickadj* -scrollbind-relative scroll.jax /*scrollbind-relative* -scrolling scroll.jax /*scrolling* -scrollstart-variable eval.jax /*scrollstart-variable* -sdl.vim syntax.jax /*sdl.vim* -search() eval.jax /*search()* -search()-sub-match eval.jax /*search()-sub-match* -search-commands pattern.jax /*search-commands* -search-offset pattern.jax /*search-offset* -search-pattern pattern.jax /*search-pattern* -search-range pattern.jax /*search-range* -search-replace change.jax /*search-replace* -searchdecl() eval.jax /*searchdecl()* -searchforward-variable eval.jax /*searchforward-variable* -searchpair() eval.jax /*searchpair()* -searchpairpos() eval.jax /*searchpairpos()* -searchpos() eval.jax /*searchpos()* -section motion.jax /*section* -sed.vim syntax.jax /*sed.vim* -self eval.jax /*self* -send-money sponsor.jax /*send-money* -send-to-menu gui_w32.jax /*send-to-menu* -sendto gui_w32.jax /*sendto* -sentence motion.jax /*sentence* -server-functions usr_41.jax /*server-functions* -server2client() eval.jax /*server2client()* -serverlist() eval.jax /*serverlist()* -servername-variable eval.jax /*servername-variable* -session-file starting.jax /*session-file* -set-option options.jax /*set-option* -setbufvar() eval.jax /*setbufvar()* -setcmdpos() eval.jax /*setcmdpos()* -setline() eval.jax /*setline()* -setloclist() eval.jax /*setloclist()* -setmatches() eval.jax /*setmatches()* -setpos() eval.jax /*setpos()* -setqflist() eval.jax /*setqflist()* -setreg() eval.jax /*setreg()* -settabvar() eval.jax /*settabvar()* -settabwinvar() eval.jax /*settabwinvar()* -setting-guifont gui.jax /*setting-guifont* -setting-guitablabel tabpage.jax /*setting-guitablabel* -setting-tabline tabpage.jax /*setting-tabline* -setuid change.jax /*setuid* -setwinvar() eval.jax /*setwinvar()* -sftp pi_netrw.jax /*sftp* -sgml.vim syntax.jax /*sgml.vim* -sh.vim syntax.jax /*sh.vim* -shell-window tips.jax /*shell-window* -shell_error-variable eval.jax /*shell_error-variable* -shellescape() eval.jax /*shellescape()* -shift intro.jax /*shift* -shift-left-right change.jax /*shift-left-right* -short-name-changed version4.jax /*short-name-changed* -showing-menus gui.jax /*showing-menus* -sign-commands sign.jax /*sign-commands* -sign-intro sign.jax /*sign-intro* -sign-support sign.jax /*sign-support* -sign.txt sign.jax /*sign.txt* -signs sign.jax /*signs* -simple-change change.jax /*simple-change* -simplify() eval.jax /*simplify()* -simulated-command vi_diff.jax /*simulated-command* -sin() eval.jax /*sin()* -single-repeat repeat.jax /*single-repeat* -sinh() eval.jax /*sinh()* -skeleton autocmd.jax /*skeleton* -slice eval.jax /*slice* -slow-fast-terminal term.jax /*slow-fast-terminal* -slow-start starting.jax /*slow-start* -slow-terminal term.jax /*slow-terminal* -sniff if_sniff.jax /*sniff* -sniff-commands if_sniff.jax /*sniff-commands* -sniff-compiling if_sniff.jax /*sniff-compiling* -sniff-intro if_sniff.jax /*sniff-intro* -socket-interface netbeans.jax /*socket-interface* -sort() eval.jax /*sort()* -sorting change.jax /*sorting* -soundfold() eval.jax /*soundfold()* -space intro.jax /*space* -spec-customizing pi_spec.jax /*spec-customizing* -spec-how-to-use-it pi_spec.jax /*spec-how-to-use-it* -spec-setting-a-map pi_spec.jax /*spec-setting-a-map* -spec_chglog_format pi_spec.jax /*spec_chglog_format* -spec_chglog_prepend pi_spec.jax /*spec_chglog_prepend* -spec_chglog_release_info pi_spec.jax /*spec_chglog_release_info* -special-buffers windows.jax /*special-buffers* -speed-up tips.jax /*speed-up* -spell-functions usr_41.jax /*spell-functions* -spellbadword() eval.jax /*spellbadword()* -spellsuggest() eval.jax /*spellsuggest()* -split() eval.jax /*split()* -splitfind windows.jax /*splitfind* -splitview windows.jax /*splitview* -sponsor sponsor.jax /*sponsor* -sponsor-faq sponsor.jax /*sponsor-faq* -sponsor.txt sponsor.jax /*sponsor.txt* -spoon os_unix.jax /*spoon* -spup.vim syntax.jax /*spup.vim* -sql-adding-dialects ft_sql.jax /*sql-adding-dialects* -sql-completion ft_sql.jax /*sql-completion* -sql-completion-columns ft_sql.jax /*sql-completion-columns* -sql-completion-customization ft_sql.jax /*sql-completion-customization* -sql-completion-dynamic ft_sql.jax /*sql-completion-dynamic* -sql-completion-filetypes ft_sql.jax /*sql-completion-filetypes* -sql-completion-maps ft_sql.jax /*sql-completion-maps* -sql-completion-procedures ft_sql.jax /*sql-completion-procedures* -sql-completion-static ft_sql.jax /*sql-completion-static* -sql-completion-tables ft_sql.jax /*sql-completion-tables* -sql-completion-tutorial ft_sql.jax /*sql-completion-tutorial* -sql-completion-views ft_sql.jax /*sql-completion-views* -sql-dialects ft_sql.jax /*sql-dialects* -sql-macros ft_sql.jax /*sql-macros* -sql-matchit ft_sql.jax /*sql-matchit* -sql-navigation ft_sql.jax /*sql-navigation* -sql-object-motions ft_sql.jax /*sql-object-motions* -sql-predefined-objects ft_sql.jax /*sql-predefined-objects* -sql-type-default ft_sql.jax /*sql-type-default* -sql-types ft_sql.jax /*sql-types* -sql.vim syntax.jax /*sql.vim* -sqlanywhere ft_sql.jax /*sqlanywhere* -sqlanywhere.vim syntax.jax /*sqlanywhere.vim* -sqlgettype ft_sql.jax /*sqlgettype* -sqlinformix.vim syntax.jax /*sqlinformix.vim* -sqlj ft_sql.jax /*sqlj* -sqlserver ft_sql.jax /*sqlserver* -sqlsettype ft_sql.jax /*sqlsettype* -sqrt() eval.jax /*sqrt()* -sscanf eval.jax /*sscanf* -standard-plugin usr_05.jax /*standard-plugin* -standard-plugin-list help.jax /*standard-plugin-list* -standout syntax.jax /*standout* -star pattern.jax /*star* -starstar editing.jax /*starstar* -starstar-wildcard editing.jax /*starstar-wildcard* -start-of-file pattern.jax /*start-of-file* -starting starting.jax /*starting* -starting-amiga starting.jax /*starting-amiga* -starting.txt starting.jax /*starting.txt* -startup starting.jax /*startup* -startup-options starting.jax /*startup-options* -startup-terminal term.jax /*startup-terminal* -static-tag tagsrch.jax /*static-tag* -status-line windows.jax /*status-line* -statusmsg-variable eval.jax /*statusmsg-variable* -sticky-type-checking eval.jax /*sticky-type-checking* -str2float() eval.jax /*str2float()* -str2nr() eval.jax /*str2nr()* -strcasestr() eval.jax /*strcasestr()* -strchars() eval.jax /*strchars()* -strchr() eval.jax /*strchr()* -strcspn() eval.jax /*strcspn()* -strdisplaywidth() eval.jax /*strdisplaywidth()* -strftime() eval.jax /*strftime()* -stridx() eval.jax /*stridx()* -string() eval.jax /*string()* -string-functions usr_41.jax /*string-functions* -string-match eval.jax /*string-match* -strlen() eval.jax /*strlen()* -strpart() eval.jax /*strpart()* -strpbrk() eval.jax /*strpbrk()* -strrchr() eval.jax /*strrchr()* -strridx() eval.jax /*strridx()* -strspn() eval.jax /*strspn()* -strstr() eval.jax /*strstr()* -strtrans() eval.jax /*strtrans()* -strwidth() eval.jax /*strwidth()* -style-changes develop.jax /*style-changes* -style-examples develop.jax /*style-examples* -style-functions develop.jax /*style-functions* -style-names develop.jax /*style-names* -style-spaces develop.jax /*style-spaces* -style-various develop.jax /*style-various* -sub-menu-priority gui.jax /*sub-menu-priority* -sub-replace-\= change.jax /*sub-replace-\\=* -sub-replace-expression change.jax /*sub-replace-expression* -sub-replace-special change.jax /*sub-replace-special* -sublist eval.jax /*sublist* -submatch() eval.jax /*submatch()* -subscribe-maillist intro.jax /*subscribe-maillist* -substitute() eval.jax /*substitute()* -suffixes cmdline.jax /*suffixes* -suspend starting.jax /*suspend* -swap-exists-choices usr_11.jax /*swap-exists-choices* -swap-file recover.jax /*swap-file* -swapchoice-variable eval.jax /*swapchoice-variable* -swapcommand-variable eval.jax /*swapcommand-variable* -swapfile-changed version4.jax /*swapfile-changed* -swapname-variable eval.jax /*swapname-variable* -sybase ft_sql.jax /*sybase* -syn-sync-grouphere syntax.jax /*syn-sync-grouphere* -syn-sync-groupthere syntax.jax /*syn-sync-groupthere* -syn-sync-linecont syntax.jax /*syn-sync-linecont* -synID() eval.jax /*synID()* -synIDattr() eval.jax /*synIDattr()* -synIDtrans() eval.jax /*synIDtrans()* -syncbind scroll.jax /*syncbind* -syncolor syntax.jax /*syncolor* -synconcealed() eval.jax /*synconcealed()* -synload-1 syntax.jax /*synload-1* -synload-2 syntax.jax /*synload-2* -synload-3 syntax.jax /*synload-3* -synload-4 syntax.jax /*synload-4* -synload-5 syntax.jax /*synload-5* -synload-6 syntax.jax /*synload-6* -synstack() eval.jax /*synstack()* -syntax syntax.jax /*syntax* -syntax-functions usr_41.jax /*syntax-functions* -syntax-highlighting syntax.jax /*syntax-highlighting* -syntax-loading syntax.jax /*syntax-loading* -syntax-printing usr_06.jax /*syntax-printing* -syntax.txt syntax.jax /*syntax.txt* -syntax_cmd syntax.jax /*syntax_cmd* -sys-file-list help.jax /*sys-file-list* -sysmouse term.jax /*sysmouse* -system() eval.jax /*system()* -system-functions usr_41.jax /*system-functions* -system-vimrc starting.jax /*system-vimrc* -s~ change.jax /*s~* -t motion.jax /*t* -t:var eval.jax /*t:var* -t_#2 term.jax /*t_#2* -t_#4 term.jax /*t_#4* -t_%1 term.jax /*t_%1* -t_%i term.jax /*t_%i* -t_&8 term.jax /*t_&8* -t_@7 term.jax /*t_@7* -t_AB term.jax /*t_AB* -t_AF term.jax /*t_AF* -t_AL term.jax /*t_AL* -t_CS term.jax /*t_CS* -t_CV term.jax /*t_CV* -t_Ce term.jax /*t_Ce* -t_Co term.jax /*t_Co* -t_Cs term.jax /*t_Cs* -t_DL term.jax /*t_DL* -t_EI term.jax /*t_EI* -t_F1 term.jax /*t_F1* -t_F2 term.jax /*t_F2* -t_F3 term.jax /*t_F3* -t_F4 term.jax /*t_F4* -t_F5 term.jax /*t_F5* -t_F6 term.jax /*t_F6* -t_F7 term.jax /*t_F7* -t_F8 term.jax /*t_F8* -t_F9 term.jax /*t_F9* -t_IE term.jax /*t_IE* -t_IS term.jax /*t_IS* -t_K1 term.jax /*t_K1* -t_K3 term.jax /*t_K3* -t_K4 term.jax /*t_K4* -t_K5 term.jax /*t_K5* -t_K6 term.jax /*t_K6* -t_K7 term.jax /*t_K7* -t_K8 term.jax /*t_K8* -t_K9 term.jax /*t_K9* -t_KA term.jax /*t_KA* -t_KB term.jax /*t_KB* -t_KC term.jax /*t_KC* -t_KD term.jax /*t_KD* -t_KE term.jax /*t_KE* -t_KF term.jax /*t_KF* -t_KG term.jax /*t_KG* -t_KH term.jax /*t_KH* -t_KI term.jax /*t_KI* -t_KJ term.jax /*t_KJ* -t_KK term.jax /*t_KK* -t_KL term.jax /*t_KL* -t_RI term.jax /*t_RI* -t_RV term.jax /*t_RV* -t_SI term.jax /*t_SI* -t_Sb term.jax /*t_Sb* -t_Sf term.jax /*t_Sf* -t_WP term.jax /*t_WP* -t_WS term.jax /*t_WS* -t_ZH term.jax /*t_ZH* -t_ZR term.jax /*t_ZR* -t_al term.jax /*t_al* -t_bc term.jax /*t_bc* -t_cd term.jax /*t_cd* -t_cdl version4.jax /*t_cdl* -t_ce term.jax /*t_ce* -t_ci version4.jax /*t_ci* -t_cil version4.jax /*t_cil* -t_cl term.jax /*t_cl* -t_cm term.jax /*t_cm* -t_cri version4.jax /*t_cri* -t_cs term.jax /*t_cs* -t_csc version4.jax /*t_csc* -t_cv version4.jax /*t_cv* -t_da term.jax /*t_da* -t_db term.jax /*t_db* -t_dl term.jax /*t_dl* -t_ed version4.jax /*t_ed* -t_el version4.jax /*t_el* -t_f1 version4.jax /*t_f1* -t_f10 version4.jax /*t_f10* -t_f2 version4.jax /*t_f2* -t_f3 version4.jax /*t_f3* -t_f4 version4.jax /*t_f4* -t_f5 version4.jax /*t_f5* -t_f6 version4.jax /*t_f6* -t_f7 version4.jax /*t_f7* -t_f8 version4.jax /*t_f8* -t_f9 version4.jax /*t_f9* -t_fs term.jax /*t_fs* -t_help version4.jax /*t_help* -t_il version4.jax /*t_il* -t_k1 term.jax /*t_k1* -t_k2 term.jax /*t_k2* -t_k3 term.jax /*t_k3* -t_k4 term.jax /*t_k4* -t_k5 term.jax /*t_k5* -t_k6 term.jax /*t_k6* -t_k7 term.jax /*t_k7* -t_k8 term.jax /*t_k8* -t_k9 term.jax /*t_k9* -t_k; term.jax /*t_k;* -t_kB term.jax /*t_kB* -t_kD term.jax /*t_kD* -t_kI term.jax /*t_kI* -t_kN term.jax /*t_kN* -t_kP term.jax /*t_kP* -t_kb term.jax /*t_kb* -t_kd term.jax /*t_kd* -t_ke term.jax /*t_ke* -t_kh term.jax /*t_kh* -t_kl term.jax /*t_kl* -t_kr term.jax /*t_kr* -t_ks term.jax /*t_ks* -t_ku term.jax /*t_ku* -t_le term.jax /*t_le* -t_mb term.jax /*t_mb* -t_md term.jax /*t_md* -t_me term.jax /*t_me* -t_mr term.jax /*t_mr* -t_ms term.jax /*t_ms* -t_nd term.jax /*t_nd* -t_op term.jax /*t_op* -t_se term.jax /*t_se* -t_sf1 version4.jax /*t_sf1* -t_sf10 version4.jax /*t_sf10* -t_sf2 version4.jax /*t_sf2* -t_sf3 version4.jax /*t_sf3* -t_sf4 version4.jax /*t_sf4* -t_sf5 version4.jax /*t_sf5* -t_sf6 version4.jax /*t_sf6* -t_sf7 version4.jax /*t_sf7* -t_sf8 version4.jax /*t_sf8* -t_sf9 version4.jax /*t_sf9* -t_skd version4.jax /*t_skd* -t_skl version4.jax /*t_skl* -t_skr version4.jax /*t_skr* -t_sku version4.jax /*t_sku* -t_so term.jax /*t_so* -t_sr term.jax /*t_sr* -t_star7 term.jax /*t_star7* -t_tb version4.jax /*t_tb* -t_te term.jax /*t_te* -t_ti term.jax /*t_ti* -t_tp version4.jax /*t_tp* -t_ts term.jax /*t_ts* -t_ts_old version4.jax /*t_ts_old* -t_ue term.jax /*t_ue* -t_undo version4.jax /*t_undo* -t_us term.jax /*t_us* -t_ut term.jax /*t_ut* -t_vb term.jax /*t_vb* -t_ve term.jax /*t_ve* -t_vi term.jax /*t_vi* -t_vs term.jax /*t_vs* -t_xs term.jax /*t_xs* -tab intro.jax /*tab* -tab-page tabpage.jax /*tab-page* -tab-page-commands tabpage.jax /*tab-page-commands* -tab-page-intro tabpage.jax /*tab-page-intro* -tab-page-other tabpage.jax /*tab-page-other* -tabline-menu tabpage.jax /*tabline-menu* -tabpage tabpage.jax /*tabpage* -tabpage-variable eval.jax /*tabpage-variable* -tabpage.txt tabpage.jax /*tabpage.txt* -tabpagebuflist() eval.jax /*tabpagebuflist()* -tabpagenr() eval.jax /*tabpagenr()* -tabpagewinnr() eval.jax /*tabpagewinnr()* -tag tagsrch.jax /*tag* -tag-! tagsrch.jax /*tag-!* -tag-any-white tagsrch.jax /*tag-any-white* -tag-binary-search tagsrch.jax /*tag-binary-search* -tag-blocks motion.jax /*tag-blocks* -tag-commands tagsrch.jax /*tag-commands* -tag-details tagsrch.jax /*tag-details* -tag-highlight syntax.jax /*tag-highlight* -tag-matchlist tagsrch.jax /*tag-matchlist* -tag-old-static tagsrch.jax /*tag-old-static* -tag-preview tagsrch.jax /*tag-preview* -tag-priority tagsrch.jax /*tag-priority* -tag-regexp tagsrch.jax /*tag-regexp* -tag-search tagsrch.jax /*tag-search* -tag-security tagsrch.jax /*tag-security* -tag-skip-file tagsrch.jax /*tag-skip-file* -tag-stack tagsrch.jax /*tag-stack* -tagfiles() eval.jax /*tagfiles()* -taglist() eval.jax /*taglist()* -tags tagsrch.jax /*tags* -tags-and-searches tagsrch.jax /*tags-and-searches* -tags-file-format tagsrch.jax /*tags-file-format* -tags-option tagsrch.jax /*tags-option* -tagsrch.txt tagsrch.jax /*tagsrch.txt* -tagstack tagsrch.jax /*tagstack* -tan() eval.jax /*tan()* -tanh() eval.jax /*tanh()* -tar pi_tar.jax /*tar* -tar-contents pi_tar.jax /*tar-contents* -tar-copyright pi_tar.jax /*tar-copyright* -tar-history pi_tar.jax /*tar-history* -tar-manual pi_tar.jax /*tar-manual* -tar-options pi_tar.jax /*tar-options* -tar-usage pi_tar.jax /*tar-usage* -tcl if_tcl.jax /*tcl* -tcl-beep if_tcl.jax /*tcl-beep* -tcl-buffer if_tcl.jax /*tcl-buffer* -tcl-buffer-append if_tcl.jax /*tcl-buffer-append* -tcl-buffer-cmds if_tcl.jax /*tcl-buffer-cmds* -tcl-buffer-command if_tcl.jax /*tcl-buffer-command* -tcl-buffer-count if_tcl.jax /*tcl-buffer-count* -tcl-buffer-delcmd if_tcl.jax /*tcl-buffer-delcmd* -tcl-buffer-delete if_tcl.jax /*tcl-buffer-delete* -tcl-buffer-expr if_tcl.jax /*tcl-buffer-expr* -tcl-buffer-get if_tcl.jax /*tcl-buffer-get* -tcl-buffer-insert if_tcl.jax /*tcl-buffer-insert* -tcl-buffer-last if_tcl.jax /*tcl-buffer-last* -tcl-buffer-mark if_tcl.jax /*tcl-buffer-mark* -tcl-buffer-option if_tcl.jax /*tcl-buffer-option* -tcl-buffer-set if_tcl.jax /*tcl-buffer-set* -tcl-buffer-windows if_tcl.jax /*tcl-buffer-windows* -tcl-bugs if_tcl.jax /*tcl-bugs* -tcl-command if_tcl.jax /*tcl-command* -tcl-commands if_tcl.jax /*tcl-commands* -tcl-dynamic if_tcl.jax /*tcl-dynamic* -tcl-ex-commands if_tcl.jax /*tcl-ex-commands* -tcl-examples if_tcl.jax /*tcl-examples* -tcl-expr if_tcl.jax /*tcl-expr* -tcl-linenumbers if_tcl.jax /*tcl-linenumbers* -tcl-misc if_tcl.jax /*tcl-misc* -tcl-option if_tcl.jax /*tcl-option* -tcl-output if_tcl.jax /*tcl-output* -tcl-var-current if_tcl.jax /*tcl-var-current* -tcl-var-lbase if_tcl.jax /*tcl-var-lbase* -tcl-var-line if_tcl.jax /*tcl-var-line* -tcl-var-lnum if_tcl.jax /*tcl-var-lnum* -tcl-var-range if_tcl.jax /*tcl-var-range* -tcl-variables if_tcl.jax /*tcl-variables* -tcl-window if_tcl.jax /*tcl-window* -tcl-window-buffer if_tcl.jax /*tcl-window-buffer* -tcl-window-cmds if_tcl.jax /*tcl-window-cmds* -tcl-window-command if_tcl.jax /*tcl-window-command* -tcl-window-cursor if_tcl.jax /*tcl-window-cursor* -tcl-window-delcmd if_tcl.jax /*tcl-window-delcmd* -tcl-window-expr if_tcl.jax /*tcl-window-expr* -tcl-window-height if_tcl.jax /*tcl-window-height* -tcl-window-option if_tcl.jax /*tcl-window-option* -tcsh-style cmdline.jax /*tcsh-style* -tcsh-syntax syntax.jax /*tcsh-syntax* -tcsh.vim syntax.jax /*tcsh.vim* -tear-off-menus gui.jax /*tear-off-menus* -telnet-CTRL-] tagsrch.jax /*telnet-CTRL-]* -temp-file-name eval.jax /*temp-file-name* -tempfile change.jax /*tempfile* -template autocmd.jax /*template* -tempname() eval.jax /*tempname()* -term-dependent-settings term.jax /*term-dependent-settings* -term-list syntax.jax /*term-list* -term.txt term.jax /*term.txt* -termcap term.jax /*termcap* -termcap-changed version4.jax /*termcap-changed* -termcap-colors term.jax /*termcap-colors* -termcap-cursor-color term.jax /*termcap-cursor-color* -termcap-cursor-shape term.jax /*termcap-cursor-shape* -termcap-options term.jax /*termcap-options* -termcap-title term.jax /*termcap-title* -terminal-colors os_unix.jax /*terminal-colors* -terminal-info term.jax /*terminal-info* -terminal-options term.jax /*terminal-options* -terminfo term.jax /*terminfo* -termresponse-variable eval.jax /*termresponse-variable* -tex-cchar syntax.jax /*tex-cchar* -tex-cole syntax.jax /*tex-cole* -tex-conceal syntax.jax /*tex-conceal* -tex-error syntax.jax /*tex-error* -tex-folding syntax.jax /*tex-folding* -tex-math syntax.jax /*tex-math* -tex-morecommands syntax.jax /*tex-morecommands* -tex-nospell syntax.jax /*tex-nospell* -tex-package syntax.jax /*tex-package* -tex-runon syntax.jax /*tex-runon* -tex-slow syntax.jax /*tex-slow* -tex-style syntax.jax /*tex-style* -tex-verb syntax.jax /*tex-verb* -tex.vim syntax.jax /*tex.vim* -text-functions usr_41.jax /*text-functions* -text-objects motion.jax /*text-objects* -textlock eval.jax /*textlock* -tf.vim syntax.jax /*tf.vim* -this_session-variable eval.jax /*this_session-variable* -throw-catch eval.jax /*throw-catch* -throw-expression eval.jax /*throw-expression* -throw-from-catch eval.jax /*throw-from-catch* -throw-variables eval.jax /*throw-variables* -throwpoint-variable eval.jax /*throwpoint-variable* -time-functions usr_41.jax /*time-functions* -timestamp editing.jax /*timestamp* -timestamps editing.jax /*timestamps* -tips tips.jax /*tips* -tips.txt tips.jax /*tips.txt* -toggle options.jax /*toggle* -toggle-revins version4.jax /*toggle-revins* -tolower() eval.jax /*tolower()* -toolbar-icon gui.jax /*toolbar-icon* -toupper() eval.jax /*toupper()* -tr() eval.jax /*tr()* -trojan-horse starting.jax /*trojan-horse* -trunc() eval.jax /*trunc()* -try-conditionals eval.jax /*try-conditionals* -try-echoerr eval.jax /*try-echoerr* -try-finally eval.jax /*try-finally* -try-nested eval.jax /*try-nested* -try-nesting eval.jax /*try-nesting* -tutor usr_01.jax /*tutor* -type() eval.jax /*type()* -type-mistakes tips.jax /*type-mistakes* -typecorr-settings usr_41.jax /*typecorr-settings* -typecorr.txt usr_41.jax /*typecorr.txt* -u undo.jax /*u* -uganda uganda.jax /*uganda* -uganda.txt uganda.jax /*uganda.txt* -undercurl syntax.jax /*undercurl* -underline syntax.jax /*underline* -undo undo.jax /*undo* -undo-blocks undo.jax /*undo-blocks* -undo-branches undo.jax /*undo-branches* -undo-commands undo.jax /*undo-commands* -undo-persistence undo.jax /*undo-persistence* -undo-redo undo.jax /*undo-redo* -undo-remarks undo.jax /*undo-remarks* -undo-tree undo.jax /*undo-tree* -undo-two-ways undo.jax /*undo-two-ways* -undo.txt undo.jax /*undo.txt* -undo_ftplugin usr_41.jax /*undo_ftplugin* -undofile() eval.jax /*undofile()* -undotree() eval.jax /*undotree()* -unicode mbyte.jax /*unicode* -unix os_unix.jax /*unix* -unlisted-buffer windows.jax /*unlisted-buffer* -up-down-motions motion.jax /*up-down-motions* -uppercase change.jax /*uppercase* -use-cpo-save usr_41.jax /*use-cpo-save* -use-visual-cmds version4.jax /*use-visual-cmds* -useful-mappings tips.jax /*useful-mappings* -usenet intro.jax /*usenet* -user-cmd-ambiguous map.jax /*user-cmd-ambiguous* -user-commands map.jax /*user-commands* -user-functions eval.jax /*user-functions* -user-manual usr_toc.jax /*user-manual* -using-<Plug> usr_41.jax /*using-<Plug>* -using-menus gui.jax /*using-menus* -using-scripts repeat.jax /*using-scripts* -using-xxd tips.jax /*using-xxd* -using_CTRL-V map.jax /*using_CTRL-V* -usr_01.txt usr_01.jax /*usr_01.txt* -usr_02.txt usr_02.jax /*usr_02.txt* -usr_03.txt usr_03.jax /*usr_03.txt* -usr_04.txt usr_04.jax /*usr_04.txt* -usr_05.txt usr_05.jax /*usr_05.txt* -usr_06.txt usr_06.jax /*usr_06.txt* -usr_07.txt usr_07.jax /*usr_07.txt* -usr_08.txt usr_08.jax /*usr_08.txt* -usr_09.txt usr_09.jax /*usr_09.txt* -usr_10.txt usr_10.jax /*usr_10.txt* -usr_11.txt usr_11.jax /*usr_11.txt* -usr_12.txt usr_12.jax /*usr_12.txt* -usr_20.txt usr_20.jax /*usr_20.txt* -usr_21.txt usr_21.jax /*usr_21.txt* -usr_22.txt usr_22.jax /*usr_22.txt* -usr_23.txt usr_23.jax /*usr_23.txt* -usr_24.txt usr_24.jax /*usr_24.txt* -usr_25.txt usr_25.jax /*usr_25.txt* -usr_26.txt usr_26.jax /*usr_26.txt* -usr_27.txt usr_27.jax /*usr_27.txt* -usr_28.txt usr_28.jax /*usr_28.txt* -usr_29.txt usr_29.jax /*usr_29.txt* -usr_30.txt usr_30.jax /*usr_30.txt* -usr_31.txt usr_31.jax /*usr_31.txt* -usr_32.txt usr_32.jax /*usr_32.txt* -usr_40.txt usr_40.jax /*usr_40.txt* -usr_41.txt usr_41.jax /*usr_41.txt* -usr_42.txt usr_42.jax /*usr_42.txt* -usr_43.txt usr_43.jax /*usr_43.txt* -usr_44.txt usr_44.jax /*usr_44.txt* -usr_45.txt usr_45.jax /*usr_45.txt* -usr_90.txt usr_90.jax /*usr_90.txt* -usr_toc.txt usr_toc.jax /*usr_toc.txt* -utf-8 mbyte.jax /*utf-8* -utf-8-char-arg mbyte.jax /*utf-8-char-arg* -utf-8-in-xwindows mbyte.jax /*utf-8-in-xwindows* -utf-8-typing mbyte.jax /*utf-8-typing* -utf8 mbyte.jax /*utf8* -v visual.jax /*v* -v:beval_bufnr eval.jax /*v:beval_bufnr* -v:beval_col eval.jax /*v:beval_col* -v:beval_lnum eval.jax /*v:beval_lnum* -v:beval_text eval.jax /*v:beval_text* -v:beval_winnr eval.jax /*v:beval_winnr* -v:char eval.jax /*v:char* -v:charconvert_from eval.jax /*v:charconvert_from* -v:charconvert_to eval.jax /*v:charconvert_to* -v:cmdarg eval.jax /*v:cmdarg* -v:cmdbang eval.jax /*v:cmdbang* -v:count eval.jax /*v:count* -v:count1 eval.jax /*v:count1* -v:ctype eval.jax /*v:ctype* -v:dying eval.jax /*v:dying* -v:errmsg eval.jax /*v:errmsg* -v:exception eval.jax /*v:exception* -v:fcs_choice eval.jax /*v:fcs_choice* -v:fcs_reason eval.jax /*v:fcs_reason* -v:fname_diff eval.jax /*v:fname_diff* -v:fname_in eval.jax /*v:fname_in* -v:fname_new eval.jax /*v:fname_new* -v:fname_out eval.jax /*v:fname_out* -v:folddashes eval.jax /*v:folddashes* -v:foldend eval.jax /*v:foldend* -v:foldlevel eval.jax /*v:foldlevel* -v:foldstart eval.jax /*v:foldstart* -v:insertmode eval.jax /*v:insertmode* -v:key eval.jax /*v:key* -v:lang eval.jax /*v:lang* -v:lc_time eval.jax /*v:lc_time* -v:lnum eval.jax /*v:lnum* -v:mouse_col eval.jax /*v:mouse_col* -v:mouse_lnum eval.jax /*v:mouse_lnum* -v:mouse_win eval.jax /*v:mouse_win* -v:oldfiles eval.jax /*v:oldfiles* -v:operator eval.jax /*v:operator* -v:prevcount eval.jax /*v:prevcount* -v:profiling eval.jax /*v:profiling* -v:progname eval.jax /*v:progname* -v:register eval.jax /*v:register* -v:scrollstart eval.jax /*v:scrollstart* -v:searchforward eval.jax /*v:searchforward* -v:servername eval.jax /*v:servername* -v:shell_error eval.jax /*v:shell_error* -v:statusmsg eval.jax /*v:statusmsg* -v:swapchoice eval.jax /*v:swapchoice* -v:swapcommand eval.jax /*v:swapcommand* -v:swapname eval.jax /*v:swapname* -v:termresponse eval.jax /*v:termresponse* -v:this_session eval.jax /*v:this_session* -v:throwpoint eval.jax /*v:throwpoint* -v:val eval.jax /*v:val* -v:var eval.jax /*v:var* -v:version eval.jax /*v:version* -v:warningmsg eval.jax /*v:warningmsg* -v:windowid eval.jax /*v:windowid* -v_! change.jax /*v_!* -v_$ visual.jax /*v_$* -v_: cmdline.jax /*v_:* -v_< change.jax /*v_<* -v_<BS> change.jax /*v_<BS>* -v_<Del> change.jax /*v_<Del>* -v_<Esc> visual.jax /*v_<Esc>* -v_= change.jax /*v_=* -v_> change.jax /*v_>* -v_C change.jax /*v_C* -v_CTRL-C visual.jax /*v_CTRL-C* -v_CTRL-G visual.jax /*v_CTRL-G* -v_CTRL-H change.jax /*v_CTRL-H* -v_CTRL-O visual.jax /*v_CTRL-O* -v_CTRL-V visual.jax /*v_CTRL-V* -v_CTRL-Z starting.jax /*v_CTRL-Z* -v_CTRL-\_CTRL-G intro.jax /*v_CTRL-\\_CTRL-G* -v_CTRL-\_CTRL-N intro.jax /*v_CTRL-\\_CTRL-N* -v_CTRL-] tagsrch.jax /*v_CTRL-]* -v_D change.jax /*v_D* -v_J change.jax /*v_J* -v_K various.jax /*v_K* -v_O visual.jax /*v_O* -v_P change.jax /*v_P* -v_R change.jax /*v_R* -v_S change.jax /*v_S* -v_U change.jax /*v_U* -v_V visual.jax /*v_V* -v_X change.jax /*v_X* -v_Y change.jax /*v_Y* -v_a motion.jax /*v_a* -v_a' motion.jax /*v_a'* -v_a( motion.jax /*v_a(* -v_a) motion.jax /*v_a)* -v_a< motion.jax /*v_a<* -v_a> motion.jax /*v_a>* -v_aB motion.jax /*v_aB* -v_aW motion.jax /*v_aW* -v_a[ motion.jax /*v_a[* -v_a] motion.jax /*v_a]* -v_a` motion.jax /*v_a`* -v_ab motion.jax /*v_ab* -v_ap motion.jax /*v_ap* -v_aquote motion.jax /*v_aquote* -v_as motion.jax /*v_as* -v_at motion.jax /*v_at* -v_aw motion.jax /*v_aw* -v_a{ motion.jax /*v_a{* -v_a} motion.jax /*v_a}* -v_b_< visual.jax /*v_b_<* -v_b_<_example visual.jax /*v_b_<_example* -v_b_> visual.jax /*v_b_>* -v_b_>_example visual.jax /*v_b_>_example* -v_b_A visual.jax /*v_b_A* -v_b_A_example visual.jax /*v_b_A_example* -v_b_C visual.jax /*v_b_C* -v_b_D change.jax /*v_b_D* -v_b_I visual.jax /*v_b_I* -v_b_I_example visual.jax /*v_b_I_example* -v_b_c visual.jax /*v_b_c* -v_b_r visual.jax /*v_b_r* -v_b_r_example visual.jax /*v_b_r_example* -v_c change.jax /*v_c* -v_d change.jax /*v_d* -v_g? change.jax /*v_g?* -v_gF editing.jax /*v_gF* -v_gJ change.jax /*v_gJ* -v_gV visual.jax /*v_gV* -v_g] tagsrch.jax /*v_g]* -v_g_CTRL-G editing.jax /*v_g_CTRL-G* -v_g_CTRL-] tagsrch.jax /*v_g_CTRL-]* -v_gf editing.jax /*v_gf* -v_gq change.jax /*v_gq* -v_gv visual.jax /*v_gv* -v_gw change.jax /*v_gw* -v_i motion.jax /*v_i* -v_i' motion.jax /*v_i'* -v_i( motion.jax /*v_i(* -v_i) motion.jax /*v_i)* -v_i< motion.jax /*v_i<* -v_i> motion.jax /*v_i>* -v_iB motion.jax /*v_iB* -v_iW motion.jax /*v_iW* -v_i[ motion.jax /*v_i[* -v_i] motion.jax /*v_i]* -v_i` motion.jax /*v_i`* -v_ib motion.jax /*v_ib* -v_ip motion.jax /*v_ip* -v_iquote motion.jax /*v_iquote* -v_is motion.jax /*v_is* -v_it motion.jax /*v_it* -v_iw motion.jax /*v_iw* -v_i{ motion.jax /*v_i{* -v_i} motion.jax /*v_i}* -v_o visual.jax /*v_o* -v_p change.jax /*v_p* -v_r change.jax /*v_r* -v_s change.jax /*v_s* -v_u change.jax /*v_u* -v_v visual.jax /*v_v* -v_x change.jax /*v_x* -v_y change.jax /*v_y* -v_~ change.jax /*v_~* -val-variable eval.jax /*val-variable* -valgrind debug.jax /*valgrind* -values() eval.jax /*values()* -var-functions usr_41.jax /*var-functions* -variables eval.jax /*variables* -various various.jax /*various* -various-cmds various.jax /*various-cmds* -various-functions usr_41.jax /*various-functions* -various-motions motion.jax /*various-motions* -various.txt various.jax /*various.txt* -vb.vim syntax.jax /*vb.vim* -vba pi_vimball.jax /*vba* -verbose starting.jax /*verbose* -version-variable eval.jax /*version-variable* -version4.txt version4.jax /*version4.txt* -vi intro.jax /*vi* -vi-differences vi_diff.jax /*vi-differences* -vi: options.jax /*vi:* -vi_diff.txt vi_diff.jax /*vi_diff.txt* -view starting.jax /*view* -view-diffs diff.jax /*view-diffs* -view-file starting.jax /*view-file* -views-sessions starting.jax /*views-sessions* -vim-additions vi_diff.jax /*vim-additions* -vim-announce intro.jax /*vim-announce* -vim-arguments starting.jax /*vim-arguments* -vim-default-editor gui_w32.jax /*vim-default-editor* -vim-dev intro.jax /*vim-dev* -vim-mac intro.jax /*vim-mac* -vim-modes intro.jax /*vim-modes* -vim-modes-intro intro.jax /*vim-modes-intro* -vim-multibyte intro.jax /*vim-multibyte* -vim-script-intro usr_41.jax /*vim-script-intro* -vim-variable eval.jax /*vim-variable* -vim.vim syntax.jax /*vim.vim* -vim: options.jax /*vim:* -vimball pi_vimball.jax /*vimball* -vimball-contents pi_vimball.jax /*vimball-contents* -vimball-extract pi_vimball.jax /*vimball-extract* -vimball-history pi_vimball.jax /*vimball-history* -vimball-intro pi_vimball.jax /*vimball-intro* -vimball-manual pi_vimball.jax /*vimball-manual* -vimball-windows pi_vimball.jax /*vimball-windows* -vimdev intro.jax /*vimdev* -vimdiff diff.jax /*vimdiff* -vimfiles options.jax /*vimfiles* -viminfo starting.jax /*viminfo* -viminfo-encoding starting.jax /*viminfo-encoding* -viminfo-errors starting.jax /*viminfo-errors* -viminfo-file starting.jax /*viminfo-file* -viminfo-file-marks starting.jax /*viminfo-file-marks* -viminfo-file-name starting.jax /*viminfo-file-name* -viminfo-read starting.jax /*viminfo-read* -viminfo-read-write starting.jax /*viminfo-read-write* -viminfo-write starting.jax /*viminfo-write* -vimrc starting.jax /*vimrc* -vimrc-filetype usr_05.jax /*vimrc-filetype* -vimrc-intro usr_05.jax /*vimrc-intro* -vimrc-option-example starting.jax /*vimrc-option-example* -vimrc_example.vim usr_05.jax /*vimrc_example.vim* -vimtutor usr_01.jax /*vimtutor* -virtcol() eval.jax /*virtcol()* -visual-block visual.jax /*visual-block* -visual-change visual.jax /*visual-change* -visual-examples visual.jax /*visual-examples* -visual-index index.jax /*visual-index* -visual-mode visual.jax /*visual-mode* -visual-operators visual.jax /*visual-operators* -visual-repeat visual.jax /*visual-repeat* -visual-search visual.jax /*visual-search* -visual-start visual.jax /*visual-start* -visual-use visual.jax /*visual-use* -visual.txt visual.jax /*visual.txt* -visualmode() eval.jax /*visualmode()* -vms os_vms.jax /*vms* -vms-authors os_vms.jax /*vms-authors* -vms-changes os_vms.jax /*vms-changes* -vms-compiling os_vms.jax /*vms-compiling* -vms-deploy os_vms.jax /*vms-deploy* -vms-download os_vms.jax /*vms-download* -vms-gui os_vms.jax /*vms-gui* -vms-notes os_vms.jax /*vms-notes* -vms-problems os_vms.jax /*vms-problems* -vms-started os_vms.jax /*vms-started* -vms-usage os_vms.jax /*vms-usage* -vote-for-features sponsor.jax /*vote-for-features* -votes-counted sponsor.jax /*votes-counted* -vreplace-mode insert.jax /*vreplace-mode* -vt100-cursor-keys term.jax /*vt100-cursor-keys* -vt100-function-keys term.jax /*vt100-function-keys* -w motion.jax /*w* -w32-clientserver remote.jax /*w32-clientserver* -w:current_syntax syntax.jax /*w:current_syntax* -w:quickfix_title quickfix.jax /*w:quickfix_title* -w:var eval.jax /*w:var* -warningmsg-variable eval.jax /*warningmsg-variable* -white-space pattern.jax /*white-space* -whitespace pattern.jax /*whitespace* -wildcard editing.jax /*wildcard* -wildcards editing.jax /*wildcards* -win16-!start gui_w16.jax /*win16-!start* -win16-clipboard gui_w16.jax /*win16-clipboard* -win16-colors gui_w16.jax /*win16-colors* -win16-default-editor gui_w16.jax /*win16-default-editor* -win16-dialogs gui_w16.jax /*win16-dialogs* -win16-drag-n-drop gui_w16.jax /*win16-drag-n-drop* -win16-gui gui_w16.jax /*win16-gui* -win16-maximized gui_w16.jax /*win16-maximized* -win16-printing gui_w16.jax /*win16-printing* -win16-shell gui_w16.jax /*win16-shell* -win16-start gui_w16.jax /*win16-start* -win16-truetype gui_w16.jax /*win16-truetype* -win16-various gui_w16.jax /*win16-various* -win32 os_win32.jax /*win32* -win32-!start gui_w32.jax /*win32-!start* -win32-PATH os_win32.jax /*win32-PATH* -win32-colors gui_w32.jax /*win32-colors* -win32-compiling os_win32.jax /*win32-compiling* -win32-curdir os_win32.jax /*win32-curdir* -win32-faq os_win32.jax /*win32-faq* -win32-gettext mlang.jax /*win32-gettext* -win32-gui gui_w32.jax /*win32-gui* -win32-hidden-menus gui.jax /*win32-hidden-menus* -win32-mouse os_win32.jax /*win32-mouse* -win32-open-with-menu gui_w32.jax /*win32-open-with-menu* -win32-popup-menu gui_w32.jax /*win32-popup-menu* -win32-problems os_win32.jax /*win32-problems* -win32-restore os_win32.jax /*win32-restore* -win32-startup os_win32.jax /*win32-startup* -win32-term os_win32.jax /*win32-term* -win32-vimrun gui_w32.jax /*win32-vimrun* -win32-win3.1 os_win32.jax /*win32-win3.1* -win32s os_win32.jax /*win32s* -winbufnr() eval.jax /*winbufnr()* -wincol() eval.jax /*wincol()* -window windows.jax /*window* -window-contents intro.jax /*window-contents* -window-exit editing.jax /*window-exit* -window-functions usr_41.jax /*window-functions* -window-move-cursor windows.jax /*window-move-cursor* -window-moving windows.jax /*window-moving* -window-resize windows.jax /*window-resize* -window-size term.jax /*window-size* -window-size-functions usr_41.jax /*window-size-functions* -window-tag windows.jax /*window-tag* -window-variable eval.jax /*window-variable* -windowid-variable eval.jax /*windowid-variable* -windows windows.jax /*windows* -windows-3.1 os_win32.jax /*windows-3.1* -windows-intro windows.jax /*windows-intro* -windows-starting windows.jax /*windows-starting* -windows.txt windows.jax /*windows.txt* -windows95 os_win32.jax /*windows95* -winheight() eval.jax /*winheight()* -winline() eval.jax /*winline()* -winnr() eval.jax /*winnr()* -winrestcmd() eval.jax /*winrestcmd()* -winrestview() eval.jax /*winrestview()* -winsaveview() eval.jax /*winsaveview()* -winwidth() eval.jax /*winwidth()* -word motion.jax /*word* -word-count editing.jax /*word-count* -word-motions motion.jax /*word-motions* -workbench starting.jax /*workbench* -workshop workshop.jax /*workshop* -workshop-commands workshop.jax /*workshop-commands* -workshop-compiling workshop.jax /*workshop-compiling* -workshop-configure workshop.jax /*workshop-configure* -workshop-intro workshop.jax /*workshop-intro* -workshop-support workshop.jax /*workshop-support* -workshop-xpm workshop.jax /*workshop-xpm* -workshop.txt workshop.jax /*workshop.txt* -wrap-off intro.jax /*wrap-off* -write-compiler-plugin usr_41.jax /*write-compiler-plugin* -write-device editing.jax /*write-device* -write-fail editing.jax /*write-fail* -write-filetype-plugin usr_41.jax /*write-filetype-plugin* -write-library-script usr_41.jax /*write-library-script* -write-local-help usr_41.jax /*write-local-help* -write-permissions editing.jax /*write-permissions* -write-plugin usr_41.jax /*write-plugin* -write-plugin-quickload usr_41.jax /*write-plugin-quickload* -write-quit editing.jax /*write-quit* -write-readonly editing.jax /*write-readonly* -writefile() eval.jax /*writefile()* -writing editing.jax /*writing* -www intro.jax /*www* -x change.jax /*x* -x-input-method mbyte.jax /*x-input-method* -x11-clientserver remote.jax /*x11-clientserver* -x11-cut-buffer gui_x11.jax /*x11-cut-buffer* -x11-selection gui_x11.jax /*x11-selection* -xf86conf.vim syntax.jax /*xf86conf.vim* -xfontset mbyte.jax /*xfontset* -xfree-xterm syntax.jax /*xfree-xterm* -xim mbyte.jax /*xim* -xim-input-style mbyte.jax /*xim-input-style* -xiterm syntax.jax /*xiterm* -xml-folding syntax.jax /*xml-folding* -xml-omni-datafile insert.jax /*xml-omni-datafile* -xml.vim syntax.jax /*xml.vim* -xpm.vim syntax.jax /*xpm.vim* -xterm-8-bit term.jax /*xterm-8-bit* -xterm-8bit term.jax /*xterm-8bit* -xterm-blink syntax.jax /*xterm-blink* -xterm-blinking-cursor syntax.jax /*xterm-blinking-cursor* -xterm-clipboard term.jax /*xterm-clipboard* -xterm-codes term.jax /*xterm-codes* -xterm-color syntax.jax /*xterm-color* -xterm-command-server term.jax /*xterm-command-server* -xterm-copy-paste term.jax /*xterm-copy-paste* -xterm-cursor-keys term.jax /*xterm-cursor-keys* -xterm-end-home-keys term.jax /*xterm-end-home-keys* -xterm-function-keys term.jax /*xterm-function-keys* -xterm-modifier-keys term.jax /*xterm-modifier-keys* -xterm-mouse options.jax /*xterm-mouse* -xterm-mouse-wheel scroll.jax /*xterm-mouse-wheel* -xterm-resize term.jax /*xterm-resize* -xterm-save-screen tips.jax /*xterm-save-screen* -xterm-screens tips.jax /*xterm-screens* -xterm-scroll-region term.jax /*xterm-scroll-region* -xterm-shifted-keys term.jax /*xterm-shifted-keys* -y change.jax /*y* -yank change.jax /*yank* -ye-option-gone version4.jax /*ye-option-gone* -year-2000 intro.jax /*year-2000* -your-runtime-dir usr_43.jax /*your-runtime-dir* -yy change.jax /*yy* -z index.jax /*z* -z+ scroll.jax /*z+* -z- scroll.jax /*z-* -z. scroll.jax /*z.* -z/OS os_390.jax /*z\/OS* -z<CR> scroll.jax /*z<CR>* -z<Left> scroll.jax /*z<Left>* -z<Right> scroll.jax /*z<Right>* -zA fold.jax /*zA* -zC fold.jax /*zC* -zD fold.jax /*zD* -zE fold.jax /*zE* -zF fold.jax /*zF* -zH scroll.jax /*zH* -zL scroll.jax /*zL* -zM fold.jax /*zM* -zN fold.jax /*zN* -zN<CR> scroll.jax /*zN<CR>* -zO fold.jax /*zO* -zOS os_390.jax /*zOS* -zOS-Bugs os_390.jax /*zOS-Bugs* -zOS-Motif os_390.jax /*zOS-Motif* -zOS-PuTTY os_390.jax /*zOS-PuTTY* -zOS-has-ebcdic os_390.jax /*zOS-has-ebcdic* -zOS-limitations os_390.jax /*zOS-limitations* -zOS-open-source os_390.jax /*zOS-open-source* -zR fold.jax /*zR* -zX fold.jax /*zX* -z^ scroll.jax /*z^* -za fold.jax /*za* -zb scroll.jax /*zb* -zc fold.jax /*zc* -zd fold.jax /*zd* -ze scroll.jax /*ze* -zf fold.jax /*zf* -zh scroll.jax /*zh* -zi fold.jax /*zi* -zip pi_zip.jax /*zip* -zip-contents pi_zip.jax /*zip-contents* -zip-copyright pi_zip.jax /*zip-copyright* -zip-extension pi_zip.jax /*zip-extension* -zip-history pi_zip.jax /*zip-history* -zip-manual pi_zip.jax /*zip-manual* -zip-usage pi_zip.jax /*zip-usage* -zj fold.jax /*zj* -zk fold.jax /*zk* -zl scroll.jax /*zl* -zm fold.jax /*zm* -zn fold.jax /*zn* -zo fold.jax /*zo* -zr fold.jax /*zr* -zs scroll.jax /*zs* -zt scroll.jax /*zt* -zv fold.jax /*zv* -zx fold.jax /*zx* -zz scroll.jax /*zz* -{ motion.jax /*{* -{Visual} intro.jax /*{Visual}* -{address} cmdline.jax /*{address}* -{arglist} editing.jax /*{arglist}* -{char1-char2} intro.jax /*{char1-char2}* -{event} autocmd.jax /*{event}* -{file} editing.jax /*{file}* -{group-name} syntax.jax /*{group-name}* -{lhs} map.jax /*{lhs}* -{motion} intro.jax /*{motion}* -{move-around} visual.jax /*{move-around}* -{offset} pattern.jax /*{offset}* -{pat} autocmd.jax /*{pat}* -{rhs} map.jax /*{rhs}* -{subject} helphelp.jax /*{subject}* -{} intro.jax /*{}* -} motion.jax /*}* -~ change.jax /*~* diff --git a/doc/tagsrch.jax b/doc/tagsrch.jax deleted file mode 100644 index 7a87076fa..000000000 --- a/doc/tagsrch.jax +++ /dev/null @@ -1,814 +0,0 @@ -*tagsrch.txt* For Vim バージョン 7.3. Last change: 2009 Feb 18 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Tags and special searches *tags-and-searches* - -初めにユーザーマニュアルのセクション|29.1|をご覧ください。 - -1. タグへのジャンプ |tag-commands| -2. タグスタック |tag-stack| -3. タグマッチリスト |tag-matchlist| -4. タグの詳細 |tag-details| -5. タグファイルの書式 |tags-file-format| -6. インクルードファイルの検索 |include-search| - -============================================================================== -1. タグへのジャンプ *tag-commands* - - *tag* *tags* -タグとは"tags"ファイルに現われる識別子である。タグはラベルのようなものであり、 -そこにジャンプすることができる。例えば: Cのプログラムではそれぞれの関数名をタ -グとして使うことができる。タグ機能を使う前には、ctagsのようなプログラムによっ -て"tags"ファイルを生成しなければならない。 - -":tag"コマンドはカーソルをタグ上に移動する。CTRL-]コマンドはカーソルの下にある -キーワードをタグとして使用する。もしカーソルがキーワード上になければ、カーソル -位置から右側で最初に現れるキーワードを使用する。 - -":tag"コマンドはCプログラムでよく機能する。もし関数呼び出しを見つけた時にその -関数が何をするのか疑問に思ったら、カーソルを関数名の上に置いてCTRL-]を叩けばよ -い。これで関数定義に導いてもらえるだろう。簡単に戻る方法はCTRL-Tコマンドを使う -ことである。後述するタグスタックについても読むとよい。 - - *:ta* *:tag* *E426* *E429* -:[count]ta[g][!] {ident} - tagsファイル内の情報を用いて、{ident}の定義へジャンプ - する。{ident}はタグスタックに積まれる。[!]については - |tag-!|を参照。 - {ident}は正規表現を使用できる。|tag-regexp|を参照。 - {ident}に対してマッチするタグが複数ある場合、[count]番 - 目のタグへジャンプする。[count]が指定されないときは最 - 初のタグへジャンプする。他のマッチするタグへジャンプす - るには|tag-matchlist|を参照。 - -g<LeftMouse> *g<LeftMouse>* -<C-LeftMouse> *<C-LeftMouse>* *CTRL-]* -CTRL-] カーソルの下のキーワードを定義している場所にジャンプし - ます。":tag {ident}"と同様であるが、{ident}はカーソル - の下、もしくは次に現われるキーワードである。 - {ident}に対してマッチするタグが複数ある場合、[count]番 - 目のタグへジャンプする。[count]が指定されないときは最 - 初のタグへジャンプする。他のマッチするタグへジャンプす - るには|tag-matchlist|を参照。 - {Vi: identifier after the cursor} - - *v_CTRL-]* -{Visual}CTRL-] ":tag {ident}"と同様であるが、{ident}はハイライトされ - ているテキストである。{Vi にはない} - - *telnet-CTRL-]* -CTRL-]はtelnetの標準エスケープキーである。タグにジャンプしようとCTRL-]を打つと、 -代わりにtelnetのプロンプトが立ち上がるだろう。telnetのたいていのバージョンは、 -標準エスケープキーを変更、もしくは使用不可能にできる。telnetのマニュアルを参照 -すること。エスケープキーを使用不可能にするには'telnet -E {ホスト名}'、エスケー -プ文字を他の文字にするには'telnet -e {エスケープ文字} {ホスト名}'を使用する。 -もし可能ならtelnetの代わりにsshを使うことで、この問題を回避できる。 - - *tag-priority* -タグのマッチが複数ある場合、以下の優先度が使われる: -1. "FSC" カレントファイル内の全一致するstaticタグ。 -2. "F C" カレントファイル内の全一致するglobalタグ。 -3. "F " 別のファイル内の全一致するglobalタグ。 -4. "FS " 別のファイル内の全一致するstaticタグ。 -5. " SC" カレントファイル内の大文字、小文字を無視した一致をするstaticタグ。 -6. " C" カレントファイル内の大文字、小文字を無視した一致をするglobalタグ。 -7. " " 別のファイル内の大文字、小文字を無視した一致をするglobalタグ。 -8. " S " 別のファイル内の大文字、小文字を無視した一致をするstaticタグ。 - -カレントファイルが変わっても、優先度のリストはほとんどの場合変化しないので注意 -すること。これは":tnext"を使うときの混乱を避けるためである。優先度のリストは -":tag {ident}"を使ったときに変化する。 - -'ignorecase'オプションがオフになっているときの":tag"コマンドでは、大文字、小文 -字を区別しないマッチは見つからない。'ignorecase'がオフになっていても、("/"で -始まる)パターンを使用し、かつ":tselect"を使ったときには見つけることができる。 -大文字、小文字を区別しないタグ検索を使うと、tagsファイル内で2分探索ができなく -なるため処理が遅くなる、ということに注意すること。これはタグファイルを大文字と -小文字を区別せずにソートすることで回避できます。'tagbsearch'オプションの説明も -参照してください。 - -============================================================================== -2. タグスタック *tag-stack* *tagstack* *E425* - -タグスタック上にはジャンプ先のタグと、どこから来たのかという情報が記憶される。 -タグは'tagstack'オプションが設定されているときにだけ積まれる。 - -g<RightMouse> *g<RightMouse>* -<C-RightMouse> *<C-RightMouse>* *CTRL-T* -CTRL-T タグスタック中の[count]分だけ古いエントリにジャンプす - る(デフォルトは1)。 {Vi にはない} - - *:po* *:pop* *E555* *E556* -:[count]po[p][!] タグスタック中の[count]分だけ古いエントリにジャンプす - る(デフォルトは1)。 - [!]については|tag-!|を参照。 {Vi にはない} - -:[count]ta[g][!] タグスタック中の[count]分だけ新しいエントリにジャンプ - する(デフォルトは1)。 - [!]については|tag-!|を参照。 {Vi にはない} - - *:tags* -:tags タグスタックの内容を表示する。現在のエントリは'>'でマー - クされる。 {Vi にはない} - -":tags"の出力は以下のようになる: - - # TO tag FROM line in file/text - 1 1 main 1 harddisk2:text/vim/test - > 2 2 FuncA 58 i = FuncA(10); - 3 1 FuncC 357 harddisk2:text/vim/src/amiga.c - -このリストはジャンプ先のタグとジャンプ前のカーソル位置を表示する。上から順に古 -いタグが並び、一番下が最も新しいタグである。 - -'>'は現在のエントリを指している。これは次の":tag"コマンドで使われるタグである。 -CTRL-Tと":pop"コマンドは1つ上のタグを使う。 - -"TO"の列にはマッチリスト中の現在のマッチ数を表示する。これは":pop"や":tag"を使っ -ても変化しないので注意すること。 - -行番号とファイル名は、タグコマンドを実行する前にいた位置に戻ることができるよう -に記憶される。行番号は行の削除や挿入が行なわれた時にも正しく維持される。ただし、 -別のプログラム(例えば、Vimの別インスタンス)で編集した場合を除く。 - -ジャンプ前の位置がカレントファイル内であれば、"file/text"の列にその行が表示さ -れる。インデントは取り除かれ、長い行はウィンドウに収まるように切り詰められる。 - -前に使ったタグにジャンプするコマンドはいくつかある。例えば: - - ":pop" or CTRL-T ひとつ前に使われたタグにジャンプする。 - {count}CTRL-T {count}分だけ前のタグにジャンプする。 - ":tag" 現在のエントリより新しいタグにジャンプする。 - ":0tag" 最後に使われたタグにジャンプする。 - -これらの最も明白な利用方法は、プログラムの関数呼び出しをあちこち拾い読みするときである。次のような呼び出し図を考える: - - main ---> FuncA ---> FuncC - ---> FuncB - -(解説: mainはFuncAとFuncBを呼び出し、FuncAはFuncCを呼び出す)。 -FuncAの呼び出し部分の上でCTRL-]を使うことによって、mainからFuncAに行くことがで -きる。同様にCTRL-]を使ってFuncCへ行くことができる。mainに戻るにはCTRL-Tを2回 -使う。そこでCTRL-]を使ってFuncBに行くことができる。 - -":ta {ident}"やCTRL-]コマンドは、タグスタック上の現在の位置にタグを追加する。 -もしスタックが満たされていた場合(スタックは20エントリまで保持できる)、最も古い -エントリが削除され、古いものから順にひとつずつ上に移動する(インデックス番号は1 -ずつ減る)。もし最後に使われたエントリが一番下になかった場合、最後に使われたエ -ントリより下にあるものは削除される。つまり古いタグ経路は失われる。上のパラグラ -フの説明を実行したあとのタグスタックは次のような状態になる: - - # TO tag FROM line in file/text - 1 1 main 1 harddisk2:text/vim/test - 2 1 FuncB 59 harddisk2:text/vim/src/main.c - - *E73* -タグスタックを使おうとしたとき、タグスタックになにも入っていないとエラーが表示 -されます。 - -============================================================================== -3. タグマッチリスト *tag-matchlist* *E427* *E428* - -以下のコマンドは複数のタグがマッチしたときに、タグの間を移動するために使うこと -ができる。これらのコマンドはタグスタックを変更せず、同じエントリを保つことに注 -意すること。 - - *:ts* *:tselect* -:ts[elect][!] [ident] タグファイルの情報を用いて、[ident]にマッチするタグをリ - スト表示する。 - [ident]を省略した場合、タグスタック上の最後のタグが使 - われる。 - 最初の列に'>'があるものはリスト中の現在の位置を指し示 - している(それがあるならば)。 - [ident]は正規表現を取り得る。|tag-regexp|を参照。 - リストに使われているプロパティは|tag-priority|を参照。 - {Vi にはない} - 出力例: - -> - nr pri kind tag file - 1 F f mch_delay os_amiga.c - mch_delay(msec, ignoreinput) - > 2 F f mch_delay os_msdos.c - mch_delay(msec, ignoreinput) - 3 F f mch_delay os_unix.c - mch_delay(msec, ignoreinput) - Enter nr of choice (<CR> to abort): -< - "pri"については|tag-priority|を参照。この例は現在のファ - イルに依存しているため、":tselect xxx"を使ったときには - 違う結果が得られることに注意すること。 - "kind"はタグファイルからタグの種類が得られる場合のみ、 - その情報を示す。 - "info"はタグファイルから得られる情報が表示される。この - 情報はタグファイルを生成したプログラムに依存する。 - リストが長い場合には|more-prompt|が表示される。もしす - でに使いたいタグを見つけているのなら、'q'のあとに"nr" - の番号を入力すればよい。 - - *:sts* *:stselect* -:sts[elect][!] [ident] ":stselect[!] [ident]"を実行し、ウィンドウを分割して選 - 択されたtagを表示する。(Viでは使えない。) - - *g]* -g] CTRL-]と動作は似ているが、":tag"の変わりに":tselect"を - 用いる。(Viでは使えない。) - - *v_g]* -{Visual}g] "g]"と同じ。ただし、選択されたテキストが検索に使われ - る。{Vi にはない} - *:tj* *:tjump* -:tj[ump][!] [ident] ":tselect"と動作は似ているが、適合するtagが1つだけの - ときには直接移動する。(Viでは使えない。) - - *:stj* *:stjump* -:stj[ump][!] [ident] ":tjump[!] [ident]"を実行し、ウィンドウを分割して選択 - されたtagを表示する。(Viでは使えない。) - - *g_CTRL-]* -g CTRL-] CTRL-]と動作は似ているが、":tag"の変わりに":tjump"を用 - いる。(Viでは使えない。) - - *v_g_CTRL-]* -{Visual}g CTRL-] "g CTRL-]"と同じ。ただし、選択されたテキストが検索に使 - われる。 - *:tn* *:tnext* -:[count]tn[ext][!] 適合するtagのうち、[count]番目のtagに移動する。(省略時 - は1。)[!]に関しては|tag-!|を参照。(Viでは使えない。) - - *:tp* *:tprevious* -:[count]tp[revious][!] 適合するtagのうち、[count]分だけ前のtagに移動する。( - 省略時は1。)[!]に関しては|tag-!|を参照。(Viでは使えな - い。) - - *:tN* *:tNext* -:[count]tN[ext][!] ":tprevious"と同様。(Viでは使えない。) - - *:tr* *:trewind* -:[count]tr[ewind][!] 適合したtagのうち最初のtagに移動する。もし[count]が与 - えられていたら、[count]番目のtagに移動する。[!]につい - ては|tag-!|を参照。(Viでは使えない。) - - *:tf* *:tfirst* -:[count]tf[irst][!] ":trewind"と同じ。{Vi にはない} - *:tl* *:tlast* -:tl[ast][!] 適合したtagのうち最後のtagに移動する。[!]に関しては - |tag-!|を参照。(Viでは使えない。) - - *:lt* *:ltag* -:lt[ag][!] [ident] タグ[ident]にジャンプし、マッチするタグ全てをカレント - ウィンドウの新しいロケーションリストに追加する。 - [ident]は正規表現でもよい(|tag-regexp|を参照)。[ident] - が指定されないときはタグスタックにある最後のタグ名が使 - われる。タグにマッチする行を特定するための検索パターン - には、特別な文字を全てエスケープするために"\V"がつけら - れる(very nomagic)。マッチするタグを保持するロケーショ - ンリストはタグスタックとは独立している。[!]については - |tag-!|を参照。{Vi にはない} - -他にメッセージがないとき、Vimは今までに移動したtagとtagの数を表示する: > - tag 1 of 3 or more -" or more"は、Vimがまだすべてのtagファイルを検索していないことを示すために用い -られる。":tnext"を数回用いるか、":tlast"を使用したとき、さらにtagが見つけられ -るだろう。 - -他のメッセージがあったときや、現在の場所を知りたいときには次のコマンドで再び -表示することができる。(最後に行なった移動と同じtagに移動する。): > - :0tn -< - *tag-skip-file* -マッチしたタグに対するファイルが見つからなかった場合、スキップされて次にマッチ -するタグが使われる。Vimはファイルがないことを通知する。もしリストの終端に達し -ていたならば、エラーメッセージが与えられる。 - - *tag-preview* -タグマッチリストはプレビューウィンドウ内でも使用できる。そのコマンドは上記のも -のに似ているが、先頭に"p"がつく。 -{|+quickfix|が無効なときは利用できない} - - *:pts* *:ptselect* -:pts[elect][!] [ident] ":tselect[!] [ident]"を実行し、"Preview"ウィンドウに新 - しいタグを表示する。詳細は|:ptag|を参照すること。 - {Vi にはない} - - *:ptj* *:ptjump* -:ptj[ump][!] [ident] ":tjump[!] [ident]"を実行し、"Preview"ウィンドウに新 - しいタグを表示する。詳細は|:ptag|を参照すること。 - {Vi にはない} - - *:ptn* *:ptnext* -:[count]ptn[ext][!] プレビューウィンドウで":tnext"を実行する。|:ptag|を参 - 照すること。{Vi にはない} - - *:ptp* *:ptprevious* -:[count]ptp[revious][!] プレビューウィンドウで":tprevious"を実行する。|:ptag| - を参照すること。{Vi にはない} - - *:ptN* *:ptNext* -:[count]ptN[ext][!] ":ptprevious"と同じ。{Vi にはない} - - *:ptr* *:ptrewind* -:[count]ptr[ewind][!] プレビューウィンドウで":trewind"を実行する。|:ptag|を - 参照すること。{Vi にはない} - - *:ptf* *:ptfirst* -:[count]ptf[irst][!] ":ptrewind"と同じ。{Vi にはない} - - *:ptl* *:ptlast* -:ptl[ast][!] プレビューウィンドウで":tlast"を実行する。|:ptag|を参 - 照すること。{Vi にはない} - -============================================================================== -4. タグの詳細 *tag-details* - - *static-tag* -staticタグは特別なファイルのために定義されたタグである。Cプログラムではstatic -関数が当てはまる。 - -Viはタグにジャンプするときに現在の検索パターンを設定する。これはタグにジャンプ -したあとの"n"コマンドは、その前の検索パターンと同じ検索を行わないということで -ある。Vimではこのようなバグとも考えられることはしない。検索履歴にある検索パター -ンで検索できる。もし古いViの振る舞いを望むならば、'cpoptions'に't'を設定する。 - - *tag-binary-search* -Vimは希望のタグをすばやく見つけるために、タグファイル内で二分検索を行う -(|+tag_binary|がコンパイル時に有効になっていれば)。しかしこれはタグファイルが -ASCIIコードでソートされている場合にのみ機能する。したがって、もし適合しないも -のが見つかった場合は、その他の方法として線形検索が行われる。もし線形検索のみを -利用したいならば、'tagbsearch'オプションをリセットすればよい。そうでなければ: -タグファイルをソートすること! - -検索が明確な名前をもったタグでない場合は二分検索は利用できないことに注意するこ -と。これは大文字小文字を無視した検索や固定文字列で始まらない正規表現による検索 -で発生する。そのときはタグ検索はかなり遅くなるだろう。先人はタグファイルを大文 -字と小文字を区別せずにソートすることで回避できた。詳細は'tagbsearch'を参照して -ください。 - - *tag-regexp* -":tag"と"tselect"コマンドは引数に正規表現を受け付ける。使用できる特殊文字につ -いては|pattern|を参照すること。引数が'/'で始まる場合はパターンとして使われる。 -もし引数が'/'で始まらなければ、完全なタグ名の文字列として扱われる。 -例: > - :tag main -< 最も優先度の高い"main"というタグにジャンプする。 > - :tag /^get -< 最も優先度の高い"get"で始まるタグにジャンプする。 > - :tag /norm -< "norm"を含むすべてのタグを列挙する。これは"id_norm"というタグも含まれる。 -もし引数と全く同じタグと、正規表現によってマッチしたタグがあった場合、引数と同 -じタグが優先される。例えば、":tag /open"は"open_file"や"file_open"よりも前に -"open"にマッチする。 -正規表現を使うときは大文字・小文字は区別されない。大文字・小文字を区別したいな -ら正規表現の中で"\C"を使うこと。 - - *tag-!* -もしタグが現在のファイル上にあるならば、いつも機能するだろう。そうでなければ、 -実行結果は現在のファイルが変更されているか、コマンドに!がつけられているか、 -'autowrite'オプションが設定されているかに依存する: - -タグが現在の autowrite ~ - ファイル内 変更あり ! オプション 動作 ~ ------------------------------------------------------------------------------ - yes x x x タグに行く - no no x x 対象ファイルを読み込み、タグに行く - no yes yes x 現在のファイルを捨て、対象ファイルを読み込ん - でタグに行く - no yes no on 現在のファイルを保存し、対象ファイルを読み込 - んでタグに行く - no yes no off 失敗する ------------------------------------------------------------------------------ - -- タグが現在のファイル上にある場合は、コマンドはいつも機能する。 -- タグが他のファイル上にあり、現在のファイルが変更されていないならば、対象とな - るファイルがバッファに読み込まれる。 -- タグが他のファイル上にあり、現在のファイルが変更されていて、かつ!がコマンド - につけられている場合には、現在のファイルに対する変更は失われ、対象となるファ - イルがバッファに読み込まれる。 -- タグが他のファイル上にあり、現在のファイルが変更されていて、かつ'autowrite' - オプションが設定されている場合には、現在のファイルは保存され、対象となるファ - イルがバッファに読み込まれる。 -- タグが他のファイル上にあり、現在のファイルが変更されていて、かつ'autowrite' - オプションが設定されていない場合には、コマンドは失敗する。変更を保存したいな - らば":w"コマンドを使用し、そのあとで":tag"を引数なしで実行する。これはタグが - スタック上に残っているためにうまく機能する。変更を失ってもよいのならば、 - ":tag!"コマンドを使用できる。 - - *tag-security* -Vimはセキュリティの都合上、いくつかのコマンドを禁止していることに注意すること。 -これはちょうど現在のディレクトリにあるexrc/vimrcファイルに'secure'オプションが -使われているのと同じように機能する。|trojan-horse|と|sandbox|を参照すること。 -{tagaddress}がバッファを変更したとき、次のようなエラーメッセージが表示される: - "WARNING: tag command changed a buffer!!!" -将来のバージョンではバッファを変更することは不可能になるだろう。これらはすべて -セキュリティの理由である: 誰かが気付かれないように実行される厄介なコマンドをタ -グファイルに隠しているかもしれない。例えば: > - :$d|/tag-function-name/ -{Vi ではこのセキュリティ予防は提供されない}. - -Viでは":tag"コマンドによってタグを検索すると、最新の検索パターンを上書きする。 -Vimでは'cpoptions'に't'フラグが設定されていなければ、前の検索パターンは引き続 -き記憶される。検索パターンはいつも検索履歴にあるので、もし検索に失敗したらそこ -を修正するとよい。 - - *emacs-tags* *emacs_tags* *E430* -Emacsスタイルのタグファイルは、Vimのコンパイル時に|+emacs_tags|機能を有効にし -た場合にのみ使用できる。すまないが、Emacsタグファイルについての説明はここでは -しない。それは下位互換のためにのみ提供している :-)。 - -Emacs タグファイルの行は非常に長くなることがある。Vim は行の約510バイトまでし -か扱わない。行が無視されたかどうかは 'verbose' を5以上にしていればわかる。 - - *tags-option* -'tags'オプションはファイル名のリストで構成される。これらのファイルからタグが検 -索される。デフォルトの"tags"ファイルよりも、異なるtagsファイルがよく使われるだ -ろう。共通のtagsファイルにもよくアクセスするだろう。 - -以下のようなときは、リストの次のファイルを使わない: -- 現在のバッファに対するstaticタグが見つかった場合。 -- globalタグが見つかった場合。 -これらは'ignorecase'オプションに依存する。もしオフにしてあり、tagsファイルに大 -文字小文字が一致するタグがない場合、一致するタグを次のtagsファイルで検索する。 -もし一致するタグが見つからなければ、大文字小文字を無視して最初にマッチしたもの -が使われる。もし'ignorecase'がオンの場合、大文字小文字の区別なく、globalタグが -見つかった時点でそのタグが使用され、それ以降のtagsファイルは検索されない。 - -タグファイル名が"./"で始まるとき、'.'は現在のファイルのパスで置き換えられる。 -これにより、現在のファイルがあるディレクトリのtagsファイルを使用することができ -る(たとえ現在のディレクトリがどこであろうと)。"./"を使用する概念は、どのタグ -ファイルを最初に検索するかを決定することである: 現在のディレクトリにするか -("tags,./tags")、現在のファイルがあるディレクトリにするか("./tags,tags")であ -る。 - -例: > - :set tags=./tags,tags,/home/user/commontags - -この例では、現在のファイルがあるディレクトリの"tags"ファイルがまず検索される。 -次に現在のディレクトリにある"tags"ファイルが検索される。もしまだ見つからなけれ -ば、"/home/user/commontags"が検索される。 - -これは'cpoptions'に'd'フラグを含めることでVi互換のようにすることができる。 -"./tags"は現在のファイルがあるディレクトリのtagsファイルではなく、現在のディレ -クトリのtagsファイルを意味するようになる。 - -カンマの変わりにスペースを使用してもよい。文字列オプションに含めるためにはスペー -スの前にバックスラッシュが必要となる: > - :set tags=tags\ /home/user/commontags - -ファイル名にスペースを含めるにはバックスラッシュを3つ並べる。カンマをファイル -名に使用する場合にはバックスラッシュを2つ並べる。例えば: > - :set tags=tag\\\ file,/home/user/common\\,tags - -"tag file"と"/home/user/common,tags"というファイルが指定できる。'tags'オプショ -ンは"tag\ file,/home/user/common\,tags"という値を持つだろう。 - -'tagrelative'オプションをオンにし(デフォルト)、他のディレクトリでタグファイル -を使用すると、タグファイル内に記述されたファイル名はタグファイルがあるディレク -トリを基準として相対パスになる。 - -============================================================================== -5. タグファイルの書式 *tags-file-format* *E431* - - *ctags* *jtags* -tagsファイルは"ctags"のような外部コマンドによって生成される。それはそれぞれの -関数へのタグを含んでいる。"ctags"のあるバージョンでは"#defined"マクロやtypedef、 -enumなどに対してもタグを作ることができる。 - -tagsファイルを生成するプログラム: -ctags ほとんどのUnixシステムにある。C言語のみ対応し、基本的な - 機能を提供する。 - *Exuberant_ctags* -exuberant ctags これはとてもよいものだ。C言語、C++、Java、Fortran、 - Eiffel、そしてその他に対応している。多くの項目にタグを - 生成することができる。 - http://ctags.sourceforge.net をご覧ください。 -etags Emacsに連携する。多言語に対応している。 -JTags For Java, in Java. - http://www.fleiner.com/jtags/で入手できる。 -ptags.py For Python, in Python. - PythonのソースディレクトリTools/scripts/ptags.pyにある。 -ptags PerlのためにPerlで使う。これはここで見つかる。 - http://www.eleves.ens.fr:8080/home/nthiery/Tags/ -gnatxref Ada用。http://www.gnuada.org/ をご覧ください。 - gnatxrefはgnatパッケージの一部です。 - -tagsファイルは次の3つの形式のどれかで構成されなければならない: - -1. {tagname} {TAB} {tagfile} {TAB} {tagaddress} -2. {tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress} -3. {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} .. - -最初の形式は通常のタグで、Viで完全に互換性がある。伝統的なctagsによってのみ作 -られる形式である。これはしばしばグローバルな関数や他のファイルを参照する場合に -使用される。 - -タグファイルの行は<LF>または<CR><LF>で終わる。Macintoshでは<CR>も機能します。 -<CR>と<NL>は行内に決して現れない。 - - *tag-old-static* -2番目の形式はstaticタグにのみ使用できる。現在では廃れており、3番目の形式に置 -き換えられている。これはElvis 1.xとVim、それといくつかのバージョンのctagsによっ -てのみサポートされている。staticタグはローカル関数によく用いられ、{tagfile}内 -のみ参照する。staticタグでは2つの{tagfile}は正確に一致していなければならない -ことに注意すること。staticタグがどのように使われるかについては|tags-option|を -参照すること。 - -3番目の形式は新しい。各行の任意のフィールドに伝統的な情報を含む。これは以前の -Viとも互換性がある。新しいバージョンのctagsにのみサポートされている(Exuberant -ctagsとか)。 - -{tagname} 識別子。普通は関数名であるが、どんな識別子でも構わない。<Tab> - を含めることはできない。 -{TAB} 1文字の<Tab>。 注: 以前のバージョンではここでどんな空白文字も - 許可していた。これは{tagfile}内にスペースを使うことを断念した - ためである。コンパイル時に|+tag_any_white|機能を付加すれば再び - 使えるようになる。 *tag-any-white* -{tagfile} {tagname}の定義を含むファイル名。絶対パスでも相対パスでも構わ - ない。環境変数やワイルドカードを含んでもよい(ワイルドカードの - 使用法方法はあいまいだが)。<Tab>を含むことはできない。 -{tagaddress} カーソルをタグ上に移動するExコマンド。制限(|tag-security|を参 - 照)はあるが、どんなExコマンドでも使用可能である。 - Posixでは主に使われる行番号と検索コマンドのみ許可する。 -{term} ;" セミコロンとダブルクォートの2文字。これはViによってコメント - とみなされ、続く文字列は無視される。以前のViとの互換性を保つた - めにある。これは続くフィールドを無視する。 -{field} .. 任意のフィールドのリスト。各フィールドは次の書式を持つ: - - <Tab>{fieldname}:{value} - - {fieldname}はフィールドの識別子であり、アルファベットのみ使用 - 可能である[a-zA-Z]。 - {value}は任意の文字列であるが、<Tab>は使用できない。 - 以下の特殊文字が使用できる: - "\t"は<Tab>を表す - "\r"は<CR>を表す - "\n"は<NL>を表す - "\\"は\を表す - - ':'を持たないフィールドがある。これはタグの一種である。"kind:" - を先頭につけたものとして扱われる。 - kindsについては、それを提供するctagsのドキュメントを参照。 - - 現在Vimが認識できるその他のフィールドは"file:"(値はなし)だけで - ある。これはstaticタグに使われる。 - -tagsファイルの先頭行には、 - !_TAG_ -で始まる行を含めることができる。 -これらは極稀な"!"で始まるタグを除けば先頭行にソートされる。Vimは2つのタグを認 -識します。1つはファイルがソートされているかどうかを示す行で、この行が見つかっ -た場合には、Vimはtagsファイルに対して二分検索を使用する: - !_TAG_FILE_SORTED<TAB>1<TAB>{anything} ~ - -'ignorecase'がonのときに線形検索を避けるために、大文字と小文字を区別せずにタグ -ファイルがソートされたかもしれません。。詳細は'tagbsearch'を参照してください。 -そのときは'2'が使われます。 - !_TAG_FILE_SORTED<TAB>2<TAB>{anything} ~ - -Vimが認識するもう1つのタグはタグファイルのエンコーディングを指定するものです。 -これは|+multi_byte|が有効なときだけ利用できます。 - !_TAG_FILE_ENCODING<Tab>utf-8<Tab>{anything} ~ -ここで"utf-8"はタグのエンコーディングです。Vimはタグを検索するときに検索するタ -グを'encoding'からタグファイルのエンコーディングに変換します。そして、タグをリ -ストするときに元に戻します。変換が失敗したときは元のままのタグが使われます。 - - *tag-search* -コマンドはどんなExコマンドでも使用可能であるが、検索コマンドがよく使われるであ -ろう。 -例: - tag1 file1 /^main(argc, argv)/ ~ - tag2 file2 108 ~ - -コマンドは常に'magic'がセットされない状態で実行される。検索パターンで使用でき -る特殊文字は"^"(行頭)と"$"(<EOL>)だけである。|pattern|を参照すること。検索文字 -列中のバックスラッシュの前にはバックスラッシュをつけなければならないことに注意 -すること。これは以前のViと互換性がある。 - - *E434* *E435* -もしコマンドが普通の検索コマンド("/"か"?"で始まり、終わる)であるならば、いくつ -かの特別な扱いをされる: -- 検索はファイルの1行目から開始する。 - 検索方向は"/"で前方、"?"で後方となる。 - 'wrapscan'は問題にならず、いつもファイル全体を検索することに注意。(Vi は - 'wrapscan'を使用するため、それが原因でタグが見つからないこともある。) {Vi は - 別のファイルの2行目から検索を開始する。'wrapscan'を設定しないときには、別 - のファイルの1行目にあるタグは見つけられない} -- 検索が失敗した場合は、大文字小文字を無視してもう一度検索する。それも失敗した - 場合には次の検索が行われる: - "^tagname[ \t]*(" - (タグの先頭に'^'、末尾に"[ \t]*("が追加される)。関数名の検索の場合には、これ - はカラム0の位置にある関数名を見つけるだろう。関数の引数がtagsファイルを作成 - したときから変更になったときなどに役立つだろう。この検索でも見つからない場合 - にはさらに次の検索が行われる: - "^[#a-zA-Z_].*\<tagname[ \t]*(" - この意味は: '#'もしくは識別子で始まり、空白文字と'('が続くタグを含む行である。 - これは型が先頭にあるマクロ名や関数名を見つけるだろう。{Vi には拡張検索はない} - -============================================================================== -6. インクルードファイルの検索 *include-search* *definition-search* - *E387* *E388* *E389* - -これらのコマンドは対象となる文字列を現在のファイルと、遭遇するすべてのインクルー -ドファイルを再帰的に探す。これは変数や関数、マクロの定義を探すのに利用できる。 -現在のバッファに対してだけ検索をしたいのならば、|pattern-searches|に列挙されて -いるコマンドを使うとよい。 - -これらのコマンドは、コンパイル時に|+find_in_path|機能を使用不可にした場合には -利用できない。 - -他のファイルをインクルードする行に遭遇すると、現在のバッファを続けて検索する前 -にインクルードファイルを検索する。インクルードファイルによってインクルードされ -るファイルも同様に検索される。インクルードファイルが見つからなかった場合は黙っ -て無視する。見つからなかったファイルを知りたいときは|:checkpath|コマンドを使う。 -たぶん'path'オプションが正しく設定されていないのだろう。注: インクルードファイ -ルはファイルが検索され、そのファイルを編集中のバッファが存在しても対象にならな -い。バッファにある行は、現在のファイルにのみ適用される。 - -検索文字列は任意のキーワードや定義されたマクロが指定できる。キーワードの場合は -マッチするものを見つける。定義されたマクロの場合は'define'オプションにマッチす -る行だけが見つけられる。デフォルトはCプログラム用の"^#\s*define"である。他の言 -語の場合はおそらく変更したいだろう。C++用の例は'define'を参照。その文字列に改 -行を含めることはできません。一行内にマッチするものだけが見つかります。 - -定義されたマクロが見つかった場合、行末がバックスラッシュのときは次の行も表示す -る。 - -"["で始まるコマンドは現在のファイルの先頭から検索を開始する。"]"で始まるコマン -ドは現在のカーソル位置から検索を開始する。 - -'include'オプションは他のファイルをインクルードする行を定義する。デフォルトはC -プログラム用の"\^#\s*include"である。注: VimはCの構文を認識しない。もし -'include'オプションにマッチする行が"#ifdef/#endif"の間やコメント行であっても、 -とにかく検索される。'isfname'オプションはマッチパターンに続くファイル名を認識 -するために使用される。 - -'path'オプションは絶対パスを持たないインクルードファイルを探すためのディレクト -リを指定する。 - -'comments'オプションは単一行を表示するコマンド、もしくは行にジャンプするコマン -ドで使用される。これはコメントの開始パターンを定義する。それらの行は[!]を使用 -しない限り検索において無視される。ひとつの例外: 行が"^# *define"というパターン -にマッチしたとき、コメントであるとはみなされない。 - -もしマッチしたリストを表示して、その中からジャンプ先を選択したいならば、マッピ -ングが利用できる。例: > - - :map <F4> [I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."[\t"<CR> -< - *[i* -[i カーソルの下にあるキーワードを含む1行を表示する。検索 - はファイルの先頭から開始する。コメントとみなせる行は無 - 視される('comments'オプションを参照すること)。数字が与 - えられた場合は、先頭から指定した個数目にマッチした行を - 表示する。この場合はコメント行は無視されない。 - {Vi にはない} - - *]i* -]i "[i"と同様だが、検索が現在のカーソル位置から開始される。 - {Vi にはない} - - *:is* *:isearch* -:[range]is[earch][!] [count] [/]pattern[/] - "[i"や"]i"と同様だが、[range]で指定された範囲から検索す - る(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *[I* -[I カーソルの下にあるキーワードを含む行をすべて表示する。 - 結果にはファイル名と行番号が表示される。検索はファイル - の先頭から開始される。{Vi にはない} - - *]I* -]I "[I"と同様だが、検索が現在のカーソル位置から開始される。 - {Vi にはない} - - *:il* *:ilist* -:[range]il[ist][!] [/]pattern[/] - "[I"や"]I"と同様だが、[range]で指定された範囲から検索す - る(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *[_CTRL-I* -[ CTRL-I カーソルの下にあるキーワードを含む最初の1行にジャンプ - する。検索はファイルの先頭から開始する。コメントとみな - せる行は無視される('comments'オプションを参照すること)。 - 数字が与えられた場合は、先頭から指定した個数目にマッチ - した行にジャンプする。この場合はコメント行は無視されな - い。{Vi にはない} - - *]_CTRL-I* -] CTRL-I "[ CTRL-I"と同様だが、検索が現在のカーソル位置から開始 - される。{Vi にはない} - - *:ij* *:ijump* -:[range]ij[ump][!] [count] [/]pattern[/] - "[ CTRL-I"や"] CTRL-I"と同様だが、[range]で指定された - 範囲から検索する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - -CTRL-W CTRL-I *CTRL-W_CTRL-I* *CTRL-W_i* -CTRL-W i 新しいウィンドウを開き、カーソルの下にあったキーワード - を含む最初の1行に移動する。検索はファイルの先頭から開 - 始する。コメントとみなせる行は無視される('comments'オ - プションを参照すること)。数字が与えられた場合は、先頭 - から指定した個数目にマッチした行にジャンプする。この場 - 合はコメント行は無視されない。{Vi にはない} - - *:isp* *:isplit* -:[range]isp[lit][!] [count] [/]pattern[/] - "CTRL-W i"や"CTRL-W i"と同様だが、[range]で指定された - 範囲から検索する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *[d* -[d カーソルの下にあるマクロを含む最初のマクロ定義を表示す - る。検索はファイルの先頭から開始する。数字が与えられた - 場合は、先頭から指定した個数目にマッチした行を表示する。 - {Vi にはない} - - *]d* -]d "[d"と同様だが、検索が現在のカーソル位置から開始される。 - {Vi にはない} - - *:ds* *:dsearch* -:[range]ds[earch][!] [count] [/]string[/] - "[d"や"]d"と同様だが、[range]で指定された範囲から検索 - する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *[D* -[D カーソルの下にあるマクロを含むすべてのマクロ定義を表示 - する。結果にはファイル名と行番号が表示される。検索はファ - イルの先頭から開始される。{Vi にはない} - - *]D* -]D "[D"と同様だが、検索が現在のカーソル位置から開始される。 - {Vi にはない} - - *:dli* *:dlist* -:[range]dl[ist][!] [/]string[/] - "[D"や"]D"と同様だが、[range]で指定された範囲から検索 - する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - Note: ":dl"はフラグ"l"つきの":delete"と同じように働く。 - - *[_CTRL-D* -[ CTRL-D カーソルの下にあるキーワードを含む最初のマクロ定義にジャ - ンプする。検索はファイルの先頭から開始する。数字が与え - られた場合は、先頭から指定した個数目にマッチした行にジャ - ンプする。 {Vi にはない} - - *]_CTRL-D* -] CTRL-D "[ CTRL-D"と同様だが、検索が現在のカーソル位置から開始 - される。{Vi にはない} - - *:dj* *:djump* -:[range]dj[ump][!] [count] [/]string[/] - "[ CTRL-D"や"] CTRL-D"と同様だが、[range]で指定された - 範囲から検索する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - -CTRL-W CTRL-D *CTRL-W_CTRL-D* *CTRL-W_d* -CTRL-W d 新しいウィンドウを開き、カーソルの下にあったキーワード - を含む最初のマクロ定義に移動する。検索はファイルの先頭 - から開始する。数字が与えられた場合は、先頭から指定した - 個数目にマッチした行にジャンプする。 {Vi にはない} - - *:dsp* *:dsplit* -:[range]dsp[lit][!] [count] [/]string[/] - "CTRL-W d"と同様だが、[range]で指定された範囲から検索 - する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *:che* *:checkpath* -:che[ckpath] ファイルが見つからないすべてのインクルードファイル名を - リスト表示する。 - {Vi にはない} - -:che[ckpath]! すべてのインクルードファイル名をリスト表示する。 - {Vi にはない} - - *:search-args* -上記コマンドに共通の引数: -[!] 使用した場合は、コメントとみなせる行に対しても検索をする。使用しなかった - 場合は'comments'によってコメントとみなされる行やCコメント("//"の後ろか - /* */の間)にあるものは無視される。コメントとみなされた行が、途中からコメ - ントでなくなるようなときは見逃すかもしれないことに注意。また、コメント行 - であっても、('comments'によって)認識されないでとにかくマッチするかもしれ - ない。例: > - /* comment - foobar */ -< "foobar"に対する検索はマッチする。これは行がコメントとして認識されないた - めである(たとえ構文強調表示が認識したとしても)。 - 注: マクロ定義はたいていコメントと誤認されることはないので、":dlist"や - ":dsearch"、":djump"に[!]を使用することは大差がない。 -[/] パターンは'/'で囲むことができる。'/'なしの場合、"\<pattern\>"というパ - ターンを使うことによって、完全な語だけがマッチする。2つ目の'/'の後にだ - け、'|'を使うことによって次のコマンドを追加できる。例: > - :isearch /string/ | echo "the last one" -< ":djump", ":dsplit", ":dlist", ":dsearch"コマンドではパターンは検索パ - ターンとしてではなく文字通りに使われる。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/term.jax b/doc/term.jax deleted file mode 100644 index c7b3d175c..000000000 --- a/doc/term.jax +++ /dev/null @@ -1,871 +0,0 @@ -*term.txt* For Vim バージョン 7.3. Last change: 2011 Feb 16 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -端末情報 *terminal-info* - -Vim はユーザが使っている端末の情報にもとづいて、ユーザがどのキーを押したかを認 -識します。この情報が正しくないと、スクリーンは乱れ、キーが認識されなくなってし -まいます。スクリーンに対する操作は、キーコードのシーケンスを出力することで実現 -されています。特殊なキーを押すとコードのシーケンスが出力されます。これらのシー -ケンスは端末オプションに保存されています。|terminal-options|を参照。 - -NOTE: |GUI| で実行しているときは、このドキュメントのほとんどの事柄は関係ありま -せん。 - -1. 起動 |startup-terminal| -2. 端末オプション |terminal-options| -3. ウィンドウサイズ |window-size| -4. 端末の速度 |slow-fast-terminal| -5. マウスの使用 |mouse-using| - -============================================================================== -1. 起動 *startup-terminal* - -Vim の起動時はデフォルトの端末タイプ向けの設定になっています。これは Amiga で -は標準の CLI ウィンドウ、MS-DOS では PC の端末、Unix では ANSI 端末です。 -他に 2, 3 の端末が常に使用可能です。後述の |builtin-terms| を参照。 - -Vim の引数 '-T' により端末名を指定することができます。これが指定されない場合、 -環境変数 TERM から端末名を取得しようとします。 - - *termcap* *terminfo* *E557* *E558* *E559* -Unix では terminfo データベースや termcap ファイルが使われます。全てのドキュメ -ントを通して、これのことを "termcap" と呼びます。コンパイル時に、configure に -より terminfo と termcap を使うかどうかが自動的に決定されます。":version" の出 -力に |+terminfo| が含まれていれば terminfo を使用しています。|xterm-screens|も -参照。 - -Unix 以外のシステムでは、TERMCAP を定義してコンパイルしたときのみ termcap を使 -用できます。 - - *builtin-terms* *builtin_terms* -どの組み込み端末が利用できるかは、feature.h で定義されているマクロに依存します。 -これらはコンパイル時に設定しなければなりません: - define ":version" の出力 組み込まれる端末 ~ -NO_BUILTIN_TCAPS -builtin_terms なし -SOME_BUILTIN_TCAPS +builtin_terms 一般的なもの (デフォルト) -ALL_BUILTIN_TCAPS ++builtin_terms 全て使用可能 - -利用可能な組み込み端末のリストを見るには ":set term=xxx" とします(GUI でないと -きのみ)。|+builtin_terms|も参照。 - -termcap のコードが組み込まれているときは、termcap ファイルと組み込みの -termpcap から、使われている端末用のキーシーケンスを取得しようとします。使われ -ている端末のエントリがあるならば、その両方が使われます。どちらが先に使われるか -はオプション 'ttybuiltin' に依存します。 - -'ttybuiltin' on 1: 組み込み termcap 2: 外部 termcap -'ttybuiltin' off 1: 外部 termcap 2: 組み込み termcap - -ある端末オプションが片方にないときは、もう一方から取得します。ある端末オプショ -ンが両方にあるときは、先に見つかった方が使われます。 - -どの外部 termcap ファイルが使われるかはシステムによって異なり、環境変数 -"TERMCAP" と "TERMPATH" に依存します。"man tgetent" を参照してください。 - -端末によって設定を切り替える *term-dependent-settings* - -端末名によってオプションやマッピングを切り替えるには .vimrc で行うのがベスト -です。例: > - - if &term == "xterm" - ... xterm 用のマッピングと設定 ... - elseif &term =~ "vt10." - ... vt100, vt102 用のマッピングと設定 ... - endif -< - *raw-terminal-mode* -通常の編集に入るとき、端末は raw モードになります。このとき、't_ti' と 't_ks' -で定義されるシーケンスが端末に送信されます。これらのシーケンスにより、端末は -termcap のコードが有効になり、カーソルキーとファンクションキーが使えるようにな -ります。Vim が終了するとき、端末を起動前のモードに戻します。このとき't_te' と -'t_ke' で定義されるシーケンスが端末に送信されます。Amiga では、外部プログラム -を起動するコマンド(例: "!!")を実行するとき、一時的に端末が通常モードになります。 -そのため、print キーを押してスクリーンへの出力を止めることができます。<BS> を -押すと出力が再開します。 - - *cs7-problem* -Note: Vim を起動した後で端末の設定を変えると、設定が一貫しない状態になるかもし -れません。Solaris 2.5 で "stty cs8 parenb" が "stty cs7 parenb" に復元されてし -まうという報告が上がっています。代わりに "stty cs8 -parenb -istrip" を使ってく -ださい。これは正しく復元されます。 - -'t_ks' を送った後では、カーソルキーが termcap で定義されているのとは異なるコー -ドを送るという意味で、ある種の termcap エントリは正しくありません。この問題を -避けるには't_ks' (と't_ke')を空文字列にします。これは初期化の最中に行わねばな -りません(|initialization| を参照)。そうでないと手遅れです。 - -いくつかの termcap エントリは、最上位ビットが常にオフになっていると仮定してい -ます。例: Amiga のカーソル↑エントリは例えば ":ku=\E[A:" です。しかし実際には -"\233A" が送られます。これは、シリアル回線上で使っているときなど、最上位ビット -がオフならば正しく動作します。カーソルキーが使えない場合はこのエントリを -":ku=\233A:" にしてみてください。 - -":ku=\E[A:" というエントリをもつ termcap エントリがあります。しかし実際には -"\233A" が送られます。出力において "\E[" と "\233" はしばしば同値であり、入力 -においてはそうでありません。この問題を解決するには、termcap エントリを変更する -か、:set コマンドでキーコードを変更するしかありません。 - -多くのカーソルキーのコードは <Esc> から始まります。Vim はこれが 1 つの <Esc> -キーを押下したものか、カーソルキーのシーケンスのはじまりかを判定しなければなり -ません。そのため、次の文字が届くのを待ちます。1 秒以内に次のキーが届かない場合 -は <Esc> が押されたとみなします。非常に遅いシステムではこれが誤判定され、カー -ソルキーが使えなくなることがあります。この問題に出会った場合は 'timeout' をオ -フにしてください。Vim は <Esc> の後に届く文字を待ちます。1 つの <Esc> を入力す -るには 2 回押さなければなりません。'esckeys' をオフにすると、インサートモード -でのこの問題を解決できます。しかしインサートモードでカーソルキーとファンクショ -ンキーが使えなくなってしまいます。 - -Amiga でウィンドウリサイズを認識するには、端末名が "amiga" か "builtin_amiga" -でなければなりません。 - -ある種の端末ではカーソルキーに混乱を招きやすいコードを割り当てています。 -televideo 925 はその一例です。televideo 925 はカーソル左キーで CTRL-H を送りま -す。そのためバックスペースとカーソル左を区別することは不可能です。この問題のた -め CTRL-H は常にカーソル左と認識されます。 - - *vt100-cursor-keys* *xterm-cursor-keys* -vt100 や xterm などの端末ではカーソルキーを押すと <Esc>0A や <Esc>0B などが送 -られます。不運なことに、これらは「挿入を終了し、上に新規行を作成して 'A' や -'B' を挿入する」というインサートモードでのコマンドでもあります。 -このコマンドを実行するのでなく、カーソルキーのシーケンスが入力されたのだと誤認 -識してしまうかもしれません。これを防ぎ、意図通りの動作をさせるには次の設定を使 -います -: > - :set notimeout " マッピングについてタイムアウトしない - :set ttimeout " 端末のキーコードについてタイムアウトする - :set timeoutlen=100 " 100 ミリ秒後にタイムアウトする -この設定をすると、キーコードが 100 ミリ秒以内に送られた場合のみカーソルキーと -認識されます。ユーザが普通に入力するときはそんなに速くないので、たとえまったく -同じキーコードのシーケンスを送信しても、個々のコマンドと認識されます。 - - *vt100-function-keys* *xterm-function-keys* -xterm は vt100 互換モードと非互換モードの両方のモードで F1 から F4 のファンク -ションキーを送信できます。Vim は xterm がどちらのコードを送信するかわからない -ので、両方のタイプのキーを認識するようになっています。<Home> と <End> について -も同様です。 - 通常 vt100 ~ - <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* - <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* - <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* - <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* - <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* - <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* - -Vim が起動したときに <xF1> が <F1>へ、<xF2> が <F2> へマッピングされます。これ -により、デフォルトではどちらのコードも同じ動作になります。<xF2> へのマッピング -を作ると、デフォルトのマッピングが上書きされます。そして <F2> と <xF2> に別の -動作をさせることができます。 - - *xterm-shifted-keys* -新しいバージョンの xterm はシフトキーとファンクションキー、特殊キーの組み合わ -せをサポートしています。Vim はこれらのほとんどを認識します。":set termcap" に -よりどれがサポートされているか、そのコードは何かを調べることができます。大抵の -場合、これらは termcap には入っていません。 builtin_xterm の termcap でのみサ -ポートされています。 - - *xterm-modifier-keys* -新しいバージョンの xterm は Alt と Ctrl キーとほとんどのファンクションキーの組 -み合わせをサポートしています。全てのキーに対する Alt、Ctrl、Shift の組み合わせ -全てを termcap に追加しなくてもいいように、termcap エントリの最後に ";*X" とい -う特殊なシーケンスを追加することができます。この "X" はどんな文字でもよく、'~' -がよく使われます。";*" は省略可能な修飾キー引数を意味します。";2" は -Shift、";3" は Alt、";5" はCtrl、";9" は Meta (Alt と異なる場合)。これらを組み -合わせることができます。例: > - :set <F8>=^[[19;*~ - :set <Home>=^[[1;*H -これらのコードのもう1つの特殊な性質は、他のコードで上書きできないことです。 -xterm から直接得られたコードが |t_RV| それらを上書きするのを避けるためです。 - - *xterm-scroll-region* -Sun などのプラットフォームのデフォルトの xterm 用の termcap エントリには領域の -スクロール用のエントリが入っていません。/etc/termcap の xterm エントリに -":cs=\E[%i%d;%dr:" を追加すれば全てうまく動作するでしょう。 - - *xterm-end-home-keys* -いくつかのシステム(少なくとも FreeBSD と XFree86 3.1.2)では、 <End> と <Home> -キーが送信するキーに <NUL> 文字が含まれています。これらのキーが適切なキーコー -ドを送信するようにするために、次の行を ~/.Xdefaults に追加してください: - -*VT100.Translations: #override \n\ - <Key>Home: string("0x1b") string("[7~") \n\ - <Key>End: string("0x1b") string("[8~") - - *xterm-8bit* *xterm-8-bit* -xterm は 8 ビットエスケープシーケンスを使うモードで動作させることができます。 -このモードでは <Esc>[ の代わりに CSI コードが使われます。この利点は、インサー -トモードで <Esc> が即座に認識されることです。なぜなら、特殊キーの開始と紛らわ -しくないためです。 -組み込みの termcap エントリでは、オプション 'term' のどこかに "8bit" が含まれ -ていないか確認されます。含まれていると、termcap エントリ、マウス等に 8 ビット -文字が使われます。シェルにおいて $TERM を "xterm-8bit" に設定しておくと、Vim -はそれに気づいて自動的に 8 ビットの設定を使うようになります。 -Vim がシーケンス |t_RV| (バージョン要求)への応答を受け取ったとき、それが CSI -で始まっていれば、その端末は 8 ビットモードであると認識し、全てのキーシーケン -スを 8 ビット版に変換します。 - -============================================================================== -2. 端末オプション *terminal-options* *termcap-options* *E436* - -端末オプションは普通のオプションとまったく同じように設定できます。しかし端末オ -プションは ":set all" コマンドでは表示されないので、代わりに ":set termcap" を -使ってください。 - -termcap コードに対応するオプションを設定することによって、そのシーケンスを変更 -することができます。例: > - :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) - -{Vi: 端末オプションは存在しない。Vi を終了し、termcap エントリを編集して再起動 -しなければならない} - -端末オプションの一覧を後で載せます。対応する termcap のコードと、それに対応す -るオプション名の最後の2文字が等しくなっています。絶対に必要な termcap コードは -カーソルを移動させる 't_cm' の1つだけです。 - -オプション 't_da', 't_db', 't_ms', 't_xs' は termcap におけるフラグに対応して -います。termcap にこれらのフラグが存在すると、対応するオプションに "y" が設定 -されます。空でない文字列を設定するとオンになり、空文字列を設定するとオフになり -ます。't_CS' もこれと同様ですが、termcap フラグではありません。 - -出力コード - option 意味 ~ - - t_AB 背景色を設定 (ANSI) *t_AB* *'t_AB'* - t_AF 文字色を設定 (ANSI) *t_AF* *'t_AF'* - t_AL 指定数の空行を追加する *t_AL* *'t_AL'* - t_al 空行を追加する *t_al* *'t_al'* - t_bc バックスペース文字 *t_bc* *'t_bc'* - t_cd スクリーンの最後までクリア *t_cd* *'t_cd'* - t_ce 行末までクリア *t_ce* *'t_ce'* - t_cl 画面をクリア *t_cl* *'t_cl'* - t_cm カーソル移動 (必須!) *E437* *t_cm* *'t_cm'* - t_Co 色数 *t_Co* *'t_Co'* - t_CS 空でなければカーソルをスクロール範囲に相対的に *t_CS* *'t_CS'* - t_cs スクロール範囲を定義 *t_cs* *'t_cs'* - t_CV 縦スクロール範囲を定義 *t_CV* *'t_CV'* - t_da 空でない場合は上の行からスクロールダウンする *t_da* *'t_da'* - t_db 空でない場合は下の行からスクロールアップする *t_db* *'t_db'* - t_DL 複数行を削除 *t_DL* *'t_DL'* - t_dl 行を削除 *t_dl* *'t_dl'* - t_fs ウィンドウタイトルの終端を設定(ステータスラインから) *t_fs* *'t_fs'* - t_ke キーパッド使用終了 *t_ke* *'t_ke'* - t_ks キーパッド使用開始 *t_ks* *'t_ks'* - t_le カーソルを1文字分左へ移動 *t_le* *'t_le'* - t_mb 点滅モード *t_mb* *'t_mb'* - t_md 太字モード *t_md* *'t_md'* - t_me 通常モード (t_mr, t_mb, t_md, 色設定を解除) *t_me* *'t_me'* - t_mr 反転モード *t_mr* *'t_mr'* - *t_ms* *'t_ms'* - t_ms 空でない場合は強調・反転モードでカーソルを移動できる - t_nd non destructive space character *t_nd* *'t_nd'* - t_op 元の色のペアに戻す *t_op* *'t_op'* - t_RI カーソルを指定数右へ移動 *t_RI* *'t_RI'* - t_Sb 背景色を設定 *t_Sb* *'t_Sb'* - t_Sf 文字色を設定 *t_Sf* *'t_Sf'* - t_se 強調終了 *t_se* *'t_se'* - t_so 強調モード *t_so* *'t_so'* - t_sr 逆スクロール *t_sr* *'t_sr'* - t_te "termcap" モードから抜ける *t_te* *'t_te'* - t_ti 端末を "termcap" モードにする *t_ti* *'t_ti'* - t_ts (ステータスラインに)ウィンドウタイトル設定開始 *t_ts* *'t_ts'* - t_ue 下線終了 *t_ue* *'t_ue'* - t_us 下線モード *t_us* *'t_us'* - t_Ce 下波線終了 *t_Ce* *'t_Ce'* - t_Cs 下波線モード *t_Cs* *'t_Cs'* - t_ut 現在の背景色を使ってクリア *t_ut* *'t_ut'* - t_vb ビジュアルベル *t_vb* *'t_vb'* - t_ve カーソル表示 *t_ve* *'t_ve'* - t_vi カーソル非表示 *t_vi* *'t_vi'* - t_vs カーソル強調表示 *t_vs* *'t_vs'* - *t_xs* *'t_xs'* - t_xs 空でない場合は強調が上書きによって消されない(hpterm) - t_ZH 斜体モード *t_ZH* *'t_ZH'* - t_ZR 斜体終了 *t_ZR* *'t_ZR'* - -Vim 独自のもの (標準的なコードはないもの): - t_IS アイコンテキスト設定開始 *t_IS* *'t_IS'* - t_IE アイコンテキスト設定終了 *t_IE* *'t_IE'* - t_WP ウィンドウ位置 (Y, X) をピクセルで指定 *t_WP* *'t_WP'* - t_WS ウィンドウサイズ (height, width) を文字数で指定 *t_WS* *'t_WS'* - t_SI インサートモード開始 (バー型のカーソル) *t_SI* *'t_SI'* - t_EI インサートモード終了(ブロック型カーソル) *t_EI* *'t_EI'* - |termcap-cursor-shape| - t_RV 端末バージョン文字列を要求 (xterm 用) *t_RV* *'t_RV'* - |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| - -キーコード -Note: 可能なかぎり <> 形式を使ってください。 - - オプション名 意味 ~ - - t_ku <Up> カーソル上 *t_ku* *'t_ku'* - t_kd <Down> カーソル下 *t_kd* *'t_kd'* - t_kr <Right> カーソル右 *t_kr* *'t_kr'* - t_kl <Left> カーソル左 *t_kl* *'t_kl'* - <xUp> カーソル上の代替 *<xUp>* - <xDown> カーソル下の代替 *<xDown>* - <xRight> カーソル右の代替 *<xRight>* - <xLeft> カーソル左の代替 *<xLeft>* - <S-Up> シフト+カーソル上 - <S-Down> シフト+カーソル下 - t_%i <S-Right> シフト+カーソル右 *t_%i* *'t_%i'* - t_#4 <S-Left> シフト+カーソル左 *t_#4* *'t_#4'* - t_k1 <F1> F1 *t_k1* *'t_k1'* - <xF1> もう1つの F1 *<xF1>* - t_k2 <F2> F2 *<F2>* *t_k2* *'t_k2'* - <xF2> もう1つのF2 *<xF2>* - t_k3 <F3> F3 *<F3>* *t_k3* *'t_k3'* - <xF3> もう1つのF3 *<xF3>* - t_k4 <F4> F4 *<F4>* *t_k4* *'t_k4'* - <xF4> もう1つのF4 *<xF4>* - t_k5 <F5> F5 *<F5>* *t_k5* *'t_k5'* - t_k6 <F6> F6 *<F6>* *t_k6* *'t_k6'* - t_k7 <F7> F7 *<F7>* *t_k7* *'t_k7'* - t_k8 <F8> F8 *<F8>* *t_k8* *'t_k8'* - t_k9 <F9> F9 *<F9>* *t_k9* *'t_k9'* - t_k; <F10> F10 *<F10>* *t_k;* *'t_k;'* - t_F1 <F11> F11 *<F11>* *t_F1* *'t_F1'* - t_F2 <F12> F12 *<F12>* *t_F2* *'t_F2'* - t_F3 <F13> F13 *<F13>* *t_F3* *'t_F3'* - t_F4 <F14> F14 *<F14>* *t_F4* *'t_F4'* - t_F5 <F15> F15 *<F15>* *t_F5* *'t_F5'* - t_F6 <F16> F16 *<F16>* *t_F6* *'t_F6'* - t_F7 <F17> F17 *<F17>* *t_F7* *'t_F7'* - t_F8 <F18> F18 *<F18>* *t_F8* *'t_F8'* - t_F9 <F19> F19 *<F19>* *t_F9* *'t_F9'* - <S-F1> シフト+F1 - <S-xF1> もう1つの<S-F1> *<S-xF1>* - <S-F2> シフト+F2 *<S-F2>* - <S-xF2> もう1つの<S-F2> *<S-xF2>* - <S-F3> シフト+F3 *<S-F3>* - <S-xF3> もう1つの<S-F3> *<S-xF3>* - <S-F4> シフト+F4 *<S-F4>* - <S-xF4> もう1つの<S-F4> *<S-xF4>* - <S-F5> シフト+F5 *<S-F5>* - <S-F6> シフト+F6 *<S-F6>* - <S-F7> シフト+F7 *<S-F7>* - <S-F8> シフト+F8 *<S-F8>* - <S-F9> シフト+F9 *<S-F9>* - <S-F10> シフト+F10 *<S-F10>* - <S-F11> シフト+F11 *<S-F11>* - <S-F12> シフト+F12 *<S-F12>* - t_%1 <Help> ヘルプキー *t_%1* *'t_%1'* - t_&8 <Undo> アンドゥキー *t_&8* *'t_&8'* - t_kI <Insert> インサートキー *t_kI* *'t_kI'* - t_kD <Del> デリートキー *t_kD* *'t_kD'* - t_kb <BS> バックスペースキー *t_kb* *'t_kb'* - t_kB <S-Tab> バックタブ(シフト+タブ) *<S-Tab>* *t_kB* *'t_kB'* - t_kh <Home> ホームキー *t_kh* *'t_kh'* - t_#2 <S-Home> シフト+ホームキー *<S-Home>* *t_#2* *'t_#2'* - <xHome> もう1つのホームキー *<xHome>* - t_@7 <End> エンドキー *t_@7* *'t_@7'* - t_*7 <S-End> シフト+エンドキー *<S-End>* *t_star7* *'t_star7'* - <xEnd> もう1つのエンドキー *<xEnd>* - t_kP <PageUp> ページアップキー *t_kP* *'t_kP'* - t_kN <PageDown> ページダウンキー *t_kN* *'t_kN'* - t_K1 <kHome> キーパッドホームキー *t_K1* *'t_K1'* - t_K4 <kEnd> キーパッドエンドキー *t_K4* *'t_K4'* - t_K3 <kPageUp> キーパッドページアップキー *t_K3* *'t_K3'* - t_K5 <kPageDown> キーパッドページダウンキー *t_K5* *'t_K5'* - t_K6 <kPlus> キーパッドプラスキー *<kPlus>* *t_K6* *'t_K6'* - t_K7 <kMinus> キーパッドマイナスキー *<kMinus>* *t_K7* *'t_K7'* - t_K8 <kDivide> キーパッド / *<kDivide>* *t_K8* *'t_K8'* - t_K9 <kMultiply> キーパッド * *<kMultiply>* *t_K9* *'t_K9'* - t_KA <kEnter> キーパッドエンターキー *<kEnter>* *t_KA* *'t_KA'* - t_KB <kPoint> キーパッド . *<kPoint>* *t_KB* *'t_KB'* - t_KC <k0> キーパッド 0 *<k0>* *t_KC* *'t_KC'* - t_KD <k1> キーパッド 1 *<k1>* *t_KD* *'t_KD'* - t_KE <k2> キーパッド 2 *<k2>* *t_KE* *'t_KE'* - t_KF <k3> キーパッド 3 *<k3>* *t_KF* *'t_KF'* - t_KG <k4> キーパッド 4 *<k4>* *t_KG* *'t_KG'* - t_KH <k5> キーパッド 5 *<k5>* *t_KH* *'t_KH'* - t_KI <k6> キーパッド 6 *<k6>* *t_KI* *'t_KI'* - t_KJ <k7> キーパッド 7 *<k7>* *t_KJ* *'t_KJ'* - t_KK <k8> キーパッド 8 *<k8>* *t_KK* *'t_KK'* - t_KL <k9> キーパッド 9 *<k9>* *t_KL* *'t_KL'* - <Mouse> マウスコードの先頭部分 *<Mouse>* - -Note t_so と t_mrについて: termcap に "so" エントリがない場合は "mr" が使われ -ます。逆に "mr" がない場合は "so" が使われます。"se" と "me" も同じ関係にあり -ます。お使いの端末が反転と強調の両方をサポートしているならば、これらは別々のモー -ドとして表示されます。これらの片方しかサポートしていない場合は、どちらも同じよ -うに表示されます。 - - *keypad-comma* -キーパッドのキーは、何かにマップされていないときは通常のキーと等価です。ただ 1 -つだけ例外があります。小数点キーがあるべき場所にコンマキーがあるキーパッドの場 -合でも Vim では小数点として認識されます。これを修正するには次のマッピングを -使ってください: > - :noremap <kPoint> , - :noremap! <kPoint> , -< *xterm-codes* -キーコードを取得するトリックがあります。これは現在のところ xterm でだけ動作し -ます。|t_RV| が定義されていて、xterm のパッチレベルが 141 以上であることを示す -返信を受け取った場合、Vim は特別なエスケープシーケンスを使って xterm から直接 -キーコードを要求します。その返信を使って様々な t_ のコードを調整します。これに -よって xterm がモード (8-bit, VT102, VT220 など) によって異なるコードを出力す -るという問題に対応することができます。そのため、<xF1> のようなコードは必要なく -なります。 -Note: これは起動時にのみ行われます。Vim が起動した後で xterm のオプションが変 -更された場合は、これらのエスケープシーケンスは認識されなくなる可能性があります。 - - *xterm-resize* -xterm でのウィンドウサイズ変更はリソース allowWindowOps が有効なときのみ動作し -ます。システムや xterm のバージョンによっては、セキュリティ上の問題になるとの -考えにより、既定では無効になっていることがあります。それが本当に問題になるかど -うかは明らかではありません。 - -既定値を上書きするには、次の行を ~/.Xdefaults または ~/.Xresources に書きま -す: -> - XTerm*allowWindowOps: true - -そして "xrdb -merge .Xresources" を実行し、この設定を有効化します。コンテキス -トメニュー(CTRL キーを押しながらマウス右ボタン)でこの値を確認できます。 -allow-window-pos にチェックが入っているはずです。 - - *termcap-colors* -色についての Note: 't_Co' は利用できる色の数を示します。この値が 0 でなければ -'t_AB' と 't_AF' の値を使って色を設定します。これらのうちどれかが存在しない場 -合は 't_Sb' と 't_Sf' が使われます。色をデフォルトに戻すのには 't_me' が使われ -ます。 - - *termcap-cursor-shape* *termcap-cursor-color* -インサートモードに入るとき、エスケープシーケンス 't_SI' が送られます。インサー -トモードを抜けるときは 't_EI' が送られます。ただし、両方が定義されているときの -みです。これを利用して、インサートモードにおけるカーソルの形や色を変えることが -できます。これらは標準的な termcap/terminfo エントリではないので、自分で設定す -る必要があります。 -以下は xterm でカーソルの色を変える例です: > - if &term =~ "xterm" - let &t_SI = "\<Esc>]12;purple\x7" - let &t_EI = "\<Esc>]12;blue\x7" - endif -NOTE: Vim を終了するとき、ノーマルモードでのカーソル設定がそのまま残ります。 -Vim を起動する前のカーソル設定は復元されません。 -{|+cursorshape| つきでコンパイルしたときのみ利用可能} - - *termcap-title* -文字列を送ってタイトルを変更できる端末の場合は 't_ts' と 't_fs' を使ってウィン -ドウタイトルを変更できます。これらがタイトル文字列の前後に送られます。同様に -'t_IS' と 't_IE' を使ってアイコンテキストが設定されます。これらの termcap エン -トリは Vim 独自の拡張であり、外部の termcap からこれらを取得することはできませ -ん。しかし組み込みの termcap に xterm と iris-ansi 用のエントリが含まれており、 -これらを自分で設定する必要はありません。 - *hpterm* -もしも反転などの強調が正常に機能しない場合は、't_xs' を空でない文字列に設定し -てみてください。すると 't_ce' コードを使って行から強調を取り除くようになります。 -"hpterm" に対してはこれが必要です。'weirdinvert' を設定すると 't_xs' を空でな -い値にするのと同じ効果があります。 - - *scroll-region* -端末が領域スクロールをサポートしているのに 'cs' エントリを含まない termcap があ -ります。例えば Sun の xterm がそうです。この場合は builtin_xterm を使うか、 -t_cs を自分で定義します。例: > - :set t_cs=^V^[[%i%d;%dr -^V は CTRL-V、^[ は <Esc> を表します。 - -t_CV (領域縦スクロール) は標準的な termcap コードではありません。Vim はこれを -GUI モードで内部的に使っています。しかし、領域縦スクロールに対応している端末が -あるなら、その端末でもこれを定義することができます。2つの引数は、スクロールを -制限する領域の左右の桁を表します。t_cs が行の上端と下端を定義するのと同じです。 -t_CV を定義すると垂直分割したウィンドウのスクロールがとても速くなります。t_da -または t_db を設定したときは t_CV を設定しないでください(スクロールするときテ -キストが消去されなくなります)。 - -残念ながら、領域スクロールを使用しているとき、カーソルの位置がどう変わるかを -termcap から推測することは不可能です。スクリーンの始点から相対的またはスクロー -ルさせる領域の始点から相対的になります。ほとんどの端末では前者となります。よく -知られた例外は MS-DOS コンソール(pcterm)です。カーソル位置がスクロールさせる領 -域の始点から相対的となる場合は 't_CS' オプションになんらかの文字列を設定しなけ -ればなりません。そうでなければ空文字列となります。'term' が "pcterm"のときはデ -フォルトで "yes" になります。 - -xterm ユーザへの注意: 通常、Shift + カーソルキーは使用できません。xmodmap コマ - ンドと Vim でマッピングを使えば、これらを使用できるようになります。 - - 以下のコマンドを xterm の中で実行します: - xmodmap -e "keysym Up = Up F13" - xmodmap -e "keysym Down = Down F16" - xmodmap -e "keysym Left = Left F18" - xmodmap -e "keysym Right = Right F19" - - そして次のマッピングを Vim の中で実行します: - :map <t_F3> <S-Up> - :map! <t_F3> <S-Up> - :map <t_F6> <S-Down> - :map! <t_F6> <S-Down> - :map <t_F8> <S-Left> - :map! <t_F8> <S-Left> - :map <t_F9> <S-Right> - :map! <t_F9> <S-Right> - -Shift+カーソル上キーに対して <S-Up> 以外のコマンドを割り当てることもできます。 -Note: 左側にキーがある Sun のキーボードを使っている人を助けるために、以下の -キーは使われません。 -F14 (アンドゥキーと混乱するため) -F15 (ウィンドウを全面に移動するキーであるため) -F17 (ウィンドウを閉じるキーであるため) -他のシステムではこれらも使用できるでしょう。 - -============================================================================== -3. ウィンドウサイズ *window-size* - -[これは Vim 自身のウィンドウのサイズのことです。":split" コマンドで分割できる -ウィンドウのことではありません。] - -Amiga 上では端末名が "amiga" または "builtin_amiga" であればアミーガ固有のウィ -ンドウリサイズ処理が有効になります。Unix ではウィンドウサイズを取得するために -3 種類の方法が試行されます: - -- ioctl 呼び出し (システムによって TIOCGSIZE か TIOCGWINSZ のどちらか) -- 環境変数 "LINES" と "COLUMNS" -- termcap エントリ "li" と "co" - -これら全てが失敗した場合はデフォルトの 24 行 80 桁とみなされます。ウィンドウ -サイズ変更のシグナルを受け取るとそのサイズに再設定されます。ウィンドウサイズが -正しくない場合は、オプション 'lines' と 'columns' で正しい値を設定することがで -きます。 - -スクリーンサイズを設定するには次のコマンドを使います: - - *:mod* *:mode* *E359* *E362* -:mod[e] [mode] - -引数が指定されない場合はスクリーンサイズを検出し、スクリーンを再描画します。 -MS-DOS ではスクリーンモードを切り替えることが可能です。[mode] は以下のうちのど -れか1つです。 - "bw40" 40 桁 白黒 - "c40" 40 桁 カラー - "bw80" 80 桁 白黒 - "c80" 80 桁 カラー (ほとんどの場合はこれ) - "mono" 80 桁 モノクロ - "c4350" 43 or 50 行 EGA/VGA モード - number モード番号。ビデオカードに依存 - -============================================================================== -4. 端末の速度 *slow-fast-terminal* - *slow-terminal* - -高速な端末を使用している場合はオプション 'ruler' をオンにするとよいでしょう。 -するとステータスラインにカーソル位置が表示されます。水平スクロールをオンにして -いる('wrap' をオフ)にしているなら 'sidescroll' を小さい値にするとよいでしょう。 - -遅い端末を使用している場合はオプション 'showcmd' をオフにするとよいでしょう。 -するとコマンド文字列がステータスラインに表示されなくなります。端末のスクロール -が非常に遅いなら、'scrolljump' を5ぐらいにしてください。("j" などで)カーソルが -スクリーンから出たとき、一度に5行スクロールするようになります。もう1つの方法は、 -"z{height}<CR>" でスクリーンの中で Vim が使う行数を減らすことです。 - -端末から文字が届く間隔が1秒以上になる場合は 'timeout' と 'ttimeout' を設定しな -おすとよいでしょう。オプションの章を参照してください |options|。 - -お使いの端末が領域のスクロールをサポートしていないが、行の挿入・削除コマンドを -サポートしている場合、複数のウィンドウを開いた状態でスクロールすると、行が上下 -するかもしれません。これが好ましくない場合は 'ttyfast' をオンにしてください。 -するとウィンドウをスクロールするのでなく再描画するようになります。 - -お使いの端末におけるスクロールが非常に遅いが再描画は遅くないという場合は、 -'ttyscroll' を 3 などの小さな値にしてください。すると、 3 行より多くスクロール -する場合はスクロールでなく画面を再描画するようになります。 - -低速なカラー端末をお使いの場合は、次のコマンドを実行してください: > - hi NonText cterm=NONE ctermfg=NONE -すると、異なる属性を持つスペースを送信しないようになります。ほとんどの端末では -どちらにせよそれは目に見えません。 - -低速なシリアル回線上で Vim を使っている場合は、"screen" プログラム上で Vim を -実行するとよいかもしれません。screen は端末の入出力をほんの少し最適化します。 - -termcap オプションをテストする際、何が起こっているかを見たいならば 'writedelay' -をオンにするとよいかもしれません。これがゼロでない場合、一度に1つの文字が端末 -に送られます(MS-DOS では機能しません)。そうすると画面の更新がとても遅くなり、 -何が起こっているかが見えるようになります。 - -============================================================================== -5. マウスの使用 *mouse-using* - -この節では端末や端末エミュレータ上でマウスを使う方法を説明します。GUI のウィン -ドウでマウスを使う方法については |gui-mouse| で説明されています。マウスホイー -ルでスクロールする方法については |scroll-mouse-wheel| を参照してください。 - -次のコマンドでマウスを有効にしてください: > - :set mouse=a -これを行わないと、Vim はどのモード('mouse' を参照)でもマウスを認識できません。 - -現時点では Unix の xterm、|sysmouse| つきの *BSD コンソール、Linux コンソール -(GPM マウスにも対応 |gpm-mouse|)、MS-DOS、Windows コンソールにおいてマウスがサ -ポートされています。 -マウスクリックによってカーソル位置の設定、領域の選択、ペーストを行えます。 - -'mouse' オプションに以下の文字を含めることにより、どの状況でマウスを有効にする -かを設定します: - n ノーマルモード - v ビジュアルモード - i インサートモード - c コマンドラインモード - h ヘルプファイルを閲覧しているときの上記の4モード全て - a 上記の4モード全て - r |hit-enter| プロンプトが出ているとき - -'mouse' の既定値は空で、マウスは無効になっています。普通は次のようにしてマウス -を有効にします: > - :set mouse=a -これは 'mouse' の値を "nvich" にすることと同値です。 -特定のモードでだけマウスを使いたい場合や、2つの質問のために使いたい場合は、こ -れらの文字を組み合わせます。 -例: > - :set mouse=nv -上の例はノーマルモードとビジュアルモードでのみマウスを有効にします。 > - :set mouse=h -上の例はヘルプファイルでのみマウスを有効にします ("g<LeftMouse>" でタグジャン -プができるようになります) - -マウスで選択を開始した場合、ビジュアルモードとセレクトモードのどちらになるかは -'selectmode' に "mouse" が含まれているかどうかによります。 - -xterm において、現在有効になっているモードが 'mouse' オプションに含まれている -ときマウスをクリックすると、それは Vim によって処理されます。Shift や Ctrl -キーを押しながらクリックすると xterm に伝わります。現在有効なモードが 'mouse' -に含まれていない場合、すべてのクリックは xterm に伝わります。 - - *xterm-clipboard* -Athena と Motif の GUI 版では、端末の中で動作しているときも、X サーバとの接続 -があれば(DISPLAY がセットされていれば)、コピーとペーストが GUI 版と同様に動作 -します。そうでないときは真ん中ボタンクリックで無名レジスタが挿入されます。この -場合、テキストをコピー&ペーストする方法は次の通りです: - -ビジュアルモードでマウスを使ってコピー&ペーストする方法('mouse' がセットされ -ていなければなりません。上記参照): -1. コピーしたいテキストの最初の文字の上で左ボタンを押して最後の文字の上までマ - ウスポインタを動かし、ボタンを離します。するとビジュアルモードが開始し、選 - 択したテキストが強調されます。 -2. "y" を押して選択したテキストを無名レジスタにヤンクします。 -3. ペーストしたい位置で左ボタンをクリックします。 -4. 真ん中ボタンをクリックします。 - -ショートカット: ペーストしたい位置が選択したテキストと同時に画面に見えている場 -合は、ペーストしたい位置で真ん中ボタンをクリックすることにより、2, 3, 4 のス -テップを一度に行えます: - -Note: コマンドライン引数 |-X| が指定されていると Vim は X サーバに接続せず、 -X のクリップボード(セレクション)へのコピー&ペーストは機能しません。Shift キー -を押しながらクリックすることにより、xterm に選択を行わせることができます。 - - *xterm-command-server* -X サーバのクリップボードを利用できるときは、コマンドライン引数 --servername を -指定すると |x11-clientserver| で説明されているコマンドサーバが有効になります。 - - *xterm-copy-paste* -NOTE: 古い xterm では95桁目を越えてカーソルを移動できない場合があります。これ -は xterm の問題であり、Vim の問題ではありません。新しい xterm を入手してくださ -い |color-xterm|。 -現在、制限は 223 桁です。 - -xterm でコピー&ペーストする方法('mouse' に現在のモードが含まれていないとき): -1. テキストの最初の文字の上で左ボタンを押し、最後の文字までマウスポインタを動 - かしてからボタンを離します。 -2. 普通の Vim のコマンドを使ってカーソルをペーストしたい位置まで動かします。 -3. "a" を押してインサートモードを開始します。 -4. 真ん中ボタンを押します。 -5. ESC を押してインサートモードを抜けます。 -('mouse' に含まれているモードにいる場合も、Shift キーを押しながらマウスを操作 -することによりどの操作も同じようにできます) - -Note: ペーストするときに8ビット目が失われてしまう(特殊文字が他の文字に変換され -てしまう)ときは、Vim を起動する前にシェルで "stty cs8 -istrip -parenb" としな -ければならないかもしれません。 - -xterm では Shift と Ctrl キーを押しながらマウスを使うことはできません。CTRL 修 -飾子を必要とするマウスコマンドは、マウス操作の前に "g" を押すことでシミュレー -トできます: - "g<LeftMouse>" は "<C-LeftMouse> (クリックした位置のタグへジャンプ) - "g<RightMouse>" は "<C-RightMouse> ("CTRL-T") - - *mouse-mode-table* *mouse-overview* -以下は、'mousemodel' が "extend" の場合のマウスボタンの機能の概略です: - -ノーマルモード: -イベント カーソル 選択範囲 ウィンドウ 動作 ~ - 移動 切替 ~ -<LeftMouse> yes end yes -<C-LeftMouse> yes end yes "CTRL-]" (2) -<S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* -<LeftDrag> yes start or extend (1) no *<LeftDrag>* -<LeftRelease> yes start or extend (1) no -<MiddleMouse> yes if not active no put -<MiddleMouse> yes if active no yank and put -<RightMouse> yes start or extend yes -<A-RightMouse> yes start or extend blockw. yes *<A-RightMouse>* -<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* -<C-RightMouse> no no change no "CTRL-T" -<RightDrag> yes extend no *<RightDrag>* -<RightRelease> yes extend no *<RightRelease>* - -インサート/置換モード: -イベント カーソル 選択範囲 ウィンドウ 動作 ~ - 移動 切替 ~ -<LeftMouse> yes (cannot be active) yes -<C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) -<S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) -<LeftDrag> yes start or extend (1) no like CTRL-O (1) -<LeftRelease> yes start or extend (1) no like CTRL-O (1) -<MiddleMouse> no (cannot be active) no put register -<RightMouse> yes start or extend yes like CTRL-O -<A-RightMouse> yes start or extend blockw. yes -<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) -<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" - -ヘルプウィンドウ: -イベント 位置 選択 変更 動作 ~ - カーソル ウィンドウ ~ -<2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) - -'mousemodel' が "popup" の場合は次のように異なります: - -ノーマルモード: -イベント カーソル 選択範囲 ウィンドウ 動作 ~ - 移動 切替 ~ -<S-LeftMouse> yes start or extend (1) no -<A-LeftMouse> yes start or extend blockw. no *<A-LeftMouse>* -<RightMouse> no popup menu no - -インサート/置換モード: -イベント カーソル 選択範囲 ウィンドウ 動作 ~ - 移動 切替 ~ -<S-LeftMouse> yes start or extend (1) no like CTRL-O (1) -<A-LeftMouse> yes start or extend blockw. no -<RightMouse> no popup menu no - -(1) 押してからマウスポインタが移動したときのみ -(2) 同一バッファでクリックしたときのみ - -左ボタンをクリックするとカーソルが移動します。他のウィンドウ内でクリックすると -そのウィンドウがアクティブになります。コマンドラインを編集中はコマンドライン内 -でカーソルが移動します。インサートモードでクリックしたときはインサートモードの -ままです。'scrolloff' がセットされている場合は、ウィンドウの境界から -'scrolloff' 行数内の範囲にカーソルが移動し、テキストがスクロールします。 - -選択は、左ボタンを押すと始まり、カーソルを移動してボタンを離すことで行います。 -ボタンを離すまでは選択が見えるようにならない場合もあります。GUI, MS-DOS, WIN32 -などいくつかのバージョンでのみドラッグが即座に表示されます。'scrolloff' がゼロ -でない場合、ウィンドウの最初/最後の行で1文字以上動かすとテキストがスクロールす -る可能性があることに注意してください。 - -ノーマルモード、ビジュアルモード、セレクトモードで右ボタンをクリックすると選択 -範囲が拡大します。ただし、'mousemodel' が "popup" のときは、Shift キーを押した -ままで左ボタンをクリックします。他のバッファを開いているウィンドウの中をクリッ -クするとビジュアルモードとセレクトモードは中止されます。 - -ノーマルモード、ビジュアルモード、セレクトモードで Alt キーを押したまま右ボタ -ンをクリックすると、選択範囲がブロック指向になります。ただし、'mousemodel' が -"popup"のときは、Alt キーを押しながら左ボタンをクリックします。Alt キーを押し -ているときはマウスイベントをウィンドウマネージャが処理(ウィンドウ移動など)して -しまうシステムでは機能しないことに注意してください。 - - *double-click* -MS-DOS、Win32、xterm (関数 gettimeofday() が使用できるとき)において、GUI が有 -効なときはダブル、トリプル、クアドラプルクリックが使用できます。テキストを選択 -しているときさらにクリックすると選択範囲が拡大します: - クリック 選択範囲 ~ - ダブル 単語または % でのマッチ *<2-LeftMouse>* - トリプル 行 *<3-LeftMouse>* - クアドラプル 矩形範囲 *<4-LeftMouse>* -例外: ヘルプウィンドウでダブルクリックすると、その下にある単語のヘルプへジャン -プします。 -単語の上でダブルクリックするとその単語を選択します。単語を構成する文字は -'iskeyword' によって決まります。対応する文字がある文字の上でダブルクリックする -とそのマッチまでを選択します("v%" と同様)。そのマッチが #if/#else/#endif であ -る場合、選択は行指向になります。 -MS-DOS と xterm ではダブルクリックの間隔は 'mousetime' で設定できます。他のシ -ステムでは、この間隔は Vim の外部で設定されています。 -例: ダブルクリックでカーソル下のタグへジャンプする > - :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR> - -ダブルクリックによるドラッグ(押す、離す、押してドラッグ)をすると単語全体が選択 -されるようになります。これはボタンが離されるまで続き、ボタンを離すと文字単位に -戻ります。 - - *gpm-mouse* -GPM マウスは |+mouse_gpm| 機能を有効にしてコンパイルしたときのみサポートされま -す。GPM マウスドライバ(Linux コンソール)はクアドラプルクリックに対応していませ -ん。 - -インサートモードで選択を開始すると、一時的にノーマルモードへ移行します。ビジュ -アルモードまたはセレクトモードが終了するとインサートモードへ戻ります。インサー -トモードにおける CTRL-O と同様です。'selectmode' オプションが "mouse" を含んで -いるとセレクトモードになります。 - - *sysmouse* -sysmouse は、コンパイル時に |+mouse_sysmouse| 機能が有効化されている場合のみサ -ポートされます。sysmouse ドライバ(*BSD コンソール)はキーボード修飾子には対応し -ていません。 - - *drag-status-line* -ウィンドウを複数に分割しているとき、マウスでステータスラインをドラッグすると -ウィンドウのサイズを変更できます。マウスをステータスライン上へ持っていき、左ボ -タンを押し、ステータスラインを望みの位置まで動かしてボタンを離します。単にス -テータスラインをクリックすると、カーソルを動かさずにそのウィンドウをカレントに -します。ステータスラインのドラッグは、ウィンドウを選択して位置やサイズが変わる -と混乱を招きがちです。しかしこれは確かに動作します(試してみてください)。 - - *<MiddleRelease>* *<MiddleDrag>* -マウスクリックイベントもマップすることができます。マウスクリックに対するコード -は次の通りです: - コード マウスボタン 通常の動作 ~ - <LeftMouse> 左ボタン押下 カーソル位置設定 - <LeftDrag> 左ボタンを押しながら移動 選択範囲を拡張 - <LeftRelease> 左ボタン放す 選択を終了 - <MiddleMouse> 中央ボタン押下 カーソル位置にテキストを貼りつけ - <MiddleDrag> 中央ボタンを押しながら移動 - - <MiddleRelease> 中央ボタン放す - - <RightMouse> 右ボタン押下 選択を拡張 - <RightDrag> 右ボタンをお品が雷同 選択を拡張 - <RightRelease> 右ボタン放す 選択を終了 - <X1Mouse> X1 ボタン押下 - *X1Mouse* - <X1Drag> X1 ボタンを押しながら移動 - *X1Drag* - <X1Release> X1 ボタン放す - *X1Release* - <X2Mouse> X2 ボタン押下 - *X2Mouse* - <X2Drag> X2 ボタンを押しながら移動 - *X2Drag* - <X2Release> X2 ボタン放す - *X2Release* - -X1 ボタンと X2 ボタンは、ある種のマウスについている4番目、5番目のボタンのこと -です。'Microsoft Explorer' マウスの場合、これらのボタンは右親指の位置について -います。現在のところ、X1 と X2 は Win32 環境でのみ機能します。 - -例: > - :noremap <MiddleMouse> <LeftMouse><MiddleMouse> -マウス中央ボタンをクリックしたとき、クリックした位置に貼り付けます(通常はカー -ソル位置に貼り付けます)。 > - - :noremap <LeftRelease> <LeftRelease>y -ビジュアルモードで選択範囲を即座にヤンクします。 - -Note 再帰マッピングにならないように "map" でなく "noremap" を使っています。 -> - :map <X1Mouse> <C-O> - :map <X2Mouse> <C-I> -X1 と X2 ボタンでジャンプリストの前後に移動するようにマップします。 -|CTRL-O| と |CTRL-I| を参照。 - - *mouse-swap-buttons* -左右のマウスボタンの意味を交換するには次のようにします: > - :noremap <LeftMouse> <RightMouse> - :noremap <LeftDrag> <RightDrag> - :noremap <LeftRelease> <RightRelease> - :noremap <RightMouse> <LeftMouse> - :noremap <RightDrag> <LeftDrag> - :noremap <RightRelease> <LeftRelease> - :noremap g<LeftMouse> <C-RightMouse> - :noremap g<RightMouse> <C-LeftMouse> - :noremap! <LeftMouse> <RightMouse> - :noremap! <LeftDrag> <RightDrag> - :noremap! <LeftRelease> <RightRelease> - :noremap! <RightMouse> <LeftMouse> - :noremap! <RightDrag> <LeftDrag> - :noremap! <RightRelease> <LeftRelease> -< - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/tips.jax b/doc/tips.jax deleted file mode 100644 index 44f8f9263..000000000 --- a/doc/tips.jax +++ /dev/null @@ -1,543 +0,0 @@ -*tips.txt* For Vim バージョン 7.3. Last change: 2009 Nov 07 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Vim を使うときのヒントとアイディア *tips* - -これは、多くのユーザーにとって便利だろうと思うこの一部です。wiki には -もっと多くの tips があります。http://www.vim.org - -ユーザーマニュアルも参照してください。ユーザーマニュアルにはたくさんのtipsが含 -まれています|usr_toc.txt|。 - -C のプログラムを編集する |C-editing| -識別子が使われている場所を検索する |ident-search| -xterm でのスクリーンの切り替え |xterm-screens| -挿入モードでスクロールさせる |scroll-insert| -スムーズにスクロールさせる |scroll-smooth| -ありがちなタイプミスを修正する |type-mistakes| -単語や行の数を数える |count-items| -カーソルの位置を戻す |restore-position| -ファイルをリネームする |rename-files| -複数ファイル中の名前を置換する |change-name| -外部コマンドの実行速度を速くする |speed-up| -便利なマッピング |useful-mappings| -ヘルプファイルを圧縮する |gzip-helpfile| -ウィンドウでシェルコマンドを実行する |shell-window| -16進編集 |hex-editing| -オートコマンドで <> 表記を使う |autocmd-<>| -対応する括弧を強調する |match-parens| - -============================================================================== -C のプログラムを編集する *C-editing* - -Vim には C のプログラムファイルを編集するのを手助けする機能がたくさんあります。 -詳細をジャンプして確認できるようにタグつきで機能のあらましを紹介しましょう。 - -|usr_29.txt| ユーザーマニュアルの「プログラム内の移動」 -|usr_30.txt| ユーザーマニュアルの「プログラムの編集」 -|C-indenting| テキストをタイプ中、自動的に行をインデントします。 -|=| 数行をインデントし直します。 -|format-comments| コメントを自動的にフォーマットします。 - -|:checkpath| 再帰的にインクルードされるファイルをすべて表示します。 -|[i| カーソルの下にある単語と同じものを現在のファイルとイン - クルードされるファイルから探します。 -|[_CTRL-I| "[i" でマッチした場所にジャンプします。 -|[I| カーソルの下にある単語と同じものを現在のファイルとイン - クルードされるファイルから探し出しその行のリストを表示 - します。 - -|[d| カーソルの下の単語の定義を現在のファイルとインクルード - されるファイルから探します -|CTRL-]| カーソルの下のタグにジャンプします。(例、関数の定義) -|CTRL-T| CTRL-]コマンドの前に戻ります。 -|:tselect| マッチしたタグのリストから一つ選びます。 - -|gd| カーソルの下のローカル変数の宣言にジャンプする。 -|gD| カーソルの下のグローバル変数の宣言にジャンプする。 - -|gf| カーソルの下のファイル名にジャンプする。 - -|%| 対応する(),{},[],/* */, #if, #else, #endifに移動する。 -|[/| 前のコメントが始まる場所に移動する。 -|]/| 次のコメントが終わる場所に移動する。 -|[#| 前の閉じられていない #if, #ifdef, #else に移動する。 -|]#| 次の閉じられていない #else, #endif に移動する。 -|[(| 前の閉じられていない '(' に移動する。 -|])| 次の閉じられていない ')' に移動する。 -|[{| 前の閉じられていない '{' に移動する。 -|]}| 次の閉じられていない '}' に移動する。 - -|v_ab| 「ブロック("[("から"])"まで)」を括弧を含めて選択する。 -|v_ib| 「ブロック("[("から"])"まで)の内部」を選択する。 -|v_aB| 「ブロック("[{"から"]}"まで)」を括弧を含めて選択する。 -|v_iB| 「ブロック("[{"から"]}"まで)の内部」を選択する。 - -============================================================================== -識別子が使われている場所を検索する *ident-search* - -|tags|が関数や変数の定義された場所へのジャンプに使えることはすでにわかりました -が、ときどき関数や変数が使われている場所にジャンプしたいことがあります。これ -は二つの方法で実現することができます: -1. |:grep|を使う方法。この方法はほとんどの Unix システムでうまく動作しますが遅 - いですし(全てのファイルを読むため)、一つのディレクトリの中だけしか検索でき - ません。 -2. ID ユーティリティを使う方法。この方法は速いですし複数のディレクトリを検索で - きます。この方法は位置を記憶するためにデータベースを使用します。いくつかの - プログラムを新たに入れる必要があります。そして、データベースを最新に保つこ - とが要求されます。 - -GNU id-tools と Vim を連動させる。 - -必要なもの: -- The GNU id-toolsがインストールされていること(IDを生成するにはmkidが必要でマ - クロを使うのにlidが必要です)。 -- 現在のディレクトリに "ID" と呼ばれる識別子データベースファイルがあること。 - シェルコマンド"mkid file1 file2 .."で作成可能です。 - -次の行を .vimrc に追加してください。 > - map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR> - map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR> - - function! ID_search() - let g:word = expand("<cword>") - let x = system("lid --key=none ". g:word) - let x = substitute(x, "\n", " ", "g") - execute "next " . x - endfun - -これを使うには、単語上にカーソルを置いて、"_u"とタイプすればvimは単語を含んだ -ファイルを読みこみます。同じファイルで次に単語が出てくるところを検索するには -"n"をタイプします。"_n"で次のファイルに行きます。 - -この方法は id-utils-3.2 を使って動作を確認しました (id-utlis-3.2 は id-tools -アーカイブの名前です。近くの gnu-ftp-mirror から入手してください。) - -[このアイディアはAndreas Kutscheraさんから頂いたものです] - -============================================================================== -xterm でのスクリーンの切り替え *xterm-screens* *xterm-save-screen* - -(comp.editors で質問に答えて Juergen Weigert 氏が投稿したもの) - -:> もう一つの質問は vim を終了させた後にスクリーンがそのまま残っている -:> ことに関してです。例えばいままで見ていた(編集していた)内容がスクリ -:> ーンに残っていますよね。そして前に行った ls などのコマンドの出力が -:> 消えてしまうのです(例えばスクロールバッファからなくなってしまう)。 -:> vim や他の vi 風のエディタでもどうにかして前の画面を復元する方法が -:> あるとは思うのですが、どのようにすれば実現できるのかわかりません。 -:> 教えていただけると嬉しいです。それでは。 -: -:どなたか詳しい方が答えて下さると思います。vim も vi も xterm の設定を -:みて同じことをそれぞれやっていると思うのですが。 - -これらは必ずしも同じ動作をするとは限りません、というのはこれは termcapと -terminfo の問題であるかもしれないからです。個々のタイプのターミナルの属性を記 -述するデータベースには termcap と terminfoという二つのデータベースがあるという -ことを知っておいてください。エントリーが異なっていて、かつ質問にあったプログラ -ムのどれかが termcapを使っていて他のものがterminfo を使っていた場合、違う動作 -をすることになりえます。 -(|+terminfo| も参照してください) - -この問題の場合、^[[?47h と ^[[?47l というコントロールシーケンスが答えになりま -す。これらはxtermのメインスクリーンバッファともう一方のバッファを切り替えるの -に用いられます。簡単に動作させてみるには次のコマンドを打ってみてください、 > - echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" -あなたが望む動作はこれかもしれません。 (ここで ^[ は ESC キャラクターを意味し -ます。このあとデータベースではこの記号の代わりに \E を使っていることがわかるで -しょう) - -起動時に vim は termcap の ti 変数(terminfo の場合: smcup) の値をecho し、終了 -時には te 変数(terminfo の場合: rmcup) の値をターミナルに echo します。という -わけで、これらの二つの変数が上記のコントロールシーケンスを設定する正しい場所で -す。 - -xterm の termcap エントリー(/etc/termcap にあります) と xterm のterminfo エン -トリー(infocmp -C xterm として入手します)とを比べてみてください。双方に次のよ -うなエントリーが含まれている必要があります。 > - :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: - -追伸: もしなんらかの違いを見つけた場合、だれかが(システム管理者かな?) termcap - と terminfo データベースを継続的にチェックするようにした方がよいです。 - -注1: feature.h で定義される FEAT_XTERM_SAVE をつけて Vim を再コンパイルすると -内蔵の xterm は上記の "te" と "ti" エントリーを含むようになります。 - -注2: スクリーンのスイッチを行わないようにし、termcap の変更も行いたくない場合 -次の行を .vimrc に加えてください。 > - :set t_ti= t_te= - -============================================================================== -挿入モードでスクロールを行う *scroll-insert* - -挿入モードでスクリーンの外の部分を見たい場合、CTRL-X CTRL-E と CTRL-X CTRL-Y -を使うことでスクリーンをスクロールさせることができます。 - |i_CTRL-X_CTRL-E| - -これを簡単に行うには次のマッピングをすることができます: > - :inoremap <C-E> <C-X><C-E> - :inoremap <C-Y> <C-X><C-Y> -(文字通り入力するには、'<'フラグが'cpoptions'にないことを確認してください) -しかしこれを行うとカーソルの上/下の行のテキストをコピーする機能が使えなくなり -ます。 -|i_CTRL-E|. - -カーソルの回りの前後を常に見渡せるように 'scrolloff' オプションの値を大きい値 -に設定するのもよいです。'scrolloff' の値がウインドーの高さの半分以上に設定さ -れているとカーソルが常にスクリーンの中央にあることになりテキストはカーソルの -上下移動にあわせてスクロールすることになります。 - -============================================================================== -スムーズにスクロールさせる *scroll-smooth* - -もう少しスムーズにスクロールさせたい場合、次のマッピングを使うこともできます: -> - :map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y> - :map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E> - -(文字通り入力するには、'<'フラグが'cpoptions'にないことを確認してください) - -============================================================================== -ありがちなタイプミスを修正する *type-mistakes* - -しょっちゅう間違ってタイプする単語がいくつかあれば、略記を修正するのに利用しま -しょう。例えば: > - :ab teh the - :ab fro for - -============================================================================== -単語や行などの数を数える *count-items* - -カレントバッファの中になんらかのパターンがどのくらいの回数現れるのかを数えるに -は、substituteコマンドを使い、実際に置換するのを避けるためにフラグ'n'をつけま -す。報告される数がそのアイテムの数です。例: > - - :%s/./&/gn 文字 - :%s/\i\+/&/gn 単語 - :%s/^//n 行 - :%s/the/&/gn "the"(どこかしら) - :%s/\<the\>/&/gn "the"(単語一致) - -'hlsearch'をリセットするか、":nohlsearch"をしたくなるかもしれません。 -マッチが1個もないときにエラーになってほしくなければフラグ'e'をつけます。 - -別の方法としては、ビジュアルモードで|v_g_CTRL-G|を使います。 - -複数のファイルから検索したければ|:vimgrep|を使います。 - -これは'modifiable'オプションがオフのときは機能しません。代わりにビジュアルモー -ドで|v_g_CTRL-G|を使ってください。 - - *count-bytes* -バイト数を数えるにはこれを使ってください。 - - 文字列を選択してください(ブロック選択も使えます) - "y"でコピーしてください - そして、strlen()を使います > - :echo strlen(@") -改行は1バイトとして数えられます。 - -============================================================================== -カーソルの位置を戻す *restore-position* - -ときにはファイルのどこかに変更を加えて、テキストをスクロールすることなくカーソ -ルを元の位置に戻すようなマッピングを書きたくなることがあります。ファイルに書い -た日付を変更する例をあげます: - :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s - -位置を記憶する: - ms 's'マークにカーソルの位置を記録します - H ウインドウに表示された最初の行に移動します - mt その行を't'マークに記録します - -位置を元に戻す: - 't 先程のウインドウに表示された最初の行に移動します - zt その行がウインドウの最初に表示されるようにスクロールします - `s 最初の位置に戻ります - -より高度なことについては |winsaveview()| と |winrestview()| を参照してくださ -い。 - -============================================================================== -ファイルをリネームする *rename-files* - -例えば以下のようなファイルを含むディレクトリがあるとします(ディレクトリはラン -ダムに選び出したものです :-): - -buffer.c -charset.c -digraph.c -... - -そして *.c を *.bla にリネームしたい場合次のようなコマンドを実行します: > - - $ vim - :r !ls *.c - :%s/\(.*\).c/mv & \1.bla - :w !sh - :q! - -============================================================================== -複数ファイル中の名前を置換する *change-name* - -スクリプトファイルを使って複数ファイル中の名前を置換する例です: - - 以下のように置換コマンドと :update コマンドを含む "subs.vim" というファ - イルを作成します: > - :%s/Jones/Smith/g - :%s/Allen/Peter/g - :update -< - Vim で置換したい全ファイルを開き、各引数に対してこのスクリプトを実行 - します: > - - vim *.let - argdo source subs.vim - -|:argdo| も参照。 - -============================================================================== -外部コマンドの実行をスピードアップする *speed-up* - -いくつかの状況では外部コマンドの実行速度が非常に遅くなる場合があります。これは -Unix でのワイルドカード展開が行われた場合もそうです。いくつかのスピードアップ -する方法を紹介しましょう。 - -もし .cshrc (もしくは他のファイル、使っているシェルによります)が非常に長いなら -ばそれを対話的に使う部分とそうでない用途(セカンダリーシェルとよく呼ばれます)の -部分にわけるべきです。Vim から ":!ls" のようなコマンドを実行する場合、対話的に -行う必要はありませんよね(例えば、プロンプトを出させたり)。次の行の後にそれらを -おくようにしてください。 > - - if ($?prompt == 0) then - exit 0 - endif - -もう一つの方法は 'shell' オプションに "-f" フラグをつける方法です、例えば: > - - :set shell=csh\ -f - -(オプションの中にスペースを含めるにはバックスラッシュが必要です) -こうすると csh が .cshrc ファイルを読み込まないようにすることができます。しか -しこうすることでなんらかが動作しない場合もあるかもしれません。 - -============================================================================== -便利なマッピング *useful-mappings* - -ここでいくつか好んで使われるマッピングを紹介します。 - - *map-backtick* > - :map ' ` -シングル引用符の動作をバック引用符の動作のようにします。カーソルをマークがある -行の最初の非空白文字に移動させるのではなく、マークがある桁位置に移動させます。 - - *emacs-keys* -コマンドラインでのキーバインドを Emacs スタイルにします: > - " 行頭へ移動 - :cnoremap <C-A> <Home> - " 一文字戻る - :cnoremap <C-B> <Left> - " カーソルの下の文字を削除 - :cnoremap <C-D> <Del> - " 行末へ移動 - :cnoremap <C-E> <End> - " 一文字進む - :cnoremap <C-F> <Right> - " コマンドライン履歴を一つ進む - :cnoremap <C-N> <Down> - " コマンドライン履歴を一つ戻る - :cnoremap <C-P> <Up> - " 前の単語へ移動 - :cnoremap <Esc><C-B> <S-Left> - " 次の単語へ移動 - :cnoremap <Esc><C-F> <S-Right> - -注: これを利用するには'cpoptions'から'<'フラグを外しておく必要があります。|<>| - - *format-bullet-list* -このマッピングはブレットリストのフォーマットを整えるものです。それぞれのリスト -のエントリーの前後に空行がある必要があります。式が使われているのはマッピングを -部分的に解説するコメントを入れるためです。 > - - :let m = ":map _f :set ai<CR>" " 'autoindent' をセット - :let m = m . "{O<Esc>" " アイテムの上に空行を挿入 - :let m = m . "}{)^W" " ブレットの後のテキストに移動 - :let m = m . "i <CR> <Esc>" " インデントの為のスペースを挿入 - :let m = m . "gq}" " ブレットの後のテキストを整形 - :let m = m . "{dd" " 空行を削除 - :let m = m . "5lDJ" " ブレットの後にテキストを置く - :execute m |" マッピングを決定する - -(<> 表記法 |<>|。これらは文字どおりにタイプするということに注意してください。 -^W は "^" "W" で CTRL-W ではありません。'cpoptions' に '<' がなければ Vim にコ -ピー/ペーストすることができますよ。) - -最後のコメントは |" で始まっていることに注意してください、これは ":execute" コ -マンドが直接のコメントを受け付けないからです。 - -また 'textwidth' を 0 以外の値にしておく必要があります。例えば: > - set tw=70 - -最初の行からインデントすることになりますが次のようなマッピングでも同じことがで -きます (注: このマッピングは多くのスペースを含む長い一つの行です): > - :map _f :set ai<CR>}{a <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j -< - *collapse* -これら2つのマッピングは空行(;b)もしくは空白文字のみからなる行(;n)の連続を1行に -します。 > - :map ;b GoZ<Esc>:g/^$/.,/./-j<CR>Gdd - :map ;n GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd - -============================================================================== -ヘルプファイルを圧縮する *gzip-helpfile* - -ディスクスペースに空きがあまりない人はヘルプファイルを圧縮することができます。 -圧縮した後でもヘルプファイルを閲覧することはできます。ヘルプファイルへのアクセ -スは少し遅くなります。また "gzip" プログラムが必要です。 - -(1) すべてのヘルプファイルを圧縮するには: "gzip doc/*.txt" - -(2) "doc/tags" を編集して ".txt" を ".txt.gz" にします。 > - :%s=\(\t.*\.txt\)\t=\1.gz\t= - -(3) 次の行を vimrc に追加します: > - set helpfile={dirname}/help.txt/gz - -{dirname}はヘルプファイルのある場所です。|gzip|プラグインがファイルの解凍をし -ます。それともし圧縮された "doc" ディレクトリと同じ場所に他のVim ファイルがな -い場合、$VIMRUNTIME が他の Vim ファイルがある場所になるようにしておかなければ -なりません。|$VIMRUNTIME|も参照してください。 - -============================================================================== -ウィンドーでシェルコマンドを実行する *shell-window* - -Vim の中のウインドーでシェルを起動できるかという質問がいままでに何度かありまし -た。答えは、できないです。もしこれを実装しようとすればかなりおおくのコードを加 -えなければなりません、これが実装しない理由です。つまるところ、Vim はエディター -なのです、エディターとしてではない作業を実行するようには考えられていません。し -かしながら、同じようなことを実行するには "splitvt" プログラムを使って端末のス -クリーンもしくはウインドーの表示を分割することができます。このプログラムはたぶ -んどこかの ftp サーバーで見つけることができると思います。このプログラムに詳し -いのは Sam Lantinga <slouken@cs.ucdavis.edu> です。もう一つの方法は "window" -コマンドを利用する方法で、このコマンドは BSD Unix システムにあります。このコマ -ンドは複数のウインドーをオーバーラップさせることができます。それか "screen" プ -ログラムを使うかです。これは www.uni-erlangen.de で見つけることができ、このプ -ログラムでウインドーの積み重ねをすることができます。 - -============================================================================== -16進編集 *hex-editing* *using-xxd* - -ユーザーマニュアルの|23.4|を参照してください。 - -もしそのファイルがバイナリファイル特有の拡張子(exe、binなど)をしているときは、 -あなたの<.vimrc>に次のオートコマンドを加えることで、変換の過程を自動化しておく -こともできます。"*.bin"をあなたの編集したいファイルの拡張子の、カンマで区切ら -れたリストに変えてください: > - - " vim -b : edit binary using xxd-format! - augroup Binary - au! - au BufReadPre *.bin let &bin=1 - au BufReadPost *.bin if &bin | %!xxd - au BufReadPost *.bin set ft=xxd | endif - au BufWritePre *.bin if &bin | %!xxd -r - au BufWritePre *.bin endif - au BufWritePost *.bin if &bin | %!xxd - au BufWritePost *.bin set nomod | endif - augroup END - -============================================================================== -オートコマンドで <> 表記を使う *autocmd-<>* - -<> 表記は :autocmd の引数として使っても正しく解釈されません。特殊な文字を入力 -するのを避けるには、<> 表記をするための自己破壊的なマッピング行ってそれからオー -トコマンドの中でそのマッピングを呼び出すことで実現することもできます。例: - - *map-self-destroy* > - " この方法はファイル名を自動的にメニューリストに追加するものです。 - " 自己破壊的なマッピングを使っています! - " 1. ファイル名に含まれる 'dots' を \. に変更するためにバッファーの一つの - " 行を使います。 - " 2. それをレジスター '"' に格納します。 - " 3. その名前をバッファーメニューリストに追加します。 - " 警告: この方法にはいくらか副作用があります。現在のレジスターの内容を上書 - " きしたり "i" コマンドへのマッピングをすべて削除してしまったりします。 - " - autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR> - autocmd BufNewFile,BufReadPre * normal i - -もう一つのよりよい方法は ":execute" コマンドを使う方法です。文字列の中ではバッ -クスラッシュを前置することで <> 表記が使えます。それまであったバックスラッシュ -は \\ という風に2回重ねるのを忘れないでください。また '"' の前にもバックスラッ -シュを前置しなければなりません。 -> - autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>" - -実際のバッファメニューではユーザー定義関数を使うべきですが(|:function|を参照)、 -そうすると<>表記は使いませんので、ここでの例としてそれを使うのは不適切です。 - -============================================================================== -対応する括弧を強調する *match-parens* - -この例はいくつかの高度なトリックを紹介しています。 -- 自動コマンドイベント|CursorMoved|の使い方 -- |searchpairpos()|を使って対応する括弧を見つける方法 -- |synID()|を使ってカーソルが文字列やコメントの中にあるかを判定する方法 -- |:match|を使ってなにかを強調する方法 -- |pattern|を使ってファイルの特定の位置にマッチさせる方法 - -これはスクリプトローカル変数を使っているので、Vimスクリプトファイル中に書かな -ければなりません。カーソルが文字列やコメントの中にないならば、文字列やコメント -はスキップして検索します。構文強調が有効になっている必要があります。 - -これより若干高度なバージョンがプラグイン|matchparen|の中で使われています。 -> - let s:paren_hl_on = 0 - function s:Highlight_Matching_Paren() - if s:paren_hl_on - match none - let s:paren_hl_on = 0 - endif - - let c_lnum = line('.') - let c_col = col('.') - - let c = getline(c_lnum)[c_col - 1] - let plist = split(&matchpairs, ':\|,') - let i = index(plist, c) - if i < 0 - return - endif - if i % 2 == 0 - let s_flags = 'nW' - let c2 = plist[i + 1] - else - let s_flags = 'nbW' - let c2 = c - let c = plist[i - 1] - endif - if c == '[' - let c = '\[' - let c2 = '\]' - endif - let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . - \ '=~? "string\\|comment"' - execute 'if' s_skip '| let s_skip = 0 | endif' - - let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip) - - if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') - exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col . - \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' - let s:paren_hl_on = 1 - endif - endfunction - - autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren() - autocmd InsertEnter * match none -< - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/uganda.jax b/doc/uganda.jax deleted file mode 100644 index 9a29bcc9a..000000000 --- a/doc/uganda.jax +++ /dev/null @@ -1,359 +0,0 @@ -*uganda.txt* For Vim バージョン 7.3. Last change: 2010 Aug 07 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - *uganda* *Uganda* *copying* *copyright* *license* -要約 - *iccf* *ICCF* -Vim はチャリティウェアです。好きなだけコピーして使うことができますが、ウガンダ -の孤児院への寄付を推奨しています。下記の |kcc| を参照するか、ICCFのウェブサイ -トを訪れてください。URLは以下のとおりです。 - - http://iccf-holland.org/ - http://www.vim.org/iccf/ - http://www.iccf.nl/ - -Vimの開発のスポンサーになることもできます。スポンサーは機能要望に投票できま -す。|sponsor|をご覧ください。集めたお金はウガンダへ送金されます。 - -Vimのドキュメントには Open Publication License が適用されています。 -|manual-copyright|をご覧ください。 - -=== begin of license === - -VIM LICENSE - -I) There are no restrictions on distributing unmodified copies of Vim except - that they must include this license text. You can also distribute - unmodified parts of Vim, likewise unrestricted except that they must - include this license text. You are also allowed to include executables - that you made from the unmodified Vim sources, plus your own usage - examples and Vim scripts. - -II) It is allowed to distribute a modified (or extended) version of Vim, - including executables and/or source code, when the following four - conditions are met: - 1) This license text must be included unmodified. - 2) The modified Vim must be distributed in one of the following five ways: - a) If you make changes to Vim yourself, you must clearly describe in - the distribution how to contact you. When the maintainer asks you - (in any way) for a copy of the modified Vim you distributed, you - must make your changes, including source code, available to the - maintainer without fee. The maintainer reserves the right to - include your changes in the official version of Vim. What the - maintainer will do with your changes and under what license they - will be distributed is negotiable. If there has been no negotiation - then this license, or a later version, also applies to your changes. - The current maintainer is Bram Moolenaar <Bram@vim.org>. If this - changes it will be announced in appropriate places (most likely - vim.sf.net, www.vim.org and/or comp.editors). When it is completely - impossible to contact the maintainer, the obligation to send him - your changes ceases. Once the maintainer has confirmed that he has - received your changes they will not have to be sent again. - b) If you have received a modified Vim that was distributed as - mentioned under a) you are allowed to further distribute it - unmodified, as mentioned at I). If you make additional changes the - text under a) applies to those changes. - c) Provide all the changes, including source code, with every copy of - the modified Vim you distribute. This may be done in the form of a - context diff. You can choose what license to use for new code you - add. The changes and their license must not restrict others from - making their own changes to the official version of Vim. - d) When you have a modified Vim which includes changes as mentioned - under c), you can distribute it without the source code for the - changes if the following three conditions are met: - - The license that applies to the changes permits you to distribute - the changes to the Vim maintainer without fee or restriction, and - permits the Vim maintainer to include the changes in the official - version of Vim without fee or restriction. - - You keep the changes for at least three years after last - distributing the corresponding modified Vim. When the maintainer - or someone who you distributed the modified Vim to asks you (in - any way) for the changes within this period, you must make them - available to him. - - You clearly describe in the distribution how to contact you. This - contact information must remain valid for at least three years - after last distributing the corresponding modified Vim, or as long - as possible. - e) When the GNU General Public License (GPL) applies to the changes, - you can distribute the modified Vim under the GNU GPL version 2 or - any later version. - 3) A message must be added, at least in the output of the ":version" - command and in the intro screen, such that the user of the modified Vim - is able to see that it was modified. When distributing as mentioned - under 2)e) adding the message is only required for as far as this does - not conflict with the license used for the changes. - 4) The contact information as required under 2)a) and 2)d) must not be - removed or changed, except that the person himself can make - corrections. - -III) If you distribute a modified version of Vim, you are encouraged to use - the Vim license for your changes and make them available to the - maintainer, including the source code. The preferred way to do this is - by e-mail or by uploading the files to a server and e-mailing the URL. - If the number of changes is small (e.g., a modified Makefile) e-mailing a - context diff will do. The e-mail address to be used is - <maintainer@vim.org> - -IV) It is not allowed to remove this license from the distribution of the Vim - sources, parts of it or from a modified version. You may use this - license for previous Vim releases instead of the license that they came - with, at your option. - -=== end of license === - -=== ライセンス日本語訳 ここから === - -訳注: この日本語訳は参考のために示すものであり、法的効力を持ちません。 -訳注: 必ず上記の原文を参照してください。 - -VIM ライセンス - -I) Vim のコピーを変更せずに配布することは、このライセンス文を含めなければな - らないこと以外に制限されません。また、変更を加えていない Vim の一部分だ - けを配布することも同様に、このライセンス文を含めなければならないこと以外 - に制限されません。配布物には、変更を加えていない Vim のソースから作成し - た実行可能ファイルや、あなた独自の説明書や Vim スクリプトを含めることも - できます。 - -II) 以下の条件を満たす場合に限り、Vim に変更 (または拡張) を加えた物を、実行 - 可能ファイルやソースコードも含めて配布することが認められています: - 1) このライセンス文を変更せずに配布物に含めること。 - 2) 変更された Vim は以下の 5 つの方法のどれかで配布しなければならない。 - a) Vim に独自の変更を加えた場合、配布物にあなたの連絡先を明確に示して - ください。メンテナがあなたが配布した変更された Vim のコピーについ - て (何かを) 尋ねたときに、あなたが加えた変更を、ソースコードも含め - て、無償で、メンテナが利用できるようにしなければなりません。メンテ - ナは公式なバージョンの Vim にあなたの変更を取り込むために適切に保 - 存します。メンテナがあなたの変更をどのようにし、どういったライセン - スで配布するかを交渉することができます。交渉するものがなければ、こ - のライセンス、もしくはこれの新しいバージョンのライセンスがあなたの - 変更に適用されます。現在のメンテナは Bram Moolenaar <Bram@vim.org> - です。これが変更されるときは適切な場所で告知されます(おそらく - vim.sf.net やwww.vim.org そして comp.editors)。もし本当にメンテナ - と連絡が取れない場合には、あなたの変更を提出する義務はありません。 - 一旦、メンテナがあなたの変更を受け取ったことを確認できたなら、再度 - 提出する必要はありません。 - b) a) に基づいて配布された変更された Vim を受け取った場合、それを変更 - することなしに、I) に基づいて再配布できます。さらなる変更を加えた - 場合、その変更には a) が適用されます。 - c) 変更された Vim の配布物全てに、ソースコードも含めて、全ての変更点を - 提供してください。これは context diff の形式にしてください。あなた - が加えた新しいコードに対してどのライセンスを適用するか選択できます。 - その変更とライセンスは、公式なバージョンの Vim に取り込むことで、他 - のものを制限してはいけません。 - d) c) に基づいて配布された変更された Vim があるとき、次の条件を満たす場 - 合に限り、そのソースコードを含めずに配布することができます: - - その変更に適用されているライセンスが、その変更を無償で制限なしに - Vim のメンテナに提供することを認め、そして、Vim のメンテナがその - 変更を公式なバージョンの Vim に取り込むことを無償で制限なしに認 - めている。 - - その変更された Vim の変更点を、最後に配布したときから少なくとも - 3 年は保持してください。その期間内に、メンテナや誰かがその変更に - ついて (何かを) 尋ねた場合、彼らがその変更を利用できるようにしな - ければなりません。 - - その配布物にあなたの連絡先を明確に示してください。その連絡方法は、 - その変更された Vim に相当する配布物が最後に提供されてから、少なく - とも 3 年、そして可能な限り長く、有効でなければなりません。 - e) その変更に GNU General Public License (GPL) が適用されている場合、 - GNU GPL バージョン 2、またはそれより新しいバージョンに基づいて、その - 変更された Vim を配布することができます。 - 3) その変更された Vim を利用しているユーザーが、それが変更されていると確 - 認できるように、少なくとも、":version" コマンドや起動時の挨拶メッセー - ジに、変更されている旨を表示しなければなりません。その配布物が 2)e) - によるものである場合、そのライセンスが変更前のものと矛盾していない、 - という旨のメッセージだけが必要です。 - 4) 2)a) と 2)d) により要求されている連絡方法を、その本人が訂正する以外 - に、変更したり削除してはいけません。 - -III) 変更された Vim を配布する場合、あなたの変更に Vim のライセンスを使い、 - その変更を、ソースコードも含めて、メンテナが利用できるようにすることが奨 - 励されています。そのためには電子メールで送るか、サーバにアップロードして - その URL を電子メールで知らせるのが望ましいです。少しの変更なら (例えば - Makefile の変更など) context diff を電子メールで送るのがいいでしょう。電 - 子メールの送り先は <maintainer@vim.org> です。 - -IV) Vim のソースや、その一部、または変更された Vim、の配布物からこのライセン - スを削除することは認められていません。望むなら、以前の Vim リリースに、 - その時点のライセンスではなく、このライセンスを適用することができます。 - -=== ライセンス日本語訳 ここまで === - -Note: - -- Vim に満足していただけたのなら、このファイルをさらに読み進め、ウガンダの貧し - い子供たちへの援助を検討してください。 - -- Vimの開発に協力したいとお考えなら、スポンサーになることを検討してください - |sponsor|。集めたお金はウガンダへ送金されます。 - -- Richard Stallman にならってVimのライセンスは GNU GPL互換です。彼がそれを確認 - してから多少の変更が加えられましたが、違いはないでしょう。 - -- Vimに GNU GPL のライブラリをリンクした場合、配布形態が GNU GPL に制限されま - す。あなたがVimに何の変更も加えていなくてもです。 - -- 一度でも GNU GPL を含む変更を加えた場合、それ以降の変更は GNU GPL 互換のライ - センスを使わなければいけません。 - -- Vimに改良を加えたバージョンを配布するときは、configureの引数に - "--with-modified-by"を指定するかMODIFIED_BYを定義して、あなたの名前を連絡先 - に含めることができます。 - -============================================================================== -Kibaale Children's Centre *kcc* *Kibaale* *charity* - -Kibaale Children's Centre (KCC) はウガンダの南部にある小さな町 Kibaale にあり -ます。ウガンダは東アフリカのタンザニアの近くに位置しています。その地域はRakai -地区として知られています。人口の大部分は農民で、貧乏ではありますが食料は十分に -あります。しかしこの地域は世界のほかの場所よりも AIDS で苦しんでいます。AIDS -はここから始まったという人もいます。ウガンダ人の 10-30% がHIV に感染していると -推定されています。両親が死んでしまうので孤児がたくさんいます。この地域では人口 -350,000 人のうちの 60,000 人の子供が親をどちらか、または両方をなくしており、そ -の数は増え続けています。 - -子供たちは多くの援助を必要としています。KCC は食料、医療、教育を彼らに提供する -ために懸命に働いています。食料と医療は彼らの健康を保つために、そして教育は彼ら -の将来を手助けするためです。KCC はキリスト教の教えに基づいて活動していますが、 -子供たちの宗教にかかわらず援助が行われています。 - -この地域の問題を解決する鍵は教育です。過去数年にわたる Idi Amin 大統領の時代と -それに続く市民戦争により、教育は軽視されてきました。今は政府が再び安定しました -し、子供と親は自分自身の健康をどうやって保つか、そしてどうすれば感染を避けられ -るかを学ぶ必要があります。病気にかかっている人々や空腹を抱えている人々への援助 -もなされていますが、第一の目標は人々を病気から遠ざけることであり、そして体によ -い食料を育てる方法を彼らに教えることです。 - -ほとんどの孤児は拡大家族の中で生活しています。叔父や姉が彼らの世話をしていま -す。このような家庭は大家族でありながら収入は少ないので、子供が体によい食料を得 -られるのは希です。まして衣類、医療、学校に通うことなどは無理なのです。このよう -な貧しい子供たちを助けるために資金援助制度が設けられました。子供は経済的に養子 -になるのです。KCC は、月に数ドルのお金で、子供たちに必要なもの、健康や学校に通 -うことなどを手配します。また KCC はその他にも、子供とその世話をしている家族が -必要とするものの面倒を見ています。 - -子供を直接援助するほかに、子供が育つ環境を改善する必要があります。KCC は学校の -教育方法が改善されるよう援助を行っています。センターには実地教育をする学校 -(demonstration school) があり、教師を指導しています。保健に従事する人の育成も -されており、衛生教育も行われています。そして、各家庭が適切なトイレを作れるよう -に支援しています。私はセメントの厚い板を作る現場を設立する手伝いをしました。そ -の板はよいトイレを作るのに使われ、そしてコスト以下の値段で売られています。 - -プロジェクトには小さな診療所があり、子供たちとその家族が医療を受けられるように -しています。そして必要があれば病院へ移ることを申し出ます。病気の予防プログラム -が実行されており、伝染病 (風疹とコレラは悩みの種です) が発生した場合は援助が行 -われます。 - - *donate* -私は1994年の夏から1995年の夏までの丸1年間をボランティアとしてセンターで過ごし -ました。センターを拡大するための手助けを行い、そして飲料水の改善を行う地区と衛 -生設備の改善を行う地区で働いていました。そして KCC が提供している援助が本当に -役に立っていることを学んできました。オランダへ戻ったとき、KCC のサポートを続け -たいと思いました。それを実行するために私は基金を設立し、そしてスポンサーシップ・ -プログラムを組織化しました。次のどれかが可能かどうか検討してみてください: - -1. 1人の小学生のスポンサーになる: 月に17ユーロ(か、もっと) -2. 1人の中学生のスポンサーになる: 月に25ユーロ(か、もっと) -3. 診療所のスポンサーになる: 月もしくは4半期ごとにいくらでも -4. 1度に限定した寄付(A one-time donation) - -他の組織に比べると子供のスポンサーシップの料金はかなり低いです。これはお金が直 -接センターに届くようになっているからです。5%以下しか運営には使われていません。 -それが可能なのはこの組織が小さく、そしてボランティアで運営されているからです。 -子供のスポンサーになるのなら、少なくとも1年は続ける心構えを持ってください。 - -しかしお金が適切に使われていることを信用できるでしょうか? まず、私は Vim の作 -者として個人的に信用されています。そして私はセンターで働いている人々を信用して -いますし、彼らを個人的に知ってもいます。さらには、このセンターはかつては World -Vision と Save the Children Fund によって共同運営・監督され、今は Pacific -Academy Outreach Society の監督下にあります。センターは約 1 年に 1 回は視察を -受けて進行をチェックしてもらっています (自費で)。私自身 1993 年から何度も視察 -をしています。ICCF のウェブサイトに視察レポートがあります。 - -もし他に質問がありましたら、私にメールを送ってください: <Bram@vim.org> - -センターの住所: - Kibaale Children's Centre - p.o. box 1658 - Masaka, Uganda, East Africa - -送金: *iccf-donations* - -最新の情報はICCFのウェブサイトをご覧ください。ICCFのURLは|iccf|をご覧ください。 - -アメリカ: 下記で説明する方法が使えます。 - 残念ながら、Nehemiah Group Outreach Society (NGOS) に小切手を - 送る方法はもう使えません。 - 国税庁 (IRS) の税領収書を得られる他の方法を今探しています。 - 子供のスポンサーになるにはカナダの KCF (下記参照) に連絡して - ください。銀行の手数料を節約するため、アメリカの小切手を彼らに - 送ることができます。 - -カナダ: カナダのSurreyにあるKibaale Children's Fund(KCF)に連絡してくだ - さい。彼らはKibaaleの子供たちのために、カナダのスポンサーを世 - 話しています。KCF が集めたお金は100%、ウガンダのプロジェクトに - 送金されます。1度に限定した寄付の場合は、そこに直接送ることが - できます。Vimによってどのくらい寄付されているか知りたいので、 - よろしければ、送金したことを私に知らせてください。スポンサー - シップについては KCF に尋ねてください。 - Kibaale Children's Fund c/o Pacific Academy - 10238-168 Street - Surrey, B.C. V4N 1Z4International Child Care Fund - Phone: 604-581-5353 - Kibaale Children's Fund (KCF) に寄付をすると、税領収書を受け取 - れるので、確定申告で提出できます。 - -オランダ: Lisse の "Stichting ICCF Holland" の口座に振り替えてください。 - オランダ在住の方は税金が控除されます。 - Postbank, nr. 4548774 - -ドイツ: 寄付により、確定申告で税金が控除されます。 - 最新の情報は ICCF のウェブサイトを御覧下さい: - http://iccf-holland.org/germany.html - -ワールド: 郵便為替を使ってください。ほとんどの国で、たいていは郵便局か - ら送れます。この名前を使ってください (これは私のパスポートの - ものです): "Abraham Moolenaar"。可能なら通貨はユーロにしてく - ださい。 - -ヨーロッパ: 可能なら銀行振り込みを使ってください。あなたの銀行はそのための - 方法を用意しているはずです。swift codeとIBAN numberは下記の"そ - の他"の項を参照してください。 - 他の方法も使えると思います。スポンサーシップについてはお問い合 - わせください。 - -クレジットカード: クレジットカードでの送金には PayPal が使えます。これはイン - ターネットでの決算で最も広く使われているシステムです。これは本 - 当に簡単です。詳細はこのリンク先を見てください: - https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q - 送金のための e-mail アドレスは: - Bram@iccf-holland.org - 400 ユーロ (500ドル) より大きな送金は、小切手で送るようにして - ください。 - -その他: 可能であれば次のうちのどれかの口座に振り替えてください: - Postbank, account 4548774 - Swift code: INGB NL 2A - IBAN: NL47 PSTB 0004 5487 74 - under the name "stichting ICCF Holland", Lisse - これがうまく行かなければ: - Rabobank Lisse, account 3765.05.117 - Swift code: RABO NL 2U - under the name "Bram Moolenaar", Lisse - それ以外は、ユーロか US ドルの小切手を下記の住所に送ってくださ - い。最小の金額は 70 ドルです(私が利用している銀行はそれ以下の - 海外からの小切手は受け付けないのです、ごめんなさい)。 - - -小切手の送り先: - stichting ICCF Holland - Bram Moolenaar - Finsterruetihof 1 - 8134 Adliswil - Switzerland - -この住所はとうぶん先まで使えると思います。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/undo.jax b/doc/undo.jax deleted file mode 100644 index c0b995bc7..000000000 --- a/doc/undo.jax +++ /dev/null @@ -1,400 +0,0 @@ -*undo.txt* For Vim バージョン 7.3. Last change: 2010 Dec 19 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -undo と redo *undo-redo* - -基本的なことは |02.5| で説明されています。 - -1. undo と redo のコマンド |undo-commands| -2. Undo の二つの方式 |undo-two-ways| -3. Undo ブロック |undo-blocks| -4. Undo ブランチ |undo-branches| -5. Undo の永続化 |undo-persistence| -6. 備考 |undo-remarks| - -============================================================================== -1. undo と redo のコマンド *undo-commands* - -<Undo> or *undo* *<Undo>* *u* -u [count] 個の変更を元に戻す。 {Vi は 1 レベルだけ} - - *:u* *:un* *:undo* -:u[ndo] 一つの変更を元に戻す。 {Vi は 1 レベルだけ} - - *E830* -:u[ndo] {N} 変更番号 {N} の直後にジャンプする。{N} の意味について - は |undo-branches| を参照。 {Vi にはない} - - *CTRL-R* -CTRL-R undo された変更を [count] 個やり直す (redoする)。 - {Vi ではこのキーはスクリーンの再描画} - - *:red* *:redo* *redo* -:red[o] undo された変更を一つやり直す。 {Vi: redo はない} - - *U* -U 最近実行された、一つの行の中でのすべての変更を元に戻 - す。 {Vi では行から移動すると使えない} - -変更は記録されます。上記の undo コマンドや redo コマンドを使うと、それぞれの変 -更が加えられる前のテキストに戻したり、変更を元に戻した後でその変更を再び加える -ことができます。 - -"U" コマンドは他のコマンドと同様に undo/redo の対象となります。つまり、"u" コ -マンドで "U" コマンドを undo したり、'CTRL-R' コマンドでそれを redo したりでき -ます。"U" と "u" と 'CTRL-R' を混ぜて使うと、"U" コマンドが直前の "U" コマンド -以前の状態を復元することに気付くでしょう。この動作はわかりにくいかもしれません -が、練習して慣れてください。 -"U" コマンドはバッファを変更有りの状態にします。つまり、"U" コマンドで変更が加 -えられる前のテキストに戻しても、それは変更有りの状態として認識されます。"u" を -使って変更無しの状態まで undo してください。 - -============================================================================== -2. undo の二つの方式 *undo-two-ways* - -undo コマンドと redo コマンドの動作は 'cpoptions' の 'u' フラグに依存していま -す。Vim 方式 ('u'がない場合) と Vi 互換方式 ('u'がある場合) があります。Vim 方 -式では "uu" は二つの変更を undo します。Vi 互換方式では "uu" は何もしません -(undo を undo する)。 - -'u' がない場合。Vim 方式: -undo コマンドで過去に戻れます。そして、redo コマンドで再び先に進むことができま -す。undo コマンドを実行した後で新しい変更を加えると、redo はできなくなります。 - -'u' がある場合。Vi 互換方式: -undo コマンドは直前の変更と undo コマンドを undo します。redo コマンドは直前の -undo コマンドを繰り返します。変更コマンドが繰り返されるわけではないので、そう -したい場合は "." を使ってください。 - -例 Vim 方式 Vi 互換方式 ~ -"uu" 2回 undo 変更なし -"u CTRL-R" 変更なし 2回 undo - -理由: Nvi では CTRL-R の代わりに "." コマンドを使います。あいにくこれは - Vi 互換ではありません。例えば、"dwdwu." は Vi では二つの単語が削除 - されますが、Nvi ではなにも変更されません。 - -============================================================================== -3. Undo ブロック *undo-blocks* - -undo コマンドは普通は一つのコマンドを undo します。そのコマンドがいくつの変更 -を加えるかは関係ありません。この undo 可能な変更の組が undo ブロックです。例え -ば、キーの入力によって関数が呼ばれた場合、その関数内のすべてのコマンドは一緒に -undo されます。 - -関数やスクリプトを作るとき、undo 可能な変更を新しく追加するのではなく、その変 -更を直前の変更につなげたい場合は、次のコマンドを使ってください: - - *:undoj* *:undojoin* *E790* -:undoj[oin] 以降の変更を直前の undo ブロックにつなげる。 - 警告: 注意して使ってください。ユーザーが適切に変更を - undo するのを妨げてしまうかもしれません。undo や redo - の後でこのコマンドを使わないでください。 - {Vi にはない} - -これは特に変更の途中でプロンプトを表示するような場合に便利です。例えば関数の中 -で |getchar()| を呼び出すなど。変更をつなげてしかるべき関連性のある変更がそこ -にあることがわかっている場合に使ってください。 - -このコマンドは単独では機能しません。なぜなら、次のキー入力によって再び新しい変 -更が開始されるからです。しかし例えば次のように使うことはできます: > - - :undojoin | delete - -この後で "u" コマンドを実行すると delete コマンドとその直前の変更が undo され -ます。 - -反対の動作、つまり変更を二つの undo ブロックに分けるには、インサートモードで -CTRL-G u を使います。インサートコマンドを部分ごと (例えば文単位) に undo でき -るようにしたい場合に便利です。 |i_CTRL-G_u| -'undolevels' の値を設定したときも undo は区切られます。新しい値と古い値が同じ -でもそうなります。 - -============================================================================== -4. Undo ブランチ *undo-branches* *undo-tree* - -ここまでは一線上の undo/redo について説明してきました。しかし、それを枝分かれ -させることもできます。枝分かれは、変更を undo してから新しい変更を加えることで -起こります。undo された変更は枝 (ブランチ) になります。以下のコマンドで枝に移 -動できます。 - -ユーザーマニュアルに説明があります: |usr_32.txt|. - - *:undol* *:undolist* -:undol[ist] 変更木 (tree) の、葉 (leaf) を一覧表示する。例: - number changes when saved ~ - 88 88 2010/01/04 14:25:53 - 108 107 08/07 12:47:51 - 136 46 13:33:01 7 - 166 164 3 seconds ago - - "number" 列は変更番号です。この番号は連続的に増えてい - き、undo 可能な変更の識別番号として使えます。 |:undo| - 参照。 - "changes" 列は木のルートから葉までの変更の数です。 - "when" 列は変更が加えられた日付と時刻です。日時の表記 - は 4 種類あります: - N seconds ago 秒前 - HH:MM:SS 時:分:秒 - MM/DD HH:MM:SS 月/日 時:分:秒 - YYYY/MM/DD HH:MM:SS 年/月/日 時:分:秒 - "saved" 列は変更がディスクに保存されたかどうか、そして - それがどの書き込みだったかを示します。この番号は - |:later| コマンドと |:earlier| コマンドで使用できま - す。 - 詳細を取得するには |undotree()| 関数を使います。 - - *g-* -g- 古いテキスト状態に移動する。カウント指定で繰り返し回数 - を指定できます。 {Vi にはない} - *:ea* *:earlier* -:earlier {count} {count} 回前の古いテキスト状態に移動する。 -:earlier {N}s {N} 秒前の古いテキスト状態に移動する。 -:earlier {N}m {N} 分前の古いテキスト状態に移動する。 -:earlier {N}h {N} 時間前の古いテキスト状態に移動する。 -:earlier {N}d {N} 日前の古いテキスト状態に移動する。 - -:earlier {N}f {N} 回前のファイルを保存したときのテキスト状態に移動す - る。 - 最後の保存から何か変更が加えられていたとき、":earlier - 1f" は保存時の状態に移動します。変更がない場合は一つ前 - の保存時の状態に移動します。 - 最初にファイルを保存した直後か、ファイルをまだ保存して - いないときは、":earlier 1f" は最初の変更の前に移動しま - す。 - - *g+* -g+ 新しいテキスト状態に移動する。カウント指定で繰り返し回 - 数を指定できます。 {Vi にはない} - *:lat* *:later* -:later {count} {count} 回後の新しいテキスト状態に移動する。 -:later {N}s {N} 秒後の新しいテキスト状態に移動する。 -:later {N}m {N} 分後の新しいテキスト状態に移動する。 -:later {N}h {N} 時間後の新しいテキスト状態に移動する。 -:later {N}d {N} 日後の新しいテキスト状態に移動する。 - -:later {N}f {N} 回後のファイルを保存したときのテキスト状態に移動す - る。 - 最後に保存した状態にいるときは、":later 1f" は一番新し - いテキスト状態に移動します。 - - -Note: テキスト状態は、'undolevels' により undo 情報がクリアされると、到達不可 -能になります。 - -時間を移動すると一度に複数の変更が現れることもあります。これは undo ツリーを移 -動して新しい変更を加えたときに起こります。 - -例 - -次のテキストがあります: - one two three ~ - -"x" を 3 回押して最初の単語を削除します: - ne two three ~ - e two three ~ - two three ~ - -"u" を 3 回押してそれを undo します: - e two three ~ - ne two three ~ - one two three ~ - -"x" を 3 回押して二番目の単語を削除します: - one wo three ~ - one o three ~ - one three ~ - -"g-" を 3 回押してそれを undo します: - one o three ~ - one wo three ~ - two three ~ - -最初の undo ブランチ ("one" を削除した後) に戻りました。さらに "g-" を押してい -くと元のテキストに戻ります: - e two three ~ - ne two three ~ - one two three ~ - -":later 1h" を実行すると最後の変更にジャンプします: - one three ~ - -":earlier 1h" を実行すると最初に戻ります: - one two three ~ - - -Note: "u" と CTRL-R では "g-" と "g+" のようにすべてのテキスト状態に移動するこ -とはできません。 - -============================================================================== -5. Undo の永続化 (Undo persistence) *undo-persistence* *persistent-undo* - -バッファがアンロードされるとき、通常はバッファの undo ツリーは廃棄されます。 -'undofile' オプションを設定することで、ファイルを書き込んだときに自動的に undo -履歴が保存され、後でファイルを開いたときに undo 履歴が復元されます。 - -'undofile' オプションはファイルを書き込んだ後、BufWritePost 自動コマンドの前に -参照されます。undo 情報の保存をファイルごとに制御したい場合は BufWritePre 自動 -コマンドを使います: > - au BufWritePre /tmp/* setlocal noundofile - -undo ツリーは undo ファイルとして分けて保存されます。undo ファイルは編集ファイ -ルごとに作られます。保存場所の決定にはファイルシステムのパスをそのまま使用した -簡単な方法が使われます。Vim は編集ファイルと undo ファイルの同期がとれているか -どうかを確認し (ファイルの中身のハッシュ値で判断)、undo ファイルが書き込まれた -後で編集ファイルが変更されていたときは、データの損失を防ぐため、undo ファイル -を無視します。開いているファイルと undo ファイルの所有者が違うときも undo ファ -イルは無視されます。この事についてのメッセージを表示させるには 'verbose' を設 -定してください。 - -通常、undo ファイルは編集ファイルと同じディレクトリに保存されます。この動作は -'undodir' オプションで変更できます。 - -ファイルが暗号化されているときは、undo ファイル内のテキストも暗号化されます。 -ファイルと同じ暗号化メソッドとキーが使用されます。 |encryption| - -":wundo" と ":rundo" を使うことで undo 履歴の保存と復元を手動で実行することも -できます。 - *:wundo* *:rundo* -:wundo[!] {file} - undo 履歴を {file} に保存する。 - {file} が存在し、それが undo ファイルでないなら (ファイル先頭 - のマジックナンバーが違うなら)、コマンドは失敗します。それでも - 保存したい場合は ! を付けてください。 - {file} が存在し、それが undo ファイルなら上書きされます。 - {Vi にはない} - -:rundo {file} {file} から undo 履歴を読み込む。 - {Vi にはない} - -自動コマンドを使うことで undo ファイルの名前を明示的に指定することができます。 -例: > - - au BufReadPost * call ReadUndo() - au BufWritePost * call WriteUndo() - func ReadUndo() - if filereadable(expand('%:h'). '/UNDO/' . expand('%:t')) - rundo %:h/UNDO/%:t - endif - endfunc - func WriteUndo() - let dirname = expand('%:h') . '/UNDO' - if !isdirectory(dirname) - call mkdir(dirname) - endif - wundo %:h/UNDO/%:t - endfunc - -これを使うときは 'undofile' をオフにしておく必要があります。そうしないと二つの -undo ファイルが作成されてしまいます。 - -|undofile()| 関数を使うと、Vim が使用する undo ファイルの名前を取得できます。 - -Note: 'undofile' が設定された状態でファイルを読み書きするとき、ほとんどのエ -ラーは表示されません ('verbose' が設定されていなければ)。:wundo と :rundo を使 -うときはより多くのエラーメッセージが表示されます。例えばファイルが読めない、書 -き込めないとき。 - -Note: Vim は undo ファイルを削除しません。自分で削除する必要があります。 - -undo ファイルの読み込みが失敗する原因はいくつかあります: -*E822* パーミッションの設定によりファイルを開けない。 -*E823* ファイル先頭のマジックナンバーが違う。普通はそのファイルが undo ファイ - ルでないことを意味します。 -*E824* undo ファイルのバージョン番号が、それが Vim の新しいバージョンで書き込 - まれたことを示している。新しいバージョンで開く必要があります。undo - ファイルの情報を維持したいならそのバッファを保存してはいけません。 -"ファイルが変更されています。undo 情報を使用できません" -("File contents changed, cannot use undo info") - ファイルのテキストが undo ファイルを保存したときから変わっています。テ - キストが壊れてしまうため、その undo ファイルは使用できません。これは - 'encoding' の設定が undo ファイル保存時と違う場合にも起こります。 -*E825* undo ファイルの中身が不正なので使用できません。 -*E826* undo ファイルが暗号化されていて、復号に失敗しました。 -*E827* undo ファイルが暗号化されていて、使用中の Vim が暗号化をサポートしてい - ません。他の Vim でファイルを開いてください。 -*E832* undo ファイルが暗号化されていて、'key' が設定されておらず、テキスト - ファイルは暗号化されていません。これはテキストファイルが暗号化を使用し - て保存された後で、暗号化を使用しないで上書きされた場合に起こります。 - おそらく undo ファイルを削除する必要があります。 -"undo ファイルを読み込めません。所有者が違います" -("Not reading undo file, owner differs") - undo ファイルの所有者とテキストファイルの所有者が違います。安全のため - undo ファイルは使用されません。 - -undo ファイルの書き込みは次のような理由で失敗することがあります: -*E828* 書き込みのためのファイルを作成できません。おそらくディレクトリの書き込 - み権限がありません。 -"'undodir' で指定されたディレクトリに undo ファイルを保存できません" -("Cannot write undo file in any directory in 'undodir'") - 'undodir' で指定されたディレクトリの中に使用可能なものがありません。 -"undo ファイルを上書きしません。読み込み不可です" -("Will not overwrite with undo file, cannot read") - undo ファイルと同じ名前のファイルが存在し、それが読み込みできない状態 - になっています。そのファイルを削除するか名前を変更する必要があります。 -"上書きしません。undo ファイルではありません" -("Will not overwrite, this is not an undo file") - undo ファイルと同じ名前のファイルが存在し、そのファイルの先頭に正しい - マジックナンバーがありません。そのファイルを削除するか名前を変更する必 - 要があります。 -"undo ファイルの書き込みをスキップします。undo がありません" -("Skipping undo file write, noting to undo") - 保存する undo 情報がありません。なにも変更されていないか 'undolevels' - がマイナス値です。 -*E829* undo ファイルの保存中にエラーが発生しました。もう一度試してみてくださ - い。 - -============================================================================== -6. 備考 *undo-remarks* - -記録される変更の数は 'undolevels' オプションで設定できます。ゼロに設定すると、 -Vi 互換方式の動作になります。マイナスの値に設定すると undo は使用できなくなり -ます。メモリが足りない場合に設定してください。 - - *clear-undo* -'undolevels' を -1 に設定しても、undo 情報はすぐにはクリアされません。次の変更 -が加えられたときにクリアされます。強制的に undo 情報をクリアしたいときは次のコ -マンドを使ってください: > - :let old_undolevels = &undolevels - :set undolevels=-1 - :exe "normal a \<BS>\<Esc>" - :let &undolevels = old_undolevels - :unlet old_undolevels - -バッファのマーク ('a から 'z) はテキストと同様に記録、復元されます。 -{Vi とは少し動作が違います} - -すべての変更を undo したとき、バッファは変更ありとはみなされません。その状態か -らは ":q" (":q!"ではなく) で Vim を終了できます {Vi にはない}。Note: これはい -つファイルを保存したかに関係します。":w" の後で "u" を実行すると、保存したとき -から見てバッファは変更された状態なので、バッファは変更ありと認識されます。 - -マニュアル設定の折り畳み (|folding|) を使っているとき、折り畳みは記録も復元も -されません。変更が折り畳みの中だけで行われた場合のみ (折り畳みの最初と最後の行 -が変わらないので) 折り畳みは維持されます。 - -番号レジスタを使って削除を元に戻すこともできます。テキストを削除すると、それは -"1 レジスタに記録されます。元々 "1 にあったものは "2 にシフトされ、他の番号レ -ジスタも同様にシフトされます。"9 レジスタの内容は失われます。そして、プットコ -マンド '"1P' を使って削除されたテキストを元に戻すことができます。(削除やコピー -の操作をした後ならテキストは無名レジスタに入っているので 'P' や 'p' でも元に戻 -せます)。三回前に削除されたテキストなら '"3P' で戻せます。 - - *redo-register* -数回に分けて削除されたテキストを戻したい場合は、"." コマンドの特殊な機能が役に -立ちます。"." コマンドは使用されたレジスタの番号を増加させます。例えば、""1P" -を実行した後で "." を押すと '"2P' が実行されます。さらに "." を押していくとす -べての番号レジスタが挿入されます。 - -例: 'dd....' でテキストを削除したら '"1P....' で元に戻せる。 - -削除されたテキストがどのレジスタに記録されているかわからないときは :display コ -マンドで確認できます。あるいは、'"1P' を実行してみて、もしそれが違うものなら -'u.' を実行します。'u.' は最初にプットされたテキストを削除し、二番目のレジスタ -を使ってプットコマンドを実行します。目的のものが出るまで 'u.' を繰り返してくだ -さい。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_01.jax b/doc/usr_01.jax deleted file mode 100644 index 25e86adce..000000000 --- a/doc/usr_01.jax +++ /dev/null @@ -1,192 +0,0 @@ -*usr_01.txt* For Vim バージョン 7.3. Last change: 2010 Nov 03 - - VIM USER MANUAL - by Bram Moolenaar - - マニュアルについて - - -この章では、Vim のマニュアルを紹介します。著作権についてもお読み下さい。 - -|01.1| 二つのマニュアル -|01.2| Vim の準備 -|01.3| チュートリアル -|01.4| 著作権 (copyright) - -次章: |usr_02.txt| 初めての Vim -目次: |usr_toc.txt| - -============================================================================== -*01.1* 二つのマニュアル - -Vim のマニュアルは二部構成になっています。 - -1. ユーザーマニュアル - 簡単なものから複雑なものまで、具体的な例を使って説明しています。本のよう - に最初から順を追って読んでください。 - -2. リファレンスマニュアル - Vim がどのように動作するかを詳しく説明しています。 - -マニュアルの表記方法については |notation| をご覧ください。 - - -他のトピックへのジャンプ ------------------------- -二つのマニュアルにはハイパーリンクが張ってあります。編集手順の説明とコマンドや -オプションの詳しい説明とを素早く行き来できます。次のコマンドを使ってください。 - - CTRL-] : カーソル位置の項目にジャンプする。 - CTRL-O : ジャンプ先から戻る。 - -リンクは |bars| のように縦線 (vertical bar) で囲まれています。縦線は隠れている -か非表示になっているかもしれません (下記参照)。オプション名は 'number' のよう -にアポストロフィで、コマンドは ":write" のように引用符で囲まれています。普通の -単語もリンクとして使えます。試しに、カーソルを CTRL-] の上に動かして CTRL-] を -押してみてください。 - -":help" コマンドでヘルプの目次を表示できます。|help.txt|をご覧ください。 - -縦線とスターは通常は |conceal| 機能によって隠されています。さらに、|hl-Ignore| -が使用され、背景色と同じ色が設定されています。次のコマンドでそれらを表示するこ -とができます: > - :set conceallevel=0 - :hi link HelpBar Normal - :hi link HelpStar Normal - -============================================================================== -*01.2* Vim の準備 - -マニュアルの大部分は Vim が正しくインストールされていることを前提にしていま -す。まだインストールしていなかったり、うまく動いていない(ファイルが見つからな -い、GUI でメニューが出ないなどの)場合は、インストールの章 |usr_90.txt| を読ん -でください。 - *not-compatible* -このマニュアルでは「vi互換スイッチ('compatible')」がオフになっていることを前提 -にしています。ほとんどのコマンドは互換スイッチの影響を受けませんが、例えば、複 -数回アンドゥなどの機能を使うときは設定が重要になります。正しく設定されているこ -とを確実にするには、サンプル設定ファイルをコピーするのが簡単です。Vim の中から -コピーを実行するなら、サンプル設定ファイルの場所を探す必要はありません。コピー -の方法はシステムによって違います: - -Unix: > - :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc -MS-DOS, MS-Windows, OS/2: > - :!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc -Amiga: > - :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc - -vimrc ファイルが既にある場合はコピーする必要はないかもしれません。 - -Vim を起動すると、オプション 'compatible' はオフになっているはずです。次のコマ -ンドで現在の設定を確認できます: > - - :set compatible? - -"nocompatible" と表示されればオフになっています。"compatible" と表示された場合 -は正しく設定されていません。オプションがオンになっている理由を確認してくださ -い。もしかしたら、先程保存した設定ファイルが読み込まれていないのかもしれませ -ん。次のコマンドで確認してください: > - - :scriptnames - -ファイルが一覧に無い場合は、vimrc ファイルの名前と場所を確認してください。一覧 -に入っている場合は、他のファイルによって 'compatible' がオンに設定されているは -ずです。 - -詳しくは|vimrc|と|compatible-default|をご覧ください。 - - Note: - このマニュアルはVimを普通に使うための説明書です。実は evim(=easy vim) - という別の Vim があります。これも Vim なのですが、メモ帳 のように - 「クリック & 入力」方式であったり、常に挿入モードあったり、普通の Vim - とはかなり雰囲気が違います。このユーザーマニュアルでは evim について説 - 明していません。操作方法は使えばわかるはずです。 - 詳しいことは |evim-keys| をご覧ください。 - -============================================================================== -*01.3* チュートリアル *tutor* *vimtutor* - -テキストを読むだけではなく (退屈だし!) チュートリアルを使って Vim の初歩を学ぶ -ことができます。vimtutor は 30 分の演習コースです。実際に操作しながら Vim の最 -低限の操作方法を習得できます。 - -Unix では、Vim が適切にインストールしてあれば、シェルから起動できます: > - - vimtutor - -MS-Windows では、スタートメニューの Program/Vim から起動できます。あるいは、 -$VIMRUNTIME ディレクトリにある vimtutor.bat を実行してください。 - -演習ファイルのコピーが作られるので、テキストを編集してもオリジナルの演習ファイ -ルを壊してしまう心配はありません。 -チュートリアルはいくつかの言語に翻訳されています。翻訳されたチュートリアルを使 -うには、二文字の言語コードを指定します。日本語の場合は次のようにします: > - - vimtutor ja - -Unix で GUI 版の Vim を使いたい場合は、"gvimtutor" か "vimtutor -g" を実行して -ください。 - -OpenVMS では、VMS プロンプトから次のようにして起動できます。 > - - @VIM:vimtutor - -上の例と同じようにオプションで二文字の言語コードを指定できます。 - - -Unix 以外のシステムでは、多少の作業が必要です。 - -1. 演習用ファイルをコピーします。これは Vim を使ってコピーできます(Vim はファ - イルの場所を知っている): -> - vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' -< -"TUTORCOPY" というファイルがカレントディレクトリに作成されます。翻訳された演習 -ファイルを使うには、二文字の言語コードを指定します。日本語の場合は次のようにし -ます: -> - vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.ja' -c 'w! TUTORCOPY' -c 'q' -< -2. コピーしたファイルを Vim で開きます: -> - vim -u NONE -c "set nocp" TUTORCOPY -< -指定している引数によって Vim がイイ感じで起動されます。 - -3. 練習が終わったら、コピーしたファイルを削除します: -> - del TUTORCOPY -< -============================================================================== -*01.4* 著作権 (Copyright) *manual-copyright* - -Vim のユーザマニュアルとリファレンスマニュアルの著作権は以下の通りです。 - Copyright (c) 1988-2003 by Bram Moolenaar -Open Publication License, v1.0 以降の条件に従って配布することができます。ライ -センスの最新バージョンは次の場所から入手できます: - http://www.opencontent.org/openpub/ - -マニュアルに貢献する人は上記の著作権通達に同意しなければなりません。 - - *frombook* -ユーザマニュアルの一部は "Vi IMproved - VIM" から取られたものです。 - "Vi IMproved - Vim" Steve Oualline著 - (出版:New Riders Publishing, ISBN: 0735710015) -この本には Open Publication License が適用されています。必要な部分のみコピー -し、変更を加えています (図を削除したり、Vim 6.0 以降のために更新したり、間違い -を訂正したり)。|frombook|タグが省略されていたとしても、この本からコピーしたこ -とを否定するものではありません。 - -この本を OPL で出版してくださった Steve Oualline 氏と New Riders に深く感謝し -ます。ユーザマニュアルの執筆においてとても助けられました。文章を提供してもらっ -ただけでなく、スタイルや文体も参考にさせていただきました。 - -このマニュアルの販売で収益を上げた方は、利益の一部を寄付してくださるようお願い -します。ウガンダのエイズ患者を助けてあげてください。詳しくは|iccf|をご覧くださ -い。 - -============================================================================== - -次章: |usr_02.txt| 初めての Vim - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_02.jax b/doc/usr_02.jax deleted file mode 100644 index 1f4abebe9..000000000 --- a/doc/usr_02.jax +++ /dev/null @@ -1,555 +0,0 @@ -*usr_02.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - 初めての Vim - - -この章では、Vim を使ってファイルを編集するための最低限のことを説明します。操作 -が下手でも遅くても、とにかく編集できるようになりましょう。この章に出てくるコマ -ンドはこれからの基礎になるものなので、少し時間をとって練習してください。 - -|02.1| Vim の起動方法 -|02.2| 文字の挿入 -|02.3| カーソル移動 -|02.4| 文字の削除 -|02.5| undo (取り消し) と redo (やり直し) -|02.6| 他の編集コマンド -|02.7| Vim の終了 -|02.8| ヘルプの引き方 - -次章: |usr_03.txt| カーソルの移動 -前章: |usr_01.txt| マニュアルについて -目次: |usr_toc.txt| - -============================================================================== -*02.1* Vim の起動方法 - -Vim を起動するには次のコマンドを入力します。 > - - gvim file.txt - -UNIXならコマンドプロンプトから実行できます。Microsoft Windows環境では、MS-DOS -プロンプトを開いて、入力してください。 -Vim が起動して file.txt という名前のファイルの編集が開始されます。これは新しい -ファイルなので、ウィンドウは空になっています。次のような画面が表示されます: - - +---------------------------------------+ - |# | - |~ | - |~ | - |~ | - |~ | - |"file.txt" [New file] | - +---------------------------------------+ - ("#" はカーソルの位置です) - -ティルド(~)の行は、ファイルにその行がないことを示しています。ファイルの -末尾より後ろを表示する場合にティルドが表示されます。画面の下の方に、編集中の -ファイル名は "file.txt" で、それが新しいファイルであることが表示されています。 -このメッセージの表示は一時的なもので、他のメッセージが表示されると消えてしまい -ます。 - - -VIM コマンド ------------- - -gvim は編集用のウィンドウを新しく作ります。次のコマンドを使った場合は: > - - vim file.txt - -コマンドウィンドウの中で編集できます。つまり、xterm の中で実行すれば、Vim は -xterm ウィンドウを使います。Microsoft Windows の MS-DOS プロンプトを使っている -場合も、そのウィンドウの中で編集できます。gvim でも vim でもテキストは同じよう -に表示されますが、gvimにはメニューバーなどの追加機能があります。詳しくは後で述 -べます。 - -============================================================================== -*02.2* 文字の挿入 - -Vim はモード型エディタです。モードによって挙動が変わります。一番よく使うモード -は「ノーマルモード」と「挿入モード」です。ノーマルモードでは、入力した文字は -コマンドとして扱われます。挿入モードでは、入力した文字はそのまま挿入されます。 -Vim を起動した直後はノーマルモードになっています。挿入モードに入るには、"i" コ -マンドを入力します (i は Insert の意)。これで、文章を入力できるようになります。 -入力した文章はファイルに挿入されます。入力を間違えても心配する必要はありませ -ん。後から修正できます。プログラマーのリメリック(詩の一種)を入力して見ましょ -う。次のように入力します: > - - iA very intelligent turtle - Found programming UNIX a hurdle - -"turtle" を入力した後で <Enter> キーを押して改行します。最後に <Esc> キーを押 -して挿入モードを終了し、ノーマルモードに戻ります。このとき、Vim ウィンドウには -次のような二行が表示されています。 - - +---------------------------------------+ - |A very intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - | | - +---------------------------------------+ - - -今は何モード? -------------- - -現在のモードを確認できるようにするには、次のコマンドを入力してください。 > - - :set showmode - -":" (コロン記号) を入力すると、カーソルがウィンドウの最下段に移動します。ここ -はコロンコマンド (":"で始まるコマンド) を入力する場所です。<Enter> キーを押す -とコマンドが実行されます (コロンで始まるコマンドは全てこの方法を使います)。 -さて、"i" コマンドを入力すると、ウィンドウの最下段に "― 挿入 ―" という表示が -現れます。これは、あなたが挿入モードにいることを示しています。 - - - +---------------------------------------+ - |A very intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - |― 挿入 ― | - +---------------------------------------+ - -<Esc> を押すとノーマルモードに戻り、最下段は空白になります。 - - -トラブルを避ける ----------------- - -Vim を使い始めたときはモードを混同しがちです。現在のモードを忘れてしまったり、 -知らないうちに間違ってモードを変更してしまったりすることがあります。どのモード -にいる場合でも <Esc> を押せばノーマルモードに戻れます。<Esc> を二回押さなけれ -ばならないときもあります。ノーマルモードで <Esc> を押すとビープ音が鳴るので、 -その場合は既にノーマルモードにいるということです。 - -============================================================================== -*02.3* カーソル移動 - -ノーマルモードでは、次のキーを使って移動できます: - - h 左 *hjkl* - j 下 - k 上 - l 右 - -最初はでたらめなコマンドに思えるかもしれません。"l" キーで 右 (right) に移動す -るなんておかしいですね。しかしこれには合理的な理由があります。エディタで最もよ -く使うのはカーソル移動であり、これらのキーは右手のホームポジションにあるので -す。つまり、(特に 10 本の指を使ってタイプする人が) 最も速く打てる場所にコマン -ドが配置されています。 - - Note: - カーソルは矢印キーでも移動できます。しかし、ホームポジションから手を離 - さなければならないので、編集速度は落ちてしまいます。一時間に数百回も移 - 動することを考えると、結構な時間が消費されることになります。 - また、矢印キーが無いキーボードや、矢印キーの配置場所がおかしいキーボー - ドもあります。hjkl の使い方を知っていれば、そのような場合でも安心です。 - -コマンドを覚えるには、"h" は左にあって、"l" は右にあって、"j" は下を指してい -る、とでも覚えてください。図で示します: > - - k - h l - j - -移動コマンドを覚える一番の方法は使ってみることです。"i" コマンドを使って適当な -テキストを入力し、hjkl キーを使って動き回り、いろんな場所に文字を挿入してみて -ください。<Esc> キーを押してノーマルモードに戻るのを忘れずに。|vimtutor| を使っ -て練習してみるのもいいでしょう。 - -日本のユーザーへ、Hiroshi Iwataniさんは次のような提案をしています。 - - Komsomolsk - ^ - | - Huan Ho <--- ---> Los Angeles - (Yellow river) | - v - Java (ジャワ島。プログラミング言語のあれではない) - -============================================================================== -*02.4* 文字の削除 - -文字を削除したい場合は、文字の上にカーソルを移動して "x" を押します。(これはタ -イプライタを使っていた古い時代に、消したい文字の上に "xxxxxx" と印字していたの -と同じ感覚です)。例えば、例文の一行目にカーソルを移動して、xxxxxxx (xを7つ) 打 -ち、"A very " を消してみましょう。その結果は次のようになります: - - +---------------------------------------+ - |intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - | | - +---------------------------------------+ - -さて、新しいテキストを挿入してみましょう。例えば次のように入力します: > - - iA young <Esc> - -"i" で挿入を開始し、"A young " を入力しています。最後に <Esc> キーを押して挿入 -モードを抜けます。結果は次のようになります。 - - +---------------------------------------+ - |A young intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - | | - +---------------------------------------+ - - -行削除 ------- - -行全体を消すには "dd" コマンドを使います。行が消された場所は、それ以降の行を上 -げることで詰められます。 - - +---------------------------------------+ - |Found programming UNIX a hurdle | - |~ | - |~ | - |~ | - | | - +---------------------------------------+ - - -改行を取る ----------- - -Vim では複数の行を一行にまとめることができます。これは行と行の間にある改行文字 -を削除するのと同じです。それには "J" コマンドを使います。 -例えば、次の二行があるとします: - - A young intelligent ~ - turtle ~ - -最初の行にカーソルを動かし "J" を押すと次のようになります: - - A young intelligent turtle ~ - -============================================================================== -*02.5* undo (取り消し) と redo (やり直し) - -間違ってテキストを削除してしまった場合、同じ内容を入力し直すこともできますが、 -もっと簡単な方法があります。"u" コマンドで直前の編集結果を undo (取り消し) -できます。例えば、"dd" コマンドで削除した行を、"u" コマンドで元に戻せます。 -もう一つ例を示します。カーソルを一行目の A に移動して: - - A young intelligent turtle ~ - -xxxxxxx とタイプし、"A young" を削除します。結果は次のようになります: - - intelligent turtle ~ - -"u" で直前の削除が取り消されます。最後に削除されたのは g なので、その文字が復 -活します。 - - g intelligent turtle ~ - -もう一度 "u" を実行すると、さらに一つ前に削除された文字が復活します: - - ng intelligent turtle ~ - -次の "u" コマンドでは u が復活し、次々と元に戻すことができます: - - ung intelligent turtle ~ - oung intelligent turtle ~ - young intelligent turtle ~ - young intelligent turtle ~ - A young intelligent turtle ~ - - Note: - "u" を二回押したときに、最初の状態に戻ってしまった場合は、Vi 互換モー - ドが設定されています。|not-compatible| を参照して正しく設定してくださ - い。 - このマニュアルでは「Vim方式」の使い方を前提にしています。古き良き時代 - の Vi 方式を使いたい場合は、細かい部分でマニュアルの説明と違うことがあ - るので注意してください。 - - -redo (やり直し) ---------------- - -undo し過ぎてしまった場合は、CTRL-R (redo) を押すことで、直前のコマンドを -取り消せます。つまり、undo を undo します。実際に二回 CTRL-R を押してみましょ -う。"A "の二文字が消えます。 - - young intelligent turtle ~ - -undo コマンドには特別なバージョン、"U" (行 undo) コマンドがあります。行 undo -コマンドは直前に編集した行のすべての変更を取り消します。このコマンドは、二回実 -行すると、直前の "U" が取り消されます。 - - A very intelligent turtle ~ - xxxx "very"を削除 - - A intelligent turtle ~ - xxxxxx "turtle"を削除 - - A intelligent ~ - "U" で行全体を元に戻す - A very intelligent turtle ~ - "u" で "U" を undo - A intelligent ~ - -"u" が undo で、 CTRL-R が redo であるのに対し、"U" コマンドはそれ自身が変更コ -マンドです。ちょっとわかりにくいかも知れませんが心配はいりません。"u" と -CTRL-R があればどんな場合でも大丈夫だ、ってことです。詳細は |32.2| にあります。 - -============================================================================== -*02.6* 他の編集コマンド - -Vim には文章を編集するための数多くのコマンドがあります。下記、または|Q_in|を参 -照してください。ここでは頻繁に使うものだけを述べます。 - - -追記 (APPENDING) ----------------- - -"i" コマンドはカーソルの前に文字列を挿入しますが、行末に文字を追加したいときは -はどうすればいいでしょうか? それにはカーソルの後ろに文を挿入できないといけませ -ん。"a" (append) コマンドで追記できます。 -例えば、次の行を - - and that's not saying much for the turtle. ~ -このように変更したいとします - and that's not saying much for the turtle!!! ~ - -まずカーソルを行末のピリオドの上に動かし、"x" でピリオドを消します。この時カー -ソルは行末の turtle の "e" の上にあります。ここで、次のコマンドを入力します。 -> - a!!!<Esc> - -これで turtle の後ろに三つの "!" 記号が追加されます: - - and that's not saying much for the turtle!!! ~ - - -新しい行を開く --------------- - -"o" コマンドを使うと、カーソルの下に新しい空の行が作成され、挿入モードに入りま -す。そのため、そのまま新しい行の文章を入力できます。 -以下のような二行があり、カーソルが一行目のどこかにあるとします: - - A very intelligent turtle ~ - Found programming UNIX a hurdle ~ - -"o" コマンドを実行し、テキストを入力すると: > - - oThat liked using Vim<Esc> - -次のような結果になります: - - A very intelligent turtle ~ - That liked using Vim ~ - Found programming UNIX a hurdle ~ - -"O" コマンド (大文字) を使うと、カーソルの上に空行を作成できます。 - - -カウンタを使う --------------- - -例えば、9 行上に移動したい場合、"kkkkkkkkk" とタイプすることもできますが、"9k" -コマンドでも同様に移動できます。実はほとんどのコマンドには回数を指定できます。 -例えば上記の例では、"a!!!<Esc>" で三つの "!" 記号を追加しましたが、これは -"3a!<Esc>" と入力することもできます。最初の 3 はコマンドを三回実行することを指 -定しています。同様に、三文字削除したい場合は "3x" を使います。カウントは必ず対 -象となるコマンドの前に指定してください。 - -============================================================================== -*02.7* Vim の終了 - -Vim を終了するには "ZZ"コマンドを使います。ファイルが保存され、Vim が終了しま -す。 - - Note: - 他の多くのエディタと違い、Vim は自動的にバックアップを作成しません。 - "ZZ" と打つとファイルが上書きされるため、元に戻す方法はありません。バッ - クアップファイルを作成するように設定することもできます。|07.4|を参照し - てください。 - - -変更を破棄する --------------- - -ファイルを編集した後で、元の方が良かったと気づくことがあると思います。心配はい -りません。「全部投げ捨てて終了する」コマンドがあります。 > - - :q! - -コマンドを確定するには <Enter> キーが必要ですよ。お忘れなく。 - -詳細を説明すると、このコマンドは三つの部分から成っています。":" はコマンドライ -ンモードの開始、"q" コマンドはエディタを終了するコマンド、"!" はオーバーライド -修飾詞です。 -変更を破棄するにはオーバーライド修飾詞が必要です。単に ":q" を実行した場合、エ -ラーメッセージが表示され、コマンドは実行されません: - - E37: 最後の変更が保存されていません (! で変更を破棄) ~ - -オーバーライドを指定することで、「バカげたことをしてるように見えるのはわかって -る。でもボクは大人だし、本当にそうしたいんだ」と Vim に告げているわけです。 - -Vim を終了したくない場合は、":e!" コマンドでオリジナルのファイルを再読み込みで -きます。 - -============================================================================== -*02.8* ヘルプの引き方 - -知りたいことは何でも Vim のヘルプで調べることができます。どんどん調べてくださ -い! -次のコマンドでヘルプの総合案内が表示されます: > - - :help - -ヘルプは <F1> ファンクションキーでも表示できます。キーボードに <Help> キーがあ -る場合はそれも使えます。 -":help" に引数を指定しなかった場合は総合案内が表示されます。Vim の作者はとても -賢い (いや、すごい怠け者かも) ので、ヘルプウィンドウには普通の編集ウィンドウが -使われています。ヘルプウィンドの中ではすべてのノーマルモードコマンドが使えま -す。したがって、h, j, k, l で 上下左右に移動できます。 -ヘルプウィンドウは、エディタを終了するのと同じコマンド ("ZZ") で閉じることがで -きます。この場合は、ヘルプウィンドウが閉じるだけで、Vim は終了しません。 - -ヘルプを読むと、縦棒 "|" で囲まれた文字に気づくと思います (例:|help|)。それは -ハイパーリンクです。その場所にカーソルを置いて、CTRL-] (タグジャンプ) を押す -と、そのヘルプにジャンプできます。(理由は省きますが、Vim ではハイパーリンクの -ことをタグと呼びます。CTRL-] はカーソル下の単語をタグとみなして、その場所にジャ -ンプします。) -ジャンプした後は CTRL-T (タグをポップする) で元の場所に戻れます。CTRL-O(古い -場所へのジャンプ)でも元に場所に戻れます。 - -ヘルプ画面の最上部に*help.txt*という表記があります。"*" で囲まれた名前はヘルプ -システムのタグ(ハイパーリンクの飛び先)を定義するために使われています。 -タグの使い方の詳細は |29.1| を参照してください。 - -特定のヘルプ項目を見るには次のコマンドを使います: > - - :help {subject} - -例えば "x" コマンドのヘルプを見るには次のようにします: > - - :help x - -文字の削除方法を調べるには次のようにします: > - - :help deleting - -Vim のコマンド一覧を見たい場合は次のようにします: > - - :help index - -コントロール文字コマンド (例えば CTRL-A) のヘルプを見るには、"CTRL-" に続けて -その文字を指定します: > - - :help CTRL-A - -Vim にはいろんなモードがあります。特に指定がなければノーマルモードコマンドのヘ -ルプが表示されます。例えば、次のコマンドでノーマルモードの CTRL-H コマンドのヘ -ルプが表示されます: > - - :help CTRL-H - -他のモードを指定するにはプレフィクスを付けてください。例えば、挿入モードのヘル -プが見たいときには、"i_"を付けます。CTRL-H の場合なら次のようになります: > - - :help i_CTRL-H - -Vim を起動するときにはコマンドライン引数を指定できます。引数は先頭が "-" で始 -まります。例えば、"-t" 引数の意味を調べるには次のコマンドを使います: > - - :help -t - -Vim にはオプションがたくさんあり、それを設定することでカスタマイズができます。 -オプションのヘルプを見るには、アポストロフィでそれを囲ってください。例えば、 -'number'オプションの意味を調べるには次のコマンドを使います: > - - :help 'number' - -モードのプレフィクス一覧は |help-context| を参照してください。 - -特殊キー不等号で囲んで表記します。例えば、挿入モードの上矢印キーのヘルプを見る -には次のコマンドを使います: > - - :help i_<Up> - -例えば次のようなエラーメッセージが表示された場合: - - E37: 最後の変更が保存されていません (! で変更を破棄) ~ - -行頭のエラーIDを使えばヘルプを検索できます: > - - :help E37 - -サマリー: *help-summary* > - - :help -< 一般的なヘルプを表示します。下へスクロールすると、全てのヘルプ - ファイルの一覧を表示します。ここには独自に追加された、Vim標準 - には添付されていないヘルプファイルも含まれます。 > - :help user-toc.txt -< ユーザーマニュアルの目次を表示します。 > - :help :subject -< Exコマンド"subject"のヘルプ。例えば次のようなもの: > - :help :help -< ヘルプの探し方のヘルプ。 > - :help abc -< ノーマルモードコマンド"abc"のヘルプ。 > - :help CTRL-B -< ノーマルモードコマンドにおけるキー<C-b>のヘルプ。 > - :help i_abc - :help i_CTRL-B -< インサートモードにおける特定のキーのヘルプ。 > - :help v_abc - :help v_CTRL-B -< ビジュアルモードにおける特定のキーのヘルプ。 > - :help c_abc - :help c_CTRL-B -< コマンドラインモードにおける特定のキーのヘルプ。 > - :help 'subject' -< オプション'subject'のヘルプ。 > - :help subject() -< 関数"subject"のヘルプ。 > - :help -subject -< コマンドラインオプション"-subject"のヘルプ。 > - :help +subject -< コンパイル時機能"+subject"のヘルプ。 > - :help EventName -< 自動コマンドイベント"EventName"のヘルプ。 > - :help digraphs.txt -< ヘルプファイル"digraph.txt"のトップ。 - 他のヘルプファイルについても同様。 > - :help pattern<Tab> -< "pattern"で始まるヘルプタグを検索。<Tab>を繰り返し押すと他の候 - 補を検索する。 > - :help pattern<Ctrl-D> -< "pattern"にマッチするヘルプタグを全て表示する。 > - :helpgrep pattern -< 全ヘルプファイルの全テキストからパターン"pattern"を検索し、最 - 初のマッチへジャンプする。他のマッチへジャンプするには以下のコ - マンドを使う: > - :cn -< 次のマッチへ > - :cprev - :cN -< 前のマッチへ > - :cfirst - :clast -< 最初/最後のマッチへ > - :copen - :cclose -< quickfixウィンドウを開く/閉じる。quickfixウィンドウで - <Enter>を押すと、カーソル下の要素へジャンプする。 - -============================================================================== - -次章: |usr_03.txt| カーソルの移動 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_03.jax b/doc/usr_03.jax deleted file mode 100644 index 3248ffed7..000000000 --- a/doc/usr_03.jax +++ /dev/null @@ -1,643 +0,0 @@ -*usr_03.txt* For Vim バージョン 7.3. Last change: 2006 Jun 21 - - VIM USER MANUAL - by Bram Moolenaar - - カーソルの移動 - - -文の入力したり削除したりするには、カーソルを目的の場所に動かさなくてはなりませ -ん。Vim にはカーソル移動のためのコマンドがたくさんあります。本章では、その中で -も重要なコマンドの使い方を述べます。コマンドの一覧は |Q_lr| を参照してくださ -い。 - -|03.1| 単語ごとの移動 -|03.2| 行頭、行末への移動 -|03.3| 文字への移動 -|03.4| カッコの対応 -|03.5| 特定の行への移動 -|03.6| 現在の場所を表示 -|03.7| スクロール -|03.8| 簡単な検索 -|03.9| 簡単なパターン検索 -|03.10| マークの使用 - -次章: |usr_04.txt| 簡単な編集 -前章: |usr_02.txt| 初めての Vim -目次: |usr_toc.txt| - -============================================================================== -*03.1* 単語ごとの移動 - -カーソルを 1 単語先に進めるには、"w"コマンドを使います。他の Vim コマンドもそ -うですが、複数の単語を一気に進めるために数値 (カウンタ) による回数指定ができま -す。例えば、"3w"では 3 単語進みます。図で示すと次のようになります。 - - This is a line with example text ~ - --->-->->-----------------> - w w w 3w - -"w" で次の単語の先頭に移動します。既にカーソルが単語の先頭にある場合は、その次 -の単語の先頭に移動します。 -逆に "b" コマンドで直前の単語の先頭に戻ります。 - - This is a line with example text ~ - <----<--<-<---------<--- - b b b 2b b - -"e" コマンドで次の単語の末尾に移動します。"ge" で直前の単語の末尾に移動します。 - - This is a line with example text ~ - <- <--- -----> ----> - ge ge e e - -カーソルが行末の単語にある場合、"w" コマンドは次の行の最初の単語に進みます。こ -れを使うと "l" よりもずっと速く文章の中を動けます。"b" は "w" の逆方向に同じ -ルールで動きます。 - -単語は"."や"-"、")"といったアルファベット以外の文字で区切られます。Vimが何を単 -語とみなすかは、'iskeyword'オプションの設定で変更できます。 -空白を区切りとした単語(WORD)を移動することもできます。これは普段意識する単語 -(word)とは若干違うため、大文字を使っています。WORD単位で動くコマンドは全部大 -文字です。図で示すと次の通りです。 - - ge b w e - <- <- ---> ---> - This is-a line, with special/separated/words (and some more). ~ - <----- <----- --------------------> -----> - gE B W E - -小文字と大文字のコマンドを両方使うと、文章中をより素早く動けるようになります。 - -============================================================================== -*03.2* 行頭、行末への移動 - -"$"コマンドでカーソルを行末に移動します。キーボードに<End>キーがあれば、それも -同じ意味で使えます。 - -"^"コマンドでカーソルを行頭から最初の非空白文字に移動します。"0"(数字のゼロ)コ -マンドは行頭に移動します。<Home>キーも同じです。図で示しましょう。 - - ^ - <------------ - .....This is a line with example text ~ - <----------------- ---------------> - 0 $ - -("....." は空白文字があることを示します) - -"$"コマンドでも他の移動コマンドのようにカウンタの指定ができます。行末への移動 -を何度やっても意味がありませんので、"$"コマンドでのカウンタは他の行の行末への -移動の意味になります。例えば、"1$"は"$"と同じで現在行の行末への移動ですが、 -"2$"は次の行末への移動、"3$"は 2 行下の行末への移動、となります。 -"0"コマンドは回数指定できません。これは、"0"自身が回数指定の一部になってしまう -からです。"^"に回数指定をした場合は単に無視されます。 - -============================================================================== -*03.3* 文字への移動 - -特に便利な移動コマンドはいくつかありますが、一文字検索コマンドもその一つです。 -コマンド "fx" はその行にある文字 x を前方検索します。(f は Find の意味です)。 -例えば、次の文の先頭にカーソルがあり、 human の h に移動したいとします。"fh"コ -マンドを実行すると、'h'の上にカーソルが進みます。 - - To err is human. To really foul up you need a computer. ~ - ---------->---------------> - fh fy - -続いて、"fy"コマンドで really の y まで移動できます。 -これもカウンタ指定ができます。例えば次の文の foul の l に進むには "3fl" です。 - - To err is human. To really foul up you need a computer. ~ - ---------------------> - 3fl - -"F"コマンドで左向きに検索できます。 - - To err is human. To really foul up you need a computer. ~ - <--------------------- - Fh - -"tx"コマンドは"fx"コマンドに似た動きをしますが、検索した文字の上ではなく、その -直前で止まります。(tはToの意味です) -このコマンドの逆方向版は"Tx"です。 - - To err is human. To really foul up you need a computer. ~ - <------------ -------------> - Th tn - -この 4 つのコマンドは ";" コマンドで繰り返せます。反対方向に繰り返すには "," -コマンドです。このコマンドは、カーソルが他の行に移動することはありません。文が -次行に続いていても移動しません。 - -検索をしようとして、コマンドを打ち間違うこともあるでしょう。例えば、逆方向検索 -のつもりで("F"と打つべきところを)"f"と打ってしまったとしましょう。コマンドの実 -行を取り止めるには<Esc>を押します。"f<Esc>"は<Esc>を探すのではなく、コマンドを -キャンセルします。Note:<Esc>は検索に限らず、ほとんどのコマンドをキャンセルする -のに使えます。 - -============================================================================== -*03.4* カッコの対応 - -プログラムを書いていると、入れ子になった () を書くことがよくあります。そのよう -な場合には、"%" コマンドがとても便利です。このコマンドを使うと対応するカッコに -移動できます。カーソルが "(" の上なら対応する ")" に、")" の上なら対応する "(" -に移動できます。 - - % - <-----> - if (a == (b * c) / d) ~ - <----------------> - % - -このコマンドは [] や {} のペアでも機能します。(これは'matchpairs'オプションで -定義できます) - -カーソルがカッコの上にない場合、"%"はまず前方検索をしてカッコを探します。上記 -の例文で行頭にカーソルがあった場合、"%" は前方検索をして "(" を見つけ、それか -ら、対応するカッコ ")" に移動します。 - - if (a == (b * c) / d) ~ - ---+----------------> - % - -============================================================================== -*03.5* 特定の行に移動 - -CやC++のプログラマであれば、次のようなパターンのエラーメッセージはおなじみで -しょう。 - - prog.c:33: j undeclared (first use in this function) ~ - -何か33行目に修正しないといけない点がありそうです。では、どうやって33行目に移動 -しましょうか?"9999k"などとしてファイルの先頭まで移動してから、"32j"で32行下に -移動するやり方もあります。確かに目的は達しますが、あまりいい方法とは思えませ -ん。そこで"G"というコマンドを使います。このコマンドにカウンタを指定すると、そ -の行にジャンプできます。例えば、"33G"とすれば、33行目にジャンプできます。(実は -コンパイラのエラーリストを使ってもっと簡単に移動する方法もあります。 -|usr_30.txt| の":make"コマンドをご覧ください。) -カウンタを指定しなかった場合はファイルの最終行にジャンプします。ファイルの先頭 -にジャンプするには"gg"を使います。"1G"でも同じですが、ちょっと打ちにくいですか -ら。 - - | first line of a file ^ - | text text text text | - | text text text text | gg - 7G | text text text text | - | text text text text - | text text text text - V text text text text | - text text text text | G - text text text text | - last line of a file V - -特定行に移動するもう一つの方法はカウンタ付きの"%"コマンドです。例えば、"50%" -でファイルの真ん中に移動できます。"90%"ならファイルのほぼ最後(90%の場所) に移 -動します。 - -以上述べたのは、画面上に見えているかどうかに関係なくファイルの特定行に移動した -い場合のコマンドでした。では画面上に見えている行に移動したい場合はどうしましょ -うか?そういう時に使える 3 つのコマンドを下図に示します。 - - +---------------------------+ - H --> | text sample text | - | sample text | - | text sample text | - | sample text | - M --> | text sample text | - | sample text | - | text sample text | - | sample text | - L --> | text sample text | - +---------------------------+ - -("H"はHome、"M"はMiddle、"L"はLastの意味です) - -============================================================================== -*03.6* 現在の場所を表示 - -ファイル中の現在の場所を知るには、次の 3 つの方法があります。 - -1. CTRL-Gコマンド。次のようなメッセージが表示されます。('ruler'オプション - がオフの場合) - - "usr_03.txt" line 233 of 650 --35%-- col 45-52 ~ - - 編集中のファイル名、カーソルのある行番号、全体の行数、ファイル全体を - 通してのパーセント、カーソル桁位置、を表示します。 - 場合によっては、カーソル桁位置が 2 つに分けて表示されます。例えば、 - "col 2-9" の場合、カーソルは 2 文字目にあります。2 文字のうち、1 文字がタ - ブ文字で、8 文字分で表示されているため、画面上では 9 桁目にある、というこ - とです。 - -2. 'number'オプションを設定する。行頭に行番号が表示されるようになります: > - - :set number -< - オプションをオフに戻すには: > - - :set nonumber -< - 'number'は論理値オプションなので、オプション名の先頭に"no"をつければオフに - できます。論理値オプションにはオンかオフの 2 つの状態しかありません。 - Vimには多数のオプションがあります。論理値オプションの他に、数値オプション - と文字列オプションがあります。それらのオプションの設定方法はそのうち説明し - ます。 - -3. 'ruler'オプションを設定する。現在のカーソル位置が、Vimウィンドウの右下隅に - 表示されるようになります: > - - :set ruler -< -'ruler' は表示に場所を取らないので、画面を広く使えます。 - -============================================================================== -*03.7* スクロール - -CTRL-U コマンドで画面の半分だけ下にスクロールします。窓を通してテキストを見て -いて、その窓を高さの半分だけ上に動かす、と考えてください。窓が上に動き、さっき -より上の位置のテキストが表示されます。どっちが上でどっちが下かわかりにくいかと -思いますが、気にすることはありません。みんな同じように悩むことですから。 -CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが画面の半分だけスクロール -することになります。 - - +----------------+ - | some text | - | some text | - | some text | - +---------------+ | some text | - | some text | CTRL-U --> | | - | | | 123456 | - | 123456 | +----------------+ - | 7890 | - | | +----------------+ - | example | CTRL-D --> | 7890 | - +---------------+ | | - | example | - | example | - | example | - | example | - +----------------+ - -1 行だけスクロールするにはCTRL-E(スクロールアップ)とCTRL-Y(スクロールダウン) -を使います。(MS-Windows互換のキーマップをお使いの場合、CTRL-Yはスクロールでは -なく、redo コマンドとなります) - -1 画面分スクロールするにはCTRL-Fを使います(2行は重複します)。逆方向へのスク -ロールはCTRL-Bコマンドを使います。CTRL-FはForward、CTRL-BはBackward、ですから -覚えやすいでしょう。 - -"j" で何行も下に移動して、カーソルが画面の最下段にあるとします。カーソル前後の -行を表示したい場合は "zz" コマンドを使います。 - - +------------------+ +------------------+ - | some text | | some text | - | some text | | some text | - | some text | | some text | - | some text | zz --> | line with cursor | - | some text | | some text | - | some text | | some text | - | line with cursor | | some text | - +------------------+ +------------------+ - -"zt" コマンドでカーソル行を画面の 1 行目として表示できます。"zb" コマンドなら -画面の最下段です。これ以外にもいくつかスクロールコマンドがあります。|Q_sc|を参 -照してください。カーソル近辺の数行を常に表示させたい場合は、'scrolloff'オプショ -ンを使ってください。 - -============================================================================== -*03.8* 簡単な検索 - -文字列を検索するには"/string"コマンドを使います。例えば、"include"という単語 -を探したいのであれば、次のように使います。 > - - /include - -"/"を押すと、コマンドラインモードのときのように、カーソルがVimウィンドウの最下 -段に移動します。そこで検索したい単語を入力します。入力した文字を訂正するには、 -バックスペースキー (左矢印 または <BS>) を使います。必要に応じて<Left>や -<Right>の矢印キーを使ってください。 -<Enter>を押すとコマンドが実行されます。 - - Note: - 文字のうち、 .*[]^%/\?~$ には特別な意味があります。検索時にこれらを - 使う場合はその文字の直前に \ を置いてください。これは後(|03.9|の - 最後)で述べます。 - -同じ文字列をもう一度探したい場合には"n"コマンドを使います。今のカーソル位置 -の後ろにある#includeを探すには次のコマンドを使います。 > - - /#include - -次に"n"を数回押すと、順々に #include にジャンプします。移動したい場所が何個目 -かわかっているなら、カウンタも使えます。例えば、"3n"なら 3 つ目の #include を -探します。"/" にはカウンタを指定できません。 - -"?"コマンドは"/"と同じですが、逆方向に検索します。 > - - ?word - -"N"コマンドは直前の検索とは反対の方向に検索を繰り返します。"/"の後で"N"を使う -と後方検索になり、"?"の後で"N"を使うと前方検索になります。 - - -大文字/小文字の無視 -------------------- - -普通は探したい文字列の大文字/小文字を正確に指定しなければなりません。大文字と -小文字を区別したくないのであれば、'ignorecase'オプションを設定します。 > - - :set ignorecase - -これで、"word"を検索すると、"Word"も"WORD"もヒットします。大文字/小文字を区 -別するように戻すのは次のコマンドです。 > - - :set noignorecase - - -ヒストリ(履歴) --------------- - -次のような3つの検索を行ったとします。 > - - /one - /two - /three - -さて、"/" だけを入力し、まだ <Enter> を押さないでください。<Up>(上矢印キー) -を押すと、コマンド行に /three と表示されます。ここで <Enter> を押すと、 -"three"が検索されます。<Enter>を押さずに<Up>を押すとコマンド行には"/two"と表示 -されます。さらに<Up>を押すと"/one"となります。 -同じように<Down>キーを使って逆方向に検索ヒストリを移動できます。 - -以前に使ったパターンを覚えていて、それをまた使いたい場合には、そのパターンの先 -頭文字を入力してから <Up> を押してください。上の例で言えば、"/o<Up>"と入力する -と、コマンドラインに"/one"と表示されます。 - -":"で始まるコマンドにもヒストリがあります。以前のコマンドを呼び出して、再実行 -できます。検索用ヒストリと":"コマンドヒストリは分かれています。 - - -文章中の単語の検索 ------------------- - -"TheLongFunctionName" という単語が文章中にあり、次に現れる場所を探したいと -します。もちろん、"/TheLongFunctionName"として検索もできますが、たくさんの打鍵 -が必要です。それに、打ち間違えてしまうとうまく検索できません。 -もっと簡単な方法があります。探したい単語の上にカーソルを置いて、"*"コマンドを -使うのです。カーソル位置の単語が抜き出され、それが検索文字列として使われます。 -"#"コマンドは同じことを逆方向に実行します。このコマンドもカウンタが指定でき -ます。例えば、"3*"はカーソル位置の単語が 3 回目に現われる場所を探します。 - - -単語全体を一致させる検索 ------------------------- - -"/the"と検索を行うと、"there"などもヒットします。"the"で終わる単語だけを探 -したい場合には次のようにします。 > - - /the\> - -"\>"というのは特別なマーカで、単語がここで終わっている時だけヒットします。 -同じように"\<"は単語がここで始まっている時にだけヒットします。つまり、"the" -という単語だけを探したい場合は、次のようにします。 > - - /\<the\> - -これだと、"there"とか"soothe"にはヒットしません。なお、"*"と"#"コマンドは -上の「単語の先頭」と「単語の末尾」マーカを使って、完全に一致する単語だけを -探します。(単語の一部として検索したい時は"g*"と"g#"コマンドを使います) - - -検索結果の強調表示 ------------------- - -プログラムの編集中に、"nr"という変数を見つけ、その変数がどこで使われているか -を知りたいとします。"nr"の上にカーソルを移動して、"*"と"n"コマンドで片っ端 -から探すのもいいですが、他にも方法があります。次のコマンドを入力してください。 > - - :set hlsearch - -"nr"を検索すると、ヒットした全てのパターンが強調表示されます。これなら余計なコ -マンド入力が必要ないので、変数の使用箇所を確認したいときには便利です。 -このオプションは次のコマンドでオフにできます。 > - - :set nohlsearch - -さて上のやり方では、検索を行うたびに、いちいちオプションの切替えが必要になりま -す。単に強調表示を止めるだけなら、次のコマンドを使ってください。 > - - :nohlsearch - -これならオプションはオフになりません。強調表示だけを取り消せます。次に検索コマ -ンドを実行すると、ふたたび強調表示されます。"n"や"N"を使ったときも同様です。 - - -検索のチューニング ------------------- - -検索の挙動を変更するオプションがいくつかあります。重要なのは次のものです: > - - :set incsearch - -これはいわゆるインクリメンタルサーチです。検索したい文字を入力している間にも -ヒットする文字列を探して画面に表示してくれます。これはヒットするパターンがある -かどうかのチェックに使えます。<Enter>を押すと実際にその場所にカーソルがジャン -プします。 -> - :set nowrapscan - -ファイルの末尾まで進んだら(後方検索の場合はファイルの先頭まで戻ったら)検索を停 -止します。'wrapscan'オプションの初期設定はオンです。オンの場合は、ファイルの末 -尾まで進んだら先頭に戻って検索を続けます。 - - -ところで... ------------ - -これまでに出てきたオプションを毎回設定したい場合は、スタートアップファイルにそ -のコマンドを書いてください。 -|not-compatible|の説明のとおりにファイルを編集するか、次のコマンドを入力して、 -ファイルがどこにあるか確認してください。 > - - :scriptnames - -ファイルを編集するには、例えば次のようにします。 > - - :edit ~/.vimrc - -そして、オプションを設定するためにVim上で実行したのと同じコマンドを書き加えま -す。例えば、次のようにします。 > - - Go:set hlsearch<Esc> - -"G" でファイルの末尾まで移動し、"o" で新しい行を挿入して ":set" コマンドを書く -ための空行を作っています。挿入モードの終了は<Esc>です。そして、ファイルを保存 -しましょう。 > - - ZZ - -次にVimを起動すると、'hlsearch'オプションが最初からオンになっています。 - -============================================================================== -*03.9* 簡単なパターン検索 - -Vimでは、検索に正規表現(regular expressions)を使います。 -正規表現というのは検索パターンを指定するための、極めてパワフルでシンプルな方法 -です。残念ながら、これの実力を発揮させるには少々苦労していただくことになりま -す。というのも、正規表現はちょっとばかりトリッキーなんです。 -ここでは本当に基本的なものだけを述べます。パターン検索とコマンドについては -27章|usr_27.txt|でもっと詳しく説明します。完全な説明は|pattern|にあります。 - - -行頭と行末 ----------- - -"^"は行頭を示します。英語(ASCII)キーボードでは 6 のキーに、日本語(JIS)キーボー -ドでは 0 のキーの 2 つ右側に刻印してあります。 -例えば、"include"というパターンは 行のどこかに include という単語を含んでいれ -ば、ヒットします。一方、"^include" は行頭にある include にだけマッチします。 -"$"は同様に行末にヒットします。ですから、パターン"was$" は、行末が was で終 -わっている場合だけヒットします。 - -下の例では、"the"にマッチする箇所を"xxx"で示しています。 - - the solder holding one of the chips melted and the ~ - xxx xxx xxx - -"/the$"の場合は次のようになります。 - - the solder holding one of the chips melted and the ~ - xxx - -"/^the"の場合はこうです。 - - the solder holding one of the chips melted and the ~ - xxx - -"/^the$"という指定もできます。この指定だと、"the"という単語だけの行にヒット -します。なお空白文字も意味を持ちます。ですから、"the "のように行末に空白文 -字を含んでいた場合は、"/the$"のパターンではヒットしません。 - - -任意の 1 文字 -------------- - -"." はあらゆる文字にヒットします。例えば、"c.m"は最初が"c"で始まり、2 文字目は -何でも良くて、3 文字目が"m"であるパターンにヒットします。例を示します。 - - We use a computer that became the cummin winter. ~ - xxx xxx xxx - - -特殊文字 --------- - -例えば"."という文字自体を探す時は、上で述べたような特殊な意味を"\"文字を -使って無効にします。 -"ter."というパターンで検索をすると、次の"xxx"の箇所でヒットします。 - - We use a computer that became the cummin winter. ~ - xxxx xxxx - -これを"ter\."で検索すると、上図の 2 つ目だけがヒットします。 - -============================================================================== -*03.10* マークの使用 - -"G"コマンドでジャンプすると、その直前のカーソル位置が記録されます。これをマー -クと呼びます。元の場所に戻るには、次のコマンドを使います。 > - - `` - -この ` は backtick とか open single-quote と呼ばれる(日本では「バッククオート」 -が多いでしょうか)ものです。 -このコマンドを 2 回実行すると、元の場所に戻ります。これは ` コマンドもジャンプ -コマンドなので、実行前の場所が記録されるためです。 - -通常、現在行以外にカーソルが動くようなコマンドを実行した場合、それをジャンプ -と呼びます。"/"や"n"もジャンプの一種です(ジャンプ先がどれだけ離れているかは -関係ありません)。逆に、文字検索である"fx"や"tx"、単語移動である"w"や"e"は -ジャンプではありません。 -"j"や"k"はカウンタを指定すればカーソルをはるか彼方に移動できますが、これも -ジャンプ扱いではありません。 - -``コマンドは 2 個所の間を交互にジャンプします。CTRL-Oコマンドはより古いマーク -(O は Older の意味です)にジャンプします。CTRL-Iはより新しいマーク("I"キーは -"O"キーのすぐ左隣りです)にジャンプします。次のコマンドを例にしましょう。 > - - 33G - /^The - CTRL-O - -まず33行目にジャンプします。次に"The"で始まる行を探します。ここでCTRL-Oを使う -と、33行目に戻ります。もう一度CTRL-Oを使うと、最初の場所に戻ります。そして、 -CTRL-Iを使うと33行目にジャンプし、さらにCTRL-Iを使うと行頭が"The"で始まる行に -ジャンプします。 - - | example text ^ | - 33G | example text | CTRL-O | CTRL-I - | example text | | - V line 33 text ^ V - | example text | | - /^The | example text | CTRL-O | CTRL-I - V There you are | V - example text - - Note: - CTRL-Iは<Tab>キーと同じです。 - -":jumps"コマンドで今までにジャンプした場所の一覧を表示できます。最後に使ったエ -ントリには">"記号がついています。 - - -名前付きマーク *bookmark* --------------- - -文章中にマークを付けることができます。"ma"コマンドで現在のカーソル位置をマーク -a に記録します。文章には 26 個 (aからzまで) のマークを付けられます。マークは -Vim が記録している位置情報です。画面に何かが表示されるわけではありません。 -マークへの移動は `{mark} コマンドを使います。{mark}はマーク文字のことです。 -マーク a に移動するには次のようにします。 -> - `a -< -'{mark}(アポストロフィ + マーク名)コマンドで{mark}を設定してある行の行頭に移動 -できます。`{mark}の場合は{mark}を設定した桁位置に移動します。 - -マーク機能はファイル中の関連している 2 箇所で作業をする場合に便利です。例えば、 -ファイルの最後の方を編集している時に、ファイルの最初の方の内容を確認する必要が -生じた場合を考えてみましょう。 -まずファイルの最初の方に移動して、マーク s (startのつもり) を付けます。 > - - ms - -次に編集したい場所に移動して、マーク e (endのつもり) を付けます。 > - - me - -これで自由に行き来ができます。ファイルの先頭に移動したい時は、次のコマンドで -ジャンプできます。 > - - 's - -ここで、 '' を使って戻ることもできますし、 'e を使って末尾のマークまでジャン -プすることもできます。 -先頭にマーク s を、末尾にマーク e を使いましたが、その名前に特別な意味はありま -せん。単に覚えやすいから使っただけです。 - -次のコマンドは設定してあるマークの一覧を表示します。 > - - :marks - -この一覧には次のような特殊なマークも表示されます。 - - ' ジャンプする直前のカーソル位置 - " 直前にファイルを編集した時のカーソル位置 - [ 直前の変更の開始位置 - ] 直前の変更の終了位置 - -============================================================================== - -次章: |usr_04.txt| 簡単な編集 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_04.jax b/doc/usr_04.jax deleted file mode 100644 index 87704d074..000000000 --- a/doc/usr_04.jax +++ /dev/null @@ -1,504 +0,0 @@ -*usr_04.txt* For Vim バージョン 7.3. Last change: 2008 Sep 06 - - VIM USER MANUAL - by Bram Moolenaar - - 簡単な編集 - - -本章では、 テキストの修正方法や他の場所への移動方法をいくつか説明します。テキ -ストを変更するための三つの基本操作方法 (オペレータとモーション、ビジュアルモー -ド、テキストオブジェクト) についても説明します。 - -|04.1| オペレータとモーション -|04.2| テキストの変更 -|04.3| 変更の繰り返し -|04.4| ビジュアルモード -|04.5| テキストの移動 -|04.6| テキストのコピー -|04.7| クリップボード -|04.8| テキストオブジェクト -|04.9| 置換モード -|04.10| 終わりに - -次章: |usr_05.txt| 設定の変更 -前章: |usr_03.txt| カーソルの移動 -目次: |usr_toc.txt| - -============================================================================== -*04.1* オペレータとモーション - -二章で学んだように、"x"は 1 文字削除するコマンドです。カウンタを使って、"4x"と -すれば 4 文字削除されます。 -"dw"コマンドで単語を削除できます。"w" が単語単位で移動するコマンドであることを -思い出してください。"d" コマンドにモーション (移動) コマンドを続けることで、現 -在の場所から、モーションコマンドで移動した場所までを削除できます。 -例えば、"4w" コマンドはカーソルを 4 単語分、動かします。ということは、"d4w"は -4 つの単語を削除するコマンドなわけです。 - - To err is human. To really foul up you need a computer. ~ - ------------------> - d4w - - To err is human. you need a computer. ~ - -モーションコマンドでカーソルが移動した場所までが削除されます。移動先の単語の先 -頭文字が削除されないのは、そのほうが便利だからです。しかし、"e" コマンドで単語 -の末尾まで移動した場合は、末尾の文字も削除したほうが便利ですよね: - - To err is human. you need a computer. ~ - --------> - d2e - - To err is human. a computer. ~ - -カーソル下の文字が範囲に含まれるかどうかは、移動に使ったコマンドによって異なり -ます。リファレンスマニュアルでは、移動先の文字が含まれないことを "exclusive" -(排他的)、含まれることを "inclusive" (包括的) と呼んでいます。 - -"$"コマンドで行末まで移動できます。"d$"コマンドならカーソル位置から行末までが -削除されます。これは包括的モーションなので行末の文字は削除処理の対象となりま -す。 - - To err is human. a computer. ~ - ------------> - d$ - - To err is human ~ - -オペレータとモーションを組み合わせるときは、最初にオペレータコマンドを入力しま -す。例えば、"d" は削除オペレータです。次に "4l" や "w" といったモーションコマ -ンドを入力します。この方法ならテキストのどんな範囲でも操作できます。 - -============================================================================== -*04.2* テキストの変更 - -"c" は「変更」オペレータです。"d" オペレータと同じように使えますが、挿入モード -に入る点が違います。例えば、"cw" は単語を変更します。正確に言うと、単語を削除 -してから挿入モードに入ります。 - - To err is human ~ - -------> - c2wbe<Esc> - - To be human ~ - -"c2wbe<Esc>" は次の部分から成ります: - - c 変更オペレータ - 2w 2 単語進む (単語が削除され、挿入モードに入る) - be この文字列を挿入する - <Esc> ノーマルモードに戻る - -勘のいい人なら、ちょっと変だと感じるかも知れません。"human" の前の空白が削除さ -れていないのです。"どんな問題に関しても単純で、明解で、間違った答えがある" と -いう格言があります。この "cw" コマンドを使った例がまさにそれです。"c" オペレー -タは "d" オペレータと全く同じように使えますが、"cw" はその例外なのです。実際に -はこれは"ce"と同じく、単語末までを変更します。ですから、単語の後ろの空白は含ま -れないのです。これはかつての Vi までさかのぼる例外です。多くの人々がこれを使っ -ているので、Vim でも不本意ながら残してあるのです。 - - -その他の変更コマンド --------------------- - -"dd" で行が削除できるのと同じように、"cc" で行全体を変更できます。ただし、イン -デント(行頭の空白類)は残されます。 - -"d$" で行末まで削除できるのと同じように、"c$" で行末まで変更できます。この機能 -は "d$" で行末まで削除してから"a"で挿入モードに入り、文を追加するのと同じです。 - - -ショートカット --------------- - -いくつかのオペレータとモーションの組合せは頻繁に使われるため、1 文字コマンドと -して用意されています。 - - x は dl (カーソル下の文字を削除) - X は dh (カーソルの左側の文字を削除) - D は d$ (行末まで削除) - C は c$ (行末まで変更) - s は cl (1文字変更) - S は cc (1行変更) - - -カウンタの使い方 ----------------- - -"3dw" も "d3w" も 3 つの単語を削除するコマンドです。細かいことが気になる方のた -めに補足しておくと、最初の例(3dw)は 1 単語削除を 3 回実行し、2 つ目の例(d3w)は -3 単語の削除を 1 度だけ実行します。2 つの違いは区別できません。カウンタを 2 個 -所で指定することもできます。例えば、"3d2w"は 2 単語の削除を 3 回繰り返し、結果 -として 6 単語が削除されます。 - - -1 文字の置き換え ----------------- - -"r" コマンドはオペレータではありません。文字が入力されるまで待機し、入力された -文字で、カーソル下の文字を置き換えます。"cl" や "s" でも同じ事ができますが、 -"r" の場合は最後に <Esc> を押す必要がありません。 - - there is somerhing grong here ~ - rT rt rw - - There is something wrong here ~ - -"r" にカウンタを指定すると、指定した数の文字がすべて、同じ文字に置き換えられま -す。 - - There is something wrong here ~ - 5rx - - There is something xxxxx here ~ - -文字を改行に置き換えたい場合は "r<Enter>"を使います。1 文字削除され、改行が挿 -入されます。ただし、改行に対してカウンタは適用されません。削除する文字にのみ適 -用されます。"4r<Enter>" は 4 文字削除し、1 つの改行を挿入します。 - -============================================================================== -*04.3* 変更の繰り返し - -"." コマンドはもっともシンプルでパワフルなコマンドの一つです。これは直前の変更 -コマンドを繰り返します。例えば、HTMLファイルの編集中に、全ての<B>タグを削除す -るとしましょう。カーソルを最初の"<"に移動し、"df>"コマンドで<B>を削除します。 -次に</B>の"<"を探し、それを削除するのに"."コマンドを使います。"."コマンドは直 -前の変更コマンド(この場合なら"df>")を実行します。他のタグの削除したければ、 -カーソルを"<"の上に置いて、"."を打てばよいのです。 - - To <B>generate</B> a table of <B>contents ~ - f< 最初の < を検索 ---> - df> > まで削除 --> - f< 次の < を検索 ---------> - . df> を繰り返し ---> - f< 次の < を検索 -------------> - . df> を繰り返し --> - -"." コマンドではすべての変更を繰り返すことができますが、 "u" (undo)、CTRL-R -(redo)、先頭が ":" のコマンド、は繰り返せません。 - -例2: 文中に何度も出てくる単語 "four" を "five" に変更したいとします。次の手順 - で変更できます。 - - /four<Enter> 最初の"four"を探す。 - cwfive<Esc> その単語を"five"に変更する。 - n 次の"four"を探す - . 直前の変更を繰り返す。 - n 次の"four"を探す - . 直前の変更を繰り返す。 - 以下繰り返し。 - -============================================================================== -*04.4* ビジュアルモード - -単純なものならオペレータ-モーション方式で簡単に変更できますが、変更する範囲に -適したコマンドを選択するのが難しいこともあります。そんなときはビジュアルモード -を使ってください。 - -ビジュアルモードに入るには "v" を押します。そしてカーソルを動かして変更したい -領域を選択します。選択中はその領域が強調表示されます。最後にオペレータコマンド -を入力します。 -例えば、単語の途中から次の単語の途中までを削除するには、次のようにします。 - - This is an examination sample of visual mode ~ - ----------> - velllld - - This is an example of visual mode ~ - -この方法なら、"l" を何回押せば目的の場所まで移動できるか? などと考える必要が -全くありません。削除する範囲を確認してから "d" を押すことができます。 - -選択した範囲を変更したくなくなった場合は <Esc> キーを押してください。ビジュア -ルモードが終了し、なにも変更されません。 - - -行選択 ------- - -行全体を選択するには "V" コマンドでビジュアルモードを開始します。行全体が選択 -されます。左右に移動しても選択範囲は変更されません。上下に移動すると、選択範囲 -が行単位で拡張されます。 -例えば、"Vjj" で 3 行を選択してみましょう。 - - +------------------------+ - | text more text | - >> | more text more text | | - 選択された行 >> | text text text | | Vjj - >> | text more | V - | more text more | - +------------------------+ - - -ブロック選択 ------------- - -四角いブロック (矩形) の範囲を変更したい場合は CTRL-V でビジュアルモードを開始 -します。このモードは表を編集するような場合に非常に便利です。 - - name Q1 Q2 Q3 - pierre 123 455 234 - john 0 90 39 - steve 392 63 334 - -例えば、中央の Q2 の列を削除するには、カーソルを "Q2" の "Q" に移動します。 -CTRL-V を押し、ブロック選択ビジュアルモードに入ります。次にカーソルを "3j" で -3 行下に動かし、"w" を押して 1 単語分右に移動します。この状態では、最後の列の -先頭が範囲に含まれているので、"h" でそれをはずします。"d" を押すと、選択範囲が -削除されます。 - - -反対側に移動 ------------- - -ビジュアルモードで選択中に、選択範囲の反対側(始点)にカーソルを動かしたいとき -は、"o" を押します (o は "other end" の意味です) 。カーソルは始点に動き、始点 -を自由に変更できるようになります。もう一度 "o" を押すと、元の終点側に戻ります。 - -ブロック選択のときは 4 隅が存在します。"o" は始点と終点を斜めに動くだけです。 -同じ行の反対側に移動するには "O" を使ってください。 - -Note: ビジュアルモードの "o" と "O" はノーマルモードのコマンドとはまったく違う -動作なので注意してください。ノーマルモードではカーソル行の上や下に空行を作る機 -能です。 - -============================================================================== -*04.5* テキストの移動 - -"d" や "x" などのコマンドで何かを削除すると、そのテキストは記録されます。"p" -コマンドを使うと、そのテキストをペースト (張り付け。Vimではこれをプットと呼び -ます) できます。 -どのように動くかを見てみましょう。まず、削除したい行にカーソルを移動し、"dd" -コマンドでその行を削除します。次に、プットしたい場所にカーソルを動かして "p" -を押します。先ほど削除した行がカーソルの下に挿入されます。 - - 最初 削除後 プット後 - a line a line a line - line 2 dd line 3 p line 3 - line 3 line 2 - -行全体を削除したので、"p" コマンドにより行が挿入されました。行の一部 (単語な -ど) を削除した場合は、"p"コマンドはカーソルの直後にそれがプットされます。 - - Some more boring try text to out commands. ~ - ----> - dw - - Some more boring text to out commands. ~ - -------> - welp - - Some more boring text to try out commands. ~ - - - -その他のプット --------------- - -"P" コマンドは "p" と同じですが、カーソルの前にプットします。直前に"dd"コマン -ドで行を削除したなら、カーソルの上にその行がプットされます。"dw" で単語を削除 -した場合は、カーソルの直前にプットされます。 - -プットは何回でも好きなだけ繰り返せます。同じ文が毎回使われます。 - -"p"も"P"もカウンタを指定できます。指定しただけ、プット処理が繰り返されます。例 -えば、"dd"の後に "3p" を実行すると、削除した行のコピーが 3 つプットされます。 - - -2 文字の入れ換え ----------------- - -入力しているときに、指が頭を追い越してしまうことがしばしばあります。その結果、 -"the" を "teh" とタイポ (打ち間違い) したりすることがあります。Vim ではこの種 -の間違いを簡単に修正できます。カーソルを "teh" の "e" の上に置いて、"xp" と打 -てばよいのです。"x" で "e" の文字を削除してレジスタに入れ、"p" で ("h"の上にあ -る) カーソル の後ろにレジスタ内容をプットするのです。 - - teh th the ~ - x p - -============================================================================== -*04.6* テキストのコピー - -テキストを別の場所にコピーするには、それを削除して、"u" で削除を取り消し、他の -場所で "p" を使いプットすることもできますが、ヤンク (yank) を使えばもっと簡単 -です。"y" オペレータで文字列をレジスタにコピーできます。その文字列は "p" コマ -ンドでプットできます。 -コピーのことを Vim ではヤンクと呼びます。文字 "c" は既に変更オペレータのために -使われていたので "y" を使うことになったわけですが、"y" キーを覚えやすくするた -めにコピー操作をヤンク (yank) と読んでいます。 - -"y" はオペレータなので、"yw" とすれば単語をヤンクできます。カウンタも当然指定 -できます。2 単語をヤンクするには、"y2w" とします。例を示しましょう。 - - let sqr = LongVariable * ~ - --------------> - y2w - - let sqr = LongVariable * ~ - p - - let sqr = LongVariable * LongVariable ~ - -"yw" は単語の後の空白まで含まれるので注意してください。それが嫌なら、"ye" を -使ってください。 - -"yy" コマンドは "dd" が行削除するのと同様に、行全体をヤンクします。ただ、"D"が -行末まで削除するのに対して、"Y" は "yy" と同じ動きになります。この点は気をつけ -てください。行末までヤンクしたい時には "y$" を使ってください。 - - a text line yy a text line a text line - line 2 line 2 p line 2 - last line last line a text line - last line - -============================================================================== -*04.7* クリップボード - -GUI版の Vim (gvim) を使っている場合は、[編集] メニューに [コピー] コマンドがあ -ります。ビジュアルモードで文字列を選択してから、メニューの [編集]-[コピー] を -使ってください。選択文字列がクリップボードにコピーされるので、それを他のプログ -ラムにペーストできます。もちろん Vim 自身でも使えます。 - -他のアプリケーションでクリップボードに文字列をコピーすれば、Vim の [編集]-[貼 -り付け] メニューでそれをペーストできます。これはノーマルモードでも挿入モードで -も機能します。ビジュアルモードでは、選択文字列がペーストされた文字列に置換され -ます。 - -メニューの [編集]-[切り取り] はクリップボードにプットする前に文字列が削除され -ます。[コピー]、[切り取り]、[貼り付け] の 3 つはポップアップメニューでも使えま -す (ポップアップメニューが利用可能な場合のみ)。ツールバーが利用可能なら、そこ -にも同じ項目があるはずです。 - -GUI を使っていない場合やメニューを使いたくない場合は他の方法を使うしかありませ -ん。普通の "y" や "p" コマンドを使う前に "* (ダブルクオート + アステリスク)を -指定するのです。行を丸ごとクリップボードにコピーするには次のようにします: > - - "*yy - -クリップボードからプットするにはこうします: > - - "*p - -この機能はクリップボードをサポートした Vim でのみ動きます。クリップボードにつ -いての詳細は|09.3|章 と |clipboard|をご覧ください。 - -============================================================================== -*04.8* テキストオブジェクト - -単語の真ん中にカーソルがある場合、その単語を削除するには "dw" を実行する前に -カーソルを単語の先頭に戻す必要があります。"daw" を使うともっと簡単です。 - - this is some example text. ~ - daw - - this is some text. ~ - -"daw" の "d" は削除オペレータです。"aw" はテキストオブジェクトです。"aw" は"a -word" の意味です。つまり "daw" は "Delete A Word" という意味になります。正確に -は、単語の後の空白も削除されます (単語が行末にある場合は、行末までのすべての空 -白が削除されます)。 - -テキストオブジェクトは基本操作方法の一つです。。オペレータ-モーション方式とビ -ジュアルモードは既に述べました。そこにオペレータ + テキストオブジェクト方式が -加わります。 -これはオペレータ-モーション方式と非常に似ていますが、オペレータ-モーション方式 -では移動コマンドの前と後のカーソル位置がオペレータの範囲となっていたのに対し、 -テキストオブジェクトではオブジェクト全体を対象とします。オブジェクトのどこに -カーソルがあっても構いません。 - -文全体を変更するのは "cis" です。次の文を使いましょう: - - Hello there. This ~ - is an example. Just ~ - some text. ~ - -2 行目の先頭、"is an" の上に移動し、"cis"を実行してください: - - Hello there. Just ~ - some text. ~ - -カーソルは 1 行目の空白の間にあります。ここで新たな文 "Another line." を入力し -ます: - - Hello there. Another line. Just ~ - some text. ~ - -"cis" は変更オペレータの "c" とテキストオブジェクトの "is" から成ります。"is" -は "Inner Sentence" の意味です。"as" (a sentence) オブジェクトというのもありま -す。"as" は文の後の空白を含みますが、"is" は含みません。文を削除するときに、前 -後の空白も同時に消したい場合は "das" を使います。文を修正するため、空白を残し -ておきたい場合は "cis"を使えばよいでしょう。 - -テキストオブジェクトはビジュアルモードでも使えます。テキストオブジェクトを選択 -範囲に含めることができます。テキストオブジェクトを指定してもビジュアルモードは -終了しないので、何度でもテキストオブジェクトを使えます。例えば、"v" でビジュア -ルモードを開始して、"as" で文を選択した後に、"as" を繰り返してたくさんの文を追 -加できます。最後にオペレータを使って、選択した文を対象として、何らかの処理を行 -います。 - -テキストオブジェクトの機能一覧は |text-objects| を参照してください。 - -============================================================================== -*04.9* 置換モード - -"R" コマンドを使うと置換モードに入ります。このモードでは、入力した文字が、カー -ソル下の文字を置き換えます。このモードは <Esc> を押すまで続きます。 -例えば、"text" の 1 つ目の "t" で置換モードを開始したとします: - - This is text. ~ - Rinteresting.<Esc> - - This is interesting. ~ - -末尾の 5 文字が 12 文字の他の文字に置き換えられています。"R" コマンドは置換す -る文字がなくなると自動的に行末をずらします。次の行へ移動したりはしません。 - -<Insert> キーで挿入モードと置換モードを切り換えることができます。 - -<BS> キーで修正をしようとすると、元の文字が復元されます。直前に打った文字を -undo するような働きをします。 - -============================================================================== -*04.10* 終わりに - -オペレータ、移動コマンド、テキストオブジェクトを組み合せると、とてつもない数 -のコンビネーションを生み出すことができます。N 個のオペレータと M 個の移動コマ -ンドを組み合わせれば N * M 個のコマンドが作れるのです! - -オペレータの一覧は |operator| を参照してください。 - -テキストの一部を削除するには数多くの方法があります。ほんの一部ですが、よく使 -うものを挙げておきましょう。 - -x カーソル位置の文字を削除 ("dl"と同じ) -X カーソル位置の直前の文字を削除 ("dh"と同じ) -D カーソル位置から行末までを削除 ("d$"と同じ) -dw カーソル位置から次の単語の先頭までを削除 -db カーソル位置から直前の単語の先頭までを削除 -diw カーソル位置の単語を削除 (文の後の空白は除く) -daw カーソル位置の単語を削除 (文の後の空白を含む) -dG ファイルの末尾まで削除 -dgg ファイルの先頭まで削除 - -"d" の代わりに "c" を使うと削除ではなく、変更コマンドになります。"y" にすれ -ばヤンクコマンドです。他のオペレータも同様です。 - - -他の章では特に説明されない雑多な変更コマンドをいくつか挙げておきます: - - ~ カーソル位置の大文字/小文字を変更し、カーソルを次に進めます。 - これは('tildeop'がオフの場合は)オペレータではありません。つま - りモーションコマンドと組み合わせることができません。ビジュアル - モードで使うと選択範囲のテキスト全体が変更されます。 - - I (大文字の"i"です) カーソルを行の最初の非空白文字に移動して - 挿入モードを開始します。 - - A 行末にカーソルを動かして、挿入モードを開始します。 - -============================================================================== - -次章: |usr_05.txt| 設定の変更 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_05.jax b/doc/usr_05.jax deleted file mode 100644 index fb5ff2f75..000000000 --- a/doc/usr_05.jax +++ /dev/null @@ -1,634 +0,0 @@ -*usr_05.txt* For Vim バージョン 7.3. Last change: 2009 Jun 04 - - VIM USER MANUAL - by Bram Moolenaar - - 設定の変更 - - -あなたの望みどおりに Vim をチューニングできます。本章では、好みの設定で Vim を -起動する方法を説明します。Vim にプラグインを追加して機能拡張したり、自分でマク -ロを定義する方法も説明します。 - -|05.1| vimrc ファイル -|05.2| 見本 vimrc ファイルの解説 -|05.3| 簡単なマップ -|05.4| プラグインの追加 -|05.5| ヘルプファイルの追加 -|05.6| オプションウィンドウ -|05.7| よく使うオプション - -次章: |usr_06.txt| 構文強調表示 -前章: |usr_04.txt| 簡単な編集 -目次: |usr_toc.txt| - -============================================================================== -*05.1* vimrc ファイル *vimrc-intro* - -よく使うコマンドを入力するのが面倒に感じたことがあるでしょう。好みのオプション -やマップを設定した状態で Vim を起動するには、vimrc というファイルに設定を書い -てください。そのファイルに書いたコマンドは、Vim が起動するときに実行されます。 - -すでに vimrc ファイルがある場合 (例えばシステム管理者が設置した場合など) は、 -次のコマンドでそのファイルを開くことができます: > - - :edit $MYVIMRC - -vimrc ファイルがまだない場合は |vimrc| を参照して vimrc ファイルを作成する場所 -を確認してください。":version" コマンドで表示される "ユーザ vimrc" の表示を見 -て確認することもできます。 - -Unix と Macintosh ではこのファイルを使ってください。 - - ~/.vimrc ~ - -MS-DOS と MS-Windows では次のどちらかです。 - - $HOME/_vimrc ~ - $VIM/_vimrc ~ - -vimrc ファイルには、コロン (:) を押してから入力するコマンドなら、どのコマンド -でも書くことができます。一番わかりやすいのはオプション設定です。例えば、毎回 -'incsearch' オプションをオンに設定したい場合は、vimrc ファイルに次の一行を加え -ます。 > - - set incsearch - -この新しい行を有効にするには、Vim を終了し、再起動する必要があります。再起動し -ないで設定を反映する方法は後で説明します。 - -この章では、ごく基本的な項目だけを説明します。Vim スクリプトのより詳しい情報に -ついては |usr_41.txt| を参照してください。 - -============================================================================== -*05.2* 見本 vimrc ファイルの解説 *vimrc_example.vim* - -第一章では、Vim の配布物に付属の見本 vimrc ファイルを使って、非互換モード -(|not-compatible|参照) で Vim を起動する方法を説明しました。見本 vimrc ファイ -ルは次のディレクトリにあります: - - $VIMRUNTIME/vimrc_example.vim ~ - -この節では、このファイルで使われているコマンドを説明します。自分用の設定をする -ときの参考にしてください。しかし、全てを説明するわけではないので、詳しいことは -":help" コマンドで調べてください。 - -> - set nocompatible - -第一章で述べたように、このマニュアルでは「Vim」について説明しているので、Vi と -は完全に互換性がない部分があります。動作を同じにするには、'compatible' オプ -ションをオフに設定する必要があります。 - -> - set backspace=indent,eol,start -< -挿入モードで <BS> を使って削除できる文字を指定しています。コンマで区切られた三 -つの部分はそれぞれ次の文字の削除を許可しています。 - indent 行頭の空白 - eol 改行 - start 挿入モード開始位置より手前の文字 -> - - set autoindent - -新しい行を作成したときに、直前の行と同じだけインデントされるようになります。つ -まり、新しい行の行頭に直前の行と同じだけの空白が挿入されます。例えば、挿入モー -ドで <Enter> キーを押したときや、"o" コマンドで新しい行を作成したときに機能し -ます。 -> - - if has("vms") - set nobackup - else - set backup - endif - -ファイルを上書きしたときに、バックアップファイルを削除しないように指定していま -す。ただし VMS システムでは OS が古いバージョンを保持してくれるので、オフにし -ています。バックアップファイルのファイル名はオリジナルの名前に "~" を加えたも -のになります。|07.4|を参照してください。 -> - - set history=50 - -コマンドを50個分、検索パターンを50個分、ヒストリ(履歴)として残します。記録の容 -量を増減したいときはこの値を変更してください。 -> - - set ruler - -現在のカーソル位置(行、桁)を Vim ウィンドウの右下に常に表示します。 - -> - set showcmd - -入力途中の (まだ実行していない) コマンドを Vim ウィンドウの右下 (rulerの左側) -に表示します。例えば、"2f" と入力したとき、Vim は検索文字の入力を待っていて、 -画面の右下には "2f" と表示されます。次に "w" と入力すると、"2fw" というコマン -ドが完成するので、それが実行され、画面の "2f" という表示も消去されます。 - - +-------------------------------------------------+ - |text in the Vim window | - |~ | - |~ | - |-- VISUAL -- 2f 43,8 17% | - +-------------------------------------------------+ - ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ - 'showmode' 'showcmd' 'ruler' - -> - set incsearch - -検索パターンを入力中に、入力途中のパターンにマッチする文字列を表示します。 - -> - map Q gq - -キーマップを定義しています。詳しくは次の節で述べます。ここでは、"gq" オペレー -タのフォーマット機能を "Q" コマンドとして定義しています。"Q" の動作が Vim 4.0 -以前と同じになります。実際の "Q" は EX モードへの移行コマンドですが、おそらく -必要ないでしょう。 - -> - vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR> - -このマップは、選択されたテキストをヤンクして、それを C ファイルの中から検索し -ます。これは複雑なマップです。マップを使ってとても難しいことができるということ -が分かってもらえたと思います。とはいっても、実際にコマンドを手入力するのと同じ -ように一連のコマンドを実行しているに過ぎません。 - -> - if &t_Co > 2 || has("gui_running") - syntax on - set hlsearch - endif - -カラー表示が使えるかどうかを確認し、構文強調表示を有効にしています。さらに、 -'hlsearch' オプションをオンにして、検索にマッチした箇所が強調表示されるように -しています。特定の条件のときだけオプションを設定したい場合は "if" コマンドが便 -利です。 詳しくは、|usr_41.txt|を参照してください。 - - *vimrc-filetype* > - filetype plugin indent on - -三つの便利な機能を有効にしています: -1. ファイルタイプの検出 - ファイルを開いたときに、そのファイルの種類を特定します。例えば、"main.c" を - 開いた場合は、拡張子の ".c" を見てファイルタイプは "c" だと判断します。ファ - イルの一行目が "#!/bin/sh" で始まっていた場合は、ファイルタイプは "sh" だと - 判断します。 - 検出されたファイルタイプは構文強調と次の 2 つの項目で使われます。 - |filetypes|参照。 - -2. ファイルタイププラグインを使う - ファイルを開いたときに、ファイルタイプに応じたオプションが設定されます。例 - えば、"c" ファイルの場合なら自動的にインデントしてくれる'cindent' オプショ - ンは欠かせないでしょう。こういった、一般的に便利な設定がファイルタイププラ - グインの中に入っています。自分でプラグインを追加することもできます。 - |write-filetype-plugin|参照。 - -3. インデントファイルを使う - プログラミング言語のインデントはほとんど自動的に計算できます。Vim にはファ - イルタイプに応じたインデントルールが数多く用意されています。 - |:filetype-indent-on| と 'indentexpr' 参照。 - -> - autocmd FileType text setlocal textwidth=78 - -行が長くなりすぎないように78文字で分割するように指定しています。このルールはテ -キストファイルにだけ適用されます。この記述には二つの要素があります。"autocmd -FileType text" はオートコマンド定義です。この場合、ファイルタイプが "text" に -設定されたときに、指定したコマンドが自動的に実行されます。"setlocal -textwidth=78" はそのファイルの 'textwidth' オプションを 78 に設定しています。 - - *restore-cursor* > - autocmd BufReadPost * - \ if line("'\"") > 1 && line("'\"") <= line("$") | - \ exe "normal! g`\"" | - \ endif - -オートコマンドをもう一つ。ファイルを読み込んだ直後に実行されるオートコマンドを -定義しています。後ろのごちゃごちゃした部分は「'" マークが定義されているかどう -かをチェックし、定義があればそこにジャンプする」という意味です。コマンドを複数 -行に分けて書くために、行頭に "\" を書いています。行がやたらと長くなるのを防ぐ -ためです。|line-continuation|参照。"\" は Vim スクリプト内でのみ使えます。コマ -ンドラインで入力するときは使えません。 - -============================================================================== -*05.3* 簡単なマップ - -マップを使うと、複数のコマンドを 1 つのキー繰作にまとめることができます。例え -ば、ある単語を {} で囲みたいとします。つまり、"amount" を "{amount}" にしたい -わけです。:map コマンドを使って、その操作を <F5> キーに割り当てることができま -す。次のように書きます。 > - - :map <F5> i{<Esc>ea}<Esc> -< - Note: - このコマンドを入力するときの注意点。 - <F5> 見たままのは 4 文字の文字列として入力してください。<Esc> も同じで - す。<Esc> キーを押すのではなく、 5 文字の文字列として入力してください。 - このマニュアルを読むときはその違いに注意してください ! - -この定義を分解してみましょう。 - <F5> ファンクションキーのF5です。このキーを押すと、定義してあるコマ - ンドが実行されます。 - - i{<Esc> "{" 文字を挿入し、<Esc> キーで挿入モードから抜けます。 - - e 単語の末尾に移動します。 - - a}<Esc> "}" 文字を追加します。 - -この ":map" コマンドを実行した後は、カーソルを単語の先頭に動かして F5 キーを押 -すだけで単語の両側に {} を追加できます。 - -この例では、コマンドは 1 キーでしたが、どの文字列でも割り当てることができます。 -ただし、Vim のコマンドと同じ文字列を割り当てると、元のコマンドが使えなくなるの -で、それは避けた方が無難です。 -複数キーを組み合わせるときには、バックスラッシュ(日本語環境では円記号)がよく使 -われます。マップをたくさん定義したい場合は、複数文字を使ってください。例えば、 -単語を () で囲むには "\p" で、単語を {} で囲むには "\c" で、といったことができ -ます。 > - - :map \p i(<Esc>ea)<Esc> - :map \c i{<Esc>ea}<Esc> - -"\" と "p" はくっつけてください。そうすれば Vim は 2 文字のマップだと認識でき -ます。 - -引数なしの ":map" コマンドで現在のマップ定義の一覧を表示できます。表示された -マップは、少なくともノーマルモードで使えます。より詳しくは|40.1|章を参照してく -ださい。 - -============================================================================== -*05.4* プラグインの追加 *add-plugin* *plugin* - -プラグインを追加することで機能拡張できます。プラグインといっても、Vimが起動さ -れたときに自動的に読み込まれるだけの、ただの Vim スクリプトファイルです。ファ -イルをプラグインディレクトリにコピーするだけで簡単にプラグインを追加できます。 -{|+eval|が有効な場合のみ利用できます} - -2 種類のプラグインがあります。 - - グローバルプラグイン 全種類のファイルで使われるプラグイン - ファイルタイププラグイン 特定タイプのファイルでのみ使われるプラグイン - -まず、グローバルプラグインについて説明し、次にファイルタイププラグインの説明 -|add-filetype-plugin|をします。 - - -グローバルプラグイン *standard-plugin* --------------------- - -Vim を起動すると、自動的にいくつものグローバルプラグインがロードされます。特に -何もしなくて大丈夫です。グローバルプラグインは、ほとんどの人が欲しいと思うだろ -う機能を提供しています。それらの機能は Vim の中にコンパイルして組み込まれてい -るのではなく、Vim スクリプトとして実装されています。ヘルプの目次にプラグインの -一覧があります|standard-plugin-list|。|load-plugins|も参照してください。 - - *add-global-plugin* -グローバルプラグインを追加すると、いつでもその機能を使えるようになります。 -グローバルプラグインを追加するのは簡単です。 -1. プラグインを入手する -2. 正しいディレクトリにコピーする - - -グローバルプラグインを入手する ------------------------------- - -プラグインはどこにありますか? -- Vim の配布物にいくつか含まれています。$VIMRUNTIME/macros ディレクトリをご覧 - ください -- インターネットからダウンロードする。たくさんのプラグインが - http://www.vim.org にあります。 -- Vim のメーリングリスト|maillist|に投稿されることもあります。 -- あなたが自作することもできます。プラグインの書き方|write-plugin|をどうぞ。 - -いくつかのプラグインは vimball アーカイブで配布されています。|vimball|参照。 -いくつかのプラグインは自動更新可能です。|getscript|参照。 - - -グローバルプラグインを使う --------------------------- - -まず、プラグイン自身のドキュメントを読んで、動作条件を確認してください。 -次にそれをプラグインディレクトリにコピーします。 - - system plugin directory ~ - Unix ~/.vim/plugin/ - PC や OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin - Amiga s:vimfiles/plugin - Macintosh $VIM:vimfiles:plugin - Mac OS X ~/.vim/plugin/ - RISC-OS Choices:vimfiles.plugin - -Unixの場合の例 (プラグインディレクトリがまだない場合) > - - mkdir ~/.vim - mkdir ~/.vim/plugin - cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin - -これだけです。vimを再起動するとプラグインで定義されたコマンドが使えます。 - -plugin/ ディレクトリ以下にファイルを置く代わりに、それらのファイルを plugin/ -ディレクトリ以下のサブディレクトリに置くこともできます。例えば、Perl 用のプラ -グインを "~/.vim/plugin/perl/*.vim" に置いたりできます。 - - -ファイルタイププラグイン *add-filetype-plugin* *ftplugins* ------------------------- - -Vim の配布パッケージにはたくさんのファイルタイププラグインが入っています。 -次のコマンドで利用開始できます。 > - - :filetype plugin on - -これだけです。|vimrc-filetype|も参照してください。 - -使いたいファイルタイププラグインがない場合や、標準より良いものを見つけた場合 -は、追加することもできます。ファイルタイププラグインの追加は次の手順で行いま -す: -1. プラグインを入手する -2. 正しいディレクトリにコピーする - - -ファイルタイププラグインを入手する ----------------------------------- - -ファイルタイププラグインもグローバルプラグインと同じ方法で入手できます。プラグ -インの種類が記載されているのでそれを見て、そのプラグインがグローバルプラグイン -かファイルタイププラグインか確認してください。$VIMRUNTIME/macros に入っている -のはグローバルプラグインです。$VIMRUNTIME/ftplugin に入っているのはファイルタ -イププラグインです。 - - -ファイルタイププラグインを使う *ftplugin-name* ------------------------------- - -ファイルタイププラグインは正しいディレクトリにコピーするだけで追加できます。 -ディレクトリの場所はグローバルプラグインと同じですが、ディレクトリ名の最後の部 -分が "ftplugin" となります。例えば "staff" ファイルタイプ用のプラグインを Unix -システムに入れるとしましょう。入手したファイルを次のコマンドで ftplugin ディレ -クトリに移します: > - - mv thefile ~/.vim/ftplugin/stuff.vim - -そのファイルがすでにある場合は、既存のプラグインと追加しようとしているプラグイ -ンを同時に使っても問題ないかどうか確認してください。問題がなければ別の名前に変 -えましょう: > - - mv thefile ~/.vim/ftplugin/stuff_too.vim - -アンダースコアはファイルタイプの名前とそれ以外を区切るのに使います。アンダース -コア以降はどんな文字列でも構いません。しかし、"otherstuff.vim" といった名前に -した場合はうまく動きません。そのファイルは "otherstuff" というファイルタイプの -ときにだけロードされます。 - -MS-DOS では長いファイル名が使えません。プラグインを追加するときに、ファイルタ -イプ名が 6 文字以上だと問題が生じます。そういうときはさらにディレクトリを掘っ -てください: > - - mkdir $VIM/vimfiles/ftplugin/fortran - copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim - -ファイルタイププラグインの名前付けルールは次の通りです: > - - ftplugin/<filetype>.vim - ftplugin/<filetype>_<name>.vim - ftplugin/<filetype>/<name>.vim - -"<name>" の部分はどんな文字列でも構いません。 -以下は Unix での "staff" ファイルタイプの例です: > - - ~/.vim/ftplugin/stuff.vim - ~/.vim/ftplugin/stuff_def.vim - ~/.vim/ftplugin/stuff/header.vim -< -<filetype> の部分はプラグインの対象になっているファイルタイプ名です。同じファ -イルタイプのファイルだけがそのプラグインを使います。<name> の部分は無視されま -す。一つのファイルタイプに複数のプラグインを登録する場合に使ってください。 -Note: ファイルの拡張子は必ず ".vim" にしてください。 - - -詳しくは以下を参照してください: -|filetype-plugins| ファイルタイププラグインについてのドキュメントと、マッ - プで問題が発生した場合の対処方法。 -|load-plugins| 起動時にロードされるグローバルプラグイン。 -|ftplugin-overrule| 標準のファイルタイププラグインの設定を上書きする。 -|write-plugin| プラグインスクリプトの書き方。 -|plugin-details| プラグインの使い方やプラグインが動かない場合について - の詳細な情報。 -|new-filetype| 新しいファイルタイプを追加するには。 - -============================================================================== -*05.5* ヘルプファイルの追加 *add-local-help* *matchit-install* - -運が良ければ、プラグインにはヘルプファイルが添付されています。ここでは、ヘルプ -ファイルのインストール方法を説明します。 インストールしておけば新しいプラグイ -ンのヘルプを簡単に調べることができます。 -"matchit.vim" プラグイン (Vim の配布パッケージに入っています) を例にやってみま -しょう。このプラグインは "%" コマンドを拡張し、対応する HTML タグや、Vim スク -リプトの if/else/endif間でジャンプできるようにします。これはとても便利です。後 -方互換性がないので、標準では有効になっていません。 -このプラグインにはヘルプ "matchit.txt" が付属しています。最初にプラグイン本体 -を適切なディレクトリにコピーしましょう。今回は Vim の中から操作するので、 -$VIMRUNTIME が使えます。(ディレクトリがすでにある場合は、"mkdir" コマンドを省 -略してください。) > - - :!mkdir ~/.vim - :!mkdir ~/.vim/plugin - :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin - -"cp" は Unix のコマンドです。MS-DOS では "copy" を使ってください。 - -次に 'runtimepath' のいずれかのディレクトリに "doc" ディレクトリを作ります。 > - - :!mkdir ~/.vim/doc - -"doc" ディレクトリにヘルプファイルをコピーします。 > - - :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc - -続いて、新しいヘルプファイルの項目にジャンプできるように仕掛けをします。 -|:helptags|コマンドを使ってタグファイルを生成してください。 > - - :helptags ~/.vim/doc - -さて、これで次のコマンドが使えます。 > - - :help g% - -これは上で追加したヘルプファイルの中から "g%" のヘルプを探すコマンドです。次の -コマンドでローカルヘルプの目次を見ることができます。 > - - :help local-additions - -ここには、インストールしたローカルヘルプのタイトルが自動的に追加されます。ここ -を見れば、どんなローカルヘルプが追加されているかわかります。ここからタグジャン -プもできます。 - -ローカルヘルプファイルの書き方については|write-local-help|を参照してください。 - -============================================================================== -*05.6* オプションウィンドウ - -何かのオプションを探しているなら、ヘルプファイル |options| から見つけることが -できるでしょう。もう一つ、次のコマンドを使う方法もあります: > - - :options - -新しいウィンドウが開き、一行解説付きのオプションの一覧が表示されます。オプショ -ンは種類別にグループ化されています。カーソルを目次の上に動かして <Enter> を押 -すとそこにジャンプできます。もう一度 <Enter> を押すか、CTRL-O を押すと戻れま -す。 - -その場でオプションの値を設定できます。例えば、"displaying text" グループに移動 -し、カーソルを次の行まで持っていきます: - - set wrap nowrap ~ - -ここで <Enter> を押すと、表示が次のようになります: - - set nowrap wrap ~ - -このオプションはオフになりました。 - -この行の上には 'wrap' オプションの簡単な説明があります。説明のところにカーソル -を動かして、<Enter> を押すと、'wrap' オプションのヘルプにジャンプできます。 - -数値や文字列を引数に取るオプションの場合、値を編集できます。修正後に<Enter> -キーを押すとそれが新しい値として設定されます。例えば、カーソルを次の行まで -('wrap'の少し上に) 動かしてください。 - - set so=0 ~ - -"$" コマンドでカーソルを "0" の上に動かし、"r5" で値を 5 に変更します。<Enter> -を押すと、その値が設定されます。カーソルを動かしてみると、画面の端までカーソル -が達する前にスクロールが始まることに気づくと思います。これは 'scrolloff' オプ -ションのしわざです。ウィンドウの端からのオフセットを設定し、スクロールが開始す -る位置を指定しています。 - -============================================================================== -*05.7* よく使うオプション - -Vim には本当に大量のオプションがあります。ほとんどのオプションは使う機会がない -と思います。ここでは一部のよく使うものだけを説明します。これらのオプションには -より詳しいヘルプがあることをお忘れなく。ヘルプを見るには、":help" に続けてアポ -ストロフィで囲んだオプション名を指定してください: > - - :help 'wrap' - -オプションの値がおかしくなってしまったら、初期設定に戻すことができます。初期設 -定に戻すのにはアンパサンド(&)を使います: > - - :set iskeyword& - - -行の折り曲げの禁止 ------------------- - -長い行は、文の全体が見えるように、画面の右端で折り曲げて表示されます。しかし -ウィンドウの右にはみ出した方が良い場合もあります。その場合は、左右にスクロール -して長い行を表示することになります。次のコマンドで折り曲げしないようになりま -す: > - - :set nowrap - -表示されていない領域にカーソルを動かすと自動的にスクロールされます。10 文字ず -つスクロールするには、次のようにします: > - - :set sidescroll=10 - -これはファイルの内容には影響しません。表示方法を変更するだけです。 - - -折り返して移動するコマンド --------------------------- - -ほとんどの移動コマンドは行頭と行末で移動を停止します。'whichwrap' オプションで -それを変更できます。次の例では、'whichwrap' を初期設定に設定しています: > - - :set whichwrap=b,s - -ここでは、<BS> キーで行頭から 1 つ上の行の行末へ動くことを許可しています。ま -た、<Space> キーで行末から次の行の行頭への移動することを許可しています。 - -カーソルキーの <Left> と <Right> もこのコマンドで折り返しを許可できます: > - - :set whichwrap=b,s,<,> - -この指定はノーマルモードでのみ有効です。挿入モードでも <Left> と <Right> を許 -可するには次のように指定します: > - - :set whichwrap=b,s,<,>,[,] - -他にもいくつかフラグがあります。詳しくは 'whichwrap' を参照してください。 - - -TAB を表示する --------------- - -ファイル中に Tab 文字があっても、それを視認することはできません。Tab 文字が表 -示されるようにしましょう: > - - :set list - -Tab 文字が ^I と表示されます。行末には $ と表示され、通常なら気付かないよう -な、行末の空白もよくわかるようになります。 -これの欠点はファイルに Tab 文字がたくさんあると見づらくなる点です。カラー端末 -か GUI を使っている場合は、空白と Tab 文字を別の文字に置き換えて強調表示するこ -とができます。'listchars' オプションを使ってください: > - - :set listchars=tab:>-,trail:- - -Tab 文字は全て ">---" と表示され、行末の空白は "-" と表示されます。この方が -ずっとイイと思いませんか? - - -キーワード ----------- - -'iskeyword' オプションは単語に使える文字を定義しています: > - - :set iskeyword -< iskeyword=@,48-57,_,192-255 ~ - -"@" は「すべてのアルファベット」を表しています。"48-57" は ASCII コード の 48 -から 57 までの文字、つまり "0" から "9" までの数字を表しています。"192-255" は -印字可能なラテン文字です。 -例えば、"upper-case" を1つの単語と扱って欲しい場合は、"-" をキーワードに追加 -します。次のように設定してください: > - - :set iskeyword+=- - :set iskeyword -< iskeyword=@,48-57,_,192-255,- ~ - -新しい設定をみると、"-" の直前に "," が自動的に追加されています。 -キーワードから文字を削除するには "-=" を使います。アンダースコアを削除するには -次のようにします: > - - :set iskeyword-=_ - :set iskeyword -< iskeyword=@,48-57,192-255,- ~ - -"_" を削除すると "," も自動的に削除されました。 - - -メッセージ行 ------------- - -初期設定では、最下段の一行がメッセージの表示に使われます。メッセージが長いとき -は、メッセージを切り詰めて一部だけ表示するか、メッセージをスクロールして表示 -し、最後に <Enter> を押してもらうかのどちらかです。 -メッセージの表示に使う行数は 'cmdheight' オプションで設定できます: > - - :set cmdheight=3 - -編集画面が狭くなってしまうので、ほどほどの値を設定してください。 - -============================================================================== - -次章: |usr_06.txt| 構文強調表示 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_06.jax b/doc/usr_06.jax deleted file mode 100644 index 324d2beb8..000000000 --- a/doc/usr_06.jax +++ /dev/null @@ -1,278 +0,0 @@ -*usr_06.txt* For Vim バージョン 7.3. Last change: 2009 Oct 28 - - VIM USER MANUAL - by Bram Moolenaar - - 構文強調表示 - - -白黒だけのテキストは退屈です。カラー表示すればファイルも生き生き見えてきます。 -これは単に見た目が良いだけではなく、作業のスピードアップにもつながります。意味 -のある文字列は違う色で表示しましょう。そして、画面と同じ色で印刷しましょ -う。 - -|06.1| 構文強調表示を有効にする -|06.2| 色がつかない?変な色になる? -|06.3| 色を変える -|06.4| カラーを使う?使わない? -|06.5| カラー印刷 -|06.6| 詳しい情報 - -次章: |usr_07.txt| 複数のファイルを開く -前章: |usr_05.txt| 設定の変更 -目次: |usr_toc.txt| - -============================================================================== -*06.1* 構文強調表示を有効にする - -次の簡単なコマンドで全てが始まります。 > - - :syntax enable - -これで、カラー表示になるはずです。ファイルタイプが自動的に特定され、適切な構文 -強調がロードされます。すると、コメントは青、キーワードは茶色、文字列は赤、と -いった具合にカラー表示になります。ファイルが見やすくなりましたね。しばらくする -と、白黒のテキストがあなたの足を引っ張っていたことに気づくでしょう。 - -常に構文強調表示を使いたい場合は、":syntax enable" コマンドを|vimrc|ファイルに -追加してください。 - -カラー端末のときだけ使いたい場合は、次のコマンドを|vimrc|ファイルに追加してく -ださい。 > - if &t_Co > 1 - syntax enable - endif - -GUI バージョンのときだけ使いたい場合は、":syntax enable" を |gvimrc| ファイル -に追加してください。 - -============================================================================== -*06.2* 色が付かない?変になる? - -カラー表示がうまくいかない理由はいろいろあります: - -- カラー端末じゃない。 - Vim は、太字やイタリック、下線も使えます。でもそれだけではあまりカッコ - 良くはできません。カラー対応の端末を入手するのがいいでしょう。 - Unixなら、XFree86プロジェクト(|xfree-xterm|)のxtermがお勧めです。 - -- カラー端末であることを Vim が認識できない - $TERM の設定が正しいかどうかを確認してください。例えば、カラー対応の - xterm なら次のように設定します: > - - setenv TERM xterm-color -< - シェルによってはこうかもしれません: > - - TERM=xterm-color; export TERM - -< 端末名と実際に使っている端末名は同じでないといけません。それでも - うまく動かない場合は、|xterm-color|を参照してください。この文書には - Vim をカラー表示にする方法がいくつか書いてあります。(xtermに限った文書 - ではありません) - -- ファイルタイプが識別できなかった。 - いくら Vim でも古今東西のファイルタイプをすべて知っているわけではあり - ません。ファイルが言語を特定するのが困難な場合もあります。このコマンド - を使ってみてください。 > - - :set filetype -< - この結果が "filetype=" ならば、ファイルタイプが認識できなかったという - ことです。手動でファイルタイプを指定することもできます。 > - - :set filetype=fortran - -< どんなタイプが使えるかは、$VIMRUNTIME/syntax のディレクトリを見て - ください。GUI なら、[シンタックス]メニューも使えます。 - ファイルタイプの設定はモード行(|modeline|)でも出来ます。モード行で指定 - すれば、そのファイルを開いたときにカラー表示が必ず設定されます。例え - ば、Makefile なら次のように書きます。(ファイルの最初か最後に近い場所に - 書いてください): > - - # vim: syntax=make - -< あなたはファイルタイプの判定方法を知っているかもしれませんね。ほとんど - のファイルは拡張子を見ればファイルタイプがわかります。 - ファイルタイプを検出して設定する方法については|new-filetype|を参照して - ください。 - -- ファイルタイプ用の構文定義がない - 似ているファイルタイプを手動で設定して使ってみてください。それでも不満 - な場合は、自分で構文定義ファイルを書くこともできます。詳しくは - |mysyntaxfile|を参照してください。 - - -色がおかしい場合: - -- 色付きの文字が非常に読みづらい - Vim は使われている背景色を推測します。黒 (もしくは同様の暗色) なら、明 - るい色で文字を表示します。白 (もしくは同様の明るい色) なら、暗い色で文 - 字を表示します。Vim の予想がはずれると、文字は読みづらくなります。 - これは 'background' オプションを設定することで解決できます。暗い背景色 - を使っている場合は、次のように設定してください: > - - :set background=dark - -< 明るい背景色なら次のように設定してください: > - - :set background=light - -< このコマンドは ":syntax enable" より *前* に実行してください。色が設 - 定された後では意味がありません。後から 'background' を設定した場合は、 - ":syntax reset" を実行すると、標準色に戻すことができます。 - -- 上に向ってスクロールしたときに色が間違っている - 構文解析は、ファイル全体を読んでるわけではありません。画面に表示されて - いるところから、解析は始まります。これだと時間を大幅に節約できるのです - が、時には色を間違ってしまいます。直すには単に CTRL-L を押してくださ - い。あるいは、少し多めに上スクロールしてから戻ると直ります。 - 根本的に解決するには、|:syn-sync|を参照してください。一部の構文ファイ - ルは、ずっと上の方まで戻って解析をしています。詳しくは個々の構文定義 - ファイルのヘルプを参照してください。例えば、TeX 用の定義ファイル - |tex.vim|がそれを行っています。 - -============================================================================== -*06.3* 色を変える *:syn-default-override* - -標準色が好みでなければ、他の色テーマを使うことができます。GUI ならメニューの -[編集]-[色テーマ] が使えます。コマンドで指定することもできます: > - - :colorscheme evening - -"evening" というのは色テーマの名前です。色テーマは他にもたくさんあります。ディ -レクトリ $VIMRUNTIME/colors をご覧ください。 - -好みの色テーマを見つけたら、":colorscheme" コマンドを|vimrc|ファイルに追加して -ください。 - -自分で色テーマを作ることもできます。その手順は次の通りです。 - -1. 作りたいテーマに近い色テーマを選び、それを自分の Vim ディレクトリにコピーし - ます。Unix なら次のとおりです: > - - !mkdir ~/.vim/colors - !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim -< - $VIMRUNTIME は Vim が設定する環境変数なので、このコマンドは Vim から実行し - てください。 - -2. 色テーマファイルを編集します。この一覧が役に立つでしょう: - - term 白黒端末での属性 - cterm カラー端末での属性 - ctermfg カラー端末での文字色 - ctermbg カラー端末での背景色 - gui GUI での属性 - guifg GUI での文字色 - guibg GUI での背景色 - - 例えば、コメントを緑にするにはこのようにします。 > - - :highlight Comment ctermfg=green guifg=green -< - "cterm"と"gui"の属性には、"bold"と"underline"が指定できます。両方を指定した - い場合は、"bold,underline"のように指定します。詳しくは|:highlight|を参照し - てください。 - -3. 作った色テーマが使われるように設定します。この行を|vimrc|に追加してくださ - い: > - - colorscheme mine - -次のコマンドで、よく使われる色の組み合わせを表示して、見栄えを確認できます: > - - :runtime syntax/colortest.vim - -いろんな色の組み合せが表示されます。どれが読みやすくて見た目が良いかチェックし -てください。 - -============================================================================== -*06.4* カラーを使う?使わない? - -テキストをカラーで表示するには、たくさんの計算が必要です。表示が遅すぎると感じ -たときは、構文強調表示を一時的に止めてみてください: > - - :syntax clear - -他のファイル (又は同じファイル) を開くと、再びカラー表示されます。 - - *:syn-off* -構文強調表示を完全に無効にするには、このようにします: > - - :syntax off - -これで、構文強調表示が無効になり、すべてのバッファが白黒表示になります。 - - *:syn-manual* -特定のファイルだけ構文強調表示するには、このようにします: > - - :syntax manual - -構文強調表示は有効になりますが、ファイルを開いても、自動的にはカラー表示になり -ません。'syntax' オプションを設定すると、カレントバッファがカラー表示になりま -す: > - - :set syntax=ON -< -============================================================================== -*06.5* カラー印刷 *syntax-printing* - -MS-Windows では、次のコマンドでファイルを印刷できます: > - - :hardcopy - -通常の印刷ダイアログが表示されるので、プリンタを選択し、設定してください。カ -ラープリンタを使っている場合は、画面に表示されているのと同じように印刷されま -す。ただし、背景色を暗い色にしている場合は、白い紙に適した色に変更されます。 - -印刷方法を変更するには、以下のオプションを設定してください: - 'printdevice' - 'printheader' - 'printfont' - 'printoptions' - -一部の範囲だけ印刷するには、ビジュアルモードで印刷したい範囲を選択し、印刷コマ -ンドを実行してください: > - - v100j:hardcopy - -"v" でビジュアルモードを開始して、"100j" で 100 行下まで移動すると、その範囲が -選択されます。":hardcopy" で選択範囲が印刷されます。もちろん、ビジュアルモード -では他のコマンドを使って移動することもできます。 - -PostScript プリンタを使っている場合は Unix でも同様に印刷できます。PostScript -を印刷できない場合は多少の手間がかかります。テキストを HTML に変換してから Web -ブラウザで印刷してください。 - -現在のファイルを HTML に変換するには次のコマンドを使います: > - - :TOhtml - -動かない場合は次のコマンドを試してください: > - - :source $VIMRUNTIME/syntax/2html.vim - -カリカリと音を立て処理が開始します。巨大なファイルの変換にはしばらく時間がかか -ります。しばらくすると別ウィンドウに HTMLコードが表示されるので、どこかに保存 -してください (後で削除するファイルなので、適当な場所に保存してください): -> - :write main.c.html - -このファイルをお好みのブラウザで開いて印刷してください。うまくいけば、Vim の画 -面での表示と全く同じものが印刷されます。詳しくは|2html.vim|を参照してくださ -い。全てが終わったら、HTMLファイルは削除してしまいましょう。 - -印刷する代りに、HTML ファイルを Web サーバに置いて、他の人にカラー付きの文書と -して提供することもできます。 - -============================================================================== -*06.6* 詳しい情報 - -|usr_44.txt| 構文定義の自作 -|syntax| 全ての詳細 - -============================================================================== - -次章: |usr_07.txt| 複数のファイルを開く - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_07.jax b/doc/usr_07.jax deleted file mode 100644 index 6dfa2403c..000000000 --- a/doc/usr_07.jax +++ /dev/null @@ -1,481 +0,0 @@ -*usr_07.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - 複数のファイルを開く - - -どんなにファイルが多くても心配はいりません。Vim を複数起動することなしに、それ -らのファイルを編集できます。作業するファイルのリストを定義して、他のファイルに -ジャンプしたりテキストをコピーしたりできます。 - -|07.1| 他のファイルを開く -|07.2| ファイルのリスト -|07.3| 他のファイルにジャンプする -|07.4| バックアップファイル -|07.5| 他のファイルにテキストをコピーする -|07.6| 読み込み専用モード -|07.7| ファイル名の変更 - -次章: |usr_08.txt| ウィンドウの分割 -前章: |usr_06.txt| 構文強調表示 -目次: |usr_toc.txt| - -============================================================================== -*07.1* 他のファイルを開く - -いままでは、ファイルを開くごとに Vim を起動しなければなりませんでしたが、もっ -と簡単な方法があります。次のコマンドを使ってください: > - - :edit foo.txt - -ファイル名は "foo.txt" に限らず何でも使えます。Vim は現在のファイルを閉じて、 -指定されたファイルを開きます。ファイルの変更が保存されていない場合は、エラー -メッセージが表示され、新しいファイルは開かれません。 - - E37: 最後の変更が保存されていません (! で変更を破棄) ~ - - Note: - エラーメッセージの先頭には エラーID が表示されます。エラーの意味や原因 - がわからない場合は、この ID をヘルプで引いてください。上記エラーの場合 - は、このようにします: > - - :help E37 - -このエラーを回避するには、次のコマンドでファイルを保存してください: > - - :write - -あるいは、変更を破棄して新しいファイルを開くこともできます。(!) 文字を使ってく -ださい: > - - :edit! foo.txt - -ファイルの変更を保存せずに他のファイルを開きたい場合は、ファイルを隠す方法もあ -ります: > - - :hide edit foo.txt - -ファイルの変更はまだ破棄されませんが、ファイルは画面外に隠れてしまいます。詳し -くは|22.4|バッファリスト で説明します。 - -============================================================================== -*07.2* ファイルのリスト - -Vim を起動するときに、複数のファイルを指定することができます。例: > - - vim one.c two.c three.c - -このコマンドは Vim を起動し、三つのファイルを開くように指示しています。Vim は -一つ目のファイル (one.c) だけを表示します。そのファイルの編集が終わり、次のファ -イル (two.c) を編集したい場合はこのコマンドを使います: > - - :next - -ファイルの変更が保存されていない場合は、エラーメッセージが表示され、":next" コ -マンドは中断されます。前節で述べた ":edit" の場合と同じです。変更を破棄するに -は次のコマンドを使います。 > - - :next! - -しかしほとんどの場合、変更を保存してから次のファイルを開くと思います。それには -専用のコマンドが用意されています。 > - - :wnext - -これは次の二つのコマンドを使うのと同じ結果となります。 > - - :write - :next - - -私はドコにいるの? ------------------- - -今編集しているのが引数リスト中のどのファイルなのかは、ウィンドウタイトルを見れ -ばわかります。そこに "(2 of 3)" のような表示があります。この場合は全部で三つの -ファイルがあり、今は二つ目を編集しているという意味です。 -次のコマンドでファイルの一覧を表示できます: > - - :args - -これは "arguments" の省略形です。結果は次のように表示されます。 - - one.c [two.c] three.c ~ - -Vim を起動したときに指定したファイルが表示されます。編集中のファイル (ここでは -"two.c") は [] 記号で囲んで表示されます。 - - -他のファイルへの移動 --------------------- - -これはファイルを一つ戻るコマンドです。 > - - :previous - -":next" コマンドと同じ動作ですが、移動する方向が違います。このコマンドにも、 -ファイル保存してから移動する専用のコマンドがあります。 > - - :wprevious - -一覧の最後のファイルに移動するには次のコマンドを使います。 > - - :last - -最初のファイルに戻るには次のコマンドです。 > - - :first - -":wlast" とか ":wfirst" みたいなコマンドはありません。 - -":next" と ":previous" にはカウンタを指定できます。例えば、二つ先のファイルに -進むにはこのようにします。 > - - :2next - - -自動保存 --------- - -いろんなファイルを編集して回るときには、":write" で保存するのを忘れないでくだ -さい。変更を保存せずに移動しようとすると、エラーメッセージが表示されます。移動 -するときはいつでも変更を保存したいと思った場合は、次のように設定してください。 -変更が自動的に保存されるようになります。 > - - :set autowrite - -保存して欲しくないファイルを編集するときは、機能をオフに設定してください。 > - - :set noautowrite - - -他のファイルリストで編集する ----------------------------- - -Vim を再起動しなくても、ファイルリストを変更できます。例えば、他の三つのファイ -ルを編集するには次のようにします。 > - - :args five.c six.c seven.h - -シェルと同じようにワイルドカードを使うこともできます。 > - - :args *.txt - -リストの最初のファイルがまず開かれます。ここでも、現在のファイルの変更をまだ保 -存していない場合は、ファイルを保存するか、":args!" (! が付いています) を使って -変更を破棄する必要があります。 - - -最後のファイルまで編集した? ----------------------------- - *arglist-quit* -ファイルリストが使われると、Vim は、すべてのファイルが編集対象だと判断します。 -間違って Vim を終了してしまうことがないように、すべてのファイルをまだ開いてい -ないのに終了しようとした場合は、エラーメッセージが表示されます: - - E173: 編集すべきファイルがあと 46 個あります。 ~ - -本当に終了してよければ、もう一度終了コマンドを実行してください。こんどは終了で -きます (間に他のコマンドを挟まないでください)。 - -============================================================================== -*07.3* ファイルからファイルへのジャンプ - -CTRL-^ を使うと二つのファイル間を素早く移動できます(日本語キーボードなら ^ は -'-' キーの右側 (「へ」キー) にあります)。例: > - - :args one.c two.c three.c - -上を実行すると "one.c" が開きます。 > - - :next - -これで、"two.c" になりました。ここで CTRL-^ を使うと "one.c" に戻ります。もう -一度 CTRL-^ を押すと "two.c" に戻ります。さらに CTRL-^ を使うと "one.c" になり -ます。さて、ここで次のコマンドを実行します。 > - - :next - -すると、"three.c" になります。CTRL-^ コマンドはファイルリスト中での現在地を変 -更しません。":next" や ":previous" のようなコマンドだけが現在地を変更します。 - -直前に編集していたファイルのことをオルタネートファイル (alternate file) と言い -ます。Vim の起動直後はオルタネートファイルがまだ無いため CTRL-^ は動作しませ -ん。 - - -定義済マーク ------------- - -他のファイルにジャンプすると、二つの定義済マークが使えるようになります。これは -非常に便利です。 > - - `" - -このコマンドを実行すると、以前にファイルを開いていたときにいた場所にカーソルが -移動します。もう一つは、最後に変更を加えた場所に設定されたマークです。 > - - `. - -例えば、"one.txt" を編集しているとします。ファイルの真ん中あたりで "x" を使っ -て文字を削除しました。そして、"G" を使って最後の行に移動し、":w" でファイルを -保存します。他のファイルをいくつか編集してから、":edit one.txt" で "one.txt" -に戻ってきました。ここで、 `" を実行すると、ファイルの最後の行にカーソルが移動 -します。`. を実行すると、文字を削除した場所に移動します。ファイル内をいろいろ -と移動した後でも、`" と `. は同じ場所を覚えています。少なくとも、他の変更を加 -えたり、別のファイルに移動したりするまでは。 - - -ファイルマーク --------------- - -4 章 (|04.1|) では "mx" でマークを付け、"`x" でその場所にジャンプする方法を説明 -しました。そのマークはファイルの中だけで使えます。別のファイルを開いて、それに -同じマークを付けても、マークはそのファイルに固有のものとなります。つまり各ファ -イルはそれぞれのマークを持っていて、ファイル内に閉じているということです。いま -までは、マークに小文字を使ってきましたが、大文字のマークも使えます。 -大文字のマークはグローバルで、どのファイルからでも使えます。例えば "foo.txt" -というファイルを開き、"50%" コマンドでファイルの真ん中にジャンプして、その場所 -に F というマークを付けたとします: > - - 50%mF - -次に "bar.txt" を開き、最終行にマーク B を付けます: > - - GmB - -さて、ここで "'F" コマンドを使うと、いきなり foo.txt の真ん中にジャンプできま -す。さらに、他のファイルを開いてから "'B" を入力すると、bar.txt の行末に移動で -きます。 - -他の場所を設定するまで、ファイルマークは同じ場所を記憶しています。そのため、一 -度マークを付ければ、何時間も編集を行ってからでもそのマークに戻って来ることがで -きます。 -マークの文字とマークを付けた場所が連想できるような単純なルールを決めておくとよ -いでしょう。例えば、ヘッダファイルは H 、makeファイルは M 、C 言語のソースには -C といった具合です。 - -マークが置いてある場所を確認するには、":marks" コマンドにそのマークを指定して -ください。 > - - :marks M - -マークを複数指定しても構いません。 > - - :marks MCP - -マークを使わなくても、CTRL-O と CTRL-I を使えば、古い場所と新しい場所の間を -ジャンプできることをお忘れなく。 - -============================================================================== -*07.4* バックアップファイル - -初期設定ではバックアップファイルは作成されません。バックアップファイルが必要な -ら、次のコマンドを実行してください: > - - :set backup - -バックアップファイルの名前は、ファイル名の後ろに ~ を加えた名前になります。 -例えば、ファイル名が data.txt なら、バックアップファイルは data.txt~ です。 - ~ 以外の文字を使いたい場合は、次のように設定してください: > - - :set backupext=.bak - -これで、バックアップファイルの名前が data.txt.bak になります。 -もう一つのオプション 'backupdir' についても説明しましょう。これはバックアップ -ファイルを保存するディレクトリを指定するオプションです。初期設定ではバックアッ -プは元ファイルと同じディレクトリに保存されます。たいていの場合はこれで問題ない -はずです。 - - Note: - 'writebackup' がオンの場合、'backup' がオフでもバックアップファイルは - 作成されますが、ファイルの保存が成功すると、そのバックアップファイルは - すぐに削除されます。これは、ファイルを保存できなかったときに、オリジナ - ルファイルが失われないようにするための機能です。(失敗の原因は、例え - ば、ディスクがいっぱいになったというのが一番ありがちな理由です。雷にや - られるというのも可能性は低いですがありうることです)。 - - -オリジナルファイルを残す ------------------------- - -ソースファイルを編集していると、変更を加える前のファイルを残しておきたいときが -あります。しかし、バックアップファイルはファイルを保存するたびに上書きされるの -で、直前のバックアップしか残らず、最初のファイルはなくなってしまいます。 -オリジナルのファイルを残しておきたい場合は、'patchmode' オプションを設定してく -ださい。バックアップファイルを最初に作成するときに使う拡張子を指定します。次の -ように設定してください: > - - :set patchmode=.orig - -例えば、はじめて data.txt を開いたときに、変更を加え、保存しようとすると、変更 -前のファイルが "data.txt.orig" という名前でコピーされます。 -その後、ファイルを変更しても、既に "data.txt.orig" があるので、上書きはされま -せん。この場合もバックアップファイルは "data.txt~" (もしくは 'backupext' で指 -定した名前) で作成されます。 -'patchmode' が空のまま (初期設定) だと、オリジナルファイルは残りません。 - -============================================================================== -*07.5* 他のファイルにテキストをコピーする - -ここではファイルから別のファイルにテキストをコピーする方法を説明します。簡単な -例で始めましょう。コピーしたいテキストを含んでいるファイルを開きます。テキスト -の先頭にカーソルを移動して "v" を押すとビジュアルモードが開始します。テキスト -の末尾までカーソルを移動して "y" を押します。これでテキストがヤンク (コピー) -されました。 - -例えば、上の段落をコピーするには、次のようにします。 > - - :edit thisfile - /ここでは - vjjjj$y - -次に、このテキストをプット (ペースト) したいファイルを開きます。テキストをプッ -トしたい場所にカーソルを動かし、"p" コマンドでプットします。 > - :edit otherfile - /どこか - p - -当然ながら、テキストのヤンクには他にもいろんなコマンドが使えます。例えば、"V" -でビジュアルモードを開始すると行単位で選択できますし、CTRL-V で矩形選択もでき -ます。"Y" で一行をヤンクしたり、"yaw"で単語をヤンク (yank-a-word) するなど、い -ろいろできます。 -"p" コマンドはカーソルの後にテキストをプットします。カーソルの前にプットするに -は "P" を使います。Vim はヤンクしたときの選択単位 (行選択や矩形選択) を覚えて -いて、同じ単位でプットします。 - - -レジスタを使う --------------- - -あるファイルから別のファイルに数箇所のテキストをコピーしたいとき、何度も何度も -ファイルを切り換えると時間がかかります。テキストをレジスタにコピーして手間を省 -きましょう。 -レジスタとは、Vim がテキストを保持する場所です。ここでは a から z までの名前が -付いたレジスタを使います (レジスタは他にもあります)。では、テキストをレジスタ -f (fはfirstのつもり) にヤンクしてみましょう。 > - - "fyas - -"yas" コマンドで文をヤンクしています。"f はテキストをレジスタ f に入れるための -指定です。この指定はヤンクコマンドの直前に指定します。 -さらに三行をレジスタ l (lはlineのつもり) にヤンクしてみましょう。 > - - "l3Y - -カウンタ (回数指定) は "l の直前に指定することもできます。テキストのブロック -(矩形選択) をレジスタ b (bはblockのつもり) にヤンクする場合は次のようにしま -す。 > - - CTRL-Vjjww"by - -レジスタ指定 "b を "y" コマンドの直前で指定している点に注意してください。これ -は重要なことです。これを "w" コマンドより前に置いてしまうとうまく動きません。 -さて、f、l、b の三つのレジスタにテキストをヤンクできました。他のファイルを開い -て、テキストを挿入したい場所にカーソルを移動し、レジスタの内容をプットしましょ -う。 > - - "fp - -ヤンクの場合と同じく、レジスタ指定 "f は "p" コマンドより前に指定します。 -どのレジスタからプットしても構いません。他のテキストをヤンクし直さない限り、レ -ジスタの内容は変わらないので、同じレジスタを何度でも好きなだけプットできます。 - -テキストを削除するときにも、レジスタを指定できます。テキストを何ヶ所かに移動す -るときなどに使ってください。例えば、単語を削除 (delete-a-word) してその内容を -レジスタ w に入れるには次のようにします。 > - - "wdaw - -何度も言うようですが、レジスタ指定は削除コマンド "d" の前に置いてください。 - - -ファイルに追記する ------------------- - -文章を一つのファイルにまとめたい場合は、次のコマンドを使います。 > - - :write >> logfile - -カレントファイルの内容が "logfile" の末尾に追記されます。テキストをコピーして、 -"logfile" を開き、テキストをプットするより簡単です。作業を 2 手節約できます。 -ただし、ファイルの末尾への追加しかできません。 -ファイルの一部だけ追記したい場合は、ビジュアルモードでテキストを選択してから -":write" を実行してください。テキストを選択する方法は他にもありますが、10 章で -説明します。 - -============================================================================== -*07.6* 読み込み専用モード - -ファイルを変更する気はなく、ただファイルの内容を見たいだけのときがあります。普 -通に開くと、うっかり ":w" を実行して元のファイルを上書きしてしまう危険がありま -す。そういうときは、読み込み専用モードでファイルを開いてください。 -Vim を読み込み専用モードで起動するには、次のコマンドを使います。 > - - vim -R file - -Unix なら、次のコマンドも同じ意味になります。 > - - view file - -"file" が読み込み専用モードで開きます。":w" をしようとしても、エラーメッセージ -が表示され保存はされません。 -ファイルに変更を加えようとすると、次のような警告が表示されます。 - - W10: 警告:読込専用ファイルを変更します ~ - -警告は出ますが、変更は可能です。これは、例えばファイルを読みやすくフォーマット -したりするためです。 -読み込み専用モードであることを忘れて、ファイルを修正してしまったようなときは、 -write コマンドに ! を付けて強制保存してください。 - -完全にファイルの変更を禁止したい場合は、次のようにしてください。 > - - vim -M file - -これで、内容を変更しようとしてもエラーになります。例えば、ヘルプファイルはこの -モードで表示されています。変更しようとすると、次のエラーメッセージが表示されま -す。 - - E21: 'modifiable'がオフなので、変更できません ~ - --M 引数を使えば Vim を閲覧モードに設定できますが、これは自主規制みたいなもの -で、次のコマンドを使えば制限はなくなってしまいます。 > - - :set modifiable - :set write - -============================================================================== -*07.7* ファイル名の変更 - -新しいファイルを作成するときに、目的に近いファイルがあるなら、それを利用するの -が効率的です。例えば、ファイルを移動するプログラムを作りたいとしましょう。ファ -イルをコピーするプログラムがすでにあるので、それを流用することにしました。 > - - :edit copy.c - -新しいプログラムに必要ない部分は削除してしまいましょう。次に、このファイルを新 -しい名前で保存する必要があります。そのためのコマンドが ":saveas" です。 > - - :saveas move.c - -指定した名前でファイルが保存され、そのファイルが開かれます。そのため、次に -":write" したときは "move.c" に保存されます。"copy.c" は変更されません。ファイ -ルを保存せずに、ファイルの名前だけ変更したい場合は、次のコマンドを使います。 > - - :file move.c - -そのファイル (move.c) は、実際のファイルではないので、"開いていない" (not -edited) 扱いになります。ファイルを保存しようとすると、次のメッセージが表示され -ることがあります。 - - E13: ファイルが存在します (! を追加で上書) ~ - -これは、実際のファイルを間違って上書きしてしまわないようにするためです。 - -============================================================================== - -次章: |usr_08.txt| ウィンドウの分割 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_08.jax b/doc/usr_08.jax deleted file mode 100644 index 9a50259aa..000000000 --- a/doc/usr_08.jax +++ /dev/null @@ -1,596 +0,0 @@ -*usr_08.txt* For Vim バージョン 7.3. Last change: 2006 Jul 18 - - VIM USER MANUAL - by Bram Moolenaar - - ウィンドウの分割 - - -関係のない2つの違ったファイルを表示したい。1つのファイルの2個所を同時に -見たい。2つのファイルを横に並べて差分を見てみたい。 -ウィンドウ分割を使えばどれもできてしまいます。 - -|08.1| ウィンドウの分割 -|08.2| ウィンドウを分割してファイルを開く -|08.3| ウィンドウのサイズ -|08.4| 縦分割 -|08.5| ウィンドウの移動 -|08.6| 全ウィンドウに対するコマンド -|08.7| vimdiff で差分を表示する -|08.8| その他 -|08.9| タブページ - -次章: |usr_09.txt| GUI を使う -前章: |usr_07.txt| 複数のファイルを開く -目次: |usr_toc.txt| - -============================================================================== -*08.1* ウィンドウの分割 - -新しいウィンドウを開く一番簡単なコマンドはこれです。 > - - :split - -画面が2つのウィンドウに分割されます。カーソルは上側のウィンドウに置かれます。 - - +----------------------------------+ - |/* file one.c */ | - |~ | - |~ | - |one.c=============================| - |/* file one.c */ | - |~ | - |one.c=============================| - | | - +----------------------------------+ - -二つのウィンドウに同じファイルが表示されています。"====" のラインはステータス -行です。各ウィンドウの一番下にあってそのウィンドウの情報を表示します。(実際に -はステータス行は反転表示になります) -各ウィンドウには同じファイルの違う場所を表示できます。例えば、上側のウィンド -ウにはプログラムの変数宣言部を表示し、下の方にはその変数を使っている箇所を -表示させる、といったことができます。 - -CTRL-W w コマンドでウィンドウ間をジャンプできます。上側のウィンドウにカーソル -がある時に CTRL-W w を押すとその下のウィンドウにジャンプします。一番下のウィン -ドウにカーソルがある時は一番上のウィンドウに戻ります。(CTRL-W CTRL-W も同じ動 -作をするので、CTRL キーを離すのがちょっと遅れても大丈夫です) - - -ウィンドウを閉じる ------------------- - -ウィンドウを閉じるのは次のコマンドです。 > - - :close - -":quit" や "ZZ" のようなファイルを閉じるコマンドでもウィンドウを閉じることがで -きますが、":close" を使えば、最後のウィンドウを閉じて Vim を終了してしまうよう -な間違いを防げます。 - - -他ウィンドウを全部閉じる ------------------------- - -ウィンドウをたくさん開いたときに、どれか一つのウィンドウに集中したいと思った場 -合は、次のコマンドが便利です。 > - - :only - -カーソルのあるウィンドウを残して全てのウィンドウが閉じます。他のウィンドウに保 -存されていない変更がある場合には、エラーメッセージが表示され、そのウィンドウは -閉じません。 - -============================================================================== -*08.2* ウィンドウを分割してファイルを開く - -次のコマンドを実行すると、2つ目のウィンドウが開き、指定されたファイルの編集が -開始されます。 > - - :split two.c - -例えば、one.c を編集していたなら、結果は次のようになります。 - - +----------------------------------+ - |/* file two.c */ | - |~ | - |~ | - |two.c=============================| - |/* file one.c */ | - |~ | - |one.c=============================| - | | - +----------------------------------+ - -新しいウィンドウに新規ファイルを開くには、次のコマンドを使います。 > - - :new - -":split" や ":new" コマンドを使って好きなだけウィンドウを作成できます。 - -============================================================================== -*08.3* ウィンドウのサイズ - -":split" コマンドは数値を引数として取れます。その値は新しいウィンドウの高さと -なります。例えば、次のコマンドは3行分の高さのウィンドウを作成し、alpha.c を開 -きます。 > - - :3split alpha.c - -ウィンドウのサイズを変更する方法はいくつかあります。マウスが使えれば話は簡単で -す。ウィンドウを分割しているステータス行にマウスを動かし、上下にドラッグしてく -ださい。 - -ウィンドウを大きくするには次のようにします: > - - CTRL-W + - -小さくするには次のようにします: > - - CTRL-W - - -どちらのコマンドも数値を引数として取り、その行数分、ウィンドウサイズを増減しま -す。つまり、"4 CTRL-W +" ならウィンドウが4行分大きくなります。 - -ウィンドウの高さを明示的に指定するには次のコマンドを使います: > - - {height}CTRL-W _ - -{height} に数値を指定し、CTRL-W と _ (アンダースコア) を入力します。 -ウィンドウを最大まで大きくするには、CTRL-W _ コマンドを数値指定なしで実行して -ください。 - - -マウスを使う - -Vim では様々なことをキーボードから極めて素早く操作できますが、残念ながら、ウィ -ンドウサイズを変更するのは少し面倒です。この場合、マウスを使う方が簡単です。マ -ウスポインタをステータス行に合せてから左ボタンを押してドラッグしてください。ス -テータス行が動き、片方のウィンドウが大きくなり、もう片方は小さくなります。 - - -オプション - -'winheight' オプションにはウィンドウの最小の高さ (それ以上は小さくならない) の -希望値を、'winminheight' には最小の高さの強制値を設定できます。 -同様に、'winwidth' オプションにはウィンドウの最小の幅の希望値を、'winminwidth' -には最小の幅の強制値を設定できます。 -'equalalways' オプションが設定されていると、ウィンドウを閉じたり開いたりするた -びに、全てのウィンドウのサイズが同じになります。 - -============================================================================== -*08.4* 縦分割 - -":split" コマンドは現在のウィンドウの上側に新しいウィンドウを作ります。ウィン -ドウを左側に作るには、次のコマンドを使います: > - - :vsplit - -あるいは、 > - :vsplit two.c - -実行後は次のようになります。 - - +--------------------------------------+ - |/* file two.c */ |/* file one.c */ | - |~ |~ | - |~ |~ | - |~ |~ | - |two.c===============one.c=============| - | | - +--------------------------------------+ - -中央の縦棒 (|) は実際には反転表示されます。これは縦セパレータと呼ばれ、これに -よって左右のウィンドウが区切られます。 - -ウィンドウを縦分割して新しい空ファイルを作成する ":vnew" コマンドもあります。 -次のコマンドでも同じことができます: > - - :vertical new - -":vertical" コマンドは、ウィンドウを分割する他のコマンドにも適用できます。これ -を指定すると、ウィンドウは横ではなく、縦に分割されるようになります。(ウィンド -ウを分割しないコマンドの場合は何も変わりません) - - -他のウィンドウへの移動 - -横でも縦でも好きなようにウィンドウを分割できるので、自在にウィンドウを配置でき -ます。他のウィンドウへ移動するには次のコマンドを使います。 - - CTRL-W h 左側のウィンドウに移動 - CTRL-W j 下側のウィンドウに移動 - CTRL-W k 上側のウィンドウに移動 - CTRL-W l 右側のウィンドウに移動 - - CTRL-W t 一番上のウィンドウに移動 - CTRL-W b 一番下のウィンドウに移動 - -カーソル移動と同じ文字を使っていることに注目してください。もちろん、矢印キーも -使うことができます。 -他のウィンドウへ移動するためのコマンドは他にもあります: |Q_wi| - -============================================================================== -*08.5* ウィンドウの移動 - -ウィンドウを分割したが、配置が好ましくなかった場合、ウィンドウをどこか別の場所 -に動かしたいと思うしょう。例えば、次のように三つのウィンドウがあるとします: - - +----------------------------------+ - |/* file two.c */ | - |~ | - |~ | - |two.c=============================| - |/* file three.c */ | - |~ | - |~ | - |three.c===========================| - |/* file one.c */ | - |~ | - |one.c=============================| - | | - +----------------------------------+ - -明らかに一番下のウィンドウが一番上にくるべきです。一番下のウィンドウに移動して -(CTRL-W w を使用)、次のコマンドを入力してください: > - - CTRL-W K - -ここでは大文字の K を使います。これを実行すると、ウィンドウが一番上に移動しま -す。上への移動に K が使われていることに注目してください。 -縦分割しているときに CTRL-W K を使うと、ウィンドウが一番上に移動し、Vim ウィン -ドウと同じ幅になります。例えば、次のようなレイアウトになっているとします。 - - +-------------------------------------------+ - |/* two.c */ |/* three.c */ |/* one.c */ | - |~ |~ |~ | - |~ |~ |~ | - |~ |~ |~ | - |~ |~ |~ | - |~ |~ |~ | - |two.c=========three.c=========one.c========| - | | - +-------------------------------------------+ - -中央のウィンドウ (three.c) で CTRL-W K を実行すると、次のような結果になります: - - +-------------------------------------------+ - |/* three.c */ | - |~ | - |~ | - |three.c====================================| - |/* two.c */ |/* one.c */ | - |~ |~ | - |two.c==================one.c===============| - | | - +-------------------------------------------+ - -他に同じようなコマンドが三つあります。(説明する必要はありませんね) - - CTRL-W H ウィンドウを左端に移動 - CTRL-W J ウィンドウを下端に移動 - CTRL-W L ウィンドウを右端に移動 - -============================================================================== -*08.6* 全ウィンドウを対象とするコマンド - -Vim を終了しようと思ったときに、複数のウィンドウが開いていた場合、ウィンドウを -一つずつ閉じていけば Vim を終了できますが、次のコマンドを使えばもっと速く終了 -できます。: > - - :qall - -これは "quit all" (すべて閉じる) という意味です。まだ保存していないファイルが -ある場合は、Vim は終了しません。保存していないファイルを表示しているウィンドウ -にカーソルが自動的に移動するので、":write" で保存するか ":quit!" で変更を破棄 -するかしてください。 - -未保存のファイルを全て保存するには、次のコマンドを使ってください: > - - :wall - -これは "write all" (すべて保存) という意味です。とはいっても、実際に保存される -のは変更のあったファイルだけです。変更していないファイルを上書きしても意味がな -いことを Vim はわかってますから。 -":qall" と ":wall" を組み合わせた "write and quit all" (すべて保存して終了) コ -マンドもあります: > - - :wqall - -このコマンドは、変更されたファイルをすべて保存して Vim を終了します。 -最後に、次のコマンドは、すべての変更を破棄して Vim を終了するコマンドです: > - - :qall! - -このコマンドはアンドゥできないので、使う時には慎重に! - - -引数で指定したすべてのファイルをウィンドウで開く - -それぞれのファイルごとにウィンドウを開くには、起動パラメタに "-o" を指定します。 -> - vim -o one.txt two.txt three.txt - -結果はこうなります。 - - +-------------------------------+ - |file one.txt | - |~ | - |one.txt========================| - |file two.txt | - |~ | - |two.txt========================| - |file three.txt | - |~ | - |three.txt======================| - | | - +-------------------------------+ - -起動パラメタ "-O" を使えば、ウィンドウが縦分割になります。 -Vim が既に起動している場合、":all" コマンドを使うと引数リストの各ファイルごと -にウィンドウを開くことができます。":vertical all"だと縦分割になります。 - -============================================================================== -*08.7* vimdiff で差分を表示する - -特別な方法で Vim を起動すると、二つのファイルの差分を表示することができます。 -例えば、"main.c" というファイルを開き、どこかの行に文字を挿入したとします。そ -して、オプション 'backup' を有効にしてファイルを保存しました。バックアップファ -イル "main.c~" には変更前のファイルが保存されています。 -シェルで (vim上ではありません) 次のコマンドを入力します: > - - vimdiff main.c~ main.c - -二つのウィンドウを左右に並べた状態で Vim が起動します。画面には先ほど文字を挿 -入した行とその前後の数行が表示されています。 - - VV VV - +-----------------------------------------+ - |+ +--123 lines: /* a|+ +--123 lines: /* a| <- 折り畳み - | text | text | - | text | text | - | text | text | - | text | changed text | <- 変更された行 - | text | text | - | text | ------------------| <- 削除された行 - | text | text | - | text | text | - | text | text | - |+ +--432 lines: text|+ +--432 lines: text| <- 折り畳み - | ~ | ~ | - | ~ | ~ | - |main.c~==============main.c==============| - | | - +-----------------------------------------+ - -(上の図は強調表示されてないので、ちゃんと見たければ、vimdiff コマンドを実行し -てみてください) - -変更のない行は一行に折り畳まれて表示されます。これを閉じた折り畳みと呼びます。 -上の図では "<- 折り畳み" とある行がそうです。最初の折り畳みは 123 行を折り畳ん -でいます。それらの行は両方のファイルで一致しています。 -"<- 変更された行" とある行は強調表示されていて、挿入した文字列が別の色で表示さ -れています。強調表示されているので、どこが違うのかが一目でわかります。 -削除された行は main.c のウィンドウにあるように "---" と表示されます。上の図の、 -"<- 削除された行" とある行を見てください。実際には、そこに文字はありません。そ -の行は、main.c を別のウィンドウと同じ行数で表示するために使われています。 - - -折り畳み表示列 - -各ウィンドウの左側に色の違う列があります。上の図では "VV" で示されています。そ -の列の、閉じた折り畳みのある行に、"+" 記号が表示されています。マウスポインタを -その "+" 記号に合わせて、左ボタンをクリックしてください。折り畳みが開き、折り -畳まれていたテキストが表示されます。 -開いた折り畳みは "-" 記号で表示されます。"-" 記号をクリックすると折り畳みは閉 -じます。 -当り前ですが、これはマウスが利用できる場合のみ機能します。キーボードの場合は -"zo" で折り畳みを開いたり、"zc" で閉じたりできます。 - - -Vim の中で差分を取る - -Vim の中から差分モードを開始する方法もあります。"main.c" を開いて、ウィンドウ -を分割し差分を表示するには、次のようにします: > - - :edit main.c - :vertical diffsplit main.c~ - -":vertical" コマンドはウィンドウを縦分割するために使用します。使わなかった場合 -は横分割になります。 - -パッチ、または diff ファイルがある場合は、三つめの方法で差分モードを開始できま -す。最初に、パッチを適用するファイルを開き、次に、Vim にパッチファイルの名前を -教えてやります: > - - :edit main.c - :vertical diffpatch main.c.diff - -警告: パッチファイルは、開いているファイル用のパッチが一つだけ含まれているもの -でなければなりません。そうでない場合は、大量のエラーメッセージが表示されたり、 -予期せずに、他のファイルにパッチが適用されてしまう場合があります。 -パッチ処理は Vim 内部の、ファイルのコピーに対して実行されます。ハードディスク -上のファイルは (それを上書きしない限り) 変更されません。 - - -同期スクロール - -ファイル間の差分がたくさんある場合、通常どおりスクロールすればそれらを表示でき -ます。もう一方のウィンドウも同じ場所を表示するように自動的にスクロールされるの -で、簡単に差分を並べて表示できます。 -同期スクロールを無効にするには、次のコマンドを使います: > - - :set noscrollbind - - -変更された場所にジャンプする - -折り畳みを無効にしている場合、変更された場所を見つけるのは簡単ではありません。 -次のコマンドを使うと、前方の変更にジャンプできます: > - - ]c - -逆方向にジャンプするには次のコマンドを使います: > - - [c - -回数指定を使えば、さらに遠くまでジャンプできます。 - - -変更を取り除く - -ウィンドウからウィンドウへテキストを移動できます。これによって、差分が増えたり -減ったりします。強調表示は自動的に更新されません。更新するには次のコマンドを使 -います: > - - :diffupdate - -差分を取り除くには、強調表示された範囲のテキストをもう一方のウィンドウに移動し -ます。上述の "main.c" と "main.c~" の例を使って説明します。左ウィンドウに移動 -して、もう一方のウィンドウでは削除されている行に移動します。そして、次のコマン -ドを入力します: > - - dp - -カレントウィンドウのテキストがもう一方のウィンドウにプットされ、変更がなくなり -ます。"dp" は "diff put" の意味です。 -別の方法でも同じことができます。右のウィンドウに移動して、"changed" が挿入され -た行に移動します。そして、次のコマンドを入力します: > - - do - -もう一方のファイルからテキストがコピーされ、変更はなくなります。これで変更がな -くなってしまったので、すべてのテキストが折り畳まれて表示されます。"do" は -"diff obtain" の意味です。意味的には"dg"の方が良いのですが、それはすでに他で -使われています ("dgg" でカーソル位置から最初の行まで削除されます)。 - -差分モードの詳細は |vimdiff| をご覧ください。 - -============================================================================== -*08.8* その他 - -'laststatus' オプションを使うと、最後のウィンドウにステータスラインを表示する -かどうかを設定できます: - - 0 表示しない - 1 分割ウィンドウがある時だけ表示 (初期設定) - 2 常に表示 - -ほとんどの、ファイルを開くコマンドには、ウィンドウを分割するバージョンが存在し -ます。 -Ex コマンドの場合、先頭に "s" が付いています。例えば、":tag" はタグジャンプで -すが、":stag" はウィンドウを分割してからタグジャンプします。 -ノーマルモードコマンドの場合、CTRL-W を前置します。例えば、CTRL-^ はオルタネー -トファイルへのジャンプですが、CTRL-W CTRL-^ はウィンドウを分割してからオルタネー -トファイルを開きます。 - -'splitbelow' オプションを設定すると、カレントウィンドウの下に新しいウィンドウ -が作られるようになります。'splitright' オプションを設定すると、縦分割したとき -に、カレントウィンドウの右に新しいウィンドウが作られるようになります。 - -ウィンドウを分割するときに、次の修飾コマンドを使うと、ウィンドウの位置を指定で -きます: - - :leftabove {cmd} カレントウィンドウの左、または上 - :aboveleft {cmd} 同上 - :rightbelow {cmd} カレントウィンドウの右、または下 - :belowright {cmd} 同上 - :topleft {cmd} 上、または左の端 - :botright {cmd} 下、または右の端 - - -============================================================================== -*08.9* タブページ - -ウィンドウは重ねることができないので、画面がすぐにいっぱいになってしまいます。 -それを解決するために、タブページ、というものが用意されています。 - -"thisfile" というファイルを開いているとしましょう。新しいタブページを作成する -ために次のコマンドを実行します: > - - :tabedit thatfile - -"thatfile" が開かれ、Vim ウィンドウ全体を占める大きさのウィンドウに表示されま -す。そして、上部にバーが表示され、ファイル名が二つ表示されているのが確認できる -と思います: - - +----------------------------------+ - | thisfile | /thatfile/ __________X| (thatfile は太字) - |/* thatfile */ | - |that | - |that | - |~ | - |~ | - |~ | - | | - +----------------------------------+ - -これは二つのタブページがある状態です。一つ目のタブページには "thisfile" を開い -ているウィンドウが、二つ目のタブページには "thatfile" を開いているウィンドウが -入っています。これは、紙が二枚重なっていて、それぞれの紙にファイル名が書かれた -ラベルが付いているようなものです。 - -マウスを使って "thisfile" をクリックしてみましょう。次のようになります。 - - +----------------------------------+ - | /thisfile/ | thatfile __________X| (thisfile は太字) - |/* thisfile */ | - |this | - |this | - |~ | - |~ | - |~ | - | | - +----------------------------------+ - -上部のラベルをクリックすると、タブページを切替えることができます。マウスがな -い、あるいは使いたくない場合には、"gt" コマンドでも切替えられます。"gt" は -Goto Tab の略です。 - -次のコマンドを実行し、タブページをもう一つ作成してみましょう: > - - :tab split - -ウィンドウを一つもったタブページが作成され、そのウィンドウには、さっきまで開い -ていたのと同じバッファが表示されています: - - +-------------------------------------+ - | thisfile | /thisfile/ | thatfile __X| (thisfile は太字) - |/* thisfile */ | - |this | - |this | - |~ | - |~ | - |~ | - | | - +-------------------------------------+ - -":tab" コマンドは、ウィンドウを開く Ex コマンドと組み合わせて使います。そうす -ると、ウィンドウは新しいタブページで開かれます。もう一つ例をあげます: > - - :tab help gt - -このコマンドを実行すると、"gt" についてのヘルプが新しいタブページで開きます。 - -タブページの操作には、他にも次のようなものがあります: - -- 上部バーの最後のラベルより右 (ラベルのないとこ) をマウスでクリック - "gt" と同じように、次のタブページを選択します。 - -- 上部右端の "X" をクリック - 現在のタブページを閉じます。ただし、そのタブページ内に未保存の変更があ - る場合は閉じません。 - -- 上部バーをダブルクリック - 新しいタブページを作成します。 - -- "tabonly" コマンド - 現在のタブページ以外を閉じます。ただし、それらのタブページ内に未保存の - 変更がある場合は閉じません。 - -タブページについての詳細は |tab-page| を参照してください。 - -============================================================================== - -次章: |usr_09.txt| GUI を使う - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_09.jax b/doc/usr_09.jax deleted file mode 100644 index 141e3fa26..000000000 --- a/doc/usr_09.jax +++ /dev/null @@ -1,293 +0,0 @@ -*usr_09.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - GUI を使う - - -Vim は普通の端末で動作します。GVim はそれより少しだけ多機能です。GUI ではメ -ニュー、ツールバー、スクロールバーなどが利用できます。本章では GUI が提供する -それらの機能を説明します。 - -|09.1| GUI の部品 -|09.2| マウスを使う -|09.3| クリップボード -|09.4| セレクトモード - -次章: |usr_10.txt| 大規模な編集 -前章: |usr_08.txt| ウィンドウの分割 -目次: |usr_toc.txt| - -============================================================================== -*09.1* GUI の部品 - -おそらく、gVim を起動するためのアイコンがデスクトップにあるはずです。ない場合 -は、次のコマンドのどちらかで起動できます: > - - gvim file.txt - vim -g file.txt - -GUI 版の Vim がインストールされていない場合は起動できません。まず最初に GUI 版 -の Vim をインストールしてください。 -起動すると、ウィンドウが開き、そこに "file.txt" が表示されます。ウィンドウの外 -見は Vim のバージョンによって違うかもしれませんが、だいたい次のような画面が表 -示されるはずです (この図は ASCII で正しく表示されます)。 - - +----------------------------------------------------+ - | file.txt + (~/dir) - VIM X | <- ウィンドウ - +----------------------------------------------------+ タイトル - | File Edit Tools Syntax Buffers Window Help | <- メニューバー - +----------------------------------------------------+ - | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- ツールバー - | aaa bbb ccc ddd eee fff ggg hhh iii jjj | - +----------------------------------------------------+ - | file text | ^ | - | ~ | # | - | ~ | # | <- スクロール - | ~ | # | バー - | ~ | # | - | ~ | # | - | | V | - +----------------------------------------------------+ - -一番大きな領域にはファイルのテキストが表示されています。その部分は端末での表示 -と同じです。色やフォントは違うかもしれません。 - - -ウィンドウタイトル ------------------- - -最上部はウィンドウタイトルです。この部分はウィンドウシステム (Windows や X の -ウィンドウマネージャなど) によって描画されます。Vim はカレントファイルの名前を -タイトルに設定します。ファイル名が先頭に表示され、それから、記号、カッコで囲ま -れたディレクトリ名が表示されます。記号には次の意味があります。 - - - ファイルは変更不可。(例: ヘルプファイル) - + ファイルは変更された。 - = ファイルは読み込み専用。 - =+ ファイルは読み込み専用だが、変更された。 - -何も表示されていなければ、変更されていない通常のファイルです。 - - -メニューバー ------------- - -メニューの使い方はわかりますよね? 一般的な項目に加え、Vim 特有の項目が少しあ -ります。メニューをざっと眺めてどんなものがあるか確認してください。この章に関連 -したサブメニューが [編集]-[全体設定] にあります。次のような項目です: - - ツールバー表示切替 ツールバーの表示のon/off - スクロールバー(下)表示切替 スクロールバー(下)の表示のon/off - スクロールバー(左)表示切替 スクロールバー(左)の表示のon/off - スクロールバー(右)表示切替 スクロールバー(右)の表示のon/off - -ほとんどのシステムではメニューの切り離しができます。メニューの最上部にある点線 -のような項目を選択すると、メニューが別ウィンドウで表示されます。明示的に閉じる -まで、ウィンドウは開いたままです。 - - -ツールバー ----------- - -ツールバーには、よく使われる機能がアイコンの形で格納されています。アイコンを見 -ればその機能を連想できると思います。マウスをアイコンの上に動かしてクリックせず -に一秒ほど待つと、機能の説明がツールチップで表示されます。 - -メニューの [編集]-[全体設定]-[ツールバー表示切換] を使うとツールバーを非表示に -できます。ツールバーを全く使わないのであれば、次のコマンドを vimrc に書いてく -ださい: > - - :set guioptions-=T - -これは 'guioptions' オプションから "T" フラグを取り除くコマンドです。GUI の他の -部品もこのオプションを使って、表示/非表示を指定できます。詳しくはオプションの -ヘルプを参照してください。 - - -スクロールバー --------------- - -初期設定では右側にスクロールバーが表示されます。動作は一般的なアプリケーション -と同じです。ウィンドウを分割するとウィンドウごとにスクロールバーが作られます。 -メニューの [編集]-[全体設定]-[スクロールバー(下)表示切換] を使うと横スクロール -バーを表示できます。差分モードのときや 'wrap' オプションをオフにしているときに -便利です。(詳しくは後で説明します) - -ウィンドウを垂直分割していて、右側のウィンドウにだけスクロールバーが付いている -場合は、左側のウィンドウにカーソルを移動すれば、スクロールバーはそのウィンドウ -に作用するようになります。 -垂直分割をよく使うなら、左側にもスクロールバーを付けるといいかもしれません。メ -ニューから選択するか、'guioptions' を設定してください: > - - :set guioptions+=l - -これは 'guioptions' に 'l' フラグを追加しています。 - -============================================================================== -*09.2* マウスを使う - -標準は素晴らしい。Microsoft Windows では、マウスを使った標準的な操作方法でテキ -ストを選択できます。X ウィンドウシステムにもマウスの操作方法の標準があります。 -残念ながら、この二つの標準は別物です。 -幸運なことに Vim はカスタマイズできます。マウスの振る舞いを X ウィンドウシステ -ム方式か Microsoft Windows 方式のどちらかに変更できます。次のコマンドでマウス -の振る舞いを X ウィンドウシステム方式に設定できます: > - - :behave xterm - -次のコマンドでマウスの振る舞いを Microsoft Windows 方式に設定できます: > - - :behave mswin - -UNIX での初期設定は xterm です。Microsoft Windows での初期設定はインストール時 -に選択できます。二つの振る舞いの詳細については|:behave|をご覧ください。ここで -は概要だけ説明します。 - - -XTERM 方式のマウスの振る舞い - -左クリック カーソル移動 -左ドラッグ ビジュアルモードでテキストを選択 -中クリック クリップボードからテキストを貼り付け -右クリック マウスポインタで指した場所まで選択範囲を拡張 - - -MSWIN 方式のマウスの振る舞い - -左クリック カーソル移動 -左ドラッグ セレクトモードでテキストを選択 (|09.4| 参照) -シフトキー + 左クリック マウスポインタで指した場所まで選択範囲を拡張 -中クリック クリップボードからテキストを貼り付け -右クリック ポップアップメニューを表示 - - -マウスの動作はさらに細かく設定できます。マウスの動作を変更したい場合は、以下の -オプションを確認してください。 - - 'mouse' Vim のどのモードでマウスを使うのか - 'mousemodel' クリックしたときの動作 - 'mousetime' ダブルクリックのクリック間隔 - 'mousehide' 入力している間、マウスを隠す - 'selectmode' マウスで選択したときにビジュアルモードとセレク - トモードのどちらを開始するか - -============================================================================== -*09.3* クリップボード - -|04.7| ではクリップボードの基本的な使い方を説明しました。ここでは X Window -での必須事項を説明します。X Window にはプログラム間でテキストを交換するための -空間が二つあります。MS-Window にはありません。 - -X Window にはカレントセレクション ("current selection") があります。これは選択 -中のテキストのことです。Vim において、それはビジュアル選択している範囲のことで -す (初期設定の場合)。選択しているテキストは特に何もしなくても他のアプリケーショ -ンにペーストできます。 -例えば、この文章のどこかを適当にマウスで選択したとします。Vim は自動的にビジュ -アルモードに切り替わり、選択したテキストが強調表示されます。ここで、別の Vim -を引数なしで起動し、空のウィンドウを開きます。中央ボタンをクリックすると、選択 -したテキストが挿入されます。 - -カレントセレクションは他のテキストを選択するまで有効です。他の gVim にペースト -した後、そのウィンドウのテキストを選択すると、直前に別の gVim で選択していたテ -キストの表示が変わるのが確認できると思います。その選択範囲はもうカレントセレク -ションではないのです。 - -テキストの選択はマウスでなくても構いません。ビジュアルモードのコマンドをキーボー -ドで入力しても同じことになります。 - - -真のクリップボード ------------------- - -さて、テキストを交換するためのもう一つの空間を説明します。今までの説明との混同 -を避けるために、ここでは真のクリップボード ("real clipboard") と呼びます。普通 -はカレントセレクションと真のクリップボードはどちらもクリップボードと呼ばれます -が、慣れてください。 -真のクリップボードにテキストをプットするために、動作中の gVim で適当なテキスト -を選択し、メニューの [編集]-[コピー] コマンドを実行してください。これで、テキ -ストが真のクリップボードにコピーされました。クリップボードの内容は専用のアプリ -ケーション (例えば KDE の klipper) がなければ見ることはできません。 -次に、別の gVim に移り、カーソルを適当なところに移動し、メニューの [編集]-[貼 -り付け] コマンドを実行します。真のクリップボードからテキストが挿入されます。 - - -両方を使う ----------- - -カレントセレクションと真のクリップボードを両方使うのは少し複雑ですが、でもこれ -はとても便利なのです。例を挙げましょう。 -gVim でテキストファイルを開いて以下の操作を実行してください: > - -- 単語をビジュアルモードで選択する。 -- [編集]-[コピー] メニューを実行して単語をクリップボードに入れる。 -- ビジュアルモードで別の単語を選択する。 -- [編集]-[貼り付け] メニューを実行する。選択している単語がクリップボードにあ - る単語で置き換えられます。 -- マウスポインタを他のところに動かして中央ボタンを押す。直前にクリップボード - のテキストで上書きされた単語がその場所に挿入されます。 - -カレントセレクションと真のクリップボードは気を付けて使いさえすれば、非常に役立 -つテクニックになります。 - - -キーボードを使う ----------------- - -マウスが嫌いなあなたでも、二つのレジスタを使って、カレントセレクションと真のク -リップボードにアクセスできます。カレントセレクションには "* レジスタでアクセス -します。 -テキストをカレントセレクションにするにはビジュアルモードを使います。例えば、 -"V" を押せば行全体を選択できます。 -次のコマンドでカレントセレクションのテキストをカーソルの直前に挿入できます: > - - "*P - -大文字の "P" であることに注意してください。小文字の "p" だとカーソルの直後に -プットされます。 - -真のクリップボードには "+ レジスタでアクセスします。例えば、カーソル位置から行 -末までを真のクリップボードにコピーするには、次のようにします: > - - "+y$ - -"y" はヤンク、つまり Vim のコピーコマンドのことでしたね。 -次のコマンドで真のクリップボードのテキストをカーソルの直前に挿入できます: > - - "+P - -カレントセレクションの場合とコマンドは同じですが、スター (*) ではなくプラス -(+) レジスタを使っています。 - -============================================================================== -*09.4* セレクトモード - -これは X Window よりも MS-Windows でよく利用される機能です。しかし、どちらの環 -境でも利用できます。ビジュアルモードについては既に知っていますね。セレクトモー -ドはビジュアルモードに似ています。セレクトモードもテキストを選択するための機能 -です。違いは、文字を入力すると、選択されていたテキストが削除され、入力した文字 -に置き換わることです。 - -セレクトモードを使うには、最初にそれを有効にする必要があります。(MS-Windows で -は、既に有効になっていると思いますが、これを実行しても問題ありません): > - - :set selectmode+=mouse - -設定したら、マウスを使ってテキストを選択してみてください。ビジュアルモードのよ -うにテキストが強調表示されます。そして、文字を入力してください。選択されていた -テキストが削除され、入力した文字に置き換わります。挿入モードに入るので、続けて -文字を入力することができます。 - -普通に文字を入力すると選択中のテキストが削除されてしまうので、通常の移動コマン -ドの "hjkl" や "w" などは使えません。代わりに、シフト + 特殊キーの組み合わせを -使ってください。<S-Left> (シフト + 左矢印キー) でカーソルが左に移動します。ビ -ジュアルモードと同じように選択範囲が変化します。他の矢印キーも同様に使えます。 -<S-End> と <S-Home> も使えます。 - -選択モードの動作は 'selectmode' オプションで変更できます。 - -============================================================================== - -次章: |usr_10.txt| 大規摸な編集 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_10.jax b/doc/usr_10.jax deleted file mode 100644 index 4db695358..000000000 --- a/doc/usr_10.jax +++ /dev/null @@ -1,804 +0,0 @@ -*usr_10.txt* For Vim バージョン 7.3. Last change: 2006 Nov 05 - - VIM USER MANUAL - by Bram Moolenaar - - 大規模な編集 - - -四章では、小さな変更を加える方法について説明しました。この章では、同じ操作を再 -実行する方法や、広範囲のテキストを変更する方法を説明します。ビジュアルモードで -は選択範囲にさまざまな処理を実行できます。外部プログラムを使えばとても複雑な処 -理もできます。 - -|10.1| 操作の記録と再実行 -|10.2| 置換 -|10.3| コマンドの範囲指定 -|10.4| global コマンド -|10.5| 矩形選択 -|10.6| ファイルの一部の保存と読み込み -|10.7| テキストの整形 -|10.8| 大文字/小文字の変換 -|10.9| 外部プログラムを使う - -次章: |usr_11.txt| クラッシュからの復帰 -前章: |usr_09.txt| GUI を使う -目次: |usr_toc.txt| - -============================================================================== -*10.1* 操作の記録と再実行 - -"." コマンドを使えば直前の変更を繰り返せますが、複数のコマンドを組み合わせた、 -もっと複雑な操作を繰り返すにはどうすればいいでしょうか。それには記録コマンドを -使います。次の手順で記録できます: - -1. "q{register}" コマンドを実行する。指定したレジスタ {register} へのキー入力 - の記録が開始されます。レジスタ名は a から z のいずれかです。 -2. コマンドを入力して編集する。 -3. q を押して記録を終了する (レジスタの指定は必要ない)。 - -記録したマクロは "@{register}" コマンドで実行できます。 - -このコマンドの使い方を練習してみましょう。次のようなファイル名の一覧がありま -す: - - stdio.h ~ - fcntl.h ~ - unistd.h ~ - stdlib.h ~ - -これを次のように変更します: - - #include "stdio.h" ~ - #include "fcntl.h" ~ - #include "unistd.h" ~ - #include "stdlib.h" ~ - -まず、一行目の行頭に移動してください。そして次のコマンドを実行します。 - - qa レジスタ a へのマクロの記録を開始。 - ^ 行頭に移動。 - i#include "<Esc> 行頭に #include " を挿入。 - $ 行末に移動。 - a"<Esc> 行末に引用符 (") を追加。 - j 次の行に移動。 - q マクロの記録を終了。 - -さて、一回分の作業はこれで終りました。"@a" コマンドを使って変更を繰り返してみ -てください。 -"@a" コマンドには繰り返し回数を指定できます。三回繰り返すには、次のようにしま -す: > - - 3@a - - -移動と実行 ----------- - -変更したい行がいろんな場所に分散している場合は、それぞれの場所に移動してから -"@a" コマンドを使います。一度でも再実行すると、次からは "@@" で同じマクロを再 -実行できます。"@@" の方が少しだけ入力が簡単です。例えば、"@b" でレジスタ b を -実行すると、次に "@@" を実行したときはレジスタ b が使われます。 -マクロの実行と "." にはいくつか違いがあります。まず第一に、"." は一つの変更し -か繰り返せません。上述の例のように、"@a" では複数の変更やカーソルの移動も繰り -返せます。第二に、"." は直前の変更しか繰り返せません。レジスタを実行する方法な -ら、他の変更を加えた後でも、"@a" を使って、記録されたコマンドを繰り返せます。 -最後に、レジスタは 26 個あります。つまり、26 個のコマンド操作を記録しておける -のです。 - - -レジスタを使う --------------- - -記録に用いるレジスタはヤンクや削除で使っているのと同じものです。そのため、レジ -スタを操作して、記録されたコマンドと他のコマンドを合成することができます。 -レジスタ n にいくつかのコマンドが記録されているとします。ところが、"@n" で実行 -してみると、ミスがあることに気付きました。最初から記録をやり直すこともできます -が、また何か間違えてしまうかもしれません。代わりに、次のようなテクニックを使っ -てみましょう。 - - G ファイルの最後にジャンプ。 - o<Esc> 空行を作成。 - "np レジスタ n の内容をプット。記録されたコマンド - がテキストとして表示されます。 - {edits} 間違っている部分を修正。普通にテキストを編集す - るのと同じです。 - 0 行頭に移動。 - "ny$ 修正したコマンドをレジスタ n にヤンク - dd 不要になった最終行を削除 - -さて、"@n" で正しいコマンドが実行されるようになりました。(記録されたコマンドに -改行が含まれている場合は、上記の最後の二項目はその全内容が含まれるようにしてく -ださい) - - -レジスタに追記 --------------- - -これまで、レジスタ名には小文字を使ってきました。レジスタに追記するには大文字を -使います。 -単語を変更するためのコマンドがレジスタ c に記録されているとします。これは正し -く動作するのですが、変更すべき次の単語を検索する処理を追加したくなりました。次 -のようにすればできます: > - - qC/word<Enter>q - -レジスタ c に追記するために "qC" で記録を開始しています。レジスタ名を大文字で -書くと、同じレジスタに追記するという意味になるのです。 - -これは記録コマンドだけでなく、ヤンクや削除コマンドでも同じです。例えば、いくつ -かの行をレジスタ a に集めたいとします。最初の行を次のコマンドでヤンクしましょ -う: > - - "aY - -次の行に移動し、このように入力します: > - - "AY - -これを全ての行で実行します。レジスタ a にはヤンクした順にすべての行が保存され -ます。 - -============================================================================== -*10.2* 置換 *find-replace* - -":substitute" コマンドを使うと、指定した範囲内の文字列を置換できます。コマンド -の書式は次のとおりです: > - - :[range]substitute/from/to/[flags] - -このコマンドは [range] で指定された行範囲の中の文字列 "from" を文字列 "to" に -置換します。例えば、次のコマンドを実行すると、すべての行の "Professor" が -"Teacher" に置換されます: > - - :%substitute/Professor/Teacher/ -< - Note: - ":substitute" の綴りを完全に入力するような人はまずいません。普通は短縮 - 形の ":s" が使われます。以降ではこの短縮形を使います。 - -コマンドの前の "%" はファイル全体を意味する範囲指定です。範囲指定がない場合は、 -現在行のみ置換されます。範囲指定については次の節で述べます |10.3|。 - -初期設定では、各行の最初に見つかったものだけが変更されます。例えば、上のコマン -ドを実行すると、次の行は: - - Professor Smith criticized Professor Johnson today. ~ - -このように変更されます: - - Teacher Smith criticized Professor Johnson today. ~ - -すべてを置換するには g (global) フラグを指定してください: > - - :%s/Professor/Teacher/g - -これを実行すると、先程の行は次のようになります。 - - Teacher Smith criticized Teacher Johnson today. ~ - -フラグは他にもあります。p (print=出力) フラグ を指定すると、最後に変更された -行が表示されます。c (confirm=確認) フラグを指定すると、一つ一つ確認しながら置 -換できます。次のようにして使います: > - - :%s/Professor/Teacher/c - -"Professor" が現れる最初の場所が検索され、置換される予定のテキストが表示されま -す。そして、次のようなプロンプトが表示されます: > - - Teacher に置換しますか? (y/n/a/q/l/^E/^Y) - -ここでは次のいずれかの返答が必要です。 - - y Yes; 置換する。 - n No; 置換せずにスキップ。 - a All; 置換する。以降すべて確認なしで置換する。 - q Quit; 置換を終了する。 - l Last; 置換をしてから終了する。 - CTRL-E 画面を一行上にスクロールする。 - CTRL-Y 画面を一行下にスクロールする。 - - -置換コマンドの "from" の部分は実際にはパターン (正規表現) です。これは検索コマ -ンドで使うのと同じものです。例えば、次のコマンドでは、行頭に現れる "the" のみ -が置換されます: > - - :s/^the/these/ - -"from" や "to" にスラッシュ (/) を含めるには、バックスラッシュ (\) を前置する -必要がありますが、スラッシュの代わりに他の文字を使えばその必要はありません。例 -えばプラス (+) など: > - - :s+one/two+one or two+ - -============================================================================== -*10.3* コマンドの範囲指定 - -":substitute" などの : コマンドは、実行する範囲を指定できます。これを範囲指定 -(range) と呼びます。 -範囲指定の基本形式は {number},{number} です。例: > - - :1,5s/this/that/g - -1 行目から 5 行目まで置換コマンドが実行されます。5 行目も範囲に入ります。範囲 -指定はコマンドの前に指定してください。 - -特定の一行だけ指定するには、数字を一つだけ指定します: > - - :54s/President/Fool/ - -一部のコマンドは範囲指定を省略するとファイル全体を処理します。そのようなコマン -ドで現在行だけを処理するには "." を使います。例えば、":write" コマンドの範囲指 -定を省略するとファイル全体が保存されますが、現在行だけを保存するには、次のよう -にします: > - - :.write otherfile - -一行目の行番号は 1 です。最終行は "$" で指定できます。例えば、現在行から最終行 -までの範囲で置換をするには、次のようにします: > - - :.,$s/yes/no/ - -先程使った "%" は "1,$"、つまり一行目から最終行までと同じことです。 - - -パターンを使った範囲指定 ------------------------- - -例えば、本のどこかの章を編集していて、その章で使われている "grey" を全て -"gray" に置換したいとします。ただし、その章だけを置換、つまり次章は変更したく -ありません。章は行頭が "Chapter" で始まる行で区切られています。次のコマンドで -それができます: > - - :?^Chapter?,/^Chapter/s=grey=gray=g - -パターン検索が二回使われています。最初の "?^Chapter?" では現在行から上に向かっ -て検索しています。この ?pattern? という範囲の書き方は後方検索をするために使い -ます。同様に、"/^Chapter/" で前方検索を行い、次章の先頭を検索しています。 -上の例では、説明をわかりやすくするために、置換コマンドの区切りに "=" を使って -います。スラッシュでも他の文字でも動作に違いはありません。 - - -加算と減算 ----------- - -実は上のコマンドには少しだけ間違いがあります。次章のタイトルに "grey" が含まれ -ていると、それも置換されてしまいます。それが期待どおりの動作ならいいのですが、 -そうでなければ? その場合はオフセットを指定すればよいのです。 -パターンを検索し、その一行上の行を使うには、次のようにします: > - - /Chapter/-1 - -数字は 1 でなくても構いません。ヒットした行の 2 行下を指定するなら、次のように -します: > - - /Chapter/+2 - -オフセットは他の範囲指定にも使えます。例えば: > - - :.+3,$-5 - -これは、現在行の 3 行下から、最終行の 5 行上までの範囲を指定しています。 - - -マークを使う ------------- - -行番号を直接指定する代わりに、マークを使うこともできます。 -マークの使い方は三章で説明しました。例えば、範囲指定したい領域の先頭を "mt" で -マークし、領域の末尾を "mb" でマークします。すると、マークを使って次のように範 -囲指定をすることができます (マークのある行は範囲に含まれます): > - - :'t,'b - - -ビジュアルモードと範囲指定 --------------------------- - -ビジュアルモードでテキストを選択し、":" を押してコマンドラインモードに入ると、 -次のような表示になります: > - - :'<,'> - -この状態でコマンドを入力すると、そのコマンドはビジュアル選択した範囲に対して適 -用されます。 - - Note: - 行の一部だけビジュアルモードで選択した場合や、CTRL-V で矩形選択した場 - 合でも、コマンドは行全体に適用されます。これは将来、変更されるかも知れ - ません。 - -実は、'< と '> はマークです。ビジュアル選択の始点と終点を示しています。このマー -クは、次にビジュアル選択するまで同じ場所を指しています。そのため、 "'<" コマン -ドでその場所にジャンプすることもできます。マークと他の範囲指定方法を組み合わせ -ることもできます: > - - :'>,$ - -これは、選択範囲の終点からファイルの末尾までを範囲指定しています。 - - -行数指定 --------- - -変更したい行数が分かっているなら、その数を入力してから ":" を押してください。 -例えば、"5:" と入力すると、次のような表示になります: > - - :.,.+4 - -続けて、使いたいコマンドを入力してください。これは、"." (現在行) から ".+4" (4 -行下) が範囲指定されています。つまり範囲は 5 行ということです。 - -============================================================================== -*10.4* global コマンド - -":global" コマンドは Vim の中でも最も強力な機能の一つです。パターンにヒットす -る行を検索し、その行で、任意のコマンドを実行できます。コマンドの書式は次のとお -りです: > - - :[range]global/{pattern}/{command} - -":substitute" コマンドに似ていますが、文字列が置換されるのではなく、{command} -コマンドが実行されます。 - - Note: - ":global" で実行できるのは ":" で始まるコマンドだけです。ノーマルモー - ドコマンドはそのままでは使えません。|:normal|コマンドを使ってください。 - -例えば、C++ スタイルのコメント内の "foobar" を "barfoo" に置換したいとします。 -コメントは "//" で開始されています。次のコマンドを使いましょう: > - - :g+//+s/foobar/barfoo/g - -最初の ":g" は ":global" の短縮形です。":substitute" を ":s" と縮めるのと同じ -です。次に "+" 記号で囲まれたパターンがあります。今回はスラッシュを含んだパター -ンを検索するので、セパレータに "+" を使っています。その後に、"foobar" を -"barfoo" に置換するコマンドが続きます。 -範囲指定を省略した場合、global コマンドはファイル全体に適用されます。そのため、 -上の例では範囲指定をしていません。この点は、":substitute" が、範囲指定を省略す -ると現在行だけ処理するのと異なっています。 -このコマンドは完璧ではありません。"//" が行の途中にあった場合もヒットしてしま -うので、行頭から "//" までの文字も置換されてしまいます。 - -":substitute" と同じく、どんなパターンでも使えます。もっと複雑なパターンを覚え -たら使ってみてください。 - -============================================================================== -*10.5* 矩形選択 - -CTRL-V を使うと、テキストの矩形部分を選択することができます。ここでは、矩形選 -択でのみ使える特殊なコマンドを説明します。 - -矩形選択では、"$" コマンドに特殊な意味があります。"$" で移動した直後は、選択範 -囲のすべての行で、選択範囲が行末まで拡張されます。現在行より長い行も行末まで選 -択されます。この選択効果は、左右の移動をすると失われてしまいます。つまり、"j" -なら効果は残りますが、"h" では元に戻ってしまいます。 - - -テキストの挿入 --------------- - -"I{string}<Esc>" コマンドを使うと、各行の、矩形選択した左側に {string} を挿入 -できます。例えば、CTRL-V を押して矩形選択を開始し、カーソルを動かして選択範囲 -を設定します。次に I を押して挿入モードに入り、テキストを挿入します。このとき、 -挿入したテキストは最初の行にだけ表示されます。 -<Esc> を押して挿入モードを抜けると、テキストが魔法のように選択範囲の残りの行に -挿入されます。例: - - include one ~ - include two ~ - include three ~ - include four ~ - -カーソルを "one" の "o" に移動し CTRL-V を押します。"3j" で、"four" まで移動し -ます。これで 4 行が矩形選択されました。そして、次のコマンドを入力します: > - - Imain.<Esc> - -結果は次のようになります: - - include main.one ~ - include main.two ~ - include main.three ~ - include main.four ~ - -選択範囲の途中に短い行があって、その行の文字が選択範囲に入ってなかった場合は、 -その行には何も挿入されません。例えば、以下のテキストで、一行目と三行目の -"long" を矩形選択します。二行目は短いのでなにも選択されていません: - - This is a long line ~ - short ~ - Any other long line ~ - - ^^^^ 選択範囲 - -そして、"Ivery <Esc>" を入力すると、次のようになります: - - This is a very long line ~ - short ~ - Any other very long line ~ - -短かい行には何も挿入されません。 - -改行を含むテキストを挿入した場合、"I" は通常の挿入コマンドと同じ動作をします。 -つまり、最初の行にだけテキストが挿入されます。 - -"A" コマンドも同様の動作をします。ただし、テキストは右側に挿入されます。そし -て、短い行にもテキストが挿入されます。"I" と使い分ければ、短い行にテキストを挿 -入するかどうかを選択することができます。 -"A" には特別な場合が一つあります。矩形選択時に "$" を使って各行の行末まで選択 -範囲を拡張した場合、"A"を使うと各行の行末にテキストが追加されます。 -上と同じ例を使って、こんどは "$A XXX<Esc>" と入力すると、結果は次のようになり -ます: - - This is a long line XXX ~ - short XXX ~ - Any other long line XXX ~ - -"$" を使わなければこの効果は出せません。Vim は "$" が使われたかどうかを記憶し -ています。カーソルを一番長い行の行末に移動し、見た目の選択範囲を同じにしても、 -同じ結果にはなりません。 - - -テキストの変更 --------------- - -矩形選択で "c" コマンドを使うと、選択範囲が削除され、挿入モードに入ります。入 -力された文字列は選択されていた各行に挿入されます。 -上と同じ例を使って、"long" を選択しているときに今度は "c_LONG_<Esc>" と入力す -ると、結果は次のようになります: - - This is a _LONG_ line ~ - short ~ - Any other _LONG_ line ~ - -"I" コマンドの場合と同じく、短い行は無視されます。また、新しい文字列には改行は -入力できません。 - -"C" コマンドの場合は、ブロックの左端から行末までが削除されます。そして、挿入 -モードに入り、文字列を入力できるようになります。その文字列は各行の行末に追加さ -れます。 -また同じ例ですが、こんどは "Cnew text<Esc>" と入力すると、結果は次のようになり -ます。 - - This is a new text ~ - short ~ - Any other new text ~ - -注意すべきは、"long" という単語だけが選択されていても、これを実行すると、行末 -まで全部消えてしまう点です。つまり、選択範囲の左端の位置だけが意味を持ちます。 -繰り返しですが、文字が選択されていない短い行はここでも無視されます。 - -その他に、矩形選択内の文字列を変更するコマンドには次のようなものがあります。 - - ~ 大文字/小文字切換え (a -> A and A -> a) - U 大文字化する (a -> A and A -> A) - u 小文字化する (a -> a and A -> a) - - -一つの文字で埋める ------------------- - -選択範囲全体を一つの文字で埋めるには "r" コマンドを使います。またまた、上で用 -いた例ですが、こんどは "long" を選択した上で "rx" と入力します: - - This is a xxxx line ~ - short ~ - Any other xxxx line ~ - - - Note: - 行末を越えて矩形選択したい場合は、25 章の 'virtualedit' の説明を参照し - てください。 - - -シフト ------- - -">" コマンドを使うと、選択されたテキストを右側にシフトできます。間は空白で埋め -られます。シフトの開始位置は矩形選択の左端です。 -また同じ例を使って、今度は ">" を実行すると次のようになります: - - This is a long line ~ - short ~ - Any other long line ~ - -シフトされる桁数は 'shiftwidth' オプションで設定します。これを 4 に変更するに -は次のようにします: > - - :set shiftwidth=4 - -"<" コマンドを使うと、選択範囲の左側にある空白を一つのシフト分だけ削除できま -す。このコマンドは選択範囲の左側にある空白の量によって制限されます。つまり、空 -白がシフト量より少ない場合は、可能な範囲だけ空白が削除されます。 - - -行の結合 --------- - -"J" コマンドを使うと、選択範囲の行を一行に連結できます。つまり改行が削除されま -す。正確には、改行、行頭の空白、行末の空白、が一つの空白で置換されます -('joinspaces' オプションで動作を変更できます)。 -さて、また同じ例を使って、今度は "J" を実行します: - - This is a long line short Any other long line ~ - -"J" コマンドは矩形選択以外でも使えます。"v" や "V" で選択した場合も全く同じ動 -作をします。 - -空白を変更したくない場合は、"gJ" コマンドを使ってください。 - -============================================================================== -*10.6* ファイルの一部の保存と読み込み - -メールを書いているとき、他のファイルを取り込みたいことがあるかもしれません。そ -れには ":read {filename}" コマンドを使います。指定したファイルの内容が現在行の -下にプットされます。 -次の文章でやってみましょう。 - - Hi John, ~ - Here is the diff that fixes the bug: ~ - Bye, Pierre. ~ - -カーソルを二行目に移動し、次のコマンドを入力します: > - - :read patch - -"patch" という名前のファイルが挿入され、次のようになります: - - Hi John, ~ - Here is the diff that fixes the bug: ~ - 2c2 ~ - < for (i = 0; i <= length; ++i) ~ - --- ~ - > for (i = 0; i < length; ++i) ~ - Bye, Pierre. ~ - -":read" コマンドに範囲指定すると、指定されたファイルが範囲指定された行の下に -プットされます。例えば、":$r patch" なら、"patch" の内容がファイルの末尾に追加 -されます。 -ファイルの先頭に読み込むにはどうすればいいでしょうか。それには、行番号 0 を指 -定します。そのような行は実際にはないので、他のコマンドに指定するとエラーになる -かもしれませんが、このコマンドでは指定できます: > - - :0read patch - -"patch" の内容がファイルの先頭にプットされます。 - - -ファイルの一部だけ保存 ----------------------- - -ファイルの一部だけ保存するには、":write" コマンドを使います。範囲指定を省略す -るとファイル全体が保存されますが、範囲指定すると、指定した範囲の行だけが保存さ -れます: > - - :.,$write tempo - -このコマンドで、現在行から最終行までが "tempo" に保存されます。ファイルが既に -存在している場合はエラーメッセージが表示されるので、間違ってファイルを上書きす -る心配はありません。ファイルを上書きしたい場合は、! を付けてください: > - - :.,$write! tempo - -注意: ! は ":write" コマンドの直後に指定してください。間に空白を入れると、フィ -ルタコマンドになってしまいます。フィルタコマンドについては後で説明します。 - - -ファイルに追記する ------------------- - -この章の最初の節で、複数の行をレジスタに集める方法を説明しました。同じように、 -複数の行をファイルに集めることができます。まず、次のコマンドで最初の行を保存し -てください: > - - :.write collection - -次に、二行目として保存したい行に移動し、次のように入力します: > - - :.write >>collection - -新規ファイルとして保存するのではなく、">>" を使って、ファイルの末尾に追記する -ことを指示しています。あとは必要なだけこの操作を繰り返してください。 - -============================================================================== -*10.7* テキストの整形 - -文章を入力しているとき、行が画面内に収まるように自動的に改行してくれたら便利で -すよね。そうするには、'textwidth' オプションを設定します: > - - :set textwidth=72 - -vimrc ファイルの見本 (|vimrc_example.vim|) で、テキストファイルが開かれたとき -にこのオプションが設定されるようにしていたのを覚えているでしょうか。したがっ -て、vimrc ファイルの見本をそのまま使っているなら、オプションは既に設定されてい -ます。現在の 'textwidth' の設定を確認するには、次のようにします: > - - :set textwidth - -これで、行が 72 文字より長くなった行が改行されるようになりました。ただし、行の -途中からテキストを挿入したときや、単語削除をしたときは、行が 72 文字よりも長く -なったり短くなったりします。既存の文章が自動的に再整形されたりはしません。 -現在の段落を整形するには、次のコマンドを使います: > - - gqap - -これは "gq" というオペレータで始まるコマンドです。次に "ap" というテキストオブ -ジェクトが指定されています。これは "a paragraph" (一つの段落) という意味です。 -段落は、空行で区切られたテキストです。 - - Note: - 空行 (改行文字だけの行) と空白行 (空白文字だけの行) は違います。段落の - 区切りは「空行」だけです。見た目では気付きにくいので注意! - -"ap" 以外のテキストオブジェクトや、移動コマンドも指定できます。段落が正しく分 -割されているなら、次のコマンドでファイル全体を整形できます: > - - gggqG - -これは、"gg" で一行目に移動し、"gq" で整形オペレータを指定、"G" でファイル末尾 -までジャンプしています。 - -段落の区切りが明確でない場合は、手動で行を選択して整形してください。整形したい -範囲の最初の行に移動し、"gqj" コマンドを使います。現在行と次の行が整形されま -す。現在行が短い場合は、次の行の単語が現在行に移動します。現在行が長い場合は、 -現在行の単語が次の行に移動します。カーソルは次の行に移動しているので、"." でコ -マンドを再実行できます。あとは必要なだけ繰り返してください。 - -============================================================================== -*10.8* 大文字/小文字の変換 - -"section header" という小文字のテキストがあります。これを、"section" だけ大文 -字にするには、"gU" オペレータを使います。カーソルを先頭に移動して、コマンドを -実行してください: > - - gUw -< section header ----> SECTION header - -"gu" オペレータで小文字に変換できます: > - - guw -< SECTION header ----> section header - -"g~" を使うと、大文字と小文字を切り替えることができます。今説明したのは全てオ -ペレータなので、移動コマンドやテキストオブジェクトやビジュアルモードと組み合わ -せることができます。 -オペレータを行に適用するには、オペレータを二回繰り返してください。例えば、"d" -は削除オペレータなので、"dd" で一行削除になります。同じように、"gugu" で行全体 -が小文字になります。もっと短く、"guu" でも構いません。"gUgU" は "gUU"、"g~g~" -は "g~~" と短縮できます。例: > - - g~~ -< Some GIRLS have Fun ----> sOME girls HAVE fUN ~ - -============================================================================== -*10.9* 外部プログラムを使う - -Vim には強力なコマンドがたくさんあるので何でもできますが、外部プログラムを使っ -た方がもっとキレイで高速に処理できる場合もあります。 -"!{motion}{program}" コマンドを使うと、ファイルの一部を、外部プログラムでフィ -ルタすることができます。つまり、{program} で指定したプログラムが実行され、 -{motion} で指定した範囲のテキストがプログラムに入力され、指定された範囲のテキ -ストがプログラムの出力で置き換えられます。 -UNIX のフィルタに馴染のない方にはわかりにくいと思うので、例を交えて説明します。 -sort コマンドはファイルの中身をソート (並べ替え) するコマンドです。次のコマン -ドを実行すると、ソートされていない input.txt の中身が整列され、output.txt に保 -存されます。(この例は UNIX でも Microsoft Windows でも動作します) > - - sort <input.txt >output.txt - -さて、同じことを Vim でやってみましょう。1 行目から 5 行目までをソートしてみま -す。カーソルを一行目に移動して、次のコマンドを実行します: > - - !5G - -"!" はフィルタを実行するためのコマンドです。次に、移動コマンドを実行し、フィル -タに渡す範囲を指定しています。"5G" は 5 行目に移動するコマンドなので、1 行目 -(現在行) から 5 行目までがフィルタの範囲として指定されます。 -カーソルが画面の一番下に移動し、! プロンプトが表示されるので、フィルタプログラ -ムの名前を入力してください。この場合なら "sort" ですね。したがって、コマンドは -全部で次のようになります。 > - - !5Gsort<Enter> - -コマンドを実行すると、最初の五行が sort プログラムで処理され、元のテキストが、 -プログラムの出力で置き換えられます。 - - line 55 line 11 - line 33 line 22 - line 11 --> line 33 - line 22 line 44 - line 44 line 55 - last line last line - -"!!" コマンドを使うと、現在行をフィルタできます。Unix では "date" コマンドで現 -在の日時を出力できるので、"!!date<Enter>" で現在行を "date" の出力で置き換える -ことができます。これはファイルに日付を挿入するのに便利です。 - - -うまく動作しない場合 --------------------- - -シェルを起動し、テキストを入力し、出力を取り込むためには、シェルが正しく実行で -きるように設定されている必要があります。フィルタ処理に問題がある場合は、以下の -オプションを確認してください。 - - 'shell' 外部プログラムを実行するために使われるプログラムの指定 - 'shellcmdflag' シェルにコマンドを渡すための引数指定 - 'shellquote' コマンドを囲むためのクオート文字 - 'shellxquote' コマンドとリダイレクトを囲むためのクオート文字 - 'shelltype' シェルの種類 (Amiga専用) - 'shellslash' ファイル名のバックスラッシュをスラッシュにする - (MS-Windows 系専用) - 'shellredir' コマンドの出力をファイルに保存するために指定する文字列 - -Unix では、設定する必要はほとんどありません。なぜなら、おそらく sh 系か csh 系 -のシェルが使われているからです。Vim は 'shell' に "csh" という文字列が含まれて -いるかどうかでシェルの種類を判断し、関連したオプションを自動的に設定します。 -しかし、MS-Windows ではいろんなシェルがあるので、フィルタを動作させるためには、 -オプションを設定する必要があるかもしれません。詳しくはオプションのヘルプを参照 -してください。 - - -コマンドの出力を読み込む ------------------------- - -カレントディレクトリの内容を読み込むには、次のようにします。 - -Unix系: > - :read !ls -MS-Windows系: > - :read !dir - -"ls" や "dir" コマンドの出力が取り込まれ、カーソルの下に挿入されます。これは -ファイルの読み込みに似ていますが、"!" を使ってコマンドを指定している点が違いま -す。 -コマンドに引数を指定することもできます。出力をプットする場所を指定することもで -きます: -> - :0read !date -u - -これはファイルの先頭に現在の日付と時間を UTC 形式で挿入します ("-u" 引数が使え -る date コマンドが必要ですよ。当たり前ですが...)。Note: "!!date" が現在行を置 -き換えるのに対して、":read !date" は行を挿入するという点が違います。 - - -コマンドにテキストを入力する ----------------------------- - -Unix の "wc" コマンドは単語を数えることができます。編集中のファイル内の単語を -数えるには、次のようにします: > - - :write !wc - -これは上述の write コマンドと似ていますが、"!" を使って外部プログラムを指定し -ている点が違います。テキストがコマンドの標準入力に渡され、次のような結果が表示 -されます: - - 4 47 249 ~ - -"wc" コマンドは冗長なメッセージを出力しません。この出力は、行数が 4、単語数が -47、文字数が 249 であることを示しています。 - -次のような間違いに気をつけてください: > - - :write! wc - -これはカレントディレクトリの "wc" というファイルに強制上書きするコマンドです。 -空白は重要ですよ! - - -画面の再描画 ------------- - -外部プログラムがエラーを起こした場合、画面がめちゃくちゃになってしまうことがあ -ります。Vim は必要だと思われる最小限の領域だけを再描画しますが、他のプログラム -の出力内容を完全に把握することはできません。次のコマンドで画面を再描画できま -す: > - - CTRL-L - -============================================================================== - -次章: |usr_11.txt| クラッシュからの復帰 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_11.jax b/doc/usr_11.jax deleted file mode 100644 index 96c60a14b..000000000 --- a/doc/usr_11.jax +++ /dev/null @@ -1,321 +0,0 @@ -*usr_11.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - クラッシュからの復帰 - - -マシンがクラッシュした? しかも何時間もかけて編集していたところだった? 慌てな -いで! 作業を復元するための情報がハードディスクに記録されています。この章で -は、作業の復元方法や、スワップファイルの扱いについて説明します。 - -|11.1| リカバリの基本 -|11.2| スワップファイルはどこにある? -|11.3| クラッシュした? -|11.4| さらなる情報 - -次章: |usr_12.txt| 便利な小技 -前章: |usr_10.txt| 大規模な編集 -目次: |usr_toc.txt| - -============================================================================== -*11.1* リカバリの基本 - -ほとんどの場合、編集していたファイルの名前さえ覚えていれば (そしてハードディス -クが正しく動いていれば) ファイルのリカバリはとても簡単です。Vim を起動するとき -に、ファイル名に "-r" 引数を付けるだけです: > - - vim -r help.txt - -スワップファイル (編集中の文書を保持するのに使われる) が読み込まれ、編集してい -たファイルのかけらが読み込まれます。変更がリカバリされると次のようなメッセージ -が表示されます (もちろん、ファイル名は違うでしょう): - - Using swap file ".help.txt.swp" ~ - Original file "~/vim/runtime/doc/help.txt" ~ - Recovery completed. You should check if everything is OK. ~ - (You might want to write out this file under another name ~ - and run diff with the original file to check for changes) ~ - You may want to delete the .swp file now. ~ - -日本語: - スワップファイル ".help.txt.swp" を使用中 ~ - 原本ファイル "~/vim/runtime/doc/help.txt" ~ - リカバリが終了しました. 全てが正しいかチェックしてください. ~ - (変更をチェックするために, このファイルを別の名前で保存した上で ~ - 原本ファイルとの diff を実行すると良いでしょう) ~ - それから.swpファイルを削除してください ~ - -念のため、ファイルを違う名前で保存しましょう: > - - :write help.txt.recovered - -復元前のファイルと比較して、正しく復元できたどうかを確認してください。それには -vimdiff (|08.7|) が便利です。例: > - - :write help.txt.recovered - :edit # - :diffsp help.txt - -復元したファイルが、復元前のファイル (クラッシュする前に保存してあったファイ -ル) の内容を含んでいることを確認し、失われた行がないかどうかも確認してください -(Vim がリカバリに失敗することもあるので)。 -リカバリ時に警告メッセージが表示された場合は、それを注意深く読んでください。ま -あ、そんなことは滅多にありませんが。 - -リカバリ後のテキストがファイル内のテキストと同じ場合は次のようなメッセージが表 -示されます: - - Using swap file ".help.txt.swp" ~ - Original file "~/vim/runtime/doc/help.txt" ~ - Recovery completed. Buffer contents equals file contents. ~ - You may want to delete the .swp file now. ~ - -日本語: - スワップファイル ".help.txt.swp" を使用中 ~ - 原本ファイル "~/vim/runtime/doc/help.txt" ~ - リカバリが終了しました. バッファの内容とファイルの内容は同じです. ~ - それから.swpファイルを削除してください ~ - -これが起こるのは既にファイルをリカバリしていたか、なにか変更したあとでファイル -を保存していた場合などです。この場合は安全にスワップファイルを削除できます。 - -普通は、クラッシュ直前の変更はリカバリできません。スワップファイルは、四秒間入 -力がなかったときや、約 200 文字入力されるごとに、ディスクに書き出されます。こ -の動作は 'updatetime' と 'updatecount' で設定できます。ですから、変更を保存す -る間もなしにシステムがダウンすると、最後に書き出した後の変更は失われてしまうの -です。 - -名前のないファイルを編集していた場合は、引数に空文字列を与えてください: > - - vim -r "" - -これは正しいディレクトリで実行してください。ディレクトリが違うとスワップファイ -ルを検出できません。 - -============================================================================== -*11.2* スワップファイルはどこにある? - -スワップファイルはいろんな場所に保存できます。通常は元のファイルと同じディレク -トリに保存されます。スワップファイルを見つけるには、ファイルのあるディレクトリ -に移動して、次のコマンドを使います: > - - vim -r - -検出されたスワップファイルの一覧が表示されます。カレントディレクトリのファイル -のスワップファイルが別ディレクトリにある場合はそれも表示されます。ディレクトリ -ツリーを再帰的に処理したりはしません。 -出力は次のようなものです: - - スワップファイルが複数見つかりました: ~ - 現在のディレクトリ: ~ - 1. .main.c.swp ~ - 所有者: mool 日付: Tue May 29 21:00:25 2001 ~ - ファイル名: ~mool/vim/vim6/src/main.c ~ - 変更状態: あり ~ - ユーザ名: mool ホスト名: masaka.moolenaar.net ~ - プロセスID: 12525 ~ - ディレクトリ ~/tmp: ~ - -- なし -- ~ - ディレクトリ /var/tmp: ~ - -- なし -- ~ - ディレクトリ /tmp: ~ - -- なし -- ~ - -リカバリを実行したとき、スワップファイルが複数見つかった場合は、スワップファイ -ルの一覧が表示されるので、使いたいスワップファイルを番号で選択してください。日 -付を見て慎重に選択してください。 -どれを指定したらよいかわからない場合は、一つずつ試して中身を確認してください。 - - -スワップファイルを直接指定する ------------------------------- - -使いたいスワップファイルがわかっている場合は、スワップファイルの名前を指定すれ -ばリカバリすることができます。元ファイルの名前はスワップファイルから取得されま -す。 - -例: > - vim -r .help.txt.swo - -これはスワップファイルが本来の場所以外にあるときも便利です。 -Vim は *.s[uvw][a-z] のパターンにマッチするファイルをスワップファイルとして認 -識します。 - -うまく動作しない場合は、Vim が表示したファイル名を見て、それにしたがってファイ -ル名を変更してください。'directory' オプションを確認し、スワップファイルが保存 -される場所も確認してください。 - - Note: - スワップファイルには、'dir' オプションに指定されたディレクトリ内の、 - "filename.sw?" というパターンにマッチしたファイルが使われます。ワイル - ドカードの展開ができなかった (例えば 'shell' オプションが無効であった) - 場合は、"filname.swp" というファイルが検索されます。それも失敗した場合 - は、スワップファイルを直接指定してリカバリするしかありません。 - -============================================================================== -*11.3* クラッシュした? *ATTENTION* *E325* - -Vim には、うっかりミスを防止するための仕組みがあります。ファイルを開こうとした -ときに、次のようなメッセージが表示されることがあります: - - E325:注意 ~ - 次の名前でスワップファイルを見つけました ".main.c.swp" ~ - 所有者: mool 日付: Tue May 29 21:09:28 2001 ~ - ファイル名: ~mool/vim/vim6/src/main.c ~ - 変更状態: なし ~ - ユーザ名: mool ホスト名: masaka.moolenaar.net ~ - プロセスID: 12559 (まだ実行中) ~ - 次のファイルを開いている最中 "main.c" ~ - 日付: Tue May 29 19:46:12 2001 ~ - - (1) 別のプログラムが同じファイルを編集しているかもしれません. ~ - この場合には, 変更をした際に最終的に, 同じファイルの異なる ~ - 2つのインスタンスができてしまうことに注意してください. ~ - 終了するか, 注意しながら続けます. ~ - - (2) このファイルの編集セッションがクラッシュした. ~ - この場合には ":recover" か "vim -r main.c" ~ - を使用して変更をリカバーします(":help recover" を参照). ~ - 既にこれを行なったのならば, スワップファイル ".main.c.swp" ~ - を消せばこのメッセージを回避できます. ~ - -ファイルを開くとき、スワップファイルが既に存在するかどうかがチェックされます。 -既に存在しているなら、何かがおかしくなっているのです。原因は次の二つの内のどち -らかでしょう。 - -1. 別のセッションが同じファイルを編集している。上記メッセージの "プロセスID" - の行に注目してください。次のようになっていますね: - - プロセスID: 12559 (まだ実行中) ~ - - "(まだ実行中)" というのは、このファイルを編集しているプロセスが、同じマシン - 上で実行されていることを示しています。この情報は Unix 以外のシステムでは表 - 示されないかもしれません。ネットワーク越しにファイルを編集している場合も、 - この情報は表示されません。なぜなら、そのプロセスは他のコンピュータで実行さ - れているからです。そのような場合は、自分で状況判断してください。 - 別の Vim が同じファイルを編集している場合、そのまま編集を続けると同じファイ - ルの二つのバージョンができてしまいます。後から書き込まれたファイルがもう一 - 方のファイルを上書きしてしまうので、変更内容が失われることになります。この - ような場合は、そのまま Vim を終了したほうがいいでしょう。 - -2. Vim またはマシンがクラッシュしたのでスワップファイルが残っている。メッセー - ジの日付を確認してください。スワップファイルの日付が開こうとしたファイルよ - りも新しく、メッセージに次の行が含まれている場合: - - 変更状態: あり ~ - - この場合、クラッシュしたセッションが存在し、リカバリすべき内容が含まれてい - る可能性があります。 - ファイルの日付がスワップファイルの日付よりも新しい場合、クラッシュした後に - 何らかの変更が加えられた可能性があります (おそらく、リカバリした後に、スワッ - プファイルを消し忘れたのではないですか?)。もしくは、スワップファイルが更新 - されてからクラッシュするまでの間にファイルが保存されたのかもしれません (そ - れならラッキーです。古いスワップファイルは必要ありません)。そういう場合は、 - 次のような警告が表示されます: - - スワップファイルよりも新しいです! ~ - - -読めないスワップファイル ------------------------- - -ときどき、スワップファイルの名前の下に、次の行が表示されることがあります - - [読込めません] ~ - -これには良い状態と悪い状態があります。 - -以前のセッションがファイルに変更を加えることなくクラッシュした場合は良い状態で -す。その場合、ゼロバイトのスワップファイルが作成されているはずです。それを削除 -して作業を続けてください。 - -スワップファイルの読み込み権限があなたにない場合は少し悪い状態です。ファイルを -読み込み専用で開くか、Vim を終了するかしてください。マルチユーザーシステムで、 -あなたが違う名前でログインしていたときに変更を加えていたのだとしたら、その名前 -でログインしなおせば "読み込みエラー" を直せるかもしれません。あるいは、その -ファイルを最後に変更した (している) 人を探して話し合う必要があるかもしれませ -ん。 - -スワップファイルを保存しているディスクが物理的に故障している場合はとても悪い状 -態です。幸いにも、そんなことはほとんど起こりません。(可能なら) まず、ファイル -を読み込み専用で開き、変更がどの程度失われたか確認してください。あなたがその -ファイルの責任者なら、変更をやり直す覚悟を決めましょう。 - - -どうしますか? *swap-exists-choices* --------------- - -ダイアログがサポートされている場合、次の五つの選択肢が表示されます: - - スワップファイル ".main.c.swp" が既にあります! ~ - 読込専用で開く([O]), とにかく編集する((E)), 復活させる((R)), ~ - 削除する((D)), 終了する((Q)), 中止する((A)): ~ - -"O" ファイルを読み込み専用で開く。リカバリが必要なくて、ただファイルを表示した - い場合に選択してください。他の誰かがファイルを編集しているときに、ファイル - の内容を変更したいのではなく、確認だけしたい場合にも使えます。 - -"E" ファイルを普通に編集する。注意!他の Vim がそのファイルを編集中の場合、そ - のファイルの二つのバージョンができてしまいます。そうなる前に Vim は警告を - 発しますが、後で残念なことにならないように、最初から安全な選択をしましょ - う。 - -"R" スワップファイルを使ってファイルを復元する。復元すべき内容がスワップファイ - ルに含まれていることがわかっている場合に使ってください。 - -"Q" 終了する。ファイル編集を取り止めます。他の Vim が同じファイルを編集してい - る場合に使ってください。 - Vim を起動中なら、Vim が終了します。複数のファイルを開こうとしていた場合、 - Vim が終了するのは、それが最初のファイルだった場合のみです。":edit" コマン - ドで開こうとしていた場合は、ファイルを開かずに、直前のファイルに戻ります。 - -"A" 停止する。「終了する」に似ていますが、コマンドも即座に停止します。例えば、 - 複数のファイルを開くようなスクリプトを実行したときに、スクリプトを即座に停 - 止させることができます。 - -"D" スワップファイルを削除する。スワップファイルが不要なことがはっきりしている - 場合に使ってください。例えば、スワップファイルが変更を何も含んでいない場合 - や、ファイル本体の日付がスワップファイルより新しい場合に使います。 - Unixでは、スワップファイルを生成したプロセスがまだ実行中の場合、この選択肢 - は表示されません。 - -ダイアログが表示されない (ダイアログをサポートしていない Vim を使っている) 場 -合は、手動で復元作業を実行してください。ファイルを復元するには、次のコマンドを -使います: > - - :recover - - -スワップファイルの存在を常に検出できるとは限りません。例えば、他のセッションが -別のディレクトリにスワップファイルを保存している場合や、他のマシンのファイルを -編集しているためにファイルのパスが違っている場合などです。ですから、警告が表示 -されないからといって安心しないでください。 - -スワップファイルの警告を表示したくない場合は、'shortmess' オプションに "A" フ -ラグを追加してください。しかし特別な理由がなければ設定を変更する必要はないで -しょう。 - -暗号化時のスワップファイルの扱いについては |:recover-crypt| を参照してくださ -い。 - -============================================================================== -*11.4* さらなる情報 - -|swap-file| スワップファイルの名前と作成される場所の説明。 -|:preserve| スワップファイルを手動でディスクに書き込む。 -|:swapname| カレントファイル用のスワップファイルの名前を表示する。 -'updatecount' キーストロークの数。指定された数だけキーが入力されると、スワッ - プファイルがディスクに書き込まれる。 -'updatetime' タイムアウト値。指定された時間内に入力がなかったら、スワップ - ファイルがディスクに書き込まれる。 -'swapsync' スワップファイルを書き込んだときにディスクを同期するかどうか。 -'directory' スワップファイルが保存されるディレクトリの一覧。 -'maxmem' テキストをスワップファイルに保存せずに扱えるメモリの上限。 -'maxmemtot' 同上。ただし、全ファイルの合計値。 - -============================================================================== - -目次: |usr_12.txt| 便利な小技 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_12.jax b/doc/usr_12.jax deleted file mode 100644 index 6f21394ec..000000000 --- a/doc/usr_12.jax +++ /dev/null @@ -1,359 +0,0 @@ -*usr_12.txt* For Vim バージョン 7.3. Last change: 2007 May 11 - - VIM USER MANUAL - by Bram Moolenaar - - 便利な小技 - - -コマンドを組み合わせれば、ほとんど何でもこなすことができます。この章では、便利 -なコマンドの組み合わせをいくつか紹介します。今までに紹介したコマンドを主に使い -ますが、まだ紹介していないコマンドも少し登場します。 - -|12.1| 単語を置換する -|12.2| "Last, First" を "First Last" に変更する -|12.3| リストをソートする -|12.4| 行を逆順に並べ替える -|12.5| 単語を数える -|12.6| マニュアルを引く -|12.7| 空白を取り除く -|12.8| 単語が使われている場所を検索する - -次章: |usr_20.txt| コマンドラインを素早く入力する -前章: |usr_11.txt| クラッシュからの復帰 -目次: |usr_toc.txt| - -============================================================================== -*12.1* 単語を置換する - -置換コマンドを使うと、文章中に現れる単語を別の単語に置換することができます: > - - :%s/four/4/g - -"%" はすべての行を処理するための範囲指定です。末尾の "g" は、行のすべての単語 -を置換するための指定です。 - -上記のコマンドは正しく動作しません。例えば、"thirtyfour" という単語がファイル -に含まれていた場合、"thirty4" に置換されてしまいます。これを防ぐには、"\<" を -使って単語の先頭にヒットさせます: > - - :%s/\<four/4/g - -これでもまだ、"fourteen" のような単語が間違って置換されてしまいます。"\>" を -使って単語の末尾にヒットさせましょう: > - - :%s/\<four\>/4/g - -プログラムを書いているなら、コメントの中にある "four" だけを置換したい場合もあ -るでしょう。コメントの中かどうかを区別するのは難しいので、置換コマンドに "c" -フラグを指定して、確認しながら置換してください: > - - - :%s/\<four\>/4/gc - - -複数のファイル内で置換する --------------------------- - -複数のファイル内で置換したい場合を考えます。ファイルを一つずつ開いて、その都度 -コマンドを入力することもできますが、操作の記録と再実行を使えば、はるかに素早く -置換できます。 -拡張子が ".cpp" の C++ ファイルが入ったディレクトリがあるとします。"GetResp" -という関数を "GetAnswer" に置換してみましょう。 - - vim *.cpp Vim を起動して、すべての C++ ファイルを引数リ - ストに加える。Vim が起動すると、最初のファイル - が表示されます。 - qq レジスタ "q" に記録を開始する。 - :%s/\<GetResp\>/GetAnswer/g - 最初のファイルで置換コマンドを実行する。 - :wnext ファイルを保存し、次のファイルに移動する。 - q 記録を終了する。 - @q レジスタ "q" を実行する。置換コマンドと - ":wnext" が再実行されます。エラーメッセージが - 表示されたりしないか確認してください。 - 999@q レジスタ "q" を繰り返し実行し、残りのファイル - をすべて処理します。 - -最後のファイルを処理したとき、もうそれ以上ファイルがないので、":wnext" コマン -ドがエラーメッセージを表示します。それにより、実行が中断され、すべてが完了しま -す。 - - Note: - 記録されたコマンドの実行中にエラーが発生すると、実行は中断されます。 - ですから、エラーが出ないように注意して操作を記録してください。 - -まだ問題が一つ残っています。もしも、"GetResp" を含んでいないファイルがあった場 -合、置換コマンドがエラーを発生し、そこで処理が停止してしまいます。それを避ける -には、置換コマンドに "e" フラグを指定してください: > - - :%s/\<GetResp\>/GetAnswer/ge - -"e" フラグは、パターンが見つからなくてもエラーを発生させないための指定です。 - -============================================================================== -*12.2* "Last, First" を "First Last" に変更する - -次のような形式で名前の一覧があるとします: - - Doe, John ~ - Smith, Peter ~ - -これを次のように変更したいとします: - - John Doe ~ - Peter Smith ~ - -これはたった一つのコマンドでできてしまいます: > - - :%s/\([^,]*\), \(.*\)/\2 \1/ - -一つずつ説明しましょう。これが置換コマンドであることはわかりますよね。"%" はす -べての行を示す範囲指定です。つまり、ファイルのすべての行で置換が実行されます。 -置換コマンドには "/from/to/" という形式で引数を指定します。スラッシュ (/) は -"from" パターンと "to" 文字列の区切りです。"from" パターンは次のようになってい -ます: - \([^,]*\), \(.*\) ~ - - 一つ目の \( \) で囲まれた部分は "Last" です \( \) - カンマ (,) 以外の文字が [^,] - 何文字でもマッチする * - ", " という文字にそのままマッチ , - 二つ目の \( \) で囲まれた部分は "First" です \( \) - どんな文字でも . - 何文字でもマッチする * - -"to" の部分には "\2" と "\1" が指定されています。これはバックリファレンスとい -うものです。"\( \)" で囲まれた部分にマッチしたテキストを参照しています。"\2" -は二つ目の "\( \)" で囲まれた部分にマッチしたテキスト ("First" name) を参照し -ています。"\1" は一つ目の "\( \)" ("Last" name) を参照しています。 -置換コマンドの "to" 部分には最大で 9 個のバックリファレンスを指定できます。 -"\0" はパターンがマッチしたテキスト全体になります。置換コマンドには他にもいく -つか特殊なアイテムがあります。|sub-replace-special| を参照してください。 - -============================================================================== -*12.3* リストをソートする - -Makefile ではよく、ファイルのリストが使われます。例: - - OBJS = \ ~ - version.o \ ~ - pch.o \ ~ - getopt.o \ ~ - util.o \ ~ - getopt1.o \ ~ - inp.o \ ~ - patch.o \ ~ - backup.o ~ - -このリストをソートするには、外部コマンドの sort を使ってテキストをフィルタリン -グします: > - - /^OBJS - j - :.,/^$/-1!sort - -リストの先頭 (行頭が "OBJS" で始まる行) に移動してから、一行下に移動、その行か -ら次の空行までの範囲をフィルタに通しています。ビジュアルモードで範囲を選択して -から "!sort" を実行する方法でも構いません。その方が入力は簡単です。行がたくさ -んある場合は少し面倒かもしれませんが。 -結果は、次のようになります: - - OBJS = \ ~ - backup.o ~ - getopt.o \ ~ - getopt1.o \ ~ - inp.o \ ~ - patch.o \ ~ - pch.o \ ~ - util.o \ ~ - version.o \ ~ - - -各行の末尾に行結合のためのバックスラッシュ (\) が使われている点に注意して下さ -い。並べ替えたために、これが壊れてしまいました。"backup.o" はリストの最後にあっ -たので行末にバックスラッシュが付いていませんでしたが、並べ替えによって別の場所 -に移動したため、バックスラッシュが必要になったのです。 -一番簡単な解決方法は "A \<Esc>" でバックスラッシュを追加することです。最後の行 -にあるバックスラッシュは次の行を空白行にしておけば削除しなくても問題ありませ -ん。これで同じ問題は二度と起きないでしょう。 - -============================================================================== -*12.4* 行を逆順に並べ替える - -|:global| コマンドと |:move| コマンドを組み合せて、全ての行を 1 行目の上に移動 -することで、行を逆順に並べ替えたファイルを作ることができます。コマンドは次の通 -りです: > - - :global/^/m 0 - -短縮して書くこともできます: > - - :g/^/m 0 - -"^" という正規表現は行の先頭に (それが空行であっても) マッチします。|:move| コ -マンドはマッチした行を 0 行目 (実際には存在しない仮想的な行) の下に移動します。 -つまり、マッチした行がファイルの先頭行になります。|:global| コマンドは行番号が -変更されても処理を継続できます。そして、マッチしたすべての行が、順番にファイル -の先頭に移動していきます。 - -ある一定の範囲だけ並べ替えることもできます。まず、並べ替えたい範囲の一行上に移 -動し、"mt" でマークします。そして、範囲の末尾に移動し、次のように入力します: > - - :'t+1,.g/^/m 't - -============================================================================== -*12.5* 単語を数える - -ときには、単語数に制限のある文章を書かなければならない場合もあるでしょう。Vim -には単語を数えるための機能があります。 -ファイル全体の単語数を数えるには、次のコマンドを使います: > - - g CTRL-G - -"g" の後の空白は入力しないでください。この空白はコマンドを読み易く表記するため -のものです。 -次のような結果が出力されます: - - 列 1 / 0; 行 141 / 157; 単語 748 / 774; バイト 4489 / 4976 ~ - -これを見れば、何番目の単語 (748) にカーソルがあり、ファイル全体でいくつの単語 -(774) があるのかがわかります。 - -ファイルの一部の文章だけ単語を数えたい場合は、テキストの先頭に移動して -"g CTRL-G" を入力し、テキストの末尾に移動して "g CTRL-G" をもう一度入力し、そ -して、表示された単語の位置を引き算して単語数を求めます…これは頭の体操にはなり -ますが簡単な方法とは言えませんね。ビジュアルモードを使えば、テキストを選択して -から "g CTRL-G" を入力するだけです。次のような結果が表示されます: - - 選択 5 / 293 行; 70 / 1884 単語; 359 / 10928 バイト ~ - -単語や行などを数える他の方法については |count-items| を参照してください。 - -============================================================================== -*12.6* マニュアルを引く *find-manpage* - -シェルスクリプトや C プログラムを書いているときに、コマンドや関数のマニュアル -を引きたいことがあると思います (Unix での話です)。まずは簡単な方法でやってみま -しょう。ヘルプを引きたい単語の上にカーソルを移動して、次のコマンドを入力しま -す: > - - K - -単語を引数として "man" プログラムが実行され、マニュアルが見つかった場合は、そ -れが表示されます。テキストをスクロール表示するために、標準設定のページャ (おそ -らく "more" プログラム) が使われます。マニュアルを最後まで表示したら、<Enter> -を押して Vim に戻ってください。 - -この方法の欠点は編集中のテキストとマニュアルを同時に表示できないことです。しか -し、Vim ウィンドウの中にマニュアルを表示する方法もあります。最初に、man ファイ -ルタイププラグインをロードしてください: > - - :runtime! ftplugin/man.vim - -このコマンドを vimrc ファイルに書いておけばいつでも使えるようになります。さて、 -":Man" コマンドが使えるようになりました。新しいウィンドウにマニュアルを表示で -きます: -> - :Man csh - -カラー表示されたテキストをスクロールして表示することができます。これで、調べた -い説明を見つけることができますね。CTRL-W w を使えば、元のウィンドウにジャンプ -できます。 -特定のセクションのマニュアルを表示したいときは、セクション番号を指定してくださ -い。例えば、セクション 3 にある "echo" を調べるなら、次のようにします: > - - :Man 3 echo - -マニュアルの中で "word(1)" のような形式で示されている他のマニュアルにジャンプ -するには CTRL-] を押してください。":Man" コマンドが続けて使われた場合は、同じ -ウィンドウが使用されます。 - -カーソル下の単語のマニュアルを表示するには、次のコマンドを使います: > - - \K - -(自分で <Leader> を再定義している場合は、"\" ではなく、それを使ってください) -例えば、次の行を編集中に "strstr()" の返り値を知りたくなったら: - - if ( strstr (input, "aap") == ) ~ - -"strstr" の上にカーソルを移動し、"\K" と入力してください。ウィンドウが開いて -strstr() のマニュアルが表示されます。 - -============================================================================== -*12.7* 空白を取り除く - -行末の空白は無用であり、浪費であり、見苦しいものであると考える人々がいます。す -べての行末から空白を取り除くには、次のコマンドを使います: > - - :%s/\s\+$// - -"%" を使ってすべての行を範囲指定しています。":substitute" コマンドに指定されて -いるパターンは "\s\+$" です。これは、空白文字 (\s) が一文字以上続き (\+)、行末 -($) で終わる文字列にマッチします。このようなパターンの書き方は |usr_27.txt| で -説明されています。"to" の部分は空 ("//") になっています。空文字列で置き換える、 -つまり、マッチした空白を削除するという意味になります。 - -もう一つの浪費パターンとして、tab の直前にスペースが使われている場合がありま -す。たいていは、そのスペースを削除しても見た目の空白の量は変わりませんが、いつ -も大丈夫というわけではありません。ですから、手作業で削除するのがベストです。次 -の検索コマンドを使ってください: > - - / - -何も見えないかもしれませんが、Tab 文字の直前にスペースがあります。つまりこれは -"/<Space><Tab>" です。検索したら、"x" コマンドを使ってスペースを削除し、見た目 -の変化がないことを確認してください。変化があった場合は、tab 文字を挿入して調整 -しましょう。"n" を押して次の場所を検索します。マッチするものがなくなるまで同じ -操作を繰り返してください。 - -============================================================================== -*12.8* 単語が使われている場所を検索する - -UNIX を使っているなら、Vim と grep コマンドを組み合わせれば、指定した単語が含 -まれているすべてのファイルを開くことができます。これは、プログラムを書いている -ときに、特定の変数が使われているファイルを表示または編集したい場合にとても便利 -です。 -例えば、"frame_counter" という単語が含まれているすべての C 言語ファイルを開く -には、次のようにします: > - - vim `grep -l frame_counter *.c` - -このコマンドを詳しく見てみましょう。"grep" コマンドは、指定されたファイルの中 -から単語を検索します。"-l" 引数が指定されているので、単語が含まれているファイ -ルの名前だけが表示されます。マッチした行は表示されません。検索される単語は -"frame_counter" です。単語の指定には正規表現が使えます。(Note: grep で使える正 -規表現は Vim の正規表現と完全に同じではありません。) -コマンドはバッククオート (`) で囲まれています。これは、コマンドを実行し、その -出力を、コマンドラインに入力されたものとして扱うように UNIX シェルに指示してい -ます。つまり、grep コマンドが実行され、出力されたファイルの一覧が Vim の引数に -渡されます。Vim が起動した後は、":next" や ":first" などのコマンドでそれらの -ファイルを切り替えられます。 - - -単語が使われている行を検索する ------------------------------- - -上述のコマンドは単語が含まれているファイルを見つけるだけなので、単語が使われて -いる行は自分で検索する必要がありました。 -Vim には、指定された文字列を複数のファイルの中から検索するための組み込みコマン -ドがあります。例えば、"error_string" という文字列をすべての C 言語ファイルの中 -から検索するには、次のコマンドを使います: > - - :grep error_string *.c - -指定されたファイル (*.c) の中から、"error_string" という文字列が検索されます。 -コマンドを実行すると、文字列が含まれている最初のファイルが開き、検索にヒットし -た最初の行にカーソルが移動します。文字列が現れる次の場所 (同じファイルとは限り -ません) に移動するには、":cnext" コマンドを使います。一つ前に戻るには ":cprev" -コマンドを使います。":clist" コマンドを使うと、検索結果の一覧と現在位置が表示 -されます。 -":grep" コマンドの実行には、外部プログラムの grep (Unix) または findstr -(Windows) が使われます。使われるプログラムは 'grepprg' オプションで変更できま -す。 - -============================================================================== - -次章: |usr_20.txt| コマンドラインを素早く入力する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_20.jax b/doc/usr_20.jax deleted file mode 100644 index 0fc9c4be5..000000000 --- a/doc/usr_20.jax +++ /dev/null @@ -1,386 +0,0 @@ -*usr_20.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - コマンドラインを素早く入力する - - -Vim にはコマンド入力を簡単にするための一般的な機能が備わっています。コロン (:) -コマンドでは短縮入力、編集、履歴、文脈依存の補完機能が利用できます。 - -|20.1| コマンドライン編集 -|20.2| コマンドライン短縮入力 -|20.3| コマンドライン補完 -|20.4| コマンドライン履歴 -|20.5| コマンドラインウィンドウ - -次章: |usr_21.txt| 中断と再開 -前章: |usr_12.txt| 便利な小技 -目次: |usr_toc.txt| - -============================================================================== -*20.1* コマンドライン編集 - -コロン (:) コマンドや検索コマンド (/ or ?) を使うとき、カーソルは画面の一番下 -に表示されます。そこにコマンドや検索パターンを入力するわけです。その場所を「コ -マンドライン」と呼びます。 - -コマンドラインの編集で最もわかりやすいのは <BS> でしょう。カーソルの直前の文字 -を削除できます。他の位置にある文字を削除したい場合は、矢印キーでカーソルを動か -してから <BS> を押してください。 -例えば、次のように入力して: > - - :s/col/pig/ -< -<Enter> を押す前になって、"col" が "cow" の入力ミスであることに気づきました。 -これを修正するには、左矢印キー (<Left>) を 5 回押して "col" の直後にカーソルを -動かしてから、<BS> と "w" を入力します: > - - :s/cow/pig/ - -修正したら、その場で <Enter> を押しましょう。コマンドを実行するためにカーソル -を行末まで動かす必要はありません。 - -コマンドラインでのカーソル移動には次のキーがよく使われます: - - <Left> 1 文字左 - <Right> 1 文字右 - <S-Left> or <C-Left> 1 単語左 - <S-Right> or <C-Right> 1 単語右 - CTRL-B or <Home> 行頭 - CTRL-E or <End> 行末 - - Note: - <S-Left> (シフトキーを押したまま左矢印キーを押す) と <C-Left> (コント - ロールキーを押したまま左矢印キーを押す) が機能しないキーボードもありま - す。その他のシフトキーとコントロールキーの組み合せも同様に、機能しない - ことがあります。 - -カーソルはマウスでも動かせます。 - - -削除 ------ - -上述のとおり、<BS> でカーソルの直前の文字を削除できます。単語を削除するには -CTRL-W を使います。 - - /the fine pig ~ - - CTRL-W - - /the fine ~ - -CTRL-U ですべてのテキストを削除できます。コマンドを最初から入力し直したいとき -に使ってください。 - - -上書き ------- - -<Insert> キーを押すと、挿入と上書きが切り替わります。次のテキストを使って説明 -します: - - /the fine pig ~ - -<S-Left> を 2 回押して (<S-Left> が機能しない場合は <Left> を 8 回押して) -"fine" の先頭にカーソルを動かします。<Insert> を押して上書きに切り替え、 -"great" と入力します: - - /the greatpig ~ - -おっと、スペースが消えてしまいました。ここで <BS> を押すと "t" が削除されてし -まいます (置換モードとは違いますね)。<Insert> を押して、上書きから挿入に切り替 -え、スペースを入力します: - - /the great pig ~ - - -キャンセル ----------- - -: または / コマンドを入力した後で、そのコマンドの実行をキャンセルしたくなった -場合は、CTRL-C または <Esc> を押してください。 - - Note: - <Esc> キーはどこでも使える「脱出」キーですが、残念なことに、古き良き - Vi では、コマンドラインで <Esc> を押すと、コマンドが実行されてしまいま - す。これはおそらくバグなので、Vim では <Esc> でコマンドをキャンセルで - きるようになっています。ただし、'cpoptions' を設定して Vi 互換の動作に - 変更することもできます。また、マップが適用されたときは (それが Vi 用に - 書かれたものであってもなくても) <Esc> は Vi 互換の動作をします。CTRL-C - を使えば設定に関係なくキャンセルできます。 - -コマンドラインの先頭にカーソルがあるときに <BS> キーを押すとコマンドをキャンセ -ルできます。これは行頭にある ":" や "/" を削除するような感覚です。 - -============================================================================== -*20.2* コマンドライン短縮入力 - -とても長い名前の ":" コマンドがいくつかあります。":substitute" が ":s" と短縮 -できることは既に説明しましたが、これはなにも特別なことではありません。すべての -":" コマンドが短縮できます。 - -コマンドはどこまで短縮できるでしょうか。アルファベットは 26 文字ですが、コマン -ドはそれよりたくさんあります。例えば、":set" の先頭は ":s" ですが、":s" では -":set" を実行できません。":set" の短縮形は ":se" です。 -二つのコマンドが同じ名前に短縮できたとしても、最短の名前を使えるのは一つのコマ -ンドだけです。その決定方法に明確なルールはないので、個別に覚えるしかありませ -ん。コマンドの最短の名前はヘルプファイルに記述されています。例: > - - :s[ubstitute] - -これは ":substitute" の短縮形が ":s" であることを示しています。それ以降の文字 -は任意です。":su" でも ":sub" でも動作します。 - -ユーザーマニュアルではコマンドの長い名前と短い名前の両方が使われますが、読み難 -い短縮形は使われません。例えば、":function" は ":fu" と短縮できますが、これだ -と大半の人が何の略なのか理解できないので ":fun" が使われます。(Vim に ":funny" -コマンドはありませんが、もしあれば、":fun" でも混乱を招きますよね) - -Vim スクリプトを書くときはコマンドの長い名前を使うことをお勧めします。そうして -おけば、後で変更しようと思ったときに読むのが楽です。しかし、":w" (":write") や -":r" (":read") のような頻繁に使われるコマンドなら短縮形を使っても構わないでしょ -う。 -特にややこしいのは ":end" です。これは ":endif" の短縮形ですが、":endwhile" や -":endfunction" と誤解しやすいので、常に長い名前を使うようにしましょう。 - - -オプションの短い名前 --------------------- - -ユーザーマニュアルではオプションの長い名前が使われますが、ほとんどのオプション -には短い名前があります。":" コマンドと違い、オプションの短い名前は一つしかあり -ません。例えば、'autoindent' の短い名前は 'ai' なので、次の二つのコマンドは同 -じ動作をします: > - - :set autoindent - :set ai - -オプションの長い名前と短い名前の一覧は |option-list| を参照してください。 - -============================================================================== -*20.3* コマンドライン補完 - -コマンドライン補完はこれだけでも Vi から Vim に乗り換えるに値する程の機能です。 -一度使ってしまったら、手放せなくなるでしょう。 - -次のようなファイルを含むディレクトリがあるとします: - - info.txt - intro.txt - bodyofthepaper.txt - -bodyofthepaper.txt を開くには次のコマンドを使います: > - - :edit bodyofthepaper.txt - -いかにも打ち間違えそうです。もっと簡単にやりましょう: > - - :edit b<Tab> - -どちらも結果は同じになります。どういうことでしょうか。<Tab> キーによってカーソ -ル直前の単語 (この場合なら "b") が補完されたのです。ディレクトリが検索され、 -"b" で始まるファイルが一つだけ見つかり、それはあなたが探しているファイルに違い -ないので、その名前が補完されました。 - -さて、次はこのように入力してみます: > - - :edit i<Tab> - -ビープ音が鳴り、次のように表示されます: > - - :edit info.txt - -ビープ音は複数のファイルが見つかったことを示しています。まずは (アルファベット -順で) 最初のファイルが表示されます。もう一度 <Tab> を押すと、次のようになりま -す: > - - :edit intro.txt - -つまり、最初の <Tab> で、探しているファイルが出てこなかったら、もう一度 <Tab> -を押せばよいのです。ファイルがたくさんあるなら、一つずつ表示していきましょう。 -最後の補完候補を表示しているときに <Tab> を押すと、最初の状態に戻ります: > - - :edit i - -また最初から補完候補を表示できます。つまり、補完候補は循環表示されます。CTRL-P -を使うと、逆方向に移動できます: - - <------------------- <Tab> -------------------------+ - | - <Tab> --> <Tab> --> - :edit i :edit info.txt :edit intro.txt - <-- CTRL-P <-- CTRL-P - | - +---------------------- CTRL-P ------------------------> - - -文脈 ------ - -":edit i" ではなく、":set i" と入力してから <Tab> を押すと、次のようになりま -す: > - - :set icon - -どうして ":set info.txt" にならないのでしょうか。それは、Vim が文脈を認識して -いるからです。補完される単語の種類は入力されたコマンドに依存します。":set" コ -マンドに指定するのはファイル名ではなくオプション名であることを Vim は知ってい -るのです。 -上述の例と同様、<Tab> を入力すれば補完候補が一つずつ順番に表示されます。たいて -いは、いくつかの文字を入力してから補完した方が素早く補完できます: > - - :set isk<Tab> - -次のような結果になります: > - - :set iskeyword - -さて、"=" を入力してから <Tab> を押してみましょう: > - - :set iskeyword=@,48-57,_,192-255 - -オプションの現在の設定が挿入されるので、それを編集することができます。 -<Tab> で補完されるのはその場所に入力すべき内容です。どのように動作するかは自分 -で試してみてください。期待したような結果にならないこともあると思いますが、それ -は、Vim がその文脈を認識できなかったか、その文脈における補完が実装されていない -かのどちらかです。その場合は <Tab> 文字が挿入されます (画面上では ^I と表示さ -れます)。 - - -補完候補一覧 ------------- - -補完候補がたくさんあるとき、その一覧を確認することができます。それには CTRL-D -を使います。例えば、次のコマンドを入力してから CTRL-D を押してみます: > - - :set is - -次のような結果になります: > - - :set is - incsearch isfname isident iskeyword isprint - :set is - -補完候補の一覧が表示され、また元の入力に戻ります。この一覧に期待した項目がある -かどうか確認してください。ない場合は、<BS> でテキストを削除し、入力し直してく -ださい。補完候補がたくさんある場合は、さらにいくつかの文字を入力してから <Tab> -を押して補完してください。 -注意深い方なら、候補一覧にある "incsearch" が "is" で始まっていないことに気づ -いたと思います。"is" は "incsearch" の短縮形です。ほとんどのオプションには短い -名前と長い名前がありますが、Vim は賢いので、 オプションの短い名前を見て、長い -名前に展開してくれます。 - - -さらに他にも ------------- - -CTRL-L コマンドを使うと、共通したところまで補完できます。例えば、"info.txt" と -"info_backup.txt" というファイルがあって、":edit i" と入力してから CTRL-L を押 -すと、":edit info" になります。 - -'wildmode' オプションで補完の動作を変更できます。 -'wildmenu' オプションを設定すると補完候補をメニューのように表示できます。 -'suffixes' オプションに優先度の低いファイルを指定しておくと、それらのファイル -は補完候補の末尾に現れます。 -'wildignore' オプションには補完候補として表示して欲しくないファイルを指定しま -す。 - -コマンドライン補完についての詳細は |cmdline-completion| を参照してください。 - -============================================================================== -*20.4* コマンドライン履歴 - -履歴については三章で簡単に説明しました。簡単に言えば、<Up> キーで以前に入力し -た古いコマンドラインを呼び出すことができる機能です。<Down> で新しい方のコマン -ドに戻れます。 - -履歴には四種類あります。ここでは ":" コマンドと検索コマンド ("/" or "?") の履 -歴を説明します。"/" と "?" はどちらも検索コマンドなので、同じ履歴を共有します。 -他には、式入力と input() 関数の履歴があります。|cmdline-history| - -例えば、":set" コマンドを実行した後で、他のコマンドを 10 個実行し、再び ":set" -コマンドを実行したいとします。":" を押してから <Up> を 10 回押せばできますが、 -もっと簡単な方法があります: > - - :se<Up> - -以前使った "se" で始まるコマンドに戻ります。これなら探していた ":set" コマンド -に効率良くたどり着けるでしょう。少なくとも、何度も何度も <Up> を押す必要はあり -ません (入力したすべてのコマンドが ":set" コマンドでもない限り)。 - -<Up> キーを押すと、入力されたテキストと履歴のコマンドラインが比較され、マッチ -した履歴だけが使われます。 -探していた履歴が見つからなかった場合は、<Down> で元に戻ってから正しく入力し直 -すか、CTRL-U を押して最初からやり直してください。 - -履歴をすべて見るには次のコマンドを使います: > - - :history - -":" コマンドの履歴が表示されます。検索コマンドの履歴を表示するには、次のコマン -ドを使います: > - - :history / -< -<Up> の代わりに CTRL-P を使うこともできますが、CTRL-P の前に入力されていたテキ -ストは無視されます。同様に、<Down> の代わりに CTRL-N を使うこともできます。 -CTRL-P は previous (前)、CTRL-N は next (次) という意味です。 - -============================================================================== -*20.5* コマンドラインウィンドウ - -コマンドラインでの文字入力は挿入モードでの文字入力とは違います。テキストを編集 -するための多くのコマンドが使えません。通常のコマンドライン入力ではそれほど問題 -になりませんが、複雑なコマンドを入力しなければならないときもあるでしょう。その -ようなときは、コマンドラインウィンドウが便利です。 - -次のコマンドでコマンドラインウィンドウを開いてください: > - - q: - -画面の下の方に (小さな) ウィンドウが作成されます。ウィンドウにはコマンドライン -履歴が表示され、最終行には空行があります: - - +-------------------------------------+ - |other window | - |~ | - |file.txt=============================| - |:e c | - |:e config.h.in | - |:set path=.,/usr/include,, | - |:set iskeyword=@,48-57,_,192-255 | - |:set is | - |:q | - |: | - |command-line=========================| - | | - +-------------------------------------+ - -ウィンドウを開いた後はノーマルモードになっています。"hjkl" キーで移動できます。 -例えば、"5k" を入力し、":e config.h.in" の行に移動します。"$h" で "in" の "i" -に移動し "cwout" と入力します。行が次のように変更されました: - - :e config.h.out ~ - -<Enter> を押すとこのコマンドが実行され、コマンドラインウィンドウが閉じます。 -<Enter> コマンドで現在行が実行されます。挿入モードでもノーマルモードでも同じ動 -作です。 -コマンドラインウィンドウでの編集は失われます。つまり、コマンドライン履歴は変更 -されません。ただし、実行したコマンドは、通常どおり、履歴に追加されます。 - -コマンドラインウィンドウは、実行したいコマンドに似たコマンドを履歴の一覧から探 -し、それをちょっと変更して再実行するような場合に便利です。コマンドラインウィン -ドウでは検索コマンドも使えます。 -上の例の場合なら、"?config" という検索コマンドを実行すれば、以前に実行した -"config" を含んでいるコマンドを探せます。これは少し不思議ですね。コマンドライ -ンを使ってコマンドラインウィンドウの中を検索しているのですから。しかし、検索コ -マンドを入力するための新たなコマンドラインウィンドウを作成することはできませ -ん。コマンドラインウィンドウは常に一つだけです。 - -============================================================================== - -次章: |usr_21.txt| 中断と再開 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_21.jax b/doc/usr_21.jax deleted file mode 100644 index 1bb863e59..000000000 --- a/doc/usr_21.jax +++ /dev/null @@ -1,491 +0,0 @@ -*usr_21.txt* For Vim バージョン 7.3. Last change: 2008 Nov 09 - - VIM USER MANUAL - by Bram Moolenaar - - 中断と再開 - - -この章では、Vim と他のプログラムを並行して使う方法を説明します。Vim の中から外 -部プログラムを実行したり、Vim を一次的に中断することでそれを実現できます。さら -に、作業状態を記録しておいて、後から復元する方法も説明します。 - -|21.1| サスペンドとレジューム -|21.2| シェルコマンドの実行 -|21.3| viminfo に情報を記録する -|21.4| セッション -|21.5| ビュー -|21.6| モードライン - -次章: |usr_22.txt| ファイルを探す -前章: |usr_20.txt| コマンドラインを素早く入力する -目次: |usr_toc.txt| - -============================================================================== -*21.1* サスペンドとレジューム - -他の Unix プログラムと同様に、Vim も CTRL-Z でサスペンドできます。CTRL-Z を押 -すと Vim が停止し、実行元のシェルに制御が戻ります。そこで好きなだけ他のコマン -ドを実行できます。Vim に戻るには "fg" コマンドを使います。 > - - CTRL-Z - {任意のシェルコマンドを実行} - fg - -サスペンドする前とまったく同じ状態に戻ることができます。 -CTRL-Z を押しても反応がなかった場合は ":suspend" コマンドを使ってください。 -Vim をフォアグラウンドに戻すのを忘れないでください。戻さなかった場合は編集作業 -が失われてしまいます。 - -この機能は Unix でのみサポートされています。他のシステムでは新しいシェルが起動 -されるでしょう。シェルのコマンドが使えることに違いはありませんが、しかしそれは -Vim を実行したシェルではなく、新しいシェルです。 -GUI で実行しているときは実行元のシェルに戻ることはできません。CTRL-Z を押すと -Vim ウィンドウが最少化されます。 - -============================================================================== -*21.2* シェルコマンドの実行 - -一つのシェルコマンドを実行するには ":!{command}" を使います。例えば、ディレク -トリのファイル一覧を見るには次のようにします: > - - :!ls (Unix 環境) - :!dir (MS-DOS/MS-Windows 環境) - -外部プログラムが実行されます。コマンドの実行が終わると <Enter> キーの入力を促 -すプロンプトが表示されるので、コマンドの出力を確認してから通常画面に戻ってくだ -さい。 -"!" は他のコマンドで外部プログラムを指定するときにも使われます。次のコマンドで -指定できます: - - :!{program} {program} を実行する - :r !{program} {program} を実行し、その出力を読み込む - :w !{program} {program} を実行し、標準入力にテキストを書き込む - :[range]!{program} {program} を実行し、テキストをフィルタリングする - -"!{program}" に範囲指定をするとまったく違う動作になるので注意してください。範 -囲指定がなければ単純にプログラムが実行されるだけですが、範囲指定があると、その -範囲のテキストがプログラムでフィルタ処理されます。 - -この方法で外部プログラムを何度でも実行できますが、続けてたくさん実行したい場合 -はシェルを起動した方がいいでしょう。次のコマンドで新しいシェルを起動できます: -> - :shell - -CTRL-Z で Vim をサスペンドしたときの動作に似ていますが、新しいシェルが起動され -るという点が違います。 - -GUI を使っている場合は、シェルの入出力に Vim ウィンドウが使われます。Vim は端 -末エミュレータではないので、端末の機能を完全に再現することはできません。うまく -動作しない場合は、'guipty' オプションを設定してみてください。それでも動作しな -い場合は、新しい端末を作成し、そこでシェルを実行してください。例えば、次のよう -にします: > - - :!xterm& - -============================================================================== -*21.3* viminfo に情報を記録する - -テキストを保持しているレジスタ、いろんな場所に設定されたマーク、慎重に書き上げ -たコマンドが記録されたコマンドライン履歴などは、Vim を終了するとすべて失われて -しまいます。ただし、それらを復元することは可能です! - -viminfo ファイルには以下の情報を記録できます: - - コマンドライン履歴と検索履歴 - レジスタ - マーク - バッファリスト - グローバル変数 - -Vim を終了すると、これらの情報が viminfo ファイルに保存されます。次に Vim を起 -動すると、viminfo ファイルが読み込まれ、状態が復元されます。 - -'viminfo' オプションの初期設定では、あまり多くの情報は記録されません。たくさん -の情報を記録したい場合は、次のコマンドで設定してください: > - - :set viminfo=string - -"string" の部分に、記録したい情報を指定します。設定の書式は、オプション文字と -引数の組み合わせをカンマ (,) で区切ったリストです。 -'viminfo' の設定方法を順番に見ていきましょう。まず、' オプションを設定してみま -す。' オプションには、マーク (a-z) を記録するファイルの数を指定できます。適当 -な数 (例えば 1000) を設定しましょう。コマンドは次のようになります: > - - :set viminfo='1000 - -f オプションには、グローバルマーク (A-Z と 0-9) を記録するかどうかを指定できま -す。引数が 0 ならなにも記録されません。f オプションを指定しない、あるいは引数 -に 1 を指定すると、マークが保存されます。このオプションを指定すると、コマンド -は次のようになります: > - - :set viminfo='1000,f1 -< -< オプションには、レジスタの行数制限を指定できます。初期設定ではすべての行が記 -録されます。引数が 0 なら何も記録されません。何千行もの (起動を遅くする以外に -使い道のない) テキストを viminfo ファイルに記録したくはないので、500 行に制限 -してみます: > - - :set viminfo='1000,f1,<500 -< -他にも次のようなオプションがあります: - : 記録するコマンドライン履歴の数 - @ 記録する入力行履歴の数 - / 記録する検索履歴の数 - r 指定されたリムーバブルメディア上のファイルのマークを記録しない - (複数指定可) - ! 名前がすべて大文字のグローバル変数を記録する - h 起動直後に 'hlsearch' による強調表示をしない - % バッファリスト (Vim をファイル引数なしで起動したときのみ復元さ - れます) - c テキストを 'encoding' で変換する - n viminfo ファイルの名前 (このオプションは末尾に指定する必要があ - ります) - -詳細は 'viminfo' と |viminfo-file| を参照してください。 - -Vim を複数起動した場合は、最後に終了した Vim の状態が記録されます。それより前 -に終了した Vim が記録した情報は失われます。記録できるのは一つの状態だけです。 - - -前回の場所に戻る ----------------- - -ファイルの編集中に終業時間が来てしまいました。明日から休暇です。Vim を終了し、 -家路につきましょう。仕事の事はすべて忘れて休暇を楽しんでください。数週間後、仕 -事に戻ったら、Vim を立ち上げて、こう入力します: > -> - '0 - -すると、最後に編集していた場所に戻れます。これで仕事が続けられますね。 -Vim を終了するたびにマークが設定されます。最新のマークは '0 です。マークは '0 -から '1 へ、'1 から '2 へ、しだいにずれていき、'9 まで記録されます。 -'0 から '9 までのマークがどこを指しているのかは |:marks| コマンドで確認できま -す。 - - -最近開いたファイルに戻る ------------------------- - -最近開いたファイルを再び開きたい場合はすこし面倒です (前回の Vim 終了時に開い -ていたファイルではなくてまさに最近開いたファイルのこと)。次のコマンドでファイ -ルの一覧を表示できます: > - - :oldfiles -< 1: ~/.viminfo ~ - 2: ~/text/resume.txt ~ - 3: /tmp/draft ~ - -二番目のファイル ("2:"の行) を開きたい場合は次のように入力します: > - - :e #<2 - -":e" 以外にも、ファイル名を引数に取るコマンドならどれを使っても構いません。 -"#<2" という表記は "%" (カレントファイル) や "#" (オルタネートファイル) と同じ -要領で使用できます。例えば次のようにすると、三番目のファイルを分割ウィンドウで -開くことができます: > - - :split #<3 - -単にファイルを開きたい場合には #<123 という指定は少し面倒かもしれませんね。 -もっと簡単な方法があります: > - - :browse oldfiles -< 1: ~/.viminfo ~ - 2: ~/text/resume.txt ~ - 3: /tmp/draft ~ - -- More -- - -|:oldfiles| と同じようにファイル一覧が表示されます。"resume.txt" を開きたい場 -合にはまず "q" を押して表示を止めます。プロンプトが表示されるので: - - Type number and <Enter> (empty cancels): ~ - -"2" を入力して <Enter> を押し、二番目のファイルを開きます。 - -詳細は |:oldfiles|、|v:oldfiles|、|c_#<| を参照してください。 - - -他の Vim に情報を移動する -------------------------- - -":wviminfo" コマンドと ":rviminfo" コマンドを使うと、Vim の実行中でも viminfo -ファイルの保存と復元ができます。例えば、他の Vim からレジスタの内容をコピーす -ることができます。片方の Vim で次のようにして保存し: > - - :wviminfo! ~/tmp/viminfo - -もう一方の Vim でそれを読み込みます: > - - :rviminfo! ~/tmp/viminfo - -言うまでもなく、"w" は "write"、"r" は "read" の意味です。 -既存のファイルに上書きするときは、":wviminfo" に ! を付けてください。! を指定 -しなかった場合は、現在の情報と既存のファイルの情報がマージされます。 -":rviminfo" に ! を付けると、ファイルのすべての情報が使われます。つまり、現在 -の情報が上書きされます。! を指定しなかった場合は、まだ設定されていない情報だけ -が使われます。 -これらのコマンドを使えば、状態を保存しておいて後で再利用することもできます。例 -えば、viminfo 専用のディレクトリに状態を保存しておき、目的ごとに使い分けること -も可能です。 - -============================================================================== -*21.4* セッション - -作業が終わらない内に一日が終わってしまった場合、その日の作業を中断し、次の日に -同じ状態で作業を再開できたら便利ですよね。編集セッションを保存しておけば、作業 -状態を復元することができます。 -セッションには、作業状態に関するすべての情報が保存されます。例えば、ファイルリ -スト、ウィンドウレイアウト、グローバル変数、オプションの設定などです。(正確に -は、下記で説明されている 'sessionoptions' に指定された項目が保存されます。) -次のコマンドでセッションファイルを作成できます: > - - :mksession vimbook.vim - -セッションを復元するには、次のコマンドを使います: > - - :source vimbook.vim - -Vim の起動と同時にセッションを再開するには、次のようにして Vim を起動します: > - - vim -S vimbook.vim - -Vim が起動し、指定したファイルが読み込まれます。'S' はセッション (Session) の -意味です (実際には、-S には Vim スクリプトならなんでも指定できるので、 -"source" を意味しているとも言えます)。 - -以前に開いていたウィンドウが、同じ場所、同じ大きさで作成されます。マップやオプ -ションの設定も復元されます。 -復元される情報は 'sessionoptions' オプションで設定できます。初期設定は -"blank,buffers,curdir,folds,help,options,winsize" です。 - - blank 空のウィンドウ - buffers すべてのバッファ (ウィンドウに表示されていないバッファ - も含む) - curdir カレントディレクトリ - folds 折り畳み (手動で設定したものも含む) - help ヘルプウィンドウ - options すべてのオプションとマップ - winsize ウィンドウの大きさ - -好きなように設定してください。例えば、Vim ウィンドウの大きさも復元したい場合 -は、次のようにします: > - - :set sessionoptions+=resize - - -こっちにもセッション、あっちにもセッション ------------------------------------------- - -セッションは、複数のプロジェクトで仕事をするときなどに使われます。 -例えば、"~/.vim" にセッションファイルを保存するとします。そして、"secret" プロ -ジェクトで作業している最中に、"boring" プロジェクトで作業する必要がでてきまし -た: > - - :wall - :mksession! ~/.vim/secret.vim - :source ~/.vim/boring.vim - -最初に、":wall" ですべてのファイルを保存します。次に、現在のセッションを -":mksession!" で保存します。以前のセッション情報が上書きされました。後で -secret セッションをロードすると今現在の状態から作業を再開できます。最後に、 -"boring" セッションをロードします。 - -ヘルプを開いたり、ウィンドウを分割したり閉じたりして、ウィンドウレイアウトが乱 -れてしまった場合、セッションをロードし直せば元に戻せます: > - - :source ~/.vim/boring.vim - -毎回新しいセッションを保存するか、あるいは最初に保存したセッションを使い続ける -かは自由に選択できます。 -セッションには他の使い方もあります。例えば、好みのウィンドウレイアウトをセッ -ションに保存しておけば、いつでも好きなときにそのレイアウトに戻ることができま -す。 -例えば、このようなレイアウトは使いやすいでしょう: - - +----------------------------------------+ - | VIM - main help file | - | | - |Move around: Use the cursor keys, or "h| - |help.txt================================| - |explorer | | - |dir |~ | - |dir |~ | - |file |~ | - |file |~ | - |file |~ | - |file |~ | - |~/=========|[No File]===================| - | | - +----------------------------------------+ - -ヘルプウィンドウが上部に表示され、いつでも参照できます。左端の縦長のウィンドウ -はファイルエクスプローラという Vim のプラグインでです。ディレクトリのファイル -一覧を表示し、その中からファイルを選択して開くことができます。詳しくは次章で説 -明します。 -このようなウィンドウを作るには、Vim を起動してから次のコマンドを実行します: > - - :help - CTRL-W w - :vertical split ~/ - -ウィンドウの大きさを調節し、セッションを保存してください: > -> - :mksession ~/.vim/mine.vim - -これで、同じレイアウトで Vim を起動できます: > - - vim -S ~/.vim/mine.vim - -Hint: エクスプローラでファイルを選択し、空のウィンドウでファイルを開くには、 -ファイル名の場所にカーソルを移動して "O" を押します。マウスのダブルクリックで -も同じ動作になります。 - - -UNIX と MS-WINDOWS ------------------- - -MS-Windows と Unix を両方使わなければならない人もいるでしょう。そのような人は、 -'sessionoptions' に "slash" と "unix" を追加した方がいいかもしれません。その設 -定で保存されたセッションファイルはどちらのシステムでも使えます。次のコマンドを -vimrc ファイルに追加してください: > - - :set sessionoptions+=unix,slash - -セッションファイルが Unix 形式で保存されるようになります。MS-Windows の Vim は -Unix 形式のセッションファイルを読み書きできますが、Unix の Vim は MS-Windows -形式のセッションファイルを読み込むことができません。同様に、MS-Windows の Vim -は / で区切られたファイル名を処理できますが、Unix の Vim は \ を処理できませ -ん。 - - -セッション と viminfo ---------------------- - -セッションファイルにはたくさんの情報が保存されますが、マークやレジスタ、コマン -ドライン履歴などは保存されません。それらの情報を保存するには viminfo を使って -ください。 -セッションと viminfo は分けて使うことが多いと思います。他のセッションに切り換 -えてもコマンドライン履歴をそのまま残すことができますし、テキストをレジスタにヤ -ンクし、他のセッションでペーストするということもできます。 -セッションと viminfo を同時に使いたい場合は、自分で保存してください。例: > - - :mksession! ~/.vim/secret.vim - :wviminfo! ~/.vim/secret.viminfo - -復元するには次のようにします: > - - :source ~/.vim/secret.vim - :rviminfo! ~/.vim/secret.viminfo - -============================================================================== -*21.5* ビュー - -セッションは Vim 全体の表示設定を扱います。一つのウィンドウに関する設定だけ保 -存したい場合は、ビューを使います。 -ビューは、ファイルごとに表示設定を変更したい場合に使います。例えば、'number' -を設定して行番号を表示し、いくつかの折り畳みを定義した場合に、その情報を保存し -て、後で復元することができます。実際のところ、セッションには、各ウィンドウの -ビューが保存されているのです。 -ビューの使い方は二つあります。一つは、ビューファイルの名前を Vim に決めさせる -方法です。保存したビューは、同じ名前のファイルを開いているときに復元できます。 -カレントウィンドウのビューを保存するには、次のコマンドを使います: > - - :mkview - -ビューを保存する場所は自動的に決定されます。後で同じファイルを開いたときに、次 -のコマンドでビューを復元できます: > - - :loadview - -簡単ですね。 -さて、同じファイルを違う設定で表示してみましょう。'number' オプションをオフに -設定、あるいは折り畳みをすべて開き、ウィンドウの表示を変更してみます。そして、 -次のコマンドでビューを保存します: > - - :mkview 1 - -当然、次のようにして復元します: > - - :loadview 1 - -これで、":loadview" と ":loadview 1" を使って、同じファイルの二つのビューを切 -り替えられるようになりました。 -ファイル一つにつき、番号なしのビューと、1 から 9 までの 9 個のビュー、合わせて -10 個のビューが使えます。 - - -名前付きのビュー ----------------- - -ビューのもう一つの使用方法は、指定したファイルにビューを保存する方法です。この -方法なら、他のファイルを開いていてもビューを復元できます。ビューを復元すると、 -ビューに関連付けられたファイルが開くので、編集するファイルを素早く切り替える方 -法としても使えます。 -例えば、カレントファイルのビューを保存するには、次のようにします: > - - :mkview ~/.vim/main.vim - -次のコマンドで復元できます: > - - :source ~/.vim/main.vim - -============================================================================== -*21.6* モードライン - -ファイル固有の設定を、ファイルを開くたびに設定しても構いませんが、何度も何度も -同じコマンドを入力するのはうんざりですよね。セッションやビューでは同じ設定を他 -人と共有できません。 -そのような場合にはモードラインを使います。モードラインとは、ファイル固有の設定 -をファイル内に記述するための仕組みです。 -例えば、C 言語ファイルのインデントをスペース 4 個分に設定したい場合に使います。 -それには 'shiftwidth' オプションを 4 に設定する必要があるので、モードラインは -次のようになります: - - /* vim:set shiftwidth=4: */ ~ - -この行を、ファイルの先頭または末尾から五行以内のどこかに書いてください。その -ファイルを開くと 'shiftwidth' が自動的に設定されます。他のファイルを開くと、初 -期設定の 8 に戻ります。 -モードラインをファイルヘッダに書くのが適当な場合はファイルの先頭にモードライン -を書きます。テキストファイルなど、モードラインがその内容を邪魔してしまうような -場合は末尾に書きます。 - -'modelines' オプションでモードラインの有効範囲を設定できます。ファイルの先頭ま -たは末尾からの行数で指定してください。例えば、10 行にしたい場合は次のように設 -定します: > - - :set modelines=10 - -モードライン機能を無効にするには 'modeline' オプションをオフに設定します。Unix -の root や MS-Windows の Administrator として作業する場合や、信用できないファ -イルを開く場合に設定してください: > - - :set nomodeline - -モードラインは次の書式で書きます: - - any-text vim:set {option}={value} ... : any-text ~ - -モードラインの前後、"any-text" の部分はどんな文字列でも構いません。例えば上述 -の例のように、/* と */ で囲んでコメントにすることができます。 -Vim は " vim:" という部分を見てモードラインを認識します。直前に空白のある -"vim"、または行頭の "vim" だけが認識されます。つまり、例えば "gvim:" は機能し -ません。 -二つのコロン (:) の間には ":set" コマンドを記述します。これは通常の ":set" コ -マンドと同じです。ただし、コロンの前にバックスラッシュ (\) を置く必要がありま -す (バックスラッシュがない場合はそれがモードラインの終端だと認識されます)。 - -例: - - // vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here ~ - -最初のコロンにはバックスラッシュが前置されているので、それは ":set" コマンドの -一部です。二つ目のコロン以降は無視されるので、説明を書くことができます。 - -詳細は |modeline| を参照してください。 - -============================================================================== - -次章: |usr_22.txt| ファイルを探す - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_22.jax b/doc/usr_22.jax deleted file mode 100644 index 440b37977..000000000 --- a/doc/usr_22.jax +++ /dev/null @@ -1,396 +0,0 @@ -*usr_22.txt* For Vim バージョン 7.3. Last change: 2010 Feb 21 - - VIM USER MANUAL - by Bram Moolenaar - - ファイルを探す - - -ファイルはどこにでもありますが、どうやって目的のファイルを見つければいいので -しょうか。Vim ではさまざまな方法でディレクトリツリーをブラウズできます。ファイ -ルにジャンプするコマンドもあります。開いたことのあるファイルは後から参照できま -す。 - -|22.1| ファイルブラウザ -|22.2| カレントディレクトリ -|22.3| ファイルを探す -|22.4| バッファリスト - -次章: |usr_23.txt| 特殊なファイルを編集する -前章: |usr_21.txt| 中断と再開 -目次: |usr_toc.txt| - -============================================================================== -*22.1* ファイルブラウザ - -ディレクトリを編集するためのプラグインがあります。試してみましょう: > - - :edit . - -自動コマンドと Vim スクリプトの魔法により、ディレクトリの内容がウィンドウに表 -示されます。例えばこんな具合です: - -" ============================================================================ ~ -" Netrw Directory Listing (netrw v109) ~ -" Sorted by name ~ -" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$ ~ -" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec ~ -" ============================================================================ ~ -../ ~ -./ ~ -check/ ~ -Makefile ~ -autocmd.txt ~ -change.txt ~ -eval.txt~ ~ -filetype.txt~ ~ -help.txt.info ~ - -次の項目が表示されます: - -1. ブラウジングツールの名前とバージョン番号 -2. 表示しているディレクトリ -3. ソート方法 (name、time、sizeなど) -4. 名前のソート方法 (最初はディレクトリで、続いて *.h、*.c、などなど) -5. ヘルプの表示方法 (<F1>キーを使ってください)。利用可能なコマンド抜粋。 -6. ファイル一覧。"../" は親ディレクトリを示す。 - -構文強調表示が有効な場合は各項目が別々の色で表示され、視認性が上がります。 - -一覧の中はノーマルモードコマンドで移動できます。ファイル名の上にカーソルを動か -して <Enter> を押すとファイルが開きます。もう一度 ":edit ." と入力すればエクス -プローラに戻れます。CTRL-O で戻ることもできます。 - -ディレクトリ名の上にカーソルを動かして <Enter> を押すと、ファイルブラウザがそ -のディレクトリに移動し、新たなファイル一覧が表示されます。"../" ディレクトリの -上で <Enter> を押すと上の階層に移動できます。あるいは、"../" までカーソルを移 -動しなくても、"-" を押すだけで上の階層に移動できます。 - -<F1> を押すと netrw ファイルブラウザのヘルプが表示されます。表示は次のようなも -のです: > - - 9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help - - MAPS netrw-maps - <F1>.............ヘルプ.....................................|netrw-help| - <cr>.............ブラウジング...............................|netrw-cr| - <del>............ファイル/ディレクトリを削除................|netrw-delete| - -................親ディレクトリに移動.......................|netrw--| - a................ファイル/ディレクトリを隠す................|netrw-a| - mb...............ディレクトリをブックマークする.............|netrw-mb| - gb...............ブックマークしたディレクトリに移動.........|netrw-gb| - c................表示ディレクトリをカレントディレクトリに...|netrw-c| - d................ディレクトリ作成...........................|netrw-d| - D................ファイル/ディレクトリを削除................|netrw-D| - <c-h>............ファイル/ディレクトリ隠し設定編集..........|netrw-ctrl-h| - i................表示スタイル変更...........................|netrw-i| - <c-l>............最新情報に更新.............................|netrw-ctrl-l| - o................水平分割してファイルを開く.................|netrw-o| - p................プレビューウィンドウを使う.................|netrw-p| - P................プレビューウィンドウで開く.................|netrw-p| - q................ブックマークと履歴を表示する...............|netrw-q| - r................ソート順序を逆にする.......................|netrw-r| -< (etc) - -<F1> キーを押すと netrw プラグインのヘルプに飛びます。これは通常のヘルプページ -です。|CTRL-]| でタグジャンプして |CTRL-O| で戻ることができます。 - -ファイルを選択してファイルを開きます: (カーソルをファイル名の上に移動してから) - - <enter> カレントウィンドウでファイルを開く |netrw-cr| - o ウィンドウを水平分割してファイルを表示する |netrw-o| - v ウィンドウを垂直分割してファイルを表示する |netrw-v| - p |preview-window| を使う |netrw-p| - P 直前のウィンドウで開く |netrw-P| - t 新しいタブページで開く |netrw-t| - -ノーマルモードでは次のコマンドを使ってブラウザの表示をコントロールできます: - - i 表示スタイルを変更する (thin, long, wide, tree)。 - long ではファイルのサイズと日付が表示されます。 - s ファイルのソート方法を切り替える。名前、更新時間、サイ - ズでソート可。 - r ソート順序を逆にする。 - -次のようなコマンドもあります: - - c 表示しているディレクトリをカレントディレクトリにする。 - (|g:netrw_keepdir| で動作を変更できます) - R カーソルの下のファイル/ディレクトリの名前を変更する。 - 表示されるプロンプトに新しい名前を入力してください。 - D カーソルの下のファイル/ディレクトリを削除する。確認ダ - イアログが表示されます。 - mb gb ブックマークを設定/ブックマークに移動 - - -次のような Ex コマンドもあります (他にもあります): - - :Explore [directory] カレントディレクトリ、または指定したディレクト - リをブラウズする。 - :NetrwSettings netrw の現在の設定一覧。ヘルプリンク付き。 - -netrw ブラウザの機能はローカルマシンに限定されません。次のように url を使うこ -ともできます: (末尾の / は重要) - - :Explore ftp://somehost/path/to/dir/ - :e scp://somehost/path/to/dir/ - -詳細は |netrw-browse| を参照してください。 - -============================================================================== -*22.2* カレントディレクトリ - -シェルと同じように Vim にもカレントディレクトリという概念があります。例えば、 -ホームディレクトリにいるときに "VeryLongFileName" ディレクトリにあるファイルを -開きたい場合、そのまま実行することもできますが: > - - :edit VeryLongFileName/file1.txt - :edit VeryLongFileName/file2.txt - :edit VeryLongFileName/file3.txt - -次のようにすれば、入力が簡単です: > - - :cd VeryLongFileName - :edit file1.txt - :edit file2.txt - :edit file3.txt - -":cd" コマンドでカレントディレクトリを変更できます。現在のカレントディレクトリ -を確認するには ":pwd" コマンドを使います: > - - :pwd - /home/Bram/VeryLongFileName - -直前のカレントディレクトリは記録されているので ":cd -" で元の場所に戻れます。 -例: > - - :pwd - /home/Bram/VeryLongFileName - :cd /etc - :pwd - /etc - :cd - - :pwd - /home/Bram/VeryLongFileName - :cd - - :pwd - /etc - - -ウィンドウローカルディレクトリ ------------------------------- - -ウィンドウを分割した直後、二つのウィンドウは同じカレントディレクトリを使ってい -ます。カレントディレクトリはウィンドウ毎に設定できるので、新しいウィンドウだけ -カレントディレクトリを変更して別の場所で作業できます。これを、ローカルディレク -トリといいます。 > - - :pwd - /home/Bram/VeryLongFileName - :split - :lcd /etc - :pwd - /etc - CTRL-W w - :pwd - /home/Bram/VeryLongFileName - -":lcd" コマンドを使うまでは、すべてのウィンドウが共通のカレントディレクトリを -使っています。一つのウィンドウで ":cd" コマンドを実行すると、他のウィンドウの -カレントディレクトリも変更されます。 -":lcd" を使ってカレントディレクトリを変更したウィンドウは、固有のカレントディ -レクトリを持ちます。固有のカレントディレクトリは、他のウィンドウで ":cd" また -は ":lcd" を使っても変更されません。 -固有のカレントディレクトリを持っているウィンドウで ":cd" コマンドを使うと、再 -び共通のカレントディレクトリを使うようになります。 - -============================================================================== -*22.3* ファイルを探す - -C 言語のファイルを編集していて、次のような行があったとします: - - #include "inits.h" ~ - -"inits.h" を開いて内容を確認したい場合は、カーソルをファイル名の上に動かして、 -次のように入力します: > - - gf - -ファイルが検索され、開かれます。 -ファイルがカレントディレクトリにない場合は 'path' オプションが使われます。この -オプションはディレクトリ名のリストです。指定されたディレクトリからファイルが検 -索されます。 -例えば、"c:/prog/include" にインクルードファイルがある場合は次のコマンドでディ -レクトリを追加できます: > - - :set path+=c:/prog/include - -ディレクトリを絶対パスで指定した場合は、どこで作業していても同じディレクトリが -参照されます。開いているファイル以下のサブディレクトリにインクルードファイルが -ある場合は相対パスを指定してください。相対パスの先頭はドットです: > - - :set path+=./proto - -この場合、ファイルが保存されているディレクトリの "proto" ディレクトリからファ -イルが検索されます。つまり、"inits.h" の上で "gf" を使うと、同じディレクトリの -"inits.h" が検索された後に、"proto/inits.h" が検索されます。 -"./" を付けなかった場合、つまり "proto" と指定した場合は、カレントディレクトリ -の "proto" ディレクトリが検索されます。ファイルのディレクトリとカレントディレ -クトリは意味が異なるので注意してください。 - -ディレクトリの指定方法は他にもあります。'path' オプションのヘルプを参照してく -ださい。 -'isfname' オプションには、ファイル名として使える文字、あるいは使えない文字を設 -定できます (例えば上の例では " 文字がファイル名に含まれてませんね)。 - -ファイルの名前がわかっている場合は、その名前がファイル内で使われていなくても、 -検索することができます: > - - :find inits.h - -'path' オプションを使ってファイルが検索されます。'path' が使われる以外は -":edit" コマンドと同じです。 - -検索したファイルを新しいウィンドウで開くには、"gf" ":find" ではなく "CTRL-W f" -":sfind" を使います。 - - -Vim を起動して 'path' の中からファイルを開くには、次の方法が便利です: > - - vim "+find stdio.h" - -'path' 内の "stdio.h" が検索されます。引数はクオート (") で囲む必要があります -|-+c|。 - -============================================================================== -*22.4* バッファリスト - -Vim では編集中のファイルのことをバッファといいます。バッファはファイルのコピー -です。編集を終えて保存したときに、バッファの内容がファイルに書き込まれます。 -バッファにはファイルのテキストの他に、マークやオプション設定などのファイルに関 -連した情報も記録されます。 - - -隠れバッファ (HIDDEN BUFFERS) ------------- - -例えば、one.txt を編集しているときに two.txt を編集したくなったとします。 -one.txt は変更されているので ":edit two.txt" は使えません。しかも、あなたはま -だ one.txt を保存したくはありません。次のコマンドで解決できます: > - - :hide edit two.txt - -"one.txt" というバッファは画面から消えます。しかしバッファの内容が失われるわけ -ではありません。未保存のテキストはまだ残っています。このようなバッファを隠れ -バッファといいます。 -":hide" コマンドの引数はコマンドです。指定されたコマンドは、'hidden' オプショ -ンがオンに設定されているかのように動作します。もちろん、自分で 'hidden' オプ -ションを設定しても構いません。バッファが破棄されたとき、'hidden' がオンなら、 -そのバッファは隠れバッファになります。 -隠れバッファを使ったときは、すべてのバッファが保存されたのを確認してから Vim -を終了してください。 - - -休眠バッファ (INACTIVE BUFFERS) ------------- - -バッファを閉じてもいくつかの情報は失われずに残ります。バッファリストに入ってい -るバッファの内、画面に表示されず、隠れバッファでもないバッファのことを休眠バッ -ファといいます: - - アクティブバッファ ウィンドウに表示されている。テキストはメモリの中。 - 隠れバッファ 表示されていない。テキストはメモリの中。 - 休眠バッファ 表示されていない。テキストは保持されていない。 - -休眠バッファにはファイル名やマークなどの情報が保存されています。ファイル名が保 -存されているので、編集したことのあるファイルを確認し、それを再び開くことができ -ます。 - - -バッファリストの表示 --------------------- - -次のコマンドでバッファリストを表示できます: > - - :buffers - -次のコマンドも同じです。コマンドの名前と機能が連想しずらいかもしれませんが、入 -力は簡単です: > - - :ls - -コマンドの出力例: - - 1 #h "help.txt" line 62 ~ - 2 %a+ "usr_21.txt" line 1 ~ - 3 "usr_toc.txt" line 1 ~ - -行頭の数字はバッファ番号です。バッファを開くときに名前の代わりにバッファ番号を -指定することもできます。下記参照。 -バッファ番号に続いてフラグ、ファイル名、最後にカーソルが位置していた行番号、が -表示されます。 -フラグ部分には以下の文字が (左から右へ) 表示されます。 - - u 非列挙バッファ (|unlisted-buffer|)。 - % カレントバッファ。 - # オルタネートバッファ。 - a テキストを持っている。表示されている。 - h テキストを持っている。隠れバッファ。 - = 読み込み専用。 - - 変更不可 ('modifiable' オプションがオフ)。 - + 変更あり。 - - -バッファを開く --------------- - -バッファ番号を指定してバッファを開くことができます。ファイル名を入力する必要は -ありません: > - - :buffer 2 - -しかし、バッファ番号を知るためにはバッファリストを表示しなければなりません。名 -前の一部分だけを指定して開くこともできます: > - - :buffer help - -指定された名前に近いバッファが検索され、名前が一致したバッファが一つだけなら、 -そのバッファが使われます。この例なら "help.txt" など。 -バッファを新しいウィンドウで開くには、次のコマンドを使います: > - - :sbuffer 3 - -もちろん名前も指定できます。 - - -バッファリストを使う --------------------- - -次のコマンドでバッファリストの中を移動できます: - - :bnext 次のバッファを開く - :bprevious 前のバッファを開く - :bfirst 最初のバッファを開く - :blast 最後のバッファを開く - -次のコマンドでバッファリストからバッファを削除できます: > - - :bdelete 3 - -もちろん名前も指定できます。 -アクティブバッファ (ウィンドウに表示されているバッファ) を削除すると、表示して -いたウィンドウも閉じます。カレントバッファを削除するば、カレントウィンドウが閉 -じます。ウィンドウが一つしかなかった場合は、他のバッファに切り替わります。なに -もないを開くことはできません! - - Note: - ":bdelete" でバッファを削除してもバッファの情報は失われません。バッファ - が "unlisted" 状態になり、":buffers" コマンドで表示されなくなるだけで - す。":buffers!" コマンドを使えば unlisted バッファも表示されます (そ - う、Vim は不可能を可能にするのです)。バッファの情報を完全に消去するに - は ":bwipe" を使ってください。'buflisted' オプション参照。 - -============================================================================== - -次章: |usr_23.txt| 特殊なファイルを編集する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_23.jax b/doc/usr_23.jax deleted file mode 100644 index e6079a98f..000000000 --- a/doc/usr_23.jax +++ /dev/null @@ -1,336 +0,0 @@ -*usr_23.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - 特殊なファイルを編集する - - -この章では特殊なファイルの編集について説明します。圧縮ファイルや暗号化された -ファイルを編集できます。多少不便ですが、バイナリファイルも編集できます。イン -ターネット越しにファイルアクセスする方法も説明します。 - -|23.1| DOS、Mac、Unix形式のファイル -|23.2| インターネット上のファイル -|23.3| 暗号化 -|23.4| バイナリファイル -|23.5| 圧縮ファイル - -次章: |usr_24.txt| 効率的な入力 -前章: |usr_22.txt| ファイルを探す -目次: |usr_toc.txt| - -============================================================================== -*23.1* DOS、Mac、Unix形式のファイル - -その昔、旧いテレタイプマシンは改行のために二つの文字を使っていました。一つ目の -文字 (キャリッジリターン。<CR>) でキャリッジを初期位置に戻し、二つ目の文字 (ラ -インフィード。<LF>) で用紙を送っていたのです。 -コンピュータが登場した頃は記憶装置がとても高価だったので、改行のために二文字も -使う必要はないと考える人たちがいました。UNIX の人々は <LF> だけを使って改行す -ることに決めました。Apple の人々は <CR> を標準としました。MS-DOS (と Microsoft -Windows) の人々は <CR><LF> を使い続けました。 -このような事情により、異なるシステム間でファイルを交換するときには改行文字の非 -互換が問題になります。Vim はファイル形式を自動的に認識し、それを適切に処理する -ことができます。 -'fileformats' オプションを設定して使用するファイル形式を指定してください。例え -ば、最初に Unix 形式を試し、次に MS-DOS 形式を試すには、次のように設定します: -> - :set fileformats=unix,dos - -ファイルを開いたときのメッセージにファイル形式が表示されることがあります。シス -テム標準のファイル形式だった場合は表示されません。例えば、Unix で Unix 形式の -ファイルを編集するときに注意は必要ないでしょう。しかし、DOS 形式のファイルな -ら注意が必要です。次のようなメッセージが表示されます: - - "/tmp/test" [dos] 3L, 71C ~ - -Mac 形式なら "[mac]" と表示されます。 -ファイル形式は 'fileformat' オプションに設定されます。現在のファイル形式を確認 -するには、次のコマンドを使います: > - - :set fileformat? - -Vim では次の3つの名前が使われます: - - unix <LF> - dos <CR><LF> - mac <CR> - - -Mac 形式を使う --------------- - -Unix では <LF> が改行文字です。行の途中に <CR> 文字がくることは普通はありませ -ん。ただし、Vi (と Vim) のスクリプトでは <CR> 文字が使われることがあります。 -Macintosh では <CR> が改行文字なので、行の途中に <LF> 文字を使うことができま -す。 -つまり、<CR> と <LF> を両方含んでいるファイルは、ファイル形式を 100% 確実に判 -別することはできません。 -そのため、Unix では Mac 形式の改行はチェックされません。おそらく、Unix で Mac -形式のファイルを編集することはあまりないでしょう。どうしても Mac 形式のファイ -ルを使いたい場合は 'fileformats' オプションに "mac" を追加してください。 > - - :set fileformats+=mac - -これで、Mac 形式の改行が認識されるようになります。ただし、正しく認識できないこ -とがあるので注意してください。 - - -ファイル形式を指定する ----------------------- - -古き良き Vi で MS-DOS 形式のファイルを開くと、すべての行末に ^M が付きます。 -(^M = <CR>)。Vim では改行が自動認識されるので、そのようなことにはなりません。 -敢えて昔の動作を再現したい場合は、ファイル形式を指定してください: > - - :edit ++ff=unix file.txt - -"++" に続いてオプション名を指定することで、コマンドの設定を変更できます。 -'fileformat' なら "++ff" です。もちろん "++ff=mac" または "++ff=dos" と設定す -ることもできます。 -この方法ではすべてのオプションを設定できません。現在のところ "++ff" と "++enc" -だけが実装されています。"++fileformat" や "++encoding" のようにフルネームでも -指定できます。 - - -ファイル形式の変換 ------------------- - -'fileformat' オプションを使ってファイル形式を変換できます。例えば、README.TXT -を MS-DOS 形式から UNIX 形式に変換してみます。まず、MS-DOS 形式のファイルを開 -きます: > - - vim README.TXT - -ファイル形式は自動的に認識されます。では、ファイル形式を変換しましょう: > - - :set fileformat=unix - :write - -ファイルは Unix 形式で保存されます。 - -============================================================================== -*23.2* インターネット上のファイル - -誰かがあなたにメールを出しました。メールには URL が書いてあります。例: - - そのことならここに情報があったよ。 ~ - ftp://ftp.vim.org/pub/vim/README ~ - -他のプログラムを使ってファイルをダウンロードし、それを Vim で開いても構いませ -んが、もっと簡単な方法があります。カーソルを URL の上に移動して次のコマンドを -入力してください。 > - - gf - -運が良ければ、ダウンロード用のプログラムが実行され、ダウンロードされたファイル -が開かれます。新しいウィンドウで開きたい場合は "CTRL-W f" を使ってください。 -ダウンロードが失敗してエラーメッセージが表示された場合は、次のような原因が考え -られます。 - - URL が間違っている。 - - アクセス権限がない。 - - ネットワークがダウンしている。 - - その他。 -残念ながら、エラーの原因を把握するのは非常に困難です。エラーが起きた場合は手作 -業でファイルをダウンロードしてください。 - -インターネット経由のファイルアクセスは netrw プラグインによって実行されます。 -現在、以下の形式の URL が認識可能です。 - - ftp:// ftp を使う - rcp:// rcp を使う - scp:// scp を使う - http:// wget を使う (読込専用) - -Vim 自身は通信機能を持っていません。インターネットアクセスは外部プログラムを -使って実行されます。"ftp" と "rcp" はほとんどの Unix システムで利用できるはず -です。"scp" と "wget" は別途インストールする必要があるかもしれません。 - -":edit" や ":split" などのコマンドでファイルを開くときにも URL を指定できます。 -もちろん保存もできます (http:// は不可)。 - -パスワードの指定方法など、詳細は|netrw|を参照してください。 - -============================================================================== -*23.3* 暗号化 - -情報を秘密にしたいことがあると思います。例えば、生徒と共有のコンピュータを使っ -てテストを作成している場合、賢い生徒にテスト問題を盗み見られてしまうようでは困 -ります。Vim の暗号化機能を使って情報を保護しましょう。 -ファイルを暗号化するには、Vim の起動引数に "-x" を指定します。例: > - - vim -x exam.txt - -プロンプトが表示されるので、ファイルを暗号化または複号するための鍵を入力してく -ださい: - - 暗号化用のキーを入力してください: ~ - -慎重に秘密鍵を入力してください。入力した文字は表示されません。代りにスター (*) -が表示されます。入力ミスがあると大変なので、念のため、もう一度同じ鍵を入力して -ください: - - もう一度同じキーを入力してください: ~ - -ファイルの編集方法は通常のファイルと同じです。秘密にしたいことを書き込んでくだ -さい。ファイルを保存すると、暗号化されて保存されます。 -次にそのファイルを Vim で開くと、鍵を入力するためのプロンプトが表示されます。 -既に暗号化されたファイルを開くときは "-x" 引数を指定する必要はありません。通常 -の ":edit" コマンドで開くこともできます。暗号化ファイルにはマジック文字列が埋 -め込まれているので、Vim は暗号化ファイルを認識できます。 -他のプログラムで暗号化ファイルを開くと、ゴミが表示されます。たとえ Vim で開い -たとしても、不正な鍵を使った場合は、やはりゴミが表示されます。鍵が正しいかどう -かを判断する機能は Vim にはありません (暗号をより強固なものにするため)。 - - -暗号化と解除 ------------- - -ファイルの暗号化を解除するには、'key' オプションに空文字を設定します: > - - :set key= - -空に設定してからファイルを保存すると、暗号化されずに保存されます。 -'key' オプションに鍵を設定すれば暗号化を有効にできますが、それは安全ではありま -せん。パスワードがコマンドラインに表示されるので、肩越しに盗み見られてしまいま -す。 -安全に暗号化を有効にするには、":X" コマンドを使ってください。"-x" 引数を使った -ときと同じプロンプトが表示されます: > - - :X - 暗号化用のキーを入力してください: ****** - もう一度同じキーを入力してください: ****** - - -暗号化の限界 ------------- - -Vim の暗号アルゴリズムは脆弱です。いたずら小僧を撃退するには十分ですが、暗号エ -キスパートのハックには耐えられません。さらに、スワップファイルが暗号化されない -ことにも注意が必要です。ファイルを編集している間、スーパーユーザ権限さえあれば -誰でも平文のスワップファイルを読むことができます。 -スワップファイルを使わないというのも一つの手です。起動引数に "-n" を指定すれ -ば、スワップファイルは作成されなくなります (代わりにメモリが使われます)。例え -ば、暗号化した "file.txt" をスワップファイル無しで開くには、次のコマンドを使い -ます: > - - vim -x -n file.txt - -既にファイルを編集中なら、次のコマンドでスワップファイルを無効にできます: > - - :setlocal noswapfile - -スワップファイルが無いということは、リカバリできないということです。普段よりま -めにファイルを保存し、クラッシュによるリスクを抑えましょう。 - -メモリ上のファイルは暗号化されていません。権限さえあれば誰でもエディタのメモリ -を調べてファイルの内容を知ることができます。 -viminfo ファイルを使っている場合、レジスタの中身が平文で保存されることにも注意 -が必要です。 -本気でファイルを秘密にしたいなら、ネットワークから切り離したマシンで作業し、強 -力な暗号化ツールを使い、そのマシンを使わないときは金庫に入れておきましょう。 - -============================================================================== -*23.4* バイナリファイル - -Vim はバイナリファイルを編集できます。専用ツールではないので若干の制限はありま -すが、ファイルを読み込み、編集し、保存できます。 -Vim の便利な (そして今は邪魔な) 機能を無効にするために、"-b" 引数を付けて Vim -を起動してください: > - - vim -b datafile - -'binary' オプションがオンになります。これにより、余計な機能が無効になります。 -例えば、'textwidth' が 0 に設定され、自動整形が無効になります。そして、ファイ -ルは Unix 形式で読み込まれます。 - -バイナリモードを使うと、例えば実行ファイルのメッセージを変更できます。ただし、 -文字を挿入したり削除したりするとプログラムが動かなくなってしまうので注意してく -ださい。"R" コマンドの置換モードを使いましょう。 - -バイナリファイルには非印字可能文字がたくさんあります。これを 16 進数で表示する -には、次のように設定してください: > - - :set display=uhex - -あるいは、調べたい文字にカーソルを移動して "ga" コマンドを使います。例えば、 -<Esc> の上で "ga" を実行すると、次のように表示されます: - - <^[> 27, Hex 1b, Octal 033 ~ - -ファイルに含まれている改行コードが少ない場合、'wrap' オプションをオフにすると -全体をざっくり眺めることができます: > - - :set nowrap - - -バイト位置 ----------- - -次のコマンドで現在のカーソル位置をバイト単位で表示できます: > - - g CTRL-G - -冗長なメッセージが表示されます: - - 列 9-16 / 9-16; 行 277 / 330; 単語 1806 / 2058; バイト 10580 / 12206 ~ - -末尾の数字に注目してください。カーソルの位置とファイルの大きさがバイト単位で表 -示されています。'fileformat' の設定による改行の種類もちゃんと考慮されています。 -指定したバイト位置に移動するには "go" コマンドを使います。例えば、2345 バイト -目に移動するには、次のようにします: > - - 2345go - - -XXDを使う ---------- - -本物のバイナリエディタは、テキスト表示と 16 進表示の二通りの方法でファイルを表 -示します。"xxd" を使ってファイルを変換すれば Vim でも同じように表示できます。 -"xxd" は Vim に付属しています。 -まず、ファイルをバイナリモードで開いてください: > - - vim -b datafile - -そして、xxd を使って16進数ダンプ形式に変換します: > - - :%!xxd - -テキストは次のように変換されます: - - 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ - 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ - 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ - -あとは、好きなようにテキストを編集してください。普通のテキストを編集するのと同 -じです。16 進数部分を変更しても、テキスト部分は更新されません。逆も同様です。 -編集が済んだら変換し、テキストに戻します: > - - :%!xxd -r - -16 進数部分への変更だけが反映されます。右側のテキスト部分への変更は無視されま -す。 - -詳細は xxd のマニュアルを参照してください。 - -============================================================================== -*23.5* 圧縮ファイル - -これは簡単です。圧縮ファイルを編集するのに特別な操作は必要ありません。ただファ -イルを開くだけです。"gzip" プラグインが展開の面倒をみてくれます。ファイルを保 -存すれば勝手に圧縮してくれます。 -現在、以下の圧縮形式がサポートされています: - - .Z compress - .gz gzip - .bz2 bzip2 - -実際の圧縮と展開には上記のプログラムが使われます。無い場合は別途インストールし -てください。 - -============================================================================== - -次章: |usr_24.txt| 素早く入力する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_24.jax b/doc/usr_24.jax deleted file mode 100644 index 5e11ee18e..000000000 --- a/doc/usr_24.jax +++ /dev/null @@ -1,596 +0,0 @@ -*usr_24.txt* For Vim バージョン 7.3. Last change: 2006 Jul 23 - - VIM USER MANUAL - by Bram Moolenaar - - 素早く入力する - - -テキストを入力するときに、キーストロークを減らしたり入力ミスを防いだりする方法 -がいくつかあります。補完機能を使えば以前に入力した単語を繰り返し入力できます。 -長い単語を短縮形で入力することもできます。キーボードに無い文字を入力する方法も -あります。 - -|24.1| 修正する -|24.2| 対応する括弧を表示する -|24.3| 補完 -|24.4| 挿入を繰り返す -|24.5| 隣の行からコピーする -|24.6| レジスタを挿入する -|24.7| 短縮形 -|24.8| 特殊な文字を入力する -|24.9| 二重字 (Digraph) -|24.10| ノーマルモードコマンド - -次章: |usr_25.txt| テキストの整形 -前章: |usr_23.txt| 特殊なファイルを編集する -目次: |usr_toc.txt| - -============================================================================== -*24.1* 修正する - -<BS> キーは既に説明しましたね。<BS> はカーソル直前の文字を削除します。<Del> -キーはカーソルの下(後)の文字を削除します。 -直前の単語をまるごと削除したい場合は CTRL-W を使います: - - The horse had fallen to the sky ~ - CTRL-W - The horse had fallen to the ~ - -行全体を削除して行頭から入力しなおしたい場合は CTRL-U を使います。カーソルより -後ろの文字とインデントは削除されません。最初の非空白文字からカーソルまでのテキ -ストだけが削除されます。例えば、カーソルが "fallen" の "f" にある場合、CTRL-U -を押すと次のようになります: - - The horse had fallen to the ~ - CTRL-U - fallen to the ~ - -何個か前の単語だけを修正したい場合はカーソルを動かす必要があります。例えば、次 -のように入力してから: - - The horse had follen to the ground ~ - -途中にある "follen" を "fallen" に修正してみます。カーソルが末尾にある場合、次 -のように入力すれば修正できます: > - - <Esc>4blraA - -< 挿入モードを抜ける <Esc> - 4 単語戻る 4b - 最初の "o" に移動する l - "a" に置換する ra - 行末に移動して挿入モードを再開 A - -他の方法もあります: > - - <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End> - -< 4 単語戻る。 <C-Left><C-Left><C-Left><C-Left> - 最初の "o" に移動する <Right> - "o" を削除する <Del> - "a" を挿入する a - 行末に移動する <End> - -挿入モードの中で特殊キーを使って移動しています。これは普通のモードレスエディタ -の操作と似ています。操作方法は覚えやすいかもしれませんが少し面倒です (カーソル -キーを押すには手をホームポジションから離さなければならないし、<End> キーを押す -にはキーボードに視線を移さなければならない)。 -特殊キーは挿入モードの中で使えるのでマップを書くときに重宝します。マップの中で -使う分には入力が面倒になることもありません。 -挿入モードでは次の特殊キーが使えます: - - <C-Home> ファイルの先頭に移動 - <PageUp> 1 画面分、逆スクロール - <Home> 行頭へ移動 - <S-Left> 1 単語左へ移動 - <C-Left> 1 単語左へ移動 - <S-Right> 1 単語右へ移動 - <C-Right> 1 単語右へ移動 - <End> 行末へ移動 - <PageDown> 1 画面分、スクロール - <C-End> ファイルの末尾に移動 - -使えるキーは他にもあります。|ins-special-special| 参照。 - -============================================================================== -*24.2* 対応する括弧を表示する - -")" を入力したときに、対応する "(" の場所を確認できたら便利ですよね。次のコマ -ンドでそのように設定できます: > - - :set showmatch - -例えば "(example)" と入力したとき、")" を入力した瞬間に、対応する括弧にカーソ -ルが移動します。カーソルは 0.5 秒くらいその場所に留まり、再び元の場所に帰って -きます。 -対応する括弧が見つからなかった場合はビープ音が鳴ります。そのときは、( を入力し -忘れてないか、) を入力し過ぎてないか、確認しましょう。 -この機能は、[] や {} の組み合わせにも対応しています。カーソルが移動していると -きに、戻ってくるまで次の入力を待つ必要はありません。次の文字を入力した瞬間に -カーソルは元に戻るので、すぐに入力を再開できます。 -カーソルが移動先で待機する時間は 'matchtime' オプションで設定できます。例えば、 -1.5 秒待機するには次のように設定します: > - - :set matchtime=15 - -時間は 1/10 秒単位で指定してください。 - -============================================================================== -*24.3* 補完 - -テキストの中から単語を検索して補完することができます。単語の出だしを入力して -CTRL-P を押すと、残りの部分が入力されます。 -例えば、C プログラムを書いていて、次のように入力したいとします: - - total = ch_array[0] + ch_array[1] + ch_array[2]; ~ - -まず、次のように入力してください: - - total = ch_array[0] + ch_ ~ - -ここで、CTRL-P コマンドを使って単語を補完します。カーソル直前の文字列にマッチ -する単語が検索されます。この場合なら、"ch_" にマッチする単語、つまり -"ch_array" がヒットします。したがって、CTRL-P を押すと次のようになります: - - total = ch_array[0] + ch_array ~ - -続けて入力し、次のようになりました (末尾に空白があります): - - total = ch_array[0] + ch_array[1] + ~ - -さて、ここで CTRL-P を押すと再びカーソル直前の文字列が補完されます。今回は文字 -が無いので、最初に見つかった単語、つまり "ch_array" が補完されます。もう一度 -CTRL-P を押すと、さらに次の候補が補完されます。この場合は "total" です。もう一 -度 CTRL-P を押せばさらに次の候補が補完されます。次の単語が見つからなかった場合 -は元の文字列に戻ります。この例では空文字列です。四度目に CTRL-P を押すと再び最 -初の "ch_array" が補完されます。 - -前方検索する場合は CTRL-N を使います。検索はファイル終端を超えて処理されるの -で、CTRL-N と CTRL-P は順番が違うだけで、同じ単語が検索されます。Hint: CTRL-N -は Next-match (次の候補)、CTRL-P は Previous-match (前の候補) です。 - -単語の補完では、様々な場所から単語を検索できます。初期設定では、次の場所が検索 -されます: - - 1. カレントファイル - 2. 他のウィンドウのファイル - 3. ロードされたファイル (隠しバッファ) - 4. ロードされてないファイル (休眠バッファ) - 5. タグファイル - 6. カレントファイルが #include しているファイル - - -オプション ----------- - -検索場所の順番は 'complete' オプションで設定できます。 - -検索には 'ignorecase' オプションが使われます。このオプションがオンのときは、大 -文字と小文字は区別されません。 - -'infercase' は補完用の特別なオプションです。大文字と小文字を区別しない -('ignorecase' がオンに設定されている) ときでも、自分で入力した文字の種類をその -まま使えます。つまり、"For" と入力して "fortunately" がマッチしたとき、結果は -"Fortunately" になります。 - - -補完タイプの指定 ----------------- - -補完したい単語の種類がわかっている場合は、次のコマンドで補完の種類を指定できま -す: - - CTRL-X CTRL-F ファイル名 - CTRL-X CTRL-L 行全体 - CTRL-X CTRL-D マクロ定義 (インクルードファイルの中も探す) - CTRL-X CTRL-I カレントファイルとインクルードファイル - CTRL-X CTRL-K 辞書 - CTRL-X CTRL-T 同義語辞書 (シソーラス) - CTRL-X CTRL-] タグ - CTRL-X CTRL-V Vim のコマンドライン - -補完を実行した後は、CTRL-N で次の候補、CTRL-P で前の候補を検索できます。 -各コマンドの詳細は |ins-completion| を参照してください。 - - -ファイル名の補完 ------------------ - -例として CTRL-X CTRL-F を使って説明します。これはファイル名を補完するコマンド -です。カレントディレクトリのファイルが検索され、カーソル直前の文字列にマッチす -るファイル名が補完されます。 -例えば、カレントディレクトリに次のファイルがあるとします: - - main.c sub_count.c sub_done.c sub_exit.c - -挿入モードに入って次のように入力します: - - The exit code is in the file sub ~ - -そして、CTRL-X CTRL-F を入力します。カレントディレクトリから "sub" にマッチす -るファイルが検索されます。最初にマッチするのは sub_count.c です。このファイル -は求めているファイルではありませんでした。CTRL-N を押して次の候補を検索しましょ -う。次に sub_done.c がマッチします。もう一度 CTRL-N を押すと sub_exit.c がマッ -チします。結果: - - The exit code is in the file sub_exit.c ~ - -ファイル名の先頭を / (Unix) や C:\ (MS-Windows) で開始すれば、ファイルシステム -全体からファイルを検索できます。例えば、"/u" と入力してから CTRL-X CTRL-F と入 -力すると "/usr" がヒットします (Unix の場合): - - the file is found in /usr/ ~ - -もう一度 CTRL-N を押すと "/u" に戻ってしまいます。"/usr/" を確定してからさらに -深い階層へ進みたい場合は再び CTRL-X CTRL-F を使います: - - the file is found in /usr/X11R6/ ~ - -もちろん、ファイル構成が違えば結果は異なるでしょう。検索結果はアルファベット順 -にソートされます。 - - -ソースコードの補完 - -ソースコードは書式が決まっているので、より賢い補完を実装することができます。 -Vim ではそれをオムニ補完 (Omni completion) と呼びます。某エディタではインテリ -センスと呼ばれていますが、それは商標です。 - -オムニ補完のキーは CTRL-X CTRL-O です。O は Omni の頭文字なので覚えやすいでしょ -う。C 言語のソースを使って説明します: - - { ~ - struct foo *p; ~ - p-> ~ - -カーソルは "p->" の後ろにあります。CTRL-X CTRL-O を押すと、"struct foo" のメン -バが候補として表示されます。これは CTRL-P の補完とはまったく違います。CTRL-P -ではあらゆる単語が候補になりますが、オムニ補完は "struct foo" のメンバだけが補 -完されます。 - -オムニ補完を使うには設定が必要です。最低でもファイルタイププラグインを有効にし -ておく必要があります。vimrc に以下の行を書き加えてください: > - filetype plugin on -または: > - filetype plugin indent on - -C 言語の場合はタグファイルを作成して 'tags' オプションを設定する必要がありま -す。|ft-c-omni| を参照してください。他のファイルタイプでも似たような設定が必要 -になります。|compl-omni-filetypes| を参照してください。オムニ補完は特定のファ -イルタイプでしか利用できません。'omnifunc' オプションを確認し、オムニ補完が利 -用できるかどうか確認してください。 - -============================================================================== -*24.4* 挿入を繰り返す - -CTRL-A を押すと、前回の挿入モードで入力したテキストを挿入できます。 -例えば、次のようなファイルがあったとします: - - "file.h" ~ - /* Main program begins */ ~ - -一行目の行頭に "#include " を挿入します: - - #include "file.h" ~ - /* Main program begins */ ~ - -"j^" コマンドで次の行の行頭に移動し、再び "#include " を挿入してみます。次のよ -うに入力しましょう: > - - i CTRL-A - -結果は次のようになります: - - #include "file.h" ~ - #include /* Main program begins */ ~ - -CTRL-A は前回に入力したテキストを挿入するコマンドなので、"#include " が挿入さ -れました。続けて "main.h"<Enter> と入力し、行を完成させましょう: - - #include "file.h" ~ - #include "main.h" ~ - /* Main program begins */ ~ - -CTRL-@ コマンドは CTRL-A と同じことを実行してから挿入モードを抜けます。まった -く同じ挿入を繰り返したいときに使います。 - -============================================================================== -*24.5* 隣の行からコピーする - -CTRL-Y コマンドを使うと、カーソルの上の文字を挿入できます。一つ上の行を複製し -たい場合に便利です。例えば、次のような C 言語のコードがあるとして: - - b_array[i]->s_next = a_array[i]->s_next; ~ - -"s_next" を "s_prev" に変えただけの同じ行を入力してみます。新しい行を開いて -CTRL-Y を 14 回押して、"next" の "n" の直前まで進みます: - - b_array[i]->s_next = a_array[i]->s_next; ~ - b_array[i]->s_ ~ - -そして "prev" と入力します: - - b_array[i]->s_next = a_array[i]->s_next; ~ - b_array[i]->s_prev ~ - -続けて、次の"next"まで CTRL-Y を押します。 - - b_array[i]->s_next = a_array[i]->s_next; ~ - b_array[i]->s_prev = a_array[i]->s_ ~ - -"prev;" と入力すれば、行が完成です。 - -CTRL-Y と似たコマンドに CTRL-E があります。これはカーソルの下の文字を挿入する -コマンドです。 - -============================================================================== -*24.6* レジスタを挿入する - -CTRL-R {register} コマンドを使うと、レジスタの内容を挿入できます。長い単語を入 -力するのが簡単になります。例えば、次の行を入力したいとします。 - - r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~ - -関数名は別のファイルで定義されています。そのファイルを開いてカーソルを関数名の -先頭に移動し、次のコマンドでレジスタ v にヤンクします: > - - "vyiw - -"v はレジスタの指定、"yiw" は yank-inner-word (単語をヤンクする) です。さて、 -元のファイルに戻り、挿入モードを開始して次のように入力します: - - ir = ~ - -ここで、CTRL-R v を押して関数の名前を挿入します: - - r = VeryLongFunction ~ - -続けて関数の引数などを入力し、関数名を入力するときになったら再び CTRL-R v を使 -います。 -同じことは補完を使ってもできますが、同じ文字で始まる単語がたくさんある場合には -レジスタが便利です。 - -レジスタの中に <BS> などの特殊な文字が含まれている場合、その文字は、実際にキー -ボードから入力されたのと同じように処理されます。それが望みの動作ではない場合 -(例えば、<BS> をテキストとして挿入したい場合) は CTRL-R CTRL-R {register} を -使ってください。 - -============================================================================== -*24.7* 短縮形 (Abbreviations) - -短縮形とは長い単語を置き換える短い単語のことです。例えば、"ad" は -"advertisement" の短縮形です。Vim では、入力した短縮形を自動的に展開することが -できます。 -"ad" を "advertisement" の短縮形として登録するには、次のコマンドを使います: > - - :iabbrev ad advertisement - -これで、"ad" と入力すると、完全形の "advertisement" がテキストに挿入されます。 -短縮形の置き換えは、スペースなどの、単語の一部として認識されない文字を入力した -ときに実行されます: - - 入力した文字 画面上での見え方 - I saw the a I saw the a ~ - I saw the ad I saw the ad ~ - I saw the ad<Space> I saw the advertisement<Space> ~ - -"ad" と入力しただけでは展開されません。これは例えば "add" のような単語も入力で -きるようにするためです。単語の境界が確定してから短縮形の展開が適用されます。 - - -複数の単語の短縮形 ------------------- - -複数の単語に展開される短縮形を定義できます。例えば、"JB" を "Jack Benny" の短 -縮形として登録するには、次のコマンドを使います: > - - :iabbrev JB Jack Benny - -プログラムを書くとき、私は少し変った短縮形を使っています: > - - :iabbrev #b /**************************************** - :iabbrev #e <Space>****************************************/ - -これはコメントブロックを作成するときに使います。コメントを開始するときに #b で -最初の行を描き、コメントを書いてから、#e で末尾の行を描きます。#e の展開形がス -ペースで始まっています。別の言い方をすれば、最初の二文字がスペースとスターに -なっています。通常、短縮形と展開形の間の空白は無視されるので、スペースを入れた -い場合は <, S, p, a, c, e, > という 7 文字の特殊な表記を使います。 - - Note: - ":iabbrev" は入力するのが長くて大変なので、":iab" でも構いません。 - これは短縮コマンドの短縮形です! - - -入力ミスを直す --------------- - -入力ミスの癖ってありますよね。例えば、"the" と入力するはずが "teh" になってし -まったり。短縮形を使って修正しましょう: > - - :abbreviate teh the - -このような短縮形のリストを作成し、入力ミスの癖を見つけたら追加しましょう。 - - -短縮形を一覧表示する --------------------- - -":abbreviate" コマンドで短縮形の一覧を表示できます: > - - :abbreviate - i #e ****************************************/ - i #b /**************************************** - i JB Jack Benny - i ad advertisement - ! teh the - -行頭の "i" は挿入モードの意味です。その短縮形は挿入モードの中だけで有効です。 -他にも、次のような文字が表示されます: - - c コマンドラインモード :cabbrev - ! 挿入モードとコマンドラインモード :abbreviate - -コマンドラインモードで短縮形が役に立つことはあまりないので、"iabbrev" コマンド -を主に使うことになるでしょう。"iabbrev" なら、次のようなコマンドで "ad" が展開 -される心配はありません: > - - :edit ad - - -短縮形の削除 ------------- - -短縮形を取り除くには ":unabbreviate" コマンドを使います。次のような短縮形が登 -録されているなら: > - - :abbreviate @f fresh - -次のコマンドで削除できます: > - - :unabbreviate @f - -このコマンドを入力すると @f が "fresh" に展開されてしまいますが、心配はいりま -せん。コマンドは正しく処理されます (ただし、"fresh" という別の短縮形が定義され -ている場合は期待した動作になりません。まぁそんなことはほとんどないはずですが)。 -すべての短縮形を削除するには次のコマンドを使います: > - - :abclear - -":unabbreviate" と ":abclear" にも、挿入モード用 (":iunabbreviate" と -":iabclear") とコマンドライン用 (":cunabbreviate" と ":cabclear") があります。 - - -短縮形の再マップ ----------------- - -短縮形を定義するときに注意すべき点がもう一つあります。展開された文字列がマップ -されないようにしなくてはなりません。例をあげましょう: > - - :abbreviate @a adder - :imap dd disk-door - -"@a" を入力すると "adisk-doorer"になってしまいます。これは意図した動作ではない -はずです。これを避けるには、":noreabbrev" コマンドを使います。":abbreviate" と -機能は同じですが、展開結果にマップが適用されません: > - - :noreabbrev @a adder - -これで、展開結果がマップされなくなります。 - -============================================================================== -*24.8* 特殊な文字を入力する - -CTRL-V コマンドを使うと、その次に入力した文字をそのまま挿入できます。つまり、 -文字の特殊効果が無視されます。例えば、このように入力すると: > - - CTRL-V <Esc> -< -エスケープ文字が挿入されます。挿入モードは終了しません。(CTRL-V の後ろの空白は -見やすくするためのものなので、実際には入力しないでください) - - Note: - MS-Windows では CTRL-V はテキストのペーストに使われています。CTRL-V の - 代わりに CTRL-Q を使ってください。Unixでは逆に一部の端末で CTRL-Q に特 - 別な意味があるので使えないかもしれません。 - -また、CTRL-V {digits} コマンドを使うと、文字コードを 10 進数で指定して、その文 -字を入力できます。例えば、文字コード 127 は <Del> 文字 (<Del> *キー*と同じとは -限りません) です。<Del> を挿入するには次のように入力します: > - - CTRL-V 127 - -同じやりかたで文字コード 255 までの文字を入力できます。文字コードが 2 桁以下の -場合は、数字以外の文字を入力してコマンドを確定してください。 -数字以外の文字を入力したくない場合は、数値が 3 桁になるように 1 つか 2 つの -"0" を数値の前に付けてください。 -次のコマンドはいずれも <Tab> と "." を挿入します: - - CTRL-V 9. - CTRL-V 09. - CTRL-V 009. - -文字コードは 16 進数でも指定できます。その場合は CTRL-V の直後に "x" を指定し -ます: > - - CTRL-V x7f - -この場合もコード 255 (CTRL-V xff) までの文字が入力できます。"o" で 8 進数の数 -値を指定することもできます。他にも "u" と "U" でそれぞれ 16 ビットと 32 ビット -の文字コード (例えば Unicode の文字) を指定できます: > - - CTRL-V o123 - CTRL-V u1234 - CTRL-V U12345678 - -============================================================================== -*24.9* 二重字 (Digraph) - -例えば、コピーライト文字 (©) など、キーボードに無い文字がいくつかあります。 -そのような文字を Vim で入力するには二重字を使います。つまり、二文字で一文字を -表現します。例えば、コピーライト文字 (©) を入力するには、次のようにします: > - - CTRL-K Co - -使用できる二重字の一覧を表示するには、次のコマンドを使います: > - - :digraphs - -一部抜粋: - - AC ~_ 159 NS | 160 !I ¡ 161 Ct ¢ 162 Pd £ 163 Cu ¤ 164 Ye ¥ 165 ~ - BB ¦ 166 SE § 167 ': ¨ 168 Co © 169 -a ª 170 << « 171 NO ¬ 172 ~ - -- ­ 173 Rg ® 174 'm ¯ 175 DG ° 176 +- ± 177 2S ² 178 3S ³ 179 ~ - -これを見れば、例えば CTRL-K Pd でポンド記号 (£) が入力できることがわかります。 -文字番号は 163 (10進数) です。 -Pd は Pound (ポンド) の略です。ほとんどの二重字には、生成される文字が連想しや -すい文字が割り当てられています。法則は表を見ればだいたいわかると思います。 -二重字の一文字目と二文字目は逆の順番で入力しても構いません。ただし、その組み合 -わせが他の二重字で使われていない場合に限ります。すなわち、CTRL-K dP もポンド記 -号になります。"dP" という組み合わせが他に使われていないので、"Pd" の二重字が使 -われるのです。 - - Note: - 二重字はユーザーが使っている (と Vim が認識している) 文字セットに依存 - します。MS-DOS の文字セットと MS-Windows の文字セットは違います。 - ":digraphs" を使って、利用可能な二重字を確認してください。 - -自分で二重字を定義することもできます。例: > - - :digraph a" ä - -CTRL-K a" を入力すると ä になります。文字コードを 10 進数で指定することもでき -ます。次のコマンドは上記のコマンドと同じです: > - - :digraph a" 228 - -二重字についての詳細は |digraphs| を参照してください。 -他にも、キーマップを使って特殊な文字を入力することもできます。詳しくは |45.5| -参照。 - -============================================================================== -*24.10* ノーマルモードコマンド - -挿入モードで使えるコマンドはそれほど多くありませんが、ノーマルモードにはたくさ -んのコマンドがあります。それらのコマンドを使うには <Esc> で挿入モードを抜けて、 -ノーマルモードコマンドを実行し、"i" または "a" で挿入モードに戻ってこなければ -なりません。 -もっと簡単な方法があります。CTRL-O {command} を使えばノーマルモードコマンドを -挿入モードの中で実行できます。例えば、次のコマンドでカーソル位置から行末まで削 -除できます: > - - CTRL-O D - -この方法で実行できるのは一つのコマンドだけです。ただし、レジスタやカウントの指 -定はできます。もう少し複雑な例: > - - CTRL-O "g3dw - -三つの単語を削除してレジスタ g に格納します。 - -============================================================================== - -次章: |usr_25.txt| テキストの整形 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_25.jax b/doc/usr_25.jax deleted file mode 100644 index b0931cf03..000000000 --- a/doc/usr_25.jax +++ /dev/null @@ -1,566 +0,0 @@ -*usr_25.txt* For Vim バージョン 7.3. Last change: 2007 May 11 - - VIM USER MANUAL - by Bram Moolenaar - - テキストの整形 - - -文章を一行に一文ずつ書くようなことはほとんどありません。この章では、テキストが -画面に収まるように整形する方法などを説明します。 -一行段落や表を編集するための便利な機能もあります。 - -|25.1| 行を改行する -|25.2| テキストの位置揃え -|25.3| インデントとタブ -|25.4| 長い行の扱い -|25.5| 表の編集 - -次章: |usr_26.txt| 繰り返し -前章: |usr_24.txt| 素早く入力する -目次: |usr_toc.txt| - -============================================================================== -*25.1* 行を改行する - -文章を快適に編集するための機能がいくつかあります。初期設定では行は自動的に改行 -されません。つまり自分で <Enter> を押す必要があります。プログラムを書くときは -その方が便利ですが、ドキュメントを書くときは少し不便です。文章が 70 桁の幅に収 -まるように自分で整形するのは大変でしょう。 -'textwidth' オプションを設定すると、行が自動的に改行されるようになります。例え -ば、30 桁の幅で文章を書きたい場合は次のように設定します: > - - :set textwidth=30 - -そして、テキストを入力します (上の数字はルーラーです): - - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a whi ~ - -次に "l" を入力すると一行が 30 桁の制限を超えるので、自動的に改行が挿入されま -す。その結果、次のようになります: - - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a ~ - whil ~ - -そのまま続けて文章の残りを入力しましょう: - - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a ~ - while. One time, I was stopped ~ - by the Fort Worth police, ~ - because my homework was too ~ - hard. True story. ~ - -自分で改行する必要はありません。改行は自動的に挿入されます。 - - Note: - 'wrap' オプションを使うと長い行を改行して表示できますが、実際に改行文 - 字が挿入されるわけではありません。 - - -再整形 ------- - -Vim はワープロではありません。ワープロなら、段落の最初の方で文字を削除すると、 -改行の位置が調整されますが、Vim は違います。つまり、一行目の "programming" を -削除すると、単にその行が短くなるだけです: - - 1 2 3 - 12345678901234567890123456789012345 - I taught for a ~ - while. One time, I was stopped ~ - by the Fort Worth police, ~ - because my homework was too ~ - hard. True story. ~ - -これはよくありません。"gq" オペレータを使って段落を整形しましょう。 -まず、ビジュアルモードを使ってやってみます。一行目に移動して次のように入力しま -す: > - - v4jgq - -"v" はビジュアルモードの開始、"4j" で段落の最後まで移動し、"gq" オペレータを実 -行します。結果: - - 1 2 3 - 12345678901234567890123456789012345 - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - -Note: 特定の書式に従った文章なら自動的に整形することもできます。 -|auto-format| 参照。 - -"gp" はオペレータなので、ビジュアルモード、カーソルモーション、テキストオブジェ -クト、の三つの方法で適用範囲を選択できます。 -上記の例は "gq4j" とすることもできます。これはコマンドは短くなりますが、行数を -数えないといけません。"}" というモーションコマンドを使えばもっと簡単です。これ -は段落の末尾に移動するコマンドです。"gq}" でカーソル位置から段落の末尾までが整 -形されます。 -テキストオブジェクトを使うともっと簡単にできます: > - - gqap - -"ap" は "a-paragraph" という意味です。(空行区切りの) 一つの段落が整形されます。 -カーソル位置より前の部分も範囲に入ります。 -段落が空行で区切られているなら、次のコマンドでファイル全体を整形できます: > - - gggqG - -"gg" でファイル先頭に移動し、"gqG" でファイル末尾まで整形します。 -注意: 段落が適切に区切られていない場合、それらの文章は一つにつながってしまいま -す。スペースや Tab 文字だけの行があったりするのはよくあるミスです。それは空白 -行です。空行ではありません。 - -整形できるのは単純なプレインテキストだけではありません。整形の設定については -|fo-table| を参照してください。ピリオドの後ろに挿入されるスペースの数を変更す -るには 'joinspaces' を参照してください。 -外部プログラムを使って整形することもできます。Vim の組み込みコマンドで正しく整 -形できないようなテキストを編集するのに便利です。'formatprg' オプション参照。 - -============================================================================== -*25.2* テキストの位置揃え - -テキストを中央揃えするには、次のコマンドを使います: > - - :{range}center [width] - -{range} は通常のコマンドライン範囲指定です。 [width] には中央揃えに使う行の幅 -を指定できます。 [width] を指定しなかった場合は 'textwidth' の設定が使われま -す。('textwidth' が 0 なら 80 が使われます) -例: > - - :1,5center 40 - -次のような結果になります: - - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - - -右端揃え --------- - -同様に、右端揃えするには ":right" コマンドを使います: > - - :1,5right 37 - -結果: - - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - -左端揃え --------- - -次のコマンドで左端揃えできます: > - - :{range}left [margin] - -":center" や ":right" と違い、":left" の引数に指定する値は行の幅ではありませ -ん。左マージンを指定します。省略した場合は、文章は左端にぴったり寄せられます -(マージンに 0 を指定したのと同じ)。5 を指定した場合は 5 つのスペースでインデン -トされます。例えば、次のように使います: > - - :1left 5 - :2,5left - -次のような結果になります: - - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - - -両端揃え --------- - -両端揃えするための組み込みコマンドはありません。しかし、そのためのマクロパッ -ケージが用意されています。パッケージを使うには、次のコマンドを実行します: > - - :runtime macros/justify.vim - -新しいビジュアルモードコマンド "_j" が定義されます。ビジュアルモードで範囲選択 -して "_j" を実行すればテキストを両端揃えできます。 -詳しい説明はスクリプトファイルを参照してください。この名前の上で "gf" を使えば -ファイルを開けます: $VIMRUNTIME/macros/justify.vim - -外部コマンドを使って整形することもできます。例: > - - :%!fmt - -============================================================================== -*25.3* インデントとタブ - -テキストをインデントすればその部分を目立たせることができます。例えばこのマニュ -アルでは、例文を示すときに 8 個のスペースまたは Tab 文字でインデントしていま -す。通常なら行頭で Tab キーを押せばインデントできます。例: - - the first line ~ - the second line ~ - -Tab キーを押してテキストを挿入、<Enter>、また Tab キーを押してテキストを挿入し -ます。 -'autoindent' オプションを設定すると、自動的にインデントできます: > - - :set autoindent - -新しい行を開始すると、直前の行と同じだけのインデントが挿入されます。上の例な -ら、<Enter> を押した後の Tab キーが必要なくなります。 - - -インデントを増やす ------------------- - -行のインデント量を増やすには ">" オペレータを使います。現在行のインデントを増 -やしたい場合は ">>" を使うと簡単です。 -インデントの増加量は 'shiftwidth' オプションで設定できます。初期設定は 8 です。 -例えば、">>" でスペース 4 つ分のインデントを増やしたい場合は次のように設定しま -す: > - - :set shiftwidth=4 - -上記例文の二行目で ">>" を使うと、次のようになります: - - the first line ~ - the second line ~ - -"4>>" は四つの行のインデントを増やすコマンドです。 - - -タブストップ ------------- - -インデントを 4 桁にしたい場合は 'shiftwidth' を 4 に設定します。しかしそれだけ -では、<Tab> を押したときのインデントの量はスペース 8 個分のままです。これを変 -更するには 'softtabstop' オプションを設定します: > - - :set softtabstop=4 - -これで、<Tab> キーがスペース 4 個分のインデントになります。既に 4 つスペースで -インデントされている場合は <Tab> 文字に置き換えられます (7 バイト節約)。(Tab -文字を使いたくない場合は 'expandtab' を設定してください。) - - Note: - 'tabstop' オプションを 4 に設定することもできますが、その設定で編集し - たファイルを 'tabstop' の初期設定 (8) で見ると見た目が崩れてしまいま - す。他のプログラムで印刷する場合もインデントが崩れてしまうかもしれませ - ん。したがって、'tabstop' は常に 8 のままにしておきましょう。それが標 - 準的な値です。 - - -TAB幅を変更する ---------------- - -tabstop が 3 で書かれたファイルを (tabstop が 8 の) Vim で開くと表示が崩れてし -まいます。'tabstop' を 3 に設定すれば表示を直すことができますが、ファイルを開 -くたびに設定を変更しなければなりません。 -ファイルの tabstop 幅を変更することができます。インデントが正しく表示されるよ -うに 'tabstop' を設定してから ":retab" コマンドを使います: > - - :set tabstop=3 - :retab 8 - -":retab" コマンドを使って 'tabstop' を 8 に変更しています。ただし、テキストの -見た目は変更されません。空白部分が Tab 文字とスペースに置き換えられます。その -状態でファイルを保存すれば、次からは設定を変更しなくてもインデントが正しく表示 -されます。 -注意: プログラムに対して ":retab" を使った場合、文字列定数の中の空白記号が変更 -されてしまうかもしれません。文字列定数の中では Tab 文字ではなく "\t" を使うよ -うにしましょう。 - -============================================================================== -*25.4* 長い行の扱い - -ウィンドウの幅に収まりきらないようなファイルを編集することがあると思います。そ -の場合、すべての行が画面に収まるように折り返して表示されます。 -'wrap' オプションをオフにすると、すべての行が一行で表示されます。長い行の画面 -に収まりきらない部分は表示されません。 -表示されていない部分にカーソルを動かすと、テキストがスクロールされ、その部分が -表示されます。ウィンドウの枠を右に動かすような感じです。 -初期設定では、GUI の水平スクロールバーは表示されません。表示したい場合は次のコ -マンドを使います: > - - :set guioptions+=b - -Vim ウィンドウの下部に水平スクロールバーが表示されます。 - -スクロールバーが使えない、または使いたくない場合は、次のコマンドでテキストをス -クロールしてください。カーソルは同じ位置にとどまりますが、画面外に出てしまうと -きは画面内に移動されます。 - - zh 右にスクロール - 4zh 右に 4 文字分スクロール - zH 右にウィンドウの半分だけスクロール - ze カーソル位置が右端になるように右スクロール - zl 左にスクロール - 4zl 左に 4 文字分スクロール - zL 左にウィンドウの半分だけスクロール - zs カーソル位置が左端になるように左スクロール - -例を使って説明します。カーソルは "which" の "w" にあります。上部の "current -window" はウィンドウに表示されている範囲を示しています。コマンド実行後の表示範 -囲を "window" で示します。 - - |<-- current window -->| - some long text, part of which is visible in the window ~ - ze |<-- window -->| - zH |<-- window -->| - 4zh |<-- window -->| - zh |<-- window -->| - zl |<-- window -->| - 4zl |<-- window -->| - zL |<-- window -->| - zs |<-- window -->| - - -折り返し無しの場合の移動 ------------------------- - -'wrap' がオフで、テキストが水平スクロールされているとき、次のコマンドで画面の -表示範囲を基準にして移動できます。ウィンドウの左右のテキストは無視されます。こ -れらのコマンドはテキストをスクロールしません: - - g0 行の右端に移動 - g^ 行の右端の最初の非空白文字に移動 - gm 行の中央に移動 - g$ 行の左端に移動 - - |<-- window -->| - some long text, part of which is visible ~ - g0 g^ gm g$ - - -禁則処理 *edit-no-break* --------- - -他のプログラムで使うテキストを編集する場合、一つの段落を改行無しで書かなければ -ならないことがあります。'nowrap' を使うと編集中の文全体を表示することができま -せん。'wrap' をオンにすると単語の途中で行が折り返されて読み難くなってしまいま -す。 -そのような場合は 'linebreak' オプションを使ってください。適切な場所で行が折り -返されるようになります。ファイルの内容は変更されません。 -'linebreak' がオフの状態では次のように表示されますが: - - +---------------------------------+ - |letter generation program for a b| - |ank. They wanted to send out a s| - |pecial, personalized letter to th| - |eir richest 1000 customers. Unfo| - |rtunately for the programmer, he | - +---------------------------------+ - -'linebreak' を設定すると: > - - :set linebreak - -次のように表示されます: - - +---------------------------------+ - |letter generation program for a | - |bank. They wanted to send out a | - |special, personalized letter to | - |their richest 1000 customers. | - |Unfortunately for the programmer,| - +---------------------------------+ - -関連オプション: - 'breakat' 折り返し可能な文字を指定する。 - 'showbreak' 折り返された行の先頭に表示される文字。 - 'textwidth' 0 に設定して段落が改行されないようにしてください。 - - -表示行単位の移動 ----------------- - -"j" と "k" で上下の行に移動できますが、長い行の上で使うと、一度に複数の表示行 -を移動することになります。 -画面上で一行だけ移動したい場合は "gj" と "gk" を使ってください。行が折り返され -ていないときは "j" と "k" と同じ動作をします。折り返されているときは、画面上の -一行だけ移動します。 -次のようなマップを定義しておくと便利かもしれません: > - - :map <Up> gk - :map <Down> gj - - -段落を一行につなげる --------------------- - -MS-Word のようなプログラムにテキストをコピーするとき、段落は一行につながってい -なければなりません。段落が空行で区切られているなら、次のコマンドでそれぞれの段 -落を一行につなげることができます: > - - :g/./,/^$/join - -すこし複雑ですね。分解して説明します: - - :g/./ 一文字以上の文字を含んでいる行を探す":global"コマンド - ,/^$/ 現在行(非空行)から空行までの範囲を指定 - join 指定された範囲の行を ":join" コマンドで一行につなげる - -30 桁で改行された次のようなテキストが: - - +----------------------------------+ - |A letter generation program | - |for a bank. They wanted to | - |send out a special, | - |personalized letter. | - | | - |To their richest 1000 | - |customers. Unfortunately for | - |the programmer, | - +----------------------------------+ - -二行にまとめられます: - - +----------------------------------+ - |A letter generation program for a | - |bank. They wanted to send out a s| - |pecial, personalized letter. | - |To their richest 1000 customers. | - |Unfortunately for the programmer, | - +----------------------------------+ - -Note: スペースや Tab 文字を含んでいる空白行 (空行ではない) で段落が区切られて -いる場合、上記のコマンドは機能しません。次のコマンドは空白行でも機能します: > - - :g/\S/,/^\s*$/join - -最後の段落を処理するには、ファイル末尾に空行または空白行が必要です。 - -============================================================================== -*25.5* 表の編集 - -次のような 4 列の表を編集していて: - - nice table test 1 test 2 test 3 ~ - input A 0.534 ~ - input B 0.913 ~ - -4 列目に数字を入力したいと思いました。2 行目に移動して "A" を使い、いくつかス -ペースとテキストを入力すればできます。 -このような編集のための特別なオプションがあります: > - - set virtualedit=all - -これを設定すると、文字が無い場所にもカーソルを移動できるようになります。これを -"virtual space" (仮想空白) と呼びます。この方法を使えば簡単に表を編集できます。 -検索を実行して 4 列目のヘッダに移動します: > - - /test 3 - -"j" を押すとカーソルが適切な場所に移動するので、そのまま "input A" の値を入力 -できます。"0.693" と入力します: - - nice table test 1 test 2 test 3 ~ - input A 0.534 0.693 ~ - input B 0.913 ~ - -テキストが無かった部分は空白で埋められます。"Bj" コマンドを使って次の行に移動 -しましょう。"B" で単語の先頭に移動し、"j" で次のフィールドに移動します。 - - Note: - 画面上のどの場所にでもカーソルを移動できます。行末を超えて移動すること - もできます。文字を挿入しない限り、スペースは挿入されません。 - - -列のコピー ----------- - -4 列目をコピーして "test 1" 列の前に追加します。次の手順でできます: -1. カーソルを列の左上隅に移動する。例: "/test 3"。 -2. CTRL-V を押して矩形選択開始。 -3. "2j" で二行下に移動。カーソルは仮想空白の上 ("input B" 行の "test 3" 列) -4. 右に移動して列全体を選択。列を区切るためのスペースも選択する。例えば "9l" - で移動する。 -5. "y" で選択範囲をヤンク。 -6. カーソルを "text 1" に移動。この場所に新しい列を挿入する。 -7. "P" を押す。 - -結果は次のようになります: - - nice table test 3 test 1 test 2 test 3 ~ - input A 0.693 0.534 0.693 ~ - input B 0.913 ~ - -"test 1" 列全体が右側に押し出されます。"test 3" 列のテキストが無い行も同様に移 -動していますね。 - -次のコマンドでカーソル移動を通常に戻せます: > - - :set virtualedit= - - -バーチャル置換モード --------------------- - -'virtualedit' の不便なところは感覚が狂ってしまうところです。カーソルを動かして -いるときに、カーソルが Tab 文字の上にあるのか、行末を越えた位置にあるのか、認 -識することができません。そこで「バーチャル置換モード」を使います。 -例えば、表の中で Tab 文字が使われているとします。その Tab 文字の上で "rx" を -使ってみます: - - inp 0.693 0.534 0.693 ~ - - | - rx | - V - - inpx0.693 0.534 0.693 ~ - -レイアウトが崩れてしまいました。こうならないように、"gr" コマンドを使います: - - inp 0.693 0.534 0.693 ~ - - | - grx | - V - - inpx 0.693 0.534 0.693 ~ - -"gr" コマンドで置換すると、置換した結果がスクリーン上で同じ幅になるように調整 -されます。足りない分はスペースか Tab 文字で埋められます。つまり上の例は、Tab -文字が "x" で置換され、残りの部分を埋めるように空白が追加されたのです。例では -Tab 文字が挿入されてます。 -複数の文字を置き換えたい場合は "R" コマンドの置換モード (|04.9|参照) を使いま -すが、それだとレイアウトが崩れて意図しない文字が置換されてしまいます: - - inp 0 0.534 0.693 ~ - - | - R0.786 | - V - - inp 0.78634 0.693 ~ - -"gR" コマンドのバーチャル置換モードを使いましょう。これならレイアウトは崩れま -せん: - - inp 0 0.534 0.693 ~ - - | - gR0.786 | - V - - inp 0.786 0.534 0.693 ~ - -============================================================================== - -次章: |usr_26.txt| 繰り返し - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_26.jax b/doc/usr_26.jax deleted file mode 100644 index ee70b4c9c..000000000 --- a/doc/usr_26.jax +++ /dev/null @@ -1,215 +0,0 @@ -*usr_26.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - 繰り返し - - -ほとんどの編集作業は手順が決まっています。同じ変更を繰り返したいと思うことはよ -くあります。この章では、変更を繰り返すための便利な方法をいくつか説明します。 - -|26.1| ビジュアルモードを使って繰り返す -|26.2| 加算と減算 -|26.3| 複数のファイルを変更する -|26.4| シェルスクリプトから Vim を使う - -次章: |usr_27.txt| 検索コマンドと正規表現 -前章: |usr_25.txt| テキストの整形 -目次: |usr_toc.txt| - -============================================================================== -*26.1* ビジュアルモードを使って繰り返す - -ビジュアルモードを使えば好きな範囲のテキストを変更できるのでとても便利です。選 -択範囲は強調表示されるので、変更される範囲が正しいかどうか確認できます。しか -し、何度も範囲選択するのは少し面倒です。"gv" コマンドを使えば同じ範囲を再選択 -できます。同じ範囲に対して別の変更を加えることができます。 -例えば、"2001" を "2002" に変更し、"2000" を "2001" に変更してみます: - - The financial results for 2001 are better ~ - than for 2000. The income increased by 50%, ~ - even though 2001 had more rain than 2000. ~ - 2000 2001 ~ - income 45,403 66,234 ~ - -まず "2001" を "2002" に変更します。ビジュアルモードでテキストを選択し、次のコ -マンドを実行します: > - - :s/2001/2002/g - -次に "gv" で同じ範囲を再選択します。カーソルの位置は気にしなくて大丈夫です。そ -して、":s/2000/2001/g" で二回目の変更を加えます。 -同じ方法で何度でも変更を繰り返せます。 - -============================================================================== -*26.2* 加算と減算 - -ある数字を変更し、それと同じ数だけ他の数字を変更したいような場合があります。例 -えば上の例ではすべての年に 1 を加えました。変更したいすべての年に対して置換コ -マンドを実行しなくても、CTRL-A を使って同じことができます。 -上記例文から、年を検索します: > - - /19[0-9][0-9]\|20[0-9][0-9]<Enter> - -そして CTRL-A を押すと、年が一つ増えます: - - The financial results for 2002 are better ~ - than for 2000. The income increased by 50%, ~ - even though 2001 had more rain than 2000. ~ - 2000 2001 ~ - income 45,403 66,234 ~ - -"n" で次の年を検索し、"." を押して CTRL-A を繰り返します ("." を押す方が簡単で -すよね)。"n" と "." を繰り返し、全ての年を更新します。 -ヒント: 'hlsearch' オプションを設定して検索にヒットした場所を確認できるように -すると、先の方まで見通せるので作業がはかどります。 - -加算する量を増やしたい場合は CTRL-A の前に数値を指定します。例えば、次のテキス -トで: - - 1. item four ~ - 2. item five ~ - 3. item six ~ - -カーソルを "1." のところに動かして次のように入力します: > - - 3 CTRL-A - -"1." が "4." に変わります。"." を使って同じ変更を繰り返せます。 - -もう一つ例を示します: - - 006 foo bar ~ - 007 foo bar ~ - -これらの数字に対して CTRL-A を使うと次のようになります: - - 007 foo bar ~ - 010 foo bar ~ - -7 + 1 = 10? これは、"007" の先頭が 0 で始まっているため、八進数と認識されてし -まったのです。この表記方法は C 言語などで使われています。先頭が 0 で始まってい -る数字を八進数として扱いたくない場合は、次のように設定してください: > - - :set nrformats-=octal - -CTRL-X コマンドを使うと同じ方法で減算できます。 - -============================================================================== -*26.3* 複数のファイルを変更する - -あるプログラムに "x_cnt" という変数があり、それを "x_counter" に変更したい場合 -を考えます。変数は複数の C ファイルで使われているので、すべてのファイルを変更 -しなければなりません。その方法を説明します。 -関連ファイルを引数リストに加えます: > - - :args *.c - -すべての C ファイルが検索され、一つ目のファイルが開きます。これで、すべてのファ -イルに対して置換コマンドを実行できます: > - - :argdo %s/\<x_cnt\>/x_counter/ge | update - -":argdo" コマンドの引数にはコマンドを指定できます。指定されたコマンドは引数リ -スト内のすべてのファイルに対して実行されます。 -"%s" はファイル全体を置換するコマンドです。"\<x_cnt\>" で "x_cnt" を検索してい -ます。"\<" と "\>" を使って単語全体がマッチするようにしています。つまり -"px_cnt" や "x_cnt2" は置換されません。 -置換コマンドに指定された "g" フラグは、一つの行で複数の "x_cnt" が見つかった場 -合に、すべての "x_cnt" を置換するための指定です。"e" フラグは "x_cnt" が見つか -らなかった場合でもエラーメッセージを表示しないための指定です。エラーが起こると -その場で ":argdo" が止まってしまいます。 -"|" はコマンドの区切りです。"update" コマンドを使って、変更があったときだけ -ファイルを保存しています。置換する "x_cnt" が見つからなければ保存は実行されま -せん。 - -他にも、すべてのウィンドウに対してコマンドを実行する ":windo" コマンド、すべて -のバッファに対してコマンドを実行する ":bufdo" コマンドがあります。バッファリス -トにはあなたの予想以上にファイルが入っているかもしれないので注意してください。 -":buffers" コマンド (or ":ls") で確認できます。 - -============================================================================== -*26.4* シェルスクリプトから Vim を使う - -例えば、たくさんのファイルがあって、"-person-" を "Jones" に置換して印刷する必 -要があるとします。どのように実行すればいいでしょう。すべてを手作業で実行するの -も一つの方法ですが、シェルスクリプトを書いて済ます方法もあります。 -スクリーンエディタとして Vim を使うとき、ノーマルモードコマンドを使えば簡単に -処理できます。しかし、バッチ処理したい場合は、ノーマルモードコマンドでは分かり -難くなってしまいますし、コマンドファイルにコメントも書けません。代わりに Ex -モードを使います。Ex モードのコマンドはバッチファイルを書くのに適しています。 -("EX コマンド" はコマンドライン (:) コマンドの別名です) -必要となる Ex コマンドは次のとおりです: > - - %s/-person-/Jones/g - write tempfile - quit - -これらのコマンドを "change.vim" に保存します。そして、Vim をバッチモードで起動 -します: > - - for file in *.txt; do - vim -e -s $file < change.vim - lpr -r tempfile - done - -for-done ループは間にある行を繰り返し実行するためのシェル構文です。繰り返すた -びに $file 変数に異なるファイル名が設定されます。 -二行目では、Vim を Ex モード (-e 引数) で起動して $file を開き、"change.vim" -からコマンドを読み込んでいます。-s 引数を指定して Vim をサイレントモードにして -いるので、":" プロンプトやその他のプロンプトは表示されません。 -"lpr -r tempfile" コマンドで出力結果の "tempfile" を印刷し、そのファイルを削除 -しています ("-r" 引数が削除指示)。 - - -標準入力からの読み込み ----------------------- - -Vim は標準入力からテキストを読み込めます。標準入力からはコマンドを読み込むのが -普通なので、そうでないことを Vim に伝えなくてはなりません。ファイルを指定する -場所に "-" 引数を指定してください。例: > - - ls | vim - - -"ls" コマンドの出力結果を、ファイルに保存せずに直接編集できます。 -標準入力からテキストを読み込む場合でも、"-S" 引数を使えば、スクリプトを読み込 -ませることができます。 > - - producer | vim -S change.vim - - - -ノーマルモードスクリプト ------------------------- - -ノーマルモードコマンドをスクリプトの中で使いたい場合は、次のようにすればできま -す: > - - vim -s script file.txt ... -< - Note: - "-s" 引数は "-e" の有無で違う意味になります。この例の場合は、"script" - をノーマルモードコマンドとして実行するという意味になります。"-e" といっ - しょに指定された場合はサイレントモードの指定になり、"-s" にファイルを - 指定することはできません。 - -"script" の中のコマンドは、実際に入力したのと同じように実行されます。改行は -<Enter> として解釈されるので注意してください。次の行へ移動するノーマルモードコ -マンドとして実行されます。 -スクリプトを作る方法はスクリプトファイルを開いてコマンドを入力するだけですが、 -コマンドの結果を自分で想像しなければならないので、少し難しい作業になります。 -実際に編集をしてみて、その操作手順を記録する方法もあります。次のコマンドを使い -ます: > - - vim -w script file.txt ... - -入力したすべてのキーが "script" に保存されます。多少のミスがあってもそのまま操 -作を続けて、後からスクリプトを編集できます。 -"-w" 引数は既存のスクリプトに追記します。したがって、スクリプトの記録を少しず -つ進めることができます。スクリプトをスクラッチから作成したい場合は "-W" 引数を -使ってください。既存のファイルが上書きされます。 - -============================================================================== - -次章: |usr_27.txt| 検索コマンドと正規表現 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_27.jax b/doc/usr_27.jax deleted file mode 100644 index 6451048b1..000000000 --- a/doc/usr_27.jax +++ /dev/null @@ -1,559 +0,0 @@ -*usr_27.txt* For Vim バージョン 7.3. Last change: 2010 Mar 28 - - VIM USER MANUAL - by Bram Moolenaar - - 検索コマンドと正規表現 - - -3 章で検索パターンについて簡単に説明しました |03.9|。Vim ではもっと複雑な検索 -もできます。この章では、よく使われる検索パターンについて説明します。詳細な仕様 -については |pattern| を参照してください。 - -|27.1| 大文字と小文字を区別しない -|27.2| ファイルの端で折り返す -|27.3| オフセット -|27.4| 繰り返しマッチ -|27.5| 選択肢 -|27.6| 文字範囲 -|27.7| 文字クラス -|27.8| 改行記号にマッチ -|27.9| 例 - -次章: |usr_28.txt| 折り畳み -前章: |usr_26.txt| 繰り返し -目次: |usr_toc.txt| - -============================================================================== -*27.1* 大文字と小文字を区別しない - -初期設定では大文字と小文字は区別されます。つまり "include" と "INCLUDE" と -"Include" は三つの別々の単語として扱われ、検索してもどれか一つにしかマッチしま -せん。 -'ignorecase' オプションをオンにしてみましょう: > - - :set ignorecase - -"include" を検索すると、"Include" にも "INCLUDE" にも "InClUDe" にもマッチしま -す。('hlsearch' オプションをオンにするとパターンにマッチした箇所を簡単に確認で -きます。) -次のコマンドでオプションをオフにできます: > - - :set noignorecase - -しかしまだ設定は変更せずに、そのまま "INCLUDE" を検索してみます。"include" を -検索したときとまったく同じテキストがマッチします。次に 'smartcase' オプション -をオンに設定してみます: > - - :set ignorecase smartcase - -パターンに大文字が含まれているときに限り、大文字と小文字が区別されるようになり -ます。これは、大文字を入力するのは大文字と小文字を区別したいときだけだろうとい -う考えに基づいています。スマートでしょ! -この二つのオプションを設定すると次のようにマッチします: - - パターン マッチ ~ - word word, Word, WORD, WoRd, etc. - Word Word - WORD WORD - WoRd WoRd - - -パターンの中で指定する ----------------------- - -ある特定のパターンの中でだけ大文字と小文字の無視したい場合は、パターンに "\c" -をつけます。大文字と小文字を区別したいときは "\C" を使います。"\c" と "\C" の -指定は 'ignorecase' と 'smartcase' の設定よりも優先されます。 - - パターン マッチ ~ - \Cword word - \CWord Word - \cword word, Word, WORD, WoRd, etc. - \cWord word, Word, WORD, WoRd, etc. - -"\c" と "\C" の大きな利点はそれがパターンに埋め込まれていることです。検索履歴 -からパターンを再利用したときなどに、同じ検索結果を期待できます。'ignorecase' -や 'smartcase' の設定は影響しません。 - - Note: - 検索パターンでの "\" の扱いは 'magic' オプションに依存します。この章で - は 'magic' がオンに設定されていることを前提にしています。それが標準設 - 定であり推奨設定です。'magic' を変更してしまうと今まで使えていた検索パ - ターンが使えなくなってしまうかもしれません。 - - Note: - 検索がなかなか終わらない場合は CTRL-C (Unix) または CTRL-Break (MS-DOS - と MS-Windows) で処理を中断できます。 - -============================================================================== -*27.2* ファイルの端で折り返す - -前方検索を実行すると現在のカーソル位置から処理が開始し、指定された文字列が検索 -されます。そしてファイルの末尾まで検索が進みます。ファイルの末尾まで検索しても -文字列が見つからない場合は、ファイルの先頭からカーソル位置に向かって検索が継続 -します。 -"n" コマンドを使って順々に検索を進めている場合もそのうち最初にヒットした場所に -戻ってきます。これに気が付かないと永遠に検索を続けることになってしまいます! -そのようなことがないように、次のようなメッセージが表示されます: - - 下まで検索したので上に戻ります ~ - -"?" コマンドを使って逆方向に検索している場合は次のメッセージが表示されます: - - 上まで検索したので下に戻ります ~ - -それでも気づかないことがあるかもしれません。'ruler' オプションをオンにすると確 -認しやすくなります: > - - :set ruler - -ウィンドウの右下隅 (ステータスラインがあるときはその中) にカーソルの位置が表示 -されます。次のような表示です: - - 101,29 84% ~ - -最初の数字はカーソルの行番号です。検索を開始した行番号を覚えておいて、検索が一 -周してないか確認しましょう。 - - -折り返さない ------------- - -検索を折り返さないようにするには次のコマンドを使います: > - - :set nowrapscan - -検索がファイルの末尾に達するとエラーメッセージが表示されます: - - E385: 下まで検索したけれど該当箇所はありません: forever ~ - -すべての箇所を検索したい場合は "gg" でファイルの先頭に移動してからこのメッセー -ジが表示されるまで検索を繰り返してください。 -"?" を使って逆方向に検索した場合は次のメッセージが表示されます: - - E384: 上まで検索したけれど該当箇所はありません: forever ~ - -============================================================================== -*27.3* オフセット - -通常、検索コマンドを実行すると、パターンにヒットした場所の先頭にカーソルが移動 -します。オフセットを指定することで別の場所に移動することができます。前方検索コ -マンドの "/" の場合、パターンの後ろに "/" とオフセット値を指定します: > - - /default/2 - -"default" というパターンが検索され、見つかった場所から二行下の行頭にカーソルが -移動します。例えばこのコマンドで今読んでいる段落を検索すると、一行目に -"default" が見つかるので、カーソルはその二行した (つまりこの行) に移動すること -になります。 - -オフセットに数値を指定すると、マッチした行から指定した行数だけ移動した行の行頭 -にカーソルが移動します。オフセット値には負の数も指定できます。正の数ならカーソ -ルが下に移動し、負の数なら上に移動します。 - - -文字オフセット --------------- - -"e" はマッチした文字列の末尾を示すオフセットです。マッチした文字列の末尾にカー -ソルが移動します。次のように使います: > - - /const/e - -"const" の "t" にカーソルが移動します。 -オフセットに数値を足すと、その場所からさらにカーソルを進めることができます。 -次のコマンドではマッチした文字列の後ろにカーソルが移動します: > - - /const/e+1 - -正の数ならカーソルが右に動き、負の数なら左に動きます。例: > - - /const/e-1 - -"const" の "s" にカーソルが移動します。 - -オフセットに "b" を指定すると、マッチした文字列の先頭に移動できます。これはオ -フセット指定無しの動作と同じなので単体では使い道はありません。数値を足したり引 -いたりしたい場合に使います。指定した数だけカーソルを前後に移動できます。例: > - - /const/b+2 - -マッチした文字列の先頭から二文字右にカーソルが移動します。つまり "n" の上です。 - - -繰り返し --------- - -直前に使った検索パターンを、別のオフセットを使って再検索したい場合は、パターン -指定を省略します: > - - /that - //e - -これは次の指定と同じです: > - - /that/e - -同じオフセットを使って再検索したい場合は: > - - / - -"n" と同じ動作になります。オフセット指定を無効にして再検索したい場合は次のよう -にします: > - - // - - -後方検索 --------- - -"?" コマンドでも同じようにオフセットを指定できますが、パターンとオフセットを区 -切るのは "/" ではなく "?" になります: > - - ?const?e-2 - -"b" と "e" の意味は同じです。"?" を使う場合でも方向は逆になりません。 - - -検索開始位置 ------------- - -検索は通常、現在のカーソル位置から開始します。オフセットを指定するとうまくいか -ないときがあります。例: > - - /const/-2 - -"const" を検索してその二行上に移動します。"n" を使って再検索すると、その場所か -ら検索が開始して同じ場所の "const" がヒットします。そして、再びオフセットが適 -用されて元の場所に戻ってきます。まったく移動できません。 -次の行に "const" があった場合はもっとおかしなことになります。検索を実行すると -次の行がヒットして、その二行上にカーソルが移動するので、カーソルが逆方向に移動 -してしまうのです。 - -文字オフセットを使った場合はそうなりません。オフセット指定の分だけ検索開始位置 -がずれるので、同じものが再びヒットすることはありません。 - -============================================================================== -*27.4* 繰り返しマッチ - -ある文字を任意の数だけマッチさせたい場合は "*" を使います: > - - /a* - -これは "a" でも "aa" でも "aaa" でもマッチします。0 回というのも任意の数に含ま -れるので "" (空文字列) もマッチします。 -"*" は直前の文字に対してだけ適用されます。"ab*" なら "a"、"ab"、"abb"、"abbb" -などがマッチします。単語を繰り返したい場合は、その単語をグループにまとめなけれ -ばなりません。"\(" と "\)" で単語を囲んでください。次のように使います: > - - /\(ab\)* - -"ab"、"abab"、"ababab"、"" などにマッチします。 - -空文字列にマッチさせたくない場合は "\+" を使います。直前の文字が一つ以上あると -きだけマッチするようになります: > - - /ab\+ - -"ab"、"abb"、"abbb" などにマッチします。"b" が後ろに付いていない "a" にはマッ -チしません。 - -0 または 1 つの文字にマッチさせたい場合は "\=" を使います。例: > - - /folders\= - -"folder" と "folders" がマッチします。 - - -回数指定 --------- - -特定の数だけ文字をマッチさせるには "\{n,m}" を使います。"n" と "m" に数字を指 -定します。直前の文字が "n" から "m" の数だけ連続している場合にマッチします。 -例: > - - /ab\{3,5} - -"abbb"、"abbbb"、"abbbbb" にマッチします。 -"n" を省略した場合は 0 が使われます。"m" が省略された場合は繰り返し回数は無制 -限になります。",m" を省略した場合は、正確に "n" 回の繰り返しにマッチします。 -例: - - pattern match count ~ - \{,4} 0, 1, 2, 3 or 4 - \{3,} 3, 4, 5, etc. - \{0,1} 0 or 1 (\= と同じ) - \{0,} 0 以上 (* と同じ) - \{1,} 1 以上 (\+ と同じ) - \{3} 3 - - -最短一致 --------- - -今まで説明した繰り返し指定は、可能な限りたくさんの文字列にマッチしようとしま -す。できるだけ少ない回数だけマッチさせるには "\{-n,m}" を使います。動作は -"\{n,m}" とほとんど同じですが、最短一致が使われます。 -例: > - - /ab\{-1,3} - -"abbbb" の中の "ab" だけがマッチします。一つの "b" にマッチするだけで条件を満 -たすので、二つ目以降の "b" には絶対にマッチしません。後ろに他のパターンが続い -ているなら最小回数以上の文字にもマッチします。 -"n" と "m" を省略した場合も同じルールが適用されます。両方の数字を省略して -"\{-}" とすることもできます。これは直前の文字が 0 回以上繰り返されている場合に -最小の数だけマッチします。単体で使った場合は常に 0 回にマッチします。他のパター -ンと組み合わせて使うと便利です。例: > - - /a.\{-}b - -"axbxb" の中の "axb" にマッチします。次のパターンを使った場合は: > - - /a.*b - -".*" は可能な限り多くの文字にマッチするので "axbxb" 全体がマッチします。 - -============================================================================== -*27.5* 選択肢 - -パターンの中で "or" (または) を指定するには "\|" を使います。例: > - - /foo\|bar - -"foo" と "bar" のどちらかがマッチします。複数の選択肢を指定できます: > - - /one\|two\|three - -"one"、"two"、"three" のどれかにマッチします。 -複数回マッチさせるには、全体を "\(" と "\)" で囲みます: > - - /\(foo\|bar\)\+ - -"foo"、"foobar"、"foofoo"、"barfoobar" などにマッチします。 -もう一つの例: > - - /end\(if\|while\|for\) - -"endif"、"endwhile"、"endfor" にマッチします。 - -"\&" も似たような条件指定です。指定された選択肢がすべて同じ場所でマッチします。 -マッチ結果としては最後の選択肢が使われます。例: > - - /forever\&... - -"forever" の "for" にマッチします。"fortuin" にはマッチしません。 - -============================================================================== -*27.6* 文字範囲 - -"a"、"b"、"c" のどれかにマッチさせるには "/a\|b\|c" が使えます。しかし "a" か -ら "z" までの文字をマッチさせようとするとパターンが長くなってしまいます。簡単 -な方法があります: > - - /[a-z] - -[] は一つの文字にマッチします。マッチさせたい文字を [] の中に指定します。次の -ようにして文字を一つずつ指定することもできます: > - - /[0123456789abcdef] - -指定された文字の中から一つがマッチします。文字が連続している場合は文字範囲を指 -定できます。例えば "0-3" は "0123" という意味です。"w-z" は "wxyz" という意味 -になります。上記の例は次のように短くできます: > - - /[0-9a-f] - -文字 "-" 自体をマッチさせたい場合は [] の中の一番最初か最後に書いてください。 -[] の中では以下の特殊文字が使えます (これらは [] の中でなくても使えます): - - \e <Esc> - \t <Tab> - \r <CR> - \b <BS> - -[] の中では他にも特殊な指定方法が使えます。詳細は |/[]| を参照してください。 - - -文字範囲の補集合 ----------------- - -マッチして欲しくない文字を指定したい場合は、文字範囲の先頭に "^" を指定します。 -すると、指定した文字以外の文字がマッチするようになります。例: > - - /"[^"]*" -< - " ダブルクオート - [^"] ダブルクオート以外の文字が - * 可能な限りたくさん - " ダブルクオート - -"foo" や "3!x" がマッチします (ダブルクオートもマッチに含まれる)。 - - -定義済み文字範囲 ----------------- - -一般的な文字範囲はあらかじめ定義されています。 -例: > - - /\a - -アルファベット文字が検索されます。これは "/[a-zA-Z]" と同じです。他にも次のよ -うなものがあります: - - item matches equivalent ~ - \d 数字 [0-9] - \D 数字以外 [^0-9] - \x 16進数の数字 [0-9a-fA-F] - \X 16進数の数字以外 [^0-9a-fA-F] - \s 空白文字 [ ] (<Tab>か<Space>) - \S 空白文字以外 [^ ] (<Tab>か<Space>以外) - \l 小文字アルファベット [a-z] - \L 小文字アルファベット以外 [^a-z] - \u 大文字アルファベット [A-Z] - \U 大文字アルファベット以外 [^A-Z] - - Note: - 定義済み文字範囲は普通の文字範囲よりも処理が高速です。 - これらのアイテムは [] の中では指定できません。つまり "[\d\l]" と書いた - としても数字と小文字にはマッチしません。"\(\d\|\l\)" を使ってください。 - -定義済み文字範囲の一覧は |/\s| を参照してください。 - -============================================================================== -*27.7* 文字クラス - -文字範囲は特定の文字のセットにマッチします。文字クラスも似たようなものですが、 -検索パターンを変更せずに文字のセットを変更できるという違いがあります。 -例えば、次のパターンを検索します: > - - /\f\+ - -"\f" はファイル名に使える文字を表します。つまりこのパターンはファイル名として -使える文字列にマッチします。 -どの文字がファイル名として使えるかはシステムによって異なります。MS-Windows で -は "\" が使えますが Unix では使えません。これは 'isfname' オプションで指定され -ています。Unix の初期設定: > - - :set isfname - isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,= - -他のシステムでは初期設定が変わります。ファイル名にマッチさせたいときに "\f" を -使えば、そのパターンはいろいろなシステムで使えます。 - - Note: - Unix では空白などのどんな文字でもファイル名に使えます。'isfname' にそ - れらの文字を設定するのは理論的には正しいことです。しかしその場合、テキ - ストの中からファイル名を切り出すのが困難になってしまいます。したがっ - て、'isfname' の初期設定にはすべての文字は含まれていません。 - -次のような文字クラスがあります: - - item matches option ~ - \i 識別子に使える文字 'isident' - \I \iから数字を抜いたもの - \k キーワードとなる文字 'iskeyword' - \K \kから数字を抜いたもの - \p 印刷可能文字 'isprint' - \P \pから数字を抜いたもの - \f ファイル名に使える文字 'isfname' - \F \fから数字を抜いたもの - -============================================================================== -*27.8* 改行記号にマッチ - -改行を含んだパターンを検索することができます。改行の位置は明示的に指定する必要 -があります。今までに説明したパターンアイテムはどれも改行にマッチしません。 -改行の場所を指定するには "\n" を使います: > - - /the\nword - -行末が "the" で終わり、次の行の行頭が "word" になっている行がマッチします。 -"the word" にもマッチさせたい場合は、スペースと改行の両方をマッチさせる必要が -あります。それには "\_s" を使います: > - - /the\_sword - -間に空白をいくつでも挟めるようにするには: > - - /the\_s\+word - -これは、行末が "the " で終わり、次の行の行頭が " word" で始まっているよう -な場所にもマッチします。 - -"\s" は空白にマッチします。"\_s" は空白と改行にマッチします。 -同様に、"\a" はアルファベットにマッチし、"\_a" はアルファベットと改行にマッチ -します。他の文字クラスや文字範囲も同様に、"_" を付けることによって改行にもマッ -チするようになります。 - -他の多くのパターンアイテムも "\_" を付けることによって改行にマッチさせることが -できます。例えば、"\_." は改行を含めたすべての文字にマッチします。 - - Note: - "\_.*" はファイル末尾までのすべての文字がマッチします。検索コマンドの - 動作が遅くなるかもしれないので注意してください。 - -"\_[]" を使うと文字範囲にも改行を追加できます: > - - /"\_[^"]*" - -ダブルクオートで囲まれたテキストが検索されます。間には改行も含むことができま -す。 - -============================================================================== -*27.9* 例 - -便利そうな検索パターンをいくつか説明します。今までに説明したパターンをどのよう -に使えばいいかを示します。 - - -カリフォルニア州のナンバープレートを探す ----------------------------------------- - -"1MGU103" という番号を検索してみます。これは一つの数字、三つの大文字アルファ -ベット、三つの数字、から成っています。そのままパターンに置き換えてみます: > - - /\d\u\u\u\d\d\d - -同じものが並んでいる部分は回数指定に置き換えることができます: > - - /\d\u\{3}\d\{3} - -[] 指定を使うこともできます: > - - /[0-9][A-Z]\{3}[0-9]\{3} - -あなたならどれを使いますか? どれでも覚えやすいものを使ってください。簡単に覚え -られる方法を使う方がそうでないものを頑張って覚えるよりずっと効率がよくなりま -す。最後の例は他より長くて実行速度も遅いので、どれでも覚えられるという場合は選 -択肢から外してください。 - - -識別子を見つける ----------------- - -C 言語 (などのほとんどの言語) では、識別子は英文字で始まってその後に英数字が続 -きます。アンダースコアも使えるかもしれません。次のパターンでそのような文字を検 -索できます: > - - /\<\h\w*\> - -"\<" と "\>" は単語全体をマッチさせるための指定です。"\h" は "[A-Za-z_]" と同 -じ意味で、"\w" は "[0-9A-Za-z_]" と同じ意味になります。 - - Note: - "\<" と "\>" の動作は 'iskeyword' オプションに依存します。例えば "-" - が含まれている場合、上記パターンは "ident-" にマッチしません。次のパ - ターンを使ってください: > - - /\w\@<!\h\w*\w\@! -< - 識別子の前後の文字が "\w" にマッチしないかどうかをチェックしています。 - |/\@<!| と |/\@!| 参照。 - -============================================================================== - -次章: |usr_28.txt| 折り畳み - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_28.jax b/doc/usr_28.jax deleted file mode 100644 index 0aeb32b5c..000000000 --- a/doc/usr_28.jax +++ /dev/null @@ -1,423 +0,0 @@ -*usr_28.txt* For Vim バージョン 7.3. Last change: 2008 Jun 14 - - VIM USER MANUAL - by Bram Moolenaar - - 折り畳み - - -構造化されたテキストはいくつかのセクションから構成され、セクションはさらにサブ -セクションに分かれています。折り畳みを使うとセクションを一行で表示できます。折 -り畳まれた行にはセクションの概要が表示されます。この章では折り畳みの使い方を説 -明します。 - -|28.1| 折り畳みとは -|28.2| 手動で折り畳む -|28.3| 折り畳みを使って作業する -|28.4| 折り畳みの保存と復元 -|28.5| インデントで折り畳む -|28.6| マーカーで折り畳む -|28.7| 構文で折り畳む -|28.8| スクリプトで折り畳む -|28.9| 変更のない行を折り畳む -|28.10| どれを使えばいいの? - -次章: |usr_29.txt| プログラムの中を移動する -前章: |usr_27.txt| 検索コマンドと正規表現 -目次: |usr_toc.txt| - -============================================================================== -*28.1* 折り畳みとは - -折り畳みとは、バッファ中の複数の行を画面上で一行に表示するための機能です。紙を -折り畳んで短くするような感じです。 - - +------------------------+ - | line 1 | - | line 2 | - | line 3 | - |_______________________ | - \ \ - \________________________\ - / folded lines / - /________________________/ - | line 12 | - | line 13 | - | line 14 | - +------------------------+ - -バッファ内のテキストが消えるわけではありません。折り畳みが影響するのは画面の表 -示だけです。 - -折り畳みを使うと文章構成を把握するのが簡単になります。折り畳まれたセクションは -一行で表示され、その行にはセクションの概要が表示されます。 - -============================================================================== -*28.2* 手動で折り畳む - -実際に試してみましょう。どこかの段落にカーソルを動かして次のように入力します: -> - zfap - -段落が、ハイライトされた一行に置き換わります。それが折り畳みです。|zf| はオペ -レータです。|ap| はテキストオブジェクトによる範囲指定です。|zf| はどのカーソル -移動コマンドとも組み合わせることができます。カーソルが移動した範囲が折り畳みの -対象になります。|zf| はビジュアルモードでも使えます。 - -再びテキストを表示するには、次のコマンドで折り畳みを開きます: > - - zo - -次のコマンドで折り畳みを閉じることができます: > - - zc - -折り畳み関連のコマンドはすべて "z" で始まります。この文字は、紙を折り畳んで横 -から見た図に見えますよね。"z" の後ろにはコマンドが連想しやすいような文字が割り -当てられています。 - - zf 折り畳む (Fold) - zo 折り畳みを開く (Open) - zc 折り畳みを閉じる (Close) - -折り畳みは入れ子にできます。折り畳まれた行を含んだ範囲をさらに折り畳むことがで -きます。例えば、このセクションの段落をそれぞれ折り畳み、そして、この章のセク -ション全体を折り畳むということができます。実際に試してください。折り畳みを開い -たとき、その中にある折り畳みは、閉じたときと同じ開閉状態のままになっています。 - -いくつかの折り畳みを作ったときに、すべての折り畳みを開きたくなった場合、それぞ -れの折り畳みを "zo" で開いていくこともできますが、次のコマンドでもっと簡単にで -きます: > - - zr - -折り畳みが減少 (Reduce) します。その逆は "zm" です: > - - zm - -折り畳みが増加 (More) します。"zr" と "zm" は入れ子になった折り畳みを一階層ず -つ開閉できます。 - -入れ子になった折り畳みをいっぺんに開きたい場合は次のコマンドを使います: > - - zR - -すべての折り畳みが開くまで、折り畳みが減少 (Reduce) します。すべての折り畳みを -閉じるには: > - - zM - -折り畳みが次々と (More and More) 閉じます。 - -|zn| コマンドで折り畳みを無効にできます。無効になった折り畳みは |zN| で元に戻 -ります。|zi| で無効と有効を交互に切り替えられます。次のように使うと便利です: -- ファイルの構造を確認するために折り畳みを作成する -- 作業したい場所に移動する -- |zi| で折り畳みを無効にして編集作業をする -- |zi| で折り畳みを有効にして別の場所に移動する - -手作業で折り畳みを作成するための詳しい説明はリファレンスマニュアルを参照してく -ださい: |fold-manual| - -============================================================================== -*28.3* 折り畳みを使って作業する - -折り畳みが閉じているとき、"j" や "k" などのコマンドでその上を移動できます。閉 -じた折り畳みは一行の空行のように扱われます。つまり折り畳まれたテキストの上を素 -早く移動できます。 - -折り畳まれたテキストは、それが一つの行であるかのように、ヤンクしたり削除したり -できます。これは例えばプログラムの関数を並べ替えたりするときに便利です。まず -'foldmethod' を正しく設定し、それぞれの関数が適切に折り畳まれるようにします。 -そして、"dd" で関数を削除し、カーソルを移動して、"p" でプットします。関数の一 -部が折り畳みからはみ出している場合はビジュアルモードを使います: -- 移動させたい範囲の最初の行に移動 -- "V" でビジュアルモードを開始 -- 移動させたい範囲の最後の行に移動 -- "d" で選択範囲を削除 -- カーソルを移動して、"p" でテキストをプットする - -折り畳みを設定した場所 (つまり |zo| コマンドが機能する場所) を覚えておくのは大 -変です。次のコマンドで折り畳みの場所を確認できます: > - - :set foldcolumn=4 - -ウィンドウの左側に折り畳みの場所が表示されます。閉じた折り畳みは "+" で表示さ -れます。開いた折り畳みは、一行目が "-" で表示され、それ以降は "|" で表示されま -す。 - -マウスで "+" の部分をクリックすると折り畳みが開きます。"-" や "|" の部分をク -リックすると折り畳みが閉じます。 - -現在行の折り畳みをすべて開くには |zO| を使います。 -現在行の折り畳みをすべて閉じるには |zC| を使います。 -現在行の折り畳みを削除するには |zd| を使います。 -現在行の折り畳みをすべて削除するには |zD| を使います。 - -挿入モードでは現在行の折り畳みは絶対に閉じません。入力した文字は必ず表示されま -す。 - -カーソルをジャンプさせたり左右に動かしたりしたとき、折り畳みは自動的に開きま -す。例えば "0" コマンドを使うと現在行の折り畳みが開きます ('foldopen' に "hor" -が含まれている場合のみ。初期設定では含まれています)。どのコマンドを使うと折り -畳みが開くかは 'foldopen' オプションで設定できます。カーソルが乗っている行の折 -り畳みを常に開いておきたい場合は次のように設定します: > - - :set foldopen=all - -注意: 閉じた折り畳みの上に移動することはできなくなります。この設定を一時的に使 -い、元に戻したくなったら次のようにします: > - - :set foldopen& - -折り畳みを自動的に閉じたい場合は次のようにします: > - - :set foldclose=all - -カーソルが乗っていないすべての折り畳みに 'foldlevel' が適用されます。このよう -な動作は好き嫌いがあるので実際に試してみてください。折り畳みを増加させたい場合 -は |zm| を、減少させたい場合は |zr| を使ってください。 - -折り畳みはウィンドウローカルな設定です。同じファイルを二つのウィンドウで表示し -て、片方では折り畳みを使い、もう片方では普通に表示するということができます。あ -るいは、片方ですべての折り畳みを閉じ、もう片方ですべての折り畳みを開くこともで -きます。 - -============================================================================== -*28.4* 折り畳みの保存と復元 - -ファイルを破棄すると折り畳みの情報は失われてしまいます。後で同じファイルを開い -たとき、折り畳みの開閉状態は初期状態に戻っています。手動で作成した折り畳みは失 -われます。折り畳みを保存するには |:mkview| コマンドを使います: > - - :mkview - -ファイルの表示に関する設定が保存されます。保存される情報の種類は 'viewoptions' -オプションで設定できます。 -後で同じファイルを開いたときに保存したビューを復元できます: > - - :loadview - -一つのファイルにつき 10 個までのビューを保存できます。例えば、現在の設定を 3 -番に保存して 2 番の設定をロードするには次のようにします: > - - :mkview 3 - :loadview 2 - -Note: 行を挿入したり削除したりすると保存していたビューが使えなくなるかもしれま -せん。ビューの保存場所は 'viewdir' オプションで決まります。必要な場合は自分で -ビューを削除してください。 - -============================================================================== -*28.5* インデントで折り畳む - -|zf| を使って折り畳みを定義するのは大変です。テキストが階層的にインデントされ -ている場合は、それを使って折り畳むことができます。インデントの深さにしたがって -折り畳みが作成され、大きくインデントされた部分は折り畳みが入れ子になります。こ -の方法は多くのプログラミング言語で使うことができます。 - -'foldmethod' オプションを次のように設定してください: > - - :set foldmethod=indent - -|zm| や |zr| を使って折り畳みを増減できるようになりました。以下の例文を使うと -簡単に確認できます: - -この行はインデントされていない - この行は一段インデントされている - この行は二段インデントされている - この行は二段インデントされている - この行は一段インデントされている -この行はインデントされていない - この行は一段インデントされている - この行は一段インデントされている - -Note: インデントの量と折り畳みの深さの対応は 'shiftwidth' オプションで決まりま -す。'shiftwidth' の幅を単位としてインデントが深くなると折り畳みが深くなります。 -これを折り畳みレベルと呼びます。 - -|zr| や |zm| コマンドを使ったとき、実際には 'foldlevel' の値を増減させているの -です。自分で設定することもできます: > - - :set foldlevel=3 - -'shiftwidth' の幅を単位として、インデントが三段より深い階層の折り畳みが閉じま -す。設定した値より深い階層の折り畳みが閉じる仕組みです。'foldlevel' を 0 に設 -定するとすべての折り畳みが閉じます。|zM| を使うと 'foldlevel' が 0 に設定され -ます。|zR| を使うと 'foldlevel' がファイル内の最も深い折り畳みレベルに設定され -ます。 - -つまり、折り畳みを開閉する方法は二つあります -(A) 折り畳みレベルを設定する方法。 - この方法は、テキストを "ズームアウト" して文章の構成を眺め、カーソルを動か - し、テキストに "ズームイン" するような使い方ができます。 - -(B) |zo| や |zc| を使って個々の折り畳みを開閉する方法。 - 他の折り畳みは閉じたままで、必要な折り畳みだけを開くことができます。 - -二つの方法を組み合わせることもできます。|zm| で全体的に折り畳みを閉じてから -|zo| で特定の折り畳みだけを開く。あるいは、|zR| でですべての折り畳みを開いてか -ら |zc| で特定の折り畳みを閉じるなど。 - -'foldmethod' が "indent" に設定されている場合は手動で折り畳みを定義できません。 -インデントと折り畳みレベルの関係を保つためです。 - -インデントによる折り畳みの詳しい説明はリファレンスマニュアルを参照してくださ -い: |fold-indent| - -============================================================================== -*28.6* マーカーで折り畳む - -テキストにマーカーを書いて、折り畳みの始点と終点を指定できます。この方法を使う -と折り畳みの範囲を明示的に指定できます。ただし、テキストに変更を加える必要があ -ります。 - -次のように設定してください: > - - :set foldmethod=marker - -C 言語を使った例文: - - /* foobar () {{{ */ - int foobar() - { - /* return a value {{{ */ - return 42; - /* }}} */ - } - /* }}} */ - -マーカーの直前に書かれたテキストが折り畳まれた行に表示されるので、折り畳まれた -テキストがどのような内容なのかを知ることができます。 - -テキストを移動したときなどにマーカーの対応がずれてしまうと面倒です。番号付き -マーカーを使うと手間が省けます。例: - - /* global variables {{{1 */ - int varA, varB; - - /* functions {{{1 */ - /* funcA() {{{2 */ - void funcA() {} - - /* funcB() {{{2 */ - void funcB() {} - /* }}}1 */ - -番号付きマーカーを書いた場所から指定レベルの折り畳みが開始します。指定レベルよ -り高いレベルの折り畳みをその場所で区切るという効果もあります。番号付きマーカー -は開始マーカーを指定するだけで折り畳みを定義できます。折り畳みを明示的に止めた -い場合は終了マーカーを設定する必要があります。 - -マーカーによる折り畳みの詳しい説明はリファレンスマニュアルを参照してください: -|fold-marker| - -============================================================================== -*28.7* 構文で折り畳む - -ファイルを表示するとき、ファイルの種類に応じた構文ファイルが使われます。構文 -ファイルにはファイルをカラー表示するための定義が書かれています。例えばこのヘル -プファイルは "help" 構文ファイルを使ってカラー表示されています (カラー端末を -使っているなら)。 -構文ファイルで構文を定義するときに "fold" 属性を指定して折り畳み領域を定義する -ことができます。構文ファイルを書くのは大変ですが、一度作ってしまえば、後は自動 -的に折り畳みが作成されるようになります。 -自分で構文ファイルを作成することはほとんどないと思うので、詳しい説明は省きま -す。折り畳みを開いたり閉じたりする方法は他と変わりません。ファイルを開くと自動 -的に折り畳みが作成されます。 - -構文による折り畳みの詳しい説明はリファレンスマニュアルを参照してください: -|fold-syntax| - -============================================================================== -*28.8* スクリプトで折り畳む - -これはインデントによる折り畳みと似ていますが、インデントではなくユーザーが定義 -した関数を使って折り畳みレベルを計算します。テキストの内容から折り畳みレベルを -判断するようなことができます。例えば、メールでは引用したテキストの前に ">" を -付けます。それを折り畳むには次のようにします: > - - :set foldmethod=expr - :set foldexpr=strlen(substitute(substitute(getline(v:lnum),'\\s','',\"g\"),'[^>].*','','')) - -次のようなテキストが折り畳まれます。試してみてください: - -> 相手が書いた文章 -> 相手が書いた文章 -> > 相手が引用した私の文章 -> > 相手が引用した私の文章 - -上記の 'foldexpr' の設定を説明します (呼び出しの深い順番): - getline(v:lnum) 現在行を取得 - substitute(...,'\\s','','g') 行から空白を削除 - substitute(...,'[^>].*','','') 先頭の'>'以降を全て削除 - strlen(...) 文字の長さ('>'の数)を数える - -Note: ":set" コマンドでは、空白とダブルクオートとバックスラッシュのすべてに対 -してバックスラッシュを前置する必要があります。よくわからないときは: > - - :set foldexpr - -このコマンドで実際に設定された値を確認してください。複雑な式を書いていてそれを -修正したい場合は、コマンドライン補完を使ってください: > - - :set foldexpr=<Tab> -< -<Tab> は実際の Tab キーです。現在の設定値が入力されるので、それを編集できます。 - -複雑な式を使いたい場合はその処理を関数にして、'foldexpr' からはその関数を呼ぶ -ように設定してください。 - -スクリプトにより折り畳みの詳しい説明はリファレンスマニュアルを参照してください: -|fold-expr| - -============================================================================== -*28.9* 変更のない行を折り畳む - -'diff' オプションと合わせて使うと便利です。|vimdiff| コマンドを使ったときもこ -の設定が適用されます。例: > - - :setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1 - -同じファイルの別バージョンを表示しているすべてのウィンドウでこの設定を実行して -ください。同じ部分は折り畳まれ、違いのある行だけが表示されるようになります。 - -詳細は |fold-diff| 参照。 - -============================================================================== -*28.10* どれ使えばいいの? - -いろんな方法があるのでどれを使えばいいか悩んでしまいますね。残念ながら完璧な答 -えはありません。いくつかヒントを示します。 - -編集したい言語の構文ファイルが折り畳みに対応している場合は、それを使うのがおそ -らくベストです。あるいは自分で書いてみるのもいいかもしれません。構文ファイルの -作成には検索パターンの詳しい知識が必要です。簡単な仕事ではありませんが、それが -動作するようになれば、手動で折り畳みを定義する必要がなくなります。 - -テキストのフォーマットが不定な場合は手動で折り畳みを定義してください。 -|:mkview| を使えば折り畳みを保存したり復元したりできます。 - -マーカーを使う方法はファイルにマーカーを書き込む必要があります。他の人とファイ -ルを共有したり、社内のコーディング規約に従う必要がある場合は使えないかもしれま -せん。 -マーカーの利点は折り畳みを明示的に設置できることです。折り畳みをカット&ペース -トしたときに前後の不要な行が変更されたりしません。折り畳まれた行に表示されるコ -メントを指定することもできます。 - -インデントによる折り畳みはたいていのファイルで機能しますが、うまく機能しない場 -合もあります。他の方法が使えない場合に使ってください。しかしアウトラインを表示 -する方法としては非常に便利です。'shiftwidth' の幅ずつインデントを付けて折り畳 -みレベルを指定します。 - -スクリプトを使った方法はほとんどの構造化されたテキストを折り畳むことができま -す。設定方法もシンプルです。折り畳みの開始と終了を認識するのが容易な場合は特に -簡単です。 -この方法で折り畳みを定義したときに思ったとおりの折り畳みが作成されなかった場合 -は "manual" に切り替えてみてください。設定を変更しても折り畳みは削除されないの -で、そのまま手動で折り畳みを削除したり追加したりできます。 - -============================================================================== - -次章: |usr_29.txt| プログラムの中を移動する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_29.jax b/doc/usr_29.jax deleted file mode 100644 index 4be28cc0f..000000000 --- a/doc/usr_29.jax +++ /dev/null @@ -1,616 +0,0 @@ -*usr_29.txt* For Vim バージョン 7.3. Last change: 2008 Jun 28 - - VIM USER MANUAL - by Bram Moolenaar - - プログラムの中を移動する - - -Vim の作者はプログラマです。当然、プログラムを書くための機能が Vim にはたくさ -んあります。この章では、識別子が定義された場所、あるいは使われている場所にジャ -ンプしたり、その定義を別のウィンドウでプレビューしたりする方法を説明します。プ -ログラミング関連の機能は次章でも説明します。 - -|29.1| タグを使う -|29.2| プレビューウィンドウ -|29.3| プログラムの中を移動する -|29.4| グローバル識別子を検索する -|29.5| ローカル識別子を検索する - -次章: |usr_30.txt| プログラムの編集 -前章: |usr_28.txt| 折り畳み -目次: |usr_toc.txt| - -============================================================================== -*29.1* タグを使う - -タグとは、識別子が定義された場所のことです。例えば C や C++ の関数定義がそうで -す。タグの一覧はタグファイルに保存されます。Vim はタグファイルに対応しており、 -タグ、つまり識別子の定義場所に直接ジャンプできます。 -カレントディレクトリのすべての C ファイルからタグを生成するには、次のコマンド -を使います: > - - ctags *.c - -"ctags" は Vim に付属してません。ほとんどの Unix システムには最初からインス -トールされています。持っていない場合は Exuberant ctags を使ってください: - - http://ctags.sf.net ~ - -Vim のコマンドラインから次のコマンドを実行すると関数定義にジャンプできます: > - - :tag startlist - -"startlist" 関数が検索されます。他のファイルで定義されていても検索可能です。 -CTRL-] コマンドを使うとカーソルの下の単語をタグとみなしてジャンプできます。こ -れは複雑な C コードの探索を簡単にしてくれます。例えば、"write_block" 関数の中 -で "write_line" の呼び出しを見つけたとき、その関数の動作を知りたかったら、 -"write_line" にカーソルを合わせて CTRL-] を押せば、その関数の定義にジャンプで -きます。 -"write_line" の中で "write_char" が呼ばれていたら、その関数の動作も調べる必要 -があります。"write_char" にカーソルを合わせて CTRL-] を押しましょう。これ -で "write_char" の定義に移動できました。 - - +-------------------------------------+ - |void write_block(char **s; int cnt) | - |{ | - | int i; | - | for (i = 0; i < cnt; ++i) | - | write_line(s[i]); | - |} | | - +-----------|-------------------------+ - | - CTRL-] | - | +----------------------------+ - +--> |void write_line(char *s) | - |{ | - | while (*s != 0) | - | write_char(*s++); | - |} | | - +--------|-------------------+ - | - CTRL-] | - | +------------------------------------+ - +--> |void write_char(char c) | - |{ | - | putchar((int)(unsigned char)c); | - |} | - +------------------------------------+ - -":tags" コマンドで移動経路を確認できます: - - :tags - # TO tag FROM line in file/text ~ - 1 1 write_line 8 write_block.c ~ - 2 1 write_char 7 write_line.c ~ - > ~ - -では元の場所に戻りましょう。CTRL-T で直前のタグに戻れます。上の例であれば、 -"write_line" 関数の中の "write_char" の呼び出しに戻ることになります。 -このコマンドはカウント指定を付けてジャンプする回数を指定できます。前方にジャン -プして、そして戻ってくることができましたね。もう一度前方に移動してみましょう。 -次のコマンドでタグリストの前方に移動できます: > - - :tag - -コマンドの前にカウント指定を付けてジャンプする回数を指定できます。例えば -":3tag" のように使います。CTRL-T も同様に回数指定できます。 -このように、CTRL-] をで呼び出しをたどり、CTRL-T でさかのぼることができます。 -":tags" コマンドで現在地を確認できます。 - - -ウィンドウを分割する --------------------- - -":tag" コマンドはカレントウィンドウを使ってジャンプ先のファイルを表示します。 -しかし現在の関数とジャンプ先の関数を同時に表示したいこともあると思います。 -":split" コマンドでウィンドウを分割してから ":tag" コマンドを使うという方法も -ありますが、専用の短縮コマンドが用意されています: > - - :stag tagname - -カーソルの下の単語にタグジャンプするときにウィンドウを分割したい場合は次のコマ -ンドを使います: > - - CTRL-W ] - -カウント指定を付けて新しいウィンドウの高さを指定できます。 - - -複数のタグファイルを使う ------------------------- - -ファイルが複数のディレクトリに分れている場合、ディレクトリ毎にタグファイルを作 -ることもできますが、その方法だとタグファイルと同じディレクトリのファイルにしか -ジャンプできません。 -タグファイルが複数ある場合は 'tags' オプションを設定して、関連するすべてのタグ -ファイルが検索されるようにしてください。例: > - - :set tags=./tags,./../tags,./*/tags - -カレントファイルと同じディレクトリ、その一つ上のディレクトリ、すべてのサブディ -レクトリからタグファイルが検索されます。 -これでかなり多くのタグファイルが使えるようになりましたが、まだ十分ではないかも -しれません。例えば "~/proj/src" を編集しているときに "~/proj/sub/tags" を見つ -けることができません。そのような場合はディレクトリツリー全体を検索するように設 -定します。例: > - - :set tags=~/proj/**/tags - - -タグファイルを一つだけ使う --------------------------- - -たくさんの場所からタグファイルを検索しているときは、ハードディスクがガリガリと -音を立てるのが聞こえると思います。これは効率が良くありません。そんなときは少し -時間を掛けて一つの巨大なタグファイルを生成するのがベストです。寝ている間にでも -やってしまうといいでしょう。 -それには上述した Exuberant ctags が必要です。このプログラムにはディレクトリツ -リー全体を検索するためのオプションがあります: > - - cd ~/proj - ctags -R . - -Exuberant ctags のいいところは、いろんなファイルタイプを認識してくれるところで -す。C や C++ だけでなく Effiel や Vim スクリプトも処理できます。詳しくは ctags -のドキュメントを参照してください。 -これで、巨大なタグファイルを一つだけ指定するだけでよくなりました: > - - :set tags=~/proj/tags - - -定義の重複 ----------- - -同じ名前の関数が何度も定義されている場合、あるいは複数のクラスで同名のメソッド -が定義されている場合、":tag" コマンドは最初に見つかったタグにジャンプします。 -カレントファイル内にタグがある場合はそれが優先されます。 -タグが重複している場合は次のコマンドで別のタグにジャンプできます: > - - :tnext - -もう一度実行するとさらに別のタグにジャンプできます。タグがたくさんある場合は次 -のコマンドでタグを選択できます: > - - :tselect tagname - -このような選択画面が表示されます: - - # pri kind tag file ~ - 1 F f mch_init os_amiga.c ~ - mch_init() ~ - 2 F f mch_init os_mac.c ~ - mch_init() ~ - 3 F f mch_init os_msdos.c ~ - mch_init(void) ~ - 4 F f mch_init os_riscos.c ~ - mch_init() ~ - Enter nr of choice (<CR> to abort): ~ - -(行頭の) 番号を入力してジャンプしたい場所を選択してください。他の列にはタグの -場所を示すヒントが表示されます。 - -次のコマンドで他の重複タグに移動できます: - - :tfirst 最初のタグに移動 - :[count]tprevious [count]個 前のタグに移動 - :[count]tnext [count]個 次のタグに移動 - :tlast 最後のタグに移動 - -[count] を省略すると 1 が使われます。 - - -タグ名の推測 ------------- - -コマンドライン補完を使うと長いタグ名の入力が簡単になります。最初の数文字を入力 -してから <Tab> キーを押してください: > - - :tag write_<Tab> - -最初にマッチしたタグが補完されます。それが意図したタグでない場合は、目的のタグ -が見つかるまで <Tab> キーを押してください。 -関数名の一部しか知らない場合や、同じ文字で始まるタグ (後半だけが違っている) が -たくさんある場合は、パターンを使ってタグを検索できます。 -例えば、名前に "block" が含まれているタグにジャンプする場合は、まず次のように -入力します: > - - :tag /block - -そして、コマンドライン補完を使います。<Tab> キーを押してください。"block" を含 -むタグが検索され、最初にマッチしたタグが使われます。 -タグ名の前に "/" を付けると、続くタグ名はそのまま使われず、パターンとして解釈 -されます。検索パターンと同じ機能がすべて使えます。例えば、"write_" で始まるタ -グを選択したい場合は次のようにします: > - - :tselect /^write_ - -最初の "^" はタグ名が "write_" で始まることを示しています。"^" がない場合はタ -グ名の途中にもマッチしてしまいます。同様に、"$" を最後に付けるとタグ名の末尾に -マッチするようになります。 - - -タグブラウザ ------------- - -CTRL-] を使うとカーソルの下にある識別子の定義にジャンプできますが、これを利用 -すると、識別子の一覧を目次として使うことができます。例を示します。まず識別子の -一覧を作ります (Exuberant ctags が必要です) > - - ctags --c-types=f -f functions *.c - -そして Vim をファイル指定なしで起動し、作成したファイルを縦分割ウィンドウで開 -きます: > - - vim - :vsplit functions - -ウィンドウにはすべての関数の一覧が表示されています。関数以外の名前も含まれてい -るかもしれませんが、それは無視してください。":setlocal ts=99" を実行して表示を -見やすくします。 -このウィンドウで、次のマップを定義します: > - - :nnoremap <buffer> <CR> 0ye<C-W>w:tag <C-R>"<CR> - -表示したい関数の行に移動して <Enter> を押すと、カーソルが他のウィンドウに移動 -して、選択した関数にジャンプします。 - - -関連項目 --------- - -タグ名の大文字と小文字を無視したい場合は 'ignorecase' をオンに設定してくださ -い。 - -'tagbsearch' オプションにはタグファイルがソートされているかどうかを設定しま -す。初期設定ではソート済みに設定されています。これはタグの検索を高速に実行でき -ますが、ソートされていないタグファイルを扱えなくなります。 - -'taglength' オプションはタグの識別に使う文字数を指定するのに使います。 - -SNiFF+ プログラムを使う場合は |sniff| インターフェースが使えます。SNiFF+ は商 -用のアプリケーションです。 - -cscope はフリーのプログラムです。識別子の定義場所を探すだけでなく、それが使わ -れている場所も検索できます。|cscope| 参照。 - -============================================================================== -*29.2* プレビューウィンドウ - -コードの中で関数を呼び出すときには、その引数を正確に把握する必要があります。引 -数の意味は関数の定義を見ればわかります。タグの仕組みを使えば簡単に確認できます -が、できれば別のウィンドウに定義を表示したいところです。それにはプレビューウィ -ンドウを使います。 -次のようにすると "write_char" 関数をプレビューウィンドウで表示できます: > - - :ptag write_char - -ウィンドウが開いて "write_char" タグにジャンプします。カーソルの位置は動かない -ので CTRL-W コマンドを使って戻る必要はありません。 -テキストの中に関数名がある場合は、次のコマンドでその定義をプレビューウィンドウ -で表示できます: > - - CTRL-W } - -カーソルの下にある単語の定義場所を自動的に表示してくれるスクリプトもあります。 -|CursorHold-example|参照。 - -プレビューウィンドウを閉じるには次のコマンドを使います: > - - :pclose - -プレビューウィンドウでファイルを開きたい場合は ":pedit" を使います。例えばヘッ -ダファイルを表示するような場合に便利です: > - - :pedit defs.h - -最後に ":psearch" コマンドを紹介します。カレントファイルおよびインクルードされ -ているファイルから単語を検索して、ヒットした場所をプレビューウィンドウで表示で -きます。これは例えば、ライブラリ関数を使っていて、それ用のタグファイルを作って -いないときに使います。例: > - - :psearch popen - -"stdio.h" がプレビューウィンドウで開き、popen() 関数のプロトタイプが表示されま -す: - - FILE *popen __P((const char *, const char *)); ~ - -プレビューウィンドウの高さは 'previewheight' オプションで設定できます (最初に -開いたときに使われる)。 - -============================================================================== -*29.3* プログラムの中を移動する - -プログラムには構造があるので、構文を認識することが可能です。その情報を利用して -移動するコマンドが用意されています。 -例えば C のプログラムには次のような構文がよく現れます: - - #ifdef USE_POPEN ~ - fd = popen("ls", "r") ~ - #else ~ - fd = fopen("tmp", "w") ~ - #endif ~ - -もっと長いかもしれませんし、入れ子になっていることもあります。"#ifdef" に移動 -して % を押すと "#else" にジャンプできます。もう一度 % を押すと "#endif" に -ジャンプします。さらに % を押すと "#ifdef" に戻ります。 -構文が入れ子になっている場合は、正しく対応しているものが検索されます。これは -"#endif" の書き忘れがないかどうか確認するのに便利です。 -"#if" と "#endif" の間にカーソルがあるとき、次のコマンドで開始位置にジャンプで -きます: > - - [# - -"#if" や "#ifdef" の中にいない場合は警告音が鳴ります。前方の "#else" または -"#endif" に移動するには次のコマンドを使います: > - - ]# - -これらのコマンドは、途中にある "#if" - "#endif" ブロックをスキップします。 -例: - - #if defined(HAS_INC_H) ~ - a = a + inc(); ~ - # ifdef USE_THEME ~ - a += 3; ~ - # endif ~ - set_width(a); ~ - -カーソルが最後の行にあるとき、"[#" で最初の行に移動できます。途中の "#ifdef" - -"#endif" ブロックはスキップされます。 - - -コードブロック内の移動 ----------------------- - -C のコードブロックは {} で囲まれています。ブロックはかなり大きい場合もありま -す。アウターブロック (最も外側のブロック) の開始位置に移動するには "[[" コマン -ドを使います。"][" でブロックの末尾に移動できます。このコマンドは行頭の "{" と -"}" をブロックの区切りとして認識します。 -"[{" コマンドで現在のブロックの開始位置に移動できます。同じレベルの {} ペアは -スキップされます。"]}" で末尾に移動できます。 -つまりこのような動作です: - - function(int a) - +-> { - | if (a) - | +-> { - [[ | | for (;;) --+ - | | +-> { | - | [{ | | foo(32); | --+ - | | [{ | if (bar(a)) --+ | ]} | - +-- | +-- break; | ]} | | - | } <-+ | | ][ - +-- foobar(a) | | - } <-+ | - } <-+ - -C++ や Java では、最も外側の {} ブロックはクラスです。その次のレベルの {} はメ -ソッドです。クラスの中で "[m" を使うと、前のメソッドの開始位置に移動できます。 -"]m" で次のメソッドの開始位置に移動できます。 - -"[]" で前の関数の末尾に移動、"]]" で次の関数の開始位置に移動できます。行頭が -"}" で始まる行が関数の末尾として認識されます。 - - int func1(void) - { - return 1; - +----------> } - | - [] | int func2(void) - | +-> { - | [[ | if (flag) - start +-- +-- return flag; - | ][ | return 2; - | +-> } - ]] | - | int func3(void) - +----------> { - return 3; - } - -()、{}、[] などの対括弧に移動する場合は "%" も使えることを忘れないでください。 -括弧の間に複数の行がはさまっていても機能します。 - - -カッコ内の移動 --------------- - -"[(" と "])" は "[{" と "]}" と機能は同じです。ただし、 {} のペアではなく () -のペアに対して動作します。 -> - [( -< <-------------------------------- - <------- - if (a == b && (c == d || (e > f)) && x > y) ~ - --------------> - --------------------------------> > - ]) - -コメント内の移動 ----------------- - -コメントの開始位置に戻るには "[/" コマンドを使います。コメントの終了位置に移動 -するには "]/" を使います。これは /* - */ 形式のコメントのみ対応しています。 - - +-> +-> /* - | [/ | * A comment about --+ - [/ | +-- * wonderful life. | ]/ - | */ <-+ - | - +-- foo = bar * 3; --+ - | ]/ - /* a short comment */ <-+ - -============================================================================== -*29.4* グローバル識別子を検索する - -C プログラムを編集していて、変数の型が "int" なのか "unsigned" なのか分からな -かったら、"[I" コマンドで簡単に確認できます。 -例えば、"column" という単語の上でコマンドを実行すると: > - - [I - -マッチした行が一覧表示されます。カレントファイルとインクルードファイル (さらに -その中でインクルードされているファイル) が検索されます。検索結果は次のように表 -示されます: - - structs.h ~ - 1: 29 unsigned column; /* column number */ ~ - -インクルードファイルも検索されるという点が、タグやプレビューウィンドウを使った -検索よりも便利です。たいていは正しい定義場所が見つかります。タグファイルが更新 -されていなくても、インクルードファイル用のタグファイルがなくても機能します。 -ただし、"[I" が動作するためには少し条件があります。ファイルのインクルードを認 -識するために、'include' オプションが正しく設定されていなければなりません。初期 -設定は C と C++ 用に設定されているので、他の言語では設定を変更する必要がありま -す。 - - -インクルードファイルの場所 --------------------------- - -インクルードファイルは 'path' オプションに設定された場所から検索されます。設定 -に含まれていないディレクトリがあると、いくつかのインクルードファイルは検出でき -ないかもしれません。次のコマンドで検出できないファイルを確認できます: > - - :checkpath - -検出できなかったインクルードファイルの一覧が表示されます。インクルードファイル -の中のインクルードも検査されます。次のような結果が表示されます: - - --- Included files not found in path --- ~ - <io.h> ~ - vim.h --> ~ - <functions.h> ~ - <clib/exec_protos.h> ~ - -カレントファイルでインクルードしている "io.h" が見つかっていません。"vim.h" は -見つかったので ":checkpath" はさらにそのファイルのインクルードも検査しました。 -そして、"functions.h" と "clib/exec_protos.h" が見つかりませんでした。 - - Note: - Vim はコンパイラではないので、"#ifdef" ステートメントを認識しません。 - つまり、"#if NEVER" で囲まれている "#include" ステートメントもすべて検 - 査されます。 - -この問題を修正するには 'path' オプションにディレクトリを追加します。Makefileを -見れば必要なディレクトリがわかると思います。"-I/usr/local/X11" のように、"-I" -が使われている行を調べてください。次のコマンドでディレクトリを追加できます: > - - :set path+=/usr/local/X11 - -サブディレクトリがたくさんある場合はワイルドカード "*" が使えます。例: > - - :set path+=/usr/*/include - -これで "/usr/local/include/" や "/usr/X11/include/" などが検索対象になります。 - -ディレクトリツリーのあちこちにインクルードファイルがあるようなプロジェクトでは -"**" が便利です。すべてのサブディレクトリを検索できます。例: > - - :set path+=/projects/invent/**/include - -例えば次のようなディレクトリからファイルが検索されます: - - /projects/invent/include ~ - /projects/invent/main/include ~ - /projects/invent/main/os/include ~ - etc. - -設定方法は他にもあります。'path' オプションの説明を確認してください。 -実際に検出されたインクルードファイルを確認したい場合は次のコマンドを使います: -> - :checkpath! - -インクルードされているファイルの (長大な) 一覧が表示されます。出力を短くするた -め、同じファイルを見つけた場合は "(Already listed)" とだけ表示し、その中のイン -クルードファイルは表示しません。 - - -定義場所にジャンプする ----------------------- - -"[I" はマッチした行だけを一覧表示します。その周辺を見たい場合は、次のコマンド -で最初のマッチにジャンプします: > - - [<Tab> -< -<Tab> と CTRL-I は同じなので "[ CTRL-I" でも構いません。 - -"[I" で表示される一覧には番号が付いています。最初の項目以外の場所にジャンプし -てい場合は番号を指定してください: > - - 3[<Tab> - -三番目のマッチにジャンプします。CTRL-O で元の場所に戻れることをお忘れなく。 - - -関連コマンド ------------- - - [i 最初のマッチだけ表示 - ]I カーソルより後ろのマッチを一覧表示 - ]i カーソルより後ろの最初のマッチだけ表示 - - -定義済識別子の検索 ------------------- - -"[I" コマンドはすべての識別子を検索します。"#define" で定義されたマクロだけを -検索するには次のコマンドを使います: > - - [D - -このコマンドもインクルードファイルが検索対象になります。検索される行の書式は -'define' オプションで指定します。C と C++ 以外の言語では設定を変更する必要があ -ります。 -次のような "[D" に関連したコマンドがあります: - - [d 最初のマッチだけ表示 - ]D カーソルより後ろのマッチを一覧表示 - ]d カーソルより後ろの最初のマッチだけ表示 - -============================================================================== -*29.5* ローカル識別子を検索する - -"[I" コマンドはインクルードファイルの中も検索します。カーソルの下の単語が最初 -に現れる場所を、カレントファイルの中だけ検索し、その場所にジャンプするには、次 -のコマンドを使います: > - - gD - -ヒント: Goto Definition (定義に移動)。このコマンドはローカル(C 用語で"static") -に定義された変数や関数を検索するのに便利です。例 (カーソルは"counter" の上): - - +-> static int counter = 0; - | - | int get_counter(void) - gD | { - | ++counter; - +-- return counter; - } - -さらに検索範囲を狭めて、現在の関数の中だけ検索したい場合は次のコマンドを使いま -す: > - - gd - -現在の関数の開始位置から最初に単語が使われている場所が検索されます。実際に、行 -頭が "{" で始まる行を後方検索して、その上の空行まで戻り、そこから識別子を前方 -検索しています。例 (カーソルは "idx" の上): - - int find_entry(char *name) - { - +-> int idx; - | - gd | for (idx = 0; idx < table_len; ++idx) - | if (strcmp(table[idx].name, name) == 0) - +-- return idx; - } - -============================================================================== - -次章: |usr_30.txt| プログラムの編集 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_30.jax b/doc/usr_30.jax deleted file mode 100644 index 40d31a4e9..000000000 --- a/doc/usr_30.jax +++ /dev/null @@ -1,633 +0,0 @@ -*usr_30.txt* For Vim バージョン 7.3. Last change: 2007 Nov 10 - - VIM USER MANUAL - by Bram Moolenaar - - プログラムの編集 - - -プログラミングに役立つ機能が Vim にはたくさんあります。プログラムをコンパイル -してエラーが出た行にジャンプしたり、言語に合わせて自動的にインデントしたり、コ -メントを整形したりできます。 - -|30.1| コンパイル -|30.2| C 言語系インデント -|30.3| インデント設定の自動化 -|30.4| その他のインデント -|30.5| タブとスペース -|30.6| コメントの整形 - -次章: |usr_31.txt| GUI を活用する -前章: |usr_29.txt| プログラムの中を移動する -目次: |usr_toc.txt| - -============================================================================== -*30.1* コンパイル - -Vim にはクイックフィックス (quickfix) 機能があります。これは、Vim の中でプログ -ラムをコンパイルして、エラーになった場所に移動し、エラーを修正するための機能で -す。そうして、正常にコンパイルできるまでコンパイルとエラー修正を繰り返します。 - -次のコマンドは "make" を実行し、その出力を読み込みます (引数はそのまま渡されま -す): > - - :make {arguments} - -エラーが発生するとそれが認識され、最初のエラーにカーソルが移動します。 -":make" の使い方を実際に見てみましょう。(典型的な :make セッションはもっと多く -のエラーあるいは少しのゴミを出力しますが) ":make" を実行すると次のような出力が -画面に表示されます: - - :!make | &tee /tmp/vim215953.err ~ - gcc -g -Wall -o prog main.c sub.c ~ - main.c: In function 'main': ~ - main.c:6: too many arguments to function 'do_sub' ~ - main.c: At top level: ~ - main.c:10: parse error before '}' ~ - make: *** [prog] Error 1 ~ - - 2 returned ~ - "main.c" 11L, 111C ~ - (3 of 6): too many arguments to function 'do_sub' ~ - Hit ENTER or type command to continue ~ - -"main.c" の中でエラーが発生していることが確認できると思います。<Enter> を押す -と "main.c" ファイルが開き、6 行目 (最初のエラー) にカーソルが移動します。自分 -でファイルを開く必要はありません。Vim はエラーメッセージを認識できます。 - - +---------------------------------------------------+ - |int main() | - |{ | - | int i=3; | - cursor -> | do_sub("foo"); | - | ++i; | - | return (0); | - |} | - |} | - | ~ | - |(3 of 12): too many arguments to function 'do_sub' | - +---------------------------------------------------+ - -このコマンドで次のエラーに移動できます: > - - :cnext - -カーソルが 10 行目に移動します。ファイルの最終行に余分な '}' がありますね。長 -すぎるエラーメッセージは省略して表示されます。全部を表示するには次のコマンドを -使います: > - - :cc - -すべてのエラーメッセージを表示するには ":clist" コマンドを使います。次のような -出力が表示されます: > - - :clist -< 3 main.c: 6:too many arguments to function 'do_sub' ~ - 5 main.c: 10:parse error before '}' ~ - -ファイル名と行番号が認識された行だけが表示されますが、それは、重要なのはそのよ -うな行だけで、他の行は無駄なメッセージであると判断されるからです。しかし時に -は、認識されなかった行が重要な情報を含んでいることもあります。例えばリンカが未 -解決の関数をエラー表示した場合などです。すべてのメッセージを表示するにはコマン -ドに "!" を付けます: > - - :clist! -< 1 gcc -g -Wall -o prog main.c sub.c ~ - 2 main.c: In function 'main': ~ - 3 main.c:6: too many arguments to function 'do_sub' ~ - 4 main.c: At top level: ~ - 5 main.c:10: parse error before '}' ~ - 6 make: *** [prog] Error 1 ~ - -現在のエラーは強調表示されます。前のエラーに戻るには次のコマンドを使います: > - - :cprevious - -エラーリストを移動するコマンドは他にもあります: - - :cfirst 最初のエラー - :clast 最後のエラー - :cc 3 3つ目のエラー - - -他のコンパイラを使う --------------------- - -":make" コマンドが実際に実行するプログラムは 'makeprg' オプションで設定しま -す。通常は "make" に設定されていますが、例えば Visual C++ を使う場合は "nmake" -に設定する必要があります: > - - :set makeprg=nmake - -オプションにはプログラムの引数も含めることができます。特殊文字はバックスラッ -シュでエスケープしてください。例: > - - :set makeprg=nmake\ -f\ project.mak - -プログラムの設定には特殊なキーワードが使えます。文字 % はカレントファイルの名 -前に展開されます。例えば次のように設定すると: > - - :set makeprg=make\ % - -main.c を編集しているときに ":make" を実行すると次のコマンドが実行されます: > - - make main.c - -これ自体はそれほど便利ではありませんが、すこし変更して :r (root) 修飾子を使う -とどうでしょう: > - - :set makeprg=make\ %:r.o - -これで、実行されるコマンドは次のようになります: > - - make main.o - -修飾子については |filename-modifiers| を参照してください。 - - -古いエラーリスト ----------------- - -例えば ":make" を実行したときに、一つのファイルで警告メッセージが出て、他の -ファイルではエラーが出たとします。エラーを修正し、本当に直ったかどうかを確認す -るためにもう一度 ":make" を実行しました。さて、ここで先程の警告メッセージを確 -認しようとしても、エラーリストには警告メッセージありません。なぜなら、警告メッ -セージを出したファイルは再コンパイルされなかったからです。次のコマンドで古いエ -ラーリストに戻ることができます: > - - :colder - -":clist" と ":cc {nr}" を使って、警告が発生した場所にジャンプしましょう。 -次のコマンドで新しいエラーリストに戻れます: > - - :cnewer - -全部で 10 個までのエラーリストを保持しておくことができます。 - - -他のコンパイラを使う --------------------- - -コンパイラが出力するエラーメッセージの書式を調べ、'errorformat' オプションを設 -定する必要があります。このオプションの構文は非常に複雑ですが、どのようなコンパ -イラにも対応できます。詳しい説明は |errorformat| を参照してください。 - -複数のコンパイラを使うとき、コンパイラを変更するたびに 'makeprg' や -'errorformat' を設定するのは面倒ですよね。簡単な方法が用意されています。例え -ば、Microsoft Visual C++ なら次のように設定します: > - - :compiler msvc - -"msvc" 用のスクリプトが検索され、適切なオプションが設定されます。 -自分で設定スクリプトを書くこともできます。|write-compiler-plugin| 参照。 - - -出力のリダイレクト ------------------- - -":make" コマンドは、実行したプログラムの出力をエラーファイルにリダイレクトしま -す。その動作はいろいろな要因に依存しています (例えば 'shell' オプション)。 -":make" コマンドがプログラムの出力を拾えていないようなら、'makeef' オプション -と 'shellpipe' オプションを確認してみてください。'shellquote' オプションと -'shellxquote' オプションも関係あるかもしれません。 - -どうしても ":make" コマンドのリダイレクトが機能しない場合は、シェルからコンパ -イルを実行して、その出力をファイルにリダイレクトしてください。そして、次のコマ -ンドでそのファイルを読み込みます: > - - :cfile {filename} - -":make" コマンドと同様にエラーにジャンプできます。 - -============================================================================== -*30.2* C 言語系インデント - -プログラムを適切にインデントするとコードが読みやすくなります。Vim の機能を使え -ばインデントするのは簡単です。C 言語、あるいは C++ や Java などの C スタイルの -プログラムなら 'cindent' オプションをオンに設定してください。C 言語のインデン -トは組み込みで用意されていて、複雑な構文でも適切にインデントできます。インデン -トに使うスペースの数は 'shiftwidth' オプションで設定します。スペース 4 個くら -いが適切でしょうか。次のコマンドで設定できます: > - - :set cindent shiftwidth=4 - -このオプションを設定すると、例えば "if (x)" と入力したときに、次の行が自動的に -インデントされます。 - - if (flag) - インデントが増える ---> do_the_work(); - インデントが減る <-- if (other_flag) { - インデントが増える ---> do_file(); - インデントそのまま do_some_more(); - インデントが減る <-- } - -波カッコ ({}) の中でテキストを入力すると、最初の行でインデントが増え、最後の行 -でインデントが減ります。インデントが減るのは '}' を押したタイミングです (入力 -を予測することはできないので)。 - -自動インデントには、コーディングのミスを早く発見できるという副作用があります。 -例えば、関数の最後で } を入力したときに、インデントが本来よりも多くなったとし -たら、どこかで } を入力し忘れています。"%" コマンドを使って、最後に入力した } -と対になっている { を探しましょう。 -同様に、) や ; を忘れると、次の行のインデントが増えます。もし予想よりもインデ -ントが多くなってしまった場合は直前の行を確認してください。 - -書式が汚いコードを編集するとき、あるいは編集によってインデントが崩れてしまった -場合、コードを再インデントする必要があります。それには "=" オペレータを使いま -す。最も単純なのは次の使い方です: > - - == - -現在行がインデントされます。他のオペレータと同様、使い方は三通りあります。ビ -ジュアルモードで "=" を使うと、選択範囲の行がインデントされます。テキストオブ -ジェクトで便利なのは "a{" です。これは現在のブロックを選択します。つまり、次の -コマンドでコードのブロックをインデントできます: > - - =a{ - -コードが根本的に汚い場合は、次のコマンドでファイル全体を再インデントできます: -> - gg=G - -ただし、手作業で丁寧にインデントされたファイルに対してこれを実行してはいけませ -ん。自動インデントは良い仕事をしてくれますが、場合によってはそのルールを破る必 -要もあるからです。 - - -インデントスタイルの設定 ------------------------- - -インデントスタイルは人によってさまざまです。初期設定では 90% のプログラマーが -満足するようなスタイルに設定されています。しかし、世の中にはいろいろなスタイル -があるので、必要なら、'cinoptions' を設定することで、インデントスタイルをカス -タマイズできます。 -'cinoptions' の初期設定は空です。その場合はデフォルトのスタイルが使われます。 -このオプションに値を追加していくことでスタイルを変更できます。例えば、波カッコ -の位置を次のようにしたい場合は: - - if (flag) ~ - { ~ - i = 8; ~ - j = 0; ~ - } ~ - -次のコマンドを使います: > - - :set cinoptions+={2 - -設定できる項目はたくさんあります。|cinoptions-values| 参照。 - -============================================================================== -*30.3* インデント設定の自動化 - -C ファイルを開くたびに 'cindent' オプションを設定するのは面倒ですよね。インデ -ントの設定は自動化できます: > - - :filetype indent on - -実際には、C ファイルに対して 'cindent' をオンにする以外の機能も有効になりま -す。まず最初に、ファイルタイプの認識が有効になります。認識機能は構文強調表示で -使われているものと同じです。 -ファイルタイプが認識されると、そのファイルタイプ用のインデントファイルが検索さ -れます。Vim にはさまざまな言語に対応したインデントファイルが付属しています。イ -ンデントファイルが読み込まれ、自動インデントのための設定が行われます。 - -インデント設定の自動化は次のコマンドでオフにできます: > - - :filetype indent off - -特定のファイルタイプだけインデントを無効にしたい場合は、次のような一行だけの -ファイルを作成してください: > - - :let b:did_indent = 1 - -これを、決められた名前で保存します: - - {directory}/indent/{filetype}.vim - -{filetype} は "cpp" や "java" といったファイルタイプの名前です。次のコマンドで -Vim が使っている名前を確認できます: > - - :set filetype - -例えばこのヘルプファイルなら次のように表示されます: - - filetype=help ~ - -したがって、{filetype} には "help" が入ります。 -{directory} はランタイムディレクトリです。次のコマンドの出力を調べてください: -> - set runtimepath - -ここでは先頭のパスを使います。つまり、出力が次のようなら: - - runtimepath=~/.vim,/usr/local/share/vim/vim60/runtime,~/.vim/after ~ - -{directory} には "~/.vim" が入ります。したがって、ファイル名は次のようになりま -す: - - ~/.vim/indent/help.vim ~ - -インデントをオフにするのではなく、自分のインデントファイルを作成したい場合は、 -|indent-expression| を参照してください。 - -============================================================================== -*30.4* その他のインデント - -最もシンプルな自動インデントは 'autoindent' オプションを使う方法です。これは直 -前の行と同じインデントを使います。'smartindent' はもう少しスマートです。これは -インデントファイルが用意されていないような場合に使います。'smartindent' は -'cindent' より低機能ですが、'autoindent' よりは高機能です。 -'smartindent' をオンにすると、{ でインデントが一つ増え、} で減ります。さらに、 -'cinwords' オプションに設定された単語が現れた場合もインデントが増えます。# で -始まる行は特別扱いされ、一切インデントされません。つまり、プリプロセッサディレ -クティブの行はインデントされません。その次の行は通常通りインデントされます。 - - -インデントの訂正 ----------------- - -'autoindent' や 'smartindent' を設定すると、直前の行と同じインデントを使うこと -ができますが、自分でインデントを ('shiftwidth'の幅ずつ) 増やしたり減らしたりす -る必要も多々あります。それにはインサートモードで CTRL-D と CTRL-T を使うと簡単 -です。 -例えば、次のようなシェルスクリプトを入力してみましょう: - - if test -n a; then ~ - echo a ~ - echo "-------" ~ - fi ~ - -まず、次のオプションを設定します: > - - :set autoindent shiftwidth=3 - -一行目を入力し、<Enter> を押して二行目を開始します: - - if test -n a; then ~ - echo ~ - -二行目にはインデントが必要ですね。CTRL-T を押します: - - if test -n a; then ~ - echo ~ - -インサートモードの CTRL-T コマンドは、'shiftwidth' の幅だけインデントを増やし -ます。カーソルの位置は関係ありません。 -二行目を入力し、<Enter> を押して三行目を開始します。三行目のインデントは問題あ -りません。<Enter> を押して最後の行を入力します。テキストは次のようになりまし -た: - - if test -n a; then ~ - echo a ~ - echo "-------" ~ - fi ~ - -最後の行の余分なインデントを削除するには CTRL-D 押します。これは 'shiftwidth' -の幅だけインデントを減らします。カーソルの位置は関係ありません。 -ノーマルモードでは ">>" コマンドと "<<" コマンドで同様の操作ができます。">" と -"<" はオペレータなので、他のオペレータと同様に、インデントを変更する範囲を三通 -りの方法で指定できます。次の組み合わせが特に便利です: > - - >i{ - -現在のブロックのインデントが増えます。変更されるのは {} の中だけで、{ と } 自 -体の行は変更されません。">a{" なら {} も含まれます。次の例では、カーソルは -"printf" の上にあります: - - original text after ">i{" after ">a{" - - if (flag) if (flag) if (flag) ~ - { { { ~ - printf("yes"); printf("yes"); printf("yes"); ~ - flag = 0; flag = 0; flag = 0; ~ - } } } ~ - -============================================================================== -*30.5* タブとスペース - -'tabstop' の初期設定は 8 です。変更することはできますが、それはトラブルの元に -なります。他のプログラムはあなたが使用しているタブ幅を知ることができません。そ -のようなプログラムでは、恐らくタブの幅は 8 であると仮定されているので、テキス -トが崩れて表示されてしまいます。また、ほとんどのプリンタはタブ幅を 8 で固定し -ています。したがって、'tabstop' を変更するのはお勧めしません。(他のタブ幅設定 -で書かれたテキストを修正したい場合は |25.3| を参照してください。) -プログラムをインデントする場合、8 桁単位でインデントするとすぐに画面が埋まって -しまいます。しかしスペースが一つだけではインデントが目立ちません。多くのプログ -ラマは (折衷して) 4 桁を好んで使います。 -<Tab> の幅は 8 桁で、インデントを 4 桁にしたいということは、<Tab> 文字を使って -インデントすることはできないということです。そのようなインデントには二つの方法 -があります: - -1. <Tab> とスペースを混在させる。<Tab> は 1 つでスペース 8 個分の幅になるので - ファイルサイズの節約になります。スペース 8 個より <Tab> の方が入力も削除も - 簡単です。 - -2. スペースだけを使う。違うタブ幅を使う他のプログラムでもトラブルが起きませ - ん。 - -Vim はどちらの方法もサポートしています。 - - -タブとスペースを混在させる --------------------------- - -タブとスペースを混在させる場合は特別な設定は必要ありません。初期設定でうまくい -きます。 -'softtabstop' オプションを設定すると編集が少し楽になります。このオプションが設 -定されると、タブ幅が 'softtabstop' の値に設定されたかのように、<Tab> キーが動 -作します。しかし実際にはタブとスペースが混在して使われます。 -次のコマンドを実行すると、<Tab> キーでカーソルが 4 桁ごとに進むようになります: -> - :set softtabstop=4 - -行頭で <Tab> を押すと、スペースが 4 個挿入されます。次に <Tab> を押すと、最初 -のスペース 4 個が削除されて <Tab> 文字が挿入されます (つまりカーソルは 8 列 -目)。このように、スペースは可能な限り <Tab> 文字で置き換えられます。 -バックスペースはその反対の動作になります。<BS> を押すと、'softtabstop' の幅だ -け削除されます。可能な限り <Tab> が使われ、余りはスペースになります。 -次の図は、<Tab> をいくつか入力してから <BS> を使ったときの様子を示しています。 -"." はスペースで "------->" は <Tab> です。 - - 入力 結果 ~ - <Tab> .... - <Tab><Tab> -------> - <Tab><Tab><Tab> ------->.... - <Tab><Tab><Tab><BS> -------> - <Tab><Tab><Tab><BS><BS> .... - -同様の動作は 'smarttab' オプションを使っても実現できます。このオプションを設定 -した場合、インデントの入力のために <Tab> を押すと 'shiftwidth' の幅が使われ、 -何かの文字より後ろでは実際の <Tab> 文字が使われます。ただし、<BS> の動作は -'softtabstop' のときと同様にはなりません。 - - -スペースだけを使う ------------------- - -Tab 文字を一切使いたくない場合は 'expandtab' オプションを設定してください: > - - :set expandtab - -このオプションをオンにすると、<Tab> キーでスペースが入力されるようになります。 -つまり、<Tab> 文字と同じ量のスペースが挿入され、<Tab> 文字は使われません。 -バックスペースキーはスペースを一つずつ削除するので、<Tab> を押した後でそれを削 -除するには <BS> を 8 回押さなければなりません。インデントの削除は CTRL-D を使 -うと簡単です。 - - -タブをスペースに変換する (あるいはその逆) ------------------------------------------ - -'expandtab' を設定しても、それ以前に入力されたタブ文字は影響を受けません。つま -り、文章中のタブ文字はタブ文字のままです。タブ文字をスペースに変換したい場合 -は、":retab" コマンドを使ってください。次のように使います: > - - :set expandtab - :%retab - -すべてのインデントがスペースに変換されます。ただし、何かの文字より後ろにある -(インデント以外の) タブ文字はそのままです。それらのタブ文字も変換したい場合は -コマンドに ! を付けます: > - - :%retab! - -これは少し注意が必要です。なぜなら、文字列の中のタブ文字も変換されてしまうから -です。文字列の中でタブ文字が使われているかどうかは、次の検索パターンで確認でき -ます: > - - /"[^"\t]*\t[^"]*" - -文字列の中でタブ文字を使うのはお勧めしません。トラブルを避けるためにも "\t" を -使ってください。 - -同様に、スペースをタブ文字に変換できます: > - - :set noexpandtab - :%retab! - -============================================================================== -*30.6* コメントの整形 - -Vim のすばらしいところはコメントを解釈できるところです。コメントの整形を指示す -るだけで適切に処理してくれます。 -例えば、次のようなコメントがあるとします: - - /* ~ - * This is a test ~ - * of the text formatting. ~ - */ ~ - -最初の行に移動して次のコマンドを実行すると、コメントを整形できます: > - - gq]/ - -"gq" はテキスト整形のためのオペレータです。"]/" はコメントの末尾に移動するコマ -ンドです。次のような結果になります: - - /* ~ - * This is a test of the text formatting. ~ - */ ~ - -各行の行頭が適切に処理されていますね。 -ビジュアルモードでテキストを選択してから "gq" を使う方法でも構いません。 - -新しい行を追加したい場合は、真ん中の行に移動して "o" を押します。次のような結 -果になります: - - /* ~ - * This is a test of the text formatting. ~ - * ~ - */ ~ - -行頭のスペースと * は自動的に挿入されるので、そのままコメントを入力することが -できます。テキストが 'textwidth' より長くなると自動的に改行されます。そのとき -も、行頭の * は自動的に挿入されます: - - /* ~ - * This is a test of the text formatting. ~ - * Typing a lot of text here will make Vim ~ - * break ~ - */ ~ - -この機能を使うには 'formatoptions' の設定が必要です: - - r インサートモードで <Enter> を押したときに * を挿入する - o ノーマルモードで "o" または "O" を使ったときに * を挿入する - c コメントを 'textwidth' の幅で改行する - -詳しくは |fo-table| 参照。 - - -コメントの定義 --------------- - -コメントの書式は 'comments' オプションで設定します。一行コメントと三部コメント -(開始、中間、終端からなるコメント) は分けて処理されます。 -ほとんどの一行コメントは特定の文字で始まります。C++ は //、メイクファイルは -#、 Vim は " です。例えば、C++ のコメントなら次のように設定します: > - - :set comments=:// - -コロンはフラグとコメント文字の区切りです。'comments' の設定は次のような形式で -指定します: - - {flags}:{text} - -この例のように、{flags} は空でも構いません。 -複数のアイテムを指定するときはカンマで区切ります。アイテムを複数指定できるの -で、同じファイルの中でいろんな種類のコメントを使うことができます。例えばメール -を返信するときに、相手のメッセージに ">" や "!" を付けて引用する場合は、次のよ -うに設定します: > - - :set comments=n:>,n:! - -二つのアイテムが設定されました。一つは ">" で開始するコメント、もう一つは "!" -で開始するコメントです。"n" フラグが使われているので、コメントを入れ子にできま -す。つまり、">" で開始する行は、">" の後ろに他のコメントを含んでいても構いませ -ん。この設定により、次のようなメッセージを整形することができます: - - > ! Did you see that site? ~ - > ! It looks really great. ~ - > I don't like it. The ~ - > colors are terrible. ~ - What is the URL of that ~ - site? ~ - -'textwidth' の設定を変更して (例えば 80 にして)、テキストを整形してみましょ -う。ビジュアルモードでテキストを選択してから "gq" を押します: - - > ! Did you see that site? It looks really great. ~ - > I don't like it. The colors are terrible. ~ - What is the URL of that site? ~ - -違う種類のコメントテキストは混ざっていませんね。 -二行目の "I" は一行目の末尾に入れることも可能ですが、しかし、一行目は "> !" で -始まり、二行目は ">" で始まっているため、それらのコメントは別のものであると判 -断されます。 - - -三部コメント (A THREE PART COMMENT) ------------- - -C のコメントは "/*" で始まり、中間には "*" が付き、"*/" で終わります。このよう -なコメントは次のように設定します: > - - :set comments=s1:/*,mb:*,ex:*/ - -開始部分は "s1:/*" です。"s" は三部コメントの開始を示します。フラグとコメント -文字 "/*" をコロンで区切っています。フラグには "1" が指定されていますが、これ -により中間部分がスペース一個分、字下げされます。 -中間部分は "mb:*" です。"m" は三部コメントの中間を示します。"b" フラグは、コメ -ント文字の後ろに空白が必要であることを示します。これを指定しないと、"*pointer" -などもコメントとして認識されてしまいます。 -終端部分は "ex:*/" です。"e" は三部コメントの終端を示します。"x" は特殊なフラ -グです。中間の * が自動的に挿入された直後に "/" を押すと、余計なスペースが削除 -されます。 - -詳細は |format-comments| を参照してください。 - -============================================================================== - -次章: |usr_31.txt| GUI を活用する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_31.jax b/doc/usr_31.jax deleted file mode 100644 index 4d324b261..000000000 --- a/doc/usr_31.jax +++ /dev/null @@ -1,264 +0,0 @@ -*usr_31.txt* For Vim バージョン 7.3. Last change: 2007 May 08 - - VIM USER MANUAL - by Bram Moolenaar - - GUI を活用する - - -Vim は端末でも動作しますが、GUI 版の Vim にはさらに追加機能があります。ファイ -ルブラウザを使ってファイルを選択したり、操作を確認するためのダイアログを表示し -たり、キーボードショートカットを使ってメニューにアクセスしたりできます。 - -|31.1| ファイルブラウザ -|31.2| 操作確認 -|31.3| メニューのショートカット -|31.4| Vim ウィンドウの位置とサイズ -|31.5| その他 - -次章: |usr_32.txt| undo ツリー -前章: |usr_30.txt| プログラムの編集 -目次: |usr_toc.txt| - -============================================================================== -*31.1* ファイルブラウザ - -[ファイル]/[開く...] メニューを実行するとファイルブラウザが表示されます。ファ -イルブラウザを使えば簡単にファイルを探すことができます。しかし例えば、[ウィン -ドウを分割して開く] などのメニューは用意されていません。[ウィンドウ]/[分割] を -実行してから [ファイル]/[開く...] を実行することもできますが、面倒ですよね。 -他のコマンドと同様、ファイルブラウザもコマンド入力で開くことができます。例え -ば、split コマンドに "browse" を付けることで、ファイルブラウザを使うことができ -ます: > - - :browse split - -選択したファイルが ":split" コマンドで開かれます。キャンセルボタンを押した場合 -は何も実行されず、ウィンドウも分割されません。引数にファイルを指定すると、ファ -イルブラウザの初期ディレクトリとして使われます。例: > - - :browse split /etc - -"/etc" ディレクトリでファイルブラウザが開きます。 - -":browse" コマンドはファイルを開くためのコマンドと組み合わせて使います。 -ディレクトリを指定しなかった場合は、適切なディレクトリが選択されます。初期設定 -では、最後に使ったディレクトリが使われます。例えば、":browse split" で -"/usr/local/share" のファイルを開いた場合、次に ":browse" を使ったときは -"/usr/local/share" が使われます。 -この動作は 'browsedir' オプションで変更できます。次の値を設定できます: - - last 最後に使ったディレクトリ (初期設定) - buffer カレントバッファと同じディレクトリ - current カレントディレクトリ - -例えば、カレントディレクトリが "/usr" で、"/usr/local/share/readme" を開いてい -るとき、次のコマンドを実行すると: > - - :set browsedir=buffer - :browse edit - -"/usr/local/share" でブラウザが開きます。次のように設定すると: > - - :set browsedir=current - :browse edit - -"/usr" で開きます。 - - Note: - 大抵のファイルブラウザではキーボードが使えるので、マウスを使わなくても - 操作できます。操作方法はシステム依存なのでここでは説明しません。Vim は - (可能な限り) 標準のブラウザを使用します。システムのドキュメントにキー - ボードショートカットの説明が載っているはずです。 - -GUI を使っていない場合でも、ファイルエクスプローラを使えばファイルブラウザと同 -じようにファイルを選択できます。ただし、":browse" コマンドは使えません。 -|netrw-browse| 参照。 - -============================================================================== -*31.2* 操作確認 - -ファイルが上書きされたり変更が失われたりするような操作は、間違って実行してしま -わないように保護されています。何かがマズいことになりそうなときは「本当にその操 -作を実行したい場合は ! を付けてください」というようなエラーメッセージが表示さ -れます。 -同じコマンドを再度入力したくない場合は、ダイアログを使うと便利です。"OK" か -"Cancel" を選ぶだけで動作を指示できます。 -例えば、ファイルを開いて変更を加えてから、次のコマンドで別のファイルを開きま -す: > - - :confirm edit foo.txt - -すると、次のようなダイアログが表示されます: - - +-----------------------------------+ - | | - | ? Save changes to "bar.txt"? | - | | - | YES NO CANCEL | - +-----------------------------------+ - -ファイルを保存したい場合は "YES" を選択します。変更を破棄したい場合は "NO" を -選択します。戻って状態を確認したい場合は "CANCEL" を選択します。"CANCEL" を選 -択すると元のファイルに戻れます。変更は失われません。 - -":browse" と同様、":confirm" もファイルを開くためのコマンドと組み合わせること -ができます。同時に使うこともできます: > - - :confirm browse edit - -カレントバッファが未保存ならダイアログが表示されます。そして、ファイルブラウザ -が表示され、ファイルを選択できます。 - - Note: - ダイアログはキーボードで操作できます。一般的には、<TAB> キーと矢印キー - で選択を変更し、<Enter> で決定します。操作方法はシステムにより異なりま - す。 - -":conform" コマンドは CUI 版の Vim でも使えます。ダイアログの代わりに Vim ウィ -ンドウの下部にメッセージが表示されるので、キーを押して操作を選択してください。 -> - :confirm edit main.c -< Save changes to "Untitled"? ~ - [Y]es, (N)o, (C)ancel: ~ - -どれか一つのキーを押すと選択できます。コマンドラインでの入力とは違い、<Enter> -を押す必要はありません。 - -============================================================================== -*31.3* メニューのショートカット - -キーボードを使えばすべてのコマンドを実行できます。メニューは (複雑な) コマンド -を簡単に使うための手段を提供しますが、キーボードから手を離してマウスを使わなけ -ればなりません。 -メニューはキーボードでも選択できます。キーボードが使えるかどうかはシステム依存 -ですが、大抵は大丈夫です。メニューを選択するには、メニューの下線付きの文字と -<Alt> キーを組み合わせて使います。例えば、<A-w> (<Alt>とw) で [ウィンドウ] メ -ニューが表示されます。 -[ウィンドウ] メニューの "分割(p)" アイテムは p に下線が付いているので、<Alt> -キーを押したまま p を押せば選択できます。 - -<Alt> キーでメニューを表示した後は、カーソルキーを使ってメニューを選択できま -す。サブメニューは <Right> で開いて <Left> で閉じることができます。閉じるのは -<Esc> でも可能です。<Enter> でメニューを実行します。 - -<Alt> キーはメニュー選択とキーマップの両方で使われるので操作が衝突します。 -<Alt> キーの動作は 'winaltkeys' オプションで設定できます。 -初期設定は "menu" です。メニューのショートカットと同じキーはマップできません -が、他のキーはマップすることができます。 -設定を "no" にすると、<Alt> キーを使ってメニューを選択できなくなります。メ -ニューを選択するにはマウスを使う必要がありますが、すべての <Alt> キーをマップ -できます。 -設定を "yes" にすると、<Alt> キーはメニューのために使われます。いくつかの -<Alt> キー操作はメニュー選択以外の動作になることもあります。 - -============================================================================== -*31.4* Vim ウィンドウの位置とサイズ - -次のコマンドでスクリーン上の Vim ウィンドウの位置を確認できます: > - - :winpos - -このコマンドは GUI でのみ機能します。次のような出力が表示されます: - - Window position: X 272, Y 103 ~ - -位置は画面のピクセル単位です。数値を指定して Vim ウィンドウを移動することもで -きます。例えば、左に 100 ピクセル移動するには次のようにします: > - - :winpos 172 103 -< - Note: - 指定した位置と実際に移動した位置が少しずれることがあります。これはウィ - ンドウの枠があるからです。ウィンドウマネージャがずれを引き起こします。 - -このコマンドを起動スクリプトに書けば好きな位置でウィンドウを開くことができま -す。 - -Vim ウィンドウのサイズは文字数で計算されるので、実際の幅はフォントの大きさに依 -存します。次のコマンドで現在のサイズを確認できます: > - - :set lines columns - -サイズを変更するには 'lines' と 'columns' を設定します: > - - :set lines=50 - :set columns=80 - -CUI 端末でもサイズを取得することができますが、ほとんどの端末ではサイズを変更で -きません。 - -X-Windows 版の gvim では、ウィンドウの位置とサイズを起動引数で指定できます: > - - gvim -geometry {width}x{height}+{x_offset}+{y_offset} - -{width} と {height} は文字数です。{x_offset} と {y_offset} はピクセル数です。 -例: > - - gvim -geometry 80x25+100+300 - -============================================================================== -*31.5* その他 - -gvim はメールの編集にも使えます。そのためには、メーラーを設定して、gvim をエ -ディタとして選択する必要があります。しかしそれだけではうまくいきません。gvim -がまだ実行中にもかかわらず、メーラーは、gvim が編集を終えたものと判断してしま -います。 -gvim が起動するとき、gvim はシェルから分離されます。これは、端末から gvim を起 -動したときに、gvim と端末を平行して使うことができるので便利です。gvim が終了す -るまで待機させたい場合は分離をしないようにする必要があります。それには "-f" 引 -数を使います: > - - gvim -f file.txt - -"-f" は "foreground" (操作中) の意味です。Vim を終了するまでシェルがブロックさ -れます。 - - -GUI の遅延スタート ------------------- - -Unix では gvim を vim として起動することができます。これはシェルの中だけで作業 -を完結したい場合に便利です。ファイルの編集中に GUI を使いたくなったら、次のコ -マンドで GUI を開始できます: > - - :gui - -GUI ウィンドウが開いて端末が開放されるので、同じ端末で他の作業を開始できます。 -"-f" 引数を指定するとフォアグラウンドで GUI を開始できます。":gui -f" のように -指定します。 - - -gvim の起動ファイル -------------------- - -gvim を起動すると、gvimrc ファイルが読み込まれます。これは Vim を起動したとき -に使われる vimrc ファイルのようなものです。gvimrc には、GUI を開始したときだけ -使いたい設定やコマンドを記述します。例えば、'lines' オプションを設定してウィン -ドウのサイズを変更できます: > - - :set lines=55 - -端末ではウィンドウサイズは固定なのでこの設定は必要ありません (サイズの変更をサ -ポートしている xterm もありますが)。 -gvimrc は vimrc と同じ場所から検索されます。通常、Unix では "~/.gvimrc"、 -MS-Windows では "$VIM/_gvimrc" が使われます。 -$MYGVIMRC 環境変数に、読み込まれたファイルの名前が設定されるので、次のコマンド -でそのファイルを開くことができます (ファイルが存在するなら): > - - :edit $MYGVIMRC - -何らかの理由で通常の gvimrc を使いたくない場合は、"-U" 引数で他のファイルを指 -定できます: > - - gvim -U thisrc ... - -いつもと違う設定で gvim を起動できます。例えばフォントのサイズを変更するなど。 -gvimrc を読み込みたくない場合は次のようにします: > - - gvim -U NONE ... - -============================================================================== - -次章: |usr_32.txt| undo ツリー - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_32.jax b/doc/usr_32.jax deleted file mode 100644 index 1bdbde165..000000000 --- a/doc/usr_32.jax +++ /dev/null @@ -1,182 +0,0 @@ -*usr_32.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - undo ツリー - - -Vim にはマルチレベルの undo 機能があります。変更を undo してから新しい変更を加 -えると、undo ツリーに枝が作成されます。このテキストでは、枝を移動する方法を説 -明します。 - -|32.1| ファイル保存時への undo -|32.2| 変更の番号付け -|32.3| ツリーを飛び回る -|32.4| タイムトラベル - -次章: |usr_40.txt| 新しいコマンドを作る -前章: |usr_31.txt| GUI の活用 -目次: |usr_toc.txt| - -============================================================================== -*32.1* ファイル保存時への undo - -いくつかの変更を加えた後で、やっぱり最後にファイルを保存したときの状態に戻りた -いなと思うようなことがときどきあります。そんなときは次のコマンドを使います: > - - :earlier 1f - -"f" は "file" を意味します。 - -このコマンドを繰り返し実行してさらに過去に戻ることができます。あるいは、1 より -大きなカウント指定をすればもっと素早く過去に戻れます。 - -戻り過ぎてしまったときは次のコマンドで進むことができます: > - - :later 1f - -Note: このコマンドは時間を基準にして移動します。これは undo した後でなにか変更 -を加えていた場合に重要になってきます。それについては次の節で説明します。 - -Note: ここではテキストの保存の話をしています。undo 情報のファイルへの保存につ -いては |undo-persistence| を参照してください。 - -============================================================================== -*32.2* 変更の番号付け - -セクション |02.5| では一本道の undo/redo について説明しましたが、実は、 -undo/redo は分岐することができます。変更を undo してから新しい変更を加えると、 -新しい変更が undo ツリーの枝になります。 - -"one" というテキストから始めましょう。最初に " too" を追加します。次に too の -一つ目の 'o' を 'w' に変更します。これで、 二つの変更 (番号 1、2) と、テキスト -の三つの状態ができました。 - - one ~ - | - change 1 - | - one too ~ - | - change 2 - | - one two ~ - -一つだけ変更を undo して "one too" の状態に戻り、"one" を "me" に変更します。 -すると、undo ツリーに枝が作成されます。 - - one ~ - | - change 1 - | - one too ~ - / \ - change 2 change 3 - | | - one two me too ~ - -この状態で |u| コマンドを使って undo してみてください。二回 undo すると "one" -に戻ります。|CTRL-R| で redo すると "one too" になります。もう一度 |CTRL-R| を -実行すると "me too" になります。このように、undo/redo を実行すると、最後に使わ -れた枝を上下に移動できます。 - -重要なのは変更が作成される順番です。undo ツリーにおいては、undo とredo は変更 -とはみなされません。それぞれの変更の後にはテキストの新しい状態があります。 - -Note: 変更にだけ番号が付きます。上図のツリーに示されている "テキスト" の部分に -は番号が付きません。テキストは、その上の変更番号によって参照されます。ただし、 -ツリーを上に移動したときなどは、下の変更番号によって参照されます (どの変更が -undo されたかわかるように)。 -訳注: 例えば上図の "one too" から undo/redo したときのメッセージ: -訳注: undo したとき: 1 change; before #1 <- 下の番号が使われる -訳注: redo したとき: 1 change; after #3 - -============================================================================== -*32.3* ツリーを飛び回る - -さて、"one two" の状態を得るにはどうすればいいでしょうか。次のコマンドを使いま -す: > - - :undo 2 - -テキストが "one two" (change 2 の下) になります。|:undo| コマンドを使うと、指 -定した変更の下にジャンプできます。 - -新しい変更を加えてみましょう。"one" を "not" に変更します: - - one ~ - | - change 1 - | - one too ~ - / \ - change 2 change 3 - | | - one two me too ~ - | - change 4 - | - not two ~ - -何か考えが変わって "me too" に戻りたくなった場合は、|g-| コマンドを使います。 -このコマンドは時間を基準にして戻ります。ツリーを上下に移動するのではなく、直前 -の変更に移動します。 - -|g-| を繰り返し実行すると、テキストは次のように変化します: - me too ~ - one two ~ - one too ~ - one ~ - -|g+| を使えば時間を進めることができます: - one ~ - one too ~ - one two ~ - me too ~ - not two ~ - -ジャンプしたい変更番号が分かっているときには |:undo| が便利です。番号がよく分 -からないときには |g-| と |g+| が便利です。 - -|g-| と |g+| にカウント指定を付けると実行回数を指定できます。 - -============================================================================== -*32.4* タイムトラベル - -しばらくテキストを編集すると、ツリーは大きく成長します。そのとき、数分前のテキ -ストに戻りたいと思うことがあるかもしれません。 - -undo ツリーにどのような枝があるかを確認するには次のコマンドを使います: > - - :undolist -< number changes time ~ - 3 2 16 seconds ago - 4 3 5 seconds ago - -枝に付いている葉の数と、変更された時間が表示されます。今、change 4 の下 ("not -two") にいるとして、10 秒前に戻るには次のようにします: > - - :earlier 10s - -指定した時間だけ戻り、ツリーの特定の位置へ移動できます。|:earlier| コマンドの -引数は "m" で分、"h" で時間、"d" で日を指定することもできます。すべての変更を -元に戻したい場合は大きな値を指定してください: > - - :earlier 100d - -時間を進めるには |:later| コマンドを使います: > - - :later 1m - -|:earlier| と同様に、"s"、"m"、"h" で単位を指定します。 - -undo 情報の詳細を見たい、触りたい、という場合は |undotree()| 関数を使ってくだ -さい。関数が何を返すかは次のコマンドで確認できます: > - - :echo undotree() - -============================================================================== - -次章: |usr_40.txt| 新しいコマンドを作る - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_40.jax b/doc/usr_40.jax deleted file mode 100644 index 8a00a30d4..000000000 --- a/doc/usr_40.jax +++ /dev/null @@ -1,659 +0,0 @@ -*usr_40.txt* For Vim バージョン 7.3. Last change: 2006 Jun 21 - - VIM USER MANUAL - by Bram Moolenaar - - 新しいコマンドを作る - - -Vim は拡張可能なエディタです。よく使う操作を一つにまとめて新しいコマンドを作成 -したり、既存のコマンドを再定義したりできます。自動コマンドを使うと、コマンドを -自動的に実行できます。 - -|40.1| キーマッピング -|40.2| コマンドラインコマンドを定義する -|40.3| 自動コマンド - -次章: |usr_41.txt| Vim スクリプト書法 -前章: |usr_32.txt| undo ツリー -目次: |usr_toc.txt| - -============================================================================== -*40.1* キーマッピング - -|05.3| で簡単なマップを説明しました。マップの原理は、キー操作を他のキー操作に -変換するというものです。単純ですが強力な仕組みです。 -典型的な使い方は、一つのキーを複数のキーにマップする方法です。ファンクション -キー (<F1>以外) には機能が割り当てられていないので、それらのキーを使うとよいで -しょう。例: > - - :map <F2> GoDate: <Esc>:read !date<CR>kJ - -このマップでは三つのモードが使われています。"G" で最後の行にジャンプし、"o" で -新しい行を開いてインサートモードを開始、"Date: " というテキストを入力してから -<Esc> でインサートモードを抜けます。 -特殊キーを <> で囲んで表記していますが、これは括弧表記というものです。特殊キー -を押すのではなく、見たまま文字どおり入力してください。この表記を使ったマップは -読むのが簡単で、そのままコピー&ペーストして使うことができます。 -さて、":" でコマンドラインモードに入ります。":read !date" コマンドは、"date" -コマンドの出力を読み込んで、現在行の下に追加します。<CR> は ":read" コマンドを -実行するために必要です。 -この時点で、テキストは次のようになっています: - - Date: ~ - Fri Jun 15 12:54:34 CEST 2001 ~ - -最後に、"kJ" で上に移動してから二つの行を一行につなげます。 -マップするキーを選ぶときは |map-which-keys| を参考にしてください。 - - -マップとモード --------------- - -":map" コマンドはノーマルモードのキーマップを定義します。同様に、他のモードの -マップを定義することもできます。例えば ":imap" でインサートモードのマップを定 -義できます。次のマップは、カーソルの下に日付を挿入します: > - - :imap <F2> <CR>Date: <Esc>:read !date<CR>kJ - -多少の違いはありますが、ノーマルモードで <F2> にマップしたものと同じです。この -マップを定義してもノーマルモードの <F2> は消えません。このように、同じキーを -モード別にマップすることができます。 -このマップはインサートモードの中で開始しますが、実行後はノーマルモードになって -しまいます。インサートモードを継続したい場合はマップの最後に "a" を追加してく -ださい。 - -マップコマンドはモード別に用意されています: - - :map ノーマルモード、ビジュアルモード、オペレータ待機モード - :vmap ビジュアルモード - :nmap ノーマルモード - :omap オペレータ待機モード - :map! インサートモード、コマンドライン - :imap インサートモード - :cmap コマンドライン - -オペレータ待機モードとは、"d" や "y" などのオペレータを入力した後、モーション -コマンドやテキストオブジェクトの入力を待機している状態のことです。例えば "dw" -の "w" はオペレータ待機モードでの入力です。 - -例えば、d<F7> コマンドで C プログラムのブロック ({}で囲まれたテキスト) を削除 -できるように、あるいは、y<F7> でブロックをヤンクできるようにしたい場合は、<F7> -をマップしてプログラムブロックを選択できるようにする必要があります。次のように -します: > - - :omap <F7> a{ - -オペレータ待機モードで <F7> を押すと "a{" によってブロックが選択されます。この -マップは、{ が押しにくい位置にあるキーボードでは便利です。 - - -マップの一覧を表示する ----------------------- - -定義されたマップの一覧を確認したい場合は、":map" コマンドを引数なしで実行しま -す。モード別のマップコマンドを使うこともできます。次のような一覧が表示されま -す: - - _g :call MyGrep(1)<CR> ~ - v <F2> :s/^/> /<CR>:noh<CR>`` ~ - n <F2> :.,$s/^/> /<CR>:noh<CR>`` ~ - <xHome> <Home> - <xEnd> <End> - - -最初の列は、マップが機能するモードを示しています。"n" はノーマルモード、"i" は -インサートモード、などなど。":map" で定義されたマップには空白が使われます。空 -白の場合はノーマルモードとビジュアルモードで使えます。 -この一覧を見れば、<> 表記で書いた特殊キーが正しく認識されているかを確認できま -す (カラー表示がサポートされている場合に限る)。例えば、<Esc> が色付きで表示さ -れていれば、それはエスケープ文字です。他のテキストと同じ色で表示されている場合 -は、それは "<Esc>" という 5 文字の文字列です。 - - -再マップ --------- - -マップは他のマップを含むことができます。例えば、上述の <F2> のマップは次のよう -に短くできます: > - - :map <F2> G<F3> - :imap <F2> <Esc><F3> - :map <F3> oDate: <Esc>:read !date<CR>kJ - -ノーマルモードの <F2> は、最後の行に移動して <F3> を押すようにマップされていま -す。インサートモードの <F2> は、<Esc> でインサートモードを停止して <F3> を押す -ようにマップされています。そして、<F3> には目的の機能がマップされています。 - -例えば、Ex モードはほとんど使わないので "Q" をテキスト整形コマンドとして使える -ようにしたい (昔の Vim はそういう動作でした) 場合は、次のようなマップを定義し -ます: > - - :map Q gq - -しかし、Ex モードが使いたくなることもあるかもしれません。"gQ" を Q にマップし -て、EX モードが使えるようにしましょう: > - - :map gQ Q - -この状態で "gQ" を入力すると "Q" にマップされます。ここまではいいですね。とこ -ろが、さらに "Q" が "gq" にマップされてしまいます。つまり、"gQ" は "gq" に変換 -されるので Ex モードを使うことはできないのです。 -再マップされないようにするには、":noremap" コマンドを使います: > - - :noremap gQ Q - -これで、マップされた "Q" に対して他のマップが適用されなくなります。同じような -コマンドがモード別に用意されています: - - :noremap ノーマルモード、ビジュアルモード、オペレータ待機モード - :vnoremap ビジュアルモード - :nnoremap ノーマルモード - :onoremap オペレータ待機モード - :noremap! インサートモード、コマンドライン - :inoremap インサートモード - :cnoremap コマンドライン - - -再帰マップ ----------- - -マップが自分自身を含んでいる場合、そのマップは永遠に動き続けます。これを利用す -れば、コマンドを無限に繰り返すことができます。 -例えば、いくつかのファイルがあって、すべてのファイルは一行目にバージョン番号が -書かれているとします。"vim *.txt" でそれらのファイルを開くと、一つ目のファイル -が開いた状態になります。次のマップを定義します: > - - :map ,, :s/5.1/5.2/<CR>:wnext<CR>,, - -そして、",," を入力してマップを実行します。このマップは一行目の "5.1" を "5.2" -に変更し、":wnext" で上書き保存してから次のファイルを開きます。マップの最後は -",," になっているので同じマップが再び適用され、置換と保存が実行されます。 -このマップは、何かエラーが発生するまで止まりません。このマップの場合、置換コマ -ンドの実行で "5.1" が見つからなかった場合にエラーが発生します。その場合は、 -"5.1" を挿入してから再びマップを実行します。最後のファイルに到達すると、 -":wnext" が失敗してマップが停止します。 -マップの途中でエラーが発生した場合は、そのマップの残りの部分は無視されます。 -マップは CTRL-C で中断できます (MS-WindowsではCTRL-Break)。 - - -マップを削除する ----------------- - -マップを削除するには ":unmap" コマンドを使います。このコマンドにも、モード別の -ものが用意されています: - - :unmap ノーマルモード、ビジュアルモード、オペレータ待機モード - :vunmap ビジュアルモード - :nunmap ノーマルモード - :ounmap オペレータ待機モード - :unmap! インサートモード、コマンドライン - :iunmap インサートモード - :cunmap コマンドライン - -例えば、ビジュアルモードを除き、ノーマルモードとオペレータ待機モードだけでマッ -プを定義したいような場合は次のトリックが使えます。最初に三つのモードでマップを -定義し、ビジュアルモードのマップだけを削除します: > - - :map <C-A> /---><CR> - :vunmap <C-A> - -"<C-A>" は CTRL-A キーとして解釈されます。 - -すべてのマップを削除するには |:mapclear| コマンドを使います。他のコマンドと同 -様に、これにもモード別のコマンドが用意されています。マップの削除はアンドゥでき -ないので注意してください。 - - -特殊文字 --------- - -":map" コマンドの後ろには他のコマンドを続けて書くことができます。その場合は | -文字でコマンドを区切ります。そのため、マップの中では | 文字が使えません。この -文字を使いたい場合は <Bar> (5文字) を使ってください。例: > - - :map <F8> :write <Bar> !checkin %<CR> - -同じ問題は ":unmap" コマンドにもあります。":unmap" の場合はさらに末尾のスペー -スにも注意しなければなりません。以下の二つのコマンドは動作が違います: > - - :unmap a | unmap b - :unmap a| unmap b - -一つ目のコマンドは "a " (スペース付き) のマップを削除します。 - -マップの中でスペースを使いたい場合は <Space> (7文字) を使ってください: > - - :map <Space> W - -このマップはスペースキーを押すと、次の単語 (空白区切り) に移動します。 - -マップコマンドの末尾にはコメントを付けられません。なぜなら、" 文字はマップの一 -部として処理されてしまうからです。代わりに |" を使ってください。これは、新しい -空のコマンドを開始して、そのコマンドにコメントをつけます。例: > - - :map <Space> W| " 次の単語に移動するのにスペースバーを使う - - -マップと短縮入力 ----------------- - -インサートモードのマップは短縮入力とよく似ています。引数は同じ方法で処理されま -す。主な違いは実行されるタイミングです。短縮入力は単語の後で単語以外の文字を入 -力したときに実行されます。マップはマップ文字列の最後の文字を入力したときに実行 -されます。 -違いは他にもあります。短縮入力では入力した文字がすぐに挿入されます。短縮入力が -実行されると元の文字が削除されて指定された文字列に置換されます。マップされた文 -字を入力したときは最後の文字を入力してマップが実行されるまで何も挿入されませ -ん。'showcmd' オプションがオンに設定されている場合は、入力途中の文字がウィンド -ウ下部に表示されます。 -マップがあいまいな場合は少し違う動作になります。例えば、次の二つのマップがある -とき: > - - :imap aa foo - :imap aaa bar - -"aa" と入力した時点では、一つ目のマップを適用すべきか、それとも二つ目のマップ -を使うべきか、判断できません。その場合は、他の文字が入力されるまで待機状態にな -ります。"a" を入力すると二つ目のマップが適用されて "bar" が挿入されます。他の -文字、例えばスペース、を入力すると一つ目のマップが適用されて "foo" が挿入さ -れ、さらにスペースが挿入されます。 - - -さらに... ---------- - -<script> キーワードを使うと、スクリプトローカルなマップを定義できます。 -|:map-<script>| 参照。 - -<buffer> キーワードを使うと、バッファローカルなマップを定義できます。 -|:map-<buffer>| 参照。 - -<unique> キーワードを使うと、定義しようとしたマップがすでに定義されていた場合 -にコマンドが失敗します。このキーワードを使わない場合は、古いマップが上書き定義 -されます。|:map-<unique>| 参照。 - -何もしないキーを定義したい場合は <Nop> (5文字) を使います。次のコマンドは、 -<F7> キーが何もしないように設定しています: > - - :map <F7> <Nop>| map! <F7> <Nop> -< -<Nop> の後に空白を入れないでください。 - -============================================================================== -*40.2* コマンドラインコマンドを定義する - -Vim では新しいコマンドを定義することができます。定義したコマンドはコマンドライ -ンモードの他のコマンドと同じように使えます。 -コマンドを定義するには ":command" コマンドを使います: > - - :command DeleteFirst 1delete - -":DeleteFirst" コマンドを実行すると、":1delete" が実行され、最初の行が削除され -ます。 - - Note: - ユーザー定義コマンドの名前は必ず大文字で開始する必要があります。":X"、 - ":Next"、":Print" を使うことはできません。アンダースコア ("_") も使え - ません。数字は使えますがお勧めしません。 - -ユーザー定義コマンドの一覧を見るには、次のコマンドを実行します: > - - :command - -組み込みコマンドと同じように、ユーザー定義コマンドも省略できます。他のコマンド -と区別するのに十分な長さの文字を入力するだけでコマンドを実行できます。コマンド -ライン補完を使って完全な名前を得ることもできます。 - - -引数の数 --------- - -ユーザー定義コマンドは引数を取ることができます。引数の数は -nargs オプションで -指定する必要があります。例えば、上述の :DeleteFirst コマンドは引数を取らないの -で、次のように定義できます: > - - :command -nargs=0 DeleteFirst 1delete - -指定が無ければ 0 が使われるので、わざわざ "-nargs=0" を指定する必要はありませ -ん。-nargs には次の値を指定できます: - - -nargs=0 引数なし - -nargs=1 引数 1 個 - -nargs=* いくつでも - -nargs=? 引数なし、もしくは 1 個 - -nargs=+ 引数 1 個以上 - - -引数の使い方 ------------- - -コマンド定義の中では、<args> キーワードを使って引数を表します。例: > - - :command -nargs=+ Say :echo "<args>" - -次のコマンドを実行すると: > - - :Say Hello World - -"Hello World" と表示されます。引数に引用符 (") が使われると、これはうまく動き -ません。例: > - - :Say he said "hello" - -特殊な文字が含まれているときにそれを適切にエスケープして文字列として使えるよう -にするには "<q-args>" を使います: > - - :command -nargs=+ Say :echo <q-args> - -上記の ":Say" コマンドを実行すると、次のコマンドが実行されます: > - - :echo "he said \"hello\"" -< -<f-args> キーワードを使うと、引数が関数呼び出しに適した形に展開されます。例: > - - :command -nargs=* DoIt :call AFunction(<f-args>) - :DoIt a b c - -次のコマンドが実行されます: > - - :call AFunction("a", "b", "c") - - -範囲指定 --------- - -いくつかのコマンドは範囲指定を受け付けますが、そのようなコマンドを定義したい場 -合は -range オプションを使います。このオプションには次の値を指定できます: - - -range 範囲指定を許可。省略時は現在行が選択される。 - -range=% 範囲指定を許可。省略時はファイル全体が選択される。 - -range={count} 範囲指定を許可。範囲指定の最後の数値だけを使う。省略時 - は {count} が使われる。 - -範囲指定を使う場合は、<line1> キーワードと <line2> キーワードを使って範囲の最 -初と最後の行を取得できます。例えば、次のコマンドは、指定された範囲のテキストを -"save_file" に保存するコマンドを定義しています: > - - :command -range=% SaveIt :<line1>,<line2>write! save_file - - -他のオプション --------------- - -使用できるオプションやキーワードは他にもあります: - - -count={number} カウント指定を受け付ける。省略時は {number}。 - カウント指定は <count> キーワードで取得できま - す。 - -bang ! の指定を受け付ける。! が使われた場合は - <bang> キーワードが ! に置き換わります。 - -register レジスタの指定を受け付ける。(省略時は無名レジ - スタ。) - 指定されたレジスタは <reg> (または <register>) - で取得できます。 - -complete={type} コマンドライン補完の種類を指定する。使用できる - 補完の種類は |:command-completion| を参照。 - -bar コマンドの後ろに | を使って他のコマンド (ある - いはコメント) を続けて書くことを許可する。 - -buffer カレントバッファでのみ使用できるコマンドを定義 - する。 - -最後に <lt> キーワードを説明します。これは文字 "<" を意味します。<> 表記をエス -ケープして、特殊な意味を消すために使います。 - - -再定義と削除 ------------- - -同じ名前のコマンドを再定義したい場合は ! を使います: > - - :command -nargs=+ Say :echo "<args>" - :command! -nargs=+ Say :echo <q-args> - -コマンドを削除したい場合は ":delcommand" を使います。削除したいコマンドの名前 -を引数に指定してください。例: > - - :delcommand SaveIt - -次のコマンドですべてのユーザー定義コマンドを削除できます: > - - :comclear - -コマンドの削除はアンドゥできないので注意してください。 - -ユーザー定義コマンドについての詳細はリファレンスマニュアルを参照してください。 -|user-commands|。 - -============================================================================== -*40.3* 自動コマンド - -自動コマンドとは、さまざまなイベントに応じて自動的に実行されるコマンドのことで -す。ファイルを読み書きしたり、バッファを切り替えたりしたときに実行されます。例 -えば、|gzip|プラグインは、圧縮ファイルを開くために自動コマンドを使っています。 -自動コマンドは非常に強力です。適切に使えばいろんな手間を省くことができます。し -かし、不適切な使い方をすればさまざまなトラブルの原因になります。 - -例えば、ファイルを保存するときに、保存した日付をファイル末尾に書き込んでみま -しょう。まず、次の関数を定義します: > - - :function DateInsert() - : $delete - : read !date - :endfunction - -ファイルを保存する直前にこの関数を実行したいわけです。次のコマンドで設定しま -す: > - - :autocmd FileWritePre * call DateInsert() - -"FileWritePre" は自動コマンドが実行されるイベントです。このイベントはファイル -を保存する直前に発行されます。"*" の部分はファイル名にマッチするパターンです。 -"*" はすべてのファイルにマッチします。 -この自動コマンドが設定された状態で ":write" を実行すると、ファイル名にマッチし -たすべての FileWritePre 自動コマンドが実行されてから、ファイルが保存されます。 -:autocmd の正式な書式は次のとおりです: > - - :autocmd [group] {events} {file_pattern} [nested] {command} - -[group] は省略可能です。コマンドを管理したり呼び出したりしたい場合に使います -(後述)。{events} はコマンドを実行するイベントのリストです (カンマ区切り)。 -{file_pattern} はファイル名です。ワイルドカードが使えます。例えば、"*.txt" な -ら ".txt" で終わるファイルに対してコマンドが実行されます。 [nested] は省略可能 -です。自動コマンドを再帰的に呼び出したい場合に指定します (下記参照)。そして、 -実行したいコマンドを {command} に指定します。 - - -イベント --------- - -BufReadPost は最も便利なイベントの一つです。これは新しいファイルを開いたときに -発行されます。普通はオプションを設定したりするのに使われます。例えば、"*.gsm" -というファイルを GNU アセンブリ言語のファイルとして扱いたい場合は、次のように -設定します: > - - :autocmd BufReadPost *.gsm set filetype=asm - -ファイルの種類が検出されて、'filetype' オプションが設定されると、Filetype イベ -ントが発行されます。このイベントはファイルの種類に応じて何かを実行したい場合に -使います。例えば、テキストファイルを開いたときに短縮入力の定義を読み込むには次 -のようにします: > - - :autocmd Filetype text source ~/.vim/abbrevs.vim - -新しいファイルを作成したときにスケルトンを挿入することもできます: > - - :autocmd BufNewFile *.[ch] 0read ~/skeletons/skel.c - -イベントの一覧は |autocmd-events| を参照してください。 - - -パターン --------- - -{file_pattern} 引数には複数のパターンをカンマ区切りで指定できます。例えば、 -"*.c,*.h" なら、末尾が ".c" と ".h" のファイルにマッチします。 -パターンには一般的なワイルドカードが使えます。次のようなものがよく使われます: - - * 何かの文字が何文字でも - ? 何かの文字が 1 つ - [abc] a か b か c - . ドット - a{b,c} ab か ac - -パターンにスラッシュ (/) が含まれている場合は、ディレクトリ名と比較されます。 -スラッシュが含まれていない場合は、ファイル名のみが使われます。例えば、 -"/home/biep/readme.txt" には "*.txt" がマッチします。"/home/biep/*" も同様に -マッチします。しかし、"home/foo/*.txt" はマッチしません。 -スラッシュが含まれているときは、ファイルの絶対パス ("/home/biep/readme.txt") -と相対パス (例えば "biep/readme.txt") の両方が比較されます。 - - Note: - MS-Windows のように、ディレクトリの区切りにバックスラッシュを使うよう - なシステムでもスラッシュを使ってパターンを指定することができます。 - バックスラッシュはエスケープする必要があるので、スラッシュを使ったほう - が簡単です。自動コマンドの移植性もあがります。 - - -自動コマンドを削除する ----------------------- - -自動コマンドの削除には、定義と同じコマンドを使います。ただし、削除するときは ! -を使い、{command} は指定しません。例: > - - :autocmd! FileWritePre * - -"FileWritePre" イベントの、"*" パターンを使っている自動コマンドがすべて削除さ -れます。 - - -一覧表示する ------------- - -定義されている自動コマンドの一覧を見るには次のようにします: > - - :autocmd - -とても長い出力が表示されます。ファイルタイプの認識が有効になっている場合は特に -長くなります。一部のコマンドだけを表示したい場合は、グループ、イベント、パター -ンのどれかを指定してください。例えば、次のコマンドで BufNewFile に設定された自 -動コマンドを表示できます: > - - :autocmd BufNewFile - -"*.c" に対する自動コマンドを表示したい場合は次のようにします: > - - :autocmd * *.c - -イベントに "*" を指定すると、すべてのイベントが表示されます。cprograms グルー -プの自動コマンドを表示したい場合は次のようにします: > - - :autocmd cprograms - - -グループ --------- - -自動コマンドを定義するとき、{group} を指定することで、関連した自動コマンドをグ -ループ化できます。例えば、特定のグループの自動コマンドをまとめて削除したりでき -ます。 -自動コマンドをグループ化するには、":augroup" コマンドを使います。例えば、C 言 -語用の自動コマンドを定義してみましょう: > - - :augroup cprograms - : autocmd BufReadPost *.c,*.h :set sw=4 sts=4 - : autocmd BufReadPost *.cpp :set sw=3 sts=3 - :augroup END - -次のように書くこともできます: > - - :autocmd cprograms BufReadPost *.c,*.h :set sw=4 sts=4 - :autocmd cprograms BufReadPost *.cpp :set sw=3 sts=3 - -"cprograms" グループのすべての自動コマンドを削除するには、次のようにします: > - - :autocmd! cprograms - - -ネスト ------- - -通常は、自動コマンドの中で実行されたコマンドによってイベントが発行されることは -ありません。例えば、FileChangedShell イベントの中でファイルを読み込んでも、シ -ンタックスを設定するための自動コマンドは実行されません。イベントを発行させたい -場合は "nested" 引数を指定してください: > - - :autocmd FileChangedShell * nested edit - - -自動コマンドを実行する ----------------------- - -擬似的にイベントを発行して、自動コマンドを実行することができます。自動コマンド -の中から他の自動コマンドを実行するような場合に便利です。例: > - - :autocmd BufReadPost *.new execute "doautocmd BufReadPost " . expand("<afile>:r") - -新しいファイルが開かれたときに実行される自動コマンドを定義しています。ファイル -名の末尾が ".new" になっているものが対象です。":execute" コマンドは、引数を評 -価した結果をコマンドとして実行します。例えば、"tryout.c.new" を開くと、次のコ -マンドが実行されます: > - - :doautocmd BufReadPost tryout.c - -expand() 関数に指定された "<afile>" が自動コマンドで使われたファイル名に展開さ -れ、":r" によって、そのルート部分 (訳注: .newを除いた部分) が使われます。 - -":doautocmd" はカレントバッファの上で実行されます。":doautoall" コマンドは、 -":doautocmd" と同じ操作をすべてのバッファに対して実行します。 - - -ノーマルモードコマンドを使う ----------------------------- - -自動コマンドで使用できるのはコマンドラインコマンドです。ノーマルモードコマンド -を使いたい場合は ":normal" コマンドを使ってください。例: > - - :autocmd BufReadPost *.log normal G - -*.log ファイルを開くと、ファイル末尾にカーソルがジャンプします。 -":normal" コマンドは少し複雑です。指定するコマンドは完結していなければなりませ -ん。例えば、"i" でインサートモードに入ったら、<Esc> でモードを抜ける必要があり -ます。"/" で検索する場合は、<CR> で検索を実行する必要があります。 -":normal" コマンドはすべてのテキストを引数として解釈するので、| を使って他のコ -マンドを続けて書くことはできません。それが必要な場合は ":execute" コマンドの中 -で ":normal" コマンドを実行してください。":execute" を使うと、特殊文字を指定す -るのが簡単になります。例: > - - :autocmd BufReadPost *.chg execute "normal ONew entry:\<Esc>" | - \ 1read !date - -長いコマンドを見やすくするために、バックスラッシュを使って複数行に分けていま -す。この方法はスクリプトファイルの中だけで使えます (コマンドラインで入力すると -きは使えません)。 - -自動コマンドの中で複雑なことを実行すると、必然的にカーソルの位置が変わってしま -います。それを元に戻す方法については |restore-position| を参照してください。 - - -イベントの無効化 ----------------- - -自動コマンドを実行して欲しくないときは、'eventignore' オプションに無視したいイ -ベントを設定してください。例えば、次のように設定すると、他のウィンドウに移動し -たときのイベントが無視されます: > - - :set eventignore=WinEnter,WinLeave - -すべてのイベントを無視するには、次のように設定します: > - - :set eventignore=all - -通常の状態に戻すには、'eventignore' を空に設定します: > - - :set eventignore= - -============================================================================== - -次章: |usr_41.txt| Vim スクリプト書法 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_41.jax b/doc/usr_41.jax deleted file mode 100644 index d6cc12425..000000000 --- a/doc/usr_41.jax +++ /dev/null @@ -1,2415 +0,0 @@ -*usr_41.txt* For Vim バージョン 7.3. Last change: 2011 Jun 19 - - VIM USER MANUAL - by Bram Moolenaar - - Vim スクリプト書法 - - -Vim スクリプト言語は vimrc ファイルや構文ファイルなど、さまざまな目的に使われ -ます。この章では Vim スクリプトの書き方を説明します。説明することがたくさんあ -るので大きな章になってます。 - -|41.1| はじめに -|41.2| 変数 -|41.3| 式 -|41.4| 条件式 -|41.5| 式を実行する -|41.6| 関数を使う -|41.7| 関数を定義する -|41.8| リストと辞書 -|41.9| 例外 -|41.10| 注意事項 -|41.11| プラグインを書く -|41.12| ファイルタイププラグインを書く -|41.13| コンパイラプラグインを書く -|41.14| プラグインを書く (高速ロード版) -|41.15| ライブラリスクリプトを書く -|41.16| Vim スクリプトを配布する - -次章: |usr_42.txt| 新しいメニューを追加する -前章: |usr_40.txt| 新しいコマンドを作る -目次: |usr_toc.txt| - -============================================================================== -*41.1* はじめに *vim-script-intro* *script* - -誰もが最初に触れる Vim スクリプトは vimrc ファイルです。Vim が起動するときに読 -み込まれ、書かれているコマンドが実行されます。それにより好きなように設定を変更 -できます。vimrc の中ではすべてのコロンコマンドが使えます (":" で始まるコマンド -のこと。Ex コマンドやコマンドラインコマンドと呼ばれることもある)。 -シンタックスファイルも Vim スクリプトです。シンタックスファイルは、ファイルタ -イプ別にオプションを設定するファイルの一種です。複雑なマクロ定義を別ファイルに -分けて保存しておくこともできます。このように、いろいろな使用方法が考えられま -す。 - -簡単な例から始めましょう: > - - :let i = 1 - :while i < 5 - : echo "count is" i - : let i += 1 - :endwhile -< - Note: - 実際には ":" を書く必要はありません。":" が必要なのはコマンドラインで - 入力するときだけです。Vim スクリプトファイルを書くときは省略できます。 - このヘルプでは、コロンコマンドであることを強調し、ノーマルモードと区別 - するためにコロンを表記しています。 - Note: - 例文をヤンクして :@" コマンドで実際に実行できます。 - -出力は次のようになります: - - count is 1 ~ - count is 2 ~ - count is 3 ~ - count is 4 ~ - -一行目では ":let" コマンドで変数に値を代入しています。書式は次のとおりです: > - - :let {変数名} = {式} - -例では、変数名が "i"、式が 1 です。 -":while" コマンドでループを開始します。書式は次のとおりです: > - - :while {条件式} - : {ステートメント} - :endwhile - -条件式が真である間、ステートメントが実行されます。例では、条件式は "i < 5" で -す。これは、i が 5 より小さい場合に真になります。 - Note: - 何かのミスで while ループが止まらなかった場合は、CTRL-C を押せば中断で - きます (MS-Windows では CTRL-Break)。 - -":echo" コマンドは引数を出力します。例では、"count is" という文字列と、変数 i -の値を出力しています。i が 1 なら、次のように表示されます: - - count is 1 ~ - -":let i += 1" は ":let i = i + 1" と同じ意味です。変数 i に 1 を加算し、新しい -値を同じ変数に代入します。 - -上述の例は、実際にはもっと簡潔に書くことができます: > - - :for i in range(1, 4) - : echo "count is" i - :endfor - -|:for| と |range()| の説明はもっと先です。すぐに知りたい人はリンク先にジャンプ -してください。 - - -三種類の数値 ------------- - -数値は10進数、16進数、8進数のいずれかで表記します。16進数は "0x" か "0X" で開 -始します。例えば "0x1f" は10進数の 31 です。8進数は "0" で開始します。例えば -"017" は10進数の 15 です。注意: 10進数で書くときは先頭に "0" を付けないでくだ -さい。8進数として扱われてしまいます。 -":echo" コマンドは常に10進数で出力します。例: > - - :echo 0x7f 036 -< 127 30 ~ - -数値にマイナス記号を付けると負数になります。8進数や16進数も負数にできます。マ -イナス記号は減算記号としても使われます。次の例を上の例と比べてみてください: > - - :echo 0x7f -036 -< 97 ~ - -式の途中にある空白は無視されますが、可読性を高めるために、適切に空白で区切るこ -とをお勧めします。例えば上記の数値が負数であると勘違いしてしまわないように、マ -イナス記号と数値の間に空白をいれましょう: > - - :echo 0x7f - 036 - -============================================================================== -*41.2* 変数 - -変数名にはアルファベット、数字、アンダースコアが使えます。変数名を数字で開始す -ることはできません。次のような変数名が使えます: - - counter - _aap3 - very_long_variable_name_with_underscores - FuncLength - LENGTH - -"foo+var" や "6var" のような名前は使えません。 -例に挙げた変数はグローバル変数です。定義されている変数の一覧を見るのは次のコマ -ンドを使います: > - - :let - -グローバル変数はどこでも使えます。そのため、あるスクリプトファイルで "count" -という変数を使ったとき、その変数は他のスクリプトでも使われている可能性がありま -す。これは混乱を招きますし、トラブルの元です。それを避けるには "s:" を付けてス -クリプトローカル変数を使います。例えば、次のように使います: > - - :let s:count = 1 - :while s:count < 5 - : source other.vim - : let s:count += 1 - :endwhile - -"s:count" はスクリプトローカル変数なので、他のスクリプトファイルによって変更さ -れる心配はありません。他のスクリプトファイルで "s:count" 変数が使われていたと -しても、それは別の変数です。スクリプトローカル変数についての詳細は -|script-variable| を参照してください。 - -変数の種類は他にもあります。|internal-variables| 参照。次の変数がよく使われま -す: - - b:name バッファローカル変数 - w:name ウィンドウローカル変数 - g:name グローバル変数 (関数内では g: 必須) - v:name Vim が定義する変数 - - -変数の削除 ----------- - -変数はメモリを消費します。":let" コマンドの出力にも表示されます。変数を削除す -るには ":unlet" コマンドを使います。例: > - - :unlet s:count - -スクリプトローカル変数の "s:count" が削除され、使用されていたメモリが開放され -ます。変数が存在しない場合でもエラーを起こしたくない場合は ! を付けてください: -> - :unlet! s:count - -スクリプトの実行が終了したとき、ローカル変数は自動的には削除されません。次に同 -じスクリプトを実行したときにその変数を使うことができます。例: > - - :if !exists("s:call_count") - : let s:call_count = 0 - :endif - :let s:call_count = s:call_count + 1 - :echo "called" s:call_count "times" - -"exists()" 関数は変数が定義されているかどうかをチェックします。引数に調べたい -変数の名前を指定します。変数自体を指定するのではありません。例えば: > - - :if !exists(s:call_count) - -これは、s:call_count の値を変数名として exists() 関数を呼び出しているので、意 -味が違ってしまいます。 -感嘆符 (! 記号) は値を反転します。値が真なら偽になり、偽なら真になります。この -記号は "not" と読むことができます。つまり、"if !exists()" は "if not exists()" -と読むことができます。 -Vim では、0 以外の値はすべて真です。0 は偽です。 - Note: - 数値が必要なところで文字列を使ったとき、文字列は自動的に数値に変換され - ます。文字列の先頭が数字ではなかった場合は 0 に変換されます。つまり: > - :if "true" -< "true" は 0 に変換されるので偽になります。 - - -文字列変数と定数 ----------------- - -ここまでは変数の値に数値だけを使っていましたが、文字列を使うこともできます。 -Vim は数値と文字列を基本型としてサポートしています。変数は動的に型付けされま -す。型は ":let" コマンドで変数に値を代入するたびに変化します。詳しくは|41.8| -を参照してください。 -変数に文字列を代入するには文字列定数を使う必要があります。文字列定数には二つの -種類があります。一つはダブルクオート文字列です: > - - :let name = "peter" - :echo name -< peter ~ - -文字列の中でダブルクオートを使いたい場合は、バックスラッシュを前置してくださ -い: > - - :let name = "\"peter\"" - :echo name -< "peter" ~ - -バックスラッシュを使いたくない場合はシングルクオート文字列を使ってください: > - - :let name = '"peter"' - :echo name -< "peter" ~ - -シングルクオート文字列の中ではすべての文字がそのまま使われます。ただし、シング -ルクオートだけは特別で、一つのシングルクオートを表すためには二つのシングルク -オートを書く必要があります。バックスラッシュはそのまま使われるので、特殊文字は -使えません。 -ダブルクオート文字列の中では特殊文字が使えます。次のようなものがあります: - - \t <Tab> - \n <NL>, 改行 - \r <CR>, <Enter> - \e <Esc> - \b <BS>, バックスペース - \" " - \\ \, バックスラッシュ - \<Esc> <Esc> - \<C-W> CTRL-W - -最後の二つはただの一例です。"\<name>" 形式で "name" という特殊キーを使うことが -できます。 -文字列で使える特殊表記については |expr-quote| を参照してください。 - -============================================================================== -*41.3* 式 - -Vim の式は高機能でシンプルです。式の定義については |expression-syntax| を参照 -してください。ここでは基本的なことだけを説明します。 -数値と文字列と変数はそれ自体が式です。つまり、式が必要なところでは数値でも文字 -列でも変数でも使えます。他にも次のようなものが使えます: - - $NAME 環境変数 - &name オプション - @r レジスタ - -例: > - - :echo "The value of 'tabstop' is" &ts - :echo "Your home directory is" $HOME - :if @a > 5 - -&name 形式を使うと、オプションを保存し、別の値に設定し、何かを実行して、オプ -ションを元に戻す、というようなことができます。例: > - - :let save_ic = &ic - :set noic - :/The Start/,$delete - :let &ic = save_ic - -'ignorecase' オプションをオフにしてから "The Start" パターンを検索しています。 -しかし設定は変更されません。(パターンに "\C" を加える方法でも同じことができま -す。|/\C| 参照。) - - -数値計算 --------- - -基本的な要素を組み合わせると面白くなってきます。まずは数値計算です: - - a + b 加算 - a - b 減算 - a * b 乗算 - a / b 除算 - a % b 剰余演算(余りを得る) - -演算子の優先順位は一般的な規則と同じです: > - - :echo 10 + 5 * 2 -< 20 ~ - -カッコを使って優先順位を変更できます: > - - :echo (10 + 5) * 2 -< 30 ~ - -文字列は "." で連結できます: > - - :echo "foo" . "bar" -< foobar ~ - -":echo" コマンドに複数の引数を指定すると、スペースで区切られて表示されます。こ -れらの例では一つの式しか使われていないので、スペースは挿入されていません。 - -C 言語と同じ条件演算子も使えます: - - a ? b : c - -"a" が真なら "b" が使われ、そうでなければ "c" が使われます。例: > - - :let i = 4 - :echo i > 5 ? "i is big" : "i is small" -< i is small ~ - -被演算子の部分は優先的に評価されるので、次のように見なすことができます: - - (a) ? (b) : (c) - -============================================================================== -*41.4* 条件式 - -":if" コマンドは条件が真の場合に ":endif" までのステートメントを実行します。書 -式は次のとおり: - - :if {condition} - {statements} - :endif - -{condition} を評価した結果が真 (0以外) であれば、{statements} の内容が実行され -ます。{statements} は正しく記述されている必要があります。不正な記述があると -":endif" までたどり着けません。 -":else" を使うこともできます。書式は次のとおり: - - :if {condition} - {statements} - :else - {statements} - :endif - -二つ目の {statements} は条件が偽の場合にだけ実行されます。 -":elseif" を使うこともできます: - - :if {condition} - {statements} - :elseif {condition} - {statements} - :endif - -これは ":else" に続けて "if" 文を使うのと同じ動作ですが、余計な ":endif" を使 -わなくて済みます。 -vimrc ファイルで便利に使える例を示しましょう。'term' オプションの値を調べ、そ -の値に応じて処理を分けます: > - - :if &term == "xterm" - : " xterm 用の設定 - :elseif &term == "vt100" - : " vt100 端末用の設定 - :else - : " その他の端末用の設定 - :endif - - -論理演算子 ----------- - -今までの説明で既に論理演算子を使いました。次の演算子がよく使われます: - - a == b 等しい - a != b 等しくない - a > b より大きい - a >= b より大きいか等しい - a < b より小さい - a <= b より小さいか等しい - -条件が成立するなら 1、そうでなければ 0 が返ります。例: > - - :if v:version >= 700 - : echo "おめでとう" - :else - : echo "古いバージョンを使っています。更新してね!" - :endif - -"v:version" は Vim によって定義されている変数で、Vim のバージョンが入っていま -す。バージョン 6.0 なら 600、バージョン 6.1 なら 601 です。これは複数のバー -ジョンに対応するスクリプトを書くときに便利です。|v:version| - -論理演算子は数値でも文字列でも扱えます。文字列どうしを比較するときは数学的な差 -が比較されます。文字のバイト値を比較するので、一部の言語では正しい結果にならな -いかもしれません。 -文字列と数値を比較するときは、文字列を数値に変換します。文字列が数字ではなかっ -たときは 0 になるので注意してください。例: > - - :if 0 == "one" - : echo "yes" - :endif - -これは "yes" と表示されます。"one" は数字ではないので 0 に変換されるのです。 - -文字列にはさらに二つの論理演算子があります: - - a =~ b パターンにマッチする - a !~ b パターンにマッチしない - -左辺の "a" は文字列として扱われます。右辺の "b" は検索パターンとして扱われま -す。例: > - - :if str =~ " " - : echo "str にはスペースが含まれている" - :endif - :if str !~ '\.$' - : echo "str の末尾はピリオドではない" - :endif - -パターンを指定するのにシングルクオート文字列を使うのがコツです。ダブルクオート -文字列ではバックスラッシュを二重に書く必要があり、そして、検索パターンではバッ -クスラッシュをよく使うので、バックスラッシュだらけになってしまいます。 - -文字列を比較するときは 'ignorecase' オプションが使われます。大文字小文字の区別 -を明示的に指定したい場合は比較演算子に "#" (区別する) または "?" (区別しない) -をつけます。大文字小文字を区別せずに等しいかどうかを比較したい場合は "==?" を -使います。"!~#" ならパターンにマッチしないことを、大文字と小文字を区別して確認 -できます。演算子の一覧は |expr-==| を参照してください。 - - -他のループコマンド ------------------- - -":while" コマンドは既に説明しました。":while" ループの中では二つのステートメン -トが使えます: - - :continue ループの先頭にジャンプしてループを継続する。 - :break ":endwhile" までジャンプしてループを脱ける。 - -例: > - - :while counter < 40 - : call do_something() - : if skip_flag - : continue - : endif - : if finished_flag - : break - : endif - : sleep 50m - :endwhile - -":sleep" コマンドは Vim を一定時間停止します。"50m" は 50 ミリ秒です。 -":sleep 4" なら 4 秒間スリープします。 - -":for" コマンドを使ってループすることもできます。|41.8|を参照。 - -============================================================================== -*41.5* 式を実行する - -今まではコマンドを直接書いてきました。":execute" コマンドを使うと、式の評価結 -果をコマンドとして実行できます。これによってコマンドを動的に生成することができ -ます。 -例えば、変数に格納された文字列を使ってタグジャンプするには次のようにします: > - - :execute "tag " . tag_name - -文字列 "tag " と変数 "tag_name" の値を "." で連結しています。仮に "tag_name" -の値が "get_cmd" だった場合、次のコマンドが実行されることになります: > - - :tag get_cmd - -":execute" コマンドはコロンコマンドのみ実行できます。":normal" コマンドでノー -マルモードコマンドを実行できますが、このコマンドの引数は文字がそのまま使われ、 -式としては評価されません。例: > - - :normal gg=G - -このコマンドは一行目にジャンプしてから "=" オペレータですべての行を整形しま -す。 -":normal" コマンドで式の値を使いたい場合は ":execute" と組み合わせてください。 -例: > - - :execute "normal " . normal_commands - -変数 "normal_commands" にはノーマルモードコマンドを入れておく必要があります。 -":normal" には完結したコマンドを指定するようにしてください。引数が最後まで実行 -された段階でコマンドは中断されます。例えば、インサートモードを開始した場合はイ -ンサートモードを終了しなくてはなりません。次のコマンドは正しく動作します: > - - :execute "normal Inew text \<Esc>" - -これは現在行に "new text" を挿入します。特殊キー "\<ESC>" を使っていることに注 -目してください。これによりスクリプトの中で本物の <Esc> 文字を使わないですみま -す。 - -文字列を実行するのではなく、その式の値を得たい場合は、eval() 関数を使います: > - - :let optname = "path" - :let optval = eval('&' . optname) - -文字 "&" と "path" を連結しているので eval() の引数は "&path" になります。返り -値は 'path' オプションの値です。 -次のようにすることもできます: > - :exe 'let optval = &' . optname - -============================================================================== -*41.6* 関数を使う - -たくさんの関数があらかじめ定義され、豊富な機能が提供されています。このセクショ -ンの説明にもいくつか登場します。関数の一覧は |functions| を参照してください。 - -関数は ":call" コマンドで呼び出します。引数はカッコで囲み、それぞれをカンマで -区切ります。例: > - - :call search("Date: ", "W") - -これは "Date: " と "W" を引数にして search() 関数を呼び出しています。search() -関数は一つ目の引数を検索パターンとして使い、二つ目の引数をフラグとして使いま -す。"W" フラグを指定するとファイル末尾で検索が終了します (折り返さない)。 - -関数は式の中で使うこともできます。例: > - - :let line = getline(".") - :let repl = substitute(line, '\a', "*", "g") - :call setline(".", repl) - -getline() 関数はカレントバッファから行を取得する関数です。引数には行番号を指定 -します。この例では "." ですが、これはカーソルのある行を示します。 -substitute() 関数は ":substitute" コマンドとほぼ同じです。最初の引数は置換対象 -の文字列、二つ目の引数はパターン、三つ目は置き換え文字列、最後はフラグです。 -setline() 関数は行の内容を置き換えます。最初の引数は行番号、二つ目の引数は置き -換える文字列です。この例では、substitute() の結果で現在行を置き換えています。 -上記の三行のコマンドは次のコマンドと同じことをしています: > - - :substitute/\a/*/g - -substitute() コマンドの前後にいろいろな処理を入れたりすると、もっと面白いこと -ができるようになります。 - - -関数一覧 *function-list* --------- - -たくさんの関数があります。ここでは機能別に分類して紹介します。アルファベット順 -の一覧は |functions| を参照してください。関数の名前の上で CTRL-] を押すと、詳 -細な説明にジャンプできます。 - -文字列繰作: *string-functions* - nr2char() ASCII値から文字を得る - char2nr() 文字のASCII値を得る - str2nr() 文字列を数値に変換する - str2float() 文字列を浮動小数点数に変換する - printf() 書式付き文字列を整形する - escape() 文字列の特定の文字を '\' でエスケープ - shellescape() シェルコマンドで使えるように文字列をエスケープ - fnameescape() Vim コマンド用にファイル名をエスケープ - tr() ある文字の集合から別の文字の集合へ置換する - strtrans() 文字列を印刷可能な状態とする - tolower() 文字列を小文字にする - toupper() 文字列を大文字にする - match() 文字列の中でパターンにマッチした位置 - matchend() 文字列の中でパターンにマッチした末尾の位置 - matchstr() 文字列の中でパターンにマッチした文字列 - matchlist() matchstr()と同様だが、部分マッチも返す - stridx() 文字列の中で部分文字列が見つかった最初の位置 - strridx() 文字列の中で部分文字列が見つかった最後の位置 - strlen() 文字列の長さ - substitute() パターンにマッチする文字列を置換 - submatch() ":s" と substitute() の中で部分マッチを得る - strpart() 文字列の一部分を得る - expand() 特殊キーワードを展開する - iconv() テキストのエンコーディングを変換する - byteidx() 文字列中の文字のバイトインデックス - repeat() 文字列を複数回繰り返す - eval() 文字列を式として評価する - -リスト操作: *list-functions* - get() 要素を取得。存在しないインデックスでもエラーを - 出さない - len() リスト中の要素の個数 - empty() リストが空であるか判定する - insert() リストの任意の位置に要素を挿入する - add() リストに要素を追加する - extend() リストにリストを連結する - remove() リストから1個以上の要素を取り除く - copy() リストの浅いコピーを作成する - deepcopy() リストの完全なコピーを作成する - filter() リストから選択された要素を取り除く - map() リストの各要素を変換する - sort() リストをソートする - reverse() リストの並び順を反転させる - split() 文字列を分割し、リストにする - join() リストの要素を連結し、文字列にする - range() 数列リストを返す - string() リストの文字列表現 - call() リストを引数として関数を呼ぶ - index() リスト中の要素のインデックス - max() リスト中の最大値 - min() リスト中の最小値 - count() ある要素がリスト中に出現する回数を返す - repeat() リストを複数回繰り返す - -辞書操作: *dict-functions* - get() 辞書の要素を返す。存在しないキーでもエラーを出 - さない - len() 辞書の要素の個数 - has_key() あるキーが辞書に含まれているか判定する - empty() 辞書が空であるか判定する - remove() 辞書から要素を取り除く - extend() ある辞書の要素をすべて別の辞書に追加する - filter() 辞書から選択された要素を取り除く - map() 辞書の各要素を変換する - keys() 辞書の全キーのリストを取得する - values() 辞書の全値のリストを取得する - items() 辞書の全キー・値のペアを取得する - copy() 辞書の浅いコピーを作成する - deepcopy() 辞書の完全なコピーを作成する - string() 辞書の文字列表現 - max() 辞書中の最大値 - min() 辞書中の最小値 - count() ある値が出現する回数を返す - -浮動小数点数の計算: *float-functions* - float2nr() Float を Number に変換 - abs() 絶対値 (Numberも処理可能) - round() 丸め - ceil() 切り上げ - floor() 切り下げ - trunc() 少数切り捨て - log10() 10 を底とする対数 - pow() x の y 乗 - sqrt() 平方根 - sin() sine - cos() cosine - tan() tangent - asin() arc sine - acos() arc cosine - atan() arc tangent - atan2() arc tangent - sinh() hyperbolic sine - cosh() hyperbolic cosine - tanh() hyperbolic tangent - -変数: *var-functions* - type() 変数の型 - islocked() 変数がロックされているか判定する - function() 関数名からFuncrefを取得する - getbufvar() 指定バッファの変数値を得る - setbufvar() 指定バッファに変数を設定する - getwinvar() 指定ウィンドウの変数値を得る - gettabvar() 指定タブページから変数値を得る - gettabwinvar() 指定ウィンドウ・タブページから変数値を取得する - setwinvar() 指定ウィンドウに変数を設定する - settabvar() 指定タブページに変数を設定する - settabwinvar() 指定ウィンドウ・タブページに変数を設定する - garbagecollect() 開放可能なメモリを解放する - -カーソルとマークの位置: *cursor-functions* *mark-functions* - col() カーソルやマークの列番号を得る - virtcol() カーソルやマークの画面上の列番号を得る - line() カーソルやマークの行番号を得る - wincol() カーソルのウィンドウでの列番号 - winline() カーソルのウィンドウでの行番号 - cursor() カーソルを指定した位置に移動させる - getpos() カーソルやマークなどの位置を取得する - setpos() カーソルやマークなどの位置を設定する - byte2line() 指定のバイト位置の行番号を得る - line2byte() 指定の行のバイト位置を得る - diff_filler() ある行より上の詰め行の数を取得する - -カレントバッファで動作するもの: *text-functions* - getline() バッファから行を得る - setline() バッファの行を置き換える - append() 行または行のリストをバッファに追加する - indent() 行のインデントを得る - cindent() C 言語におけるインデントを得る - lispindent() Lisp 言語におけるインデントを得る - nextnonblank() 次の非空行を探す - prevnonblank() 前の非空行を探す - search() パターンにマッチする場所を探す - searchpos() パターンにマッチする場所を探す - searchpair() start/skip/end の対を探す - searchpairpos() start/skip/end の対を探す - searchdecl() 名前が宣言されている場所を探す - - *system-functions* *file-functions* -システム関数とファイル繰作: - glob() ワイルドカードを展開する - globpath() 複数のディレクトリを対象にワイルドカードを展開 - findfile() 複数のディレクトリからファイルを探す - finddir() 複数のディレクトリからディレクトリを探す - resolve() ショートカットのリンク先を得る - fnamemodify() ファイル名を修飾する - pathshorten() パス中のディレクトリ名を短くする - simplify() パスの意味を変えずに簡略化する - executable() 実行形式ファイルかどうかをチェックする - filereadable() ファイルが読み込み可能かどうかをチェックする - filewritable() ファイルが書き込み可能かどうかをチェックする - getfperm() ファイルのパーミッションを得る - getftype() ファイルの種類を得る - isdirectory() ディレクトリの存在をチェックする - getfsize() ファイルのサイズを得る - getcwd() カレントディレクトリを得る - tempname() 一時ファイルの名前を得る - mkdir() ディレクトリを作成する - delete() ファイルを削除する - rename() ファイルの名前を変更する - system() シェルコマンドを実行し、その結果を得る - hostname() システムの名称を得る - readfile() ファイルを読み込み、行のリストを得る - writefile() 行のリストをファイルに書き込む - -日付と時刻: *date-functions* *time-functions* - getftime() ファイルの最終更新日時を得る - localtime() 現在時刻を秒単位で得る - strftime() 時刻を文字列に変換する - reltime() 現在時刻または経過時間を正確に取得する - reltimestr() reltime()の結果を文字列に変換する - - *buffer-functions* *window-functions* *arg-functions* -バッファ、ウィンドウ、引数リスト: - argc() 引数リストの大きさ - argidx() 引数リスト中の現在の位置 - argv() 引数リストの中身を得る - bufexists() バッファの存在をチェックする - buflisted() バッファが存在し、リストされているかどうか - bufloaded() バッファが存在し、ロードされているかどうか - bufname() バッファの名前を得る - bufnr() バッファの番号を得る - tabpagebuflist() タブページ中のバッファのリストを返す - tabpagenr() タブページの番号を取得する - tabpagewinnr() タブページを対象にwinnr()と同様 - winnr() カレントウィンドウの番号を得る - bufwinnr() バッファのウィンドウ番号を得る - winbufnr() ウィンドウのバッファ番号を得る - getbufline() バッファの行のリストを得る - -コマンドライン: *command-line-functions* - getcmdline() 現在のコマンドラインを取得 - getcmdpos() コマンドラインにおけるカーソル位置を取得 - setcmdpos() コマンドラインにおけるカーソル位置を設定 - getcmdtype() 現在のコマンドラインの種類を返す - -Quickfixとロケーションリスト: *quickfix-functions* - getqflist() quickfixエラーのリスト - setqflist() quickfixを変更する - getloclist() ロケーションリストの項目のリスト - setloclist() ロケーションリストを変更する - -インサートモード補完: *completion-functions* - complete() 補完候補を設定する - complete_add() 補完候補を追加する - complete_check() 補完処理を終えるべきかどうかをチェックする - pumvisible() ポップアップメニューが表示されているかチェック - -折り畳み: *folding-functions* - foldclosed() 行が折り畳まれているかどうかをチェックする - foldclosedend() foldclosed()と同様。折り畳み末尾の行番号を返す - foldlevel() 行の折り畳みレベルを得る - foldtext() 閉じた折り畳みを代替表示するテキストを生成 - foldtextresult() 閉じた折り畳みを代替表示するテキストを得る - -シンタックスハイライト: *syntax-functions* *highlighting-functions* - clearmatches() |matchadd()|と|:match|コマンドで定義されたマッ - チをクリアする - getmatches() |matchadd()|と|:match|コマンドで定義されたすべ - てのマッチを得る - hlexists() ハイライトグループの存在をチェック - hlID() ハイライトグループのIDを得る - synID() 指定位置のシンタックスIDを得る - synIDattr() シンタックスIDから指定の属性を得る - synIDtrans() 変換したシンタックスIDを得る - synstack() 指定位置のシンタックスIDのリストを得る - synconcealed() conceal の情報を得る - diff_hlID() diffモードの指定位置のシンタックスIDを得る - matchadd() 強調表示するパターンを定義する - matcharg() |:match|の引数の情報を得る - matchdelete() |matchadd()|と|:match|コマンドで定義されたマッ - チを削除する - setmatches() |getmatches()|で得たマッチを使って復元する - -スペリング: *spell-functions* - spellbadword() カーソル位置以降のスペルミスを探す - spellsuggest() スペル訂正の候補を返す - soundfold() 単語の同音等値(sound-a-like equivalent)を返す - -履歴: *history-functions* - histadd() 履歴に項目を追加 - histdel() 履歴から項目を削除 - histget() 履歴の項目を得る - histnr() 履歴リストの最大インデックスを得る - -対話インターフェース: *interactive-functions* - browse() ファイル選択ダイアログを開く - browsedir() ディレクトリ選択ダイアログを開く - confirm() ユーザーに選択をさせる - getchar() ユーザーが入力した文字を得る - getcharmod() 最後に入力した文字の修飾子(modifier)を得る - feedkeys() 先行入力キューに文字を入れる - input() ユーザーが入力した行を得る - inputlist() ユーザーにリストから項目を選択させる - inputsecret() ユーザーが入力した行を得る。ただし表示はしない - inputdialog() ダイアログを使ってユーザーが入力した行を得る - inputsave() 先行入力キューを保存して空にする - inputrestore() inputsave()で保存した状態に戻す - -GUI: *gui-functions* - getfontname() 現在使われているフォントの名前を取得 - getwinposx() GUIのVimウィンドウのX座標 - getwinposy() GUIのVimウィンドウのY座標 - -Vimサーバ: *server-functions* - serverlist() サーバ名のリストを返す - remote_send() Vimサーバにコマンド文字を送る - remote_expr() Vimサーバで式を評価する - server2client() Vimサーバのクライアントに応答を返す - remote_peek() Vimサーバから返信があったかどうかをチェック - remote_read() Vimサーバからの返信を読む - foreground() Vimのウィンドウを前面に持ってくる - remote_foreground() Vimサーバのウィンドウを前面に持ってくる - -ウィンドウサイズと位置: *window-size-functions* - winheight() ウィンドウの高さを取得 - winwidth() ウィンドウの幅を取得 - winrestcmd() ウィンドウサイズを復元するコマンドを返す - winsaveview() カレントウィンドウのビューを取得 - winrestview() カレントウィンドウのビューを復元 - -その他: *various-functions* - mode() 現在の編集モードを得る - visualmode() 最後に使われたビジュアルモードの種類 - hasmapto() マップの存在をチェック - mapcheck() マッチするマップの存在をチェック - maparg() マップのrhs(展開結果)を得る - exists() 変数、関数の存在をチェック - has() 機能がサポートされているかをチェック - changenr() 最近の変更番号を返す - cscope_connection() cscope接続をチェック - did_filetype() FileTypeオートコマンドが使用されたかどうか - eventhandler() イベントハンドラによって起動されたかどうか - getpid() Vim のプロセスIDを得る - - libcall() 外部ライブラリの関数を呼ぶ - libcallnr() 同上、数値を返す - - getreg() レジスタの値を得る - getregtype() レジスタのタイプを得る - setreg() レジスタの値を設定する - - taglist() マッチするタグのリストを取得 - tagfiles() タグファイルのリストを取得 - - mzeval() |MzScheme| の式を評価する - -============================================================================== -*41.7* 関数を定義する - -自分で関数を定義することができます。基本的な関数定義は次のとおり: > - - :function {name}({var1}, {var2}, ...) - : {body} - :endfunction -< - Note: - 関数名は大文字で開始する必要があります。 - -小さな関数を定義してみましょう。二つの数値のうち小さい方を返す関数を作ります。 -関数は次のような行で始まります: > - - :function Min(num1, num2) - -関数の名前が "Min" であり、二つの引数 ("num1"と"num2") を取る、ということを表 -しています。 -最初にしなければならないのは、どちらの数値が小さいかをチェックすることです: > - - : if a:num1 < a:num2 - -"a:" は特殊なプレフィクスで、この変数が関数の引数であることを示します。小さい -方の値を変数 "smaller" に代入しましょう: > - - : if a:num1 < a:num2 - : let smaller = a:num1 - : else - : let smaller = a:num2 - : endif - -変数 "smaller" はローカル変数です。関数の中で使われた変数はローカル変数になり -ます。ただし、"g:"、"a:"、"s:" などのプレフィクスを付けた場合は別です。 - - Note: - 関数の内からグローバル変数にアクセスするには "g:" を付ける必要がありま - す。つまり、関数内では "g:today" はグローバル変数 "today" を示し、 - "today" ならそれとは別の変数、すなわちローカル変数になります。 - -":return" ステートメントを使って、小さい方の値を呼び出し元に返しましょう。そし -て、関数を閉じます: > - - : return smaller - :endfunction - -関数定義の全体は次のようになります: > - - :function Min(num1, num2) - : if a:num1 < a:num2 - : let smaller = a:num1 - : else - : let smaller = a:num2 - : endif - : return smaller - :endfunction - -関数を短く書きたい場合は、次のようにもできます: > - - :function Min(num1, num2) - : if a:num1 < a:num2 - : return a:num1 - : endif - : return a:num2 - :endfunction - -ユーザー定義関数は組み込み関数とまったく同じ方法で呼び出すことができます。違う -のは名前だけです。Min 関数は次のように使用できます: > - - :echo Min(5, 8) - -関数が実行され、関数の中身が Vim によって解釈されます。未定義の変数や関数を使 -うなどの間違いがあったときは、エラーメッセージが表示されます。関数定義の時点で -はそれらのエラーは検出されません。 - -関数が ":endfunction" まで実行されたとき、あるいは引数無しで ":return" を使っ -たときは 0 が返ります。 - -既存の関数を再定義したい場合は ":function" コマンドに "!" を付けてください: > - - :function! Min(num1, num2, num3) - - -範囲指定を使う --------------- - -":call" コマンドは行範囲を受け取ることができます。範囲指定の使用方法は二つあり -ます。関数を定義するときに "range" キーワードを使った場合は、関数自身が範囲指 -定を処理します。 -関数には "a:firstline" と "a:lastline" という二つの変数が暗黙的に渡されます。 -この二つの変数には範囲指定された行番号が代入されています。例: > - - :function Count_words() range - : let lnum = a:firstline - : let n = 0 - : while lnum <= a:lastline - : let n = n + len(split(getline(lnum))) - : let lnum = lnum + 1 - : endwhile - : echo "found " . n . " words" - :endfunction - -この関数は次のように呼び出すことができます: > - - :10,30call Count_words() - -関数が一度だけ実行され、単語の数が表示されます。 -関数を定義するときに "range" キーワードを使わなかった場合は、指定された範囲の -それぞれの行に対して関数が呼ばれます (カーソルはその行の上)。例: > - - :function Number() - : echo "line " . line(".") . " contains: " . getline(".") - :endfunction - -次のように実行すると: > - - :10,15call Number() - -関数は 6 回実行されます。 - - -可変長引数 ----------- - -可変個の引数を取る関数を定義できます。例えば、次の関数は、必ず 1 つの引数 -(start) を取り、最大で 20 個までの引数を取ることができます: > - - :function Show(start, ...) - -変数 "a:1" に 1 つ目のオプション引数が代入されます。2 つ目が "a:2" で、3 つ目 -が "a:3" です。"a:0" にはオプション引数の数が入ります。 -例: > - - :function Show(start, ...) - : echohl Title - : echo "start is " . a:start - : echohl None - : let index = 1 - : while index <= a:0 - : echon " Arg " . index . " is " . a:{index} - : let index = index + 1 - : endwhile - : echo "" - :endfunction - -この関数は ":echohl" を使って ":echo" の出力に色を付けています。":echohl None" -で色付けをやめます。":echon" コマンドは ":echo" と同じ機能ですが、改行を出力し -ません。 - -変数 a:000 を使うこともできます。これは "..." 引数がすべて入ったリストです。 -|a:000|を参照。 - - -関数の一覧 ----------- - -":function" コマンドでユーザー定義関数の一覧を表示できます: > - - :function -< function Show(start, ...) ~ - function GetVimIndent() ~ - function SetSyn(name) ~ - -関数の中身を見たいときは関数名を指定してください: > - - :function SetSyn -< 1 if &syntax == '' ~ - 2 let &syntax = a:name ~ - 3 endif ~ - endfunction ~ - - -デバッグ --------- - -エラーメッセージが表示されたとき、あるいはデバッグ中に、行番号が表示されると便 -利です。デバッグモードについては |debug-scripts| を参照してください。 -'verbose' オプションに 12 以上の値を設定すると、すべての関数呼び出しが表示され -ます。15 以上にすると、実行されたすべての行が表示されます。 - - -関数の削除 ----------- - -例えば Show() 関数を削除するのは次のようにします: > - - :delfunction Show - -関数が存在しない場合はエラーになります。 - - -関数への参照 ------------- - -変数に関数を代入できると便利なことがあります。それには function() 関数を使いま -す。function() は関数の名前を受け取り、関数への参照を返します: > - - :let result = 0 " or 1 - :function! Right() - : return 'Right!' - :endfunc - :function! Wrong() - : return 'Wrong!' - :endfunc - : - :if result == 1 - : let Afunc = function('Right') - :else - : let Afunc = function('Wrong') - :endif - :echo call(Afunc, []) -< Wrong! ~ - -Note 関数への参照を保持する変数の名前は大文字で始めなければなりません。そうで -ないと組み込み関数の名前と紛らわしくなります。 -変数が参照している関数を呼び出すには call() 関数を使います。call() 関数の最初 -の引数は関数への参照で、2 番目の引数は引数のリストです。 - -関数への参照は、次節で説明される辞書と組み合わせたときもっとも役に立ちます。 - -============================================================================== -*41.8* リストと辞書 - -ここまでは基本型(文字列と数値)を扱ってきました。Vim は二つの複合型、リストと辞 -書もサポートしています。 - -リストとは、要素を順番に並べたものです。要素はどのような型でも構いません。数値 -のリスト、リストのリスト、あるいは複数の型が混在したリストでも作れます。例え -ば、3 個の文字列からなるリストを作るには次のようにします: > - - :let alist = ['aap', 'mies', 'noot'] - -リストの要素は角括弧で囲み、コンマで区切ります。空のリストを作るには次のように -します: > - - :let alist = [] - -関数add()を使うとリストに要素を追加することができます: > - - :let alist = [] - :call add(alist, 'foo') - :call add(alist, 'bar') - :echo alist -< ['foo', 'bar'] ~ - -リストの連結には + を使います: > - - :echo alist + ['foo', 'bar'] -< ['foo', 'bar', 'foo', 'bar'] ~ - -直接リストを拡張するには次のようにします: > - - :let alist = ['one'] - :call extend(alist, ['two', 'three']) - :echo alist -< ['one', 'two', 'three'] ~ - -add()とは効果が異なることに注意してください: > - - :let alist = ['one'] - :call add(alist, ['two', 'three']) - :echo alist -< ['one', ['two', 'three']] ~ - -add()の第二引数は1つの要素として追加されます。 - - -FOR ループ ----------- - -リストを使ってできる素晴らしいことの1つが、リストに対する繰り返しです: > - - :let alist = ['one', 'two', 'three'] - :for n in alist - : echo n - :endfor -< one ~ - two ~ - three ~ - -上の例は、リスト"alist"の各要素に対して、その値を変数"n"に代入しながらループを -行います。forループの書式は次の通りです: > - - :for {varname} in {listexpression} - : {commands} - :endfor - -ある回数だけループするには、その長さのリストを使います。関数range()を使うと、 -そのようなリストを作成できます: > - - :for a in range(3) - : echo a - :endfor -< 0 ~ - 1 ~ - 2 ~ - -range()が生成するリストの最初の要素は0であることに注意してください。そのため、 -最後の要素はリストの長さより1小さい値になります。 -最大値、ステップ幅を指定することもでき、逆方向に進むこともできます: > - - :for a in range(8, 4, -2) - : echo a - :endfor -< 8 ~ - 6 ~ - 4 ~ - -より有用な例として、バッファ中の行に対するループ: > - - :for line in getline(1, 20) - : if line =~ "Date: " - : echo matchstr(line, 'Date: \zs.*') - : endif - :endfor - -1行目から20行目(両端を含む)を調べ、そこに含まれる日付を全て表示しています。 - - -辞書 ------ - -辞書はキーと値のペアを保持します。キーを指定することで高速に値を検索できます。 -辞書は波括弧で作ります: > - - :let uk2nl = {'one': 'een', 'two': 'twee', 'three': 'drie'} - -そして角括弧の中にキーを書くことで単語を検索します: > - - :echo uk2nl['two'] -< twee ~ - -辞書の定義の書式は次の通りです: > - - {<key> : <value>, ...} - -空の辞書とは、どんなキーも持たない辞書のことです: > - - {} - -辞書にはいろいろな使い道があります。辞書を扱う関数もたくさんあります。例えば、 -キーのリストを取得してそれに対してループするには次のようにします: > - - :for key in keys(uk2nl) - : echo key - :endfor -< three ~ - one ~ - two ~ - -キーはソートされていません。特定の順序に並べるにはリストをソートします: > - - :for key in sort(keys(uk2nl)) - : echo key - :endfor -< one ~ - three ~ - two ~ - -要素が定義された順序を得ることはできません。そのような目的にはリストを使ってく -ださい。リストは順序を保って要素を保持します。 - - -辞書の関数 ----------- - -辞書の要素は角括弧でインデックスを指定して取得します: > - - :echo uk2nl['one'] -< een ~ - -記号を使わない方法もあります: > - - :echo uk2nl.one -< een ~ - -この方法はキーがアルファベット、数字、アンダースコアなどの ASCII 文字だけで構 -成されている場合に使えます。この方法で値を代入することもできます: > - - :let uk2nl.four = 'vier' - :echo uk2nl -< {'three': 'drie', 'four': 'vier', 'one': 'een', 'two': 'twee'} ~ - -関数の定義と辞書への代入を同時に記述することができます: > - - :function uk2nl.translate(line) dict - : return join(map(split(a:line), 'get(self, v:val, "???")')) - :endfunction - -これを実行してみましょう: > - - :echo uk2nl.translate('three two five one') -< drie twee ??? een ~ - -":function" の行の末尾に "dict" と書かれています。これは、その関数が辞書から使 -われることを示します。ローカル変数 "self" がその辞書を指すようになります。 -次に、複雑なreturnコマンドを分解してみましょう: > - - split(a:line) - -関数split()は文字列を空白文字で区切り、リストにして返します。そのため、この例 -での戻り値は次のようになります: > - - :echo split('three two five one') -< ['three', 'two', 'five', 'one'] ~ - -このリストがmap()関数の第一引数になります。map()はリストの各要素を "v:val" に -代入した状態で第二引数を評価します。これによりforループより短いコードが書けま -す。このコードは: > - - :let alist = map(split(a:line), 'get(self, v:val, "???")') - -次のコードと同じです: > - - :let alist = split(a:line) - :for idx in range(len(alist)) - : let alist[idx] = get(self, alist[idx], "???") - :endfor - -関数get()はそのキーが辞書に入っているかをチェックします。入っていればその値を -返します。入っていなければデフォルト値(この例では'???')を返します。キーが入っ -ていなくてもエラーを起こしたくないような場合に便利です。 - -関数join()はsplit()の逆の処理をします。つまり単語のリストをスペースでつなげま -す。 -split()、map()、join() を組み合わせると、単語からなる行を簡潔に処理することが -できます。 - - -オブジェクト指向プログラミング ------------------------------- - -辞書には値と関数を入れることができるので、辞書をオブジェクトとして使うことがで -きます。 -上述の例ではオランダ語から英語に翻訳するために辞書を使いました。同じことが他の -言語でもできると面白いかもしれませんね。まず翻訳関数を持ったオブジェクト (つま -り辞書) を作ります。翻訳する単語はまだ定義しません: > - - :let transdict = {} - :function transdict.translate(line) dict - : return join(map(split(a:line), 'get(self.words, v:val, "???")')) - :endfunction - -単語を翻訳するのに 'self.words' を使う点が上述の例と少し違います。しかし、 -self.words はまだありません。よって、これは抽象クラスと呼ぶことができます。 - -オランダ語を翻訳するオブジェクトをインスタンス化してみましょう: > - - :let uk2nl = copy(transdict) - :let uk2nl.words = {'one': 'een', 'two': 'twee', 'three': 'drie'} - :echo uk2nl.translate('three one') -< drie een ~ - -さらにドイツ語の翻訳機を作ります: > - - :let uk2de = copy(transdict) - :let uk2de.words = {'one': 'ein', 'two': 'zwei', 'three': 'drei'} - :echo uk2de.translate('three one') -< drei ein ~ - -copy() 関数を使って "transdict" 辞書をコピーし、そのコピーに対して単語を追加し -ています。元の辞書はもちろん変更されません。 - -さらに一歩進んで、適切な言語を選択できるようにしてみます: > - - :if $LANG =~ "de" - : let trans = uk2de - :else - : let trans = uk2nl - :endif - :echo trans.translate('one two three') -< een twee drie ~ - -"trans"は2つのオブジェクト(辞書)のうちどちらか1つを参照します。コピーは作られ -ていません。リストと辞書の同一性についてのより詳しい情報は|list-identity|と -|dict-identity|にあります。 - -未対応の言語を使う場合は、translate() 関数を上書きして何もしないようにするとい -いかもしれません: > - - :let uk2uk = copy(transdict) - :function! uk2uk.translate(line) - : return a:line - :endfunction - :echo uk2uk.translate('three one wladiwostok') -< three one wladiwostok ~ - -! を使って既に存在している関数への参照を上書きしています。続いて、未対応の言語 -に対して "uk2uk" を使うように変更します: > - - :if $LANG =~ "de" - : let trans = uk2de - :elseif $LANG =~ "nl" - : let trans = uk2nl - :else - : let trans = uk2uk - :endif - :echo trans.translate('one two three') -< one two three ~ - -さらなる情報については|List|と|Dictionaries|を参照してください。 - -============================================================================== -*41.9* 例外 - -まずは例題を見てください: > - - :try - : read ~/templates/pascal.tmpl - :catch /E484:/ - : echo "パスカル用のテンプレートファイルは見つかりませんでした。" - :endtry - -":read" コマンドはファイルがなければ失敗します。そのエラーをキャッチして、エ -ラーメッセージの代わりにより親切なメッセージを表示しています。 - -":try" と ":endtry" の間で起きたエラーは例外に変わります。例外は文字列です。エ -ラーが例外に変わったとき、文字列にはエラーメッセージが含まれます。また、全ての -エラーメッセージは番号を持っています。例題では "E484:" を含んだエラーをキャッ -チしています。この番号は変わらないことが保証されています (テキストは翻訳される -などして変わるかもしれません)。 - -":read" コマンドが他のエラーを起こした場合、"E484:" というパターンはマッチしな -いでしょう。したがって、その例外はキャッチされず、通常のエラーメッセージが表示 -されます。 - -次のように書くこともできます: > - - :try - : read ~/templates/pascal.tmpl - :catch - : echo "パスカル用のテンプレートファイルは見つかりませんでした。" - :endtry - -全ての例外がキャッチされます。しかしこれでは "E21: Cannot make changes, -'modifiable' is off" のような有効なエラーに気づくことができません。 - -":finally" という便利なコマンドもあります: > - - :let tmp = tempname() - :try - : exe ".,$write " . tmp - : exe "!filter " . tmp - : .,$delete - : exe "$read " . tmp - :finally - : call delete(tmp) - :endtry - -カーソル行からファイル末尾までを "filter" コマンド (ファイル名を引数に取るコマ -ンド) でフィルタ処理しています。":try" と ":finally" の間で問題が起きても、 -ユーザーが CTRL-C を押して操作をキャンセルしても、"call delete(tmp)" は必ず呼 -ばれます。一時ファイルが残ってしまう心配はありません。 - -例外についてさらに詳しい情報はリファレンスマニュアルの|exception-handling|を -参照してください。 - -============================================================================== -*41.10* 注意事項 - -Vim スクリプトにおいて注意すべきことの概要を簡単に説明します。他の場所にも同じ -ような説明はありますが、手頃なチェックリストに使えるでしょう。 - -改行記号はシステムによって異なります。Unix では <NL> 文字が使われますが、 -MS-DOS 、Windows、OS/2 などでは <CR><LF> が使われます。末尾が <CR> になってい -るマップを使うときは注意してください。|:source_crnl| 参照。 - - -空白 ------ - -空の行はあっても構いません。無視されます。 - -行頭の空白 (スペースとTAB) は常に無視されます。引数と引数の間には空白がいくつ -あっても構いません (例えば下記の 'set' と 'cpoptions' の間) 。空白は一つのス -ペースにまとめられ、セパレータの役目をします。最後の文字より後ろにある空白文字 -は状況によって無視されたりされなかったりします。下記参照。 - -":set" コマンドで "=" 記号を使うとき: > - - :set cpoptions =aABceFst - -"=" の直前にある空白は無視されます。しかし、"=" の後ろに空白をはさむことはでき -ません。 - -オプション値に空白を含めるときは、バックスラッシュ ("\") でエスケープする必要 -があります: > - - :set tags=my\ nice\ file - -次のように書くと: > - - :set tags=my nice file - -これはエラーになります。このコマンドは次のように解釈されてしまいます: > - - :set tags=my - :set nice - :set file - - -コメント --------- - -コメントは " (ダブルクオート) 記号で開始します。行末までのすべての文字がコメン -トとして解釈され、無視されます。ただし、コメントを書くことができないコマンドも -あります (以下に例を示します)。コメントは行のどこからでも開始できます。 - -コメントとして簡単な注釈を付けたとします。例: > - - :abbrev dev development " shorthand - :map <F3> o#include " insert include - :execute cmd " do it - :!ls *.c " list C files - -短縮形 'dev' は 'development " shorthand' に展開されます。<F3> には 'o# -....' から '" insert include' までの全部がマップされます。"execute" コマンドは -エラーを起こします。"!" コマンドはすべての文字をシェルに渡すので、" 記号が閉じ -られていないことでエラーが起こります。 -":map"、":abbreviate"、":execute"、"!" などのコマンドはその後ろにコメントを書 -くことができません (そのようなコマンドは他にもあります)。ただし、無理やりコメ -ントを書く方法もあります: > - - :abbrev dev development|" shorthand - :map <F3> o#include|" insert include - :execute cmd |" do it - -'|' 文字でコマンドを区切り、次のコマンドを書くことができます。この例では二つ目 -のコマンドはコメントのみです。"!" の場合は |:execute| と '|' を使わなければな -りません: > - :exe '!ls *.c' |" list C files - -":map" と ":abbreviate" の場合は '|' の前に空白を置かないように注意してくださ -い。これらのコマンドは行末か '|' までのすべての文字を使います。そのため、意図 -せずに末尾に空白を入れてしまうかもしれません: > - - :map <F4> o#include - -vimrc を編集するときに 'list' オプションをオンに設定しておくと、この問題が発見 -しやすくなります。 - -Unix では特別なコメント書式を使って Vim スクリプトを実行形式にすることができま -す: > - #!/usr/bin/env vim -S - echo "this is a Vim script" - quit - -"#" コマンドは行を行番号付きで表示しますが、'!' をつけると何もしなくなります。 -よってファイルを実行するためのシェルコマンドを記述することができます。 -|:#!| |-S| - - -落とし穴 --------- - -次の例には大きな問題があります: > - - :map ,ab o#include - :unmap ,ab - -この unmap コマンドはうまく動きません。なぜなら ",ab " を unmap しようとしてい -るからです。そのようなマップは存在しません。エラーが表示されますが、スペースは -目に見えないので、エラーの原因を見つけるのは困難です。 - -":unmap" コマンドの後にコメントを書いた場合も同様です: > - - :unmap ,ab " comment - -コメントは無視されますが、Vim は ',ab ' を unmap しようとします。次のよう -に書いてください: > - - :unmap ,ab| " comment - - -ビューの復元 ------------- - -何らかの変更を加えてから、カーソルのあった場所に戻りたい時があります。そのとき -に、画面に表示されていた行範囲も復元されるとすてきです。 -次の例は、現在行をヤンクしてファイルの先頭にプットし、ビューを復元します: > - - map ,p ma"aYHmbgg"aP`bzt`a - -これは次のことをしています: > - ma"aYHmbgg"aP`bzt`a -< ma 現在のカーソル位置にマーク a を設定 - "aY 現在行をレジスタ a にヤンク - Hmb ウィンドウの一行目に移動してマーク b を設定 - gg ファイルの一行目に移動 - "aP ヤンクした行をその上にプット - `b ウィンドウの一行目に戻る - zt ウィンドウの表示範囲を以前と同じにする - `a 保存しておいたカーソル位置に移動 - - -パッケージング --------------- - -関数の名前が他の人の関数とかぶらないように、次の方法を使ってください: -- ユニークな文字列を名前の前に付ける。私はよく略語を使います。例えば、オプショ - ンウィンドウ (option window) のための関数なら "OW_" などです。 -- 関数を一つのファイルにまとめて、関数がロードされているかどうかを示すグローバ - ル変数を設定する。ファイルが二回目に読み込まれたとき、最初にそれらの関数をア - ンロードする。 -例: > - - " This is the XXX package - - if exists("XXX_loaded") - delfun XXX_one - delfun XXX_two - endif - - function XXX_one(a) - ... body of function ... - endfun - - function XXX_two(b) - ... body of function ... - endfun - - let XXX_loaded = 1 - -============================================================================== -*41.11* プラグインを書く *write-plugin* - -Vim スクリプトを書いて、それを多くの人に使ってもらうことができます。そのような -スクリプトはプラグインと呼ばれます。Vim ユーザーはあなたのスクリプトをプラグイ -ンディレクトリにコピーするだけで、すぐにその機能を使うことができます。 -|add-plugin| 参照。 - -プラグインには二種類あります: - - グローバルプラグイン : すべてのファイルで共通 - ファイルタイププラグイン : ファイルの種類別 - -この節ではグローバルプラグインについて説明します。ほとんどの説明はファイルタイ -ププラグインに対してもあてはまります。ファイルタイププラグイン特有の説明は次節 -にあります |write-filetype-plugin|。 - - -名前 ------ - -最初にプラグインの名前を決めなければなりません。プラグインが提供する機能が名前 -から分かるようにしてください。また、他の人が作ったプラグインと名前がかぶらない -ようにしてください。古い Windows システムでの問題を避けるため、名前は 8 文字以 -内にしてください。 - -例えばタイプミス (type mistake) を修正 (correct) するためのスクリプトなら -"typecorr.vim" という名前を付けたりします。ここではこれを例題として使います。 - -プラグインが誰でも使えるようにするため、いくつかのガイドラインに従ってくださ -い。ガイドラインは段階的に説明していきます。例題プラグインの完全なソースは最後 -に示します。 - - -ボディ ------- - -まずはプラグインの本体部分を見てみましょう。行番号は実際の番号です: > - - 14 iabbrev teh the - 15 iabbrev otehr other - 16 iabbrev wnat want - 17 iabbrev synchronisation - 18 \ synchronization - 19 let s:count = 4 - -もちろん、実際のスクリプトはもっと巨大です。 - -行番号は説明のために追加したものです。プラグインを書くときは行番号を付けないで -ください。 - - -へッダ ------- - -新しい単語を追加していくと、プラグインには複数のバージョンが存在することになり -ます。ファイルを配布したとき、それを使った人は、誰がこの素晴らしいプラグインを -書いたのかを知りたいと思うでしょうし、感想を伝えたいと思うかもしれません。 -というわけで、次のようなヘッダをプラグインに書いてください: > - - 1 " Vim global plugin for correcting typing mistakes - 2 " Last Change: 2000 Oct 15 - 3 " Maintainer: Bram Moolenaar <Bram@vim.org> - -著作権とライセンスについて: プラグインがとても便利で、そして再配布を制限するほ -どのものでない場合は、パブリックドメインか Vim ライセンス (|license|) の適用を -検討してみてください。次の短い宣言をプラグインの先頭付近に書いておくだけで十分 -です: > - - 4 " License: This file is placed in the public domain. - - -行連結、副作用の回避 *use-cpo-save* --------------------- - -上の例の 18 行目では行連結 (|line-continuation|) が使われています。ユーザーの -環境で 'compatible' オプションがオンに設定されていると、この行でエラーが発生し -ます。'compatible' オプションの設定には副作用があるので、勝手に設定をオフにす -ることはできません。問題を避けるには、一時的に 'cpoptions' の値を Vim の初期値 -に設定し、後で元に戻します。そうすれば、行連結を使うことができ、スクリプトはほ -とんどの環境で動作するようになります。設定の変更は次のようにします: > - - 11 let s:save_cpo = &cpo - 12 set cpo&vim - .. - 42 let &cpo = s:save_cpo - -最初に 'cpoptions' の値を s:save_cpo 変数に保存します。プラグインの最後でオプ -ションの値を元に戻します。 - -スクリプトローカル変数 (|s:var|) を使っていることに注目してください。グローバ -ル変数は他の場所で使われている可能性があります。スクリプトの中だけで使う場合は -スクリプトローカル変数を使ってください。 - - -ロードしない ------------- - -ユーザーが常にプラグインをロードしたいと思うとは限りません。また、システム管理 -者がシステムのプラグインディレクトリにプラグインを入れたが、ユーザーは自分で入 -れたプラグインを使いたいということもあります。したがって、指定したプラグインだ -けを無効にできる必要があります。次のようにします: > - - 6 if exists("g:loaded_typecorr") - 7 finish - 8 endif - 9 let g:loaded_typecorr = 1 - -これはスクリプトの二重ロードを避ける効果もあります。スクリプトを二重にロードす -ると、関数の再定義エラーが発生したり、自動コマンドが二重に追加されることでトラ -ブルが起きたりします。 - -変数の名前は "loaded_" で始めてプラグインのファイル名をそのまま付けるようにし -てください。"g:" を付けることで関数の中で変数を使用したときに発生するミスを防 -いでいます (関数の中では "g:" を付けない変数はローカル変数になります)。 - -"finish" を使ってファイルの残りの部分の読み込みを停止しています。この方法は -ファイル全体を if-endif で囲むよりも速いです。 - - -マップ ------- - -さて、プラグインをもっと魅力あるものに仕上げましょう。マップを追加して、カーソ -ルの下の単語に対する修正を追加できるようにします。単純にキーを選んでマップを設 -定することもできますが、そのキーは既にユーザーが使っているかもしれません。マッ -プに使用するキーをユーザーが選択できるようにするには、<Leader> を使います: > - - 22 map <unique> <Leader>a <Plug>TypecorrAdd - -"<Plug>TypecorrAdd" は目的の動作をします。詳しくは後で説明します。 - -使用したいキーを "mapleader" 変数に設定することで、マップの最初のキーを設定で -きます。例えば、次のように設定すると: > - - let mapleader = "_" - -マップは "_a" と定義されます。変数が設定されていない場合は初期設定 (バックス -ラッシュ) が使われます。つまり "\a" というマップが定義されます。 - -Note: 上記のコマンドでは <unique> が使われています。これは、同じマップが既に定 -義されていた場合にエラーを表示します。|:map-<unique>| - -マップするキーをユーザーが自分で定義できるようにするには、次のようにします: > - - 21 if !hasmapto('<Plug>TypecorrAdd') - 22 map <unique> <Leader>a <Plug>TypecorrAdd - 23 endif - -"<Plug>TypecorrAdd" に対するマップが既にあるかどうかを調べ、無い場合のみ -"<Leader>a" にマップを定義します。ユーザーは自分の vimrc ファイルの中でマップ -を定義することができます: > - - map ,c <Plug>TypecorrAdd - -すると、マップのキーとして ",c" が使われます。"_a" や "\a" は使われません。 - - -ピース ------- - -スクリプトが大きくなると、それを部品ごとに分けたくなります。それには関数やマッ -プを使います。しかし、そうすると関数やマップが他のスクリプトのものと衝突する可 -能性があります。例えば、Add() という関数を追加したとき、他のスクリプトでも同じ -名前の関数が定義されているかもしれません。そのような場合は、名前の前に "s:" を -付けて、スクリプトの中だけで使える関数を定義します。 - -新しい修正を追加するための関数を定義します: > - - 30 function s:Add(from, correct) - 31 let to = input("type the correction for " . a:from . ": ") - 32 exe ":iabbrev " . a:from . " " . to - .. - 36 endfunction - -s:Add() 関数は同じスクリプトの中から呼び出すことができます。他のスクリプトが -s:Add() を定義していた場合、それはそのスクリプトにローカルであり、関数が定義さ -れたスクリプトの中からのみ呼び出すことができます。さらにグローバルの Add() 関 -数 ("s:"無し) を定義することもでき、それはまた別の関数になります。 - -マップ定義では <SID> が使えます。これは、現在のスクリプトを識別するためのスク -リプト ID を生成します。私たちの入力修正プラグインでは <SID> を次のように使い -ます: > - - 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add - .. - 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> - -ユーザーが "\a" と入力すると、次の手順でキー入力が呼び出されます: > - - \a -> <Plug>TypecorrAdd -> <SID>Add -> :call <SID>Add() - -他のスクリプトで <SID>Add をマップすると、別のスクリプト ID が使われ、別のマッ -プが生成されます。 - -Note: s:Add() ではなく <SID>Add() と書いていることに注意してください。マップは -スクリプトの外側でユーザーが入力するものだからです。<SID> はスクリプト ID に変 -換され、どのスクリプトの Add() 関数を呼べばいいのかわかるようになっています。 - -これは少し複雑ですが、複数のプラグインを同時に使用するためには必要なことです。 -基本的なルールとしては、マップの中では <SID>Add() を使い、他の場所 (スクリプト -の中、自動コマンド、ユーザー定義コマンド) では s:Add() を使います。 - -マップと同じ方法で、メニューを追加することもできます: > - - 26 noremenu <script> Plugin.Add\ Correction <SID>Add - -プラグインのメニューを追加する場合は "Plugin" メニューの下に登録することが推奨 -されています。この例ではメニューが一つだけですが、複数のメニューを追加する場合 -は、サブメニューの使用が推奨されています。例えば、"Plugin.CVS" 以下に -"Plugin.CVS.checkin" や "Plugin.CVS.checkout" などの CVS の操作を登録します。 - -Note: 28 行目では ":noremap" を使って、他のマップでトラブルが起きないようにし -ています。例えば、誰かが ":call" をマップしているかもしれないからです。24 行目 -でも ":noremap" を使っていますが、ここでは "<SID>Add" を再マップして欲しいの -で、"<script>" を使っています。これを使うとスクリプトローカルなマップだけが再 -マップされます |:map-<script>|。26 行目でも ":noremenu" で同様のことをしていま -す |:menu-<script>|。 - - -<SID> と <Plug> *using-<Plug>* ---------------- - -<SID> と <Plug> は、入力したキーに対するマップと、他のマップの中だけで使われる -マップが干渉しないようにするために使われます。<SID> と <Plug> の違いに注意して -ください: - -<Plug> これはスクリプトの外側からも見えます。ユーザーが自分でプラグインの機能 - をマップできるようにするような場合に使います。<Plug> は特殊なコード - で、キーボードから入力されることはありません。 - キー列が他のプラグインとかぶらないように、<Plug> スクリプト名 マップ - 名、という形式で使ってください。 - 我々の例では、スクリプト名が "Typecorr"、マップ名が "Add" なので、 - "<Plug>TypecorrAdd" というキー列になります。スクリプト名とマップ名の最 - 初の文字だけを大文字にして、どこがマップ名なのかわかるようにします。 - -<SID> これはスクリプト ID (スクリプト固有の識別子) です。 - Vim は内部で <SID> を "<SNR>123_" に変換します ("123"の部分はいろいろ - な数字が入ります)。つまり、関数 "<SID>Add()" は、あるスクリプトでは - "<SNR>11_Add()" という名前になり、別のスクリプトでは "<SNR>22_Add()" - になります。これは ":function" コマンドで関数一覧を表示すると確認する - ことができます。<SID> の変換はマップの中でも同様におこなわれるので、 - マップの中からスクリプトローカル関数を呼び出すことができます。 - - -ユーザ定義コマンド ------------------- - -修正を追加するためのユーザー定義コマンドを追加します: > - - 38 if !exists(":Correct") - 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) - 40 endif - -ユーザー定義コマンドは、同じ名前のコマンドがまだない場合のみ定義できます。既に -定義されている場合はエラーになります。":command!" を使ってユーザー定義関数を上 -書きするのは良いアイデアとは言えません。ユーザーは、自分が定義したコマンドがな -ぜ動かないのか不思議に思うでしょう。|:command| - - -スクリプト変数 --------------- - -先頭に "s:" が付いた変数はスクリプト変数です。これはスクリプトの中だけで使えま -す。スクリプトの外からは見えません。同じ名前の変数を複数のスクリプトで使ってし -まうようなトラブルを避けることができます。Vim が実行されている間、変数は保持さ -れます。そして、同じスクリプトが再読み込みされると、再び同じ変数が使われます。 -|s:var| - -スクリプト変数は、同じスクリプトの中で定義された関数、自動コマンド、ユーザー定 -義コマンドでも使えます。我々の例に、修正の数を数えるための数行のコードを追加し -ます: > - - 19 let s:count = 4 - .. - 30 function s:Add(from, correct) - .. - 34 let s:count = s:count + 1 - 35 echo s:count . " corrections now" - 36 endfunction - -最初に s:count はスクリプトの中で 4 で初期化されます。その後、s:Add() 関数が呼 -び出されると、s:count が増加します。関数がどこから呼ばれたかに関わらず、関数が -定義されたスクリプトのローカル変数が使われます。 - - -まとめ ------- - -例題の完成形は以下のようになります: > - - 1 " Vim global plugin for correcting typing mistakes - 2 " Last Change: 2000 Oct 15 - 3 " Maintainer: Bram Moolenaar <Bram@vim.org> - 4 " License: This file is placed in the public domain. - 5 - 6 if exists("g:loaded_typecorr") - 7 finish - 8 endif - 9 let g:loaded_typecorr = 1 - 10 - 11 let s:save_cpo = &cpo - 12 set cpo&vim - 13 - 14 iabbrev teh the - 15 iabbrev otehr other - 16 iabbrev wnat want - 17 iabbrev synchronisation - 18 \ synchronization - 19 let s:count = 4 - 20 - 21 if !hasmapto('<Plug>TypecorrAdd') - 22 map <unique> <Leader>a <Plug>TypecorrAdd - 23 endif - 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add - 25 - 26 noremenu <script> Plugin.Add\ Correction <SID>Add - 27 - 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> - 29 - 30 function s:Add(from, correct) - 31 let to = input("type the correction for " . a:from . ": ") - 32 exe ":iabbrev " . a:from . " " . to - 33 if a:correct | exe "normal viws\<C-R>\" \b\e" | endif - 34 let s:count = s:count + 1 - 35 echo s:count . " corrections now" - 36 endfunction - 37 - 38 if !exists(":Correct") - 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) - 40 endif - 41 - 42 let &cpo = s:save_cpo - -33 行目は説明がまだでした。これは、新しい修正をカーソルの下の単語に適用しま -す。|:normal| コマンドを使って新しい略語を適用しています。Note: マップと略語は -その場で展開されます。":noremap" で定義されたマップから関数が呼び出されたとし -ても動作は同じです。 - -'fileformat' オプションを "unix" に設定することが推奨されています。そうすれ -ば、Vim スクリプトはどこでも動作します。'fileformat' が "dos" に設定されたスク -リプトは Unix では動作しません。|:source_crnl| も参照。設定が正しいことを確実 -にするため、ファイルを保存する前に次のコマンドを実行してください: > - - :set fileformat=unix - - -ドキュメント *write-local-help* ------------- - -プラグインのドキュメントを書くのは良いアイデアです。ユーザーが動作を変更できる -ような場合には特に重要です。|add-local-help| ではどのようにしてドキュメントが -インストールされるか説明されています。 - -プラグインヘルプファイルの例を示します ("typecorr.txt"): > - - 1 *typecorr.txt* Plugin for correcting typing mistakes - 2 - 3 If you make typing mistakes, this plugin will have them corrected - 4 automatically. - 5 - 6 There are currently only a few corrections. Add your own if you like. - 7 - 8 Mappings: - 9 <Leader>a or <Plug>TypecorrAdd - 10 Add a correction for the word under the cursor. - 11 - 12 Commands: - 13 :Correct {word} - 14 Add a correction for {word}. - 15 - 16 *typecorr-settings* - 17 This plugin doesn't have any settings. - -書式に気をつけなければならないのは一行目だけです。一行目はコピーされ、help.txt -の "LOCAL ADDITIONS:" の項に埋め込まれます |local-additions|。最初の "*" は一 -行目の一桁目に書いてください。ヘルプを追加したら ":help" を実行して項目が追加 -されたことを確認してください。 - -ヘルプの中で ** で文字を囲むとタグを追加することができます。ただし、既存のヘル -プタグと同じものを使わないでください。"typecorr-settings" のように、プラグイン -の名前を使ってタグを作るといいかもしれません。 - -ヘルプの他の部分を参照するときは || で囲みます。そうすれば、ユーザーは簡単にヘ -ルプの関連した部分を参照することができます。 - - -ファイルタイプの認識 *plugin-filetype* --------------------- - -ファイルタイプが Vim によって認識されない場合は、別ファイルにファイルタイプを -認識するためにコードを作成する必要があります。通常は、自動コマンドを使って、 -ファイル名がパターンにマッチしたときにファイルタイプを設定します。例: > - - au BufNewFile,BufRead *.foo set filetype=foofoo - -この一行を 'runtimepath' の最初のディレクトリの "ftdetect/foofoo.vim" に書き -込みます。例えば、Unix なら "~/.vim/ftdetect/foofoo.vim" などです。ファイルタ -イプとスクリプトファイルの名前を同じにする決まりになっています。 - -必要ならより複雑な処理をすることもできます。例えば、ファイルの中身を見て言語を -判定したりできます。|new-filetype| も参照。 - - -要約 *plugin-special* ------ - -プラグインで使用する特有事項の要約を示します: - -s:name スクリプトローカル変数。 - -<SID> スクリプトID。マップや関数をスクリプトローカルにする - のに使う。 - -hasmapto() スクリプトが提供している機能に対して、ユーザーが既に - マップを定義したかどうかをチェックする関数。 - -<Leader> "mapleader" の値。ユーザーがその変数にキーを設定するこ - とで、プラグインのマップの開始キーを指定できる。 - -:map <unique> マップが既に定義されているなら警告を発する。 - -:noremap <script> スクリプトローカルマップだけを使う。グローバルマップは - 使わない。 - -exists(":Cmd") ユーザー定義コマンドが既にあるかどうかをチェックする。 - -============================================================================== -*41.12* ファイルタイププラグインを書く *write-filetype-plugin* *ftplugin* - -ファイルタイププラグインはグローバルプラグインと似ていますが、カレントバッファ -のマップやオプションだけを設定します。ファイルタイププラグインの使用方法につい -ては |add-filetype-plugin| を参照してください。 - -先に |41.10| 節のグローバルプラグインの項を読んでください。そこで説明されてい -ることはすべてファイルタイププラグインにもあてはまります。この節ではファイルタ -イププラグイン特有の事項だけを説明します。ファイルタイププラグインはカレント -バッファに対してのみ機能するということが最も大切です。 - - -無効化 ------- - -ファイルタイププラグインを書いて多くの人に使ってもらおうとするなら、プラグイン -を無効化できるようにしておく必要があります。プラグインの先頭に次のような記述を -追加してください: > - - " このバッファに対してまだ実行されていない場合のみ処理を実行する - if exists("b:did_ftplugin") - finish - endif - let b:did_ftplugin = 1 - -これは同じプラグインが同じバッファで二重にロードされるのを防ぐためにも必要です -(":edit"コマンドを引数なしで実行したときに発生します)。 - -ユーザーは、次の一行だけを書いたファイルタイププラグインを作成することで、標準 -プラグインのロードを無効化できます: > - - let b:did_ftplugin = 1 - -ただし、そのファイルを保存したファイルタイププラグインディレクトリが、 -'runtimepath' の中で $VIMRUNTIME よりも前にある必要があります。 - -標準プラグインを使いつつ、その設定を一つだけ変更したいという場合は、スクリプト -の中で設定を変更することができます: > - - setlocal textwidth=70 - -このファイルを "after" ディレクトリに保存すると、(例えば filetype=vim なら) 標 -準配布の "vim.vim" が読み込まれた後に、保存したファイルが読み込まれるようにな -ります |after-directory|。Unix ならファイルのパスは -"~/.vim/after/ftplugin/vim.vim" です。Note: 標準プラグインは "b:did_ftplugin" -を設定しますが、ここではそれを無視しています。 - - -オプション ----------- - -ファイルタイププラグインでは、カレントバッファの設定だけを変更するため、次のコ -マンドを使ってオプションを設定してください: > - - :setlocal - -そして、バッファローカルなオプションだけを設定してください (どのオプションがそ -うなのかはヘルプで確認してください)。|:setlocal| コマンドでグローバルオプショ -ンやウィンドウローカルオプションを設定すると、たくさんのバッファの設定が変更さ -れます。ファイルタイププラグインはそのような動作をすべきではありません。 - -オプションの値がフラグや設定項目のリストなら、"+=" や "-=" を使うことで既存の -設定を維持することができます。ユーザーがそのオプションの設定を変更している可能 -性もあるので注意してください。最初に初期設定に戻してから設定を変更するといいか -もしれません。例: > - - :setlocal formatoptions& formatoptions+=ro - - -マップ ------- - -カレントバッファの中だけで機能するマップを作るには次のコマンドを使います: > - - :map <buffer> - -上述したように、マップは二段階に分けて作る必要があります。ファイルタイププラグ -インで機能を定義する例を示します: > - - if !hasmapto('<Plug>JavaImport') - map <buffer> <unique> <LocalLeader>i <Plug>JavaImport - endif - noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc> - -|hasmapto()| を使って、ユーザーが既に <Plug>JavaImport に対してマップを定義し -ているかどうかを調べます。未定義ならファイルタイププラグインの標準のマップを定 -義します。マップは <LocalLeader> で開始します。そうすることで、ファイルタイプ -プラグインのマップを開始するキーをユーザーが選択できます。初期設定はバックス -ラッシュです。 -"<unique>" を使って、マップが既に存在したとき、あるいは既存のマップと重複した -ときにエラーメッセージが表示されるようにします。 -|:noremap| を使って、ユーザーが定義した他のマップの影響を受けないようにしま -す。":noremap <script>" を使うと、スクリプトの中で定義した <SID> で始まるマッ -プだけが再マップされます。 - -ユーザーがファイルタイププラグインのマップを無効化できる仕組みを提供しなければ -なりません。例えば、"mail" ファイルタイプのプラグインなら次のようにします: > - - " マップを追加する。ユーザーが望まない場合は追加しない。 - if !exists("no_plugin_maps") && !exists("no_mail_maps") - " "> " を挿入して引用する - if !hasmapto('<Plug>MailQuote') - vmap <buffer> <LocalLeader>q <Plug>MailQuote - nmap <buffer> <LocalLeader>q <Plug>MailQuote - endif - vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR> - nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR> - endif - -ここでは二つのグローバル変数が使われています: - no_plugin_maps すべてのファイルタイププラグインのマップを無効化 - no_mail_maps 特定のファイルタイププラグインのマップを無効化 - - -ユーザー定義コマンド --------------------- - -ファイルタイプ用のユーザー定義コマンドを追加して、それを一つのバッファの中だけ -で使えるようにするには、|:command| の引数に "-buffer" を指定します。例: > - - :command -buffer Make make %:r.s - - -変数 ------ - -ファイルタイププラグインは対応するすべてのバッファに対して実行されます。スクリ -プトローカル変数 |s:var| はすべての実行で共有されます。バッファごとの変数を使 -いたい場合はバッファローカル変数 |b:var| を使ってください。 - - -関数 ------ - -関数は一度だけ定義すれば十分です。しかし、ファイルタイププラグインは対応する -ファイルが開かれるたびに読み込まれます。次のようにすると関数が一度だけ定義され -るようになります: > - - :if !exists("*s:Func") - : function s:Func(arg) - : ... - : endfunction - :endif -< - -アンドゥ *undo_ftplugin* --------- - -ユーザーが ":setfiletype xyz" としたとき、それ以前のファイルタイプの効果は無効 -になるべきです。b:undo_ftplugin 変数にコマンドを設定し、ファイルタイププラグイ -ンの設定をアンドゥするようにしてください。例: > - - let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<" - \ . "| unlet b:match_ignorecase b:match_words b:match_skip" - -":setlocal" でオプション名の後に "<" を付けると、そのオプションをグローバルな -値でリセットします。オプションをリセットするにはこの方法が一番です。 - -このように行継続を使うには 'cpoptions' から "C" フラグを取り除く必要がありま -す。上述の |use-cpo-save| を参照してください。 - - -ファイル名 ----------- - -ファイルタイププラグインのファイル名にはファイルタイプ名が含まれていなければな -りません |ftplugin-name|。次の三つのうちのどれかにしてください: - - .../ftplugin/stuff.vim - .../ftplugin/stuff_foo.vim - .../ftplugin/stuff/bar.vim - -"stuff" はファイルタイプ名、"foo" と "bar" は任意の名前です。 - - -要約 *ftplugin-special* ------ - -ファイルタイププラグインの特有事項を要約します: - -<LocalLeader> "maplocalleader" の値。ユーザーがその変数にキーを設定 - することで、ファイルタイププラグインのマップの開始キー - を指定できる。 - -:map <buffer> バッファローカルなマップを定義する。 - -:noremap <script> 同スクリプトで定義している <SID> で始まるマップだけを - 再マップする。 - -:setlocal カレントバッファのオプションのみ設定する。 - -:command -buffer バッファローカルなユーザー定義コマンドを定義する。 - -exists("*s:Func") 関数が定義済かどうかをチェックする。 - -プラグイン全般に関する事項は |plugin-special| を参照してください。 - -============================================================================== -*41.13* コンパイラプラグインを書く *write-compiler-plugin* - -コンパイラプラグインは特定のコンパイラを使うためのオプションを設定します。ユー -ザーは |:compiler| コマンドでその設定を読み込むことができます。設定されるオプ -ションは主に 'errorformat' と 'makeprg' です。 - -百聞は一見に如かず。次のコマンドですべての標準コンパイラプラグインを開くことが -できます: > - - :next $VIMRUNTIME/compiler/*.vim - -|:next| を使って次のプラグインファイルに移動してください。 - -これらのファイルには二つの特有事項があります。一つは、標準ファイルに対して設定 -を追加したり上書きしたりできる仕組みです。標準ファイルの先頭は次のようになって -います: > - - :if exists("current_compiler") - : finish - :endif - :let current_compiler = "mine" - -コンパイラファイルを書いて、それを個人用のランタイムディレクトリ (例えば Unix -なら ~/.vim/compiler) に置いたとき、"current_compiler" 変数を設定することで標 -準ファイルの設定をスキップすることができます。 - *:CompilerSet* -二つ目は、":compiler!" が使われたときは ":set" を使い、":compiler" が使われた -ときは ":setlocal" を使う仕組みです。Vim はそのために ":CompilerSet" という -ユーザーコマンドを定義します。古い Vim はそれを定義しないので、プラグインの中 -で定義してください。例: > - - if exists(":CompilerSet") != 2 - command -nargs=* CompilerSet setlocal <args> - endif - CompilerSet errorformat& " use the dfault 'errorformat' - CompilerSet makeprg=nmake - -コンパイラプラグインを書いて、それを Vim の配布物に含めたり、システムのランタ -イムディレクトリに入れたりする場合は、上記の方法を使ってください。 -"current_compiler" がユーザープラグインで設定された場合は何も実行しないように -します。 - -コンパイラプラグインを書いて標準プラグインの設定を上書きする場合は -"current_compiler" をチェックしないようにします。そのプラグインは最後に読み込 -まれないといけないので、'runtimepath' の最後にあるディレクトリに置きます。例え -ば、Unix なら ~/.vim/after/compiler などです。 - -============================================================================== -*41.14* プラグインを書く (高速ロード版) *write-plugin-quickload* - -プラグインが成長し、とても大きくなることがあります。すると、起動速度は遅くなっ -てきます。例えそのプラグインをたまにしか使わないとしても遅くなります。そういう -ときはクイックロードプラグインの出番です。 - -基本的なアイデアはプラグインを二回に分けて読み込むということです。一回目はユー -ザー定義コマンドやマップを定義して機能を提供します。二回目は機能を実装する関数 -を定義します。 - -スクリプトを二回読み込むことがクイックロードだというと驚かれるかもしれません。 -この手法の意味は、一回目は高速に読み込み、スクリプトの重い部分は二回目に後回し -にするということです。二回目の読み込みは、ユーザが実際にその機能を使用したとき -に発生します。あなたがその機能を常に使うなら、これは逆に遅くなってしまいます。 - -Note Vim 7 以降では代わりの方法があります。|41.15| で説明されている |autoload| -機能を使う方法です。 - -次に例を示します: > - - " クイックロードのデモ用のグローバルプラグイン - " Last Change: 2005 Feb 25 - " Maintainer: Bram Moolenaar <Bram@vim.org> - " License: This file is placed in the public domain. - - if !exists("s:did_load") - command -nargs=* BNRead call BufNetRead(<f-args>) - map <F19> :call BufNetWrite('something')<CR> - - let s:did_load = 1 - exe 'au FuncUndefined BufNet* source ' . expand('<sfile>') - finish - endif - - function BufNetRead(...) - echo 'BufNetRead(' . string(a:000) . ')' - " read 機能をここに書く - endfunction - - function BufNetWrite(...) - echo 'BufNetWrite(' . string(a:000) . ')' - " write 機能をここに書く - endfunction - -このスクリプトが最初に読み込まれたとき、"s:did_load" は設定されていません。 -"if" と "endif" の間のコマンドが実行されます。|:finish| コマンドによって終了 -し、スクリプトの残りの部分は実行されません。 - -二回目に読み込まれたときは "s:did_load" が存在するので、"endif" 以降のコマンド -が実行されます。この部分では (長くなる可能性のある) BufNetRead() 関数と -BufNetWrite() 関数を定義します。 - -このスクリプトをプラグインディレクトリに置くと、Vim の起動時に実行されます。処 -理の流れは次のようになります: - -1. 起動時にスクリプトが読み込まれる。"BNRead" コマンドが定義され、<F19> キーに - マップが設定される。自動コマンドの |FuncUndefined| が定義される。":finish" - コマンドによってスクリプトが終了する。 - -2. ユーザーが BNRead コマンド実行する、または <F19> キーを押す。BufNetRead() - 関数か BufNetWrite() 関数が呼び出される。 - -3. Vim はその関数を見つけることができず、自動コマンドの |FuncUndefined| イベン - トを発行する。関数名が "BufNet*" というパターンにマッチするので、"source - fname" コマンドが実行される。"fname" はスクリプトの名前になります。スクリプ - トがどこに保存されていても、"<sfile>" が展開されてファイル名になります - (|expand()|参照)。 - -4. スクリプトが再び読み込まれる。"s:did_load" 変数が存在するので関数が定義され - る。 - -遅延ロードされる関数の名前が |FuncUndefined| 自動コマンドのパターンにマッチし -ていることに注意してください。他のプラグインがこのパターンにマッチする関数を定 -義しているとうまく動きません。 - -============================================================================== -*41.15* ライブラリスクリプトを書く *write-library-script* - -いろいろな場所で同じ機能が必要になることがあります。コードが二、三行以上になる -場合は、それを一つのスクリプトに入れて、他のスクリプトから使えるようにしたくな -ると思います。そのようなスクリプトをライブラリスクリプトと呼びます。 - -自分でライブラリスクリプトを読み込むことは可能ですが、同じスクリプトを二重に読 -み込まないようにする必要があります。それには |exists()| 関数を使います。例: > - - if !exists('*MyLibFunction') - runtime library/mylibscript.vim - endif - call MyLibFunction(arg) - -'runtimepath' に設定されたディレクトリの中の "library/mylibscript.vim" の中で -MyLibFunction() が定義されている必要があります。 - -これをより簡単にするために、Vim には autoload という仕組みがあります。同じこと -を次のように書くことができます: > - - call mylib#myfunction(arg) - -この方がずっと簡単でしょう? Vim は関数の名前を見て、それが未定義なら、 -'runtimepath' の中から "autoload/mylib.vim" を探します。そのスクリプトは関数 -"mylib#myfunction()" を定義していなければなりません。 - -mylib.vim には他の関数も入れられます。ライブラリスクリプトの中では自由に関数を -作ることができます。ただし、関数名の '#' より前の部分はスクリプトの名前と同じ -にする必要があります。そうしないと Vim はどのスクリプトを読み込めばいいのかわ -かりません。 - -ライブラリスクリプトをたくさん書く場合は、サブディレクトリを使うといいかもしれ -ません。例: > - - call netlib#ftp#read('somefile') - -Unix では、このライブラリスクリプトは次のような場所に置かれます: > - - ~/.vim/autoload/netlib/ftp.vim - -関数は次のように定義します: > - - function netlib#ftp#read(fname) - " ftp を使ってファイルを読み込む - endfunction - -関数定義と関数呼び出しではまったく同じ名前が使われます。最後の '#' より前の部 -分がサブディレクトリとスクリプトの名前に対応しています。 - -同じ方法で変数を扱うこともできます: > - - let weekdays = dutch#weekdays - -これによって "autoload/dutch.vim" が読み込まれます。そのスクリプトには例えば次 -のようなコードが書かれています: > - - let dutch#weekdays = ['zondag', 'maandag', 'dinsdag', 'woensdag', - \ 'donderdag', 'vrijdag', 'zaterdag'] - -より詳しくは |autoload| を参照してください。 - -============================================================================== -*41.16* Vim スクリプトを配布する *distribute-script* - -Vim ユーザーは Vim のウェブサイト http://www.vim.org でスクリプトを探します。 -便利なスクリプトを作ったら、ぜひ共有しましょう! - -Vim スクリプトはどのシステムでも使えます。tar や gzip コマンドは存在しないこと -があります。ファイルをまとめたり圧縮したりするには "zip" ユーティリティが推奨 -されています。 - -可搬性を最大限に高めるには、Vim 自身を使ってスクリプトをパッケージ化します。そ -れには Vimball ユーティリティを使います。|vimball| を参照。 - -自動更新するための行を書いておくと便利です。|glvs-plugins| を参照。 - -============================================================================== - -次章: |usr_42.txt| 新しいメニューを追加する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_42.jax b/doc/usr_42.jax deleted file mode 100644 index b9f4fa2d1..000000000 --- a/doc/usr_42.jax +++ /dev/null @@ -1,375 +0,0 @@ -*usr_42.txt* For Vim バージョン 7.3. Last change: 2008 May 05 - - VIM USER MANUAL - by Bram Moolenaar - - 新しいメニューを追加する - - -Vim の柔軟性については既にご存知だと思います。それは GUI のメニューにおいても -同じです。自分でメニューを追加して、コマンドの実行を簡単にすることができます。 -この章はマウスをよく使うユーザー向けです。 - -|42.1| はじめに -|42.2| メニューコマンド -|42.3| その他いろいろ -|42.4| ツールバーとポップアップメニュー - -次章: |usr_43.txt| ファイルタイプを使う -前章: |usr_41.txt| Vim スクリプト書法 -目次: |usr_toc.txt| - -============================================================================== -*42.1* はじめに - -Vim のメニューは "$VIMRUNTIME/menu.vim" で定義されています。自分のメニューを作 -りたい場合は、そのファイルにざっと目を通してみてください。 -メニューを定義するには ":menu" コマンドを使います。基本的な書式は次のとおり: > - - :menu {menu-item} {keys} - -{menu-item} にはメニューの場所を指定します。例えば {menu-item} が "File.Save" -なら、"File" メニューの下の "Save" 項目を示します。ドットで名前を区切ります。 -例: > - - :menu File.Save :update<CR> - -":update" コマンドは、ファイルが変更されていればそれを保存するコマンドです。 -階層を深くすることもできます。"Edit.Settings.Shiftwidth" なら、"Edit" メニュー -の下の "Settings" サブメニューの下の "Shiftwidth" 項目を示します。さらに深くす -ることもできます。メニューが深くなりすぎるとマウスをたくさん動かさなければなら -なくなるので注意してください。 -":menu" コマンドは ":map" コマンドとよく似ています。パラメタの左側でコマンドの -実行方法を指定し、右側で実行されるコマンドを指定します。{keys} は文字列で、そ -れが実際に入力されたかのように使われます。つまり、インサートモードでは {keys} -の文字列がそのまま挿入されます。 - - -キーボードアクセラレータ ------------------------- - -アンパサンド文字 (&) はアクセラレータを示すために使われます。例えば、Alt-F で -"File" を選択し、そして S で "Save" を選択できます。 ('winaltkeys' オプション -の設定によって無効になっている可能性もあります)。その場合、{menu-item} は -"&File.&Save" のようになります。アクセラレータ文字は下線付きで表示されます -それぞれのキーは各メニューの中で一度だけしか使わないようにしてください。そうし -ないと、どちらが実行されるのかわからなくなります。これについて Vim は警告は発 -しません。 - - -並び順 ------- - -"File.Save" メニューの実際の定義は次のようになっています: > - - :menu 10.340 &File.&Save<Tab>:w :confirm w<CR> - -10.340 という数値は順位番号です。これはメニュー項目の位置を決定するために使わ -れます。最初の番号 (10) はメニューバーにおける位置を示します。数字が小さいほど -左側に配置され、大きいほど右側に配置されます。 -標準メニューでは次の順位番号が使われています: - - 日本語環境 - 10 20 40 50 60 70 9999 - +-----------------------------------------------------------------+ - | ファイル 編集 ツール シンタックス バッファ ウィンドウ ヘルプ | - +-----------------------------------------------------------------+ - - 英語環境 - 10 20 40 50 60 70 9999 - +------------------------------------------------------------+ - | File Edit Tools Syntax Buffers Window Help | - +------------------------------------------------------------+ - -ヘルプメニューには大きな番号が与えられ、右端に表示されるようになっています。 -二番目の数字 (340) はプルダウンメニューにおける位置を示します。数字が小さいほ -ど上に配置され、大きいほど下に配置されます。ファイルメニューの順位番号を以下に -示します: - - 日本語環境 英語環境 - +-------------------+ +-----------------+ - 10.310 |開く... | |Open... | - 10.320 |分割して開く... | |Split-Open... | - 10.325 |新規作成 | |New | - 10.330 |閉じる | |Close | - 10.335 |------------------ | |---------------- | - 10.340 |保存 | |Save | - 10.350 |名前を付けて保存...| |Save As... | - 10.400 |------------------ | |---------------- | - 10.410 |差分表示... | |Split Diff with | - 10.420 |パッチ結果を表示...| |Split Patched By | - 10.500 |------------------ | |---------------- | - 10.510 |印刷 | |Print | - 10.600 |------------------ | |---------------- | - 10.610 |保存して終了 | |Save-Exit | - 10.620 |終了 | |Exit | - +-------------------+ +-----------------+ - -それぞれの番号の間には少し余裕があるので、必要なら、そこにメニューを追加するこ -とができます (ただし、標準メニューに手を加えるより、新しいメニューを追加したほ -うがよいでしょう)。 -サブメニューを作るときは、さらに ".number" を追加することができます。つまり、 -{menu-item} のそれぞれの名前が順位番号を持ちます。 - - -特殊文字 --------- - -例では、{menu-item} に "&File.&Save<Tab>:w" が指定されていました。これは重要な -ポイントです。{menu-item} は一つの単語でなければなりません。ドット、スペース、 -タブなどを使いたい場合は <> 表記 (<Space>や<Tab>など) を使うか、バックスラッ -シュ (\) でエスケープする必要があります。 > - - :menu 10.305 &File.&Do\ It\.\.\. :exit<CR> - -これは、メニュー項目の名前が "Do It..." (空白が含まれてます)、実行されるコマン -ドは ":exit<CR>" になります。 - -メニューの名前は <Tab> 文字を使って、名前の部分とヒント情報の部分を区切ること -ができます。<Tab> より後ろの部分は右寄せされて表示されます。File.Save では -"&File.&Save<Tab>:w" という名前が使われていました。これは "File.Save" という名 -前と ":w" というヒント情報です。 - - -セパレータ ----------- - -セパレータは、関連した項目をグループ化するのに使います。これは例えば "-sep-" -のように名前の最初と最後に "-" を付けることで定義できます。複数のセパレータを -使う場合はそれぞれ別の名前を付けてください。名前自体に意味はありません。 -セパレータに設定されたコマンドが実行されることはありませんが、その定義は必要で -す。":" を書いておいてください。例: > - - :amenu 20.510 Edit.-sep3- : - -============================================================================== -*42.2* メニューコマンド - -メニューはモード別に定義できます。メニュー項目は対応するモードでのみ使えます。 -":map" コマンドのバリエーションと同じようなものです: - - :menu ノーマルモード、ビジュアルモード、オペレータ待機モード - :nmenu ノーマルモード - :vmenu ビジュアルモード - :omenu オペレータ待機モード - :menu! インサートモード、コマンドライン - :imenu インサートモード - :cmenu コマンドラインモード - :amenu すべてのモード - -メニュー項目が再マップされないようにするには、":noremenu"、":nnoremenu"、 -":anoremenu" などを使います。 - - -:amenu の使い方 ---------------- - -":amenu" コマンドは少し特殊です。{keys} に指定した文字列はノーマルモードで実行 -するものとして扱われます。ビジュアルモードやインサートモードでメニューが使われ -た場合は、実行の前にノーマルモードに戻らなければならないので、CTRL-C や CTRL-O -が挿入されます。例えば、次のコマンドを使うと: > -> - :amenu 90.100 Mine.Find\ Word * - -メニューのコマンドは次のように定義されます: - - ノーマルモード: * - ビジュアルモード: CTRL-C * - オペレータ待機モード: CTRL-C * - インサートモード: CTRL-O * - コマンドラインモード: CTRL-C * - -コマンドラインモードでは、入力途中のコマンドが CTRL-C によって破棄されます。ビ -ジュアルモードとオペレータ待機モードでは、CTRL-C によってモードが停止します。 -インサートモードでは、CTRL-O を使ってコマンドを実行してからインサートモードに -戻ります。 -CTRL-O は一つのコマンドに対してのみ機能します。複数のコマンドを実行したい場合 -は、それらを関数に入れて、その関数を呼んでください。例: > - - :amenu Mine.Next\ File :call <SID>NextFile()<CR> - :function <SID>NextFile() - : next - : 1/^Code - :endfunction - -このメニュー項目は、":next" で引数リストの次のファイルに移動し、"Code" で始ま -る行を検索します。 -関数名の前にある <SID> はスクリプトIDです。関数がスクリプトの中に限定されるよ -うになります。複数のスクリプトファイルで関数の名前が重複してしまう問題を避ける -ことができます。|<SID>| 参照。 - - -サイレントメニュー ------------------- - -メニューは {keys} を実際に入力したかのように実行されます。":" コマンドであれば -コマンドラインにエコーされたコマンドが表示されます。そのコマンドが長ければ、 -hit-Enter プロンプトが表示されます。そんなのはうっとうしいですよね。 -これはメニューをサイレントにすることで解決できます。それには <silent> 引数を指 -定します。例えば、上の例の NextFile() を呼び出してみます。メニューを実行する -と、コマンドラインには次のような表示がでます: - - :call <SNR>34_NextFile() ~ - -このような表示をなくすには、最初の引数として "<silent>" を指定します: > - - :amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR> - -"<silent>" の使いすぎに注意してください。コマンドが短いならそれは必要ありませ -ん。誰かのためにメニューを作る場合、実行されたコマンドが表示されるようになって -いれば、マウスを使わない場合はどのように入力すればいいかのヒントになります。 - - -メニューの一覧 --------------- - -{keys} を指定せずに menu コマンドを使うと、定義されたメニューの一覧を表示でき -ます。{menu-item} やその一部を指定することで、特定の項目だけを表示できます。 -例: > - - :amenu - -すべてのメニューが表示されます。とっても長い一覧が表示されます。メニューの名前 -を指定して短い一覧を表示したほうがいいでしょう: > - - :amenu Edit - :amenu 編集(E) - -すべてのモードの "Edit" メニューの項目だけが表示されます。インサートモードのメ -ニュー項目を一つだけ表示するには次のようにします: > - - :imenu Edit.Undo - :imenu 編集(E).取り消す(U) - -名前は正しく指定する必要があります。大文字と小文字は区別されます。ただし、アク -セラレータ指定のための '&' は省略できます。<Tab> と、その後に続く文字列も同様 -に省略できます。 - - -メニューの削除 --------------- - -メニューを削除するには一覧表示と同じようなコマンドを使います。ただし、"menu" -ではなく "unmenu" を使います。":menu" は ":unmenu" になり、":nmenu" は -":nunmenu" になります。インサートモードの "Tools.Make" を削除するには次のよう -にします: > - - :iunmenu Tools.Make - :iunmenu ツール(T).メイク(M) - -メニューの名前を指定すると、その中の項目もすべて削除されます。例: > - - :aunmenu Syntax - :aunmenu シンタックス(S) - -シンタックスメニューとその中の項目がすべて削除されます。 - -============================================================================== -*42.3* その他いろいろ - -'guioptions' のフラグを設定することでメニューの表示を変更できます。初期設定で -は以下の "M" 以外のすべてのフラグが設定されています。フラグは次のようなコマン -ドで外すことができます: > - - :set guioptions-=m -< - m 外すとメニューバーが非表示になります。 - - M 追加すると標準メニューがロードされなくなります。 - - g 外すと非アクティブなメニュー項目は灰色表示にはならず非 - 表示になります。(そうならないシステムもあります。) - - t 外すとティアオフ機能が無効になります。 - -メニューの一番上に表示される点線はセパレータではありません。その項目を選択する -と、メニューは "ティアオフ(切り離し)"、つまり別ウィンドウで表示されます。これ -をティアオフメニューと呼びます。同じメニュー項目を頻繁に使う場合に便利です。 - -メニュー項目の翻訳については |:menutrans| を参照してください。 - -メニューはマウスで選択するものなので、":browse" コマンドを使って、ファイルを選 -択できるようにすると便利です。また、":confirm" を使って、エラーメッセージの代 -わりにダイアログを表示するのもいいでしょう (例えばカレントバッファに変更がある -状態で何かをする場合など)。この二つのコマンドは同時に使用できます: > - - :amenu File.Open :browse confirm edit<CR> - -":browse" を使うと、開くファイルを選択するためのファイルブラウザが表示されま -す。":confirm" を使うと、カレントバッファに変更があった場合にポップアップダイ -アログが表示され、それを保存するか、破棄するか、コマンドをキャンセルするかを選 -択できます。 -confirm() 関数や inputdialog() 関数を使ってもっと複雑な処理をすることもできま -す。標準メニューにいくつか例があります。 - -============================================================================== -*42.4* ツールバーとポップアップメニュー - -特殊なメニューが二つあります。ToolBar (ツールバー) と PopUp (ポップアップ) で -す。これらの名前で始まるメニュー項目はメニューバーに表示されません。 - - -ツールバー ----------- - -ツールバーは 'guioptions' オプションに "T" フラグが含まれている場合のみ表示さ -れます。 -ツールバーではテキストの代わりにアイコンが表示されます。例えば、"ToolBar.New" -という {menu-item} はツールバーの "New" アイコンとして表示されます。 -Vim には 28 個のアイコンが組み込まれています。その一覧は |builtin-tools| にあ -ります。ほとんどのアイコンは標準ツールバーで使われています。それらの項目の動作 -は変更可能です (標準メニューの初期化後に変更できます)。 -標準アイコン以外の画像を使ったり、新しい項目を追加することもできます。例えば、 -次のコマンドで新しい項目を追加できます: > - - :tmenu ToolBar.Compile Compile the current file - :amenu ToolBar.Compile :!cc % -o %:r<CR> - -アイコンは別途作成する必要があります。MS-Windows では "Compile.bmp" という名前 -の bitmap 形式の画像を使います。Unix では "Compile.xpm" という名前の XPM 形式 -の画像を使います。サイズは 18x18 ドットにしてください。MS-Windows では他のサイ -ズでも構いませんが、きれいには表示されません。 -画像は、'runtimepath' の "bitmaps" ディレクトリに入れてください。例えば、Unix -なら "~/.vim/bitmaps/Compile.xpm" などです。 - -ツールバーの各項目にはツールチップを設定できます。ツールチップとは、機能を説明 -するための短かいテキストです。例えば "ファイルを開く" といったものです。項目の -上にマウスポインタを置いてしばらく待つと表示されます。画像だけではどのような機 -能かわからない場合に便利です。 -例: > - - :tmenu ToolBar.Make Run make in the current directory -< - Note: - 大文字/小文字に注意してください。"Toolbar" と "toolbar" はどちらも - "ToolBar" とは区別されます。 - -ツールチップを削除するには |:tunmenu| コマンドを使います。 - -'toolbar'オプションを設定すると、画像の代わりに文字列を表示したり、文字列と画 -像の両方を表示したりできます。テキストの表示は場所を取るので、ほとんどの人は画 -像だけを表示しています。 - - -ポップアップメニュー --------------------- - -ポップアップメニューはマウスポインタのある場所に表示されるメニューです。 -MS-Windows ではマウスの右クリックで表示し、左クリックで項目を選択します。Unix -では右ボタンを押したままにして使います。 -ポップアップメニューは 'mousemodel' が "popup" か "popup_setpos" のどちらかに -設定されている場合にだけ表示されます。両者の違いは、"popup_setpos" ならマウス -ポインタの場所にカーソルが移動するという点です。選択中のテキストをクリックした -場合はその選択範囲は変更されずにそのまま使われます。テキストの選択中に他の場所 -をクリックした場合は選択が解除されます。 -ポップアップメニューはモード別になっています。普通のメニューのように、他のモー -ドの項目が灰色表示されるということはありません。 - -生命、宇宙、その他もろもろの答えは? *42* -この問の真意を知っていた唯一の人物、ダグラス・アダムズは残念ながら他界しまし -た。それで死の答えはなんなんだろう... - -============================================================================== - -次章: |usr_43.txt| ファイルタイプを使う - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_43.jax b/doc/usr_43.jax deleted file mode 100644 index f5c7a42c2..000000000 --- a/doc/usr_43.jax +++ /dev/null @@ -1,171 +0,0 @@ -*usr_43.txt* For Vim バージョン 7.3. Last change: 2008 Dec 28 - - VIM USER MANUAL - by Bram Moolenaar - - ファイルタイプを使う - - -C プログラムやシェルスクリプトなどの特定の種類のファイルを編集するときに、よく -使うオプション設定やマップがあると思います。それを毎回手作業で設定するのは面倒 -ですよね。この章ではそれを自動化する方法を説明します。 - -|43.1| ファイルタイププラグイン -|43.2| ファイルタイプを追加する - -次章: |usr_44.txt| 構文ファイルを作成する -前章: |usr_42.txt| 新しいメニューを追加する -目次: |usr_toc.txt| - -============================================================================== -*43.1* ファイルタイププラグイン *filetype-plugin* - -ファイルタイププラグインの使用方法については既に |add-filetype-plugin| で説明 -しました。しかし、標準では最小限の設定しかされないので、それだけでは物足りない -と思います。例えば C ファイルを開いたときに、'softtabstop' オプションを 4 に設 -定したり、三行コメントを挿入するためのマップを定義したりすると便利かもしれませ -ん。2 ステップで設定できます。 - - *your-runtime-dir* -1. 自分のランタイムディレクトリを作成する。Unix なら普通は "~/.vim" です。その - ディレクトリの中に "ftplugin" ディレクトリを作成します: > - - mkdir ~/.vim - mkdir ~/.vim/ftplugin -< - Unix 以外のシステムでは、'runtimepath' オプションを見て、"ftplugin" ディレ - クトリが検索される場所を確認してください: > - - set runtimepath - -< 普通は最初のディレクトリ (最初のカンマの前) を使います。初期設定以外のディ - レクトリを使いたい場合は、|vimrc| ファイルの中で 'runtimepath' オプションを - 設定してディレクトリを追加してください。 - -2. "~/.vim/ftplugin/c.vim" を作成して設定を書きます: > - - setlocal softtabstop=4 - noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> - -そして、C ファイルを開いてみてください。'softtabstop' オプションが 4 に設定さ -れていますね。しかし、他のファイルを開くと初期設定の 0 にリセットされます。そ -れは ":setlocal" コマンドが使われているからです。このコマンドはバッファの -'softtabstop' オプションだけを設定します。他のバッファを開くと、開いたバッファ -用の設定が使用されます。新しいバッファの設定には、初期設定、または最後に -":set" コマンドで設定された値が使われます。 - -同様に、"\c" マップも他のバッファを開くと見えなくなります。":map <buffer>" コ -マンドを使うと、カレントバッファの中だけで使えるマップを作成できます。これは -":map!" や ":vmap" などの他のマップコマンドでも同様です。マップの中の -|<LocalLeader>| は "maplocalleader" 変数の値で置き換えられます。 - -ファイルタイププラグインの例はこのディレクトリで探すことができます: > - - $VIMRUNTIME/ftplugin/ - -ファイルタイププラグインの作成方法の詳細は |write-plugin| を参照してください。 - -============================================================================== -*43.2* ファイルタイプを追加する - -Vim がファイルタイプを認識しない場合は、設定を追加してください。まず自分用のラ -ンタイムディレクトリを用意する必要があります。上述の |your-runtime-dir| を参照 -してください。 - -"filetype.vim" というファイルを作成してファイルタイプ用の自動コマンドを設定し -ます。(自動コマンドは |40.3| で説明されています。) 例: > - - augroup filetypedetect - au BufNewFile,BufRead *.xyz setf xyz - augroup END - -ファイル名が ".xyz" で終わるすべてのファイルが "xyz" ファイルタイプとして認識 -されるようになります。":augroup" コマンドを使って自動コマンドを -"filetypedetect" グループに置いています。こうすることで、ファイルタイプを認識 -するための自動コマンドを ":filetype off" で削除できるようになります。"setf" コ -マンドは 'filetype' を指定されたタイプに設定します。ただし、設定済みの場合は変 -更しません。これによってファイルタイプが二重に設定されないようになっています。 - -ファイル名にマッチするパターンはいろいろなものが使えます。ディレクトリ名を含め -ることもできます。|autocmd-patterns| 参照。例えば、"/usr/share/scripts" にある -ファイルが拡張子に関係なくすべて "ruby" ファイルであるなら、次のような設定を追 -加します: > - - augroup filetypedetect - au BufNewFile,BufRead *.xyz setf xyz - au BufNewFile,BufRead /usr/share/scripts/* setf ruby - augroup END - -しかし、/usr/share/scripts/README.txt を開いたとき、それは ruby ファイルではあ -りえませんよね。"*" で終わるパターンの問題は、多くのファイルにマッチしすぎてし -まうことです。この問題を避けるには、'runtimepath' の最後に指定されたディレクト -リに "filetype.vim" を置きます。例えば Unix なら "~/.vim/after/filetype.vim" -などです。 -では、~/.vim/filetype.vim にテキストファイルの検出を設定します: > - - augroup filetypedetect - au BufNewFile,BufRead *.txt setf text - augroup END - -このファイルは 'runtimepath' の最初に見つかります。そして、最後に見つかるファ -イル "~/.vim/after/filetype.vim" の中で次の設定をします: > - - augroup filetypedetect - au BufNewFile,BufRead /usr/share/scripts/* setf ruby - augroup END - -処理の流れは次のようになります。Vim は 'runtimepath' の各ディレクトリから -"filetype.vim" を探します。最初に "~/.vim/filetype.vim" が見つかります。*.txt -を処理する自動コマンドがここで定義されます。次に Vim は $VIMRUNTIME にある -filetype.vim を見つけます ($VIMRUNTIME は 'runtimepath' の中程にあります)。最 -後に ~/.vim/after/filetype.vim が見つかり、/usr/share/scripts の ruby ファイル -を認識するための自動コマンドが追加されます。 -/usr/share/scripts/README.txt を開くと、定義された順番で自動コマンドがチェック -されます。*.txt というパターンがマッチするので、"setf text" が実行され、ファイ -ルタイプが "text" に設定されます。ruby 用のパターンもマッチするので、"setf -ruby" が実行されます。しかし、'filetype' は既に設定されているので何も起こりま -せん。 -/usr/share/scripts/foobar を開くと、同様に自動コマンドがチェックされます。ruby -のパターンだけがマッチするので、"setf ruby" が実行され、'filetype' が ruby に -設定されます。 - - -内容を見て判断する ------------------- - -ファイル名からはファイル種別を判断できなくても、内容で判断できる場合がありま -す。例えば、多くのスクリプトファイルは次のような行で始まります: - - #!/bin/xyz ~ - -このスクリプトを認識するには、"scripts.vim" というファイルをランタイムディレク -トリに作ります (filetype.vim と同じ場所です)。中身は次のようになります: > - - if did_filetype() - finish - endif - if getline(1) =~ '^#!.*[/\\]xyz\>' - setf xyz - endif - -最初に did_filetype() を使って、既にファイル名からファイルタイプが認識されてい -るかどうかを確認し、不要ならファイル内容のチェックを実行しないようにします。こ -れは、"setf" コマンドが意味をなさないときに、ファイルのチェックによって時間を -無駄に消費しないためです。 -scripts.vim は標準ファイルの filetype.vim で定義された自動コマンドによって読み -込まれます。そのため、次の順番でチェックが実行されます: - - 1. 'runtimepath' の $VIMRUNTIME の前にある filetype.vim - 2. $VIMRUNTIME/filetype.vim の前半部分 - 3. 'runtimepath' のすべての scripts.vim - 4. $VIMRUNTIME/filetype.vim の後半部分 - 5. 'runtimepath' の $VIMRUNTIME の後にある filetype.vim - -もっと複雑なことがしたい場合は、すべてのファイルにマッチする自動コマンドを追加 -して、スクリプトを読み込むなり関数を実行するなりしてファイルの内容をチェックし -てください。 - -============================================================================== - -次章: |usr_44.txt| 構文ファイルを作成する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_44.jax b/doc/usr_44.jax deleted file mode 100644 index e8fc3984f..000000000 --- a/doc/usr_44.jax +++ /dev/null @@ -1,711 +0,0 @@ -*usr_44.txt* For Vim バージョン 7.3. Last change: 2008 Dec 28 - - VIM USER MANUAL - by Bram Moolenaar - - 構文ファイルを作成する - - -Vim は 200 種類以上ものファイルを強調表示できます。強調表示されないファイルを -見つけた場合は、本章を読んで、ファイルを強調表示する方法を調べてください。リ -ファレンスマニュアルの |:syn-define| も参照してください。 - -|44.1| 基本的な syntax コマンド -|44.2| キーワード -|44.3| マッチ -|44.4| リージョン -|44.5| 構文アイテムを入れ子にする -|44.6| グループの並び -|44.7| その他の引数 -|44.8| クラスタ -|44.9| 他の構文ファイルをインクルードする -|44.10| シンクロナイズ -|44.11| 構文ファイルをインストールする -|44.12| ポータブルな文法定義ファイル - -次章: |usr_45.txt| 言語を選択する -前章: |usr_43.txt| ファイルタイプを使う -目次: |usr_toc.txt| - -============================================================================== -*44.1* 基本的な syntax コマンド - -既存の構文ファイルを土台にすることで多くの時間を節約できます。望みのものに近い -言語の構文ファイルを $VIMRUNTIME/syntax から探してください。それらのファイルを -見れば、構文ファイルの基本的な構造がわかると思います。内容を理解するには本章を -読んでください。 - -基本的なことから説明します。構文定義を開始する前に、古い定義をクリアする必要が -あります: > - - :syntax clear - -最終的な構文ファイルではこのコマンドは必要ありませんが、いろいろと試したいとき -には便利です。 - -本章の説明はかなり簡略化されています。構文ファイルを書いて、それを他人に使って -もらう場合は、本章を最後まで読んで詳細を理解してください。 - - -定義された構文アイテムを一覧表示する ------------------------------------- - -現在定義されている構文アイテムを表示するには、次のコマンドを使います: > - - :syntax - -実際に定義されている構文アイテムを確認することができます。新しい構文ファイルを -作っていて、いろいろと試しているときに便利です。また、それぞれの構文アイテム -は、実際の表示と同じ色で表示されるので、何がどうなっているかも確認できます。 -特定の構文グループのアイテムを一覧表示するには次のようにします: > - - :syntax list {group-name} - -これはクラスタ (|44.8|参照) を一覧表示することもできます。その場合は名前に @ -を付けてください。 - - -大文字と小文字の区別 --------------------- - -Pascal などの言語は大文字と小文字を区別しません。C などの言語は大文字と小文字 -を区別します。次のコマンドで区別するかしないかを指定できます: > - :syntax case match (大文字/小文字を区別する) - :syntax case ignore (大文字/小文字を区別しない) - -"match" を指定すると大文字と小文字は区別されます。その場合、"int" と "Int" と -"INT" はそれぞれ違うものになります。"ignore" を指定した場合は、"Procedure" と -"PROCEDURE" と "procedure" は同じ扱いになります。 -":syntax case" コマンドは構文ファイルのどこにでも書くことができ、それ移行の構 -文定義に作用します。ほとんどの場合、":syntax case" コマンドは構文ファイルに一 -つだけ書きますが、大文字と小文字を区別する要素と区別しない要素を両方もつような -特殊な言語の場合には、ファイルのいたるところで ":syntax case" コマンドを書くこ -ともできます。 - -============================================================================== -*44.2* キーワード - -最も基本的な構文要素はキーワードです。次のように定義します: > - - :syntax keyword {group} {keyword} ... - -{group} は構文グループの名前です。":highlight" コマンドを使うことで {group} に -色を割り当てることができます。{keyword} は実際のキーワードです。いくつか例を示 -します: > - - :syntax keyword xType int long char - :syntax keyword xStatement if then else endif - -"xType" と "xStatement" がグループ名です。習慣的に、グループ名の先頭にはファイ -ルタイプ名が付けられます。この例では x 言語 (そういう言語があるのではなく単に -eXample の x) の構文を定義しています。例えば "csh" スクリプト用の構文ファイル -なら "cshType" という名前になります。つまり、'filetype' の値と同じものを先頭に -付けます。 -この例では "int" と "long" と "char" が同じ方法で強調表示され、"if" と "then" -と "else" と "endif" が別の同じ方法で強調表示されます。次に、x グループ名と -Vim の標準名を関連付ける必要があります。次のようにします: > - - :highlight link xType Type - :highlight link xStatement Statement - -"xType" を "Type" で強調表示し、"xStatement" を "Statement" で強調表示します。 -標準名については |group-name| を参照してください。 - - -特殊なキーワード ----------------- - -キーワードとして使われる文字は 'iskeyword' オプションに指定されていなければな -りません。それ以外の文字を使った場合、その単語は決してマッチしません。Vim はそ -のことについて警告メッセージを出しません。 -例題の x 言語は '-' 文字をキーワードとして使えます。それは次のように設定しま -す: > - - :setlocal iskeyword+=- - :syntax keyword xStatement when-not - -":setlocal" コマンドを使って、カレントバッファだけ 'iskeyword' を変更していま -す。この設定によって "w" や "*" などのコマンドの動作も変更されます。動作を変更 -したくない場合は、キーワードではなくマッチを使ってください(次節で説明します)。 - -x 言語では短縮形も使えます。例えば、"next" は "n"、"ne"、"nex" に短縮できま -す。次のコマンドでそれを定義できます: > -> - :syntax keyword xStatement n[ext] - -これは "nextone" にはマッチしません。キーワードは常に単語全体にのみマッチしま -す。 - -============================================================================== -*44.3* マッチ - -もう少し複雑なものを定義してみましょう。普通の識別子にマッチさせるため、マッチ -構文アイテムを定義します。次の例は、すべての文字が小文字の単語にマッチします: -> - :syntax match xIdentifier /\<\l\+\>/ -< - Note: - キーワードは他の構文アイテムより優先されます。"if" や "then" などの - キーワード (上述の ":syntax keyword" コマンドで定義したもの) は、 - xIdentifier にもマッチしますが、キーワードとして扱われます。 - -最後の部分はパターンです。これは検索で使用するものと同じです。// を使ってパ -ターンを囲みます (":substitute" コマンドと同じ)。+ や " など、他の文字を使うこ -ともできます。 - -次はコメント用のマッチを定義してみます。x 言語では "#" から行末までがコメント -になります: > - - :syntax match xComment /#.*/ - -すべての検索パターンが使えるので、マッチを使うことで非常に複雑なものを強調表示 -できます。検索パターンについては |pattern| を参照してください。 - -============================================================================== -*44.4* リージョン - -例題の x 言語では、文字列をダブルクオートで囲みます。文字列を強調表示するため -にリージョン (領域) を定義します。それにはリージョンの開始 (ダブルクオート) と -リージョンの終了 (ダブルクオート) が必要です。定義は次のようになります: > - - :syntax region xString start=/"/ end=/"/ - -"start" と "end" に指定したパターンは、リージョンの開始と終了を探すために使用 -されます。しかし次のような文字列があったらどうなるでしょうか? - - "A string with a double quote (\") in it" ~ - -これはうまくいきません。文字列の途中のダブルクオートによってリージョンが終了し -てしまいます。文字列中のエスケープされたダブルクオートをスキップするように指定 -する必要があります。それには "skip" キーワードを使います: > - - :syntax region xString start=/"/ skip=/\\"/ end=/"/ - -検索パターンの中ではバックスラッシュが特殊な文字として使われるので、連続した二 -つのバックスラッシュが一つのバックスラッシュにマッチします。 - -マッチではなくリージョンを使うのはどんな場面しょうか?主な違いは、マッチは一つ -のパターンであり、そのパターン全体がマッチするということです。リージョンは -"start" パターンがマッチするとすぐに開始されます。"end" パターンが見つかるかど -うかは関係ありません。つまり、構文アイテムが "end" パターンにマッチすることに -依存している場合はリージョンは使えません。それが大丈夫なら、リージョンを定義す -る方が簡単な場合が多々あります。また、次の節でも述べるように、構文アイテムを入 -れ子にする場合もリージョンが適しています。 - -============================================================================== -*44.5* 構文アイテムを入れ子にする - -次のようなコメントがあります: - - %Get input TODO: Skip white space ~ - -コメントを青色で強調表示し、その中の TODO を黄色の大きな字で強調表示してみま -しょう。それには、次のような構文グループを定義します: > - - :syntax keyword xTodo TODO contained - :syntax match xComment /%.*/ contains=xTodo - -一行目の "contained" 引数は、そのキーワードが他の構文アイテムの中にのみ出現す -ることを示しています。二行目の "contains=xTodo" は、その構文アイテムの中に -xTodo が出現することを示しています。結果、コメント全体は "xComment" にマッチし -て青色になり、その中の TODO は xTodo にマッチして黄色になります (xTodo に対す -る強調表示が設定してあるなら)。 - - -入れ子の再帰 ------------- - -x 言語では波カッコでコードブロックを表現します。コードブロックの中にはさらに別 -のコードブロックを入れることができます。これは次のように定義できます: > - - :syntax region xBlock start=/{/ end=/}/ contains=xBlock - -例えば、次のようなテキストがあった場合: - - while i < b { ~ - if a { ~ - b = c; ~ - } ~ - } ~ - -まず、一行目の { で一つ目の xBlock が開始します。二行目には別の { があります。 -そこは xBlock の中で、xBlock は自身を含むことができるので、二つ目の xBlock が -開始します。したがって、"b = c" の行は第二レベルの xBlock リージョンの中という -ことになります。次の行には } があり、これはリージョンの末尾を示すパターンに -マッチするので、これによって二つ目の xBlock が閉じます。この } は二つ目の -xBlock リージョンの中の文字なので、一つ目の xBlock リージョンからは隠されま -す。そして、最後の } によって一つ目の xBlock リージョンが閉じます。 - - -末尾をキープする ----------------- - -次の二つの構文アイテムを見てみましょう: > - - :syntax region xComment start=/%/ end=/$/ contained - :syntax region xPreProc start=/#/ end=/$/ contains=xComment - -% から行末までをコメントとして定義し、# から行末までをプリプロセッサ指令として -定義しています。プリプロセッサ行にはコメントを入れることができるので、プリプロ -セッサの定義には "contains=xComment" 引数が指定されています。では、次のような -テキストで何が起こるか見てみましょう: - - #define X = Y % Comment text ~ - int foo = 1; ~ - -このテキストは、二行目も xPreProc として強調表示されます。プリプロセッサ指令は -行末で終るものであり、そのために "end=/$/" と指定しました。何が間違っていたの -でしょうか? -問題は内包されたコメントにあります。コメントは % で始まり、行末で終ります。コ -メントが終るとプリプロセッサ構文に戻りますが、それは行末が処理された後なので、 -次の行も含まれてしまうのです。 -この問題を回避し、内包された構文が改行を消費しないようにするには、"keepend" 引 -数を使います。これで、行末への二重マッチに対応できます: > - - :syntax region xComment start=/%/ end=/$/ contained - :syntax region xPreProc start=/#/ end=/$/ contains=xComment keepend - - -複数アイテムの内包 ------------------- - -"contains=" 引数には「すべての構文アイテム」を指定することができます。例: > - - :syntax region xList start=/\[/ end=/\]/ contains=ALL - -xList にはすべての構文アイテムが内包されます。「すべて」は自分自身を含みます -が、同じ位置のものは除外されます (無限ループを避けるため)。 -一部のグループだけを除外するような指定もできます。つまり、指定したグループ以外 -のグループを内包できます: > - - :syntax region xList start=/\[/ end=/\]/ contains=ALLBUT,xString - -"TOP" を指定すると、"contained" 引数を持たないすべてのアイテムが対象になりま -す。"CONTAINED" を指定すると、"contained" 引数を持つアイテムだけが対象になりま -す。詳しくは |:syn-contains| を参照してください。 - -============================================================================== -*44.6* グループの並び - -x 言語には次のような形式のステートメントがあります: - - if (condition) then ~ - -この三つのアイテムを別々に強調表示します。ただし、"(condition)" と "then" は他 -の場所にも出現し、そこでは別の方法で強調表示されることもあります。次のように定 -義します: > - - :syntax match xIf /if/ nextgroup=xIfCondition skipwhite - :syntax match xIfCondition /([^)]*)/ contained nextgroup=xThen skipwhite - :syntax match xThen /then/ contained - -"nextgroup" 引数で、次に来るアイテムを指定します。これは (マッチするための) 必 -須条件にはなりません。指定されたアイテムが見つからなかった場合は何も起こりませ -ん。例えば、次のテキストの場合: - - if not (condition) then ~ - -"if" は xIf にマッチします。"not" は nextgroup に指定された xIfCondition に -マッチしません。したがって、"if" だけが強調表示されます。 - -"skipwhite" 引数を指定すると、次のアイテムとの間に空白 (スペースとタブ) をはさ -むことができます。同様に、"skipnl" を指定すれば、次のアイテムとの間に改行をは -さむことができ、"skipempty" を指定すれば、空行をはさむことができます。ただし、 -"skipnl" は空行をスキップしないので注意してください。改行の後で何かにマッチす -る必要があります。 - -============================================================================== -*44.7* その他の引数 - -MATCHGROUP ----------- - -リージョンは、リージョン全体が同じグループで強調表示されます。例えば、() で囲 -まれたテキストを xInside グループで強調表示するため、次のように定義します: > - - :syntax region xInside start=/(/ end=/)/ - -このときに、カッコだけを別の方法で強調表示することを考えます。複雑な方法を使っ -て定義することもできますが、"matchgroup" 引数を使う方法もあります。 -"matchgroup" を指定すると、リージョンの start と end の部分を別の強調グループ -で表示できます (この例では xParen): > - - :syntax region xInside matchgroup=xParen start=/(/ end=/)/ - -"matchgroup" 引数は、その引数より後ろに指定された start と end に対して適用さ -れます。上の例では start と end の両方が xParen で強調表示されます。end を -xParenEnd で強調表示する場合は次のようにします: > - - :syntax region xInside matchgroup=xParen start=/(/ - \ matchgroup=xParenEnd end=/)/ - -"matchgroup" を使うと、内包されたアイテムが start と end の部分にマッチしなく -なります。次の "transparent" の例題ではそれを利用しています。 - - -TRANSPARENT (透過) ------------------- - -例えば C 言語のファイルで、"while" の後の () と、"for" の後の () を別の方法で -強調表示してみます。両方とも () を入れ子にできて、それが外側の () と同じ方法で -強調表示されるようにします。() の強調表示は ) がマッチしたところでストップしま -す。それには、例えば次のようにします: > - - :syntax region cWhile matchgroup=cWhile start=/while\s*(/ end=/)/ - \ contains=cCondNest - :syntax region cFor matchgroup=cFor start=/for\s*(/ end=/)/ - \ contains=cCondNest - :syntax region cCondNest start=/(/ end=/)/ contained transparent - -cWhile と cFor には別の強調表示が使われます。cCondNest は両方に出現し、自身を -内包しているアイテムと同じ強調グループで強調表示されます。"transparent" 引数に -よってこのような動作になります。 -この例では、"matchgroup" 引数に自分自身のグループを指定しています。その理由 -は、matchgroup を使うことで、内包されたアイテムが start の部分にマッチしないと -いう副作用が発生するからです。それを利用して cCondNest グループが "while" や -"for" の直後の ( にマッチしないようにしています。もし直後の ( にマッチしてしま -うと、cCondNest は ) までのすべてのテキストにマッチしてしまい、その後ろから -リージョンが再開することになってしまいます。matchgroup を指定することで、 -cCondNest は start の後、つまり最初の ( より後でマッチするようになります。 - - -オフセット ----------- - -"if" の後ろにある ( と ) の間のテキストをリージョンとして定義します。ただし、 -"if" と () 自体はリージョンに含めたくありません。そのような場合はオフセットを -使います。例: > - - :syntax region xCond start=/if\s*(/ms=e+1 end=/)/me=s-1 - -start パターンには "ms=e+1" というオフセットが指定されています。"ms" は Match -Start という意味です。マッチの開始位置のオフセットを設定できます。通常は、パ -ターンがマッチした場所がマッチの開始位置になります。"e+1" はパターンがマッチし -たテキストの末尾からさらに一つ進んだ場所を示します。 -end パターンには "me=s-1" というオフセットが指定されています。"me" は Match -End という意味です。"s-1" はパターンにマッチしたテキストの先頭から一つ戻った場 -所を示します。例えば、次のテキストでは: - - if (foo == bar) ~ - -"foo == bar" の部分だけが xCond で強調表示されます。 - -オフセットの詳細については |:syn-pattern-offset| を参照してください。 - - -ONELINE -------- - -"oneline" 引数は、リージョンが複数行にまたがらないことを示します。例: > - - :syntax region xIfThen start=/if/ end=/then/ oneline - -これは "if" で始まって "then" で終るリージョンを定義しています。ただし、"if" -と "then" が同じ行にない場合はマッチしません。 - - Note: - "oneline" を使用した場合、end パターンが同じ行でマッチしない限り、リー - ジョンは開始されません。"oneline" がない場合は、end パターンがマッチす - る場所があるかどうかはチェックされません。その場合、たとえ end パター - ンにマッチする場所がなくても、リージョンは開始されます。 - - -行の継続と継続の回避 --------------------- - -さて、少し複雑になってきました。次はプリプロセッサ行を定義してみます。プリプロ -セッサ行は行頭の # で始まり、行末まで続きます。行末が \ で終っていた場合は、次 -の行まで継続します。それには、継続パターンにマッチする構文アイテムを内包するよ -うに指定します: > - - :syntax region xPreProc start=/^#/ end=/$/ contains=xLineContinue - :syntax match xLineContinue "\\$" contained - -通常は xPreProc は単一行にマッチしますが、内包された xLineContinue によって次 -の行まで継続するようになります。例えば、次のテキストは二行ともマッチします: - - #define SPAM spam spam spam \ ~ - bacon and spam ~ - -これは期待した動作ですね。あるいは、内包されたパターンに "excludenl" を指定す -ることによって、リージョンを単一行に収めることもできます。例えば、xPreProc の -中で、行末に "end" があったときに、それを強調表示したいような場合に使います。 -xPreProc が (xLineContinueのときのように) 次の行に継続しないようにするには、次 -のように "excludenl" を使います: > - - :syntax region xPreProc start=/^#/ end=/$/ - \ contains=xLineContinue,xPreProcEnd - :syntax match xPreProcEnd excludenl /end$/ contained - :syntax match xLineContinue "\\$" contained - -"excludenl" はパターン指定の前に置いてください。"xLineContinue" には -"excludenl" が指定されていないので、最初の例と同様、マッチすることによって -xPreProc リージョンが拡張されます。 - -============================================================================== -*44.8* クラスタ - -構文ファイルを書いてみると、実にたくさんの構文グループを作成するということに気 -付くと思います。必要なら、クラスタと呼ばれるものを定義して複数の構文グループを -ひとまとめにすることができます。 -例えば、for ループ、if 文、while ループ、関数、などを持った言語があります。そ -れぞれは数値や識別子など、同じ構文要素を含むことができます。それを次のように定 -義してみます: > - - :syntax match xFor /^for.*/ contains=xNumber,xIdent - :syntax match xIf /^if.*/ contains=xNumber,xIdent - :syntax match xWhile /^while.*/ contains=xNumber,xIdent - -同じ "contains=" を何度も書かなければなりません。内包されるアイテムを追加する -ときは、その変更を三回繰り返すことになります。クラスタを使って複数の構文グルー -プをひとまとめにすることで、このような指定が簡単になります。 -上の三つのグループが内包している二つのアイテムをクラスタとして定義するには、次 -のコマンドを使います: > - - :syntax cluster xState contains=xNumber,xIdent - -クラスタは他の構文アイテムの中で使われます。使い方は普通の構文アイテムと同じで -す。名前の先頭に @ を付けてください。例の三つの構文アイテムは次のように定義で -きます: > - - :syntax match xFor /^for.*/ contains=@xState - :syntax match xIf /^if.*/ contains=@xState - :syntax match xWhile /^while.*/ contains=@xState - -クラスタに構文グループを追加するには "add" 引数を使います: > - - :syntax cluster xState add=xString - -クラスタから構文グループを取り除くこともできます: > - - :syntax cluster xState remove=xNumber - -============================================================================== -*44.9* 他の構文ファイルをインクルードする - -C++ 言語の構文は C 言語のスーパーセットです。構文ファイルを二つも書くのは避け -たいので、次のコマンドを使って、C++ 構文ファイルの中で C 構文ファイルを読み込 -みます: > - - :runtime! syntax/c.vim - -":runtime!" コマンドは 'runtimepath' の中からすべての "syntax/c.vim" を探しま -す。そして、C ファイルを開いたときと同様に、C++ における C の部分の構文が定義 -されます。c.vim 構文ファイルを入れ替えていたり、拡張ファイルで構文アイテムを追 -加していたりする場合は、それらも読み込まれます。 -C の構文アイテムをロードしたら、C++ 特有の構文アイテムを定義します。例えば、C -にはないキーワードを定義します: > - - :syntax keyword cppStatement new delete this friend using - -コマンドの動作は普通の構文ファイルのときと同じです。 - -次に、Perl 言語を考えてみましょう。Perl スクリプトは二つの異なる部分で構成され -ます。一つは POD 形式のドキュメントセクション、もう一つは Perl で書かれたプロ -グラムです。POD セクションは "=head" で始まり "=cut" で終ります。 -POD 構文の定義を一つのファイルに書き、Perl 構文ファイルの中からそれを使いま -す。":syntax include" コマンドで構文ファイルを読み込むと、その中で定義されてい -る要素がクラスタに格納されます。Perl の場合、次のようなコマンドを使います: > - - :syntax include @Pod <sfile>:p:h/pod.vim - :syntax region perlPOD start=/^=head/ end=/^=cut/ contains=@Pod - -Perl ファイルの中で "=head" が見つかると perlPOD リージョンが開始します。 -perlPOD リージョンは @Pod クラスタを内包しています。リージョンの中では、 -pod.vim 構文ファイルで定義されたトップレベルの構文アイテムがマッチします。 -"=cut" が見つかるとリージョンは終了し、Perl ファイルの構文アイテムに戻ります。 -":syntax include" コマンドで読み込まれたファイル内の ":syntax clear" コマンド -は適切に無視されます。さらに、"contains=ALL" のような引数は同じファイルの構文 -アイテムだけが対象になります。呼び出し元の構文アイテムは対象になりません。 -"<sfile>:p:h/" の部分は、カレントファイル名 (<sfile>) をフルパス (:p) に展開 -し、その head (先端) (:h) を取り出しています。展開結果はファイルのディレクトリ -名になります。つまり、同じディレクトリの pod.vim がインクルードされます。 - -============================================================================== -*44.10* シンクロナイズ (構文解析の同期) - -例えばコンパイラなら話は簡単です。ファイルの先頭から開始して、順番に構文解析し -ていくだけです。しかし Vim では、ユーザーが編集している場所、つまりファイルの -途中から構文解析が開始されます。どのようにして適切な開始位置を決めているので -しょうか。 -秘密は ":syntax sync" コマンドにあります。このコマンドを使って、構文解析の開始 -位置を指定します。例えば、次のコマンドを使うと、C スタイルコメントの開始位置、 -あるいは終了位置が後方検索され、その場所から構文ハイライトが開始されます: > - - :syntax sync ccomment - -引数を指定して動作を調整できます。"minlines" 引数には、後方検索で戻る最小の行 -数を指定します。"maxlines" 引数には、検索される行数の上限を指定します。 -例えば、画面の一番上に表示されている行から、最低でも 10 行前まで調べるようにす -るには、次のようにします: > - - :syntax sync ccomment minlines=10 maxlines=500 - -最小の範囲内で見つからなかった場合は、適切な場所が見つかるまで、さらに戻って調 -べます。ただし、500 行以上は戻りません。 ("maxlines" を大きくすると処理速度が -遅くなります。小さ過ぎるとシンクロナイズに失敗してしまいます。) -シンクロナイズは、スキップ可能な構文アイテムを指定することで、少し高速になりま -す。テキストを実際に表示するときだけ必要な構文アイテムを定義するときに -"display" 引数を指定してください。 -デフォルトでは、検索されたコメントは Comment 構文グループで強調表示されます。 -他の方法で強調表示したい場合は、使用したい構文グループを指定してください: > - - :syntax sync ccomment xAltComment - -プログラミング言語が C スタイルコメントを持っていない場合は、他の方法でシンク -ロナイズします。最も簡単なのは、戻る行数を指定して、その場所から構文解析を試す -方法です。例えば、150 行前に戻って、そこから構文解析を開始するには、次のように -します: > - - :syntax sync minlines=150 - -"minlines" に大きな値を指定すると Vim の動作が遅くなります (特に上方にスクロー -ルする場合など)。 -検索対象になる構文グループを指定することもできます: > - - :syntax sync match {sync-group-name} - \ grouphere {group-name} {pattern} - -{group-name} という構文グループが {pattern} にマッチした場所のすぐ後から開始す -るということを定義します。{sync-group-name} はシンクロナイズ定義の名前です。例 -えば、sh スクリプトでは if 文を "if" で開始し、"fi" で閉じます: - - if [ --f file.txt ] ; then ~ - echo "File exists" ~ - fi ~ - -この構文に対して "grouphere" を定義すると、次のようになります: > - - :syntax sync match shIfSync grouphere shIf "\<if\>" - -"groupthere" 引数を使ってグループの終端を示すパターンを指定します。例えば、 -if/fi グループの終端は次のように定義できます: > - - :syntax sync match shIfSync groupthere NONE "\<fi\>" - -この例では、NONE を指定して、パターンにマッチした場所が特定のリージョンの中で -はないこと、つまりは if ブロックの中ではないことを指定しています。 - -"grouphere" 引数と "groupthere" 引数を指定しないで、マッチやリージョンを定義す -ることもできます。そのようなグループはシンクロナイズのときにスキップされます。 -例えば、次のように定義すると、{} で囲まれた範囲がスキップされます (他のシンク -ロナイズメソッドにマッチする場合でも): > - - :syntax sync match xSpecial /{.*}/ - -シンクロナイズの詳細はリファレンスマニュアルの|:syn-sync|を参照してください。 - -============================================================================== -*44.11* 構文ファイルをインストールする - -新しい構文ファイルを使用する準備ができたら、それを 'runtimepath' の "syntax" -ディレクトリにコピーしてください。Unix なら "~/.vim/syntax" です。 -構文ファイルの名前はファイルタイプ名に ".vim" を付けた名前にします。したがっ -て、x 言語ならファイルのフルパスは次のようになります: - - ~/.vim/syntax/x.vim ~ - -さらに、ファイルタイプが認識されるように設定する必要があります。|43.2| 参照。 - -構文ファイルがうまく動作したら、それを他の Vim ユーザーが利用できるようにして -あげるといいでしょう。まず次のセクションを読んで、構文ファイルが他の環境でも動 -作するようにしてください。そして、Vim のメンテナ <maintainer@vim.org> にメール -を送ってください。ファイルタイプの認識方法の説明もお願いします。よほどのことが -ない限り、Vim のバージョンアップに合わせて取り込まれます。 - - -既存の構文ファイルを拡張する ----------------------------- - -上記は、完全に新しい構文ファイルを作成する場合の説明です。既存の構文ファイルを -使っていて、それに足りない構文アイテムがあるような場合には、それとは別のファイ -ルを使って構文アイテムを追加することができます。ファイルを別にすることで、Vim -をバージョンアップしたときに変更が失われてしまうのを防止します。 -syntax コマンドを自分のファイルに書きます。できる限り既存の構文グループの名前 -を使ってください。例えば、C 構文ファイルに新しい変数タイプを追加するには、次の -ように書きます: > - - :syntax keyword cType off_t uint - -これを、元の構文ファイルと同じ名前で保存します。この場合なら "c.vim" です。そ -のファイルを 'runtimepath' の最後の方にあるディレクトリに置きます。そうするこ -とで、元の構文ファイルよりも後に読み込ませます。Unix なら次の場所に保存します: - - ~/.vim/after/syntax/c.vim ~ - -============================================================================== -*44.12* ポータブルな構文ファイル - -すべての Vim ユーザーが構文ファイルを共有できれば素晴らしいと思いませんか?そ -のためには、構文ファイルはいくつかのガイドラインに従っている必要があります。 - -ファイルの先頭にヘッダを書いてください。構文ファイルの用途、メンテナ、最終更新 -日を書きます。詳細な変更履歴は必要ありません(ほとんどの人はそれを読みません)。 -例: > - - " Vim syntax file - " Language: C - " Maintainer: Bram Moolenaar <Bram@vim.org> - " Last Change: 2001 Jun 18 - " Remark: Included by the C++ syntax. - -他の構文ファイルと同じレイアウトを使ってください。既存の構文ファイルを参考にす -ると時間を節約できます。 - -構文ファイルには分かりやすい名前を付けます。小文字と数字だけを使ってください。 -名前は多くの場所で使うので長くなり過ぎないようにします (構文ファイルの名前 -("name.vim")、'filetype'、b:current_syntax、構文グループの接頭辞 (nameType、 -nameStatement、nameString、etc) などで使います)。 - -最初に "b:current_syntax" をチェックします。これが定義済みなら、他の構文ファイ -ルが 'runtimepath' の前の方でロードされたということです: > - - if exists("b:current_syntax") - finish - endif - -Vim 5.8 との互換性が必要なら次のようにします: > - - if version < 600 - syntax clear - elseif exists("b:current_syntax") - finish - endif - -ファイルの最後で "b:current_syntax" に構文の名前を設定します。ファイルをインク -ルードしている場合、そのファイルの中でも "b:current_syntax" が設定されるので注 -意してください。複数のファイルをインクルードする場合には、"b:current_syntax" -をリセットする必要があるかもしれません。 - -構文ファイルが Vim 5.x でも動作するようにするには、v:version をチェックする必 -要があります。実例は yacc.vim を参照してください。 - -ユーザー設定を変更しないでください。'tabstop' や 'expandtab' などの設定を変更 -してはいけません。そのような設定はファイルタイププラグインの仕事です。 - -マップや短縮入力を定義しないでください。'iskeyword' だけは、キーワードの識別に -どうしても必要なら、設定しても構いません。 - -ユーザーが好みの色を選択できるように、強調表示されるグループの名前に標準とは違 -う名前を付けます。そして、それらを標準の強調グループにリンクします。そうすれば -どのカラースキームでも適切に強調表示できます。標準以外の強調グループを使ってし -まうと、カラースキームによっては正しく強調表示されません。また、ユーザーの環境 -によって背景色が違ったり、色数が 8 色しかない場合もあるので覚えておいてくださ -い。 - -強調グループをリンクするには "hi def link" を使います。そうすることで、ユー -ザーはあなたの構文ファイルがロードされる前の段階で他の強調グループを選択できま -す。例: > - - hi def link nameString String - hi def link nameNumber Number - hi def link nameCommand Statement - ... etc ... - -シンクロナイズで使用しない構文アイテムには "display" 引数を付けてください。上 -方向へのスクロールや CTRL-L の動作が早くなります。 - -============================================================================== - -次章: |usr_45.txt| 言語を選択する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_45.jax b/doc/usr_45.jax deleted file mode 100644 index f9ef325c1..000000000 --- a/doc/usr_45.jax +++ /dev/null @@ -1,413 +0,0 @@ -*usr_45.txt* For Vim バージョン 7.3. Last change: 2008 Nov 15 - - VIM USER MANUAL - by Bram Moolenaar - - 言語を選択する - - -Vim のメッセージは言語を変更できます。本章では、言語を変更する方法を説明しま -す。様々な言語で書かれたファイルを取り扱う方法も説明します。 - -|45.1| メッセージの言語 -|45.2| メニューの言語 -|45.3| 他のエンコーディングを使う -|45.4| 異なるエンコーディングのファイルを編集する -|45.5| 言語のテキストを入力する - -次章: |usr_90.txt| Vim のインストール -前章: |usr_44.txt| 構文ファイルを作成する -目次: |usr_toc.txt| - -============================================================================== -*45.1* メッセージの言語 - -Vim を起動すると、あなたが使っている言語を知るために環境がチェックされます。ほ -とんどの場合、この処理はうまく動作します。そして、メッセージはあなたの言語で表 -示されます (それが利用可能なら)。現在の言語を確認するには、次のコマンドを使い -ます: > - - :language - -"C" と表示された場合は、デフォルト (英語) が使われています。 - - Note: - 異なる言語を扱えるのは、Vim のコンパイル時にその機能が有効にされた場合 - だけです。機能の有無は、":version" コマンドを実行し、"+gettext" と - "+multi_lang" の表示を確認してください。それが表示されてれば問題ありま - せん。"-gettext" か "-multi_lang" と表示された場合は他の Vim を探して - ください。 - -異なる言語でメッセージを表示する方法はいくつかあります。どの方法を使うかはシス -テムによって違います。 -一つ目は、Vim を起動する前に使用したい言語を環境変数に設定する方法です。Unix -の場合の例: > - - env LANG=de_DE.ISO_8859-1 vim - -この方法は、指定した言語がシステムでサポートされている場合のみ使えます。この方 -法の利点は、GUI や何かのライブラリのメッセージも適切な言語で表示されることで -す。欠点は、Vim を起動する前に環境変数を設定しなければならないことです。Vim の -実行中に言語を変更したい場合は、二つ目の方法を使います: > - - :language fr_FR.ISO_8859-1 - -この方法では言語の名前をいくつか試すことになるかもしれません。システムでサポー -トされていない名前を使うとエラーメッセージが表示されます。翻訳されたメッセージ -が利用可能でない場合はエラーメッセージは表示されません。Vim は静かに英語を選択 -します。 -利用可能な言語の一覧を調べるには、その一覧が入っているディレクトリを探してくだ -さい。私のシステムでは "/usr/share/locale" にあります。"/usr/lib/locale" に -入っているシステムもあります。"setlocale" のマニュアルページにディレクトリの場 -所を示すヒントがあるかもしれません。 -言語の名前は正確に入力してください。大文字と小文字の違いは重要です。"-" と "_" -は間違えやすいので注意してください。 - -メッセージ、編集するテキスト、時間の書式など、それぞれに別の言語を設定できま -す。|:language| 参照。 - - -自分でメッセージを翻訳する --------------------------- - -あなたの言語の翻訳メッセージが用意されていない場合、自分で翻訳することもできま -す。それには、Vim のソースコードと GNU gettext パッケージを入手してください。 -ソースを展開すると、src/po/README.txt に説明が入っています。 -翻訳作業はそれほど難しくありません。プログラマでなくても大丈夫です。しかし当然 -ですが、英語と翻訳先の言語を両方知っている必要はあります。 -納得のいく翻訳ができたら、それを他の人にも提供してもらえないでしょうか。 -vim-online (http://vim.sf.net) にアップロードするか、Vim のメンテナ -<maintainer@vim.org> にメールを送ってください。両方でも構いません。 - -============================================================================== -*45.2* メニューの言語 - -デフォルトのメニューは英語です。メニューが翻訳されていれば、あなたの国の言語で -表示することができます。メッセージと同様、環境が設定してあれば、自動的に適切な -言語が選択されます。そのために何かを設定する必要はありません。メニューが翻訳さ -れていれば動作します。 -例えば、ドイツに住んでいてドイツ語を使っているにもかかわらず、"Datei" ではなく -"File" と表示したい場合、次のコマンドでメニューを英語に戻すことができます: > - - :set langmenu=none - -特定の言語を選択することもできます: > - - :set langmenu=nl_NL.ISO_8859-1 - -前述したように、"-" と "_" の違いは重要です。ただし、この場合は大文字と小文字 -の違いは無視されます。 -'langmenu' オプションはメニューがロードされる前に設定する必要があります。メ -ニューが定義された後では、単に 'langmenu' を設定しただけでは何も変更されませ -ん。ですから、'langmenu' は vimrc ファイルの中で設定してください。 -どうしても Vim の実行中にメニューの言語を変更したい場合は、次の手順を実行して -ください: > - - :source $VIMRUNTIME/delmenu.vim - :set langmenu=de_DE.ISO_8859-1 - :source $VIMRUNTIME/menu.vim - -ただし、ユーザーが自分で定義したメニューは失われてしまうので、それらを再定義す -る必要があります。 - - -自分でメニューを翻訳する ------------------------- - -利用可能な翻訳済みメニューは、次のディレクトリにあります: - - $VIMRUNTIME/lang ~ - -ファイルは menu_{language}.vim という名前になっています。使用したい言語がない -場合は自分で翻訳することもできます。最も簡単なのは、既存のファイルをコピーし -て、それを変更する方法です。 -まず、あなたの言語の名前を ":language" コマンドで確認してください。その名前を -使います。ただし、すべてを小文字にします。そして、ファイルを自分のランタイム -ディレクトリにコピーします ('runtimepath' の早めに見つかるように)。例えば、 -Unix なら次のようにします: > - - :!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim - -"$VIMRUNTIME/lang/README.txt" には翻訳のヒントが書かれています。 - -============================================================================== -*45.3* 他のエンコーディングを使う - -ファイルを開くとき、そのファイルはユーザーの言語のエンコーディングで保存されて -いるものと推測されます。多くのヨーロッパ系言語では "latin1" が使われます。その -場合、1 バイトで 1 文字を表すので、合計 256 個の文字を扱えます。アジア系言語の -場合はそれでは足りません。それらの言語はダブルバイトエンコーディングを使って、 -1 万以上の文字を扱います。それでも、複数の言語を混在させるには十分ではありませ -ん。そういうときは Unicode の出番です。Unicode は一般的に使われている言語の文 -字をすべて網羅しています。Unicode は "他のすべてのエンコーディングに取って代わ -るスーパーエンコーディング" なのです。しかしまだ広くは普及していません。 -Vim はこのような三種類のエンコーディングをサポートしています。そして、多少の制 -限はありますが、使用している言語とは違う言語のテキストを扱うことができます。 -とはいえ、自分の言語のテキストだけを扱う場合は、Vim は何も設定しなくても適切に -動作します。以下の説明は、他の言語のテキストを編集したい場合にだけ必要です。 - - Note: - 他のエンコーディングを使うには、Vim のコンパイル時にその機能を有効にし - ておく必要があります。有効かどうかは、":version" コマンドの出力を見て - "+multi_byte" の表示を確認してください。表示されていれば有効です。 - "-multi_byte" と表示されている場合は他の Vim を探してください。 - - -GUI で Unicode を使う ---------------------- - -Unicode には他のエンコーディングと相互に変換しても情報が欠落しないという長所が -あります。Vim の内部で Unicode を使うように設定すれば、あらゆるエンコーディン -グのファイルを編集することができます。 -残念ながら、Unicode をサポートしているシステムはまだ限られています。言語のエン -コーディングが Unicode になっていることはまれです。その場合、Unicode の使用を -宣言し、非 Unicode システムと協調方法を設定する必要があります。 -まずは、(Unicode文字を表示可能な) GUI 版の Vim を設定します。次のようにします: -> - :set encoding=utf-8 - :set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 - -'encoding' オプションに使用したいエンコーディングを設定します。これは、バッ -ファ (編集中のファイル) のテキスト、レジスタ、Vim スクリプトファイル、などに使 -われます。'encoding' は Vim の内部エンコーディングであると言えます。 -この例では、設定しているフォントがシステムに存在することを前提にしています。例 -で使用されているのは X Window System のフォント名です。このフォントは Unicode -をサポートした拡張 xterm で使われるパッケージに入っています。フォントがない場 -合は、次の場所から入手できます: - - http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~ - -MS-Windows では、Unicode 文字を部分的に持っているフォントがいくつかあります。 -"Courier New" フォントを試してみてください。メニューの 編集/フォント設定 を使 -うと、利用可能な一覧からフォントを選択できます。使用できるのは等幅フォントのみ -です。例: > - - :set guifont=courier_new:h12 - -これがうまくいかない場合は、フォントパックを入手してください。Microsoft が場所 -を変更していなければ、次の場所にあります: - - http://www.microsoft.com/typography/fonts/default.aspx ~ - -さて、内部エンコーディングを Unicode にして、Unicode フォントでテキスト表示す -るように設定できました。しかし、入力される文字はまだ元の言語のエンコーディング -のままです。入力を Unicode に変換する必要があります。'termencoding' オプション -に入力のエンコーディングを設定します。次のように設定します: > - - :let &termencoding = &encoding - :set encoding=utf-8 - -'encoding' に utf-8 を設定する前に、元の値を 'termencoding' に代入しています。 -この設定が動作するかどうか、実際にあなたの環境で試してください。特に、アジア系 -言語の入力メソッドを使って Unicode のテキストを編集したい場合は、正しく動作す -る必要があります。 - - -Unicode 端末で Unicode を使う ------------------------------ - -Unicode をサポートしている端末がいくつかあります。XFree86 に付属の標準 xterm -もその一つです。ここではそれを使って説明します。 -まず何よりも、xterm が Unicode サポート付きでコンパイルされている必要がありま -す。|UTF8-xterm| を参照し、その確認方法と、必要ならコンパイル方法も確認してく -ださい。 -xterm に "-u8" 引数を付けて起動します。フォントを指定する必要もあるかもしれま -せん。例: > - - xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 - -この端末の中で Vim を実行します。前述したように 'encoding' を "utf-8" に設定し -てください。設定は以上です。 - - -普通の端末で Unicode を使う ---------------------------- - -Unicode をサポートしていない端末で Unicode ファイルを取り扱うことができます。 -ただし、端末でサポートされていない文字は表示されません。テキストのレイアウトは -失われません: > - - :let &termencoding = &encoding - :set encoding=utf-8 - -これは GUI での設定と同じです。しかし作用は違います。Vim はテキストを表示する -ときに、端末に文字を送る前に、それを変換します。それによって、端末の文字化けを -防ぐことができます。 -これには、'termencoding' と 'encoding' の間での変換が可能である必要がありま -す。latin1 から Unicode への変換は Vim の内部で行われるので常に機能します。他 -の変換には |+iconv| 機能が必要です。 -実際に Unicode のテキストを編集してみてください。端末に表示できない文字は、ク -エスチョンマーク (あるいはアンダースコアや他の文字) として表示されます。クエス -チョンマークの上にカーソルを動かして次のコマンドを実行してください: > - - ga - -文字コード情報が表示されます。そこに実際に格納されている文字を知るヒントになり -ます。文字コードを Unicode の表から調べることもできます。時間さえあれば、実際 -にこの方法でファイルを見ることも可能です。 - - Note: - 'encoding' は Vim 内部のすべてのテキストで使われるので、設定を変更する - と 非ASCII のテキストは不正になってしまいます。レジスタの中身や - 'viminfo' ファイル (例えば記録された検索パターン) などで確認できます。 - 'encoding' は vimrc ファイルの中で設定し、それ以外では変更しないことが - 推奨されています。 - -============================================================================== -*45.4* 異なるエンコーディングのファイルを編集する - -Unicode を使うように設定された Vim で 16-bit Unicode のファイルを開く場合、実 -際には Vim の内部では utf-8 が使われているので、エンコーディングの変換が必要に -なります。文字セット (Unicode) とエンコーディング (utf-8 or 16-bit) は別ものな -のです。 -ファイルを開くとき、Vim はファイルのエンコーディングを判別しようとします。それ -には 'fileencodings' オプションが使われます。Unicode を使っているときは、その -初期設定は "ucs-bom,utf-8,latin1" です。この設定を使ってファイルのエンコーディ -ングがチェックされます: - - ucs-bom ファイルの先頭がバイトオーダーマーク (BOM) で開始する - 場合。Unicode の 16-bit、32-bit、utf-8 エンコーディン - グを判別できます。 - utf-8 utf-8 Unicode。utf-8 として不正なバイトがあった場合は - 拒否されます。 - latin1 古き良き 8-bit エンコーディング。常に有効です。 - -16-bit Unicode ファイルを開いたとき、BOM が付いていたなら、エンコーディングが -判別され、ファイルは utf-8 に変換されながら読み込まれます。'fileencoding' (末 -尾に s なし) には判別されたエンコーディングが設定されます。この場合は -"utf-16le" になります。"utf-16le" はリトルエンディアンの 16-bit Unicode を意味 -します。これは MS-Windows での一般的な形式です (例えばレジストリファイルな -ど)。 -ファイルを保存するとき、'fileencoding' と 'encoding' が比較され、それが違って -いた場合は、テキストが変換されます。 -'fileencoding' の値が空の場合は変換は実行されません。つまり、テキストは -'encoding' でエンコードするものと判断されます。 - -'fileencodings' の初期設定が良くない場合は、チェックさせたいエンコーディングを -自分で設定してください。設定の最初から順番に変換が試行されます。"latin1" を先 -頭に置くとうまく動作しません。それは "latin1" の変換が失敗することがないからで -す。例えば次の設定では、BOM がなく、utf-8 でもない場合に、Shift_JIS が使われま -す: > - - :set fileencodings=ucs-bom,utf-8,sjis - -エンコーディングの名前は |encoding-values| を参照してください。それ以外の名前 -も使えます。使用できる名前は変換ライブラリに依存します。 - - -エンコーディングを強制する --------------------------- - -自動判別が機能しない場合は、エンコーディングを指定する必要があります。例: > - - :edit ++enc=koi8-r russian.txt - -"++enc" を使ってファイルのエンコーディングを指定します。ファイルは指定されたエ -ンコーディング (例ではロシア語) から 'encoding' に変換されます。'fileencoding' -は指定されたエンコーディングに設定されるので、保存するときには逆の変換が実行さ -れます。 -ファイルを保存するときにも同じ引数が使えます。すなわち Vim をコード変換ツール -として使うこともできます。例: > - - :write ++enc=utf-8 russian.txt -< - Note: - 変換によって一部の文字が失われることがあります。任意のエンコーディング - から Unicode に変換し、それを元に戻す場合は、不正な文字が入っていない - 限り、そのような問題はほとんどありません。多言語で書かれたファイルを - Unicode から他のエンコーディングに変換すると、情報が失われます。 - -============================================================================== -*45.5* 言語のテキストを入力する - -コンピューターのキーボードには 100 個ほどのキーしかありません。しかし、数千の -文字を持つ言語があり、Unicode には 1 万以上の文字があります。どのようにしてそ -れらの文字を入力するのでしょうか? -それほど多くの文字を必要としない場合は二重字 (Digraph) が使えます。二重字につ -いては |24.9| で説明しました。 -キーボードのキー数よりはるかに多い文字を扱う場合はインプットメソッド (Input -Method, IM) を使います。インプットメソッドを使うには、目的の文字を入力するため -のキー操作を学ぶ必要があります。あなたがインプットメソッドを必要とするなら、そ -れはおそらくは最初からシステムに用意されています。Vim でも他のプログラムと同様 -にインプットメソッドを使うことができます。詳細は、X Window system なら -|mbyte-XIM| を、MS-Windows なら |mbyte-IME| を参照してください。 - - -キーマップ ----------- - -いくつかの言語は latin とは文字セットが異なるだけで、文字の数は同じような場合 -があります。その場合はキーを文字にマップすることができます。それにはキーマップ -を使います。 -例えば、ヘブライ語を使いたい場合は、次のようにしてキーマップをロードします: > - - :set keymap=hebrew - -キーマップファイルが検索されます。これは 'encoding' の設定に依存します。ファイ -ルが見つからなかった場合はエラーメッセージが表示されます。 - -さて、インサートモードでヘブライ語を入力できるようになりました。ただし、ノーマ -ルモードのときや、":" コマンドを入力するときは、自動的に英語に切り替わります。 -次のコマンドでヘブライ語と英語を切り替えることができます: > - - CTRL-^ - -これはインサートモードとコマンドラインモードでのみ機能します。ノーマルモードで -はまったく別の機能です (オルタネートファイルにジャンプ)。 -キーマップの使用状態はモードメッセージに表示されます ('showmode'が設定されてい -るなら)。GUI ではカーソルの色が変わります。 -キーマップの使用状態は 'iminsert' と 'imsearch' を設定することでも変更できま -す。 - -次のコマンドでマップの一覧を表示できます: > - - :lmap - -利用可能なキーマップファイルの一覧は、GUI ならメニューの 編集/キーマップ で確 -認できます。あるいは次のコマンドで一覧を表示できます: > - - :echo globpath(&rtp, "keymap/*.vim") - - -自分でキーマップを作成する --------------------------- - -自分でキーマップファイルを作成することができます。作成はそれほど難しくありませ -ん。目的の言語に近い既存のキーマップファイルを土台にしてください。そのファイル -を自分の "keymap" ディレクトリにコピーします。例えば、Unix なら"~/.vim/keymap" -などを使います。 -キーマップファイルの名前は次のような形式にします: - - keymap/{name}.vim ~ -もしくは - keymap/{name}_{encoding}.vim ~ - -{name} はキーマップの名前です。分かりやすい名前を付けます。既存のキーマップと -は違う名前にしてください (既存のキーマップファイルを置き換えるとき以外は)。 -{name} にはアンダースコアを含めることはできません。アンダースコアに続けてエン -コーディングを指定することができます。例: - - keymap/hebrew.vim ~ - keymap/hebrew_utf-8.vim ~ - -ファイルの内容については実物を見れば分かると思います。Vim に付属のキーマップを -見てください。詳細は |mbyte-keymap| を参照。 - - -最後の手段 ----------- - -すべての方法がダメだったとしても、CTRL-V を使えばあらゆる文字を入力できます: - - エンコード 入力方法 入力できる範囲 ~ - 8-bit CTRL-V 123 10進数の 0-255 - 8-bit CTRL-V x a1 16進数の 00-ff - 16-bit CTRL-V u 013b 16進数の 0000-ffff - 31-bit CTRL-V U 001303a4 16進数の 00000000-7fffffff - -入力するときはスペースは不要です。詳細は |i_CTRL-V_digit| を参照。 - -============================================================================== - -次章: |usr_90.txt| Vim のインストール - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_90.jax b/doc/usr_90.jax deleted file mode 100644 index addb930c8..000000000 --- a/doc/usr_90.jax +++ /dev/null @@ -1,497 +0,0 @@ -*usr_90.txt* For Vim バージョン 7.3. Last change: 2008 Sep 10 - - VIM USER MANUAL - by Bram Moolenaar - - Vim のインストール - - *install* -Vim を使うにはまずインストールする必要があります。システムにも依りますが、とて -も簡単な作業です。本章では、若干のヒントと、新しいバージョンへのアップグレード -手順を説明します。 - -|90.1| Unix -|90.2| MS-Windows -|90.3| アップグレード -|90.4| よくある問題 -|90.5| アンインストール - -前章: |usr_45.txt| 言語を選択する -目次: |usr_toc.txt| - -============================================================================== -*90.1* Unix - -最初に、Vim をシステム全体で使うのか、自分一人で使うのかを決めてください。イン -ストール方法はほぼ同じですが、インストールするディレクトリが異なります。 -システムにインストールするときは、ベースディレクトリとして大抵は "/usr/local" -が使われます。ただし、これはシステムによって異なります。インストールされている -他のパッケージを参考にするなどして調べてください。 -自分一人で使う場合は、例えばホームディレクトリをベースディレクトリにします。 -ファイルはその下の "bin" や "shared/vim" などに置かれます。 - - -パッケージからインストール --------------------------- - -Unix システムごとにコンパイル済みバイナリが用意されています。次のページにパッ -ケージへのリンクが一覧されています: - - http://www.vim.org/binaries.html ~ - -バイナリのメンテナンスはボランティアベースなので、古いままになっていることが -多々あります。自分でソースからコンパイルする方が無難です。自分でコンパイルする -ことによって組み込む機能をコントロールできるようにもなります。それが必要な場合 -はどのみちコンパイルが必要です。 - -Linux を使っている場合、"vi" はおそらく最小構成の Vim です。それには例えば構文 -強調表示などの機能はありません。そのディストリビューションから別の Vim パッ -ケージが配布されていないか、あるいは Web サイトで公開されていないか調べてみて -ください。 - - -ソースからインストール ----------------------- - -Vim をコンパイルしてインストールするには、次のものが必要です: - - - C コンパイラ (GCCが望ましい) - - GZIP プログラム (www.gnu.org から入手可能) - - Vim のソースとランタイムのアーカイブ - -Vim のアーカイブを入手するには、次のファイルを見てダウンロード速度が最も早いで -あろう近くのミラーを探してください: - - ftp://ftp.vim.org/pub/vim/MIRRORS ~ - -Vim のホームサイト ftp.vim.org で十分な速度が出るならそれでも構いません。 -"unix" ディレクトリにファイルが入っています。バージョン番号はファイル名に埋め -込まれています。特に事情がなければ最新のバージョンをダウンロードしてください。 -ファイルの入手方法は二通りあります。すべてのファイルが含まれた一つの大きなアー -カイブをダウンロードするか、フロッピーサイズの四つの小さなアーカイブをダウン -ロードします。例えば、バージョン 6.1 の大きなアーカイブは次の名前です: - - vim-6.1.tar.bz2 ~ - -このアーカイブの展開には "bzip2" が必要です。それがない場合は四つの小さなファ -イルをダウンロードしてください。それらは gzip で展開できます。Vim 6.1 なら次の -ような名前になっています: - - vim-6.1-src1.tar.gz ~ - vim-6.1-src2.tar.gz ~ - vim-6.1-rt1.tar.gz ~ - vim-6.1-rt2.tar.gz ~ - - -コンパイル ----------- - -まず作業用のディレクトリを作成します。例: > - - mkdir ~/vim - cd ~/vim - -この場所でアーカイブを展開します。大きなアーカイブを使う場合は、次のようにしま -す: > - - bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf - - -"path" の部分は適当に変更してください。 > - - gzip -d path/vim-6.1-src1.tar.gz | tar xf - - gzip -d path/vim-6.1-src2.tar.gz | tar xf - - gzip -d path/vim-6.1-rt1.tar.gz | tar xf - - gzip -d path/vim-6.1-rt2.tar.gz | tar xf - - -欲しいのがデフォルトの機能だけで、環境が適切に設定されているのであれば、次のコ -マンドを実行するだけでコンパイルできます: > - - cd vim61/src - make - -make プログラムによって configure とコンパイルが実行されます。設定を変更してコ -ンパイルする方法については後で説明します。 -コンパイル中にエラーが発生した場合は、エラーメッセージをよく見てください。何が -悪かったのかを知るヒントが出ているはずです。可能ならそれを修正してください。も -しかしたら何かの機能を無効にする必要があるかもしれません。Makefile を見て自分 -のシステム特有のヒントがないか確認してください。 - - -テスト ------- - -コンパイルが正しくできたかどうか確認します: > - - make test - -Vim が期待した動作をするかどうかをテストスクリプトを使って検査します。Vim が何 -度も実行され、様々なテキストやメッセージが表示されます。最後に次のように表示さ -れたら検査は合格です: - - test results: ~ - ALL DONE ~ - -テストが失敗すると "TEST FAILURE" と表示されます。失敗メッセージが一つか二つ表 -示された場合は、Vim はとりあえず動作していますが完全ではありません。エラーメッ -セージがたくさん表示されたり、テストが最後まで完了しなかった場合は、何か問題が -あります。自分で解決するか、誰かに聞いてください。メーリングリストの過去ログ -(|maillist-archive|) に答えがあるかもしれません。どうしても解決できない場合は -Vim のメーリングリスト (|maillist|) で質問してみてください。 - - -インストール *install-home* ------------- - -ホームディレクトリにインストールする場合は、Makefile を開いて次の行を探してく -ださい: - - #prefix = $(HOME) ~ - -行頭の # を削除します。 -システムにインストールする場合は、適切なディレクトリが自動的に選択されます。自 -分でディレクトリを指定する方法は後述します。以下の作業は root で実行する必要が -あります。 - -次のコマンドで Vim をインストールします: > - - make install - -必要なファイルが適切な場所にコピーされます。Vim を起動してみて正しくインストー -ルできたかどうかを確認してください。二つの簡単なテストで、Vim がランタイムファ -イルを検出できているかどうかを確認します: > - - :help - :syntax enable - -うまく動作しない場合は、次のコマンドで、Vim がどこからランタイムファイルを探し -ているのか確認してください: > - - :echo $VIMRUNTIME - -また、Vim の起動時に "-V" 引数を付けることで、起動中に起きていることを見ること -ができます: > - - vim -V - -ユーザーマニュアルは Vim が適切に動作することを前提に書かれています。Vim のイ -ンストールが終ったら、|not-compatible| の説明に従って、Vim を適切に設定してく -ださい。 - - -機能を選択する --------------- - -機能を選択する方法はいろいろあります。最も簡単なのは Makefile を編集する方法で -す。Makefile には多くの説明やサンプルが書かれています。大抵は行をコメントアウ -トすることで機能を有効/無効にできます。 -make とは別に "configure" を実行する方法もあります。オプションを個別に設定する -ことができます。ただし、オプションを正しく理解して、正確に指定する必要がありま -す。 -よく使われる引数を次に示します。これらは Makefile からでも有効にできます。 - - --prefix={directory} Vim をインストールするトップディレクトリ - --with-features=tiny 多くの機能を無効にしてコンパイル - --with-features=small 一部の機能を無効にしてコンパイル - --with-features=big 多くの機能を有効にしてコンパイル - --with-features=huge ほとんどの機能を有効にしてコンパイル - いつどの機能が有効になるのかは |+feature-list| - を参照してください。 - - --enable-perlinterp Perl インターフェースを有効にする。同様に、 - ruby、python、tclなどもあります。 - - --disable-gui GUI インターフェースをコンパイルしない。 - --without-x X-windows の機能をコンパイルしない。 - これら二つが指定された場合、Vim は X サーバー - に接続しません。起動が早くなります。 - -オプションの一覧を見るには次のようにします: > - - ./configure --help - -各機能の簡単な説明と、より詳しい情報へのリンクは |feature-list| にあります。 -冒険野郎な人は "feature.h" を開いてみてください。自分でソースコードを改造する -こともできますよ! - -============================================================================== -*90.2* MS-Windows - -Vim を Microsoft Windows にインストールする方法は二つあります。複数のアーカイ -ブを展開するか、インストーラー形式の大きなアーカイブを使います。最近のコン -ピュータを使っているほとんどのユーザーはインストーラーを使います。複数のアーカ -イブを展開する方法には次のものが必要です: - - - Vim のバイナリが入ったアーカイブ - - Vim のランタイムアーカイブ - - zip ファイルを展開できるプログラム - -Vim のアーカイブを入手するには、次のファイルを見てダウンロード速度が最も早いで -あろう近くのミラーを探してください: - - ftp://ftp.vim.org/pub/vim/MIRRORS ~ - -Vim のホームサイト ftp.vim.org で十分な速度が出るならそれでも構いません。"pc" -ディレクトリにファイルが入っています。バージョン番号はファイル名に埋め込まれて -います。特に事情がなければ最新のバージョンをダウンロードしてください。ここでは -"61" (バージョン6.1) を使って説明します。 - - gvim61.exe インストーラー - -必要なのはこのファイルだけです。ファイルを実行し、表示される指示に従ってくださ -い。 - -アーカイブを自分で展開する方法の場合、使用するアーカイブを選択する必要がありま -す。次のものがあります: - - gvim61.zip 普通の MS-Windows GUI バージョン。 - gvim61ole.zip OLE サポート付きの MS-Windows GUI バージョン。 - メモリを食いますが、他の OLE アプリケーション - との通信をサポートしています。 - vim61w32.zip 32 ビット MS-Windows コンソールバージョン。 - Win NT/2000/XP コンソール用。Win 95/98 では適 - 切に動作しません。 - vim61d32.zip 32 ビット MS-DOS バージョン。 - Win 95/98 コンソール用。 - vim61d16.zip 16 ビット MS-DOS バージョン。 - 古いシステム用。ロングファイルネームはサポート - されてません。 - -必要なのはどれか一つだけです。GUI バージョンとコンソールバージョンを両方インス -トールすることもできます。いずれの場合でも、さらにランタイムファイルのアーカイ -ブをダウンロードする必要があります。 - - vim61rt.zip ランタイムファイルのアーカイブ - -zip 展開プログラムを使ってファイルを展開してください。例えば、"unzip" プログラ -ムを使う場合は次のようにします: > - - cd c:\ - unzip path\gvim61.zip - unzip path\vim61rt.zip - -この例では "c:\vim\vim61" にファイルが展開されます。既にどこかに vim という -ディレクトリがある場合は、その親ディレクトリで実行してください。 -"vim\vim61" に移動して、install プログラムを実行します: > - - install - -メッセージをよく読んでオプションを選択してください。最後に "do it" を選択する -と、それまでの選択に従ってインストールが実行されます。 -インストールプログラムはランタイムファイルを移動しません。それらは展開した場所 -にあるままです。 - -提供されているバイナリに、必要な機能が不足している場合は、自分で Vim をコンパ -イルしてみてください。ソースのアーカイブはバイナリと同じ場所にあります。対応す -る Makefile が用意されているコンパイラも必要です。Microsoft Visual C は使えま -すが高価です。Borland のコマンドラインコンパイラ 5.5 は無料で使えます。MingW -と Cygwin のコンパイラも無料です。詳しくは "src/INSTALLpc.txt"を見てください。 - -============================================================================== -*90.3* アップグレード - -既に Vim がインストールされているところに新たに Vim をインストールする方法を説 -明します。 - - -UNIX ------ - -"make install" を実行すると、ランタイムファイルはバージョンごとのディレクトリ -にコピーされます。つまり以前のバージョンは上書きされません。複数のバージョンを -同時に使うことができます。 -古いバージョンの "vim" 実行ファイルは上書きされます。古い実行ファイルが必要な -い場合は単に "make install" を実行してください。ランタイムファイルは手動で削除 -します。古いバージョンのランタイムディレクトリを削除するだけです。例: > - - rm -rf /usr/local/share/vim/vim58 - -普通はこのディレクトリ以下のファイルが変更されることはありません。しかし、例え -ば "filetype.vim" などを変更した場合は、削除する前にその変更を新バージョンの方 -にマージしてください。 - -新しいバージョンに切り替える前に試用期間を設けたい場合は、新しいバージョンを違 -う名前でインストールしてください。configure に引数を設定する必要があります。 -例: > - - ./configure --with-vim-name=vim6 - -"make install" を実行する前に "make -n install" を実行し、大事なファイルが上書 -きされないか確認してください。 -評価の結果、新しいバージョンに切り替えると決めたら、実行ファイルの名前を変更し -ます。例: > - - mv /usr/local/bin/vim6 /usr/local/bin/vim - - -MS-WINDOWS ----------- - -アップグレードは新しいバージョンをインストールするのとほぼ同じです。古いバー -ジョンと同じ場所にファイルを展開してください。新しいディレクトリ (例えば -"vim61") が作成され、その下に新しいバージョンがコピーされます。ランタイムファ -イル、vimrc、viminfo などはそのまま残ります。 -古いものをそのままにして新しいバージョンを実行したい場合は、多少の手作業が必要 -です。install プログラムを実行すると、古いバージョンのためのファイルがいくつか -上書きされてしまいます。新しいバイナリをフルパス指定で実行してください。正しい -バージョンのランタイムファイルが自動的に検出されます。ただし、$VIMRUNTIME 変数 -が定義されている場合はうまく機能しません。 -アップグレードが満足のいくものであったなら、旧バージョンのファイルを削除してく -ださい。|90.5| 参照。 - -============================================================================== -*90.4* よくある問題 - -Vim のインストール時に起こる問題と、その解決方法を説明します。インストールに関 -する質問にも答えます。 - - -Q: 私には root 権限がありません。Vim をインストールできますか? (Unix) - -次のような引数を付けて configure を実行してください。この例では $HOME/vim に -Vim がインストールされます: > - - ./configure --prefix=$HOME - -自分のディレクトリに Vim がコピーされます。エディタを実行するには $HOME/bin に -パスを通す必要があります。|install-home| も参照。 - - -Q: 私の画面では表示される色が正しくありません (Unix) - -端末の設定を確認してください。シェルの上で次のコマンドを使います: > - - echo $TERM - -表示された端末タイプが正しくない場合はそれを修正します。詳しくは |06.2| を参照 -してください。あるいは、gvim と呼ばれる GUI 版の Vim を使ってください。GUI な -ら端末を正しく設定する必要はありません。 - - -Q: Backspace キーと Delete キーが正しく動いていないようです - -キーが押されたときに送信されるコードが Backspace <BS> と Delete <Del> について -はとてもあいまいです。まず、$TERM の設定を確認してください。それが問題なけれ -ば、次の設定を試してください: > - - :set t_kb=^V<BS> - :set t_kD=^V<Del> - -一行目の ^V<BS> は CTRL-V を押してから Backspace キーを押します。二行目の -^V<Del> は CTRL-V を押してから Delete キーを押します。この二行を vimrc ファイ -ルに書いておくこともできます (|05.1|参照)。ただし、この方法は端末を変更すると -機能しなくなります。これ以外の解決方法は |:fixdel| を参照してください。 - - -Q: 私は RedHat Linux を使っています。システム付属の Vim は使えますか? - -RedHat にはデフォルトで最小構成の Vim がインストールされます。 -"Vim-enhanced-version.rpm" のような名前の RPM パッケージを探して、それをインス -トールしてください。 - - -Q: テキストを色付きで表示するには? プラグインを動かすには? - -サンプルの vimrc スクリプトを使ってください。説明は |not-compatible| にありま -す。 - -構文強調表示については第 6 章を参照してください: |usr_06.txt|。 - - -Q: 便利な vimrc ファイルの例はありますか? - -Web サイト (www.vim.org) に良い例がいくつかあります。 - - -Q: 便利な Vim プラグインはどこにありますか? - -Vim-online サイト (http://vim.sf.net) を参照してください。多くのユーザーが便利 -な Vim スクリプトやプラグインをアップロードしています。 - - -Q: 便利な Tips はどこにありますか? - -Vim-online サイト (http://vim.sf.net) を参照してください。Vim のユーザーから寄 -せられたヒントが集められています。メーリングリスト (|maillist-archive|) を検索 -するのもいいでしょう。 - -============================================================================== -*90.5* アンインストール - -Vim をアンインストールする機会はあまりないと思いますが、その方法を説明します。 - - -UNIX ------ - -Vim をパッケージからインストールした場合は、パッケージマネージャを確認し、パッ -ケージの除去方法を調べてください。 -ソースからインストールした場合は、次のコマンドでアンインストールできます: > - - make uninstall - -元のファイルを削除してしまった場合や、誰かが作ったアーカイブからインストールし -た場合は、この方法は使えません。手作業でファイルを削除してください。例えば -"/usr/local" にインストールした場合は以下のファイルを root 権限で削除します: > - - rm -rf /usr/local/share/vim/vim61 - rm /usr/local/bin/eview - rm /usr/local/bin/evim - rm /usr/local/bin/ex - rm /usr/local/bin/gview - rm /usr/local/bin/gvim - rm /usr/local/bin/gvim - rm /usr/local/bin/gvimdiff - rm /usr/local/bin/rgview - rm /usr/local/bin/rgvim - rm /usr/local/bin/rview - rm /usr/local/bin/rvim - rm /usr/local/bin/rvim - rm /usr/local/bin/view - rm /usr/local/bin/vim - rm /usr/local/bin/vimdiff - rm /usr/local/bin/vimtutor - rm /usr/local/bin/xxd - rm /usr/local/man/man1/eview.1 - rm /usr/local/man/man1/evim.1 - rm /usr/local/man/man1/ex.1 - rm /usr/local/man/man1/gview.1 - rm /usr/local/man/man1/gvim.1 - rm /usr/local/man/man1/gvimdiff.1 - rm /usr/local/man/man1/rgview.1 - rm /usr/local/man/man1/rgvim.1 - rm /usr/local/man/man1/rview.1 - rm /usr/local/man/man1/rvim.1 - rm /usr/local/man/man1/view.1 - rm /usr/local/man/man1/vim.1 - rm /usr/local/man/man1/vimdiff.1 - rm /usr/local/man/man1/vimtutor.1 - rm /usr/local/man/man1/xxd.1 - - -MS-WINDOWS ----------- - -インストーラーを使ってインストールした場合は、Vim の実行ファイルと同じディレク -トリ (例: "c:\vim\vim61") にある "uninstall-gui" プログラムを実行してくださ -い。スタートメニューに登録した場合は、そこから起動しても構いません。それによっ -て、ほとんどのファイルと、メニューと、デスクトップのショートカットが削除されま -す。いくつかのファイルは削除されずに残るかもしれませんが、それらを削除するには -Windows の再起動が必要です。 -"vim" ディレクトリをまるごと削除するという方法もあります。あなたが作成した -vimrc ファイルやランタイムファイルがそこに保存されている場合は慎重に実行してく -ださい。 - -zip アーカイブからインストールした場合は、"uninstal" プログラムを使ってくださ -い (Note:末尾の l 注意)。"install" プログラムと同じディレクトリにあります (例: -"c:\vim\vim61")。コントロールパネルの「アプリケーションの追加と削除」からも削 -除できます。 -ただし、これはレジストリの登録を削除するだけです。ファイルの削除は自分でやる必 -要があります。単に "vim\vim61" をまるごと削除します。そこにあなたが変更を加え -たファイルは保存されていないと思いますが、念のため確認してください。 -"vim" ディレクトリにあなたが作成した vimrc ファイルやランタイムファイルが入っ -ているなら、それらは残しておいた方がいいかもしれません。 - -============================================================================== - -目次: |usr_toc.txt| - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/usr_toc.jax b/doc/usr_toc.jax deleted file mode 100644 index e239b561f..000000000 --- a/doc/usr_toc.jax +++ /dev/null @@ -1,355 +0,0 @@ -*usr_toc.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - 目次 *user-manual* - -============================================================================== -大見出し一覧 ~ - -初級編 ~ -|usr_01.txt| マニュアルについて -|usr_02.txt| 初めての Vim -|usr_03.txt| カーソルの移動 -|usr_04.txt| 簡単な編集 -|usr_05.txt| 設定の変更 -|usr_06.txt| 構文強調表示 -|usr_07.txt| 複数のファイルを開く -|usr_08.txt| ウィンドウの分割 -|usr_09.txt| GUI を使う -|usr_10.txt| 大規模な編集 -|usr_11.txt| クラッシュからの復帰 -|usr_12.txt| 便利な小技 - -上級編 ~ -|usr_20.txt| コマンドラインを素早く入力する -|usr_21.txt| 中断と再開 -|usr_22.txt| ファイルを探す -|usr_23.txt| 特殊なファイルを編集する -|usr_24.txt| 素早く入力する -|usr_25.txt| テキストの整形 -|usr_26.txt| 繰り返し -|usr_27.txt| 検索コマンドと正規表現 -|usr_28.txt| 折り畳み -|usr_29.txt| プログラムの中を移動する -|usr_30.txt| プログラムの編集 -|usr_31.txt| GUI を活用する -|usr_32.txt| undo ツリー - -カスタマイズ ~ -|usr_40.txt| 新しいコマンドを作る -|usr_41.txt| Vim スクリプト書法 -|usr_42.txt| 新しいメニューを追加する -|usr_43.txt| ファイルタイプを使う -|usr_44.txt| 構文ファイルを作成する -|usr_45.txt| 言語を選択する - -インストール ~ -|usr_90.txt| Vimのインストール - - -リファレンスマニュアル -|reference_toc| 全コマンドの詳細情報 - -シングルファイルで印刷に適した HTML 形式と PDF 形式のユーザーマニュアルが用意 -されています: - http://vimdoc.sf.net - -============================================================================== -初級編 ~ - -最初から順番に読んで基本的なコマンドを学びましょう。 - -|usr_01.txt| マニュアルについて - |01.1| 二つのマニュアル - |01.2| Vim の準備 - |01.3| チュートリアル - |01.4| 著作権 (copyright) - -|usr_02.txt| 初めての Vim - |02.1| Vim の起動方法 - |02.2| 文字の挿入 - |02.3| カーソル移動 - |02.4| 文字の削除 - |02.5| undo (取り消し) と redo (やり直し) - |02.6| 他の編集コマンド - |02.7| Vim の終了 - |02.8| ヘルプの引き方 - -|usr_03.txt| カーソルの移動 - |03.1| 単語ごとの移動 - |03.2| 行頭、行末への移動 - |03.3| 文字への移動 - |03.4| カッコの対応 - |03.5| 特定の行への移動 - |03.6| 現在の場所を表示 - |03.7| スクロール - |03.8| 簡単な検索 - |03.9| 簡単なパターン検索 - |03.10| マークの使用 - -|usr_04.txt| 簡単な編集 - |04.1| オペレータとモーション - |04.2| テキストの変更 - |04.3| 変更の繰り返し - |04.4| ビジュアルモード - |04.5| テキストの移動 - |04.6| テキストのコピー - |04.7| クリップボード - |04.8| テキストオブジェクト - |04.9| 置換モード - |04.10| 終わりに - -|usr_05.txt| 設定の変更 - |05.1| vimrc ファイル - |05.2| 見本 vimrc ファイルの解説 - |05.3| 簡単なマップ - |05.4| プラグインの追加 - |05.5| ヘルプファイルの追加 - |05.6| オプションウィンドウ - |05.7| よく使うオプション - -|usr_06.txt| 構文強調表示 - |06.1| 構文強調表示を有効にする - |06.2| 色がつかない?変な色になる? - |06.3| 色を変える - |06.4| カラーを使う?使わない? - |06.5| カラー印刷 - |06.6| 詳しい情報 - -|usr_07.txt| 複数のファイルを開く - |07.1| 他のファイルを開く - |07.2| ファイルのリスト - |07.3| 他のファイルにジャンプする - |07.4| バックアップファイル - |07.5| 他のファイルにテキストをコピーする - |07.6| 読み込み専用モード - |07.7| ファイル名の変更 - -|usr_08.txt| ウィンドウの分割 - |08.1| ウィンドウの分割 - |08.2| ウィンドウを分割してファイルを開く - |08.3| ウィンドウのサイズ - |08.4| 縦分割 - |08.5| ウィンドウの移動 - |08.6| 全ウィンドウに対するコマンド - |08.7| vimdiff で差分を表示する - |08.8| その他 - |08.9| タブページ - -|usr_09.txt| GUIを使う - |09.1| GUI の部品 - |09.2| マウスを使う - |09.3| クリップボード - |09.4| セレクトモード - -|usr_10.txt| 大規模な編集 - |10.1| 操作の記録と再実行 - |10.2| 置換 - |10.3| コマンドの範囲指定 - |10.4| global コマンド - |10.5| 矩形選択 - |10.6| ファイルの一部の保存と読み込み - |10.7| テキストの整形 - |10.8| 大文字/小文字の変換 - |10.9| 外部プログラムを使う - -|usr_11.txt| クラッシュからの復帰 - |11.1| リカバリの基本 - |11.2| スワップファイルはどこにある? - |11.3| クラッシュした? - |11.4| さらなる情報 - -|usr_12.txt| 便利な小技 - |12.1| 単語を置換する - |12.2| "Last, First" を "First Last" に変更する - |12.3| リストをソートする - |12.4| 行を逆順に並べ替える - |12.5| 単語を数える - |12.6| マニュアルを引く - |12.7| 空白を取り除く - |12.8| 単語が使われている場所を検索する - -============================================================================== -上級編 ~ - -これらの項目は好きな順番で読んでも構いません。 - -|usr_20.txt| コマンドラインを素早く入力する - |20.1| コマンドライン編集 - |20.2| コマンドライン短縮入力 - |20.3| コマンドライン補完 - |20.4| コマンドライン履歴 - |20.5| コマンドラインウィンドウ - -|usr_21.txt| 中断と再開 - |21.1| サスペンドとレジューム - |21.2| シェルコマンドの実行 - |21.3| viminfo に情報を記録する - |21.4| セッション - |21.5| ビュー - |21.6| モードライン - -|usr_22.txt| ファイルを探す - |22.1| ファイルブラウザ - |22.2| カレントディレクトリ - |22.3| ファイルを探す - |22.4| バッファリスト - -|usr_23.txt| 特殊なファイルを編集する - |23.1| DOS、Mac、Unix形式のファイル - |23.2| インターネット上のファイル - |23.3| 暗号化 - |23.4| バイナリファイル - |23.5| 圧縮ファイル - -|usr_24.txt| 素早く入力する - |24.1| 修正する - |24.2| 対応する括弧を表示する - |24.3| 補完 - |24.4| 挿入を繰り返す - |24.5| 隣の行からコピーする - |24.6| レジスタを挿入する - |24.7| 短縮形 - |24.8| 特殊な文字を入力する - |24.9| 二重字 (Digraph) - |24.10| ノーマルモードコマンド - -|usr_25.txt| テキストの整形 - |25.1| 行を改行する - |25.2| テキストの位置揃え - |25.3| インデントとタブ - |25.4| 長い行の扱い - |25.5| 表の編集 - -|usr_26.txt| 繰り返し - |26.1| ビジュアルモードを使って繰り返す - |26.2| 加算と減算 - |26.3| 複数のファイルを変更する - |26.4| シェルスクリプトから Vim を使う - -|usr_27.txt| 検索コマンドと正規表現 - |27.1| 大文字と小文字を区別しない - |27.2| ファイルの端で折り返す - |27.3| オフセット - |27.4| 繰り返しマッチ - |27.5| 選択肢 - |27.6| 文字範囲 - |27.7| 文字クラス - |27.8| 改行記号にマッチ - |27.9| 例 - -|usr_28.txt| 折り畳み - |28.1| 折り畳みとは - |28.2| 手動で折り畳む - |28.3| 折り畳みを使って作業する - |28.4| 折り畳みの保存と復元 - |28.5| インデントで折り畳む - |28.6| マーカーで折り畳む - |28.7| 構文で折り畳む - |28.8| スクリプトで折り畳む - |28.9| 変更のない行を折り畳む - |28.10| どれを使えばいいの? - -|usr_29.txt| プログラムの中を移動する - |29.1| タグを使う - |29.2| プレビューウィンドウ - |29.3| プログラムの中を移動する - |29.4| グローバル識別子を検索する - |29.5| ローカル識別子を検索する - -|usr_30.txt| プログラムの編集 - |30.1| コンパイル - |30.2| C 言語系インデント - |30.3| インデント設定の自動化 - |30.4| その他のインデント - |30.5| タブとスペース - |30.6| コメントの整形 - -|usr_31.txt| GUI を活用する - |31.1| ファイルブラウザ - |31.2| 操作確認 - |31.3| メニューのショートカット - |31.4| Vim ウィンドウの位置とサイズ - |31.5| その他 - -|usr_32.txt| undo ツリー - |32.1| ファイル保存時への undo - |32.2| 変更の番号付け - |32.3| ツリーを飛び回る - |32.4| タイムトラベル - -============================================================================== -カスタマイズ ~ - -Vim の動作を好きなように変更できます。 - -|usr_40.txt| 新しいコマンドを作る - |40.1| キーマッピング - |40.2| コマンドラインコマンドを定義する - |40.3| 自動コマンド - -|usr_41.txt| Vim スクリプト書法 - |41.1| はじめに - |41.2| 変数 - |41.3| 式 - |41.4| 条件式 - |41.5| 式を実行する - |41.6| 関数を使う - |41.7| 関数を定義する - |41.8| リストと辞書 - |41.9| 例外 - |41.10| 注意事項 - |41.11| プラグインを書く - |41.12| ファイルタイププラグインを書く - |41.13| コンパイラプラグインを書く - |41.14| プラグインを書く (高速ロード版) - |41.15| ライブラリスクリプトを書く - |41.16| Vim スクリプトを配布する - -|usr_42.txt| 新しいメニューの追加 - |42.1| はじめに - |42.2| メニューコマンド - |42.3| その他いろいろ - |42.4| ツールバーとポップアップメニュー - -|usr_43.txt| ファイルタイプを使う - |43.1| ファイルタイププラグイン - |43.2| ファイルタイプを追加する - -|usr_44.txt| 構文ファイルを作成する - |44.1| 基本的な syntax コマンド - |44.2| キーワード - |44.3| マッチ - |44.4| リージョン - |44.5| 構文アイテムを入れ子にする - |44.6| グループの並び - |44.7| その他の引数 - |44.8| クラスタ - |44.9| 他の構文ファイルをインクルードする - |44.10| シンクロナイズ - |44.11| 構文ファイルをインストールする - |44.12| ポータブルな文法定義ファイル - -|usr_45.txt| 言語を選択する - |45.1| メッセージの言語 - |45.2| メニューの言語 - |45.3| 他のエンコーディングを使う - |45.4| 異なるエンコーディングのファイルを編集する - |45.5| 言語のテキストを入力する - -============================================================================== -インストール ~ - -インストール方法を説明します。 - -|usr_90.txt| Vim のインストール - |90.1| Unix - |90.2| MS-Windows - |90.3| アップグレード - |90.4| よくある問題 - |90.5| アンインストール - -============================================================================== - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/various.jax b/doc/various.jax deleted file mode 100644 index 315fb91e3..000000000 --- a/doc/various.jax +++ /dev/null @@ -1,624 +0,0 @@ -*various.txt* For Vim バージョン 7.3. Last change: 2011 May 19 - - - VIM リファレンスマニュアル by Bram Moolenaar - -様々なコマンド *various* - -1. 様々なコマンド |various-cmds| -2. less、more の代わりに Vim を使う |less| - -============================================================================== -1. 様々なコマンド *various-cmds* - - *CTRL-L* -CTRL-L 画面を消去して再描画します。すでに入力されているキーを - すべて処理してから再描画します。 - - *:redr* *:redraw* -:redr[aw][!] 画面をすぐに再描画します。! を付けたときは、画面を消去 - してから再描画します。 - スクリプトや関数を実行している途中で画面を更新するのに - 便利です。マップの実行中や、'lazyredraw' がオンに設定 - されているときでも更新できます。 - - *:redraws* *:redrawstatus* -:redraws[tatus][!] カレントウィンドウのステータスラインを再描画します。 - ! を付けたときは、すべてのステータスラインを再描画しま - す。 - 'statusline' に自動更新されない項目が含まれている場合 - に、ステータスラインを更新するのに便利です。 - - *N<Del>* -<Del> ノーマルモードで数値 (|count|) を入力しているときは、 - 数字の最後の桁を削除します。 - Note: 同じことをするにの <BS> を使いたい場合は、次の - マップを .vimrc に追加してください: > - :map CTRL-V <BS> CTRL-V <Del> -< <Del> が望みどおりに機能しない場合には|:fixdel|を参照。 -訳注: "CTRL-V <BS>"はCTRL-Vを押してから<BS>を押す。 - -:as[cii] *ga* *:as* *:ascii* -ga カーソル位置の文字の文字コードを、10/16/8 進数で表示し - ます。カーソルが 'R' の上にあるときは次のように表示さ - れます: - <R> 82, Hex 52, Octal 122 ~ - ASCII 以外の文字がオプション 'isprint' に設定されてい - て、表示可能になっている場合には、特殊な表示形式もいっ - しょに表示されます。文字コードが 127 より大きいときに - は <M-x> という形式も表示されます。例: - <~A> <M-^A> 129, Hex 81, Octal 201 ~ - <p> <|~> <M-~> 254, Hex fe, Octal 376 ~ - (<p> には実際の特殊文字が表示されます。) - ファイル中の <Nul> 文字は内部的には <NL> として保存さ - れていますが、次のように表示されます: - <^@> 0, Hex 00, Octal 000 ~ - 合成文字も表示されます。'maxcombine' の設定は影響しま - せん。 - 覚え方: Get Ascii value (アスキーコードを取得) - {Vi にはない} - - *g8* -g8 カーソル位置の文字のバイト列を 16 進数で表示します。エ - ンコーディングが |UTF-8| の場合のみ正しく機能します。 - 合成文字も表示されます。'maxcombine' の設定は影響しま - せん。 - 2 文字の合成文字が結合されている文字の表示例: - e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ - {Vi にはない} {|+multi_byte| が有効な場合のみ利用でき - ます} - - *8g8* -8g8 カーソル以降の不正な UTF-8 バイト列を検索します。 - 次の二つの状況で機能します。 - 1. 'encoding' が 8-bit エンコーディングの場合。 - 2. 'encoding' が "utf-8" で、'fileencoding' が 8-bit - エンコーディングの場合。 - UTF-8 のファイルを開いたはずが、不正なバイト列が含まれ - ていて、別の 8-bit エンコーディングとして開かれてし - まった場合などに使ってください。 - 検索がファイル末尾に達しても、ファイル先頭に戻って検索 - を継続しません。 - Note: カーソルがすでに不正なバイト列の上にある場合は、 - カーソルは移動しません。 - {Vi にはない} {|+multi_byte| が有効な場合のみ利用でき - ます} - - *:p* *:pr* *:print* *E749* -:[range]p[rint] [flags] - 範囲 [range] の行を表示します (省略時は現在行を表示)。 - Note: テキストファイルを印刷する方法については - |:hardcopy| を参照してください。GUI を使用している場合 - は、メニューの File.Print から印刷できます。 - [flags] については |ex-flags| を参照してください。 - -:[range]p[rint] {count} [flags] - [range] の開始行から {count} 行を表示します([range]を - 省略した場合は現在行から開始 |cmdline-ranges|)。 - [flags] については |ex-flags| を参照してください。 - - *:P* *:Print* -:[range]P[rint] [count] [flags] - :print と同じです。シフトキーを長く押し続けてしまう人 - のために追加されました。 - Note: ユーザーコマンドでこのコマンドを上書きできます。 - [flags] については |ex-flags| を参照してください。 - - *:l* *:list* -:[range]l[ist] [count] [flags] - :print と同じですが、表示できない文字は '^'を付けて表 - 示し、行末に $ を置きます。表示は 'listchars' オプショ - ンの設定で変更できます。 - [flags] については |ex-flags| を参照してください。 - - *:nu* *:number* -:[range]nu[mber] [count] [flags] - :print と同じですが、先頭に行番号を付加します。 - (オプション 'highlight' と 'numberwidth' も参照) - [flags] については |ex-flags| を参照してください。 - - *:#* -:[range]# [count] [flags] - :number と同じです。 - - *:#!* -:#!{anything} 無視されます。そのため、次のようにして Vim スクリプト - を実行することができます: > - #!vim -S - echo "this is a Vim script" - quit -< - *:z* *E144* -:{range}z[+-^.=]{count} {range}に指定した行の周辺を表示します。{range} を省略 - した場合は現在行の周辺を表示します。行の範囲をどれだけ - 表示するかは {count} に指定します。{count} を省略した - 場合、ウィンドウが一つだけなら 'scroll' オプションの - 2 倍の数が、そうでなければカレントウィンドウの高さから - 3 を引いた数が使われます。 - - :z は修飾マークを付加して使うこともできます。次の効果 - があります。 - - 記号 開始行 終了行 新しいカーソル位置 ~ - ---- ------ ------ ---------- - + 現在行 1画面先 1画面先 - - 1画面前 現在行 現在行 - ^ 2画面前 1画面前 1画面前 - . 半画面前 半画面先 半画面先 - = 半画面前 半画面先 現在行 - - マークを省略した場合は、"+" が使われます。マークが "=" - の場合は、現在行の周りにマイナス記号で作った線が表示さ - れます。 - -:{range}z#[+-^.=]{count} *:z#* - ":z" と同じですが、行番号も表示します。 - {この機能が使えない Vi クローンもあります。引数が違う - 場合もあります} - - *:=* -:= [flags] 最終行の行番号を表示します。 - [flags] については |ex-flags| を参照してください。 - -:{range}= [flags] {range} で指定した範囲の最終行の行番号を表示します。た - とえば、次のコマンドは現在行の行番号を表示します。 - :.= - [flags] については |ex-flags| を参照してください。 - -:norm[al][!] {commands} *:norm* *:normal* - ノーマルモードコマンド {commands} を実行します。コマン - ドラインからノーマルモードのコマンドを実行できます。 - {commands} は、ノーマルモードで入力されたときと同じよ - うに実行されます。{commands} による変更は、一回のアン - ドゥで取り消されます。 - エラーが発生すると実行停止します。 - [!] を付けた場合はマップは適用されません。 - {commands} は実行を完了する (ノーマルモードに戻る) 必 - 要があります。 - {commands} が完了しない場合は、最後のコマンドが<Esc> - や <C-C> で終了したのと同じように動作します。 - ":normal" の実行中は画面は更新されません。挿入モードも - 必ず完了します (挿入モードを開始するには - |:startinsert| を参照)。":" コマンドも必ず完了します。 - "Q" や "gQ" を使って Ex モードを開始することはできませ - ん。 - {commands} の最初にスペースは置けません。そうしたい場 - 合はスペースの前にカウント指定の 1 (数字の 1) を置いて - ください。"1 " は 1 つのスペースになります。 - {command} の実行ではオプション 'insertmode' は無視され - ます。'|' は :normal コマンドの一部として処理されるの - で、他のコマンドを続けて書けません。:normal コマンドは - 'maxmapdepth' の制限内で再帰的に呼び出すことができま - す。 - このコマンドが再マップされないマップ|:noremap|から呼ば - れた場合でも、([!] を付けない限り) {commands} は再マッ - プされます - |:execute| コマンドには Vim スクリプトの式を指定できる - ので、印字可能文字を使って制御文字を入力することもでき - ます。例: > - :exe "normal \<c-w>\<c-w>" -< {Vi には、もちろんない} - {|+ex_extra|が有効な場合のみ利用できます} - -:{range}norm[al][!] {commands} *:normal-range* - {range} の各行に対してノーマルモードコマンド{commands} - を実行します。{commands} はカーソルが行頭にある状態で - 実行されます。その他は範囲指定の無い ":normal" コマン - ドと同じです。 - {Vi にはない} - {|+ex_extra|が有効な場合のみ利用できます} - - *:sh* *:shell* *E371* -:sh[ell] シェルを起動します。シェルを終了 ("exit"コマンドを実 - 行) すると Vim に戻ってきます。オプション 'shell' に設 - 定されているシェルコマンドを使います。 - *E360* - Note: Amiga では、コンパイラから QuickFix モードで Vim - が起動された場合には、コンパイラが標準入力を非対話型 - モードにしてしまうので使用できません。 - - *:!cmd* *:!* *E34* -:!{cmd} シェルで {cmd} を実行します。'shell' と 'shelltype'も - 参照。 - {cmd} の中の '!' は以前使用した外部プログラムに置 - き換えられます ('cpoptions' も参照)。'!' の前にバック - スラッシュがある場合はバックスラッシュが削除され '!' - は置き換えられません。 - 例: ":!ls" を実行後の ":!echo !\! \\!" は "echo ls ! - \!" と解釈、実行されます。 - 外部プログラムを実行した後で、開いているファイルのタイ - ムスタンプがチェックされます |timestamp|。 - {cmd} の中の '|' はシェルに渡されます。'|' を使って - Vim コマンドを続けて書くことはできません。(|:bar|参 - 照)。 - {cmd} の終わりを示す改行文字 (newline) 以降の文字は、 - 次の ":" コマンドとして解釈されます。改行文字の前に - バックスラッシュがある場合は、バックスラッシュは削除さ - れ、改行文字は {cmd} の一部として解釈されます。改行文 - 字の前にバックスラッシュがいくつあっても、一つだけが削 - 除されます。 - Unix ではシェルを非対話型モードで起動します。対話型 - モードで起動したい場合 (aliasを使いたい場合など) は、 - 'shellcmdflag' に "-ic" を設定してください。 - Win32の場合は|:!start|も参照。 - 外部プログラムはメッセージを出力するかもしれないので、 - 外部プログラムを実行した後にスクリーンが再描画されます。 - そのため、プログラムの出力を見逃してしまわないように、 - hit-enter プロンプトが表示されます。プロンプトを表示し - たくない場合は、次のようにします: > - :silent! !{cmd} -< これでスクリーンは再描画されません。外部プログラムが何 - かを出力した場合は CTRL-L や ":redraw!" で再描画できま - す。|shell-window|も参照。 - - *:!!* -:!! 最後の ":!{cmd}" を繰り返します。 - - *:ve* *:version* -:ve[rsion] エディタのバージョンを表示します。コンパイル時に - "__DATE__" が利用可能だった場合には、コンパイルされた - 日時も表示されます。利用不可だった場合は、リリースの最 - 終修正日時が表示されます。 - Vim の、どの機能が有効になっているかも表示されます。機 - 能名の前に '+' があれば、その機能は有効になっていま - す。'-' のときは無効になっています。 - 機能の有無を変えるには features.h を編集して、Vim をコ - ンパイルし直す必要があります。Vim スクリプトから機能の - 有無を確認するには |has()| を使います。以下に、機能の - 概要を示します。 - 行頭の文字はその機能が含まれる最小構成です: - T tiny - S small - N normal - B big - H huge - m 手動で組み込むか他の機能に依存 - (none) システム依存 - 例えば "N" と書いてあれば、その機能は - normal、big、huge バージョンの Vim に含まれます。 - - *+feature-list* - *+ARP* Amiga のみ: ARP サポートを含む -B *+arabic* |Arabic|言語サポート -N *+autocmd* |:autocmd|, 自動コマンド実行 -m *+balloon_eval* |balloon-eval| サポート。GUI が有効で、Netbeans/Sun - Workshop (|+sun_workshop|) または |+eval| が有効な場合 - に利用できます。 -N *+browse* |:browse| コマンド -N *+builtin_terms* 幾つかの組み込み端末 |builtin-terms| -B *++builtin_terms* 全部の組み込み端末 |builtin-terms| -N *+byte_offset* 'statusline'の'o'フラグ、|go|、|:goto|をサポート -N *+cindent* |'cindent'|, C言語インデント -N *+clientserver* UnixとWin32: リモート呼び出し |clientserver| - *+clipboard* |clipboard|サポート -N *+cmdline_compl* コマンドライン補完 |cmdline-completion| -N *+cmdline_hist* コマンドライン履歴 |cmdline-history| -N *+cmdline_info* |'showcmd'| と |'ruler'| -N *+comments* |'comments'| サポート -B *+conceal* "conceal" サポート。|conceal| |:syn-conceal| 他 参照。 -N *+cryptv* 暗号化サポート |encryption| -B *+cscope* |cscope| サポート -m *+cursorbind* |'cursorbind'| サポート -m *+cursorshape* |termcap-cursor-shape| サポート -m *+debug* Vim がデバッグ用にコンパイルされた -N *+dialog_gui* |:confirm| のGUIダイアログをサポート -N *+dialog_con* |:confirm| のコンソールダイアログをサポート -N *+dialog_con_gui* |:confirm| GUIとコンソールダイアログをサポート -N *+diff* |vimdiff|と'diff' -N *+digraphs* |digraphs| - *+dnd* "~レジスタ |quote_~|を使ったDnDのサポート -B *+emacs_tags* |emacs-tags| ファイル -N *+eval* 式評価(訳注:Vimスクリプト) |eval.txt| -N *+ex_extra* Vimの拡張Exコマンド: |:center|, |:left|、 - |:normal|、|:retab| 及び |:right| -N *+extra_search* |'hlsearch'| と |'incsearch'| オプション -B *+farsi* |farsi| 言語 -N *+file_in_path* |gf|, |CTRL-W_f| と |<cfile>| -N *+find_in_path* include ファイル検索: |[I|、|:isearch|、 - |CTRL-W_CTRL-I|、|:checkpath|、その他 -N *+folding* |folding| - *+footer* |gui-footer| - *+fork* Unix のみ: |fork| シェルコマンド - *+float* 浮動小数点数サポート -N *+gettext* メッセージの翻訳 |multi-lang| - *+GUI_Athena* Unix のみ: Athena |GUI| - *+GUI_neXtaw* Unix のみ: neXtaw |GUI| - *+GUI_GTK* Unix のみ: GTK+ |GUI| - *+GUI_Motif* Unix のみ: Motif |GUI| - *+GUI_Photon* QNX のみ: Photon |GUI| -m *+hangul_input* ハングル入力サポート |hangul| - *+iconv* iconv() 関数が組み込まれている - *+iconv/dyn* |iconv-dynamic| |/dyn| と同じ -N *+insert_expand* |insert_expand| 挿入モード補完 -N *+jumplist* |jumplist| -B *+keymap* |'keymap'| -B *+langmap* |'langmap'| -N *+libcall* |libcall()| -N *+linebreak* |'linebreak'|、|'breakat'| と |'showbreak'| -N *+lispindent* |'lisp'| -N *+listcmds* バッファリストや引数リストに対するVimコマンド - |buffer-hidden| |:argdelete| -N *+localmap* バッファローカルなマップのサポート |:map-local| -m *+lua* |Lua| インターフェース -m *+lua/dyn* |Lua| インターフェース |/dyn| -N *+menu* |:menu| -N *+mksession* |:mksession| -N *+modify_fname* |filename-modifiers| -N *+mouse* マウス操作 |mouse-using| -N *+mouseshape* |'mouseshape'| -B *+mouse_dec* Unix のみ: Dec端末マウス操作 |dec-mouse| -N *+mouse_gpm* Unix のみ: Linuxコンソールマウス操作 |gpm-mouse| -B *+mouse_netterm* Unix のみ: nettermマウス操作 |netterm-mouse| -N *+mouse_pterm* QNX のみ: ptermマウス操作 |qnx-terminal| -N *+mouse_sysmouse* Unix のみ: *BSD コンソールマウス操作 |sysmouse| -N *+mouse_xterm* Unix のみ: xtermマウス操作 |xterm-mouse| -B *+multi_byte* 16ビット、32 ビット文字 |multibyte| - *+multi_byte_ime* Win32 IMEサポート -N *+multi_lang* 多言語サポート |multi-lang| -m *+mzscheme* Mzscheme インターフェース |mzscheme| -m *+mzscheme/dyn* Mzscheme インターフェース |mzscheme-dynamic| |/dyn| -m *+netbeans_intg* |netbeans| -m *+ole* Win32 GUI のみ: |ole-interface| -N *+path_extra* 'path'や'tags'での上下階の検索 -m *+perl* Perl インターフェース |perl| -m *+perl/dyn* Perl インターフェース |perl-dynamic| |/dyn| -N *+persistent_undo* 永続 undo |undo-persistence| - *+postscript* |:hardcopy| でPostScriptファイルの書き出し -N *+printer* |:hardcopy| コマンド -H *+profile* |:profile| コマンド -m *+python* Python 2 インターフェース |python| -m *+python/dyn* Python 2 インターフェース |python-dynamic| |/dyn| -m *+python3* Python 3 インターフェース |python| -m *+python3/dyn* Python 3 インターフェース |python-dynamic| |/dyn| -N *+quickfix* |:make| と |quickfix| コマンド -N *+reltime* |reltime()| 関数, 'hlsearch'/'incsearch' タイムアウト, - 'redrawtime' オプション -B *+rightleft* 右から左へタイプ |'rightleft'| -m *+ruby* Ruby インターフェース |ruby| -m *+ruby/dyn* Ruby インターフェース |ruby-dynamic| |/dyn| -N *+scrollbind* |'scrollbind'| -B *+signs* |:sign| -N *+smartindent* |'smartindent'| -m *+sniff* SniFFインターフェース |sniff| -N *+startuptime* |--startuptime| 引数 -N *+statusline* オプション'statusline'、'rulerformat'と、 - 'titlestring'と'iconstring'の特殊フォーマット -m *+sun_workshop* |workshop| -N *+syntax* 構文強調 |syntax| - *+system()* Unix のみ: |+fork|の反対 -N *+tag_binary* タグファイル内の高速(二分探査)検索 |tag-binary-search| -N *+tag_old_static* 静的タグの古い方法 |tag-old-static| -m *+tag_any_white* tagsファイル内で空白文字を許す |tag-any-white| -m *+tcl* Tcl インターフェース |tcl| -m *+tcl/dyn* Tcl インターフェース |tcl-dynamic| |/dyn| - *+terminfo* |terminfo|でtermcapを代替 -N *+termresponse* |t_RV| と |v:termresponse| のサポート -N *+textobjects* |text-objects| 選択 - *+tgetent* 非Unix のみ: 外部termcapを使用可能 -N *+title* ウィンドウタイトルとアイコン設定 |'title'| |'icon'| -N *+toolbar* |gui-toolbar| -N *+user_commands* ユーザ定義コマンド |user-commands| -N *+viminfo* |'viminfo'| -N *+vertsplit* ウィンドウの垂直分割 |:vsplit| -N *+virtualedit* |'virtualedit'| -S *+visual* ビジュアルモード |Visual-mode| -N *+visualextra* 拡張ビジュアルモードコマンド |blockwise-operators| -N *+vreplace* |gR|と|gr| -N *+wildignore* |'wildignore'| -N *+wildmenu* |'wildmenu'| -S *+windows* 複数ウィンドウ -m *+writebackup* |'writebackup'|がデフォルトで有効 -m *+xim* Xインプットメソッド |xim| - *+xfontset* Xフォントセットサポート |xfontset| - *+xsmp* XSMP(X session management)サポート - *+xsmp_interact* 対話型XSMP(X session management)サポート -N *+xterm_clipboard* Unix のみ: xtermクリップボード操作 -m *+xterm_save* xtermのスクリーンを保存と復帰 |xterm-screens| -N *+X11* Unix のみ: ウィンドウタイトルを復帰可能 |X11| - - */dyn* *E370* *E448* - 機能が動的ライブラリを利用する場合には機能名に"/dyn" - が付加されます。 - -:ve[rsion] {nr} 現在は無視されます。これはかつて .vimrc の中でバージョ - ン番号をチェックするために使われていました。現在は - ":if" コマンドを使ってバージョン依存の振る舞いを記述で - きるので、削除されています。{Vi にはない} - - *:redi* *:redir* -:redi[r][!] > {file} コマンドの出力 (メッセージ) を {file} にリダイレクトし - ます。メッセージは、リダイレクトを終了するまで、ファイ - ルに出力されます。メッセージは画面にも表示されます。 - [!] を付けたときは、既存のファイルが上書きされます。 - [!] を省略した場合は、すでに {file} が存在していると、 - コマンドは失敗します。 - ":redir" を同時に複数使用することはできません。 - ":redir" を実行すると、新しいリダイレクトを開始する前 - に、すでに実行されている他のリダイレクトは閉じられま - す。 - 実行中のコマンドやメッセージがスクリーンに表示されない - ようにするには、コマンドを関数の中に書き、その関数を - ":silent call Function()" と実行してください。 - このコマンドの代わりに、オプション 'verbosefile' を使 - うこともできます。":redir" と同時に使うこともできま - す。 - {Vi にはない} - -:redi[r] >> {file} メッセージを {file} にリダイレクトします。 - {file} が既に存在する場合は追記します。 {Vi にはない} - -:redi[r] @{a-zA-Z} -:redi[r] @{a-zA-Z}> メッセージをレジスタ {a-z} にリダイレクトします。レジ - スタ名が大文字 {A-Z} の場合は、そのレジスタに追記され - ます。レジスタ名の後ろの ">" は省略可能です。 - {Vi にはない} -:redi[r] @{a-z}>> メッセージをレジスタ {a-z} に追記します。 {Vi にはない} - -:redi[r] @*> -:redi[r] @+> メッセージをセレクションまたはクリップボードにリダイレ - クトします。互換性のため、レジスタ名の後ろの ">" は省 - 略できます。|quotestar| と |quoteplus| を参照。 - {Vi にはない} -:redi[r] @*>> -:redi[r] @+>> メッセージをクリップボードに追記します。 - {Vi にはない} - -:redi[r] @"> メッセージを無名レジスタにリダイレクトします。互換性の - ため、レジスタ名の後ろの ">" は省略できます。 - {Vi にはない} -:redi[r] @">> メッセージを無名レジスタに追記します。{Vi にはない} - -:redi[r] => {var} メッセージを変数にリダイレクトします。変数が存在しない - 場合は、作成されます。変数がすでにある場合は、空文字列 - で初期化されます。 - リダイレクトが終了するまでは、変数は空のままです。 - 文字列変数のみ使えます。リダイレクトを開始した後で変数 - を変更したり、ロックしたり、変数タイプを変更したりする - と、それ以降のコマンドがメッセージを出力するときにエラー - が起こります。{Vi にはない} -:redi[r] =>> {var} メッセージを変数に追記します。文字列変数のみ使えます。 - {Vi にはない} - -:redi[r] END メッセージのリダイレクトを終了します。 {Vi にはない} - - *:sil* *:silent* -:sil[ent][!] {command} {command} を静かに実行します。メッセージは表示されず、 - メッセージ履歴にも残りません。 - [!] を付けた場合は、エラーが起きたときでもエラーメッ - セージは表示されず、コマンドやマップは中断されません。 - その場合でも |v:errmsg| はセットされます。 - [!] を付けない場合は、エラーメッセージは通常どおりに表 - 示されます。 - |:redir| によるリダイレクトは通常どおり機能します。 - |:silent| を使うとコマンドの出力をスクリーンに表示する - ことなくリダイレクトすることができます。例: > - :redir >/tmp/foobar - :silent g/Aap/p - :redir END -< ノーマルモードコマンドを静かに実行するには|:normal|コ - マンドを使用します。例えばメッセージを表示することなく - 文字列を検索するには: > - :silent exe "normal /path\<CR>" -< ":silent!" は失敗するかもしれないコマンドを実行すると - きには便利ですが、エラーが無視されてしまいます。例: > - :let v:errmsg = "" - :silent! /^begin - :if v:errmsg != "" - : ... パターンが見付からなかった -< ":silent" は hit-enter プロンプトも抑制します。外部プ - ログラムを実行したとき、その出力は表示されたままになっ - てしまいます。その場合は|CTRL-L|でスクリーンを綺麗にで - きます。 - ":silent menu ..." はコマンドをコマンドラインにエコーし - ないメニューを定義できます。しかしメニューに割り当てた - コマンドのメッセージは表示されます。表示しないようにす - るにはそのコマンド自身に ":silent" を付けてください: - ":silent menu .... :silent command" - - *:uns* *:unsilent* -:uns[ilent] {command} {command} を静かでなく実行します。|:silent| コマンドが - 使用されているときのみ違いがでます。 - |:silent| が使われていてもメッセージを表示したいときに - 使用します。次の例では、|:silent| を使ってファイル読み - 込みに関するメッセージを抑制しつつ、|:unsilent| を使っ - て各ファイルの最初の行を表示できるようにしています: > - :silent argdo unsilent echo expand('%') . ": " . getline(1) -< - - *:verb* *:verbose* -:[count]verb[ose] {command} - 'verbose' に [count] を設定した状態で {command} を実行 - します。[count] を省略した場合は1が設定されます。 - ":0verbose" として 'verbose' をゼロにすることもできま - す。 - ":silent" と一緒に使用すると、メッセージは生成されます - が、表示はされません。 - ":silent" と ":verbose" を一緒に使用するとメッセージを - 生成して |v:statusmsg| を確認することができます。例: > - :let v:statusmsg = "" - :silent verbose runtime foobar.vim - :if v:statusmsg != "" - : " foobar.vim が見付からない - :endif -< コマンドを連続させた場合は、":verbose"は最初のコマンド - だけに適用されます: > - :4verbose set verbose | set verbose -< verbose=4 ~ - verbose=0 ~ - メッセージをログファイルに出力するには 'verbosefile' - を使ってください。 - - *:verbose-cmd* -Vim のオプション、マップ、短縮入力、ユーザー定義関数、ユーザー定義コマンド、強 -調グループ、オートコマンド、を表示するとき、'verbose' がゼロ以外だと、それが設 -定された場所も表示されます。手動で設定したときは "Last set" メッセージは表示さ -れません。関数、ユーザーコマンド、オートコマンド、を実行中に設定された場合に -は、そのコマンドを定義したスクリプトが表示されます。 -{|+eval| が有効な場合のみ利用できます} - - *K* -K カーソル位置のキーワードを調べるためのプログラムを実行 - します。プログラムの名前はオプション 'keywordprg' (kp) - で設定します (初期設定は "man")。キーワードはアルファ - ベット、数字、'iskeyword' に設定された文字から構成され - ます。 - カーソルの下、もしくは右側のキーワード使用されます。次 - のコマンドで同じことができます: > - :!{program} {keyword} -< Vim の tools ディレクトリにサンプルプログラムがありま - す。'ref' という簡易スペルチェックプログラムです。 - 特別なケース: - - 'keywordprg' が空の場合は、":help" コマンドが使われ - ます。検索しやすくするために 'iskeyword' に文字を追 - 加すると良いでしょう。 - - 'keywordprg' が "man" の場合は、"K" の前に入力された - カウントが "man" とキーワードの間に挿入されます。例 - えば、"mkdir" にカーソルがあって、"2K" をを実行する - と、結果はこのようになります: > - !man 2 mkdir -< - 'keywordprg' が "man -s" の場合は、"K" の前に入力さ - れたカウントは "-s" の後に挿入されます。カウントを省 - 略した場合は、"-s" は除去されます。 - {Vi にはない} - - *v_K* -{Visual}K "K" と同じですが、キーワードにはビジュアル選択されたテ - キストが使用されます。複数行を選択したときは機能しませ - ん。{Vi にはない} - -[N]gs *gs* *:sl* *:sleep* -:[N]sl[eep] [N] [m] [N] 秒間なにもしません。[m] を付けると、[N] ミリ秒間ス - リープします。"gs" に指定する数値は常に秒単位です。省 - 略時は 1 秒間スリープします。 > - :sleep " 1 秒スリープ - :5sleep " 5 秒スリープ - :sleep 100m " 100 ミリ秒スリープ - 10gs " 10 秒スリープ -< CTRL-C で割り込むことができます(MS-DOSではCTRL-Break)。 - "gs" は "goto sleep" の略です。 - カーソルが表示可能な位置にある場合は、スリープしている - 間、カーソルはテキスト中に表示されます。 - {Vi にはない} - - *g_CTRL-A* -g CTRL-A MEM_PROFILING を define して Vim をコンパイルしたとき - み使えます (通常は使いません)。メモリ使用量の統計を表 - 示します。Vim をデバッグするときなどに使います。 - -============================================================================== -2. less、more の代わりに Vim を使う *less* - -less や more ではファイルを構文強調表示できません。代わりに、Vim を使うことが -できます。それには、シェルスクリプト "$VIMRUNTIME/macros/less.sh" を使います。 - -このシェルスクリプトは Vim スクリプト "$VIMRUNTIME/macros/less.vim" を使って、 -less のコマンドをシミュレートするためのマップを設定します。less コマンド以外は -通常どおり、Vim のコマンドを使うことができます。 - -完璧に同じ動作ではありません。例えば、短いファイルを表示する場合でも、Vim はス -クリーンを占有します。しかし、ほとんどの場合は満足に機能します。それにとにか -く、構文強調表示することができます。 - -"h" キーを押すと使用できるコマンドのショートヘルプが表示されます。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/version4.jax b/doc/version4.jax deleted file mode 100644 index 053cb8a80..000000000 --- a/doc/version4.jax +++ /dev/null @@ -1,367 +0,0 @@ -*version4.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -このドキュメント Vim 3.0 と Vim 4.0 との違いを一覧にしています。4.0 と述べてい -ますが、これもまたバージョン 4.1, 4.2, などなどがあります。 - -Vim 3.0 からアップグレードしてきた人にはこのファイルは重要です。不測の問題を避 -けるために注意深く読んでおいてください。 - -'backup' オプションの初期値を変更 |backup-changed| -バックアップファイルの拡張子を変更 |backup-extension| -スワップファイルの構造を変更 |swapfile-changed| -"-w scriptout" 引数を変更 |scriptout-changed| -Backspace と Delete キーについて |backspace-delete| -| のエスケープの方法を変更 |escape-bar| -キーコードを変更 |key-codes-changed| -端末のオプションを変更 |termcap-changed| -'errorformat' オプションを変更 |errorformat-changed| -'graphic' オプションがなくなりました |graphic-option-gone| -'yankendofline' オプションがなくなりました |ye-option-gone| -'icon' と 'title' の初期値を変更 |icon-changed| -'highlight' オプションを変更 |highlight-changed| -'tildeop' と 'weirdinvert' の略記を変更 |short-name-changed| -"v", "V", "CTRL-V" をビジュアルモードで使う |use-visual-cmds| -挿入モードでの CTRL-B がなくなりました |toggle-revins| - - -'backup' オプションの初期値を変更 *backup-changed* ---------------------------------- - -'backup' オプションの初期値はいままではオンでした。この結果オリジナルのファイ -ルがが上書きされた場合はバックアップファイルが常に作られることになっていました。 - -いまは 'backup'の初期値はオフになっています。ファイルへの書き込みが成功次第バッ -クアップファイルは削除されます。バックアップファイルを取っておきたい場合は -'backup' オプションを vimrc でオンにしておいてください。この変更がなされた理由 -は多くの人がバックアップファイルが残ることに Vi-compatible ではない、と不満を -唱えたからです。 |'backup'| - - -バックアップファイルの拡張子を変更 *backup-extension* ----------------------------------- - -バックアップファイルの拡張子は今までは ".bak"でした。他のプログラムでもこの拡 -張子を使うものがあるのとユーザーでこの拡張子でファイルのコピーを作っておく人も -いるのでもうすこしあいまいな拡張子"~"に変更されました。もう一つの利点はファイ -ル名が短くなることで、ファイル名が短いことを要求されるようなシステムでは便利で -す。例えば、MS-DOSでは "longfile.c" と "longfile.h" のバックアップファイルはど -ちらも"longfile.bak" になっていましたが、いまはこれらは "longfile.c~" と -"longfile.h~" になります。 - -もし ".bak" という拡張子の方がよいなら 'backupext'オプションで設定することがで -きます。 > - :set bex=.bak |'backupext'| - - -スワップファイルの構造を変更 *swapfile-changed* ------------------------------- - -スワップファイルの内容はいくつかのパラメーターに関して拡張されました。Vim はユー -ザー名と編集されたファイルに関する情報を保持しています。これによって復元がより -簡単になり、またスワップファイルがどこで作成されたものかを知ることができるよう -になりました。現在はスワップファイルの最初の部分で異なるバイトオーダーか -sizeof(int) を持つマシーンを区別することができます。そういった異なるマシーン -間でリカバーを行おうとすると、できないという旨のエラーメッセージが出ます。 - -この変更のため3.0と4.0との間のスワップファイルには互換性がありません。もし3.0 -のセッションでクラッシュしたスワップファイルがあるなら Vim 3.0 を使ってそのファ -イルをリカバーして下さい(4.0は使わないでください)。 |swap-file| - - -"-w scriptout" 引数を変更 *scriptout-changed* -------------------------- - -"vim -w scriptout" は今まではスクリプトアウトファイルに追加するのに使われてい -ました。これはあまり合理的とは言えなかったので新しいファイルを作成するように変 -更されました。ファイルが存在する場合は上書きされません(この方法で追加するのに -なれている人が今まであったファイルを破壊するのを防ぐためです。) -[後に再び削除された] |-w| - - -バックスペースとデリートキー *backspace-delete* ----------------------------- - -3.0ではデリートキーとバックスペースキーは挿入モードではどちらもバックスペース -のように機能していました。つまりカーソルの左側の文字を削除していました。4.0で -はデリートキーは新しい動作をするようになっています: コマンドラインでの動作がそ -うであるようにカーソルの下の文字を削除するのです。カーソルが行末の後に位置して -いて 'bs'オプションがセットされていると2つの行を連結します。 - |<Del>| |i_<Del>| - -3.0ではバックスペースキーは CTRL-H として定義されておりデリートキーは CTRL-? -と定義されていました。4.0ではバックスペースとデリートキーのキーコードは -termcap/termlib から読み込まれます。そして Unix では "stty erase" によって修 -正されます。このことは使っているキーボードによって削除するキーを決めている人に -とっては便利です。 - |<BS>| |i_<BS>| - -もしバックスペースとデリートキーの挿入モードでの動作が前の物がよければ次の行を -vimrc に加えてください。 - - inoremap ^? ^H - -また <BS> と <Del> キーの値を修正するのに次のものも必要かもしれません: - - set t_kb=^H - set t_kD=^? - -(^H を入力するには CTRL-V CTRL-H と入力し ^? を入力するには CTRL-V CTRL-? もし -くは <Del> と入力します。) - -もし t_kb の値が正しく t_kD の値が正しくなければ ":fixdel"コマンドを使ってくだ -さい、t_kb の値によって t_kDをセットします。これは複数の異なるターミナルを使っ -ているときに便利です。 |:fixdel| - -^H が <BS> か <Del> のように認識されると、バックスペースのように使われます。 - - -| のエスケープの方法を変更 *escape-bar* --------------------------- - -'cpoptions' に 'b'フラグがあると、バックスラッシュによってマッピングと略記の中 -で '|'をエスケープするのにバックスラッシュを使うことはできません。CTRL-Vだけが -エスケープさせることができ、これは Vi と同じ仕様です。もし Viコンパチブルで - Vim を使っていて "\|"をバーを含めるためにマッピングで使っている場合、"^V|" に -することが必要です。参照 |:bar| - - -キーコードを変更 *key-codes-changed* ----------------- - -キーコードの内部表現が大幅に変わりました。3.0 では1バイトコードは1つのキーを表 -すのに用いられました。このことは他の文字セットですでにこれらのコードを使ってい -た場合に問題が生じました。4.0 では3バイトコードが使われ一つの文字が混同されな -いようにしました。 |key-notation| - -もし vimrc のマッピングに1バイトコードを使っているなら4.0のコードに置き換える -必要があるでしょう。また3バイトコードを直接使う代わりに <> 表記を用いるべきで -す。下の表をご覧下さい。表には3.0のドキュメントで使われていた古い名前も載せら -れています。 - -<> の中のキーの名前はマッピングで直接使うことができます。つまりこれらの例をコ -ピー/ペーストするかその通りにタイプすることができるのです。<>表記はこの |<>| -で紹介されています。これを動作させるには 'B' と '<'フラグが 'cpoptions' の中に -あってはいけません。|'cpoptions'| - -old name new name old code old MS-DOS code ~ - hex dec hex dec ~ -<ESC> <Esc> -<TAB> <Tab> -<LF> <NL> <NewLine> <LineFeed> -<SPACE> <Space> -<NUL> <Nul> -<BELL> <Bell> -<BS> <BS> <BackSpace> -<INSERT> <Insert> -<DEL> <Del> <Delete> -<HOME> <Home> -<END> <End> -<PAGE_UP> <PageUp> -<PAGE_DOWN> <PageDown> - -<C_UP> <Up> 0x80 128 0xb0 176 -<C_DOWN> <Down> 0x81 129 0xb1 177 -<C_LEFT> <Left> 0x82 130 0xb2 178 -<C_RIGHT> <Right> 0x83 131 0xb3 179 -<SC_UP> <S-Up> 0x84 132 0xb4 180 -<SC_DOWN> <S-Down> 0x85 133 0xb5 181 -<SC_LEFT> <S-Left> 0x86 134 0xb6 182 -<SC_RIGHT> <S-Right> 0x87 135 0xb7 183 - -<F1> <F1> 0x88 136 0xb8 184 -<F2> <F2> 0x89 137 0xb9 185 -<F3> <F3> 0x8a 138 0xba 186 -<F4> <F4> 0x8b 139 0xbb 187 -<F5> <F5> 0x8c 140 0xbc 188 -<F6> <F6> 0x8d 141 0xbd 189 -<F7> <F7> 0x8e 142 0xbe 190 -<F8> <F8> 0x8f 143 0xbf 191 -<F9> <F9> 0x90 144 0xc0 192 -<F10> <F10> 0x91 145 0xc1 193 - -<SF1> <S-F1> 0x92 146 0xc2 194 -<SF2> <S-F2> 0x93 147 0xc3 195 -<SF3> <S-F3> 0x94 148 0xc4 196 -<SF4> <S-F4> 0x95 149 0xc5 197 -<SF5> <S-F5> 0x96 150 0xc6 198 -<SF6> <S-F6> 0x97 151 0xc7 199 -<SF7> <S-F7> 0x98 152 0xc8 200 -<SF8> <S-F8> 0x99 153 0xc9 201 -<SF9> <S-F9> 0x9a 154 0xca 202 -<SF10> <S-F10> 0x9b 155 0xcb 203 - -<HELP> <Help> 0x9c 156 0xcc 204 -<UNDO> <Undo> 0x9d 157 0xcd 205 - - (not used) 0x9e 158 0xce 206 - (not used) 0x9f 159 0xcf 207 - - -端末のオプションを変更 *termcap-changed* ----------------------- - -端末のオプションの名前は、termcap でこれらのオプションに対応するエントリーの名 -前に変更されました。すべての端末のオプションは t_xx という形式の名前を持ち、 -xx が termcap でのエントリーの名前です。termcap の設定を誤っているか不完全であ -る場合か、ハイライトのオプションを他の値にセットしている場合でなければ普段はこ -れらのオプションは使われません。 |terminal-options| - -いくつかのキーに関しては termcap のエントリーに名前がないものがあるということ -に注意してください。そう言う場合は <> 表記を代わりに使ってください、またその表 -記をする方がどっちにしろよいです。 - -"t_ti" が "t_mr" (出力を逆にする/元に戻す)に変わり、"t_ts" が "t_ti"(端末を初 -期化する)に変わっていることに注意してください。また "t_ti"を使うときは十分に注 -意を払ってください。 - -old name new name meaning ~ -t_cdl t_DL 指定行数を削除 *t_cdl* -t_ci t_vi カーソルを見えなくする *t_ci* -t_cil t_AL 指定行数を挿入する *t_cil* -t_cm t_cm カーソルを移動 -t_cri t_RI カーソルを指定数右へ移動 *t_cri* -t_cv t_ve カーソルを見えるようにする *t_cv* -t_cvv t_vs カーソルを明確に見えるようにする*t_cvv* -t_dl t_dl 行を削除する -t_cs t_cs スクロールする範囲 -t_ed t_cl 画面をクリアする *t_ed* -t_el t_ce 行をクリアする *t_el* -t_il t_al 行を挿入する *t_il* - t_da スクリーンより上の描画が保存される - t_db スクリーンより下の描画が保存される -t_ke t_ke キーパッドモードから復帰 -t_ks t_ks キーパッドモードに移行 -t_ms t_ms 強調表示モードでカーソルの動きをセーブする -t_se t_se ノーマルモード(アンドゥ t_so) -t_so t_so シフトアウトモード(標準出力) -t_ti t_mr ハイライトを逆にする -t_tb t_md 太字モード *t_tb* -t_tp t_me ハイライト終わり *t_tp* -t_sr t_sr 逆にスクロールする -t_te t_te termcap モードから出る -t_ts t_ti termcap モードに移行 ョ *t_ts_old* -t_vb t_vb ビジュアルベル -t_csc t_CS スクロール範囲相対カーソル移動モード *t_csc* - -t_ku t_ku <Up> 上矢印キー -t_kd t_kd <Down> 下矢印キー -t_kr t_kr <Right> 右矢印キー -t_kl t_kl <Left> 左矢印キー -t_sku <S-Up> シフト+上矢印キー *t_sku* -t_skd <S-Down> シフト+下矢印キー *t_skd* -t_skr t_%i <S-Right> シフト+右矢印キー *t_skr* -t_skl t_#4 <S-Left> シフト+左矢印キー *t_skl* -t_f1 t_k1 <F1> ファンクションキー1 *t_f1* -t_f2 t_k2 <F2> ファンクションキー2 *t_f2* -t_f3 t_k3 <F3> ファンクションキー3 *t_f3* -t_f4 t_k4 <F4> ファンクションキー4 *t_f4* -t_f5 t_k5 <F5> ファンクションキー5 *t_f5* -t_f6 t_k6 <F6> ファンクションキー6 *t_f6* -t_f7 t_k7 <F7> ファンクションキー7 *t_f7* -t_f8 t_k8 <F8> ファンクションキー8 *t_f8* -t_f9 t_k9 <F9> ファンクションキー9 *t_f9* -t_f10 t_k; <F10> ファンクションキー10 *t_f10* -t_sf1 <S-F1> シフト+ファンクションキー1 *t_sf1* -t_sf2 <S-F2> シフト+ファンクションキー2 *t_sf2* -t_sf3 <S-F3> シフト+ファンクションキー3 *t_sf3* -t_sf4 <S-F4> シフト+ファンクションキー4 *t_sf4* -t_sf5 <S-F5> シフト+ファンクションキー5 *t_sf5* -t_sf6 <S-F6> シフト+ファンクションキー6 *t_sf6* -t_sf7 <S-F7> シフト+ファンクションキー7 *t_sf7* -t_sf8 <S-F8> シフト+ファンクションキー8 *t_sf8* -t_sf9 <S-F9> シフト+ファンクションキー9 *t_sf9* -t_sf10 <S-F10> シフト+ファンクションキー10 *t_sf10* -t_help t_%1 <Help> ヘルプキー *t_help* -t_undo t_&8 <Undo> アンドゥキー *t_undo* - - -'errorformat' オプションを変更 *errorformat-changed* ------------------------------- - -'errorformat'がコンマで区切っていくつかのフォーマットで定義できるようになりま -した。初めにマッチしたフォーマットが使われます。初期値で多くの一般的なフォーマッ -トを認識できるように調整されました。 |errorformat| - -コンマを含むフォーマットがある場合バックスラッシュを前置する必要があります。こ -の時 :set コマンドが一つ取ってしまうのでバックスラッシュは二つ重ねてください。 - - -'graphic' オプションがなくなりました *graphic-option-gone* ------------------------------------- - -'graphic' オプションは <~> と 0xa0の文字をスクリーンに直接表示させるために使わ -れていました。いまは 'isprint'オプションがこのかわりになりますし、もっと強化さ -れています。初期の設定は同じで前に'graphic' オプションを vimrc でセットしてい -る場合のみ気をつける必要があります。 |'isprint'| - - -'yankendofline' オプションがなくなりました *ye-option-gone* ------------------------------------------- - -'yankendofline'オプションがなくなりました。かわりに次のマッピングを使うことが -できます。 - :map Y y$ - - -'icon' と 'title' オプションの初期値を変更 *icon-changed* ------------------------------------------- - -"Thanks for flying Vim" のタイトルが残るのを避けるために、'title' オプションは -もとのタイトルを復元できる場合にのみ初期値でオンになるようになりました。 - |'title'| - -'icon' オプションの初期値は 'title'オプションのように元の値を復元できるかどう -かによるようになりました。もしアイコンのタイトルを変更するのが嫌であれば次の行 -をvimrc に加えてください。 |'icon'| - :set noicon - - -'highlight' オプションを変更 *highlight-changed* ----------------------------- - -'i'フラグは反転を意味するフラグではなく斜体のハイライトの意味になりました。今 -まで 'i' フラグが意味していた反転ハイライトには 'r'フラグが使われるようになり -ました。普通はこの変更による違いは気づかないかもしれません。というのはほとんど -の端末では斜体表示はサポートされていない上、斜体表示が使えないときは反転モード -が使われるからです。 |'highlight'| - -'highlight' オプションでセットされるアイテムのうち定義されていないアイテムは従 -来は反転モードで表示されていましたが、'highlight' でのそのアイテムのデフォルト -で設定されている値から引っ張ってきてそれが使われるようになりました。 - - -'tildeop' と 'weirdinvert' の略記名を変更 *short-name-changed* ------------------------------------------ - -'to' ( 'tildeop' の略記名) は 'top' に変更 |'tildeop'| -'wi' ( 'weirdinvert' の略記名) は 'wiv' に変更 |'weirdinvert'| - -これは Vi が 'wi' を 'window' の略記名に使っており 'to' を 'timeout'の略記名と -して使っているために変更されました。このことはこれらのオプションをセットしよう -とした場合エラーメッセージはでないけれども動作が違ってくることになります。 - - -ビジュアルモードで "v", "V", "CTRL-V" を使う *use-visual-cmds* --------------------------------------------- - -ビジュアルモードにおいては "v", "V", "CTRL-V"はビジュアルモードを終了させるの -に使われてきました。いまはビジュアルモードが一致するタイプにおいてのみ終了させ -るのに使われるようになりました。そうでない場合はビジュアルモードのタイプが変わ -ります。どんな状況でもビジュアルモードをなにも行わずに終了させるにはESC キーを -利用してください。 |v_V| - - -挿入モードでの CTRL-B を削除 *toggle-revins* ----------------------------------- - -いままでは CTRL-B は 'revins'オプションのオン/オフをトグルするのにつかわれてい -ました。このことは、この動作を知らないで誤ってCTRL-Bを押してしまった場合、どう -やってアンドゥしてよいか気づくのが困難でした。ほとんどの人はこの機能を使ってい -ないので初期値では使えないようにしました。もしこの機能を使いたいならばコンパイ -ルするときにRIGHTLEFT を feature.h で define してください。 |'revins'| - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax deleted file mode 100644 index cdb20bd52..000000000 --- a/doc/vi_diff.jax +++ /dev/null @@ -1,1047 +0,0 @@ -*vi_diff.txt* For Vim バージョン 7.3. Last change: 2010 Oct 11 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Vim と Vi の違い *vi-differences* - -ヘルプファイルを通して Vim と Vi/Exの違いはねじれ括弧の中で "{Vi にはない機能 -です}"のように示されています。このファイルは他のファイルで触れられていない部分 -のみを列挙します。それと違いの概略を説明します。 - -Vim は大体において POSIX 1003.2-1 に従っています。知られている唯一の足りないコ -マンドは ":open" コマンドです。細かな違いはたぶんたくさんあります(Vimが間違っ -ているか、Posixの指標がはずれているかのどちらか)。 - -1. シミュレートされているコマンド |simulated-command| -2. なくなっているオプション |missing-options| -3. 制限 |limits| -4. もっとも興味深い機能追加 |vim-additions| -5. Vim の他の特徴 |other-features| -6. コマンドライン引数 |cmdline-arguments| -7. POSIX 準拠 |posix-compliance| - -============================================================================== -1. シミュレートされているコマンド *simulated-command* - -このコマンドは Vi にはありますが Vim ではシミュレートしているだけです。 - - *:o* *:op* *:open* -:[range]o[pen] |:visual|と同様。Exモードを終了します。 - {Vi: オープンモードで編集を開始する} - -:[range]o[pen] /pattern/ 上と同様で、さらに現在行の中で"pattern"にマッ - チする桁へカーソルを移動します。 - -Vimにオープンモードはありません。まったく便利ではないからです。Viなら":open"で -オープンモードを開始しますが、VimではExモードを抜けます。その結果、Viの場合と -同じコマンドが実行できるようになります。ただ、1行だけを再描画するのでなく、画 -面全体を再描画する点が違います。 -============================================================================== -2. なくなっているオプション *missing-options* - -これらのオプションは Vi にはあって、Vim にはないものです。これらのオプションを -セットしてもエラーメッセージは出ませんが、設定した値は使われませんし表示もされ -ません。 - -autoprint (ap) 二者択一 (初期値 オン) *'autoprint'* *'ap'* -beautify (bf) 二者択一 (初期値 オフ) *'beautify'* *'bf'* -flash (fl) 二者択一 (初期値 ??) *'flash'* *'fl'* -graphic (gr) 二者択一 (初期値 オフ) *'graphic'* *'gr'* -hardtabs (ht) 数値 (初期値 8) *'hardtabs'* *'ht'* - ディスプレイ上で一つの <Tab> が移動するスペースの数 -mesg 二者択一 (初期値 オン) *'mesg'* -novice 二者択一 (初期値 オフ) *'novice'* -open 二者択一 (初期値 オン) *'open'* -optimize (op) 二者択一 (初期値 オフ) *'optimize'* *'op'* -redraw 二者択一 (初期値 オフ) *'redraw'* -slowopen (slow) 二者択一 (初期値 オフ) *'slowopen'* *'slow'* -sourceany 二者択一 (初期値 オフ) *'sourceany'* -w300 数値 (初期値 23) *'w300'* -w1200 数値 (初期値 23) *'w1200'* -w9600 数値 (初期値 23) *'w9600'* - -============================================================================== -3. 制限 *limits* - -Vim で編集できるファイルの制限はかなり少ないです。 {Vi: <Nul>文字を扱えず、ま -た 128をこえる文字を扱えません。行の長さにも制限がありますし、他にも多くの制限 -があります。} - - *E340* -行の最大の長さ 16-bit ints を使っているマシーン(Amiga と MS-DOS の - リアルモード): 32767 か 2147483647 文字。それより長 - い行は分割されます。 -最大行数 2147483647 行 -最大のファイルのサイズ long integer が32ビットである場合2147483647バイト(2 - ギガバイト)です。64ビットの長さであればもっと多くな - ります。またスワップファイル|swap-file|の為のディス - クの空き容量にも制限されます。 - *E75* -ファイルのパスの長さ Unix と Win32: 1024 文字か 256 文字(もしくはシステム - がサポートしている長さ分だけ) -ファイル名の長さ Unix と Win32: 1024 文字か 256 文字 -展開されたオプションの文字列の長さ - Unix と Win32: 1024 文字か 256 文字 -表示される最大の長さ Unix と Win32: 1024 文字か 256 文字 -マッピングでの lhs の最大の長さ - 50 文字 -異なるハイライトの種類の数: 30000以上 -数値変数の範囲: -2147483648 から 2147483647 (64ビットシステムではそれ以上) -タグファイルにおける一行の最大の長さ: 512 バイト - -アンドゥとレジスターの中のテキストに関する情報はメモリーに保持されます。ですの -で、使用可能な(仮想)メモリーの量を超えて(大きな)変更を行っている場合はアンドゥ -レベルの数とレジスターに保持されうるテキストは制限されることになります。コマン -ドライン履歴やクイックフィクスモードでのエラーメッセージなどの他のものもまたメ -モリーに保持されます。 - -メモリーの使い方を制限する --------------------------- - -'maxmem' ( 'mm' ) オプションは一つのバッファに使われるメモリーの最大の量(キ -ロバイトで)を決めるのに使います。'maxmemtot' はすべてのバッファで使われるメ -モリーの最大の量(キロバイトで)を決めるのに使います。Amiga と MS-DOS では -'maxmemtot' は使えるメモリーの量に依存して設定されます。 -これらは厳格な制限ではなく、いつテキストをスワップファイルに移動するかの目安で -す。もし Vim がファイルにスワップを行うのが嫌であれば 'maxmem' と'maxmemtot' -の値をかなり大きい値に設定しておきます。そうするとスワップファイルはリカバリー -の時にのみ使われるようになります。もしどんなスワップファイルも欲しくなければ -'updatecount' を 0 に設定するか、Vim を起動するときに "-n" 引数をつけます。 - -============================================================================== -4. もっとも興味深い機能追加 *vim-additions* - -Vi コンパチビリティ |'compatible'| - Vim には Vi の99%の機能が含まれますが、Vi のうちのいくつかはバグか少な - くとも改良が必要だと考えられるものがあります。しかしそれでもなお Vim は - 可能な限り「本当の」 Vi のように振る舞うモードで起動します。Vim にもう - 少しよい動作をして欲しい場合は 'compatible' オプションを解除してみてく - ださい。 - :set nocompatible - それか Vim を "-N" 引数つきで起動してください: - vim -N - もし .vimrc ファイルがあれば'nocompatible'つきでVimが起動します。 - |startup| も見てください。'cpoptions' オプションはたくさんの特定のアイ - テムに関する Viと同一の動作をするかどうかのオン/オフを切り替えることが - できます。 - -様々なシステムのサポート - Vim は次のシステムで利用できます: - - すべての Unix システム (テストされたすべてのシステムで動作しますが - GUI と Perl インターフェースはどこでも動作するわけではないかもしれま - せん)。 - - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). - - リアルモードの MS-DOS (他のドライバーは必要ありません) - - プロテクトモードの Windows 3.1 と MS-DOS (DPMI ドライバーが必要です) - - Windows 95 と Windows NT、ロングファイル名をサポート - - OS/2 (emx.dll が必要です) - - Atari MiNT - - VMS - - BeOS - - Macintosh - - Risc OS - - IBM OS/390 - Note: いくつかのシステムではリソース使用量を削減するために機能を無効に - する必要があります(特にMS-DOS)。いくつかの時代後れのシステムでは以前の - バージョンのVimを使わねばなりません。 - -多段アンドゥ |undo| - 'u' は時をさかのぼり、'CTRL-R' は再び進めます。変更を覚えておく回数を - 'undolevels' オプションでセットしてください(初期値 1000)。'undolevels' - を0にセットすると Vi コンパチブルのアンドゥになります。-1 にセットする - とアンドゥできないようになります。 - - あるバッファに対する変更をすべてアンドゥした場合は、バッファはなに - も変更されていないと見做されます。つまり <!> なしで :q で終了させること - ができます。 - 変更をアンドゥしてその後新しい変更をすると、Vimのアンドゥツリーにブラ - ンチが作られます。これにより、テキストを永遠に失うという危険性なしにテ - キストをどの状態にでも戻すことができます。|undo-tree| - -グラフィカルユーザーインターフェース(GUI) |gui| - GUI (メニュー、マウス、スクロールバー、などなど)のサポートが含められま - した。独自のメニューを定義することもできます。CTRL/SHIFT/ALT とキーの組 - み合わではなく特殊なキーとマウスの組み合わせというよりよい方法がサポー - トされます。さまざまなプラットフォーム、 X11 (Motif と Athena インター - フェース)、Win32 (Windows95 か、より最新のもの),BeOS, Amiga, Macintosh - でサポートされています。 - -複数のウィンドウとバッファ |windows.txt| - Vim ではスクリーンをいくつかのウィンドウに分けてそれぞれの中で異なる - バッファーを編集したり同じバッファを別の場所で編集したりできます。バッ - ファーはウィンドウに表示されていなくともロードして(変更を加えて)おくこ - ともできます。これは隠れたバッファと呼ばれます。この機能のために多くの - コマンドやオプションが追加されています。 - Vimはタブページを使うこともできます。各タブページは1個以上のウィンドウ - を含みます。タブラベルを表示する行を使ってこれらのタブを素早く切替える - ことができます。|tab-page| - -構文ハイライト |:syntax| - Vim ではキーワードやパターンやその他のものをハイライトすることができま - す。これは ":syntax" コマンドで定義し、ほとんどの言語やファイルのタイプ - に対してハイライトをつけることができます。C、C++、Java、Pascal、 - Makefiles、シェルスクリプト、などなどの多くの一般的な言語のうちのほとん - どのためのハイライト定義ファイルはすでに含まれています。ハイライトに使 - われる色は普通の端末で定義することができ、色端末と GUI では - |:highlight| コマンドで定義できます。色を変更するのに便利な方法は - |:colorscheme|コマンドを使うことです。 - ハイライトされたテキストをHTMLにエクスポートすることができます - |convert-to-HTML|。ハイライトできる他の要素は、検索文字列のマッチ部分 - |'hlsearch'|、対応する括弧 |matchparen|、カーソル行とカーソル桁 - |'cursorline'| |'cursorcolumn'|です。 - -スペルチェック |spell| - オプション'spell'がセットされていると、スペリングの間違いがハイライト - されます。現在のところ約40の言語がサポートされています。言語はオプショ - ン'spelllang'で選択できます。ソースコード中ではコメントと文字列だけが - スペルチェックされます。 - -折畳み |folding| - 複数行の範囲を一行の「折畳まれた」行として表示することができます。これ - によりファイルを一望することができ、テキストブロック間を素早く移動する - ことが可能になります。折畳みの設定は手動、ファイルのシンタックス、イン - デント等々で設定することができます。 - -Diffモード |diff| - ファイルの2つのバージョンの差分をハイライトして表示することができます。 - テキストの一致する部分は折り畳みされます。コマンドを使って片方のバー - ジョンのテキストをもう一方へ移動することができます。 - -プラグイン |add-plugin| - プラグインファイルを正しいディレクトリにただ置くだけで機能追加ができま - す。これは他人が書いたVimスクリプトを使い始める簡単な方法です。プラグ - インは全ての種類のファイルについて設定することもできますし、ある1つの - ファイルタイプについて設定することも可能です。 - -一連のコマンドを繰り返す |q| - "q{c}"で名前付きレジスター{c}にタイプする文字の記録を始めます。後に続 - く"q" は記録を終了します。そしてレジスターにあるコマンドは"@{c}"コマン - ドで実行することができます。これは複雑な動作を繰り返すときに非常に便利 - です。 - -柔軟な挿入モード |ins-special-special| - ファイルを動き回るのに矢印キーを挿入モードで使うことができます。このこ - とはアンドゥとリドゥを考えると挿入モードが二つに分かれることになります - - CTRL-O は一つのノーマルモードのコマンドを実行するのに使うことができま - す。これはつまり <Esc> キーを打ってコマンドを打ってからそれから |a| を - 打ったのとほとんど同じことです。 - -ビジュアルモード |Visual-mode| - ビジュアルモードは、初めにいくつかのテキストを選択してからそれに対して - コマンドを実行するのに使うことができます。これは初めに演算コマンドを与 - えてからその演算を施すテキストの最後まで移動するコマンドを実行するもう - 一つの(簡単な)方法です。 - |v| と |V| はビジュアルモードを開始します。|v|は文字ごとに選択し |V| - は行ごとに選択します。カーソルを動かしてビジュアル部分を広げ、その部分 - はスクリーン上でハイライトされます。"o" を打つことでビジュアルなテキス - ト部分の反対側の端が動かされることになります。ビジュアルなテキスト部分 - には次の演算を施すことができます: - d 削除 - c 変更 - y ヤンク - > or < インデントを挿入/削除 - ! 外部プログラムを使ってフィルターを施す - = インデントを通してフィルターを施す - : ビジュアルな行に対して |:| コマンドを始める - gq 'textwidth' 桁位置にテキストを整形する - J 行を連結する - ~ 大文字小文字を入れ換える - u 小文字にする - U 大文字にする - -ブロック演算コマンド |visual-block| - 長方形のテキストがビジュアルモードを使って選択することができます。 - CTRL-V でビジュアルモードを開始します。選択されたブロックは "d" で削除 - したり 'y' でヤンクしたり大文字小文字を "~"、"u"、"U" で変えることがで - きます。削除もしくはヤンクされたブロックは "p" か "P" コマンドでテキス - トに挿入することができます。 - -ヘルプシステム |:help| - ヘルプはウィンドウの中に表示されます。検索したりするテキストの中を移動 - する普通のコマンドはそのまま使えます。タグも複数のヘルプファイルの間を - 移動するのに使え、ハイパーテキストのリンクをクリックするような感覚で - す。|:help| コマンドは引数を取りますので検索したい情報に素早くジャンプ - できます。<F1> を押して素早くヘルプシステムにアクセスすることもできま - す。ヘルプファイルのインデックスファイルは 'helpfile' オプションで設定 - することができます。 - -コマンドライン編集/履歴 |cmdline-editing| - カーソルキーを使うことでコマンドラインのどの場所からでも挿入を行ったり - 削除を行ったりすることができます。右/左矢印キーは前/後に一つの文字移動 - するのに使うことができ、Shift キーを押しながら右/左矢印キーを押すと前/ - 後に一つの単語移動することができます。CTRL-B/CTRL-E はコマンドラインの - 初め/終わりに移動するのに使うことができます。 - - |cmdline-history| - コマンドラインは記録されます。上/下矢印キーを使うことで前のコマンドライ - ンを呼び出すことができます。'history' オプションで覚えておく行数を設定 - することができます。検索パターンのコマンド履歴はまた別に分かれていま - す。 - -コマンドライン補完 |cmdline-completion| - コマンドライン(スクリーンの一番下で)でなんらかの作業をしているときに - <Tab> キーを押すと補完を行うことができます。 - what example ~ - - コマンド :e<Tab> - - タグ :ta scr<Tab> - - オプション :set sc<Tab> - - オプションの値 :set hf=<Tab> - - ファイル名 :e ve<Tab> - - その他 - - 複数マッチしたものがある場合は、CTRL-N (次)と CTRL-P (前)でマッチしたも - のの間を移動することができます。<Tab> は CTRL-N のように振る舞います - が、マッチしたものの最後で押すと最初にマッチしたものに戻ります。 - - 'wildchar' オプションでコマンドライン補完に利用する文字を設定できま - す。デフォルトは<Tab>です。複数の補完候補がある不完全な状態でCTRL-Dを - タイプすることで、全ての補完候補を表示することができます。CTRL-Aではす - べての候補を入力することができます。CTRL-Lでは候補内で、一致する最長部 - 分までを入力します。 - -挿入モードでの補完 |ins-completion| - 挿入モードで CTRL-N と CTRL-P を使うことでどこかに現れる単語を補完する - ことができます。 |i_CTRL-N| - CTRL-X を使うことでもう一つのモードに入ることができます。どの補完を行う - ことができるかというと: - |i_CTRL-X_CTRL-F| ファイル名 - |i_CTRL-X_CTRL-K| 辞書'dictionary'ファイルにある単語 - |i_CTRL-X_CTRL-T| 類語辞典'thesaurus'ファイルにある単語 - |i_CTRL-X_CTRL-I| インクルードされるファイルにある単語 - |i_CTRL-X_CTRL-L| すべての行 - |i_CTRL-X_CTRL-]| タグファイルにある単語 - |i_CTRL-X_CTRL-D| マクロ定義 - |i_CTRL-X_CTRL-O| オムニ補完: ファイルタイプに特化した賢い補完 - など。 - -長い行のサポート |'wrap'| |'linebreak'| - 'wrap' オプションがオフであれば、長い行は折り返されずに行の一部分だけが - 表示されます。カーソルが表示されていない部分に移動するとスクリーンも横 - にスクロールします。横にスクロールする桁数の最小の値を 'sidescroll' オ - プションで設定することができます。|zh| と |zl| コマンドは横スクロールに - 使うことができます。あるいは、'linebreak' オプションがセットされている - 場合は長い行は単語の間で切られます。こうすることで段落を一つの行にして - 編集することが容易になります(例: 後で編集中のテキストを DTP プログラム - に持っていく場合)。カーソルを上下するには |gk| と |gj| コマンドを使って - ください。 - -テキストの整形 |formatting| - 'textwidth' オプションを設定することで行の長さを自動的に制限することが - できます。このオプションはあまり便利ではなかった Vi での 'wrapmargin' - オプションを補助するものです。|gq| 演算コマンドはテキストの一部分を整 - 形するのに使うことができます(例えば、|gqap| は現在の段落を整形します)。 - テキストの位置に関するコマンドは |:center|, |:left|, |:right| です。 - -拡張正規表現 |pattern| - 様々なテキスト要素にマッチさせるための、多くの拡張正規表現の要素があり - ます。たとえば"\n"は改行にマッチします。 - "x\{2,4}"は、"x"が2個から4個続くテキストにマッチします。 - "\s"は空白文字にマッチします。 - -ディレクトリ、リモート、アーカイブの閲覧 |netrw| - Vimはファイルシステムをブラウズすることができます。単にディレクトリを - 編集します(訳註: :e {directory} とする)。そのリスト中を普通のコマンド - を使って移動し、<Enter>を押すとカーソル下のディレクトリやファイルに移 - ります。 - これはftp, http, sshなど越しのリモートファイルにも機能します。 - zipとtarのアーカイブもブラウズすることができます。|tar| |zip| -編集-コンパイル-編集 をスピードアップする |quickfix| - |:make| コマンドを使うことでコンパイルしてから初めのエラーにジャンプす - ることができます。コンパイラのエラーメッセージが書かれたファイルを解析 - できます。最初のエラーにジャンプします。 - - エラーファイルのそれぞれの行はファイルの名前、行番号、エラーメッセージ - という風に調べられます。'errorformat' オプションは多くのコンパイラーか - らの出力を扱うことができるように scanf のような形式の文字列のリストを指 - 定することができます。 - - |:cn| コマンドは次のエラーにジャンプするのに使うことができます。|:cl| - コマンドはすべてのエラーメッセージをリストします。他のコマンドも使うこ - とができます。'makeef' オプションはエラーメッセージが含まれるファイルの - 名前を指定します。'makeprg' オプションは |:make| コマンドで実行するプロ - グラムの名前を指定します。'shellpipe' オプションはコンパイラーからの出 - 力をエラーファイルに書き込むときに使われる文字列を指定します。 - -複数のファイルから検索する |:vimgrep| - 複数のファイルからパターンを検索することができます。この機能はVimの高 - 度な正規表現パターンを使い、すべてのシステム上で機能し、圧縮されたファ - イルも検索できます。 - -C プログラムのインデントを改善 |'cindent'| - 'cindent' オプションがオンの時はそれぞれのインデントは自動的に調整され - ます。C の文法はだいたい解釈されますし、さまざまなスタイルでのインデン - トは 'cinoptions' で設定することができます。インデントをするきっかけと - なるキーワードは 'cinkeys' で指定することができます。 - - コメントも自動的に整形することができ、'comments' オプションでどの文字が - コメントをスタートさせ終了させるのかを指定することができます。この機能 - は C のコードでもっともよく動作しますがメール(行の最初の ">")や他のタイ - プのテキストでもうまく動作します。|=| 演算コマンドで行を再インデントす - ることもできます。 - - 他にも多くの言語に対して自動インデントをするためのインデントプラグイン - が提供されています。|30.3| - -インクルードされるファイルの中から単語を探す |include-search| - |[i| コマンドはカーソルのしたの単語をインクルードされるファイルの中から - 検索することができます。'include' オプションをセットすることでファイル - をインクルードするコマンドのパターンを記述することができます(デフォルト - では C のプログラムで検索できるように設定してあります)。 - |[I| コマンドはマッチしたすべてをリストし、|[ CTRL-I| コマンドはマッチ - した場所にジャンプするコマンドです。 - |[d|, |[D|, |[ CTRL-D| も同様ですが、'define' オプションで指定されるパ - ターンにマッチする行にのみします - -自動コマンド |autocommand| - ファイルを読み込んだり書き込んだり別のバッファにジャンプしたりなどす - る時に、ファイル名によって自動的にコマンドを実行することができます。こ - れは C のプログラムを書いたり、ドキュメントを書いたり、普通のテキストを - 書いたりなどする時にオプションをセットしたりそれら特有のマッピングをし - たりするときに便利です。これを利用することで圧縮されたファイルを編集す - ることもできるようになります。 - -コマンドと表現 |expression| - 強力なスクリプト言語を形成するようにいくつかコマンドが追加されました。 - |:if| 条件によって実行します。例えば $TERM の値によってオプ - ションを変更したりできます。 - |:while| コマンドを繰り返します。 - |:for| リストをわたるループ。 - |:echo| 式の結果を表示します - |:let| 値を内部変数やオプションなどに割り当てます。 - 変数の型は数値、文字列、リスト、辞書。 - |:execute| 式からなるコマンドを実行します。 - |:try| 例外を捕捉します。 - などなど。|eval|を参照。 - デバッグとプロファイリングがサポートされています。|debug-scripts| - |profile| - もしこれで十分でないなら、|Python|, |Ruby|, |Tcl|, |Lua|, |Perl|, - |MzScheme| のインターフェイスが提供されています。 - -Viminfo |viminfo-file| - コマンドライン履歴やマークやレジスターの内容を起動時に読み込まれるファ - イルに保存しておくことができます。Vim を終了させた後、再び Vim を起動し - たときでも検索コマンドを繰り返したりコマンドラインを繰り返したりできま - す。|'0| を使って最後に編集していた場所にジャンプすることもまた可能で - す。'viminfo' オプションで .viminfo ファイルに保存されるアイテムを選択 - することができます。初期値はオフです。 - -印刷 |printing| - コマンド|:hardcopy|はテキストをプリンタに送信します。構文強調も含まれ - ます。 -マウスサポート |mouse-using| - マウスは GUI バージョンと Unix、sysmouse がある BSD、gpm がある Linux、 - MS-DOS、Win32 上の xterm でサポートされています。カーソルの場所を変え - たりビジュアル領域を選択したりレジスターの内容を張りつけたりするのに使 - うことができます。 - -キーの名前の使い方 |<>| |key-notation| - 特殊なキーはすべて <Up>、<End> などなどのような書き方ができるようになり - ました。この名前はマッピングでも使うことができますしそれらを編集するの - が容易になります。 - -バイナリーファイルを編集する |edit-binary| - Vim はバイナリーファイルを編集することができます。実行形式のファイルを - 壊すことなくいくつかの文字を変更することができます。Vim は NUL 文字を削 - 除しません(内部では <NL> と表されています)。 - |-b| バイナリーファイルの編集を始める時のコマンドライン引数 - |'binary'| |-b| によってセットされるオプションで、ファイルの最後の - 行に <EOL> を付加するのをやめさせます - -多言語のサポート |multi-lang| - ダブルバイトやマルチバイトエンコーディングのファイルを編集できます。 - フォントを切り替えずに多言語を同時に編集可能なUTF-8をサポートしていま - す。 |UTF-8| - メッセージやメニューが多くの言語に翻訳されています。 - -行を越えるカーソル移動 - オプション'virtualedit'がセットされていると、テキストがない場所を含め、 - 画面全体どこでもカーソルを移動させることができます。これは表や図を容易 - に編集できて便利です。 - -============================================================================== -5. その他の Vim の機能 *other-features* - -その他の優れた機能をランダムに集めてみました。 - - -Vim が "-s scriptfile" 付きで起動された場合、"scriptfile" から読み込まれる文字 -は実際あなたがそれをタイプしたように扱われます。もしエディタが終了する前にスク -リプトファイルの終わりに到達した場合は、さらにコンソールから文字を読み込みます - -"-w" オプションはタイプした文字をすべてスクリプトファイルに記録するのに使うこ -とができます。このファイルは後で別のファイルでその編集を繰り返したり、スクリプ -トファイルをに修正を加えてから繰り返しを実行したりするのに使うことができます。 - -"-o" オプションはそれに続く引数の数だけウィンドウを開きます。"-o4" は4つのウイ -ンドーを開きます。 - -Viはフルスクリーンで動作するためにいくつかのtermcapのエントリが必要でした。Vim -が必要とするのは"cm"エントリ(cursor motion)だけです。 - - -コマンドモードで: - -'showcmd' オプションがセットされていると、スクリーンの最後の行にコマンドの文字 -列が表示されます。これらはコマンドが終了した後に削除されます。 - -'ruler' オプションがセットされているとスクリーンの最後の行に現在のカーソルの位 -置が表示されます。 - -"U" は最後に変更した行からはなれた後でも、また "u" を実行した後でも動作します。 - -8bit 目がセットされている文字は表示されます。その文字が'isprint'オプションに含 -まれていなければ、'~' と 0xa0 の間の文字は "~?"、"~@"、"~A"、などなどのように -表示されます。 - -"][" は C の関数の次の終わりに移動します(一桁目が '}' の行)。 -"[]" は C の関数の前の終わりに移動します(一桁目が '}' の行)。 - -"]f"、"[f" と "gf" はカーソルの下のファイル名の編集を開始します。CTRL-W f は -カーソルの下のファイル名の編集をウィンドウを分割してそこで開始します。 - -"*" はカーソルの下の識別子を前方に検索し、"#" は後方に検索します。 -"K" はカーソルの下の識別子を引数として 'keywordprg' オプションに定義されている -プログラムを呼び出します。 - -'%' は前に数を前置することでそのファイルのパーセント数の場所にジャンプします。 -数を前置しない場合はくくられているテキストの中では対応する括弧に移動します。 - -CTRL-] コマンドでは、カーソルは識別子の真ん中にあります。 - -使ったタグは覚えておかれ、タグスタックに覚えておかれるコマンドは CTRL-T と - ":pop" と ":tag" です。 ":tags" はタグスタックの内容をリスト表示します。 - -'tags' オプションはタグファイル名のリストを設定することができます。ですので複 -数のタグファイルを使うことができます。ファイル名が '.' で始まる場合は '.' はそ -のファイルのパスに展開されます。こうすることで編集しているファイルがあるディレ -クトリと同じディレクトリのタグファイルを使うことができるようになります - -前に編集されたファイルは代替ファイルリストに覚えておかれます。CTRL-^ に数を前 -置することでこのリストのインデックスの番号のファイルにジャンプできます。 -":files"コマンドで開いたファイルの一覧を見ることができます。 -"#<N>"はリスト内の<N>番目のファイルの名前で置換されます。 -"#<"は現在のファイル名から拡張子を取り除いたもので置換されます。 - -検索パターンも強化されました。<NL> 文字を検索パターンや ":s" コマンドの文字列 -の一部に使うことができます。Vi では単にコマンドの終了と見做されます。 - -検索ではマッチした最後にカーソルをおくこともできますし、オフセット文字を使って -検索することもできます。 - -"~"、":next"、":Next"、"n"、"N" にカウントを前置することができるようになりまし -た。 - -'autowrite' オプションがセットされている場合でも ":next!" コマンドはファイルを -書き込みません。Vi ではファイルは上書きされましたが、これはバグだと思われます。 -というのもそういう動作は期待されませんし ":rewind!" コマンドでは書き込まれない -からです。 - -Vi では上書きモードで <CR> を打ち込んだときに文字を削除するのは 'ai' がセット -されている場合のみでした(しかし <Esc> キーが押されるまでは表示されませんでし -た)。Vim は常に文字を削除します(またすぐに表示します)。 - -:wnext コマンドが追加されました。":write" コマンドを実行して ":next" コマンド -を実行するのと同じです。 - -":w!" コマンドは上書き禁止されているファイルでも常に書き込みます。Vi では - ":!chmod+w %" してから ":set noro" としなければなりませんでした。 - -'tildeop' がセットされていると "~" は演算コマンドとして動作します(移動コマンド -を後に続けます)。 - -"J" (連結)コマンドを実行するときにピリオドの後でスペースを挿入するのを一つだけ -にするように 'joinspaces'オプションを再セットすることができます(Vi では2つのス -ペースが挿入されます)。 - -"cw" はいくつかの文字で構成されるホワイトスペースを変更できます(Vi では "cw"は -スペースを一つだけ変更するのに "dw" はすべてのホワイトスペースを削除するという -紛らわしい仕様でした)。 - -"o" と "O" は回数を前置することができます(Vi は表示の一部分を削除します)。 - -Ex コマンドの後につけるフラグはサポートされていません(予定もありません)。 - -UNIX システム以外では ":cd" コマンドはホームディレクトリーに移動するのではなく -(ホームディレクトリはないです)、現在のディレクトリを表示します。":pwd" はすべ -てのシステムで現在のディレクトリを表示します。 - -":cd"コマンドの後でもファイル名(引数リストや開いたファイル)は元のファイルを指 -します。Viではファイルに変更があると":cd"できません。そうでなければファイル名 -の解釈が変わってしまうからです。 - -":source!" コマンドはファイルから Vi コマンドを読み込みます。 - -":mkexrc" コマンドは現在の変更されているオプションとマッピングを ".exrc" ファ -イルに書き出すコマンドです。":mkvimrc" は ".vimrc" ファイルに書き出します。 - -マッピングで「最後が再帰的であるかどうか」のチェックはされません。つまり次のよ -うなマッピングもできます。 -":map! foo ^]foo". - -マッピングが数字で始まる場合は、Vi ではそのカウントが失われてしまっていました -(例: ":map g 4G" というマッピングを使っていると "7g" は4行目に移動してしまいま -した)。これは Vi のバグだと考えられます。Vim では多くの人が期待する動作である -ようにカウントを連結します(この例の場合は "74G" になります。 - -:put! コマンドは現在の行の上にレジスターの内容を挿入します。 - -Vi での "p" と "P" コマンドは挿入されるテキストが一行より短い場合は "." で繰り -返すことができませんでした。Vim では常に繰り返すことができます。 - -":noremap" コマンドは再マップされないマップを作るのに使うことができます。これ -は2つのキーの意味を交換するのに使うと便利です。":cmap",":cunmap",":cnoremap"は -コマンドライン編集でのみ動作するマッピングです。":imap",":iunmap",":inoremap" -は挿入モードのみで動作するマッピングを定義できます。同様なコマンドは略記にもあ -ります: ":noreabbrev",":iabbrev",":cabbrev", ":iunabbrev",":cunabbrev", -":inoreabbrev",":cnoreabbrev" - -Vi では ":map foo bar" は前の ":map bug foo" というマッピングを削除していまし -た。これはバグと思われますので Vim ではその仕様は含まれません。":unmap! foo" -は "map! bug foo" というマッピングを削除します。なぜならそうでなければマッピン -グを外すのが非常に困難になるからです(これは Vi と同じ動作です)。 - -':' レジスターは最後のコマンドラインを含んでいます。 -'%' レジスターは現在のファイル名を含んでいます。 -'.' レジスターは最後に挿入されたテキストを含んでいます。 - -":dis" コマンドはヤンクレジスターの内容を表示します。 - -CTRL-O/CTRL-I は古い/新しい場所に移動するのに使うことができます。これらの移動 -する場所は '' コマンドで移動する場所と同じですが他のファイルの中でもありえます。 -":jumps" コマンドは古い場所をリストします。 - -'shiftround' オプションがセットされていると ">" と "<" コマンドでは -'shiftwidth' の倍数になるようにインデントは調整されます。 - -'scrolljump' オプションはスクリーンからカーソルが出たときにスクロールする最小 -の行数を設定することができます。もしスクロールが遅い場合はこれをセットしてくだ -さい。 - -'scrolloff' オプションでカーソルの上や下に保持しておく最小の行数を設定できます。 -これを設定しておくとカーソルの前後を見渡せるようになります。かなり大きい数字に -セットしておけばカーソル行は常にウィンドウの中央に来ることになります。 - -大文字のマークはファイルを越えてジャンプするのに使うことができます。":marks" -コマンドは現在セットされているすべてのマークをリストします。"']"と"`]"は前に操 -作を行った場所の最後か、テキストを挿入したかプットした場所の最後に移動します。 -"'[" と "`[" は初めに移動します。 - -'shelltype' オプションは Amiga 上で使われるシェルのタイプを反映させるのに使う -ことができます。 - -'highlight' オプションはいくつかのコマンドで使われるハイライトモードを設定する -ことができます。 - -CTRL-A (加算) と CTRL-X (減算) コマンドが新たに追加されました。カウントを前置 -することもでき(初期値 1)、カーソルの下もしくは後の数字をその値の分加算/減算す -るのに使うことができます。数は10進数、8進数(0で始まります)、16進数(0xで始まり -ます)でもよいです。マクロを使うときに非常に便利です。 - -:set コマンドでは "inv" を前置することで二者択一のオプションは逆の意味にするこ -とができます。 - -Vi と Vim の両方で ":substitute" コマンドで CTRL-M を使うことで改行を挿入する -ことができます。Vi ではこのためにテキストに実際の CTRL-M を挿入することができ -なかったのですが、Vim では CTRL-V を前に挿入してから実際の CTRL-M をおくことが -できます。 - - -挿入モードで: - -'revins' オプションがセットされていると挿入は逆方向に向かってなされます。これ -はヘブライ語を入力するためです。普通の文字を挿入するときはカーソルは逆方向にな -りませんしテキストは右方向に動きます。バックスペース、CTRL-W、CTRL-U もまた逆 -方向に動作します。上書きモードではなんら影響しません。コンパイル時にのみ有効に -することができます。 - -オートインデントを削除するのにバックスペースキーをちょうど CTRL-D のように使う -ことができます。 - -'backspace' (bs) オプションが"eol"を含んでいると改行をこえてバックスペースした -り CTRL-U したり CTRL-W することができます。'backspace'が"start"を含んでいると -挿入の初めをこえてバックスペースすることができます。 - -'paste' オプションがセットされているといくつかのオプションが解除され挿入モード -でのマッピングと略記が使用不可になります。こうすることでウィンドウシステムでテ -キストを張りつけるときに不測の結果が生じるのを避けることができます。'paste'オ -プションが解除されればオプションの前の値が復元されます。 - -CTRL-T/CTRL-D はカーソルがどこの桁位置にあっても常に現在の行のインデントを挿 -入/削除します。 - -CTRL-@ (前に挿入したテキストを挿入する)は常に動作します(Vi: 初めの文字としてを -打ち込んだときにのみ)。 - -CTRL-A は CTRL-@ のように動作しますが挿入モードから抜けません。 - -CTRL-R {0-9a-z..} はレジスターの内容を挿入するのに使うことができます。 - -'smartindent' オプションがセットされていると、C プログラムはもっとうまく自動イ -ンデントされます。'cindent' オプションをセットしているとさらにうまくインデント -されます。 - -CTRL-Y と CTRL-E は現在のカーソルの上/下の文字をコピーするのに使うことができま -す。 - -CTRL-V を打った後に3桁の8進数を打つことができ、このバイトの値がテキストに一文 -字として挿入されます。キーボードからは打ち込めない内部の文字を使うときに便利で -す。 - -'expandtab' (et) がセットされていると <Tab> は適切な数のスペースに展開されま -す。 - -ウィンドーは常にバッファの内容を反映します(Vi ではテキストを変更したりそのほ -かいくつかの場合では行われませんでした)。 - -Vim が DIGRAPHS を定義してコンパイルされていれば digraph がサポートされます。 -普通の digraph のセットが含まれるようになり、":digraph" コマンドで見ることがで -きます。":digraph {char1}{char2} {number}" でさらに追加することもできます。 -"CTRL-K {char1} {char2}" とするか "{char1} BS {char2}" とすることで digraph を -入力できます( 'digraph' オプションがセットされている場合のみです)。 - -挿入をカウントを前置して行う場合、例 "10atest <Esc>"、Vi は初めの挿入に対して -のみ wrapmargin を扱うことができましたが、Vim ではすべてに対して扱います。 - -"i" か "a" コマンドでのカウント前置はすべてのテキストに対して利用できます。Vi -では一つの行に対してのみカウントを前置できました。"3iabc<NL>def<Esc>" は -"abcabcabc<NL>def" が Vi の動作で、"abc<NL>defabc<NL>defabc<NL>def" が Vim で -の動作です。 - - -コマンドラインモードで: - -<Esc> はコマンドラインを実行せずに抜けることができます。Vi ではコマンドライン -は実行されており、ほとんどの人が予測する動作とは違いました(<Esc> を打つことで -常にコマンドモードに戻るべきでしょう)。この問題をなんらかの曖昧なマクロで避け -るにはマクロでの <Esc> はコマンドを実行します。もし <Esc> で Vi のようにコマン -ドを実行したい場合は次のように修正できます。 - ":cmap ^V<Esc> ^V<CR>" - -一般: - -'ttimeout' オプションは 'timeout' オプションに似ていますが、カーソルかファンク -ションキーに対してのみ働きます。'timeoutlen' オプションは待つ時間をミリセコン -ド単位で指定することができます。'esckeys' オプションがセットされていない場合い、 -<Esc> キーで始まるカーソルとファンクションキーは挿入モードでは解釈されません。 - -端末文字列がそれぞれオプションとしてあります。termcap がサポートされていなかっ -たり独自の文字列に変更したい場合に利用することができます。 - -'fileformat' オプションは <EOL> を選択して設定するのに使います: "dos" -<CR><NL>, "unix" <NL>, "mac" <CR>。 -'fileformats' オプションが空でない場合、Vim は <EOL> のタイプを自動的に判断し -ようとします。'fileformat' オプションはそれに従ってセットされます。 - -ジョブコントロールを持たないシステム(古い Unix システムと Unix 以外のシステム) -ではCTRL-Z、":stop"、":suspend" コマンドは新しいシェルを起動します。 - -出力のための対話的なウィンドウなしで Vim が Amiga 上で起動された場合、ウィンドウ -が開かれます(そうして :sh コマンドは動作します)。|-d| 引数で編集する装置を指定 -することができます(例: "-d con:20/20/600/150")。 - -'columns' と 'lines' オプションはディスプレイの幅と高さを指定するのに使うこと -ができます。 - -ファイルの最初と最後の数行はオプションをセットするために読み込まれます。 -'modelines' オプションがどれだけの数の行を読み込もうとするかを決めることができ -ます(初期値は5です)。モードラインでどんな Ex コマンドも実行できる(重大なセキュ -リティ問題です)バージョンの Vi がありますがそれとは違うということに注意してく -ださい。 |trojan-horse| - -'insertmode' オプションがセットされていると(例えば .exrc で) Vim は挿入モード -で起動します。<Esc> キーを押すと元に戻ります。 - -アンドゥの情報はメモリーに保持されます。使用可能なメモリーの量でアンドゥの回数 -とアンドゥ可能なサイズが制限されます。このことは MS-DOS では問題になるかもしれ -ません。Amiga ではほとんど問題にならないですし、Unix と Win32 では大体において -決して問題になることはないです。 - -'backup' か 'writebackup' オプションがセットされていると: ファイルを上書きする -前にバックアップファイル(.bak)が作られます。"backup" オプションがセットされて -いるとバックアップファイルは残されたままになります。 - -Vim は変更されたファイルの一部分やメモリーに入りきらないものをに保持するため -にファイルの最後が ".swp" であるファイルを作成します。このファイルはクラッシュ -した編集セッションを "vim -r file" として復元するのに使われます。'updatecount' -オプションを0にするか Vim を "-n" オプションをつけて起動するとスワップファイル -を使うのをやめさせることができます。.swp ファイルをどこか別の場所に作成させたい -場合は'directory' オプションを設定してください。 - -Vim は8.3形式のファイルシステムでも正しく動作することができます。また Amiga 上 -での汚い DOS もしくは 雑種の DOS ファイルシステムでも使うことができますし、8.3 -形式のファイルシステムを搭載したどんな Unix でも動作します。|'shortname'| もご -覧下さい。 - -エラーメッセージは少なくとも1秒は表示されます(Vi ではエラーメッセージは上書き -されます) - -|hit-enter| プロンプトが出た場合でもどんなキーでも打つことができます。<CR>、 -<NL>、<Space> 以外の文字はコマンド(の最初)として解釈されます(Vi では ':' で始 -まるコマンドしか受け付けませんでした)。 - -番号付きレジスターと名前なしレジスターの内容はファイルが変更されたときに覚えて -おかれます。 - -"No lines in buffer" メッセージはマッピングが拒否された理由で表示される、エラー -メッセージではなく普通のメッセージです。 - -The AUX: Amiga のデバイスをサポートしています。 - -============================================================================== -6. コマンドライン引数 *cmdline-arguments* - -異なるバージョンの Vi では異なるコマンドライン引数があります。これはちょっと紛 -らわしいですので便宜のためにこの章では違いの概略を説明します。 - -5つの種類の Vi がここでは考慮されます: - Elvis Elvis version 2.1b - Nvi Nvi version 1.79 - Posix Posix 1003.2 - Vi Vi version 3.7 (Sun 4.1.x) - Vile Vile version 7.4 (不完全) - Vim Vim version 5.2 - -Vim だけがファイル名の後でもオプションを受け付けます。 - -+{command} Elvis, Nvi, Posix, Vi, Vim: "-c {command}" と同じです。 - -- Nvi, Posix, Vi: Ex をバッチモードで起動します - Vim: 標準入力からファイルを読み込みます(バッチモードを使うには - -s を利用してください)。 - --- Vim: オプションの終わりです。この後はファイル名のみ書くことがで - きます。 - ---cmd {command} Vim: vimrcファイルを読み込む前に{command}を実行します - ---echo-wid Vim: GTK+がウインドウのIDを標準出力に書き出します。 - ---help Vim: ヘルプメッセージを表示して終了します。 - ---literal Vim: ファイル名のワイルドカードを処理しません - ---nofork Vim: |-f|と同じです - ---noplugin[s] Vim: プラグインの読み込みをしません - ---remote Vim: 他のVimサーバでそのファイルの編集をします - ---remote-expr {expr} Vim: 他のVimサーバで{expr}を評価します - ---remote-send {keys} Vim: Vimサーバに{Keys}を送って終了します - ---remote-silent {file} Vim: 可能なら他のVimサーバでファイルの編集をします - ---remote-wait Vim: 他のVimサーバでファイルの編集をして、それが終わるまで待機 - します - ---remote-wait-silent Vim: --remote-waitと同じですが、それが不可能な場合でも - エラーをだしません。 - ---role {role} Vim: GTK+ 2: メインウインドウのroleを設定します - ---serverlist Vim: Vimサーバのリストを出力して終了します - ---servername {name} Vim: Vimサーバの名前を指定します - ---socketid {id} Vim: Vimを起動するGTKウインドウのsocket - ---windowid {id} Vim: Vimを起動するWin32のウィンドウID - ---version Vim: バージョンメッセージを表示して終了します。 - --? Vile: 簡単な使い方を表示して終了します。 - --a Elvis: 指定されたファイル名をそれぞれ一つのウィンドウに読み込み - ます(Vim では -o を使ってください)。 - --A Vim: アラビア語モードで起動します(その機能が組み込まれているな - ら) - --b {blksize} Elvis: ファイルのセッションに {blksize} のブロックサイズを使い - ます。 --b Vim: 'binary' モードをセットします。 - --C Vim: Vi コンパチブルモードで起動します。 - --c {command} Elvis, Nvi, Posix, Vim: ファイルを編集バッファにロードした後 - {command} を Ex コマンドとして走らせます。 - Vim: 10個まで "-c" 引数をとることができます。 - --d {device} Vim: I/O に {device} を使います(Amiga のみ)。{|+diff|の機能を - 外してコンパイルされたときのみ} --d Vim: 'diff'を設定して起動します|vimdiff| - --dev {device} Vim: I/O に {device} を使います(Amiga のみ) - --D Vim: デバッグモード - --e Elvis, Nvi, Vim: あたかも "ex" が起動されたように Ex モードで起 - 動します。 - --E Vim: "exim"のように、より良いExモードで起動します|gQ| - --f Vim: GUI をフォアグラウンドジョブとして起動します(Amiga: 新たに - ウィンドウを開きません)。 --f {session} Elvis: {session} をセッションファイルとして使います。 - --F Vim: Farsi モードで起動します(Farsi 付きでコンパイルされている - 場合)。 - Nvi: 編集を開始するときにファイルのすべてを読み込まず素早く起動 - します。 - --G {gui} Elvis: {gui} をユーザーインターフェイスとして使います。 - --g Vim: GUI で起動します。 --g N Vile: N 行目から編集を開始します。 - --h Vim: ヘルプメッセージを表示します。 - Vile: ヘルプファイルを編集します。 - --H Vim: ヘブライモードで起動します(ヘブライオプションをつけてコン - パイルされている場合)。 - --i Elvis: それぞれのウィンドウを挿入モードで起動します。 --i {viminfo} Vim: {viminfo} を Viminfo ファイルとして使います。 - --L Vim: "-r" と同じです(またいくつかのバージョンの Vi でもそうで - す)。 - --l Nvi, Vi, Vim: 'lisp' と 'showmatch' オプションをセットします。 - --m Vim: 変更を書き込むことを禁止し、'write' オプションを解除します。 - --M Vim: 変更を加えることを禁止し、'write' オプションと - 'modifiable'オプションを解除します。 - --N Vim: コンパチブルモードではないモードで起動します。 - --n Vim: スワップファイルを使いません。 - --nb[args] Vim: NetBeansへの接続を開きます - --O[N] Vim: -oと同じですが、ウィンドウを縦分割します - --o[N] Vim: [N]個のウィンドウを開きます。もしくは各ファイルに1個ずつ - ウィンドウを開きます。 - --p[N] Vim: [N]個のタブページを開きます。もしくは各ファイルに1個ずつ - タブページを開きます。 - --P {parent-title} Win32 Vim: 親となるアプリケーションの内側でVimを開きます - --q {name} Vim: {name} をクイックフィクスエラーファイルとして使います。 --q{name} Vim: 同上。 - --R Elvis, Nvi, Posix, Vile, Vim: 'readonly' オプションをセットしま - す。 - --r Elvis, Nvi, Posix, Vi, Vim: 復元モード - --S Nvi: 'secure' オプションをセットします。 --S {script} Vim: 起動後にスクリプトを実行します。 - --s Nvi, Posix, Vim: Exモードでは "-"(サイレントモード)と同じです。 - Elvis: 'safer' オプションをセットします。 --s {scriptin} Vim: {scriptin} からスクリプトを読み込みます; Ex モードでないと - きにのみ有効です。 --s {pattern} Vile: {pattern} を検索します。 - --t {tag} Elvis, Nvi, Posix, Vi, Vim: {tag} を含むファイルを編集します。 --t{tag} Vim: 同上。 - --T {term} Vim: {term} に端末名をセットします。 - --u {vimrc} Vim: {vimrc} ファイルを初期化ファイルとして読み込みます。 - --U {gvimrc} Vim: {gvimrc} ファイルを GUI 初期化ファイルとして読み込みます。 - --v Nvi, Posix, Vi, Vim: ノーマルモードで起動します(Vi ではビジュア - ルモードを意味していました)。 - Vile: 閲覧モードで起動し、変更は不可です。 - --V Elvis, Vim: 冗長なモードで起動します。 --V{nr} Vim: 特定レベルの冗長なモードで起動します。 - --w {size} Elvis, Posix, Nvi, Vi, Vim:'window'の値を{size}にセットします。 --w{size} Nvi, Vi: "-w {size}"と同じです。 --w {name} Vim: スクリプトファイル{name}に書き込みます(non-digit で起動し - なければなりません)。 - --W {name} Vim: スクリプトファイル{name}に追加します。 - --x Vi, Vim: 暗号鍵の入力を尋ねさせます。|encryption|もご覧下さい。 - --X Vim: Xサーバに接続しません。 - --y Vim: |evim|のように簡単モードで起動します。 - --Z Vim: 制限モード - -@{cmdfile} Vile: {cmdfile} を初期化ファイルに使います。 - -============================================================================== -7. POSIX 準拠 *posix* *posix-compliance* - -2005年、Vimの互換性をチェックするためにPOSIXテストを行いました。テストのほとん -どはパスしました。Vi互換モードで実行したときでもPOSIX準拠でない点が2,3ありまし -た。 - -Vim起動時にオプション'cpoptions'にPOSIXフラグを含めるには、環境変数$VIM_POSIX -を設定してください。そうするとVimができるだけPOSIXに従うようになります。これは -Vi互換であることとは少し違います。 - -以下はVimがPOSIX仕様に従わない点とその理由です: - - *posix-screen-size* - Vimは端末からより確かな方法でサイズが得られると、環境変数$COLUMNSと - $LINESを無視します。'cpoptions'にフラグ'l'を加えると$COLUMNSと$LINESが - 他の方法で得られたサイズを上書きするようになります。 - - オリジナルのViではコマンド"{"と"}"は"{"で止まりませんが、POSIXは止まる - ように指定しています。POSIX流を望むなら'cpoptions'にフラグ'{'を加えて - ください。 - - コマンド"D", "o", "O"がカウントを受け付けます。繰り返されたときもです。 - カウントを無視するようにしたければ'cpoptions'にフラグ'#'を加えてくださ - い。 - - 'cpoptions'にフラグ'.'が入っていると、バッファが変更されているときコマ - ンド":cd"が失敗します。 - - ViにはATTENTIONメッセージはありません。ATTENTIONメッセージを出さなくす - るには'shortmess'にフラグ"A"を加えてください。 - -POSIXテストの実行についての注意: -- viテスト33はときどき未知の理由のために失敗します -- viテスト250が失敗します。新しいバージョンで挙動が変更されるでしょう。 - http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html - (今はリンク切れ。現在の場所はおそらくここ: - https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711) -- viテスト310が失敗します。エラーが起きたとき終了コードが非ゼロになる? -- exテスト24が失敗します。テストが間違っているためです。SUSv2とSUSv3の間に変更 - されました。 -- exテスト47, 48, 49, 72, 73が失敗します。サイレントモードでは.exrcは読み込ま - れず、$EXINITが使われないためです。 -- exテスト76, 78が失敗します。printfの代わりにechoが使われるためです(修正され - ました)。Also: problem with \s not changed to space. -- exテスト355が失敗します。"30z"のときに'window'が使われないためです。 -- exテスト368が失敗します。サイレントモードでシェルコマンドがエコーされないた - めです。 -- exテスト394が失敗します。コマンド"="の出力がサイレントモードで見えないためで - す。 -- exテスト411が失敗します。テストファイルが迷子の':'を含んで正しくないためです -- exテスト475, 476が失敗します。サイレントモードでリプリント出力が見えないため - です。 -- exテスト480, 481が失敗します。tagsファイルがタブでなくスペースを含んでいるた - めです。 -- exテスト502が失敗します。サイレントモードで.exrcが読まれないためです。 -- exテスト509が失敗します。サイレントモードで.exrcが読まれないためです。また、終了コードが2 - でなく1になるためです。 -- exテスト534が失敗します。サイレントモードで.exrcが読まれないためです。 - - -vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/vim-ja.UTF-8.1 b/doc/vim-ja.UTF-8.1 deleted file mode 100644 index 265370e46..000000000 --- a/doc/vim-ja.UTF-8.1 +++ /dev/null @@ -1,501 +0,0 @@ -.TH VIM 1 "2006 Apr 11" -.SH 名前 -vim \- Vi IMproved, プログラマのテキストエディタ -.SH 書式 -.br -.B vim -[options] [file ..] -.br -.B vim -[options] \- -.br -.B vim -[options] \-t tag -.br -.B vim -[options] \-q [errorfile] -.PP -.br -.B ex -.br -.B view -.br -.B gvim -.B gview -.B evim -.B eview -.br -.B rvim -.B rview -.B rgvim -.B rgview -.SH 説明 -.B Vim -は Vi 互換のテキストエディタです。 -どのような種類のプレインテキストでも編集できます。 -特に、プログラムの編集に力を発揮します。 -.PP -Vi に多くの改良が加えられています: -多段アンドゥ、マルチウィンドウ、マルチバッファ、構文強調表示、 -コマンドライン編集、ファイル名補完、ヘルプ、ビジュアル選択、などなど。 -.B Vim -と Vi の違いについての要約は ":help vi_diff.txt" を参照してください。 -.PP -.B Vim -の実行中は ":help" コマンドでヘルプを引くことができます。 -下記、オンラインヘルプの項を参照してください。 -.PP -.B Vim -は次のようなコマンドで起動できます。 -.PP - vim file -.PP -正確な書式は次の通りです: -.PP - vim [options] [filelist] -.PP -filelist を省略した場合は、空のバッファが開かれます。 -指定した場合は、以下の四つのうちどれか一つの方法でファイルが開かれます。 -.TP 12 -file .. -ファイルのリスト。 -一番目のファイルがカレントファイルになり、バッファに読み込まれます。 -カーソルは、バッファの一行目に置かれます。 -他のファイルを表示するには ":next" コマンドを使ってください。 -ファイル名がダッシュで始まるファイルを開く場合は、 -filelist の前に "\-\-" を指定してください。 -.TP -\- -ファイルは標準入力から読み込まれます。コマンドは標準エラー (ttyからの入 -力になっているはず) から読み込まれます。 -.TP -\-t {tag} -開くファイルとカーソルの初期位置は "tag" に依存します。goto label の一種です。 -tags ファイルから {tag} が検索され、関連したファイルがカレントファイルになり -ます。そして、関連したコマンドが実行されます。 -これは主に C 言語のファイルを開くときに使われます。その場合 {tag} に関数など -を指定して使います。 -関数を含んでいるファイルが開かれ、その関数の先頭にカーソルが移動する、 -という動作になります。 -詳しくは ":help tag\-commands" を参照してください。 -.TP -\-q [errorfile] -クイックフィックスモードで起動します。 -[errorfile] に指定したファイルが読み込まれ、最初のエラーが表示されます。 -[errorfile] を省略した場合は、オプション 'errorfile' が使われます (初期設定 -は、Amiga では "AztecC.Err"、その他のシステムでは "errors.err" です)。 -":cn" コマンドで次のエラーにジャンプできます。 -詳しくは ":help quickfix" を参照してください。 -.PP -.B Vim -は、起動されたときの実行ファイルの名前によって動作を変えます -(実行ファイルの実体が同じであっても)。 -.TP 10 -vim -"普通" に起動します。標準の状態です。 -.TP -ex -Ex モードで起動します。 -ノーマルモードに切り替えるには ":vi" コマンドを使ってください。 -引数に "\-e" を指定した場合と同じです。 -.TP -view -読み込み専用モードで起動します。ファイルの保存が制限されます。 -引数に "\-R" を指定した場合と同じです。 -.TP -gvim gview -GUI バージョン。 -新しいウィンドウを開いて起動します。 -引数に "\-g" を指定した場合と同じです。 -.TP -evim eview -簡易モードの GUI バージョン。 -新しいウィンドウを開いて起動します。 -引数に "\-y" を指定した場合と同じです。 -.TP -rvim rview rgvim rgview -上記と同じですが、制限モードで起動します。シェルコマンドを実行したり、 -.B Vim -をサスペンドしたりできなくなります。 -引数に "\-Z" を指定した場合と同じです。 -.SH オプション -ファイル名の前でも後ろでも、好きな順番でオプションを指定できます。 -パラメータを必要としない引数は、一つのダッシュにまとめて指定できます。 -.TP 12 -+[num] -一番目のファイルの "num" 行目にカーソルを移動します。 -"num" を省略した場合は、一行目にカーソルが移動します。 -.TP -+/{pat} -一番目のファイルの、最初に {pat} が見つかった行にカーソルが移動します。 -検索パターンについては ":help search\-pattern" を参照してください。 -.TP -+{command} -.TP -\-c {command} -一番目のファイルが読み込まれた後に {command} が実行されます。 -{command} は Ex コマンドとして解釈されます。 -{command} に空白を含める場合は、ダブルクォートで囲んでください (シェルに依存)。 -例: vim "+set si" main.c -.br -Note: "+" と "\-c" は合わせて 10 個まで指定できます。 -.TP -\-S {file} -一番目のファイルが読み込まれた後に {file} が実行されます。 -これは \-c "source {file}" と同じ動作です。 -{file} の先頭が '\-' の場合は使えません。 -{file} が省略された場合は、"Session.vim" が使われます (ただし \-S が最後の引 -数だった場合の)。 -.TP -\-\-cmd {command} -"\-c" と同じですが、vimrc を処理する前にコマンドが実行されます。 -これらのコマンドは "\-c" コマンドとは別に、10 個まで指定できます。 -.TP -\-A -アラビア語がサポートされていて、アラビア語キーマップがある場合は、 -アラビア語モードで起動します ('arabic' がオンになります)。 -右横書きのファイルを編集できます。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-b -バイナリモード。 -バイナリファイルを編集ためのオプションがいくつか設定されます。 -.TP -\-C -互換モード。'compatible' オプションがオンになります。 - .vimrc ファイルの有無にかかわらず、 -.B Vim -の動作が Vi 互換になります。 -.TP -\-d -diff モードで起動します。 -二つか三つの四つのファイルを引数に指定してください。 -指定されたファイルが開かれ、それらのファイルの差分が表示されます。 -vimdiff(1) と同様の動作です。 -.TP -\-d {device} -{device} を端末として開きます。 -Amiga でのみ使います。 -例: -"\-d con:20/30/600/150". -.TP -\-D -デバッグ。スクリプトの最初のコマンドが実行されるところからデバッグモードを開 -始します。 -.TP -\-e -Ex モードで起動します。 -実行ファイルの名前が "ex" の場合と同じです。 -.TP -\-E -改良版 Ex モードで起動します。 -実行ファイルの名前が "exim" の場合と同じです。 -.TP -\-f -フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 -Amiga の場合は、新しいウィンドウで再起動しなくなります。 -メールソフトなどから -.B Vim -を起動して、編集が終わるまで待機したいような場合に使ってください。 -Amiga では、":sh" と "!" コマンドは機能しなくなります。 -.TP -\-\-nofork -フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 -.TP -\-F -ペルシア語がサポートされていて、ペルシア語キーマップがある場合は、 -ペルシア語モードで起動します ('fkmap' と 'rightleft' がオンになります)。 -右横書きのファイルを編集できます。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-g -GUI がサポートされている場合は、GUI で起動します。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-h -コマンドライン引数やオプションのヘルプを表示して終了します。 -.TP -\-H -ヘブライ語がサポートされていて、ヘブライ語キーマップがある場合は、 -ヘブライ語モードで起動します ('hkmap' と 'rightleft' がオンになります)。 -右横書きのファイルを編集できます。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-i {viminfo} -viminfo ファイルを使う設定になっている場合は、初期設定の "~/.viminfo" の代わ -りに、指定されたファイルを設定します。 -"NONE" を指定すると、.viminfo ファイルを使わないように設定できます。 -.TP -\-L -\-r と同じです。 -.TP -\-l -lisp モード。 -オプションの 'lisp' と 'showmatch' がオンになります。 -.TP -\-m -ファイルの変更を不可能にします。 -オプション 'write' がオフになります。 -バッファを変更することはできますが、ファイルを保存することはできません。 -.TP -\-M -変更を不可能にします。オプションの 'modifiable' と 'write' がオフになり、 -ファイルの変更と保存ができなくなります。 -Note: それらのオプションを設定すれば変更できるようになります。 -.TP -\-N -非互換モード。'compatible' オプションがオフになります。 - .vimrc ファイルの有無にかかわらず、 -.B Vim -の改良された機能が有効になります。Vi との互換性が少し失われます。 -.TP -\-n -スワップファイルを使用しません。 -クラッシュしてもリカバリできなくなります。 -フロッピーディスクのような非常に低速なメディアのファイルを読み書きするときに -便利です。 -":set uc=0" と設定しても同じです。 -戻すには ":set uc=200" と設定してください。 -.TP -\-nb -NetBeans と接続し、エディタサーバーになります。 -詳しくはヘルプを参照してください。 -.TP -\-o[N] -N 個のウィンドウを水平分割で開きます。 -N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 -.TP -\-O[N] -N 個のウィンドウを垂直分割で開きます。 -N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 -.TP -\-p[N] -N 個のタブページを開きます。 -N を省略した場合は、引数のファイルを個別のタブページで開きます。 -.TP -\-R -読み込み専用モード。 -オプション 'readonly' がオンになります。 -バッファを変更することはできますが、間違ってファイルを上書きしてしまうのを防 -ぐことができます。 -ファイルを保存したい場合は、":w!" のように、Ex コマンドに感嘆符を付けてくだ -さい。 -\-R オプションは \-n オプションの効果も含んでいます (下記参照)。 -オプション 'readonly' は ":set noro" でオフにできます。 -詳しくは ":help 'readonly'" を参照してください。 -.TP -\-r -スワップファイルの一覧を表示します。リカバリに関する情報も表示されます。 -.TP -\-r {file} -リカバリモード。 -スワップファイルを使って、クラッシュした編集セッションを復活させます。 -スワップファイルは、ファイル名に ".swp" を加えた名前のファイルです。 -詳しくは ":help recovery" を参照してください。 -.TP -\-s -サイレントモード。"ex" という名前で起動するか、"\-e" オプションの後で -"\-s" オプションが指定された場合のみ。 -.TP -\-s {scriptin} -{scriptin} をスクリプトファイルとして読み込まれます。 -ファイル中の文字列は、手で入力したときと同じように処理されます。 -これは ":source! {scriptin}" と同じ動作です。 -エディタが終了する前にファイルの終わりまで読み込んだ場合、 -それ以降はキーボードから入力を読み込みます。 -.TP -\-T {terminal} -端末の名前を指定します。 -端末が自動的に認識されない場合に使ってください。 -Vim が組み込みでサポートしている名前か、 -termcap または terminfo ファイルで定義されている名前を指定してください。 -.TP -\-u {vimrc} -{vimrc} ファイルを使って初期化します。 -他の初期化処理はスキップされます。 -特殊なファイルを編集する場合などに使ってください。 -すべての初期化をスキップするには "NONE" を指定してください。 -詳しくは ":help initialization" を参照してください。 -.TP -\-U {gvimrc} -{gvimrc} ファイルを使って GUI を初期化します。 -他の GUI の初期化はスキップされます。 -すべての GUI の初期化をスキップするには "NONE" を指定してください。 -詳しくは ":help gui\-init" を参照してください。 -.TP -\-V[N] -冗長モード。スクリプトファイルを実行したり viminfo ファイルを読み書きするた -びにメッセージを表示します。N に指定した数値が 'verbose' に設定されます。 -省略した場合は 10 になります。 -.TP -\-v -Vi モードで起動します。 -実行ファイルの名前が "vi" の場合と同じです。 -実行ファイルの名前が "ex" の場合だけ効果があります。 -.TP -\-w {scriptout} -入力した文字を {scriptout} に記録します。 -"vim \-s" や "source!" で実行するためのスクリプトファイルを作成するのに便利 -です。 -{scriptout} ファイルがすでに存在した場合は追加保存されます。 -.TP -\-W {scriptout} -\-w と同じですが、ファイルがすでに存在した場合は上書きされます。 -.TP -\-x -ファイルを暗号化して書き込みます。暗号化キーの入力プロンプトが表示されます。 -.TP -\-X -X サーバーと通信しません。端末での起動時間を短くできます。 -しかし、ウィンドウタイトルの変更やクリップボードは使えなくなります。 -.TP -\-y -簡易モードで起動します。 -実行ファイルの名前が "evim" や "eview" の場合と同じです。 -.B Vim -の動作がモードレスエディタ (click-and-type editor) のようになります。 -.TP -\-Z -制限モード。 -実行ファイルの名前が "r" で始まっている場合と同じです。 -.TP -\-\- -オプション指定の末尾を示す記号です。 -これ以降の引数はすべてファイル名として扱われます。 -ファイル名が '\-' で始まっているファイルを開くときに使ってください。 -.TP -\-\-echo\-wid -GTK GUI のみ: Window ID を標準出力に出力します。 -.TP -\-\-help -ヘルプを表示して終了します。"\-h" と同じです。 -.TP -\-\-literal -引数のファイル名をリテラル文字列として扱います。ワイルドカードを展開しませ -ん。Unix のように、シェルがワイルドカードを展開する場合は機能しません。 -.TP -\-\-noplugin -プラグインをロードしません。\-u NONE はこの動作を含んでいます。 -.TP -\-\-remote -Vim サーバーと通信し、引数に指定されたファイルを Vim サーバーで開きます。 -サーバーが存在しない場合は、エラーメッセージを表示され、起動中の Vim でファ -イルが開かれます。 -.TP -\-\-remote\-expr {expr} -Vim サーバーと通信し、{expr} に与えられた式を Vim サーバーで実行し、結果を標 -準出力に出力します。 -.TP -\-\-remote\-send {keys} -Vim サーバーと通信し、{keys} に与えられたキーを Vim サーバーに送信します。 -.TP -\-\-remote\-silent -\-\-remote と同じですが、サーバーが存在しなくてもエラーメッセージを表示しま -せん。 -.TP -\-\-remote\-wait -\-\-remote と同じですが、ファイルが開かれるのを確認できるまで待機します。 -.TP -\-\-remote\-wait\-silent -\-\-remote\-wait と同じですが、サーバーが存在しなくてもエラーメッセージを表 -示しません。 -.TP -\-\-serverlist -Vim サーバーの一覧を表示します。 -.TP -\-\-servername {name} -サーバーの名前を {name} に設定します。\-\-remote 引数を指定しなかった場合 -は、起動中の Vim の名前として使われるので、後からその名前を使ってサーバー通 -信できます。 -.TP -\-\-socketid {id} -GTK GUI のみ: GtkPlug メカニズムを使って gvim を別のウィンドウの中で実行しま -す。 -.TP -\-\-version -バージョン情報を表示して終了します。 -.SH オンラインヘルプ -ヘルプを開くには、 -.B Vim -の中で ":help" と入力してください。 -":help 調べたい項目" と入力すれば、指定した項目のヘルプが表示されます。 -例: "ZZ" コマンドのヘルプを表示するには ":help ZZ" と入力します。 -<Tab> や CTRL\-D を使って補完することもできます -(":help cmdline\-completion" 参照)。 -ヘルプには、項目から項目へジャンプできるようにタグが埋め込まれています -(ハイパーリンクのようなものです。":help" 参照)。 -すべてのヘルプファイルはこの方法で開くことができます。 -例: ":help syntax.txt"。 -.SH ファイル -.TP 15 -/usr/local/lib/vim/doc/*.txt -.B Vim -のヘルプファイル。 -ファイルの一覧は ":help doc\-file\-list" に記載されています。 -.TP -/usr/local/lib/vim/doc/tags -ヘルプを検索するための tags ファイル。 -.TP -/usr/local/lib/vim/syntax/syntax.vim -システムの構文定義初期化ファイル。 -.TP -/usr/local/lib/vim/syntax/*.vim -いろいろな言語用の構文定義ファイル。 -.TP -/usr/local/lib/vim/vimrc -システムの -.B Vim -初期化ファイル。 -.TP -~/.vimrc -ユーザーの -.B Vim -初期化ファイル。 -.TP -/usr/local/lib/vim/gvimrc -システムの gvim 初期化ファイル。 -.TP -~/.gvimrc -ユーザーの gvim 初期化ファイル。 -.TP -/usr/local/lib/vim/optwin.vim -":options" コマンドで使われるファイル。オプションを表示したり設定したりでき -ます。 -.TP -/usr/local/lib/vim/menu.vim -システムのメニュー初期化ファイル。gvim で使います。 -.TP -/usr/local/lib/vim/bugreport.vim -バグレポートを生成するスクリプト。":help bugs" 参照。 -.TP -/usr/local/lib/vim/filetype.vim -ファイル名からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 -.TP -/usr/local/lib/vim/scripts.vim -ファイルの内容からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 -.TP -/usr/local/lib/vim/print/*.ps -PostScript 印刷に使われるファイル。 -.PP -最新の情報は VIM のホームページを参照してください: -.br -<URL:http://www.vim.org/> -.SH 関連項目 -vimtutor(1) -.SH 著者 -.B Vim -のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 -":help credits" を参照してください。 -.br -.B Vim -は Stevie を基にしています。Stevie は Tim Thompson、Tony Andrews、 -G.R. (Fred) Walter によって開発されました。 -ただし、オリジナルのコードはもうほとんど残っていません。 -.SH バグ -既知のバグは ":help todo" に記載されています。 -.PP -Vi の動作を忠実に再現した結果、多くの人がバグだと思うような機能もいくつかあ -ります。 -"この動作は Vi と違う" からバグだと思った場合は、vi_diff.txtを確認してみてく -ださい (ファイルを開くか、Vim から ":help vi_diff.txt" と入力)。 -オプションの 'compatible' と 'cpoptions' も確認してください。 diff --git a/doc/vimdiff-ja.UTF-8.1 b/doc/vimdiff-ja.UTF-8.1 deleted file mode 100644 index c9376efe3..000000000 --- a/doc/vimdiff-ja.UTF-8.1 +++ /dev/null @@ -1,44 +0,0 @@ -.TH VIMDIFF 1 "2001 March 30" -.SH 名前 -vimdiff \- 二つか三つの四つファイルを Vim で開いて、その差分を表示する -.SH 書式 -.br -.B vimdiff -[options] file1 file2 [file3 [file4]] -.PP -.B gvimdiff -.SH 説明 -.B Vimdiff -は、二つ (か三つか四つ) のファイルを -.B Vim -で開きます。 -ファイルは個別のウィンドウで開かれ、差分が強調表示されます。 -同じファイルの別のバージョン間で、変更を確認したり、変更を移動したりするのが -簡単になります。 -.PP -Vim についての詳細は vim(1) を参照してください。 -.PP -.B gvimdiff -という名前で起動された場合は GUI で起動します。 -.PP -差分を強調表示するために、 -それぞれのウィンドウの 'diff' オプションがオンに設定されます。 -.br -テキストを見やすくするために、オプションの 'wrap' と 'scrollbind' もオンに設 -定されます。 -.br - 'foldmethod' オプションは "diff" に設定され、変更されていない行は折り畳まれ -ます。 -折り畳みの確認と開閉が簡単にできるように、'foldcolumn'は 2 に設定されます。 -.SH オプション -行を並べて表示するために、"\-O" 引数を使ったときのように、ウィンドウは垂直分 -割されます。 -ウィンドウを水平分割したい場合は "\-o" 引数を使ってください。 -.PP -その他の引数については vim(1) を参照してください。 -.SH 関連項目 -vim(1) -.SH 著者 -.B Vim -のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 -":help credits" を参照してください。 diff --git a/doc/vimtutor-ja.UTF-8.1 b/doc/vimtutor-ja.UTF-8.1 deleted file mode 100644 index 29b9b48f2..000000000 --- a/doc/vimtutor-ja.UTF-8.1 +++ /dev/null @@ -1,45 +0,0 @@ -.TH VIMTUTOR 1 "2001 April 2" -.SH 名前 -vimtutor \- Vim チュートリアル -.SH 書式 -.br -.B vimtutor [\-g] [language] -.SH 説明 -.B Vim -のチュートリアルを起動します。 -演習ファイルのコピーを使って実施するので、オリジナルの演習ファイルを壊してし -まう心配はありません。 -.PP -.B Vim -を初めて学ぶ人向けのチュートリアルです。 -.PP -引数に \-g を指定すると GUI 版の vim が利用可能であれば vim ではなく gvim を -使って vimtutor が開始します。gvim が見つからないときは Vim が使用されます。 -.PP -[language] 引数は "ja" や "es" などの二文字の言語名です。 -[language] 引数を省略した場合はロケールの言語が使われます。 -翻訳された演習ファイルがある場合は、そのファイルが使われます。 -ない場合は英語のファイルが使われます。 -.PP -.B Vim -は Vi 互換モードで起動されます。 -.SH ファイル -.TP 15 -/usr/local/lib/vim/tutor/tutor[.language] -.B Vimtutor -の演習ファイル。 -.TP 15 -/usr/local/lib/vim/tutor/tutor.vim -演習ファイルをコピーするための Vim スクリプト。 -.SH 著者 -.B Vimtutor -は、Colorado State University の Charles Smith のアイデアを基に、 -Colorado School of Mines の Michael C. Pierce と Robert K. Ware の両名 -によって Vi 向けに作成されたものを基にしています。 -E-mail: bware@mines.colorado.edu. -.br -.B Vim -に合わせて Bram Moolenaar が変更を加えました。 -翻訳者の名前は演習ファイルを参照してください。 -.SH 関連項目 -vim(1) diff --git a/doc/visual.jax b/doc/visual.jax deleted file mode 100644 index 2b8383620..000000000 --- a/doc/visual.jax +++ /dev/null @@ -1,493 +0,0 @@ -*visual.txt* For Vim バージョン 7.3. Last change: 2010 Feb 17 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -ビジュアルモード *Visual* *Visual-mode* *visual-mode* - -ビジュアルモードは利用者にとってテキストの部分を選択する柔軟で簡単な方法であ -る。矩形範囲のテキスト(ブロック)を選択する唯一の方法でもある。 - -ユーザーマニュアルの|04.4|で簡単に説明されている。 - -1. ビジュアルモードを使う |visual-use| -2. ビジュアルモードの開始と終了 |visual-start| -3. ビジュアル領域の変更 |visual-change| -4. ビジュアル領域での操作 |visual-operators| -5. 矩形範囲の操作 |blockwise-operators| -6. 繰り返し |visual-repeat| -7. 使用例 |visual-examples| -8. 選択モード |Select-mode| - -{Vi にはビジュアルモードは無く、"visual"という名前はExモードとは区別するため -に、ノーマルモードを指して使われている} -{コンパイル時に|+visual|が無効にされていると使えません} - -============================================================================== -1. ビジュアルモードを使う *visual-use* - -ビジュアルモードを使うには3つの部分から構成される: -1. 選択したいテキストの開始位置を"v"、"V"またはCTRL-Vでマークする。 - カーソルの下の文字が開始位置として使用される。 -2. 選択したいテキストの終了位置に移動する。 - ビジュアルモードの開始位置からカーソルの下の文字を含むテキストが強調され - る。 -3. 操作キー(オペレータ)を押す。 - 強調された文字が操作対象になる。 - -ビジュアルモードでの強調表示の仕方を設定するのに、'highlight'オプションを使用 -することができる。 -文字のない場所を選択するには'virtualedit'を設定する。 - -強調されたテキストにはカーソルの下の文字も含まれる。 -けれども、'selection'オプションが"exclusive"に設定されていて、カーソルが -Visualエリアの後にあるとき、カーソルの下の文字は含まれない。 - -"v"では開始位置より前と、終了位置より後のテキストは強調されない。しかし全ての -大文字とアルファベット以外のキーによる操作は、"~"と"U"を除いて、表示に関係なく -行単位で働く。下記の操作一覧を参照。 - - *visual-block* -CTRL-V(矩形ビジュアルモード)は開始位置からカーソルの位置まで、テキストを矩形に -強調する。しかし、幾つかの操作(下記のリストを参照)はそれとは関係無く行単位で適 -用される。「変更」と「置き換え」の操作は強調されたテキストを削除し、選択範囲の -左上より挿入を開始する。 - -============================================================================== -2. ビジュアルモードの開始と終了 *visual-start* - - *v* *characterwise-visual* -v 文字単位のビジュアルモードを開始する。 - - *V* *linewise-visual* -V 行単位のビジュアルモードを開始する。 - - *CTRL-V* *blockwise-visual* -CTRL-V 矩形ビジュアルモードを開始する。Note: ウィンドウズでは - CTRL-Vはテキストの貼り付けにマップされることがあり、そ - の際にはビジュアルモードを開始できない。 - |CTRL-V-alternative|を参照。 - -ビジュアルモードの最中に<Esc>を使用したり、マウスの右ボタンをクリックしたり、 -または他のバッファに移動するコマンドを使用した場合には、強調は停止しテキストに -は何の操作も行なわれない。文字単位のビジュアルモード中に"v"を叩いた時や、矩形 -ビジュアルモード時の"CTRL-V"、行単位のビジュアルモードでの"V"も同様である。 -CTRL-Zを押すと強調は停止し、エディタが一時停止するか新しいシェルが開始される -|CTRL-Z|。 - - タイプ後の新モード: *v_v* *v_CTRL-V* *v_V* -旧モード "v" "CTRL-V" "V" ~ - -ノーマル ビジュアル 矩形ビジュアル 行ビジュアル -ビジュアル ノーマル 矩形ビジュアル 行ビジュアル -矩形ビジュアル ビジュアル ノーマル 行ビジュアル -行ビジュアル ビジュアル 矩形ビジュアル ノーマル - - *gv* *v_gv* *reselect-Visual* -gv 最後に使用したのと同じ範囲のビジュアルモードを開始す - る。ビジュアルモードで使用すると、現在の選択領域と以前 - のものとが交換される。 - ビジュアルモードで"p"や"P"を実行した後にこれを使うと、 - プットしたテキストが選択される。 - - *<LeftMouse>* -<LeftMouse> 現在のカーソル位置を設定する。ビジュアルモードが活動中 - の場合は停止する。オプション'mouse'が'n'もしくは'a'を - 含むときだけ働く。指定した位置がスクリーンの下端から - 'so'行以内の時にはテキストがスクロールアップする。指定 - した位置がスクリーンの上端から'so'行以内の時にはテキス - トがスクロールダウンする。 - - *<RightMouse>* -<RightMouse> ビジュアルモードが活動していないのならば開始する。カー - ソルの位置からクリックした位置までのテキストが強調され - る。ビジュアルモードが既に活動しているならば、開始位置 - か終了位置のどちらか近いほうがクリックした位置になる。 - オプション'mouse'が'n'もしくは'a'を含むときだけ働く。 - - Note: 'mousemodel'が"popup"の時には<RightMouse>の代わ - りに<S-LeftMouse>を使用する。 - - *<LeftRelease>* -<LeftRelease> <LeftMouse>と同じ位置でなければ、これは<LeftMouse>のよ - うに働く。古いxtermでは実行されているディスプレイ(環境 - 変数DISPLAYもしくは-display引数による)へのアクセスが無 - い限り、xterm上ではボタンが離されるまで選択領域を見る - ことはできない。'mouse'オプションが'n'もしくは'a'を含 - むときだけ働く。 - -ビジュアルモードが活動していない時に"v"、"V"もしくはCTRL-Vが数字(カウント)の後 -に使用されると、以前の強調領域の大きさが開始位置から使用される。その時カーソル -は強調領域の終了位置へ移動し通常の操作を行なうことができる。領域の形式(文字、 -行、矩形)は過去のものが使用される。 -- 行ビジュアルモード: 行数がカウント倍される。 -- 矩形ビジュアルモード; 行数とカラム数がカウント倍される。 -- 1行内の通常ビジュアルモード: 文字数がカウント倍される。 -- 複数行にまたがる通常ビジュアルモード: 行数がカウント倍され、最終行だけは前回 - の強調領域の最終行と同じ文字数が使用される。 -テキストの開始位置はカーソルの位置となる。強調テキストを拡張するための最後のコ -マンドとして"$"コマンドが使用された場合、領域は最長の行の最右端のカラムまで拡 -張される。 - -前回の時と全く同じ領域を強調したいときには、"gv"を使用できる |gv| |v_gv|。 - - *v_<Esc>* -<Esc> ビジュアルモード: ビジュアルモードを停止する。 - - *v_CTRL-C* -CTRL-C ビジュアルモード: ビジュアルモードを停止する。挿入モー - ドがぶら下がっている時には(モードメッセージが"-- - (insert) VISUAL --"となる)、そちらも終了する。 - -============================================================================== -3. ビジュアル領域の変更 *visual-change* - - *v_o* -o 強調されたテキストのもう一方の端へ移動する: 現在のカー - ソルの位置が強調されたテキストの開始地点になり、カーソ - ルは強調されたテキストのもう一方の端に移動する。強調さ - れた領域は同じままに保たれる。 - - *v_O* -O 強調されたテキストのもう一方の端へ移動する: これは"o" - に近い動作だが、ビジュアル矩形モードではカーソルが同じ - 行内のもう一方のコーナーに移動する。移動した先のキャラ - クタが画面上で1つ以上の文字幅を占有している場合(例えば - <Tab>文字)、強調される範囲は変更・拡張される。 - - *v_$* -矩形(ブロック)選択モード時に"$"コマンドを使用すると、選択されるテキストの右終 -端は選択されているラインのうち一番長いものによって決定される。この状態は水平方 -向への移動コマンドを使うことで終了する。 - -ブロックの終端へ移動するために色々なコマンドを使うことができるが、Exコマンド、 -変更を加えるコマンド、もしくはファイルを放棄するコマンドは使用できない。次の文 -字で開始するコマンド".", "&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I, -CTRL-O を使用するとブザー音が発生し、ビジュアルモードが継続される。 - -同じバッファを表示している別のウインドウに切り替えるとき、そのウインドウのカー -ソル位置はVisual選択に合わせて調整されます。これは特にVisual選択の開始位置や終 -了位置を確認するのに便利です。選択範囲を変更するのに<RightMouse>が使えます。 -('mousemodel'が"popup"に設定されているときは<S-LeftMouse>)。 - -============================================================================== -4. ビジュアル領域での操作 *visual-operators* - -施すことのできる操作: - ~ 大/小文字の切替 |v_~| - d 削除 |v_d| - c 変更 (4) |v_c| - y ヤンク |v_y| - > 右シフト (4) |v_>| - < 左シフト (4) |v_<| - ! 外部コマンドによるフィルタ (1) |v_!| - = 'equalprg'オプションで指定されたフィルタ (1) |v_=| - gq 'textwidth'の長さによる行の整形 (1) |v_gq| - -使用できるオブジェクト: - aw (空白文字を含む) 1語(訳注:|word|) |v_aw| - iw 1語(訳注:|word|) |v_iw| - aW (空白文字を含む) 1語(訳注:|WORD|) |v_aW| - iW 1語(訳注:|WORD|) |v_iW| - as (空白文字を含む) 1文 |v_as| - is 1文 |v_is| - ap (空白文字を含む) 1段落 |v_ap| - ip 1段落 |v_ip| - ab (丸括弧文字を含む) ()のブロック |v_ab| - ib ()のブロックの中身 |v_ib| - aB (波括弧文字を含む) {}のブロック |v_aB| - iB {}のブロックの中身 |v_iB| - at (タグ自身を含む) <tag> </tag> ブロック |v_at| - it <tag> </tag> ブロックの中身 |v_it| - a< (大小記号文字を含む) <>のブロック |v_a<| - i< <>のブロックの中身 |v_i<| - a[ (各カッコ文字を含む) []のブロック |v_a[| - i] []のブロックの中身 |v_i[| - a" (クォートを含む) ダブルクォート文字列 |v_aquote| - i" ダブルクォート文字列の中身 |v_iquote| - a' (クォートを含む) シングルクォート文字列 |v_a'| - i' シングルクォート文字列の中身 |v_i'| - a` (backtick を含む) backtick 文字列 |v_a`| - i` backtick 文字列の中身 |v_i`| - -加えて続くコマンドが使用可能: - : 強調された行にExコマンドを適用 (1) |v_:| - r 変更 (4) |v_r| - s 変更 |v_s| - C 変更 (2)(4) |v_C| - S 変更 (2) |v_S| - R 変更 (2) |v_R| - x 削除 |v_x| - D 削除 (3) |v_D| - X 削除 (2) |v_X| - Y ヤンク (2) |v_Y| - p 貼り付け |v_p| - J 連結 (1) |v_J| - U 大文字化 |v_U| - u 小文字化 |v_u| - ^] タグ検索 |v_CTRL-]| - I ブロック挿入 |v_b_I| - A ブロック追加 |v_b_A| - -(1): 常に全部の行、|:visual_example|を参照。 -(2): CTRL-Vを使ってないときは全部の行。 -(3): CTRL-Vを使ってないときは全部の行、CTRL-Vを使っているときは行の最後までを - 削除。 -(4): CTRL-Vを使っているときにはブロックにのみ作用。 - -ビジュアルモードでは特別なキー割り当てを行なうために":vmap"コマンドを使うこと -が出来ることに注意。例えば、"/"をビジュアル領域を拡張するのではなくて、選択し -たテキストによる検索を行なわせたい場合には: > - :vmap / y/<C-R>"<CR> -(<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし -'cpoptions'から'B'と'<'のフラグを外しておく必要がある) - -"""コマンドを使用するときにレジスタ名を指定したい場合には、操作キーを入力する -前にタイプする: "v{move-around}"xd"。 - -コマンドの回数を指定したい場合には、操作キーを入力する前にタイプする: -"v{move-around}3>" (行を3単位、右へインデントする)。 - - *{move-around}* -{move-around}は一連の移動コマンドのシーケンス。1つの移動コマンドを意味する -{motion}とは異なるので注意。 - -ビジュアル領域に対して操作を行うもう1つの方法は、パターンにアイテム|/\%V|を含 -めることがある。例えば、ビジュアル領域内のすべての'('を'X'に置換するには: > - - :%s/\%V(/X/g - -============================================================================== -5. 矩形範囲の操作 *blockwise-operators* - -{|+visualextra|機能を無効にしてコンパイルした場合には利用できない} - -注意: 'virtualedit'オプションを設定して、行末を越えた選択や、Tab文字の(表示上 -の)途中での選択ができる。 - -ビジュアル矩形挿入 *v_b_I* -矩形選択中に、I文字列<ESC> を行なうとブロック内の全ての行のブロック先頭にその -文字列が挿入され、行の長さはその分拡張される。選択ブロックの左側のカラムより短 -い行は変更されない。タブは見た目のカラムを保つように分解される。 -|v_b_I_example|を参照。 - -ビジュアル矩形追加 *v_b_A* -矩形選択中に、A文字列<ESC> を行なうとブロック内の全ての行のブロック末尾ににそ -の文字列が挿入される。ブロックの右端が真っ直ぐでない時には、行の長さの違いに -よって異なる動作がある。 - -1. ブロックが <C-v>$ で作成された場合 - このケースでは各行の最後に文字列が追加される。 -2. ブロックが <C-v>{move-around}で作成された場合。 - このケースではブロック内の各行のブロック末尾に文字列が追加され、行長が拡張 - される。さらにブロックの末尾を揃えるために空白文字が挿入される。 -|v_b_A_example|を参照。 -Note: "I"と"A"は変更によって行が拡張されるときに違う動作をする。これはわざとそ -うなっていて、あなたがしたいようにできる。 - -ビジュアル矩形変更 *v_b_c* -矩形選択されたテキストの全てが同じテキスト文字列によって置き換えられる。"c"を -押した時には選択されたテキストが消去された後に挿入モードに入る。テキスト(改行 -を除く)を入力できる。<Esc>を叩くと、選択されていた行全てに同じ文字列が入力され -る。 - -ビジュアル矩形変更(大文字) *v_b_C* -小文字の"c"と同様だが、選択領域が各行の末尾まで拡張される。 - - *v_b_<* -ビジュアル矩形シフト *v_b_>* -ブロックが'shiftwidth'によりシフトされる。ブロックの右端には拠らない。ブロック -の左端がどのポイントから右シフトを適用するかを決定し、'ts'と'et'に従い最適なタ -ブ文字が埋め込まれる(パディング)。ブロックの左端が何処まで左シフトするかを決定 -する。 -|v_b_>_example|を参照。 -|v_b_<_example|を参照。 - -ビジュアル矩形置換 *v_b_r* -強調された領域の全ての画面上の文字が同じ文字で置き換えられ、タブ文字は画面上の -レイアウトを保持するために仮想的な空白文字に置き換えられる。 -|v_b_r_example|を参照。 - - -============================================================================== -6. 繰り返し *visual-repeat* - -ビジュアルモードの操作を繰り返して行なう時には、最後の時と同じ量のテキストに対 -して操作が適用されている: -- 行ビジュアルモード: 同じ行数 -- 矩形ビジュアルモード: 同じ行数とカラム数 -- 1行内の通常ビジュアルモード: 同じ文字数 -- 複数行にまたがる通常ビジュアルモード: 同じ行数で、最終行だけは前回の時の最 - 終行と同じ文字数。 -テキストの開始位置は現在の位置となる。最後のコマンドとして強調されたテキストを -拡張するために"$"が使用された場合には、繰り返されるコマンドへは一番長い行の右 -端のカラムが適用される。 - - -============================================================================== -7. 使用例 *visual-examples* - - *:visual_example* -現在":"コマンドは行全体に対して働くだけである。行の一部を選択して、":!date"の -ような何かを行なっても1行全体が置換わってしまう。行の一部だけを置き換えたい場 -合には何かマッピングのようなものを作らなければならないだろう。将来のリリースで -は":"は部分的に動作するようになるだろう。 - -ここに1つ、選択されたテキストを"date"の出力に置き換える例がある: > - :vmap _a <Esc>`>a<CR><Esc>`<i<CR><Esc>!!date<CR>kJJ - -(<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし -'cpoptions'から'B'と'<'のフラグを外しておく必要がある) - -これが何をしているかというと: -<Esc> ビジュアルモードを終了する -`> 選択領域の最後に移動する -a<CR><Esc> 選択領域の直後に改行を挿入する -`< 選択領域の先頭に移動する -i<CR><Esc> 選択領域の直前に改行を挿入する -!!date<CR> 選択されたテキストをdateでフィルタリングする -kJJ 分割した行を連結して1つにする - - *visual-search* -選択したテキストを検索に使用することを可能にするマッピングのアイデアがここにあ -る: > - :vmap X y/<C-R>"<CR> - -(<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし -'cpoptions'から'B'と'<'のフラグを外しておく必要がある) - -特別なキャラクタ('.'や'*'のようなもの)が問題を引き起こすことに注意。 - -矩形ビジュアルモードの例 *blockwise-examples* -以下のテキストを使って、矩形モードのコマンドの使用法と結果を示していく。どの -ケースでも、初めカーソルはテストテキストの最初の行の先頭の'a'の上にあるものと -する。 -以下、modelineの設定は ":ts=8:sw=4:" であることを仮定している。 - -次のように設定しておくと理解の助けになるだろう。 -:set hls -/<TAB> -<TAB>とかかれている場所は本物のタブに読み替える。これが操作を可視化してくれ -る。 - -テストテキストは: - -abcdefghijklmnopqrstuvwxyz -abc defghijklmnopqrstuvwxyz -abcdef ghi jklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz - -1. fo<C-v>3jISTRING<ESC> *v_b_I_example* - -abcdefghijklmnSTRINGopqrstuvwxyz -abc STRING defghijklmnopqrstuvwxyz -abcdef ghi STRING jklmnopqrstuvwxyz -abcdefghijklmnSTRINGopqrstuvwxyz - -2. fo<C-v>3j$ASTRING<ESC> *v_b_A_example* - -abcdefghijklmnopqrstuvwxyzSTRING -abc defghijklmnopqrstuvwxyzSTRING -abcdef ghi jklmnopqrstuvwxyzSTRING -abcdefghijklmnopqrstuvwxyzSTRING - -3. fo<C-v>3j3l<.. *v_b_<_example* - -abcdefghijklmnopqrstuvwxyz -abc defghijklmnopqrstuvwxyz -abcdef ghi jklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz - -4. fo<C-v>3j>.. *v_b_>_example* - -abcdefghijklmn opqrstuvwxyz -abc defghijklmnopqrstuvwxyz -abcdef ghi jklmnopqrstuvwxyz -abcdefghijklmn opqrstuvwxyz - -5. fo<C-v>5l3jrX *v_b_r_example* - -abcdefghijklmnXXXXXXuvwxyz -abc XXXXXXhijklmnopqrstuvwxyz -abcdef ghi XXXXXX jklmnopqrstuvwxyz -abcdefghijklmnXXXXXXuvwxyz - -============================================================================== -8. 選択モード *Select* *Select-mode* - -選択モードはビジュアルモードに似ているように見えるが、受け付けるコマンドが少し -異なる。これはMicrosoft Windowsの選択モードに似ている。オプション'showmode'が -設定されている時には、"-- SELECT --"が最下の行に表示される。 - -選択モードに入るには: -- 'selectmode'が"mouse"を含んだ状態で、マウスを使って領域を選択する。 - 'mouse'が現在のモードのフラグを含んでなければならない。 -- 'selectmode'が"key"を含んだ状態で、シフトキーを押しながら表示できない移動コ - マンドを使用する。例えば: <S-Left>や<S-End>。'keymodel'が"startsel"を含んで - いる必要もある。 -- 'selectmode'が"cmd"を含んだ状態で "v", "V" もしくはCTRL-Vを使用する。 -- ノーマルモードで "gh", "gH" もしくは "g_CTRL-H" コマンドを使用する。 -- ビジュアルモードでCTRL-Gを押す。 *v_CTRL-G* - -選択モードのコマンド: -- 表示可能な文字、及び<NL>と<CR>は選択領域を削除し、Vimは入力モードに移行す - る。タイプした文字は挿入される。 -- シフトキーを押しながらの表示不可能な移動コマンド、は選択領域を拡張する。 - 'keymodel'は"startsel"を含まねばならない。 -- シフトキーを押さずに表示不可能な移動コマンドを使用すると、選択モードを終了す - る。'keymodel'は"stopsel"を含まねばならない。 -- ESCは選択モードを終了する。 -- CTRL-Oでビジュアルモードに切り替え1つだけコマンドを実行する。 *v_CTRL-O* -- CTRL-Gでビジュアルモードに切り替える。 - -それ以外では、入力された文字はビジュアルモードと同様に扱われる。 - -選択モードで操作が行なわれると、行選択の時には、選択された行が操作対象になる -が、文字選択の時のように扱われる。例えば、行全体を削除した時には、後でその内容 -を行の中間に貼り付けることが出来る。 - - -選択モード時のマッピングとメニュー *Select-mode-mapping* - -コマンド|:vmap|や|:vmenu|で定義したマッピングとメニューはビジュアルモードと選 -択モードの両方で働く。選択モードでは、それらのマッピングやメニューが実行される -直前に自動的にビジュアルモードに切り替わるので、ビジュアルモードと同じ動作が行 -われる。ビジュアルモードと選択モードで別々にマッピングを定義するときは|:xmap| -や|:smap|を使うこと。 - -ユーザーは印字可能な文字を押すと選択された領域が置換されることを期待している。 -そのため、選択モードで印字可能な文字にマップするのは避けること。または |:map| -と|:vmap|のあとで |:sunmap| をして選択モードに対するマップを削除すること。 - -マッピング及びメニューが終了した後には、選択領域が削除されるか、他のバッファに -切り替わるか、ウィンドウのレイアウトが変更されない限り、選択領域が再び有効にな -り選択モードになる。 - -文字が入力されたとき、選択領域が削除され挿入モードにはいると挿入モードのマッピ -ングが適用されます。選択モードで入力された文字に挿入モードのマッピングが適用さ -れると言うのはおそらく混乱を招きます。そのうえ言語マッピングも適用されます。 - - *gV* *v_gV* -gV 選択モードのマッピング及びメニューが終了したあとでビ - ジュアル領域が再度自動的に選択されるのを抑制する。マッ - ピングやメニューの終わる直前にこれを使用する。少なくと - もセレクションのあらゆる操作の後に行なわれるべきであ - る。 - - *gh* -gh 文字選択モードを開始する。これは"v"に似ているが、ビ - ジュアルモードの代わりに選択モードを開始する。 - 覚え方: "get highlighted" - - *gH* -gH 行選択モードを開始する。これは"V"に似ているが、 - ビジュアルモードの代わりに選択モードを開始する。 - 覚え方: "get Highlighted". - - *g_CTRL-H* -g CTRL-H 矩形選択モードを開始する。これはCTRL-Vに似ているが、ビ - ジュアルモードの代わりに選択モードを開始する。 - 覚え方: "get Highlighted". - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/windows.jax b/doc/windows.jax deleted file mode 100644 index c2477a8c5..000000000 --- a/doc/windows.jax +++ /dev/null @@ -1,1220 +0,0 @@ -*windows.txt* For Vim バージョン 7.3. Last change: 2010 Aug 15 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -マルチウィンドウ、マルチバッファを使った編集 *windows* *buffers* - -ここではマルチウィンドウやマルチバッファを使用するために追加したコマンドについ -て説明する。さらに、2つ以上のウィンドウを組合せて使用するときに異なる動作をす -るコマンドについての説明もする。 - -基本についてはユーザーマニュアルの7章と8章で説明されている。 -|usr_07.txt| |usr_08.txt|. - -1. はじめに |windows-intro| -2. Vim の起動 |windows-starting| -3. ウィンドウのオープンとクローズ |opening-window| -4. ウィンドウ間のカーソル移動 |window-move-cursor| -5. ウィンドウの移動 |window-moving| -6. ウィンドウのサイズ変更 |window-resize| -7. コマンド引数とバッファリスト |buffer-list| -8. 全てのバッファ/ウィンドウに対してコマンド実行 |list-repeat| -9. カーソル位置のタグ名/ファイル名 |window-tag| -10. プレビューウィンドウ |preview-window| -11. 隠れ(hidden)バッファを使う |buffer-hidden| -12. 特殊なバッファ |special-buffers| - - -{Vi にはこれらのコマンドはない} -{コンパイル時に|+windows|機能が無効にされた場合は複数のウィンドウを使うことはで -きない} -{コンパイル時に|+vertsplit|機能が無効にされた場合は垂直分割ウィンドウを使うこと -はできない} - - -============================================================================== -1. はじめに *windows-intro* *window* - -要約: - バッファとはメモリに保持しているファイルの内容である。 - ウィンドウとはバッファの表示領域である。 - タブページとはウィンドウを集めたものである。 - -ウィンドウはバッファの表示領域である。 1つのバッファに対して複数のウィンドウを -開くことができるし、異なる複数のバッファに対して複数のウィンドウを開くこともで -きる。 - -バッファは編集時にメモリ上にロードされたファイルのことを言う。 -オリジナルのファイルはバッファ内容をそのファイルに上書きするまで変更されずにいる。 - -バッファは以下の3つの状態のうちのどれか1つの状態にある。 - - *active-buffer* -アクティブ: バッファ内容はウィンドウに表示されている。このバッファに対応する - ファイルが存在する場合、ファイルがバッファに読み込まれている。 - バッファはそれ以降編集されていて、ファイルと異なっているかもしれ - ない。 - *hidden-buffer* -隠れ(hidden): バッファ内容はウィンドウに表示されていない。このバッファに対応す - るファイルが存在する場合、ファイルはバッファに読み込まれている。 - 見ることができないが、それ以外はアクティブなバッファと同じ。 - *inactive-buffer* -非アクティブ: バッファ内容はウィンドウに表示されていない。バッファには何もロー - ドされていない。ファイルが一度でもメモリにロードされていたなら、 - そのバッファのオプションは記憶されている。|viminfo|ファイルにより - マークを含んでいるかもしれない。 - -状態表: - -状態 ウィンドウ メモリ上に ":buffers" ~ - 表示 ロード 表示 ~ -アクティブ ○ ○ 'a' -隠れ(hidden) × ○ 'h' -非アクティブ × × ' ' - - -注意: ノーマルコマンドが利用できない、あるいは使い勝手が悪い状況のために、全て -のCTRL-Wコマンドは|:wincmd|によっても実行できる。 - -Vimではウィンドウを複数に分割することができる。タブページ|tab-page|というもの -もあり、タブページは複数のウィンドウを保持することができる。 - -============================================================================== -2. Vim の起動 *windows-starting* - -デフォルトでは、Vim は Vi のように1つのウィンドウで起動する。 - -Vim のオプション引数に "-o" と "-O" を使うと、引数で指定した各ファイルのウィン -ドウがオープンする。オプション"-o" はウィンドウを水平分割し、"-O" オプションは -ウィンドウを垂直分割する。"-o" と "-O" の両方が与えられた場合は、後に現れた方 -が分割方向を決めるのに使われる。例えば、これは3つのウィンドウが垂直分割して -開かれる: > - vim -o file1 file2 file3 - -"-oN" (N は10進数)の場合は、N個のウィンドウが水平に分割して開く。ウィンドウの数 -(N)より引数で指定したファイルの数が多い場合、N個のウィンドウが開き、残りのファ -イルはウィンドウに表示されない。逆にウィンドウの数より引数で指定したファイルの -数が少ない場合、残りのウィンドウは空のバッファを表示する。同様に "-ON" はN個の -ウィンドウを垂直分割して開く。制限も同じである。 - -引数にたくさんのファイル名を指定した場合、ウィンドウは非常に小さくなる。もしか -したら、作業のできる環境にするために 'winheight' または 'winwidth' オプション -を設定したくなるかもしれない。 - -Buf/Win Enter/Leave 時のオートコマンド|autocommand|は、新しいウィンドウを開い -たりファイルを読み込んだりしても実行されない。そのオートコマンドはバッファ/ -ウィンドウへ入った時にのみ実行される。 - - *status-line* -ステータス行はウィンドウの分割に使われる。 'laststatus' オプションは一番下の -ウィンドウにステータス行を表示するかを設定する: - 'laststatus' = 0 常にステータス行を表示しない。 - 'laststatus' = 1 ウィンドウが2つ以上ある場合に表示する。 - 'laststatus' = 2 常にステータス行を表示する。 - -ステータス行の内容は 'statusline' オプションで変更できる。 -このオプションはウィンドウについてローカルにすることもでき、そうすると各ウィン -ドウごとに異なるステータスラインを表示することができる。 - -通常、ステータス行は反転表示される。これは 'highlight' オプションの 's' キャラ -クタで変更できる。例えば、"sb" は太文字に設定する。ステータス行にハイライトを -使用しない場合("sn")、'^'がカレントウィンドウに使われ、'='が他のウィンドウに使 -われる。マウスがサポートされていて 'mouse' オプションでマウスが使用可能になっ -ている場合は、ステータス行をドラッグすることでウィンドウのリサイズを行なえる。 - -注: ステータス行が反転表示されるはずが反転表示されなければ、'highlight' オプ -ションに 'si' が含まれているか確認すること。version 3.0 では、'si' がステータ -ス行の反転表示を意味していた。今は反転表示には 'sr' を使用し、'si' はイタリッ -ク表示を意味している! イタリックを表示できない端末では、ステータス行は反転表 -示となる。イタリック表示のための termcap コードがある場合にのみ、この問題が見 -られる。 - -============================================================================== -3. ウィンドウのオープンとクローズ *opening-window* - -CTRL-W s *CTRL-W_s* -CTRL-W S *CTRL-W_S* -CTRL-W CTRL-S *CTRL-W_CTRL-S* -:[N]sp[lit] [++opt] [+cmd] *:sp* *:split* - カレントウィンドウを2つに分割する。その結果、2つの表示領域に同 - じファイルが表示されるようになる。新しいウィンドウの高さはNに - なる(デフォルトの高さはカレントウィンドウの高さの半分)。新しい - ウィンドウの場所を確保するため、カレントウィンドウの高さは低く - なる('equalalways' オプションがセットされていて、かつ - 'eadirection' の値が"hor"でない場合、他のウィンドウの中でカレ - ントウィンドウか新しいウィンドウより大きいものがあれば、その - ウィンドウも小さくなる) - 注: CTRL-S は端末によっては使用できない。また、それ以上の入力 - をブロックしてしまうかもしれない。続けるためにはCTRL-Qを使うこ - と。 - |++opt|と|+cmd| も参照のこと。 - -CTRL-W CTRL-V *CTRL-W_CTRL-V* -CTRL-W v *CTRL-W_v* -:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* - |:split|と同様、ただし垂直分割する。次のすべてに当てはまる場合、 - ウィンドウは水平に広げられる: - 1. 幅が指定されていない。 - 2. 'equalalways' がセットされている。 - 3. 'eadirection' が "ver" でない。 - 4. 他のウィンドウの中でカレントウィンドウか新しいウィンドウよ - り幅が広いものがある。 - 注意:他の局面ではCTRL-QはCTRL-Vと同じだが、ここではそうでな - い。 - -CTRL-W n *CTRL-W_n* -CTRL-W CTRL_N *CTRL-W_CTRL-N* -:[N]new [++opt] [+cmd] *:new* - 新しいウィンドウが作成して空のファイルの編集が始まる。新しい - ウィンドウの高さはNになる(デフォルトの高さはカレントウィンドウ - の高さの半分)。新しいウィンドウの場所を確保するため、カレント - ウィンドウの高さは低くなる。 ('equalalways' オプションがセット - されていてかつ'equalalways'オプションが"hor"でない場合、他の - ウィンドウの高さも低くなる)。|++opt|と |+cmd| も参照のこと。 - 'fileformats' オプションが空でない場合は、与えられた最初の - フォーマットが新しいバッファにも使用される。 - 'fileformats' オプションが空の場合は、カレントバッファの - 'fileformat' が使用される。これは引数|++opt|によって上書きされ - うる。 - オートコマンドはこの順で実行される: - 1. カレントウィンドウに対する WinLeave - 2. 新しいウィンドウに対する WinEnter - 3. カレントバッファに対する BufLeave - 4. 新しいバッファに対する BufEnter - この動作は、はじめに ":split"、次に ":e" コマンドを実行した場 - 合と同じ動作である。 - -:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew* - |:new|と同様だが、垂直分割する。'equalalways'がセットされ、 - 'eadirection'が"ver"でないならば、幅が指定されない限りウィン - ドウは水平に広げられる。 - -:[N]new [++opt] [+cmd] {file} -:[N]sp[lit] [++opt] [+cmd] {file} *:split_f* - 新しいウィンドウを作成し、そのウィンドウでファイル {file} の編 - 集が始まる。 [+cmd] が指定された場合は、ファイルをロードしコマ - ンドを実行する |+cmd|。 - |++opt| も参照のこと。 - 新しいウィンドウの高さはNになる(デフォルトの高さはカレントウィ - ンドウの高さの半分)。新しいウィンドウの場所を確保するため、カ - レントウィンドウの高さは低くなる。('equalalways' オプションが - セットされていれば他のウィンドウも低くなる) - -:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview* - ":split" と同じ。ただし、バッファに対して 'readonly' オプショ - ンがセットされる。 - -:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfind* *splitfind* - ":split" と同じ。ただし、|:find| と同様に 'path' から {file} - を検索する。{file}が見つからなければ、ウィンドウは分割されない。 - -CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^* -CTRL-W ^ ":split #" と同じ。つまり、ウィンドウを2つに分割してもう一方の - ファイルを編集する。カウントが指定された場合は ":split #N" と - 同じ。つまり、ウィンドウを分割してバッファNを編集する。 - -オプション'splitbelow'と'splitright'が新しいウィンドウが現れる場所に影響を及ぼ -すことに注意。 - - *:vert* *:vertical* -:vert[ical] {cmd} - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いれば、垂直分割させる。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - -:lefta[bove] {cmd} *:lefta* *:leftabove* -:abo[veleft] {cmd} *:abo* *:aboveleft* - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いる場合は、垂直分割ならば左側に、水平分割ならば上側にカレント - ウィンドウを出現させる。'splitbelow'と'splitright'を上書きする。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - -:rightb[elow] {cmd} *:rightb* *:rightbelow* -:bel[owright] {cmd} *:bel* *:belowright* - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いる場合は、垂直分割ならば右側に、水平分割ならば下側にカレント - ウィンドウを出現させる。'splitbelow'と'splitright'を上書きする。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - - *:topleft* *E442* -:to[pleft] {cmd} - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いる場合は、最上段に現れ、Vimのウィンドウの中で幅を最大にする。 - 垂直分割のときはウィンドウは最も左側に現れ、Vimウィンドウの中で - 高さを最大にする。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - - *:botright* -:bo[tright] {cmd} - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いる場合は、最下段に現れ、Vimのウィンドウの中で幅を最大にす - る。垂直分割のときはウィンドウは最も右側に現れ、Vimウィンドウ - の中で高さを最大にする。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - -これらのコマンドモディファイヤを組み合わせて、最大高さの垂直分割したウィンドウ -を作ることができる。例: > - :vertical topleft edit tags -ウィンドウを垂直分割し、"tags"ファイルのウィンドウを最大の高さで最も左に開く。 - - -ウィンドウを閉じる ------------------- - -CTRL-W q *CTRL-W_q* -CTRL-W CTRL-Q *CTRL-W_CTRL-Q* -:q[uit] カレントウィンドウを終了する。最後のウィンドウ(ヘルプウィンド - ウを除く)を終了すると Vim が終了する。 'hidden' オプションが - セットされていて、かつ、カレントバッファを表示しているウィンド - ウが 1つしかない場合は、そのバッファは隠れ状態(hidden)となる。 - 'hidden' オプションがセットされていなくて、カレントバッファを - 表示しているウィンドウが1つしかなくて、かつ、そのバッファが編 - 集中の場合は、このコマンドは失敗する。 (注: CTRL-Q は総ての端 - 末で動作しない。) - -:q[uit]! カレントウィンドウを終了する。このウィンドウがバッファを表示し - ている最後のウィンドウの場合、このバッファに対する変更は総て失 - われる。最後のウィンドウ(ヘルプウィンドウを除く)を終了すると - Vim が終了する。たとえ 'hidden' オプションがセットされていたと - しても、バッファ内容は失われる。 - -CTRL-W c *CTRL-W_c* *:clo* *:close* -:clo[se][!] カレントウィンドウを閉じる。'hidden' オプションがセットされて - いる時、または、バッファが変更されていて[!]を使用した時は、( - バッファが他のウィンドウで編集中でなければ)バッファは隠れ状態 - (hidden)になる。 - カレントタブページにウィンドウが1つしかなく、他にタブページが - あるとき、このコマンドを実行するとカレントタブページが閉じる。 - |tab-page| - このコマンドは以下の場合に失敗する: *E444* - - スクリーン上に1つのウィンドウしかない時 - - 'hidden' がセットされていなくて、[!]を使用せず、バッファが変 - 更されていて、かつ、このバッファが他のウィンドウで表示されて - いない場合 - バッファへの変更は保存されず、失われることもないため、このコマ - ンドは「安全な」コマンドである。 - -CTRL-W CTRL-C *CTRL-W_CTRL-C* - CTRL-W CTRL-C はカレントウィンドウを閉じると期待するかもしれな - いが、CTRL-C はコマンドをキャンセルするために期待通りには動作 - しない。 - - *:hide* -:hid[e] カレントウィンドウがスクリーン上の最後のウィンドウでなければ、 - カレントウィンドウを終了する。 (他のウィンドウがバッファを編集 - していなく、かつ 'bufhidden' の値が "unloaded" か"delete" でな - いならば)そのバッファは隠れ状態(hidden)となる。 - そのウィンドウがカレントタブページで最後のウィンドウであるなら - ばタブページも閉じる。|tab-page| - 'hidden' の値はこのコマンドには無関係である。 - バッファへの変更は保存されず、失われることもないため、このコマ - ンドは「安全な」コマンドである。 - -:hid[e] {cmd} {cmd} を実行し、同時に 'hidden' をセットする。{cmd} が実行され - た後に 'hidden' の以前の値が復旧される。 - 例: > - :hide edit Makefile - これはカレントバッファに変更があっても、それを隠しバッファに - し、"Makefile" を編集する。 - -CTRL-W o *CTRL-W_o* *E445* -CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* -:on[ly][!] カレントウィンドウをスクリーン上にある唯一のウィンドウにする。 - 他の総てのウィンドウは閉じられる。 - 'hidden' オプションがセットされていれば、閉じられた総てのバッ - ファは隠れ状態(hidden)となる。 - 'hidden' オプションがセットされておらず、'autowrite' オプショ - ンがセットされている場合は、編集中のバッファは保存される。さも - なければ、編集中のバッファを表示しているウィンドウは閉じられる - ことはない。 ただし[!]が与えられていれば、それらのバッファは隠 - れ状態(hidden)となる。しかし、編集中のバッファは決して削除され - ないので、変更は失われない。 - -============================================================================== -4. ウィンドウ間のカーソル移動 *window-move-cursor* - -CTRL-W <Down> *CTRL-W_<Down>* -CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j* -CTRL-W j カーソルをカレントウィンドウのN個下のウィンドウに移動。 - 候補が複数ある場合は、現在のカーソル位置によって選択される。 - -CTRL-W <Up> *CTRL-W_<Up>* -CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k* -CTRL-W k カーソルをカレントウィンドウのN個上のウィンドウに移動。 - 候補が複数ある場合は、現在のカーソル位置によって選択される。 - -CTRL-W <Left> *CTRL-W_<Left>* -CTRL-W CTRL-H *CTRL-W_CTRL-H* -CTRL-W <BS> *CTRL-W_<BS>* *CTRL-W_h* -CTRL-W h カーソルをカレントウィンドウのN個左のウィンドウに移動。 - 候補が複数ある場合は、現在のカーソル位置によって選択される。 - -CTRL-W <Right> *CTRL-W_<Right>* -CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l* -CTRL-W l カーソルをカレントウィンドウのN個右のウィンドウに移動。 - 候補が複数ある場合は、現在のカーソル位置によって選択される。 - -CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W* -CTRL-W CTRL-W カウント指定なし: カーソルをカレントウィンドウの下/右のウィン - ドウに移動。下/右にウィンドウがなければ、一番上/左のウィンド - ウに移動。カウント指定有り: N番目のウィンドウに移動(ウィンド - ウは左上から右下へと番号が振られる)。ウィンドウの番号を知るに - は |bufwinnr()| と |winnr()| を参照。N がウィンドウの個数より - 大きい場合、最後のウィンドウへ移動する。 - - *CTRL-W_W* -CTRL-W W カウント指定なし: カーソルをカレントウィンドウの上/左のウィン - ドウに移動。上/左にウィンドウがなければ、一番下/右のウィンド - ウに移動。カウント指定有り: N番目のウィンドウに移動 - (CTRL-W w と同様)。 - -CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T* -CTRL-W CTRL-T カーソルを一番左上のウィンドウに移動。 - -CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B* -CTRL-W CTRL-B カーソルを一番右下のウィンドウに移動。 - -CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P* -CTRL-W CTRL-P カーソルを直前の(最後にアクセスしていた)ウィンドウに移動。 - - *CTRL-W_P* *E441* -CTRL-W P プレビューウィンドウに移動。プレビューウィンドウがない場合には - エラーになる。 - {|+quickfix| 機能なしでコンパイルされた場合には使用できない} - -ビジュアルモードがアクティブで移動先のウィンドウがカレントバッファと同じバッ -ファを表示していない場合、ビジュアルモードは終了する。ウィンドウが同じバッファ -を表示している場合、カーソル位置は選択領域が保たれるようにセットされる。 - - *:winc* *:wincmd* -以上のコマンドは ":wincmd" によっても実行することができる: - -:[count]winc[md] {arg} - CTRL-W [count] {arg} を実行するのと同じ。例: > - :wincmd j -< 下のウィンドウに移動する。 - このコマンドは(|CursorHold| 自動コマンドイベントのため)ノー - マルモードが利用できないときやノーマルコマンドが不便なときに有 - 効である。 - count はウィンドウ番号であってもよい。例: > - :exe nr . "wincmd w" -< これは "nr" 番のウィンドウへ移動する。 - -============================================================================== -5. ウィンドウの移動 *window-moving* - -CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443* -CTRL-W CTRL-R ウィンドウ位置を下/右へ回転させる。1番のウィンドウは2番目に、 - 2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。 - カーソルは同じウィンドウにとどまる。 - この移動はカレントウィンドウと同じ段/列の中だけで行われる。 - - *CTRL-W_R* -CTRL-W R ウィンドウ位置を上/左へ回転させる。1番のウィンドウは2番目に、 - 2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。 - カーソルは同じウィンドウにとどまる。 - この移動はカレントウィンドウと同じ段/列の中だけで行われる。 - - -CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X* -CTRL-W CTRL-X カウント指定なし: カレントウィンドウと次(1つ下)のウィンドウを - 入れ替える。次のウィンドウがない(カレントウィンドウが一番下の) - 場合は、前(1つ上)のウィンドウと入れ替える。 - カウント指定有り: カレントウィンドウと上からN番目のウィンドウ - (一番上は1番目)を入れ替える。カーソルは入れ替えた相手のウィン - ドウに移動する。 - 水平分割と垂直分割が混ざっている場合には、カレントウィンドウと - 同じ段/列の中だけで入れ替えが行われる。 - -以下のコマンドはウィンドウのレイアウトを変更するために使える。例えば、2つの垂 -直分割されたウィンドウがある場合、 CTRL-W K はそれらを水平分割に変更する。 -CTRL-W H はその逆を行う。 - - *CTRL-W_K* -CTRL-W K カレントウィンドウを最上段に移動し、幅を最大にする。これは、カレ - ントウィンドウを閉じ、それから "topleft split" で別のウィンド - ウを作るのと同様で、違いは新しいウィンドウにカレントウィンドウ - の内容が表示されるということだけである。 - - *CTRL-W_J* -CTRL-W J カレントウィンドウを最下段に移動し、幅を最大にする。これは、カレ - ントウィンドウを閉じ、それから "botright split" で別のウィンド - ウを作るのと同様で、違いは新しいウィンドウにカレントウィンドウ - の内容が表示されるということだけである。 - - *CTRL-W_H* -CTRL-W H カレントウィンドウを最左列に移動し、高さを最大にする。これは、 - カレントウィンドウを閉じ、それから ":vert topleft split" で別 - のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント - ウィンドウの中身が使われるということだけである。 - {|+vertsplit| 機能なしでコンパイルされた場合は使用できない} - - *CTRL-W_L* -CTRL-W L カレントウィンドウを最右列に移動し、高さを最大にする。これは、 - カレントウィンドウを閉じ、それから ":vert botright split" で別 - のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント - ウィンドウの中身が使われるということだけである。 - {|+vertsplit| 機能なしでコンパイルされた場合は使用できない} - - *CTRL-W_T* -CTRL-W T カレントウィンドウを新しいタブページへ移動する。カレントタブ - ページにウィンドウが1つしかないときは、このコマンドは失敗す - る。カウントが指定されると、その番号のタブページの前に新しいタ - ブページが開く。指定されないときはカレントタブページの後ろに開 - く。 - -============================================================================== -6. ウィンドウのサイズ変更 *window-resize* - - *CTRL-W_=* -CTRL-W = 総てのウィンドウの高さ・幅を(ほとんど)同じにする。ただしカレン - トウィンドウに対しては 'winheight' と 'winwidth' が適用される。 - 'winfixheight'がセットされたウィンドウの高さはそのままにし、 - 'winfixwidth'がセットされたウィンドウの幅はそのままにする。 - -:res[ize] -N *:res* *:resize* *CTRL-W_-* -CTRL-W - カレントウィンドウの高さをN(デフォルトは1)行分低くする。 - |:vertical| の後に置かれたときは、幅を N 桁分減らす。 - -:res[ize] +N *CTRL-W_+* -CTRL-W + カレントウィンドウの高さをN(デフォルトは1)行分高くする。 - |:vertical| の後に置かれたときは、幅を N 桁分増やす。 - -:res[ize] [N] -CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* -CTRL-W _ カレントウィンドウの高さをN行にする(デフォルト: 可能な限り高く - する) - -z{nr}<CR> カレントウィンドウの高さを {nr} にする。 - - *CTRL-W_<* -CTRL-W < カレントウィンドウの幅を N(デフォルトは1)桁分減らす。 - - *CTRL-W_>* -CTRL-W > カレントウィンドウの幅を N(デフォルトは1)桁分増やす。 - -:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar* -CTRL-W | カレントウィンドウの幅を N桁にする(デフォルト:可能な限り広く - する) - -マウスでステータス行を上下にドラッグすることによってもウィンドウのサイズを変更 -できる。垂直セパレータ行を左右にドラッグしても同様。これができるのは、使用して -いる Vim がマウスをサポートしていて 'mouse' オプションでマウスが使えるように設 -定されているときである。 - -'winheight'('wh') オプションはカレントウィンドウの最小の高さを設定する。このオ -プションは他のウィンドウがカレントウィンドウになるたびに使用される。このオプ -ションが '0' に設定されている場合、オプションが無効になる。 'winheight' オプ -ションをかなり大きい値、例えば '9999' に設定すると、カレントウィンドウの高さは -常に可能な限り高くなる。このオプションを適当な値、例えば '10' に設定した場合、 -カレントウィンドウでの編集がやりやすくなる。 - -同様のオプション 'winwidth' ('wiw') がカレントウィンドウの最小幅を設定するのに -使える。 - -'equalalways'('ea') オプションをセットした場合、ウィンドウを分割したり閉じたり -した後は総てのウィンドウは自動的に同じ高さとなる。このオプションをセットしてい -ない場合、ウィンドウを分割するとカレントウィンドウが低くなり他のウィンドウの高 -さは変化しない。ウィンドウを閉じると、閉じたウィンドウの上のウィンドウの下の -ウィンドウが高くなる。 - -オプション'eadirection'は'equalalways'がどの方向に適用されるかを制限する。デ -フォルトの"both"は両方の方向にリサイズする。その値が"ver"のときはウィンドウの -高さだけが等しくされる。垂直分割したウィンドウを手動でリサイズし、この幅を保ち -たいときにこれを使うとよい。同じように、値が"hor"のときはウィンドウの幅だけが -等しくされる。 - -'cmdheight'('ch') オプションはコマンド行の高さを設定する。長いメッセージの表示 -の際の |hit-enter| プロンプトをわずらわしいと感じたら、このオプションを2か3に -設定しなさい。 - -ウィンドウが1つしかない場合、ウィンドウの高さを変更するとコマンド行の高さも変 -化する。 2つ以上ウィンドウがある場合、カレントウィンドウの高さを変更するとその -下のウィンドウの高さも変化する(たまに上のウィンドウの高さが変化することもあ -る)。 - -ウィンドウの最小の高さと幅は 'winminheight' と 'winminwidth' によって設定され -る。これらは固定値で、ウィンドウはこれらより小さくなることはない。 -These are hard values, a window will never become smaller. - -============================================================================== -7. コマンド引数とバッファリスト *buffer-list* - - args list buffer list meaning ~ -1. :[N]argument [N] 11. :[N]buffer [N] N番目の引数/バッファに移動 -2. :[N]next [file ..] 12. :[N]bnext [N] N個先の引数/バッファに移動 -3. :[N]Next [N] 13. :[N]bNext [N] N個前の引数/バッファに移動 -4. :[N]previous [N] 14. :[N]bprevious [N] N個前の引数/バッファに移動 -5. :rewind / :first 15. :brewind / :bfirst 最初の引数/バッファに移動 -6. :last 16. :blast 最後の引数/バッファに移動 -7. :all 17. :ball 総ての引数/バッファを編集 - 18. :unhide 総ての読み込まれたバッファを編集 - 19. :[N]bmod [N] N個先の編集中のバッファへ移動 - - split & args list split & buffer list meaning ~ -21. :[N]sargument [N] 31. :[N]sbuffer [N] split + N番目の引数/バッファに移動 -22. :[N]snext [file ..] 32. :[N]sbnext [N] split + N個先の引数/バッファに移動 -23. :[N]sNext [N] 33. :[N]sbNext [N] split + N個前の引数/バッファに移動 -24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + N個前の引数/バッファに移動 -25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + 最初の引数/バッファに移動 -26. :slast 36. :sblast split + 最後の引数/バッファに移動 -27. :sall 37: :sball 総ての引数/バッファを編集 - 38. :sunhide 総ての読み込まれたバッファを編集 - 39. :[N]sbmod [N] split + N個先の編集中のバッファへ移動 - -40. :args コマンド引数の表示 -41. :buffers バッファの表示 - -[N] の意味はコマンドによって異なる。 - ?2、?3、?4のコマンドにおいては、[N]は前方/後方に移動するバッファ数 - 1、21のコマンドにおいては、[N]は引数番号、デフォルトはカレント引数 - 11、31のコマンドにおいては、[N]はバッファ番号、デフォルトはカレントバッファ - 19、39のコマンドにおいては、[N]はカウント - -注: ":next" は例外である。なぜならこのコマンドは Vi との互換性のためにファイル -名リストを受け付けなければならないからである。 - - -引数リストと複数のウィンドウ ----------------------------- - -引数リストのカレント位置は各ウィンドウ毎に異なっている可能性がある。 ":e file" -コマンドを実行した際には引数リストないのカレント位置は変化しないが、カレント位 -置のファイルを編集していないことを忘れないでほしい。この状態を示すために、ファ -イルメッセージに(もしあるならタイトルにも)「(file (N) of M)」と表示する。ここ -で、"(N)"はファイルリスト中のカレント位置を、"M"はファイルリスト中のファイルの -数を表している。 - -引数リストの総てはバッファリストに追加される。だから、":bnext"のようなバッファ -リストコマンドで引数リストを表示することができる。 - -:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall* -:[N]sal[l][!] [N] - 各引数に対して1つのウィンドウを開き、スクリーンを再構成する。 - 他の総てのウィンドウは閉じられる。カウントが指定された時は、開 - くウィンドウの最大数となる。 - コマンド修飾子|:tab|をつけて実行すると、各引数に対して1つずつ - タブページを開く。'tabpagemax'個より多くの引数が与えられたとき - は、多すぎる引数は最後のタブページの中でウィンドウに分割されて - 開かれる。 - 'hidden' オプションがセットされている場合は、閉じられるウィン - ドウで表示されている総てのバッファは隠れ状態(hidden)となる。 - 'hidden' オプションがセットされておらず 'autowrite' オプション - がセットされている場合は、編集中のバッファは保存される。さもな - ければ、編集中のバッファを表示しているウィンドウは閉じられな - い。ただし[!]が与えられていれば、それらのバッファは隠れ状態 - (hidden)となる。しかし、編集中のバッファは決して削除されないの - で、変更は失われない。 - [N] は開かれるウィンドウの数の最大値。'winheight'(|:vertical| - が前に与えられている場合は'winwidth')もまた開かれるウィンドウ - の数を制限する。 - この時点では Buf/Win Enter/Leave オートコマンドは新しいウィン - ドウに対して実行されない。実際にそのウィンドウに移ったときに実 - 行される。 - -:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument* - ":split | argument [N]" の短縮形: ウィンドウを分割し、N番目の - 引数へ移動する。しかし、N番目の引数がなければ、ウィンドウは分 - 割しない。|++opt| と |+cmd| も参照。 - -:[N]sn[ext][!] [file ..] *:sn* *:snext* - ":split | [N]next" の短縮形: ウィンドウを分割し、N個先の引数へ - 移動する。しかし、N個先の引数がなければ、ウィンドウは分割しな - い。|++opt| と |+cmd| も参照。 - -:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious* -:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext* - ":split | [N]Next" の短縮形: ウィンドウを分割し、N個前の引数へ - 移動する。しかし、N個前の引数がなければ、ウィンドウは分割しな - い。|++opt| と |+cmd| も参照。 - - *:sre* *:srewind* -:sre[wind][!] [++opt] [+cmd] - ":split | rewind" の短縮形: ウィンドウを分割し、最初の引数へ移 - 動する。しかし、引数がなければ、ウィンドウは分割しない。 - |++opt| と |+cmd| も参照。 - - *:sfir* *:sfirst* -:sfir[st] [++opt] [+cmd] - ":srewind" と同じ。 - - *:sla* *:slast* -:sla[st][!] [++opt] [+cmd] - ":split | last" の短縮形: ウィンドウを分割し、最後の引数へ移動 - する。しかし、引数がなければ、ウィンドウは分割しない。 - |++opt| と |+cmd| も参照。 - - *:dr* *:drop* -:dr[op] [++opt] [+cmd] {file} .. - 最初の {file} を編集する。 - - そのファイルがすでにあるウィンドウで開かれていたら、そのウィ - ンドウに移動する。 - - そのファイルがウィンドウで開かれていなければ、カレントウィン - ドウで開く。カレントバッファが破棄されえない(|abandon|)ならば - まずウィンドウが分割される。 - |:next| コマンドと同様に、|argument-list| がセットされる。 - このコマンドの目的は、Vimに別のファイルを開いてほしいプログラ - ム(例:デバッガ)から使われることである。 - コマンド修飾子|:tab|をつけて実行すると、各引数が1つずつタブ - ページで開かれる。最後のウィンドウが空ならそのウィンドウが使わ - れる。 - |++opt| と |+cmd| も参照。 - {GUI 機能つきでコンパイルされたときのみ使用可能} - -============================================================================== -8. 全てのバッファ/ウィンドウに対してコマンド実行 *list-repeat* - *:windo* -:windo[!] {cmd} 各ウィンドウに対して {cmd} を実行する。 - これは次のようにするのと同じ動作をする: > - CTRL-W t - :{cmd} - CTRL-W w - :{cmd} - etc. -< カレントタブページ内でのみ実行される。 - 1つのウィンドウに対してエラーが検出されると、それ以降 - のウィンドウに対しては実行されない。 - 最後のウィンドウ(またはエラーが起こったウィンドウ)が - カレントウィンドウになる。 - {cmd} は '|' を含んで複数のコマンドを連結していてもよ - い。 - {cmd} はウィンドウの開閉、並べ替えをしてはならない。 - {Vi にはない} {|+listcmds| 機能なしでコンパイルされた場 - 合は使用できない} - |:tabdo|, |:argdo|, |:bufdo| も参照。 - - *:bufdo* -:bufdo[!] {cmd} {cmd} をバッファリスト内の各バッファに対して実行。 - これは次のようにするのと同じ動作をする: > - :bfirst - :{cmd} - :bnext - :{cmd} - etc. -< カレントファイルが破棄されえなく(|abandon|)かつ [!]が - 与えられない場合、このコマンドは失敗する。 - 1つのバッファに対してエラーが検出されると、それ以降 - のバッファに対しては実行されない。 - リストされていないバッファはスキップされる。 - 最後のバッファ(またはエラーが起こったバッファ)がカレ - ントウィンドウになる。 - {cmd} は '|' を含んで複数のコマンドを連結していてもよ - い。 - {cmd} はバッファリストにバッファを削除、追加してはなら - ない。 - 注意:このコマンドを実行している間、Syntax 自動コマンド - イベントが 'eventignore' に追加され、無効化される。 - これは各バッファの編集を大幅にスピードアップさせる。 - {Vi にはない} {|+listcmds| 機能なしでコンパイルされた - 場合は使用できない} - |:tabdo|, |:argdo|, |:bufdo| も参照。 - -例: > - - :windo set nolist nofoldcolumn | normal zn - -これは 'list' オプションをリセットし全てのウィンドウの折り畳みを無効化する。 - > - :bufdo set fileencoding= | update - -これは各バッファの 'fileencoding' をリセットし、バッファに変更があったらそれを -保存する。結果として、すべてのバッファが同じ 'encoding' のエンコーディングを使 -用する(変換がうまくいったとすれば)。 - -============================================================================== -9. カーソル位置のタグ名/ファイル名 *window-tag* - - *:sta* *:stag* -:sta[g][!] [tagname] - ":tag[!] [tagname]" を実行し見つかったタグの表示のためにウィン - ドウを分割する。 |:tag| を参照。 - -CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* -CTRL-W CTRL-] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ - として使用し、新しくできた上側のウィンドウでタグに移動する。新 - しいウィンドウの高さはNとなる。 - - *CTRL-W_g]* -CTRL-W g ] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ - として使用し、新しくできた上側のウィンドウで ":tselect" を実行 - する。新しいウィンドウの高さはNとなる。 - - *CTRL-W_g_CTRL-]* -CTRL-W g CTRL-] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ - として使用し、新しくできた上側のウィンドウで ":tjump" を実行す - る。新しいウィンドウの高さはNとなる。 - -CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* -CTRL-W CTRL-F カレントウィンドウを2つに分割する。カーソル位置のファイル名を - 編集する。":split ]f" と同様だが、ファイルが存在しなければウィ - ンドウを分割しない。 - ファイルを探すディレクトリのリストとして変数 'path' が使われ - る。また、カレントファイルのパスも探される。 - その名前が "type://machine/path" のようにハイパーテキストリン - クならば "/path" のみが使われる。 - count が与えられた場合、count 番目にマッチしたファイルが編集さ - れる。 - {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で - きない} - -CTRL-W F *CTRL-W_F* - カレントウィンドウを2つに分割する。カーソル下のファイル名を開 - き、そのファイル名の後に書かれている行番号へジャンプする。ど - のように行番号を取得するかについては|gF|を参照。 - {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で - きない} - -CTRL-W gf *CTRL-W_gf* - 新しいタブページを開き、カーソル下のファイル名を開く。 - "tab split"と"gf"の組み合わせに似ているが、そのファイルが存在 - しない場合に新しいタブページを作成しないところが異なる。 - {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で - きない} - -CTRL-W gF *CTRL-W_gF* - 新しいタブページを開き、カーソル下のファイル名を開いて、ファイ - ル名の後に書かれている行番号へジャンプする。 - "tab split"と"gF"の組み合わせに似ているが、そのファイルが存在 - しない場合に新しいタブページを作成しないところが異なる。 - {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で - きない} - -|CTRL-W_CTRL-I| も参照:カーソル位置のキーワードを含むインクルードファイルを新 -しいウィンドウで開く。 - -============================================================================== -10. プレビューウィンドウ *preview-window* - -プレビューウィンドウは別のファイルをプレビューする特別なウィンドウである。通常 -はインクルードファイルや関数の定義を示すのに使われる小さなウィンドウである。 -{コンパイル時に |+quickfix| 機能が無効にされた場合は使用できない} - -プレビューウィンドウはタブページにつき1つだけ開くことができる。プレビューウィ -ンドウは以下のコマンドのどれかが実行されたとき作成される。オプション -'previewheight'によってプレビューウィンドウが開くときの高さを設定できる。プレ -ビューウィンドウを識別するために、プレビューウィンドウにはオプション -'previewwindow'がセットされる。他のウィンドウを開閉したときにも同じ高さを保つ -ためにオプション'winfixheight'がセットされる。 - - *:pta* *:ptag* -:pta[g][!] [tagname] - ":tag[!] [tagname]" を実行し、現在のバッファまたはカーソル位置 - を変えずに「プレビュー」ウィンドウないで検索したタグを表示す - る。「プレビュー」ウィンドウがすでに存在していた場合は、(ヘル - プウィンドウのように)そのウィンドウに表示する。新しいウィンド - ウが開いたときは、'previewheight' の設定がそのウィンドウの高さ - になる。|:tag| も参照のこと。 - 例は下を参照。|CursorHold-example| - |:tag|とは小さな違いがある:[tagname] がすでに表示されているタ - グと同じ場合、マッチしたタグリスト内の位置はリセットされない。 - このおかげで |:ptnext| の後でも CursorHold の例がうまくいくよ - うになっている。 - -CTRL-W z *CTRL-W_z* -CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* -:pc[lose][!] 現在開いている「プレビュー」ウィンドウを閉じる。 'hidden' オプ - ションがセットされている時、または、バッファが編集中で[!]が使 - われた時、(そのバッファを編集している他のウィンドウがなければ) - そのバッファは隠れ状態(hidden)となる。いずれかの「プレビュー」 - バッファを閉じることができない場合、このコマンドは失敗する。 - |:close| も参照のこと。 - - *:pp* *:ppop* -:[count]pp[op][!] - プレビューウィンドウで ":[count]pop[!]" を実行する。 |:pop| と - |:ptag| を参照。 {Vi にはない機能} - -CTRL-W } *CTRL-W_}* - カーソル位置の識別子をタグとして使用し、:ptag を実行する。 (必 - 要なら)高さNの新しいプレビューウィンドウを作成する。 Nが与えら - れなければ、'previewheight' が使われる。 - -CTRL-W g } *CTRL-W_g}* - カーソル位置の識別子をタグとして使用し、:ptjump を実行する。 - (必要なら)高さNの新しいプレビューウィンドウを作成する。 Nが与 - えられなければ、'previewheight' が使われる。 - - *:ped* *:pedit* -:ped[it][!] [++opt] [+cmd] {file} - {file} をプレビューウィンドウで編集する。プレビューウィンドウは - |:ptag| と同じように開かれる。カレントウィンドウとカーソル位置 - は変わらない。便利な例: > - :pedit +/fputc /usr/include/stdio.h -< - *:ps* *:psearch* -:[range]ps[earch][!] [count] [/]pattern[/] - |:ijump| と同様だが、見つかったマッチをプレビューウィンドウで - 開く。プレビューウィンドウは |:ptag| と同じように開かれる。カ - レントウィンドウとカーソル位置は変わらない。便利な例: > - :psearch popen -< |:ptag| コマンドと同じように、これを使ってカーソル位置の単語に - 関する情報を自動的に表示させることが出来る。これは |:ptag| コ - マンドを使うほど賢くないが、tags ファイルが必要なく、システム - インクルードファイル内のマッチを見つけることも出来る。例: > - :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>") -< 注意:遅いかもしれない。 - - -例 *CursorHold-example* - - :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>") - -この例では、'updatetime' に設定された時間の間カーソルが動かなければ、カーソル -下のキーワードで ":ptag" が実行される。"nested" は他のオートコマンドを実行する -ので、シンタックスハイライトはプレビューウィンドウ内で動作する。"silent!" は -タグが見つからなかったときのエラーメッセージを抑止する。|CursorHold|も参照。 -この自動コマンドを再び無効化するには: > - - :au! CursorHold - -見つかったタグをハイライトさせる、カーソル位置に単語がないときに":ptag"を実行 -しない、などの改良をしたものが以下の通り: > - - :au! CursorHold *.[ch] nested call PreviewWord() - :func PreviewWord() - : if &previewwindow " プレビューウィンドウ内では実行しない - : return - : endif - : let w = expand("<cword>") " カーソル下の単語を得る - : if w =~ '\a' " その単語が文字を含んでいるなら - : - : " 別のタグを表示させる前にすでに存在するハイライトを消去する - : silent! wincmd P " プレビューウィンドウにジャンプ - : if &previewwindow " すでにそこにいるなら - : match none " 存在するハイライトを消去する - : wincmd p " もとのウィンドウに戻る - : endif - : - : " カーソル下の単語にマッチするタグを表示してみる - : try - : exe "ptag " . w - : catch - : return - : endtry - : - : silent! wincmd P " プレビューウィンドウにジャンプ - : if &previewwindow " すでにそこにいるなら - : if has("folding") - : silent! .foldopen " 閉じた折り畳みを開く - : endif - : call search("$", "b") " 前の行の最後へ - : let w = substitute(w, '\\', '\\\\', "") - : call search('\<\V' . w . '\>') " カーソルをマッチしたところへ - : " ここで単語にハイライトをつける - : hi previewWord term=bold ctermbg=green guibg=green - : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"' - : wincmd p " もとのウィンドウへ戻る - : endif - : endif - :endfun - -============================================================================== -11. 隠れ(hidden)バッファを使う *buffer-hidden* - -隠れ(hidden)バッファはウィンドウに表示されないが、メモリ上にはすでにロードされ -ている。これにより、毎回ファイルを保存したり読み込んだりしなくても、また、ウィ -ンドウ内にファイルを残しておかなくても、他のバッファをウィンドウに表示すること -が可能となる。 -{|+listcmds| 機能なしでコンパイルされた場合には使用できない} - - *:buffer-!* -'hidden' ('hi') オプションがセットされている場合は、":edit", ":next", ":tag" -等の他のファイルの編集をスタートさせる総てのコマンドに関して、いらないバッファ -は捨てられない。バッファリストで移動コマンドを実行すると、'hidden' オプション -がセットされていないにもかかわらず、バッファが隠れ状態(hidden)になることがあ -る。これはバッファが編集中で、ウィンドウが強制的に削除され('!' を使用)、 -'autowrite' がセットされていないかバッファを保存できなかったときに起こる。 - -隠れ状態の(hidden)バッファはそのバッファの編集を開始するコマンドで隠れ状態 -(hidden)ではなくなる。 ":bdelete" コマンドでバッファを削除しても隠れ状態 -(hidden)ではなくなる。 - -オプション 'hidden' はグローバルである、全てのバッファに適用される。オプション -'bufhidden' は特定のバッファを例外にするために使える。'bufhidden' はこれらの値 -をとりうる: - <empty> 'hidden' の値を使う。 - hide 'hidden' が設定されてなくてもこのバッファを隠れ状態に - する。 - unload 'hidden' が設定されているときでも隠れ状態にせず、この - バッファをアンロードする。 - delete バッファを削除する。 - - *hidden-quit* -編集中で隠れ状態(hidden)のバッファがあるときに Vim を終了しようとすると、エ -ラーが表示されてその編集中のバッファがカレントバッファになる。そして、バッファ -を保存するか(":wq")、保存しないで終了するか(":q!")を指定することができる。 -注意: 他にも編集中の隠れバッファ(hidden)や編集中のバッファがあるかも。 - -バッファはリストから除かれることもある。これは、存在しているがバッファのリスト内 -にはないことを意味する。|unlisted-buffer| - -:files[!] *:files* -:buffers[!] *:buffers* *:ls* -:ls[!] 全バッファを表示。例: - - 1 #h "/test/text" line 1 ~ - 2u "asdf" line 0 ~ - 3 %a+ "version.c" line 1 ~ - - [!] が含まれているときは、バッファリストにないバッファも表示さ - れる。 - - 各バッファは一意の番号が割り当てられている。この番号は変わらな - いので、 ":buffer N" や "N CTRL-^" を使ってある特定のバッファ - へ移動できる。Nはバッファの番号である。 - - 指標(同じ桁にある文字は互いに排他的): - u リストされていないバッファ([!] が使われたときのみ表示 - される)|unlisted-buffer| - % カレントウィンドウにあるバッファ - # ":e #" や CTRL_^ で使われる代替バッファ - a アクティブバッファ:ロードされていて、表示されている - h 隠れバッファ:ロードされているが、現在はウィンドウに表 - 示されていない |hidden-buffer| - - 'modifiable' がオフのバッファ - = リードオンリーのバッファ - + 変更のあるバッファ - x 読み込みエラーのあるバッファ - - *:bad* *:badd* -:bad[d] [+lnum] {fname} - ファイル名 {fname} をバッファリストに追加する。ただし、メモリ - 上には読み込まれない。 "lnum" が指定された場合、バッファに初め - て移動したときにカーソルが指定された行番号にジャンプする。 + - 以降の他のコマンドは無視されることに注意。 - -:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* -:bd[elete][!] [N] - バッファ[N](デフォルト: カレントバッファ)をメモリから取り除 - き、バッファリストから削除する。バッファが編集中の場合はこのコ - マンドは失敗する([!] が与えられた場合は成功する。そのとき変更 - は破棄される)。ファイルには影響はない。このバッファを表示し - ている総てのウィンドウは閉じられる。バッファ[N]がカレントバッ - ファの場合は、他のバッファが代わりに表示される。このバッファに - は、ジャンプリストの中のメモリ上にロードされているバッファを指 - し示している最も最近のエントリが使用される。 - 実際は、バッファは完全に削除されていない。バッファリストから削 - 除され |unlisted-buffer|、バッファに対するオプションの値、変数、 - マッピング・略語が消去される。 - -:bdelete[!] {bufname} *E93* *E94* - ":bdelete[!] [N]" と同様だが、バッファを名前で指定する。数字が - 名前になっているバッファは、その数字では参照されない。つまり、 - バッファ番号として使用されてしまう。バッファ名中のスペースの前 - にはバックスラッシュを入れる必要がある。 - -:bdelete[!] N1 N2 ... - ":bdelete[!]" をバッファN1、N2、等に対して実行する。引数には - バッファ番号かバッファ名(ただし数字のバッファ名は使用不可)を使 - 用できる。バッファ名中のスペースの前にはバックスラッシュを入れ - る必要がある。 - -:N,Mbdelete[!] ":bdelete[!]" を N から M まで(N,Mを含む)の総てのバッファに対 - して実行する。 - -:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517* -:bw[ipeout][!] {bufname} -:N,Mbw[ipeout][!] -:bw[ipeout][!] N1 N2 ... - |:bdelete| に似ているが、本当にバッファを削除する。このバッ - ファに関するすべてが失われる。例えば、このバッファ中のすべての - マークが無効になり、オプション設定が失われるなど。このことの意 - 味がわからなければ使わないこと。 - -:[N]bun[load][!] *:bun* *:bunload* *E515* -:bun[load][!] [N] - バッファ[N] (デフォルト:カレントバッファ)をメモリから取り除 - く。このバッファに割り当てられたメモリ領域を解放する。バッファ - はバッファリストには残る。バッファが編集中の場合は、このコマン - ドは失敗する([!] が与えられた場合は成功する。そのとき変更は破 - 棄される)。このバッファを表示しているどのウィンドウも閉じられ - る。バッファ[N]がカレントバッファの場合、他のバッファが代わり - に表示される。このバッファには、ジャンプリストの中のメモリ上に - ロードされているバッファを指し示している最も最近のエントリが使 - 用される。 - -:bunload[!] {bufname} - ":bunload[!] [N]" と同様だが、バッファを名前で指定する。数字が - 名前になっているバッファは、その数字では参照されない。つまり、 - バッファ番号として使用されてしまう。バッファ名中のスペースの前 - にはバックスラッシュを入れる必要がある。 - -:N,Mbunload[!] ":bunload[!]" を N から M まで(N,Mを含む)の総てのバッファに対 - して実行する。 - -:bunload[!] N1 N2 ... - ":bunload[!]" をバッファN1、N2、等に対して実行する。引数には - バッファ番号かバッファ名(ただし数字のバッファ名は使用不可)を使 - 用できる。バッファ名中のスペースの前にはバックスラッシュを入れ - る必要がある。 - -:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86* - バッファリストのバッファ[N]を編集する。 [N]が与えられなけれ - ば、そのままカレントバッファが編集される。 [!]については - |:buffer-!| を参照。これはバッファリストにないバッファも - 'buflisted' フラグを設定することなく編集する。 - -:[N]b[uffer][!] {bufname} - バッファリストの {bufname} のバッファを編集する。 [!]について - は |:buffer-!| を参照。これはバッファリストにないバッファも - 'buflisted' フラグを設定することなく編集する。 - - -:[N]sb[uffer] [N] *:sb* *:sbuffer* - ウィンドウを分割しバッファリストのバッファ[N]を編集する。 [N] - が与えられなければ、そのままカレントバッファが編集される。ウィ - ンドウ分割の際には、'switchbuf' の "useopen" の設定に従う。 - これはバッファリストにないバッファも'buflisted' フラグを設定す - ることなく編集する。 - Note: 別名でカレントバッファのコピーを作って、それを別のウィン - ドウで表示したいのなら、次のようにすること: > - :w foobar | sp # - -:[N]sb[uffer] {bufname} - ウィンドウを分割しバッファリストの {bufname} バッファを編集す - る。これはバッファリストにないバッファも'buflisted' フラグを設 - 定することなく編集する。 - - - *:bn* *:bnext* -:[N]bn[ext][!] [N] - バッファリスト中の[N]個先のバッファへ移動する。 [N] のデフォル - ト値は1である。バッファリストの最後に到達したら、先頭に戻って - バッファを探す。 [!]については |:buffer-!| を参照。 - ヘルプバッファにいる場合、(もし有れば)次のヘルプバッファへ移動 - する。同様に、通常の(ヘルプではない)バッファにいる場合、次の通 - 常のバッファへ移動する。従って、ヘルプウィンドウを表示していて - も、コード/テキストバッファを次々と表示する際にヘルプが邪魔に - ならない。次の3つのコマンドも同じように動作する。 - - *:sbn* *:sbnext* -:[N]sbn[ext] [N] - ウィンドウを分割しバッファリストの[N]個先のバッファへ移動す - る。バッファリストの最後に到達したら、先頭に戻ってバッファを探 - す。ウィンドウ分割の際には、'switchbuf' の "useopen" 設定に従 - う。 - -:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* -:[N]bp[revious][!] [N] - バッファリスト中の[N]個前のバッファへ移動する。 [N] のデフォル - ト値は1である。バッファリストの先頭に到達したら、最後に戻って - バッファを探す。 [!]については |:buffer-!| を参照。'switchbuf' - も参照。 - -:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* -:[N]sbp[revious] [N] - ウィンドウを分割しバッファリストの[N]個前のバッファへ移動す - る。バッファリストの先頭に到達したら、最後に戻ってバッファを探 - す。ウィンドウ分割の際には、'switchbuf' の "useopen" 設定に従 - う。 - - *:br* *:brewind* -:br[ewind][!] バッファリスト中の先頭のバッファへ移動する。 [!]については - |:buffer-!| を参照。 - - *:bf* *:bfirst* -:bf[irst] ":brewind" と同じ。 - - *:sbr* *:sbrewind* -:sbr[ewind] ウィンドウを分割してバッファリスト中の先頭のバッファへ移動す - る。バッファリストが空の場合はリストされていない最初のバッファ - へ移動する。'switchbuf' オプションの設定に従う。 - - *:sbf* *:sbfirst* -:sbf[irst] ":sbrewind" と同じ。 - - *:bl* *:blast* -:bl[ast][!] バッファリスト中の最後のバッファへ移動する。 バッファリストが - 空の場合はリストされていない最初のバッファへ移動する。'[!]につ - いては|:buffer-!| を参照。 - - *:sbl* *:sblast* -:sbl[ast] ウィンドウを分割してバッファリスト中の最後のバッファへ移動す - る。バッファリストが空の場合はリストされていない最初のバッファ - へ移動する。'switchbuf' オプションの設定に従う。 - -:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84* - バッファリスト中の[N]個先の編集中のバッファへ移動する。 - 注意:このコマンドはリストされていないバッファも見つける。変更 - されているバッファがない場合はコマンドは失敗する。 - -:[N]sbm[odified] [N] *:sbm* *:sbmodified* - ウィンドウを分割し、バッファリスト中の[N]個先の編集中のバッ - ファへ移動する。'switchbuf' オプションの設定に従う。 - 注意:このコマンドはリストされていないバッファも見つける。 - -:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide* -:[N]sun[hide] [N] - バッファリスト中のメモリ上にロードされた各バッファに対して1つ - のウィンドウが開かれているようにスクリーンを再構成する。カウン - トが与えられたら、開くウィンドウの最大数となる。 - -:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball* -:[N]sba[ll] [N] バッファリスト中のメモリ上にロードされた各バッファに対して1つ - のウィンドウが開かれているようにスクリーンを再構成する。カウン - トが与えられたら、開くウィンドウの最大数となる。'winheight' も - 開くウィンドウの数を制限する(|:vertical| が前に与えられている - ときは'winwidth')。この時点では、Buf/Win Enter/Leave オートコ - マンドは新しいウィンドウに対して実行されない。ウィンドウに移動 - したときにのみ実行される。 - コマンド修飾子|:tab|をつけて実行すると、新しいウィンドウがそれ - ぞれ新しいタブで開く。ただしタブの個数は'tabpagemax'に制限され - る。 - -注: 上の総てのコマンドは他のバッファの編集を開始する。各バッファの 'readonly' -フラグは保存されている。 ":edit" コマンドと異なる点は、":edit" コマンドでは -ファイルが読まれた時点で 'readonly' フラグが設定される点である。 - -============================================================================== -12. 特殊なバッファ *special-buffers* - -バッファがファイルのテキストを保持するのでなく、他の目的のために使われることも -ある。バッファの振る舞いを変更するためにいくつかのオプションを設定することが出 -来る: - 'bufhidden' バッファがウィンドウに表示されなくなったときどうするか - 'buftype' どんな種類のバッファか - 'swapfile' バッファがスワップファイルを持つか - 'buflisted' バッファリストに現れるか - -いくつかの有用なバッファの種類: - -quickfix エラーリストやロケーションリストを保持するのに使われる。 - |:cwindow| と |:lwindow| を参照。このコマンドは 'buftype' オプ - ションを "quickfix" にセット。これを変更してはならない。 - 'swapfile' はオフ。 - -help ヘルプファイルを保持する。|:help| コマンドによってのみ作成され - る。ヘルプバッファを示すフラグは内部にあり、変更することは出来 - ない。ヘルプバッファに対する 'buflisted' オプションはリセット - される。 - -directory ディレクトリの内容を表示する。ファイルエクスプローラプラグイン - で使用されている。このバッファは以下の設定で作成される: > - :setlocal buftype=nowrite - :setlocal bufhidden=delete - :setlocal noswapfile -< バッファ名はディレクトリの名前になり、|:cd| コマンドを使ったと - きは変更される。 - -scratch いつでも破棄されうるテキストを保持する。ウィンドウを閉じても - 保たれ、明示的に削除されなければならない。 - 設定は: > - :setlocal buftype=nofile - :setlocal bufhidden=hide - :setlocal noswapfile -< このバッファを識別するためにはバッファ名が使われる。ただし、そ - のためにはそのバッファに意味のある名前がついていなければならな - い。 - - *unlisted-buffer* -unlisted このバッファはバッファリストにない。通常の編集には使われず、 - ヘルプファイルを表示するためや、ファイル名やマークを記憶するた - めに使われる。":bdelete" コマンドによってもこのオプションが - セットされる。それゆえ、このコマンドは完全にはバッファを削除し - ない。設定は: > - :setlocal nobuflisted -< - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/workshop.jax b/doc/workshop.jax deleted file mode 100644 index f2533db64..000000000 --- a/doc/workshop.jax +++ /dev/null @@ -1,99 +0,0 @@ -*workshop.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - - VIM リファレンスマニュアル by Gordon Prieur - - -Sun Visual WorkShop との連携機能 *workshop* *workshop-support* - -1. 機能紹介 |workshop-intro| -2. コマンド |workshop-commands| -3. WorkShop用vim/gvimのコンパイル |workshop-compiling| -4. Configuring gvim for a WorkShop release tree |workshop-configure| -5. 最新のXPMライブラリの取得方法 |workshop-xpm| - -{Vi にはこれらの機能はない} -{|+sun_workshop|機能を付けてコンパイルしたときのみ利用可能} - -============================================================================== -1. 機能紹介 *workshop-intro* - -Sun Visual WorkShopではデバッグに使用するエディタを"Editor of Choice" (訳注:エ -ディタの選択)によってユーザの好みのものに変更できる。バージョン6.0のリリースに -あたりgvimはこれに対応した。WorkShopのデバッグセッションにはデバッグウィンドウ -とエディタウィンドウが表示される(同じように他のウィンドウが表示される可能性も -ある)。ウィンドウを切換える必要は最低限で良く、ユーザはエディタウィンドウから -多くのデバッグ操作を行なうことができる。 - -Sun Visual WorkShop 6 (Forte Developer6とも呼ばれる)に付属するVimのバージョン -は5.3である。このリリース(訳注:Vim 6)の機能はVisual WorkShopに付属するvim/gvim -よりもかなり頼りになる。vimをエディタとして選択しているVWS(訳注:Visual -WorkShopの略)のユーザは、(訳注: Vim 6の)ソースをコンパイルしWorkShopのリリース -ツリーへインストールするべきだ。 - -============================================================================== -2. コマンド *workshop-commands* - - *:ws* *:wsverb* -:ws[verb] {verb} {verb}を命令実行エンジンに渡す - -WorkShop関数に{verb}を渡し、関数は幾つかの引数を集めて{verb}とデータをIPC接続 -を通じてWorkShopへ送る。 - -============================================================================== -3. WorkShop用vim/gvimのコンパイル *workshop-compiling* - -コンパイル時にFEAT_SUN_WORKSHOPを指定すると、Visual WorkShopに対応したVimを構 -築するのに必要なコンパイルフラグが全て有効化される。VWSのリリースに含まれるSun -のコンパイラを使って、VWSに必要な機能が構築されテストされる。GNUのコンパイラを -使っている場合は構築もテストもされない。これはgccでは決して構築し実行すること -ができないのではなく、単に保証ができないという意味である。 - -============================================================================== -4. Configuring gvim for a WorkShop release tree *workshop-configure* - -VimをSun Visual WorkShop 6と供に使えるようにするためには、幾つかの仮定をしなけ -ればならない。 - - o gccではなくVWSに付属のコンパイラを使わなければならない。gccでは構築もテ - ストもしていないので正しく構築できるかは保証できない。 - - o XPMライブラリを自分で用意しなければならない。最新のXPMの入手方法の詳細は - 下記の|workshop-xpm|を参照すること。 - - o ディレクトリsrc/の中のMakefileを編集し、Sun Visual WorkShopのための何行 - かのコメントを解除する。文字列FEAT_SUN_WORKSHOPを検索すれば簡単に見つけ - ることができる。 - - o GUIにはMotifを使用することを提案する。そうすればgvimの外見と感触がSun - Visual WorkShopの他の部分と同じようなものになる。 - -下のコマンドはSun Visual WorkShopに対応したvimを構築するよう構成したい時に使用 -できる: > - - $ CC=cc configure --enable-workshop --enable-gui=motif \ - -prefix=<VWS-install-dir>/contrib/contrib6/<vim-version> -< -<VWS-install-dir>にはSun Visual WorkShopをインストールしたベースディレクトリを -指定する。デフォルトでは/opt/SUNWsproである。通常Vimをインストールするには管理 -者権限が必要になる。<VWS-install-dir>/bin/gvimが新しくインストールしたgvimを指 -すようにsymlinkを変更する必要もある。<vim-version>にはバージョンを示す文字列を -指定する。著者は"vim"にversion.hの中のVIM_VERSION_SHORTと同じ物を付加して使っ -ている。 - -============================================================================== -5. 最新のXPMライブラリの取得方法 *workshop-xpm* - -XPMライブラリはVimで(MotifかAthenaを使って)画像を表示するために必要とされる。 -それ無しではツールバーと目印が利用できなくなる。 - -XPMライブラリは French National Institute for Research in Computer Science and -Control(訳注:フランス国立コンピュータ科学/制御研究所---通称INRIA) の Arnaud Le -Hors によって提供されている。http://cgit.freedesktop.org/xorg/lib/libXpm より -ダウンロードできる。これを書いている時点での最新版はxpm-3.4k-solaris.tgzでgzip -されたtarファイルである。ディレクトリ /usr/local/xpmを作成してそこにファイルを -伸長展開したならば、Makefile内のコメントアウトされた行を内容は変更せずにコメン -トを解除するだけで使うことができる。もしもxpmを他のディレクトリに置いたならば -src/Makefile内のXPM_DIRを変更する必要がある。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/xxd-ja.UTF-8.1 b/doc/xxd-ja.UTF-8.1 deleted file mode 100644 index c1d8e25cf..000000000 --- a/doc/xxd-ja.UTF-8.1 +++ /dev/null @@ -1,366 +0,0 @@ -.TH XXD 1 "August 1996" "Manual page for xxd" -.\" -.\" 21st May 1996 -.\" Man page author: -.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> -.\" Changes by Bram Moolenaar <Bram@vim.org> -.SH 名前 -.I xxd -\- 16 進ダンプを作成したり、元に戻したり。 -.SH 書式 -.B xxd -\-h[elp] -.br -.B xxd -[options] [infile [outfile]] -.br -.B xxd -\-r[evert] [options] [infile [outfile]] -.SH 説明 -ファイルや標準入力から 16 進ダンプを作成します。 -16 進ダンプから元のバイナリに戻すこともできます。 -.BR uuencode (1) -や -.BR uudecode (1) -のように、バイナリデータを、メールに張り付け可能な ASCII 形式に変換できた -り、標準出力に出力することもできます。 -さらに、バイナリファイルにパッチを当てるという使い方もできます。 -.SH オプション -.I infile -を指定しなかった場合は、標準入力が読み込まれます。 -.I infile -に -.RB \` \- ' -を指定した場合も、標準入力から読み込まれます。 -.I outfile -を指定しなかった (または -.RB \` \- ' -を指定した) 場合は、標準出力に出力されます。 -.PP -引数の解釈処理は適当なので注意してください。パラメータを取らない引数は -最初の一文字だけチェックされます。 -引数の文字とパラメータの間のスペースは省略可能です。 -パラメータは 10 進数、16 進数、8 進数で指定できます。 -.BR \-c8 -、 -.BR "\-c 8" -、 -.B \-c 010 -、 -.B \-cols 8 -はすべて同じ意味です。 -.PP -.TP -.IR \-a " | " \-autoskip -オートスキップ: 連続した nul 行を一つの '*' で置き換える。 -.TP -.IR \-b " | " \-bits -ビット (2進数) ダンプ。 -1 オクテットが "1" と "0" の 8 文字で出力されます。 -各行の行頭には 16 進数の行番号が表示されます。 -行末には ascii (または ebcdic) で表した場合の文字が表示されます。 -このモードでは \-r、\-p、\-i は機能しません。 -.TP -.IR "\-c cols " | " \-cols cols" -一行 -.RI < cols > -オクテットで出力する。標準設定は 16 (\-i: 12, \-ps: 30, \-b: 6)。最大 256。 -.TP -.IR \-E " | " \-EBCDIC -右端に出力される文字のエンコーディングを ASCII から EBCDIC に変更する。 -16 進ダンプの出力形式は変更されません。 -\-r、\-p、\-i が同時に指定された場合は何の効果もありません。 -.TP -.IR "\-g bytes " | " \-groupsize bytes" -出力を -.RI < bytes > -バイト (2 文字の 16 進数、または 8 文字の 2 進数) ごとにスペースで区切りま -す。 -区切らずに出力するには -.I \-g 0 -を指定してください。 -.RI < Bytes > -の標準設定は \fI2\fP です。2 進ダンプの場合は \fI1\fP です。 -ポストスクリプト形式やインクルード形式で出力するときは、このオプションは使わ -れません。 -.TP -.IR \-h " | " \-help -コマンドの説明を出力して終了する。変換は実行されません。 -.TP -.IR \-i " | " \-include -C インクルードファイル形式で出力します。入力ファイルの名前が付けられた静的配 -列の定義が出力されます。標準入力の場合は定義の中身だけ出力されます。 -.TP -.IR "\-l len " | " \-len len" -.RI < len > -オクテットだけ出力する。 -.TP -.IR \-p " | " \-ps " | " \-postscript " | " \-plain -ポストスクリプト形式の 16 進ダンプを出力する。別名 プレーン 16 進ダンプ。 -.TP -.IR \-r " | " \-revert -元に戻す: 16 進ダンプからバイナリ形式に変換 (またはパッチ) します。 -ファイルへ出力する場合、出力先のファイルは切り詰めされません。 -行番号や特定の書式がないプレーン 16 進ダンプを読み込む場合は、 -.I \-r \-p -を指定してください。空白と改行は無視されます。 -.TP -.I \-seek offset -.IR \-r -の後で使われた場合: 16 進ダンプを出力するファイルの位置に -.RI < offset > -を加える。 -.TP -.I \-s [+][\-]seek -infile の -.RI < seek > -バイト目 (絶対位置、または相対位置) から開始する。 -\fI+ \fRは、現在の標準入力の位置から相対的な位置を示します -(標準入力から読み込むときのみ意味があります)。\fI\- \fRは、入力の終わりから -の文字数を示します (\fI+\fR と同時に指定した場合は、現在の標準入力の位置から -手前の位置を示します)。 -\-s 引数を指定しなかった場合は、現在のファイル位置から開始されます。 -.TP -.I \-u -16 進数の表記に大文字を使います。指定がない場合は小文字で出力されます。 -.TP -.IR \-v " | " \-version -バージョンを表示します。 -.SH 警告 -.PP -.I xxd \-r -では行番号の評価に関しての暗黙のルールがいくつかあります。 -出力ファイルがシーク可能なら、各行の行番号が順番通りに並んでなくても構いませ -ん。位置が飛んでいても重なっていても大丈夫です。その場合、次の位置に移動する -ために lseek(2) が使われます。 -出力ファイルがシーク不可なら、「隙間」だけが処理可能です。隙間は null バイト -で埋められます。 -.PP -.I xxd \-r -は不正な入力をエラーにしません。ゴミは静かに読み飛ばされます。 -.PP -16 進ダンプを編集するときは注意が必要です。 -.I xxd \-r -は必要な桁 (\-c 引数参照) だけ 16 進データを読み込んで、行の残りを無視しま -す。つまり、ascii (または ebcdic) を示している列への変更は無視されます。 -xxd \-r \-p でプレーン形式 (ポストスクリプト形式) の 16 進ダンプを元に戻す場 -合は、列の数は影響しません。 -2 桁の 16 進数と認識できるものはすべて変換されます。 -.PP -\fI% xxd \-i file\fR -.br -と -.br -\fI% xxd \-i < file\fR -.br -の結果は違います。注意してください。 -.PP -.I xxd \-s +seek -と -.IR "xxd \-s seek" , -の違いは、lseek(2) を使って入力を "巻き戻す" かどうかです。'+' が意味を持つ -のは、入力が標準入力で、xxd が起動されたときに標準入力のファイル位置がファイ -ルの先頭ではなかった場合です。 -以下の例が分かりやすいかもしれません (もっと混乱するかも!)... -.PP -`cat' が既に標準入力を終わりまで読んでいるので、読む前に標準入力を巻き戻す必 -要がある。 -.br -\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR -.PP -ファイル位置 0x480 (=1024+128) 前方から 16 進ダンプする。 -`+' は 「現在地からの相対位置」を意味するので、dd が 1k 処理した後から、さら -に `128' 進めます。 -.br -\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR -.PP -ファイル位置 0x100 ( = 1024\-768) から 16 進ダンプする。 -.br -\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR -.PP -このような使い方はあまりしませんし、`+' を使うこともほとんどないでしょう。 -\-s を使うときはいつでも、strace(1) や truss(1) を使って、xxd の働きをチェッ -クすることをお勧めします。 -.SH 例 -.PP -.br -.BR ファイル -の最初の三行 (16 進数で 0x30 バイト) 以降を出力する。 -.br -\fI% xxd \-s 0x30 file\fR -.PP -.br -.BR ファイル -の最後から三行 (16 進数で 0x30 バイト) を出力する。 -.br -\fI% xxd \-s \-0x30 file\fR -.PP -.br -120 バイトを、平文 16 進ダンプ形式で一行に 20 オクテットずつ出力する。 -.br -\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR -.br -2e54482058584420312022417567757374203139 -.br -39362220224d616e75616c207061676520666f72 -.br -20787864220a2e5c220a2e5c222032317374204d -.br -617920313939360a2e5c22204d616e2070616765 -.br -20617574686f723a0a2e5c2220202020546f6e79 -.br -204e7567656e74203c746f6e79407363746e7567 -.br - -.br -この man ページの先頭から 120 バイトを一行に 12 オクテットずつ 16 進ダンプす -る。 -.br -\fI% xxd \-l 120 \-c 12 xxd.1\fR -.br -0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A -.br -000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" -.br -0000018: 224d 616e 7561 6c20 7061 6765 "Manual page -.br -0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ -.br -0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M -.br -000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" -.br -0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut -.br -0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" -.br -0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent -.br -000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug -.PP -.br -xxd.1 の日付部分だけを出力する。 -.br -\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR -.br -0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996 -.PP -.br -.B input_file -を -.B output_file -にコピーし、先頭に 0x00 を 100 バイト分付け加える。 -.br -\fI% xxd input_file | xxd \-r \-s 100 > output_file\fR -.br - -.br -xxd.1 の日付を修正する。 -.br -\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR -.br -\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR -.br -0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 -.PP -.br -中身がすべて 0x00 の 65537 バイトのファイルを作成する。 -ただし、最後のバイトだけは 'A' (hex 0x41)。 -.br -\fI% echo "010000: 41" | xxd \-r > file\fR -.PP -.br -作成したファイルをオートスキップを使って 16 進ダンプする。 -.br -\fI% xxd \-a \-c 12 file\fR -.br -0000000: 0000 0000 0000 0000 0000 0000 ............ -.br -* -.br -000fffc: 0000 0000 40 ....A -.PP -一文字の 'A' からなる 1 バイトのファイルを作成する。 - '\-r \-s' の後に指定した数値がファイル中の行番号に加算され、結果、余計なバ -イトが飛ばされる。 -.br -\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR -.PP -.B vim(1) -の中から xxd をフィルタとして実行し、 -マークされた `a' から `z' までの領域を 16 進ダンプする。 -.br -\fI:'a,'z!xxd\fR -.PP -.B vim(1) -の中から xxd をフィルタとして実行し、 -マークされた `a' から `z' までの領域をバイナリに戻す。 -.br -\fI:'a,'z!xxd \-r\fR -.PP -.B vim(1) -の中から xxd をフィルタとして実行し、 -16 進ダンプされた行を元に戻す。戻したい行にカーソルを移動して: -.br -\fI!!xxd \-r\fR -.PP -シリアル行から一文字読み込む -.br -\fI% xxd \-c1 < /dev/term/b &\fR -.br -\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR -.br -\fI% echo \-n foo > /dev/term/b\fR -.PP -.SH 返り値 -以下のエラー値が返ります: -.TP -0 -エラーなし。 -.TP -\-1 -操作がサポートされていない ( -.I xxd \-r \-i -はまだ不可です). -.TP -1 -引数の解釈に関するエラー。 -.TP -2 -入力ファイルに関する問題。 -.TP -3 -出力ファイルに関する問題。 -.TP -4,5 -指定された位置へシークできなかった。 -.SH 関連項目 -uuencode(1), uudecode(1), patch(1) -.br -.SH 警告 -この奇妙なツールは作者が使いやすいように作られています。 -自己責任で使ってください。ファイルをコピーし、それを調べ、ウィザードたれ。 -.br -.SH バージョン -このマニュアルは xxd バージョン 1.7 について説明しています。 -.SH 著者 -.br -(c) 1990-1997 by Juergen Weigert -.br -<jnweiger@informatik.uni\-erlangen.de> -.LP -私の功績として自由に配布してください。 -.br -儲かったら教えてください。 -.br -損しても知りません。 -.PP -マニュアルは Tony Nugent -.br -<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> -.br -によって書かれ、 -Bram Moolenaar が少し変更を加え、 -Juergen Weigert が編集しました。 -.PP diff --git a/runtime b/runtime index f38723bec..3792417e5 160000 --- a/runtime +++ b/runtime @@ -1 +1 @@ -Subproject commit f38723bec78cc034f3153197221d9cd65eddff79 +Subproject commit 3792417e54e5eaea8645a8d755e3868755b4bcdc diff --git a/syntax/help_ja.vim b/syntax/help_ja.vim deleted file mode 100644 index 9712ac70b..000000000 --- a/syntax/help_ja.vim +++ /dev/null @@ -1,3 +0,0 @@ -scriptencoding utf-8 - -syn match helpVim "Vim バージョン [0-9.a-z]\+" From 53b7fe65f67bfc8ecbb1e8ec97d799a020e22d3e Mon Sep 17 00:00:00 2001 From: mattn <mattn.jp@gmail.com> Date: Fri, 16 Sep 2011 20:58:56 +0900 Subject: [PATCH 355/783] add tutor. --- tutor/tutor | 970 ++++++++++++++++++++++++++++++++++++++++++++++++ tutor/tutor.ja | 975 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1945 insertions(+) create mode 100644 tutor/tutor create mode 100644 tutor/tutor.ja diff --git a/tutor/tutor b/tutor/tutor new file mode 100644 index 000000000..daf42b6bb --- /dev/null +++ b/tutor/tutor @@ -0,0 +1,970 @@ +=============================================================================== += W e l c o m e t o t h e V I M T u t o r - Version 1.7 = +=============================================================================== + + Vim is a very powerful editor that has many commands, too many to + explain in a tutor such as this. This tutor is designed to describe + enough of the commands that you will be able to easily use Vim as + an all-purpose editor. + + The approximate time required to complete the tutor is 25-30 minutes, + depending upon how much time is spent with experimentation. + + ATTENTION: + The commands in the lessons will modify the text. Make a copy of this + file to practise on (if you started "vimtutor" this is already a copy). + + It is important to remember that this tutor is set up to teach by + use. That means that you need to execute the commands to learn them + properly. If you only read the text, you will forget the commands! + + Now, make sure that your Shift-Lock key is NOT depressed and press + the j key enough times to move the cursor so that Lesson 1.1 + completely fills the screen. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.1: MOVING THE CURSOR + + + ** To move the cursor, press the h,j,k,l keys as indicated. ** + ^ + k Hint: The h key is at the left and moves left. + < h l > The l key is at the right and moves right. + j The j key looks like a down arrow. + v + 1. Move the cursor around the screen until you are comfortable. + + 2. Hold down the down key (j) until it repeats. + Now you know how to move to the next lesson. + + 3. Using the down key, move to Lesson 1.2. + +NOTE: If you are ever unsure about something you typed, press <ESC> to place + you in Normal mode. Then retype the command you wanted. + +NOTE: The cursor keys should also work. But using hjkl you will be able to + move around much faster, once you get used to it. Really! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.2: EXITING VIM + + + !! NOTE: Before executing any of the steps below, read this entire lesson!! + + 1. Press the <ESC> key (to make sure you are in Normal mode). + + 2. Type: :q! <ENTER>. + This exits the editor, DISCARDING any changes you have made. + + 3. When you see the shell prompt, type the command that got you into this + tutor. That would be: vimtutor <ENTER> + + 4. If you have these steps memorized and are confident, execute steps + 1 through 3 to exit and re-enter the editor. + +NOTE: :q! <ENTER> discards any changes you made. In a few lessons you + will learn how to save the changes to a file. + + 5. Move the cursor down to Lesson 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.3: TEXT EDITING - DELETION + + + ** Press x to delete the character under the cursor. ** + + 1. Move the cursor to the line below marked --->. + + 2. To fix the errors, move the cursor until it is on top of the + character to be deleted. + + 3. Press the x key to delete the unwanted character. + + 4. Repeat steps 2 through 4 until the sentence is correct. + +---> The ccow jumpedd ovverr thhe mooon. + + 5. Now that the line is correct, go on to Lesson 1.4. + +NOTE: As you go through this tutor, do not try to memorize, learn by usage. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.4: TEXT EDITING - INSERTION + + + ** Press i to insert text. ** + + 1. Move the cursor to the first line below marked --->. + + 2. To make the first line the same as the second, move the cursor on top + of the first character AFTER where the text is to be inserted. + + 3. Press i and type in the necessary additions. + + 4. As each error is fixed press <ESC> to return to Normal mode. + Repeat steps 2 through 4 to correct the sentence. + +---> There is text misng this . +---> There is some text missing from this line. + + 5. When you are comfortable inserting text move to lesson 1.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.5: TEXT EDITING - APPENDING + + + ** Press A to append text. ** + + 1. Move the cursor to the first line below marked --->. + It does not matter on what character the cursor is in that line. + + 2. Press A and type in the necessary additions. + + 3. As the text has been appended press <ESC> to return to Normal mode. + + 4. Move the cursor to the second line marked ---> and repeat + steps 2 and 3 to correct this sentence. + +---> There is some text missing from th + There is some text missing from this line. +---> There is also some text miss + There is also some text missing here. + + 5. When you are comfortable appending text move to lesson 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1.6: EDITING A FILE + + ** Use :wq to save a file and exit. ** + + !! NOTE: Before executing any of the steps below, read this entire lesson!! + + 1. Exit this tutor as you did in lesson 1.2: :q! + Or, if you have access to another terminal, do the following there. + + 2. At the shell prompt type this command: vim tutor <ENTER> + 'vim' is the command to start the Vim editor, 'tutor' is the name of the + file you wish to edit. Use a file that may be changed. + + 3. Insert and delete text as you learned in the previous lessons. + + 4. Save the file with changes and exit Vim with: :wq <ENTER> + + 5. If you have quit vimtutor in step 1 restart the vimtutor and move down to + the following summary. + + 6. After reading the above steps and understanding them: do it. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 1 SUMMARY + + + 1. The cursor is moved using either the arrow keys or the hjkl keys. + h (left) j (down) k (up) l (right) + + 2. To start Vim from the shell prompt type: vim FILENAME <ENTER> + + 3. To exit Vim type: <ESC> :q! <ENTER> to trash all changes. + OR type: <ESC> :wq <ENTER> to save the changes. + + 4. To delete the character at the cursor type: x + + 5. To insert or append text type: + i type inserted text <ESC> insert before the cursor + A type appended text <ESC> append after the line + +NOTE: Pressing <ESC> will place you in Normal mode or will cancel + an unwanted and partially completed command. + +Now continue with Lesson 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.1: DELETION COMMANDS + + + ** Type dw to delete a word. ** + + 1. Press <ESC> to make sure you are in Normal mode. + + 2. Move the cursor to the line below marked --->. + + 3. Move the cursor to the beginning of a word that needs to be deleted. + + 4. Type dw to make the word disappear. + + NOTE: The letter d will appear on the last line of the screen as you type + it. Vim is waiting for you to type w . If you see another character + than d you typed something wrong; press <ESC> and start over. + +---> There are a some words fun that don't belong paper in this sentence. + + 5. Repeat steps 3 and 4 until the sentence is correct and go to Lesson 2.2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.2: MORE DELETION COMMANDS + + + ** Type d$ to delete to the end of the line. ** + + 1. Press <ESC> to make sure you are in Normal mode. + + 2. Move the cursor to the line below marked --->. + + 3. Move the cursor to the end of the correct line (AFTER the first . ). + + 4. Type d$ to delete to the end of the line. + +---> Somebody typed the end of this line twice. end of this line twice. + + + 5. Move on to Lesson 2.3 to understand what is happening. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.3: ON OPERATORS AND MOTIONS + + + Many commands that change text are made from an operator and a motion. + The format for a delete command with the d delete operator is as follows: + + d motion + + Where: + d - is the delete operator. + motion - is what the operator will operate on (listed below). + + A short list of motions: + w - until the start of the next word, EXCLUDING its first character. + e - to the end of the current word, INCLUDING the last character. + $ - to the end of the line, INCLUDING the last character. + + Thus typing de will delete from the cursor to the end of the word. + +NOTE: Pressing just the motion while in Normal mode without an operator will + move the cursor as specified. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.4: USING A COUNT FOR A MOTION + + + ** Typing a number before a motion repeats it that many times. ** + + 1. Move the cursor to the start of the line marked ---> below. + + 2. Type 2w to move the cursor two words forward. + + 3. Type 3e to move the cursor to the end of the third word forward. + + 4. Type 0 (zero) to move to the start of the line. + + 5. Repeat steps 2 and 3 with different numbers. + +---> This is just a line with words you can move around in. + + 6. Move on to Lesson 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.5: USING A COUNT TO DELETE MORE + + + ** Typing a number with an operator repeats it that many times. ** + + In the combination of the delete operator and a motion mentioned above you + insert a count before the motion to delete more: + d number motion + + 1. Move the cursor to the first UPPER CASE word in the line marked --->. + + 2. Type d2w to delete the two UPPER CASE words + + 3. Repeat steps 1 and 2 with a different count to delete the consecutive + UPPER CASE words with one command + +---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.6: OPERATING ON LINES + + + ** Type dd to delete a whole line. ** + + Due to the frequency of whole line deletion, the designers of Vi decided + it would be easier to simply type two d's to delete a line. + + 1. Move the cursor to the second line in the phrase below. + 2. Type dd to delete the line. + 3. Now move to the fourth line. + 4. Type 2dd to delete two lines. + +---> 1) Roses are red, +---> 2) Mud is fun, +---> 3) Violets are blue, +---> 4) I have a car, +---> 5) Clocks tell time, +---> 6) Sugar is sweet +---> 7) And so are you. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2.7: THE UNDO COMMAND + + + ** Press u to undo the last commands, U to fix a whole line. ** + + 1. Move the cursor to the line below marked ---> and place it on the + first error. + 2. Type x to delete the first unwanted character. + 3. Now type u to undo the last command executed. + 4. This time fix all the errors on the line using the x command. + 5. Now type a capital U to return the line to its original state. + 6. Now type u a few times to undo the U and preceding commands. + 7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times + to redo the commands (undo the undo's). + +---> Fiix the errors oon thhis line and reeplace them witth undo. + + 8. These are very useful commands. Now move on to the Lesson 2 Summary. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 2 SUMMARY + + + 1. To delete from the cursor up to the next word type: dw + 2. To delete from the cursor to the end of a line type: d$ + 3. To delete a whole line type: dd + + 4. To repeat a motion prepend it with a number: 2w + 5. The format for a change command is: + operator [number] motion + where: + operator - is what to do, such as d for delete + [number] - is an optional count to repeat the motion + motion - moves over the text to operate on, such as w (word), + $ (to the end of line), etc. + + 6. To move to the start of the line use a zero: 0 + + 7. To undo previous actions, type: u (lowercase u) + To undo all the changes on a line, type: U (capital U) + To undo the undo's, type: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.1: THE PUT COMMAND + + + ** Type p to put previously deleted text after the cursor. ** + + 1. Move the cursor to the first ---> line below. + + 2. Type dd to delete the line and store it in a Vim register. + + 3. Move the cursor to the c) line, ABOVE where the deleted line should go. + + 4. Type p to put the line below the cursor. + + 5. Repeat steps 2 through 4 to put all the lines in correct order. + +---> d) Can you learn too? +---> b) Violets are blue, +---> c) Intelligence is learned, +---> a) Roses are red, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.2: THE REPLACE COMMAND + + + ** Type rx to replace the character at the cursor with x . ** + + 1. Move the cursor to the first line below marked --->. + + 2. Move the cursor so that it is on top of the first error. + + 3. Type r and then the character which should be there. + + 4. Repeat steps 2 and 3 until the first line is equal to the second one. + +---> Whan this lime was tuoed in, someone presswd some wrojg keys! +---> When this line was typed in, someone pressed some wrong keys! + + 5. Now move on to Lesson 3.3. + +NOTE: Remember that you should be learning by doing, not memorization. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.3: THE CHANGE OPERATOR + + + ** To change until the end of a word, type ce . ** + + 1. Move the cursor to the first line below marked --->. + + 2. Place the cursor on the u in lubw. + + 3. Type ce and the correct word (in this case, type ine ). + + 4. Press <ESC> and move to the next character that needs to be changed. + + 5. Repeat steps 3 and 4 until the first sentence is the same as the second. + +---> This lubw has a few wptfd that mrrf changing usf the change operator. +---> This line has a few words that need changing using the change operator. + +Notice that ce deletes the word and places you in Insert mode. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3.4: MORE CHANGES USING c + + + ** The change operator is used with the same motions as delete. ** + + 1. The change operator works in the same way as delete. The format is: + + c [number] motion + + 2. The motions are the same, such as w (word) and $ (end of line). + + 3. Move to the first line below marked --->. + + 4. Move the cursor to the first error. + + 5. Type c$ and type the rest of the line like the second and press <ESC>. + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + +NOTE: You can use the Backspace key to correct mistakes while typing. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 3 SUMMARY + + + 1. To put back text that has just been deleted, type p . This puts the + deleted text AFTER the cursor (if a line was deleted it will go on the + line below the cursor). + + 2. To replace the character under the cursor, type r and then the + character you want to have there. + + 3. The change operator allows you to change from the cursor to where the + motion takes you. eg. Type ce to change from the cursor to the end of + the word, c$ to change to the end of a line. + + 4. The format for change is: + + c [number] motion + +Now go on to the next lesson. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.1: CURSOR LOCATION AND FILE STATUS + + ** Type CTRL-G to show your location in the file and the file status. + Type G to move to a line in the file. ** + + NOTE: Read this entire lesson before executing any of the steps!! + + 1. Hold down the Ctrl key and press g . We call this CTRL-G. + A message will appear at the bottom of the page with the filename and the + position in the file. Remember the line number for Step 3. + +NOTE: You may see the cursor position in the lower right corner of the screen + This happens when the 'ruler' option is set (see :help 'ruler' ) + + 2. Press G to move you to the bottom of the file. + Type gg to move you to the start of the file. + + 3. Type the number of the line you were on and then G . This will + return you to the line you were on when you first pressed CTRL-G. + + 4. If you feel confident to do this, execute steps 1 through 3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.2: THE SEARCH COMMAND + + + ** Type / followed by a phrase to search for the phrase. ** + + 1. In Normal mode type the / character. Notice that it and the cursor + appear at the bottom of the screen as with the : command. + + 2. Now type 'errroor' <ENTER>. This is the word you want to search for. + + 3. To search for the same phrase again, simply type n . + To search for the same phrase in the opposite direction, type N . + + 4. To search for a phrase in the backward direction, use ? instead of / . + + 5. To go back to where you came from press CTRL-O (Keep Ctrl down while + pressing the letter o). Repeat to go back further. CTRL-I goes forward. + +---> "errroor" is not the way to spell error; errroor is an error. +NOTE: When the search reaches the end of the file it will continue at the + start, unless the 'wrapscan' option has been reset. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.3: MATCHING PARENTHESES SEARCH + + + ** Type % to find a matching ),], or } . ** + + 1. Place the cursor on any (, [, or { in the line below marked --->. + + 2. Now type the % character. + + 3. The cursor will move to the matching parenthesis or bracket. + + 4. Type % to move the cursor to the other matching bracket. + + 5. Move the cursor to another (,),[,],{ or } and see what % does. + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + + +NOTE: This is very useful in debugging a program with unmatched parentheses! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4.4: THE SUBSTITUTE COMMAND + + + ** Type :s/old/new/g to substitute 'new' for 'old'. ** + + 1. Move the cursor to the line below marked --->. + + 2. Type :s/thee/the <ENTER> . Note that this command only changes the + first occurrence of "thee" in the line. + + 3. Now type :s/thee/the/g . Adding the g flag means to substitute + globally in the line, change all occurrences of "thee" in the line. + +---> thee best time to see thee flowers is in thee spring. + + 4. To change every occurrence of a character string between two lines, + type :#,#s/old/new/g where #,# are the line numbers of the range + of lines where the substitution is to be done. + Type :%s/old/new/g to change every occurrence in the whole file. + Type :%s/old/new/gc to find every occurrence in the whole file, + with a prompt whether to substitute or not. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 4 SUMMARY + + + 1. CTRL-G displays your location in the file and the file status. + G moves to the end of the file. + number G moves to that line number. + gg moves to the first line. + + 2. Typing / followed by a phrase searches FORWARD for the phrase. + Typing ? followed by a phrase searches BACKWARD for the phrase. + After a search type n to find the next occurrence in the same direction + or N to search in the opposite direction. + CTRL-O takes you back to older positions, CTRL-I to newer positions. + + 3. Typing % while the cursor is on a (,),[,],{, or } goes to its match. + + 4. To substitute new for the first old in a line type :s/old/new + To substitute new for all 'old's on a line type :s/old/new/g + To substitute phrases between two line #'s type :#,#s/old/new/g + To substitute all occurrences in the file type :%s/old/new/g + To ask for confirmation each time add 'c' :%s/old/new/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND + + + ** Type :! followed by an external command to execute that command. ** + + 1. Type the familiar command : to set the cursor at the bottom of the + screen. This allows you to enter a command-line command. + + 2. Now type the ! (exclamation point) character. This allows you to + execute any external shell command. + + 3. As an example type ls following the ! and then hit <ENTER>. This + will show you a listing of your directory, just as if you were at the + shell prompt. Or use :!dir if ls doesn't work. + +NOTE: It is possible to execute any external command this way, also with + arguments. + +NOTE: All : commands must be finished by hitting <ENTER> + From here on we will not always mention it. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.2: MORE ON WRITING FILES + + + ** To save the changes made to the text, type :w FILENAME. ** + + 1. Type :!dir or :!ls to get a listing of your directory. + You already know you must hit <ENTER> after this. + + 2. Choose a filename that does not exist yet, such as TEST. + + 3. Now type: :w TEST (where TEST is the filename you chose.) + + 4. This saves the whole file (the Vim Tutor) under the name TEST. + To verify this, type :!dir or :!ls again to see your directory. + +NOTE: If you were to exit Vim and start it again with vim TEST , the file + would be an exact copy of the tutor when you saved it. + + 5. Now remove the file by typing (MS-DOS): :!del TEST + or (Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.3: SELECTING TEXT TO WRITE + + + ** To save part of the file, type v motion :w FILENAME ** + + 1. Move the cursor to this line. + + 2. Press v and move the cursor to the fifth item below. Notice that the + text is highlighted. + + 3. Press the : character. At the bottom of the screen :'<,'> will appear. + + 4. Type w TEST , where TEST is a filename that does not exist yet. Verify + that you see :'<,'>w TEST before you press <ENTER>. + + 5. Vim will write the selected lines to the file TEST. Use :!dir or !ls + to see it. Do not remove it yet! We will use it in the next lesson. + +NOTE: Pressing v starts Visual selection. You can move the cursor around + to make the selection bigger or smaller. Then you can use an operator + to do something with the text. For example, d deletes the text. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5.4: RETRIEVING AND MERGING FILES + + + ** To insert the contents of a file, type :r FILENAME ** + + 1. Place the cursor just above this line. + +NOTE: After executing Step 2 you will see text from Lesson 5.3. Then move + DOWN to see this lesson again. + + 2. Now retrieve your TEST file using the command :r TEST where TEST is + the name of the file you used. + The file you retrieve is placed below the cursor line. + + 3. To verify that a file was retrieved, cursor back and notice that there + are now two copies of Lesson 5.3, the original and the file version. + +NOTE: You can also read the output of an external command. For example, + :r !ls reads the output of the ls command and puts it below the + cursor. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 5 SUMMARY + + + 1. :!command executes an external command. + + Some useful examples are: + (MS-DOS) (Unix) + :!dir :!ls - shows a directory listing. + :!del FILENAME :!rm FILENAME - removes file FILENAME. + + 2. :w FILENAME writes the current Vim file to disk with name FILENAME. + + 3. v motion :w FILENAME saves the Visually selected lines in file + FILENAME. + + 4. :r FILENAME retrieves disk file FILENAME and puts it below the + cursor position. + + 5. :r !dir reads the output of the dir command and puts it below the + cursor position. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.1: THE OPEN COMMAND + + + ** Type o to open a line below the cursor and place you in Insert mode. ** + + 1. Move the cursor to the line below marked --->. + + 2. Type the lowercase letter o to open up a line BELOW the cursor and place + you in Insert mode. + + 3. Now type some text and press <ESC> to exit Insert mode. + +---> After typing o the cursor is placed on the open line in Insert mode. + + 4. To open up a line ABOVE the cursor, simply type a capital O , rather + than a lowercase o. Try this on the line below. + +---> Open up a line above this by typing O while the cursor is on this line. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.2: THE APPEND COMMAND + + + ** Type a to insert text AFTER the cursor. ** + + 1. Move the cursor to the start of the line below marked --->. + + 2. Press e until the cursor is on the end of li . + + 3. Type an a (lowercase) to append text AFTER the cursor. + + 4. Complete the word like the line below it. Press <ESC> to exit Insert + mode. + + 5. Use e to move to the next incomplete word and repeat steps 3 and 4. + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. + +NOTE: a, i and A all go to the same Insert mode, the only difference is where + the characters are inserted. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.3: ANOTHER WAY TO REPLACE + + + ** Type a capital R to replace more than one character. ** + + 1. Move the cursor to the first line below marked --->. Move the cursor to + the beginning of the first xxx . + + 2. Now press R and type the number below it in the second line, so that it + replaces the xxx . + + 3. Press <ESC> to leave Replace mode. Notice that the rest of the line + remains unmodified. + + 4. Repeat the steps to replace the remaining xxx. + +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. + +NOTE: Replace mode is like Insert mode, but every typed character deletes an + existing character. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.4: COPY AND PASTE TEXT + + + ** Use the y operator to copy text and p to paste it ** + + 1. Go to the line marked with ---> below and place the cursor after "a)". + + 2. Start Visual mode with v and move the cursor to just before "first". + + 3. Type y to yank (copy) the highlighted text. + + 4. Move the cursor to the end of the next line: j$ + + 5. Type p to put (paste) the text. Then type: a second <ESC> . + + 6. Use Visual mode to select " item.", yank it with y , move to the end of + the next line with j$ and put the text there with p . + +---> a) this is the first item. + b) + + NOTE: you can also use y as an operator; yw yanks one word. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6.5: SET OPTION + + + ** Set an option so a search or substitute ignores case ** + + 1. Search for 'ignore' by entering: /ignore <ENTER> + Repeat several times by pressing n . + + 2. Set the 'ic' (Ignore case) option by entering: :set ic + + 3. Now search for 'ignore' again by pressing n + Notice that Ignore and IGNORE are now also found. + + 4. Set the 'hlsearch' and 'incsearch' options: :set hls is + + 5. Now type the search command again and see what happens: /ignore <ENTER> + + 6. To disable ignoring case enter: :set noic + +NOTE: To remove the highlighting of matches enter: :nohlsearch +NOTE: If you want to ignore case for just one search command, use \c + in the phrase: /ignore\c <ENTER> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 6 SUMMARY + + 1. Type o to open a line BELOW the cursor and start Insert mode. + Type O to open a line ABOVE the cursor. + + 2. Type a to insert text AFTER the cursor. + Type A to insert text after the end of the line. + + 3. The e command moves to the end of a word. + + 4. The y operator yanks (copies) text, p puts (pastes) it. + + 5. Typing a capital R enters Replace mode until <ESC> is pressed. + + 6. Typing ":set xxx" sets the option "xxx". Some options are: + 'ic' 'ignorecase' ignore upper/lower case when searching + 'is' 'incsearch' show partial matches for a search phrase + 'hls' 'hlsearch' highlight all matching phrases + You can either use the long or the short option name. + + 7. Prepend "no" to switch an option off: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7.1: GETTING HELP + + + ** Use the on-line help system ** + + Vim has a comprehensive on-line help system. To get started, try one of + these three: + - press the <HELP> key (if you have one) + - press the <F1> key (if you have one) + - type :help <ENTER> + + Read the text in the help window to find out how the help works. + Type CTRL-W CTRL-W to jump from one window to another. + Type :q <ENTER> to close the help window. + + You can find help on just about any subject, by giving an argument to the + ":help" command. Try these (don't forget pressing <ENTER>): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7.2: CREATE A STARTUP SCRIPT + + + ** Enable Vim features ** + + Vim has many more features than Vi, but most of them are disabled by + default. To start using more features you have to create a "vimrc" file. + + 1. Start editing the "vimrc" file. This depends on your system: + :e ~/.vimrc for Unix + :e $VIM/_vimrc for MS-Windows + + 2. Now read the example "vimrc" file contents: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Write the file with: + :w + + The next time you start Vim it will use syntax highlighting. + You can add all your preferred settings to this "vimrc" file. + For more information type :help vimrc-intro + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7.3: COMPLETION + + + ** Command line completion with CTRL-D and <TAB> ** + + 1. Make sure Vim is not in compatible mode: :set nocp + + 2. Look what files exist in the directory: :!ls or :!dir + + 3. Type the start of a command: :e + + 4. Press CTRL-D and Vim will show a list of commands that start with "e". + + 5. Press <TAB> and Vim will complete the command name to ":edit". + + 6. Now add a space and the start of an existing file name: :edit FIL + + 7. Press <TAB>. Vim will complete the name (if it is unique). + +NOTE: Completion works for many commands. Just try pressing CTRL-D and + <TAB>. It is especially useful for :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lesson 7 SUMMARY + + + 1. Type :help or press <F1> or <Help> to open a help window. + + 2. Type :help cmd to find help on cmd . + + 3. Type CTRL-W CTRL-W to jump to another window + + 4. Type :q to close the help window + + 5. Create a vimrc startup script to keep your preferred settings. + + 6. When typing a : command, press CTRL-D to see possible completions. + Press <TAB> to use one completion. + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + This concludes the Vim Tutor. It was intended to give a brief overview of + the Vim editor, just enough to allow you to use the editor fairly easily. + It is far from complete as Vim has many many more commands. Read the user + manual next: ":help user-manual". + + For further reading and studying, this book is recommended: + Vim - Vi Improved - by Steve Oualline + Publisher: New Riders + The first book completely dedicated to Vim. Especially useful for beginners. + There are many examples and pictures. + See http://iccf-holland.org/click5.html + + This book is older and more about Vi than Vim, but also recommended: + Learning the Vi Editor - by Linda Lamb + Publisher: O'Reilly & Associates Inc. + It is a good book to get to know almost anything you want to do with Vi. + The sixth edition also includes information on Vim. + + This tutorial was written by Michael C. Pierce and Robert K. Ware, + Colorado School of Mines using ideas supplied by Charles Smith, + Colorado State University. E-mail: bware@mines.colorado.edu. + + Modified for Vim by Bram Moolenaar. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tutor/tutor.ja b/tutor/tutor.ja new file mode 100644 index 000000000..95e108efe --- /dev/null +++ b/tutor/tutor.ja @@ -0,0 +1,975 @@ +=============================================================================== += V I M 教 本 (チュートリアル) へ よ う こ そ - Version 1.7 = +=============================================================================== + + Vim は、このチュートリアルで説明するには多すぎる程のコマンドを備えた非常 + に強力なエディターです。このチュートリアルは、あなたが Vim を万能エディ + ターとして使いこなせるようになるのに十分なコマンドについて説明をするよう + なっています。 + + チュートリアルを完了するのに必要な時間は、覚えたコマンドを試すのにどれだ + け時間を使うのかにもよりますが、およそ25から30分です。 + + ATTENTION: + 以下の練習用コマンドにはこの文章を変更するものもあります。練習を始める前 + にコピーを作成しましょう("vimtutor"したならば、既にコピーされています)。 + + このチュートリアルが、使うことで覚えられる仕組みになっていることを、心し + ておかなければなりません。正しく学習するにはコマンドを実際に試さなければ + ならないのです。文章を読んだだけならば、きっと忘れてしまいます!。 + + さぁ、Capsロック(Shift-Lock)キーが押されていないことを確認した後、画面に + レッスン1.1 が全部表示されるところまで、j キーを押してカーソルを移動しま + しょう。 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.1: カーソルの移動 + + + ** カーソルを移動するには、示される様に h,j,k,l を押します ** + ^ + k ヒント: h キーは左方向に移動します。 + < h l > l キーは右方向に移動します。 + j j キーは下矢印キーのようなキーです。 + v + 1. 移動に慣れるまで、スクリーンでカーソル移動させましょう。 + + 2. 下へのキー(j)を押しつづけると、連続して移動できます。 + これで次のレッスンに移動する方法がわかりましたね。 + + 3. 下へのキーを使って、レッスン1.2 に移動しましょう。 + +Note: 何をタイプしているか判らなくなったら、<ESC>を押してノーマルモードにし + ます。それから入力しようとしていたコマンドを再入力しましょう。 + +Note: カーソルキーでも移動できます。しかし hjkl に一度慣れてしまえば、はるか + に速く移動することができるでしょう。いやマジで! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.2: VIM の起動と終了 + + + !! NOTE: 以下のあらゆるステップを行う前に、このレッスンを読みましょう!! + + 1. <ESC>キーを押しましょう。(確実にノーマルモードにするため) + + 2. 次のようにタイプ: :q! <ENTER> + これにより編集した内容を保存せずにエディタが終了します。 + + 3. シェルプロンプトが出てきたら、このチュートリアルを始める為ににコマンド + をタイプします。 + そのコマンドは: vimtutor <ENTER> + + 4. これまでのステップを覚え自信がついたならば、ステップ 1 から 3 までを実 + 際に試して、Vim を1度終了してから再び起動しましょう。 + +NOTE: :q! <ENTER> は全ての変更を破棄します。レッスンにて変更をファイルに保 + 存する方法についても勉強していきましょう。 + + 5. 1.3までカーソルを移動させましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.3: テキスト編集 - 削除 + + + ** ノーマルモードにてカーソルの下の文字を削除するには x を押します ** + + 1. 以下の ---> と示された行にカーソルを移動しましょう。 + + 2. 間違いを修正するために、削除する最初の文字までカーソルを移動します。 + + 3. 不必要な文字を x を押して削除しましょう。 + + 4. 文が正しくなるまで ステップ 2 から 4 を繰り返しましょう。 + +---> その ううさぎ は つつきき を こええてて とびはねたた + + 5. 行が正しくなったら、レッスン 1.4 へ進みましょう。 + +NOTE: 全てのレッスンを通じて、覚えようとするのではなく実際にやってみましょう。 + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.4: テキスト編集 - 挿入 + + + ** ノーマルモードにてテキストを挿入するには i を押します ** + + 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 + + 2. 1行目を2行目と同じ様にするために、テキストを挿入しなければならない位置 + の次の文字にカーソルを移動します。 + + 3. i キーを押してから、追加が必要な文字をタイプしましょう。 + + 4. 間違いを修正したら <ESC> を押してコマンドモードに戻り、正しい文になる様 + にステップ 2 から 4 を繰り返しましょう。 + +---> この には 足りない テキスト ある。 +---> この 行 には 幾つか 足りない テキスト が ある。 + + 5. 挿入の方法がわかったら下のレッスン1の要約を見ましょう。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.5: テキスト編集 - 追加 + + + ** テキスト追加するには A を押しましょう ** + + 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 + カーソルがその文字上にあってもかまいません。 + + 2. 追加が必要な場所で A をタイプしましょう。 + + 3. テキストを追加し終えたら、 <ESC> を押してノーマルモードに戻りましょう。 + + 4. 2行目の ---> と示された場所へ移動し、ステップ 2 から 3 繰り返して文法を + 修正しましょう。 + +---> ここには間違ったテキストがあり + ここには間違ったテキストがあります。 +---> ここにも間違ったテキス + ここにも間違ったテキストがあります。 + + 5. テキストの追加が軽快になってきたらレッスン 1.6 へ進みましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1.6: ファイルの編集 + + + ** ファイルを保存して終了するには :wq とタイプします ** + + !! NOTE: 以下のステップを実行する前に、まず全体を読んでください!! + + 1. レッスン 1.2 でやったように :q! をタイプして、このチュートリアルを終了 + します。 + + 2. シェルプロンプトでこのコマンドをタイプします: vim tutor <ENTER> + 'vim'が Vim エディタを起動するコマンド、'tutor' は編集したいファイルの + 名前です。変更してもよいファイルを使いましょう。 + + 3. 前のレッスンで学んだように、テキストを挿入、削除します。 + + 4. 変更をファイルに保存します: :wq <ENTER> + + 5. vimtutor を再度起動し、以下の要約へ進みましょう。 + + 6. 以上のステップを読んで理解した上でこれを実行しましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 1 要約 + + + 1. カーソルは矢印キーもしくは hjkl キーで移動します。 + h (左) j (下) k (上) l (右) + + 2. Vim を起動するにはプロンプトから vim ファイル名 <ENTER> とタイプします。 + + 3. Vim を終了するには <ESC> :q! <ENTER> とタイプします(変更を破棄)。 + もしくは <ESC> :wq <ENTER> とタイプします(変更を保存)。 + + 4. カーソルの下の文字を削除するには、ノーマルモードで x とタイプします。 + + 5. カーソルの位置に文字を挿入するには、ノーマルモードで i とタイプします。 + i テキストのタイプ <ESC> カーソル位置に追加 + A テキストの追加 <ESC> 行末に追加 + +NOTE: <ESC> キーを押すとノーマルモードに移行します。その際、間違ったり入力途 + 中のコマンドを取り消すことができます。 + +さて、続けてレッスン 2 を始めましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.1: 削除コマンド + + + ** 単語の末尾までを削除するには dw とタイプしましょう ** + + 1. ノーマルモードであることを確認するために <ESC> を押しましょう。 + + 2. 以下の ---> と示された行にカーソルを移動しましょう。 + + 3. 消したい単語の先頭にカーソルを移動しましょう。 + + 4. 単語を削除するために dw とタイプしましょう。 + + NOTE: タイプすると、dw という文字がスクリーンの最下行に現われます。 + タイプを間違ってしまった時には <ESC> を押してやり直しましょう。 + +---> この 文 紙 には いくつかの たのしい 必要のない 単語 が 含まれて います。 + + 5. 3 から 4 までを文が正しくなるまで繰り返し、レッスン 2.2 へ進みましょう。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.2: その他の削除コマンド + + + ** 行の末尾までを削除するには d$ とタイプしましょう ** + + 1. ノーマルモードであることを確認するのに <ESC> を押しましょう。 + + 2. 以下の ---> と示された行にカーソルを移動しましょう。 + + 3. 正しい文の末尾へカーソルを移動しましょう(最初の . の後です)。 + + 4. 行末まで削除するのに d$ とタイプしましょう。 + +---> 誰かがこの行の最後を2度タイプしました。 2度タイプしました。 + + + 5. どういうことか理解するために、レッスン 2.3 へ進みましょう。 + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.3: オペレータとモーション + + + 多くのコマンドはオペレータとモーションからテキストに変更を加ます。 + 削除コマンド d のオペレータは次の様になっています: + + d モーション + + それぞれ: + d - 削除コマンド。 + モーション - 何に対して働きかけるか(以下に挙げます)。 + + オペレータの一部一覧: + w - カーソル位置から空白を含む単語の末尾まで。 + e - カーソル位置から空白を含まない単語の末尾まで。 + $ - カーソル位置から行末まで。 + + つまり de とタイプすると、カーソル位置から単語の終わりまでを削除します。 + +NOTE: 冒険したい人は、ノーマルモードにてコマンドなしにモーションを押して + みましょう。カーソルが目的語一覧で示される位置に移動するはずです。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.4: モーションにカウントを使用する + + + ** 何回も行いたい繰り返しのモーションの前に数値をタイプします。 ** + + 1. 以下の ---> と示された行の先頭にカーソルを移動します。 + + 2. 2dw をタイプして単語2つ分移動します。 + + 3. 3e をタイプして3つ目の単語の終端に移動します。 + + 4. 0 (ゼロ)をタイプして行頭に移動します。 + + 5. ステップ 2 と 3 を違う数値と使って繰り返します。 + +---> This is just a line with words you can move around in. + + 6. レッスン 2.5 に進みましょう。 + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.5: より多くを削除するためにカウントを使用する + + + ** オペレータとカウントをタイプすると、その操作が複数回繰り返されます。 ** + + 既述の削除のオペレータとモーションの組み合わせにカウントを追加することで、 + より多くの削除が行えます: + d 数値 モーション + + 1. ---> と示された行の行頭部分にカーソルを移動しましょう。 + + 2. UPPER CASE の単語2つを 2dw とタイプして削除します。 + + 3. UPPER CASE という連続した単語を、1つのコマンドと異なるカウントを指定し、 + ステップ 1 と 2 を繰り返します。 + +---> このABC DE行のFGHI JK LMN OP単語はQ RS TUV綺麗になった。 + +NOTE: オペレータ d とモーションの間にカウントを使った場合、オペレータのない + 場合のモーションのように動作します。 + 例: 3dw と d3w は同等で、3w を削除します。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.6: 行の操作 + + + ** 行全体を削除するには dd とタイプします ** + + 行全体を削除する頻度が多いので、Viのデザイナーは行の削除を d の2回タイプと + いう簡単なものに決めました。 + + 1. 以下の句の2行目にカーソルを移動します。 + 2. dd とタイプして行を削除します。 + 3. さらに4行目に移動します。 + 4. 2dd とタイプして2行を削除します。 + +---> 1) バラは赤い、 +---> 2) つまらないものは楽しい、 +---> 3) スミレは青い、 +---> 4) 私は車をもっている、 +---> 5) 時計が時刻を告げる、 +---> 6) 砂糖は甘い +---> 7) オマエモナー + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2.7: やり直しコマンド + + + ** 最後のコマンドを取り消すには u を押します。U は行全体の取消です。 ** + + 1. 以下の ---> と示された行にカーソルを移動し、最初の間違いにカーソ + ルを移動しましょう。 + 2. x をタイプしていらない先頭の文字を削除しましょう。 + 3. さぁ、u をタイプして最後に実行したコマンドを取り消しましょう。 + 4. 今度は、x を使用して誤りを全て修正しましょう。 + 5. 大文字の U をタイプして、行を元の状態に戻しましょう。 + 6. u をタイプして直前の U コマンドを取消しましょう。 + 7. ではコマンドを再実行するのに CTRL-R (CTRL を押したまま R を打つ)を数回 + タイプしてみましょう(取消の取消)。 + +---> このの行のの間違いを修正々し、後でそれらの修正をを取消しまますす。 + + 8. これはとても便利なコマンドです。さぁレッスン 2 要約へ進みましょう。 + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 2 要約 + + + 1. カーソル位置から単語の末尾までを削除するには dw とタイプします。 + 2. カーソル位置から行の末尾までを削除するには d$ とタイプします。 + 3. 行全体を削除するには dd とタイプします。 + + 4. モーションを繰り返すには数値を付与します: 2w + 5. 変更に用いるコマンドの形式は + オペレータ [数値] モーション + + それぞれ: + オペレータ - 削除 d の類で何をするか。 + 数値 - そのコマンドを何回繰り返すか。 + モーション - w (単語)や $ (行末)などの類で、テキストの何に対して働きか + けるか。 + + 6. 行の先頭に移動するにはゼロを使用します: 0 + + 7. 前回の動作を取消す: u (小文字 u) + 行全体の変更を取消す: U (大文字 U) + 取消しの取消し: CTRL-R +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3.1: 貼り付けコマンド + + + ** 最後に削除された行をカーソルの後に貼り付けるには p をタイプします ** + + 1. 以下の段落の最初の行にカーソルを移動しましょう。 + + 2. dd とタイプして行を削除し、Vim のバッファに格納しましょう。 + + 3. 削除した行が本来あるべき位置の上の行まで、カーソルを移動させましょう。 + + 4. ノーマルモードで p をタイプして格納した行を画面に戻します。 + + 5. 順番が正しくなる様にステップ 2 から 4 を繰り返しましょう。 + + d) 貴方も学ぶことができる? + b) スミレは青い、 + c) 知恵とは学ぶもの、 + a) バラは赤い、 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3.2: 置き換えコマンド + + + ** カーソルの下の文字を置き換えるには r をタイプします ** + + 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 + + 2. 最初の間違いの先頭にカーソルを移動しましょう。 + + 3. r とタイプし、間違っている文字を置き換える、正しい文字をタイプしましょう。 + + 4. 最初の行が正しくなるまでステップ 2 から 3 を繰り返しましょう。 + +---> この合を人力した時ね、その人は幾つか問違ったキーを押しもした! +---> この行を入力した時に、その人は幾つか間違ったキーを押しました! + + 5. さぁ、レッスン 3.2 へ進みましょう。 + +NOTE: 実際に試しましょう。決して覚えるだけにはしないこと。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3.3: 変更コマンド + + + ** 単語の一部、もしくは全体を変更するには cw とタイプします ** + + 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 + + 2. lubw の u の位置にカーソルを移動しましょう。 + + 3. cw とタイプし、正しい単語をタイプしましょう(この場合 'ine' とタイプ)。 + + 4. 次の間違い(変更すべき文字の先頭)に移動するために <ESC> をタイプします。 + + 5. 最初の行が次の行の様になるまでステップ 3 と 4 を繰り返します。 + +---> This lubw has a few wptfd that mrrf changing usf the change command. +---> This line has a few words that need changing using the change command. + +cw は単語を変更するだけでなく、挿入も行えることに注意しましょう。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3.4: c を使用したその他の変更 + + + ** 変更コマンドは、削除コマンドと同じ様にオブジェクトを使用します ** + + 1. 変更コマンドは、削除コマンドと同じような動作をします。その形式は + + c [数値] モーション + + 2. オブジェクトも同じで、w は単語、 $ は行末などといったものです。 + + 3. 以下の ---> と示された行にカーソルを移動しましょう。 + + 4. 最初の間違いへカーソルを移動しましょう。 + + 5. c$ とタイプして行の残りを2行目の様にし、<ESC> を押しましょう。 + +---> The end of this line needs some help to make it like the second. +---> The end of this line needs to be corrected using the c$ command. + +NOTE: タイプ中の間違いはバックスペースキーを使って直すこともできます。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 3 要約 + + + 1. 既に削除されたテキストを再配置するには、p をタイプします。これは削除さ + れたテキストをカーソルの後に挿入します(行単位で削除されたのならば、カー + ソルのある次の行に挿入されます)。 + + 2. カーソルの下の文字を置き換えるには、r をタイプした後、それを置き換える + 文字をタイプします。 + + 3. 変更コマンドではカーソル位置から特定のモーションで指定される終端までを変 + 更することが可能です。例えば cw ならばカーソル位置から単語の終わりまで、 + c$ ならば行の終わりまでを変更します。 + + 4. 変更コマンドの形式は + + c [数値] モーション + +さぁ、次のレッスンへ進みましょう。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4.1: 位置とファイルの情報 + + ** ファイル内での位置とファイルの状態を表示するには CTRL-G をタイプします。 + ファイル内のある行に移動するには G をタイプします ** + + NOTE: ステップを実行する前に、このレッスン全てに目を通しましょう!! + + 1. CTRL を押したまま g を押しましょう。この操作を CTRL-G と呼んでいます。 + ページの一番下にファイル名と行番号が表示されるはずです。 ステップ 3のため + に行番号を覚えておきましょう。 + +NOTE: 画面の右下隅にカーソルの位置が表示されているかもしれません。これは + 'ruler' オプション(レッスン6で説明)を設定することで表示されます。 + + 2. 最下行に移動するために G をタイプしましょう。 + ファイルの先頭に移動するには gg とタイプしましょう。 + + 3. 先ほどの行の番号をタイプし G をタイプしましょう。最初に CTRL-G を押した行 + に戻って来るはずです。 + + 4. 自信が持てたらステップ 1 から 3 を実行しましょう。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4.2: 検索コマンド + + + ** 語句を検索するには / と、前方検索する語句をタイプします。** + + 1. ノーマルモードで / という文字をタイプします。画面一番下に : コマンドと + 同じ様に / が現れることに気づくでしょう。 + + 2. では、'errroor' <ENTER> とタイプしましょう。これが検索したい単語です。 + + 3. 同じ語をもう一度検索するときは 単に n をタイプします。 + 逆方向に語句を検索するときは N をタイプします。 + + 4. 逆方向に語句を検索する場合は、/ の代わりに ? コマンドを使用します。 + + 5. 元の場所に戻るには CTRL-O (Ctrl を押し続けながら o 文字タイプ)をタイプし + ます。さらに戻るにはこれを繰り返します。CTRL-I は前方向です。 + +Note: "errroor" は error とスペルが違います; errroor はいわゆる error です。 +Note: 検索がファイルの終わりに達すると、オプション 'wrapscan' が設定されている + 場合は、ファイルの先頭から検索を続行します。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4.3: 対応する括弧を検索 + + + ** 対応する ),] や } を検索するには % をタイプします ** + + 1. 下の ---> で示された行で (,[ か { のどれかにカーソルを移動しましょう。 + + 2. そこで % とタイプしましょう。 + + 3. カーソルは対応する括弧に移動するはずです。 + + 4. 最初の括弧に移動するには % とタイプしましょう。 + + 5. 他の (,),[,],{ or } でカーソルを移動し、% が何をしているか確認しましょう。 + +---> This ( is a test line with ('s, ['s ] and {'s } in it. )) + + +NOTE: この機能は括弧が一致していないプログラムをデバッグするのにとても役立ち + ます。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4.4: 間違いを変更する方法 + + + ** 'old' を 'new' に置換するには :s/old/new/g とタイプします ** + + 1. 以下の ---> と示された行にカーソルを移動しましょう。 + + 2. :s/thee/the <ENTER> とタイプしましょう。このコマンドはその行で最初に見 + つかったものにだけ行なわれることに気をつけましょう。 + + 3. では :s/thee/the/g とタイプしましょう。行全体を置換することを意味します。 + この変更はその行で見つかった全ての箇所に対して行なわれます。 + +---> thee best time to see thee flowers is in thee spring. + + 4. 複数行から見つかる文字を変更するには + :#,#s/old/new/g #,# には置き換える範囲の開始と終了の行番号を指定しま + す。 + :%s/old/new/g ファイル全体で見つかるものに対して変更する。 + :%s/old/new/gc ファイル全体で見つかるものに対して、1つ1つ確認をとりな + がら変更する。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 4 要約 + + + 1. CTRL-G はファイルでの位置とファイルの詳細を表示します。 + G はファイルの最下行に移動します。 + 数値 G はその行に移動します。 + gg は先頭行に移動します。 + + 2. / の後に語句をタイプすると前方に語句を検索します。 + ? の後に語句をタイプすると後方に語句を検索します。 + 検索の後の n は同じ方向の次の検索を、N は逆方向の検索をします。 + CTRL-O は場所を前に移し、CTRL-I は場所を次に移動します。 + + 3. (,),[,],{, もしくは } 上にカーソルがある状態で % をタイプすると対になる文 + 字へ移動します。 + + 4. 現在行の最初の old を new に置換する。 :s/old/new + 現在行の全ての old を new に置換する。 :s/old/new/g + 2つの # 間で語句を置換する。 :#,#s/old/new/g + ファイルの中の全ての検索語句を置換する。 :%s/old/new/g + 'c' を加えると置換の度に確認を求める。 :%s/old/new/gc + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5.1: 外部コマンドを実行する方法 + + + ** :! の後に実行する外部コマンドをタイプします ** + + 1. 画面の最下部にカーソルが移動するよう、慣れ親しんだ : をタイプしましょう。 + これでコマンドがタイプできる様になります。 + + 2. ここで ! という文字(感嘆符)をタイプしましょう。 + これで外部シェルコマンドが実行できる様になります。 + + 3. 例として ! に続けて ls とタイプし <ENTER> を押しましょう。 + シェルプロンプトのようにディレクトリの一覧が表示されるはずです。 + もしくは ls が動かないならば :!dir を使用しましょう。 + +Note: この方法によってあらゆるコマンドが実行することができます。もちろん引数 + も与えられます。 + +Note: 全ての : コマンドは <ENTER> を押して終了しなければなりません。 + 以降ではこのことに言及しません。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5.2: その他のファイルへ書き込み + + + ** ファイルへ変更を保存するには :w ファイル名 とタイプします ** + + 1. ディレクトリの一覧を得るために :!dir もしくは :!ls とタイプしましょう。 + このあと <ENTER> を押すのは既にご存知ですね。 + + 2. TEST のように、そのディレクトリに無いファイル名を一つ選びます。 + + 3. では :w TEST とタイプしましょう (TEST は、選んだファイル名です)。 + + 4. これによりファイル全体が TEST という名前で保存されます。 + もう一度 :!dir もしくは !ls とタイプして確認してみましょう。 + +Note: ここで Vim を終了し、ファイル名 TEST と共に起動すると、保存した時の + チュートリアルの複製ができ上がるはずです。 + + 5. さらに、次のようにタイプしてファイルを消しましょう(MS-DOS): :!del TEST + もしくは(Unix): :!rm TEST + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5.3: 選択した書き込み + + +** ファイルの位置を保存するには、v モーションと :w FILENAME をタイプします。 ** + + 1. この行にカーソルを移動します。 + + 2. v を押し、以下の第5項目にカーソルを移動します。テキストが強調表示されるの + に注目して下さい。 + + 3. 文字 : を押すと、画面の最下部に :'<,'> が現れます。 + + 4. w TEST (TESET は存在しないファイル名)をタイプします。 + Enter を押す前に :'<,'>w TEST となっていることを確認して下さい。 + + 5. Vim は TEST というファイルに選択された行を書き込むでしょう。 + !dir もしくは !ls でそれを確認します。 + それは削除しないでおいて下さい。次のレッスンで使用します。 + +NOTE: v を押すと、Visual 選択が始まります。カーソルを動かすことで、選択範囲を + 大きくも小さくもできます。さらに、その選択範囲に対してオペレータを適用 + きます。例えば d はテキストを削除します。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5.4: ファイルの取込と合併 + + + ** ファイルの中身を挿入するには :r ファイル名 とタイプします ** + + 1. カーソルを以下の行に合わせます。 + +NOTE: ステップ 2 の実行後、レッスン 5.3 のテキストが現れます。下に下がってこ + のレッスンに移動しましょう。 + + 2. では TEST というファイルを :r TEST というコマンドで読み込みましょう。 + ここでいう TEST は使うファイルの名前のことです。 + 読み込まれたファイルは、カーソル行の下にあります。 + + 3. 取込んだファイルを確認してみましょう。カーソルを戻すと、レッスン5.3 の + オリジナルとファイルによるものの2つがあることがわかります。 + +NOTE: 外部コマンドの出力を読み込むことも出来ます。例えば、 + :r !ls は ls コマンドの出力をカーソル以下に読み込みます。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 5 要約 + + + 1. :!command によって 外部コマンドを実行します。 + + よく使う例: + (MS-DOS) (Unix) + :!dir :!ls - ディレクトリ内の一覧を見る。 + :!del FILENAME :!rm FILENAME - ファイルを削除する。 + + 2. :w ファイル名 によってファイル名というファイルがディスクに書き込まれる。 + + 3. v モーションで :w FILENAME とすると、ビジュアル選択行がファイルに保存さ + れる。 + + 4. :r ファイル名 によりファイル名というファイルがディスクより取込まれ、 + カーソル位置の下に挿入される。 + + 5. :r !dir は dir コマンドの出力をカーソル位置以下に読み込む。 + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.1: オープンコマンド + + + ** o をタイプすると、カーソルの下の行が開き、挿入モードに入ります ** + + 1. 以下の ---> と示された行にカーソルを移動しましょう。 + + 2. o (小文字) をタイプして、カーソルの下の行を開き、挿入モードに入ります。 + + 3. さらに挿入モードを終了する為に <ESC> をタイプします。 + +---> o をタイプするとカーソルは開いた行へ移動し挿入モードに入ります。 + + 4. カーソルの上の行に挿入するには、小文字の o ではなく、単純に大文字の O + をタイプします。次の行で試してみましょう。 + +---> この行の上へ挿入するには、この行へカーソルを置いて O をタイプします。 + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.2: 追加コマンド + + + ** カーソルの次の位置からテキストを追加するには a とタイプします ** + + 1. カーソルを ---> で示された行へ移動しましょう。 + + 2. e を押して li の終端部までカーソルを移動します。 + + 3. カーソルの後ろにテキストを追加するために a (小文字) をタイプします。 + + 4. その下の行ののような単語に完成させます。挿入モードを抜ける為に <ESC> に押 + します。 + + 5. e を使って次の不完全な単語へ移動し、ステップ 3 と 4 を繰り返します。 + +---> This li will allow you to pract appendi text to a line. +---> This line will allow you to practice appending text to a line. + +Note: a, i と A は同じ挿入モードへ移りますが、文字が挿入される位置だけが異なり + ます。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.3: その他の置換方法 + + + ** 1文字以上を置き換えるには大文字の R とタイプしましょう ** + + 1. 以下の ---> と示された行にカーソルを移動します。最初の xxx の先頭に移動し + ます。 + + 2. R を押して、2行目の数値をタイプすることで、xxx が置換されます。 + + 3. 置換モードを抜けるには <ESC> を押します。行の残りが変更されていないままに + なることに注意してください。 + + 5. 残った xxx をステップを繰り返して置換しましょう。 + +---> Adding 123 to xxx gives you xxx. +---> Adding 123 to 456 gives you 579. + +NOTE: 置換モードは挿入モードに似ていますが、全てのタイプされた文字は既存の文字 + を削除します。 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.4: テキストのコピーとペースト + + + ** テキストのコピーにはオペレータ y を、ペーストには p を使います ** + + 1. ---> と示された行へ移動し、カーソルを "a)" の後に置いておきます。 + + 2. v でビジュアルモードを開始し、"first"の手前までカーソルを移動します。 + + 3. y をタイプして強調表示されたテキストを yank (コピー)します。 + + 4. 次の行の行末までカーソルを移動します: j$ + + 5. p を押して貼り付け(put)てから、次をタイプします: a second <ESC> + + 6. ビジュアルモードで " item." を選択し、y でヤンク、次の行の行末まで j$ で + 移動し、 p でテキストをそこに put します。 + +---> a) this is the first item. + b) + + Note: 単語を1つ yank するのに y をオペレータとして yw とすることも出来ます。 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6.5: オプションの設定 + + + ** 検索や置換の際に大文字/小文字を無視するには、オプションを設定します ** + + 1. 次の様に入力して 'ignore' を検索しましょう: /ignore <ENTER> + n を押して何度か検索を繰り返します。 + + 2. 次の様に入力して 'ic' (Ignore Case の略) オプションを設定します: :set ic + + 3. では n によってもう1度 'ignore' を検索します。 + n を押してさらに数回検索を繰り返しましょう。 + + 4. 'hlsearch' と 'incsearch' オプションを設定しましょう: :set hls is + + 5. 検索コマンドを再入力して、何が起こるか見てみましょう: /ignore <ENTER> + + 6. 大文字小文字の区別を無効にするには次の様に入力します: :set noic + +Note: マッチの強調表示をやめるには次の様に入力します: :nohlsearch +Note: 1つの検索コマンドだけ大文字小文字の区別をやめたいならば、フレーズに \c + を使用します: /ignore\c <ENTER> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 6 要約 + + 1. o をタイプするとカーソルの下の行を開けて、そこで挿入モードになる。 + O (大文字) をタイプするとカーソルの上の行で挿入モードになる。 + + 2. カーソル上の文字の次からテキストを追加するには a とタイプする。 + 行末に自動でテキストを挿入するには大文字 A をタイプする。 + + 3. e コマンドは単語の終端部カーソルを移動する。 + + 4. y オペレータはテキストを yank (コピー)し、p はそれを put (ペースト)する。 + + 5. 大文字の R をタイプすると置換モードに入り、<ESC>を押すと抜ける。 + + 6. ":set xxx" とタイプするとオプション "xxx" が設定される。 + 'ic' 'ignorecase' 検索時に大文字小文字の区別しない + 'is' 'incsearch' 検索フレーズに部分マッチしている部分を表示する + 'hls' 'hlsearch' マッチするすべを強調表示する + 長い方、短い方、どちらのオプション名でも使用できます。 + + 7. "no" を付与し、オプションを無効にします: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7.1: オンラインヘルプコマンド + + + ** オンラインヘルプを使用しましょう ** + + Vim には広範にわたるオンラインヘルプシステムがあります。 + ヘルプを開始するには、これら3つのどれか1つを試してみましょう: + - ヘルプキー <HELP> を押す(もしあるならば)。 + - <F1> キーを押す(もしあるならば)。 + - :help <ENTER> とタイプする。 + + ヘルプウィンドウのテキストを読むと、ヘルプの動作が理解できます。 + CTRL-W CTRL-W とタイプすると ヘルプウィンドウへジャンプします。 + :q <ENTER> とタイプすると ヘルプウィンドウが閉じられます。 + + ":help" コマンドに引数を与えることにより、あらゆる題名のヘルプを見つけること + ができます。これらを試してみましょう(<ENTER> をタイプし忘れないように): + + :help w + :help c_<T + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7.2: 起動スクリプトの作成 + + ** Vim の特徴を発揮する ** + + Vim には Vi よりも多くの特徴を踏まえていまが、そのほとんどは初期状態にて + 使用不可となっています。より多くの特徴を使いはじめるには "vimrc" ファイル + を作成します。 + + 1. "vimrc" ファイルの編集を開始する。これはシステムに依存します。 + :edit ~/.vimrc UNIX 向け + :edit $VIM/_vimrc MS-Windows 向け + + 2. ここでサンプルの "vimrc" を読み込みます。 + :read $VIMRUNTIME/vimrc_example.vim + + 3. 以下のようにファイルへ書き込みます。 + :write + + 次回 Vim を起動すると、色づけ構文が使えるようになるでしょう。 + この "vimrc" ファイルへ、お好みの設定を追加することができます。 + より多くの情報を得るには :help vimrc-intro とタイプします。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7.3: 補完 + + + ** CTRL-D と <TAB> でコマンドラインを補完する ** + + 1. コンパチモードでないことを確認します: :set nocp + + 2. 現在のディレクトリに在るファイルを :!ls か :!dir で確認します。 + + 3. コマンドの開始をタイプします: :e + + 4. CTRL-D を押すと Vim は "e" から始まるコマンドの一覧を表示します。 + + 5. <TAB> を押すと Vim は ":edit" というコマンド名を補完します。 + + 6. さらに空白と、既存のファイル名の始まりを加えます: :edit FIL + + 7. <TAB> を押すと Vim は名前を補完します。(もし一つしか無かった場合) + +NOTE: 補完は多くのコマンドで動作します。そして CTRL-D と <TAB> 押してみてくだ + さい。特に :help の際に役立ちます。 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + レッスン 7 要約 + + + 1. ヘルプウィンドウを開くには :help とするか <F1> もしくは <Help> を押す。 + + 2. コマンド(cmd)のヘルプを検索するには :help cmd とタイプする。 + + 3. 別のウィンドウへジャンプするには CTRL-W CTRL-W とタイプする。 + + 4. ヘルプウィンドウを閉じるには :q とタイプする。 + + 5. お好みの設定を保つには vimrc 起動スクリプトを作成する。 + + 6. : command で可能な補完を見るには CTRL-D をタイプする。 + 補完を使用するには <TAB> を押す。 + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + これにて Vim のチュートリアルを終わります。エディタを簡単に、しかも充分に + 使うことができるようにと、Vim の持つ概念の要点のみを伝えようとしました。 + Vim にはさらに多くのコマンドがあり、ここで全てを説明することはできません。 + 以降はユーザマニュアルを参照ください: "help :user-manual" + + これ以後の学習のために、次の本を推薦します。 + Vim - Vi Improved - by Steve Oualline + 出版社: New Riders + 最初の本は完全に Vim のために書かれました。とりわけ初心者にはお奨めです。 + 多くの例題や図版が掲載されています。 + 次のURLを参照して下さい http://iccf-holland.org/click5.html + + 次は Vim よりも Vi について書かれた古い本ですが推薦します: + Learning the Vi Editor - by Linda Lamb + 出版社: O'Reilly & Associates Inc. + Vi でやりたいと思うことほぼ全てを知ることができる良書です。 + 第6版では、Vim についての情報も含まれています。 + + このチュートリアルは Colorado State University の Charles Smith のアイデア + を基に、Colorado School of Mines の Michael C. Pierce と Robert K. Ware の + 両名によって書かれました。 E-mail: bware@mines.colorado.edu. + + Modified for Vim by Bram Moolenaar. + + 日本語訳 松本 泰弘 <mattn_jp@hotmail.com> + 監修 村岡 太郎 <koron@tka.att.ne.jp> + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + vi:set ts=8 sts=4 sw=4 tw=78: From f622a8fa2ad64eb4dcf3f150e8799c19683aad80 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 13 Oct 2011 13:02:27 +0900 Subject: [PATCH 356/783] update submodule --- runtime | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime b/runtime index 3792417e5..b8e3749c4 160000 --- a/runtime +++ b/runtime @@ -1 +1 @@ -Subproject commit 3792417e54e5eaea8645a8d755e3868755b4bcdc +Subproject commit b8e3749c4326c006bc0ef9366ff031d9e9a37e2f From dfd98e570ac0c43cde04329d3c6e9570fc61bf6e Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 13 Oct 2011 13:03:18 +0900 Subject: [PATCH 357/783] vim_faq --- vim_faq/README | 5 + vim_faq/vim_faq.jax | 7153 ++++++++++++++++++++++++++++++++++++++++ vim_faq/vim_faq.txt | 7569 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 14727 insertions(+) create mode 100644 vim_faq/README create mode 100644 vim_faq/vim_faq.jax create mode 100644 vim_faq/vim_faq.txt diff --git a/vim_faq/README b/vim_faq/README new file mode 100644 index 000000000..b6e357de9 --- /dev/null +++ b/vim_faq/README @@ -0,0 +1,5 @@ +[vim_faq : The Vim-FAQ from vimdoc.sourceforge.net] +http://www.vim.org/scripts/script.php?script_id=3298 + +[chrisbra/vim_faq - GitHub] +https://github.com/chrisbra/vim_faq diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax new file mode 100644 index 000000000..85a7b2d32 --- /dev/null +++ b/vim_faq/vim_faq.jax @@ -0,0 +1,7153 @@ +*vim_faq.txt* よく訊かれる質問 + +このファイルをインストールする方法については、vim内で > + :help add-local-help +とタイプしてください。 + +Last updated on: 17 October 2004 + + VIM リファレンスマニュアル by: Yegappan Lakshmanan + +Frequently Asked Questions *faq* *FAQ* + +このVim FAQは、vim@vim.orgメーリングリストとcomp.editorsニューズグループに投稿 +された質問とその答から作られました。Vimにおいて問題を解決する方法はいくつかあ +ります。このFAQを読めば、その数種類の可能性のうちの1つが得られます。このFAQ中 +の情報とリンクを使って他の方法を探すこともできます。このFAQの答に対するクレジ +ットはPeppe, Benji, Charles Campbellと他多数の人々に帰属します。 + + *faq-index* +目次 + *faq-general-information* +SECTION 1 - 一般的な情報 +|faq-1.1| Vimとは何ですか? +|faq-1.2| 誰が Vim を書いたんですか? +|faq-1.3| Vim は Vi と互換性がありますか? +|faq-1.4| Vim が Vi よりも向上している点は何ですか? +|faq-1.5| Vim は無料ですか? + *faq-resources* +SECTION 2 - 情報源 +|faq-2.1| どこに行けば Vim についてもっと学べるでしょうか? +|faq-2.2| メーリング・リストはありますか? +|faq-2.3| メーリング・リストのアーカイブはありますか? +|faq-2.4| HTML/PDF/PS形式のVimユーザマニュアルはどこで手に入りますか? +|faq-2.5| ある問題が発生しました。それが私の設定によるものか、Vimそのものの + 問題かはどうすればわかりますか? +|faq-2.6| どこでバグ報告をすればいいですか? +|faq-2.7| FAQはどこで見つけられますか? +|faq-2.8| このFAQに答えが見つからなかった時、どうすればいいですか? +|faq-2.9| Vimに機能を追加するパッチを持っています。これをどこへ送ればいいで + すか? +|faq-2.10| Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグ + インを開発したり、新しいスクリプトやカラースキームを開発しました。 + これをアップロードできる公開のウェブサイトはありますか? + *faq-availability* +SECTION 3 - 入手 +|faq-3.1| Vim の最新のバージョンは何ですか? +|faq-3.2| どこで Vim の最新版を見つけられますか? +|faq-3.3| どのプラットフォーム上で実行できるんですか? +|faq-3.4| どこでVimのランタイムファイルの最新バージョンをダウンロードできま + すか? + *faq-help* +SECTION 4 - ヘルプ +|faq-4.1| どうやってヘルプ・ファイルを利用するんですか? +|faq-4.2| どうやってVimヘルプファイル中のキーワードを探すんですか? +|faq-4.3| エラーメッセージE123が出ました。なにがまずいのでしょうか? +|faq-4.4| Vimの様々なモードについては何を読めばいいですか? +|faq-4.5| 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファ + イルを生成することができますか? +|faq-4.6| 圧縮したヘルプ・ファイルを使うことはできますか? + *faq-editing-a-file* +SECTION 5 - ファイルの編集 +|faq-5.1| ファイルを編集用に読み込むには? +|faq-5.2| 現在のファイルを別な名前で保存(save as)して新しいファイルを編集す + るには? +|faq-5.3| カレントディレクトリを現在のファイルのディレクトリにするには? +|faq-5.4| ファイルの末尾に改行文字(EOL)をつけずにファイルを書き込むには? +|faq-5.5| ファイルを最後に編集した場所から開くようにするには? +|faq-5.6| Vimでファイルを編集中にそのファイルが他のアプリケーションによって + 変更されたとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイ + アログのような)を開きます。この警告を無効にするには? +|faq-5.7| カーソル下のファイル名のファイルを開くには? +|faq-5.8| 現在のファイルを再読み込みするには? +|faq-5.9| ファイルを定期的に自動保存するには? +|faq-5.10| ファイルを読み取り専用モードで開くには? + *faq-editing-multiple-files* +SECTION 6 - 複数のファイルを編集する +|faq-6.1| Vim内で同時に複数のファイルを開くには? +|faq-6.2| 複数のファイル・バッファを切り替えるには? +|faq-6.3| それぞれのファイルを別ウィンドウで開くには? +|faq-6.4| 「ワークセット」や「プロジェクト」のように自動的に複数のファイルを + 同時に読み込ませるようにするには? +|faq-6.5| Neditやemacsのように単一のVimインスタンスで複数のトップレベルウィ + ンドウを開くことはできますか? +|faq-6.6| Vim内でディレクトリをブラウズするには? +|faq-6.7| ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? + *faq-backup* +SECTION 7 - バックアップ +|faq-7.1| ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけた + ファイルが作られます。このファイルを作成するのを止めさせるには? + (または)バックアップ機能を無効にするには? +|faq-7.2| 全てのバックアップファイルを特定のディレクトリに保存するように設定 + するには? +|faq-7.3| ファイルを保存するとファイルパーミッションが変更されます。ファイル + パーミッションを変更せずにファイルを保存するよう設定するには? + *faq-buffers* +SECTION 8 - バッファ +|faq-8.1| バッファに対して変更を加えました。変更されたバッファを保存せずに、 + かつ変更を失うことなく他のバッファを編集するには? +|faq-8.2| バッファを切り替えるときに自動的に保存するよう設定するには? +|faq-8.3| カレントウィンドウのバッファを空バッファにするには? +|faq-8.4| バッファ番号を指定してバッファを読み込むショートカットキーはありま + すか? +|faq-8.5| 読み込んでいるバッファをそれぞれ別のウィンドウで開くには? +|faq-8.6| Vimを終了することなくバッファを閉じる(削除する)には? +|faq-8.7| :e filenameでいくつかのファイルを開きました。Vimを終了することなく + そのバッファのうちの1つを閉じるには? +|faq-8.8| ":%bd"コマンドで全バッファを削除しようとしても、全てのバッファが + 削除されません。なぜ? +|faq-8.9| カレントバッファ/ファイルのバッファ番号を表示するには? +|faq-8.10| ウィンドウを閉じることなくバッファを削除するには? +|faq-8.11| Tabキーで全バッファを巡回するようにマップするには? + *faq-windows* +SECTION 9 - ウィンドウ +|faq-9.1| ウィンドウとバッファの違いは? +|faq-9.2| ウィンドウの幅を広げるには? +|faq-9.3| ウィンドウをズームイン・ズームアウトするには? +|faq-9.4| 全バッファまたは全ウィンドウ、引数リスト中の全ファイルに対してex + コマンドを実行するには? + *faq-motion* +SECTION 10 - モーション +|faq-10.1| ファイルの先頭や末尾に移動するには? +|faq-10.2| インサートモードで<Esc>キーを押してノーマルモードに移行すると、カ + ーソルが1文字左へ移動します(カーソルが行の最初の文字の上にあるとき + を除いて)。この動作を変更し、カーソルがその桁の上に残るようにでき + ますか? +|faq-10.3| <Page Up>、<Page Down>などのキーを押してスクロールしたときカーソル + 位置の桁を保つように設定することはできますか? +|faq-10.4| ファイル中のある行の長さが画面の幅を越えており、折り返されていま + す。ここでj, kキーを使うと画面上の次行(物理行)でなくファイルの次行 + (論理行)に移動します。画面上の次行に移動するには? +|faq-10.5| Vimにおける文、段落、セクションの定義は? +|faq-10.6| 文、段落、セクションの先頭と末尾に移動するには? +|faq-10.7| 画面の右端を越えて続いている行があります。右側にスクロールして画面 + 外に出ているテキストを表示するには? +|faq-10.8| 2個以上のバッファを同時にスクロールさせるには? +|faq-10.9| 矢印キーを使うとモードが変わり、バッファに変な文字が挿入され、カー + ソルが適切に移動しません。どうなっているのですか? +|faq-10.10| カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するよう + にするには? +|faq-10.11| 常にインサートモードに留まるようにするには?(モードレスな編集をす + るには?) +|faq-10.12| テキストをスクロールするとき、前後の行を表示するには? +|faq-10.13| 以前のカーソル位置に戻るには? + *faq-searching-text* +SECTION 11 - テキストを検索する +|faq-11.1| テキストを検索した後、マッチしたテキストが全て強調されます。この強 + 調を一時的/永続的に無効にするには? +|faq-11.2| 検索パターンにキャリッジリターン文字を含めるには? +|faq-11.3| 文字^Mを検索するには? +|faq-11.4| '~R', '~S'などと表示される文字を検索・置換するには? +|faq-11.5| ファイル中の印字不能文字を全て強調するには? +|faq-11.6| 単語に完全に一致するテキストを検索するには? +|faq-11.7| カーソル下の単語を検索するには? +|faq-11.8| 大文字・小文字を区別せず検索するには? +|faq-11.9| 2回続けて現れる単語を検索するには? +|faq-11.10| ある単語がバッファ中に何回現れるか数えるには? +|faq-11.11| 検索時にカーソルをマッチした単語の末尾に移動させるには? +|faq-11.12| 空行を検索するには? +|faq-11.13| 1つの文字だけを含む行を検索するには? +|faq-11.14| 複数のファイルから文字列を検索し、置換するには? +|faq-11.15| マップ中で置換コマンド":s"を使っています。検索が失敗したときマップ + が途切れてしまいます。置換が失敗したときにもマップの次のコマンドを + 続けてほしいのですが、どうすればできますか? +|faq-11.16| 行からある文字がn回目に現れる箇所を検索するには? +|faq-11.17| タブ(やその他の文字)を改行文字で置換するには? +|faq-11.18| アスキーコードで検索する文字を指定するには? +|faq-11.19| 長い行を見つけるには? +|faq-11.20| カレントバッファ内の指定したパターンを含む行を全て表示するには? +|faq-11.21| 複数行にわたる文字列を検索するには? +|faq-11.22| バッファの指定した範囲内から検索するには? + *faq-changing-text* +SECTION 12 - テキストを変更する +|faq-12.1| 行末の空白文字(スペースとタブ)を全て削除するには? +|faq-12.2| 連続する空白文字を1個のスペースに置換するには? +|faq-12.3| 連続する空行を1行だけに圧縮するには? +|faq-12.4| ファイル中の空行を全て削除するには?空白文字だけを含む行を全て削除 + するには? +|faq-12.5| カーソル下の単語をコピー/ヤンクするには? +|faq-12.6| 行全体ではなく、行内のある位置からある位置までをヤンクするには? +|faq-12.7| 現在のレジスタの中身に追加ヤンクするには? +|faq-12.8| 複数行にわたる文全体をヤンクするには? +|faq-12.9| あるパターンを含む行全てをヤンクするには? +|faq-12.10| あるパターンを含まない行全てを削除するには? +|faq-12.11| "pattern"を含む全ての行の前に行を追加するには? +|faq-12.12| 前の行が特定のパターンを含んでいる行に対して操作を行うには? +|faq-12.13| あるパターンを含む行全てに対してコマンドを実行するには? +|faq-12.14| カーソル位置の1文字上の文字をカーソル位置にコピーするには? +|faq-12.15| インサートモードに入らずに現在行の前/後に空行を挿入するには? +|faq-12.16| カレントファイルの名前をカレントバッファに挿入するには? +|faq-12.17| レジスタの中身をカレントバッファに挿入するには? +|faq-12.18| 行末を越えてカーソルを移動し、テキストを挿入するには? +|faq-12.19| カーソル下の単語(例えばjunk)を"foojunkbar"に置き換えるには? +|faq-12.20| ディレクトリ中の全てのファイルに対して特定のテキストを置換する + には? +|faq-12.21| ファイル中に数字が書かれています。これを増加・減少させるには? +|faq-12.22| ":substitute"で最後に検索したパターンを再利用するには? +|faq-12.23| ":substitute"を使って大文字・小文字を入れかえるには? +|faq-12.24| キーボード上に無い文字を入力するには? +|faq-12.25| ダイグラフのどれか、または全てを削除するコマンドはありますか? +|faq-12.26| インサートモードでバックスペースキーを押すと、今回のインサートモー + ドで入力した文字が消されるだけです。バックスペースキーで前回のイン + サートモードで入力した文字を消すには? +|faq-12.27| 72文字より長くて"+"で終わり、次行に折り返されている行があります。 + このような行をすばやく連結させるには? +|faq-12.28| 文字単位でヤンクされたテキストを新しい行にペーストするには? +|faq-12.29| 単語・文字・テキストのブロックの大文字小文字を入れかえるには? +|faq-12.30| キーボード上にないアスキー文字を入力するには? +|faq-12.31| ファイル中の印字不能文字を置換するには? +|faq-12.32| バッファから重複した行を削除するには? +|faq-12.33| ファイル中の全ての行の前に行番号をつけるには? +|faq-12.34| 2つの文字・単語・行を入れ換えるには? + *faq-completion-in-insert-mode* +SECTION 13 - インサートモードでの補完 +|faq-13.1| インサートモードで単語や行を補完するには? +|faq-13.2| インサートモードでファイル名を補完するには? +|faq-13.3| インサートモードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 + 今補完した単語の後に現れる単語を補完するには? + *faq-text-formatting* +SECTION 14 - テキストの整形 +|faq-14.1| 折り返された行の末尾に改行を挿入するには? +|faq-14.2| 1行がn文字以下になるように長い行を整形するには? +|faq-14.3| 短い行を連結して段落を形成するには? +|faq-14.4| 箇条書きや番号つきリストを整形するには? +|faq-14.5| インサートモードで行をインデントするには? +|faq-14.6| ファイル全体を整形・インデントするには? +|faq-14.7| 現在のファイルのインデントを増やす/減らすには? +|faq-14.8| ブロックまたは行のグループをインデントするには? +|faq-14.9| >または<キーで行をインデントすると、'tabstop'で設定した値でなく、 + 標準的なタブストップ値の8が使われます。なぜですか? +|faq-14.10| オートインデントを無効にするには? +|faq-14.11| メールを編集するときは自動的に'textwidth'オプションをある値にする + ようにするには? +|faq-14.12| 自動的に改行を挿入させることはできますか? +|faq-14.13| ファイル中に^Mという記号がたくさん表示されます。'fileformat'を + 'dos'にしたり'unix'にしたり'mac'にしたりしてみましたが、改善できま + せん。これらの記号を表示させなくするには? +|faq-14.14| 他のアプリケーションからVimのバッファへテキストを貼り付けたとき、 + 挿入されたテキストの桁(インデント)が狂ってしまいます。 + これを直すには? +|faq-14.15| 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきら + ないとき、まったく何も表示されません。折り返された行の代わりに'@' + という記号で始まる空の行が表示されます。行が収まるように画面をスク + ロールすると'@'は消え、行が表示されるようになります。この挙動の設 + 定はどうやるのですか? +|faq-14.16| ファイル中の全てのタブ文字をスペースに変換するには? +|faq-14.17| 後でワードプロセッサに送るテキストを編集するためのオプションは? + *faq-visual-mode* +SECTION 15 - ビジュアルモード +|faq-15.1| 矩形範囲をコピーするには? +|faq-15.2| ファイルの特定の列を削除・変更するには? +|faq-15.3| ビジュアル選択した行に対してexコマンドを適用するには? +|faq-15.4| 矩形選択した範囲に対してexコマンドを適用するには? +|faq-15.5| ビジュアルモードでファイル全体を選択するには? +|faq-15.6| ビジュアル選択してから>キーを押してインデントすると、選択が解除さ + れます。この範囲に対して操作を続けるため選択したままにするには? + (または)最後に選択された範囲を再選択するには? +|faq-15.7| ビジュアル選択した範囲の先頭/末尾へ移動するには? +|faq-15.8| マウスでテキストを選択してからexコマンドを実行しようと:キーを押す + と選択された範囲が文字:で置換されてしまいます。マウスで選択したと + きもビジュアル選択したときのようにテキストに対してexコマンドを実行 + するには? +|faq-15.9| マウスでテキストを選択するとビジュアルモードでなく選択モードに入っ + てしまいます。なぜですか? +|faq-15.10| 最後にコピー/ペーストされたテキストをビジュアル選択するには? + *faq-command-line-mode* +SECTION 16 - コマンドラインモード +|faq-16.1| コマンドモードまたはexコマンドモードでカレントファイル名を使うには? +|faq-16.2| Vimのコマンドラインで効率的にテキストを編集するには? +|faq-16.3| ViモードからExモードに移行するには? +|faq-16.4| exコマンドの出力をバッファにコピーするには? +|faq-16.5| コマンドモードでファイル名を補完しようとタブキーを押します。マッチ + するファイル名が複数ある時、Vimは最初にマッチするファイル名を補完 + し、マッチしたファイル名全てのリストを表示します。マッチしたファイ + ル名全てを表示するだけで、最初の候補を補完しないようにするには? +|faq-16.6| バッファからコマンドラインにテキストをコピーしたり、コマンドライン + からバッファにテキストをコピーするには? +|faq-16.7| あるコマンドを実行することなくコマンド履歴に入れるには? +|faq-16.8| コマンドラインの高さを上げるには? + *faq-viminfo* +SECTION 17 - VIMINFO +|faq-17.1| Vimを起動したときviminfoファイルに不正な文字があるとエラーメッセー + ジが出ます。このメッセージを出なくさせるには? +|faq-17.2| viminfo機能を無効にするには? +|faq-17.3| Vimのセッションをまたいでマークを保存し、使用するには? + *faq-remote-editing* +SECTION 18 - リモート編集 +|faq-18.1| 既に起動しているgvimでファイルを開くには? Vim 5.xの + OpenWithVim.exeとSendToVim.exeはどうなりました? +|faq-18.2| vimサーバに全てのバッファをディスクに保存するようなコマンドを送る + には? +|faq-18.3| Vimのリモートサーバ機能についてのドキュメントはどこで手に入ります + か? + *faq-options* +SECTION 19 - オプション +|faq-19.1| Vimを設定する簡単な方法は? +|faq-19.2| オプションの値をトグルするには? +|faq-19.3| 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプション + を設定するには? +|faq-19.4| オプションの値にスペースを含めるには? +|faq-19.5| オプション設定をファイルに埋め込むには? +|faq-19.6| ファイル中の全ての行の行番号を表示するには? +|faq-19.7| 'number'オプションで表示される行番号の幅を変えるには? +|faq-19.8| スペース、タブ、改行などの不可視文字を表示するには? +|faq-19.9| 常に現在行と桁番号を表示するようにするには? +|faq-19.10| 現在のモードを表示するようにするには? +|faq-19.11| ステータスラインに入力途中のコマンドを表示するようにするには? +|faq-19.12| ステータスラインに異なる設定・値を表示するようにするには? +|faq-19.13| 常にステータスラインを表示するようにするには? +|faq-19.14| Vimを再起動しても設定が永続するようにするには? +|faq-19.15| なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュす + る)のですか? +|faq-19.16| 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示する + ようにするには? +|faq-19.17| 1回の":set"コマンドでオプションから複数のフラグを除去するには? + *faq-mapping-keys* +SECTION 20 - キーマップ +|faq-20.1| キーがどうマップされているかを知るには? +|faq-20.2| ユーザ定義のキーマッピングをリストするには? +|faq-20.3| キーマップを解除するには? +|faq-20.4| キー<xxx>へマッピングができません。なにがまずいのですか? +|faq-20.5| テンキーにマップするには? +|faq-20.6| ビジュアルモードでのみ機能するマッピングを作成するには? +|faq-20.7| Vimスクリプト中で、すでに使われているキーと衝突しないようにどの + キーを使うべきかを知るには? +|faq-20.8| エスケープキーにマップするには? +|faq-20.9| あるキーをなにもしないようにマップするには? +|faq-20.10| Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブ + ロックをアンインデンとするようにしたいです。このようなマップを作る + には?この挙動はtextpadやVisual Studioなどに似ています。 +|faq-20.11| 私のマッピングにおいて<CR>のような特殊文字が認識されません。 + 特殊文字を認識するように設定するには? +|faq-20.12| マップ中で'|'を使って複数のコマンドを区切るには? +|faq-20.13| その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 + 入力があります。最初のものを入力したとき、2番目のが展開しないよう + にするには? +|faq-20.14| ときどきキーが処理されるのに1秒程度かかるのはなぜですか? +|faq-20.15| ビジュアル選択したテキストに対して外部コマンドを実行するマッピング + を作るには? +|faq-20.16| <Tab>キーの機能を保ったままCtrl-Iにマッピングするには? + *faq-abbreviations* +SECTION 21 - 短縮入力 +|faq-21.1| スペリングを間違えた単語を自動的に修正するには? +|faq-21.2| 複数行の短縮入力を作るには? +|faq-21.3| 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペース + が入ってしまいます。これを防ぐには? +|faq-21.4| 現在の日付・時刻を挿入するには? +|faq-21.5| インサートモードで短縮入力が展開されるのを防ぐには? + *faq-record-and-playback* +SECTION 22 - レコーティングと繰り返し +|faq-22.1| 編集操作(挿入、削除、ペースト等)を繰り返すには? +|faq-22.2| キーシーケンスを記録し、繰り返すには? +|faq-22.3| 記録したキーシーケンスを編集するには? +|faq-22.4| 記録したキーシーケンスをファイルに保存するには? +|faq-22.5| レジスタ0にキーシーケンスを保存しています(つまり q0 .... q)。 + 記録したキーシーケンスの中でテキストをヤンクしています。一度そのキー + シーケンスを再生すると、もうそれを再現することができません。 + *faq-autocommands* +SECTION 23 - 自動コマンド +|faq-23.1| 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? +|faq-23.2| あるバッファに入るときに毎回コマンドを実行するには? +|faq-23.3| あるウィンドウに入るときに毎回コマンドを実行するには? +|faq-23.4| autocmd中でその自動コマンドが実行されているファイルの名前やバッフ + ァ番号を知るには? +|faq-23.5| Vimがフォーカスを失ったとき、変更されたバッファ全てを自動的に保存 + するには? +|faq-23.6| Vimを終了するときにクリーンアップ用の関数を実行するには? + *faq-syntax-highlight* +SECTION 24 - 構文強調 +|faq-24.1| 構文強調をオン・オフにするには? +|faq-24.2| 背景色と文字色を変えるには? +|faq-24.3| 暗い/明るい背景色に合うように色を変えるには? +|faq-24.4| ":set number"をしたときに表示される行番号の色を変えるには? +|faq-24.5| ビジュアルモードで選択された範囲の背景色を変えるには? +|faq-24.6| オプション'list'で表示した特殊文字(タブ、行末の空白、行末など)に色 + をつけるには? +|faq-24.7| 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? +|faq-24.8| 正しく構文強調されません。ファイルの一部が強調されなかったり、間違 + って強調されてしまいます。 +|faq-24.9| 対応する括弧を強調する組み込みの関数はありますか? +|faq-24.10| Cのコメントの構文強調をオフにするには? +|faq-24.11| Vimに付属する標準の構文ファイルに私自身の構文拡張を加えるには? +|faq-24.12| Vimに付属の標準の構文ファイルを独自の構文ファイルで置き換えるには? +|faq-24.13| 特定の桁以降の全ての文字を強調するには? +|faq-24.14| ソースファイル(.c, .hなど)を構文強調つきでHTMLファイルに変換するに + は? +|faq-24.15| 現在の強調グループ定義を全て表示するには? + *faq-vim-script-writing* +SECTION 25 - VIMスクリプトを書く +|faq-25.1| 読み込まれているスクリプトを全て表示するには? +|faq-25.2| Vimスクリプトをデバッグするには? +|faq-25.3| あるオプションを設定したスクリプト/プラグインを探すには? +|faq-25.4| (おそらくスクリプトを実行中に)エラーやメッセージが出るのですが、す + ぐに消えてしまいます。このメッセージをもう一度表示するには? +|faq-25.5| プラグイン固有の情報を保存し、Vimを再起動したときそれを復元するに + は? +|faq-25.6| 関数の中からインサートモードを開始するには? +|faq-25.7| 関数の中でカーソル位置を動かすには? +|faq-25.8| .vimrcファイルの中で環境変数の値をチェックするには? +|faq-25.9| 環境変数が定義されているかどうかをチェックするには? +|faq-25.10| Vimの組み込み関数を呼ぶには? +|faq-25.11| Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対 + してユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマン + ドがVimの標準の機能を果たすようにするには? +|faq-25.12| ビジュアルモードで現在選択されているテキストを変数やレジスタに入れ + るには? +|faq-25.13| 変数'myvar'にテキストが入っています。この変数を":s"中で使って'mytext' + というテキストを置換したいのですが、どうすればいいですか? +|faq-25.14| 変数"bno"がバッファ番号を保持しています。この変数を使って対応する + バッファを開くには? +|faq-25.15| オプションの値を変数に保存するには? +|faq-25.16| 関数の中でテキストをコピーし、バッファに挿入しました。関数の中で + そのテキストをインデントするには? +|faq-25.17| Vimスクリプト中でカーソル下の文字を取得するには? +|faq-25.18| 拡張子を除いたカレントファイル名を取得するには? +|faq-25.19| カレントファイルのベース名(basename)を取得するには? +|faq-25.20| 関数の結果をカレントバッファに挿入するには? +|faq-25.21| 関数の中で外部プログラムを呼ぶには? +|faq-25.22| ":!"で実行したプログラムが返すステータス値を取得するには? +|faq-25.23| カレントバッファが変更されているかどうかを知るには? +|faq-25.24| スクリプト中でノーマルコマンドの中に改行文字を使いたいです。改行文 + 字を指定するには? +|faq-25.25| スクリプト中で長い行を次行に継続するには? +|faq-25.26| "execute 'echo Myfunc()'"として自作の関数を呼ぼうとすると、カーソ + ルがカレントバッファの先頭に移動してしまいます。なぜ? +|faq-25.27| レジスタの中身を実行するには? +|faq-25.28| 関数やマップを呼んだ後に'u'キーを押してアンドゥするとその関数/ + マップによってなされた変更全てをアンドゥします。なぜ? +|faq-25.29| s:つきで定義された関数(スクリプトローカル関数)を別のスクリプト/ + プラグインから呼ぶには? +|faq-25.30| 読み込んだスクリプトをun-sourceするには?言い替えると、スクリプト + を読み込んだことによって実行されたコマンドを全て戻すには? + *faq-plugins* +SECTION 26 - プラグイン +|faq-26.1| ファイル形式ごとに異なるオプションを設定するには? +|faq-26.2| プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイル + タイププラグインをダウンロードしました。Vimがこれらのファイルを読 + み込むようにするには、どこにコピーすればいいですか? +|faq-26.3| 既存のファイル形式別プラグインを拡張するには? +|faq-26.4| プラグインの読み込みをオフにするには? +|faq-26.5| ファイル形式別プラグインの読み込みをオフにするには? +|faq-26.6| 全てのファイル形式に対し、グローバルのファイル形式別プラグインで + なされる設定を上書きするには? +|faq-26.7| Vimのディレクトリブラウザプラグインを無効にするには? +|faq-26.8| 特定のパターンにマッチする名前のファイルや拡張子に応じてファイル + タイプオプションを設定するには? + + *faq-editing-program-files* +SECTION 27 - プログラムファイルを編集する +|faq-27.1| C/C++のファイルに対してオートインデントを有効化するには? +|faq-27.2| C/C++のファイルに対するインデントをカスタマイズするには? +|faq-27.3| オートインデント機能を無効化するには? +|faq-27.4| オートインデントの際に挿入されるスペースの数を変えるには? +|faq-27.5| Cプログラムを編集しています。マクロ定義や変数を表示するには? +|faq-27.6| Cプログラムを編集しています。ブロックの内側から、そのブロックの開 + 始位置や終了位置にジャンプするには? +|faq-27.7| C++ファイルで"//"コメントが自動的に挿入されるのを止めさせるには? +|faq-27.8| 一連の行の行頭にコメント文字'#'をつけ加えるには? +|faq-27.9| Cのソースファイルに対応する名前のヘッダファイルを開くには? +|faq-27.10| コメントを入力しているとき、自動的にコメント文字を挿入するには? + *faq-quickfix* +SECTION 28 - QuickFix +|faq-28.1| Vimの中からプログラムをビルドするには? +|faq-28.2| Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパ + イルしてエラーメッセージを出力します。しかしコンパイルが終わると表 + 示が消えてしまい、エラーメッセージをもう一度見るには:clistとしなけ + ればなりません。このエラーメッセージを見るのに他の方法はありません + か? + *faq-folding* +SECTION 29 - 折り畳み +|faq-29.1| 折り畳みの機能を拡張するには? +|faq-29.2| 'foldmethod'をセットして折り畳みを有効化すると、全ての折り畳みが閉 + じてしまいます。これを防ぐには? +|faq-29.3| ファイルの編集を開始したときにいくつの折り畳みが開かれた状態にする + かをコントロールするには? +|faq-29.4| マウスを使って折り畳みを開閉するには? +|faq-29.5| 閉じた折り畳みの表示に使われるテキストを変更するには? +|faq-29.6| Vimを終了・再起動するとき、手動で作った折り畳みを保存・復元するに + は? + *faq-vim-with-external-applications* +SECTION 30 - 外部プログラムとの連携 +|faq-30.1| Vimのウィンドウの中でシェルを起動することはできますか? +|faq-30.2| カーソル下の単語を外部プログラムに渡すには? +|faq-30.3| シェルコマンドの出力をVimのバッファに取り込むには? +|faq-30.4| カレントバッファの中身を外部プログラムにパイプで渡して、そのプログ + ラムの出力でバッファを置き換えるには? +|faq-30.5| ファイル中のあるセクションをソートするには? +|faq-30.6| Vimとslrnといっしょに使うステップ・バイ・ステップガイドはあります + か? +|faq-30.7| Vimをページャとして使うには? +|faq-30.8| Vimの中でUnixのmanページを見るには? +|faq-30.9| Vimのdiff機能で使われるdiffコマンドを変更するには? +|faq-30.10| 折り畳みなしでdiffモードを使うには? + *faq-gui-vim* +SECTION 31 - GUIのVIM +|faq-31.1| バッファ固有のメニューを作るには? +|faq-31.2| GUIのVimで使われるフォントを変更するには? +|faq-31.3| GUIのVimが起動したときのウィンドウの位置を指定するには? +|faq-31.4| GVimに水平スクロールバーをつけるには? +|faq-31.5| スクロールバーをデフォルトで左側に表示するようにするには? +|faq-31.6| メニューバーを消すには? +|faq-31.7| GVimを使っています。ALTキーと文字キーを押すとその文字で始まるメニ + ューが選択されます。ALT-<key>の組合せを使いたいので、この挙動はや + めてほしいです。どうすればいいですか? +|faq-31.8| スクロールバーをドラッグしたとき、カーソル位置を動かさずにテキスト + をスクロールさせることは可能ですか? +|faq-31.9| ":browse"を使ったときに特定のディレクトリから始めるようにするには? +|faq-31.10| ファイルがVimの外部で変更されたときなど、問い合わせがあるとき、GUI + のダイアログボックスが表示されます。コンソールのダイアログボック + スが出るようにするには? +|faq-31.11| GVimをアプリケーションxxx用のエディタとして使っています。アプリケ + ーションxxxがGVimを起動すると、コントロールがすぐにアプリケーショ + ンxxxに戻ってしまいます。Vimを終了したとき初めてアプリケーション + xxxにコントロールが戻るようにGVimを起動するには? +|faq-31.12| なぜ、システムにインストールされているフォント全てが「フォントを + 選ぶ」ダイアログに現れないのですか? +|faq-31.13| コマンドラインモードでマウスを使うには? +|faq-31.14| テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコピ + ーしたテキストがペーストされてしまいます。この挙動を無効にするには? +|faq-31.15| GVimウィンドウの位置とサイズを変更するには? + *faq-vim-on-unix* +SECTION 32 - UNIX上のVim +|faq-32.1| xtermでVimを実行しています。CTRL-Sを押すとVimがフリーズします。 + どうすればいいですか? +|faq-32.2| 画面の更新について奇妙な問題があります。これを解決するには? +|faq-32.3| Vimのターミナル/コンソール版を使っています。インサートモードでバッ + クスペースキーを押してもカーソルの前の文字が消えません。どう設定す + れば良いですか? +|faq-32.4| xtermでVimを使っています。Vimを終了すると画面が元の状態に復元され + ます。これを無効化するには? +|faq-32.5| Vimの起動にかなり時間がかかります。起動時間を最小化するには? +|faq-32.6| Unixのgvimでカーソルの点滅を止めるには? +|faq-32.7| GTK Vimのメニューのフォントを変えるには? +|faq-32.8| Vimが<Ctrl-Z>でサスペンドするのを防ぐには? +|faq-32.9| Vimを実行しているxtermをkillすると、Vimのプロセスが生き残り、多大 + なCPU時間(99%)を食ってしまいます。なぜこうなるのですか? +|faq-32.10| Unixターミナルで構文強調を使うには? + *faq-vim-on-ms-windows* +SECTION 33 - MS-Windows上のVim +|faq-33.1| MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。 + どうなっているのですか? +|faq-33.2| CTRL-Yキーを押すとCTRL-Rのような動作をします。CTRL-YをCTRL-Yとして + 扱うように設定するには? +|faq-33.3| 常にGVimのウィンドウを最大化して起動するには? +|faq-33.4| なんらかの編集操作をするとVimがフリーズします。カーソルは空の四角 + 形になります。全然文字が入力できません。どうなっているのですか? +|faq-33.5| Windows XPを使っています。最大化したGVimの表示速度がとても遅いで + す。表示の更新を早くするには? +|faq-33.6| VimをCygwin上で使うにあたって推奨される設定は? +|faq-33.7| diffモードでGNU diffを使おうとしています。コマンドラインからdiffを + 使うとうまく動くのですが、Vim内で使おうとすると動きません。どうす + れば? +|faq-33.8| Outlookで外部エディタにVimを使うことはできますか? +|faq-33.9| HTMLファイルを編集するのにVimを使っています。現在開いているHTML + ファイルをインターネットエクスプローラでプレビューするには? +|faq-33.10| VimをMicrosoft Visual Studioといっしょに使いたいです。どうすれば? +|faq-33.11| どこに_vimrcと_gvimrcを置けばいいですか? +|faq-33.12| ファイルを保存する度に、そのファイルがVimの外部で変更されていると + 警告が出ます。なぜですか? + *faq-printing* +SECTION 34 - 印刷 +|faq-34.1| 全ての行に行番号をつけて印刷するには? +|faq-34.2| 構文強調の色をつけてファイルを印刷するには? + *faq-building-vim-from-source* +SECTION 35 - Vimをソースからビルドする +|faq-35.1| Unixシステム上でVimをソースからビルドするには? +|faq-35.2| Unixでホームディレクトリなど、デフォルトのディレクトリ以外にVimを + インストールするには? +|faq-35.3| MS-Windowsシステム上でVimをソースからビルドするには? +|faq-35.4| 私がインストールしたVimにはヘルプ、構文ファイル、インデントファイ + ルが欠けています。それらのファイルをインストールするには? +|faq-35.5| Vimをソースからビルドして"make install"でインストールしました。Vim + のソースディレクトリを残しておく必要はありますか? +|faq-35.6| ある機能がコンパイル時に有効化されているかどうかを知るには? +|faq-35.7| GUI機能なしでVimをビルドすることはできますか? +|faq-35.8| Unixシステム上でVimをビルドするとき、"undefined reference to + term_set_winsize"というエラーが出ます。これを解決するには? +|faq-35.9| GTK 2.03を使おうとしているのですが、Vimのconfigureがgtk-configがな + いとのメッセージを出します。しかしGTK2は一般的なpkg-configを使うよ + うになったので、これは正しいのです。gtk用のインクルードファイルと + ライブラリのリストを出力するpkg-configならありますが、なぜかconfi + gureスクリプトはこれを使ってくれません。 + *faq-various* +SECTION 36 - 様々な事柄 +|faq-36.1| Vimでバイナリフィルを編集するには? +|faq-36.2| ビジュアルエラーフラッシュとエラービープを無効にするには? +|faq-36.3| バッファに表示されている文字のアスキーコードを表示するには? +|faq-36.4| コマンドのカウントとして0を使うことはできますか? +|faq-36.5| Vimの起動時の画面を表示させなくするには? +|faq-36.6| "hit enter to continue"プロンプトを避けるには? +|faq-36.7| コマンドラインからVimを起動して一連のファイルに対して一連のコマン + ドを実行するには? +|faq-36.8| インサートモードから抜けることなくノーマルモードコマンドを実行する + には? + *faq-unicode* +SECTION 37 - ユニコード +|faq-37.1| Vimでユニコードのファイルを作ることはできますか? +|faq-37.2| ユニコードのファイルを編集するにあたって特に重要な設定は? +|faq-37.3| オプション'encoding'とは何ですか? +|faq-37.4| Vimでは様々なユニコードエンコーディングをどう表記しますか? +|faq-37.5| バイト順マークの有無を指定するには? +|faq-37.6| オプション'fileencoding'とは何ですか? +|faq-37.7| オプション'fileencodings'とは何ですか? +|faq-37.8| オプション'termencoding'とは何ですか? +|faq-37.9| オプション'bomb'とは何ですか? +|faq-37.10| これらのオプションの典型的な例はどこにありますか? +|faq-37.11| ユニコードの文字を挿入するには? +|faq-37.12| どのダイグラフがどの文字に定義されているかを知るには? + +============================================================================= + *faq-1* +SECTION 1 - 一般的な情報 + + *faq-1.1* +1.1. Vimとは何ですか? + +Vim とは Vi IMproved を表します。かつては Vi IMitation の略でしたが、あまりに +多くの改良があったため名前の変更は適切なものでした。Vim は、Unix プログラムの +"Vi" のほとんど全てのコマンドや、多くの新しいコマンドを含んだテキスト・エディ +タです。全てのコマンドはキーボードで与えることができます。これには、指はキー +ボードに置いたまま、目はスクリーンに向けておけるという利点があります。望む人に +は、マウス・サポートや、スクロールバーとメニューのついた GUI 版もあります。 + +Vim はエディタであって、ワード・プロセッサではありません。ワード・プロセッサは +主にテキストのレイアウトを行うのに使われます。つまり、位置決めや、表示時の見え +方を変えたり、ということです。たいてい最終的なドキュメントは他の人に満足いくよ +うに見せるため、印刷したり活字に組んだりなどするよう意図されます。ワード・プロ +セッサの例は、Microsoft Word、WordPerfect、FrameMaker、AmiPro です。 + +エディタは単純にテキストを入力するためのものです。ドキュメントの植字やレイアウ +トは二次的なものです。エディタにおいて、主な関心事はテキスト入力であり、テキス +トを良く見せることではありません。Vim や Vi 以外のエディタの例は、Emacs、 +Crisp、Brief、xedit です。そして Notepad も。 + +さらなる情報については以下を参照してください。 > + + :help intro +< + *faq-1.2* +1.2. 誰が Vim を書いたんですか? + +Vim のほとんどは Bram Moolenar によって書かれましたが、他に貢献した人々の名前 +はここでは多すぎて触れられません。完全なリストは ":h credits" を見てください。 + +Vim は、Tim Thompson、Tony Andrews、G.R. (Fred) Walter らによって開発された +Stevie に基づいています。 + +さらなる情報については以下を参照してください。 > + + :help author +< + *faq-1.3* +1.3. Vim は Vi と互換性がありますか? + +非常に。コマンドラインフラグ"-C"を使えばVimをVi互換モードで起動することが +できます: > + + $ vim -C +< +また、 > + + $ vim -u NONE +< +ともできます。'compatible'オプションをセットすればViとの互換を有効化できます: > + + :set compatible +< +さらなる情報については以下を参照してください。 > + + :help -C + :help 'compatible' + :help compatible-default +< + *faq-1.4* +1.4. Vim が Vi よりも向上している点は何ですか? + +ここにあるのは短い要約です。以下のリストは Vim が徹底して現代的で、機能がぎゅ +っと詰め込まれたエディタであることを示すものです。今日のエディタの標準的な機能 +は実装されており、一般的なパワーユーザーやプログラマ向けの機能にも重点が置かれ +ています。 + +Vi を現代化する機能: + + 多段階アンドゥ + ファイル・バッファにおける変更を元に戻す回数を設定することができます。ア + ンドゥされた変更をリドゥすることもできます。 + 複数ウィンドウとバッファ + それぞれのファイルはそれ自身のウィンドウに表示することができます。一つの + ウィンドウから別のウィンドウへ簡単に移動することができます。それぞれの開 + かれたファイルは Vim のセッション中関連付けられたバッファを保有し、バッ + ファ間を簡単に移動することができます。 + 柔軟なインサート・モード + Vim ではインサート・モードにある間矢印キーでファイル内を移動することがで + きます。<Esc> を押し、移動して、`i' や `a' を押す、といったことはしなくて + 済みます。 + マクロ + Vim には、連続してタイプされた文字を記録し、後で何度でも繰り返すことので + きる機能があります。 + ビジュアル・モード + テキストの一部分をハイライトさせ、その部分にだけ操作を実行することができ + ます。 + ブロック・オペレーター + テキストを長方形のブロック状に選択、ハイライトさせ、その部分に対し特定の + 操作を行うことができます。 + オンライン・ヘルプシステム + どんな Vim 使用の局面であれ、容易に答えを探すことができます。ヘルプはそれ + 自身のウィンドウに表示されます。 + コマンドライン編集と履歴 + 履歴を利用すると、矢印キーで既にタイプされたコマンドを繰り返したり探した + りできます。コマンドの先頭を、履歴バッファにある別の似たコマンドの先頭に + マッチさせることができます。コマンドを編集してタイプミスを訂正したり、い + くつか値を変更することも出来ます。 + コマンドライン補完 + <Tab> キーを使うと、コマンドやオプション、ファイル名などを必要に応じて補 + うことができます。 + 水平スクロール + 長い行は水平にスクロールできます(GUI の有る、無しにかかわらず)。 + +先進的なユーザー機能: + + テキスト整形 + 2 キーストロークで、外部プログラムを使わずに長いテキストを整形できます。 + インサート・モードでの単語補完 + Vim は、現在の単語とファイル内の似た単語とをマッチすることにより、タイピ + ング中に単語補完を行うことができます。 + タグ・ジャンプ + ウェブ・ブラウザーと同じように、以前編集していた箇所に戻ったり、また元に + 復帰することができます。なので、あなたの頭脳は自由にナビゲート、ではなく + 編集をすることができます。 + 自動コマンド + ファイルを読み書きする時や、他のバッファに移動する時などに自動的に実行さ + れるコマンドです。 + Viminfo + 起動時に読み込まれるコマンドライン履歴やファイル内のマーク、レジスターを + 記憶しておくことができます。したがって、以前の検索パターンや、マクロなど + を、新しい Vim セッションで呼び出すことができます。 + マウス・サポート + マウスは xterm や MS-DOS でサポートされています。カーソル位置を設定した + り、ビジュアル領域を選択したり、レジスターを貼り付けたり、等のことができ + ます。 + グラフィカル・ユーザー・インターフェース(GUI) + 他の昨今のエディタと同様です。その上、独自のメニューを追加することも非常 + に簡単です。もちろん、コンソール版の Vim も今なおサポートされており、幅広 + く利用されています。 + スクリプト言語 + Vim は強力なスクリプト言語を備えており、新しいコマンドを作ることができま + す。また、同じことをするのに Perl、Python、TCL、それに Ruby を使うことも + できます。 + プラグイン + Vim コマンドによって実装された拡張機能で、起動時に自動的にロードされます。 + 例:ファイル・エクスプローラー、ネットワーク編集。更に多くのものが + VimOnline にて常に開発、共有されています。 + 多数のプログラミング言語に対応した構文強調 + 数百ものプログラミング言語に対応した構文強調があります。他の言語への対応 + を追加することができます。 + 拡張正規表現 + 機能性がPerlの正規表現に似ている拡張正規表現をサポートしています。 + +プログラミング効率に関する機能: + + 編集―コンパイル―編集のスピードアップ + Vim 内部からコンパイルを行い、自動的にソース・コードのエラーの箇所にジャ + ンプすることができます。 + 多数のプログラミング言語の字下げ + C、C++、Java、Perl、XML その他多くの言語で、タイプ中に自動的に字下げが行 + われます。他の言語へのサポートも追加可能です。 + インクルードファイル内の単語を検索 + カーソルの下の単語とのマッチを、現在のファイルとインクルードされるファイ + ル内で検索することができます。 + 先進的なテキスト・オブジェクト + ( と ) や、{ と } や、< と > 、また [ と ] の間の全てのテキストに対して、 + また単語、文、段落に対して、一瞬で選択したり、削除やコピーをしたり、字下 + げ、整形、大文字小文字の変換、等々を行うことができます。非常に強力です。 + フォールディング + テキストのある部分を「フォールド」(折り畳み)してしまうことができます。 + 最も良い例は関数の中身の部分です。コードの概観を見渡して、それから詳細を + 見たい関数のフォールドを開くことができます。 + ctags と cscope との統合 + これらの強力なプログラムを使うと、関数の呼び出し部分からその定義部分へジ + ャンプしたり、他の技術を使ってソース・コードを行き来することができます。 + +さらなる情報については以下を参照してください。 > + + :help vi-differences +< + *faq-1.5* +1.5. Vim は無料ですか? + +Vim はチャリティーウェアです。Vim の使用や複製に関しては何ら制限はありませんが、 +著者は慈善事業に寄付をするよう奨励しています。その方法を説明するドキュメントが +ディストリビューションの中に含まれています。 +さらなる情報については以下を参照してください。 > + + :help copyright +< + +============================================================================= + *faq-2* +SECTION 2 - 情報源 + + *faq-2.1* +2.1. どこに行けば Vim についてもっと学べるでしょうか?Vimの質問はvim@vim.orgメー +リングリストに投稿できます。Vimの開発に関する質問はvim-dev@vim.orgメーリングリ +ストに投稿できます。Vim にはそれ自身のためのニュースグループがありません。しか +し comp.editors は投稿するのに適しています。 + +"VimOnline" は vim のデファクト・ホームページの役割を果たしているウェブ・ペー +ジですが、その主な目的はチップやスクリプトをいたる所から集積することにあります。 +ぜひ参加してください。URL は vim.sourceforge.net または vim.sf.net です。 + +最後に、Vi FAQ を読んでください: > + + http://www.faqs.org/faqs/editor-faq/vi/part1/index.html +< +この FAQ の第 5 節に、こちらの FAQ についてのより詳しい情報があります。 > + + :help mail-list + :help internet +< + *faq-2.2* +2.2. メーリング・リストはありますか? + +いくつか存在します: > + + 名前 説明 +< + vim-announce 新しいリリースの発表 + vim 一般的な議論 + vim-dev パッチ、バグ報告、開発議論 + vim-mac マッキントッシュに関する議論 + vim-fr フランス語による一般的な議論 + vim-multibyte マルチバイト関連の開発の問題 + vim-vms VMS上での開発について + +これらのうち、vim と vim-dev だけが一般的な興味を引くものです。vim-announce は +ほとんどの人にとってはリード・オンリーですし、そのメッセージは他のリストにも送 +信されます。他の 4 つは非常に通信量が少ないです。 + +購読するには: <NAME>-subscribe@vim.org にメールを送ってください。 +購読を中止するには: <NAME>-unsubscribe@vim.org にメールを送ってください。 +ヘルプを得るには: <NAME>-help@vim.org にメールを送ってください。 + + *faq-2.3* +2.3. メーリング・リストのアーカイブはありますか? + +あります。http://www.yahoogroups.com/list/<名前> を訪ねてみてください。<名前> +の所には次の: + vimannounce, vim, vimdev, vim-fr, vim-mac, vim-multibyte, vim-vms +のどれかが入ります。 + +もしくは、www.gmane.org に行って GMANE について調べてみてください。これはメー +リング・リストに、あたかもニュースグループのような感覚でアクセスすることができ +るものです。履歴をざっと眺めたり、現在のスレッドを気軽に見ることができて便利で +す。 + +2.4. HTML/PDF/PS形式のVimユーザーマニュアルはどこで手に入りますか? + +HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロードできます。 > + + http://vimdoc.sourceforge.net/ +< +2.5. ある問題が発生しました。それが私の設定によるものか、Vimそのものの + 問題かはどうすればわかりますか? + +まず、その問題があなたの.vimrcや.gvimrc、システムのvimrc、あなたのプラグインフ +ァイル、その他あなたの設定ファイルによるものかを調べなければなりません。そのた +めに > + + $ vim -N -u NONE -U NONE +< +としてください。これはVimを'nocompatible'モードで起動し、あなたの個人的な +.vimrcや.gvimrcファイルを読み込みません。あなたの個人的なプラグインも読み込み +ません。これでVimを起動し、問題の再現を試みてください。もしこれで問題が再現で +きなければ、その問題はあなたの設定ファイルやプラグイン中の設定に関係しています +。設定ファイル中の問題の場所をつきとめるには、試行錯誤と設定ファイル中の1行1 +行をコメントアウトしてみなければなりません。Vimにコマンドライン引数-Vをつけて +起動するとデバッグ情報が得られ、問題を分析することができます: > + + $ vim -V2 +< +-V引数に渡す値を増やせば、さらに詳しいデバッグ情報が得られます。 + +さらなる情報については以下を参照してください。 > + + :help -u + :help -U + :help -N + :help -V + :help 'verbose' + :help :verbose + :help set-verbose +< + *faq-2.6* +2.6. どこでバグ報告をすればいいですか? + +最初に次のコマンドを使って必要な情報を集めてください: > + + :source $VIMRUNTIME/bugreport.vim +< +そして上のコマンドで得られたテキストをbugs@vim.orgメールアドレスに送ってくださ +い。 + +Vim 開発のメーリング・リスト(上を見てください)は通常のバグについて議論するの +にふさわしい場所です。あなたの見つけたバグがシンタックス・ハイライティングやそ +の他の「付加的な機能」(つまり、直接 vim にプログラムされていないもの)に関す +るものであれば、その機能のメンテナに報告してみてください。 + +さらなる情報については以下を参照してください。 > + + :help bug-reports +< + *faq-2.7* +2.7. FAQ はどこで見つけられますか? + +VimOnline (vim.sf.net) で手に入ります。将来的には他の場所も加えられるでしょう。 + + *faq-2.8* +2.8. この FAQ に答えが見つからなかった時、どうすればいいですか? + +この FAQ は主に Vim に特有の質問を扱います。ほとんどの Vi クローン向きの情報に +ついては Vi FAQ を読めば見つかるでしょう。これは comp.editors で定期的に投稿さ +れています。下記の場所にもそのコピーがあります。 > + + http://www.faqs.org/faqs/editor-faq/vi/part1/index.html +< +また、Vim は過去数年間で非常に多くの機能を集積してきたため、よくある質問をここ +で申し分なく記述することは不可能に近い作業です。これを可能にするために、もし良 +い質問をお持ちならメンテナにメールで知らせてください。良い質問とは、自分で答え +を出そうとして(Vim は素晴らしいドキュメントを備えていることを思い出してくださ +い)非常に苦労した質問のことです。 + + *faq-2.9* +2.9. Vimに機能を追加するパッチを持っています。これをどこへ送ればいいですか? + +Vim開発者メーリングリストvim-dev@vim.orgにパッチを送ってください。 + +さらなる情報については以下を参照してください。 > + + :help vim-dev +< + +2.10. Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグインを + 開発したり、新しいスクリプトやカラースキームを開発しました。これをアップ + ロードできる公開のウェブサイトはありますか? + +あります。Vim Onlineウェブサイトにプラグイン・スクリプト、カラースキーム、ティ +ップスなどをアップロードすることができます。そのサイトは +http://vim.sourceforge.netにあります。 + +============================================================================= + *faq-3* +SECTION 3 - 入手 + + *faq-3.1* +3.1. Vim の最新のバージョンは何ですか? + +The latest version of Vim is 6.3 released on 8th June 2004. +Vim の最新バージョンは2004年6月 + +Vimのリリース履歴は以下の通りです: + +Version 6.3 8th June 2004 +Version 6.2 1st June 2003 +Version 6.1 24th March 2002 +Version 6.0 27th September, 2001 +Version 5.8 31st May, 2001 +Version 5.7 24th June, 2000 +Version 5.6 16th January, 2000 +Version 5.5 21st September, 1999 +Version 5.4 26th July, 1999 +Version 5.3 31st August, 1998 +Version 5.2 24th August, 1998 +Version 5.1 7th April, 1998 +Version 5.0 19th February, 1998 +Version 4.6 13th March,1997 +Version 4.5 17th October, 1996 +Version 4.2 5th July,1996 +Version 4.0 21st May, 1996 +Version 3.0 16th August, 1994 +Version 2.0 21st December, 1993 +Version 1.27 23rd April, 1993 +Version 1.17 21st April, 1992 + + *faq-3.2* +3.2. どこで Vim の最新版を見つけられますか? + +VimOnlineからVimの最新バージョンのソースがダウンロードできます。URLは +http://vim.sourceforge.net/download.php +です。 + + +3.3. どのプラットフォーム上で実行できるんですか? + +全ての Unix プラットフォーム。 +全ての Windows プラットフォーム。 +Amiga、Atari、BeOS、DOS、Macintosh、MachTen、OS/2、RiscOS、VMS です。 + + +3.4. どこでVimのランタイムファイルの最新バージョンをダウンロードできますか? + +Vimランタイムファイル(構文ファイル、ファイル形式別プラグイン、コンパイラプラ +グイン、カラースキーム、ドキュメント、インデントファイル、キーマップ)はVim +ftpサイトのftp://ftp.vim.org/pub/vim/runtimeディレクトリでダウンロードできます +。 + +============================================================================= + *faq-4* +SECTION 4 - ヘルプ + + +4.1. どうやってヘルプ・ファイルを利用するんですか? + +Vim の全ての機能にヘルプがあります。それを利用するには、":h" を使ってください。 +そうするとメインのヘルプ・ページを見ることができます。この最初のページで、どう +やって動き回るかの説明があると思います。基本的にはリード・オンリーのドキュメン +ト内を動き回るのと同じ仕方でヘルプ内を移動します。特定のテーマへジャンプするに +はタグを使うことができます。これは二通りの方法で行えます: + + * コマンドやオプションの上で "<Ctrl-]>" コマンドを使う。これはタグがキー + ワードである場合にのみ有効です。"<Ctrl-LeftMouse>" や "g<LeftMouse>" も + "<Ctrl-]>" と同じように機能します。 + * ":ta subject" コマンドを使う。これはどんな文字であっても利用できます。 + +以前のヘルプ・ファイルの場所へ戻るには "<Ctrl-T>" を使ってください。ヘルプを閉 +じるには ":q" を使ってください。 + +ヘルプ・ページのある特定のテーマへジャンプしたければ ":h {subject}" を使ってく +ださい。何を探せば良いか分からなければ、 ":h index" で全ての利用可能なテーマの +一覧を得ることができます。標準の検索語を使って欲しい情報を見つけてください。 +":help"コマンドは":h"と短縮することができます。 + +さらなる情報については以下を参照してください。 > + + :help online-help +< + +4.2. どうやってVimヘルプファイル中のキーワードを探すんですか? + +ヘルプキーワードをタイプした後にCTRL-Dを押すとそのパターンを含む全てのヘルプキー +ワードのリストが得られます。*, \+などのメタ文字を使ってヘルプの検索パターンを指 +定することもできます: > + + :help init<C-D> + :help str*()<C-D> + :help '*indent<C-D> +< +ヘルプキーワードの一部をタイプした後にTabキーを押すと、マッチするキーワードに +展開することができます。Tabキーを押しつづけると他のマッチするキーワードに変わっ +ていきます。 + +へルプウィンドウでは":tag"コマンドを使ってキーワードを検索することができます。 +例えば、 > + + :tselect /window +< +このコマンドはテキスト"window"を含むヘルプキーワード全てをリスト表示します。そ +のリストの中から1つを選んでそこへジャンプすることができます。 + +":helpgrep"コマンドを使って全てのヘルプファイル中から与えられたテキストを検索 +することができます。QuickFixウィンドウが開き、全てのマッチする行が表示されます +。 + +さらなる情報については以下を参照してください。 > + + :help c_CTRL-D + :help c_<Tab> + :help :tselect + :help :help + :help :helpgrep +< + *faq-4.3* +4.3. エラーメッセージE123が出ました。なにがまずいのでしょうか? + +以下を行うと、エラーとエラーメッセージについてより詳しい情報が得られます: > + + :help E123 +< +さらなる情報については以下を参照してください。 > + + :help error-messages +< + *faq-4.4* +4.4. Vimの様々なモードについては何を読めばいいですか? + +Vimにおけるモードの違いについては、以下を読めば情報を得られます。 > + + :help vim-modes +< + *faq-4.5* +4.5. 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファイルを + 生成することができますか? + +":helptags"コマンドを使えばVimのヘルプタグファイルを再生成することができます。 +例えば: > + + :cd $VIMRUNTIME/doc + :helptags . +< +さらなる情報については以下を参照してください。 > + + :help :helptags + :help add-local-help +< + *faq-4.6* +4.6. 圧縮したヘルプ・ファイルを使うことはできますか? + +できます。ヘルプファイルを圧縮し、それをVimで表示することもできます。これを行 +うとヘルプファイルにアクセスするのが少し遅くなり、"gzip"ユーティリティが必要に +なります。圧縮したVimヘルプファイルを使うには、以下のステップを行ってください +。 + +- "gzip doc/*.txt"として全てのヘルプファイルを圧縮する。 + +- "doc/tags"ファイルを編集し、以下のコマンドを実行して".txt"を".txt.gz"に変更 + する。 + :%s=\(\t.*\.txt\)\t=\1.gz\t= + +- 次の行をあなたのvimrcに追加する: + set helpfile={dirname}/help.txt.gz + +{dirname}はヘルプファイルがあるディレクトリです。標準Vimディストリビューション +に同梱のgzip.vimプラグインがファイルの展開をしてくれます。他のVimファイルが圧 +縮された"doc"ディレクトリと別な場所にある場合は、$VIMRUNTIMEが他のVimファイル +のある場所に設定されていなければなりません。 + +さらなる情報については以下を参照してください。 > + + :help gzip-helpfile + :help 'helpfile' + :help gzip + :help $VIMRUNTIME +< + +============================================================================= + *faq-5* +SECTION 5 - ファイルの編集 + + *faq-5.1* +5.1. ファイルを編集用に読み込むには? + +ファイルを編集用に読み込むにはいくつかの方法があります。もっとも単純な方法は +":e" (:edit)コマンドを使うことです: > + + :e <filename> +< +":n" (:next)コマンドを使ってファイルをVimに読み込ませることもできます。 : > + + :n <filename(s)> +< +":args"コマンドを使ってファイルをVimに読み込ませることもできます。 : > + + :args <filename(s)> +< +さらなる情報については以下を参照してください。 > + + :help usr_07 + :help edit-files + :help :edit + :help :next_f + :help :args_f +< + *faq-5.2* +5.2. 現在のファイルを別な名前で保存(save as)して新しいファイルを編集するには? + +":saveas"コマンドを使えば現在のファイルを別な名前で保存することができます。 : +> + + :saveas <newfilename> +< +別な方法としては、以下のコマンドを使うこともできます: > + + :w <newfilename> + :edit # +< +":file"コマンドと":w"コマンドを使うこともできます: > + + :file <newfilename> + :w +< +さらなる情報については以下を参照してください。 > + + :help 07.7 + :help :saveas + :help :file_f + :help :w +< + *faq-5.3* +5.3. カレントディレクトリを現在のファイルのディレクトリにするには? + +次のコマンドでカレントディレクトリを現在のファイルのディレクトリにできます: +> + + :cd %:p:h +< +自動的にカレントディレクトリを現在のファイルのディレクトリにするには、次の +autocmdを使います: > + + :autocmd BufEnter * cd %:p:h +< +さらなる情報については以下を参照してください。 > + + :help :cd + :help :lcd + :help filename-modifiers + :help autocommand +< + *faq-5.4* +5.4. ファイルの末尾に改行文字(EOL)をつけずにファイルを書き込むには? + +'eol'オプションをオフにして'binary'オプションをオンにすればファイルの末尾に +EOLをつけずにファイルを書き込むことができます: > + + :set binary + :set noeol + :w +< +さらなる情報については以下を参照してください。 > + + :help 'endofline' + :help 'binary' + :help 23.4 +< + *faq-5.5* +5.5. ファイルを最後に編集した場所から開くようにするには? + +Vimは各バッファに対して最後に編集した場所のカーソル位置を'"'レジスタに保存します。 +次のautocmdを.vimrcまたは.gvimrcに書けば、ファイルを最後に編集した場所から開く +ようにできます: > + + au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal g'\"" | endif +< +さらなる情報については以下を参照してください。 > + + :help '" + :help last-position-jump +< + *faq-5.6* +5.6. Vimでファイルを編集中にそのファイルが他のアプリケーションによって変更され + たとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイアログのような) + を開きます。この警告を無効にするには? + +'autoread'オプションをセットすると、Vimの外部でファイルが変更されたとき、自動的に +読み直すようにできます: > + + :set autoread +< +次のautocommandを使うこともできます: > + + autocmd FileChangedShell * + \ echohl WarningMsg | + \ echo "File has been changed outside of vim." | + \ echohl None +< +さらなる情報については以下を参照してください。 > + + :help 'autoread' + :help FileChangedShell + :help timestamp + :help :checktime +< + *faq-5.7* +5.7. カーソル下のファイル名のファイルを開くには? + +gfコマンドでカーソル下のファイル名のファイルを開くことができます。CTRL-W fコマ +ンドでそのファイルを新しいウィンドウで開くことができます。 + +さらなる情報については以下を参照してください。 > + + :help gf + :help CTRL-W_f + :help 'isfname' + :help 'path' + :help 'suffixesadd' + :help 'includeexpr' +< + *faq-5.8* +5.8. 現在のファイルを再読み込みするには? + +"ファイル名を指定せずに:edit"コマンドを行えば、現在のファイルを再読み込みする +ことができます。ファイルに変更をしてある場合は、":edit!"とすれば強制的に現在の +ファイルを再読み込みすることができます(変更は失われます)。 + +さらなる情報については以下を参照してください。 > + + :help :edit + :help :edit! + :help 'confirm' +< + *faq-5.9* +5.9. ファイルを定期的に自動保存するには? + +Vimにはファイルを定期的に自動保存する機能はありません。 + +さらなる情報については以下を参照してください。 > + + :help 'updatetime' + :help CursorHold + :help swap-file +< + *faq-5.10* +5.10 ファイルを読み取り専用モードで開くには? + +ファイルを読み取り専用モードで開くには":view"コマンドを使います: > + + :view <filename> +< +このコマンドは開いたバッファに'readonly'オプションをセットします。また、コマン +ドラインオプション"-R"をつければファイルを読み取り専用モードで開くことができま +す: > + + $ vim -R <filename> +< +また、コマンドラインからシンボリックリンク実行ファイル"view"を使ってもファイル +を読み取り専用モードで開くことができます: > + + $ view <filename> +< +さらなる情報については以下を参照してください。 > + + :help 07.6 + :help 'readonly' + :help 'modifiable' + :help :view + :help :sview + :help view + :help -R + :help -M +< + +============================================================================= + *faq-6* +SECTION 6 - 複数のファイルを編集する + + *faq-6.1* +6.1. Vim内で同時に複数のファイルを開くには? + +Vim内で同時に複数のファイルを開くにはいくつかの方法があります。":next"コマンド +を使うとファイルのグループを指定することができます: > + + :next f1.txt f2.txt + :next *.c +< +:argsコマンドを使うとファイルのグループを引数に指定することができます: > + + :args f1.txt f2.txt + :args *.c +< +ファイルを読み込んだら、":next"と":prev"コマンドでファイルを切り替えることがで +きます。 + +さらなる情報については以下を参照してください。 > + + :help 07.2 + :help :next + :help :args_f + :help argument-list +< + *faq-6.2* +6.2. 複数のファイル・バッファを切り替えるには? + +複数のファイルを切り替えるにはいくつかの方法があります。":buffer"コマンドを使 +うと複数のファイルを切り替えることができます。例えば、 > + + :buffer file1 + :buffer file2 +< +CTRL-^を使ってバッファを切り替えることもできます。キーの前にカウントを指定する +とその番号のバッファを編集することができます。カウントを指定しないでCTRL-^を押 +すと代替バッファを編集します。 + +":e #"コマンドでも特定のバッファを編集することができます: > + + :e #5 +< +さらなる情報については以下を参照してください。 > + + :help edit-files + :help :buffer + :help CTRL-^ + :help alternate-file + :help 22.4 + :help 07.3 +< + *faq-6.3* +6.3. それぞれのファイルを別ウィンドウで開くには? + +コマンドライン引数-oと-Oを指定すると複数のファイルを水平または垂直に分割したウ +ィンドウで開くことができます。例えば: > + + $ vim -o3 f1.txt f2.txt f3.txt +< +上のコマンドはファイルf1.txt、f2.txt、f3.txtを3つに水平に分割したウィンドウで +開きます。 > + + $ vim -O3 f1.txt f2.txt f3.txt +< +上のコマンドはファイルf1.txt、f2.txt、f3.txtを3つに垂直に分割したウィンドウで +開きます。 > + +さらなる情報については以下を参照してください。 > + + :help -o + :help -O + :help startup-options +< + *faq-6.4* +6.4. 「ワークセット」や「プロジェクト」のように自動的に複数のファイルを同時に + 読み込ませるようにするには? + +自動的に複数のファイルを読み込ませるようにするには":mksesion"と":mkview"を使い +ます。 + +":mksession"コマンドは現在編集中のセッションを復元するVimスクリプトを生成しま +す。このmksessionコマンドで作られたファイルは":source"コマンドで読み込むことが +できます。 + +":mkview"コマンドは現在のウィンドウの中身を復元するVimスクリプトを生成します。 +現在のファイルのviewを読み込むには":loadview"コマンドを使います。 + +さらなる情報については以下を参照してください。 > + + :help 21.4 + :help 21.5 + :help views-sessions + :help 'sessionoptions' + :help :mksession + :help :source + :help v:this_session + :help :mkview + :help :loadview + :help 'viewdir' + :help buffers +< + *faq-6.5* +6.5. Neditやemacsのように単一のVimインスタンスで複数のトップレベルウィンドウを + 開くことはできますか? + +できません。単一のVimインスタンスで複数のトップレベルウィンドウを開くことは現 +在は不可能です。この機能はtodoリストの中にあります。 + + *faq-6.6* +6.6. Vim内でディレクトリをブラウズするには? + +標準Vimディストリビューションに同梱のexplorer.vimプラグインを使えばVim内でディ +レクトリをブラウズすることができます。以下のコマンドのうちどれかでファイルエク +スプローラを起動することができます: > + + :e <directory> + :Explore + :SExplore +< +ファイルエクスプローラではディレクトリをブラウズし、ファイルをリネーム、削除、 +編集することができます。 + +さらなる情報については以下を参照してください。 > + + :help file-explorer + :help 22.1 +< + *faq-6.7* +6.7. ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? + +標準Vimディストリビューションに同梱のnetrw.vimを使えばftp/scp/rcp/httpでネット +ワークごしにファイルを編集することができます。このプラグインを使うと、Vimは +ftp/scp/rcp/httpごしのファイルを透過的に読み込み、保存します。例えば、ftpごし +にファイルを編集するには、以下のコマンドを使います: > + + $ vim ftp://machine/path +< +さらなる情報については以下を参照してください。 > + + :help netrw.vim +< + +============================================================================= + *faq-7* +SECTION 7 - バックアップ + + *faq-7.1* +7.1. ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけたファイル + が作られます。このファイルを作成するのを止めさせるには?(または)バック + アップ機能を無効にするには? + +あなたは'backup'オプションをセットしているので、Vimは元のファイルを保存すると +きにバックアップを作ります。このバックアップファイルを作るのを止めさせるには、 +このオプションをクリアします: > + + :set nobackup +< +Note デフォルトではこのオプションはオフにされています。初期設定ファイルのどこか +で明示的に'backup'オプションが有効化されています。'writebackup'オプションもオ +フにするとよいかもしれません: > + + :set nowritebackup +< +さらなる情報については以下を参照してください。 > + + :help 07.4 + :help backup-table + :help 'backup' + :help 'writebackup' + :help 'backupskip' + :help 'backupdir' + :help 'backupext' + :help 'backupcopy' + :help backup +< + *faq-7.2* +7.2. 全てのバックアップファイルを特定のディレクトリに保存するように設定するに + は? +'backupdir'オプションを使えば全てのバックアップファイルを特定のディレクトリに +保存するように設定できます。例えば、全てのバックアップファイルを~/backupディレ +クトリに保存するには、次のコマンドを使います: > + + :set backupdir=~/backup +< +さらなる情報については以下を参照してください。 > + + :help 07.4 + :help 'backupdir' + :help backup +< + *faq-7.3* +7.3. ファイルを保存するとファイルパーミッションが変更されます。ファイルパーミ + ッションを変更せずにファイルを保存するよう設定するには? + +これは'backupcopy'が'no'または'auto'に設定されていると起こりえます。Note この +オプションのデフォルト値はほとんどの場合に正しく動作するように設定されていま +す。もしそのデフォルト値が正しく機能しないなら、'backupcopy'オプションを'yes' +にすればファイル保存時にパーミッションをそのままにすることができます: > + + :set backupcopy=yes +< +これはファイルを上書きするときは必ずバックアップを作るように設定したときだけ適 +用されます。デフォルトではVimはバックアップファイルを作りません。 + +さらなる情報については以下を参照してください。 > + + :help 'backupcopy' + :help backup + :help 'backup' + :help 'writebackup' +< + +============================================================================= + *faq-8* +SECTION 8 - バッファ + + *faq-8.1* +8.1. バッファに対して変更を加えました。変更されたバッファを保存せずに、かつ変 + 更を失うことなく他のバッファを編集するには? + +'hidden'オプションをセットすれば現在のファイルに対する変更を失うことなく他のフ +ァイルを編集することができます。 : > + + :set hidden +< +'hidden'オプションをセットすると、バッファに対する変更履歴(アンドゥ履歴)も保 +存されます。そうでないと、ファイルを切り替えたときにアンドゥ履歴が失われてしま +うでしょう。 + +さらなる情報については以下を参照してください。 > + + :help 'hidden' + :help hidden-quit + :help :hide +< + *faq-8.2* +8.2. バッファを切り替えるときに自動的に保存するよう設定するには? + +'autowrite'オプションをセットすると、他のバッファに切り替えるとき変更されたバ +ッファを自動保存します: > + + :set autowrite +< +さらなる情報については以下を参照してください。 > + + :help 'autowrite' + :help 'autowriteall' + :help 'hidden' +< + *faq-8.3* +8.3. カレントウィンドウのバッファを空バッファにするには? + +":enew"コマンドを使うとカレントウィンドウのバッファに換わって空バッファを読み +込みます。 + +さらなる情報については以下を参照してください。 > + + :help :enew +< + *faq-8.4* +8.4. バッファ番号を指定してバッファを読み込むショートカットキーはありますか? + +CTRL-^コマンドを使うとバッファ番号を指定してバッファを読み込むことができます。 +例えばバッファ番号5を読み込むには5 CTRL-^とします。 + +さらなる情報については以下を参照してください。 > + + :help CTRL-^ +< + *faq-8.5* +8.5. 読み込んでいるバッファをそれぞれ別のウィンドウで開くには? + +":ball"または":sball"コマンドでバッファリスト中の全てのバッファを開くことがで +きます: > + + :ball +< +さらなる情報については以下を参照してください。 > + + :help :ball +< + *faq-8.6* +8.6. Vimを終了することなくバッファを閉じる(削除する)には? + +":bdelete"コマンドでVimを終了することなくバッファを削除できます。 +例: > + + :bdelete file1 +< +さらなる情報については以下を参照してください。 > + + :help :bdelete + :help :bwipeout +< + *faq-8.7* + +8.7. :e filenameでいくつかのファイルを開きました。Vimを終了することなくそのバッ + ファのうちの1つを閉じるには? + +":bdelete <buffername>"コマンドでバッファを閉じることができます。 + +さらなる情報については以下を参照してください。 > + + :help :bdelelete + :help :bunload + :help :bwipeout +< + *faq-8.8* +8.8. ":%bd"コマンドで全バッファを削除しようとしても、全てのバッファが削除され + ません。なぜ? + +":%bd"コマンドにおいて範囲'%'はカレントバッファの開始行と終端行で置き換えられ +ます。範囲として'%'を使わず、番号を指定しなければなりません。例えば、 +":1,9999bd"とすれば全バッファを削除できます。 + +さらなる情報については以下を参照してください。 > + + :help :bd +< + *faq-8.9* +8.9. カレントバッファ/ファイルのバッファ番号を表示するには? + +2<CTRL-G>コマンドでカレントバッファ/ファイルのバッファ番号を表示できます。 +CTRL-Gの前にカウントを指定することに注意してください。カウントが1より大きい場 +合、バッファ番号が表示されます。 + +カレントバッファを表示するのに以下のコマンドを使うこともできます: > + + :echo bufnr("%") +< +また、'statusline'オプションにフィールド"%n"を含めるとステータスラインにバッフ +ァ番号が表示されます。 + +さらなる情報については以下を参照してください。 > + + :help CTRL-G + :help bufnr() + :help :echo + :help 'statusline' +< + *faq-8.10* +8.10. ウィンドウを閉じることなくバッファを削除するには? + +次のコマンドで現在のバッファを削除し、次のバッファを開くことができます: > + + :bnext | bdelete # +< +さらなる情報については以下を参照してください。 > + + :help :bnext + :help :bdelete + :help :buffers +< + *faq-8.11* +8.11. Tabキーで全バッファを巡回するようにマップするには? + +次の2つのマップコマンドを使うと、CTRL-Tabで次のバッファを開き、CTRL-SHIFT-Tab +で前のバッファを開くようにマップできます: > + + :nnoremap <C-Tab> :bnext<CR> + :nnoremap <S-C-Tab> :bprevious<CR> +< +さらなる情報については以下を参照してください。 > + + :help :bnext + :help :previous +< + +============================================================================= + *faq-9* +SECTION 9 - ウィンドウ + + *faq-9.1* +9.1. ウィンドウとバッファの違いは? + +バッファとは編集用にメモリに読み込まれたファイルです。元のファイルはあなたがバ +ッファをファイルに書き込むまでは変更されないままです。ウィンドウとはバッファを +表示する領域です。1つのバッファを複数のウィンドウで表示することもできますし、 +異なるバッファを複数のウィンドウで表示することもできます。 + +さらなる情報については以下を参照してください。 > + + :help usr_08.txt + :help 22.4 + :help windows-intro + :help Q_wi +< + *faq-9.2* +9.2. ウィンドウの幅を広げるには? + +以下のコマンドのどれか1つでウィンドウの幅を広げることができます: > + + :vert resize +N + :vert resize -N + :vert resize N +< +CTRL-W <、CTRL-W >、CTRL-W | コマンドを使うこともできます。 + +さらなる情報については以下を参照してください。 > + + :help vertical-resize + :help CTRL-W_> + :help CTRL-W_< + :help window-resize +< + *faq-9.3* +9.3. ウィンドウをズームイン・ズームアウトするには? + +ウィンドウをズームするには(カレントウィンドウ以外の全ウィンドウを閉じるには) +"CTRL-W o"またはexコマンド":only"を使います。 + +"CTRL-W _"またはexコマンド":resize"を使うと、他のウィンドウを閉じずに可能な限 +りウィンドウの高さを広げることができます。 + +"CTRL-W |"またはexコマンド":vertical resize"を使うと、他のウィンドウを閉じずに +可能な限りウィンドウの幅を広げることができます。 + +"CTRL-W ="コマンドを使うと全ウィンドウの高さと幅を等しくすることができます。 + +以下のオプションをセットすると、上記のコマンドを行うのと同じ結果が得られます。 + +方法1: +'winminheight'オプションを0にする: > + + :set winminheight=0 +< +デフォルトではこのオプションは1に設定されています。 +このオプションはアクティブでない(カレントウィンドウでない)ウィンドウの最小の +高さをコントロールします。'winminheight'が0に設定されていると、アクティブでな +いウィンドウにはステータスラインだけが表示されます。 + +方法2: +'noequalalways'オプションをセットし、'winheight'オプションを大きな値(99999など +)に設定する: > + + :set noequalalways + :set winheight=99999 +< +こうするとアクティブウィンドウが常に最大サイズで開かれます。他のウィンドウは表 +示されますが、ステータスラインのように小さく縮みます。 + +以上の方法のどれにおいても、いったんウィンドウをズームしてしまうと、ウィンドウ +配置を復元することはできません。ウィンドウ配置を復元したいならばZoomWinプラグ +インを使うことができます。このプラグインはVim onlineからダウンロードできます。 + +http://vim.sourceforge.net/scripts/script.php?script_id=508 + +さらなる情報については以下を参照してください。 > + + :help CTRL-W_o + :help window-resize + :help 'winminheight' + :help 'equalalways' + :help 'winheight' + :help 08.3 +< + *faq-9.4* +9.4. 全バッファまたは全ウィンドウ、引数リスト中の全ファイルに対してexコマンド + を実行するには? + +":bufdo"コマンドを使うと全バッファに対してexコマンドを実行することができます。 +":windo"コマンドを使うと全ウィンドウに対してexコマンドを実行することができます +。":argdo"コマンドを使うと引数リスト中の全ファイルに対してexコマンドを実行する +ことができます。 + +さらなる情報については以下を参照してください。 > + + :help :windo + :help :bufdo + :help :argdo + :help 26.3 +< + +============================================================================= + *faq-10* +SECTION 10 - モーション + + *faq-10.1* +10.1. ファイルの先頭や末尾に移動するには? + +'G'でファイルの最終行へ移動でき、'gg'で先頭行へ移動できます。 + +さらなる情報については以下を参照してください。 > + + :help G + :help gg +< + *faq-10.2* +10.2. インサートモードで<Esc>キーを押してノーマルモードに移行すると、カーソル + が1文字左へ移動します(カーソルが行の最初の文字の上にあるときを除いて)。 + この動作を変更し、カーソルがその桁の上に残るようにできますか? + +この動作を変更することはできません。カーソルは「常に」有効な文字の上に置かれま +す(virtualeditモードを有効にしていない限り)。そのため、行の末尾にテキストを +追加していてノーマルモードに戻るときには、カーソルは必ず最後に入力された文字の +上に戻らねばなりません。一貫性のためにカーソルはどこにあっても1文字戻るように +なっています。たとえ行の真ん中であっても。 + +インサートモードでCTRL-Oを使うと、カーソル位置を動かすことなくexコマンドを1つ +実行してインサートモードに戻ることができます。 + +さらなる情報については以下を参照してください。 > + + :help 'virtual' + :help i_CTRL-O +< + *faq-10.3* +10.3. <Page Up>、<Page Down>などのキーを押してスクロールしたときカーソル位置の + 桁を保つように設定することはできますか? + +'startofline'オプションをオフにするとテキストをスクロールしたときカーソル位置 +の桁を保つことができます: > + + :set nostartofline +< +さらなる情報については以下を参照してください。 > + + :help 'startofline' +< + *faq-10.4* +10.4. ファイル中のある行の長さが画面の幅を越えており、折り返されています。ここ + でj, kキーを使うと画面上の次行(物理行)でなくファイルの次行(論理行)に + 移動します。画面上の次行に移動するには? + +gjとgkコマンドを使うと画面上の次行・前行に移動できます。jとkはファイルの次行・ +前行に移動します。'wrap'オプションをオフにすると行の折り返しをやめさせることが +できます: > + + :set nowrap +< +さらなる情報については以下を参照してください。 > + + :help gj + :help gk + :help 'wrap' +< +以下のマッピングを使ってもよいでしょう: > + + :map <Up> gk + :imap <Up> <C-o>gk + :map <Down> gj + :imap <Down> <C-o>gj +< + *faq-10.5* +10.5. Vimにおける文、段落、セクションの定義は? + +文(sentence)は後ろに行末・(1個または2個の)スペース・タブが続く'.'、'!'、'?' +で終わると定義されます。文の終端を構成する文字とスペースの個数は'joinspaces'と +'cpoptions'オプションによって決まります。 + +段落(paragraph)は空行の後から始まります。また、'paragraph'オプション中の文字の +ペアによって指定される段落マクロも段落の始まりとみなされます。 + +セクションは1桁目のフォームフィード(<C-L>)から始まります。また、'sections'オプ +ション中の文字のペアによって指定される段落マクロも段落の始まりとみなされます。 + +さらなる情報については以下を参照してください。 > + + :help sentence + :help 'joinspaces' + :help 'cpoptions' | /^\s*j\> + :help paragraph + :help section + :help word +< + *faq-10.6* +10.6. 文、段落、セクションの先頭と末尾に移動するには? + +以下のコマンドを使うと文、段落、セクションの先頭と末尾に移動することができます +: > + + motion 位置 どこの + ( 先頭 現在の文 + ) 末尾 現在の文 + { 先頭 現在の段落 + } 末尾 現在の段落 + [] 末尾 前のセクション + [[ 先頭 現在のセクション + ][ 末尾 現在のセクション + ]] 先頭 次のセクション +< +これらの移動コマンドの前に番号を指定すると、移動を前方(または後方)に拡大する +ことができます。 + +さらなる情報については以下を参照してください。 > + + :help object-motions +< + *faq-10.7* +10.7. 画面の右端を越えて続いている行があります。右側にスクロールして画面外に出 + ているテキストを表示するには? + +以下のコマンドのどれか1つで画面を左右にスクロールすることができます: > + + zl - 左へスクロール + zh - 右へスクロール + zL - 左へ画面半分の幅スクロール + zH - 右へ画面半分の幅スクロール + zs - カーソル位置が画面左端に来るようにスクロール + ze - カーソル位置が画面右端に来るようにスクロール +< +g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで画面上最後の文字へ、画面 +をスクロールせずに移動することができます。 + +さらなる情報については以下を参照してください。 > + + :help scroll-horizontal +< + *faq-10.8* +10.8. 2個以上のバッファを同時にスクロールさせるには? + +それぞれのバッファに対して"scrollbind"オプションをセットすると、それらを同時に +スクロールできるようになります。 + +さらなる情報については以下を参照してください。 > + + :help 'scrollbind' + :help scroll-binding + :help 'scrollopt' +< + *faq-10.9* +10.9. 矢印キーを使うとモードが変わり、バッファに変な文字が挿入され、カーソルが + 適切に移動しません。どうなっているのですか? + +そうなるのには2つの事が考えられます。遅い回線上でVimを使っているか、キーボード +が生成するキーシーケンスをVimが理解していないかです。 + +もし遅い回線(2400bpsモデムのような)上で使用しているなら、'timeout'や +'ttimeout'オプションを設定してみてください。これらのオプションを'timeoutlen'と +'ttimeoutlen'オプションと組み合わせれば問題が解決するかもしれません。 + +もしあなたのターミナルが送るキーコードをVimが理解しなければ、そのコマンドは正 +しく動きません。この場合、最良の選択肢はそのキーシーケンスをカーソル移動コマ +ンドにマップして、そのマッピングをファイルに保存しておくことです。そしてその +ターミナル上で使うときは常にそのファイルを":source"します。 + +さらなる情報については以下を参照してください。 > + + :help 'timeout' + :help 'ttimeout' + :help 'timeoutlen' + :help 'ttimeoutlen' + :help :map + :help vt100-cursor-keys +< + *faq-10.10* +10.10. カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するようにす + るには? + +カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するようにするには +'whichwrap'オプションに'<'フラグを加えます: > + + :set whichwrap+=< +< +同様に、カーソルが行末にあるとき右矢印キーを押すと次行の行頭に移動するようにす +るには'whichwrap'オプションに'>'フラグを加えます: > + + :set whichwrap+=> +< +これらはノーマルモードとヴィジュアルモードでのみ機能します。インサートモード +と上書きモードでも使えるようにするには、それぞれ'['と']'フラグを加えます。 + +さらなる情報については以下を参照してください。 > + + :help 'whichwrap' + :help 05.7 +< + *faq-10.11* +10.11. 常にインサートモードに留まるようにするには?(モードレスな編集をするに + は?) + +常にインサートモードに留まるようにするには'insertmode'オプションを使います: +> + + :set insertmode +< +このオプションをセットするとVimをモードレスエディタとして使えるようになります +。<Esc>キーを押してもノーマルモードに移行しません。ノーマルモードコマンドを1つ +だけ実行するにはCTRL-Oを押してからノーマルモードコマンドをタイプします。1つ以 +上のノーマルモードコマンドを実行するにはCTRL-Lに続けてそのコマンドをタイプしま +す。インサートモードに戻るには<Esc>キーを押します。このオプションを無効にする +には'insertmode'オプションをオフにします: > + + :set noinsertmode +< +"evim"コマンドまたは"vim -y"を使ってもVimをモードレスエディタとして使用できま +す。 + +さらなる情報については以下を参照してください。 > + + :help 'insertmode' + :help i_CTRL-O + :help i_CTRL-L + :help evim + :help evim-keys +< + *faq-10.12* +10.12. テキストをスクロールするとき、前後の行を表示するには? + +'scrolloff'オプションをセットすると画面に表示されるカーソルの前後の行の最小数 +を設定できます。 > + + :set scrolloff=10 +< +さらなる情報については以下を参照してください。 > + + :help 'scrolloff' + :help 'sidescrolloff' +< + *faq-10.13* +10.13. 以前のカーソル位置に戻るには? + +''または``コマンドを使うと最後のジャンプの前にいた位置へカーソルを戻すことがで +きます。CTRL-Oでも以前のカーソル位置に戻ることができ、CTRL-Iでジャンプリスト中 +のより新しい位置へ移動できます。 + +さらなる情報については以下を参照してください。 > + + :help 03.10 + :help mark-motions + :help jump-motions +< + +============================================================================= + *faq-11* +SECTION 11 - テキストを検索する + + *faq-11.1* +11.1. テキストを検索した後、マッチしたテキストが全て強調されます。この強調を一 + 時的/永続的に無効にするには? + +最後に検索したパターンにマッチする文字列を強調するかは'hlsearch'オプションで決 +まります。デフォルトではこのオプションは無効になっています。このオプションがシ +ステムレベルのvimrcファイルでセットされているならば、次のコマンドを使ってこの +強調を無効にできます: > + + :set nohlsearch +< +一時的にこの強調を消すには次のようにします: > + + :nohlsearch +< +また、カレントファイルに存在しないパターンを検索することによってもこの強調をク +リアすることができます(例えば'asdf'を検索する)。 + +さらなる情報については以下を参照してください。 > + + :help 'hlsearch' + :help :nohlsearch +< + *faq-11.2* +11.2. 検索パターンにキャリッジリターン文字を含めるには? + +'\r'を使うか<CTRL-V><CTRL-M>を使えばパターンにキャリッジリターンを含めることが +できます。Vimスクリプト中では'\r'を使う方がよいでしょう。 + +さらなる情報については以下を参照してください。 > + + :help sub-replace-special +< + *faq-11.3* +11.3. 文字^Mを検索するには? + +検索コマンド中にCTRL-Vを押して次にCTRL-Mを押せば^M文字を挿入することができま +す。 +> + + /^V^M +< +"\r"文字を使うこともできます。Vimスクリプト中では"\r"を使う方がよいでしょう。 + +さらなる情報については以下を参照してください。 > + + :help c_CTRL-V + :help using_CTRL-V + :help /\r +< + *faq-11.4* +11.4. '~R', '~S'などと表示される文字を検索・置換するには? + +'ga'で特殊文字のアスキーコードを表示することができます。例えばアスキーコードが +142であるなら、次のコマンドでその特殊文字を検索することができます: > + + /^V142 +< +ここで^VはCTRL-Vを押して挿入します。 + +さらなる情報については以下を参照してください。 > + + :help ga + :help using_CTRL_V + :help 24.8 +< + *faq-11.5* +11.5. ファイル中の印字不能文字を全て強調するには? + +次のコマンドと検索パターンを使えばファイル中の印字不能文字を全て強調することが +できます: > + + :set hlsearch + /\(\p\|$\)\@!. +< +さらなる情報については以下を参照してください。 > + + :help /\p + :help /bar + :help /$ + :help /\( + :help /\@! + :help 'hlsearch' +< + *faq-11.6* +11.6. 単語に完全に一致するテキストを検索するには? + +アトム\<と\>を使えば単語に完全に一致するテキストを検索できます。例えば: > + + /\<myword\> +< +アトム\<は単語の先頭にマッチし、アトム\>は単語の末尾にマッチします。 + +さらなる情報については以下を参照してください。 > + + :help /\< + :help /\> +< + *faq-11.7* +11.7. カーソル下の単語を検索するには? + +*キーを押せばカーソル下の単語を前方に検索することができます。後方に検索するに +は#キーを押します。これらのコマンドを使うとキーワードに完全に一致するものだけ +が検索されます。 + +さらなる情報については以下を参照してください。 > + + :help star + :help # + :help g* + :help g# + :help 03.8 + :help search-commands +< + *faq-11.8* +11.8. 大文字・小文字を区別せず検索するには? + +常に大文字・小文字を区別しないようにするには'ignorecase'をセットします: > + + :set ignorecase +< +あるパターンを検索するときだけ区別しないようにするには、特別なディレクティブ +\cを使います: > + + /\c<pattern> +< +さらなる情報については以下を参照してください。 > + + :help 'ignorecase' + :help /ignorecase + :help /\c +< + *faq-11.9* +11.9. 2回続けて現れる単語を検索するには? + +次の検索コマンドのどれかを使えば、2回続けて現れる単語を探すことができます: > + + /\(\<\w\+\)\_s\+\1\> + /\(\<\k\+\)\_s\+\1\> +< +主な違いは'\w'と'\k'の使用です。後者は'iskeyword'に基づき、アクセントつきの文 +字や他の言語固有の文字を含むこともできます。 + +さらなる情報については以下を参照してください。 > + + :help /\1 + :help /\( + :help /\) + :help /\< + :help /\> + :help /\w + :help /\k + :help /\+ + :help /\_x + :help 'iskeyword' +< + *faq-11.10* +11.10. ある単語がバッファ中に何回現れるか数えるには? + +以下の一連のコマンドを行うと、ある単語がバッファ中に何回現れるかを数えることが +できます: > + + :let cnt=0 + :g/\<your_word\>/let cnt=cnt+1 + :echo cnt +< +上のコマンドは単語を含む行の数を数えるだけです。以下のコマンドを使うこともでき +ます: > + + :%s/\<word\>/&/g +< +訳註: :%s/\<word\>//ng というようにnフラグをつけると、実際には置換を行わず、何 + 箇所置換されるかを知ることができます。 + +ファイル中のアルファベットだけからなる単語を数えるにはこうします。 > + + :%s/\a\+/&/g +< +非空白文字だけからなる単語を数えるにはこうします。 > + + :%s/\S\+/&/g +< +さらなる情報については以下を参照してください。 > + + :help count-items + :help word-count + :help v_g_CTRL-G + :help 12.5 +< + *faq-11.11* +11.11. 検索時にカーソルをマッチした単語の末尾に移動させるには? + +検索コマンドにオフセット'e'を指定すると、カーソルをマッチした単語の末尾へ移動 +させることができます。例 > + + /mypattern/e +< +さらなる情報については以下を参照してください。 > + + :help search-offset + :help / +< + *faq-11.12* +11.12. 空行を検索するには? + +次のコマンドを使うと空行を検索することができます: > + + /^$ +< + または > + + /^\s*$ +< +さらなる情報については以下を参照してください。 > + + :help /^ + :help /$ + :help /\s + :help /* + :help search-commands +< + *faq-11.13* +11.13. 1つの文字だけを含む行を検索するには? + +1つの文字だけを含む行を検索するにはこうします: > + + /^\s*\a\s*$ +< +さらなる情報については以下を参照してください。 > + + :help /^ + :help /\a + :help /\s + :help /* + :help /$ +< + *faq-11.14* +11.14. 複数のファイルから文字列を検索し、置換するには? + +":argdo", ":bufdo", ":windo"コマンドを使うと複数のファイルに対してexコマンドを +実行することができます。例: > + + :argdo %s/foo/bar/g +< +さらなる情報については以下を参照してください。 > + + :help :argdo + :help :bufdo + :help :windo +< + *faq-11.15* +11.15. マップ中で置換コマンド":s"を使っています。検索が失敗したときマップが途 + 切れてしまいます。置換が失敗したときにもマップの次のコマンドを続けてほ + しいのですが、どうすればできますか? + +置換コマンドに対して'e'フラグを指定すると、パターンが見つからなかったときもマッ +プの他のコマンドを続行します。 + +さらなる情報については以下を参照してください。 > + + :help :s_flags +< + *faq-11.16* +11.16. 行からある文字がn回目に現れる箇所を検索するには? + +行中からある文字がn回目に現れる箇所を検索するには、'f'コマンドにプリフィックス +をつけます。例えば、文字@が5回目に現れる火おを検索するには、5f@とします。ただ +しカーソルが行頭にあるものとします。また、1桁目の文字が検索する文字ではないも +のとします。 + +さらなる情報については以下を参照してください。 > + + :help f + :help F + :help t + :help T + :help ; + :help , +< + *faq-11.17* +11.17. タブ(やその他の文字)を改行文字で置換するには? + +タブ(やその他の文字)を改行文字で置換するには、次のコマンドを使います: > + + :s/\t/\r/ +< +上のコマンドで\rでなく\nを使うと改行文字には置換されないので注意してください。 + +さらなる情報については以下を参照してください。 > + + :help sub-replace-special + :help NL-used-for-Nul + :help CR-used-for-NL +< + *faq-11.18* +11.18. アスキーコードで検索する文字を指定するには? + +"/"コマンド中で、CTRL-Vに続いて10進、16進、8進の値を入力すると、アス +キーコードでその値を持つ文字を検索することができます。ある文字のアスキーコード +を知るには":ascii"や"ga"コマンドが使えます。 +For more information, read > + + :help i_CTRL-V_digit + :help :ascii + :help ga +< + *faq-11.19* +11.19. 長い行を見つけるには? + +検索コマンドで正規表現を使えば長い行、または指定した数以上の文字を含む行を検索 +することができます。例えば、80文字以上を含む行を検索するには、このようにします +: > + + /^.\{80}.*$ + /^.*\%80c.*$ +< +さらなる情報については以下を参照してください。 > + + :help /\{ + :help /\%c +< + *faq-11.20* +11.20. カレントバッファ内の指定したパターンを含む行を全て表示するには? + +次のコマンドを使うとカレントバッファ内の指定したパターンを含む行を全て表示する +ことができます: > + + :g/<pattern>/p +< +例えば、次のコマンドはカレントバッファ内の"vim"を含む行を全て表示します: > + + :g/vim/p +< +行番号もいっしょに表示したいならば次のコマンドが使えます: > + + :g/<pattern>/# +< +さらなる情報については以下を参照してください。 > + + :help :global + :help :print + :help :number +< + *faq-11.21* +11.21. 複数行にわたる文字列を検索するには? + +正規表現のアトム\_xを使えば、複数行にわたる文字列を検索することができます。例 +えば、文字列"Hello World"を検索するには次のコマンドを使います: > + + /Hello\_sWorld +< +これは、単語"Hello"とそれに続く改行文字、そして次行の行頭の単語"World"にマッチ +します。またこれは"Hello"、スペース、"World"にもマッチします。行頭と行末の空白 +を含めて文字列"Hello World"を検索するには、次のコマンドを使います: > + + /Hello\_s\+World +< +さらなる情報については以下を参照してください。 > + + :help 27.8 + :help pattern-atoms + :help /\_ + :help pattern-searches +< + *faq-11.22* +11.22. バッファの指定した範囲内から検索するには? + +正規表現のアトム\%>lと\%<lを使えば、指定した範囲内からパターンを検索することが +できます。 + +例えば、10行目と20行目の間から単語'white'を検索するには次のコマンドを使います: +> + + /white\%>10l\%<20l +< +さらなる情報については以下を参照してください。 > + + :help /\%l +< + +============================================================================= + *faq-12* +SECTION 12 - テキストを変更する + + *faq-12.1* +12.1. 行末の空白文字(スペースとタブ)を全て削除するには? + +":substitute"コマンドを使ってファイル中から行末の空白文字を全て削除することが +できます: > + + :%s/\s\+$// +< +さらなる情報については以下を参照してください。 > + + :help :% + :help :s + :help /\s + :help /\+ + :help /$ +< + *faq-12.2* +12.2. 連続する空白文字を1個のスペースに置換するには? + +次のコマンドで連続する空白文字を1個のスペースに置換することができます: > + + :%s/ \{2,}/ /g +< +さらなる情報については以下を参照してください。 > + + :help :% + :help :s + :help /\{ + :help :s_flags +< + *faq-12.3* +12.3. 連続する空行を1行だけに圧縮するには? + +次のコマンドで連続する空行を1行だけに圧縮することができます: > + + :v/./.,/./-1join +< +このコマンドの説明は以下の通りです: > + + :v/./ 後に続くコマンドを、1文字も含まない行(空行)を除く全ての行 + に対して実行する。 + ., 現在行を範囲の開始位置に指定する。 + /./ 1文字を含む行を範囲の終端に指定する。 + -1 終端を1行前に調整する。 + j 範囲内の行を連結する。 +< +空行がファイルの末尾にある場合、これはエラーメッセージを出します。それを避ける +には、一時的な行をファイルの末尾に追加し、このコマンドを実行してから一時的な行 +を削除します。 + +さらなる情報については以下を参照してください。 > + + :help :v + :help :join + :help cmdline-ranges + :help collapse +< + *faq-12.4* +12.4. ファイル中の空行を全て削除するには?空白文字だけを含む行を全て削除するに + は? + +空行を全て削除するには、次のコマンドを使います: > + + :g/^$/d +< +空白文字(スペースとタブ)だけからなる行を削除するには、次のコマンドを使います: +> + + :g/^\s\+$/d +< +空行、または空白だけからなる行を全て削除するには、次のコマンドを使います: > + + :g/^\s*$/d +< + *faq-12.5* +12.5. カーソル下の単語をコピー/ヤンクするには? + +"yiw"(yank inner word without whitespace)または"yaw" (yank a word with +whitespace)でカーソル下の単語をコピー/ヤンクできます。 + +さらなる情報については以下を参照してください。 > + + :help 04.6 + :help 04.8 + :help iw + :help yank + :help text-objects + :help objects +< + *faq-12.6* +12.6. 行全体ではなく、行内のある位置からある位置までをヤンクするには? + +ヤンクオペレータ(y)に移動コマンドを指定すれば、行内のある位置から別の位置まで +をヤンクすることができます。例えば、現在のカーソル位置から次のxという文字まで +をヤンクするにはyfx, Fx, tx, Txのどれかを使います。n桁目までをヤンクするには +n|を使います。次に'word'が現れる場所までをヤンクするには/wordとします。別の行 +のn桁目までをヤンクするには、まず'ma'で位置をマークし、ヤンク開始位置まで移動 +してt`a(バッククォートであることに注意)でマークまでをヤンクします。 + +さらなる情報については以下を参照してください。 > + + :help yank + :help motion.txt + :help 4.6 +< + *faq-12.7* +12.7. 現在のレジスタの中身に追加ヤンクするには? + +レジスタを指定するときに大文字を使うと現在のレジスタに追加ヤンクされます。例え +ば、レジスタ"a"になにかテキストが入っているとします。新しいテキストをここに追 +加するには、レジスタ名"A"を使います。レジスタ名に小文字を使うと、レジスタの中 +身は新しいテキストで上書きされてしまいます。 + +さらなる情報については以下を参照してください。 > + + :help quote + :help quote_alpha + :help 10.1 +< + *faq-12.8* +12.8. 複数行にわたる文全体をヤンクするには? + +複数行にわたる文全体をヤンクするには、ヤンクオペレータの後に移動コマンドを続け +ます。例: > + + y) +< +文の内側にいるときは'yi)'で文をヤンクすることができます。 + +さらなる情報については以下を参照してください。 > + + :help yank + :help {motion} + :help object-motions + :help 4.6 +< + *faq-12.9* +12.9. あるパターンを含む行全てをヤンクするには? + +":global"を使えばあるパターンを含む行全てをヤンクし、その後そのレジスタの中身 +をバッファにペーストすることができます: > + + :let @a='' + :g/mypattern/y A +< +最初のコマンドはレジスタ"a"の中身をクリアします。2番目のコマンドは"mypattern" +を含む行全てをレジスタ"a"にコピーします。大文字"A"を使ってマッチした行を追加し +ていることに注意してください。そして"apコマンドでレジスタ"a"の中身をバッファに +ペーストすることができます。 + +さらなる情報については以下を参照してください。 > + + :help :g + :help :y + :help let-register + :help quote_alpha + :help put + :help registers + :help :registers +< + *faq-12.10* +12.10. あるパターンを含まない行全てを削除するには? + +":v"コマンドを使えば、あるパターンを含まない行全てを削除することができます: > + + :v/pattern/d +< +または > + + :g!/pattern/d +< +さらなる情報については以下を参照してください。 > + + :help :v + :help :g +< + *faq-12.11* +12.11. "pattern"を含む全ての行の前に行を追加するには? + +以下のコマンドを使うと、"pattern"を含む行全ての前に行を追加することができま +す: > + + :g/pattern/normal Oi<line of text goes here> +< +または追加する行をYでヤンクし、次のコマンドでそれを追加することができます: > + + :g/pattern/put! +< +さらなる情報については以下を参照してください。 > + + :help :g + :help :put + :help insert + :help 0 +< + *faq-12.12* +12.12. 前の行が特定のパターンを含んでいる行に対して操作を行うには? + +":global"を使えば、前の行が特定のパターンを含んでいる行に対して操作を行うこと +ができます: > + + :g/<pattern>/+{cmd} +< +さらなる情報については以下を参照してください。 > + + :help :g + :help :range +< + *faq-12.13* +12.13. あるパターンを含む行全てに対してコマンドを実行するには? + +":global"(:g)コマンドを使えば、あるパターンを含む行全てに対してコマンドを実行 +することができます。 > + + :g/my pattern/d +< +Exコマンドでないコマンドを使いたければ、":normal"を使うことができます: > + + :g/my pattern/normal {command} +< +ノーマルモードコマンドの再帰マッピングを避けたければ代わりに":normal!"を使いま +す("!"に注意)。 + +さらなる情報については以下を参照してください。 > + + :help :global + :help :v + :help :normal +< + *faq-12.14* +12.14. カーソル位置の1文字上の文字をカーソル位置にコピーするには? + +インサートモードで<Ctrl-Y>とするとカーソル位置の1文字上の文字をコピーすること +ができます。同じように<Ctrl-E>で1文字下の文字をコピーすることができます。 + +さらなる情報については以下を参照してください。 > + + :help i_CTRL-Y + :help i_CTRL-E +< + *faq-12.15* +12.15. インサートモードに入らずに現在行の前/後に空行を挿入するには? + +":put"を使えば空行を挿入できます。例えば、次を実行してみてください: > + + :put ='' + :put! ='' +< +さらなる情報については以下を参照してください。 > + + :help :put +< + *faq-12.16* +12.16. カレントファイルの名前をカレントバッファに挿入するには? + +カレントファイルの名前をカレントバッファに挿入するにはいくつかの方法がありま +す。インサートモードでは<C-R>%または<C-R>=expand("%")でできます。ノーマルモー +ドでは":put =@%"でできます。 + +さらなる情報については以下を参照してください。 > + + :help i_CTRL-R + :help expand() + :help !! +< + *faq-12.17* +12.17. レジスタの中身をカレントバッファに挿入するには? + +インサートモードでは<C-R><register>で<register>の中身を挿入することができま +す。例えば、<C-R>aでレジスタ"a"の中身をカレントバッファに挿入できます。 + +ノーマルモードでは":put <register>"で<register>の中身を挿入できます。例えば、 +":put d"でレジスタ"d"の中身をカレントバッファに挿入できます。 + +さらなる情報については以下を参照してください。 > + + :help i_CTRL-R + :help :put +< + *faq-12.18* +12.18. 行末を越えてカーソルを移動し、テキストを挿入するには? + +オプション"virtualedit"をセットすれば行末を越えてカーソルを移動し、行末の先に +文字を追加することができます。virtualモードを開始するにはこうします。 > + + :set virtualedit=all +< +さらなる情報については以下を参照してください。 > + + :help 'virtualedit' +< + *faq-12.19* +12.19. カーソル下の単語(例えばjunk)を"foojunkbar"に置き換えるには? + +いくつかの方法があります。その行の中でその単語が現れる最初の箇所なら、こうしま +す: > + + :exe "s/".expand("<cword>")."/foo&bar/" +< +よりマッチを限定させるには、このようなより複雑な置換コマンドを使います: > + + :exe 's/\<'.expand("<cword>").'\%>'.(col(".")-1).'c\>/foo&bar/' +< +またはciwfoo<C-R>"bar<Esc>としてもできます。 + +さらなる情報については以下を参照してください。 > + + :help :substitute + :help expand() + :help col() + :help /\%c +< + *faq-12.20* +12.20. ディレクトリ中の全てのファイルに対して特定のテキストを置換するには? + +"argdo"を使えば、引数として指定されたファイル全てに対して置換コマンドを実行す +ることができます: > + + :args * + :argdo %s/<your_text>/<replacement_text>/ge | update +< +さらなる情報については以下を参照してください。 > + + :help :args_f + :help :argdo + :help :s_flags +< + *faq-12.21* +12.21. ファイル中に数字が書かれています。これを増加・減少させるには? + +CTRL-Aで数字を増加、CTRL-Xで減少させることができます。また、カウントを指定すれ +ば増加・減少させる数を指定することができます。この機能は10進、8進、16進の数字 +に対して適用することができます。 + +さらなる情報については以下を参照してください。 > + + :help CTRL-A + :help CTRL-X + :help 'nrformats' +< + + *faq-12.22* +12.22. ":substitute"で最後に検索したパターンを再利用するには? + +":substitute"で検索パターンを指定しなければ、最後に検索したパターンを再利用す +ることができます: > + + :s/pattern/newtext/ + :s//sometext/ +< +2回目の":s"では、検索パターンが指定されていないので、最初の":s"のパターンが使 +われます。 + +検索パターンは変えたいが、置換語を同じものにしたい場合は、チルド文字を使いま +す: > + + :s/newpattern/~/ +< +さらなる情報については以下を参照してください。 > + + :help :s + :help :& + :help :~ + :help & + :help sub-replace-special +< + *faq-12.23* +12.23. ":substitute"を使って大文字・小文字を入れかえるには? + +":substitute"の置換文字列に特殊文字を使えば、マッチした文字列の大文字・小文字 +を入れかえることができます。例えば、文字列"MyString"を全て大文字にするには、以 +下のコマンドを使うことができます: > + + :%s/MyString/\U&/g +< +小文字にするには、次のコマンドを使います: > + + :%s/MyString/\L&/g +< +現在行の全ての単語の最初の文字を大文字にするには、次のコマンドを使います: > + + :s/\<\(.\)\(\k*\)\>/\u\1\L\2/g +< +さらなる情報については以下を参照してください。 > + + :help sub-replace-special + :help :substitute + :help \U + :help \L + :help \u +< + *faq-12.24* +12.24. キーボード上に無い文字を入力するには? + +ダイグラフを使えば、キーボード上に無い文字を入力することができます。現在定義さ +れているダイグラフを全て表示するには":digraphs"を使います。":digraphs"を使えば +リストに新しいダイグラフを追加できます。 + +さらなる情報については以下を参照してください。 > + + :help digraphs + :help 'digraphs' + :help 24.9 +< + *faq-12.25* +12.25. ダイグラフのどれか、または全てを削除するコマンドはありますか? + +ありません。ダイグラフテーブルはコンパイル時に定義されます。できるのは新しいダ +イグラフを追加することだけです。ダイグラフを削除するコマンドを追加するという事 +はTODOリストにはありません。 + *faq-12.26* +12.26. インサートモードでバックスペースキーを押すと、今回のインサートモードで + 入力した文字が消されるだけです。バックスペースキーで前回のインサートモ + ードで入力した文字を消すには? + +'backspace'をセットすればインサートモードで前回入力した文字を削除することがで +きます: > + + :set backspace=indent,eol,start +< +さらなる情報については以下を参照してください。 > + + :help 'backspace' +< + *faq-12.27* +12.27. 72文字より長くて"+"で終わり、次行に折り返されている行があります。このよ + うな行をすばやく連結させるには? + +":global"を使えばそのような行を検索・連結できます: > + + :g/+$/j +< +しかしこれは2行ごとに連結するだけです。連続する"+"で終わる行を連結する、より複 +雑な2つの例が以下の通りです: > + + :g/*$/,/\(^\|[^+]\)$/j + :g/+$/mark a | .,/\(^\|[^+]\)$/s/+$// | 'a,.j +< +訳註: 1番目の例は :g/+$/,/\(^\|[^+]\)$/j の間違いだと思う。 + +さらなる情報については以下を参照してください。 > + + :help :g + :help :j + :help :mark +< + *faq-12.28* +12.28. 文字単位でヤンクされたテキストを新しい行にペーストするには? + +":put"を使えば文字単位でヤンクされたテキストを新しい行にペーストできます: > + + :put =@" +< +さらなる情報については以下を参照してください。 > + + :help :put + :help quote_= +< + *faq-12.29* +12.29. 単語・文字・テキストのブロックの大文字小文字を入れかえるには? + +"~"を使えば文字の大文字・小文字を入れかえることができます。 + +カーソル下の単語を大文字にするには"gUiw"または"viwU"、小文字にするには"guiw"ま +たは"viwu"とすればできます。 + +カーソル下の単語の大文字・小文字を入れかえるには"viw~"または"g~iw"とします。 + +"gUgU"とすれば現在行を大文字にでき、"gugu"とすれば現在行を小文字にできます。 + +"g~g~"とすれば現在行の大文字・小文字を入れかえることができます。"g~{motion}"ま +たは"{Visual}~"とすればテキストのブロックの大文字・小文字を入れかえることがで +きます。 + +さらなる情報については以下を参照してください。 > + + :help case +< + *faq-12.30* +12.30. キーボード上にないアスキー文字を入力するには? + +キーボード上にないアスキー文字を入力するには、CTRL-Vを押してからそのアスキーコ +ードを入力します。特別なアスキー文字を入力するのにダイグラフを使うこともできま +す。 + +さらなる情報については以下を参照してください。 > + + :help i_CTRL-V_digit + :help digraphs + :help 45.5 +< + *faq-12.31* +12.31. ファイル中の印字不能文字を置換するには? + +印字不能文字を置換するには、まずその文字のアスキーコードを知らなければなりま +せん。exコマンド":ascii"またはノーマルモードコマンド"ga"を使ってカーソル下の +文字のアスキーコードを知ることができます。 + +CTRL-Vに続けて10進の数字1-255(最初に0をつけてばならない)またはxと16進の数字 +00-FF、または8進の数字0-0377(最初に0をつける)またはuと16進の数字0-FFFFまたは +Uと16進の数字0-7FFFFFFFを入力すれば、印字不能文字を入力することができます。 + +別の方法としては、":digraphs"を使って、全文字に対するダイグラフと共にそれら +の10進値プラスアルファを表示することです。CTRL-Kに続けて英数字を2つ(ダイグラフ +)を入力すれば印字不能文字を入力することができます。 + +さらなる情報については以下を参照してください。 > + + :help :ascii + :help i_CTRL-V + :help i_CTRL-V_digit + :help :digraphs +< + *faq-12.32* +12.32. バッファから重複した行を削除するには? + +次のユーザー定義コマンドを使えばバッファから重複した行を全て削除することができ +ます: > + + :command -range=% Uniq <line1>,<line2>g/^\%<<line2>l\(.*\)\n\1$/d +< +上のコマンドを.vimrcに追加し、":Uniq"を実行すると重複した行が削除されます。 + + *faq-12.33* +12.33. ファイル中の全ての行の前に行番号をつけるには? + +行番号をつけるにはいくつかの方法があります。以下はその例です: > + + :%s/^/\=line('.'). ' ' + :%s/^/\=strpart(line(".")." ", 0, 5) + :g/^/exec "s/^/".strpart(line(".")." ", 0, 4) +< +さらなる情報については以下を参照してください。 > + + :help sub-replace-special + :help line() + :help expr6 + :help strpart() + :help :execute + :help :global +< + *faq-12.34* +12.34. 2つの文字・単語・行を入れ換えるには? + +"xp"で2つの文字を入れ換えることができます。'x'でカーソル下の文字を削除し、'p' +で削除された文字をカーソル下の文字の後ろにペーストします。その結果、2つの文字 +が入れ換わります。 + +2つの単語を入れ換えるには"deep"とします(最初の単語の前の空白にカーソルをおいて +実行します)。 + +2つの行を入れ換えるには"ddp"とします。'dd'で現在行を削除し、'p'で現在行の後ろ +に削除された行をペーストします。その結果、2つの行が入れ換わります。 + +以上の操作はどれも無名レジスタ"の中身を変更します。 + +":m +"とすると無名レジスタの中身を変更することなく2つの行を入れ換えることがで +きます。 + +さらなる情報については以下を参照してください。 > + + :help x + :help p + :help dd + :help d + :help e + :help linewise-register + :help quotequote + :help :move +< + +============================================================================= +SECTION 13 - インサートモードでの補完 + + *faq-13.1* +13.1. インサートモードで単語や行を補完するには? + +インサートモードでCTRL-PまたはCTRL-Nを使うと単語を補完することができます。 +CTRL-Nは次の候補を前方から検索します。 +CTRL-Pは次の候補を後方から検索します。 + +インサートモードでCTRL-X CTRL-Lを使うと現在行のカーソル以前の文字列で始まる行 +を補完します。次のマッチする行を取得するにはCTRL-PまたはCTRL-Nを使います。イン +サートモードで単語を補完する方法・キーは他にもたくさんあります。 + +Vimは以下の要素の補完をサポートしています: > + + CTRL-X CTRL-F ファイル名 + CTRL-X CTRL-L 行全体 + CTRL-X CTRL-D マクロ定義 (インクルードファイル中のものも) + CTRL-X CTRL-I カレントファイルとインクルードファイル + CTRL-X CTRL-K 辞書中の単語 + CTRL-X CTRL-T シソーラス中の単語 + CTRL-X CTRL-] タグ + CTRL-X CTRL-V Vimコマンドライン +< +さらなる情報については以下を参照してください > + + :help 24.3 + :help ins-completion +< + *faq-13.2* +13.2. インサートモードでファイル名を補完するには? + +インサートモードでCTRL-X CTRL-Fを使うとカレント行のカーソルの前の文字列で始ま +るファイル名を補完することができます。 + +さらなる情報については以下を参照してください > + + :help compl-filename +< + *faq-13.3* +13.3. インサートモードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 + 今補完した単語の後に現れる単語を補完するには? + +CTRL-X CTRL-NとCTRL-X CTRL-Pを使うと今補完した単語の後に続く単語を補完すること +ができます。 + +さらなる情報については以下を参照してください > + + :help i_CTRL-X_CTRL-P + :help i_CTRL-X_CTRL-N + :help ins-completion +< + +============================================================================= + *faq-14* +SECTION 14 - テキストの整形 + +14.1. 折り返された行の末尾に改行を挿入するには? + +'gq'コマンドを使うと段落を整形することができます。これは現在の'textwidth'の設 +定にしたがってテキストを整形します。 + +オペレータgqは移動コマンドと組み合わせて、テキストの範囲に対して実行できます。 +例: > + + gqgq - 現在行を整形する + gqap - 現在の段落を整形する + gq3j - 現在行と下3行を整形する +< +さらなる情報については以下を参照してください > + + :help gq + :help formatting + :help usr_25.txt + :help motion.txt +< + *faq-14.2* +14.2. 1行がn文字以下になるように長い行を整形するには? + +まず'textwidth'を望みの値に設定します: > + + set textwidth=70 +< +そして、'textwidth'で設定された長さで行を折り返すにはこうします > + + :g/./normal gqq +< +さらなる情報については以下を参照してください > + + :help gq +< + *faq-14.3* +14.3. 短い行を連結して段落を形成するには? + +まず、'textwidth'を大きな値に設定します: > + + :set textwidth=99999 +< +続いて、以下のコマンドで短い行を連結して段落を形成します: > + + 1GgqG +< +このコマンドはファイル全体に作用します。指定した範囲内の全段落に対して整形を行 +うにはこうします: > + + :'a,'bg/\S/normal gq} +< +さらなる情報については以下を参照してください > + + :help gq + :help G + :help gqq +< + *faq-14.4* +14.4. 箇条書きや番号つきリストを整形するには? + +'formatoptions'によって箇条書きや番号つきリストを整形するように設定することが +できます。例えば、以下のフォーマットのリストを整形することができます: + + - this is a test. this is a test. this is a test. this is a test. + this is a test. + +これがこのような形式になります。 + + - this is a test. this is a test. this is a test. this is a test. + this is a test. + +'formatoptions'に'n'フラグをつけると、テキストの桁をそろえることができます。 > + + :set fo+=n +< +このオプションを設定してテキストを整形すると、Vimは番号つきリストを認識しま +す。このオプションを機能させるためには、'autoindent'をセットしなければなりませ +ん。 + +さらなる情報については以下を参照してください > + + :help 'formatoptions' + :help fo-table +< + *faq-14.5* +14.5. インサートモードで行をインデントするには? + +インサートモードでCTRL-Tを押すと現在行の行頭にshiftwidth分のインデントを挿入す +ることができます。インサートモードでCTRL-Dを押すと現在行の行頭のshiftwidth分の +インデントを削除することができます。また、CTRL-O >>とCTRL-O <<でもインサートモ +ード中に現在行をインデントすることができます。 + +さらなる情報については以下を参照してください > + + :help i_CTRL-T + :help i_CTRL-D + :help i_0_CTRL-D + :help i_CTRL-O + :help >> + :help << +< + *faq-14.6* +14.6. ファイル全体を整形・インデントするには? + +gg=Gでファイル全体を整形・インデントすることができます。ここで、 > + + gg - ファイルの先頭に移動 + = - インデントを適用 + G - ファイルの末尾まで +< +という意味になります。 +さらなる情報については以下を参照してください > + + :help gg + :help = + :help G + :help 'formatprg' + :help C-indenting +< + *faq-14.7* +14.7. 現在のファイルのインデントを増やす/減らすには? + +'>>'と'<<'で現在行のインデントを増やしたり減らすことができます。 + +さらなる情報については以下を参照してください > + + :help shift-left-right + :help >> + :help << + :help 'shiftwidth' +< + *faq-14.8* +14.8. ブロックまたは行のグループをインデントするには? + +ビジュアルモードで行を選択して>または<を押すと選択した行をインデント・アンイ +ンデントすることができます。次のexコマンドを使っても行をインデントすることがで +きます > + + :10,20> +< +さらなる情報については以下を参照してください > + + :help shift-left-right + :help v_> + :help v_< + :help :< + :help :> +< + *faq-14.9* +14.9. >または<キーで行をインデントすると、'tabstop'で設定した値でなく、標準的 + なタブストップ値の8が使われます。なぜですか? + +オペレータ">"でインデントしたとき挿入されるスペースの数は'shiftwidth'オプショ +ンで決まります。'tabstop'の設定はインデントには適用されません。インデントで挿 +入されるスペースの数を変更するには、こうします: > + + :set shiftwidth=4 +< +さらなる情報については以下を参照してください > + + :help 'shiftwidth' + :help >> + :help 'softtabstop' +< + *faq-14.10* +14.10. オートインデントを無効にするには? + +デフォルトではオートインデントは無効になっています。設定ファイル(.vimrc, +.gvimrc)のインデントに関する設定を確認してください。":filetype indent on"が行 +われていないことを確かめてください。もし行われていたなら、これを削除してくださ +い。また、好みに応じて'autoindent', 'smartindent', 'cindent', 'indentexpr'の値 +を確かめ、これらをオフにしてもよいでしょう。 + +さらなる情報については以下を参照してください > + + :help :filetype-indent-off + :help 'autoindent' + :help 'smartindent' + :help 'cindent' + :help 'indentexpr' +< + *faq-14.11* +14.11. メールを編集するときは自動的に'textwidth'オプションをある値にするように + するには? + +'FileType'オートコマンドを使えば'textwidth'を設定することができます: > + + autocmd FileType mail set tw=<your_value> +< +さらなる情報については以下を参照してください > + + :help :autocmd + :help FileType + :help usr_43.txt +< + *faq-14.12* +14.12. 自動的に改行を挿入させることはできますか? + +できます。'textwidth'を好きな行の長さに設定します。すると新しい行を挿入すると +きに自動的に改行が挿入されます。例: > + + :set textwidth=75 +< +さらなる情報については以下を参照してください > + + :help textwidth + :help ins-textwidth + :help 'formatoptions' + :help fo-table + :help formatting +< + *faq-14.13* +14.13. ファイル中に^Mという記号がたくさん表示されます。'fileformat'を'dos'にし + たり'unix'にしたり'mac'にしたりしてみましたが、改善できません。これらの + 記号を表示させなくするには? + +ファイルを読み込むとき、そのファイルのフォーマットは以下のようにして決定されま +す: + +- 全ての行が改行文字(<NL>)で終わっていればファイルフォーマットは'unix'です。 +- 全ての行がキャリッジリターン文字(<CR>)に続く改行文字(<NL>)で終わっていれば + ファイルフォーマットは'dos'です。 +- 全ての行がキャリッジリターン文字(<CR>)で終わっていればファイルフォーマットは + 'mac'です。 + +一部の行が<CR>で終わっていて、一部の行が<CR>に続く<NL>で終わっているとき、ファ +イルフォーマットは'unix'になります。 + +カレントファイルのフォーマットを変更するには、'fileformat'を変更し、ファイルを +保存します: > + + :set fileformat=dos + :w +< +カレントファイルのフォーマットを表示するにはこうします > + + :set fileformat? +< +以上の動作は'fileformats'によっても変わります。次のコマンドを試してみてくださ +い: > +さらなる情報については以下を参照してください > + + :help 'fileformats' + :help 'fileformat' + :help file-formats + :help DOS-format-write + :help Unix-format-write + :help Mac-format-write + :help dos-file-formats + :help 23.1 +< + *faq-14.14* +14.14. 他のアプリケーションからVimのバッファへテキストを貼り付けたとき、挿入さ + れたテキストの桁(インデント)が狂ってしまいます。これを直すには? + +テキストのインデントが狂うのはインデントに関する様々なオプション(autoindent, +smartindent, textwidth)によります。テキストをVimに貼り付ける前に'paste'をセッ +トしてください: > + + :set paste +< +テキストをペーストしたらこのオプションをオフにします: > + + :set paste! +< +レジスタ*によってクリップボードを使用できる場合はCTRL-R CTRL-O *とするとインデ +ントなしでテキストを貼り付けることができます。 + +さらなる情報については以下を参照してください > + + :help 'paste' + :help 'pastetoggle' + :help i_CTRL-R_CTRL_O + :help clipboard + :help xterm-clipboard + :help gui-clipboard +< + *faq-14.15* +14.15. 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきらない + とき、まったく何も表示されません。折り返された行の代わりに'@'という記号 + で始まる空の行が表示されます。行が収まるように画面をスクロールすると'@' + は消え、行が表示されるようになります。この挙動の設定はどうやるのですか? + +'display'オプションを'lastline'に設定すると、'@'を表示する代わりに可能な限り最 +後の行を表示するようになります。 > + + :set display=lastline +< +さらなる情報については以下を参照してください > + + :help 'display' +< + *faq-14.16* +14.16. ファイル中の全てのタブ文字をスペースに変換するには? + +":retab"を使うとカレントファイル中の全てのタブ文字を'expandtab'と'tabstop'の設 +定にしたがって変換することができます。例えば、全てのタブをスペースに変換するに +はこのようにします > + + :set expandtab + :retab +< +さらなる情報については以下を参照してください > + + :help :retab + :help 'expandtab' + :help 'tabstop' + :help 25.3 +< + *faq-14.17* +14.17. 後でワードプロセッサに送るテキストを編集するためのオプションは? + +後でワードプロセッサに送るテキストを編集するためには以下のオプションを設定する +ことができます: > + + :set wrap + :set linebreak + :set textwidth=0 + :set showbreak=>>> +< +'gk'と'gj'を使うと画面上の行(物理行)単位で上下に移動できます。 +さらなる情報については以下を参照してください > + + :help 'wrap' + :help 'linebreak' + :help 'textwidth' + :help 'showbreak' + :help gk + :help gj +< + +============================================================================= + *faq-15* +SECTION 15 - ビジュアルモード + + *faq-15.1* +15.1. 矩形範囲をコピーするには? + +矩形選択モードを使えば矩形範囲をコピーすることができます。矩形選択モードを開始 +するにはCTRL-Vキーを押します。移動コマンドを使ってカーソルを動かし、yを押すと +選択したテキストがヤンクされます。 + +CTRL-Vが期待通りに機能しない場合は、スクリプトmswin.vimによってこの機能が +CTRL-Qにマップされているかもしれません。Windowsマシン上では他のプログラムに共 +通のショートカットを真似するため、しばしばvimrcによってこのスクリプトがsource +されています。 + +さらなる情報については以下を参照してください > + + :help 04.4 + :help blockwise-visual + :help visual-mode + :help Q_vi +< + *faq-15.2* +15.2. ファイルの特定の列を削除・変更するには? + +矩形選択モードを使えば特定の列を選択してオペレータコマンド(変更・削除・コピー) +を適用することができます。 + +さらなる情報については以下を参照してください > + + :help visual-block + :help visual-operators +< + *faq-15.3* +15.3. ビジュアル選択した行に対してexコマンドを適用するには? + +ビジュアルモードで行を選択すると、レジスタ<が選択範囲の開始位置にセットされ、 +レジスタ>が選択範囲の終端にセットされます。これらのレジスタを使えばexコマンド +の範囲を指定できます。行をビジュアル選択してから":"を押すとコマンドモードに移 +行します。自動的に選択範囲を示す'<,'>が挿入されます。選択範囲に対してどんなex +コマンドでも実行することができます。 + +さらなる情報については以下を参照してください > + + :help v_: + :help '< + :help '> +< + *faq-15.4* +15.4. 矩形選択した範囲に対してexコマンドを適用するには? + +exコマンドは全て行全体に対してのみ実行されます。テキストを矩形選択してexコマン +ドを実行しようとすると、(選択した列だけでなく)選択した行全体に対して実行されて +しまいます。http://vim.sourceforge.net から入手できるプラグインvis.vimを使えば +矩形範囲に対してexコマンドを適用することができます。 + +さらなる情報については以下を参照してください > + + :help cmdline-ranges + :help 10.3 + :help cmdline-lines +< + *faq-15.5* +15.5. ビジュアルモードでファイル全体を選択するには? + +ggVGでファイル全体をビジュアル選択することができます。 > + + gg - ファイルの先頭へ移動 + V - 行単位ビジュアル選択を開始 + G - ファイルの末尾へ移動 +< +さらなる情報については以下を参照してください > + + :help gg + :help linewise-visual + :help G +< + *faq-15.6* +15.6. ビジュアル選択してから>キーを押してインデントすると、選択が解除されま + す。この範囲に対して操作を続けるため選択したままにするには?(または)最後 + に選択された範囲を再選択するには? + +'gv'で最後に選択された範囲を再選択できます。またマーク'<と'>を使うと最後に選択 +された範囲の開始位置と終端に移動することができます。 + +さらなる情報については以下を参照してください > + + :help gv + :help '< + :help '> +< + *faq-15.7* +15.7. ビジュアル選択した範囲の先頭/末尾へ移動するには? + +(ビジュアルモードにおいて)'o'コマンドでビジュアル選択した範囲の先頭/末尾へ移動 +できます。 + +さらなる情報については以下を参照してください > + + :help v_o +< + *faq-15.8* +15.8. マウスでテキストを選択してからexコマンドを実行しようと:キーを押すと選択 + された範囲が文字:で置換されてしまいます。マウスで選択したときもビジュア + ル選択したときのようにテキストに対してexコマンドを実行するには? + +これは'selectmode'でビジュアルモードでなく選択モードを使うように設定していると +き起こります。このオプションの値を確認してください: > + + :set selectmode? +< +このモードは選択モードといい、ビジュアルモードに似ています。"behave mswin"コマ +ンドを使うと、このオプションも自動的にセットされます。選択モードはビジュアルモ +ードと同じように見えますが、MS-Windowsの選択モードに似ています。 + +さらなる情報については以下を参照してください > + + :help Select-mode + :help 'selectmode' + :help 9.4 + :help :behave +< + *faq-15.9* +15.9. マウスでテキストを選択するとビジュアルモードでなく選択モードに入ってしま + います。なぜですか? + +マウスでテキストを選択したとき選択モードになるかどうかは'selectmode'オプション +によって決まります。ビジュアルモードが始まるようにするには、'selectmode'から +'mouse'の値を除きます: > + + :set selectmode-=mouse +< +デフォルトでは'selectmode'は空になっていて、常にビジュアルモードが使われるよう +になっています。 + +さらなる情報については以下を参照してください > + + :help 'selectmode' + :help Select-mode + :help :behave +< + *faq-15.10* +15.10. 最後にコピー/ペーストされたテキストをビジュアル選択するには? + +マーク'['と']を使うと最後にコピー/ペーストされたテキストを選択することができ +ます。マーク'[は最後に変更/ヤンクされたテキストの先頭にセットされ、']はその末 +尾にセットされます。この範囲をビジュアル選択するには、'[v']とします。 + +さらなる情報については以下を参照してください > + + :help '[ + :help '] + :help `a + :help v +< + +============================================================================= + *faq-16* +SECTION 16 - コマンドラインモード + + *faq-16.1* +16.1. コマンドモードまたはexコマンドモードでカレントファイル名を使うには? + +コマンドモードでは文字'%'がカレントファイルの名前を表します。いくつかのコマン +ドにおいてはファイル名を取得するためにexpand("%")を使わねばなりません: > + + :!perl % +< +さらなる情報については以下を参照してください。 > + + :help :_% + :help cmdline-special + :help expand() +< + *faq-16.2* +16.2. Vimのコマンドラインで効率的にテキストを編集するには? + +Vimのコマンドラインテキストを編集するのにコマンドラインウィンドウを使うことが +できます。コマンドラインウィンドウを開くにはノーマルモードで"q:"とします。コマ +ンドラインモード中からはCTRL-Fを使います。このウィンドウにはコマンドラインの履 +歴が表示されます。通常のVimのキー・コマンドを使って以前の・新しいコマンドライ +ンを編集することができます。コマンドラインを実行するにはエンター/リターンキー +を押します。 + +同様に、検索履歴を"q/"と"q?"で編集することができます。 + +さらなる情報については以下を参照してください。 > + + :help cmdline-window +< + *faq-16.3* +16.3. ViモードからExモードに移行するには? + +QでViモードからExモードに移行できます。ExモードからViモードに移行するには:viを +使います。 + +さらなる情報については以下を参照してください。 > + + :help Q + :help gQ + :help Ex-mode + :help :vi +< + *faq-16.4* +16.4. exコマンドの出力をバッファにコピーするには? + +exコマンドの出力をバッファにコピーするには、まずそのコマンドの出力をレジスタに +入れます。":redir"で出力をレジスタに入れることができます。例 > + + :redir @a + :g/HelloWord/p + :redir END +< +するとレジスタ'a'がexコマンド"g/HelloWord/p"の出力を保持します。ここでレジスタ +'a'の中身をバッファにペーストすることができます。'redir'を使ってexコマンドの出 +力をファイルに送ったり、追加することもできます。 + +":global"の前に":silent"を付けると、その行が画面に表示されるのを避けることがで +きます。 + +exコマンドの出力をファイルにリダイレクトするには、次の一連のコマンドを使うこと +ができます: > + + :redir > myfile + :g/HelloWord/p + :redir END +< +さらなる情報については以下を参照してください。 > + + :help :redir + :help :silent +< + *faq-16.5* +16.5. コマンドモードでファイル名を補完しようとタブキーを押します。マッチするフ + ァイル名が複数ある時、Vimは最初にマッチするファイル名を補完し、マッチし + たファイル名全てのリストを表示します。マッチしたファイル名全てを表示する + だけで、最初の候補を補完しないようにするには? + +'wildmode'を設定すればコマンドモードでのファイル名補完をカスタマイズすること +ができます。この場合は'wildmode'を'list'にすればよいでしょう: > + + :set wildmode=list +< +さらなる情報については以下を参照してください。 > + + :help 'wildmode' +< + *faq-16.6* +16.6. バッファからコマンドラインにテキストをコピーしたり、コマンドラインからバ + ッファにテキストをコピーするには? + +バッファからコマンドラインにテキストをコピーするには、バッファからテキストをヤ +ンクした後にコマンドラインでCtrl-R 0を押せばペーストすることができます。また、 +CTRL-R <register>を使って特定のレジスタにヤンクしてからコマンドラインにペース +トすることもできます。CTRL-R CTRL-Wを使うとカーソル下の単語をコマンドラインに +ペーストすることができます。 + +コマンドラインからバッファにテキストをコピーするには、":pとしてレジスタ:の中身 +をペーストすればできます。最後に実行されたコマンドラインがレジスタ:に保存され +ています。 + +コマンドラインへテキストをコピー&ペーストする別の方法は、ノーマルモードでq:を +押すかまたはコマンドラインモードでCTRL-Fを押してコマンドラインウィンドウを開く +ことです。このコマンドラインウィンドウではVimの全てのコマンドを使ってコマンド +ラインを編集することができます。 + +さらなる情報については以下を参照してください。 > + + :help c_CTRL-R + :help quote_: + :help cmdline-window +< + *faq-16.7* +16.7. あるコマンドを実行することなくコマンド履歴に入れるには? + +あるコマンドを実行することなくコマンド履歴に入れるには、<Esc>キーを押してその +コマンドをキャンセルします。 + +さらなる情報については以下を参照してください。 > + + :help c_<Esc> +< + *faq-16.8* +16.8. コマンドラインの高さを上げるには? + +'cmdheight'を変更すればコマンドラインの高さを上げることができます: > + + :set cmdheight=2 +< +さらなる情報については以下を参照してください。 > + + :help 'cmdheight' + :help hit-enter + :help 05.7 +< + +============================================================================= + *faq-17* +SECTION 17 - VIMINFO + *faq-17.1* + +17.1. Vimを起動したときviminfoファイルに不正な文字があるとエラーメッセージが出 + ます。このメッセージを出なくさせるには? + +$HOME/.viminfoまたは$HOME/_viminfoファイルを削除すればこのメッセージは出なくな +ります。 + +さらなる情報については以下を参照してください。 > + + :help viminfo-errors + :help viminfo-file-name + :help viminfo + :help 21.3 +< + *faq-17.2* +17.2. viminfo機能を無効にするには? + +デフォルトではviminfo機能は無効になっています。もしシステムレベルのvimrcによっ +てviminfo機能が有効化されているなら、ユーザーのローカルな.vimrcで'viminfo'に空 +文字列を設定すれば、viminfo機能が無効になります: > + + :set viminfo="" +< +さらなる情報については以下を参照してください。 > + + :help 'viminfo' +< + *faq-17.3* +17.3. Vimのセッションをまたいでマークを保存し、使用するには? + +viminfoを使えばVimのセッションをまたいでマークを保存し、復元することができま +す。viminfoファイルを使うには'viminfo'オプションが空でないことを確かめてくださ +い。Vimのマークを保存し、復元するには、'viminfo'オプションに'f'フラグが入って +いないか、'f'に対する値が0より大きくなっていなければなりません。 + +さらなる情報については以下を参照してください。 > + + :help 21.3 + :help viminfo + :help 'viminfo' + :help :wviminfo + :help :rviminfo +< + +============================================================================= + *faq-18* +SECTION 18 - リモート編集 + + *faq-18.1* +18.1. 既に起動しているgvimでファイルを開くには? Vim 5.xのOpenWithVim.exeと + SendToVim.exeはどうなりました? + +Vim6からOpenWithVim.exeとSendToVim.exeユーティリティのOLE版はクライアント-サー +バ機能によってとって替わられました。ファイルj.txtを既に起動しているgvim(MyVim) +で開くにはこのようにします: > + + $ gvim --servername MyVim --remote-silent j.txt +< +現在起動しているVim全てのサーバ名をリストするにはこうします: > + + $ vim --serverlist +< +クライアント-サーバ機能についてのさらなる情報は以下を参照してください。 > + + :help client-server +< + *faq-18.2* +18.2. vimサーバに全てのバッファをディスクに保存するようなコマンドを送るには? + +それにはVimのリモートサーバ機能を使うことができます: > + + $ gvim --servername myVIM --remote-send "<C-\><C-N>:wall<CR>" +< +さらなる情報については以下を参照してください。 > + + :help client-server + :help CTRL-\_CTRL-N + :help :wall +< + *faq-18.3* +18.3. Vimのリモートサーバ機能についてのドキュメントはどこで手に入りますか? + +Vimのリモートサーバ機能についての情報はこれを読めば得られます > + + :help client-server +< + +============================================================================= + *faq-19* +SECTION 19 - オプション + + *faq-19.1* +19.1. Vimを設定する簡単な方法は? + +":options"でオプションウィンドウを開くことができます: > + + :options +< +このウィンドウで全オプションを見て、設定することができます。 + +さらなる情報については以下を参照してください。 > + + :help :options +< + *faq-19.2* +19.2. オプションの値をトグルするには? + +オプションの前に"inv"をつけると、その値をトグルすることができます: > + + :set invignorecase + :set invhlsearch +< +オプションの後ろに"!"をつけてもその値をトグルすることができます: > + + :set ignorecase! + :set hlsearch! +< +さらなる情報については以下を参照してください。 > + + :help set-option +< + *faq-19.3* +19.3. 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプションを設定 + するには? + +":setlocal"を使うと現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオ +プションを設定できます: > + + :setlocal textwidth=70 +< +全てのオプションがローカルな値を持つわけではないことに注意してください。そのオ +プションがローカルな値を持てる場合だけ、":setlocal"でバッファ/ウィンドウにロ +ーカルに設定できます。 + +また、次のコマンドでもオプションをローカルに設定できます: > + + :let &l:{option-name} = <value> +< + *faq-19.4* +19.4. オプションの値にスペースを含めるには? + +オプション値にスペースを含めるには、スペースをエスケープしなければなりません。 +例: > + + :set tags=tags\ /usr/tags +< +さらなる情報については以下を参照してください。 > + + :help option-backslash +< + *faq-19.5* +19.5. オプション設定をファイルに埋め込むには? + +モードラインを使えばオプション設定をファイル中に埋め込むことができます。例え +ば、Cのファイルでファイルの先頭または末尾に次の行を埋め込むことができます: > + + /* vim:sw=4: */ +< +こうするとそのCファイルを編集するとき'shiftwidth'が4に設定されます。これが機能 +するためには、'modeline'オプションをセットしなければなりません。デフォルトで +'modeline'は設定されています。'modelines'はチェックされる行数を指定します。 + +さらなる情報については以下を参照してください。 > + + :help 21.6 + :help modeline + :help auto-setting + :help 'modeline' + :help 'modelines' +< + *faq-19.6* +19.6. ファイル中の全ての行の行番号を表示するには? + +'number'オプションをセットすれば、全行に対して行番号が表示されます。 > + + :set number +< +さらなる情報については以下を参照してください。 > + + :help 'number' +< + *faq-19.7* +19.7. 'number'オプションで表示される行番号の幅を変えるには? + +'number'オプションで表示される行番号の幅はVimのソース中にハードコードされてい +ます。なにかオプションを設定することによってこの幅を変更することは不可能です。 + +行番号の幅を変えるオプションの要望とパッチはVimのTODOリスト中にあります: > + + "Add an option to set the width of the 'number' column. Eight + positions is often more than needed. Or adjust the width to the length + of the file? + Add patch that adds 'numberlen' option. (James Harvey) + Other patch with min and max from Emmanuel Renieris (2002 Jul 24) + Other patch without an option by Gilles Roy (2002 Jul 25)" +< +訳註: Vim7でオプション'numberwidth'が導入された。 + + *faq-19.8* +19.8. スペース、タブ、改行などの不可視文字を表示するには? + +'list'オプションをセットすれば、ファイル中の不可視文字を表示することができま +す。 > + + :set list +< +このオプションをセットすると、スペース、タブ、改行、行末のスペース、折り返され +た行を表示することができます。 + +不可視文字を表示しなくするには(これがデフォルトです)、'list'をオフにします: > + + :set nolist + (or) + :set list! +< +":set list!"とすると現在の'list'の設定をトグルします。 + +'listchars'オプションを変更すれば表示される不可視文字とその表示のされかたを設 +定することができます。例えば、次のコマンドは行末のスペースを'.'で表示するよう +にします。 > + + :set listchars=trail:. +< +さらなる情報については以下を参照してください。 > + + :help 'listchars' + :help 'list' +< + *faq-19.9* +19.9. 常に現在行と桁番号を表示するようにするには? + +'ruler'をセットすれば現在の行と桁番号をステータスラインに表示するようになりま +す: > + + :set ruler +< +さらなる情報については以下を参照してください。 > + + :help 'ruler' +< + *faq-19.10* +19.10. 現在のモードを表示するようにするには? + +'showmode'オプションをセットすれば現在のVimのモードを表示するようになります。 +インサート、上書き、ビジュアルモードにおいて、最後の行に現在のモードを表示する +ようになります。 > + + :set showmode +< +さらなる情報については以下を参照してください。 > + + :help 'showmode' +< + *faq-19.11* +19.11. ステータスラインに入力途中のコマンドを表示するようにするには? + +'showcmd'をセットすればステータスラインに入力途中のコマンドを表示するようにな +ります: > + + :set showcmd +< +さらなる情報については以下を参照してください。 > + + :help 'showcmd' +< + *faq-19.12* +19.12. ステータスラインに異なる設定・値を表示するようにするには? + +'statusline'をセットすれば異なる設定・値をステータスラインに表示するようになり +ます。 + +さらなる情報については以下を参照してください。 > + + :help 'statusline' + :help 'laststatus' + :help 'rulerformat' + :help 'ruler' +< + *faq-19.13* +19.13. 常にステータスラインを表示するようにするには? + +'laststatus'を2にすれば常にステータスラインを表示するようになります。 > + + :set laststatus=2 +< +さらなる情報については以下を参照してください。 > + + :help 'laststatus' +< + *faq-19.14* +19.14. Vimを再起動しても設定が永続するようにするには? + +Vimを再起動しても設定が永続するようにするには、その設定を.vimrcまたは.gvimrcフ +ァイルに追加します。":mkvimrc"コマンドを使うと現在の設定をもとにvimrcファイル +を生成することもできます。 + +さらなる情報については以下を参照してください。 > + + :help save-settings + :help vimrc + :help gvimrc + :help vimrc-intro + :help :mkvimrc + :help initialization +< + *faq-19.15* +19.15. なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュする)の + ですか? + +これは通常の動作です。画面がフラッシュするのなら、ビジュアルベルが発生していま +す。そうでなければビープが鳴ります。 + +Vimは普通のエスケープとカーソルキーのシーケンスなどを区別するために、タイムア +ウトを必要とします。ノーマルモードでキーを押すと(インサートモードでさえも)、 +そしてそのキーがマッピングの始まりであると、Vimはマッピングの残りのシーケンス +が後に続くがどうかを見るために一定時間待ちます。もしタイムアウトする前にマッピ +ングシーケンスが最後まで入力されればそのキーシーケンスのマッピングが発動しま +す。もしマッピングを中断すれば、そのキーに割り当てられた普通の動作を実行しま +す。 + +例えば、":imap vvv Vim is great!!"と定義されたマッピングがあるとし、"vvv"をす +ばやく入力するとします。すると"Vim is great!!"がテキストに挿入されます。 +しかし"vv v"と入力すると、それがテキストに挿入されます。これは"vvv"をとても遅 +く入力したときも同じになります。ここで"とても遅く"とはタイムアウトオプションで +設定された値よりも長いという意味です。タイムアウトオプションを大きな値に設定す +ると、遅い回線上でファンクションキーを使うときに現れる問題を解決することができ +ます。 + +さらなる情報については以下を参照してください。 > + + :help ttimeout +< + *faq-19.16* +19.16. 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示するように + するには? + +'c'と's'で変更する文字を削除するのでなく'$'を表示するようにするには、 +'cpoptions'にフラグ$を追加します: > + + :set cpoptions+=$ +< +さらなる情報については以下を参照してください。 > + + :help 'cpoptions' +< + *faq-19.17* +19.17. 1回の":set"コマンドでオプションから複数のフラグを除去するには? + +1回の":set"コマンドでオプションから複数のフラグを除去するには、それらのフラグ +がオプション中に現れるのと正確に同じ順序でフラグを指定します。例えば、次のコマ +ンドで'formatoptions'からフラグ't'と'n'を除去しようとしたとします: > + + :set formatoptions-=tn +< +すると、'formatoptions'がこれらのフラグをこの'tn'という順序で保持していた場合 +のみ、フラグ't'と'n'が除去されます。そうでなければフラグは除去されません。 +この問題を避けるには、フラグを1つ1つ除去します: > + + :set formatoptions-=t formatoptions-=n +< +さらなる情報については以下を参照してください。 > + + :help :set-= +< + +============================================================================= + *faq-20* +SECTION 20 - キーマップ + + *faq-20.1* +20.1. キーがどうマップされているかを知るには? + +キーがどうマップされているかを知るには、次のコマンドを使うことができます: > + + :map <key> + :map! <key> +< +また、特定のモードでのマッピングを確認するには":cmap", ":nmap", ":vmap", +":imap", ":omap"などのコマンドを使うことができます。 + +さらなる情報については以下を参照してください。 > + + :help map-listing + :help map-overview +< + *faq-20.2* +20.2. ユーザ定義のキーマッピングをリストするには? + +ユーザ定義のキーマッピングをリストするにはこうします: > + + :map +< +さらなる情報については以下を参照してください。 > + + :help map-listing +< + *faq-20.3* +20.3. キーマップを解除するには? + +キーマップを解除するには":unmap"を使います: > + + :unmap <key> + :unmap! <key> +< +モード指定のマッピングには、":nunmap/:vunmap/:ounmap/:iunmap/:lunmap/:cunmap" +のどれかを使います。 + +次のコマンドではバッファローカルなマップを解除できません: > + + :unmap <key> +< +バッファローカルなキーマップを解除するには、キーワード<buffer>を使わなければ +なりません: > + + :unmap <buffer> <key> + :unmap! <buffer> <key> +< +さらなる情報については以下を参照してください。 > + + :help :unmap + :help map-modes + :help map-local + :help 'mapleader' +< + *faq-20.4* +20.4. キー<xxx>へマッピングができません。なにがまずいのですか? + +最初にそのキーがVimが渡っているかどうか確認してください。インサートモードで +CTRL-Vに続けてそのキーを押してください。そのキーに対応するキーコードが表示され +るでしょう。ここでそのキーコードが表示されたら、以下のコマンドでそのキーに対す +るマッピングを作成することができます: > + + :map <C-V><xxx> <your_command_to_be_mapped> +< +さらなる情報については以下を参照してください。 > + + :help map-keys-fails + :help :map-special-keys + :help key-codes +< + *faq-20.5* +20.5. テンキーにマップするには? + +最初にテンキーのキーがVimに渡っているかどうかを確認してください。そして次の +コマンドでテンキーのキーに対してマップすることができます: > + + :map <kSomething> <your_command> +< +ここで<kSomething>にはkHome, kEnd, kPageUp, kPageDown, kPlus, kMinus, +kDivide, kMultiply, kEnterなどが使えます。 + +さらなる情報については以下を参照してください。 > + + :help key-codes + :help terminal-options +< + *faq-20.6* +20.6. ビジュアルモードでのみ機能するマッピングを作成するには? + +特定のモード(ノーマル、コマンド、インサート、ビジュアル等)でのみ機能するマッピ +ングを作成することができます。ビジュアルモードでのみ機能するマッピングを作るに +は、":vmap"を使います: > + + :vmap <F3> <your mapping here> +< +さらなる情報については以下を参照してください。 > + + :help :vmap + :help map-modes + :help 40.1 +< + *faq-20.7* +20.7. Vimスクリプト中で、すでに使われているキーと衝突しないようにどのキーを + 使うべきかを知るには? + +Vimはキーボードのほとんどのキーを使います。mapに<leader>プリフィックスを使うと +Vimのキーと重ならないようにキーを定義することができます。例: > + + :map <leader>S <C-W>s + :map <leader>j <C-W>j + :map <leader>k <C-W>k +< +ここでデフォルトの<leader>はバックスラッシュ(\)で置き換えられます。そのためユ +ーザーはこれらのマッピングを発動させるのに > + \s + \j + \k +< +を押すことになります。マップリーダーを好きな物に変えることができます: > + + :let mapleader = "," +< +プラグインなどのスクリプトを書くときは、いつも以上に:mapでなく:noremapを使い、 +ユーザー定義マッピングの副作用を避けることが推奨されます。 + +さらなる情報については以下を参照してください。 > + + :help <Leader> + :help <LocalLeader> + :help write-plugin +< + *faq-20.8* +20.8. エスケープキーにマップするには? + +":map"コマンドでエスケープキーを他のキーにマップすることができます。例えば、次 +のコマンドはエスケープキーをCTRL-Oにマップします。 > + + :map <C-O> <Esc> +< + *faq-20.9* +20.9. あるキーをなにもしないようにマップするには? + +キーを<Nop>にマップすると、そのキーを押したときに何も起こらないようにすること +ができます。例えば、次のマッピングで<F7>が押されたとき何もしないようにすること +ができます。 > + + :map <F7> <Nop> + :map! <F7> <Nop> +< +さらなる情報については以下を参照してください。 > + + :help <Nop> + :help :map + :help :map! + :help map-modes +< + *faq-20.10* +20.10. Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブロッ + クをアンインデンとするようにしたいです。このようなマップを作るには? + この挙動はtextpadやVisual Studioなどに似ています。 + +以下のマッピングを使ってください: > + + :inoremap <S-Tab> <C-O><LT><LT> + :nnoremap <Tab> >> + :nnoremap <S-Tab> <LT><LT> + :vnoremap <Tab> > + :vnoremap <S-Tab> <LT> +< +注意: <S-Tab>のマッピングはVimが正しいキーシーケンスを受け取るときのみ機能しま +す。これはGUIのVimの場合はたいてい当てはまります。 + +さらなる情報については以下を参照してください。 > + + :help :inoremap + :help :nnoremap + :help :vnoremap + :help <S-Tab> + :help i_CTRL-O + :help >> + :help << + :help <LT> +< + *faq-20.11* +20.11. 私のマッピングにおいて<CR>のような特殊文字が認識されません。 + 特殊文字を認識するように設定するには? + +'cpoptions'の値を確認してください: > + + :set cpoptions? +< +このオプションがフラグ'<'を含んでいると、マッピングにおいて特殊文字が認識され +ません。'cpoptions'からフラグ'<'を除去してください: > + + :set cpo-=< +< +また、'compatible'の値も確認してください: > + + :se compatible? +< +'compatible'はオフになっていなければなりません: > + + :se nocompatible +< +さらなる情報については以下を参照してください。 > + + :help 'cpoptions' + :help 'compatible' +< + *faq-20.12* +20.12. マップ中で'|'を使って複数のコマンドを区切るには? + +マップ中で'|'を使うにはバックスラッシュ(\)で'|'をエスケープします。 > + + :map _l :!ls \| more<CR> +< +次のコマンドも試してみてください: > + + :map _l :!ls <bar> more<CR> +< +他の方法もあります。 + +さらなる情報については以下を参照してください。 > + + :help map_bar +< + *faq-20.13* +20.13. その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 + 入力があります。最初のものを入力したとき、2番目のが展開しないようにする + には? + +":map lhs rhs"でなく":noremap lhs rhs"を使ってください。短縮入力については +"noreabbrev lhs rhs"です。プリフィックス"nore"はマッピングや短縮入力が再帰的に +展開されるのを防ぎます。 + +さらなる情報については以下を参照してください。 > + + :help :noremap + :help :noreabbrev +< + *faq-20.14* +20.14. ときどきキーが処理されるのに1秒程度かかるのはなぜですか? + +そのキーに対してマッピングが定義されていないことを次のコマンドで確かめてくださ +い: > + + :map <key> +< +もしこのキーにマッピングが定義されていて、マッピングが1文字以上を含んでいるな +ら、Vimはそれがマッピングの一部かどうかを判定するために、次の文字が押されるの +を待ちます。例えば、"ab"というマッピングをしているとします。そして"a"を押すと +Vimは次のキーが押されるのを待ちます。次のキーが"b"ならvimはこのマッピングを実 +行します。そうでなければvimは"a"とその次のキーを通常どおりに処理します。 +'timeout'がオンになっていると(それがデフォルトです)、Vimは'timeoutlen'で指定さ +れた時間(デフォルトは1秒)だけ待ったのちタイムアウトします。 + +さらなる情報については以下を参照してください。 > + + :help map-typing + :help 'timeoutlen' + :help 'ttimeoutlen' + :help 'timeout' + :help 'ttimeout' + :help vt100-cursor-keys + :help slow-fast-terminal +< + *faq-20.15* +20.15. ビジュアル選択したテキストに対して外部コマンドを実行するマッピングを作 + るには? + +":vmap"コマンドでビジュアルモードでのマッピングを作ることができます。マップの +コマンドシーケンスの中で、最初にそのテキストをヤンクしなければなりません。ヤン +クされたテキストはレジスタ"で取得できます。そしてこのレジスタの中身を使って外 +部コマンドを実行することができます。例えば、外部コマンド"perldoc"を選択された +テキストに対して実行するには、次のマッピングを使います: > + + :vmap <F7> y:!exec "!perldoc '" . @" . "'"<CR> +< +選択されたテキストでなく、ビジュアルモード中でマッピングを実行したいなら次のコ +マンドを使います: > + + :vmap <F7> :<C-U>!perldoc <cword><CR> +< +このマッピングは選択されたテキストでなく、カーソル下の単語を使います。外部コマ +ンド"perldoc"を実行する前に<C-U>としてることに注意してください。この<C-U>はビ +ジュアルモードで選択されたテキストの範囲がコマンドラインに表示されているのを消 +すために使われています。<C-U>を使って選択範囲を消さないと、外部コマンドの出力 +が選択されたテキストを置き換えてしまいます。 + +さらなる情報については以下を参照してください。 > + + :help :vmap + :help quote_quote + :help let-register + :help c_CTRL-U + :help :!cmd +< + *faq-20.16* +20.16. <Tab>キーの機能を保ったままCtrl-Iにマッピングするには? + +Ctrl-Iと<Tab>は同じキーコードを生成します。そのため、VimはCtrl-Iと<Tab>を区別 +することができません。Ctrl-Iにマッピングすると、<Tab>キーにも同様にマッピング +されます(逆も同様です)。これと同じ制限がCtrl-[と<Esc>にも適用されます。 + +さらなる情報については以下を参照してください。 > + + :help keycodes +< + +============================================================================= + *faq-21* +SECTION 21 - 短縮入力 + + *faq-21.1* +21.1. スペリングを間違えた単語を自動的に修正するには? + +短縮入力を使ってスペリングを間違えた単語を自動的に修正することができます。例え +ば、次の短縮入力で"teh"を"the"に修正することができます: > + + :abbreviate teh the +< +インサートモード、上書きモード、コマンドラインモードで短縮入力が利用できます。 + +さらなる情報については以下を参照してください。 > + + :help 24.7 + :help abbreviations + :help Q_ab +< + *faq-21.2* +21.2. 複数行の短縮入力を作るには? + +キーコード"<CR>"を埋め込めば、複数行の短縮入力を作ることができます: > + + iabbrev #c --------------<CR>-- Date:<CR>--<CR>--------- +< +この短縮入力によって、#cとタイプすると次のテキストに展開されます: + +-------------- +-- Date: +-- +--------- + +さらなる情報については以下を参照してください。 > + + :help abbreviations +< + *faq-21.3* +21.3. 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペースが入っ + てしまいます。これを防ぐには? + +短縮入力をCTRL-]を押して展開すれば、展開されたテキストの末尾に余計なスペースが +入るのを防ぐことができます。 + +別の方法としては、次の関数とコマンドを使うことができます: + +function! Eatchar(pat) + let c = nr2char(getchar()) + return (c =~ a:pat) ? '' : c +endfunction +command! -nargs=+ Iabbr execute "iabbr" <q-args> . "<C-R>=Eatchar('\\s')<CR>" + +こうしておいて、組み込みの"iabbrev"の代わりに新しいコマンド"Iabbr"を使って短縮 +入力を定義します。このコマンドを使うと、テキストを展開した後、次に入力された文 +字が捨てられます。 + +さらなる情報については以下を参照してください。 > + + :help abbreviations +< + *faq-21.4* +21.4. 現在の日付・時刻を挿入するには? + +strftime()を使えば現在の日付・時刻のタイムスタンプを挿入することができます。例 +えば、次の短縮入力を使います: > + + iabbrev dts <C-R>=strftime("%y/%m/%d %H:%M")<CR> +< +この短縮入力を使うと、インサートモードでdtsと入力するとそれがタイムスタンプに +展開されます。 + +この短縮入力の別の形を以下に列挙します: > + + iabbrev mdyl <C-R>=strftime("%a %d %b %Y")<CR> + iabbrev mdys <C-R>=strftime("%y%m%d")<CR> + iabbrev mdyc <C-R>=strftime("%c")<CR> + iabbrev hml <C-R>=strftime("%d/%m/%y %H:%M:%S")<CR> + iabbrev hms <C-R>=strftime("%H:%M:%S")<CR> +< +さらなる情報については以下を参照してください。 > + + :help strftime() + :help i_CTRL-R +< + *faq-21.5* +21.5. インサートモードで短縮入力が展開されるのを防ぐには? + +短縮された単語の後にCTRL-Vを押してから次の文字を入力すれば、それが展開されるの +を防ぐことができます。 + +さらなる情報については以下を参照してください。 > + + :help abbreviations +< + +============================================================================= + *faq-22* +SECTION 22 - レコーディングと繰り返し + + *faq-22.1* +22.1. 編集操作(挿入、削除、ペースト等)を繰り返すには? + +'.'を使えば最後の編集操作を繰り返すことができます。これは挿入、削除、変更、ペ +ーストなどの単純な変更を繰り返します。 + +さらなる情報については以下を参照してください。 > + + :help 04.3 + :help single-repeat + :help Q_re +< + + *faq-22.2* +22.2. キーシーケンスを記録し、繰り返すには? + +ノーマルモードで'q'を使うとキーシーケンスを記録し、それをレジスタに保存するこ +とができます。例えば、ノーマルモードでqを押し、続けてレジスタ名{0-9a-bA-Z"}を +押すとレコーディングが始まります。レコーディングを終了するには、もう一度qを押 +します。記録されたキーシーケンスを再生するには、@に続けてレジスタ名を押しま +す。例. @a。 + +別の方法としてはコマンドライン引数"-w"をつけてVimを起動します。 > + + $ vim -w <file_name> +< +するとVimはこのセッション中にタイプされた文字全てを指定されたファイル +"file_name"に記録します。コマンドライン引数"-s"でそのファイルを指定すると、そ +れを再生することができます: > + + $ vim -s <file_name> +< +さらなる情報については以下を参照してください。 > + + :help 10.1 + :help recording + :help -w + :help -s +< + *faq-22.3* +22.3. 記録したキーシーケンスを編集するには? + +記録したキーシーケンスはレジスタに保存されます。そのレジスタの中身をバッファに +ペーストし、そのテキストを編集して最後レジスタにヤンクすることができます。 +また、":let"でもレジスタを修正することができます。例: > + + :let @a = "iHello World\<Esc>" +< +さらなる情報については以下を参照してください。 > + + :help recording + :help 10.1 + :help let-register + :help <> + :help 'cpoptions' +< + *faq-22.4* +22.4. 記録したキーシーケンスをファイルに保存するには? + +記録されたキーシーケンスはレジスタに保存されます。そのレジスタの中身をバッファ +にペーストすることができます。そしてそのバッファをファイルに保存します。ペース +トしたテキストを修正して再度レジスタにヤンクして記録したキーシーケンスを修正す +ることもできます。例えば、qa ..... qとしてキーシーケンスを記録したとします。 +記録したキーシーケンスはレジスタ'a'に保存されます。"apとするとレジスタ'a'の中 +身をペーストすることができます。 + +さらなる情報については以下を参照してください。 > + + :help recording + :help 10.1 +< + *faq-22.5* +22.5. レジスタ0にキーシーケンスを保存しています(つまり q0 .... q)。 + 記録したキーシーケンスの中でテキストをヤンクしています。一度そのキーシー + ケンスを再生すると、もうそれを再現することができません。 + +レジスタ0は最後のヤンクしたテキストを保持します。記録したキーシーケンス中でヤ +ンクが行われたとき、レジスタ0はそのテキストで上書きされます。そのためレジスタ +0に記録したキーシーケンスは失われます。何か他のレジスタを使わねばなりません。 + +さらなる情報については以下を参照してください。 > + + :help registers +< + +============================================================================= + *faq-23* +SECTION 23 - 自動コマンド + + *faq-23.1* +23.1. 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? + +自動コマンドFileChangedROを使えば、読み込み専用ファイルが修正されたときにコマ +ンドを実行できます。例えば、このイベントを使って読み込み専用ファイルをチェック +アウトすることができます: > + + :autocmd FileChangedRO * call MyCheckoutFunction() +< +さらなる情報については以下を参照してください。 > + + :help FileChangedRO +< + *faq-23.2* +23.2. あるバッファに入るときに毎回コマンドを実行するには? + +自動コマンドイベントBufEnterを使うと、あるバッファに入る度にコマンドを実行する +ことができます。例: > + + :autocmd BufEnter *.c set formatoptions=croqt +< +さらなる情報については以下を参照してください。 > + + :help BufEnter +< + + *faq-23.3* +23.3. あるウィンドウに入るときに毎回コマンドを実行するには? + +自動コマンドイベントWinEnterを使えば、あるウィンドウに入るときに度にコマンドを +実行することができます。例: > + + :autocmd WinEnter *.c call MyFunction() +< +さらなる情報については以下を参照してください。 > + + :help WinEnter +< + *faq-23.4* +23.4. autocmd中でその自動コマンドが実行されているファイルの名前やバッファ番号 + を知るには? + +特殊な単語<afile>または<abuf>を使えばautocmd中でその自動コマンドが実行されてい +るファイル名やバッファ番号を取得することができます。 + +さらなる情報については以下を参照してください。 > + + :help :<afile> + :help :<abuf> + :help :<amatch> +< + *faq-23.5* +23.5. Vimがフォーカスを失ったとき、変更されたバッファ全てを自動的に保存する + には? + +FocusLostイベントに対して自動コマンドを定義すれば、Vimがフォーカスを失う度に変 +更されたバッファ全てを保存することができます: > + + :autocmd FocusLost * wall +< +さらなる情報については以下を参照してください。 > + + :help FocusLost + :help :wall +< + *faq-23.6* +23.6. Vimを終了するときにクリーンアップ用の関数を実行するには? + +VimLeaveイベントを使えば、Vimが終了する直前に関数を実行することができます。 +例 > + + :autocmd VimLeave * call MyCleanupFunction() +< +さらなる情報については以下を参照してください。 > + + :help VimLeave +< + +============================================================================= + *faq-24* +SECTION 24 - 構文強調 + + *faq-24.1* +24.1. 構文強調をオン・オフにするには? + +デフォルトでは構文強調はオフにされています。構文強調をオンにするには次のコマン +ドのどれかを使います: > + + :syntax enable +< +または > + + :syntax on +< +構文強調を無効にするには、次のコマンドを使います: > + + :syntax off +< +さらなる情報については以下を参照してください。 > + + :help 06.1 + :help 06.4 + :help :syntax-enable + :help :syntax-on + :help :syn-clear +< + *faq-24.2* +24.2. 背景色と文字色を変えるには? + +背景色と文字色には強調グループ"Normal"が使われます。文字色・背景色を変える +には、強調グループ"Normal"を変更しなければなりません。例えば、背景色を青に、 +文字色を白にするには、次のようにします: > + + :highlight Normal ctermbg=blue ctermfg=white guibg=blue guifg=white +< +もしMotifまたはAthena版のGVimを使っているなら、.Xdefaultsファイル中の文字色と +背景色のリソース名を変更してもよいでしょう: > + + Vim.foreground: Black + Vim.backround: Wheat +< +また、コマンドライン引数"-foregroung"と"-background"を指定して文字色と背景色 +を指定することもできます。これらの引数はMotifとAthena版でだけサポートされてい +ます: > + + $ gvim -foreground Black -background Wheat +< +さらなる情報については以下を参照してください。 > + + :help :highlight + :help .Xdefaults + :help -gui +< + *faq-24.3* +24.3. 暗い/明るい背景色に合うように色を変えるには? + +'background'を'dark'か'light'に変えれば、それぞれ暗い/明るい背景に合うように +強調色を変えることができます: > + + :set background=dark +< +さらなる情報については以下を参照してください。 > + + :help 'background' + :help 6.2 +< + *faq-24.4* +24.4. ":set number"をしたときに表示される行番号の色を変えるには? + +行番号の表示には強調グループLineNrが使われます。現在設定されている色を表示する +にはこうします > + + :hi LineNr +< +この色を変えるには、強調グループLineNrを変更します。例: > + + :hi linenr guifg=red guibg=black +< +こうするとGVimでは黒い背景の上に赤い数字で表示されるようになります。 + +さらなる情報については以下を参照してください。 > + + :help :highlight +< + *faq-24.5* +24.5. ビジュアルモードで選択された範囲の背景色を変えるには? + +強調グループ'Visual'を変更すれば、ビジュアルモードで選択された範囲の色を変える +ことができます: > + + :highlight Visual guibg=red +< +さらなる情報については以下を参照してください。 > + + :help :highlight + :help hl-Visual +< + *faq-24.6* +24.6. オプション'list'で表示した特殊文字(タブ、行末の空白、行末など)に色をつけ + るには? + +強調グループ"NonText"と"SpecialKey"を変えれば'list'によって表示された特殊文字 +に色をつけることができます: > + + :highlight NonText guibg=red + :highlight SpecialKey guibg=green +< +オプション'listchars'中の"eol", "extend", "precedes"に対しては"NonText"が使わ +れます。"tab"と"trail"には"SpecialKey"が使われます。 + +さらなる情報については以下を参照してください。 > + + :help 'listchars' + :help hl-NonText + :help hl-SpecialKey +< + *faq-24.7* +24.7. 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? + +.vimrcや.gvimrc中で":colorscheme"を使えばカラースキームを指定することができま +す: > + + colorschme evening +< +さらなる情報については以下を参照してください。 > + + :help :colorscheme +< + *faq-24.8* +24.8. 正しく構文強調されません。ファイルの一部が強調されなかったり、間違って強 + 調されてしまいます。 + +Vimは構文強調する際にファイル全体をパースすることはしません。表示してされてい +る場所からパースが始まります。これによって多大な時間が節約できますが、ときどき +間違って色づけされることもあります。これを修正する単純な方法は、CTRL-Lを押して +画面を再描画することです。または少し上にスクロールしてから下に戻ってきます。 +このコマンドを使うこともできます: > + + :syntax sync fromstart +< +注意: これを実行すとスクリーンの描画が相当遅くなります。 + +さらなる情報については以下を参照してください。 > + + :help :syn-sync + :help :syn-sync-first +< + *faq-24.9* +24.9. 対応する括弧を強調する組み込みの関数はありますか? + +ありません。Vimには対応する括弧を強調する機能はありません。Charles Campbellが +作ったプラグインを試してみてもよいでしょう: > + + http://vim.sourceforge.net/tips/tip.php?tip_id=177 +< +対応する括弧には'%'キーを使えばジャンプできます。インサートモードで一時的に対 +応する括弧にジャンプするには'showmatch'をセットします。 + +訳註: Vim7からはmatchparen.vimが付属し、カーソルが括弧の上に乗ると、自動的に +訳註: 対応する括弧が強調されるようになった。 +訳註: :h matchparen + +さらなる情報については以下を参照してください。 > + + :help % + :help 'showmatch' + :help 'matchtime' + :help 'matchpairs' +< + *faq-24.10* +24.10. Cのコメントの構文強調をオフにするには? + +次のコマンドを使うとCのコメントの構文強調をオフにすることができます: > + + :highlight clear comment +< +さらなる情報については以下を参照してください。 > + + :help c-syntax +< + *faq-24.11* +24.11. Vimに付属する標準の構文ファイルに私自身の構文拡張を加えるには? + +あなたの拡張を追加する場合、Vimに付属の構文ファイルそのものを修正するべきでは +ありません。次のVimのバージョンをインストールしたとき、その変更が失われてしま +います。代わりに、~/.vim/after/syntaxディレクトリに元の構文ファイルと同名のフ +ァイルを作り、そこにあなたの拡張を加えるべきです。 + +さらなる情報については以下を参照してください。 > + + :help mysyntaxfile-add + :help 'runtimepath' +< + *faq-24.12* +24.12. Vimに付属の標準の構文ファイルを独自の構文ファイルで置き換えるには? + +元の構文ファイルと同名のファイルを作成し、ランタイムの構文ディレクトリに置けば +標準の構文ファイルに置き換えることができます。例えば、Unixシステムにおいて構文 +ファイルc.vimを置き換えるには、新しいc.vimを~/.vim/syntaxに置きます。 +MS-Windowsシステムにおいては新しい構文ファイルを$HOME/vimfiles/syntaxまたは +$VIM/vimfiles/syntaxディレクトリに置きます。 + +さらなる情報については以下を参照してください。 > + + :help mysyntaxfile-replace + :help 44.11 + :help mysyntaxfile +< + *faq-24.13* +24.13. 特定の桁以降の全ての文字を強調するには? + +":match"を使えば特定の桁以降の全ての文字を強調することができます: > + + :match Todo '\%>75v.\+' +< +これは75桁目以降の全ての文字を強調します。 + +さらなる情報については以下を参照してください。 > + + :help :match + :help /\%v + :help /\+ + :help /. +< + *faq-24.14* +24.14. ソースファイル(.c, .hなど)を構文強調つきでHTMLファイルに変換するには? + +2html.vimを使えばソースファイルを構文強調つきでHTMLファイルに変換することがで +きます。次のコマンドを実行してください: > + + :runtime! syntax/2html.vim +< +さらなる情報については以下を参照してください。 > + + :help convert-to-HTML +< + *faq-24.15* +24.15. 現在の強調グループ定義を全て表示するには? + +現在の強調グループ定義を全て表示するには":highlight"を(引数無しで)実行します。 + +さらなる情報については以下を参照してください。 > + + :help :highlight +< + +============================================================================= + *faq-25* +SECTION 25 - VIMスクリプトを書く + + *faq-25.1* +25.1. 読み込まれているスクリプトを全て表示するには? + +":scriptnames"を使えば読み込まれているスクリプトを全て表示することができ +ます: > + + :scriptnames +< +さらなる情報については以下を参照してください。 > + + :help :scriptnames +< + *faq-25.2* +25.2. Vimスクリプトをデバッグするには? + +VimはVimプラグインやスクリプトをデバッグするための原始的なデバッガを備えていま +す。このデバッガを使うとブレークポイントを設定したり、プラグインの関数をステッ +プ実行できます。 + +さらなる情報については以下を参照してください。 > + + :help debug-scripts + :help -D +< + *faq-25.3* +25.3. あるオプションを設定したスクリプト/プラグインを探すには? + +":verbose"を使えば最後にあるオプションを設定したプラグイン/スクリプトを探すこ +とができます。例: > + + :verbose set textwidth? +< +さらなる情報については以下を参照してください。 > + + :help :set-verbose + :help :verbose +< + *faq-25.4* +25.4. (おそらくスクリプトを実行中に)エラーやメッセージが出るのですが、すぐに消 + えてしまいます。このメッセージをもう一度表示するには? + +":messages"を使えば以前のメッセージを表示することができます。 > + + :messages +< +さらなる情報については以下を参照してください。 > + + :help :messages + :help :echoerr + :help :echomsg + :help message-history +< + *faq-25.5* +25.5. プラグイン固有の情報を保存し、Vimを再起動したときそれを復元するには? + +Vimは大文字で始まり、小文字を含まないグローバル変数を保存し、復元します。この +機能を有効化するには、'viminfo'がフラグ'!'を含んでいなければなりません。Vimは +これらの変数をviminfoファイルに保存します。 + +さらなる情報については以下を参照してください。 > + + :help 'viminfo' + :help viminfo-file + :help variables +< + *faq-25.6* +25.6. 関数の中からインサートモードを開始するには? + +":startinsert"を使えば関数の中からインサートモードを開始することができます。 + +さらなる情報については以下を参照してください。 > + + :help :startinsert +< + *faq-25.7* +25.7. 関数の中でカーソル位置を動かすには? + +関数cursor()を使えばカーソルを動かすことができます。 > + + call cursor(lnum, col) +< +次のコマンドを使ってもカーソル位置を変えることができます: > + + exe "normal! " . lnum . "G" . col . "|" +< +さらなる情報については以下を参照してください。 > + + :help cursor() + :help bar +< + *faq-25.8* +25.8. .vimrcファイルの中で環境変数の値をチェックするには? + +Vimスクリプト/関数の中で環境変数を使うには、環境変数名の前に'$'をつけます: > + + if $EDITOR == 'vi' + endif +< +さらなる情報については以下を参照してください。 > + + :help expr-env +< + *faq-25.9* +25.9. 環境変数が定義されているかどうかをチェックするには? + +exists()を使えば環境変数の存在をチェックすることができます。 > + + if exists("$MY_ENV_VAR") + endif +< +さらなる情報については以下を参照してください。 > + + :help exists() + :help expr-env +< + *faq-25.10* +25.10. Vimの組み込み関数を呼ぶには? + +":call"コマンドを使えばVimの組み込み関数を呼び出すことができます: > + + :call cursor(10,20) +< +":echo"を使えば関数の戻り値を表示することができます: > + + :echo char2nr('a') +< +":let"を使えば関数の戻り値を変数に代入することができます: > + + :let a = getline('.') +< +関数の戻り値をレジスタに保存するには、次のようにします: > + + :let @a = system('ls') +< +上のコマンドは'ls'コマンドの戻り値をレジスタ'a'に保存します。 + +訳註: 上のコマンドは外部プログラム'ls'の標準出力への出力をレジスタに保存する。 + +さらなる情報については以下を参照してください。 > + + :help :call + :help :echo + :help :let + :help :let-register + :help user-functions + :help usr_41.txt +< + *faq-25.11* +25.11. Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対して + ユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマンドがVim + の標準の機能を果たすようにするには? + +スクリプト中でノーマルモードコマンドを使うときは"normal!"を使えばよいでし +ょう。これはノーマルモードコマンドの標準の機能を使い、ユーザ定義マッピングは作 +用しません。 + +さらなる情報については以下を参照してください。 > + + :help :normal +< + *faq-25.12* +25.12. ビジュアルモードで現在選択されているテキストを変数やレジスタに入れるに + は? + +ビジュアルモードで選択されているテキストを変数に取得するには、そのテキストをレ +ジスタにヤンクし、その後そのレジスタの中身を変数に代入します: > + + :normal! gvy + :let myvar = @" +< +上のコマンドはビジュアルモードで選択されたテキストを変数"myvar"にコピーします。 + +次のコマンドを使うこともできます: > + + :normal! gv"*y +< +上のコマンドは、gvで最後にビジュアルモードで選択されたテキストを選択し、コマン +ドの残りの部分で選択されたテキストをレジスタ*(クリップボード)にコピーします。 +別の方法としては、'guioptions'にフラグ'a'をセットして、選択されたテキストを自 +動的にレジスタ*に入れるようにしてもよいでしょう。 +これをマップの一部分として実行するには、以下のようなコマンドを使います: > + + :vmap <F3> "*y:call ... +< +さらなる情報については以下を参照してください。 > + + :help gv + :help :normal + :help let-@ + :help quotestar + :help clipboard + :help registers +< + *faq-25.13* +25.13. 変数'myvar'にテキストが入っています。この変数を":s"中で使って'mytext' + というテキストを置換したいのですが、どうすればいいですか? + +"execute"コマンドを使えば変数を評価することができます: > + + :execute '%s/mytext/' . myvar . '/' +< +さらなる情報については以下を参照してください。 > + + :help :execute +< +置換コマンド中で変数を評価するには"\="を使うこともできます: > + + :%s/mytext/\=myvar/ +< +さらなる情報については以下を参照してください。 > + + :help sub-replace-special +< + *faq-25.14* +25.14. 変数"bno"がバッファ番号を保持しています。この変数を使って対応するバッフ + ァを開くには? + +":buffer"は変数名を受け付けません。このコマンドはバッファ番号かバッファ名のみ +を受け付けます。変数を評価して対応する値にするために":execute"を使わねばなりま +せん。例: > + + :execute "buffer " . bno +< +さらなる情報については以下を参照してください。 > + + :help :execute +< + *faq-25.15* +25.15. オプションの値を変数に保存するには? + +オプション名の前に'&'をつけると、"let"でそのオプションの値を変数に代入すること +ができます。例えば、オプション'textwidth'の値を変数"old_tw"に保存するには次の +コマンドを使います: > + + :let old_tw = &tw +< +その逆、つまり'textwidth'に"old_tw"に保存された値をセットするには次のコマンド +を使います: > + + :let &tw = old_tw +< +さらなる情報については以下を参照してください。 > + + :help expr-option + :help let-option +< + *faq-25.16* +25.16. 関数の中でテキストをコピーし、バッファに挿入しました。関数の中でそのテ + キストをインデントするには? + +次のコマンドを使えば、たった今挿入したテキストを整形することができます: > + + :normal '[='] +< +さらなる情報については以下を参照してください。 > + + :help '[ + :help '] + :help = + :help :normal +< + *faq-25.17* +25.17. Vimスクリプト中でカーソル下の文字を取得するには? + +getline()と文字列のインデクス[]を使います: > + + :echo getline(".")[col(".") - 1] +< +上のコマンドにおいてgetline(".")は現在行のテキストを返します。文字列のインデク +スは0から始まり、"string[index]"という記法で文字列中からインデクスを指定して1 +つの文字を取得できます。col(".")はカーソル位置の桁を返します。ここでは文字列中 +の目的の文字を取得するために調整されています。 + +別の方法としては、以下の一連のコマンドによってもカーソル下の文字を取得でき +ます: > + + normal! vy + let ch=@" +< +注意: 上のコマンドはマーク'<と'>を変更します。 + +さらなる情報については以下を参照してください。 > + + :help getline() + :help col() + :help expr-[] +< + *faq-25.18* +25.18. 拡張子を除いたカレントファイル名を取得するには? + +拡張子を除いたカレントファイル名を取得するにはこうします: > + + :echo expand("%:r") +< +いくつかのコマンドでは、ファイル名の修飾子を直接使うことができます: > + + :cd %:p:h + :!gcc -o %:r.o % +< +さらなる情報については以下を参照してください。 > + + :help filename-modifiers + :help expand() + :help cmdline-special + :help fnamemodify() +< + *faq-25.19* +25.19. カレントファイルのベース名(basename)を取得するには? + +ファイル名修飾子:tを使えばカレントファイルのベース名(basename)を取得することが +できます: > + + :echo expand("%:t") +< +さらなる情報については以下を参照してください。 > + + :help filename-modifiers +< + *faq-25.20* +25.20. 関数の結果をカレントバッファに挿入するには? + +インサートモードにおいて次のコマンドで関数の戻り値を挿入することができます: > + + <C-R>=MyFunc() +< +注意: これは関数の戻り値を挿入するだけです。 + +さらなる情報については以下を参照してください > + :help i_CTRL-R + :help i_CTRL-R_CTRL-R + :help i_CTRL-R_CTRL-O + :help expression +< + *faq-25.21* +25.21. 関数の中で外部プログラムを呼ぶには? + +関数の中で外部プログラムを呼ぶにはいくつかの方法があります。組み込み関数 +system()を使うと、外部コマンドを起動し、出力を取得することができます: > + + :let output = system("ls") +< +また、exコマンド"!"を使って外部コマンドを実行することもできます。 + +さらなる情報については以下を参照してください。 > + + :help system() + :help :! + :help 10.9 +< + *faq-25.22* +25.22. ":!"で実行したプログラムが返すステータス値を取得するには? + +組み込み変数v:shell_errorを使えば最後に実行したシェルコマンドが返すステータス +値を取得することができます。 + +さらなる情報については以下を参照してください。 > + + :help v:shell_error +< + *faq-25.23* +25.23. カレントバッファが変更されているかどうかを知るには? + +オプション'modified'の値を見ればカレントバッファが変更されているかどうかを知る +ことができます: > + + :set modified? +< +スクリプト中でも'modified'の値を知ることができます: > + + if &modified + echo "File is modified" + endif +< +さらなる情報については以下を参照してください。 > + + :help 'modified' +< + *faq-25.24* +25.24. スクリプト中でノーマルコマンドの中に改行文字を使いたいです。改行文字を + 指定するには? + +":execute"を使えばノーマルモードコマンド中で特殊文字を使うことができます: > + + :execute "normal \<CR>" + :execute "normal ixxx\<Esc>" +< +さらなる情報については以下を参照してください。 > + + :help :execute + :help expr-quote +< + *faq-25.25* +25.25. スクリプト中で長い行を次行に継続するには? + +スクリプト中で長い行を継続するには、次行の最初にバックスラッシュ("\")をつけま +す。例: > + :set comments=sr:/*,mb:*,el:*/, + \://, + \b:#, + \:%, + \n:>, + \fb:- +< +訳註: 原文には例が入っていなかったので:helpからコピペしてきた。 + +さらなる情報については以下を参照してください。 > + + :help line-continuation +< + *faq-25.26* +25.26. "execute 'echo Myfunc()'"として自作の関数を呼ぼうとすると、カーソルがカ + レントバッファの先頭に移動してしまいます。なぜ? + +":execute"は引数で指定されたノーマルコマンドを実行します。次のコマンドでは: > + + :execute "echo Myfunc()" +< +"echo Myfunc()"は0を返します。":execute"コマンドはノーマルモードコマンドの"0" +を実行します。これはカーソルをファイルの先頭に移動させます。関数を呼ぶには +":execute"でなく":call"を使ってください: > + + :call Myfunc() +< + +訳註: このQ&Aは間違っている? +訳註: :executeはexコマンドを実行する。 +訳註: 1番目のコマンドはMyfunc()を呼んでその戻り値をechoするはず。 + +さらなる情報については以下を参照してください。 > + + :help :call + :help :execute + :help :echo + :help user-functions + :help 41.5 + :help 41.6 +< + *faq-25.27* +25.27. レジスタの中身を実行するには? + +レジスタ(例えばレジスタ'a'とする)にVimのコマンドをヤンクしてある場合、そのレジ +スタの中身を次のコマンドで実行することができます: > + + :@a +< +または > + :exe @a +< + +さらなる情報については以下を参照してください。 > + + :help :@ +< + *faq-25.28* +25.28. 関数やマップを呼んだ後に'u'キーを押してアンドゥするとその関数/マップに + よってなされた変更全てをアンドゥします。なぜ? + +関数やマップを呼ぶと、その関数/マップによってなされた操作は1つの操作として扱 +われます。'u'を押して最後の操作をアンドゥすると、関数/マップによってなされた +変更は全て元に戻ります。 + +さらなる情報については以下を参照してください。 > + + :help undo-redo + :help map-undo +< + *faq-25.29* +25.29. s:つきで定義された関数(スクリプトローカル関数)を別のスクリプト/プラグ + インから呼ぶには? + +関数名へのプリフィックスs:は関数をスクリプトローカルにするために使われます。 +スクリプトローカル関数はそのスクリプト中からのみ呼ぶことができ、他のスクリプト +からは呼び出せません。他のプラグイン/スクリプトから呼び出せる関数を定義するに +は、s:をつけずに関数を定義します。 + +さらなる情報については以下を参照してください。 > + + :help script-variable + :help script-local + :help :scriptnames +< + *faq-25.30* +25.30. 読み込んだスクリプトをun-sourceするには?言い替えると、スクリプトを読み + 込んだことによって実行されたコマンドを全て戻すには? + +スクリプトを読み込んだことによって実行されたコマンドを全て戻すことはできませ +ん。 + +さらなる情報については以下を参照してください。 > + + :help :source +< + +============================================================================= + *faq-26* +SECTION 26 - プラグイン + + *faq-26.1* +26.1. ファイル形式ごとに異なるオプションを設定するには? + +ファイル形式別プラグインを作れば、ファイル形式ごとに異なるオプションを設定する +ことができます。まず最初に次のコマンドでファイル形式別プラグインを有効にしてく +ださい: > + + :filetype plugin on +< +ファイル形式別プラグインは、Vimでその形式のファイルを作成したり開く度に読み込 +まれるVimスクリプトです。例えば、Cプログラム(ファイル形式'c')を編集するとき +は常に'textwidth'を80にするには、次のファイルのどれかを作ります: > + + ~/.vim/ftplugin/c.vim (Unix) + %HOME%\vimfiles\ftplugin\c.vim (Windows) +< +そしてその中に次のテキストを書いておきます: > + + setlocal textwidth=80 +< +自動コマンドを使っても特定のファイル形式を編集するときに特定のオプションを設定 +することができます。例えば、*.txtファイルを編集するときだけ'textwidth'を75に設 +定するには次のコマンドを使います: > + + autocmd BufRead *.txt setlocal textwidth=80 +< +さらなる情報については以下を参照してください。 > + + :help filetype-plugin + :help add-filetype-plugin + :help autocmd + :help 40.3 +< + + *faq-26.2* +26.2. プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイルタ + イププラグインをダウンロードしました。Vimがこれらのファイルを読み込むように + するには、どこにコピーすればいいですか? + +ランタイムファイル(プラグイン、構文ファイル、インデントファイル、カラースキー +ム、ファイル形式別プラグインなど)は'runtimepath'で指定されたディレクトリのうち +どれかの下に置きます。'runtimepath'の現在の値を知るには次のコマンドを使います +: > + + :set runtimepath +< +Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになります。MS-Windowsシス +テムでは、通常これは$VIM\vimfilesまたは$HOME\vimfilesディレクトリになります。 +ランタイムファイルはその種類によって、ランタイムディレクトリ下の決まったディレ +クトリに置かねばなりません。そのディレクトリの名前は以下のとおりです: > + + colors/ - カラースキームファイル + compiler/ - コンパイラファイル + doc/ - ドキュメント + ftplugin/ - ファイル形式別プラグイン + indent/ - インデントスクリプト + keymap/ - キーマップファイル + lang/ - メニューの翻訳 + plugin/ - プラグインスクリプト + syntax/ - 構文ファイル + tutor/ - vimtutorのファイル +< +さらなる情報については以下を参照してください。 > + + :help your-runtime-dir + :help 'runtimepath' + :help :runtime +< + *faq-26.3* +26.3. 既存のファイル形式別プラグインを拡張するには? + +ディレクトリ$VIMRUNTIME/after/ftpluginまたは$VIMRUNTIME/ftpluginの下にファイル +を作ることによって、既存のファイル形式別プラグインを拡張することができます。 +そのファイルの名前は既存のファイル形式別プラグインの名前と同じにすべきです。 +この新しいファイルにあなたの拡張を書き加えます。 + +そのファイルをafter/ftpluginディレクトリに置くと、Vimはまず既存のファイルタイ +ププラグインを読み込み、その後にその新しいファイルを読み込みます。そのファイル +を$VIMRUNTIME/ftpluginディレクトリに置くと、Vimはまずその新しいファイルを読み +込み、その後に既存のファイル形式別プラグインを読み込みます。 + +さらなる情報については以下を参照してください。 > + + :help ftplugin-overrule + :help filetype-plugin + :help add-filetype-plugin + :help 'runtimepath' +< + *faq-26.4* +26.4. プラグインの読み込みをオフにするには? + +'loadplugins'をオフにすればプラグインを読み込まなくすることができます: > + + :set noloadplugins +< +コマンドライン引数"--noplugin"を指定してもプラグインの読み込みを止めさせること +ができます: > + + $ vim --noplugin +< +さらなる情報については以下を参照してください。 > + + :help 'loadplugins' + :help --noplugin + :help load-plugins +< + *faq-26.5* +26.5. ファイル形式別プラグインの読み込みをオフにするには? + +デフォルトではvimはファイル形式別プラグインを読み込みません。ファイル形式別プ +ラグインを読み込むように設定するには次のコマンドを使います: > + + filetype plugin on +< +ファイル形式別プラグインの読み込みをオフにするにはこうします: > + + filetype plugin off +< +さらなる情報については以下を参照してください。 > + + :help filetype-plugin-on + :help filetype-plugin-off + :help :filetype +< + *faq-26.6* +26.6. 全てのファイル形式に対し、グローバルのファイル形式別プラグインでなされる + 設定を上書きするには? + +ファイル形式イベントで引き起こされる自動コマンドを使います: > + + au Filetype * set formatoptions=xyz +< +これは少なくともあなたのvimrc中の"filetype on"以降に行わねばなりません。あなた +の"myfiletypefile"ファイル中で行うのがベストです。そうすればこれは必ず最後に実 +行されるようになります。 + +特定のファイル形式に対して設定を上書きしたいなら、~/.vim/after/ftpluginに元 +のファイルと同名のファイルを作ります。例えば、ファイル形式別プラグインc.vimの +設定を上書きするには、~/.vim/after/ftpluginにc.vimを作り、そこに好みの設定を書 +き込みます。 + +さらなる情報については以下を参照してください。 > + + :help ftplugin-overrule + :help ftplugins + :help myfiletypefile +< + *faq-26.7* +26.7. Vimのディレクトリブラウザプラグインを無効にするには? + +ディレクトリブラウザプラグインを無効にするには、次の行を.vimrcに加えます: > + + let loaded_explorer = 1 +< +さらなる情報については以下を参照してください。 > + + :help file-explorer +< + *faq-26.8* +26.8. 特定のパターンにマッチする名前のファイルや拡張子に応じてファイル形式オ + プションを設定するには? + +特定のパターンにマッチする名前のファイルに対しては、自動コマンドを使って +'filetype'を設定します。例えば、拡張子'.x'を持つファイル全てに対して +'filetype'を'c'にするには次の自動コマンドを使います: > + + autocmd! BufRead,BufNewFile *.x setfiletype c +< +よりよい方法は、filetype.vimファイルを~/.vimディレクトリ(または'runtimepath'で +指定されたディレクトリのどれか)に作ることです。そして次の行を書き加えます: > + + " my filetype file + if exists("did_load_filetypes") + finish + endif + augroup filetypedetect + au! BufRead,BufNewFile *.x setfiletype c + augroup END +< +さらなる情報については以下を参照してください。 > + + :help new-filetype + :help 43.2 + :help :setfiletype +< + +============================================================================= + *faq-27* +SECTION 27 - プログラムファイルを編集する + + *faq-27.1* +27.1. C/C++のファイルに対してオートインデントを有効化するには? + +ファイル形式に基づくインデントを有効化するには次を実行します: > + + :filetype indent on +< +自動Cインデントだけを有効化したいならこうします: > + + :set cindent +< +さらなる情報については以下を参照してください。 > + + :help 'cindent' + :help C-indenting + :help filetype +< + *faq-27.2* +27.2. C/C++のファイルに対するインデントをカスタマイズするには? + +'cinoptions', 'cinkeys', 'cinwords'の値を変えれば、Cインデントをカスタマイズす +ることができます。 + +さらなる情報については以下を参照してください。 > + + :help 'cindent' + :help 'cinoptions' + :help 'cinkeys' + :help 'cinwords' + :help C-indenting + :help cinoptions-values + :help 'smartindent' +< + *faq-27.3* +27.3. オートインデント機能を無効化するには? + +デフォルトではオートインデントは無効になっています。.vimrcか.gvimrcでオートイ +ンデントを有効化したのでしょう。オートインデントを無効化するには、 > + + :filetype indent off +< +または > + + :set nocindent +< +とします。また、以下のオプションの設定を確認してください: > + + :set autoindent? + :set smartindent? + :set indentexpr? +< +さらなる情報については以下を参照してください。 > + + :help 'cindent' + :help filetype-indent-off + :help 'autoindent' + :help 'smartindent' + :help 'indentexpr' +< + *faq-27.4* +27.4. オートインデントの際に挿入されるスペースの数を変えるには? + +'shiftwidth'オプションを変えると、オートインデントに使われるスペースの数を変え +ることができます: > + + :set shiftwidth=4 +< +さらなる情報については以下を参照してください。 > + + :help 'shiftwidth' +< + *faq-27.5* +27.5. Cプログラムを編集しています。マクロ定義や変数を表示するには? + +コマンド[dでマクロ定義を表示でき、[iで変数定義を表示することができます。 + +さらなる情報については以下を参照してください。 > + + :help [d + :help [i + :help include-search + :help 29.4 + :help 29.5 +< + *faq-27.6* +27.6. Cプログラムを編集しています。ブロックの内側から、そのブロックの開始位置 + や終了位置にジャンプするには? + +コマンド[{でそのブロックの始まりにジャンプし、]}でそのブロックの終わりにジャン +プします。 + +さらなる情報については以下を参照してください。 > + + :help [{ + :help ]} + :help various-motions +< + *faq-27.7* +27.7. C++ファイルで"//"コメントが自動的に挿入されるのを止めさせるには? + +オプション'comments'の値を修正すればC++のコメント文字("//")が自動的に挿入され +るのを止めさせることができます。例: > + + :set comments=sr:/*,mb:*,el:*/ +< +さらなる情報については以下を参照してください。 > + + :help 'comments' + :help format-comments +< + *faq-27.8* +27.8. 一連の行の行頭にコメント文字'#'をつけ加えるには? + +最初にビジュアル矩形モードを使って(CTRL-V)その行を全て選択します。'I'を押して +行頭に文字の挿入を開始します。コメント文字を挿入し、<Esc>を押してインサートモ +ードを終了します。すると入力された文字が選択された全ての行の行頭に挿入されま +す。 + +さらなる情報については以下を参照してください。 > + + :help visual-block + :help blockwise-operators + :help v_b_I +< + *faq-27.9* +27.9. Cのソースファイルに対応する名前のヘッダファイルを開くには? + +次のコマンドを使うと、Cソースファイルに対応する名前のヘッダファイルを開くこと +ができます: > + + :e %:t:r.h +< +次のコマンドで、そのファイルを分割したウィンドウで開くこともできます: > + + :sp %:t:r.h +< +上のコマンドで、パーセント記号はカレントファイルの名前に展開されます。修飾子 +":t"はファイル名の末尾(tail)に変換します。修飾子":r"はファイル名のルート(root) +に変換します。そして.hをつけて、最終的にヘッダファイル名が得られます。 + +別のアプローチとしては、次のコマンドを使います: > + + :sfind %:t:r.h +< +このコマンドはヘッダファイルを'path'で指定されたディレクトリの中から探します。 + +さらなる情報については以下を参照してください。 > + + :help cmdline-special + :help filename-modifiers + :help :sfind + :help 'path' +< + *faq-27.10* +27.10. コメントを入力しているとき、自動的にコメント文字を挿入するには? + +コメントを入力しているとき自動的にコメント文字を挿入するには、'formatoptions' +にフラグ'r'と'o'を加えます。 > + + :set formatoptions+=ro +< +コメントを'textwidth'によって自動的に折り返すためにフラグ'c'をつけたり、コメン +トを"gq"コマンドで成形するためにフラグ'q'をつけてもよいでしょう: > + + :set formatoptions=croq +< +さらなる情報については以下を参照してください。 > + + :help 30.6 + :help format-comments + :help 'comments' + :help fo-table +< + +============================================================================= + *faq-28* +SECTION 28 - QuickFix + + *faq-28.1* +28.1. Vimの中からプログラムをビルドするには? + +":make"を使うとVim中からプログラムをビルドすることができます。":make"は +'makeprg'で指定されたプログラムを起動します。 + +さらなる情報については以下を参照してください。 > + + :help 30.1 + :help make_makeprg + :help 'makeprg' + :help 'makeef' + :help :make + :help quickfix + *faq-28.2* +28.2. Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパイル + してエラーメッセージを出力します。しかしコンパイルが終わると表示が消え + てしまい、エラーメッセージをもう一度見るには:clistとしなければなりませ + ん。このエラーメッセージを見るのに他の方法はありませんか? + +":copen"や":cwindow"を使うと、コンパイラの出力を保持しているQuickFixウィンド +ウを開くことができます。そのウィンドウの中でエラーの行を選択すると、ソースコー +ド中の対応する行にジャンプすることができます。 + +さらなる情報については以下を参照してください。 > + + :help :copen + :help :cwindow + :help quickfix +< + +============================================================================= + *faq-29* +SECTION 29 - 折り畳み + + *faq-29.1* +29.1. 折り畳みの機能を拡張するには? + +'foldexpr'を使えばユーザ指定の関数を使って折り畳みを作ることができます。 +例えば、以下の形のサブルーチンを1行に折り畳むには: > + + sub foo { + my $barf; + $barf = 3; + return $barf; + } +< +次のコマンドを使うことができます: > + + set foldmethod=expr + set foldexpr=MyFoldExpr(v:lnum) + fun! MyFoldExpr(line) + let str = getline(a:line) + if str =~ '^sub\>' + return '1' + elseif str =~ '^}' + return '<1' + else + return foldlevel(a:line - 1) + endif + endfun +< +さらなる情報については以下を参照してください。 > + + :help 'foldexpr' + :help fold-expr +< + *faq-29.2* +29.2. 'foldmethod'をセットして折り畳みを有効化すると、全ての折り畳みが閉じてし + まいます。これを防ぐには? + +'foldlevelstart'をある値にセットすると、折り畳みがその値以上になったときのみ閉 +じさせることができます。 > + + :set foldlevelstart=99 +< +さらなる情報については以下を参照してください。 > + + :help 'foldlevelstart' + :help 'foldlevel' + :help fold-foldlevel +< + *faq-29.3* +29.3. ファイルの編集を開始したときにいくつの折り畳みが開かれた状態にするかをコ + ントロールするには? + +'foldlevelstart'を修正すれば、ファイルの編集を開始したときにいくつの折り畳みを +開くかをコントロールすることができます。全ての折り畳みを閉じた状態で編集を開始 +するにはこうします: > + + :set foldlevelstart=0 +< +さらなる情報については以下を参照してください。 > + + :help 'foldlevelstart' +< + *faq-29.4* +29.4. マウスを使って折り畳みを開閉するには? + +折り畳みを開閉するには、一番左の桁に表示された+と-という文字をクリックします。 +それが機能するためには'foldcolumn'を0より大きい値に設定していなければなりませ +ん: > + + :set foldcolumn=2 +< +さらなる情報については以下を参照してください。 > + + :help 'foldcolumn' +< + + *faq-29.5* +29.5. 閉じた折り畳みの表示に使われるテキストを変更するには? + +'foldtext'によって閉じた折り畳みの表示に使われるテキストを変更することができま +す。 + +さらなる情報については以下を参照してください。 > + + :help 'foldtext' + :help fold-foldtext + :help 'fillchars' +< + *faq-29.6* +29.6. Vimを終了・再起動するとき、手動で作った折り畳みを保存・復元するには? + +":mkview"を使えば手動で作った折り畳みを保存することができます。その後、 +":loadview"でその折り畳みを復元することができます。これが機能するためには +'viewoptions'が"folds"を含んでいなければなりません。 + +さらなる情報については以下を参照してください。 > + + :help 28.4 + :help :mkview + :help :loadview + :help 'viewoptions' + :help 'viewdir' + :help :mksession + :help 'sessionoptions' +< + +============================================================================= + *faq-30* +SECTION 30 - 外部プログラムとの連携 + + *faq-30.1* +30.1. Vimのウィンドウの中でシェルを起動することはできますか? + +現在のところ、Vimにはウィンドウの中でシェルや外部プログラムを実行する機能はあ +りません。 + +さらなる情報については以下を参照してください。 > + + :help shell-window +< +代替手段としては、Unixの"screen"ユーティリティか"splitvt"プログラムを試してみ +てもよいでしょう。 + +また、Brian Sturkによるvimshプラグインを使うとVimウィンドウの中でシェルを起動 +することができます。これを使うためには、VimをPythonインターフェイス機能つきで +ビルドしなければなりません。さらなる情報については以下のURLを訪れてください: > + + http://vim.sourceforge.net/scripts/script.php?script_id=165 +< + *faq-30.2* +30.2. カーソル下の単語を外部プログラムに渡すには? + +特別なキーワード<cword>を使うと、カーソル下の単語を外部コマンドに渡すことがで +きます。例: > + + :!dict <cword> +< +さらなる情報については以下を参照してください。 > + + :help <cword> +< + *faq-30.3* +30.3. シェルコマンドの出力をVimのバッファに取り込むには? + +":r !"を使えばシェルコマンドの出力をVimのバッファに取り込むことができます: > + + :r !ls +< +さらなる情報については以下を参照してください。 > + + :help :r! +< + *faq-30.4* +30.4. カレントバッファの中身を外部プログラムにパイプで渡して、そのプログラムの + 出力でバッファを置き換えるには? + +:!を使えばカレントバッファの中身を外部プログラムにパイプで渡して、そのコマンド +の出力でバッファの中身を置き換えることができます。例えば、Unixのソートコマンド +を使ってカレントバッファの中身をソートするには、次のようにします: > + + :%!sort +< +10から20行目だけををソートするなら次のコマンドを使います: > + + :10,20!sort +< +また、バッファを外部プログラムにパイプしたいが、バッファを出力で書き換えたくな +い場合はこうします: > + + :w !sort +< +上のコマンドはバッファ全体をsortコマンドにパイプします。 +注意: 'w'と'!'の間のスペースは必ず必要です。ある範囲の行だけをパイプするにはこ +うします: > + + :10,20w !sort +< +上のコマンドは10から20行目をsortコマンドにパイプします。 + +さらなる情報については以下を参照してください。 > + + :help :range! + :help 10.9 + :help :w_c +< + *faq-30.5* +30.5. ファイル中のあるセクションをソートするには? + +あるセクションをUnixの"sort"ユーティリティにパイプしてそのファイルをソートする +ことができます。例: > + + :5,100!sort +< + +ビジュアルモードで選択した矩形範囲だけをソートするには、次のVim onlineのtipを +参照してください: + +http://vim.sourceforge.net/tips/tip.php?tip_id=588 + + *faq-30.6* +30.6. Vimとslrnといっしょに使うステップ・バイ・ステップガイドはありますか? + +VimとSlrnをいっしょに使うための情報については、以下のリンクを参照してください: +> + + http://thingy.apana.org.au/~fun/slrn/ +< + *faq-30.7* +30.7. Vimをページャとして使うには? + +シェルスクリプト$VIMRUNTIME/macros/less.shを使うとVimをページャとして使うこと +ができます。これはVimの標準ディストリビューションの一部として同梱されていま +す。このシェルスクリプトは、lessライクなキーバインディングを実現するために +Vimスクリプト$VIMRUNTIME/macros/less.vimを使用しています。 + +さらなる情報については以下を参照してください。 > + + :help less +< + *faq-30.8* +30.8. Vimの中でUnixのmanページを見るには? + +Vim標準ディストリビューションに同梱のman.vimを使えば、Vimの中でUnixのmanページ +を見ることができます。このプラグインを使うには、以下の行をvimrcファイルに追加 +してください: > + + runtime ftplugin/man.vim +< +また、Kキーを押すと、カーソル下のキーワードとともに'keywordprg'で指定された +プログラムを起動することができます。デフォルトでは'keywordprg'はカーソル下の +キーワードのmanを起動するように設定されています。 + +さらなる情報については以下を参照してください。 > + + :help man-plugin + :help K + :help 'keywordprg' +< + *faq-30.9* +30.9. Vimのdiff機能で使われるdiffコマンドを変更するには? + +デフォルトではVimのdiff機能は'diff'コマンドを使います。'diffexpr'オプションを +変更すればこれを変えることができます。 + +さらなる情報については以下を参照してください。 > + + :help diff-diffexpr + :help 'diffexpr' +< + *faq-30.10* +30.10. 折り畳みなしでdiffモードを使うには? + +次のコマンドラインを実行すると、2つのファイル名とともに起動し、折り畳み +なしでdiffモードに入ります: > + + $ vim -o file1 file2 "+windo set diff scrollbind scrollopt+=hor nowrap" +< +垂直ウィンドウ分割の方がいいなら、"-o"を"-O"に置き換えてください。 + +さらなる情報については以下を参照してください。 > + + :help vimdiff +< + +============================================================================= + *faq-31* +SECTION 31 - GUIのVIM + + *faq-31.1* +31.1. バッファ固有のメニューを作るには? + +バッファ固有のメニューという機能はVimのTODOリストにあります。今のところは、 +Michael Geddesのプラグインbuffermenu.vimを試してみてください: > + + http://vim.sourceforge.net/scripts/script.php?script_id=246 +< + *faq-31.2* +31.2. GUIのVimで使われるフォントを変更するには? + +'guifont'を変更すればGUIのVimで使われるフォントを変更することができます。この +オプションの現在の値を表示するにはこうします > + + :set guifont? +< +ここで表示された値を.vimrcに書いておけば、Vimを再起動しても同じフォントを使う +ことができます。例えば、次の行を.vimrcに書くとAndale Monoフォントを使うように +なります。 > + + set guifont=Andale_Mono:h10:cANSI +< +Win32, GTK, Photon版のVimでは、次のコマンドでguifontを変える際に便利なダイアロ +グを起動することができます: > + + :set guifont=* +< +Vimのコマンドライン引数に-fontを使うと通常のテキストに使われるフォントを指定す +ることができます。 + +さらなる情報については以下を参照してください。 > + + :help 'guifont' + :help 'guifontset' + :help 'guifontwide' + :help font-sizes + :help -font + :help -boldfont + :help -italicfont + :help -menufont + :help -menufontset +< + *faq-31.3* +31.3. GUIのVimが起動したときのウィンドウの位置を指定するには? + +コマンドライン引数"-geometry"を指定すれば、GUIのVimのウィンドウの位置を指定す +ることができます。例: > + + $ gvim -geometry 80x25+100+300 +< +さらなる情報については以下を参照してください。 > + + :help 31.4 + :help -geom +< + *faq-31.4* +31.4. GVimに水平スクロールバーをつけるには? + +'guioptions'を修正すれば水平スクロールバーを有効化することができます: > + + :set guioptions+=b +< +さらなる情報については以下を参照してください。 > + + :help 'guioptions' + :help gui-horiz-scroll +< + *faq-31.5* +31.5. スクロールバーをデフォルトで左側に表示するようにするには? + +'guioptions'にフラグ'l'をつけるとスクロールバーが左側に出るようになります。 > + + :set guioptions+=l + :set guioptions-=r +< +さらなる情報については以下を参照してください。 > + + :help 'guioptions' + :help gui-scrollbars +< + *faq-31.6* +31.6. メニューバーを消すには? + +'guioptions'からフラグ'm'を除くとメニューバーが消えます: > + + :set guioptions-=m +< +さらなる情報については以下を参照してください。 > + + :help 'guioptions' +< + + *faq-31.7* +31.7. GVimを使っています。ALTキーと文字キーを押すとその文字で始まるメニューが + 選択されます。ALT-<key>の組合せを使いたいので、この挙動はやめてほしいで + す。どうすればいいですか? + +'winaltkeys'を使えばALTキーでメニュー項目を選択するのを無効にすることができま +す: > + + :set winaltkeys=no +< +さらなる情報については以下を参照してください。 > + + :help 'winaltkeys' + :help :simalt +< + *faq-31.8* +31.8. スクロールバーをドラッグしたとき、カーソル位置を動かさずにテキストをスク + ロールさせることは可能ですか? + +Vimの設計では、ノーマル・ビジュアル・選択・インサートモードにおいてカーソル位 +置は表示されている位置になければなりません。これはVimの修正なしには変更できま +せん。スクロールバーを使うと、カーソル位置は常に表示されている範囲に入るように +移動します。この問題を解決する別のアプローチはVimのマークを使うことです。maで +現在のカーソル位置をマークします。テキストをスクロールしたら`aで元の位置に戻 +ります。Vim Onlineに投稿された次の提案も試してみてください: > + + http://www.vim.org/tip_view.php?tip_id=320 +< +さらなる情報については以下を参照してください。 > + + :help mark-motions +< + *faq-31.9* +31.9. ":browse"を使ったときに特定のディレクトリから始めるようにするには? + +'browsedir'を設定すれば":browse"コマンドのデフォルトディレクトリを設定できま +す。 > + + :set browsedir='<your_dir>' +< +さらなる情報については以下を参照してください。 > + + :help 'browsedir' +< + *faq-31.10* +31.10. ファイルがVimの外部で変更されたときなど、問い合わせがあるとき、GUIのダ + イアログボックスが表示されます。コンソールのダイアログボックスが出るよ + うにするには? + +'guioptions'にフラグ'c'を含めれば、GUIダイアログの代わりにコンソールダイアログ +を使うようになります: > + + :set guioptions+=c +< +さらなる情報については以下を参照してください。 > + + :help 'guioptions' +< + *faq-31.11* +31.11. GVimをアプリケーションxxx用のエディタとして使っています。アプリケーショ + ンxxxがGVimを起動すると、コントロールがすぐにアプリケーションxxxに戻っ + てしまいます。Vimを終了したとき初めてアプリケーションxxxにコントロール + が戻るようにGVimを起動するには? + +コマンドラインオプション'-f' (foreground)をつけてGVimを起動します: > + + $ gvim -f +< +デフォルトではGVimはそれを起動したプログラムから切り離されます。'-f'をつけると +GVimはそれを起動したプログラムから切り離されなくなります。 + +さらなる情報については以下を参照してください。 > + + :help gui-fork + :help -f +< + *faq-31.12* +31.12. なぜ、システムにインストールされているフォント全てが「フォントを選ぶ」 + ダイアログに現れないのですか? + +Vimは等幅フォントのみサポートしています。プロポーショナルフォントはサポートし +ていません。「フォントを選ぶ」ダイアログには等幅フォントだけが表示されます。 + +さらなる情報については以下を参照してください。 > + + :help font-sizes + :help 'guifont' +< +31.13. コマンドラインモードでマウスを使うには? + +コマンドラインモードでマウスを使うには、オプション'mouse'にフラグ'c'をつけま +す: > + + :set mouse+=c +< +さらなる情報については以下を参照してください。 > + + :help mouse-using + :help gui-mouse + :help 09.2 +< + *faq-31.14* +31.14. テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコピーし + たテキストがペーストされてしまいます。この挙動を無効にするには? + +マウスの中央ボタンに<Nop>をマップすると中央ボタンを無効化できます: > + + :map <MiddleMouse> <Nop> + :map! <MiddleMouse> <Nop> +< +さらなる情報については以下を参照してください。 > + + :help gui-mouse-mapping + :help <Nop> +< +31.15. GVimウィンドウの位置とサイズを変更するには? + +コマンド"winpos"を使えばVimウィンドウの位置を変えることができます。ウィンドウ +のサイズを変えるには、オプション"lines"と"columns"を変更します。 + +例えば、次のコマンドはGVimウィンドウのX,Y座標を50,50に、行数を50に、桁数を80に +セットします。 > + + :winpos 50 50 + :set lines=50 + :set columns=80 +< +":winpos"への引数はVimウィンドウのピクセル座標を指定します。オプション'lines' +と'columns'は行数と文字数を指定してウィンドウの高さと幅を設定します。 + +さらなる情報については以下を参照してください。 > + + :help 31.4 + :help :winpos + :help 'lines' + :help 'columns' + :help GUIEnter +< + +============================================================================= +SECTION 32 - UNIX上のVim + + *faq-32.1* +32.1. xtermでVimを実行しています。CTRL-Sを押すとVimがフリーズします。 + どうすればいいですか? + +多くのターミナルエミュレータと本物のターミナルドライバはCTRL-Sを受け取るとデー +タの受信を停止します。早すぎて見えない画面のスクロールを止めるためです(昔の端 +末で、バッファがオーバーフローしないようにコンピュータを遅くするためでもありま +した)。CTRL-Qを押すと出力を再開します。 + +CTRL-Sを押すとターミナルドライバは出力データの送信を停止します。結果としてVim +がハングしたように見えます。CTRL-Qを押すと全て通常に戻るでしょう。 + +'stty'コマンドを使うとターミナルドライバのフローコントロールをオフにすることが +できます: > + + $ stty -ixon -ixoff +< +または、次のコマンドでターミナルのフローコントロールに使うキーを変更することが +できます: > + + $ stty stop <char> + $ stty start <char> +< + *faq-32.2* +32.2. 画面の更新について奇妙な問題があります。これを解決するには? + +xtermのような適切なターミナルエミュレータと正しいTERM設定(TERM=xterm)と正しい +terminfo/termcapファイルを使わねばなりません。 +さらなる情報については以下を参照してください。 > + + :help 'term' +< + *faq-32.3* +32.3. Vimのターミナル/コンソール版を使っています。インサートモードでバックスペ + ースキーを押してもカーソルの前の文字が消えません。どう設定すれば良いです + か? + +Vimが正しいバックスペースのキーコードを受け取っているかどうか確かめてください。 +次のコマンドを試してみてください: > + + :fixdel +< +環境変数TERMが正しくターミナルの名前に設定されているかを確かめてください。 +'stty'コマンドを試してみてください: > + + $ stty erase ^H +< +ここで、^Hの文字を入力するにはCTRL-VとCTRL-Hを押してください。 + +さらなる情報については以下を参照してください。 > + + :help :fixdel + :help Linux-backspace + :help NetBSD-backspace +< + *faq-32.4* +32.4. xtermでVimを使っています。Vimを終了すると画面が元の状態に復元されます。 + これを無効化するには? + +xtermは「代替スクリーン」("alternate screen")という機能を持っています。この機 +能が有効になっていると、Vimは起動時と終了時にこの代替スクリーンに切り替えま +す。そのため、元の画面が復元されます。この機能を無効にするには次の行を.vimrcに +加えてください: > + + :set t_ti= t_te= +< +さらなる情報については以下を参照してください。 > + + :help restorescreen + :help xterm-screens +< + *faq-32.5* +32.5. Vimの起動にかなり時間がかかります。起動時間を最小化するには? + +これはおそらくVimがxtermのタイトルとXのクリップボードのためにXディスプレイを開 +いていることに関係しています。環境変数DISPLAYが正しいホストを指していることを +確認してください。次のコマンドを試してみてください: > + + $ vim -X +< +こうするとXディスプレイを開かなくなります。このコマンドラインオプションをつけ +るとXのクリップボードが使えなくなり、xtermのタイトルを変えられなくなります。 + +オプション'clipboard'を次のように変更することもできます: > + + :set clipboard=exclude:.* +< +こうするとコマンドライン引数-Xを使うのと同じ効果があります。 + +さらなる情報については以下を参照してください。 > + + :help -X + :help 'clipboard' +< + + *faq-32.6* +32.6. Unixのgvimでカーソルの点滅を止めるには? + +オプション'guicursor'を変更すればカーソルの点滅を止めることができます。 +例: > + + :set guicursor=a:blinkon0 +< +さらなる情報については以下を参照してください。 > + + :help 'guicursor' +< + *faq-32.7* +32.7. GTK Vimのメニューのフォントを変えるには? + +~/.gtkrcを修正すればGTK Vimのメニューのフォントを変更できます。例: > + + style "default" + { font ="smooth09" } + class "*" style "default" +< +最後の行が全てのウィジェットのフォントを変えています。 + +さらなる情報については以下を参照してください。 > + + :help gui-gtk +< + *faq-32.8* +32.8. Vimが<Ctrl-Z>でサスペンドするのを防ぐには? + + <Ctrl-Z>をマップすればサスペンドするのを防げます。いくつかの提案を示します: + +- <Ctrl-Z>でなにもしないようにする: > + + :map <C-Z> <Nop> +< +- <Ctrl-Z>でシェルが起動するようにする: > + + :map <C-Z> :shell<CR> +< +- <Ctrl-Z>でエラーメッセージが出るようにする: > + + :map <C-Z> :"suspending disabled<CR> +< +最後の例において、ダブルクォートはメッセージをステータスライン上に残すために必 +要になります。 + + *faq-32.9* +32.9. Vimを実行しているxtermをkillすると、Vimのプロセスが生き残り、多大なCPU時 + 間(99%)を食ってしまいます。なぜこうなるのですか? + +VimがPythonインターフェイスつきでビルドされるとこの問題が起こります。これは +PythonスレッドライブラリとVimに関する既知の問題です。この問題を解決するには、 +PythonインターフェイスなしでビルドされたVimを使用してください。 + +さらなる情報については以下を参照してください。 > + + :help +python + :help python +< + + *faq-32.10* +32.10. Unixターミナルで構文強調を使うには? + +構文強調を使う最も簡単で単純な方法はVimのGUI版(GVim)を使うことです。Vimのコン +ソール/ターミナル版で構文強調を使うには、カラー表示をサポートしているターミ +ナルエミュレータ(Xfree86 xtermやrxvtやdttermのようなもの)を使わねばなりませ +ん。ターミナルエミュレータが背景色と文字色を変えられるからといって、それが色を +変えるためのANSIエスケープシーケンスをサポートしているとは限りません。最新の +Xfree86 xtermはhttp://dickey.his.com/xterm/xterm.htmlからダウンロードできます。 +最新のrxvtはhttp://www.rxvt.orgからダウンロードできます。そのターミナルエミュ +レータ用の色をサポートしているterminfo/termcapをインストールしなければなりま +せん。また、環境変数TERMをそのターミナルの正しい名前に設定します。 + +色設定をテストするにはVimランタイムパッケージに付属のcolortest.vimスクリプトを +使うことができます。このスクリプトを使うには次のようにします: > + + :e $VIMRUNTIME/syntax/colortest.vim + :source % +< +さらなる情報については以下を参照してください。 > + + :help 06.2 + :help terminal-colors + :help termcap-colors + :help startup-terminal + :help xterm-color + :help colortest.vim +< + +============================================================================= + *faq-33* +SECTION 33 - MS-Windows上のVim + +33.1. MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。どうな + っているのですか? + +mswin.vimプラグインは、VimがMS-Windowsアプリケーションに似た挙動をするようにキー +マッピングとオプションを設定します。そのキーマップの一つがCTRL-Vで、これは +MS-Windowsアプリケーションではテキストをペーストします。このためCTRL-Vでビジュ +アル矩形モードが始まらないようになっています。mswin.vimではビジュアル矩形モー +ドの開始がCTRL-Qにマップされています。ですのでCTRL-Vの代わりにCTRL-Qを使ってく +ださい。 + +さらなる情報については以下を参照してください > + + :help CTRL-V + :help CTRl-V-alternative + :help CTRL-Q + :help 10.5 +< + *faq-33.2* +33.2. CTRL-Yキーを押すとCTRL-Rのような動作をします。CTRL-YをCTRL-Yとして扱うよ + うに設定するには? + +CTRL-YからCTRL-Rへのマップはmswin.vim内で行われています。mswin.vimは標 +準のMS-Windowsアプリケーションと同じ挙動になるようにCTRL-Yをマップします。 +これは":help CTRL-Y"で説明されています。mswin.vim中のCTRL-Yをマップしている行 +をコメントアウトするか、.vimrc中でmswin.vimを読み込んでいる行を削除すればよい +でしょう。 + + + *faq-33.3* +33.3. 常にGVimのウィンドウを最大化して起動するには? + +"simalt"コマンドを使えばVimのウィンドウを最大化することができます。GUIEnter自 +動コマンドを使えば、起動時にVimのウィンドウを最大化することができます: > + + autocmd GUIEnter * simalt ~x +< +さらなる情報については以下を参照してください: > + + :help :simalt + :help GUIEnter + :help gui-win32-maximized +< + *faq-33.4* +33.4. なんらかの編集操作をするとVimがフリーズします。カーソルは空の四角形にな + ります。全然文字が入力できません。どうなっているのですか? + +もっとも考えられるのは、テキストをスクロールさせようとマウスホイールを使ったこ +とです。Vimでインテリマウスホイールを使うと問題が起こることが知られています。 +これを回避するには、ユニバーサルスクロール機能を無効にすることです。 + +さらなる情報については以下を参照してください > + + :help intellimouse-wheel-problems +< + + *faq-33.5* +33.5. Windows XPを使っています。最大化したGVimの表示速度がとても遅いです。表示 + の更新を早くするには? + +これは表示プロパティの'Smooth edges of screen fonts'を有効化しているために起こ +っている可能性があります。フォントスムージングをオフにするか、スムージング方法 +を"Standard"にしてください。 + +訳注: コントロールパネル[パフォーマンスオプション]の[スクリーンフォントの縁を +訳注: 滑らかにする]のことだと思う。 + + *faq-33.6* +33.6. VimをCygwin上で使うにあたって推奨される設定は? + +シェル関連の設定を次のようにするとよいかもしれません: > + + :set shellcmdflag=-c + :set shellquote= + :set shellslash " 展開に(バックスラッシュでなく)スラッシュを使う + :set shellxquote=\" + :set shell=d:\cygwin\bin\bash.exe " bashをシェルに使う + :set shellpipe=2>&1| tee + :set shellredir=>%s 2>&1 +< + +33.7. diffモードでGNU diffを使おうとしています。コマンドラインからdiffを使うと + うまく動くのですが、Vim内で使おうとすると動きません。どうすれば? + +VimでGNU diffを使うには問題があります。次のリンクにあるRon Aaronがビルドした +GNU diff.exeを使ってみてください: > + + http://www.mossbayeng.com/~ron/vim/builds.html +< + *faq-33.8* +33.8. Outlookで外部エディタにVimを使うことはできますか? + +COMアドイン"cubiclevim"を使えば、OutlookでVimを外部エディタとして使うことがで +きます。さらなる情報については以下のリンクを訪れてください: > + + http://sourceforge.net/projects/cubiclevim +< +注意: 現在これはMS-Office 2000とXPのみで動作します。 + + *faq-33.9* +33.9. HTMLファイルを編集するのにVimを使っています。現在開いているHTMLファイル + をインターネットエクスプローラでプレビューするには? + +以下のコマンドでできます: > + + :!start c:\progra~1\intern~1\iexplore.exe file://%:p<CR> +< + *faq-33.10* +33.10. VimをMicrosoft Visual Studioといっしょに使いたいです。どうすれば? + +VimのOLE版(例: gvim61ole.zip)をダウンロードして使用しなければなりません。 +このファイルはVimをVisual Studioといっしょに使うための手順を書いたファイルも含 +んでいます。 + +さらなる情報については以下を参照してください > + + :help MSVisualStudio +< + *faq-33.11* +33.11. どこに_vimrcと_gvimrcを置けばいいですか? + +_vimrcと_gvimrcは環境変数VIMで指定されたディレクトリの下に置きます。もし他のユ +ーザとシステムを共有しているなら、環境変数HOMEに設定したディレクトリに置くとよ +いでしょう。 + +さらなる情報については以下を参照してください > + + :help $HOME-use + :help _vimrc +< + *faq-33.12* +33.12. ファイルを保存する度に、そのファイルがVimの外部で変更されていると警告が + 出ます。なぜですか? + +ファイルを保存する際に毎回以下の警告メッセージが出るなら: > + + WARNING: The file has been changed since reading it!!! + Do you really want to write to it (y/n)? +< + +MS-Windowsでのサマータイム(daylight saving time)が始まる日についてのバグに関係 +している可能性があります。Vimはファイルを書き込んだ後にそのタイムスタンプを記 +憶しています。そして次の書き込みの直前に再びタイムスタンプを取得し、Vimの外部 +でファイルが変更されているかチェックします。これはサマータイムが始まる日を除け +ば正しく機能します。 + +この問題はサマータイムが始まる日の次の日には解消されます。 + +さらなる情報については以下を参照してください > + + :help W11 +< + +============================================================================= + *faq-34* +SECTION 34 - 印刷 + + *faq-34.1* +34.1. 全ての行に行番号をつけて印刷するには? + +'printoptions'をセットして":hardcopy"を使えばファイルを印刷できます: > + + :set printoptions=number:y + :hardcopy +< +さらなる情報については以下を参照してください > + + :help 'printoptions' + :help :hardcopy +< + *faq-34.2* +34.2. 構文強調の色をつけてファイルを印刷するには? + +":hardcopy"で構文強調の色をつけてファイルを印刷することができます。また、 +2html.vimスクリプトでファイルをHTMLをファイルに変換し、そのHTMLファイルを印刷 +することもできます。 + +さらなる情報については以下を参照してください > + + :help syntax-printing + :help 2html.vim + :help :hardcopy + :help printing +< + +============================================================================= + *faq-35* +SECTION 35 - Vimをソースからビルドする + + *faq-35.1* +35.1. Unixシステム上でVimをソースからビルドするには? + +UnixシステムでVimをソースからビルドするには、次のステップに従ってください: + +- ftp://ftp.vim.org/pub/vim/unixからソースとランタイムファイルのアーカイブ + (vim-##.tar.bz2)をダウンロードします。 +- bzip2とtarを使ってアーカイブを展開します: > + + $ bunzip2 -c <filename> | tar -xf - +< +- 'make'を実行してVimをデフォルト設定で調整し、ビルドします。 +- 'make install'してVimをデフォルトのディレクトリにインストールします。 + +Vimの様々な機能を有効/無効にするには、'make'を実行する前に'configure'コマンド +でフラグを設定します。'configure'で指定できるオプションのリストを次のコマンド +で表示することができます: > + + $ configure -help +< +訳注: --help の間違い? + +さらなる情報については以下を参照してください > + + :help install +< + *faq-35.2* +35.2. Unixでホームディレクトリなど、デフォルトのディレクトリ以外にVimをインス + トールするには? + +デフォルトのインストールディレクトリ以外にインストールするには、configureスク +リプトを実行する際に--prefixオプションでディレクトリを指定します。 > + + $ ./configure --prefix=/users/xyz +< +configureスクリプトに様々な引数を与えることによって、Vimの色々な機能を有効/無 +効にできます。それらのオプションについてのさらなる情報については、次を実行して +ください。 > + + $ ./configure --help +< +さらなる情報については以下を参照してください > + + :help install-home + :help install +< + *faq-35.3* +35.3. MS-Windowsシステム上でVimをソースからビルドするには? + +MS-Windowsシステム上では、Visual C++またはBorland C++またはMing GCCコンパイラ +またはcygwin gccコンパイラのどれかを使ってVimをビルドすることができます。 +MS-Windows用にVimをソースからビルドするには次のステップに従ってください: + +- ソース(vim##src.zip)、ランタイム(vim##rt.zip)とその他(vim-##-extra.tar.gz)の + アーカイブをftp://ftp.vim.org/pub/vim/pcからダウンロードします。 + +訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ +訳注: (vim-7.0.tar.bz2)にして公開されている。 + +- アーカイブをディレクトリ(例: c:\vimsrc)に展開します。 +- コンパイラに応じたMakefileを使います。Visual C++用にはMake_mvc.mak、Borland + C++用にはMake_bc5.mak、Ming GCC用にはMake_ming.mak、cygwin gcc用には + Make_cyg.makを使います。 + +VimのGUI版とコンソール版のどちらをビルドしたいかによって、Makefileに異なる引数 +を与えなければなりません。ソースのビルドに成功したら、vim.exeやgvim.exeをラン +タイムファイルとともに望みのディレクトリにコピーできます。 + +MS-Windowsシステムで様々なコンパイラを使ってVimをビルドするための情報について +は、以下のサイトを訪れてください: > + + http://mywebpage.netscape.com/SharpPeople/vim/howto/index.html +< +さらなる情報については以下を参照してください > + + :help install +< + *faq-35.4* +35.4. 私がインストールしたVimにはヘルプ、構文ファイル、インデントファイルが欠 + けています。それらのファイルをインストールするには? + +Vimのヘルプ、構文ファイル、インデントファイルやそのほかのランタイムファイルは +Vimランタイムパッケージの一部です。Vimランタイムパッケージをダウンロードしてイ +ンストールする必要があります。例えば、MS-Windows用のVim6.1ランタイムパッケージ +の名前はvim61rt.zipです。 + +訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ +訳注: (vim-7.0.tar.bz2)にして公開されている。 + +さらなる情報については以下を参照してください > + + :help install +< + *faq-35.5* +35.5. Vimをソースからビルドして"make install"でインストールしました。Vimのソー + スディレクトリを残しておく必要はありますか? + +その必要はありません。一度Vimをビルドして元のソースディレクトリ以外のどこか +(例えば/usr/binや/usr/local/bin)にインストールしたら、ソースディレクトリは削除 +してもかまいません。 + + *faq-35.6* +35.6. ある機能がコンパイル時に有効化されているかどうかを知るには? + +":version"を使えば、ある機能がコンパイル時に有効化されているかどうかを知ること +ができます。有効化されている機能の前には"+"がつきます。有効化されていない機能 +の前には"-"がつきます。 + +スクリプトの中で、ある機能の存在を判定したい場合は、関数has()を使います: > + + if has("menu") + " Set up some menus + endif +< +さらなる情報については以下を参照してください > + + :help :version + :help +feature-list + :help has() +< + *faq-35.7* +35.7. GUI機能なしでVimをビルドすることはできますか? + +できます。GUI機能を含めて、Vimの機能の多くは任意に有効化/無効化してビルドする +ことができます。 + +さらなる情報については以下を参照してください > + + :help install +< + *faq-35.8* +35.8. Unixシステム上でVimをビルドするとき、"undefined reference to + term_set_winsize"というエラーが出ます。これを解決するには? + +ビルド処理がtermlibまたはtermcapまたはncursesライブラリを見つけられないときこ +のエラーが出ます。このエラーを解決するには、ncurses-devパッケージをインストー +ルしなければなりません。 + + *faq-35.9* +35.9. GTK 2.03を使おうとしているのですが、Vimのconfigureがgtk-configがないとの + メッセージを出します。しかしGTK2は一般的なpkg-configを使うようになったの + で、これは正しいのです。gtk用のインクルードファイルとライブラリのリスト + を出力するpkg-configならありますが、なぜかconfigureスクリプトはこれを使 + ってくれません。 + +次のシェルスクリプトにgtk-configと名前をつけて使ってください: > + + #!/bin/sh + pkg-config gtk+-2.0 $1 $2 +< + +============================================================================= + *faq-36* +SECTION 36 - 様々な事柄 + + *faq-36.1* +36.1. Vimでバイナリフィルを編集するには? + +以下のオプションを設定すればVimでバイナリファイルを編集することができます: > + + :set binary + :set display=uhex +< +コマンドラインオプション"-b"を使ってもバイナリファイルを編集することができます +: > + + $ vim -b <binary_file_name> +< +また、バイナリファイルを編集するのにxxdユーティリティ(Vimのディストリビューシ +ョンの一部)を使うこともできます。 + +さらなる情報については以下を参照してください > + + :help 23.4 + :help edit-binary + :help hex-editing + :help -b + :help 'binary' + :help 'endofline' + :help 'display' +< + *faq-36.2* +36.2. ビジュアルエラーフラッシュとエラービープを無効にするには? + +次のコマンドを使うと、ビジュアルエラーフラッシュとエラービープを両方無効にする +ことができます: > + + :set visualbell t_vb= +< +さらなる情報については以下を参照してください > + + :help 'visualbell' + :help 'errorbells' + :help t_vb +< + *faq-36.3* +36.3. バッファに表示されている文字のアスキーコードを表示するには? + +'ga'コマンドを使うと、表示されている文字のアスキーコードを表示することができま +す。 + +さらなる情報については以下を参照してください > + + :help ga + :help :ascii +< + *faq-36.4* +36.4. コマンドのカウントとして0を使うことはできますか? + +"0"はそれ自身がコマンドであるため(現在行の1桁目に移動する)、コマンドのカウント +として使うことはできません。 + +さらなる情報については以下を参照してください > + + :help 0 + :help count +< + *faq-36.5* +36.5. Vimの起動時の画面を表示させなくするには? + +Vimの起動時の画面を表示させなくするには、'shortmess'にフラグ'I'を追加します: > + + :set shortmess+=I +< +さらなる情報については以下を参照してください > + + :help :intro + :help 'shortmess' +< + *faq-36.6* +36.6. "hit enter to continue"プロンプトを避けるには? + +あなたに読んでほしいメッセージがあるのに画面が再描画されようとしているとき、 +"hit enter to continue"プロンプトが出ます。'shortmess'にフラグ'T'を加えると、 +全てのメッセージを短縮することができます。するとhit-enterプロンプトを避けるこ +とができます: > + + :set shortmess+=T +< +また、'cmdheight'を設定するとコマンドラインの高さを上げることができます: > + + :set cmdheight=2 +< +さらなる情報については以下を参照してください > + + :help hit-enter + :help avoid-hit-enter + :help 'shortmess' + :help 'cmdheight' +< + *faq-36.7* +36.7. コマンドラインからVimを起動して一連のファイルに対して一連のコマンドを + 実行するには? + +コマンドラインからVimを起動して一連のファイルに対して一連のコマンドを実行する +にはいくつかの方法があります。コマンドラインオプション"-c"でコマンドを指定する +ことができます: > + + $ vim -c "<ex_command_1>" -c "<ex_command_2>" *.txt +< +コマンドラインオプション"-c"で指定されたexコマンドは順番に1つずつ実行されま +す。また、exコマンドを"|"で区切れば1つの"-c"で指定することもできます: > + + $ vim -c "<ex_command_1> | <ex_command_2>" *.txt +< +上のコマンドでexコマンドが失敗した場合は残りのexコマンドは全て実行されません。 + +例えば、コマンドラインからファイル中の"ABC"を"DEF"で置換するには次のコマンドを +使います: > + + $ vim -c "%s/ABC/DEF/ge | update" myfile.txt +< +コマンドラインから複数のファイル中の"ABC"を"DEF"で置換するには次のコマンドを使 +います: > + + $ vim -c "argdo %s/ABC/DEF/ge | update" *.txt +< +一連のコマンドをファイルに保存しておき、コマンドラインオプション"-s"を使ってフ +ァイルに対してそのコマンドを実行することもできます。例えば、mycmds.txtに一連の +コマンドを保存してあるとします。このとき次のようにできます: > + + $ vim -s mycmds.txt *.pl +< +さらなる情報については以下を参照してください > + + :help -c + :help -s +< + *faq-36.8* +36.8. インサートモードから抜けることなくノーマルモードコマンドを実行するには? + +CTRL-Oに続けてノーマルモードコマンドを1つ入力すると、インサートモードから抜け +ることなくノーマルモードコマンドを実行することができます。 + +1つ以上のノーマルモードコマンドを実行するにはCTRL-Lを押し、続けて任意個のノー +マルモードコマンドをタイプします。インサートモードに抜けるには<Esc>を押しま +す。 + +訳注: CTRL-Lを使うにはオプション'insertmode'をオンにしていなければならない。 + +さらなる情報については以下を参照してください > + + :help i_CTRL-O + :help i_CTRL-L +< + +============================================================================= + *faq-37* +SECTION 37 - ユニコード +Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> + + *faq-37.1* +37.1. Vimでユニコードのファイルを作ることはできますか? + +できます。あなたが利用できるキーボードとフォントによって多少複雑になるかもしれ +ませんが、常にどんなユニコードコードポイントでも(中には不正なものも)エンコード +することができます。ユニコードのファイルを作成するには、Vimをコンパイル時オプ +ション"+multi_byte"つきでコンパイルしていなければなりません。ユニコードについ +てのさらなる情報は以下のサイトから入手できます: > + + http://www.unicode.org + http://www.cl.cam.ac.uk/~mgk25/unicode.html +< +さらなる情報については以下を参照してください > + + :help multibyte + :help usr_45.txt +< + *faq-37.2* +37.2. ユニコードのファイルを編集するにあたって特に重要な設定は? + +最も重要なのは様々な"encoding"のオプションです。つまり、'encoding', +'fileencoding', 'fileencodings', 'termencoding'です。ブール値のオプション +'bomb'も重要です。 + +さらなる情報については以下を参照してください > + + :help 'encoding' + :help 'fileencoding' + :help 'fileencodings' + :help 'termencoding' + :help 'bomb' +< + *faq-37.3* +37.3. オプション'encoding'とは何ですか? + +基本的にオプション'encoding'はVimがデータを内部的にどう表現するかを定義 +します。しかし、ユニコードエンコーディングは全て内部的にはutf-8で表現され、 +(必要ならば)読み書きの際に変換されます。 + +さらなる情報については以下を参照してください > + + :help 'encoding' +< + *faq-37.4* +37.4. Vimでは様々なユニコードエンコーディングをどう表記しますか? + +Utf-8はutf-8またはutf8と書きます。utf-16はucs-2またはucs2と書きます。utf-32は +ucs-4またはucs4と書きます。エンディアンを指定することもできます(utf-8はエンディ +アンによらないのでそれ以外)。末尾に"le"をつけるとリトルエンディアンになり、 +"be"をつけるとビッグエンディアンになります。エンディアンの指定なしにucs-2や +ucs-4のエンコーディングでファイルを作成すると、Vimはあなたのマシンに応じて適切 +な方を選択します。 + +さらなる情報については以下を参照してください > + + :help encoding-names + :help encoding-values + :help encoding-table +< + *faq-37.5* +37.5. バイト順マークの有無を指定するには? + +'fileencodings'が"ucs-bom"を含む場合、ファイルを読み込むときにバイト順マークの +チェックが行われます。オプション'bomb'がオンなら、ファイルを書き込むときに、そ +のファイルのエンコーディングを保証するバイト順マークを書き込みます。 + +さらなる情報については以下を参照してください > + + :help 'fileencodings' + :help 'bomb' +< + *faq-37.6* +37.6. オプション'fileencoding'とは何ですか? + +オプション'fileencoding'はファイルを書き込むときに使うエンコーディングを定義し +ます。これが空の場合は、'encoding'の値が使われます。 + +さらなる情報については以下を参照してください > + + :help 'fileencoding' +< + *faq-37.7* +37.7. オプション'fileencodings'とは何ですか? + +オプション'fileencodings'はVimが既存のファイルを開くときに使う検査方法を定義し +ます。このオプションはカンマで区切られたエンコーディングのリストです。特別な名 +前"ucs-bom"を含めると、バイト順マークの存在をチェックするようになります。 +しかし、これが"utf-8"の後に来ると認識されなくなります。通常は、"ucs-bom"を含め +るならば、リストの最初に書くべきです。 + +Vimはファイルを開くとき、そのファイルを'fileencodings'内にリストされたエンコー +ディングに対してチェックします。もしここでマッチするものがなければ +'fileencoding'が空文字列に設定されます。つまり、'encoding'の値が使われます。 + +さらなる情報については以下を参照してください > + + :help 'fileencodings' + :help 'encoding' +< + *faq-37.8* +37.8. オプション'termencoding'とは何ですか? + +オプション'termencoding'は、あなたがタイプしたデータをキーボードがどのようにエ +ンコードするかを定義します。これが空の場合は'encoding'と同じ値であるとされま +す。通常、このオプションはあなたのロカールに合うように設定するべきです。 + +さらなる情報については以下を参照してください > + + :help 'termencoding' + :help locale +< + *faq-37.9* +37.9. オプション'bomb'とは何ですか? + +'fileencodings'に"ucs-bom"が含まれているときファイルを読み込むと、そのファイル +の先頭にバイト順マークがあるかどうかによって'bomb'がオン/オフに設定されます。 +'bomb'がオンになっていると、ファイル書き込み時に、バイト順マークが書き込まれま +す。このバイト順マーク書き込みを手動で設定することもできます。 + +さらなる情報については以下を参照してください > + + :help 'bomb' +< + *faq-37.10* +37.10. これらのオプションの典型的な例はどこにありますか? + +これらを別な言葉で例をつけて説明した"tip"がここにあります。 +http://vim.sourceforge.net/tip_view.php?tip_id=246 . + + *faq-37.11* +37.11. ユニコードの文字を挿入するには? + +いくつかの方法があります: + +- キーボード上にある文字は普通にタイプできます。フランスのキーボードの曲線ア + クセント記号のように"dead-key"プリフィックスが必要なものもです。 +- ダイグラフが定義されている文字は、<Ctrl-K>に続けて2つの文字をタイプすること + で入力できます。 +- オプション'digraph'がセットされていると、ダイグラフが定義されている文字は + <char1><BS><char2>のようにして入力できます。 +- どんな文字も<Ctrl-V>プリフィックスを使えば入力できます(<Ctrl-V>がクリップボ + ードからペーストするようにマップされている場合は<Ctrl-Q>です)。 + +さらなる情報については以下を参照してください。 > + + :help digraphs + :help 'digraph' + :help i_CTRL-V_digit +< + *faq-37.12* +37.12. どのダイグラフがどの文字に定義されているかを知るには? + +まず'encoding'を適切に(例えばutf-8に)設定してください。それから:digraphsを使っ +て現在定義されているダイグラフを表示します。 + +さらなる情報については以下を参照してください。 > + + :help :digraphs + :help 'encoding' +< + +============================================================================= + vim:tw=78:ts=8:ft=help:norl:list: diff --git a/vim_faq/vim_faq.txt b/vim_faq/vim_faq.txt new file mode 100644 index 000000000..fe19704fc --- /dev/null +++ b/vim_faq/vim_faq.txt @@ -0,0 +1,7569 @@ +*vim_faq.txt* Frequently Asked Questions + +For instructions on installing this file, type > + :help add-local-help +inside Vim. + +Last updated on: 17 October 2004 + + VIM REFERENCE MANUAL by: Yegappan Lakshmanan + +Frequently Asked Questions *faq* *FAQ* + +This Vim FAQ is created from the questions and answers posted to the +vim@vim.org user mailing list and the comp.editors newsgroup. There are +several ways to solve a problem in Vim. This FAQ gives one of those several +possibilities. You can explore the other ways using the information and +links given in this FAQ. The credit for the answers in this FAQ goes to +Peppe, Benji, Charles Campbell and numerous others. + *faq-index* +INDEX + *faq-general-information* +SECTION 1 - GENERAL INFORMATION +|faq-1.1| What is Vim? +|faq-1.2| Who wrote Vim? +|faq-1.3| Is Vim compatible with Vi? +|faq-1.4| What are some of the improvements of Vim over Vi? +|faq-1.5| Is Vim free? + *faq-resources* +SECTION 2 - RESOURCES +|faq-2.1| Where can I learn more about Vim? +|faq-2.2| Is there a mailing list available? +|faq-2.3| Is there an archive available for the Vim mailing lists? +|faq-2.4| Where can I get the Vim user manual in HTML/PDF/PS format? +|faq-2.5| I have a "xyz" (some) problem with Vim. How do I determine it is a + problem with my setup or with Vim? +|faq-2.6| Where can I report bugs? +|faq-2.7| Where can the FAQ be found? +|faq-2.8| What if I don't find an answer in this FAQ? +|faq-2.9| I have a patch for implementing a Vim feature. Where do I send the + patch? +|faq-2.10| I have a Vim tip or developed a new Vim + syntax/indent/filetype/compiler plugin or developed a new script + or a colorscheme. Is there a public website where I can upload + this? + *faq-availability* +SECTION 3 - AVAILABILITY +|faq-3.1| What is the latest version of Vim? +|faq-3.2| Where can I find the latest version of Vim? +|faq-3.3| What platforms does it run on? +|faq-3.4| Where can I download the latest version of the Vim runtime files? + *faq-help* +SECTION 4 - HELP +|faq-4.1| How do I use the help files? +|faq-4.2| How do I search for a keyword in the Vim help files? +|faq-4.3| I am getting an error message E123, what did I do wrong? +|faq-4.4| Where can I read about the various modes in Vim? +|faq-4.5| How do I generate the Vim help tags file after adding a new Vim + help file? +|faq-4.6| Can I use compressed versions of the help files? + *faq-editing-a-file* +SECTION 5 - EDITING A FILE +|faq-5.1| How do I load a file in Vim for editing? +|faq-5.2| How do I save the current file in another name (save as) and edit + a new file? +|faq-5.3| How do I change the current directory to the directory of the + current file? +|faq-5.4| How do I write a file without the line feed (EOL) at the end of + the file? +|faq-5.5| How do I configure Vim to open a file at the last edited location? +|faq-5.6| When editing a file in Vim, which is being changed by an external + application, Vim opens a warning window (like the confirm dialog) + each time a change is detected. How do I disable this warning? +|faq-5.7| How do I edit a file whose name is under the cursor? +|faq-5.8| How do I reload/re-edit the current file? +|faq-5.9| How do I autosave a file periodically? +|faq-5.10| How do I open a file in read-only mode? + *faq-editing-multiple-files* +SECTION 6 - EDITING MULTIPLE FILES +|faq-6.1| How do I open multiple files at once from within Vim? +|faq-6.2| How do I switch between multiple files/buffers in Vim? +|faq-6.3| How do I open several files in Vim, with each file in a separate + window? +|faq-6.4| How do I configure Vim to autoload several files at once similar + to "work-sets" or "projects"? +|faq-6.5| Is it possible to open multiple top level windows in a single + instance of Vim similar to Nedit or emacs? +|faq-6.6| How do I browse/explore directories from within Vim? +|faq-6.7| How do I edit files over a network using ftp/scp/rcp/http? + *faq-backup* +SECTION 7 - BACKUP +|faq-7.1| When I edit and save files, Vim creates a file with the same name + as the original file and a "~" character at the end. How do I stop + Vim from creating this file (or) How do I disable the Vim backup + file feature? +|faq-7.2| How do I configure Vim to store all the backup files in a + particular directory? +|faq-7.3| When I save a file with Vim, the file permissions are changed. + How do I configure Vim to save a file without changing the file + permissions? + *faq-buffers* +SECTION 8 - BUFFERS +|faq-8.1| I have made some modifications to a buffer. How do I edit another + buffer without saving the modified buffer and also without losing + the modifications? +|faq-8.2| How do I configure Vim to auto-save a modified buffer when + switching to another buffer? +|faq-8.3| How do I replace the buffer in the current window with a blank + buffer? +|faq-8.4| Is there a keyboard shortcut to load a buffer by the buffer + number? +|faq-8.5| How do I open all the current buffers in separate windows? +|faq-8.6| How do I close (delete) a buffer without exiting Vim? +|faq-8.7| I have several buffers opened with ":e filename". How do I close + one of the buffers without exiting Vim? +|faq-8.8| When I use the command ":%bd" to delete all the buffers, not all + the buffers are deleted. Why? +|faq-8.9| How do I display the buffer number of the current buffer/file? +|faq-8.10| How do I delete a buffer without closing the window in which the + buffer is displayed? +|faq-8.11| How do I map the tab key to cycle through and open all the + buffers? + *faq-windows* +SECTION 9 - WINDOWS +|faq-9.1| What is the difference between a Vim window and a buffer? +|faq-9.2| How do I increase the width of a Vim window? +|faq-9.3| How do I zoom into or out of a window? +|faq-9.4| How do I execute an ex command on all the open buffers or open + windows or all the files in the argument list? + *faq-motion* +SECTION 10 - MOTION +|faq-10.1| How do I jump to the beginning (first line) or end (last line) of + a file? +|faq-10.2| In insert mode, when I press the <Esc> key to go to command mode, + the cursor moves one character to the left (except when the cursor + is on the first character of the line). Is it possible to change + this behavior to keep the cursor at the same column? +|faq-10.3| How do I configure Vim to maintain the horizontal cursor position + when scrolling with the <Page Up>, <Page Down>, etc keys? +|faq-10.4| Some lines in a file are more than the screen width and they are + all wrapped. When I use the j, k keys to move from one line to the + next, the cursor is moved to the next line in the file instead of + the next line on the screen. How do I move from one screen line to + the next? +|faq-10.5| What is the definition of a sentence, paragraph and section in + Vim? +|faq-10.6| How do I jump to beginning or end of a sentence, paragraph or a + section? +|faq-10.7| I have lines in a file that extends beyond the right extent of the + screen. How do I move the Vim view to the right to see the text + off the screen? +|faq-10.8| How do I scroll two or more buffers simultaneously? +|faq-10.9| When I use my arrow keys, Vim changes modes, inserts weird + characters in my document but doesn't move the cursor properly. + What's going on? +|faq-10.10| How do I configure Vim to move the cursor to the end of the + previous line, when the left arrow key is pressed and the cursor + is currently at the beginning of a line? +|faq-10.11| How do I configure Vim to stay only in insert mode (modeless + editing)? +|faq-10.12| How do I display some context lines when scrolling text? +|faq-10.13| How do I go back to previous cursor locations? + *faq-searching-text* +SECTION 11 - SEARCHING TEXT +|faq-11.1| After I searched for a text with a pattern, all the matched text + stays highlighted. How do I turn off the highlighting + temporarily/permanently? +|faq-11.2| How do I enter a carriage return character in a search pattern? +|faq-11.3| How do I search for the character ^M? +|faq-11.4| How can I search/replace characters that display as '~R', '~S', + etc.? +|faq-11.5| How do I highlight all the non-printable characters in a file? +|faq-11.6| How do I search for whole words in a file? +|faq-11.7| How do I search for the current word under the cursor? +|faq-11.8| How do I search for a word without regard to the case (uppercase + or lowercase)? +|faq-11.9| How do I search for words that occur twice consecutively? +|faq-11.10| How do I count the number of times a particular word occurs in a + buffer? +|faq-11.11| How do I place the cursor at the end of the matched word when + searching for a pattern? +|faq-11.12| How do I search for an empty line? +|faq-11.13| How do I search for a line containing only a single character? +|faq-11.14| How do I search and replace a string in multiple files? +|faq-11.15| I am using the ":s" substitute command in a mapping. When a + search for a pattern fails, the map terminates. I would like the + map to continue processing the next command, even if the + substitute command fails. How do I do this? +|faq-11.16| How do I search for the n-th occurrence of a character in a + line? +|faq-11.17| How do I replace a tab (or any other character) with a hard + return (newline) character? +|faq-11.18| How do I search for a character by its ASCII value? +|faq-11.19| How do I search for long lines? +|faq-11.20| How do I display all the lines in the current buffer that + contain a specified pattern? +|faq-11.21| How do I search for a text string that spans multiple lines? +|faq-11.22| How do I search for a pattern only within a range of lines + in a buffer? + *faq-changing-text* +SECTION 12 - CHANGING TEXT +|faq-12.1| How do I delete all the trailing white space characters (SPACE + and TAB) at the end of all the lines in a file? +|faq-12.2| How do I replace all the occurrences of multiple consecutive + space characters to a single space? +|faq-12.3| How do I reduce a range of empty lines into one line only? +|faq-12.4| How do I delete all blank lines in a file? How do I remove all + the lines containing only space characters? +|faq-12.5| How do I copy/yank the current word? +|faq-12.6| How do I yank text from one position to another position within a + line, without yanking the entire line? +|faq-12.7| When I yank some text into a register, how do I append the text + to the current contents of the register? +|faq-12.8| How do I yank a complete sentence that spans over more than one + line? +|faq-12.9| How do I yank all the lines containing a pattern into a buffer? +|faq-12.10| How do I delete all the lines in a file that does not contain a + pattern? +|faq-12.11| How do I add a line before each line with "pattern" in it? +|faq-12.12| Is there a way to operate on a line if the previous line + contains a particular pattern? +|faq-12.13| How do I execute a command on all the lines containing a + pattern? +|faq-12.14| Can I copy the character above the cursor to the current cursor + position? +|faq-12.15| How do I insert a blank line above/below the current line + without entering insert mode? +|faq-12.16| How do I insert the name of current file into the current + buffer? +|faq-12.17| How do I insert the contents of a Vim register into the current + buffer? +|faq-12.18| How do I move the cursor past the end of line and insert some + characters at some columns after the end of the line? +|faq-12.19| How to replace the word under the cursor (say: junk) with + "foojunkbar" in Vim? +|faq-12.20| How do I replace a particular text in all the files in a + directory? +|faq-12.21| I have some numbers in a file. How do I increment or decrement + the numbers in the file? +|faq-12.22| How do I reuse the last used search pattern in a ":substitute" + command? +|faq-12.23| How do I change the case of a string using the ":substitute" + command? +|faq-12.24| How do I enter characters that are not present in the keyboard? +|faq-12.25| Is there a command to remove any or all digraphs? +|faq-12.26| In insert mode, when I press the backspace key, it erases only + the characters entered in this instance of insert mode. How do I + erase previously entered characters in insert mode using the + backspace key? +|faq-12.27| I have a file which has lines longer than 72 characters + terminated with "+" and wrapped to the next line. How can I + quickly join the lines? +|faq-12.28| How do I paste characterwise yanked text into separate lines? +|faq-12.29| How do I change the case (uppercase, lowercase) of a word or + a character or a block of text? +|faq-12.30| How do I enter ASCII characters that are not present in the + keyboard? +|faq-12.31| How do I replace non-printable characters in a file? +|faq-12.32| How do I remove duplicate lines from a buffer? +|faq-12.33| How do I prefix all the lines in a file with the corresponding + line numbers? +|faq-12.34| How do I exchange (swap) two characters or words or lines? + *faq-completion-in-insert-mode* +SECTION 13 - COMPLETION IN INSERT MODE +|faq-13.1| How do I complete words or lines in insert mode? +|faq-13.2| How do I complete file names in insert mode? +|faq-13.3| I am using CTRL-P/CTRL-N to complete words in insert mode. How do + I complete words that occur after the just completed word? + *faq-text-formatting* +SECTION 14 - TEXT FORMATTING +|faq-14.1| How do I format a text paragraph so that a new line is inserted + at the end of each wrapped line? +|faq-14.2| How do I format long lines in a file so that each line contains + less than 'n' characters? +|faq-14.3| How do I join short lines to the form a paragraph? +|faq-14.4| How do I format bulleted and numbered lists? +|faq-14.5| How do I indent lines in insert mode? +|faq-14.6| How do I format/indent an entire file? +|faq-14.7| How do I increase or decrease the indentation of the current + line? +|faq-14.8| How do I indent a block/group of lines? +|faq-14.9| When I indent lines using the > or < key, the standard 8-tabstops + are used instead of the current 'tabstop' setting. Why? +|faq-14.10| How do I turn off the automatic indentation of text? +|faq-14.11| How do I configure Vim to automatically set the 'textwidth' + option to a particular value when I edit mails? +|faq-14.12| Is there a way to make Vim auto-magically break lines? +|faq-14.13| I am seeing a lot of ^M symbols in my file. I tried setting the + 'fileformat' option to 'dos' and then 'unix' and then 'mac'. + None of these helped. How can I hide these symbols? +|faq-14.14| When I paste some text into a Vim buffer from another + application, the alignment (indentation) of the new text is + messed up. How do I fix this? +|faq-14.15| When there is a very long wrapped line (wrap is "on") and a line + doesn't fit entirely on the screen it is not displayed at all. + There are blank lines beginning with '@' symbol instead of + wrapped line. If I scroll the screen to fit the line the '@' + symbols disappear and the line is displayed again. What Vim + setting control this behavior? +|faq-14.16| How do I convert all the tab characters in a file to space + characters? +|faq-14.17| What Vim options can I use to edit text that will later go to a + word processor? + *faq-visual-mode* +SECTION 15 - VISUAL MODE +|faq-15.1| How do I do rectangular block copying? +|faq-15.2| How do I delete or change a column of text in a file? +|faq-15.3| How do I apply an ex-command on a set of visually selected lines? +|faq-15.4| How do I execute an ex command on a column of text selected in + Visual block mode? +|faq-15.5| How do I select the entire file in visual mode? +|faq-15.6| When I visually select a set of lines and press the > key to + indent the selected lines, the visual mode ends. How can I + reselect the region for further operation? (or) How do I + re-select the last selected visual area again? +|faq-15.7| How do I jump to the beginning/end of a visually selected region? +|faq-15.8| When I select text with mouse and then press : to enter an ex + command, the selected text is replaced with the : character. How + do I execute an ex command on a text selected using the mouse + similar to the text selected using the visual mode? +|faq-15.9| When I select a block of text using the mouse, Vim goes into + selection mode instead of Visual mode. Why? + *faq-command-line-mode* +SECTION 16 - COMMAND-LINE MODE +|faq-16.1| How do I use the name of the current file in the command mode or + an ex command line? +|faq-16.2| How do I edit the text in the Vim command-line effectively? +|faq-16.3| How do I switch from Vi mode to Ex mode? +|faq-16.4| How do I copy the output from an ex-command into a buffer? +|faq-16.5| When I press the tab key to complete the name of a file in the + command mode, if there are more than one matching file names, + then Vim completes the first matching file name and displays a + list of all matching filenames. How do I configure Vim to only + display the list of all the matching filenames and not complete + the first one? +|faq-16.6| How do I copy text from a buffer to the command line and from the + command line to a buffer? +|faq-16.7| How do I put a command onto the command history without executing + it? +|faq-16.8| How do I increase the height of the command-line? + *faq-viminfo* +SECTION 17 - VIMINFO +|faq-17.1| When I invoke Vim, I get error messages about illegal characters + in the viminfo file. What should I do to get rid of these + messages? +|faq-17.2| How do I disable the viminfo feature? +|faq-17.3| How do I save and use Vim marks across Vim sessions? + *faq-remote-editing* +SECTION 18 - REMOTE EDITING +|faq-18.1| How do I open a file with existing instance of gvim? What + happened to the Vim 5.x OpenWithVim.exe and SendToVim.exe files? +|faq-18.2| How do I send a command to a Vim server to write all buffers to + disk? +|faq-18.3| Where can I get the documentation about the Vim remote server + functionality? + *faq-options* +SECTION 19 - OPTIONS +|faq-19.1| How do I configure Vim in a simple way? +|faq-19.2| How do I toggle the value of an option? +|faq-19.3| How do I set an option that affects only the current + buffer/window? +|faq-19.4| How do I use space characters for a Vim option value? +|faq-19.5| Can I add (embed) Vim option settings to the contents of a file? +|faq-19.6| How do I display the line numbers of all the lines in a file? +|faq-19.7| How do I change the width of the line numbers displayed using the + "number" option? +|faq-19.8| How do I display (view) all the invisible characters like space, + tabs and newlines in a file? +|faq-19.9| How do I configure Vim to always display the current line and + column number? +|faq-19.10| How do I display the current Vim mode? +|faq-19.11| How do I configure Vim to show pending/partial commands on the + status line? +|faq-19.12| How do I configure the Vim status line to display different + settings/values? +|faq-19.13| How do I configure Vim to display status line always? +|faq-19.14| How do I make a Vim setting persistent across different Vim + invocations/instances/sessions? +|faq-19.15| Why do I hear a beep (why does my window flash) about 1 second + after I hit the Escape key? +|faq-19.16| How do I make the 'c' and 's' commands display a '$' instead of + deleting the characters I'm changing? +|faq-19.17| How do I remove more than one flag using a single ":set" command + from a Vim option? + *faq-mapping-keys* +SECTION 20 - MAPPING KEYS +|faq-20.1| How do I know what a key is mapped to? +|faq-20.2| How do list all the user-defined key mappings? +|faq-20.3| How do I unmap a key? +|faq-20.4| I am not able to create a mapping for the <xxx> key. What is + wrong? +|faq-20.5| How do I map the numeric keypad keys? +|faq-20.6| How do I create a mapping that works only in visual mode? +|faq-20.7| In a Vim script, how do I know which keys to use for my mappings, + so that the mapped key will not collide with an already used key? +|faq-20.8| How do I map the escape key? +|faq-20.9| How do I map a key to perform nothing? +|faq-20.10| I want to use the Tab key to indent a block of text and + Shift-Tab key to unindent a block of text. How do I map the keys + to do this? This behavior is similar to textpad, visual studio, + etc. +|faq-20.11| In my mappings the special characters like <CR> are not + recognized. How can I configure Vim to recognize special + characters? +|faq-20.12| How do I use the '|' to separate multiple commands in a map? +|faq-20.13| If I have a mapping/abbreviation whose ending is the beginning of + another mapping/abbreviation, how do I keep the first from + expanding into the second one? +|faq-20.14| Why does it take a second or more for Vim to process a key, + sometimes when I press a key? +|faq-20.15| How do I map a key to run an external command using a visually + selected text? +|faq-20.16| How do I map the Ctrl-I key while still retaining the + functionality of the <Tab> key? + *faq-abbreviations* +SECTION 21 - ABBREVIATIONS +|faq-21.1| How do I auto correct misspelled words? +|faq-21.2| How do I create multi-line abbreviations? +|faq-21.3| When my abbreviations are expanded, an additional space character + is added at the end of the expanded text. How do I avoid this + character? +|faq-21.4| How do I insert the current date/time stamp into the file? +|faq-21.5| How do I prevent an abbreviation from expanding in insert mode? + *faq-record-and-playback* +SECTION 22 - RECORD AND PLAYBACK +|faq-22.1| How do I repeat an editing operation (insertion, deletion, paste, + etc)? +|faq-22.2| How I record and repeat a set of key sequences? +|faq-22.3| How do I edit/modify a recorded set of key sequences? +|faq-22.4| How do I write recorded key sequences to a file? +|faq-22.5| I am using register 0 to record my key sequences (i.e. q0 .... + q). In the recorded key sequences, I am yanking some text. After + the first replay of the recorded key sequence, I am no longer + able to play it back. + *faq-autocommands* +SECTION 23 - AUTOCOMMANDS +|faq-23.1| How do I execute a command when I try to modify a read-only file? +|faq-23.2| How do I execute a command every time when entering a buffer? +|faq-23.3| How do I execute a command every time when entering a window? +|faq-23.4| From an autocmd, how can I determine the name of the file or the + buffer number for which the autocommand is executed? +|faq-23.5| How do I automatically save all the changed buffers whenever Vim + loses focus? +|faq-23.6| How do I execute/run a function when Vim exits to do some + cleanup? + *faq-syntax-highlight* +SECTION 24 - SYNTAX HIGHLIGHT +|faq-24.1| How do I turn off/on syntax highlighting? +|faq-24.2| How do I change the background and foreground colors used by Vim? +|faq-24.3| How do I change the highlight colors to suit a dark/light + background? +|faq-24.4| How do I change the color of the line numbers displayed when the + ":set number" command is used? +|faq-24.5| How do I change the background color used for a Visually selected + block? +|faq-24.6| How do I highlight the special characters (tabs, trailing spaces, + end of line, etc) displayed by the 'list' option? +|faq-24.7| How do I specify a colorscheme in my .vimrc/.gvimrc file, so that + Vim uses the specified colorscheme everytime? +|faq-24.8| Vim syntax highlighting is broken. When I am editing a file, some + parts of the file is not syntax highlighted or syntax highlighted + incorrectly. +|faq-24.9| Is there a built-in function to syntax-highlight the + corresponding matching bracket? +|faq-24.10| How do I turn off the C comment syntax highlighting? +|faq-24.11| How do I add my own syntax extensions to the standard syntax + files supplied with Vim? +|faq-24.12| How do I replace a standard syntax file that comes with the Vim + distribution with my own syntax file? +|faq-24.13| How do I highlight all the characters after a particular column? +|faq-24.14| How do I convert a source file (.c, .h, etc) with the Vim syntax + highlighting into a HTML file? +|faq-24.15| How do I list the definition of all the current highlight + groups? + *faq-vim-script-writing* +SECTION 25 - VIM SCRIPT WRITING +|faq-25.1| How do I list the names of all the scripts sourced by Vim? +|faq-25.2| How do I debug Vim scripts? +|faq-25.3| How do I locate the script/plugin which sets a Vim option? +|faq-25.4| I am getting some error/informational messages from Vim (possibly + when running a script), the messages are cleared immediately. How + do I display the messages again? +|faq-25.5| How do I save and restore a plugin specific information across + Vim invocations? +|faq-25.6| How do I start insert mode from a Vim function? +|faq-25.7| How do I change the cursor position from within a Vim function? +|faq-25.8| How do I check the value of an environment variable in the .vimrc + file? +|faq-25.9| How do I check whether an environment variable is set or not from + a Vim function? +|faq-25.10| How do I call/use the Vim built-in functions? +|faq-25.11| I am using some normal mode commands in my Vim script. How do I + avoid using the user-defined mappings for these normal mode + commands and use the standard Vim functionality for these normal + mode commands? +|faq-25.12| How do I get a visually selected text into a Vim variable or + register? +|faq-25.13| I have some text in a Vim variable 'myvar'. I would like to use + this variable in a ":s" substitute command to replace a text + 'mytext'. How do I do this? +|faq-25.14| A Vim variable (bno) contains a buffer number. How do I use this + variable to open the corresponding buffer? +|faq-25.15| How do I store the value of a Vim option into a Vim variable? +|faq-25.16| I have copied and inserted some text into a buffer from a Vim + function. How do I indent the inserted text from the Vim + function? +|faq-25.17| How do I get the character under the cursor from a Vim script? +|faq-25.18| How do I get the name of the current file without the extension? +|faq-25.19| How do I get the basename of the current file? +|faq-25.20| How do I get the output from a Vim function into the current + buffer? +|faq-25.21| How do I call external programs from a Vim function? +|faq-25.22| How do I get the return status of a program executed using the + ":!" command? +|faq-25.23| How do I determine whether the current buffer is modified or + not? +|faq-25.24| I would like to use the carriage return character in a normal + command from a Vim script. How do I specify the carriage return + character? +|faq-25.25| How do I split long lines in a Vim script? +|faq-25.26| When I try to "execute" my function using the "execute 'echo + Myfunc()'" command, the cursor is moved to the top of the + current buffer. Why? +|faq-25.27| How do I source/execute the contents of a register? +|faq-25.28| After calling a Vim function or a mapping, when I press the 'u' + key to undo the last change, Vim undoes all the changes made by + the mapping/function. Why? +|faq-25.29| How can I call a function defined with s: (script local + function) from another script/plugin? +|faq-25.30| Is it possible to un-source a sourced script? In otherwords, + reverse all the commands executed by sourcing a script. + *faq-plugins* +SECTION 26 - PLUGINS +|faq-26.1| How do I set different options for different types of files? +|faq-26.2| I have downloaded a Vim plugin or a syntax file or a indent file, + or a color scheme or a filetype plugin from the web. Where should + I copy these files so that Vim will find them? +|faq-26.3| How do I extend an existing filetype plugin? +|faq-26.4| How do I turn off loading the Vim plugins? +|faq-26.5| How do I turn on/off loading the filetype plugins? +|faq-26.6| How do I override settings made in a file type plugin in the + global ftplugin directory for all the file types? +|faq-26.7| How do I disable the Vim directory browser plugin? +|faq-26.8| How do I set the filetype option for files with names matching a + particular pattern or depending on the file extension? + *faq-editing-program-files* +SECTION 27 - EDITING PROGRAM FILES +|faq-27.1| How do I enable automatic indentation for C/C++ files? +|faq-27.2| How do I configure the indentation used for C/C++ files? +|faq-27.3| How do I turn off the automatic indentation feature? +|faq-27.4| How do I change the number of space characters used for the + automatic indentation? +|faq-27.5| I am editing a C program using Vim. How do I display the + definition of a macro or a variable? +|faq-27.6| I am editing a C program using Vim. How do I jump to the + beginning or end of a code block from within the block? +|faq-27.7| Is there a way to turn off the "//" comment auto-insertion + behavior for C++ files? If I'm sitting on a line beginning with + "//", then I open a new line above or below it, Vim automatically + inserts new "//" chars. +|faq-27.8| How do I add the comment character '#' to a set of lines at the + beginning of each line? +|faq-27.9| How do I edit a header file with the same name as the + corresponding C source file? +|faq-27.10| How do I automatically insert comment leaders while typing + comments? + *faq-quickfix* +SECTION 28 - QUICKFIX +|faq-28.1| How do I build programs from Vim? +|faq-28.2| When I run the make command in Vim I get the errors listed as the + compiler compiles the program. When it finishes this list + disappears and I have to use the :clist command to see the error + message again. Is there any other way to see these error + messages? + *faq-folding* +SECTION 29 - FOLDING +|faq-29.1| How do I extend the Vim folding support? +|faq-29.2| When I enable folding by setting the 'foldmethod' option, all the + folds are closed. How do I prevent this? +|faq-29.3| How do I control how many folds will be opened when I start + editing a file? +|faq-29.4| How do I open and close folds using the mouse? +|faq-29.5| How do I change the text displayed for a closed fold? +|faq-29.6| How do I store and restore manually created folds across + different Vim invocations? + *faq-vim-with-external-applications* +SECTION 30 - VIM WITH EXTERNAL APPLICATIONS +|faq-30.1| Can I run a shell inside a Vim window? +|faq-30.2| How do I pass the word under the cursor to an external command? +|faq-30.3| How do I get the output of a shell command into a Vim buffer? +|faq-30.4| How do I pipe the contents of the current buffer to an external + command and replace the contents of the buffer with the output + from the command? +|faq-30.5| How do I sort a section of my file? +|faq-30.6| Is there a step-by-step guide for using Vim with slrn? +|faq-30.7| How do I use Vim as a pager? +|faq-30.8| How do I view Unix man pages from inside Vim? +|faq-30.9| How do I change the diff command used by the Vim diff support? +|faq-30.10| How do I use the Vim diff mode without folding? + *faq-gui-vim* +SECTION 31 - GUI VIM +|faq-31.1| How do I create buffer specific menus? +|faq-31.2| How do I change the font used by GUI Vim? +|faq-31.3| When starting GUI Vim, how do I specify the location of the GVIM + window? +|faq-31.4| How do I add a horizontal scrollbar in GVim? +|faq-31.5| How do I make the scrollbar appear in the left side by default? +|faq-31.6| How do I remove the Vim menubar? +|faq-31.7| I am using GUI Vim. When I press the ALT key and a letter, the + menu starting with that letter is selected. I don't want this + behavior as I want to map the ALT-<key> combination. How do I do + this? +|faq-31.8| Is it possible to scroll the text by dragging the scrollbar so + that the cursor stays in the original location? +|faq-31.9| How do I get gvim to start browsing files in a particular + directory when using the ":browse" command? +|faq-31.10| For some questions, like when a file is changed outside of Vim, + Vim displays a GUI dialog box. How do I replace this GUI dialog + box with a console dialog box? +|faq-31.11| I am trying to use GUI Vim as the editor for my xxx application. + When the xxx application launches GUI Vim to edit a file, the + control immediately returns to the xxx application. How do I + start GUI Vim, so that the control returns to the xxx + application only after I quit Vim? +|faq-31.12| Why does the "Select Font" dialog doesn't show all the fonts + installed in my system? +|faq-31.13| How do I use the mouse in Vim command-line mode? +|faq-31.14| When I use the middle mouse button to scroll text, it pastes the + last copied text. How do I disable this behavior? +|faq-31.15| How do I change the location and size of a GUI Vim window? + *faq-vim-on-unix* +SECTION 32 - VIM ON UNIX +|faq-32.1| I am running Vim in a xterm. When I press the CTRL-S key, Vim + freezes. What should I do now? +|faq-32.2| I am seeing weird screen update problems in Vim. What can I do to + solve this screen/display update problems? +|faq-32.3| I am using the terminal/console version of Vim. In insertmode, + When I press the backspace key, the character before the cursor + is not erased. How do I configure Vim to do this? +|faq-32.4| I am using Vim in a xterm. When I quit Vim, the screen contents + are restored back to the original contents. How do I disable + this? +|faq-32.5| When I start Vim, it takes quite a few seconds to start. How do I + minimize the startup time? +|faq-32.6| How can I make the cursor in gvim in unix stop blinking? +|faq-32.7| How do I change the menu font on GTK Vim? +|faq-32.8| How do I prevent <Ctrl-Z> from suspending Vim? +|faq-32.9| When I kill the xterm running Vim, the Vim process continues to + run and takes up a lot of CPU (99%) time. Why is this happening? +|faq-32.10| How do I get the Vim syntax highlighting to work in a Unix + terminal? + *faq-vim-on-ms-windows* +SECTION 33 - VIM ON MS-WINDOWS +|faq-33.1| In MS-Windows, CTRL-V doesn't start the blockwise visual mode. + What happened? +|faq-33.2| When I press the CTRL-Y key, it acts like the CTRL-R key. How do + I configure Vim to treat CTRL-Y as CTRL-Y? +|faq-33.3| How do I start GUI Vim in a maximized window always? +|faq-33.4| After doing some editing operations, Vim freezes. The cursor + becomes an empty rectangle. I am not able enter any characters. + What is happening? +|faq-33.5| I am using Windows XP, the display speed of maximized GVim is + very slow. What can I do to speed the display updates? +|faq-33.6| What are the recommended settings for using Vim with cygwin? +|faq-33.7| I am trying to use GNU diff with Vim diff mode. When I run the + diff from command line, it works. When I try to use the diff with + Vim it doesn't work. What should I do now? +|faq-33.8| Is it possible to use Vim as an external editor for MS-Windows + Outlook email client? +|faq-33.9| I am using Vim to edit HTML files. How do I start internet + explorer with the current file to preview the HTML file? +|faq-33.10| I would like to use Vim with Microsoft Visual Studio. How do I + do this? +|faq-33.11| Where do I place the _vimrc and _gvimrc files? +|faq-33.12| Everytime I save a file, Vim warns about the file being changed + outside of Vim. Why? + *faq-printing* +SECTION 34 - PRINTING +|faq-34.1| How do I print a file along with line numbers for all the lines? +|faq-34.2| How do I print a file with the Vim syntax highlighting colors? + *faq-building-vim-from-source* +SECTION 35 - BUILDING VIM FROM SOURCE +|faq-35.1| How do I build Vim from the sources on a Unix system? +|faq-35.2| How do I install Vim in my home directory or a directory other + than the default installation directory in Unix? +|faq-35.3| How do I build Vim from the sources on a MS-Windows system? +|faq-35.4| The Vim help, syntax, indent files are missing from my Vim + installation. How do I install these files? +|faq-35.5| I have built Vim from the source and installed the Vim package + using "make install". Do I need to keep the Vim source directory? +|faq-35.6| How do I determine the Vim features which are enabled at compile + time? +|faq-35.7| Can I build Vim without the GUI support? +|faq-35.8| When building Vim on a Unix system, I am getting "undefined + reference to term_set_winsize' error. How do I resolve this + error? +|faq-35.9| Vim configure keeps complaining about the lack of gtk-config + while trying to use GTK 2.03. This is correct, since in GTK 2 + they moved to using the generic pkg-config. I can get pkg-config + to list the various includes and libs for gtk, but for some + reason the configure script still isn't picking this up. + *faq-various* +SECTION 36 - VARIOUS +|faq-36.1| How do I edit binary files with Vim? +|faq-36.2| How do I disable the visual error flash and the error beep? +|faq-36.3| How do I display the ascii value of a character displayed in a + buffer? +|faq-36.4| Can I use zero as a count for a Vim command? +|faq-36.5| How do I disable the Vim welcome screen? +|faq-36.6| How do I avoid the "hit enter to continue" prompt? +|faq-36.7| How do I invoke Vim from command line to run a group of commands + on a group of files? +|faq-36.8| How do I use a normal mode command from insert mode without + leaving the insert mode? + *faq-unicode* +SECTION 37 - UNICODE +|faq-37.1| Is it possible to create Unicode files using Vim? +|faq-37.2| Which Vim settings are particularly important for editing Unicode + files? +|faq-37.3| What is the 'encoding' option? +|faq-37.4| How does Vim name the various Unicode encodings? +|faq-37.5| How does Vim specify the presence or absence of a byte-order + mark? +|faq-37.6| What is the 'fileencoding' option? +|faq-37.7| What is the 'fileencodings' option? +|faq-37.8| What is the 'termencoding' option? +|faq-37.9| What is the 'bomb' option? +|faq-37.10| Where can I find an example of a typical use of all these + options? +|faq-37.11| How can I insert Unicode characters into a file using Vim? +|faq-37.12| How can I know which digraphs are defined and for which + characters? + +============================================================================= + *faq-1* +SECTION 1 - GENERAL INFORMATION + + *faq-1.1* +1.1. What is Vim? + +Vim stands for Vi IMproved. It used to be Vi IMitation, but there are so +many improvements that a name change was appropriate. Vim is a text editor +which includes almost all the commands from the Unix program "Vi" and a lot +of new ones. All commands can be given with the keyboard. This has the +advantage that you can keep your fingers on the keyboard and your eyes on +the screen. For those who want it, there is mouse support and a GUI version +with scrollbars and menus. + +Vim is an editor, not a word processor. A word processor is used mainly to +do layout of text. This means positioning it, changing the way it appears +on output. More often than not, the final document is meant to be printed +or typeset or what have you, in order to present it in a pleasing manner to +others. Examples of word processors are Microsoft Word, WordPerfect, +FrameMaker, and AmiPro. + +An editor is simply for entering text. Any typesetting or laying out of the +document is secondary. With an editor, one's main concern is entering text, +not making the text look good. Examples of editors other than Vim and Vi +are Emacs, Crisp, Brief, and xedit. And Notepad. + +For more information, read > + + :help intro +< + *faq-1.2* +1.2. Who wrote Vim? + +Most of Vim was written by Bram Moolenar, with contributions from too many +people to mention here. See ":h credits" for a complete list. + +Vim is based on Stevie, worked on by Tim Thompson, Tony Andrews and G.R. +(Fred) Walter. + +For more information, read > + + :help author +< + *faq-1.3* +1.3. Is Vim compatible with Vi? + +Yes. Vim is very much compatible with Vi. You can use the "-C" +command-line flag to start Vim in Vi compatible mode: > + + $ vim -C +< +You can also use: > + + $ vim -u NONE +< +You can also set the 'compatible' option to enable Vi compatibility: > + + :set compatible +< +For more information, read > + + :help -C + :help 'compatible' + :help compatible-default +< + *faq-1.4* +1.4. What are some of the improvements of Vim over Vi? + +A short summary of the improvements of Vim over vi is listed below. The +list shows that Vim is a thoroughly modern and feature-packed editor. +Standard features of modern editors are implemented, and there is an equal +emphasis on general power-user features and features for programmers. + +Features to modernise Vi: + + Multi-level undo + Allows you to set the number of times you can undo your changes in a + file buffer. You can also redo an undone change. + Multiple windows and buffers + Each file can be displayed in its own window. You can move easily from + one window to another. Each file opened during a Vim session also has + an associated buffer and you can easily jump from one to the other. + Flexible insert mode + Vim allows you to use the arrow keys while in insert mode to move + around in the file. No more hitting <Esc>, moving around, then hitting + `i' or `a'. + Macros + Vim has a facility which allows you to record a sequence of typed + characters and repeat them any number of times. + Visual mode + You can highlight sections of text and execute operations on this + section of text only. + Block operators + Allow selection and highlighting of rectangular blocks of text in + order do execute specific operations on them. + Online help system + You can easily find help on any aspect of using Vim. Help is displayed + in its own window. + Command-line editing and history + History allows you to use the arrow keys to repeat or search for a + command that has already been typed. Allows you to match the beginning + of a command with the beginning of another similar command in the + history buffer. You can also edit a command to correct typos or change + a few values. + Command line completion. + Using the <Tab> key, you can complete commands, options, filenames, + etc. as needed. + Horizontal scrolling. + Long lines can be scrolled horizontally (with or without the GUI). + +Advanced user features: + + Text formatting. + With two keystrokes, you can format large sections of text, without + the use of external programs. + Word completion in Insert mode + Vim can complete words while you are typing, by matching the current + word with other similar words in the file. + Jump tags + Just like in an internet browser, you can jump back to previous parts + of the text you were editing, and then forward again. Your brain is + thus free to edit instead of navigate. + Automatic commands + Commands automatically executed when reading or writing a file, + jumping to another buffer, etc. + Viminfo + Allows storing of the command line history, marks and registers in a + file to be read on startup. Therefore, you can recall old search + patterns, macros, etc., in a new Vim session. + Mouse support + The mouse is supported in an xterm and for MS-DOS. It can be used to + position the cursor, select the visual area, paste a register, etc. + Graphical User Interface (GUI) + Just like any modern editor. Also, it's very easy to add your own + menus. Of course, console vim is still supported, and very widely + used. + Scripting language + Vim has a powerful scripting language so new commands can be created. + You can also use Perl, Python, TCL and Ruby to achieve the same thing! + Plugins + Extra functionality implemented via vim commands (regular commands or + the scripting language) that is automatically loaded on startup. + Examples: file explorer, network editing. More are being developed + and shared on VimOnline all the time. + Syntax highlighting for many programming languages + Syntax highlighting for hundreds of programming languages is + supported. Support for others can be added. + Extended regular expressions + Vim supports extended regular expressions which are similar in + functionality to that of perl regular expressions. + +Programming performance features: + + Edit-compile-edit speedup + You can compile within Vim and automatically jump to the location of + errors in the source code. + Indenting for many programming languages + C, C++, Java, Perl, XML and many other languages can be automatically + indented by vim while you type. Support for others can be added. + Searching for words in include files + Vim allows you to search for a match of the word under the cursor in + the current and included files. + Advance text objects + Instantly select, or delete, or copy, or indent, or format, or change + case, or ... to all the text between ( and ), or { and }, or < and >, + or [ and ]. Or a word, sentence, or paragraph. Very powerful. + Folding + Certain parts of the text can be "folded" away. The best example is + the body of a function. You can get an overview of the code, and then + open the fold of the function whose detail you need to see. + ctags and cscope integration + Using these two powerful programs, you can jump to a definition of a + function from a calling instance of it, and use other tricks to + navigate source code. + +For more information, read > + + :help vi-differences +< + *faq-1.5* +1.5. Is Vim free? + +Vim is Charityware. There are no restrictions on using or copying Vim, but +the author encourages you to make a donation to charity. A document +explaining how to do so is included in the distribution. + +For more information, read > + + :help copyright +< + +============================================================================= + *faq-2* +SECTION 2 - RESOURCES + + *faq-2.1* +2.1. Where can I learn more about Vim? + +You can post your Vim questions to the vim@vim.org mailing list. You can +post your Vim development related questions to the vim-dev@vim.org mailing +list. Vim does not have a newsgroup of its own. But the appropriate +newsgroup to post to is comp.editors. + +"VimOnline" is a web page that serves as a de facto homepage for vim, +although the main purpose of it is to gather tips and scripts from +everywhere. Get involved! The URL is vim.sourceforge.net or vim.sf.net. + +Finally, read the Vi FAQ: > + + http://www.faqs.org/faqs/editor-faq/vi/part1/index.html +< +For more information, read > + + :help mail-list + :help internet +< + *faq-2.2* +2.2. Is there a mailing list available? + +There are several: > + + NAME DESCRIPTION +< + vim-announce Announcements of new releases + vim General discussion + vim-dev Patches, bug reports, development discussions + vim-mac Macintosh discussion + vim-fr General discussion in French + vim-multibyte Multibyte development issues + vim-vms Development on VMS + +Of these, only vim and vim-dev are of general interest. vim-announce is +read-only to most people, and its messages are sent to the other lists as +well. The remaining four are very low volume. + +To subscribe: send an email to <NAME>-subscribe@vim.org +To unsubscribe: send an email to <NAME>-unsubscribe@vim.org +To get help: send an email to <NAME>-help@vim.org + + *faq-2.3* +2.3. Is there an archive available for the Vim mailing lists? + +Yes. Visit http://www.yahoogroups.com/list/<name>, where name is one of: +vimannounce, vim, vimdev, vim-fr, vim-mac, vim-multibyte, vim-vms. + +Alternatively, visit www.gmane.org to find out about GMANE, which allows +you to access the mailing lists as though they were newsgroups. This +offers some convenience to those who wish to browse the history or casually +observe the current threads. + + *faq-2.4* +2.4. Where can I get the Vim user manual in HTML/PDF/PS format? + +You can download the HTML/PDF/PS format of the Vim user manual from: > + + http://vimdoc.sourceforge.net/ +< + *faq-2.5* +2.5. I have a "xyz" (some) problem with Vim. How do I determine it is a + problem with my setup or with Vim? + +First, you have to determine that the problem is not with your .vimrc or +.gvimrc or system vimrc or your personal plugin files or in any of your +setup files. To do this, use > + + $ vim -N -u NONE -U NONE +< +This will start Vim in 'nocompatible" mode and will not source your +personal .vimrc and .gvimrc files. It will also not load your personal +plugins. In this invocation of Vim, try to reproduce your problem. If you +are not able to reproduce the problem, then the problem is related to some +setting in one of your local setup files or plugins. To locate the problem +in your setup files, you have to use trial and error and try commenting out +the lines in your setup files one by one. You can also use the -V command +line argument to Vim to get more debug information and analyze the problem: > + + $ vim -V2 +< +You can increase the value passed to the -V argument to get more debug +information. + +For more information, read > + + :help -u + :help -U + :help -N + :help -V + :help 'verbose' + :help :verbose + :help set-verbose +< + *faq-2.6* +2.6. Where can I report bugs? + +First collect the required information using the following command: > + + :source $VIMRUNTIME/bugreport.vim +< +Now send the resulting text from the above command to the bugs@vim.org +e-mail address. + +The Vim Development mailing list (see above) is a good place to discuss +general bugs. If the bug you find is with syntax highlighting or some +other "added feature" (i.e. not directly programmed into vim), attempt to +inform the maintainer of that feature. + +For more information, read > + + :help bug-reports +< + *faq-2.7* +2.7. Where can the FAQ be found? + +The FAQ can be found at VimOnline (vim.sf.net). Other places will be +decided in the future. + + *faq-2.8* +2.8. What if I don't find an answer in this FAQ? + +This FAQ covers mainly Vim-specific questions. You may find more +information suitable for most Vi clones by reading the Vi FAQ. It is posted +regularly on comp.editors. You can also find a copy at > + + http://www.faqs.org/faqs/editor-faq/vi/part1/index.html +< +Also, since Vim has gathered so many features in the last few years, +successfully documenting the frequently asked questions here is a +near-impossible task. To make it possible, please email the maintainer if +you have a good question. A good question is one that you've tried to +answer yourself (remember, Vim has great documentation) but struggled. + + *faq-2.9* +2.9. I have a patch for implementing a Vim feature. Where can I send this + patch? + +You can send your patches to the Vim developer mailing list +vim-dev@vim.org. + +For more information, read > + + :help vim-dev +< + *faq-2.10* +2.10. I have a Vim tip or developed a new Vim + syntax/indent/filetype/compiler plugin or developed a new script or a + colorscheme. Is there a public website where I can upload this? + +Yes. You can use the Vim Online website to upload your plugins/scripts, +colorschemes, tips, etc. The site is at http://vim.sourceforge.net + +============================================================================= + *faq-3* +SECTION 3 - AVAILABILITY + + *faq-3.1* +3.1. What is the latest version of Vim? + +The latest version of Vim is 6.3 released on 8th June 2004. + +The release-history of different versions of Vim is below: + +Version 6.3 8th June 2004 +Version 6.2 1st June 2003 +Version 6.1 24th March 2002 +Version 6.0 27th September, 2001 +Version 5.8 31st May, 2001 +Version 5.7 24th June, 2000 +Version 5.6 16th January, 2000 +Version 5.5 21st September, 1999 +Version 5.4 26th July, 1999 +Version 5.3 31st August, 1998 +Version 5.2 24th August, 1998 +Version 5.1 7th April, 1998 +Version 5.0 19th February, 1998 +Version 4.6 13th March,1997 +Version 4.5 17th October, 1996 +Version 4.2 5th July,1996 +Version 4.0 21st May, 1996 +Version 3.0 16th August, 1994 +Version 2.0 21st December, 1993 +Version 1.27 23rd April, 1993 +Version 1.17 21st April, 1992 + + *faq-3.2* +3.2. Where can I find the latest version of Vim? + +You can download the sources for the latest version of Vim from the +VimOnline website. The URL for this site is +http://vim.sourceforge.net/download.php. + + *faq-3.3* +3.3. What platforms does it run on? + +All Unix platforms. +All Windows platforms. +Amiga, Atari, BeOS, DOS, Macintosh, MachTen, OS/2, RiscOS, VMS. + + *faq-3.4* +3.4. Where can I download the latest version of the Vim runtime files? + +You can download the latest version of the Vim runtime files (syntax files, +filetype plugins, compiler files, color schemes, documentation, indentation +files and keymaps) from the Vim ftp site from the +ftp://ftp.vim.org/pub/vim/runtime directory. + +============================================================================= + *faq-4* +SECTION 4 - HELP + + *faq-4.1* +4.1. How do I use the help files? + +Help can be found for all functions of Vim. In order to use it, use the +":help" command. This will bring you to the main help page. On that first +page, you will find explanations on how to move around. Basically, you move +around in the help pages the same way you would in a read-only document. +You can jump to specific subjects by using tags. This can be done in two +ways: + + * Use the "<Ctrl-]>" command while standing on the name of a command or + option. This only works when the tag is a keyword. "<Ctrl-LeftMouse>" + and "g<LeftMouse>" work just like "<Ctrl-]>". + * use the ":tag <subject>" command. This works with all characters. + +Use "<Ctrl-T>" to jump back to previous positions in the help files. Use +":q" to close the help window. + +If you want to jump to a specific subject on the help pages, use ":help +{subject}". If you don't know what to look for, try ":help index" to get a +list of all available subjects. Use the standard search keys to locate the +information you want. You can abbreviate the ":help" command as ":h". + +For more information, read > + + :help online-help +< + *faq-4.2* +4.2. How do I search for a keyword in the Vim help files? + +You can press the CTRL-D key after typing the help keyword to get a list of +all the help keywords containing the supplied pattern. You can also use the +meta characters like *, \+, etc to specify the help search pattern: > + + :help init<C-D> + :help str*()<C-D> + :help '*indent<C-D> +< +You can press the Tab key after typing a partial help keyword to expand to +the matching keyword. You can continue to press the Tab key to see other +keyword matches. + +From the help window, you can use the ":tag" command to search for +keywords. For example, > + + :tselect /window +< +This command will list all the help keywords containing the text "window". +You can select one from the list and jump to it. + +You can use the ":helpgrep" command to search for the given text in all the +help files. The quickfix window will be opened with all the matching lines. + +For more information, read > + + :help c_CTRL-D + :help c_<Tab> + :help :tselect + :help :help + :help :helpgrep +< + *faq-4.3* +4.3. I am getting an error message E123, what did I do wrong? + +You can get more information about the error and the error message using: > + + :help E123 +< +For more information, read > + + :help error-messages +< + *faq-4.4* +4.4. Where can I read about the various modes in Vim? + +You can get information about the different modes in Vim by reading > + + :help vim-modes +< + *faq-4.5* +4.5. How do I generate the Vim help tags file after adding a new Vim help + file? + +You can use the ":helptags" command to regenerate the Vim help tag file. +For example: > + + :cd $VIMRUNTIME/doc + :helptags . +< +For more information, read > + + :help :helptags + :help add-local-help +< + *faq-4.6* +4.6. Can I use compressed versions of the help files? + +Yes. You can compress the help files and still be able to view them with +Vim. This makes accessing the help files a bit slower and requires the +"gzip" utility. Follow these steps to compress and use the Vim help files: + +- Compress all the help files using "gzip ddoc/*.txt". + +- Edit the "doc/tags" file and change the "".txt" to ".txt.gz" using + :%s=\(\t.*\.txt\)\t=\1.gz\t= + +- Add the following line to your vimrc: + set helpfile={dirname}/help.txt.gz + +Where {dirname} is the directory where the help files are. The gzip.vim +plugin supplied with the standard Vim distribution will take care of +decompressing the files. You must make sure that $VIMRUNTIME is set to +where the other Vim files are, when they are not in the same location as +the compressed "doc" directory. + +For more information, read > + + :help gzip-helpfile + :help 'helpfile' + :help gzip + :help $VIMRUNTIME +< + +============================================================================= + *faq-5* +SECTION 5 - EDITING A FILE + + *faq-5.1* +5.1. How do I load a file in Vim for editing? + +There are several ways to load a file for editing. The simplest is to +use the ":e" (:edit) command: > + + :e <filename> +< +You can also use the ":n" (:next) command to load files into Vim: > + + :n <filename(s)> +< +You can also use the ":args" command to load files into Vim: > + + :args <filename(s)> +< +For more information, read > + + :help usr_07 + :help edit-files + :help :edit + :help :next_f + :help :args_f +< + *faq-5.2* +5.2. How do I save the current file in another name (save as) and edit a + new file? + +You can use the ":saveas" command to save the current file in another name: > + + :saveas <newfilename> +< +Alternatively, you can also use the following commands: > + + :w <newfilename> + :edit # +< +You can also use the ":file" command, followed by ":w" command: > + + :file <newfilename> + :w +< +For more information, read > + + :help 07.7 + :help :saveas + :help :file_f + :help :w +< + *faq-5.3* +5.3. How do I change the current directory to the directory of the current + file? + +You can use the following command to change the current directory to the +directory of the current file: > + + :cd %:p:h +< +To automatically change the current directory to the directory of the +current file, use the following autocmd: > + + :autocmd BufEnter * cd %:p:h +< +For more information, read > + + :help :cd + :help :lcd + :help filename-modifiers + :help autocommand +< + *faq-5.4* +5.4. How do I write a file without the line feed (EOL) at the end of the + file? + +You can turn off the 'eol' option and turn on the 'binary' option to write +a file without the EOL at the end of the file: > + + :set binary + :set noeol + :w +< +For more information, read > + + :help 'endofline' + :help 'binary' + :help 23.4 +< + *faq-5.5* +5.5. How do I configure Vim to open a file at the last edited location? + +Vim stores the cursor position of the last edited location for each buffer +in the '"' register. You can use the following autocmd in your .vimrc or +.gvimrc file to open a file at the last edited location: > + + au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal g'\"" | endif +< +For more information, read > + + :help '" + :help last-position-jump +< + *faq-5.6* +5.6. When editing a file in Vim, which is being changed by an external + application, Vim opens a warning window (like the confirm dialog) each + time a change is detected. How do I disable this warning? + +You can set the Vim 'autoread' option to automatically read the file again +when it is changed outside of Vim: > + + :set autoread +< +You can also use the following autocommand: > + + autocmd FileChangedShell * + \ echohl WarningMsg | + \ echo "File has been changed outside of vim." | + \ echohl None +< +For more information, read > + + :help 'autoread' + :help FileChangedShell + :help timestamp + :help :checktime +< + *faq-5.7* +5.7. How do I edit a file whose name is under the cursor? + +You can use the gf command to edit a file whose name is under the cursor. +You can use the CTRL-W f command to edit the file in a new window. + +For more information, read > + + :help gf + :help CTRL-W_f + :help 'isfname' + :help 'path' + :help 'suffixesadd' + :help 'includeexpr' +< + *faq-5.8* +5.8. How do I reload/re-edit the current file? + +You can use the ":edit" command, without specifying a file name, to reload +the current file. If you have made modifications to the file, you can use +":edit!" to force the reload of the current file (you will lose your +modifications). + +For more information, read > + + :help :edit + :help :edit! + :help 'confirm' +< + *faq-5.9* +5.9. How do I autosave a file periodically? + +Vim doesn't support auto-saving a file periodically. + +For more information, read > + + :help 'updatetime' + :help CursorHold + :help swap-file +< + *faq-5.10* +5.10. How do I open a file in read-only mode? + +You can open a file in read-only mode using the ":view" command: > + + :view <filename> +< +This command sets the 'readonly' option for the opened buffer. You can also +use the "-R" command-line option to open a file in read-only mode: > + + $ vim -R <filename> +< +You can also use the symbolic link executable "view" to open a file in +read-only mode from the command-line: > + + $ view <filename> +< +For more information, read > + + :help 07.6 + :help 'readonly' + :help 'modifiable' + :help :view + :help :sview + :help view + :help -R + :help -M +< + +============================================================================= + *faq-6* +SECTION 6 - EDITING MULTIPLE FILES + + *faq-6.1* +6.1. How do I open multiple files at once from within Vim? + +There are several ways to open multiple files at once from within Vim. You +can use the ":next" command to specify a group of files: > + + :next f1.txt f2.txt + :next *.c +< +You can use the :args command to specify a group of files as arguments: > + + :args f1.txt f2.txt + :args *.c +< +After loading the files, you can use the ":next" and ":prev" command to +switch between the files. + +For more information, read > + + :help 07.2 + :help :next + :help :args_f + :help argument-list +< + *faq-6.2* +6.2. How do I switch between multiple files/buffers in Vim? + +There are several ways to switch between multiple files. You can use the +":buffer" command to switch between multiple files. For example, > + + :buffer file1 + :buffer file2 +< +You can also use the CTRL-^ key to switch between buffers. By specifying a +count before pressing the key, you can edit the buffer with that number. +Without the count, you can edit the alternate buffer by pressing CTRL-^ + +You can also use the ":e #" command to edit a particular buffer: > + + :e #5 +< +For more information, read > + + :help edit-files + :help :buffer + :help CTRL-^ + :help alternate-file + :help 22.4 + :help 07.3 +< + *faq-6.3* +6.3. How do I open several files in Vim, with each file in a separate + window? + +You can use the -o and -O Vim command line arguments to open multiple files +in separate horizontally or vertically split Vim windows. For example: > + + $ vim -o3 f1.txt f2.txt f3.txt +< +The above command will open the files f1.txt, f2.txt and f3.txt in three +separate horizontally split Vim windows. > + + $ vim -O3 f1.txt f2.txt f3.txt +< +The above command will open the files f1.txt, f2.txt and f3.txt in three +separate vertically split Vim windows. + +For more information, read > + + :help -o + :help -O + :help startup-options +< + *faq-6.4* +6.4. How do I configure Vim to autoload several files at once similar to + "work-sets" or "projects"? + +You can use the ":mksession" and the ":mkview" commands to autoload several +files in Vim. + +The ":mksession" command creates a Vim script that restores the current +editing session. You can use the ":source" command to source the file +produced by the mksession command. + +The ":mkview" command creates a Vim script that restores the contents of +the current window. You can use the ":loadview" command to load the view +for the current file. + +For more information, read > + + :help 21.4 + :help 21.5 + :help views-sessions + :help 'sessionoptions' + :help :mksession + :help :source + :help v:this_session + :help :mkview + :help :loadview + :help 'viewdir' + :help buffers +< + *faq-6.5* +6.5. Is it possible to open multiple top level windows in a single instance + of Vim similar to Nedit or emacs? + +No. It is currently not possible to open multiple top-level windows in a +single instance of Vim. This feature is in the todo list. + + *faq-6.6* +6.6. How do I browse/explore directories from within Vim? + +You can use the explorer.vim plugin, supplied with the standard Vim +installation, to browse/explore directories from within Vim. You can start +the file explorer using one of the following commands: > + + :e <directory> + :Explore + :SExplore +< +From the file explorer, you can browse through directories, rename, delete +and edit files. + +For more information, read > + + :help file-explorer + :help 22.1 +< + *faq-6.7* +6.7. How do I edit files over a network using ftp/scp/rcp/http? + +You can use the netrw.vim plugin, supplied with the standard Vim package, +to edit files over a network using ftp/scp/rcp/http. Using this plugin, Vim +will transparently load and save the files over ftp/scp/rcp/http. For +example, to edit a file over ftp, you can use the following command: > + + $ vim ftp://machine/path +< +For more information, read > + + :help netrw.vim +< + +============================================================================= + *faq-7* +SECTION 7 - BACKUP + + *faq-7.1* +7.1. When I edit and save files, Vim creates a file with the same name as + the original file and a "~" character at the end. How do I stop Vim + from creating this file? (or) How do I disable the Vim backup file + feature? + +You have set the 'backup' option, so Vim creates a backup file when saving +the original file. You can stop Vim from creating the backup file, by +clearing the option: > + + :set nobackup +< +Note that, by default this option is turned off. You have explicitly +enabled the 'backup' option in one of the initialization files. You may +also have to turn off the 'writebackup' option: > + + :set nowritebackup +< +For more information, read > + + :help 07.4 + :help backup-table + :help 'backup' + :help 'writebackup' + :help 'backupskip' + :help 'backupdir' + :help 'backupext' + :help 'backupcopy' + :help backup +< + *faq-7.2* +7.2. How do I configure Vim to store all the backup files in a particular + directory? + +You can configure Vim to store all the backup files in a particular +directory using the 'backupdir' option. For example, to store all the +backup files in the ~/backup directory, you can use the following command: > + + :set backupdir=~/backup +< +For more information, read > + + :help 07.4 + :help 'backupdir' + :help backup +< + *faq-7.3* +7.3. When I save a file with Vim, the file permissions are changed. + How do I configure Vim to save a file without changing the file + permissions? + +This may happen, if the 'backupcopy' option is set to 'no' or 'auto'. Note +that the default value for this option is set in such a way that this will +correctly work in most of the cases. If the default doesn't work for you, +try setting the 'backupcopy' option to 'yes' to keep the file permission +when saving a file: > + + :set backupcopy=yes +< +This applies, only if you have configured Vim to make a backup whenever +overwriting a file. By default, Vim will not backup files. + +For more information, read > + + :help 'backupcopy' + :help backup + :help 'backup' + :help 'writebackup' +< + +============================================================================= + *faq-8* +SECTION 8 - BUFFERS + + *faq-8.1* +8.1. I have made some modifications to a buffer. How do I edit another + buffer without saving the modified buffer and also without losing the + modifications? + +You can set the 'hidden' option to edit a file without losing modifications +to the current file: > + + :set hidden +< +By setting the 'hidden' option, you can also save the modification history +(undo-history) for the buffer. Otherwise, as you switch between files, the +undo-history will be lost. + +For more information, read > + + :help 'hidden' + :help hidden-quit + :help :hide +< + *faq-8.2* +8.2. How do I configure Vim to auto-save a modified buffer when switching + to another buffer? + +You can set the 'autowrite' option to auto-save a modified buffer when +switching to another buffer: > + + :set autowrite +< +For more information, read > + + :help 'autowrite' + :help 'autowriteall' + :help 'hidden' +< + *faq-8.3* +8.3. How do I replace the buffer in the current window with a blank buffer? + +You can use the ":enew" command to load an empty buffer in place of the +buffer in the current window. + +For more information, read > + + :help :enew +< + *faq-8.4* +8.4. Is there a keyboard shortcut to load a buffer by the buffer number? + +You can use the CTRL-^ command to load a buffer by specifying the buffer +number. For example, to load buffer number 5, you have to use the 5 CTRL-^ +command. + +For more information, read > + + :help CTRL-^ +< + *faq-8.5* +8.5. How do I open all the current buffers in separate windows? + +You can use the ":ball" or ":sball" commands to open all the buffers +in the buffer list: > + + :ball +< +For more information, read > + + :help :ball +< + *faq-8.6* +8.6. How do I close (delete) a buffer without exiting Vim? + +You can use the ":bdelete" command to delete a buffer without exiting Vim. +For example: > + + :bdelete file1 +< +For more information, read > + + :help :bdelete + :help :bwipeout +< + *faq-8.7* +8.7. I have several buffers opened with :e filename. How do I close one of + the buffers without exiting Vim? + +You can use the ":bdelete <buffername>" command to close the buffer. + +For more information, read > + + :help :bdelelete + :help :bunload + :help :bwipeout +< + *faq-8.8* +8.8. When I use the command ":%bd" to delete all the buffers, not all the + buffers are deleted. Why? + +In the ":%bd" command, the '%' range will be replaced with the starting and +ending line numbers in the current buffer. Instead of using '%' as the +range, you should specify numbers for the range. For example, to delete all +the buffers, you can use the command ":1,9999bd". + +For more information, read > + + :help :bd +< + *faq-8.9* +8.9. How do I display the buffer number of the current buffer/file? + +You can use 2<CTRL-G> command to display the buffer number for the current +file/buffer. Note the use of count before the CTRL-G command. If the count +is greater than 1, then Vim will display the buffer number. + +You can also use the following command to display the current buffer +number: > + + :echo bufnr("%") +< +You can also include the "%n" field to the 'statusline' option to display +the current buffer number on the statusline. + +For more information read, > + + :help CTRL-G + :help bufnr() + :help :echo + :help 'statusline' +< + *faq-8.10* +8.10. How do I delete a buffer without closing the window in which the + buffer is displayed? + +You can use the following command to open the next buffer and delete +the current buffer. > + + :bnext | bdelete # +< +For more information read, > + + :help :bnext + :help :bdelete + :help :buffers +< + *faq-8.11* +8.11. How do I map the tab key to cycle through and open all the buffers? + +You can use the following two map commands, to map the CTRL-Tab key to open +the next buffer and the CTRL-SHIFT-Tab key to open the previous buffer: > + + :nnoremap <C-Tab> :bnext<CR> + :nnoremap <S-C-Tab> :bprevious<CR> +< +For more information read, > + + :help :bnext + :help :previous +< + +============================================================================= + *faq-9* +SECTION 9 - WINDOWS + + *faq-9.1* +9.1. What is the difference between a Vim window and a buffer? + +A Vim buffer is a file loaded into memory for editing. The original file +remains unchanged until you write the buffer to the file. A Vim window is a +viewport onto a buffer. You can use multiple windows on one buffer or +several windows on different buffers. + +For more information, read > + + :help usr_08.txt + :help 22.4 + :help windows-intro + :help Q_wi +< + *faq-9.2* +9.2. How do I increase the width of a Vim window? + +You can increase the width of a Vim window using one of the following +commands: > + + :vert resize +N + :vert resize -N + :vert resize N +< +You can also use CTRL-W < or CTRL-W > or CTRL-W | commands. + +For more information, read > + + :help vertical-resize + :help CTRL-W_> + :help CTRL-W_< + :help window-resize +< + *faq-9.3* +9.3. How do I zoom into or out of a window? + +You can zoom into a window (close all the windows except the current +window) using the "CTRL-W o" command or the ":only" ex command. + +You can use the "CTRL-W _" command or the ":resize" ex command to increase +the current window height to the highest possible without closing other +windows. + +You can use the "CTRL-W |" command or the ":vertical resize" ex command to +increase the current window width to the highest possible without closing +other windows. + +You can use the "CTRL-W =" command to make the height and width of all the +windows equal. + +You can also set the following options to get better results with the above +commands: + +Method 1: +Set the 'winminheight' option to 0: > + + :set winminheight=0 +< +By default, this option is set to 1. +This option controls the minimum height of an inactive window (when it is +not the current window). When the 'winminheight' option is set to 0, only +the status line will be displayed for inactive windows. + +Method 2: +Set the 'noequalalways' option and set the 'winheight' option to a large +value (like 99999): > + + :set noequalalways + :set winheight=99999 +< +Now, the active window will always open to its maximum size, while the +other windows will stay present, but shrunken to just a status line. + +With any of the above mentioned methods, you cannot restore the window +layout after zooming into a window. If you want to restore the Vim window +layout after zooming into a window, you can use the ZoomWin plugin. You can +download this plugin from the Vim online website at: + +http://vim.sourceforge.net/scripts/script.php?script_id=508 + +For more information, read > + + :help CTRL-W_o + :help window-resize + :help 'winminheight' + :help 'equalalways' + :help 'winheight' + :help 08.3 +< + *faq-9.4* +9.4. How do I execute an ex command on all the open buffers or open windows + or all the files in the argument list? + +You can use the ":bufdo" command to execute an ex command on all the open +buffers. You can use the ":windo" command to execute an ex command on all +the open windows. You can use the ":argdo" command to execute an ex +command on all the files specified in the argument list. + +For more information, read > + + :help :windo + :help :bufdo + :help :argdo + :help 26.3 +< + +============================================================================= + *faq-10* +SECTION 10 - MOTION + + *faq-10.1* +10.1. How do I jump to the beginning (first line) or end (last line) of a + file? + +You can use 'G' command to jump to the last line in the file and the 'gg' +command to jump to the first line in the file. + +For more information, read > + + :help G + :help gg +< + *faq-10.2* +10.2. In insert mode, when I press the <Esc> key to go to command mode, the + cursor moves one character to the left (except when the cursor is on + the first character of the line). Is it possible to change this + behavior to keep the cursor at the same column? + +No. It is not possible to change this behavior. The cursor is *always* +positioned on a valid character (unless you have virtual-edit mode +enabled). So, if you are appending text to the end of a line, when you +return to command mode the cursor *must* drop back onto the last character +you typed. For consistency sake, the cursor drops back everywhere, even if +you are in the middle of a line. + +You can use the CTRL-O command in insert mode to execute a single ex +command and return back to insert mode without moving the cursor column. + +For more information, read > + + :help 'virtual' + :help i_CTRL-O +< + *faq-10.3* +10.3. How do I configure Vim to maintain the horizontal cursor position when + scrolling with the <Page Up>, <Page Down>, etc keys? + +You can reset the 'startofline' option to keep the cursor at the same +horizontal location when scrolling text: > + + :set nostartofline +< +For more information, read > + + :help 'startofline' +< + *faq-10.4* +10.4. Some lines in a file are more than the screen width and they are all + wrapped. When I use the j, k keys to move from one line to the next, + the cursor is moved to the next line in the file instead of the next + line on the screen. How do I move from one screen line to the next? + +You can use the gj and gk commands to move from one screen line to the +next/previous screen line. The j and k commands move the cursor from one +file line to the next file line. You can also avoid the line wrapping by +resetting the 'wrap' option: > + + :set nowrap +< +For more information, read > + + :help gj + :help gk + :help 'wrap' +< +You can use the following mappings: > + + :map <Up> gk + :imap <Up> <C-o>gk + :map <Down> gj + :imap <Down> <C-o>gj +< + *faq-10.5* +10.5. What is the definition of a sentence, paragraph and section in Vim? + +A sentence is defined as ending at a '.', '!' or '?' followed by either the +end of a line, or by a space (or two) or tab. Which characters and the +number of spaces needed to constitute a sentence ending is determined by +the 'joinspaces' and 'cpoptions' options. + +A paragraph begins after each empty line, and also at each of a set of +paragraph macros, specified by the pairs of characters in the 'paragraphs' +option. + +A section begins after a form-feed (<C-L>) in the first column and at each +of a set of section macros, specified by the pairs of characters in the +'sections' option. + +For more information, read > + + :help sentence + :help 'joinspaces' + :help 'cpoptions' | /^\s*j\> + :help paragraph + :help section + :help word +< + *faq-10.6* +10.6. How do I jump to beginning or end of a sentence, paragraph or a + section? + +You can use the following motion commands to jump to the beginning or end +of a sentence or a paragraph or a section: > + + motion position where + ( beginning current sentence + ) end current sentence + { beginning current paragraph + } end current paragraph + [] end previous section + [[ beginning current section + ][ end current section + ]] beginning next section +< +Each of these motions can be preceded by a number which will extend the +jump forward (or backward). + +For more information, read > + + :help object-motions +< + *faq-10.7* +10.7. I have lines in a file that extends beyond the right extent of the + screen. How do I move the Vim view to the right to see the text off + the screen? + +You can use one of the following commands to horizontally scroll the screen +to the left or right: > + + zl - scroll to the left + zh - scroll to the right + zL - scroll half a screenwidth to the left + zH - scroll half a screenwidth to the right + zs - scroll to position the cursor at the start of the screen + ze - scroll to position the cursor at the end of the screen +< +You can use the g0 command to move the cursor to the first character of the +screen line and the g$ command to move the cursor to the last character of +the screen line without scrolling the screen. + +For more information, read > + + :help scroll-horizontal +< + *faq-10.8* +10.8. How do I scroll two or more buffers simultaneously? + +You can set the "scrollbind" option for each of the buffer to scroll them +simultaneously. + +For more information, read > + + :help 'scrollbind' + :help scroll-binding + :help 'scrollopt' +< + *faq-10.9* +10.9. When I use my arrow keys, Vim changes modes, inserts weird characters + in my document but doesn't move the cursor properly. What's going on? + +There are a couple of things that could be going on: either you are using +Vim over a slow connection or Vim doesn't understand the key sequence that +your keyboard is generating. + +If you are working over a slow connection (such as a 2400 bps modem), you +can try to set the 'timeout' or 'ttimeout' option. These options, combined +with the 'timeoutlen' and 'ttimeoutlen' options, may fix the problem. + +The preceding procedure will not work correctly if your terminal sends key +codes that Vim does not understand. In this situation, your best option is +to map your key sequence to a matching cursor movement command and save +these mappings in a file. You can then ":source" the file whenever you work +from that terminal. + +For more information, read > + + :help 'timeout' + :help 'ttimeout' + :help 'timeoutlen' + :help 'ttimeoutlen' + :help :map + :help vt100-cursor-keys +< + *faq-10.10* +10.10. How do I configure Vim to move the cursor to the end of the previous + line, when the left arrow key is pressed and the cursor is currently + at the beginning of a line? + +You can add the '<' flag to the 'whichwrap' option to configure Vim to move +the cursor to the end of the previous line, when the left arrow key is +pressed and the cursor is currently at the beginning of a line: > + + :set whichwrap+=< +< +Similarly, to move the cursor the beginning of the next line, when the +right arrow key is pressed and the cursor is currently at the end of a +line, add the '>' flag to the 'whichwrap' option: > + + :set whichwrap+=> +< +The above will work only in normal and visual modes. To use this in insert +and replace modes, add the '[' and ']' flags respectively. + +For more information, read > + + :help 'whichwrap' + :help 05.7 +< + *faq-10.11* +10.11. How do I configure Vim to stay only in insert mode (modeless + editing)? + +You can set the 'insertmode' option to configure Vim to stay only in insert +mode: > + + :set insertmode +< +By setting this option, you can use Vim as a modeless editor. If you press +the <Esc> key, Vim will not go to the normal mode. To execute a single +normal mode command, you can press CTRL-O followed by the normal mode +command. To execute more than one normal command, you can use CTRL-L +followed by the commands. To return to insert mode, press the <Esc> key. To +disable this option, reset the 'insertmode' option: > + + :set noinsertmode +< +You can also start vim using the "evim" command or you can use "vim -y" to +use Vim as a modeless editor. + +For more information, read > + + :help 'insertmode' + :help i_CTRL-O + :help i_CTRL-L + :help evim + :help evim-keys +< + *faq-10.12* +10.12. How do I display some context lines when scrolling text? + +You can set the 'scrolloff' option to display a minimal number of screen +lines (context) above and below the cursor. > + + :set scrolloff=10 +< +For more information, read > + + :help 'scrolloff' + :help 'sidescrolloff' +< + *faq-10.13* +10.13. How do I go back to previous cursor locations? + +You can go back to the cursor location before the latest jump using the '' +or `` command. You can use the CTRL-O command to go back to older cursor +positions and the CTRL-I command to go to the newer cursor positions in the +jump list. + +For more information, read > + + :help 03.10 + :help mark-motions + :help jump-motions +< + +============================================================================= + *faq-11* +SECTION 11 - SEARCHING TEXT + + *faq-11.1* +11.1. After I searched for a text with a pattern, all the matched text + stays highlighted. How do I turn off the highlighting + temporarily/permanently? + +The 'hlsearch' option controls whether all the matches for the last +searched pattern are highlighted or not. By default, this option is not +enabled. If this option is set in a system-wide vimrc file, then you can +turn off the search highlighting by using the following command: > + + :set nohlsearch +< +To temporarily turn off the search highlighting, use > + + :nohlsearch +< +You can also clear the search highlighting, by searching for a pattern that +is not in the current file (for example, search for the pattern 'asdf'). + +For more information, read > + + :help 'hlsearch' + :help :nohlsearch +< + *faq-11.2* +11.2. How do I enter a carriage return character in a search pattern? + +You can either use '\r' or <CTRL-V><CTRL-M> to enter a carriage return +character in a pattern. In Vim scripts, it is better to use '\r' for the +carriage return character. + +For more information, read > + + :help sub-replace-special +< + *faq-11.3* +11.3. How do I search for the character ^M? + +You can enter the ^M character in a search command by first pressing the +CTRL-V key and then pressing the CTRL-M key. > + + /^V^M +< +You can also use the "\r" character. In Vim scripts, "\r" is preferred. + +For more information, read > + + :help c_CTRL-V + :help using_CTRL-V + :help /\r +< + *faq-11.4* +11.4. How can I search/replace characters that display as '~R', '~S', etc.? + +You can use the 'ga' command to display the ASCII value/code for the +special character. For example, let us say the ASCII value is 142. Then you +can use the following command to search for the special character: > + + /^V142 +< +where, ^V is entered by pressing CTRL-V. + +For more information, read > + + :help ga + :help using_CTRL_V + :help 24.8 +< + *faq-11.5* +11.5. How do I highlight all the non-printable characters in a file? + +You can use the following commands and search pattern to highlight all the +non-printable characters in a file: > + + :set hlsearch + /\(\p\|$\)\@!. +< +For more information, read > + + :help /\p + :help /bar + :help /$ + :help /\( + :help /\@! + :help 'hlsearch' +< + *faq-11.6* +11.6. How do I search for whole words in a file? + +You can search for whole words in a file using the \< and \> atoms. For +example: > + + /\<myword\> +< +The \< atom matches the beginning of the word and the \> atom matches the +end of the word. + +For more information, read > + + :help /\< + :help /\> +< + *faq-11.7* +11.7. How do I search for the current word under the cursor? + +You can press the * key to search forward for the current word under the +cursor. To search backward, you can press the # key. Note that only whole +keywords will be searched using these commands. + +For more information, read > + + :help star + :help # + :help g* + :help g# + :help 03.8 + :help search-commands +< + *faq-11.8* +11.8. How do I search for a word without regard to the case (uppercase or + lowercase)? + +To always ignore case while searching for a pattern, set the 'ignorecase' +option: > + + :set ignorecase +< +To ignore case only when searching a particular pattern, use the special \c +directive: > + + /\c<pattern> +< +For more information, read > + + :help 'ignorecase' + :help /ignorecase + :help /\c +< + *faq-11.9* +11.9. How do I search for words that occur twice consecutively? + +You can use one of the following search commands to locate words that occur +twice consecutively: > + + /\(\<\w\+\)\_s\+\1\> + /\(\<\k\+\)\_s\+\1\> +< +The main difference is the use of '\w' and '\k', where the latter is based +on the 'iskeyword' option which may include accented and other language +specific characters. + +For more information, read > + + :help /\1 + :help /\( + :help /\) + :help /\< + :help /\> + :help /\w + :help /\k + :help /\+ + :help /\_x + :help 'iskeyword' +< + *faq-11.10* +11.10. How do I count the number of times a particular word occurs in a + buffer? + +You can use the following set of commands to count the number of times a +particular word occurs in a buffer: > + + :let cnt=0 + :g/\<your_word\>/let cnt=cnt+1 + :echo cnt +< +This only counts the number of lines where the word occurs. You can also +use the following command: > + + :%s/\<word\>/&/g +< +To count the number of alphabetic words in a file, you can use > + + :%s/\a\+/&/g +< +To count the number of words made up of non-space characters, you can use > + + :%s/\S\+/&/g +< +For more information, read > + + :help count-items + :help word-count + :help v_g_CTRL-G + :help 12.5 +< + *faq-11.11* +11.11. How do I place the cursor at the end of the matched word when + searching for a pattern? + +You can use the 'e' offset to the search command to place the cursor at the +end of the matched word. For example > + + /mypattern/e +< +For more information about search offsets, read > + + :help search-offset + :help / +< + *faq-11.12* +11.12. How do I search for an empty line? + +You can search for an empty line using: > + + /^$ +< + or > + + /^\s*$ +< +For more information, read > + + :help /^ + :help /$ + :help /\s + :help /* + :help search-commands +< + *faq-11.13* +11.13. How do I search for a line containing only a single character? + +You can search for a line containing only a single character using: > + + /^\s*\a\s*$ +< +For more information, read > + + :help /^ + :help /\a + :help /\s + :help /* + :help /$ +< + *faq-11.14* +11.14. How do I search and replace a string in multiple files? + +You can use the 'argdo' or 'bufdo' or 'windo' commands to execute an ex +command on multiple files. For example: > + + :argdo %s/foo/bar/g +< +For more information, read > + + :help :argdo + :help :bufdo + :help :windo +< + *faq-11.15* +11.15. I am using the ":s" substitute command in a mapping. When a search + for a pattern fails, the map terminates. I would like the map to + continue processing the next command, even if the substitute command + fails. How do I do this? + +You can use the 'e' flag to the substitute command to continue processing +other commands in a map, when a pattern is not found. + +For more information, read > + + :help :s_flags +< + *faq-11.16* +11.16. How do I search for the n-th occurrence of a character in a line? + +To search for the n-th occurrence of a character in a line, you can prefix +the 'f' command with a number. For example, to search for the 5th +occurrence of the character @ in a line, you can use the command 5f@. This +assumes the cursor is at the beginning of the line - and that this first +character is not the one your are looking for. + +For more information, read > + + :help f + :help F + :help t + :help T + :help ; + :help , +< + *faq-11.17* +11.17. How do I replace a tab (or any other character) with a hard return + (newline) character? + +You can replace a tab (or any other character) with a hard return (newline) +character using the following command: > + + :s/\t/\r/ +< +Note that in the above command, if you use \n instead of \r, then the tab +characters will not be replaced by a new-line character. + +For more information, read > + + :help sub-replace-special + :help NL-used-for-Nul + :help CR-used-for-NL +< + *faq-11.18* +11.18. How do I search for a character by its ASCII value? + +You can search for a character by its ASCII value by pressing CTRL-V +followed by the decimal or hexadecimal or octal value of that character in +the search "/" command. To determine the ASCII value of a character you +can use the ":ascii" or the "ga" command. + +For more information, read > + + :help i_CTRL-V_digit + :help :ascii + :help ga +< + *faq-11.19* +11.19. How do I search for long lines? + +You can search for long lines or lines containing more than a specific +number of characters using the Vim regular-expressions in the search +command. For example, to search for all the lines containing more than 80 +characters, you can use one of the following commands: > + + /^.\{80}.*$ + /^.*\%80c.*$ +< +For more information, read > + + :help /\{ + :help /\%c +< + *faq-11.20* +11.20. How do I display all the lines in the current buffer that contain a + specified pattern? + +You can use the following command to display all the lines in the current +buffer that contain a specified pattern: > + + :g/<pattern>/p +< +For example, the following command will display all the lines in the +current buffer that contain "vim": > + + :g/vim/p +< +If you also want the corresponding line numbers, then you can use the +following command: > + + :g/<pattern>/# +< +For more information, read > + + :help :global + :help :print + :help :number +< + *faq-11.21* +11.21. How do I search for a text string that spans multiple lines? + +You can search for a text string that spans multiple lines using the \_x +regular expression atom. For example, to search for the text string "Hello +World", you can use the following search command: > + + /Hello\_sWorld +< +This will match the word "Hello" followed by a newline character and then +the word "World" at the beginning of the next line. This will also match +the word "Hello" immediately followed by a space character and then the +word "World". When searching for the "Hello World" string, to include the +space characters at the end and beginning of the line, you can use the +following search command: > + + /Hello\_s\+World +< +For more information, read > + + :help 27.8 + :help pattern-atoms + :help /\_ + :help pattern-searches +< + *faq-11.22* +11.22. How do I search for a pattern within the specified range of lines + in a buffer? + +You can search for a pattern within a range of lines using the \%>l +and \%<l regular expression atoms. + +For example, to search for the word 'white' between the lines 10 and 30 in +a buffer, you can use the following command: > + + /white\%>10l\%<20l +< +For more information, read > + + :help /\%l +< + +============================================================================= + *faq-12* +SECTION 12 - CHANGING TEXT + + *faq-12.1* +12.1. How do I delete all the trailing white space characters (SPACE and + TAB) at the end of all the lines in a file? + +You can use the ":substitute" command on the entire file to search and +remove all the trailing white space characters: > + + :%s/\s\+$// +< +For more information, read > + + :help :% + :help :s + :help /\s + :help /\+ + :help /$ +< + *faq-12.2* +12.2. How do I replace all the occurrences of multiple consecutive space + characters to a single space? + +You can use the following command to replace all the occurrences of +multiple consecutive space characters to a single space: > + + :%s/ \{2,}/ /g +< +For more information, read > + + :help :% + :help :s + :help /\{ + :help :s_flags +< + *faq-12.3* +12.3. How do I reduce a range of empty lines into one line only? + +You can use the following command to reduce a range of empty lines into one +line only: > + + :v/./.,/./-1join +< +The explanation for this command is below: > + + :v/./ Execute the following command for all lines not + containing a character (empty lines). + ., Use the current line as the start of the range of + lines. + /./ Use the line containing a character as the last line. + -1 Adjust the range of lines to end with the line before + the last line. + j Join the lines in the range. +< +Note that this will give an error message if the empty lines are at the end +of the file. To correct this, you have to add a temporary line at the end +of the file, execute the command and then remove the temporary line. + +For more information, read > + + :help :v + :help :join + :help cmdline-ranges + :help collapse +< + *faq-12.4* +12.4. How do I delete all blank lines in a file? How do I remove all the + lines containing only space characters? + +To remove all blank lines, use the following command: > + + :g/^$/d +< +To remove all lines with only whitespace (spaces or tabs) in them, use the +following command: > + + :g/^\s\+$/d +< +To remove all the lines with only whitespace, if anything, use the +following command: > + + :g/^\s*$/d +< + *faq-12.5* +12.5. How do I copy/yank the current word? + +You can use the "yiw" (yank inner word without whitespace) command or the +"yaw" (yank a word with whitespace) command to copy/yank the current +word. + +For more information, read > + + :help 04.6 + :help 04.8 + :help iw + :help yank + :help text-objects + :help objects +< + *faq-12.6* +12.6. How do I yank text from one position to another position within a + line, without yanking the entire line? + +You can specify a motion command with the yank operator (y) to yank text +from one position to another position within a line. For example, to yank +from the current cursor position till the next letter x, use yfx or Fx or +tx or Tx. To yank till the nth column, use n|. To yank till the next +occurrence of a 'word', use /word. To do a yank till the nth column on +another line, first mark the position using the 'ma' command, go to the +start of the yank position, and then yank till the mark using y`a (note the +direction of the quote) + +For more information, read > + + :help yank + :help motion.txt + :help 4.6 +< + *faq-12.7* +12.7. When I yank some text into a register, how do I append the text to + the current contents of the register? + +When you specify the register for some operation, if you use the upper-case +for the register name, then the new text will be appended to the existing +contents. For example, if you have some text in the register "a". If you +want to append some new text to this, you have to use the "A" register +name. If you use the lowercase register name, then the contents of the +register will be overwritten with the new text. + +For more information, read > + + :help quote + :help quote_alpha + :help 10.1 +< + *faq-12.8* +12.8. How do I yank a complete sentence that spans over more than one line? + +To yank a complete sentence that spans over more than one line you have to +use the yank operator followed by a motion command. For example: > + + y) +< +From inside the sentence you can use 'yi)' to yank the sentence. + +For more information, read > + + :help yank + :help {motion} + :help object-motions + :help 4.6 +< + *faq-12.9* +12.9. How do I yank all the lines containing a pattern into a buffer? + +You can use the ":global" command to yank all the lines containing the +pattern into a register and then paste the contents of the register into +the buffer: > + + :let @a='' + :g/mypattern/y A +< +The first command, clears the contents of the register "a". The second +command copies all the lines containing "mypattern" into the register "a". +Note that the capital letter "A" is used to append the matched lines. Now +you can paste the contents of register "a" to a buffer using "ap command. +For more information, read > + + :help :g + :help :y + :help let-register + :help quote_alpha + :help put + :help registers + :help :registers +< + *faq-12.10* +12.10. How do I delete all the lines in a file that does not contain a + pattern? + +You can use ":v" command to delete all the lines that does not contain a +pattern: > + + :v/pattern/d +< +or > + + :g!/pattern/d +< +For more information, read > + + :help :v + :help :g +< + *faq-12.11* +12.11. How do I add a line before each line with "pattern" in it? + +You can use the following command to add a line before each line with +"pattern" in it: > + + :g/pattern/normal Oi<line of text goes here> +< +Alternatively you can yank the line using the Y command and then insert the +line using the following command: > + + :g/pattern/put! +< +For more information, read > + + :help :g + :help :put + :help insert + :help 0 +< + *faq-12.12* +12.12. Is there a way to operate on a line if the previous line contains a + particular pattern? + +You can use the ":global" command to operate on a line, if the previous +line contains a particular pattern: > + + :g/<pattern>/+{cmd} +< +For more information, read > + + :help :g + :help :range +< + *faq-12.13* +12.13. How do I execute a command on all the lines containing a pattern? + +You can use the ":global" (:g) command to execute a command on all the +lines containing a pattern. > + + :g/my pattern/d +< +If you want to use a non-Ex command, then you can use the ":normal" +command: > + + :g/my pattern/normal {command} +< +Unless you want the normal mode commands to be remapped, consider using a +":normal!" command instead (note the "!"). + +For more information, read > + + :help :global + :help :v + :help :normal +< + *faq-12.14* +12.14. Can I copy the character above the cursor to the current cursor + position? + +In Insert mode, you can copy the character above the cursor to the current +cursor position by typing <Ctrl-Y>. The same can be done with the +characters below the cursor by typing <Ctrl-E>. + +For more information, read > + + :help i_CTRL-Y + :help i_CTRL-E +< + *faq-12.15* +12.15. How do I insert a blank line above/below the current line without + entering insert mode? + +You can use the ":put" ex command to insert blank lines. For example, try > + + :put ='' + :put! ='' +< +For more information, read > + + :help :put +< + *faq-12.16* +12.16. How do I insert the name of current file into the current buffer? + +There are several ways to insert the name of the current file into the +current buffer. In insert mode, you can use the <C-R>% or the +<C-R>=expand("%") command. In normal mode, you can use the ":put =@%" +command. + +For more information, read > + + :help i_CTRL-R + :help expand() + :help !! +< + *faq-12.17* +12.17. How do I insert the contents of a Vim register into the current + buffer? + +In insert mode, you can use the <C-R><register> command to insert the +contents of <register>. For example, use <C-R>a to insert the contents +of register "a" into the current buffer. + +In normal mode, you can use the ":put <register>" command to insert the +contents of <register>. For example, use the ":put d" command to insert +the contents of register "d" into the current buffer. + +For more information, read > + + :help i_CTRL-R + :help :put +< + *faq-12.18* +12.18. How do I move the cursor past the end of line and insert some + characters at some columns after the end of the line? + +You can set the "virtualedit" option to move the cursor past the +end-of-line and insert characters in a column after the end-of-line. To +start the virtual mode, use > + + :set virtualedit=all +< +For more information, read > + + :help 'virtualedit' +< + *faq-12.19* +12.19. How to replace the word under the cursor (say: junk) with + "foojunkbar" in Vim? + +There are several ways to do this. If the word is the first such word on +the line, use the following command: > + + :exe "s/".expand("<cword>")."/foo&bar/" +< +Too match specifically you could use a more complex substitution like this: > + + :exe 's/\<'.expand("<cword>").'\%>'.(col(".")-1).'c\>/foo&bar/' +< +You can also use the command: ciwfoo<C-R>"bar<Esc> + +For more information, read > + + :help :substitute + :help expand() + :help col() + :help /\%c +< + *faq-12.20* +12.20. How do I replace a particular text in all the files in a directory? + +You can use the "argdo" command to execute the substitute command on all +the files specified as arguments: > + + :args * + :argdo %s/<your_text>/<replacement_text>/ge | update +< +For more information, read > + + :help :args_f + :help :argdo + :help :s_flags +< + *faq-12.21* +12.21. I have some numbers in a file. How do I increment or decrement the + numbers in the file? + +You can use the CTRL-A key to increment the number and the CTRL-X key to +decrement the number. You can also specify the number to +increment/decrement from the number by specifying a count to the key. This +works for decimal, octal and hexadecimal numbers. + +For more information, read > + + :help CTRL-A + :help CTRL-X + :help 'nrformats' +< + *faq-12.22* +12.22. How do I reuse the last used search pattern in a ":substitute" + command? + +To reuse the last used search pattern in a ":substitute" command, don't +specify a new search pattern: > + + :s/pattern/newtext/ + :s//sometext/ +< +In the second ":s" command, as a search pattern is not specified, the +pattern specified in the first ":s" command 'pattern' will be used. + +If you want to change the search pattern but repeat the substitution +pattern you can use the special right hand side, you can use the tilde +character: > + + :s/newpattern/~/ +< +For more information, read > + + :help :s + :help :& + :help :~ + :help & + :help sub-replace-special +< + *faq-12.23* +12.23. How do I change the case of a string using the ":substitute" + command? + +You can use special characters in the replacement string for a +":substitute" command to change the case of the matched string. For +example, to change the case of the string "MyString" to all uppercase, you +can use the following command: > + + :%s/MyString/\U&/g +< +To change the case to lowercase, you can use the following command: > + + :%s/MyString/\L&/g +< +To change the case of the first character in all the words in the current +line to uppercase, you can use the following command: > + + :s/\<\(.\)\(\k*\)\>/\u\1\L\2/g +< +For more information, read > + + :help sub-replace-special + :help :substitute + :help \U + :help \L + :help \u +< + *faq-12.24* +12.24. How do I enter characters that are not present in the keyboard? + +You can use digraphs to enter characters that are not present in the +keyboard. You can use the ":digraphs" command to display all the currently +defined digraphs. You can add a new digraph to the list using the +":digraphs" command. + +For more information, read > + + :help digraphs + :help 'digraphs' + :help 24.9 +< + *faq-12.25* +12.25. Is there a command to remove any or all digraphs? + +No. The digraphs table is defined at compile time. You can only add new +ones. Adding a command to remove digraphs is on the todo list. + + *faq-12.26* +12.26. In insert mode, when I press the backspace key, it erases only the + characters entered in this instance of insert mode. How do I erase + previously entered characters in insert mode using the backspace + key? + +You can set the 'backspace' option to erase previously entered characters +in insert mode: > + + :set backspace=indent,eol,start +< +For more information, read > + + :help 'backspace' +< + *faq-12.27* +12.27. I have a file which has lines longer than 72 characters terminated + with "+" and wrapped to the next line. How can I quickly join the + lines? + +You can use the ":global" command to search and join the lines: > + + :g/+$/j +< +This will, however, only join every second line. A couple of more complex +examples which will join all consecutive lines with a "+" at the end are: > + + :g/*$/,/\(^\|[^+]\)$/j + :g/+$/mark a | .,/\(^\|[^+]\)$/s/+$// | 'a,.j +< +For more information, read > + + :help :g + :help :j + :help :mark +< + *faq-12.28* +12.28. How do I paste characterwise yanked text into separate lines? + +You can use the ":put" command to paste characterwise yanked text into new +lines: > + + :put =@" +< +For more information, read > + + :help :put + :help quote_= +< + *faq-12.29* +12.29. How do I change the case (uppercase, lowercase) of a word or a + character or a block of text? + +You can use the "~" command to switch the case of a character. + +You can change the case of the word under the cursor to uppercase using the +"gUiw" or "viwU" command and to lowercase using the "guiw" or "viwu" +command. + +You can switch the case (upper case to lower case and vice versa) of the +word under the cursor using the "viw~" or "g~iw" command. + +You can use the "gUgU" command to change the current line to uppercase and +the "gugu" command to change the current line to lowercase. + +You can use the "g~g~" command to switch the case of the current line. You +can use the "g~{motion}" or "{Visual}~" commands to switch the case of a +block of text. + +For more information, read > + + :help case +< + *faq-12.30* +12.30. How do I enter ASCII characters that are not present in the + keyboard? + +You can enter ASCII characters that are not present in the keyboard by +pressing CTRL-V and then the ASCII character number. You can also use +digraphs to enter special ASCII characters. + +For more information, read > + + :help i_CTRL-V_digit + :help digraphs + :help 45.5 +< + *faq-12.31* +12.31. How do I replace non-printable characters in a file? + +To replace a non-printable character, you have to first determine the ASCII +value for the character. You can use the ":ascii" ex command or the "ga" +normal-mode command to display the ASCII value of the character under the +cursor. + +You can enter the non-printable character by entering CTRL-V followed by +the decimal number 1-255 (with no leading zero), or by x and a hex number +00-FF, or by an octal number 0-0377 (with leading zero), or by u and a hex +number 0-FFFF, or by U and a hex number 0-7FFFFFFF + +Another alternative is to use the ":digraphs" ex command to display the +digraphs for all characters, together with their value in decimal and +alpha. You can enter a non-printable character by entering CTRL-K followed +by two alphanumeric characters (a digraph). + +For more information, read > + + :help :ascii + :help i_CTRL-V + :help i_CTRL-V_digit + :help :digraphs +< + *faq-12.32* +12.32. How do I remove duplicate lines from a buffer? + +You can use the following user-defined command to remove all the duplicate +lines from a buffer: + +:command -range=% Uniq <line1>,<line2>g/^\%<<line2>l\(.*\)\n\1$/d + +Add the above command to your .vimrc file and invoke ":Uniq" to remove all +the duplicate lines. + + *faq-12.33* +12.33. How do I prefix all the lines in a file with the corresponding line + numbers? + +You can prefix the lines with the corresponding line number in several +ways. Some of them are listed below: > + + :%s/^/\=line('.'). ' ' + :%s/^/\=strpart(line(".")." ", 0, 5) + :g/^/exec "s/^/".strpart(line(".")." ", 0, 4) +< +For more information, read > + + :help sub-replace-special + :help line() + :help expr6 + :help strpart() + :help :execute + :help :global +< + *faq-12.34* +12.34. How do I exchange (swap) two characters or words or lines? + +You can exchange two characters with the "xp" command sequence. The 'x' +will delete the character under the cursor and 'p' will paste the just +deleted character after the character under the cursor. This will result +in exchanging the two characters. + +You can exchange two words with the "deep" command sequence (start with the +cursor in the blank space before the first word). + +You can exchange two lines with the "ddp" command sequence. The 'dd' will +delete the current line and 'p' will paste the just deleted line after the +current line. This will result in exchanging the two lines. + +All of the above operations will change the " unnamed register. + +You can use the ":m +" ex command to exchange two lines without changing the +unnamed register. + +For more information, read > + + :help x + :help p + :help dd + :help d + :help e + :help linewise-register + :help quotequote + :help :move +< + +============================================================================= + *faq-13* +SECTION 13 - COMPLETION IN INSERT MODE + + *faq-13.1* +13.1. How do I complete words or lines in insert mode? + +In insert mode, you can complete words using the CTRL-P and CTRL-N keys. +The CTRL-N command searches forward for the next matching keyword. +The CTRL-P command searches backwards for the next matching keyword. + +In insert mode, you can use the CTRL-X CTRL-L command sequence to complete +lines that starts with the same characters as in the current line before +the cursor. To get the next matching line, press the CTRL-P or CTRL-N keys. +There are a lot of other keys/ways available to complete words in insert +mode. + +Vim supports completion of the following items: > + + CTRL-X CTRL-F file names + CTRL-X CTRL-L whole lines + CTRL-X CTRL-D macro definitions (also in included files) + CTRL-X CTRL-I current and included files + CTRL-X CTRL-K words from a dictionary + CTRL-X CTRL-T words from a thesaurus + CTRL-X CTRL-] tags + CTRL-X CTRL-V Vim command line +< +For more information, read > + + :help 24.3 + :help ins-completion +< + *faq-13.2* +13.2. How do I complete file names in insert mode? + +In insert mode, you can use the CTRL-X CTRL-F command sequence to complete +filenames that start with the same characters as in the current line before +the cursor. + +For more information, read > + + :help compl-filename +< + *faq-13.3* +13.3. I am using CTRL-P/CTRL-N to complete words in insert mode. How do I + complete words that occur after the just completed word? + +You can use CTRL-X CTRL-N and CTRL-X CTRL-P keys to complete words that are +present after the just completed word. + +For more information, read > + + :help i_CTRL-X_CTRL-P + :help i_CTRL-X_CTRL-N + :help ins-completion +< + +============================================================================= + *faq-14* +SECTION 14 - TEXT FORMATTING + + *faq-14.1* +14.1. How do I format a text paragraph so that a new line is inserted at + the end of each wrapped line? + +You can use the 'gq' command to format a paragraph. This will format the +text according to the current 'textwidth' setting. + +Note that the gq operator can be used with a motion command to operate on a +range of text. For example: > + + gqgq - Format the current line + gqap - Format current paragraph + gq3j - Format the current and the next 3 lines +< +For more information, read > + + :help gq + :help formatting + :help usr_25.txt + :help motion.txt +< + *faq-14.2* +14.2. How do I format long lines in a file so that each line contains less + than 'n' characters? + +First set the 'textwidth' option to the desired value: > + + set textwidth=70 +< +Now to break the long lines to the length defined by the 'textwidth' +option, use > + + :g/./normal gqq +< +For more information, read > + + :help gq +< + *faq-14.3* +14.3. How do I join short lines to form a paragraph? + +First, make sure the 'textwidth' option is set to a high value: > + + :set textwidth=99999 +< +Next, join the short lines to form a paragraph using the command: > + + 1GgqG +< +The above command will operate on the entire file. To do the formatting on +all paragraphs in a specific range, use: > + + :'a,'bg/\S/normal gq} +< +For more information, read > + + :help gq + :help G + :help gqq +< + *faq-14.4* +14.4. How do I format bulleted and numbered lists? + +You can configure Vim to format bulleted and numbered lists using the +'formatoptions' option. For example, you can format the list of the +following format: + + - this is a test. this is a test. this is a test. this is a test. + this is a test. + +into this format: + + - this is a test. this is a test. this is a test. this is a test. + this is a test. + +You can use the 'n' flag in the 'formatoptions' to align the text. > + + :set fo+=n +< +With this option, when formatting text, Vim will recognize numbered lists. +For this option to work, the 'autoindent' option also must be set. + +For more information, read > + + :help 'formatoptions' + :help fo-table +< + *faq-14.5* +14.5. How do I indent lines in insert mode? + +In insert mode, you can press the CTRL-T key to insert one shiftwidth of +indent at the start of the current line. In insert mode, you can use the +CTRL-D key to delete on shiftwidth of indent at the start of the current +line. You can also use the CTRL-O >> and CTRL-O << commands to indent the +current line in insert mode. + +For more information, read > + + :help i_CTRL-T + :help i_CTRL-D + :help i_0_CTRL-D + :help i_CTRL-O + :help >> + :help << +< + *faq-14.6* +14.6. How do I format/indent an entire file? + +You can format/indent an entire file using the gg=G command, where > + + gg - Goto the beginning of the file + = - apply indentation + G - till end of file +< +For more information, read > + + :help gg + :help = + :help G + :help 'formatprg' + :help C-indenting +< + *faq-14.7* +14.7. How do I increase or decrease the indentation of the current line? + +You can use the '>>' and '<<' commands to increase or decrease the +indentation of the current line. + +For more information, read > + + :help shift-left-right + :help >> + :help << + :help 'shiftwidth' +< + *faq-14.8* +14.8. How do I indent a block/group of lines? + +You can visually select the group of lines and press the > or < key to +indent/unindent the lines. You can also use the following ex-command to +indent the lines > + + :10,20> +< +For more information, read > + + :help shift-left-right + :help v_> + :help v_< + :help :< + :help :> +< + *faq-14.9* +14.9. When I indent lines using the > or < key, the standard 8-tabstops are + used instead of the current 'tabstop' setting. Why? + +The number of spaces used when lines are indented using the ">" operator is +controlled by the 'shiftwidth' option. The 'tabstop' setting is not used +for indentation. To change the amount of spaces used for indentation, use +the command: > + + :set shiftwidth=4 +< +For more information, read > + + :help 'shiftwidth' + :help >> + :help 'softtabstop' +< + *faq-14.10* +14.10. How do I turn off the automatic indentation of text? + +By default, the automatic indentation of text is not turned on. Check the +configuration files (.vimrc, .gvimrc) for settings related to indentation. +Make sure the ":filetype indent on" command is not present. If it is +present, remove it. Also, depending on your preference, you may also want +to check the value of the 'autoindent', 'smartindent', 'cindent' and +'indentexpr' options and turn them off as needed. + +For more information, read > + + :help :filetype-indent-off + :help 'autoindent' + :help 'smartindent' + :help 'cindent' + :help 'indentexpr' +< + *faq-14.11* +14.11. How do I configure Vim to automatically set the 'textwidth' option + to a particular value when I edit mails? + +You can use the 'FileType' autocommand to set the 'textwidth' option: > + + autocmd FileType mail set tw=<your_value> +< +For more information, read > + + :help :autocmd + :help FileType + :help usr_43.txt +< + *faq-14.12* +14.12. Is there a way to make Vim auto-magically break lines? + +Yes. Set the 'textwidth' option to the preferred length for a line. Then +Vim will auto-magically break the newly entered lines. For example: > + + :set textwidth=75 +< +For more information, read > + + :help textwidth + :help ins-textwidth + :help 'formatoptions' + :help fo-table + :help formatting +< + *faq-14.13* +14.13. I am seeing a lot of ^M symbols in my file. I tried setting the + 'fileformat' option to 'dos' and then 'unix' and then 'mac'. None of + these helped. How can I hide these symbols? + +When a file is loaded in Vim, the format of the file is determined as +below: + +- If all the lines end with a new line (<NLL>), then the fileformat is + 'unix'. +- If all the lines end with a carriage retuurn (<CR>) followed by a new line + (<NL>), then the fileformat is 'dos'. +- If all the lines end with carriage returnn (<CR>), then the fileformat is + 'mac'. + +If the file has some lines ending with <CR> and some lines ending with <CR> +followed by a <NL>, then the fileformat is set to 'unix'. + +You can change the format of the current file, by modifying the +'fileformat' option and then saving the file: > + + :set fileformat=dos + :w +< +To display the format of the current file, use > + + :set fileformat? +< +The above behavior is also controlled by the 'fileformats' option. You can +try the following commands: > + + :set fileformats+=unix + :e <your_file> + :set fileformat=unix + :w +< +For more information, read > + + :help 'fileformats' + :help 'fileformat' + :help file-formats + :help DOS-format-write + :help Unix-format-write + :help Mac-format-write + :help dos-file-formats + :help 23.1 +< + *faq-14.14* +14.14. When I paste some text into a Vim buffer from another application, + the alignment (indentation) of the new text is messed up. How do I + fix this? + +The indentation of the text is messed up due to various Vim settings +related to indentation (like autoindent, smartindent, textwidth etc). +Before pasting text into Vim, you can set the 'paste' option: > + + :set paste +< +After pasting the text, you can turn off the option using: > + + :set nopaste +< +You can also toggle the paste option using: > + + :set paste! +< +If you can access the clipboard through the * register, then you can paste +the text without indentation using CTRL-R CTRL-O *. + +For more information, read > + + :help 'paste' + :help 'pastetoggle' + :help i_CTRL-R_CTRL_O + :help clipboard + :help xterm-clipboard + :help gui-clipboard +< + *faq-14.15* +14.15. When there is a very long wrapped line (wrap is "on") and a line + doesn't fit entirely on the screen it is not displayed at all. There + are blank lines beginning with '@' symbol instead of wrapped line. If + I scroll the screen to fit the line the '@' symbols disappear and the + line is displayed again. What Vim setting control this behavior? + +You can set the 'display' option to 'lastline' to display as much as +possible of the last line in a window instead of displaying the '@' +symbols. > + + :set display=lastline +< +For more information, read > + + :help 'display' +< + *faq-14.16* +14.16. How do I convert all the tab characters in a file to space + characters? + +You can use the ":retab" command to update all the tab characters in the +current file with the current setting of 'expandtab' and 'tabstop'. For +example, to convert all the tabs to white spaces, use > + + :set expandtab + :retab +< +For more information, read > + + :help :retab + :help 'expandtab' + :help 'tabstop' + :help 25.3 +< + *faq-14.17* +14.17. What Vim options can I use to edit text that will later go to a word + processor? + +You can set the following options to edit text that will later go into a +word processor: > + + :set wrap + :set linebreak + :set textwidth=0 + :set showbreak=>>> +< +You can use the 'gk' and 'gj' commands to move one screen line up and down. +For more information, read > + + :help 'wrap' + :help 'linebreak' + :help 'textwidth' + :help 'showbreak' + :help gk + :help gj +< + +============================================================================= + *faq-15* +SECTION 15 - VISUAL MODE + + *faq-15.1* +15.1. How do I do rectangular block copying? + +You can do rectangular block copying in Vim using the blockwise visual +mode. To start blockwise visual mode use the CTRL-V key. Move the cursor +using any of the motion commands and then use the y operator to yank to +visually selected text. + +If CTRL-V does not work as expected, it may have been remapped to CTRL-Q by +the mswin.vim script which is often sourced by a vimrc on Windows machines +to mimic some common short cuts from other programs. + +For more information, read > + + :help 04.4 + :help blockwise-visual + :help visual-mode + :help Q_vi +< + *faq-15.2* +15.2. How do I delete or change a column of text in a file? + +You can use the Vim block-wise visual mode to select the column of text and +apply an operator (delete, change, copy, etc) on it. + +For more information, read > + + :help visual-block + :help visual-operators +< + *faq-15.3* +15.3. How do I apply an ex-command on a set of visually selected lines? + +When you select a range of lines in visual mode, the < register is set to +the start of the visual region and the > register is set to the end of the +visual region. You can use these registers to specify the range for an ex +command. After visually selecting the lines, press ":" to go to the command +mode. Vim will automatically insert the visual range '<,'>. You can run +any ex-command on the visual range. + +For more information, read > + + :help v_: + :help '< + :help '> +< + *faq-15.4* +15.4. How do I execute an ex command on a column of text selected in Visual + block mode? + +All the ex commands operate on whole lines only. If you try to execute an +ex command on a column of text selected in visual block mode, Vim will +operate on all the selected lines (instead of the selected columns). You +can use the vis.vim plugin script from http://vim.sourceforge.net scripts +archive to do this. + +For more information, read > + + :help cmdline-ranges + :help 10.3 + :help cmdline-lines +< + *faq-15.5* +15.5. How do I select the entire file in visual mode? + +You can select the entire file in visual mode using ggVG. > + + gg - go to the beginning of the file. + V - Start linewise visual mode + G - goto the end of the file. +< +For more information, read > + + :help gg + :help linewise-visual + :help G +< + *faq-15.6* +15.6. When I visually select a set of lines and press the > key to indent + the selected lines, the visual mode ends. How can I reselect the + region for further operation? (or) How do I re-select the last + selected visual area again? + +You can use the 'gv' command to reselect the last selected visual area. You +can also use the marks '< and '> to jump to the beginning or the end of the +last selected visual area. + +For more information, read > + + :help gv + :help '< + :help '> +< + *faq-15.7* +15.7. How do I jump to the beginning/end of a visually selected region? + +You can use the 'o' command to jump to the beginning/end of a visually +selected region. + +For more information, read > + + :help v_o +< + *faq-15.8* +15.8. When I select text with mouse and then press : to enter an ex + command, the selected text is replaced with the : character. How do I + execute an ex command on a text selected using the mouse similar to + the text selected using the visual mode? + +This will happen if you have configured Vim to use select mode instead of +Visual mode by setting the 'selectmode' option. Check the value of this +option: > + + :set selectmode? +< +This mode is known as selectmode and is similar to the visual mode. This +option is also automatically set when you use the "behave mswin" command. +Select mode looks like visual mode, but it is similar to the selection mode +in MS-Windows. + +For more information, read > + + :help Select-mode + :help 'selectmode' + :help 9.4 + :help :behave +< + *faq-15.9* +15.9. When I select a block of text using the mouse, Vim goes into + selection mode instead of Visual mode. Why? + +The 'selectmode' option controls whether Select mode will be started when +selecting a block of text using the mouse. To start Visual mode when +selecting text using mouse, remove the 'mouse' value from the 'selectmode' +option: > + + :set selectmode-=mouse +< +Note that by default, the 'selectmode' option will be set to empty, so that +always visual mode is used. + +For more information, read > + + :help 'selectmode' + :help Select-mode + :help :behave +< + *faq-15.10* +15.10. How do I visually select the last copy/pasted text? + +You can use the '[ and '] marks to visually select the last copy/pasted +text. The '[ mark is set to the beginning of the last changed/yanked text +and the '] mark is set to the end of the last changed/yanked text. To +visually select this block of text use the command '[v'] + +For more information, read > + + :help '[ + :help '] + :help `a + :help v +< + +============================================================================= + *faq-16* +SECTION 16 - COMMAND-LINE MODE + + *faq-16.1* +16.1. How do I use the name of the current file in the command mode or an + ex command line? + +In the command line, the '%' character represents the name of the current +file. In some commands, you have to use expand("%") to get the filename: > + + :!perl % +< +For more information, read > + + :help :_% + :help cmdline-special + :help expand() +< + *faq-16.2* +16.2. How do I edit the text in the Vim command-line effectively? + +You can use the command-line window for editing Vim command-line text. To +open the Vim command-line window use the "q:" command in normal mode. In +command-line mode, use the CTRL-F key. In this window, the command line +history will be displayed. You can use normal Vim keys/commands to edit any +previous/new command line. To execute a command line, press the +enter/return key. + +In a similar vain, the search history can be edited with "q/" and "q?" +commands. + +For more information, read > + + :help cmdline-window +< + *faq-16.3* +16.3. How do I switch from Vi mode to Ex mode? + +You can use the Q command to switch from Vi mode to Ex mode. To switch from +Ex mode back to the Vi mode, use the :vi command. + +For more information, read > + + :help Q + :help gQ + :help Ex-mode + :help :vi +< + *faq-16.4* +16.4. How do I copy the output from an ex-command into a buffer? + +To copy the output from an ex-command into a buffer, you have to first get +the command output into a register. You can use the ":redir" command to get +the output into a register. For example, > + + :redir @a + :g/HelloWord/p + :redir END +< +Now the register 'a' will contain the output from the ex command +"g/HelloWord/p". Now you can paste the contents of the register 'a' into a +buffer. You can also send or append the output of an ex-command into a file +using the 'redir' command. + +You can prefix the ":global" command with ":silent", to avoid having the +lines printed to the screen. + +To redirect the output from an ex-command to a file, you can use the +following set of commands: > + + :redir > myfile + :g/HelloWord/p + :redir END +< +For more information, read > + + :help :redir + :help :silent +< + *faq-16.5* +16.5. When I press the tab key to complete the name of a file in the + command mode, if there are more than one matching file names, then + Vim completes the first matching file name and displays a list of all + matching filenames. How do I configure Vim to only display the list + of all the matching filenames and not complete the first one? + +You can modify the 'wildmode' option to configure the way Vim completes +filenames in the command mode. In this case, you can set the 'wildmode' +option to 'list': > + + :set wildmode=list +< +For more information, read > + + :help 'wildmode' +< + *faq-16.6* +16.6. How do I copy text from a buffer to the command line and from the + command line to a buffer? + +To copy text from a buffer to the command line, after yanking the text from +the buffer, use Ctrl-R 0 in the command line to paste the text. You can +also yank the text to a specific register and use CTRL-R <register> to +paste the text to the command line. You can use CTRL-R CTRL-W to paste the +word under the cursor in the command line. + +To copy text from the command line into a buffer, you can paste the +contents of the : register using the ":p command. The most recently +executed command line is stored in the : register. + +Another approach for copying and pasting text to and from the command line +is to open the command line window using q: from normal mode or CTRL-F from +the command-line mode. In the command line window you can use all the Vim +commands to edit the command line. + +For more information, read > + + :help c_CTRL-R + :help quote_: + :help cmdline-window +< + *faq-16.7* +16.7. How do I put a command onto the command history without executing it? + +To put a command onto the command history without executing it, press the +<Esc> key to cancel the command. + +For more information, read > + + :help c_<Esc> +< + *faq-16.8* +16.8. How do I increase the height of the command-line? + +You can increase the height of the command-line by changing the 'cmdheight' +option: > + + :set cmdheight=2 +< +For more information, read > + + :help 'cmdheight' + :help hit-enter + :help 05.7 +< + +============================================================================= + *faq-17* +SECTION 17 - VIMINFO + + *faq-17.1* +17.1. When I invoke Vim, I get error messages about illegal characters in + the viminfo file. What should I do to get rid of these messages? + +You can remove the $HOME/.viminfo or the $HOME/_viminfo file to get rid of +these error messages. + +For more information, read > + + :help viminfo-errors + :help viminfo-file-name + :help viminfo + :help 21.3 +< + *faq-17.2* +17.2. How do I disable the viminfo feature? + +By default, the viminfo feature is disabled. If the viminfo feature is +enabled by a system-wide vimrc file, then you can disable the viminfo +feature by setting the 'viminfo' option to an empty string in your local +.vimrc file: > + + :set viminfo="" +< +For more information, read > + + :help 'viminfo' +< + *faq-17.3* +17.3. How do I save and use Vim marks across Vim sessions? + +You can save and restore Vim marks across Vim sessions using the viminfo +file. To use the viminfo file, make sure the 'viminfo' option is not empty. +To save and restore Vim marks, the 'viminfo' option should not contain the +'f' flag or should have a value greater than zero for the 'f' option. + +For more information, read > + + :help 21.3 + :help viminfo + :help 'viminfo' + :help :wviminfo + :help :rviminfo +< + +============================================================================= + *faq-18* +SECTION 18 - REMOTE EDITING + + *faq-18.1* +18.1. How do I open a file with existing instance of gvim? What happened to + the Vim 5.x OpenWithVim.exe and SendToVim.exe files? + +Starting with Vim6, the OLE version of OpenWithVim.exe and SendToVim.exe +Vim utilities are replaced by the new client-server feature. To open the +file j.txt with an existing instance of Gvim (MyVim), use: > + + $ gvim --servername MyVim --remote-silent j.txt +< +To list the server names of all the currently running Vim instances, use > + + $ vim --serverlist +< +To get more information about client-server feature, read > + + :help client-server +< + *faq-18.2* +18.2. How do I send a command to a Vim server to write all buffers to disk? + +You can use the Vim remote server functionality to do this: > + + $ gvim --servername myVIM --remote-send "<C-\><C-N>:wall<CR>" +< +For more information, read > + + :help client-server + :help CTRL-\_CTRL-N + :help :wall +< + *faq-18.3* +18.3. Where can I get the documentation about the Vim remote server + functionality? + +You can get more information about the Vim remote server functionality by +reading > + + :help client-server +< + +============================================================================= + *faq-19* +SECTION 19 - OPTIONS + + *faq-19.1* +19.1. How do I configure Vim in a simple way? + +You can use the ":options" command to open the Vim option window: > + + :options +< +This window can be used for viewing and setting all the options. + +For more information, read > + + :help :options +< + *faq-19.2* +19.2. How do I toggle the value of an option? + +You can prefix the option with "inv" to toggle the value of the option: > + + :set invignorecase + :set invhlsearch +< +You can also suffix the option with "!" to toggle the value: > + + :set ignorecase! + :set hlsearch! +< +For more information, read > + + :help set-option +< + *faq-19.3* +19.3. How do I set an option that affects only the current buffer/window? + +You can use the ":setlocal" command to set an option that will affect only +the current file/buffer: > + + :setlocal textwidth=70 +< +Note that not all options can have a local value. You can use ":setlocal" +command to set an option locally to a buffer/window only if the option is +allowed to have a local value. + +You can also use the following command to set a option locally: > + + :let &l:{option-name} = <value> +< +For more information, read > + + :help :setlocal + :help local-options +< + *faq-19.4* +19.4. How do I use space characters for a Vim option value? + +To use space characters in a Vim option value, you have to escape the space +character. For example: > + + :set tags=tags\ /usr/tags +< +For more information, read > + + :help option-backslash +< + *faq-19.5* +19.5. Can I add (embed) Vim option settings to the contents of a file? + +You can use modelines to add Vim option settings to the contents of a file. +For example, in a C file, you can add the following line to the top or the +bottom of the file: > + + /* vim:sw=4: */ +< +This will set the 'shiftwidth' option to 4, when editing that C file. +For this to work, the 'modeline' option should be set. By default, the +'modeline' option is set. The 'modelines' settings specifies the number of +lines that will be checked for the Vim set commands. + +For more information, read > + + :help 21.6 + :help modeline + :help auto-setting + :help 'modeline' + :help 'modelines' +< + *faq-19.6* +19.6. How do I display the line numbers of all the lines in a file? + +You can set the 'number' option to display the line numbers for all the +lines. > + + :set number +< +For more information, read > + + :help 'number' +< + *faq-19.7* +19.7. How do I change the width of the line numbers displayed using the + "number" option? + +The width used for displaying the line numbers for the 'number' option is +hard-coded in Vim. It is not possible to change this width by setting some +option. + +The request and the patch to add an option to change the number of columns +used for the 'number' option is in the Vim todo list: > + + "Add an option to set the width of the 'number' column. Eight + positions is often more than needed. Or adjust the width to the length + of the file? + Add patch that adds 'numberlen' option. (James Harvey) + Other patch with min and max from Emmanuel Renieris (2002 Jul 24) + Other patch without an option by Gilles Roy (2002 Jul 25)" +< + *faq-19.8* +19.8. How do I display (view) all the invisible characters like space, tabs + and newlines in a file? + +You can set the 'list' option to see all the invisible characters in your +file. > + + :set list +< +With this option set, you can view space characters, tabs, newlines, +trailing space characters and wrapped lines. + +To not display the invisible characters (which is the default), you have to +reset the 'list' option: > + + :set nolist + (or) + :set list! +< +The ":set list!" command will toggle the current setting of the boolean +'list' option. + +You can modify the 'listchars' option to configure how and which invisible +characters are displayed. For example, with the following command all the +trailing space characters will be displayed with a '.' character. > + + :set listchars=trail:. +< +For more information, read > + + :help 'listchars' + :help 'list' +< + *faq-19.9* +19.9. How do I configure Vim to always display the current line and column + number? + +You can set the 'ruler' option to display current column and line number in +the status line: > + + :set ruler +< +For more information, read > + + :help 'ruler' +< + *faq-19.10* +19.10. How do I display the current Vim mode? + +You can set the 'showmode' option to display the current Vim mode. In +Insert, Replace and Visual modes, Vim will display the current mode on the +last line. > + + :set showmode +< +For more information, read > + + :help 'showmode' +< + *faq-19.11* +19.11. How do I configure Vim to show pending/partial commands on the + status line? + +You can set the 'showcmd' option to display pending/partial commands in the +status line: > + + :set showcmd +< +For more information, read > + + :help 'showcmd' +< + *faq-19.12* +19.12. How do I configure the Vim status line to display different + settings/values? + +You can set the 'statusline' option to display different values/settings in +the Vim status line. + +For more information, read > + + :help 'statusline' + :help 'laststatus' + :help 'rulerformat' + :help 'ruler' +< + *faq-19.13* +19.13. How do I configure Vim to display status line always? + +You can set the 'laststatus' option to 2 to display the status line always. > + + :set laststatus=2 +< +For more information, read > + + :help 'laststatus' +< + *faq-19.14* +19.14. How do I make a Vim setting persistent across different Vim + invocations/instances/sessions? + +To make a Vim option setting persistent across different Vim instances, add +your setting to the .vimrc or .gvimrc file. You can also use the ":mkvimrc" +command to generate a vimrc file for the current settings. + +For more information, read > + + :help save-settings + :help vimrc + :help gvimrc + :help vimrc-intro + :help :mkvimrc + :help initialization +< + *faq-19.15* +19.15. Why do I hear a beep (why does my window flash) about 1 second after + I hit the Escape key? + +This is normal behavior. If your window flashes, then you've got the visual +bell on. Otherwise, you should hear a beep. + +Vim needs a timeout to tell the difference between a simple escape and, +say, a cursor key sequence. When you press a key in normal mode (and even +in insert mode) and that key is the beginning of a mapping, Vim waits a +certain amount of time to see if the rest of the mapping sequence follows. +If the mapping sequence is completed before a given timeout period, the +mapping for that sequence of keys is applied. If you interrupt the mapping, +the normal actions associated with the keys are executed. + +For example, if you have a mapping defined as ":imap vvv Vim is great!!" +and you type "vvv" quickly, the "Vim is great!!" will be inserted into your +text. But if you type "vv v" then that is what will put into your text. +This is also true if you type "vvv" too slowly where "too slowly" is longer +than the value for the timeout option. Setting the timeout option to a +larger value can help alleviate problems that appear when using function +keys over a slow line. + +For more information, read > + + :help ttimeout +< + *faq-19.16* +19.16. How do I make the 'c' and 's' commands display a '$' instead of + deleting the characters I'm changing? + +To make the 'c' and 's' commands display a '$' instead of deleting the +characters, add the $ flag to the 'cpoptions' option: > + + :set cpoptions+=$ +< +For more information, read > + + :help 'cpoptions' +< + *faq-19.17* +19.17. How do I remove more than one flag using a single ":set" command + from a Vim option? + +You can remove more than one flag from a Vim option using a single ":set" +command, by specifying the flags in exactly the same order as they appear +in the option. For example, if you use the following command to remove the +'t' and 'n' flags from the 'formatoptions' option: > + + :set formatoptions-=tn +< +The 't' and 'n' flags will be removed from the 'formatoptions' option, only +if the 'formatoptions' option contains these flags in this order: 'tn'. +Otherwise, it will not remove the flags. To avoid this problem, you can +remove the flags one by one: > + + :set formatoptions-=t formatoptions-=n +< +For more information, read > + + :help :set-= +< + +============================================================================= + *faq-20* +SECTION 20 - MAPPING KEYS + + *faq-20.1* +20.1. How do I know what a key is mapped to? + +To see what a key is mapped to, use the following commands: > + + :map <key> + :map! <key> +< +You can also check the mappings in a particular mode using one of the +":cmap", ":nmap", ":vmap", ":imap", ":omap", etc commands. + +For more information, read > + + :help map-listing + :help map-overview +< + *faq-20.2* +20.2. How do list all the user-defined key mappings? + +You can list all the user-defined key mappings using: > + + :map +< +For more information, read > + + :help map-listing +< + *faq-20.3* +20.3. How do I unmap a previously mapped key? + +You can unmap a previously mapped key using the ":unmap" command: > + + :unmap <key> + :unmap! <key> +< +For mode specific mappings, you can use one of the +":nunmap/:vunmap/:ounmap/:iunmap/:lunmap/:cunmap" commands. + +The following command will fail to unmap a buffer-local mapped key: > + + :unmap <key> +< +To unmap a buffer-local mapped key, you have to use the <buffer> keyword in +the unmap command: > + + :unmap <buffer> <key> + :unmap! <buffer> <key> +< +For more information, read > + + :help :unmap + :help map-modes + :help map-local + :help 'mapleader' +< + *faq-20.4* +20.4. I am not able to create a mapping for the <xxx> key. What is wrong? + +First make sure that the key is passed to Vim. In insert mode, press CTRL-V +followed by the desired key. You should see the keycode corresponding to +the key . If you do see the keycode, then you can create a mapping for the +key using the following command: > + + :map <C-V><xxx> <your_command_to_be_mapped> +< +For more information, read > + + :help map-keys-fails + :help :map-special-keys + :help key-codes +< + *faq-20.5* +20.5. How do I map the numeric keypad keys? + +First make sure that the numeric keypad keys are passed to Vim. Next, you +can use the following command to map the numeric keypad keys: > + + :map <kSomething> <your_command> +< +where, <kSomething> can be kHome, kEnd, kPageUp, kPageDown, kPlus, kMinus, +kDivide, kMultiply, kEnter, etc. + +For more information, read > + + :help key-codes + :help terminal-options +< + *faq-20.6* +20.6. How do I create a mapping that works only in visual mode? + +You can create mappings that work only in specific mode (normal, command, +insert, visual, etc). To create a mapping that works only in the visual +mode, use the ":vmap" command: > + + :vmap <F3> <your mapping here> +< +For more information, read > + + :help :vmap + :help map-modes + :help 40.1 +< + *faq-20.7* +20.7. In a Vim script, how do I know which keys to use for my mappings, so + that the mapped key will not collide with an already used key? + +Vim uses most of the keys in the keyboard. You can use the <leader> prefix +in maps to define keys which will not overlap with Vim keys. For example: > + + :map <leader>S <C-W>s + :map <leader>j <C-W>j + :map <leader>k <C-W>k +< +where by default <leader> gets substituted with a backslash (\), so the +user would enter > + + \s + \j + \k +< +to invoke the above map commands. The user can change the mapleader +variable to be whatever they wanted: > + + :let mapleader = "," +< +When writing a plugin or other script, more often than not, it is advisable +to use :noremap instead of :map to avoid side effects from user defined +mappings. + +For more information, read > + + :help <Leader> + :help <LocalLeader> + :help write-plugin +< + *faq-20.8* +20.8. How do I map the escape key? + +You can map the Escape key to some other key using the ":map" command. For +example, the following command maps the escape key to CTRL-O. > + + :map <C-O> <Esc> +< + *faq-20.9* +20.9. How do I map a key to perform nothing? + +You can map a key to <Nop> to perform nothing when the key is pressed. For +example, with the following mappings, the <F7> key will do nothing when +pressed. > + + :map <F7> <Nop> + :map! <F7> <Nop> +< +For more information, read > + + :help <Nop> + :help :map + :help :map! + :help map-modes +< + *faq-20.10* +20.10. I want to use the Tab key to indent a block of text and Shift-Tab + key to unindent a block of text. How do I map the keys to do this? + This behavior is similar to textpad, visual studio, etc. + +Use the following mapping: > + + :inoremap <S-Tab> <C-O><LT><LT> + :nnoremap <Tab> >> + :nnoremap <S-Tab> <LT><LT> + :vnoremap <Tab> > + :vnoremap <S-Tab> <LT> +< +Note that, the <S-Tab> mapping will work only if Vim receives the correct +key sequence. This is mostly the case with GUI Vim. + +For more information, read > + + :help :inoremap + :help :nnoremap + :help :vnoremap + :help <S-Tab> + :help i_CTRL-O + :help >> + :help << + :help <LT> +< + *faq-20.11* +20.11. In my mappings the special characters like <CR> are not recognized. + How can I configure Vim to recognize special characters? + +Check the value of the 'cpoptions' option: > + + :set cpoptions? +< +If this option contains the '<' flag, then special characters will not be +recognized in mappings. Remove the '<' flag from 'cpoptions' option: > + + :set cpo-=< +< +Also, check the value of the 'compatible' option: > + + :se compatible? +< +The 'compatible' option must be reset: > + + :se nocompatible +< +For more information, read > + + :help 'cpoptions' + :help 'compatible' +< + *faq-20.12* +20.12. How do I use the '|' to separate multiple commands in a map? + +You can escape the '|' character using backslash (\) to use '|' in a map. > + + :map _l :!ls \| more<CR> +< +You can also try the following command: > + + :map _l :!ls <bar> more<CR> +< +There are also other ways to do this. + +For more information, read > + + :help map_bar +< + *faq-20.13* +20.13. If I have a mapping/abbreviation whose ending is the beginning of + another mapping/abbreviation, how do I keep the first from expanding + into the second one? + +Instead of using the ":map lhs rhs" command, use the ":noremap lhs rhs" +command. For abbreviations, use "noreabbrev lhs rhs". The "nore" prefix +prevents the mapping or abbreviation from being expanded again. + +For more information, read > + + :help :noremap + :help :noreabbrev +< + *faq-20.14* +20.14. Why does it take a second or more for Vim to process a key, + sometimes when I press a key? + +Make sure you have not defined a mapping for this key using the following +command: > + + :map <key> +< +If a mapping is defined for this key and the mapped key contains more than +one character, then Vim will wait for the next character to be pressed to +determine whether it is the mapped key or not. For example, if you have +mapped "ab", then if you press "a", Vim will wait for the next key to be +pressed. If the next key is "b", Vim will execute the mapped sequence. +Otherwise, Vim will proceed with the normal processing of "a" followed by +the next key. If the 'timeout' option is set (which is the default), then +Vim will timeout after waiting for the period specified with the +'timeoutlen' option (default is 1 second). + +For more information, read > + + :help map-typing + :help 'timeoutlen' + :help 'ttimeoutlen' + :help 'timeout' + :help 'ttimeout' + :help vt100-cursor-keys + :help slow-fast-terminal +< + *faq-20.15* +20.15. How do I map a key to run an external command using a visually + selected text? + +You can the ":vmap" command to map a key in the visual mode. In the mapped +command sequence, you have to first yank the text. The yanked text is +available in the '"' register. Now, you can use the contents of this +register to run the external command. For example, to run the external +command "perldoc" on a visually selected text, you can use the following +mapping: > + + :vmap <F7> y:!exec "!perldoc '" . @" . "'"<CR> +< +If you want the mapping to work in the visual mode, but not with the +highlighted text, you can use the following command: > + + :vmap <F7> :<C-U>!perldoc <cword><CR> +< +The above mapping will use the word under the cursor instead of the +highlighted text. Note the use of the <C-U> before invoking the "perldoc" +external command. The <C-U> is used to erase the range of text selected in +the visual mode and displayed on the command line. If the visual range is +not removed using <C-U>, then the output from the external command will +replace the visually selected text. + +For more information, read > + + :help :vmap + :help quote_quote + :help let-register + :help c_CTRL-U + :help :!cmd +< + *faq-20.16* +20.16. How do I map the Ctrl-I key while still retaining the functionality + of the <Tab> key? + +The Ctrl-I key and the <Tab> key produce the same keycode, so Vim cannot +distinguish between the Ctrl-I and the <Tab> key. When you map the Ctrl-I +key, the <Tab> key is also mapped (and vice versa). The same restriction +applies for the Ctrl-[ key and the <Esc> key. + +For more information, read > + + :help keycodes +< + +============================================================================= + *faq-21* +SECTION 21 - ABBREVIATIONS + + *faq-21.1* +21.1. How do I auto correct misspelled words? + +You can auto correct misspelled words using abbreviations. For example, the +following abbreviation can be used to correct "teh" with "the": > + + :abbreviate teh the +< +Vim supports abbreviations in insert mode, replace mode and command-line +mode. + +For more information, read > + + :help 24.7 + :help abbreviations + :help Q_ab +< + *faq-21.2* +21.2. How do I create multi-line abbreviations? + +You can create multi-line abbreviations by embedding the "<CR>" +key code in the text: > + + iabbrev #c --------------<CR>-- Date:<CR>--<CR>--------- +< +With the above abbreviation, when you type #c, it will be expanded to +the following text: + +-------------- +-- Date: +-- +--------- + +For more information, read > + + :help abbreviations +< + *faq-21.3* +21.3. When my abbreviations are expanded, an additional space character is + added at the end of the expanded text. How do I avoid this character? + +To avoid an additional space character at the end of the expanded text, you +can expand the abbreviation by pressing the CTRL-] key. The abbreviation +will be expanded without adding a space character at the end. + +Another alternative is to use the following function and command: + +function! Eatchar(pat) + let c = nr2char(getchar()) + return (c =~ a:pat) ? '' : c +endfunction +command! -nargs=+ Iabbr execute "iabbr" <q-args> . "<C-R>=Eatchar('\\s')<CR>" + +Now, define your abbreviations using the new "Iabbr" command instead of the +builtin "iabbrev" command. With this command, after expanding the +abbreviated text, the next typed space character will be discarded. + +For more information, read > + + :help abbreviations +< + *faq-21.4* +21.4. How do I insert the current date/time stamp into the file? + +You can use the strftime() function to insert the current data/time stamp +in a file. For example, you can use the following abbreviation: > + + iabbrev dts <C-R>=strftime("%y/%m/%d %H:%M")<CR> +< +With this abbreviation, when you type dts in insert mode, it will be +expanded to the date/time stamp. + +Some other forms of the above abbreviation are listed below: > + + iabbrev mdyl <C-R>=strftime("%a %d %b %Y")<CR> + iabbrev mdys <C-R>=strftime("%y%m%d")<CR> + iabbrev mdyc <C-R>=strftime("%c")<CR> + iabbrev hml <C-R>=strftime("%d/%m/%y %H:%M:%S")<CR> + iabbrev hms <C-R>=strftime("%H:%M:%S")<CR> +< +For more information, read > + + :help strftime() + :help i_CTRL-R +< + *faq-21.5* +21.5. How do I prevent an abbreviation from expanding in insert mode? + +You can prevent an abbreviation from expanding in insert mode by typing +CTRL-V before the character after the abrreviated word. + +For more information, read > + + :help abbreviations +< + +============================================================================= + *faq-22* +SECTION 22 - RECORD AND PLAYBACK + + *faq-22.1* +22.1. How do I repeat an editing operation (insertion, deletion, paste, + etc)? + +You can repeat the last editing operation using the '.' command. This will +repeat the last simple change like a insert, delete, change, paste, etc. + +For more information, read > + + :help 04.3 + :help single-repeat + :help Q_re +< + *faq-22.2* +22.2. How I record and repeat a set of key sequences? + +You can use the 'q' command in normal mode to record a set of key sequences +and store it in a register. For example, in the normal mode you can press q +followed by a register name {0-9a-bA-Z"} to start the recording. To +end/stop the recording press q again. You can playback/repeat the recorded +key sequences by pressing @ followed by the register name. e.g. @a. + +Another approach is to start Vim with the "-w" command-line argument. > + + $ vim -w <file_name> +< +Vim will record all the characters typed in the session in the +specified file "file_name". You can use the recorded file with the "-s" +command line argument to play it back: > + + $ vim -s <file_name> +< +For more information, read > + + :help 10.1 + :help recording + :help -w + :help -s +< + *faq-22.3* +22.3. How do I edit/modify a recorded set of key sequences? + +The recorded key sequences are stored in a register. You can paste the +contents of the register into a Vim buffer, edit the pasted text and again +yank the text into the register. You can also use the ":let" command to +modify the register. For example: > + + :let @a = "iHello World\<Esc>" +< +For more information, read > + + :help recording + :help 10.1 + :help let-register + :help <> + :help 'cpoptions' +< + *faq-22.4* +22.4. How do I write recorded key sequences to a file? + +The recorded key sequences are stored in a register. You can paste the +contents of the register into a Vim buffer. Now you can save the buffer +into a file. You can also modify the pasted text and again yank into the +register to modify the recorded key sequence. For example, if you record a +set of key sequences using qa ..... q. The recorded key sequences are +stored in the register 'a'. You can paste the contents of register 'a' +using "ap. + +For more information, read > + + :help recording + :help 10.1 +< + *faq-22.5* +22.5. I am using register 0 to record my key sequences (i.e. q0 .... q). + In the recorded key sequences, I am yanking some text. After the + first replay of the recorded key sequence, I am no longer able to + play it back. + +Register 0 contains the text from the last yank operation. In your recorded +key sequence, when the yank is performed, register 0 is overwritten with +the yanked text. So your recording stored in register 0 is lost. You have +to use some other register. + +For more information, read > + + :help registers +< + +============================================================================= + *faq-23* +SECTION 23 - AUTOCOMMANDS + + *faq-23.1* +23.1. How do I execute a command when I try to modify a read-only file? + +You can use the FileChangedRO autocommand event to execute a command when a +read-only file modified. For example, you can use this event to checkout a +read-only file: > + + :autocmd FileChangedRO * call MyCheckoutFunction() +< +For more information, read > + + :help FileChangedRO +< + *faq-23.2* +23.2. How do I execute a command every time when entering a buffer? + +You can use the BufEnter autocommand event to execute a command every time +when entering a buffer. For example: > + + :autocmd BufEnter *.c set formatoptions=croqt +< +For more information, read > + + :help BufEnter +< + *faq-23.3* +23.3. How do I execute a command every time when entering a window? + +You can use the WinEnter autocommand event to execute a command every time +when entering a window. For example: > + + :autocmd WinEnter *.c call MyFunction() +< +For more information, read > + + :help WinEnter +< + *faq-23.4* +23.4. From an autocmd, how can I determine the name of the file or the + buffer number for which the autocommand is executed? + +You can use the special words <afile> or <abuf> in an autocmd to get the +name of the file or the buffer number for which the autocommand is +executed. + +For more information, read > + + :help :<afile> + :help :<abuf> + :help :<amatch> +< + *faq-23.5* +23.5. How do I automatically save all the changed buffers whenever Vim + loses focus? + +You can define an autocommand for the FocusLost event which will save all +the modified buffers whenever Vim loses focus: > + + :autocmd FocusLost * wall +< +For more information, read > + + :help FocusLost + :help :wall +< + *faq-23.6* +23.6. How do I execute/run a function when Vim exits to do some cleanup? + +You can use VimLeave autocmd event to execute a function just before Vim +exists. For example, > + + :autocmd VimLeave * call MyCleanupFunction() +< +For more information, read > + + :help VimLeave +< + +============================================================================= + *faq-24* +SECTION 24 - SYNTAX HIGHLIGHT + + *faq-24.1* +24.1. How do I turn off/on syntax highlighting? + +By default, the Vim syntax highlighting is turned off. To enable the syntax +highlighting, you can use one of the following commands: > + + :syntax enable +< + or > + + :syntax on +< +To disable the syntax highlighting, you can use the following command: > + + :syntax off +< +For more information, read > + + :help 06.1 + :help 06.4 + :help :syntax-enable + :help :syntax-on + :help :syn-clear +< + *faq-24.2* +24.2. How do I change the background and foreground colors used by Vim? + +Vim uses the "Normal" highlight group for the background and foreground +colors. To change the foreground/background colors, you have to modify the +"Normal" highlight group. For example, to set the background color to blue +and foreground color to white, you can use > + + :highlight Normal ctermbg=blue ctermfg=white guibg=blue guifg=white +< +If you are using the Motif or the Athena version of the GUI Vim, then you +can modify the foreground and background resource names in the .Xdefaults +files to change the colors: > + + Vim.foreground: Black + Vim.backround: Wheat +< +You can also use the "-foreground" and "-background" command-line arguments +to specify the foreground and background colors. These arguments are +supported only in the Motif or Athena versions: > + + $ gvim -foreground Black -background Wheat +< +For more information, read > + + :help :highlight + :help .Xdefaults + :help -gui +< + *faq-24.3* +24.3. How do I change the highlight colors to suit a dark/light background? + +You can set the 'background' option to either 'dark' or 'light' to change +the highlight colors to suit a dark/light background: > + + :set background=dark +< +For more information, read > + + :help 'background' + :help 6.2 +< + *faq-24.4* +24.4. How do I change the color of the line numbers displayed when the + ":set number" command is used? + +The line numbers displayed use the LineNr highlighting group. To display +the current colors used, use > + + :hi LineNr +< +To change the color modify the LineNr highlight group. For example: > + + :hi linenr guifg=red guibg=black +< +This will give red numbers on a black background in GVIM. + +For more information, read > + + :help :highlight +< + *faq-24.5* +24.5. How do I change the background color used for a Visually selected + block? + +You can modify the 'Visual' highlight group to change the color used for a +visually selected block: > + + :highlight Visual guibg=red +< +For more information, read > + + :help :highlight + :help hl-Visual +< + *faq-24.6* +24.6. How do I highlight the special characters (tabs, trailing spaces, end + of line, etc) displayed by the 'list' option? + +You can modify the "NonText" and "SpecialKey" highlight groups to highlight +the special characters displayed by the 'list' option: > + + :highlight NonText guibg=red + :highlight SpecialKey guibg=green +< +The "NonText" highlighting group is used for "eol", "extends" and +"precedes" settings in the "listchars" option. The "SpecialKey" +highlighting group is used for the "tab" and "trail" settings. + +For more information, read > + + :help 'listchars' + :help hl-NonText + :help hl-SpecialKey +< + *faq-24.7* +24.7. How do I specify a colorscheme in my .vimrc/.gvimrc file, so that Vim + uses the specified colorscheme everytime? + +You can specify the color scheme using the ":colorscheme" command in your +.vimrc or .gvimrc file: > + + colorschme evening +< +For more information, read > + + :help :colorscheme +< + *faq-24.8* +24.8. Vim syntax highlighting is broken. When I am editing a file, some + parts of the file is not syntax highlighted or syntax highlighted + incorrectly. + +Vim doesn't read the whole file to parse the text for syntax highlighting. +It starts parsing wherever you are viewing the file. That saves a lot of +time, but sometimes the colors are wrong. A simple fix is refreshing the +screen using the CTRL-L key. Or scroll back a bit and then forward again. +You can also use the command: > + + :syntax sync fromstart +< +Note that this might considerably slow down the screen refreshing. + +For more information, read > + + :help :syn-sync + :help :syn-sync-first +< + *faq-24.9* +24.9. Is there a built-in function to syntax-highlight the corresponding + matching bracket? + +No. Vim doesn't support syntax-highlighting matching brackets. You can try +using the plugin developed by Charles Campbell: > + + http://vim.sourceforge.net/tips/tip.php?tip_id=177 +< +You can jump to a matching bracket using the '%' key. You can set the +'showmatch' option to temporarily jump to a matching bracket when in insert +mode. + +For more information, read > + + :help % + :help 'showmatch' + :help 'matchtime' + :help 'matchpairs' +< + *faq-24.10* +24.10. How do I turn off the C comment syntax highlighting? + +You can use the following command to turn off C comment syntax +highlighting: > + + :highlight clear comment +< +For more information, read > + + :help c-syntax +< + *faq-24.11* +24.11. How do I add my own syntax extensions to the standard syntax files + supplied with Vim? + +You should not modify the syntax files supplied with Vim to add your +extensions. When you install the next version of Vim, you will lose your +changes. Instead you should create a file under the ~/.vim/after/syntax +directory with the same name as the original syntax file and add your +additions to this file. + +For more information, read > + + :help mysyntaxfile-add + :help 'runtimepath' +< + *faq-24.12* +24.12. How do I replace a standard syntax file that comes with the Vim + distribution with my own syntax file? + +You can replace a standary syntax file that comes with the Vim distribution +by creating a file with the same name as the original syntax file and +placing it in the vim runtime syntax (~/.vim/syntax) directory. For +example, to replace the c.vim syntax file in a Unix system, place the new +c.vim in the ~/.vim/syntax directory. In a MS-Windows system, place the new +syntax file in the $HOME/vimfiles/syntax or $VIM/vimfiles/syntax directory. + +For more information, read > + + :help mysyntaxfile-replace + :help 44.11 + :help mysyntaxfile +< + *faq-24.13* +24.13. How do I highlight all the characters after a particular column? + +You can use the ":match" command to highlight all the characters after a +particular column: > + + :match Todo '\%>75v.\+' +< +This will highlight all the characters after the 75th column. + +For more information, read > + + :help :match + :help /\%v + :help /\+ + :help /. +< + *faq-24.14* +24.14. How do I convert a source file (.c, .h, etc) with the Vim syntax + highlighting into a HTML file? + +You can use the 2html.vim script to convert a source file into a HTML file +with the Vim syntax highlighting. Use the following command: > + + :runtime! syntax/2html.vim +< +For more information, read > + + :help convert-to-HTML +< + *faq-24.15* +24.15. How do I list the definition of all the current highlight groups? + +You can list the definition of all the current highlight groups using the +":highlight" (without any arguments) ex command. + +For more information, read > + + :help :highlight +< + +============================================================================= + *faq-25* +SECTION 25 - VIM SCRIPT WRITING + + *faq-25.1* +25.1. How do I list the names of all the scripts sourced by Vim? + +You can use the ":scriptnames" command to list the names of all the scripts +sourced by Vim: > + + :scriptnames +< +For more information, read > + + :help :scriptnames +< + *faq-25.2* +25.2. How do I debug Vim scripts? + +Vim has built-in support for a primitive debugger to debug Vim plugins and +scripts. Using this debugger you can set breakpoints and step through the +plugin functions. + +For more information, read > + + :help debug-scripts + :help -D +< + *faq-25.3* +25.3. How do I locate the script/plugin which sets a Vim option? + +You can use the ":verbose" command to locate the plugin/script which last +modified a Vim option. For example: > + + :verbose set textwidth? +< +For more information, read > + + :help :set-verbose + :help :verbose +< + *faq-25.4* +25.4. I am getting some error/informational messages from Vim (possibly + when running a script), the messages are cleared immediately. How do + I display the messages again? + +You can use the ":messages" command to display the previous messages. > + + :messages +< +For more information, read > + + :help :messages + :help :echoerr + :help :echomsg + :help message-history +< + *faq-25.5* +25.5. How do I save and restore a plugin specific information across Vim + invocations? + +Vim will save and restore global variables that start with an uppercase +letter and don't contain a lower case letter. For this to work, the +'viminfo' option must contain the '!' flag. Vim will store the variables in +the viminfo file. + +For more information, read > + + :help 'viminfo' + :help viminfo-file + :help variables +< + *faq-25.6* +25.6. How do I start insert mode from a Vim function? + +You can use the ":startinsert" command to start the insert mode from inside +a Vim function. + +For more information, read > + + :help :startinsert +< + *faq-25.7* +25.7. How do I change the cursor position from within a Vim function? + +You can use the cursor() function to position the cursor. > + + call cursor(lnum, col) +< +You can also use the following command to change the cursor position: > + + exe "normal! " . lnum . "G" . col . "|" +< +For more information, read > + + :help cursor() + :help bar +< + *faq-25.8* +25.8. How do I check the value of an environment variable in the .vimrc + file? + +You can use prefix the environment variable name with the '$' character to +use it from a Vim script/function. You can refer to the value of an +environment variable using the $env_var syntax: > + + if $EDITOR == 'vi' + endif +< +For more information, read > + + :help expr-env +< + *faq-25.9* +25.9. How do I check whether an environment variable is set or not from a + Vim function? + +You can use the exists() function to check for the existence of a +environment variable. > + + if exists("$MY_ENV_VAR") + endif +< +For more information, read > + + :help exists() + :help expr-env +< + *faq-25.10* +25.10. How do I call/use the Vim built-in functions? + +You can use the ":call" command to invoke a Vim built-in function: > + + :call cursor(10,20) +< +You can use the ":echo" command to echo the value returned by a function: > + + :echo char2nr('a') +< +You can use the ":let" command to assign the value returned by a function +to a variable: > + + :let a = getline('.') +< +To store the return value from a function into a Vim register, you can use +the following command: > + + :let @a = system('ls') +< +The above command will store the return value from the 'ls' command into +the register 'a'. + +For more information, read > + + :help :call + :help :echo + :help :let + :help :let-register + :help user-functions + :help usr_41.txt +< + *faq-25.11* +25.11. I am using some normal mode commands in my Vim script. How do I + avoid using the user-defined mappings for these normal mode commands + and use the standard Vim functionality for these normal mode + commands? + +You can use the "normal!" command in your script to invoke a normal-mode +command. This will use the standard functionality of the normal mode +command and will not use the user-defined mapping. + +For more information, read > + + :help :normal +< + *faq-25.12* +25.12. How do I get the current visually selected text into a Vim variable + or register? + +You can get the current visually selected text into a Vim variable by +yanking the text into Vim register and then assigning the contents of the +register into the variable: > + + :normal! gvy + :let myvar = @" +< +The above command copies the visually selected text into the variable +"myvar". + +You can also use the command: > + + :normal! gv"*y +< +In the above command, gv reselects the last visually selected text and the +rest of the command copies the selected text into the * (clipboard) +register. Alternatively, you can set the 'a' flag in the 'guioptions' +option to automatically copy a visually selected text into the * register. +To do this as part of a visual map, you can use a command similar to the +one shown below: > + + :vmap <F3> "*y:call ... +< +For more information, read > + + :help gv + :help :normal + :help let-@ + :help quotestar + :help clipboard + :help registers +< + *faq-25.13* +25.13. I have some text in a Vim variable 'myvar'. I would like to use this + variable in a ":s" substitute command to replace a text 'mytext'. + How do I do this? + +You can use the 'execute' command to evaluate the variable: > + + :execute '%s/mytext/' . myvar . '/' +< +For more information, read > + + :help :execute +< +You can also use "\=" in the substitute command to evaluate the variable: > + + :%s/mytext/\=myvar/ +< +For more information, read > + + :help sub-replace-special +< + *faq-25.14* +25.14. A Vim variable (bno) contains a buffer number. How do I use this + variable to open the corresponding buffer? + +The :buffer command will not accept a variable name. It accepts only a +buffer number or buffer name. You have to use the ":execute" command to +evaluate the variable into the corresponding value. For example: > + + :execute "buffer " . bno +< +For more information, read > + + :help :execute +< + *faq-25.15* +25.15. How do I store the value of a Vim option into a Vim variable? + +You can prefix the option name with the '&' character and assign the option +value to a Vim variable using the "let" command. For example, to store the +value of the 'textwidth' option into the Vim variable "old_tw", you can use +the following command: > + + :let old_tw = &tw +< +To do the opposite, to set the 'textwidth' option with the value stored in +the 'old_tw' variable, you can use the following command: > + + :let &tw = old_tw +< +For more information, read > + + :help expr-option + :help let-option +< + *faq-25.16* +25.16. I have copied and inserted some text into a buffer from a Vim + function. How do I indent the inserted text from the Vim function? + +You can use the following command to format the just inserted text: > + + :normal '[='] +< +For more information, read > + + :help '[ + :help '] + :help = + :help :normal +< + *faq-25.17* +25.17. How do I get the character under the cursor from a Vim script? + +You can use the getline() function and use string index [] to get the +character: > + + :echo getline(".")[col(".") - 1] +< +In the above command, getline(".") returns the text in the current line. +The indexing of the string starts at zero, and you can get a single +character in a string by its index with the "string[index]" notation. The +col(".") returns the column of the cursor position; the adjustment is to +get the right character of the string. + +Alternatively, you can use the following sequence of commands to get the +character under the cursor: > + + normal! vy + let ch=@" +< +Note that the above commands will change the '< and '> marks. + +For more information, read > + + :help getline() + :help col() + :help expr-[] +< + *faq-25.18* +25.18. How do I get the name of the current file without the extension? + +You can get the name of the current file without the extension using: > + + :echo expand("%:r") +< +With some commands, you can use the file name modifiers directly: > + + :cd %:p:h + :!gcc -o %:r.o % +< +For more information, read > + + :help filename-modifiers + :help expand() + :help cmdline-special + :help fnamemodify() +< + *faq-25.19* +25.19. How do I get the basename of the current file? + +You can use the :t filename modifier to get the basename of the current +file: > + + :echo expand("%:t") +< +For more information, read > + + :help filename-modifiers +< + *faq-25.20* +25.20. How do I get the output from a Vim function into the current buffer? + +You can insert the return value from a function using the following command +in insert mode: > + + <C-R>=MyFunc() +< +Note that this will only insert the return value of the function. + +For more information, read > + + :help i_CTRL-R + :help i_CTRL-R_CTRL-R + :help i_CTRL-R_CTRL-O + :help expression +< + *faq-25.21* +25.21. How do I call external programs from a Vim function? + +There are several ways to call external programs from a Vim function. You +can use the builtin system() function to invoke external programs and get +the result: > + + :let output = system("ls") +< +You can also use "!" ex-command to run an external command. + +For more information, read > + + :help system() + :help :! + :help 10.9 +< + *faq-25.22* +25.22. How do I get the return status of a program executed using the ":!" + command? + +You can use the predefined Vim v:shell_error variable to get the return +status of the last run shell command. + +For more information, read > + + :help v:shell_error +< + *faq-25.23* +25.23. How do I determine whether the current buffer is modified or not? + +You can check the value of the 'modified' option to determine whether the +current buffer is modified: > + + :set modified? +< +From a Vim script, you can check the value of the 'modified' option: > + + if &modified + echo "File is modified" + endif +< +For more information, read > + + :help 'modified' +< + *faq-25.24* +25.24. I would like to use the carriage return character in a normal + command from a Vim script. How do I specify the carriage return + character? + +You can use the ":execute" command to specify the special (control) +character in a normal mode command: > + + :execute "normal \<CR>" + :execute "normal ixxx\<Esc>" +< +For more information, read > + + :help :execute + :help expr-quote +< + *faq-25.25* +25.25. How do I split long lines in a Vim script? + +You can split long lines in a Vim script by inserting the backslash +character ("\") at the start of the next line. For example, + +For more information, read > + + :help line-continuation +< + *faq-25.26* +25.26. When I try to "execute" my function using the "execute 'echo + Myfunc()'" command, the cursor is moved to the top of the current + buffer. Why? + +The ":execute" command runs the normal mode command specified by the +argument. In the case of the following command: > + + :execute "echo Myfunc()" +< +The call to "echo Myfunc()" will return 0. The ":execute" command will run +the normal mode command "0", which moves the cursor to the top of the file. +To call a Vim function, you should use the ":call" command instead of the +":execute" command: > + + :call Myfunc() +< +For more information, read > + + :help :call + :help :execute + :help :echo + :help user-functions + :help 41.5 + :help 41.6 +< + *faq-25.27* +25.27. How do I source/execute the contents of a register? + +If you have yanked a set of Vim commands into a Vim register (for example +register 'a'), then you can source the contents of the register using one +of the following commands: + + :@a +or + :exe @a + +For more information, read > + + :help :@ +< + *faq-25.28* +25.28. After calling a Vim function or a mapping, when I press the 'u' + key to undo the last change, Vim undoes all the changes made by + the mapping/function. Why? + +When you call a function or a mapping, all the operations performed by the +function/mapping are treated as one single operation. When you undo the +last operation by pressing 'u', all the changes made by the +function/mapping are reversed. + +For more information, read > + + :help undo-redo + :help map-undo +< + *faq-25.29* +25.29. How can I call a function defined with s: (script local function) + from another script/plugin? + +The s: prefix for a Vim function name is used to create a script local +function. A script local function can be called only from within that +script and cannot be called from other scripts. To define a function in a +script/plugin, so that it can be called from other plugins/scripts, define +the function without the s: prefix. + +For more information, read > + + :help script-variable + :help script-local + :help :scriptnames +< + *faq-25.30* +25.30. Is it possible to un-source a sourced script? In otherwords, reverse + all the commands executed by sourcing a script. + +No. It is not possible to reverse or undo all the commands executed by +sourcing a script. + +For more information, read > + + :help :source +< + +============================================================================= + *faq-26* +SECTION 26 - PLUGINS + + *faq-26.1* +26.1. How do I set different options for different types of files? + +You can create filetype plugins to set different options for different +types of files. You should first enable filetype plugins using the command: > + + :filetype plugin on +< +A filetype plugin is a vim script that is loaded whenever Vim opens or +creates a file of that type. For example, to ensure that the 'textwidth' +option is set to 80 when editing a C program (filetype 'c'), create one of +the following files: > + + ~/.vim/ftplugin/c.vim (Unix) + %HOME%\vimfiles\ftplugin\c.vim (Windows) +< +with the following text in it: > + + setlocal textwidth=80 +< +You can also use autocommands to set specific options when editing specific +type of files. For example, to set the 'textwidth' option to 75 for only +*.txt files, you can use the following autocmd: > + + autocmd BufRead *.txt setlocal textwidth=80 +< +For more information, read > + + :help filetype-plugin + :help add-filetype-plugin + :help autocmd + :help 40.3 +< + *faq-26.2* +26.2. I have downloaded a Vim plugin or a syntax file or a indent file, or + a color scheme or a filetype plugin from the web. Where should I copy + these files so that Vim will find them? + +You can place the Vim runtime files (plugins, syntax files, indent files, +color schemes, filetype plugins, etc) under one of the directories +specified in the 'runtimepath' option. To determine the current value of +the 'runtimepath' option, use the following command: > + + :set runtimepath +< +For Unix systems, this is usally the "$HOME/.vim" directory. For MS-Windows +systems, this is usually the $VIM\vimfiles or $HOME\vimfiles directory. +Depending on the type of the runtime file, you have to place it under a +specific directory under the above runtime directory. The names of the +directories are listed below: > + + colors/ - color scheme files + compiler/ - compiler files + doc/ - documentation + ftplugin/ - filetype plugins + indent/ - indent scripts + keymap/ - key mapping files + lang/ - menu translations + plugin/ - plugin scripts + syntax/ - syntax files + tutor/ - files for vimtutor +< +For more information, read > + + :help your-runtime-dir + :help 'runtimepath' + :help :runtime +< + *faq-26.3* +26.3. How do I extend an existing filetype plugin? + +You can extend an existing filetype plugin by creating a file under either +the $VIMRTUNTIME/after/ftplugin or the $VIMRTUNTIME/ftplugin directory. The +name of the file should be the same as the name of the existing filetype +plugin file. You can place your additions to the new file. + +If you placed the file in the after/ftplugin runtime directory, then Vim +will first source the existing filetype plugin file and then will source +the new file. If you placed the file in the $VIMRTUNTIME/ftplugin runtime +directory, then Vim will first source the new file and then will source the +existing filetype plugin file. + +For more information, read > + + :help ftplugin-overrule + :help filetype-plugin + :help add-filetype-plugin + :help 'runtimepath' +< + *faq-26.4* +26.4. How do I turn off loading the Vim plugins? + +You can reset the 'loadplugins' option to turn off loading the plugins: > + + :set noloadplugins +< +You can also specify the "--noplugin" command line argument to stop loading +the plugins: > + + $ vim --noplugin +< +For more information, read > + + :help 'loadplugins' + :help --noplugin + :help load-plugins +< + *faq-26.5* +26.5. How do I turn on/off loading the filetype plugins? + +By default, Vim will not load the filetype plugins. You can configure Vim +to load filetype plugins using the command: > + + filetype plugin on +< +You can turn off loading the filetype plugins using: > + + filetype plugin off +< +For more information, read > + + :help filetype-plugin-on + :help filetype-plugin-off + :help :filetype +< + *faq-26.6* +26.6. How do I override settings made in a file type plugin in the global + ftplugin directory for all the file types? + +You can use an autocommand triggered on the FileType event: > + + au Filetype * set formatoptions=xyz +< +This should at least be after "filetype on" in your vimrc. Best is to put +it in your "myfiletypefile" file, so that it's always last. + +If you want to override a setting for a particular filetype, then create a +file with the same name as the original filetype plugin in the +~/.vim/after/ftplugin directory For example, to override a setting in the +c.vim filetype plugin, create a c.vim file in the ~/.vim/after/ftplugin +directory and add your preferences in this file. + +For more information, read > + + :help ftplugin-overrule + :help ftplugins + :help myfiletypefile +< + *faq-26.7* +26.7. How do I disable the Vim directory browser plugin? + +To disable the directory browsing Vim plugin, add the following line to +your .vimrc file: > + + let loaded_explorer = 1 +< +For more information, read > + + :help file-explorer +< + *faq-26.8* +26.8. How do I set the filetype option for files with names matching a + particular pattern or depending on the file extension? + +You can set the 'filetype' option for files with names matching a +particular pattern using an autocmd. For example, to set the 'filetype' +option to 'c' for all files with extension '.x', you can use the following +autocmd: > + + autocmd! BufRead,BufNewFile *.x setfiletype c +< +A better alternative to the above approach is to create a filetype.vim file +in the ~/.vim directory (or in one of the directories specified in the +'runtimepath' option) and add the following lines: > + + " my filetype file + if exists("did_load_filetypes") + finish + endif + augroup filetypedetect + au! BufRead,BufNewFile *.x setfiletype c + augroup END +< +For more information, read > + + :help new-filetype + :help 43.2 + :help :setfiletype +< + +============================================================================= + *faq-27* +SECTION 27 - EDITING PROGRAM FILES + + *faq-27.1* +27.1. How do I enable automatic indentation for C/C++ files? + +You can enable file-type based indentation using: > + + :filetype indent on +< +If you want to only enable automatic C indentation, then use: > + + :set cindent +< +For more information, read > + + :help 'cindent' + :help C-indenting + :help filetype +< + *faq-27.2* +27.2. How do I configure the indentation used for C/C++ files? + +You can configure the Vim C indentation by modifying the value of the +'cinoptions', 'cinkeys' and 'cinwords' options. + +For more information, read > + + :help 'cindent' + :help 'cinoptions' + :help 'cinkeys' + :help 'cinwords' + :help C-indenting + :help cinoptions-values + :help 'smartindent' +< + *faq-27.3* +27.3. How do I turn off the automatic indentation feature? + +By default, the automatic indentation is not turned on. You must have +configured Vim to do automatic indentation in either .vimrc or .gvimrc +files. You can disable automatic indentation using either, > + + :filetype indent off +< +or > + + :set nocindent +< +Also, check the setting for the following options: > + + :set autoindent? + :set smartindent? + :set indentexpr? +< +For more information, read > + + :help 'cindent' + :help filetype-indent-off + :help 'autoindent' + :help 'smartindent' + :help 'indentexpr' +< + *faq-27.4* +27.4. How do I change the number of space characters used for the automatic + indentation? + +You can modify the 'shiftwidth' option to change the number of space +characters used for the automatic indentation: > + + :set shiftwidth=4 +< +For more information, read > + + :help 'shiftwidth' +< + *faq-27.5* +27.5. I am editing a C program using Vim. How do I display the definition + of a macro or a variable? + +You can use the [d command to display the definition of a macro and the [i +command to display the definition of a variable. + +For more information, read > + + :help [d + :help [i + :help include-search + :help 29.4 + :help 29.5 +< + *faq-27.6* +27.6. I am editing a C program using Vim. How do I jump to the beginning or + end of a code block from within the block? + +You can use '[{' command to jump to the beginning of the code block and ']} +to jump to the end of the code block from inside the block. + +For more information, read > + + :help [{ + :help ]} + :help various-motions +< + *faq-27.7* +27.7. Is there a way to turn off the "//" comment auto-insertion behavior + for C++ files? If I'm sitting on a line beginning with "//", then I + open a new line above or below it, Vim automatically inserts new "//" + chars. + +You can modify the value of the 'comments' option to stop Vim from +inserting the C++ comment character ("//") automatically. For example: > + + :set comments=sr:/*,mb:*,el:*/ +< +For more information, read > + + :help 'comments' + :help format-comments +< + *faq-27.8* +27.8. How do I add the comment character '#' to a set of lines at the + beginning of each line? + +First, select the first character in all the lines using visual block mode +(CTRL-V). Press 'I' to start inserting characters at the beginning of the +line. Enter the comment character and then stop the insert mode by pressing +<Esc>. Vim will automatically insert the entered characters at the +beginning of all the selected lines. + +For more information, read > + + :help visual-block + :help blockwise-operators + :help v_b_I +< + *faq-27.9* +27.9. How do I edit a header file with the same name as the corresponding C + source file? + +You can use the following command to edit a header file with the same name +as the corresponding C source file: > + + :e %:t:r.h +< +You can use the following command to edit the file in a new split window: > + + :sp %:t:r.h +< +In the above commands, the percent sign expands to the name of the current +file. The ":t" modifier extracts the tail (last component) of the +filename. The ":r" modifier extracts the root of the filename. The .h is +appended to the resulting name to get the header filename. + +Another approach is to use the following command: > + + :sfind %:t:r.h +< +This command will search for the header file in the directories specified +in the 'path' option. + +For more information, read > + + :help cmdline-special + :help filename-modifiers + :help :sfind + :help 'path' +< + *faq-27.10* +27.10. How do I automatically insert comment leaders while typing comments? + +To automatically insert comment leaders while typing comments, add the 'r' +and 'o' flags to the 'formatoptions' option. > + + :set formatoptions+=ro +< +You may also want to add the 'c' flag to auto-wrap comments using the +'textwidth' option setting and the 'q' flag to format comments with the +"gq" command: > + + :set formatoptions=croq +< +For more information, read > + + :help 30.6 + :help format-comments + :help 'comments' + :help fo-table +< + +============================================================================= + *faq-28* +SECTION 28 - QUICKFIX + + *faq-28.1* +28.1. How do I build programs from Vim? + +You can use the ":make" command to build programs from Vim. The ":make" +command runs the program specified by the 'makeprg' option. + +For more information, read > + + :help 30.1 + :help make_makeprg + :help 'makeprg' + :help 'makeef' + :help :make + :help quickfix +< + *faq-28.2* +28.2. When I run the make command in Vim I get the errors listed as the + compiler compiles the program. When it finishes this list disappears + and I have to use the :clist command to see the error message again. + Is there any other way to see these error messages? + +You can use the ":copen" or ":cwindow" command to open the quickfix window +that contains the compiler output. You can select different error lines +from this window and jump to the corresponding line in the source code. + +For more information, read > + + :help :copen + :help :cwindow + :help quickfix +< + +============================================================================= + *faq-29* +SECTION 29 - FOLDING + + *faq-29.1* +29.1. How do I extend the Vim folding support? + +You can use the 'foldexpr' option to fold using an user specified function. +For example, to fold subroutines of the following form into a single line: > + + sub foo { + my $barf; + $barf = 3; + return $barf; + } +< +You can use the following commands: > + + set foldmethod=expr + set foldexpr=MyFoldExpr(v:lnum) + fun! MyFoldExpr(line) + let str = getline(a:line) + if str =~ '^sub\>' + return '1' + elseif str =~ '^}' + return '<1' + else + return foldlevel(a:line - 1) + endif + endfun +< +For more information, read > + + :help 'foldexpr' + :help fold-expr +< + *faq-29.2* +29.2. When I enable folding by setting the 'foldmethod' option, all the + folds are closed. How do I prevent this? + +You can set the 'foldlevelstart' option to a particular value to close only +folds above the specified value. > + + :set foldlevelstart=99 +< +For more information, read > + + :help 'foldlevelstart' + :help 'foldlevel' + :help fold-foldlevel +< + *faq-29.3* +29.3. How do I control how many folds will be opened when I start editing a + file? + +You can modify the 'foldlevelstart' option to control the number of folds +that will be opened when you start editing a file. To start editing with +all the folds closed: > + + :set foldlevelstart=0 +< +For more information, read > + + :help 'foldlevelstart' +< + *faq-29.4* +29.4. How do I open and close folds using the mouse? + +You can click on the + and - characters displayed at the leftmost column to +open and close fold. For this to work, you have to set the 'foldcolumn' +to a value greater than zero: > + + :set foldcolumn=2 +< +For more information, read > + + :help 'foldcolumn' +< + *faq-29.5* +29.5. How do I change the text displayed for a closed fold? + +You can use the 'foldtext' option to change the text displayed for a closed +fold. + +For more information, read > + + :help 'foldtext' + :help fold-foldtext + :help 'fillchars' +< + *faq-29.6* +29.6. How do I store and restore manually created folds across different + Vim invocations? + +You can use the ":mkview" command to store manually created folds. Later, +you can use the ":loadview" command to restore the folds. For this to work, +the 'viewoptions' must contain "folds". + +For more information, read > + + :help 28.4 + :help :mkview + :help :loadview + :help 'viewoptions' + :help 'viewdir' + :help :mksession + :help 'sessionoptions' +< + +============================================================================= + *faq-30* +SECTION 30 - VIM WITH EXTERNAL APPLICATIONS + + *faq-30.1* +30.1. Can I run a shell inside a Vim window? + +Currently Vim doesn't have support for running shell and other external +commands inside a Vim window. + +For more information, read > + + :help shell-window +< +Alternatively, you can try using the Unix "screen" utility or the 'splitvt' +program. + +You can also use the vimsh plugin by Brian Sturk to run a shell in a Vim +window. To use this you need to have Vim built with python support. For +more information visit the following URL: > + + http://vim.sourceforge.net/scripts/script.php?script_id=165 +< + *faq-30.2* +30.2. How do I pass the word under the cursor to an external command? + +You can use the special keyword <cword> to pass the word under the cursor +to an external command. For example: > + + :!dict <cword> +< +For more information, read > + + :help <cword> +< + *faq-30.3* +30.3. How do I get the output of a shell command into a Vim buffer? + +You can use the ":r !" command to get the output of a shell command into a +Vim buffer: > + + :r !ls +< +For more information, read > + + :help :r! +< + *faq-30.4* +30.4. How do I pipe the contents of the current buffer to an external + command and replace the contents of the buffer with the output from + the command? + +You can use the :! command to pipe the contents of the current buffer to a +external command and replace the contents of the buffer with the output +from the command. For example, to sort the contents of the current buffer, +using the Unix sort command, you can use the following command: > + + :%!sort +< +To sort only lines 10-20, you can use the following command > + + :10,20!sort +< +Also, if you want to pipe a buffer to an external command but not put the +results back in the buffer, you can use > + + :w !sort +< +The above command will pipe the entire buffer to the sort command. Note +that the space between the 'w' and the '!' is critical. To pipe only a +range of lines, you can use > + + :10,20w !sort +< +The above command will pipe the lines 10-20 to the sort command. + +For more information, read > + + :help :range! + :help 10.9 + :help :w_c +< + *faq-30.5* +30.5. How do I sort a section of my file? + +You can pipe a section of the file to the Unix "sort" utility to sort the +file. For example: > + + :5,100!sort +< +You can also use a visual block, and use the "!sort" command on the +selected block. + +To sort using visual blocks (sort based on a column or sort just the column +itself), read the following tip from the Vim online web page: + +http://vim.sourceforge.net/tips/tip.php?tip_id=588 + + *faq-30.6* +30.6. Is there a step-by-step guide for using Vim with slrn? + +Visit the following link to get information about using Vim with Slrn: > + + http://thingy.apana.org.au/~fun/slrn/ +< + *faq-30.7* +30.7. How do I use Vim as a pager? + +You can use Vim as a pager using the $VIMRUNTIME/macros/less.sh shell +script, supplied as part of the standard Vim distribution. This shell +script uses the $VIMRUNTIME/macros/less.vim Vim script to provide less like +key bindings. + +For more information, read > + + :help less +< + *faq-30.8* +30.8. How do I view Unix man pages from inside Vim? + +You can view Unix man pages, inside Vim, using the man.vim plugin supplied +as part of the standard Vim distribution. To use this plugin, add the +following line to your startup vimrc file: > + + runtime ftplugin/man.vim +< +You can also press the K key to run the program specified by the +'keywordprg' option with the keyword under the cursor. By default, +'keywordprg' is set to run man on the keyword under the cursor. + +For more information, read > + + :help man-plugin + :help K + :help 'keywordprg' +< + *faq-30.9* +30.9. How do I change the diff command used by the Vim diff support? + +By default, the Vim diff support uses the 'diff' command. You can change +this by changing the 'diffexpr' option. + +For more information, read > + + :help diff-diffexpr + :help 'diffexpr' +< + *faq-30.10* +30.10. How do I use the Vim diff mode without folding? + +You can use the following command-line to start Vim with two filenames +and use the diff mode without folding: > + + $ vim -o file1 file2 "+windo set diff scrollbind scrollopt+=hor nowrap" +< +If you like vertically split windows, then replace "-o" with "-O". + +For more information, read > + + :help vimdiff +< + +============================================================================= + *faq-31* +SECTION 31 - GUI VIM + + *faq-31.1* +31.1. How do I create buffer specific menus? + +Adding support for buffer specific menus is in the Vim TODO list. In the +mean time, you can try Michael Geddes's plugin, buffermenu.vim: > + + http://vim.sourceforge.net/scripts/script.php?script_id=246 +< + *faq-31.2* +31.2. How do I change the font used by GUI Vim? + +You can change the 'guifont' option to change the font used by GUI Vim. To +display the current value of this option, you can use > + + :set guifont? +< +You can add the displayed font name to the .vimrc file to use the font +across Vim sessions. For example, add the following line to the .vimrc file +to use Andale Mono font. > + + set guifont=Andale_Mono:h10:cANSI +< +For Win32, GTK and Photon version of Vim, you can use the following command +to bringup a dialog which will help you in changing the guifont: > + + :set guifont=* +< +You can also use the -font Vim command line option to specify the font used +for normal text. + +For more information, read > + + :help 'guifont' + :help 'guifontset' + :help 'guifontwide' + :help font-sizes + :help -font + :help -boldfont + :help -italicfont + :help -menufont + :help -menufontset +< + *faq-31.3* +31.3. When starting GUI Vim, how do I specify the location of the GVIM + window? + +You can use the "-geometry" command line argument to specify the location +of the GUI Vim window. For example: > + + $ gvim -geometry 80x25+100+300 +< +For more information, read > + + :help 31.4 + :help -geom +< + *faq-31.4* +31.4. How do I add a horizontal scrollbar in GVim? + +You can enable the horizontal scrollbar by modifying the 'guioptions' +option: > + + :set guioptions+=b +< +For more information, read > + + :help 'guioptions' + :help gui-horiz-scroll +< + *faq-31.5* +31.5. How do I make the scrollbar appear in the left side by default? + +You can add the 'l' flag to the 'guioptions' option to make the scrollbar +appear in the left side. > + + :set guioptions+=l + :set guioptions-=r +< +For more information, read > + + :help 'guioptions' + :help gui-scrollbars +< + *faq-31.6* +31.6. How do I remove the Vim menubar? + +You can remove the Vim menubar by removing the 'm' flag from the +'guioptions' option: > + + :set guioptions-=m +< +For more information, read > + + :help 'guioptions' +< + *faq-31.7* +31.7. I am using GUI Vim. When I press the ALT key and a letter, the menu + starting with that letter is selected. I don't want this behavior as + I want to map the ALT-<key> combination. How do I do this? + +You can use the 'winaltkeys' option to disable the use of the ALT key to +select a menu item: > + + :set winaltkeys=no +< +For more information, read > + + :help 'winaltkeys' + :help :simalt +< + *faq-31.8* +31.8. Is it possible to scroll the text by dragging the scrollbar so that + the cursor stays in the original location? + +The way Vim is designed, the cursor position has to be in a visible spot in +normal, visual, select and insert mode. This cannot be changed without +modifying Vim. When the scrollbar is used, the cursor will be moved so that +it is always visible. Another approach to solving this problem is to use +the Vim marks. You can mark the current cursor position using ma. Then +scroll to a different part of the text and jump back to the old position +using `a. You can also try the following suggestion from the Vim Online +website: > + + http://www.vim.org/tip_view.php?tip_id=320 +< +For more information, read > + + :help mark-motions +< + *faq-31.9* +31.9. How do I get gvim to start browsing files in a particular directory + when using the ":browse" command? + +You can set the 'browsedir' option to the default directory to use for the +":browse" command. > + + :set browsedir='<your_dir>' +< +For more information, read > + + :help 'browsedir' +< + *faq-31.10* +31.10. For some questions, like when a file is changed outside of Vim, Vim + displays a GUI dialog box. How do I replace this GUI dialog box with + a console dialog box? + +You can set the 'c' flag in the 'guioptions' option to configure Vim to use +console dialogs instead of GUI dialogs: > + + :set guioptions+=c +< +For more information, read > + + :help 'guioptions' +< + *faq-31.11* +31.11. I am trying to use GUI Vim as the editor for my xxx application. + When the xxx application launches GUI Vim to edit a file, the + control immediately returns to the xxx application. How do I start + GUI Vim, so that the control returns to the xxx application only + after I quit Vim? + +You have to start GUI Vim with the '-f' (foreground) command line option: > + + $ gvim -f +< +By default, GUI Vim will disconnect from the program that started Vim. With +the '-f' option, GUI Vim will not disconnect from the program that started +it. + +For more information, read > + + :help gui-fork + :help -f +< + *faq-31.12* +31.12. Why does the "Select Font" dialog doesn't show all the fonts + installed in my system? + +Vim supports only fixed width (mono-spaced) fonts. Proportional fonts are +not supported. In the "Select Font" dialog, only fixed width fonts will be +displayed. + +For more information, read > + + :help font-sizes + :help 'guifont' +< + *faq-31.13* +31.13. How do I use the mouse in Vim command-line mode? + +You can set the 'c' flag in the 'mouse' option to use mouse in the Vim +command-line mode: > + + :set mouse+=c +< +For more information, read > + + :help mouse-using + :help gui-mouse + :help 09.2 +< + *faq-31.14* +31.14. When I use the middle mouse button to scroll text, it pastes the + last copied text. How do I disable this behavior? + +You can map the middle mouse button to <Nop> to disable the middle mouse +button: > + + :map <MiddleMouse> <Nop> + :map! <MiddleMouse> <Nop> +< +For more information, read > + + :help gui-mouse-mapping + :help <Nop> +< + *faq-31.15* +31.15. How do I change the location and size of a GUI Vim window? + +You can use the "winpos" command to change the Vim window position. To +change the size of the window, you can modify the "lines" and "columns" +options. + +For example, the following commands will position the GUI Vim window at the +X,Y co-ordinates 50,50 and set the number of lines to 50 and the number of +columsn to 80. > + + :winpos 50 50 + :set lines=50 + :set columns=80 +< +The arguments to the 'winpos' command specify the pixel co-ordinates of the +Vim window. The 'lines' and 'columns' options specify the number of lines +and characters to use for the height and the width of the window +respectively. + +For more information, read > + + :help 31.4 + :help :winpos + :help 'lines' + :help 'columns' + :help GUIEnter +< + +============================================================================= + *faq-32* +SECTION 32 - VIM ON UNIX + + *faq-32.1* +32.1. I am running Vim in a xterm. When I press the CTRL-S key, Vim + freezes. What should I do now? + +Many terminal emulators and real terminal drivers use the CTRL-S key to +stop the data from arriving so that you can stop a fast scrolling display +to look at it (also allowed older terminals to slow down the computer so +that it did not get buffer overflows). You can start the output again by +pressing the CTRL-Q key. + +When you press the CTRL-S key, the terminal driver will stop sending the +output data. As a result of this, it will look like Vim is hung. If you +press the CTRL-Q key, then everything will be back to normal. + +You can turn off the terminal driver flow control using the 'stty' command: > + + $ stty -ixon -ixoff +< +or, you can change the keys used for the terminal flow control, using the +following commands: > + + $ stty stop <char> + $ stty start <char> +< + *faq-32.2* +32.2. I am seeing weird screen update problems in Vim. What can I do to + solve this screen/display update problems? + +You have to use a proper terminal emulator like xterm with correct TERM +settings (TERM=xterm) and a correct terminfo/termcap file. +For more information, read > + + :help 'term' +< + *faq-32.3* +32.3. I am using the terminal/console version of Vim. In insertmode, When I + press the backspace key, the character before the cursor is not + erased. How do I configure Vim to do this? + +You have to make sure that Vim gets the correct keycode for the backpspace +key. You can try using the command: > + + :fixdel +< +Make sure the TERM environment variable is set to the correct terminal +name. You can try using the 'stty' command: > + + $ stty erase ^H +< +where, you have to enter the ^H character by pressing the CTRL-V key and +then the CTRL-H key. + +For more information, read > + + :help :fixdel + :help Linux-backspace + :help NetBSD-backspace +< + *faq-32.4* +32.4. I am using Vim in a xterm. When I quit Vim, the screen contents are + restored back to the original contents. How do I disable this? + +The xterm has a capability called "alternate screen". If this capability +is present, vim switches to that alternate screen upon startup and back on +exit, thus restoring the original screen contents. To disable this +feature, add the following line to your .vimrc file: > + + :set t_ti= t_te= +< +For more information, read > + + :help restorescreen + :help xterm-screens +< + *faq-32.5* +32.5. When I start Vim, it takes quite a few seconds to start. How do I + minimize the startup time? + +This may be related to Vim opening the X display for setting the xterm +title and using the X clipboard. Make sure the DISPLAY variable is set to +point to the correct host. Try using the command line: > + + $ vim -X +< +This will prevent Vim from opening the X display. With this command-line +option, the X clipboard cannot be used and also Vim will not be able to +change the xterm title. + +You can also set the 'clipboard' option to > + + :set clipboard=exclude:.* +< +This has the same effect as using the -X command-line argument. + +For more information, read > + + :help -X + :help 'clipboard' +< + *faq-32.6* +32.6. How can I make the cursor in gvim in unix stop blinking? + +You can modify the 'guicursor' option, to stop the cursor from blinking. +For example: > + + :set guicursor=a:blinkon0 +< +For more information, read > + + :help 'guicursor' +< + *faq-32.7* +32.7. How do I change the menu font on GTK Vim? + +You can modify the ~/.gtkrc file to change the menu font on GTK Vim. For +example: > + + style "default" + { font ="smooth09" } + class "*" style "default" +< +The last line changes the font of all widgets. + +For more information, read > + + :help gui-gtk +< + *faq-32.8* +32.8. How do I prevent <Ctrl-Z> from suspending Vim? + +You can map <Ctrl-Z> to prevent the suspending. Here are some suggestions: + +- Make <Ctrl-Z> do nothing: > + + :map <C-Z> <Nop> +< +- Make <Ctrl-Z> start a shell: > + + :map <C-Z> :shell<CR> +< +- Make <Ctrl-Z> give an error message: > + + :map <C-Z> :"suspending disabled<CR> +< +For the last example, the double quote is necessary in order to keep the +message on the status line. + + *faq-32.9* +32.9. When I kill the xterm running Vim, the Vim process continues to run + and takes up a lot of CPU (99%) time. Why is this happening? + +When Vim is built with support for Python interface, you will have this +problem. This is a known problem with the python thread library and Vim. To +solve this problem, use a Vim binary built without the Python interface. + +For more information, read > + + :help +python + :help python +< + *faq-32.10* +32.10. How do I get the Vim syntax highlighting to work in a Unix terminal? + +The easiest and simplest way to get Vim syntax highlighting is to use the +GUI version of Vim (GVIM). To get syntax highlighting to work in the +console/terminal version of Vim, you have to run a terminal emulator (like +Xfree86 xterm or rxvt or dtterm) that supports color. Note that if a +terminal emulator supports changing the background and foreground colors, +that does not mean that it also supports ANSI escape sequences for changing +the color. You can download the latest version of Xfree86 xterm from +http://dickey.his.com/xterm/xterm.html. You can download the latest version +of rxvt from http://www.rxvt.org. You have to install the terminfo/termcap +file that supports colors for the terminal emulator. Also, set the TERM +environment variable to the correct name of the term that supports colors. + +You can use the colortest.vim script supplied with the Vim runtime +package to test the color setup. To use this script, follow these steps: > + + :e $VIMRUNTIME/syntax/colortest.vim + :source % +< +For more information, read > + + :help 06.2 + :help terminal-colors + :help termcap-colors + :help startup-terminal + :help xterm-color + :help colortest.vim +< + +============================================================================= + *faq-33* +SECTION 33 - VIM ON MS-WINDOWS + + *faq-33.1* +33.1. In MS-Windows, CTRL-V doesn't start the blockwise visual mode. What + happened? + +The mswin.vim script provides key mappings and options to make Vim behave +like a MS-Windows application. One of the keys mapped is CTRL-V which is +used for pasting text in MS-Windows applications. This will disable the use +of CTRL-V to start the blockwise visual mode. The mswin.vim script maps +CTRL-Q for staring the blockwise visual mode. So you can use CTRL-Q instead +of CTRL-V. + +For more information, read > + + :help CTRL-V + :help CTRl-V-alternative + :help CTRL-Q + :help 10.5 +< + *faq-33.2* +33.2. When I press the CTRL-Y key, it acts like the CTRL-R key. How do I + configure Vim to treat CTRL-Y as CTRL-Y? + +The mapping of the CTRL-Y key to the CTRL-R key is done by the mswin.vim +script. The mswin.vim script maps CTRL-Y to make Vim behave like a standard +MS-Windows application. This is explained in ":help CTRL-Y". You can either +comment out the line in mswin.vim that maps the CTRL-Y key or you can +remove the line in your .vimrc file that sources the mswin.vim script. + + *faq-33.3* +33.3. How do I start GUI Vim in a maximized window always? + +You can use the "simalt" command to maximize the Vim window. You can use +the GUIEnter autocmd to maximize the Vim window on startup: > + + autocmd GUIEnter * simalt ~x +< +For more information, read > + + :help :simalt + :help GUIEnter + :help gui-win32-maximized +< + *faq-33.4* +33.4. After doing some editing operations, Vim freezes. The cursor becomes + an empty rectangle. I am not able enter any characters. What is + happening? + +Most probably, you used the mouse wheel to scroll the text in Vim. There is +a known problem in using intellimouse mouse wheel with Vim. To avoid this +problem, disable Universal scrolling support for Vim. + +For more information, read > + + :help intellimouse-wheel-problems +< + *faq-33.5* +33.5. I am using Windows XP, the display speed of maximized GVim is very + slow. What can I do to speed the display updates? + +This may be due to the fact that you have enabled 'Smooth edges of screen +fonts' in the display properties. Try turning off font smoothing or try +changing the smoothing method to "Standard". + + *faq-33.6* +33.6. What are the recommended settings for using Vim with cygwin? + +You may want to set the following shell related Vim settings: > + + :set shellcmdflag=-c + :set shellquote= + :set shellslash " Use the forward slash for expansion. + :set shellxquote=\" + :set shell=d:\cygwin\bin\bash.exe " Use the bash shell + :set shellpipe=2>&1| tee + :set shellredir=>%s 2>&1 +< + *faq-33.7* +33.7. I am trying to use GNU diff with Vim diff mode. When I run the diff + from command line, it works. When I try to use the diff with Vim it + doesn't work. What should I do now? + +There is a problem with using GNU diff with Vim. You can try using the +GNU diff.exe built by Ron Aaron from the following link: > + + http://www.mossbayeng.com/~ron/vim/builds.html +< + *faq-33.8* +33.8. Is it possible to use Vim as an external editor for MS-Windows + Outlook email client? + +You can use the "cubiclevim" COM Add-In to use Vim as an external editor +for MS-Windows Outlook email client. Visit the following URL for more +information: > + + http://sourceforge.net/projects/cubiclevim +< +Note that currently this works only with MS-Office 2000 and XP. + + *faq-33.9* +33.9. I am using Vim to edit HTML files. How do I start internet explorer + with the current file to preview the HTML file? + +You can use the following command: > + + :!start c:\progra~1\intern~1\iexplore.exe file://%:p<CR> +< + *faq-33.10* +33.10. I would like to use Vim with Microsoft Visual Studio. How do I do + this? + +You have to download and use the OLE version of Vim (for example: +gvim61ole.zip). This file also contains instructions on how to use Vim with +Visual Studio. + +For more information, read > + + :help MSVisualStudio +< + *faq-33.11* +33.11. Where do I place the _vimrc and _gvimrc files? + +You can place the _vimrc and _gvimrc files under the directory pointed to +by the VIM environment variable. If you are sharing this system with other +users, then you can place the files in a directory and set the HOME +environment variable to this directory. + +For more information, read > + + :help $HOME-use + :help _vimrc +< + *faq-33.12* +33.12. Everytime I save a file, Vim warns about the file being changed + outside of Vim. Why? + +If you get the following warning message, everytime you save a file: > + + WARNING: The file has been changed since reading it!!! + Do you really want to write to it (y/n)? +< +then this problem could be related to a bug in MS-Windows on the day +daylight saving time starts. Vim remembers the timestamp of the file after +it was written. Just before the next write the timestamp is obtained again +to check if the file was changed outside of Vim. This works correctly, +except on the day daylight saving time starts. + +This problem will go away the next day after the day the daylight saving +time starts. + +For more information, read > + + :help W11 +< + +============================================================================= + *faq-34* +SECTION 34 - PRINTING + + *faq-34.1* +34.1. How do I print a file along with line numbers for all the lines? + +You can set the 'printoptions' option and use the ":hardcopy" command to +print your file: > + + :set printoptions=number:y + :hardcopy +< +For more information, read > + + :help 'printoptions' + :help :hardcopy +< + *faq-34.2* +34.2. How do I print a file with the Vim syntax highlighting colors? + +You can use the ":hardcopy" command to print a file with the Vim syntax +highlighting colors. You can also convert your file to a HTML file using +the 2html.vim script and print the HTML file. + +For more information, read > + + :help syntax-printing + :help 2html.vim + :help :hardcopy + :help printing +< + +============================================================================= + *faq-35* +SECTION 35 - BUILDING VIM FROM SOURCE + + *faq-35.1* +35.1. How do I build Vim from the sources on a Unix system? + +For a Unix system, follow these steps to build Vim from the sources: + +- Download the source and run-time files arrchive (vim-##.tar.bz2) from the + ftp://ftp.vim.org/pub/vim/unix directory. +- Extract the archive using the bzip2 and ttar utilities using the command: > + + $ bunzip2 -c <filename> | tar -xf - +< +- Run the 'make' command to configure and bbuild Vim with the default + configuration. +- Run 'make install' command to install Vimm in the default directory. + +To enable/disable various Vim features, before running the 'make' command +you can run the 'configure' command with different flags to include/exclude +the various Vim features. To list all the available options for the +'configure' command, use: > + + $ configure -help +< +For more information, read > + + :help install +< + *faq-35.2* +35.2. How do I install Vim in my home directory or a directory other + than the default installation directory in Unix? + +To install Vim in a directory other than the default installation +directory, you have to specify the directory using the --prefix option +while running the configure script. > + + $ ./configure --prefix=/users/xyz +< +You can enable/disable various Vim feature by supplying different arguments +to the configure script. For more information about all these options, run > + + $ ./configure --help +< +For more information, read > + + :help install-home + :help install +< + *faq-35.3* +35.3. How do I build Vim from the sources on a MS-Windows system? + +For a MS-Windows system, Vim can be built using either the Visual C++ +compiler or the Borland C++ compiler or the Ming GCC compiler or the cygwin +gcc compiler. Follow these steps to build Vim from the sources for +MS-Windows: + +- Download the source (vim##src.zip), runtiime (vim##rt.zip) and the extra + (vim-##-extra.tar.gz) archives from the ftp://ftp.vim.org/pub/vim/pc + directory. +- Extract the archives into a directory (foor example, c:\vimsrc) +- Depending on the installed compiler, you can use the corresponding + makefile to build the Vim sources. For Visual C++ use the Make_mvc.mak + makefile, for borland C++ use the Make_bc5.mak makefile, for ming GCC use + the Make_ming.mak makefile, for cygwin gcc use the Make_cyg.mak makefile. + +Depending on whether you want to build the GUI version of Vim or the +console version of Vim, you have to pass different arguments to the +makefiles. After successfully building the sources, you can copy the +vim.exe or gvim.exe file to the desired directory along with the files from +the runtime archive. + +You can visit the following site for extensive information about building +Vim on a MS-Windows system using the various compilers: > + + http://mywebpage.netscape.com/SharpPeople/vim/howto/index.html +< +For more information, read > + + :help install +< + *faq-35.4* +35.4. The Vim help, syntax, indent files are missing from my Vim + installation. How do I install these files? + +The Vim help, syntax, indent and other runtime files are part of the Vim +runtime package. You need to download and install the Vim runtime package. +For example, for MS-Windows, the name of the Vim 6.1 runtime package is +vim61rt.zip. + +For more information, read > + + :help install +< + *faq-35.5* +35.5. I have built Vim from the source and installed the Vim package using + "make install". Do I need to keep the Vim source directory? + +No. Once you have built and installed Vim in some directory other than the +original source directory (for example, /usr/bin or /usr/local/bin), then +you can remove the source directory. + + *faq-35.6* +35.6. How do I determine the Vim features which are enabled at compile + time? + +You can use the ":version" command to determine the Vim features that are +enabled at compile time. The features that are enabled will be prefixed +with a "+". The features that are not enabled will be prefixed with a "-". + +If you want to test for a feature in a script, you can use the has() +function: > + + if has("menu") + " Set up some menus + endif +< +For more information, read > + + :help :version + :help +feature-list + :help has() +< + *faq-35.7* +35.7. Can I build Vim without the GUI support? + +Yes. You can build Vim by optionally enabling/disabling many of the +features including GUI. + +For more information, read > + + :help install +< + *faq-35.8* +35.8. When building Vim on a Unix system, I am getting "undefined reference + to term_set_winsize' error. How do I resolve this error? + +You will get this error when the build process is not able to locate the +termlib, termcap or ncurses library. You have to install the ncurses-dev +package to resolve this error. + + *faq-35.9* +35.9. Vim configure keeps complaining about the lack of gtk-config while + trying to use GTK 2.03. This is correct, since in GTK 2 they moved to + using the generic pkg-config. I can get pkg-config to list the + various includes and libs for gtk, but for some reason the configure + script still isn't picking this up. + +Use the following shell script named gtk-config: > + + #!/bin/sh + pkg-config gtk+-2.0 $1 $2 +< + +============================================================================= + *faq-36* +SECTION 36 - VARIOUS + + *faq-36.1* +36.1. How do I edit binary files with Vim? + +You can set the following options to edit binary files in Vim: > + + :set binary + :set display=uhex +< +You can also use the "-b" command-line option to edit a binary file: > + + $ vim -b <binary_file_name> +< +You can also use the xxd utility (part of the Vim distribution) to edit +binary files. + +For more information, read > + + :help 23.4 + :help edit-binary + :help hex-editing + :help -b + :help 'binary' + :help 'endofline' + :help 'display' +< + *faq-36.2* +36.2. How do I disable the visual error flash and the error beep? + +You can disable both the visual error flash and the error beep using the +following command: > + + :set visualbell t_vb= +< +For more information, read > + + :help 'visualbell' + :help 'errorbells' + :help t_vb +< + *faq-36.3* +36.3. How do I display the ascii value of a character displayed in a + buffer? + +You can use the 'ga' command to display the ascii value of a displayed +character. + +For more information, read > + + :help ga + :help :ascii +< + *faq-36.4* +36.4. Can I use zero as a count for a Vim command? + +You cannot use zero as a count for a Vim command, as "0" is a command on +its own, moving to the first column of the line. + +For more information, read > + + :help 0 + :help count +< + *faq-36.5* +36.5. How do I disable the Vim welcome screen? + +You can disable the Vim welcome screen, by adding the 'I' flag to the +'shortmess' option: > + + :set shortmess+=I +< +For more information, read > + + :help :intro + :help 'shortmess' +< + *faq-36.6* +36.6. How do I avoid the "hit enter to continue" prompt? + +Vim will prompt you with the "hit enter to continue" prompt, if there are +some messages on the screen for you to read and the screen is about to be +redrawn. You can add the 'T' flag to the 'shortmess' option to truncate +all messages. This will help in avoiding the hit-enter prompt: > + + :set shortmess+=T +< +You can also increase the command height by setting the 'cmdheight' option: > + + :set cmdheight=2 +< +For more information, read > + + :help hit-enter + :help avoid-hit-enter + :help 'shortmess' + :help 'cmdheight' +< + *faq-36.7* +36.7. How do I invoke Vim from command line to run a group of commands on a + group of files? + +There are several ways to invoke Vim from command line to run a group of +commands on a group of files. You can use a set of "-c" command line +options to specify a group of commands: > + + $ vim -c "<ex_command_1>" -c "<ex_command_2>" *.txt +< +Each of the ex-command specified with the "-c" command line option is +executed one by one sequentially. You can also use a single "-c" command +line option and the "|" character to separate the ex commands: > + + $ vim -c "<ex_command_1> | <ex_command_2>" *.txt +< +In the above command, if an ex command fails, then all the remaining ex +commands will not be executed. + +For example, to replace "ABC" with "DEF" in a file from the command-line, +you can use the following command: > + + $ vim -c "%s/ABC/DEF/ge | update" myfile.txt +< +To replace "ABC" with "DEF" in multiple files from the command-line, +you can use the following command: > + + $ vim -c "argdo %s/ABC/DEF/ge | update" *.txt +< +You can store the group of commands into a file and use the "-s" command +line option to run the commands on a set of files. For example, if the +group of commands are stored in the file mycmds.txt, then you can use the +following command: > + + $ vim -s mycmds.txt *.pl +< +For more information, read > + + :help -c + :help -s +< + *faq-36.8* +36.8. How do I use a normal mode command from insert mode without leaving + the insert mode? + +You can use a normal command from insert mode, without leaving the insert +mode, by first pressing the CTRL-O key and then follow that with a single +normal mode command. + +To execute more than one normal mode command, press the CTRL-L key, +followed by any number of normal mode commands and then press <Esc> to get +back to the insert mode. + +For more information, read > + + :help i_CTRL-O + :help i_CTRL-L +< + +============================================================================= + *faq-37* +SECTION 37 - UNICODE +Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> + + *faq-37.1* +37.1. Is it possible to create Unicode files using Vim? + +Yes. It may be more or less complicated depending on the keyboard and fonts +available to you, but it is always possible to encode any possible Unicode +codepoint (and some illegal ones) into a file. To create a Unicode file +using Vim, you should have compiled Vim with the "+multi_byte" compile-time +option. You can get more information about Unicode from the following +sites: > + + http://www.unicode.org + http://www.cl.cam.ac.uk/~mgk25/unicode.html +< +For more information, read > + + :help multibyte + :help usr_45.txt +< + *faq-37.2* +37.2. Which Vim settings are particularly important for editing Unicode + files? + +The most important are the various "encoding" options, i.e., 'encoding', +'fileencoding', 'fileencodings' and 'termencoding'. The boolean option +'bomb' is also significant. + +For more information, read > + + :help 'encoding' + :help 'fileencoding' + :help 'fileencodings' + :help 'termencoding' + :help 'bomb' +< + *faq-37.3* +37.3. What is the 'encoding' option? + +Basically, the 'encoding' option defines how Vim will represent your data +internally. However, all Unicode encodings are represented internally as +utf-8 and converted (if necessary) when reading and writing. + +For more information, read > + + :help 'encoding' +< + *faq-37.4* +37.4. How does Vim name the various Unicode encodings? + +Utf-8 is called utf-8 or utf8; utf-16 is called ucs-2 or ucs2; utf-32 is +called ucs-4 or ucs4. Also, you may specify endianness (except for utf-8 +which does not vary for endianness) by appending le for little-endian or be +for big-endian. If you create a file with an encoding of ucs-2 or ucs-4 +without specifying endianness, Vim will use what is typical of your +machine. + +For more information, read > + + :help encoding-names + :help encoding-values + :help encoding-table +< + *faq-37.5* +37.5. How does Vim specify the presence or absence of a byte-order mark? + +When reading a file, if the 'fileencodings' option includes "ucs-bom", Vim +will check for a byte-order mark. When writing a file, if the 'bomb' option +is set, Vim will write a byte-order mark on files whose encoding warrants +it. + +For more information, read > + + :help 'fileencodings' + :help 'bomb' +< + *faq-37.6* +37.6. What is the 'fileencoding' option? + +The 'fileencoding' option defines the particular encoding which Vim will +use to write a file. If empty, then the value of the 'encoding' option is +the default. + +For more information, read > + + :help 'fileencoding' +< + *faq-37.7* +37.7. What is the 'fileencodings' option? + +The 'fileencodings' option defines the heuristics used by Vim when opening +an existing file. It is a comma separated list of encodings. A special +name, "ucs-bom" is used to indicate that Vim should check for the presence +of a byte-order mark; however, it will not be recognised if it comes after +"utf-8". Normally, "ucs-bom" (if present) should be first in the list. + +When Vim opens a file, it checks it against the encodings listed in +'fileencodings'. The first one that matches is used. If there is no match, +then Vim sets 'fileencoding' to the null string, i.e., the value of +'encoding' will be used. + +For more information, read > + + :help 'fileencodings' + :help 'encoding' +< + *faq-37.8* +37.8. What is the 'termencoding' option? + +The 'termencoding' option defines how your keyboard encodes the data you +type. If empty, Vim assumes that it has the same value as 'encoding'. +Usually it should be set to something that matches your locale. + +For more information, read > + + :help 'termencoding' + :help locale +< + *faq-37.9* +37.9. What is the 'bomb' option? + +When reading a file with "ucs-bom" present in the 'fileencodings' option, +Vim will set the 'bomb' option on or off depending on the presence or +absence of a byte-order mark at the start of the file. When writing, Vim +will write a byte-order mark if the 'bomb' option is set. You may set or +unset it manually do make Vim write, or not write, the b.o.m. + +For more information, read > + + :help 'bomb' +< + *faq-37.10* +37.10. Where can I find an example of a typical use of all these options? + +There is a "tip", with explains them in different words with an example, at +http://vim.sourceforge.net/tip_view.php?tip_id=246 . + + *faq-37.11* +37.11. How can I insert Unicode characters into a file using Vim? + +Several methods are available: + +- Characters present on your keyboard can bbe typed in the usual way, even + those which require a "dead-key" prefix, like (for instance) the + circumflex on French keyboards. +- Characters for which a digraph is definedd can be typed as two characters + prefixed by <Ctrl-K>. +- If you have set the 'digraph' option, youu can enter the characters for + which a digrph is defined as <char1><BS><char2>. +- Any character can be entered by using a <<Ctrl-V> prefix (or <Ctrl-Q> if + <Ctrl-V> is remapped to paste from the clipboard). + +For more information, read > + + :help digraphs + :help 'digraph' + :help i_CTRL-V_digit +< + *faq-37.12* +37.12. How can I know which digraphs are defined and for which characters? + +First set the 'encoding' option properly (for instance, to utf-8), then use +the :digraphs command to list the currently defined digraphs. + +For more information, read > + + :help :digraphs + :help 'encoding' +< + +============================================================================= + vim:tw=78:ts=8:ft=help:norl: From 610b1dc698e2976adad539ee6ab7976dd191f273 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 13 Oct 2011 13:05:40 +0900 Subject: [PATCH 358/783] html --- html/build.vim | 100 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 html/build.vim diff --git a/html/build.vim b/html/build.vim new file mode 100644 index 000000000..65e41e23d --- /dev/null +++ b/html/build.vim @@ -0,0 +1,100 @@ +#!gvim -u + +if has('vim_starting') + set nocompatible + set loadplugins + call feedkeys(":source " . expand('<sfile>:t') . "\<CR>") + finish +endif + +set nocompatible +set nomore +syntax on +colorscheme delek + +let $VIMDOCROOT = expand('<sfile>:p:h:h') + +" for ja custom syntax +set runtimepath+=$VIMDOCROOT/runtime + +source $VIMDOCROOT/tools/makehtml.vim + +function! s:main() + " clean + for f in split(glob('tmp/*'), '\n') + call delete(f) + endfor + + if !isdirectory('tmp') + call mkdir('tmp') + endif + + cd tmp + + " + " copy dist files + " + args $VIMDOCROOT/runtime/doc/* $VIMDOCROOT/vim_faq/vim_faq.jax + argdo saveas %:t + " add non-ascii char + edit vim_faq_help.jax | 1s/$/ 和訳/ | update + + " generate tags + try + helptags . + catch + echo v:exception + endtry + + enew + + " + " generate html + " + set foldlevel=1000 + call MakeHtmlAll() + " add header and footer + tabnew + " XXX: modeline may cause error. + " 2html.vim escape modeline. But it doesn't escape /^vim:/. + set nomodeline + args *.html + argdo call s:FixIE8() | call s:AddHeaderFooter() | update + quit + + cd - +endfunction + +function! s:FixIE8() + " IE8はHTMLがインライン要素のみの長いテキストだった場合にテキストの選 + " 択が激しく遅くなるようなので、適当にブロック要素を入れる。 + %s@^<br>$@<div><br></div>@e +endfunction + +function! s:AddHeaderFooter() + call append(search('^<body', 'wn'), [ + \ '<div id="cse-search-form" style="float:right;">Loading</div>', + \ '<script src="//www.google.com/jsapi" type="text/javascript"></script>', + \ '<script type="text/javascript"> ', + \ ' google.load("search", "1", {language : "ja"});', + \ ' google.setOnLoadCallback(function() {', + \ ' var customSearchControl = new google.search.CustomSearchControl("001325159752250591701:65aunpq8rlg");', + \ ' customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);', + \ ' var options = new google.search.DrawOptions();', + \ ' options.enableSearchboxOnly("http://www.google.com/cse?cx=001325159752250591701:65aunpq8rlg");', + \ ' customSearchControl.draw("cse-search-form", options);', + \ ' }, true);', + \ '</script>', + \ '<link rel="stylesheet" href="//www.google.com/cse/style/look/default.css" type="text/css" />', + \ ]) + call append(search('^</body', 'wn') - 1, [ + \ '<div style="text-align:right;">', + \ '<a href="https://github.com/vim-jp/vimdoc-ja">Vim日本語ドキュメント</a><br>', + \ '</div>', + \ ]) +endfunction + +try + call s:main() +endtry + From 1ab5c0a7c83c43dac8b1c4f5d57966f2d5763431 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 13 Oct 2011 13:10:31 +0900 Subject: [PATCH 359/783] clean --- Makefile | 37 +- google-sites/build.vim | 286 - google-sites/gdata-2.0.13.zip | Bin 2056389 -> 0 bytes google-sites/upload.py | 99 - removed/vim_faq_help.jax | 7158 ----------------------- runtime.old/doc/arabic.jax | 301 - runtime.old/doc/autocmd.jax | 1311 ----- runtime.old/doc/change.jax | 1614 ------ runtime.old/doc/cmdline.jax | 1052 ---- runtime.old/doc/debug.jax | 181 - runtime.old/doc/debugger.jax | 134 - runtime.old/doc/develop.jax | 494 -- runtime.old/doc/diff.jax | 411 -- runtime.old/doc/digraph.jax | 1482 ----- runtime.old/doc/editing.jax | 1623 ------ runtime.old/doc/eval.jax | 8068 -------------------------- runtime.old/doc/evim-ja.UTF-8.1 | 51 - runtime.old/doc/farsi.jax | 271 - runtime.old/doc/filetype.jax | 611 -- runtime.old/doc/fold.jax | 569 -- runtime.old/doc/ft_ada.jax | 505 -- runtime.old/doc/ft_sql.jax | 749 --- runtime.old/doc/gui.jax | 1017 ---- runtime.old/doc/gui_w16.jax | 183 - runtime.old/doc/gui_w32.jax | 494 -- runtime.old/doc/gui_x11.jax | 577 -- runtime.old/doc/hangulin.jax | 108 - runtime.old/doc/help.jax | 225 - runtime.old/doc/helphelp.jax | 350 -- runtime.old/doc/howto.jax | 96 - runtime.old/doc/if_cscop.jax | 483 -- runtime.old/doc/if_lua.jax | 240 - runtime.old/doc/if_mzsch.jax | 266 - runtime.old/doc/if_ole.jax | 201 - runtime.old/doc/if_perl.jax | 298 - runtime.old/doc/if_pyth.jax | 389 -- runtime.old/doc/if_ruby.jax | 211 - runtime.old/doc/if_sniff.jax | 96 - runtime.old/doc/if_tcl.jax | 526 -- runtime.old/doc/indent.jax | 877 --- runtime.old/doc/index.jax | 1671 ------ runtime.old/doc/insert.jax | 1852 ------ runtime.old/doc/intro.jax | 865 --- runtime.old/doc/map.jax | 1407 ----- runtime.old/doc/mbyte.jax | 1396 ----- runtime.old/doc/message.jax | 826 --- runtime.old/doc/mlang.jax | 210 - runtime.old/doc/motion.jax | 1310 ----- runtime.old/doc/netbeans.jax | 988 ---- runtime.old/doc/options.jax | 8254 --------------------------- runtime.old/doc/os_390.jax | 134 - runtime.old/doc/os_amiga.jax | 148 - runtime.old/doc/os_beos.jax | 329 -- runtime.old/doc/os_dos.jax | 296 - runtime.old/doc/os_mac.jax | 116 - runtime.old/doc/os_mint.jax | 38 - runtime.old/doc/os_msdos.jax | 271 - runtime.old/doc/os_os2.jax | 209 - runtime.old/doc/os_qnx.jax | 137 - runtime.old/doc/os_risc.jax | 11 - runtime.old/doc/os_unix.jax | 62 - runtime.old/doc/os_vms.jax | 943 --- runtime.old/doc/os_win32.jax | 369 -- runtime.old/doc/pattern.jax | 1273 ----- runtime.old/doc/pi_getscript.jax | 449 -- runtime.old/doc/pi_gzip.jax | 39 - runtime.old/doc/pi_netrw.jax | 3584 ------------ runtime.old/doc/pi_paren.jax | 58 - runtime.old/doc/pi_spec.jax | 109 - runtime.old/doc/pi_tar.jax | 126 - runtime.old/doc/pi_vimball.jax | 259 - runtime.old/doc/pi_zip.jax | 114 - runtime.old/doc/print.jax | 743 --- runtime.old/doc/quickfix.jax | 1401 ----- runtime.old/doc/quickref.jax | 1416 ----- runtime.old/doc/quotes.jax | 264 - runtime.old/doc/recover.jax | 230 - runtime.old/doc/remote.jax | 196 - runtime.old/doc/repeat.jax | 666 --- runtime.old/doc/rileft.jax | 119 - runtime.old/doc/russian.jax | 70 - runtime.old/doc/scroll.jax | 323 -- runtime.old/doc/sign.jax | 192 - runtime.old/doc/sponsor.jax | 210 - runtime.old/doc/starting.jax | 1491 ----- runtime.old/doc/syntax.jax | 4634 --------------- runtime.old/doc/tabpage.jax | 373 -- runtime.old/doc/tags-ja | 8205 -------------------------- runtime.old/doc/tagsrch.jax | 814 --- runtime.old/doc/term.jax | 871 --- runtime.old/doc/tips.jax | 543 -- runtime.old/doc/uganda.jax | 359 -- runtime.old/doc/undo.jax | 400 -- runtime.old/doc/usr_01.jax | 192 - runtime.old/doc/usr_02.jax | 555 -- runtime.old/doc/usr_03.jax | 643 --- runtime.old/doc/usr_04.jax | 504 -- runtime.old/doc/usr_05.jax | 634 -- runtime.old/doc/usr_06.jax | 278 - runtime.old/doc/usr_07.jax | 481 -- runtime.old/doc/usr_08.jax | 596 -- runtime.old/doc/usr_09.jax | 293 - runtime.old/doc/usr_10.jax | 804 --- runtime.old/doc/usr_11.jax | 321 -- runtime.old/doc/usr_12.jax | 359 -- runtime.old/doc/usr_20.jax | 386 -- runtime.old/doc/usr_21.jax | 491 -- runtime.old/doc/usr_22.jax | 396 -- runtime.old/doc/usr_23.jax | 336 -- runtime.old/doc/usr_24.jax | 596 -- runtime.old/doc/usr_25.jax | 566 -- runtime.old/doc/usr_26.jax | 215 - runtime.old/doc/usr_27.jax | 559 -- runtime.old/doc/usr_28.jax | 423 -- runtime.old/doc/usr_29.jax | 616 -- runtime.old/doc/usr_30.jax | 633 -- runtime.old/doc/usr_31.jax | 264 - runtime.old/doc/usr_32.jax | 182 - runtime.old/doc/usr_40.jax | 659 --- runtime.old/doc/usr_41.jax | 2415 -------- runtime.old/doc/usr_42.jax | 375 -- runtime.old/doc/usr_43.jax | 171 - runtime.old/doc/usr_44.jax | 711 --- runtime.old/doc/usr_45.jax | 413 -- runtime.old/doc/usr_90.jax | 497 -- runtime.old/doc/usr_toc.jax | 355 -- runtime.old/doc/various.jax | 624 -- runtime.old/doc/version4.jax | 367 -- runtime.old/doc/vi_diff.jax | 1047 ---- runtime.old/doc/vim-ja.UTF-8.1 | 501 -- runtime.old/doc/vimdiff-ja.UTF-8.1 | 44 - runtime.old/doc/vimtutor-ja.UTF-8.1 | 45 - runtime.old/doc/visual.jax | 493 -- runtime.old/doc/windows.jax | 1220 ---- runtime.old/doc/workshop.jax | 99 - runtime.old/doc/xxd-ja.UTF-8.1 | 366 -- runtime.old/syntax/help_ja.vim | 3 - tools/googlecode_upload.py | 248 - 138 files changed, 4 insertions(+), 106989 deletions(-) delete mode 100644 google-sites/build.vim delete mode 100644 google-sites/gdata-2.0.13.zip delete mode 100644 google-sites/upload.py delete mode 100644 removed/vim_faq_help.jax delete mode 100644 runtime.old/doc/arabic.jax delete mode 100644 runtime.old/doc/autocmd.jax delete mode 100644 runtime.old/doc/change.jax delete mode 100644 runtime.old/doc/cmdline.jax delete mode 100644 runtime.old/doc/debug.jax delete mode 100644 runtime.old/doc/debugger.jax delete mode 100644 runtime.old/doc/develop.jax delete mode 100644 runtime.old/doc/diff.jax delete mode 100644 runtime.old/doc/digraph.jax delete mode 100644 runtime.old/doc/editing.jax delete mode 100644 runtime.old/doc/eval.jax delete mode 100644 runtime.old/doc/evim-ja.UTF-8.1 delete mode 100644 runtime.old/doc/farsi.jax delete mode 100644 runtime.old/doc/filetype.jax delete mode 100644 runtime.old/doc/fold.jax delete mode 100644 runtime.old/doc/ft_ada.jax delete mode 100644 runtime.old/doc/ft_sql.jax delete mode 100644 runtime.old/doc/gui.jax delete mode 100644 runtime.old/doc/gui_w16.jax delete mode 100644 runtime.old/doc/gui_w32.jax delete mode 100644 runtime.old/doc/gui_x11.jax delete mode 100644 runtime.old/doc/hangulin.jax delete mode 100644 runtime.old/doc/help.jax delete mode 100644 runtime.old/doc/helphelp.jax delete mode 100644 runtime.old/doc/howto.jax delete mode 100644 runtime.old/doc/if_cscop.jax delete mode 100644 runtime.old/doc/if_lua.jax delete mode 100644 runtime.old/doc/if_mzsch.jax delete mode 100644 runtime.old/doc/if_ole.jax delete mode 100644 runtime.old/doc/if_perl.jax delete mode 100644 runtime.old/doc/if_pyth.jax delete mode 100644 runtime.old/doc/if_ruby.jax delete mode 100644 runtime.old/doc/if_sniff.jax delete mode 100644 runtime.old/doc/if_tcl.jax delete mode 100644 runtime.old/doc/indent.jax delete mode 100644 runtime.old/doc/index.jax delete mode 100644 runtime.old/doc/insert.jax delete mode 100644 runtime.old/doc/intro.jax delete mode 100644 runtime.old/doc/map.jax delete mode 100644 runtime.old/doc/mbyte.jax delete mode 100644 runtime.old/doc/message.jax delete mode 100644 runtime.old/doc/mlang.jax delete mode 100644 runtime.old/doc/motion.jax delete mode 100644 runtime.old/doc/netbeans.jax delete mode 100644 runtime.old/doc/options.jax delete mode 100644 runtime.old/doc/os_390.jax delete mode 100644 runtime.old/doc/os_amiga.jax delete mode 100644 runtime.old/doc/os_beos.jax delete mode 100644 runtime.old/doc/os_dos.jax delete mode 100644 runtime.old/doc/os_mac.jax delete mode 100644 runtime.old/doc/os_mint.jax delete mode 100644 runtime.old/doc/os_msdos.jax delete mode 100644 runtime.old/doc/os_os2.jax delete mode 100644 runtime.old/doc/os_qnx.jax delete mode 100644 runtime.old/doc/os_risc.jax delete mode 100644 runtime.old/doc/os_unix.jax delete mode 100644 runtime.old/doc/os_vms.jax delete mode 100644 runtime.old/doc/os_win32.jax delete mode 100644 runtime.old/doc/pattern.jax delete mode 100644 runtime.old/doc/pi_getscript.jax delete mode 100644 runtime.old/doc/pi_gzip.jax delete mode 100644 runtime.old/doc/pi_netrw.jax delete mode 100644 runtime.old/doc/pi_paren.jax delete mode 100644 runtime.old/doc/pi_spec.jax delete mode 100644 runtime.old/doc/pi_tar.jax delete mode 100644 runtime.old/doc/pi_vimball.jax delete mode 100644 runtime.old/doc/pi_zip.jax delete mode 100644 runtime.old/doc/print.jax delete mode 100644 runtime.old/doc/quickfix.jax delete mode 100644 runtime.old/doc/quickref.jax delete mode 100644 runtime.old/doc/quotes.jax delete mode 100644 runtime.old/doc/recover.jax delete mode 100644 runtime.old/doc/remote.jax delete mode 100644 runtime.old/doc/repeat.jax delete mode 100644 runtime.old/doc/rileft.jax delete mode 100644 runtime.old/doc/russian.jax delete mode 100644 runtime.old/doc/scroll.jax delete mode 100644 runtime.old/doc/sign.jax delete mode 100644 runtime.old/doc/sponsor.jax delete mode 100644 runtime.old/doc/starting.jax delete mode 100644 runtime.old/doc/syntax.jax delete mode 100644 runtime.old/doc/tabpage.jax delete mode 100644 runtime.old/doc/tags-ja delete mode 100644 runtime.old/doc/tagsrch.jax delete mode 100644 runtime.old/doc/term.jax delete mode 100644 runtime.old/doc/tips.jax delete mode 100644 runtime.old/doc/uganda.jax delete mode 100644 runtime.old/doc/undo.jax delete mode 100644 runtime.old/doc/usr_01.jax delete mode 100644 runtime.old/doc/usr_02.jax delete mode 100644 runtime.old/doc/usr_03.jax delete mode 100644 runtime.old/doc/usr_04.jax delete mode 100644 runtime.old/doc/usr_05.jax delete mode 100644 runtime.old/doc/usr_06.jax delete mode 100644 runtime.old/doc/usr_07.jax delete mode 100644 runtime.old/doc/usr_08.jax delete mode 100644 runtime.old/doc/usr_09.jax delete mode 100644 runtime.old/doc/usr_10.jax delete mode 100644 runtime.old/doc/usr_11.jax delete mode 100644 runtime.old/doc/usr_12.jax delete mode 100644 runtime.old/doc/usr_20.jax delete mode 100644 runtime.old/doc/usr_21.jax delete mode 100644 runtime.old/doc/usr_22.jax delete mode 100644 runtime.old/doc/usr_23.jax delete mode 100644 runtime.old/doc/usr_24.jax delete mode 100644 runtime.old/doc/usr_25.jax delete mode 100644 runtime.old/doc/usr_26.jax delete mode 100644 runtime.old/doc/usr_27.jax delete mode 100644 runtime.old/doc/usr_28.jax delete mode 100644 runtime.old/doc/usr_29.jax delete mode 100644 runtime.old/doc/usr_30.jax delete mode 100644 runtime.old/doc/usr_31.jax delete mode 100644 runtime.old/doc/usr_32.jax delete mode 100644 runtime.old/doc/usr_40.jax delete mode 100644 runtime.old/doc/usr_41.jax delete mode 100644 runtime.old/doc/usr_42.jax delete mode 100644 runtime.old/doc/usr_43.jax delete mode 100644 runtime.old/doc/usr_44.jax delete mode 100644 runtime.old/doc/usr_45.jax delete mode 100644 runtime.old/doc/usr_90.jax delete mode 100644 runtime.old/doc/usr_toc.jax delete mode 100644 runtime.old/doc/various.jax delete mode 100644 runtime.old/doc/version4.jax delete mode 100644 runtime.old/doc/vi_diff.jax delete mode 100644 runtime.old/doc/vim-ja.UTF-8.1 delete mode 100644 runtime.old/doc/vimdiff-ja.UTF-8.1 delete mode 100644 runtime.old/doc/vimtutor-ja.UTF-8.1 delete mode 100644 runtime.old/doc/visual.jax delete mode 100644 runtime.old/doc/windows.jax delete mode 100644 runtime.old/doc/workshop.jax delete mode 100644 runtime.old/doc/xxd-ja.UTF-8.1 delete mode 100644 runtime.old/syntax/help_ja.vim delete mode 100644 tools/googlecode_upload.py diff --git a/Makefile b/Makefile index 30c97e741..ea09e1d69 100644 --- a/Makefile +++ b/Makefile @@ -1,37 +1,8 @@ -OUTDIR=build -TARGET_LANG=ja -VERSION=$(shell date +%Y%m%d)-r$(shell svnversion) -all: build_runtime +.PHONY: all html -clean: - rm -rf $(OUTDIR)/runtime +all: -distclean: - rm -rf $(OUTDIR) - -.PHONY: all clean build_runtime snapshot zip distupload - -$(OUTDIR)/runtime: - mkdir -p $(OUTDIR) - svn export --force runtime $(OUTDIR)/runtime - -build_runtime: $(OUTDIR)/runtime - -snapshot: build_runtime - cd $(OUTDIR)/runtime && tar cf - * | bzip2 > ../vimdoc_$(TARGET_LANG)-snapshot.tar.bz2 - -zip: build_runtime - cd $(OUTDIR)/runtime && zip -r9q ../vimdoc_ja-$(VERSION).zip * - -distupload: zip - python tools/googlecode_upload.py \ - --project="vimdoc-ja" \ - --summary="release $(VERSION)" \ - $(OUTDIR)/vimdoc_ja-$(VERSION).zip - -sites: - cd google-sites; \ - gvim -u build.vim -f; \ - python upload.py; +html: + cd html && gvim -u build.vim diff --git a/google-sites/build.vim b/google-sites/build.vim deleted file mode 100644 index 31d6367ea..000000000 --- a/google-sites/build.vim +++ /dev/null @@ -1,286 +0,0 @@ -#!gvim -u -" 手順: -" 1. gvim -u build.vim -" 2. python upload.py - -if has('vim_starting') - set nocompatible - set loadplugins - call feedkeys(":source " . expand('<sfile>:t') . "\<CR>") - finish -endif - -set nocompatible -set nomore - -syntax on -colorscheme delek - -function! s:main() - " clean - for f in split(glob('tmp/*'), '\n') - call delete(f) - endfor - - if !isdirectory('tmp') - call mkdir('tmp') - endif - - cd tmp - - " copy dist files - args ../../runtime/doc/* ../../removed/vim_faq_help.jax - argdo saveas %:t - " add non-ascii char - edit vim_faq_help.jax | 1s/$/ 和訳/ | update - - " generate tags - try - helptags . - catch - echo v:exception - endtry - - enew - - " generate html - set foldlevel=1000 - call MakeHtmlAll() - " add header and footer - tabnew - args home *-html - argdo call s:AddHeaderFooter() | call s:ToGoogleSitesContent() | update - quit - - cd .. -endfunction - -function! s:AddHeaderFooter() - 1;/<body>/ - call append('.', []) - - 1;/<\/body>/-1 - call append('.', []) -endfunction - -" Remove header and footer. -" Convert class="..." to style="...". -function! s:ToGoogleSitesContent() - let style = {} - 1;/^<style/ - let lnum = line('.') - while getline(lnum) !~ '^</style>' - let line = getline(lnum) - if line =~ '^\.' - let m = matchlist(line, '^\.\(\w*\) { \(.*\) }') - let style[m[1]] = 'style="' . m[2] . '"' - endif - let lnum += 1 - endwhile - %s/\<class="\(\w*\)"/\=get(style, submatch(1), '')/g - - 1,/^<body>/delete - /<\/body>/,$delete - -endfunction - -function! MakeHtmlAll() - if bufname("%") != "" || &modified - new - endif - let s:log = [] - call MakeTagsFile() - let files = split(glob('*.??[tx]'), '\n') - for i in range(len(files)) - call append('$', printf("%d/%d %s -> %s", i+1, len(files), files[i], s:HtmlName(files[i]))) - endfor - silent 1delete _ - for i in range(len(files)) - call cursor(i+1, 1) - redraw! " show progress - let file = files[i] - call MakeHtml(file) - call setline(i+1, getline(i+1) . ' *DONE*') - endfor - if s:log != [] - new - call append(0, s:log) - endif -endfunction - -function! MakeTagsFile() - let files = split(glob('tags'), '\n') - let files += split(glob('tags-??'), '\n') - for file in files - let lang = matchstr(file, 'tags-\zs..$') - if lang == "" - let fname = "tags.txt" - else - let fname = printf("tags.%sx", lang) - endif - new `=fname` - silent %delete _ - let tags = s:GetTags(lang) - for tagname in sort(keys(tags)) - if tagname == "help-tags" - continue - endif - call append('$', printf("|%s|\t\t%s", tagname, tags[tagname]["filename"])) - endfor - call append('$', ' vim:ft=help:') - silent 1delete _ - wq! - endfor -endfunction - -function! MakeHtml(fname) - new `=a:fname` - - " 2html options - let g:html_use_css = 1 - let g:html_no_pre = 0 - " set dumy highlight to keep syntax identity - if !exists("s:attr_save") - let s:attr_save = {} - for name in ["helpStar", "helpBar", "helpHyperTextEntry", "helpHyperTextJump", "helpOption"] - let s:attr_save[name] = synIDattr(synIDtrans(hlID(name)), "name") - execute printf("hi %s term=bold cterm=bold gui=bold", name) - endfor - endif - - TOhtml - - let lang = s:GetLang(a:fname) - silent %s@<span class="\(helpHyperTextEntry\|helpHyperTextJump\|helpOption\)">\([^<]*\)</span>@\=s:MakeLink(lang, submatch(1), submatch(2))@ge - silent %s@^<span class="Ignore"><</span>\ze @\ @ge - silent %s@<span class="\(helpStar\|helpBar\|Ignore\)">[^<]*</span>@@ge - " remove style - g/^\.\(helpBar\|helpStar\|helpHyperTextEntry\|helpHyperTextJump\|helpOption\)/silent delete _ - - call s:Header() - call s:Footer() - - wq! `=s:HtmlName(a:fname)` - quit! -endfunction - -function! s:Header() - let name = fnamemodify(bufname("%"), ":r:r") - let indexfile = s:GetIndexFile(bufname("%")) - let header = [ - \ '<a name="top"></a>', - \ printf('<a href="%s">main help file</a>', indexfile), - \ '<hr>', - \ ] - call append(search('^<body', 'wn'), header) - let style = [ - \ '.MissingTag { background-color: black; color: white; }', - \ '.EnglishTag { background-color: gray; color: white; }', - \ ] - call append(search('^<style', 'wn') + 1, style) -endfunction - -function! s:Footer() - let indexfile = s:GetIndexFile(bufname("%")) - let footer = [ - \ '<hr>', - \ printf('<a href="#top">top</a> - <a href="%s">main help file</a><br>', indexfile), - \ ] - call append(search('^</body', 'wn') - 1, footer) -endfunction - -function! s:MakeLink(lang, hlname, tagname) - let tagname = a:tagname - let tagname = substitute(tagname, '<', '<', 'g') - let tagname = substitute(tagname, '>', '>', 'g') - let tagname = substitute(tagname, '&', '\&', 'g') - if a:hlname == "helpHyperTextEntry" - let sep = "*" - elseif a:hlname == "helpHyperTextJump" - let sep = "|" - elseif a:hlname == "helpOption" - let sep = "" - endif - let tags = s:GetTags(a:lang) - if has_key(tags, tagname) - let href = tags[tagname]["html"] - if tagname !~ '\.txt$' && tagname != "help-tags" - let href .= '#' . tagname - endif - if a:hlname == "helpHyperTextEntry" - let res = printf('<a class="%s" href="%s" name="%s">%s%s%s</a>', s:attr_save[a:hlname], href, a:tagname, sep, a:tagname, sep) - else - let res = printf('<a class="%s" href="%s">%s%s%s</a>', s:attr_save[a:hlname], href, sep, a:tagname, sep) - endif - else - " missing tag or not translated or typo. use English if possible. - call s:Log("%s: tag error: %s", bufname("%"), tagname) - let tags = s:GetTags("") - if has_key(tags, tagname) - let href = tags[tagname]["html"] - if tagname !~ '\.txt$' - let href .= '#' . tagname - endif - let res = printf('<a class="EnglishTag" href="%s">%s%s%s</a>', href, sep, a:tagname, sep) - else - let res = printf('<span class="MissingTag">%s%s%s</span>', sep, a:tagname, sep) - endif - endif - return res -endfunction - -function! s:GetTags(lang) - if !exists("s:tags_" . a:lang) - let &l:tags = (a:lang == "") ? "./tags" : "./tags-" . a:lang - let tags = {} - for item in taglist(".*") - let item["html"] = s:HtmlName(item["filename"]) - let tags[item["name"]] = item - endfor - " for help-tags - let item = {} - let item["name"] = "help-tags" - let item["html"] = "tags-html" - let tags[item["name"]] = item - let s:tags_{a:lang} = tags - endif - return s:tags_{a:lang} -endfunction - -function! s:HtmlName(helpfile) - " help.txt => "help.html" - " help.jax => "help.ja.html" - let base = fnamemodify(a:helpfile, ":r") - if base == "help" - return s:GetIndexFile(a:helpfile) - endif - if base == "index" - let base = "vimindex" - endif - return printf("%s-html", base) -endfunction - -function! s:GetLang(fname) - " help.txt => "" - " help.jax => "ja" - " help.jax.html => "ja" - return matchstr(a:fname, '^.*\.\zs..\zex\%(.html\)\?$') -endfunction - -function! s:GetIndexFile(fname) - return "home" -endfunction - -function! s:Log(fmt, ...) - if exists("s:log") - if len(a:000) == 0 - call add(s:log, a:fmt) - else - call add(s:log, call("printf", [a:fmt] + a:000)) - endif - endif -endfunction - -try - call s:main() -endtry diff --git a/google-sites/gdata-2.0.13.zip b/google-sites/gdata-2.0.13.zip deleted file mode 100644 index 51adcf8329569914a3928e0c8047f98fe5880245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2056389 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 Voi*^p&*@XT+zra!j-yc6$f|vOBj{WEIUB9HK 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%0A-%)mRREbY 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⁡ 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%0Ai}BjEm!v(;VN{;$9>}p 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%0AyP`>KPY22Q!PQRX=&0+2ZkSY#NO<_ajs;mF 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]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 z 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%0Am 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 (BGF(o#8=Cu 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≤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�wfoQ%<{?0)Peqo#1aNxA?2m&VuZXP+?- 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 POfu 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%0A=tG6Sdzxee19Mm(VHFF4-dq^^W%UmH3 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�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 diff --git a/google-sites/upload.py b/google-sites/upload.py deleted file mode 100644 index c3457e505..000000000 --- a/google-sites/upload.py +++ /dev/null @@ -1,99 +0,0 @@ -# encoding: utf-8 -# require: http://code.google.com/p/gdata-python-client/ - -from __future__ import print_function, division, unicode_literals, \ - absolute_import - -import sys -import os -import codecs -import getpass - -sys.path.insert(0, 'gdata-2.0.13.zip/gdata-2.0.13/src') -import gdata.client -import gdata.sites.client -import atom - - -SOURCE_APP_NAME = "vimdocja-updater-v1.1" - -RETRY_MAX = 3 - - -def is_helphtml(page_name): - return page_name.endswith("-html") or page_name == "home" - - -def pagetitle(page_name): - if page_name == "home": - return "help" - return page_name.replace("-html", "") - - -def main(): - srcdir = "tmp" - # site = raw_input("site: ") - site = "vimdocja" - email = raw_input("email: ") - password = getpass.getpass("password: ") - - client = gdata.sites.client.SitesClient(site) - client.client_login(email, password, SOURCE_APP_NAME) - - entries = {} - uri = "{0}?kind={1}".format(client.MakeContentFeedUri(), "webpage") - feed = client.GetContentFeed(uri=uri) - while True: - for entry in feed.entry: - page_name = entry.page_name.text - print("fetch: {0}".format(page_name)) - if is_helphtml(page_name): - entries[page_name] = entry - if feed.find_next_link() is None: - break - feed = client.GetNext(feed) - - for page_name in sorted(os.listdir(srcdir)): - if is_helphtml(page_name): - with open(os.path.join(srcdir, page_name)) as f: - content = f.read() - if page_name in entries: - print("update: {0}".format(page_name)) - entry = entries.pop(page_name) - entry.title = atom.data.Title(text=pagetitle(page_name)) - entry.content = atom.data.Content(text=content) - for _retry in range(RETRY_MAX): - try: - client.Update(entry) - except gdata.client.RequestError: - print("RequestError: retry") - continue - break - else: - print("create: {0}".format(page_name)) - for _retry in range(RETRY_MAX): - try: - entry = client.CreatePage("webpage", page_name, - html=content, page_name=page_name) - except gdata.client.RequestError: - print("RequestError: retry") - continue - break - - for entry in entries.values(): - print("delete: {0}".format(entry.page_name.text)) - for _retry in range(RETRY_MAX): - try: - client.Delete(entry) - except gdata.client.RequestError: - print("RequestError: retry") - continue - break - - -if __name__ == "__main__": - # not work with raw_input() - #sys.stdin = codecs.getreader(sys.getfilesystemencoding())(sys.stdin) - sys.stdout = codecs.getwriter(sys.getfilesystemencoding())(sys.stdout) - sys.stderr = codecs.getwriter(sys.getfilesystemencoding())(sys.stderr) - main() diff --git a/removed/vim_faq_help.jax b/removed/vim_faq_help.jax deleted file mode 100644 index 2cd3a3471..000000000 --- a/removed/vim_faq_help.jax +++ /dev/null @@ -1,7158 +0,0 @@ -COMMENT: よく訊かれる質問 -STATUS: finished 17 October 2004 -TRANSLATOR: madokam -TRANSLATOR: 青山正太郎(mm) <jod@r9.dion.ne.jp> - -*vim_faq.txt* Frequently Asked Questions - -このファイルをインストールする方法については、vim内で > - :help add-local-help -とタイプしてください。 - -Last updated on: 17 October 2004 - - VIM リファレンスマニュアル by: Yegappan Lakshmanan - -Frequently Asked Questions *faq* *FAQ* - -このVim FAQは、vim@vim.orgメーリングリストとcomp.editorsニューズグループに投稿 -された質問とその答から作られました。Vimにおいて問題を解決する方法はいくつかあ -ります。このFAQを読めば、その数種類の可能性のうちの1つが得られます。このFAQ中 -の情報とリンクを使って他の方法を探すこともできます。このFAQの答に対するクレジ -ットはPeppe, Benji, Charles Campbellと他多数の人々に帰属します。 - - *faq-index* -目次 - *faq-general-information* -SECTION 1 - 一般的な情報 -|faq-1.1| Vimとは何ですか? -|faq-1.2| 誰が Vim を書いたんですか? -|faq-1.3| Vim は Vi と互換性がありますか? -|faq-1.4| Vim が Vi よりも向上している点は何ですか? -|faq-1.5| Vim は無料ですか? - *faq-resources* -SECTION 2 - 情報源 -|faq-2.1| どこに行けば Vim についてもっと学べるでしょうか? -|faq-2.2| メーリング・リストはありますか? -|faq-2.3| メーリング・リストのアーカイブはありますか? -|faq-2.4| HTML/PDF/PS形式のVimユーザマニュアルはどこで手に入りますか? -|faq-2.5| ある問題が発生しました。それが私の設定によるものか、Vimそのものの - 問題かはどうすればわかりますか? -|faq-2.6| どこでバグ報告をすればいいですか? -|faq-2.7| FAQはどこで見つけられますか? -|faq-2.8| このFAQに答えが見つからなかった時、どうすればいいですか? -|faq-2.9| Vimに機能を追加するパッチを持っています。これをどこへ送ればいいで - すか? -|faq-2.10| Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグ - インを開発したり、新しいスクリプトやカラースキームを開発しました。 - これをアップロードできる公開のウェブサイトはありますか? - *faq-availability* -SECTION 3 - 入手 -|faq-3.1| Vim の最新のバージョンは何ですか? -|faq-3.2| どこで Vim の最新版を見つけられますか? -|faq-3.3| どのプラットフォーム上で実行できるんですか? -|faq-3.4| どこでVimのランタイムファイルの最新バージョンをダウンロードできま - すか? - *faq-help* -SECTION 4 - ヘルプ -|faq-4.1| どうやってヘルプ・ファイルを利用するんですか? -|faq-4.2| どうやってVimヘルプファイル中のキーワードを探すんですか? -|faq-4.3| エラーメッセージE123が出ました。なにがまずいのでしょうか? -|faq-4.4| Vimの様々なモードについては何を読めばいいですか? -|faq-4.5| 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファ - イルを生成することができますか? -|faq-4.6| 圧縮したヘルプ・ファイルを使うことはできますか? - *faq-editing-a-file* -SECTION 5 - ファイルの編集 -|faq-5.1| ファイルを編集用に読み込むには? -|faq-5.2| 現在のファイルを別な名前で保存(save as)して新しいファイルを編集す - るには? -|faq-5.3| カレントディレクトリを現在のファイルのディレクトリにするには? -|faq-5.4| ファイルの末尾に改行文字(EOL)をつけずにファイルを書き込むには? -|faq-5.5| ファイルを最後に編集した場所から開くようにするには? -|faq-5.6| Vimでファイルを編集中にそのファイルが他のアプリケーションによって - 変更されたとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイ - アログのような)を開きます。この警告を無効にするには? -|faq-5.7| カーソル下のファイル名のファイルを開くには? -|faq-5.8| 現在のファイルを再読み込みするには? -|faq-5.9| ファイルを定期的に自動保存するには? -|faq-5.10| ファイルを読み取り専用モードで開くには? - *faq-editing-multiple-files* -SECTION 6 - 複数のファイルを編集する -|faq-6.1| Vim内で同時に複数のファイルを開くには? -|faq-6.2| 複数のファイル・バッファを切り替えるには? -|faq-6.3| それぞれのファイルを別ウィンドウで開くには? -|faq-6.4| 「ワークセット」や「プロジェクト」のように自動的に複数のファイルを - 同時に読み込ませるようにするには? -|faq-6.5| Neditやemacsのように単一のVimインスタンスで複数のトップレベルウィ - ンドウを開くことはできますか? -|faq-6.6| Vim内でディレクトリをブラウズするには? -|faq-6.7| ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? - *faq-backup* -SECTION 7 - バックアップ -|faq-7.1| ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけた - ファイルが作られます。このファイルを作成するのを止めさせるには? - (または)バックアップ機能を無効にするには? -|faq-7.2| 全てのバックアップファイルを特定のディレクトリに保存するように設定 - するには? -|faq-7.3| ファイルを保存するとファイルパーミッションが変更されます。ファイル - パーミッションを変更せずにファイルを保存するよう設定するには? - *faq-buffers* -SECTION 8 - バッファ -|faq-8.1| バッファに対して変更を加えました。変更されたバッファを保存せずに、 - かつ変更を失うことなく他のバッファを編集するには? -|faq-8.2| バッファを切り替えるときに自動的に保存するよう設定するには? -|faq-8.3| カレントウィンドウのバッファを空バッファにするには? -|faq-8.4| バッファ番号を指定してバッファを読み込むショートカットキーはありま - すか? -|faq-8.5| 読み込んでいるバッファをそれぞれ別のウィンドウで開くには? -|faq-8.6| Vimを終了することなくバッファを閉じる(削除する)には? -|faq-8.7| :e filenameでいくつかのファイルを開きました。Vimを終了することなく - そのバッファのうちの1つを閉じるには? -|faq-8.8| ":%bd"コマンドで全バッファを削除しようとしても、全てのバッファが - 削除されません。なぜ? -|faq-8.9| カレントバッファ/ファイルのバッファ番号を表示するには? -|faq-8.10| ウィンドウを閉じることなくバッファを削除するには? -|faq-8.11| Tabキーで全バッファを巡回するようにマップするには? - *faq-windows* -SECTION 9 - ウィンドウ -|faq-9.1| ウィンドウとバッファの違いは? -|faq-9.2| ウィンドウの幅を広げるには? -|faq-9.3| ウィンドウをズームイン・ズームアウトするには? -|faq-9.4| 全バッファまたは全ウィンドウ、引数リスト中の全ファイルに対してex - コマンドを実行するには? - *faq-motion* -SECTION 10 - モーション -|faq-10.1| ファイルの先頭や末尾に移動するには? -|faq-10.2| インサートモードで<Esc>キーを押してノーマルモードに移行すると、カ - ーソルが1文字左へ移動します(カーソルが行の最初の文字の上にあるとき - を除いて)。この動作を変更し、カーソルがその桁の上に残るようにでき - ますか? -|faq-10.3| <Page Up>、<Page Down>などのキーを押してスクロールしたときカーソル - 位置の桁を保つように設定することはできますか? -|faq-10.4| ファイル中のある行の長さが画面の幅を越えており、折り返されていま - す。ここでj, kキーを使うと画面上の次行(物理行)でなくファイルの次行 - (論理行)に移動します。画面上の次行に移動するには? -|faq-10.5| Vimにおける文、段落、セクションの定義は? -|faq-10.6| 文、段落、セクションの先頭と末尾に移動するには? -|faq-10.7| 画面の右端を越えて続いている行があります。右側にスクロールして画面 - 外に出ているテキストを表示するには? -|faq-10.8| 2個以上のバッファを同時にスクロールさせるには? -|faq-10.9| 矢印キーを使うとモードが変わり、バッファに変な文字が挿入され、カー - ソルが適切に移動しません。どうなっているのですか? -|faq-10.10| カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するよう - にするには? -|faq-10.11| 常にインサートモードに留まるようにするには?(モードレスな編集をす - るには?) -|faq-10.12| テキストをスクロールするとき、前後の行を表示するには? -|faq-10.13| 以前のカーソル位置に戻るには? - *faq-searching-text* -SECTION 11 - テキストを検索する -|faq-11.1| テキストを検索した後、マッチしたテキストが全て強調されます。この強 - 調を一時的/永続的に無効にするには? -|faq-11.2| 検索パターンにキャリッジリターン文字を含めるには? -|faq-11.3| 文字^Mを検索するには? -|faq-11.4| '~R', '~S'などと表示される文字を検索・置換するには? -|faq-11.5| ファイル中の印字不能文字を全て強調するには? -|faq-11.6| 単語に完全に一致するテキストを検索するには? -|faq-11.7| カーソル下の単語を検索するには? -|faq-11.8| 大文字・小文字を区別せず検索するには? -|faq-11.9| 2回続けて現れる単語を検索するには? -|faq-11.10| ある単語がバッファ中に何回現れるか数えるには? -|faq-11.11| 検索時にカーソルをマッチした単語の末尾に移動させるには? -|faq-11.12| 空行を検索するには? -|faq-11.13| 1つの文字だけを含む行を検索するには? -|faq-11.14| 複数のファイルから文字列を検索し、置換するには? -|faq-11.15| マップ中で置換コマンド":s"を使っています。検索が失敗したときマップ - が途切れてしまいます。置換が失敗したときにもマップの次のコマンドを - 続けてほしいのですが、どうすればできますか? -|faq-11.16| 行からある文字がn回目に現れる箇所を検索するには? -|faq-11.17| タブ(やその他の文字)を改行文字で置換するには? -|faq-11.18| アスキーコードで検索する文字を指定するには? -|faq-11.19| 長い行を見つけるには? -|faq-11.20| カレントバッファ内の指定したパターンを含む行を全て表示するには? -|faq-11.21| 複数行にわたる文字列を検索するには? -|faq-11.22| バッファの指定した範囲内から検索するには? - *faq-changing-text* -SECTION 12 - テキストを変更する -|faq-12.1| 行末の空白文字(スペースとタブ)を全て削除するには? -|faq-12.2| 連続する空白文字を1個のスペースに置換するには? -|faq-12.3| 連続する空行を1行だけに圧縮するには? -|faq-12.4| ファイル中の空行を全て削除するには?空白文字だけを含む行を全て削除 - するには? -|faq-12.5| カーソル下の単語をコピー/ヤンクするには? -|faq-12.6| 行全体ではなく、行内のある位置からある位置までをヤンクするには? -|faq-12.7| 現在のレジスタの中身に追加ヤンクするには? -|faq-12.8| 複数行にわたる文全体をヤンクするには? -|faq-12.9| あるパターンを含む行全てをヤンクするには? -|faq-12.10| あるパターンを含まない行全てを削除するには? -|faq-12.11| "pattern"を含む全ての行の前に行を追加するには? -|faq-12.12| 前の行が特定のパターンを含んでいる行に対して操作を行うには? -|faq-12.13| あるパターンを含む行全てに対してコマンドを実行するには? -|faq-12.14| カーソル位置の1文字上の文字をカーソル位置にコピーするには? -|faq-12.15| インサートモードに入らずに現在行の前/後に空行を挿入するには? -|faq-12.16| カレントファイルの名前をカレントバッファに挿入するには? -|faq-12.17| レジスタの中身をカレントバッファに挿入するには? -|faq-12.18| 行末を越えてカーソルを移動し、テキストを挿入するには? -|faq-12.19| カーソル下の単語(例えばjunk)を"foojunkbar"に置き換えるには? -|faq-12.20| ディレクトリ中の全てのファイルに対して特定のテキストを置換する - には? -|faq-12.21| ファイル中に数字が書かれています。これを増加・減少させるには? -|faq-12.22| ":substitute"で最後に検索したパターンを再利用するには? -|faq-12.23| ":substitute"を使って大文字・小文字を入れかえるには? -|faq-12.24| キーボード上に無い文字を入力するには? -|faq-12.25| ダイグラフのどれか、または全てを削除するコマンドはありますか? -|faq-12.26| インサートモードでバックスペースキーを押すと、今回のインサートモー - ドで入力した文字が消されるだけです。バックスペースキーで前回のイン - サートモードで入力した文字を消すには? -|faq-12.27| 72文字より長くて"+"で終わり、次行に折り返されている行があります。 - このような行をすばやく連結させるには? -|faq-12.28| 文字単位でヤンクされたテキストを新しい行にペーストするには? -|faq-12.29| 単語・文字・テキストのブロックの大文字小文字を入れかえるには? -|faq-12.30| キーボード上にないアスキー文字を入力するには? -|faq-12.31| ファイル中の印字不能文字を置換するには? -|faq-12.32| バッファから重複した行を削除するには? -|faq-12.33| ファイル中の全ての行の前に行番号をつけるには? -|faq-12.34| 2つの文字・単語・行を入れ換えるには? - *faq-completion-in-insert-mode* -SECTION 13 - インサートモードでの補完 -|faq-13.1| インサートモードで単語や行を補完するには? -|faq-13.2| インサートモードでファイル名を補完するには? -|faq-13.3| インサートモードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 - 今補完した単語の後に現れる単語を補完するには? - *faq-text-formatting* -SECTION 14 - テキストの整形 -|faq-14.1| 折り返された行の末尾に改行を挿入するには? -|faq-14.2| 1行がn文字以下になるように長い行を整形するには? -|faq-14.3| 短い行を連結して段落を形成するには? -|faq-14.4| 箇条書きや番号つきリストを整形するには? -|faq-14.5| インサートモードで行をインデントするには? -|faq-14.6| ファイル全体を整形・インデントするには? -|faq-14.7| 現在のファイルのインデントを増やす/減らすには? -|faq-14.8| ブロックまたは行のグループをインデントするには? -|faq-14.9| >または<キーで行をインデントすると、'tabstop'で設定した値でなく、 - 標準的なタブストップ値の8が使われます。なぜですか? -|faq-14.10| オートインデントを無効にするには? -|faq-14.11| メールを編集するときは自動的に'textwidth'オプションをある値にする - ようにするには? -|faq-14.12| 自動的に改行を挿入させることはできますか? -|faq-14.13| ファイル中に^Mという記号がたくさん表示されます。'fileformat'を - 'dos'にしたり'unix'にしたり'mac'にしたりしてみましたが、改善できま - せん。これらの記号を表示させなくするには? -|faq-14.14| 他のアプリケーションからVimのバッファへテキストを貼り付けたとき、 - 挿入されたテキストの桁(インデント)が狂ってしまいます。 - これを直すには? -|faq-14.15| 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきら - ないとき、まったく何も表示されません。折り返された行の代わりに'@' - という記号で始まる空の行が表示されます。行が収まるように画面をスク - ロールすると'@'は消え、行が表示されるようになります。この挙動の設 - 定はどうやるのですか? -|faq-14.16| ファイル中の全てのタブ文字をスペースに変換するには? -|faq-14.17| 後でワードプロセッサに送るテキストを編集するためのオプションは? - *faq-visual-mode* -SECTION 15 - ビジュアルモード -|faq-15.1| 矩形範囲をコピーするには? -|faq-15.2| ファイルの特定の列を削除・変更するには? -|faq-15.3| ビジュアル選択した行に対してexコマンドを適用するには? -|faq-15.4| 矩形選択した範囲に対してexコマンドを適用するには? -|faq-15.5| ビジュアルモードでファイル全体を選択するには? -|faq-15.6| ビジュアル選択してから>キーを押してインデントすると、選択が解除さ - れます。この範囲に対して操作を続けるため選択したままにするには? - (または)最後に選択された範囲を再選択するには? -|faq-15.7| ビジュアル選択した範囲の先頭/末尾へ移動するには? -|faq-15.8| マウスでテキストを選択してからexコマンドを実行しようと:キーを押す - と選択された範囲が文字:で置換されてしまいます。マウスで選択したと - きもビジュアル選択したときのようにテキストに対してexコマンドを実行 - するには? -|faq-15.9| マウスでテキストを選択するとビジュアルモードでなく選択モードに入っ - てしまいます。なぜですか? -|faq-15.10| 最後にコピー/ペーストされたテキストをビジュアル選択するには? - *faq-command-line-mode* -SECTION 16 - コマンドラインモード -|faq-16.1| コマンドモードまたはexコマンドモードでカレントファイル名を使うには? -|faq-16.2| Vimのコマンドラインで効率的にテキストを編集するには? -|faq-16.3| ViモードからExモードに移行するには? -|faq-16.4| exコマンドの出力をバッファにコピーするには? -|faq-16.5| コマンドモードでファイル名を補完しようとタブキーを押します。マッチ - するファイル名が複数ある時、Vimは最初にマッチするファイル名を補完 - し、マッチしたファイル名全てのリストを表示します。マッチしたファイ - ル名全てを表示するだけで、最初の候補を補完しないようにするには? -|faq-16.6| バッファからコマンドラインにテキストをコピーしたり、コマンドライン - からバッファにテキストをコピーするには? -|faq-16.7| あるコマンドを実行することなくコマンド履歴に入れるには? -|faq-16.8| コマンドラインの高さを上げるには? - *faq-viminfo* -SECTION 17 - VIMINFO -|faq-17.1| Vimを起動したときviminfoファイルに不正な文字があるとエラーメッセー - ジが出ます。このメッセージを出なくさせるには? -|faq-17.2| viminfo機能を無効にするには? -|faq-17.3| Vimのセッションをまたいでマークを保存し、使用するには? - *faq-remote-editing* -SECTION 18 - リモート編集 -|faq-18.1| 既に起動しているgvimでファイルを開くには? Vim 5.xの - OpenWithVim.exeとSendToVim.exeはどうなりました? -|faq-18.2| vimサーバに全てのバッファをディスクに保存するようなコマンドを送る - には? -|faq-18.3| Vimのリモートサーバ機能についてのドキュメントはどこで手に入ります - か? - *faq-options* -SECTION 19 - オプション -|faq-19.1| Vimを設定する簡単な方法は? -|faq-19.2| オプションの値をトグルするには? -|faq-19.3| 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプション - を設定するには? -|faq-19.4| オプションの値にスペースを含めるには? -|faq-19.5| オプション設定をファイルに埋め込むには? -|faq-19.6| ファイル中の全ての行の行番号を表示するには? -|faq-19.7| 'number'オプションで表示される行番号の幅を変えるには? -|faq-19.8| スペース、タブ、改行などの不可視文字を表示するには? -|faq-19.9| 常に現在行と桁番号を表示するようにするには? -|faq-19.10| 現在のモードを表示するようにするには? -|faq-19.11| ステータスラインに入力途中のコマンドを表示するようにするには? -|faq-19.12| ステータスラインに異なる設定・値を表示するようにするには? -|faq-19.13| 常にステータスラインを表示するようにするには? -|faq-19.14| Vimを再起動しても設定が永続するようにするには? -|faq-19.15| なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュす - る)のですか? -|faq-19.16| 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示する - ようにするには? -|faq-19.17| 1回の":set"コマンドでオプションから複数のフラグを除去するには? - *faq-mapping-keys* -SECTION 20 - キーマップ -|faq-20.1| キーがどうマップされているかを知るには? -|faq-20.2| ユーザ定義のキーマッピングをリストするには? -|faq-20.3| キーマップを解除するには? -|faq-20.4| キー<xxx>へマッピングができません。なにがまずいのですか? -|faq-20.5| テンキーにマップするには? -|faq-20.6| ビジュアルモードでのみ機能するマッピングを作成するには? -|faq-20.7| Vimスクリプト中で、すでに使われているキーと衝突しないようにどの - キーを使うべきかを知るには? -|faq-20.8| エスケープキーにマップするには? -|faq-20.9| あるキーをなにもしないようにマップするには? -|faq-20.10| Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブ - ロックをアンインデンとするようにしたいです。このようなマップを作る - には?この挙動はtextpadやVisual Studioなどに似ています。 -|faq-20.11| 私のマッピングにおいて<CR>のような特殊文字が認識されません。 - 特殊文字を認識するように設定するには? -|faq-20.12| マップ中で'|'を使って複数のコマンドを区切るには? -|faq-20.13| その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 - 入力があります。最初のものを入力したとき、2番目のが展開しないよう - にするには? -|faq-20.14| ときどきキーが処理されるのに1秒程度かかるのはなぜですか? -|faq-20.15| ビジュアル選択したテキストに対して外部コマンドを実行するマッピング - を作るには? -|faq-20.16| <Tab>キーの機能を保ったままCtrl-Iにマッピングするには? - *faq-abbreviations* -SECTION 21 - 短縮入力 -|faq-21.1| スペリングを間違えた単語を自動的に修正するには? -|faq-21.2| 複数行の短縮入力を作るには? -|faq-21.3| 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペース - が入ってしまいます。これを防ぐには? -|faq-21.4| 現在の日付・時刻を挿入するには? -|faq-21.5| インサートモードで短縮入力が展開されるのを防ぐには? - *faq-record-and-playback* -SECTION 22 - レコーティングと繰り返し -|faq-22.1| 編集操作(挿入、削除、ペースト等)を繰り返すには? -|faq-22.2| キーシーケンスを記録し、繰り返すには? -|faq-22.3| 記録したキーシーケンスを編集するには? -|faq-22.4| 記録したキーシーケンスをファイルに保存するには? -|faq-22.5| レジスタ0にキーシーケンスを保存しています(つまり q0 .... q)。 - 記録したキーシーケンスの中でテキストをヤンクしています。一度そのキー - シーケンスを再生すると、もうそれを再現することができません。 - *faq-autocommands* -SECTION 23 - 自動コマンド -|faq-23.1| 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? -|faq-23.2| あるバッファに入るときに毎回コマンドを実行するには? -|faq-23.3| あるウィンドウに入るときに毎回コマンドを実行するには? -|faq-23.4| autocmd中でその自動コマンドが実行されているファイルの名前やバッフ - ァ番号を知るには? -|faq-23.5| Vimがフォーカスを失ったとき、変更されたバッファ全てを自動的に保存 - するには? -|faq-23.6| Vimを終了するときにクリーンアップ用の関数を実行するには? - *faq-syntax-highlight* -SECTION 24 - 構文強調 -|faq-24.1| 構文強調をオン・オフにするには? -|faq-24.2| 背景色と文字色を変えるには? -|faq-24.3| 暗い/明るい背景色に合うように色を変えるには? -|faq-24.4| ":set number"をしたときに表示される行番号の色を変えるには? -|faq-24.5| ビジュアルモードで選択された範囲の背景色を変えるには? -|faq-24.6| オプション'list'で表示した特殊文字(タブ、行末の空白、行末など)に色 - をつけるには? -|faq-24.7| 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? -|faq-24.8| 正しく構文強調されません。ファイルの一部が強調されなかったり、間違 - って強調されてしまいます。 -|faq-24.9| 対応する括弧を強調する組み込みの関数はありますか? -|faq-24.10| Cのコメントの構文強調をオフにするには? -|faq-24.11| Vimに付属する標準の構文ファイルに私自身の構文拡張を加えるには? -|faq-24.12| Vimに付属の標準の構文ファイルを独自の構文ファイルで置き換えるには? -|faq-24.13| 特定の桁以降の全ての文字を強調するには? -|faq-24.14| ソースファイル(.c, .hなど)を構文強調つきでHTMLファイルに変換するに - は? -|faq-24.15| 現在の強調グループ定義を全て表示するには? - *faq-vim-script-writing* -SECTION 25 - VIMスクリプトを書く -|faq-25.1| 読み込まれているスクリプトを全て表示するには? -|faq-25.2| Vimスクリプトをデバッグするには? -|faq-25.3| あるオプションを設定したスクリプト/プラグインを探すには? -|faq-25.4| (おそらくスクリプトを実行中に)エラーやメッセージが出るのですが、す - ぐに消えてしまいます。このメッセージをもう一度表示するには? -|faq-25.5| プラグイン固有の情報を保存し、Vimを再起動したときそれを復元するに - は? -|faq-25.6| 関数の中からインサートモードを開始するには? -|faq-25.7| 関数の中でカーソル位置を動かすには? -|faq-25.8| .vimrcファイルの中で環境変数の値をチェックするには? -|faq-25.9| 環境変数が定義されているかどうかをチェックするには? -|faq-25.10| Vimの組み込み関数を呼ぶには? -|faq-25.11| Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対 - してユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマン - ドがVimの標準の機能を果たすようにするには? -|faq-25.12| ビジュアルモードで現在選択されているテキストを変数やレジスタに入れ - るには? -|faq-25.13| 変数'myvar'にテキストが入っています。この変数を":s"中で使って'mytext' - というテキストを置換したいのですが、どうすればいいですか? -|faq-25.14| 変数"bno"がバッファ番号を保持しています。この変数を使って対応する - バッファを開くには? -|faq-25.15| オプションの値を変数に保存するには? -|faq-25.16| 関数の中でテキストをコピーし、バッファに挿入しました。関数の中で - そのテキストをインデントするには? -|faq-25.17| Vimスクリプト中でカーソル下の文字を取得するには? -|faq-25.18| 拡張子を除いたカレントファイル名を取得するには? -|faq-25.19| カレントファイルのベース名(basename)を取得するには? -|faq-25.20| 関数の結果をカレントバッファに挿入するには? -|faq-25.21| 関数の中で外部プログラムを呼ぶには? -|faq-25.22| ":!"で実行したプログラムが返すステータス値を取得するには? -|faq-25.23| カレントバッファが変更されているかどうかを知るには? -|faq-25.24| スクリプト中でノーマルコマンドの中に改行文字を使いたいです。改行文 - 字を指定するには? -|faq-25.25| スクリプト中で長い行を次行に継続するには? -|faq-25.26| "execute 'echo Myfunc()'"として自作の関数を呼ぼうとすると、カーソ - ルがカレントバッファの先頭に移動してしまいます。なぜ? -|faq-25.27| レジスタの中身を実行するには? -|faq-25.28| 関数やマップを呼んだ後に'u'キーを押してアンドゥするとその関数/ - マップによってなされた変更全てをアンドゥします。なぜ? -|faq-25.29| s:つきで定義された関数(スクリプトローカル関数)を別のスクリプト/ - プラグインから呼ぶには? -|faq-25.30| 読み込んだスクリプトをun-sourceするには?言い替えると、スクリプト - を読み込んだことによって実行されたコマンドを全て戻すには? - *faq-plugins* -SECTION 26 - プラグイン -|faq-26.1| ファイル形式ごとに異なるオプションを設定するには? -|faq-26.2| プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイル - タイププラグインをダウンロードしました。Vimがこれらのファイルを読 - み込むようにするには、どこにコピーすればいいですか? -|faq-26.3| 既存のファイル形式別プラグインを拡張するには? -|faq-26.4| プラグインの読み込みをオフにするには? -|faq-26.5| ファイル形式別プラグインの読み込みをオフにするには? -|faq-26.6| 全てのファイル形式に対し、グローバルのファイル形式別プラグインで - なされる設定を上書きするには? -|faq-26.7| Vimのディレクトリブラウザプラグインを無効にするには? -|faq-26.8| 特定のパターンにマッチする名前のファイルや拡張子に応じてファイル - タイプオプションを設定するには? - - *faq-editing-program-files* -SECTION 27 - プログラムファイルを編集する -|faq-27.1| C/C++のファイルに対してオートインデントを有効化するには? -|faq-27.2| C/C++のファイルに対するインデントをカスタマイズするには? -|faq-27.3| オートインデント機能を無効化するには? -|faq-27.4| オートインデントの際に挿入されるスペースの数を変えるには? -|faq-27.5| Cプログラムを編集しています。マクロ定義や変数を表示するには? -|faq-27.6| Cプログラムを編集しています。ブロックの内側から、そのブロックの開 - 始位置や終了位置にジャンプするには? -|faq-27.7| C++ファイルで"//"コメントが自動的に挿入されるのを止めさせるには? -|faq-27.8| 一連の行の行頭にコメント文字'#'をつけ加えるには? -|faq-27.9| Cのソースファイルに対応する名前のヘッダファイルを開くには? -|faq-27.10| コメントを入力しているとき、自動的にコメント文字を挿入するには? - *faq-quickfix* -SECTION 28 - QuickFix -|faq-28.1| Vimの中からプログラムをビルドするには? -|faq-28.2| Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパ - イルしてエラーメッセージを出力します。しかしコンパイルが終わると表 - 示が消えてしまい、エラーメッセージをもう一度見るには:clistとしなけ - ればなりません。このエラーメッセージを見るのに他の方法はありません - か? - *faq-folding* -SECTION 29 - 折り畳み -|faq-29.1| 折り畳みの機能を拡張するには? -|faq-29.2| 'foldmethod'をセットして折り畳みを有効化すると、全ての折り畳みが閉 - じてしまいます。これを防ぐには? -|faq-29.3| ファイルの編集を開始したときにいくつの折り畳みが開かれた状態にする - かをコントロールするには? -|faq-29.4| マウスを使って折り畳みを開閉するには? -|faq-29.5| 閉じた折り畳みの表示に使われるテキストを変更するには? -|faq-29.6| Vimを終了・再起動するとき、手動で作った折り畳みを保存・復元するに - は? - *faq-vim-with-external-applications* -SECTION 30 - 外部プログラムとの連携 -|faq-30.1| Vimのウィンドウの中でシェルを起動することはできますか? -|faq-30.2| カーソル下の単語を外部プログラムに渡すには? -|faq-30.3| シェルコマンドの出力をVimのバッファに取り込むには? -|faq-30.4| カレントバッファの中身を外部プログラムにパイプで渡して、そのプログ - ラムの出力でバッファを置き換えるには? -|faq-30.5| ファイル中のあるセクションをソートするには? -|faq-30.6| Vimとslrnといっしょに使うステップ・バイ・ステップガイドはあります - か? -|faq-30.7| Vimをページャとして使うには? -|faq-30.8| Vimの中でUnixのmanページを見るには? -|faq-30.9| Vimのdiff機能で使われるdiffコマンドを変更するには? -|faq-30.10| 折り畳みなしでdiffモードを使うには? - *faq-gui-vim* -SECTION 31 - GUIのVIM -|faq-31.1| バッファ固有のメニューを作るには? -|faq-31.2| GUIのVimで使われるフォントを変更するには? -|faq-31.3| GUIのVimが起動したときのウィンドウの位置を指定するには? -|faq-31.4| GVimに水平スクロールバーをつけるには? -|faq-31.5| スクロールバーをデフォルトで左側に表示するようにするには? -|faq-31.6| メニューバーを消すには? -|faq-31.7| GVimを使っています。ALTキーと文字キーを押すとその文字で始まるメニ - ューが選択されます。ALT-<key>の組合せを使いたいので、この挙動はや - めてほしいです。どうすればいいですか? -|faq-31.8| スクロールバーをドラッグしたとき、カーソル位置を動かさずにテキスト - をスクロールさせることは可能ですか? -|faq-31.9| ":browse"を使ったときに特定のディレクトリから始めるようにするには? -|faq-31.10| ファイルがVimの外部で変更されたときなど、問い合わせがあるとき、GUI - のダイアログボックスが表示されます。コンソールのダイアログボック - スが出るようにするには? -|faq-31.11| GVimをアプリケーションxxx用のエディタとして使っています。アプリケ - ーションxxxがGVimを起動すると、コントロールがすぐにアプリケーショ - ンxxxに戻ってしまいます。Vimを終了したとき初めてアプリケーション - xxxにコントロールが戻るようにGVimを起動するには? -|faq-31.12| なぜ、システムにインストールされているフォント全てが「フォントを - 選ぶ」ダイアログに現れないのですか? -|faq-31.13| コマンドラインモードでマウスを使うには? -|faq-31.14| テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコピ - ーしたテキストがペーストされてしまいます。この挙動を無効にするには? -|faq-31.15| GVimウィンドウの位置とサイズを変更するには? - *faq-vim-on-unix* -SECTION 32 - UNIX上のVim -|faq-32.1| xtermでVimを実行しています。CTRL-Sを押すとVimがフリーズします。 - どうすればいいですか? -|faq-32.2| 画面の更新について奇妙な問題があります。これを解決するには? -|faq-32.3| Vimのターミナル/コンソール版を使っています。インサートモードでバッ - クスペースキーを押してもカーソルの前の文字が消えません。どう設定す - れば良いですか? -|faq-32.4| xtermでVimを使っています。Vimを終了すると画面が元の状態に復元され - ます。これを無効化するには? -|faq-32.5| Vimの起動にかなり時間がかかります。起動時間を最小化するには? -|faq-32.6| Unixのgvimでカーソルの点滅を止めるには? -|faq-32.7| GTK Vimのメニューのフォントを変えるには? -|faq-32.8| Vimが<Ctrl-Z>でサスペンドするのを防ぐには? -|faq-32.9| Vimを実行しているxtermをkillすると、Vimのプロセスが生き残り、多大 - なCPU時間(99%)を食ってしまいます。なぜこうなるのですか? -|faq-32.10| Unixターミナルで構文強調を使うには? - *faq-vim-on-ms-windows* -SECTION 33 - MS-Windows上のVim -|faq-33.1| MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。 - どうなっているのですか? -|faq-33.2| CTRL-Yキーを押すとCTRL-Rのような動作をします。CTRL-YをCTRL-Yとして - 扱うように設定するには? -|faq-33.3| 常にGVimのウィンドウを最大化して起動するには? -|faq-33.4| なんらかの編集操作をするとVimがフリーズします。カーソルは空の四角 - 形になります。全然文字が入力できません。どうなっているのですか? -|faq-33.5| Windows XPを使っています。最大化したGVimの表示速度がとても遅いで - す。表示の更新を早くするには? -|faq-33.6| VimをCygwin上で使うにあたって推奨される設定は? -|faq-33.7| diffモードでGNU diffを使おうとしています。コマンドラインからdiffを - 使うとうまく動くのですが、Vim内で使おうとすると動きません。どうす - れば? -|faq-33.8| Outlookで外部エディタにVimを使うことはできますか? -|faq-33.9| HTMLファイルを編集するのにVimを使っています。現在開いているHTML - ファイルをインターネットエクスプローラでプレビューするには? -|faq-33.10| VimをMicrosoft Visual Studioといっしょに使いたいです。どうすれば? -|faq-33.11| どこに_vimrcと_gvimrcを置けばいいですか? -|faq-33.12| ファイルを保存する度に、そのファイルがVimの外部で変更されていると - 警告が出ます。なぜですか? - *faq-printing* -SECTION 34 - 印刷 -|faq-34.1| 全ての行に行番号をつけて印刷するには? -|faq-34.2| 構文強調の色をつけてファイルを印刷するには? - *faq-building-vim-from-source* -SECTION 35 - Vimをソースからビルドする -|faq-35.1| Unixシステム上でVimをソースからビルドするには? -|faq-35.2| Unixでホームディレクトリなど、デフォルトのディレクトリ以外にVimを - インストールするには? -|faq-35.3| MS-Windowsシステム上でVimをソースからビルドするには? -|faq-35.4| 私がインストールしたVimにはヘルプ、構文ファイル、インデントファイ - ルが欠けています。それらのファイルをインストールするには? -|faq-35.5| Vimをソースからビルドして"make install"でインストールしました。Vim - のソースディレクトリを残しておく必要はありますか? -|faq-35.6| ある機能がコンパイル時に有効化されているかどうかを知るには? -|faq-35.7| GUI機能なしでVimをビルドすることはできますか? -|faq-35.8| Unixシステム上でVimをビルドするとき、"undefined reference to - term_set_winsize"というエラーが出ます。これを解決するには? -|faq-35.9| GTK 2.03を使おうとしているのですが、Vimのconfigureがgtk-configがな - いとのメッセージを出します。しかしGTK2は一般的なpkg-configを使うよ - うになったので、これは正しいのです。gtk用のインクルードファイルと - ライブラリのリストを出力するpkg-configならありますが、なぜかconfi - gureスクリプトはこれを使ってくれません。 - *faq-various* -SECTION 36 - 様々な事柄 -|faq-36.1| Vimでバイナリフィルを編集するには? -|faq-36.2| ビジュアルエラーフラッシュとエラービープを無効にするには? -|faq-36.3| バッファに表示されている文字のアスキーコードを表示するには? -|faq-36.4| コマンドのカウントとして0を使うことはできますか? -|faq-36.5| Vimの起動時の画面を表示させなくするには? -|faq-36.6| "hit enter to continue"プロンプトを避けるには? -|faq-36.7| コマンドラインからVimを起動して一連のファイルに対して一連のコマン - ドを実行するには? -|faq-36.8| インサートモードから抜けることなくノーマルモードコマンドを実行する - には? - *faq-unicode* -SECTION 37 - ユニコード -|faq-37.1| Vimでユニコードのファイルを作ることはできますか? -|faq-37.2| ユニコードのファイルを編集するにあたって特に重要な設定は? -|faq-37.3| オプション'encoding'とは何ですか? -|faq-37.4| Vimでは様々なユニコードエンコーディングをどう表記しますか? -|faq-37.5| バイト順マークの有無を指定するには? -|faq-37.6| オプション'fileencoding'とは何ですか? -|faq-37.7| オプション'fileencodings'とは何ですか? -|faq-37.8| オプション'termencoding'とは何ですか? -|faq-37.9| オプション'bomb'とは何ですか? -|faq-37.10| これらのオプションの典型的な例はどこにありますか? -|faq-37.11| ユニコードの文字を挿入するには? -|faq-37.12| どのダイグラフがどの文字に定義されているかを知るには? - -============================================================================= - *faq-1* -SECTION 1 - 一般的な情報 - - *faq-1.1* -1.1. Vimとは何ですか? - -Vim とは Vi IMproved を表します。かつては Vi IMitation の略でしたが、あまりに -多くの改良があったため名前の変更は適切なものでした。Vim は、Unix プログラムの -"Vi" のほとんど全てのコマンドや、多くの新しいコマンドを含んだテキスト・エディ -タです。全てのコマンドはキーボードで与えることができます。これには、指はキー -ボードに置いたまま、目はスクリーンに向けておけるという利点があります。望む人に -は、マウス・サポートや、スクロールバーとメニューのついた GUI 版もあります。 - -Vim はエディタであって、ワード・プロセッサではありません。ワード・プロセッサは -主にテキストのレイアウトを行うのに使われます。つまり、位置決めや、表示時の見え -方を変えたり、ということです。たいてい最終的なドキュメントは他の人に満足いくよ -うに見せるため、印刷したり活字に組んだりなどするよう意図されます。ワード・プロ -セッサの例は、Microsoft Word、WordPerfect、FrameMaker、AmiPro です。 - -エディタは単純にテキストを入力するためのものです。ドキュメントの植字やレイアウ -トは二次的なものです。エディタにおいて、主な関心事はテキスト入力であり、テキス -トを良く見せることではありません。Vim や Vi 以外のエディタの例は、Emacs、 -Crisp、Brief、xedit です。そして Notepad も。 - -さらなる情報については以下を参照してください。 > - - :help intro -< - *faq-1.2* -1.2. 誰が Vim を書いたんですか? - -Vim のほとんどは Bram Moolenar によって書かれましたが、他に貢献した人々の名前 -はここでは多すぎて触れられません。完全なリストは ":h credits" を見てください。 - -Vim は、Tim Thompson、Tony Andrews、G.R. (Fred) Walter らによって開発された -Stevie に基づいています。 - -さらなる情報については以下を参照してください。 > - - :help author -< - *faq-1.3* -1.3. Vim は Vi と互換性がありますか? - -非常に。コマンドラインフラグ"-C"を使えばVimをVi互換モードで起動することが -できます: > - - $ vim -C -< -また、 > - - $ vim -u NONE -< -ともできます。'compatible'オプションをセットすればViとの互換を有効化できます: > - - :set compatible -< -さらなる情報については以下を参照してください。 > - - :help -C - :help 'compatible' - :help compatible-default -< - *faq-1.4* -1.4. Vim が Vi よりも向上している点は何ですか? - -ここにあるのは短い要約です。以下のリストは Vim が徹底して現代的で、機能がぎゅ -っと詰め込まれたエディタであることを示すものです。今日のエディタの標準的な機能 -は実装されており、一般的なパワーユーザーやプログラマ向けの機能にも重点が置かれ -ています。 - -Vi を現代化する機能: - - 多段階アンドゥ - ファイル・バッファにおける変更を元に戻す回数を設定することができます。ア - ンドゥされた変更をリドゥすることもできます。 - 複数ウィンドウとバッファ - それぞれのファイルはそれ自身のウィンドウに表示することができます。一つの - ウィンドウから別のウィンドウへ簡単に移動することができます。それぞれの開 - かれたファイルは Vim のセッション中関連付けられたバッファを保有し、バッ - ファ間を簡単に移動することができます。 - 柔軟なインサート・モード - Vim ではインサート・モードにある間矢印キーでファイル内を移動することがで - きます。<Esc> を押し、移動して、`i' や `a' を押す、といったことはしなくて - 済みます。 - マクロ - Vim には、連続してタイプされた文字を記録し、後で何度でも繰り返すことので - きる機能があります。 - ビジュアル・モード - テキストの一部分をハイライトさせ、その部分にだけ操作を実行することができ - ます。 - ブロック・オペレーター - テキストを長方形のブロック状に選択、ハイライトさせ、その部分に対し特定の - 操作を行うことができます。 - オンライン・ヘルプシステム - どんな Vim 使用の局面であれ、容易に答えを探すことができます。ヘルプはそれ - 自身のウィンドウに表示されます。 - コマンドライン編集と履歴 - 履歴を利用すると、矢印キーで既にタイプされたコマンドを繰り返したり探した - りできます。コマンドの先頭を、履歴バッファにある別の似たコマンドの先頭に - マッチさせることができます。コマンドを編集してタイプミスを訂正したり、い - くつか値を変更することも出来ます。 - コマンドライン補完 - <Tab> キーを使うと、コマンドやオプション、ファイル名などを必要に応じて補 - うことができます。 - 水平スクロール - 長い行は水平にスクロールできます(GUI の有る、無しにかかわらず)。 - -先進的なユーザー機能: - - テキスト整形 - 2 キーストロークで、外部プログラムを使わずに長いテキストを整形できます。 - インサート・モードでの単語補完 - Vim は、現在の単語とファイル内の似た単語とをマッチすることにより、タイピ - ング中に単語補完を行うことができます。 - タグ・ジャンプ - ウェブ・ブラウザーと同じように、以前編集していた箇所に戻ったり、また元に - 復帰することができます。なので、あなたの頭脳は自由にナビゲート、ではなく - 編集をすることができます。 - 自動コマンド - ファイルを読み書きする時や、他のバッファに移動する時などに自動的に実行さ - れるコマンドです。 - Viminfo - 起動時に読み込まれるコマンドライン履歴やファイル内のマーク、レジスターを - 記憶しておくことができます。したがって、以前の検索パターンや、マクロなど - を、新しい Vim セッションで呼び出すことができます。 - マウス・サポート - マウスは xterm や MS-DOS でサポートされています。カーソル位置を設定した - り、ビジュアル領域を選択したり、レジスターを貼り付けたり、等のことができ - ます。 - グラフィカル・ユーザー・インターフェース(GUI) - 他の昨今のエディタと同様です。その上、独自のメニューを追加することも非常 - に簡単です。もちろん、コンソール版の Vim も今なおサポートされており、幅広 - く利用されています。 - スクリプト言語 - Vim は強力なスクリプト言語を備えており、新しいコマンドを作ることができま - す。また、同じことをするのに Perl、Python、TCL、それに Ruby を使うことも - できます。 - プラグイン - Vim コマンドによって実装された拡張機能で、起動時に自動的にロードされます。 - 例:ファイル・エクスプローラー、ネットワーク編集。更に多くのものが - VimOnline にて常に開発、共有されています。 - 多数のプログラミング言語に対応した構文強調 - 数百ものプログラミング言語に対応した構文強調があります。他の言語への対応 - を追加することができます。 - 拡張正規表現 - 機能性がPerlの正規表現に似ている拡張正規表現をサポートしています。 - -プログラミング効率に関する機能: - - 編集―コンパイル―編集のスピードアップ - Vim 内部からコンパイルを行い、自動的にソース・コードのエラーの箇所にジャ - ンプすることができます。 - 多数のプログラミング言語の字下げ - C、C++、Java、Perl、XML その他多くの言語で、タイプ中に自動的に字下げが行 - われます。他の言語へのサポートも追加可能です。 - インクルードファイル内の単語を検索 - カーソルの下の単語とのマッチを、現在のファイルとインクルードされるファイ - ル内で検索することができます。 - 先進的なテキスト・オブジェクト - ( と ) や、{ と } や、< と > 、また [ と ] の間の全てのテキストに対して、 - また単語、文、段落に対して、一瞬で選択したり、削除やコピーをしたり、字下 - げ、整形、大文字小文字の変換、等々を行うことができます。非常に強力です。 - フォールディング - テキストのある部分を「フォールド」(折り畳み)してしまうことができます。 - 最も良い例は関数の中身の部分です。コードの概観を見渡して、それから詳細を - 見たい関数のフォールドを開くことができます。 - ctags と cscope との統合 - これらの強力なプログラムを使うと、関数の呼び出し部分からその定義部分へジ - ャンプしたり、他の技術を使ってソース・コードを行き来することができます。 - -さらなる情報については以下を参照してください。 > - - :help vi-differences -< - *faq-1.5* -1.5. Vim は無料ですか? - -Vim はチャリティーウェアです。Vim の使用や複製に関しては何ら制限はありませんが、 -著者は慈善事業に寄付をするよう奨励しています。その方法を説明するドキュメントが -ディストリビューションの中に含まれています。 -さらなる情報については以下を参照してください。 > - - :help copyright -< - -============================================================================= - *faq-2* -SECTION 2 - 情報源 - - *faq-2.1* -2.1. どこに行けば Vim についてもっと学べるでしょうか?Vimの質問はvim@vim.orgメー -リングリストに投稿できます。Vimの開発に関する質問はvim-dev@vim.orgメーリングリ -ストに投稿できます。Vim にはそれ自身のためのニュースグループがありません。しか -し comp.editors は投稿するのに適しています。 - -"VimOnline" は vim のデファクト・ホームページの役割を果たしているウェブ・ペー -ジですが、その主な目的はチップやスクリプトをいたる所から集積することにあります。 -ぜひ参加してください。URL は vim.sourceforge.net または vim.sf.net です。 - -最後に、Vi FAQ を読んでください: > - - http://www.faqs.org/faqs/editor-faq/vi/part1/index.html -< -この FAQ の第 5 節に、こちらの FAQ についてのより詳しい情報があります。 > - - :help mail-list - :help internet -< - *faq-2.2* -2.2. メーリング・リストはありますか? - -いくつか存在します: > - - 名前 説明 -< - vim-announce 新しいリリースの発表 - vim 一般的な議論 - vim-dev パッチ、バグ報告、開発議論 - vim-mac マッキントッシュに関する議論 - vim-fr フランス語による一般的な議論 - vim-multibyte マルチバイト関連の開発の問題 - vim-vms VMS上での開発について - -これらのうち、vim と vim-dev だけが一般的な興味を引くものです。vim-announce は -ほとんどの人にとってはリード・オンリーですし、そのメッセージは他のリストにも送 -信されます。他の 4 つは非常に通信量が少ないです。 - -購読するには: <NAME>-subscribe@vim.org にメールを送ってください。 -購読を中止するには: <NAME>-unsubscribe@vim.org にメールを送ってください。 -ヘルプを得るには: <NAME>-help@vim.org にメールを送ってください。 - - *faq-2.3* -2.3. メーリング・リストのアーカイブはありますか? - -あります。http://www.yahoogroups.com/list/<名前> を訪ねてみてください。<名前> -の所には次の: - vimannounce, vim, vimdev, vim-fr, vim-mac, vim-multibyte, vim-vms -のどれかが入ります。 - -もしくは、www.gmane.org に行って GMANE について調べてみてください。これはメー -リング・リストに、あたかもニュースグループのような感覚でアクセスすることができ -るものです。履歴をざっと眺めたり、現在のスレッドを気軽に見ることができて便利で -す。 - -2.4. HTML/PDF/PS形式のVimユーザーマニュアルはどこで手に入りますか? - -HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロードできます。 > - - http://vimdoc.sourceforge.net/ -< -2.5. ある問題が発生しました。それが私の設定によるものか、Vimそのものの - 問題かはどうすればわかりますか? - -まず、その問題があなたの.vimrcや.gvimrc、システムのvimrc、あなたのプラグインフ -ァイル、その他あなたの設定ファイルによるものかを調べなければなりません。そのた -めに > - - $ vim -N -u NONE -U NONE -< -としてください。これはVimを'nocompatible'モードで起動し、あなたの個人的な -.vimrcや.gvimrcファイルを読み込みません。あなたの個人的なプラグインも読み込み -ません。これでVimを起動し、問題の再現を試みてください。もしこれで問題が再現で -きなければ、その問題はあなたの設定ファイルやプラグイン中の設定に関係しています -。設定ファイル中の問題の場所をつきとめるには、試行錯誤と設定ファイル中の1行1 -行をコメントアウトしてみなければなりません。Vimにコマンドライン引数-Vをつけて -起動するとデバッグ情報が得られ、問題を分析することができます: > - - $ vim -V2 -< --V引数に渡す値を増やせば、さらに詳しいデバッグ情報が得られます。 - -さらなる情報については以下を参照してください。 > - - :help -u - :help -U - :help -N - :help -V - :help 'verbose' - :help :verbose - :help set-verbose -< - *faq-2.6* -2.6. どこでバグ報告をすればいいですか? - -最初に次のコマンドを使って必要な情報を集めてください: > - - :source $VIMRUNTIME/bugreport.vim -< -そして上のコマンドで得られたテキストをbugs@vim.orgメールアドレスに送ってくださ -い。 - -Vim 開発のメーリング・リスト(上を見てください)は通常のバグについて議論するの -にふさわしい場所です。あなたの見つけたバグがシンタックス・ハイライティングやそ -の他の「付加的な機能」(つまり、直接 vim にプログラムされていないもの)に関す -るものであれば、その機能のメンテナに報告してみてください。 - -さらなる情報については以下を参照してください。 > - - :help bug-reports -< - *faq-2.7* -2.7. FAQ はどこで見つけられますか? - -VimOnline (vim.sf.net) で手に入ります。将来的には他の場所も加えられるでしょう。 - - *faq-2.8* -2.8. この FAQ に答えが見つからなかった時、どうすればいいですか? - -この FAQ は主に Vim に特有の質問を扱います。ほとんどの Vi クローン向きの情報に -ついては Vi FAQ を読めば見つかるでしょう。これは comp.editors で定期的に投稿さ -れています。下記の場所にもそのコピーがあります。 > - - http://www.faqs.org/faqs/editor-faq/vi/part1/index.html -< -また、Vim は過去数年間で非常に多くの機能を集積してきたため、よくある質問をここ -で申し分なく記述することは不可能に近い作業です。これを可能にするために、もし良 -い質問をお持ちならメンテナにメールで知らせてください。良い質問とは、自分で答え -を出そうとして(Vim は素晴らしいドキュメントを備えていることを思い出してくださ -い)非常に苦労した質問のことです。 - - *faq-2.9* -2.9. Vimに機能を追加するパッチを持っています。これをどこへ送ればいいですか? - -Vim開発者メーリングリストvim-dev@vim.orgにパッチを送ってください。 - -さらなる情報については以下を参照してください。 > - - :help vim-dev -< - -2.10. Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグインを - 開発したり、新しいスクリプトやカラースキームを開発しました。これをアップ - ロードできる公開のウェブサイトはありますか? - -あります。Vim Onlineウェブサイトにプラグイン・スクリプト、カラースキーム、ティ -ップスなどをアップロードすることができます。そのサイトは -http://vim.sourceforge.netにあります。 - -============================================================================= - *faq-3* -SECTION 3 - 入手 - - *faq-3.1* -3.1. Vim の最新のバージョンは何ですか? - -The latest version of Vim is 6.3 released on 8th June 2004. -Vim の最新バージョンは2004年6月 - -Vimのリリース履歴は以下の通りです: - -Version 6.3 8th June 2004 -Version 6.2 1st June 2003 -Version 6.1 24th March 2002 -Version 6.0 27th September, 2001 -Version 5.8 31st May, 2001 -Version 5.7 24th June, 2000 -Version 5.6 16th January, 2000 -Version 5.5 21st September, 1999 -Version 5.4 26th July, 1999 -Version 5.3 31st August, 1998 -Version 5.2 24th August, 1998 -Version 5.1 7th April, 1998 -Version 5.0 19th February, 1998 -Version 4.6 13th March,1997 -Version 4.5 17th October, 1996 -Version 4.2 5th July,1996 -Version 4.0 21st May, 1996 -Version 3.0 16th August, 1994 -Version 2.0 21st December, 1993 -Version 1.27 23rd April, 1993 -Version 1.17 21st April, 1992 - - *faq-3.2* -3.2. どこで Vim の最新版を見つけられますか? - -VimOnlineからVimの最新バージョンのソースがダウンロードできます。URLは -http://vim.sourceforge.net/download.php -です。 - - -3.3. どのプラットフォーム上で実行できるんですか? - -全ての Unix プラットフォーム。 -全ての Windows プラットフォーム。 -Amiga、Atari、BeOS、DOS、Macintosh、MachTen、OS/2、RiscOS、VMS です。 - - -3.4. どこでVimのランタイムファイルの最新バージョンをダウンロードできますか? - -Vimランタイムファイル(構文ファイル、ファイル形式別プラグイン、コンパイラプラ -グイン、カラースキーム、ドキュメント、インデントファイル、キーマップ)はVim -ftpサイトのftp://ftp.vim.org/pub/vim/runtimeディレクトリでダウンロードできます -。 - -============================================================================= - *faq-4* -SECTION 4 - ヘルプ - - -4.1. どうやってヘルプ・ファイルを利用するんですか? - -Vim の全ての機能にヘルプがあります。それを利用するには、":h" を使ってください。 -そうするとメインのヘルプ・ページを見ることができます。この最初のページで、どう -やって動き回るかの説明があると思います。基本的にはリード・オンリーのドキュメン -ト内を動き回るのと同じ仕方でヘルプ内を移動します。特定のテーマへジャンプするに -はタグを使うことができます。これは二通りの方法で行えます: - - * コマンドやオプションの上で "<Ctrl-]>" コマンドを使う。これはタグがキー - ワードである場合にのみ有効です。"<Ctrl-LeftMouse>" や "g<LeftMouse>" も - "<Ctrl-]>" と同じように機能します。 - * ":ta subject" コマンドを使う。これはどんな文字であっても利用できます。 - -以前のヘルプ・ファイルの場所へ戻るには "<Ctrl-T>" を使ってください。ヘルプを閉 -じるには ":q" を使ってください。 - -ヘルプ・ページのある特定のテーマへジャンプしたければ ":h {subject}" を使ってく -ださい。何を探せば良いか分からなければ、 ":h index" で全ての利用可能なテーマの -一覧を得ることができます。標準の検索語を使って欲しい情報を見つけてください。 -":help"コマンドは":h"と短縮することができます。 - -さらなる情報については以下を参照してください。 > - - :help online-help -< - -4.2. どうやってVimヘルプファイル中のキーワードを探すんですか? - -ヘルプキーワードをタイプした後にCTRL-Dを押すとそのパターンを含む全てのヘルプキー -ワードのリストが得られます。*, \+などのメタ文字を使ってヘルプの検索パターンを指 -定することもできます: > - - :help init<C-D> - :help str*()<C-D> - :help '*indent<C-D> -< -ヘルプキーワードの一部をタイプした後にTabキーを押すと、マッチするキーワードに -展開することができます。Tabキーを押しつづけると他のマッチするキーワードに変わっ -ていきます。 - -へルプウィンドウでは":tag"コマンドを使ってキーワードを検索することができます。 -例えば、 > - - :tselect /window -< -このコマンドはテキスト"window"を含むヘルプキーワード全てをリスト表示します。そ -のリストの中から1つを選んでそこへジャンプすることができます。 - -":helpgrep"コマンドを使って全てのヘルプファイル中から与えられたテキストを検索 -することができます。QuickFixウィンドウが開き、全てのマッチする行が表示されます -。 - -さらなる情報については以下を参照してください。 > - - :help c_CTRL-D - :help c_<Tab> - :help :tselect - :help :help - :help :helpgrep -< - *faq-4.3* -4.3. エラーメッセージE123が出ました。なにがまずいのでしょうか? - -以下を行うと、エラーとエラーメッセージについてより詳しい情報が得られます: > - - :help E123 -< -さらなる情報については以下を参照してください。 > - - :help error-messages -< - *faq-4.4* -4.4. Vimの様々なモードについては何を読めばいいですか? - -Vimにおけるモードの違いについては、以下を読めば情報を得られます。 > - - :help vim-modes -< - *faq-4.5* -4.5. 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファイルを - 生成することができますか? - -":helptags"コマンドを使えばVimのヘルプタグファイルを再生成することができます。 -例えば: > - - :cd $VIMRUNTIME/doc - :helptags . -< -さらなる情報については以下を参照してください。 > - - :help :helptags - :help add-local-help -< - *faq-4.6* -4.6. 圧縮したヘルプ・ファイルを使うことはできますか? - -できます。ヘルプファイルを圧縮し、それをVimで表示することもできます。これを行 -うとヘルプファイルにアクセスするのが少し遅くなり、"gzip"ユーティリティが必要に -なります。圧縮したVimヘルプファイルを使うには、以下のステップを行ってください -。 - -- "gzip doc/*.txt"として全てのヘルプファイルを圧縮する。 - -- "doc/tags"ファイルを編集し、以下のコマンドを実行して".txt"を".txt.gz"に変更 - する。 - :%s=\(\t.*\.txt\)\t=\1.gz\t= - -- 次の行をあなたのvimrcに追加する: - set helpfile={dirname}/help.txt.gz - -{dirname}はヘルプファイルがあるディレクトリです。標準Vimディストリビューション -に同梱のgzip.vimプラグインがファイルの展開をしてくれます。他のVimファイルが圧 -縮された"doc"ディレクトリと別な場所にある場合は、$VIMRUNTIMEが他のVimファイル -のある場所に設定されていなければなりません。 - -さらなる情報については以下を参照してください。 > - - :help gzip-helpfile - :help 'helpfile' - :help gzip - :help $VIMRUNTIME -< - -============================================================================= - *faq-5* -SECTION 5 - ファイルの編集 - - *faq-5.1* -5.1. ファイルを編集用に読み込むには? - -ファイルを編集用に読み込むにはいくつかの方法があります。もっとも単純な方法は -":e" (:edit)コマンドを使うことです: > - - :e <filename> -< -":n" (:next)コマンドを使ってファイルをVimに読み込ませることもできます。 : > - - :n <filename(s)> -< -":args"コマンドを使ってファイルをVimに読み込ませることもできます。 : > - - :args <filename(s)> -< -さらなる情報については以下を参照してください。 > - - :help usr_07 - :help edit-files - :help :edit - :help :next_f - :help :args_f -< - *faq-5.2* -5.2. 現在のファイルを別な名前で保存(save as)して新しいファイルを編集するには? - -":saveas"コマンドを使えば現在のファイルを別な名前で保存することができます。 : -> - - :saveas <newfilename> -< -別な方法としては、以下のコマンドを使うこともできます: > - - :w <newfilename> - :edit # -< -":file"コマンドと":w"コマンドを使うこともできます: > - - :file <newfilename> - :w -< -さらなる情報については以下を参照してください。 > - - :help 07.7 - :help :saveas - :help :file_f - :help :w -< - *faq-5.3* -5.3. カレントディレクトリを現在のファイルのディレクトリにするには? - -次のコマンドでカレントディレクトリを現在のファイルのディレクトリにできます: -> - - :cd %:p:h -< -自動的にカレントディレクトリを現在のファイルのディレクトリにするには、次の -autocmdを使います: > - - :autocmd BufEnter * cd %:p:h -< -さらなる情報については以下を参照してください。 > - - :help :cd - :help :lcd - :help filename-modifiers - :help autocommand -< - *faq-5.4* -5.4. ファイルの末尾に改行文字(EOL)をつけずにファイルを書き込むには? - -'eol'オプションをオフにして'binary'オプションをオンにすればファイルの末尾に -EOLをつけずにファイルを書き込むことができます: > - - :set binary - :set noeol - :w -< -さらなる情報については以下を参照してください。 > - - :help 'endofline' - :help 'binary' - :help 23.4 -< - *faq-5.5* -5.5. ファイルを最後に編集した場所から開くようにするには? - -Vimは各バッファに対して最後に編集した場所のカーソル位置を'"'レジスタに保存します。 -次のautocmdを.vimrcまたは.gvimrcに書けば、ファイルを最後に編集した場所から開く -ようにできます: > - - au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | - \ exe "normal g'\"" | endif -< -さらなる情報については以下を参照してください。 > - - :help '" - :help last-position-jump -< - *faq-5.6* -5.6. Vimでファイルを編集中にそのファイルが他のアプリケーションによって変更され - たとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイアログのような) - を開きます。この警告を無効にするには? - -'autoread'オプションをセットすると、Vimの外部でファイルが変更されたとき、自動的に -読み直すようにできます: > - - :set autoread -< -次のautocommandを使うこともできます: > - - autocmd FileChangedShell * - \ echohl WarningMsg | - \ echo "File has been changed outside of vim." | - \ echohl None -< -さらなる情報については以下を参照してください。 > - - :help 'autoread' - :help FileChangedShell - :help timestamp - :help :checktime -< - *faq-5.7* -5.7. カーソル下のファイル名のファイルを開くには? - -gfコマンドでカーソル下のファイル名のファイルを開くことができます。CTRL-W fコマ -ンドでそのファイルを新しいウィンドウで開くことができます。 - -さらなる情報については以下を参照してください。 > - - :help gf - :help CTRL-W_f - :help 'isfname' - :help 'path' - :help 'suffixesadd' - :help 'includeexpr' -< - *faq-5.8* -5.8. 現在のファイルを再読み込みするには? - -"ファイル名を指定せずに:edit"コマンドを行えば、現在のファイルを再読み込みする -ことができます。ファイルに変更をしてある場合は、":edit!"とすれば強制的に現在の -ファイルを再読み込みすることができます(変更は失われます)。 - -さらなる情報については以下を参照してください。 > - - :help :edit - :help :edit! - :help 'confirm' -< - *faq-5.9* -5.9. ファイルを定期的に自動保存するには? - -Vimにはファイルを定期的に自動保存する機能はありません。 - -さらなる情報については以下を参照してください。 > - - :help 'updatetime' - :help CursorHold - :help swap-file -< - *faq-5.10* -5.10 ファイルを読み取り専用モードで開くには? - -ファイルを読み取り専用モードで開くには":view"コマンドを使います: > - - :view <filename> -< -このコマンドは開いたバッファに'readonly'オプションをセットします。また、コマン -ドラインオプション"-R"をつければファイルを読み取り専用モードで開くことができま -す: > - - $ vim -R <filename> -< -また、コマンドラインからシンボリックリンク実行ファイル"view"を使ってもファイル -を読み取り専用モードで開くことができます: > - - $ view <filename> -< -さらなる情報については以下を参照してください。 > - - :help 07.6 - :help 'readonly' - :help 'modifiable' - :help :view - :help :sview - :help view - :help -R - :help -M -< - -============================================================================= - *faq-6* -SECTION 6 - 複数のファイルを編集する - - *faq-6.1* -6.1. Vim内で同時に複数のファイルを開くには? - -Vim内で同時に複数のファイルを開くにはいくつかの方法があります。":next"コマンド -を使うとファイルのグループを指定することができます: > - - :next f1.txt f2.txt - :next *.c -< -:argsコマンドを使うとファイルのグループを引数に指定することができます: > - - :args f1.txt f2.txt - :args *.c -< -ファイルを読み込んだら、":next"と":prev"コマンドでファイルを切り替えることがで -きます。 - -さらなる情報については以下を参照してください。 > - - :help 07.2 - :help :next - :help :args_f - :help argument-list -< - *faq-6.2* -6.2. 複数のファイル・バッファを切り替えるには? - -複数のファイルを切り替えるにはいくつかの方法があります。":buffer"コマンドを使 -うと複数のファイルを切り替えることができます。例えば、 > - - :buffer file1 - :buffer file2 -< -CTRL-^を使ってバッファを切り替えることもできます。キーの前にカウントを指定する -とその番号のバッファを編集することができます。カウントを指定しないでCTRL-^を押 -すと代替バッファを編集します。 - -":e #"コマンドでも特定のバッファを編集することができます: > - - :e #5 -< -さらなる情報については以下を参照してください。 > - - :help edit-files - :help :buffer - :help CTRL-^ - :help alternate-file - :help 22.4 - :help 07.3 -< - *faq-6.3* -6.3. それぞれのファイルを別ウィンドウで開くには? - -コマンドライン引数-oと-Oを指定すると複数のファイルを水平または垂直に分割したウ -ィンドウで開くことができます。例えば: > - - $ vim -o3 f1.txt f2.txt f3.txt -< -上のコマンドはファイルf1.txt、f2.txt、f3.txtを3つに水平に分割したウィンドウで -開きます。 > - - $ vim -O3 f1.txt f2.txt f3.txt -< -上のコマンドはファイルf1.txt、f2.txt、f3.txtを3つに垂直に分割したウィンドウで -開きます。 > - -さらなる情報については以下を参照してください。 > - - :help -o - :help -O - :help startup-options -< - *faq-6.4* -6.4. 「ワークセット」や「プロジェクト」のように自動的に複数のファイルを同時に - 読み込ませるようにするには? - -自動的に複数のファイルを読み込ませるようにするには":mksesion"と":mkview"を使い -ます。 - -":mksession"コマンドは現在編集中のセッションを復元するVimスクリプトを生成しま -す。このmksessionコマンドで作られたファイルは":source"コマンドで読み込むことが -できます。 - -":mkview"コマンドは現在のウィンドウの中身を復元するVimスクリプトを生成します。 -現在のファイルのviewを読み込むには":loadview"コマンドを使います。 - -さらなる情報については以下を参照してください。 > - - :help 21.4 - :help 21.5 - :help views-sessions - :help 'sessionoptions' - :help :mksession - :help :source - :help v:this_session - :help :mkview - :help :loadview - :help 'viewdir' - :help buffers -< - *faq-6.5* -6.5. Neditやemacsのように単一のVimインスタンスで複数のトップレベルウィンドウを - 開くことはできますか? - -できません。単一のVimインスタンスで複数のトップレベルウィンドウを開くことは現 -在は不可能です。この機能はtodoリストの中にあります。 - - *faq-6.6* -6.6. Vim内でディレクトリをブラウズするには? - -標準Vimディストリビューションに同梱のexplorer.vimプラグインを使えばVim内でディ -レクトリをブラウズすることができます。以下のコマンドのうちどれかでファイルエク -スプローラを起動することができます: > - - :e <directory> - :Explore - :SExplore -< -ファイルエクスプローラではディレクトリをブラウズし、ファイルをリネーム、削除、 -編集することができます。 - -さらなる情報については以下を参照してください。 > - - :help file-explorer - :help 22.1 -< - *faq-6.7* -6.7. ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? - -標準Vimディストリビューションに同梱のnetrw.vimを使えばftp/scp/rcp/httpでネット -ワークごしにファイルを編集することができます。このプラグインを使うと、Vimは -ftp/scp/rcp/httpごしのファイルを透過的に読み込み、保存します。例えば、ftpごし -にファイルを編集するには、以下のコマンドを使います: > - - $ vim ftp://machine/path -< -さらなる情報については以下を参照してください。 > - - :help netrw.vim -< - -============================================================================= - *faq-7* -SECTION 7 - バックアップ - - *faq-7.1* -7.1. ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけたファイル - が作られます。このファイルを作成するのを止めさせるには?(または)バック - アップ機能を無効にするには? - -あなたは'backup'オプションをセットしているので、Vimは元のファイルを保存すると -きにバックアップを作ります。このバックアップファイルを作るのを止めさせるには、 -このオプションをクリアします: > - - :set nobackup -< -Note デフォルトではこのオプションはオフにされています。初期設定ファイルのどこか -で明示的に'backup'オプションが有効化されています。'writebackup'オプションもオ -フにするとよいかもしれません: > - - :set nowritebackup -< -さらなる情報については以下を参照してください。 > - - :help 07.4 - :help backup-table - :help 'backup' - :help 'writebackup' - :help 'backupskip' - :help 'backupdir' - :help 'backupext' - :help 'backupcopy' - :help backup -< - *faq-7.2* -7.2. 全てのバックアップファイルを特定のディレクトリに保存するように設定するに - は? -'backupdir'オプションを使えば全てのバックアップファイルを特定のディレクトリに -保存するように設定できます。例えば、全てのバックアップファイルを~/backupディレ -クトリに保存するには、次のコマンドを使います: > - - :set backupdir=~/backup -< -さらなる情報については以下を参照してください。 > - - :help 07.4 - :help 'backupdir' - :help backup -< - *faq-7.3* -7.3. ファイルを保存するとファイルパーミッションが変更されます。ファイルパーミ - ッションを変更せずにファイルを保存するよう設定するには? - -これは'backupcopy'が'no'または'auto'に設定されていると起こりえます。Note この -オプションのデフォルト値はほとんどの場合に正しく動作するように設定されていま -す。もしそのデフォルト値が正しく機能しないなら、'backupcopy'オプションを'yes' -にすればファイル保存時にパーミッションをそのままにすることができます: > - - :set backupcopy=yes -< -これはファイルを上書きするときは必ずバックアップを作るように設定したときだけ適 -用されます。デフォルトではVimはバックアップファイルを作りません。 - -さらなる情報については以下を参照してください。 > - - :help 'backupcopy' - :help backup - :help 'backup' - :help 'writebackup' -< - -============================================================================= - *faq-8* -SECTION 8 - バッファ - - *faq-8.1* -8.1. バッファに対して変更を加えました。変更されたバッファを保存せずに、かつ変 - 更を失うことなく他のバッファを編集するには? - -'hidden'オプションをセットすれば現在のファイルに対する変更を失うことなく他のフ -ァイルを編集することができます。 : > - - :set hidden -< -'hidden'オプションをセットすると、バッファに対する変更履歴(アンドゥ履歴)も保 -存されます。そうでないと、ファイルを切り替えたときにアンドゥ履歴が失われてしま -うでしょう。 - -さらなる情報については以下を参照してください。 > - - :help 'hidden' - :help hidden-quit - :help :hide -< - *faq-8.2* -8.2. バッファを切り替えるときに自動的に保存するよう設定するには? - -'autowrite'オプションをセットすると、他のバッファに切り替えるとき変更されたバ -ッファを自動保存します: > - - :set autowrite -< -さらなる情報については以下を参照してください。 > - - :help 'autowrite' - :help 'autowriteall' - :help 'hidden' -< - *faq-8.3* -8.3. カレントウィンドウのバッファを空バッファにするには? - -":enew"コマンドを使うとカレントウィンドウのバッファに換わって空バッファを読み -込みます。 - -さらなる情報については以下を参照してください。 > - - :help :enew -< - *faq-8.4* -8.4. バッファ番号を指定してバッファを読み込むショートカットキーはありますか? - -CTRL-^コマンドを使うとバッファ番号を指定してバッファを読み込むことができます。 -例えばバッファ番号5を読み込むには5 CTRL-^とします。 - -さらなる情報については以下を参照してください。 > - - :help CTRL-^ -< - *faq-8.5* -8.5. 読み込んでいるバッファをそれぞれ別のウィンドウで開くには? - -":ball"または":sball"コマンドでバッファリスト中の全てのバッファを開くことがで -きます: > - - :ball -< -さらなる情報については以下を参照してください。 > - - :help :ball -< - *faq-8.6* -8.6. Vimを終了することなくバッファを閉じる(削除する)には? - -":bdelete"コマンドでVimを終了することなくバッファを削除できます。 -例: > - - :bdelete file1 -< -さらなる情報については以下を参照してください。 > - - :help :bdelete - :help :bwipeout -< - *faq-8.7* - -8.7. :e filenameでいくつかのファイルを開きました。Vimを終了することなくそのバッ - ファのうちの1つを閉じるには? - -":bdelete <buffername>"コマンドでバッファを閉じることができます。 - -さらなる情報については以下を参照してください。 > - - :help :bdelelete - :help :bunload - :help :bwipeout -< - *faq-8.8* -8.8. ":%bd"コマンドで全バッファを削除しようとしても、全てのバッファが削除され - ません。なぜ? - -":%bd"コマンドにおいて範囲'%'はカレントバッファの開始行と終端行で置き換えられ -ます。範囲として'%'を使わず、番号を指定しなければなりません。例えば、 -":1,9999bd"とすれば全バッファを削除できます。 - -さらなる情報については以下を参照してください。 > - - :help :bd -< - *faq-8.9* -8.9. カレントバッファ/ファイルのバッファ番号を表示するには? - -2<CTRL-G>コマンドでカレントバッファ/ファイルのバッファ番号を表示できます。 -CTRL-Gの前にカウントを指定することに注意してください。カウントが1より大きい場 -合、バッファ番号が表示されます。 - -カレントバッファを表示するのに以下のコマンドを使うこともできます: > - - :echo bufnr("%") -< -また、'statusline'オプションにフィールド"%n"を含めるとステータスラインにバッフ -ァ番号が表示されます。 - -さらなる情報については以下を参照してください。 > - - :help CTRL-G - :help bufnr() - :help :echo - :help 'statusline' -< - *faq-8.10* -8.10. ウィンドウを閉じることなくバッファを削除するには? - -次のコマンドで現在のバッファを削除し、次のバッファを開くことができます: > - - :bnext | bdelete # -< -さらなる情報については以下を参照してください。 > - - :help :bnext - :help :bdelete - :help :buffers -< - *faq-8.11* -8.11. Tabキーで全バッファを巡回するようにマップするには? - -次の2つのマップコマンドを使うと、CTRL-Tabで次のバッファを開き、CTRL-SHIFT-Tab -で前のバッファを開くようにマップできます: > - - :nnoremap <C-Tab> :bnext<CR> - :nnoremap <S-C-Tab> :bprevious<CR> -< -さらなる情報については以下を参照してください。 > - - :help :bnext - :help :previous -< - -============================================================================= - *faq-9* -SECTION 9 - ウィンドウ - - *faq-9.1* -9.1. ウィンドウとバッファの違いは? - -バッファとは編集用にメモリに読み込まれたファイルです。元のファイルはあなたがバ -ッファをファイルに書き込むまでは変更されないままです。ウィンドウとはバッファを -表示する領域です。1つのバッファを複数のウィンドウで表示することもできますし、 -異なるバッファを複数のウィンドウで表示することもできます。 - -さらなる情報については以下を参照してください。 > - - :help usr_08.txt - :help 22.4 - :help windows-intro - :help Q_wi -< - *faq-9.2* -9.2. ウィンドウの幅を広げるには? - -以下のコマンドのどれか1つでウィンドウの幅を広げることができます: > - - :vert resize +N - :vert resize -N - :vert resize N -< -CTRL-W <、CTRL-W >、CTRL-W | コマンドを使うこともできます。 - -さらなる情報については以下を参照してください。 > - - :help vertical-resize - :help CTRL-W_> - :help CTRL-W_< - :help window-resize -< - *faq-9.3* -9.3. ウィンドウをズームイン・ズームアウトするには? - -ウィンドウをズームするには(カレントウィンドウ以外の全ウィンドウを閉じるには) -"CTRL-W o"またはexコマンド":only"を使います。 - -"CTRL-W _"またはexコマンド":resize"を使うと、他のウィンドウを閉じずに可能な限 -りウィンドウの高さを広げることができます。 - -"CTRL-W |"またはexコマンド":vertical resize"を使うと、他のウィンドウを閉じずに -可能な限りウィンドウの幅を広げることができます。 - -"CTRL-W ="コマンドを使うと全ウィンドウの高さと幅を等しくすることができます。 - -以下のオプションをセットすると、上記のコマンドを行うのと同じ結果が得られます。 - -方法1: -'winminheight'オプションを0にする: > - - :set winminheight=0 -< -デフォルトではこのオプションは1に設定されています。 -このオプションはアクティブでない(カレントウィンドウでない)ウィンドウの最小の -高さをコントロールします。'winminheight'が0に設定されていると、アクティブでな -いウィンドウにはステータスラインだけが表示されます。 - -方法2: -'noequalalways'オプションをセットし、'winheight'オプションを大きな値(99999など -)に設定する: > - - :set noequalalways - :set winheight=99999 -< -こうするとアクティブウィンドウが常に最大サイズで開かれます。他のウィンドウは表 -示されますが、ステータスラインのように小さく縮みます。 - -以上の方法のどれにおいても、いったんウィンドウをズームしてしまうと、ウィンドウ -配置を復元することはできません。ウィンドウ配置を復元したいならばZoomWinプラグ -インを使うことができます。このプラグインはVim onlineからダウンロードできます。 - -http://vim.sourceforge.net/scripts/script.php?script_id=508 - -さらなる情報については以下を参照してください。 > - - :help CTRL-W_o - :help window-resize - :help 'winminheight' - :help 'equalalways' - :help 'winheight' - :help 08.3 -< - *faq-9.4* -9.4. 全バッファまたは全ウィンドウ、引数リスト中の全ファイルに対してexコマンド - を実行するには? - -":bufdo"コマンドを使うと全バッファに対してexコマンドを実行することができます。 -":windo"コマンドを使うと全ウィンドウに対してexコマンドを実行することができます -。":argdo"コマンドを使うと引数リスト中の全ファイルに対してexコマンドを実行する -ことができます。 - -さらなる情報については以下を参照してください。 > - - :help :windo - :help :bufdo - :help :argdo - :help 26.3 -< - -============================================================================= - *faq-10* -SECTION 10 - モーション - - *faq-10.1* -10.1. ファイルの先頭や末尾に移動するには? - -'G'でファイルの最終行へ移動でき、'gg'で先頭行へ移動できます。 - -さらなる情報については以下を参照してください。 > - - :help G - :help gg -< - *faq-10.2* -10.2. インサートモードで<Esc>キーを押してノーマルモードに移行すると、カーソル - が1文字左へ移動します(カーソルが行の最初の文字の上にあるときを除いて)。 - この動作を変更し、カーソルがその桁の上に残るようにできますか? - -この動作を変更することはできません。カーソルは「常に」有効な文字の上に置かれま -す(virtualeditモードを有効にしていない限り)。そのため、行の末尾にテキストを -追加していてノーマルモードに戻るときには、カーソルは必ず最後に入力された文字の -上に戻らねばなりません。一貫性のためにカーソルはどこにあっても1文字戻るように -なっています。たとえ行の真ん中であっても。 - -インサートモードでCTRL-Oを使うと、カーソル位置を動かすことなくexコマンドを1つ -実行してインサートモードに戻ることができます。 - -さらなる情報については以下を参照してください。 > - - :help 'virtual' - :help i_CTRL-O -< - *faq-10.3* -10.3. <Page Up>、<Page Down>などのキーを押してスクロールしたときカーソル位置の - 桁を保つように設定することはできますか? - -'startofline'オプションをオフにするとテキストをスクロールしたときカーソル位置 -の桁を保つことができます: > - - :set nostartofline -< -さらなる情報については以下を参照してください。 > - - :help 'startofline' -< - *faq-10.4* -10.4. ファイル中のある行の長さが画面の幅を越えており、折り返されています。ここ - でj, kキーを使うと画面上の次行(物理行)でなくファイルの次行(論理行)に - 移動します。画面上の次行に移動するには? - -gjとgkコマンドを使うと画面上の次行・前行に移動できます。jとkはファイルの次行・ -前行に移動します。'wrap'オプションをオフにすると行の折り返しをやめさせることが -できます: > - - :set nowrap -< -さらなる情報については以下を参照してください。 > - - :help gj - :help gk - :help 'wrap' -< -以下のマッピングを使ってもよいでしょう: > - - :map <Up> gk - :imap <Up> <C-o>gk - :map <Down> gj - :imap <Down> <C-o>gj -< - *faq-10.5* -10.5. Vimにおける文、段落、セクションの定義は? - -文(sentence)は後ろに行末・(1個または2個の)スペース・タブが続く'.'、'!'、'?' -で終わると定義されます。文の終端を構成する文字とスペースの個数は'joinspaces'と -'cpoptions'オプションによって決まります。 - -段落(paragraph)は空行の後から始まります。また、'paragraph'オプション中の文字の -ペアによって指定される段落マクロも段落の始まりとみなされます。 - -セクションは1桁目のフォームフィード(<C-L>)から始まります。また、'sections'オプ -ション中の文字のペアによって指定される段落マクロも段落の始まりとみなされます。 - -さらなる情報については以下を参照してください。 > - - :help sentence - :help 'joinspaces' - :help 'cpoptions' | /^\s*j\> - :help paragraph - :help section - :help word -< - *faq-10.6* -10.6. 文、段落、セクションの先頭と末尾に移動するには? - -以下のコマンドを使うと文、段落、セクションの先頭と末尾に移動することができます -: > - - motion 位置 どこの - ( 先頭 現在の文 - ) 末尾 現在の文 - { 先頭 現在の段落 - } 末尾 現在の段落 - [] 末尾 前のセクション - [[ 先頭 現在のセクション - ][ 末尾 現在のセクション - ]] 先頭 次のセクション -< -これらの移動コマンドの前に番号を指定すると、移動を前方(または後方)に拡大する -ことができます。 - -さらなる情報については以下を参照してください。 > - - :help object-motions -< - *faq-10.7* -10.7. 画面の右端を越えて続いている行があります。右側にスクロールして画面外に出 - ているテキストを表示するには? - -以下のコマンドのどれか1つで画面を左右にスクロールすることができます: > - - zl - 左へスクロール - zh - 右へスクロール - zL - 左へ画面半分の幅スクロール - zH - 右へ画面半分の幅スクロール - zs - カーソル位置が画面左端に来るようにスクロール - ze - カーソル位置が画面右端に来るようにスクロール -< -g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで画面上最後の文字へ、画面 -をスクロールせずに移動することができます。 - -さらなる情報については以下を参照してください。 > - - :help scroll-horizontal -< - *faq-10.8* -10.8. 2個以上のバッファを同時にスクロールさせるには? - -それぞれのバッファに対して"scrollbind"オプションをセットすると、それらを同時に -スクロールできるようになります。 - -さらなる情報については以下を参照してください。 > - - :help 'scrollbind' - :help scroll-binding - :help 'scrollopt' -< - *faq-10.9* -10.9. 矢印キーを使うとモードが変わり、バッファに変な文字が挿入され、カーソルが - 適切に移動しません。どうなっているのですか? - -そうなるのには2つの事が考えられます。遅い回線上でVimを使っているか、キーボード -が生成するキーシーケンスをVimが理解していないかです。 - -もし遅い回線(2400bpsモデムのような)上で使用しているなら、'timeout'や -'ttimeout'オプションを設定してみてください。これらのオプションを'timeoutlen'と -'ttimeoutlen'オプションと組み合わせれば問題が解決するかもしれません。 - -もしあなたのターミナルが送るキーコードをVimが理解しなければ、そのコマンドは正 -しく動きません。この場合、最良の選択肢はそのキーシーケンスをカーソル移動コマ -ンドにマップして、そのマッピングをファイルに保存しておくことです。そしてその -ターミナル上で使うときは常にそのファイルを":source"します。 - -さらなる情報については以下を参照してください。 > - - :help 'timeout' - :help 'ttimeout' - :help 'timeoutlen' - :help 'ttimeoutlen' - :help :map - :help vt100-cursor-keys -< - *faq-10.10* -10.10. カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するようにす - るには? - -カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するようにするには -'whichwrap'オプションに'<'フラグを加えます: > - - :set whichwrap+=< -< -同様に、カーソルが行末にあるとき右矢印キーを押すと次行の行頭に移動するようにす -るには'whichwrap'オプションに'>'フラグを加えます: > - - :set whichwrap+=> -< -これらはノーマルモードとヴィジュアルモードでのみ機能します。インサートモード -と上書きモードでも使えるようにするには、それぞれ'['と']'フラグを加えます。 - -さらなる情報については以下を参照してください。 > - - :help 'whichwrap' - :help 05.7 -< - *faq-10.11* -10.11. 常にインサートモードに留まるようにするには?(モードレスな編集をするに - は?) - -常にインサートモードに留まるようにするには'insertmode'オプションを使います: -> - - :set insertmode -< -このオプションをセットするとVimをモードレスエディタとして使えるようになります -。<Esc>キーを押してもノーマルモードに移行しません。ノーマルモードコマンドを1つ -だけ実行するにはCTRL-Oを押してからノーマルモードコマンドをタイプします。1つ以 -上のノーマルモードコマンドを実行するにはCTRL-Lに続けてそのコマンドをタイプしま -す。インサートモードに戻るには<Esc>キーを押します。このオプションを無効にする -には'insertmode'オプションをオフにします: > - - :set noinsertmode -< -"evim"コマンドまたは"vim -y"を使ってもVimをモードレスエディタとして使用できま -す。 - -さらなる情報については以下を参照してください。 > - - :help 'insertmode' - :help i_CTRL-O - :help i_CTRL-L - :help evim - :help evim-keys -< - *faq-10.12* -10.12. テキストをスクロールするとき、前後の行を表示するには? - -'scrolloff'オプションをセットすると画面に表示されるカーソルの前後の行の最小数 -を設定できます。 > - - :set scrolloff=10 -< -さらなる情報については以下を参照してください。 > - - :help 'scrolloff' - :help 'sidescrolloff' -< - *faq-10.13* -10.13. 以前のカーソル位置に戻るには? - -''または``コマンドを使うと最後のジャンプの前にいた位置へカーソルを戻すことがで -きます。CTRL-Oでも以前のカーソル位置に戻ることができ、CTRL-Iでジャンプリスト中 -のより新しい位置へ移動できます。 - -さらなる情報については以下を参照してください。 > - - :help 03.10 - :help mark-motions - :help jump-motions -< - -============================================================================= - *faq-11* -SECTION 11 - テキストを検索する - - *faq-11.1* -11.1. テキストを検索した後、マッチしたテキストが全て強調されます。この強調を一 - 時的/永続的に無効にするには? - -最後に検索したパターンにマッチする文字列を強調するかは'hlsearch'オプションで決 -まります。デフォルトではこのオプションは無効になっています。このオプションがシ -ステムレベルのvimrcファイルでセットされているならば、次のコマンドを使ってこの -強調を無効にできます: > - - :set nohlsearch -< -一時的にこの強調を消すには次のようにします: > - - :nohlsearch -< -また、カレントファイルに存在しないパターンを検索することによってもこの強調をク -リアすることができます(例えば'asdf'を検索する)。 - -さらなる情報については以下を参照してください。 > - - :help 'hlsearch' - :help :nohlsearch -< - *faq-11.2* -11.2. 検索パターンにキャリッジリターン文字を含めるには? - -'\r'を使うか<CTRL-V><CTRL-M>を使えばパターンにキャリッジリターンを含めることが -できます。Vimスクリプト中では'\r'を使う方がよいでしょう。 - -さらなる情報については以下を参照してください。 > - - :help sub-replace-special -< - *faq-11.3* -11.3. 文字^Mを検索するには? - -検索コマンド中にCTRL-Vを押して次にCTRL-Mを押せば^M文字を挿入することができま -す。 -> - - /^V^M -< -"\r"文字を使うこともできます。Vimスクリプト中では"\r"を使う方がよいでしょう。 - -さらなる情報については以下を参照してください。 > - - :help c_CTRL-V - :help using_CTRL-V - :help /\r -< - *faq-11.4* -11.4. '~R', '~S'などと表示される文字を検索・置換するには? - -'ga'で特殊文字のアスキーコードを表示することができます。例えばアスキーコードが -142であるなら、次のコマンドでその特殊文字を検索することができます: > - - /^V142 -< -ここで^VはCTRL-Vを押して挿入します。 - -さらなる情報については以下を参照してください。 > - - :help ga - :help using_CTRL_V - :help 24.8 -< - *faq-11.5* -11.5. ファイル中の印字不能文字を全て強調するには? - -次のコマンドと検索パターンを使えばファイル中の印字不能文字を全て強調することが -できます: > - - :set hlsearch - /\(\p\|$\)\@!. -< -さらなる情報については以下を参照してください。 > - - :help /\p - :help /bar - :help /$ - :help /\( - :help /\@! - :help 'hlsearch' -< - *faq-11.6* -11.6. 単語に完全に一致するテキストを検索するには? - -アトム\<と\>を使えば単語に完全に一致するテキストを検索できます。例えば: > - - /\<myword\> -< -アトム\<は単語の先頭にマッチし、アトム\>は単語の末尾にマッチします。 - -さらなる情報については以下を参照してください。 > - - :help /\< - :help /\> -< - *faq-11.7* -11.7. カーソル下の単語を検索するには? - -*キーを押せばカーソル下の単語を前方に検索することができます。後方に検索するに -は#キーを押します。これらのコマンドを使うとキーワードに完全に一致するものだけ -が検索されます。 - -さらなる情報については以下を参照してください。 > - - :help star - :help # - :help g* - :help g# - :help 03.8 - :help search-commands -< - *faq-11.8* -11.8. 大文字・小文字を区別せず検索するには? - -常に大文字・小文字を区別しないようにするには'ignorecase'をセットします: > - - :set ignorecase -< -あるパターンを検索するときだけ区別しないようにするには、特別なディレクティブ -\cを使います: > - - /\c<pattern> -< -さらなる情報については以下を参照してください。 > - - :help 'ignorecase' - :help /ignorecase - :help /\c -< - *faq-11.9* -11.9. 2回続けて現れる単語を検索するには? - -次の検索コマンドのどれかを使えば、2回続けて現れる単語を探すことができます: > - - /\(\<\w\+\)\_s\+\1\> - /\(\<\k\+\)\_s\+\1\> -< -主な違いは'\w'と'\k'の使用です。後者は'iskeyword'に基づき、アクセントつきの文 -字や他の言語固有の文字を含むこともできます。 - -さらなる情報については以下を参照してください。 > - - :help /\1 - :help /\( - :help /\) - :help /\< - :help /\> - :help /\w - :help /\k - :help /\+ - :help /\_x - :help 'iskeyword' -< - *faq-11.10* -11.10. ある単語がバッファ中に何回現れるか数えるには? - -以下の一連のコマンドを行うと、ある単語がバッファ中に何回現れるかを数えることが -できます: > - - :let cnt=0 - :g/\<your_word\>/let cnt=cnt+1 - :echo cnt -< -上のコマンドは単語を含む行の数を数えるだけです。以下のコマンドを使うこともでき -ます: > - - :%s/\<word\>/&/g -< -訳註: :%s/\<word\>//ng というようにnフラグをつけると、実際には置換を行わず、何 - 箇所置換されるかを知ることができます。 - -ファイル中のアルファベットだけからなる単語を数えるにはこうします。 > - - :%s/\a\+/&/g -< -非空白文字だけからなる単語を数えるにはこうします。 > - - :%s/\S\+/&/g -< -さらなる情報については以下を参照してください。 > - - :help count-items - :help word-count - :help v_g_CTRL-G - :help 12.5 -< - *faq-11.11* -11.11. 検索時にカーソルをマッチした単語の末尾に移動させるには? - -検索コマンドにオフセット'e'を指定すると、カーソルをマッチした単語の末尾へ移動 -させることができます。例 > - - /mypattern/e -< -さらなる情報については以下を参照してください。 > - - :help search-offset - :help / -< - *faq-11.12* -11.12. 空行を検索するには? - -次のコマンドを使うと空行を検索することができます: > - - /^$ -< - または > - - /^\s*$ -< -さらなる情報については以下を参照してください。 > - - :help /^ - :help /$ - :help /\s - :help /* - :help search-commands -< - *faq-11.13* -11.13. 1つの文字だけを含む行を検索するには? - -1つの文字だけを含む行を検索するにはこうします: > - - /^\s*\a\s*$ -< -さらなる情報については以下を参照してください。 > - - :help /^ - :help /\a - :help /\s - :help /* - :help /$ -< - *faq-11.14* -11.14. 複数のファイルから文字列を検索し、置換するには? - -":argdo", ":bufdo", ":windo"コマンドを使うと複数のファイルに対してexコマンドを -実行することができます。例: > - - :argdo %s/foo/bar/g -< -さらなる情報については以下を参照してください。 > - - :help :argdo - :help :bufdo - :help :windo -< - *faq-11.15* -11.15. マップ中で置換コマンド":s"を使っています。検索が失敗したときマップが途 - 切れてしまいます。置換が失敗したときにもマップの次のコマンドを続けてほ - しいのですが、どうすればできますか? - -置換コマンドに対して'e'フラグを指定すると、パターンが見つからなかったときもマッ -プの他のコマンドを続行します。 - -さらなる情報については以下を参照してください。 > - - :help :s_flags -< - *faq-11.16* -11.16. 行からある文字がn回目に現れる箇所を検索するには? - -行中からある文字がn回目に現れる箇所を検索するには、'f'コマンドにプリフィックス -をつけます。例えば、文字@が5回目に現れる火おを検索するには、5f@とします。ただ -しカーソルが行頭にあるものとします。また、1桁目の文字が検索する文字ではないも -のとします。 - -さらなる情報については以下を参照してください。 > - - :help f - :help F - :help t - :help T - :help ; - :help , -< - *faq-11.17* -11.17. タブ(やその他の文字)を改行文字で置換するには? - -タブ(やその他の文字)を改行文字で置換するには、次のコマンドを使います: > - - :s/\t/\r/ -< -上のコマンドで\rでなく\nを使うと改行文字には置換されないので注意してください。 - -さらなる情報については以下を参照してください。 > - - :help sub-replace-special - :help NL-used-for-Nul - :help CR-used-for-NL -< - *faq-11.18* -11.18. アスキーコードで検索する文字を指定するには? - -"/"コマンド中で、CTRL-Vに続いて10進、16進、8進の値を入力すると、アス -キーコードでその値を持つ文字を検索することができます。ある文字のアスキーコード -を知るには":ascii"や"ga"コマンドが使えます。 -For more information, read > - - :help i_CTRL-V_digit - :help :ascii - :help ga -< - *faq-11.19* -11.19. 長い行を見つけるには? - -検索コマンドで正規表現を使えば長い行、または指定した数以上の文字を含む行を検索 -することができます。例えば、80文字以上を含む行を検索するには、このようにします -: > - - /^.\{80}.*$ - /^.*\%80c.*$ -< -さらなる情報については以下を参照してください。 > - - :help /\{ - :help /\%c -< - *faq-11.20* -11.20. カレントバッファ内の指定したパターンを含む行を全て表示するには? - -次のコマンドを使うとカレントバッファ内の指定したパターンを含む行を全て表示する -ことができます: > - - :g/<pattern>/p -< -例えば、次のコマンドはカレントバッファ内の"vim"を含む行を全て表示します: > - - :g/vim/p -< -行番号もいっしょに表示したいならば次のコマンドが使えます: > - - :g/<pattern>/# -< -さらなる情報については以下を参照してください。 > - - :help :global - :help :print - :help :number -< - *faq-11.21* -11.21. 複数行にわたる文字列を検索するには? - -正規表現のアトム\_xを使えば、複数行にわたる文字列を検索することができます。例 -えば、文字列"Hello World"を検索するには次のコマンドを使います: > - - /Hello\_sWorld -< -これは、単語"Hello"とそれに続く改行文字、そして次行の行頭の単語"World"にマッチ -します。またこれは"Hello"、スペース、"World"にもマッチします。行頭と行末の空白 -を含めて文字列"Hello World"を検索するには、次のコマンドを使います: > - - /Hello\_s\+World -< -さらなる情報については以下を参照してください。 > - - :help 27.8 - :help pattern-atoms - :help /\_ - :help pattern-searches -< - *faq-11.22* -11.22. バッファの指定した範囲内から検索するには? - -正規表現のアトム\%>lと\%<lを使えば、指定した範囲内からパターンを検索することが -できます。 - -例えば、10行目と20行目の間から単語'white'を検索するには次のコマンドを使います: -> - - /white\%>10l\%<20l -< -さらなる情報については以下を参照してください。 > - - :help /\%l -< - -============================================================================= - *faq-12* -SECTION 12 - テキストを変更する - - *faq-12.1* -12.1. 行末の空白文字(スペースとタブ)を全て削除するには? - -":substitute"コマンドを使ってファイル中から行末の空白文字を全て削除することが -できます: > - - :%s/\s\+$// -< -さらなる情報については以下を参照してください。 > - - :help :% - :help :s - :help /\s - :help /\+ - :help /$ -< - *faq-12.2* -12.2. 連続する空白文字を1個のスペースに置換するには? - -次のコマンドで連続する空白文字を1個のスペースに置換することができます: > - - :%s/ \{2,}/ /g -< -さらなる情報については以下を参照してください。 > - - :help :% - :help :s - :help /\{ - :help :s_flags -< - *faq-12.3* -12.3. 連続する空行を1行だけに圧縮するには? - -次のコマンドで連続する空行を1行だけに圧縮することができます: > - - :v/./.,/./-1join -< -このコマンドの説明は以下の通りです: > - - :v/./ 後に続くコマンドを、1文字も含まない行(空行)を除く全ての行 - に対して実行する。 - ., 現在行を範囲の開始位置に指定する。 - /./ 1文字を含む行を範囲の終端に指定する。 - -1 終端を1行前に調整する。 - j 範囲内の行を連結する。 -< -空行がファイルの末尾にある場合、これはエラーメッセージを出します。それを避ける -には、一時的な行をファイルの末尾に追加し、このコマンドを実行してから一時的な行 -を削除します。 - -さらなる情報については以下を参照してください。 > - - :help :v - :help :join - :help cmdline-ranges - :help collapse -< - *faq-12.4* -12.4. ファイル中の空行を全て削除するには?空白文字だけを含む行を全て削除するに - は? - -空行を全て削除するには、次のコマンドを使います: > - - :g/^$/d -< -空白文字(スペースとタブ)だけからなる行を削除するには、次のコマンドを使います: -> - - :g/^\s\+$/d -< -空行、または空白だけからなる行を全て削除するには、次のコマンドを使います: > - - :g/^\s*$/d -< - *faq-12.5* -12.5. カーソル下の単語をコピー/ヤンクするには? - -"yiw"(yank inner word without whitespace)または"yaw" (yank a word with -whitespace)でカーソル下の単語をコピー/ヤンクできます。 - -さらなる情報については以下を参照してください。 > - - :help 04.6 - :help 04.8 - :help iw - :help yank - :help text-objects - :help objects -< - *faq-12.6* -12.6. 行全体ではなく、行内のある位置からある位置までをヤンクするには? - -ヤンクオペレータ(y)に移動コマンドを指定すれば、行内のある位置から別の位置まで -をヤンクすることができます。例えば、現在のカーソル位置から次のxという文字まで -をヤンクするにはyfx, Fx, tx, Txのどれかを使います。n桁目までをヤンクするには -n|を使います。次に'word'が現れる場所までをヤンクするには/wordとします。別の行 -のn桁目までをヤンクするには、まず'ma'で位置をマークし、ヤンク開始位置まで移動 -してt`a(バッククォートであることに注意)でマークまでをヤンクします。 - -さらなる情報については以下を参照してください。 > - - :help yank - :help motion.txt - :help 4.6 -< - *faq-12.7* -12.7. 現在のレジスタの中身に追加ヤンクするには? - -レジスタを指定するときに大文字を使うと現在のレジスタに追加ヤンクされます。例え -ば、レジスタ"a"になにかテキストが入っているとします。新しいテキストをここに追 -加するには、レジスタ名"A"を使います。レジスタ名に小文字を使うと、レジスタの中 -身は新しいテキストで上書きされてしまいます。 - -さらなる情報については以下を参照してください。 > - - :help quote - :help quote_alpha - :help 10.1 -< - *faq-12.8* -12.8. 複数行にわたる文全体をヤンクするには? - -複数行にわたる文全体をヤンクするには、ヤンクオペレータの後に移動コマンドを続け -ます。例: > - - y) -< -文の内側にいるときは'yi)'で文をヤンクすることができます。 - -さらなる情報については以下を参照してください。 > - - :help yank - :help {motion} - :help object-motions - :help 4.6 -< - *faq-12.9* -12.9. あるパターンを含む行全てをヤンクするには? - -":global"を使えばあるパターンを含む行全てをヤンクし、その後そのレジスタの中身 -をバッファにペーストすることができます: > - - :let @a='' - :g/mypattern/y A -< -最初のコマンドはレジスタ"a"の中身をクリアします。2番目のコマンドは"mypattern" -を含む行全てをレジスタ"a"にコピーします。大文字"A"を使ってマッチした行を追加し -ていることに注意してください。そして"apコマンドでレジスタ"a"の中身をバッファに -ペーストすることができます。 - -さらなる情報については以下を参照してください。 > - - :help :g - :help :y - :help let-register - :help quote_alpha - :help put - :help registers - :help :registers -< - *faq-12.10* -12.10. あるパターンを含まない行全てを削除するには? - -":v"コマンドを使えば、あるパターンを含まない行全てを削除することができます: > - - :v/pattern/d -< -または > - - :g!/pattern/d -< -さらなる情報については以下を参照してください。 > - - :help :v - :help :g -< - *faq-12.11* -12.11. "pattern"を含む全ての行の前に行を追加するには? - -以下のコマンドを使うと、"pattern"を含む行全ての前に行を追加することができま -す: > - - :g/pattern/normal Oi<line of text goes here> -< -または追加する行をYでヤンクし、次のコマンドでそれを追加することができます: > - - :g/pattern/put! -< -さらなる情報については以下を参照してください。 > - - :help :g - :help :put - :help insert - :help 0 -< - *faq-12.12* -12.12. 前の行が特定のパターンを含んでいる行に対して操作を行うには? - -":global"を使えば、前の行が特定のパターンを含んでいる行に対して操作を行うこと -ができます: > - - :g/<pattern>/+{cmd} -< -さらなる情報については以下を参照してください。 > - - :help :g - :help :range -< - *faq-12.13* -12.13. あるパターンを含む行全てに対してコマンドを実行するには? - -":global"(:g)コマンドを使えば、あるパターンを含む行全てに対してコマンドを実行 -することができます。 > - - :g/my pattern/d -< -Exコマンドでないコマンドを使いたければ、":normal"を使うことができます: > - - :g/my pattern/normal {command} -< -ノーマルモードコマンドの再帰マッピングを避けたければ代わりに":normal!"を使いま -す("!"に注意)。 - -さらなる情報については以下を参照してください。 > - - :help :global - :help :v - :help :normal -< - *faq-12.14* -12.14. カーソル位置の1文字上の文字をカーソル位置にコピーするには? - -インサートモードで<Ctrl-Y>とするとカーソル位置の1文字上の文字をコピーすること -ができます。同じように<Ctrl-E>で1文字下の文字をコピーすることができます。 - -さらなる情報については以下を参照してください。 > - - :help i_CTRL-Y - :help i_CTRL-E -< - *faq-12.15* -12.15. インサートモードに入らずに現在行の前/後に空行を挿入するには? - -":put"を使えば空行を挿入できます。例えば、次を実行してみてください: > - - :put ='' - :put! ='' -< -さらなる情報については以下を参照してください。 > - - :help :put -< - *faq-12.16* -12.16. カレントファイルの名前をカレントバッファに挿入するには? - -カレントファイルの名前をカレントバッファに挿入するにはいくつかの方法がありま -す。インサートモードでは<C-R>%または<C-R>=expand("%")でできます。ノーマルモー -ドでは":put =@%"でできます。 - -さらなる情報については以下を参照してください。 > - - :help i_CTRL-R - :help expand() - :help !! -< - *faq-12.17* -12.17. レジスタの中身をカレントバッファに挿入するには? - -インサートモードでは<C-R><register>で<register>の中身を挿入することができま -す。例えば、<C-R>aでレジスタ"a"の中身をカレントバッファに挿入できます。 - -ノーマルモードでは":put <register>"で<register>の中身を挿入できます。例えば、 -":put d"でレジスタ"d"の中身をカレントバッファに挿入できます。 - -さらなる情報については以下を参照してください。 > - - :help i_CTRL-R - :help :put -< - *faq-12.18* -12.18. 行末を越えてカーソルを移動し、テキストを挿入するには? - -オプション"virtualedit"をセットすれば行末を越えてカーソルを移動し、行末の先に -文字を追加することができます。virtualモードを開始するにはこうします。 > - - :set virtualedit=all -< -さらなる情報については以下を参照してください。 > - - :help 'virtualedit' -< - *faq-12.19* -12.19. カーソル下の単語(例えばjunk)を"foojunkbar"に置き換えるには? - -いくつかの方法があります。その行の中でその単語が現れる最初の箇所なら、こうしま -す: > - - :exe "s/".expand("<cword>")."/foo&bar/" -< -よりマッチを限定させるには、このようなより複雑な置換コマンドを使います: > - - :exe 's/\<'.expand("<cword>").'\%>'.(col(".")-1).'c\>/foo&bar/' -< -またはciwfoo<C-R>"bar<Esc>としてもできます。 - -さらなる情報については以下を参照してください。 > - - :help :substitute - :help expand() - :help col() - :help /\%c -< - *faq-12.20* -12.20. ディレクトリ中の全てのファイルに対して特定のテキストを置換するには? - -"argdo"を使えば、引数として指定されたファイル全てに対して置換コマンドを実行す -ることができます: > - - :args * - :argdo %s/<your_text>/<replacement_text>/ge | update -< -さらなる情報については以下を参照してください。 > - - :help :args_f - :help :argdo - :help :s_flags -< - *faq-12.21* -12.21. ファイル中に数字が書かれています。これを増加・減少させるには? - -CTRL-Aで数字を増加、CTRL-Xで減少させることができます。また、カウントを指定すれ -ば増加・減少させる数を指定することができます。この機能は10進、8進、16進の数字 -に対して適用することができます。 - -さらなる情報については以下を参照してください。 > - - :help CTRL-A - :help CTRL-X - :help 'nrformats' -< - - *faq-12.22* -12.22. ":substitute"で最後に検索したパターンを再利用するには? - -":substitute"で検索パターンを指定しなければ、最後に検索したパターンを再利用す -ることができます: > - - :s/pattern/newtext/ - :s//sometext/ -< -2回目の":s"では、検索パターンが指定されていないので、最初の":s"のパターンが使 -われます。 - -検索パターンは変えたいが、置換語を同じものにしたい場合は、チルド文字を使いま -す: > - - :s/newpattern/~/ -< -さらなる情報については以下を参照してください。 > - - :help :s - :help :& - :help :~ - :help & - :help sub-replace-special -< - *faq-12.23* -12.23. ":substitute"を使って大文字・小文字を入れかえるには? - -":substitute"の置換文字列に特殊文字を使えば、マッチした文字列の大文字・小文字 -を入れかえることができます。例えば、文字列"MyString"を全て大文字にするには、以 -下のコマンドを使うことができます: > - - :%s/MyString/\U&/g -< -小文字にするには、次のコマンドを使います: > - - :%s/MyString/\L&/g -< -現在行の全ての単語の最初の文字を大文字にするには、次のコマンドを使います: > - - :s/\<\(.\)\(\k*\)\>/\u\1\L\2/g -< -さらなる情報については以下を参照してください。 > - - :help sub-replace-special - :help :substitute - :help \U - :help \L - :help \u -< - *faq-12.24* -12.24. キーボード上に無い文字を入力するには? - -ダイグラフを使えば、キーボード上に無い文字を入力することができます。現在定義さ -れているダイグラフを全て表示するには":digraphs"を使います。":digraphs"を使えば -リストに新しいダイグラフを追加できます。 - -さらなる情報については以下を参照してください。 > - - :help digraphs - :help 'digraphs' - :help 24.9 -< - *faq-12.25* -12.25. ダイグラフのどれか、または全てを削除するコマンドはありますか? - -ありません。ダイグラフテーブルはコンパイル時に定義されます。できるのは新しいダ -イグラフを追加することだけです。ダイグラフを削除するコマンドを追加するという事 -はTODOリストにはありません。 - *faq-12.26* -12.26. インサートモードでバックスペースキーを押すと、今回のインサートモードで - 入力した文字が消されるだけです。バックスペースキーで前回のインサートモ - ードで入力した文字を消すには? - -'backspace'をセットすればインサートモードで前回入力した文字を削除することがで -きます: > - - :set backspace=indent,eol,start -< -さらなる情報については以下を参照してください。 > - - :help 'backspace' -< - *faq-12.27* -12.27. 72文字より長くて"+"で終わり、次行に折り返されている行があります。このよ - うな行をすばやく連結させるには? - -":global"を使えばそのような行を検索・連結できます: > - - :g/+$/j -< -しかしこれは2行ごとに連結するだけです。連続する"+"で終わる行を連結する、より複 -雑な2つの例が以下の通りです: > - - :g/*$/,/\(^\|[^+]\)$/j - :g/+$/mark a | .,/\(^\|[^+]\)$/s/+$// | 'a,.j -< -訳註: 1番目の例は :g/+$/,/\(^\|[^+]\)$/j の間違いだと思う。 - -さらなる情報については以下を参照してください。 > - - :help :g - :help :j - :help :mark -< - *faq-12.28* -12.28. 文字単位でヤンクされたテキストを新しい行にペーストするには? - -":put"を使えば文字単位でヤンクされたテキストを新しい行にペーストできます: > - - :put =@" -< -さらなる情報については以下を参照してください。 > - - :help :put - :help quote_= -< - *faq-12.29* -12.29. 単語・文字・テキストのブロックの大文字小文字を入れかえるには? - -"~"を使えば文字の大文字・小文字を入れかえることができます。 - -カーソル下の単語を大文字にするには"gUiw"または"viwU"、小文字にするには"guiw"ま -たは"viwu"とすればできます。 - -カーソル下の単語の大文字・小文字を入れかえるには"viw~"または"g~iw"とします。 - -"gUgU"とすれば現在行を大文字にでき、"gugu"とすれば現在行を小文字にできます。 - -"g~g~"とすれば現在行の大文字・小文字を入れかえることができます。"g~{motion}"ま -たは"{Visual}~"とすればテキストのブロックの大文字・小文字を入れかえることがで -きます。 - -さらなる情報については以下を参照してください。 > - - :help case -< - *faq-12.30* -12.30. キーボード上にないアスキー文字を入力するには? - -キーボード上にないアスキー文字を入力するには、CTRL-Vを押してからそのアスキーコ -ードを入力します。特別なアスキー文字を入力するのにダイグラフを使うこともできま -す。 - -さらなる情報については以下を参照してください。 > - - :help i_CTRL-V_digit - :help digraphs - :help 45.5 -< - *faq-12.31* -12.31. ファイル中の印字不能文字を置換するには? - -印字不能文字を置換するには、まずその文字のアスキーコードを知らなければなりま -せん。exコマンド":ascii"またはノーマルモードコマンド"ga"を使ってカーソル下の -文字のアスキーコードを知ることができます。 - -CTRL-Vに続けて10進の数字1-255(最初に0をつけてばならない)またはxと16進の数字 -00-FF、または8進の数字0-0377(最初に0をつける)またはuと16進の数字0-FFFFまたは -Uと16進の数字0-7FFFFFFFを入力すれば、印字不能文字を入力することができます。 - -別の方法としては、":digraphs"を使って、全文字に対するダイグラフと共にそれら -の10進値プラスアルファを表示することです。CTRL-Kに続けて英数字を2つ(ダイグラフ -)を入力すれば印字不能文字を入力することができます。 - -さらなる情報については以下を参照してください。 > - - :help :ascii - :help i_CTRL-V - :help i_CTRL-V_digit - :help :digraphs -< - *faq-12.32* -12.32. バッファから重複した行を削除するには? - -次のユーザー定義コマンドを使えばバッファから重複した行を全て削除することができ -ます: > - - :command -range=% Uniq <line1>,<line2>g/^\%<<line2>l\(.*\)\n\1$/d -< -上のコマンドを.vimrcに追加し、":Uniq"を実行すると重複した行が削除されます。 - - *faq-12.33* -12.33. ファイル中の全ての行の前に行番号をつけるには? - -行番号をつけるにはいくつかの方法があります。以下はその例です: > - - :%s/^/\=line('.'). ' ' - :%s/^/\=strpart(line(".")." ", 0, 5) - :g/^/exec "s/^/".strpart(line(".")." ", 0, 4) -< -さらなる情報については以下を参照してください。 > - - :help sub-replace-special - :help line() - :help expr6 - :help strpart() - :help :execute - :help :global -< - *faq-12.34* -12.34. 2つの文字・単語・行を入れ換えるには? - -"xp"で2つの文字を入れ換えることができます。'x'でカーソル下の文字を削除し、'p' -で削除された文字をカーソル下の文字の後ろにペーストします。その結果、2つの文字 -が入れ換わります。 - -2つの単語を入れ換えるには"deep"とします(最初の単語の前の空白にカーソルをおいて -実行します)。 - -2つの行を入れ換えるには"ddp"とします。'dd'で現在行を削除し、'p'で現在行の後ろ -に削除された行をペーストします。その結果、2つの行が入れ換わります。 - -以上の操作はどれも無名レジスタ"の中身を変更します。 - -":m +"とすると無名レジスタの中身を変更することなく2つの行を入れ換えることがで -きます。 - -さらなる情報については以下を参照してください。 > - - :help x - :help p - :help dd - :help d - :help e - :help linewise-register - :help quotequote - :help :move -< - -============================================================================= -SECTION 13 - インサートモードでの補完 - - *faq-13.1* -13.1. インサートモードで単語や行を補完するには? - -インサートモードでCTRL-PまたはCTRL-Nを使うと単語を補完することができます。 -CTRL-Nは次の候補を前方から検索します。 -CTRL-Pは次の候補を後方から検索します。 - -インサートモードでCTRL-X CTRL-Lを使うと現在行のカーソル以前の文字列で始まる行 -を補完します。次のマッチする行を取得するにはCTRL-PまたはCTRL-Nを使います。イン -サートモードで単語を補完する方法・キーは他にもたくさんあります。 - -Vimは以下の要素の補完をサポートしています: > - - CTRL-X CTRL-F ファイル名 - CTRL-X CTRL-L 行全体 - CTRL-X CTRL-D マクロ定義 (インクルードファイル中のものも) - CTRL-X CTRL-I カレントファイルとインクルードファイル - CTRL-X CTRL-K 辞書中の単語 - CTRL-X CTRL-T シソーラス中の単語 - CTRL-X CTRL-] タグ - CTRL-X CTRL-V Vimコマンドライン -< -さらなる情報については以下を参照してください > - - :help 24.3 - :help ins-completion -< - *faq-13.2* -13.2. インサートモードでファイル名を補完するには? - -インサートモードでCTRL-X CTRL-Fを使うとカレント行のカーソルの前の文字列で始ま -るファイル名を補完することができます。 - -さらなる情報については以下を参照してください > - - :help compl-filename -< - *faq-13.3* -13.3. インサートモードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 - 今補完した単語の後に現れる単語を補完するには? - -CTRL-X CTRL-NとCTRL-X CTRL-Pを使うと今補完した単語の後に続く単語を補完すること -ができます。 - -さらなる情報については以下を参照してください > - - :help i_CTRL-X_CTRL-P - :help i_CTRL-X_CTRL-N - :help ins-completion -< - -============================================================================= - *faq-14* -SECTION 14 - テキストの整形 - -14.1. 折り返された行の末尾に改行を挿入するには? - -'gq'コマンドを使うと段落を整形することができます。これは現在の'textwidth'の設 -定にしたがってテキストを整形します。 - -オペレータgqは移動コマンドと組み合わせて、テキストの範囲に対して実行できます。 -例: > - - gqgq - 現在行を整形する - gqap - 現在の段落を整形する - gq3j - 現在行と下3行を整形する -< -さらなる情報については以下を参照してください > - - :help gq - :help formatting - :help usr_25.txt - :help motion.txt -< - *faq-14.2* -14.2. 1行がn文字以下になるように長い行を整形するには? - -まず'textwidth'を望みの値に設定します: > - - set textwidth=70 -< -そして、'textwidth'で設定された長さで行を折り返すにはこうします > - - :g/./normal gqq -< -さらなる情報については以下を参照してください > - - :help gq -< - *faq-14.3* -14.3. 短い行を連結して段落を形成するには? - -まず、'textwidth'を大きな値に設定します: > - - :set textwidth=99999 -< -続いて、以下のコマンドで短い行を連結して段落を形成します: > - - 1GgqG -< -このコマンドはファイル全体に作用します。指定した範囲内の全段落に対して整形を行 -うにはこうします: > - - :'a,'bg/\S/normal gq} -< -さらなる情報については以下を参照してください > - - :help gq - :help G - :help gqq -< - *faq-14.4* -14.4. 箇条書きや番号つきリストを整形するには? - -'formatoptions'によって箇条書きや番号つきリストを整形するように設定することが -できます。例えば、以下のフォーマットのリストを整形することができます: - - - this is a test. this is a test. this is a test. this is a test. - this is a test. - -これがこのような形式になります。 - - - this is a test. this is a test. this is a test. this is a test. - this is a test. - -'formatoptions'に'n'フラグをつけると、テキストの桁をそろえることができます。 > - - :set fo+=n -< -このオプションを設定してテキストを整形すると、Vimは番号つきリストを認識しま -す。このオプションを機能させるためには、'autoindent'をセットしなければなりませ -ん。 - -さらなる情報については以下を参照してください > - - :help 'formatoptions' - :help fo-table -< - *faq-14.5* -14.5. インサートモードで行をインデントするには? - -インサートモードでCTRL-Tを押すと現在行の行頭にshiftwidth分のインデントを挿入す -ることができます。インサートモードでCTRL-Dを押すと現在行の行頭のshiftwidth分の -インデントを削除することができます。また、CTRL-O >>とCTRL-O <<でもインサートモ -ード中に現在行をインデントすることができます。 - -さらなる情報については以下を参照してください > - - :help i_CTRL-T - :help i_CTRL-D - :help i_0_CTRL-D - :help i_CTRL-O - :help >> - :help << -< - *faq-14.6* -14.6. ファイル全体を整形・インデントするには? - -gg=Gでファイル全体を整形・インデントすることができます。ここで、 > - - gg - ファイルの先頭に移動 - = - インデントを適用 - G - ファイルの末尾まで -< -という意味になります。 -さらなる情報については以下を参照してください > - - :help gg - :help = - :help G - :help 'formatprg' - :help C-indenting -< - *faq-14.7* -14.7. 現在のファイルのインデントを増やす/減らすには? - -'>>'と'<<'で現在行のインデントを増やしたり減らすことができます。 - -さらなる情報については以下を参照してください > - - :help shift-left-right - :help >> - :help << - :help 'shiftwidth' -< - *faq-14.8* -14.8. ブロックまたは行のグループをインデントするには? - -ビジュアルモードで行を選択して>または<を押すと選択した行をインデント・アンイ -ンデントすることができます。次のexコマンドを使っても行をインデントすることがで -きます > - - :10,20> -< -さらなる情報については以下を参照してください > - - :help shift-left-right - :help v_> - :help v_< - :help :< - :help :> -< - *faq-14.9* -14.9. >または<キーで行をインデントすると、'tabstop'で設定した値でなく、標準的 - なタブストップ値の8が使われます。なぜですか? - -オペレータ">"でインデントしたとき挿入されるスペースの数は'shiftwidth'オプショ -ンで決まります。'tabstop'の設定はインデントには適用されません。インデントで挿 -入されるスペースの数を変更するには、こうします: > - - :set shiftwidth=4 -< -さらなる情報については以下を参照してください > - - :help 'shiftwidth' - :help >> - :help 'softtabstop' -< - *faq-14.10* -14.10. オートインデントを無効にするには? - -デフォルトではオートインデントは無効になっています。設定ファイル(.vimrc, -.gvimrc)のインデントに関する設定を確認してください。":filetype indent on"が行 -われていないことを確かめてください。もし行われていたなら、これを削除してくださ -い。また、好みに応じて'autoindent', 'smartindent', 'cindent', 'indentexpr'の値 -を確かめ、これらをオフにしてもよいでしょう。 - -さらなる情報については以下を参照してください > - - :help :filetype-indent-off - :help 'autoindent' - :help 'smartindent' - :help 'cindent' - :help 'indentexpr' -< - *faq-14.11* -14.11. メールを編集するときは自動的に'textwidth'オプションをある値にするように - するには? - -'FileType'オートコマンドを使えば'textwidth'を設定することができます: > - - autocmd FileType mail set tw=<your_value> -< -さらなる情報については以下を参照してください > - - :help :autocmd - :help FileType - :help usr_43.txt -< - *faq-14.12* -14.12. 自動的に改行を挿入させることはできますか? - -できます。'textwidth'を好きな行の長さに設定します。すると新しい行を挿入すると -きに自動的に改行が挿入されます。例: > - - :set textwidth=75 -< -さらなる情報については以下を参照してください > - - :help textwidth - :help ins-textwidth - :help 'formatoptions' - :help fo-table - :help formatting -< - *faq-14.13* -14.13. ファイル中に^Mという記号がたくさん表示されます。'fileformat'を'dos'にし - たり'unix'にしたり'mac'にしたりしてみましたが、改善できません。これらの - 記号を表示させなくするには? - -ファイルを読み込むとき、そのファイルのフォーマットは以下のようにして決定されま -す: - -- 全ての行が改行文字(<NL>)で終わっていればファイルフォーマットは'unix'です。 -- 全ての行がキャリッジリターン文字(<CR>)に続く改行文字(<NL>)で終わっていれば - ファイルフォーマットは'dos'です。 -- 全ての行がキャリッジリターン文字(<CR>)で終わっていればファイルフォーマットは - 'mac'です。 - -一部の行が<CR>で終わっていて、一部の行が<CR>に続く<NL>で終わっているとき、ファ -イルフォーマットは'unix'になります。 - -カレントファイルのフォーマットを変更するには、'fileformat'を変更し、ファイルを -保存します: > - - :set fileformat=dos - :w -< -カレントファイルのフォーマットを表示するにはこうします > - - :set fileformat? -< -以上の動作は'fileformats'によっても変わります。次のコマンドを試してみてくださ -い: > -さらなる情報については以下を参照してください > - - :help 'fileformats' - :help 'fileformat' - :help file-formats - :help DOS-format-write - :help Unix-format-write - :help Mac-format-write - :help dos-file-formats - :help 23.1 -< - *faq-14.14* -14.14. 他のアプリケーションからVimのバッファへテキストを貼り付けたとき、挿入さ - れたテキストの桁(インデント)が狂ってしまいます。これを直すには? - -テキストのインデントが狂うのはインデントに関する様々なオプション(autoindent, -smartindent, textwidth)によります。テキストをVimに貼り付ける前に'paste'をセッ -トしてください: > - - :set paste -< -テキストをペーストしたらこのオプションをオフにします: > - - :set paste! -< -レジスタ*によってクリップボードを使用できる場合はCTRL-R CTRL-O *とするとインデ -ントなしでテキストを貼り付けることができます。 - -さらなる情報については以下を参照してください > - - :help 'paste' - :help 'pastetoggle' - :help i_CTRL-R_CTRL_O - :help clipboard - :help xterm-clipboard - :help gui-clipboard -< - *faq-14.15* -14.15. 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきらない - とき、まったく何も表示されません。折り返された行の代わりに'@'という記号 - で始まる空の行が表示されます。行が収まるように画面をスクロールすると'@' - は消え、行が表示されるようになります。この挙動の設定はどうやるのですか? - -'display'オプションを'lastline'に設定すると、'@'を表示する代わりに可能な限り最 -後の行を表示するようになります。 > - - :set display=lastline -< -さらなる情報については以下を参照してください > - - :help 'display' -< - *faq-14.16* -14.16. ファイル中の全てのタブ文字をスペースに変換するには? - -":retab"を使うとカレントファイル中の全てのタブ文字を'expandtab'と'tabstop'の設 -定にしたがって変換することができます。例えば、全てのタブをスペースに変換するに -はこのようにします > - - :set expandtab - :retab -< -さらなる情報については以下を参照してください > - - :help :retab - :help 'expandtab' - :help 'tabstop' - :help 25.3 -< - *faq-14.17* -14.17. 後でワードプロセッサに送るテキストを編集するためのオプションは? - -後でワードプロセッサに送るテキストを編集するためには以下のオプションを設定する -ことができます: > - - :set wrap - :set linebreak - :set textwidth=0 - :set showbreak=>>> -< -'gk'と'gj'を使うと画面上の行(物理行)単位で上下に移動できます。 -さらなる情報については以下を参照してください > - - :help 'wrap' - :help 'linebreak' - :help 'textwidth' - :help 'showbreak' - :help gk - :help gj -< - -============================================================================= - *faq-15* -SECTION 15 - ビジュアルモード - - *faq-15.1* -15.1. 矩形範囲をコピーするには? - -矩形選択モードを使えば矩形範囲をコピーすることができます。矩形選択モードを開始 -するにはCTRL-Vキーを押します。移動コマンドを使ってカーソルを動かし、yを押すと -選択したテキストがヤンクされます。 - -CTRL-Vが期待通りに機能しない場合は、スクリプトmswin.vimによってこの機能が -CTRL-Qにマップされているかもしれません。Windowsマシン上では他のプログラムに共 -通のショートカットを真似するため、しばしばvimrcによってこのスクリプトがsource -されています。 - -さらなる情報については以下を参照してください > - - :help 04.4 - :help blockwise-visual - :help visual-mode - :help Q_vi -< - *faq-15.2* -15.2. ファイルの特定の列を削除・変更するには? - -矩形選択モードを使えば特定の列を選択してオペレータコマンド(変更・削除・コピー) -を適用することができます。 - -さらなる情報については以下を参照してください > - - :help visual-block - :help visual-operators -< - *faq-15.3* -15.3. ビジュアル選択した行に対してexコマンドを適用するには? - -ビジュアルモードで行を選択すると、レジスタ<が選択範囲の開始位置にセットされ、 -レジスタ>が選択範囲の終端にセットされます。これらのレジスタを使えばexコマンド -の範囲を指定できます。行をビジュアル選択してから":"を押すとコマンドモードに移 -行します。自動的に選択範囲を示す'<,'>が挿入されます。選択範囲に対してどんなex -コマンドでも実行することができます。 - -さらなる情報については以下を参照してください > - - :help v_: - :help '< - :help '> -< - *faq-15.4* -15.4. 矩形選択した範囲に対してexコマンドを適用するには? - -exコマンドは全て行全体に対してのみ実行されます。テキストを矩形選択してexコマン -ドを実行しようとすると、(選択した列だけでなく)選択した行全体に対して実行されて -しまいます。http://vim.sourceforge.net から入手できるプラグインvis.vimを使えば -矩形範囲に対してexコマンドを適用することができます。 - -さらなる情報については以下を参照してください > - - :help cmdline-ranges - :help 10.3 - :help cmdline-lines -< - *faq-15.5* -15.5. ビジュアルモードでファイル全体を選択するには? - -ggVGでファイル全体をビジュアル選択することができます。 > - - gg - ファイルの先頭へ移動 - V - 行単位ビジュアル選択を開始 - G - ファイルの末尾へ移動 -< -さらなる情報については以下を参照してください > - - :help gg - :help linewise-visual - :help G -< - *faq-15.6* -15.6. ビジュアル選択してから>キーを押してインデントすると、選択が解除されま - す。この範囲に対して操作を続けるため選択したままにするには?(または)最後 - に選択された範囲を再選択するには? - -'gv'で最後に選択された範囲を再選択できます。またマーク'<と'>を使うと最後に選択 -された範囲の開始位置と終端に移動することができます。 - -さらなる情報については以下を参照してください > - - :help gv - :help '< - :help '> -< - *faq-15.7* -15.7. ビジュアル選択した範囲の先頭/末尾へ移動するには? - -(ビジュアルモードにおいて)'o'コマンドでビジュアル選択した範囲の先頭/末尾へ移動 -できます。 - -さらなる情報については以下を参照してください > - - :help v_o -< - *faq-15.8* -15.8. マウスでテキストを選択してからexコマンドを実行しようと:キーを押すと選択 - された範囲が文字:で置換されてしまいます。マウスで選択したときもビジュア - ル選択したときのようにテキストに対してexコマンドを実行するには? - -これは'selectmode'でビジュアルモードでなく選択モードを使うように設定していると -き起こります。このオプションの値を確認してください: > - - :set selectmode? -< -このモードは選択モードといい、ビジュアルモードに似ています。"behave mswin"コマ -ンドを使うと、このオプションも自動的にセットされます。選択モードはビジュアルモ -ードと同じように見えますが、MS-Windowsの選択モードに似ています。 - -さらなる情報については以下を参照してください > - - :help Select-mode - :help 'selectmode' - :help 9.4 - :help :behave -< - *faq-15.9* -15.9. マウスでテキストを選択するとビジュアルモードでなく選択モードに入ってしま - います。なぜですか? - -マウスでテキストを選択したとき選択モードになるかどうかは'selectmode'オプション -によって決まります。ビジュアルモードが始まるようにするには、'selectmode'から -'mouse'の値を除きます: > - - :set selectmode-=mouse -< -デフォルトでは'selectmode'は空になっていて、常にビジュアルモードが使われるよう -になっています。 - -さらなる情報については以下を参照してください > - - :help 'selectmode' - :help Select-mode - :help :behave -< - *faq-15.10* -15.10. 最後にコピー/ペーストされたテキストをビジュアル選択するには? - -マーク'['と']を使うと最後にコピー/ペーストされたテキストを選択することができ -ます。マーク'[は最後に変更/ヤンクされたテキストの先頭にセットされ、']はその末 -尾にセットされます。この範囲をビジュアル選択するには、'[v']とします。 - -さらなる情報については以下を参照してください > - - :help '[ - :help '] - :help `a - :help v -< - -============================================================================= - *faq-16* -SECTION 16 - コマンドラインモード - - *faq-16.1* -16.1. コマンドモードまたはexコマンドモードでカレントファイル名を使うには? - -コマンドモードでは文字'%'がカレントファイルの名前を表します。いくつかのコマン -ドにおいてはファイル名を取得するためにexpand("%")を使わねばなりません: > - - :!perl % -< -さらなる情報については以下を参照してください。 > - - :help :_% - :help cmdline-special - :help expand() -< - *faq-16.2* -16.2. Vimのコマンドラインで効率的にテキストを編集するには? - -Vimのコマンドラインテキストを編集するのにコマンドラインウィンドウを使うことが -できます。コマンドラインウィンドウを開くにはノーマルモードで"q:"とします。コマ -ンドラインモード中からはCTRL-Fを使います。このウィンドウにはコマンドラインの履 -歴が表示されます。通常のVimのキー・コマンドを使って以前の・新しいコマンドライ -ンを編集することができます。コマンドラインを実行するにはエンター/リターンキー -を押します。 - -同様に、検索履歴を"q/"と"q?"で編集することができます。 - -さらなる情報については以下を参照してください。 > - - :help cmdline-window -< - *faq-16.3* -16.3. ViモードからExモードに移行するには? - -QでViモードからExモードに移行できます。ExモードからViモードに移行するには:viを -使います。 - -さらなる情報については以下を参照してください。 > - - :help Q - :help gQ - :help Ex-mode - :help :vi -< - *faq-16.4* -16.4. exコマンドの出力をバッファにコピーするには? - -exコマンドの出力をバッファにコピーするには、まずそのコマンドの出力をレジスタに -入れます。":redir"で出力をレジスタに入れることができます。例 > - - :redir @a - :g/HelloWord/p - :redir END -< -するとレジスタ'a'がexコマンド"g/HelloWord/p"の出力を保持します。ここでレジスタ -'a'の中身をバッファにペーストすることができます。'redir'を使ってexコマンドの出 -力をファイルに送ったり、追加することもできます。 - -":global"の前に":silent"を付けると、その行が画面に表示されるのを避けることがで -きます。 - -exコマンドの出力をファイルにリダイレクトするには、次の一連のコマンドを使うこと -ができます: > - - :redir > myfile - :g/HelloWord/p - :redir END -< -さらなる情報については以下を参照してください。 > - - :help :redir - :help :silent -< - *faq-16.5* -16.5. コマンドモードでファイル名を補完しようとタブキーを押します。マッチするフ - ァイル名が複数ある時、Vimは最初にマッチするファイル名を補完し、マッチし - たファイル名全てのリストを表示します。マッチしたファイル名全てを表示する - だけで、最初の候補を補完しないようにするには? - -'wildmode'を設定すればコマンドモードでのファイル名補完をカスタマイズすること -ができます。この場合は'wildmode'を'list'にすればよいでしょう: > - - :set wildmode=list -< -さらなる情報については以下を参照してください。 > - - :help 'wildmode' -< - *faq-16.6* -16.6. バッファからコマンドラインにテキストをコピーしたり、コマンドラインからバ - ッファにテキストをコピーするには? - -バッファからコマンドラインにテキストをコピーするには、バッファからテキストをヤ -ンクした後にコマンドラインでCtrl-R 0を押せばペーストすることができます。また、 -CTRL-R <register>を使って特定のレジスタにヤンクしてからコマンドラインにペース -トすることもできます。CTRL-R CTRL-Wを使うとカーソル下の単語をコマンドラインに -ペーストすることができます。 - -コマンドラインからバッファにテキストをコピーするには、":pとしてレジスタ:の中身 -をペーストすればできます。最後に実行されたコマンドラインがレジスタ:に保存され -ています。 - -コマンドラインへテキストをコピー&ペーストする別の方法は、ノーマルモードでq:を -押すかまたはコマンドラインモードでCTRL-Fを押してコマンドラインウィンドウを開く -ことです。このコマンドラインウィンドウではVimの全てのコマンドを使ってコマンド -ラインを編集することができます。 - -さらなる情報については以下を参照してください。 > - - :help c_CTRL-R - :help quote_: - :help cmdline-window -< - *faq-16.7* -16.7. あるコマンドを実行することなくコマンド履歴に入れるには? - -あるコマンドを実行することなくコマンド履歴に入れるには、<Esc>キーを押してその -コマンドをキャンセルします。 - -さらなる情報については以下を参照してください。 > - - :help c_<Esc> -< - *faq-16.8* -16.8. コマンドラインの高さを上げるには? - -'cmdheight'を変更すればコマンドラインの高さを上げることができます: > - - :set cmdheight=2 -< -さらなる情報については以下を参照してください。 > - - :help 'cmdheight' - :help hit-enter - :help 05.7 -< - -============================================================================= - *faq-17* -SECTION 17 - VIMINFO - *faq-17.1* - -17.1. Vimを起動したときviminfoファイルに不正な文字があるとエラーメッセージが出 - ます。このメッセージを出なくさせるには? - -$HOME/.viminfoまたは$HOME/_viminfoファイルを削除すればこのメッセージは出なくな -ります。 - -さらなる情報については以下を参照してください。 > - - :help viminfo-errors - :help viminfo-file-name - :help viminfo - :help 21.3 -< - *faq-17.2* -17.2. viminfo機能を無効にするには? - -デフォルトではviminfo機能は無効になっています。もしシステムレベルのvimrcによっ -てviminfo機能が有効化されているなら、ユーザーのローカルな.vimrcで'viminfo'に空 -文字列を設定すれば、viminfo機能が無効になります: > - - :set viminfo="" -< -さらなる情報については以下を参照してください。 > - - :help 'viminfo' -< - *faq-17.3* -17.3. Vimのセッションをまたいでマークを保存し、使用するには? - -viminfoを使えばVimのセッションをまたいでマークを保存し、復元することができま -す。viminfoファイルを使うには'viminfo'オプションが空でないことを確かめてくださ -い。Vimのマークを保存し、復元するには、'viminfo'オプションに'f'フラグが入って -いないか、'f'に対する値が0より大きくなっていなければなりません。 - -さらなる情報については以下を参照してください。 > - - :help 21.3 - :help viminfo - :help 'viminfo' - :help :wviminfo - :help :rviminfo -< - -============================================================================= - *faq-18* -SECTION 18 - リモート編集 - - *faq-18.1* -18.1. 既に起動しているgvimでファイルを開くには? Vim 5.xのOpenWithVim.exeと - SendToVim.exeはどうなりました? - -Vim6からOpenWithVim.exeとSendToVim.exeユーティリティのOLE版はクライアント-サー -バ機能によってとって替わられました。ファイルj.txtを既に起動しているgvim(MyVim) -で開くにはこのようにします: > - - $ gvim --servername MyVim --remote-silent j.txt -< -現在起動しているVim全てのサーバ名をリストするにはこうします: > - - $ vim --serverlist -< -クライアント-サーバ機能についてのさらなる情報は以下を参照してください。 > - - :help client-server -< - *faq-18.2* -18.2. vimサーバに全てのバッファをディスクに保存するようなコマンドを送るには? - -それにはVimのリモートサーバ機能を使うことができます: > - - $ gvim --servername myVIM --remote-send "<C-\><C-N>:wall<CR>" -< -さらなる情報については以下を参照してください。 > - - :help client-server - :help CTRL-\_CTRL-N - :help :wall -< - *faq-18.3* -18.3. Vimのリモートサーバ機能についてのドキュメントはどこで手に入りますか? - -Vimのリモートサーバ機能についての情報はこれを読めば得られます > - - :help client-server -< - -============================================================================= - *faq-19* -SECTION 19 - オプション - - *faq-19.1* -19.1. Vimを設定する簡単な方法は? - -":options"でオプションウィンドウを開くことができます: > - - :options -< -このウィンドウで全オプションを見て、設定することができます。 - -さらなる情報については以下を参照してください。 > - - :help :options -< - *faq-19.2* -19.2. オプションの値をトグルするには? - -オプションの前に"inv"をつけると、その値をトグルすることができます: > - - :set invignorecase - :set invhlsearch -< -オプションの後ろに"!"をつけてもその値をトグルすることができます: > - - :set ignorecase! - :set hlsearch! -< -さらなる情報については以下を参照してください。 > - - :help set-option -< - *faq-19.3* -19.3. 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプションを設定 - するには? - -":setlocal"を使うと現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオ -プションを設定できます: > - - :setlocal textwidth=70 -< -全てのオプションがローカルな値を持つわけではないことに注意してください。そのオ -プションがローカルな値を持てる場合だけ、":setlocal"でバッファ/ウィンドウにロ -ーカルに設定できます。 - -また、次のコマンドでもオプションをローカルに設定できます: > - - :let &l:{option-name} = <value> -< - *faq-19.4* -19.4. オプションの値にスペースを含めるには? - -オプション値にスペースを含めるには、スペースをエスケープしなければなりません。 -例: > - - :set tags=tags\ /usr/tags -< -さらなる情報については以下を参照してください。 > - - :help option-backslash -< - *faq-19.5* -19.5. オプション設定をファイルに埋め込むには? - -モードラインを使えばオプション設定をファイル中に埋め込むことができます。例え -ば、Cのファイルでファイルの先頭または末尾に次の行を埋め込むことができます: > - - /* vim:sw=4: */ -< -こうするとそのCファイルを編集するとき'shiftwidth'が4に設定されます。これが機能 -するためには、'modeline'オプションをセットしなければなりません。デフォルトで -'modeline'は設定されています。'modelines'はチェックされる行数を指定します。 - -さらなる情報については以下を参照してください。 > - - :help 21.6 - :help modeline - :help auto-setting - :help 'modeline' - :help 'modelines' -< - *faq-19.6* -19.6. ファイル中の全ての行の行番号を表示するには? - -'number'オプションをセットすれば、全行に対して行番号が表示されます。 > - - :set number -< -さらなる情報については以下を参照してください。 > - - :help 'number' -< - *faq-19.7* -19.7. 'number'オプションで表示される行番号の幅を変えるには? - -'number'オプションで表示される行番号の幅はVimのソース中にハードコードされてい -ます。なにかオプションを設定することによってこの幅を変更することは不可能です。 - -行番号の幅を変えるオプションの要望とパッチはVimのTODOリスト中にあります: > - - "Add an option to set the width of the 'number' column. Eight - positions is often more than needed. Or adjust the width to the length - of the file? - Add patch that adds 'numberlen' option. (James Harvey) - Other patch with min and max from Emmanuel Renieris (2002 Jul 24) - Other patch without an option by Gilles Roy (2002 Jul 25)" -< -訳註: Vim7でオプション'numberwidth'が導入された。 - - *faq-19.8* -19.8. スペース、タブ、改行などの不可視文字を表示するには? - -'list'オプションをセットすれば、ファイル中の不可視文字を表示することができま -す。 > - - :set list -< -このオプションをセットすると、スペース、タブ、改行、行末のスペース、折り返され -た行を表示することができます。 - -不可視文字を表示しなくするには(これがデフォルトです)、'list'をオフにします: > - - :set nolist - (or) - :set list! -< -":set list!"とすると現在の'list'の設定をトグルします。 - -'listchars'オプションを変更すれば表示される不可視文字とその表示のされかたを設 -定することができます。例えば、次のコマンドは行末のスペースを'.'で表示するよう -にします。 > - - :set listchars=trail:. -< -さらなる情報については以下を参照してください。 > - - :help 'listchars' - :help 'list' -< - *faq-19.9* -19.9. 常に現在行と桁番号を表示するようにするには? - -'ruler'をセットすれば現在の行と桁番号をステータスラインに表示するようになりま -す: > - - :set ruler -< -さらなる情報については以下を参照してください。 > - - :help 'ruler' -< - *faq-19.10* -19.10. 現在のモードを表示するようにするには? - -'showmode'オプションをセットすれば現在のVimのモードを表示するようになります。 -インサート、上書き、ビジュアルモードにおいて、最後の行に現在のモードを表示する -ようになります。 > - - :set showmode -< -さらなる情報については以下を参照してください。 > - - :help 'showmode' -< - *faq-19.11* -19.11. ステータスラインに入力途中のコマンドを表示するようにするには? - -'showcmd'をセットすればステータスラインに入力途中のコマンドを表示するようにな -ります: > - - :set showcmd -< -さらなる情報については以下を参照してください。 > - - :help 'showcmd' -< - *faq-19.12* -19.12. ステータスラインに異なる設定・値を表示するようにするには? - -'statusline'をセットすれば異なる設定・値をステータスラインに表示するようになり -ます。 - -さらなる情報については以下を参照してください。 > - - :help 'statusline' - :help 'laststatus' - :help 'rulerformat' - :help 'ruler' -< - *faq-19.13* -19.13. 常にステータスラインを表示するようにするには? - -'laststatus'を2にすれば常にステータスラインを表示するようになります。 > - - :set laststatus=2 -< -さらなる情報については以下を参照してください。 > - - :help 'laststatus' -< - *faq-19.14* -19.14. Vimを再起動しても設定が永続するようにするには? - -Vimを再起動しても設定が永続するようにするには、その設定を.vimrcまたは.gvimrcフ -ァイルに追加します。":mkvimrc"コマンドを使うと現在の設定をもとにvimrcファイル -を生成することもできます。 - -さらなる情報については以下を参照してください。 > - - :help save-settings - :help vimrc - :help gvimrc - :help vimrc-intro - :help :mkvimrc - :help initialization -< - *faq-19.15* -19.15. なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュする)の - ですか? - -これは通常の動作です。画面がフラッシュするのなら、ビジュアルベルが発生していま -す。そうでなければビープが鳴ります。 - -Vimは普通のエスケープとカーソルキーのシーケンスなどを区別するために、タイムア -ウトを必要とします。ノーマルモードでキーを押すと(インサートモードでさえも)、 -そしてそのキーがマッピングの始まりであると、Vimはマッピングの残りのシーケンス -が後に続くがどうかを見るために一定時間待ちます。もしタイムアウトする前にマッピ -ングシーケンスが最後まで入力されればそのキーシーケンスのマッピングが発動しま -す。もしマッピングを中断すれば、そのキーに割り当てられた普通の動作を実行しま -す。 - -例えば、":imap vvv Vim is great!!"と定義されたマッピングがあるとし、"vvv"をす -ばやく入力するとします。すると"Vim is great!!"がテキストに挿入されます。 -しかし"vv v"と入力すると、それがテキストに挿入されます。これは"vvv"をとても遅 -く入力したときも同じになります。ここで"とても遅く"とはタイムアウトオプションで -設定された値よりも長いという意味です。タイムアウトオプションを大きな値に設定す -ると、遅い回線上でファンクションキーを使うときに現れる問題を解決することができ -ます。 - -さらなる情報については以下を参照してください。 > - - :help ttimeout -< - *faq-19.16* -19.16. 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示するように - するには? - -'c'と's'で変更する文字を削除するのでなく'$'を表示するようにするには、 -'cpoptions'にフラグ$を追加します: > - - :set cpoptions+=$ -< -さらなる情報については以下を参照してください。 > - - :help 'cpoptions' -< - *faq-19.17* -19.17. 1回の":set"コマンドでオプションから複数のフラグを除去するには? - -1回の":set"コマンドでオプションから複数のフラグを除去するには、それらのフラグ -がオプション中に現れるのと正確に同じ順序でフラグを指定します。例えば、次のコマ -ンドで'formatoptions'からフラグ't'と'n'を除去しようとしたとします: > - - :set formatoptions-=tn -< -すると、'formatoptions'がこれらのフラグをこの'tn'という順序で保持していた場合 -のみ、フラグ't'と'n'が除去されます。そうでなければフラグは除去されません。 -この問題を避けるには、フラグを1つ1つ除去します: > - - :set formatoptions-=t formatoptions-=n -< -さらなる情報については以下を参照してください。 > - - :help :set-= -< - -============================================================================= - *faq-20* -SECTION 20 - キーマップ - - *faq-20.1* -20.1. キーがどうマップされているかを知るには? - -キーがどうマップされているかを知るには、次のコマンドを使うことができます: > - - :map <key> - :map! <key> -< -また、特定のモードでのマッピングを確認するには":cmap", ":nmap", ":vmap", -":imap", ":omap"などのコマンドを使うことができます。 - -さらなる情報については以下を参照してください。 > - - :help map-listing - :help map-overview -< - *faq-20.2* -20.2. ユーザ定義のキーマッピングをリストするには? - -ユーザ定義のキーマッピングをリストするにはこうします: > - - :map -< -さらなる情報については以下を参照してください。 > - - :help map-listing -< - *faq-20.3* -20.3. キーマップを解除するには? - -キーマップを解除するには":unmap"を使います: > - - :unmap <key> - :unmap! <key> -< -モード指定のマッピングには、":nunmap/:vunmap/:ounmap/:iunmap/:lunmap/:cunmap" -のどれかを使います。 - -次のコマンドではバッファローカルなマップを解除できません: > - - :unmap <key> -< -バッファローカルなキーマップを解除するには、キーワード<buffer>を使わなければ -なりません: > - - :unmap <buffer> <key> - :unmap! <buffer> <key> -< -さらなる情報については以下を参照してください。 > - - :help :unmap - :help map-modes - :help map-local - :help 'mapleader' -< - *faq-20.4* -20.4. キー<xxx>へマッピングができません。なにがまずいのですか? - -最初にそのキーがVimが渡っているかどうか確認してください。インサートモードで -CTRL-Vに続けてそのキーを押してください。そのキーに対応するキーコードが表示され -るでしょう。ここでそのキーコードが表示されたら、以下のコマンドでそのキーに対す -るマッピングを作成することができます: > - - :map <C-V><xxx> <your_command_to_be_mapped> -< -さらなる情報については以下を参照してください。 > - - :help map-keys-fails - :help :map-special-keys - :help key-codes -< - *faq-20.5* -20.5. テンキーにマップするには? - -最初にテンキーのキーがVimに渡っているかどうかを確認してください。そして次の -コマンドでテンキーのキーに対してマップすることができます: > - - :map <kSomething> <your_command> -< -ここで<kSomething>にはkHome, kEnd, kPageUp, kPageDown, kPlus, kMinus, -kDivide, kMultiply, kEnterなどが使えます。 - -さらなる情報については以下を参照してください。 > - - :help key-codes - :help terminal-options -< - *faq-20.6* -20.6. ビジュアルモードでのみ機能するマッピングを作成するには? - -特定のモード(ノーマル、コマンド、インサート、ビジュアル等)でのみ機能するマッピ -ングを作成することができます。ビジュアルモードでのみ機能するマッピングを作るに -は、":vmap"を使います: > - - :vmap <F3> <your mapping here> -< -さらなる情報については以下を参照してください。 > - - :help :vmap - :help map-modes - :help 40.1 -< - *faq-20.7* -20.7. Vimスクリプト中で、すでに使われているキーと衝突しないようにどのキーを - 使うべきかを知るには? - -Vimはキーボードのほとんどのキーを使います。mapに<leader>プリフィックスを使うと -Vimのキーと重ならないようにキーを定義することができます。例: > - - :map <leader>S <C-W>s - :map <leader>j <C-W>j - :map <leader>k <C-W>k -< -ここでデフォルトの<leader>はバックスラッシュ(\)で置き換えられます。そのためユ -ーザーはこれらのマッピングを発動させるのに > - \s - \j - \k -< -を押すことになります。マップリーダーを好きな物に変えることができます: > - - :let mapleader = "," -< -プラグインなどのスクリプトを書くときは、いつも以上に:mapでなく:noremapを使い、 -ユーザー定義マッピングの副作用を避けることが推奨されます。 - -さらなる情報については以下を参照してください。 > - - :help <Leader> - :help <LocalLeader> - :help write-plugin -< - *faq-20.8* -20.8. エスケープキーにマップするには? - -":map"コマンドでエスケープキーを他のキーにマップすることができます。例えば、次 -のコマンドはエスケープキーをCTRL-Oにマップします。 > - - :map <C-O> <Esc> -< - *faq-20.9* -20.9. あるキーをなにもしないようにマップするには? - -キーを<Nop>にマップすると、そのキーを押したときに何も起こらないようにすること -ができます。例えば、次のマッピングで<F7>が押されたとき何もしないようにすること -ができます。 > - - :map <F7> <Nop> - :map! <F7> <Nop> -< -さらなる情報については以下を参照してください。 > - - :help <Nop> - :help :map - :help :map! - :help map-modes -< - *faq-20.10* -20.10. Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブロッ - クをアンインデンとするようにしたいです。このようなマップを作るには? - この挙動はtextpadやVisual Studioなどに似ています。 - -以下のマッピングを使ってください: > - - :inoremap <S-Tab> <C-O><LT><LT> - :nnoremap <Tab> >> - :nnoremap <S-Tab> <LT><LT> - :vnoremap <Tab> > - :vnoremap <S-Tab> <LT> -< -注意: <S-Tab>のマッピングはVimが正しいキーシーケンスを受け取るときのみ機能しま -す。これはGUIのVimの場合はたいてい当てはまります。 - -さらなる情報については以下を参照してください。 > - - :help :inoremap - :help :nnoremap - :help :vnoremap - :help <S-Tab> - :help i_CTRL-O - :help >> - :help << - :help <LT> -< - *faq-20.11* -20.11. 私のマッピングにおいて<CR>のような特殊文字が認識されません。 - 特殊文字を認識するように設定するには? - -'cpoptions'の値を確認してください: > - - :set cpoptions? -< -このオプションがフラグ'<'を含んでいると、マッピングにおいて特殊文字が認識され -ません。'cpoptions'からフラグ'<'を除去してください: > - - :set cpo-=< -< -また、'compatible'の値も確認してください: > - - :se compatible? -< -'compatible'はオフになっていなければなりません: > - - :se nocompatible -< -さらなる情報については以下を参照してください。 > - - :help 'cpoptions' - :help 'compatible' -< - *faq-20.12* -20.12. マップ中で'|'を使って複数のコマンドを区切るには? - -マップ中で'|'を使うにはバックスラッシュ(\)で'|'をエスケープします。 > - - :map _l :!ls \| more<CR> -< -次のコマンドも試してみてください: > - - :map _l :!ls <bar> more<CR> -< -他の方法もあります。 - -さらなる情報については以下を参照してください。 > - - :help map_bar -< - *faq-20.13* -20.13. その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 - 入力があります。最初のものを入力したとき、2番目のが展開しないようにする - には? - -":map lhs rhs"でなく":noremap lhs rhs"を使ってください。短縮入力については -"noreabbrev lhs rhs"です。プリフィックス"nore"はマッピングや短縮入力が再帰的に -展開されるのを防ぎます。 - -さらなる情報については以下を参照してください。 > - - :help :noremap - :help :noreabbrev -< - *faq-20.14* -20.14. ときどきキーが処理されるのに1秒程度かかるのはなぜですか? - -そのキーに対してマッピングが定義されていないことを次のコマンドで確かめてくださ -い: > - - :map <key> -< -もしこのキーにマッピングが定義されていて、マッピングが1文字以上を含んでいるな -ら、Vimはそれがマッピングの一部かどうかを判定するために、次の文字が押されるの -を待ちます。例えば、"ab"というマッピングをしているとします。そして"a"を押すと -Vimは次のキーが押されるのを待ちます。次のキーが"b"ならvimはこのマッピングを実 -行します。そうでなければvimは"a"とその次のキーを通常どおりに処理します。 -'timeout'がオンになっていると(それがデフォルトです)、Vimは'timeoutlen'で指定さ -れた時間(デフォルトは1秒)だけ待ったのちタイムアウトします。 - -さらなる情報については以下を参照してください。 > - - :help map-typing - :help 'timeoutlen' - :help 'ttimeoutlen' - :help 'timeout' - :help 'ttimeout' - :help vt100-cursor-keys - :help slow-fast-terminal -< - *faq-20.15* -20.15. ビジュアル選択したテキストに対して外部コマンドを実行するマッピングを作 - るには? - -":vmap"コマンドでビジュアルモードでのマッピングを作ることができます。マップの -コマンドシーケンスの中で、最初にそのテキストをヤンクしなければなりません。ヤン -クされたテキストはレジスタ"で取得できます。そしてこのレジスタの中身を使って外 -部コマンドを実行することができます。例えば、外部コマンド"perldoc"を選択された -テキストに対して実行するには、次のマッピングを使います: > - - :vmap <F7> y:!exec "!perldoc '" . @" . "'"<CR> -< -選択されたテキストでなく、ビジュアルモード中でマッピングを実行したいなら次のコ -マンドを使います: > - - :vmap <F7> :<C-U>!perldoc <cword><CR> -< -このマッピングは選択されたテキストでなく、カーソル下の単語を使います。外部コマ -ンド"perldoc"を実行する前に<C-U>としてることに注意してください。この<C-U>はビ -ジュアルモードで選択されたテキストの範囲がコマンドラインに表示されているのを消 -すために使われています。<C-U>を使って選択範囲を消さないと、外部コマンドの出力 -が選択されたテキストを置き換えてしまいます。 - -さらなる情報については以下を参照してください。 > - - :help :vmap - :help quote_quote - :help let-register - :help c_CTRL-U - :help :!cmd -< - *faq-20.16* -20.16. <Tab>キーの機能を保ったままCtrl-Iにマッピングするには? - -Ctrl-Iと<Tab>は同じキーコードを生成します。そのため、VimはCtrl-Iと<Tab>を区別 -することができません。Ctrl-Iにマッピングすると、<Tab>キーにも同様にマッピング -されます(逆も同様です)。これと同じ制限がCtrl-[と<Esc>にも適用されます。 - -さらなる情報については以下を参照してください。 > - - :help keycodes -< - -============================================================================= - *faq-21* -SECTION 21 - 短縮入力 - - *faq-21.1* -21.1. スペリングを間違えた単語を自動的に修正するには? - -短縮入力を使ってスペリングを間違えた単語を自動的に修正することができます。例え -ば、次の短縮入力で"teh"を"the"に修正することができます: > - - :abbreviate teh the -< -インサートモード、上書きモード、コマンドラインモードで短縮入力が利用できます。 - -さらなる情報については以下を参照してください。 > - - :help 24.7 - :help abbreviations - :help Q_ab -< - *faq-21.2* -21.2. 複数行の短縮入力を作るには? - -キーコード"<CR>"を埋め込めば、複数行の短縮入力を作ることができます: > - - iabbrev #c --------------<CR>-- Date:<CR>--<CR>--------- -< -この短縮入力によって、#cとタイプすると次のテキストに展開されます: - --------------- --- Date: --- ---------- - -さらなる情報については以下を参照してください。 > - - :help abbreviations -< - *faq-21.3* -21.3. 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペースが入っ - てしまいます。これを防ぐには? - -短縮入力をCTRL-]を押して展開すれば、展開されたテキストの末尾に余計なスペースが -入るのを防ぐことができます。 - -別の方法としては、次の関数とコマンドを使うことができます: - -function! Eatchar(pat) - let c = nr2char(getchar()) - return (c =~ a:pat) ? '' : c -endfunction -command! -nargs=+ Iabbr execute "iabbr" <q-args> . "<C-R>=Eatchar('\\s')<CR>" - -こうしておいて、組み込みの"iabbrev"の代わりに新しいコマンド"Iabbr"を使って短縮 -入力を定義します。このコマンドを使うと、テキストを展開した後、次に入力された文 -字が捨てられます。 - -さらなる情報については以下を参照してください。 > - - :help abbreviations -< - *faq-21.4* -21.4. 現在の日付・時刻を挿入するには? - -strftime()を使えば現在の日付・時刻のタイムスタンプを挿入することができます。例 -えば、次の短縮入力を使います: > - - iabbrev dts <C-R>=strftime("%y/%m/%d %H:%M")<CR> -< -この短縮入力を使うと、インサートモードでdtsと入力するとそれがタイムスタンプに -展開されます。 - -この短縮入力の別の形を以下に列挙します: > - - iabbrev mdyl <C-R>=strftime("%a %d %b %Y")<CR> - iabbrev mdys <C-R>=strftime("%y%m%d")<CR> - iabbrev mdyc <C-R>=strftime("%c")<CR> - iabbrev hml <C-R>=strftime("%d/%m/%y %H:%M:%S")<CR> - iabbrev hms <C-R>=strftime("%H:%M:%S")<CR> -< -さらなる情報については以下を参照してください。 > - - :help strftime() - :help i_CTRL-R -< - *faq-21.5* -21.5. インサートモードで短縮入力が展開されるのを防ぐには? - -短縮された単語の後にCTRL-Vを押してから次の文字を入力すれば、それが展開されるの -を防ぐことができます。 - -さらなる情報については以下を参照してください。 > - - :help abbreviations -< - -============================================================================= - *faq-22* -SECTION 22 - レコーディングと繰り返し - - *faq-22.1* -22.1. 編集操作(挿入、削除、ペースト等)を繰り返すには? - -'.'を使えば最後の編集操作を繰り返すことができます。これは挿入、削除、変更、ペ -ーストなどの単純な変更を繰り返します。 - -さらなる情報については以下を参照してください。 > - - :help 04.3 - :help single-repeat - :help Q_re -< - - *faq-22.2* -22.2. キーシーケンスを記録し、繰り返すには? - -ノーマルモードで'q'を使うとキーシーケンスを記録し、それをレジスタに保存するこ -とができます。例えば、ノーマルモードでqを押し、続けてレジスタ名{0-9a-bA-Z"}を -押すとレコーディングが始まります。レコーディングを終了するには、もう一度qを押 -します。記録されたキーシーケンスを再生するには、@に続けてレジスタ名を押しま -す。例. @a。 - -別の方法としてはコマンドライン引数"-w"をつけてVimを起動します。 > - - $ vim -w <file_name> -< -するとVimはこのセッション中にタイプされた文字全てを指定されたファイル -"file_name"に記録します。コマンドライン引数"-s"でそのファイルを指定すると、そ -れを再生することができます: > - - $ vim -s <file_name> -< -さらなる情報については以下を参照してください。 > - - :help 10.1 - :help recording - :help -w - :help -s -< - *faq-22.3* -22.3. 記録したキーシーケンスを編集するには? - -記録したキーシーケンスはレジスタに保存されます。そのレジスタの中身をバッファに -ペーストし、そのテキストを編集して最後レジスタにヤンクすることができます。 -また、":let"でもレジスタを修正することができます。例: > - - :let @a = "iHello World\<Esc>" -< -さらなる情報については以下を参照してください。 > - - :help recording - :help 10.1 - :help let-register - :help <> - :help 'cpoptions' -< - *faq-22.4* -22.4. 記録したキーシーケンスをファイルに保存するには? - -記録されたキーシーケンスはレジスタに保存されます。そのレジスタの中身をバッファ -にペーストすることができます。そしてそのバッファをファイルに保存します。ペース -トしたテキストを修正して再度レジスタにヤンクして記録したキーシーケンスを修正す -ることもできます。例えば、qa ..... qとしてキーシーケンスを記録したとします。 -記録したキーシーケンスはレジスタ'a'に保存されます。"apとするとレジスタ'a'の中 -身をペーストすることができます。 - -さらなる情報については以下を参照してください。 > - - :help recording - :help 10.1 -< - *faq-22.5* -22.5. レジスタ0にキーシーケンスを保存しています(つまり q0 .... q)。 - 記録したキーシーケンスの中でテキストをヤンクしています。一度そのキーシー - ケンスを再生すると、もうそれを再現することができません。 - -レジスタ0は最後のヤンクしたテキストを保持します。記録したキーシーケンス中でヤ -ンクが行われたとき、レジスタ0はそのテキストで上書きされます。そのためレジスタ -0に記録したキーシーケンスは失われます。何か他のレジスタを使わねばなりません。 - -さらなる情報については以下を参照してください。 > - - :help registers -< - -============================================================================= - *faq-23* -SECTION 23 - 自動コマンド - - *faq-23.1* -23.1. 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? - -自動コマンドFileChangedROを使えば、読み込み専用ファイルが修正されたときにコマ -ンドを実行できます。例えば、このイベントを使って読み込み専用ファイルをチェック -アウトすることができます: > - - :autocmd FileChangedRO * call MyCheckoutFunction() -< -さらなる情報については以下を参照してください。 > - - :help FileChangedRO -< - *faq-23.2* -23.2. あるバッファに入るときに毎回コマンドを実行するには? - -自動コマンドイベントBufEnterを使うと、あるバッファに入る度にコマンドを実行する -ことができます。例: > - - :autocmd BufEnter *.c set formatoptions=croqt -< -さらなる情報については以下を参照してください。 > - - :help BufEnter -< - - *faq-23.3* -23.3. あるウィンドウに入るときに毎回コマンドを実行するには? - -自動コマンドイベントWinEnterを使えば、あるウィンドウに入るときに度にコマンドを -実行することができます。例: > - - :autocmd WinEnter *.c call MyFunction() -< -さらなる情報については以下を参照してください。 > - - :help WinEnter -< - *faq-23.4* -23.4. autocmd中でその自動コマンドが実行されているファイルの名前やバッファ番号 - を知るには? - -特殊な単語<afile>または<abuf>を使えばautocmd中でその自動コマンドが実行されてい -るファイル名やバッファ番号を取得することができます。 - -さらなる情報については以下を参照してください。 > - - :help :<afile> - :help :<abuf> - :help :<amatch> -< - *faq-23.5* -23.5. Vimがフォーカスを失ったとき、変更されたバッファ全てを自動的に保存する - には? - -FocusLostイベントに対して自動コマンドを定義すれば、Vimがフォーカスを失う度に変 -更されたバッファ全てを保存することができます: > - - :autocmd FocusLost * wall -< -さらなる情報については以下を参照してください。 > - - :help FocusLost - :help :wall -< - *faq-23.6* -23.6. Vimを終了するときにクリーンアップ用の関数を実行するには? - -VimLeaveイベントを使えば、Vimが終了する直前に関数を実行することができます。 -例 > - - :autocmd VimLeave * call MyCleanupFunction() -< -さらなる情報については以下を参照してください。 > - - :help VimLeave -< - -============================================================================= - *faq-24* -SECTION 24 - 構文強調 - - *faq-24.1* -24.1. 構文強調をオン・オフにするには? - -デフォルトでは構文強調はオフにされています。構文強調をオンにするには次のコマン -ドのどれかを使います: > - - :syntax enable -< -または > - - :syntax on -< -構文強調を無効にするには、次のコマンドを使います: > - - :syntax off -< -さらなる情報については以下を参照してください。 > - - :help 06.1 - :help 06.4 - :help :syntax-enable - :help :syntax-on - :help :syn-clear -< - *faq-24.2* -24.2. 背景色と文字色を変えるには? - -背景色と文字色には強調グループ"Normal"が使われます。文字色・背景色を変える -には、強調グループ"Normal"を変更しなければなりません。例えば、背景色を青に、 -文字色を白にするには、次のようにします: > - - :highlight Normal ctermbg=blue ctermfg=white guibg=blue guifg=white -< -もしMotifまたはAthena版のGVimを使っているなら、.Xdefaultsファイル中の文字色と -背景色のリソース名を変更してもよいでしょう: > - - Vim.foreground: Black - Vim.backround: Wheat -< -また、コマンドライン引数"-foregroung"と"-background"を指定して文字色と背景色 -を指定することもできます。これらの引数はMotifとAthena版でだけサポートされてい -ます: > - - $ gvim -foreground Black -background Wheat -< -さらなる情報については以下を参照してください。 > - - :help :highlight - :help .Xdefaults - :help -gui -< - *faq-24.3* -24.3. 暗い/明るい背景色に合うように色を変えるには? - -'background'を'dark'か'light'に変えれば、それぞれ暗い/明るい背景に合うように -強調色を変えることができます: > - - :set background=dark -< -さらなる情報については以下を参照してください。 > - - :help 'background' - :help 6.2 -< - *faq-24.4* -24.4. ":set number"をしたときに表示される行番号の色を変えるには? - -行番号の表示には強調グループLineNrが使われます。現在設定されている色を表示する -にはこうします > - - :hi LineNr -< -この色を変えるには、強調グループLineNrを変更します。例: > - - :hi linenr guifg=red guibg=black -< -こうするとGVimでは黒い背景の上に赤い数字で表示されるようになります。 - -さらなる情報については以下を参照してください。 > - - :help :highlight -< - *faq-24.5* -24.5. ビジュアルモードで選択された範囲の背景色を変えるには? - -強調グループ'Visual'を変更すれば、ビジュアルモードで選択された範囲の色を変える -ことができます: > - - :highlight Visual guibg=red -< -さらなる情報については以下を参照してください。 > - - :help :highlight - :help hl-Visual -< - *faq-24.6* -24.6. オプション'list'で表示した特殊文字(タブ、行末の空白、行末など)に色をつけ - るには? - -強調グループ"NonText"と"SpecialKey"を変えれば'list'によって表示された特殊文字 -に色をつけることができます: > - - :highlight NonText guibg=red - :highlight SpecialKey guibg=green -< -オプション'listchars'中の"eol", "extend", "precedes"に対しては"NonText"が使わ -れます。"tab"と"trail"には"SpecialKey"が使われます。 - -さらなる情報については以下を参照してください。 > - - :help 'listchars' - :help hl-NonText - :help hl-SpecialKey -< - *faq-24.7* -24.7. 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? - -.vimrcや.gvimrc中で":colorscheme"を使えばカラースキームを指定することができま -す: > - - colorschme evening -< -さらなる情報については以下を参照してください。 > - - :help :colorscheme -< - *faq-24.8* -24.8. 正しく構文強調されません。ファイルの一部が強調されなかったり、間違って強 - 調されてしまいます。 - -Vimは構文強調する際にファイル全体をパースすることはしません。表示してされてい -る場所からパースが始まります。これによって多大な時間が節約できますが、ときどき -間違って色づけされることもあります。これを修正する単純な方法は、CTRL-Lを押して -画面を再描画することです。または少し上にスクロールしてから下に戻ってきます。 -このコマンドを使うこともできます: > - - :syntax sync fromstart -< -注意: これを実行すとスクリーンの描画が相当遅くなります。 - -さらなる情報については以下を参照してください。 > - - :help :syn-sync - :help :syn-sync-first -< - *faq-24.9* -24.9. 対応する括弧を強調する組み込みの関数はありますか? - -ありません。Vimには対応する括弧を強調する機能はありません。Charles Campbellが -作ったプラグインを試してみてもよいでしょう: > - - http://vim.sourceforge.net/tips/tip.php?tip_id=177 -< -対応する括弧には'%'キーを使えばジャンプできます。インサートモードで一時的に対 -応する括弧にジャンプするには'showmatch'をセットします。 - -訳註: Vim7からはmatchparen.vimが付属し、カーソルが括弧の上に乗ると、自動的に -訳註: 対応する括弧が強調されるようになった。 -訳註: :h matchparen - -さらなる情報については以下を参照してください。 > - - :help % - :help 'showmatch' - :help 'matchtime' - :help 'matchpairs' -< - *faq-24.10* -24.10. Cのコメントの構文強調をオフにするには? - -次のコマンドを使うとCのコメントの構文強調をオフにすることができます: > - - :highlight clear comment -< -さらなる情報については以下を参照してください。 > - - :help c-syntax -< - *faq-24.11* -24.11. Vimに付属する標準の構文ファイルに私自身の構文拡張を加えるには? - -あなたの拡張を追加する場合、Vimに付属の構文ファイルそのものを修正するべきでは -ありません。次のVimのバージョンをインストールしたとき、その変更が失われてしま -います。代わりに、~/.vim/after/syntaxディレクトリに元の構文ファイルと同名のフ -ァイルを作り、そこにあなたの拡張を加えるべきです。 - -さらなる情報については以下を参照してください。 > - - :help mysyntaxfile-add - :help 'runtimepath' -< - *faq-24.12* -24.12. Vimに付属の標準の構文ファイルを独自の構文ファイルで置き換えるには? - -元の構文ファイルと同名のファイルを作成し、ランタイムの構文ディレクトリに置けば -標準の構文ファイルに置き換えることができます。例えば、Unixシステムにおいて構文 -ファイルc.vimを置き換えるには、新しいc.vimを~/.vim/syntaxに置きます。 -MS-Windowsシステムにおいては新しい構文ファイルを$HOME/vimfiles/syntaxまたは -$VIM/vimfiles/syntaxディレクトリに置きます。 - -さらなる情報については以下を参照してください。 > - - :help mysyntaxfile-replace - :help 44.11 - :help mysyntaxfile -< - *faq-24.13* -24.13. 特定の桁以降の全ての文字を強調するには? - -":match"を使えば特定の桁以降の全ての文字を強調することができます: > - - :match Todo '\%>75v.\+' -< -これは75桁目以降の全ての文字を強調します。 - -さらなる情報については以下を参照してください。 > - - :help :match - :help /\%v - :help /\+ - :help /. -< - *faq-24.14* -24.14. ソースファイル(.c, .hなど)を構文強調つきでHTMLファイルに変換するには? - -2html.vimを使えばソースファイルを構文強調つきでHTMLファイルに変換することがで -きます。次のコマンドを実行してください: > - - :runtime! syntax/2html.vim -< -さらなる情報については以下を参照してください。 > - - :help convert-to-HTML -< - *faq-24.15* -24.15. 現在の強調グループ定義を全て表示するには? - -現在の強調グループ定義を全て表示するには":highlight"を(引数無しで)実行します。 - -さらなる情報については以下を参照してください。 > - - :help :highlight -< - -============================================================================= - *faq-25* -SECTION 25 - VIMスクリプトを書く - - *faq-25.1* -25.1. 読み込まれているスクリプトを全て表示するには? - -":scriptnames"を使えば読み込まれているスクリプトを全て表示することができ -ます: > - - :scriptnames -< -さらなる情報については以下を参照してください。 > - - :help :scriptnames -< - *faq-25.2* -25.2. Vimスクリプトをデバッグするには? - -VimはVimプラグインやスクリプトをデバッグするための原始的なデバッガを備えていま -す。このデバッガを使うとブレークポイントを設定したり、プラグインの関数をステッ -プ実行できます。 - -さらなる情報については以下を参照してください。 > - - :help debug-scripts - :help -D -< - *faq-25.3* -25.3. あるオプションを設定したスクリプト/プラグインを探すには? - -":verbose"を使えば最後にあるオプションを設定したプラグイン/スクリプトを探すこ -とができます。例: > - - :verbose set textwidth? -< -さらなる情報については以下を参照してください。 > - - :help :set-verbose - :help :verbose -< - *faq-25.4* -25.4. (おそらくスクリプトを実行中に)エラーやメッセージが出るのですが、すぐに消 - えてしまいます。このメッセージをもう一度表示するには? - -":messages"を使えば以前のメッセージを表示することができます。 > - - :messages -< -さらなる情報については以下を参照してください。 > - - :help :messages - :help :echoerr - :help :echomsg - :help message-history -< - *faq-25.5* -25.5. プラグイン固有の情報を保存し、Vimを再起動したときそれを復元するには? - -Vimは大文字で始まり、小文字を含まないグローバル変数を保存し、復元します。この -機能を有効化するには、'viminfo'がフラグ'!'を含んでいなければなりません。Vimは -これらの変数をviminfoファイルに保存します。 - -さらなる情報については以下を参照してください。 > - - :help 'viminfo' - :help viminfo-file - :help variables -< - *faq-25.6* -25.6. 関数の中からインサートモードを開始するには? - -":startinsert"を使えば関数の中からインサートモードを開始することができます。 - -さらなる情報については以下を参照してください。 > - - :help :startinsert -< - *faq-25.7* -25.7. 関数の中でカーソル位置を動かすには? - -関数cursor()を使えばカーソルを動かすことができます。 > - - call cursor(lnum, col) -< -次のコマンドを使ってもカーソル位置を変えることができます: > - - exe "normal! " . lnum . "G" . col . "|" -< -さらなる情報については以下を参照してください。 > - - :help cursor() - :help bar -< - *faq-25.8* -25.8. .vimrcファイルの中で環境変数の値をチェックするには? - -Vimスクリプト/関数の中で環境変数を使うには、環境変数名の前に'$'をつけます: > - - if $EDITOR == 'vi' - endif -< -さらなる情報については以下を参照してください。 > - - :help expr-env -< - *faq-25.9* -25.9. 環境変数が定義されているかどうかをチェックするには? - -exists()を使えば環境変数の存在をチェックすることができます。 > - - if exists("$MY_ENV_VAR") - endif -< -さらなる情報については以下を参照してください。 > - - :help exists() - :help expr-env -< - *faq-25.10* -25.10. Vimの組み込み関数を呼ぶには? - -":call"コマンドを使えばVimの組み込み関数を呼び出すことができます: > - - :call cursor(10,20) -< -":echo"を使えば関数の戻り値を表示することができます: > - - :echo char2nr('a') -< -":let"を使えば関数の戻り値を変数に代入することができます: > - - :let a = getline('.') -< -関数の戻り値をレジスタに保存するには、次のようにします: > - - :let @a = system('ls') -< -上のコマンドは'ls'コマンドの戻り値をレジスタ'a'に保存します。 - -訳註: 上のコマンドは外部プログラム'ls'の標準出力への出力をレジスタに保存する。 - -さらなる情報については以下を参照してください。 > - - :help :call - :help :echo - :help :let - :help :let-register - :help user-functions - :help usr_41.txt -< - *faq-25.11* -25.11. Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対して - ユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマンドがVim - の標準の機能を果たすようにするには? - -スクリプト中でノーマルモードコマンドを使うときは"normal!"を使えばよいでし -ょう。これはノーマルモードコマンドの標準の機能を使い、ユーザ定義マッピングは作 -用しません。 - -さらなる情報については以下を参照してください。 > - - :help :normal -< - *faq-25.12* -25.12. ビジュアルモードで現在選択されているテキストを変数やレジスタに入れるに - は? - -ビジュアルモードで選択されているテキストを変数に取得するには、そのテキストをレ -ジスタにヤンクし、その後そのレジスタの中身を変数に代入します: > - - :normal! gvy - :let myvar = @" -< -上のコマンドはビジュアルモードで選択されたテキストを変数"myvar"にコピーします。 - -次のコマンドを使うこともできます: > - - :normal! gv"*y -< -上のコマンドは、gvで最後にビジュアルモードで選択されたテキストを選択し、コマン -ドの残りの部分で選択されたテキストをレジスタ*(クリップボード)にコピーします。 -別の方法としては、'guioptions'にフラグ'a'をセットして、選択されたテキストを自 -動的にレジスタ*に入れるようにしてもよいでしょう。 -これをマップの一部分として実行するには、以下のようなコマンドを使います: > - - :vmap <F3> "*y:call ... -< -さらなる情報については以下を参照してください。 > - - :help gv - :help :normal - :help let-@ - :help quotestar - :help clipboard - :help registers -< - *faq-25.13* -25.13. 変数'myvar'にテキストが入っています。この変数を":s"中で使って'mytext' - というテキストを置換したいのですが、どうすればいいですか? - -"execute"コマンドを使えば変数を評価することができます: > - - :execute '%s/mytext/' . myvar . '/' -< -さらなる情報については以下を参照してください。 > - - :help :execute -< -置換コマンド中で変数を評価するには"\="を使うこともできます: > - - :%s/mytext/\=myvar/ -< -さらなる情報については以下を参照してください。 > - - :help sub-replace-special -< - *faq-25.14* -25.14. 変数"bno"がバッファ番号を保持しています。この変数を使って対応するバッフ - ァを開くには? - -":buffer"は変数名を受け付けません。このコマンドはバッファ番号かバッファ名のみ -を受け付けます。変数を評価して対応する値にするために":execute"を使わねばなりま -せん。例: > - - :execute "buffer " . bno -< -さらなる情報については以下を参照してください。 > - - :help :execute -< - *faq-25.15* -25.15. オプションの値を変数に保存するには? - -オプション名の前に'&'をつけると、"let"でそのオプションの値を変数に代入すること -ができます。例えば、オプション'textwidth'の値を変数"old_tw"に保存するには次の -コマンドを使います: > - - :let old_tw = &tw -< -その逆、つまり'textwidth'に"old_tw"に保存された値をセットするには次のコマンド -を使います: > - - :let &tw = old_tw -< -さらなる情報については以下を参照してください。 > - - :help expr-option - :help let-option -< - *faq-25.16* -25.16. 関数の中でテキストをコピーし、バッファに挿入しました。関数の中でそのテ - キストをインデントするには? - -次のコマンドを使えば、たった今挿入したテキストを整形することができます: > - - :normal '[='] -< -さらなる情報については以下を参照してください。 > - - :help '[ - :help '] - :help = - :help :normal -< - *faq-25.17* -25.17. Vimスクリプト中でカーソル下の文字を取得するには? - -getline()と文字列のインデクス[]を使います: > - - :echo getline(".")[col(".") - 1] -< -上のコマンドにおいてgetline(".")は現在行のテキストを返します。文字列のインデク -スは0から始まり、"string[index]"という記法で文字列中からインデクスを指定して1 -つの文字を取得できます。col(".")はカーソル位置の桁を返します。ここでは文字列中 -の目的の文字を取得するために調整されています。 - -別の方法としては、以下の一連のコマンドによってもカーソル下の文字を取得でき -ます: > - - normal! vy - let ch=@" -< -注意: 上のコマンドはマーク'<と'>を変更します。 - -さらなる情報については以下を参照してください。 > - - :help getline() - :help col() - :help expr-[] -< - *faq-25.18* -25.18. 拡張子を除いたカレントファイル名を取得するには? - -拡張子を除いたカレントファイル名を取得するにはこうします: > - - :echo expand("%:r") -< -いくつかのコマンドでは、ファイル名の修飾子を直接使うことができます: > - - :cd %:p:h - :!gcc -o %:r.o % -< -さらなる情報については以下を参照してください。 > - - :help filename-modifiers - :help expand() - :help cmdline-special - :help fnamemodify() -< - *faq-25.19* -25.19. カレントファイルのベース名(basename)を取得するには? - -ファイル名修飾子:tを使えばカレントファイルのベース名(basename)を取得することが -できます: > - - :echo expand("%:t") -< -さらなる情報については以下を参照してください。 > - - :help filename-modifiers -< - *faq-25.20* -25.20. 関数の結果をカレントバッファに挿入するには? - -インサートモードにおいて次のコマンドで関数の戻り値を挿入することができます: > - - <C-R>=MyFunc() -< -注意: これは関数の戻り値を挿入するだけです。 - -さらなる情報については以下を参照してください > - :help i_CTRL-R - :help i_CTRL-R_CTRL-R - :help i_CTRL-R_CTRL-O - :help expression -< - *faq-25.21* -25.21. 関数の中で外部プログラムを呼ぶには? - -関数の中で外部プログラムを呼ぶにはいくつかの方法があります。組み込み関数 -system()を使うと、外部コマンドを起動し、出力を取得することができます: > - - :let output = system("ls") -< -また、exコマンド"!"を使って外部コマンドを実行することもできます。 - -さらなる情報については以下を参照してください。 > - - :help system() - :help :! - :help 10.9 -< - *faq-25.22* -25.22. ":!"で実行したプログラムが返すステータス値を取得するには? - -組み込み変数v:shell_errorを使えば最後に実行したシェルコマンドが返すステータス -値を取得することができます。 - -さらなる情報については以下を参照してください。 > - - :help v:shell_error -< - *faq-25.23* -25.23. カレントバッファが変更されているかどうかを知るには? - -オプション'modified'の値を見ればカレントバッファが変更されているかどうかを知る -ことができます: > - - :set modified? -< -スクリプト中でも'modified'の値を知ることができます: > - - if &modified - echo "File is modified" - endif -< -さらなる情報については以下を参照してください。 > - - :help 'modified' -< - *faq-25.24* -25.24. スクリプト中でノーマルコマンドの中に改行文字を使いたいです。改行文字を - 指定するには? - -":execute"を使えばノーマルモードコマンド中で特殊文字を使うことができます: > - - :execute "normal \<CR>" - :execute "normal ixxx\<Esc>" -< -さらなる情報については以下を参照してください。 > - - :help :execute - :help expr-quote -< - *faq-25.25* -25.25. スクリプト中で長い行を次行に継続するには? - -スクリプト中で長い行を継続するには、次行の最初にバックスラッシュ("\")をつけま -す。例: > - :set comments=sr:/*,mb:*,el:*/, - \://, - \b:#, - \:%, - \n:>, - \fb:- -< -訳註: 原文には例が入っていなかったので:helpからコピペしてきた。 - -さらなる情報については以下を参照してください。 > - - :help line-continuation -< - *faq-25.26* -25.26. "execute 'echo Myfunc()'"として自作の関数を呼ぼうとすると、カーソルがカ - レントバッファの先頭に移動してしまいます。なぜ? - -":execute"は引数で指定されたノーマルコマンドを実行します。次のコマンドでは: > - - :execute "echo Myfunc()" -< -"echo Myfunc()"は0を返します。":execute"コマンドはノーマルモードコマンドの"0" -を実行します。これはカーソルをファイルの先頭に移動させます。関数を呼ぶには -":execute"でなく":call"を使ってください: > - - :call Myfunc() -< - -訳註: このQ&Aは間違っている? -訳註: :executeはexコマンドを実行する。 -訳註: 1番目のコマンドはMyfunc()を呼んでその戻り値をechoするはず。 - -さらなる情報については以下を参照してください。 > - - :help :call - :help :execute - :help :echo - :help user-functions - :help 41.5 - :help 41.6 -< - *faq-25.27* -25.27. レジスタの中身を実行するには? - -レジスタ(例えばレジスタ'a'とする)にVimのコマンドをヤンクしてある場合、そのレジ -スタの中身を次のコマンドで実行することができます: > - - :@a -< -または > - :exe @a -< - -さらなる情報については以下を参照してください。 > - - :help :@ -< - *faq-25.28* -25.28. 関数やマップを呼んだ後に'u'キーを押してアンドゥするとその関数/マップに - よってなされた変更全てをアンドゥします。なぜ? - -関数やマップを呼ぶと、その関数/マップによってなされた操作は1つの操作として扱 -われます。'u'を押して最後の操作をアンドゥすると、関数/マップによってなされた -変更は全て元に戻ります。 - -さらなる情報については以下を参照してください。 > - - :help undo-redo - :help map-undo -< - *faq-25.29* -25.29. s:つきで定義された関数(スクリプトローカル関数)を別のスクリプト/プラグ - インから呼ぶには? - -関数名へのプリフィックスs:は関数をスクリプトローカルにするために使われます。 -スクリプトローカル関数はそのスクリプト中からのみ呼ぶことができ、他のスクリプト -からは呼び出せません。他のプラグイン/スクリプトから呼び出せる関数を定義するに -は、s:をつけずに関数を定義します。 - -さらなる情報については以下を参照してください。 > - - :help script-variable - :help script-local - :help :scriptnames -< - *faq-25.30* -25.30. 読み込んだスクリプトをun-sourceするには?言い替えると、スクリプトを読み - 込んだことによって実行されたコマンドを全て戻すには? - -スクリプトを読み込んだことによって実行されたコマンドを全て戻すことはできませ -ん。 - -さらなる情報については以下を参照してください。 > - - :help :source -< - -============================================================================= - *faq-26* -SECTION 26 - プラグイン - - *faq-26.1* -26.1. ファイル形式ごとに異なるオプションを設定するには? - -ファイル形式別プラグインを作れば、ファイル形式ごとに異なるオプションを設定する -ことができます。まず最初に次のコマンドでファイル形式別プラグインを有効にしてく -ださい: > - - :filetype plugin on -< -ファイル形式別プラグインは、Vimでその形式のファイルを作成したり開く度に読み込 -まれるVimスクリプトです。例えば、Cプログラム(ファイル形式'c')を編集するとき -は常に'textwidth'を80にするには、次のファイルのどれかを作ります: > - - ~/.vim/ftplugin/c.vim (Unix) - %HOME%\vimfiles\ftplugin\c.vim (Windows) -< -そしてその中に次のテキストを書いておきます: > - - setlocal textwidth=80 -< -自動コマンドを使っても特定のファイル形式を編集するときに特定のオプションを設定 -することができます。例えば、*.txtファイルを編集するときだけ'textwidth'を75に設 -定するには次のコマンドを使います: > - - autocmd BufRead *.txt setlocal textwidth=80 -< -さらなる情報については以下を参照してください。 > - - :help filetype-plugin - :help add-filetype-plugin - :help autocmd - :help 40.3 -< - - *faq-26.2* -26.2. プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイルタ - イププラグインをダウンロードしました。Vimがこれらのファイルを読み込むように - するには、どこにコピーすればいいですか? - -ランタイムファイル(プラグイン、構文ファイル、インデントファイル、カラースキー -ム、ファイル形式別プラグインなど)は'runtimepath'で指定されたディレクトリのうち -どれかの下に置きます。'runtimepath'の現在の値を知るには次のコマンドを使います -: > - - :set runtimepath -< -Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになります。MS-Windowsシス -テムでは、通常これは$VIM\vimfilesまたは$HOME\vimfilesディレクトリになります。 -ランタイムファイルはその種類によって、ランタイムディレクトリ下の決まったディレ -クトリに置かねばなりません。そのディレクトリの名前は以下のとおりです: > - - colors/ - カラースキームファイル - compiler/ - コンパイラファイル - doc/ - ドキュメント - ftplugin/ - ファイル形式別プラグイン - indent/ - インデントスクリプト - keymap/ - キーマップファイル - lang/ - メニューの翻訳 - plugin/ - プラグインスクリプト - syntax/ - 構文ファイル - tutor/ - vimtutorのファイル -< -さらなる情報については以下を参照してください。 > - - :help your-runtime-dir - :help 'runtimepath' - :help :runtime -< - *faq-26.3* -26.3. 既存のファイル形式別プラグインを拡張するには? - -ディレクトリ$VIMRUNTIME/after/ftpluginまたは$VIMRUNTIME/ftpluginの下にファイル -を作ることによって、既存のファイル形式別プラグインを拡張することができます。 -そのファイルの名前は既存のファイル形式別プラグインの名前と同じにすべきです。 -この新しいファイルにあなたの拡張を書き加えます。 - -そのファイルをafter/ftpluginディレクトリに置くと、Vimはまず既存のファイルタイ -ププラグインを読み込み、その後にその新しいファイルを読み込みます。そのファイル -を$VIMRUNTIME/ftpluginディレクトリに置くと、Vimはまずその新しいファイルを読み -込み、その後に既存のファイル形式別プラグインを読み込みます。 - -さらなる情報については以下を参照してください。 > - - :help ftplugin-overrule - :help filetype-plugin - :help add-filetype-plugin - :help 'runtimepath' -< - *faq-26.4* -26.4. プラグインの読み込みをオフにするには? - -'loadplugins'をオフにすればプラグインを読み込まなくすることができます: > - - :set noloadplugins -< -コマンドライン引数"--noplugin"を指定してもプラグインの読み込みを止めさせること -ができます: > - - $ vim --noplugin -< -さらなる情報については以下を参照してください。 > - - :help 'loadplugins' - :help --noplugin - :help load-plugins -< - *faq-26.5* -26.5. ファイル形式別プラグインの読み込みをオフにするには? - -デフォルトではvimはファイル形式別プラグインを読み込みません。ファイル形式別プ -ラグインを読み込むように設定するには次のコマンドを使います: > - - filetype plugin on -< -ファイル形式別プラグインの読み込みをオフにするにはこうします: > - - filetype plugin off -< -さらなる情報については以下を参照してください。 > - - :help filetype-plugin-on - :help filetype-plugin-off - :help :filetype -< - *faq-26.6* -26.6. 全てのファイル形式に対し、グローバルのファイル形式別プラグインでなされる - 設定を上書きするには? - -ファイル形式イベントで引き起こされる自動コマンドを使います: > - - au Filetype * set formatoptions=xyz -< -これは少なくともあなたのvimrc中の"filetype on"以降に行わねばなりません。あなた -の"myfiletypefile"ファイル中で行うのがベストです。そうすればこれは必ず最後に実 -行されるようになります。 - -特定のファイル形式に対して設定を上書きしたいなら、~/.vim/after/ftpluginに元 -のファイルと同名のファイルを作ります。例えば、ファイル形式別プラグインc.vimの -設定を上書きするには、~/.vim/after/ftpluginにc.vimを作り、そこに好みの設定を書 -き込みます。 - -さらなる情報については以下を参照してください。 > - - :help ftplugin-overrule - :help ftplugins - :help myfiletypefile -< - *faq-26.7* -26.7. Vimのディレクトリブラウザプラグインを無効にするには? - -ディレクトリブラウザプラグインを無効にするには、次の行を.vimrcに加えます: > - - let loaded_explorer = 1 -< -さらなる情報については以下を参照してください。 > - - :help file-explorer -< - *faq-26.8* -26.8. 特定のパターンにマッチする名前のファイルや拡張子に応じてファイル形式オ - プションを設定するには? - -特定のパターンにマッチする名前のファイルに対しては、自動コマンドを使って -'filetype'を設定します。例えば、拡張子'.x'を持つファイル全てに対して -'filetype'を'c'にするには次の自動コマンドを使います: > - - autocmd! BufRead,BufNewFile *.x setfiletype c -< -よりよい方法は、filetype.vimファイルを~/.vimディレクトリ(または'runtimepath'で -指定されたディレクトリのどれか)に作ることです。そして次の行を書き加えます: > - - " my filetype file - if exists("did_load_filetypes") - finish - endif - augroup filetypedetect - au! BufRead,BufNewFile *.x setfiletype c - augroup END -< -さらなる情報については以下を参照してください。 > - - :help new-filetype - :help 43.2 - :help :setfiletype -< - -============================================================================= - *faq-27* -SECTION 27 - プログラムファイルを編集する - - *faq-27.1* -27.1. C/C++のファイルに対してオートインデントを有効化するには? - -ファイル形式に基づくインデントを有効化するには次を実行します: > - - :filetype indent on -< -自動Cインデントだけを有効化したいならこうします: > - - :set cindent -< -さらなる情報については以下を参照してください。 > - - :help 'cindent' - :help C-indenting - :help filetype -< - *faq-27.2* -27.2. C/C++のファイルに対するインデントをカスタマイズするには? - -'cinoptions', 'cinkeys', 'cinwords'の値を変えれば、Cインデントをカスタマイズす -ることができます。 - -さらなる情報については以下を参照してください。 > - - :help 'cindent' - :help 'cinoptions' - :help 'cinkeys' - :help 'cinwords' - :help C-indenting - :help cinoptions-values - :help 'smartindent' -< - *faq-27.3* -27.3. オートインデント機能を無効化するには? - -デフォルトではオートインデントは無効になっています。.vimrcか.gvimrcでオートイ -ンデントを有効化したのでしょう。オートインデントを無効化するには、 > - - :filetype indent off -< -または > - - :set nocindent -< -とします。また、以下のオプションの設定を確認してください: > - - :set autoindent? - :set smartindent? - :set indentexpr? -< -さらなる情報については以下を参照してください。 > - - :help 'cindent' - :help filetype-indent-off - :help 'autoindent' - :help 'smartindent' - :help 'indentexpr' -< - *faq-27.4* -27.4. オートインデントの際に挿入されるスペースの数を変えるには? - -'shiftwidth'オプションを変えると、オートインデントに使われるスペースの数を変え -ることができます: > - - :set shiftwidth=4 -< -さらなる情報については以下を参照してください。 > - - :help 'shiftwidth' -< - *faq-27.5* -27.5. Cプログラムを編集しています。マクロ定義や変数を表示するには? - -コマンド[dでマクロ定義を表示でき、[iで変数定義を表示することができます。 - -さらなる情報については以下を参照してください。 > - - :help [d - :help [i - :help include-search - :help 29.4 - :help 29.5 -< - *faq-27.6* -27.6. Cプログラムを編集しています。ブロックの内側から、そのブロックの開始位置 - や終了位置にジャンプするには? - -コマンド[{でそのブロックの始まりにジャンプし、]}でそのブロックの終わりにジャン -プします。 - -さらなる情報については以下を参照してください。 > - - :help [{ - :help ]} - :help various-motions -< - *faq-27.7* -27.7. C++ファイルで"//"コメントが自動的に挿入されるのを止めさせるには? - -オプション'comments'の値を修正すればC++のコメント文字("//")が自動的に挿入され -るのを止めさせることができます。例: > - - :set comments=sr:/*,mb:*,el:*/ -< -さらなる情報については以下を参照してください。 > - - :help 'comments' - :help format-comments -< - *faq-27.8* -27.8. 一連の行の行頭にコメント文字'#'をつけ加えるには? - -最初にビジュアル矩形モードを使って(CTRL-V)その行を全て選択します。'I'を押して -行頭に文字の挿入を開始します。コメント文字を挿入し、<Esc>を押してインサートモ -ードを終了します。すると入力された文字が選択された全ての行の行頭に挿入されま -す。 - -さらなる情報については以下を参照してください。 > - - :help visual-block - :help blockwise-operators - :help v_b_I -< - *faq-27.9* -27.9. Cのソースファイルに対応する名前のヘッダファイルを開くには? - -次のコマンドを使うと、Cソースファイルに対応する名前のヘッダファイルを開くこと -ができます: > - - :e %:t:r.h -< -次のコマンドで、そのファイルを分割したウィンドウで開くこともできます: > - - :sp %:t:r.h -< -上のコマンドで、パーセント記号はカレントファイルの名前に展開されます。修飾子 -":t"はファイル名の末尾(tail)に変換します。修飾子":r"はファイル名のルート(root) -に変換します。そして.hをつけて、最終的にヘッダファイル名が得られます。 - -別のアプローチとしては、次のコマンドを使います: > - - :sfind %:t:r.h -< -このコマンドはヘッダファイルを'path'で指定されたディレクトリの中から探します。 - -さらなる情報については以下を参照してください。 > - - :help cmdline-special - :help filename-modifiers - :help :sfind - :help 'path' -< - *faq-27.10* -27.10. コメントを入力しているとき、自動的にコメント文字を挿入するには? - -コメントを入力しているとき自動的にコメント文字を挿入するには、'formatoptions' -にフラグ'r'と'o'を加えます。 > - - :set formatoptions+=ro -< -コメントを'textwidth'によって自動的に折り返すためにフラグ'c'をつけたり、コメン -トを"gq"コマンドで成形するためにフラグ'q'をつけてもよいでしょう: > - - :set formatoptions=croq -< -さらなる情報については以下を参照してください。 > - - :help 30.6 - :help format-comments - :help 'comments' - :help fo-table -< - -============================================================================= - *faq-28* -SECTION 28 - QuickFix - - *faq-28.1* -28.1. Vimの中からプログラムをビルドするには? - -":make"を使うとVim中からプログラムをビルドすることができます。":make"は -'makeprg'で指定されたプログラムを起動します。 - -さらなる情報については以下を参照してください。 > - - :help 30.1 - :help make_makeprg - :help 'makeprg' - :help 'makeef' - :help :make - :help quickfix - *faq-28.2* -28.2. Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパイル - してエラーメッセージを出力します。しかしコンパイルが終わると表示が消え - てしまい、エラーメッセージをもう一度見るには:clistとしなければなりませ - ん。このエラーメッセージを見るのに他の方法はありませんか? - -":copen"や":cwindow"を使うと、コンパイラの出力を保持しているQuickFixウィンド -ウを開くことができます。そのウィンドウの中でエラーの行を選択すると、ソースコー -ド中の対応する行にジャンプすることができます。 - -さらなる情報については以下を参照してください。 > - - :help :copen - :help :cwindow - :help quickfix -< - -============================================================================= - *faq-29* -SECTION 29 - 折り畳み - - *faq-29.1* -29.1. 折り畳みの機能を拡張するには? - -'foldexpr'を使えばユーザ指定の関数を使って折り畳みを作ることができます。 -例えば、以下の形のサブルーチンを1行に折り畳むには: > - - sub foo { - my $barf; - $barf = 3; - return $barf; - } -< -次のコマンドを使うことができます: > - - set foldmethod=expr - set foldexpr=MyFoldExpr(v:lnum) - fun! MyFoldExpr(line) - let str = getline(a:line) - if str =~ '^sub\>' - return '1' - elseif str =~ '^}' - return '<1' - else - return foldlevel(a:line - 1) - endif - endfun -< -さらなる情報については以下を参照してください。 > - - :help 'foldexpr' - :help fold-expr -< - *faq-29.2* -29.2. 'foldmethod'をセットして折り畳みを有効化すると、全ての折り畳みが閉じてし - まいます。これを防ぐには? - -'foldlevelstart'をある値にセットすると、折り畳みがその値以上になったときのみ閉 -じさせることができます。 > - - :set foldlevelstart=99 -< -さらなる情報については以下を参照してください。 > - - :help 'foldlevelstart' - :help 'foldlevel' - :help fold-foldlevel -< - *faq-29.3* -29.3. ファイルの編集を開始したときにいくつの折り畳みが開かれた状態にするかをコ - ントロールするには? - -'foldlevelstart'を修正すれば、ファイルの編集を開始したときにいくつの折り畳みを -開くかをコントロールすることができます。全ての折り畳みを閉じた状態で編集を開始 -するにはこうします: > - - :set foldlevelstart=0 -< -さらなる情報については以下を参照してください。 > - - :help 'foldlevelstart' -< - *faq-29.4* -29.4. マウスを使って折り畳みを開閉するには? - -折り畳みを開閉するには、一番左の桁に表示された+と-という文字をクリックします。 -それが機能するためには'foldcolumn'を0より大きい値に設定していなければなりませ -ん: > - - :set foldcolumn=2 -< -さらなる情報については以下を参照してください。 > - - :help 'foldcolumn' -< - - *faq-29.5* -29.5. 閉じた折り畳みの表示に使われるテキストを変更するには? - -'foldtext'によって閉じた折り畳みの表示に使われるテキストを変更することができま -す。 - -さらなる情報については以下を参照してください。 > - - :help 'foldtext' - :help fold-foldtext - :help 'fillchars' -< - *faq-29.6* -29.6. Vimを終了・再起動するとき、手動で作った折り畳みを保存・復元するには? - -":mkview"を使えば手動で作った折り畳みを保存することができます。その後、 -":loadview"でその折り畳みを復元することができます。これが機能するためには -'viewoptions'が"folds"を含んでいなければなりません。 - -さらなる情報については以下を参照してください。 > - - :help 28.4 - :help :mkview - :help :loadview - :help 'viewoptions' - :help 'viewdir' - :help :mksession - :help 'sessionoptions' -< - -============================================================================= - *faq-30* -SECTION 30 - 外部プログラムとの連携 - - *faq-30.1* -30.1. Vimのウィンドウの中でシェルを起動することはできますか? - -現在のところ、Vimにはウィンドウの中でシェルや外部プログラムを実行する機能はあ -りません。 - -さらなる情報については以下を参照してください。 > - - :help shell-window -< -代替手段としては、Unixの"screen"ユーティリティか"splitvt"プログラムを試してみ -てもよいでしょう。 - -また、Brian Sturkによるvimshプラグインを使うとVimウィンドウの中でシェルを起動 -することができます。これを使うためには、VimをPythonインターフェイス機能つきで -ビルドしなければなりません。さらなる情報については以下のURLを訪れてください: > - - http://vim.sourceforge.net/scripts/script.php?script_id=165 -< - *faq-30.2* -30.2. カーソル下の単語を外部プログラムに渡すには? - -特別なキーワード<cword>を使うと、カーソル下の単語を外部コマンドに渡すことがで -きます。例: > - - :!dict <cword> -< -さらなる情報については以下を参照してください。 > - - :help <cword> -< - *faq-30.3* -30.3. シェルコマンドの出力をVimのバッファに取り込むには? - -":r !"を使えばシェルコマンドの出力をVimのバッファに取り込むことができます: > - - :r !ls -< -さらなる情報については以下を参照してください。 > - - :help :r! -< - *faq-30.4* -30.4. カレントバッファの中身を外部プログラムにパイプで渡して、そのプログラムの - 出力でバッファを置き換えるには? - -:!を使えばカレントバッファの中身を外部プログラムにパイプで渡して、そのコマンド -の出力でバッファの中身を置き換えることができます。例えば、Unixのソートコマンド -を使ってカレントバッファの中身をソートするには、次のようにします: > - - :%!sort -< -10から20行目だけををソートするなら次のコマンドを使います: > - - :10,20!sort -< -また、バッファを外部プログラムにパイプしたいが、バッファを出力で書き換えたくな -い場合はこうします: > - - :w !sort -< -上のコマンドはバッファ全体をsortコマンドにパイプします。 -注意: 'w'と'!'の間のスペースは必ず必要です。ある範囲の行だけをパイプするにはこ -うします: > - - :10,20w !sort -< -上のコマンドは10から20行目をsortコマンドにパイプします。 - -さらなる情報については以下を参照してください。 > - - :help :range! - :help 10.9 - :help :w_c -< - *faq-30.5* -30.5. ファイル中のあるセクションをソートするには? - -あるセクションをUnixの"sort"ユーティリティにパイプしてそのファイルをソートする -ことができます。例: > - - :5,100!sort -< - -ビジュアルモードで選択した矩形範囲だけをソートするには、次のVim onlineのtipを -参照してください: - -http://vim.sourceforge.net/tips/tip.php?tip_id=588 - - *faq-30.6* -30.6. Vimとslrnといっしょに使うステップ・バイ・ステップガイドはありますか? - -VimとSlrnをいっしょに使うための情報については、以下のリンクを参照してください: -> - - http://thingy.apana.org.au/~fun/slrn/ -< - *faq-30.7* -30.7. Vimをページャとして使うには? - -シェルスクリプト$VIMRUNTIME/macros/less.shを使うとVimをページャとして使うこと -ができます。これはVimの標準ディストリビューションの一部として同梱されていま -す。このシェルスクリプトは、lessライクなキーバインディングを実現するために -Vimスクリプト$VIMRUNTIME/macros/less.vimを使用しています。 - -さらなる情報については以下を参照してください。 > - - :help less -< - *faq-30.8* -30.8. Vimの中でUnixのmanページを見るには? - -Vim標準ディストリビューションに同梱のman.vimを使えば、Vimの中でUnixのmanページ -を見ることができます。このプラグインを使うには、以下の行をvimrcファイルに追加 -してください: > - - runtime ftplugin/man.vim -< -また、Kキーを押すと、カーソル下のキーワードとともに'keywordprg'で指定された -プログラムを起動することができます。デフォルトでは'keywordprg'はカーソル下の -キーワードのmanを起動するように設定されています。 - -さらなる情報については以下を参照してください。 > - - :help man-plugin - :help K - :help 'keywordprg' -< - *faq-30.9* -30.9. Vimのdiff機能で使われるdiffコマンドを変更するには? - -デフォルトではVimのdiff機能は'diff'コマンドを使います。'diffexpr'オプションを -変更すればこれを変えることができます。 - -さらなる情報については以下を参照してください。 > - - :help diff-diffexpr - :help 'diffexpr' -< - *faq-30.10* -30.10. 折り畳みなしでdiffモードを使うには? - -次のコマンドラインを実行すると、2つのファイル名とともに起動し、折り畳み -なしでdiffモードに入ります: > - - $ vim -o file1 file2 "+windo set diff scrollbind scrollopt+=hor nowrap" -< -垂直ウィンドウ分割の方がいいなら、"-o"を"-O"に置き換えてください。 - -さらなる情報については以下を参照してください。 > - - :help vimdiff -< - -============================================================================= - *faq-31* -SECTION 31 - GUIのVIM - - *faq-31.1* -31.1. バッファ固有のメニューを作るには? - -バッファ固有のメニューという機能はVimのTODOリストにあります。今のところは、 -Michael Geddesのプラグインbuffermenu.vimを試してみてください: > - - http://vim.sourceforge.net/scripts/script.php?script_id=246 -< - *faq-31.2* -31.2. GUIのVimで使われるフォントを変更するには? - -'guifont'を変更すればGUIのVimで使われるフォントを変更することができます。この -オプションの現在の値を表示するにはこうします > - - :set guifont? -< -ここで表示された値を.vimrcに書いておけば、Vimを再起動しても同じフォントを使う -ことができます。例えば、次の行を.vimrcに書くとAndale Monoフォントを使うように -なります。 > - - set guifont=Andale_Mono:h10:cANSI -< -Win32, GTK, Photon版のVimでは、次のコマンドでguifontを変える際に便利なダイアロ -グを起動することができます: > - - :set guifont=* -< -Vimのコマンドライン引数に-fontを使うと通常のテキストに使われるフォントを指定す -ることができます。 - -さらなる情報については以下を参照してください。 > - - :help 'guifont' - :help 'guifontset' - :help 'guifontwide' - :help font-sizes - :help -font - :help -boldfont - :help -italicfont - :help -menufont - :help -menufontset -< - *faq-31.3* -31.3. GUIのVimが起動したときのウィンドウの位置を指定するには? - -コマンドライン引数"-geometry"を指定すれば、GUIのVimのウィンドウの位置を指定す -ることができます。例: > - - $ gvim -geometry 80x25+100+300 -< -さらなる情報については以下を参照してください。 > - - :help 31.4 - :help -geom -< - *faq-31.4* -31.4. GVimに水平スクロールバーをつけるには? - -'guioptions'を修正すれば水平スクロールバーを有効化することができます: > - - :set guioptions+=b -< -さらなる情報については以下を参照してください。 > - - :help 'guioptions' - :help gui-horiz-scroll -< - *faq-31.5* -31.5. スクロールバーをデフォルトで左側に表示するようにするには? - -'guioptions'にフラグ'l'をつけるとスクロールバーが左側に出るようになります。 > - - :set guioptions+=l - :set guioptions-=r -< -さらなる情報については以下を参照してください。 > - - :help 'guioptions' - :help gui-scrollbars -< - *faq-31.6* -31.6. メニューバーを消すには? - -'guioptions'からフラグ'm'を除くとメニューバーが消えます: > - - :set guioptions-=m -< -さらなる情報については以下を参照してください。 > - - :help 'guioptions' -< - - *faq-31.7* -31.7. GVimを使っています。ALTキーと文字キーを押すとその文字で始まるメニューが - 選択されます。ALT-<key>の組合せを使いたいので、この挙動はやめてほしいで - す。どうすればいいですか? - -'winaltkeys'を使えばALTキーでメニュー項目を選択するのを無効にすることができま -す: > - - :set winaltkeys=no -< -さらなる情報については以下を参照してください。 > - - :help 'winaltkeys' - :help :simalt -< - *faq-31.8* -31.8. スクロールバーをドラッグしたとき、カーソル位置を動かさずにテキストをスク - ロールさせることは可能ですか? - -Vimの設計では、ノーマル・ビジュアル・選択・インサートモードにおいてカーソル位 -置は表示されている位置になければなりません。これはVimの修正なしには変更できま -せん。スクロールバーを使うと、カーソル位置は常に表示されている範囲に入るように -移動します。この問題を解決する別のアプローチはVimのマークを使うことです。maで -現在のカーソル位置をマークします。テキストをスクロールしたら`aで元の位置に戻 -ります。Vim Onlineに投稿された次の提案も試してみてください: > - - http://www.vim.org/tip_view.php?tip_id=320 -< -さらなる情報については以下を参照してください。 > - - :help mark-motions -< - *faq-31.9* -31.9. ":browse"を使ったときに特定のディレクトリから始めるようにするには? - -'browsedir'を設定すれば":browse"コマンドのデフォルトディレクトリを設定できま -す。 > - - :set browsedir='<your_dir>' -< -さらなる情報については以下を参照してください。 > - - :help 'browsedir' -< - *faq-31.10* -31.10. ファイルがVimの外部で変更されたときなど、問い合わせがあるとき、GUIのダ - イアログボックスが表示されます。コンソールのダイアログボックスが出るよ - うにするには? - -'guioptions'にフラグ'c'を含めれば、GUIダイアログの代わりにコンソールダイアログ -を使うようになります: > - - :set guioptions+=c -< -さらなる情報については以下を参照してください。 > - - :help 'guioptions' -< - *faq-31.11* -31.11. GVimをアプリケーションxxx用のエディタとして使っています。アプリケーショ - ンxxxがGVimを起動すると、コントロールがすぐにアプリケーションxxxに戻っ - てしまいます。Vimを終了したとき初めてアプリケーションxxxにコントロール - が戻るようにGVimを起動するには? - -コマンドラインオプション'-f' (foreground)をつけてGVimを起動します: > - - $ gvim -f -< -デフォルトではGVimはそれを起動したプログラムから切り離されます。'-f'をつけると -GVimはそれを起動したプログラムから切り離されなくなります。 - -さらなる情報については以下を参照してください。 > - - :help gui-fork - :help -f -< - *faq-31.12* -31.12. なぜ、システムにインストールされているフォント全てが「フォントを選ぶ」 - ダイアログに現れないのですか? - -Vimは等幅フォントのみサポートしています。プロポーショナルフォントはサポートし -ていません。「フォントを選ぶ」ダイアログには等幅フォントだけが表示されます。 - -さらなる情報については以下を参照してください。 > - - :help font-sizes - :help 'guifont' -< -31.13. コマンドラインモードでマウスを使うには? - -コマンドラインモードでマウスを使うには、オプション'mouse'にフラグ'c'をつけま -す: > - - :set mouse+=c -< -さらなる情報については以下を参照してください。 > - - :help mouse-using - :help gui-mouse - :help 09.2 -< - *faq-31.14* -31.14. テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコピーし - たテキストがペーストされてしまいます。この挙動を無効にするには? - -マウスの中央ボタンに<Nop>をマップすると中央ボタンを無効化できます: > - - :map <MiddleMouse> <Nop> - :map! <MiddleMouse> <Nop> -< -さらなる情報については以下を参照してください。 > - - :help gui-mouse-mapping - :help <Nop> -< -31.15. GVimウィンドウの位置とサイズを変更するには? - -コマンド"winpos"を使えばVimウィンドウの位置を変えることができます。ウィンドウ -のサイズを変えるには、オプション"lines"と"columns"を変更します。 - -例えば、次のコマンドはGVimウィンドウのX,Y座標を50,50に、行数を50に、桁数を80に -セットします。 > - - :winpos 50 50 - :set lines=50 - :set columns=80 -< -":winpos"への引数はVimウィンドウのピクセル座標を指定します。オプション'lines' -と'columns'は行数と文字数を指定してウィンドウの高さと幅を設定します。 - -さらなる情報については以下を参照してください。 > - - :help 31.4 - :help :winpos - :help 'lines' - :help 'columns' - :help GUIEnter -< - -============================================================================= -SECTION 32 - UNIX上のVim - - *faq-32.1* -32.1. xtermでVimを実行しています。CTRL-Sを押すとVimがフリーズします。 - どうすればいいですか? - -多くのターミナルエミュレータと本物のターミナルドライバはCTRL-Sを受け取るとデー -タの受信を停止します。早すぎて見えない画面のスクロールを止めるためです(昔の端 -末で、バッファがオーバーフローしないようにコンピュータを遅くするためでもありま -した)。CTRL-Qを押すと出力を再開します。 - -CTRL-Sを押すとターミナルドライバは出力データの送信を停止します。結果としてVim -がハングしたように見えます。CTRL-Qを押すと全て通常に戻るでしょう。 - -'stty'コマンドを使うとターミナルドライバのフローコントロールをオフにすることが -できます: > - - $ stty -ixon -ixoff -< -または、次のコマンドでターミナルのフローコントロールに使うキーを変更することが -できます: > - - $ stty stop <char> - $ stty start <char> -< - *faq-32.2* -32.2. 画面の更新について奇妙な問題があります。これを解決するには? - -xtermのような適切なターミナルエミュレータと正しいTERM設定(TERM=xterm)と正しい -terminfo/termcapファイルを使わねばなりません。 -さらなる情報については以下を参照してください。 > - - :help 'term' -< - *faq-32.3* -32.3. Vimのターミナル/コンソール版を使っています。インサートモードでバックスペ - ースキーを押してもカーソルの前の文字が消えません。どう設定すれば良いです - か? - -Vimが正しいバックスペースのキーコードを受け取っているかどうか確かめてください。 -次のコマンドを試してみてください: > - - :fixdel -< -環境変数TERMが正しくターミナルの名前に設定されているかを確かめてください。 -'stty'コマンドを試してみてください: > - - $ stty erase ^H -< -ここで、^Hの文字を入力するにはCTRL-VとCTRL-Hを押してください。 - -さらなる情報については以下を参照してください。 > - - :help :fixdel - :help Linux-backspace - :help NetBSD-backspace -< - *faq-32.4* -32.4. xtermでVimを使っています。Vimを終了すると画面が元の状態に復元されます。 - これを無効化するには? - -xtermは「代替スクリーン」("alternate screen")という機能を持っています。この機 -能が有効になっていると、Vimは起動時と終了時にこの代替スクリーンに切り替えま -す。そのため、元の画面が復元されます。この機能を無効にするには次の行を.vimrcに -加えてください: > - - :set t_ti= t_te= -< -さらなる情報については以下を参照してください。 > - - :help restorescreen - :help xterm-screens -< - *faq-32.5* -32.5. Vimの起動にかなり時間がかかります。起動時間を最小化するには? - -これはおそらくVimがxtermのタイトルとXのクリップボードのためにXディスプレイを開 -いていることに関係しています。環境変数DISPLAYが正しいホストを指していることを -確認してください。次のコマンドを試してみてください: > - - $ vim -X -< -こうするとXディスプレイを開かなくなります。このコマンドラインオプションをつけ -るとXのクリップボードが使えなくなり、xtermのタイトルを変えられなくなります。 - -オプション'clipboard'を次のように変更することもできます: > - - :set clipboard=exclude:.* -< -こうするとコマンドライン引数-Xを使うのと同じ効果があります。 - -さらなる情報については以下を参照してください。 > - - :help -X - :help 'clipboard' -< - - *faq-32.6* -32.6. Unixのgvimでカーソルの点滅を止めるには? - -オプション'guicursor'を変更すればカーソルの点滅を止めることができます。 -例: > - - :set guicursor=a:blinkon0 -< -さらなる情報については以下を参照してください。 > - - :help 'guicursor' -< - *faq-32.7* -32.7. GTK Vimのメニューのフォントを変えるには? - -~/.gtkrcを修正すればGTK Vimのメニューのフォントを変更できます。例: > - - style "default" - { font ="smooth09" } - class "*" style "default" -< -最後の行が全てのウィジェットのフォントを変えています。 - -さらなる情報については以下を参照してください。 > - - :help gui-gtk -< - *faq-32.8* -32.8. Vimが<Ctrl-Z>でサスペンドするのを防ぐには? - - <Ctrl-Z>をマップすればサスペンドするのを防げます。いくつかの提案を示します: - -- <Ctrl-Z>でなにもしないようにする: > - - :map <C-Z> <Nop> -< -- <Ctrl-Z>でシェルが起動するようにする: > - - :map <C-Z> :shell<CR> -< -- <Ctrl-Z>でエラーメッセージが出るようにする: > - - :map <C-Z> :"suspending disabled<CR> -< -最後の例において、ダブルクォートはメッセージをステータスライン上に残すために必 -要になります。 - - *faq-32.9* -32.9. Vimを実行しているxtermをkillすると、Vimのプロセスが生き残り、多大なCPU時 - 間(99%)を食ってしまいます。なぜこうなるのですか? - -VimがPythonインターフェイスつきでビルドされるとこの問題が起こります。これは -PythonスレッドライブラリとVimに関する既知の問題です。この問題を解決するには、 -PythonインターフェイスなしでビルドされたVimを使用してください。 - -さらなる情報については以下を参照してください。 > - - :help +python - :help python -< - - *faq-32.10* -32.10. Unixターミナルで構文強調を使うには? - -構文強調を使う最も簡単で単純な方法はVimのGUI版(GVim)を使うことです。Vimのコン -ソール/ターミナル版で構文強調を使うには、カラー表示をサポートしているターミ -ナルエミュレータ(Xfree86 xtermやrxvtやdttermのようなもの)を使わねばなりませ -ん。ターミナルエミュレータが背景色と文字色を変えられるからといって、それが色を -変えるためのANSIエスケープシーケンスをサポートしているとは限りません。最新の -Xfree86 xtermはhttp://dickey.his.com/xterm/xterm.htmlからダウンロードできます。 -最新のrxvtはhttp://www.rxvt.orgからダウンロードできます。そのターミナルエミュ -レータ用の色をサポートしているterminfo/termcapをインストールしなければなりま -せん。また、環境変数TERMをそのターミナルの正しい名前に設定します。 - -色設定をテストするにはVimランタイムパッケージに付属のcolortest.vimスクリプトを -使うことができます。このスクリプトを使うには次のようにします: > - - :e $VIMRUNTIME/syntax/colortest.vim - :source % -< -さらなる情報については以下を参照してください。 > - - :help 06.2 - :help terminal-colors - :help termcap-colors - :help startup-terminal - :help xterm-color - :help colortest.vim -< - -============================================================================= - *faq-33* -SECTION 33 - MS-Windows上のVim - -33.1. MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。どうな - っているのですか? - -mswin.vimプラグインは、VimがMS-Windowsアプリケーションに似た挙動をするようにキー -マッピングとオプションを設定します。そのキーマップの一つがCTRL-Vで、これは -MS-Windowsアプリケーションではテキストをペーストします。このためCTRL-Vでビジュ -アル矩形モードが始まらないようになっています。mswin.vimではビジュアル矩形モー -ドの開始がCTRL-Qにマップされています。ですのでCTRL-Vの代わりにCTRL-Qを使ってく -ださい。 - -さらなる情報については以下を参照してください > - - :help CTRL-V - :help CTRl-V-alternative - :help CTRL-Q - :help 10.5 -< - *faq-33.2* -33.2. CTRL-Yキーを押すとCTRL-Rのような動作をします。CTRL-YをCTRL-Yとして扱うよ - うに設定するには? - -CTRL-YからCTRL-Rへのマップはmswin.vim内で行われています。mswin.vimは標 -準のMS-Windowsアプリケーションと同じ挙動になるようにCTRL-Yをマップします。 -これは":help CTRL-Y"で説明されています。mswin.vim中のCTRL-Yをマップしている行 -をコメントアウトするか、.vimrc中でmswin.vimを読み込んでいる行を削除すればよい -でしょう。 - - - *faq-33.3* -33.3. 常にGVimのウィンドウを最大化して起動するには? - -"simalt"コマンドを使えばVimのウィンドウを最大化することができます。GUIEnter自 -動コマンドを使えば、起動時にVimのウィンドウを最大化することができます: > - - autocmd GUIEnter * simalt ~x -< -さらなる情報については以下を参照してください: > - - :help :simalt - :help GUIEnter - :help gui-win32-maximized -< - *faq-33.4* -33.4. なんらかの編集操作をするとVimがフリーズします。カーソルは空の四角形にな - ります。全然文字が入力できません。どうなっているのですか? - -もっとも考えられるのは、テキストをスクロールさせようとマウスホイールを使ったこ -とです。Vimでインテリマウスホイールを使うと問題が起こることが知られています。 -これを回避するには、ユニバーサルスクロール機能を無効にすることです。 - -さらなる情報については以下を参照してください > - - :help intellimouse-wheel-problems -< - - *faq-33.5* -33.5. Windows XPを使っています。最大化したGVimの表示速度がとても遅いです。表示 - の更新を早くするには? - -これは表示プロパティの'Smooth edges of screen fonts'を有効化しているために起こ -っている可能性があります。フォントスムージングをオフにするか、スムージング方法 -を"Standard"にしてください。 - -訳注: コントロールパネル[パフォーマンスオプション]の[スクリーンフォントの縁を -訳注: 滑らかにする]のことだと思う。 - - *faq-33.6* -33.6. VimをCygwin上で使うにあたって推奨される設定は? - -シェル関連の設定を次のようにするとよいかもしれません: > - - :set shellcmdflag=-c - :set shellquote= - :set shellslash " 展開に(バックスラッシュでなく)スラッシュを使う - :set shellxquote=\" - :set shell=d:\cygwin\bin\bash.exe " bashをシェルに使う - :set shellpipe=2>&1| tee - :set shellredir=>%s 2>&1 -< - -33.7. diffモードでGNU diffを使おうとしています。コマンドラインからdiffを使うと - うまく動くのですが、Vim内で使おうとすると動きません。どうすれば? - -VimでGNU diffを使うには問題があります。次のリンクにあるRon Aaronがビルドした -GNU diff.exeを使ってみてください: > - - http://www.mossbayeng.com/~ron/vim/builds.html -< - *faq-33.8* -33.8. Outlookで外部エディタにVimを使うことはできますか? - -COMアドイン"cubiclevim"を使えば、OutlookでVimを外部エディタとして使うことがで -きます。さらなる情報については以下のリンクを訪れてください: > - - http://sourceforge.net/projects/cubiclevim -< -注意: 現在これはMS-Office 2000とXPのみで動作します。 - - *faq-33.9* -33.9. HTMLファイルを編集するのにVimを使っています。現在開いているHTMLファイル - をインターネットエクスプローラでプレビューするには? - -以下のコマンドでできます: > - - :!start c:\progra~1\intern~1\iexplore.exe file://%:p<CR> -< - *faq-33.10* -33.10. VimをMicrosoft Visual Studioといっしょに使いたいです。どうすれば? - -VimのOLE版(例: gvim61ole.zip)をダウンロードして使用しなければなりません。 -このファイルはVimをVisual Studioといっしょに使うための手順を書いたファイルも含 -んでいます。 - -さらなる情報については以下を参照してください > - - :help MSVisualStudio -< - *faq-33.11* -33.11. どこに_vimrcと_gvimrcを置けばいいですか? - -_vimrcと_gvimrcは環境変数VIMで指定されたディレクトリの下に置きます。もし他のユ -ーザとシステムを共有しているなら、環境変数HOMEに設定したディレクトリに置くとよ -いでしょう。 - -さらなる情報については以下を参照してください > - - :help $HOME-use - :help _vimrc -< - *faq-33.12* -33.12. ファイルを保存する度に、そのファイルがVimの外部で変更されていると警告が - 出ます。なぜですか? - -ファイルを保存する際に毎回以下の警告メッセージが出るなら: > - - WARNING: The file has been changed since reading it!!! - Do you really want to write to it (y/n)? -< - -MS-Windowsでのサマータイム(daylight saving time)が始まる日についてのバグに関係 -している可能性があります。Vimはファイルを書き込んだ後にそのタイムスタンプを記 -憶しています。そして次の書き込みの直前に再びタイムスタンプを取得し、Vimの外部 -でファイルが変更されているかチェックします。これはサマータイムが始まる日を除け -ば正しく機能します。 - -この問題はサマータイムが始まる日の次の日には解消されます。 - -さらなる情報については以下を参照してください > - - :help W11 -< - -============================================================================= - *faq-34* -SECTION 34 - 印刷 - - *faq-34.1* -34.1. 全ての行に行番号をつけて印刷するには? - -'printoptions'をセットして":hardcopy"を使えばファイルを印刷できます: > - - :set printoptions=number:y - :hardcopy -< -さらなる情報については以下を参照してください > - - :help 'printoptions' - :help :hardcopy -< - *faq-34.2* -34.2. 構文強調の色をつけてファイルを印刷するには? - -":hardcopy"で構文強調の色をつけてファイルを印刷することができます。また、 -2html.vimスクリプトでファイルをHTMLをファイルに変換し、そのHTMLファイルを印刷 -することもできます。 - -さらなる情報については以下を参照してください > - - :help syntax-printing - :help 2html.vim - :help :hardcopy - :help printing -< - -============================================================================= - *faq-35* -SECTION 35 - Vimをソースからビルドする - - *faq-35.1* -35.1. Unixシステム上でVimをソースからビルドするには? - -UnixシステムでVimをソースからビルドするには、次のステップに従ってください: - -- ftp://ftp.vim.org/pub/vim/unixからソースとランタイムファイルのアーカイブ - (vim-##.tar.bz2)をダウンロードします。 -- bzip2とtarを使ってアーカイブを展開します: > - - $ bunzip2 -c <filename> | tar -xf - -< -- 'make'を実行してVimをデフォルト設定で調整し、ビルドします。 -- 'make install'してVimをデフォルトのディレクトリにインストールします。 - -Vimの様々な機能を有効/無効にするには、'make'を実行する前に'configure'コマンド -でフラグを設定します。'configure'で指定できるオプションのリストを次のコマンド -で表示することができます: > - - $ configure -help -< -訳注: --help の間違い? - -さらなる情報については以下を参照してください > - - :help install -< - *faq-35.2* -35.2. Unixでホームディレクトリなど、デフォルトのディレクトリ以外にVimをインス - トールするには? - -デフォルトのインストールディレクトリ以外にインストールするには、configureスク -リプトを実行する際に--prefixオプションでディレクトリを指定します。 > - - $ ./configure --prefix=/users/xyz -< -configureスクリプトに様々な引数を与えることによって、Vimの色々な機能を有効/無 -効にできます。それらのオプションについてのさらなる情報については、次を実行して -ください。 > - - $ ./configure --help -< -さらなる情報については以下を参照してください > - - :help install-home - :help install -< - *faq-35.3* -35.3. MS-Windowsシステム上でVimをソースからビルドするには? - -MS-Windowsシステム上では、Visual C++またはBorland C++またはMing GCCコンパイラ -またはcygwin gccコンパイラのどれかを使ってVimをビルドすることができます。 -MS-Windows用にVimをソースからビルドするには次のステップに従ってください: - -- ソース(vim##src.zip)、ランタイム(vim##rt.zip)とその他(vim-##-extra.tar.gz)の - アーカイブをftp://ftp.vim.org/pub/vim/pcからダウンロードします。 - -訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ -訳注: (vim-7.0.tar.bz2)にして公開されている。 - -- アーカイブをディレクトリ(例: c:\vimsrc)に展開します。 -- コンパイラに応じたMakefileを使います。Visual C++用にはMake_mvc.mak、Borland - C++用にはMake_bc5.mak、Ming GCC用にはMake_ming.mak、cygwin gcc用には - Make_cyg.makを使います。 - -VimのGUI版とコンソール版のどちらをビルドしたいかによって、Makefileに異なる引数 -を与えなければなりません。ソースのビルドに成功したら、vim.exeやgvim.exeをラン -タイムファイルとともに望みのディレクトリにコピーできます。 - -MS-Windowsシステムで様々なコンパイラを使ってVimをビルドするための情報について -は、以下のサイトを訪れてください: > - - http://mywebpage.netscape.com/SharpPeople/vim/howto/index.html -< -さらなる情報については以下を参照してください > - - :help install -< - *faq-35.4* -35.4. 私がインストールしたVimにはヘルプ、構文ファイル、インデントファイルが欠 - けています。それらのファイルをインストールするには? - -Vimのヘルプ、構文ファイル、インデントファイルやそのほかのランタイムファイルは -Vimランタイムパッケージの一部です。Vimランタイムパッケージをダウンロードしてイ -ンストールする必要があります。例えば、MS-Windows用のVim6.1ランタイムパッケージ -の名前はvim61rt.zipです。 - -訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ -訳注: (vim-7.0.tar.bz2)にして公開されている。 - -さらなる情報については以下を参照してください > - - :help install -< - *faq-35.5* -35.5. Vimをソースからビルドして"make install"でインストールしました。Vimのソー - スディレクトリを残しておく必要はありますか? - -その必要はありません。一度Vimをビルドして元のソースディレクトリ以外のどこか -(例えば/usr/binや/usr/local/bin)にインストールしたら、ソースディレクトリは削除 -してもかまいません。 - - *faq-35.6* -35.6. ある機能がコンパイル時に有効化されているかどうかを知るには? - -":version"を使えば、ある機能がコンパイル時に有効化されているかどうかを知ること -ができます。有効化されている機能の前には"+"がつきます。有効化されていない機能 -の前には"-"がつきます。 - -スクリプトの中で、ある機能の存在を判定したい場合は、関数has()を使います: > - - if has("menu") - " Set up some menus - endif -< -さらなる情報については以下を参照してください > - - :help :version - :help +feature-list - :help has() -< - *faq-35.7* -35.7. GUI機能なしでVimをビルドすることはできますか? - -できます。GUI機能を含めて、Vimの機能の多くは任意に有効化/無効化してビルドする -ことができます。 - -さらなる情報については以下を参照してください > - - :help install -< - *faq-35.8* -35.8. Unixシステム上でVimをビルドするとき、"undefined reference to - term_set_winsize"というエラーが出ます。これを解決するには? - -ビルド処理がtermlibまたはtermcapまたはncursesライブラリを見つけられないときこ -のエラーが出ます。このエラーを解決するには、ncurses-devパッケージをインストー -ルしなければなりません。 - - *faq-35.9* -35.9. GTK 2.03を使おうとしているのですが、Vimのconfigureがgtk-configがないとの - メッセージを出します。しかしGTK2は一般的なpkg-configを使うようになったの - で、これは正しいのです。gtk用のインクルードファイルとライブラリのリスト - を出力するpkg-configならありますが、なぜかconfigureスクリプトはこれを使 - ってくれません。 - -次のシェルスクリプトにgtk-configと名前をつけて使ってください: > - - #!/bin/sh - pkg-config gtk+-2.0 $1 $2 -< - -============================================================================= - *faq-36* -SECTION 36 - 様々な事柄 - - *faq-36.1* -36.1. Vimでバイナリフィルを編集するには? - -以下のオプションを設定すればVimでバイナリファイルを編集することができます: > - - :set binary - :set display=uhex -< -コマンドラインオプション"-b"を使ってもバイナリファイルを編集することができます -: > - - $ vim -b <binary_file_name> -< -また、バイナリファイルを編集するのにxxdユーティリティ(Vimのディストリビューシ -ョンの一部)を使うこともできます。 - -さらなる情報については以下を参照してください > - - :help 23.4 - :help edit-binary - :help hex-editing - :help -b - :help 'binary' - :help 'endofline' - :help 'display' -< - *faq-36.2* -36.2. ビジュアルエラーフラッシュとエラービープを無効にするには? - -次のコマンドを使うと、ビジュアルエラーフラッシュとエラービープを両方無効にする -ことができます: > - - :set visualbell t_vb= -< -さらなる情報については以下を参照してください > - - :help 'visualbell' - :help 'errorbells' - :help t_vb -< - *faq-36.3* -36.3. バッファに表示されている文字のアスキーコードを表示するには? - -'ga'コマンドを使うと、表示されている文字のアスキーコードを表示することができま -す。 - -さらなる情報については以下を参照してください > - - :help ga - :help :ascii -< - *faq-36.4* -36.4. コマンドのカウントとして0を使うことはできますか? - -"0"はそれ自身がコマンドであるため(現在行の1桁目に移動する)、コマンドのカウント -として使うことはできません。 - -さらなる情報については以下を参照してください > - - :help 0 - :help count -< - *faq-36.5* -36.5. Vimの起動時の画面を表示させなくするには? - -Vimの起動時の画面を表示させなくするには、'shortmess'にフラグ'I'を追加します: > - - :set shortmess+=I -< -さらなる情報については以下を参照してください > - - :help :intro - :help 'shortmess' -< - *faq-36.6* -36.6. "hit enter to continue"プロンプトを避けるには? - -あなたに読んでほしいメッセージがあるのに画面が再描画されようとしているとき、 -"hit enter to continue"プロンプトが出ます。'shortmess'にフラグ'T'を加えると、 -全てのメッセージを短縮することができます。するとhit-enterプロンプトを避けるこ -とができます: > - - :set shortmess+=T -< -また、'cmdheight'を設定するとコマンドラインの高さを上げることができます: > - - :set cmdheight=2 -< -さらなる情報については以下を参照してください > - - :help hit-enter - :help avoid-hit-enter - :help 'shortmess' - :help 'cmdheight' -< - *faq-36.7* -36.7. コマンドラインからVimを起動して一連のファイルに対して一連のコマンドを - 実行するには? - -コマンドラインからVimを起動して一連のファイルに対して一連のコマンドを実行する -にはいくつかの方法があります。コマンドラインオプション"-c"でコマンドを指定する -ことができます: > - - $ vim -c "<ex_command_1>" -c "<ex_command_2>" *.txt -< -コマンドラインオプション"-c"で指定されたexコマンドは順番に1つずつ実行されま -す。また、exコマンドを"|"で区切れば1つの"-c"で指定することもできます: > - - $ vim -c "<ex_command_1> | <ex_command_2>" *.txt -< -上のコマンドでexコマンドが失敗した場合は残りのexコマンドは全て実行されません。 - -例えば、コマンドラインからファイル中の"ABC"を"DEF"で置換するには次のコマンドを -使います: > - - $ vim -c "%s/ABC/DEF/ge | update" myfile.txt -< -コマンドラインから複数のファイル中の"ABC"を"DEF"で置換するには次のコマンドを使 -います: > - - $ vim -c "argdo %s/ABC/DEF/ge | update" *.txt -< -一連のコマンドをファイルに保存しておき、コマンドラインオプション"-s"を使ってフ -ァイルに対してそのコマンドを実行することもできます。例えば、mycmds.txtに一連の -コマンドを保存してあるとします。このとき次のようにできます: > - - $ vim -s mycmds.txt *.pl -< -さらなる情報については以下を参照してください > - - :help -c - :help -s -< - *faq-36.8* -36.8. インサートモードから抜けることなくノーマルモードコマンドを実行するには? - -CTRL-Oに続けてノーマルモードコマンドを1つ入力すると、インサートモードから抜け -ることなくノーマルモードコマンドを実行することができます。 - -1つ以上のノーマルモードコマンドを実行するにはCTRL-Lを押し、続けて任意個のノー -マルモードコマンドをタイプします。インサートモードに抜けるには<Esc>を押しま -す。 - -訳注: CTRL-Lを使うにはオプション'insertmode'をオンにしていなければならない。 - -さらなる情報については以下を参照してください > - - :help i_CTRL-O - :help i_CTRL-L -< - -============================================================================= - *faq-37* -SECTION 37 - ユニコード -Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> - - *faq-37.1* -37.1. Vimでユニコードのファイルを作ることはできますか? - -できます。あなたが利用できるキーボードとフォントによって多少複雑になるかもしれ -ませんが、常にどんなユニコードコードポイントでも(中には不正なものも)エンコード -することができます。ユニコードのファイルを作成するには、Vimをコンパイル時オプ -ション"+multi_byte"つきでコンパイルしていなければなりません。ユニコードについ -てのさらなる情報は以下のサイトから入手できます: > - - http://www.unicode.org - http://www.cl.cam.ac.uk/~mgk25/unicode.html -< -さらなる情報については以下を参照してください > - - :help multibyte - :help usr_45.txt -< - *faq-37.2* -37.2. ユニコードのファイルを編集するにあたって特に重要な設定は? - -最も重要なのは様々な"encoding"のオプションです。つまり、'encoding', -'fileencoding', 'fileencodings', 'termencoding'です。ブール値のオプション -'bomb'も重要です。 - -さらなる情報については以下を参照してください > - - :help 'encoding' - :help 'fileencoding' - :help 'fileencodings' - :help 'termencoding' - :help 'bomb' -< - *faq-37.3* -37.3. オプション'encoding'とは何ですか? - -基本的にオプション'encoding'はVimがデータを内部的にどう表現するかを定義 -します。しかし、ユニコードエンコーディングは全て内部的にはutf-8で表現され、 -(必要ならば)読み書きの際に変換されます。 - -さらなる情報については以下を参照してください > - - :help 'encoding' -< - *faq-37.4* -37.4. Vimでは様々なユニコードエンコーディングをどう表記しますか? - -Utf-8はutf-8またはutf8と書きます。utf-16はucs-2またはucs2と書きます。utf-32は -ucs-4またはucs4と書きます。エンディアンを指定することもできます(utf-8はエンディ -アンによらないのでそれ以外)。末尾に"le"をつけるとリトルエンディアンになり、 -"be"をつけるとビッグエンディアンになります。エンディアンの指定なしにucs-2や -ucs-4のエンコーディングでファイルを作成すると、Vimはあなたのマシンに応じて適切 -な方を選択します。 - -さらなる情報については以下を参照してください > - - :help encoding-names - :help encoding-values - :help encoding-table -< - *faq-37.5* -37.5. バイト順マークの有無を指定するには? - -'fileencodings'が"ucs-bom"を含む場合、ファイルを読み込むときにバイト順マークの -チェックが行われます。オプション'bomb'がオンなら、ファイルを書き込むときに、そ -のファイルのエンコーディングを保証するバイト順マークを書き込みます。 - -さらなる情報については以下を参照してください > - - :help 'fileencodings' - :help 'bomb' -< - *faq-37.6* -37.6. オプション'fileencoding'とは何ですか? - -オプション'fileencoding'はファイルを書き込むときに使うエンコーディングを定義し -ます。これが空の場合は、'encoding'の値が使われます。 - -さらなる情報については以下を参照してください > - - :help 'fileencoding' -< - *faq-37.7* -37.7. オプション'fileencodings'とは何ですか? - -オプション'fileencodings'はVimが既存のファイルを開くときに使う検査方法を定義し -ます。このオプションはカンマで区切られたエンコーディングのリストです。特別な名 -前"ucs-bom"を含めると、バイト順マークの存在をチェックするようになります。 -しかし、これが"utf-8"の後に来ると認識されなくなります。通常は、"ucs-bom"を含め -るならば、リストの最初に書くべきです。 - -Vimはファイルを開くとき、そのファイルを'fileencodings'内にリストされたエンコー -ディングに対してチェックします。もしここでマッチするものがなければ -'fileencoding'が空文字列に設定されます。つまり、'encoding'の値が使われます。 - -さらなる情報については以下を参照してください > - - :help 'fileencodings' - :help 'encoding' -< - *faq-37.8* -37.8. オプション'termencoding'とは何ですか? - -オプション'termencoding'は、あなたがタイプしたデータをキーボードがどのようにエ -ンコードするかを定義します。これが空の場合は'encoding'と同じ値であるとされま -す。通常、このオプションはあなたのロカールに合うように設定するべきです。 - -さらなる情報については以下を参照してください > - - :help 'termencoding' - :help locale -< - *faq-37.9* -37.9. オプション'bomb'とは何ですか? - -'fileencodings'に"ucs-bom"が含まれているときファイルを読み込むと、そのファイル -の先頭にバイト順マークがあるかどうかによって'bomb'がオン/オフに設定されます。 -'bomb'がオンになっていると、ファイル書き込み時に、バイト順マークが書き込まれま -す。このバイト順マーク書き込みを手動で設定することもできます。 - -さらなる情報については以下を参照してください > - - :help 'bomb' -< - *faq-37.10* -37.10. これらのオプションの典型的な例はどこにありますか? - -これらを別な言葉で例をつけて説明した"tip"がここにあります。 -http://vim.sourceforge.net/tip_view.php?tip_id=246 . - - *faq-37.11* -37.11. ユニコードの文字を挿入するには? - -いくつかの方法があります: - -- キーボード上にある文字は普通にタイプできます。フランスのキーボードの曲線ア - クセント記号のように"dead-key"プリフィックスが必要なものもです。 -- ダイグラフが定義されている文字は、<Ctrl-K>に続けて2つの文字をタイプすること - で入力できます。 -- オプション'digraph'がセットされていると、ダイグラフが定義されている文字は - <char1><BS><char2>のようにして入力できます。 -- どんな文字も<Ctrl-V>プリフィックスを使えば入力できます(<Ctrl-V>がクリップボ - ードからペーストするようにマップされている場合は<Ctrl-Q>です)。 - -さらなる情報については以下を参照してください。 > - - :help digraphs - :help 'digraph' - :help i_CTRL-V_digit -< - *faq-37.12* -37.12. どのダイグラフがどの文字に定義されているかを知るには? - -まず'encoding'を適切に(例えばutf-8に)設定してください。それから:digraphsを使っ -て現在定義されているダイグラフを表示します。 - -さらなる情報については以下を参照してください。 > - - :help :digraphs - :help 'encoding' -< - -============================================================================= - vim:tw=78:ts=8:ft=help:norl:list: diff --git a/runtime.old/doc/arabic.jax b/runtime.old/doc/arabic.jax deleted file mode 100644 index 373c0b193..000000000 --- a/runtime.old/doc/arabic.jax +++ /dev/null @@ -1,301 +0,0 @@ -*arabic.txt* For Vim バージョン 7.3. Last change: 2010 Nov 13 - - - VIM REFERENCE MANUAL by Nadim Shaikli - - -アラビア語サポート (オプション & マッピング) *Arabic* - -{Vi にはこれらのコマンドはない} - - *E800* -right-to-left (右横書き) とアラビア語マッピングを使用するには、Vim を -|+arabic| 機能付きでコンパイルする必要があります。 - -これらの機能は Nadim Shaikli <nadim-at-arabeyes.org> によって作成されました。 - -このファイルは GUI の Vim で以下の設定をして表示するのが最適です: > - - :set encoding=utf-8 - :set arabicshape - - -はじめに --------- -アラビア語はいくつかの特殊な機能を必要とする言語です。文字は右から左へ向かうの -でスクリーン上でもそのように表示する必要があります (つまり右から左へ表示す -る)。アラビア語は文字変形 (shaping) も必要とします。文字を書く位置によって同じ -文字でも別の字形になります (単語の最初、中、最後、または単独で書くかで変わ -る)。アラビア語は二種類の文字合成も必要とします。場合によっては、一つの文字に -他の文字を最大二つまで重ねる (合成、composing) か、二つの文字を一つの文字に置 -換する (結合、combining) かします。 -アラビア語を適切に表示するには ISO-8859-6 (U+0600-U+06FF) のフォントに加えて -Presentation Form-B (U+FE70-U+FEFF) のフォントも必要です。これらはいわゆる -ISO-10646-1 フォントのサブセットです。 - -コマンド、プロンプト、ヘルプファイルはアラビア語にはなりません。したがってユー -ザーインターフェースは標準の Vi インターフェースのままです。 - - -特徴 ------ -o left-to-right ファイルの編集はオリジナルの VIM と変わりません。 - -o right-to-left ウィンドウでのファイルの表示と編集。表示方向はウィンドウ単位 - なので、同じファイルを right-to-left と left-to-right で同時に表示できま - す。 - -o right-to-left のための特殊な端末を必要としない。 - right-to-left の機能はハードウェアに依存していません。必要なのはアラビア語 - フォントだけです。 - -o オリジナルの VIM との互換性。ほとんどの機能は right-to-left モードでも機能 - します (バグになりやすい) - -o キーボードマッピングと反転挿入モード (reverse insert mode) を一つのコマンド - で切り替える。 - -o アラビア語サポートを一つのコマンドで切り替える。 - -o アラビア語モードでは数字は左から右へ入力されます。その後で数字以外の文字を - 入力すると、その文字は数字の一番左側に挿入されます。 - -o 反転挿入モードでのコマンドラインのアラビア語キーマッピング。 - -o 正式な双方向機能は VIM を双方向対応端末エミュレータ上で実行すれば利用可能で - す。 - - -アラビア語フォント *arabicfonts* ------------------- - -VIM は固定幅フォントを使います。アラビア語には ISO-8859-6 と Presentation -Form-B のフォントが必要です (Form-B 無しではアラビア語は使用できない)。フォン -トを探す際にはいわゆる 'ISO-10646-1' フォントを探してください。インターネット -を検索するか www.arabeyes.org を見て必要なアラビア語フォントを手に入れてくださ -い。 - - -フォントのインストール ----------------------- - -o X ウィンドウシステム (Unix/Linux) でのフォントのインストール - - システムによって違いますが、アラビア語フォントのファイルを適当なディレクト - リにコピーします。そのアラビア語フォントをコピーしたディレクトリに移動して - 次のコマンドを実行します: - - % mkfontdir - % xset +fp path_name_of_arabic_fonts_directory - - -使用方法 --------- -実際に Vim でアラビア語を使用する前に、しなければならない設定がいくつかありま -す。 - -o アラビア語フォントを設定する - - + VIM GUI で 'guifont' をアラビア語フォントに設定します。VIM ウィンドウで - 次のように入力します。 -> - :set guifont=your_ARABIC_FONT -< - NOTE: 'your_ARABIC_FONT' の部分には Linux/Unix システムで使用されている - 実際のフォント名を入れてください。 - (例: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1) - - 'guifont' の設定を .vimrc ファイルに書くこともできます。言い換えると、 - ':set guifont=your_ARABIC_FONT' を .vimrc ファイルに書くことができます。 - - + X ウィンドウ環境では、'-fn your_ARABIC_FONT' を VIM の起動引数に指定する - 方法もあります。 - -o 適切なエンコーディングを設定する - アラビア語に適したエンコーディングを設定するには次のコマンドを .vimrc ファ - イルに追加します。 -> - :set encoding=utf-8 -< - (このコマンドを VIM ウィンドウで直接実行しないでください) - 簡単に言えば ':set encoding=utf-8' を .vimrc ファイルに書くだけです。 - - アラビア語を UTF-8 以外のエンコーディングで使用すると次の警告メッセージが表 - 示されます。 - - *W17* > - Arabic requires UTF-8, do ':set encoding=utf-8' - -o アラビア語設定の有効化 [近道] - - 手っ取り早く設定するには、コマンドラインから次のようにして VIM を起動する - か、 - - % vim -A my_utf8_arabic_file ... - - または VIM の中で次のコマンドを実行して 'arabic' を有効にします -> - :set arabic -< - これが最も簡単な方法です。'termbidi' が有効化されていなければ、次の設定が実 - 行されます: - - 1. 適切なキーマップを設定する - 2. 合成文字を一度で削除できるようにする - 3. rightleft モードを有効にする - 4. rightleftcmd モードを有効にする (コマンドラインに作用する) - 5. arabicshape モードを有効にする (表示文字を変更する) - - .vimrc ファイルに ':set arabic' を書いておくこともできます。 - - 次のコマンドでアラビア語サポートを無効化できます -> - :set noarabic -< - コマンドによって有効にされた設定がすべてリセットされます。他のバッファに影 - 響があるようなグローバル設定は変更されません。 - 簡単に言えば 'noarabic' コマンドによって次の設定が実行されます: - - 1. キーマップ切替をリセットする - 2. 合成文字を一度で削除できる機能を無効化にする - 3. rightleft モードを無効化する - - NOTE: 'arabic' コマンドは 'termbidi' を見て端末が双方向テキスト - (bi-directional, bidi) をサポートしているかどうかを考慮します (例えば - "mlterm" がサポートしています)。 - 'termbidi' が利用できる場合は、rightleft のサポートが優れているそちら - の使用をお勧めします。 - 'termbidi' が有効な場合は 'arabic' はキーマップのみ設定します。 - - もし、冗長で明示的な方法が好きで、'arabic' コマンドを使って近道をしたくない - という場合は、以下の説明を読んでください (':set arabic' を使用する方はこの - 節は飛ばして構いません)。 - - + アラビア語キーマッピングの有効化 - - アラビア語キーマップを有効可するには (つまり English/Latin キーボードを - 標準のアラビア語キーボードのようにするには)、'keymap' コマンドを - "arabic" に設定します。VIM ウィンドウで次のように入力します -> - :set keymap=arabic -< - 'keymap' 設定コマンドを .vimrc ファイルに書くこともできます。言い換えれ - ば、.vimrc ファイルに ":set keymap=arabic' を含めることができます。 - - アラビア語のキーマッピングとデフォルト (English) のキーマッピングを切り - 替えるには、インサートモード (または追加/置換モード) で 'CTRL-^' キーを - 押します。コマンドラインのモード表示の隣に "Arabic" の文字列が表示され - (例: -- INSERT Arabic --)、それが現在のキーマップを示します。 - - + 合成文字の削除 - - 初期設定では 'delcombine' オプションは無効化されています。このオプション - は LAM_ALEF (LAA) 合成文字内の ALEF を削除し、LAM だけを残すことを可能に - します (つまり合成文字を解除して元の字形に戻す。これは harakat とその合 - 成字形にも関係する)。このオプションを有効化するには VIM ウィンドウで次の - ように入力します -> - :set delcombine -< - 'delcombine' の設定コマンドを .vimrc ファイルに書くこともできます。言い - 換えれば、.vimrc ファイルに ":set delcombine' を含めることができます。 - - + アラビア語 right-to-left モード - - 初期設定では VIM は left-to-right モードで起動します。'rightleft' を設定 - することでウィンドウの方向を変更できます。使用方法は次のとおり。 - - - left-to-right モードと right-to-left モードの切り替えは ':set - rightleft' と ':set norightleft' でできます。 - - - left-to-right モードでは、':set rl' コマンドを実行します - ('rl' は rightleft の省略形)。 - - - Vim を起動したときに常に right-to-left モードにしたい場合は '.vimrc' - ファイルに ':set rl' を書いてください。 - - + アラビア語 right-to-left コマンドラインモード - - 特定のコマンドでは right-to-left モードで編集ができます。現在対応してい - るのは検索コマンドだけです。 - - 動作は 'rightleftcmd' オプションで変更できます。初期設定は "search" で、 - これは 'rightleft' がオンになっているウィンドウで検索コマンドを使うと - right-left モードでの編集になります。これを無効化するには次のようにしま - す。 -> - :set rightleftcmd= -< - 再び検索コマンドでの right-left 編集を有効化するには次のようにします。 -> - :set rightleftcmd& -< - + アラビア語字形モード - - アラビア語は視覚字形変更 (shaping(文字変形), composing(合成), - combining(結合)) を必要としますが、それを有効にするには 'arabicshape' を - 設定します。VIM ウィンドウで次のコマンドを実行します。 -> - :set arabicshape -< - .vimrc ファイルで 'arabicshape' を設定することもできます。その場合は - ':set arabicshape' を .vimrc ファイルに書きます。 - - -Keymap/Keyboard *arabickeymap* ---------------- - -VIM で使用する文字エンコーディングは標準の UTF-8 です。 -他のエンコーディングの使用は推奨されていません。 - -Note: UTF-8 はあらゆるものを含むエンコーディングで、アラビア語において唯一サ - ポートされている (そして推奨されている) エンコーディングです (他のプロプ - ライエタリなエンコーディングは非推奨であり使うべきではありません)。 - -o キーボード - - + インサートモードと置換モードでは CTRL-^ でアラビア語モードとラテン語モー - ドが切り替わります。 - - + キーボードマッピングはマイクロソフトのアラビア語キーマップに基づいていま - す (アラビア語圏のデファクトスタンダードです): - - +---------------------------------------------------------------------+ - |! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ | - |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ | - +---------------------------------------------------------------------+ - |Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > | - |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د | - +-----------------------------------------------------------+ - |A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" | - |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط | - +------------------------------------------------------+ - |Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ | - |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ | - +-------------------------------------------------+ - -制限 ------ - -o VIM の GUI では Bi-directionality (双方向性) は正しくサポートされていません - (つまりアラビア語とラテン語を同じ行に書いたときに正しく表示されません)。 - - -既知のバグ ----------- - -既知の小さなバグが一つあります。 - - 1. LAM (U+0644) のうしろに haraka (例: Fatha (U+064E)) を入力して、そして - ALEF (U+0627) を入力したとき、文字が正しく結合されません。これは二つの文字 - に挟まれた haraka が正しく表示されないために起こります。 - - WORK-AROUND: LAM と ALEF の間に harakats を置かないでください。 - 一般に、harakats と LAM+ALEF の結合文字が正しく表示されること - は期待できません (二つの文字のうしろに入力したとしてもです)。 - これは表示上の問題なので、ファイルを保存するときには正しい情 - 報が書き込まれます。情報は失われません。 - -他に既知のバグはありません。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/autocmd.jax b/runtime.old/doc/autocmd.jax deleted file mode 100644 index 50b022590..000000000 --- a/runtime.old/doc/autocmd.jax +++ /dev/null @@ -1,1311 +0,0 @@ -*autocmd.txt* For Vim バージョン 7.3. Last change: 2011 May 19 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -自動コマンド *autocommand* - -基本的な説明については、ユーザマニュアルの |40.3| 章を参照。 - -1. はじめに |autocmd-intro| -2. 自動コマンドの定義 |autocmd-define| -3. 自動コマンドの削除 |autocmd-remove| -4. 自動コマンドの列挙 |autocmd-list| -5. イベント |autocmd-events| -6. パターン |autocmd-patterns| -7. バッファローカルな自動コマンド |autocmd-buflocal| -8. グループ |autocmd-groups| -9. 自動コマンドの実行 |autocmd-execute| -10.自動コマンドの使用 |autocmd-use| -11.自動コマンドを無効にする |autocmd-disable| - -{Vi にはこういったコマンドは全くない。} -{only: |+autocmd| の機能は、コンパイル時に有効にされていなければ使えない。} - -============================================================================== -1. はじめに *autocmd-intro* - -ファイルを読み込んだり書き込むときや、バッファやウィンドウに入ったり出たりし -たとき、あるいはVimを終了させるときに、コマンドを自動的に実行するように指定で -きる。 例えば "*.c" にマッチするファイルに対して、オプション 'cindent' をオン -にする自動コマンドを作ることができる。また自動コマンドでさらに高度な機能を実 -装することができる。圧縮ファイルを編集するといったような機能だ (|gzip-example| -を参照)。こういった自動コマンドはファイル .vimrc かファイル .exrc に書き込む。 - - *E203* *E204* *E143* -注意:自動コマンドは大変強力であるので、思いも寄らない副作用をもたらすことがあ -る。テキストを壊さないように注意しなければならない。 -- 捨ててもよいようなファイルのコピーに対して、最初にテストしておくのがよい。例 - えば、ファイルの編集開始時にファイルを解凍する自動コマンドを使うときには、 - 書き込みするときに圧縮を行う自動コマンドが正しく働くか確かめること。 -- 実行中のエラー (例えばディスクが満杯になる) に対して、対処の準備をしておかな - ければならない。バッファへの変更に対しては大抵アンドゥができるが、他のファイ - ルへの変更は、自分で処理しなければならないかもしれない (例えば、解凍されたファ - イルを圧縮する、等)。 -- もしイベント BufRead* の自動コマンドによって圧縮ファイルを編集できるなら、 - FileRead* でも同じ事ができるようにするべきである (こうすることで復旧可能にな - る場合がたまにある)。可能であれば、イベント File* や Buf* には同じ自動コマン - ドを使うのはよい考えだ。 - -============================================================================== -2. 自動コマンドの定義 *autocmd-define* - -Note: コマンド ":autocmd" には他のコマンドを続けることはできない。'|' はみなコ -マンドの一部と認識されるからである。 - - *:au* *:autocmd* -:au[tocmd] [group] {event} {pat} [nested] {cmd} - {pat} |autocmd-patterns| に一致するファイルで、{event} - のときに自動的に実行するコマンドのリストに、{cmd} を加 - える。 - {cmd} は常に既存の自動コマンドの後に追加されるので、 - 自動コマンドは指定された順に実行される。 [nested] につ - いては|autocmd-nested| を参照。 - -特殊なパターン<buffer>や<buffer=N>はバッファローカルな自動コマンドを定義する。 -|autocmd-buflocal|を参照. - -Note ":autocmd" の引数の中の特別な文字 (例えば "%" や "<cword>" 等) は、 -自動コマンドが定義されたときに展開されるのではなく、イベントの発生が認識され、 -{cmd} が実行されるときに展開されることに注意せよ。唯一の例外は、"<sfile>" が -自動コマンドが定義されたときに展開されることである。例: > - - :au BufNewFile,BufRead *.html so <sfile>:h/html.vim - -ここで <sfile> は、この行を含むファイルの名前に展開される。 - -ファイル .vimrc が2回読み込まれるとき、自動コマンドは二度現れる。これを避ける -ため、このコマンドをファイル .vimrc の自動コマンドを定義する所の前に入れてお -く必要がある。 > - - :autocmd! " 現在のグループに対する「全て」の自動コマンドを削除。 - -もし全ての自動コマンドを消去したくなかったら、代わりに変数を使って -自動コマンドを読み込むのがただ1度だけにすることができる。 > - - :if !exists("autocommands_loaded") - : let autocommands_loaded = 1 - : au ... - :endif - -引数 [group] が指定されないと、現在のグループが使われる (":augroup" で定義さ -れたもの)。そうでなければ、Vimは [group] で定義されたグループを使う。 -Note [group] はあらかじめ定義されていなければならないことに注意。 -":au group ..." で新しいグループを定義することはできない。それには ":augroup" -を使うこと。 - -自動コマンドをテストするとき、オプション 'verbose' が便利かもしれない。 > - :set verbose=9 -この設定により、Vimは自動コマンドが実行されるとそれらを表示するようになる。 - -スクリプト内で自動コマンドを定義するときには、スクリプト内でのみ有効なローカ -ル関数とローカルキーマップを利用できる。イベントが発生してコマンドが実行される -とき、コマンドは自分の定義されたスクリプト内での設定に従って働く。これはコマン -ドに |<SID>| が使われているときに問題になる。 - -コマンドを実行するとき、あるコマンドからのメッセージは前のメッセージを上書きし -てしまう。これはコマンドを手動で実行するときとは違う動作である。大抵、メッセー -ジスクリーンはスクロールしないので、「続けるには」というプロンプトは現れない。 -また1個のコマンドが2つのメッセージを出すときには、何にせよメッセージは上書きさ -れてしまう。 - -============================================================================== -3. 自動コマンドの除去 *autocmd-remove* - -:au[tocmd]! [group] {event} {pat} [nested] {cmd} - {event} と {pat} に関連づけられた全ての自動コマンドを - 除去し、コマンド {cmd} を加える。 [nested] については - |autocmd-nested| を参照。 - -:au[tocmd]! [group] {event} {pat} - {event} と {pat} に関連づけられた全ての自動コマンドを - 除去する。 - -:au[tocmd]! [group] * {pat} - {pat} に関連づけられた、全てのイベントに関する - 自動コマンドを全て除去する。 - -:au[tocmd]! [group] {event} - {event} に関連づけられた「全ての」自動コマンドを除去す - る。 - -:au[tocmd]! [group] 「全ての」自動コマンドを除去する。 - -引数 [group] が指定されないと、現在のグループが使われる (":augroup" で定義され -たもの)。そうでなければ、 [group] で定義されたグループが使われる。 - -============================================================================== -4. 自動コマンドの列挙 *autocmd-list* - -:au[tocmd] [group] {event} {pat} - {event} と {pat} に関連づけられた全ての自動コマンドを - 表示する。 - -:au[tocmd] [group] * {pat} - {pat} に関連づけられた、全てのイベントに関する - 自動コマンドを表示する。 - -:au[tocmd] [group] {event} - {event} に関連づけられた全ての自動コマンドを表示する。 - -:au[tocmd] [group] 全ての自動コマンドを表示する。 - -引数 [group] を指定すると、 [group] に関する自動コマンドのみが列挙される。そ -うでなければ、「全ての」グループに関する自動コマンドが表示される。Note ここで -の引数による動作の違いは、自動コマンドを定義したり除去するときとは違うことに注 -意。 - -バッファローカルな自動コマンドを列挙するには、<buffer>または<buffer=N>という形 -のパターンを使う。|autocmd-buflocal|を参照。 - - *:autocmd-verbose* -'verbose'がゼロでないならば、自動コマンドを列挙するときに、それが最後にどこで -定義されたかも表示する。例: > - - :verbose autocmd BufEnter - FileExplorer BufEnter - * call s:LocalBrowse(expand("<amatch>")) - Last set from /usr/share/vim/vim-7.0/plugin/NetrwPlugin.vim -< -より詳しい情報は|:verbose-cmd|を参照。 - -============================================================================== -5. イベント *autocmd-events* *E215* *E216* - -複数のイベントをコンマ(,)で区切ったリストにして指定することもできる。そのリス -トにはスペースを含めてはいけません。そのコマンドは指定したリストにある全てのイ -ベントに適用されます。 - -「ファイル読み込み」には次の4種類のイベントが発生しうる。 - BufNewFile 存在しないファイルの編集を開始する。 - BufReadPre BufReadPost 既存のファイルの編集を開始する。 - FilterReadPre FilterReadPost フィルタの出力による一時ファイルを読み - 込む。 - FileReadPre FileReadPost その他のファイルを読み込む。 -Vimはファイルを読み込むときにこの4種類のうちどれか1つを利用する。"Pre"と"Post" -のイベントは、ファイル読み込みの前後で両方とも起動される。 - -Note イベント *ReadPre や、全てのイベント Filter に関する自動コマンドは、カレ -ントバッファを変更してはならないことに注意 (これが起きると、エラーメッセージが -表示される)。これは、間違ったバッファにファイルを読み込むのを防ぐためである。 - -Note オプション 'modified' は、BufReadPost と BufNewFile の自動コマンドを実行 -した「後に」オフに設定されることに注意。しかし 'modified' が自動コマンドから -オンに設定されたときはそうならない。 - -'eventignore' は、いくつかあるいは全てのイベントを無視するために使える。 - - - *autocommand-events* *{event}* -Vimは以下のイベントを認識する。イベント名が大文字か小文字かは無視される (例え -ば "BufRead" の代わりに "BUFread" や "bufread" が使える)。 - -まず機能ごとに短い説明とともに概要を解説する。それから完全な説明とともにアル -ファベット順のリストを載せる |autocmd-events-abc|。 - -名前 発生するとき ~ - - 読み込み -|BufNewFile| 存在しないファイルの編集を始めたとき -|BufReadPre| 新しいバッファの編集を始めたとき。ファイルを読み込む前 -|BufRead| 新しいバッファの編集を始めたとき。 - ファイルを読み込んだ後 -|BufReadPost| 新しいバッファの編集を始めたとき。 - ファイルを読み込んだ後 -|BufReadCmd| 新しいバッファの編集を始める前 |Cmd-event| - -|FileReadPre| ":read"でファイルを読み込む前 -|FileReadPost| ":read"でファイルを読み込んだ後 -|FileReadCmd| ":read"でファイルを読み込む前 |Cmd-event| - -|FilterReadPre| フィルタコマンドでファイルを読み込む前 -|FilterReadPost| フィルタコマンドでファイルを読み込んだ後 - -|StdinReadPre| 標準入力からバッファに読み込む前 -|StdinReadPost| 標準入力からバッファに読み込んだ後 - - 書き込み -|BufWrite| バッファ全体をファイルに書き込むとき -|BufWritePre| バッファ全体をファイルに書き込むとき -|BufWritePost| バッファ全体をファイルに書き込んだ後 -|BufWriteCmd| バッファ全体をファイルに書き込む前 |Cmd-event| - -|FileWritePre| バッファの一部をファイルに書き込むとき -|FileWritePost| バッファの一部をファイルに書き込んだ後 -|FileWriteCmd| バッファの一部をファイルに書き込む前 |Cmd-event| - -|FileAppendPre| ファイルに追加するとき -|FileAppendPost| ファイルに追加した後 -|FileAppendCmd| ファイルに追加する前 |Cmd-event| - -|FilterWritePre| フィルタコマンドやdiff用にファイルを書き込むとき -|FilterWritePost| フィルタコマンドやdiff用にファイルを書き込んだ後 - - バッファ -|BufAdd| バッファリストにバッファを追加した直後 -|BufCreate| バッファリストにバッファを追加した直後 -|BufDelete| バッファリストからバッファを削除する前 -|BufWipeout| 完全にバッファを削除する前 - -|BufFilePre| カレントバッファの名前を変える前 -|BufFilePost| カレントバッファの名前を変えた後 - -|BufEnter| バッファに入った後 -|BufLeave| 別のバッファへ移る前 -|BufWinEnter| バッファがウィンドウに表示された後 -|BufWinLeave| バッファがウィンドウから削除される前 - -|BufUnload| バッファをアンロードする前 -|BufHidden| バッファが隠れバッファになった直後 -|BufNew| 新規バッファを作成した直後 - -|SwapExists| 既存のスワップファイルを検出したとき - - オプション -|FileType| オプション'filetype'がセットされたとき -|Syntax| オプション'syntax'がセットされたとき -|EncodingChanged| オプション'encoding'が変更された後 -|TermChanged| オプション'term'が変更された後 - - 起動と終了 -|VimEnter| 全ての起動処理が終わった後 -|GUIEnter| GUIの起動が成功した後 -|TermResponse| |t_RV|に対する端末の反応を受け取った後 - -|VimLeavePre| Vimを終了する前、viminfoファイルを書き出す前 -|VimLeave| Vimを終了する前、viminfoファイルを書き出した後 - - その他 -|FileChangedShell| 編集を始めた後にファイルが変更されたことを検出したとき -|FileChangedShellPost| 編集を始めた後にファイルが変更されたことに対処した後 -|FileChangedRO| 読み込み専用ファイルに対して最初に変更を加える前 - -|ShellCmdPost| シェルコマンドを実行した後 -|ShellFilterPost| シェルコマンドでフィルタをかけた後 - -|FuncUndefined| 呼び出そうとしたユーザ定義コマンドが定義されていなかっ - たとき -|SpellFileMissing| スペリングファイルを使おうとしたが見つからなかったとき -|SourcePre| Vimスクリプトを読み込む前 -|SourceCmd| Vimスクリプトを読み込む前 |Cmd-event| - -|VimResized| Vimのウィンドウサイズが変わったとき -|FocusGained| Vimが入力フォーカスを得たとき -|FocusLost| Vimが入力フォーカスを失ったとき -|CursorHold| ユーザが一定時間キーを押さなかったとき -|CursorHoldI| インサートモードでユーザが一定時間キーを押さなかった - とき -|CursorMoved| ノーマルモードでカーソルが移動したとき -|CursorMovedI| インサートモードでカーソルが移動したとき - -|WinEnter| 別のウィンドウに入った後 -|WinLeave| ウィンドウから離れる前 -|TabEnter| 別のタブページに入った後 -|TabLeave| タブページから離れる前 -|CmdwinEnter| コマンドラインウィンドウに入った後 -|CmdwinLeave| コマンドラインウィンドウから離れる前 - -|InsertEnter| インサートモードを開始したとき -|InsertChange| インサートや上書きモードで<Insert>をタイプしたとき -|InsertLeave| インサートモードを抜けるとき -|InsertCharPre| インサートモードで文字が入力されたとき、その文字が挿入 - される前 - -|ColorScheme| カラースキームを読み込んだ後 - -|RemoteReply| Vimサーバからの返答を受け取ったとき - -|QuickFixCmdPre| QuickFixコマンドを実行する前 -|QuickFixCmdPost| QuickFixコマンドを実行した後 - -|SessionLoadPost| セッションファイルを読み込んだ後 - -|MenuPopup| ポップアップメニューを表示する直前 - -|User| ":duautocmd"との組合せで使われる - -自動コマンドイベントのアルファベット順リスト: *autocmd-events-abc* - - *BufCreate* *BufAdd* -BufAdd or BufCreate バッファリストに追加されるバッファを作った直後 - か、バッファをバッファリストに追加した直後。 - バッファリスト内のバッファがリネームされた直後 - にも発生する。 - イベント BufCreate は歴史上の理由で存在してい - る。 - NOTE: このイベントで自動コマンドが実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される作成されたバッファは異なる - かもしれないことに注意。 - *BufDelete* -BufDelete バッファリストからバッファを削除する前。(バッ - ファが読み込まれているなら) BufUnload が最初に - 呼び出されるだろう。 - また、バッファリスト内のバッファがリネームされ - た直前にも使われる。 - NOTE: このイベントで自動コマンドが実行された - ときは、"%" で表されるカレントバッファと - "<afile>" と "<abuf>" で表される解放されるバッ - ファとは異なるかもしれないことに注意。 - 他のバッファに切り替えないこと。もしすると問題 - が発生するだろう。 - *BufEnter* -BufEnter バッファに入った後。ファイルタイプに関するオプ - ションの設定に便利である。バッファの編集を始め - るときにも、BufReadPost の自動コマンドの後に - 実行される。 - *BufFilePost* -BufFilePost 現在のバッファの名前をコマンド ":file" または - ":saveas" で変更した後。 - *BufFilePre* -BufFilePre 現在のバッファの名前をコマンド ":file" または - ":saveas" で変更する前。 - *BufHidden* -BufHidden バッファが隠れ状態 (hidden) になった直後。つま - りそのバッファを表示するウィンドウがもう存在し - ないのに、バッファが解放されなかったり、削除さ - れないとき。":qa" や "q" でVimを終了するときに - は使われない。 - NOTE: このイベントで自動コマンドが実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - *BufLeave* -BufLeave 他のバッファに移る前。カレントウィンドウを離れ - たり、閉じたりするときで、新しいカレントウィン - ドウが同じバッファを開いていないとき。":qa" や - "q" でVimを閉じるときには使われない。 - *BufNew* -BufNew 新しいバッファを作った直後。バッファがリネーム - された直後にも発生する。バッファがバッファリス - トに追加されると、イベント BufAdd も発生する。 - NOTE: このイベントで自動コマンドが実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - *BufNewFile* -BufNewFile 存在しないファイルの編集を始めたとき。スケルト - ンファイル (訳注: テンプレートファイルともいう) - に読み込むときに使える。 - *BufRead* *BufReadPost* -BufRead or BufReadPost 新しいバッファの編集を始めたときの、ファイルを - バッファに読み込んだ後で、モードラインを実行す - る前。モードラインを実行した後に何かするには - |BufWinEnter|を参照してください。これは ":r - file" には「動作しない」。ファイルが存在しない - ときも使えない。またファイルの復旧に成功したと - きにも使われる。 - *BufReadCmd* -BufReadCmd 新しいバッファの編集を始める前。ファイルをバッ - ファ内に読み込む役目を負う。 |Cmd-event| - *BufReadPre* *E200* *E201* -BufReadPre 新しいバッファの編集を始めたときの、ファイルを - バッファに読み込む前。読み込むファイルが存在し - ないときは使えない。 - *BufUnload* -BufUnload バッファを解放する前。これは、バッファ内のテキ - ストが解放されるときである。BufWritePost の後 - で、BufDelete の前かもしれない。Vimが終了しよ - うとしているとき、読み込まれた全てのバッファに - ついて発生する。 - NOTE: このイベントで自動コマンドが実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - 他のバッファに切り替えないこと。もしすると問題 - が発生するだろう。 - 終了時に v:dying が 2 以上のときはこのイベント - は発生しません。 - *BufWinEnter* -BufWinEnter バッファがウィンドウ内に表示された後。これはバッ - ファが読み込まれたとき (モードラインの処理後) - か、隠れ (hidden) バッファがウィンドウ内に表示 - されたとき (もう隠れバッファでなくなったとき)。 - 引数なしで |:split| をしたときや、既にウィンド - ウに表示されているバッファを指定して ":split" - をしたときは、同じバッファを開いたままなので、 - このイベントは発生しない。既存のバッファがその - まま使われるためである。しかし、カレントバッファ - の名前を指定して":split" をすると、そのバッファ - を再読み込みすることになるので、発生する。 - *BufWinLeave* -BufWinLeave バッファがウィンドウから取り除かれる前。そのバッ - ファが別のウィンドウ内で表示中ならば発生しない。 - Vimの終了時にも発生する。イベント BufUnload や - BufHidden よりも前に発生する。 - NOTE: このイベントで自動コマンドが実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - 他のバッファに切り替えないこと。もしすると問題 - が発生するだろう。 - 終了時に v:dying が 2 以上のときはこのイベント - は発生しません。 - *BufWipeout* -BufWipeout バッファを完全に削除する前。イベント BufUnload - と BufDelete が先に発生するかもしれない (バッ - ファが読み込まれていて、バッファリスト内に存在 - するなら)。バッファがリネームされる直前にも発 - 生する (そのバッファがバッファリスト内になくと - も)。 - NOTE: このイベントで自動コマンドが実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - *BufWrite* *BufWritePre* -BufWrite or BufWritePre バッファ全体をファイルに書き込む前。 - *BufWriteCmd* -BufWriteCmd バッファ全体をファイルに書き込む前。ファイルへ - の書き込みの役目を負い、成功したときはオプショ - ン 'modified' をオフにする。バッファの内容を変 - 更すべきではない。 |Cmd-event| - *BufWritePost* -BufWritePost バッファ全体をファイルに書き込んだ後 (イベント - BufWritePre によるコマンドをアンドゥする役目を - 果たす)。 - *CmdwinEnter* -CmdwinEnter Command-lineウィンドウに入った後。この特殊なウィ - ンドウに対してのみオプションを設定するのに便利 - である。このイベントはイベント BufEnter や - WinEnter の「代わりに」発生する。 - <afile> は、command-lineの種類を示す1文字に設 - 定される。 |cmdwin-char| - *CmdwinLeave* -CmdwinLeave Command-lineウィンドウから出る前。イベント - CmdwinEnter で行ったグローバル設定を消去するの - に便利である。このイベントは BufLeave や - WinLeave の「代わりに」発生する。 - <afile> は、command-lineの種類を示す1文字に設 - 定される。 |cmdwin-char| - *ColorScheme* -ColorScheme カラースキームを読み込んだ後。 |:colorscheme| - *CursorHold* -CursorHold 'updatetime' の時間の間、ユーザがキーを押さな - かったとき。ユーザーが何かキーを押すまで、再び - 発生することはない (例えば、もしあなたがコーヒー - を入れるためにVimの前を離れても、その間の - 'updatetime' ミリ秒ごと発生することはない :-)。 - タグをプレビューするためには、 - |CursorHold-example| を参照。 - このイベントはノーマルモードのときのみ呼ばれる。 - コマンドの引数の入力待ち状態、またはオペレータ - の後の移動コマンド入力待ち状態のときは発生しな - い。 - レコーディングの最中にはCursorHoldイベントは発 - 生しない。|q| - Note: このイベントには対話的なコマンドは使えな - いことに注意。「続けるには」プロンプトは現れず、 - スクリーンは必要に応じて直接更新される。 - Note: 近いうちに、発生するまでの時間を設定する - 別のオプションができるだろう。 - ヒント: ステータスラインの更新を強制的に行うに - は、これを使うこと: > - :let &ro = &ro -< {Vi mのAmiga版、Unix版、Win32版、MSDOS版および - 全てのGUI 版でのみ有効} - *CursorHoldI* -CursorHoldI CursorHoldと同様だが、インサートモードのとき発 - 生する。 - *CursorMoved* -CursorMoved ノーマルモードでカーソルが移動した後。カーソル - 行のテキストが変更されたときにも発生する - (例: "x", "rx", "p"などで)。 - 先行入力があったりオペレータが実行待ちになって - いる場合は発生しない。 - |match-parens|の例を参照。 - 注意: ユーザが予期しないことや時間のかかる処理 - は行わないこと。 - *CursorMovedI* -CursorMovedI インサートモードでカーソルが移動した後。それ以 - 外はCursorMovedと同じ。 - *EncodingChanged* -EncodingChanged オプション 'encoding' が変更されたとき。例えば、 - フォント等の設定に便利である。 - *FileAppendCmd* -FileAppendCmd ファイルに追加する前。ファイルへの追加の役目を - 負う。 |Cmd-event| - *FileAppendPost* -FileAppendPost ファイルに追加した後。 - *FileAppendPre* -FileAppendPre ファイルに追加する前。 - *FileChangedRO* -FileChangedRO 読み込み専用ファイルに最初の変更を加える前。ソー - ス管理システム (訳注: CVSやRCS) からファイルを - チェックアウトするのに使われる。変更が - 自動コマンドによるときには発生しない。 - このイベントが発生するのは、バッファに最初の変 - 更を行うときや、'readonly'がセットされた後に最 - 初の変更を行うときの、変更が適用される直前であ - る。 - 警告:自動コマンドでカーソルが動かされるときの動作は、 - 定義されていない。 - *E788* - ここで他のバッファに変更をしてはならない。バッ - ファを再読み込みするとはよいが、他のバッファを - 編集してはならない。 - *FileChangedShell* -FileChangedShell ファイルのタイムスタンプが、ファイルの編集が始 - まってから変更されたことを発見したとき。 - ファイルの属性が変更されたときにも使われる。 - |timestamp| - 大抵はシェルコマンドの実行後に発生する。またコ - マンド |:checktime| の実行後や、Vimが入力フォー - カスを一度失い、再び得たときにも発生する。 - このイベントは変更されたファイルそれぞれに対し - て発生する。オプション 'autoread' がオンであり、 - かつバッファが変更されていないときには使われな - い。もし FileChangedShell の自動コマンドが存 - 在しても、警告メッセージやプロンプトは現れない。 - 変数|v:fcs_reason|に何が起こったのかが設定さ - れ、|v:fcs_choice|によってVimに次に何をすべき - かを指示できる。 - NOTE: このイベントで自動コマンドが実行された - ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な - るかもしれないことに注意。 - NOTE: この自動コマンドはカレントバッファを変 - 更したり、別のバッファにジャンプしたり、バッ - ファを消去してはいけない。 *E246* *E811* - NOTE: このイベントは、無限ループを避けるために - 決してネストしてはいけない (入れ子にならない)。 - つまり、FielChangedShellイベントの処理中は他の - FileChangedShellイベントは呼ばれない。 - *FileChangedShellPost* -FileChangedShellPost Vimの外部でファイルが変更されたのを検出・対処 - した後。ステータスラインを更新するのに使える。 - *FileEncoding* -FileEncoding 時代遅れである。まだ有効だがイベント - |EncodingChanged| と同等である。 - *FileReadCmd* -FileReadCmd コマンド ":read" でファイルを読み込む前。ファ - イルを読み込む役目を負う。 |Cmd-event| - *FileReadPost* -FileReadPost コマンド ":read" でファイルを読み込んだ後。 - Note 読み込んだテキストの先頭行と末尾行には、 - マーク '[ と '] が設定されることに注意。これは、 - 読み込まれた行に対して操作を行うのに使われる。 - *FileReadPre* -FileReadPre コマンド ":read" でファイルを読み込む前。 - *FileType* -FileType オプション 'filetype' が設定されたとき。 - パターンはファイルタイプに対して照合される。 - <afile> は 'filetype' が設定されたファイルの名 - 前として使える。<amatch> は 'filetype' の新し - い値として使える。 - |filetypes| を参照。 - *FileWriteCmd* -FileWriteCmd バッファ全体を書き込まない場合の、ファイルに書 - き込む前。ファイルへの書き込みの役目を負う。バッ - ファを変更すべきではない。 |Cmd-event| - *FileWritePost* -FileWritePost バッファ全体を書き込まない場合の、ファイルに書 - き込んだ後。 - *FileWritePre* -FileWritePre バッファ全体を書き込まない場合の、ファイルに書 - き込む前。 - *FilterReadPost* -FilterReadPost フィルタコマンドからファイルを読み込んだ後。 - Vimは FilterReadPre と同様に、現在のバッファの - 名前に対してパターンを調べる。 - *FilterReadPre* *E135* -FilterReadPre フィルタコマンドからファイルを読み込む前。Vim - は、フィルタコマンドの出力である一時ファイルの - 名前ではなく、現在のバッファの名前に対してパター - ンを調べる。 - *FilterWritePost* -FilterWritePost フィルタコマンド用のファイルを書き込んだり、差 - 分表示用のファイルを作った後。 - Vimは FilterWritePre と同様、現在のバッファの - 名前に対してパターンをチェックする。 - 'shelltemp'がオフのときは発生しない。 - *FilterWritePre* -FilterWritePre フィルタコマンド用のファイルを書き込んだり、差 - 分表示用のファイルを作る前。 - Vimはフィルタコマンドの出力である一時ファイル - の名前ではなく、現在のバッファの名前に対してパ - ターンをチェックする。 - 'shelltemp'がオフのときは発生しない。 - *FocusGained* -FocusGained Vimが入力フォーカスを得たとき。GUI版と、入力 - フォーカスを認識できるいくつかのコンソール版で - のみ有効。 - *FocusLost* -FocusLost Vimが入力フォーカスを失ったとき。GUI版と、入力 - フォーカスを認識できるいくつかのコンソール版で - のみ有効。 - *FuncUndefined* -FuncUndefined ユーザ定義関数が使われたが、定義されていなかっ - たとき。必要なときのみ関数を定義するのに便利で - ある。パターンは関数名に対して照合される。 - <amatch> と <afile> の両方とも関数名に設定され - る。|autoload-functions|を参照。 - *GUIEnter* -GUIEnter GUI の開始に成功し、ウィンドウを開いた後。 - gvim を使ったときは、VimEnter の前に発生する。 - ファイル .gvimrc からウィンドウの配置場所を設 - 定するために使うことができる。 > - :autocmd GUIEnter * winpos 100 50 -< *GUIFailed* -GUIFailed GUIの開始に失敗した後。可能ならば、Vimはターミ - ナル内で実行を継続する(Unix系のみ。Xサーバへ接 - 続が失敗したとき)。ここでVimを終了させるには、 - 次のようにする: > - :autocmd GUIFailed * qall -< *InsertChange* -InsertChange インサート・上書きモードで<Insert>をタイプした - とき。変数|v:insertmode|が新しいモードを示す。 - カーソルを移動したりなどユーザが予期しないこと - は行わないように注意。 - *InsertCharPre* -InsertCharPre インサートモードで文字が入力されたとき、その文 - 字が挿入される前。 - |v:char| 変数に入力された文字が入っている。イ - ベント内でそれを変更することで実際に挿入される - 文字を変更できる。|v:char| に 2 つ以上の文字を - 入れた場合はそのテキストはそのまま (literally) - 挿入される。 - テキストを変更することはできない |textlock|。 - このイベントは 'paste' がオンに設定されている - ときは発行されない。 - *InsertEnter* -InsertEnter インサートモード・上書きモード・Virtual上書き - モードを開始する直前。変数|v:insertmode|がモー - ドを示す。カーソルを移動したりなどユーザが予期 - しないことは行わないように注意。 - *InsertLeave* -InsertLeave インサートモードを抜けるとき。CTRL-O - |i_CTRL-O|を使ったときにも発生する。|i_CTRL-C| - のときは発生しない。 - *MenuPopup* -MenuPopup (マウス右ボタンで)ポップアップメニューを表示す - る直前。カーソル下やマウスポインタの下にあるも - のによってメニューを調整するのに便利。 - パターンにはモードを表す文字を記述する: - n ノーマル - v ビジュアル - o オペレータ実行待ち - i インサート - c コマンドライン - *QuickFixCmdPre* -QuickFixCmdPre QuickFixコマンドが実行される前 (|:make|, - |:lmake|, |:grep|, |:lgrep|, |:grepadd|, - |:lgrepadd|, |:vimgrep|, |:lvimgrep|, - |:vimgrepadd|, |:lvimgrepadd|, |:cscope|)。 - パターンには実行されるコマンドを記述する。 - |:grep| が書かれていると、'grepprg' が - "internal" にセットされていても実行される。 - このコマンドを使って変数 'makeprg' と - 'grepprg' を設定することはできない。 - このコマンドでエラーになるとQuickFixコマンドは - 実行されない。 - *QuickFixCmdPost* -QuickFixCmdPost QuickFixCmdPreと同様だが、QuickFixコマンドが実 - 行された後、最初の位置にジャンプする前に発生す - る。|QuickFixCmdPost-example| を参照。 - *RemoteReply* -RemoteReply サーバとして働くVimからの応答を受け取ったとき - |server2client()|。パターンは{serverid}に対し - て照合される。 - <amatch> は応答が送られてきたサーバの - {serverid} になり、<afile> は応答の実際の内容 - になる。 - Note これに自動コマンドを定義したときも、応答 - を読み込むのには、読み込んだ応答を処理できるよ - うに関数 |remote_read()| を使うべきであること - に注意。 - *SessionLoadPost* -SessionLoadPost |:mksession|で作られたセッションファイルを読み - 込んだ後。 - *ShellCmdPost* -ShellCmdPost |:!cmd|, |:shell|, |:make|, |:grep|を使って - シェルコマンドを実行した後。変更されたファイル - をチェックするのに使える。 - *ShellFilterPost* -ShellFilterPost ":{range}!cmd", ":w !cmd", ":r !cmd"を使って - シェルコマンドを実行した後。変更されたファイル - をチェックするのに使える。 - *SourcePre* -SourcePre Vimスクリプトを読み込む前。 |:source| - <afile>は読み込まれるファイルの名前となる。 - *SourceCmd* -SourceCmd Vimスクリプトを読み込むとき。|:source| - <afile>は読み込まれるファイルの名前となる。こ - の自動コマンドはこのファイルを読み込まねばなら - ない。 - *SpellFileMissing* -SpellFileMissing スペルチェックファイルを読み込もうとしたが、見 - つからなかったとき。パターンは言語に対して照合 - される。<amatch>は言語。'encoding'も関係する。 - |spell-SpellFileMissing|を参照。 - *StdinReadPost* -StdinReadPost 標準入力からバッファへ読み込んだ後で、モードラ - インを実行する前。Vimを開始したときに引数 "-" - が使われた場合のみ使われる (|--| 参照)。 - *StdinReadPre* -StdinReadPre 標準入力からバッファへ読み込む前。Vimを開始し - たときに引数 "-" が指定された場合のみ使われる - (|--| 参照)。 - *SwapExists* -SwapExists ファイルの編集を始めようとしてスワップファイル - が存在することを検出したとき。この状況に対応す - る方法を選択できるときだけユーザにどうするか問 - い合わせる。 - 変数|v:swapname|が見つかったスワップファイルの - 名前を保持する。<afile>は編集しようとしている - ファイルである。|v:swapcommand|が開かれたファ - イルで実行するコマンドを含んでいるかもしれな - い。 - このコマンドは変数|v:swapchoice|をVimが次にど - うするべきかを示す1文字の文字列にセットしなけ - ればならない: - 'o' 読み込み専用で開く - 'e' とにかくファイルを編集する - 'r' 復元する - 'd' スワップファイルを削除する - 'q' ファイルを編集せずに終了する - 'a' CTRL-Cを押したのと同様に強制終 - 了する - これが空文字列にセットされると、自動コマンド - SwapExistsが存在しないときと同様にユーザに問い - 合わせをする。 - 注意: バッファを変更しようとしてはならない。そ - うすると予測できない結果になる。 - *E812* - ここでは他のバッファに切り替えること、バッファ - 名を変更すること、ディレクトリを変更することは - 許可されていない。 - *Syntax* -Syntax オプション 'syntax' が設定されたとき。 - パターンは構文名に対して照合される。 - <afile> は 'syntax' が設定されたファイルの名前 - として使える。<amatch> は 'syntax' の新しい値 - として使える。 - |:syn-on| を参照。 - *TabEnter* -TabEnter タブページに入った直後 |tab-page|。WinEnterが - 発生した後、BufEnterが発生する前。 - *TabLeave* -TabLeave タブページを離れる直前 |tab-page|。最初に - WinLeaveが発生する。 - *TermChanged* -TermChanged オプション 'term' を変更した後。色やフォント等、 - ターミナル依存の設定を更新するために構文定義ファ - イルを再読み込みするのに便利である。読み込まれ - たバッファ全てで発生する。 - *TermResponse* -TermResponse |t_RV| に対する応答をターミナルから受け取った - とき。Vim変数 |v:termresponse| の値を使って、 - ターミナルのヴァージョンに応じた処理ができる。 - Note: このイベントは他のイベントの処理中にも発 - 行されることがあります。特に、ファイル入出力、 - シェルコマンドの実行、時間の掛かる処理など。 - *User* -User 自動的に実行されることはない。コマンド - ":doautocmd" によってのみ実行される - 自動コマンドのために使用される。 - *UserGettingBored* -UserGettingBored ユーザが CTRL-C を打ち込んだとき。 - ただの冗談! :-) - *VimEnter* -VimEnter ファイル .vimrc の読み込みを含む、全てのスター - トアップ処理を行い、"-c cmd" の引数を実行し、 - 全てのウィンドウを構築し、それらにバッファを読 - み込んだ後。 - *VimLeave* -VimLeave Vim を終了する前で、ファイル .viminfo を書き込 - んだ後。VimLeavePre のように、ただ1度だけ実行 - される。 - 異常終了の検出には |v:dying| を使うこと。 - 終了時に v:dying が 2 以上のときはこのイベント - は発生しません。 - *VimLeavePre* -VimLeavePre Vim を終了する前で、ファイル .viminfo を書き込 - む直前。これは終了時にたまたまカレントバッファ - になったバッファの名前とマッチしたときに、ただ - 1度だけ実行される。 大抵、パターンには "*" を - 使うと便利である。 > - :autocmd VimLeavePre * call CleanupStuff() -< 異常終了の検出には |v:dying| を使うこと。 - 終了時に v:dying が 2 以上のときはこのイベント - は発生しません。 - *VimResized* -VimResized Vimウィンドウのサイズが変わったとき。よって - 'lines'と'columns'が変更される。しかし開始時 - には発生しない。 - *WinEnter* -WinEnter 別のウィンドウに入った後。Vimの開始直後、1個目 - のウィンドウに入ったときは発生しない。ウィンド - ウの高さを設定するのに便利である。 - そのウィンドウで他のバッファを開いていたときは、 - イベント Winenter の後に BufEnter が発生する。 - Note: ":split fname" を実行したとき、WinEnter - が発生するのは、ウィンドウ分割の後だがファイル - "fname" が読み込まれる前の時点である。 - *WinLeave* -WinLeave ウィンドウを離れる前。次に入るウィンドウで他の - バッファを開いていたときは、イベント WinLeave - の前に BufLeave が発生する (ただし ":new" を使っ - たときはそうならない)。 - ":qa" や"q" でVimを終了するときには発生しない。 - -============================================================================== -6. パターン *autocmd-patterns* *{pat}* - -ファイルパターン {pat} がファイル名とマッチするかどうかは、2通りの方法で調べら -れる。 -1. パターンに '/' が含まれないとき: Vimはファイル名の後ろの部分からのみマッチ - を調べる (ファイル名の前につくディレクトリパスは除く)。 -2. パターンに '/' が含まれるとき: Vimは短いファイル名 (ユーザが打ち込んだもの) - と長いファイル名 (短いファイル名をフルパスに展開し、シンボリックリンクなら - その実体を探したもの) との両方から一致を調べる。 - -例: > - :autocmd BufRead *.txt set et -全てのテキストファイルに対しオプション 'expandtab' をオンにする。 > - - :autocmd BufRead /vim/src/*.c set cindent -ディレクトリ /vim/src 内のC言語ファイルに対しオプション 'cindent' をオンにす -る。 > - - :autocmd BufRead /tmp/*.c set ts=5 -"/tmp/test.c" から "/home/nobody/vim/src/test.c" にリンクを張っていると、 -"/tmp/test.c" の編集を始めたとき、この自動コマンドは実行される。 - -Note: パスの途中だけにマッチさせ、ルートディレクトリにマッチさせたくないとき -は、最初の1文字目に '*' を使う。例: > - :autocmd BufRead */doc/*.txt set tw=78 -この自動コマンドは、例えば "/tmp/doc/xx.txt" や "/usr/home/piet/doc/yy.txt" -にマッチする。ここで、ディレクトリの深さは関係ない。 - - -パターンがマッチするファイル名は、ワイルドカードを展開した後のものである。その -ため、次のコマンドを実行すると > - :e $ROOTDIR/main.$EXT -まずコマンドの引数は、ファイル名が自動コマンドのパターンにマッチする前に、次 -のように展開される。 > - /usr/root/main.py -イベント FileReadCmd 等を使うときにはこれに注意すること。<amatch> の値が、ユー -ザの予期するものと違うかもしれない。 - - -パターンの中で環境変数を使うこともできる。 > - :autocmd BufRead $VIMRUNTIME/doc/*.txt set expandtab -環境変数 $HOME が定義されているなら、~ をホームディレクトリとして使うこともで -きる。 > - :autocmd BufWritePost ~/.vimrc so ~/.vimrc - :autocmd BufRead ~archive/* set readonly -環境変数は、自動コマンドが定義されるときに展開される。自動コマンドが実行される -ときではない。これは command とは違っている! - - *file-pattern* -パターンの解釈方法は、ファイル名の解釈方法と大体同じである。 - * はあらゆる文字の列にマッチ - ? はあらゆる1文字にマッチ - \? は '?' にマッチ - . は '.' にマッチ - ~ は '~' にマッチ - , はパターンを分割する - \, は ',' にマッチ - { } は |pattern| の \( \) と同様 - , ('{' '}' の内側では) |pattern| の \| と同様 - \ は |pattern| で使われるものと同様の特別な意味を持つ - [ch] は 'c' または 'h' にマッチ - [^ch] は 'c' と 'h' 以外の文字にマッチ - -'/' という文字は、全てのシステムでパスの区切り文字に使われることに注意すること -(MS-DOSとOS/2でさえも)。これは、パターン内でバックスラッシュを使うことが難しい -上に、別々のシステムでも自動コマンドが動作するようにするためである。 - - *autocmd-changes* -パターンマッチの検索は、イベントの発生時に行われる。自動コマンドのどれかでバッ -ファ名を変更しても、それどころかバッファを削除しても、実行される 自動コマンド -は変わらない。例: > - - au BufEnter *.foo bdel - au BufEnter *.foo set modified - -これはカレントバッファを削除し、代わりにカレントバッファになったバッファ内でオ -プション 'modified' をオンにする。Vimは "*.foo" が新しいカレントバッファのバッ -ファ名にマッチしなくとも気にしない。"*.foo" はイベントが発生した時点でのバッファ -名にマッチする。 - -しかし、|:bwipe|でワイプアウトされたバッファに対しては、バッファローカルな -自動コマンドは実行されない。|:bdel|で削除されたバッファは実際にはまだ存在して -いる(リストされなくなっただけ)なので、自動コマンドは実行される。 - -============================================================================== -7. バッファローカルな自動コマンド *autocmd-buflocal* - *autocmd-buffer-local* - *<buffer=N>* *<buffer=abuf>* *E680* - -バッファローカルな自動コマンドは特定のバッファに結びつけられている。これは名前 -を持たないバッファや特定のパターンにマッチしない名前のバッファに使うと便利であ -る。しかしそれぞれのバッファに明示的に追加する必要がある。 - -バッファローカルな自動コマンドはパターンの代わりに以下の形式のどれかを使う: - <buffer> カレントバッファ - <buffer=99> バッファ番号99 - <buffer=abuf> <abuf> の使用(自動コマンドを実行するときのみ) - |<abuf>| - -例: > - :au CursorHold <buffer> echo 'hold' - :au CursorHold <buffer=33> echo 'hold' - :au CursorHold <buffer=abuf> echo 'hold' - -自動コマンドに対するコマンドは全てバッファローカルな自動コマンドに対しても機能 -する。パターンの代わりに特別な文字列を使う。例: > - :au! * <buffer> " カレントバッファのバッファローカル自動 - " コマンドを削除する - :au! * <buffer=33> " バッファ#33のバッファローカル自動コマン - " ドを削除する。 - :bufdo :au! CursorHold <buffer> " 全バッファから指定されたイベントに対す - " る自動コマンドを削除する - :au * <buffer> " カレントバッファのバッファローカル自動 - " コマンドをリストする - -カレントバッファに対して自動コマンドを定義するとき、それがバッファ番号とともに -保存されることに注意。つまりカレントバッファ番号が12なら"<buffer=12>"という形 -になる。例えば自動コマンドをリストするときこの形式で表示される。 - -バッファローカル自動コマンドが存在するかを判定するには関数|exists()|を次のよう -に使う: > - :if exists("#CursorHold#<buffer=12>") | ... | endif - :if exists("#CursorHold#<buffer>") | ... | endif " for current buffer - -バッファがワイプアウトされると当然バッファローカル自動コマンドも失われる。 -":bdel"などでバッファを削除するときは、それがリストからなくなるだけで、自動コ -マンドはまだ存在していることに注意。バッファローカル自動コマンドの削除を表示さ -せるにはこうする: > - :set verbose=6 - -存在しないバッファに対してバッファローカル自動コマンドを定義することはできな -い。 - -============================================================================== -8. グループ *autocmd-groups* - -自動コマンドはグループにまとめることができる。これは一連の自動コマンドを取り -除いたり実行したりする際に便利である。例えば、構文強調表示のための全ての -自動コマンドはグループ "highlight" に入っていて、GUIの開始時に -":doautoall highlight BufRead" で実行できる。 - -特定のグループが選択されないとき、既定のグループが使われる。既定のグループには -名前がない。既定のグループから個別に自動コマンドを実行することはできない。そ -れらを実行できるのは、全てのグループに対する自動コマンドを実行するときのみで -ある。 - -普通、自動コマンドを自動的に実行するときは、全てのグループに対する 自動コマンド -が使われる。グループが問題になってくるのは、":doautocmd" や ":doautoall" によっ -て自動コマンドを実行するときと、自動コマンドを定義したり削除するときである。 - -グループ名には空白を除く全ての文字が使える。"end" というグループ名は予約語になっ -ている (大文字も)。 - -グループ名では大文字と小文字を区別して扱う。イベントの名前とは違うことに注意し -てください。 - - *:aug* *:augroup* -:aug[roup] {name} 後に続くコマンド ":autocmd" のためのグループ名 - を定義する。{name} を "end" や "END" にすると - 既定のグループが選ばれる。 - - *:augroup-delete* *E367* -:aug[roup]! {name} 自動コマンドのグループ {name} を削除する。その - グループを使っている自動コマンドがまだあるな - ら、これは使わないこと!その点はチェックされな - い。 - -特定のグループとして自動コマンドを定義するには、次の手順に従うこと。 -1. ":augroup {name}" によってグループを選択する。 -2. ":au!" によって古い自動コマンドを全て消去する。 -3.自動コマンドを定義する。 -4. ":augroup END" によって既定のグループに戻る。 - -例: > - :augroup uncompress - : au! - : au BufEnter *.gz %!gunzip - :augroup END - -これで自動コマンドを (例えばファイル .vimrc を再び読み込んだ後) 2回定義するこ -とが防げる。 - -============================================================================== -9. 自動コマンドの実行 *autocmd-execute* - -自動コマンドは「自動的」でなくとも実行できる。これはあなたが自動コマンドを変 -更したときや、間違った自動コマンドが実行されたとき (つまりファイルパターンの -マッチングが間違っていたとき) に便利である。 - -NOTE オプション 'eventignore' はここにも適用されることに注意。ここに列挙された -イベントでは、どんな自動コマンドも実行されない。 - - *:do* *:doau* *:doautocmd* *E217* -:do[autocmd] [group] {event} [fname] - [fname] (省略するとカレントファイルの名前) にマッチす - る、{event} のための自動コマンドをカレントバッファに - 適用する。カレントファイル名が正しいファイルパターンに - マッチしないときや設定を変えた後、またはあるイベントの - ために自動コマンドを実行するために使用できる。 - これを自動コマンドの内部で実行することも可能である。 - だから、ある拡張子用の自動コマンドを元にして別の拡張 - 子用のものを作ることができる。例: > - :au Bufenter *.cpp so ~/.vimrc_cpp - :au Bufenter *.cpp doau BufEnter x.c -< 無限の循環に陥らないよう注意すること。また - |autocmd-nested| を参照すること。 - - 引数 [group] が省かれると、全てのグループの - 自動コマンドが実行される。 [group] が指定されると、そ - れにマッチするグループの自動コマンドのみが実行される。 - NOTE 定義されていないグループ名を使うと、エラーメッセー - ジが表示される。 - - 自動コマンドを適用した後にモードラインが処理される。ファ - イルを編集するときと同じように、自動コマンドでなされた - 設定を上書きするためである。 - - *:doautoa* *:doautoall* -:doautoa[ll] [group] {event} [fname] - ":doautocmd" と似ているが、読み込まれたバッファそれぞ - れに自動コマンドを適用する。[fname]は自動コマンドを選 - 択するのに使われます。コマンドを適用するバッファではあ - りません。(訳注: |:autocmd|の{pat}に使う?) - 注意: このコマンドで、バッファを削除したり、バッファを - 変えたり、バッファの内容を変えるような自動コマンドを - 実行しないこと。結果は予期できない。このコマンドは、オ - プションを設定したり、構文強調表示を変えたりする - 自動コマンドのためのものである。 - -============================================================================== -10. 自動コマンドを使う *autocmd-use* - -「ファイルの書き込み」には、4組のイベントが起こりうる。1回の書き込みコマンドで -は、これらのうち1組しか使われない。 - -BufWriteCmd BufWritePre BufWritePost バッファ全体を書き込む - FilterWritePre FilterWritePost フィルタ用一時ファイルに書込む -FileAppendCmd FileAppendPre FileAppendPost ファイルに追加する -FileWriteCmd FileWritePre FileWritePost その他の書き込み - -"*Cmd" にマッチする自動コマンドがあるときは、それが書き込み作業を行うものと想 -定される。書き込みはそれ以上行われず、他のイベントも発生しない。 |Cmd-event| - -Note イベント *WritePost による自動コマンドは、イベント *WritePre による -自動コマンドの引き起こしたバッファに対する変化を、どのようなものでもアンドゥす -べきであることに注意。さもないと、ファイルの書き込みがバッファを変更するという -副作用を持ってしまう。 - -あるバッファの中の行をファイルに書き込むとき、自動コマンドを実行する前にそのバッ -ファが一時的にカレントバッファになる。自動コマンドがカレントバッファを変更した -り、元のカレントバッファを消去しない限り、カレントバッファは再び元に戻る。 - -イベント *WritePre や *AppendPre による自動コマンドは、書き込み元のバッファを -削除してはならない。 - -マーク '[ と '] は特別な位置を記憶している。 -- イベント *ReadPre の前に、新しい行が挿入される所の上の行にマーク '[ が設定 - される。 -- イベント *ReadPost の前に、読み込まれた最初の行にマーク '[ が、最後の行にマー - ク '] が設定される。 -- イベント *WriteCmd, *WritePre と *AppendPre による自動コマンドが実行される前 - に、書き込まれる最初の行にマーク '[ が、最後の行にマーク '] が設定される。 -注意: バッファを変更するコマンドを使うと、'[ と '] の場所も変更される。 - -ファイル名を必要とするコマンドでは、読み込まれるファイル名に "<afile>" を使う -ことができる (カレントファイル名に "%" を使うこともできる) |:<afile>|。現在有 -効なバッファ番号には "<abuf>" を使うことができる。これは名前を持たないバッファ -に対しても有効だが、バッファを持たないファイルには使えない (例えば、":r file" -で読み込まれたファイル)。 - - *gzip-example* -圧縮されたファイルを読み書きする例: > - :augroup gzip - : autocmd! - : autocmd BufReadPre,FileReadPre *.gz set bin - : autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip - : autocmd BufReadPost,FileReadPost *.gz set nobin - : autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r") - : autocmd BufWritePost,FileWritePost *.gz !mv <afile> <afile>:r - : autocmd BufWritePost,FileWritePost *.gz !gzip <afile>:r -> - : autocmd FileAppendPre *.gz !gunzip <afile> - : autocmd FileAppendPre *.gz !mv <afile>:r <afile> - : autocmd FileAppendPost *.gz !mv <afile> <afile>:r - : autocmd FileAppendPost *.gz !gzip <afile>:r - :augroup END - -グループ "gzip" は、":autocmd!" で既存の自動コマンドを全て削除できるようにす -るために使われている。これはスクリプトファイルが2回読み込まれたときのためであ -る。 - -("<afile>:r" は拡張子のないファイル名である。|:_%:| を参照) - -イベント BufNewFile, BufRead/BufReadPost, BufWritePost, FileAppendPost, -VimLeave によって実行された自動コマンドは、バッファの被修正フラグを切り替えな -い。BufReadPost による自動コマンドで、圧縮されているバッファを解凍したときは、 -":q" でVimを終了することができる。BufWritePre による自動コマンドの起こした変 -更を戻すために BufWritePost で ":undo" を使ったときも、":q" を使うことができる -("ZZ" も可)。バッファが変更されたことにしたいなら、":set modified" とすること。 - -自動コマンドからノーマルモードのコマンドを実行したいときは、コマンド ":normal" -を使うこと。使うときは注意!ノーマルモードのコマンドが完結していないと、ユーザ -が文字を打ち込まないといけない (例えば、":normal m" の後にはマーク名を打ち込ま -ないといけない)。 - -バッファの内容を変更した後に、変更されていないことにしたいなら、オプション -'modified' をオフにすること。こうすると ":q!" ではなく ":q" でもVimを終了でき -る。 - - *autocmd-nested* *E218* -既定では、自動コマンドはネストしない (入れ子にならない)。自動コマンド内で ":e" -や ":w" を使っても、これらに対してはイベント BufRead や BufWrite による -自動コマンドは実行されない。もしこれを実行してほしいなら、ネストしてほしいコマ -ンド内でフラグ "nested" を使うこと。例: > - :autocmd FileChangedShell *.c nested e! -再帰的ループを避けるために、ネストは10段階までに制限されている。 - -自動コマンドの中でコマンド ":au" を使うこともできる。これは自己修正的 (訳注: -原文 "self-modifying") なコマンドになりうる! これは1回だけ実行すべき -自動コマンドに便利である。 - -あるコマンドを実行するときだけ自動コマンドをスキップしたい場合は、修飾子 -|:noautocmd|を使うかオプション'eventignore'を使う。 - -Note (":read file" やフィルタコマンドで) 読み込んだファイルの最後の行に <EOL> -がないとき、Vimはこのことを記憶する。その次の (":write file" やフィルタコマン -ドでの) 書き込みで、先ほどの最後の行が再び最後の行として書き込まれ、かつオプショ -ン 'binary' がオンになっていると、<EOL> は付け足されない。これにより、読み込ま -れた行に対するフィルタコマンドで、読み込まれた通りに書き出すことができる。また、 -フィルタ処理された行に対する書き込みのコマンドで、フィルタが出力した通りに書き -出すことができる。例えば、圧縮されたファイルを書き込むもう一つの例は以下のよう -になる。 > - - :autocmd FileWritePre *.gz set bin|'[,']!gzip - :autocmd FileWritePost *.gz undo|set nobin -< - *autocommand-pattern* -コンマで区切られた複数のパターンを指定することもできる。以下にいくつか例を挙げ -る。 > - - :autocmd BufRead * set tw=79 nocin ic infercase fo=2croq - :autocmd BufRead .letter set tw=72 fo=2tcrq - :autocmd BufEnter .letter set dict=/usr/lib/dict/words - :autocmd BufLeave .letter set dict= - :autocmd BufRead,BufNewFile *.c,*.h set tw=0 cin noic - :autocmd BufEnter *.c,*.h abbr FOR for (i = 0; i < 3; ++i)<CR>{<CR>}<Esc>O - :autocmd BufLeave *.c,*.h unabbr FOR - -Makefile (makefile, Makefile, imakefile, makefile.unix 等) にマッチさせるには -こうする。 > - - :autocmd BufEnter ?akefile* set include=^s\=include - :autocmd BufLeave ?akefile* set include& - -Cソースファイルを編集するとき、常に最初の関数から始めるにはこうする。 > - - :autocmd BufRead *.c,*.h 1;/^{ - -上の "1;" がないと、検索が始まる場所はファイルの最初ではなく、ファイルの挿入さ -れた場所になる。 - - *skeleton* *template* -新しいファイルを作るときにスケルトン (テンプレート) ファイルを読み込むにはこう -する。 > - - autocmd BufNewFile *.c 0r ~/vim/skeleton.c - autocmd BufNewFile *.h 0r ~/vim/skeleton.h - autocmd BufNewFile *.java 0r ~/vim/skeleton.java - -HTMLファイルを書き込むときに現在の日付と時刻を挿入したいならこうする (訳注: -KoRoN氏作成のautodate.vimを使った方がよい) > - - :autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s - :fun LastMod() - : if line("$") > 20 - : let l = 20 - : else - : let l = line("$") - : endif - : exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " . - : \ strftime("%Y %b %d") - :endfun - -これを機能させるためには、ファイルの先頭から20行以内に"Last modified: <date -time>" という行を入れる必要がある。Vimは <date time> (とその行内のそれ以後を) -を現在の日付と時刻に置き換える。説明: - ks 現在の位置をマーク 's' に設定する - call LastMod() 関数 LastMod() を呼び出して実際の作業を行う - 's カーソルを元の位置に戻す -関数 LastMod() はファイルの長さが20行以下であるかを調べ、キーワード -"Last modified: " の含まれる行を探すためにコマンド ":g" を実行する。キーワード -の含まれる行に対しては ":s" が実行され、既存の日付を現在のものに置き換える。 -":execute" は ":g" や ":s" で expression を使えるようにするためのものである。 -日付は関数 strftime() から得られる。 strftime() の引数を変更して、別の形の日付 -を得ることもできる。 - -コマンドラインから自動コマンドを入力すると、(<Tab> や CTRL-D などで) イベント -とコマンド名が適切に補完される。 - -Vimはマッチする全ての自動コマンドをユーザの指定した順に実行する。ユーザが実行 -させる最初の自動コマンドにはファイルパターンに "*" を使い、全てのファイルに適 -用されるようにするとよい。これはつまり、あらゆる設定のための既定を好きなように -定義することができ、もしマッチする自動コマンドが別にあれば、そちらの方が設定 -を上書きできるということである。しかしマッチする自動コマンドが他になければ、 -少なくともあなたの設定した既定は回復される (もし自動コマンドがマッチした別の -ファイルから、マッチしなかったファイルに移っても)。 Note Unixのシェルと違い、 -"*" は"." で始まるファイルにもマッチすることに注意。 - - *autocmd-searchpat* -自動コマンドは現在の検索パターンを変更しない。Vimは自動コマンドの実行前に現在 -の検索パターンを保存し、自動コマンドが終了してから復元する。つまり 自動コマンド -はオプション 'hlsearch' で強調表示されている文字列に影響しないということである。 -自動コマンド内でも、例えばコマンド "n" 等で、検索パターンは普通に使用できる。 -もし自動コマンドの中で終了後に使う検索パターンを設定したいなら、 ":let @/ =" -とすること。 -自動コマンドの中で ":nohlsearch" を使って、検索語の強調表示を無効にすることは -できない。Vimの開始時に検索語の強調表示を行わないためには、'viminfo' のフラグ -'h' を使うこと。 - - *Cmd-event* -イベント "*Cmd" のうちどれかを使うと、それによる自動コマンドが読み込み、書き -込み、またはsourceを行うものと想定される。これは特殊なファイル、例えばリモート -システム上のファイルに作業をするときに使える。 -注意: これらのイベントを誤った方法で使うと、そのイベントが発生するファイルの読 -み書きが不可能になってしまう。自分の自動コマンドをしっかりテストすること。最 -良の方法は、普通のファイル名には決してマッチしないパターン (例えば "ftp://*") -を使うことである。 - -BufReadCmd に対して自動コマンドを定義すると、クラッシュしたセッションの復旧が -難しくなる。元のファイルから復旧するとき、Vimはスワップファイル内に見つからな -かった部分のみを読み込む。それは BufReadCmd の自動コマンドを使ったときは不可 -能なので、コマンド |:preserve| を使って元のファイルが復旧に必要ないようにする -こと。そうするのはファイルが変更を受けたと判断したときのみでもよい。 - -読み込みと書き込みのコマンドの場合、Vim変数 |v:cmdarg| は引数 "++enc=" と -"++ff=" の、有効だったものを保持している。これらはファイルを読み書きするコマン -ドで使われるべきである。Vim変数 |v:cmdbang|はコマンドに"!"が使われたときに 1。 -そうでないときに 0 が設定される。 - -例は標準プラグイン $VIMRUNTIME/plugin/netrwPlugin.vim を参照。 - -============================================================================== -11. 自動コマンドを無効にする *autocmd-disable* - -一時的に自動コマンドを無効にするにはオプション'eventignore'を使う。これは予期 -しない振るまいを引き起こす可能性がある。|:finally|つきの|:try|ブロックを使って -後で'eventignore'を元に戻すようにすること。 - - *:noautocmd* *:noa* -1つのコマンドを実行する間だけ自動コマンドを無効にするには修飾子":noautocmd"を -使う。これは後に続くコマンドを実行する間だけ、'eventignore'を"all"にセットす -る。例: > - - :noautocmd w fname.gz - -これはgzipプラグインで定義された自動コマンドを発生させずにファイルを書き込む。 - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/change.jax b/runtime.old/doc/change.jax deleted file mode 100644 index 60c4937bb..000000000 --- a/runtime.old/doc/change.jax +++ /dev/null @@ -1,1614 +0,0 @@ -*change.txt* For Vim バージョン 7.3. Last change: 2011 Jun 19 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -このファイルでは、テキストを削除したり変更するコマンドの説明をする。この文章の -中では、「テキストを変更する」とは、一つのコマンドでテキストを削除し、別のテキ -ストに置き換えることを意味する。これらのコマンドは全てアンドゥできる。非Exコマ -ンドはコマンド "." で繰り返すことができる。 - -1. テキストの削除 |deleting| -2. 削除と挿入 |delete-insert| -3. 単純な変更 |simple-change| *changing* -4. 複雑な変更 |complex-change| - 4.1 フィルタコマンド |filter| - 4.2 置換 |:substitute| - 4.3 検索と置換 |search-replace| - 4.4 タブの変換 |change-tabs| -5. テキストのコピーと移動 |copy-move| -6. テキストの整形 |formatting| -7. テキストのソート |sorting| - -テキストの挿入に関しては |insert.txt| を参照。 - -============================================================================== -1. テキストの削除 *deleting* *E470* - -["x]<Del> または *<Del>* *x* *dl* -["x]x カーソル下から後の [count] 文字を [レジスタ x に入れ] - 削除する (行単位ではない|linewise|)。"dl" と同じであ - る。<Del> キーには [count] が使えない。代わりに、 - [count] の最後の文字を削除する (訳注: 123<Del>と押すと - 3が消え12になる)。<Del> キーが思ったように動作しない - ときは、|:fixdel| を参照。<EOL> の削除 (行の連結) につ - いては、'whichwrap'を参照。 {Vi では <Del> が使えない} - - *X* *dh* -["x]X カーソルから前の [count] 文字を [レジスタ x に入れ] 削 - 除する (行単位ではない|linewise|)。"dh" と同じである。 - 'whichwrap' も参照。 - - *d* -["x]d{motion} {motion} でカーソルが動く範囲のテキストを [レジスタ x - に入れ] 削除する。例外については以下を参照。 - - *dd* -["x]dd [count] 行を [レジスタ x に入れ] 削除する (行単位 - |linewise|)。 - - *D* -["x]D カーソル下から行の最後までの文字と、[count]-1 行を、 - [レジスタ x に入れ] 削除する。"d$" と同義 - (行単位ではない|linewise|)。 - 'cpoptions'にフラグ'#'が入っているとカウントは無視され - る。 - -{Visual}["x]x または *v_x* *v_d* *v_<Del>* -{Visual}["x]d または -{Visual}["x]<Del> ビジュアル選択されたテキストを [レジスタ x に入れ] 削 - 除する({Visual} については |Visual-mode| を参照)。{Vi - にはない} - -{Visual}["x]CTRL-H または *v_CTRL-H* *v_<BS>* -{Visual}["x]<BS> 選択モード内で: ビジュアル選択されたテキストを [レジス - タ x に入れ] 削除する。 - -{Visual}["x]X または *v_X* *v_D* *v_b_D* -{Visual}["x]D ビジュアル選択された行を [レジスタ x に入れ] 削除する - ({Visual} については |Visual-mode| を参照)。矩形ビジュ - アルモードでは、"D" はビジュアル選択されたテキストと行 - 末までの全てのテキストを削除する。 {Vi にはない} - - *:d* *:de* *:del* *:delete* -:[range]d[elete] [x] [range] 行 (既定値: 現在行) を [レジスタ x に入れ] 削 - 除する。 - -:[range]d[elete] [x] {count} - [range] 行目 (既定: 現在行 |cmdline-ranges|) から - {count} 行を [レジスタ x に入れ] 削除する。 - -これらのコマンドはテキストを削除する。これらは (":d" を除いて) コマンド "." で -繰り返したり、アンドゥできる。テキストのブロックを削除するには、ビジュアルモー -ドを使う。レジスタの説明については、|registers| を参照。 - -コマンド "d{motion}" に関する例外: 移動が行単位でなく、移動の開始点と終了点が -同じ行になく、移動の開始点の前と終了点の後に空白しかない場合には、削除は行単位 -となる。このときユーザは空白のみの行が残ると思うかもしれないが、共に削除される。 - -オプション 'cpoptions' がフラグ 'E' を含んでいるときは、テキストの空の範囲を削 -除しようとすると (例えば、1列目での "d0")、エラーになる。 - - *J* -J [count] 行を連結する (最低は 2 行)。インデントを削除し、 - 空白を最大 2 個まで挿入する (以下を参照)。 - - *v_J* -{Visual}J ビジュアル選択された行を連結する (最低は 2 行)。インデ - ントを削除し、空白を最大 2 個まで挿入する (以下を参照) - {Vi にはない} - - *gJ* -gJ [count] 行を連結する (最低は 2 行)。空白の挿入や削除を - 行わない。 {Vi にはない} - - *v_gJ* -{Visual}gJ ビジュアル選択された行を連結する (最低は 2 行)。空白の - 挿入や削除を行わない。 {Vi にはない} - - *:j* *:join* -:[range]j[oin][!] [flags] - [range] 行を連結する。"J" と同様だが、[!] と共に使うと - 空白の挿入や削除を行わない。[range] の開始点と終了点が - 同じときは、このコマンドは何もしない。既定の動作では、 - 現在行を次行と連結する。 {Vi にはない} - [flags]については|ex-flags|を参照。 - -:[range]j[oin][!] {count} [flags] - [range] 行目 (既定では現在行 |cmdline-ranges|) からの - {count} 行を連結する。"J" と同様だが、[!] と共に使うと - 空白の挿入や削除を行わない。 {Vi にはない} - [flags]については|ex-flags|を参照。 - -これらのコマンドは、行の間の <EOL> を削除する。この結果、複数行が1行に連結され -る。これらのコマンド (":j" 以外) は、繰り返しやアンドゥができる。 - -これらのコマンド ("gJ" 以外) は <EOL> の場所に空白を1個挿入する。ただし行末に -空白が付いていたり、次の行が ')' で始まるときは挿入しない。これらのコマンド -("gJ" 以外) は次行の先頭あたりにある空白を全て削除する。オプション -'joinspaces' がオンのときは、これらのコマンドは '.', '!', '?' の後に2個の空白 -を挿入する (しかし 'cpoptions' がフラグ 'j' を含んでいるときは、2個の空白は -'.' の後にしか挿入しない)。 -'formatoptions' のフラグ 'M' と 'B' は、マルチバイト文字の前後に空白を挿入する -ときの動作を変更する |fo-table|。 - - -============================================================================== -2. 削除と挿入 *delete-insert* *replacing* - - *R* -R 置換モードに入る。打ち込んだ文字がカーソル下の既存の文 - 字をどんどん置き換えていく。入力されたテキストを - [count]-1 回繰り返す。詳細は |Replace-mode| を参照。 - - *gR* -gR 仮想置換モードに入る。打ち込んだ文字が画面上の既存の文 - 字をどんどん置き換えていく。そのため <Tab> は数文字を - 一回で置き換えることができる。入力されたテキストを - [count]-1 回繰り返す。詳細は |Virtual-Replace-mode| を - 参照。 - {Vi mが |+vreplace| 機能付きでコンパイルされたときのみ - 有効} - - *c* -["x]c{motion} {motion} のテキストを [レジスタ x にいれ] 削除し、挿入 - を始める。'cpoptions' がフラグ 'E' を含むときは、削除 - すべきテキストがないと (例えば、"cTx" でカーソルが 'x' - の直後にあるとき)、エラーが発生しインサートモードは始 - まらない (これはVi互換である)。 - 'cpoptions' がフラグ 'E' を含まないときは、コマンド - "c" は削除すべきテキストがなくても、必ずインサートモー - ドを始める。 - - *cc* -["x]cc [count] 行を [レジスタ x に入れ] 削除し、挿入を始める - (行単位|linewise|)。'autoindent' がオンのとき、最初の - 行のインデントを保持する。 - - *C* -["x]C カーソル位置から行の終わりまでと、[count]-1 行を [レジ - スタ x に入れ] 削除し、挿入を始める。"c$" と同義である - (行単位でない|linewise|)。 - - *s* -["x]s [count] 文字を [レジスタ x に入れ] 削除し、挿入を始め - る (s は Substitute --置換 を意味する)。"cl" と同義で - ある (行単位でない|linewise|)。 - - *S* -["x]S [count] 行を [レジスタ x に入れ] 削除し、挿入を始める。 - "cc"と同義である (行単位|linewise|)。 - -{Visual}["x]c または *v_c* *v_s* -{Visual}["x]s ビジュアル選択されたテキストを [レジスタ x に入れ] 削 - 除し、挿入を始める ({Visual} については |Visual-mode| - を参照)。{Vi にはない} - - *v_r* -{Visual}["x]r{char} ビジュアル選択されたテキストを全て {char} に置き換える。 - - *v_C* -{Visual}["x]C ビジュアル選択された行を [レジスタ x に入れ] 削除し、 - 挿入を始める。矩形ビジュアルモードでは少し動作が違う - |v_b_C|。 - {Vi にはない} - *v_S* -{Visual}["x]S ビジュアル選択された行を [レジスタ x に入れ] 削除し、挿入を - 始める ({Visual} については |Visual-mode| を参照)。 - {Vi にはない} - *v_R* -{Visual}["x]R 現在のところ {Visual}["x]S と同じである。次のヴァージョ - ンでは動作が変わるかもしれない。 {Vi にはない} - -Note: -- 挿入モード、置換モードは <Esc> で終了できる。 -- これらのモードでの他の特殊文字については、「テキストの挿入と置換」の章 - |mode-ins-repl| を参照。 -- [count] の効果は、Vimが挿入モードや置換モードを抜けた後で発生する。 -- 'cpoptions' がフラグ '$' を含んでいて、変更が1行以内である場合、Vimは削除さ - れるテキストを表示しつづけ、最後に削除された文字の位置に '$' を置く。 - -レジスタに関する説明は |registers| を参照。 - -置換モードは挿入モードと似ているが、文字を打ち込むたびに一文字ずつ削除される点 -が違う。行の最後に達すると、Vimはそれ以降は (挿入モードと同様に) 文字を追加す -る。置換モードでは、バックスペースキーは (もしあれば) 以前のテキストを復元する -(「テキストの挿入と置換」の章 |mode-ins-repl| を参照すること)。 - - *cw* *cW* -特別な場合: "cw" と "cW" は、カーソルが単語の上にあるとき、単語のあとにつづく -空白を含めず、単語の末尾までを変更する("ce" と "cE"と同じ働きをする)。これは -Vimが "cw" を単語の変更(change-word)として解釈し、また「単語」にはあとに続く空 -白は含まれないからである。 {Vi: あとに空白が続く空白上での"cw" は、最初の空白 -のみを変更する。これは多分バグである。"dw" は全ての空白を削除するからだ。とに -かく、Vi風に動作させるときには 'cpoptions' にフラグ 'w' を含めること} - -"cw" の変更範囲に単語の後の空白も含めたいときは、次のマップを使うこと。 > - :map cw dwi -または "caw" を使う(|aw| を参照)。 - - *:c* *:ch* *:change* -:{range}c[hange][!] テキストを行単位で別のテキストと置き換える。 - "." のみを含む行を打ち込むことで置換を終了する。 - {range} なしの場合、現在行のみを変更する。 - [!]をつけると、このコマンドを実行するときだけ - 'autoindent'をトグルする。 - -============================================================================== -3. 単純な変更 *simple-change* - - *r* -r{char} カーソル下の文字を {char} に置き換える。 - {char} が <CR> か <NL> のとき、文字は改行に置き換わる。 - 文字を本当の <CR> に置き換えるには、CTRL-V <CR> を使う。 - CTRL-V <NL> は文字を <Nul> に置き換える。 - {Vi: CTRL-V <CR> は改行に置き換わり、何かの文字を <CR> - に置き換えることはできない} - [count] を指定すると、[count] 文字が [count] 個の - {char} に置き換わる。しかし {char} が <CR> か <NL> の - 場合、挿入される <CR> はただ1個である。"5r<CR>" は5文 - 字を1個の改行に置き換える。 - {char} が <CR> か <NL> のとき、Vimは自動インデントを行 - う。これは置き換えるべき文字を削除した後 "i<CR><Esc>" - を実行したような動作になる。 - {char} はダイグラフでもよい |digraph-arg|。 - |:lmap| のマッピングは {char} に適用される。Inlertモー - ドでは、コマンド CTRL-^ を使ってマッピングを切り替えら - れる |i_CTRL-^|。オプション 'encoding' がUnicodeの一種 - のときに composing character を使うことについては - |utf-8-char-arg| を参照。 - - *gr* -gr{char} カーソル下の仮想文字を {char} に置き換える。このコマン - ドはファイル上の空白ではなく、画面上の空白を置き換える。 - 詳細は |gR| と |Virtual-Replace-mode| を参照。|r| と同 - 様、回数を指定できる。 - {char} の入力方法は |r| と同様である。 - {Vi mが |+vreplace| 機能付きでコンパイルされたときのみ - 有効} - - *digraph-arg* -|r| や |t| 等のNormalモードコマンドの引数は、1個の文字である。オプション -'cpoptions' がフラグ 'D' を含まないとき、この文字はダイグラフ |digraphs| と同 -様に入力できる。まず CTRL-K を打ち込み、次にダイグラフの2文字を入力する。 -{Vi mが |+digraphs| 機能付きでコンパイルされたときのみ有効} - - *case* -以下のコマンドは、アルファベットの大文字/小文字を切り替える。現在有効なロケー -ル |locale| が使われる。|:language| を参照。環境変数 LC_CTYPE の値に影響される。 - - *~* -~ オプション 'tildeop' がオフのとき: カーソル下の文字の - 大文字/小文字を切り替え、カーソルを右に移動させる。 - [count] が指定されたときは、[count] 文字に作用する。 - {Vi: カウントが使えない} - -~{motion} オプション 'tildeop' がオンのとき: {motion} のテキスト - の大文字/小文字を切り替える。 {Vi: ティルデは - operator として使用できない} - - *g~* -g~{motion} {motion} のテキストの大文字/小文字を切り替える。 - {Vi にはない} - -g~g~ *g~g~* *g~~* -g~~ 現在行の大文字/小文字を切り替える。 {Vi にはない} - - *v_~* -{Visual}~ ビジュアル選択されたテキストの大文字/小文字を切り替える - ({Visual} については |Visual-mode| を参照)。 {Vi には - ない} - - *v_U* -{Visual}U ビジュアル選択されたテキストを大文字にする ({Visual} につい - ては |Visual-mode| を参照)。 {Vi にはない} - - *gU* *uppercase* -gU{motion} {motion} のテキストを大文字にする。{Vi にはない} - 例: > - :map! <C-F> <Esc>gUcw`]a -< これはInsertモードで機能する。カーソルの前の単語を大文 - 字にするときに CTRL-F を打ち込めばよい。単語は小文字で - 入力し、後から大文字にする方が楽だ。 - - -gUgU *gUgU* *gUU* -gUU 現在行を大文字にする。 {Vi にはない} - - *v_u* -{Visual}u ビジュアル選択されたテキストを小文字にする ({Visual} につい - ては |Visual-mode| を参照)。 {Vi にはない} - - *gu* *lowercase* -gu{motion} {motion} のテキストを小文字にする。 {Vi にはない} - -gugu *gugu* *guu* -guu 現在行を小文字にする。 {Vi にはない} - - *g?* *rot13* -g?{motion} {motion} のテキストをRot13エンコードする。{Vi にはない} - - *v_g?* -{Visual}g? ビジュアル選択されたテキストをRot13エンコードする ({Visual} - については |Visual-mode| を参照)。 {Vi にはない} - -g?g? *g?g?* *g??* -g?? 現在行をRot13エンコードする。 {Vi にはない} - -各単語の最初の文字を大文字にする: > - :s/\v<(.)(\w*)/\u\1\L\2/g - -加算と減算 ~ - *CTRL-A* -CTRL-A カーソルの下または後の数またはアルファベットに [count] - を加える。 {Vi にはない} - - *CTRL-X* -CTRL-X カーソルの下または後の数またはアルファベットから - [count] を減じる。 {Vi にはない} - -コマンド CTRL-A と CTRL-X は(符号付)10進数と符号なし8進/16進数、アルファベッ -トに対し機能する。この動作はオプション 'nrformats' に依存する。 -- 'nrformats' が "octal" を含むときは、Vimは '0' で始まり、'8'や'9'を含まない - 数字を8進数として取り扱う。他の数は10進数とみなされ、マイナス符号が付いても - よい。カーソルが数の上にあれば、コマンドはその数に適用される。そうでなければ、 - カーソルの右の数に適用される。 -- 'nrformats' が "hex" を含むときは、Vimは '0x' か '0X' で始まる数を16進数とし - て取り扱う。その数の最も右の文字が大文字であるか小文字であるかによって、変更 - 結果の16進数が大文字か小文字かが決定する。対象となった数にアルファベットが含 - まれない場合、Vimは前回の決定を使う。 -- 'nrformats' が "alpha" を含むときは、Vimはカーソル下または後のアルファベット - を変更する。これはアルファベットのインデクスつきのリストを作るときに便利であ - る。 - -ゼロから始まる数 (全ての8進数、16進数を含む) に対して、Vimはできる限りその数の -文字数を保とうとする。"0077" 上で CTRL-A を使うと "0100" となり、"0x100" 上で -CTRL-X を使うと "0x0ff" となる。 -1つだけ例外がある: ゼロで始まるが8進数でないとき('8'や'9'を含んでいるとき)、 -'nrformats'が"octal"を含んでいるならば、結果が8進数とみなされないように、前方 -のゼロは削除される。 - -Note: 'nrformats' が "octal" を含んでいるとき、0で始まる10進数は、8進数と区別 -しづらいため、意図しない結果になる可能性がある。 - -コマンド CTRL-A はマクロ内でたいへん便利である。例: 番号付きリストを作るには、 -次の方法を使う。 - -1. リストの最初の項目を作る。番号から始まるようにすること。 -2. qa - レジスタ 'a' への記録を始める -3. Y - 項目をコピーする -4. p - 項目のコピーを最初の項目の後に貼り付ける -5. CTRL-A - 番号を増やす -6. q - 記録をストップする -7. <count>@a - コピー、貼り付け、番号増加を <count> 回繰り返す - - -行を左右にずらす *shift-left-right* - - *<* -<{motion} {motion} の行を 'shiftwidth' 1個分左にずらす。 - - *<<* -<< [count] 行を 'shiftwidth' 1個分左にずらす。 - - *v_<* -{Visual}[count]< ビジュアル選択された行を、'shiftwidth' の [count] 個分左にず - らす ({Visual} については |Visual-mode| を参照)。 - {Vi にはない} - - *>* - >{motion} {motion} の行を 'shiftwidth' 1個分右にずらす。 - - *>>* - >> [count] 行を 'shiftwidth' 1個分右にずらす。 - - *v_>* -{Visual}[count]> ビジュアル選択された行を、'shiftwidth' の [count] 個分右にず - らす ({Visual} については |Visual-mode| を参照)。 - {Vi にはない} - - *:<* -:[range]< [range] の行を、'shiftwidth' 1個分左にずらす。 - 'shiftwidth' の複数個分ずらすには、'<' を繰り返す。 - -:[range]< {count} [range] (既定は現在行 |cmdline-ranges|) から始まる - {count} 行を 'shiftwidth' 1個分左にずらす。 - 'shiftwidth' の複数個分ずらすには、'<' を繰り返す。 - -:[range]le[ft] [indent] [range] の行を左揃えする。行のインデントは [indent] - (既定値は 0) に設定される。 {Vi にはない} - - *:>* -:[range]> [flags] [range] の行を、'shiftwidth' 1個分右にずらす。 - 'shiftwidth' の複数個分ずらすには、'>' を繰り返す。 - [flags]については|ex-flags|を参照。 - -:[range]> {count} [flags] - [range] (既定は現在の行 |cmdline-ranges|) から始まる - {count} 行を、'shiftwidth' 1個分右にずらす。 - 'shiftwidth' の複数個分ずらすには、'>' を繰り返す。 - [flags]については|ex-flags|を参照。 - -コマンド ">" と "<" は、プログラムに含まれるインデントを変更するのに便利である。 -オプション 'shiftwidth' には、これらのコマンドが挿入、削除する空白の幅を設定す -る。'shiftwidth' は既定では 8 だが、例えば 3 に設定して、インデントをもっと少 -なくすることもできる。左方向へのシフトは、インデントがなくなったときに終了する。 -右方向へのシフトは、空行には適用されない。 - -'shiftround' がオンのとき、インデントは 'shiftwidth' の倍数に丸められる。 - -'shiftwidth' がオンのとき、あるいは 'cindent' がオンで 'cinkeys' が '#' を含む -とき、右方向へのシフトは '#' で始まる行に適用されない (これらの行は、行の最初 -に位置すべきCプリプロセッサ指令であると考えられる)。 - -'expandtab' がオフ (既定値) のとき、Vimはインデントにできる限り多くの <Tab> を -使う。">><<" によって、空白のみで構成されたインデントを、<Tab> (と必要ならばい -くつかの空白) で構成されたインデントに置換できる。'expandtab' がオンのときは、 -Vimは空白のみを使う。">><<" によって、インデント内の <Tab> を空白に置換できる -(あるいは ":retab!" を使う)。 - -行を 'shiftwidth' の複数個分ずらすには、ビジュアルモードかコマンド ":" を使う。 -例: > - Vjj4> 3行をインデント4個分右に移動 - :<<< 現在の行をインデント3個分左に移動 - :>> 5 5行をインデント2個分右へ移動 - :5>> 5行目をインデント2個分右に移動 - -============================================================================== -4. 複雑な変更 *complex-change* - -4.1 フィルタコマンド *filter* - -フィルタとは、テキストを標準入力から受け取り、何らかの変更を加え、標準出力に送 -るプログラムのことである。以下のコマンドにより、テキストの一部をフィルタにかけ -ることができる。フィルタの例としては、行をアルファベット順にソートする "sort"、 -Cのプログラムを整形する "indent" (ただし、フィルタ機能を持ったバージョンが必要。 -全てのバージョンでできるわけではない) などがある。オプション 'shell' は、Vimが -フィルタコマンドを実行するときに使うシェルを指定する ('shelltype' も参照)。フィ -ルタコマンドはコマンド "." で繰り返せる。Vimは ":!" の後のコメント ('"' で始ま -る行) を認識しない。 - - *!* -!{motion}{filter} {motion} のテキストを外部プログラム {filter} でフィル - タ処理する。 - - *!!* -!!{filter} [count] 行を外部プログラム {filter} でフィルタ処理する。 - - *v_!* -{Visual}!{filter} ビジュアル選択された行を外部プログラム {filter} でフィルタ処 - 理する。({Visual} については |Visual-mode| を参照)。 - {Vi にはない} - -:{range}![!]{filter} [!][arg] *:range!* - {range} 行を外部プログラム {filter} でフィルタ処理する。 - {filter} の後ろには '!' を付けてもよい。これは最後に実 - 行されたコマンドに置き換えられる。さらに [arg] を付け - ると、それがコマンドに付け加えられる。 Vimはフィルタコ - マンドの出力を一時ファイルに保存し、そのファイルをバッ - ファに読み込む |tempfile|。フィルタの出力を一時ファイ - ルにリダイレクトするときはオプション 'shellredir' が使 - われる。Unixでは'shellredir'がオフのとき、可能ならばパ - イプが使われる。 - 'cpoptions'に'R'フラグが含まれるとき、フィルタ処理され - た行のマークは削除されます。|:keepmarks|コマンドを使う - と削除されません。例: > - :keepmarks '<,'>!sort -< フィルタ処理のあと行数が少なくなっていた場合、すでにな - い行を指しているマークは削除されます。 - - *=* -={motion} {motion} の行を、オプション 'equalprg' で指定された外 - 部プログラムでフィルタ処理する。'equalprg' が空のとき - (これが既定) は、組み込みの整形機能の |C-indenting| と - |'lisp'| を使う。しかし 'indentexpr' が空でないとき - は、それが使われる |indent-expression|。Vim が内部 - フォーマット機能なしでコンパイルされているときは、最後 - の手段として "indent" プログラムが使われる。 - - *==* -== [count] 行を ={motion} と同様にフィルタ処理する。 - - *v_=* -{Visual}= ビジュアル選択されたテキストを ={motion} と同様にフィルタ処 - 理する。 {Vi にはない} - - - *tempfile* *setuid* -フィルタリング、diff の生成、tempname() などを行うときには、一時ファイルが作 -成されます。Unix ではこのファイルはプライベートな(自分だけがアクセスできる) -ディレクトリに置かれます。セキュリティ上の問題(symlink attack や他の人があな -たのファイルを読むなど)を避けるためです。Vim が終了するとき、そのディレクト -リと中にあるファイルは自動的に削除されます。Vim に setuid ビットが立っている -とこれが問題を引き起こすことがあります。一時ファイルは setuid されたユーザー -が所有するのに対し、フィルタコマンドは元のユーザーとして動作するためです。 -MS-DOS と OS/2 では、以下のディレクトリのうち最初に利用可能なものが使われま -す: $TMP, $TEMP, c:\TMP, c:\TEMP. -Unix におけるディレクトリのリストは: $TMPDIR, /tmp, current-dir, $HOME。 -MS-Windows ではシステム関数 GetTempFileName() が使われます。 -他のシステムではライブラリ関数 tmpnam() が使われます。 - - - -4.2 置換 *:substitute* - *:s* *:su* -:[range]s[ubstitute]/{pattern}/{string}/[flags] [count] - [range] の各行で {pattern} のマッチを {string} に置き - 換える。 - {pattern}については|pattern|を参照してください。 - {string} は普通の文字列でもよいし、特別な指定方法を使っ - てもよい。|sub-replace-special| を参照。 - [range] と [count] が指定されないと、現在行内でのみ置 - 換を行う。 - [count] が指定されると、[range] の最終行から数えて - [count] 行で置換を行う。[range] が指定されないと、現在 - 行から開始する。 - |cmdline-ranges| も参照。 - フラグについては |:s_flags| を参照。 - -:[range]s[ubstitute] [flags] [count] -:[range]&[&][flags] [count] *:&* - 最後の置換を同じパターンかつ同じ置換文字列で、フラグを - つけずに繰り返す。フラグを追加することもできる - (|:s_flags|を参照)。 - Note ":substitute" の後ではフラグ '&' は使えないことに - 注意。パターンの区切り文字だと認識されてしまう。 - ":substitute" とフラグ 'c', 'g', 'r' の間の空白は必要 - 不可欠ではない。しかしスクリプト内では、混乱しないよう - に空白を入れておくのはよい考えである。 - -:[range]~[&][flags] [count] *:~* - 最後の置換を同じ置換文字列で、最後の検索パターン (訳注: - "/" で使ったもの) に対して繰り返す。":&r" に似ている。 - フラグについては |:s_flags| を参照。 - - *&* -& ":s" と同義 (最後の置換を繰り返す)。 Note 同じフラグが - 使われるわけではないので注意。実際の動作は違うかもしれ - ない。フラグも同じにするには ":&&" を使うこと。 - - *g&* -g& ":%s//~/&" と同義 (全ての行に対し、同じフラグで最後の - 置換を繰り返す)。 - 覚え方: 「グローバル (global --全体的な) 置換」 - {Vi にはない} - - *:snomagic* *:sno* -:[range]sno[magic] ... ":substitute"と同じだが、常に 'nomagic' を使う。 - {Vi にはない} - - *:smagic* *:sm* -:[range]sm[agic] ... ":substitute"と同じだが、常に 'magic' を使う。 - {Vi にはない} - - *:s_flags* -置換コマンドで使えるフラグ: - -[&] 先頭に指定しなければならない。前回の置換コマンドと同じフラグを使う。例: > - :&& - :s/this/that/& -< Note コマンド ":s" と ":&" では、前回と同じフラグは使われない。 - {Vi にはない} - -[c] 置換前に毎回確認する。マッチしている文字列を (強調表示グループ - |hl-IncSearch| で) 強調表示する。確認を求められたら、ユーザは以下のよ - うに応答する。 *:s_c* - 'y' そのマッチを置換する ("yes") - 'l' そのマッチを置換し、置換を終了する ("last") - 'n' そのマッチを置換せず、次に移る ("no") - <Esc> 置換を終了する - 'a' そのマッチと、以降の全てのマッチを置換する {Vi にはない} - 'q' 置換を終了する {Vi にはない} - CTRL-E 画面を上にスクロールする {Vi にはない。Vimが - |+insert_expand| 機能付きでコンパイルされたときのみ有効} - CTRL-Y 画面を下にスクロールする {Vi にはない。Vimが - |+insert_expand| 機能付きでコンパイルされたときのみ有効} - オプション 'edcompatible' がオンのとき、Vimはフラグ [c] を記憶し、それ - が指定される度にオン/オフを切り替えるが、新しい検索パターンが使われる - とリセットする。 - {Vi にはないもの: マッチの強調表示、'y' と 'n' 以外の応答} - -[e] 検索パターンが何もマッチしなかったとき、エラーメッセージを表示しない。 - 特にマッピング内ではエラーが発生しなかったかのように続行される。これは - 「パターンは見つかりませんでした」のエラーによるマッピングの中断を防ぐ - のに使える。しかし以下のエラーの発生は抑制されない。 - 「正規表現は文字で区切ることができません」 - 「\\ の後は / か ? か & でなければなりません」 - 「正規表現置換がまだ実行されていません」 - 「余分な文字が後ろにあります」 - 「(割込まれました)」 - {Vi にはない} - -[g] 行中の全てのマッチを置換する。このフラグなしだと、各行の1個目のマッチ - のみが置換される。オプション 'edcompatible' がオンのとき、Vimはこのフ - ラグを記憶し、指定される度にオン/オフを切り替えるが、新しい検索パター - ンが使われるとリセットする。'gdefault' がオンのときは、このフラグはオ - ンが既定値になり、フラグ [g] を指定したときにはオフになる。 - -[i] パターンの大文字/小文字の区別をしない。オプション 'ignorecase' と - 'smartcase' は使われない。 - {Vi にはない} - -[I] パターンの大文字/小文字を区別する。オプション 'ignorecase' と - 'smartcase' は使われない。 - {Vi にはない} - -[n] マッチの個数を表示し、実際には置換を行わない。フラグ[c]は無視される。 - 'report'が0のときと同じようにマッチが表示される。 - 何個あるか調べるときに便利。|count-items| - -[p] 最後に置換を行った行を表示する。 - {Vi にはない} - -[#] [p]と同様。行番号をつける。 - -[l] [p]と同様だが、|:list|のように表示する。 - -[r] 引数のない ":&" か ":s" との連携でのみ有効。":&r" は ":~" と同様に動作 - する。検索パターンが空のとき、最後の置換コマンドや ":global" でのパター - ンではなく、最後の検索パターンを使用する。最後に検索パターンを使用した - コマンドが置換や ":global" だったときは、何もしない。最後のコマンドが - "/" のような検索コマンドだったときは、そのコマンドの検索パターンを使う。 - 引数付きの ":s" では、すでにそう動作するようになっていた。 > - :s/blue/red/ - /green - :s//red/ または :~ または :&r -< 最後のコマンドは "green" を "red" に置き換える。 > - :s/blue/red/ - /green - :& -< 最後のコマンドは "blue" を "red" に置き換える。 - {Vi にはない} - -NOTE パターンに 'magic' が適用されるかどうかを変更するフラグはないことに注意。 -代わりに違うコマンド(訳註: |:snomagic|)または |/\v| などを使う。これは、パター -ン解釈を飛ばすことでのみフラグを認識できるが、その一方でパターン解釈を飛ばす -には 'magic'の適用状態が知られている必要があるためである。 Catch 22! (訳注: -どうにもならないという意味) - -置換コマンドで {pattern} が空のときは、最後に使われた置換コマンドまたはコマン -ド ":global" のパターンが使われる。それが無い場合は、直前の検索パターンがあれ -ばそれが使われる。フラグ [r] を指定すると、最後の置換、":global"、または検索コ -マンドのパターンが使われる。 - -{string}を省略した場合は、空文字列を指定したのと同じ結果になる。すなわち、マッ -チしたパターンが削除される。{pattern}の後のセパレータも省略することができる。 -例: > - :%s/TESTING -これは、全行から"TESTING"を削除する例である。ただし、1つの行に2個以上あっても -1個しか削除されない。 - -Viとの互換性のため、これら2つの例外が許される。 -"\/{string}/" と "\?{string}?" は "//{string}/r" と同様の効果。 -"\&{string}&" は "//{string}/" と同様の効果。 - *E146* -'/' でパターンと置換文字列を囲む代わりに、英数字や '\', '"', '|' 以外であれば、 -他の1バイト文字を使うことができる。これは検索パターンや置換文字列に '/' を含む -場合に有益である。例 > - :s+/+//+ - -パターンの定義については |pattern| を参照。ビジュアル矩形モードで、置換をそ -の領域内だけで行いたい場合は、パターンに |/\%V| を含めます。これを使わない場 -合は、置換はつねに行全体に対して行われます。 - - *sub-replace-special* *:s\=* -{string}が"\="で始まるときは、それは式として評価されます。 -|sub-replace-expression|を参照してください。複雑な置換や特殊な文字を使うことが -できます。 - -そうでなければ、これらの文字が{string}のなかで特別な意味を持ちます: - - *:s%* -'cpoptions'に'/'が含まれている場合、{string}が"%"に等しいならば前の置換コマン -ドの{string}が使われます。|cpo-/| 参照 - - magic nomagic 作用 ~ - & \& マッチしたパターン全体に置き換わる *s/\&* - \& & '&' に置き換わる - \0 マッチしたパターン全体に置き換わる *\0* *s/\0* - \1 1番目の () 内のマッチしたパターンに置き換わる *s/\1* - \2 2番目の () 内のマッチしたパターンに置き換わる *s/\2* - .. .. *s/\3* - \9 9番目の () 内のマッチしたパターンに置き換わる *s/\9* - ~ \~ 前回の置換の {string} に置き換わる *s~* - \~ ~ '~' に置き換わる *s/\~* - \u 次の文字が大文字になる *s/\u* - \U 後に続く文字が (\E まで) 大文字になる *s/\U* - \l 次の文字が小文字になる *s/\l* - \L 後に続く文字が (\E まで) 小文字になる *s/\L* - \e \u, \U, \l, \L の終わり ( NOTE: <Esc> の意味ではない!) - *s/\e* - \E \u, \U, \l, \L の終わり *s/\E* - <CR> ここで行を2つに分ける (<CR> は CTRL-V <Enter> と入力する) - *s<CR>* - \r 同上 *s/\r* - \<CR> キャリッジリターン (CTRL-M) の挿入 (<CR> は CTRL-V <Enter> - と入力する) *s/\<CR>* - \n <NL> (ファイル内では <NUL>) の挿入 (改行を「起こさない」) - *s/\n* - \b <BS> の挿入 *s/\b* - \t <Tab> の挿入 *s/\t* - \\ '\' の挿入 *s/\\* - \x ('x' は上で説明されていない文字) 将来の拡張用に予約済み - -特別な意味は |substitute()| の 第三引数 {sub} でも使えますがいくつか例外があり -ます: - - % は 'cpoptions' に関係なくパーセント文字を挿入します。 - - 'magic' に関係なく magic は常にオンです。 - - ~ はチルダをそのまま挿入します。 - - <CR> と \r はキャリッジリターン (CTRL-M) を挿入します。 - - \<CR> は特別な意味を持ちません。単に \x の一種として扱われます。 - -例: > - :s/a\|b/xxx\0xxx/g "a b" を "xxxaxxx xxxbxxx" に置換 - :s/\([abc]\)\([efg]\)/\2\1/g "af fa bg" を "fa fa gb" に置換 - :s/abcde/abc^Mde/ "abcde" を "abc", "de" (2行) に置換 - :s/$/^V^M/ "abcde" を "abcde^M" に置換 - :s/\w\+/\u\0/g "bla bla" を "Bla Bla" に置換 - -NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。これはVi互換ではないの -で変更された。代わりに '\' を使うこと。 - -コマンド テキスト 置換結果 ~ -:s/aa/a^Ma/ aa a<line-break>a -:s/aa/a\^Ma/ aa a^Ma -:s/aa/a\\^Ma/ aa a\<line-break>a - -(ここで ^M を使うには CTRL-V <CR> と打ち込むこと) - -"\1", "\2"などの番号付けは、パターン内でどの "\(" が最初に来るかによって決まる -(左から右の順)。括弧でくくられたグループが複数回マッチするときは、最後のものが -"\1", "\2" 等に使われる。例: > - :s/\(\(a[a-d] \)*\)/\2/ "aa ab x" を "ab x" に置換 - -\([ab]\)\|\([cd]\) のように括弧を '|' と連携して使っているとき、1番目か2番目の -どちらかの括弧内のパターンにはマッチしない、すなわち、\1 か \2 のどちらかは空 -になる。例: > - :s/\([ab]\)\|\([cd]\)/\1x/g "a b c d" を "ax bx x x" に置換 -< - -式で置換する *sub-replace-expression* - *sub-replace-\=* - -置換文字列が "\=" で始まるとき、それ以降の文字列は式として解釈されます。これは -再帰的に機能しません。その式の中での |substitute()| では置換文字列に"\="を使う -ことはできません。 - -"<CR>" 以外の文字の特別な意味 |sub-replace-special| は無効になる。<NL> 文字は -改行として使われるのでダブルクォート文字列 "\n" で改行を入れることができる。 -実際の <NL> 文字 (ファイルにおける NUL 文字) を挿入するにはバックスラッシュを -前置する。 - -"\=" 表記は |substitute()| 関数の第三引数 {sub} でも使うことができる。その場 -合、|sub-replace-special| で説明されている文字は特別な意味を持たなくなる。特 -に、<CR> と <NL> は改行として解釈されるのではなく、そのままキャリッジリターン -とニューラインとして解釈される。 - -結果が|List|のときはその要素が改行を区切りとして連結される。よって要素がそれぞ -れ行となる。ただし要素が改行を含んでいる場合は除く。 - -マッチしたテキストの全体は "submatch(0)" で参照できる。1番目の () 内でマッチし -たテキストは "submatch(1)" で参照できる。以降の () 内でマッチしたテキストも同 -様に参照できる。 - -注意: 正規表現の区切り文字が expression 内に現れてはいけない!区切りには "@" -や "|" を使うよう検討すること。Expression の結果に区切り文字が現れても問題はな -い。 - -例: > - :s@\n@\="\r" . expand("$HOME") . "\r"@ -こうすると置換を行った行の下に、環境変数 $HOME の値を含む新しい行が挿入される。 > - - s/E/\="\<Char-0x20ac>"/g -これは文字'E'をユーロ記号で置換する。詳しくは|<Char->|を参照。 - - -4.3 検索と置換 *search-replace* - - *:pro* *:promptfind* -:promptf[ind] [string] - 検索ダイアログを表示する。 [string] が与えられると、そ - れ初期検索文字列になる。 - {Vi mのWin32版、Motif版、GTKのGUI版のみ} - - *:promptr* *:promptrepl* -:promptr[epl] [string] - 検索/置換ダイアログを表示する。 [string] が与えられる - と、それが初期検索文字列になる。 - {Vi mのWin32版、Motif版、GTKのGUI版のみ} - - -4.4 タブの変換 *change-tabs* - *:ret* *:retab* -:[range]ret[ab][!] [new_tabstop] - 新たに指定されたタブストップ (タブ幅) に基づき、<Tab> - を含む空白の連続を全て、新しい空白と <Tab> の列に置き - 換える。新たなタブストップの指定がないか0が指定された - ときは、Vimはオプション 'tabstop' の現在の値を使用す - る。'tabstop' の現在の値は、既存のタブの幅を計るために - 常に使用される。'!' を付けると、Vimは通常の空白のみの - 列も、適切なタブに置き換える。 - 'expandtab' がオンのとき、Vimは全てのタブを適切な数の - 空白に置き換える。 - このコマンドは 'tabstop' を新たに指定された値に設定す - る (訳注: この事実は重要である)。ファイル全体に適用さ - れたときは (それが既定の動作)、ファイルの見かけに変化 - が起こることはないはずだ。 - 注意: このコマンドはCプログラム中の文字列内部にある - <Tab> 文字も修正する。これを避けるためには、プログラム - 内では "\t" を使うとよい (そうでなくても、これはよい習 - 慣である)。 - ":retab!" も空白の連続を <Tab> 文字に変えてしまい、 - printf() の出力をめちゃくちゃにするかもしれない。 - {Vi にはなく、Vim が |+ex_extra| 機能付きでコンパイル - されたときのみ有効} - - *retab-example* -タブストップが 8 で保存され、タブストップが 4 で編集されたファイルを編集するた -めに autocommand と ":retab" を使う例。警告: 文字列内の空白は変わってしまうこ -とがある!オプション 'softtabstop' も参照。 > - - :auto BufReadPost *.xx retab! 4 - :auto BufWritePre *.xx retab! 8 - :auto BufWritePost *.xx retab! 4 - :auto BufNewFile *.xx set ts=4 - -============================================================================== -5. テキストのコピーと移動 *copy-move* - - *quote* -"{a-zA-Z0-9.%#:-"} 続く操作 (削除、コピー、張り付け) にレジスタ - {a-zA-Z0-9.%#:-"} を使う (削除、コピーでは大文字を使う - ことでレジスタに追記できる) - ({.%#:} は張り付けにのみ使用可能)。 - - *:reg* *:registers* -:reg[isters] 全ての名前付きレジスタおよび番号付きレジスタの内容を表 - 示する。レジスタが |:redir| の書き込み先になっている場 - 合はそのレジスタは表示されない。 - {Vi にはない} - -:reg[isters] {arg} {arg} に指定された名前付きレジスタおよび番号付きレジス - タを表示する。例: > - :dis 1a -< レジスタ '1' と 'a' が表示される。{arg} の中では空白を - 用いてよい。 {Vi にはない} - - *:di* *:display* -:di[splay] [arg] :registers と同じ。 {Vi にはない} - - *y* *yank* -["x]y{motion} {motion} のテキストを [レジスタ x に] コピーする。 - コピーされるテキストがないとき (例えば 1 桁目で "y0" - を行う)、オプション 'cpoptions' がフラグ 'E' を含んで - いるならエラーになる。 - - *yy* -["x]yy [count] 行を [レジスタ x に] コピーする (行単位 - |linewise|)。 - - *Y* -["x]Y [count] 行を [レジスタ x に] コピーする ("yy" と同義、 - 行単位|linewise|)。"Y" でカーソル位置から行の終わりま - でコピーしたいときは (この方が論理的と言えるが、Vi互換 - ではない) ":map Y y$" を使う。 - - *v_y* -{Visual}["x]y ビジュアル選択されたテキストを [レジスタ x に] コピー - する - ({Visual} については |Visual-mode| を参照)。 {Vi には - ない} - - *v_Y* -{Visual}["x]Y ビジュアル選択された行を [レジスタ x に] コピーする - ({Visual} については |Visual-mode| を参照)。 {Vi には - ない} - - *:y* *:yank* *E850* -:[range]y[ank] [x] [range] の行を [レジスタ x に] コピーする。"* レジスタ - と "+ レジスタへのコピーは |+clipboard| 機能が有効な場 - 合のみ可能。 - -:[range]y[ank] [x] {count} - [range] の最後の行 (省略時は現在行 |cmdline-ranges|) - から数えて {count} 行を [レジスタ x に] コピーする。 - - *p* *put* *E353* -["x]p カーソルの後に、テキストを [count]回 [レジスタ x から] - 張り付ける。 {Vi: カウントはない} - - *P* -["x]P カーソルの前に、テキストを [count]回 [レジスタ x から] - 張り付ける。 {Vi: カウントはない} - - *<MiddleMouse>* -["x]<MiddleMouse> カーソルの前に、テキストを [count]回 [レジスタ x から] - 張り付ける。レジスタ指定がない場合は "* が使われる。 - カーソルは挿入したテキストの末尾に置かれる。 - マウスは 'mouse' が 'n' か 'a' を含むときのみ使える。 - {Vi にはない} - もしあなたがスクロールホイールを持っていて意図せずにテ - キストを貼り付けてしまうのなら、次のマッピングでマウス - の真ん中のボタンを無効化できます。 > - :map <MiddleMouse> <Nop> - :imap <MiddleMouse> <Nop> -< 複数クリックも無効にしたいなら|double-click|も参照して - ください。 - - *gp* -["x]gp "p" と似ているが、カーソルは挿入したテキストの直後に置 - かれる。 {Vi にはない} - - *gP* -["x]gP "P" と似ているが、カーソルは挿入したテキストの直後に置 - かれる。 {Vi にはない} - - *:pu* *:put* -:[line]pu[t] [x] [line] 行目 (省略時は現在行) の後にテキストを [レジス - タ x から] コピーする。このコマンドは常に行単位 - |linewise| の動作をするので、コピーされたブロックを新 - しい行として挿入するときに使える。 - カーソルは挿入された最後の行の最初の非空白文字の上に置 - かれる。 - レジスタには '=' に続けて式を指定することもできる。コ - マンドの末尾までが式として評価される。文字 '|' と '"' - がコマンドの末尾として解釈されないようにするには、それ - らをエスケープする (訳注: 前に '\' を置く) 必要があ - る。例: > - :put ='path' . \",/test\" -< '=' の後に式がないときは前回の式が使われる。それはコマ - ンド ":dis =" で見ることができる。 - -:[line]pu[t]! [x] [line] 行目 (省略時は現在行) の前にテキストを [レジス - タ x から] コピーする. - -["x]]p または *]p* *]<MiddleMouse>* -["x]]<MiddleMouse> "p" と似ているが、現在行に合わせてインデントが調整され - る。マウスは、'mouse' が 'n' か 'a' を含むときだけ使え - る。 {Vi にはない} - -["x][P または *[P* -["x]]P または *]P* -["x][p または *[p* *[<MiddleMouse>* -["x][<MiddleMouse> "P" と似ているが、現在行に合わせてインデントが調整され - る。マウスは、'mouse' が 'n' か 'a' を含むときだけ使え - る。 {Vi にはない} - -これらのコマンドを使って、ある場所から別の場所へテキストをコピーできる。まずコ -ピー、削除または変更コマンドを使って、テキストをレジスタに蓄える。そしてレジス -タの内容を、張り付けコマンドで文章中に挿入する。これらのコマンドで、あるファイ -ルから別のファイルへテキストを移動させることもできる。Vim はバッファを切り替え -ても、全てのレジスタの内容を保っているからである (コマンド CTRL-^ は、2個の -バッファを素早く切り替えられる). - - *linewise-register* *characterwise-register* -張り付けコマンド (":put" 以外) は、"." で繰り返したり、アンドゥできる。テキス -トをレジスタに蓄えるのに使われたコマンドが行単位|linewise|のものだったら、テキ -ストはカーソルのある行の次の行 ("p" のとき) や前の行 ("P" のとき) に張り付けら -れる。そうでなければ、テキストはカーソルの後 ("p" のとき) や前 ("P" のとき) に -挿入される。コマンド ":put" を使ったときは、テキストは常に次の行へ挿入される。 -"xp" というコマンド列で、カーソル上の文字と次の文字との入れ替えができる。現在 -行と次の行との入れ替えには、コマンド列 "ddp" を使う。(カーソルが単語の前の空白 -の上にあるとき) 次の単語とその次の単語との入れ替えには、コマンド列 "deep" を使 -う。張り付けコマンドを使った後には、コマンド "']" か "`]" で挿入された行の終わ -りに移動でき、コマンド "'[" か "`[" で挿入された行の最初に移動できる。 - - *put-Visual-mode* *v_p* *v_P* -ビジュアルモードで |p| や |P| 等の貼り付けコマンドを使ったとき、Vimは選択さ -れたテキストをレジスタの中身で置き換えようとする。これがうまく動作するかどう -かは、選択領域の種類とレジスタ内のテキストの種類による。ブロック指向の選択で -は、ブロックのサイズと、選択領域の角が既存の文字上にあるかどうかにもよる。 -(実装上の詳細:実際の動作は、まずレジスタの中身を選択領域の後に張り付け、その -後で選択領域を削除するようになっている) -それまで選択されていたテキストが無名レジスタに保存される。同じテキストを複数 -のビジュアル選択領域にプットしたい場合は、ほかのレジスタを使う必要がある。例 -えば、コピーしたいテキストをヤンクして、選択したテキストを "0p で置き換える。 -これを好きなだけ繰り返す。このとき、無名レジスタはプットするたびに変わる。 - - *blockwise-register* -ビジュアル矩形モードで、レジスタにテキストを蓄えるコマンドを使うと、テキストのブ -ロックはカーソルの前 ("P" のとき) または後 ("p" のとき) から、現在行と引き続く -行にわたって、挿入される。テキストのブロック全体は同じ列から始まるように挿入さ -れる。そのため挿入されたテキストはコピーや削除されたときと同じ形を保っている。 -Vimは、このようにするために <Tab> を空白で置き換えることがある。しかし、テキス -トのブロックの幅が <Tab> の幅の整数倍でなく、さらに挿入されたブロックの後のテ -キストが <Tab> を含むとき、列揃えがおかしくなることがある。 - -Note 文字単位のコピーコマンドの後、コピーされたテキストの中でバッファの先頭に -一番近い文字の上にカーソルが置かれることに注意。つまり "yl" ではカーソルは動か -ないが、"yh" ではカーソルは1文字左に動く。 -理論的説明: Viでは、後方移動を伴ったコマンド "y" ではコピーされたテキスト - の先頭にカーソルを移動させないことがあった。これは再表示が省か - れたためである。Vimでは Posix に定められた通り、常に先頭の文字 - にカーソルを移動させる。 -行単位のコピーコマンドではカーソルは選択の最初の行に置かれるが、カラムは変更さ -れない。なのでその位置はコピーされた最初の文字の上ではないかもしれない。 - -レジスタには 9 種類ある: *registers* *E354* -1. 無名レジスタ "" -2. 10個の番号付きレジスタ "0 から "9 -3. 小削除用レジスタ "- -4. 26個の名前付きレジスタ "a から "z または "A から "Z -5. 4個の読み取り専用レジスタ ": と ". と "% と "# -6. expression 用レジスタ "= -7. 選択領域用レジスタ "* と "+ と "~ -8. 消去専用レジスタ "_ -9. 最終検索パターン用レジスタ "/ - -1. 無名レジスタ "" *quote_quote* *quotequote* -このレジスタには、コマンド "d", "c", "s", "x" 等で削除されたテキストや、"y" 等 -のコピーコマンドでコピーされたテキストが蓄えられる。特定のレジスタが指定されて -いてもいなくても関係ない (例えば "xdd でもこれが使われる)。つまり無名レジスタ -は最後に使われたレジスタを指していると考えられる。よって、大文字レジスタを使っ -て名前つきレジスタにテキストを追加したときも、無名レジスタの中身は、その名前 -つきレジスタと同じになる。 -例外はレジスタ '_'である。"_dd は、削除されたテキストをどのレジスタにも蓄え -ない。 -無名レジスタの中身は、レジスタを指定しない貼り付けコマンド (p や P) で使うこ -とができる。加えて、このレジスタは '"' という名前で使うことができる。これは、 -使うときには二重引用符'"' を2 個打ち込むということである。レジスタ "" に対す -る書き込みはレジスタ "0にも書き込むことになる。 -{Vi ではレジスタの内容はファイルを変更するときに失われ、'"' もない} - -2. 番号付きレジスタ "0 から "9 *quote_number* *quote0* *quote1* - *quote2* *quote3* *quote4* *quote9* -これらのレジスタには、コピーや削除コマンドによってテキストが蓄えられる。 -番号付きレジスタの 0 には、一番最近にコピーしたテキストが蓄えられるが、コピー -の際に ["x] として別のレジスタ名を指定したときは、これには蓄えられない。 -番号付きレジスタ 1 には、一番最近に削除したり変更したテキストが蓄えられるが、 -コマンドに別のレジスタ名を指定したり、削除や変更したテキストが1行以下だったり -したときは、これには蓄えられない (そのときは小削除用レジスタが使われる)。例外 -は、以下の移動コマンドと削除コマンドを組み合わせたときである。|%|, |(|, |)|, -|`|, |/|, |?|, |n|, |N|, |{|, |}|。このときは必ずレジスタ "1 が使われる (これ -はVi互換の動作である)。削除や変更したテキストが1行以下だったときは、レジスタ -"- も使われる。削除や変更が行われるたびに、レジスタ 1 の内容はレジスタ 2 に、 -レジスタ 2 の内容はレジスタ 3 に、という風にずれていく。レジスタ 9 の内容は失 -われる。 -{Vi では番号付きレジスタの内容はファイルを変更する際に失われる。レジスタ 0 は -ない} - -3. 小削除用レジスタ "- *quote_-* *quote-* -このレジスタには、範囲が1行以下の削除コマンドで削除されたテキストが蓄えられる。 -ただし、コマンドに ["x] で別のレジスタ名を指定したときはこれには蓄えられない。 -{Vi にはない} - -4. 名前付きレジスタ "a から "z または "A から "Z *quote_alpha* *quotea* -これらのレジスタが使われるのは、ユーザに指定されたときのみである。コピーや削除 -の際にこれらのレジスタを小文字で指定すると、コピーや削除されたテキストが蓄えら -れ、元から入っていたテキストは消える。大文字で指定すると、元から入っていた内容 -の後ろに新しいテキストを付け加える。'cpoptions'にフラグ'>'が入っていると、新し -いテキストの前に改行が挿入される。 - -5. 読みとり専用レジスタ ": と ". と "% と "# -読みとり専用レジスタには '%' と '#' と ':' と '.' がある。コマンド "p", "P", -":put" および CTRL-R でのみ使うことができる。 {Vi にはない} - *quote_.* *quote.* *E29* - ". 最後に挿入されたテキストが蓄えられる (Insertモードのコマンド - CTRL-A や CTRL-@ で挿入されるものと同じテキストである)。 Note: - これはコマンドライン上での CTRL-R では使えないことに注意。動作 - が少し異なり、テキストを張り付けるというより挿入するような動作 - をする (挿入されるテキストに 'textwidth' 等のオプションが影響 - する)。 - *quote_%* *quote%* - "% カレントファイルの名前が蓄えられる。 - *quote_#* *quote#* - "# 代替ファイルの名前が蓄えられる。 - *quote_:* *quote:* *E30* - ": 一番最近に実行されたコマンドラインの内容が蓄えられる。例: 前回 - のコマンドラインによるコマンドを実行するには、"@:" が使える。 - コマンドラインがこのレジスタに蓄えられるのは、コマンドライン内 - にコマンドが最低でも1文字打ち込まれたときである。そのため、コ - マンドが完全にキーマッピングから実行されたときには、この内容に - 変化はない。 - {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} - -6. Expression レジスタ "= *quote_=* *quote=* *@=* -これは、本当はテキストを蓄えるレジスタではないが、レジスタを使うコマンドで式 -を評価するために使える。この expression レジスタは読み取り専用である。 -これにはテキストをコピーできない。'=' を打ち込むと、カーソルはコマンド行に移 -動し、あらゆる式を入力することができる (|expression| を参照)。コマンドライン -から入力できる普通の編集用コマンドは、式用の特別履歴も含め、全て使用可能であ -る。<CR> を打ち込んでコマンドライン入力を終了させると、式の結果が計算される。 -<Esc> を打ち込んで終了させると、式は破棄される。式が入力されないときは、(コ -マンド "/" と同様) 前回の式が使われる。 - -式を評価した結果は文字列でなければならない。評価した結果が数値なら、文字列に -変換される。"p" と ":put" コマンドの場合、結果が浮動小数点数なら文字列に変換 -される。リストの場合、各要素が文字列に変換され、それぞれが 1 行として挿入さ -れる。辞書または FuncRef はエラーメッセージが出る(string()を使って変換する)。 - -レジスタ "= が "p" で使われると、文字列は<NL> 文字 (訳注: New Line ---改行) の所で分割される。文字列が <NL> で終わっていたら、これは行単位のレジ -スタと見なされる。 {Vi にはない} - -7. 選択範囲レジスタ "* と "+ -これらのレジスタは、GUIで、選択されたテキストを蓄えたり取り出すために使われる。 -|quotestar| と |quoteplus| を参照。クリップボードが利用できないときは、無名レ -ジスタが代わりに使われる。 Unixでは|+xterm_clipboard|が有効になっているときだ -けクリップボードを利用できる。{Vi にはない} - -Note "* と "+ に区別があるのは X11 システムのみであることに注意。違いについて -は |x11-selection| を参照。MS-Windowsでは "* と "+ は実際には同義で、クリップ -ボード |gui-clipboard| を使用する。 - - *quote_~* *quote~* *<Drop>* -この読み込み専用の "~ レジスタは最後にドラッグアンドドロップされたテキストを -提供する。何かがVimにドロップされたとき、 "~ レジスタがそれで埋められ、 -<Drop>仮想キーが通知される。このキーをリマップして使うことができる。デフォル -トでは(全てのモードにおいて) "~ レジスタの内容をカーソルの位置に挿入する。 -{Vi にはない} -{|+dnd|付きでコンパイルされたときのみ有効。現在はGTK GUIでのみ使える。} - -Note: "~ レジスタはプレインテキストをVimにドロップしたときのみ使われる。URI -のリストは内部で扱われる。 - -8. 消去専用レジスタ "_ *quote_* -このレジスタを指定してテキストを削除しても、(訳注: レジスタには) 何も起こらな -い。そのため、普通のレジスタに影響を与えずに削除が行える。このレジスタから張り -付けようとしても、何も出てこない。 {Vi にはない} - -9. 最終検索パターン用レジスタ "/ *quote_/* *quote/* -最後に使われた検索パターンが蓄えられる。これはコマンド "n" やオプション -'hlsearch' による強調表示に使われる。 -このレジスタは ":let" で変更できるので、'hlsearch' による強調表示を、実際に検 -索を行わずに別のマッチに適用することができる。このレジスタを使ってコピーしたり -削除することはできない。 -Note 関数から抜けると、この値は関数に入る前の値に復元される。 -|function-search-undo| -{Vi にはない} - - *@/* -レジスタには、コマンド ":let" で書き込むことができる |:let-@| 。例: > - :let @/ = "the" - -レジスタを指定せずに張り付けコマンドを使うと、最後に書き込みが行われたレジスタ -が使われる (その内容は無名レジスタと同じである)。混乱したときは、コマンド -":dis" を使うとレジスタの内容が分かる (このコマンドは、全てのレジスタの内容を -表示する。無名レジスタは '"' と示される)。 - -以下の3個のコマンドは、必ず行全体に対して働く。 - -:[range]co[py] {address} *:co* *:copy* - [range] 行を、{address} 行目の下にコピーする。 - - *:t* -:t ":copy" と同義。 - -:[range]m[ove] {address} *:m* *:mo* *:move* *E134* - [range] 行を、{address} 行目の下に移動する。 - -============================================================================== -6. テキストの整形 *formatting* - -:[range]ce[nter] [width] *:ce* *:center* - [range] の行を、幅 [width] (既定値は 'textwidth'、 - 'textwidth' が 0 のときは 80) に基づいて中央揃えする。 - {Vi にはなく、Vimが |+ex_extra| 機能付きでコンパイルさ - れたときのみ有効} - -:[range]ri[ght] [width] *:ri* *:right* - [range] の行を、幅 [width] (既定値は 'textwidth'、 - 'textwidth' が 0 のときは 80) に基づいて右揃えする。 - {Vi にはなく、Vimが |+ex_extra| 機能付きでコンパイルさ - れたときのみ有効} - - *:le* *:left* -:[range]le[ft] [indent] - [range] の行を左揃えする。行中のインデントを [indent] - (既定値 0) に設定する。 {Vi にはない} - {Vi mが |+ex_extra| 機能付きでコンパイルされたときのみ - 有効} - - *gq* -gq{motion} {motion} の行を整形する。整形は3種類の方法のうちどれか - で行われる。 - 1. 'formatexpr'が空でなければそのexpressionが評価さ - れる。これはバッファごとに異なってもよい。 - 2. 'formatprg'が空でなければ外部プログラムが使われる。 - 3. それ以外の場合は内部整形ルーチンが使われる。 - - 3番目の場合は、オプション 'textwidth'が整形された各行 - の長さを制御する (後述)。'textwidth'が 0 なら、整形さ - れた行の長さは画面の幅となる (ただし、最大で79)。 - 'formatoptions' は、整形の仕方を制御する |fo-table|。 - カーソルは最後に整形された行の最初の非空白文字の上に置 - かれる。 - NOTE: 以前はコマンド "Q" でこの機能を行っていた。やは - り整形に "Q" を使いたいならば、次のマッピングを使うこ - と。 > - :nnoremap Q gq - -gqgq *gqgq* *gqq* -gqq 現在行を整形する。カウントを指定するとその行数だけ整形 - される。 {Vi にはない} - - *v_gq* -{Visual}gq ビジュアル選択されたテキストを整形する。({Visual}については - |Visual-mode| を参照)。 {Vi にはない} - - *gw* -gw{motion} {motion}で動いた範囲の行を整形する。|gq|に似ているが - カーソルは元の位置に戻る。'formatprg'と'formatexpr'は - 使われない。{Vi にはない} - -gwgw *gwgw* *gww* -gww "gw"と同様にして現在行を整形する。 {not in Vi} - - *v_gw* -{Visual}gw 選択されたテキストを"gw"と同様にして整形する。 - ({Visual}については|Visual-mode|を参照). {not in Vi} - -例: 現在の段落を整形するには、次のようにする。 *gqap* > - gqap - -コマンド "gq" は、移動コマンドによってカーソルが動くはずの位置にカーソルを移動 -させる。このため、"." で整形を繰り返すことができる。これは、"gqj" (現在行と次 -行を整形) と、"gq}" (段落の最後までを整形) で有用である。 NOTE: 'formatprg' が -設定されているときは、"gq" を実行すると (フィルタコマンド使用時と同様に) カー -ソルは整形された最初の行に移動する。 - -カーソルのある位置の段落をフォーマットし、その位置からさらに編集を再開するには -こうします。 > - gwap -いつも段落をフォーマットしておきたいなら'formatoptions'に'a'フラグを追加してく -ださい。|auto-format|も参照してください。 - -オプション 'autoindent' がオンのとき、Vimは最初の行のインデントを続く行に対し -て適用する。 - -テキストの整形処理は空の行には変更を加えない (しかし、空白のみで構成された行に -は変更を行う!)。 - -オプション 'joinspaces' は、行が連結されるときに使われる。 - -オプション'formatexpr'でテキストの整形に使うexpressionを設定したり、 -'formatprg' で外部プログラムの名前を設定することができる。 -外部プログラムによる整形処理には、'textwidth' や他のオプションは何の影響も与え -ない。 - - *right-justify* -テキストを右揃えするコマンドは、Vimには存在しない。"par" 等の外部コマンド (例: -"!}par" で段落の最後までを整形する) を実行したり、'formatprg' に "par" を指定 -することで、これを行うことができる。 - - *format-comments* -コメント整形の概要がユーザーマニュアルの |30.6| にある。 - -Vimは特殊な方法で自動的にコメントを挿入・整形できる。Vimは行の最初の特定の文 -字列 (空白を無視する) によって、コメントを認識できる。コメントには3種類が使 -える。 - -- 各行の最初で繰り返されるコメント文字列。例えば、"#" で始まるシェルスクリプト - のコメントなど。 -- 最初の行にのみ現れ、続きの行には現れないコメント文字列。例えば、このリストに - おけるダッシュ '-'。 -- 最初の文字列、最後の文字列、そしてその間の行の3つの部分から成るコメント。開 - 始部分、中間部分、終了部分に使われる文字列は異なる。例えば、C言語形式のコメ - ント。 > - /* - * これは C のコメント - */ - -オプション 'comments' は要素のコンマ区切りのリストである。各要素はコメント文字 -列の種類を定義している。要素は次のように構成される。 - {flags}:{string} - -{string} は普通のテキストで、これがなければならない。 - -{flags}: - n 入れ子になったコメント。混在した要素の入れ子も有効である。'comments' - が "n:),n:>" であれば、"> ) >" で始まる行はコメント。 - - b {string} の後に余白 (<Space>、<Tab> または <EOL>) が必要。 - - f 最初の行のみがコメント文字列を持つ。次の行にはコメントを繰り返さないが、 - インデントは保持する(例、bullet-list)。 - - s 3部コメントの開始部分。 - - m 3部コメントの中間部分。 - - e 3部コメントの終了部分。 - - l 左揃え。's' か 'e' と共に指定された場合、それぞれ最初または最後の部分 - の一番左の文字が、真ん中の一番左の文字に対して揃えられる。この動作は - デフォルトであるが、省略もできる。詳しくは後述。 - - r 右揃え。一番左でなく一番右であること以外、l と同じ。詳しくは後述。 - - O コマンド "O" ではこのコメントを考慮しない。 - - x 3部コメントで、中間部分のコメントがすでに自動で挿入されているとき、新 - しい行の最初のアクションとして、終了部分のコメント文字列の最後の文字 - を打ち込むだけで、コメントを終了させる。詳細は以下を参照。 - - {digits} - 's' か 'e' と共に指定された場合: 自動的に挿入された、中間または最後 - のコメントの最初の部分に対し、{digits} 分のオフセットを加える。この - オフセットは左端を基準とする。詳しくは後述。 - - -{digits} - {digits} に似ているが、インデントを減らす。開始部分と終了部分に減らす - べきインデントが存在しているときのみ機能する。 - -コメント文字列にフラグ 'f', 's', 'm', 'e' のいずれも指定しないとき、Vimはコメ -ント文字列を行の最初に繰り返すと仮定する。フラグ欄は空になる。 - -{string} の前や後にある余白は、{string} の一部とされる。コメント文字列に必要で -ない限り、余白を前や後に付けないこと。 - -あるコメント開始文字列が他のコメントの一部であるときは、共通部分の後で特定の部 -分を指定すること。例えば、"-" と "->" の両方を含みたいときは、次のようにする。 > - :set comments=f:->,f:- - -3部コメントには常に開始部分、中間部分、終了部分を指定しなければならない。そし -て、他の要素を間に入れてはならない。C言語での3部コメントの例は次の通り。 > - sr:/*,mb:*,ex:*/ -"*ptr" がコメントとして認識されないように、中間部分の文字列がフラグ 'b' を含ん -でいる。3部コメントでは、Vimは開始部分と中間部分の文字列の後のテキスト内に、最 -後の文字列が含まれていないかを調べる。終了部分の文字列が見つかると、コメントは -次の行には続かない。3部コメントには、Vimが中間の行を認識できるようにするために、 -中間部分の文字列を指定しなければならない。 - -上記の3部コメントの定義における、フラグ "x" の使用について注意しておく。Cコメ -ントでリターンを打てば、Vimは新しい行に対して " * " のようなコメントの中間部分 -の開始文字列を挿入する。このコメントを閉じるには、新しい行において何も打ち込む -前に "/" と打ち込めばよい。これは中間のコメント指示を最後のコメント指示に置き -換え、" */" とする。指定された桁揃えは適用される。その前にバックスペースを打 -ち込む必要はない。 - -中間部分がマッチしたとき、終了部分もマッチしていてそちらの方が長い場合は、終了 -部分がつかわれます。これによって C スタイルコメントが中間部分の末尾にスペース -を付けなくても機能するようになります。 - -桁揃えフラグを使ってコメントを目立たせる例を示す。'comments' が次のようになっ -ている場合: > - :set comments=sr:/***,m:**,ex-2:******/ -< - /*** ~ - **<--"r" フラグによって右揃えされている ~ - ** ~ - "-2" フラグによってスペース ** ~ - 2 個分のオフセットがついている --->** ~ - ******/ ~ -これを入力する際、コメントの開始行を入力し、リターンを 4 回押す。そして "/" -を押せばコメントが終了する。 - -3部コメントについて、より細かいことをいくつか説明する。桁揃えフラグとオフセッ -トフラグが考慮される箇所は、次の3箇所ある。コメント開始行のあとの新規行を開く -とき、コメント終了行の前の新規行を開くとき、自動的にコメントを終了させるとき -である。終了部分の桁揃えフラグは、上の行を参照する。これによって、"s" と"e" -に同じ桁揃えフラグを指定したとき、開始部分と終了部分のインデント量が同じにな -る。コメントの部分ごとに1個だけの桁揃えが使われるようになっている。しかし、 -オフセットの数は "r" と "l" フラグより優先する。 - -'cindent' をオンにしていると、多くの場合、桁揃えフラグより優先される。 -|gq| や |=| を使って再インデントするときも、桁揃えフラグは適用されない。同じ -挙動を定義するには、それらのコマンドのオプションを使う。一つの考えとしては、 -'cindent'に文脈に応じてコメントをインデントさせるオプションを追加することで -あるが、3部コメントの桁揃えを模倣することはほとんどできない。しかし -'indentexpr' は3部コメントをもっとうまく扱える可能性を持つ。 - -他の例: > - "b:*" "*" の後に非ブランク文字が付いていなければ、"*" で始まる行を - 含む。これはポインタの値への参照 "*str" が、コメントとして認識 - されるのを防ぐ。 - "n:>" ">", ">>", ">>>" などで始まる行を含む。 - "fb:-" "- " で始まるリストを整形する。 - -既定では "b:#" が含まれている。これは "#include" で始まる行がコメントとならな -いことを意味する。しかし、"# define" で始まる行はコメントとなる。これは妥協的 -解決である。 - -{Vi mが |+comments| 機能付きでコンパイルされたときのみ有効} - - *fo-table* -テキストの整形方法はオプション 'formatoptions' で調整できる。 'formatoptions' -は以下のフラグを含む文字列である。既定値は "tcq" である。読みやすくするために、 -フラグをコンマで区切ってもよい。 - -フラグ 'formatoptions' に指定されたときの作用 ~ - -t 'textwidth' を使ってテキストを自動折返しする -c 'textwidth' を使ってコメントを自動折返して、現在のコメント開始文字列を - 自動挿入する。 -r 挿入モードで <Enter> を打ち込んだ後に、現在のコメント開始文字列を自動 - 挿入する。 -o ノーマルモードで 'o', 'O' を打ち込んだ後に、現在のコメント開始文字列を - 自動的に挿入する。 -q "gq" でコメントを整形する。 - NOTE 整形は空行やコメント開始文字列のみの行は変更しないことに注意。新 - しい段落はそのような行の次、またはコメント開始文字列が変わった所から始 - まる。 -w 行末に空白が付いているとき、段落が次行に続いていると認識する。行末が空 - 白以外の行で段落が終わるとする。 -a 段落を自動整形する。テキストが挿入されたり削除されるたび、段落は再整形 - される。|auto-format| を参照。 - 'c'フラグも設定されているときはコメント挿入時のみ機能する。 -n テキストの整形時、番号付きリストを認識する。これは実際には - 'formatlistpat'を使う。それゆえ、どんな種類のリストでも処理できる。 - 数字の後のテキストのインデントが次の行に使われる。数字の後に '.', ':', - ')', ']' や '}' が付いてもよい。 オプション 'autoindent' がオンでなけ - ればならないことに注意。"2"と一緒には機能しません。例: > - 1. 一つ目の項目 - 折り返し - 2. 二つ目の項目 -2 テキストを整形するとき、段落の最初の行ではなく2番目の行のインデントを - 使ってそれ以降の行を整形する。これは最初の行のインデントが他の行と異な - るような段落をサポートする。'autoindent' もオンである必要がある。例: > - ここはある段落の一行目 - ここは上の行と同じ段落の二行目 - ここは三行目。 -v 挿入モードでVi互換の自動折返しを使う: 挿入モードに入って以来入力された - 空白でのみ折返しが行われる。( NOTE: これは100%のVi互換ではない。Viには - このあたりに「予期できない機能」、というかバグがあった。Viは実際のテキ - ストの列の代わりに画面上の列を使用する。) -b 'v' と同様だが、折返し余白の中または前で、空白を入力したときのみ自動折 - 返しをする。挿入開始時に 'textwidth' より行が長かったり、'textwidth' - に達するまで空白を入力しなかったときは、Vimは自動折返しをしない。 -l 挿入モードでは長い行は折り返されない: 挿入開始時に行が 'textwidth' よ - り長い場合、Vimは自動で整形を行わない。 -m 文字コードが 255 より後のマルチバイト文字の間でも改行する。これは文字 - 全てがそれだけで単語であるような、アジア言語のテキストで便利である。 -M 行の連結時に、マルチバイト文字の前後に空白を挿入しない。こちらの方がフ - ラグ 'B' より優先する。 -B 行の連結時に、マルチバイト文字同士の間に空白を挿入しない。こちらよりフ - ラグ 'M' の方が優先する。 -1 1文字の単語の後では改行しない。代わりにその前で改行される (可能ならば)。 - - -'t' と 'c' でVimが自動折返しを行うタイミングを指定できる。 -フラグ 作用 ~ -"" 自動整形しない ("gq" で手動の整形処理を行う) -"t" テキストを自動整形するが、コメントにはしない -"c" コメントを自動整形するが、テキストにはしない (C言語コードに適している) -"tc" テキストとコメントを自動整形する - -NOTE 'textwidth' が 0 のとき、Vimはいかなる自動整形も行わないので注意 -('comments'によるコメント開始文字列の挿入はする)。例外はフラグ'a'が入っている -場合である。|auto-format| - -NOTE 'paste' がオンのとき、Vimは全ての整形処理を行わないので注意。 - -NOTE Vimに自動折返しをさせなくても、'textwidth' は非 0 であってよいことに注意。 -'textwidth' は "gq" による整形処理でも便利だからである。 - -'comments' が "/*" と ("*" と) "*/" を含んでいるときは、Vim組み込みの機能によ -りこれらのタイプのコメントをもう少し巧く扱うことができる。 -('formatoptions' に 'r' か'o' が含まれているとき) "/*" または "*/" の前か後で -新しい行を始めると、行の正しい開始位置が自動的に与えられる。同じことが整形処理 -と自動折返しでも行われる。"/*" や "*" で始まり、かつ "*/" を含む行の後で行を始 -めるときは、コメント開始文字列が挿入されず、新しい行のインデントはコメントの最 -初の行に合わせられる。 -例: - /* ~ - * 典型的なコメント。 ~ - */ ~ - この行のインデントは、上のコメントの先頭行と同じになる。 - -これら全ては、特に異なるファイルタイプに対する異なる設定に対応する際、新しい -autocommand と連携して、クールに振舞うはずである。 - -いくつかの例: - C言語コード用 (コメントの整形のみ): > - :set fo=croq -< メール/ネットニューズ用 (全て整形、コマンド "o" でコメントを始めない): > - :set fo=tcrq -< - -自動整形 *auto-format* - -オプション 'formatoptions' にフラグ 'a' が含まれると、テキストを挿入したり削除 -したときに自動整形が行われる。これはテキストの段落分けを編集するときに便利であ -る。以下では使い方についてのヒントをいくつか。 - -- 段落を適切に定義する必要がある。もっとも単純なものは、空行が区切りになる場合 - である。区切りとなる空行がないときは、フラグ 'w' を使い、段落の最終行以外の - 行末に空白を付けるようにしてみること。 - -- 'formatoptions' をファイルタイプ |filetype| に基づいて設定することができる。 - またはモードライン |modeline| で特定のファイルに対して設定することもできる。 - -- 'formatoptions' を "aw2tcq" に設定し、テキストのインデントを次のようにするこ - ともできる。 - - bla bla foobar bla - bla foobar bla foobar bla - bla bla foobar bla - bla foobar bla bla foobar - -- コメントだけを自動整形するには'c'フラグを追加する。ソースコードの編集向き。 - -- 行の長さを望みどおりにするには'textwidth'を設定する。これが0ならば79になる。 - 画面の幅が79桁より小さい場合は画面幅になる。 - -次にいくつかの警告: - -- テキストの部分部分が段落内で適切に分割されていないとき、そのテキスト内で変更 - を行うと、有無をいわさず整形が始まってしまう。次のようにしてみること。 > - - :set fo-=a - -- フラグ 'w' (行末の空白で段落が終わっていないことを判断する) を使っているとき - に |dd| で段落の最終行を削除すると、その段落が次の段落とつながってしまう。 - -- 変更されたテキストは、アンドゥのために記憶される。整形も変更の一種である。そ - のため、整形を行う度にテキストがアンドゥ用に記憶される。すると大量のメモリを - 消費するかもしれない。 - -- 長い段落や、複雑なインデントの段落を整形するのには、時間がかかることがある。 - -============================================================================== -7. テキストのソート *sorting* - -Vimはソート関数とソートコマンドを備えている。ソート関数については|sort()|を参 -照。 - - *:sor* *:sort* -:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] - [range]の行をソートする。範囲が指定されない場合は全行 - をソートする。 - - [!]をつけると順序が逆になる。 - - [i]をつけると大文字・小文字を区別しない。 - - [n]をつけると行の({pattern}のマッチの後ろまたは内側 - の)最初の8進数の数字でソートする。 - 数字が '-' で始まる場合、マイナスとみなされる。 - - [x]をつけると行の({pattern}のマッチの後ろまたは内側 - の)最初の16進数の数字でソートする。"0x"と"0X"は無視さ - れる。 - 数字が '-' で始まる場合、マイナスとみなされる。 - - [o]をつけると行の({pattern}のマッチの後ろまたは内側 - の)最初の10進数の数字でソートする。 - - [u]をつけると連続する同一行の最初の行だけを残す。 - ([i]がつくと大文字・小文字を無視する) - このフラグがつかない場合、連続する同一行はそのままの順 - 序で残される。 - Note: 行頭に行末の空白があると異なる行とみなされる。 - - /pattern/が指定され、フラグ[r]がない場合は{pattern}に - マッチするテキストはスキップされる。これによって、その - マッチの後に来るテキストでソートできる。 - スラッシュの代わりにどんなnon-letterでも使うことができ - る。 - 例えば、カンマで区切られた2番目のフィールドでソートす - るには: > - :sort /[^,]*,/ -< 画面上の10桁目でソートするには(そのためタブとスペース - は同一視される): > - :sort /.*\%10v/ -< 行中の最初の数字でソートするには: > - :sort /.\{-}\ze\d/ -< (解説: ".\{-}" は任意のテキストにマッチする。"\ze" - はそのマッチの終わりをセットし、"\d" は数字にマッチ - する。) - [r]がつくと、前述のように{pattern}をスキップするのでな - く、{pattern}にマッチする部分でソートする。 - 例えば、各行の最初の3文字だけでソートするには: > - :sort /\a\a\a/ r - -< {pattern}が使われると{pattern}を含まない行は現在の順序 - のままになる。逆順でソートすると、それらはソートされた - 行の後で逆順になる。逆順でなければ、ソートされた行の前 - でもとの順序のまま置かれる。 - - {pattern} が空である場合(例: // が指定されたとき)、 - 最後に使われた検索パターンが使われる。よって、まず検 - 索コマンドでパターンを確かめてみることができる。 - -Note: ":global"といっしょに":sort"を使ってもマッチする行をソートすることにはな -らない。これはまったく無意味である。 - -ソートの詳細は使っているライブラリ関数による。ソートが「安定」であるとか現在の -ロケールに従うという保証はない。それを調べるには実行してみるしかない。 - -ソートは中断することができる。しかし中断するのが遅いと行が重複してしまうかもし -れない。これも使っているシステムのライブラリ関数による。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/cmdline.jax b/runtime.old/doc/cmdline.jax deleted file mode 100644 index 185e502a4..000000000 --- a/runtime.old/doc/cmdline.jax +++ /dev/null @@ -1,1052 +0,0 @@ -*cmdline.txt* For Vim バージョン 7.3. Last change: 2011 Mar 27 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - *Cmdline-mode* *Command-line-mode* -コマンドラインモード *Cmdline* *Command-line* *mode-cmdline* *:* - -コマンドラインモードはExコマンド (":")、検索パターン ("/" と "?")、フィルタコ -マンド ("!") の入力に使われる。 - -コマンドライン編集の基本は、ユーザマニュアルの第20章で説明されている -|usr_20.txt|。 - -1. コマンドラインの編集 |cmdline-editing| -2. コマンドラインの補完 |cmdline-completion| -3. Exコマンドライン |cmdline-lines| -4. Exコマンドラインの範囲 |cmdline-ranges| -5. Exコマンドラインのフラグ |ex-flags| -6. Exコマンド用の特別な文字 |cmdline-special| -7. コマンドラインウィンドウ |cmdline-window| - -============================================================================== -1. コマンドラインの編集 *cmdline-editing* - -通常、文字はカーソル位置の前に挿入される。コマンドラインでは左右のカーソルキー -で移動ができる。<Insert>キーで挿入と上書を切り替えることができる。 -{Vi: 行の最後の文字しか変更できない} - -Note キーボードに有効なカーソルキーまたは他の特殊なキーが一切ないときでも、コ -マンド ":cnoremap" を使って他のキーをそれらに割り当てられることに注意。 -例えば、tcsh風の編集キーを定義する方法は以下の通り。 *tcsh-style* > - :cnoremap <C-A> <Home> - :cnoremap <C-F> <Right> - :cnoremap <C-B> <Left> - :cnoremap <Esc>b <S-Left> - :cnoremap <Esc>f <S-Right> -(<> 記法を使っている |<>|.これらを全て文字通り打ち込むこと) - - *cmdline-too-long* -コマンドラインが長くなりすぎて画面に収まらなくなったときは、画面に入るだけの部 -分が表示される。カーソルはこの見える部分しか動けない。そのため、これ以上は編集 -できない。 - - *cmdline-history* *history* -ユーザの打ち込んだコマンドは、履歴表に記録される。これらの履歴は上下矢印キーで -呼び出せる。実際には4つの履歴表がある。 -履歴表: -- ':' コマンド用 -- 検索文字列用 -- 式 (expression) 用 -- インプット行 (関数 |input()| に対して入力されたテキスト) 用 -- デバッグモードコマンド用 -これらは全く別のものである。それぞれの履歴は同種の入力をしたときだけ使用できる。 -オプション 'history' で保存されるコマンド数を設定できる (既定値: 20)。 -NOTE: -- 以前と全く同じコマンドを打ち込んだときは、古い方の記録が消される (繰り返され - たコマンドが古いコマンドの履歴を追い出して消すのを避けるため)。 -- 打ち込んだコマンドだけが記録される。完全にマッピングから実行されたコマンドは - 履歴に残らない。 -- 全ての検索パターンは、コマンド "*" や "#" 等によるものも含め、検索用の履歴に - 記録される。しかしマッピングからの検索に対しては、最後の検索のみが記録される - (長いマッピングが履歴の内容を捨ててしまうのを避けるため)。 -{Vi: 履歴はない} -{Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} - -コマンドラインには名前の自動補完機能がある。|cmdline-completion| を参照。 - - *c_CTRL-V* -CTRL-V 次に打ち込まれた非数字文字を,その通りに挿入する。また最大3個 - の数字により,1バイト文字をコードの10進表現に基づいて入力でき - る。打ち込んだ非数字文字と3個の数字にはマッピングは適用されな - い。これは挿入モードと同じ働きをする (|i_CTRL-V| を参照)。 - NOTE: Windowsでは CTRL-V はテキストの張り付けにマッピングされ - ていることが多い。そのときは代わりに CTRL-Q を使うこと。 - *c_CTRL-Q* -CTRL-Q CTRL-V と同様だが、ターミナルによっては表示制御に使われている。 - その場合は使えない。 - - *c_<Left>* *c_Left* -<Left> カーソルを左へ - *c_<Right>* *c_Right* -<Right> カーソルを右へ - *c_<S-Left>* -<S-Left> または <C-Left> *c_<C-Left>* - カーソルを 1WORD 分左へ - *c_<S-Right>* -<S-Right> または <C-Right> *c_<C-Right>* - カーソルを 1WORD 分右へ -CTRL-B または <Home> *c_CTRL-B* *c_<Home>* *c_Home* - カーソルをコマンドライン先頭へ -CTRL-E または <End> *c_CTRL-E* *c_<End>* *c_End* - カーソルをコマンドライン末尾へ - - *c_<LeftMouse>* -<LeftMouse> カーソルをマウスでクリックした所へ移動する - -CTRL-H *c_<BS>* *c_CTRL-H* *c_BS* -<BS> カーソル前の文字を削除する (<BS> キーが思い通り働かないときは - |:fixdel| を参照)。 - *c_<Del>* *c_Del* -<Del> カーソル下の文字を削除する (行の最後では: カーソル前の文字) - (<Del> キーが思い通り働かないときは |:fixdel| を参照。) - *c_CTRL-W* -CTRL-W カーソルの前の |word| を削除 - *c_CTRL-U* -CTRL-U 行頭とカーソル位置の間の全ての文字を削除する。Vimの以前の - ヴァージョンでは行内の文字を全て削除していた。その動作の方がよ - いなら、次の行をファイル .vimrc に加えること。 > - :cnoremap <C-U> <C-E><C-U> -< - *c_<Insert>* *c_Insert* -<Insert> 挿入/上書の切り替え {Vi にはない} - -{char1} <BS> {char2} または *c_digraph* -CTRL-K {char1} {char2} *c_CTRL-K* - ダイグラフの入力 (|digraphs| を参照)。{char1} が特殊キーのとき - は、そのキーコードは <> 形式で挿入される。 {Vi にはない} - -CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>* - 番号/名前付きレジスタの内容を挿入する。CTRL-R を打ち込んで次 - の文字を打ち込むまでの間、レジスタ名の入力待ちであることを示す - ため '"' が表示される。 - テキストは打ち込まれた通りに挿入され、マッピングや短縮入力は無 - 効である。'wildchar' によるコマンドライン補完も行われない。 - またコマンドラインを終了する文字 (<Esc>, <CR>, <NL>, <C-C>) も - 文字通り挿入される。<BS> や CTRL-W はコマンドラインを終了でき - るが、コマンドラインに残っている文字が違うモードで解釈されるこ - となるので、意図とは異なる動作になるかもしれない。 - 特殊なレジスタ: - '"' 無名レジスタ、最後の削除やコピーによるテキスト - を格納する。 - '%' カレントファイル名 - '#' 代替ファイル名 - '*' クリップボードの内容 (X11: primary selection) - '+' クリップボードの内容 - '/' 最後の検索パターン - ':' 最後のコマンドラインの内容 - '-' 最後の小規模な (1行未満の) 削除の内容 - '.' 最後に挿入されたテキスト - *c_CTRL-R_=* - '=' Expression レジスタ: Expression を入力するよう - 要求される (|expression| を参照) - (Expressionプロンプトでは機能しない。バッファ - 変更やカレントウィンドウ変更などは副作用を避け - るため許可されていない) - 結果がリスト |List| である場合、各要素が1行と - して挿入される。行の中に改行文字が含まれていて - もよい。 - 結果が浮動小数点数である場合、自動的に文字列に - 変換される。 - レジスタに関しては |registers| を参照。 {Vi にはない} - 実装上の詳細: |expression|レジスタを使っているときに - setcmdpos()を呼ぶと結果文字列を挿入する前の位置をセットする。 - 挿入後の位置をセットするにはCTRL-R CTRL-Rを使うこと。 - -CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>* -CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>* -CTRL-R CTRL-W *c_CTRL-R_CTRL-W* *c_<C-R>_<C-W>* -CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>* - カーソル下にオブジェクトを挿入する。 - CTRL-F カーソル下のファイル名 - CTRL-P |gf| と同様に 'path' を使って展開された、カー - ソル下のファイル名 - CTRL-W カーソル下の word - CTRL-A カーソル下の WORD; |WORD| を参照 - - 'incsearch'がセットされてるとき、現在表示されているマッチの末 - 尾のカーソル位置が使われる。CTRL-Wではwordの一部がすでに入力さ - れているとき、その部分がもう一度入力されることはない。 - (訳註: wordという単語のrの上にカーソルを置き、:wo<C-r><C-w>と - してみると、'incsearch'の値によって結果が違うことがわかる) - - {Vi にはない} - CTRL-F と CTRL-P: {Vi mが |+file_in_path| 機能付きでコンパイル - されたときのみ有効} - - *c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>* - *c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>* -CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} -CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} - カーソル下にレジスタの内容またはオブジェクトを挿入。|c_CTRL-R| - と同様の動作だが、テキストを文字通り挿入する。例えば、レジスタ - "a の内容が "xy^Hz" (ここで ^H はバックスペース) のとき、 - "CTRL-R a" は "xz" を挿入するのに対し、"CTRL-R CTRL-R a" は - "xy^Hz" を挿入する。 - -CTRL-\ e {expr} *c_CTRL-\_e* - コマンドラインを{expr}を評価した結果で置き換えます。式を入力し - <Enter>を押せば完了します。マッピングする時に使うと便利です。 - |expression|もご覧ください。 - 式の評価を挿入するには|c_CTRL-R_=|を使います。 - 便利な関数に|getcmdtype()|と|getcmdline()|と|getcmdpos()|があ - ります。カーソルが行末になければカーソル位置は変更されません。 - カーソルが行末にあるときのコマンドライン変更後のカーソル位置は - 行末です。|setcmdpos()|を使うとカーソル位置を変更できます。 - |sandbox|を使うと不要な副作用を避けて式を評価することができま - す。 - 例を上げます。 > - :cmap <F7> <C-\>eAppendSome()<CR> - :func AppendSome() - :let cmd = getcmdline() . " Some()" - :" place the cursor on the ) - :call setcmdpos(strlen(cmd)) - :return cmd - :endfunc -< これは再帰的には機能しません。つまり、すでに式を編集していると - きは動作しません。 - - *c_CTRL-Y* -CTRL-Y モードレスセレクションでテキストを選択中のとき、テキストをクリッ - プボードにコピーする。 |modeless-selection| - 選択中でないときは、CTRL-Y は文字として挿入される。 - -CTRL-J *c_CTRL-J* *c_<NL>* *c_<CR>* *c_CR* -<CR> または <NL> - 入力されたコマンドの実行 - *c_<Esc>* *c_Esc* -<Esc> 打ち込まれたときにオプション 'cpoptions' にフラグ 'x' が含まれ - ていなければ、コマンドを実行せずにコマンドラインモードを終了す - る。マクロ内で使われたとき、または 'cpoptions' に 'x' が含まれ - ているときは、コマンドラインを実行する。 - Note: お使いのキーボードで <Esc> が押しづらい場合は、CTRL-[ - を使うよう練習してください。 - *c_CTRL-C* -CTRL-C コマンドを実行せずにコマンドラインモードを終了する。 - - *c_<Up>* *c_Up* -<Up> 古いコマンドラインの内容のうち、先頭部分が現在のコマンドライン - とマッチするものを履歴から呼び出す (下を参照)。 - {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} - *c_<Down>* *c_Down* -<Down> さらに最近のコマンドラインの内容のうち、先頭部分が現在のコマン - ドラインとマッチするものを履歴から呼び出す (下を参照)。(訳注: - 変な訳ですが,<Up> で行き過ぎたら <Down> で戻るということです) - {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} - - *c_<S-Up>* *c_<PageUp>* -<S-Up> または <PageUp> - 履歴から古いコマンドラインの内容を呼び出す。 - {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} - *c_<S-Down>* *c_<PageDown>* -<S-Down> または <PageDown> - 履歴からさらに最近のコマンドラインの内容を呼び出す。 - {Vi mが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} - -CTRL-D コマンドライン補完(|cmdline-completion|を参照) -オプション 'wildchar' で指定したキー - コマンドライン補完 (|cmdline-completion|を参照) -CTRL-N コマンドライン補完 (|cmdline-completion|を参照) -CTRL-P コマンドライン補完 (|cmdline-completion|を参照) -CTRL-A コマンドライン補完 (|cmdline-completion|を参照) -CTRL-L コマンドライン補完 (|cmdline-completion|を参照) - - *c_CTRL-_* -CTRL-_ 1. キーボードのヘブライ語モードと英語モードを切り替える。これ - はコマンドラインのみに適用され、'hkmap' とは関係ない。 - コマンドライン、検索や短縮入力等にヘブライ語テキストの項目が必 - 要とされるときに便利である。Vimが |+rightleft| 機能付きでコン - パイルされ、'allowrevins' がオンのときのみ有効。 - |rileft.txt| を参照。 - - 2. キーボードのFarsi語モードと英語モードを切り替える。これはコ - マンドラインのみに適用され、オプション 'fkmap' には関係しない。 - Farsi語モードでは、文字は普段とは反対の方向に挿入される。コマ - ンドライン、検索や短縮入力等にFarsi語テキストの項目が必要とさ - れるときに便利である。Vimが |+farsi| 機能付きでコンパイルされ - たときのみ有効。 - |farsi.txt|を参照。 - - *c_CTRL-^* -CTRL-^ 言語マッピング |:lmap| を切り替えたり、Input Method (IM) を切 - り替える。 - 検索コマンドのためにパターンを入力するとき、オプション - 'imsearch' が -1 でなければ VAL は 'imsearch' の値に、そうでな - ければ VAL は 'iminsert' の値になる。 - 言語マッピングが定義されているとき: - - VAL が 1 のとき (言語マッピングが使われているとき) 0 に変わ - る (言語マッピングは使われなくなる). - - VAL が 1 でなければ 1 に変わり、言語マッピングが有効になる。 - 言語マッピングが全く定義されていないとき: - - VAL が 2 のとき (IMが使われているとき) 0 に変わる (IMは使わ - れなくなる) - - VAL が 2 以外のときは 2 に変わり、IMが有効になる。 - 普通、言語マッピングは、キーボードが生成するのと違う文字を打ち - 込むのに使われる。オプション 'keymap' を使えばまとめて設定でき - る。 - コマンドラインに入ったときは、コマンドを打ち込むはずなので、言 - 語マッピングはオフに切り替えられる。CTRL-^ でオンにした後も、 - 次にコマンドや検索パターンを打ち込むときにはその状態は使われな - い。 - {Vi にはない} - - *c_CTRL-]* -CTRL-] 文字を挿入することなく短縮入力を展開する。{Vi にはない} - -コマンドラインをEmacsスタイルで編集する方法については |emacs-keys| を参照。 - -キー <Up> と <Down> は現在のコマンドラインを検索文字列として扱う。次/以前のコ -マンドラインの先頭部分が、この文字列と比較される。マッチした最初の行が新しいコ -マンドラインとなる。これら2つのキーを繰り返し入力すると、同じ文字列が検索に使 -われる。例えば、以前の置換コマンドを見つけるためにはこうする: ":s" の後 <Up> -を打ち込むこと。同じことは、<S-Up> を望んだ行が出るまで数回打ち込むことでもで -きる。( Note: シフトキーと矢印キーとの同時押しは、全ての端末で機能するわけでは -ないことに注意) - - *:his* *:history* -:his[tory] 最近入力されたコマンドの履歴を表示する。 - {Vi にはない} - {Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} - -:his[tory] [{name}] [{first}][, [{last}]] - {name} の種類の履歴内容を一覧表示する。{name} に入るものは: - c[md] または : コマンドラインの履歴 - s[earch] または / 検索文字列の履歴 - e[xpr] または = Expression レジスタの履歴 - i[nput] または @ 入力行の履歴 - d[ebug] または > デバッグコマンドの履歴 - a[ll] 上記のもの全て - {Viにはない} - - {first}や{last}が指定されたときは、履歴中の指定された範囲の - 項目が表示される。これらの数字は次の形式で指定する。 - *:history-indexing* - 正数は、":history" の一覧表示で最初の列に表示される、項目の絶 - 対的な番号を表す。この数字は、他の項目が削除されても固定された - ままである。 - - 負数は項目の相対的な位置を示す。これは最も新しい項目 (番号 -1 - を持つ) から後ろ向きに数えたものである。 - - 例: - 検索履歴の項目6から12までを一覧表示する。 > - :history / 6,12 -< - 全履歴の最近の5項目を一覧表示する。 > - :history all -5, - -============================================================================== -2. コマンドラインの補完 *cmdline-completion* - -コマンドラインの編集をしているとき、いくつかのコマンドを使ってカーソル前の単語 -を補完できる。補完は以下のものに対して有効である。 - -- コマンド名: コマンドラインの先頭で使われる -- タグ: コマンド ":tag" の後でのみ使われる -- ファイル名: ファイル名を取るコマンドの後、またはファイル名に対して設定される - オプションの設定時のみ使われる。これはファイル名補完と呼ばれる。 -- シェルコマンド名: ":!cmd"、":r !cmd"、":w !cmd"の後で使われる。$PATHが考慮さ - れる。 -- オプション: コマンド ":set" の後でのみ使われる。 -- マッピング: ":map" や類似コマンドの後でのみ使われる。 -- 変数/関数名: ":if", ":call" や類似コマンドの後でのみ使われる。 - -Vimが |+cmdline_compl| 機能付きでコンパイルされなかったときは、ファイル名、ディ -レクトリ名、ヘルプの項目のみが補完される。マッチするヘルプ項目の個数には上限が -ある(現在のところは 300)。非常に多くのマッチがあったとき、遅くなるのを避けるた -めである。 - -補完に使えるコマンドは以下の通り。 - - *c_CTRL-D* -CTRL-D カーソルより前のパターンに一致する名前を一覧表示する。ファイル - 名を表示しているときには、ディレクトリは強調表示される (オプショ - ン 'highlight' を参照)。オプション 'suffixes' の値がマッチした - 名前は、末尾の方に移動される。 - 'wildoptions'を"tagfile"にセットすると、マッチするタグを含むファ - イル名をリストすることができます。 - *c_CTRL-I* *c_wildchar* *c_<Tab>* -オプション 'wildchar' で指定したキー - カーソルより前のパターンに対してマッチの検索が行われる。マッチ - (いくつかあるなら、最初のもの) が、そのパターンの位置に挿入さ - れる。( Note: これはマクロの中では機能しない。なぜなら <Tab> - と <Esc> は大抵 'wildchar' として使われ、またいくつかのマクロ - の中ではこれらが特別な意味を持つからである) このキーを再び入力 - すると、複数のマッチがあるときは、次のマッチが挿入される。最後 - のマッチの後には、最初のマッチが再び使われる (繰り返し)。 - この動作は、オプション 'wildmode' で変更できる。 - *c_CTRL-N* -CTRL-N 'wildchar' を使ったら複数のマッチがあったとき、その後に使うと - 次のマッチが挿入される。それ以外のときには、より最近使ったコマ - ンドラインを履歴から呼び出す。 -<S-Tab> *c_CTRL-P* *c_<S-Tab>* -CTRL-P 'wildchar' を使ったら複数のマッチがあったとき、その後に使うと - 前のマッチが挿入される。それ以外のときには、より昔に使ったコマ - ンドラインを履歴から呼び出す。<S-Tab> はGUI版、Amiga版と - MS-DOS版でのみ機能する。 - *c_CTRL-A* -CTRL-A カーソルより前のパターンに一致する、全ての名前が挿入される。 - *c_CTRL-L* -CTRL-L カーソルより前のパターンに対してマッチの検索が行われる。マッチ - が1個のときは、それがパターンの位置に挿入される。複数個のマッ - チがあったときは、最も長い共通部分がパターンの位置に挿入される。 - その結果がパターンより短い場合には、補完は行われない。 - 'incsearch'がセットされていると、"/"や"?"で検索パターンを入力 - するとき現在のマッチが表示され、CTRL-Lを押すと現在のマッチの末 - 尾から1文字追加する。'ignorecase' と 'smartcase' がセットされ - ていてコマンドラインに大文字が含まれていないときは、追加された - 文字は小文字に変換されます。 - -オプション 'wildchar' の既定値は <Tab> である (Vi互換モードの場合は CTRL-E で -ある。以前のヴァージョンでは <Esc> が使われていた)。パターンがファイル名に対し -て適用されるときは標準のワイルドカード '*' と '?' が使用できる。'*' はあらゆる -文字列に一致し、'?' はちょうど 1文字に一致する。 - -tcshのautolist補完が好みなら、このマッピングが使える。 > - :cnoremap X <C-L><C-D> -(ここで X は使いたいコマンドキー。<C-L> は CTRL-L, <C-D> は CTRL-D のこと) -これは最長のマッチを見つけ、マッチしたファイルを全て一覧表示する。 - -tcshのautolist補完が好みなら、オプション 'wildmode' を使ってその動作をエミュ -レートできる。例えば、次の設定は autolist=ambiguous という設定を真似る。 > - :set wildmode=longest,list -これは、最初の 'wildchar' で最長のマッチを見つけ、次はマッチするファイルを全て -一覧表示する。 - - *suffixes* -ファイル名補完では、オプション 'suffixes' を使い、ほぼ同じ名前のファイル名に優 -先度を設定できる。複数のマッチがあったとき、あるファイルの拡張子が 'suffixes' -の値に含まれていると、そのファイルは無視される。既定値は -".bak,~,.o,.h,.info,.swp" であり、これは ".bak", "~", ".o", ".h", ".info", -".swp" で終わるファイルが無視されることがあるということである。 - -空の項目(つまり2つの連続するカンマ)は "." を含まないファイル名(つまり拡張子を -持たない)にマッチする。これは "prog" を無視させ、かつ "prog.c" にマッチさせた -いときに便利である。 - -例: - - パターン: 存在するファイル: マッチ: ~ - test* test.c test.h test.o test.c - test* test.h test.o test.h and test.o - test* test.i test.h test.c test.i and test.c - -2つのドットを持つ拡張子を無視することはできない。 - -(オプション 'suffixes' による除外が行われた後で) マッチするファイルが複数個あ -るときは、最初のファイル名が挿入される。'wildchar' のキーを2度打ち込んでも補完 -されたマッチが同じだったら、マッチが1つしかないことが分かる。他のマッチは、 -'wildchar' のキーまたは CTRL-N, CTRL-P を入力することで得られる。それには -'suffixes' に設定された拡張子にマッチするものも含め、全てのファイルが含まれる。 - -ある拡張子のファイルを完全に無視するにはオプション 'wildignore' を使うこと。 - -入力されたテキストで終わるファイルにのみマッチさせるには、"$" をつけること。例 -として、".c" で終わるファイルにのみマッチさせるには: > - :e *.c$ -これは ".cpp" で終わるファイルにはマッチしない。"$" をつけないとマッチする。 - -オプションの、以前に設定された値は、'=' の後で 'wildchar' のキーを打ち込むこと -で得られる。例えば、":set dir=" の後で 'wildchar' のキーを打ち込むと、'dir' の -現在の値が挿入される。この動作は、ファイル名を取るオプションに対するファイル名 -補完より優先する。 - -xtermで <S-Tab> を CTRL-P として使いたいときは、このコマンドをユーザの .cshrc -に加えること。 > - xmodmap -e "keysym Tab = Tab Find" -そして次を .vimrc に加えること。 > - cmap <Esc>[1~ <C-P> - -============================================================================== -3. Exコマンドライン *cmdline-lines* - -Exコマンドはいくつかの特徴を持っている。 - - *:quote* *:comment* -行の最初に '"' があると、その行全てが無視される。'"' がコマンドの後にあると、 -その行の残りの部分が無視される。これはコメントを加えるために使われる。例: > - :set ai "set 'autoindent' option -シェルコマンド ":!cmd", コマンド ":map" とその他いくつかのコマンドにはコメント -を付けることができない。これらのコマンドは '"' を引数の一部として認識するから -である。各コマンドの説明のところにその旨の注意がある。 - - *:bar* *:\bar* -'|' を使ってコマンドを区切ることができる。これにより一行に複数のコマンドを書き -込める。引数に '|' を使いたいときは、'\' を前に置くこと。 - -以下のコマンドは '|' を引数として認識するため、後に他のコマンドを続けることは -できない。 - :argdo - :autocmd - :bufdo - :command - :cscope - :debug - :folddoopen - :folddoclosed - :function - :global - :help - :helpfind - :lcscope - :make - :normal - :perl - :perldo - :promptfind - :promptrepl - :pyfile - :python - :registers - :read ! - :scscope - :sign - :tcl - :tcldo - :tclfile - :vglobal - :windo - :write ! - :[range]! - 引数 "-bar" なしで定義されたユーザコマンド |:command| - -Note: (Viから継承されたのだが) 次の点は混乱を招きやすいので注意: '|' は ":g" -と共に使うとコマンドの引数に含まれるが、":s" ではコマンドの区切りになる。 - -どうしても他のコマンドを使いたいときは、コマンド ":execute" を使うこと。 -例 (バッファに外部コマンド "ls" の出力を追加し、最初の行にジャンプする): > - :execute 'r !ls' | '[ - -例外が1点ある: オプション 'cpoptions' にフラグ 'b' が含まれるときは、":map", -":abbr" またはその類似コマンドの引数に '|' を使うとき、'\' の代わりに CTRL-V -を使う必要がある。代わりに "<Bar>" を使うこともできる。|map_bar| も参照。 - -例: > - :!ls | wc 2つのコマンドの出力を見る - :r !ls | wc その出力をテキストに挿入する - :%g/foo/p|> 一致した全ての行をshiftwidth1個分ずらす - :%s/foo/bar/|> 1つの行をshiftwidth1個分ずらす - :map q 10^V| "q" に "10|" をマッピングする - :map q 10\| map \ l "q" に "10\" を、"\" に "l" をマッピングする - ('b' が 'cpoptions' に含まれるとき) -< -<NL> を使って、'|' と同様にコマンドを区切ることができる。<NL> を挿入するには -CTRL-V CTRL-J を使うこと。すると "^@" が表示される。'|' を使う方が好ましいが、 -外部コマンドに対しては、'|' が外部コマンドに含まれてしまうため、<NL> を使わな -ければならない。<NL> の特別な作用を避けるためには、前に '\' を置く必要がある。 -例: > - :r !date<NL>-join -これは現在の日時をファイルに読み込み、それを前の行につなげる。 - -Note: '|' の前のコマンドがエラーを起こしたときは、以降のコマンドは実行されない -ことに注意。 - - -Viとの互換性のために、以下の奇妙なコマンドがサポートされている。 > - :| 現在行を表示する (":p" と同様) - :3| 3行目を表示する (":3p" と同様) - :3 3行目に移動する - -範囲とコマンド名の間にコロンを入れることができる。このコロンは無視される (これ -はVi互換の動作である)。例: > - :1,$:s/パターン/文字列 - -ファイル名が入るべき場所に、文字 '%' または '#' が使われているときは、それらは -カレントファイル名、代替ファイル名に展開される ("ファイルの編集" の章を参照 -|:_%| |:_#|)。 - -Amigaでは、引数がファイル名1個になるはずのとき、空白を含むファイル名が使用でき -る。ファイル名末尾の空白は、'\' や CTRL-V でエスケープされていない限り無視され -る。 NOTE: コマンド ":next" では、ファイル名の区切りに空白を使うことに注意。ファ -イル名に空白を含むには、エスケープすること。例: > - :next foo\ bar goes\ to school\ -こうすると3個のファイル "foo bar", "goes to", "school " の編集を開始する。 - -コマンドで特別な文字 '"', '|' を使いたいとき、あるいはファイル名に '%', '#' を -使いたいときは、'\' を前に置く。範囲指定やコマンド ":substitute" では '\' は必 -要ない。 - - *:_!* -Exコマンドの後に文字 '!' (bang) を置くと、コマンドの動作方法が変わる。'!' はコ -マンドの直後に置かなければならず、間に空白を入れてはならない。空白を挿入すると、 -'!' はコマンドの引数と見なされ、違った意味を持つことになる。例: > - :w! name 現在のバッファをファイル "name" に保存し、ファイルがす - でに存在していると上書きする - :w !name 現在のバッファを、標準入力からの入力としてコマンド - "name" に送る - -============================================================================== -4. Exコマンドラインの範囲 *cmdline-ranges* *[range]* *E16* - -Exコマンドには、その前に行単位の範囲を指定できるものがある。これは [range] と -表記される。それは ',' か ';' で区切られた、1個以上の行指定子から成る。 - -基本事項はユーザマニュアルの |10.3| 章で説明されている。 - - *:,* *:;* -区切りに ';' を使うと、次の行指定子を解釈する前にカーソル位置がその行に移動 -する。',' ではこうならない。例: > - 4,/この行/ - 4行目から、カーソルより後の、"この行" がマッチする行まで。 - 5;/あの行/ - 5行目から、5行目より後の、"あの行" がマッチする行まで。 - -ほとんどのコマンドでは、範囲の既定値はカーソルのある行である。しかしコマンド -":write", ":global" での既定値はファイル全体 (1,$) である。 - -コマンドに必要以上の行指定子が指定されたときは、先頭の方に指定されたものから順 -に除外される。 - -行番号は以下の方法で指定できる: *:range* *E14* *{address}* - {number} 絶対的な行番号 - . 現在の行 *:.* - $ ファイルの最終行 *:$* - % 1,$と同じ (ファイル全体) *:%* - 't マーク tの位置 (小文字) *:'* - 'T マーク Tの位置 (大文字); マーク位置が別ファイルにある - ときには範囲指定には使えない - /{pattern}[/] 次に {pattern} のマッチする行 (下向き) *:/* - ?{pattern}[?] 次に {pattern} のマッチする行 (上向き) *:?* - \/ 次に直前の検索パターンのマッチする行 (下向き) - \? 次に直前の検索パターンのマッチする行 (上向き) - \& 次に直前の置換元パターンのマッチする行 (下向き) - -これらの後に '+' または '-' と数値を付けてもよい (複数も可)。この数は直前の行 -番号に加算または減算される。数が省略された場合は 1 が指定されたと見なされる。 - -{pattern} の後の "/" と "?" は、パターンとその後の項目とを区別するために必要と -なる。 - -"/" と "?" は別の場所指定の後に付くことがある。すると検索はそこから始まる。';' -との違いは、カーソルが移動しない点である。例: > - /pat1//pat2/ "pat1" を含む行より後の、"pat2" を含む行を見つける。こ - のときカーソルは移動しない。 - 7;/pat2/ 7行目より後の、"pat2" を含む行を見つける。このときカー - ソルは7行目に留まる。 - -{number} は 0 からファイルの行数までの数でなければならない。0 (零) を使うと、 -コマンドの大半では 1 と解釈される。その数をカウントとして使うコマンド (|:tag|, -|:pop| 等) では確かに 0 として使われる。0 を「先頭行の前」として解釈するコマン -ドもある (|:read|, 検索パターン等)。 - -Examples: > - .+3 カーソルの3行下 - /that/+1 次行より下の、"that"を含む行 - .,$ 現在行からファイル末尾まで - 0;/that "that" を含む最初の行 (第1行にもマッチ可能) - 1;/that 第1行より下の、"that" を含む行 - -いくつかのコマンドには、後にカウントを指定できる。そのコマンドは、最後の行指定 -子で指定された行 (既定値はカーソルの行) から始まる、そのカウントの行数の範囲に -使われる。カウントを取ることができるのは、範囲指定は取るがファイル名の引数を取 -らないコマンドである (ファイル名は数字でもよいから)。 - -例: > - :s/x/X/g 5 現在行から始まる5行で 'x' を 'X' に置換 - :23d 4 第23, 24, 25, 26行を削除 - - -折り畳みと範囲指定 - -折り畳みがアクティブなときは、閉じられた折り畳み全体を含むように範囲が切り上げ -/切り下げられる。 |fold-behavior| を参照。 - - -逆向きの範囲指定 *E493* - -範囲には小さい行番号を先に指定しなければならない。そうでないときは、Vimはその -行番号を入れ替えてよいかを尋ねる。 - Backwards range given, OK to swap ~ -ただしグローバルコマンド ":g" では尋ねない。 - -コマンドの前に":silent"をつけるとこの質問が出ないようになる。そのときは常に範 -囲が入れ替えられる。 - - -カウントと範囲指定 *N:* - -":" を入力する前にカウントを指定すると、次のように変換される。 > - :.,.+(count - 1) -つまりカーソルの行から始まる [count] 行のことである。例: 3行を削除するにはこう -する。 > - 3:d<CR> は .,.+2d<CR> に変換される -< - -ヴィジュアルモードと範囲指定 *v_:* - -{Visual}: ヴィジュアルに選択された行を範囲として、コマンドライン入力を始 - める。この範囲指定にはコード ":'<,'>" が使われるので、コマンド - ライン履歴から同様のコマンド行を呼び出して、別のヴィジュアル選 - 択行にコマンドを繰り返すことができる。 - -============================================================================== -5. Ex コマンドラインのフラグ *ex-flags* - -以下のフラグがExコマンドの選択においてサポートされている。 -これらはコマンドを実行した後にカーソルが移動する位置の行を表示する: - - l |:list|のように表示する - # 行番号をつける - p |:print|のように表示する - -これらのフラグは組み合わせることができる。つまり"l#"とすると行番号をつけて -":list"のスタイルで表示する。 - -============================================================================== -6. Exコマンド用の特別な文字 *cmdline-special* - -Note: 以下はコマンドラインの実行における特別な文字である。CTRL-Rコマンドを使う -とこれらの特別な文字列を挿入することができる。例えば"%"は現在のファイル名を表 -す。CTRL-R %とするとその場に現在のファイル名を挿入する。|c_CTRL-R|を参照。 - -Note: Vim スクリプト内で特別な文字をエスケープするには |fnameescape()| を使う -とよいかもしれない。 - -Exコマンドの、ファイル名が使えるところでは、以下の文字は特別な意味を持つ。これ -らは式や関数 |expand()| 内でも使うことができる。 - % カレントファイル名に置き換えられる。 *:_%* *c_%* - # 代替ファイル名に置き換えられる。 *:_#* *c_#* - #n (ここで n は数) バッファ n のファイル名に置き *:_#0* *:_#n* - 換えられる。"#0" は "#" と同じ。 *c_#n* - ## 引数リスト内の全てのファイル名を、空白で区切って *:_##* *c_##* - 列挙したものに置き換えられる。ファイル名の中の空白には、 - 全て前に '\' が付けられる。 - #<n (n は > 0 の数値)。 *:_#<* *c_#<* - n 番目の old file 名に置き換えられる。 - この番号については |:oldfiles| や |v:oldfiles| を参照。 - *E809* - {|+eval| と |+viminfo| 機能つきでコンパイルされたときのみ有効} - -Note: "#<n" 以外は、ユーザに打ち込まれた通りのファイル名を与えることに注意 (訳 -注: 普通、カレントディレクトリのファイルは、パスを付けずにファイル名のみを打ち -込んで編集を始めるはずだが、その形でファイル名が呼び出される)。絶対パスが必要 -なとき(違うディレクトリのファイル名を使うとき) は、":p" を付け加える必要がある。 -|filename-modifiers|を参照。 - -"#<n" は絶対パスを返す。ただしホームディレクトリ以下のファイルに対しては "~/" -で始まる。 - -コマンドが適切に解釈できるように、スペースの前にはバックスラッシュがつく。しか -しシェルコマンドに対してはこれは行われない。シェルコマンドに対しては、引用符を -使うとよいかもしれない(しかしこれは引用符とワイルドカードを含む文字列に対して -は失敗する): > - :!ls "%" - :r !spell "%" - -'%' と '#' の特別な意味を避けるためには、その前に '\' を挿入する。 -詳細: これらの文字の特別な意味は、'\' がその前に置かれれば、それがいくつあるか -に関わらず、常にエスケープ (無効化) される。 - 打ち込むキー: 結果 ~ - # 代替ファイル名 - \# # - \\# \# - - *:<cword>* *:<cWORD>* *:<cfile>* *<cfile>* - *:<sfile>* *<sfile>* *:<afile>* *<afile>* - *:<abuf>* *<abuf>* *:<amatch>* *<amatch>* - *<slnum>* *E495* *E496* *E497* *E499* *E500* -Note: これらは文字通りに打ち込まれる、これらは特別なキーではない! - <cword> カーソル下の word に置き換えられる (|star| と同様) - <cWORD> カーソル下の WORD に置き換えられる (|WORD| を参照) - <cfile> カーソル下のパス名に置き換えられる (|gf| が使うものと同様) - <afile> 自動コマンドの実行時、ファイルの読み書き用のファイル名に置 - き換えられる - <abuf> 自動コマンドの実行時、カレントバッファの番号に置き換えられ - る (":r file" と":so file"のときにもカレントバッファの番号 - に置き換えられる。読み込まれているファイルはバッファ内にな - い) - <amatch> 自動コマンドの実行時、この自動コマンドが実行されたときのマッ - チに置き換えられる。そのファイル名がマッチの検索に使われて - いないときのみ、<afile> と違う値になる (イベント FileType - や Syntax、SpellFileMissing 用)。 - <sfile> コマンド ":source" の実行時、取り込まれたファイルのファイル - 名に置き換えられる。 *E498* - 関数の実行時、"関数 {関数名}" に置き換えられる。関数呼び出 - しのネスト (入れ子状態) はこのように表される: - "関数 {関数名1}..{関数名2}"。 Note: 関数内で <sfile> が使わ - れている場合、ファイル名修飾子は無効になることに注意。 - <slnum> コマンド ":source" の実行時、行番号に置き換えられる。 - *E842* - 関数の中では、関数の先頭からの相対的な行番号になる。 - - *filename-modifiers* - *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* - *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* -ファイル名修飾子は "%", "#", "#n", "<cfile>", "<sfile>", "<afile>", "<abuf>" -の後で使うことができる。これらは関数 |fnamemodify()| と使うこともできる。Vim -が |+modify_fname| 機能付きでコンパイルされていなければ、これらの修飾子を使う -ことはできない。 -これらの修飾子は次の順で指定できる。 - :p ファイル名を完全パスにする。最初の修飾子でなければならない。 - また "~/" (およびUnixやVMSで使われる "~user/" の形式のもの) も - ホームディレクトリのパスに変換する。これが付けられたものがディ - レクトリ名に展開されるならば、パスの区切り文字が末尾に追加され - る。これが付けられたものが、ディスク上に存在せず絶対パスを持た - ないファイルに展開されるときは、結果は予期できない。 - :8 パスを短い8.3形式に変換する (現在のところWin32版でのみ)。既存 - のパス全てに適用される (訳注: 原文はWill act on as much of - a path that is an existing path)。 - :~ ファイル名をホームディレクトリについて相対的な名前に (可能なら - ば) 切り詰める。ファイルがホームディレクトリの下になければ、ファ - イル名は修正されない。 - :. ファイル名をカレントディレクトリについて相対的な名前に (可能な - らば) 切り詰める。ファイル名がカレントディレクトリの下になけれ - ば、ファイル名は修正されない。 - 最も短く切り詰めるには ":~:." を使う。 - :h ファイル名のヘッド (末尾の部分と全ての区切りが除かれたもの)。 - :e, :r, :t には使えない。 - 繰り返すと、末尾から順に複数の部分を取り除くことができる。 - ファイル名がパス区切りで終わるときは、パス区切りのみが取り除か - れる。そのためディレクトリ名に ":p:h" を使うと、(末尾にパス区 - 切りなしの) ディレクトリ名そのものが得られる。 - ファイル名が絶対パス (Unixでは "/"; MS-DOS, WIN32, OS/2では - "x:\"; Amigaでは"drive:" で始まるもの) のときは、この部分は取 - り除かれない。ヘッドがないときは (パスがカレントディレクトリに - 対して相対的なとき)、結果は空となる。 - :t ファイル名のテール (名前の末尾の部分)。:r または :e よりも前に - 指定しなければならない。 - :r ファイル名のルート (最後の拡張子が取り除かれたもの)。拡張子だ - けしかないときは ('.' で始まるファイル名、例えば ".vimrc" 等)、 - それは取り除かれない。繰り返し使うと、複数の拡張子を (最後のも - のから順に) 取り除くことができる。 - :e ファイル名の拡張子。単独で使われたときのみ意味を持つ。 - 拡張子がないときは、結果は空となる。 - 拡張子だけしかないときは ('.' で始まるファイル名)、結果は空と - なる。繰り返すと、複数の拡張子が得られる。繰り返した回数より拡 - 張子の数の方が少ないときは、可能なだけ取り込まれる (しかし最低 - でも1個はないと取り込まれない)。 - :s?pat?sub? - 最初に "pat" に一致したものを "sub" に置き換える。これはコマン - ド |:s| と同様に機能する。"pat" は正規表現である。'?' には任意 - の文字を使えるが、"pat" や "sub" 内に現れてはならない。 - この後、上述の修飾子を再び使うことができる。例えば、":p" では - 置換した後でフルパスに変える。 - :gs?pat?sub? - "pat" に一致したものを全て "sub" に置き換える。その他の点では - ":s" と同様に機能する。 - -ファイル名が "src/version.c"、カレントディレクトリが "/home/mool/vim" のときの -例: > - :p /home/mool/vim/src/version.c - :p:. src/version.c - :p:~ ~/vim/src/version.c - :h src - :p:h /home/mool/vim/src - :p:h:h /home/mool/vim - :t version.c - :p:t version.c - :r src/version - :p:r /home/mool/vim/src/version - :t:r version - :e c - :s?version?main? src/main.c - :s?version?main?:p /home/mool/vim/src/main.c - :p:gs?/?\\? \home\mool\vim\src\version.c - -ファイル名が "src/version.c.gz" のときの例: > - :p /home/mool/vim/src/version.c.gz - :e gz - :e:e c.gz - :e:e:e c.gz - :e:e:r c - :r src/version.c - :r:e c - :r:r src/version - :r:r:r src/version -< - *extension-removal* *:_%<* -"%", "#", "#n" または "CTRL-V p" に "<" を付け加えたとき、ファイル名の拡張子 -(ファイル名の最後の '.' とそれ以降の全て) は取り除かれる。これは -Vim version 3.0 との下位互換性のために残されており、":r" 形式を使う方がよい。 -例: > - - % カレントファイル名 - %< 拡張子なしのカレントファイル名 - # カレントウィンドウでの代替ファイル名 - #< 同上、ただし拡張子なし - #31 代替ファイル番号31 - #31< 同上、ただし拡張子なし - <cword> カーソル下の word - <cWORD> カーソル下の WORD (|WORD| を参照) - <cfile> カーソル下のパス名 - <cfile>< 同上、ただし拡張子なし - -Note: ファイル名が来る筈の所では、ワイルドカードの展開が行われる。Unixでは展開 -にはシェルが使われる。ただしVim内部でできない展開だけである (スピードのため)。 -バッククォート '`' も次のように使える。 > - :n `echo *.c` -(バッククォートの展開は |restricted-mode| ではできない) -しかし展開は、'%' や '#' 等が展開される前にワイルドカードが存在したときにのみ -行われる。これはファイル名に含まれるワイルドカードを展開しないためである。 -<cfile> の結果を展開したいときは、ワイルドカードの文字を追加すればよい。 -例: (代替ファイル名は "?readme?" とする) - コマンド 展開結果 ~ - :e # :e ?readme? - :e `ls #` :e {"?readme?" にマッチしたファイル全て} - :e #.* :e {"?readme?.*" にマッチしたファイル全て} - :cd <cfile> :cd {カーソル下のファイル名} - :cd <cfile>* :cd {カーソル下のファイル名に "*" を加え展開したもの} - -展開された後のコマンド引数に "!" に含まれていて、それがシェルコマンドに使われ -る (":!cmd", ":r !cmd" や ":w !cmd") とき、"!" は '\' でエスケープされ、前回の -コマンドに展開されるのを防ぐ。オプション 'shell' の値が "sh" を含むときは、エ -スケープは2回行われ、シェルが "!" を展開するのを防ぐ。 - - *filename-backslash* -'\' をディレクトリの区切りに使うファイルシステム (MS-DOS、Windows、OS/2) では、 -次のキャラクタの特別な意味をエスケープする目的の '\' を認識するのが少し困難で -ある。一般的な規則は次の通り。'\' が普通のファイル名の文字の後にある場合は、特 -別な意味を持たない。したがって、"\file\foo" は有効なファイル名であり、'\' を2 -度打つ必要はない。 - -例外は '$' 記号である。これはファイル名で有効な文字である。しかし "$home" のよ -うなファイル名が環境変数として解釈されるのを避けるため、'\' をこの前に付ける必 -要がある。従ってルートディレクトリのファイル "$home" の指定には、"/\$home" を -使う必要がある。いくつかの例: - - ファイル名 その解釈 ~ - $home 環境変数 $home の値に展開される - \$home カレントディレクトリのファイル "$home" - /\$home ルートディレクトリのファイル "$home" - \\$home "\\" の後に $home の値を付け加えた名前のファイル - -============================================================================== -7. コマンドラインウィンドウ *cmdline-window* *cmdwin* - *command-line-window* - -コマンドラインウィンドウでは、普通のウィンドウでテキストを編集するのと同じよう -にコマンドラインを編集できる。コマンドラインウィンドウは特殊なウィンドウで、普 -通の方法でそこから出ることはできない。 -{Vi mが |+cmdline_hist| 機能と |+vertsplit| 機能付きでコンパイルされたときのみ -有効である。} - - -開 始 *c_CTRL-F* *q:* *q/* *q?* - -コマンドラインウィンドウを開くには2通りの方法がある。 -1. コマンドラインモードで、オプション 'cedit' で指定されたキーを使う。 - 'compatible' がオフのときの既定値は CTRL-F である。 -2. ノーマルモードで、コマンド "q:", "q/" または "q?" を使う。 - "q:" でExコマンドラインの編集を始め、"q/" または "q?" で文字列を検索する。 - Note: 打ち込んだキーの記録中にはこの方法は使えないことに注意 (そのときは - "q" では記録が終了する)。 - -コマンドラインウィンドウが開かれたとき、中にはコマンドラインの履歴が並んでいる。 -末尾の行には、その時点までに打ち込まれたコマンドが含まれる。左の列には、編集さ -れているコマンドラインの種類を表す1文字が表示される。|cmdwin-char| を参照。 - -コマンドラインウィンドウが開かれたとき、Vimはノーマルモードに移るが、オプショ -ン 'insertmode' がオンのときは挿入モードに移る。 - -コマンドラインウィンドウの高さはオプション 'cmdwinheight' で指定できる (ただし -余裕がないとこれより低くなる)。常に幅は最大になり、場所はコマンドラインの直上 -である。 - - -編 集 - -コマンドラインウィンドウ内では、コマンドを使ってあちこちへ移動したり、ウィンド -ウ内のテキストを編集できる。ノーマルモードと挿入モードが使える。 - -":" や "/" を始めとする、コマンドラインを使うコマンドも使えるが、そこから別の -コマンドラインウィンドウを開くことはできない。コマンドラインウィンドウはネスト -(入れ子状になること) できない。 - *E11* -コマンドラインウィンドウは普通のウィンドウではないので、別のウィンドウに移動し -たり、別のバッファを編集したりはできない。コマンドラインウィンドウでは、それら -を行うコマンドは無効化されている。もちろんコマンドラインウィンドウで入力したコ -マンドならどんなものでも 実 行 可 能 である。他のテキスト編集はコマンドライン -ウィンドウを閉じるときに破棄される。 - - -終 了 *E199* - -コマンドラインウィンドウを終了するには、以下の通りの方法がある。 - -<CR> カーソル下のコマンドラインを実行する。挿入モードとNormalモー - ドの両方で有効である。 -CTRL-C コマンドラインモードとして継続する。カーソル下のコマンドライン - が引き継がれる。挿入モードとノーマルモードの両方で有効である。 - コマンド ":close" も使える。再描画は行われないので、ウィンドウ - は可視状態のままになる。 -:quit コマンドラインを破棄してノーマルモードに戻る。コマンド ":exit", - ":xit" や CTRL-\ CTRL-N も有効である。 -:qall Vimを終了する (他のバッファに変更がない限り)。 -:qall! Vimを終了し、どのバッファの変更も破棄する。 - -コマンドラインウィンドウが閉じられると、他のウィンドウのサイズは復元される。実 -行されたコマンドはコマンドラインウィンドウの開始元のウィンドウやバッファに適用 -される。これはコマンドラインウィンドウがなかったかのように動作するが、画面の再 -描画だけは余計に行われる。 -コマンドラインウィンドウに使われたバッファは削除される。<CR> で実行された行以 -外に対する変更は、全て失われる。 - -カーソル下のコマンドを実行した後、もう一度コマンドラインウィンドウを開きたけれ -ば、このマップを使うとよいかもしれない: > - - :autocmd CmdwinEnter * map <buffer> <F5> <CR>q: - - -そ の 他 - -コマンドラインウィンドウは、以下のときには使えない。 -- 既にコマンドラインウィンドウを開いているとき (ネストすなわち入れ子は不可) -- 暗号化キーの入力時や関数 |inputsecret()| の使用時 -- Vimが |+vertsplit| 機能付きでコンパイルされていないとき - -コマンドラインウィンドウが開かれると、以下のオプションの設定が変わる。 -'filetype' "vim" (Exコマンドラインの編集時に) これは、可能ならVimスクリプ - トに対する構文強調表示を開始する -'rightleft' オフ -'modifiable' オン -'buftype' "nofile" -'swapfile' オフ - -コマンドラインウィンドウの内容をファイルに書き出すことができる。こうすれば、簡 -単にコマンドライン履歴を保存し、後で読み込むことができる。 - -オプション 'wildchar' が <Tab> であり、コマンドラインウィンドウがExコマンドに -対して使われているときは、以下の2個のマッピングが追加され、コマンドラインウィ -ンドウ内でも <Tab> で補完ができるようになる。 > - :imap <buffer> <Tab> <C-X><C-V> - :nmap <buffer> <Tab> a<C-X><C-V> -Note: ノーマルモードで <Tab> を打ち込むと、カーソルの次の文字の位置で補完を行 -うことに注意。この方法なら行末でも補完が行われる。 -それらのマッピングを望まないなら、次のようにして無効化すること。 > - au CmdwinEnter [:>] iunmap <Tab> - au CmdwinEnter [:>] nunmap <Tab> -ユーザの .vimrc ファイルに上の行を書き込んでおけばよい。 - -コマンドラインウィンドウ内では、マウスでカーソルを別のウィンドウに移したり、別 -のウィンドウのステータスラインをドラッグしたりはできない。コマンドラインウィン -ドウ自身のステータスラインはドラッグできる。上向きにずっとドラッグすると、直上 -のウィンドウのステータスラインも動き、コマンドラインウィンドウがさらに広くなる。 - - -自動コマンド の 適 用 - -2種類の 自動コマンドのイベントが使われる: |CmdwinEnter| と |CmdwinLeave|。コマ -ンドラインウィンドウは特別なウィンドウなので、イベント WinEnter, WinLeave, -BufEnter, BufLeave は発生しない。コマンドラインウィンドウに対して特別に設定を -するには、イベント Cmdwin を使う。副作用を引き起こさないよう注意! -例: > - :au CmdwinEnter : let b:cpt_save = &cpt | set cpt=. - :au CmdwinLeave : let &cpt = b:cpt_save -これはカレントウィンドウで |i_CTRL-N| によって補完を行うよう 'complete' を設定 -する。 -別の例: > - :au CmdwinEnter [/?] startinsert -こうすれば、コマンドラインウィンドウではVimは挿入モードに移る。 - - *cmdwin-char* -パターンに使われる文字は、コマンドラインの種類を表す。 - : 普通のExコマンド - > デバッグモードのコマンド |debug-mode| - / 前方検索に使われる文字列 - ? 後方検索に使われる文字列 - = Expressionレジスタ "= 用の expression |expr-register| - @ 関数 |input()| に対して入力する文字列 - - コマンド |:insert| や |:append| に対して入力する文字列 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/debug.jax b/runtime.old/doc/debug.jax deleted file mode 100644 index 63df09521..000000000 --- a/runtime.old/doc/debug.jax +++ /dev/null @@ -1,181 +0,0 @@ -*debug.txt* For Vim バージョン 7.3. Last change: 2010 Dec 22 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Vim のデバッグ *debug-vim* - -Vim のデバッグ方法についての説明です。 -Vim スクリプトや関数などのデバッグについては、|debug-scripts| を参照してくださ -い。 - -1. gcc と gdb を使ってクラッシュの場所を特定する |debug-gcc| -2. メモリリークの検出 |debug-leaks| -3. Windows でのバグレポート |debug-win32| - -============================================================================== - -1. gcc と gdb を使ってクラッシュの場所を特定する *debug-gcc* - -テストファイルで Vim がクラッシュした場合、gcc を使っているなら、以下の方法で -場所を特定できます。MinGW でも同じようにできます。 - -1. "-g" オプション付きで Vim をコンパイル (src/Makefile にそのための行があるの - で、それをコメントアウトしてください)。さらに "strip" を無効化 (strip をイ - ンストールしないか、"STRIP = /bin/true" の行を使う)。 - -2. 次のコマンドを実行 ("11" の所を失敗したテストの番号に変えてください): > - cd testdir - gdb ../vim - run -u unix.vim -U NONE -s dotest.in test11.in - -3. Vim のクラッシュを確認。gdb がメッセージを表示します。 - -4. 次のコマンドでスタックトレースを表示できます: > - where -< 次のコマンドで別の場所のスタックトレースを表示できます: > - frame 3 -< "3" のところをにスタックトレースの番号を指定してください。 - -============================================================================== - -2. メモリリークの検出 *debug-leaks* *valgrind* - -もし Vim がメモリリークを起こしているような感じがして、そしてあなたが Linux を -使っているなら、valgrind ツールを使うことでメモリリークをピンポイントで検出す -ることができます。 - -まず、Vim を EXITFREE の定義付きでビルドします。MAKEFILE を検索して該当行のコ -メントを外してください。 - -次のコマンドで Vim を起動してください: -> - valgrind --log-file=valgrind.log --leak-check=full ./vim - -Note: Vim の実行はとても遅くなります。.vimrc が大きかったり多くのプラグインを -入れていたりすると起動にとても時間がかかるので、その場合は "-u NONE" 引数を指 -定して起動してみてください。 - -ライブラリがメモリリークを起こしている場合もあります。例えば getpwuid() や -XtVaAppCreateShell() などです。それらを避けることはできません。リークしている -バイト数は数キロバイト以下のはずです。 - -============================================================================== - -3. Windows でのバグレポート *debug-win32* - -Windows版の Vim が再現可能な手段でクラッシュした場合、次の方法で有用なバグレ -ポートを作成できます。 - -3.1 一般事項 ~ - -実行ファイルに対応したデバッグシンボルファイル (PDB) を用意してください。 -gvim.exe には gvim.pdb、vim.exe には vim.pdb が必要です。あなたが実行ファイル -を入手したのと同じ場所に用意されているはずです。EXE に対応した (同じ日付の) -PDB でなければいけません。 - -Microsoft Visual C++ コンパイラを使って自分で実行ファイルを作成した場合は、PDB -は EXE といっしょに作成されています。 - -他の方法もあります。ソースファイルを入手し、Visual Studio のワークスペースに -Make_ivc.mak を取り込んでください。そして、デバッグの設定を選択し、ビルドして -ください。ブレイクポイントの設定や変数の監視など、すべてのデバッグ機能が使えま -す。 - -Visual Studio を持っている場合はそれを使ってください。VC Toolkit と WinDbg は -必要ありません。 - -他のコンパイラを使っている場合は、それぞれ適切なデバッガを使ってください。 -Borland コンパイラで作成した Vim 実行ファイルなら TD を使ってください。Cygwin -または MinGW のコンパイラなら gdb を使ってください (上記参照 |debug-gcc|)。 - - - *debug-vs2005* -3.2 Visual Studio 2005/Visual C++ 2005 Express で Vim をデバッグする ~ - -vim.exe か gvim.exe を起動し、Visual Studio を起動してください。(Visual Studio -を持っていない場合は、|get-ms-debuggers| の説明に従って、無料の Visual C++ -2005 Express Edition を入手してください。) - -メニューから「ツール/プロセスにアタッチ」を選択し、Vim のプロセスを選択します。 - -そして、Vim を操作してクラッシュを再現します。「ハンドルされていない例外が発生 -しました」という Visual Studio のダイアログが表示されるので、中断ボタンをク -リックしてプロセスを中断してください。 - -シンボルが読み込めず、ソースコードを表示できなかったときは、もう一つダイアログ -が表示されます。OK をクリックしてください。 - -ウィンドウがいくつか開きます。呼び出し履歴ウィンドウの右クリックメニューから -「シンボルの読み込み」を選択してください。シンボル検索ダイアログが開くので、 -(g)vim.pdb のあるディレクトリを選択してください。 - -このとき、呼び出し履歴ウィンドウには Vim の関数名や行番号が表示されているはず -です。どれかをダブルクリックするとソースの検索ダイアログが表示されます。Vim の -ソースがあるディレクトリを選択してください (もしソースがあるなら)。 - -さらに詳しくデバッグする方法が分からないときは、":help bug-reports" の説明に -従ってください。バグレポートに呼び出し履歴を張り付けてください。 - -有料版の Visual Studio を使っている場合は、デバッグメニューから minidump を保 -存できるので、それをバグレポートに添付してください。minidump は 100KB 以下の小 -さなファイルで、Vim のプロセスに関する情報が入っています。 -Visual C++ 2005 Express Edition では minidump を保存できません。just-in-time -デバッガ (クラッシュを検出して自動的に起動されるデバッガ) もインストールされま -せん。それらが必要なときは WinDbg (|debug-windbg|) を使ってください。 - - *debug-windbg* -3.3 WinDbg を使って Vim をデバッグする ~ - -WinDbg の入手方法は |get-ms-debuggers| を参照してください。 - -Visual Studio IDE を使うのと同じように、WinDbg から Vim のプロセスにアタッチで -きます。プログラムがクラッシュしたときに、事後分析デバッガ (postmortem -debugger) として、WinDebug を自動的に起動することができます。事後分析デバッガ -として WinDeb を設定するには "windbg -I" を実行してください。 - -WinDbg から、実行中の Vim のプロセスにアタッチするには、WinDeb を起動し、File -メニューから「プロセスにアタッチ」を選択し、Vim のプロセスを選択して OK をク -リックします。 - -メニューから「File->Symbol File Path」を選択し、Vim PDB の入っているフォルダを -symbolpath に追加してください。Vim のソースファイルもある場合は、File メニュー -のSource File Path を使ってください。WinDbg でソースファイルを開いたり、ブレー -クポイントを設定したりできます。Vim をクラッシュさせると、クラッシュした場所の -ソースファイルが WinDbg で開かれます。View メニューを使って、コールスタック、 -ローカル変数、ウォッチウィンドウなどを見ることができます。 - -事後分析デバッガとして WinDbg を使っている場合、WinDbg から Vim のプロセスにア -タッチする必要はありません。Vim をクラッシュさせるだけで WinDbg が自動的に起動 -します。上述のように、シンボルファイルパスとソースファイルパスを設定してくださ -い。 - -minidump を保存するには、WinDbg コマンドラインで次のコマンドを入力します: > - .dump vim.dmp -< - *debug-minidump* -3.4 Minidump を開く ~ - -Visual Studio か WinDbg を使って minidump を開くことができます。 - -Visual Studio 2005 の場合: メニューから「ファイル->開く->プロジェクト/ソリュー -ション」選択し、.dmp ファイルを開いてください。F5 キーを押してデバッガを起動し -ます。Symbol File Path の設定について |debug-vs2005| の説明も参照してくださ -い。 - -WinDbg の場合: メニューから「File->Open Crash Dump」を選択します。Symbol File -Pathの設定について |debug-windbg| の説明も参照してください。 - - *get-ms-debuggers* -3.5 Microsoft デバッグツールの入手方法 ~ - -Windows 用のデバッグツールは次の場所からダウンロードできます - http://www.microsoft.com/whdc/devtools/debugging/default.mspx -これには WinDbg デバッガが含まれています。 - -Visual C++ 2005 Express Edition は次の場所からダウンロードできます。無料です。 - http://msdn.microsoft.com/vstudio/express/visualC/default.aspx - -========================================================================= - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/debugger.jax b/runtime.old/doc/debugger.jax deleted file mode 100644 index 61633357f..000000000 --- a/runtime.old/doc/debugger.jax +++ /dev/null @@ -1,134 +0,0 @@ -*debugger.txt* For Vim バージョン 7.3. Last change: 2005 Mar 29 - - - VIM リファレンスマニュアル by Gordon Prieur - - -デバッガ支援機能 *debugger-support* - -1. デバッガ機能 |debugger-features| -2. Vimのコンパイルオプション |debugger-compilation| -3. 統合デバッガ |debugger-integration| - -{Viにはこれらのコマンドは無い} - -============================================================================== -1. デバッガ機能 *debugger-features* - -以下の機能はデバッガ、統合プログラミング環境(IPE)、統合開発環境(IDE)との統合に -利用できる: - - もう1つのコマンド入力 |alt-input| - デバッグ目印 |debug-signs| - デバッグソースコード強調 |debug-highlight| - メッセージフッター |gui-footer| - バルーンウィンドウ |balloon-eval| - -これらの機能はMotifバージョンのgvimで使うために特別に追加された。しかしなが -ら、|alt-input| と |debug-highlight|はvimとgvimでも使用できるように書かれてい -る。その他の機能は非GUIバージョンのVimでもわずかな変更で使うことができる。だ -が、著者はそのような変更をしていないし、Motif GUIではないバージョンのVimではテ -ストしていない。 - - -1.1 もう1つのコマンド入力 *alt-input* - -Vimがデバッガと協調動作するには、最低限デバッガや外部ツールからの入力のための -接続が必要である。多くの場合は出力のための接続も必要であるがこれは絶対に必要と -いうわけではない。 - -外部デバッガがVimにコマンドを送ることが入力接続の目的である。デバッガから送ら -れるコマンドは現在のデバッグ環境や状態を表示するために充分である必要がある。 - -現在の実装はXツールキット(X Toolkit)の発送ループとXtAddInput()ファンクション -コールを基本にしている。 - - -1.2 デバッグ目印 *debug-signs* - -多くのデバッガは小さな目印を表示したりその行を色で強調することで特定の行に印を -付ける。デバッガは|:sign|コマンドを使って(Vimに)グラフィカルな目印を設定させる -ことができる。この機能の使われ方の一例は、デバッグしているプログラムの実行位置 -(プログラムカウンタ:PC)を表示するのにデバッガが表示する矢印に見る事ができる。 -別の例ではブレークポイントを示す小さな停止記号がある。これらの視覚的な強調は -ユーザがデバッガ状態の経過を追う助けになる。 - -この機能はデバッガ以外の用途にも使用できる。IPEはビルドエラー、検索したテキス -ト、その他を強調するのに何かしらの目印を使用する。この機能は印がより高い視認性 -を確保するために|debug-highlight|と一緒に利用できる。 - -デバッグ目印は|:sign|コマンドを使って定義、設置する。 - - -1.3 デバッグソースコード強調 *debug-highlight* - -この機能により行に優れた強調を施すことができる。これは特定の行を目立たせること -を目的としている。この強調はvimとgvim両方で動作させることができ、gvimに限り多 -くの場合デバッグ目印と一緒に使うことができる。唯一の例外はSun Microsystemの -dttermである。dttermには目印を表示するためのスペースがある。(訳注: なので、こ -れを利用する際はコンソールvimでも目印を利用可能となる) - - -1.4 メッセージフッター *gui-footer* - -メッセージフッターはデバッガやIPEからのメッセージを表示するのに使用する。また -メニューやツールバーのtips(一言ヒント)を表示するのにも使用できる。GUIウィンド -ウの下のフッターエリアは、Exコマンドを表示する行のさらに下に位置する。 - -フッターエリアの表示・非表示は'guioptions'の'F'フラグで制御する。 - - -1.5 バルーンウィンドウ *balloon-eval* - -この機能はデバッガや外部ツールに、マウスが指す位置に応じた動的な情報を表示する -機能を提供する。この機能は「Sun's Visual WorkShop」のデバッガに式の評価結果を -表示させることを目的とした。しかしながら、その他の情報を表示するのに利用できる -よう、可能な限り一般的な様式で実現されている。 - -バルーンウィンドウには幾つかの設定可能なパラメータがある。Motifではフォントリ -ストと色はXリソース経由で設定される(XmNballoonEvalFontList, -XmNballoonEvalBackground, XmNballoonEvalForeground)。 -オプション'balloondelay'はバルーンを表示するまでの遅延時間を設定する。 -この機能を有効にするにはオプション'ballooneval'をオンにする必要がある。 - -バルーンウィンドウは|+balloon_eval|と|+sun_workshop|機能をコンパイル時にした時 -のみ利用できる。 - -バルーンウィンドウ関数はツールバーのツールチップを表示する際にも利用されてい -る。これにはオプション'ballooneval'を設定する必要はない。しかしその他の設定は -このツールチップにも適用される。 - -バルーンウィンドウを使うもう1つの方法は、オプション'balloonexpr'を使うことであ -る。これは完全にユーザが定義できる。 - -============================================================================== -2. Vimのコンパイルオプション *debugger-compilation* - -デバッガ機能はSunの「Visual WorkShop Integrated Programming Environment」(ipe) -と一緒に使うために明示的に加えられた。しかし、それらのSunのipeと供に使用する機 -能は他のデバッガも一部もしくは全部を使うことができるように、可能な限り一般的な -様式で実現されている。 - -以下のコンパイル時のプリプロセッサ変数で機能の有無効を制御する: - - もう1つのコマンド入力 ALT_X_INPUT - デバッグ目印 FEAT_SIGNS - デバッグソースコード強調 FEAT_SIGNS - メッセージフッター FEAT_FOOTER - バルーンウィンドウ FEAT_BEVAL - -最初の完全なIPE/IDEとの統合はSun Visual WorkShopである。gvimをVWSとのインター -フェイスを有効にしてコンパイルするには次のフラグを設定する。これにより上で述べ -た全てのフラグを設定される: - - Sun Visual WorkShop FEAT_SUN_WORKSHOP - -============================================================================== -3. 統合デバッガ *debugger-integration* - -完全に統合されたデバッガ/IPE/IDEは、唯一Sunの「Visual WorkShop Integrated -Programming Environment」だけである。 - -SunのNetBeansのサポートについては|netbeans|を参照。 - - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/runtime.old/doc/develop.jax b/runtime.old/doc/develop.jax deleted file mode 100644 index 8840dfe80..000000000 --- a/runtime.old/doc/develop.jax +++ /dev/null @@ -1,494 +0,0 @@ -*develop.txt* For Vim バージョン 7.3. Last change: 2008 Dec 17 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Vimの開発 *development* - -この文書は、Vimの更なる開発に参加しようという人にとって重要である。 - -1. 設計上の目標 |design-goals| -2. コーディングスタイル |coding-style| -3. 決定事項 |design-decisions| -4. 想定していること |design-assumptions| - -ソースコードの概要については"src"ディレクトリのREADME.txtを見てください。 - -Vimはオープンソースソフトウェアです。誰でもVimの開発に協力できます。パッチを送 -る時はなるべく"context diff"形式("diff -c"で作る)でお願いします。 -http://www.vim.org/tips/tip.php?tip_id=618 も見てください。 - -============================================================================== -1. 設計上の目標 *design-goals* - -重要度の順に従って書かれている(大雑把であるが)。 - -かなりの項目が矛盾していることを注意しておく。これは故意である。それらの -間で、バランスを取っていかねばならない。 - - -VIM IS... VI COMPATIBLE *design-compatible* - -なにより、VimはViの気軽な置き換えとして使うことができるべきである。ユーザ -が望むなら、Vimを、オリジナルのViとの区別がほとんど付かない互換モードで使う -ことができる。 - -例外: -- 明白なViのバグをVimに再現しない。 -- Viには異なるバージョンが存在する。私はバージョン3.7(6/7/85)を参考として - 使っている。しかし、他のバージョンのサポートも可能な限り取り込まれる。 - POSIXにおけるViのパートは、決定的な資料とは考えない。 -- Vimは新しいコマンドを持つため、Viにないコマンドを入力しても機能してしまう - 場合がある。 -- VimはViの持っていない多くの特徴を持つ。VimからViへ戻ることは問題を引き起こ - すが、これは避けられないことである。 -- いくつかの事柄はめったに使われた例がない(オープンモード、クラッシュ時の - e-mailの送信、など)。これらは、誰かが何らかの理由でそれを入れるべきだと考 - え、さらにその機能が働き過ぎない場合に限って取り入れられる。 -- いくつかの項目に関しては、Vi互換を保るべきかどうか、議論の余地がある。これ - らに関しては、オプションフラグが作られるだろう。 - - -VIM IS... IMPROVED *design-improved* - -Vimの改良点は、それをよりよいViにすべきであって、まったく違ったエディタに -してしまってはならない。拡張は"Viの精神"に従って行われる。 -- 可能な限りキーボードを使う。マウスは私たちの持たぬ第3の手を必要とする。 - 多くの端末はマウスを備えていない。 -- それでもマウスを使うようであれば、キーボードに切り替える必要をなくす。 - マウスとキーボードの操作の混在を避けよ。 -- コマンドとオプションを矛盾なく追加せよ。でなければ、それらを見つけ出し、思い - 出すのに、人々は苦労を強いられるだろう。後々、さらにコマンドやオプションが - 追加されることを忘れてはならない。 -- 特性は、人々が知らなければ役に立たない。目立たない特性は追加しない、あるいは、 - 少なくともその特性が存在するというヒントをドキュメントに追加すること。 -- CTRLや他の修飾子の使用は最小限に留めよ、これらはタイプしにくい。 -- 多くの初心者、不慣れなVimユーザがいる。Vimを使いはじめること、そしてより多く - を学んでいくことが、簡単にできるようにせよ。 -- 特性は限りなく追加できる。新しく追加される特性は、(1)ユーザが求めていること、 - (2)実装にどれほどの労力が必要か、そして(3)誰かが実際に実装している、といった - ことに基づいて選択される。 - - -VIM IS... MULTI PLATFORM *design-multi-platform* - -Vimは、可能な限り、多くのプラットホーム上の多くのユーザの助けでありたい。 -- 多くの種類の端末をサポートする。最低限の要求は、カーソルの配置機能と画面の - クリアである。コマンドはたいていのキーボードが持つキーのみを使う。マッピン - グには、キーボード上の全てのキーを使うことができる。 -- 多くのプラットホームをサポートする。必要条件は、誰かがそのプラットホーム上で - Vimの開発をしたいと考えること、それによってコードに混乱をきたさないこと、で - ある。 -- 多くのコンパイラとライブラリをサポートする。全ての人が、他のコンパイラや - GUIライブラリをインストールできるわけではないからである。 -- 人々は、あるプラットホームから別のプラットホームへ、そしてGUIから端末バー - ジョンへ移行する。特性は全てのバージョン、あるいは、少なくとも理に叶った労力 - でできる限りのバージョンで、提供されるべきである。ユーザが能率的に仕事を仕上 - げるために、プラットホームを切り替えねばならないような事態は避けたい。 -- いくつかのプラットホームでは実現できない、または、ただひとつのプラットホーム - でしか実現できないような特性も、実装できないというわけではない。[これは前項 - と故意に矛盾するものであり、両者の間でバランスが取られる。] - - -VIM IS... WELL DOCUMENTED *design-documented* - -- 文書化されていない特性は、役に立たない。新しい特性を含んだパッチには、必ず - ドキュメントが含まれているべきである。 -- ドキュメントは、わかりやすく、理解できるものであるべきだ。例を使うことが推 - 奨される。 -- 文章を不必要に長くしてはならない。短い文章は、その項目を見つけやすくする。 - - -VIM IS... HIGH SPEED AND SMALL IN SIZE *design-speed-size* - -Vimを使うことで、システムリソースに大打撃を与えてはならない。Vimを小さく、 -速く保つこと。 -- コンピュータは年毎により速く、大容量になっている。Vimも成長しうるが、コン - ピュータの成長速度より速くなってはならない。Vimを古いシステム上でも使える - よう保つ必要がある。 -- 多くのユーザは、Vimを頻繁にシェルから立ち上げる。起動は短時間でなくてはなら - ない。 -- コマンドは能率的に働く必要がある。コマンドが消費する時間は、可能な限り短く - あるべきだ。役に立つコマンドなら、多少時間がかかってもよい。 -- Vimを、遅い接続を通して使う人がいることを忘れてはならない。通信にかかるオー - バーヘッドは最小にすること。 -- サイズがかなり大きく、多くの人によって使われるわけではない項目は、無効化で - きる特性とすべきである。 -- Vimは、他のいろいろな構成要素の中にある、ひとつのコンポーネントである。巨大 - なアプリケーションに変えてはならない、むしろ他のプログラムとよく協調するよう - にせよ。 - - -VIM IS... MAINTAINABLE *design-maintain* - -- ソースコードは乱雑になってはならない。そして、信頼できるものでなくてはな - らない。 -- 読みやすくするため、すべてのファイルで同じレイアウトを取ること - |coding-style|。 -- 役に立つコメントをいれること!関数名と引数名を引用しても役に立たない。それ - が何のためにあるのか説明すること。 -- プラットホーム独立のコードに多くの変更を加える必要をなくし、他のプラットホー - ムへの移植を簡単にできるようにすること。 -- オブジェクト指向の精神を使う: データとコードを同じ場所に。コードの他の部分 - に関する知識は最小で済むように。 - - -VIM IS... FLEXIBLE *design-flexible* - -Vimは、そのユーザに特定の作業パターンを強いるよりは、ユーザの好むスタイルでの -作業を支援すべきである。これは大きなインパクトをもつ項目(例えば、'compatible' -オプション)や、その他の詳細によって実現される。デフォルトは、多くのユーザが -そのままのVimを楽しんで使えるように、慎重に選ばれている。コマンドとオプション -は、Vimをユーザの希望と環境に調整するために使われる。 - - -VIM IS... NOT *design-not* - -- Vim はシェルでもオペレーティングシステムでもない。Vim の中でシェルを走らせた - りデバッガを制御したりできるようにはならない。これらは他の方法で成されるべき - である: Vim をシェルや IDE のコンポーネントとして使おう。 - 風刺を込めて曰く: "Vim は Emacs のように流し台以外ならなんでもかんでも取り込 - んでしまうようなことはしないが、Vim で流し台を洗うことはできるぞ。 ;-)" - A satirical way to say this: "Unlike Emacs, Vim does not attempt to include - everything but the kitchen sink, but some people say that you can clean one - with it. ;-)" - Vim と gdb を連携させる方法については次を参照: - http://www.agide.org と http://clewn.sf.net. -- Vimは、全てのプラットホームに渡って調和を欠くという代償を払って、見栄えをよ - くしようとする装飾的なGUIエディタではない。しかし、機能的なGUI特性は歓迎さ - れる。 - -============================================================================== -2. コーディングスタイル *coding-style* - -Vimのソースコードに変更を加える際、守るべきルールがある。ソースを読めるもの、 -保守できるものとして保つため、これらのルールに従って欲しい。 - -このリストは完全ではない。より多くの例は、ソースコードを見て欲しい。 - - -MAKING CHANGES *style-changes* - -コードに変更を加える基本的なステップは: -1. ドキュメントを調整する。最初にこれをやることで、あなたの行う変更がユーザに - 与える影響について、おおまかな印象をもつことができる。 -2. ソースコードに変更を加える。 -3. 変更がリストされた項目に影響を与えていないか、../doc/todo.txtをチェックす - る。 -4. 無修正のコードとドキュメントに対するパッチを、"diff -c"によって得る。 -5. 変更に関する注意書きを作り、パッチに含める。 - - -USE OF COMMON FUNCTIONS *style-functions* - -よく使われる関数のうち、特別なVimバージョンを持つものがある。これらは理由あっ -て導入されたものなので、常にVimバージョンを使うように意識すること。 - -NORMAL NAME VIM NAME DIFFERENCE OF VIM VERSION -free() vim_free() NULLの解放をチェックする -malloc() alloc() アウトオブメモリーの状況をチェックする -malloc() lalloc() alloc()に似ているが、長い引数を持つ -strcpy() STRCPY() char_u *引数を、(char *)へキャストする -strchr() vim_strchr() スペシャルキャラクタを受け入れる -strrchr() vim_strrchr() スペシャルキャラクタを受け入れる -isspace() vim_isspace() 128以上のキャラクタを扱うことができる -iswhite() vim_iswhite() Tabとスペースに対してのみTRUE -memcpy() mch_memmove() オーバーラップしたコピーを扱う -bcopy() mch_memmove() オーバーラップしたコピーを扱う -memset() vim_memset() 全てのシステムで一定である - - -NAMES *style-names* - -関数の名前に31文字より長い名前は使えません。(VMSのために) - -"delete"という名前の変数を使わないでください。C++で問題となります。 - -Vimができる限り多くのシステム上で走るという必要上、システムによってすでに定義 -されている名前を使うことは避けねばならない。これは、問題となることが知られて -いる名前のリストである。名前はregexpパターンとして与えられている。 - -is.*() POSIX, ctype.h -to.*() POSIX, ctype.h - -d_.* POSIX, dirent.h -l_.* POSIX, fcntl.h -gr_.* POSIX, grp.h -pw_.* POSIX, pwd.h -sa_.* POSIX, signal.h -mem.* POSIX, string.h -str.* POSIX, string.h -wcs.* POSIX, string.h -st_.* POSIX, stat.h -tms_.* POSIX, times.h -tm_.* POSIX, time.h -c_.* POSIX, termios.h -MAX.* POSIX, limits.h -__.* POSIX, system -_[A-Z].* POSIX, system -E[A-Z0-9]* POSIX, errno.h - -.*_t POSIX, for typedefs, *_Tを使ってください。 - -wait types.hとコンフリクトするため、関数の引数として使わない -index グローバル宣言を覆い隠す -time グローバル宣言を覆い隠す -new C++の予約語 -try Borland C++は、これを変数として使うことを好まない - -basename() GNU 文字列関数(GNU string function) -dirname() GNU 文字列関数(GNU string function) -get_env_value() Linux システム関数 - - -VARIOUS *style-various* - -型の定義に使う名前は最後を"_T"にします: > - typedef int some_T; -マクロ定義はすべて大文字にします: > - #define SOME_THING -機能に関する定義は"FEAT_"で始めます: > - #define FEAT_FOO - -'\"'を使わない、あるコンパイラはこれを扱えない。'"'はうまく機能する。 - -次を使ってはならない: - #if HAVE_SOME -あるコンパイラはこれを扱えず、"HAVE_SAME"が定義されていないと訴える。 -次を使う - #ifdef HAVE_SOME -または - #if defined(HAVE_SOME) - - -STYLE *style-examples* - -一般的なルール: 1行に1つのステートメント。 - -間違い: if (cond) a = 1; - -OK: if (cond) - a = 1; - -間違い: while (cond); - -OK: while (cond) - ; - -間違い: do a = 1; while (cond); - -OK: do - a = 1; - while (cond); - - -関数は次のようにして始める: - -間違い: int function_name(int arg1, int arg2) - -OK: /* - * Explanation of what this function is used for. - * この関数が何に使われるかの説明。 - * - * Return value explanation. - * 戻り値の説明。 - */ - int - function_name(arg1, arg2) - int arg1; /* short comment about arg1 */ - int arg2; /* short comment about arg2 */ - { - int local; /* comment about local */ - - local = arg1 * arg2; - -注意: ANSIスタイルの関数宣言を使わないこと。いまだそれをサポートしていないコ -ンパイラを使わねばならない人が、少ないながらいるからである。 - - -SPACES AND PUNCTUATION *style-spaces* - -関数名とブラケットの間にスペースを入れないこと: - -間違い: func (arg); -OK: func(arg); - -if、while、switchなどの後には、スペースを入れること。 - -間違い: if(arg) for(;;) -OK: if (arg) for (;;) - -カンマ、セミコロンの後にはスペースを入れること: - -間違い: func(arg1,arg2); for (i = 0;i < 2;++i) -OK: func(arg1, arg2); for (i = 0; i < 2; ++i) - -'='、'+'、'/'などの前と後には、スペースを入れること。 - -間違い: var=a*5; -OK: var = a * 5; - -一般的なこと: コードの行をグループ分けするために、空行を使う。行グループのす -ぐ上にコメントを入れる。こうすることによって、何が行われるのかをより簡単に知 -ることができる。 - -OK: /* Prepare for building the table. */ - /* テーブルの作成の準備 */ - get_first_item(); - table_idx = 0; - - /* Build the table */ - /* テーブルの作成 */ - while (has_item()) - table[table_idx++] = next_item(); - - /* Finish up. */ - /* 仕上げ */ - cleanup_items(); - generate_hash(table); - -============================================================================== -3. 決定事項 *design-decisions* - -折畳(folding) - -同じバッファにいくつもの折畳状態を設定可能にする。例えば、あるウインドウに関 -数を折畳んだ状態で表示し、他のウインドウで関数の中身を表示するなど。 - -折畳はテキストを表示する方法である。テキストを変更すべきではない。したがってバッ -ファ内のテキストをウインドウに表示する際のフィルタとして実行される。 - - -ウインドウの名前 - -"ウインドウ"という単語は一般にいくつかの意味で使われている。スクリーン上のウ -インドウ、xtermのウインドウ、Vimのバッファを表示するウインドウなど。 - -混乱を避けるため、時にウインドウと呼ばれる他の物には別の名前が付けられてい -る。ここに関連する物の概観を示す。 - -スクリーン(screen) ディスプレイ全体。GUIでは例えば1024x768ピクセルの画 - 面。Vimシェルはスクリーン全体を使うことも一部を使う - こともできる。 - -シェル(shell) Vimアプリケーション。スクリーン全体(例えばコンソール - で実行した時)、あるいはその一部(xtermやGUI)。 - -ウインドウ(window) バッファの表示画面。Vimは複数のウインドウを持つこと - ができる。ウインドウはコマンドラインやメニューバー、 - ツールバーなどといっしょに表示される。これらはシェル - に納まる。 - -スペルチェック *develop-spell* - -Vim にスペルチェックを追加することになったとき、利用可能なスペルチェックのライ -ブラリやプログラムについて調査が行われた。その結果は残念なことに、Vim 内でスペ -ルチェックエンジンとして使えるものはないとわかった。これには様々な理由がある: - -- マルチバイトエンコーディングをサポートしていない。1つのファイル内で複数の言 - 語を使えるようにするために、少なくとも UTF-8 はサポートしていなければならな - い。 - オンザフライな変換は常に可能とは限らない(iconv に対応している必要がある)。 -- プログラムとライブラリに対して: それらをそのまま(as-is)使うには、Vim と別個 - にインストールしなければならない。これはたいてい不可能ではないが、難点である。 -- パフォーマンス: いくつかのテストによると、スペルチェックを構文強調のようにオ - ンザフライで(再描画中に)行うことは可能であった。しかし他のコードで使われたメ - カニズムはもっと遅かった。例えば、Myspell はハッシュテーブルを使用する。ほと - んどのスペルチェッカが使用している接辞圧縮を使うと遅くなった。 -- aspell のような外部プログラムを使うには、通信メカニズムを用意しなければなら - ない。これをポータブルな方法で行うのは複雑過ぎる(Unix だけなら比較的簡単だが、 - それでは十分ではない)。そしてパフォーマンスが問題になる(何回ものプロセス切替 - が行われる)。 -- "Etten-Leur" や "et al." など、単語でない単語のサポートを欠いている。そのた - めこれらの部分を OK とマークしなければならないが、そうすると信頼性が低下する。 -- 地域や方言のサポートを欠いている。英語の単語をすべて受け付け、カナダ語でない - 単語を別に扱うことが難しくなる。 -- 頻度が低い単語のサポートを欠いている。正しいがめったに使われないたくさんの単 - 語が、よく使われる単語のスペルミスとみなされてしまう。 -- スペル候補を作成するには速度はそれほど重要ではなく、他のプログラムやライブラ - リをインストールすることは許容できる。しかし、単語リストが異なるとスペル候補 - が誤単語になってしまう。 - - -スペル候補 *develop-spell-suggestions* - -候補の作成には2つの基本的なメカニズムがある: -1. 誤った単語を少し変更して正しい単語とマッチするかチェックする。あるいは、正 - しい単語全てに対し、それを少し変更して誤った単語とマッチするかチェックする。 - 変更とは、文字の削除・文字の挿入・2つの文字の交換などである。 -2. 誤った単語と正しい単語のリストの両方に soundfolding (発音が近い単語を同じグ - ループとみなすこと) を行って、そこでマッチを見つける。1番目のメカニズムと同 - 様にいくつか変更をしてもよい。 - -最初のメカニズムはタイプミスを見つけるのにはよい。ハッシュテーブルの実験と、他 -のスペルチェッカのソリューションを見ると、これにはtrie(ツリー構造の一種)が最適 -であるとの結論になった。メモリ使用量の削減と、賢い変更を試みるということの両方 -に面でである。例えば、文字を挿入するときは正しい単語につながる文字だけを試せば -よい。他の(ハッシュテーブルを使った)メカニズムは、単語のすべての位置で、ありう -るすべての文字を試さねばならない、また、ハッシュテーブルを使うには、単語の境界 -が個別に認識されなければならないのに対し、trie はそれを要求しない。そのためメ -カニズムがより単純になる。 - -ある単語の発音は知っているがスペルを知らないという場合に soundfolding は有用で -ある。例えば、"dictionary"という単語を"daktonerie"と書いてしまうかもしれない。 -これを最初の方法で訂正しようとすると変更回数が非常に多くなってしまい、正しいス -ペルを見つけるのは困難である。それに対し、これらの単語にsoundfoldingを行うと -"tktnr"と"tkxnry"になり、2文字しか違わない。 - -soundfoldの同値(音が似ている単語)により単語を見つけるには全てのsoundfolded -wordsのリストが必要である。どれが最良の方法かを探すための実験が行われた。案: -1. 修正候補を探すときに、その場でsound foldingを行う。つまり、正しい単語のtrie - をたどりながら、各単語をsoundfoldingし、それがスペルミスしている単語からど - れだけ異なるかをチェックする。これはメモリ効率の面でとても優れているが、時 - 間は長くかかる。英語の場合、高速なPCで2秒ほどかかる。これは対話的な利用とし - て受け入れられる。しかしいくつかの言語(ドイツ語、カタルニャ語など)に対して - は10秒以上かかり、受け入れがたい。バッチ処理(自動訂正)に使うには全ての言語 - で遅すぎる。 -2. soundfoldされた単語に対してtrieを使い、soundfoldingなしのときとまったく同じ - ように検索できるようにする。そのためには、soundfoldされた各単語に対し、正し - い単語のリストを記憶しておく必要がある。そうすると照合がとても高速になるが、 - 1MB〜10MBのオーダーの大量のメモリを必要とする。ある言語の場合は元の単語のリ - ストよりも多くなる。 -3. 2番目の案と同様だが、接辞圧縮を使い、soundfoldした基本単語だけを保存するこ - とによりメモリ消費量をへらす。これはAspellが採用している方法である。不利点 - は、誤った単語をsoundfoldする前に接辞を取り除いておかねばならないことである。 - そのため、単語の先頭・末尾における誤りに対しては対応できない。また、誤った - 単語が正しい単語から大きく異なるときは遅くなる。 - -我々が採用したのは、2番目のメカニズムを使い、別ファイルを使う方法である。こう -することによって、十分なメモリを持っているユーザはとてもよい候補を得ることがで -きるし、メモリが不足しているユーザやスペルチェックだけで候補は出さなくてよいと -いうユーザはそれほどメモリを使わなくてすむ。 - - -単語の頻度 - -候補をソートするにはどの単語が共通であるかを知ると役にたつ。理論的には単語の頻 -度は単語とともに辞書の中に保持することができる。しかしそうすると単語につき回数 -を保持しなければならない。これは単語ツリー圧縮を大いに劣化させる。また、全ての -言語に対して単語の頻度を保守するのは大変な作業である。 -また、テキストに既に出てきている単語を優先するとよいだろう。このようにして特定 -のテキスト内に表れる単語は候補の中で優先度が高くなる。 - -実装されたのは、表示中に単語を数えることである。ハッシュテーブルを使ってその単 -語の回数を高速に検索する。回数は接辞ファイルでCOMMONアイテムにリストされている -単語から初期化される。そのため新規ファイルの編集を始めたときも機能する。 - -これは理想的ではない。Vimが長時間稼働しているほど回数は大きくなるためである。 -しかし実用的には単語の回数を使わない場合に比べて注目に値するほどの改善である。 - -============================================================================== -4. Assumptions *design-assumptions* - -変数のサイズ: -char 8 bit signed -char_u 8 bit unsigned -int 32 or 64 bit signed (限定された機能については16ビットもありうる) -unsigned 32 or 64 bit unsigned (16ビットについてはintと同様) -long 32 or 64 bit signed, can hold a pointer - -Note いくつかのコンパイラは長すぎる行は文字列をうまく扱えない。C89の標準規格で -は509文字までに制限されている。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/diff.jax b/runtime.old/doc/diff.jax deleted file mode 100644 index 0b0e15a7f..000000000 --- a/runtime.old/doc/diff.jax +++ /dev/null @@ -1,411 +0,0 @@ -*diff.txt* For Vim バージョン 7.3. Last change: 2011 Apr 14 - - - VIMリファレンスマニュアル by Bram Moolenaar - - - *diff* *vimdiff* *gvimdiff* *diff-mode* -このファイルでは |+diff| 機能 (同じファイルの2つ/3つ/4つのバージョン間の違いを -表示する機能) について解説します。 - -基本はユーザマニュアルのセクション|08.7|に記載されている。 - -1. 差分モードを開始する |vimdiff| -2. 差分を眺める |view-diffs| -3. 差分へ移動する |jumpto-diffs| -4. 差分を写す |copy-diffs| -5. 差分モードのオプション |diff-options| - -{Vi にはない} - -============================================================================== -1. 差分モードを開始する - -差分モードで編集を開始するいちばん簡単な方法は"vimdiff"コマンドである。これは -Vimを通常どおり起動して、加えて引数で与えたファイル間の違いを表示する。 > - - vimdiff file1 file2 [file3 [file4]] - -これは以下に等しい: > - - vim -d file1 file2 [file3 [file4]] - -"gvimdiff"もしくは"vim -d -g"を使うこともできる。その際はGUIがスタートする。 -"viewdiff"もしくは"gviewdiff"を使うこともできる。その際は読込専用モードでス -タートする。 -"r"が先頭に付け加われば制限モードになる(|-Z|参照)。 - -2つ目以降の引数にはディレクトリ名を指定することもできる。その際には第1引数の -ファイル名がそのディレクトリ名に追加され、ファイルを検索するのに利用される。 - -これは外部コマンドの"diff"が存在する場合にだけ動作する。'diffexpr'参照。 - -diff はカレントタブページ |tab-page| にローカルである。他のタブページにある -ウィンドウとの差分を見ることはできない。これによって、複数の差分を同時に見るこ -とが可能になっている。それぞれを別々のタブで開けばよい。 - -Vimが各ファイルについてウィンドウを開く時に起こることは、|-O|引数を使った時に -起こることに似ている。これには垂直分割が使用される。水平分割を行ないたいならば -|-o|引数を追加する: > - - vimdiff -o file1 file2 [file3 [file4]] - -常に水平分割にしたければ 'diffopt' に "horizontal" を含めること。 - -編集される各ファイルには以下のオプションが設定される: - - 'diff' on - 'scrollbind' on - 'cursorbind' on - 'scrollopt' "hor" を入れる - 'wrap' off - 'foldmethod' "diff" - 'foldcolumn' 2 - -これらのオプションはウィンドウローカルに設定される。別のファイルを開いた時に -り別のファイルを開いた時には、これらはグローバルの値へリセットされる。 -このオプションはさらにそのファイルを再読み込みするときモードラインから上書きさ -れることがある。しかし 'diff' がオンのとき、'foldmethod' と 'wrap' はモードラ -インからはセットされない。 - -表示される差分はバッファ内の違いである。だからファイルを読み込んだ後に変更を行 -なえば、その変更分は差分として表示される。全ての変更が即表示に反映されるわけで -はないので、時々":diffupdate"を行なうと良いだろう。 - -差分モードで起動した時の特別な設定を.vimrcファイルに記すことができる。このよう -にすれば良い: > - - if &diff - setup for diff mode - else - setup for non-diff mode - endif - -既にVimを利用している時には、3つの方法で差分モードへ移行することができる。 - - *E98* -:diffsplit {filename} *:diffs* *:diffsplit* - ファイル{filename}の新しいウィンドウを開く。現在と新しく開く - ウィンドウについて"vimdiff"と同様のオプションをセットする。 - 'diffexpr'も参照。 - - *:difft* *:diffthis* -:diffthis 現在のウィンドウを差分ウィンドウの1つにする。これにより - "vimdiff"と同じオプションが設定される。 - -:diffpatch {patchfile} *E816* *:diffp* *:diffpatch* - {patchfile}内の差分情報を現在のバッファへ適用し、結果を新しく - 作成したバッファへ出力する。オプションは"vimdiff"と同様に設定 - される。 - {patchexpr}の形式は"patch"プログラムか'patchexpr'が取り扱える - 形式ならどのようなものでもかまわない。 - {patchfile}は現在のファイルに対して適用可能な差分情報だけを含 - んでなければならないことに注意。もしも{patchfile}が他のファイ - ル用の差分情報を含んでいた場合は、結果は予想不可能となる。Vim - は現在のディレクトリのファイルが偶発的に書き換えられてしまうの - を避けるためディレクトリを/tmpへ変更する。しかし様々な".rej" - ファイルが作成されてしまう問題は依然としてある。また差分情報内 - にファイルが絶対パスとして与えられた場合には、やはり適用されて - しまう。 - -このコマンドを垂直分割で使うには、|:vertical|を先行させる。例: > - - :vert diffsplit main.c~ - :vert diffpatch /tmp/diff - -常に垂直分割にしたければ 'diffopt' に "vertical" を含めること。 - - *E96* -'diff'オプションは最大で4つのバッファにまで同時に設定できる。 - -オプションの値はバッファへ記憶されるので、しばらくの間異なるファイルを編集し、 -また同じファイルへ戻って再び差分モードを継続することができる。 - - *:diffo* *:diffoff* -:diffoff カレントウィンドウの差分モードを終了する。 - -:diffoff! カレントウィンドウとカレントタブページのカレントタブページのす - べてのウィンドウの差分モードを終了する - -コマンド ":diffoff" は関連するオプションをデフォルト値に戻す。 -これは差分モードが開始する前の値とは異なるかもしれない。その古い値は記憶され -ていない。 - - 'diff' off - 'scrollbind' off - 'cursorbind' off - 'scrollopt' "hor" を外す - 'wrap' off - 'foldmethod' "manual" - 'foldcolumn' 0 - -============================================================================== -2. 差分を眺める *view-diffs* - -差分ウィンドウには同じテキストが、異なるハイライト方法で表示される。テキストを -スクロールした際には'scrollbind'オプションにより、他のウィンドウも同じようにス -クロールする。垂直分割をしている場合にはテキストは正しく同期する。 - -テキストの位置は次のような場合に狂っていく: -- 'wrap'が有効で、幾つかの行が折り返され複数行を占めている時 -- 折畳が一方のウィンドウでは開かれているが、もう一方では閉じられている -- 'scrollbind'が無効になっている -- テキストが変更された -- 'diffopt'に"filler"が指定されていず、削除・追加された行が配置を狂わせている - -'diff'オプションが設定されているウィンドウで編集されている全てのバッファが差分 -へ連結される。これは隠し(hidden)バッファにもあてはまる。これを可能にするには初 -めに1つのウィンドウでそれらが編集される必要がある。 - - *:DiffOrig* *diff-original-file* -'diff'はウィンドウローカルのオプションであるから、1つのバッファをあるウィンド -ウでは差分モードで、別のウィンドウでは通常のウィンドウで表示することも可能であ -る。ファイルを読み込んで以来バッファに対して行なった変更を表示することも可能で -ある。だが、Vimは1つのファイルに対して複数のバッファを持つことはできないから、 -別のバッファを作る必要がある。 -次のコマンドが便利である: > - command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ - \ | diffthis | wincmd p | diffthis -(これは|vimrc_example.vim|に書かれている)。":DiffOrig"を実行すると、カレント -バッファと元のファイルの差分を見ることができる。 - -アンロードされたバッファの差分をとることはできない。隠れバッファの差分をとるこ -とはできる。コマンド ":hide" を使うと、バッファをアンロードせずにウィンドウを -閉じることができる。そのときバッファを差分対象から外したいならば、隠れバッファ -にする前に ":set nodiff" をする。 - - *:diffu* *:diffupdate* -:diffu[pdate] 差分の強調と折り畳みを更新する。 - -テキストを変更した時には、Vimは差分情報を最新に保とうと試みる。これの大部分は -挿入と削除をされた行(複数も可)に着目して行なわれる。1行内で行なわれた変更、及び -それよりも複雑な変更に対しては差分情報は更新されない。差分情報を強制的に更新す -るには次のコマンドを使う: > - - :diffupdate - - -Vimは片方のウィンドウには存在しないがもう一方には存在する行については補充して -表示する。これらはもう一方のファイルで追加されたかこのファイルで削除された行で -ある。'diffopt'オプションから"filler"を削除するとVimはこのような行の補充は行な -わない。 - - -変更されていないテキストについては折畳を使用して隠される。折畳に使用できる全て -のコマンドについては|folding|を参照。 - -差分の近辺の折畳に含まれない領域はコンテキストと呼び、その行数を'diffopt'オプ -ションで設定できる。以下の例ではこのコンテキストを3行に設定している: > - - :set diffopt=filler,context:3 - - -差分は以下の強調グループで強調表示される: - -|hl-DiffAdd| DiffAdd 追加(挿入)された行。このバッファに存在する行 - は、別のバッファには存在しない。 -|hl-DiffChange| DiffChange 変更された行。 -|hl-DiffText| DiffText 変更された行の中の変更されたテキスト。Vimは異 - なる最初の文字と、最後の文字を発見する(検索は - 行末から行なわれる)。その文字の間のテキストが - 強調される。これはその間にあるテキストが例え同 - じだったとしても強調されることを意味する。ここ - では 'diffopt' の "iwhite" だけが適用される。 -|hl-DiffDelete| DiffDelete 削除された行。補充された行についても、実際その - バッファには存在していないことから、このグルー - プが適用される。 - -============================================================================== -3. 差分へ移動する *jumpto-diffs* - -差分へ移動するのに2つのコマンドを使える: - *[c* - [c 前(上方)の変更の先頭へ移動する。 - カウントが与えられた場合、その回数繰り返される。 - *]c* - ]c 次(下方)の変更の先頭へ移動する。 - カウントが与えられた場合、その回数繰り返される。 - -カーソルの動く方向に変更がなかった場合にはエラーになる。 - -============================================================================== -4. 差分を写す *copy-diffs* *E99* *E100* *E101* *E102* *E103* - *merge* - -あるバッファから別のバッファへテキストを複写する2つのコマンドがある。結果的に -ある範囲について2つのバッファの内容は等しくなる。 - - *:diffg* *:diffget* -:[range]diffg[et] [bufspec] - 現在のバッファをもう1つのバッファと同じくなるように変更をす - る。 [bufspec]が与えられた時は、そのバッファが使用される。 - [bufspec] がカレントバッファである場合は何も起こらない。 - そうでなければ差分モードのバッファが他に1つしかない時にだけ動 - 作する。 - [range]については以下を参照。 - - *:diffpu* *:diffput* *E793* -:[range]diffpu[t] [bufspec] - もう1つのバッファを現在のバッファと同じくなるように変更する。 - ":diffget"と同様だが現在のバッファではなく、もう一方のバッファ - が変更を受ける。 - [bufspec] が省略され、かつ 'modifiable' がオンで差分モードにあ - るバッファが2個以上あると、このコマンドは失敗する。 - [range]については以下を参照。 - - *do* -do 引数と範囲のない":diffget"と同じ。"o" は "obtain"の意味( "dgg" - と区別できないので、"dg" は使えません)。 - Note: これはビジュアルモードでは機能しません。 - - *dp* -dp 引数と範囲のない":diffput"と同じ。 - Note: これはビジュアルモードでは機能しません。 - - -[range]が与えられない場合にはカーソルの位置かその上の差分が適用される。[range] -が使われた時にはその範囲だけを適用(put/get)しようと試みる。削除された場合には -必ずしも可能なわけではない。 - -バッファの最後の行のさらに下方に削除された行があることも考えられる。そのとき -カーソルが最終行にあり、最終行より上に差異がないとき、":diffget"と"do"コマンド -はそれらの行を取得します。 - -超えた位置の行をもう一方のバッファから取得するには、最終行+1の行番号を指定す -る。次のコマンドはもう一方のバッファから完全な差分情報を受け取る: > - - :1,$+1diffget - -削除された行は画面に表示こそされているが、テキストラインとしては数えられていな -いことに注意。消された範囲にカーソルを移動することはできない。もう一方のバッ -ファから、削除された行を":diffget"で取得するには対象行の下方で行なう必要があ -る。 - *E787* -変更を受けるバッファが読み込み専用で、 |FileChangedRO| で引き起こされる自動コ -マンドがバッファを変更するとき、このコマンドは失敗する。 -この自動コマンドはバッファを変更してはならない。 - -引数 [bufspec]にはバッファ番号、バッファ名のパターンもしくはバッファ名の一部を -使用できる。例: - - :diffget 差分モードにある別のバッファを使用する - :diffget 3 3番のバッファを使用する。 - :diffget v2 差分モードにある"v2"にマッチするバッファを使用 - する(例, "file.c.v2") - -============================================================================== -5. 差分モードオプション *diff-options* - -|'diffopt'|と|'fillchars'|の"diff"項目も参照。 - - -差分を発見する *diff-diffexpr* - -'diffexpr'オプションは、2つのファイルを比較し差分を取得する標準的な"diff"プロ -グラム以外の何かを利用する場合に設定する。 - -'diffexpr'が空ならば、Vimはfile1とfile2間の差分を得るために次のコマンドを使用 -する: > - - diff file1 file2 > outfile - -">" は 'shellredir'の値に置き換えられる。 - -"diff"の出力は通常の"ed"形式の差分でなければならない。コンテキスト差分を使用し -てはいけない。この例はVimが求めるフォーマットを示している: > - - 1a2 - > bbb - 4d4 - < 111 - 7c7 - < GGG - --- - > ggg - -項目"1a2" が 行"bbb"を追加する。 -項目"4d4" が 行"111"を削除する。 -項目"7c7" が 行"GGG"を 行"ggg" で置き換える。 - -'diffexpr'が空でなければ、差分ファイルを述べた形式で取得するためにそれを評価実 -行する。これらの変数がファイル名として設定される: - - v:fname_in 基準となるファイル - v:fname_new 同ファイルの新バージョン - v:fname_out 結果を出力する差分ファイル - -その上、'diffexpr' は 'diffopt'オプションの"icase" と "iwhite"についても考慮す -るべきだろう。'diffexpr'は'lines'と'columns'の値を変更できません。 - -例 (これは'diffexpr'が空の時とほぼ同じように働く): > - - set diffexpr=MyDiff() - function MyDiff() - let opt = "" - if &diffopt =~ "icase" - let opt = opt . "-i " - endif - if &diffopt =~ "iwhite" - let opt = opt . "-b " - endif - silent execute "!diff -a --binary" . opt . v:fname_in . " " . v:fname_new . - \ " > " . v:fname_out - endfunction - -引数の"-a"は強制的にテキストファイルとして比較するために使われる。バイナリでの -比較は使いにくい。引数の"--binary"はファイルをバイナリモードで読み込むために使 -われる。DOSでCTRL-Zをテキストの終わりとしないためである。 - - *E810* *E97* -Vimは差分の出力結果が妥当であるか検証する。妥当でない場合、エラーメッセージを -得るだろう。起こりうるエラーは: -- プログラム"diff"を実行できなかった。 -- プログラム"diff"が通常の"ed"スタイルの差分を出力しなかった(上記参照)。 -- 'shell'と関連するオプションが正しく設定されていなかった。":!sort"のような - フィルタリングコマンドが正しく動作するか確認すること。 -- 'diffexpr'を使っているが動作しなかった。 -エラーメッセージがよくわからないときは'verbose'オプションを設定してより多くの -メッセージを見ることができる。 - -MS-Windows 用の Vim インストーラには diff プログラムが含まれています。もし -diff プログラムを持っていない場合はどこかから diff.exe をダウンロードしてくだ -さい。例えば次の場所から入手できます。 -http://gnuwin32.sourceforge.net/packages/diffutils.htm. - - -パッチを使用する *diff-patchexpr* - -'patchexpr'オプションは、標準的な"patch"プログラム以外の何かを利用する場合に設 -定する。 - -'patchexpr'が空ならば、Vimは"patch"を次のように呼び出す: > - - patch -o outfile origfile < patchfile - -これはほとんどのバージョンの"patch"で正しく働くだろう。行中間のCRが、改行記号と -して解釈され問題を起こすことはあるかもしれない。 - -デフォルトが正しく働かないのならば、同様の働きをする式を'patchexpr'に設定す -る。これらの変数がファイル名として設定される。 - - v:fname_in 基準となるファイル - v:fname_diff パッチファイル - v:fname_out パッチ適用結果を出力するファイル - -例 (これは'patchexpr'を空にしたのと同じ働きをする): > - - set patchexpr=MyPatch() - function MyPatch() - :call system("patch -o " . v:fname_out . " " . v:fname_in . - \ " < " . v:fname_diff) - endfunction - -利用する"patch"プログラムが望んでいない副作用をしていないことを確認する必要が -ある。例えば消されるべき付加的なファイルが生成されていないか用心する必要があ -る。ファイルにパッチをあてる以上のことは何もすべきではない。 - Vimは'patchexpr'を実行する前に"/tmp"か他の一時ディレクトリへ現在のディレク -トリを移動する。これにはカレントディレクトリの別のファイルへ偶然にパッチがあ -たってしまうのを避ける狙いがある。Vimはv:fname_inで始まり".rej" や ".orig"で終 -わる名前のファイルを消すこともする。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/digraph.jax b/runtime.old/doc/digraph.jax deleted file mode 100644 index be91418b0..000000000 --- a/runtime.old/doc/digraph.jax +++ /dev/null @@ -1,1482 +0,0 @@ -*digraph.txt* For Vim バージョン 7.3. Last change: 2011 Jan 15 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -*注意: DIGRAPHS、DIGRAPHを日本語に置き換えること(北条)* - -Digraphs *digraph* *digraphs* *Digraphs* - -DIGRAPHSは、通常のキーボードから普通に入力できないキャラクタを入力するために -使われる。これらは多くの場合、印字可能な非 ASCII キャラクタである。DIGRAPHSは、 -CTRL-Vと共に入力される10進表記よりも覚えやすい(|i_CTRL-V|を参照せよ)。 - -ユーザーマニュアルの|24.9|に簡単な説明があります。 -代わりに'keymap'オプションを使えます。 - -1. DIGRAPHSを定義する |digraphs-define| -2. DIGRAPHSを使う |digraphs-use| -3. 標準のDIGRAPHS |digraphs-default| - -{Vi はこれらのコマンドを持たない} - -============================================================================== -1. DIGRAPHSを定義する *digraphs-define* - - *:dig* *:digraphs* -:dig[raphs] 現在定義されているDIGRAPHSを表示する。 - *E104* *E39* -:dig[raphs] {char1}{char2} {number} ... - DIGRAPH{char1}{char2}をリストに追加する。{number}は - そのキャラクタを表す10進表記。通常、文字はユニコードで - ある。|digraph-encoding| を参照。 - 例: > - :digr e: 235 a: 228 -< DIGRAPHの定義をを無効にするには最初の文字に - '_'(underscore)を指定します。それは特別な意味を持ちま - す。 - -Vimは普通|+digraphs|特性を持ってコンパイルされる。この特性が無効である場合、 -":digraph"コマンドはエラーメッセージを表示する。 - -":digraphs"の出力例: > - TH Þ 222 ss ß 223 a! à 224 a' á 225 a> â 226 a? ã 227 a: ä 228 - -各欄の最初の2つのキャラクタは、そのDIGRAPHを入力するために打たねばならない -キャラクタである。 - -各欄の中央は、結果として表示されるキャラクタである。この表は、DIGRAPHSをサポー -トしていないシステム上で閲覧した場合、また、このファイルをプリントアウトしたと -きには乱れる可能性がある。 - -10進数はそのキャラクタのASCIIコードである。 - - *digraph-encoding* -10進数の数字は通常、その文字のユニコード番号である。Note その数字の意味は -'encoding' が変わっても変わらない。必要ならば、その文字がユニコードから -'encoding' へと変換される。そのためには変換が有効になっていなければならない。 -そうでないと処理が失敗する。NUL 文字は "10" と表示される。これは、内部的に NUL -文字は NL で表現されているからである。ファイルに書き込むときに NUL 文字に変換 -される。 - -Vim が |+multi_byte| 機能なしでコンパイルされている場合は、その文字を -'encoding' と同じエンコーディングで指定しなければならない。次のようにするとよ -いだろう: > - - if has("multi_byte") - digraph oe 339 - elseif &encoding == "iso-8859-15" - digraph oe 189 - endif - -これは、ユニコードで番号339、latin9 (iso-8859-15) で番号189の文字に対して -DIGRAPH "oe" を定義している。 - -============================================================================== -2. DIGRAPHSを使う *digraphs-use* - -DIGRAPHSの入力には2つの方法がある: *i_digraph* - CTRL-K {char1} {char2} または - {char1} <BS> {char2} -最初のものは常に使える; 2番目のものは'digraph'オプションが設定されているとき -のみ使える。 - -{char1}{char2}によるDIGRAPHが存在しない場合、Vimは{char2}{char1}による -DIGRAPHを検索する。これは、どちらのキャラクタが先か思い出せない場合に役立つ。 - -CTRL-K {char1}と入力したとき、{char1}がスペシャルキーであれば、Vimはスペシャ -ルキーに対するコードを入力する。これはDIGRAPHではない。 - -一旦DIGRAPHを入力してしまえば、Vimはそのキャラクタを、ファイル上でも画面上で -も1キャラクタぶんを占める、普通のキャラクタとして取り扱う。例えば: > - 'B' <BS> 'B' will enter the broken '|' character (166) - 'a' <BS> '>' will enter an 'a' with a circumflex (226) - CTRL-K '-' '-' will enter a soft hyphen (173) - -標準のDIGRAPHは、":digraphs"コマンドで一覧できる。いくつかの特徴的なシステムに -従って、以下の|digraph-table|に一覧してある。 - -CTRL-Kについて、ひとつの汎用的なDIGRAPHがある: CTRL-K <Space> {char}で、{char} -の最高位のビットを立てて入力する。これはメタキャラクタの入力に使える。 - -<Esc>キャラクタは、DIGRAPHの一部になることはできない。<Esc>を押すと、Vimは -DIGRAPHの入力を止め、DIGRAPHを使用していないときと同様に、挿入モード、あるい -はコマンドラインモードを終了する。meta-ESC (CSI) を入力するのに CTRL-V 155 を -使ってください。 - -'e'とタイプすべきところを'a'と間違ってしまったときには、'a' <BS> 'e'と打つだ -ろう。しかし、それはDIGARAPHであるので、望んだものは得られない。これを正しく -するためには、<BS> eをもう一度打ち込む必要がある。これを避けるためには、 -'digraph'オプションを設定せず、DIGRAPHの入力にCTRL-Kを使う。 - -値128以上のキャラクタを持つキャラクタセットにおいて、Vimの使用は問題を生じる。 -例えば: 挿入モードでue(u-umlaut)を入力した際、エディタは\334を返す。挿入モード -を抜ければ、全て正常になる。fmtは整形中のテキストから128以上の値を持つ全てのキャ -ラクタを取り除くことに注意せよ。いくつかのUnixシステムにおいては、LC_CTYPE環境 -変数を定義する必要があるということである。cshを使っているならば、.cshrcに次の -1行を加える: > - setenv LC_CTYPE iso_8859_1 - -============================================================================== -3. 標準のDIGRAPHS *digraphs-default* - -Vimには標準のDIGRAPHキャラクタがある。":digraphs"の出力と見比べてください。 - -ほとんどのシステムでVimは同じDIGRAPHSを使います。それはUnicodeかISO-8859-1文 -字セットで使えます。デフォルトのDIGRAPHSの出典はRFC1345です。覚えやすいよう -に2番目の文字は標準的な意味を持っています。 - - char name char meaning ~ - Exclamation mark ! Grave - Apostrophe ' Acute accent - Greater-Than sign > Circumflex accent - Question mark ? Tilde - Hyphen-Minus - Macron - Left parenthesis ( Breve - Full stop . Dot above - Colon : Diaeresis - Comma , Cedilla - Underline _ Underline - Solidus / Stroke - Quotation mark " Double acute accent - Semicolon ; Ogonek - Less-Than sign < Caron - Zero 0 Ring above - Two 2 Hook - Nine 9 Horn - - Equals = Cyrillic - Asterisk * Greek - Percent sign % Greek/Cyrillic special - Plus + smalls: Arabic, capitals: Hebrew - Three 3 some Latin/Greek/Cyrillic letters - Four 4 Bopomofo - Five 5 Hiragana - Six 6 Katakana - -例: a: is ä and o: is ö - -これらはRFC1345における1バイト文字用のものです。他は":digraphs"の出力を見て -ください。255よりも大きい値の文字はVimが|+multi_byte|付きでコンパイルされた -ときのみ有効です。 - -ユーロ - -例外: RFC1345 はユーロ記号を定めていない。Vim は DIGRAPH =e をユーロ記号にあて -ている。latin1 では DIGRAPH Cu が通貨記号になっていて、latin9 (iso-8859-15) で -は DIGRAPH =e がユーロ記号になっている。どちらでもその文字は164, 0xa4 である。 -zsh との互換性のために、Eu でもユーロ記号になる。 - - *digraph-table* -char digraph hex dec official name ~ -^@ NU 0x00 0 NULL (NUL) -^A SH 0x01 1 START OF HEADING (SOH) -^B SX 0x02 2 START OF TEXT (STX) -^C EX 0x03 3 END OF TEXT (ETX) -^D ET 0x04 4 END OF TRANSMISSION (EOT) -^E EQ 0x05 5 ENQUIRY (ENQ) -^F AK 0x06 6 ACKNOWLEDGE (ACK) -^G BL 0x07 7 BELL (BEL) -^H BS 0x08 8 BACKSPACE (BS) -^I HT 0x09 9 CHARACTER TABULATION (HT) -^@ LF 0x0a 10 LINE FEED (LF) -^K VT 0x0b 11 LINE TABULATION (VT) -^L FF 0x0c 12 FORM FEED (FF) -^M CR 0x0d 13 CARRIAGE RETURN (CR) -^N SO 0x0e 14 SHIFT OUT (SO) -^O SI 0x0f 15 SHIFT IN (SI) -^P DL 0x10 16 DATALINK ESCAPE (DLE) -^Q D1 0x11 17 DEVICE CONTROL ONE (DC1) -^R D2 0x12 18 DEVICE CONTROL TWO (DC2) -^S D3 0x13 19 DEVICE CONTROL THREE (DC3) -^T D4 0x14 20 DEVICE CONTROL FOUR (DC4) -^U NK 0x15 21 NEGATIVE ACKNOWLEDGE (NAK) -^V SY 0x16 22 SYNCHRONOUS IDLE (SYN) -^W EB 0x17 23 END OF TRANSMISSION BLOCK (ETB) -^X CN 0x18 24 CANCEL (CAN) -^Y EM 0x19 25 END OF MEDIUM (EM) -^Z SB 0x1a 26 SUBSTITUTE (SUB) -^[ EC 0x1b 27 ESCAPE (ESC) -^\ FS 0x1c 28 FILE SEPARATOR (IS4) -^] GS 0x1d 29 GROUP SEPARATOR (IS3) -^^ RS 0x1e 30 RECORD SEPARATOR (IS2) -^_ US 0x1f 31 UNIT SEPARATOR (IS1) - SP 0x20 32 SPACE -# Nb 0x23 35 NUMBER SIGN -$ DO 0x24 36 DOLLAR SIGN -@ At 0x40 64 COMMERCIAL AT -[ <( 0x5b 91 LEFT SQUARE BRACKET -\ // 0x5c 92 REVERSE SOLIDUS -] )> 0x5d 93 RIGHT SQUARE BRACKET -^ '> 0x5e 94 CIRCUMFLEX ACCENT -` '! 0x60 96 GRAVE ACCENT -{ (! 0x7b 123 LEFT CURLY BRACKET -| !! 0x7c 124 VERTICAL LINE -} !) 0x7d 125 RIGHT CURLY BRACKET -~ '? 0x7e 126 TILDE -^? DT 0x7f 127 DELETE (DEL) -~@ PA 0x80 128 PADDING CHARACTER (PAD) -~A HO 0x81 129 HIGH OCTET PRESET (HOP) -~B BH 0x82 130 BREAK PERMITTED HERE (BPH) -~C NH 0x83 131 NO BREAK HERE (NBH) -~D IN 0x84 132 INDEX (IND) -~E NL 0x85 133 NEXT LINE (NEL) -~F SA 0x86 134 START OF SELECTED AREA (SSA) -~G ES 0x87 135 END OF SELECTED AREA (ESA) -~H HS 0x88 136 CHARACTER TABULATION SET (HTS) -~I HJ 0x89 137 CHARACTER TABULATION WITH JUSTIFICATION (HTJ) -~J VS 0x8a 138 LINE TABULATION SET (VTS) -~K PD 0x8b 139 PARTIAL LINE FORWARD (PLD) -~L PU 0x8c 140 PARTIAL LINE BACKWARD (PLU) -~M RI 0x8d 141 REVERSE LINE FEED (RI) -~N S2 0x8e 142 SINGLE-SHIFT TWO (SS2) -~O S3 0x8f 143 SINGLE-SHIFT THREE (SS3) -~P DC 0x90 144 DEVICE CONTROL STRING (DCS) -~Q P1 0x91 145 PRIVATE USE ONE (PU1) -~R P2 0x92 146 PRIVATE USE TWO (PU2) -~S TS 0x93 147 SET TRANSMIT STATE (STS) -~T CC 0x94 148 CANCEL CHARACTER (CCH) -~U MW 0x95 149 MESSAGE WAITING (MW) -~V SG 0x96 150 START OF GUARDED AREA (SPA) -~W EG 0x97 151 END OF GUARDED AREA (EPA) -~X SS 0x98 152 START OF STRING (SOS) -~Y GC 0x99 153 SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) -~Z SC 0x9a 154 SINGLE CHARACTER INTRODUCER (SCI) -~[ CI 0x9b 155 CONTROL SEQUENCE INTRODUCER (CSI) -~\ ST 0x9c 156 STRING TERMINATOR (ST) -~] OC 0x9d 157 OPERATING SYSTEM COMMAND (OSC) -~^ PM 0x9e 158 PRIVACY MESSAGE (PM) -~_ AC 0x9f 159 APPLICATION PROGRAM COMMAND (APC) -| NS 0xa0 160 NO-BREAK SPACE -¡ !I 0xa1 161 INVERTED EXCLAMATION MARK -¢ Ct 0xa2 162 CENT SIGN -£ Pd 0xa3 163 POUND SIGN -¤ Cu 0xa4 164 CURRENCY SIGN -¥ Ye 0xa5 165 YEN SIGN -¦ BB 0xa6 166 BROKEN BAR -§ SE 0xa7 167 SECTION SIGN -¨ ': 0xa8 168 DIAERESIS -© Co 0xa9 169 COPYRIGHT SIGN -ª -a 0xaa 170 FEMININE ORDINAL INDICATOR -« << 0xab 171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -¬ NO 0xac 172 NOT SIGN -­ -- 0xad 173 SOFT HYPHEN -® Rg 0xae 174 REGISTERED SIGN -¯ 'm 0xaf 175 MACRON -° DG 0xb0 176 DEGREE SIGN -± +- 0xb1 177 PLUS-MINUS SIGN -² 2S 0xb2 178 SUPERSCRIPT TWO -³ 3S 0xb3 179 SUPERSCRIPT THREE -´ '' 0xb4 180 ACUTE ACCENT -µ My 0xb5 181 MICRO SIGN -¶ PI 0xb6 182 PILCROW SIGN -· .M 0xb7 183 MIDDLE DOT -¸ ', 0xb8 184 CEDILLA -¹ 1S 0xb9 185 SUPERSCRIPT ONE -º -o 0xba 186 MASCULINE ORDINAL INDICATOR -» >> 0xbb 187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -¼ 14 0xbc 188 VULGAR FRACTION ONE QUARTER -½ 12 0xbd 189 VULGAR FRACTION ONE HALF -¾ 34 0xbe 190 VULGAR FRACTION THREE QUARTERS -¿ ?I 0xbf 191 INVERTED QUESTION MARK -À A! 0xc0 192 LATIN CAPITAL LETTER A WITH GRAVE -Á A' 0xc1 193 LATIN CAPITAL LETTER A WITH ACUTE - A> 0xc2 194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX -à A? 0xc3 195 LATIN CAPITAL LETTER A WITH TILDE -Ä A: 0xc4 196 LATIN CAPITAL LETTER A WITH DIAERESIS -Å AA 0xc5 197 LATIN CAPITAL LETTER A WITH RING ABOVE -Æ AE 0xc6 198 LATIN CAPITAL LETTER AE -Ç C, 0xc7 199 LATIN CAPITAL LETTER C WITH CEDILLA -È E! 0xc8 200 LATIN CAPITAL LETTER E WITH GRAVE -É E' 0xc9 201 LATIN CAPITAL LETTER E WITH ACUTE -Ê E> 0xca 202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX -Ë E: 0xcb 203 LATIN CAPITAL LETTER E WITH DIAERESIS -Ì I! 0xcc 204 LATIN CAPITAL LETTER I WITH GRAVE -Í I' 0xcd 205 LATIN CAPITAL LETTER I WITH ACUTE -Î I> 0xce 206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX -Ï I: 0xcf 207 LATIN CAPITAL LETTER I WITH DIAERESIS -Ð D- 0xd0 208 LATIN CAPITAL LETTER ETH (Icelandic) -Ñ N? 0xd1 209 LATIN CAPITAL LETTER N WITH TILDE -Ò O! 0xd2 210 LATIN CAPITAL LETTER O WITH GRAVE -Ó O' 0xd3 211 LATIN CAPITAL LETTER O WITH ACUTE -Ô O> 0xd4 212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX -Õ O? 0xd5 213 LATIN CAPITAL LETTER O WITH TILDE -Ö O: 0xd6 214 LATIN CAPITAL LETTER O WITH DIAERESIS -× *X 0xd7 215 MULTIPLICATION SIGN -Ø O/ 0xd8 216 LATIN CAPITAL LETTER O WITH STROKE -Ù U! 0xd9 217 LATIN CAPITAL LETTER U WITH GRAVE -Ú U' 0xda 218 LATIN CAPITAL LETTER U WITH ACUTE -Û U> 0xdb 219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX -Ü U: 0xdc 220 LATIN CAPITAL LETTER U WITH DIAERESIS -Ý Y' 0xdd 221 LATIN CAPITAL LETTER Y WITH ACUTE -Þ TH 0xde 222 LATIN CAPITAL LETTER THORN (Icelandic) -ß ss 0xdf 223 LATIN SMALL LETTER SHARP S (German) -à a! 0xe0 224 LATIN SMALL LETTER A WITH GRAVE -á a' 0xe1 225 LATIN SMALL LETTER A WITH ACUTE -â a> 0xe2 226 LATIN SMALL LETTER A WITH CIRCUMFLEX -ã a? 0xe3 227 LATIN SMALL LETTER A WITH TILDE -ä a: 0xe4 228 LATIN SMALL LETTER A WITH DIAERESIS -å aa 0xe5 229 LATIN SMALL LETTER A WITH RING ABOVE -æ ae 0xe6 230 LATIN SMALL LETTER AE -ç c, 0xe7 231 LATIN SMALL LETTER C WITH CEDILLA -è e! 0xe8 232 LATIN SMALL LETTER E WITH GRAVE -é e' 0xe9 233 LATIN SMALL LETTER E WITH ACUTE -ê e> 0xea 234 LATIN SMALL LETTER E WITH CIRCUMFLEX -ë e: 0xeb 235 LATIN SMALL LETTER E WITH DIAERESIS -ì i! 0xec 236 LATIN SMALL LETTER I WITH GRAVE -í i' 0xed 237 LATIN SMALL LETTER I WITH ACUTE -î i> 0xee 238 LATIN SMALL LETTER I WITH CIRCUMFLEX -ï i: 0xef 239 LATIN SMALL LETTER I WITH DIAERESIS -ð d- 0xf0 240 LATIN SMALL LETTER ETH (Icelandic) -ñ n? 0xf1 241 LATIN SMALL LETTER N WITH TILDE -ò o! 0xf2 242 LATIN SMALL LETTER O WITH GRAVE -ó o' 0xf3 243 LATIN SMALL LETTER O WITH ACUTE -ô o> 0xf4 244 LATIN SMALL LETTER O WITH CIRCUMFLEX -õ o? 0xf5 245 LATIN SMALL LETTER O WITH TILDE -ö o: 0xf6 246 LATIN SMALL LETTER O WITH DIAERESIS -÷ -: 0xf7 247 DIVISION SIGN -ø o/ 0xf8 248 LATIN SMALL LETTER O WITH STROKE -ù u! 0xf9 249 LATIN SMALL LETTER U WITH GRAVE -ú u' 0xfa 250 LATIN SMALL LETTER U WITH ACUTE -û u> 0xfb 251 LATIN SMALL LETTER U WITH CIRCUMFLEX -ü u: 0xfc 252 LATIN SMALL LETTER U WITH DIAERESIS -ý y' 0xfd 253 LATIN SMALL LETTER Y WITH ACUTE -þ th 0xfe 254 LATIN SMALL LETTER THORN (Icelandic) -ÿ y: 0xff 255 LATIN SMALL LETTER Y WITH DIAERESIS - -Vim がマルチバイト (|multibyte|) サポート付きでコンパイルされていて、あなたが -マルチバイトの 'encoding' を使っているなら、さらに以下の DIGRAPH を使用できま -す: - - *digraph-table-mbyte* -char digraph hex dec official name ~ -Ā A- 0100 0256 LATIN CAPITAL LETTER A WITH MACRON -ā a- 0101 0257 LATIN SMALL LETTER A WITH MACRON -Ă A( 0102 0258 LATIN CAPITAL LETTER A WITH BREVE -ă a( 0103 0259 LATIN SMALL LETTER A WITH BREVE -Ą A; 0104 0260 LATIN CAPITAL LETTER A WITH OGONEK -ą a; 0105 0261 LATIN SMALL LETTER A WITH OGONEK -Ć C' 0106 0262 LATIN CAPITAL LETTER C WITH ACUTE -ć c' 0107 0263 LATIN SMALL LETTER C WITH ACUTE -Ĉ C> 0108 0264 LATIN CAPITAL LETTER C WITH CIRCUMFLEX -ĉ c> 0109 0265 LATIN SMALL LETTER C WITH CIRCUMFLEX -Ċ C. 010A 0266 LATIN CAPITAL LETTER C WITH DOT ABOVE -ċ c. 010B 0267 LATIN SMALL LETTER C WITH DOT ABOVE -Č C< 010C 0268 LATIN CAPITAL LETTER C WITH CARON -č c< 010D 0269 LATIN SMALL LETTER C WITH CARON -Ď D< 010E 0270 LATIN CAPITAL LETTER D WITH CARON -ď d< 010F 0271 LATIN SMALL LETTER D WITH CARON -Đ D/ 0110 0272 LATIN CAPITAL LETTER D WITH STROKE -đ d/ 0111 0273 LATIN SMALL LETTER D WITH STROKE -Ē E- 0112 0274 LATIN CAPITAL LETTER E WITH MACRON -ē e- 0113 0275 LATIN SMALL LETTER E WITH MACRON -Ĕ E( 0114 0276 LATIN CAPITAL LETTER E WITH BREVE -ĕ e( 0115 0277 LATIN SMALL LETTER E WITH BREVE -Ė E. 0116 0278 LATIN CAPITAL LETTER E WITH DOT ABOVE -ė e. 0117 0279 LATIN SMALL LETTER E WITH DOT ABOVE -Ę E; 0118 0280 LATIN CAPITAL LETTER E WITH OGONEK -ę e; 0119 0281 LATIN SMALL LETTER E WITH OGONEK -Ě E< 011A 0282 LATIN CAPITAL LETTER E WITH CARON -ě e< 011B 0283 LATIN SMALL LETTER E WITH CARON -Ĝ G> 011C 0284 LATIN CAPITAL LETTER G WITH CIRCUMFLEX -ĝ g> 011D 0285 LATIN SMALL LETTER G WITH CIRCUMFLEX -Ğ G( 011E 0286 LATIN CAPITAL LETTER G WITH BREVE -ğ g( 011F 0287 LATIN SMALL LETTER G WITH BREVE -Ġ G. 0120 0288 LATIN CAPITAL LETTER G WITH DOT ABOVE -ġ g. 0121 0289 LATIN SMALL LETTER G WITH DOT ABOVE -Ģ G, 0122 0290 LATIN CAPITAL LETTER G WITH CEDILLA -ģ g, 0123 0291 LATIN SMALL LETTER G WITH CEDILLA -Ĥ H> 0124 0292 LATIN CAPITAL LETTER H WITH CIRCUMFLEX -ĥ h> 0125 0293 LATIN SMALL LETTER H WITH CIRCUMFLEX -Ħ H/ 0126 0294 LATIN CAPITAL LETTER H WITH STROKE -ħ h/ 0127 0295 LATIN SMALL LETTER H WITH STROKE -Ĩ I? 0128 0296 LATIN CAPITAL LETTER I WITH TILDE -ĩ i? 0129 0297 LATIN SMALL LETTER I WITH TILDE -Ī I- 012A 0298 LATIN CAPITAL LETTER I WITH MACRON -ī i- 012B 0299 LATIN SMALL LETTER I WITH MACRON -Ĭ I( 012C 0300 LATIN CAPITAL LETTER I WITH BREVE -ĭ i( 012D 0301 LATIN SMALL LETTER I WITH BREVE -Į I; 012E 0302 LATIN CAPITAL LETTER I WITH OGONEK -į i; 012F 0303 LATIN SMALL LETTER I WITH OGONEK -İ I. 0130 0304 LATIN CAPITAL LETTER I WITH DOT ABOVE -ı i. 0131 0305 LATIN SMALL LETTER DOTLESS I -IJ IJ 0132 0306 LATIN CAPITAL LIGATURE IJ -ij ij 0133 0307 LATIN SMALL LIGATURE IJ -Ĵ J> 0134 0308 LATIN CAPITAL LETTER J WITH CIRCUMFLEX -ĵ j> 0135 0309 LATIN SMALL LETTER J WITH CIRCUMFLEX -Ķ K, 0136 0310 LATIN CAPITAL LETTER K WITH CEDILLA -ķ k, 0137 0311 LATIN SMALL LETTER K WITH CEDILLA -ĸ kk 0138 0312 LATIN SMALL LETTER KRA -Ĺ L' 0139 0313 LATIN CAPITAL LETTER L WITH ACUTE -ĺ l' 013A 0314 LATIN SMALL LETTER L WITH ACUTE -Ļ L, 013B 0315 LATIN CAPITAL LETTER L WITH CEDILLA -ļ l, 013C 0316 LATIN SMALL LETTER L WITH CEDILLA -Ľ L< 013D 0317 LATIN CAPITAL LETTER L WITH CARON -ľ l< 013E 0318 LATIN SMALL LETTER L WITH CARON -Ŀ L. 013F 0319 LATIN CAPITAL LETTER L WITH MIDDLE DOT -ŀ l. 0140 0320 LATIN SMALL LETTER L WITH MIDDLE DOT -Ł L/ 0141 0321 LATIN CAPITAL LETTER L WITH STROKE -ł l/ 0142 0322 LATIN SMALL LETTER L WITH STROKE -Ń N' 0143 0323 LATIN CAPITAL LETTER N WITH ACUTE ` -ń n' 0144 0324 LATIN SMALL LETTER N WITH ACUTE ` -Ņ N, 0145 0325 LATIN CAPITAL LETTER N WITH CEDILLA ` -ņ n, 0146 0326 LATIN SMALL LETTER N WITH CEDILLA ` -Ň N< 0147 0327 LATIN CAPITAL LETTER N WITH CARON ` -ň n< 0148 0328 LATIN SMALL LETTER N WITH CARON ` -ʼn 'n 0149 0329 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE ` -Ŋ NG 014A 0330 LATIN CAPITAL LETTER ENG -ŋ ng 014B 0331 LATIN SMALL LETTER ENG -Ō O- 014C 0332 LATIN CAPITAL LETTER O WITH MACRON -ō o- 014D 0333 LATIN SMALL LETTER O WITH MACRON -Ŏ O( 014E 0334 LATIN CAPITAL LETTER O WITH BREVE -ŏ o( 014F 0335 LATIN SMALL LETTER O WITH BREVE -Ő O" 0150 0336 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -ő o" 0151 0337 LATIN SMALL LETTER O WITH DOUBLE ACUTE -Œ OE 0152 0338 LATIN CAPITAL LIGATURE OE -œ oe 0153 0339 LATIN SMALL LIGATURE OE -Ŕ R' 0154 0340 LATIN CAPITAL LETTER R WITH ACUTE -ŕ r' 0155 0341 LATIN SMALL LETTER R WITH ACUTE -Ŗ R, 0156 0342 LATIN CAPITAL LETTER R WITH CEDILLA -ŗ r, 0157 0343 LATIN SMALL LETTER R WITH CEDILLA -Ř R< 0158 0344 LATIN CAPITAL LETTER R WITH CARON -ř r< 0159 0345 LATIN SMALL LETTER R WITH CARON -Ś S' 015A 0346 LATIN CAPITAL LETTER S WITH ACUTE -ś s' 015B 0347 LATIN SMALL LETTER S WITH ACUTE -Ŝ S> 015C 0348 LATIN CAPITAL LETTER S WITH CIRCUMFLEX -ŝ s> 015D 0349 LATIN SMALL LETTER S WITH CIRCUMFLEX -Ş S, 015E 0350 LATIN CAPITAL LETTER S WITH CEDILLA -ş s, 015F 0351 LATIN SMALL LETTER S WITH CEDILLA -Š S< 0160 0352 LATIN CAPITAL LETTER S WITH CARON -š s< 0161 0353 LATIN SMALL LETTER S WITH CARON -Ţ T, 0162 0354 LATIN CAPITAL LETTER T WITH CEDILLA -ţ t, 0163 0355 LATIN SMALL LETTER T WITH CEDILLA -Ť T< 0164 0356 LATIN CAPITAL LETTER T WITH CARON -ť t< 0165 0357 LATIN SMALL LETTER T WITH CARON -Ŧ T/ 0166 0358 LATIN CAPITAL LETTER T WITH STROKE -ŧ t/ 0167 0359 LATIN SMALL LETTER T WITH STROKE -Ũ U? 0168 0360 LATIN CAPITAL LETTER U WITH TILDE -ũ u? 0169 0361 LATIN SMALL LETTER U WITH TILDE -Ū U- 016A 0362 LATIN CAPITAL LETTER U WITH MACRON -ū u- 016B 0363 LATIN SMALL LETTER U WITH MACRON -Ŭ U( 016C 0364 LATIN CAPITAL LETTER U WITH BREVE -ŭ u( 016D 0365 LATIN SMALL LETTER U WITH BREVE -Ů U0 016E 0366 LATIN CAPITAL LETTER U WITH RING ABOVE -ů u0 016F 0367 LATIN SMALL LETTER U WITH RING ABOVE -Ű U" 0170 0368 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -ű u" 0171 0369 LATIN SMALL LETTER U WITH DOUBLE ACUTE -Ų U; 0172 0370 LATIN CAPITAL LETTER U WITH OGONEK -ų u; 0173 0371 LATIN SMALL LETTER U WITH OGONEK -Ŵ W> 0174 0372 LATIN CAPITAL LETTER W WITH CIRCUMFLEX -ŵ w> 0175 0373 LATIN SMALL LETTER W WITH CIRCUMFLEX -Ŷ Y> 0176 0374 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -ŷ y> 0177 0375 LATIN SMALL LETTER Y WITH CIRCUMFLEX -Ÿ Y: 0178 0376 LATIN CAPITAL LETTER Y WITH DIAERESIS -Ź Z' 0179 0377 LATIN CAPITAL LETTER Z WITH ACUTE -ź z' 017A 0378 LATIN SMALL LETTER Z WITH ACUTE -Ż Z. 017B 0379 LATIN CAPITAL LETTER Z WITH DOT ABOVE -ż z. 017C 0380 LATIN SMALL LETTER Z WITH DOT ABOVE -Ž Z< 017D 0381 LATIN CAPITAL LETTER Z WITH CARON -ž z< 017E 0382 LATIN SMALL LETTER Z WITH CARON -Ơ O9 01A0 0416 LATIN CAPITAL LETTER O WITH HORN -ơ o9 01A1 0417 LATIN SMALL LETTER O WITH HORN -Ƣ OI 01A2 0418 LATIN CAPITAL LETTER OI -ƣ oi 01A3 0419 LATIN SMALL LETTER OI -Ʀ yr 01A6 0422 LATIN LETTER YR -Ư U9 01AF 0431 LATIN CAPITAL LETTER U WITH HORN -ư u9 01B0 0432 LATIN SMALL LETTER U WITH HORN -Ƶ Z/ 01B5 0437 LATIN CAPITAL LETTER Z WITH STROKE -ƶ z/ 01B6 0438 LATIN SMALL LETTER Z WITH STROKE -Ʒ ED 01B7 0439 LATIN CAPITAL LETTER EZH -Ǎ A< 01CD 0461 LATIN CAPITAL LETTER A WITH CARON -ǎ a< 01CE 0462 LATIN SMALL LETTER A WITH CARON -Ǐ I< 01CF 0463 LATIN CAPITAL LETTER I WITH CARON -ǐ i< 01D0 0464 LATIN SMALL LETTER I WITH CARON -Ǒ O< 01D1 0465 LATIN CAPITAL LETTER O WITH CARON -ǒ o< 01D2 0466 LATIN SMALL LETTER O WITH CARON -Ǔ U< 01D3 0467 LATIN CAPITAL LETTER U WITH CARON -ǔ u< 01D4 0468 LATIN SMALL LETTER U WITH CARON -Ǟ A1 01DE 0478 LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -ǟ a1 01DF 0479 LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -Ǡ A7 01E0 0480 LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON -ǡ a7 01E1 0481 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON -Ǣ A3 01E2 0482 LATIN CAPITAL LETTER AE WITH MACRON -ǣ a3 01E3 0483 LATIN SMALL LETTER AE WITH MACRON -Ǥ G/ 01E4 0484 LATIN CAPITAL LETTER G WITH STROKE -ǥ g/ 01E5 0485 LATIN SMALL LETTER G WITH STROKE -Ǧ G< 01E6 0486 LATIN CAPITAL LETTER G WITH CARON -ǧ g< 01E7 0487 LATIN SMALL LETTER G WITH CARON -Ǩ K< 01E8 0488 LATIN CAPITAL LETTER K WITH CARON -ǩ k< 01E9 0489 LATIN SMALL LETTER K WITH CARON -Ǫ O; 01EA 0490 LATIN CAPITAL LETTER O WITH OGONEK -ǫ o; 01EB 0491 LATIN SMALL LETTER O WITH OGONEK -Ǭ O1 01EC 0492 LATIN CAPITAL LETTER O WITH OGONEK AND MACRON -ǭ o1 01ED 0493 LATIN SMALL LETTER O WITH OGONEK AND MACRON -Ǯ EZ 01EE 0494 LATIN CAPITAL LETTER EZH WITH CARON -ǯ ez 01EF 0495 LATIN SMALL LETTER EZH WITH CARON -ǰ j< 01F0 0496 LATIN SMALL LETTER J WITH CARON -Ǵ G' 01F4 0500 LATIN CAPITAL LETTER G WITH ACUTE -ǵ g' 01F5 0501 LATIN SMALL LETTER G WITH ACUTE -ʿ ;S 02BF 0703 MODIFIER LETTER LEFT HALF RING -ˇ '< 02C7 0711 CARON -˘ '( 02D8 0728 BREVE -˙ '. 02D9 0729 DOT ABOVE -˚ '0 02DA 0730 RING ABOVE -˛ '; 02DB 0731 OGONEK -˝ '" 02DD 0733 DOUBLE ACUTE ACCENT -Ά A% 0386 0902 GREEK CAPITAL LETTER ALPHA WITH TONOS -Έ E% 0388 0904 GREEK CAPITAL LETTER EPSILON WITH TONOS -Ή Y% 0389 0905 GREEK CAPITAL LETTER ETA WITH TONOS -Ί I% 038A 0906 GREEK CAPITAL LETTER IOTA WITH TONOS -Ό O% 038C 0908 GREEK CAPITAL LETTER OMICRON WITH TONOS -Ύ U% 038E 0910 GREEK CAPITAL LETTER UPSILON WITH TONOS -Ώ W% 038F 0911 GREEK CAPITAL LETTER OMEGA WITH TONOS -ΐ i3 0390 0912 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -Α A* 0391 0913 GREEK CAPITAL LETTER ALPHA -Β B* 0392 0914 GREEK CAPITAL LETTER BETA -Γ G* 0393 0915 GREEK CAPITAL LETTER GAMMA -Δ D* 0394 0916 GREEK CAPITAL LETTER DELTA -Ε E* 0395 0917 GREEK CAPITAL LETTER EPSILON -Ζ Z* 0396 0918 GREEK CAPITAL LETTER ZETA -Η Y* 0397 0919 GREEK CAPITAL LETTER ETA -Θ H* 0398 0920 GREEK CAPITAL LETTER THETA -Ι I* 0399 0921 GREEK CAPITAL LETTER IOTA -Κ K* 039A 0922 GREEK CAPITAL LETTER KAPPA -Λ L* 039B 0923 GREEK CAPITAL LETTER LAMDA -Μ M* 039C 0924 GREEK CAPITAL LETTER MU -Ν N* 039D 0925 GREEK CAPITAL LETTER NU -Ξ C* 039E 0926 GREEK CAPITAL LETTER XI -Ο O* 039F 0927 GREEK CAPITAL LETTER OMICRON -Π P* 03A0 0928 GREEK CAPITAL LETTER PI -Ρ R* 03A1 0929 GREEK CAPITAL LETTER RHO -Σ S* 03A3 0931 GREEK CAPITAL LETTER SIGMA -Τ T* 03A4 0932 GREEK CAPITAL LETTER TAU -Υ U* 03A5 0933 GREEK CAPITAL LETTER UPSILON -Φ F* 03A6 0934 GREEK CAPITAL LETTER PHI -Χ X* 03A7 0935 GREEK CAPITAL LETTER CHI -Ψ Q* 03A8 0936 GREEK CAPITAL LETTER PSI -Ω W* 03A9 0937 GREEK CAPITAL LETTER OMEGA -Ϊ J* 03AA 0938 GREEK CAPITAL LETTER IOTA WITH DIALYTIKA -Ϋ V* 03AB 0939 GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA -ά a% 03AC 0940 GREEK SMALL LETTER ALPHA WITH TONOS -έ e% 03AD 0941 GREEK SMALL LETTER EPSILON WITH TONOS -ή y% 03AE 0942 GREEK SMALL LETTER ETA WITH TONOS -ί i% 03AF 0943 GREEK SMALL LETTER IOTA WITH TONOS -ΰ u3 03B0 0944 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -α a* 03B1 0945 GREEK SMALL LETTER ALPHA -β b* 03B2 0946 GREEK SMALL LETTER BETA -γ g* 03B3 0947 GREEK SMALL LETTER GAMMA -δ d* 03B4 0948 GREEK SMALL LETTER DELTA -ε e* 03B5 0949 GREEK SMALL LETTER EPSILON -ζ z* 03B6 0950 GREEK SMALL LETTER ZETA -η y* 03B7 0951 GREEK SMALL LETTER ETA -θ h* 03B8 0952 GREEK SMALL LETTER THETA -ι i* 03B9 0953 GREEK SMALL LETTER IOTA -κ k* 03BA 0954 GREEK SMALL LETTER KAPPA -λ l* 03BB 0955 GREEK SMALL LETTER LAMDA -μ m* 03BC 0956 GREEK SMALL LETTER MU -ν n* 03BD 0957 GREEK SMALL LETTER NU -ξ c* 03BE 0958 GREEK SMALL LETTER XI -ο o* 03BF 0959 GREEK SMALL LETTER OMICRON -π p* 03C0 0960 GREEK SMALL LETTER PI -ρ r* 03C1 0961 GREEK SMALL LETTER RHO -ς *s 03C2 0962 GREEK SMALL LETTER FINAL SIGMA -σ s* 03C3 0963 GREEK SMALL LETTER SIGMA -τ t* 03C4 0964 GREEK SMALL LETTER TAU -υ u* 03C5 0965 GREEK SMALL LETTER UPSILON -φ f* 03C6 0966 GREEK SMALL LETTER PHI -χ x* 03C7 0967 GREEK SMALL LETTER CHI -ψ q* 03C8 0968 GREEK SMALL LETTER PSI -ω w* 03C9 0969 GREEK SMALL LETTER OMEGA -ϊ j* 03CA 0970 GREEK SMALL LETTER IOTA WITH DIALYTIKA -ϋ v* 03CB 0971 GREEK SMALL LETTER UPSILON WITH DIALYTIKA -ό o% 03CC 0972 GREEK SMALL LETTER OMICRON WITH TONOS -ύ u% 03CD 0973 GREEK SMALL LETTER UPSILON WITH TONOS -ώ w% 03CE 0974 GREEK SMALL LETTER OMEGA WITH TONOS -Ϙ 'G 03D8 0984 GREEK LETTER ARCHAIC KOPPA -ϙ ,G 03D9 0985 GREEK SMALL LETTER ARCHAIC KOPPA -Ϛ T3 03DA 0986 GREEK LETTER STIGMA -ϛ t3 03DB 0987 GREEK SMALL LETTER STIGMA -Ϝ M3 03DC 0988 GREEK LETTER DIGAMMA -ϝ m3 03DD 0989 GREEK SMALL LETTER DIGAMMA -Ϟ K3 03DE 0990 GREEK LETTER KOPPA -ϟ k3 03DF 0991 GREEK SMALL LETTER KOPPA -Ϡ P3 03E0 0992 GREEK LETTER SAMPI -ϡ p3 03E1 0993 GREEK SMALL LETTER SAMPI -ϴ '% 03F4 1012 GREEK CAPITAL THETA SYMBOL -ϵ j3 03F5 1013 GREEK LUNATE EPSILON SYMBOL -Ё IO 0401 1025 CYRILLIC CAPITAL LETTER IO -Ђ D% 0402 1026 CYRILLIC CAPITAL LETTER DJE -Ѓ G% 0403 1027 CYRILLIC CAPITAL LETTER GJE -Є IE 0404 1028 CYRILLIC CAPITAL LETTER UKRAINIAN IE -Ѕ DS 0405 1029 CYRILLIC CAPITAL LETTER DZE -І II 0406 1030 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -Ї YI 0407 1031 CYRILLIC CAPITAL LETTER YI -Ј J% 0408 1032 CYRILLIC CAPITAL LETTER JE -Љ LJ 0409 1033 CYRILLIC CAPITAL LETTER LJE -Њ NJ 040A 1034 CYRILLIC CAPITAL LETTER NJE -Ћ Ts 040B 1035 CYRILLIC CAPITAL LETTER TSHE -Ќ KJ 040C 1036 CYRILLIC CAPITAL LETTER KJE -Ў V% 040E 1038 CYRILLIC CAPITAL LETTER SHORT U -Џ DZ 040F 1039 CYRILLIC CAPITAL LETTER DZHE -А A= 0410 1040 CYRILLIC CAPITAL LETTER A -Б B= 0411 1041 CYRILLIC CAPITAL LETTER BE -В V= 0412 1042 CYRILLIC CAPITAL LETTER VE -Г G= 0413 1043 CYRILLIC CAPITAL LETTER GHE -Д D= 0414 1044 CYRILLIC CAPITAL LETTER DE -Е E= 0415 1045 CYRILLIC CAPITAL LETTER IE -Ж Z% 0416 1046 CYRILLIC CAPITAL LETTER ZHE -З Z= 0417 1047 CYRILLIC CAPITAL LETTER ZE -И I= 0418 1048 CYRILLIC CAPITAL LETTER I -Й J= 0419 1049 CYRILLIC CAPITAL LETTER SHORT I -К K= 041A 1050 CYRILLIC CAPITAL LETTER KA -Л L= 041B 1051 CYRILLIC CAPITAL LETTER EL -М M= 041C 1052 CYRILLIC CAPITAL LETTER EM -Н N= 041D 1053 CYRILLIC CAPITAL LETTER EN -О O= 041E 1054 CYRILLIC CAPITAL LETTER O -П P= 041F 1055 CYRILLIC CAPITAL LETTER PE -Р R= 0420 1056 CYRILLIC CAPITAL LETTER ER -С S= 0421 1057 CYRILLIC CAPITAL LETTER ES -Т T= 0422 1058 CYRILLIC CAPITAL LETTER TE -У U= 0423 1059 CYRILLIC CAPITAL LETTER U -Ф F= 0424 1060 CYRILLIC CAPITAL LETTER EF -Х H= 0425 1061 CYRILLIC CAPITAL LETTER HA -Ц C= 0426 1062 CYRILLIC CAPITAL LETTER TSE -Ч C% 0427 1063 CYRILLIC CAPITAL LETTER CHE -Ш S% 0428 1064 CYRILLIC CAPITAL LETTER SHA -Щ Sc 0429 1065 CYRILLIC CAPITAL LETTER SHCHA -Ъ =" 042A 1066 CYRILLIC CAPITAL LETTER HARD SIGN -Ы Y= 042B 1067 CYRILLIC CAPITAL LETTER YERU -Ь %" 042C 1068 CYRILLIC CAPITAL LETTER SOFT SIGN -Э JE 042D 1069 CYRILLIC CAPITAL LETTER E -Ю JU 042E 1070 CYRILLIC CAPITAL LETTER YU -Я JA 042F 1071 CYRILLIC CAPITAL LETTER YA -а a= 0430 1072 CYRILLIC SMALL LETTER A -б b= 0431 1073 CYRILLIC SMALL LETTER BE -в v= 0432 1074 CYRILLIC SMALL LETTER VE -г g= 0433 1075 CYRILLIC SMALL LETTER GHE -д d= 0434 1076 CYRILLIC SMALL LETTER DE -е e= 0435 1077 CYRILLIC SMALL LETTER IE -ж z% 0436 1078 CYRILLIC SMALL LETTER ZHE -з z= 0437 1079 CYRILLIC SMALL LETTER ZE -и i= 0438 1080 CYRILLIC SMALL LETTER I -й j= 0439 1081 CYRILLIC SMALL LETTER SHORT I -к k= 043A 1082 CYRILLIC SMALL LETTER KA -л l= 043B 1083 CYRILLIC SMALL LETTER EL -м m= 043C 1084 CYRILLIC SMALL LETTER EM -н n= 043D 1085 CYRILLIC SMALL LETTER EN -о o= 043E 1086 CYRILLIC SMALL LETTER O -п p= 043F 1087 CYRILLIC SMALL LETTER PE -р r= 0440 1088 CYRILLIC SMALL LETTER ER -с s= 0441 1089 CYRILLIC SMALL LETTER ES -т t= 0442 1090 CYRILLIC SMALL LETTER TE -у u= 0443 1091 CYRILLIC SMALL LETTER U -ф f= 0444 1092 CYRILLIC SMALL LETTER EF -х h= 0445 1093 CYRILLIC SMALL LETTER HA -ц c= 0446 1094 CYRILLIC SMALL LETTER TSE -ч c% 0447 1095 CYRILLIC SMALL LETTER CHE -ш s% 0448 1096 CYRILLIC SMALL LETTER SHA -щ sc 0449 1097 CYRILLIC SMALL LETTER SHCHA -ъ =' 044A 1098 CYRILLIC SMALL LETTER HARD SIGN -ы y= 044B 1099 CYRILLIC SMALL LETTER YERU -ь %' 044C 1100 CYRILLIC SMALL LETTER SOFT SIGN -э je 044D 1101 CYRILLIC SMALL LETTER E -ю ju 044E 1102 CYRILLIC SMALL LETTER YU -я ja 044F 1103 CYRILLIC SMALL LETTER YA -ё io 0451 1105 CYRILLIC SMALL LETTER IO -ђ d% 0452 1106 CYRILLIC SMALL LETTER DJE -ѓ g% 0453 1107 CYRILLIC SMALL LETTER GJE -є ie 0454 1108 CYRILLIC SMALL LETTER UKRAINIAN IE -ѕ ds 0455 1109 CYRILLIC SMALL LETTER DZE -і ii 0456 1110 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -ї yi 0457 1111 CYRILLIC SMALL LETTER YI -ј j% 0458 1112 CYRILLIC SMALL LETTER JE -љ lj 0459 1113 CYRILLIC SMALL LETTER LJE -њ nj 045A 1114 CYRILLIC SMALL LETTER NJE -ћ ts 045B 1115 CYRILLIC SMALL LETTER TSHE -ќ kj 045C 1116 CYRILLIC SMALL LETTER KJE -ў v% 045E 1118 CYRILLIC SMALL LETTER SHORT U -џ dz 045F 1119 CYRILLIC SMALL LETTER DZHE -Ѣ Y3 0462 1122 CYRILLIC CAPITAL LETTER YAT -ѣ y3 0463 1123 CYRILLIC SMALL LETTER YAT -Ѫ O3 046A 1130 CYRILLIC CAPITAL LETTER BIG YUS -ѫ o3 046B 1131 CYRILLIC SMALL LETTER BIG YUS -Ѳ F3 0472 1138 CYRILLIC CAPITAL LETTER FITA -ѳ f3 0473 1139 CYRILLIC SMALL LETTER FITA -Ѵ V3 0474 1140 CYRILLIC CAPITAL LETTER IZHITSA -ѵ v3 0475 1141 CYRILLIC SMALL LETTER IZHITSA -Ҁ C3 0480 1152 CYRILLIC CAPITAL LETTER KOPPA -ҁ c3 0481 1153 CYRILLIC SMALL LETTER KOPPA -Ґ G3 0490 1168 CYRILLIC CAPITAL LETTER GHE WITH UPTURN -ґ g3 0491 1169 CYRILLIC SMALL LETTER GHE WITH UPTURN -א A+ 05D0 1488 HEBREW LETTER ALEF -ב B+ 05D1 1489 HEBREW LETTER BET -ג G+ 05D2 1490 HEBREW LETTER GIMEL -ד D+ 05D3 1491 HEBREW LETTER DALET -ה H+ 05D4 1492 HEBREW LETTER HE -ו W+ 05D5 1493 HEBREW LETTER VAV -ז Z+ 05D6 1494 HEBREW LETTER ZAYIN -ח X+ 05D7 1495 HEBREW LETTER HET -ט Tj 05D8 1496 HEBREW LETTER TET -י J+ 05D9 1497 HEBREW LETTER YOD -ך K% 05DA 1498 HEBREW LETTER FINAL KAF -כ K+ 05DB 1499 HEBREW LETTER KAF -ל L+ 05DC 1500 HEBREW LETTER LAMED -ם M% 05DD 1501 HEBREW LETTER FINAL MEM -מ M+ 05DE 1502 HEBREW LETTER MEM -ן N% 05DF 1503 HEBREW LETTER FINAL NUN ` -נ N+ 05E0 1504 HEBREW LETTER NUN ` -ס S+ 05E1 1505 HEBREW LETTER SAMEKH -ע E+ 05E2 1506 HEBREW LETTER AYIN -ף P% 05E3 1507 HEBREW LETTER FINAL PE -פ P+ 05E4 1508 HEBREW LETTER PE -ץ Zj 05E5 1509 HEBREW LETTER FINAL TSADI -צ ZJ 05E6 1510 HEBREW LETTER TSADI -ק Q+ 05E7 1511 HEBREW LETTER QOF -ר R+ 05E8 1512 HEBREW LETTER RESH -ש Sh 05E9 1513 HEBREW LETTER SHIN -ת T+ 05EA 1514 HEBREW LETTER TAV -، ,+ 060C 1548 ARABIC COMMA -؛ ;+ 061B 1563 ARABIC SEMICOLON -؟ ?+ 061F 1567 ARABIC QUESTION MARK -ء H' 0621 1569 ARABIC LETTER HAMZA -آ aM 0622 1570 ARABIC LETTER ALEF WITH MADDA ABOVE -أ aH 0623 1571 ARABIC LETTER ALEF WITH HAMZA ABOVE -ؤ wH 0624 1572 ARABIC LETTER WAW WITH HAMZA ABOVE -إ ah 0625 1573 ARABIC LETTER ALEF WITH HAMZA BELOW -ئ yH 0626 1574 ARABIC LETTER YEH WITH HAMZA ABOVE -ا a+ 0627 1575 ARABIC LETTER ALEF -ب b+ 0628 1576 ARABIC LETTER BEH -ة tm 0629 1577 ARABIC LETTER TEH MARBUTA -ت t+ 062A 1578 ARABIC LETTER TEH -ث tk 062B 1579 ARABIC LETTER THEH -ج g+ 062C 1580 ARABIC LETTER JEEM -ح hk 062D 1581 ARABIC LETTER HAH -خ x+ 062E 1582 ARABIC LETTER KHAH -د d+ 062F 1583 ARABIC LETTER DAL -ذ dk 0630 1584 ARABIC LETTER THAL -ر r+ 0631 1585 ARABIC LETTER REH -ز z+ 0632 1586 ARABIC LETTER ZAIN -س s+ 0633 1587 ARABIC LETTER SEEN -ش sn 0634 1588 ARABIC LETTER SHEEN -ص c+ 0635 1589 ARABIC LETTER SAD -ض dd 0636 1590 ARABIC LETTER DAD -ط tj 0637 1591 ARABIC LETTER TAH -ظ zH 0638 1592 ARABIC LETTER ZAH -ع e+ 0639 1593 ARABIC LETTER AIN -غ i+ 063A 1594 ARABIC LETTER GHAIN -ـ ++ 0640 1600 ARABIC TATWEEL -ف f+ 0641 1601 ARABIC LETTER FEH -ق q+ 0642 1602 ARABIC LETTER QAF -ك k+ 0643 1603 ARABIC LETTER KAF -ل l+ 0644 1604 ARABIC LETTER LAM -م m+ 0645 1605 ARABIC LETTER MEEM -ن n+ 0646 1606 ARABIC LETTER NOON -ه h+ 0647 1607 ARABIC LETTER HEH -و w+ 0648 1608 ARABIC LETTER WAW -ى j+ 0649 1609 ARABIC LETTER ALEF MAKSURA -ي y+ 064A 1610 ARABIC LETTER YEH -ً :+ 064B 1611 ARABIC FATHATAN -ٌ "+ 064C 1612 ARABIC DAMMATAN -ٍ =+ 064D 1613 ARABIC KASRATAN -َ /+ 064E 1614 ARABIC FATHA -ُ '+ 064F 1615 ARABIC DAMMA -ِ 1+ 0650 1616 ARABIC KASRA -ّ 3+ 0651 1617 ARABIC SHADDA -ْ 0+ 0652 1618 ARABIC SUKUN -ٰ aS 0670 1648 ARABIC LETTER SUPERSCRIPT ALEF -پ p+ 067E 1662 ARABIC LETTER PEH -ڤ v+ 06A4 1700 ARABIC LETTER VEH -گ gf 06AF 1711 ARABIC LETTER GAF -۰ 0a 06F0 1776 EXTENDED ARABIC-INDIC DIGIT ZERO -۱ 1a 06F1 1777 EXTENDED ARABIC-INDIC DIGIT ONE -۲ 2a 06F2 1778 EXTENDED ARABIC-INDIC DIGIT TWO -۳ 3a 06F3 1779 EXTENDED ARABIC-INDIC DIGIT THREE -۴ 4a 06F4 1780 EXTENDED ARABIC-INDIC DIGIT FOUR -۵ 5a 06F5 1781 EXTENDED ARABIC-INDIC DIGIT FIVE -۶ 6a 06F6 1782 EXTENDED ARABIC-INDIC DIGIT SIX -۷ 7a 06F7 1783 EXTENDED ARABIC-INDIC DIGIT SEVEN -۸ 8a 06F8 1784 EXTENDED ARABIC-INDIC DIGIT EIGHT -۹ 9a 06F9 1785 EXTENDED ARABIC-INDIC DIGIT NINE -Ḃ B. 1E02 7682 LATIN CAPITAL LETTER B WITH DOT ABOVE -ḃ b. 1E03 7683 LATIN SMALL LETTER B WITH DOT ABOVE -Ḇ B_ 1E06 7686 LATIN CAPITAL LETTER B WITH LINE BELOW -ḇ b_ 1E07 7687 LATIN SMALL LETTER B WITH LINE BELOW -Ḋ D. 1E0A 7690 LATIN CAPITAL LETTER D WITH DOT ABOVE -ḋ d. 1E0B 7691 LATIN SMALL LETTER D WITH DOT ABOVE -Ḏ D_ 1E0E 7694 LATIN CAPITAL LETTER D WITH LINE BELOW -ḏ d_ 1E0F 7695 LATIN SMALL LETTER D WITH LINE BELOW -Ḑ D, 1E10 7696 LATIN CAPITAL LETTER D WITH CEDILLA -ḑ d, 1E11 7697 LATIN SMALL LETTER D WITH CEDILLA -Ḟ F. 1E1E 7710 LATIN CAPITAL LETTER F WITH DOT ABOVE -ḟ f. 1E1F 7711 LATIN SMALL LETTER F WITH DOT ABOVE -Ḡ G- 1E20 7712 LATIN CAPITAL LETTER G WITH MACRON -ḡ g- 1E21 7713 LATIN SMALL LETTER G WITH MACRON -Ḣ H. 1E22 7714 LATIN CAPITAL LETTER H WITH DOT ABOVE -ḣ h. 1E23 7715 LATIN SMALL LETTER H WITH DOT ABOVE -Ḧ H: 1E26 7718 LATIN CAPITAL LETTER H WITH DIAERESIS -ḧ h: 1E27 7719 LATIN SMALL LETTER H WITH DIAERESIS -Ḩ H, 1E28 7720 LATIN CAPITAL LETTER H WITH CEDILLA -ḩ h, 1E29 7721 LATIN SMALL LETTER H WITH CEDILLA -Ḱ K' 1E30 7728 LATIN CAPITAL LETTER K WITH ACUTE -ḱ k' 1E31 7729 LATIN SMALL LETTER K WITH ACUTE -Ḵ K_ 1E34 7732 LATIN CAPITAL LETTER K WITH LINE BELOW -ḵ k_ 1E35 7733 LATIN SMALL LETTER K WITH LINE BELOW -Ḻ L_ 1E3A 7738 LATIN CAPITAL LETTER L WITH LINE BELOW -ḻ l_ 1E3B 7739 LATIN SMALL LETTER L WITH LINE BELOW -Ḿ M' 1E3E 7742 LATIN CAPITAL LETTER M WITH ACUTE -ḿ m' 1E3F 7743 LATIN SMALL LETTER M WITH ACUTE -Ṁ M. 1E40 7744 LATIN CAPITAL LETTER M WITH DOT ABOVE -ṁ m. 1E41 7745 LATIN SMALL LETTER M WITH DOT ABOVE -Ṅ N. 1E44 7748 LATIN CAPITAL LETTER N WITH DOT ABOVE ` -ṅ n. 1E45 7749 LATIN SMALL LETTER N WITH DOT ABOVE ` -Ṉ N_ 1E48 7752 LATIN CAPITAL LETTER N WITH LINE BELOW ` -ṉ n_ 1E49 7753 LATIN SMALL LETTER N WITH LINE BELOW ` -Ṕ P' 1E54 7764 LATIN CAPITAL LETTER P WITH ACUTE -ṕ p' 1E55 7765 LATIN SMALL LETTER P WITH ACUTE -Ṗ P. 1E56 7766 LATIN CAPITAL LETTER P WITH DOT ABOVE -ṗ p. 1E57 7767 LATIN SMALL LETTER P WITH DOT ABOVE -Ṙ R. 1E58 7768 LATIN CAPITAL LETTER R WITH DOT ABOVE -ṙ r. 1E59 7769 LATIN SMALL LETTER R WITH DOT ABOVE -Ṟ R_ 1E5E 7774 LATIN CAPITAL LETTER R WITH LINE BELOW -ṟ r_ 1E5F 7775 LATIN SMALL LETTER R WITH LINE BELOW -Ṡ S. 1E60 7776 LATIN CAPITAL LETTER S WITH DOT ABOVE -ṡ s. 1E61 7777 LATIN SMALL LETTER S WITH DOT ABOVE -Ṫ T. 1E6A 7786 LATIN CAPITAL LETTER T WITH DOT ABOVE -ṫ t. 1E6B 7787 LATIN SMALL LETTER T WITH DOT ABOVE -Ṯ T_ 1E6E 7790 LATIN CAPITAL LETTER T WITH LINE BELOW -ṯ t_ 1E6F 7791 LATIN SMALL LETTER T WITH LINE BELOW -Ṽ V? 1E7C 7804 LATIN CAPITAL LETTER V WITH TILDE -ṽ v? 1E7D 7805 LATIN SMALL LETTER V WITH TILDE -Ẁ W! 1E80 7808 LATIN CAPITAL LETTER W WITH GRAVE -ẁ w! 1E81 7809 LATIN SMALL LETTER W WITH GRAVE -Ẃ W' 1E82 7810 LATIN CAPITAL LETTER W WITH ACUTE -ẃ w' 1E83 7811 LATIN SMALL LETTER W WITH ACUTE -Ẅ W: 1E84 7812 LATIN CAPITAL LETTER W WITH DIAERESIS -ẅ w: 1E85 7813 LATIN SMALL LETTER W WITH DIAERESIS -Ẇ W. 1E86 7814 LATIN CAPITAL LETTER W WITH DOT ABOVE -ẇ w. 1E87 7815 LATIN SMALL LETTER W WITH DOT ABOVE -Ẋ X. 1E8A 7818 LATIN CAPITAL LETTER X WITH DOT ABOVE -ẋ x. 1E8B 7819 LATIN SMALL LETTER X WITH DOT ABOVE -Ẍ X: 1E8C 7820 LATIN CAPITAL LETTER X WITH DIAERESIS -ẍ x: 1E8D 7821 LATIN SMALL LETTER X WITH DIAERESIS -Ẏ Y. 1E8E 7822 LATIN CAPITAL LETTER Y WITH DOT ABOVE -ẏ y. 1E8F 7823 LATIN SMALL LETTER Y WITH DOT ABOVE -Ẑ Z> 1E90 7824 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX -ẑ z> 1E91 7825 LATIN SMALL LETTER Z WITH CIRCUMFLEX -Ẕ Z_ 1E94 7828 LATIN CAPITAL LETTER Z WITH LINE BELOW -ẕ z_ 1E95 7829 LATIN SMALL LETTER Z WITH LINE BELOW -ẖ h_ 1E96 7830 LATIN SMALL LETTER H WITH LINE BELOW -ẗ t: 1E97 7831 LATIN SMALL LETTER T WITH DIAERESIS -ẘ w0 1E98 7832 LATIN SMALL LETTER W WITH RING ABOVE -ẙ y0 1E99 7833 LATIN SMALL LETTER Y WITH RING ABOVE -Ả A2 1EA2 7842 LATIN CAPITAL LETTER A WITH HOOK ABOVE -ả a2 1EA3 7843 LATIN SMALL LETTER A WITH HOOK ABOVE -Ẻ E2 1EBA 7866 LATIN CAPITAL LETTER E WITH HOOK ABOVE -ẻ e2 1EBB 7867 LATIN SMALL LETTER E WITH HOOK ABOVE -Ẽ E? 1EBC 7868 LATIN CAPITAL LETTER E WITH TILDE -ẽ e? 1EBD 7869 LATIN SMALL LETTER E WITH TILDE -Ỉ I2 1EC8 7880 LATIN CAPITAL LETTER I WITH HOOK ABOVE -ỉ i2 1EC9 7881 LATIN SMALL LETTER I WITH HOOK ABOVE -Ỏ O2 1ECE 7886 LATIN CAPITAL LETTER O WITH HOOK ABOVE -ỏ o2 1ECF 7887 LATIN SMALL LETTER O WITH HOOK ABOVE -Ủ U2 1EE6 7910 LATIN CAPITAL LETTER U WITH HOOK ABOVE -ủ u2 1EE7 7911 LATIN SMALL LETTER U WITH HOOK ABOVE -Ỳ Y! 1EF2 7922 LATIN CAPITAL LETTER Y WITH GRAVE -ỳ y! 1EF3 7923 LATIN SMALL LETTER Y WITH GRAVE -Ỷ Y2 1EF6 7926 LATIN CAPITAL LETTER Y WITH HOOK ABOVE -ỷ y2 1EF7 7927 LATIN SMALL LETTER Y WITH HOOK ABOVE -Ỹ Y? 1EF8 7928 LATIN CAPITAL LETTER Y WITH TILDE -ỹ y? 1EF9 7929 LATIN SMALL LETTER Y WITH TILDE -ἀ ;' 1F00 7936 GREEK SMALL LETTER ALPHA WITH PSILI -ἁ ,' 1F01 7937 GREEK SMALL LETTER ALPHA WITH DASIA -ἂ ;! 1F02 7938 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA -ἃ ,! 1F03 7939 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA -ἄ ?; 1F04 7940 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA -ἅ ?, 1F05 7941 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA -ἆ !: 1F06 7942 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI -ἇ ?: 1F07 7943 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI -  1N 2002 8194 EN SPACE -  1M 2003 8195 EM SPACE -  3M 2004 8196 THREE-PER-EM SPACE -  4M 2005 8197 FOUR-PER-EM SPACE -  6M 2006 8198 SIX-PER-EM SPACE -  1T 2009 8201 THIN SPACE -  1H 200A 8202 HAIR SPACE -‐ -1 2010 8208 HYPHEN -– -N 2013 8211 EN DASH ` -— -M 2014 8212 EM DASH -― -3 2015 8213 HORIZONTAL BAR -‖ !2 2016 8214 DOUBLE VERTICAL LINE -‗ =2 2017 8215 DOUBLE LOW LINE -‘ '6 2018 8216 LEFT SINGLE QUOTATION MARK -’ '9 2019 8217 RIGHT SINGLE QUOTATION MARK -‚ .9 201A 8218 SINGLE LOW-9 QUOTATION MARK -‛ 9' 201B 8219 SINGLE HIGH-REVERSED-9 QUOTATION MARK -“ "6 201C 8220 LEFT DOUBLE QUOTATION MARK -” "9 201D 8221 RIGHT DOUBLE QUOTATION MARK -„ :9 201E 8222 DOUBLE LOW-9 QUOTATION MARK -‟ 9" 201F 8223 DOUBLE HIGH-REVERSED-9 QUOTATION MARK -† /- 2020 8224 DAGGER -‡ /= 2021 8225 DOUBLE DAGGER -‥ .. 2025 8229 TWO DOT LEADER -‰ %0 2030 8240 PER MILLE SIGN -′ 1' 2032 8242 PRIME -″ 2' 2033 8243 DOUBLE PRIME -‴ 3' 2034 8244 TRIPLE PRIME -‵ 1" 2035 8245 REVERSED PRIME -‶ 2" 2036 8246 REVERSED DOUBLE PRIME -‷ 3" 2037 8247 REVERSED TRIPLE PRIME -‸ Ca 2038 8248 CARET -‹ <1 2039 8249 SINGLE LEFT-POINTING ANGLE QUOTATION MARK -› >1 203A 8250 SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -※ :X 203B 8251 REFERENCE MARK -‾ '- 203E 8254 OVERLINE -⁄ /f 2044 8260 FRACTION SLASH -⁰ 0S 2070 8304 SUPERSCRIPT ZERO -⁴ 4S 2074 8308 SUPERSCRIPT FOUR -⁵ 5S 2075 8309 SUPERSCRIPT FIVE -⁶ 6S 2076 8310 SUPERSCRIPT SIX -⁷ 7S 2077 8311 SUPERSCRIPT SEVEN -⁸ 8S 2078 8312 SUPERSCRIPT EIGHT -⁹ 9S 2079 8313 SUPERSCRIPT NINE -⁺ +S 207A 8314 SUPERSCRIPT PLUS SIGN -⁻ -S 207B 8315 SUPERSCRIPT MINUS -⁼ =S 207C 8316 SUPERSCRIPT EQUALS SIGN -⁽ (S 207D 8317 SUPERSCRIPT LEFT PARENTHESIS -⁾ )S 207E 8318 SUPERSCRIPT RIGHT PARENTHESIS -ⁿ nS 207F 8319 SUPERSCRIPT LATIN SMALL LETTER N ` -₀ 0s 2080 8320 SUBSCRIPT ZERO -₁ 1s 2081 8321 SUBSCRIPT ONE -₂ 2s 2082 8322 SUBSCRIPT TWO -₃ 3s 2083 8323 SUBSCRIPT THREE -₄ 4s 2084 8324 SUBSCRIPT FOUR -₅ 5s 2085 8325 SUBSCRIPT FIVE -₆ 6s 2086 8326 SUBSCRIPT SIX -₇ 7s 2087 8327 SUBSCRIPT SEVEN -₈ 8s 2088 8328 SUBSCRIPT EIGHT -₉ 9s 2089 8329 SUBSCRIPT NINE -₊ +s 208A 8330 SUBSCRIPT PLUS SIGN -₋ -s 208B 8331 SUBSCRIPT MINUS -₌ =s 208C 8332 SUBSCRIPT EQUALS SIGN -₍ (s 208D 8333 SUBSCRIPT LEFT PARENTHESIS -₎ )s 208E 8334 SUBSCRIPT RIGHT PARENTHESIS -₤ Li 20A4 8356 LIRA SIGN -₧ Pt 20A7 8359 PESETA SIGN -₩ W= 20A9 8361 WON SIGN -€ Eu 20AC 8364 EURO SIGN -℃ oC 2103 8451 DEGREE CELSIUS -℅ co 2105 8453 CARE OF -℉ oF 2109 8457 DEGREE FAHRENHEIT -№ N0 2116 8470 NUMERO SIGN -℗ PO 2117 8471 SOUND RECORDING COPYRIGHT -℞ Rx 211E 8478 PRESCRIPTION TAKE -℠ SM 2120 8480 SERVICE MARK -™ TM 2122 8482 TRADE MARK SIGN -Ω Om 2126 8486 OHM SIGN -Å AO 212B 8491 ANGSTROM SIGN -⅓ 13 2153 8531 VULGAR FRACTION ONE THIRD -⅔ 23 2154 8532 VULGAR FRACTION TWO THIRDS -⅕ 15 2155 8533 VULGAR FRACTION ONE FIFTH -⅖ 25 2156 8534 VULGAR FRACTION TWO FIFTHS -⅗ 35 2157 8535 VULGAR FRACTION THREE FIFTHS -⅘ 45 2158 8536 VULGAR FRACTION FOUR FIFTHS -⅙ 16 2159 8537 VULGAR FRACTION ONE SIXTH -⅚ 56 215A 8538 VULGAR FRACTION FIVE SIXTHS -⅛ 18 215B 8539 VULGAR FRACTION ONE EIGHTH -⅜ 38 215C 8540 VULGAR FRACTION THREE EIGHTHS -⅝ 58 215D 8541 VULGAR FRACTION FIVE EIGHTHS -⅞ 78 215E 8542 VULGAR FRACTION SEVEN EIGHTHS -Ⅰ 1R 2160 8544 ROMAN NUMERAL ONE -Ⅱ 2R 2161 8545 ROMAN NUMERAL TWO -Ⅲ 3R 2162 8546 ROMAN NUMERAL THREE -Ⅳ 4R 2163 8547 ROMAN NUMERAL FOUR -Ⅴ 5R 2164 8548 ROMAN NUMERAL FIVE -Ⅵ 6R 2165 8549 ROMAN NUMERAL SIX -Ⅶ 7R 2166 8550 ROMAN NUMERAL SEVEN -Ⅷ 8R 2167 8551 ROMAN NUMERAL EIGHT -Ⅸ 9R 2168 8552 ROMAN NUMERAL NINE -Ⅹ aR 2169 8553 ROMAN NUMERAL TEN -Ⅺ bR 216A 8554 ROMAN NUMERAL ELEVEN -Ⅻ cR 216B 8555 ROMAN NUMERAL TWELVE -ⅰ 1r 2170 8560 SMALL ROMAN NUMERAL ONE -ⅱ 2r 2171 8561 SMALL ROMAN NUMERAL TWO -ⅲ 3r 2172 8562 SMALL ROMAN NUMERAL THREE -ⅳ 4r 2173 8563 SMALL ROMAN NUMERAL FOUR -ⅴ 5r 2174 8564 SMALL ROMAN NUMERAL FIVE -ⅵ 6r 2175 8565 SMALL ROMAN NUMERAL SIX -ⅶ 7r 2176 8566 SMALL ROMAN NUMERAL SEVEN -ⅷ 8r 2177 8567 SMALL ROMAN NUMERAL EIGHT -ⅸ 9r 2178 8568 SMALL ROMAN NUMERAL NINE -ⅹ ar 2179 8569 SMALL ROMAN NUMERAL TEN -ⅺ br 217A 8570 SMALL ROMAN NUMERAL ELEVEN -ⅻ cr 217B 8571 SMALL ROMAN NUMERAL TWELVE -← <- 2190 8592 LEFTWARDS ARROW -↑ -! 2191 8593 UPWARDS ARROW -→ -> 2192 8594 RIGHTWARDS ARROW -↓ -v 2193 8595 DOWNWARDS ARROW -↔ <> 2194 8596 LEFT RIGHT ARROW -↕ UD 2195 8597 UP DOWN ARROW -⇐ <= 21D0 8656 LEFTWARDS DOUBLE ARROW -⇒ => 21D2 8658 RIGHTWARDS DOUBLE ARROW -⇔ == 21D4 8660 LEFT RIGHT DOUBLE ARROW -∀ FA 2200 8704 FOR ALL -∂ dP 2202 8706 PARTIAL DIFFERENTIAL -∃ TE 2203 8707 THERE EXISTS -∅ /0 2205 8709 EMPTY SET -∆ DE 2206 8710 INCREMENT -∇ NB 2207 8711 NABLA -∈ (- 2208 8712 ELEMENT OF -∋ -) 220B 8715 CONTAINS AS MEMBER -∏ *P 220F 8719 N-ARY PRODUCT ` -∑ +Z 2211 8721 N-ARY SUMMATION ` -− -2 2212 8722 MINUS SIGN -∓ -+ 2213 8723 MINUS-OR-PLUS SIGN -∗ *- 2217 8727 ASTERISK OPERATOR -∘ Ob 2218 8728 RING OPERATOR -∙ Sb 2219 8729 BULLET OPERATOR -√ RT 221A 8730 SQUARE ROOT -∝ 0( 221D 8733 PROPORTIONAL TO -∞ 00 221E 8734 INFINITY -∟ -L 221F 8735 RIGHT ANGLE -∠ -V 2220 8736 ANGLE -∥ PP 2225 8741 PARALLEL TO -∧ AN 2227 8743 LOGICAL AND -∨ OR 2228 8744 LOGICAL OR -∩ (U 2229 8745 INTERSECTION -∪ )U 222A 8746 UNION -∫ In 222B 8747 INTEGRAL -∬ DI 222C 8748 DOUBLE INTEGRAL -∮ Io 222E 8750 CONTOUR INTEGRAL -∴ .: 2234 8756 THEREFORE -∵ :. 2235 8757 BECAUSE -∶ :R 2236 8758 RATIO -∷ :: 2237 8759 PROPORTION -∼ ?1 223C 8764 TILDE OPERATOR -∾ CG 223E 8766 INVERTED LAZY S -≃ ?- 2243 8771 ASYMPTOTICALLY EQUAL TO -≅ ?= 2245 8773 APPROXIMATELY EQUAL TO -≈ ?2 2248 8776 ALMOST EQUAL TO -≌ =? 224C 8780 ALL EQUAL TO -≓ HI 2253 8787 IMAGE OF OR APPROXIMATELY EQUAL TO -≠ != 2260 8800 NOT EQUAL TO -≡ =3 2261 8801 IDENTICAL TO -≤ =< 2264 8804 LESS-THAN OR EQUAL TO -≥ >= 2265 8805 GREATER-THAN OR EQUAL TO -≪ <* 226A 8810 MUCH LESS-THAN -≫ *> 226B 8811 MUCH GREATER-THAN -≮ !< 226E 8814 NOT LESS-THAN -≯ !> 226F 8815 NOT GREATER-THAN -⊂ (C 2282 8834 SUBSET OF -⊃ )C 2283 8835 SUPERSET OF -⊆ (_ 2286 8838 SUBSET OF OR EQUAL TO -⊇ )_ 2287 8839 SUPERSET OF OR EQUAL TO -⊙ 0. 2299 8857 CIRCLED DOT OPERATOR -⊚ 02 229A 8858 CIRCLED RING OPERATOR -⊥ -T 22A5 8869 UP TACK -⋅ .P 22C5 8901 DOT OPERATOR -⋮ :3 22EE 8942 VERTICAL ELLIPSIS -⋯ .3 22EF 8943 MIDLINE HORIZONTAL ELLIPSIS -⌂ Eh 2302 8962 HOUSE -⌈ <7 2308 8968 LEFT CEILING -⌉ >7 2309 8969 RIGHT CEILING -⌊ 7< 230A 8970 LEFT FLOOR -⌋ 7> 230B 8971 RIGHT FLOOR -⌐ NI 2310 8976 REVERSED NOT SIGN -⌒ (A 2312 8978 ARC -⌕ TR 2315 8981 TELEPHONE RECORDER -⌠ Iu 2320 8992 TOP HALF INTEGRAL -⌡ Il 2321 8993 BOTTOM HALF INTEGRAL -〈 </ 2329 9001 LEFT-POINTING ANGLE BRACKET -〉 /> 232A 9002 RIGHT-POINTING ANGLE BRACKET -␣ Vs 2423 9251 OPEN BOX -⑀ 1h 2440 9280 OCR HOOK -⑁ 3h 2441 9281 OCR CHAIR -⑂ 2h 2442 9282 OCR FORK -⑃ 4h 2443 9283 OCR INVERTED FORK -⑆ 1j 2446 9286 OCR BRANCH BANK IDENTIFICATION -⑇ 2j 2447 9287 OCR AMOUNT OF CHECK -⑈ 3j 2448 9288 OCR DASH -⑉ 4j 2449 9289 OCR CUSTOMER ACCOUNT NUMBER -⒈ 1. 2488 9352 DIGIT ONE FULL STOP -⒉ 2. 2489 9353 DIGIT TWO FULL STOP -⒊ 3. 248A 9354 DIGIT THREE FULL STOP -⒋ 4. 248B 9355 DIGIT FOUR FULL STOP -⒌ 5. 248C 9356 DIGIT FIVE FULL STOP -⒍ 6. 248D 9357 DIGIT SIX FULL STOP -⒎ 7. 248E 9358 DIGIT SEVEN FULL STOP -⒏ 8. 248F 9359 DIGIT EIGHT FULL STOP -⒐ 9. 2490 9360 DIGIT NINE FULL STOP -─ hh 2500 9472 BOX DRAWINGS LIGHT HORIZONTAL -━ HH 2501 9473 BOX DRAWINGS HEAVY HORIZONTAL -│ vv 2502 9474 BOX DRAWINGS LIGHT VERTICAL -┃ VV 2503 9475 BOX DRAWINGS HEAVY VERTICAL -┄ 3- 2504 9476 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL -┅ 3_ 2505 9477 BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL -┆ 3! 2506 9478 BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL -┇ 3/ 2507 9479 BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL -┈ 4- 2508 9480 BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL -┉ 4_ 2509 9481 BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL -┊ 4! 250A 9482 BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL -┋ 4/ 250B 9483 BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL -┌ dr 250C 9484 BOX DRAWINGS LIGHT DOWN AND RIGHT -┍ dR 250D 9485 BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY -┎ Dr 250E 9486 BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT -┏ DR 250F 9487 BOX DRAWINGS HEAVY DOWN AND RIGHT -┐ dl 2510 9488 BOX DRAWINGS LIGHT DOWN AND LEFT -┑ dL 2511 9489 BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY -┒ Dl 2512 9490 BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT -┓ LD 2513 9491 BOX DRAWINGS HEAVY DOWN AND LEFT -└ ur 2514 9492 BOX DRAWINGS LIGHT UP AND RIGHT -┕ uR 2515 9493 BOX DRAWINGS UP LIGHT AND RIGHT HEAVY -┖ Ur 2516 9494 BOX DRAWINGS UP HEAVY AND RIGHT LIGHT -┗ UR 2517 9495 BOX DRAWINGS HEAVY UP AND RIGHT -┘ ul 2518 9496 BOX DRAWINGS LIGHT UP AND LEFT -┙ uL 2519 9497 BOX DRAWINGS UP LIGHT AND LEFT HEAVY -┚ Ul 251A 9498 BOX DRAWINGS UP HEAVY AND LEFT LIGHT -┛ UL 251B 9499 BOX DRAWINGS HEAVY UP AND LEFT -├ vr 251C 9500 BOX DRAWINGS LIGHT VERTICAL AND RIGHT -┝ vR 251D 9501 BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY -┠ Vr 2520 9504 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT -┣ VR 2523 9507 BOX DRAWINGS HEAVY VERTICAL AND RIGHT -┤ vl 2524 9508 BOX DRAWINGS LIGHT VERTICAL AND LEFT -┥ vL 2525 9509 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY -┨ Vl 2528 9512 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT -┫ VL 252B 9515 BOX DRAWINGS HEAVY VERTICAL AND LEFT -┬ dh 252C 9516 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL -┯ dH 252F 9519 BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY -┰ Dh 2530 9520 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT -┳ DH 2533 9523 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL -┴ uh 2534 9524 BOX DRAWINGS LIGHT UP AND HORIZONTAL -┷ uH 2537 9527 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY -┸ Uh 2538 9528 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT -┻ UH 253B 9531 BOX DRAWINGS HEAVY UP AND HORIZONTAL -┼ vh 253C 9532 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL -┿ vH 253F 9535 BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY -╂ Vh 2542 9538 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT -╋ VH 254B 9547 BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL -╱ FD 2571 9585 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT -╲ BD 2572 9586 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT -▀ TB 2580 9600 UPPER HALF BLOCK -▄ LB 2584 9604 LOWER HALF BLOCK -█ FB 2588 9608 FULL BLOCK -▌ lB 258C 9612 LEFT HALF BLOCK -▐ RB 2590 9616 RIGHT HALF BLOCK -░ .S 2591 9617 LIGHT SHADE -▒ :S 2592 9618 MEDIUM SHADE -▓ ?S 2593 9619 DARK SHADE -■ fS 25A0 9632 BLACK SQUARE -□ OS 25A1 9633 WHITE SQUARE -▢ RO 25A2 9634 WHITE SQUARE WITH ROUNDED CORNERS -▣ Rr 25A3 9635 WHITE SQUARE CONTAINING BLACK SMALL SQUARE -▤ RF 25A4 9636 SQUARE WITH HORIZONTAL FILL -▥ RY 25A5 9637 SQUARE WITH VERTICAL FILL -▦ RH 25A6 9638 SQUARE WITH ORTHOGONAL CROSSHATCH FILL -▧ RZ 25A7 9639 SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL -▨ RK 25A8 9640 SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL -▩ RX 25A9 9641 SQUARE WITH DIAGONAL CROSSHATCH FILL -▪ sB 25AA 9642 BLACK SMALL SQUARE -▬ SR 25AC 9644 BLACK RECTANGLE -▭ Or 25AD 9645 WHITE RECTANGLE -▲ UT 25B2 9650 BLACK UP-POINTING TRIANGLE -△ uT 25B3 9651 WHITE UP-POINTING TRIANGLE -▶ PR 25B6 9654 BLACK RIGHT-POINTING TRIANGLE -▷ Tr 25B7 9655 WHITE RIGHT-POINTING TRIANGLE -▼ Dt 25BC 9660 BLACK DOWN-POINTING TRIANGLE -▽ dT 25BD 9661 WHITE DOWN-POINTING TRIANGLE -◀ PL 25C0 9664 BLACK LEFT-POINTING TRIANGLE -◁ Tl 25C1 9665 WHITE LEFT-POINTING TRIANGLE -◆ Db 25C6 9670 BLACK DIAMOND -◇ Dw 25C7 9671 WHITE DIAMOND -◊ LZ 25CA 9674 LOZENGE -○ 0m 25CB 9675 WHITE CIRCLE -◎ 0o 25CE 9678 BULLSEYE -● 0M 25CF 9679 BLACK CIRCLE -◐ 0L 25D0 9680 CIRCLE WITH LEFT HALF BLACK -◑ 0R 25D1 9681 CIRCLE WITH RIGHT HALF BLACK -◘ Sn 25D8 9688 INVERSE BULLET -◙ Ic 25D9 9689 INVERSE WHITE CIRCLE -◢ Fd 25E2 9698 BLACK LOWER RIGHT TRIANGLE -◣ Bd 25E3 9699 BLACK LOWER LEFT TRIANGLE -★ *2 2605 9733 BLACK STAR -☆ *1 2606 9734 WHITE STAR -☜ <H 261C 9756 WHITE LEFT POINTING INDEX -☞ >H 261E 9758 WHITE RIGHT POINTING INDEX -☺ 0u 263A 9786 WHITE SMILING FACE -☻ 0U 263B 9787 BLACK SMILING FACE -☼ SU 263C 9788 WHITE SUN WITH RAYS -♀ Fm 2640 9792 FEMALE SIGN -♂ Ml 2642 9794 MALE SIGN -♠ cS 2660 9824 BLACK SPADE SUIT -♡ cH 2661 9825 WHITE HEART SUIT -♢ cD 2662 9826 WHITE DIAMOND SUIT -♣ cC 2663 9827 BLACK CLUB SUIT -♩ Md 2669 9833 QUARTER NOTE ` -♪ M8 266A 9834 EIGHTH NOTE ` -♫ M2 266B 9835 BEAMED EIGHTH NOTES -♭ Mb 266D 9837 MUSIC FLAT SIGN -♮ Mx 266E 9838 MUSIC NATURAL SIGN -♯ MX 266F 9839 MUSIC SHARP SIGN -✓ OK 2713 10003 CHECK MARK -✗ XX 2717 10007 BALLOT X -✠ -X 2720 10016 MALTESE CROSS -  IS 3000 12288 IDEOGRAPHIC SPACE -、 ,_ 3001 12289 IDEOGRAPHIC COMMA -。 ._ 3002 12290 IDEOGRAPHIC FULL STOP -〃 +" 3003 12291 DITTO MARK -〄 +_ 3004 12292 JAPANESE INDUSTRIAL STANDARD SYMBOL -々 *_ 3005 12293 IDEOGRAPHIC ITERATION MARK -〆 ;_ 3006 12294 IDEOGRAPHIC CLOSING MARK -〇 0_ 3007 12295 IDEOGRAPHIC NUMBER ZERO -《 <+ 300A 12298 LEFT DOUBLE ANGLE BRACKET -》 >+ 300B 12299 RIGHT DOUBLE ANGLE BRACKET -「 <' 300C 12300 LEFT CORNER BRACKET -」 >' 300D 12301 RIGHT CORNER BRACKET -『 <" 300E 12302 LEFT WHITE CORNER BRACKET -』 >" 300F 12303 RIGHT WHITE CORNER BRACKET -【 (" 3010 12304 LEFT BLACK LENTICULAR BRACKET -】 )" 3011 12305 RIGHT BLACK LENTICULAR BRACKET -〒 =T 3012 12306 POSTAL MARK -〓 =_ 3013 12307 GETA MARK -〔 (' 3014 12308 LEFT TORTOISE SHELL BRACKET -〕 )' 3015 12309 RIGHT TORTOISE SHELL BRACKET -〖 (I 3016 12310 LEFT WHITE LENTICULAR BRACKET -〗 )I 3017 12311 RIGHT WHITE LENTICULAR BRACKET -〜 -? 301C 12316 WAVE DASH -ぁ A5 3041 12353 HIRAGANA LETTER SMALL A -あ a5 3042 12354 HIRAGANA LETTER A -ぃ I5 3043 12355 HIRAGANA LETTER SMALL I -い i5 3044 12356 HIRAGANA LETTER I -ぅ U5 3045 12357 HIRAGANA LETTER SMALL U -う u5 3046 12358 HIRAGANA LETTER U -ぇ E5 3047 12359 HIRAGANA LETTER SMALL E -え e5 3048 12360 HIRAGANA LETTER E -ぉ O5 3049 12361 HIRAGANA LETTER SMALL O -お o5 304A 12362 HIRAGANA LETTER O -か ka 304B 12363 HIRAGANA LETTER KA -が ga 304C 12364 HIRAGANA LETTER GA -き ki 304D 12365 HIRAGANA LETTER KI -ぎ gi 304E 12366 HIRAGANA LETTER GI -く ku 304F 12367 HIRAGANA LETTER KU -ぐ gu 3050 12368 HIRAGANA LETTER GU -け ke 3051 12369 HIRAGANA LETTER KE -げ ge 3052 12370 HIRAGANA LETTER GE -こ ko 3053 12371 HIRAGANA LETTER KO -ご go 3054 12372 HIRAGANA LETTER GO -さ sa 3055 12373 HIRAGANA LETTER SA -ざ za 3056 12374 HIRAGANA LETTER ZA -し si 3057 12375 HIRAGANA LETTER SI -じ zi 3058 12376 HIRAGANA LETTER ZI -す su 3059 12377 HIRAGANA LETTER SU -ず zu 305A 12378 HIRAGANA LETTER ZU -せ se 305B 12379 HIRAGANA LETTER SE -ぜ ze 305C 12380 HIRAGANA LETTER ZE -そ so 305D 12381 HIRAGANA LETTER SO -ぞ zo 305E 12382 HIRAGANA LETTER ZO -た ta 305F 12383 HIRAGANA LETTER TA -だ da 3060 12384 HIRAGANA LETTER DA -ち ti 3061 12385 HIRAGANA LETTER TI -ぢ di 3062 12386 HIRAGANA LETTER DI -っ tU 3063 12387 HIRAGANA LETTER SMALL TU -つ tu 3064 12388 HIRAGANA LETTER TU -づ du 3065 12389 HIRAGANA LETTER DU -て te 3066 12390 HIRAGANA LETTER TE -で de 3067 12391 HIRAGANA LETTER DE -と to 3068 12392 HIRAGANA LETTER TO -ど do 3069 12393 HIRAGANA LETTER DO -な na 306A 12394 HIRAGANA LETTER NA -に ni 306B 12395 HIRAGANA LETTER NI -ぬ nu 306C 12396 HIRAGANA LETTER NU -ね ne 306D 12397 HIRAGANA LETTER NE -の no 306E 12398 HIRAGANA LETTER NO -は ha 306F 12399 HIRAGANA LETTER HA -ば ba 3070 12400 HIRAGANA LETTER BA -ぱ pa 3071 12401 HIRAGANA LETTER PA -ひ hi 3072 12402 HIRAGANA LETTER HI -び bi 3073 12403 HIRAGANA LETTER BI -ぴ pi 3074 12404 HIRAGANA LETTER PI -ふ hu 3075 12405 HIRAGANA LETTER HU -ぶ bu 3076 12406 HIRAGANA LETTER BU -ぷ pu 3077 12407 HIRAGANA LETTER PU -へ he 3078 12408 HIRAGANA LETTER HE -べ be 3079 12409 HIRAGANA LETTER BE -ぺ pe 307A 12410 HIRAGANA LETTER PE -ほ ho 307B 12411 HIRAGANA LETTER HO -ぼ bo 307C 12412 HIRAGANA LETTER BO -ぽ po 307D 12413 HIRAGANA LETTER PO -ま ma 307E 12414 HIRAGANA LETTER MA -み mi 307F 12415 HIRAGANA LETTER MI -む mu 3080 12416 HIRAGANA LETTER MU -め me 3081 12417 HIRAGANA LETTER ME -も mo 3082 12418 HIRAGANA LETTER MO -ゃ yA 3083 12419 HIRAGANA LETTER SMALL YA -や ya 3084 12420 HIRAGANA LETTER YA -ゅ yU 3085 12421 HIRAGANA LETTER SMALL YU -ゆ yu 3086 12422 HIRAGANA LETTER YU -ょ yO 3087 12423 HIRAGANA LETTER SMALL YO -よ yo 3088 12424 HIRAGANA LETTER YO -ら ra 3089 12425 HIRAGANA LETTER RA -り ri 308A 12426 HIRAGANA LETTER RI -る ru 308B 12427 HIRAGANA LETTER RU -れ re 308C 12428 HIRAGANA LETTER RE -ろ ro 308D 12429 HIRAGANA LETTER RO -ゎ wA 308E 12430 HIRAGANA LETTER SMALL WA -わ wa 308F 12431 HIRAGANA LETTER WA -ゐ wi 3090 12432 HIRAGANA LETTER WI -ゑ we 3091 12433 HIRAGANA LETTER WE -を wo 3092 12434 HIRAGANA LETTER WO -ん n5 3093 12435 HIRAGANA LETTER N ` -ゔ vu 3094 12436 HIRAGANA LETTER VU -゛ "5 309B 12443 KATAKANA-HIRAGANA VOICED SOUND MARK -゜ 05 309C 12444 KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -ゝ *5 309D 12445 HIRAGANA ITERATION MARK -ゞ +5 309E 12446 HIRAGANA VOICED ITERATION MARK -ァ a6 30A1 12449 KATAKANA LETTER SMALL A -ア A6 30A2 12450 KATAKANA LETTER A -ィ i6 30A3 12451 KATAKANA LETTER SMALL I -イ I6 30A4 12452 KATAKANA LETTER I -ゥ u6 30A5 12453 KATAKANA LETTER SMALL U -ウ U6 30A6 12454 KATAKANA LETTER U -ェ e6 30A7 12455 KATAKANA LETTER SMALL E -エ E6 30A8 12456 KATAKANA LETTER E -ォ o6 30A9 12457 KATAKANA LETTER SMALL O -オ O6 30AA 12458 KATAKANA LETTER O -カ Ka 30AB 12459 KATAKANA LETTER KA -ガ Ga 30AC 12460 KATAKANA LETTER GA -キ Ki 30AD 12461 KATAKANA LETTER KI -ギ Gi 30AE 12462 KATAKANA LETTER GI -ク Ku 30AF 12463 KATAKANA LETTER KU -グ Gu 30B0 12464 KATAKANA LETTER GU -ケ Ke 30B1 12465 KATAKANA LETTER KE -ゲ Ge 30B2 12466 KATAKANA LETTER GE -コ Ko 30B3 12467 KATAKANA LETTER KO -ゴ Go 30B4 12468 KATAKANA LETTER GO -サ Sa 30B5 12469 KATAKANA LETTER SA -ザ Za 30B6 12470 KATAKANA LETTER ZA -シ Si 30B7 12471 KATAKANA LETTER SI -ジ Zi 30B8 12472 KATAKANA LETTER ZI -ス Su 30B9 12473 KATAKANA LETTER SU -ズ Zu 30BA 12474 KATAKANA LETTER ZU -セ Se 30BB 12475 KATAKANA LETTER SE -ゼ Ze 30BC 12476 KATAKANA LETTER ZE -ソ So 30BD 12477 KATAKANA LETTER SO -ゾ Zo 30BE 12478 KATAKANA LETTER ZO -タ Ta 30BF 12479 KATAKANA LETTER TA -ダ Da 30C0 12480 KATAKANA LETTER DA -チ Ti 30C1 12481 KATAKANA LETTER TI -ヂ Di 30C2 12482 KATAKANA LETTER DI -ッ TU 30C3 12483 KATAKANA LETTER SMALL TU -ツ Tu 30C4 12484 KATAKANA LETTER TU -ヅ Du 30C5 12485 KATAKANA LETTER DU -テ Te 30C6 12486 KATAKANA LETTER TE -デ De 30C7 12487 KATAKANA LETTER DE -ト To 30C8 12488 KATAKANA LETTER TO -ド Do 30C9 12489 KATAKANA LETTER DO -ナ Na 30CA 12490 KATAKANA LETTER NA -ニ Ni 30CB 12491 KATAKANA LETTER NI -ヌ Nu 30CC 12492 KATAKANA LETTER NU -ネ Ne 30CD 12493 KATAKANA LETTER NE -ノ No 30CE 12494 KATAKANA LETTER NO -ハ Ha 30CF 12495 KATAKANA LETTER HA -バ Ba 30D0 12496 KATAKANA LETTER BA -パ Pa 30D1 12497 KATAKANA LETTER PA -ヒ Hi 30D2 12498 KATAKANA LETTER HI -ビ Bi 30D3 12499 KATAKANA LETTER BI -ピ Pi 30D4 12500 KATAKANA LETTER PI -フ Hu 30D5 12501 KATAKANA LETTER HU -ブ Bu 30D6 12502 KATAKANA LETTER BU -プ Pu 30D7 12503 KATAKANA LETTER PU -ヘ He 30D8 12504 KATAKANA LETTER HE -ベ Be 30D9 12505 KATAKANA LETTER BE -ペ Pe 30DA 12506 KATAKANA LETTER PE -ホ Ho 30DB 12507 KATAKANA LETTER HO -ボ Bo 30DC 12508 KATAKANA LETTER BO -ポ Po 30DD 12509 KATAKANA LETTER PO -マ Ma 30DE 12510 KATAKANA LETTER MA -ミ Mi 30DF 12511 KATAKANA LETTER MI -ム Mu 30E0 12512 KATAKANA LETTER MU -メ Me 30E1 12513 KATAKANA LETTER ME -モ Mo 30E2 12514 KATAKANA LETTER MO -ャ YA 30E3 12515 KATAKANA LETTER SMALL YA -ヤ Ya 30E4 12516 KATAKANA LETTER YA -ュ YU 30E5 12517 KATAKANA LETTER SMALL YU -ユ Yu 30E6 12518 KATAKANA LETTER YU -ョ YO 30E7 12519 KATAKANA LETTER SMALL YO -ヨ Yo 30E8 12520 KATAKANA LETTER YO -ラ Ra 30E9 12521 KATAKANA LETTER RA -リ Ri 30EA 12522 KATAKANA LETTER RI -ル Ru 30EB 12523 KATAKANA LETTER RU -レ Re 30EC 12524 KATAKANA LETTER RE -ロ Ro 30ED 12525 KATAKANA LETTER RO -ヮ WA 30EE 12526 KATAKANA LETTER SMALL WA -ワ Wa 30EF 12527 KATAKANA LETTER WA -ヰ Wi 30F0 12528 KATAKANA LETTER WI -ヱ We 30F1 12529 KATAKANA LETTER WE -ヲ Wo 30F2 12530 KATAKANA LETTER WO -ン N6 30F3 12531 KATAKANA LETTER N ` -ヴ Vu 30F4 12532 KATAKANA LETTER VU -ヵ KA 30F5 12533 KATAKANA LETTER SMALL KA -ヶ KE 30F6 12534 KATAKANA LETTER SMALL KE -ヷ Va 30F7 12535 KATAKANA LETTER VA -ヸ Vi 30F8 12536 KATAKANA LETTER VI -ヹ Ve 30F9 12537 KATAKANA LETTER VE -ヺ Vo 30FA 12538 KATAKANA LETTER VO -・ .6 30FB 12539 KATAKANA MIDDLE DOT -ー -6 30FC 12540 KATAKANA-HIRAGANA PROLONGED SOUND MARK -ヽ *6 30FD 12541 KATAKANA ITERATION MARK -ヾ +6 30FE 12542 KATAKANA VOICED ITERATION MARK -ㄅ b4 3105 12549 BOPOMOFO LETTER B -ㄆ p4 3106 12550 BOPOMOFO LETTER P -ㄇ m4 3107 12551 BOPOMOFO LETTER M -ㄈ f4 3108 12552 BOPOMOFO LETTER F -ㄉ d4 3109 12553 BOPOMOFO LETTER D -ㄊ t4 310A 12554 BOPOMOFO LETTER T -ㄋ n4 310B 12555 BOPOMOFO LETTER N ` -ㄌ l4 310C 12556 BOPOMOFO LETTER L -ㄍ g4 310D 12557 BOPOMOFO LETTER G -ㄎ k4 310E 12558 BOPOMOFO LETTER K -ㄏ h4 310F 12559 BOPOMOFO LETTER H -ㄐ j4 3110 12560 BOPOMOFO LETTER J -ㄑ q4 3111 12561 BOPOMOFO LETTER Q -ㄒ x4 3112 12562 BOPOMOFO LETTER X -ㄓ zh 3113 12563 BOPOMOFO LETTER ZH -ㄔ ch 3114 12564 BOPOMOFO LETTER CH -ㄕ sh 3115 12565 BOPOMOFO LETTER SH -ㄖ r4 3116 12566 BOPOMOFO LETTER R -ㄗ z4 3117 12567 BOPOMOFO LETTER Z -ㄘ c4 3118 12568 BOPOMOFO LETTER C -ㄙ s4 3119 12569 BOPOMOFO LETTER S -ㄚ a4 311A 12570 BOPOMOFO LETTER A -ㄛ o4 311B 12571 BOPOMOFO LETTER O -ㄜ e4 311C 12572 BOPOMOFO LETTER E -ㄞ ai 311E 12574 BOPOMOFO LETTER AI -ㄟ ei 311F 12575 BOPOMOFO LETTER EI -ㄠ au 3120 12576 BOPOMOFO LETTER AU -ㄡ ou 3121 12577 BOPOMOFO LETTER OU -ㄢ an 3122 12578 BOPOMOFO LETTER AN -ㄣ en 3123 12579 BOPOMOFO LETTER EN -ㄤ aN 3124 12580 BOPOMOFO LETTER ANG -ㄥ eN 3125 12581 BOPOMOFO LETTER ENG -ㄦ er 3126 12582 BOPOMOFO LETTER ER -ㄧ i4 3127 12583 BOPOMOFO LETTER I -ㄨ u4 3128 12584 BOPOMOFO LETTER U -ㄩ iu 3129 12585 BOPOMOFO LETTER IU -ㄪ v4 312A 12586 BOPOMOFO LETTER V -ㄫ nG 312B 12587 BOPOMOFO LETTER NG -ㄬ gn 312C 12588 BOPOMOFO LETTER GN -㈠ 1c 3220 12832 PARENTHESIZED IDEOGRAPH ONE -㈡ 2c 3221 12833 PARENTHESIZED IDEOGRAPH TWO -㈢ 3c 3222 12834 PARENTHESIZED IDEOGRAPH THREE -㈣ 4c 3223 12835 PARENTHESIZED IDEOGRAPH FOUR -㈤ 5c 3224 12836 PARENTHESIZED IDEOGRAPH FIVE -㈥ 6c 3225 12837 PARENTHESIZED IDEOGRAPH SIX -㈦ 7c 3226 12838 PARENTHESIZED IDEOGRAPH SEVEN -㈧ 8c 3227 12839 PARENTHESIZED IDEOGRAPH EIGHT -㈨ 9c 3228 12840 PARENTHESIZED IDEOGRAPH NINE -ff ff FB00 64256 LATIN SMALL LIGATURE FF -fi fi FB01 64257 LATIN SMALL LIGATURE FI -fl fl FB02 64258 LATIN SMALL LIGATURE FL -ſt ft FB05 64261 LATIN SMALL LIGATURE LONG S T -st st FB06 64262 LATIN SMALL LIGATURE ST - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/editing.jax b/runtime.old/doc/editing.jax deleted file mode 100644 index afedce9dd..000000000 --- a/runtime.old/doc/editing.jax +++ /dev/null @@ -1,1623 +0,0 @@ -*editing.txt* For Vim バージョン 7.3. Last change: 2011 Feb 26 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -ファイルの編集 *edit-files* - -1. はじめに |edit-intro| -2. ファイルの編集 |edit-a-file| -3. 引数リスト |argument-list| -4. 書き込み |writing| -5. 書き込みと終了 |write-quit| -6. ダイアログ |edit-dialogs| -7. カレントディレクトリ |current-directory| -8. バイナリファイルの編集 |edit-binary| -9. 暗号化 |encryption| -10. タイムスタンプ |timestamps| -11. ファイル検索 |file-searching| - -============================================================================== -1. はじめに *edit-intro* - -「Vimでファイルを編集する」とは、以下のことを表す。 - -1. バッファへファイルを読み込む -2. 編集コマンドによりバッファの内容を変更する -3. バッファをファイルへ書き込む - - *current-file* -バッファを書き込まない限り、元のファイルは変更を受けないままで残っている。ファ -イルの編集を始めると (バッファにファイルを読み込むと)、そのファイルの名前は -「カレントファイル名」として記憶される。これをカレントバッファの名前とも呼ぶ。 -コマンドラインでは"%"で表せる。|:_%| - - *alternate-file* -カレントファイル名が既に存在したときは、前の方は「オルタネートファイル名」にな -る。これはコマンドラインでは"#"で表され|:_#|、|CTRL-^|を使うとカレントファイル -とオルタネートファイルを切り替えることが出来る。ただし|:keepalt|を使ったときは -オルタネートファイル名は変わらない。 - - *:keepalt* *:keepa* -:keepalt {cmd} 現在のオルタネートファイル名を変えずに{cmd}を実行する。 - Note 間接的に呼び出されるコマンド(例えば関数によって) - はオルタネートファイル名を変えてしまう。{Vi にはない} - -全てのファイル名はバッファリストに記憶される。編集 (例えば ":e filename") や保 -存(例えば ":w filename") のためにファイル名を入力すると、そのファイル名がリス -トに追加される。このリストを使えば、どのファイルを編集したかを覚えておいたり、 -コマンド CTRL-^ によってあるファイルから別のファイルへ素早く移行できる (例えば -テキストをコピーするとき)。まずファイルの番号を、次に CTRL-^ を打ち込む。{Vi: -オルタネートファイル名は1個だけ使える} - -CTRL-G または *CTRL-G* *:f* *:fi* *:file* -:f[ile] カレントファイル名 (これは":cd"が使われたとき以外は - 打ち込まれた通り --訳注: 普通、カレントディレクトリの - ファイルを編集するときはパスを省いて打ち込むと思うが、 - そうするとパスなしのファイル名になる)、カーソル位置 - (これはオプション 'ruler'がオフのとき) とファイルの状 - 態 (読込専用、変更あり、読込エラー、新規ファイル) を表 - 示する。このメッセージを短くする方法については、オプショ - ン 'shortmess' を参照。{Vi では列番号が表示されない} - -:f[ile]! |:file|と同様だが、'shortmess'が設定されているときでも - 名前を切り詰めない。 - -{count}CTRL-G CTRL-G と同様だが、カレントファイル名をフルパスで表示 - する。{count} が2以上なら、カレントバッファの番号も表 - 示する。 {Vi にはない} - - *g_CTRL-G* *word-count* *byte-count* -g CTRL-G カーソルの現在の位置を、列、行、単語、文字、バイト、の - 5種類の単位で表示する。文字数とバイト数が同じのときは - 文字位置が省略される。 - 行の中に画面上で1文字分以上の幅を占める文字 (<Tab> ま - たは特殊文字) があるときは、「実際」の列番号と画面上の - 列番号の両方が、ダッシュで区切られて表示される (訳注: - 例えば、タブ幅 'tabstop' が8のとき、行頭の <Tab> の次 - では「実際」の列番号は2、画面上の列番号は9となり、 - "1-8" と表示される)。オプション 'ruler'も参照。 {Vi に - はない} - - *v_g_CTRL-G* -{Visual}g CTRL-G "g CTRL-G" と似ているが、単語、文字、行、バイトの項目 - はビジュアル選択領域内で数えられて表示される。矩形ビジュ - アルモードでは、何列目かも表示される。 - 矩形ビジュアルモードでは桁数も表示される({Visual}につ - いては|Visual-mode| を参照) - {Vi にはない} - - *:file_f* -:f[ile][!] {name} カレントファイル名を {name} に設定する。!をつけると - |:file|のようにメッセージを切り詰めなくなる。 - バッファが名前を持つならその名前がオルタネートファイル名 - |alternate-file|になる。元の名前を保持するためにリスト - されない(unlisted)バッファが作成される。 - *:0file* -:0f[ile][!] カレントバッファの名前を削除する。!をつけると|:file|の - ようにメッセージを切り詰めなくなる。{Vi にはない} - -:buffers -:files -:ls 現在認識しているファイル名を全て一覧表示する。 - |windows.txt| |:files| |:buffers| |:ls| を参照。 - {Vi にはない} - -Vim は入力したファイル名のフルパス名を記憶している。ファイル名が表示されるとき、 -大抵は打ち込んだ名前だけが表示されるが、コマンド |:cd| でディレクトリを移動し -た後では、フルパス名が使われる。 - - *home-replace* -環境変数 $HOME が設定されていて、ファイル名がその文字列で始まっているならば、 -ファイル名のその部分は "~" に置き換えられて表示される。これはファイル名を短く -するためである。ファイルを読み書きするときはフルパス名が使われ、"~" はファイル -名を表示するときだけ使われる。ファイル名の置き換えを行ったところ "~" だけになっ -てしまうときは、代わりに "~/" が使われる (オプション 'backupext' が "~" に設定 -されたときに混乱を防ぐため)。 - -バッファを書き出すとき、既定ではカレントファイル名を用いる。そのため、コマンド -"ZZ" や ":wq" を使うと、元のファイルは上書きされてしまうことになる。これを望ま -ないならば、コマンド ":write" の引数にファイル名を与えることで、バッファを別の -ファイルに書き出せる。例: > - - vim テスト用 (訳注: これはシェルに対して) - [コマンドでバッファを編集する] - :w 新ファイル - :q - -こうすると "新ファイル" が生成されるが、これは "テスト用" を編集してコピーした -ものである。ファイル "テスト用" は変更されないまま残る。しかしどちらにしろ、オ -プション 'backup' がオンのときは、Vim は元のファイルを上書きする前に、元のファ -イルの名前を変更するかコピーする。元のファイルが必要なことに気付いたときは、こ -のファイルを使える。'patchmode' も参照。普通、バックアップファイルの名前は元の -ファイル名に 'backupext' を追加したものである。既定値は "~" という妙なものだが、 -これはたまたま存在しているファイルに上書きするのを避けるためである。 ".bak" の -方がよければ、'backupext' を変更すること。MS-DOS 機等で、MS-DOS 系のファイルシ -ステム (例えば、messydos や crossdos ) が使われていることが検出されたときや、 -'shortname' がオンのときには、余分なドットは '_' に置き換えられる。'backupdir' -を設定することで、バックアップファイルを他のディレクトリに置くことができる。 - - *auto-shortname* -技術的情報: Amiga ではファイル名に 30 文字まで使える。しかし MS-DOS 互換のファ - イルシステムで有効なのは 8 文字+ 3 文字に過ぎない。Vim は ".swp" - ファイルを生成するときにファイルシステムの判別を試みる。MS-DOS 系 - のファイルシステムと思われるときは、'shortname' をオンにするのと同 - じ効果を持つフラグがオンになる。このフラグは新ファイルの編集を開始 - するとすぐにオフにされる。このフラグはカレントファイルのための - ".swp" ファイルと ".~" ファイルの名前を作るときに使われる。しかし、 - ユーザが普通のファイルシステムで編集作業を行い、MS-DOS 系のファイ - ルシステムに保存するときには、フラグはオンにならない。そのときは、 - ".~" ファイルの生成が失敗してエラーメッセージが表示される。そのと - きはオプション 'shortname' を使うこと。 - -ファイル名を指定せずに編集を始めたときは、メッセージ欄に "[無題]" と表示される。 -コマンド ":write" がファイル名引数付きで使われたときは、そのファイル名がカレン -トファイルのファイル名に設定される。こうなるのはフラグ 'F' |cpo-F| がオプション -'cpoptions' に含まれているときだけである (既定では含まれている)。これは空のバッ -ファにテキストを入力してから、それをファイルに保存するときに便利である。 -'cpoptions' が 'f' |cpo-f| を含んでいるときは (既定では含まれて「いない」)、 -":read file" でファイル名が設定される。これは引数なしでVimを起動してから、 -":read file" でファイルの編集を開始するときに便利である。 -ファイル名が設定されていて'filetype'が空のとき、ファイルタイプ判別オートコマン -ドが発生する。 - *not-edited* -ファイル名が設定されるのはその名前のファイルの編集を本当に始めるより前なので、 -そのファイルを誤って上書きしないようになっている。これはフラグ "notedited" を -設定することで可能になる。このフラグの状態はコマンド CTRL-G か ":file" で確認 -できる。フラグ "notedited" がオンのときは "[Not edited]" と表示される。 -カレントファイルの名前でバッファ内容を書き出すとき (":w!" で)、フラグ -"notedited" はオフに設定される。 - - *abandon* -Vim はバッファが変更されたかどうかを記憶していて、変更点が誤って失われないよう -になっている。保存せずに終了しようとしたり、別のファイルの編集を開始しようとす -ると、Vim は拒否する。この保護を無効にするためには、コマンドに '!' を追加する -こと。その場合、変更は失われる。例えばバッファの内容が変更されているとき、":q" -は使えないが ":q!" は使える。バッファの内容が変更されたかどうかを見るためには -コマンド CTRL-G を使うこと。バッファが変更されていたときは、メッセージに文字列 -"[変更あり]" が含まれる。 - -確認なしで変更を保存してほしいなら、オプション 'autowriteall' をオンにすること。 -関連するオプションには 'autowrite' があるが、これは Vi 互換で、全てのコマンド -に対して動作するわけではない。 - -変更されたバッファを保存せずにそのままにしておきたいなら、オプション 'hidden' -をオンにすること。 |hidden-buffer| を参照。 - -============================================================================== -2. ファイルの編集 *edit-a-file* - - *:e* *:edit* -:e[dit] [++opt] [+cmd] カレントファイルを開く。これは Vim 外部でカレントファ - イルに変更が加えられたとき、開き直すのに便利である。 - カレントバッファに変更が加えられているのに、オプション - 'autowriteall' がオフであるか、ファイルが書き込み可能 - でないときは、実行に失敗する。 - |++opt| と |+cmd| も参照。 - {Vi: ++opt は使えない} - - *:edit!* -:e[dit]! [++opt] [+cmd] - どのような場合でもカレントファイルを開く。カレントバッ - ファに対する変更は全て失われる。これは編集作業をもう一 - 度最初からやり直したいときに便利である。 - |++opt| と |+cmd| も参照。 - {Vi: ++opt は使えない} - - *:edit_f* -:e[dit] [++opt] [+cmd] {file} - {file} を開く。 - カレントバッファに変更が加えられていると実行に失敗する。 - ただしオプション 'hidden' がオンであるときと、 - 'autowriteall' がオンであり、かつファイルが書き込み可 - 能なときには実行できる。 - |++opt| と |+cmd| も参照。 - {Vi: ++opt は使えない} - - -:e[dit]! [++opt] [+cmd] {file} *:edit!_f* - どのような場合でも {file} を開く。カレントバッファに対 - する変更は全て失われる。 - |++opt| と |+cmd| も参照。 - {Vi: ++opt は使えない} - -:e[dit] [++opt] [+cmd] #[count] - [count] 番目のバッファ (コマンド |:files| で表示される - もの) を開く。このコマンドは [count] CTRL-^ と同じ - である。しかしオルタネートバッファがファイル名を持たな - いと ":e #" は機能しないが、CTRL-^ はそのときも機能す - る。 - |++opt| と |+cmd| も参照。 - {Vi: ++opt は使えない} - - *:ene* *:enew* -:ene[w] 無名のバッファの編集を新規に開始する。カレントバッファ - に変更が加えられていると実行に失敗する。ただしオプショ - ン 'hidden' がオンであるときと、'autowriteall' がオン - であり、かつファイルが書き込み可能なときには実行できる。 - 'fileformats' の値が空でないとき、その先頭の形式が新バッ - ファに適用される。'fileformats' の値が空のときは、カレ - ントバッファの 'fileformat' の値が使われる。 - {Vi にはない} - - *:ene!* *:enew!* -:ene[w]! 無名のバッファの編集を新規に開始する。カレントバッファ - に対する変更は全て失われる。 - オプション 'fileformat' の値はコマンド |:enew| と同様 - に設定される。 - {Vi にはない} - - *:fin* *:find* -:fin[d][!] [++opt] [+cmd] {file} - オプション 'path' 内のディレクトリから {file} を探し、 - それを |:edit| する。 - {Vi にはない} {Vi mが |+file_in_path| 機能付きでコンパ - イルされたときのみ有効} - -:{count}fin[d][!] [++opt] [+cmd] {file} - コマンド ":find" と同様だが、オプション 'path' 内のディ - レクトリで {count} にマッチしたファイルを編集する。つ - まり ":2find file" とすると 'path' 内で2番目に見つかっ - た "file" を編集する。'path' 内で見つかったマッチが - {count} より少ないと、エラーメッセージが表示される。 - - -:ex [++opt] [+cmd] [file] *:ex* - :editと同じ。 - - *:vi* *:visual* -:vi[sual][!] [++opt] [+cmd] [file] - Ex モード内では: Ex モードから Normal モードに戻る。そ - れ以外はコマンド |:edit| と同じ。 - - *:vie* *:view* -:vie[w][!] [++opt] [+cmd] file - Ex モード内では: Ex モードから Normal モードに戻る。 - それ以外はコマンド |:edit| と同じだが、そのバッファに - 対してオプション 'readonly' をオンにする。 {Vi にはな - い} - - *CTRL-^* *CTRL-6* -CTRL-^ オルタネートファイルを編集する。たいていの場合、オルタ - ネートファイルは前に編集したファイルである。これを使う - と2つのファイル間を素早く切り替えることができる。これ - は ":e #" と同じだが、対象のファイル名が無い場合も機能 - する。 - オプション 'autowrite' か 'autowriteall' がオンならば、 - バッファを移動するときに書き込みをする。 - たいていは "^" と "6" は同じキーです。CTRL を押しなが - ら 6 のキーを押せば CTRL-^ を押したのと同じ効果を得ら - れます。しかし英語配列でないキーボードでは他のキーが割 - り当てられます。 - -[count]CTRL-^ [count] 番目のオルタネートファイルを編集する (コマンド - ":e #[count]" と同じ)。[count] が指定されないと、前に - 編集したファイルを編集する。これを使うと2つ (かそれ以 - 上) のファイル間を素早く行き来できる。 - さらに詳しくは上の|CTRL-^|を参照。 - {Vi にはない} - -[count]]f *]f* *[f* -[count][f コマンド "gf" と同じ。推奨されない。 - - *gf* *E446* *E447* -[count]gf カーソルの下か後ろの名前のファイルを編集する。 - 覚え方: "goto file"。 - オプション 'isfname' により、どの文字がファイル名に使 - われるはずなのかを調べる。ファイル名に続く句読点の - ".,:;!" は無視される。 - 'path' により、ファイルを探すディレクトリ名のリストを - 調べる。カレントファイルに対して相対的なファイルも探 - される。 - 'suffixesadd' により、拡張子を補ったファイル名を調べる。 - ファイルが見つからないと、'includeexpr' によってファイ - ル名を修正し、再びファイルを探す。 - [count] が指定されると、'path' 内で見つかった [count] - 番目のファイルを編集する。 - Vim がカレントファイルの破棄 |abandon| を拒否したとき - は、このコマンドの実行は失敗する。 - このファイルを新しいウィンドウで編集したいときは - |CTRL-W_CTRL-F| を使うこと。 - 新しいファイルを編集したいならば、次のようにする。 > - :e <cfile> -< どのような場合でもコマンド gf を機能させるには、次のよ - うにする。 > - :map gf :e <cfile><CR> -< カーソル下のファイル名が "type://machine/path" のよう - なハイパーテキスト・リンクであるならば、プラグイン - |netrw| が必要になる。 - Unixでは、文字 '~' は "~user/file" のように展開される。 - 環境変数も展開される |expand-env|。 - {Vi にはない} {Vi mが |+file_in_path| 機能付きでコンパ - イルされたときのみ有効} - - *v_gf* -{Visual}[count]gf コマンド "gf" と同様だが、編集するファイルの名前にはビ - ジュアル選択されたテキストが使われる。オプション - 'isfname' の値は無視される。先頭の空白は無視されるが、 - それ以外の空白や特殊文字はファイル名に含まれる。 - ({Visual} については |Visual-mode| を参照。) - {Vi にはない} - - *gF* -[count]gF "gf" と同じだが、ファイル名の後に番号があるとき、その - 行へカーソルが移動する点が異なる。ファイル名と行番号は - ファイル名でない文字('isfname' を参照)かつ数字でない文 - 字で区切られてなければならない。ファイル名、区切り文字、 - 番号の間の空白文字は無視される。 - 例: - eval.c:10 ~ - eval.c @ 20 ~ - eval.c (30) ~ - eval.c 40 ~ - - *v_gF* -{Visual}[count]gF "v_gf" と同じ。 - -以上のコマンドは1つのファイルの編集を開始するために使用される。これはファイル -がバッファに読み込まれ、カレントファイル名が設定されることを意味する。開かれる -ファイルはカレントディレクトリに依存する。コマンド |:cd| を参照。 - -ファイルが読み込まれた後に表示されるメッセージの説明については、 -|read-messages| を参照。 - -バッファ内がめちゃめちゃになって最初からもう1度やり直したいときには、コマンド -":e!" が使える。コマンド ":e" が便利なのは、カレントファイル名を変更したときだ -けである。 - - *:filename* *{file}* -ファイル名を指定する場所で使える特殊なアイテムについては、この節に書かれている -ことの他に |cmdline-special| に書かれている。 - -Note Unix と MS-DOS 以外に対する注意: 1つのファイル名を受け付けるコマンド -(":edit file" 等) では、ファイル名に空白が入っていても構わないが、ファイル名末 -尾の空白は無視される。これは、空白を含むファイル名が普通にあるシステム -(MS-Windows, Amiga等) では便利である。例: ":e Long File Name " を実行すると、 -ファイル "Long File Name" を開く。2つ以上のファイル名を受け付けるコマンド -(":next file1 file2" 等) では、ファイル名内の空白は '\' でエスケープしなければ -ならない。 - - *wildcard* *wildcards* -{file} 内のワイルドカードは展開される。使用できるワイルドカードの種類は、シス -テムによって異なる。以下は標準的なものである。 - ? あらゆる1文字にマッチ - * 何もないのも含め、全てにマッチ - ** 何もないのも含め、全てにマッチ。ディレクトリを再帰的にたどる。 - [abc] 'a', 'b' または 'c' にマッチ -ワイルドカードとしての特別な意味を無効にするには、前に '\' を置くこと。しかし -MS-Windowsでは '\' がパスの区切り文字なので、オプション 'isfname' の値に "[" -が含まれていると、"path\[abc]" はワイルドカード扱いになってしまう。これを避け -る単純な方法は、"path\[[]abc]" とすることである。すると文字通りのファイル -"path[abc]" を編集できる。 - - *starstar-wildcard* -"**" の展開は、Unix, Win32, Mac OS/X、その他数種類のシステムでのみ使用できる。 -"**" はディレクトリツリーを再帰的に検索する。深さの上限は100ディレクトリである。 -Note: いくつかのコマンドでは、この挙動が少し異なる。|file-searching| を参照。 -例: > - :n **/*.txt -これは次のファイルにマッチする: - ttt.txt - subdir/ttt.txt - a/b/c/d/ttt.txt -ワイルドカードでない文字を使うと、それらは最初のディレクトリにのみマッチする。 -例: > - :n /usr/inc**/*.h -これは次のファイルにマッチする: - /usr/include/types.h - /usr/include/sys/types.h - /usr/inc_old/types.h - *backtick-expansion* *`-expansion* -Unix などではファイル名にバッククォート '`' も使える。例: > - :e `find . -name ver\\*.c -print` -アスタリスク '*' の前の '\' は、シェルが find を実行する前に "ver*.c" を展開し -てしまうのを防ぐために必要となる。 -これは、必ず項目全体がバッククォートで括られているという制限付きで、他の多くの -システムでも機能する。最初のバッククォートの直前や最後のバッククォートの直後に -文字列を書くことはできない。 - - *`=* -バッククォート内を、外部コマンドとしてではなく Vim の式として展開させることも -できる。そのためには `={expr}` という構文を使えばよい。例: > - :e `=tempname()` -この式はほとんど何を含んでもよい。そのため、これを使って '"', '|', '%', '#' の -特別な意味を打ち消すこともできる。引数は改行で区切られる。式の結果がリスト -|List| になるときは、各要素が名前になる。改行も引数の区切りになる。 - - *++opt* *[++opt]* -引数のうち [++opt] はオプション 'fileformat', 'fileencoding' または -'binary' の値を、そのコマンドに限ってある値に指定し、不正な文字への対応を指定 -するために使われる。指定の形式は次の通り。 > - ++{optname} -または > -< ++{optname}={value} - -{optname} は次のうちのどれか: *++ff* *++enc* *++bin* *++nobin* *++edit* - ff または fileformat 'fileformat' を指定 - enc または encoding 'fileencoding' を指定 - bin または binary 'binary' を指定 - nobin または nobinary 'binary' を無効にする - bad 不正な文字への対応を指定する - edit |:read| 用。ファイルを編集するときと同じように - オプションの値を保つ。 - -{value} に空白を含めてはいけない。値は、そのオプションに対して適切なものなら何 -でもよい。例: > - :e ++ff=unix -こうすると 'fileformat' を "unix" に設定して同じファイルを編集し直す。 > - - :w ++enc=latin1 newfile -こうするとカレントバッファの内容を latin1 の文字コードで "newfile" に書き出す。 - -引数 [++opt] は空白で区切って複数指定してもよい。それらはみな引数 |+cmd| より -前に指定しなければならない。 - - *++bad* -"++bad=" の引数は、変換できない文字と不正なバイトをどうするかを指定する。とり -うる値は次の3つのうちどれかである: - ++bad=X 不正な文字をこの1バイト文字で置き換える。 - ++bad=keep 不正な文字を変換せずにそのままにしておく。Note これを使うとテ - キスト中に不正なバイトが現れることになる。 - ++bad=drop 不正な文字を削除する。 - -既定値は "++bad=?" となっている。つまり、不正な文字をそれぞれクエスチョンマー -クで置き換える。逆クエスチョンマーク(latin-1 の 0xBF)が使われる場所もある。 - -Note ++bad をつけてエラーにならなかったとしても、すべてのコマンドが ++bad に対 -応しているわけではない。 - -Note 読み込み時に上の方法で 'fileformat' と 'fileencoding' を指定すると、それ -らは以後その値に設定されることに注意。書き込み時に設定してもそうはならず、次に -書き込むときには以前の値が使われる。'binary'オプションも同様。 - - *+cmd* *[+cmd]* -引数 [+cmd] は、新しく開いたファイルでカーソルの位置を指定したり、他のあらゆる -コマンドを実行するために使われる: - + 最後の行で編集を開始する。 - +{num} {num} 行目で編集を開始する。 - +/{pat} {pat} を含んだ最初の行で編集を開始する。 - +{command} 新しいファイルを開いた後に {command} を実行する。 - {command} には任意の Ex コマンドが使える。 -{pat} や {command} に空白を含めるためには、その前に '\' を付ける。'\' そのもの -を使うには、2回ずつ繰り返すこと。 > - :edit +/The\ book ファイル - :edit +/dir\ dirname\\ ファイル - :edit +set\ dir=c:\\\\temp ファイル -Note 最後の例では '\' の繰り返しが2回行われていることに注意。"+cmd" の引数なの -で1回、コマンド ":set" のためにもう1回だ。 - - *file-formats* -オプション 'fileformat' はファイルに対して <EOL> の形式を設定する。 -'fileformat' <EOL>の文字 形式の名称 ~ - "dos" <CR><NL> または <NL> DOS形式 *DOS-format* - "unix" <NL> Unix形式 *Unix-format* - "mac" <CR> Mac形式 *Mac-format* -以前はオプション 'textmode' が使われていた。現在ではそれは時代遅れである。 - -ファイルを読み込むときに、上で述べた文字は <EOL> として解釈される。DOS 形式 -(MS-DOS、OS/2 と Win32 での既定値) では、<CR><NL> と <NL> の両方が <EOL> と解 -釈される。 Note DOS 形式でファイルを保存するときには、<NL> 1 個ごとに対して -<CR> が追加されることに注意。|file-read| も参照。 - -ファイルを書き込むときには、上で述べた文字が <EOL> として使われる。DOS形式では -<CR><NL> が使われる。|DOS-format-write| も参照。 - -DOS 形式でファイルを読み込んで、Unix 形式でそれを保存することも可能である。 -('fileformats' が "dos" を含んでいると仮定すると) 以下の操作は全ての <CR><NL> -を <NL> で置き換えることになる。 > - :e ファイル - :set fileformat=unix - :w -('fileformats' の値に "unix" が含まれているとき) Unix形式でファイルを読み込ん -で、DOS形式で保存すると、<NL> は全て <CR><NL> で置き換えられる。 > - :e ファイル - :set fileformat=dos - :w - -新しいファイルの編集を開始したときオプション 'fileformats' の値が空でないなら -ば(それがデフォルト)、Vim はファイルが指定された形式で改行されているかどうか検 -出を試みる。値が "unix,dos" であるときは、Vim は1個の <NL> (Unix と Amiga 形 -式)か <CR><NL> の組 (MS-DOS 形式) が使われるものとして行を調べる。全ての行が -<CR><NL> で終わっているときだけ、'fileformat' の値は "dos" に設定され、そうで -なければ "unix" に設定される。'fileformats' の値が "mac" を含んでいて、ファイ -ルに <NL> が1個も見つからないときは、'fileformat' の値は "mac" に設定される。 - -'fileformat' の値が MS-DOS 以外のシステム上で "dos" に設定されると、普通でない -ことが起きていることを気付かせるために、メッセージ "[dosフォーマット]" が表示 -される。'fileformat' の値が "unix" であると、MS-DOSシステムでは -"[unixフォーマット]" のメッセージが表示される。'fileformat' の値が "mac" であ -ると、Macintosh以外の全てのシステムでは、メッセージ "[macフォーマット]" が表示 -される。 - -オプション 'fileformats' の値が空で、DOS 形式が使用されているが、ファイルを読 -み込んでいるときにいくつかの行が <CR><NL> で終わっていなかったならば、ファイル -のメッセージ内に "[CR無]" が含まれる。 -'fileformats' の値が空で、Mac 形式が使用されているが、ファイルを読み込んでいる -ときに <NL> が見つかったならば、ファイルの -メッセージ内に "[NL無]" が含まれる。 - -新しいファイルが存在しないと、'fileformats' の値が空のときにはカレントバッファ -の 'fileformat' の値が使われる。そうでなければ、'fileformats' 内の1番目の形式 -が新しいファイルに対して用いられる。 - -実行可能ファイルやバイナリファイル、Vim スクリプトファイルを編集する前には、 -オプション 'binary' をオンに設定するべきだ。これにはオプション "-b" を付けて -Vimを起動するのが簡単である。こうすると 'fileformat' が使われなくなる。こうし -ないと1個の <NL> が不意に <CR><NL> で置き換えられてしまうことを覚悟しなければ -ならない。 - -オプション 'key' をオンに設定することで、保存されるファイルを暗号化できる。こ -れは他人がユーザのファイルを読むことに対して、ある程度の安全を保証する。 -|encryption| - -============================================================================== -3. 引数リスト *argument-list* *arglist* - -Vim の開始時に複数のファイル名を与えると、それらは引数リストとして記憶される。 -リスト内のファイルにはどれでも移動できる。 - -これをコマンド |:buffers| で表示されるバッファリストと混同してはいけない。引数 -リストは Vi から既にあったが、バッファリストは Vim で新たに導入された。引数リ -スト内のファイルはバッファリストにも含まれる (コマンド |:bdel| や |:bwipe| で -消去されない限り)。逆にバッファリスト内のファイルが引数リストに含まれないこと -は普通にある。 - -この話題はユーザマニュアルの第 |07.2| 章で紹介されている。 - -グローバルな引数リストが1個あり、これは既定では全てのウィンドウに使われる。ウィ -ンドウについてローカルな引数リストを新たに創ることもできる。|:arglocal| を参照。 - -引数リストは以下のコマンド及び expression 用関数 |argc()| と |argv()| で利用で -きる。これらはみなカレントウィンドウの引数リストに対して働く。 - - *:ar* *:args* -:ar[gs] 引数リストを表示する。カレントファイルは '[' ']' で挟 - まれて表示される。 - -:ar[gs] [++opt] [+cmd] {arglist} *:args_f* - {arglist} を新たな引数リストとして定義し、そのうち最初 - のファイルの編集を始める。変更点があり、Vimがカレント - バッファを放棄 |abandon| したくないときには失敗する。 - |++opt| と |+cmd| も参照。 - {Vi: ++opt はない} - -:ar[gs]! [++opt] [+cmd] {arglist} *:args_f!* - {arglist} を新たな引数リストとして定義し、そのうち最初 - のファイルの編集を始める。カレントバッファに対する変更 - 点は全て失われる。 - |++opt| と |+cmd| も参照。 - {Vi: ++opt はない} - -:[count]arge[dit][!] [++opt] [+cmd] {name} *:arge* *:argedit* - 引数リストに {name} を追加し、その編集を始める。 - {name} が既に引数リスト内にあるときは、その編集を始め - る。 - これはコマンド |:argadd| を使い、次に |:edit| を使うの - と同じである。 - Note 指定できるファイルは1個であり、|:edit| と同様ファ - イル名の中に空白が使えることに注意。[count] は - |:argadd| と同様に使われる。 - カレントファイルが放棄 |abandon| できないときは '!' が - 必要になる。 - |++opt| と |+cmd| も参照。 - {Vi にはない} - -:[count]arga[dd] {name} .. *:arga* *:argadd* - 引数リストに {name} を追加する。 - [count] が省かれると {name} は引数リストの現在の項目の - 次に挿入される。指定されると [count] 番目の項目の次に - 挿入される。引数リストが "a b c" で "b" が現在の引数の - 場合のコマンドの結果一覧: - コマンド 新たな引数リスト ~ - :argadd x a b x c - :0argadd x x a b c - :1argadd x a x b c - :99argadd x a b c x - 重複検査はないので、1個のファイルを引数リストに2回加え - ることもできる。 - 現在編集中のファイルは変更されない。 - {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル - されたときのみ有効} - Note 次の方法が使えることに注意。 > - :args ## x -< これは項目 "x" を追加し、新たなリストを並び替える。 - -:argd[elete] {pattern} .. *:argd* *:argdelete* *E480* - {pattern} にマッチするファイルを引数リストから削除する。 - {pattern} の意味はファイルパターンと同様なので、 - |file-pattern| を参照。現在の項目を削除するには "%" が - 使える。 - このコマンドは現在編集中のファイルが引数リストから削除 - されたときでも、それをそのままに保つ。 - 例: > - :argdel *.obj -< {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル - されたときのみ有効} - -:{range}argd[elete] 引数リストから {range} の範囲のファイルを削除する。 - 範囲の上限が大きすぎるときは、最後の引数までが削除され - る。例: > - :10,1000argdel -< とすると10以降が削除され、1から9は残る。 - {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル - されたときのみ有効} - - *:argu* *:argument* -:[count]argu[ment] [count] [++opt] [+cmd] - 引数リスト内で [count] 番目のファイルを編集する。 - [count] が省かれると現在の項目を編集する。変更点があり、 - Vimがカレントバッファを放棄 |abandon| したくないときに - は失敗する。 - |++opt| と |+cmd| も参照。 - {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル - されたときのみ有効} - -:[count]argu[ment]! [count] [++opt] [+cmd] - 引数リスト内で [count] 番目のファイルを編集する。カレ - ントバッファに対するいかなる変更も失われる。[count] が - 省かれると現在の項目を編集する。 - |++opt| と |+cmd| も参照。 - {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル - されたときのみ有効} - -:[count]n[ext] [++opt] [+cmd] *:n* *:ne* *:next* *E165* *E163* - 引数リストの中で [count] 個次のファイルを編集する。 - 変更点があり、Vimがカレントバッファを放棄 |abandon| し - たくないときには失敗する。 - |++opt| と |+cmd| も参照。 {Vi: count や ++opt はない} - -:[count]n[ext]! [++opt] [+cmd] - 引数リストの中で [count] 個次のファイルを編集する。カ - レントバッファに対するいかなる変更も失われる。 - |++opt| と |+cmd| も参照。 - {Vi: count や ++opt はない} - -:n[ext] [++opt] [+cmd] {arglist} *:next_f* - コマンド |:args_f| と同じ。 - -:n[ext]! [++opt] [+cmd] {arglist} - コマンド |:args_f!| と同じ。 - -:[count]N[ext] [count] [++opt] [+cmd] *:Next* *:N* *E164* - 引数リストの中で [count] 個前のファイルを編集する。変 - 更点があり、Vimがカレントバッファを破棄 |abandon| した - くないときには失敗する。 - |++opt| と |+cmd| も参照。 {Vi: count や ++opt はない} - -:[count]N[ext]! [count] [++opt] [+cmd] - 引数リスト内で [count] 個前のファイルを編集する。カレ - ントバッファに対するいかなる変更も失われる。 - |++opt| と |+cmd| も参照。 {Vi: count や ++opt はない} - -:[count]prev[ious] [count] [++opt] [+cmd] *:prev* *:previous* - コマンド |:Next| と同じ。 - |++opt| と |+cmd| も参照。 {Vi: 幾つかのヴァージョンに - のみ存在} - - *:rew* *:rewind* -:rew[ind] [++opt] [+cmd] - 引数リスト内で最初のファイルの編集を始める。変更点があ - り、Vimがカレントバッファを放棄 |abandon| したくないと - きには失敗する。 - |++opt| と |+cmd| も参照。 {Vi: ++opt はない} - -:rew[ind]! [++opt] [+cmd] - 引数リスト内で最初のファイルを編集する。カレントバッ - ファに対するいかなる変更も失われる。 - |++opt| と |+cmd| も参照。 {Vi: ++opt はない} - - *:fir* *:first* -:fir[st][!] [++opt] [+cmd] - コマンド |:rewind| の別名。 {Vi にはない} - - *:la* *:last* -:la[st] [++opt] [+cmd] - 引数リスト内で最後のファイルの編集を始める。変更点があ - り、Vimがカレントバッファを放棄 |abandon| したくないと - きには失敗する。 - |++opt| と |+cmd| も参照。 {Vi にはない} - -:la[st]! [++opt] [+cmd] - 引数リスト内で最初のファイルを編集する。カレントバッ - ファに対するいかなる変更も失われる。 - |++opt| と |+cmd| も参照。 {Vi にはない} - - *:wn* *:wnext* -:[count]wn[ext] [++opt] - カレントファイルを書き込み、引数リスト内で [count] 個 - 次のファイルの編集を始める。 - |++opt| と |+cmd| も参照。 {Vi にはない} - -:[count]wn[ext] [++opt] {file} - カレントファイルを {file} に書き込み、引数リスト内で - [count] 個次のファイルの編集を始める。ただし {file} が - 既に存在し、オプション 'writeany' がオフのときは失敗す - る。 - |++opt| と |+cmd| も参照。 {Vi にはない} - -:[count]wn[ext]! [++opt] {file} - カレントファイルを {file} に書き込み、引数リスト内で - [count] 個次のファイルの編集を始める。 - |++opt| と |+cmd| も参照。 {Vi にはない} - -:[count]wN[ext][!] [++opt] [file] *:wN* *:wNext* -:[count]wp[revious][!] [++opt] [file] *:wp* *:wprevious* - コマンド |:wnext| と同じだが、次でなく前のファイルに移 - る。 {Vi にはない} - -上のコマンドの [count] の既定値は1である。[count] を2回使えるコマンドもある。 -最後 (最も右) のものが使われる。 - -引数 [+cmd] が存在しないならば、カーソルはそのファイルに対して最後に認識された -位置に置かれる。オプション 'startofline' がオンのときは、カーソルは行の最初の -非空白文字に置かれ、オフのときは最後に認識された列が使われる。最後に認識された -カーソル位置がないときは、カーソルは最初の行 (Exモードでは最後の行) に置かれる。 - - *{arglist}* -引数リスト内のワイルドカードは展開され、ファイル名は並び替えられる。だからCの -ソースファイルを全て編集するには、コマンド "vim *.c" が使える。 Vimの中でコマ -ンド ":n *.c" としても同じである。 - -ファイル名は空白文字によって区切られる。ファイル名にスペースまたはタブを含める -には、その前にバックスラッシュを書くこと。例えば、"foo bar" という1つのファイ -ルを開くにはこうする: > - :next foo\ bar - -Unix およびその他いくつかのシステムではバッククォートも使える。例: > - :n `find . -name \\*.c -print` -アスタリスクの前の '\' は、"*.c" がプログラム find を実行する前にシェルで展開 -されるのを防ぐために必要となる。 - - *arglist-position* -引数リストがあるときは、ウィンドウのタイトル (それがあって、オプション 'title' -オンならば) やコマンド CTRL-G で出るファイル・メッセージで編集しているファイル -を知ることができる。次のようなものが表示されるだろう。 - (file 4 of 11) -オプション 'shortmess' の値が 'f' を含んでいるときは以下のようになる。 - (4 of 11) -実際は引数リスト内の現在の位置でないファイルを編集しているならば、以下のように -なる。 - (file (4) of 11) -これは、引数リストの中の4番目にいるが、編集中のファイルは引数リストの中の4番 -目でないことを意味する。これは ":e file" をするときに起こる。 - - -ローカルな引数リスト - -{Vi にはない} -{Vi mが |+windows| 機能と |+listcmds| 機能付きでコンパイルされたときのみ有効} - - *:arglocal* -:argl[ocal] グローバルな引数リストのローカルなコピーを作る。 - 別のファイルの編集は始めない。 - -:argl[ocal][!] [++opt] [+cmd] {arglist} - カレントウィンドウについてローカルな、新たな引数リスト - を定義する。 - ウィンドウが1個のときは |:args_f| と同じである。 - - *:argglobal* -:argg[lobal] カレントウィンドウにグローバルな引数リストを使う。 - 別のファイルの編集は始めない。 - -:argg[lobal][!] [++opt] [+cmd] {arglist} - カレントウィンドウにグローバルな引数リストを使う。 - コマンド |:args_f| と同様、グローバルな引数リストを新 - たに定義する。グローバルな引数リストを使っているウィン - ドウは全てこの新しいリストを参照するようになる。 - -複数の引数リストが存在可能であり、それらはウィンドウ同士で共有できる。共有され -ているときは、あるウィンドウ内で引数リストに変更を加えると、別のウィンドウの引 -数リストも影響を受ける。 - -ウィンドウが分割されると、新しいウィンドウはカレントウィンドウから引数リストを -受け継ぐ。すると2個のウィンドウは、片方でコマンド |:arglocal| か |:argglobal| -を使って別の引数リストを使うようになるまで、そのリストを共有することになる。 - - -引数リストを使う - - *:argdo* -:argdo[!] {cmd} 引数リスト内の全てのファイルで {cmd} を実行する。 - 以下と同様の動作になる。 > - :rewind - :{cmd} - :next - :{cmd} - etc. -< カレントファイルを放棄 |abandon| できず、'!' も付けら - れていないときは、実行は失敗する。どれかのファイル内で - エラーが検出されると、引数リスト内の以降のファイルには - 進まない。 - 引数リスト末尾のファイル (またはエラーの起きたファイル) - がカレントファイルになる。 - {cmd} の中では '|' で複数のコマンドを連結できる。 - {cmd} は引数リストに変更を加えてはならない。 - Note: このコマンドの実行中、オプション 'eventignore' - でオートコマンドのイヴェント Syntax を指定することでそ - れを無効化できる。こうすると各ファイルの処理がかなり高 - 速になる。 - {Vi にはない} {Vi mが |+listcmds| 機能付きでコンパイル - されたときのみ有効} - コマンド |:windo| や |:bufdo| も参照。 - -例: > - :args *.c - :argdo set ff=unix | update -こうするとオプション 'fileformat' の値を "unix" に設定し、変更があったファイル -を保存する。それが全ての *.c ファイルについて行われる。 - -例: > - :args *.[ch] - :argdo %s/\<my_foo\>/My_Foo/ge | update -こうすると全ての *.c ファイルと *.h ファイルで単語 "my_foo" を "My_Foo" に変え -る。コマンド ":substitute" でフラグ "e" を使って "my_foo" という単語の使われて -いないファイルでエラーが起きるのを防いでいる。コマンド ":update" は変更のあっ -たファイルのみを保存する。 - -============================================================================== -4. 書き込み *writing* *save-file* - -Note: オプション 'write' がオフのときは、どのファイルも書き込めないことに注意。 - - *:w* *:write* - *E502* *E503* *E504* *E505* - *E512* *E514* *E667* *E796* -:w[rite] [++opt] バッファ全体をカレントファイルに書き込む。これはファイ - ルに対する変更点を保存するときの普通の方法である。 - オプション 'readonly' がオンであるかファイルに書き込め - ない理由が何かあるときには実行に失敗する。 - -:w[rite]! [++opt] ":write" と似ているが、'readonly' がオンであったり書き - 込みが拒否される理由があっても無理矢理書き込みを行う。 - Note: これはファイルの権限や所属を変更したり、(シンボ - リック) リンクを途切れさせるかもしれないので注意。それ - を避けるには 'cpoptions' にフラグ 'W' を追加すること。 - -:[range]w[rite][!] [++opt] - 指定された範囲の行をカレントファイルに書き出す。これは - 普通の操作ではない。ファイルがバッファ内の全ての行を - 含むようにならないからだ。 - - *:w_f* *:write_f* -:[range]w[rite] {file} 指定された範囲の行をファイル {file} に書き出す。ただし - それが既に存在し、かつオプション 'writeany' がオフのと - きは失敗する。 - - *:w!* -:[range]w[rite]! [++opt] {file} - 指定された範囲の行をファイル {file} に書き出す。既存の - ファイルは上書きされる。 - - *:w_a* *:write_a* *E494* -:[range]w[rite][!] [++opt] >> - 指定された範囲の行をカレントファイルに追加する。 - -:[range]w[rite][!] [++opt] >> {file} - 指定された範囲の行をファイル {file} に追加する。'!' を - 付けるとそのファイルがまだ存在しなくても書き込みを行う。 - - *:w_c* *:write_c* -:[range]w[rite] [++opt] !{cmd} - [range] の行を標準入力として {cmd} を実行する ('!' の - 前の空白に注意)。{cmd} は ":!{cmd}" のように実行され、 - 全ての '!' は前回のコマンドに置き換えられる |:!|。 - -コマンド ":w" での [range] の既定値はバッファ全体 (1,$) である。バッファ全体を -書き込むと、そのバッファは変更されていないとみなされるようになる。 -":w somefile" によって別のファイルに書き出した場合は、'cpoptions' の "+" フラ -グに依存する。"+" が含まれている場合は、バッファがまだ元のファイルと異なってい -たとしても、書き込みコマンドによって 'modified' フラグがオフになる。 - -":w" にファイル名が与えられるとそれがオルタネートファイルになる。これは例えば -書き込みに失敗した後に ":w #" でもう一度試したいときに使える。オプション -'cpoptions' からフラグ 'A' を取り除くとこれを無効化できる。 - - *:sav* *:saveas* -:sav[eas][!] [++opt] {file} - カレントファイルをファイル名 {file} として保存し、カレ - ントバッファのファイル名を {file} に変える。それまでの - カレントファイルの名前はオルタネートファイルの名前にな - る。既存のファイルを上書きするには [!] が必要になる。 - 'filetype' が空の場合、保存の前に新しいファイル名に対 - してファイルタイプ検出が行われる。 - 保存が成功すると 'readonly' がオフになる。 - {Vi にはない} - - *:up* *:update* -:[range]up[date][!] [++opt] [>>] [file] - ":write" と似ているが、バッファに変更点があるときのみ - 書き込みを行う。 {Vi にはない} - - -複数バッファでの書き込み *buffer-write* - - *:wa* *:wall* -:wa[ll] 変更点のあるバッファを全て書き込む。ファイル名を持たな - いバッファや読み込み専用のバッファは書き込まれない。 - {Vi にはない} - -:wa[ll]! 変更点のあるバッファを、読み込み専用であっても全て書き - 込む。ファイル名を持たないバッファは書き込まれない。 - {Vi にはない} - - -Vimは別の場所で変更を受けたファイルを上書きしようとしたときには警告する。 -|timestamp| を参照。 - - *backup* *E207* *E506* *E507* *E508* *E509* *E510* -オプション 'backup', 'writebackup' または 'patchmode' がオンのときに既存のファ -イルに (追加でなく) 書き込もうとすると、元のファイルのバックアップが作られる。 -ファイルは元のコピーかリネームしたものである ('backupcopy' を参照)。ファイルの -書き込みに成功したとき 'writebackup' がオンで 'backup' がオフだと、バックアッ -プファイルは削除される。'patchmode' がオンのときはバックアップファイルはリネー -ムされるかも知れない。 - - *backup-table* -'backup' 'writebackup' 動作 ~ - off off バックアップは作られない - off on カレントファイルをバックアップし、後で消去する (既定) - on off 古いバックアップを消去し、カレントファイルをバックアッ - プする - on on 古いバックアップを消去し、カレントファイルをバックアッ - プする - -'backupskip' に指定したパターンが書き込まれるファイルの名前にマッチしたときは、 -バックアップファイルは作られない。その場合 'backup' と 'writebackup' の値は無 -視される。 - -'backup' がオンのときは、古いバックアップファイル (新しいバックアップファイル -と同名) は削除される。'backup' がオフだが 'writebackup' がオンのときは、既存の -バックアップファイルは削除されない。ファイルの書き込み中に作られたバックアップ -ファイルは別の名前になる。 - -ファイルシステムによってはクラッシュで新しいファイルとバックアップを両方失うこ -ともあり得る (新しいファイルは存在はしても中身が滅茶苦茶になっていたり)。その -場合は復帰機能を試すこと。スワップファイルがまだディスクに残っているかもしれな -いからだ。 |:recover| - -オプション 'backupdir' で指定されたディレクトリはバックアップファイルをしまう -のに使われる。 (既定値: 書き込まれたファイルと同じディレクトリ) - -バックアップが、元のファイルのコピーである新規のファイルになるか、元のファイル -がリネームされたものになるかは、オプション 'backupcopy' で決まる。コピーが作ら -れるのがいつでファイルがリネームされるのがいつかについてはその箇所を参照。 - -バックアップファイルの生成に失敗すると、書き込みは行われない。それでも書き込み -たいときにはコマンドに '!' を追加すること。 - - *write-permissions* -新しいファイルを書き込むときは読み書きの権限が付きます。unix ではマスクの値は -0666 に umask を適用させたものになります。Vim で開いたファイルに書き込むときは -権限は維持されますが、s ビットはクリアされます。 - - *write-readonly* -オプション 'cpoptions' の値にフラグ 'W' が含まれるときは、Vimは読み込み専用 -ファイルの上書きを拒否する。'W' が含まれないと、システムが許可すれば (ディレク -トリは書き込み可能でなければならない) ":w!" は読込専用ファイルを上書きする。 - - *write-fail* -新ファイルの書き込みに失敗したときは、変更点と元のファイルを同時に失わないよう -注意しなければならない。バックアップファイルがないときに書き込みに失敗すると、 -その時点で元のファイルはなくなっているのだ!ファイルを書き出すまでVIMを終了し -てはいけない!バックアップが作られていたら、それが元のファイルの所に戻される -(可能ならば)。Vimを終了して変更点が失われても、大抵は元のファイルはそこに残っ -ている。Vimが元のファイルを戻すのに失敗すると、元のファイルが失われた旨のエ -ラーメッセージが出る。 - - *DOS-format-write* -オプション 'fileformat' の値が "dos" のときは、<EOL> には <CR> <NL> が使われ -る。これは MS-DOS, Win32とOS/2での既定値である。その他のシステムでは -"[dos format]" というメッセージが表示され、普通でない <EOL> が使われていること -を知らせてくれる。 - *Unix-format-write* -'fileformat' の値が "unix" のときは、<EOL> には <NL> が使われる。MS-DOS, Win32 -とOS/2では "[unix format]" というメッセージが表示される。 - *Mac-format-write* -'fileformat' の値が "mac" のときは、<EOL> には <CR> が使われる。Mac以外のシス -テムでは "[mac format]" というメッセージが表示される。 - -|file-formats| やオプション 'fileformat' 及び 'fileformats' も参照。 - - *ACL* -ACLは Access Control List を表す。これはファイルのアクセス権を制御するための先 -進的な手段である。新しいMS-WindowsとUnixシステムで使われるが、ファイルシステム -がそれをサポートするときのみである。 -Vimはファイルを書き込むときにACL情報を保とうとする。バックアップファイルは元の -ファイルのACL情報を受け継ぐ。 -ACL情報は (ファイルを開くときに) ファイルが読込専用かどうか調べるのにも使われる。 - - *read-only-share* -MS-Windowsがネットワーク上でドライブを共有するとき、そこは読込専用にすることが -できる。つまりファイルに読込専用の属性がなく、NCネットワーク共有ドライブ上の -ACL設定が書き込みを許可していても、そのファイルには書き込みができない。Win32プ -ラットフォーム上のVimは読込専用のネットワークドライブを判別し、ファイルを読込 -専用とマークする。そのファイルは |:write| で上書きできない。 - - *write-device* -ファイル名が実際はデヴァイス名のとき、Vimはバックアップを作ろうとはしない (無 -理な話だ)。デヴァイスは既に存在するので、保存にはフラグ "!" が必要である。 -Unixでの例: > - :w! /dev/lpt0 -MS-DOSやMS-Windowsでの例: > - :w! lpt0 -Unixでは、ファイル名が通常ファイルやディレクトリを指していないときにデヴァイス -と判断される。VimはFifo及び名前付きパイプもデヴァイスと判断する。 -MS-DOSとMS-Windowsでは、デヴァイスは名前から判断される: - AUX - CON - CLOCK$ - NUL - PRN - COMn n=1,2,3... 等 - LPTn n=1,2,3... 等 -ファイル名は大文字でも小文字でもよい。 - -============================================================================== -5. 書き込みと終了 *write-quit* - - *:q* *:quit* -:q[uit] カレントウィンドウを閉じる。最後のウィンドウで使うとを - Vimを終了させる。変更点があってVimがカレントバッファを - 放棄 |abandon| しようとしないときや、引数リスト内で末 - 尾にないファイルを編集しているときには失敗する。 - 他のタブページが存在するとき、カレントタブページ内の最 - 後のウィンドウを閉じるとカレントタブページが閉じられる。 - |tab-page| - -:conf[irm] q[uit] 終了だが、変更点があるときや、引数リスト内で末尾にない - ファイルを編集しているときにはプロンプトを表示する。 - コマンド |:confirm| やオプション 'confirm' を参照。 - {Vi にはない} - -:q[uit]! 可視なバッファに変更点があっても書き込みをせずに終了す - る。隠れバッファに変更点があると終了しない。必ず終了す - るにはコマンド ":qall!" を使うこと。 - -:cq[uit] 書き込みをせずに必ず終了し、エラーコードを返す。コマン - ド |:cq| を参照。Manx の QuickFix モードで使われる - (|quickfix| を参照)。 {Vi にはない} - - *:wq* -:wq [++opt] カレントファイルを書き込んでVimを終了する。ファイルが - 読込専用であるときや、バッファに名前が付いていないとき - には書き込みに失敗する。引数リスト内の末尾のファイルが - まだ編集されていないときには終了に失敗する。 - -:wq! [++opt] カレントファイルを書き込んでVimを終了する。バッファに - 名前が付いていないときには書き込みに失敗する。 - -:wq [++opt] {file} {file} に書き込んでVimを終了する。引数リスト内の末尾の - ファイルがまだ編集されていないときには終了に失敗する。 - -:wq! [++opt] {file} {file} に書き込んでVimを終了する。 - -:[range]wq[!] [++opt] [file] - 上と同様だが、[range] の範囲内の行のみを書き込む。 - - *:x* *:xit* -:[range]x[it][!] [++opt] [file] - |:wq| と似ているが、変更点があるときのみ書き込む。 - オプション 'hidden' がオンで複数のウィンドウが存在する - とき、ファイルを書き込んだ後はカレントバッファは隠れ - バッファになる。 - - *:exi* *:exit* -:[range]exi[t][!] [++opt] [file] - |:xit| と同様。 - - *ZZ* -ZZ 変更点があればカレントファイルを書き込み、Vimを終了す - る (コマンド |:x| と同様)。 Note: カレントファイルを複 - 数のウィンドウで開いているときは、ファイルに変更点があ - れば書き込まれ、そしてウィンドウが閉じられることに注意。 - - *ZQ* -ZQ 変更点を確かめずに終了する (コマンド ":q!" と同様)。 - {Vi にはない} - -複数のウィンドウとバッファ *window-exit* - - *:qa* *:qall* -:qa[ll] 変更点のあるバッファがない限り、Vimを終了する (変更点のある次 - のバッファに移動するにはコマンド ":bmod" を使うこと)。 - オプション 'autowriteall' がオンのときは、|:wqall| と同様に変 - 更点のあるバッファが全て書き込まれる。 {Vi にはない} - -:conf[irm] qa[ll] - Vimを終了する。変更点のあるバッファがあるときはプロンプトを表 - 示する。コマンド |:confirm| を参照すること。 {Vi にはない} - -:qa[ll]! Vimを終了する。バッファの変更点は全て失われる。 {Vi にはない} - 終了コードを非ゼロにしたい場合は |:cquit| を使う。 - - *:quita* *:quitall* -:quita[ll][!] コマンド |:qall| と同様。 {Vi にはない} - -:wqa[ll] [++opt] *:wqa* *:wqall* *:xa* *:xall* -:xa[ll] 変更点のあるバッファを全て書き込み、Vimを終了する。ファイル名 - のないバッファや読込専用または何らかの理由で書き込めないバッ - ファがあるときは、Vimを終了しない。 {Vi にはない} - -:conf[irm] wqa[ll] [++opt] -:conf[irm] xa[ll] - 変更点のあるバッファを全て書き込み、Vimを終了する。読込専用ま - たは何らかの理由で書き込めないバッファがあるときは、プロンプト - を表示する。コマンド |:confirm| を参照。 {Vi にはない} - -:wqa[ll]! [++opt] -:xa[ll]! 変更点のあるバッファを、読込専用であっても全て書き込み、Vimを - 終了する。ファイル名のないバッファや何らかの理由で書き込めない - バッファがあるときは、Vimを終了しない。 {Vi にはない} - -============================================================================== -6. ダイアログ *edit-dialogs* - - *:confirm* *:conf* -:conf[irm] {command} {command} を実行する際、確認が必要ならばダイアログを表 - 示する。コマンド ":q", ":qa" や ":w" と共に使える - (":w" では読み取り専用属性を無視するかどうかを尋ねる)。 - -例: > - :confirm w foo -< ファイル "foo" が既に存在するときに確認を取る。 > - :confirm q -< バッファに修正個所があるときに確認を取る。 > - :confirm qa -< 修正個所があり、保存されていないバッファがあるとき、各バッファについて - 保存するか破棄するか尋ねる。「全て保存」や「全て破棄」という選択肢もあ - る。 - -常に ":confirm" を使いたいなら、代わりにオプション 'confirm' をオンにすること。 - - *:browse* *:bro* *E338* *E614* *E615* *E616* *E578* -:bro[wse] {command} {command} の引数のためにファイル選択ダイアログを開く。 - 現在の所、これらのコマンドと共に使える |:e|, |:w|, - |:wall|, |:wq|, |:wqall|, |:x|, |:xall|, |:exit|, - |:view|, |:sview|, |:r|, |:saveas|, |:sp|, |:mkexrc|, - |:mkvimrc|, |:mksession|, |:mkview|, |:split|, - |:vsplit|, |:tabe|, |:tabnew|, |:cfile|, |:cgetfile|, - |:caddfile|, |:lfile|, |:lgetfile|, |:laddfile|, - |:diffsplit|, |:diffpatch|, |:open|, |:pedit|, - |:redir|, |:source|, |:update|, |:visual|, |:vsplit|, - 'confirm' がオンのときは |:qall| も。 - {Vi mのWin32版、Motif、Athena、GTKやMacのGUI版でのみ利 - 用可能。} - |:browse|が使えない時はエラーが表示される。|+browse| - の機能がなかったり、{command} が :browse に対応してい - ない場合、{command} はダイアログなしで実行される。 - ":browse oldfiles" については |:oldfiles| を参照。 - -使用法については、例をいくつか見るのが一番分かりやすい。 > - :browse e $vim/foo -< ファイル選択ダイアログをディレクトリ $vim/foo 内で開き、選択さ - れたファイルを編集する。 > - :browse e -< ファイル選択ダイアログを'browsedir'で指定されたディレクトリ内 - で開き、選択されたファイルを編集する。 > - :browse w -< ファイル選択ダイアログをカレントファイルのディレクトリ内で、カ - レントファイルの名前を既定値として開き、選択されたファイル名を - 使ってバッファを保存する。 > - :browse w C:/bar -< ファイル選択ダイアログをディレクトリ C:/bar 内で、カレントファ - イルの名前を既定値として開き、選択されたファイル名を使ってバッ - ファを保存する。 -オプション 'browsedir' も参照すること。 -Vimのファイル選択ダイアログをサポートしないヴァージョンでは、コマンドはそのま -ま実行される。 - - *browsefilter* -MS-WindowsのVimでは、ファイル選択ダイアログで使われるフィルタを指定できる。グ -ローバル変数 g:browsefilter かローカル変数 b:browsefilter を設定すると、フィル -タをグローバルにまたはバッファについてローカルに変更できる。この変数を指定する -際の書式は "{filter label}\t{pattern};{pattern}\n" で、{filter label} はコンボ -ボックス「ファイルの種類」に使われるテキスト、{pattern} はファイル名を選別する -フィルタである。';' で区切れば複数のパターンを指定できる。 - -Motif上のVimでは同じ書式が使えるが、実際には1番目のパターンだけが使われる -(Motifではパターンは1種類しか使えないが、それをユーザが編集できる)。 - -例えばダイアログでVim関連ファイルだけを表示するには、以下のコマンドを使う。 > - - let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n" - -フィルタは、変数 b:browsefilter を設定することでバッファ毎に設定できる。 -b:browsefilter はファイルタイププラグインで設定することが一番多いだろう。 -するとファイルブラウザ・ダイアログには現在編集中のファイルのタイプに関連した候 -補が表示される。弊害:別の種類のファイルの編集が始め辛くなる。対策は、フィルタ -の最後の項目に "All Files\t*.*\n" を加え、ユーザが望みのファイルにアクセスでき -る道を残すことだ。 - -============================================================================== -7. カレントディレクトリ *current-directory* - -コマンド |:cd| や |:lcd| を使って別のディレクトリに移ることができる。すると -(訳注: そのディレクトリ内のファイルを編集するとき) そのディレクトリ名をファイ -ル名の前に付けなくても良くなる。また違いは ":!ls" 等の外部コマンドの実行の際に -も現れる。 - -'cpoptions' にフラグ '.' が含まれている場合、カレントバッファが変更されている -と、"!" をつけない限りディレクトリ変更は失敗する。 - - *:cd* *E747* *E472* -:cd[!] Unix以外のシステムでは: カレントディレクトリ名を表示す - る。Unixシステムでは: カレントディレクトリをホームディ - レクトリに変更する。全てのシステムで、カレントディレク - トリの表示にはコマンド |:pwd| が使える。 - -:cd[!] {path} カレントディレクトリを {path} に変更する。 - {path} が相対的な指定なら、オプション 'cdpath' 内に列 - 挙されたディレクトリを基準に判断される。既に開かれたファ - イルについては、フルパスが把握されているので変化はない。 - しかし引数リスト |arglist| 内のファイルの意味は変わる - かもしれない! - MS-DOSではアクティブなドライブも変更する。 - カレントファイルのディレクトリに移るにはこうする。 > - :cd %:h -< - *:cd-* *E186* -:cd[!] - 前のカレントディレクトリ (前にコマンド ":cd {path}" で - 移った所) に移る。 {Vi にはない} - - *:chd* *:chdir* -:chd[ir][!] [path] コマンド |:cd| と同じ。 - - *:lc* *:lcd* -:lc[d][!] {path} コマンド |:cd| と似ているが、カレントウィンドウのカレ - ントディレクトリのみを変更する。別のウィンドウのカレン - トディレクトリに変化はない。 {Vi にはない} - - *:lch* *:lchdir* -:lch[dir][!] |:lcd| と同じ。 {Vi にはない} - - *:pw* *:pwd* *E187* -:pw[d] カレントディレクトリ名を表示する。 {Vi: pwdはない} - |getcwd()| も参照。 - -コマンド |:lcd| が使われない限り、全てのウィンドウは同じカレントディレクトリを -共有する。別のウィンドウに移るコマンドを使ってもカレントディレクトリについての -変化は何もない。 -コマンド |:lcd| があるウィンドウ内で使われると、指定されたディレクトリがそのウィ -ンドウに対してのカレントウィンドウになる。コマンド |:lcd| が使われたことのない -ウィンドウはグローバルなカレントウィンドウを使い続ける。別のウィンドウに移った -ときは、カレントディレクトリは (訳注: 移動先に対して) 最後に指定されたローカル -なカレントディレクトリになる。何も指定されていなかったら、グローバルなカレント -ディレクトリが使われる。 -コマンド |:cd| が使われると、カレントウィンドウは固有のローカルなカレントディ -レクトリを失い、グローバルなカレントディレクトリを使うようになる。 - -|:cd| を使った後は、ファイルの読み書きにはフルパス名が使われる。ネットワーク接 -続されたファイルシステムではこれが問題を起こすことがある。フルパス名を使った結 -果、現在使用中のファイル名は同じファイルを指し続けることになる。例: ファイル -a:test とディレクトリ a:vim があるとき、":e test" ":cd vim" ":w" とするとファ -イル a:test を上書きし、a:vim/test には書き込まない。しかし ":w test" とすると -ファイル a:vim/test が書き込まれる。それは新しいファイル名が指定され、":cd" 以 -前のファイル名には言及してないからだ。 - -============================================================================== -8. バイナリファイルの編集 *edit-binary* - -Vimはテキストファイルの編集のために作られたが、バイナリファイルを編集すること -もできる。Vimの引数 |-b| (バイナリ"binary"の'b') はVimにファイル入出力をバイナ -リモードで行わせ、バイナリファイルの編集のためにいくつかのオプションを設定する -('binary' をオン、'textwidth' を0、'modeline' をオフ、'expandtab' をオフにす -る)。オプション 'binary' をオンにすることも同じ効果を持つ。これはファイルの読 -み込み前にするということを忘れてはならない。 - -バイナリファイルを編集するときに忘れてはならないことがいくつかある: -- 実行可能ファイルを編集するときには、文字数が変わってはならない。テキストを変 - 更するには "R" か "r" だけを使用すること。"x" やバックスペースで文字を削除し - てはならない。 -- オプション 'textwidth' の値を0に設定する。そうしないと行が不意に2つに分割さ - れてしまう。 -- <EOL> の数があまり多くないときは、一行は非常に長くなる。スクリーンに収まりき - らない行を編集したいならば、オプション 'wrap' をオフにすること。その時には水 - 平スクロールが使われる。行が余りにも長いならば (Amigaでは約32767文字以上、 - 32bitシステムではそれ以上、|limits| を参照)、その行は編集できない。ファイル - を読み込むときに、その行は分割される。ファイルを読み込むときに - "out of memory" エラーが出る可能性もある。 -- ファイルを読み込む前にオプション 'binary' がオンになっていることを確かめるこ - と。さもないと <CR> <NL> と <NL> の両方が行末とみなされ、ファイルが保存され - るときに <NL> が <CR> <NL> で置き換えられてしまう。 -- <Nul> 文字はスクリーンでは ^@ として表示される。それは "CTRL-V CTRL-@" か - "CTRL-V 000" で入力できる。{Vi ファイル内で <Nul> 文字を扱えない} -- <NL> 文字を挿入すると、行が分割される。バッファをファイルに保存するときには、 - <NL> が <EOL> として保存される。 -- ファイルの終わりに <EOL> が一つもないとき、通常Vimはそれを追加する。これを防 - ぐにはオプション 'binary' をオンにすること。最後の <EOL> を追加したいならば、 - オプション 'endofline' をオンにする。最後の行に <EOL> があったかどうかを知る - ためにこのオプションの値を見てもよい (テキストからは判断できない)。 - -============================================================================== -9. 暗号化 *encryption* - -Vimはファイルを暗号化して保存し、再び読み取ることができる。暗号化されたテキス -トは正しい鍵がないと読むことができない。 -{Vi mが |+cryptv| 機能付きでコンパイルされたときのみ有効} *E833* - -スワップファイルやアンドゥファイル内のテキストも暗号化されます。 *E843* - -Note: メモリ内のテキストは暗号化されません。ユーザがテキストを編集している間、 -システム管理者はそれを見ることができます。":!filter" や ":w !command" によって -フィルタに通しているときはテキストは暗号化されておらず、他人に見られる可能性が -あります。'viminfo' ファイルは暗号化されません。 - -警告: 鍵の入力時にタイプミスをしてファイルを保存し、Vimを終了すると、テキスト -は失われてしまう! - -暗号化を利用する通常の方法は、コマンド |:X| を使うことだ。これは鍵を入力するよ -う求める。次の保存コマンドでファイルを暗号化するためにその鍵が使われる。後で同 -じファイルを編集するときは、Vimは鍵の入力を求める。保存に使われたものと同じ鍵 -を打ち込むと、再びテキストを読み込むことができる。間違ったキーを使うと、テキス -トはめちゃめちゃになって表示される。 - - *:X* -:X 暗号化キーを入力するよう求める。ディスプレイを見ている誰かが鍵を見ない - ように、打ち込むときには実際のテキストは表示されない。 - 打ち込まれた鍵はオプション 'key' に保存される。これはファイルを書き込 - むときの暗号化に使われる。Vimの引数 |-x| も参照。 - -オプション 'key' の値はテキストが書き込まれるときに使われる。値が空でないとき、 -書き込まれたファイルは、その値を鍵として暗号化されている。Vimがファイルが暗号 -化されていることを認識できるよう、ファイル先頭に特殊な数が付加される。 - -暗号化を無効にするには、オプション 'key' に空の値を入れてリセットする。 > - :set key= - -'cryptmethod' オプションを設定することで暗号化メソッドを選択できます。次のうち -一つを使ってください: > - :setlocal cm=zip " 弱いメソッド。後方互換。 - :setlocal cm=blowfish " 強いメソッド。 -ファイルを保存する前に設定します。暗号化されたファイルを読み込んだとき、このオ -プションは自動的にファイル保存時に使われたメソッドに設定されます。ファイルを保 -存する前に 'cryptmethod' を変更することで使用するメソッドを変更できます。 -新しいファイルに使われるデフォルトのメソッドを設定したい場合は |vimrc| ファイ -ルで次のどちらかを設定してください: > - set cm=zip - set cm=blowfish -ファイルを読み込んだり書き込んだりしたとき、zip なら "[crypted]"、blowfish な -ら "[blowfish]" とメッセージが表示される。 - -アンドゥファイルが保存されるとき、同じキーとメソッドがアンドゥファイル内のテキ -ストに適用されます。|persistent-undo|。 - - *E817* *E818* *E819* *E820* -暗号化が正しく機能しないと、保存したファイルが後で読めなくなってしまいます。そ -のため、暗号化が期待したとおりに機能しているかどうかを確認するための検査が実行 -されます。これらのエラーが表示されたときはファイルを暗号化して保存しないでくだ -さい。これを直すためには Vim を再ビルドする必要があるでしょう。 - -*E831* これは内部エラーで普通は発生しません。このエラーの再現手順を見つけた方 -は開発者へ連絡してください。 - -暗号化されたファイルを読み込んだとき、'key' オプションの値が空でなければその値 -が復号に使われます。空のときは入力プロンプトが表示されます。キーを入力しないか -間違ったキーを入力するとファイルは復号されずに開かれます。キーが間違っていても -警告は表示されません (総当たり攻撃を難しくするため)。 - -異なる鍵で暗号化したファイルの読み込みを始めたいときは、オプション 'key' の値 -に空文字列を設定すること。するとVimが新しい値の入力を求める。値の入力にコマン -ド ":set" を使ってはならない。他の人が肩越しにコマンドの入力を読むことができる -からだ。 - -オプション 'key' の値は秘密であることになっているので、その値は決して見られて -はならない。vimrcファイル内でこのオプションを設定してはいけない。 - -"/etc/magic", "/usr/share/misc/magic" 等、システムの持っている "magic" ファイ -ルならどれでもよいが、下の行を追加すると、暗号化されたファイルが "file" コマン -ドに認識されるようになる: > - 0 string VimCrypt~ Vim encrypted file - >9 string 01 - "zip" cryptmethod - >9 string 02 - "blowfish" cryptmethod - - -Note: -- オプション 'charconvert' でコード変換をしているときには暗号化はできない。 -- コピーや削除したテキストは番号付きレジスタに格納される。レジスタの内容は - .viminfoファイル内に保存できるが、ここからは読み出せるかもしれない。安全のた - めオプション 'viminfo' を変更すること。 -- コンピュータからしばらく離れているときには誰かがVimにコマンドを入力できるが、 - 鍵を入手できるようになっていてはいけない。 -- キーを入力しているときにタイプミスをすると、テキストを復元できなくなってしま - うだろう! -- コマンド ":set key=value" で鍵を入力すると、それは履歴の中に保存され、 - viminfoファイル内に 'key' の値を晒すことになる。 -- 100パーセント安全ということは決してない。Vimの暗号化は強度についてはテストさ - れていない。 -- 'cryptmethod' が "zip" のときに使用されるアルゴリズムは簡単に破れる。4 文字 - の鍵なら約1時間以内、6文字の鍵なら1日以内で破れる (Pentium 133 PCで)。これに - はファイル内に必ず現れるはずのテキストをいくつか知っている必要がある。暗号破 - りの熟練者はどのような鍵であっても破ることができる。テキストが復号化されたと - いうことは鍵も明らかになったということであり、同じ鍵で暗号化された他のテキス - トも復号化できてしまう。 -- Pkzip は 'cryptmethod' の "zip" と同じ暗号化を用いており、合衆国政府はその輸 - 出に対して異議を唱えていない。Pkzipの公開ファイル APPNOTE.TXT にはこのアルゴ - リズムが詳細に記述されている。 -- Vimはオランダに起源を持つ。そこがソースの出処である。従って、暗号化コードは - アメリカ合衆国から輸出されてはいない。 - -============================================================================== -10. タイムスタンプ *timestamp* *timestamps* - -Vimは編集を始めたときのファイルの修正タイムスタンプを覚えている。これは同じ -ファイルの別のヴァージョンを (知らずに) 作ってしまうのを防ぐためである。 - -シェルコマンド (|:!cmd| |suspend| |:read!| |K|) の実行後、ウィンドウ内の全ての -バッファでタイムスタンプが比較される。Vimは変更を受けたファイルに関して、イヴェ -ント |FileChangedShell| に関連付けられた任意の自動コマンドを実行するか、警告を -表示する。GUIを使っているときは、それらはVimに入力フォーカスが戻ってきたときに -行われる。 - - *E321* *E462* -ファイルがVimの外部で変更を受けたときに自動的に読み直して欲しいなら、オプショ -ン 'autoread' をオンにすること。しかしこれはファイルを書き込んだ時点では機能し -ない。ファイルがVim内部で変更されていないときだけだ。 - -Note イヴェント |FileChangedShell| に自動コマンドが定義されていると、警告メッ -セージやプロンプトは表示されない。その自動コマンドが対処するものとされている。 - -ディレクトリに関する警告はない (例えば |netrw-browse| で)。しかし新しいファイ -ルの編集を始めた後、同名のディレクトリが作られたときには警告される。 - -ファイルのタイムスタンプが変更されたことにVimが気付いたとき、そのファイルが -バッファ内で編集されているがまだ変更されていないならば、Vimはファイルの中身が -同じかどうかを調べる。このためにはファイルを読み直し、テキストを比較する (隠れ -バッファに読み込むが、これはすぐに削除される)。内容が同じならば警告は出ない。 - -自動警告では足りないと思ったならば、以下のコマンドが使える。 - - *:checkt* *:checktime* -:checkt[ime] Vimの外部で変更を受けたバッファがないかどうか調べる。 - これはファイルのヴァージョンが2個になってしまわないか - どうかを調べ、警告する。 - これがオートコマンドや ":global" コマンドから呼ばれたと - きや、直に打ち込まれたのではないときは、実際に調べるの - は副作用 (ファイルの再読み込み) が無害となる時点まで延 - 期される。 - 読み込まれているバッファそれぞれについて関連付けられた - ファイルが変更を受けていないか調べる。変更を受けていた - ら、 Vimは対処動作を行う。すなわちバッファに変更点が無 - く、かつオプション 'autoread' がオンのときは、バッファ - は読み直される。そうでなければ、ファイルを読み直すかど - うかの選択肢が与えられる。ファイルが削除されていたら、 - エラーメッセージが表示される。 - 以前には存在しなかったファイルが存在していたら、エラー - メッセージが表示される。 - 一度ファイルが調べられるとタイムスタンプ情報が更新され、 - 再び警告されることは無い。 - -:[N]checkt[ime] {filename} -:[N]checkt[ime] [N] - 特定のバッファのタイムスタンプを調べる。バッファの指定 - は名前、番号またはパターンでもよい。 - - *E813* *E814* -ここでユーザーがバッファを再読み込みすることを選ぶと、再読み込みされる。そのバッ -ファを含むウィンドウが表示されている場合、再読み込みはそのウィンドウの中で行わ -れる。そのようなウィンドウがなければ、オートコマンドが正常に動作するよう、特殊 -なウィンドウが使われる。このウィンドウを閉じることはできない。他にもいくつかの -制限が適用される。カレントバッファの外では何も起こらないようにするのがベストで -ある。例えば、ウィンドウローカルなオプションをセットすると、間違ったウィンドウ -の中でセットされてしまう。ウィンドウを分割し、そこで何かをして、閉じることは大 -丈夫である(他のオートコマンドによる副作用が何もなければ)。無関係なウィンドウや -バッファを閉じると問題を引き起こすだろう。 - -書き込み前にはタイムスタンプが調べられる。もし変更されていたら、Vimはそのファ -イルを本当に上書きするかどうかを尋ねる。 - - 警告: 読込んだ後にファイルに変更がありました!!! - 本当に上書きしますか (y/n)? - -'y' を打ち込むと、Vimは続けて書き込みを行う。'n' を打ち込むと、書き込みは中止 -される。コマンド ":wq" や "ZZ" を使った場合にはVimは終了せず、書き込む機会が再 -び得られる。 - -普通、メッセージは編集セッションが始まった後に誰かがファイルに書き込んだことを -示している。それは別の人物かもしれない。この場合、あなたの行った変更とその人物 -が行った変更が合併されるべきか調べたいことだろう。ファイルを別の名前で書き込み、 -差分を調べること (これにはプログラム "diff" がつかえる)。 - -別の編集セッションや別のコマンドで (例えばフィルタコマンド) そのファイルに自分 -自身で変更を加えたということもあり得る。その場合、どちらのヴァージョンを保管し -たいかは自分でお分かりだろう。 - -何も間違ったことはしていないのにこのメッセージが現れる場合が1つある: -Win32 でサマータイムが始まる日である。Win32 ライブラリにより、Vim が時間の差を -混乱してしまう。この問題は次の日には直る。 - -============================================================================== -11. ファイル検索 *file-searching* - -{Vi mが |+path_extra| 機能付きでコンパイルされたときのみ有効} - -現在の所、オプション 'path', 'cdpath', 'tags'と|finddir()|, |findfile()| で、 -本節で説明する「ファイル検索」にしたがってワイルドカードの展開が行われる。 -それ以外のコマンドでは |wildcards| という少し異なるルールにしたがう。 - -ファイル検索には以下の3種類がある: - -1) 下向き検索: *starstar* - 下向き検索にはワイルドカード '*' と '**' 及びユーザのOSがサポートするその他 - のものが使える。'*' と '**' はVim内部で処理されるので、全てのOSで機能する。 - Note "**" はパス名の先頭で使われた場合のみ特別なワイルドカードとなる。 - - '*' の使用法はきわめて単純: 0 個以上の文字にマッチする。 - 正規表現パターンでいうと ".*" と同じである。正規表現と異なり "." は必要ない - ことに注意。 - - '**' はもっとすばらしい。 - - これはディレクトリのみにマッチする。 - - これはデフォルトで 30 段階までの深さのディレクトリにマッチするので、ディ - レクトリ・ツリー全体の検索に使える。 - - マッチする深さの最大値は '**' の後に数字を付け加えて指定できる。 - だから '/usr/**2' は下のようにマッチする。 > - /usr - /usr/include - /usr/include/sys - /usr/include/g++ - /usr/lib - /usr/lib/X11 - .... -< '/usr/include/g++/std' には、深さが3なのでマッチしない。 - 指定可能な範囲は 0 ('**0' は無視される) から 100 である。 - 負数を指定すると 30 を、100 より大きい数を指定すると 100 を指定したも - のとされる。システムにもパスの長さの限界が存在する場合がある。通常は - 256 または 1024 バイトである。 - - '**' はパスの末尾にのみ使える。後ろにパス区切り文字か、数字とパス区切 - り文字の組み合わせを付けてもよい。 - - '*' と '**' を組み合わせる順番は自由である。 > - /usr/**/sys/* - /usr/*tory/sys/** - /usr/**2/sys/* - -2) 上向き検索: - この方法ではディレクトリを指定すると、そのディレクトリから上に遡ってファイ - ルを探す。上向き探索の上限となるディレクトリが指定できる。それはパス (オプ - ション 'path') かファイル名 (オプション 'tags') の末尾に ';' で区切って指定 - する。複数のディレクトリを指定したいときはそれらを ';' で区切る。上限ディレ - クトリを指定したくないときは (ルートディレクトリまで上向き検索したいとき) - ';' だけを付ける。 > - /usr/include/sys;/usr -< で検索されるディレクトリは: > - /usr/include/sys - /usr/include - /usr -< - 相対パスを使うと上向き検索はVimのカレントディレクトリから始まる。相対パスの - 指定が ',/' で始まり、'cpoptions' にフラグ 'd' が含まれていないときはカレン - トファイルのディレクトリから始まる。 - - Vimのカレントパスが /u/user_x/work/release のときに > - :set path=include;/u/user_x -< とすると、コマンド |gf| でファイルを探す範囲は: > - /u/user_x/work/release/include - /u/user_x/work/include - /u/user_x/include - -3) 複合検索: - Vimのカレントパスが /u/user_x/work/release のときに > - set path=**;/u/user_x -< とすると、コマンド |gf| でファイルを探す範囲は: > - /u/user_x/work/release/** - /u/user_x/work/** - /u/user_x/** -< - 注 意 ! これはかなりの時間を食うかもしれない。'/u/user_x/**' は - '/u/user_x/work/**' や '/u/user_x/work/release/**' を含むからだ。つまり - '/u/user_x/work/release/**' は3回、'/u/user_x/work/**' は2回繰り返して検索 - される。 - - 上の例では次のように設定したほうがいいかもしれません: > - :set path=**,/u/user_x/** -< これに含まれる範囲は - /u/user_x/work/release/** ~ - /u/user_x/** ~ - となり、同じディレクトリだが順番が違う。 - - Note: 現在 ":find"、":sfind"、":tabfind" コマンドは、'path' アイテムに url - やダブルスター(/usr/**2) や 上方検索 (;) などが含まれていると機能しません。 -> - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/eval.jax b/runtime.old/doc/eval.jax deleted file mode 100644 index c1303cbd5..000000000 --- a/runtime.old/doc/eval.jax +++ /dev/null @@ -1,8068 +0,0 @@ -*eval.txt* For Vim バージョン 7.3. Last change: 2011 Jul 13 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -Vimスクリプト *expression* *expr* *E15* *eval* - -Vimスクリプトの利用についてはユーザマニュアルの41章|usr_41.txt|でも解説されて -いる。 - -注意:Vimスクリプトはコンパイル時に無効化できる。もしそうなっているとこのドキュ -メントに書かれている事は有効ではない。|+eval|と|no-eval-feature|を参照。 - -1. 変数 |variables| - 1.1 変数の型 - 1.2 関数への参照 |Funcref| - 1.3 リスト |Lists| - 1.4 辞書 |Dictionaries| - 1.5 変数について補足 |more-variables| -2. 式の文法 |expression-syntax| -3. 内部変数 |internal-variables| -4. 組み込み関数 |functions| -5. 関数定義 |user-functions| -6. 波括弧{}変数 |curly-braces-names| -7. コマンド |expression-commands| -8. 例外処理 |exception-handling| -9. 例 |eval-examples| -10. +eval機能が無効 |no-eval-feature| -11. サンドボックス |eval-sandbox| -12. テキストロック |textlock| - -{Vi にはこれらのコマンドは存在しない} - -============================================================================== -1. 変数 *variables* - -1.1 変数の型 ~ - *E712* -変数には6種類の型がある: - -数値 32ビット符合有整数 |expr-number| *Number* - 例: -123 0x10 0177 - -浮動小数点数 浮動小数点数 |floating-point-format| *Float* - {|+float| 機能つきでコンパイルされたときのみ} - 例: 123.456 1.15e-6 -1.1e3 - -文字列 終端がNUL文字である8ビットの符号無し文字(バイト) - |expr-string| 例: "ab\txx\"--" 'x-z''a,c' - -Funcref 関数への参照 |Funcref|. - 例: function("strlen") - -リスト 要素の順序つきの列 |List|. - 例: [1, 2, ['a', 'b']] - -辞書 順序を持たない連想配列: 各要素はキーと値を持つ。|Dictionary| - 例: {'blue': "#0000ff", 'red': "#ff0000"} - -数値と文字列は文脈に応じて相互に変換される。 - -数値から文字列への変換は数字のASCII表現によって行なわれる。例: - 数値 123 --> 文字列 "123" ~ - 数値 0 --> 文字列 "0" ~ - 数値 -1 --> 文字列 "-1" ~ - *octal* -文字列から数値への変換は最初の数字を用いて数値に変換する。16進表記"0xf9"や8進 -表記"017"も認識される。文字列が数字で始まらない場合結果は0となる。例: - 文字列 "456" --> 数値 456 ~ - 文字列 "6bar" --> 数値 6 ~ - 文字列 "foo" --> 数値 0 ~ - 文字列 "0xf1" --> 数値 241 ~ - 文字列 "0100" --> 数値 64 ~ - 文字列 "-8" --> 数値 -8 ~ - 文字列 "+8" --> 数値 0 ~ - -文字列を強制的に数値に変換するには0を足す: > - :echo "0100" + 0 -< 64 ~ - -先頭の0によって8進数とみなされるのを防いだり、異なる基数を使うには|str2nr()|を -使う。 - -ブール(真理値)演算には数値が使われる。0は偽を意味し、非0は真を表す。 - -Note 次のコマンドをみると > - :if "foo" -"foo"は0に変換され、それは偽を意味する。文字列が空ではないか調べるためには -strlen()を使用して次のようにする。 > - :if strlen("foo") -< *E745* *E728* *E703* *E729* *E730* *E731* -リスト、辞書、Funcrefは自動的に変換されない。 - - *E805* *E806* *E808* -数値と浮動小数点数をまぜると浮動小数点数になる。それ以外には浮動小数点数への自 -動的な変換は存在しない。文字列から浮動小数点数へは str2float () を使い、浮動小 -数点数から文字列へは printf()を、浮動小数点数から数値へは float2nr() を使う。 - - *E706* *sticky-type-checking* -変数の型を変えようとするとエラーになる。このエラーを避けるには、まず|:unlet|す -る必要がある。しかし文字列と数値は同値であると見なされる。同じく、浮動小数点数 -と数値も同値であるとみなされる。例: > - :let l = "string" - :let l = 44 " 型が文字列から数値に変わる - :let l = [1, 2, 3] " エラー! l はまだ数値である - :let l = 4.4 " 型が数値から浮動小数点数に変わる - :let l = "string" " エラー! - - -1.2 関数への参照 ~ - *Funcref* *E695* *E718* -関数|function()|は関数への参照を返す。関数への参照は、式の中で関数名が要求され -る場所で使うと参照先の関数を呼び出す。例: > - - :let Fn = function("MyFunc") - :echo Fn() -< *E704* *E705* *E707* -関数参照の変数名は、大文字、"s:"、"w:"、"t:"、"b:"のいずれかで始めなければなら -ない。関数参照と参照先の関数の名前を同じにすることはできない。 - -関数を定義して、それへの参照を直接辞書に入れるための特別な形式がある。例: > - :function dict.init() dict - : let self.val = 0 - :endfunction - -この辞書のキーは小文字で始めなければならない。実際の関数名はここでは使われない。 -|numbered-function|も参照。 - -|:call|コマンドでも関数参照を使うことができる: > - :call Fn() - :call dict.init() - -参照先の関数名は|string()|で得られる。 > - :let func = string(Fn) - -関数参照を呼び出すには|call()|を使い、引数にはリスト型の変数を使う: > - :let r = call(Fn, mylist) - - -1.3 リスト ~ - *List* *Lists* *E686* -リストとは順序を保つ要素の列である。要素はどんな型でもよい。要素へはインデック -ス番号を使ってアクセスする。列の任意の位置に要素を追加したり削除することができ -る。 - - -リストの作成 ~ - *E696* *E697* -リストを作るには、[]の中にコンマで区切って要素を書く。 -例: > - :let mylist = [1, two, 3, "four"] - :let emptylist = [] - -要素はどんな式でもよい。要素としてリストを指定すると、リストのリストができる: -> - :let nestlist = [[11, 12], [21, 22], [31, 32]] - -最後の要素の後に余分なコンマがあると無視される。 - - -リストのインデックス ~ - *list-index* *E684* -リストの要素にアクセスするには、リスト名の後に[]を書き、その中にインデックスを -書く。インデックスは0基点(つまり最初の要素のインデックスは0)である。 > - :let item = mylist[0] " 最初の要素(1)を取得 - :let item = mylist[2] " 3番目の要素(3)を取得 - -取得した要素がリストならば、さらに続けてインデックスを書くことができる: > - :let item = nestlist[0][1] " 最初のリストの2番目の要素(12)を取得 -< -負のインデックスを指定すると、リストの末尾から数えられる。インデックス-1は最後 -の要素を示し、-2は最後から2番目を指す > - :let last = mylist[-1] " 最後の要素("four")を取得 - -無効なインデックスによるエラーを回避するには関数|get()|を使う。するとインデッ -クスが無効な場合は、0かまたは自分で指定した既定値が返る: > - :echo get(mylist, idx) - :echo get(mylist, idx, "NONE") - - -リストの連結 ~ - -2つのリストを連結するには演算子"+"を使う: > - :let longlist = mylist + [5, 6] - :let mylist += [7, 8] - -1個の要素を先頭または末尾に付け加えるには、[]で囲んでリストにして連結する。リ -ストの特定の要素を変更するには後述の|list-modification|を参照。 - - -部分リスト ~ - -リストの一部分を取り出すには、[]の中に始点と終点のインデックスを書き、コロンで -区切る: > - :let shortlist = mylist[2:-1] " リスト[3, "four"]を得る - -始点のインデックスを省略すると0となる。終点のインデックスを省略すると-1となる > - :let endlist = mylist[2:] " 2番目から最後まで: [3, "four"] - :let shortlist = mylist[2:2] " 1個の要素からなるリスト: [3] - :let otherlist = mylist[:] " リストのコピーを作る - -終点のインデックスが始点のインデックスよりも前になってしまった場合は空リストと -なる。エラーメッセージは表示されない。 - -終点のインデックスがリストの長さより大きい場合は、長さ-1を指定したときと同じに -なる: > - :let mylist = [0, 1, 2, 3] - :echo mylist[2:8] " 結果: [2, 3] - -NOTE: mylist[s:e]と書くと変数"s:e"をインデックスとして使ったと解釈される。":" -の前に1文字の変数を使うときは十分注意すること。必要ならこのようにスペースを入 -れるとよい: mylist[s : e]. - - -リストの同一性 ~ - *list-identity* -変数"aa"がリストであり、それを別の変数"bb"に代入したとすると、両方とも同じ変数 -を参照するようになる。よってリスト"aa"を変更すると"bb"も変更される: > - :let aa = [1, 2, 3] - :let bb = aa - :call add(aa, 4) - :echo bb -< [1, 2, 3, 4] - -リストのコピーを作るには関数|copy()|を使う。前述の通り[:]を使ってもできる。こ -れは浅いコピーである。つまりリストの要素であるリストに変更を加えると、コピーさ -れたリスト内の同じ要素も変更される: > - :let aa = [[1, 'a'], 2, 3] - :let bb = copy(aa) - :call add(aa, 4) - :let aa[0][1] = 'aaa' - :echo aa -< [[1, aaa], 2, 3, 4] > - :echo bb -< [[1, aaa], 2, 3] - -完全に独立したコピーを作るには|deepcopy()|を使う。これは再帰的にリストの要素の -コピーを作る。ただし深さは100レベルまでである。 - -2つの変数が同じリストを指しているかは演算子"is"で判定できる。"isnot"はその逆で -ある。一方、"=="は2つのリストが同じ値を持っているかを判定する。 > - :let alist = [1, 2, 3] - :let blist = [1, 2, 3] - :echo alist is blist -< 0 > - :echo alist == blist -< 1 - -Note リストの比較について注意: 2つのリストは、同じ長さを持ち、全要素が"=="の意 -味で等しいとき、等しいとみなされる。ただ、1つ例外がある: 数値と文字列を比較す -るとそれらは異なるとみなされる。変数に対して"=="で比較したときに行われるような -自動的な型変換は行われない。例: > - echo 4 == "4" -< 1 > - echo [4] == ["4"] -< 0 - -つまり、リストの比較は数値や文字列の比較よりも厳格である。単純な値もリストに入 -れることによりこの方法で比較することができる: > - - :let a = 5 - :let b = "5" - :echo a == b -< 1 > - :echo [a] == [b] -< 0 - - -リストのアンパック ~ - -リストの要素を個々の変数としてアンパックするには、[]の中に変数を書く: > - :let [var1, var2] = mylist - -変数の個数とリストの要素数が一致しないときはエラーになる。リストにある余分な要 -素をまとめて受け取るには、";"と受け取る変数名を書いておく: > - :let [var1, var2; rest] = mylist - -上の例は次とほぼ同じである: > - :let var1 = mylist[0] - :let var2 = mylist[1] - :let rest = mylist[2:] - -要素が 2 つしかないときでもエラーにはならない。"rest"は空リストになる。 - - -リストの変更 ~ - *list-modification* -リストの中の特定の要素を変更するには次のように|:let|を使う: > - :let list[4] = "four" - :let listlist[0][3] = item - -始点と終点を指定してリストの一部分を変更することができる。代入する値は、少なく -とも削除する範囲の要素数と同じ数だけ必要である: > - :let list[3:5] = [3, 4, 5] - -リストに要素を追加したり削除するには関数を使う。いくつか例を示す: > - :call insert(list, 'a') " 先頭に要素'a'を挿入する - :call insert(list, 'a', 3) " 要素'a'をlist[3]の前に挿入する - :call add(list, "new") " 文字列の要素を最後に追加する - :call add(list, [1, 2]) " 1個の要素としてリストをを追加する - :call extend(list, [1, 2]) " 2個の要素からなるリストを連結する - :let i = remove(list, 3) " 要素3を削除する - :unlet list[3] " 同上 - :let l = remove(list, 3, -1) " 要素3から最後までを削除する - :unlet list[3 : ] " 同上 - :call filter(list, 'v:val !~ "x"') " 要素'x'を削除 - -要素の順番を変更する: > - :call sort(list) " リストをアルファベット順にソート - :call reverse(list) " 要素の順序を反転させる - - -for ループ ~ - -|:for|ループは、1つの変数に対してリストの各要素を順番に代入し、コマンドを実行 -していく。例: > - :for item in mylist - : call Doit(item) - :endfor - -上の例は次と同じ: > - :let index = 0 - :while index < len(mylist) - : let item = mylist[index] - : :call Doit(item) - : let index = index + 1 - :endwhile - -Note リストの全要素が同じ型でなければならない。そうでないとエラー|E706|にな -る。ループの最後でループ変数を|:unlet|すれば、異なる型でも扱える。 - -やりたいことがリストの各要素を変更するだけなら、forループを使うより関数|map()| -を使った方がよりシンプルになる。 - -|:let|コマンドと同じように、|:for|は変数のリストをループ変数にすることができる。 -この場合、引数はリストのリストでなければならない。 > - :for [lnum, col] in [[1, 3], [2, 8], [3, 0]] - : call Doit(lnum, col) - :endfor - -これはリストの各要素に対して|:let|コマンドを実行するかのように実行される。また -この場合も引数の型は全て同じでないとエラーになる。 - -引数の残りを1個のリスト変数に代入することもできる: > - :for [i, j; rest] in listlist - : call Doit(i, j) - : if !empty(rest) - : echo "remainder: " . string(rest) - : endif - :endfor - - -リスト操作関数 ~ - *E714* -以下はリスト操作に使える関数である: > - :let r = call(funcname, list) " 引数リストをつけて関数を呼び出す - :if empty(list) " リストが空かどうか判定する - :let l = len(list) " リストの要素数 - :let big = max(list) " リスト中の最大値 - :let small = min(list) " リスト中の最小値 - :let xs = count(list, 'x') " 'x'の出現回数を数える - :let i = index(list, 'x') " 最初に'x'が現れる位置のインデックス - :let lines = getline(1, 10) " バッファから10行を取得 - :call append('$', lines) " バッファに行を追加する - :let list = split("a b c") " 文字列を分割してリストにする - :let string = join(list, ', ') " リストの要素を連結して文字列にする - :let s = string(list) " リストの文字列表現 - :call map(list, '">> " . v:val') " 各要素の前に">> "をつける - -機能を組み合わせると、処理を単純に記述できることを覚えておくとよい。例えば、リ -スト中の全ての数値の和を求める例: > - :exe 'let sum = ' . join(nrlist, '+') - - -1.4 辞書 ~ - *Dictionaries* *Dictionary* -辞書とは連想配列である。各要素はキーと値を持つ。要素はキーによって特定できる。 -要素は特に順序を持たずに保持される。 - - -辞書の作成 ~ - *E720* *E721* *E722* *E723* -辞書を作るには、{}の中にコンマで区切って要素を書く。各要素のキーと値はコロンで -区切る。それぞれのキーは1度しか現れてはならない。例: > - :let mydict = {1: 'one', 2: 'two', 3: 'three'} - :let emptydict = {} -< *E713* *E716* *E717* -キーは必ず文字列である。数値を使うこともできるが、自動的に文字列に変換される。 -よって文字列'4'のキーと数値4のキーは同一の要素を参照する。 -entry. Note 文字列'04'と数値04は異なることに注意。なぜなら数値04は文字列'4'に -変換されるからである。 - -値はどんな式でもよい。辞書を値にすると、ネストした辞書ができる: > - :let nestdict = {1: {11: 'a', 12: 'b'}, 2: {21: 'c'}} - -最後の要素の後に余分なコンマがあると無視される。 - - -要素にアクセスする ~ - -通常、要素にアクセスするには[]の中にキーを書く: > - :let val = mydict["one"] - :let mydict["four"] = 4 - -また、この書き方で既存の辞書に要素を追加できる。この点はリストと異なる。 - -キー名がアルファベット、数字、アンダースコアだけからなる場合は、以下の形式が使 -える|expr-entry|: > - :let val = mydict.one - :let mydict.four = 4 - -要素はリストや辞書を含むどんな型でもよいため、インデックス参照とキー参照を続け -て書くことができる: > - :echo dict.key[idx].key - - -辞書からリストへの変換 ~ - -辞書の全要素に対してループを行いたい場合がある。そのためには辞書をリストに変換 -し、そのリストに対して|:for|ループを行う。 - -多くの場合はキーに対してループを行う。これには関数|keys()|を使う: > - :for key in keys(mydict) - : echo key . ': ' . mydict[key] - :endfor - -このキーのリストはソートされていない。ソートさせるには関数|sort()|を使う: > - :for key in sort(keys(mydict)) - -値に対してループを行うには関数|values()|を使う: > - :for v in values(mydict) - : echo "value: " . v - :endfor - -キーと値両方を得るには関数|items()|を使う。この関数は、キーと値の2個の要素から -なるリストのリストを返す: > - :for [key, value] in items(mydict) - : echo key . ': ' . value - :endfor - - -辞書の同一性 ~ - *dict-identity* -辞書のコピーを作るにはリストと同様に|copy()|と|deepcopy()|を使う必要がある。そ -うでなく代入を行うと同一の辞書を参照するようになる: > - :let onedict = {'a': 1, 'b': 2} - :let adict = onedict - :let adict['a'] = 11 - :echo onedict['a'] - 11 - -2つの辞書は、全てのキー・値のペアが等しいとき等しいとみなされる。より詳しくは -|list-identity|を参照。 - - -辞書の変更 ~ - *dict-modification* -辞書の要素を変更したり、新しい要素を追加するには|:let|を使う: > - :let dict[4] = "four" - :let dict['one'] = item - -辞書から要素を取り除くには|remove()|か|:unlet|を使う。以下のように辞書からキー -"aaa"を取り除くには3つの方法がある: > - :let i = remove(dict, 'aaa') - :unlet dict.aaa - :unlet dict['aaa'] - -2つの辞書を併合させるには|extend()|を使う: > - :call extend(adict, bdict) -上のコマンドはbdictの全ての要素をadictに追加する。キーが重複した要素はbdictの -要素により上書きされる。この動作は3番目の引数により変更できる。 -Note 辞書の要素間に順序は定まっていない。そのため":echo adict"としたとき、もと -もとadictにあった要素が先に、bdictから追加された要素が後に表示されると考えては -ならない。 - -辞書から条件を指定して要素を取り除くには|filter()|が使える: > - :call filter(dict, 'v:val =~ "x"') -このコマンドは"dict"から'x'にマッチしない要素を全て取り除く。 - - -関数を辞書に入れる ~ - *Dictionary-function* *self* *E725* -関数が"dict"属性つきで定義されると、特殊な方法で呼び出すことができる。例: > - :function Mylen() dict - : return len(self.data) - :endfunction - :let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")} - :echo mydict.len() - -これはオブジェクト指向プログラミングのメソッドに似ている。この辞書の要素は -|Funcref|である。暗黙に定義されるローカル変数"self"は、この関数を呼び出した辞 -書を参照している。 - -"dict"属性をつけないでFuncrefを辞書に入れることもできる。しかしその場合、変数 -"self"は定義されない。 - - *numbered-function* *anonymous-function* -関数に名前をつける必要をなくすために、関数を定義して直接辞書に代入することがで -きる: > - :let mydict = {'data': [0, 1, 2, 3]} - :function mydict.len() dict - : return len(self.data) - :endfunction - :echo mydict.len() - -こうすると関数に番号がふられ、dict.lenがこの関数を参照する|Funcref|となる。こ -の関数は|Funcref|を通してのみ呼び出せる。参照している|Funcref|がなくなると、こ -の関数は自動的に削除される。 - -番号付き関数には "dict" 属性を付ける必要はありません。 - -番号付き関数でエラーが発生したときは、あるトリックを使うことで発生源を確認でき -ます。例えば 42 という関数なら次のようにします: > - :function {42} - - -辞書操作関数 ~ - *E715* -以下は辞書操作に使える関数である: > - :if has_key(dict, 'foo') " 辞書がキー"foo"の要素を持つなら真 - :if empty(dict) " 辞書が空なら真 - :let l = len(dict) " 辞書の要素数 - :let big = max(dict) " 辞書中の最大値 - :let small = min(dict) " 辞書中の最小値 - :let xs = count(dict, 'x') " 'x'の出現回数を数える - :let s = string(dict) " 辞書の文字列表現 - :call map(dict, '">> " . v:val') " 各要素の前に">> "をつける - - -1.5 変数について補足 ~ - *more-variables* - -変数や式の結果の型を知りたいのならば、関数|type()|を使う。 - -オプション'viminfo'にフラグ'!'が含まれるならば、大文字で始まり小文字を含まない -名前のグローバル変数は、viminfoファイル|viminfo-file|に格納される。 - -オプション'sessionoptions'が"global"を含むなら、大文字で始まり少なくとも一文字 -以上の小文字を含む名前のグローバル変数は、sessionファイル|session-file|に格納 -される。 - -変数名 何処に保存されるか ~ -my_var_6 されない -My_Var_6 sessionファイル -MY_VAR_6 viminfoファイル - - -波括弧を使って変数名を構成できる。詳細は|curly-braces-names|を参照。 - -============================================================================== -2. 式の文法 *expression-syntax* - -式文法一覧、優先順位の低いものから高い順に: - -|expr1| expr2 ? expr1 : expr1 if-then-else 条件式 - -|expr2| expr3 || expr3 .. 論理和 - -|expr3| expr4 && expr4 .. 論理積 - -|expr4| expr5 == expr5 等しい - expr5 != expr5 等しくない - expr5 > expr5 より大きい - expr5 >= expr5 大きいか等しい - expr5 < expr5 より小さい - expr5 <= expr5 小さいか等しい - expr5 =~ expr5 正規表現にマッチする - expr5 !~ expr5 正規表現にマッチしない - - expr5 ==? expr5 文字列として等しい(大文字/小文字区別無し) - expr5 ==# expr5 文字列として等しい(大文字/小文字区別有り) - etc. 上記の各式は大小文字の区別を、?を付加すると行 - わず、#を付加すると行う - - expr5 is expr5 同一の |List| のインスタンス - expr5 isnot expr5 異なる |List| のインスタンス - -|expr5| expr6 + expr6 .. 足し算またはリストの連結 - expr6 - expr6 .. 引き算 - expr6 . expr6 .. 文字列の連結 - -|expr6| expr7 * expr7 .. 掛け算 - expr7 / expr7 .. 割り算 - expr7 % expr7 .. 剰余(割った余り) - -|expr7| ! expr7 論理否定 - - expr7 単項のマイナス(訳注:-1等) - + expr7 単項のプラス - -|expr8| expr8[expr1] 文字列のバイト、またはリストの要素 - expr8[expr1 : expr1] 文字列の部分文字列、またはリストの部分リスト - expr8.name 辞書 |Dictionary| の要素 - expr8(expr1, ...) |Funcref| 変数による関数呼び出し - -|expr9| number 数定数 - "string" 文字列定数。バックスラッシュは特別な意味を持つ - 'string' リテラル文字列定数。'を含めるには2重にする - [expr1, ...] リスト |List| - {expr1: expr1, ...} 辞書 |Dictionary| - &option オプション変数 - (expr1) 式の入れ子 - variable 内部変数 - va{ria}ble 波括弧付きの内部変数 - $VAR 環境変数 - @r レジスタ'r'の値 - function(expr1, ...) 関数呼出し - func{ti}on(expr1, ...) 波括弧付きの内部変数 - -".." はその演算が、その後に他の演算を続ける事が出来ることを示している。 -例: > - &nu || &list && &shell == "csh" - -一つのレベルにある全ての式は左から右に解釈される。 - - -expr1 *expr1* *E109* ------ - -expr2 ? expr1 : expr1 - -'?'より前の式は数値として評価される。その結果が非0であった場合、'?'と':'に挟ま -れた式の値がこの式全体の値となり、逆に0であった場合は':'以降の式の値が全体の値 -となる。 -例: > - :echo lnum == 1 ? "先頭" : lnum - -始めの式が"expr2"であるから、そこに別の?:を含むことはできない。残り二つの式に -ついては以下のように再帰的な?:の利用が許される。 -例: > - :echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum - -読み易くするために、行継続|line-continuation|を利用することが推奨される: > - :echo lnum == 1 - :\ ? "top" - :\ : lnum == 1000 - :\ ? "last" - :\ : lnum - -':'の前には必ずスペースを入れること。そうでないと"a:1"のような変数の使用と間違 -えてしまう可能性がある。 - - -expr2 and expr3 *expr2* *expr3* ---------------- - - *expr-barbar* *expr-&&* -演算子"||"と"&&"は左右に一つずつ引数を取る。引数は数値に変換される。結果は: - - 入力 出力 ~ -n1 n2 n1 || n2 n1 && n2 ~ -零 零 零 零 -零 非零 非零 零 -非零 零 非零 零 -非零 非零 非零 非零 - -演算子は続けて書く事ができる。例: > - - &nu || &list && &shell == "csh" - -Note "&&"は"||"よりも高い優先順位を持っている。これは次の事を意味する: > - - &nu || (&list && &shell == "csh") - -結果が確定した時点で残りの式は省略され、解釈されない。これはC言語で行なわれる -ことに似ている。例: > - - let a = 1 - echo a || b - -これはaが非零で戻り値は絶対に非零であるから、変数bが宣言されていなくても有効で -ある。次のも同様に: > - - echo exists("b") && b == "yes" - -これもbが宣言されているいないに関わらず有効である。後半の項はbが定義されている -時にだけ評価される。 - - -expr4 *expr4* ------ - -expr5 {cmp} expr5 - -2つの式expr5を比較し、結果が偽なら0を、真なら1を返す。 - - *expr-==* *expr-!=* *expr->* *expr->=* - *expr-<* *expr-<=* *expr-=~* *expr-!~* - *expr-==#* *expr-!=#* *expr->#* *expr->=#* - *expr-<#* *expr-<=#* *expr-=~#* *expr-!~#* - *expr-==?* *expr-!=?* *expr->?* *expr->=?* - *expr-<?* *expr-<=?* *expr-=~?* *expr-!~?* - *expr-is* *expr-isnot* *expr-is#* *expr-isnot#* - *expr-is?* *expr-isnot?* - 'ignorecase'次第 大小文字考慮 大小文字無視 ~ -等しい == ==# ==? -等しくない != !=# !=? -より大きい > ># >? -より大きいか等しい >= >=# >=? -より小さい < <# <? -より小さいか等しい <= <=# <=? -正規表現マッチ =~ =~# =~? -正規表現非マッチ !~ !~# !~? -同一のインスタンス is is# is? -異なるインスタンス isnot isnot# isnot? - -例: -"abc" ==# "Abc" 0と評価される -"abc" ==? "Abc" 1と評価される -"abc" == "Abc" 'ignorecase'が設定されていれば1と、でなければ0と評価 - - *E691* *E692* -リスト|List|はリストとだけ比較可能で、==系、!=系、is、isnotのみ利用できる。 -これらはそれぞれのリストの値を再帰的に比較する。大文字小文字無視にすると要素を -比較するときに大文字小文字を無視する。 - - *E735* *E736* -辞書|Dictionary|は辞書とだけ比較可能で、==系、!=系、is、isnotのみ利用できる。 -これらは辞書のキー/値を再帰的に比較する。大文字小文字無視にすると要素を -比較するときに大文字小文字を無視する。 - - *E693* *E694* -|Funcref|は|Funcref|とだけ比較可能で、"equal"と"not equal"のみ利用できる。大文 -字小文字は常に区別される。 - -リスト (|List|) や 辞書 (|Dictionary|) に対して"is"や"isnot"を使うと、それらの -式が同じリストのインスタンスを参照しているか判定される。リストのコピーと元のリ -ストは異なると判定される。リスト以外に対して"is"は"equal"と同じ -で、"isnot"は"not equal"と同じである。ただし"is"、"isnot"は型が異なると値が等 -しくない点が"=="とは異なる。"4 == '4'" は真、"4 is '4'" は偽、"0 is []" は偽で -エラーにはならない、"is#"/"isnot#" と "is?"/"isnot?" は大文字小文字を区別する -かどうかが違う。 - -文字列と数値を比較した場合、文字列が数値に変換され、数値として比較される。これ -は"0 == 'x'"が、'x'が数値としては0であることから、真となることを意味する。 - -文字列同士を比較した場合、strcmp()やstricmp()によって比較される。これは数値的 -に(バイトの値で)比較されるのであって、必ずしも言語に基づく文字種の違いではな -い。 - -'#'を付けた演算子を使うか、省略形かつ'ignorecase'が設定されていない場合、比較 -はstrcmp()で行なわれる。大文字・小文字は区別される。 - -'?'を付けた演算子を使うか、省略形かつ'ignorecase'が設定されている場合、比較は -stricmp()で行なわれる。大文字・小文字は区別されない。 - -'smartcase' は適用されない。 - -"=~"と"!~"演算子は右側の引数を正規表現のパターンとして、左側の引数に対してマッ -チを試みる。正規表現のパターンに関しては|pattern|を参照。このマッチは'magic'が -設定され'cpoptions'が空であるように振舞い、実際の'magic'や'cpoptions'に何が設 -定されているには依存しない。これがスクリプトをポータブルにしてくれる。正規表現 -中のバックスラッシュが重複してしまうのを避けるには、シングルクォーテーションの -文字列を使用する。詳細は|literal-string|を参照。 -文字列は単一行として扱われるので、複数行のパターン(\nを含むもの)はマッチしな -い。しかしながらリテラルなヌル文字(NL)を、普通の文字として代用することはでき -る。例: - "foo\nbar" =~ "\n" 1として評価される - "foo\nbar" =~ "\\n" 0として評価される - - -expr5 and expr6 *expr5* *expr6* ---------------- -expr6 + expr6 .. 足し算、またはリストの連結 *expr-+* -expr6 - expr6 .. 引き算 *expr--* -expr6 . expr6 .. 文字列の連結 *expr-.* - -リストに対しては"+"のみ可能で、expr6は両方ともリストでなければならない。結果は -2つのリストを連結した新しいリスト。 - -expr7 * expr7 .. 掛け算 *expr-star* -expr7 / expr7 .. 割り算 *expr-/* -expr7 % expr7 .. 剰余(割った余り) *expr-%* - -"."を除く全ての演算子は自動的に文字列を数値に変換する。 - -"+"と"."の違いに注意: - "123" + "456" = 579 - "123" . "456" = "123456" - -'.' は '+' と '-' と等しい優先順位を持つので、次の式は: > - 1 . 90 + 90.0 -次のように解釈される: > - (1 . 90) + 90.0 -これはエラーにならない。というのは、"190" は自動的に数値 190 に変換さ -れ、それと浮動小数点数 90.0 との和になる。しかし次の式は: > - 1 . 90 * 90.0 -次のように解釈される: > - 1 . (90 * 90.0) -'.' は '*' より優先順位が低いためである。これはエラーになる。というのは、浮動 -小数点数と文字列を結合することになるからである。 - -数値をゼロで割った結果は、被除数によって次のようになる: - 0 / 0 = -0x80000000 (浮動小数点数の NaN のようなもの) - >0 / 0 = 0x7fffffff (正の無限大のようなもの) - <0 / 0 = -0x7fffffff (負の無限大のようなもの) - (訳注: >0 は正の数、<0 は負の数の意味) - (Vim 7.2 以前では常に 0x7fffffff だった) - -'/'の右辺(除数)が0の場合、結果は0x7ffffffになる。 -'%'の右辺(法)が0の場合、結果は0になる。 - -これらは全て|Funcref|には適用できない。 - -. と % は浮動小数点数には適用できない。 *E804* - - -expr7 *expr7* ------ -! expr7 論理否定 *expr-!* -- expr7 単項マイナス *expr-unary--* -+ expr7 unary plus *expr-unary-+* - -'!'演算子では非零は0に、0は1になる。 -'-'では数値の符号が反転される。 -'+"では変化はない。 - -文字列はまず数値に変換される。 - -これら2つは繰り返したり混ぜたりできる。例: - !-1 == 0 - !!8 == 1 - --9 == 9 - - -expr8 *expr8* ------ -expr8[expr1] 文字列またはリストの要素 *expr-[]* *E111* - -expr8が数値か文字列ならば、この値は文字列 expr8 の第 expr1 番目のバイトからな -る 1 バイトの文字列となる。expr8は文字列、expr1は数として扱われる。ただし -expr8 がマルチバイト文字列である場合、この値は単なるバイトコードであり、1文字 -とはならないかもしれないことに注意。マルチバイト文字列に対する代替方法は -|byteidx()| を参照。 - -インデックスが0の場合、先頭のキャラクタが得られることに注意。これはC言語のよう -に働く。注意:カラム番号は1から始まる。例えばカーソルの下の文字を得るためには、 -次のようにする必要がある: > - :let c = getline(".")[col(".") - 1] - -文字列の長さよりも大きなインデックスが指定された場合、結果は空文字列になる。負 -数のインデックスを指定すると、結果は常に空文字列になる(後方互換性のため)。 -最後のバイトを得るには[-1:]を使うこと。 - -expr8がリスト|List|ならばインデックスexpr1の要素が返る。取りうるインデックスの -値については|list-index|を参照。インデックスが範囲を超えている場合はエラーとな -る。例: > - :let item = mylist[-1] " 最後の要素を取得 - -一般的には、インデックスが正でリストの長さ以上または、負でリストの長さ×-1より -小さいときエラーとなる。 - - -expr8[expr1a : expr1b] 部分文字列または部分リスト *expr-[:]* - -expr8が数値か文字列ならば、expr1aバイトからexpr1bバイトまでの部分文字列となる -(両端を含む)。expr8は文字列として扱われ、expr1aとexpr1bは数値として扱われる。 -Note マルチバイトのエンコーディングは認識しない。マルチバイト文字列のイン -デックスを計算する方法については |byteidx()| を参照。 - -expr1aが省略されたときは0となる。expr1bが省略されたときは文字列の長さ-1となる。 - -負数のインデックスを使うことによって文字列の末尾から取り出すことができる。-1は -最後の文字、-2は最後から2文字目…を表す。 - -インデックスがその文字の範囲外に出てしまったときは、その文字は省かれる。expr1b -がexpr1aより小さいときは空文字列となる。 - -例: > - :let c = name[-1:] " 文字列の最後のバイト - :let c = name[-2:-2] " 文字列の最後から2バイト目 - :let s = line(".")[4:] " 5バイト目から末尾まで - :let s = s[:-3] " 最後の2文字を削除する -< - *sublist* *slice* -expr8がリストならば、インデックスexpr1aとexpr1bの間の要素からなる新しいリスト -となる。上で説明した文字列の場合と同様だが、インデックスが範囲を超えるとエラー -になる。例: > - :let l = mylist[:3] " 最初の4個の要素 - :let l = mylist[4:4] " 1個の要素からなるリスト - :let l = mylist[:] " リストの浅いコピー - -|Funcref|に対してexpr8[expr1]やexpr8[expr1a : expr1b]を使うとエラーになる。 - - -expr8.name 辞書|Dictionary|の要素 *expr-entry* - -expr8が辞書|Dictionary|のとき、ドットをつけるとその後に書かれた名前が辞書の -キーと見なされる。例: expr8[name]。 - -名前は変数名と同じようにアルファベットと数字だけから構成されなければならない -が、数字で始まってもよい。波括弧は使えない。 - -ドットの前後に空白があってはならない。 - -例: > - :let dict = {"one": 1, 2: "two"} - :echo dict.one - :echo dict .2 - -Note ドットは文字列連結にも使われる。混乱を避けるために、文字列連結のドットの -周りには必ずスペースを入れること。 - - -expr8(expr1, ...) |Funcref| 関数呼び出し - -expr8が|Funcref|型の変数のとき、その参照する関数を呼び出す。 - - - - *expr9* -数 ------- -number 数定数 *expr-number* - -10進数、16進数(0xか0Xで始まる)、もしくは8進数(0で始まる)の数定数。 - - *floating-point-format* -浮動小数点数は次の2つの形式で書ける: - - [-+]{N}.{M} - [-+]{N}.{M}e[-+]{exp} - -ここで {N} と {M} は数値である。{N} と{M} の両方とも省略してはなら -ず、数値のみを含めることができる。 -[-+] は、省略可能なプラスまたはマイナス記号である。 -{exp} は指数で、10 のベキ。 -現在のロケールが何であれ、小数点にはドットのみを使える。コンマは使えない。 -{|+float| 機能つきでコンパイルされたときのみ有効} - -例: - 123.456 - +0.0001 - 55.0 - -0.123 - 1.234e03 - 1.0E-6 - -3.1416e+88 - -次のものは無効である: - 3. empty {M} - 1e40 missing .{M} - - *float-pi* *float-e* -コピー&ペーストしておくのに便利な値: > - :let pi = 3.14159265359 - :let e = 2.71828182846 - -論理的根拠: -浮動小数点数が導入される前は、123.456 と書くと 123 と 456 の2つの数値と解釈 -され、それらが文字列に変換されて結合されて "123456" という文字列になった。 -これは無意味であり、Vim スクリプト内で意図的に使われているものが見つからな -かったので、浮動小数点数の普通の表記法を用いるため、この後方非互換性は許容され -た。 - - *floating-point-precision* -浮動小数点数の精度と範囲は、Vim とリンクしたライブラリの "double" の意味によ -る。実行時にこれを変更することはできない。 - -浮動小数点数 |Float| は printf("%g, f) とするのと同様に、小数点以下6桁まで表示 -される。表示する桁数は |printf()| を使えば変えられる。例: > - :echo printf('%.15e', atan(1)) -< 7.853981633974483e-01 - - - -文字列 *expr-string* *E114* ------- -"string" 文字列定数 *expr-quote* - -ダブルクォートが使われていることに注意。 - -文字列定数には以下の特殊文字が使用できる: -\... 3桁の8進数字 (例 "\316") -\.. 2桁の8進数字 (非数字が続かなければならない) -\. 1桁の8進数字 (非数字が続かなければならない) -\x.. 2桁の16進数字 (例 "\x1f") -\x. 1桁の16進数字 (16進数字でないものが続かなければならない) -\X.. \x..に同じ -\X. \x.に同じ -\u.... 文字を4桁の16進数で表現したもので、実際の値は現在の'encoding'の値に依 - 存する (例えば "\u02a4") -\U.... \u....に同じ -\b バックスペース <BS> -\e エスケープ <Esc> -\f フォームフィード <FF> -\n 改行 <NL> -\r 改行(キャリッジリターン) <CR> -\t タブ <Tab> -\\ 円記号(バックスラッシュ) -\" ダブルクォート -\<xxx> "xxx"という名の特殊キー。 例 "\<C-W>" は CTRL-W. これはマップで使うた - めのものです。utf-8 文字を得るためには <Char-xxxx> を使わずに、上述の - \uxxxx を使ってください。 - -Note "\xff"は値255の1バイトとなる。これはエンコーディングによっては無効な値か -もしれない。現在の'encoding'の値に応じた文字255を得るには"\u00ff"を使う。 - -Note "\000"と"\x00"は強制的に文字列の終端として扱われる。 - - -リテラル文字列 *literal-string* *E115* ---------------- -'string' 文字列定数 *expr-'* - -Note シングルクォートが使われていることに注意。 - -この文字列は文字通りに扱われる。バックスラッシュは取り除かれないし、また特別な -意味を持ったりもしない。唯一の例外は、2つのシングルクォートで1つのシングル -クォートになることである。 - -シングルクォートの文字列は、バックスラッシュを2重にしなくてよいため、正規表現 -パターンを表すのに便利である。以下の2つのコマンドは同値である: > - if a =~ "\\s*" - if a =~ '\s*' - - -オプション *expr-option* *E112* *E113* ------- -&option オプション変数、ローカルなものが優先 -&g:option グローバルオプション変数 -&l:option ローカルオプション変数 - -例: > - echo "タブストップは " . &tabstop . " です" - if &insertmode - -ここにはあらゆるオプション名を使うことができる。|options|を参照。ローカル変数 -を使おうとして、実際にはバッファローカルもウィンドウローカルも存在しない場合に -は、グローバル変数が利用される。 - - -レジスタ *expr-register* *@r* --------- -@r レジスタ'r'の値 - -名前付きレジスタの中身を1つの文字列として得る。必要なところには改行文字が挿入 -されている。無名レジスタの中身を取得するには@"か@@を使う。利用可能なレジスタの -説明については|registers|を参照。 - -レジスタ'='を使うと、式の値でなく式そのものを得る。それを評価するには|eval()| -を使う。 - - -入れ子 *expr-nesting* *E110* -------- -(expr1) 式の入れ子 - - -環境変数 *expr-env* --------------------- -$VAR 環境変数 - -環境変数の文字列。定義されていない環境変数を指定した場合、結果は空文字列。 - *expr-env-expand* -Note $VARを直接使用した場合とexpand("$VAR")を使用した場合では、動作に違いがあ -ることに注意。直接使用した場合には、現在のVimのセッション中で既知の値に展開さ -れるだけである。expand()を使用した場合、まず最初にVimのセッション中で既知の値 -に展開される。それが失敗した場合、変数の展開にシェルが使用されることになる。こ -れは遅くはなるが、シェルの知りうる総ての変数を展開することができる。例: > - :echo $version - :echo expand("$version") -最初の一つは恐らく何も返ってこず、2つ目は$versionの値が返ってくるだろう(貴方の -シェルがサポートしていたとして) - - -内部変数 *expr-variable* ------------------ -variable 内部変数 -以下の|internal-variables|を参照。 - - -関数呼出 *expr-function* *E116* *E118* *E119* *E120* -------------- -function(expr1, ...) 関数呼出 -以下の|functions|を参照。 - - -============================================================================== -3. 内部変数 *internal-variables* *E461* - -内部変数の名前には文字と、数字とアンダーバー('_')を使うことができる。しかし数 -字で始めることはできない。波括弧を使うこともできる。 -詳細は|curly-braces-names|を参照。 - -内部変数は":let"コマンドで作成される|:let|。":unlet"コマンドで明示的に内部変数 -を破棄することができる|:unlet|。内部変数に使われてない名前か、既に破棄された内 -部変数を使うとエラーとなる。 - -変数には幾つもの名前空間が存在する。実際にどれが利用されるかは、どのような前置 -子が使われたかで決まる: - - (無し) 関数の中では関数ローカル、それ以外ではグローバル -|buffer-variable| b: 現在のバッファにローカル -|window-variable| w: 現在のウィンドウにローカル -|tabpage-variable| t: 現在のタブページにローカル -|global-variable| g: グローバル -|local-variable| l: 関数にローカル -|script-variable| s: |:source|されたVimスクリプトにローカル -|function-argument| a: 関数の引数(関数内のみ) -|vim-variable| v: グローバル、Vimがあらかじめ定義 - -これらのスコープそのものに辞書を通じてアクセスできる。例えば、全てのスクリプト -ローカル変数を削除するには次のようにする: > - :for k in keys(s:) - : unlet s:[k] - :endfor -< - *buffer-variable* *b:var* -"b:"で始まる変数名は、カレントバッファに局所的な変数を意味する。このように一つ -一つのバッファ毎に、変数"b:foo"を別々に使用することができる。この種の変数は -バッファが掃除(wipe out)された時や、":bdelete"で削除された時に一緒に削除され -る。 - -1つのバッファローカル変数が定義済: - *b:changedtick-variable* *changetick* -b:changedtick 現在のバッファに対する総変更の回数。変更を行うたびに増加する。 - これには一回のアンドゥ操作もカウントされる。この変数はバッファ - に変更が行われた際にだけアクションを起こしたい時に利用できる。 - 例: > - :if my_changedtick != b:changedtick - : let my_changedtick = b:changedtick - : call My_Update() - :endif -< - *window-variable* *w:var* -"w:"で始まる変数名は、カレントウィンドウにローカルな変数を意味する。これはウィ -ンドウを閉じるときに破棄される。 - - *tabpage-variable* *t:var* -"t:"で始まる変数名は、カレントタブページにローカルな変数を意味する。これはタブ -ページを閉じるときに破棄される。{|+windows| 機能つきでコンパイルしたときのみ利 -用可能} - - *global-variable* *g:var* -関数の中からグローバル変数へアクセスするには、"g:"を付けた名前を使用する。これ -が省略された場合は関数ローカルな変数にアクセスする。ただし"g:"自体は、関数の外 -でも使うことができる。 - - *local-variable* *l:var* -関数の中からそのローカル変数にアクセスするには何も前置しなければ良い。明示的に -"l:"を付けることも可能である。ただし"l:"をつけないと予約されている変数名と衝突 -してしまうことがある。例: "count"とすると"v:count"を参照してしまう。"l:count" -とすればローカル変数countを参照できる。 - - *script-variable* *s:var* -Vimスクリプト内では"s:"で始まる変数名を使うことができる。これはスクリプトにつ -いてローカルであり、スクリプトの外部からはアクセスできない。 - -スクリプトローカル関数は次の中で使われる: -- そのスクリプトをsourceしている間に実行されるコマンド -- そのスクリプト内で定義される関数 -- そのスクリプト内で定義されるオートコマンド -- そのスクリプト内で定義される関数やオートコマンドで定義される関数やオートコマ - ンド(再帰的) -- そのスクリプト内で定義されるユーザ定義コマンド -次の場面では使えない: -- そのスクリプトからsourceされる他のスクリプト -- マッピング -- メニュー -- など。 - -グローバル変数との衝突を避けるにはスクリプト変数を使う。 -次の例を参照: > - - let s:counter = 0 - function MyCounter() - let s:counter = s:counter + 1 - echo s:counter - endfunction - command Tick call MyCounter() - -ここで他のスクリプトから"Tick"を実行してみると、そのスクリプト内の変数 -"s:counter"は変化せず、"Tick"が定義されたスクリプト内の"s:counter"だけが変化す -る。 - -これと同じことをするもう1つの例: > - - let s:counter = 0 - command Tick let s:counter = s:counter + 1 | echo s:counter - -関数呼び出しやユーザ定義コマンドを実行するとき、スクリプト変数のコンテキストは -その関数、コマンドが定義されたスクリプトとなる。 - -関数の中で関数を定義した場合、スクリプト変数も共有される。例: > - - let s:counter = 0 - function StartCounting(incr) - if a:incr - function MyCounter() - let s:counter = s:counter + 1 - endfunction - else - function MyCounter() - let s:counter = s:counter - 1 - endfunction - endif - endfunction - -このStartCounting()を呼ぶと、カウントアップかカウントダウンのどちらかを行う関 -数MyCounter()を定義する。StartCounting()がどこで呼ばれたかに関係なく、 -MyCounter()の中では変数s:counterにアクセスできる。 - -同じスクリプトが再度読み込まれた場合、同一のスクリプト変数が使われる。スクリプ -ト変数はVimが終了するまで存続する。以下の例はカウンタを保持する: > - - if !exists("s:counter") - let s:counter = 1 - echo "script executed for the first time" - else - let s:counter = s:counter + 1 - echo "script executed " . s:counter . " times now" - endif - -Note これはつまり、ファイルタイププラグインはバッファごとにスクリプト変数を1セッ -ト持つのではないということを意味する。そのような目的にはバッファローカル変数 -|b:var|を使うこと。 - - -Vimの定義済変数: *vim-variable* *v:var* - - *v:beval_col* *beval_col-variable* -v:beval_col マウスポインタがある桁の桁番号。|v:beval_lnum|行目のバイトイン - デックスである。オプション'balloonexpr'を評価している最中のみ - 有効。 - - *v:beval_bufnr* *beval_bufnr-variable* -v:beval_bufnr マウスポインタがあるバッファの番号。オプション'balloonexpr'を - 評価している最中のみ有効。 - - *v:beval_lnum* *beval_lnum-variable* -v:beval_lnum マウスポインタがある行の行番号。オプション'balloonexpr'を - 評価している最中のみ有効。 - - *v:beval_text* *beval_text-variable* -v:beval_text マウスポインタの下もしくは後ろにあるテキスト。Cプログラムのデ - バッグのために有用。'iskeyword'が適用されるが、マウスポインタ - の下より前にあるドットと"->"は含まれる。マウスポインタが']'の - 上にあるときは、そこから対応する'['とその前にあるテキストまで - が含まれる。マウスポインタが1行に収まるビジュアル領域の上にあ - るときはその選択領域となる。オプション'balloonexpr'を評価して - いる最中のみ有効。 - - *v:beval_winnr* *beval_winnr-variable* -v:beval_winnr マウスポインタがあるウィンドウの番号。オプション'balloonexpr' - を評価している最中のみ有効。一番目のウィンドウの番号はゼロです - (他の場所でのウィンドウ番号と異なっています)。 - - *v:char* *char-variable* -v:char 'formatexpr'を評価しているときの引数。また、短縮入力 - |:map-<expr>| で <expr> を指定しているとき、タイプされた文字を - 保持する。 - これは |InsertCharPre| イベントでも使われる。 - - *v:charconvert_from* *charconvert_from-variable* -v:charconvert_from - 変換しようとしているファイルの文字エンコーディング名。オプショ - ン'charconvert'を評価している最中のみ有効。 - - *v:charconvert_to* *charconvert_to-variable* -v:charconvert_to - 変換後のファイルの文字エンコーディング名。オプション - 'charconvert'を評価している最中のみ有効。 - - *v:cmdarg* *cmdarg-variable* -v:cmdarg 2つの目的のために使われる: - 1. ファイルの読み書きコマンドに与えられる余分な引数。現在のと - ころ"++enc="と"++ff="がそれである。読み書きコマンドに対する - オートコマンドイベントが発生する前にこの変数が代入される。 - その読み書きコマンドの後に直接この変数を連結できるように、 - 先頭にスペースがついている。Note: ここには"+cmd"引数は含ま - れていない。どちらにしろそれは実行されるからである。 - 2. ":hardcopy"でPostScriptファイルを印刷するとき、これが - ":hardcopy"への引数になる。'printexpr'の中で使うことができ - る。 - - *v:cmdbang* *cmdbang-variable* -v:cmdbang v:cmdargと同じく読み書きコマンドを実行したとき設定される。読み - 書きコマンドに"!"が使われたときは1となり、使われていなければ0 - となる。Note オートコマンドの中でのみ利用可能なことに注意。ユー - ザ定義コマンドでは|<bang>|を使えば同じことができる。 - - *v:count* *count-variable* -v:count 最後に実行されたノーマルモードコマンドに渡されたコマンドの実行 - 回数を返す。読出し専用。使用例: > - :map _x :<C-U>echo "the count is " . count<CR> -< Note: <C-U>は、カウントの後に':'をタイプした時に示される、行範 - 囲指定を削除するために必要となる。 - "3d2w" のようにカウントが2個指定された場合、その数が掛けられる。 - よって "d6w" となる。 - オプション'formatexpr'を評価するためにも使われる。 - また"count"は、以前の版のVimとの互換性の為に動作する。 - - *v:count1* *count1-variable* -v:count1 "v:count"と同じように、しかしカウントが指定されなかった時の省 - 略値として存在する。 - - *v:ctype* *ctype-variable* -v:ctype 文字に関する実行環境の現在のロケール設定。これを使えばVim - スクリプト内で現在のロケール設定に対応できるようになる。技術的 - な詳細: LC_CTYPEに等しい。ロケールを使用していないときは"C"に - なる。 - この変数を設定するには|:language|コマンドを使うこと。直接設定 - することはできない。 - |multi-lang|を参照。 - - *v:dying* *dying-variable* -v:dying 通常時は0。致命的なシグナルを受信したとき1が代入される。複数 - のシグナルを受信すると値が増加していく。オートコマンド内でVim - が正常に終了するかチェックするために使える。{Unix でのみ動作} - 例: > - :au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif - -< Note: v:dying が 1 のときに別の致命的なシグナルを受信した場合 - は VimLeave 自動コマンドは実行されません。 - - *v:errmsg* *errmsg-variable* -v:errmsg 最後に表示されたエラーメッセージ。この変数は代入することが許 - されている。例: > - :let errmsg = "" - :next - :if (errmsg != "") - : ... -< また"errmsg"は、以前の版のVimとの互換性の為に動作する。 - - *v:exception* *exception-variable* -v:exception 最も直近に捕捉され、まだ終了していない例外の値。 - |v:throwpoint|と|throw-variables|を参照。 - 例: > - :try - : throw "oops" - :catch /.*/ - : echo "caught" v:exception - :endtry -< 出力: "caught oops". - - *v:fcs_reason* *fcs_reason-variable* -v:fcs_reason |FileChangedShell|イベントが発生した理由。オートコマンドの中で - 何をすべきかやv:fcs_choiceに何を代入すべきかを決めるために使う。 - 値は次のどれかとなる: - deleted もはやファイルが存在しない - conflict ファイルの内容、モード、タイムスタンプ - が変化しており、バッファが変更されてい - る状態。 - changed ファイルの内容が変化している - mode ファイルのモードが変化している - time タイムスタンプだけが変化している - - *v:fcs_choice* *fcs_choice-variable* -v:fcs_choice |FileChangedShell|イベントが発生した後に何をすべきかを表す。 - オートコマンドの中で、そのバッファに対して何をすべきかを指示す - るために使う。 - reload バッファを読み直す(バッファが削除され - ている場合には効果がない)。 - ask 何をすべきかをユーザに問い合わせる。こ - れはこのオートコマンドがない場合と同じ - である。ただしタイムスタンプだけが変化 - しているときは何もしない。 - <empty> 何もしない。オートコマンドの中だけで必 - 要なことは全て行ってしまっているという - 場合にこの値を代入する。 - 既定値は<empty>。これら意外の(無効な)値が代入されたときは空の - ときと同じ動作になり、警告メッセージは表示されない。 - - *v:fname_in* *fname_in-variable* -v:fname_in 入力ファイルの名前。以下のオプションを評価している最中のみ - 有効: - オプション このファイル名の意味 ~ - 'charconvert' 変換するファイル - 'diffexpr' 元のファイル - 'patchexpr' 元のファイル - 'printexpr' 印刷するファイル - また、オートコマンドイベント|SwapExists|が発生したときスワップ - ファイル名が代入される。 - - *v:fname_out* *fname_out-variable* -v:fname_out 出力ファイルの名前。以下のオプションを評価している最中のみ - 有効: - オプション このファイル名の意味 ~ - 'charconvert' 変換した結果のファイル (*) - 'diffexpr' diffの出力 - 'patchexpr' パッチを当てた結果のファイル - (*) 書き込みコマンド(":w file"など)を実行する際の変換では - v:fname_inと同じになる。読み込みコマンド(":e file"など)を実行 - する際の変換では一時ファイル名になり、v:fname_inと異なる。 - - *v:fname_new* *fname_new-variable* -v:fname_new 新しい方のファイル名。'diffexpr'を評価している最中のみ有効。 - - *v:fname_diff* *fname_diff-variable* -v:fname_diff diff(patch)ファイルの名前。'patchexpr'を評価している最中のみ有 - 効。 - - *v:folddashes* *folddashes-variable* -v:folddashes 'foldtext'用。閉じた折り畳みのレベルを表すダッシュ。 - サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| - - *v:foldlevel* *foldlevel-variable* -v:foldlevel 'foldtext'用。閉じた折り畳みのレベル。 - サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| - - *v:foldend* *foldend-variable* -v:foldend 'foldtext'用。閉じた折り畳みの最後の行。 - サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| - - *v:foldstart* *foldstart-variable* -v:foldstart 'foldtext'用。閉じた折り畳みの最初の行。 - サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| - - *v:insertmode* *insertmode-variable* -v:insertmode オートコマンドイベント|InsertEnter|と|InsertChange|用。 - 値は次のどれか: - i インサートモード - r 置換モード - v ビジュアル置換モード - - *v:key* *key-variable* -v:key 辞書|Dictionary|の現在の要素のキー。|map()|と|filter()|で使わ - れる式を評価している最中のみ有効。 - 読出し専用。 - - *v:lang* *lang-variable* -v:lang メッセージに関する実行環境の現在のロケール設定。これを使えば - Vimスクリプト内で現在のロケール設定に対応できるようになる。 - 技術的な詳細: LC_MESSAGESに等しい。この値はシステムに依存する。 - この変数を設定するには|:language|コマンドを使うこと。直接設定 - することはできない。 - 文字エンコーディングに使うのと違う言語でメッセージを表示させた - い場合は|v:ctype|と異なる値でもよい。|multi-lang|を参照。 - - *v:lc_time* *lc_time-variable* -v:lc_time 時刻のメッセージに関する実行環境の現在のロケール設定。これを使 - えばVimスクリプト内で現在のロケール設定に対応できるようになる。 - 技術的な詳細: LC_TIMEに等しい。この値はシステムに依存する。こ - の変数を設定するには|:language|コマンドを使うこと。直接設定す - ることはできない。 - - *v:lnum* *lnum-variable* -v:lnum 'foldexpr' |fold-expr| と 'indentexpr' に使うための行番号。ま - た 'guitablabel' と 'guitabtooltip' の文脈ではタブページ番号に - なる。これらの式のどれかを評価しているときのみ有効。サンドボッ - クス |sandbox| の中では読出し専用。 - - *v:mouse_win* *mouse_win-variable* -v:mouse_win |getchar()|でマウスクリックイベントを取得したとき、この変数に - ウィンドウ番号が代入されている。|winnr()|と同じく番号は1から始 - まる。マウスがクリックされなかったときは0となる。 - - *v:mouse_lnum* *mouse_lnum-variable* -v:mouse_lnum |getchar()|でマウスクリックイベントを取得したとき、この変数に - 行番号が代入されている。物理行ではなく論理行。マウスがクリック - されていないときは0となる。 - - *v:mouse_col* *mouse_col-variable* -v:mouse_col |getchar()|でマウスクリックイベントを取得したとき、この変数に - 桁番号が代入されている。|virtcol()|と同じく画面上の桁番号。マ - ウスがクリックされていないときは0となる。 - - *v:oldfiles* *oldfiles-variable* -v:oldfiles 起動時に |viminfo| から読み込まれたファイルの名前のリスト。 - これらはマークを記憶しているファイルである。リストの長さの上限 - はオプション 'viminfo' の引数 ' によって決まる(既定では 100)。 - |:oldfiles| と |c_#<| を参照。 - このリストは変更可能であるが、後で |viminfo| ファイルに書き込ま - れるものには影響しない。文字列以外の値を使うと問題を引き起こす - だろう。 - {|+viminfo| 機能つきでコンパイルされたときのみ有効} - - *v:operator* *operator-variable* -v:operator ノーマルモードにおいて最後に実行したオペレータコマンド。基本的に - 1文字である。例外は <g> や <z> で始まるコマンドで、その場合は2文 - 字になる。|v:prevcount| と |v:register| と組み合わせて使うとよ - い。オペレータ待機モードをキャンセルして、それからオペレータを - 使いたいときに便利である。例: > - :omap O <Esc>:call MyMotion(v:operator)<CR> -< この値は他のオペレータが入力されるまでセットされてい - る。よって空になると期待してはいけない。 - |:delete|, |:yank| などの Ex コマンドに対しては v:operator は - セットされない。 - 読出し専用。 - - *v:prevcount* *prevcount-variable* -v:prevcount 最後のノーマルモードコマンドに与えられたカウントの値。前のコマ - ンドのv:countの値である。ビジュアルモードやオペレータ待機モー - ドをキャンセルし、その後にカウントを使う場合に便利である。 - 例: > - :vmap % <Esc>:call MyFilter(v:prevcount)<CR> -< 読出し専用。 - - *v:profiling* *profiling-variable* -v:profiling 通常時は0。":profile start"を実行すると1が代入される。 - |profiling|を参照。 - - *v:progname* *progname-variable* -v:progname Vimを起動したときのプログラム名(パスは除かれる)。"view"、 - "evim"などの名前やシンボリックリンクなどで起動した場合に特別な - 初期化を行うのに便利。 - 読出し専用。 - - *v:register* *register-variable* -v:register 現在のノーマルモードコマンドに適用されるレジスタの名前。レジス - タが指定されなかったときはデフォルトレジスタ '"' にな - る。'clipboard' に "unnamed" か "unnamedplus" が含まれていると - きはデフォルトはそれぞれ '*' か '+' になる。 - |getreg()| と |setreg()| も参照。 - - *v:scrollstart* *scrollstart-variable* -v:scrollstart 画面のスクロールの原因となったスクリプトや関数を説明する - 文字列。空であるときのみ代入される。よってこの変数には最初の原 - 因だけが記録されている。原因がキーボードから入力されたコマンド - の場合は"Unknown"が代入される。 - スクリプトを実行したとき現れたhit-enterプロンプトの原因を探る - ために便利。 - - *v:servername* *servername-variable* -v:servername |x11-clientserver|に登録されている名前。 - 読出し専用。 - - -v:searchforward *v:searchforward* *searchforward-variable* - 検索方向: 前方検索の後なら1、後方検索の後なら0。|quote/| で示す - 方法によって最終検索パターンを直接セットしたときは0(前方検索) - にセットされる。関数から戻るとき、この値は呼び出し前の値に復元 - される。 - |function-search-undo|。 - 読み書き両用。 - - *v:shell_error* *shell_error-variable* -v:shell_error 最後に実行したシェルコマンドの結果。シェルコマンドの実行時にな - にかエラーがあったならば、非零の値を取る。問題がなければ零にな - る。これはシェルがエラーコードをVimに通知する時のみ働く。コマ - ンドが実行されなかった時には、値として-1が良く使われる。読出し - 専用。 - 例: > - :!mv foo bar - :if v:shell_error - : echo 'could not rename "foo" to "bar"!' - :endif -< また"shell_error"は、以前の版のVimとの互換性の為に動作する。 - - *v:statusmsg* *statusmsg-variable* -v:statusmsg 最後に表示されたステータスメッセージ。この変数は代入すること - が許されている。 - - *v:swapname* *swapname-variable* -v:swapname オートコマンド|SwapExists|を実行している最中のみ有効。見つかっ - たスワップファイルの名前。読出し専用。 - - *v:swapchoice* *swapchoice-variable* -v:swapchoice イベント|SwapExists|により実行されたオートコマンドが、見つかっ - たスワップファイルをどう処理するかをこの変数に代入する。 - 'o' 読込専用で開く - 'e' とにかく編集する - 'r' 復活させる - 'd' スワップファイルを削除する - 'q' 終了する - 'a' 中止する - この変数の値は1文字の文字列でなければならない。値が空のときは - オートコマンドSwapExistsが存在しないときと同じようにユーザに問 - い合わせる。既定値は空。 - - *v:swapcommand* *swapcommand-variable* -v:swapcommand ファイルを開いた後に実行するノーマルモードコマンド。オートコマ - ンド|SwapExists|で、他のVimインスタンスにファイルを開かせ、指 - 定位置までジャンプするために使うことができる。例えば、あるタグ - へジャンプするには、この変数に":tag tagname\r"という値を代入す - る。":edit +cmd file"を実行させるには":cmd\r"を代入する。 - - *v:termresponse* *termresponse-variable* -v:termresponse termcapのエントリ|t_RV|で端末から返されるエスケープシーケン - ス。ESC [またはCSIで始まり、途中数字と';'と'.'だけから構成され - 'c'で終わるエスケープシーケンスを受け取ったとき代入される。 - このオプションがセットされるとオートコマンドイベント - TermResponseが発生し、端末からの応答に反応することができる。 - 新しいxtermからの応答は次の形式である: - "<Esc>[ Pp ; Pv ; Pc c"。ここでPpは端末のタイプ: 0ならvt100、 - 1ならvt220。Pvはパッチレベル(パッチ95で導入されたため常 - に95以上)。Pcは常に0。 - {Vi mが|+termresponse|機能付きでコンパイルされたときのみ有効} - - *v:this_session* *this_session-variable* -v:this_session 最後にロードされたか、セーブされたセッションファイルの完全な - ファイル名。|:mksession|を参照。この変数は代入することが許さ - れている。それ以前にセーブされたセッションがなければ、この変数 - は空となる。 - また"this_session"は、以前の版のVimとの互換性の為に動作する。 - - *v:throwpoint* *throwpoint-variable* -v:throwpoint 最も直近に捕捉されてまだ終了していない例外が発生した位置。キー - ボードから入力されたコマンドは記録されていない。|v:exception| - と|throw-variables|も参照。 - 例: > - :try - : throw "oops" - :catch /.*/ - : echo "Exception from" v:throwpoint - :endtry -< 出力: "Exception from test.vim, line 2" - - *v:val* *val-variable* -v:val 辞書|Dictionary|の現在の要素の値。|map()|と|filter()|で使わ - れる式を評価している最中のみ有効。 - 読出し専用。 - - *v:version* *version-variable* -v:version Vimのバージョン番号。メジャーバージョン番号は100倍され、マイ - ナーバージョン番号と足されている。Version 5.0は500。Version - 5.1 (5.01)は501となる。読出し専用。また"version"は、以前の版の - Vimとの互換性の為に動作する。 - 特定のパッチが摘要されているかを調べるには|has()|を使う。例: > - if has("patch123") -< 5.0と5.1には両方ともパッチ123が存在しているが、バージョンが違 - えば番号は同じでもパッチの内容は全く異なっている。 - - *v:warningmsg* *warningmsg-variable* -v:warningmsg 最後に表示された警告メッセージ。この変数は代入することが許され - ている。 - - *v:windowid* *windowid-variable* -v:windowid X11 ベースの GUI を使っているとき、もしくは端末の Vim を使って - いて X サーバーに接続しているとき (|-X|) は、ウィンドウ ID が - セットされます。 - MS-Windows の GUI を使っているときはウィンドウハンドルがセット - されます。 - それ以外では値はゼロです。 - Note: Vim の中のウィンドウを扱うときは |winnr()| を使います。 - -============================================================================== -4. 組み込み関数 *functions* - -(関数名の上でCTRL-]を使うことで、詳細な説明へ飛ぶことができる) - -使用法 結果 説明 ~ - -abs( {expr}) 浮動小数点数または数値 {expr}の絶対値 -acos( {expr}) 浮動小数点数 {expr}のアークコサイン -add( {list}, {item}) リスト {item}をリスト{list}に追加する -append( {lnum}, {string}) 数値 {string}を{lnum}行目に付け加える -append( {lnum}, {list}) 数値 行{list}を{lnum}行目に付け加える -argc() 数値 引数内のファイルの数 -argv( {nr}) 文字列 引数の第{nr}番目 -argv( ) リスト 引数リスト -asin( {expr}) 浮動小数点数 {expr}のアークサイン -atan( {expr}) 浮動小数点数 {expr}のアークタンジェント -atan2( {expr}, {expr}) 浮動小数点数 {expr1} / {expr2} のアークタン - ジェント -browse( {save}, {title}, {initdir}, {default}) - 文字列 ファイル選択ダイアログを表示 -browsedir( {title}, {initdir}) 文字列 ディレクトリ選択ダイアログを表示 -bufexists( {expr}) 数値 バッファ{expr}が存在すればTRUE -buflisted( {expr}) 数値 バッファ{expr}がリストにあるならTRUE -bufloaded( {expr}) 数値 バッファ{expr}がロード済みならTRUE -bufname( {expr}) 文字列 バッファ{expr}の名前 -bufnr( {expr}) 数値 バッファ{expr}の番号 -bufwinnr( {nr}) 数値 バッファ{nr}のウィンドウ番号 -byte2line( {byte}) 数値 {byte}番目のバイトの行番号 -byteidx( {expr}, {nr}) 数値 {expr}の{nr}文字目のバイトインデックス -call( {func}, {arglist} [, {dict}]) - 任意 引数{arglist}をつけて{func}を呼ぶ -ceil( {expr}) 浮動小数点数 {expr} を切り上げる -changenr() 数値 現在の変更番号 -char2nr( {expr}) 数値 {expr}の先頭文字のASCIIコード -cindent( {lnum}) 数値 {lnum}行目のCインデント量 -clearmatches() なし 全マッチをクリアする -col( {expr}) 数値 カーソルかマークのカラム番号nr -complete( {startcol}, {matches}) なし インサートモード補完を設定する -complete({startcol}, {matches}) 文字列 インサートモード補完の結果を設定する -complete_add( {expr}) 数値 補完候補を追加する -complete_check() 数値 補完中に押されたキーをチェックする -confirm( {msg}, {choices} [, {default} [, {type}]]) - 数値 ユーザへの選択肢と番号 -copy( {expr}) 任意 {expr}の浅いコピーを作る -cos( {expr}) 浮動小数点数 {expr} の余弦(コサイン) -cosh( {expr}) 浮動小数点数 {expr}のハイパボリックコサイン -count( {list}, {expr} [, {start} [, {ic}]]) - 数値 {list}中に{expr}が何個現れるか数える -cscope_connection( [{num} , {dbpath} [, {prepend}]]) - 数値 cscope接続の存在を判定する -cursor( {lnum}, {col} [, {coladd}]) - 数値 カーソルを{lnum}, {col}, {coladd}へ移動 -cursor( {list}) 数値 カーソルを{list}の位置へ移動 -deepcopy( {expr}) 任意 {expr}の完全なコピーを作る -delete( {fname}) 数値 ファイル{fname}を消す -did_filetype() 数値 FileTypeのautocommandが実行されたか? -diff_filler( {lnum}) 数値 diffモードで{lnum}に挿入された行 -diff_hlID( {lnum}, {col}) 数値 diffモードで{lnum}/{col}位置の強調 -empty( {expr}) 数値 {expr}が空ならTRUE -escape( {string}, {chars}) 文字列 {string}内の{chars}を'\'でエスケープ -eval( {string}) 任意 {string}を評価し、値を得る -eventhandler( ) 数値 イベントハンドラの内側ならTRUE -executable( {expr}) 数値 実行可能な{expr}が存在するなら1 -exists( {var}) 数値 変数{var}が存在したらTRUE -extend( {expr1}, {expr2} [, {expr3}]) - リスト/辞書 {expr1}に{expr2}の要素を挿入 -exp( {expr}) 浮動小数点数 {expr}の指数 -expand( {expr} [, {flag}]) 文字列 {expr}内の特別なキーワードを展開 -feedkeys( {string} [, {mode}]) 数値 先行入力バッファにキーシーケンスを追加 -filereadable( {file}) 数値 {file}が読みこみ可能ならTRUE -filewritable( {file}) Number {file}が書き込み可能ならTRUE -filter( {expr}, {string}) リスト/辞書 {string}が0となる要素を{expr}から - とり除く -finddir( {name}[, {path}[, {count}]]) - 文字列 {path}からディレクトリ{name}を探す -findfile( {name}[, {path}[, {count}]]) - 文字列 {path}からファイル{name}を探す -float2nr( {expr}) 数値 浮動小数点数 {expr} を数値に変換する -floor( {expr}) 浮動小数点数 {expr} を切り捨てる -fmod( {expr1}, {expr2}) 浮動小数点数 {expr1} / {expr2} の余り -fnameescape( {fname}) 文字列 {fname} 内のの特殊文字をエスケープする -fnamemodify( {fname}, {mods}) 文字列 ファイル名を変更 -foldclosed( {lnum}) 数値 {lnum}の折り畳みの最初の行(閉じている - なら) -foldclosedend( {lnum}) 数値 {lnum}の折り畳みの最後の行(閉じている - なら) -foldlevel( {lnum}) 数値 {lnum}の折り畳みレベル -foldtext( ) 文字列 閉じた折り畳みに表示されている行 -foldtextresult( {lnum}) 文字列 {lnum}で閉じている折り畳みのテキスト -foreground( ) 数値 Vimウィンドウを前面に移動する -function( {name}) Funcref 関数{name}への参照を取得 -garbagecollect( [at_exit]) なし メモリを解放する。循環参照を断ち切る -get( {list}, {idx} [, {def}]) 任意 {list}や{def}から要素{idx}を取得 -get( {dict}, {key} [, {def}]) 任意 {dict}や{def}から要素{key}を取得 -getbufline( {expr}, {lnum} [, {end}]) - リスト バッファ{expr}の{lnum}から{end}行目 -getbufvar( {expr}, {varname}) 任意 バッファ{expr}の変数 {varname} -getcmdline() 文字列 現在のコマンドラインを取得 -getcmdpos() 数値 コマンドラインのカーソル位置を取得 -getcmdtype() 文字列 現在のコマンドラインの種類を取得 -getcwd() 文字列 現在の作業ディレクトリ -getfperm( {fname}) 文字列 ファイル{fname}の許可属性を取得 -getfsize( {fname}) 数値 ファイル{fname}のバイト数を取得 -getfontname( [{name}]) 文字列 使用しているフォントの名前 -getftime( {fname}) 数値 ファイルの最終更新時間 -getftype( {fname}) 文字列 ファイル{fname}の種類の説明 -getline( {lnum}) 文字列 現在のバッファから行の内容を取得 -getline( {lnum}, {end}) リスト カレントバッファの{lnum}から{end}行目 -getloclist( {nr}) リスト ロケーションリストの要素のリスト -getmatches() リスト 現在のマッチのリスト -getpid() 数値 Vim のプロセス ID -getpos( {expr}) リスト カーソル・マークなどの位置を取得 -getqflist() リスト quickfixリストの要素のリスト -getreg( [{regname} [, 1]]) 文字列 レジスタの中身を取得 -getregtype( [{regname}]) 文字列 レジスタの種類を取得 -gettabvar( {nr}, {varname}) 任意 タブ{nr}の変数{varname} -gettabwinvar( {tabnr}, {winnr}, {name}) - 任意 タブページ{tabnr}の{winnr}の{name} -getwinposx() 数値 GUI vim windowのX座標 -getwinposy() 数値 GUI vim windowのY座標 -getwinvar( {nr}, {varname}) 文字列 ウィンドウ{nr}の変数{varname} -glob( {expr} [, {flag}]) 文字列 {expr}内のfile wildcardを展開 -globpath( {path}, {expr} [, {flag}]) - 文字列 {path}の全ディレクトリに対し - glob({expr})を行う -has( {feature}) 数値 機能{feature}がサポートならばTRUE -has_key( {dict}, {key}) 数値 {dict}が要素{key}を持つならTRUE -haslocaldir() 数値 現在のウィンドウで|:lcd|が実行された - ならTRUE -hasmapto( {what} [, {mode} [, {abbr}]]) - 数値 {what}へのマッピングが存在するならTRUE -histadd( {history},{item}) 文字列 ヒストリに追加 -histdel( {history} [, {item}]) 文字列 ヒストリからitemを削除 -histget( {history} [, {index}]) 文字列 ヒストリから{index}アイテムを取得 -histnr( {history}) 数値 ヒストリの数 -hlexists( {name}) 数値 highligth group {name}が存在したらTRUE -hlID( {name}) 数値 highlight group {name}のID -hostname() 文字列 vimが動作しているマシンの名前 -iconv( {expr}, {from}, {to}) 文字列 {expr}のエンコーディングを変換する -indent( {lnum}) 文字列 行{lnum}のインデントを取得 -index( {list}, {expr} [, {start} [, {ic}]]) - 数値 {list}中に{expr}が現れる位置 -input( {prompt} [, {text} [, {completion}]]) - 文字列 ユーザからの入力を取得 -inputdialog( {p} [, {t} [, {c}]]) 文字列 input()と同様。GUIのダイアログを使用 -inputlist( {textlist}) 数値 ユーザに選択肢から選ばせる -inputrestore() 数値 先行入力を復元する -inputsave() 数値 先行入力を保存し、クリアする -inputsecret( {prompt} [, {text}]) 文字列 input()だがテキストを隠す -insert( {list}, {item} [, {idx}]) リスト {list}に要素{item}を挿入 [{idx}の前] -isdirectory( {directory}) 数値 {directory}がディレクトリならばTRUE -islocked( {expr}) 数値 {expr}がロックされているならTRUE -items( {dict}) リスト {dict}のキーと値のペアを取得 -join( {list} [, {sep}]) 文字列 {list}の要素を連結して文字列にする -keys( {dict}) リスト {dict}のキーを取得 -len( {expr}) 数値 {expr}の長さを取得 -libcall( {lib}, {func}, {arg} 文字列 ライブラリ{lib}の関数{func}をコール -libcallnr( {lib}, {func}, {arg}) 数値 上と同じ。ただし数値を返す -line( {expr}) 数値 行番号の取得 -line2byte( {lnum}) 数値 行{lnum}のバイトカウント -lispindent( {lnum}) 数値 {lnum}行目のLispインデント量を取得 -localtime() 数値 現在時刻 -log( {expr}) 浮動小数点数 {expr}の自然対数(底e) -log10( {expr}) 浮動小数点数 浮動小数点数 {expr} の 10 を底 - とする対数 -map( {expr}, {string}) リスト/辞書 {expr}の各要素を{expr}に変える -matchadd( {group}, {pattern}[, {priority}[, {id}]]) - 数値 {pattern} を {group} で強調表示する -maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) - 文字列 モード{mode}でのマッピング{name}の値 -mapcheck( {name}[, {mode} [, {abbr}]]) - 文字列 {name}にマッチするマッピングを確認 -match( {expr}, {pat}[, {start}[, {count}]]) - 数値 {expr}内で{pat}がマッチする位置 -matcharg( {nr}) リスト |:match|の引数 -matchdelete( {id}) 数値 {id} で指定されるマッチを削除する -matchend( {expr}, {pat}[, {start}[, {count}]]) - 数値 {expr}内で{pat}が終了する位置 -matchlist( {expr}, {pat}[, {start}[, {count}]]) - リスト {expr}内の{pat}のマッチと部分マッチ -matchstr( {expr}, {pat}[, {start}[, {count}]]) - 文字列 {expr}内の{count}'番目の{pat}のマッチ -max( {list}) 数値 {list}内の要素の最大値 -min( {list}) 数値 {list}内の要素の最小値 -mkdir( {name} [, {path} [, {prot}]]) - 数値 ディレクトリ{name}を作成 -mode( [expr]) 文字列 現在の編集モード -mzeval( {expr}) 任意 |MzScheme| の式を評価する -nextnonblank( {lnum}) 数値 {lnum}行目以降で空行でない行の行番号 -nr2char( {expr}) 文字列 ASCIIコード{expr}で示されるキャラクタ -pathshorten( {expr}) 文字列 path内の短縮したディレクトリ名 -pow( {x}, {y}) 浮動小数点数 {x} の {y} 乗 -prevnonblank( {lnum}) 数値 {lnum}行目以前の空行でない行の行番号 -printf( {fmt}, {expr1}...) 文字列 文字列を組み立てる -pumvisible() 数値 ポップアップメニューが表示されているか -range( {expr} [, {max} [, {stride}]]) - リスト {expr}から{max}までの要素のリスト -readfile( {fname} [, {binary} [, {max}]]) - リスト ファイル{fname}から行のリストを取得 -reltime( [{start} [, {end}]]) リスト 時刻の値を取得 -reltimestr( {time}) 文字列 時刻の値を文字列に変換 -remote_expr( {server}, {string} [, {idvar}]) - 文字列 式を送信する -remote_foreground( {server}) 数値 Vimサーバを前面に出す -remote_peek( {serverid} [, {retvar}]) - 数値 返信文字列を確認する -remote_read( {serverid}) 文字列 返信文字列を読み込む -remote_send( {server}, {string} [, {idvar}]) - 文字列 キーシーケンスを送信する -remove( {list}, {idx} [, {end}]) 任意 {list}から{idx}と{end}間の要素を削除 -remove( {dict}, {key}) 任意 {dict}から要素{key}を削除 -rename({from}, {to}) 数値 {file}から{to}へファイル名変更 -repeat( {expr}, {count}) 文字列 {expr}を{count}回繰り返す -resolve( {filename}) 文字列 ショートカットが指す先のファイル名 -reverse( {list}) 文字列 {list}をその場で反転させる -round( {expr}) 浮動小数点数 {expr} を四捨五入する -search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) - 数値 {pattern} を検索する -searchdecl( {name} [, {global} [, {thisblock}]]) - 数値 変数の宣言を検索 -searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [...]]]) - 数値 開始/終端のペアの他方を検索 -searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [...]]]) - リスト 開始/終端のペアの他方を検索 -searchpos( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) - リスト {pattern}を検索 -server2client( {clientid}, {string}) - 数値 返信文字列を送信する -serverlist() 文字列 利用可能なサーバのリストを取得 -setbufvar( {expr}, {varname}, {val}) バッファ{expr}内の変数{varname}に{val} - をセット -setcmdpos( {pos}) 数値 コマンドライン内のカーソル位置を設定 -setline( {lnum}, {line}) 数値 行{lnum}に{line}(文字列)をセット -setloclist( {nr}, {list}[, {action}]) - 数値 {list}を使ってロケーションリストを変更 -setmatches( {list}) 数値 マッチのリストを復元する -setpos( {expr}, {list}) なし {expr}の位置を{list}にする -setqflist( {list}[, {action}]) 数値 {list}を使ってQuickFixリストを変更 -setreg( {n}, {v}[, {opt}]) 数値 レジスタの値とタイプを設定 -settabvar( {nr}, {varname}, {val}) タブページ{nr}の変数{varname}を{val}に - 設定する -settabwinvar( {tabnr}, {winnr}, {varname}, {val}) タブページ{tabnr}内のウィン - ドウ{winnr}の変数{varname}に{val}を - セット -setwinvar( {nr}, {varname}, {val}) ウィンドウ{nr}の変数{varname}に{val}を - セット -shellescape( {string} [, {special}]) - 文字列 {string}をシェルコマンド引数として使う - ためにエスケープする。 -simplify( {filename}) 文字列 ファイル名を可能なかぎり簡略化する -sin( {expr}) 浮動小数点数 {expr} の正弦(サイン) -sinh( {expr}) 浮動小数点数 {expr}のハイパボリックサイン -sort( {list} [, {func} [, {dict}]]) - リスト 比較に{func}を使って{list}をソートする -soundfold( {word}) 文字列 {word}のsound-fold -spellbadword() 文字列 カーソル位置のスペルミスした単語 -spellsuggest( {word} [, {max} [, {capital}]]) - リスト スペリング補完 -split( {expr} [, {pat} [, {keepempty}]]) - リスト {expr}を{pat}で区切ってリストを作る -sqrt( {expr}) 浮動小数点数 {expr} の平方根 -str2float( {expr}) 浮動小数点数 文字列を浮動小数点数に変換する -str2nr( {expr} [, {base}]) 数値 文字列を数値に変換する -strchars( {expr}) 数値 文字列{expr}の文字の数 -strdisplaywidth( {expr} [, {col}]) 数値 文字列{expr}の表示幅 -strftime( {format}[, {time}]) 文字列 指定されたフォーマットでの時刻 -stridx( {haystack}, {needle}[, {start}]) - 数値 {haystack}内の{needle}のインデックス -string( {expr}) 文字列 {expr}の値の文字列表現 -strlen( {expr}) 数値 文字列{expr}の長さ -strpart( {src}, {start}[, {len}]) - 文字列 {src}内{start}から長さ{len}の部分 -strridx( {haystack}, {needle} [, {start}]) - 数値 {haystack}内の最後の{needle}のインデッ - クス -strtrans( {expr}) 文字列 文字列を表示可能に変更 -strwidth( {expr}) 数値 文字列{expr}の表示セル幅 -submatch( {nr}) 文字列 ":s"やsubstitute()における特定のマッチ -substitute( {expr}, {pat}, {sub}, {flags}) - 文字列 {expr}の{pat}を{sub}に置換え -synID( {line}, {col}, {trans}) 数値 {line}と{col}のsyntax IDを取得 -synIDattr( {synID}, {what} [, {mode}]) - 文字列 syntax ID{synID}の属性{what}を取得 -synIDtrans( {synID}) 数値 {synID}の翻訳されたsyntax ID -synconcealed( {lnum}, {col}) リスト Conceal の情報 -synstack( {lnum}, {col}) リスト {lnum}行{col}列目における構文IDの - スタック -system( {expr} [, {input}]) 文字列 シェルコマンド{expr}の出力結果 -tabpagebuflist( [{arg}]) リスト タブページ内のバッファ番号のリスト -tabpagenr( [{arg}]) 数値 現在または最後のタブページの番号 -tabpagewinnr( {tabarg}[, {arg}]) - 数値 タブページ内の現在のウィンドウの番号 -taglist( {expr}) リスト {expr}にマッチするタグのリスト -tagfiles() リスト 使用しているタグファイルのリスト -tempname() 文字列 テンポラリファイルの名前 -tan( {expr}) 浮動小数点数 {expr}のタンジェント -tanh( {expr}) 浮動小数点数 {expr}のハイパボリックタンジェ - ント -tolower( {expr}) 文字列 文字列{expr}を小文字にする -toupper( {expr}) 文字列 文字列{expr}を大文字にする -tr( {src}, {fromstr}, {tostr}) 文字列 {src}中に現れる文字{fromstr}を{tostr} - に変換する。 -trunc( {expr}) 浮動小数点数 浮動小数点数{expr}を切り詰める -type( {name}) 数値 変数{name}の型 -undofile( {name}) 文字列 {name}に対するアンドゥファイルの名前 -undotree() リスト アンドゥファイルツリー -values( {dict}) リスト {dict}の値のリスト -virtcol( {expr}) 数値 カーソルのスクリーンカラム位置 -visualmode( [expr]) 文字列 最後に使われたVisualモード -winbufnr( {nr}) 数値 ウィンドウ{nr}のバッファ番号 -wincol() 数値 カーソル位置のウィンドウ桁 -winheight( {nr}) 数値 ウィンドウ{nr}の高さ -winline() 数値 カーソル位置のウィンドウ行 -winnr() 数値 現在のウィンドウの番号 -winrestcmd() 文字列 ウィンドウサイズを復元するコマンド -winrestview( {dict}) なし 現在のウィンドウのビューを復元 -winsaveview() 辞書 現在のウィンドウのビューを保存 -winwidth( {nr}) 数値 ウィンドウ{nr}の幅を取得 -writefile( {list}, {fname} [, {binary}]) - 数値 行のリストをファイル{fname}に書き込む - - -abs({expr}) *abs()* - {expr} の絶対値を返す。{expr} の値が浮動小数点数である場合は浮 - 動小数点数を返す。{expr} が|Number|に変換可能な場合は数値が戻 - り値になる。それ以外の場合はエラーメッセージを表示し、-1 - を返す。 - 例: > - echo abs(1.456) -< 1.456 > - echo abs(-5.456) -< 5.456 > - echo abs(-4) -< 4 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - -acos({expr}) *acos()* - {expr} の逆余弦 (アークコサイン) をラジアンで返す。 - 値は [0, pi] の範囲の浮動小数点数 (|Float|)。 - {expr} は [-1, 1] の範囲の浮動小数点数 (|Float|) か数値 - (|Number|) でなければならない。 - 例: > - :echo acos(0) -< 1.570796 > - :echo acos(-0.5) -< 2.094395 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - -add({list}, {expr}) *add()* - リスト|List|{list}の末尾に要素{expr}を追加する。結果のリストを - 返す。例: > - :let alist = add([1, 2, 3], item) - :call add(mylist, "woodstock") -< Note {expr}がリストのときは、1個の要素として追加される。リスト - を連結するには|extend()|を使う。 - 他の位置に要素を追加するには|insert()|を使う。 - - -append({lnum}, {expr}) *append()* - {expr}がリスト|List|のときは、各要素をカレントバッファの{lnum} - 行目以降にテキストとして追加する。 - リストでないときは、{expr}をテキストとしてカレントバッファの{lnum} - 行目以降にテキストとして追加する。 - {lnum}は0でもよく、その場合は1行目の前に行を挿入する。 - 失敗した場合は0を返す({lnum}が不正な範囲であるか、メモリ不足)。 - 成功なら0を返す。例: > - :let failed = append(line('$'), "# THE END") - :let failed = append(0, ["Chapter 1", "the beginning"]) -< - *argc()* -argc() カレントウィンドウの引数リスト内の、ファイルの数を返す。 - |arglist|を参照。 - - *argidx()* -argidx() 引数リスト内の現在のインデックスを返す。最初のファイルは0とな - る。argc() - 1が最後のファイルとなる。|arglist|を参照。 - - *argv()* -argv([{nr}]) 結果は引数リスト内の、{nr}番目のファイル。|arglist|を参照。 - "argv(0)"は一番最初のファイルを示す。例: > - :let i = 0 - :while i < argc() - : let f = escape(fnameescape(argv(i)), '.') - : exe 'amenu Arg.' . f . ' :e ' . f . '<CR>' - : let i = i + 1 - :endwhile -< 引数{nr}が指定されなかった場合は、引数リスト|arglist|全体を - 返す。 - -asin({expr}) *asin()* - {expr} の逆正弦 (アークサイン) をラジアンで返す。 - 値は [-pi/2, pi/2] の範囲の浮動小数点数 (|Float|)。 - {expr} は [-1, 1] の範囲の浮動小数点数 (|Float|) か数値 - (|Number|) でなければならない。 - 例: > - :echo asin(0.8) -< 0.927295 > - :echo asin(-0.5) -< -0.523599 - {|+float| 機能つきでコンパイルされたときのみ有効} - - -atan({expr}) *atan()* - {expr} の逆正接(アークタンジェント)の主値を浮動小数点数 - |Float| で返す。主値はラジアンで[-pi/2, +pi/2]の範囲内にある。 - {expr} は |Float| か |Number| に評価されなければならない。 - 例: > - :echo atan(100) -< 1.560797 > - :echo atan(-4.01) -< -1.326405 - {|+float| 機能つきでコンパイルされたときのみ有効} - - -atan2({expr1}, {expr2}) *atan2()* - {expr1} / {expr2} の逆正接 (アークタンジェント) をラジアンで返 - す。値は [-pi, pi] の範囲の浮動小数点数 (|Float|)。 - {expr1} と {expr2} は浮動小数点数 (|Float|) か数値 (|Number|) - でなければならない。 - 例: > - :echo atan2(-1, 1) -< -0.785398 > - :echo atan2(1, -1) -< 2.356194 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - - *browse()* -browse({save}, {title}, {initdir}, {default}) - ファイル選択ダイアログを起動。"has("browser")"が非零を返すとき - (幾つかのGUIバージョンに限定)だけ利用可能。 - 入力フィールドの意味は: - {save} 非零ならば書込み用ファイルの選択 - {title} ダイアログのタイトル - {initdir} ダイアログの始まるディレクトリ - {default} ファイル名の省略値 - ダイアログがキャンセルされるか、何かエラーがあるか、もしくはブ - ラウジングが不可能ならば、空文字列が戻ってくる。 - - *browsedir()* -browsedir({title}, {initdir}) - ディレクトリ選択ダイアログを起動。"has("browse")"が非零を返す - とき(幾つかのGUIバージョンに限定)だけ利用可能。 - ディレクトリ選択ダイアログがないシステムにおいてはファイル選択 - ダイアログが使われる。その場合は、指定したいディレクトリの中の - ファイルを選択すること。 - 入力フィールドの意味は: - {title} ダイアログのタイトル - {initdir} ダイアログの始まるディレクトリ - ダイアログがキャンセルされるか、何かエラーがあるか、もしくはブ - ラウジングが不可能ならば、空文字列が戻ってくる。 - - *bufexists()* -bufexists({expr}) - 結果は数値で、{expr}と呼ばれるバッファが存在すれば非零となる。 - {expr}が数値の場合、バッファ番号とみなされる。 - {expr}が文字列の場合、バッファ名に正確にマッチしなければな - らない。名前として以下のものが許される: - - カレントディレクトリからの相対パス。 - - フルパス。 - - 'buftype'が"nofile"であるバッファの名前 - - URL名。 - バッファリストにないバッファも検索される。 - Note |:buffers|の出力で、ヘルプファイルは短い名前でリストされ - ているが、bufexists()は長い名前でないと見つけることができない。 - ある名前を bufexists() に与えて非零になったとしても、その名前 - をコマンド |:buffer| に与える際には |expand()| を使って展開し - なければならない場合がある。特に MS-Windows の "c:\DOCUME~1" - という 8.3 名形式において。 - 代替ファイル名が存在するかを判定するには"bufexists(0)"を使う。 - *buffer_exists()* - 以前の名前: buffer_exists(). - -buflisted({expr}) *buflisted()* - 戻り値は数値で、{expr}と呼ばれるバッファが存在しリストされてい - る ('buflisted' オプションがオンになっている) ならば結果は非零 - となる。引数{expr}は|bufexists()|と同じように扱われる。 - - *bufloaded()* -bufloaded({expr}) - 戻り値は数値で、{expr}と呼ばれるバッファが存在しロード済み( - ウィンドウに表示されているか、隠されているかは問わない)ならば - 結果は非零となる。引数{expr}は|bufexists()|と同じように扱われ - る。 - - *bufname()* -bufname({expr}) - 戻り値はバッファの名前。バッファ名はコマンド":ls"で表示される - ものと同様。 - {expr}が数値ならば、その番号のバッファ名が返される。0は現在の - ウィンドウの代替バッファを意味する。{expr}が文字列ならば、バッ - ファ名に対してファイル名マッチング|file-pattern|を行なうパター - ンとなる。このマッチングは常に、'magic'をセットし'cpoptions'を - 空にした状態で行なわれる。複数マッチしてしまった場合には空文字 - 列が返される。""や"%"は現在のバッファを意味し、"#"は代替バッファ - を意味する。 - 完全マッチのものが優先され、完全マッチがなければ、バッファ名の - 先頭でのマッチ、末尾でのマッチ、中間でのマッチが探される。完全 - マッチのみを探すには、パターン先頭に"^"を、末尾に"$"をつける。 - まずバッファリストにあるバッファが探される。そこで1個だけマッ - チが見つかればそれを返す。次にバッファリストにないものが探され - る。 - {expr}が文字列のときに、それをバッファ番号として使いたいなら - ば、0を足すことによって強制的に数値にすることができる: > - echo bufname("3" + 0) -< バッファが存在しないか名前を持っていない場合には、空文字列が返 - される。 > - bufname("#") alternate buffer name - bufname(3) name of buffer 3 - bufname("%") name of current buffer - bufname("file2") name of buffer where "file2" matches. -< *buffer_name()* - 以前の名前: buffer_name(). - - *bufnr()* -bufnr({expr} [, {create}]) - 結果はバッファの番号。バッファ番号はコマンド":ls"で表示される - ものと同様。{expr}の使い方は前述のbufname()を参照。バッファが - 存在しない場合-1が返される。ただし、{create}が与えられて0でな - いときは、バッファリストに載せない新しいバッファを作成しその番 - 号を返す。 - bufnr("$")は最後のバッファを意味する: > - :let last_buffer = bufnr("$") -< 結果は存在しているバッファのうちで、もっとも大きなバッファ番号 - となる。 Note そのバッファ番号より小さいバッファ番号を持つ(ハ - ズの)バッファが、必ずしも総て存在するとは限らない。なぜなら - ":bwipeout"がバッファを消すことができるからだ。バッファが存在 - するかテストするにはbufexists()を使う。 - *buffer_number()* - 以前の名前: buffer_number(). - *last_buffer_nr()* - bufnr("$")の以前の名前: last_buffer_nr(). - - *bufwinnr()* -bufwinnr({expr}) - 結果は数値で、バッファ{expr}に関連付けられた最初のウィンドウの - 番号。{expr}の使い方は前述の|bufname()|を参照。バッファ{expr} - が存在しないか、ウィンドウが無い場合には-1を返す。例: > - - echo "A window containing buffer 1 is " . (bufwinnr(1)) - -< この番号は|CTRL-W_w|や":wincmd w"|:wincmd|で使える。 - カレントタブページ内のウィンドウだけを探す。 - *byte2line()* -byte2line({byte}) - カレントバッファの先頭から{byte}番目の文字が、何行目に含まれる - かを返す。これにはカレントバッファの'fileformat'に依存した、改 - 行文字も含まれる。先頭の文字にはバイトカウント1が与えられる。 - |line2byte()|と|go|と|:goto|も参照。 - {|+byte_offset|機能付きでコンパイルされたときのみ有効} - -byteidx({expr}, {nr}) *byteidx()* - 文字列{expr}の{nr}番目の文字のバイトインデックスを返す。 - 最初の文字の{nr}は0であり、戻り値は0となる。この関数はマルチバ - イト文字が存在するときのみ有用であり、そうでなければこの関数が - 返す値は{nr}に等しい。合成文字は別々の文字と数えられる。 - 例 : > - echo matchstr(str, ".", byteidx(str, 3)) -< は4文字目を表示する。次も同じことをする: > - let s = strpart(str, byteidx(str, 3)) - echo strpart(s, 0, byteidx(s, 1)) -< {expr}が{nr}文字以下の場合は-1を返す。 - {expr}がちょうど{nr}文字の場合は文字列の長さ(バイト単位)を返す。 - -call({func}, {arglist} [, {dict}]) *call()* *E699* - リスト|List|{arglist}の要素を引数として関数{func}を呼ぶ。 - {func}は|Funcref|でも関数の名前でもよい。 - a:firstlineとa:lastlineにはカレント行が代入される。 - 呼び出した関数の戻り値を返す。 - {dict}は"dict"属性つきの関数用で、これがローカル変数"self"に代 - 入される。|Dictionary-function|を参照。 - -ceil({expr}) *ceil()* - {expr} 以上となる最小の整数を浮動小数点数 |Float| で返す - (切り上げる)。 - {expr} は |Float| か |Number| に評価されなければならない。 - 例: > - echo ceil(1.456) -< 2.0 > - echo ceil(-5.456) -< -5.0 > - echo ceil(4.0) -< 4.0 - {|+float| 機能つきでコンパイルされたときのみ有効} - -changenr() *changenr()* - 最も最近の変更の番号を返す。|:undolist|で表示される番号と同じ - であり、|:undo|コマンドの引数として使うことができる。 - 変更を行った直後ではその変更の番号となる。redoを行った直後は - redoされた変更の番号となる。undoを行った直後はundoされた変更よ - り1小さい番号になる。 - - *char2nr()* -char2nr({expr}) - {expr}の最初の文字のASCIIコードを返す。例: > - char2nr(" ") returns 32 - char2nr("ABC") returns 65 -< 現在の'encoding'の値が適用される。"utf-8"のときの例: > - char2nr("á") returns 225 - char2nr("á"[0]) returns 195 -< 合成文字は個別の文字として扱われる。 - |nr2char()| はこの逆を行う。 - -cindent({lnum}) *cindent()* - 'cindent'で使われるのと同じC言語用のインデント規則に従った場合 - の{lnum}行目のインデント量を返す。 - インデント量はスペースで数えられ、'tabstop'の値は関係ない。 - {lnum}は|getline()|の場合と同様に扱われる。 - {lnum}が無効な値のときや|+cindent|機能なしでコンパイルされてい - るときは-1を返す。 - |C-indenting|を参照。 - -clearmatches() *clearmatches()* - |matchadd()| と コマンド |:match| により定義されたマッチをすべ - て消去する。 - - *col()* -col({expr}) - 戻り値は数値で、{expr}で与えられる位置の桁番号(バイトインデッ - クス)。有効な位置は: - . 現在の位置 - $ カレント行の末尾(カレント行のバイト数+1を返す) - 'x マークxの位置(マークが設定されていない場合0) - さらに {expr} は [lnum, col] という行番号と桁番号のリストで - あってもよい。col に "$" を指定して、ある行の最後の桁を取得す - るのにとても便利である。"lnum" か "col" が範囲外である場合は - 0 を返す。 - 行番号を取得するには|line()|を使う。行番号と桁番号両方を取得す - るには|getpos()|を使う。 - 画面上の桁番号を取得するには|virtcol()|を使う。 - Note 現在のファイルのマークしか使えないことに注意。 - 例: > - col(".") カーソルの桁 - col("$") カレント行の長さ+1 - col("'t") マークtの桁 - col("'" . markname) マークmarknameの桁 -< 先頭の桁は1になる。戻り値0はエラーを意味する。 - 大文字のマークは他のバッファを指しているかもしれない。 - 'virtualedit'が有効なとき、カーソルが行末を越えていると、桁番 - 号は行の長さより1大きい値を返す。インサートモードで桁番号を取 - 得するには次のマップが使える: > - :imap <F2> <C-O>:let save_ve = &ve<CR> - \<C-O>:set ve=all<CR> - \<C-O>:echo col(".") . "\n" <Bar> - \let &ve = save_ve<CR> -< -complete({startcol}, {matches}) *complete()* *E785* - インサートモード補完の候補を設定する。 - インサートモードでのみ使用できる。CTRL-R = |i_CTRL-R|と組み合 - わせてマッピングを作る必要がある。CTRL-Oの後や、<expr>マッピン - グの中では正しく動作しない。 - {startcol}は補完すべき単語の開始位置を示す、行内のバイトオフセッ - トである。その位置からカーソルまでのテキストが補完すべき単語と - なる。 - {matches}はリスト|List|でなければならない。リストの各要素が1つ - の候補となる。この要素として許される値については - |complete-items|を参照。 - Note この関数を呼んだ後は補完を停止させるようなテキストの挿入 - をしないように注意しなければならない。 - この関数で設定した候補は普通のインサートモード補完と同じ様に - CTRL-NとCTRL-Pで選択できる。設定されていればポップアップメニュー - が表示される。|ins-completion-menu|を参照。 - 例: > - inoremap <F5> <C-R>=ListMonths()<CR> - func! ListMonths() - call complete(col('.'), ['January', 'February', 'March', - \ 'April', 'May', 'June', 'July', 'August', 'September', - \ 'October', 'November', 'December']) - return '' - endfunc -< この例はそれほど役には立たないが、使い方を示している。Note 0が - 挿入されてしまわないように空文字列を返していることに注意。 - -complete_add({expr}) *complete_add()* - 候補のリストに{expr}を追加する。'completefunc'で指定された関数 - の中でのみ使われる。 - 失敗したときは0を返す(空文字列かメモリ不足)。候補が追加された - ときは1を返し、その候補が既にリストに存在するときは2を返す。 - {expr}の説明については|complete-functions|を参照。'omnifunc'が - 返すリストと同じである。 - -complete_check() *complete_check()* - 補完候補を探している間にキーがタイプされたかどうか確認する。補 - 完の検索に時間がかかる場合に使われる。候補の検索を中断しようと - しているときは0以外を返す。そうでないときは0を返す。 - 'completefunc'で指定された関数の中でのみ使われる。 - - *confirm()* -confirm({msg}, {choices} [, {default} [, {type}]]) - confirm()はユーザに選択させるためのダイアログを提供する。戻り - 値は選択した番号になる。最初の選択肢が1である。 - Note: confirm()は、ダイアログサポートを有効にしてコンパイルし - た時にだけ動作する。|+dialog_con|と|+dialog_gui|を参照。 - - ダイアログには{msg}に加えて{choices}の選択肢が表示される。 - {choices}が指定されない、または空の場合は選択肢"&OK"が表示され - る(使用している言語に翻訳される)。 - {msg}は文字列で'\n'を改行として使用できる。幾つかのシステムで - は、長すぎる行は自動的に折り返される。 - - {choices}は文字列で、個々の選択肢は'\n'によって区切られる。 - 例: > - confirm("Save changes?", "&Yes\n&No\n&Cancel") -< '&'の後の文字は選択肢のショートカットキーになる。この場合 - "Cancel"を選択するのに'c'をタイプすることができる。ショート - カットキーは最初の文字である必要は無い: > - confirm("file has been modified", "&Save\nSave &All") -< コンソールでは、デフォルトのショートカットキーとして、各選択肢 - の最初の文字が使われる。 - - 省略可能な引数{default}は<CR>キーを叩いた時に選択される選択肢 - の番号を指定する。最初の選択肢をデフォルトにするならば1を使用 - する。デフォルトを設定したくないのならば0を使用する。 - {default}を省略した場合、0が使用される。 - - 省略可能な引数{type}はダイアログの種類を指定する。これは GTK, - Mac, Motif, Win32 の GUI でアイコンを指定するのに使われる。 - "Error", "Question", "Info", "Warning", "Generic"のうちどれか - 一つを指定する。以上のうちの先頭の文字だけで指定できる。{type} - が省略された場合、"Generic"が使用される。 - - ユーザが<Esc>やCTRL-Cや、その他の割りこみキーでダイアログを中 - 断した場合、confirm()は0を返す。 - - 例: > - :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2) - :if choice == 0 - : echo "make up your mind!" - :elseif choice == 3 - : echo "tasteful" - :else - : echo "I prefer bananas myself." - :endif -< GUIのダイアログではボタンが使用される。ボタンの配置は - 'guioptions'の'v'フラグに依存する。もしも'v'フラグが含まれてい - るのなら、ボタンは常に垂直に配置される。そうでなければ水平に配 - 置しようと試みられる。水平配置がうまくマッチしない場合は、垂直 - 配置が使われる。幾つかのシステムでは常に水平配置が使われる。 - - *copy()* -copy({expr}) {expr}のコピーを作る。数値と文字列の場合は、{expr}そのものとコ - ピーの間に違いはない。 - {expr}がリスト|List|の場合は浅いコピーを作る。つまり元のリスト - を変更してもコピーは変更されず、逆も同じである。しかし要素は共 - 通で、片方の要素に対し変更を加えると、もう一方の要素も変更され - る。|deepcopy()|も参照。 - -cos({expr}) *cos()* - {expr} の余弦(コサイン)をラジアンで浮動小数点数 |Float| で返す。 - {expr} は |Float| または |Number| に評価されなければならない。 - 例: > - :echo cos(100) -< 0.862319 > - :echo cos(-4.01) -< -0.646043 - {|+float| 機能つきでコンパイルされたときのみ有効} - - -cosh({expr}) *cosh()* - {expr} の双曲線余弦 (ハイパボリックコサイン) を返す。 - 値は [1, inf] の範囲の浮動小数点数 (|Float|)。 - {expr} は浮動小数点数 (|Float|) か 数値 (|Number|) でなければ - ならない。 - 例: > - :echo cosh(0.5) -< 1.127626 > - :echo cosh(-0.5) -< -1.127626 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - -count({comp}, {expr} [, {ic} [, {start}]]) *count()* - リスト|List|または辞書|Dictionary| {comp}の中に値{expr}が何回 - 現れるかを返す。 - {start}が指定されたときはそのインデックスの要素から検索を開始 - する。{start}は{comp}がリストの場合のみ使用できる。 - {ic}が指定され、0でない場合は大文字・小文字は区別されない。 - - - *cscope_connection()* -cscope_connection([{num} , {dbpath} [, {prepend}]]) - |cscope|接続が存在するかどうか判定する。引数が1個も指定されな - かった場合、戻り値は以下のようになる: - 0, cscopeが利用できない(コンパイル時に無効化されている) - またはcscope接続が存在しない場合 - 1, 1個以上のcscope接続が存在する場合 - - 引数が与えられた場合は次のようになる。{num}は、接続の存在を確 - 認する際のマッチング方法を指定する。 - - {num} 存在確認の方法 - ----- ------------------------------ - 0 引数なしの場合と同じ (例: "cscope_connection()"). - 1 {prepend}を無視し、{dbpath}に部分マッチを行う。 - 2 {prepend}を無視し、{dbpath}に部分マッチを行う。 - 3 {prepend}を使用し、{dbpath}と{prepend}に部分マッチを行 - う。 - 4 {prepend}を使用し、{dbpath}と{prepend}に完全マッチを行 - う。 - - Note: 以上のどの場合も文字列の比較は大文字・小文字を区別する。 - - 例: ":cs show"の表示が以下のようになったとする: > - - # pid database name prepend path - 0 27664 cscope.out /usr/local -< - 実行 戻り値 ~ - ---------- ---------- > - cscope_connection() 1 - cscope_connection(1, "out") 1 - cscope_connection(2, "out") 0 - cscope_connection(3, "out") 0 - cscope_connection(3, "out", "local") 1 - cscope_connection(4, "out") 0 - cscope_connection(4, "out", "local") 0 - cscope_connection(4, "cscope.out", "/usr/local") 1 -< -cursor({lnum}, {col} [, {off}]) *cursor()* -cursor({list}) - {lnum}行目の{col}桁目(バイトで数える)にカーソルを移動させる。 - 桁番号{col}は1から始まる。 - 引数が1個の場合は、{lnum}, {col}, {off}からなる、2個または3個 - の要素を持つリスト|List|でなければならない。これは|getpos()|の - 戻り値と似ているが、1個目の要素がない点が異なる。 - この関数を呼んでもジャンプリストは変更されない。 - {lnum}がバッファの行数よりも大きい場合は、最後の行へ移動する。 - {lnum}が0の場合はカレント行に留まる。 - {col}がその行のバイト数より大きい場合は、その行の最後の文字へ - 移動する。 - {col}が0の場合は、カレント桁に留まる。 - 'virtualedit'が有効のとき、{off}は文字の先頭からの画面上のオフ - セットを指定する。例えば、<Tab>の中の位置や最後の文字より後な - どへも移動できる。 - カーソルを移動できたときは 0 を、できなかったときは-1 を返す。 - -deepcopy({expr}[, {noref}]) *deepcopy()* *E698* - {expr}のコピーを作る。数値と文字列の場合は、{expr}そのものとコ - ピーの間に違いはない。 - {expr}がリスト|List|の場合は完全なコピーを作る。つまり元のリス - トを変更してもコピーは変更されず、逆も同じである。要素の1つが - リストであるときは、再帰的にコピーが作成される。よってコピーの - 要素に変更を加えても元のリストの要素は変更を受けない。 - {noref}が省略された、または0のとき、含まれているリストや辞書は - 1度だけコピーされる。全ての参照はこのただ1つのコピーを指す。 - {noref}が1の場合、リストや辞書は現れるたびに新しいコピーが作ら - れる。そのため循環参照があるとdeepcopy()は失敗する。 - *E724* - ネストは100レベルまで可能である。それ以上参照を繰り返している - 要素があると、{noref}が1の場合は失敗する。 - |copy()|も参照。 - -delete({fname}) *delete()* - {fname}という名前のファイルを削除する。戻り値は数値で、削除に - 成功したら0、失敗したら0以外が返る。 - リスト|List|から要素を削除するには|remove()|を使う。 - - *did_filetype()* -did_filetype() autocommandが実行されFileTypeイベントが一度でも起こっていれ - ば、非零が返る。スクリプトのFileTypeイベントが、複数回呼び出さ - れるのを回避するのに使える。 |FileType| - 他のファイルへ移動すると、このカウンタはリセットされる。よって - 実際は、カレントバッファに対してFileTypeイベントが発生したかど - うかを判定する。他のバッファを開くオートコマンドの中でこの関数 - を使って'filetype'を設定し、構文ファイルを読み込むために使える。 - -diff_filler({lnum}) *diff_filler()* - {lnum}行目より上にある削除行の数を返す。削除行とは、diffモード - で他方のウィンドウにテキストが挿入されていることを表す行のこと - である。削除行は表示はされているが、実際にはバッファに存在しな - い。 - {lnum}は|getline()|と同様に扱われる。つまり"."はカレント行とな - り、"'m"はマークmを表す。 - カレントウィンドウがdiffモードでないときは0を返す。 - -diff_hlID({lnum}, {col}) *diff_hlID()* - diffモードで{lnum}行{col}桁(バイト単位)の位置のハイライトIDを - 返す。カレント行に変更がないときは0を返す。 - {lnum}は|getline()|と同様に扱われる。つまり"."はカレント行とな - り、"'m"はマークmを表す。 - 先頭の桁の{col}は1となり、最初の行の{lnum}は1となる。 - ハイライトIDは|synIDattr()|を使って構文情報を得るために使える。 - -empty({expr}) *empty()* - {expr}が空なら1を、そうでなければ0を返す。 - リスト|List|または辞書|Dictionary|は要素を1個も持たないとき空 - とみなされる。数値は値が0のとき空とみなされる。 - 長いリストに対しては長さを0と比較するよりこちらの方がずっと高 - 速である。 - -escape({string}, {chars}) *escape()* - {string}内に現れる{chars}の文字をバックスラッシュでエスケープ - する。例: > - :echo escape('c:\program files\vim', ' \') -< 結果: > - c:\\program\ files\\vim -< |shellescape()| も参照。 - - *eval()* -eval({string}) {string}を評価し、値を返す。|string()|の戻り値を元の値に戻すの - に非常に便利である。数値、浮動小数点数文字列、それらの複合に対 - して動作する。実際に存在する関数への|Funcref|に対しても動作す - る。 - -eventhandler() *eventhandler()* - イベントハンドラの中では1を返す。つまり、ユーザの文字入力を待っ - ている間に、ファイルをドラッグ&ドロップするなど割り込みされた - ことを表す。このときは対話的なコマンドは使えない。イベントハン - ドラの中でないときは0を返す。 - -executable({expr}) *executable()* - {expr}という名前の実行可能ファイルが存在するかどうか判定する。 - {expr}は引数を何もつけないプログラム名でなければならない。 - executable()は$PATHと通常のプログラム検索ディレクトリを参照す - る。 *PATHEXT* - MS-DOSとMS-Windowsでは".exe"、".bat"などの拡張子は含めても含め - なくてもよい。省略された場合は$PATHEXTの拡張子を検索する。よっ - て"foo.exe"が存在しなければ"foo.exe.bat"が見つかることもありう - る。$PATHEXTが存在しなければ".exe;.com;.bat;.cmd"が使われる。 - $PATHEXTにドットだけを含めると拡張子なしの名前を検索することが - できる。'shell'がUnixシェルのように思われるときは、{expr}の後 - に拡張子をつけない名前も検索される。 - MS-DOSとMS-Windowsではファイルが存在するかどうかだけを判定し、 - それがディレクトリでないことや、それが本当に実行可能であるかど - うかは判定されない。 - MS-WindowsではVimと同じディレクトリにある実行ファイルは必ず発 - 見できる。Vimがこのディレクトリを$PATHに加えるためである。 - |win32-PATH|。 - 戻り値は数値: - 1 存在する - 0 存在しない - -1 このシステム上では実装されていない - - *exists()* -exists({expr}) 結果は数値で、変数{expr}が存在すれば1となり、そうでなければ0と - なる。引数{expr}は文字列で次のうちいずれかである。 - &option-name Vimオプション(存在するかだけを判定し、 - 本当に動作するかは判定しない) - +option-name 動作するVimオプション - $ENVNAME 環境変数(空文字列と比較することでも判 - 定できる) - *funcname 組み込み関数(|functions|参照)かユーザ - が定義した関数(|user-functions|参照) - varname 内部変数(|internal-variables|) - |curly-braces-names|, |Dictionary|の要 - 素、|List|の要素などに対しても動作する。 - インデックスの評価で無効な式であるとエ - ラーメッセージが出る可能性があることに - 注意。例: > - :let l = [1, 2, 3] - :echo exists("l[5]") -< 0 > - :echo exists("l[xx]") -< E121: Undefined variable: xx - 0 - :cmdname exコマンド: 組み込みコマンド、ユーザ定 - 義コマンド、コマンド修飾子|:command|。 - 戻り値: - 1 コマンド名の先頭に一致 - 2 コマンド名に完全一致 - 3 複数のユーザ定義コマンドに一致 - コマンドが定義されているかどうかを判定 - するには、必ず戻り値が2であるかを確認 - すること。 - :2match |:2match|のコマンド。 - :3match |:3match|のコマンド。 - #event このイベントに対するオートコマンド定義 - #event#pattern このイベントとパターンに対するオートコ - マンド定義(パターンは文字そのままに解 - 釈され、オートコマンドのパターンと1文 - 字ずつ比較される) - #group オートコマンドグループが存在するか - #group#event このグループとイベントに対してオートコ - マンドが定義されているか - #group#event#pattern - このグループ、イベント、パターンに対す - るオートコマンド定義 - ##event このイベントに対するオートコマンドがサ - ポートされているか - ある機能がサポートされているか判定するには|has()|を使う。 - - 例: > - exists("&shortname") - exists("$HOSTNAME") - exists("*strftime") - exists("*s:MyFunc") - exists("bufcount") - exists(":Make") - exists("#CursorHold") - exists("#BufReadPre#*.gz") - exists("#filetypeindent") - exists("#filetypeindent#FileType") - exists("#filetypeindent#FileType#*") - exists("##ColorScheme") -< シンボルである&/$/*と名前の間には、空白文字があってはならな - い。 - ある少数の場合では無視されるが、名前の後に余計な文字があっては - ならない。将来はもっと厳格になる可能性があるので、現在許される - からといって頼ってはならない。 - 正しい例: > - exists(":make") -< 正しくない例: > - exists(":make install") - -< Note 引数は変数そのものではなく、文字列でなければならない。例 - えば、次は動作しない: > - exists(bufcount) -< これは変数"bufcount"の存在を判定するのではなく、bufcountの値を - 渡し、それが存在するかどうか判定してしまう。 - -exp({expr}) *exp()* - {expr} の指数を返す。 - 値は [0, inf] の範囲の浮動小数点数 (|Float|)。 - {expr} は浮動小数点数 (|Float|) か数値 (|Number|) でなければな - らない。 - 例: > - :echo exp(2) -< 7.389056 > - :echo exp(-1) -< 0.367879 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - - *expand()* -expand({expr} [, {flag}]) - ワイルドカードと{expr}内の特殊なキーワードを展開する。戻り値は - 文字列。 'wildignorecase' が適用される。 - - 複数の候補があった場合、それらは文字<NL>で区切られる。[注意: - バージョン5.0では空白文字が用いられ、スペースを含むファイル名 - について問題を引き起こしていた] - - 展開が失敗した場合、結果は空文字列となる。また存在しないファイ - ル名というのは、結果の文字列には含まれない。 - - {expr}が'%'か'#'か'<'で始まる場合には、展開は|cmdline-special| - のように、変換子を受け付け、それらに関連付けられた変換が施され - る。ここに簡単な概略を示す: - - % 現在のファイル名 - # 代替バッファのファイル名 - #n n番の代替バッファのファイル名 - <cfile> カーソルのしたのファイル名 - <afile> autocmdのファイル名 - <abuf> autocmdのバッファ名 - <sfile> 取り込み(source)中のファイル名 - <slnum> 取り込み(source)中の行番号 - <cword> カーソル下の単語(word) - <cWORD> カーソル下の単語(WORD) - <client> 最後に受け取ったメッセージの{clientid} - |server2client()| - 変換子: - :p フルパス名を展開 - :h ヘッド(ディレクトリ) - :t テイル(ファイル名だけ) - :r 拡張子が削除される - :e 拡張子だけ - - 例: > - :let &tags = expand("%:p:h") . "/tags" -< '%'や'#'や'<'で始まる文字列を展開する時には、それに続くテキス - トは無視されることに注意。従ってこれは正しくない: > - :let doesntwork = expand("%:h.bak") -< こうすると良い: > - :let doeswork = expand("%:h") . ".bak" -< "<cfile>"やそれらを展開する時には、戻り値が完全な展開をされな - い参照名であることにも注意が必要。もしも"<cfile>"が"~/.cshrc" - であった場合、"~/"を展開してホームディレクトリにするために、も - う一度expand()を呼び出す必要がある: > - :echo expand(expand("<cfile>")) -< - 変数と変換子の間には空白文字があってはならない。関数 - |fnamemodify()|が通常のファイル名の変換には使用可能である。 - - カレントバッファや代替バッファの名前が未定義のときに'%'や'#'を - 使うと空文字列になる。"%:p"を名無しのバッファに使用した場合、 - 結果はカレントディレクトリに'/'が付加されたものになる。 - - '%'や'#'や'<'で始まらない{expr}は、コマンドラインのファイル名 - と同じように展開される。{flag}引数に非ゼロを指定しない限り、 - 'suffixes'と'wildignore'が使用される。存在しないファイルの名前 - も結果の文字列に含まれる。"**"を使うとディレクトリツリーを検索 - できる。例えば、カレントディレクトリ以下にある全ての"README"を - 見つけるには次のようにする: > - :echo expand("**/README") -< - expand()は、シェルの持っている変数や環境変数を展開することがで - きる。しかしシェルを起動しなければならないので、遅くなる。 - |expr-env-expand|を参照。展開された変数はファイル名のリストの - ように扱われる。環境変数を展開できないときはそのままになる。よっ - て":echo expand('$FOOBAR')"の結果は"$FOOBAR"となる。 - - 存在するファイルを探すには|glob()|を参照。外部コマンドの「生 - の」実行結果を扱うには|system()|を参照。 - -extend({expr1}, {expr2} [, {expr3}]) *extend()* - {expr1}と{expr2}は両方ともリスト|List|であるか、両方とも辞書 - |Dictionaries|でなければならない。 - - 両方ともリストであるなら、{expr2}を{expr1}に付け加える。 - {expr3}が指定された場合は、{expr1}の第{expr3}番目の要素の前に - {expr2}の要素を挿入する。{expr3}が0のときは最初の要素の前に挿 - 入する。{expr3}がlen({expr1})に等しいときは末尾に{expr2}が付け - 加えられる。 - 例: > - :echo sort(extend(mylist, [7, 5])) - :call extend(mylist, [2, 3], 1) -< {expr1} が {expr2} と同じリストである場合、コピーされる要素の - 数はリストの元の長さと同じである。 - 例として {expr3} が 1 のとき、最初の要素の N 個の新しいコピー - が挿入される(ここで N はリストの元の長さ)。 - リストに1個の要素を加えるには|add()|を使う。2つのリストを連結 - して新しいリストを作るには演算子+を使う: > - :let newlist = [1, 2, 3] + [4, 5] -< - 両方とも辞書である場合: - {expr2}の全要素を{expr1}に加える。 - {expr1}と{expr2}で共通のキーがある場合は、{expr3}によって動作 - が決まる: - {expr3} = "keep"の場合: {expr1}の値そのままにする - {expr3} = "force"の場合: use the value of {expr2} - {expr3} = "error"の場合: エラーメッセージを表示する *E737* - {expr3}が省略された場合は"force"と同じになる。 - - {expr2}が空でないならば{expr1}が変更される。必要ならば最初に - {expr1}のコピーを作ること。 - {expr2}は変更されない。 - {expr1}を返す。 - - -feedkeys({string} [, {mode}]) *feedkeys()* - {string}中の各文字を、あたかもマッピングまたはユーザによってタ - イプされたかのように、処理キューに入れる。 これらの文字は先行 - 入力バッファの末尾に付け足される。そのためマッピングを展開して - いる途中であれば、これらの文字はマッピングを展開した後に来るこ - とになる。 - この関数は、{string}中の文字が処理されるまでは待たない。 - 特殊なキーを{string}に含めるにはダブルクォートと"\..."記法を使 - う(|expr-quote|を参照)。例えば、feedkeys("\<CR>")は<Enter>キー - の押下をシミュレートする。しかしfeedkeys('\<CR>')とすると、こ - の文字の通り5文字を挿入する。 - {mode}が省略されたときは、挿入されたキーはマップ展開の対象にな - る。{mode}は以下の文字フラグを含む文字列: - 'm' キーをマップ展開する。これが既定である。 - 'n' キーをマップ展開しない。 - 't' キーをタイプされたかのように扱う。そうでない場合は - マッピングから展開されたかのように扱われる。これは - undoや折り畳みの展開などで違いが現れる。 - 戻り値は常に0。 - - *filereadable()* -filereadable({file}) - 結果は数値で、{file}というファイルが存在し、読みこむことが可能 - ならばTRUEとなる。ファイル{file}が存在しないかディレクトリだっ - た場合には、結果はFALSEとなる。引数{file}は文字列として使えれ - ばどのような表現でもよい。 - ファイルが読み込み可能でなくてもよい場合には|glob()|を使う。 - *file_readable()* - 以前の名前: file_readable(). - -filewritable({file}) *filewritable()* - 結果は数値で、{file}というファイルが存在し、書き込むことが可能 - ならば1となる。ファイル{file}が存在しないか書き込み不可能であ - る場合には、結果は0となる。{file}がディレクトリであり、書き込 - み可能な場合、結果は2となる。 - - -filter({expr}, {string}) *filter()* - {expr}はリスト|List|または辞書|Dictionary|でなければならない。 - {expr}の各要素に対して{string}を評価し、その結果が0ならばリス - トまたは辞書からその要素を削除する。{string}の内部では|v:val| - が現在の要素の値を保持している。 - 辞書の場合は|v:key|が現在の要素のキーを保持している。 - 例: > - :call filter(mylist, 'v:val !~ "OLD"') -< は要素"OLD"を削除する。 > - :call filter(mydict, 'v:key >= 8') -< は8未満のキーを持つ要素を削除する。 > - :call filter(var, 0) -< は全要素を削除する。つまりリストまたは辞書をクリアする。 - - Note {string}は式を表す文字列である。バックスラッシュを二重に - しなくても済むように|literal-string|を使うとよいだろう。 - - この操作はその場で(in-place)行われる。リストや辞書を変更したく - ない場合は最初にコピーを作ること: > - :let l = filter(copy(mylist), 'v:val =~ "KEEP"') - -< フィルタされたリストまたは辞書を返す。{string}を評価している最 - 中にエラーが発生した場合は、それ以降の要素の処理は行われない。 - - -finddir({name}[, {path}[, {count}]]) *finddir()* - {path}から{name}という名前のディレクトリを探す。ディレクトリを - 上方・下方のどちらにも再帰的に検索できる。{path}の記法について - は|file-searching|を参照。 - 最初に見つかったディレクトリのパスを返す。そのディレクトリがカ - レントディレクトリの下にある場合は相対パスを返す。そうでなけれ - ば絶対パスを返す。 - {path}が省略されたとき、または空のときはオプション'path'の値が - 使われる。 - 省略可能な引数{count}が指定されたときは、最初に見つかったディ - レクトリでなく、{count}番目に見つかったディレクトリを返す。 - {count}が負の場合は、見つかったディレクトリ全てのリスト|List| - を返す。これはexコマンド|:find|によく似ている。 - {|+file_in_path| 機能付きでコンパイルされたときのみ利用可能} - -findfile({name}[, {path}[, {count}]]) *findfile()* - |finddir()|と同様だが、ディレクトリでなくファイルを検索する。 - 'suffixesadd'が適用される。 - 例: > - :echo findfile("tags.vim", ".;") -< この例は、カレントファイルがあるディレクトリから上方に - "tags.vim"を見つけるまで再帰的に検索する。 - -float2nr({expr}) *float2nr()* - {expr} の小数点以下を切り捨てて |Number| に変換する。 - {expr} は |Float| または |Number| に評価されなければならない。 - {expr} の値が |Number| の範囲外の場合、結果は 0x7fffffff また - は -0x7fffffff になる。NaN は -0x80000000 になる。 - 例: > - echo float2nr(3.95) -< 3 > - echo float2nr(-23.45) -< -23 > - echo float2nr(1.0e100) -< 2147483647 > - echo float2nr(-1.0e150) -< -2147483647 > - echo float2nr(1.0e-100) -< 0 - {|+float| 機能つきでコンパイルされたときのみ有効} - - -floor({expr}) *floor()* - {expr} 以下の最大の整数を |Float| で返す(切り捨て)。 - {expr} は |Float| または |Number| に評価されなければならな - い。 - 例: > - echo floor(1.856) -< 1.0 > - echo floor(-5.456) -< -6.0 > - echo floor(4.0) -< 4.0 - {|+float| 機能つきでコンパイルされたときのみ有効} - - -fmod({expr1}, {expr2}) *fmod()* - {expr1} / {expr2} の余りを返す (割り算が表現できなくても)。 - {expr2} が非ゼロなら {expr1} - i * {expr2} の結果を返す (i は - 返り値が {expr1} と同じ符号を持ちその絶対値が {expr2} よりも小 - さくなるような値)。{expr2} がゼロならゼロが返る。返り値の型は - 浮動小数点数 (|Float|)。 - {expr1} と {expr2} は浮動小数点数 (|Float|) か数値 (|Number|) - でなければならない。 - 例: > - :echo fmod(12.33, 1.22) -< 0.13 > - :echo fmod(-12.33, 1.22) -< -0.13 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - -fnameescape({string}) *fnameescape()* - コマンド引数のファイル名として使うために {string} をエスケープ - する。'%' や '|' など特別な意味を持つ全ての文字がバックスラッ - シュでエスケープされる。 - 特別な文字とは、ほとんどのシステムにおいて - " \t\n*?[{`$\\%#'\"|!<" である。ファイル名にバックスラッシュが - 現れるシステムにおいては 'isfname' の値に依存する。 - 先頭の '+' と '>' もエスケープされる(|:edit| と |:write| の引 - 数では特別な意味を持つ)。{string} が "-" である場合もエスケー - プされる(|:cd| の引数では意味を持つ)。 - 例: > - :let fname = '+some str%nge|name' - :exe "edit " . fnameescape(fname) -< 上記は次と同じ結果になる: > - edit \+some\ str\%nge\|name - -fnamemodify({fname}, {mods}) *fnamemodify()* - ファイル名{fname}を{mods}にしたがって変更する。{mods}はコマン - ドラインで使われるのと同様な文字列である。詳細は - |filename-modifiers|を参照。 - 例: > - :echo fnamemodify("main.c", ":p:h") -< 結果: > - /home/mool/vim/vim/src/ -< Note: {fname}の中の環境変数は展開されない。環境変数を展開させ - るには|expand()|を使うこと。 - -foldclosed({lnum}) *foldclosed()* - 結果は数値。{lnum}行目が閉じた折り畳みの中にあるなら、その折り - 畳みを構成する最初の行の行番号を返す。{lnum}行目が閉じた折り畳 - みに入っていないなら-1を返す。 - -foldclosedend({lnum}) *foldclosedend()* - 結果は数値。{lnum}行目が閉じた折り畳みの中にあるなら、その折り - 畳みを構成する最後の行の行番号を返す。{lnum}行目が閉じた折り畳 - みに入っていないなら-1を返す。 - -foldlevel({lnum}) *foldlevel()* - カレントバッファの{lnum}行目の折り畳みレベルを表す数値を返す。 - 折り畳みがネストしているときは一番下のレベルを返す。{lnum}行目 - に折り畳みがまったくないときは0を返す。折り畳みが開いているか - 閉じているかは関係ない。('foldexpr'の中で)折り畳みを更新してい - る最中に呼ぶと、まだ折り畳みを更新していなく、折り畳みレベルが - 未知の行に対しては-1を返す。特別な場合として、普通は1行前のレ - ベルは取得できる。 - - *foldtext()* -foldtext() 閉じた折り畳みに表示する文字列を返す。これはオプション - 'foldtext'のデフォルトの関数であり、'foldtext'を評価していると - きにだけ呼ぶようにすべきである。この関数は変数|v:foldstart|, - |v:foldend|, |v:folddashes|を使用する。 - 戻り値の文字列は次のようになる: > - +-- 45 lines: abcdef -< - ダッシュ(-)の数は折り畳みレベルによって決まる。"45"はその折り - 畳みに含まれている行数である。"abcdef"はその折り畳みの中の最初 - の空行でない行のテキストである。行頭の空白と、"//"や/*"、 - 'foldmarker'と'commentstring'に設定されている文字列は削除され - る。 - {|+folding|機能付きでコンパイルされたときのみ利用可能} - -foldtextresult({lnum}) *foldtextresult()* - {lnum}行目の閉じた折り畳みに表示される文字列を返す。'foldtext' - を適切なコンテキストの中で評価する。{lnum}行目に閉じた折り畳み - がないときは空文字列を返す。 - {lnum}は|getline()|のときと同様に扱われる。つまり"."はカレント - 行、"'m"はマークmを表す。 - 折り畳まれたテキストをHTMLなどにエクスポートするときに有用。 - {|+folding|機能付きでコンパイルされたときのみ利用可能} - - *foreground()* -foreground() Vimのウィンドウを前面に移動する。この関数はクライアントからVim - サーバへ送ると便利である。|remote_send()| - Win32では自分自身のウィンドウを前面に持ってくることが必ずしも - 許可されていないので、動作しないかもしれない。そのときは代わり - に|remote_foreground()|を使うこと。 - {Win32, Athena, Motif, GTKいずれかのGUI版とWin32コンソール版で - のみ利用できる} - - -function({name}) *function()* *E700* - 関数{name}を参照する|Funcref|の変数を返す。{name}はユーザ定義 - 関数でも組み込み関数でもよい。 - - -garbagecollect([at_exit]) *garbagecollect()* - 循環参照を持ち、使われていないリスト|List|と辞書|Dictionaries| - をクリーンアップする。これはメモリ不足に陥ったときや、 - 'updatetime'経過後ユーザのキー入力を待っているときに自動的に行 - われるので、この関数を呼ぶ必要があることはほとんどない。 - 循環参照を持たない要素は、使われなくなったとき必ず解放される。 - 長時間実行されるスクリプトの中で循環参照を持つ非常に大きなリス - トや辞書を削除したときに有用である。 - 省略可能な引数 "at_exit" に 1 を指定すると、Vim を終了するとき - にもガベージコレクションが行われる。これはメモリリークを発見す - るのに役に立つ。 - -get({list}, {idx} [, {default}]) *get()* - リスト|List| {list}から{idx}番目の要素を取得する。この要素を取 - 得できないときは{default}を返す。{default}が省略されたときは0 - を返す。 -get({dict}, {key} [, {default}]) - 辞書|Dictionary| {dict}からキー{key}に関連づけられた値を取得す - る。この要素を取得できないときは{default}を返す。{default}が省 - 略されたときは0を返す。 - - *getbufline()* -getbufline({expr}, {lnum} [, {end}]) - バッファ{expr}の{lnum}行目から{end}行目まで(両端含む)の行から - なるリスト|List|を返す。{end}が省略されたときは{lnum}行目だけ - からなるリストを返す。 - - {expr}の指定の仕方については|bufname()|を参照。 - - {lnum}と{end}では"$"でバッファの最後の行を表すことができる。そ - れ以外は数値でなければならない。 - - {lnum}が1より小さいときや、バッファの行数より大きいときは空リ - ストを返す。 - - {end}がバッファの行数より大きいときは、バッファの行数が設定さ - れたものとして扱う。{end}が{lnum}行目より前に設定された場合は - 空リストを返す。 - - この関数は読み込まれているバッファに対してのみ動作する。既にア - ンロードされているバッファや存在しないバッファに対しては空リス - トを返す。 - - 例: > - :let lines = getbufline(bufnr("myfile"), 1, "$") - -getbufvar({expr}, {varname}) *getbufvar()* - バッファ{expr}のオプションの値やバッファローカル変数{varname} - の値を返す。Note "b:"をつけない変数名を指定すること。 - {varname} が空文字列の場合、全てのバッファローカル変数からなる - 辞書を返す。 - グローバルオプション、バッファローカルオプションのどちらに対し - ても動作するが、グローバル変数、ウィンドウローカル変数、ウィン - ドウローカルオプションに対しては動作しない。 - {expr}の指定の仕方については|bufname()|を参照。 - バッファや変数が存在しないときは空文字列を返し、エラーメッセー - ジは表示されない。 - 例: > - :let bufmodified = getbufvar(1, "&mod") - :echo "todo myvar = " . getbufvar("todo", "myvar") -< -getchar([expr]) *getchar()* - ユーザまたは入力ストリームから1文字を取得する。 - [expr]が省略されたときは1文字を取得できるまで待つ。 - [expr]が0のときは1文字を取得できる場合のみ取得する。取得できな - ければ0を返す。 - [expr]が1のときは1文字を取得できるか判定し、実際には取得しない。 - 取得できないときは0を返す。 - - {expr}が省略されたときや{expr}が0のときは、文字全体または特殊 - キーを返す。それが8ビット文字なら戻り値は数値である。これを文 - 字列に戻すにはnr2char()を使う。8ビット文字でないならばエンコー - ドして文字列にして返す。 - 特殊キーとは0x80(10進数で128)で始まるバイト列である。これは - 文字列"\<Key>"と同じ値である(例: "\<Left>")。戻り値は文字列で - あり、修飾キー(shift, contro, alt)は含まれない。 - - {expr}が1のときは最初のバイトだけを返す。1バイト文字の場合、こ - れはその文字そのものを表す数値である。これを文字列に変換するに - はnr2char()を使う。 - - ユーザがマウスをクリックしたときはマウスイベントを返す。クリッ - クした位置は|v:mouse_col|, |v:mouse_lnum|, |v:mouse_win|で得ら - れる。以下の例は、普通にマウスがクリックされたときと同じように - カーソルを移動させる。 > - let c = getchar() - if c == "\<LeftMouse>" && v:mouse_win > 0 - exe v:mouse_win . "wincmd w" - exe v:mouse_lnum - exe "normal " . v:mouse_col . "|" - endif -< - この関数を呼んだときプロンプトは表示されない。文字入力を待って - いることをなんらかの方法でユーザがわかるようにしなければならな - いだろう。 - 入力された文字に対してマッピングは適用されない。 - キーコードは置換される。つまりユーザが<Del>を押した場合、「生 - の」文字シーケンスでなく<Del>キーに対応するコードが得られる。 - 例: > - getchar() == "\<Del>" - getchar() == "\<S-Left>" -< 以下の例は大文字・小文字を区別しないように"f"を再定義する: > - :nmap f :call FindChar()<CR> - :function FindChar() - : let c = nr2char(getchar()) - : while col('.') < col('$') - 1 - : normal l - : if getline('.')[col('.') - 1] ==? c - : break - : endif - : endwhile - :endfunction - -getcharmod() *getcharmod()* - 最後にgetchar()などで得た文字に対する修飾キーの状態を表す数値 - を返す。以下の値の和となる: - 2 shift - 4 control - 8 alt (meta) - 16 マウスダブルクリック - 32 マウストリプルクリック - 64 マウスクアドラプルクリック - 128 Macintoshのみ: command - 文字自身に含まれていない修飾キーのみ取得できる。つまり、 - Shift-aは修飾キーなしの"A"となる。 - -getcmdline() *getcmdline()* - 現在のコマンドラインの内容を取得する。コマンドラインを編集して - いるときのみ動作する。つまり|c_CTRL-\_e|または|c_CTRL-R_=|を使っ - ているときのみ有効。 - 例: > - :cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR> -< |getcmdtype()|, |getcmdpos()|, |setcmdpos()|も参照。 - -getcmdpos() *getcmdpos()* - コマンドラインにおけるカーソル位置をバイト単位で取得する。最初 - の桁は1となる。コマンドラインを編集しているときのみ動作する。 - つまり|c_CTRL-\_e|または|c_CTRL-R_=|を使っているときのみ有効。 - |getcmdtype()|, |setcmdpos()|, |getcmdline()|も参照。 - -getcmdtype() *getcmdtype()* - 現在のコマンドラインの種類を返す。戻り値は次のいずれか: - : 通常のexコマンド - > デバッグモードコマンド |debug-mode| - / 前方検索コマンド - ? 後方検索コマンド - @ |input()| コマンド - - |:insert| または |:append| コマンド - コマンドラインを編集しているときのみ動作する。つまり - |c_CTRL-\_e|または|c_CTRL-R_=|を使っているときのみ有効。そうで - ないときは空文字列を返す。 - |getcmdpos()|, |setcmdpos()|, |getcmdline()|も参照。 - - *getcwd()* -getcwd() 結果は文字列で、現在のディレクトリ名。 - -getfsize({fname}) *getfsize()* - 結果は数値で、{fname}で指定されるファイルのサイズをバイト単位 - で返す。 - {fname}がディレクトリのときは0を返す。 - ファイル{fname}が見つからないときは-1を返す。 - {fname} のサイズが |Number| の範囲外の場合は -2 を返す。 - -getfontname([{name}]) *getfontname()* - 引数なしで使われた場合には現在の通常のフォント名を返す。ハイラ - イトグループNormalに対して使われるものと同様|hl-Normal|。 - 引数が指定された場合には{name}が有効なフォント名であるか判定さ - れる。有効でないときは空文字列を返す。 - 有効なときは実際のフォント名を返す。またはGUIが実際の名前の取 - 得をサポートしていないときは{name}をそのまま返す。 - GUIモードで実行しているときのみ動作する。よってvimrcやgvimrcの - 中では使えない。GUIモードが起動した直後にこの関数を呼ぶには、 - オートコマンド|GUIEnter|を使うこと。 - Note GTK 2のGUIはどんなフォント名でも受け付けてしまうため、名 - 前が有効であるかのチェックは動作しない。 - -getfperm({fname}) *getfperm()* - {fname}で指定されたファイルの読み込み、書き込み、実行の許可属 - 性を示す文字列を返す。 - {fname}が存在しない、またはそのディレクトリが読み込み不可能な - ときは空文字列を返す。 - 戻り値は"rwxrwxrwx"の形で、"rwx"フラグの各グループは順にファイ - ルの所有者、ファイルが所属するグループ、その他のユーザを表す。 - 許可属性が与えられていないフラグは"-"で置き換えられる。例: > - :echo getfperm("/etc/passwd") -< この例は、(セキュリティの観点から望ましい設定がされているなら - ば)"rw-r--r--"あるいは"rw-------"と表示する。 - - *getftime()* -getftime({fname}) - 結果は{fname}で与えられたファイルの、最終更新時間を示す数値。 - 1970年1月1日からの経過時間(秒)で、strftime()に渡すことができる - だろう。|localtime()|と|strftime()|も参照。 - ファイル{fname}が見つからなかった場合には-1を返す。 - -getftype({fname}) *getftype()* - {fname}で指定されたファイルの種別を示す文字列を返す。 - {fname}が存在しないときは空文字列を返す。 - ファイルの種別とそれらの結果の表を以下に示す: - 通常ファイル "file" - ディレクトリ "dir" - シンボリックリンク "link" - ブロックデバイス "bdev" - キャラクタデバイス "cdev" - ソケット "socket" - FIFO "fifo" - それ以外 "other" - 例: > - getftype("/home") -< Note "link"などの種別はそれをサポートしているシステムでのみ返 - される。"dir"と"file"しか返らないシステムもある。 - - *getline()* -getline({lnum} [, {end}]) - {end}が指定されない場合は、カレントバッファの{lnum}行目の内容 - を文字列にして返す。例: > - getline(1) -< {lnum}が数字ではない文字で始まる文字列であった場合、line()に - よってその文字列が数字に変換される。よって、カーソルのある行の - 文字列を取得するには: > - getline(".") -< {lnum}が1より小さいかバッファの行数よりも大きい数値の場合、空 - 文字列が返される。 - - {end}が指定された場合は、カレントバッファの{lnum}行目から - {end}行目までを要素とするリスト|List|を返す。 - {end}は{lnum}と同様に解釈される。 - 存在しない行は省略され、エラーメッセージは表示されない。 - {end}が{lnum}より前になる場合は空リストを返す。 - 例: > - :let start = line('.') - :let end = search("^$") - 1 - :let lines = getline(start, end) - -< 他のバッファの行を取得するには|getbufline()|を参照。 - -getloclist({nr}) *getloclist()* - ウィンドウ{nr}のロケーションリストの全項目からなるリストを返す。 - {nr}に0を指定するとカレントウィンドウになる。ロケーションリス - トウィンドウに対して使用すると、そこに表示されているロケーショ - ンリストが返る。ウィンドウ番号{nr}が無効な場合は、空リストが返 - る。それ以外は|getqflist()|と同じ。 - -getmatches() *getmatches()* - |matchadd()| と |:match| により定義された全てのマッチの |List| - を返す。|setmatches()| は |getmatches()| で保存されたマッチの - リストを復元できるので、|getmatches()| と |setmatches()| は組 - み合わせて使うと便利である。 - 例: > - :echo getmatches() -< [{'group': 'MyGroup1', 'pattern': 'TODO', - 'priority': 10, 'id': 1}, {'group': 'MyGroup2', - 'pattern': 'FIXME', 'priority': 10, 'id': 2}] > - :let m = getmatches() - :call clearmatches() - :echo getmatches() -< [] > - :call setmatches(m) - :echo getmatches() -< [{'group': 'MyGroup1', 'pattern': 'TODO', - 'priority': 10, 'id': 1}, {'group': 'MyGroup2', - 'pattern': 'FIXME', 'priority': 10, 'id': 2}] > - :unlet m -< -getqflist() *getqflist()* - 現在の全quickfixエラーのリストを返す。リストの各要素は辞書で、 - 以下の要素を持つ: - bufnr ファイル名を持つバッファの番号。その名前を取得 - するにはbufname()を使う。 - lnum バッファ中の行番号(最初の行は1) - col 桁番号(最初の桁は1) - vcol 0以外: "col"は画面上の桁 - 0: "col"はバイトインデックス - nr エラー番号 - pattern エラーの位置を特定するために使う検索パターン - text エラーの説明 - type エラーメッセージの種類。'E', '1'など。 - valid 0以外: エラーメッセージが認識されている - - エラーリストがまったくないか、空であるときは空リストを返す。 - 存在しないバッファ番号を持つquickfixリストの項目は"bufnr"を0に - して返される。 - - 役に立つ応用例: 複数のファイルから正規表現検索を行い、見つかっ - たものに対してなんらかの操作をする: > - :vimgrep /theword/jg *.c - :for d in getqflist() - : echo bufname(d.bufnr) ':' d.lnum '=' d.text - :endfor - -getreg([{regname} [, 1]]) *getreg()* - レジスタ{regname}の中身を文字列にして返す。例: > - :let cliptext = getreg('*') -< getreg('=')は最後に評価した式レジスタの値を返す。(マップの中で - 使用する)。 - getreg('=', 1)はその式そのものを返す。これを使って|setreg()|で - 復元することができる。他のレジスタの場合は、この引数は無視され - るので、常に指定していても害はない。 - {regname}を指定しないときは|v:register|が使われる。 - - -getregtype([{regname}]) *getregtype()* - レジスタ{regname}の種類を表す文字列を返す。 - 戻り値は次のいずれかとなる: - "v" 文字指向|characterwise|の場合 - "V" 行指向|linewise|の場合 - "<CTRL-V>{width}" 矩形指向|blockwise-visual|の場合 - 0 空、または未知のレジスタの場合 - <CTRL-V>は値0x16の1文字である。 - {regname}を指定しないときは|v:register|が使われる。 - -gettabvar({tabnr}, {varname}) *gettabvar()* - タブページ {tabnr} のタブローカル変数 {varname} を取得する。 - |t:var| - タブの番号は 1 から始まる。 - Note: 指定する変数名は "t:" を除いた名前。 - -gettabwinvar({tabnr}, {winnr}, {varname}) *gettabwinvar()* - タブページ{tabnr}内のウィンドウ{winnr}のウィンドウローカル変数 - {varname}の値を取得する。 - {varname}が文字"&"で始まるときはウィンドウローカルオプションの - 値を取得する。 - タブページ番号は1から始まる。カレントタブページを指定するには - |getwinvar()|を指定する。 - {winnr}が0のときはカレントウィンドウとなる。 - グローバルオプション、バッファローカルオプション、ウィンドウ - ローカルオプションに対しても動作するが、グローバル変数やバッ - ファローカル変数に対しては動作しない。 - {varname}が空のときは全ウィンドウローカル変数からなる辞書を返 - す。 - Note {varname}は"w:"をつけずに指定しなければならない。 - 例: > - :let list_is_on = gettabwinvar(1, 2, '&list') - :echo "myvar = " . gettabwinvar(3, 1, 'myvar') -< - - *getwinposx()* -getwinposx() 結果はGUIのVimウィンドウの左端の、デスクトップ上でのX座標値(数 - 値)。情報が存在しない(コンソールの)場合は-1となる。 - - *getwinposy()* -getwinposy() 結果はGUIのVimウィンドウの上端の、デスクトップ上でのY座標値(数 - 値)。情報が存在しない(コンソールの)場合は-1となる。 - -getwinvar({winnr}, {varname}) *getwinvar()* - カレントタブページに対する|gettabwinvar()|と同様。 - 例: > - :let list_is_on = getwinvar(2, '&list') - :echo "myvar = " . getwinvar(1, 'myvar') - -glob({expr} [, {flag}]) *glob()* - {expr}内のファイル名のワイルドカードを展開する。特殊文字につい - ては|wildcards|を参照。結果は文字列。 - 結果が複数存在する場合、各々が文字<NL>によって区切られる。 - {flag} に非零を指定しない限り、'suffixes' と 'wildignore' が適 - 用される。つまり'wildignore' のパターンにマッチする名前はス - キップされ、'suffixes' がマッチの順番に影響を与える。 - 'wildignorecase' は常に適用される。 - 展開が失敗した場合、結果は空文字列。結果には、存在しないファイ - ル名は含まれない。 - - 多くのシステムではバッククォート(「`」という文字のこと)を、外 - 部コマンドの実行結果からファイル名を取得するために使用できる。 - 例: > - :let tagfiles = glob("`find . -name tags -print`") - :let &tags = substitute(tagfiles, "\n", ",", "g") -< バッククォート内のプログラムの実行結果は、一行に一つずつの項目 - が含まれてなければならない。項目内のスペースは許容される。 - - 特殊なVimの変数を展開するためには|expand()|を参照。外部コマン - ドの生の出力を得るためには|system()|を参照。 - -globpath({path}, {expr} [, {flag}]) *globpath()* - {path}の中の全ディレクトリに対して|glob()|を実行し、結果を連結 - する。例: > - :echo globpath(&rtp, "syntax/c.vim") -< {path}はコンマ区切りのディレクトリのリスト。各ディレクトリを - {expr}の前に付加し、glob()と同様にそれを展開する。必要に応じて - パスの区切り文字が挿入される。 - ディレクトリ名の中にコンマを含めるには、バックスラッシュでエス - ケープすること。Note MS-Windowsではディレクトリ名の末尾にバッ - クスラッシュがつくことがある。その後に区切りのコンマを書くとエ - スケープと見なされてしまうので、バックスラッシュは削除すること。 - どれかのディレクトリに対して展開が失敗してもエラーメッセージは - 表示されない。 - {flag} に非零が指定されない限り、オプション'wildignore'が適用 - される。つまり、'wildignore'のパターンにマッチする名前はスキッ - プされる。 - - "**"を使ってディレクトリツリーを再帰的に検索することができる。 - 例えば、'runtimepath'とそれ以下のディレクトリから全ての - "README.txt"を探すには次のようにする: > - :echo globpath(&rtp, "**/README.txt") -< 上向き検索と、"**" の深さの限界はサポートされていない。よって - オプション 'path' の値をそのまま使うとうまく動かないことが - ある。 - - *has()* -has({feature}) 結果は機能{feature}がサポートされる場合1、されない場合0とな - る。引数{feature}は文字列。下記の|feature-list|を参照。 - |exists()|も参照。 - -has_key({dict}, {key}) *has_key()* - 結果は数値で、辞書|Dictionary| {dict}がキー{key}の要素を持つな - ら1、持たないなら0となる。 - -haslocaldir() *haslocaldir()* - 結果は数値でカレントウィンドウが|:lcd|によってローカルなカレン - トディレクトリを持つようセットされているなら1、そうでないなら - 0となる。 - -hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()* - 結果は数値。右辺側(マップした先)の一部分に{what}を含むマッピン - グが存在し、それが{mode}で指定されたモードのいずれかで定義され - ているなら1を返す。 - {abbr}が指定されていて0でないときはマッピングでなく短縮入力の - 存在を判定する。インサートモードまたはコマンドモードを指定する - ことを忘れないように。 - グローバルマップとバッファローカルマップの両方をチェックする。 - マッピングが1個も見つからなかったときは0を返す。 - {mode}に対しては以下の文字が利用できる: - n ノーマルモード - v ビジュアルモード - o オペレータ待機モード (Operator-pending) - i インサートモード - l Language-Argumentモード ("r", "f", "t"など) - c コマンドラインモード - {mode}が省略されたときは"nvo"となる。 - - この関数はVimスクリプトの中で、ある関数へのマッピングが既に存 - 在するか判定するために有用である。例: > - :if !hasmapto('\ABCdoit') - : map <Leader>d \ABCdoit - :endif -< この例は、"\ABCdoit"へのマッピングが存在しないときだけ - "\ABCdoit"へのマッピングを作成する。 - -histadd({history}, {item}) *histadd()* - 文字列{item}を履歴{history}に追加する。履歴{history}は以下のう - ちどれか一つから選択: *hist-names* - "cmd" or ":" コマンドライン履歴 - "search" or "/" 検索パターン履歴 - "expr" or "=" タイプされた式の履歴 - "input" or "@" input()の履歴 - {item}が履歴内に既に存在する場合、それが最新の項目の位置へシフ - トされる。結果は数値:操作が成功した場合1、そうでなければ0 - - 例: > - :call histadd("input", strftime("%Y %b %d")) - :let date=input("Enter date: ") -< サンドボックス|sandbox|の中では利用できない。 - -histdel({history} [, {item}]) *histdel()* - {history}の内容を削除する。例えば総てのエントリを消すこともで - きる。{history}の部分に可能な値は|hist-names|を参照。 - - パラメータ{item}が文字列に評価される場合、これは正規表現と - して扱われる。その表現にマッチする総てのエントリがhistoryから - 削除される(複数あっても)。 - "\c"をつけない場合、大文字・小文字が一致しなければならない。 - |/\c|。 - {item}が数値に評価される場合、インデックスとして解釈される。イ - ンデックスについては|:history-indexing|を参照。関連するエント - リ(訳注:The respective entry)も、存在すれば削除される。 - - 結果は数値: 削除に成功すれば1を、そうでなければ0が返る。 - - 例: - 式レジスタの履歴を削除する: > - :call histdel("expr") -< - 検索履歴から、"*"で始まるエントリを総て削除する: > - :call histdel("/", '^\*') -< - 次の3つは等価である: > - :call histdel("search", histnr("search")) - :call histdel("search", -1) - :call histdel("search", '^'.histget("search", -1).'$') -< - 最後の検索パターンを削除し、一つ前のパターンを"n"コマンド(次の - マッチへ移動)と'hlsearch'の為に設定する: > - :call histdel("search", -1) - :let @/ = histget("search", -1) - -histget({history} [, {index}]) *histget()* - 結果は{history}の第{index}エントリーを表わす文字列。{history} - の部分に可能な値は|hist-names|を、{index}については - |:history-indexing|を参照。指定されたエントリが存在しない場合 - は空文字列が返される。{index}が省略された場合には、履歴中の最 - 新のエントリが戻り値として使用される。 - - 例: - 2つ前に行なわれた検索をやり直す: > - :execute '/' . histget("search", -2) - -< |:history|によって出力される{num}番目のエントリを、再 - 度実行するための":H {num}"というコマンドを定義する。 > - :command -nargs=1 H execute histget("cmd",0+<args>) -< -histnr({history}) *histnr()* - 結果は数値で{history}の現在のエントリー数。{history}の部分に可 - 能な値は|hist-names|を参照。エラーが起こった場合、-1が返され - る。 - - 例: > - :let inp_index = histnr("expr") -< -hlexists({name}) *hlexists()* - 結果は数値で、{name}という名のハイライトグループが存在すれば、 - 非ゼロの値が返される。これはなんらかの方法でそのグループが既に - 定義されている時にのみ起こる。これの為に実際に何らかのハイライ - ティングアイテムが設定されている必要はなく、単に構文アイテムと - しても使われるだろう。 - *highlight_exists()* - 以前の名前: highlight_exists(). - - *hlID()* -hlID({name}) 結果は数値で、{name}という名前のハイライトグループのID番号。そ - のハイライトグループが存在しない場合は0が返される。 - これはハイライトグループについての情報を獲得するために使用され - る。例えば"Comment"グループの背景色を取得するにはこのようにす - る: > - :echo synIDattr(synIDtrans(hlID("Comment")), "bg") -< *highlightID()* - 以前の名前: highlightID() - -hostname() *hostname()* - 結果は文字列で、現在Vimが実行されているマシンの名前。名前が256 - 文字を超える場合、超えた部分は切り捨てられる。 - -iconv({expr}, {from}, {to}) *iconv()* - 文字列{expr}をエンコーディング{from}からエンコーディング{to}に - 変換した文字列を返す。 - 変換が完全に失敗したときは空文字列を返す。一部の文字が変換でき - なかった場合、その文字は "?" に置き換わる。 - エンコーディング名はライブラリ関数iconv()が受け付けるものなら - なんでもよい。":!man 3 iconv"を参照。 - ほとんどの変換は、Vimが|+iconv|機能つきでコンパイルされている - ときのみ利用可能。|+iconv|つきでないときもUTF-8からlatin1への - 変換とその逆は行える。 - オプション'encoding'の値に関係なく、特殊な文字を含むメッセージ - を表示するために使える。UTF-8でエンコードされたメッセージを表 - 示するには次のようにする: > - echo iconv(utf8_str, "utf-8", &enc) -< Note Vimは全てのUnicodeエンコーディングに対してUTF-8を使う。 - UCS-2との変換を行おうとしても、自動的にUTF-8との変換に変更され - る。いずれにせよ、UCS-2はNULバイトを含むため、文字列にUCS-2を - 使うことはできない。 - {|+multi_byte| 機能付きでコンパイルされたときのみ利用可能} - - *indent()* -indent({lnum}) カレントバッファの{lnum}行目のインデント量を数値で返す。この - インデント量はスペース単位で数えられ、'tabstop'の値が関係する。 - {lnum}は|getline()|の場合と同様に扱われる。 - {lnum}が無効なときは-1を返す。 - - -index({list}, {expr} [, {start} [, {ic}]]) *index()* - リスト|List| {list}の中で、{expr}に等しい要素の最小のインデッ - クスを返す。自動的な変換は行われないので、文字列の "4" は数値 - の 4 とは異なると判定される。そして数値の 4 は浮動小数点数の - 4.0 とも異なる。'ignorecase' はここでは適用されず、つねに大文 - 字・小文字は区別される。 - {start}が指定された場合はインデックス{start}から要素の検索を始 - める(負数を指定すると末尾からの相対位置となる)。 - {ic}に0でない値が指定された場合、大文字・小文字は区別されない。 - そうでない場合は区別される。 - {list}の中に{expr}が見つからない場合は-1を返す。 - 例: > - :let idx = index(words, "the") - :if index(numbers, 123) >= 0 - -input({prompt} [, {text} [, {completion}]]) *input()* - 結果は文字列で、ユーザがコマンドラインに入力したものが返される。 - 引数 {prompt} にはプロンプト文字列か空文字列を指定する。空文字 - 列の場合はプロンプトなしになる。'\n'を使ってプロンプトに改行を - 含めることができる。|:echohl|によるハイライトの設定がプロン - プトに適用される。入力はコマンドラインと同様に行え、同じ編集コ - マンドやキーマップが使用できる。input()に入力された文字列には、 - 他の履歴とは独立した履歴が与えられる。 - 例: > - :if input("Coffee or beer? ") == "beer" - : echo "Cheers!" - :endif -< - 省略可能な引数{text}が与えられ、空でないならば、それが入力の初 - 期値として、ユーザが入力したのと同じ様に表示される。例: > - :let color = input("Color? ", "white") - -< 省略可能な引数{completion}はこの入力において利用できる補完の種 - 類を指定する。この引数がないときは補完は行われない。対応してい - る補完の種類は、ユーザ定義コマンドにおいて引数"-complete="で指 - 定するものと同じである。詳しくは|:command-completion|を参照。 - 例: > - let fname = input("File: ", "", "file") -< - NOTE: この関数はGUIモードしか持たないバージョン(例、Win32 GUI) - のVimでは、スタートアップファイルの中で使用することはできな - い。 - NOTE: マッピングの中からinput()を呼ぶと、そのマッピングの残り - の文字が消費される。マッピングは、その文字が入力されたときと同 - じように処理されるためである。 - これを避けるには、input()の前に|inputsave()|を呼び、input()の - 後に|inputrestore()|を呼ぶ。もう1つの対策は、|:execute|や - |:normal|を使うなどして、そのマッピングでそれ以上文字を続けな - いようにすることである。 - - マッピングと同時に使う例: > - :nmap \x :call GetFoo()<CR>:exe "/" . Foo<CR> - :function GetFoo() - : call inputsave() - : let g:Foo = input("enter search pattern: ") - : call inputrestore() - :endfunction - -inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()* - |input()|と同様。GUIで動作していて、テキストダイアログがサポー - トされている場合はダイアログを表示してテキストを入力させる。 - 例: > - :let n = inputdialog("value for shiftwidth", &sw) - :if n != "" - : let &sw = n - :endif -< ダイアログがキャンセルされたときは{cancelreturn}を返す。 - {cancelreturn}が省略されているときは空文字列を返す。 - <Enter>を押すとOKボタンを押すのと同じ動作になる。<Esc>を押すと - キャンセルボタンを押すのと同じ動作になる。 - NOTE: コマンドライン補完は対応していない。 - -inputlist({textlist}) *inputlist()* - {textlist}は文字列のリスト|List|でなければならない。1行につき - リストの要素を1個表示し、ユーザに数字を入力するよう促す。入力 - された数字を返す。 - ユーザはマウスで文字列をクリックすることでも選択できる。最初の - 文字列を選択すると0が返る。最初の文字列より上をクリックすると - 負数が返る。プロンプト自身をクリックすると{textlist}の長さ+1が - 返る。 - {textlist}の要素数はオプション'lines'の値より少なくなければな - らない。そうでないと動作しない。最初の要素にメッセージを書き、 - 各文字列の先頭に番号をつけておくとよい。 - 例: > - let color = inputlist(['Select color:', '1. red', - \ '2. green', '3. blue']) - -inputrestore() *inputrestore()* - 前回の|inputsave()|で保存しておいた先行入力を復元する。 - inputsave()と同じ回数だけ呼ぶようにしなければならない。しかし - 多く呼びすぎても害はない。復元するものがなければ1を、そうでな - ければ0を返す。 - -inputsave() *inputsave()* - 先行入力(マッピングにより入力された文字も含む)を保存し、クリア - することにより、これ以降のプロンプトがユーザからの入力を得るよ - うにする。プロンプトの後で、対応するinputrestore()を呼び出さね - ばならない。複数回呼ぶこともできる。ただしその場合は同じ回数だ - けinputrestore()を呼ばなくてはならない。 - メモリ不足のときは1を、そうでなければ0を返す。 - -inputsecret({prompt} [, {text}]) *inputsecret()* - |input()|とほぼ同じだが、以下の2点が異なる: - a) ユーザの入力をアスタリスク("*")の列として表示し、入力内容を - 読めないようにする。 - b) ユーザの入力が入力履歴|history|に残らない。 - ユーザの入力内容を文字列として返す。 - NOTE: コマンドライン補完には対応していない。 - -insert({list}, {item} [, {idx}]) *insert()* - リスト|List| {list}の初めに{item}を挿入する。 - {idx}が指定されたときはインデックス{idx}の要素の前に{item}を挿 - 入する。{idx}が0のときは{idx}を省略した場合と同じ様に最初の要 - 素の前に挿入する。{idx}は負数でもよい(|list-index|参照)。-1を - 指定すると最後の要素の前に挿入する。 - 挿入した結果のリストを返す。例: > - :let mylist = insert([2, 3, 5], 1) - :call insert(mylist, 4, -1) - :call insert(mylist, 6, len(mylist)) -< 最後の例は|add()|を使うともっと簡単に書ける。 - Note {item}がリストの場合は、1個の要素として追加される。リスト - を連結するには|extend()|を使うこと。 - - *isdirectory()* -isdirectory({directory}) - 結果は数値で、{directory}という名前のディレクトリが存在すれば - TRUEとなる。{directory}が存在しないか、存在したとしてもディレ - クトリではなかった場合には、FALSEが返される。文字列として解釈 - できるのならば{directory}の表現はどのようなものであってもかま - わない。 - -islocked({expr}) *islocked()* *E786* - 結果は数値で、{expr}がロックされている変数の名前ならば非0を返 - す。 - {expr}は変数の名前、リストの要素、辞書の要素のいずれかでなけれ - ばならない。変数そのものを指定しないように注意。例: > - :let alist = [0, ['a', 'b'], 2, 3] - :lockvar 1 alist - :echo islocked('alist') " 1 - :echo islocked('alist[1]') " 0 - -< {expr}が存在しない変数のときはエラーメッセージが表示される。変 - 数の存在を確認するには|exists()|を使う。 - -items({dict}) *items()* - {dict}の全要素のキー・値のペアからなるリストを返す。戻り値の各 - 要素はリストであり、キーと値の2個の要素を持つ。戻り値のリスト - の要素の順序は不定である。 - - -join({list} [, {sep}]) *join()* - リスト{list}の要素を連結し、1個の文字列にして返す。 - {sep}が指定されたときは、要素の間にそれを挿入する。{sep}が指定 - されたときは1個のスペースが使われる。 - Note 末尾には{sep}がつかない。末尾にもつけたければ以下のように - する: > - let lines = join(mylist, "\n") . "\n" -< {list}の要素が文字列なら、そのまま使われる。リストと辞書は - |string()|を使ったときと同じようにして文字列に変換される。 - この逆を行う関数は|split()|である。 - -keys({dict}) *keys()* - {dict}の全キーからなるリストを返す。リストの順序は不定である。 - - *len()* *E701* -len({expr}) 結果は数値で、引数{expr}の長さ。{expr}が文字列または数値のとき - は|strlen()|と同じようにバイト単位での長さを返す。 - {expr}がリストのときは要素数を返す。 - {expr}が辞書のときは要素数を返す。 - それ以外のときはエラーとなる。 - - *libcall()* -libcall({libname}, {funcname}, {argument}) - ランタイムライブラリ{libname}の関数{funcname}を、引数 - {argument}として呼び出す。 - Vimで使うように特別に作ったライブラリの関数を呼ぶために使われ - る。引数は1個しか指定できないため、普通のライブラリ関数を呼ぶ - にはかなり制限がある。 - 結果には、呼び出した関数から返された文字列が返される。呼び出し - た関数がNULLを返した場合には、Vimには空文字列""が戻される。 - 関数の戻り値が数値である場合には|libcallnr()|を使うこと。 - もしも引数が数値ならば、関数にはint型の引数が1つ渡される。引数 - が文字列の場合には、関数にはヌル終端記号を持つ文字列が引数とし - て渡される。 - |restricted-mode|の中で呼ぶと失敗する。 - - libcall()によってVimを再コンパイルすることなく'plug-in'と呼ば - れる独自の拡張を行なうことができるようになる。それは(直接)シス - テムの関数を呼ぶ、ということではない。システム関数を呼ぶとおそ - らくVimがクラッシュするだろう。 - - Win32では、あなたが書いた関数をDLLに置かなければならず、また通 - 常のC呼出し規約を使用しなければならない(WindowsのシステムDLLが - 使うPascalではない)。関数は正確に1つのパラメータ、char型ポイン - タもしくはint型を取らなければならず、戻り値としてchar型ポイン - タかNULLを返さなければならない。返されるchar型ポインタは、関数 - 終了後も有効なポインタ(例えばDLL内の静的なデータ)を指さなけれ - ばならない。(malloc等で)割り当てられたメモリを保持していた場 - 合、それはリークしてしまう。DLL内のスタティックバッファを用い - る方法は動くかもしれないが、使用済みDLLがメモリから削除される - と同時に解放されてしまう。 - - 警告: もしも関数が有効ではないポインタを返すと、Vimはクラッ - シュしてしまう。関数が数値を返してしまった場合、Vimはそれをポ - インタとして扱ってしまうので、やはりクラッシュが起こる。 - Win32のシステムでは、{libname}はDLLのファイル名の拡張子".DLL" - を付けてはならない。通常の(パスの通った)場所にDLLがない場合に - は、フルパスで指定する必要がある。 - Unixでは、独自のプラグインをコンパイルするときはオブジェクトコー - ドを位置独立('PIC')としてコンパイルしなければならない。 - {Win32 といくつかの Unix で、|+libcall| 機能が有効になっている - ときのみ利用可能} - 例: > - :echo libcall("libc.so", "getenv", "HOME") -< - *libcallnr()* -libcallnr({libname}, {funcname}, {argument}) - |libcall()|とほぼ同様だが、文字列でなくintを返す関数に使う。 - {Win32と、|+libcall|機能が有効になっているUnixでのみ利用可能} - 例: > - :echo libcallnr("/usr/lib/libc.so", "getpid", "") - :call libcallnr("libc.so", "printf", "Hello World!\n") - :call libcallnr("libc.so", "sleep", 10) -< - *line()* -line({expr}) 結果は数値で、{expr}で与えられた位置のファイル内での行番号。受 - け付けられる位置指定は次の通り: - . カーソルの位置 - $ 現在のバッファの最後の位置 - 'x マークxの位置(マークが設定されていない場合、0が返 - る) - w0 カレントウィンドウの最上行 - w$ カレントウィンドウの最下行 - v ビジュアルモードでは: ビジュアル選択領域の開始行 - (カーソルがその端)。ビジュアルモード以外ではカーソ - ル位置を返す。すぐに更新される点が |'<| と違う。 - Note 他のファイルのマークも使える。その場合、戻り値はそのファ - イルの行番号となる。 - 桁番号を取得するには|col()|を使う。両方を取得するには - |getpos()|を使う。 - 例: > - line(".") カーソルの行番号 - line("'t") マークtの位置の行番号 - line("'" . marker) マークmarkerの位置の行番号 -< *last-position-jump* - このオートコマンドはファイルを開いた時に、最後に開かれていた時 - の行へ自動的にジャンプするものである。これは'"マークがセットさ - れている時にのみ有効である: > - :au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif - - *line2byte()* -line2byte({lnum}) - バッファの先頭から、{lnum}行目までのバイト数を返す。これには現 - 在のバッファのオプション'fileformat'に従った、end-of-line(行終 - 端)文字も含まれている。最初の行においては1が返る。 - 次のようにすることで最終行を含むバイトサイズを獲得することがで - きる: > - line2byte(line("$") + 1) -< これはファイルの大きさプラス1になる。 - {lnum}が無効であるか、|+byte_offset|機能がコンパイル時に無効に - されている場合、-1が返される。 - |byte2line()|、|go|及び|:goto|も参照。 - -lispindent({lnum}) *lispindent()* - 'lisp'をオンにしたときと同じlisp用のインデント規則に従った場合 - の{lnum}行目のインデント量を返す。 - インデント量はスペースで数えられ、'tabstop'の値は関係ない。 - {lnum}は|getline()|の場合と同様に扱われる。 - {lnum}が無効な値のときや|+lispindent|機能なしでコンパイルされ - ているときは-1を返す。 - - *localtime()* -localtime() - 現在の時刻、1970年1月1日からの経過秒数を返す。|strftime()|と - |getftime()|も参照。 - - -log({expr}) *log()* - {expr} の自然対数 (底e) を浮動小数点数 (|Float|) で返す。 - {expr} は (0, inf] の範囲の浮動小数点数 (|Float|) か数値 - (|Number|) でなければならない。 - 例: > - :echo log(10) -< 2.302585 > - :echo log(exp(5)) -< 5.0 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - -log10({expr}) *log10()* - 浮動小数点数 {expr} の 10 を底とする対数を |Float| で返す。 - {expr} は |Float| または |Number| に評価されなければならな - い。 - 例: > - :echo log10(1000) -< 3.0 > - :echo log10(0.01) -< -2.0 - {|+float| 機能つきでコンパイルされたときのみ有効} - -map({expr}, {string}) *map()* - {expr}はリスト|List|または辞書|Dictionary|。 - {expr}の各要素を、{string}を評価した結果で置き換える。 - {string}の中では|v:val|が現在の要素の値を保持している。 - 辞書の場合は|v:key|が現在の要素のキーを保持している。 - リストの場合は|v:key|が現在の要素のインデックスを保持してい - る。 - 例: > - :call map(mylist, '"> " . v:val . " <"') -< これは"mylist"の各要素の前に"> "をつけ、後に" <"をつける。 - - Note {string}は式を表す文字列である。バックスラッシュを二重に - しなくても済むように|literal-string|を使うとよいだろう。ただし - その場合はシングルクォートを2重にしなければならない。 - - この操作はその場で(in-place)行われる。リストや辞書を変更したく - ない場合は最初にコピーを作ること: > - :let tlist = map(copy(mylist), ' & . "\t"') - -< 式を適用した結果の{expr}を返す。{string}を評価している最中にエ - ラーが発生した場合は、それ以降の要素は処理されない。 - - -maparg({name}[, {mode} [, {abbr} [, {dict}]]]) *maparg()* - {dict}が省略されたかゼロのとき: モード{mode}におけるキーマップ - {name}のrhsを返す。結果の文字列内の特殊文字は、":map"コマンド - でリスト表示した時のように変換される。 - - {name}というキーマップが存在しない場合、空文字列が返される。 - - {name}には":map"コマンドで使用可能な、特殊なキー名が指定でき - る。 - - {mode}には次の文字が使用可能: - "n" ノーマル - "v" ビジュアル (セレクト含む) - "o" オペレータ待機 (Operator-pending) - "i" インサート - "c" コマンドライン - "s" セレクト - "x" ビジュアル - "l" langmap |language-mapping| - "" ノーマル、ビジュアル、及びオペレータ待機 - {mode}が省略された場合、""が使用される。 - - {abbr}が指定され、0でない場合はマッピングでなく短縮入力を対象 - とする。 - - {dict} に非ゼロの値が指定されたときはマッピングのすべての情報 - を含んだ辞書が返る: - "lhs" マッピングの {lhs} - "rhs" マッピングの {rhs} (入力されたまま) - "silent" |:map-silent| マッピングなら 1。そうでなければ0。 - "noremap" マッピングの {rhs} が再マップ可能なら 1。 - "expr" 式マッピング (|:map-<expr>|) なら 1。 - "buffer" バッファローカルマッピング (|:map-local|) なら1。 - "mode" マッピングが定義されているモード。上述のモードに - 加え、次の文字が使用される: - " " ノーマル、ビジュアル、オペレータ待機 - "!" インサート、コマンドラインモード - (|mapmode-ic|) - "sid" <sid> マッピングで使用されるスクリプトローカルID - (|<SID>|)。 - - まずカレントバッファにローカルなマッピングを探し、次のグローバ - ルマッピングを探す。 - この関数を使うと、あるキーに対して既にマップがされているとき、 - その動作を行いつつ、再マップすることができる。概要: > - exe 'nnoremap <Tab> ==' . maparg('<Tab>', 'n') - -mapcheck({name}[, {mode} [, {abbr}]]) *mapcheck()* - モード{mode}におけるキーマップ{name}が存在するかチェックする。 - {name}に指定できる特殊文字は|maparg()|を参照。 - {abbr}が指定され、0でない場合はマッピングでなく短縮入力を対象 - とする。 - マッピングが{name}で始まるとき、またはマッピングが{name}のはじ - めに等しいときマッチすると見なされる。 - - マッチするか "a" "ab" "abc" ~ - mapcheck("a") yes yes yes - mapcheck("abc") yes yes yes - mapcheck("ax") yes no no - mapcheck("b") no no no - - maparg()との違いは、mapcheck()は{name}にマッチするマップを見つ - けるが、maparg()はぴったり{name}に一致するマッピングのみを見つ - ける。 - {name}にマッチするキーマップが存在しない時には、空文字列が返さ - れる。結果が一つならばマップされたrhsが返される。複数見つかっ - た場合には、それらのうちどれか一つのrhsが返される。 - まずカレントバッファにローカルなマッピングを探し、次のグローバ - ルマッピングを探す。 - この関数はマッピングが曖昧にならないかチェックするために使うこ - とができる。例: > - :if mapcheck("_vv") == "" - : map _vv :set guifont=7x13<CR> - :endif -< これは、"_vv"というマッピングが"_v"とか"_vvv"といったマッピン - グと衝突しないように事前にチェックしている。 - -match({expr}, {pat}[, {start}[, {count}]]) *match()* - {expr}がリストの場合は、{pat}にマッチする最初の要素のインデッ - クスを返す。各要素は文字列として扱われる。リストと辞書はechoし - たときと同じように文字列表現に変換される。 - それ以外の場合は、{expr}は文字列として扱われる。{expr}の中で - {pat}にマッチするインデックス(バイト単位のオフセット)を表す数 - 値を返す。 - 最初の文字またはリストの最初の要素にマッチしたときは0を返す。 - マッチがないときは-1を返す。 - サブマッチを取得するには |matchlist()| を参照。 - 例: > - :echo match("testing", "ing") " 結果は 4 - :echo match([1, 'x'], '\a') " 結果は 1 -< {pat}の扱われ方については|string-match|を参照。 - *strpbrk()* - strpbrk()に相当する関数はVimに存在しない。しかし同じことを次の - ようにしてできる: > - :let sepidx = match(line, '[.,;: \t]') -< *strcasestr()* - strcasestr()に相当する関数はVimに存在しない。しかし正規表現に - "\c"をつければ大文字・小文字の違いを無視できる: > - :let idx = match(haystack, '\cneedle') -< - {start}が指定されたときは、文字列のバイトインデックス{start}の - 位置、またはリストの{start}の要素から検索を始める。 - その場合も戻り値は最初の文字/要素から数えたインデックスである - ことに注意。例: > - :echo match("testing", "ing", 2) -< の結果は"4"。 > - :echo match("testing", "ing", 4) -< の結果は"4"。 > - :echo match("testing", "t", 2) -< の結果は"3"。 - 文字列の場合、{start} > 0のときは、その文字列が{start}バイト後 - から始まるかのように扱われる。そのため、"^"は{start}の位置にマッ - チする。ただし{count}が指定されたときは、{start}より前における - マッチを無視しているかのように振る舞う(これは後方互換性を保つ - のを少々複雑にしている)。 - 文字列の場合、{start} < 0のときは{start}に0をセットする。リス - トの場合は、末尾からインデックスを数えるという意味になる。 - {start}が範囲外の場合(文字列で{start} > strlen({expr})となった - 場合、リストで{start} > len({expr})となった場合)は-1を返す。 - - {count}が指定されたときは{count}番目のマッチ位置を返す。文字列 - でマッチが見つかったとき、次のマッチングは1文字先から行われる。 - よって次の例は1を返す: > - echo match("testing", "..", 0, 2) -< リストの場合は次の要素から検索を続ける。 - Note {count}を指定すると、{start}の扱い方が変わってしまう。 - 前の段落を参照。 - - 受け付ける正規表現については|pattern|を参照。 - オプション'ignorecase'により、大文字・小文字を区別するかどうか - を設定できる。'smartcase'は適用されない。マッチングは常に - 'magic'をオン、'cpoptions'を空にした状態で行われる。 - - *matchadd()* *E798* *E799* *E801* -matchadd({group}, {pattern}[, {priority}[, {id}]]) - カレントウィンドウで強調表示するパターンを定義する。このパター - ンのことを「マッチ」と呼ぶ。構文グループ {group}で強調する。戻 - り値は、マッチを識別する ID である。|matchdelete()|でこの ID - を指定してマッチを削除することができる。 - - 省略可能な引数 {priority} はマッチの優先度を指定する。優先度が - 高いマッチは、より低いマッチの強調を上書きする。優先度は整数で - 指定する(負の数も可能)。{priority} が指定されない場合は既定の - 優先度 10 となる。'hlsearch' の優先度はゼロで、したがってゼロ - より大きい優先度のマッチはすべてそれを上書きする。構文ハイライ - ト('syntax' を参照)は独立したメカニズムであり、優先度がいくつ - であろうとマッチは構文ハイライトより優先する。 - - {id} は特定のマッチ ID を返すことを要求する。指定された ID が - すでに使われていたら、エラーメッセージが表示され、そのマッチは - 登録されない。ID は正の整数を指定する(ゼロは除く)。ID 1, 2, 3 - は |:match|, |:2match|, |:3match| 用に予約されている。{id} が - 指定されないときは、|matchadd()| が自動的に空いている ID を取 - 得する。 - - コマンド |:match| と異なり、マッチの個数に上限はない。 - - 例: > - :highlight MyGroup ctermbg=green guibg=green - :let m = matchadd("MyGroup", "TODO") -< このパターンを削除するには: > - :call matchdelete(m) - -< |matchadd()| と |:match| で定義したマッチのリストは - |getmatches()| で取得できる。全てのマッチを削除するのは - |clearmatches()| 一発でできる。 - -matcharg({nr}) *matcharg()* - |:match|、|:2match|、|:3match|によって設定されているマッチパター - ンの情報を返す。{nr}が1のときは|:match|の情報、2のときは - |:2match|の情報、3のときは|:3match|の情報を返す。 - 戻り値は次の2個の要素を持つリストである: - 引数で指定したハイライトグループ名 - 引数で指定した検索パターン - {nr}が1、2、3のどれでもないときは空リストを返す。 - マッチパターンがセットされていないときは['', '']を返す。 - |:match|を保存し、復元するのに便利である。 - |:match| を使った強調は 3 個までに限られている。 - |matchadd()| にはこの制限はない。 - -matchdelete({id}) *matchdelete()* *E802* *E803* - |matchadd()| または |:match| で定義したマッチの中で ID が {id} - であるものを削除する。成功したときは 0、失敗したときは - -1 を返す。|matchadd()| の例を参照。すべてのマッチを削除するの - は |clearmatches()| 一発でできる。 - -matchend({expr}, {pat}[, {start}[, {count}]]) *matchend()* - |match()|と同じだが、返されるのはマッチした部分文字列の終了後の - インデックスである。例: > - :echo matchend("testing", "ing") -< 結果は"7"。 - *strspn()* *strcspn()* - Vimにはstrspn()やstrcspn()に相当する関数はないが、matchend()を - 使えば同じことができる: > - :let span = matchend(line, '[a-zA-Z]') - :let span = matchend(line, '[^a-zA-Z]') -< ただしマッチがないときには-1を返すところが異なる。 - - {start}は|match()|の場合と同じ意味を持つ。 > - :echo matchend("testing", "ing", 2) -< 結果は"7"。 > - :echo matchend("testing", "ing", 5) -< 結果は"-1"。 - {expr}がリストの場合、戻り値は |match()| と等しくなる。 - -matchlist({expr}, {pat}[, {start}[, {count}]]) *matchlist()* - |match()| と同じだがリストを返す。リストの最初の要素は、 - matchstr()が返すのと同じマッチした文字列。それ以降の要素は - |:substitute|における"\1"、"\2"のようなサブマッチである。\1か - ら\9までの間で、指定されなかったものは空文字列となる。例: > - echo matchlist('acd', '\(a\)\?\(b\)\?\(c\)\?\(.*\)') -< 結果は['acd', 'a', '', 'c', 'd', '', '', '', '', '']となる。 - マッチしなかったときは空リストを返す。 - -matchstr({expr}, {pat}[, {start}[, {count}]]) *matchstr()* - |match()| と同じだが、マッチした文字列を返す。例: > - :echo matchstr("testing", "ing") -< 結果は"ing"。 - マッチしなかったときは""を返す。 - {start}の意味は |match()| の場合と同じ。 > - :echo matchstr("testing", "ing", 2) -< 結果は"ing"。 > - :echo matchstr("testing", "ing", 5) -< 結果は""。 - {expr}がリストのときはマッチした要素を返す。 - その要素の型は変換されないため、必ずしも文字列であるとは限らな - い。 - - *max()* -max({list}) {list}の全要素の値の最大値を返す。 - {list}がリストでなかったり、要素のどれかが数値に変換できない場 - 合はエラーとなる。 - 空リストの場合は0を返す。 - - *min()* -min({list}) {list}の全要素の値の最小値を返す。 - {list}がリストでなかったり、要素のどれかが数値に変換できない場 - 合はエラーとなる。 - 空リストの場合は0を返す。 - - *mkdir()* *E739* -mkdir({name} [, {path} [, {prot}]]) - ディレクトリ{name}を作成する。 - {path}が"p"のときは必要に応じて途中のディレクトリも作成される。 - そうでないときは""にすること。 - {prot}は作成するディレクトリの保護ビット。デフォルトは0755 - (rwxr-xr-x: 所有者は読み書き可能、他の人は読み込み可能)。 - 他の人が読み込めないようにするには0700とすること。{prot} は - {name} の最後の部分にのみ適用される。なので、/tmp/foo/bar - を作成すると /tmp/foo は 0755 で作成される。 - 例: > - :call mkdir($HOME . "/tmp/foo/bar", "p", 0700) -< |sandbox|の中ではこの関数は使用できない。 - システムによっては利用できない場合がある。これを確認するには次 - のようにする: > - :if exists("*mkdir") -< - *mode()* -mode([expr]) 現在のモードを示す文字列を返す。 - [expr] に 0 でない数値か空でない文字列(|non-zero-arg|) - を指定した場合、フルモードが返される。それ以外の場合は - 最初の一文字だけが返される。" " と "0"はどちらも空文字 - 列ではないことに注意。 - - n ノーマル - no オペレータ待機 - v 文字指向ビジュアル - V 行指向ビジュアル - CTRL-V 矩形指向ビジュアル - s 文字指向セレクト - S 行指向セレクト - CTRL-S 矩形指向セレクト - i インサート - R 置換 |R| - Rv 仮想置換 |gR| - c コマンドライン - cv Vim Ex モード |gQ| - ce ノーマル Ex モード |Q| - r Hit-enter プロンプト - rm -- more -- プロンプト - r? ある種の |:confirm| 問い合わせ - ! シェルまたは外部コマンド実行中 - これらはオプション'statusline'の中や、|remote_expr()| といっ - しょに使うと便利である。他のほとんどの場所では"c"または"n"しか - 返さない。 - |visualmode()| も参照。 - -mzeval({expr}) *mzeval()* - MzScheme の式 {expr} を評価してその結果を Vim の変数に変換した - 結果を返す。 - 数値と文字列はそのまま返る。 - ペア (リストと不適切なリスト (improper list) を含む) とベクタ - は Vim のリスト (|Lists|) に変換される。 - ハッシュテーブルは Vim の辞書 (|Dictionary|) に変換され、その - キーは文字列に変換される。 - その他のすべての型は display 関数を使って文字列に変換される。 - 例: > - :mz (define l (list 1 2 3)) - :mz (define h (make-hash)) (hash-set! h "list" l) - :echo mzeval("l") - :echo mzeval("h") -< - {|+mzscheme| 機能を有効にしてコンパイルしたときのみ有効} - -nextnonblank({lnum}) *nextnonblank()* - {lnum}行以降({lnum}行を含む)の最初の非空行の行番号を返す。 - 例: > - if getline(nextnonblank(1)) =~ "Java" -< {lnum}が無効なときや、それ以降に非空行がないときは0を返す。 - |prevnonblank()|も参照。 - - *nr2char()* -nr2char({expr}) - コード{expr}で表される1文字からなる文字列を返す。例: > - nr2char(64) "@"を返す - nr2char(32) " "を返す -< 現在の'encoding'が適用される。"utf-8"の場合の例: > - nr2char(300) 短音記号つきのIを返す -< Note Vim内部では、ファイル中のNUL文字を改行文字(0x0A)に変換し - て保持している。そのため、nr2char(10)とすればNUL文字を指定でき - る。nr2char(0)は真のNUL文字(文字列の終端)となるので、空文字列 - を返す。 - - *getpid()* -getpid() Vim のプロセス ID を数値で返す。Unix と MS-Windows では Vim が - 終了するまでこれは一意な数値である。MS-DOS では常にゼロである。 - - *getpos()* -getpos({expr}) {expr}の位置を返す。{expr}として指定できる値については - |line()|を参照。 - 結果は次の4個の要素を持つリスト|List|: - [bufnum, lnum, col, off] - "bufnum"は、'0や'Aのようなマークが指定されたときは、そのマーク - のバッファ番号となる。それ以外では0となる。 - "lnum"と"col"はバッファ中の位置。桁番号は1から始まる。 - "off"の値は、'virtualedit'がオフのときは常に0で、オンのときは - その文字の始点からの画面上の桁のオフセットである。つまり、カー - ソルが<Tab>の中や、その行の最後の文字より後にあるとき意味を持 - つ。 - この関数はカーソル位置を保存し、復元するために使われる: > - let save_cursor = getpos(".") - MoveTheCursorAround - call setpos('.', save_cursor) -< |setpos()|も参照。 - -pathshorten({expr}) *pathshorten()* - パス{expr}におけるディレクトリ名を短縮して返す。拡張子、ファイ - ル名はそのまま保たれる。パスのその他の構成要素は1文字に縮めら - れる。1文字目の'~'と'.'はそのまま保たれる。例: > - :echo pathshorten('~/.vim/autoload/myfile.vim') -< ~/.v/a/myfile.vim ~ - パスが実際に存在するかどうかは関係ない。 - -pow({x}, {y}) *pow()* - {x} の {y} 乗を |Float| で返す。{x} と {y} は |Float| または - |Number| に評価されなければならない。 - 例: > - :echo pow(3, 3) -< 27.0 > - :echo pow(2, 16) -< 65536.0 > - :echo pow(32, 0.20) -< 2.0 - {|+float| 機能つきでコンパイルされたときのみ有効} - -prevnonblank({lnum}) *prevnonblank()* - {lnum}行以前({lnum}行を含む)の最初の非空行の行番号を返す。 - 例: > - let ind = indent(prevnonblank(v:lnum - 1)) -< {lnum}が無効なときや、それ以降に非空行がないときは0を返す。 - |nextnonblank()|も参照。 - - -printf({fmt}, {expr1} ...) *printf()* - {fmt}にしたがって組み立てた文字列を返す。{fmt}中の"%"変換指示 - 子は、対応する引数の値で置き換えられる。例: > - printf("%4d: E%d %.30s", lnum, errno, msg) -< 結果は次のような形になる: - " 99: E42 asdfasdfasdfasdfasdfasdfasdfas" ~ - - よく使われる変換指示子は次の通り: - %s 文字列 - %6s 6バイトで右揃えした文字列 - %.9s 9バイトに切り詰めた文字列 - %c 1バイト - %d 10進数値 - %5d スペースで埋めて5文字にした10進数値 - %x 16進数値 - %04x 0で埋めて少なくとも4文字にした16進数値 - %X 16進数値(大文字) - %o 8進数値 - %f 123.456 形式の浮動小数点数 - %e 1.234e3 形式の浮動小数点数 - %E 1.234E3 形式の浮動小数点数 - %g 浮動小数点数。値によって %f または %e となる - %G 浮動小数点数。値によって %f または %E となる - %% 文字 % そのもの - - 変換子指示は'%'で始まり、変換文字で終わる。それ以外の全ての文 - 字はそのままになる。 - - "%"は変換指示子の開始を意味する。以下の順序で引数を指定できる: - - % [flags] [field-width] [.precision] type - - フラグ - 0個以上の以下のフラグを指定できる - - # 値を「代替形式」に変換する。変換指示子c, d, sに - 対してはこのオプションは効果を持たない。変換指示 - 子oに対しては数値の精度を上げ、出力文字列の最初 - の文字が0になる。(明示的な精度0で値0が表示される - ときを除く) - 変換指示子xとXに対しては、値が0でない場合、文字 - 列"0x" (変換子Xの場合は"0X")を前につける。 - - 0 (zero) ゼロパディングする。全ての変換に対し、変換差され - た値の左側を空白でなく0で埋める。数値変換(d, o, - x, X)に対して精度が指定されている場合はフラグ0は - 無視される。 - - - 負のフィールド幅を示す。変換値がフィールド境界に - 左揃えされる。変換値の左に空白や0がつくのではな - く、変換値の右に空白がつく。 - -と0を両方指定した場合は-が有効になる。 - - ' ' (space) 空白。符号付き変換(d)で作成される正の数値の前 - に空白が残る。 - - + +文字。符号付き変換で作成される数値の前に常に符 - 号を付ける。+と' '(space)を両方していした場合は - +が有効になる。 - - フィールド幅 - 10進数文字列(省略可)。最低フィールド幅を指定する。変換 - 値のバイト数がこのフィールド幅より少ない場合、左に空白 - がついて(左揃えフラグを指定した場合は右に空白がついて) - フィールドの幅に合わせられる。 - - .精度 - ピリオド'.'の次に数字文字列がつづく形式の精度(省略可)。 - 数字文字列を省略した場合、精度は0になる。d, o, x, X変 - 換における最低桁数を指定する。また、s変換における最大 - バイト数を指定する。 - 浮動小数点数の場合は小数点以下の桁数。 - - 型 - 変換の型を指定する1文字。下記を参照。 - - フィールド幅と精度には、数字文字列の代わりにアスタリスク'*'を - 指定できる。その場合、対応する数値の引数がフィールド幅または精 - 度となる。負のフィールド幅を指定すると、絶対値がフィールド幅 - となり、左揃えフラグがオンになる。負の精度を指定すると、完全に - 無視される。例: > - :echo printf("%d: %.*s", nr, width, line) -< この例は、テキスト"line"の長さを"width"バイトに制限する。 - - 変換指示子の意味は以下の通り: - - *printf-d* *printf-o* *printf-x* *printf-X* - doxX 数値の引数を符号付き10進数(d)、符号なし8進数(o)、符号 - なし16進数(xまたはX)の書式に変換する。xの場合は - "abcdef"と小文字を使い、Xのの場合は"ABCDEF"と大文字を - 精度は出力する最小桁数を意味する。変換された値を出力 - するのにそれ以下しか必要としない場合は、左側にゼロを - 加えて埋める。 - フィールド幅が存在しない場合や小さすぎる場合でも、数値 - の幅を切り詰めることは決してない。変換結果がフィールド - 幅より多くの桁を必要とする場合は、十分な幅に広げられる。 - - *printf-c* - c 引数の数値を1バイトに変換し、結果の文字列を書き出す。 - - *printf-s* - s 引数の文字列を出力する。精度を指定した場合、その数値以 - 下のバイト数のみを書き出す。 - - *printf-f* *E807* - f Float の引数を 123.456 の形式の文字列に変換する。精度 - は小数点以下の桁数を指定する。精度が 0 のときは小数点 - 以下は省略される。精度を指定しないときは 6 桁となる。 - とてつもなく大きい数(範囲外またはゼロによる除算)のとき - は "inf" となる。"0.0 / 0.0" は "nan" になる。 - 例: > - echo printf("%.2f", 12.115) -< 12.12 - 丸めはシステムのライブラリに依存する。心配なときは - |round()| を使うこと。 - - *printf-e* *printf-E* - e E Float の引数を 1.234e+03 という形式('E' のときは - 1.234E+03)の文字列に変換する。精度は 'f' の場合と同じ - く小数点以下の桁数を指定する。 - - *printf-g* *printf-G* - g G 0.001(を含む)から10000000.0(を除く)の間の場合は 'f' の - 形式で変換し、この間にない場合は 'g' は'e'、'G' は 'E' - の形式によって変換する。精度が指定されないときは余分な - ゼロ(小数点の直後のゼロ以外)と '+' 記号は省かれる。よっ - て 10000000.0 は 1.0e7 になる。 - - *printf-%* - % 単一の'%'を書き出す。引数は変換しない。完全な変換指定 - は"%%"となる。 - - 数値の引数を受け取る変換指示子には文字列を与えることもできる。 - 変換は自動的に行われる。 - 浮動小数点数または文字列の引数を受け取る変換指示子には、数値を - 与えることもできる。変換は自動的に行われる。 - それ以外の型の引数を与えるとエラーメッセージが表示される。 - - *E766* *E767* - {expr1}以降の引数の数と"%"変換指示子の個数がちょうど一致しなけ - ればならない。そうでない場合はエラーとなる。引数は最大18個まで - 使える。 - - -pumvisible() *pumvisible()* - ポップアップメニューが表示されているときには非0を返す。表示さ - れていないときは0を返す。|ins-completion-menu|を参照。 - ポップアップメニューを消してしまうような操作を避けるために使わ - れる。 - - *E726* *E727* -range({expr} [, {max} [, {stride}]]) *range()* - 以下のような数値のリスト|List|を返す。 - - {expr}のみを指定したときは: [0, 1, ..., {expr} - 1] - - {max}を指定したときは: [{expr}, {expr} + 1, ..., {max}] - - {string}を指定したときは: [{expr}, {expr} + {stride}, ..., - {max}] ({max}を超えないように{expr}を{stride}ずつ増加させる) - 最大値が開始位置より1だけ前のときは空リストを返す。最大値が開 - 始位置より1以上前のときはエラーになる。 - 例: > - range(4) " [0, 1, 2, 3] - range(2, 4) " [2, 3, 4] - range(2, 9, 3) " [2, 5, 8] - range(2, -2, -1) " [2, 1, 0, -1, -2] - range(0) " [] - range(2, 0) " エラー! -< - *readfile()* -readfile({fname} [, {binary} [, {max}]]) - ファイル{fname}を読み込み、各行を要素とするリスト|List|を返す。 - 行はNL文字で終わるものとする。改行文字がCRであるMacintoshのファ - イルは単一の長い行となる(どこかにNLが現れない限り)。 - すべての NUL 文字は NL 文字に置換される。 - {binary}が"b"に等しい場合、次のようにバイナリモードになる: - - 最後の行がNLで終わるときは、リストの末尾に余分な空文字列が追 - 加される。 - - CR文字を除去しない。 - バイナリモードでない場合: - - NLの前に現れるCR文字を除去する。 - - 最後の行がNLで終わるかどうかは関係ない。 - - 'encoding' がユニコードのときは UTF-8 のバイトオーダーマーク - は取り除かれる。 - {max}を指定すると、読み込む行数の最大値となる。ファイルの最初 - の10行をチェックするときに役に立つ: > - :for line in readfile(fname, '', 10) - : if line =~ 'Date' | echo line | endif - :endfor -< {max}が負の場合は、ファイルの最後から-{max}行を読み込んで返す。 - ファイルが{max}行以下の場合は全行を返す。 - {max}が0の場合は空リストを返す。 - Note {max}を指定しない場合はファイル全体をメモリに読み込む。エ - ンコーディング判定も行わないことに注意。必要ならバッファに読み - 込むこと。 - ファイルを開けないときはエラーメッセージを表示し、空リストを返 - す。 - |writefile()|も参照。 - -reltime([{start} [, {end}]]) *reltime()* - 時刻値を表す値を返す。値の形式はシステムに依存する。この値を - |reltimestr()|に渡すと文字列に変換できる。 - 引数を指定しないと現在時刻を返す。 - 1個の引数を指定すると、その引数で指定された時刻からの経過時間 - を返す。 - 2個の引数を指定すると、{start}と{end}の間の経過時間を返す。 - {start}と{end}はreltime()で返される値でなければならない。 - {|+reltime| 機能付きでコンパイルされたときのみ利用可能} - -reltimestr({time}) *reltimestr()* - 時刻値{time}を表現する文字列を返す。秒、ドット、マイクロ秒とい - う形式になる。例: > - let start = reltime() - call MyFunction() - echo reltimestr(reltime(start)) -< Note このコマンドにかかるオーバーヘッドがこの時間に加算される。 - 精度はシステムに依存する。 - 文字列をきれいに揃えるために、先頭にスペースが挿入される。この - スペースを取り除くにはsplit()を使えばよい。 > - echo split(reltimestr(reltime(start)))[0] -< |profiling|も参照。 - {|+reltime| 機能付きでコンパイルされたときのみ利用可能} - - *remote_expr()* *E449* -remote_expr({server}, {string} [, {idvar}]) - {string}を{server}に送信する。{string}は式と見なされ、評価した - 結果が返ってくる。 - 戻り値は文字列かリスト|List|でなければならない。リストの場合は - 要素を連結して文字列に変換される。要素間の区切りは改行文字とな - る(join(expr, "\n")と同様)。 - {idvar}には変数名を指定する。後でremote_read()で使われる - {serverid}がその変数に保存される。 - |clientserver|と|RemoteReply|も参照。 - |sandbox|の中ではこの関数は利用できない。 - {|+clientserver|機能付きでコンパイルされたときのみ利用可能} - Note: なんらかのエラーが発生した場合は、ローカルでエラーメッセー - ジが表示され、戻り値は空文字列となる。 - 例: > - :echo remote_expr("gvim", "2+2") - :echo remote_expr("gvim1", "b:current_syntax") -< - -remote_foreground({server}) *remote_foreground()* - サーバ名{server}のVimをフォアグラウンドに移動させる。 - 次を実行するのと同様である: > - remote_expr({server}, "foreground()") -< - ただし、次の点が異なる: Win32では、OSが必ずしもサーバが自分自 - 身をフォアグラウンドにすることを許可しないので、対応策としてク - ライアントが仕事を行う。 - Note: foreground()と違い、最小化されていたウィンドウを復元しな - い。 - |sandbox|の中ではこの関数は利用できない。 - {Win32, Athena, Motif, GTKのGUI版とWin32コンソール版でのみ利用 - 可能} - - -remote_peek({serverid} [, {retvar}]) *remote_peek()* - {serverid}から文字列を取得可能ならば正の数値を返す。変数 - {retvar}に返信文字列をコピーする。{retvar}は変数の名前を示す文 - 字列でなければならない。 - 取得できないならば0を返す。 - なんらかの異状のときは-1を返す。 - |clientserver|も参照。 - |sandbox|の中ではこの関数は利用できない。 - {|+clientserver|機能付きでコンパイルされたときのみ利用可能} - 例: > - :let repl = "" - :echo "PEEK: ".remote_peek(id, "repl").": ".repl - -remote_read({serverid}) *remote_read()* - {serverid}からの返信の中で最も古いものを取り出して返す。取り出 - した返信はキューから取り除かれる。キューに返信が入っていないと - きは、返信を取り出せるようになるまで待機する。 - |clientserver|も参照。 - |sandbox|の中ではこの関数は利用できない。 - {|+clientserver|機能付きでコンパイルされたときのみ利用可能} - 例: > - :echo remote_read(id) -< - *remote_send()* *E241* -remote_send({server}, {string} [, {idvar}]) - {string}を{server}に送信する。{string}はキー入力として解釈され、 - この関数の呼び出しは即座に戻ってくる。Vimサーバにおいて、受け - 取ったキー入力はマッピング展開されない。|:map| - {idvar}には変数名を指定する。後でremote_read()で使われる - {serverid}がその変数に保存される。 - |clientserver|と|RemoteReply|も参照。 - |sandbox|の中ではこの関数は利用できない。 - {|+clientserver|機能付きでコンパイルされたときのみ利用可能} - Note: なんらかのエラーが発生すると、サーバ側で報告され、表示が - 乱れてしまうかもしれない。 - 例: > - :echo remote_send("gvim", ":DropAndReply ".file, "serverid"). - \ remote_read(serverid) - - :autocmd NONE RemoteReply * - \ echo remote_read(expand("<amatch>")) - :echo remote_send("gvim", ":sleep 10 | echo ". - \ 'server2client(expand("<client>"), "HELLO")<CR>') -< -remove({list}, {idx} [, {end}]) *remove()* - {end}を指定しなかった場合: リスト{list}から{idx}位置の要素を削 - 除し、その要素を返す。 - {end}を指定した場合: {idx}から{end}まで(両端を含む)の要素を削 - 除し、それらの要素からなるリストを返す。{idx}と{end}が同じ要素 - を指す場合、1個の要素からなるリストが返る。{end}が{idx}より前 - になる場合、エラーとなる。 - {idx}と{end}として指定できる値については|list-index|を参照。 - 例: > - :echo "last item: " . remove(mylist, -1) - :call remove(mylist, 0, 9) -remove({dict}, {key}) - {dict}からキー{key}を持つ要素を削除する。例: > - :echo "removed " . remove(dict, "one") -< {dict}に{key}がない場合はエラーになる。 - - ファイルを削除するには|delete()|を使う。 - -rename({from}, {to}) *rename()* - ファイルの名前を{from}から{to}へ変える。ファイルシステムを越え - てファイルを移動するのにも使用できる。結果は数値で、成功すれば - 0、失敗すれば非ゼロになる。 - NOTE: ファイル {to} がすでに存在する場合、警告なしに上書きされ - る。 - |sandbox|の中ではこの関数は利用できない。 - -repeat({expr}, {count}) *repeat()* - {expr}を{count}回繰り返し、連結して返す。例: > - :let separator = repeat('-', 80) -< {count}が0または負のときは空文字列を返す。{expr}がリスト - |List|のときは{count}回連結した結果を返す。例: > - :let longlist = repeat(['a', 'b'], 3) -< 結果は['a', 'b', 'a', 'b', 'a', 'b']となる。 - - -resolve({filename}) *resolve()* *E655* - MS-Windowsでは{filename}がショートカット(.lnkファイル)ならばそ - の指す先を単純化した形式で返す。 - Unixではパス{filename}の中の全てのシンボリックリンクを解決し、 - 単純化して返す。循環リンクがある場合に備えて、シンボリックリン - クの解決は100回までに制限されている。 - その他のシステムでは{filename}を単純化して返す。 - 単純化の手順は|simplify()|と同じである。 - resolve()は(結果も相対パスであるならば)カレントディレクトリを - 表す先頭のパスコンポーネントと、末尾のパス区切り文字をそのまま - にする。 - - *reverse()* -reverse({list}) {list}の要素の順序をその場で(in-place)反転させる。{list}そのも - のを返す。 - リストを変更させないでおくには、最初にコピーを作る: > - :let revlist = reverse(copy(mylist)) - -round({expr}) *round()* - {expr} を最も近い整数に丸め、|Float| を返す。{expr} が二つの整 - 数の真ん中にある場合、大きい方(0 から遠い方)になる。 - (訳注: つまり四捨五入になる) - {expr} は |Float| または |Number| に評価されなければならない。 - 例: > - echo round(0.456) -< 0.0 > - echo round(4.5) -< 5.0 > - echo round(-4.5) -< -5.0 - {|+float| 機能つきでコンパイルされたときのみ有効} - - -search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* - 正規表現パターン{pattern}を検索する。検索はカーソル位置から開 - 始する(検索位置を指定するには|cursor()|を使えばよい)。 - - {flags} は以下のフラグ文字からなる文字列 - 'b' 後方(上方)に検索する - 'c' カーソル位置のマッチを受け入れる - 'e' マッチの末尾へ移動する - 'n' カーソルを移動させない - 'p' 部分パターン(後述)のマッチの番号を返す - 's' 以前のカーソル位置をマーク'に記録する - 'w' ファイルの末尾で循環する - 'W' ファイルの末尾で循環しない - 'w'と'W'の両方とも指定されない場合は'wrapscan'が適用される。 - - フラグ's'が指定された場合、カーソルが移動したときのみマーク'が - 設定される。フラグ's'は'n'と組み合わせることはできない。 - - 'ignorecase', 'smartcase', 'magic'が適用される。 - - 引数{stopline}が指定されたときはこの行を検索した後で検索を停止 - する。これは検索する行を制限するために有用である。例: > - let match = search('(', 'b', line("w0")) - let end = search('END', '', line("w$")) -< {stopline}に0でない値が指定されたときは、暗黙にファイルの末尾 - で循環しなくなる。 - 0 の値は、引数を省略したときと同じになる。 - - {timeout} が指定された場合、そのミリ秒が経過したところで検索が - 停止する。つまり、{timeout} が 500 なら検索は 500 ミリ秒で停止 - する。 - この値は負であってはならない。0 の値は、引数を省略したときと同 - じになる。 - {|+reltime| 機能つきでコンパイルされたときのみ有効} - - マッチがない場合は0を返し、カーソルは移動しない。エラーメッ - セージは表示されない。 - マッチが見つかった場合はその行番号を返す。 - *search()-sub-match* - フラグ 'p' を指定すると、戻り値は \(\) によるグループ化のうち - 最初にマッチしたものの番号プラス 1 となる。パターン全体はマッ - チしたがどのグループもマッチしなかったときは 1 を返す。 - 桁番号を取得するには|searchpos()|を使う。 - - フラグ'n'が指定されていない場合、マッチ位置にカーソルが移動す - る。 - - 例 (引数リストの全ファイルにわたって検索して置換する): > - :let n = 1 - :while n <= argc() " arglist中の全ファイルに対してループ - : exe "argument " . n - : " ファイルの最後の文字から開始し、循環してファイルの - : " 最初から検索する - : normal G$ - : let flags = "w" - : while search("foo", flags) > 0 - : s/foo/bar/g - : let flags = "W" - : endwhile - : update " 修正されていればファイルを保存する - : let n = n + 1 - :endwhile -< - フラグの使い方の例: > - :echo search('\<if\|\(else\)\|\(endif\)', 'ncpe') -< このコマンドは、カーソル下の文字以降からキーワード"if", - "else","endif"のいずれかを検索する。フラグ'p'により、どのキー - ワードが見つかったかに応じて1,2,3を返す。見つからなかったとき - は0を返す。次の行の最初の単語にカーソルをおいて上のコマンドを - 実行すると: - if (foo == 0) | let foo = foo + 1 | endif ~ - 1が返る。フラグ'c'を外すと"endif"にマッチし3を返すようになる。 - カーソルを"if"の"f"の上におき、フラグ'e'を外して実行しても同じ - く3が返る。フラグ'n'によりカーソルは移動しない。 - - -searchdecl({name} [, {global} [, {thisblock}]]) *searchdecl()* - {name}の宣言を検索する。 - - {global}が0でないときは|gD|と同じようにファイル中の最初のマッ - チを探す。そうでないときは|gd|と同じ動作になり、現在の関数内か - ら最初のマッチを探す。 - - {thisblock}が0でないときはカーソル位置より前の位置で閉じている - {}ブロックを無視し、そのスコープ内でだけ有効な変数宣言にマッチ - しないようになる。 - - マッチを見つけるとその位置へカーソルを移動する。 - 成功すると0を返し、失敗すると非0を返す。 - 例: > - if searchdecl('myvar') == 0 - echo getline('.') - endif -< - *searchpair()* -searchpair({start}, {middle}, {end} [, {flags} [, {skip} - [, {stopline} [, {timeout}]]]]) - ネストしたstart・endのペアを検索する。これを使うと、"if"に対応 - する"endif"を見つけることができる。それらの間にある他のif・ - endifのペアは無視される。 - 検索はカーソル位置から開始する。デフォルトでは下方に検索する。 - {flags}に'b'が含まれていると上方に検索する。 - マッチが見つかると、その位置へカーソルを移動し、行番号を返す。 - マッチが見つからなかったときは0または-1を返し、カーソルは移動 - しない。エラーメッセージは表示されない。 - - {start}、{middle}、{end}は正規表現である。|pattern|を参照。こ - の正規表現に \( \) のペアを含めてはならない。\%( \) は含めても - よい。{middle}はネストしたstart・endペアの中にないときのみマッ - チする。典型的な使用例: > - searchpair('\<if\>', '\<else\>', '\<endif\>') -< ここで{middle}を空にすると"else"をスキップするようになる。 - - {flags}には|search()|と同様に'b', 'c', 'n', 's', 'w', 'W' が使 - える。それに加えて以下のフラグが利用できる。 - 'r' それ以上マッチが見つからなくなるまで繰り返す。つまり最 - も外側のペアを探す。'W' も自動的にオンになる。 - 'm' マッチ位置の行番号でなくマッチの個数を返す。'r'を使っ - ているときは > 1 となる。 - Note: ほとんどつねに 'W' を使ってファイルの末尾で循環しないよ - うにするのがよい考えである。 - - {start}、{middle}、{end}のマッチが見つかると、マッチの開始位置 - にカーソルを移動し、式{skip}を評価する。このマッチがコメントや - 文字列の内側にある場合など、無視したいものであれば式{skip}が - 非0を返すようにする。 - {skip}を省略した、または空のときはどのマッチも無視しない。 - {skip}を評価している最中にエラーが発生すると、検索は異常終了し - -1を返す。 - - {stopline} と {timeout} については|search()|を参照。 - - 'ignorecase'の値が適用される。'magic'の値は無視され、オンのと - きと同じ様に動作する。 - - 検索はカーソル位置から開始する。検索方向の次の文字における - {start}、{middle}、{end}のマッチが最初に見つかる。例: > - if 1 - if 2 - endif 2 - endif 1 -< カーソルが"if 2"の"i"の上にある状態から下方に検索を開始すると - "endif 2"にマッチする。"if 2"の直前の文字の上から検索を開始す - ると"endif 1"にマッチする。これは、"if 2"が最初に見つかり、 - "if 2"から"endif 2"までがネストしたペアと見なされるためである。 - 上方検索で、{end}が2文字以上であるときはパターンの最後に"\zs" - をつけるとよいかもしれない。するとカーソルがendのマッチの内 - 側にあるとき、対応するstartを見つけるようになる。 - - 例: Vimスクリプトの"endif"コマンドを見つけるには: > - - :echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W', - \ 'getline(".") =~ "^\\s*\""') - -< これを使うには、マッチを見つけたい"if"の上、またはそれ以降に - カーソルを置くこと。Note バックスラッシュを二重にしなくてもよ - いようにシングルクォート文字列を使っている。式skipにより、コメ - ントだけの行を無視するようにしている。コマンドの後のコメントは - 無視していない。また、行の途中の"en"や"if"という単語にマッチし - てしまう。 - もう1つの例: "}"に対応する"{"を検索する: > - - :echo searchpair('{', '', '}', 'bW') - -< これを使うには、マッチを見つけたい"}"の上、または前にカーソル - を置くこと。構文ハイライトにより文字列と見なされるマッチを無視 - するには次のようにする: > - - :echo searchpair('{', '', '}', 'bW', - \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"') -< - *searchpairpos()* -searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} - [, {stopline} [, {timeout}]]]]) - |searchpair()|と同様だが、マッチの行番号と桁番号からなるリスト - |List|を返す。このリストの最初の要素は行番号で、次の要素はマッ - チの桁位置のバイトインデックスである。マッチが見つからなかった - 場合は[0, 0]を返す。 > - - :let [lnum,col] = searchpairpos('{', '', '}', 'n') -< - より大規模で役に立つ例に関しては|match-parens|を参照。 - -searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *searchpos()* - |search()|と同様だが、マッチの行番号と桁番号からなるリスト - |List|を返す。このリストの最初の要素は行番号で、次の要素はマッ - チの桁位置のバイトインデックスである。マッチが見つからなかった - 場合は[0, 0]を返す。 - 例: > - :let [lnum, col] = searchpos('mypattern', 'n') - -< フラグ'p'を指定すると、戻り値にサブパターンのマッチ番号を示す - 要素が加わる|search()-sub-match|。例: > - :let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np') -< この例において、"submatch"は小文字|/\l|が見つかったとき2とな - り、大文字|/\u|が見つかったとき3となる。 - -server2client( {clientid}, {string}) *server2client()* - {clientid}に返信文字列を送る。最後に文字列を送った{clientid}は - expand("<client>")で取得できる。 - {|+clientserver|機能付きでコンパイルしたときのみ利用可能} - Note: - このIDは次のコマンドを受け取る前に取得しなければならない。つま - り、受け取ったコマンドから戻る前で、入力を待つコマンドを呼ぶ前。 - |clientserver|も参照。 - 例: > - :echo server2client(expand("<client>"), "HELLO") -< -serverlist() *serverlist()* - 利用可能なサーバ名のリストを返す。1行に1つの形式。 - サーバが1つもないとき、または情報を取得できないときは空文字列 - を返す。|clientserver|も参照。 - {|+clientserver|機能付きでコンパイルしたときのみ利用可能} - 例: > - :echo serverlist() -< -setbufvar({expr}, {varname}, {val}) *setbufvar()* - バッファ{expr}のオプションまたはローカル変数{varname}に{val}を - 代入する。 - グローバル・ウィンドウローカルオプションに対しても動作するが、 - グローバル・ウィンドウローカル変数に対しては動作しない。 - ウィンドウローカルオプションの場合、グローバルな値は変更されな - い。 - {expr}の解釈の仕方については|bufname()|を参照。 - Note 変数名には"b:"をつけてはならない。 - 例: > - :call setbufvar(1, "&mod", 1) - :call setbufvar("todo", "myvar", "foobar") -< サンドボックスの中ではこの関数は使用できない。 - -setcmdpos({pos}) *setcmdpos()* - コマンドラインの{pos}バイトの位置へカーソルを移動する。 - {pos}は1から始まる。 - 現在の位置を取得するには|getcmdpos()|を使う。 - コマンドラインを編集している最中のみ機能する。よって、 - |c_CTRL-\_e|、|c_CTRL-R_=|、|c_CTRL-R_CTRL-R|+'='と組み合 - わせて使うときだけ意味がある。|c_CTRL-\_e|と|c_CTRL-R_CTRL-R| - +'='の場合、コマンドラインにその式をセットした後でカーソルを - 移動する。|c_CTRL-R_=|の場合、式を評価した後、結果のテキストを - 挿入する前にカーソルを移動する。 - {pos}が大きすぎるときは行末にカーソルを移動する。{pos}が1より - 小さいときの結果は未定義である。 - 成功なら0、コマンドラインを編集しているとき以外には1を返す。 - -setline({lnum}, {text}) *setline()* - カレントバッファの{lnum}行目を{text}にする。 - {lnum}は|getline()|のときと同じように解釈される。 - {lnum}が最後の行の次の行の場合、新規行として{text}を追加する。 - 成功したら0を返す。失敗したら(大抵{lnum}が無効な値のとき)1を返 - す。例: > - :call setline(5, strftime("%c")) -< {line}がリスト|List|の場合、{lnum}行目とそれ以降の行にリストの - 要素をセットする。例: > - :call setline(5, ['aaa', 'bbb', 'ccc']) -< 上の例は次と同値である: > - :for [n, l] in [[5, 6, 7], ['aaa', 'bbb', 'ccc']] - : call setline(n, l) - :endfor -< Note: マーク '[ と '] はセットされない。 - -setloclist({nr}, {list} [, {action}]) *setloclist()* - ウィンドウ{nr}のロケーションリストを作成・置き換え・追加する。 - {nr}が0のときはカレントウィンドウを対象にする。ロケーションリ - ストウィンドウの場合、そこに表示しているロケーションリストが修 - 正される。ウィンドウ番号{nr}が無効な場合、-1を返す。 - それ以外は|setqflist()|と同じ。 - |location-list| も参照。 - -setmatches({list}) *setmatches()* - |getmatches()| で取得したマッチのリストを復元する。成功なら - 0、失敗なら -1 を返す。リストを復元するに先立って、現在のマッ - チはすべて消去される。|getmatches()| の例を参照。 - - *setpos()* -setpos({expr}, {list}) - {expr}の位置を設定する。{expr}として有効な値は次の通り: - . カーソル位置 - 'x マーク x - - {list}は次の4個のの要素を持つリスト|List|でなければならない: - [bufnum, lnum, col, off] - - "bufnum"はバッファ番号。0にするとカレントバッファを表す。カー - ソル位置の設定はカレントバッファに対してのみ可能。他のバッファ - のマークを設定するには、関数|bufnr()|を使ってファイル名をバッ - ファ番号に変換する。 - ジャンプリストは変更されない。 - - "lnum"と"col"はバッファ内の位置。桁番号は1から始まる。"lnum"を - 0にするとそのマークを削除する。"col" が 1 より小さいときは 1 - が使われる。 - - 数値"off"は'virtualedit'がオンのときのみ使われ、その文字の開始 - 位置からの画面上の桁のオフセットとなる。例えば、<Tab>の中、ま - たは最後の文字より後に設定したいときに使う。 - - 位置をセットできたときは 0 を、そうでなければ -1 を返す。 - {expr} が無効なときはエラーメッセージが出る。 - - |getpos()|も参照。 - - 縦方向に移動するときの望ましい桁を復元しない。それには - |winrestview()|を参照。 - - -setqflist({list} [, {action}]) *setqflist()* - {list}の要素によりQuickFixリストを作成・置き換え・追加する。 - {list}の各要素は辞書であること。 - 辞書でない{list}の要素は無視される。各辞書は以下の要素を - 持つ: - - bufnr バッファ番号。有効なバッファ番号でなければなら - ない。 - filename ファイル名。"bufnr"がないとき、または無効であ - るときのみ使われる。 - lnum ファイル中の行番号 - pattern エラーの位置を特定するための検索パターン - col 桁番号 - vcol 0でない場合: "col"は表示上の桁 - 0の場合: "col"はバイトインデックス - nr エラー番号 - text エラーの説明 - type エラータイプを示す1文字。'E', 'W'など。 - - 辞書の要素"col"、"vcol"、"nr"、"type"、"text"は省略可能である。 - "lnum"か"pattern"のどちらか一方のみがエラー行を特定するために - 使われる。"filename"と"bufnr"の両方ともない場合、または"lnum" - と"pattern"の両方ともない場合、その要素はエラー行として扱われ - ない。"pattern"と"lnum"の両方があるときは"pattern"が使われる。 - {list} に空のリストを指定すると QuickFix リストはクリアされ - る。 - このリストは|getqflist()|が返すものと正確に同じではないことに - 注意。 - - {action}が'a'ならば{list}の要素を既存のQuickFixリストに追加す - る。QuickFixリストがまだ存在しない場合は新規に作成される。 - {action}が'r'ならば{list}の要素で現在のQuickFixリストを置き換 - える。{action}が指定されないとき、または' 'のときは新しい - QuickFixリストを作成する。 - - 成功なら0、失敗なら-1を返す。 - - この関数は'errorformat'の設定とは無関係にQuickFixリストを作る - ために使える。その最初のエラーへジャンプするには":cc 1"などの - コマンドを使う。 - - - *setreg()* -setreg({regname}, {value} [,{options}]) - レジスタ{regname}に{value}をセットする。 - {options}が"a"を含んでいるとき、または{regname}が大文字のとき - は、その値に追加する。 - {options}は以下のレジスタの種類指定を含んでもよい: - "c" または "v" |characterwise| モード - "l" または "V" |linewise| モード - "b" または "<CTRL-V>" |blockwise-visual| モード - "b"または"<CTRL-V>"の直後に数値を続けると、それが選択範囲の幅 - となる。これを指定しない場合、選択範囲の幅は一番長い行の文字数 - となる(<Tab>は1文字と数えられる)。 - - {options}にレジスタの設定が何も含まれていないとき、{value}が - <NL>で終わっていない限り、デフォルトの文字指向モードが使われる。 - レジスタ'='の値を設定することはできない。 - 成功なら0、失敗なら非0を返す。 - - 例: > - :call setreg(v:register, @*) - :call setreg('*', @%, 'ac') - :call setreg('a', "1\n2\n3", 'b5') - -< 次の例は、この関数を使ってレジスタを退避・復元する例である。 > - :let var_a = getreg('a', 1) - :let var_amode = getregtype('a') - .... - :call setreg('a', var_a, var_amode) - -< 空文字列を追加すると、レジスタの種類を変更することができる: > - :call setreg('a', '', 'al') - -settabvar({tabnr}, {varname}, {val}) *settabvar()* - タブページ {tabnr} のタブローカル変数 {varname} を {val} に設 - 定する。 |t:var| - Note: 指定する変数名は "t:" を除いた名前。 - タブの番号は 1 から始まる。 - Vim が一時的にタブページ {tabnr} に移動するため、TabLeave と - TabEnter の自動コマンドが実行される。 - この関数はサンドボックス (|sandbox|) の中では使えない。 - -settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()* - ウィンドウ{winnr}のオプションやローカル変数{varname}の値を - {val}にセットする。 - タブ番号は1から始まる。カレントタブページを対象とする場合は - |setwinvar()|を使う。 - {winnr}が0のときはカレントウィンドウが対象となる。 - グローバルオプションやバッファローカルオプションを設定すること - もできるが、グローバル変数やバッファローカル変数を設定すること - はできない。 - バッファローカルオプションを設定した場合、グローバル値は変更さ - れない。 - Note 変数名には"w:"をつけてはならない。 - 内部的に、一時的にタブページ{tabnr}に移動する。そのためオート - コマンドTabLeaveとTabEnterが発生する。 - 例: > - :call settabwinvar(1, 1, "&list", 0) - :call settabwinvar(3, 2, "myvar", "foobar") -< この関数は|sandbox|の中では使用できない。 - -setwinvar({nr}, {varname}, {val}) *setwinvar()* - |settabwinvar()|と同様。カレントタブページを対象とする。 - 例: > - :call setwinvar(1, "&list", 0) - :call setwinvar(2, "myvar", "foobar") - -shellescape({string} [, {special}]) *shellescape()* - シェルコマンドの引数として利用できるように{string}をエスケープ - する。 - MS-WindowsとMS-DOSでは、'shellslash'が設定されていない場合、 - {string}をダブルクォートで囲み、{string}の中のダブルクォートを - 全て二重にする。 - 他のシステムでは、{string}をシングルクォートで囲み、"'"を - "'\''"で置き換える。 - {special} が指定され、0 でない数値または空でない文字列の場合 - (|non-zero-arg|)、"!", "%", "#", "<cword>" などの特殊なアイテ - ムの前にはバックスラッシュがつく。コマンド |:!| に - よってそのバックスラッシュは再び除かれる。 - 'shell' の値の末尾が "csh" である場合、{special} が - |non-zero-arg| ならば"!" の文字もエスケープされる。これは、csh - と tcsh は シングルクォートの中であっても "!" を履歴置換と解釈 - するためである。 - <NL> 文字もエスケープされる。{special} が |non-zero-arg| であ - り 'shell' の末尾が "csh" である場合、これは2回エスケープされ - る。 - |:!| コマンドを使う場合の例: > - :exe '!dir ' . shellescape(expand('<cfile>'), 1) -< これはカーソル下のファイルを dir コマンドで表示する。 - |system()| を使う場合の例: > - :call system("chmod +w -- " . shellescape(expand("%"))) - - -simplify({filename}) *simplify()* - ファイル名を、意味を変えずにできるだけ簡略化する。MS-Windowsで - のショートカットやUnixでのシンボリックリンクは解決される。 - {filename}の最初のパスコンポーネントがカレントディレクトリを指 - す場合、結果にそのまま残される。末尾のパス区切り文字も取り除か - れない。 - 例: > - simplify("./dir/.././/file/") == "./file/" -< Note: "dir/.."の組み合わせは、"dir"が検索可能なディレクトリで - あるか、存在しないときのみ取り除かれる。Unixでは、"dir"が同じ - ディレクトリ内にあるシンボリックリンクであるときも取り除かれる。 - パス名を簡略化する前に全てのシンボリックリンクを解決させるには - |resolve()|を使う。 - - -sin({expr}) *sin()* - {expr} の正接(サイン)をラジアンで |Float| で返す。{expr} は - |Float| または |Number| に評価されなければならない。 - 例: > - :echo sin(100) -< -0.506366 > - :echo sin(-4.01) -< 0.763301 - {|+float| 機能つきでコンパイルされたときのみ有効} - - -sinh({expr}) *sinh()* - {expr} の双曲線正弦 (ハイパボリックサイン) を返す。 - 値は [-inf, inf] の範囲の浮動小数点数 (|Float|)。 - {expr} は浮動小数点数 (|Float|) か数値 (|Number|) でなければな - らない。 - 例: > - :echo sinh(0.5) -< 0.521095 > - :echo sinh(-0.9) -< -1.026517 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - -sort({list} [, {func} [, {dict}]]) *sort()* *E702* - {list}の要素をその場で(in-place)ソートする。{list}を返す。リス - トを変更したくない場合は、最初にコピーを作っておくこと: > - :let sortedlist = sort(copy(mylist)) -< ソートの際には、各要素の文字列表現を使う。 - 数値は文字列より後になり、リストは数値より後になる。 - カレントバッファのテキストをソートするには|:sort|を使うこと。 - {func}に1を指定すると、大文字・小文字を区別しなくなる。 - {dict} は "dict" 属性付きの関数と一緒に使う。値はローカル変数 - "self" として使われる。 |Dictionary-function| - {func}に|Funcref|または関数名を指定すると、その関数を使って要 - 素を比較する。その関数は2つの要素を引数として受け取り、それら - が等しいときは0、1番目の引数を2番目より後にするなら1以上、1番 - 目の方を前にするなら-1以下を返す。例: > - func MyCompare(i1, i2) - return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1 - endfunc - let sortedlist = sort(mylist, "MyCompare") -< この例の場合、より短く次のように書くことができる。ただしオーバー - フローは無視される: > - func MyCompare(i1, i2) - return a:i1 - a:i2 - endfunc -< - *soundfold()* -soundfold({word}) - {word}と同値でsound-foldされた単語を返す。カレントウィンドウの - 'spelllang'で設定された言語のうち、soundfoldingに対応する最初の - 言語が使用される。'spell'がオンでなければならない。 - soundfoldingができない場合、{word}がそのまま返される。 - この関数はスペリング候補を作るために使われる。Note この方法は - とても遅くなる可能性がある。 - - *spellbadword()* -spellbadword([{sentence}]) - 引数なしの場合: カーソル下またはカーソル以降のスペルミスした単 - 語を返す。その単語の先頭へカーソルを移動する。カレント行にスペ - ルミスした単語が見つからない場合は空文字列を返し、カーソルは移 - 動しない。 - - 引数ありの場合: {sentence}の中のスペルミスしている最初の単語を - 返す。スペルミスしている単語がない場合は空文字列を返す。 - - 戻り値は、次の2個の要素を持つリスト: - - スペルミスした単語または空文字列 - - スペルミスの種類: - "bad" スペルミス - "rare" 頻度の低い単語 - "local" 他の地域でのみ有効な単語 - "caps" 大文字で始めるべき単語 - 例: > - echo spellbadword("the quik brown fox") -< ['quik', 'bad'] ~ - - カレントウィンドウに対するスペリング情報が適用される。オプショ - ン'spell'がオンでなければならない。'spelllang'の値が使用される。 - - *spellsuggest()* -spellsuggest({word} [, {max} [, {capital}]]) - {word}の正しいスペルの候補のリストを返す。{max}を指定すると、 - 候補の数の最大値となる。{max}を指定しないと、25個までの候補を - 返す。 - - {capital}に0でない値を指定すると、先頭が大文字の候補だけを返す。 - これは'spellcapcheck'とのマッチの後に使う。 - - {word}はスペルの間違った単語で、後に他のテキストが続いてもよい。 - これにより、分割された2つの単語を連結することができる。候補も - また続きのテキストを含んでいるので、これによって行を置き換える - ことができる。 - - {word}は正しい単語でもよい。すると似た単語が返ってくるだろう。 - {word}自身は候補に含まれないが、大文字化されたものが含まれてい - ることはある。 - - カレントウィンドウのスペリング情報が使われる。オプション - 'spell'がオンでなければならず、'spelllang'と'spellsuggest'の値 - が適用される。 - - -split({expr} [, {pattern} [, {keepempty}]]) *split()* - {expr}を分割して|List|にする。{pattern}を省略した場合、または - {pattern}が空文字列の場合は、{expr}を空白文字で区切った各文字 - 列が要素となる。 - {pattern}を指定すると、{pattern}がマッチする位置で文字列を分割 - する。マッチした文字列は削除される。 - {keepempty}に非0を指定しない限り、最初または最後の要素が空文字 - 列ならばリストから取り除かれる。 - それ以外の空文字列は、{pattern}が1文字以上にマッチすれば、また - は{keepempty}が非0ならばそのままリストの要素となる。 - 例: > - :let words = split(getline('.'), '\W\+') -< 文字列を各文字に分割するには: > - :for c in split(mystring, '\zs') -< 区切り文字を削除せず、そのままにしておきたい場合は、'\zs'を - 使えばよい: > - :echo split('abc:def:ghi', ':\zs') -< ['abc:', 'def:', 'ghi'] ~ - 最初の要素が空であるかもしれないテーブルを分割するには: > - :let items = split(line, ':', 1) -< これの逆を行う関数は|join()|である。 - - -sqrt({expr}) *sqrt()* - 浮動小数点数 {expr} の非負平方根を |Float| で返す。 - {expr} は |Float| または |Number| に評価されなければならな - い。{expr} が負の場合、結果は NaN (Not a Number) になる。 - 例: > - :echo sqrt(100) -< 10.0 > - :echo sqrt(-4.01) -< nan - "nan" はシステムのライブラリに依存するので、異なるかもしれな - い。 - {|+float| 機能つきでコンパイルされたときのみ有効} - - -str2float( {expr}) *str2float()* - 文字列 {expr} を浮動小数点数に変換する。これは式の中で浮動小数 - 点数を使っているときと同じようにはたらく - (|floating-point-format| を参照)。しかしこちらの方がゆるやか - である。例えばこちらでは "1e40" も許されるが、式の中では - "1.0e+40" と書かなければならない。 - 数値の後ろにある文字列は黙って無視される。 - 小数点数はロケールの設定にかかわらずつねに '.' である。コンマ - を発見すると、そこで数値は終りになる。つまり "12,345.67" は - 12.0 に変換される。3桁ごとのカンマ区切りを取り除くには - |substitute()| が使える: > - let f = str2float(substitute(text, ',', '', 'g')) -< {|+float| 機能つきでコンパイルされたときのみ有効} - -str2nr( {expr} [, {base}]) *str2nr()* - 文字列{expr}を数値に変換する。 - {base}は変換の底。8、10、16のいずれか。 - {base}を省略すると10となる。そのため、文字列の先頭に0があると - き、デフォルトの文字列・数値変換とは異なり、8進数とは解釈され - ない。 - {base}が16のとき、文字列の先頭の"0x"と"0X"は無視される。それ以 - 外の底の場合は0となる。 - 数値の後のテキストは暗黙に無視される。 - -strchars({expr}) *strchars()* - 文字列 {expr} 内の文字の数を返す。合成文字は別々にカウントされ - る。 - |strlen()|, |strdisplaywidth()|, |strwidth()| も参照。 - -strdisplaywidth({expr}[, {col}]) *strdisplaywidth()* - 文字列 {expr} のスクリーン上での表示セル幅を返す。 - {col} が省略されたときはゼロが使われる。{col} には計算を開始す - るスクリーン上の列の位置を指定する。これはタブ文字の幅の計算に - 影響する。 - 計算にはカレントウィンドウのオプションが使用される。'tabstop' - や 'display' のような表示を変更するようなオプションが影響す - る。 - {expr} に幅が曖昧 (Ambiguous) な東アジアの文字が含まれていると - きは、文字幅は 'ambiwidth' の設定に依存する。 - |strlen()|, |strwidth()|, |strchars()| も参照。 - - *strftime()* -strftime({format} [, {time}]) - 結果は文字列で、{format}に従って日付や時間がフォーマットされた - ものになる。{time}が与えられた場合にはそれを使うが、省略された - 場合には現在時刻を使用する。受け付け可能な文字列{format}は使用 - するシステムに依存するので、ポータブルとは言えない。フォーマッ - トについてはCの関数strftime()のマニュアルを参照。結果は最大80 - 文字に制限される。|localtime()|と|getftime()|も参照。 - ここで使われる言語はコマンド|:language|で変更できる。 - 例: > - :echo strftime("%c") Sun Apr 27 11:49:23 1997 - :echo strftime("%Y %b %d %X") 1997 Apr 27 11:53:25 - :echo strftime("%y%m%d %T") 970427 11:53:55 - :echo strftime("%H:%M") 11:55 - :echo strftime("%c", getftime("file.c")) - file.cの更新時刻を表示 -< この関数はどのシステムでも利用できるとは限らない。利用できるか - チェックするには次のようにする: > - :if exists("*strftime") - -stridx({haystack}, {needle} [, {start}]) *stridx()* - 結果は数値で、{heystack}の中で文字列{needle}が最初に現れる位置 - のバイトインデックスを表す。{start}を指定すると、インデックス - {start}の位置から検索を開始する。 - 2番目のマッチを探すには次のようにする: > - :let colon1 = stridx(line, ":") - :let colon2 = stridx(line, ":", colon1 + 1) -< 検索は大文字・小文字を区別する。 - 検索パターンについては|match()|を使う。 - {haystack}の中に{needle}がないときは-1を返す。 - |strridx()|も参照。 - 例: > - :echo stridx("An Example", "Example") 3 - :echo stridx("Starting point", "Start") 0 - :echo stridx("Starting point", "start") -1 -< *strstr()* *strchr()* - stridx()はCの関数strstr()と同じように動作する。{needle}が1文字 - のときはstrchr()と同じように動作する。 - - *string()* -string({expr}) {expr}を文字列に変換して返す。{expr}が数値、浮動小数点数、文字 - 列、それらの複合の場合は、この戻り値を|eval()|でパースして復元 - できる。 - {expr} 型 結果 ~ - 文字列 'string' - 数値 123 - 浮動小数点数 123.123456 or 1.123456e8 - Funcref function('name') - リスト [item, item] - 辞書 {key: value, key: value} - Note 文字列中のシングルクォート(')は二重化される。 - |strtrans()|も参照。 - - *strlen()* -strlen({expr}) 結果は数値で、文字列{expr}の長さ。 - マルチバイト文字の個数を数えるには次のようなことをする(合成文 - 字は数えない): > - - :let len = strlen(substitute(str, ".", "x", "g")) -< - 引数が数値の場合は、まず文字列に変換される。 - それ以外の型の場合はエラーとなる。 - |len()|, |strchars()|, |strdisplaywidth()|, |strwidth()| も参 - 照。 - - - *strpart()* -strpart({src}, {start}, {len}) - 結果は文字列で、{src}の{start}番目の文字から始まる、長さ{len} - の部分文字列。存在しない文字を含むように範囲を指定しても、エ - ラーにはならない。単に文字が省略されるだけである。 - {len}を省略すると、{start}から{src}の末尾までの部分文字列を返 - す。 > - strpart("abcdefg", 3, 2) == "de" - strpart("abcdefg", -2, 4) == "ab" - strpart("abcdefg", 5, 4) == "fg" - strpart("abcdefg", 3) == "defg" -< 注意: 文字列の最初の文字を指定するためには、{start}は0でなけれ - ばならない。カーソルのある位置から3文字を取得する例: > - strpart(getline("."), col(".") - 1, 3) -< -strridx({haystack}, {needle} [, {start}]) *strridx()* - 結果は数値で、{haystack}の中で文字列{needle}が最後に現れる位置 - のバイトインデックスとなる。 - {start}を指定すると、そのインデックス以降でのマッチは無視され - る。前のマッチより前にあるものを見つけるには次のようにする: > - :let lastcomma = strridx(line, ",") - :let comma2 = strridx(line, ",", lastcomma - 1) -< 検索は大文字・小文字を区別する。 - 検索パターンについては|match()|を使う。 - {haystack}の中に{needle}がないときは-1を返す。 - {needle}が空文字列のときは{haystack}の長さを返す。 - |stridx()|も参照。例: > - :echo strridx("an angry armadillo", "an") 3 -< *strrchr()* - {needle}が1文字の場合はCの関数strrchr()と同じように動作する。 - - *strtrans()* -strtrans({expr}) - 結果は文字列で、{expr}内の表示不可能な文字を|'isprint'|で指定 - される、表示可能な文字に変換したもの。ウィンドウに表示すること - ができるようになる。例: > - echo strtrans(@a) -< これはレジスタの中の改行を、改行として表示する代わりに"^@"と表 - 示する。 - -strwidth({expr}) *strwidth()* - 文字列 {expr} のスクリーン上での表示セル幅を返す。タブ文字の幅 - は 1 として数えられる (タブ文字の幅も考慮したい場合は - |strdisplaywidth()| を使ってください)。 - {expr} に幅が曖昧 (Ambiguous) な東アジアの文字が含まれていると - きは、文字幅は 'ambiwidth' の設定に依存する。 - |strlen()|, |strdisplaywidth()|, |strchars()| も参照。 - -submatch({nr}) *submatch()* - |:substitute| や substitute() 関数の中の式でのみ使われる。 - マッチしたテキストの{nr} 番目の部分マッチを返す。{nr}が0のとき - はマッチしたテキスト全体を返す。 - |sub-replace-expression| も参照。 - 例: > - :s/\d\+/\=submatch(0) + 1/ -< この例は、行の中で最初の数値を検索し、それに1を加える。改行は - 改行文字として含まれる。 - - *substitute()* -substitute({expr}, {pat}, {sub}, {flags}) - 結果は文字列で、{expr}内で最初に{pat}にマッチした部分を{sub}に - 置換えたコピーになる。 - {flags} が "g" なら、{expr} 無いの {pat} にマッチした部分をす - べて置換する。そうしたくない場合は {flags} は "" にすべきであ - る。 - - これはコマンド":substitute"(一切のフラグ - 無し)のように働く。しかしマッチングは常にオプション'magic'が設 - 定され、オプション'cpoptions'は空にして実行される(スクリプトを - ポータブルにするため)。しかし'ignorecase'は適用される。 - 'smartcase'は適用されない。 - {pat}がどう扱われるかについては|string-match|を参照。 - - また、{sub}内の"~"は前回の{sub}に置換されない。 - {sub}内の幾つかのコードには|sub-replace-special|の特殊な意味 - があることに注意。例えば、何かの文字列をリテラルの"\n"に置換え - るためには、"\\\\n"か'\\n'を使う必要がある。 - - {pat}が{expr}の何処にもマッチしなければ、{expr}が何の変更も受 - けずに返される。 - - 例: > - :let &path = substitute(&path, ",\\=[^,]*$", "", "") -< これはオプション'path'の最後のコンポーネントを削除する。 > - :echo substitute("testing", ".*", "\\U\\0", "") -< 結果は"TESTING"となる。 - - {sub} が "\=" で開始している場合は、その後ろの文字列は式として - 解釈される。|sub-replace-expression| 参照。例: > - :echo substitute(s, '%\(\x\x\)', - \ '\=nr2char("0x" . submatch(1))', 'g') - -synID({lnum}, {col}, {trans}) *synID()* - 結果は数値で、現在のウィンドウ内での位置{lnum}と{col}の位置の - 構文ID。 - 構文IDは|synIDattr()|と|synIDtrans()|に渡すことで、テキストに - ついての構文情報を取得するのに使用できる。 - - 最左のカラムを指定するには{col}に1を、最初の行を指定するには - {line}に1を指定する。'synmaxcol'が適用され、長すぎる行では0が - 返ってくる。 - - {trans}が非ゼロならば、透過属性のアイテムは省略され、実際に表 - 示されているアイテムが評価対象になる。これは実際に有効になって - いるカラーを知りたい時に役に立つ。{trans}がゼロならば、透過属 - 性のアイテムが返される。これはどのシ構文イテムが有効になってい - るかを知りたい時に役に立つ(例:カッコの中とか)。 - 警告: この関数は非常に遅い。ファイルを順方向に走査する時にだけ - ベストなスピードが得られる。 - - 例(カーソルの下の構文アイテムの名前を表示する): > - :echo synIDattr(synID(line("."), col("."), 1), "name") -< - - *synIDattr()* -synIDattr({synID}, {what} [, {mode}]) - 結果は文字列で、{synID}の属性{what}の内容を示す。これは構文 - アイテムの情報を取得するのに使用できる。 - {mode}には取得したいモードの属性に応じて、"gui"か"cterm"か - "term"が指定できる。{mode}が省略されるか、無効な値が指定された - 場合、現在有効になっているハイライトモードが使用される(GUI、 - cterm、termのどれか) - ハイライトグループにリンクされた属性を取得するにはsynIDtrans() - を使用する。 - {what} 結果 - "name" 構文アイテムの名前 - "fg" 前景色(GUI:カラー名、cterm:文字列としてのカ - ラー番号、term空文字列) - "bg" 背景色("fg"同様) - "font" フォント名 (GUI でのみ利用可) - |highlight-font| - "sp" 特殊な色 ("fg"同様) |highlight-guisp| - "fg#" "fg"同様だが、"#RRGGBB"のフォーマットで - "bg#" "bg"同様だが、"#RRGGBB"のフォーマットで - "sp#" "sp"同様だが、"#RRGGBB"のフォーマットで - "bold" 太字なら"1" - "italic" 斜体なら"1" - "reverse" 反転なら"1" - "inverse" 反転(原文inverse)なら"1"(reverseと等価) - "standout" 強調 (standout) なら "1" - "underline" 下線付きなら"1" - "undercurl" 波線付きなら"1" - - 例(カーソルの下の構文アイテムの名前を表示する): > - :echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg") -< - *synIDtrans()* -synIDtrans({synID}) - 結果は数値で、{synID}を構文IDに変換したもの。キャラク - タをハイライト表示している構文グループのIDである。 - ":highlight link"によって与えられるハイライトのリンクはこれに - 従っている。 - -synconcealed({lnum}, {col}) *synconcealed()* - リストを返す。リストの 1 番目のアイテムは、{lnum} と {col} が - 指す位置の文字が Conceal 可能リージョン の中にあるなら 1、そう - でないなら 0。リストの 2 番目のアイテムは文字列で、最初のアイ - テムが 1 なら、代わりに表示される Conceal テキスト が入る (実 - 行時の 'conceallevel' の設定に依存)。リストの 3 番目のアイテム - は、どのシンタックスリージョンにマッチしたかを示すユニーク番 - 号。これは同じ置換文字を持つ二つのリージョンが連続していた場合 - にその区切りを識別できるようにするため。 - 使用例は $VIMRUNTIME/syntax/2html.vim を参照。 - - -synstack({lnum}, {col}) *synstack()* - カレントウィンドウの {lnum}, {col} の位置の構文アイテムのス - タックを |List| にして返す。このリストの要素は |synID()|が - 返すのと同じ種類の ID である。 - リストの最初の要素が一番外側の領域で、続く要素がその中に内包さ - れている。アイテム全体がハイライトされている、または最後の要素 - が transparent なアイテムである場合を除き、最後の要素が - |synID()| が返すものである。 - この関数は構文ファイルをデバッグするのに役に立つ。 - 例(カーソル下の構文スタックを表示する): > - for id in synstack(line("."), col(".")) - echo synIDattr(id, "name") - endfor -< {lnum} と {col} が不正な場所を指しているときは返り値なし。行の - 最後の文字の一つ後ろと空行の一番目の列は有効な位置である。 - -system({expr} [, {input}]) *system()* *E677* - シェルコマンド{expr}の実行結果を得る。 - {input}が与えられた場合は、この文字列はファイルに書き出され、 - コマンドの標準入力として渡される。この文字列はそのまま(as-is) - 書き出され、正しい改行文字を使うよう自分自身で気を付けなければ - ならない。パイプは使われない。 - 注意: |shellescape()| を使ってコマンドの引数をエスケープするこ - と。{expr}内に改行が含まれるとコマンドが失敗する可能性がある。 - 'shellquote'と'shellxquote'に入っている文字は問題を引き起こす - かもしれない。 - 対話的なコマンドを使用することはできない。 - 戻り値は文字列。例: > - :let files = system("ls " . shellescape(expand('%:h'))) - -< システムに依存しないような戻り値にするために、シェルの出力を - フィルタリングし、マッキントッシュにおいては<CR>を<NL>に変換 - し、DOS系のシステムにおいては<CR><NL>を<NL>に変換している。 - 実行されるコマンドはいくつかのオプションを適用して構成される: - 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote' - ({tmp}は自動的に生成されるファイル名) - UnixとOS/2ではコマンドの連結ができるように{expr}の両側に波括弧 - が置かれる。 - - コマンドは「coocked」モードで実行される。そのためCTRL-Cでコマ - ンドを中断できる(少なくともUnixでは)。 - - エラーコードは|v:shell_error|に格納される。 - この関数は|restricted-mode|では失敗する。 - - Note 上記のオプションに不正な値が入っていると、この関数の呼び - 出しが失敗する可能性がある。セキュリティエージェントアプリケー - ションを使っていると失敗することがあるとも報告されている。 - ":!cmd"とは違い、ファイルが変更されているかのチェックは行わな - い。 - 明示的にチェックさせるには|:checktime|を使う。 - -tabpagebuflist([{arg}]) *tabpagebuflist()* - カレントタブページ内の各ウィンドウに表示されているバッファの番 - 号を要素とするリスト|List|を返す。{arg}は対象とするタブページ - の番号を指定する。省略したときはカレントタブページを対象とする。 - {arg}が無効なときは数値0を返す。 - 全タブページ中の全バッファのリストを得るには次のようにする: > - tablist = [] - for i in range(tabpagenr('$')) - call extend(tablist, tabpagebuflist(i + 1)) - endfor -< 1つのバッファが複数のウィンドウに表示されている場合があること - に注意。 - - -tabpagenr([{arg}]) *tabpagenr()* - 結果は数値で、カレントタブページの番号。最初のタブページの番号 - は1となる。 - 省略可能な引数{arg}に指定できる値は"$"のみであり、最後のタブペー - ジの番号(つまりタブページの個数)を返す。 - この番号はコマンド|:tab|で指定できるものと同じである。 - - -tabpagewinnr({tabarg}, [{arg}]) *tabpagewinnr()* - |winnr()|と同様だが、タブページ{tabarg}を対象とする。 - {tabarg}は対象とするタブページの番号を指定する。 - {arg}は|winnr()|の場合と同じように扱われる。すなわち: - - 省略するとカレントウィンドウの番号を返す。これは、このタブペー - ジに入るとき使われるウィンドウである。 - - "$"とするとウィンドウ番号を返す。 - - "#"とすると前のウィンドウ番号を返す。 - 役に立つ例: > - tabpagewinnr(1) " タブぺージ1のカレントウィンドウ - tabpagewinnr(4, '$') " タブページ4内のウィンドウの個数 -< {tabarg}が無効なときは0を返す。 - - *tagfiles()* -tagfiles() カレントバッファにおいて、タグを検索するときに使うファイルの名 - 前からなるリスト|List|を返す。オプション'tags'を展開したもので - ある。 - - -taglist({expr}) *taglist()* - 正規表現{expr}にマッチするタグのリストを返す。そのリストの各要 - 素は辞書であり、少なくとも次の要素を持つ: - name タグの名前。 - filename タグの定義があるファイルの名前。カレン - トディレクトリからの相対パス、またはフ - ルパスである。 - cmd そのファイルの中でタグの位置を特定する - ために使うexコマンド。 - kind タグの種類。種類は言語に依存する。この - 要素は、Exuberant ctagsかhdrtagによって - 生成されたタグファイルを使っているとき - のみ使用できる。 - static ファイル固有のタグ。より詳しくは - |static-tag|を参照。 - タグファイルの内容によってはこれ以上の要素が存在することもある。 - 例: アクセス、実装、継承、シグネチャ。これらのフィールドについ - ての情報はctagsのドキュメントを参照。Cのソースにおいては、 - フィールド"struct"、"class"、"enum"が現れることがある。これら - は、タグを含んでいるものの名前を示す。 - - exコマンド'cmd'は検索パターンか、行番号か、行番号とバイト番号 - のいずれかである。 - - マッチするタグがない場合は空リストを返す。 - - 完全一致するタグを取得するには、{expr}にアンカー'^'と'$'をつけ - ること。タグ検索の正規表現についてより詳しいことは - |tag-regexp|を参照。 - - Vimが使用するタグファイルについては|'tags'|を参照。様々な - ctagsによって生成されるタグファイルのフォーマットについては - |tags-file-format|を参照。 - - *tempname()* *temp-file-name* -tempname() - 結果は文字列で、存在しないファイルのファイル名を示す。これはテ - ンポラリファイルの名前として使用可能である。少なくとも連続26回 - の呼出しまでは違う名前を生成することが保証される。例: > - :let tmpfile = tempname() - :exe "redir > " . tmpfile -< Unix では、ファイルはプライベートなディレクトリに置かれる。 - |tempfile| - MS-Windowsでは、'shellslash'がオンのときか'shellcmdflag'が'-' - で始まるときはスラッシュが使われる。 - - -tan({expr}) *tan()* - {expr} の正接 (タンジェント) をラジアンで返す。 - 値は [-inf, inf] の範囲の浮動小数点数 (|Float|)。 - {expr} は浮動小数点数 (|Float|) か数値 (|Number|) でなければな - らない。 - 例: > - :echo tan(10) -< 0.648361 > - :echo tan(-4.01) -< -1.181502 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - -tanh({expr}) *tanh()* - {expr} の双曲線正接 (ハイパボリックタンジェント) を返す。 - 値は [-1, 1] の範囲の浮動小数点数 (|Float|)。 - {expr} は浮動小数点数 (|Float|) か数値 (|Number|) でなければな - らない。 - 例: > - :echo tanh(0.5) -< 0.462117 > - :echo tanh(-1) -< -0.761594 - {|+float| 機能を有効にしてコンパイルしたときのみ有効} - - -tolower({expr}) *tolower()* - 引数の文字列の大文字を小文字に変換してできた文字列を返す(文字 - 列に|gu|を適用するのとちょうど同じ)。 - -toupper({expr}) *toupper()* - 引数の文字列の小文字を大文字に変換してできた文字列を返す(文字 - 列に|gU|を適用するのとちょうど同じ)。 - -tr({src}, {fromstr}, {tostr}) *tr()* - 文字列{src}の中で、{fromstr}に含まれる全ての文字を{tostr}の対 - 応する文字で置き換えた文字列を返す。つまり、{fromstr}の最初の - 文字が{tostr}の最初の文字に置き換えられる。2文字目以降も同様。 - Unixのコマンド"tr"とちょうど同じである。 - マルチバイト文字も正しく扱える。 - - 例: > - echo tr("hello there", "ht", "HT") -< 戻り値は "Hello THere" となる。 > - echo tr("<blob>", "<>", "{}") -< 戻り値は "{blob}" となる。 - -trunc({expr}) *trunc()* - {expr} をゼロ方向に切りつめた整数を |Float| で返す。 - {expr} は |Float| または |Number| に評価されなければならない。 - 例: > - Examples: > - echo trunc(1.456) -< 1.0 > - echo trunc(-5.456) -< -5.0 > - echo trunc(4.0) -< 4.0 - {|+float| 機能つきでコンパイルされたときのみ有効} - - *type()* -type({expr}) {expr}の型を示す数値を返す: - 数値: 0 - 文字列: 1 - Funcref: 2 - リスト: 3 - 辞書: 4 - 浮動小数点数: 5 - マジックナンバーを使わずに、次のような使い方をすべきである: > - :if type(myvar) == type(0) - :if type(myvar) == type("") - :if type(myvar) == type(function("tr")) - :if type(myvar) == type([]) - :if type(myvar) == type({}) - :if type(myvar) == type(0.0) - -undofile({name}) *undofile()* - {name} という名前のファイルの保存時に使用されるアンドゥファイ - ルの名前を返す。'undodir' オプションが使用され、存在するディレ - クトリが検索される。アンドゥファイルが存在するかどうかはチェッ - クされない。 - {name} は常に絶対パスに展開される (内部では絶対パスを使ってい - るため)。 - |:wundo| や |:rundo| と組み合わせて使うと便利だろう。 - +persistent_undo オプションを無効にしてコンパイルされた場合は - この関数は常に空文字列を返す。 - -undotree() *undotree()* - アンドゥツリーの現在の状態を辞書で返す。辞書の内容は次のとお - り: - "seq_last" 使用されたアンドゥシーケンス番号の最大値。 - "seq_cur" アンドゥツリーの現在のシーケンス番号。いくつか - の変更がアンドゥされた状態だと "seq_last" と違 - う値になる。 - "time_cur" 最後に |:earlier| 系のコマンドが使われた時間。 - 読みやすい形式に変換するには |strftime()| を使 - う。 - "save_last" 最後にファイルが保存された番号。保存がまだなら - ゼロになる。 - "save_cur" アンドゥツリー内の現在位置の番号。 - "synced" 最後のアンドゥブロックが同期されていれば非ゼ - ロ。これはユーザーからの入力を待機しているとき - に起こる。|undo-blocks| 参照。 - "entries" アンドゥブロックの情報を表す辞書のリスト。 - - "entries" リストの 1 番目にはもっとも古いアンドゥアイテムが - 入っている。リストの各アイテムは次のような情報を持った辞書であ - る: - "seq" アンドゥシーケンス番号。|:undolist| で表示され - るものと同じ。 - "time" 変更が起こった時間。読みやすい形式に変換するに - は |strftime()| を使う。 - "newhead" この項目は最後に追加されたアイテムにのみある。 - これは最後の変更を示し、次の変更を追加する場所 - を示す。 - "curhead" この項目は最後にアンドゥされたアイテムにのみあ - る。これはアンドゥツリーの現在位置を示し、次に - リドゥコマンドによって使われるブロックを示す。 - 最後に変更を加えてからアンドゥを一度も実行して - いないときはこの項目はどこにも現れない。 - "save" この項目はファイルが保存される前の最後のブロッ - クにのみある。番号は保存回数を示す。最初の保存 - は 1 で、最後のものは "save_last" と同じ。 - "alt" 切り替えエントリ。同じアンドゥブロックのリスト - が入れ子にされている。それぞれのアイテムはさら - に "alt" アイテムを持っていることがある。 - -values({dict}) *values()* - {dict}の全ての値からなるリスト|List|を返す。このリストの順序は - 不定である。 - -virtcol({expr}) *virtcol()* - 結果は数値で、{expr}で与えられるファイルの位置の、スクリーン上 - での桁の位置を示す。返る値は、指定された位置にある文字の末尾が、 - スクリーン座標(の桁)でどこに存在するかである。<Tab>(タブ文字) - が指定した位置にあった場合には、戻り値はそのタブの最後のカラム - (桁)位置になる。具体的に、'ts'が8に設定された状態で第1桁に - <Tab>があった場合、戻り値は8になる。 - バイト位置については |col()| を使う。 - {expr}の解釈の仕方については|col()|を参照。 - 'virtualedit'がオンのときは[lnum, col, off]というリストを指定 - することもできる。"off"は文字の開始位置からのスクリーン座標で - のオフセットである。例えば、<Tab>の中の位置や、行の最後の文字 - 以降の位置を示すために使う。"off" が省略された場合はゼロが使わ - れる。 - 現在のモードに対して仮想編集がオンのときは、行末を越えた位置が - 返ってくることもある。|'virtualedit'| - 可能な位置指定: - . カーソルの位置 - $ カーソル行の末尾(カーソル行に表示されている文字数 - +1となる) - 'x マークxの位置(マークが設定されていない場合、0が返 - る) - 現在のファイルに対して設定されているマークだけが使用可能なこと - に注意。 - 例: > - virtcol(".") "foo^Lbar"の"^L"の位置にカーソル、戻り値5 - virtcol("$") "foo^Lbar"に対し、戻り値9 - virtcol("'t") " there"の'h'に'tを設定、戻り値6 -< 最初の桁は1となる。エラーの場合は0が返る。 - より高度な例(全ての行の長さの最大値を返す): > - echo max(map(range(1, line('$')), "virtcol([v:val, '$'])")) - -visualmode([expr]) *visualmode()* - 結果は文字列で、カレントバッファ内で最後に使われたビジュアルモー - ドを教えてくれる。初期状態では単に空文字列を返すだけだが、一度 - でもビジュアルモードが使われた場合、その種類によって"v"か"V"か - "<CTRL-V>"(CTRL-Vの文字が1文字で)返される。これはそれぞれ文字 - 選択、行選択、ブロック選択を意味している。 - 例: > - exe "normal " . visualmode() -< これは最後に使われたのと同じビジュアルモードに入る。また、スク - リプトの動作を、最後に使われたビジュアルモードに応じて変更した - い場合にも便利だろう。 - ビジュアルモードにいるときは |mode()| を使ってビジュアルモード - の種類を取得できる。(|:vmap| などの中などで) - - *non-zero-arg* - {expr}に0以外の数値か空文字列以外の文字列を指定した場合は、ビ - ジュアルモードがクリアされ、以前の値を返す。Note " "と"0"は空 - 文字列ではないことに注意。よってモードがクリアされる。リス - ト、辞書、浮動小数点数は数値でも文字列でもないのでモードはクリ - アされない。 - - *winbufnr()* -winbufnr({nr}) 結果は数値で、{nr}番目のウィンドウに関連付けられているバッファ - の番号。{nr}が0の場合、現在のウィンドウに関連付けられている - バッファの番号が返る。{nr}で存在しないウィンドウを指定した場合 - には-1が返る。 - 例: > - :echo "The file in the current window is " . bufname(winbufnr(0)) -< - *wincol()* -wincol() 結果は数値で、ウィンドウの中でカーソルがある位置の仮想桁番号を - 表す。これはウィンドウの左側から数えたスクリーン上の桁である。 - 一番左の桁は1となる。 - -winheight({nr}) *winheight()* - 結果は数値で、{nr}で示されるウィンドウの高さ(行数)を示す。{nr} - が0ならば、現在のウィンドウの高さが返る。{nr}というウィンドウ - が存在しない場合、-1が返る。存在しているウィンドウは、絶対に0 - かそれ以上の高さを持っている。 - 例: > - :echo "The current window has " . winheight(0) . " lines." -< - - *winline()* -winline() 結果は数値で、ウィンドウの最上行から数えた行番号を返す。ウィン - ドウでの最上行が1となる。 - カーソルが移動するとファイルの表示が更新され、それによってスク - ロールが引き起こされることがある。 - - *winnr()* -winnr([{arg}]) 結果は現在のウィンドウを示す数値。最上位のウィンドウは1であ - る。 - 省略可能な引数{arg}に"$"を設定すると、最後のウィンドウの番号が - 返る(つまりウィンドウの個数)。 - {arg}に"#"を設定すると、最後にアクセスしたウィンドウの番号を返 - す(|CTRL-W_p|で移動するウィンドウと同じ)。 - 以前のウィンドウがない場合、またはそれが他のタブページにある場 - 合は0を返す。 - この番号は|CTRL-W_w|と":wincmd w"で使える。|:wincmd| - |tabpagewinnr()|も参照。 - - *winrestcmd()* -winrestcmd() 現在のウィンドウサイズを復元するための一連の|:resize|コマンド - を返す。これが返すコマンドは、ウィンドウを開閉せず、カレントウィ - ンドウとカレントタブページが変更されていないときのみ正しく動作 - する。 - 例: > - :let cmd = winrestcmd() - :call MessWithWindowSizes() - :exe cmd -< - *winrestview()* -winrestview({dict}) - |winsaveview()|が返す辞書|Dictionary|を使ってカレントウィンド - ウの表示状態を復元する。 - この値を手動で変更した場合、結果は予測できない。 - ウィンドウサイズが変更されていると、結果は必ずしも元通りになら - ない。 - - *winsaveview()* -winsaveview() カレントウィンドウの表示状態を復元するための情報を持つ辞書 - |Dictionary|を返す。この表示状態を復元するには|winrestview()| - を使う。 - マッピング内でジャンプして、元の表示状態を戻したいときに使われ - る。 - 折り畳み情報は保存しない。オプション'foldenable'によって一時的 - に折り畳みをオフにし、移動中に折り畳みが開かれないようにするこ - と。 - 戻り値は以下のキーを持つ: - lnum カーソルの行番号 - col カーソルの桁番号 - coladd カーソル位置の桁オフセット。 - 'virtualedit'がオンのとき使われる。 - curswant 垂直移動するときの桁 - topline ウィンドウの最上行 - topfill 削除行。diffモードでのみ - leftcol 表示されている最初の桁 - skipcol スキップされている桁 - Note オプションの値は保存されない。 - - -winwidth({nr}) *winwidth()* - 結果は数値で、ウィンドウ{nr}の幅。{nr}が0のときはカレントウィ - ンドウの幅を返す。ウィンドウ{nr}が存在しないときは-1を返す。 - ウィンドウは必ず0以上の幅を持つ。 - 例: > - :echo "The current window has " . winwidth(0) . " columns." - :if winwidth(0) <= 50 - : exe "normal 50\<C-W>|" - :endif -< - *writefile()* -writefile({list}, {fname} [, {binary}]) - |List| {list}をファイル{fname}に書き込む。リストの各要素は改行 - 文字(NL)で区切られる。各要素は文字列か数値でなければならない。 - {binary}が"b"のときはバイナリモードとなり、最後の要素の後にNL - が追加されない。最後の要素が空であると、ファイルの最後の行が - NLで終わるようになる。 - NL文字はNUL文字に置換される。 - CR文字を加えるには、{list}をwritefile()に渡す前に行わねばなら - ない。 - 既存のファイルは上書きされる(上書き可能ならば)。 - 書き込みが失敗したときは-1を返す。そうでなければ0を返す。ファ - イルを作成できないときや、書き込みが失敗したときはエラーメッ - セージが表示される。 - |readfile()|も参照。 - バイト単位でファイルをコピーするには次のようにする: > - :let fl = readfile("foo", "b") - :call writefile(fl, "foocopy", "b") -< - *feature-list* -機能は大別して3つの系統に分けられる: -1. コンパイル時に|+feature-list|とした時にだけサポートされる機能。例: > - :if has("cindent") -2. ある状態の時にだけサポートされる機能。例: > - :if has("gui_running") -< *has-patch* -3. 適用済みパッチ。最初に|v:version|によってVimのバージョンを確認する。 - 機能"patch123"はパッチ123が適用されていることを示す。例(バージョン6.2.148 - 以降であることを確認する): > - :if v:version > 602 || v:version == 602 && has("patch148") -< Note 148が適用されていても、147が抜けていることもありうるので注意。 - -all_builtin_terms 総ての組込みターミナルを有効にしてコンパイル -amiga AMIGAバージョン -arabic アラビア語をサポート |Arabic| -arp ARPをサポート (Amiga) -autocmd オートコマンドをサポート |autocommand| -balloon_eval |balloon-eval| をサポート -balloon_multiline 複数行バルーンをサポート -beos BeOSバージョン -browse |:browse|をサポートし、browseが恐らく動作する -builtin_terms 幾つかの組込みターミナルが有効 -byte_offset 'statusline'において'o'がサポートされる -cindent 'cindent'をサポート -clientserver リモート呼び出しをサポート |clientserver| -clipboard 'clipboard'をサポート -cmdline_compl |cmdline-completion| コマンドライン補完をサポート -cmdline_hist |cmdline-history| コマンドライン履歴をサポート -cmdline_info 'showcmd'と'ruler'をサポート -comments |'comments'|をサポート -compatible Vi互換度を非常に高めてコンパイルされている -cryptv 暗号化をサポート |encryption| -cscope |cscope|をサポート -debug デバッグバージョンである -dialog_con コンソールダイアログのサポート -dialog_gui GUIダイアログのサポート -diff Compiled with |vimdiff| and 'diff' support. -digraphs digraphsをサポート -dnd レジスタ"~をサポート |quote_~|. -dos16 16ビットDOSバージョン -dos32 32ビットDOSバージョン (DJGPP) -ebcdic EBCDIC文字集合のマシン用 -emacs_tags Emacs式のタグファイルをサポート -eval 式評価をサポート。もちろん常に真。 -ex_extra 拡張exコマンドをサポート |+ex_extra|. -extra_search |'incsearch'|と|'hlsearch'|をサポート -farsi |farsi|をサポート -file_in_path |gf|と|<cfile>|をサポート -filterpipe 'shelltemp'がオフのとき、シェルの読み込み・書き込み・ - フィルタコマンドにパイプを使う。 -find_in_path includeファイル内の検索をサポート |+find_in_path| -float 浮動小数点数 |Float| サポート -fname_case ファイル名の大文字小文字が区別される(Amiga,MS-DOS, - そしてWindowsでは区別されないので偽) -folding |folding| 折り畳みをサポート -footer GUIのフッタをサポート |gui-footer| -fork system()の代わりにfork()/exec()を用いている -gettext 翻訳メッセージをサポート |multi-lang| -gui GUIが有効である -gui_athena AthenaのGUIが有効である -gui_gnome Gnomeサポート(gui_gtkも定義される) -gui_gtk GTK+のGUIが有効である -gui_gtk2 GTK+ 2のGUIが有効である (gui_gtkも定義される) -gui_mac マッキントッシュのGUIが有効である -gui_motif MotifのGUIが有効である -gui_photon PhotonのGUIが有効である -gui_running VimがGUIモードで起動している、もしくは間もなくする -gui_win32 Win32のGUIが有効である -gui_win32s Win32sのGUIが有効である (Windows 3.1) -hangul_input ハングル入力サポート -iconv iconv()をサポート -insert_expand インサートモード時にCTRL-Xの展開がサポートされる -jumplist |jumplist| をサポート -keymap 'keymap' をサポート -langmap 'langmap'サポート -libcall |libcall()| をサポート -linebreak 'linebreak', 'breakat'そして'showbreak'をサポート -lispindent lisp式のインデントをサポート -listcmds バッファリスト用のコマンド|:files|と引数リスト用のコマ - ンド|arglist|をサポート -localmap ローカルなマッピングと短縮入力をサポート|:map-local| -lua Lua インターフェースをサポート |Lua|. -mac マッキントッシュバージョン -macunix Unixファイル用のマッキントッシュバージョン(OS-X) -menu |:menu|をサポート -mksession |:mksession|をサポート -modify_fname ファイル名変換子をサポート |filename-modifiers| -mouse マウスをサポート -mouse_dec DECのターミナルマウスをサポート -mouse_gpm gpmをサポート (Linuxのコンソールマウス) -mouse_netterm nettermのマウスをサポート -mouse_pterm qnx ptermのマウスをサポート -mouse_sysmouse sysmouse (*BSD コンソールマウス)をサポート -mouse_xterm xtermのマウスをサポート -mouseshape 'mouseshape'をサポート -multi_byte 'encoding' をサポート -multi_byte_encoding 'encoding' がマルチバイトエンコーディングになる -multi_byte_ime IMEによる入力をサポート -multi_lang 複数言語をサポート -mzscheme MzSchemeインターフェイスをサポート |mzscheme|. -netbeans_enabled |netbeans|をサポートし、現在接続している -netbeans_intg |netbeans|をサポート -ole Win32にてOLEオートメーションをサポート -os2 OS/2バージョン -path_extra 'path'と'tags'の上方・下方検索をサポート -perl Perlインターフェイスをサポート -persistent_undo 永続アンドゥをサポート -postscript PostScriptファイルの印刷をサポート -printer |:hardcopy| をサポート -profile |:profile| をサポート -python Python 2.x インターフェースをサポート |has-python| -python3 Python 3.x インターフェースをサポート |has-python| -qnx QNXバージョン -quickfix |quickfix|をサポート -reltime |reltime()|をサポート -rightleft 'rightleft'をサポート -ruby Rubyインターフェイスをサポート -scrollbind 'scrollbind'をサポート -showcmd 'showcmd'をサポート -signs |:sign|をサポート -smartindent 'smartindent'をサポート -sniff SniFFインターフェイスをサポート -spell スペルチェックをサポート |spell| -startuptime |--startuptime| をサポート -statusline 'statusline', 'rulerformat'そして'titlestring'と - 'iconstring'の特殊フォーマットをサポート -sun_workshop Sun |workshop|をサポート -syntax 構文ハイライトをサポート -syntax_items 現在のバッファに有効なシンタックスが設定されている -system fork()/exec()の代わりにsystem()が使用されている -tag_binary タグファイル内のバイナリサーチ |tag-binary-search| -tag_old_static 旧式の静的tagsをサポート |tag-old-static| -tag_any_white タグファイル内の空白文字をサポート |tag-any-white|. -tcl TCLインターフェースをサポート -terminfo termcapの代わりにterminfoをサポート -termresponse |t_RV|と|v:termresponse|をサポート -textobjects |text-objects|をサポート -tgetent tgetentをサポート。termcapかterminfoファイルが使用可能 -title ウィンドウタイトルをサポート |'title'|. -toolbar |gui-toolbar|をサポート -unix UNIXバージョン -user_commands ユーザ定義コマンドをサポート -vertsplit ウィンドウの垂直分割をサポート |:vsplit| -vim_starting Vimの初期化プロセス中は真となる。|startup| -viminfo viminfoをサポート -virtualedit オプション'virtualedit'をサポート -visual ビジュアルモードをサポート -visualextra 拡張Visualモードをサポート |blockwise-operators| -vms VMSバージョン -vreplace コマンド|gR|と|gr|をサポート -wildignore オプション'wildignore'をサポート -wildmenu オプション'wildmenu'を指定してコンパイル -win16 Win16バージョン(MS-Windows 3.1) -win32 Win32バージョン(MS-Windows 95 以上の 32 or 64 ビット) -win32unix Win32バージョン。Unixファイルを使用 (Cygwin) -win64 Win64バージョン(MS-Windows 64 bit) -win95 Win32バージョン。MS-Windows 95/98/ME用。 -winaltkeys オプション'winaltkeys'を指定してコンパイル -windows 複数ウィンドウをサポート -writebackup オプション'writebackup'が起動時にonになる -xfontset X fontsetをサポート |xfontset| -xim XIMをサポート |xim| -xsmp Xセッションマネージメントをサポート -xsmp_interact 対話的Xセッションマネージメントをサポート -xterm_clipboard xtermのクリップボードサポート -xterm_save xtermのスクリーンの保存復帰をサポート -x11 X11をサポート - - *string-match* -文字列内でのパターンマッチング - -|pattern|で説明されている正規表現パターンは通常、バッファ内の行に対してマッチ -を検索するために使われる。文字列内でマッチを見つけるために使うときも、ほとんど -は同じように動作する。違いは、文字列が1つの行であるかのように扱われる事である。 -文字列が文字"\n"だけを含むとき、これは改行とはみなされない。この"\n"はパターン -内の"\n"や"."にマッチする。例: > - :let a = "aaaa\nxxxx" - :echo matchstr(a, "..\n..") - aa - xx - :echo matchstr(a, "a.x") - a - x - -"^"は文字列の最初の文字でだけマッチし、"$"は最後の文字でだけマッチすることに注 -意。"\n"の前後にはマッチしない。 - -============================================================================== -5. 関数定義 *user-functions* - -ユーザは自分で新しい関数を定義することができる。その関数は組込み関数とまったく -同じように呼び出せる。関数は一連のExコマンドを実行する。ノーマルモードコマンド -はコマンド|:normal|によって実行できる。 - -関数名は組込み関数との混同を避ける為、大文字で始まらなければならない。他のスク -リプトで同じ関数名を使用してしまうことを避ける為に、露骨に短い名前は避けるべき -である。関数名を例えば"HTMLcolor()"のように、スクリプトの名前から始めるという -のは良い習慣である。 - -波括弧変数というものもある(|curly-braces-names|を参照)。また、オートロード -|autoload|機構を使うと、関数が呼ばれたときだけ定義することができる。 - - *local-function* -スクリプトローカルな関数の名前は"s:"で始めなければならない。スクリプトローカル -な関数は、そのスクリプトの中の関数から、またはそのスクリプト内で定義されたユー -ザ定義コマンド、オートコマンドからしか呼ぶことができない。そのスクリプト内で定 -義されたマッピングにより呼ぶこともできるが、スクリプトの外部でマッピングが展開 -された場合は"s:"の代わりに|<SID>|をつけなければならない。 - - *:fu* *:function* *E128* *E129* *E123* -:fu[nction] 総ての関数と、その引数を表示する。 - -:fu[nction] {name} 関数{name}の定義を表示する。 - {name}は辞書|Dictionary|の要素の|Funcref|であってもよ - い: > - :function dict.init - -:fu[nction] /{pattern} {pattern}にマッチする名前の関数を表示する。"File"で終 - わる関数を全て表示する例: > - :function /File$ -< - *:function-verbose* -'verbose'が 0 でないとき、これらのコマンドで関数を表示すると、それがどこで定義 -されたかも表示する。例: > - - :verbose function SetFileTypeSH - function SetFileTypeSH(name) - Last set from /usr/share/vim/vim-7.0/filetype.vim -< -より詳しくは|:verbose-cmd|を参照。 - - *E124* *E125* -:fu[nction][!] {name}([arguments]) [range] [abort] [dict] - {name}という名前で新しい関数を定義する。関数名はアル - ファベットと数字と'_'からなり、通常の関数はアルファベッ - トの大文字、スクリプトローカル関数は"s:"で始まらなけれ - ばならない。 - - {name}は辞書|Dictionary|の要素の|Funcref|であってもよ - い: > - :function dict.init(arg) -< "dict"は既に定義されている辞書でなければならない。その - 要素"init"がまだ存在しないならば追加される。存在する場 - 合は、既存の関数を上書きするためには[!]をつけなければ - ならない。この値は番号つきの関数を指す|Funcref|である。 - この関数は|Funcref|を通してのみ呼ぶことができ、そこへの - 参照がなくなると削除される。 - *E127* *E122* - この名前で定義される関数が既に定義済みで[!]が使用され - なかった場合、エラーとなる。[!]が使用されていれば、そ - れまで存在していた関数は、速やかに新しいものへ置換えら - れる。 - - 引数{arguments}については|function-argument|を参照。 - - *a:firstline* *a:lastline* - 引数[range]を追加した場合、関数は「範囲」を管理するこ - とができる。「範囲」は"a:firstline"と"a:lastline"に - よって渡される。[range]がなかった場合、":{range}call" - が「範囲」を指定されて実行されると、1行1行について、カー - ソルをその行の先頭に置いた状態で関数を呼び出すことにな - る。|function-range-example|を参照。 - - 引数[abort]を追加すると、関数の実行中にエラーに遭遇し - 次第、即関数は中断される。 - - 引数[dict]を追加すると、この関数は辞書|Dictionary|の要 - 素を通してしか呼べなくなる。そしてその辞書にローカル変 - 数"self"が定義される。|Dictionary-function|を参照。 - - *function-search-undo* - 関数の実行によって、最後に使用されたサーチパターン、及 - びredoコマンドの"."の内容は変更されない。したがって、 - 関数内で|:nohlsearch| を行っても、関数から戻ると検索結 - 果のハイライトが元に戻ることになる。 - - *:endf* *:endfunction* *E126* *E193* -:endf[unction] 関数定義の終了。このコマンド1つで1行とすること。他のコ - マンドをいっしょに書いてはならない。 - - *:delf* *:delfunction* *E130* *E131* -:delf[unction] {name} 関数{name}を削除する。 - {name}は辞書|Dictionary|の要素の|Funcref|であってもよ - い: > - :delfunc dict.init -< この例は"dict"から要素"init"を削除する。この関数への参 - 照がなくなると、関数は削除される。 - *:retu* *:return* *E133* -:retu[rn] [expr] 関数から戻る。"[expr]"が与えられた場合、それは評価され - 関数の戻り値として呼出し側に渡される。"[expr]"が与えら - れない場合、数値0が呼出し側に渡される。 - 関数内に実行されない命令があるかどうかはチェックされな - いことに留意すること。つまり、たとえ":return"命令の後 - に何か命令があったとしても、警告も何も与えられない。 - - |:try|と|:finally|の間で":return"が実行された場合、 - ":finally"から対応する|:endtry|までのコマンドがまず実 - 行される。":try"がネストしている場合、それらの全てに対 - してこのプロセスが適用される。そして最も外側の - ":endtry"にて関数を抜ける。 - - *function-argument* *a:var* -引数は、与えられた名前によって定義される。関数のなかでは"a:name"("a:"を引数に -接頭)のようにして参照することができる。 - *a:0* *a:1* *a:000* *E740* *...* -引数はカンマで区切ることで、最大20まで与えることができる。最後の引数を"..."に -することで、可変長の引数を使用できる。関数の中では"a:1"や"a:2"のようにして可変 -長の引数にアクセスできる。"a:0"は可変長引数が幾つあるかを示している(0であるこ -と、つまり引数がそれ以上ないこともある)。"a:000"は全引数を持つリスト|List|を示 -している。Note "a:1"は"a:000[0]"と同じである。 - *E742* -a: のスコープとこの変数は固定されており、変更できない。 -しかしリスト|List|か辞書|Dictionary|の場合は、その要素を変更できる。よって関数 -にリスト|List|を渡し、そこに要素を追加させることができる。関数にリストや辞書を -変更させたくない場合は|:lockvar|を使うこと。 - -"..."が使われていない時は、引数の数は名前付きの引数の個数を示す。"..."を使った -時には引数の数は大きくなるだろう。 - -関数を引数無しで定義することも可能である。その時でも()は付けなければならない。 -関数の本体は、宣言の次の行から始まり、対応する|:endfunction|までになる。関数の -中で別の関数を定義することも可能である。 - - - *local-variables* -関数の中で変数を使うこともできる。これらは関数から戻ると消滅するローカル変数と -して振舞う。グローバル変数にアクセスするためには"g:"を付ける必要がある。 - -例: > - :function Table(title, ...) - : echohl Title - : echo a:title - : echohl None - : echo a:0 . " items:" - : for s in a:000 - : echon ' ' . s - : endfor - :endfunction - -この関数は次のように呼ぶことが出きる: > - let lines = Table("Table", "line1", "line2") - let lines = Table("Empty Table") - -一つ以上の値を返したい場合には、グローバル変数の名前を渡すようにする: > - :function Compute(n1, n2) - : if a:n2 == 0 - : return ["fail", 0] - : endif - : return ["ok", a:n1 / a:n2] - :endfunction - -この関数は次のように呼ぶことができる: > - :let [success, div] = Compute(102, 6) - :if success == "ok" - : echo div - :endif -< - - *:cal* *:call* *E107* *E117* -:[range]cal[l] {name}([arguments]) - 関数を呼び出す。関数の名前と引数は|:function|によって指定され - るものである。引数は最大20まで使用可能。戻り値は破棄される。 - 「範囲」を受け付ける関数に「範囲」を指定しなかった場合、関数は - カーソルの現在位置について一度だけ呼び出される。 - 「範囲」を受け付けない関数に「範囲」を指定した場合、その範囲の - 一行ずつについて関数が呼び出される。その時カーソルは当該行の先 - 頭に設定される。カーソルは「範囲」の最下行の左端になる(恐らく - 最後の関数呼出しの結果、動いた先である)。引数は各呼出しについ - て繰り返し評価される。それは次の例で確かめることができる: - *function-range-example* > - :function Mynumber(arg) - : echo line(".") . " " . a:arg - :endfunction - :1,5call Mynumber(getline(".")) -< - "a:firstline"と"a:lastline"はとにかく定義されるので、「範囲」 - の最初や最後で何か違った事をするのにも用いることができる。 - - 「範囲」自身を扱っている関数の例: > - - :function Cont() range - : execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ ' - :endfunction - :4,8call Cont() -< - この関数は「範囲」の最初の行を除いた総ての行の先頭に、継続のた - めの文字"\"を挿入する。 - - この関数の戻り値からさらに間接参照が行われる場合、その参照先に - は範囲が渡されない。例: > - :4,8call GetDict().method() -< GetDict()には範囲が渡されるが、method()には渡されない。 - - *E132* -関数の再帰的な使用はオプション|'maxfuncdepth'|によって制限することができる。 - -自動的に読み込まれる関数 ~ - *autoload-functions* -たくさんの関数または巨大な関数を使うときは、それらが使用されたときだけ自動的に -定義されるようにすることができる。これには2つの方法がある: オートコマンドによ -る方法と、'runtimepath'内の"autoload"ディレクトリによる方法である。 - - -オートコマンドを使う方法 ~ - -これはユーザマニュアルのセクション|41.14|で説明されている。 - -オートコマンドは、長いVimスクリプトファイルのプラグインに対して有用である。自動 -コマンドを定義し、すぐに|:finish|でそのスクリプトを抜ける。こうするとVimの起動 -が速くなる。その後オートコマンドにより|:finish|コマンドをスキップする変数を定義 -し、そのファイルが再び読み込まれる。 - -定義すべき関数名にマッチするパターンを指定してオートコマンドイベント -FuncUndefinedを使う。例: > - - :au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim - -ファイル"~/vim/bufnetfuncs.vim"は"BufNet"で始まる関数を定義しなければならない。 -|FuncUndefined|も参照。 - - -オートロードスクリプトの使い方 ~ - *autoload* *E746* -これはユーザマニュアルのセクション|41.15|で説明されている。 - -"autoload"ディレクトリのスクリプトを使う方法はより簡単である。しかし完全に正し -いファイル名を使う必要がある。オートロードされる関数は次のような名前を持つ: > - - :call filename#funcname() - -このような関数が呼ばれ、それがまだ定義されていなかった場合、Vimは'runtimepath' -内の"autoload"ディレクトリから"filename.vim"というスクリプトファイルを探す。 -例えば"~/.vim/autoload/filename.vim"のように。そしてこのファイルは次のような関 -数を定義していなければならない: > - - function filename#funcname() - echo "Done!" - endfunction - -このファイル名と関数の # の前の部分は完全に一致しなければならない。そして定義 -された関数は呼ばれた関数と完全に同じ名前でなければならない。 - -サブディレクトリを使うこともできる。関数名の中の # はパスのセパレータのように -解釈される。つまり、次の関数を呼ぶと: > - - :call foo#bar#func() - -Vimは'runtimepath'からファイル"autoload/foo/bar.vim"を探す。 - -これはまだ定義されていない変数を参照するときにも使える: > - - :let l = foo#bar#lvar - -しかしこのオートロードスクリプトがすでに読み込まれている場合、未知の変数があっ -てもこのスクリプトは再読み込みされない。 - -この変数に値を代入するときは、何も特別なことはない。この方法は、オートロードス -クリプトが読み込まれる前に設定を渡すために使うことができる: > - - :let foo#bar#toggle = 1 - :call foo#bar#func() - -オートロードスクリプト内で定義されるはずの関数を呼んだがスクリプト内で関数が定 -義されなかった場合、その関数を呼ぶたびにそのスクリプトがsourceされる。そして毎 -回エラーメッセージが表示される。 - -また、2つのスクリプト間で、互いに自分が定義される前に相手を呼ぶような関数があ -ると、これは動作しない。 -トップレベルでオートロード機能を使うのは避けること。 - -Hint: たくさんのファイルからなるスクリプトを配布する場合には、|vimball|ユーティ -リティを使うとそれらをまとめることができる。ユーザマニュアルの -|distribute-script|も参照。 - -============================================================================== -6. 波括弧変数 *curly-braces-names* - -変数を使える文脈ではいつでも「波括弧」変数を使うことができる。これは有効な変数 -名であり、次のように、1個以上の式を波括弧{}で囲む: > - my_{adjective}_variable - -Vimはこれを見つけると、まず波括弧の中の式を評価し、その値をもとの位置に置きか -え、全体を変数名として再解釈する。よって上の例では、変数"adjective"に"noisy"が -代入されていたとすると、この変数は"my_noisy_variable"となる。あるいは、 -"adjective"に"quiet"が代入されていたとすれば"my_quiet_variable"となる。 - -これの応用の1つは、オプション値によって支配される変数の集合を作ることである。 -例えば次の文 > - echo my_{&background}_message - -は現在の'background'の値に応じて"my_dark_message"か"my_light_message"の中身を -表示する。 - -波括弧を複数使うこともできる: > - echo my_{adverb}_{adjective}_message -ネストさせることもできる: > - echo my_{ad{end_of_word}}_message -ここで"end_of_word"は"verb"か"jective"のどちらかである。 - -しかし、波括弧の中の式を評価した結果が有効な変数名とならなければならない。 -つまり、次は無効である: > - :let foo='a + b' - :echo c{foo}d -というのは、展開の結果が"ca + bd"となるからで、これは有効な名前ではない。 - - *curly-braces-function-names* -同様の方法で評価した名前により関数を定義したり呼び出したりできる。 -例: > - :let func_end='whizz' - :call my_func_{func_end}(parameter) - -この例は関数"my_func_whizz(parameter)"を呼びだす。 - -============================================================================== -7. コマンド *expression-commands* - -:let {var-name} = {expr1} *:let* - 内部変数{var-name}に式{expr1}の結果をセットする。変数 - の型は{expr1}によって決定される。{var-name}という変数 - がまだ存在しない場合、新たに作成される。 - -:let {var-name}[{idx}] = {expr1} *E689* - リストの要素に式{expr1}の結果をセットする。{var-name} - はリストを参照し、{idx}はそのリストの有効なインデック - スでなければならない。ネストしたリストに対してはイン - デックスを繰り返すことができる。 - このコマンドはリストに要素を追加するためには使えない。 - 文字列の i バイト目をセットするためにも使えない。それ - には次のようにする: > - :let var = var[0:2] . 'X' . var[4:] -< - - *E711* *E719* -:let {var-name}[{idx1}:{idx2}] = {expr1} *E708* *E709* *E710* - リスト|List|の一部を式{expr}の値で置き換える。{expr}の - 値は正しい個数の要素を持つリストでなければならない。 - {idx1}を省略すると0となる。 - {idx2}を省略するとリストの末尾となる。 - 指定された範囲の一部がリストの末尾を越える場合、要素が - 追加される。 - - *:let+=* *:let-=* *:let.=* *E734* -:let {var} += {expr1} ":let {var} = {var} + {expr1}"と同様。 -:let {var} -= {expr1} ":let {var} = {var} - {expr1}"と同様。 -:let {var} .= {expr1} ":let {var} = {var} . {expr1}"と同様。 - {var}がセットされていないときや、{var}と{expr1}の型が - 演算子に合わないときは失敗する。 - - -:let ${env-name} = {expr1} *:let-environment* *:let-$* - 環境変数{env-name}に式{expr1}の結果をセットする。型は - 常に文字列。 -:let ${env-name} .= {expr1} - 環境変数{env-name}に{expr1}を付け加える。その環境変数 - が存在しないときは"="と同様にはたらく。 - -:let @{reg-name} = {expr1} *:let-register* *:let-@* - 式{expr1}の結果をレジスタ{reg-name}に書きこむ。 - {reg-name}は単一の文字でかつ、書きこむことのできるレジ - スタでなければならない(|registers|を参照)。"@@"は名前 - 無しレジスタとして使用でき、"@/"はサーチパターンとして - 使用できる。 - {expr1}の結果が<CR>か<NL>で終了していた場合、レジスタ - は行単位で設定され、そうでなければキャラクタ単位で設定 - される。 - 次のコマンドにより最後に検索したパターンをクリアするこ - とができる: > - :let @/ = "" -< これは空文字列を検索するのとは異なる。空文字列を検索す - ると、いたるところでマッチする。 - -:let @{reg-name} .= {expr1} - レジスタ{reg-name}に{expr1}を付け加える。このレジスタ - が空のときは、そこに{expr1}をセットする。 - -:let &{option-name} = {expr1} *:let-option* *:let-&* - オプション{option-name}に式{expr}の値をセットする。文 - 字列や数値の値はそのオプションの型に変換される。 - ウィンドウやバッファについてローカルなオプションに対し - ては、その効果は|:set|コマンドを使ったときと同様で、ロー - カルな値とグローバルな値の両方が変更される。 - 例: > - :let &path = &path . ',/usr/local/include' - -:let &{option-name} .= {expr1} - 文字列のオプションの場合: その値に{expr}を付け加える。 - |:set+=|とは違い、コンマを挿入しない。 - -:let &{option-name} += {expr1} -:let &{option-name} -= {expr1} - 数値または切替のオプションの場合: {expr1}を足す・引く。 - -:let &l:{option-name} = {expr1} -:let &l:{option-name} .= {expr1} -:let &l:{option-name} += {expr1} -:let &l:{option-name} -= {expr1} - 上と同様だが、オプションのローカルな値だけをセットする - (ローカルな値があるならば)。|:setlocal|と同様にはたら - く。 - -:let &g:{option-name} = {expr1} -:let &g:{option-name} .= {expr1} -:let &g:{option-name} += {expr1} -:let &g:{option-name} -= {expr1} - 上と同様だが、オプションのグローバルな値だけをセットす - る(グローバルな値があるならば)。|:setglobal|と同様には - たらく。 - -:let [{name1}, {name2}, ...] = {expr1} *:let-unpack* *E687* *E688* - {expr1}の値はリスト|List|でなければならない。そのリス - トの最初の要素が{name1}に代入され、2番目の要素が - {name2}に代入される。以下同様。 - nameの個数がリスト|List|の要素の個数に一致しなければな - らない。 - 前述のように各nameは":let"コマンドの要素の1つになるこ - とができる。 - 例: > - :let [s, item] = GetItem(s) -< 詳細: 最初に{expr1}が評価され、それから順番に代入が行 - われる。{name2}が{name1}に依存するかどうかは問題になる。 - 例: > - :let x = [0, 1] - :let i = 0 - :let [i, x[i]] = [1, 2] - :echo x -< 子の結果は[0, 2]となる。 - -:let [{name1}, {name2}, ...] .= {expr1} -:let [{name1}, {name2}, ...] += {expr1} -:let [{name1}, {name2}, ...] -= {expr1} - 上と同様だが、リスト|List|の各要素に対し連結・足し算・ - 引き算を行う。 - -:let [{name}, ..., ; {lastname}] = {expr1} - |:let-unpack|と同様だが、リスト|List|の要素数がnamesの - 数より多くてもよい。余った要素のリストが{lastname}に代 - 入される。要素の余りがないとき{lastname}は空リストにな - る。 - 例: > - :let [a, b; rest] = ["aval", "bval", 3, 4] -< -:let [{name}, ..., ; {lastname}] .= {expr1} -:let [{name}, ..., ; {lastname}] += {expr1} -:let [{name}, ..., ; {lastname}] -= {expr1} - 上と同様だが、リスト|List|の各要素に対して連結・足し算 - ・引き算を行う。 - - *E121* -:let {var-name} .. 変数{var-name}の値を一覧表示する。変数の名前を複数指定 - することができる。以下の特別な名前が認識される: *E738* - g: グローバル変数 - b: バッファローカル変数 - w: ウィンドウローカル変数 - t: タブページローカル変数 - s: スクリプトローカル変数 - l: 関数ローカル変数 - v: Vimの変数 - -:let 全変数の値を一覧表示する。値の前に変数の型が示される: - <nothing> 文字列 - # 数値 - * Funcref - - -:unl[et][!] {name} ... *:unlet* *:unl* *E108* *E795* - 内部変数{name}を削除する。複数の変数名を指定すると、そ - れらが全て削除される。名前はリスト|List|や辞書 - |Dictionary|の要素でもよい。 - [!]をつけると存在しない変数に対するエラーメッセージを - 表示しない。 - リスト|List|から1個以上の要素を削除することができる: > - :unlet list[3] " 4番目の要素を削除 - :unlet list[3:] " 4番目から最後までの要素を - 削除 -< 辞書からは一度に1個の要素を削除することができる: > - :unlet dict['two'] - :unlet dict.two - グローバル変数とスクリプトローカル変数をクリーンアップ - するために特に便利である(これらはスクリプト終了時に検 - 出されない)。関数ローカルな関数は、その関数から抜ける - ときに自動的に削除される。 - -:lockv[ar][!] [depth] {name} ... *:lockvar* *:lockv* - 内部変数{name}をロックする。ロックすると、それ以降変更 - ができなくなる(アンロックするまで)。 - ロックされた変数を削除することはできる: > - :lockvar v - :let v = 'asdf' " 失敗! - :unlet v -< *E741* - ロックされた変数を変更しようとするとエラーメッセージ - "E741: Value of {name} is locked"が表示される。 - - [depth]はリスト|List|や辞書|Dictionary|をロックすると - きに意味がある。どれだけ深くロックするかを指定する: - 1 リストや辞書それ自身をロックする。要素 - を追加したり削除はできないが、要素の値 - を変えることはできる。 - 2 要素の値もロックする。その要素がリスト - や辞書である場合、その中の要素の追加や - 削除はできないが、値の変更はできる。 - 3 2と同様だが、リスト・辞書内のリスト・ - 辞書に対してもあてはまる。1レベル深い。 - [depth]の既定値は2であり、{name}がリストまたは辞書であ - る場合、その値は変更できない。 - *E743* - 深さを無限にするには[!]を使い、[depth]を省略する。しか - しループを捕捉するために深さの最大値は100に設定されて - いる。 - - Note 2つの変数が同じリスト|List|を参照している場合、片 - 方の変数をロックすると、もう一方の変数を介してアクセス - した場合もロックされている。 - 例: > - :let l = [0, 1, 2, 3] - :let cl = l - :lockvar l - :let cl[1] = 99 " 代入できない! -< - これを回避するにはリストのコピーを作るとよい。 - |deepcopy()|を参照。 - - -:unlo[ckvar][!] [depth] {name} ... *:unlockvar* *:unlo* - 内部変数{name}をアンロックする。|:lockvar|の逆を行う。 - - -:if {expr1} *:if* *:endif* *:en* -:en[dif] {expr1}が非ゼロと評価された場合に、対応する":else"か - ":endif"までの命令を実行する。 - - バージョン4.5から5.0まで間のVimは、":if"と":endif"の間 - の総てのExコマンドは無視する。この2つのコマンドは将来 - の拡張性を、下位互換と同時に提供するためのものである。 - ネスティング(入れ子)が可能である。":else"や":elseif"は - 無視され、"else"部分は一切実行されないことに注意。 - - あなたはこれを、旧バージョンとの互換性を保ったまま使用 - することができる: > - :if version >= 500 - : version-5-specific-commands - :endif -< しかしそれでも"endif"を見つけるために後続のコマンドを - パースする必要がある。古いVimで新しいコマンドを使うと - 問題が起こることがある。例えば":silent"が":substitute" - コマンドと認識されるなど。その場合には、":execute"を使 - うと問題を避けることができる: > - :if version >= 600 - : execute "silent 1,$delete" - :endif -< - NOTE: ":append"と":insert"コマンドは":if"と":endif"の - 間では正しく動かない。 - - *:else* *:el* *E581* *E583* -:el[se] 対応する":if"ブロックが実行されなかった場合には、これ - に対応する":else"か":endif"までのコマンドが実行され - る。 - - *:elseif* *:elsei* *E582* *E584* -:elsei[f] {expr1} ":else" ":if"の省略形。":endif"を付け加える(入れ子にす - る)手間を省くことができる。 - -:wh[ile] {expr1} *:while* *:endwhile* *:wh* *:endw* - *E170* *E585* *E588* *E733* -:endw[hile] {expr1}が非ゼロとして評価される間、":while"と - ":endwhile"の間のコマンドを繰り返し実行する。 - ループの内側でエラーが生じた場合、endwhileの直後から実 - 行が再開される。 - 例: > - :let lnum = 1 - :while lnum <= line("$") - :call FixLine(lnum) - :let lnum = lnum + 1 - :endwhile -< - 注意: ":append"や":insert"コマンドは":while"ループの内側では正 - しく動かない。 - -:for {var} in {list} *:for* *E690* *E732* -:endfo[r] *:endfo* *:endfor* - {list}の各要素に対し、":for"と":endfor"の間のコマンド - を繰り返す。変数{var}に各要素の値がセットされる。 - ループの内側のコマンドでエラーが検出されたときは - "endfor"の後から実行が継続される。 - ループの内側で{list}を変更するとどの要素が使われるかに - 影響を与える。それを望まない場合はコピーを作ること: > - :for item in copy(mylist) -< コピーを作らないと、Vimは現在の要素に対してコマンドを - 実行する前に、リストの次の要素への参照を保存する。その - ため副作用なしに現在の要素を削除することができる。それ - 以降の要素を変更すると、それが見つからなくなる。つまり - 以下の例は動作する(リストを空にする非効率な方法): > - for item in mylist - call remove(mylist, 0) - endfor -< Note リストを並べ替える(例えばsort()やreverse()で)と予 - 期しない結果になることがある。 - Note {var}の型が変わってしまうのを避けるために、リスト - の各要素の型は同じでなければならない。ループの末尾でこ - の変数をunletすれば要素の型が同一でなくてもよくなる: > - for item in ["foo", ["bar"]] - echo item - unlet item " これがないと E706 になる - endfor - -:for [{var1}, {var2}, ...] in {listlist} -:endfo[r] - 上の":for"と同様だが、{listlist}の各要素がリストでなけ - ればならない点が異なる。そのリストの各要素が{var1}, - {var2}などに代入される。例: > - :for [lnum, col] in [[1, 3], [2, 5], [3, 8]] - :echo getline(lnum)[col] - :endfor -< - *:continue* *:con* *E586* -:con[tinue] ":while"または":for"ループの内側で使われたときは、その - ループの開始位置まで戻る。 - ループの内側の|:try|と|:finally|の間で使われた場合、 - |:finally|から|:endtry|までの間のコマンドがまず実行さ - れる。ループの内側で":try"がネストしている場合、全ての - ":try"に対してこのプロセスが適用される。最も外側の - ":endtry"の後ループの開始位置まで戻る。 - - *:break* *:brea* *E587* -:brea[k] ":while"または":for"ループの内側で使われたときは、対応 - する":endwhile"または":endfor"の後のコマンドまでスキッ - プする。 - ループの内側の|:try|と|:finally|の間で使われた場合、 - |:finally|から|:endtry|までの間のコマンドがまず実行さ - れる。ループの内側で":try"がネストしている場合、全ての - ":try"に対してこのプロセスが適用される。最も外側の - ":endtry"の後ループの後までジャンプする。 - -:try *:try* *:endt* *:endtry* *E600* *E601* *E602* -:endt[ry] ":try"と":endtry"の間のコマンド(":source"コマンド、関 - 数呼び出し、オートコマンド実行を含めた全てのコマンド実 - 行)のエラー制御を変更する。 - - エラーや割り込みが検出された場合、後に|:finally|コマン - ドがあるならば、":finally"の後から実行が継続される。そ - うでければ、または":endtry"に達した後は次の動的に囲ん - でいる":try"に対応する":finally"などが探される。その後 - スクリプトは実行を停止する。(関数定義に引数"abort"がつ - いているかどうかは関係ない) - 例: > - :try | edit too much | finally | echo "cleanup" | endtry - :echo "impossible" " 実行されない。上のコマンドにより - " スクリプトは停止する。 -< - さらに、(動的に)":try"と":endtry"の内側にあるエラーや - 割り込みは例外に変換される。そしてそれは|:throw|コマン - ドによって投げたときと同様に捕捉できる(|:catch|を参照)。 - この場合はスクリプトの実行は停止しない。 - - 割り込み例外には"Vim:Interrupt"という値が使われる。 - Vimコマンドにおけるエラーは"Vim({command}):{errmsg}"と - いう形式の値に変換される。その他のエラーは - "Vim:{errmsg}"という形式のエラーに変換される。ここで - {command}はコマンドの完全な名前であり、{errmsg}はその - 例外が捕捉されなかった場合に表示されるメッセージで、常 - にエラー番号で始まる。 - 例: > - :try | sleep 100 | catch /^Vim:Interrupt$/ | endtry - :try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry -< - *:cat* *:catch* *E603* *E604* *E605* -:cat[ch] /{pattern}/ {pattern}にマッチする例外が発生し、より前の|:catch| - で捕捉されなかった場合、このコマンドから次の|:catch|, - |:finally|, |:endtry|までのコマンドが実行される。その - ような例外が発生しなかった場合、そのコマンドはスキップ - される。 - {pattern}が省略された場合は全てのエラーが捕捉される。 - 例: > - :catch /^Vim:Interrupt$/ " 割り込み (CTRL-C) を捕捉 - :catch /^Vim\%((\a\+)\)\=:E/ " 全Vimエラーを捕捉 - :catch /^Vim\%((\a\+)\)\=:/ " 例外と割り込みを捕捉 - :catch /^Vim(write):/ " :writeにおける全エラーを捕捉 - :catch /^Vim\%((\a\+)\)\=:E123/ " エラーE123を捕捉 - :catch /my-exception/ " ユーザ定義例外を捕捉 - :catch /.*/ " 全てを捕捉 - :catch " /.*/と同じ -< - {pattern}を囲むのに/以外の文字を使うことができる。ただ - しその文字は特別な意味(例: '|'や'"'など)を持っていては - ならず、{pattern}の内側に現れてはならない。 - NOTE: エラーメッセージの本文によって":catch"することは - 確実ではない。メッセージはロケールによって異なるからで - ある。 - - *:fina* *:finally* *E606* *E607* -:fina[lly] |:try|と":finally"の間を抜ける前に必ず、このコマンドか - ら対応する|:endtry|の間のコマンドが実行される。つまり - 正常に進んだ場合、|:continue|, |:break|, |:finish|, - |:return|を使った場合、エラー・割り込み・例外が発生し - た場合(|:throw|を参照)のいずれの場合でも。 - - *:th* *:throw* *E608* -:th[row] {expr1} {expr1}を評価し、例外として投げる。|:try|と|:catch|の - 間で":throw"が使われた場合、{expr1}にマッチする最初の - |:catch|までのコマンドはスキップされる。そのような - ":catch"がない場合、または":catch"と|:finally|の間で - ":throw"が使われた場合、":finally"から|:endtry|までの - コマンドが実行される。":throw"が":finally"の後で実行さ - れた場合、":endtry"までのコマンドはスキップされる。 - ":endtry"において、動的に囲んでいる次の":try"(これは関 - 数呼び出しやスクリプトsourceも含めて探される)から対応 - する":catch"までに対しこのプロセスが再び適用される。例 - 外が捕捉されない場合、コマンドの処理は終了する。 - 例: > - :try | throw "oops" | catch /^oo/ | echo "caught" | endtry -< Note: エラーによって行のパースがスキップされ、"|" によ - るコマンド区切りが解釈されないような場合は "catch" は - 行を分けて書く必要があります。 - - *:ec* *:echo* -:ec[ho] {expr1} .. 各{expr1}をスペースで区切って表示する。最初の{expr1}の - 表示は、常に新しい行から始まる。 - |:comment|も参照。 - 改行が必要な場合 "\n" を使用する。カーソルを第1桁に - 持って行くには "\r" を使用する。 - 色強調を行うにはコマンド|:echohl|を使用する。 - コメント文を同じ行に続けることはできない。 - 例: > - :echo "the value of 'shell' is" &shell -< *:echo-redraw* - このコマンドの後、再描画を行うと表示したメッセージが消 - えてしまう。Vim は一連のコマンドが完了するまで再描画を - 後回しにするため、この現象は頻繁に発生する。例えば、 - ":echo" より前に実行したコマンドが後で再描画を引き起こ - し、メッセージが消えてしまうということがある(再描画は - しばしばユーザが何か入力するまで後回しにされる)。この - 問題を避けるには、|:redraw| を使って強制的に再描画する - こと。例: > - :new | redraw | echo "there is a new window" -< - - *:echon* -:echon {expr1} .. 改行を付けずに、{expr1}を表示する。|:comment|も参照。 - 色強調を行うにはコマンド|:echohl|を使用する。 - コメント文を同じ行に続けることはできない。 - 例: > - :echon "the value of 'shell' is " &shell -< - Vimコマンドの":echo"と、外部のシェルコマンドである - ":!echo"との違いに注意: > - :!echo % --> filename -< ":!"の引数は展開される。|:_%|を参照。 > - :!echo "%" --> filename or "filename" -< 前の例のように働く。ダブルクォートが表示されるかどうか - は、使用している'shell'に依存する。 > - :echo % --> 何も表示されない -< '%'は式として不当な文字である。 > - :echo "%" --> % -< 単に文字'%'を表示する。 > - :echo expand("%") --> filename -< '%'を展開するために関数expand()を呼び出している。 - - *:echoh* *:echohl* -:echoh[l] {name} 次の|:echo|, |:echon|, |:echomsg|"コマンドから、ハイラ - イトグループ{name}を適用する。|input()|のプロンプトに - 対しても適用される。例: > - :echohl WarningMsg | echo "Don't panic!" | echohl None -< 使用した後にはグループを"None"に戻すことを忘れないよう - に。さもないとそれ以降のechoの表示総てがハイライトされ - てしまう。 - - *:echom* *:echomsg* -:echom[sg] {expr1} .. 式を本当のメッセージとして表示し、そのメッセージをメッ - セージ履歴|message-history|に保存する。 - |:echo|コマンド同様に、引数の間にスペースが挿入される。 - しかし印字不可能な文字は解釈されずに表示される。 - |:echo|とはかなり異なり、むしろ|:execute|に近い方法で - 解析がされる。なんらかを表示する前に、まず最初に全ての - 式が評価し、連結する。式を評価した値は数値か文字列でな - ければならない。辞書やリストはエラーとなる。 - 強調を行うには|:echohl|コマンドを使う。 - 例: > - :echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see." -< 画面を再描画したときメッセージが消去されてしまうのを避 - ける方法については|:echo-redraw|を参照。 - *:echoe* *:echoerr* -:echoe[rr] {expr1} .. 式をエラーメッセージとして表示し、そのメッセージを - メッセージ履歴|message-history|に保存する。スクリプト - や関数の中で使用されたときは行番号が付け加えられる。 - |:echo|コマンドと同様に引数の間にスペースが挿入される。 - try条件文の中で使用されたときは、このメッセージがエ - ラー例外として投げられる。(|try-echoerr|を参照) - 例: > - :echoerr "This script just failed!" -< - 単にメッセージを強調させたい場合には|:echohl|を使うこ - と。ビープを鳴らしたいときには次のようにする: > - :exe "normal \<Esc>" -< - *:exe* *:execute* -:exe[cute] {expr1} .. {expr1}の評価結果の文字列をExコマンドとして実行する。 - 複数の引数は連結され、間にスペースが挿入される。余計な - スペースを入れたくない場合は "." オペレータを使って文 - 字列を連結してください。 - {expr1}は処理されたコマンドとして扱われ、コマンドライ - ン編集用のキーは認識されない。 - コメント文を同じ行に続けることはできない。 - 例: > - :execute "buffer" nextbuf - :execute "normal" count . "w" -< - ":execute"は'|'を受けつけないコマンドに、次のコマンドを - 続けて実行させるのにも使用できる。例: > - :execute '!ls' | echo "theend" -< (訳注:普通の使い方では":!ls"の後には'|'を使って、Exコ - マンドを続けることはできない) - また":execute"は、Vimスクリプト内でコマンド":normal"の - 引数に制御文字を書くことを避けるために役に立つ。 > - :execute "normal ixxx\<Esc>" -< これで<Esc>文字を表す。|expr-string|を参照。 - - ファイル名の中の特殊文字を正しくエスケープするように - 注意すること。Vim コマンドに与えるファイル名をエス - ケープするには |fnameescape()| を使う。|:!| コマンドに - 与えるときは |shellescape()| を使う。 - 例: > - :execute "e " . fnameescape(filename) - :execute "!ls " . shellescape(expand('%:h'), 1) -< - 注意:executeに渡す文字列としては、"while"や"if"系のコ - マンドが始まったり終ったりするだけのようなものは不適格 - である。よって次のような例は認められない: > - :execute 'while i > 5' - :execute 'echo "test" | break' -< - 文字列の中に完全な"while"や"if"コマンドが含まれること - が求められる: > - :execute 'while i < 5 | echo i | let i = i + 1 | endwhile' -< - - *:exe-comment* - ":execute"や":echo"そして":echon"は、同一行に直接コメ - ントを続けることはできない。何故ならそれらのコマンドに - とって'"'は文字列の始まりに見えてしまうからである。し - かし'|'の後にコメントを書くことは可能である。例: > - :echo "foo" | "this is a comment - -============================================================================== -8. 例外処理 *exception-handling* - -Vimスクリプト言語は例外処理機構を備えている。この節では例外処理をどのように行 -うかについて説明する。 - -例外はエラー発生時や割り込み発生時にVimによって投げられる。それについては -|catch-errors|と|catch-interrupt|を参照。ユーザはコマンド|:throw|によって明示 -的に例外を投げることができる。|throw-catch|を参照。 - - -TRY 条件文 *try-conditionals* - -例外を捕捉したり、例外を引き金として後始末のコードを実行することができる。try -条件文を使う事によってcatch節(これが例外を捕捉する)やfinally節(後始末のために -実行される)を指定する事ができる。 -try条件文はコマンド|:try|によって始まり、対応するコマンド|:endtry|によって終了 -する。その間でコマンド|:catch|によりcatch節を定めたり、コマンド|:finally|に -よってfinally節を定めることができる。catch節は1個もなかったり、複数個あっても -よい。しかしfinally節は1個までしか持てない。finally節の後にcatch節があってはな -らない。catch節とfinally節の前の部分はtryブロックと呼ばれる。 - - :try - : ... - : ... try ブロック - : ... - :catch /{pattern}/ - : ... - : ... catch 節 - : ... - :catch /{pattern}/ - : ... - : ... catch 節 - : ... - :finally - : ... - : ... finally 節 - : ... - :endtry - -try条件文により、コードから発生する例外を監視したり、適切な対応を取ることができる。 -tryブロック内で発生した例外は捕捉される。tryブロックとcatch節内で発生した例外 -は捕捉され、後始末が行われる。 -tryブロックの実行中に例外が発生しなかった場合は、制御は(もしあれば)finally節に -移動する。その実行後に、スクリプトは":endtry"の後の行から実行を継続する。 -tryブロックの実行中に例外が発生した場合は、tryブロックの残りの行はスキップされる。 -例外はコマンド":catch"の引数として指定された正規表現に照合される。最初にマッチ -した":catch"の後のcatch節が実行される。他のcatch節は実行されない。catch節は次 -に":catch", ":finally", ":endtry"が現れたところで終了する(どれでもよい)。 -":endtry"に達すると、スクリプトは次の行から通常通り実行が続けられる。 -発生した例外が、コマンド":catch"で指定されたどの正規表現にもマッチしないとき、 -その例外はそのtry条件文で捕捉されず、どのcatch節も実行されない。finally節があ -るならば実行される。finally節の実行中は例外は後回しにされ、":endtry"のときに実 -行される。そして":endtry"の後のコマンドは実行されず、例外は他のどこかで捕捉さ -れる。|try-nesting|を参照。 -catch節の実行中に新たな例外が発生した場合は、そのcatch節の残りの行は実行されな -い。新しい例外は同じtry条件文のどの":catch"コマンドの正規表現にも照合されず、 -どのcatch節も実行されない。しかしfinally節があるならばそこが実行され、その間そ -の例外は保留される。":endtry"の後のコマンドは実行されない。新しい例外は他のど -こかで捕捉される。|try-nesting|を参照。 -finally節の実行中に例外が発生した場合は、そのfinally節の残りの行は実行されない。 -tryブロックやそのcatch節のどこかで例外が発生してからそのfinally節が実行されて -いた場合は、元の(保留されていた)例外は破棄される。":endtry"の後のコマンドは実 -行されない。finally節で発生した例外は伝播し、他のどこかで捕捉される。 -|try-nesting|を参照。 - -完全なtry条件文を囲む":while"ループ内で、tryブロックやcatch節において":break" -や":continue"が実行されたときもfinally節が実行される。 -また、関数の中やsourceされたスクリプト中で、tryブロックやtry条件文のcatch節に -おいて":return"や":finish"が実行されたときもfinally節が実行される。finally節の -実行中は":break", ":continue", ":return", ":finish"は保留され、":endtry"に達し -たとき再開される。しかしこれらは、そのfinally節内で例外が発生したときは破棄さ -れる。 -完全なtry条件節を囲む":while"ループ内での":break"や":continue"、またはfinally -節内で":return"や":finish"に出会ったときは、finally節の残りはスキップされ、通 -常通り":break", "continue", ":return", "finish"が実行される。もしそのfinally節 -の前に、tryブロックやcatch節内で例外が発生したり、":break", ":continue", -":return", ":finally"が行われていた場合は、それらの保留されていた例外やコマン -ドは破棄される。 - -例として |throw-catch| と |try-finally| を参照。 - - -try条件文のネスト *try-nesting* - -try条件文は任意にネストされられる。つまり、try条件文のtryブロック・catch節・ -finally節のなかに別の完全なtry条件文を書くことができる。内側のtry条件文がtryブ -ロックで発生した例外を捕捉しなかったときや、catch節・finally節で新たな例外が発 -生したときは、外側のtry条件文がそのルールにしたがって例外を捕捉する。内側の -try条件文が外側の条件文のtryブロックの中にある場合はcatch節が判定されるが、そ -うでない場合はfinally節のみが実行される。これはネストの仕方には関係ない。つま -り、内側のtry条件文が直接外側のtry条件文に含まれていてもよいし、外側がスクリプ -トをsourceしたり、内側のtry条件文を含む関数を呼び出していてもよい。 - -有効なtry条件文のどれも例外を捕捉しなかったときは、それらのfinally節が実行され -る。その後、スクリプトの実行は停止する。":throw"コマンドにより明示的に投げられ -た例外が捕捉されなかった場合は、エラーメッセージが表示される。Vimによって暗黙 -的に投げられたエラーや割り込み例外については、通常通りエラーメッセージや割り込 -みメッセージが表示される。 - -例として |throw-catch| を参照。 - - -例外処理コードの検査 *except-examine* - -例外処理のコードはトリッキーになりがちである。何が起こっているか知りたいときは -スクリプトファイルをsourceするときに'verbose'を13に設定するか、コマンド修飾子 -":13verbose"を使う。すると例外が発生・破棄・捕捉・完了したときには表示されるよ -うになる。冗長度のレベルを14異常にすると、finally節において保留されているもの -も表示されるようになる。この情報はデバッグモードでも表示される -(|debug-scripts|を参照)。 - - -例外の生成と捕捉 *throw-catch* - -任意の数値や文字列を例外として投げることができる。コマンド|:throw|を使い、投げ -られる値を引数に渡す: > - :throw 4711 - :throw "string" -< *throw-expression* -式を引数に指定することもできる。まずその式が評価され、その結果が投げられる: > - :throw 4705 + strlen("string") - :throw strpart("strings", 0, 6) - -":throw"コマンドの引数を評価している最中に例外が発生することもありうる。その例 -外が捕捉されない限り、その式の評価は破棄される。 -よって、その":throw"コマンドは例外を投げることができない。 - 例: > - - :function! Foo(arg) - : try - : throw a:arg - : catch /foo/ - : endtry - : return 1 - :endfunction - : - :function! Bar() - : echo "in Bar" - : return 4710 - :endfunction - : - :throw Foo("arrgh") + Bar() - -この例を実行すると"arrgh"が投げられ、Bar()が実行されないため"in Bar"は表示され -ない。しかし次のようにすると > - :throw Foo("foo") + Bar() -"in Bar"を表示し、4711を投げる。 - -式を引数として受け取る他のコマンドでも、式の評価中に捕捉されない例外が発生する -とコマンドが破棄される。そして例外はそのコマンドを呼び出した位置へ伝播する。 - 例: > - - :if Foo("arrgh") - : echo "then" - :else - : echo "else" - :endif - -この例で、"then"と"else"のどちらも表示されない。 - - *catch-order* -例外は、1個以上の|:catch|コマンドを持つtry条件文で捕捉することができる。これに -ついては|try-conditionals|を参照。各":catch"コマンドで捕捉される値は、引数にて -正規表現で指定できる。マッチする例外が捕捉されると、その後に続くcatch節が実行 -される。 - 例: > - - :function! Foo(value) - : try - : throw a:value - : catch /^\d\+$/ - : echo "Number thrown" - : catch /.*/ - : echo "String thrown" - : endtry - :endfunction - : - :call Foo(0x1267) - :call Foo('string') - -最初のFoo()の呼び出しは"Number thrown"を表示し、2番目の呼び出しは"String -thrown"を表示する。例外は、順番に":catch"コマンドに照合される。最初にマッチし -たcatch節だけが実行される。そのため、より限定的な":catch"を先に書くべきである。 -次の順序で書くと無意味になってしまう: > - - : catch /.*/ - : echo "String thrown" - : catch /^\d\+$/ - : echo "Number thrown" - -最初の":catch"は常にマッチするため、2番目のcatch節は決して実行されない。 - - *throw-variables* -一般的な正規表現により例外を捕捉した場合、その正確な値には変数|v:exception|に -よりアクセスできる: > - - : catch /^\d\+$/ - : echo "Number thrown. Value is" v:exception - -また、どこで例外が発生したかも知りたいだろう。これは|v:throwpoint|に保持されて -いる。Note "v:exception"と"v:throwpoint"は最も直近に捕捉された例外に対し、それ -が終了するまで有効である。 - 例: > - - :function! Caught() - : if v:exception != "" - : echo 'Caught "' . v:exception . '" in ' . v:throwpoint - : else - : echo 'Nothing caught' - : endif - :endfunction - : - :function! Foo() - : try - : try - : try - : throw 4711 - : finally - : call Caught() - : endtry - : catch /.*/ - : call Caught() - : throw "oops" - : endtry - : catch /.*/ - : call Caught() - : finally - : call Caught() - : endtry - :endfunction - : - :call Foo() - -上の例は次のように表示する > - - Nothing caught - Caught "4711" in function Foo, line 4 - Caught "oops" in function Foo, line 10 - Nothing caught - -実用的な例: 次のコマンド":LineNumber"は、それが呼び出されたスクリプトや関数中 -の行番号を表示する: > - - :function! LineNumber() - : return substitute(v:throwpoint, '.*\D\(\d\+\).*', '\1', "") - :endfunction - :command! LineNumber try | throw "" | catch | echo LineNumber() | endtry -< - *try-nested* -try条件文によって捕捉されないはそれを囲むtry条件文によって捕捉することができる -: > - - :try - : try - : throw "foo" - : catch /foobar/ - : echo "foobar" - : finally - : echo "inner finally" - : endtry - :catch /foo/ - : echo "foo" - :endtry - -内側のtry条件文はこの例外を捕捉せず、finally節が実行されるだけである。そしてこ -の例外は外側のtry条件文で捕捉される。この例を実行すると"inner finally"と"foo" -が表示される。 - - *throw-from-catch* -例外を捕捉した後、新しい例外を投げて他のcatch節で捕捉させることができる: > - - :function! Foo() - : throw "foo" - :endfunction - : - :function! Bar() - : try - : call Foo() - : catch /foo/ - : echo "Caught foo, throw bar" - : throw "bar" - : endtry - :endfunction - : - :try - : call Bar() - :catch /.*/ - : echo "Caught" v:exception - :endtry - -これを実行すると"Caught foo, throw bar"と"Caught bar"が表示される。 - - *rethrow* -Vimスクリプト言語には本物のrethrowはないが、代わりに"v:exception"を使うことが -できる: > - - :function! Bar() - : try - : call Foo() - : catch /.*/ - : echo "Rethrow" v:exception - : throw v:exception - : endtry - :endfunction -< *try-echoerr* -Note この方法はVimのエラーや割り込み例外を"rethrow"するためには使えない。Vimの -内部例外を偽装することはできないからである。それを行おうとするとエラー例外が発 -生する。その状況を表す自分自身の例外を投げるべきである。独自のエラー例外値を含 -むVimのエラー例外を発生させたい場合には、コマンド|:echoerr|を使うことができる: > - - :try - : try - : asdf - : catch /.*/ - : echoerr v:exception - : endtry - :catch /.*/ - : echo v:exception - :endtry - -このコードを実行すると次が表示される - - Vim(echoerr):Vim:E492: Not an editor command: asdf ~ - - -後始末処理 *try-finally* - -しばしばスクリプト中でグローバルな設定を変更し、最後に元の設定を復元することが -ある。しかしユーザがCTRL-Cを押してスクリプトを中断すると、設定が一貫しない状態 -になってしまう。スクリプトの開発段階においても、エラーが発生したり、明示的に例 -外を投げたが捕捉されなかった場合に、同じことが起こりうる。この問題は、try条件 -文を使ってfinally節で設定を復元することで解決できる。finally節は、通常の制御フ -ロー・エラー時・明示的な":throw"時・割り込み時に実行されることが保証されている。 -(Note try条件文の内側で発生したエラーと割り込みは例外に変換される。これらが捕 -捉されなかったときには、finally節の実行の後にスクリプトの実行が停止する。) -例: > - - :try - : let s:saved_ts = &ts - : set ts=17 - : - : " Do the hard work here. - : - :finally - : let &ts = s:saved_ts - : unlet s:saved_ts - :endtry - -関数やスクリプトの一部でグローバルな設定を変更し、その関数・スクリプトの失敗時・ -通常終了時に設定を復元する必要があるときは、必ず局所的にこの手法を使うべきであ -る。 - - *break-finally* -":continue", ":break", ":return", ":finish"などによってtryブロックやcatch節を -抜けるときも後始末処理が働く。 - 例: > - - :let first = 1 - :while 1 - : try - : if first - : echo "first" - : let first = 0 - : continue - : else - : throw "second" - : endif - : catch /.*/ - : echo v:exception - : break - : finally - : echo "cleanup" - : endtry - : echo "still in while" - :endwhile - :echo "end" - -上の例を実行すると"first", "cleanup", "second", "cleanup", "end"と表示される: -> - :function! Foo() - : try - : return 4711 - : finally - : echo "cleanup\n" - : endtry - : echo "Foo still active" - :endfunction - : - :echo Foo() "returned by Foo" - -上の例を実行すると"cleanup"と"4711 returned by Foo"が表示される。finally節に余 -計な":return"を書く必要はない。(そうすると戻り値が上書きされてしまう) - - *except-from-finally* -finally節で":continue", ":break", ":return", ":finish", ":throw"を使うことは可 -能である。しかしそうするとtry条件文の後始末を破棄してしまうことになるので推奨 -されていない。しかし、当然、finally節の中で割り込みとエラー例外が発生すること -はありうる。 -finally節におけるエラーにより、割り込みが正しく動作しなくなる例: > - - :try - : try - : echo "Press CTRL-C for interrupt" - : while 1 - : endwhile - : finally - : unlet novar - : endtry - :catch /novar/ - :endtry - :echo "Script still running" - :sleep 1 - -失敗する可能性のあるコマンドをfinally節に書く必要があるときは、それらのコマン -ドにより発生するエラーを捕捉したり無視したりすることについて考えること。 -|catch-errors| と |ignore-errors| を参照。 - - -エラーを変更する *catch-errors* - -特定のエラーを捕捉するには、監視したいコードをtryブロックに入れ、そのエラー -メッセージに対するcatch節を加えるだけでよい。try条件節が存在すると全てのエラー -は例外に変換される。そのため、メッセージはまったく表示されず、|v:errmsg|は設定 -されない。":catch"コマンドに対する正しい正規表現を作るには、エラー例外のフォー -マットがどのようなものか知っていなければならない。 - エラー例外は次のフォーマットを持つ: > - - Vim({cmdname}):{errmsg} -または > - Vim:{errmsg} - -{cmdname}は失敗したコマンド名である。2番目の形式はコマンド名が不明のとき用いら -れる。{errmsg}は、そのエラーがtry条件文の外で発生したときに通常表示されるエラー -メッセージである。エラーメッセージは必ず大文字の"E"で始まり、その後に2,3桁のエ -ラー番号、コロン、スペースが続く。 - -例: - -次のコマンドを実行すると、 > - :unlet novar -通常次のエラーメッセージが表示される > - E108: No such variable: "novar" -これはtry条件文の中では例外に変換される > - Vim(unlet):E108: No such variable: "novar" - -次のコマンドを実行すると、 > - :dwim -通常次のエラーメッセージが表示される > - E492: Not an editor command: dwim -これはtry条件文の中では例外に変換される > - Vim:E492: Not an editor command: dwim - -":unlet"の全てのエラーを次によって捕捉できる > - :catch /^Vim(unlet):/ -また、全てのミススペルされたコマンドのエラーは次で捕捉できる > - :catch /^Vim:E492:/ - -複数のコマンドによって同一のエラーメッセージが表示される場合もある: > - :function nofunc -と > - :delfunction nofunc -は両方とも次のエラーメッセージを表示する。 - E128: Function name must start with a capital: nofunc -これはtry条件節の中では例外に変換される。それぞれ > - Vim(function):E128: Function name must start with a capital: nofunc -または > - Vim(delfunction):E128: Function name must start with a capital: nofunc -となる。どのコマンドによって発生したかに関係なくこのエラーを捕捉するには、次の -正規表現を使う: > - :catch /^Vim(\a\+):E128:/ - -複数のエラーメッセージを表示するコマンドもある: > - :let x = novar -は次のエラーメッセージを表示する: > - E121: Undefined variable: novar - E15: Invalid expression: novar -最初のエラーメッセージのみが例外の値として使われる。それが最も限定的なメッセー -ジだからである(|except-several-errors|を参照)。これは次のようにして捕捉できる -> - :catch /^Vim(\a\+):E121:/ - -"nofunc"という名前に関係したエラー全てを捕捉するには > - :catch /\<nofunc\>/ - -コマンド":write"と":read"による全てのVimエラーを捕捉するには > - :catch /^Vim(\(write\|read\)):E\d\+:/ - -全てのVimエラーを捕捉するには次の正規表現を使う > - :catch /^Vim\((\a\+)\)\=:E\d\+:/ -< - *catch-text* -NOTE: エラーメッセージの本文によって捕捉しようとしてはならない > - :catch /No such variable/ -こうすると英語の環境では動作するが、コマンド |:language|により他の言語を使って -いるユーザの環境では動作しなくなる。しかし、コメントとしてメッセージテキストを -引用することは役に立つ: > - :catch /^Vim(\a\+):E108:/ " No such variable - -エラーを無視する *ignore-errors* - -特定のコマンドで発生したエラーを捕捉すれば、エラーを無視することができる: > - - :try - : write - :catch - :endtry - -しかしこの単純な形は使わないよう強く推奨されている。なぜなら、これはあなたが望 -むより多くの例外を捕捉してしまうからである。":write"コマンドを使うと自動コマン -ドが実行され、書き込みとは関係ないエラーが発生する可能性がある。例えば: > - - :au BufWritePre * unlet novar - -このようなエラーの中には、スクリプトの作者が責任を追わないものもある: つまり、 -スクリプトのユーザがそのようなオートコマンドを定義している場合である。その -場合、上の例のようにすると、ユーザからエラーを隠してしまうことになる。エラーを -無視するには、次のようにした方がよい > - - :try - : write - :catch /^Vim(write):/ - :endtry - -これは書き込みエラーだけを捕捉する。つまり、あなたが意図的に無視したいエラーだ -けである。 - -オートコマンドを発生させないような1つのコマンドに対しては、":silent!"を使えば -エラーを例外に変換すること自体を抑制させることができる: > - :silent! nunmap k -これはtry条件文が有効なときも機能する。 - - -割り込みを捕捉する *catch-interrupt* - -有効なtry条件文内では、割り込み(CTRL-C)は例外"Vim:Interrupt"に変換される。これ -を他の例外と同様に捕捉することができる。するとそのスクリプトは停止しない。 - 例: > - - :function! TASK1() - : sleep 10 - :endfunction - - :function! TASK2() - : sleep 20 - :endfunction - - :while 1 - : let command = input("Type a command: ") - : try - : if command == "" - : continue - : elseif command == "END" - : break - : elseif command == "TASK1" - : call TASK1() - : elseif command == "TASK2" - : call TASK2() - : else - : echo "\nIllegal command:" command - : continue - : endif - : catch /^Vim:Interrupt$/ - : echo "\nCommand interrupted" - : " 例外捕捉。次のプロンプトから継続する。 - : endtry - :endwhile - -ここでCTRL-Cを押すとタスクに割り込むことができる。その後スクリプトは新しいコマ -ンドを要求する。プロンプトでCTRL-Cを押すとスクリプトが終了する。 - -スクリプト中の特定の行でCTRL-Cが押されたとき何が起こるかをテストするにはデバッ -グモードを使い、その行の上で|>quit|や|>interrupt|コマンドを使う。 -|debug-scripts|を参照。 - - -全てを捕捉する *catch-all* - -次のコマンド > - - :catch /.*/ - :catch // - :catch - -は全てをエラー例外・割り込み例外・|:throw|コマンドにより明示的に投げられた例外 -の捕捉する。これは、スクリプトのトップレベルで、予期しないことを捕捉するために -役に立つ。 - 例: > - - :try - : - : " ここで難しいことをする - : - :catch /MyException/ - : - : " 既知の問題を制御する - : - :catch /^Vim:Interrupt$/ - : echo "Script interrupted" - :catch /.*/ - : echo "Internal error (" . v:exception . ")" - : echo " - occurred at " . v:throwpoint - :endtry - :" スクリプトの終わり - -Note: 全てを捕捉すると、期待していた以上のものを捕捉してしまうかもしれない。そ -れゆえ、":catch"コマンドの引数に正規表現を指定することにより、自分が本当に制御 -できる問題だけを捕捉することが強く推奨されている。 -全てを捕捉してしまうと、CTRL-Cを押してスクリプトを中断することがほぼ不可能になっ -てしまうことがある。その例: > - - :while 1 - : try - : sleep 1 - : catch - : endtry - :endwhile - - -例外とオートコマンド *except-autocmd* - -オートコマンドの実行中に例外を使うこともできる。例: > - - :autocmd User x try - :autocmd User x throw "Oops!" - :autocmd User x catch - :autocmd User x echo v:exception - :autocmd User x endtry - :autocmd User x throw "Arrgh!" - :autocmd User x echo "Should not be displayed" - : - :try - : doautocmd User x - :catch - : echo v:exception - :endtry - -上の例を実行すると"Oops!"と"Arrgh!"が表示される。 - - *except-autocmd-Pre* -いくつかのコマンドでは、それ自身が実行される前にオートコマンドが実行される。 -例外が発生し、それが一連のオートコマンドの中で捕捉されない場合、一連の自動コマ -ンドと、その引き金となったコマンドは破棄され、例外がそのコマンドを呼んだ位置へ -伝播する。 - 例: > - - :autocmd BufWritePre * throw "FAIL" - :autocmd BufWritePre * echo "Should not be displayed" - : - :try - : write - :catch - : echo "Caught:" v:exception "from" v:throwpoint - :endtry - -ここで":write"コマンドは現在編集しているファイルを書き込まない('modified'を確 -認すればわかる)。BufWritePreのオートコマンドで発生した例外により、":write"が破 -棄されたためである。そしてその例外は捕捉され、次を表示する: > - - Caught: FAIL from BufWrite Auto commands for "*" -< - *except-autocmd-Post* -いくつかのコマンドでは、それ自身が実行された後でオートコマンドが実行される。引 -き金となったコマンド自身が失敗して、それが有効なtry条件文の内側にあった場合、 -自動コマンドはスキップされ、エラー例外が発生する。その例外は、コマンドを呼んだ -位置で捕捉することができる。 - 例: > - - :autocmd BufWritePost * echo "File successfully written!" - : - :try - : write /i/m/p/o/s/s/i/b/l/e - :catch - : echo v:exception - :endtry - -この例は次を表示する: > - - Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e) - -引き金となったコマンドが失敗したときでさえもオートコマンドを実行したいという場 -合は、catch節の中でそのイベントを引き起こすことできる。 - 例: > - - :autocmd BufWritePre * set noreadonly - :autocmd BufWritePost * set readonly - : - :try - : write /i/m/p/o/s/s/i/b/l/e - :catch - : doautocmd BufWritePost /i/m/p/o/s/s/i/b/l/e - :endtry -< -":silent!"を使うこともできる: > - - :let x = "ok" - :let v:errmsg = "" - :autocmd BufWritePost * if v:errmsg != "" - :autocmd BufWritePost * let x = "after fail" - :autocmd BufWritePost * endif - :try - : silent! write /i/m/p/o/s/s/i/b/l/e - :catch - :endtry - :echo x - -上の例は"after fail"を表示する。 - -引き金となったコマンドが失敗しなかった場合、オートコマンドから発生した例外は、 -元のコマンドを呼んだ位置から捕捉できる: > - - :autocmd BufWritePost * throw ":-(" - :autocmd BufWritePost * echo "Should not be displayed" - : - :try - : write - :catch - : echo v:exception - :endtry -< - *except-autocmd-Cmd* -いくつかのコマンドでは、通常の処理を一連のオートコマンドで置き換えることができ -る。そのコマンド列で発生した例外は元のコマンドの呼び出し位置で捕捉できる。 - 例: ":write"コマンドでは、例外が発生したとき、呼び出し側は実際にファイルが -書き込まれたのかどうかを知ることができない。これを教える必要があるときは、なん -らかの手段を使わねばならない。 > - - :if !exists("cnt") - : let cnt = 0 - : - : autocmd BufWriteCmd * if &modified - : autocmd BufWriteCmd * let cnt = cnt + 1 - : autocmd BufWriteCmd * if cnt % 3 == 2 - : autocmd BufWriteCmd * throw "BufWriteCmdError" - : autocmd BufWriteCmd * endif - : autocmd BufWriteCmd * write | set nomodified - : autocmd BufWriteCmd * if cnt % 3 == 0 - : autocmd BufWriteCmd * throw "BufWriteCmdError" - : autocmd BufWriteCmd * endif - : autocmd BufWriteCmd * echo "File successfully written!" - : autocmd BufWriteCmd * endif - :endif - : - :try - : write - :catch /^BufWriteCmdError$/ - : if &modified - : echo "Error on writing (file contents not changed)" - : else - : echo "Error after writing" - : endif - :catch /^Vim(write):/ - : echo "Error on writing" - :endtry - -バッファに変更を行った後でこのスクリプトを数回sourceすると、1回目は次のように -表示される > - File successfully written! -2回目は > - Error on writing (file contents not changed) -3回目は > - Error after writing -以下同様。 - - *except-autocmd-ill* -異なるイベントに対するオートコマンドにわたってtry条件文を展開することはできな -い。以下のコードは不正である: > - - :autocmd BufWritePre * try - : - :autocmd BufWritePost * catch - :autocmd BufWritePost * echo v:exception - :autocmd BufWritePost * endtry - : - :write - - -例外の階層と付加情報つき例外 *except-hier-param* - -プログラミング言語の中には例外クラスを階層化したり、例外クラスのオブジェクトに -付加的な情報を渡すことができるものがある。これと似たことをVimでもできる。 -階層構造を持った例外を投げるには、各部分をコロンで区切った完全なクラス名を投げ -ればよい。例えば、数学ライブラリ内でオーバーフローが発生したときに -"EXCEPT:MATHERR:OVERFLOW"を投げる。 -例外クラスに付加的な情報を与えたいときは、それを括弧の中に書く。例えば、 -"myfile"の書き込み中にエラーが発生したときに文字列"EXCEPT:IO:WRITEERR(myfile)" -を投げる。 -":catch"コマンドにおいて適切な正規表現を使えば、階層の基底クラスや派生クラスを -捕捉できる。括弧の中の付加情報は、":substitute"コマンドを使って|v:exception|か -ら切り出すことができる。 -例: > - - :function! CheckRange(a, func) - : if a:a < 0 - : throw "EXCEPT:MATHERR:RANGE(" . a:func . ")" - : endif - :endfunction - : - :function! Add(a, b) - : call CheckRange(a:a, "Add") - : call CheckRange(a:b, "Add") - : let c = a:a + a:b - : if c < 0 - : throw "EXCEPT:MATHERR:OVERFLOW" - : endif - : return c - :endfunction - : - :function! Div(a, b) - : call CheckRange(a:a, "Div") - : call CheckRange(a:b, "Div") - : if (a:b == 0) - : throw "EXCEPT:MATHERR:ZERODIV" - : endif - : return a:a / a:b - :endfunction - : - :function! Write(file) - : try - : execute "write" fnameescape(a:file) - : catch /^Vim(write):/ - : throw "EXCEPT:IO(" . getcwd() . ", " . a:file . "):WRITEERR" - : endtry - :endfunction - : - :try - : - : " 計算やI/Oを行う - : - :catch /^EXCEPT:MATHERR:RANGE/ - : let function = substitute(v:exception, '.*(\(\a\+\)).*', '\1', "") - : echo "Range error in" function - : - :catch /^EXCEPT:MATHERR/ " catches OVERFLOW and ZERODIV - : echo "Math error" - : - :catch /^EXCEPT:IO/ - : let dir = substitute(v:exception, '.*(\(.\+\),\s*.\+).*', '\1', "") - : let file = substitute(v:exception, '.*(.\+,\s*\(.\+\)).*', '\1', "") - : if file !~ '^/' - : let file = dir . "/" . file - : endif - : echo 'I/O error for "' . file . '"' - : - :catch /^EXCEPT/ - : echo "Unspecified error" - : - :endtry - -エラー時やCTRL-Cを押したときにVim自身によって投げられる例外は平坦な階層になっ -ている: つまりこれらは全て"Vim"クラスに入っている。ユーザは接頭辞"Vim"をつけた -例外を投げることはできない。これらはVim用に予約されている。 -Vimのエラー例外は失敗したコマンドの名前(わかっているならば)という付加情報がつ -いている。|catch-errors|を参照。 - - -変わった特性 - *except-compat* -例外制御のコンセプトは、例外を引き起こしたコマンドは即座に異常終了し、制御が -finally節またはcatch節に移るという前提に基づいている。 - -Vimスクリプト言語では、エラーの後もスクリプトや関数が処理を続行する場合がある。 -"abort"フラグのない関数や、":silent!"をつけて実行されたコマンドでは、制御は次 -の行、そして関数の外へ移り、制御フローは最外側の":endwhile"や":endif"の次の行へ -移る。一方、エラーは例外と同様に捕捉できるべきである(つまり、即座に異常終了す -ることが要求される)。 - -この問題は、try条件文が有効なときだけエラーを例外に変換し、(":silent!"で抑制さ -れていない限り)即座に異常終了することで解決される。(エラー)例外は有効なtry条件 -文でのみ捕捉可能であるため、これはなんら制約とはならない。エラーを捕捉せずに即 -座に終了してほしいなら、単にcatch節を持たないtry条件文を使えばよい。(finally節 -を指定すれば、終了の前に後始末処理を行うことができる) - -有効なtry条件文がないとき、即座の異常終了でなく、通常の異常終了と継続が行われ -る。これによってVim6.1以前用に書かれたスクリプトの互換性を保証している。 - -しかし、有効なtry条件文の中から、例外処理コマンドを使っていない既存のスクリプ -トをsourceする(またはその関数の1つを呼ぶ)と、エラー発生時に既存のスクリプトの -制御フローが変わるかもしれない。エラー発生時に即座に異常終了し、新しい方のスク -リプト内でエラーを捕捉できる。しかしsourceされたスクリプトが":silent!"コマンド -でエラーメッセージを抑制していた場合(それが適切なスクリプトなら|v:errmsg|を見 -ることでエラーを確認している)、実行パスは変わらない。そのエラーは例外に変換さ -れない(|:silent|を参照)。これが起こる残りのただ1つの原因は、エラーに関心を払っ -ていなく、エラーメッセージを表示させるスクリプトである。おそらく新しいスクリプ -トからそのようなコードを使いたいとは思わないだろう。 - - *except-syntax-err* -例外処理コマンドにおける構文エラーは、それが属するtry条件文のどの":catch"コマ -ンドでも決して捕捉されない。しかしfinally節は実行される。 - 例: > - - :try - : try - : throw 4711 - : catch /\(/ - : echo "in catch with syntax error" - : catch - : echo "inner catch-all" - : finally - : echo "inner finally" - : endtry - :catch - : echo 'outer catch-all caught "' . v:exception . '"' - : finally - : echo "outer finally" - :endtry - -上の例を実行すると次が表示される: > - inner finally - outer catch-all caught "Vim(catch):E54: Unmatched \(" - outer finally -元の例外は破棄され、代わりにエラー例外が投げられる。 - -訳注: throw 4711により例外が発生したが、その後の catch /\(/ に構文エラーがある -訳注: ためエラー例外が発生し、最初の例外は破棄された。 - - *except-single-line* -コマンド":try", ":catch", ":finally", ":endtry"は1行の中に書くことができる。し -かし構文エラーがあったとき"catch"の行を認識するのが難しくなるので、避けた方が -よい。 - 例: > - :try | unlet! foo # | catch | endtry -この例は":unlet!"の後に余計な文字があるためエラー例外を発生させる。そして -":catch"と":endtry"が認識されないため、この例外は破棄され、"E488: Trailing -characters"のメッセージが表示される。 - - *except-several-errors* -1つのコマンドにより複数のエラーが発生した場合、普通は最初のエラーメッセージが -最も限定的であるため、それがエラー例外に変換される。 - 例: > - echo novar -は次を発生させる: > - E121: Undefined variable: novar - E15: Invalid expression: novar -try条件文の中のエラー例外の値は次になる: > - Vim(echo):E121: Undefined variable: novar -< *except-syntax-error* -しかし、同じコマンドにおいて通常のエラーの後に構文エラーが検出されたときは、構 -文エラーが例外として投げられる。 - 例: > - unlet novar # -これは次を発生させる: > - E108: No such variable: "novar" - E488: Trailing characters -try条件文の中のエラー例外の値は次になる: > - Vim(unlet):E488: Trailing characters -この理由は、構文エラーによってユーザが予期していない実行パスになってしまうかも -しれないためである。例: > - try - try | unlet novar # | catch | echo v:exception | endtry - catch /.*/ - echo "outer catch:" v:exception - endtry -これは"outer catch: Vim(unlet):E488: Trailing characters"を表示し、次にエラー -メッセージ "E600: Missing :endtry"が表示される。|except-single-line|を参照。 - -============================================================================== -9. 例 *eval-examples* - -16進数で表示する ~ -> - :" 関数 Nr2Bin() は数値の2進文字列表現を返す。 - :func Nr2Bin(nr) - : let n = a:nr - : let r = "" - : while n - : let r = '01'[n % 2] . r - : let n = n / 2 - : endwhile - : return r - :endfunc - - :" 関数 String2Bin() は文字列中の各文字を2進文字列に変換して、ハイフン(-)で - :" 区切って返す。 - :func String2Bin(str) - : let out = '' - : for ix in range(strlen(a:str)) - : let out = out . '-' . Nr2Bin(char2nr(a:str[ix])) - : endfor - : return out[1:] - :endfunc - -使い方の例: > - :echo Nr2Bin(32) -結果: "100000" > - :echo String2Bin("32") -結果: "110011-110010" - - - -行をソート(並べ替え)する (by Robert Webb) ~ - -以下は、指定した比較関数を使って行をソートする例である。 > - - :func SortBuffer() - : let lines = getline(1, '$') - : call sort(lines, function("Strcmp")) - : call setline(1, lines) - :endfunction - -ワンライナーにすると次のようになる: > - :call setline(1, sort(getline(1, '$'), function("Strcmp"))) - -scanf() の代替 ~ - *sscanf* -Vimにはsscanf()に相当する関数が無い。行の一部を取り出す必要がある場合には、 -matchstr()やsubstitute()を使えば実現できる。以下の例は、"foobar.txt, 123, 45" -というような行から、ファイル名と行番号とカラム番号を取り出す方法を示している。 -> - :" 正規表現を設定 - :let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)' - :" 正規表現全体にマッチする部分を取り出す - :let l = matchstr(line, mx) - :" マッチ結果から各要素を取り出す - :let file = substitute(l, mx, '\1', '') - :let lnum = substitute(l, mx, '\2', '') - :let col = substitute(l, mx, '\3', '') - -入力は変数"line"、結果は"file"と"lnum"と"col"に格納される(このアイデアは -Michael Geddesによる)。 - - -辞書からscriptnamesを取り出す ~ - *scriptnames-dictionary* -コマンド|:scriptnames|により今までにsourceされた全てのスクリプトファイルのリス -トを取得することができる。これと等価な関数や変数は存在しない(めったに必要にな -らないからである)。そのような場合には次のコードが利用できる: > - " ":scriptnames" の出力を変数scriptnames_outputに入れる。 - let scriptnames_output = '' - redir => scriptnames_output - silent scriptnames - redir END - - " 出力を行のリストに分割し、各行をパースする。辞書"scripts"に要素を追加 - " する。 - let scripts = {} - for line in split(scriptnames_output, "\n") - " 空行以外に対して実行 - if line =~ '\S' - " 行内の最初の番号を取得 - let nr = matchstr(line, '\d\+') - " ファイル名を取得。スクリプト番号" 123: "を削除。 - let name = substitute(line, '.\+:\s*', '', '') - " 辞書に要素を追加 - let scripts[nr] = name - endif - endfor - unlet scriptnames_output - -============================================================================== -10. +eval機能が無効 *no-eval-feature* - -コンパイル時に|+eval|機能が無効とされている場合、総ての式評価(eval)コマンドは -提供されない。その場合、Vimスクリプトが総ての種類のエラーを引き起こすことを避 -ける為、":if"と":endif"は解釈される。":if"とそれに対応する":endif"に挟まれた内 -容は無視される。":if"の後に続く引数も無視される。この":if"コマンドはネスティン -グが可能である。しかし必ず行の先頭に書かれている必要がある。":else"コマンドは -認識されない。 - -|+eval|機能が存在しなかった場合、どのようにコマンドが実行を免れるかの例: > - - :if 1 - : echo "Expression evaluation is compiled in" - :else - : echo "You will _never_ see this message" - :endif - -============================================================================== -11. サンドボックス *eval-sandbox* *sandbox* *E48* - -オプション 'foldexpr', 'formatexpr', 'includeexpr', 'indentexpr', -'statusline', 'foldtext' はサンドボックスの中で評価される。これによって、悪質 -な副作用を持つ式からの保護がなされている。これによって、これらのオプションが -モードラインから設定された場合にある種の安全性がもたらされている。tagsファイル -からのコマンドが実行されたときとコマンドラインでのCTRL-R =に対してもサンドボッ -クスが使われる。 -コマンド|:sandbox|に対してもサンドボックスが使われる。 - -サンドボックス内では以下の事が禁止される: - - バッファの変更 - - マッピング、オートコマンド、関数、ユーザ定義コマンドの定義・変更 - - ある種のオプションの設定 (|option-summary|を参照) - - ある種のVim定義済変数(v:)の設定 (|v:var|を参照) *E794* - - シェルコマンドの実行 - - ファイルの読み書き - - 他のバッファへの移動・ファイルを開く - - Python, Perl等のコマンドの実行 -これは100%安全と保証するものではない。しかし、ある種の攻撃を防ぐ事はできるはずで -ある。 - - *:san* *:sandbox* -:san[dbox] {cmd} サンドボックス内で{cmd}を実行する。モードラインから設 - 定された可能性のあるオプションを評価するために使える。 - 例: 'foldexpr'. - - *sandbox-option* -いくつかのオプションは式を含んでいる。その式を評価するときはセキュリティ上の危 -険性を回避するためにサンドボックス内で行わねばならない。しかしサンドボックスに -は制限があるので、これはそのオプションが安全でない場所で設定されたときのみ行わ -れる。ここで「安全でない」とは次の場合をいう: -- カレントディレクトリの .vimrc や .exrc を source するとき -- サンドボックス内で実行している最中 -- モードラインから設定された値 - -Note サンドボックス内でオプションの値を退避し、それから復元した場合、そのオプ -ションはやはりサンドボックス内で設定されたものとマークされる。 - -============================================================================== -12. テキストロック *textlock* - -いくつか状況においては、バッファを変更する・他のウィンドウへジャンプするなど、 -Vimの現在の処理を混乱させたり破壊してしまうような動作は禁止される。これはVimが -実際に他の何かをしているときに起こることに対して当てはまる。例えば、 -'balloonexpr'の評価は、マウスカーソルがある位置に留まっているどんなときにでも -起こりうる。 - -テキストロックが有効になっているときは、以下の事が禁止される: - - バッファの変更 - - 他のバッファやウィンドウへの移動 - - 他のファイルを開く - - ウィンドウを閉じる。Vimを終了する。 - - など。 - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/evim-ja.UTF-8.1 b/runtime.old/doc/evim-ja.UTF-8.1 deleted file mode 100644 index 1b7a657eb..000000000 --- a/runtime.old/doc/evim-ja.UTF-8.1 +++ /dev/null @@ -1,51 +0,0 @@ -.TH EVIM 1 "2002 February 16" -.SH 名前 -evim \- easy Vim, モードレスエディタ Vim -.SH 書式 -.br -.B evim -[options] [file ..] -.br -.B eview -.SH 説明 -.B eVim -は -.B Vim -を起動して、モードレスエディタとして動作するためのオプションを設定します。 -Vim の動作が point-and-click エディタのような動作になります。 -MS-Windows のメモ帳のような動作です。 -.B eVim -は常に GUI で起動し、メニューとツールバーを表示します。 -.PP -どうしても Vim の操作に馴染めない場合に使ってください。 -編集効率は下がります。 -.PP -.B eview -は同様に、読み込み専用モードで起動します。evim \-R と同じです。 -.PP -引数や Vim についての詳細は vim(1) を参照してください。 -.PP -オプション 'insertmode' が設定され、テキストを直接、入力できるようになりま -す。 -.br -コピーとペーストのキー操作が MS-Windows と同じになるように、マップが設定され -ます。 -CTRL-X が切り取り、CTRL-C がコピー、CTRL-V がペーストです。 -標準の CTRL-V の操作は CTRL-Q に割り当てられます。 -.SH オプション -vim(1) を参照してください。 -.SH ファイル -.TP 15 -/usr/local/lib/vim/evim.vim -eVim の初期化スクリプト。 -.SH 別名 -evim は "gumbies のための Vim" とも呼ばれています。 -evim を使っているあなたはきっと、頭にハンカチをかぶっているのです。 -(訳注: gumbies は Monty Python に登場するおもしろ集団。ハンカチをかぶっ -ている。) -.SH 関連項目 -vim(1) -.SH 著者 -.B Vim -のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 -メニューの Help/Credits を参照してください。 diff --git a/runtime.old/doc/farsi.jax b/runtime.old/doc/farsi.jax deleted file mode 100644 index 95db3bfc7..000000000 --- a/runtime.old/doc/farsi.jax +++ /dev/null @@ -1,271 +0,0 @@ -*farsi.txt* For Vim バージョン 7.3. Last change: 2010 Aug 07 - - - VIM REFERENCE MANUAL by Mortaza Ghassab Shiran - -ペルシア語マッピングと右横書き *farsi* *Farsi* - -{Vi にはない機能です} - - *E27* -ペルシア語マッピングと右横書きを使うには、Vimをコンパイルするときに |+farsi| -を有効にする必要があります。 - -これらの機能は Mortaza G. Shiran <shiran@jps.net> によって作成されました。 - - -はじめに --------- -右横書きのファイルでは、画面の右から左へ向かって文字が表示されます。そのような -ファイルはペルシア語のドキュメントを書いたり、ファックスを作成したり、ペルシア -語のメモ書きなどをするときにとても便利です。 - -コマンド、プロンプト、ヘルプファイルなどはペルシア語ではないため、ユーザーイン -ターフェースは Vi 標準のインターフェースと変わりません。 - - -特色 ------ -o 普通に Vim を使うように右横書きのファイルを編集できます。 - -o 右横書きウィンドウでファイルを表示したり編集したりします。書字方向はウイン - ドウ単位で設定できます。そのため、同じファイルを右横書きと左横書きの両方で - 同時に表示できます。 - -o 普通の Vim と互換性があります。ほとんどすべての機能は右横書きモードでも使え - ます。 (下記のバグを参照) - -o キーマップと逆挿入モード (|ins-reverse|) はコマンド 1 つで切り替えできま - す。 - -o 逆挿入モード (|ins-reverse|) から切り替わったときに、正常な位置にカーソルを - 移動します (それが可能な場合のみ)。 - -o ペルシア語モードでも、数字は左横書きで挿入されます。そして、数字以外の文字 - が入力されると、その文字は数字の左側に挿入されます。 - -o 特別な端末は必要ありません。右横書き機能はハードウェアにはまったく依存して - いません。必要なのはペルシア語フォントのみです。 - -o コマンドラインでも、ペルシア語キーマップを使って逆挿入モードで入力できます。 - -o 左横書きモードと右横書きモードは F8 キーで切り替えられます。 - -o ペルシア語の ISIR-3342 標準エンコーディングと Vim Farsi は F9 ファンクショ - ンキーで切り替えられます。これは、右横書きのテキストに対してのみ意味をなす - ので、右横書きモードでのみ利用できます。 - -ペルシア語フォント *farsi fonts* ------------------- - -次のファイルは '$VIM/farsi/fonts' ディレクトリ以下にあります: - - + far-a01.pcf Linux や Unix システムの X Windows フォント - + far-a01.bf SunOS の X Windows フォント - + far-a01.f16 Linux や Unix システムのスクリーンフォント - + far-a01.fon Windows NT/95/98 の固定幅フォント - + far-a01.com DOS のスクリーンフォント - - -フォントのインストール ----------------------- - -o MS Windows (NT/95/98) にフォントをインストールする場合 - - 'コントロールパネル' から、'フォント' を選択します。'ファイル' メニューから - '新しいフォントのインストール...' を選択し、'far-a01.fon' を開きます。後は - インストールガイドに従ってください。 - NOTE: この方法でインストールできなかったという報告がいくつかありました。解 - 決方法は分かりません。 - -o X Window System にフォントをインストールする場合 (Unix/Linux) - - お使いのシステムに合わせて、far-a01.pcf.Z または far-a01.pcf.gz をインス - トールするディレクトリにコピーします。そのディレクトリに移動し、次のコマン - ドを実行します: - - > mkfontdir - > xset +fp path_name_of_farsi_fonts_directory - -o X Window System にフォントをインストールする場合 (SunOS) - - インストールするディレクトリに far-a01.bf をコピーします。そのディレクトリ - に移動し、次のコマンドを実行します: - - > fldfamily - > xset +fp path_name_of_fonts_directory - -o ASCII スクリーンフォントをインストールする場合 (Unix/Linux) - - Linux システムでは、far-01.f16 を /usr/lib/kbd/consolefonts にコピーし、 - "setfont far-a01.f16" と、フォント設定プログラムを実行します。他のシステム - (SCO Unix など) では、システム管理マニュアルのフォントインストールの項目を - 参照してください。 - -o ASCII スクリーンフォントをインストールする場合 (DOS) - - システム電源導入後、最初に Vim を起動する前に、フォントアップロードプログラ - ムの far-a01.com を実行して、ペルシア語フォントをアップロードします。 - - -使い方 ------- -Vim を起動する前に、ペルシア語モードが実行できるように環境を設定してください。 -ペルシア語フォントのインストールに加えて、いくつかのシステム環境では、キーコー -ドマッピング、ASCII スクリーンモードでのグラフィックカードのロード、IO ドライ -バの 8 ビット透過設定などを設定する必要があります。 - -o ペルシア語フォントを設定する - - + GUI では、'guifont' に far-a01 を設定します。Vim のコマンドラインで - ':set guifont=far-a01' と入力してください。 - - Vim を起動したときに自動的に設定されるようにするには、.vimrc ファイルに - ':set guifont=far-a01' と書き加えます。 - NT/95/98 プラットホームでは .vimrc ではなく _vimrc です。 - - X Window System では、'-fn far-a01' オプションで Vim を起動することもで - きます。 - - + xterm で Vim を使う場合は、xterm をペルシア語フォントで起動します (例 - kterm -fn far-a01)。そして、kterm内で Vim を起動します。 - - + DOS で Vim を使う場合は、最初に Vim を起動する前に、フォントアップロード - プログラムの far-a01.com を実行して、ペルシア語フォントをアップロードし - ます。 - -o ペルシア語キーマップを有効にする - - ペルシア語キーマップを有効にするには、'altkeymap' または 'fkmap' を設定しま - す。それには、Vim のコマンドラインで ':set akm' または ':set fk' と入力して - ください。常にこの設定を使うには、':set akm' または ':set fk' を、.vimrc - ファイルに書き加えてください。NT/95/98 プラットフォームでは .vimrc ではな - く_vimrc です。 - - 初期設定では第 2 言語としてペルシア語キーマップが使われますが、これを切り替 - えるには、':set noakm' と入力して 'altkeymap' をオフに設定します。 - -o 右横書きのペルシア語モード - - 初期設定では、Vim は左横書きモードで起動します。ウィンドウの書字方向を変え - るには次の方法があります。 - - + -F オプションを使って Vim を起動する (例: vim -F ...)。 - - + F8 ファンクションキーを使って右横書きを左横書きを切り替える。 - - + 左横書きモードのときに、コマンドラインで 'set rl' と入力する ('rl' は - rightleft の省略形です)。 - - + 常に右横書きモードで Vim を起動するには、'set rl' を .vimrc ファイルに書 - き加えます。 - -エンコーディング ----------------- - -テキストのエンコーディングは ISIR-3342 を拡張したものです。Vim拡張ISIR-3342 -と 標準ISIR-3342 は、組み込み関数で変換できます。 - -文章の可搬性のため、どのプラットフォーム (UNIX、NT/95/98、MS DOS、...) でも同 -じエンコーディングが使われます。 - - -o キーボード - - + 挿入/置換モードでは、CTRL-_ でペルシア語 (akm) とラテン語を切り替えま - す。以下のように動作します。 - - + CTRL-_ で切り替えると、編集モードで入力したテキストの最後の位置へカーソ - ルが移動します。 - - + コマンドラインモードでは、CTRL-_ はペルシア語 (akm) とラテン語のキーマッ - プのみ切り替えます。ペルシア語のテキストは逆挿入モードで入力されます。 - - + F8 キーで左横書きと右横書きを切り替えられます。 - - + F9 キーで 標準ISIR-3342 と Vim拡張ISIR-3342 のエンコーディングを切り替 - えられます (右横書きモードでのみ機能します)。 - - + ペルシア語キーマップはイランの ISIRI-2901 標準がベースになっています。 - 次の表は、ペルシア語(akm) モードが設定されている場合のキーマップです: - - ------------------------------------- - ` 1 2 3 4 5 6 7 8 9 0 - = - ‍ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰ - = - ------------------------------------- - ~ ! @ # $ % ^ & * ( ) _ + - ~ ! ٬ ٫ ﷼ ٪ × ، * ( ) ـ + - ------------------------------------- - q w e r t z u i o p [ ] - ض ص ث ق ف ظ ع ه خ ح ج چ - ------------------------------------- - Q W E R T Z U I O P { } - ْ ٌ ٍ ً ُ ك َ ّ ] [ { } - ------------------------------------- - a s d f g h j k l ; ' \ - ش س ی ب ل ا ت ن م ک گ \ - ------------------------------------- - A S D F G H J K L : " | - ؤ ئ ي إ أ آ ة » « : ؛ | - ------------------------------------- - < y x c v b n m , . / - < غ ط ز ر ذ د پ و . / - ------------------------------------- - > Y X C V B N M < > ? - > ِ ط ژ ر ‌ د ء < > ؟ - ------------------------------------- - -訳注: 合成文字は表示のためにスペースと合成してあります。 -訳注: farsi->unicode変換がよくわからないので微妙に違うところがあると思います。 -訳注: http://www.farsiweb.info/table/2901-unicode.txt -訳注: http://www.farsiweb.info/table/3342.txt - -Note: - ‌ はペルシア語の PSP を意味します (スペースなしの区切り) - - ‍ はペルシア語の PCN を意味します (ハムゼ(HANZE)属性のため) - -訳注: PSP (pseudo space) -訳注: PCN (pseudo connection) - -制限事項 --------- - -o 挿入モードと置換モードで 'fkmap' (ペルシア語モード) がオンのとき、CTRL-B は - 使えません。 - -o ペルシア語とラテン語のキーマップを切り替えた場合、繰り返しバッファはリセッ - トされて空になります。つまり、同じモードにいる間だけ ('.'を使って) 最後の変 - 更を繰り返せます。 - -o ペルシア語モードで数字を入力すると、繰り返しバッファはリセットされて空にな - ります。つまり、数字を入力した後は、 ('.'を使って) 最後の変更を繰り返せませ - ん。 - -o 左横書きモードとペルシア語モードを使っているときは CTRL-R は使えません。 - -o 右横書きモードでは、'ラテン語' のパターンを検索できません。しかし、パターン - を逆向きに書けば検索できます。 - -o コマンドラインモードでは、数字を左横書きで入力することはできません。さら - に、使いやすくするために、キーマップのロジックは制限されています。 - -o X Window System 環境の端末エミュレータ xterm で Vim のペルシア語モードを使 - う場合、ANSI 互換の xterm を使う必要があります。これは、標準の xterm では、 - 文字番号が 128 より大きい文字は特別な意味を持ってしまうからです。 - - Note: X Window System 環境の GUI Vim では、ペルシア語モードはうまく機能しま - す。xterm などの他の端末エミュレータは必要ありません。 - - -バグ ------ -挿入モードか置換モードでペルシア語モードをオンにして、カーソルを移動するのと、 -文字を入力するのを何度か繰り返します。そしてアンドゥすると、カーソルを移動した -時点までしかアンドゥされません。しかし、何度もアンドゥすることで元のテキストま -で戻ることができます。現在行の変更をすべてアンドゥするために U を使うこともで -きます。 - -バグについては |rileft.txt| も参照してください。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/filetype.jax b/runtime.old/doc/filetype.jax deleted file mode 100644 index 592ec3aef..000000000 --- a/runtime.old/doc/filetype.jax +++ /dev/null @@ -1,611 +0,0 @@ -*filetype.txt* For Vim バージョン 7.3. Last change: 2011 Jun 19 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -ファイル形式 *filetype* *file-type* - -1. ファイル形式 |filetypes| -2. ファイル形式別プラグイン |filetype-plugins| -3. 標準で付属する形式別プラグインの解説 |ftplugin-docs| - -|autocmd.txt|も参照。 - -{これらのコマンドはViには存在しない} - -============================================================================== -1. ファイル形式 *filetypes* *file-types* - -Vimは編集しているファイルの形式を検出することができる。これは特定のテキストに -対してファイル名をチェックしたり、場合によってはその内容を調べることで実現され -ている。 - - *:filetype* *:filet* -ファイル形式の検出を有効化するには、vimrcファイルでこのコマンドを使用する: > - :filetype on -新しいファイルや既存のファイルを編集する際には必ず、Vimはファイルの形式を認識 -し'filetype'オプションを設定しようと試みる。それが構文強調やオプションの設定、 -その他を行なうために使われるFileTypeイベントのきっかけとなる。 - -NOTE: Viコンパチブルとは全てのオプションがグローバルであることを意味するので、 -ファイル形式識別と'compatible'は同時に使うことはできない。既に'compatible'を設 -定している場合には、それを解除する必要がある。 - -詳細: ":filetype on"コマンドは次のファイルのうち1つをロードする。 - Amiga $VIMRUNTIME/filetype.vim - Mac $VIMRUNTIME:filetype.vim - MS-DOS $VIMRUNTIME\filetype.vim - RiscOS Vim:Filetype - Unix $VIMRUNTIME/filetype.vim - VMS $VIMRUNTIME/filetype.vim - このファイルはBufNewFileとBufReadイベントに対する自動実行コマンドを定 - 義するVimスクリプトファイルである。ファイル形式がファイル名から決定で - きない時には、ファイルの内容を検出するために$VIMRUNTIME/scripts.vimが - 使用される。 - GUIで使用しているとき、またはGUIを開始しようとしているときには、 - menu.vimも読み込まれる。これを避けるには|'go-M'|を参照。 - -独自のファイルタイプを追加するには、下の|new-filetype|を参照。あるファイルタイ -プについてのヘルプを検索するには、ファイルタイプ名の前に "ft-" をつけ、さらに -必要に応じて "-syntax", "-indent", "-plugin" をつける。例: > - :help ft-vim-indent - :help ft-vim-syntax - :help ft-man-plugin - -ファイル形式を自動的に検出できなかった場合や、間違った形式になってしまった場合 -には、'filetype'オプションを手動で設定するか、ファイルにモード行(modeline)を追 -加する選択肢がある。例として、IDLファイルに設定するにはこのコマンドを使うか: - :set filetype=idl -この|modeline|をファイルに追加する: - /* vim: set filetype=idl : */ ~ - - *:filetype-plugin-on* -ファイル形式別プラグインのロードを有効化するには: > - :filetype plugin on -まだファイル形式検出が有効になっていない時には、同時に有効化される。 -これは実際には'runtimepath'にある"ftplugin.vimをロードする。 -結果的にファイルが編集される時に対応するプラグインファイルがロードされる(ただ -し検出したファイル形式に合致するプラグインファイルがあった時のみ)。 -|filetype-plugin| - - *:filetype-plugin-off* -ファイル形式別プラグインを無効化するには: > - :filetype plugin off -ファイル形式の検出自体は無効にならない。しかしながらファイル形式の検出を無効に -した場合には、プラグインもロードされなくなる。 -これは実際には'runtimepath'にある"ftplugof.vim"をロードする。 - - *:filetype-indent-on* -ファイル形式別インデントのロードを有効化するには: > - :filetype indent on -まだファイル形式検出が有効になっていない時には、同時に有効化される。 -これは実際には'runtimepath'にある"indent.vimをロードする。 -結果的にファイルが編集される時に対応するインデントファイルがロードされる(ただ -し検出したファイル形式に合致するインデントファイルがあった時のみ)。 -|filetype-plugin| - - *:filetype-indent-off* -You can disable it again with: > -ファイル形式別インデントを無効化するには: > - :filetype indent off -ファイル形式の検出自体は無効にならない。しかしながらファイル形式の検出を無効に -した場合には、インデントファイルもロードされなくなる。 -これは実際には'runtimepath'にある"indoff.vim"をロードする。 -そうすると、これから開くファイルに対して自動インデントが無効になる。すでに開い -ているファイルに対しては何も変わらない。すでに開いているファイルに対して自動イ -ンデントを無効にするには 'autoindent', 'cindent', 'smartindent', 'indentexpr' -をオフにする。 - - *:filetype-off* -ファイル形式の検出を無効にするには、次のコマンドを使用する: > - :filetype off -これはプラグイン("plugin")とインデント("indent")のフラグを保持はするが、ファイ -ル形式は検出されなくなるので、次に":filetype on"をするまではそれらは動作しなく -なる。 - - -概要: *:filetype-overview* - -コマンド 検出 プラグイン インデント ~ -:filetype on 有効 変化なし 変化なし -:filetype off 無効 変化なし 変化なし -:filetype plugin on 有効 有効 変化なし -:filetype plugin off 変化なし 無効 変化なし -:filetype indent on 有効 変化なし 有効 -:filetype indent off 変化なし 変化なし 無効 -:filetype plugin indent on 有効 有効 有効 -:filetype plugin indent off 変化なし 無効 無効 - -現在の状態を知るには次のようにタイプする: > - :filetype -このような出力が得られる: > - filetype detection:ON plugin:ON indent:OFF - -ファイル形式は構文強調にも利用される。":syntax on"コマンドが使用されると、ファ -イル形式検出もインストールされる。":filetype on" の後に ":syntax on"を実行する -必要はない。 - -特定のファイル形式を無効にするには、自分のファイル形式ファイルに1行追加する。 -|remove-filetype|参照。 - - *filetype-detect* -再びファイル検出を有効化するには: > - :filetype detect -空のファイルから編集を始めて、ファイル形式を判定するのに充分なテキストをタイプ -してからコレを使用する。例えば、シェルスクリプトの中で"#!/bin/csh"を入力してか -らということ。 - ファイル形式検出が無効になっていた時には、引数"on"が指定された時のように、 -初めに有効化される。 - - *filetype-overrule* -同じ拡張子が2つのファイル形式で使用されている時には、Vimはファイルがどのような -種類であるかを推測する。これは常に動作するわけではない。ある拡張子に対してどの -ファイル形式を使うか明示的に指定するのに、幾つかのグローバル変数を使うことがで -きる: - - ファイル名 変数 ~ - *.asa g:filetype_asa |ft-aspvbs-syntax| |ft-aspperl-syntax| - *.asp g:filetype_asp |ft-aspvbs-syntax| |ft-aspperl-syntax| - *.asm g:asmsyntax |ft-asm-syntax| - *.prg g:filetype_prg - *.pl g:filetype_pl - *.inc g:filetype_inc - *.w g:filetype_w |ft-cweb-syntax| - *.i g:filetype_i |ft-progress-syntax| - *.p g:filetype_p |ft-pascal-syntax| - *.sh g:bash_is_sh |ft-sh-syntax| - *.tex g:tex_flavor |ft-tex-plugin| - - *filetype-ignore* -特定のファイルが検査されないようにするには、g:ft_ignore_pat 変数を使います。こ -の変数はデフォルトで次のように設定されています。 > - :let g:ft_ignroe_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$' -この設定は圧縮ファイルを検査しないようにしています。 - - *new-filetype* -使いたいファイル形式がVimに検出されない(存在しない)場合には、その形式を追加す -る4つの方法がある。どちらにせよファイル$VIMRUNTIME/filetype.vimは変更するべき -ではない。そのファイルは新しいVimをインストールする際に上書されるのだから。 - -A. デフォルトのファイルタイプの検査をくつがえす。 - この方法はファイルタイプごとにファイルを作ることで機能する。不便な点は - ファイルがたくさんになってしまうこと。便利な点は適切なディレクトリにファ - イルを置くだけで機能すること。 - *ftdetect* - 1. ユーザランタイムディレクトリを作成する。通常は'runtimepath'オプション - に記載される最初の項目使えば良い。次にそのディレクトリに"ftdetect"とい - うディレクトリを作成する。UNIXを例に挙げる: - :!mkdir ~/.vim - :!mkdir ~/.vim/ftdetect - - 2. ファイル形式を検出する自動実行コマンドを含むファイルを作成する。 - 例: > - au BufRead,BufNewFile *.mine set filetype=mine -< Note "augroup" コマンドは要らない。そのファイルを読み込むときに既に定 - 義されている。パターンに "*" を使いファイルの内容から判断することもで - きる。 - そのファイルを例えば "mine.vim" という名前で先程の "ftdetect" ディレク - トリに保存する。UNIXを例に挙げる: > - :w ~/.vim/ftdetect/mine.vim -< - 3. 新しいファイル形式の検出を有効化するにはVimを再起動しなければならない。 - - "ftdetect" ディレクトリの中のファイルはデフォルトの検査のあとに使われるの - で、それ以前に決定したファイルタイプを変更することができる。しかしここで - |:setfiletype|を使えば、それ以前に決定したファイルタイプをそのままにしてお - くこともできる。 - -B. デフォルトのファイルタイプの検査の後にファイルタイプを決定する。 - - 上と同様。ただし、':setfiletype'を使って無条件に'filetype'を設定する。 - これはまだファイルタイプがまだ認識されていないときだけ'filetype'を設定す - る。次に例を示す。 > - au BufRead,BufNewFile *.txt setfiletype text -< - すでに認識されたファイルタイプをコマンドから使うことができる。例えば、ファ - イルタイプが"pascal"だった時にファイルタイプを"mypascal"に設定するには。 > - au BufRead,BufNewFile * if &ft == 'pascal' | set ft=mypascal - | endif - -C. ファイル形式が名前だけで検出できる場合。 - 1. ユーザランタイムディレクトリを作成する。通常は'runtimepath'オプションに - 記載される最初の項目使えば良い。UNIXを例に挙げる: > - :!mkdir ~/.vim -< - 2. ファイル形式を検出する自動実行コマンドを含むファイルを作成する。 - 例: > - " 独自の filetype ファイル - if exists("did_load_filetypes") - finish - endif - augroup filetypedetect - au! BufRead,BufNewFile *.mine setfiletype mine - au! BufRead,BufNewFile *.xyz setfiletype drawing - augroup END -< このファイルを"filetype.vim"としてユーザランタイムディレクトリに保存す - る。UNIXを例にあげる: > - :w ~/.vim/filetype.vim -< - 3. 新しいファイル形式の検出を有効化するためにVimを再起動する。 - - 作成したfiletype.vimはデフォルトのFileType自動実行コマンドがインストールさ - れる前に読み込まれる。そのため新しく作成した自動実行コマンドが先に適合し、 - ":setfiletype"コマンドがこれ以後に他の自動実行コマンドにより'filetype'が設 - 定されないことを保証する。 - *new-filetype-scripts* -D. ファイル形式がファイルの内容を調べる事によってのみ検出可能な場合。 - - 1. ユーザランタイムディレクトリを作成する。通常は'runtimepath'オプションに - 記載される最初の項目使えば良い。UNIXを例に挙げる: > - :!mkdir ~/.vim -< - 2. ファイルの内容で形式を決定するVimスクリプトを作成する。例: > - if did_filetype() " 既にファイル形式が決定している - finish " ..その時はこのチェックは行なわない - endif - if getline(1) =~ '^#!.*\<mine\>' - setfiletype mine - elseif getline(1) =~? '\<drawing\>' - setfiletype drawing - endif -< より多くの例については$VIMRUNTIME/scripts.vimを参照。 - このファイルを"scripts.vim"としてユーザランタイムディレクトリに保存す - る。UNIXを例にあげる: > - :w ~/.vim/scripts.vim -< - 3. これだけで検出は正しく動作し、Vimを再起動する必要は無い。 - - 新しく作成したscripts.vimはデフォルトのファイル形式チェックの前に読み込まれ - ので、$VIMRUNTIME/scripts.vimに書かれたデフォルトの判定規則を上書することが - できる。 - - *remove-filetype* -ファイル形式が誤って検出されたならば、(上を参考に)それを補正するfiletype.vimか -scripts.vimをインストールする。'filetype'に存在しない形式の名前を設定すれば、 -それ以降の検出スクリプトで別の値が設定されてしまうのを避けることができる: > - :set filetype=ignored - -複数人で使用する環境を設定していて、個々のユーザにはファイル形式を追加/削除さ -せたくないならば、ランタイムディレクトリに置いて全ユーザが共有するように -filetype.vimとscripts.vimを書く必要がある。そのスクリプトを置くディレクトリに -は'runtimepath'の示すうちのどれか1つを選択する。'runtimepath'の中に設定を置き -たいディレクトリが見あたらなければ、|system-vimrc|内で正しく追加する必要があ -る。既に設定されているデフォルトのディレクトリを変更しないように注意。 - - - *autocmd-osfiletypes* -NOTE: RISC OS サポートが削除されたため、このコードは現在無効化されている。将来 -これは 'filetype' オプションを使用するでしょう。 - -ファイルと共に「形式」を記録できるオペレーティングシステム(OS)では、ファイルが -ある「形式」だった時にだけ実行される自動コマンドを設定することができる。 - -実際の「形式」チェックはVimをどのプラットフォームで使用しているかに依存する; -詳細は使用しているシステムの解説書を参照のこと。 - -OSによる「形式」を利用するには自動実行コマンドの検出パターンの場所に、次の例に -示すように折カッコで囲んだ検出させたい「形式」のリストを書く: > - - :au BufRead *.html,<&faf;HTML> runtime! syntax/html.vim - -これは以下に適合する: - -- ファイル名が".html"で終了するあらゆるファイル -- 「形式」が"&faf" か "HTML"である全てのファイル。ただしここでいう「形式」とは - Vimのバージョン(稼動しているOS)によって定義される。未知の形式は適合しないと - みなされる。 - -「形式」とパターンを同時に指定することもできる (そのような場合には、両方供マッ -チする必要がある): > - - :au BufRead <&fff>diff* - -これは「形式」が"&fff"で名前が"diff"で始まるファイルに適合する。 - - - *plugin-details* -"plugin"ディレクトリは'runtimepath'オプションに示されているならば、どのディレ -クトリに置いても良い。そこに示された全てのディレクトリにあるプラグインが検索さ -れ読み込まれる。例えば、次のコマンドを実行すると: > - - set runtimepath - -次の内容が出力される: - - runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60 ~ - -この時Vimは以下に示すディレクトリとそれ以下にある全てのプラグインを読み込む: - - /etc/vim/plugin/ ~ - ~/.vim/plugin/ ~ - /usr/local/share/vim/vim60/plugin/ ~ - -最後の1つは$VIMRUNTIMEが展開されたものであることに注意。 - -プラグインが読み込まれていないらしい場合はどうすれば良いのか? Vim起動時に|-V| -引数を使用すれば何が起こっているか知ることができる: > - - vim -V2 - -多くのメッセージが表示されるが、プラグインの読み込みの前には特定の記述がなされ -る。それは次のように始まる: - - Searching for "plugin/**/*.vim" in ~ - -これを見ればVimがプラグインスクリプトをどこから探しているのかがわかる。 - -============================================================================== -2. ファイル形式別プラグイン *filetype-plugins* - -ファイル形式プラグインが有効になっていれば|:filetype-plugin-on|、プラグイン読 -込時にオプションが設定されキーマップが定義される。それらは全てバッファローカル -で、他のファイルに対しては決して作用しない。 - -ファイル形式により定義されるキーマップが自分で定義したキーマップの邪魔になるこ -ともあり得る。幾つかこれを回避する方法がある: -1. "maplocalleader"にキーマップの先頭に使用するキーシーケンスを設定する。例: > - :let maplocalleader = "," -< デフォルトのバックスラッシュ(\ 記号)に替えてカンマが全てのマップの始まりの - キーになる。|<LocalLeader>|も参照。 - -2. 独自のマップを定義する。例: > - :map ,p <Plug>MailQuote -< どのような機能が提供され、それにどのような文字列がキーマップされているの - か、プラグインファイルの説明をチェックする必要がある。 - 独自のキーマップはプラグインが読み込まれる (つまりその形式のファイルが読み - 込まれる) 前に定義する必要がある。そうすればプラグインはデフォルトキーマッ - ピングのインストールを行なわない。 - -3. 特定のファイル形式についてキーマップを無効化するならば、そのファイル形式名 - を含むある変数を設定する。ファイル形式"mail"のキーマップを無効にするには次 - のようにする: > - :let no_mail_maps = 1 - -4. ファイル形式による全てのキーマップを無効化するには次の変数を設定する: > - :let no_plugin_maps = 1 -< - - *ftplugin-overrule* -グローバルな($VIMRUNTIMEにある、システムが提供する)ファイル形式プラグインが -キッチリ望むように動作しない場合には、これを変更する方法が3通りある: - -1. 設定を追加する。 - 新しいファイル形式プラグインを作り、'runtimepath'の始めのほうに置く。一例と - して、UNIXではこのファイルを利用できる: > - vim ~/.vim/ftplugin/fortran.vim -< 追加したい設定やキーマップをこのファイルに記述する。グローバルプラグインは - これの後に読み込まれるので、ここで行なった設定は上書される可能性がある。そ - のような場合には以下の2つの方法のどちらかを利用する。 - -2. プラグインのコピーを作成し、そちらを変更する。 - 'runtimepath'の始めのほうにそのプラグインのコピーを置く。一例として、UNIXで - はこのように行なう: > - cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim -< そうすればコピーしたファイルを好きなように変更できる。これは変数 - b:did_ftpluginが設定されていれば、グローバルプラグインは読み込まれない仕組 - みになっていることによる。 - この方法には、配布されるプラグインが改良された際に、再びコピーし同じように - 変更しなければならない、という短所がある。 - -3. グローバルプラグインの後で読み込まれる設定で上書する。 - 'runtimepath'の最後に、新しいファイル形式プラグインを作成する。一例として、 - UNIXではこのファイルを利用できる: > - vim ~/.vim/after/ftplugin/fortran.vim -< このファイルの中では、変更したい設定をちょうど変更できる。 - -============================================================================== -3. 標準で付属する形式別プラグインの解説 *ftplugin-docs* - - -チェンジログ(CHANGELOG) *ft-changelog-plugin* - -(訳注)エントリ=日付ごとの区切り アイテム=日付内の項目 - -チェンジログファイルを簡単に扱うことを可能にする。いくつかの便利なコマンドや -マッピング、変数がある。 - -オプション: -'comments' フォーマットを崩さないように空に設定される。 -'textwidth' 標準的な値である78に設定される。 -'formatoptions' テキストを折り返すために 't' が加えられる。 - -コマンド: -NewChangelogEntry 適切にアイテムを追加する(以下参照)。 - -ローカルマッピング: -<Leader>o 上と同様に適切にアイテムを追加する(以下参照)。 - -グローバルマッピング: - NOTE: グローバルマッピングはあらかじめ - frplugin/changelog.vim を実行することで有効になる。 - 例えば - runtime ftplugin/changelog.vim - と |.vimrc| に書くようにして。 - (訳注)この例だと間違えてこのまま書いちゃいそう。 -<Leader>o カレントディレクトリに"ChangeLog"というファイルがあ - れば開き、既に開かれていればバッファを切替える。そし - て上記のローカルマッピング<Leader>oと同じように働 - く。 - -変数: -g:changelog_timeformat 非推奨。g:changelog_dateformatを使うこと。 -g:changelog_dateformat エントリに入れる日付(と時間)の書式。 - 使えるフォーマットは |strftime()| と同じ。 - デフォルトでは標準的に使われている "%Y-%m-%d" が設定 - されている。 -g:changelog_username ユーザーの名前とメールアドレス。 - デフォルトは環境変数とシステムファイルから推定され - る。まずカレントユーザーについての情報を得るために - /etc/passwd を探す。そこの最初の区切りにユーザーの実 - 名があることを期待している。次に環境変数の$NAMEを - チェックする。最後にアドレスを得るために`whoami`と - `hostname`を実行する。最終的に次のような値を決定す - る。 > - Full Name <user@host> -< -g:changelog_new_date_format - エントリを作成するときの書式。 - 次の特別な文字が使える: - %% 一つの '%' が入る - %d 上記で定義した日付 - %u 上記で定義したユーザーの名前 - %c 作成後のカーソルの位置 - デフォルトは "%d %u\n\n\5* %c\n\n"。これは次のように - なる ( | はカーソルの位置を示している。しかし、行頭 - の | は行の始まりを表す) > - |2003-01-14 Full Name <user@host> - | - | * | -< -g:changelog_new_entry_format - アイテムを作成するときの書式。 - 次の特別な文字が使える: - %c 作成後のカーソルの位置 - デフォルトは "\t*\c"。これは次のようになる > - | * | -< -g:changelog_date_entry_search - 日付エントリを探すための検索パターン。 - g:changelog_new_date_formatと同じ特別な文字が使え - る。デフォルトは '^/\s*%d\_s*%u' で、次のような行 > - |2003-01-14 Full Name <user@host> -< を見つける。 - -g:changelog_date_end_entry_search - 日付エントリの終端を探すための検索パターン。 - g:changelog_new_date_formatにおけるトークンと同じもの - が使用できる。デフォルトは'^\s*$'で、空白文字のみを含 - む行または完全な空行を検索する。 - -b:changelog_name *b:changelog_name* - チェンジログファイルの名前。 - 既定値は 'ChangeLog'。 - -b:changelog_path - カレントバッファに使うチェンジログのパス。 - 既定では空文字列で、カレントバッファと同じディレクトリ - から |b:changelog_name| という名前のファイルが検索され - る。それが見つからない場合は、カレントバッファの親 - ディレクトリを検索する。ファイルが見つかるか、それ以上 - 上がれなくなるまで、再帰的にこれが繰り返される。 - -b:changelog_entry_prefix - 新しいエントリのプレフィックスを生成するための関数の名 - 前を指定する。関数は引数を取らず、プレフィックスの文字 - 列を返す。関数は空文字を返しても構わない。 - デフォルトでは ChangeLog のパスとカレントバッファのパ - スの間の最短パスが使用される。 - 将来的には他の変数コンテキスト (例えば g:) でも指定で - きるようになる予定です。 - -チェンジログエントリは適切な位置に挿入される。現在の日付とユーザーを得た後 -に、その日付とユーザーのエントリをファイルから探し、見つかればその下にアイテ -ムを加える。なければ新しいエントリとアイテムをファイルの先頭に加える。 - - -フォートラン(FORTRAN) *ft-fortran-plugin* - -オプション: -'expandtab' .vimrcでfortran_have_tabsが指定されなければ、フォートラン標準 - に従ってタブ文字を避けるために有効にする。 -'textwidth' フォートラン標準に従って固定形式のソースでは72に、自由形式の - ソースでは80に設定される。 -'formatoptions' コードとコメントを分けて、長い行を保持するように設定される。 - これにより|gq|でコメントを整形できる。 -fortran_have_tabsについての議論とソース形式の判定法については -|ft-fortran-syntax|を参照。 - - -GIT COMMIT *ft-gitcommit-plugin* - -現在のコミットの差分をプレビューウィンドウに表示する :DiffGitCached というコマ -ンドが提供されている。このコマンドを実行すると、その引数をつけて "git diff ---cached" が実行される。 - - -メール(MAIL) *ft-mail-plugin* - -オプション: -'modeline' トロイの木馬の危険を避けるのと、「件名」に含まれる"Vim:"がエ - ラーメッセージの原因となる可能性を排除するために、モード行はオ - フになる。 -'textwidth' 72に設定する。e-mailでは良く推奨される値。 -'formatoptions' テキストを折返し、新しい行ではコメントリーダを繰り返すをように - 設定。引用記号の">"が繰り返される。 - これにより|gq|で引用文を整形できる。 - -ローカルキーマップ: -<LocalLeader>q or \\MailQuote - ビジュアルモードでは選択されたテキストを、ノーマルモードではカーソルの - 位置からファイル末端までのテキストを引用する。これは全ての行に "> " が - 挿入されることを意味している。 - -MAN *ft-man-plugin* *:Man* - -マニュアルページを洗練された方法で表示する。ユーザーマニュアルの -|find-manpage|もご覧ください。 - -マニュアルページを読み込む前に":Man"を利用するには、起動vimrcファイルでこのス -クリプトを読み込む必要がある: > - - runtime ftplugin/man.vim - -オプション: -'iskeyword' マニュアルページの名前の上でCTRL-]を使えるようにするために文字 - '.' が追加される。 - -コマンド: -Man {name} {name} についてのマニュアルページを表示する。 -Man {number} {name} - {number} セクションの {name} に付いてのマニュアルページを表示 - する。 - -グローバルキーマップ: -<Leader>K カーソル下の単語についてのマニュアルページを表示する。 - -ローカルキーマップ: -CTRL-] カーソルの下の単語についてのマニュアルページへ移動する。 -CTRL-T 直前のマニュアルページへ戻る。 - - -PDF *ft-pdf-plugin* - -PDF ファイル内をジャンプするため、タグスタックをシミュレートする <C-]> と<C-T> -という2つのマップが提供されている。次のものがタグとして扱われる: - -- "startxref" の後から xref テーブルまでのバイトオフセット -- トレイラー内の /Prev キーから前の xref テーブルへのバイトオフセット -- xref テーブル内の "0123456789 00000 n" という形式の行 -- PDF 内の任意の位置における "1 0 R" のようなオブジェクト参照 - -これらのマップは次のコマンドで無効化できる > - :let g:no_pdf_maps = 1 -< - -RPM SPEC *ft-spec-plugin* - -このプラグインに関する説明は非常に多いので、別のファイル |pi_spec.txt| に記述 -してある。 - -SQL *ft-sql* - -このプラグインについての解説は長くなるので、別のファイルに分割してある: -|ft_sql.txt| - - -TEX *ft-tex-plugin* - -*.tex ファイルの最初の行が次のような形なら > - %&<format> -ファイルタイプは次のどれかになる: plaintex (プレイン TeX), context (ConTeXt), -tex (LaTeX)。そうでなければ context か tex かを決定するためにファイル内から -キーワードを検索する。もしキーワードが見つからなければ既定値として plaintex に -なる。この既定値は、変数 g:tex_flavor を定義すれば変更することができる。次のど -れかのようにする: > - let g:tex_flavor = "plain" - let g:tex_flavor = "context" - let g:tex_flavor = "latex" -現在のところこれ以外のフォーマットは識別されない。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/fold.jax b/runtime.old/doc/fold.jax deleted file mode 100644 index cccb2b4f2..000000000 --- a/runtime.old/doc/fold.jax +++ /dev/null @@ -1,569 +0,0 @@ -*fold.txt* For Vim バージョン 7.3. Last change: 2010 May 13 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -折畳(Folding) *Folding* *folding* *folds* - -ユーザマニュアルの28章に折畳についての紹介がされている。|usr_28.txt| - -1. 折畳方法 |fold-methods| -2. 折畳コマンド |fold-commands| -3. 折畳オプション |fold-options| -4. 折畳の振舞 |fold-behavior| - -{Vi には折畳は無い} -{|+folding| 機能無しでコンパイルした場合には利用できない} - -============================================================================== -1. 折畳方法 *fold-methods* - -折畳を行なう方法は'foldmethod'オプションで設定できる。 - -'foldmethod'を"manual"以外の値に設定すると、存在している折畳は総て削除され新た -な折畳が作成される。"manual"に切換えた時には既存の折畳は削除されない。これを利 -用すればまず自動的に折畳を定義し、それから手動で変更することが可能である。 - -折畳方法は6つの中から選択できる: - manual 手動で折畳を定義する - indent インデントの数を折畳のレベル(深さ)とする - expr 折畳を定義する式を指定する - syntax 構文強調により折畳を定義する - diff 変更されていないテキストを折畳対象とする - marker テキスト中の印で折畳を定義する - - -手動(MANUAL) *fold-manual* - -折畳領域を定義するためにコマンドを手動で利用する。これはテキスト中の折畳を行な -う箇所をスクリプトにより解析するのに使うこともできる。 - -折畳のレベルは折畳の入れ子の深さとなる。ある行範囲の折畳レベルを増やすには、折 -畳がある同じ範囲に対して再び折畳を設定する。 - -手動折畳はファイルを放棄すると失われる。折畳を保存するには|:mkview|コマンドを -使用する。後に復元するには|:loadview|を使用する。 - - -インデント(INDENT) *fold-indent* - -折畳は各行のインデントにより自動的に定義される。 - -折畳レベルは各行のインデント量を、'shiftwidth'で割る(端数切捨て)ことで計算され -る。同じかより高い折畳レベルを持った一続きの範囲は1つの折畳を形成し、より高い -レベルを持った範囲はその中で入れ子の折畳となる。 - -折畳の入れ子は'foldnestmax'によって制限される。 - -ある行ではインデントを無視して直ぐ上か下の行のうち、低いほうの折畳レベルが使用 -される。無視されるのは完全な空行か、空白文字だけからなる行、および'foldignore' -の文字で始まる行である。'foldignore'の文字の前に空白文字があっても無視される。 -Cではプリプロセッサ行を無視するために"#"を使用する。 - -他の方法で無視する行を定義するには、'expr'の方法を使用する。'foldexpr'の中で、 -ある行のインデントを取得するのに、関数|indent()|を使うことができる。 - - -式(EXPR) *fold-expr* - -折畳は"indent"方式のように、折畳レベルによって自動的に定義される。'foldexpr'オ -プションの値は、各行についてこの折畳レベルを計算するためにスクリプトとして実行 -される。例: -タブで始まる一連の行範囲を1つの折畳にまとめる: > - :set foldexpr=getline(v:lnum)[0]==\"\\t\" -折畳レベルを計算するのにVimスクリプトの関数を呼び出す: > - :set foldexpr=MyFoldLevel(v:lnum) -空行で仕切られた「段落」を折畳とする: > - :set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1 -同じ事(「段落」を折畳に)をする別の表現: > - :set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1 - -バックスラッシュ(日本では \ 記号)が":set"の流儀で、通常とは異なるキャラクタ(空 -白文字、バックスラッシュ、ダブルクオート、その他、詳細は|option-backslash|参 -照)をエスケープしていることに注意。 - -式が評価される際の前提条件は以下の通り: -- その行について現在のバッファとウィンドウが常に存在している。 -- 変数"v:lnum"には評価対象となる行番号が設定されている。 -- 式の結果(戻り値)は以下の形式で折畳レベルを示す: - 値 意味 ~ - 0 対象行は折畳に含まれない - 1, 2, .. 対象行はこのレベルの折畳に含まれる - -1 折畳レベルを未定義とし、対象行の直前か直後の行のうち低 - い方を、対象行のレベルとする。 - "=" 直前の行と同じレベルを使用する - "a1", "a2", .. 直前の行のレベルを+1, +2して設定する - "s1", "s2", .. 直前の行のレベルを-1, -2して設定する - "<1", "<2", .. 指定したレベルの折畳を対象行で終了する - ">1", ">2", .. 指定したレベルの折畳を対象行から開始する - -折畳は直前の行の折畳レベルより高い(低い)行から開始(終了)されるので、折畳の開始 -(終了)マーク">1" ("<1") は明示的に指定する必要は無い。 - -式に副作用があってはならない。バッファ内のテキストや、カーソルの位置や、検索パ -ターンん、オプションその他。どれひとつ変更してはならない。 -ただし、注意深く行えば、変更してもそれを復元しておけばよい。 - -式にエラーがあるか、結果が認識できない時には、何のエラーメッセージも表示せずに -折畳レベルは0に設定される。'debug'オプションに"msg"を設定すれば、エラーメッ -セージが表示されるようになるので、デバッグに利用できる。 - -NOTE: 各行について式評価が実行されるので、この折畳方式は非常に動作が遅くなる可 -能性がある! - -"=", "a", そして"s"は極力避けるようにする。なぜならVimはそれらが使われると、折 -畳レベルが定義された行が見つかるまで戻って、幾度も検索を行なわなければならない -からだ。これは動作が遅くなることがある。 - -フォールドレベルを調べるには|foldlevel()|を使うのが便利です。レベルがわからな -いときは-1を返すことに注意してください。フォールドがその行で終わっているときに -は行頭のレベルを返します。 - -折畳が適切に更新されない場合があります。その場合は |zx| か |zX| を使って強制的 -に更新してください。 - - -構文(SYNTAX) *fold-syntax* - -折畳が"fold"引数を持つ構文要素によって定義される。 |:syn-fold| - -折畳レベルは入れ子によって定義される。入れ子の深さは'foldnestmax'によって制限 -される。 - -シンタックスの同期の設定に注意してください。これが正しく設定されていないと -フォールドが間違ったハイライトで表示されます。これは特に複数行にマッチするシン -タックスで問題になります。そのようなときには次のような力技があります: > - :syn sync fromstart - - -差分(DIFF) *fold-diff* - -テキストの変更された箇所とその近辺以外が自動的に折畳として定義される。 - -この方法は現在のウィンドウに対して'diff'オプションが設定されている時にだけ正し -く働き、変更点が表示される。そうでない場合バッファ全体が1つの大きな折畳となる。 - -コンテキスト(の行数)を指定するのに'diffopt'を使うことができる。これにより変更 -点の近辺の折畳に含まない行数を指定できる。下の例では8行表示するように設定して -いる: > - :set diffopt=filler,context:8 -省略した場合には6行が表示される。 - -'scrollbind'が設定されているとき、Vimは他のウインドウと見た目が同じになるよう -にフォールドを開いた状態に保とうとします。 - -印(MARKER) *fold-marker* - -テキスト中の印により折畳の開始と終了地点を指定する。これにより明確に折畳を設定 -することができる。また誤った行を含むことなく、折畳を削除・設定できる。通常 -'foldtext'オプションは折畳の行に表示されるテキストとして、印の直前のテキスト設 -定する。これにより折畳に名前を設定することが可能になる。 - -印には折畳レベルを含むことができ、また開始と終了で対になる文字を使うこともでき -る。必ずしも終了の印を加える必要はなく、また対がない印が無い場合の問題も避けら -れるので、レベルを含んだほうがより簡単である。例: > - /* グローバル変数 {{{1 */ - int varA, varB; - - /* 関数 {{{1 */ - /* funcA() {{{2 */ - void funcA() {} - - /* funcB() {{{2 */ - void funcB() {} - -折畳は印"{{{"で開始する。印の後ろの番号は折畳レベルを示す。現在の折畳レベルと -異なるレベルが印によって与えられた時に何が起こるかは、そのレベルの差に依存す -る: -1. 同じ折畳レベルの印が与えられた時には、前の折畳は終了し同じレベルの新たな折 - 畳が開始する。 -2. 高い折畳レベルの印を見つけた時には、入れ子の折畳が開始する。 -3. 低い折畳レベルの印を見つけた時には、指定されたレベル以上の全部の折畳を終了 - し、指定されたレベルで新たな折畳が開始する。 - -番号は折畳レベルを示す。0を使うことはできない(レベル0の印は無視される)。特定の -レベルの折畳を終了させるため "}}}" 数字を付けて使うことができる。その印の直後 -の行の折畳レベルは示されたレベルよりも1つだけ低くなる。Vimは指定されたレベルに -マッチする印を検索はしないことに注意(計算に時間がかかりすぎてしまうので)。 -例: > - - {{{1 - ここからレベル1の折畳 - {{{3 - ここからレベル3の折畳 - }}}3 - ここからレベル2の折畳 - -折畳を定義するのに対になる"{{{"と"}}}"を使用することもできる。折畳レベルは -"{{{"1つにつき1ずつ増加し、"}}}"1つにつき1ずつ減少する。印同士の対応関係を維持 -するように気をつけること!。例: > - - {{{ - ここからレベル1の折畳 - {{{ - ここからレベル2の折畳 - }}} - ここからレベル1の折畳 - -番号付きの印と番号無しの印を混ぜて使用することもできる。大きな折畳には番号付き -の印を使用し、関数中の小さな折畳などには番号無しの印を使うと便利だろう。一例を -挙げれば、ファイルの "構造体定義" や "ローカル変数" それから "関数定義" のよう -な部分にはレベル1(番号付き)の折畳を使用する。そして一つ一つの定義や関数実装に -はレベル2の折畳を使用し、関数内部(例えばあるブロックなど)には番号無しの印を使 -用する。こうしておけば関数の中で折畳を分割するような変更を行なう時に、印にレベ -ルを付け直す必要はなくなる。 - -印は'foldmarker'オプションにより変更できる。Vimユーザ間でファイルを交換できる -ようにするためには、このオプションのデフォルトである "{{{,}}}" は変更しないこ -とが推奨される。ファイルによってそれがどうしても必要な時(例えば別のエディタで -作成した折畳を示す異なる印を含んでいる時や、ファイル内容の制約によりデフォルト -の印が問題を起こすため、それを使うことができない場合)にだけ変えるように。 - - *fold-create-marker* -印による折畳を作成するのに "zf" コマンドを使用することができる。Vimがユーザに -代わって印を挿入する。Vimは'foldmarker'で指定された開始の印と終了の印を追加す -る。印は行末に追加される。'commentstring'が空でなければそれが使用される。 -これは次のような時には正しく働かない: -- 既に番号付き折畳が含まれている。Vimはそれをどのように扱えば良いか知らない。 -- 番号付き折畳の近くで、それらの印が邪魔になる場合。 -- 行がコメントの中で、'commentstring'が空ではなく、かつ入れ子コメントを使用で - きない場合。例えばC言語: /* {{{ */ を既に存在するコメントを消さずにその中に - 追加するようなこと。コメントの直前か直後に印を設定するか、もしくは手動で印を - 追加する必要がある。 -一般的に、既に番号付き折畳が存在する場合には、Vimに印を作成させるのは良いアイ -デアではない。 - - *fold-delete-marker* -印による折畳を削除するのに "zd" コマンドを使用することができる。Vimがユーザに -代わって印を削除する。Vimは'foldmarker'で指定された開始の印と終了の印を検索す -る。印の周りにある'commentstring'に適合するテキストは可能な限り削除される。 -これは次のような時には正しく働かない: -- ある行に印が1つ以上含まれていて、そのうち少なくとも1つがレベルを指定している - 場合。折畳を削除することで期待される効果どうりになるかどうかはチェックされる - ことなく、単に初めの折畳が1つ削除される。 -- 番号付き印で、複数の折畳を同時に開始したり終了するために使用されている場合。 - -============================================================================== -2. 折畳コマンド *fold-commands* *E490* - -全ての折畳コマンドは "z" で始まっている。ヒント: "z" は紙片を折った様子を横から -みた姿に見える。 - - -折畳の作成と削除 ~ - *zf* *E350* -zf{motion} or -{Visual}zf 折畳を作成する操作。 - 'foldmethod'が"manual" か "marker"の時だけ動作する。"manual"の - 時には新しい折畳は閉じられる。 - 'foldenable'がセット(有効化)される。 - |fold-create-marker|も参照。 - - *zF* -zF [count]行を折畳として作成する。"zf"と同じように動作する。 - -:{range}fo[ld] *:fold* *:fo* - {range}で示された範囲を折畳にする。"zf"と同様に動作する。 - - *zd* *E351* -zd カーソルの位置にある折畳を1つ削除する。カーソルが折畳になって - いる行にある場合には、その折畳が削除される。入れ子になった折畳 - は1レベル分が削除される。ビジュアルモードでは選択された範囲の - 全ての折畳(partially)が削除される。注意: これは期待したよりも - 余計に折畳を削除し易く、またアンドゥもできないので注意が必要。 - 'foldmethod'が"manual" か "marker"の時だけ動作する。 - |fold-delete-marker|も参照。 - - *zD* -zD カーソルの位置の折畳を再帰的に削除する。ビジュアルモードでは、 - 選択された範囲内の入れ子も含め全ての折畳(partially)が削除され - る。 - 'foldmethod'が"manual" か "marker"の時だけ動作する。 - |fold-delete-marker|も参照。 - - *zE* *E352* -zE ウィンドウにある全ての折畳を削除する。 - 'foldmethod'が"manual" か "marker"の時だけ動作する。 - |fold-delete-marker|も参照。 - - -折畳を開く・閉じる ~ - -'foldminlines'よりも少ない行数の折畳は常に開いたように表示される。従って以下の -コマンドは小さな折畳に関しては異なった働きを持つ。 - - *zo* -zo カーソルの下の折畳を一段階開く。カウントが与えられた場合には、 - 複数の深さの折畳が開かれる。ビジュアルモードでは、選択された範 - 囲にある全ての折畳が1レベル開かれる。 - - *zO* -zO カーソルの下の折畳を再帰的に全て開く。カーソルのある行を含まな - いフォールドは変更されない。 - ビジュアルモードでは、選択された範囲の全ての折畳が、部分的に選 - 択されていただけでも全て完全に開かれる。 - - *zc* -zc カーソルの下の折畳を一段階閉じる。カウントが与えられた場合に - は、複数の深さの折畳が閉じられる。ビジュアルモードでは、選択さ - れた範囲にある全ての折畳が1レベル閉じられる。 - 'foldenable' がセット(有効化)される。 - - *zC* -zC カーソルの下の折畳を再帰的に全て閉じる。カーソルのある行を含ま - ないフォールドは変更されない。 - ビジュアルモードでは、選択された範囲の全ての折畳が、部分的に選 - 択されていただけでも全て完全に閉じられる。'foldenable'がセット - (有効化)される。 - - *za* -za 折畳が閉じていた場合: それを開く。折畳が入れ子になっている時に - は、"za"を何度も使う必要がある。カウントが与えられた場合には、 - 複数の閉じられた折畳が開かれる。 - 折畳が開いていた場合: それを閉じ'foldenable'をセットする。繰り - 返し使っても閉じた折畳が開くだけだから、これは1レベル開くだけ - である。カウントが与えられた場合には、複数の折畳が閉じられる - (これは"za"を複数回繰り返した場合の動作と同じではない)。 - - *zA* -zA 折畳が閉じていた場合: 再帰的に開く。 - 折畳が開いていた場合: 再帰的に閉じ'foldenable'をセットする。 - - *zv* -zv カーソル行を表示する: カーソルのある行がちょうど表示されるレベ - ルまで折畳を開く。 - - *zx* -zx 折畳を更新する: 手動で行なった折畳の開閉操作をアンドゥする: - 'foldlevel'を再適用し、"zv"を行なう: カーソル行を表示する。 - 折畳の計算を強制するのにも使えます。これは 'foldexpr' を使って - いてバッファが変更されたにも関わらず折畳が適切に更新されないよ - うな場合に便利です。 - - *zX* -zX 手動で行なった折畳の開閉操作をアンドゥする: 'foldlevel'を再適 - 用する。 - 折畳の計算を強制するのにも使えます (|zx| と同様)。 - - *zm* -zm 折畳をより閉じる: 'foldlevel'を1減少させる。'foldlevel'が既に0 - ならば何も起こらない。 - 'foldenable'がセット(有効化)される。 - - *zM* -zM 全ての折畳を閉じる: 'foldlevel'に0を設定する。 - 'foldenable'がセット(有効化)される。 - - *zr* -zr 折畳をより開く: 'foldlevel'を1増加させる。 - - *zR* -zR 全ての折畳を開く: 'foldlevel'に最大の折畳レベルを設定する。 - - *:foldo* *:foldopen* -:{range}foldo[pen][!] - {range}の範囲の折畳を開く。[!]が付け加わると全ての折畳が開かれ - る。{range}範囲内の全てのテキストを見るのに役立つ。[!]が無い時 - は1レベル分の折畳が開かれる。 - - *:foldc* *:foldclose* -:{range}foldc[lose][!] - {range}の範囲の折畳を閉じる。[!]が付け加わると全ての折畳が閉じ - られる。{range}範囲内の全てのテキストを隠すのに役立つ。[!]が無 - い時は1レベル分の折畳が閉じられる。 - - *zn* -zn Fold none: reset 'foldenable'. All folds will be open. - 折畳しない: 'foldenable'をリセットする。全ての折畳が開かれる。 - - *zN* -zN 折畳する: 'foldenable'をセットする。全ての折畳が'foldenable'が - リセットされる以前と同様になる。 - - *zi* -zi 'foldenable'を反転する。 - - -折畳を超えて移動する ~ - *[z* -[z 現在の開いている折畳の先頭へ移動する。既に先頭にいるのならば、 - それを含む外側の折畳の先頭へ移動する。外側の折畳が無い場合は、 - コマンドは失敗する。 - カウントが与えられた場合には、[count]回繰り返される。 - - *]z* -]z 現在の開いている折畳の末尾へ移動する。既に末尾にいるのならば、 - それを含む外側の折畳の末尾へ移動する。外側の折畳が無い場合は、 - コマンドは失敗する。 - カウントが与えられた場合には、[count]回繰り返される。 - - *zj* -zj カーソルより下方の折畳へ移動する。閉じられた折畳が1つの折畳と - して数えられる。 - カウントが与えられた場合には、[count]回繰り返される。 - このコマンドは|operator|のように使うことができる。 - - *zk* -zk カーソルより上方の折畳へ移動する。閉じられた折畳が1つの折畳と - して数えられる。 - カウントが与えられた場合には、[count]回繰り返される。 - このコマンドは|operator|のように使うことができる。 - - -折畳に対してコマンドを実行する ~ - -:[range]foldd[oopen] {cmd} *:foldd* *:folddoopen* - 閉じた折畳の中以外の全ての行に対して{cmd}を実行する。[range]が - 与えられた時は、その範囲だけが対象となる。 - コマンドが各行に対して実行される時にはカーソルはその対象となる - 行に置かれている。 - これは":global"コマンドのように動作する: まず閉じられた折畳に - 入っていない全ての行がマークされる。それからマークされた全ての - 行に対して{cmd}が実行される。だから{cmd}が折畳に対して変更を加 - えても、コマンドの実行には影響が無い(もちろん行が消された時は - 除く)。 - 例: > - :folddoopen s/end/loop_end/ge -< "e"フラグには"end"がマッチしなかった時にエラーメッセージが表示 - させない効果がある。 - -:[range]folddoc[losed] {cmd} *:folddoc* *:folddoclosed* - 閉じた折畳の中にある全ての行に対して{cmd}を実行する。 - その他は":folddoopen"と同じ。 - -============================================================================== -3. 折畳オプション *fold-options* - -色 *fold-colors* - -閉じられた折畳の色はFoldedグループによって設定される|hl-Folded|。折畳表示カラ -ムの色はFoldColumnグループによって設定される|hl-FoldColumn|。 -色の設定例: > - - :highlight Folded guibg=grey guifg=blue - :highlight FoldColumn guibg=darkgrey guifg=white - - -折畳レベル *fold-foldlevel* - -'foldlevel'は数を設定するオプションである: 大きな数を設定するとより多くの折畳 -が開かれる。 -'foldlevel'が0の時には、全ての折畳が閉じられる。 -'foldlevel'が正の時には、幾つかの折畳が閉じられる。 -'foldlevel'が非常に大きい時は、全ての折畳が閉じられる。 -'foldlevel'は変更された時に適用される。その後に手動で折畳を開いたり閉じたりで -きる。 -値を増やした時には、新しいレベルの値以上の折畳が開かれる。手動で開かれていた折 -畳は閉じられない。 -値を減らした時には、新しいレベルの値以上の折畳が閉じられる。手動で閉じられてい -た折畳は開かれない。 - - -折畳テキスト *fold-foldtext* - -'foldtext'は式を指定する文字列オプションである。この式は閉じられた折畳を示すテ -キストを得るために評価実行される。例: > - - :set foldtext=v:folddashes.substitute(getline(v:foldstart),'/\\*\\\|\\*/\\\|{{{\\d\\=','','g') - -これは折畳の最初の1行を、"/*" と "*/" を追加し"{{{"を削除して表示する。多めの -バックスラッシュ(\ 記号)はある文字が":set"コマンドに解釈されてしまうのを避ける -ために使用されている。これは以下のように関数を定義するとより簡単になる: > - - :set foldtext=MyFoldText() - :function MyFoldText() - : let line = getline(v:foldstart) - : let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g') - : return v:folddashes . sub - :endfunction - -'foldtext'は|sandbox|環境下で実行評価される。現在のウィンドウはそのラインの属 -するウィンドウへ設定される。エラーは無視される。 - -省略値は|foldtext()|である。これはほとんどのタイプの折畳に対して妥当なテキスト -を返す。それが気に入らないのならば、独自の式を'foldtext'に設定することができ -る。その式中では以下の特別なVim変数を使用することができる: - v:foldstart 折畳の先頭の行番号 - v:foldend 折畳の末尾の行番号 - v:folddashes 折畳レベルを表現したダッシュ(-)記号を含む文字列。 - v:foldlevel 折畳のレベル - -結果の文字列中のタブ文字は1つの空白文字に置き換えられ、表示不可能な文字は表示 -可能な文字に作り変えられる。 - -結果の文字列はウィンドウに合うように切り捨てられ、折り返されることはない。 -テキストの後ろに余白があれば、'fillchars'で指定された文字で充たされる。 - -":set"コマンドが解釈してしまう文字: 空白、バックスラッシュ(\ 記号)そしてダブル -クォート を使う場合にはバックスラッシュが必要である。 |option-backslash| - - -折畳表示カラム *fold-foldcolumn* - -'foldcolumn'は、ウィンドウの端に確保される折畳を示すカラムの幅を指定する数。0 -ならば、折畳表示カラムは確保されない。通常は4から5が一般的。使い物になる最小値 -は2であるが、1にしてもいくらかの情報を提供する。最大値は12。 - -折畳表示カラムには、開いた折畳の先頭に'-' が続いて '|'が表示される。このカラム -は開いた折畳が終了した位置で終了する。入れ子になった折畳では、それを含む折畳の -1つ左側に表示される。 - -閉じた折畳は'+'で表示される。 - -全ての折畳を表示できないほど折畳表示カラムが狭いときには、入れ子のレベルが数字 -で表示される。 - -折畳表示カラムをクリックすることで、マウスにより折畳を開閉することができる: -- 閉じた折畳を開くにはその行の'+'をクリックする。 -- 開いた折畳を閉じるにはそれ以外の非空白文字をクリックする。 - - -その他のオプション - -'foldenable' 'fen': 無効に設定すると全ての折畳が開く。 -'foldexpr' 'fde': 式("expr')による折畳で使用される。 -'foldignore' 'fdi': インデントによる折畳で使用される。 -'foldmarker' 'fmr': 印による折畳で使用される印を定義する。 -'foldmethod' 'fdm': 現在の折畳方法の名称。 -'foldminlines' 'fml': 閉じた状態で表示されるべき折畳の、スクリーン上での最小 - 行数 -'foldnestmax' 'fdn': インデント及び構文折畳での最大入れ子数 -'foldopen' 'fdo': 閉じている折畳を開くコマンドの種類 -'foldclose' 'fcl': カーソルの下ではない折畳をいつ閉じるか。 - -============================================================================== -4. 折畳の振舞 *fold-behavior* - -カーソルを上下に移動させたりスクロールさせると、カーソルは一連の折畳行の先頭へ -移動する。カーソルが既に折畳の行にあれば、カーソルは次の折畳ではない行か、閉じ -られた折畳へ移動する。 - -折畳の行にカーソルがある時には、カーソルは常に先頭のカラムに表示される。ルー -ラーは実際のカーソルの位置を示すが、行が折畳の場合には、そこに実際に表示するこ -とはできない。 - -移動コマンドは一連の折畳を空行として扱う。例えば、"w"コマンドは一旦先頭のカラ -ムで停止する。 - -挿入モードでは、カーソルのある行は決して折畳にならない。このため何を入力してい -るかわからなくなることはない! - -オペレータを使用したときには、閉じた折畳は全体が含まれる。だから"dl"はカーソル -の下の閉じた折畳の全体を削除してしまう。 - -Exコマンドでは、開始位置と終了位置が折畳のそれに常に合わせられてしまう。 -だから次のコマンド: > - :s/foo/bar/g -カーソルを閉じた折畳に置いて実行すると、折畳内の全ての行にある"foo" が "bar"へ -置き換えられてしまう。 -これは|:folddoopen|と|:folddoclosed|に対してはあてはまらない。 - -(同一セッション中で)以前に編集したバッファに対しては、最後の折畳設定が再び使用 -される。手動折畳では以前に定義された折畳が復元される。全ての折畳方法で、手動で -開閉した折畳は復元される。同じウィンドウで同じバッファが編集される時は、以前の -編集時の値が使用される。そうでなければそのウィンドウで最後に編集されていたバッ -ファの値が使用される。 - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/ft_ada.jax b/runtime.old/doc/ft_ada.jax deleted file mode 100644 index fc7f4cd64..000000000 --- a/runtime.old/doc/ft_ada.jax +++ /dev/null @@ -1,505 +0,0 @@ -*ft_ada.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - - ADAファイルタイププラグイン リファレンスマニュアル~ - -ADA *ada.vim* - -1. 構文強調 |ft-ada-syntax| -2. ファイルタイププラグイン |ft-ada-plugin| -3. オムニ補完 |ft-ada-omni| - 3.1 "gnat xref"を使ったオムニ補完 |gnat-xref| - 3.2 "ctags"を使ったオムニ補完 |ada-ctags| -4. コンパイラへの対応 |ada-compiler| - 4.1 GNAT |compiler-gnat| - 4.2 Dec Ada |compiler-decada| -5. リファレンス |ada-reference| - 5.1 オプション |ft-ada-options| - 5.2 コマンド |ft-ada-commands| - 5.3 変数 |ft-ada-variables| - 5.4 定数 |ft-ada-constants| - 5.5 関数 |ft-ada-functions| -6. その他のプラグイン |ada-extra-plugins| - -============================================================================== -1. 構文強調 ~ - - *ft-ada-syntax* - -このモードはオブジェクト指向プログラムや型保護等の機能がサポートされた、Adaの -2005年版("Ada 2005")を想定して作られている。Ada 2005で追加されたキーワードを使 -用しているコード(そのようなコードは修正をすべき)は誤った強調色で表示してしまう -ものの、オリジナルのAda言語("Ada83", "Ada87", "Ada95")で書かれたコードも概ね取 -り扱うことができる。Adaについての詳細はhttp://www.adapower.com/を参照。 - -Adaモードは多くの状況を綺麗に取り扱う。 - -例えば、"-5"のなかの"-"は数字の一部として認識するが、"A-5"という表記の中の同じ -文字は演算子として認識される。通常、他のコンパイルユニットを参照する"with"や -"use"節は、Cにおける"#include"と同じ強調色で表示される。"Conditional"や -"Repeat"グループを異なる強調色に設定すれば、"end if"と"end loop"はそれぞれのグ -ループの強調色で表示される。 - -これらにはコマンド"highlight"を使って異なる強調色を設定することができる。(例: -ループの色を変えるには":hi Repeat"に続けて強調色指定を続ける; 単純な端末上では -ctermfg=Whiteと指定すると見やすいことが多い) - -Adaモードではユーザが設定できるオプションがいくつか存在する。その完全なリスト -は|ft-ada-options|を参照。 - -それらを有効化するには、オプションに値を設定する。 -あるオプションを有効化する例: -> - let ada_standard_types = 1 -> -無効化するには":unlet"を使用する。例: > - unlet ada_standard_types = 1 - -Adaファイルを読込む前に、コマンドラインで":"とこれらのコマンドをキー入力するこ -とで、設定することができる。ファイル"~/.vimrc"に、コロン(":")を除いて"let"コマ -ンドを追加すれば、これらのオプション設定を永続化することができる。 - -このモードは遅いコンピュータ(90MHz)上でも高速に動作するが、もしもパフォーマン -スが受け入れられないほど低いようならば、|g:ada_withuse_ordinary|を有効化する。 - -|g:ada_folding|がセットされていると、構文による折り畳み命令(|fold-syntax|)が追 -加される。 - -============================================================================== -2. ファイルタイププラグイン ~ - *ft-ada-indent* *ft-ada-plugin* - -Adaプラグインは以下のことに対応している: - - - オートインデント (|indent.txt|) - - 入力補完 (|i_CTRL-N|) - - ユーザ定義補完 (|i_CTRL-X_CTRL-U|) - - タグ検索 (|tagsrch.txt|) - - Quick Fix (|quickfix.txt|) - - バックスペース制御 (|'backspace'|) - - コメント制御 (|'comments'|, |'commentstring'|) - -Adaファイルが開かれたときだけこのプラグインはAdaモード機能を有効化し、メニュー -やポップアップメニューにAda関連の項目を追加する。 - -============================================================================== -3. オムニ補完 ~ - *ft-ada-omni* - -Adaオムニ補完(|i_CTRL-X_CTRL-O|)は、"gnat xref -v" または "exuberant Ctags" -(http://ctags.sourceforge.net) によって作られたtagsデータベースを利用する。補 -完関数は、tagsファイルがどちらのツールを使って作られたのかを自動的に判定する。 - ------------------------------------------------------------------------------- -3.1 "gnat xref"を使ったオムニ補完 ~ - *gnat-xref* - -GNAT XREFはコンパイラの内部情報(aliファイル)を使ってtagsファイルを生成する。こ -れは100%正しいというアドバンテージと、深くネストした解析のオプションを持つ。し -かしそのコードはコンパイルが通らねばならず、生成器はとても遅く、生成されたtags -ファイルは各項目に対して基本的なCtags情報しか持たない。これではVimの高度なコー -ドブラウザプラグインに対しては十分ではない。 - -NOTE: "gnat xref -v"はとてもトリッキーで診断情報をほとんど出力しない。もし何も - 表示されなかったら、たいていパラメータが間違っている。 - いくつか重要なtips: - -1) 最初にコードをコンパイルし、"-aO"オプションを使って.aliファイルの位置を示さ - ねばならない。 -2) "gnat xref -v ../Include/adacl.ads" はうまく動かないので、代わりに"gnat - xref -v -aI../Include adacl.ads"を使うこと。 -3) "gnat xref -v -aI../Include *.ad?"はうまく動かないので、代わりに"cd - ../Include"と"gnat xref -v *.ad?"を使うこと。 -4) プロジェクトマネージャ対応は完全に壊れている。"gnat xref -Padacl.gpr"と試 - してみるのもいけない。 -5) タグファイルがソートされているとVimは高速に検索できるので、"sort --unique - --ignore-case --output=tags tags"とすること。 -6) タグファイルがソートされていることを示すために、1行目に"!_TAG_FILE_SORTED - 2 %sort ui"と入れるのを忘れないこと。 - ------------------------------------------------------------------------------- -3.2 "ctags"を使ったオムニ補完~ - *ada-ctags* - -Exuberant Ctagsは内蔵の多言語コードパーサを使う。このパーサはとても高速で、大 -量の付加情報を生成する(それゆえ"Exuberant Ctags"という名前がつけられている)。 -また、コンパイルが通らないファイルに対しても実行できる。 - -Exuberant Ctagsを利用するVimのツールはたくさんある。 - -まず最初に、Ada対応のパッチを適用したExuberant Ctagsをインストールしなければな -らない。これはGNU Adaプロジェクトから入手できる。 -(http://gnuada.sourceforge.net). - -Exuberant CtagsのAdaパーサはかなり新しく、完全な対応は期待しないこと。 - -============================================================================== -4. コンパイラへの対応 ~ - *ada-compiler* - -Adaモードは複数のAdaコンパイラに対応していて、Adaソースを開くとき、 -|g:ada_default_compiler|で設定されているコンパイラセットを自動的に読み込む。 -このコンパイラプラグインは、実際のコンパイラプラグインと、サポート関数・変数の -セットに分かれている。これによって、ユーザの開発環境用に特殊化したコンパイラプ -ラグインを作ることが容易になっている。 - ------------------------------------------------------------------------------- -4.1 GNAT ~ - *compiler-gnat* - -GNATは現在入手可能な唯一の(ビールとスピーチ両方の意味で)フリーなAdaコンパイラ -である。ライセンス条項に違いのある複数のバージョンが用意されている。 - -GNATコンパイラプラグインは<F7>を押すとコンパイルを行い、その後即座に結果を表示 -する。プロジェクトファイルを設定することができる: - > - > call g:gnat.Set_Project_File ('my_project.gpr') - -プロジェクトファイルを設定すると、GPSと同じようにVimのセッション -(|views-sessions|)も作成される。これは開いているファイル・ウィンドウ位置などを -プロジェクトごとに記憶しておく。 - - *gnat_members* -GNAT オブジェクト ~ - - *g:gnat.Make()* -g:gnat.Make() - |g:gnat.Make_Command|を呼び出し、結果を|quickfix| ウィンドウに - 表示する。 - - *g:gnat.Pretty()* -g:gnat.Pretty() - |g:gnat.Pretty_Program|を呼び出す。 - - *g:gnat.Find()* -g:gnat.Find() - |g:gnat.Find_Program|を呼び出す。 - - *g:gnat.Tags()* -g:gnat.Tags() - |g:gnat.Tags_Command|を呼び出す。 - - *g:gnat.Set_Project_File()* -g:gnat.Set_Project_File([{file}]) - gnatプロジェクトファイルを設定し、関連付けられたセッションを読 - み込む。そのとき開かれていたプロジェクトは閉じられ、セッション - が書き出される。ファイル名なしで呼び出したときは、プロジェクト - ファイルを選択するためのファイル選択ダイアログが開く。空文字列 - を指定して呼び出したときは、そのプロジェクトを閉じ、関連付けら - れたセッションを閉じる。 - - *g:gnat.Project_File* -g:gnat.Project_File 文字列 - 現在のプロジェクトファイル。 - - *g:gnat.Make_Command* -g:gnat.Make_Command 文字列 - |g:gnat.Make()|に使われる外部プログラム (|'makeprg'|). - - *g:gnat.Pretty_Program* -g:gnat.Pretty_Program 文字列 - |g:gnat.Pretty()|に使われる外部プログラム - - *g:gnat.Find_Program* -g:gnat.Find_Program 文字列 - |g:gnat.Find()|に使われる外部プログラム - - *g:gnat.Tags_Command* -g:gnat.Tags_Command 文字列 - |g:gnat.Tags()|に使われる外部プログラム - - *g:gnat.Error_Format* -g:gnat.Error_Format 文字列 - エラーフォーマット (|'errorformat'|) - ------------------------------------------------------------------------------- -4.2 Dec Ada ~ - *compiler-hpada* *compiler-decada* - *compiler-vaxada* *compiler-compaqada* - -Dec Ada (歴代の名前は VAX Ada, Dec Ada, Compaq Ada, HP Ada)は相当古いAda 83の -コンパイラである。対応は基本的なものである: <F7>で現在のユニットをコンパイルす -る。 - -Dec Adaは引数としてファイル名でなくパッケージ名が渡されることを期待する。コン -パイラプラグインは普通のファイル名の慣習に対応しており、ファイル名をユニット名 -に変換する。区切り文字として'-'と'__'の両方に対応している。 - - *decada_members* -DEC ADA オブジェクト ~ - - *g:decada.Make()* -g:decada.Make() 関数 - |g:decada.Make_Command|を呼び出し、結果を|quickfix|ウィンドウ - に表示する。 - - *g:decada.Unit_Name()* -g:decada.Unit_Name() 関数 - 現在のファイルのユニット名を取得する。 - - *g:decada.Make_Command* -g:decada.Make_Command 文字列 - |g:decada.Make()| に使われる外部プログラム (|'makeprg'|). - - *g:decada.Error_Format* -g:decada.Error_Format| 文字列 - エラーフォーマット (|'errorformat'|). - -============================================================================== -5. リファレンス ~ - *ada-reference* - ------------------------------------------------------------------------------- -5.1 オプション ~ - *ft-ada-options* - - *g:ada_standard_types* -g:ada_standard_types 切替 (存在するなら真) - パッケージStandard内の型を強調する(例: "Float") - - *g:ada_space_errors* - *g:ada_no_trail_space_error* - *g:ada_no_tab_space_error* - *g:ada_all_tab_usage* -g:ada_space_errors 切替 (存在するなら真) - 余計な空白文字をエラーとして強調する。 - g:ada_no_trail_space_error - - ただし行末のスペースを無視する。 - g:ada_no_tab_space_error - - ただしスペースの後のタブを無視する。 - g:ada_all_tab_usage - - 全てのタブを強調する。 - - *g:ada_line_errors* -g:ada_line_errors 切替 (存在するなら真) - 長すぎる行を強調する。Note: このオプションはCPUに多大な負荷が - かかる。 - - *g:ada_rainbow_color* -g:ada_rainbow_color 切替 (存在するなら真) - '('と')'にレインボーカラーを使う。rainbow_parenthesisを使わな - いとこれは意味がない。 - - *g:ada_folding* -g:ada_folding 集合 ('sigpft') - Adaのソースに折り畳みを使う。 - 's': 読み込み時に構文折り畳みを有効化する。 - 'p': パッケージを折り畳む - 'f': 関数と手続きを折り畳む - 't': 型を折り畳む - 'c': 条件文を折り畳む - 'g': 読み込み時にgnat整形折り畳みを有効化する。 - 'i': 孤立した 'is' を上の行といっしょに折り畳む - 'b': 孤立した 'begin' を上の行といっしょに折り畳む - 'p': 孤立した 'private' を上の行といっしょに折り畳む - 'x': 孤立した 'exception' を上の行といっしょに折り - 畳む - 'i': 読み込み時にインデント折り畳みを有効化する。 - - Note: 構文折り畳みは初期段階(使用に耐えない)であり、インデント - かgnat整形折り畳みが勧められている。 - - gnat整形折り畳みを使うときは、次の設定が勧められている: - -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5 - - インデント折り畳みを使うときは、次の設定が勧められている: - shiftwidth=3 softtabstop=3 - - *g:ada_abbrev* -g:ada_abbrev 切替 (存在するなら真) - いくつかの短縮入力を追加する。この機能は様々な補完方法によりい - くぶん取って代わられている。 - - *g:ada_withuse_ordinary* -g:ada_withuse_ordinary 切替 (存在するなら真) - "with"と"use"を通常のキーワードとして表示する(これらが他のコン - パイルユニットへの参照として使われた場合には、特別に通常の強調 - として表示する)。 - - *g:ada_begin_preproc* -g:ada_begin_preproc 切替 (存在するなら真) - 全てのbegin-likeなキーワードをCのプリプロセッサ命令の色で強調 - する。 - - *g:ada_omni_with_keywords* -g:ada_omni_with_keywords - オムニ補完(|compl-omni|)にキーワード、プラグマ、属性を追加する。 - Note: いつでも補完して、それからユーザ定義補完 - (|i_CTRL-X_CTRL-U|)をすることができる。 - - *g:ada_extended_tagging* -g:ada_extended_tagging 列挙 ('jump', 'list') - 拡張タグ機能を使う。2つのオプションがある - 'jump': ジャンプするのにtjumpを使う - 'list': QuickFixリストにタグを追加する - 普通のタグ機能は関数や演算子のオーバーロードに対応していない。 - これらの機能がCになく、タグ機能はもともとC用に開発されたためで - ある。 - - *g:ada_extended_completion* -g:ada_extended_completion - <C-N>と<C-R>補完(|i_CTRL-N|)に拡張補完を使う。このモードでは - '.'が識別子の一部となり、'Object.Method'や'Package.Procedure' - の全体が補完される。 - - *g:ada_gnat_extensions* -g:ada_gnat_extensions 切替 (存在するなら真) - GNATの拡張に対応する。 - - *g:ada_with_gnat_project_files* -g:ada_with_gnat_project_files 切替 (存在するなら真) - gnatプロジェクトファイルのキーワードと属性を追加する。 - - *g:ada_default_compiler* -g:ada_default_compiler 文字列 - デフォルトのコンパイラを設定する。現在対応しているのは'gnat'と - 'decada'である。 - -「存在するなら真」の変数は、その変数が定義されているときは真で、定義されていな -いときは偽となる。その変数がどんな値であろうとも、違いはない。 - ------------------------------------------------------------------------------- -5.2 コマンド ~ - *ft-ada-commands* - -:AdaRainbow *:AdaRainbow* - '('と')'に対するレインボーカラーモード(|g:ada_rainbow_color|) - をトグルする。 - -:AdaLines *:AdaLines* - 行エラー表示(|g:ada_line_errors|)をトグルする。 - -:AdaSpaces *:AdaSpaces* - スペースエラー表示(|g:ada_space_errors|)をトグルする。 - -:AdaTagDir *:AdaTagDir* - 現在のファイルのディレクトリに対してtagsファイルを作成する。 - -:AdaTagFile *:AdaTagFile* - 現在のファイルに対してtagsファイルを作成する。 - -:AdaTypes *:AdaTypes* - 標準型(|g:ada_standard_types|)の色をトグルする。 - -:GnatFind *:GnatFind* - |g:gnat.Find()|を呼び出す。 - -:GnatPretty *:GnatPretty* - |g:gnat.Pretty()|を呼び出す。 - -:GnatTags *:GnatTags* - |g:gnat.Tags()|を呼び出す。 - ------------------------------------------------------------------------------- -5.3 変数 ~ - *ft-ada-variables* - - *g:gnat* -g:gnat オブジェクト - GNATコンパイラを管理するコントロールオブジェクト。このオブジェ - クトは最初にAdaのソースコードが読み込まれたときに、 - |g:ada_default_compiler|が'gnat'に設定されているならば作成され - る。詳しくは|gnat_members|を参照。 - - *g:decada* -g:decada オブジェクト - Dec Adaコンパイラを管理するコントロールオブジェクト。このオブ - ジェクトは最初にAdaのソースコードが読み込まれたときに、 - |g:ada_default_compiler|が'decada'に設定されているならば作成さ - れる。詳しくは|decada_members|を参照。 - ------------------------------------------------------------------------------- -5.4 定数 ~ - *ft-ada-constants* - -全ての定数はロックされている。詳しくは|:lockvar|を参照。 - - *g:ada#WordRegex* -g:ada#WordRegex 文字列 - Adaの単語を検索する正規表現。 - - *g:ada#DotWordRegex* -g:ada#DotWordRegex 文字列 - ドットで区切られるAdaの単語を検索する正規表現。 - - *g:ada#Comment* -g:ada#Comment 文字列 - Adaのコメントを検索する正規表現。 - - *g:ada#Keywords* -g:ada#Keywords 辞書のリスト - キーワード、属性などのリスト。オムニ補完で用いられる形式。詳し - くは|complete-items|を参照。 - - *g:ada#Ctags_Kinds* -g:ada#Ctags_Kinds リストの辞書 - CtagsがAdaのタグを生成する際の、要素の種類の辞書。 - ------------------------------------------------------------------------------- -5.5 関数 ~ - *ft-ada-functions* - -ada#Word([{line}, {col}]) *ada#Word()* - カーソル下(または指定の行・桁)のAda要素のフルネームを返す。必 - 要に応じてスペース・改行は取り除かれる。 - -ada#List_Tag([{line}, {col}]) *ada#Listtags()* - カーソル下(または指定の行・桁)のAda要素の全ての出現位置を - QuickFixウィンドウ内にリストする。 - -ada#Jump_Tag ({ident}, {mode}) *ada#Jump_Tag()* - カーソル下(または指定の行・桁)のAda要素の全ての出現位置を - タグジャンプリスト内にリストする。引数{mode}は - 'tjump'、'stjump'のどちらかとする。 - -ada#Create_Tags ({option}) *ada#Create_Tags()* - Ctagsを使ってtagsファイルを作成する。引数{option}が'file'なら - 現在のファイル、'dir'なら現在のファイルのディレクトリ、または - ファイル名とする。 - -gnat#Insert_Tags_Header() *gnat#Insert_Tags_Header()* - GNAT XREFの出力に欠けているタグファイルヘッダ(!_TAG_)の情報を - 現在のファイルに追加する。 - -ada#Switch_Syntax_Option ({option}) *ada#Switch_Syntax_Option()* - 強調のオプションをオン・オフにする。Adaのメニューに使われる。 - - *gnat#New()* -gnat#New () - 新しくgnatオブジェクトを作成する。詳しくは|g:gnat|を参照。 - - -============================================================================== -6. その他のプラグイン ~ - *ada-extra-plugins* - -以下の外部プラグインをインストールしてもよい。これらはAdaの編集に役に立ち、 -Adaモードの機能を向上させてくれる: - -backup.vim - http://www.vim.org/scripts/script.php?script_id=1537 - 可能なかぎりたくさんのバックアップを取ってくれ、自分自身でやる必要がな - くなる。 - -rainbow_parenthsis.vim - http://www.vim.org/scripts/script.php?script_id=1561 - Adaは'('と')'しか使わないのでとても助かる。 - -nerd_comments.vim - http://www.vim.org/scripts/script.php?script_id=1218 - ほとんど全てのプログラミング言語に対応するコメント化・アンコメント化 - -matchit.vim - http://www.vim.org/scripts/script.php?script_id=39 - ほとんどの言語に対応する'%'でのジャンプ。通常の'%'は'{}'形式の言語に対 - してだけ役に立つ。Adaモードはこれに必要な検索パターンを設定する。 - -taglist.vim - http://www.vim.org/scripts/script.php?script_id=273 - ソースコードエクスプローラサイドバー。Adaで利用可能にするパッチがある。 - -GNU Adaプロジェクトが配布するVimは以上を全て含んでいる。 - -============================================================================== -vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab -vim: filetype=help diff --git a/runtime.old/doc/ft_sql.jax b/runtime.old/doc/ft_sql.jax deleted file mode 100644 index 3fedc5b21..000000000 --- a/runtime.old/doc/ft_sql.jax +++ /dev/null @@ -1,749 +0,0 @@ -*ft_sql.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - -by David Fishburn - -これは SQL ファイルを編集するためのファイルタイププラグインです。 - -Structured Query Language (SQL) はリレーショナルデータベースと対話するための文 -を規定した規格です。Vim には SQL 内を移動、インデント、構文ハイライトする機能 -が備わっています。 - -1. 移動 |sql-navigation| - 1.1 Matchit |sql-matchit| - 1.2 オブジェクト単位の移動 |sql-object-motions| - 1.3 SQL 独自のオブジェクト単位移動 |sql-predefined-objects| - 1.4 マクロ |sql-macros| -2. SQL の方言 |sql-dialects| - 2.1 SQLSetType |SQLSetType| - 2.2 SQLGetType |SQLGetType| - 2.3 SQL 方言の既定値 |sql-type-default| -3. SQL 方言を追加する |sql-adding-dialects| -4. SQL オムニ補完 |sql-completion| - 4.1 static モード |sql-completion-static| - 4.2 dynamic モード |sql-completion-dynamic| - 4.3 SQL 補完のチュートリアル |sql-completion-tutorial| - 4.3.1 テーブル補完 |sql-completion-tables| - 4.3.2 カラム補完 |sql-completion-columns| - 4.3.3 プロシージャ補完 |sql-completion-procedures| - 4.3.4 ビュー補完 |sql-completion-views| - 4.4 補完のカスタマイズ |sql-completion-customization| - 4.5 SQL 関連のマップ |sql-completion-maps| - 4.6 他のファイルタイプのファイル内で使うには|sql-completion-filetypes| - -============================================================================== -1. 移動 *sql-navigation* - -SQL ファイルタイププラグインはファイル内の移動を支援するためのオプションを多数 -備えています。 - - -1.1 Matchit *sql-matchit* ------------ -matchit プラグイン(http://www.vim.org/scripts/script.php?script_id=39)はたくさ -んの機能を備えており、異なる言語に対応するためにカスタマイズすることができます。 -matchit プラグインはローカル変数 b:match_words を定義することで設定します。様 -々なキーワードの上で % キーを押すと、それに対応する位置へカーソルを移動します。 -例えばカーソルが "if" の上にあるとき % を押すと "else", "elseif", "end if" の -間を循環して移動します。 - -以下のキーワードがサポートされています: > - if - elseif | elsif - else [if] - end if - - [while condition] loop - leave - break - continue - exit - end loop - - for - leave - break - continue - exit - end loop - - do - statements - doend - - case - when - when - default - end case - - merge - when not matched - when matched - - create[ or replace] procedure|function|event - returns - - -1.2 オブジェクト単位で移動 *sql-object-motions* ------------------------ -Vim には既定でテキストオブジェクトを操作するキーがたくさん定義されています -|object-motions|。このファイルタイププラグインはこれらのキーの一部を SQL 用に -再定義します。 - -SQL ファイルを編集するとき、以下のノーマルモード|Normal|とビジュアルモード -|Visual|のマップが定義されます: > - ]] 次の 'begin' へ移動する - [[ 前の 'begin' へ移動する - ][ 次の 'end' へ移動する - [] 前の 'end' へ移動する - - -1.3 SQL 独自のオブジェクト単位移動 *sql-predefined-objects* ------------------------------ -ほとんどのリレーショナルデータベースはテーブル、インデックス、トリガー、ストア -ドプロシージャなど様々な標準的な機能を備えています。また、ベンダごとに様々な独 -自オブジェクトがあります。次のマップたちはこれらのオブジェクト間を移動するため -に作られています。お使いのデータベースによってオブジェクトのリストを調整できる -ようでなればなりません。このファイルタイププラグインは標準オブジェクトのほとん -どと、多くの追加的なオブジェクトを定義しています。これを可能な限りフレキシブル -にするために、|vimrc| でオブジェクトのリストを上書きできるようになっています。 -次のようにします: > - let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' . - \ ',schema,service,publication,database,datatype,domain' . - \ ',index,subscription,synchronization,view,variable' - -上記のリストを対象として、以下のノーマルモード|Normal|とビジュアルモード -|Visual|のマップが定義されています: > - ]} 次の 'create <オブジェクト名>' へ移動する - [{ 前の 'create <オブジェクト名>' へ移動する - -繰り返し ]} を押すとこれらの create 文の間を循環して移動します: > - create table t1 ( - ... - ); - - create procedure p1 - begin - ... - end; - - create index i1 on t1 (c1); - -g:ftplugin_sql_objects の既定値は以下の通りです: > - let g:ftplugin_sql_objects = 'function,procedure,event,' . - \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' . - \ 'table,trigger' . - \ ',schema,service,publication,database,datatype,domain' . - \ ',index,subscription,synchronization,view,variable' - -上記の設定は以下の場合にも対応しています: > - create table t1 ( - ... - ); - create existing table t2 ( - ... - ); - create global temporary table t3 ( - ... - ); - -既定では CREATE 文だけを検索します。|vimrc| に以下を書くと、他の文も対象にする -ことができます: > - let g:ftplugin_sql_statements = 'create,alter' - -このファイルタイププラグインは以下の3種類のコメントを定義しています: > - 1. -- - 2. // - 3. /* - * - */ - -コメントを対象として、以下のノーマルモード|Normal|とビジュアルモード|Visual|で -のマップが定義されています: > - ]" 次のコメントの開始位置へ移動 - [" 前のコメントの終了位置へ移動 - - - -1.4 マクロ *sql-macros* ----------- -|'define'| に以下の正規表現を設定することにより、マクロ定義を見つけるための -Vim の機能に対応しています: > - \c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\> - -この正規表現は以下のようなコードに対応しています: > - CREATE VARIABLE myVar1 INTEGER; - - CREATE PROCEDURE sp_test( - IN myVar2 INTEGER, - OUT myVar3 CHAR(30), - INOUT myVar4 NUMERIC(20,0) - ) - BEGIN - DECLARE myVar5 INTEGER; - - SELECT c1, c2, c3 - INTO myVar2, myVar3, myVar4 - FROM T1 - WHERE c4 = myVar1; - END; - -以下の行の "myVar1" の上にカーソルを置いて、: > - WHERE c4 = myVar1; - ^ - -以下のキーのどれかを押してみてください: > - [d - [D - [CTRL-D - - -============================================================================== -2. SQL の方言 *sql-dialects* *sql-types* - *sybase* *TSQL* *Transact-SQL* - *sqlanywhere* - *oracle* *plsql* *sqlj* - *sqlserver* - *mysql* *postgresql* *psql* - *informix* - -すべてのリレーショナルデータベースは SQL に対応しています。SQL の一部分はベン -ダー間で移植可能です(例: CREATE TABLE, CREATE INDEX)が、ベンダー固有の拡張が大 -量にあります。Oracle は "CREATE OR REPLACE" 構文、CREATE TABLE 文でのカラム既 -定値の指定、プロシージャ言語(ストアドプロシージャとトリガー)を備えています。 - -標準の Vim ディストリビューションには Oracle の PL/SQL に基づいた構文ハイライ -トが付属しています。SQL インデントスクリプトは Oracle と SQL Anywhere -用に動作します。ファイルタイププラグインはすべてのベンダ用に動作し、ベンダ中立 -を保ちつつも拡張可能であるべきです。 - -現在様々なベンダに対応しています。これは構文スクリプトを通して実現しています。 -残念なことに、複数の構文ルールを切り替えるには以下のどれかを作成しなければなり -ません: - 1. 新しいファイルタイプ - 2. 独自のオートコマンド - 3. コマンド手動実行 - -大多数の人は1つのベンダのデータベース製品しか扱わないため、|vimrc| で既定値を -設定しておくとよいでしょう。 - - -2.1 SQLSetType *sqlsettype* *SQLSetType* --------------- -複数のデータベースを扱っている人々にとっては、バッファごとまたは任意のタイミン -グでベンダのルール(インデント、構文)を切り替えられるとよいでしょう。 -ftplugin/sql.vim では次のコマンドが定義されています: > - SQLSetType - -このコマンドを引数なしで実行すると、インデントと構文スクリプトが既定値に戻りま -す。既定値は |sql-type-default| を参照してください。Vi 互換モードをオフにして -いると (|'compatible'|)、<Tab> キーで引数を補完できます。 - -コマンド名とスペースをタイプした後、引数を指定するために補完を利用できます。こ -のコマンドは source したい Vim スクリプトの名前を受け取ります。 -|cmdline-completion| 機能により、SQLSetType コマンドは |'runtimepath'| から -名前に 'sql' を含む Vim スクリプトを検索します。これは名前のスペルから推測を取 -り出します。以下が例です: > - :SQLSetType - :SQLSetType sqloracle - :SQLSetType sqlanywhere - :SQLSetType sqlinformix - :SQLSetType mysql - -もっとも簡単な方法は、<Tab> を使ってまずコマンド名(SQLSetType)を補完し、スペー -スに続いてもう一度 <Tab> を押すと利用可能な Vim スクリプトの名前のリストが表示 -されます: > - :SQL<Tab><space><Tab> - - -2.2 SQLGetType *sqlgettype* *SQLGetType* --------------- -現在、どのSQL の方言が使われているかを調べるには、コマンド SQLGetType を使い -ます。ftplugin/sql.vim で次のコマンドが定義されています: > - SQLGetType - -このコマンドを使うと、以下のような文字列がエコー表示されます: > - Current SQL dialect in use:sqlanywhere - - -2.3 SQL 方言の既定値 *sql-type-default* ------------------------ -すでに述べたように、Vim の既定の構文ルールは Oracle (PL/SQL) に基づいています。 -これを上書きするには、次のうちどれかを |vimrc| に書きます: > - let g:sql_type_default = 'sqlanywhere' - let g:sql_type_default = 'sqlinformix' - let g:sql_type_default = 'mysql' - -次を |vimrc| に書くと: > - let g:sql_type_default = 'sqlinformix' - -次回 SQL ファイルを編集するときには以下のスクリプトが自動的に読み込まれます: > - ftplugin/sql.vim - syntax/sqlinformix.vim - indent/sql.vim -> -indent/sqlinformix.sql は読み込まれていないことに注意してください。Informix 用 -のインデントファイルは存在しないため、既定のインデントファイルが読み込まれてい -ます。 - - -============================================================================== -3. SQL 方言を追加する *sql-adding-dialects* - -Vim の標準ディストリビューションにスクリプトが含まれていない SQL 方言を扱うと -きは、対応するスクリプトが投稿されていないか http://www.vim.org をチェックして -みてください。もしなければ既存のスクリプトをコピーしてカスタマイズしましょう。 -詳しくは |filetype-plugins| を参照してください。 - -スクリプトを識別しやすくするために、ファイル名の先頭に "sql" という接頭辞をつ -けてください。例えば SQLite データベース用のカスタマイズを作りたい場合は、以下 -のファイルを作成します: > - Unix - ~/.vim/syntax/sqlite.vim - ~/.vim/indent/sqlite.vim - Windows - $VIM/vimfiles/syntax/sqlite.vim - $VIM/vimfiles/indent/sqlite.vim - -SQLSetType コマンドには変更を加える必要はありません。SQLSetType コマンドを実行 -すると自動的に新しい SQL ファイルが選ばれ、読み込まれます。 - - -============================================================================== -4. SQL オムニ補完 *sql-completion* - *omni-sql-completion* - -Vim 7 にはプラグイン開発者が任意の言語用のコード補完を作るためのインターフェイ -スと関数が備わっています。Vim 7 には SQL 言語用のコード補完が含まれています。 - -SQL 補完プラグインには static と dynamic という2つのモードがあります。static -モードは 現在の構文強調ルールから生成されたデータをもとにポップアップを表示し -ます。dynamic モードはデータベースから直接抽出したデータをもとにポップアップ -を表示します。このデータにはテーブルのリスト、カラムのリスト、プロシージャ名な -どが含まれます。 - -4.1 static モード *sql-completion-static* ---------------- -static ポップアップはファイルタイプが SQL のファイルを編集しているときに、使用 -中の構文ルールで定義された項目を含んで表示されます。プラグインは、表示される項 -目のリストを絞り込むための様々なマップを用意しています。 -既定の static マップは次の通りです: > - imap <buffer> <C-C>a <C-\><C-O>:call sqlcomplete#Map('syntax')<CR><C-X><C-O> - imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O> - imap <buffer> <C-C>f <C-\><C-O>:call sqlcomplete#Map('sqlFunction')<CR><C-X><C-O> - imap <buffer> <C-C>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O> - imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O> - imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O> - -"<C-C>" のキーは環境によっては動作しないかもしれません。そこで、以下の行を -|.vimrc| に書くことで "<C-C>" を他のキーに変更できます: > - let g:ftplugin_sql_omni_key = '<C-C>' -> - -static マップ(構文強調グループに基づいている)は以下の形式で定義されています: > - imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O> - -このコマンドは次のように分解できます: > - imap - インサートモードでのマップを作成する - <buffer> - このバッファに対してのみ - <C-C>k - マップするキー - <C-\><C-O> - コマンドを1個実行し、インサートモードに戻る - :call sqlcomplete#Map( - 他の補完プラグインと組み合わせて使えるようにする - ために、いくつかのな関数を実行します。 - どの項目を補完して欲しいかを SQL 補完プラグインに - 指示します。 - この場合は構文強調グループ 'sqlKeyword' の項目を - 表示するよう指定しています。 - 選択可能な構文強調グループ名のリストは、SQL ファ - イルを編集中に次のコマンドで表示できます。 - :syntax list - 'sqlKeyword' - 構文強調グループ sqlKeyword の項目を表示します。 - )<CR> - :let コマンドを実行します。 - <C-X><C-O> - 標準のオムニ補完のキーストロークを実行します。 - sqlcomplete#Map 関数の引数に 'sqlKeyword' を渡して - あるので、SQL 補完プラグインは構文強調グループ - sqlKeyword の項目をポップアップするようになってい - ます。プラグインは Vim が再起動するまでこの結果を - キャッシュします。 構文のリストはsyntaxcomplete プ - ラグインを使って抽出されます。 - -'syntax' キーワードを使うのは特別な場合です。これは syntaxcomplete プラグイン -にすべての構文アイテムを抽出するよう指示します。そのためこれは Vim のどの SQL -構文ファイルに対しても有効です。これを書いている時点でこれは SQL 方言用の10 -個の構文ファイルを含んでいます(上の セクション3 |sql-dialects| を参照)。 - -構文ファイルから抽出される項目の例を以下に示します: > - 全部 - - 全構文強調グループの中身 - 文 - - Select, Insert, Update, Delete, Create, Alter, ... - 関数 - - Min, Max, Trim, Round, Date, ... - キーワード - - Index, Database, Having, Group, With - オプション - - Isolation_level, On_error, Qualify_owners, Fire_triggers, ... - 型 - - Integer, Char, Varchar, Date, DateTime, Timestamp, ... - - -4.2 dynamic モード *sql-completion-dynamic* ----------------- -dynamic モードではデータベースから直接抽出したデータを元にポップアップを表示 -します。dynamic 機能を有効にするためには dbext.vim をインストールしなければな -りません(http://vim.sourceforge.net/script.php?script_id=356)。 - -dynamic モードは SQL 補完プラグインのいくつかの機能から使われています。dbext -プラグインをインストールしたら dbext-tutorial の設定と使い方を読んでください。 -dbext を使うと SQL 補完プラグインがテーブル、プロシージャ、ビュー、カラムのリ -ストを表示できるようになります。 > - テーブルリスト - - 全スキーマ所有者の全テーブル - プロシージャリスト - - 全スキーマ所有者の全ストアドプロシージャ - ビューリスト - - 全スキーマ所有者の全ビュー - カラムリスト - - 選択したテーブル内のカラム - -これらのリストをポップアップを表示するには、インサートモードで以下のキーを使い -ます(ここで <C-C> は CTRL キーを押しながら C キーを押すという意味です): - テーブルリスト - <C-C>t - - <C-X><C-O> (既定のマップはテーブルリスト) - ストアドプロシージャリスト - <C-C>p - ビューリスト - <C-C>v - カラムリスト - <C-C>c - - ドリルイン/アウト - テーブルリストのポップアップウィンドウを表示中 - に <Right> を押すと現在選択されているテーブル - のカラムリストの表示に切り替わります。 - - カラムリストのポップアップウィンドウを表示中に - <Left> を押すとテーブルリスト表示に切り替わり - ます。 - - これを使えばテーブルリストとカラムリストの表示を - 素早く切り替えることができます。 - - <Right> と <Left> のキーも |.vimrc| により変更で - きます > - let g:ftplugin_sql_omni_key_right = '<Right>' - let g:ftplugin_sql_omni_key_left = '<Left>' - -SQL 補完プラグインはポップアップウィンドウに表示されるリストをキャッシュしてお -きます。これによってリストの再表示がとても高速になります。データベースに新しい -テーブルやカラムが追加されたときはプラグインのキャッシュをクリアする必要が出て -くるかもしれません。キャッシュをクリアするための既定のマップは次の通りです: > - imap <buffer> <C-C>R <C-\><C-O>:call sqlcomplete#Map('ResetCache')<CR><C-X><C-O> - - -4.3 SQL 補完のチュートリアル *sql-completion-tutorial* ----------------- - -このチュートリアルは SQL 補完プラグインの主な機能を一通り紹介することを意図し -て次のことが書かれています: > - a) プラグインに慣れる - b) 主な機能を紹介する - c) カスタマイズする方法を示す - d) 「ベストな使い方」をデモする(一番簡単な設定方法) - -まず、新規バッファを作成しましょう: > - :e tutorial.sql - - -static な機能 ---------------- -各種のリストを表示するには、単にインサートモードで次をタイプします: - <C-C>s (SQL 文を表示する) -そしてリストの中を"select"まで下に移動していきます。 探している項目をよく知っ -ている場合、例えばそれが"s"という文字で始まることを知っている場合は、その文字 -を続けてタイプできます。"se"とタイプしてから(引用符はタイプしません): - <C-Space>t -を押してみてください。 -"select"が選択されたところで <Enter> を押すとその項目を確定します。次に - * fr<C-C>a (すべての構文アイテムを表示する) -とタイプしてみてください。"from"が候補に現れるでしょう。 - -ストアドプロシージャを書くときには型リストが便利です。型リストはそのデータベー -スがサポートしているすべての型を含んでいます。ただしこれはお使いの構文ファイル -に依存します。SQL Anywhere 構文ファイル(sqlanywhere.vim)は以下のような場合に対 -応しています : > - BEGIN - DECLARE customer_id <C-C>T <-- リストから型を選ぶ - - -dynamic な機能 ----------------- -dynamic な機能を使うにはまず dbext.vim -(http://vim.sourceforge.net/script.php?script_id=356) をインストールしなければ -なりません。このプラグインにはチュートリアルが付属しています。SQL 補完プラグイ -ンの観点からすると、dbext の主な機能はデータベースへの接続です。dbext の接続プ -ロファイルは接続情報を定義するためのもっとも効果的なメカニズムです。一度接続が -確立されていれば、SQL 補完プラグインはポップアップを表示する際にバックグラウン -ドで dbext の機能を利用します。 - -dbext.vim を正しく設定したら、テストするためにコマンド :DBListTable を実行しま -す。 テーブルのリストが表示されれば dbext.vim が正常に動作しています。表示され -ない 場合は dbext.txt を読んで調べてください。 - -既に dbext のチュートリアルをやっていれば、<C-C>t でテーブルのリストを表示でき -ることをご存知でしょう。dbext がテーブルリストを作成する間、少々時間がかかりま -す。リストが表示されたら <C-W> を押してください。するとポップアップウィンドウ -と既に選択されたテーブル名の両方が消えます。 > - - 4.3.1 テーブル補完 *sql-completion-tables* - -<C-c>t を押すと、dbext により接続したデータベース内のテーブルのリストが表示さ -れます。 -NOTE: SQL 補完ポップアップはすべてキーマップの前のプリフィックスに対応していま -す。プリフィックスを指定すると、ポップアップウィンドウの内容がその文字列で始ま -るものだけに制限されます。 > - - 4.3.2 カラム補完 *sql-completion-columns* - -SQL 補完プラグインは特定のテーブルのカラムのリストを表示することもできます。 -このカラム補完は <C-C>c で起動できます。 - -NOTE: 以下の例ではポップアップウィンドウの表示中に <Right> でカラムリストを -表示しています。 - -カラム補完を使用している様子の例: - - もう一度 <C-C>t を押すとテーブルのリストが表示されます。 - - 補完ウィンドウにリストが表示されているとき <Right> を押すとテーブル - のリストが消え、途中まで 入力されたテーブルに含まれるカラムのリスト表 - 示に切り替わります(すこし時間がかかります)。 - - <Left> を押すとカラムリストからテーブルリストに切り替わります。これに - よってテーブルリストとカラムリストをとても素早く切り替えられます。 - - 同じテーブルに対してもう一度 <Right> を押すと、今度はカラムリストが - キャッシュされているため時間がかからないことに気づくでしょう。キャッ - シュしているテーブルのスキーマが変更されたときは <C-C>R を押します。す - るとSQL 補完のキャッシュがクリアされます。 - - NOTE: <Right> と <Left> は補完ウィンドウがアクティブな状態で動作す - るよう設計されています。補完のポップアップウィンドウがアクティブでない - 場合はノーマルモードでの <Right> と <Left> の動作になります。 - -SQL 文を動的に組み立てる方法を見ていきましょう。select 文にはカラムのリストが -必要です。SQL 補完プラグインを使ってカラムのリストを組み立てる方法は 2 通りあ -ります。 > - 一度に 1 カラムを挿入する方法: -< 1. SELECT を入力した後に <C-c>t を押してテーブルリストを表示します。 - 2. リストからテーブルを選択します。 - 3. <Right> を押してカラムリストを表示します。 - 4. リストからカラムを選択してエンターを押します。 - 5. "," を入力して <C-c>c を押します。通常、カラムリストを生成するには - カーソルをテーブル名の上に置かねばなりません。プラグインはその名前 - を使ってどのテーブルからカラム リストを抽出するか決定します。このス - テップではカーソルをテーブル名の上に置かずに <C-c>c を押したため、 - 表示されるカラムリストは前に使ったテーブルが対象となります。そして - カラムを選択して続けます。 - 6. ステップ 5 を必要なだけ繰り返します。 > - テーブルの全カラムを挿入する方法: -< 1. SELECT と入力してから <C-C>t を押すとテーブルのリストが表示されます。 - 2. カラムリストを表示したいテーブルにカーソルを合わせます。 - 3. <Enter> を押してテーブルを選択します。 - 4. <C-C>l を押してそのテーブル内の全カラムのカンマ区切りのリストを表示 - させます。 - 5. ステップ 3 で選んだテーブル名に基づいてプラグインは妥当なテーブルエ - イリアスを決定します。ここでそのエイリアスを受け入れるかどうかプロ - ンプトが表示されます。OK を押してください。 - 6. するとテーブル名が消え、代わりにそのテーブルのカラムリスト(各カラム - 名の前にエイリアスがつき、カンマ区切りになったもの)が挿入されます。 - 7. <C-C>L を押すとステップ 3 と 4 を同時に実行できます。これは、リス - トの中で現在選ばれているテーブルで決定するためにマップの中に <C-Y> - を埋め込んでいます。 - -select 文を書くための特別な機能があります。 次の文を書く場合を考えてください: -> - select * - from customer c, - contact cn, - department as dp, - employee e, - site_options so - where c. - -インサートモードで "customer" テーブルのエイリアスである最後の "c." を入力した -後、<C-C>c または <C-X><C-O> を押してみてください。すると customer テーブルの -カラムのリストがポップアップ表示します。これは、select 文の開始位置を見て FROM -句で指定されたテーブルのリストを探しています。この場合は文字列 "customer c" -("c" は customer テーブルのエイリアス)が発見されます。省略可能なキーワード -"AS" にも対応しています。例: "customer AS c" > - - - 4.3.3 プロシージャ補完: *sql-completion-procedures* - -テーブルリストと同様に、<C-C>p でデータベースに登録されているストアドプロシー -ジャのリストを表示できます。 > - - 4.3.4 ビュー補完: *sql-completion-views* - -テーブルリストと同様に、<C-C>v でデータベースに登録されているビューのリストを -表示できます。 > - - -4.4 補完のカスタマイズ *sql-completion-customization* ----------------------------- - -|vimrc| でオプションをセットすることによって SQL 補完プラグインをカスタマイズ -できます: > - omni_sql_no_default_maps -< - 既定値: この変数は定義されていない - - この変数が定義されている場合はオムニ補完用のマップが作られません。よ - り詳しくは |sql-completion-maps| を参照。 -> - omni_sql_use_tbl_alias -< - 既定値: a - - この設定はカンマ区切りのカラムリストを生成するときに参照されます。 - 既定ではカラムリストを生成するマップは <C-C>l です。カラムリストを - 生成するときに各カラムの前にエイリアスがつきます。例えば: - e.emp_id, e.emp_name。このオプションには 3 種類の値を設定できます: > - n - エイリアスを使わない - d - 既定のエイリアス(自動的に決定されたもの)を使う - a - エイリアス名を問い合わせる -< - エイリアスは以下の規則によって決定されます: - 1. テーブル名が '_' を含んでいれば、それを区切り文字に使います - : > - MY_TABLE_NAME --> MTN - my_table_name --> mtn - My_table_NAME --> MtN -< 2. テーブル名が '_' を含んでいないが大文字・小文字が混在してい - れば、それを区切り文字に使います: > - MyTableName --> MTN -< 3. テーブル名が '_' を含んでいなく、大文字・小文字も混在してい - なければテーブル名の最初の文字を使います: > - mytablename --> m - MYTABLENAME --> M - - omni_sql_ignorecase -< - 既定値: 'ignorecase' の現在値 - - 有効な値は 0 または 1。 - - 数文字を入力してから補完を開始すると、リストの要素がその文字列で始ま - るものだけにフィルタされます。このオプションが 0 の場合は、そのフィ - ルタが大文字・小文字を区別します。 > - - omni_sql_include_owner -< - 既定値: dbext.vim 3.00 がインストールされていなければ 0 - - 有効な値は 0 または 1。 - - テーブル、プロシージャ、ビューのリストを補完するとき、dbext.vim 3.00 - 以上を使っていればオブジェクトのリストにその所有者名がつきます。 - これらのオブジェクトを補完するとき omni_sql_include_owner が有効に - なっていればその所有者名も置き換えられます。 > - - omni_sql_precache_syntax_groups -< - 既定値: - ['syntax','sqlKeyword','sqlFunction','sqlOption','sqlType','sqlStatement'] - - sqlcomplete は他のプラグインと組み合わせて使うことができます。その方 - 法の概略は |sql-completion-filetypes| で説明されています。一時的に - ファイルタイプが SQL に変更されたとき、SQL 補完プラグインはこのオプ - ションで指定されたリスト内の構文グループをキャッシュします。 -> - -4.5 SQL 関連のマップ *sql-completion-maps* ------------- - -既定の SQL 関連のマップはこのドキュメントの他の節で詳しく説明しました。ここで -は簡潔な説明つきのマップのリストを示します。 - -static モードのマップ ------------ -以下は Vim の構文強調ルールを使って補完リストを作成するマップです。 > - <C-C>a -< - SQL 構文アイテムを全て表示します。 > - <C-C>k -< - 'sqlKeyword' と定義された構文アイテムを全て表示します。 > - <C-C>f -< - 'sqlFunction' と定義された構文アイテムを全て表示します。 > - <C-C>o -< -'sqlOption' と定義された構文アイテムを全て表示します。 > - <C-C>T -< - 'sqlType' と定義された構文アイテムを全て表示します。 > - <C-C>s -< - 'sqlStatement' と定義された構文アイテムを全て表示します。 > - -dynamic モードのマップ ------------- -以下は dbext.vim プラグインを使用して補完リストを作成するマップです。 > - <C-C>t -< - テーブルのリストを表示します。 > - <C-C>p -< - プロシージャのリストを表示します。 > - <C-C>v -< - ビューのリストを表示します。 > - <C-C>c -< - 指定テーブルのカラムのリストを表示します。 > - <C-C>l -< - 指定テーブルのカラムのリストをカンマ区切りで表示します。 > - <C-C>L -< - 指定テーブルのカラムのリストをカンマ区切りで表示します。 - 補完ウィンドウがアクティブなときだけ使用できます。 > - <Right> -< - 現在補完リストでカーソルが指しているテーブルのカラムリストを表示しま - す。ほとんどの Unix システムでは <Right> を認識できないため、この - マップは Windows でのみ定義されます。同じ機能を Unix でも利用するに - は他のキーを選んで自分の vimrc で同じマップを定義してください。 > - <Left> -< - テーブルのリストを表示します。ほとんどの Unix システムでは <Left> - を認識できないため、このマップは Windows でのみ定義されます。同じ機 - 能を Unix でも利用するには他のキーを選んで自分の vimrc で同じマップ - を定義してください。 -> - <C-C>R -< - キャッシュされた項目を全て削除し、項目のリストを再生成するよう強制し - ます。 - -マップのカスタマイズ --------------------- -好みに応じてマップを作成できます。一般的に、これらのマップは構文強調グループを -定義します。 - -デフォルトで作成されるマップが好みでなかったり、そのキーがお使いのプラット -フォームでは動作しない場合、次の変数を |vimrc| で定義してください: > - let g:omni_sql_no_default_maps = 1 - -ftplugin/sql.vimを直接編集することはやめてください。このファイルを変更しても、 -将来アップデートしたときその変更は上書きされてしまいます。Vim は、ディストリ -ビューションに含まれているファイルを変更することなくカスタマイズを行うために -after というディレクトリ構造を備えています。マップをカスタマイズするには -after/ftplugin/sql.vim を作成します(|after-directory|を参照)。そしてその中で -ftplugin/sql.vim に書かれているのと同じマップを、好みのキーストロークに対して -定義します。<C-C> が選ばれたのは、それが Windows、*nix のどちらでも動作するか -らです。Windows では <C-Space> やALT キーを使うこともできます。 - - -4.6 他のファイルタイプのファイル内で使うには *sql-completion-filetypes* ------------------------------- - -SQL を他のファイルタイプのファイル内で使う機会はよくあります。例えば Perl, -Java, PHP, Javascript はどれもデータベースと対話できます。編集中の言語の補完機 -能に加えて SQL 補完も使いたいという状況はよくあります。 - -そんな場合は、以下のステップによって簡単に実現できます(Perlの例です): > - 1. :e test.pl - 2. :set filetype=sql - 3. :set ft=perl - -ステップ 1 ------- -Perl ファイルの編集を始めます。自動的にファイルタイプが "perl" になります。デ -フォルトで、ファイルタイプ・ファイルの ftplugin/perl.vim が読み込まれます。 -|ft-syntax-omni| に書かれているコマンドによって構文補完プラグインを使っている -場合は、オプション |'omnifunc'| が "syntax#Complete" にセットされます。 -<C-X><C-O> を押すと Perl の構文アイテムを含むオムニポップアップが表示されます。 - -ステップ 2 ------- -手動でファイルタイプを 'sql' にセットすると、やはり対応するファイルタイプ・ -ファイルの ftplugin/sql.vim が読み込まれます。このファイルは、SQL 補完用に多数 -のバッファ固有のマップを定義します(|sql-completion-maps| を参照)。こうしてマッ -プが作成され、SQL 補完プラグインが初期化されます。全ての SQL 構文アイテムが準 -備的にキャッシュされます。SQL ファイルタイプ・スクリプトは2種類の補完プラグイ -ンを使おうとしていることを検出します。<C-C> で始まる SQL 用のマップが呼び出さ -れると、その実行中だけ|'omnifunc'| を切り替えます。そのため、<C-X><C-O> は (構 -文補完プラグインによる) Perl 用の補完のために使用し、<C-C> は SQL 補完機能のた -めに使用できます。 - -ステップ 3 ------- -ファイルタイプを Perl に戻すと、"perl" に関連する全ての構文要素が元通りになり -ます。 - - -vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/gui.jax b/runtime.old/doc/gui.jax deleted file mode 100644 index 626008304..000000000 --- a/runtime.old/doc/gui.jax +++ /dev/null @@ -1,1017 +0,0 @@ -*gui.txt* For Vim バージョン 7.3. Last change: 2010 Nov 03 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -Vimのグラフィカルユーザインタフェース *gui* *GUI* - -1. GUIの開始 |gui-start| -2. スクロールバー |gui-scrollbars| -3. マウス制御 |gui-mouse| -4. GUI選択の作成 |gui-selections| -5. メニュー |menus| -6. 付記 |gui-extras| -7. シェルコマンド |gui-shell| - -他のGUIドキュメント: -|gui_x11.txt| X11 GUIに特有の項目について。 -|gui_w32.txt| Win32 GUIに特有の項目について。 - -{Vi にはこれらのどのコマンドもない} - -============================================================================== -1. GUIの開始 *gui-start* *E229* *E233* - -まずはVimがGUIに対応したバージョンであるか確認する必要がある。それは":version" -コマンドで調べることができる。その出力が "with xxx GUI" または "MS-Windows 32 -bit GUI version" を含んでいれば問題ない。ここで "xxx" は X11-Motif, -X11-Athena, Photon, GTK, GTK2, などである。 - -どのようにGUIで起動するかは使用しているシステムに依存する。たいていはこのよう -にしてGUI版のVimを実行できる: - gvim [options] [files...] - -VimのX11バージョンはGUIとGUIでないモードの両方で実行することができる。 -|gui-x11-start| を参照。 - - *gui-init* *gvimrc* *.gvimrc* *_gvimrc* *$MYGVIMRC* -gvimrc は GUI 固有の初期化コマンドを書くためのファイルである。gvimrc は常に -ファイル |vimrc| の後に読み込まれる。環境変数 $MYGVIMRC があると、その値が -gvimrc の代わりに使われる。 - -GUIの初期化は次の順序で行われる: -- オプション 'term' が "builgin_gui" に設定され、端末の設定がGUI用の初期値に設 - 定される。|terminal-options| -- システムのメニューファイルがあればそれが読み込まれる。このファイルの名前は通 - 常"$VIMRUNTIME/menu.vim"である。":version"でこれを確認できる。|$VIMRUNTIME| - も参照。システムのメニューの読み込みを省略するには'guioptions'に'M'を含める。 - *buffers-menu* *no_buffers_menu* - システムのメニューファイルはメニュー項目"Buffers"(バッファ)の定義も含んでい - る。これを必要としないなら、ユーザーの.vimrc (.gvimrcではない!)で - "no_buffers_menu"を設定する: > - :let no_buffers_menu = 1 -< NOTE: 構文強調表示を有効にするとメニューファイルも読み込まれるため、メニュー - 項目Buffers(バッファ)を無効にするのは":syntax on"の前にする。 - メニューに表示されるバッファの名前は35文字で切り詰められる。違う長さで切り詰 - めるなら、例えば50文字にするなら、次のようにする: > - :let bmenu_max_pathlen = 50 -- Vimを起動するときのコマンドライン引数に"-U {gvimrc}"が指定されると、{gvimrc} - ファイルが初期化のために読み込まれ、以下の初期化処理は省略される。{gvimrc} - が "NONE" の場合は、どの初期化ファイルも読み込まれない。 -- UnixとMS-Windowsでは、システムのgvimrcが存在するなら、それが読み込まれる。こ - のファイルの名前は通常"$VIM/gvimrc"である。":version"でこれを確認できる。 - |$VIM|も参照。 -- 次のものを試して、最初に見つかったものが使用される: - - GVIMINIT環境変数が存在し空でないなら、それがExコマンドとして実行される。 - - ユーザのgvimrcファイルが存在するなら、それが読み込まれる。このファイル - の名前は通常"$HOME/.gvimrc"である。":version"でこれを確認できる。 - - Win32では、$HOMEが設定されていないときは、"$VIM\_gvimrc"が読み込まれる。 - - "_gvimrc"ファイルが見つからないときには、".gvimrc"も試される。逆のときも同 - 様である。 - $MYGVIMRC が設定されていないならば、$MYGVIMRC に最初に見つかったファイルの名 - 前が代入される。 -- 'exrc'オプションが設定されていて(これは標準設定ではない)、./.gvimrcファイル - が存在し、それがシステム、あるいはユーザーのgvimrcファイルではないなら、それ - が読み込まれる。このファイルがユーザーの所有しているものでないなら、いくつか - のセキュリティ上の制限が適用される。".gvimrc"が見つからないときには、 - "_gvimrc"も試される。MacintoshとDOS/Win32では、"_gvimrc"が最初に試される。 - -NOTE: Vimを起動するときに、"-U"引数を指定せずに"-u NONE"を指定するか、あるいは -"-U NONE"を指定して起動すると、最初のもの以外は全て実行されない。 - -これらは全て、ユーザーの.vimrcファイルを読み込む、というような、通常のVimの初 -期化の後に実行される。|initialization|を参照。 -しかし、GUIウィンドウは全ての初期化が実行された後に開かれる。 -GUIウィンドウを開いた直後にいくつかのコマンドを実行したいなら、オートコマンド -の|GUIEnter|イベントを使用する。例えば: > - :autocmd GUIEnter * winpos 100 50 - -カスタマイズしたメニュー(|:menu|を参照)をセットアップしたり、CUI版とは異なった -初期化をするために、gvimrcファイルを使用することができる。 - -ユーザーの個人的なGUI初期化ファイルを置くのに推奨される場所: - Unix $HOME/.gvimrc - OS/2 $HOME/.gvimrcあるいは$VIM/.gvimrc - MS-DOSとWin32 $HOME/_gvimrcあるいは$VIM/_gvimrc - Amiga s:.gvimrcあるいは$VIM/.gvimrc - -GUI版のVimでだけ意味を持つオプションがある。'guicursor'、'guifont'、'guipty'、 -'guioptions'である。それらは他の全てのオプションと共に|options.txt|で説明され -ている。 - -GUIのMotifかAthenaバージョン(GTK+やWin32バージョンではない)を使用しているなら -ば、多くのXのリソースが有効である。|gui-resources|を参照。 - - -端末の設定をする以外に文字の色を設定する方法はハイライトを設定することである。 -ハイライトの"Normal"グループは背景色と前景色を設定するために用いられる。(ナイ -スな)例: > - - :highlight Normal guibg=grey90 - -"guibg"と"guifg"の設定は通常の背景と前景の設定よりも優先される。ハイライトの -Normalグループに対するその他の設定は使用されない。フォントを設定するには -'guifont'を使用する。 - -モード別にカーソルの色を設定するには、'guicursor'オプションを参照。 - -Vimは起動時に、スクリーンに合わせてウィンドウの位置を調整しようとする。これは -ウィンドウの一部が隠れてしまわないようにするためである。X Window Systemでは、 -これは少し憶測を必要とする。'guiheadroom'オプションでウィンドウタイトルとタス -クバーに用いられる高さを変更することができる。 - - *:winp* *:winpos* *E188* -:winp[os] - GUI vimウィンドウの左上隅の現在の位置をピクセルで表示する。全 - てのバージョンで機能する訳ではない。 - -:winp[os] {X} {Y} *E466* - 与えられた{X}と{Y}の座標にGUI vimウィンドウを移動する。座標は - ウィンドウの左上隅の位置をピクセル単位で指定する。全てのバー - ジョンで機能する訳ではない。(新しい)xtermで機能する - |xterm-color|。 - GUIウィンドウがまだ開いていないとき、この値はウィンドウが開か - れるまで保留される。位置はスクリーンに合うように調整される(可 - 能なら)。 - - *:win* *:winsize* *E465* -:win[size] {width} {height} - {width}(幅)と{height}(高さ)を指定してウィンドウの大きさを設定 - する。このコマンドは古いコマンド(Obsolate)なので、 - ":set lines=11 columns=22"を使用するようにしてください。 - 期待したよりも高さが低くなるなら、'guiheadroom'オプションを確 - 認してください。 - -X Window Systemでは、このコマンドでVimのウィンドウの情報を得ることができる: > - :!xwininfo -id $WINDOWID - -============================================================================== -2. スクロールバー *gui-scrollbars* - -垂直スクロールバーと水平スクロールバーがある。'guioptions'オプションでどれが表 -示されるかを設定することができる。 - -このような外観になっている(設定が":set guioptions=mlrb"のとき): - - +------------------------------+ ` - | ファイル 編集 ヘルプ | <- メニューバー(m) ` - +-+--------------------------+-+ ` - |^| |^| ` - |#| テキストエリア |#| ` - | | | | ` - |v|__________________________|v| ` - Vimウィンドウ間の -> |-+ File.c 5,2 +-| ` - 通常のステータス行 |^|""""""""""""""""""""""""""|^| ` - | | | | ` - | | 別のファイルバッファ | | ` - | | | | ` - |#| |#| ` - 左スクロールバー(l)-> |#| |#| <- 右 ` - |#| |#| スクロールバー(r) ` - | | | | ` - |v| |v| ` - +-+--------------------------+-+ ` - | |< #### >| | <- 下 ` - +-+--------------------------+-+ スクロールバー(b) ` - -スクロールバーやメニューバーは'guioptions'から対応する文字を取り除くことで無効 -にできる。下スクロールバーは'nowrap'が設定されているときだけ有用である。 - - -垂直スクロールバー *gui-vert-scroll* - -各Vimウィンドウはとなりにスクロールバーを持っていて、上下にスクロールしてその -バッファ内のテキストの表示を移動できる。スクロールバーのつまみのサイズはウィン -ドウに見えているバッファの割合を示している。スクロールバーがずっと下方にドラッ -グされると、ファイルの最後の行はウィンドウの最上部に表示される。 - -ウィンドウが(他のウィンドウの拡大によって)高さゼロに縮小されると、そのスク -ロールバーは表示されなくなる。それはウィンドウが復元されるときに再び表示され -る。 - -ウィンドウを縦分割しているとき、カレントウィンドウだけがスクロールバーを利用で -きる。そして、複数のウィンドウの真ん中のウィンドウを操作しているときは、スク -ロールバーは間のウィンドウを飛び越えて作用する。 -両側にスクロールバーがあるときに、複数のウィンドウの真ん中のカレントウィンドウ -が左半分に面していると、右側のスクロールバーは右端のウィンドウに影響する。左右 -が逆でも同様。 - - -水平スクロールバー *gui-horiz-scroll* - -(Vim GUIの最下段の)水平スクロールバーは、'wrap'オプションがオフのときに、テキ -ストを横にスクロールするために使用する。スクロールバーのつまみのサイズは、左右 -にスクロールして一番長い行のテキストを全て表示できるくらいである。必要に応じて -カーソルが移動するとき、カーソルは表示されている文字の上にとどまる -('virtualedit'が設定されていなければ)。 - -一番長い行を計算するのは多少の処理時間を必要とする。そしてそれは何かが変更され -るときに毎回行われる。その時間が多すぎるようだったり、他の行へのカーソルジャン -プを好まないなら、'guioptions'に'h'を含めると、スクロールはカーソルのある行の -長さに制限される。 - - *athena-intellimouse* -インテリマウスを持っていて、Xサーバがホイールをサポートしているなら、gvimでテ -キストを上下にスクロールするのにホイールを使うことができる。これはXFree86 4.0 -以降のバージョンで機能する。古いバージョンでもパッチを当てれば利用可能になる。 -|scroll-mouse-wheel|を参照。 - -古いバージョンのXFree86ではXサーバにパッチを当てなくてはならない。以下のページ -にはパッチとXサーバのバイナリへのリンクに加えて、Linux上でインテリマウスを使用 -することについて多少の情報がある(けれども必要とするものはないかもしれない): - http://www.inria.fr/koala/colas/mouse-wheel-scroll/ - -============================================================================== -3. マウス制御 *gui-mouse* - -マウスは、'mouse'オプションに適切なフラグが設定されている場合にだけ機能する。 -GUIに切り替わるときに、'mouse'がまだ設定されていなければ、'mouse'オプションは -自動的に"a"に設定され、|hit-enter|プロンプトを除いて全てのモードで有効になる。 -これを望まないならば、"gvimrc"ファイルで'mouse'オプションを変更する。 - -関連する他のオプション: -'mousefocus' マウスポインタが乗っているウィンドウをカレントウィンドウにする - |gui-mouse-focus| -'mousemodel' マウスのボタンがどのような動作をするか -'mousehide' テキストを入力している間マウスポインタを隠す -'selectmode' 選択時に選択モードとビジュアルモードのどちらを使うか - -素早くこれらを設定するには":behave"コマンドで行う。 - *:behave* *:be* -:be[have] {model} マウスと選択の動作を設定する。有効な引数は: - mswin MS-Windowsの動作 - xterm Xtermの動作 - - ":behave"を使用するとこれらのオプションが変更される: - option mswin xterm ~ - 'selectmode' "mouse,key" "" - 'mousemodel' "popup" "extend" - 'keymodel' "startsel,stopsel" "" - 'selection' "exclusive" "inclusive" - -$VIMRUNTIMEディレクトリの中に、MS-Windowsにあるようなcut/copy/paste機能のため -のキーマッピングを設定する|mswin.vim|と呼ばれるスクリプトがある。これは、 -CTRL-V、CTRL-X、CTRL-Cキーを用いるので、標準の操作と互換性がなくなってしまう。 -それでも構わないなら、このコマンドで使用する: > - :so $VIMRUNTIME/mswin.vim - -マウスのホイールでスクロールするには、|scroll-mouse-wheel|を参照。 - - -3.1 マウスによるカーソルの移動 *gui-mouse-move* - -カーソルを持って行きたいテキストバッファのどこかでマウスの左ボタンをクリックす -ると、カーソルはそこに行く! -動作するモード 'mouse'が以下を含んでいるとき ~ -ノーマルモード 'n' or 'a' -ビジュアルモード 'v' or 'a' -挿入モード 'i' or 'a' - -選択モードはビジュアルモードのように扱われる。 - -現在のカーソル位置からマウスで指示する位置までのテキストを削除するために'd'の -ようなオペレータと共にこれを使用してもよい。つまり、'd'を入力してからどこかを -マウスでクリックする。 - - *gui-mouse-focus* -'mousefocus'オプションを設定してキーボードフォーカスがマウスポインタに追従する -ようにできる。これはマウスポインタが乗っているウィンドウがアクティブウィンドウ -になることを意味する。警告: メニューをうまく利用できなくなる。メニューを使用し -たときに、そのメニューに設定されたコマンドは常に一番上のウィンドウに適用されて -しまうだろう。 - -('mouse'が'c'、'a'、'A'のどれかを含んでいるなら)コマンドラインモードや検索モー -ド中にマウスの左ボタンか右ボタンをクリックすることで、コマンドラインの行のク -リックした位置にカーソルを移動できる。 - -どのような状況でも、マウスの中ボタンをクリックして、現在の選択を張り付けること -ができる。 - - -3.2 マウスによる選択 *gui-mouse-select* - -マウスを使って選択を開始できる。どのように使用するかは'mousemodel'オプションに -依存する: -'mousemodel'が"extend"である: マウスの右ボタンを使用する。 -'mousemodel'が"popup"である: Shiftキーを押しながら、マウスの左ボタンを使用す -る。 - -選択を開始するときには、カーソルの位置からマウスで指示した位置までが選択され -る。すでに選択されている状態で選択の操作をすると、選択範囲が拡張される。 - -'selectmode'が"mouse"を含んでいるなら、選択モードが使用される。これは選択中に -入力した文字で選択範囲が置き換えられることを意味する。 -|Select-mode|を参照。そうでなければ、ビジュアルモードが使用される。 - -ダブルクリックで単語の選択、トリプルクリックで行の選択、クワドルプルクリック -(4回クリック)で矩形ブロックを選択することができる。 - -どのように選択が用いられるかに関しては|gui-selections|を参照。 - - -3.3 マウスによる他のテキスト選択 *gui-mouse-modeless* - *modeless-selection* -次のときには異なる選択方法が使われる: -- コマンドラインモード -- コマンドラインウィンドウを使用中に他のウィンドウを指したとき -- |hit-enter|プロンプト -- 現在のモードが'mouse'オプションで指定されていないときはいつでも -- GUIでCTRLキーとSHIFTキーを同時に押しているとき - -テキストが選択されていても、選択されていないかのように、あるいは、選択に関連し -たモードが存在しないかのように、Vimが通常の動作を継続するので、これはモードレ -ス選択と呼ばれる。Vimウィンドウの中のどんなテキストでも選択することができる。 -開始点でマウスの左ボタンを押すことでテキストを選択し、終点までドラッグして離 -す。選択を延長するには、'mousemodel'が"extend"のときにはマウスの右ボタンを使用 -し、'mousemodel'が"popup"のときにはシフトキーを押しながらマウスの左ボタンを使 -用する。 -選択したテキストが変更されると、選択は解除される。 - -コマンドラインではCTRL-Yで選択範囲をクリップボードにコピーできる。インサート -モード中にコピーするにはCTRL-Oを使いCTRL-Y <CR>とする。'guioptions' に a か A -が含まれるとき(X11 では既定でそうなっている)は、選択範囲が自動的にレジスタ "* -にコピーされる。 - -マウス中ボタンでテキストを貼り付けられる。X11 以外のシステムでは CTRL-R + を -使えば貼り付けられる。 - - -3.4 ステータス行でのマウスの使用 *gui-mouse-status* - -Vimウィンドウの下のステータス行でマウスの左ボタンか右のボタンをクリックするこ -とでそのウィンドウがカレントウィンドウになる。これはボタンを放したときに起こる -(クリックとドラッグの操作を区別するため)。 - -左ボタンを使ってステータス行を上下にドラッグすると、ウィンドウのサイズを上下に -変更できる。この操作ではそのウィンドウはカレントウィンドウにならない。 - -ウィンドウの垂直の区切りも同様に機能する。クリックした区切りの左のウィンドウが -カレントウィンドウになる。左右にドラッグするとウィンドウの幅を変更できる。 - - -3.5 様々なマウスクリック *gui-mouse-various* - - <S-LeftMouse> マウスクリックで単語を前方検索する。'mousemodel'が - "popup"のときには、これは選択を開始するか、あるいは延 - 長する。 - <S-RightMouse> マウスクリックで単語を後方検索する。 - <C-LeftMouse> マウスクリックでタグ名へジャンプする。 - <C-RightMouse> 直前のタグジャンプの前の位置に戻る("CTRL-T"と同じ)。 - - -3.6 マウスマッピング *gui-mouse-mapping* - -修飾キー付きのマウスイベントをマッピングすることもできる。例えば: > - :map <S-LeftMouse> <RightMouse> - :map <S-LeftDrag> <RightDrag> - :map <S-LeftRelease> <RightRelease> - :map <2-S-LeftMouse> <2-RightMouse> - :map <2-S-LeftDrag> <2-RightDrag> - :map <2-S-LeftRelease> <2-RightRelease> - :map <3-S-LeftMouse> <3-RightMouse> - :map <3-S-LeftDrag> <3-RightDrag> - :map <3-S-LeftRelease> <3-RightRelease> - :map <4-S-LeftMouse> <4-RightMouse> - :map <4-S-LeftDrag> <4-RightDrag> - :map <4-S-LeftRelease> <4-RightRelease> -これらのマッピングは、Motifアプリケーションの作法にしたがって、選択領域を拡張 -するために、マウスの右ボタンを使わずに、Shiftキーを押しながら左ボタンを押す方 -法を設定している。 - -修飾キーを使ったマウス操作のマッピングはモードレス選択では機能しない。 - - -3.7 ドラッグ&ドロップ *drag-n-drop* - -Vimウィンドウに1つ、あるいは複数のファイルをドラッグ&ドロップすることができ -る。ファイルは|:drop|コマンドを使ったときのように開かれる。 - -Shiftキーを同時に押していると、Vimはカレントディレクトリをドロップされた最初の -ファイルがあるディレクトリに変更する。Ctrlキーを同時に押していると、ファイルを -開くためにウィンドウを分割する。押してなければカレントバッファが変更されていな -いときだけファイルは開かれる。 - -ディレクトリをVimにドロップすることもできる。この操作はexplorerプラグインでそ -のディレクトリを開く(それが利用可能だと想定している。無理ならエラーが表示され -るだろう)。Shiftキーを同時に押していれば、ディレクトリを開かずに、カレントディ -レクトリをそのディレクトリに変更する。 - -コマンドラインを編集中なら、ドロップされたファイルやディレクトリの名前がカーソ -ル位置に挿入される。これはExコマンドでそれらの名前を使うのに便利である。特別な -文字(スペース、タブ、ダブルクォート、'|'、MS-Windows以外ではバックスラッシュ -も)はエスケープされる。 - -============================================================================== -4. GUI選択の作成 *gui-selections* - - *quotestar* -マウス(|gui-mouse-select|を参照)か、あるいはVimのビジュアルモード(|v|を参照)を -使用して、選択を作成できる。'guioptions'に'a'が指定されているなら、いつ選択(ビ -ジュアルモードや選択モード)が開始されるとしても、あるいは選択が変更されるとし -ても、Vimがウィンドウシステムの主要な選択の所有者になる(MS-Windowsでは -|gui-clipboard|が用いられる。X11では|x11-selection|が用いられる。ここの説明は -両方に共通している)。 - - *clipboard* -選択を保存するための特別なレジスタがある。それは"*レジスタである。どのテキスト -が選択されているかという情報が(例えばマウスの左ボタンをクリックするなどして)変 -更されるか、あるいは他のアプリケーションが選択されたテキストを張り付けようとし -ない限りここには何も書き出されない。使用されるときにはテキストは"*レジスタに書 -き出される。例えば、行を切り取って、それを現在の選択にして、クリップボードにそ -れを書き出すためには次のようにする: > - - "*dd - -同様に、例えば、マウスの中ボタンをクリックするなどして、他のアプリケーションか -ら選択を貼り付けるときには、選択は始めに"*レジスタに書き出され、それから他のレ -ジスタと同じように挿入される。例えば、選択(クリップボードの内容)を張り付けるに -は: > - - "*p - -X11でこのレジスタを使うには、|x11-selection|も参照。これは深く関連した "+ レジ -スタについても説明している。 - -あるVimから他の独立したVimにテキストを貼り付けたいときには、選択のタイプ(文 -字、行あるいはブロック)もコピーされることに注意する。他のアプリケーションにつ -いては、タイプは常に文字である。|x11-cut-buffer|を介して得たテキストでも、その -選択のタイプは常に失われる。 - -'clipboard'オプションに"unnamed"文字列が含まれているときには、無名レジスタは"* -レジスタと同じである。したがってコマンドの前に"*を付けずに選択をコピーし貼り付 -けることができる。 - -============================================================================== -5. メニュー *menus* - -まずはユーザーマニュアルの|usr_42.txt|を御覧ください。 - -5.1 メニューの使用 *using-menus* - -基本的には、メニューは単にマッピングのように使用することができる。自分のメ -ニューを好きなだけたくさん定義することができる。 -長い間Vimユーザーはメニューを十分に使用してこなかった。しかし自分のメニューや -メニュー項目を追加することは大きな力を秘めている。ある一連のキー操作を覚えられ -ないようなときに最も便利である。 - -別の言語用にメニューを作成するには、|:menutrans|を参照。 - - *menu.vim* -標準のメニューは"$VIMRUNTIME/menu.vim"ファイルから読み込まれる。パスがどこを指 -すかについては|$VIMRUNTIME|を参照。ユーザーは自分のメニューを設定することがで -きる。そのさいに標準のメニューを利用するのはいい考えである。メニューに項目を追 -加したり、あるいは、標準のメニューが気に入らなければ、全てのメニューを取り除く -ことができる|:unmenu-all|。.vimrcファイル(.gvimrcファイルではない!)にこの行を -追加することで標準のメニューが読み込まれないようにすることもできる: > - :let did_install_default_menus = 1 -メニュー項目のSyntax(シンタックス)も無効にしたいなら: > - :let did_install_syntax_menu = 1 -メニュー項目のSyntax(シンタックス)は欲しいが、利用可能なシンタックスファイルの -一覧はいらないなら(これを読み込むのは多少の時間を必要とするので): > - :let skip_syntax_sel_menu = 1 -Syntax メニューの最初の項目(訳注:「対応形式をメニューに表示」)を使うと、利用可 -能な全てのファイルタイプをメニューに表示できる(読み込みに少し時間がかかるかも -しれない)。起動時に全てのファイルタイプが表示されているようにしたければ次の行 -を加える: > - :let do_syntax_sel_menu = 1 - -< - *console-menus* -このドキュメントはGUIの項目であるけれども、CUI版のVimでも実際にメニューを使用 -することができる。そのときには明示的に|menu.vim|を読み込まなければならないだろ -う。それは標準では設定されない。ほぼ実際のメニューシステムのようにメニューの項 -目にアクセスするために'wildmenu'を設定して|:emenu|コマンドの使用時にコマンドラ -イン補完を使用することができる。これをするには、.vimrcファイルに次のコマンドを -付加しておく: > - :source $VIMRUNTIME/menu.vim - :set wildmenu - :set cpo-=< - :set wcm=<C-Z> - :map <F4> :emenu <C-Z> -メニューを開始するには<F4>を押す。そのときにはメニューのエントリを選択するため -にカーソルキーを使用することができる。それを実行するには<Enter>を入力する。 -キャンセルするには<Esc>を入力する。これはコンパイル時に|+menu|機能を有効にする -必要がある。 - - *tear-off-menus* -GTK+とMotifは切取りメニュー(Tear-offメニュー)をサポートする。これは少し変わっ -たメニューで、ポップアップメニューが常に表示されるようなものである。メニューの -ウィンドウのサイズの変更が正確に機能しないなら、これはリソースに"Vim*geometry" -のように設定していることが原因かもしれない。もしそうなら代わりに"Vim.geometry" -を使用する。 - -Win32 GUIバージョンはMotifの切取りメニューをエミュレートする。Motifユーザーな -ら簡単に違いを確認できるだろうが、同じように便利に使えると思う。|:tearoff|コマ -ンドと|hidden-menus|を利用して、メインのメニューバーに項目を作らずに切取りメ -ニューを作ることができる。 - - -5.2 新しいメニューの作成 *creating-menus* - - *:me* *:menu* *:noreme* *:noremenu* - *:am* *:amenu* *:an* *:anoremenu* - *:nme* *:nmenu* *:nnoreme* *:nnoremenu* - *:ome* *:omenu* *:onoreme* *:onoremenu* - *:vme* *:vmenu* *:vnoreme* *:vnoremenu* - *:xme* *:xmenu* *:xnoreme* *:xnoremenu* - *:sme* *:smenu* *:snoreme* *:snoremenu* - *:ime* *:imenu* *:inoreme* *:inoremenu* - *:cme* *:cmenu* *:cnoreme* *:cnoremenu* - *E330* *E327* *E331* *E336* *E333* - *E328* *E329* *E337* *E792* -新しいメニュー項目を作るには、":menu"コマンドを使用する。これはほとんど":map" -のコマンド群と同じだが最初の引数はメニュー項目の名前であり、'.'で区切ったメ -ニューとサブメニューのパスとして与えられる。例えば: > - - :menu File.Save :w<CR> - :inoremenu File.Save <C-O>:w<CR> - :menu Edit.Big\ Changes.Delete\ All\ Spaces :%s/[ ^I]//g<CR> - -この最後の1つはメニューバーに"Edit"という新しい項目を作る、そしてその上でマウ -スのボタンを押すと"Big Changes"という項目を含んだメニューが表示されるだろう。 -"Big Changes"は"Delete All Spaces"という項目を含むサブメニューを持っていて、そ -の項目を選択すると操作が実行される。 - -メニュー名での特殊文字: - & この文字の次の文字はショートカットキーである。どのショートカッ - トキーも(サブ)メニューの中で1度だけしか使用されていないことを - 確認すること。メニュー名に"&"を入れるには"&&"とする。 - <Tab> メニューの名前をそこで区切って以降を右詰めにする。実行する操作 - をそろえて表示するのに便利である。使いやすいように文字として - "<Tab>"をそのまま書けばいいようになっている。本当のTab文字を使 - 用するなら、その前にバックスラッシュを付けること! -例: > - - :amenu &File.&Open<Tab>:e :browse e<CR> - -[文字通りタイプする] -(<Alt>キーと同時に)ショートカットキーの"F"を押し、それから"O"を押すと、このメ -ニューを使用できる。Openの項目は"Open :e"のように表示される。":e"は右詰め -され、"O"にはショートカットであることを示すために下線が引かれる。 - -":amenu"コマンドは全てのモードで使えるメニューの項目を1度に定義することができ -る。コマンドを正確に機能させるために、いくつかのモード用に自動的に文字が付加さ -れる: - モード 前に付加 後ろに付加 ~ - ノーマルモード なし なし - ビジュアルモード <C-C> <C-\><C-G> - 挿入モード <C-\><C-O> - コマンドラインモード <C-C> <C-\><C-G> - 演算子未解決モード <C-C> <C-\><C-G> - -後ろに付加されるCTRL-\ CTRL-Gは'insertmode'が設定されているときには挿入モード -に戻る。|CTRL-\_CTRL-G|を参照。 - -例: > - - :amenu File.Next :next^M - -は以下と同じである: > - - :nmenu File.Next :next^M - :vmenu File.Next ^C:next^M^\^G - :imenu File.Next ^\^O:next^M - :cmenu File.Next ^C:next^M^\^G - :omenu File.Next ^C:next^M^\^G - -注意: 挿入モードでは1つのノーマルモードのコマンドに対してだけ機能する。これは -CTRL-Oの仕様による。2つ以上のコマンドを使うには、":imenu"コマンドを使用する必 -要がある。どのモードでもテキストを挿入するために式レジスタ('='レジスタ)を使用 -することができる: > - - :amenu Insert.foobar "='foobar'<CR>P - -Note: 'cpoptions'の中の'<'フラグと'k'フラグが適用される(含まれていたときには、 -<>による特殊キーの書式や生のキーコードは認識されない)。 - -Note: コマンドラインモードでの<Esc>はマッピングで使用されたときと同様に(入力を -キャンセルするのではなく)コマンドを実行する。これはVi互換である。コマンドライ -ンモードを終了するにはCTRL-Cを使用する。 -訳注: |c_<Esc>|を参照 - - *:menu-<silent>* *:menu-silent* -実行したコマンドをコマンドラインに表示しないようなメニューを定義するには、最初 -の引数に"<silent>"を加える。例: > - :menu <silent> Settings.Ignore\ case :set ic<CR> -これでこのメニューを使っても":set ic"はコマンドラインに表示されない。それでも -実行したコマンドの出力は表示される。それを表示しないようにするには、":silent" -を付けてコマンドを実行する: > - :menu <silent> Search.Header :exe ":silent normal /Header\r"<CR> -"<silent>" は "<special>" や "<script>" の直後に書いてもよい。 - - *:menu-<special>* *:menu-special* -'cpoptions' にフラグ "<" が含まれているときでも、メニューを定義する際には <> -記法で特殊なキーを表すことができる。これは 'cpoptions' の副作用が望ましくない -場合に便利である。例: > - :menu <special> Search.Header /Header<CR> -"<special>" はコマンド :menu の引数の一番最初か、"<silent>" や"<script>"の直後 -に書かねばならない。 - - *:menu-<script>* *:menu-script* -メニューに指定されたコマンドにはマッピングが適用される。適用しないようにするに -は、":noremenu"コマンド(とそれに類するモード別のコマンド)を使う。スクリプト -ローカルなマッピングを使うには":menu"コマンドの最初の引数、あるいは"<silent>" -の次に"<script>"と書く。 -訳注: これは<SID>で指定した部分だけがマッピングされる。例: -訳注: nnoremenu <script> AAA.BBB :echo "<SID>LM" "LM"<CR> -訳注: cnoremap <SID>LM 'This is script-local mapping' -訳注: cnoremap LM 'This is not used' -訳注: スクリプトファイルでこのように設定し、メニューのAAA.BBBを実行すると -訳注: 'This is script-local mapping' LM -訳注: と表示される。"<SID>LM"はマッピングされ、"LM"はマッピングされていない。 - - *menu-priority* -メニューに優先度を与えることができる。より高い優先度を与えられたメニューほど右 -に配置される。優先度は":menu"コマンドの前の数字で与えれられる。 -例: > - :80menu Buffer.next :bn<CR> - -標準のメニューはこれらの優先度を持つ: - File 10 - Edit 20 - Tools 40 - Syntax 50 - Buffers 60 - Window 70 - Help 9999 - -優先度を指定しない、あるいはゼロを指定すると、500が用いられる。 -ポップアップメニューに対しては優先度は意味を持たない。 - -メニューの「Help」の項目は、それをサポートしているシステム(MotifとGTK+)では、 -メニューバーの右端に寄せて置かれる。GTK+ 2では、メニューのHelpを右端に寄せるの -は今のところユーザーインターフェースデザインの妨げになっているので、もはやサ -ポートされない。 - -ヘルプメニューの後ろに置くために、9999より高い優先度を使用することができるが、 -それは非標準であり、推奨しない。優先度の取り得る値は最高で約32000である。最低 -は1である。 - - *sub-menu-priority* -同様にサブメニューも配置を指定できる。優先度は、メニュー名の前に、ドット区切り -の優先度のリストとして指定する: > - :menu 80.500 Buffer.next :bn<CR> -サブメニューの優先度を与える必要があるのは、項目を配置する位置を指定したいときだ -けである。例えば、他の項目の前にサブメニューを置くには: > - :menu 80.100 Buffer.first :brew<CR> -あるいは他の項目の後にサブメニューを置いて、標準設定の優先度を持つ項目がその前 -に置かれるようにするには: > - :menu 80.900 Buffer.last :blast<CR> -数字が抜けているときには、標準設定の500が用いられる: > - :menu .900 myMenu.test :echo "text"<CR> -メニューの優先度はメニューを新しく生成するときだけ用いられる。すでにあるとき、 -例えば、別のモードで定義されていたときには、優先度は変更されない。したがって、 -優先度はメニューを最初に定義するときだけ与える必要がある。 -例外はポップアップメニューである。各モード(ノーマルモード、演算子未解決モー -ド、ビジュアルモード、挿入モード、コマンドラインモード)に別々のメニューがあ -る。これらのメニューは順序が異なってもよい。これはメニューバーのメニューとは異 -なる。メニューバーのメニューは全てのモードで同じ順序である。 -NOTE: サブメニューの優先度は現在全てのGUIのバージョンで機能する訳ではない。 - - *menu-separator* *E332* -メニューの各項目は特殊なメニュー項目を使って区切ることができる。それはシステム -によるが、線や点線として表示される。そのような項目の名前は'-'で始めて'-'で終わ -るように定義する。間には一意な名前を挟むことができる。普通のメニュー項目と同様 -に優先度を設定することもできる。 -例: > - :menu Example.item1 :do something - :menu Example.-Sep- : - :menu Example.item2 :do something different -Note: 区切りの定義にはコマンドの指定が必要である。そのメニュー項目は選択するこ -とができないので、内容はなんでも構わない。ただ単にコロン(:)を1つ書いておくだけ -でいい。 - - *gui-toolbar* -ツールバーは今のところWin32、Athena、Motif、GTK+ (X11)、Photon GUIで利用可能で -ある。いずれは他のGUIでも使えるようになるだろう。標準のツールバーはmenu.vimで -定義されている。 -ツールバーの表示は'guioptions'の文字'T'によって制御される。したがって、メ -ニューとツールバーを同時に、あるいはどちらかだけを表示することもできるし、両方 -とも非表示にすることもできる。 -表示方法は 'toolbar' オプションで変更できる。画像かテキスト、もしくは両方を表 -示するかを選択できる。 - - *toolbar-icon* -ツールバーは、1つのレベルだけを持つToolBarと呼ばれる特別なメニューとして定義さ -れている。Vimはこのメニューの項目を以下のように解釈する: -1) "icon="引数が与えられたときは、そのファイルが使われる。ファイル名にはフル - パスか、ファイル名のみを指定する。後者の場合には、そのファイルは3)の場合と - 同じように'runtimepath'の"bitmaps"ディレクトリから検索される。例: > - :amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo"<CR> - :amenu icon=FooIcon ToolBar.Foo :echo "Foo"<CR> -< Note: 最初の例では拡張子も含めている。2番目の例では拡張子は省略されてい - る。 - ファイルが開けなければ2)を試す。 - ファイル名に空白を含めるにはバックスラッシュでエスケープする。 - メニューの優先度はiconの引数の後に指定する: > - :amenu icon=foo 1.42 ToolBar.Foo :echo "42!"<CR> -2) 'BuiltIn##'(##は数字である)という名前の項目はVimで利用可能な組み込みのビッ - トマップの番号##を使用するとみなされる。今のところ、0から30までの31個の一 - 般的な編集操作のものが用意されている|builtin-tools|: > - :amenu ToolBar.BuiltIn22 :call SearchNext("back")<CR> -3) 2)以外の名前を持つ項目は最初に'runtimepath'の"bitmaps"ディレクトリから検索 - される。もしあればそのビットマップファイルがツールバーボタンのイメージとし - て用いられる。正確なファイル名はOS特有であることに注意する。例えば、Win32 - でのコマンド > - :amenu ToolBar.Hello :echo "hello"<CR> -< は、'hello.bmp'ファイルを検索するだろう。GTK+/X11では'Hello.xpm'である。 - GTK+ 2では'Hello.png'、'Hello.xpm'、'Hello.bmp'がチェックされ、最初に見つ - かったものが使われる。 - MS-WindowsとGTK+ 2ではビットマップはボタンの大きさに合わせて拡大縮小され - る。MS-Windowsでは縦18横18のサイズがちょうどいいだろう。 - MS-Windowsではビットマップは16色の標準パレットを使った物である。明るい灰色 - はウィンドウのフレームの色に変更され、暗い灰色はウィンドウの影の色に変更さ - れる。システムに依存するが、16色よりも色が多くても問題ないだろう。 -4) ビットマップがまだ見つからないならば、Vimは組み込みの名前のリス - トに対して同等のものを探す。どの組み込みのボタンイメージも名前を持ってい - る。だから、コマンド - :amenu ToolBar.Open :e - は、open.bmpが存在しなければ、組み込みの"open a file"ボタンイメージを表示 - するだろう。全ての組み込みの名前はmenu.vimで用いられているので確認できる。 -5) 全てが失敗すると、空白だが、ちゃんと機能する、ボタンが表示される。 - - *builtin-tools* -番号 名前 通常の動作 ~ -00 New 新しいウィンドウを開く -01 Open 現在のウィンドウで開くためにファイルをブラウズする -02 Save バッファをファイルに保存する -03 Undo 最後の変更を取り消す -04 Redo 最後の取り消した変更をやり直す -05 Cut 選択されたテキストを削除しクリップボードへ送る -06 Copy 選択されたテキストをクリップボードにコピーする -07 Paste クリップボードからテキストをペーストする -08 Print 現在のバッファを印刷する -09 Help Vimの組み込みのヘルプでバッファを開く -10 Find 検索コマンドを開始する -11 SaveAll 全ての修正されたバッファをファイルに保存する -12 SaveSesn 現在の状態をセッションファイルに保存する -13 NewSesn 新しいセッションファイルに保存する -14 LoadSesn セッションファイルを読み込む -15 RunScript Vimスクリプトとして実行するためにファイルをブラウズ - する -16 Replace 置換コマンドのためのプロンプト -17 WinClose 現在のウィンドウを閉じる -18 WinMax 現在のウィンドウに使用する行数を最大にする -19 WinMin 現在のウィンドウに使用する行数を最小にする -20 WinSplit 現在のウィンドウを分割する -21 Shell シェルを開始する -22 FindPrev 後方に再検索する -23 FindNext 前方に再検索する -24 FindHelp ヘルプを検索する単語のためのプロンプト -25 Make makeを実行し最初のエラーにジャンプする -26 TagJump カーソルの下のtagにジャンプする -27 RunCtags 現在のディレクトリのファイルに対してtagsを作成する -28 WinVSplit 現在のウィンドウを縦分割する -29 WinMaxWidth 現在のウィンドウの幅を最大化する -30 WinMinWidth 現在のウィンドウの幅を最小化する - - *hidden-menus* *win32-hidden-menus* -Win32とGTK+ GUIでは、']'で始まるメニュー名はメインのメニューバーから除外され -る。それを表示するには|:popup|か|:tearoff|コマンドを使用しなければならない。 - - *popup-menu* -Win32、GTK+、Motif、Athena、Photon GUIでは、特別なメニュー"PopUp"を定義するこ -とができる。これは、'mousemodel'がpopupあるいはpopup_setposに設定されていると -きに、マウスの右ボタンが押されると表示されるメニューである。 - - -5.3 メニューの定義を表示する *showing-menus* - -メニューがどのように定義されているかを確認するには、(":map"コマンドでするのと -全く同様に)menuコマンドの後にたった1つの引数を指定するだけである。指定されたメ -ニューがサブメニューならば、その階層の下の全てのメニューが表示される。:menuの -後に引数を与えなければ、適切なモードに対する全てのメニュー項目が表示される(例 -えば、コマンドラインモードに対して:cmenu)。 - -メニュー項目の一覧には、指定されたコマンドの前に特別な文字が表示される: -* そのメニュー項目は再マッピングを避けるために"nore"を付けて定義された -& そのメニュー項目は再マッピングをスクリプトローカルに限定するために - "<script>"を付けて定義された -- そのメニュー項目は非表示である - -NOTE: menuコマンドでメニューの名前を入力しているときに<Tab>を打つと名前が補完 -される(設定による)。 - - -5.4 メニューの実行 *execute-menus* - - *:em* *:emenu* *E334* *E335* -:[range]em[enu] {menu} コマンドラインから{menu}を実行する。 - 通常はノーマルモードのメニューを実行する。実行 - 範囲が与えられたときは、ビジュアルモードのメ - ニューを実行する。 - <c-o>から実行されたときは、挿入モードのメ - ニューを実行する。例: > - :emenu File.Exit - -CUI版のvimをWANT_MENUを定義してコンパイルしたなら、:emenuを使ってGUIのときと同 -じように便利なメニューを使用できる。そのさいに'wildmenu'を設定しておくと便利で -ある。使用例は|console-menus|を参照。 - -範囲を指定するとき、'<,'>と指定すると、最後にビジュアル選択した範囲に対して実 -行される。 - - -5.5 メニューの削除 *delete-menus* - - *:unme* *:unmenu* - *:aun* *:aunmenu* - *:nunme* *:nunmenu* - *:ounme* *:ounmenu* - *:vunme* *:vunmenu* - *:xunme* *:xunmenu* - *:sunme* *:sunmenu* - *:iunme* *:iunmenu* - *:cunme* *:cunmenu* -メニュー項目やサブメニュー全体を削除するには、unmapコマンドによく似たunmenuコ -マンドを使用する。例えば: > - :unmenu! Edit.Paste - -これは挿入モードとコマンドラインモードでの操作をEditメニューの項目Pasteから取 -り除く。 - -NOTE: umenuコマンドでメニューの名前を入力しているときに<Tab>を打つと名前が補完 -される(設定による)。 - -全てのメニューを取り除くには次のようにする: *:unmenu-all* > - :unmenu * " ノーマルモードとビジュアルモードの全てのメニューを取 - " り除く - :unmenu! * " 挿入モードとコマンドラインモードの全てのメニューを取 - " り除く - :aunmenu * " 全てのモードの全てのメニューを取り除く - -メニューバーを非表示にするには: > - :set guioptions-=m - - -5.6 メニューを無効にする *disable-menus* - - *:menu-disable* *:menu-enable* -メニューを削除するのではなくて、一時的に無効にしたいときは、":menu"コマンドに -"disable"キーワードを指定する。有効にするには"enable"キーワードを指定する。 -例: > - :menu disable &File.&Open\.\.\. - :amenu enable * - :amenu disable &Tools.* - -このコマンドはmenuコマンド群が影響する各モードに適用される。"&"は翻訳された名 -前にも適用するために必要である。 -引数に"*"を使うと、全てのメニューに作用する。そうでなければ、指定したメニュー -項目とそのサブメニューに作用する。 - - -5.7 メニューの例 *menu-examples* - -これはメニューを使ってメニュー項目を追加する方法の例である! カーソルの下のキー -ワードをメニュー項目に追加することができる。作業用にレジスタ"z"を使用してい -る。 > - - :nmenu Words.Add\ Var wb"zye:menu! Words.<C-R>z <C-R>z<CR> - :nmenu Words.Remove\ Var wb"zye:unmenu! Words.<C-R>z<CR> - :vmenu Words.Add\ Var "zy:menu! Words.<C-R>z <C-R>z <CR> - :vmenu Words.Remove\ Var "zy:unmenu! Words.<C-R>z<CR> - :imenu Words.Add\ Var <Esc>wb"zye:menu! Words.<C-R>z <C-R>z<CR>a - :imenu Words.Remove\ Var <Esc>wb"zye:unmenu! Words.<C-R>z<CR>a - -(指定するコマンドには<>記法を使える。このテキストをそのままコピー/ペーストして -試してみたり、gvimrcに書き加えることができる。"<C-R>"はCTRL-Rであり、"<CR>"は -<CR>キーである。|<>|) - - -5.8 ツールチップとメニューチップ - -ユーザーマニュアルの|42.4|を御覧ください。 - - *:tmenu* *:tm* -:tm[enu] {menupath} {rhs} メニューやツールバーにチップを定義する。 - {X11とWin32 GUIのみ} - -:tm[enu] [menupath] メニューチップを一覧表示する。 - {X11とWin32 GUIのみ} - - *:tunmenu* *:tu* -:tu[nmenu] {menupath} メニューやツールバーのチップを削除する。 - {X11とWin32 GUIのみ} - -メニューの項目にチップが定義されていて、マウスがその項目の上にあるとき、その -チップがコマンドラインに表示される。それはWindows標準でステータスバーに表示さ -れるメニューヒントに似ている(Vimがコマンドラインモードのときは除く、そのときは -もちろん何も表示されない)。 -ツールバーの項目にチップが定義されているときは、慣習にしたがって、マウスがその -ボタンの上で止まったときにツールチップが表示される。その表示に使う色を変更する -にはハイライトグループの|hl-Tooltip|を設定する。 - -チップはメニューの各項目に定義できる。例えば、次のようにメニュー項目を定義した -とき: > - :amenu MyMenu.Hello :echo "Hello"<CR> -次のようにチップを定義する: > - :tmenu MyMenu.Hello Displays a greeting. -そして次のように削除する: > - :tunmenu MyMenu.Hello - -ツールチップは今のところX11とWin32 GUIでサポートされている。近い内に他のGUI環 -境でもサポートされるだろう。 - -":tmenu"コマンドは他のmenuコマンド群と同じように機能し、同じ引数をとる。 -":tunmenu"は他のunmenuコマンド群と同じようにメニューチップを削除する。 - -メニュー項目が無効になる(例えば、全てのモードでその動作が削除される)ときには、 -Vimはメニューチップ(と項目)を削除する。つまり:aunmenuでメニュー項目を削除する -ときには、:tunmenuする必要はないということである。 - - -5.9 ポップアップメニュー - -Win32とGTK+ GUIでは、カーソルの位置にメニューをポップアップ表示することができ -る。これは「PopUp」メニューと同じように動作し、どんなメニューでも表示すること -ができる。 - -このコマンドは後方互換性のために残されていて、使用することは推奨されない。なぜ -ならこのコマンドのふるまいは好ましくないからである。 - - *:popup* *:popu* -:popu[p] {name} メニュー項目{name}をポップアップ表示する。その - メニューは少なくとも1つ以上の項目を持っている - 必要がある。メニューバーに表示されている必要は - ない。 - -:popu[p]! {name} 上記と同様だが、カーソル位置でなくマウスポイン - タの位置にメニューを表示する。 - -例: > - :popup File -とすると"File"メニューを(もしあれば)カーソル位置に表示させる。! が使われたとき -はマウスポインタの位置に表示させる。 > - - :amenu ]Toolbar.Make :make<CR> - :popup ]Toolbar -これはメインのメニューバーにメニュー項目を作らずにポップアップメニューを作成す -る。 - -Note: ']'で始まるメニュー項目はメニューバーに表示されない。 - -============================================================================== -6. 付記 *gui-extras* - -このセクションではGUIに関連したその他の特徴を説明する。 - -- GUIでは、キーコードは<Esc>で始まらないため、エスケープを入力した後に1秒待た - なくてよい。 - -- GUIでCTRL-Vに続いて特殊なキーを入力すると"<Key>"のように入力される。そのよう - な特殊なキーは内部で意味を持たないためである。修飾キーを同時に押して - "<Modifiers-Key>"を得ることもできる。 -訳注: 例えば、挿入モードでCTRL-Vに続いてDelキーを押すと"<Del>"(見た通り5文字) -訳注: が入力される。Alt(META)キーを押しながらDelキーを押すと"<M-Del>"が入力さ -訳注: れる。Shiftキーなら"<S-Del>"。 - -- GUIでは、修飾キーのSHIFT、CTRL、ALT(META)は特殊キーやマウスイベントのマッピ - ングで使用できる。例えば、:map <M-LeftDrag> <LeftDrag> - -- GUIでは、いくつかの普通のキーにマッピング等で修飾キーを付けて使用できる。そ - のようなキーは<Space>、<Tab>、<NL>、<CR>、<Esc>である。 - -- GUIが使われているかどうかをVimスクリプト内で調べるには次のようにする: > - - if has("gui_running") - echo "yes, we have a GUI" - else - echo "Boring old console" - endif - -< *setting-guifont* -- さまざまなシステム上で同一の vimrc ファイルを使うときは、次のようにして各 - GUI に対する固有のオプションを設定することができる: > - - if has("gui_running") - if has("gui_gtk2") - :set guifont=Luxi\ Mono\ 12 - elseif has("x11") - " Also for GTK 1 - :set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-* - elseif has("gui_win32") - :set guifont=Luxi_Mono:h12:cANSI - endif - endif - -推奨される日本語フォントは MS Mincho である。MS Mincho についての情報はここで -みつかる: -http://www.lexikan.com/mincho.htm - -============================================================================== -7. シェルコマンド *gui-shell* - -X11 GUIでは外部プログラムはgvimウィンドウの中で実行される。 -|gui-pty|を参照。 - -警告: X11 GUIで外部プログラムを実行することは常にうまく動作するとは限らない。 -"ls"、"grep"、"make"のような一般的なプログラムはたいていうまく機能する。"less" -や"ispell"のように高度なターミナルを要求するプログラムはうまく機能しないだろ -う。あるものはハングさえするかもしれないし、他のターミナルからkillする必要があ -るかもしれない。だから気を付けて! - -Win32 GUIでは外部プログラムは別のウィンドウで実行される。 -|gui-shell-win32|を参照。 - - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/runtime.old/doc/gui_w16.jax b/runtime.old/doc/gui_w16.jax deleted file mode 100644 index aed217702..000000000 --- a/runtime.old/doc/gui_w16.jax +++ /dev/null @@ -1,183 +0,0 @@ -*gui_w16.txt* For Vim バージョン 7.3. Last change: 2005 Mar 29 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -Vimのグラフィカルユーザインターフェース *gui-w16* *win16-gui* - -1. GUIを始める |win16-start| -2. デフォルトエディタVim |win16-default-editor| -3. クリップボードを使う |win16-clipboard| -4. シェルコマンド |win16-shell| -5. 特別な色 |win16-colors| -6. ダイアログとブラウズ |win16-dialogs| -7. その他色々 |win16-various| - -その他の関連文章: -|gui.txt| GUIの一般的な要素。 -|os_msdos.txt| DOSとWindows共通の要素。 -|gui_w32.txt| これに書いてある事の一部はWin16バージョンにも該当する。 - -{Vi にはWindowsのGUIは無い} - -Win16バージョンのVimはWindows 3.1以降で動作する。3.0ではテストされていないが、 -恐らく修正してコンパイルし直さないと動作しないだろう。(しかし、とにかく3.11に -バージョンアップするべきだろう ^^) - -素晴らしいことにフラットスタイルのツールバーを含めて、ほとんどWin32のGUIバー -ジョンと同じ振舞をする。主な違いは以下の通り: - -1) 再描画を高速化しリソース使用量を減らすために、太字と斜体のテキストは利用で - きない。(MSWIN16_FASTTEXTを定義しないでコンパイルすれば利用可能) -2) メニューの切り取りはエミュレーションしていない。 -3) OLEインターフェスな無い。 -4) (あたり前だが)長いファイル名には対応しない。 -5) ツールバーのボタンにツールチップが無い - その代わりにメニューの項目が行なう - ようにコマンドラインへ表示する。 -6) 一行の長さは32767文字に制限される。(16ビットDOSバージョンと同じ) - - -============================================================================== -1. GUIを始める *win16-start* - -Win16のGUIバージョンは、どんな名前で起動されたかなんておかまい無しに、いつも -GUIでスタートする。コンソールは存在しないが、DOS窓でDOSバージョンのvimを使うこ -とはできる。 - -Win16 GUIには拡張されたメニュー項目: "ウィンドウ/フォント選択" がある。これを -選択するとWindowsの標準フォント選択ダイアログが表示される。GDIの描画速度を最大 -限に得るために太字と斜体フォントはサポートされていないことに注意。 - -メニューの高さはWin16 GUIでは設定できない。 - - *win16-maximized* -Vimを最大化して起動したいのならば、次のコマンドをvimrcかgvimrcに書き加える: > - au GUIEnter * simalt ~x -< - -gvim.exeのバージョンにはWindows 3.1及び3.11のWin32sサブシステム下で動作するも -のもある。|win32s|を参照。 - -============================================================================== -2. デフォルトエディタVim *win16-default-editor* - -Vimをあるファイルタイプのデフォルトエディタとして設定するには、ファイルマネー -ジャーの"関連付け"機能を使用する。 - -ファイルをダブルクリックしてVimを起動したときには、Vimはそのファイルのあるディ -レクトリへ移動する。 - -|notepad|も参照。 - -============================================================================== -3. クリップボードを使う *win16-clipboard* - -Windowsにはテキストを一時的に格納(コピー)し、取り出す(ペースト)できるクリップ -ボードがある。Vimでは幾つかの方法でクリップボードに対応している。 -クリップボードはWin32バージョンと同様に動作する: |gui-clipboard|参照。 - -============================================================================== -4. シェルコマンド *win16-shell* - -どんなDOSコマンドでも実行できるようにするために、Vimは外部コマンドを実行するた -めにDOS窓を作成する。このDOS窓は_default.pifの設定を使用する。 - - *win16-!start* -通常、Vimは外部コマンドの実行が完了するのを待つ(これはVimが使用する出力を生成 -するコマンドを考えれば合理的である)。外部コマンドを実行してすぐに戻るようにし -たいならば、次のような方法がある: > - :!start {command} -これはWindowsプログラムにだけ利用できる。 -Vimに戻っている間時にバックグラウンドでDOSコマンドを実行できるように、Windows -3.1xを設定するのを忘れないこと。 - -============================================================================== -5. Special colors *win16-colors* - -Win16では、通常のDOSでの色が使用される。|dos-colors|を参照。 - -加えてシステムが構成している色を使用することができる。それらはSys_XXXとして知 -られ、XXXの部分は下のリストに示される、割り当てられているシステムカラー名であ -る(完全な解説はWin32の文章を参照)。大文字小文字は区別されない。 - -Sys_BTNFace Sys_BTNShadow Sys_ActiveBorder -Sys_ActiveCaption Sys_AppWorkspace Sys_Background -Sys_BTNText Sys_CaptionText Sys_GrayText -Sys_Highlight Sys_HighlightText Sys_InactiveBorder -Sys_InactiveCaption Sys_InactiveCaptionText Sys_Menu -Sys_MenuText Sys_ScrollBar Sys_Window -Sys_WindowFrame Sys_WindowText - -恐らく一番便利な値はこれらだろう - Sys_Window 通常のウィンドウの背景の色 - Sys_WindowText 通常のウィンドウの文字の色 - Sys_Highlight 選択されたテキストの背景の色 - Sys_HighlightText 選択されたテキストの文字の色 - -他にもこの様な色も存在する: -Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet, - - -|rgb.txt|も参照。 - -============================================================================== - *win16-dialogs* -6. ダイアログとブラウズ - -コンソールバージョンから受け継がれる伝統的なインターフェースはもちろん、さらに -Win16 GUIでは幾つかの操作に見慣れたWindowsのコンポーネントを使用することができ -る。 - - -6.1 ダイアログ - -その他のバージョンではコンソールベースで行われていた"confirm"ファミリ(すなわち -'confirm'オプションと|:confirm|コマンドと|confirm()|関数)で、GUIベースのダイア -ログが表示される。これを変更するオプションは存在しない。 - - -6.2 ファイルブラウザ - -ファイルを編集するコマンドの前に":browse"を付けると、存在するファイルを選択す -るためのウィンドウ選択ダイアログが使用される。|:browse|を参照。 - - -============================================================================== -7. その他色々 *win16-various* - - *win16-printing* -"ファイル/印刷"メニューは現在のバッファを印刷するのにNotepadを使用する。これは -ちょっと不器用だが、ポータブルである。もしも他の何かを使用したいのならば、独自 -の印刷コマンドを定義することができる。例えば、PrintFileの16ビットバージョンを -探すことができる。フォルトでどう働くかは$VIMRUNTIME/menu.vimを参照。 - -これも動作するだろう: > - :w >>prn - -Vimでは多くのMS Windows標準の機能をサポートしている。それらの幾つかは別の場所 -で説明されている: |'mouse'|、|win32-hidden-menus|を参照。 -|:simalt|も参照。 - - *win16-drag-n-drop* -Vimのウィンドウに1つもしくは複数のファイルをドラッグ&ドロップすることができ、 -それらは普通に開かれる。その時にShiftを押していると、Vimは(最初に)ドロップされ -たファイルのディレクトリに移動する。Ctrlを押しているとVimはそのファイルを開く -ために、新しいウィンドウを分割する。そうでなければ現在のバッファが、そのファイ -ルを開くために使用される。 -ディレクトリのアイコンをドロップすれば、ディレクトリ内の全てのファイルを開くの -ではなく(普通これは望まれる動作ではないだろう)、Vimはそのディレクトリに移動し -新しいファイルの編集を開始する。 -コマンドラインの編集中には、ドロップされたファイルやディレクトリの名前がカーソ -ルの位置に挿入される。これによりどんなExコマンド中にもこれらの名前を使用するこ -とができる。 - - *win16-truetype* -TrueTypeの固定ピッチフォントではなくラスターフォントを使うことが推奨される。例 -えば、Couier NewではなくCouierを使う。これはリソース使用量を減らすだけでなく、 -Win3.1xの固定ピッチTrueTypeの取り扱いには微妙なバグが存在するからである。とり -わけパイプ文字 '|'の上をカーソルが移動した時、カーソルが間違った大きさで少し左 -にズレて描画される。これはWin3.1x GDIのバグで、同じexeファイルを95/NTで実行し -た時には再現されない。 - - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/runtime.old/doc/gui_w32.jax b/runtime.old/doc/gui_w32.jax deleted file mode 100644 index 2e277b289..000000000 --- a/runtime.old/doc/gui_w32.jax +++ /dev/null @@ -1,494 +0,0 @@ -*gui_w32.txt* For Vim バージョン 7.3. Last change: 2010 Dec 19 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -Win32でのVimのグラフィカルユーザインターフェース *gui-w32* *win32-gui* - -1. GUIを始める |gui-w32-start| -2. デフォルトエディタVim |vim-default-editor| -3. クリップボードを使う |gui-clipboard| -4. シェルコマンド |gui-shell-win32| -5. 特別な色 |win32-colors| -6. ダイアログとブラウズ |gui-w32-dialogs| -7. コマンドライン引数 |gui-w32-cmdargs| -8. その他色々 |gui-w32-various| - -その他の関連した文章: -|gui.txt| GUIの一般的な要素。 -|os_win32.txt| Win32特有の要素。 - -{Vi にはWindowsのGUIは無い} - -============================================================================== -1. GUIを始める *gui-w32-start* - -Win32のGUIバージョンは、どんな名前で起動されたかなんておかまい無しに、いつも -GUIでスタートする。 - -GUIは常にWindowsのサブシステムとして実行される。殆どのシェルはVimを起動した直 -後にコマンドプロンプトへ自動的に復帰する。そうでなかったら、"start"コマンドを -使うと良い: > - start gvim [options] file .. - -Note: 全てのフォント(太字、斜体)は同じ大きさでなければならない!!!。そうしない -場合、文字が欠けたり表示がゴチャゴチャになったりしてしまうだろう。Vimはフォン -トの大きさを検査していない。画面上でのピクセルサイズが同じでなければならない。 -同じポイントサイズのフォントでも、同じピクセルサイズのフォントだとは限らないこ -とに注意!。加えてフォントの位置情報(アセントとディセント)も同じでなければなら -ない。 - -Win32 GUIではメニューが拡張されている: "編集/フォント設定"。ウィンドウズの標準 -フォントセレクトダイアログが起動される。 - -メニューの高さ設定は、Win32 GUIでは動作しない。 - - *gui-win32-maximized* -Vimのウィンドウを最大化した状態で起動したいのならば、vimrcかgvimrcに次のコマン -ドを書き加える: > - au GUIEnter * simalt ~x - - *gui-w32s* -Win32sかWindows 3.1もしくは3.11で動くgvim.exeも存在する。|win32s|参照。 - - -Vim をプラグインとして使う *gui-w32-windowid* - -普通に gvim が起動されると、gvim のウィンドウがトップレベルで作成される。コマ -ンドラインオプション |--windowid| に10進または16進の数値を指定すると、Vim はそ -の ID を持つウィンドウの子ウィンドウを作成する。これによって、Vim を他のアプリ -ケーションのプラグインとして使うことができる。これは完全にプログラマ向けのイン -ターフェイスであり、Vim を正しく起動するアプリケーションの対応なくしては何の役 -にも立たない。 - -============================================================================== -2. デフォルトエディタVim *vim-default-editor* - -Vimをあるファイルタイプのデフォルトエディタにするには: -1. Windowsのエクスプローラを起動する -2. ツール/フォルダオプション -> ファイルタイプ (W2K + IE5.5) -3. Vimを使用したい全てのファイルタイプに対して、gvimのパスを設定する。(拡張子 - の無いファイルタイプに対しては、ファイルタイプを指定するフィールドに3つのス - ペースを置くことで対応できる) - アクションの"open"に: > - gvim "%1" -< ファイル名にスペースを含むファイルを正しく扱うためにクォート(")が必要。 - こういう方法もある: > - gvim "%L" -< これにより幾つかの状況で、短い形式のファイル名(8.3形式)を避けることができ - る。しかし、常に働くわけではない。 - -ファイルをダブルクリックしてVimで開いた時には、Vimはそのファイルのディレクトリ -へ移動する。 - -Vimを全画面で起動したい時には、openのアクションとして次のものを使用する: > - gvim -c "simalt ~x" "%1" - -新たにVimを違うディレクトリに置いた時(新しいバージョンを入手した時など)の、も -う一つの方法は: -1. Vimを使って開きたいファイルを選ぶ -2. <Shift-F10>を押す -3. メニューから"アプリケーションから開く"を選択する -4. "その他"をクリック -5. Vimの新しい位置を参照して、開くをクリックする。 -6. "いつもこのアプリケーションを使う"をチェックする -7. OKをクリック - - *send-to-menu* *sendto* -Vimを"送る"メニューに追加することもできる: -You can also install Vim in the "Send To" menu: -1. Windowsのエクスプローラを起動する。 -2. "送る"のためのディレクトリに移動する: - Windows 95: %windir%\sendto (e.g. "c:\windows\sendto") - Windows NT: %windir%\profiles\%user%\sendto (e.g. - "c:\winnt\profiles\mattha\sendto"). -3. ファイル表示枠の上で右クリックして新規作成→ショートカット。 -4. ショートカットウィザードに従ってVIM/GVIMへのフルパスを指定。 - -Vimにファイルを送ると、Vimはファイルのあるディレクトリに移動する。しかし長い -ディレクトリ名は短い(MS-DOS形式)で表示されてしまうことに注意。これはWindowsの" -送る"の仕組みによる制限である。 - - *notepad* -notepad.exe(メモ帳)をgvim.exeに置き換えてしまうこともできるが、これには副作用 -もある。いくつかのプログラムはnotepad.exeに依存していて、例えばファイルを印刷 -するために"notepad -p"を使っているからです。メモ帳(notepad)はそのままにしてお -いて、Vimを起動するためのほかの方法を使ったほうが良い。 - - *win32-popup-menu* -もっと抜本的なアプローチは、右マウスボタンメニューに"Edit with Vim"という項目 -を追加するものである。これを使うとあらゆるファイルをVimで編集できるようにな -る。 - -これは上述のファイルの関連付けと共存することができる。ファイルの関連付けは、 -Vimで開始することを「デフォルトのアクション」にしてしまう点が違う。"Edit with -Vim"メニュー項目を使うと、ダブルクリックで開ける既に存在するファイルの関連付け -はそのままにして、したい時にはいつでもVimでファイルを編集することができる。例 -えば、"*.mak"はmakeプログラムに関連付けることができる。この場合、そのファイル -をダブルクリックすればmakefileが実行されるし、"Edit with Vim"を選べばmakefile -を編集することができる。 - -どんなファイルでも選択し、右クリックで"Edit with gvim"と呼ばれるメニューオプ -ションを表示させることができる。このメニューオプションを選択すると、選択した -ファイルがgvimによって開かれる。複数のファイルを選択した場合には、二つのメ -ニューオプションが提示されるだろう: -"Edit with multiple gvims" -- 1つのファイルにつき1つのgvimが起動される -"Edit with single gvim" -- 選んだ全てのファイルが1つのgvimで開かれる -さらに、もしもすでにgvimが起動しているなら: -"Edit with existing gvim -- すでに起動しているgvimでそのファイルの編集を開 - 始する。 - - *install-registry* -"install.exe"プログラムを使用すれば、簡単に"Edit with Vim"メニュー項目を追加す -ることができる。これはレジストリに幾つかの項目を書き加える。 - -同じことを手動で行うことも出来る。これは非常に複雑である!。できればinstall.exe -を使うことをオススメする。 - -1. "regedit"でレジストリエディタを起動する。 -2. 次のキーを追加する: - キー キーの名前 値 ~ - HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99} - {default} Vim Shell Extension - HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\InProcServer32 - {default} {path}\gvimext.dll - ThreadingModel Apartment - HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim - {default} {51EEE242-AD87-11d3-9C1E-0090278BBD99} - HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved - {51EEE242-AD87-11d3-9C1E-0090278BBD99} - Vim Shell Extension - HKEY_LOCAL_MACHINE\Software\Vim\Gvim - path {path}\gvim.exe - HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 5.6 - DisplayName Vim 5.6: Edit with Vim popup menu entry - UninstallString {path}\uninstal.exe - - {path}は実行可能ファイルのあるディレクトリパスに置き換える。 - {default}はキー自信の値なので、タイプしない。 - -ポップアップメニューから"Edit with Vim"を削除するには、上記のレジストリ項目を -削除すればよい。uninstal.exeプログラムは同じことをしてくれる。Windows標準の"ア -プリケーションの追加と削除"のリストの、エントリーを使うことも出来る。 - -このエントリがファイルタイプの関連付けを抑制してしまうことに気が付いたら、手動 -で関連付けをやり直す(上記を参考に、Windowsのエクスプローラを使って)。これは -Windows NTの幾つかのバージョンでだけ起こるらしい(Windowsのバグ?)。手続き: -1. ファイルタイプの名前を見つける。これはレジストリエディタを起動し、 - \\HKEY_CLASSES_ROOTで拡張子を探すことで行える。 -2. Windowsエクスプローラでは、表示→オプション→ファイルタイプ。リストの中から - ファイルタイプを探し出し"編集"をクリック。アクションのリストで、デフォルト - として使用したいものを選択し(通常は"開く"アクション)、"標準"ボタンをクリッ - クする。 - -"アプリケーションから開く" コンテキストメニュー *win32-open-with-menu* -("Open With...") - -Vimのインストーラーを使うならエクスプローラのメニューの "アプリケーションか -ら開く" にVimを加えるか選択することができる。これはVimでいろんなファイルを編 -集するなら重要である。(不明瞭な理由で)全てのファイルには使えない。したがって -"Edit with Vim" メニューの方が使いやすい。 - -これを追加する理由の一つがインターネットエクスプローラから直接ファイルを編集 -できるようにするためである。これを有効にするには "Tools" メニューから -"Internet Options..." を選択し、出てきたダイアログウインドウの "Programs" タ -ブの "HTML editor" にVimを選択する。そこにVimがなければインストールは完了し -ていない。 - -このスクリプトを使って手作業で設定できる。 - ----------------------------------------------------------- -REGEDIT4 - -[HKEY_CLASSES_ROOT\Applications\gvim.exe] - -[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell] - -[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit] - -[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command] -@="c:\\vim\\vim62\\gvim.exe \"%1\"" - -[HKEY_CLASSES_ROOT\.htm\OpenWithList\gvim.exe] - -[HKEY_CLASSES_ROOT\*\OpenWithList\gvim.exe] - ----------------------------------------------------------- - -"c:\\vim\\vim62" をgvim.exeが実際にある場所に変更すること。 - -これをアンインストールするにはVimのアンインストーラーを使うか "regedit" を -使って手作業でレジストリエントリを削除する。 - -============================================================================== -3. クリップボードを使う *gui-clipboard* - -Windowsにはテキストを一時的に格納(コピー)し、取り出す(ペースト)できるクリップ -ボードがある。Vimでは幾つかの方法でクリップボードに対応している。他のシステム -については|gui-selections|を参照。 - -"*レジスタにはクリップボードの内容が反映される。|quotestar| - -'clipboard'オプションに文字列"unnamed"が含まれている時には、名前なしレジスタが -同じになる。こうすることで、ヤンク(Vimにおけるコピー"y")やペースト(Vimにおける -貼り付け"p")にクリップボードを、"*を付けることなく使用できる。 - -デフォルトでは'guioptions'に'a'フラグは含まれていない。これはその操作を行った -時にだけ、テキストがクリップボードへ送られるを意味している。単に視覚的に選択 -(Visualモード)しただけではクリップボードには送られない。'a'フラグを加えれば、 -(Visualモードで選択するだけで)操作をせずにもクリップボードへ送られる - - *mswin.vim* -標準的なMS-WindowsのCTRL-X、CTRL-CおよびCTRL-Vを使うには、 -$VIMRUNTIME/mswin.vimスクリプトを使用する。_vimrcファイルに次の一行を追加する: -> - source $VIMRUNTIME/mswin.vim - -CTRL-Cがクリップボードへのコピーになってしまうので、操作を停止すること(無限 -ループに陥ったスクリプトを停止するなど)が、できなくなってしまう。代わりに -CTRL-Breakが使える。 - -CTRL-Z がアンドゥになる。そのため、このキーでVimをサスペンドすることはできない。 -代わりに|:suspend|を使うこと(これがサポートされていればだが)。 - - *CTRL-V-alternative* *CTRL-Q* -CTRL-Vがペーストに使われてしまうので、方形視覚選択(Visualモードの一種)を開始す -ることができない。これにはCTRL-Qを代用できる。インサートモードやコマンドライン -モードにおいても、もともとのCTRL-Vの代わりにCTRL-Qを使用することができる。しか -しターミナルでCTRL-Qが制御のために使われる時はうまく機能しない。 - -NOTE: クリップボードのサポートにはまだかなりのバグがある。|todo|参照。 - -============================================================================== -4. シェルコマンド *gui-shell-win32* - -Vimは外部コマンドを実行するのに、どんなコマンドでも実行できるようにするために -Vimとは別個のウィンドウを使用する。外部コマンドはちょうどDOSプロンプトから実行 -されるように、独自の実行環境を獲得する。 - - *win32-vimrun* -外部コマンドの実行は"vimrun"コマンドを用いて間接的に行われる。これが働くために -は"vimrun.exe"コマンドが実行パスになければならない。そうでなければVimの実行 -ファイルと同じディレクトリになければならない。"vimrun"を見つけることができなけ -れば、コマンドは直接実行され、そのため外部コマンドの実行が終了するとすぐにDOS -ウィンドウが閉じられる。 -警告: もしも"X"ボタンでこのウィンドウを閉じてしまい、強制終了することを確認す -るウィンドウでアプリケーションを本当に終了してしまうと、Vimも一緒に強制終了し -てしまう! (":!start"で非同期的に起動されたアプリケーションには、これは当ては -まらない) - -Windows 95では、実行されるコマンドのウィンドウは、DOSとの可能な限りの互換性の -ため(これが問題!)常に80x25の大きさになってしまう。デフォルトのシステムフォント -が使用される。NTでは、コントロールパネルの"コンソール"によって設定された内容が -デフォルトで使用される。Win32sでは、DOSボックスのプロパティはWindowsのディレク -トリにある_default.pifで決定される。 - - *msdos-mode* -もしも外部プログラムを使用したときに、"このプログラムはMS-DOSモードで起動しま -す…"のようなダイアログが表示されたならば、関連付けられたショートカットのプロ -パティを変更することでこれを解消することができる: -- Windowsエクスプローラを使用して使用されたcommand.comを探す。恐らく - c:\command.com、c:\dos\command.com、c:\windows\command.comなどのどれか。 -- マウスの右ボタンで、command.comのプロパティを選択。 -- プログラムタブの"詳細設定"を選択。 -- "MS-DOSモードで起動する"をチェック解除。 -- "設定"を2度クリック。 - - *win32-!start* -通常、Vimはコマンドの実行が終了するのを待つ(これは多くのシェルコマンドの出力を -Vimが取り込んで使用できるようにするため)。Vimがプログラムを実行した後、その終 -了を待たないように望むのならば、W95とNTでは次の構文を使用することができる: > - :!start [/min] {command} -"/min" 引数を指定すると、ウィンドウは最小化される。 - -Win32sでは、代わりのウィンドウに移らなければならないだろう。Windows 3.1xにVim -に戻っている間にも、バックグラウンドでDOSコマンドを実行するように設定するのを -忘れないこと。 - -============================================================================== -5. 特別な色 *win32-colors* - -Win32では、通常のDOSでの色が使用される。|dos-colors|を参照。 - -付け加えて、システムが構成している色を使用することができる。それらはSys_XXXと -して知られ、XXXの部分は下のリストに示される、割り当てられているシステムカラー -名である(完全な解説はWin32の文章を参照)。大文字小文字は区別されない。注意: -Win32sではこれら全ての色がサポートされているわけではない。 - -Sys_3DDKShadow Sys_3DFace Sys_BTNFace -Sys_3DHilight Sys_3DHighlight Sys_BTNHilight -Sys_BTNHighlight Sys_3DLight Sys_3DShadow -Sys_BTNShadow Sys_ActiveBorder Sys_ActiveCaption -Sys_AppWorkspace Sys_Background Sys_Desktop -Sys_BTNText Sys_CaptionText Sys_GrayText -Sys_Highlight Sys_HighlightText Sys_InactiveBorder -Sys_InactiveCaption Sys_InactiveCaptionText Sys_InfoBK -Sys_InfoText Sys_Menu Sys_MenuText -Sys_ScrollBar Sys_Window Sys_WindowFrame -Sys_WindowText - -恐らく一番便利な値はこれらだろう - Sys_Window 通常のウィンドウの背景の色 - Sys_WindowText 通常のウィンドウの文字の色 - Sys_Highlight 選択されたテキストの背景の色 - Sys_HighlightText 選択されたテキストの文字の色 - -他にもこの様な色も存在する: -Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet, - - *rgb.txt* -付け加えて、"rgb.txt"で定義される色も使うことができる。このファイルはX11のもの -として知られている。何行かを抜粋する: > - - 255 218 185 peach puff - 205 133 63 peru - 255 181 197 pink - -これはファイルのレイアウトを示している: 最初に赤、緑、そして青の輝度を10進数で -記述し、続いて色の名前を定義している。4つのフィールドはスペースで区切られてい -る。 - -rgb.txtはX11のディストリビューションから手に入れることができる。 -"/usr/X11R6/lib/X11/"あたりのディレクトリにおいてあることが多い。Vimでは -$VIMRUNTIMEディレクトリに置く。だから"$VIMRUNTIME/rgb.txt"にファイルが見つける -ことができる。 - -============================================================================== -6. ダイアログとブラウズ *gui-w32-dialogs* *dialog* - -コンソールバージョンから受け継がれる伝統的なインターフェースはもちろん、さらに -Win32 GUIでは幾つかの操作に見慣れたWindowsのコンポーネントを使用することができ -る。 - - -6.1 ダイアログ - -その他のバージョンではコンソールベースで行われていた"confirm"ファミリ(すなわち -'confirm'オプションと|:confirm|コマンドと|confirm()|関数)で、GUIベースのダイア -ログが表示される。'guioptions'の'c'フラグでこれを変更できる。 - - -6.2 ファイルブラウザ - -ファイルを編集するコマンドの前に":browse"を付けると、存在するファイルを選択す -るためのウィンドウ選択ダイアログが使用される。|:browse|を参照。 - - -6.3 切取メニュー - -Win32 GUI版ではMotifの「切取メニュー」をエミュレートする。個々のメニューの最上 -位には、小さな「切り取り線」のグラフィックスが存在する。これを選択すると同じメ -ニューのエントリーがある、フローティングウィンドウが作成される。フローティング -メニューを使用すれば、いちいちメニューバーに移動することなく、オリジナルのメ -ニューの(サブメニューも含めた)項目にアクセスすることができる。 -これはサブメニューの奥の方のコマンドを頻繁に使用するときに非常に便利。 -切取メニューは好きなところに配置し、常にVimのメインウィンドウよりも手前に表示 -される。普通に閉じることで取り除くこともできる;もちろんVimを終了すれば自動的に -それらも閉じられる。 - - *:tearoff* *:te* -:te[aroff] {name} {name}というメニューを切り取る。指定されたメニューは少 - なくとも一つ以上のサブエントリを持たねばないが、メ - ニューバーに表示されている必要は無い。 - (|win32-hidden-menus|)を参照。 - -例: > - :tearoff ファイル(F) -"ファイル"メニューが(あれば)切取メニューとして表示される。 > - - :amenu ]Toolbar.Make :make<CR> - :tearoff ]Toolbar -メインのメニューバーには存在しないフローティングメニューを作成する。 - -']'で始まるメニューは表示されないことに注意。 - -============================================================================== -7. コマンドライン引数 *gui-w32-cmdargs* - -パラメータの中のコマンドラインの分析は MS Windows で標準化されていない。GVim -はコマンドラインの分析のロジックを提供しなければならない。このロジックはVim -をコンパイルするのに使われたシステムが提供するロジックとは異なるだろう。この -違いはダブルクォート(")の使い方が一般的でないのと関係する。 -引数の "C:\My Music\freude.txt" と "+/Sch\"iller" は同じように扱われる。引数 -"+/Sch""iller" はgvimやvim、それがどのようにコンパイルされたかによって、扱い -が変わります。 - -ルール: - a) パラメータは表示可能文字である - b) パラメータはスペースで区切られている - c) ダブルクォートで囲めばパラメータにスペースを含むことができる - d) バックスラッシュ(\)が一つ以上の後に続くダブルクォート(")は特別な文 - 字である。バックスラッシュの数を半分に割って小数を切捨てた数に意味が - ある。奇数ならバックスラッシュはスペースやタブの効果を変える。偶数な - らバックスラッシュはリテラルのダブルクォートを作る。 - -つまり: - " は特別なダブルクォート - \" はリテラルのダブルクォート - \\" はリテラルのバックスラッシュと特別なダブルクォート - \\\" はリテラルのバックスラッシュとリテラルのダブルクォート - \\\\" はリテラルのバックスラッシュ二つと特別なダブルクォート - \\\\\" はリテラルのバックスラッシュ二つとリテラルのダブルクォート - etc. - -例: > - gvim "C:\My Music\freude" +"set ignorecase" +/"\"foo\\" +\"bar\\\" - -は "C:\My Music\freude" を開き、次のコマンドを実行する: > - set ignorecase; /"foo\ and /bar\" - -============================================================================== -8. その他色々 *gui-w32-various* - - *gui-w32-printing* -"ファイル/印刷"メニューはシンタックスハイライトを使って印刷する。|:hardcopy|を -参照してください。もしもテキストを装飾なしで印刷したいのなら、デフォルトのプリ -ンタがインストールされていれば次のようにできるでしょう。 > - :w >>prn - -Vimでは多くのMS Windows標準の機能をサポートしている。それらの幾つかは別の場所 -で説明されている: |'mouse'|、|win32-hidden-menus|を参照。 - - *drag-n-drop-win32* -Vimのウィンドウに1つもしくは複数のファイルをドラッグ&ドロップすることができ、 -それらは普通に開かれる。|drag-n-drop|を参照。 - - *:simalt* *:si* -:si[malt] {key} Alt と {key} の同時押しをシミュレートする。 - {Vi にはない機能} {Win32バージョンだけの機能} - -通常、Vimでは使用可能なマッピングを増やすために、Alt-<Key>の全ての組み合わせを -使うことができる。これはメニューにアクセスするためのAltキーの標準的な使い方と -衝突する。 -標準的な振る舞いをさせるための近道は、'winaltkeys'オプションに"yes"を設定する -ことである。しかしこうするとAltを使用したマッピングは一切使えなくなる。 -もう一つの方法は'winaltkeys'に"menu"を指定することである。マッピングされていな -いALTキーだけが、メニューのショートカットとしてWindowsに解釈される。だけども現 -在の状態に依存することは許さない。 -これを回避するために、('winaltkeys'が"yes"でない時に):simaltコマンドで、 -WindowsのスタイルでAltキーを押すふりを、Vimにさせることができる。これを使って -Windows標準のアクションを興すための、Altキーの組み合わせ(ほかのものでも)をマッ -ピングすることができる。いくつか例を示そう: > - - :map <M-f> :simalt f<CR> -これでAlt-Fを押すとキーストロークのAlt→Fがシミュレートされ、'ファイル(F)'メ -ニュー(Menu.vimで定義される)が表示される。 > - :map <M-Space> :simalt ~<CR> -このマッピングによりAlt-SpaceでVimウィンドウのシステムメニューが表示される。 -'~'はsimaltにおいて文字<Space>を表現するのに使われることに注意。 > - :map <C-n> :simalt ~n<CR> -Control-Nに、Alt-SpaceにNを続けるマッピングを施す。これはシステムメニュー経由 -でVimのウィンドウを最小化する。 - -これらのキーは使用している言語によって異なることがある。 - - *intellimouse-wheel-problems* -インテリマウスのホイールを使用すると、Vimは入力を受け付けなくなることがある。 -次の場所へ行き: - コントロールパネル - マウス - ホイール - スクロール - 例外 - -アプリケーションのリストにgvimを追加する。この問題はIntellimouseのドライババー -ジョン2.2を使用し、"ユニバーサルスクロール"を有効にしている時にだけ起こる。 - - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/runtime.old/doc/gui_x11.jax b/runtime.old/doc/gui_x11.jax deleted file mode 100644 index 895ba32c3..000000000 --- a/runtime.old/doc/gui_x11.jax +++ /dev/null @@ -1,577 +0,0 @@ -*gui_x11.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -Vimのグラフィカルユーザインタフェース *gui-x11* *GUI-X11* - *Athena* *Motif* -1. X11 GUIの開始 |gui-x11-start| -2. GUIリソース |gui-resources| -3. シェルコマンド |gui-pty| -4. 各種事項 |gui-x11-various| -5. GTKバージョン |gui-gtk| -6. GNOMEバージョン |gui-gnome| -7. KDEバージョン |gui-kde| -8. コンパイル |gui-x11-compiling| -9. X11セレクション |x11-selection| - -他の重要なドキュメント: -|gui.txt| GUIの一般的な項目について。 - -{Vi にはこれらのどのコマンドもない} - -============================================================================== -1. X11 GUIの開始 *gui-x11-start* *E665* - -これらのどちらの方法でもVimのGUIバージョンを実行することができる: - gvim [options] [files...] - vim -g [options] [files...] - -であるから、実行可能な"gvim"を呼ぶか、あるいは"gvim"を実行可能なものとしてリン -クさせるならば、GUIバージョンが自動的に使用されるだろう。例えば"gvim-5"のよう -に、追加の文字が"gvim"の後に追加されてもよい。 - -これらのコマンドの1つを使用してターミナルバージョンの中からGUIを起動してもよ -い: - :gui [++opt] [+cmd] [-f|-b] [files...] *:gu* *:gui* - :gvim [++opt] [+cmd] [-f|-b] [files...] *:gv* *:gvim* -"-f"オプションはフォアグラウンドで実行する。 -"-b"オプションはバックグラウンドで実行する(これがデフォルト)。 -|++opt|と|+cmd|も参照してください。 - - *gui-fork* -GUIが開始されるときには、fork()して現在のプロセスを終了する。gvimがシェルから -開始されたときには、これでシェルが更にコマンドを受け入れられるようになる。これ -を望まない(例えば、メールプログラムでgvimを使用しているときにgvimが終了するの -を待つ)ならば、"gvim -f", "vim -gf"でかあるいは":gui -f"を使用して開始する。 -"-fg"は前景色の指定に用いられるので、"vim -fg"を使用してはならない。 - -"gvim -f"と":gui"を使用するときには、Vimはフォアグラウンドで実行されるだろう。 -"-f"引数は記憶されているだろう。Vimを強制的にバックグラウンドで実行するには、 -":gui -b"を使用するとよい。 - -"gvim --nofork"と"gvim -f"は同じです。 - -GUIをいつもフォアグラウンドで実行したければ、'guioptions'の中に'f'フラグを含め -るとよい|-f|。 - -============================================================================== -2. GUIリソース *gui-resources* *.Xdefaults* - -GUIのMotifかあるいはAthenaバージョン(KDE, GTK+やあるいはWin32バージョンについ -てではない)を使用しているならば、多くのXのリソースが有効である。これらを設定す -るときには、Vimのクラス"Vim"を使用すべきである。それらは以下のようなものである: - - リソース名 意味 ~ - - reverseVideo ブール値: reverse videoが用いられるべきか? - background 背景色。 - foreground 通常のテキストの色。 - scrollBackground スクロールバーのくぼみ部分の色。 - scrollForeground スクロールバーのスライダと矢印部分の色。 - menuBackground メニューの背景色。 - menuForeground メニューの前景色。 - tooltipForeground ツールチップとバルーンの前景色。 - tooltipBackground ツールチップとバルーンの背景色。 - - font 通常のテキストに使用されるフォント名。 - boldFont ボールドのテキストに使用されるフォント名。 - italicFont イタリックのテキストに使用されるフォント名。 - boldItalicFont ボールド、イタリックのテキストに使用されるフォント名。 - menuFond |+xfontset|が無効なときに使われるメニューのフォント名。 - menuFontSet |+xfontset|が有効なときに使われるメニューのフォント - セット名。 - tooltipFont ツールチップとバルーンに使われるフォント名。 - |+xfontset|が有効なときはこれはフォントセット名です。 - - geometry gvimのウィンドウに用いられる初期サイズ(デフォルトはそ - れを開始したターミナルと同じサイズ)。 - scrollbarWidth スクロールバーの厚さ。 - borderWidth テキストエリアの周りのボーダの厚さ。 - menuHeight メニューバーの高さ(Athenaのみ)。 - -イタリック、ボールド、イタリック・ボールドのテキスト用の特別なフォントはユーザ -がリソースを通して指定されたものを持っている場合にだけ用いられるだろう。通常の -テキストのフォントに基づいたこれらのためにどのフォントが用いられるべきであるか -を推測しようとは試みない。 - -"Normal", "Menu", "Tooltip"と"Scrollbar"グループを使用して、":highlight"コマン -ドで色を設定することもできることを覚えておくとよい。 > - :highlight Menu guibg=lightblue - :highlight Tooltip guibg=yellow - :highlight Scrollbar guibg=lightblue guifg=blue - :highlight Normal guibg=grey90 -< - *font-sizes* -注意: (メニューとツールチップ以外では)全てのフォントは同じサイズでなければなら -ない!!! こうしなければ、テキストは表示されないか、あるいはめちゃくちゃに表示さ -れるだろう。Vimはフォントサイズをチェックしない。同じでなければならないのはス -クリ???ンのピクセルにおけるサイズである。いくつかのフォントが同じポイントサイズ -を持っていても、同じピクセルサイズを持っているとは限らないということに注意しな -くてはならない! さらにフォントの配置は同じ(アセントとディセント)でなければなら -ない。"xlsfonts -l {fontname}"でこれをチェックすることができる。 - -これらのことはいずれもVimコマンド、例えば":set guifont=Screen15"で設定されるな -らば、Xのリソースを無視するだろう(現在'guifont'がサポートされる唯一のオプショ -ンである)。 - -あなたの~/.Xdefaultsファイルに付加したいかもしれないものを例としてここに挙げ -る: > - - Vim*useSchemes: all - Vim*sgiMode: true - Vim*useEnhancedFSB: true - Vim.foreground: Black - Vim.background: Wheat - Vim*fontList: 7x13 - -これらの内の始めの3つはMotifアプリケーションをもっとよく見せるシリコングラ -フィックス製マシンにおける標準リソースであり、大いに推奨されている! - -"Vim*fontList"はMotif用のメニューフォントを設定するためのものである。例: > - Vim*menuBar*fontList: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* -Athenaでは: > - Vim*menuBar*SmeBSB*font: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* - Vim*menuBar*MenuButton*font: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* - -NOTE: MotifかAthenaでメニューのフォントを決めるのに、移植性が高く、本当に正し -いのは、リソースを使うことです。 > - Vim.menuFont: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* -|+xfontset|が有効にされているときは > - Vim.menuFontSet: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* - -defaultsの中で"Vim*geometry"を使用してはならない。これはメニューを壊すだろう。 -代わりに"Vim.geometry"を使用するとよい。 - -"Cannot allocate colormap entry for "gray60"のエラーメッセージを受け取ったなら -ば、Vimリソースにこれを(色は好みに変更して)追加してみるとよい。 > - - Vim*scrollBackground: Black - Vim*scrollForeground: Blue - -リソースはvimへの引数で設定することもできる: - - 引数 意味 ~ - *-gui* - -display {display} {display}上でvimを実行する *-display* - -iconic vimをアイコン化して開始する *-iconic* - -background {color} 背景に{color}を使用する *-background* - -bg {color} 同上 *-bg* - *-foreground* - -foreground {color} 通常のテキストに{color}を使用する - -fg {color} 同上 *-fg* - -ul {color} 同上 *-ul* - -font {font} 通常のテキストに{font}を使用する *-font* - -fn {font} 同上 *-fn* - -boldfont {font} 太字テキストに{font}を使用する *-boldfont* - *-italicfont* - -italicfont {font} 斜体のテキストに{font}を使用する - -menufont {font} メニュー項目に{font}を使用する *-menufont* - *-menufontset* - -menufontset {fontset} メニュー項目に{fontset}を使用する - -mf {font} 同上 *-mf* - -geometry {geom} 初期サイズに{geom}を使用する *-geometry* - -geom {geom} 同上。|-geometry-example|を参照 *-geom* - -borderwidth {width} {width}のボーダ幅を使用する *-borderwidth* - -bw {width} 同上 *-bw* - *-scrollbarwidth* - -scrollbarwidth {width} {width}のスクロールバー幅を使用する - -sw {width} 同上 *-sw* - *-menuheight* - -menuheight {height} {height}のメニューバー高を使用する - -mh {height} 同上 *-mh* - NOTE: Motifではこの値は無視される。メニューの高さは - ちょうど収まるように計算される。 - -reverse reverse video を使用する *-reverse* - -rv 同上 *-rv* - +reverse reverse video を使用しない *-+reverse* - +rv 同上 *-+rv* - -xrm {resource} 指定されたリソースを設定する *-xrm* - -reverse video についての注意: Vimは実際に暗い背景に明るいテキストになるか結果 -をチェックする。X11のあるバージョンは色を交換し、あるバージョンはしないからで -ある。これらの2つの例はどちらも青い背景に黄色のテキストを提供するだろう: - gvim -fg Yellow -bg Blue -reverse - gvim -bg Yellow -fg Blue -reverse - - *-geometry-example* -geometry引数の例: > - gvim -geometry 80x63+8+100 -これはウインドウを80カラム、63行で作り、左から8ピクセル、上から100ピクセルの位 -置に置きます。 - -============================================================================== -3. シェルコマンド *gui-pty* - -‘警告’: GUIからの外部コマンドの実行は常に動作するとは限らないだろう。"ls", -"grep"とか"make"のような"normal"コマンドはたいていうまく動作する。"less"とか -"ispell"のような知的ターミナルを要求するコマンドは動作しないだろう。あるものは -ハングさえするかもしれないし、他のターミナルからkillされる必要があるかもしれな -い。だから気を付けなくてはならない! - -シェルコマンドで入出力するには2つの方法がある: パイプと仮想端末(pseudo-tty)で -ある。デフォルトは仮想端末を使用する。これは大抵のシステムで最も良く動作するだ -ろう。 - -不幸にも、仮想端末の実装はUnixシステム毎に異なっている。そしていくつかのシステ -ムはroot権限を要求する。一番予期しないときに仮想端末における問題に出くわすのを -避けるには、ファイルを編集していないときにそれをテストをするとよい。開始したコ -マンドあるいはVimを"kill"する準備をしなくてはならない。":r !cat"のようなコマン -ドはハングするかもしれない! - -仮想端末を使用して動作しないならば、'guipty'オプションをリセットするとよい: > - - :set noguipty - -パイプの使用はいくつかのUnixシステムで動作するだろうが、いくつか不都合がある: -- いくつかのシェルコマンドはパイプが使用されていることを通知し、異なった振る舞 - いをするだろう。例えば、":!ls"はファイルの一覧を1桁で出力するだろう。 -- ":sh"コマンドは、多少動作するだろうが、プロンプトを表示しないだろう。 -- ":make"を使用するときには、CTRL-Cで中断できない。 - -外部コマンドを実行している間、先行入力された文字はしばしば失われる。これはパイ -プと仮想端末の両方で起こる。これは既知の問題だが、修正できない(かあるいは少な -くとも非常に難しい)と思われる。 - - *gui-pty-erase* -削除文字が外部コマンドに不適当であるときには、あなたの"~/.cshrc"ファイル、ある -いはあなたのシェルを初期化するために用いるどんなファイルででもこれを修正すべき -である。例えば、文字を削除するためにバックスペースを使用したいが、バックスペー -スを打ち込むことで代わりに"^H"が作り出されるときには、これをあなたの"~/.cshrc" -に追加してみるとよい: > - stty erase ^H -^Hは本当のCTRL-Hであり、CTRL-V CTRL-Hとタイプする。 - -============================================================================== -4. 各種事項 *gui-x11-various* - - *gui-x11-printing* -"File/Print"(訳注: 日本語化されたメニューでは、ファイル/印刷)メニューは単に現 -在のバッファを"lpr"に送る。オプションや何かは何もない。他に何かしたければ、あ -なた自身の印刷コマンドを定義することができる。例えば: > - - :10amenu File.Print :w !lpr -Php3 - :10vmenu File.Print :w !lpr -Php3 -< - *X11-icon* -MotifあるいはAthenaでコンパイルされたときには、Vimはデフォルトで白黒のアイコン -を用いる。色付きのVimアイコンは$VIMRUNTIME/vim32x32.xpmとして含まれる。GTK+に -ついては、組み込みのアイコンが用いられる。不幸にも、どのようにしてそれをインス -トールするかはあなたのウィンドウマネージャに依存する。これを使用するときには、 -白黒のアイコンを取り除くために、'guioptions'から'i'フラグを取り除くとよい: > - :set guioptions-=i - -fvwm*ファミリのウィンドウマネージャの1つを使用するならば、単にあなたの.fvwm2rc -構成ファイルにこの行を追加するとよい: > - - Style "vim" Icon vim32x32.xpm - -アイコンファイルの場所がウィンドウマネージャのImagePath文と一致することを確か -めなくてはならない。あなたの.fvwm2rcを修正するか、あるいは事前に定義されたディ -レクトリの1つにアイコンをドロップするとよい。 > - - ImagePath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps - -Note: 古いバージョンのfvwmでは"ImagePath"ではなく"IconPath"を使います。 - -CDE "dtwm"(Motifから派生)については、.Xdefaultsにこの行を追加するとよい: -> Dtwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm - -"mwm"(Motifウィンドウマネージャ)については、その行はこうなるだろう: > - Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm - -X11で利用できるマウスポインタ *X11_mouse_shapes* - -|'mouseshape'|オプションを使うと、Vimがモード(インサートモードやコマンドモー -ドなど)を変更するたびに自動的にマウスポインタを変更できる。現在、利用できる -ポインタは次の通り: - - arrow 左上向きの矢印 - beam 「I」のような垂直の棒 - size 上下を指す矢印 - busy 腕時計 - blank 透明なポインタ - crosshair 細い"+"印 - hand1 左上向きの暗い手のポインタ - hand2 左右向きの明るい手のポインタ - pencil 右下向きのペン型のポインタ - question クエスチョンマーク(?) - right_arrow 右上向きの矢印 - up_arrow 上向きの矢印 - -さらに、インクルードファイルのX11/cursorfont.hで定義された整数を指定して、 -X11に組み込まれたポインタを使うことができる。 - -他のシステムでは使えても、X11にない名前を指定すると、デフォルトの"arrow"ポイ -ンタが使われる。 - -============================================================================== -5. GTKバージョン *gui-gtk* *GTK+* *GTK* - -GUIのGTKバージョンはほんの少し異なった動作をする。 - -GTKは従来のXのリソース設定に使_わない_。したがって、~/.Xdefaultsや -app-defaultsは使われません。 -伝統的なXコマンドの引数はサポートされません。(例えば -bg, -fg, などの要素)。サ -ポートされているのは: - - コマンドライン引数 リソース名 意味 ~ - -fn or -font .font テキストのフォント名 - -geom or -geometry .geometry gvimウィンドウのサイズ - -rv or -reverse *reverseVideo 黒い背景に白いテキスト - -display 使用されるディスプレイ - -fg -foreground {color} 前景色 - -bg -background {color} 背景色 - -フォントを設定するには、|'guifont'|を参照。GTKについては、これをするメニューオ -プションもある。 - -さらに、GTKの内部で扱われるこれらのコマンドライン引数がある。それらがどのよう -に用いられるかはGTKのドキュメントを見るとよい。 - --sync - --gdk-debug - --gdk-no-debug - --no-xshm (GTK+ 2では使われない) - --xim-preedit (GTK+ 2では使われない) - --xim-status (GTK+ 2では使われない) - --gtk-debug - --gtk-no-debug - --g-fatal-warnings - --gtk-module - --display (GTK+の-displayに対応; 同じように動作する。) - --screen (スクリーン番号: GTK+ 2.2ではマルチスレッド対応) - -これらの引数は|+netbeans_intg|が有効なときは使われません。 - -xrm - -mf - -色については、Vimの(構文強調表示についての)色の設定はまだ従来のVimの方法でなさ -れている。より多くのヘルプについては|:highlight|を参照。 - -残りのguiコンポーネント(例えば、メニューバー、スクロールバー、どんなものでも) -の色を設定したければ、GTK特有の設定があり、何かgtkrcファイルの類にそれらを設定 -する必要がある。どのようにこれをすべきかについて、どんなに小さなものしかなくて -も、GTKドキュメントを参照しなければならないだろう。 - - *gtk-tooltip-colors* -ツールティップの色を明るい黄色の背景に黒のテキストに設定する例: > - - style "tooltips" - { - bg[NORMAL] = "#ffffcc" - fg[NORMAL] = "#000000" - } - - widget "gtk-tooltips*" style "tooltips" - -~/.gtkrcファイルの中にこれを書くとGTKで用いられるだろう。GTK+ 2では -~/.gtkrc-2.0を使わなければいけないかも知れない。環境による。 - -GTK+プラグインとしてVimを使う *gui-gtk-socketid* - -GTK+版のVimを普通に起動すると、Vimは自身のトップレベルウインドウを作成する(技 -術的には'GtkWindow')。GTK+はGtkSocket、GtkPlugウィジェットを使った埋め込み機能 -を提供している。あるGTK+アプリケーションが自分のウインドウにGtkSocketウィ -ジェットを作成していると、別のアプリケーションはトップレベルのGtkPlugウィ -ジェットをソケットIDを使って作成し、先のアプリケーションに自身を組み込める。 - -Vimのコマンドラインオプションに'--socketid'と10進数や16進数の値を指定すると、 -Vimは通常のGtkWindowを使わず、指定された値を使いGtkPlugウィジェットを作成す -る。これはVimがGTK+プラグインとして振る舞うことを可能にする。 - -これはプログラマー向けのインターフェースであり、それをサポートするアプリケー -ション無しではまったく役に立たない。GTK+ソケットについての詳細は次のURLを参考 -にすること。 -http://www.gtk.org/api/ - -Note この機能は最新バージョンのGTKを必要とする。GTK 1.2.10はまだ若干問題があ -る。ソケットの機能はまだGTK+ 2ではテストされていない、自己責任でどうぞ。 - -============================================================================== -6. GNOME バージョン *gui-gnome* *Gnome* *GNOME* - -GNOME GUI は GTK+ バージョンと同じように機能する。どのように動作するかは上述 -の |GTK+| を参照。しかし若干の違いがあり、素の GTK+ GUI では利用できない重要 -な機能が 1 つ実装されている。それはセッションマネージャとの相互作用である。 -|gui-gnome-session| - -見た目の違い: -- GNOME ダイアログを使う (GNOME 1 だけ)。GNOME 2 GUI は同じく素敵な GTK+ 2 - バージョンのダイアログを使う。 -- GNOME ドックを使う。したがって、ツールバーとメニューバーは上以外の別の場所 - に移動することができる (例えばツールバーを左や右、上、もしくは下に置け - る)。メニューバーとツールバーの位置は GNOME 2 バージョンでのみ記憶される。 -- これはメニューバーとツールバーのハンドルが戻ってきたということだ! やった! - もちろんサイズ変更グリッドもまだ使える。 - -GNOME バージョンは configure が GNOME を認識し、引数--enable-gnome-checkが指定 -されていればコンパイルされる。 - - -GNOME セッションサポート *gui-gnome-session* *gnome-session* - -ログアウト時、Vim はバッファのどれかが変更されていると、よく知られた終了確認 -ダイアログを表示する。[Cancel] をクリックするとログアウトが取り止めになる。 -そうしなかった場合は、現在のセッションが |:mksession| コマンドを使ってディス -クに保存され、次回のログオン時に復元される。 - -GNOME セッションサポートはおそらく KDE セッションマネージャでも機能する。も -しあなたが何かの問題に直面したらバグレポートを彼らに送ってください。 - -Note: 自動的なセッションの保存はあなたのセッションファイルやスクリプト、オー -トコマンドの衝突を避けるために実に適切に働く。その手段としては: -- セッションファイルは別のディレクトリに保存される (普通は $HOME/.gnome2)。 -- 'sessionoptions' は無視される。代わりにハードコードされた適切なフラグが使 - 用される: > - blank,curdir,folds,globals,help,options,tabpages,winsize -- 内部変数の |v:this_session| はセッションの保存で変更されない。さらに、再び - ログインしたときに元の値に復元される。 - -GUI ウインドウの位置とサイズは保存されない、それはウインドウマネージャの仕事 -である。しかし、GTK+ 2 サポートを有効にしてコンパイルされていると、Vim はウ -インドウの役目を復元して WM がウインドウを識別するのを補佐する (コマンドライ -ン引数の|--role| を使う)。 - -============================================================================== -7. KDE バージョン *gui-kde* *kde* *KDE* *KVim* - *gui-x11-kde* - -KDE バージョンの Vim は存在しない。Qt ツールキットを使って移植する作業が行われ -ていたが、ちゃんと動かなかったので、今は放棄されている。作業は Yzis で継続され -ている: www.yzis.org - -============================================================================== -8. コンパイル *gui-x11-compiling* - -X11を使用しているならば、VimのMakefileはデフォルトでは最初にシステム上の必要と -なるGTK+ファイルを見つけようとするだろう。GTK+ファイルが見つけられなかったなら -ば、Motifファイルが検索されるだろう。最終的に、これが失敗するならば、Athena -ファイルが検索されるだろう。3つとも全て失敗するならば、GUIは無効になるだろう。 - -GTK+については、VimのコンフィギュレーションプロセスはGTK+が適切にインストール -されていることを要求する。つまり、シェルスクリプト'gtk-config'があなたの‘パ -ス’にあり、既にGTK+プログラムをコンパイル、ビルド、実行できなければならない。 -この理由はコンパイラフラグ(CFLAGS)とリンクフラグ(LDFLAGS)が'gtk-config'シェル -スクリプトを通して得られるからである。 - -もしもGTK+ 2を使いたいなら./configureの引数に--enable-gtk2-checkを渡してくださ -い。--enable-gnome-checkオプションも指定されたときはGNOME 2もサポートされま -す。 - -そうではなくて、MotifあるいはAthenaを使用しているならば、configureが見に行かな -いないディレクトリにMotifあるいはAthenaファイルがあるときには、ディレクトリ名 -を記入するためにMakefileを編集しなくてはならない。Motifのディレクトリを設定す -る例については"GUI_INC_LOC"、Athenaについては"CONF_OPT_X"を検索するとよい。 - - *gui-x11-gtk* -これを書いている時点で GTK+ 1.0.6 と 1.2 は古いものになっています。GTK 2 の使 -用を推奨します。GTK 1 のサポートはおそらくすぐに廃止されます。 - -GTK+ 2 GUI を使うときは GTK+ 2.0 か GTK+ 2.2 シリーズの最新版を使うことが推奨 -されます。 - -最後に、GTK+はWin32プラットフォームに恐らく移植されているけれども、これはVim -ではテストされていないし、サポートされてもいない。さらに、GTK+ GUI は一般的 -な X11 のコードを使うのでコンパイルできそうもない。これはいつの日か変更され -るかもしれない。特に中心の X11 のコードを取り除くことは GTK+ フレームバッ -ファのサポートにも必要なため。 - - *gui-x11-motif* -Motifについては、少なくともMotifバージョン1.2と/あるいはX11R5が必要である。 -Motif 2.0とX11R6はOKである。Motif 1.1とX11R4は動作するかもしれないが保証しない -(多少の問題があるかもしれないが、少しの作業でそれをコンパイルし実行させられる -かもしれない、もしあなたがそうするなら、どうか私にパッチを送って欲しい)。 -LessTifの最新リリースも問題なく動作すると報告を受けている。 - - *gui-x11-athena* -AthenaバージョンはデフォルトでXaw ウィジットセットを用いる。3Dバージョンを持っ -ているならば、代わりにXaw3dでリンクしたいかもしれない。これはメニューを少しよ -く見せるかもしれない。Makefileを編集して、"XAW_LIB"を見に行くようにするとよ -い。スクロールバーは、Vimは既に3Dのそれ自体を持っているので(実際には、それらは -もっとMotifのように見える)、同じままだろう。 - - *gui-x11-neXtaw* -neXtawバージョンについては、異なるウィジェットを使うだけでほとんどAthenaと変わ -らない。 - - *gui-x11-misc* -一般的には、異なったGTK+, Motif, AthenaとX11のバージョンからのファイルを混ぜよ -うとしてはならない。これは問題を引き起こすだろう。例えば、X11R6用のライブラリ -でX11R5用のヘッダファイルを使用しても動作しないだろう(リンクがエラーメッセージ -を出さないとしても、Vimは後でクラッシュするだろう)。 - -============================================================================== -9. X11 セレクション *x11-selection* - -X11 を使っている場合、GUI や、xterm で Vim が X11 を認識している状態のとき、 -Vim から X11 のセレクションやクリップボードを扱える。それらは "* レジスタと -"+ レジスタを使用して取り扱う。 - -X11 は 2 つの基本的な共通記憶域、セレクションとカットバッファを提供してい -る。これらは重要な点が異なっている。セレクションはアプリケーションが所有し、 -Vim などのアプリケーションが終了するとなくなる、すなわちデータは失われる。一 -方、カットバッファは、X サーバが記憶し、上書きされるか、ログアウトするなどし -て X サーバが終了するまで保存される。 - -セレクションの内容はそのアプリケーションによって保存され (コピー)、別のアプリ -ケーションがそれを求めたときに渡される (ペースト)。 - -カットバッファの内容はすぐに上書きされ、その元のアプリケーションを介さずに、 -X サーバから直接読み込まれる。 - - *quoteplus* *quote+* -文書化された 3 つの X セレクションがある。プライマリ (Vim のビジュアルモード -での選択のような、現在の選択範囲を表す)、セカンダリ (不明瞭である)、クリップ -ボード (カット、コピー、ペーストに使われる)。 - -この 3 つの内、Vim は "* レジスタを読み書きするときにはプライマリを使う (X11 -セレクションが利用可能なとき、Vim は |'clipboard'| にデフォルトとして -"autoselect" を設定する)。"+ レジスタを読み書きするときにはクリップボードを -使う。Vim はセカンダリを使わない。 - -例: (オプションが標準設定のとき) -- Vim のビジュアルモードで URL を選択する。ブラウザの URL 入力欄でマウスのミド - ルボタンをクリックする。選択したテキストが入力される (うまくいけば!)。 - Note: Firefox では、about:config を開き、middlemouse.contentLoadURL を true - にすれば、ウィンドウ内をミドルクリックすることで、この URL を開くことができ - る。 -- ブラウザでマウスをドラッグしてテキストを選択する。Vim でマウスのミドルボ - タンをクリックすると選択したテキストが入力される。 -- Vim でテキストを選択して "+y を実行する。ブラウザのテキストエリアでマウス - をドラッグしてテキストを選択する。そのまま右クリックしてポップアップメ - ニューから "Paste" を選択する。選択したテキストは Vim で選択したテキストに - 置き換わる。 -Note "+ レジスタのテキストはビジュアル選択しただけで変更されない。"* レジス -タは変更される。つまり選択したテキストを上書きできる。 - *x11-cut-buffer* -既定では 8 つのカットバッファがある。CUT_BUFFER0 から CUT_BUFFER7 まで。Vim -は CUTBUFFER0 のみを使う。これは xterm が標準的に使っているものである。 - -Vim が利用不可能な状態 (終了やサスペンド) になり、他のアプリケーションのセレ -クションの要求に応答できなくなるときはいつでも、Vim は選択されている内容を -CUT_BUFFER0 に書き込む。"+ クリップボードセレクションが Vim のものであると -き、それが優先して書き込まれる。そうでなければ、 "* プライマリセレクションが -Vim のものであるときに、それが書き込まれる。 - -同様に、Vim が "* や "+ からペーストしようとするとき (明示的、もしくはマウス -のミドルボタンをクリックしたときの暗黙的な "* レジスタの使用)、要求した X セ -レクションが空もしくは利用不可能なら、Vim は CUT_BUFFER0 の現在の値を読み込 -む。 - -Note これによってテキストが CUT_BUFFER0 にコピーされるときは、セレクションの -型情報 (文字、行、ブロック) は常に失われる。後にそれをペーストするのが Vim -であっても。 - -通常、Xterm は、選択したものをプライマリと CUT_BUFFER0 の両方に書き込む。 -ペースト時には、利用可能であればプライマリが使われ、それができなければ -CUT_BUFFER0 が使用される。このため、Vim と xterm の間でのカットやペーストに -は "* レジスタを使わなければならない。Xterm はクリップボードを使わないので -"+ レジスタは使えない。 - -最近のほとんどのアプリケーションでは範囲選択でプライマリ ("*) を、カット、コ -ピー、ペーストの操作でクリップボード ("+) を使用するようになっている。そのた -め "* レジスタか "+ レジスタを選択して使用することができる。 - - - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/runtime.old/doc/hangulin.jax b/runtime.old/doc/hangulin.jax deleted file mode 100644 index c9dd26b73..000000000 --- a/runtime.old/doc/hangulin.jax +++ /dev/null @@ -1,108 +0,0 @@ -*hangulin.txt* For Vim バージョン 7.3. Last change: 2009 Jun 24 - - - VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam - -NOTE: |+hangul_input| 機能は削除されることが予定されています。これの存続を望む -方は Vim ユーザーメーリングリストにメッセージを送ってください。 - - -イントロダクション *hangul* ------------------- -これは GUI version の Vim でハングル(韓国語)を入力するための説明です。XIM プロ -グラムを持っている場合は、|+xim| 機能を使うことができます。基本的にこのファイ -ルは XIM プログラムを持っていない方向けの説明です。 - -コンパイル ----------- -次のオプションは最低限の指定であり、他の configure オプションを追加することも -できます。 > - - ./configure -with-x --enable-multibyte --enable-fontset --enable-hangulinput - -そして、|+hangul_input| 機能が configure によって有効になっているかどうか、 -feature.h をチェックすべきです。そして、他のオプションも選択することができます。 -たとえば、2 bulsik か 3 bulsik のどちらのキーボード・タイプを使うかなど。次の -ようなキーワードがファイルにはあります。 -> - #define HANGUL_DEFAULT_KEYBOARD 2 - #define ESC_CHG_TO_ENG_MODE - /* #define X_LOCALE */ - /* #define SLOW_XSERVER */ - -環境変数 --------- -LANG 変数を、ko や ko_KR.euc のような韓国語ロケールに指定する必要があります。 -LC_ALL 変数をセットしている場合は、それも韓国語ロケールである必要があります。 - -VIM リソース ------------- -次の行を vimrc ($HOME/.vimrc) に加えてください。 > - - :set fileencoding=korea - -キーボード ----------- -VIM_KEYBOARD か HANGUL_KEYBOARD_TYPE 環境変数を使うことによって、キーボード・ -タイプ(2 bulsk か 3 bulsik)を変更することができます。sh の場合で、2 bulsik に -するには、次を実行してください: > - - export VIM_KEYBOARD="2" -もしくは: > - export HANGUL_KEYBOARD_TYPE="2" - -両方がセットされている場合は、VIM_KEYBOARD が優先されます。 - -ハングル・フォント ------------------- -$HOME/.Xdefaults か ユーザの.gvimrc でテキストのフォントを設定することができま -す。しかし、ハングルを使うには、vimrc で 'guifontset' を設定する必要があります。 - -$HOME/.Xdefaults: > - Vim.font: english_font - - ! 次の行は Athena version でのハングル・メニューに使われます - *international: True - Vim*fontSet: english_font,hangul_font - - ! 次の行は Motif version でのハングル・メニューに使われます - *international: True - Vim*fontList: english_font;hangul_font: - -$HOME/.gvimrc: > - set guifontset=english_font,hangul_font - -注意! , (コンマ) か ; (セミコロン)です。 - -そして ':set guifont' が設定されていてはいけません。もし設定されていると GVim -は ':set guifontset' を無視します。つまり、Vim がフォント・セットのサポートな -しで動作することになり、英語の文字だけが見えることになり、ハングルは正しくは表 -示されなくなります。 - -'fontset' 機能が有効にされた後では、Vim では 'font' は使えなくなります。例えば、 -もし .gvimrc で次のようにしている場合は: > - :set guifontset=eng_font,your_font -構文ハイライトの指定では次のようにする必要があります: > - :hi Comment guifg=Cyan font=another_eng_font,another_your_font -単に次のようにした場合は: > - :hi Comment font=another_eng_font -たくさんのエラー・メッセージが表示されることになります。注意してください! - -ハングル・フォントの幅は、英語フォントの幅の2倍である必要があります。 - -サポートされていない機能 ------------------------- -Johab フォントはサポートされていませんし、予定もありません。どうしても johab -フォントが使いたい場合は、gau パッケージの hanguldraw.c を使うことができます。 - -Hanja 入力はまだサポートされていませんし、予定もありません。どうしても Hanja -を入力したい場合は、hanterm で Vim を使ってください。 - -バグ・コメント --------------- -コメント、パッチ、提案などはこちらに: - - Chi-Deok Hwang <hwang@mizi.co.kr> - SungHyun Nam <goweol@gmail.com> - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/help.jax b/runtime.old/doc/help.jax deleted file mode 100644 index ef6257615..000000000 --- a/runtime.old/doc/help.jax +++ /dev/null @@ -1,225 +0,0 @@ -*help.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - VIM - メインヘルプファイル - k - 移動: カーソルを使用するか、"h" で左、"j" で下、 h l - "k" で上、"l" で右に移動できます。 j - ヘルプの終了: ":q<Enter>" とタイプします。 - Vim の終了: ":qa!<Enter>" とします(注意! 変更はすべて破棄される)。 - - 項目へジャンプ: タグ (例:|bars|) にカーソルを合わせ、CTRL-] を押します。 - マウスでジャンプ: ":set mouse=a"と入力してマウスを有効にしてください (xterm - or GUI で利用可)。タグ (例:|bars|) をマウスの左ボタンでダ - ブルクリックすると、項目にジャンプできます。 - 元の場所に戻る: CTRL-T or CTRL-O を押す。 - - 項目を指定する: |:help| コマンドに項目を指定することで、その項目を直ちに - 表示できます。調べたい項目の種類を指定することもできます。 - *help-context* - 種類 修飾子 例 ~ - ノーマルモードコマンド (無し) :help x - ビジュアルモードコマンド v_ :help v_u - 挿入モードコマンド i_ :help i_<Esc> - コマンドラインコマンド : :help :quit - コマンドライン編集 c_ :help c_<Del> - Vim の起動引数 - :help -r - オプション ' :help 'textwidth' - ヘルプを検索する: ":help word" とタイプしてから CTRL-D を押すと "word" に - マッチするヘルプ項目の一覧が表示されます。 - もしくは ":helpgrep word" を使ってください。 |:helpgrep| - -VIM は Vi IMproved の略です。VIM の大部分は Bram Moolenaar によって作成され、 -たくさんの人が協力しました。|credits| 参照。 ------------------------------------------------------------------------------- - *doc-file-list* *Q_ct* -基本: -|quickref| よく使うコマンドのクイックリファレンス -|tutor| 30分の初心者向けトレーニングコース -|copying| 著作権について -|iccf| ウガンダの恵まれない子供達への支援活動 -|sponsor| Vim 開発スポンサー制度、Vim の登録ユーザになろう -|www| インターネット上の Vim 情報 -|bugs| バグレポートの送信先 - -ユーザマニュアルでは編集作業の進め方を説明します。 - -|usr_toc.txt| ユーザマニュアル目次 - -初級編 ~ -|usr_01.txt| マニュアルについて -|usr_02.txt| 初めての Vim -|usr_03.txt| カーソルの移動 -|usr_04.txt| 簡単な編集 -|usr_05.txt| 設定の変更 -|usr_06.txt| 構文強調表示 -|usr_07.txt| 複数のファイルを開く -|usr_08.txt| ウィンドウの分割 -|usr_09.txt| GUI を使う -|usr_10.txt| 大規模な編集 -|usr_11.txt| クラッシュからの復帰 -|usr_12.txt| 便利な小技 - -上級編 ~ -|usr_20.txt| コマンドラインを素早く入力する -|usr_21.txt| 中断と再開 -|usr_22.txt| ファイルを探す -|usr_23.txt| 特殊なファイルを編集する -|usr_24.txt| 素早く入力する -|usr_25.txt| テキストの整形 -|usr_26.txt| 繰り返し -|usr_27.txt| 検索コマンドと正規表現 -|usr_28.txt| 折り畳み -|usr_29.txt| プログラムの中を移動する -|usr_30.txt| プログラムの編集 -|usr_31.txt| GUI を活用する -|usr_32.txt| undo ツリー - -カスタマイズ ~ -|usr_40.txt| 新しいコマンドを作る -|usr_41.txt| Vim スクリプト書法 -|usr_42.txt| 新しいメニューを追加する -|usr_43.txt| ファイルタイプを使う -|usr_44.txt| 構文ファイルを作成する -|usr_45.txt| 言語を選択する - -インストール ~ -|usr_90.txt| Vim のインストール - - - *reference_toc* -リファレンスマニュアルでは Vim の詳細を説明します。 - -一般事項 ~ -|intro.txt| Vimについての前書き。と、ヘルプの表記について -|help.txt| 全体説明とクイックリファレンス (今見ているファイル) -|helphelp.txt| ヘルプの使い方 -|index.txt| 全コマンド一覧。アルファベット順 -|help-tags| ジャンプできるタグ一覧 -|howto.txt| 一般的な編集操作についてのHow to -|tips.txt| さまざまなTips -|message.txt| (エラー)メッセージの説明 -|quotes.txt| Vimユーザーの感想 -|todo.txt| 既知のバグと、機能拡張の要望 -|debug.txt| Vimのデバッグについて -|develop.txt| Vimの開発に関して -|uganda.txt| Vimの配布条件と、あなたが支払ったお金の使い道について - -基本的な編集 ~ -|starting.txt| Vimの起動。起動引数や初期化に関して -|editing.txt| ファイルの編集と保存 -|motion.txt| 移動コマンド -|scroll.txt| ウィンドウのスクロール -|insert.txt| 挿入モードと上書きモード -|change.txt| テキストの削除と変更 -|indent.txt| C言語や、その他の言語の自動インデント -|undo.txt| アンドゥとリドゥ -|repeat.txt| 繰り返しコマンド、Vimスクリプト、スクリプトのデバッグ -|visual.txt| ビジュアルモード (テキストの選択) -|various.txt| その他の様々なコマンド -|recover.txt| クラッシュからの復帰 - -高度な編集 ~ -|cmdline.txt| コマンドラインの編集 -|options.txt| 全オプションの説明 -|pattern.txt| 検索コマンドと正規表現 -|map.txt| キーマップと短縮入力 -|tagsrch.txt| タグと特別な検索 -|quickfix.txt| 編集、コンパイル、修正、の流れを早くするコマンド -|windows.txt| マルチウィンドウとマルチバッファのコマンド -|tabpage.txt| タブページを操作するコマンド -|syntax.txt| 構文強調 -|spell.txt| スペルチェック -|diff.txt| バージョン違いのファイルの編集。差分モード -|autocmd.txt| イベントに応じて自動的にコマンドを実行する -|filetype.txt| ファイルタイプ別の設定 -|eval.txt| 式の評価。条件式。 (Vim スクリプトリファレンス) -|fold.txt| ある範囲を隠す (折り畳む) - -特定機能 ~ -|print.txt| 印刷 -|remote.txt| クライアント/サーバ機能 -|term.txt| いろいろな端末やマウスについて -|digraph.txt| 利用可能な二重字の一覧 -|mbyte.txt| マルチバイトテキストのサポート -|mlang.txt| 英語以外の言語のサポート -|arabic.txt| アラビア語のサポート -|farsi.txt| ペルシア語のサポート -|hebrew.txt| ヘブライ語のサポート -|russian.txt| ロシア語のサポート -|ft_ada.txt| Ada (プログラミング言語) のサポート -|ft_sql.txt| SQL ファイルタイププラグイン -|hangulin.txt| ハングル (韓国語) の入力 -|rileft.txt| 右横書き (書字方向が右から左になるモード) - -GUI ~ -|gui.txt| グラフィカルユーザインターフェース (GUI) -|gui_w16.txt| Windows 3.1 GUI -|gui_w32.txt| Win32 GUI -|gui_x11.txt| X11 GUI - -拡張インターフェース ~ -|if_cscop.txt| cscopeを使う -|if_lua.txt| Lua インターフェース -|if_mzsch.txt| MzScheme インターフェース -|if_perl.txt| Perl インターフェース -|if_pyth.txt| Python インターフェース -|if_sniff.txt| SNiFF+ インターフェース -|if_tcl.txt| Tcl インターフェース -|if_ole.txt| Win32のOLEオートメーション -|if_ruby.txt| Ruby インターフェース -|debugger.txt| デバッガ用のインターフェース -|workshop.txt| Sun Visual Workshop インターフェース -|netbeans.txt| NetBeans External Editor インターフェース -|sign.txt| デバッグ用の目印 - -バージョン情報 ~ -|vi_diff.txt| VimとViの主な違い -|version4.txt| Vim version 3.0 と 4.x の違い -|version5.txt| Vim version 4.6 と 5.x の違い -|version6.txt| Vim version 5.7 と 6.x の違い -|version7.txt| Vim version 6.4 と 7.x の違い - *sys-file-list* -システムに関する説明 ~ -|os_390.txt| OS/390 Unix -|os_amiga.txt| Amiga -|os_beos.txt| BeOS と BeBox -|os_dos.txt| MS-DOS と MS-Windows NT/95 の共通事項 -|os_mac.txt| Macintosh -|os_mint.txt| Atari MiNT -|os_msdos.txt| MS-DOS (DOS と Windows の DOS プロンプト) -|os_os2.txt| OS/2 -|os_qnx.txt| QNX -|os_risc.txt| RISC-OS -|os_unix.txt| Unix -|os_vms.txt| VMS -|os_win32.txt| MS-Windows 95/98/NT - *standard-plugin-list* -標準プラグイン ~ -|pi_getscript.txt| Vim スクリプトの最新版をダウンロードする -|pi_gzip.txt| 圧縮ファイルの読み書き -|pi_netrw.txt| ネットワークファイルの読み書き -|pi_paren.txt| 対括弧の強調表示 -|pi_tar.txt| Tar ファイルエクスプローラ -|pi_vimball.txt| Vim スクリプトインストーラを作成する -|pi_zip.txt| Zip アーカイブエクスプローラ - -その他 ~ -|vim_faq.txt| FAQ - -LOCAL ADDITIONS: *local-additions* - ------------------------------------------------------------------------------- -*bars* Bars example - -今、あなたはマウスのダブルクリックか CTRL-] でジャンプしてきました。CTRL-T、 -CTRL-O、g<RightMouse>、<C-RightMouse> のどれかで元の場所に戻れます。 - -Note: タグは | で囲まれていますが、その文字は、カラー表示が有効になっている場 -合は表示されません。読みやすさのためです。 - -CTRL-] はどの単語の上でも使えます。| で囲まれていない単語でも大丈夫です。選択 -された単語がヘルプから検索されます。特にシングルクオートで囲まれたオプション名 -(例: 'compatible')。 - ------------------------------------------------------------------------------- - vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl: diff --git a/runtime.old/doc/helphelp.jax b/runtime.old/doc/helphelp.jax deleted file mode 100644 index b416d807c..000000000 --- a/runtime.old/doc/helphelp.jax +++ /dev/null @@ -1,350 +0,0 @@ -*helphelp.txt* For Vim バージョン 7.3. Last change: 2010 Sep 14 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -ヘルプのヘルプ *helphelp* - -1. ヘルプコマンド |online-help| -2. 翻訳ヘルプ |help-translated| -3. ヘルプファイルの書き方 |help-writing| - -============================================================================== -1. ヘルプコマンド *online-help* - - *help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>* -<Help> or -:h[elp] 新しいウィンドウを作成し、ヘルプファイルを読み込み専用 - で開きます。ヘルプウィンドウがすでに開いているときはそ - のウィンドウを使います。カレントウィンドウの幅がスク - リーンと同じか、 80 文字分以上のときにはヘルプウィンド - ウはカレントウィンドウのすぐ上に作成されます。そうでな - いときには、ヘルプウィンドウは最上部に作成されます。 - 複数言語のヘルプが利用可能なときは、言語を選択するため - に、オプション 'helplang' が参照されます。 - {Vi にはない} - - *{subject}* *E149* *E661* -:h[elp] {subject} ":help"と同じですが、加えて、{subject} へタブジャンプ - します。 - {subject} には "*", "?"、"[a-z]" といったワイルドカー - ドも指定できます。 - :help z? "z" コマンドのいずれかのヘルプを開く - :help z. "z." のヘルプを開く - パターンに完全に一致する項目が無かった場合、または、複 - 数の項目が一致した場合には、"最善"の一致が選択されま - す。洗練されたアルゴリズムで最善な項目が決定されます。 - 次のような優先順位が使われます: - - 大小文字が一致したほうが、しない時よりも良い - - 非英数字のあとにマッチするほうが、単語の真ん中にマッ - チするものよりも良い。 - - タグ名の先頭でマッチするか、なるべく先頭に近いほう - が、そうでないものよりも良い。 - - より多くの英数字がマッチするほうが良い。 - - 短いマッチが良い。 - - {subject} のヘルプが複数の言語にある場合には、言語を選 - 択するために、オプション 'helplang' が参照されます。 - 言語を指定してタグを検索するには {subject} に "@ab" を - 付加します。"ab" は2文字の言語コードです。 - |help-translated| を参照。 - - 長い {subject} を与えても、より短いものにマッチするこ - ともあります。この動作はコマンドラインの補完を考えると - わかりやすいでしょう (":help subject" の後でCTRL-Dをタ - イプしてみてください |c_CTRL-D|)。 - 複数の候補がある場合には、CTRL-Dを押すことで一覧を見る - ことができます。例: > - :help cont<Ctrl-D> - -< 例えば CTRL-V のヘルプを引くときに ":help CTRL-V" とタ - イプする代わりに次のようにすることもできます: > - :help ^V -< これは他の文字付きでも機能します。例えば インサート - モードの CTRL-V の動作を調べるには次のようにします: > - :help i^V -< - 正規表現 (|pattern|) を使うには、まず":help"を実行し、 - ヘルプウィンドウで ":tag {pattern}" を実行します。 - ":tnext"コマンドでその他の項目へ移動することができ、 - ":tselect"でマッチした候補の一覧から選択することができ - ます。 > - :help index| :tse z. - -< 引数が指定されていない場合は "help" にマッチするものが - 表示されます (すべての候補にマッチしてしまうのを防ぐた - め。そのような処理は時間がかかります)。 - マッチした候補は最大で 300 件まで表示されます。 - - :help コマンドの後ろには '|' で他のコマンドを続けるこ - とができます。しかし、'|' のヘルプを引くのに '|' をエ - スケープする必要はありません。したがって、次の例はどち - らも正しく機能します: > - :help | - :help k| only -< Note: '|' の直前の空白があると ":help" コマンドの引数 - の一部として解釈されてしまいます。 - ヘルプコマンドと続くコマンドを区切るには <LF> と <CR> - も使えます。<LF> や <CR> を入力するには、CTRL-V を使い - ます。例: > - :help so<C-V><CR>only -< {Vi にはない} - -:h[elp]! [subject] ":help" と同じですが、非英語のヘルプファイルを開いてい - るときには、それと同じ言語を優先します。 - |help-translated|も参照。 - - *:helpg* *:helpgrep* -:helpg[rep] {pattern}[@xx] - すべてのヘルプファイルから {pattern} を検索して、マッ - チした行の一覧を作成します。そして最初にマッチした行へ - ジャンプします。 - [@xx] を指定した場合は、言語 "xx" のヘルプのみマッチし - ます。 - |quickfix|コマンドを使ってマッチした行の一覧を順に移動 - できます。例えば、|:cnext|で次の項目へジャンプしたり、 - |:cwindow|でマッチした行の一覧をクイックフィックスウィ - ンドウに表示できます。 - {pattern} には Vim の正規表現を使用できます|pattern|。 - 'ignorecase' は影響しません。大文字と小文字を区別する - には "\c" を使ってください。 - 大文字と小文字を区別して検索する例: > - :helpgrep Uganda -< 区別しない例: > - :helpgrep uganda\c -< フランス語のヘルプを検索: > - :helpgrep backspace@fr -< 改行を含むパターンはサポートされていません。一行内で - マッチするようにしてください。代わりに |:grep| を使用 - することもできますが、その場合は、どうにかして検索結果 - からヘルプファイルの一覧を取得する必要があります。 - 他のコマンドを後ろに続けることはできません。すべての文 - 字はパターンの一部として解釈されます。必要なら - |:execute| を使ってコマンドを並べることができます。 - 圧縮されたヘルプファイルは検索されません(Fedoraはヘル - プファイルを圧縮します)。 - {Vi にはない} - - *:lh* *:lhelpgrep* -:lh[elpgrep] {pattern}[@xx] - ":helpgrep" と同じですが、クイックフィックスリストでは - なく、ロケーションリストを使います。ヘルプウィンドウが - すでに開いている場合は、そのウィンドウのロケーションリ - ストを使います。開いていない場合は、新しいヘルプウィン - ドウを作成し、そのウィンドウのロケーションリストをセッ - トします。カレントウィンドウのロケーションリストは変更 - されません。 - - *:exu* *:exusage* -:exu[sage] Ex コマンドのヘルプを表示します。Nvi との互換性のため - 追加されました。{Vi にはない} - - *:viu* *:viusage* -:viu[sage] ノーマルモードコマンドのヘルプを表示します。Nvi との互 - 換性のため追加されました。{Vi にはない} - -|:help|に引数を指定しなかった場合には 'helpfile' に設定されたファイルが開かれ -ます。引数を与えた場合には 'runtimepath' に設定されたすべてのディレクトリの -"doc/tags" から検索されます。 - -ヘルプウィンドウの高さの初期値は 'helpheight' で設定できます (標準設定: 20)。 - -ある項目へジャンプするにはタグを使います。これには2つの方法があります: -- オプションやコマンド名にカーソルをあわせて "CTRL-]" コマンド使う。これはタグ - がキーワードの時にだけ使用できます。"<C-Leftmouse>" と "g<LeftMouse>" は - "CTRL-]" と同じ動作をします。 -- ":ta {subject}" コマンドを使う。これはどのような文字でも使用できます。 - -ジャンプ先から戻るには CTRL-T か CTRL-O を使います。 -ヘルプウィンドウを閉じるには ":q" を使います。 - -探しているものが複数の項目にマッチする場合には、次のようにして各項目にジャンプ -できます: -1. ヘルプウィンドウを開く -2. 調べるタグにスラッシュを付けて ":tag" コマンドを実行する。例: > - :tag /min -3. ":tnext" を実行してマッチした次の項目へジャンプする。 - -プラグインなどのために、ヘルプを追加できます。そのために、配布されているヘルプ -ファイルに変更を加える必要はありません。|add-local-help|を参照。 - -ローカルヘルプファイルを書くには |write-local-help|を参照。 - -Note: ローカルヘルプファイルのタイトル行 (1 行目) は自動的にヘルプファイル -"help.txt" のセクション "LOCAL ADDITIONS" に追加されます|local-additions|。こ -れは Vim でファイルを開いたときに追加されるので、ヘルプファイル自体は変更され -ません。すべてのヘルプファイルの 1 行目が "LOCAL ADDITIONS" に追加されますが、 -$VIMRUNTIME/docにあるファイルは対象外です。 - - *help-xterm-window* -他の xterm ウィンドウでヘルプを表示するには、このコマンドを使ってください: > - :!xterm -e vim +help & -< - - *:helpfind* *:helpf* -:helpf[ind] |:help|と同じですが、引数を入力するためのダイアログを - 使います。後方互換性のために残さされています。現在は組 - み込みのダイアログを使用せず、メニューの - ToolBar.FindHelp を使います。{|+GUI_GTK|が有効な場合の - み利用できます} - {Vi にはない} - - *:helpt* *:helptags* - *E154* *E150* *E151* *E152* *E153* *E670* -:helpt[ags] [++t] {dir} - ディレクトリ {dir} のヘルプタグファイルを作成します。 - "*.txt" と "*.??x" というファイル内のスター (*) で囲ま - たタグがすべてスキャンされます。"*.??x" というファイル - は翻訳ヘルプです。"tags-??" というタグファイルが生成さ - れます。|help-translated|を参照。 - 作成されたタグファイルはソートされます。 - タグの重複があるときはエラーメッセージが表示されます。 - すでにあるタグファイルは警告なしに上書きされます。 - "++t" 引数を指定すると "help-tags" タグが強制的に追加 - されます。これは、{dir} が $VIMRUNTIME/doc と等しいと - きにも同様にタグが追加されます。 - ランタイムディレクトリのヘルプタグファイルを作成し直す - には次のようにします (ファイルの書き込み権限が必要): > - :helptags $VIMRUNTIME/doc -< {Vi にはない} - - -============================================================================== -2. 翻訳ヘルプ *help-translated* - -翻訳ヘルプを追加し、英語のヘルプファイルと共存させることができます。 -'runtimepath' の "doc" ディレクトリにあるすべてのヘルプが検索対象になります。 -{|+multi_lang|が有効な場合のみ利用できます} - -今のところ、以下の翻訳が利用可能です: - Chinese - 共同翻訳 - French - 翻訳者 David Blanchet - Italian - 翻訳者 Antonio Colombo - Polish - 翻訳者 Mikolaj Machowski - Russian - 翻訳者 Vassily Ragosin -詳しくは Vim のウェブサイトを参照してください: - http://www.vim.org/translations.php - -翻訳ヘルプファイルの名前は次のようになってます: - - help.abx - howto.abx - ... - tags-ab - -"ab" は 2 文字の言語コードでです。例えばイタリア語なら次のような名前になりま -す: - - help.itx - howto.itx - ... - tags-it - -訳注: 日本語の言語コードは ja です。help.jax - -オプション 'helplang' に言語の優先順位を指定できます。初期設定は環境から自動的 -に設定されます。ヘルプを検索するときはまず、優先の高い言語からタグが検索されま -す。見つからなかった場合は、英語のヘルプが使われます。 - -言語を指定してタグを検索するには "@ab" をタグ名に付け加えます。"ab" は 2 文字 -の言語コードです。例: > - :he user-manual@it - :he user-manual@en -最初の例は、'helplang' が未設定の場合でも、イタリア語のユーザマニュアルを検索 -します。 -2 番目の例は、'helplang' が "it" に設定されている場合でも、英語のユーザマニュ -アルを検索します。 - -":help" コマンドでコマンドライン補完をするとき、複数の言語でタグが見つかった場 -合には "@en" が付加されます。タグが英語だけにある場合には、"@en" は省略されま -す。 - -翻訳ヘルプで |CTRL-]| や ":help!" を使うと、同じ言語のタグが検索されます。見つ -からなかった場合は、言語を選択するために 'helplang' が参照されます。 - -ヘルプファイルのエンコーディングは latin1 か utf-8 にしてください。非 ASCII 文 -字が 1 行目にある場合、そのヘルプファイルは utf-8 であると判断されます。ヘッダ -の "For Vim version" を翻訳しておくとよいでしょう。 - -一つのディレクトリの一つの言語のヘルプファイルはすべて同じエンコーディングを -使ってください。。別の言語なら別のエンコーディングを使用できます。ディレクトリ -を分けた場合は、同じ言語で別のエンコーディングを使用できます。 - -翻訳のヒント: -- タグは翻訳しない。そうすれば 'helplang' を使って言語の優先順位を指定できま - す。言語用の新しいタグを追加するのは構いません。 -- ファイルの一部を翻訳しない場合は、英語のままタグを追加し、"tag@en" 表記を使 - えるようしてください。 -- ヘルプファイルとタグファイルをまとめてダウンロードできるようにしてください。 - そうすれば、ユーザはそれを "doc" ディレクトリにコピーするだけで使えます。 - www.vim.org からリンクしたいので、Bramに連絡してください。 -- タグファイルを作成するには |:helptags| を使います。指定したディレクトリのす - べての言語のファイルが処理されます。 - -============================================================================== -3. ヘルプファイルの書き方 *help-writing* - -プラグインのヘルプファイルは Vim の標準のヘルプファイルと同じ書式で書かれてい -ると便利です。あなたが新しいヘルプファイルを書くときは、既存のファイルをコピー -してそれをテンプレートとして使用するといいでしょう。 - -ヘルプファイルの 1 行目は次のように書きます: - -*helpfile_name.txt* For Vim version 7.3 Last change: 2010 June 4 - -最初のフィールドはヘルプファイル名へのリンクです。二つめのフィールドは対応して -いる Vim のバージョンを説明しています。最後のフィールドはファイルの最終更新日 -です。それぞれのフィールドはタブ文字で区切られます。 - -ファイルの末尾には Vim のモードラインを書いて 'textwidth' オプションと -'tabstop' オプションを設定し、'filetype' を 'help' に設定します。モードライン -でグローバルオプションを設定しないでください。そのヘルプを読んだ人に望ましくな -い結果をもたらします。 - - -タグ - -ヘルプタグを定義するには、名前をアスタリスクで挟みます (*tag-name*)。tag-name -は他のすべての Vim ヘルプのタグ名とは違う名前になっていて、プラグインの名前で -始まっているのが理想的です。タグ名は普通は右寄せで書きます。 - -既存のヘルプタグに言及してそのタグへのリンクを作成するには、名前をバー (|) で -挟みます。例: |help-writing| - -Vim オプションについて言及するときは、オプション名をシングルクォートで囲みま -す。例: 'statusline' - - -ハイライト表示 - -列見出しを定義するにはチルダ文字を行末に付けます。チルダを付けると列見出しが別 -の色で表示されます。例: - -列見出し ~ - -ヘルプファイルを節 (section) で区切るときは、'=' 文字を 1 列目から連続して書き -ます。節区切り行は別の色でハイライトされます。 - -Ex コマンドのブロックを例示するときは、大なり記号 (>) をその直前のブロックの行 -末に書き、小なり記号 (<) をその後ろのブロックの前の最初の非空白文字として書き -ます。テキストが 1 列目から始まっている行があると、Ex コマンドのブロックはその -直前で暗黙的に終了となります。例: > - function Example_Func() - echo "Example" - endfunction -< - -Vim ヘルプファイルでは以下のものがそれぞれハイライトされます: - - 特殊キーの名前。<PageDown> のような <> 表記で書かれたものと、CTRL-X のよう - に書かれた制御文字。 - - {braces} で囲まれた文字。例: {lhs} と {rhs} - -"Note" や "Notes" などの単語もそれぞれハイライトされます。 -次のような表示もあります: - *Todo something to do - *Error something wrong - -詳細は $VIMRUNTIME/syntax/help.vim を見てください。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/howto.jax b/runtime.old/doc/howto.jax deleted file mode 100644 index 320329896..000000000 --- a/runtime.old/doc/howto.jax +++ /dev/null @@ -1,96 +0,0 @@ -*howto.txt* For Vim バージョン 7.3. Last change: 2006 Apr 02 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -How to ... *howdoi* *how-do-i* *howto* *how-to* - -|tutor| 始めてみよう -|:quit| 終了したいな? 出られない、助けて! -|initialization| Vim を初期化する -|vimrc-intro| Vimスクリプトファイル(vimrc)を書く -|suspend| Vim をサスペンドする -|usr_11.txt| クラッシュした後にリカバリーする -|07.4| 上書きするときにバックアップファイルを作っておく - -|usr_07.txt| ファイルを編集する -|23.4| バイナリーファイルを編集する -|usr_24.txt| テキストを挿入する -|deleting| テキストを削除する -|usr_04.txt| テキストを変更する -|04.5| テキストをコピーしたり移動したりする -|usr_25.txt| テキストを整形する -|30.6| コメントを整形する -|30.2| C のプログラムをインデントする -|25.3| 自動的にインデントをセットする - -|usr_26.txt| コマンドを繰り返す -|02.5| アンドゥとリドゥ - -|usr_03.txt| 動き回る -|word-motions| 単語単位で移動 -|left-right-motions| 左右に移動 -|up-down-motions| 上下に移動 -|object-motions| オブジェクト単位で移動 -|various-motions| 様々な動き -|object-select| オブジェクト単位で選択 -|'whichwrap'| 行末をまたいだ移動 -|'virtualedit'| テキストのないところを移動する -|usr_27.txt| 検索のパターンを指定する -|tags-and-searches| タグを実行し特殊な検索を行う -|29.4| インクルードされるファイルを検索して変数や関 - 数やマクロを見つける -|K| カーソルの下の単語をキーワードにしてマニュアルを読む - -|03.7| スクロールする -|'sidescroll'| 垂直/横にスクロールする -|'scrolloff'| スクロール中に常に前後に表示する行数を決める。 - -|mode-switching| モードを変更する -|04.4| ビジュアルモードを使う -|'insertmode'| 挿入モードで Vim を起動する - -|40.1| キーをマップする -|24.7| 略語(abbreviations)を作る - -|ins-expandtab| 挿入モードでタブをスペースに広げる -|i_CTRL-R| 挿入モードでレジスターの内容を挿入する -|24.3| 挿入モードで単語の補完を行う -|25.1| 行が長くなりすぎる前に改行する - -|20.1| コマンドライン編集 -|20.3| コマンドライン補完 -|'cmdheight'| コマンドラインの高さを広げる -|10.3| コマンドラインの幅を指定する -|40.3| 自動的に実行されるコマンドを指定する。 - バッファー/ウィンドー を 読み込む/書き込む - 入る/離れる 前/後 に。 - -|'autowrite'| 自動的に書き込む -|30.1| 編集-コンパイル-編集のサイクルをスピードアップする - もしくは Vim でコンパイルしてエラーを修正する - -|options| オプションをセットする -|auto-setting| オプションを自動的にセットする -|term-dependent-settings| 端末の名前によってオプションをセットする -|save-settings| 設定を保存する -|:quote| .vim ファイルでのコメント -|'helpheight'| ヘルプのデフォルトの高さを変更する -|'highlight'| さまざまなハイライティングモードをセットする -|'title'| ウインドーのタイトルをセットする -|'icon'| ウインドーのアイコンをセットする -|'report'| 行を編集する毎に表示されるメッセージをやめさせる -|'shortmess'| |hit-enter| プロンプトが出るのを避ける - -|mouse-using| Vim でマウスを使う -|usr_08.txt| 複数のウィンドーとバッファーを使う -|gui.txt| GUI を利用する - -|(まだ)できません| Vim を使って夕食を取る - -|usr_06.txt| 構文ハイライトを有効にする -|2html.vim| 色づけされたファイルを HTML に変換する -|less| Vimをlessやmoreと同じように使う - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/if_cscop.jax b/runtime.old/doc/if_cscop.jax deleted file mode 100644 index 28e637023..000000000 --- a/runtime.old/doc/if_cscop.jax +++ /dev/null @@ -1,483 +0,0 @@ -*if_cscop.txt* For Vim バージョン 7.3. Last change: 2011 Jun 12 - - - VIM リファレンスマニュアル by Andy Kahn - - - *cscope* *Cscope* -この文章はVimにおけるcscopeインターフェースの使い方について述べている。 - -cscopeはctagsのようなツールであるが、ctagsよりも多くの機能が提供されるので -ctagsの代わりとみなせる。Vimではタグにジャンプするように、cscopeクエリの結果へ -ジャンプすることができる; ジャンプの履歴はタグスタックに保存されいつものキー -マッピングにより、普段|tags|でやるように関数の間を行ったり来たりできる。 - -1. Cscopeの紹介 |cscope-intro| -2. Cscopeに関係するコマンド |cscope-commands| -3. Cscopeオプション |cscope-options| -4. Vimでのcscopeの使い方 |cscope-howtouse| -5. 制限事項 |cscope-limitations| -6. 使い方の提案 |cscope-suggestions| -7. 入手法と情報 |cscope-info| - -現在のところUNIXとWin32で使える。 -{Vi にはこれらのコマンドは無い} - -============================================================================== -1. Cscopeの紹介 *cscope-intro* - -以下の文章はあるバージョンのcscopeのマニュアルから引用した: - - ----- - - cscopeは貴方を助けるインタラクティブなスクリーン指向のツールです: - - いつ終わるかわからない厚いソースリストのぺージをめくることなく、Cプログ - ラムがどのように働くかを知る。 - - プログラム全体を知らなくても、バグを修正するために変更すべきコードの位 - 置を見つける。 - - 列挙変数(enum)に値を追加するといった提案された変更の影響を検証する。 - - 既存の関数に引数を追加したというような全部のソースファイルに施された変 - 更を検証する。 - - 全部のソースファイルのグローバル変数の名前を変える。 - - ファイルの指定された行にある定数をプリプロセッサのシンボルに変更する。 - - これは次のような質問に答えるように意図されている: - どこでこのシンボルが使われたのか? - それがどこで定義されたのか? - この変数がどこでその値を得たのか? - このグローバルシンボルの定義は何か? - この関数はどのソースファイルのどこにあるのか? - どの関数がこの関数を呼んでいるのか? - どの関数がこの関数から呼ばれているか? - "メモリが足りない"というメッセージはどこから来たのか? - このソースファイルはディレクトリのどこにあるのか? - どんなファイルがこのヘッダーファイルをインクルードしているのか? - - cscopeは起動すると最初に1度だけソースファイルからシンボルデータベースを作成 - し、このデータベースを用いてこれらの質問に答える。2度目以降の起動では、ソー - スファイルが変更されたかソースファイルのリストが異なる時にだけデータベースが - 再構築される。データベースが再構築される時でも変更されていないファイルについ - ては過去のデータベースよりコピーされるので、初めから構築し直すよりも高速に - 構築できる。 - - ----- - -通常cscopeを起動すると、上のような問い合わせ(クエリ)を入力できるフルスクリーン -の選択画面が表示される。しかしながら、一度クエリが見つかりマッチを含むソース -ファイルを編集するためのエディタを指定してあると、普段viでCtrl-]や:tagコマンド -でやっているようなタグからタグへの単純なジャンプはできなくなる。 - -Vimのcscopeインターフェースはcscopeの行指向インターフェースを利用することでこ -れを行い、実クエリに対する出力を解釈する。cscopeのクエリの結果は最終的に通常の -tagsのようになるので、普通のタグのようなジャンプ操作(Ctrl-]や:tag)を行なうこと -ができ、タグスタックをCtrl-Tで逆に辿ることも可能になる。(しかしキーマップの再 -定義やコマンドやオプションの設定をしないで、まったく単純にCtrl-]や:tagと同じよ -うにジャンプできるわけではないことに注意して欲しい。cscopeインターフェースがど -のように働くのか、どういう使い方が提案されているのかは残りのセクションを参 -照。) - - -============================================================================== -2. Cscopeに関係するコマンド *cscope-commands* - - *:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560* -全てのcscopeのコマンドはメインコマンド":cscope"のサブコマンドとしてアクセスす -ることができる。最も短い省略形は":cs"である。":scscope"コマンドはウィンドウ分 -割を伴って同じ事を行なう(省略形: "scs")。 - -利用可能なサブコマンドは: - - *E563* *E564* *E566* *E568* *E569* *E622* *E623* - *E625* *E626* *E609* - add : 新しいcscopeデータベース/接続を追加する。 - - 使用法 :cs add {file|dir} [pre-path] [flags] - - [pre-path] cscopeに-Pコマンドで渡されるパス名 - - [flags] cscopeに引き渡す追加フラグ - - 例 > - :cscope add /usr/local/cdb/cscope.out - :cscope add /projects/vim/cscope.out /usr/local/vim - :cscope add cscope.out /usr/local/vim -C -< - *cscope-find* *cs-find* *E567* - find : cscopeに問い合わせる。#5オプション(grepパターンを変更する)以外の全 - cscopeクエリオプションが使用可能。 - - 使用法 :cs find {querytype} {name} - - {querytype}は実際のcscopeのラインインターフェース - の番号(デフォルトのnviコマンド)に対応する: - - 0 or s: Cのシンボルを検索 - 1 or g: 定義を検索 - 2 or d: この関数から呼ばれる関数を検索 - 3 or c: この関数を呼んでいる関数を検索 - 4 or t: 文字列を検索 - 6 or e: egrepパターンを検索 - 7 or f: このファイルを検索 - 8 or i: このファイルを参照(#include)しているファイルを検索 - - 4 と 6 以外のタイプでは、{name} における先頭のスペースは取り除かれ - る。4 と 6 では {querytype} と {name} の間にちょうど 1 個のスペースが - 挿入される。 - - 例 > - :cscope find c vim_free - :cscope find 3 vim_free -< - この2つの例は、同じクエリ("vim_free" を呼び出している関数を検索)を - 実行する。 > - - :cscope find t initOnce - :cscope find t initOnce - - この例の上の方は、"initOnce" というテキストを検索し、下の方は - "initOnce" を検索する。 > - - :cscope find 0 DEFAULT_TERM -< - この例を Vim 5.1 のソースコードに対して行なうと、以下の出力を生成 - する。 - - - Cscope tag: DEFAULT_TERM - # line filename / context / line - 1 1009 vim-5.1-gtk/src/term.c <<GLOBAL>> - #define DEFAULT_TERM (char_u *)"amiga" - 2 1013 vim-5.1-gtk/src/term.c <<GLOBAL>> - #define DEFAULT_TERM (char_u *)"win32" - 3 1017 vim-5.1-gtk/src/term.c <<GLOBAL>> - #define DEFAULT_TERM (char_u *)"pcterm" - 4 1021 vim-5.1-gtk/src/term.c <<GLOBAL>> - #define DEFAULT_TERM (char_u *)"ansi" - 5 1025 vim-5.1-gtk/src/term.c <<GLOBAL>> - #define DEFAULT_TERM (char_u *)"vt52" - 6 1029 vim-5.1-gtk/src/term.c <<GLOBAL>> - #define DEFAULT_TERM (char_u *)"os2ansi" - 7 1033 vim-5.1-gtk/src/term.c <<GLOBAL>> - #define DEFAULT_TERM (char_u *)"ansi" - 8 1037 vim-5.1-gtk/src/term.c <<GLOBAL>> - # undef DEFAULT_TERM - 9 1038 vim-5.1-gtk/src/term.c <<GLOBAL>> - #define DEFAULT_TERM (char_u *)"beos-ansi" - 10 1042 vim-5.1-gtk/src/term.c <<GLOBAL>> - #define DEFAULT_TERM (char_u *)"mac-ansi" - 11 1335 vim-5.1-gtk/src/term.c <<set_termname>> - term = DEFAULT_TERM; - 12 1459 vim-5.1-gtk/src/term.c <<set_termname>> - if (STRCMP(term, DEFAULT_TERM)) - 13 1826 vim-5.1-gtk/src/term.c <<termcapinit>> - term = DEFAULT_TERM; - 14 1833 vim-5.1-gtk/src/term.c <<termcapinit>> - term = DEFAULT_TERM; - 15 3635 vim-5.1-gtk/src/term.c <<update_tcap>> - p = find_builtin_term(DEFAULT_TERM); - Enter nr of choice (<CR> to abort): - - 出力には幾つかの情報を示している: - 1. タグの数(例には15個ある) - 2. タグが在る行番号 - 3. タグの在るファイル名 - 4. タグのコンテキスト(例えばグローバルか関数名か) - 5. ファイルの該当行そのもの - - help : 短い解説を表示する。 - - 使用法 :cs help - - *E261* - kill : cscopeとの接続を切断する(もしくは全ての接続を切断する)。 - - 使用法 :cs kill {num|partial_name} - - cscopeとの接続を切断するには、接続番号か部分的な名前を指定しなけれ - ばならない。「部分的名前」とは単純にcscopeデータベースのパス名の一 - 部である。部分的名前を使用してcscope接続を切断する時には注意するこ - と! - - 接続番号-1を指定すると、全てのcscope接続が切断される。 - - reset : 全てのcscope接続を再初期化する。 - - 使用法 :cs reset - - show : cscope接続を表示する。 - - 使用法 :cs show - - *:lcscope* *:lcs* -このコマンドは ":cscope" とほぼ同じだが、オプション 'cscopequickfix' がオンに -なっている場合、QuickFix リストでなくカレントウィンドウのロケーションリストで -cscope の結果を表示する。 - - *:cstag* *E257* *E562* -ctagsとcscopeを同じように使うのならば、両方を順に検索してジャンプを行なうのに -|:cstag|が利用できる。例えば、最初にcscopeデータベースを検索し、見つからなかっ -た時には、tagsファイルを検索することができる。どちらを先に検索するかは|csto|の -値で決まる。詳細は|cscope-options|を参照。 - -|:cstag|がcscopeデータベースを検索する時には、識別子に対して":cs find g"と同じ -ように働く。 - -|:cstag|がtagsファイルを検索する時には、識別子に対して|:tjump|と同じように働 -く。 - - -============================================================================== -3. Cscopeオプション *cscope-options* - -全てのcscopeのオプションは|:set|コマンドによって設定できる。理想的には起動ファ -イルのどれか1つ(例: .vimrc)で行なうであろう。cscopeに関係する幾つかの変数は -|.vimrc|の中だけで有効である。Vimが起動した後にそれらの変数を変更しても効果が -無い! - - *cscopeprg* *csprg* -'cscopeprg'にはcscopeを実行するコマンドを指定する。省略値は"cscope"。例: > - :set csprg=/usr/local/bin/cscope -< - *cscopequickfix* *csqf* *E469* -{|+quickfix|付きでコンパイルしないと利用できない} -'cscopequickfix'はcscopeの結果を表示するためにクイックフィックスウインドウを -使うかどうかを決める。これはコンマ区切りのリストである。要素は|cscope-find| -コマンド(s, g, d, c, t, e, f or i)とフラグ(+, - or 0)から成っている。 -'+' は結果がクイックフィックスウインドウに追加されることを示す。 -'-' はそれ以前の結果を消すことを意味する。'0'や何も指定していないコマンドは -クイックフィックスウインドウを使わない。探索は始まりから最初のコマンドを見つ -けるまで実行される。 -デフォルトの値は ""(クイックフィックスを使わない)。次の値が便利だろう: > - :set cscopequickfix=s-,c-,d-,i-,t-,e- -< - - *cscopetag* *cst* -'cscopetag'が設定されていると、コマンド":tags"、CTRL-]、そして"vim -t"はデフォ -ルトの:tagの変わりに、常に":cstag"を使うようになる。事実上、tagファイルと同じ -ようにcscopeデータベースを検索することができるようになるだろう。省略した場合は -オフ。例: > - :set cst - :set nocst -< - *cscoperelative* *csre* -'cscoperelative' が設定されていて、cscope にプレフィックスが与えられていない場 -合 (プレフィックスは cscope の -P オプションの引数です)、絶対パスを得るため -に、cscope.out が保存されているディレクトリ (通常はプロジェクトのルート) が使 -われます。初期設定はオフです。Note: このオプションは cscope (cscopeprg) がプレ -フィックスパス (-P) なしで初期化されている場合のみ効果があります。例: > - :set csre - :set nocsre -< - *cscopetagorder* *csto* -'csto'の値は|:cstag|が検索を実行する順序を決定する。'csto'が0に設定されている -ならば、先にcscopeデータベースが検索され、cscopeでは見つからなかった時にだけ -tagファイルが検索される。'csto'が1ならば、cscopeデータベースの前にtagsファイル -が検索される。省略値は0。例: > - :set csto=0 - :set csto=1 -< - *cscopeverbose* *csverb* -'cscopeverbose'が設定されていないと(デフォルト)、cscopeデータベースを追加した -際の成否結果のメッセージが表示されない。理想的には、|.vimrc|の中でcscopeデータ -ベースを追加する前にリセットし、追加し終わった後で設定すべきである。設定してお -けば、Vim使用中にデータベースの追加に失敗した時、(望むらくは原因を特定するの -に)役立つメッセージが表示されるだろう。例: > - :set csverb - :set nocsverb -< - *cscopepathcomp* *cspc* -'cspc'の値はファイルパスのうち幾つの構成要素を表示するか決定する。省略値である -0を設定した時には完全なパスが表示される。値として1を設定すればファイル名だけが -表示される。その他の値であれば、その数だけ構成要素を表示する。例: > - :set cspc=3 -ファイルパスのうち最後の3つ(ファイル名と2段上までのディレクトリ名)を表示する。 - -============================================================================== -4. Vimでのcscopeの使い方 *cscope-howtouse* - -最初にやらなければならないことは、ソースコードに対してcscopeデータベースを構築 -することである。最も基本的なケースでは、単純に"cscope -b"とする。詳細について -はcscopeのマニュアル(manページ)を参照して欲しい。 - -cscopeデータベースがあるならば、次にそのデータベースをVimへ"add"しなければなら -ない。これはcscopeとの"接続"を確立し、それをVimが使えるような状態にする。これ -は.vimrcや、vim起動後に手動で行うことができる。例えば、cscopeデータベース -"cscope.out"を追加するには、次のようにする: > - - :cs add cscope.out -< -この結果は":cs show"を実行することでもう一度チェックすることができる。これは次 -のような出力を生成する: > - - # pid database name prepend path - 0 28806 cscope.out <none> - -Note: -Microsoftのランタイムライブラリの制限により、Win32バージョンでは本当のプロセス -IDではなく0が表示される。 - -一旦cscope接続が確立されれば、cscopeへクエリを送信でき、その結果を表示すること -ができる。クエリは":cs find"コマンドにより生成される。例: > - - :cs find g ALIGN_SIZE -< -これは最終的に結構な量のタイプを必要とするのでやっかいである。しかしながら、 -ショートカットキーをマッピングしてこれを避ける方法がある。その方法については -|cscope-suggestions|を参照のこと。 - -一致する項目が1つしかなければ、自動的にその場所へ移動する。複数の結果が得られ -た場合には、行きたい項目を選択できる画面が表示される。新しい場所へ移動した後 -は、単にCTRL-Tをタイプすることで以前の位置へ戻ることができる。 - - -============================================================================== -5. 制限事項 *cscope-limitations* - -Vimのcscope機能は4つのシステムコール:fork(), pipe(), execl(), waitpid() をサ -ポートしているシステムでのみ利用可能である。これはほとんどUNIXシステムだけに限 -られることを意味している。 - -加えて、CscopeはWin32でも動く。Win32で動くcscopeについて詳しくは次のサイトを見 -てください。 - - http://iamphet.nm.ru/cscope/index.html - -http://cscope.sourceforge.net でダウンロードできる、 DJGPP でビルドしたバージョ -ンは、Vim では動かないことがわかっている。 - -ハードコードされた限界: -|:cstag| がタグファイルを検索するときの |:tjump| の動作はカスタマイズできな -い(例: tjump でなく tselect を使うことができない)。 - -============================================================================== -6. 使い方の提案 *cscope-suggestions* - -次のエントリを.vimrcに記述する(パス名は環境にあわせて然るべく変更すること): > - - if has("cscope") - set csprg=/usr/local/bin/cscope - set csto=0 - set cst - set nocsverb - " add any database in current directory - if filereadable("cscope.out") - cs add cscope.out - " else add database pointed to by environment - elseif $CSCOPE_DB != "" - cs add $CSCOPE_DB - endif - set csverb - endif - -'cscopetag'を設定することで、:tagコマンドの実体を:cstagで効率的に置き換えてい -る。これには:tags, CTRL-], そして"vim -t"も含まれる。こうすることで、通常のtag -コマンドはctagsが生成したtagファイルだけでなく、cscopeデータベースも検索するよ -うになる。 - -あるユーザは通常のtagの振る舞いはそのままに、:cstagへアクセスする異なった -ショートカットを望むかもしれない。例えば次のコマンドでCTRL-_(アンダースコア) -に:cstagをマップできる: > - - map <C-_> :cstag <C-R>=expand("<cword>")<CR><CR> - -良く使われる2つのcscopeのクエリ(":cs find"を使う)は、ある関数を読んでいる全て -の関数を探すのと、あるCのシンボルを使用している箇所全てを探すものである。これ -を行なうには、例としてこのようなマップを使うことができる: > - - map g<C-]> :cs find 3 <C-R>=expand("<cword>")<CR><CR> - map g<C-\> :cs find 0 <C-R>=expand("<cword>")<CR><CR> - -このマッピングによりCTRL-] (右角カッコ)とCTRL-\ (バックスラッシュ)を、カーソル -の下にある関数名やCシンボルを素早くcscopeに問い合わせ結果を得るのに利用できる -ようになる。 - -もしくは次の仕組みを使うこともできる。これは Vim/Cscope のチュートリアルに影響 -を受けました(http://cscope.sourceforge.net/)。 > - - nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> - nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR> - nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> - nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> - nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> - nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR> - nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> - nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> - - " 'CTRL-spacebar' を使うと結果を新しいウインドウで表示する。 - - nmap <C-Space>s :scs find s <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space>g :scs find g <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space>c :scs find c <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space>t :scs find t <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space>e :scs find e <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space>f :scs find f <C-R>=expand("<cfile>")<CR><CR> - nmap <C-Space>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> - nmap <C-Space>d :scs find d <C-R>=expand("<cword>")<CR><CR> - - " CTRL-space を2回連続して押すとウインドウを縦に開く - - nmap <C-Space><C-Space>s - \:vert scs find s <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space><C-Space>g - \:vert scs find g <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space><C-Space>c - \:vert scs find c <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space><C-Space>t - \:vert scs find t <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space><C-Space>e - \:vert scs find e <C-R>=expand("<cword>")<CR><CR> - nmap <C-Space><C-Space>i - \:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> - nmap <C-Space><C-Space>d - \:vert scs find d <C-R>=expand("<cword>")<CR><CR> - -============================================================================== -7. 入手法と情報 *cscope-info* - -まだcscopeを持っていない(あなたのコンパイラのライセンスやOSのディストリビュー -ションに含まれてない)のならば、次の場所から無料で入手できる: - http://cscope.sourceforge.net/ -cscopeはSCOによりBSDラインセンスの基づいて配布されている。 - -より新しいバージョンのcscopeを入手したいのならば、恐らく購入する必要があるだろ -う。(古い)nviのドキュメントによれば: - - バージョン13.3の無制限ライセンス付きのソースコードが、AT&Tソフトウェア - ソリューション(電話番号+1-800-462-8146)から400ドルで購入できる。 - -また cscope 13.x や mlcscope 14.x (他国後バージョンのcscopeで、C, C++, Java, -lex, yacc, breakpoint listing, Ingres, and SDL をサポートしている) を次のサイ -トからダウンロードできる。 - World-Wide Exptools Open Source packages page: - http://www.bell-labs.com/project/wwexptools/packages.html - -Solaris 2.xでは、Cコンパイラのライセンスを入手していれば、cscopeも入手している -だろう。どちらも通常は/opt/SUNWspro/binに格納される。 - -SGIの開発者もまた入手可能である。このページからCscopeを検索してください - http://freeware.sgi.com/index-by-alpha.html - https://toolbox.sgi.com/toolbox/utilities/cscope/ -2番目のアドレスはSGIツールボックスのパスワードを持っているユーザ用である。 - -古いcscopeのクローン("cs"という名)のソースコードがネットで入手可能である。ただ -し様々な理由で、これはVimではサポートされない。 - -オリジナルのcscopeインターフェース/サポートはAndy Kahn <ackahn@netapp.com>に -よって書かれた。元となった構造(かなり小さいコードだった)はnviのcscopeインター -フェースから改作された。問題、提案、パッチそのほか何でも、Vimでcscopeを使うの -に何か持っているものがあれば彼に送って欲しい。 -(訳注:もちろん日本語では送らないで下さい) - *cscope-win32* -Win32バージョンのcscopeについてはこのサイトをご覧ください - http://code.google.com/p/cscope-win32/ - -Win32への対応は Sergey Khorev <khorev@softlab.ru> してくれました。Win32に固有 -の問題については彼に問い合わせてください。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/if_lua.jax b/runtime.old/doc/if_lua.jax deleted file mode 100644 index 3b4ede270..000000000 --- a/runtime.old/doc/if_lua.jax +++ /dev/null @@ -1,240 +0,0 @@ -*if_lua.txt* For Vim バージョン 7.3. Last change: 2010 Jul 22 - - - VIM REFERENCE MANUAL by Luis Carvalho - - -Vim の Lua インターフェース *lua* *Lua* - -1. コマンド |lua-commands| -2. vim モジュール |lua-vim| -3. バッファユーザーデータ |lua-buffer| -4. ウィンドウユーザーデータ |lua-window| - -{Vi にはこれらのコマンドはない} - -Lua インターフェースは Vim が |+lua| 機能付きでコンパイルされたときのみ利用で -きます。 - -============================================================================== -1. コマンド *lua-commands* - - *:lua* -:[range]lua {chunk} - Lua チャンク {chunk} を実行する。 {Vi にはない} - -例: -> - :lua print("Hello, Vim!") - :lua local curbuf = vim.buffer() curbuf[7] = "line #7" -< - -:[range]lua << {endmarker} -{script} -{endmarker} - Lua スクリプト {script} を実行する。 {Vi にはない} - Note: このコマンドは Lua が組み込まれていない場合は機 - 能しません。エラーを避けるには |script-here| を参照。 - -{endmarker} の前には空白を入れることはできません。"<<" の後の {endmarker} を省 -略した場合は |:append| や |:insert| コマンドのようにドット "." で {script} を -閉じます。 -|:lua| コマンドのこの書式は主に Vim スクリプトの中に Lua コードを埋め込むとき -に便利です。 - -例: -> - function! CurrentLineInfo() - lua << EOF - local linenr = vim.window().line - local curline = vim.buffer()[linenr] - print(string.format("Current line [%d] has %d chars", - linenr, #curline)) - EOF - endfunction -< - - *:luado* -:[range]luado {body} Lua 関数 "function (line) {body} end" を [range] で指 - 定された各行に対して実行する。関数の引数には各行のテキ - スト (末尾の <EOL> 無し) が渡されます。関数の返り値が - 文字列なら行のテキストはその文字列で置換されます。 - [range] を省略するとすべてのファイル ("1,$") が処理さ - れます。 {Vi にはない} - -例: -> - :luado return string.format("%s\t%d", line:reverse(), #line) - - :lua require"lpeg" - :lua -- balanced parenthesis grammar: - :lua bp = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" } - :luado if bp:match(line) then return "-->\t" .. line end -< - - *:luafile* -:[range]luafile {file} - {file} 内の Lua スクリプトを実行する。 {Vi にはない} - 引数全体で一つのファイル名として認識されます。 - -例: -> - :luafile script.lua - :luafile % -< - -これらすべてのコマンドはコマンドライン (:lua と :luado) かファイル (:luafile) -で指定された Lua チャンクを範囲指定 [range] に対して実行します。Lua インタプリ -タと同様に各チャンクはそれぞれのスコープを持つため、各コマンドの実行で共有され -るのはグローバル変数だけです。Lua のデフォルトライブラリ "table", "string", -"math", "package" は使用できます。"io" と "debug" は使用できません。"os" は -"date", "clock", "time", "difftime", "getenv" のみに制限されています。Lua の -"print" 関数の出力先は Vim のメッセージエリアになり、引数はタブ文字ではなくス -ペースで区切られます。 - -Lua は "vim" モジュール (|lua-vim| 参照) を使って、Vim コマンドを発行したり -バッファ (|lua-buffer|) やウィンドウ (|lua-window|) を管理したりします。ただ -し、コマンドが |sandbox| の中で実行されたときはバッファの変更、新規バッファの -作成、カーソル位置の変更は制限されます。 - - -============================================================================== -2. vim モジュール *lua-vim* - -Lua からは "vim" モジュールを使って Vim を操作します。範囲指定の最初と最後の行 -は "vim.firstline" と "vim.lastline" に格納されています。vim モジュールには -バッファ操作、ウィンドウ操作、現在行の取得、Vim 式評価、Vim コマンド実行、など -のルーチンが含まれています。 - - vim.isbuffer(value) "value" がバッファユーザーデータなら 'true' - (boolean、文字列ではない) を返す。そうでなけれ - ば 'false' を返す。 (|lua-buffer| 参照) - - vim.buffer([arg]) "arg" が数値ならバッファリストの "arg" 番の - バッファを返す。"arg" が文字列ならフルパスか - ショートパスが "arg" に一致するバッファを返 - す。どちらの場合もバッファが見つからなければ - 'nil' (nil 値、文字列ではない) を返す。その - 他、"toboolean(arg)" が 'true' ならバッファリ - ストの最初のバッファを、そうでなければカレント - バッファを返す。 - - vim.iswindow(value) "value" がウィンドウユーザーデータなら 'true' - (boolean、文字列ではない) を返す。そうでなけれ - ば 'false' を返す。 (|lua-window| 参照) - - vim.window([arg]) "arg" が数値なら "arg" 番のウィンドウを返す。 - ウィンドウが無ければ 'nil' (nil 値、文字列では - ない) を返す。その他、"toboolean(arg)" が - 'true' なら最初のウィンドウを、そうでなければ - カレントウィンドウを返す。 - - vim.command({cmd}) Vim の Ex コマンド {cmd} を実行する。 - 例: > - :lua vim.command"set tw=60" - :lua vim.command"normal ddp" -< - vim.eval({expr}) 式 {expr} (|expression| 参照) を評価してその結 - 果を Lua の値に変換して返す。 - Vim の文字列と数値はそのまま Lua の文字列と数 - 値に変換される。Vim のリストと辞書は Lua の - テーブルに変換される (リストは整数キーのテーブ - ルになる)。 - 例: > - :lua tw = vim.eval"&tw" - :lua print(vim.eval"{'a': 'one'}".a) -< - vim.line() 現在行 (末尾の <EOL> 無し) を返す。型は Lua 文 - 字列。 - - vim.beep() ビープ音を鳴らす。 - - vim.open({fname}) ファイル {fname} 用の新しいバッファを開いて返 - す。Note: カレントバッファは変更されません。 - - -============================================================================== -3. バッファユーザーデータ *lua-buffer* - -バッファユーザーデータは Vim のバッファを表します。バッファユーザーデータ "b" -は以下のプロパティとメソッドを持っています: - -プロパティ ----------- - o "b()" "b" をカレントバッファに設定する。 - o "#b" バッファ "b" の行数。 - o "b[k]" バッファの k 行目。"b[k] = newline" で k 行目を文字列 - "newline" で置換する。"b[k] = nil" で k 行目を削除す - る。 - o "b.name" バッファ "b" のショートパス (読込専用)。 - o "b.fname" バッファ "b" のフルパス (読込専用)。 - o "b.number" バッファ "b" のバッファリスト内の位置 (読込専用)。 - -メソッド --------- - o "b:insert(newline[, pos])" - 文字列 "newline" をバッファの "pos" の位置 (省略可) に - 挿入する。"pos" を省略した場合は"#b + 1"に挿入される。 - "pos == 0" の場合は "newline" は 1 行目に挿入される。 - o "b:next()" バッファリストの "b" の次のバッファを返す。 - o "b:previous()" バッファリストの "b" の前のバッファを返す。 - o "b:isvalid()" バッファ "b" が実在するバッファ (メモリが開放されてい - ない) なら 'true' (boolean) を返す。 - -例: -> - :lua b = vim.buffer() -- current buffer - :lua print(b.name, b.number) - :lua b[1] = "first line" - :lua b:insert("FIRST!", 0) - :lua b[1] = nil -- delete top line - :lua for i=1,3 do b:insert(math.random()) end - :3,4lua for i=vim.lastline,vim.firstline,-1 do b[i] = nil end - :lua vim.open"myfile"() -- open buffer and set it as current - - function! ListBuffers() - lua << EOF - local b = vim.buffer(true) -- first buffer in list - while b ~= nil do - print(b.number, b.name, #b) - b = b:next() - end - vim.beep() - EOF - endfunction -< - -============================================================================== -4. ウィンドウユーザーデータ *lua-window* - -ウィンドウオブジェクトは Vim のウィンドウを表します。ウィンドウユーザーデータ -"w" は以下のプロパティとメソッドを持っています: - -プロパティ ----------- - o "w()" "w" をカレントウィンドウに設定する。 - o "w.buffer" ウィンドウ "w" のバッファ (読込専用)。 - o "w.line" ウィンドウ "w" のカーソルの行。 - o "w.col" ウィンドウ "w" のカーソルの列。 - o "w.width" ウィンドウ "w" の幅。 - o "w.height" ウィンドウ "w" の高さ。 - -メソッド --------- - o "w:next()" "w" の次のウィンドウを返す。 - o "w:previous()" "w" の前のウィンドウを返す。 - o "w:isvalid()" ウィンドウ "w" が実在するウィンドウ (メモリが開放され - ていない) なら 'true' を返す。 - -例: -> - :lua w = vim.window() -- current window - :lua print(w.buffer.name, w.line, w.col) - :lua w.width = w.width + math.random(10) - :lua w.height = 2 * math.random() * w.height - :lua n,w = 0,vim.window(true) while w~=nil do n,w = n + 1,w:next() end - :lua print("There are " .. n .. " windows") -< - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/if_mzsch.jax b/runtime.old/doc/if_mzsch.jax deleted file mode 100644 index d21af5f69..000000000 --- a/runtime.old/doc/if_mzsch.jax +++ /dev/null @@ -1,266 +0,0 @@ -*if_mzsch.txt* For Vim バージョン 7.3. Last change: 2010 Feb 11 - - - VIM REFERENCE MANUAL by Sergey Khorev - - -Vim の MzScheme インターフェイス *mzscheme* *MzScheme* - -1. コマンド |mzscheme-commands| -2. 例 |mzscheme-examples| -3. スレッド |mzscheme-threads| -4. MzScheme から Vim にアクセスする |mzscheme-vim| -5. mzeval() Vim 関数 |mzscheme-mzeval| -6. 動的ローディング |mzscheme-dynamic| - -{Vi にはこれらのコマンドはない} - -MzScheme インターフェイスは、Vim が |+mzscheme| 機能付きでコンパイルされたとき -のみ利用できます。 - -Brent Fulgham の作業にもとづいています。 -動的ローディングは Sergey Khorev によって追加されました。 - -MzScheme のダウンロードや情報については: - http://www.plt-scheme.org/software/mzscheme/ - -Note: FreeBSD では "drscheme" port を使ってください。 - -============================================================================== -1. コマンド *mzscheme-commands* - - *:mzscheme* *:mz* -:[range]mz[scheme] {stmt} - MzScheme のステートメント {stmt} を実行します。 - {Vi にはない} - -:[range]mz[scheme] << {endmarker} -{script} -{endmarker} - MzScheme のスクリプト {script} を実行します。 - Note: このコマンドは MzScheme 用の機能を含めてコンパイ - ルされていないときは機能しません。エラーを抑制するには - |script-here|を参照してください。 - - *:mzfile* *:mzf* -:[range]mzf[ile] {file} {file} 内の MzScheme スクリプトを実行します。 - {Vi にはない} - -これらのコマンドは、本質的には同じことを行います - つまり、MzScheme のコードを、 -与えられた"現在の範囲"に対して実行します。 - -:mzscheme の場合は、実行するコードはコマンドラインから与えます。 -:mzfile の場合は、実行するコードは指定したファイルから読み込まれます。 - -MzScheme インターフェイスは、exn から派生した例外 exn:vim を定義します。Vim -の様々なエラーを通知するために、この例外が投げられます。 - -コンパイルの実行中に、その時点の MzScheme コレクションのパスが記録されます。も -し他にもパスを指定したい場合は、パラメータ 'current-library-collection-paths' -を使ってください。例: ユーザーごとのコレクションパスを追加するには: > - :mz << EOF - (current-library-collection-paths - (cons - (build-path (find-system-path 'addon-dir) (version) "collects") - (current-library-collection-paths))) - EOF -< - -すべての機能は vimext モジュールを通して提供されます。 - -exn:vim は明示的なインポートをしなくても利用可能です。 - -モジュールを require するときは、MzScheme との衝突を避けるため、プリフィック -スを使うことも考えてください。例: > - :mzscheme (require (prefix vim- vimext)) -< -本マニュアル中、以降のすべての例は、このプリフィックスを使っています。 - - *mzscheme-sandbox* -サンドボックス |sandbox| の中で実行されているときは、ファイルシステムへのア -クセスや Vim インターフェイスプロシージャの実行は制限されています。 - -============================================================================== -2. 例 *mzscheme-examples* -> - :mzscheme (display "Hello") - :mz (display (string-append "Using MzScheme version " (version))) - :mzscheme (require (prefix vim- vimext)) ; MzScheme < 4.x 用 - :mzscheme (require (prefix-in vim- 'vimext)) ; MzScheme 4.x 用 - :mzscheme (vim-set-buff-line 10 "This is line #10") -< -インラインスクリプトの例: > - function! <SID>SetFirstLine() - :mz << EOF - (display "!!!") - (require (prefix vim- vimext)) - ; ↑新しいバージョンでは (require (prefix-in vim- 'vimext)) - (vim-set-buff-line 1 "This is line #1") - (vim-beep) - EOF - endfunction - - nmap <F9> :call <SID>SetFirstLine() <CR> -< -ファイルの実行: > - :mzfile supascript.scm -< -例外制御: > - :mz << EOF - (require (prefix vim- vimext)) - ; ↑新しいバージョンでは (require (prefix-in vim- 'vimext)) - (with-handlers - ([exn:vim? (lambda (e) (display (exn-message e)))]) - (vim-eval "nonsense-string")) - EOF -< -vimext モジュールの自動インスタンス化(|vimrc| に書くことができます): > - function! MzRequire() - :redir => l:mzversion - :mz (version) - :redir END - if strpart(l:mzversion, 1, 1) < "4" - " MzScheme versions < 4.x では: - :mz (require (prefix vim- vimext)) - else - " それ以降のバージョンでは - :mz (require (prefix-in vim- 'vimext)) - endif - endfunction - - if has("mzscheme") - silent call MzRequire() - endif -< -============================================================================== -3. スレッド *mzscheme-threads* - -MzScheme インターフェイスはスレッドをサポートしています。これは OS のスレッ -ドとは独立しており、よってスケジューリングが必要になります。オプション -'mzquantum' によって、Vim がどれだけの時間間隔で MzScheme スレッドに切り替え -るかが決定されます。 -NOTE -コンソール版 Vim のスレッドスケジューリングは GUI 版よりやや信頼性が低くなり -ます。 - -============================================================================== -4. MzScheme から VIM にアクセスする *mzscheme-vim* - - *mzscheme-vimext* -'vimext' モジュールは MzScheme インターフェイスで定義されたプロシージャへの -アクセスを提供します。 - -共通 ------- - (command {command-string}) Vim の Ex コマンドを実行する。 - (eval {expr-string}) Vim の式を評価し、対応する MzScheme のオブ - ジェクトに変換する。リスト |Lists| は - Scheme のリストとなり、辞書|Dictionaries| - はハッシュテーブルとなる。 - NOTE: MzScheme の eval と名前が衝突してい - る。 - (range-start) Scheme コマンドに渡された範囲の開始行 - (range-end) /終了行を取得 - (beep) ビープを鳴らす - (get-option {option-name} [buffer-or-window]) Vim の(ローカルまたはグロー - バルな)オプションの値を取得する。 - (set-option {string} [buffer-or-window]) - Vim のオプションをセットする。{string} - はオプション設定形式(optname=optvalue や - optname+=optval など)になっていなければ - ならない。{buffer} または {window} を - 指定した場合、そのバッファまたはウィンド - ウにローカルなオプションがセットされる。 - {buffer-or-window} としてシンボル - 'global を渡すと |:setglobal|と同じにな - る。 - -バッファ *mzscheme-buffer* -------- - (buff? {object}) オブジェクトがバッファであるか? - (buff-valid? {object}) オブジェクトが有効なバッファであるか? - (実際に Vim のバッファに対応しているか) - (get-buff-line {linenr} [buffer]) - バッファから行を取得する - (set-buff-line {linenr} {string} [buffer]) - バッファの {linenr} 行目を {string} にす - る。{string} が#fならその行は削除される。 - 引数 [buffer] は省略可能。省略された場合 - はカレントバッファが対象となる。 - (get-buff-line-list {start} {end} [buffer]) - バッファ内の行のリストを取得する。{start} - と {end} は 1 から始まる。{start} 行目と - {end} 行目は含まれる。 - (set-buff-line-list {start} {end} {string-list} [buffer]) - バッファに行のリストをセットする。 - {string-list} が #f または null の場合、 - その行は削除される。リストの長さが - {end} - {start} 以下である場合、足りない分 - の行は削除される。 - (get-buff-name [buffer]) バッファの名前を取得する - (get-buff-num [buffer]) バッファ番号を取得する - (get-buff-size [buffer]) バッファの行数を取得する - (insert-buff-line-list {linenr} {string/string-list} [buffer]) - {linenr} 行目の後ろに行を挿入する。 - {linenr} が 0 の場合、バッファの先頭に挿 - 入される。 - (curr-buff) カレントバッファ(オブジェクト)を取得する。 - バッファを変更するには他の MzScheme イン - ターフェース手続きを使う。 - (buff-count) バッファの総数を取得する。 - (get-next-buff [buffer]) 次のバッファを取得する - (get-prev-buff [buffer]) 前のバッファを取得する。それ以上前が存在し - ないときは #f を返す。 - (open-buff {filename}) {filename} という名前で新規バッファを開く - (get-buff-by-name {buffername}) バッファ名を指定してバッファオブジェクトを - 取得する。見つからなければ #f を返す。 - (get-buff-by-num {buffernum}) バッファ番号を指定してバッファオブジェクト - を取得する。見つからなければ #f を返す。 - -ウィンドウ *mzscheme-window* ------- - (win? {object}) オブジェクトはウィンドウか? - (win-valid? {object}) オブジェクトは有効なウィンドウであるか? - (実際に Vim のウィンドウに対応しているか) - (curr-win) カレントウィンドウ(オブジェクト)を取得する - (win-count) ウィンドウの個数を取得する - (get-win-num [window]) ウィンドウ番号を取得する - (get-win-by-num {windownum}) 番号を指定してウィンドウを取得する - (get-win-buffer [window]) 指定したウィンドウ内のバッファを取得する - (get-win-height [window]) - (set-win-height {height} [window]) ウィンドウの高さを取得/セットする - (get-win-width [window]) - (set-win-width {width} [window])ウィンドウの幅を取得/セットする - (get-win-list [buffer]) バッファを表示しているウィンドウのリスト - (get-cursor [window]) ウィンドウ内のカーソル位置をペア - (linenr . column) として取得する - (set-cursor (line . col) [window]) カーソル位置をセットする - -============================================================================== -5. mzeval() Vim 関数 *mzscheme-mzeval* - -相互接続を容易にするために |mzeval()| 関数が提供されています。この関数は -MzScheme の式を評価してその結果を VimL の値に変換したものを返します。 - -============================================================================== -6. 動的ローディング *mzscheme-dynamic* *E815* - -MS-Windows では MzScheme ライブラリを動的に読み込むことが可能です。これを行う -と |:version| の出力に |+mzscheme/dyn| が含まれるようになります。 - -この場合、Vim は必要なときだけ MzScheme の DLL ファイルを検索するようになりま -す。MzScheme インターフェイスを使わないときは DLL を必要としないので、DLL な -しで Vim を使うことができます。 - -MzScheme インターフェイスを使うには MzScheme の DLL が検索パス内に存在しなけ -ればなりません。コンソールウィンドウで "path" とタイプすると、どのディレクト -リが検索パスとなるか表示できます。 - -DLL の名前は Vim をコンパイルした時の MzScheme のバージョンと一致しなければ -なりません。MzScheme 209 用ならば "libmzsch209_000.dll" と -"libmzgc209_000.dll" となるでしょう。確認するには ":version" コマンドの出力 -を見て、コンパイル情報から -DDYNAMIC_MZSCH_DLL="なんらか" と --DDYNAMIC_MZGC_DLL="なんらか" を探してください。 - -====================================================================== - vim:tw=78:ts=8:sts=4:ft=help:norl: diff --git a/runtime.old/doc/if_ole.jax b/runtime.old/doc/if_ole.jax deleted file mode 100644 index 6dc4b136d..000000000 --- a/runtime.old/doc/if_ole.jax +++ /dev/null @@ -1,201 +0,0 @@ -*if_ole.txt* For Vim バージョン 7.3. Last change: 2008 Aug 16 - - - VIM REFERENCE MANUAL by Paul Moore - - -VimへのOLEインターフェイス *ole-interface* - -1. アクティブにする |ole-activation| -2. メソッド |ole-methods| -3. "normal"コマンド |ole-normal| -4. 登録 |ole-registration| -5. MS Visual Studioとの統合 |MSVisualStudio| - -{Vi はこれらのコマンドを持たない} - -OLE は|+ole|機能と共にコンパイルされたときのみ有効である。 -src/if_ole.INSTALLを参照せよ。 -代わりにクライアント、サーバ型の通信を使うこともできる|clientserver|。 - -============================================================================== -1. アクティブにする *ole-activation* - -Vimは、あらゆるオートメーションクライアント、例えばVisual Basic、Python、 -Perlなどからアクセス可能な、OLEオートメーションサーバとして振舞う。Vimアプリ -ケーションの"名前"(これはOLE用語で言うところの"ProgID")は、"Vim.Application" -である。 - -したがって、Vimのインスタンスを起動する(あるいはすでに起動しているインスタン -スに接続する)には、次のようなコードが用いられることになる: - -[Visual Basic] > - Dim Vim As Object - Set Vim = CreateObject("Vim.Application") - -[Python] > - from win32com.client.dynamic import Dispatch - vim = Dispatch('Vim.Application') - -[Perl] > - use Win32::OLE; - $vim = new Win32::OLE 'Vim.Application'; - -[C#] > - // プロジェクトに VIM への参照を追加する。 - // COM タブを選択する。 - // "VIM Ole Interface 1.1 Type Library" を選択する。 - Vim.Vim vimobj = new Vim.Vim(); - -Vimは、他の一部のOLEサーバがサポートしているような、"hidden"なOLEサーバとして -の機能をサポートしていない。クライアントがVimのインスタンスを起動する場合、そ -のインスタンスは即座に可視化される。単にVimインスタンスとのOLE接続を閉じるだ -けでは、Vimインスタンスを終了するに十分ではない - 明確に終了コマンド(例えば、 -:qa!、:wqa)を実行する必要がある。 - -============================================================================== -2. メソッド *ole-methods* - -Vimはクライアントに対して4つのメソッドを公開している。 - - *ole-sendkeys* -SendKeys(keys) 一連のキー操作を実行する。 - -このメソッドはひとつの引数、キーストロークの文字列、を取る。これらのキースト -ロークは、完全にキーボードから打ち込まれたもののように実行される。スペシャル -キーは、マッピングの右側に書かれる、<...>形式の名前で与えることができる。 -注意: Ex "normal"コマンドの実行はサポートされていない - 以下の|ole-normal|を -見よ。 - -例 (Visual Basic の文法) > - Vim.SendKeys "ihello<Esc>" - Vim.SendKeys "ma1GV4jy`a" - -これらの例は、Vimがノーマルモードで始まるものと仮定している。必ずノーマルモー -ドにするには、一連のキーを次のように CTRL-\ CTRL-N で始めるとよい > - - Vim.SendKeys "<C-\><C-N>ihello<Esc>" - -CTRL-\ CTRL-N は、挿入モード、コマンドラインモードにいるとき、Vimをノーマル -モードに戻す。これらはVimコマンドの途中に入れると機能しないことに注意せよ。 - - *ole-eval* -Eval(expr) 式(expr)を実行する。 - -このメソッドはひとつの引数、Vim標準フォーマットの式、を取る(|expression|を参 -照)。戻り値は、その式を評価した結果の文字列である。リスト |List| は文字列に変 -換される。そのとき各要素の間に改行が挿入され、連結される。 - -Examples (Visual Basic の文法で) > - Line20 = Vim.Eval("getline(20)") - Twelve = Vim.Eval("6 + 6") ' これが文字列であることに注意 - Font = Vim.Eval("&guifont") -< - *ole-setforeground* -SetForeground() Vimウィンドウを最前面に持ってくる。 - -このメソッドは引数を持たない。戻り値はない。 - -例 (Visual Basic の文法で) > - Vim.SetForeground -< - - *ole-gethwnd* -GetHwnd() Vimのウインドウハンドルを得る。 - -このメソッドは引数を持たない。戻り値はVimウインドウのウインドウハンドルです。 -これはVimウインドウに対して何かの操作を行いたい時に使います。 - -例 (Visual Basic の文法で) > - Vim_Hwnd = Vim.GetHwnd -< - -============================================================================== -3. "normal" コマンド *ole-normal* - -VimがOLEオートメーションコマンドを処理する方法は、exコマンド :normal の実装と -統合されているため、OLEオートメーションから :normal コマンドを実行することは -できない。実際に実行しようとしても失敗する、たぶん害はないと思われるが、予期 -しない動作をする恐れはある。 - -この状況をトラップする現実的な方法は今のところ存在しないため、ユーザはこの制 -限に単に気をつけるようにする他ない。 -============================================================================== -4. 登録 *ole-registration* *E243* - -VimをOLEサーバとして動作させる前に、システムレジストリに登録する必要がある。 -これを行うには、Vimをひとつの引数"-register"で実行すればよい。 - *-register* > - gvim -register - - -OLEサーバーが登録されていないとき、OLEをサポートしたgvimを起動すると警告ダイア -ログが出ます。"Yes"を選択するとレジストリに登録できます。 - -レジストリが書き込み可能でないときには登録はできません。もし登録できないときは -"Administrator"権限でgvimを起動してください。 - -いったんVimが登録されると、アプリケーションへのパスはレジストリに保存される。 -Vimを移動、削除、更新する前に、レジストリの項目を"-unregister"スイッチを使っ -て削除する必要がある。 - *-unregister* > - gvim -unregister - -OLEメカニズムは、登録されたVimの内、最初に見つけたものを使用する。Vimがすでに -実行されている場合は、そのVimが使用される。OLEコマンドに影響されないで、(いく -つかの)Vimセッションを張ろうとする場合は、非OLEバージョンを違うディレクトリに -置いて使用するとよい。そして、OLEバージョンをパスに含まれないディレクトリに置 -けば、"gvim"とタイプしたとき非OLEバージョンが起動するようになる。 - - *-silent* -結果を表示するメッセージボックスを表示したくないなら"-silent"を付けてくださ -い。 > - gvim -silent -register - gvim -silent -unregister - -============================================================================== -5. MS Visual Studio との統合 *MSVisualStudio* *VisVim* - -OLEバージョンにより、Microsoft Visual StudioのエディタとしてVimを実行すること -ができる。これは"VisVim"と呼ばれる。これはOLEバージョンを含んだアーカイブに同 -梱されている。ドキュメントは、ランタイムディレクトリに置かれている -README_VisVim.txtファイルにある。 - - -Vim と Visual Studio.Net を連携させる~ - -.Net studio は外部エディタをサポートしているので、.Net では VisVim は必要ない。 -次のようにするとよい: - -.Net Studio でメニューから[ツール]→[外部ツール]を選択する。 -次を追加する - タイトル - Vim - コマンド - c:\vim\vim63\gvim.exe - 引数 - --servername VS_NET --remote-silent "+call cursor($(CurLine), $(CurCol))" $(ItemPath) - 初期ディレクトリ - 空 - -こうしておくと .Net でファイルを開いたとき、.Net のメニューから[ツール]→[Vim] -を選べるようになる。 - -それを選ぶとそのファイルが Vim で開かれる。 -この外部コマンドをアイコンにして好きなところに置くことができる。これをデフォル -トのエディタに設定することもできる。 - -もしこれをさらに改良できたら、それを留めておけるように Vim メーリングリストに -投稿してください。 - ---servername VS_NET -この引数をつけると、VS_NET という名前で新しい Vim インスタンスを作る。そのため、 -VS で複数のファイルを開いても、同じ Vim のインスタンスが使われる。これによって -複数の Vim のインスタンスを起動し、かつどのインスタンスが VS のファイルを開い -ているかを管理することができる。 - ---remote-silent "+call cursor(10, 27)" - - カーソルを10行27桁に移動する -より詳しくは Vim 内で > - :h --remote-silent - -[.Net の部分は Dave Fishburn と Brian Sturk によって提供された] - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/if_perl.jax b/runtime.old/doc/if_perl.jax deleted file mode 100644 index 5d6928555..000000000 --- a/runtime.old/doc/if_perl.jax +++ /dev/null @@ -1,298 +0,0 @@ -*if_perl.txt* For Vim バージョン 7.3. Last change: 2010 Jul 21 - - - VIM REFERENCE MANUAL by Sven Verdoolaege - and Matt Gerassimof - -Perl と Vim *perl* *Perl* - -1. Perl のファイルを編集する |perl-editing| -2. Perl インタフェイス付きのコンパイル |perl-compiling| -3. Perl インタフェイスを使う |perl-using| -4. 動的ローディング |perl-dynamic| - -{Vi にはこれらのうちのどの機能もありません} - -Perl インタフェイスは、Vim を |+perl| 機能付きでコンパイルしている場合にのみ -利用できます。 - -============================================================================== -1. Perl のファイルを編集する *perl-editing* - -Vim の構文ハイライト(syntax highlighting)は Perl と POD のファイルもサポートし -ています。Vim はファイルの拡張子が .pl か .pm であると、Perl のコードだと想定 -します。また、ファイルの拡張しによらず、Vim はファイルの1行目を調べてファイル -が Perl スクリプトであるかどうか確認します(Vim の syntax ディレクトリにある -scripts.vim を参照してください)。ファイルの拡張子が .POD であると、Vim は POD -テキストであると想定します。 - -Perl でタグを使うには、最近のctagsが必要です。ここを訪れてください。 - http://ctags.sourceforge.net - -Perl スクリプトの"pltags.pl"を使うこともできます。これは $VIMRUNTIME/tools -ディレクトリにあります。これは今のところ最新のctagsよりも高機能です。 - -============================================================================== -2. Perl インタフェイス付きのコンパイル *perl-compiling* - -Perl インタフェイス付きで Vim をコンパイルするには、5.004 もしくはそれ以上のバー -ジョンの Perl が必要です。Perl は Vim をコンパイルする前にインストールしておか -なければなりません。Vim の Perl インタフェイスは、公式にリリースされたバージョ -ンである Perl 5.003 では動作しません! Perl 5.003_05 もしくはそれ以上であれば、 -たぶん動作するでしょう。 - -Vim への Perl パッチは、次の方によって作成されました: - Sven Verdoolaege <skimo@breughel.ufsia.ac.be> - Matt Gerassimof - -Perl for MS-Windows は、次の場所で見つけることができます: -http://www/perl.com/CPAN/ports/nt/Standard/x86/ - -============================================================================== -3. Perl インタフェイスを使う *perl-using* - - *:perl* *:pe* -:pe[rl] {cmd} Perl コマンド {cmd} を実行します。現在のパッケージは - "main" です。 - -:pe[rl] << {endpattern} -{script} -{endpattern} - Perlスクリプト {script} を実行します. - {endpattern} の前に空白を置いてはいけません。 - {endpattern} を省略した時は|:append|や|:insert|のよう - に'.'が使われます。これは関数の中で使う時に便利です。 - なぜなら"$i;"は|:insert|コマンドの開始と紛らわしいから - です。 - この方法はVimスクリプトの中にPerlスクリプトを埋め込む - 時に便利です。 - Note: Perl のサポートを有効にしてコンパイルされていな - いとこのコマンドは機能しません。エラーを回避するには - |script-here|を参照してください。 - - -Vimスクリプトの例: > - - function! WhitePearl() - perl << EOF - VIM::Msg("pearls are nice for necklaces"); - VIM::Msg("rubys for rings"); - VIM::Msg("pythons for bags"); - VIM::Msg("tcls????"); - EOF - endfunction -< - *:perldo* *:perld* - -:[range]perld[o] {cmd} Perl コマンド {cmd} を {range} のそれぞれの行に対して - 実行します。$_ はテキスト中のそれぞれの行のテキストに、 - 余計な <EOL> なしでセットされます。$_ をセットすること - でテキストを変更しますが、このコマンドを使って行を挿入 - したり、削除したりすることはできないということに注意し - てください。 - デフォルトの [range] はすべての行です: "1,$"。 - {Vi にはない機能です} - -いくつかの例をあげますと: > - - :perl $a=1 - :perldo $_ = reverse($_);1 - :perl VIM::Msg("hello") - :perl $line = $curbuf->Get(42) -< - *E299* -|sandbox|の中のPerlコマンドの実行は制限されています。":perldo"は常に使えませ -ん。":perl"は安全な環境の中で、可能なら評価されます。 - - *perl-overview* -Perl で使える関数の一覧です: > - - :perl VIM::Msg("Text") # メッセージを表示します - :perl VIM::Msg("Error", "ErrorMsg") # エラーメッセージを表示します - :perl VIM::Msg("remark", "Comment") # ハイライトされたメッセージを表示します - :perl VIM::SetOption("ai") # Vim のオプションをセットします - :perl $nbuf = VIM::Buffers() # 全てのバッファー数を返す - :perl @buflist = VIM::Buffers() # 全てのバッファーの配列を返す - :perl $mybuf = (VIM::Buffers('qq.c'))[0] # 'qq.c' のバッファー・オブジェク - # トを返す - :perl @winlist = VIM::Windows() # 全てのウインドウの配列を返す - :perl $nwin = VIM::Windows() # ウインドウ数を返す - :perl ($success, $v) = VIM::Eval('&path') # $v: 'path' オプション、 - # $success: 1 - :perl ($success, $v) = VIM::Eval('&xyz') # $v: '' $sucess: 0 - :perl $v = VIM::Eval('expand("<cfile>")') # <cfile> を展開 - :perl $curwin->SetHeight(10) # ウインドーの高さを設定します - :perl @pos = $curwin->Cursor() # (行, 列) 配列を返します - :perl @pos = (10, 10) - :perl $curwin->Cursor(@pos) # カーソルを @pos にセットします - :perl $curwin->Cursor(10,10) # カーソルを10行10列目にセットします - :perl $mybuf = $curwin->Buffer() # ウインドウのバッファー・オブジェクト - # を返す - :perl $curbuf->Name() # バッファー名を返します - :perl $curbuf->Number() # returns buffer number - :perl $curbuf->Count() # 行数を返します - :perl $l = $curbuf->Get(10) # 10 行目を返します - :perl @l = $curbuf->Get(1 .. 5) # 1行目から5行目までを返します - :perl $curbuf->Delete(10) # 10行目を削除します - :perl $curbuf->Delete(10, 20) # 10行目から20行目までを削除します - :perl $curbuf->Append(10, "Line") # 行を挿入します - :perl $curbuf->Append(10, "Line1", "Line2", "Line3") # 3行挿入します - :perl @l = ("L1", "L2", "L3") - :perl $curbuf->Append(10, @l) # L1, L2, L3 を挿入します - :perl $curbuf->Set(10, "Line") # 10行目を置き換えます - :perl $curbuf->Set(10, "Line1", "Line2") # 10行目と11行目を置き換えます - :perl $curbuf->Set(10, @l) # 3行置き換えます - - *perl-Msg* -VIM::Msg({msg}, {group}?) - {msg} メッセージを表示する。オプショナルな {group} 引 - 数は、そのメッセージの Vim でのハイライトグループを指 - 定します。 - - *perl-SetOption* -VIM::SetOption({arg}) Vim のオプションをセットします。{arg} は ":set" コマン - ドで使える引数であればなんでもよいです。このことは、引 - 数の中にスペースを入れることは許されないということを意 - 味しますので、注意してください。参照: |:set| - - *perl-Buffers* -VIM::Buffers([{bn}...]) 引数なしだと、配列コンテキストではすべてのバッファーの - リストを、スカラーコンテキストではバッファーの数を返し - ます。バッファー名 {bn} もしくは、バッファー番号 {bn} - のリストが与えられた場合は、{bn} にマッチするバッ - ファーのリストを返します。ここでは Vim の内蔵関 - 数 |bufname()| と同じルールが用いられます。 - 警告: |:bwipe| が使われると、このリストは無効になりま - す。それを使おうとすると Vim がクラッシュすることがあ - ります。 - - *perl-Windows* -VIM::Windows([{wn}...]) 引数なしだと、配列コンテキストではすべてのウインドーの - リストを返し、スカラーコンテキストではウインドーの数を - 返します。ウインドー数 {wn} にリストが与えられた場合は、 - それらの番号のウインドーのリストを返します。 - 警告: |:bwipe| が使われると、このリストは無効になりま - す。それを使おうとすると Vim がクラッシュすることがあ - ります。 - - *perl-DoCommand* -VIM::DoCommand({cmd}) Ex コマンド {cmd} を実行します。 - - *perl-Eval* -VIM::Eval({expr}) {expr} を評価して (success, val) を返します。success=1 - だと、val は {expr} の値を含みます; success=0 だと、式 - の評価に失敗したことを示しています。'@x' はレジスター - x の内容を返し、'&x' はオプション x の値を返します。 - 'x' は内部変数 |variables| x を返し、'$x' は Perl の - $ENV{x} と同じです。コマンドラインからアクセスできるす - べての |functions| は {expr} に使うことができます。 - リスト |List| は文字列に変換されます。そのとき各要素の - 間に改行が挿入され、連結されます。 - - *perl-SetHeight* -Window->SetHeight({height}) - ウインドーの高さをスクリーンの上限以内で {height} に - セットします。 - - *perl-GetCursor* -Window->Cursor({row}?, {col}?) - 引数なしだと、ウインドーの現在のカーソル位置の - (row, col) 配列を返します。{row} と {col} 引数をつけて - よばれると、ウインドーのカーソル位置を {row} と {col} - にセットします。{col} は Perl のように0から数えられま - すので、Vim のルーラーの値より1つ小さくなるということ - に注意してください。 - -Window->Buffer() *perl-Buffer* - 与えられたウインドーに対応するバッファーオブジェクトを - 返します。 - - *perl-Name* -Buffer->Name() バッファーのファイル名を返します。 - - *perl-Number* -Buffer->Number() バッファーの番号を返します。 - - *perl-Count* -Buffer->Count() バッファーの行数を返します。 - - *perl-Get* -Buffer->Get({lnum}, {lnum}?, ...) - バッファーの {lnum} 行目のテキストを、指定されているそ - れぞれの {lnum} に関して返します。{lnum} のリストとし - て配列を渡すこともできます。 - - *perl-Delete* -Buffer->Delete({lnum}, {lnum}?) - バッファーの {lnum} 行目を削除します。二つ目の {lnum} - が指定されていると、始めの {lnum} から二つ目の {lnum} - までの範囲の行が削除されます。 - - *perl-Append* -Buffer->Append({lnum}, {line}, {line}?, ...) - それぞれの {line} をバッファーの {lnum} 行目の後に挿入 - します。{line} のリストは配列でもよいです。 - - *perl-Set* -Buffer->Set({lnum}, {line}, {line}?, ...) - バッファーの行を1行以上 {line} で指定される行で置き換 - えます。置き換えは、{lnum} から始まり、{line} は配列で - もよいです。引数が有効でないものであれば、置き換えは起 - こりません。 - -$main::curwin - 現在のウインドーオブジェクト - -$main::curbuf - 現在のバッファーオブジェクト - - - *script-here* -Vimスクリプトにその他のスクリプトを埋め込むときに、その言語がサポートされてい -ないなら、その部分をスキップしたいでしょう。しかし、次のコードはうまく動きませ -ん。 > - if has('perl') - perl << EOF - this will NOT work! - EOF - endif -このようにしないで、関数の中にPerl/Python/Ruby/etcのコードを書き、その関数を呼 -ぶようにしてください。 > - if has('perl') - function DefPerl() - perl << EOF - this works - EOF - endfunction - call DefPerl() - endif -注意:"EOF"は行頭になければなりません。 - -============================================================================== -4. 動的ローディング *perl-dynamic* - -MS-Windows と Unix では Perl ライブラリを動的に読み込むことが可能である。これ -を行うと |:version| の出力に |+perl/dyn| が含まれるようになる。 - -この場合、Vimは必要になったときだけPerlのDLLや共有ライブラリのファイルを検索す -る。Perlインターフェイスを使わないときはDLLを必要としないので、DLLなしでVimを -使うことができる。 - -MS-Windows ~ - -http://www.perl.org から Perl をダウンロードできる。Vim のビルドには -ActiveState のものが使われた。 - -Perl インターフェイスを使うには Perl の DLL が検索パス内に存在しなければなりま -せん。perl512.dll が見つからないというようなメッセージが表示された場合は、 -$PATH に適切なディレクトリが含まれているかどうか確認してください。通常は Perl -のインストーラーによって設定されるでしょう。コンソールウィンドウで "path" とタ -イプすると、どのディレクトリが検索パスになっているか確認できます。 - -DLLの名前はVimをコンパイルした時のPerlのバージョンに一致しなければならない。 -現在その名前は"perl512.dll"である。これはPerl5.12用である。これを確かめるに -は、"gvim.exe"を開き、"perl\d*.dll\c"を検索する。 - -============================================================================== - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/if_pyth.jax b/runtime.old/doc/if_pyth.jax deleted file mode 100644 index ef90339ae..000000000 --- a/runtime.old/doc/if_pyth.jax +++ /dev/null @@ -1,389 +0,0 @@ -*if_pyth.txt* For Vim バージョン 7.3. Last change: 2011 May 07 - - - VIM REFERENCE MANUAL by Paul Moore - - -VimのPythonインターフェイス *python* *Python* - -1. コマンド |python-commands| -2. vimモジュール |python-vim| -3. バッファオブジェクト |python-buffer| -4. レンジオブジェクト |python-range| -5. ウィンドウオブジェクト |python-window| -6. 動的ローディング |python-dynamic| -7. Python 3 |python3| - -{Vi にはこれらのコマンドはない} - -Python 2.x インターフェイスは Vim が |+python| 機能付きでコンパイルされたとき -のみ利用できます。 -Python 3 インターフェイスは Vim が |+python3| 機能付きでコンパイルされたときの -み利用できます。 - -============================================================================== -1. コマンド *python-commands* - - *:python* *:py* -:[range]py[thon] {stmt} - Pythonのステートメント{stmt}を実行します。 - -:[range]py[thon] << {endmarker} -{script} -{endmarker} - Pythonのスクリプト{script}を実行します。 - Note: このコマンドはPython用の機能を含めてコンパイルさ - れていないときは機能しません。エラーを抑制するには - |script-here|を参照してください。 - -{endmarker}の前に空白を置かないでください。"<<"の後に{endmarker}省略した時は -|:append|や|:insert|のように'.'が使われます。 -この形の|:python|コマンドはVimスクリプトにPythonコードを埋め込むのに特に便利で -す。 - -例: > - function! IcecreamInitialize() - python << EOF - class StrawberryIcecreame: - def __call__(self): - print 'EAT ME' - EOF - endfunction -< -Note: Pythonはインデントに関して非常に繊細です。"class"の行と"EOF"の行はまった -くインデントしないでください。 - - *:pyfile* *:pyf* -:[range]pyf[ile] {file} - {file}内のPythonスクリプトを実行します。引数はそのまま - 一つのファイル名として使われます。{Vi にはない} - -これら2つのコマンドは、本質的には同じことを行います - つまり、Pythonのコード -を、与えられた"現在の範囲"|python-range|に対して実行します。 - -:pythonの場合には、実行されるコードはコマンドラインで与えられたものです。 -:pyfileの場合には、実行されるコードは与えられたファイルの中身です。 - -Pythonのコマンドは|sandbox|の中では使えません。 - -引数を渡すためには明示的に sys.argv[] を使って設定してください。例: > - - :python import sys - :python sys.argv = ["foo", "bar"] - :pyfile myscript.py - -いくつか例を挙げます *python-examples* > - - :python from vim import * - :python from string import upper - :python current.line = upper(current.line) - :python print "Hello" - :python str = current.buffer[42] - -(変更 - importsなど - は、Pythonインタープリタと同様に、次のコマンドに引き -継がれます。) - -============================================================================== -2. vimモジュール *python-vim* - -Pythonコードは、vimモジュールを通して、vimに自由にアクセスすることができます -(ただひとつの例外を除いて - 以下の|python-output|を参照)。vimモジュールは2つ -のメソッド、3つの定数、そして1つのエラーオブジェクトを実装しています。これを -使うにはvimモジュールをimportする必要があります。 > - :python import vim - -概要 > - :py print "Hello" # メッセージを表示 - :py vim.command(cmd) # exコマンドを実行 - :py w = vim.windows[n] # ウィンドウ"n"を得る - :py cw = vim.current.window # 現在のウィンドウを得る - :py b = vim.buffers[n] # バッファ"n"を得る - :py cb = vim.current.buffer # 現在のバッファを得る - :py w.height = lines # ウィンドウの高さを設定する - :py w.cursor = (row, col) # ウィンドウのカーソル位置を設定する - :py pos = w.cursor # (row, col)の組を得る - :py name = b.name # バッファのファイル名を得る - :py line = b[n] # バッファから1行を得る - :py lines = b[n:m] # バッファから一連の行を得る - :py num = len(b) # 行数を得る - :py b[n] = str # バッファ内の1行を設定する - :py b[n:m] = [str1, str2, str3] # 1度に数行を設定する - :py del b[n] # 1行を削除する - :py del b[n:m] # 数行を削除する - - -"vim"モジュールのメソッド - -vim.command(str) *python-command* - vim(exモード)のコマンドstrを実行します。戻り値はありません。 - 例: > - :py vim.command("set tw=72") - :py vim.command("%s/aaa/bbb/g") -< ノーマルモードのコマンドを実行するには、次の定義が使われます: > - def normal(str): - vim.command("normal "+str) - # '...'は、2重引用符を含む文字列の境界に使われることに注意。 - normal('"a2dd"aP') -< *E659* - ":python"コマンドは、Python 2.2かそれより古いものでは再帰的に使えませ - ん。Python 2.3 かそれより新しものを使ってください。 > - :py vim.command("python print 'Hello again Python'") - -vim.eval(str) *python-eval* - vim内の式評価を使って、式を評価します(|expression|を参照)。戻り値は、 - 次の通り: - - Vimの式を評価した結果が文字列か数値ならば文字列 - - Vimの式を評価した結果がリストならばリスト - - Vimの式を評価した結果がVimの辞書ならば辞書 - 辞書とリストは再帰的に展開されます。 - 例: > - :py text_width = vim.eval("&tw") - :py str = vim.eval("12+12") # 結果は文字列であることに注意! - # 数に変換するには、 - # string.atoi()を使うこと。 - - :py tagList = vim.eval('taglist("eval_expr")') -< 最後のコマンドはPython辞書のPythonリストを返します。例: - [{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name': - 'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] - -"vim"モジュールのエラーオブジェクト - -vim.error *python-error* - vimのエラーに遭遇したとき、Pythonは型vim.errorの例外を発生させます。 - 例: > - try: - vim.command("put a") - except vim.error: - # レジスタaが空 - -モジュール"vim"の定数 - モジュール"vim"の定数は、実際には定数ではありません。よって代入し直す - ことができます。しかし、それは馬鹿げたことです。その変数が参照している - vimオブジェクトへのアクセスができなくなってしまうからです。 - -vim.buffers *python-buffers* - 一連のvimバッファへのアクセスを提供するシーケンスオブジェクト。 - 次の操作がサポートされています: > - :py b = vim.buffers[i] # インデックス化する (読取り専用) - :py b in vim.buffers # メンバかどうか調べる - :py n = len(vim.buffers) # 要素の個数 - :py for b in vim.buffers: # シーケンシャルアクセス - -vim.windows *python-windows* - 一連のvimウィンドウへのアクセスを提供するシーケンスオブジェクト。 - このオブジェクトは次の操作をサポートしています: > - :py w = vim.windows[i] # インデックス化する (読取り専用) - :py w in vim.windows # メンバかどうか調べる - :py n = len(vim.windows) # 要素の個数 - :py for w in vim.windows: # シーケンシャルアクセス - -vim.current *python-current* - vim内で使える様々な"現在の"オブジェクトへの、(特定の属性を通した) - アクセスを提供するオブジェクト: > - vim.current.line 現在の行 (RW) String - vim.current.buffer 現在のバッファ (RO) Buffer - vim.current.window 現在のウィンドウ (RO) Window - vim.current.range 現在の行の範囲 (RO) Range -< - 最後のものに関しては、若干の説明が必要でしょう。:python、:pyfileコマン - ドで、範囲が指定された場合、この行の範囲は、"現在の範囲"として扱われま - す。範囲はバッファに少し似ていますが、全てのアクセスは行のサブセットに - 制限されます。詳細は|python-range|を参照してください。 - - -Pythonからの出力 *python-output* - Pythonコードからの全ての出力は、Vimのメッセージエリアに表示されます。 - 標準出力はインフォメーションメッセージとして、エラー出力はエラーメッ - セージとして表示されます。 - - 実装のレベルでいうと、sys.stdout(printステートメントによる出力も含む) - に向けられる全ての出力が、インフォメーションメッセージとしてvimに表示 - され、sys.stderr(エラートレースバックを含む)に向けられる全ての出力が、 - エラーメッセージとしてvimに表示されています。 - - *python-input* - 入力(sys.stdinを通した入力、input()、raw_input()を含む)はサポートされ - ず、プログラムをクラッシュさせる可能性があります。これはたぶん修正され - るべき問題です。 - -============================================================================== -3. バッファオブジェクト *python-buffer* - -バッファオブジェクトは、vimのバッファを表します。バッファオブジェクトを取得す -るはいくつかの方法があります: - - vim.current.bufferを介して (|python-current|) - - vim.buffersのインデックス化から (|python-buffers|) - - ウィンドウの"buffer"属性から (|python-window|) - -バッファオブジェクトは、そのバッファの完全なファイル名を読み取り専用属性(name) -として持っています。バッファオブジェクトは3つのメソッドを持っています(append、 -mark、range。以下参照)。 - -バッファオブジェクトは、シークエンスオブジェクトとして扱うこともできます。この -文脈では、バッファオブジェクトは文字列のリスト(そう、これはmutableです)のよう -に振舞います。各要素はバッファの行です。有用なシークエンス操作の全て、つまり、 -インデックス操作、インデックスによる代入、スライシング、スライスへの代入が期待 -通りに機能します。バッファのインデックス操作(スライシング)の結果は、文字列(文 -字列のリスト)であることを注意しておきます。これはひとつの例外的な結果をもたら -します - b[:]はbとは異なるのです。特に、"b[:] = None"はバッファの全てを削除す -るが、"b = None"は変数bを更新するだけで、バッファには何の影響も与えません。 - -バッファのインデックスは、Pythonでは普通はゼロから始まります。これは、1から始 -まるvimの行番号と異なります。これは、特にvimの行番号を使うmarks(以下を参照)を -扱う際に問題となります。 - -バッファオブジェクトのメソッドは次の通りです: - b.append(str) バッファに行を追加 - b.append(str, nr) バッファの "nr" 行目の下に行を追加。 - b.append(list) バッファに一連の行を追加 - appendメソッドに文字列のリストを与えるオプションは、 - Python組込みのリストオブジェクトの等価なメソッド - とは違うことに注意してください - b.append(list, nr) バッファの "nr" 行目の下に一連の行を追加 - b.mark(name) 名前付きマークの位置を示す(row,col)の組を返す - (これは[]"<> marksでも得られる) - b.range(s,e) 与えられたバッファのs行目からe行目(s行とe行も含む - |inclusive|)を示すレンジオブジェクト(|python-range|を - 参照)を返す - -Note 行を追加するときは、その行に改行文字'\n'が含まれてはなりません。末尾の -'\n'は許されますが、無視されます。そのため次のようなことができます: > - :py b.append(f.readlines()) - -例 (bは現在のバッファに割り当てられているとします) > - :py print b.name # バッファのファイル名を出力 - :py b[0] = "hello!!!" # 先頭の行を置換 - :py b[:] = None # 全てのバッファを削除 - :py del b[:] # 全てのバッファを削除 - :py b[0:0] = "add a line" # 先頭に行を追加 - :py del b[2] # 行を削除 (3番目) - :py b.append("bottom") # 最後に行を追加 - :py n = len(b) # 行数 - :py (row,col) = b.mark('a') # 名前付きマーク - :py r = b.range(1,5) # バッファの部分範囲 - -============================================================================== -4. レンジオブジェクト *python-range* - -レンジオブジェクトは、vimバッファの一部分を表します。レンジオブジェクトを取得 -するにはいくつかの方法があります: - - vim.current.rangeを介して (|python-current|) - - バッファのrange()メソッドから (|python-buffer|) - -レンジオブジェクトの操作は、バッファオブジェクトのそれとほとんど同じです。 -しかし、全ての操作は範囲内の行に制限されます(もちろん、行の範囲は部分の割当て、 -行の削除、あるいはrange.append()メソッドによって変更できます)。 - -レンジオブジェクトの属性: - r.start 選択範囲でのバッファ内の最初の行。 - r.end 選択範囲でのバッファ内の最後の行。 - -レンジオブジェクトのメソッド: - r.append(str) その範囲に行を追加する - r.append(str, nr) "nr" 行目の後に追加する - r.append(list) その範囲にリストで与えられた複数行を追加する。 - これはPythonのリストオブジェクトに対する操作とは異な - ることに注意してください。 - r.append(list, nr) "nr" 行目の後に追加する - - -バッファと違い、レンジは"name"属性を持たず、また、mark()、range()メソッドも持 -ちません。そのかわり、レンジは範囲の最後に行を付け加えるappend()メソッドを持ち -ます。 - -============================================================================== -5. ウィンドウオブジェクト *python-window* - -ウィンドウオブジェクトは、vimのウィンドウを表現します。ウィンドウオブジェクト -を取得するには、いくつかの方法があります: - - vim.current.windowを介して (|python-current|) - - vim.windowsのインデックス化から (|python-windows|) - -ウィンドウオブジェクトは、それらの属性を通してのみ操作できます。これらはメソッ -ドを持たず、シークエンスも他のインターフェイスもありません。 - -ウィンドウの属性: - buffer (読取り専用) そのウィンドウに表示されているバッファ - cursor (読み書き) そのウィンドウの現在のカーソルの位置 - これは(row,col)の組で表される - height (読み書き) ウィンドウの高さ、行の数で - width (読み書き) ウインドウの幅、列の数で -heightはスクリーンが水平方向に分割されているときのみ書き込み可能です。 -widthはスクリーンが垂直方向に分割されているときのみ書き込み可能です。 - -============================================================================== -6. 動的ローディング *python-dynamic* - -MS-WindowsではPythonライブラリを動的に読み込むことが可能である。これを行うと -|:version|の出力に|+python/dyn|が含まれるようになる。 - -この場合、Vimは必要なときだけPythonのDLLファイルを検索する。Pythonインターフェ -イスを使わないときはDLLを必要としないので、DLLなしでVimを使うことができる。 - -Pythonインターフェイスを使うにはPythonのDLLが検索パス内に存在しなければならな -い。コンソールウィンドウで"path"とタイプすると、どのディレクトリが検索パスとな -るか表示することができる。 - -DLLの名前はVimをコンパイルした時のPythonのバージョンに一致しなければならない。 -現在その名前は"python24.dll"である。これはPython2.4用である。これを確かめるに -は、"gvim.exe"を開き、"python\d*.dll\c"を検索する。 - -============================================================================== -7. Python 3 *python3* - - *:py3* *:python3* -|:py3| コマンドと |:python3| コマンドは |:python| と同様に機能します。 - *:py3file* -|:py3file| コマンドは |:pyfile| と同様に機能します。 - -Vim のビルドは 4 種類あります (:version の出力): -1. Python サポートなし (-python, -python3) -2. Python 2 サポートのみ (+python or +python/dyn, -python3) -3. Python 3 サポートのみ (-python, +python3 or +python3/dyn) -4. Python 2 と 3 のサポート (+python/dyn, +python3/dyn) - -特殊ケース 4 に付いてもう少し詳細に説明します: - -Python 2 と Python 3 をサポートするにはそれらを動的ロードする必要があります。 - -Linux/Unix システムで動的ロード時にグローバルシンボルをインポートすると、 2 番 -目にロードした Python が使われたときにクラッシュが発生します。そのため、グロー -バルシンボルをロードして一つの Python バージョンだけを使うか、グローバルシンボ -ルをロードしないかのどちらかしかありません。後者は特定のライブラリ (シンボルが -Vim から提供されていることを期待しているライブラリ) において Python の -"import" が失敗するようになります。 - *E836* *E837* -Vim のコンフィグスクリプトはすべてのライブラリがある標準の Python ライブラリ -(termios) に基づいていると仮定します。このライブラリを両方の Python バージョン -でインポートできるなら、両方のバージョンを Vim の中で同時に利用できます。そう -でない場合は、どちらか最初に使われたもののみが利用可能になります。もう一方を使 -おうとすると E836 か E837 のエラーメッセージが表示されるでしょう。 - -Vim の動作はコンフィグを実行したシステムに依存します。Python の両方のバージョ -ンが --enable-shared 付きでビルドされているなら、両方のバージョンを同時に使用 -できます。ただし libPython にリンクしていないサードパーティライブラリに対して -はまだ問題は解決しません。 - -これらの問題に対する対処療法: -1. 問題のライブラリを libpython.so にリンクする形で再コンパイルする。 -2. Vim を再コンパイルして一つの Python バージョンのみ有効にする。 -3. コンフィグ実行後に auto/config.h の PY_NO_RTLD_GLOBAL の定義を削除する。こ - れは Vim がクラッシュするようになるでしょう。 - - *has-python* -どのバージョンの Python が利用可能になっているかは次のコマンドで確認できます: -> - if has('python') - echo 'there is Pyton 2.x' - elseif has('python3') - echo 'there is Python 3.x' - endif - -Note: Python の 2 と 3 の両方が利用可能で、Python が動的ロードされるようになっ -ている場合、この has() 呼び出しによってそれらがロードされます。もし、同時に -ロードできるのがどちらか一方だけだった場合、Python の 2 と 3 のどちらが利用で -きるか調べるだけで、もう一方は利用できなくなります。 - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/if_ruby.jax b/runtime.old/doc/if_ruby.jax deleted file mode 100644 index 3210edad1..000000000 --- a/runtime.old/doc/if_ruby.jax +++ /dev/null @@ -1,211 +0,0 @@ -*if_ruby.txt* For Vim バージョン 7.3. Last change: 2010 Oct 27 - - - VIM リファレンスマニュアル by Shugo Maeda - -Rubyインターフェイス *ruby* *Ruby* - - -1. コマンド |ruby-commands| -2. VIMモジュール |ruby-vim| -3. VIM::Buffer オブジェクト |ruby-buffer| -4. VIM::Window オブジェクト |ruby-window| -5. グローバル変数 |ruby-globals| -6. 動的ローディング |ruby-dynamic| - -{Viにはこれらのコマンドは無い} - *E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273* - -Rubyインターフェイスは|+ruby|機能を有効化してVimをコンパイルした時にのみ動作す -る。 - -Rubyのホームページは http://www.ruby-lang.org/ です。ここでRubyをダウンロード -できます。 - -============================================================================== -1. コマンド *ruby-commands* - - *:ruby* *:rub* -:rub[y] {cmd} Rubyのコマンド{cmd}を実行する。 - -:rub[y] << {endpattern} -{script} -{endpattern} - Rubyスクリプト{script}を実行する。 - {endpattern}の行では直前に空白文字を先行させてはいけな - い。{endpattern}が省略された場合、|:append|や|:insert| - コマンド同様に'.'(ドット)がデフォルトである。この形式 - の|:ruby|コマンドは主にVimスクリプトにRubyコードを埋め - 込むのに便利。 - Note: このコマンドはRuby機能をコンパイル時に指定しな - かった時には動作しない。エラーを避けるには - |script-here|を参照。 - -次のようにして使います: > - :ruby print "Hello" # this is a comment - -Vimスクリプトの例: > - - function! RedGem() - ruby << EOF - class Garnet - def initialize(s) - @buffer = VIM::Buffer.current - vimputs(s) - end - def vimputs(s) - @buffer.append(@buffer.count,s) - end - end - gem = Garnet.new("pretty") - EOF - endfunction -< - - *:rubydo* *:rubyd* *E265* -:[range]rubyd[o] {cmd} [range]の範囲の各行に対し、行末の<EOL>を削除して$_へ代 - 入しつつ、Rubyコマンド{cmd}を実行評価する。$_を変更す - るとバッファのテキストを変更できるが、このコマンドを - 使って行を追加したり削除したりはできないことに注意。 - [range]を省略した場合ファイル全体が対象: "1,$" - - *:rubyfile* *:rubyf* -:rubyf[ile] {file} ファイル{file}のRubyスクリプトを実行する。ファイル名の - 補完が利用できる以外は、":ruby load 'file'"と同じ。 - -|sandbox|環境内ではRubyコマンドを実行できない。 - -============================================================================== -2. VIMモジュール *ruby-vim* - -Rubyのコードは全てのVimへのアクセスをVIMモジュール経由で行なう。 - -概要 > - print "Hello" # メッセージを表示する - VIM.command(cmd) # Exコマンドを実行する - num = VIM::Window.count # ウィンドウ数を取得する - w = VIM::Window[n] # ウィンドウ n を取得する - cw = VIM::Window.current # 現在のウィンドウを取得する - num = VIM::Buffer.count # バッファ数を取得する - b = VIM::Buffer[n] # バッファ n を取得する - cb = VIM::Buffer.current # 現在のバッファを取得する - w.height = lines # ウィンドウの高さ(行数)を設定する - w.cursor = [row, col] # ウィンドウのカーソル位置を設定する - pos = w.cursor # カーソルの位置を配列で受け取る - name = b.name # バッファのファイル名を取得する - line = b[n] # バッファから行の内容を取得する - num = b.count # バッファの行数を取得する - b[n] = str # バッファの行の内容を変更する - b.delete(n) # 行を削除する - b.append(n, str) # n行目の直後に行を追加する - line = VIM::Buffer.current.line # カレント行を取得する - num = VIM::Buffer.current.line_number # カレント行の行番号を取得する - VIM::Buffer.current.line = "test" # カレント行を設定する -< - -モジュール関数: - - *ruby-message* -VIM::message({msg}) - メッセージ{msg}を表示する。 - - *ruby-set_option* -VIM::set_option({arg}) - Vimのオプションを設定する。{arg}は":set"コマンドが受け付けるものであれ - ば何でも良い。引数の中では空白文字が使えないことに注意。|:set|を参照。 - - *ruby-command* -VIM::command({cmd}) - Exコマンド{cmd}を実行する。 - - *ruby-evaluate* -VIM::evaluate({expr}) - Vim内部の実行エンジンを使ってスクリプト{expr}を実行評価する - (|expression|参照)。実行結果は文字列で返される。 - |List|は文字列に変換される。各要素が連結され、間に改行が挿入される。 - -============================================================================== -3. VIM::Buffer オブジェクト *ruby-buffer* - -オブジェクトVIM::BufferはVimのバッファを表す。 - -クラスメソッド: - -current カレントバッファオブジェクトを返す。 -count バッファの個数を返す。 -self[{n}] 番号{n}のバッファオブジェクトを返す。最初の番号は0。 - -メソッド: - -name バッファの名前を返す。 -number バッファの番号を返す。 -count 行数を返す。 -length 行数を返す。 -self[{n}] バッファの行を返す。{n}は行番号。 -self[{n}] = {str} - バッファの行を設定する。{n}は行番号。 -delete({n}) バッファから行を削除する。{n}は行番号。 -append({n}, {str}) - 行{n}の後ろに行を追加する。 -line そのバッファがアクティブなら、カレント行を返す。 -line = {str} そのバッファがアクティブなら、カレント行を設定する。 -line_number そのバッファがアクティブなら、カレント行の行番号を返す。 - -============================================================================== -4. VIM::Window オブジェクト *ruby-window* - -VIM::Window オブジェクトはVimのウィンドウを表現している。 - -クラスメソッド: - -current 現在のウィンドウオブジェクトを返す。 -count ウィンドウの数を返す。 -self[{n}] 番号{n}のウィンドウオブジェクトを返す。番号は0から数え始める。 - -メソッド: - -buffer ウィンドウに表示されているバッファを返す。 -height ウィンドウの高さを返す。 -height = {n} ウィンドウの高さを{n}に設定する。 -width ウィンドウの幅を返す。 -width = {n} ウィンドウの幅を{n}に設定する。 -cursor カーソルの位置を[行数, カラム]の形で配列にして返す。 -cursor = [{row}, {col}] - カーソルの位置を{row} 行の {col}カラムに設定する。 - -============================================================================== -5. グローバル変数 *ruby-globals* - -2つのグローバル変数がある。 - -$curwin 現在のウィンドウオブジェクト -$curbuf 現在のバッファオブジェクト - -============================================================================== -6. 動的ローディング *ruby-dynamic* - -MS-WindowsとUnixではRubyライブラリを動的に読み込むことが可能である。これを行う -と|:version|の出力に|+ruby/dyn|が含まれるようになる。 - -この場合、Vimは必要になったときだけRubyのDLLファイル及び共有ライブラリを検索す -る。Rubyインターフェイスを使わないのであればそれらは必要ではないので、ライブラ -リファイルがシステムに無くてもVimを使うことができる。 - -これが動作するためには Ruby の適切なバージョンがインストールされている必要があ -ります。次の場所からパッケージをダウンロードできます: -http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html -現在のパッケージは ruby-1.9.1-p429-i386-mswin32.zip です。 - -Rubyインターフェイスを使うにはRubyのDLLが検索パス内に存在しなければならな -い。コンソールウィンドウで"path"とタイプすると、どのディレクトリが検索パスとな -るか表示することができる。 - -DLLの名前はVimをコンパイルした時のRubyのバージョンに一致しなければならない。現 -在その名前は"msvcrt-ruby191.dll"である。これはRuby1.9.1用である。これを確かめ -るには、"gvim.exe"を開き、"ruby\d*.dll\c"を検索する。 - -自分で Ruby 1.9.1 対応の Vim をビルドするには、config.h ファイルを編集して -_MSC_VER のチェックをコメントアウトする必要があるでしょう。 - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/if_sniff.jax b/runtime.old/doc/if_sniff.jax deleted file mode 100644 index 4c5aeccbc..000000000 --- a/runtime.old/doc/if_sniff.jax +++ /dev/null @@ -1,96 +0,0 @@ -*if_sniff.txt* For Vim バージョン 7.3. Last change: 2005 Mar 29 - - - VIM REFERENCE MANUAL - by Anton Leherbauer (toni@takefive.co.at) - - -SNiFF+ と Vim *sniff* - -1. イントロダクション |sniff-intro| -2. コマンド |sniff-commands| -3. SNiFF+ インタフェイス付きコンパイル |sniff-compiling| - -{Vi には、これらのどのコマンドもありません} *E275* *E274* *E276* *E278* *E279* - -SNiFF+ インタフェイスは、|+sniff| 機能つきでコンパイルしていた場合にのみ有効で -す。 - -============================================================================== -1. イントロダクション *sniff-intro* - -SNiFF+ を使う以下の機能が利用できます: - - * 全ての編集リクエストに Vim を使うことができます - * Vim でファイルがセーブされると SNiFF+ はそれに気づいて、全てのブラウザ - を更新します - * SNiFF+ コマンドを Vim から直接実行できます - -Vim で SNiFF+ を使うには - 1. SNiFF+ が起動していることを確認してください。 - 2. Preferences ダイアログでの Editor ビューで、フィールド名の 'External - Editor' を 'Emacs/Vim' に変更してください。 - 4. Vim を起動します。 - 5. SNiFF+ に接続します。(:sniff 接続) - -いったん接続が確立されると、SNiFF+ は、ソース・コードを表示したり、編集した -りする全てのリクエストで Vim を使います。一方、:sniff コマンドで SNiFF+ にク -エリーを送ることができます。 - -============================================================================== -2. コマンド *sniff-commands* - - *:sniff* *:sni* -:sni[ff] request [symbol] sniff にリクエストを送信する、symbol はオプショナ - ル {Vi にはない機能です} -:sni[ff] 可能な全てのリクエストと接続状態を表示する。 - -ほとんどのリクエストは symbol (識別子)をパラメーターとして必要とします。省略さ -れた場合は、カーソルの下の単語が使われます。利用可能なリクエストの一覧を下に挙 -げます: - -リクエスト マッピング 説明 -------------------------------------------------------------------------------- -connect sc SNiFF+ との接続を確立します。 - Preference で、これが可能なように SNiFF+ を設 - 定ずみかどうか確認しておいてください。 -disconnect sq SNiFF+ との接続を切断します。:sniff connect - (もしくは 'sc')で、いつでも再接続できます。 -toggle st 実装と定義ファイルをトグルします。 -find-symbol sf シンボル・ブラウザーに symbol を読み込みます。 -browse-class sb クラス・ブラウザーに class を読み込みます。 -superclass ss symbol の superclass を編集します。 -overridden so symbol の上書きされた method を編集します。 -retrieve-file srf 現在のファイルの symbol を集めます。 -retrieve-project srp 現在のプロジェクトの symbol を集めます。 -retrieve-all-projects srP 全てのプロジェクトの symbol を集めます。 -retrieve-next sR 現在の Retriever の設定を使って symbol を集め - ます。 -goto-symbol sg symbol の定義もしくは実装に飛びます。 -hierarchy sh 回想ブラウザーに symbol を読み込みます。 -restr-hier sH 上と同じですが、関連する class のみを表示しま - す。 -xref-to sxt symbol に関する refers-to クエリーを開始し、結 - 果をクロス・リファレンサーに読み込む。 -xref-by sxb symbol に関する referred-by クエリーを開始する。 -xref-has sxh symbol に関する refers-to コンポーネント・クエ - リーを開始する。 -xref-used-by sxu symbol に関して、コンポーネントとして - referred-by クエリーを開始する。 -show-docu sd symbol のドキュメントを表示する。 -gen-docu sD symbol のドキュメントを生成する。 - -マッピングは 'sniff.vim' に定義されており、これは全ての SNiFF+ プロダクトの一 -部になります ($SNIFF_DIR/config/sniff.vim)。このファイルは Vim が SNiFF+ に接 -続するときには、常に読み込まれます。 - -============================================================================== -3. SNiFF+ インタフェイス付きコンパイル *sniff-compiling* - -Vim を SNiFF+ サポートつきでコンパイルするには、extra アーカイブに含まれる2つ -のソース・ファイルが必要になります: if_sniff.c と if_sniff.h。 -Unix 上: Makefile を編集して"--enable-sniff"の行のコメントを外します。もしくは -"--enable-sniff"を指定してconfigureを実行してください。 -NT 上: make コマンドで SNIFF=yes を指定します。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/if_tcl.jax b/runtime.old/doc/if_tcl.jax deleted file mode 100644 index 0e707c6ba..000000000 --- a/runtime.old/doc/if_tcl.jax +++ /dev/null @@ -1,526 +0,0 @@ -*if_tcl.txt* For Vim バージョン 7.3. Last change: 2008 Aug 16 - - - VIM REFERENCE MANUAL by Ingo Wilken - - -VimへのTclインターフェイス *tcl* *Tcl* *TCL* - -1. コマンド |tcl-ex-commands| -2. Tcl コマンド |tcl-commands| -3. Tcl 変数 |tcl-variables| -4. Tcl ウィンドウコマンド |tcl-window-cmds| -5. Tcl バッファコマンド |tcl-buffer-cmds| -6. その他; Tcl からの出力 |tcl-misc| |tcl-output| -7. 既知のバグと問題点 |tcl-bugs| -8. 例 |tcl-examples| -9. 動的ローディング |tcl-dynamic| - -{Vi はこれらのコマンドを持たない} *E280* *E281* - -Tclインターフェイスは、Vimが|+tcl|機能と共にコンパイルされたときのみ機能する。 - -注意: 多分まだいくらかのバグが残っている。バグレポート、コメント、意見などが -あったら、<Ingo.Wilken@informatik.uni-oldenburg.de>まで送ってください。 - -============================================================================== -1. コマンド *tcl-ex-commands* *E571* *E572* - - *:tcl* *:tc* -:tc[l] {cmd} Tclコマンド{cmd}を実行する。 - -:[range]tc[l] << {endmarker} -{script} -{endmarker} - Tclスクリプト{script}を実行します。 - Note: このコマンドはTclの機能付きでコンパイルされてい - ないと使えません。エラーを抑制するには|script-here|を - 参照してください。 - -{endmarker}の前には空白を置いてはいけません。"<<"の後に{endmarker}が省略された -ときは|:append|や|:insert|のように'.'が使われます。 -この形式の|:tcl|コマンドはVimスクリプトの中にtclコードを埋め込むのに特に便利で -す。 - -例: > - function! DefineDate() - tcl << EOF - proc date {} { - return[clock format [clock seconds]] - } - EOF - endfunction -< - - *:tcldo* *:tcld* -:[range]tcld[o] {cmd} Tclコマンド{cmd}を、[range]内の各行に対し、変数"line" - に各行のテキストを順にセットし、変数"lnum"に各行番号 - をセットしながら実行する。"line"への設定はテキストを - 変更しするが、このコマンドの実行中に、行を追加したり - 削除したりすることはできない。{cmd}がエラーを返せば、 - コマンドは中断される。[range]の標準値はファイルの全て - ":1,$"である。|tcl-var-line|、|tcl-var-lnum|を参照せ - よ。 {Vi にはない} - - *:tclfile* *:tclf* -:tclf[ile] {file} {file}内のTclスクリプトを実行する。これは、 - ":tcl source {file}"と同じであるが、ファイル名の補完 - が有効である。{Vi にはない} - - -Tclオブジェクト(変数のようなもの)は、Tclシェル内でと同様、1つのコマンドから次 -のコマンドへと引き継がれることに注意せよ。 - -|sandbox|の中ではTclコマンドは実行できない。 - -============================================================================== -2. Tcl コマンド *tcl-commands* - -Tclコードからは、"::vim"名前空間のコマンドを介してvimの全てにアクセスできる。 -次のコマンドが実装されている: > - - ::vim::beep # 文字通りのbeep。 - ::vim::buffer {n} # Tclコマンドを1つのバッファに作る。 - ::vim::buffer list # Tclコマンドを全てのバッファに作る。 - ::vim::command [-quiet] {cmd} # exコマンドを実行する。 - ::vim::expr {expr} # Vimの式評価を使用する。 - ::vim::option {opt} # vimのオプションを得る。 - ::vim::option {opt} {val} # vimのオプションを設定する。 - ::vim::window list # 全てのウィンドウにTclコマンドを作る。 - -コマンド: - ::vim::beep *tcl-beep* - 音を鳴らす。戻り値はない。 - - ::vim::buffer {n} *tcl-buffer* - ::vim::buffer exists {n} - ::vim::buffer list - vimバッファへのアクセスを提供する。整数引数を伴い、その数に対応する - バッファへのバッファコマンド(|tcl-buffer-cmds|を参照)を作り、結果とし - てそのバッファの名前を返す。不正なバッファ番号は、標準Tclエラーを返 - す。有効なバッファ番号を調べるには、vimの内部関数を使うとよい: > - set nbufs [::vim::expr bufnr("$")] - set isvalid [::vim::expr "bufexists($n)"] -< "list"オプションは、各有効バッファに対してバッファコマンドを作り、戻り - 値としてコマンドバッファの名前のリストを返す。 - 例: > - set bufs [::vim::buffer list] - foreach b $bufs { $b append end "The End!" } -< "exists"オプションは、与えられた番号のバッファが存在するかを確かめる。 - 例: > - if { [::vim::buffer exists $n] } { ::vim::command ":e #$n" } -< このコマンドは、将来のバージョンで変数に置き換えられるはずである。現在 - のバッファについては|tcl-var-current|も参照。 - - ::vim::command {cmd} *tcl-command* - ::vim::command -quiet {cmd} - vimの(exモードの)コマンド{cmd}を実行する。バッファ、ウィンドウに影響す - るexコマンドは、全て現在のバッファ/ウィンドウを対象とする。標準Tclエ - ラーコード以外の戻り値を返すことはない。このコマンドの終了後、 - "::vim"current"変数は更新される。 - "-quiet"フラグは、vimからの全てのエラーメッセージを抑制する。 - 例: > - ::vim::command "set ts=8" - ::vim::command "%s/foo/bar/g" -< ノーマルモードのコマンドの実行には、"normal"を使う(|:normal|を参照): > - set cmd "jj" - ::vim::command "normal $cmd" -< |tcl-window-command| と |tcl-buffer-command|も参照。 - - ::vim::expr {expr} *tcl-expr* - 式{expr}を、vimの内部式評価(|expression|を参照)を使って評価する。バッ - ファやウィンドウプロパティに問い合わせする種類の式は、全て現在のバッ - ファ/ウィンドウを対象とする。結果を文字列として返す。リスト |List| は - 文字列に変換される。そのとき各要素の間に改行が挿入され、連結される。 - 例: > - set perl_available [::vim::expr has("perl")] -< |tcl-window-expr| と |tcl-buffer-expr|も参照。 - - ::vim::option {opt} *tcl-option* - ::vim::option {opt} {value} - 第2引数なしで、vimオプションの値を問い合わせる。この引数を伴えば、vim - オプションに{value}を設定し、以前の値を結果として返す。'バッファに固 - 有'、'ウィンドウに固有'と記されているオプションは、全て現在のバッファ/ - ウィンドウを対象とする。":set"コマンドでそれらを変更してもグローバルの - オプションは変更されません。真偽値のオプションでは、{value}は"0"か - "1"、あるいは"on"、"off"、"toggle"のキーワードの内のどれかでなくてはな - らない。オプションの一覧は、|option-summary|を参照。 - 例: > - ::vim::option ts 8 -< |tcl-window-option| と |tcl-buffer-option|も参照。 - - ::vim::window {option} *tcl-window* - vimウィンドウへのアクセスを提供する。今のところ、"list"オプションのみ - が実装されている。これは各ウィンドウに対し、ウィンドウコマンドを作り - (|tcl-window-cmds|を参照)、戻り値としてコマンドの名前のリストを返す。 - 例: > - set wins [::vim::window list] - foreach w $wins { $w height 4 } -< このコマンドは、将来のバージョンで変数と置き換えられるはずである。 - 現在のウィンドウについては、|tcl-var-current|を参照。 - -============================================================================== -3. Tcl 変数 *tcl-variables* - -::vim名前空間は、いくつかの変数を持っている。これらはvimにTclインタープリタが -呼び出されたときに作られ、現在の値が設定される。 > - - ::vim::current # "current"オブジェクトを含む配列 - ::vim::lbase # 最初の行番号 - ::vim::range # 現在の範囲の番号を含む配列 - line # 文字列形式での現在の行 (:tcldo のみ) - lnum # 現在の行番号 (:tcldo のみ) - -変数: - ::vim::current *tcl-var-current* - これは、vimから利用可能な様々な"current"オブジェクトへのアクセスを提 - 供する配列である。この配列の内容は、vimの現在の設定を変更(例、カレン - トバッファの削除など)する可能性のある、::vim::command"が呼び出された - 後に更新される。 - "buffer"要素は、カレントバッファへのバッファコマンドの名前を持つ。こ - れで、直接バッファコマンドを利用することができる(|tcl-buffer-cmds|を - 参照)。この要素は読取り専用である。 - 例: > - $::vim::current(buffer) insert begin "Hello world" -< "window"要素は、カレントウィンドウへのウィンドウコマンドの名前を持つ。 - これで、直接ウィンドウコマンドを利用することができる - (|tcl-window-cmds|を参照)。この要素は読取り専用である。 - 例: > - $::vim::current(window) height 10 -< - ::vim::lbase *tcl-var-lbase* - この変数は、Tclが行番号をどのように扱うかを制御する。これが'1'にセット - されていると、行と縦列は1から始まる。このとき、Tclコマンドからの行番 - 号とvimの表現は互換性を持つ。この変数が'0'にセットされた場合、Tclでは - 行番号、縦列は0から始まる。これは、バッファをTclのリスト、行をTclの文 - 字列として扱い、さらにインデックスを返す標準のTclコマンド(例えば、 - "lsort"や"string first")を使うときに役に立つ。標準値は'1'である。今の - ところ、非0の値は全て'1'として扱われるが、この事実に依存したスクリプト - を書くべきではない。|tcl-linenumbers|も参照。 - - ::vim::range *tcl-var-range* - これは3つの要素、"start"、"begin"、"end"から成る配列である。現在の範 - 囲の、最初と最後の行番号を持つ。"begin"は"start"と同じである。この変数 - は読取り専用である。|tcl-examples|を参照。 - - line *tcl-var-line* - lnum *tcl-var-lnum* - このグローバル変数は、exコマンド":tcldo"が実行されたときのみ利用可能で - ある。これらはテキストと現在の行の行番号を持つ。Tclコマンドが":tcldo" - により呼び出されて完了したとき、"line"変数がTclコマンドによって設定解 - 除されていないければ、現在の行は"line"変数の内容に設定される。"lnum" - 変数は読取り専用である。これらの変数は、"::vim"名前空間に属していない - ため、修飾なしで":tcldo"で使うことができる(これは将来のバージョンで変 - 更されるはずである)。|tcl-linenumbers|も参照。 - -============================================================================== -4. Tcl ウィンドウコマンド *tcl-window-cmds* - -ウィンドウコマンドは、vimのウィンドウの表現である。これらはいくつかの方法で作 -られる: - ::vim::window リスト |tcl-window| - バッファコマンドの"windows"オプション |tcl-buffer-windows| -::vim::current(window)変数は、現在のウィンドウのウィンドウコマンドの名前を持 -つ。ウィンドウコマンドは、vimウィンドウが閉じられるに従って、自動的に破棄され -る。 - -ウィンドウコマンドの名前がTcl変数"win"に格納される、すなわち、"$win"がコマンド -を呼び出す、と仮定しよう。次のオプションが利用可能である: > - - $win buffer # ウィンドウのバッファのTclコマンドを作る。 - $win command {cmd} # ウィンドウのコンテクストに、exコマンドを実行 - # する。 - $win cursor # 現在のカーソルの位置を得る。 - $win cursor {var} # 配列変数により、カーソルの位置を設定する。 - $win cursor {row} {col} # カーソルの位置を設定する。 - $win delcmd {cmd} # ウィンドウが閉じたら、Tclコマンドを呼出す。 - $win expr {expr} # ウィンドウのコンテクストに、vimの式評価を行 - # う。 - $win height # ウィンドウの高さを報告する。 - $win height {n} # ウィンドウの高さを設定する。 - $win option {opt} [val] # ウィンドウのコンテクストに、vimのオプション - # を取得/設定する - -オプション: - $win buffer *tcl-window-buffer* - ウィンドウのバッファのTclコマンドを作成し、戻り値としてその名前を返す。 - 名前は変数に格納されるべきである: > - set buf [$win buffer] -< $bufは有効なTclコマンドとなる。利用可能なオプションについては、 - |tcl-buffer-cmds|を参照。 - - $win cursor *tcl-window-cursor* - $win cursor {var} - $win cursor {row} {col} - 引数なしで、現在のカーソル位置を文字列として返す。これは、Tclの配列変 - 数へと変換することができる: > - array set here [$win cursor] -< このとき、"here(row)"と"here(column)"がカーソル位置を持つ。 - 1つの引数を伴うと、引数は2つの要素"row"と"column"を持つべき、Tcl配列 - 変数名と解釈される。これらはカーソルを新しい位置へセットするために使わ - れる。 > - $win cursor here ;# not $here ! -< 2つの引数を伴い、カーソルをrowとcolumで指定した位置へセットする: > - $win cursor $here(row) $here(column) -< 不正な位置指定は、"catch"にて捕捉可能な標準Tclエラーを返す。rowと - columnの値は、"::vim::lbase"変数に依存する。|tcl-var-lbase|を参照。 - - $win delcmd {cmd} *tcl-window-delcmd* - Tclコマンド{cmd}を、ウィンドウ破棄のコールバックとして登録する。この - コマンドはウィンドウが閉じられた直後に(グローバルスコープで)実行され - る。複雑なコマンドは、"list"により構成するとよい: > - $win delcmd [list puts vimerr "window deleted"] -< |tcl-buffer-delcmd|を参照。 - - $win height *tcl-window-height* - $win height {n} - 引数なしで、ウィンドウの現在の高さを報告する。引数を伴うと、ウィンド - ウの高さを{n}に設定しようと試み、戻り値として新しい高さ(これは{n}では - ないかもしれない)を返す。 - - $win command [-quiet] {cmd} *tcl-window-command* - $win expr {expr} *tcl-window-expr* - $win option {opt} [val] *tcl-window-option* - これらは、全てがカレントウィンドウの代わりに$winで表現されるウィンド - ウコンテキストにおいて実行されるという点を除けば、"::vim::command"な - どに似ている。例えば、'local to window'と記されたオプションの設定は、 - ウィンドウ$winに影響を与える。バッファへの影響、または問い合わせは、 - 全てこのウィンドウに表示されるバッファ(すなわち、"$win buffer"で表現 - されるバッファ)を対象とする。より詳しい情報は、|tcl-command|、 - |tcl-expr|、|tcl-option|を参照せよ。 - 例: > - $win option number on - -============================================================================== -5. Tcl バッファコマンド *tcl-buffer-cmds* - -バッファコマンドはvimのバッファを表現する。これらはいくつかの方法で作成される: - ::vim::buffer {N} |tcl-buffer| - ::vim::buffer リスト |tcl-buffer| - ウィンドウコマンドの"buffer"オプション |tcl-window-buffer| -::vim::current(バッファ)変数は、カレントバッファへのバッファコマンドの名前を -持っている。バッファコマンドはvimのバッファが破棄されると、それに合わせて自動 -的に削除される。バッファの内容が変更されると、バッファ内の全てのマークは自動 -的に調整される。Tclコマンドによるバッファ内容への変更は、vimの"undo"コマンド -で元に戻すことができる(|undo|を参照)。 - -バッファコマンドの名前がTcl変数"buf"に格納されている、すなわち、"$buf"がコマ -ンドを呼出すものと仮定しよう。次のオプションが利用可能である: > - - $buf append {n} {str} # バッファの行{n}の後に、行を追加する。 - $buf command {cmd} # バッファコンテクストでexコマンドを実行する。 - $buf count # バッファ内の行数を返す。 - $buf delcmd {cmd} # バッファが削除されたらTclコマンドを呼ぶ。 - $buf delete {n} # 1行を削除する。 - $buf delete {n} {m} # 数行を削除する。 - $buf expr {expr} # バッファコンテクストで、vimの式評価をする。 - $buf get {n} # 1行を文字列として取得する。 - $buf get {n} {m} # 数行をリストとして取得する。 - $buf insert {n} {str} # バッファに行{n}として、行を挿入する。 - $buf last # バッファの最終行の行番号を返す。 - $buf mark {mark} # バッファマークの位置を返す。 - $buf name # バッファ内のファイル名を返す。 - $buf number # そのバッファの番号を返す。 - $buf option {opt} [val] # バッファコンテクストでvimオプションを - # 取得/設定 - $buf set {n} {text} # 1行を置換する。 - $buf set {n} {m} {list} # 数行を置換する - $buf windows # バッファウィンドウのTclコマンドを作成する。 -< - *tcl-linenumbers* -ほとんどのバッファコマンドは引数として行番号を取る。Tclコマンドがこれらをどう -扱うかはm"::vim::lbase"変数に依っている(|tcl-var-lbase|を参照)。行番号の代わ -りに、いくつかのキーワードを使うこともできる: "top"、"start"、"begin"、 -"first"、"bottom"、"end"、"last"が使える。 - -オプション: - $buf append {n} {str} *tcl-buffer-append* - $buf insert {n} {str} *tcl-buffer-insert* - バッファに行を追加する。"insert"オプションを伴うと文字列は新しい行 - {n}になり、"append"オプションを伴うと行{n}の後に挿入される。 - 例: > - $buf insert top "ここが始まり。" - $buf append end "ここで終わり。" -< バッファに行にリストを追加するには、ループを使うとよい: > - foreach line $list { $buf append $num $line ; incr num } -< - $buf count *tcl-buffer-count* - バッファ内の行の総数を返す。 - - $buf delcmd {cmd} *tcl-buffer-delcmd* - Tclコマンド{cmd}を、バッファの削除に対するコールバックとして登録する。 - このコマンドは、バッファが削除された直後に(グローバルスコープで)実行 - される。複雑なコマンドは"list"として構成するべきである: > - $buf delcmd [list puts vimerr "buffer [$buf number] gone"] -< |tcl-window-delcmd|も参照。 - - $buf delete {n} *tcl-buffer-delete* - $buf delete {n} {m} - バッファから行{n}、または行{n}から{m}までを削除する。 - 次の例は、最終行を除く全ての行を削除する: > - $buf delete first [expr [$buf last] - 1] -< - $buf get {n} *tcl-buffer-get* - $buf get {n} {m} - バッファから1行以上を取得する。1行の場合、戻り値は文字列である; 数行 - の場合には文字列のリストが返される。 - 例: -> set topline [$buf get top] - - $buf last *tcl-buffer-last* - 最終行の行番号を返す。この値は"::vim::lbase"変数に依存する。 - |tcl-var-lbase|を参照。 - - $buf mark {mark} *tcl-buffer-mark* - 名前付きマークの位置を、ウィンドウコマンドの"cursor"オプションにで表 - されるカーソル位置に似た文字列として返す(|tcl-window-cursor|を参照)。 - これはTcl配列変数に変換される: > - array set mpos [$buf mark "a"] -< "mpos(column)"と"mpos(row)"はマークの位置を保持する。マークがセット - されていなければ、標準Tclエラーが返される。 - - $buf name - バッファ内のファイル名を返す。ファイルなしのバッファの場合、空文字列 - を返す。 - - $buf number - そのバッファの番号を返す。|:buffer|を参照。 - この例は、vimからバッファを削除する: > - ::vim::command "bdelete [$buf number]" -< - $buf set {n} {string} *tcl-buffer-set* - $buf set {n} {m} {list} - バッファ内の1行以上を置換する。リスト(list)が置換される行以上の要素を - 持っていた場合、それらはバッファに追加される。リストの要素が少ない場合 - には、置換されなかった行はバッファから削除される。 - - $buf windows *tcl-buffer-windows* - そのバッファに表示されている各ウィンドウに対し、ウィンドウコマンドを作 - 成し、コマンド名のリストを結果として返す。 - 例: > - set winlist [$buf windows] - foreach win $winlist { $win height 4 } -< 可能なオプションについては|tcl-window-cmds|を参照。 - - $buf command [-quiet] {cmd} *tcl-buffer-command* - $buf expr {expr} *tcl-buffer-expr* - $buf option {opt} [val] *tcl-buffer-option* - これらは、カレントバッファではなく、$bufで表されるバッファコンテクス - トにおいて全てが実行されるということ以外は、"::vim::command"などと同 - じである。例えば、'local to buffer"と記されたオプションの設定は、バッ - ファ$bufに作用する。ウィンドウへの作用、あるいは問い合わせは、全てvim - のウィンドウリストの内でこのバッファを表示している最初のウィンドウ(す - なわち、"$buf windows"で最初に返されるエントリ)に対して行われる。より - 詳しい情報は、|tcl-command|、|tcl-expr|、|tcl-option|を参照。 - 例: > - if { [$buf option modified] } { $buf command "w" } - -============================================================================== -6. その他; Tcl からの出力 *tcl-misc* *tcl-output* - -標準Tclコマンド"exit"と"catch"は、カスタムバージョンのものと置き換えられてい -る。"exit"は、現在のTclスクリプトを終了してvimに戻り、Tclインタープリタを破棄 -する。その後、":tcl"が呼出されたときに、新しいTclインタープリタが作成される。 -"exit"は、vimを終了させることはない! "catch"は、"exit"でのスクリプトの終了を -妨げることがない点を除けば、標準のものと同じである。終了コードが0でないとき -(exit code != 0)、Tclスクリプトを呼出したexコマンドはエラーを返す。 - -2つの新しいI/Oストリーム、"vimout"、"vimerr"がTclから利用可能である。これらに -向けられた全ての出力は、それぞれvimの情報メッセージとエラーメッセージとして、 -メッセージエリアに表示される。標準Tcl出力ストリームstdoutとstderrは、普通の -"puts"コマンドでvimにメッセージを表示できるよう、vimoutとvimerrに割当てられる。 - -============================================================================== -7. 既知のバグと問題点 *tcl-bugs* - -Tcl内部から、("::vim::command"を介して)Tclのexコマンドを呼出すと、予期できない -副作用を起こす可能性がある。このコマンドは、"::vim::command"を安全な子インター -プリタ内で利用可能にするため、その子インタープリタを不安定にして、標準のイン -タープリタと同じ能力を持つ新しいインタープリタを作る。(ネストされた :tcl* 呼び -出しをブロックしたり、安全なインタープリタから新しい安全なインタープリタのみを -呼出すよう保証することは簡単なことだが、それは不適切である - vimの設定によ -り、"::vim::command"は他の多くのスクリプト言語の任意のコードを実行することがで -きるからである。)この新しいインタープリタ内での"exit"呼出しは、古いインタープ -リタには影響しない; 新しいインタープリタのみを終了し、スクリプト処理は古いイン -タープリタで正常に続けられる。 - -stdinからの入力は、今のところサポートされていない。 - -============================================================================== -8. 例: *tcl-examples* - -いくつかの小さな(そして、たぶん役に立つ)Tclスクリプトを紹介しよう。 - -このスクリプトはバッファ全体の行をソートする(名前のリストとか、そのようなも -のであると仮定する): - set buf $::vim::current(buffer) - set lines [$buf get top bottom] - set lines [lsort -dictionary $lines] - $buf set top bottom $lines - -このスクリプトは、バッファ内の行を反転する。"::vim::lbase"と"$buf last"は、 -どんな行番号の設定でも機能することに注目。 - set buf $::vim::current(buffer) - set t $::vim::lbase - set b [$buf last] - while { $t < $b } { - set tl [$buf get $t] - set bl [$buf get $b] - $buf set $t $bl - $buf set $b $tl - incr t - incr b -1 - } - -このスクリプトは、現在の範囲の各行に連続した番号を付け加える: - set buf $::vim::current(buffer) - set i $::vim::range(start) - set n 1 - while { $i <= $::vim::range(end) } { - set line [$buf get $i] - $buf set $i "$n\t$line" - incr i ; incr n - } - -同じことが、":tcldo"による2つのexコマンドで、より迅速に行える: - :tcl set n 1 - :[range]tcldo set line "$n\t$line" ; incr n - -このプロシージャは、各バッファでexコマンドを走らせる(Ron Aaron氏のアイディア): - proc eachbuf { cmd } { - foreach b [::vim::buffer list] { - $b command $cmd - } - } -こんな風に使う: - :tcl eachbuf %s/foo/bar/g -Tclの文字列とバックスラッシュの置換には気をつけてほしい。疑わしいときは、丸括 -弧でexコマンドを括っておくとよい。 - - -いくつかのTclコマンドをずっとvimで使いたいというなら、それらをファイル(例えば -Unixマシンでは"~/.vimrc.tcl"など)に入れておき、スタートアップファイル(Unixマ -シンなら標準で"~/.vimrc")に以下の行を付け加える: - if has("tcl") - tclfile ~/.vimrc.tcl - endif - -============================================================================== -9. 動的ローディング *tcl-dynamic* - -MS-WindowsではTclライブラリを動的に読み込むことが可能である。これを行うと -|:version|の出力に|+tcl/dyn|が含まれるようになる。 - -この場合、Vimは必要なときだけTclのDLLファイルを検索する。Tclインターフェ -イスを使わないときはDLLを必要としないので、DLLなしでVimを使うことができる。 - -Tclインターフェイスを使うにはTclのDLLが検索パス内に存在しなければならない。 -コンソールウィンドウで"path"とタイプすると、どのディレクトリが検索パスとなるか -表示することができる。 - -DLLの名前はVimをコンパイルした時のTclのバージョンに一致しなければならない。 -現在その名前は"tcl83.dll"である。これはTcl8.3用である。これを確かめるには、 -"gvim.exe"を開き、"tcl\d*.dll\c"を検索する。 - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/indent.jax b/runtime.old/doc/indent.jax deleted file mode 100644 index 6f2febe22..000000000 --- a/runtime.old/doc/indent.jax +++ /dev/null @@ -1,877 +0,0 @@ -*indent.txt* For Vim バージョン 7.3. Last change: 2011 Jul 15 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -このファイルにはCソースコードとその他のファイルのインデント(字下げ)について書 -かれている。 - -1. Cスタイルのソースコードのインデント |C-indenting| -2. スクリプトを用いたインデント |indent-expression| - -============================================================================== -1. Cソースコードのインデント *C-indenting* - -C言語(以下、単に「C」)スタイルのソースコード用インデントの基本はユーザマニュア -ルの|30.2|節で説明されている。 - -VimにはCスタイルの言語を自動的にインデントするためのオプションがある。Cスタイ -ルの言語とは、Java や C++ など、C によく似た書式の言語のことである。これらのオ -プションはインデントだけに影響し、その他の整形は行わない。その他の整形について -は、|format-comments|, |fo-table|, |gq|, |formatting| を参照。 - -コンパイル時に|+smartindent| か |+cindent|機能を無効にした時には、これが動作し -ないことに注意。 - -実際のところインデントには4つの主な方法がある。後のものが有効にされると、前の -ものより優先される('indentexpr' は空でない文字列がセットされたとき)。 -'autoindent' 一つ前の行に基づくインデント -'smartindent' 'autoindent'と同様だが幾つかのC構文を認識し、適切な箇所のイン - デントを増減させる。 -'cindent' 他の2つの方法よりも賢く動作し、設定することで異なるインデント - スタイルにも対応できる。 -'indentexpr' この中で一番融通が利く: ある行のインデントを計算するのにVimス - クリプトを実行する。この方法が有効である(空でない)時にはその他 - のインデントは抑制される。|indent-expression|参照 -この節の残りはオプション'cindent'について述べる。 - -'cindent'はあらゆるCソースを正しくインデントできるわけではないことに注意。Vim -はCコンパイラではない: だから全ての構文は認識できない。1つの要求事項は、トップ -レベル関数が第1桁が'{'で始まっていることである。そうなっていないと宣言との区別 -が困難である。 - -Cのインデントはこの4つのオプションで制御されている: -'cindent' Cの自動インデントを有効化する。 -'cinkeys' 再インデントの引金となる挿入モードでのキーを指定する。 -'cinoptions' 好みのインデントスタイルを設定する。 -'cinwords' 次の行から特別なインデントを開始するキーワードを定義する。 - -オプション'lisp'がオフで'equalprg'が空ならば、オペレータ"="は外部プログラムで -はなくVimの内蔵アルゴリズムを使用してインデントを行なう。 - -Cのファイルに対して自動的に'cindent'をオンにしてそれ以外のファイルに対してはオ -フにする方法は|autocommand|を参照。 -(訳注: バージョン6.0以降はファイル形式プラグイン(|filetype|参照)とバッファロー -カルオプション(|:setlocal|)を使うことが推奨される。VimにはデフォルトでC用の -ファイル形式プラグイン($VIMRUNTIME/ftplug/c.vim)が付属しているから、これを行な -いたい時は単にファイル形式プラグインを有効化するだけで良い。) - - *cinkeys-format* *indentkeys-format* -オプション'cinkeys'はVimのインデントを制御する文字列で、どの文字がタイプされた -時に、どのような状況下でコマンドが実行されたかに応じてインデントを行なうかを定 -義する。これがCインデントの唯一の引金ではないことには注意する。'indentexpr'が -空でない時には代わりに'indentkeys'が使われる。'cinkeys'と'indentkeys'の書式は -同じ。 - -デフォルトは "0{,0},0),:,0#,!^F,o,O,e" で、これにより次のような時にインデント -が行なわれる: - - "0{" 行の先頭で '{' をタイプした時 - "0}" 行の先頭で '}' をタイプした時 - "0)" 行の先頭で ')' をタイプした時 - ":" ラベルやcase文のあとで ':' をタイプした時 - "0#" 行の先頭で '#' をタイプした時 - "!^F" CTRL-Fをタイプした時 (CTRL-F自体は入力されない) - "o" 挿入モードで<CR>をタイプした後、及びノーマルモードで "o" コマ - ンドを使用した時 - "O" ノーマルモードで "O" コマンドを使用した時 - "e" 行の先頭で "else" の2つ目の 'e' をタイプした時 - -各キーの前に置くことのできる文字は次の通り: *i_CTRL-F* -! '!' をキーの前に置くと、Vimはそのキーを挿入するのではなく替わりに現在 - の行のインデントを再調整する。これにより現在の行の再調整するためのコマ - ンドキーを定義することができる。CTRL-Fはそのデフォルトキーである。 - CTRL-Iは<Tab>のアスキーコードだから、CTRL-Iを定義する際に気をつけるこ - と。 -* '*' をキーの前に置くと、Vimはインデント再調整を行なってからそのキーを - 挿入する。'cinkeys' に "*<Return>"が含まれている時には、Vimは新しい行 - を作成する前に現在行のインデントを再調整する。 -0 '0' をキーの前 ('!' や '*'の後ということはあるが) に置くと、Vimはその - キーが行の先頭で入力された時だけインデント再調整を行なう。"=" の前に使 - われた時にはVimはその単語の前に空白文字しか無い時にだけ再調整が行なわ - れる。 - -'!' と '*'のいずれもキーの前に置かれていない時は、Vimはそのキーがタイプされた -時にインデント再調整を行なう。だから ';' を含めれば ';' が入力された行のインデ -ントが調整される。 - -特別なキーの名称: -<> 折カッコは書き下されたキーの名前を意味する。例: "<Up>" や "<Ins>" - (|key-notation|参照)。 -^ キャレット(^)が前に置かれた文字はコントロール文字。例: "^F"はCTRL-F -o "o"コマンドを使用した時もしくはVimが現在の行の下に新しい行を作成した時 - にインデント再調整をする(例えば、挿入モードで<Enter>をタイプした時)。 -O "O"コマンドを使用した時にインデント再調整をする。 -e "else"で始まる行の2つ目の'e'をタイプした時にインデント再調整をする。 -: ラベルやcase文の後に':'をタイプした時にインデント再調整をする。C++の - "class::method"内の":"では再調整しない。どんな":"でもインデントするに - は"<:>"を使用する。 -=word "word"の最後の文字をタイプした時にインデント再調整をする。"word"は実際 - は別の単語の一部かもしれない。"=end"のように設定すれば"endif" や - "endwhile" の "d"をタイプした時に再調整が起こる。しかし"bend"では起こ - らない。補完により"word"で始まる単語が提示された時にも再調整は起こる。 - "0=word"は単語の前に空白文字しかない時に再調整を行なう。 -=~word は =wordに似ているが、大文字小文字の区別がされない。 - -キー 'o', 'O', 'e', '0', '<', '>', '*', ':' それに '!' そのものを入力した時に -インデント再調整を行ないたいのならば、それぞれ "<o>", "<O>", "<e>", "<0>", -"<<>", "<>>", "<*>", "<:>" そして "<!>" を使用する。 - -Enterを押す度ではなくemacsのようにTabキーを押した時にだけインデントを行なうよ -うにするには、次の設定を提案する: > - :set cinkeys=0{,0},:,0#,!<Tab>,!^F -その時には'autoindent'もオフにしたほうが良いかもしれない。 - -NOTE: 現在の行のインデントを手動で変更すれば、Vimはその行についてはcindentの設 -定を無視する。これによりインデントの中で<BS>, <Tab> や <Space>を入力したり、 -CTRL-TやCTRL-Dを使用してインデントを変更した後では、Vimはインデントの再調整を -行なわなくなる。 - - *cinoptions-values* -オプション'cinoptions'ではVimがどのようなインデントを行なうのかを設定する。オ -プション文字の後ろは次のような形式で指定できる (N は任意の数字): - N N スペースインデント - -N N スペースインデント (左方向に) - Ns 'shiftwidth の N 倍のスペース - -Ns 'shiftwidth の N 倍のスペース (左方向に) - -以下のリストでは、"N" は指定したい数値を意味する(数値は負でも良い)。数値のあと -に 's'がある時には、数値に'shiftwidth'の数を掛算して使用する: "1s"は -shiftwidth'に等しく、"2s"は'shiftwidth'の2倍になり、以下同様。 - -小数を使うこともできる: "-0.5s"は'shiftwidth'の半分の負の数である。以下の例で -は'shiftwidth'は4 と想定している。 - *cino->* - >N 通常のインデントで追加される量。インデントを増やすべき行(ifで始 - まる行や、開き波カッコ等)の直後で使用される。 - (省略値 'shiftwidth') - - cino= cino=>2 cino=>2s > - if (cond) if (cond) if (cond) - { { { - foo; foo; foo; - } } } -< - *cino-e* - eN 開き波カッコが行末にある(正確には行頭ではない)時に、カッコ内のイ - ンデントを通常よりも N 追加する。'{'が行頭ある場合と行末にある場 - 合とでインデント量を変更したい時に便利。 - (省略値 0) - - cino= cino=e2 cino=e-2 > - if (cond) { if (cond) { if (cond) { - foo; foo; foo; - } } } - else else else - { { { - bar; bar; bar; - } } } -< - *cino-n* - nN "if", "while" その他の直後、波カッコのセットに囲まれていないなら - ば、その文のインデントを現行よりも N 追加する。文の前に '{' が無 - い時と有る時とでインデント量を変更したい時に便利。 - (省略値 0) - - cino= cino=n2 cino=n-2 > - if (cond) if (cond) if (cond) - foo; foo; foo; - else else else - { { { - bar; bar; bar; - } } } -< - *cino-f* - fN 関数やその他のブロックを示す開き波カッコを N 列目に配置する。こ - れは他の波カッコの内側ではなく、かつ行頭である開き波カッコだけに - 適用される。波カッコの後の続くものはこの波カッコと相対的な位置に - 配置される。 - (省略値 0) - - cino= cino=f.5s cino=f1s > - func() func() func() - { { { - int foo; int foo; int foo; -< - *cino-{* - {N 開き波カッコを現行のインデントから N の位置に配置する。これは他 - の波カッコの内側にある開き波カッコにのみ適用される。 - (省略値 0) - - cino= cino={.5s cino={1s > - if (cond) if (cond) if (cond) - { { { - foo; foo; foo; -< - *cino-}* - }N 閉じ波カッコを対応する開き波カッコから N の位置に配置する。 - (省略値 0) - - cino= cino={2,}-0.5s cino=}2 > - if (cond) if (cond) if (cond) - { { { - foo; foo; foo; - } } } -< - *cino-^* - ^N 開き波カッコが 0 列目にある波カッコセットの内側のインデントを現 - 行よりも N 追加する。これにより関数全体には異なるインデント量を - 指定することができる。 - (省略値 0) - - cino= cino=^-2 cino=^-s > - func() func() func() - { { { - if (cond) if (cond) if (cond) - { { { - a = b; a = b; a = b; - } } } - } } } -< - *cino-L* - LN ジャンプラベルの位置を制御する。N が負数ならラベルは 1 列目に置 - かれる。N が正数ならラベルはインデントから N を引いた位置に置か - れる。(省略値 -1)。 - - cino= cino=L2 cino=Ls > - func() func() func() - { { { - { { { - stmt; stmt; stmt; - LABEL: LABEL: LABEL: - } } } - } } } -< - *cino-:* - :N caseラベルをswitch()のインデントから N の位置に配置する。 - (省略値 'shiftwidth') - - cino= cino=:0 > - switch (x) switch(x) - { { - case 1: case 1: - a = b; a = b; - default: default: - } } -< - *cino-=* - =N caseラベル後に現れる文をラベルのインデントから N の位置に配置す - る。 - (省略値 'shiftwidth') - - cino= cino==10 > - case 11: case 11: a = a + 1; - a = a + 1; b = b + 1; -< - *cino-l* - lN N が 0 でなければVimはcaseラベル後の文の替わりに、caseラベルそ - のものを基本にして配置を行なう。 - (省略値 0) - - cino= cino=l1 > - switch (a) { switch (a) { - case 1: { case 1: { - break; break; - } } -< - *cino-b* - bN N が 0 でなければ、末尾の "break" を case ラベルに合わせて整列 - し、case..break がブロックのように見えるようにする。 - (省略値 0)。 - 1 に設定するときは、'cinkeys' に "0=break" を追加するといいで - しょう。 - - cino= cino=b1 > - switch (x) switch(x) - { { - case 1: case 1: - a = b; a = b; - break; break; - - default: default: - a = 0; a = 0; - break; break; - } } -< - *cino-g* - gN C++のスコープ宣言をそれが含まれるブロックのインデントから N の位 - 置へ配置する。"public:", "protected:", "private:"がスコープ宣言 - になり得る。 - (省略値 'shiftwidth') - - cino= cino=g0 > - { { - public: public: - a = b; a = b; - private: private: - } } -< - *cino-h* - hN C++スコープ宣言後に現れる文をそのラベルのインデントから N の位置 - に配置する。 - (省略値 'shiftwidth') - - cino= cino=h10 > - public: public: a = a + 1; - a = a + 1; b = b + 1; -< - *cino-N* - NN C++ ネームスペースの中を通常のブロックに加えて N 文字インデント - する。 (省略値 0)。 - - cino= cino=N-s > - namespace { namespace { - void function(); void function(); - } } - - namespace my namespace my - { { - void function(); void function(); - } } -< - *cino-p* - pN K&Rスタイルの関数宣言の引数宣言を N 文字インデントする。 - (省略値 'shiftwidth') - - cino= cino=p0 cino=p2s > - func(a, b) func(a, b) func(a, b) - int a; int a; int a; - char b; char b; char b; -< - *cino-t* - tN 関数の戻り型の宣言を N 文字インデントする。 - (省略値 'shiftwidth') - - cino= cino=t0 cino=t7 > - int int int - func() func() func() -< - *cino-i* - iN C++の基底クラスの宣言やコンストラクタが新しい行で始まる時に N 文 - 字インデントする(そうでない時には右端の':'を基準にする)。 - (省略値 'shiftwidth') - - cino= cino=i0 > - class MyClass : class MyClass : - public BaseClass public BaseClass - {} {} - MyClass::MyClass() : MyClass::MyClass() : - BaseClass(3) BaseClass(3) - {} {} -< - *cino-+* - +N 継続行 (次の行へと分割された行) をインデントする。 - 関数の内側では N 文字分インデントする。 (省略値 'shiftwidth') - 関数の外側では、直前の行の末尾にバックスラッシュがあるときは - 2 * N が使われる。 - - cino= cino=+10 > - a = b + 9 * a = b + 9 * - c; c; -< - *cino-c* - cN コメント開始子の後のコメント本文を、配置すべきその他のテキストが - 無ければ、コメント開始子から N 文字でインデントする。 - (省略値 3) |format-comments|も参照。 - - cino= cino=c5 > - /* /* - text. text. - */ */ -< - *cino-C* - CN N が0でなければ、コメント開始子の後に他のテキストがある場合で - も、コメントの行に c フラグで指定した量でインデントがされる。 - (省略値 0) - - cino=c0 cino=c0,C1 > - /******** /******** - text. text. - ********/ ********/ -< (":set comments& comments-=s1:/* comments^=s0:/*" を同時に設定) - - *cino-/* - /N コメント行を N 文字インデントする. - (省略値 0) - - cino= cino=/4 > - a = b; a = b; - /* comment */ /* comment */ - c = d; c = d; -< - *cino-(* - (N 閉じていない丸カッコ内では開き丸カッコのあるラインより N 文字イ - ンデントする。インデント量は1つの丸カッコにつき 'shiftwidth'ずつ - 増える。N が 0 であるか、閉じていない丸カッコが行頭にある時は、 - インデント位置はそのカッコ後の非空白文字の位置になる。 - (省略値 'shiftwidth' * 2) - - cino= cino=(0 > - if (c1 && (c2 || if (c1 && (c2 || - c3)) c3)) - foo; foo; - if (c1 && if (c1 && - (c2 || c3)) (c2 || c3)) - { { -< - *cino-u* - uN Same as (N, but for one level deeper. (default 'shiftwidth'). - (N と同じだが、一段階内側の丸カッコについての設定。 - (省略値 'shiftwidth') - - cino= cino=u2 > - if (c123456789 if (c123456789 - && (c22345 && (c22345 - || c3)) || c3)) -< - *cino-U* - UN N が 0 ではない時には、閉じていない丸カッコが行頭にある場合でも - ( や u で指定したインデントを無視しない。 - (省略値 0) - - cino= or cino=(s cino=(s,U1 > - c = c1 && c = c1 && - ( ( - c2 || c2 || - c3 c3 - ) && c4; ) && c4; -< - *cino-2* - wN N が 0 ではなければ次に示すような場合の、閉じていない丸カッコ後 - の非空白文字ではなく、カッコ直後の位置がインデントに使用される: - - "(0" を使用している時の閉じていない丸カッコ - - "u0" を使用している時の閉じていない丸カッコ - - "U0" を使用している時の行頭の閉じていない丸カッコ - (省略値 0) - - cino=(0 cino=(0,w1 > - if ( c1 if ( c1 - && ( c2 && ( c2 - || c3)) || c3)) - foo; foo; -< - *cino-W* - WN N が 0 でない時に、丸カッコが閉じてなくて、"(0"か"u0"のどちらか - が使われていて閉じていない開き丸カッコが行末にある時、続く行を最 - 初の行から相対的にインデントする。 - (省略値 0) - - cino=(0 cino=(0,W4 > - a_long_line( a_long_line( - argument, argument, - argument); argument); - a_short_line(argument, a_short_line(argument, - argument); argument); -< - *cino-m* - mN N が 0 でない時には、閉じ丸カッコで始まる行を対応する開き丸カッ - コのある行頭に並べる。 - (省略値 0) - - cino=(s cino=(s,m1 > - c = c1 && ( c = c1 && ( - c2 || c2 || - c3 c3 - ) && c4; ) && c4; - if ( if ( - c1 && c2 c1 && c2 - ) ) - foo; foo; -< - *cino-M* - MN Nが非ゼロのとき、閉じ括弧で始まる行のインデントを前の行の最初の - 文字と同じ位置にする(省略値 0)。 - - cino= cino=M1 > - if (cond1 && if (cond1 && - cond2 cond2 - ) ) -< - *java-cinoptions* *java-indenting* *cino-j* - jN Javaの無名クラスを正しくインデントする。Javascript に対しても機 - 能する。値 'N' は現在のところ使われていないが 0 以外(例 'j1')に - しなければならない。'j1'にすることで例えば次のようなコードが正し - くインデントされる: > - - object.add(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - do_something(); - } - }); -< - *javascript-cinoptions* *javascript-indenting* *cino-J* - JN JavaScript のオブジェクト定義を (ラベルと混同せずに) 適切にイン - デントする。'N' は今のところ使用されていないが非ゼロを指定する必 - 要がある (例: 'J1')。このオプションを有効にした場合、もしかした - ら |cino-j| もセットしたほうがいいかもしれません。 > - - var bar = { - foo: { - that: this, - some: ok, - }, - "bar":{ - a : 2, - b: "123abc", - x: 4, - "y": 5 - } - } -< - *cino-)* - )N Vimは N 行まで遡って閉じていないカッコを探す。これはカッコを探す - のにかかる時間を制限する。 - (省略値 20) - - *cino-star* - *N Vimは N 行まで遡って閉じられていないコメントを探す。これはコメン - トの始まりを探すのにかかる時間を制限する。 - N 行以降で /* */ コメントがインデントされない、というときはこの - オプションを設定してください。 - (省略値 70行) - - *cino-#* - #N Nがゼロでないときは'#'で始まるshell/Perlのコメントを認識する。N - の既定値はゼロであり、'#'のコメントを認識しない。'#'で始まる行は - プリプロセッサ行としても認識されることに注意。 - - -省略値を全て並べるとこうなる: - cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, - c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 - -次のような場合にはVimは行頭を1列目に持っていく: -- 'cinkeys'が '#' を含み行が '#' (プリプロセッサ命令)で始まる場合 -- 行がラベル ("case" と "default" 以外のキーワードの後に ':' があるもの) で始 - まり、'cinoptions' に正数を持った 'L' フラグがない場合。 -- インデントの組合わせの結果、その行のインデント量が0以下になった場合。 - -============================================================================== -2. スクリプトを用いたインデント *indent-expression* - -融通の利くインデントの基本はユーザマニュアルの|30.3|節で説明されている。 - -独自にインデントファイルを書きたいならば、オプション'indentexpr'を設定しなけれ -ばならない。同時にオプション'indentkeys'を設定すると便利だろう。インデントファ -イルの例は$VIMRUNTIME/indentディレクトリを参照。 - - -インデントファイルについての覚書 ~ - - -FORTRAN *ft-fortran-indent* - -Block if、select case、where、forall 構造がインデントされる。さらに type、 -interface、associate、block、enum 構造も。サブルーチン、関数、モジュール、プロ -グラムブロックのインデントは任意。コメント、ラベル付き文、そして2行にまたがっ -た行は、Fortranが自由形式のソースではインデントされるが、一方Fortranが固定形式 -ソースの場合には左余白が言語仕様により決定されているのでインデントされない。そ -れ故に固定形式ソースを使っている時にはラベル付き文と2行にまたがった行について -は手動でインデントを修正する必要がある。ソース形式の判定に使われている方法につ -いてのさらなる議論は|ft-fortran-syntax|を参照のこと。 - -Doループ ~ -デフォルトでは全てのdoループはインデントされない。Fortranでは、ループはラベル -付けされたほとんど任意の型の実行可能な文で(場合によっては多重に)終わるので、do -ループは非構造的になる。これを正しくインデントするにはコンパイラ級の構文解析が -必要になる。任意の型の実行可能文で終わるdoループを持っていたとしても、古いコー -ドであればTidy (http://www.unb.ca/chem/ajit/f_tidy.htm) のように念入りに作られ -たプログラムでインデントすることはできる。構造化do/continueループも、continue -文がdoループを終了する以外の目的でも使用されるので、インデントせずに残される。 -Tidyのようなプログラムは構造化do/continueループをdo/enddo形式に変換することが -できる。do/enddoタイプのdoループならばインデントすることができる。do/enddoの形 -の構造化されたループしか使わないのならば、.vimrcで以下のようにfortran_do_enddo -変数を設定してそのことを宣言するべきである: > - - let fortran_do_enddo=1 - -このようなすればdoループはインデントされる。例えば拡張子が.f90 であるファイル -の中にある全てのループがdo/enddoタイプだけならば、このようなautocommandを使っ -てのバッファフラグを設定することができる: > - - au! BufRead,BufNewFile *.f90 let b:fortran_do_enddo=1 - -こうすれば .f90 のファイル内の do ループはインデントし、それ以外、例えば拡張子 -が .for の Fortran のファイルのループはインデントせずに残すことができる。 - -プログラム単位 ~ -プログラム単位 (サブルーチン、関数、モジュール、プログラムブロック) のインデン -トは初期設定では有効になっている。軽くてスクリーン幅指向のインデントスタイルが -好みなら無効化することができる。すべての Fortran ファイルでプログラム単位のイ -ンデントを無効化するにはグローバル変数の fortran_indent_less を .vimrc で設定 -する。 > - - let fortran_indent_less=1 - -バッファ単位で無効化したい場合はバッファローカル変数を設定する。 > - - let b:fortran_indent_less=1 - - -PHP *ft-php-indent* *php-indent* *php-indenting* - -NOTE: |syntax| がオンのときのみ PHP のファイルは正しくインデントされる。 - -'fileformat' を "unix" にしている場合、文字 '\r' が改行の前にあると、インデ -ントは正しく行われない。これらの不要な文字を削除するには次のコマンドを使う: > - - :%s /\r$//g - -または |:let| コマンドを使って変数 PHP_removeCRwhenUnix に 1 をセットすると、 -PHP ファイルを読み込んだとき、BufRead のタイミングで自動的にこれらが削除され -る(そのとき特にメッセージは表示されない)。 - -オプション: ~ - -下記の変数をセットすることで、PHP のインデントをカスタマイズできる。 - - *php-comment* -デフォルトでは有効になっているコメントの自動整形を無効化するには -('formatoptions' に従うようにするには)次のようにする: > - :let g:PHP_autoformatcomment = 0 - -これをしない場合、'formatoptions' から 't' が除かれ、"qrowcb" が加えられる。 -詳しくは |fo-table| を参照。 -------------- - -すべての PHP の行に対しインデントを増やすには、次のようにする: > - :let g:PHP_default_indenting = N - -ここで N は整数。N 個の 'shiftwidth' 分のインデントが追加される。例として -N = 1 の場合、次のようになる: -> - <?php - if (!isset($History_lst_sel)) - if (!isset($History_lst_sel)) - if (!isset($History_lst_sel)) { - $History_lst_sel=0; - } else - $foo="bar"; - - $command_hist = TRUE; - ?> -(<?php タグよりコードの方が 1 段階多くインデントされている) -------------- - -PHP タグを囲まれているコードとしてインデントする: > - :let g:PHP_outdentphpescape = 0 -------------- - -'fileformat' を "unix" にしているとき、自動的に '\r' を削除するには次のよう -にする: > - :let g:PHP_removeCRwhenUnix = 1 -------------- - -波カッコ {} をその内側と同じインデントレベルにするには: > - :let g:PHP_BracesAtCodeLevel = 1 - -すると、次のようになる: > - if ($foo) - { - foo(); - } -デフォルトの場合: > - if ($foo) - { - foo(); - } - -NOTE: このオプションをオンにすると、最適化の一部が効かなくなるため、インデ - ントが少し遅くなる。 -------------- - -switch() ブロック内の 'case:' と 'default:' をインデントさせるには: > - :let g:PHP_vintage_case_default_indent = 1 - -(PHP では 'case/default' ブロックの中で波カッコは不要なので初期設定では余計な -インデントを避けるために 'switch()' と同じレベルにインデントされる。) - - -PYTHON *ft-python-indent* - -以下の状況のためにインデントの量を設定することができる。この例は既定である。 -後で'shiftwidth'の値を変更するために変数に式を設定しておく。 - -開き括弧の後のインデント: > - let g:pyindent_open_paren = '&sw * 2' -ネストした括弧の後のインデント: > - let g:pyindent_nested_paren = '&sw' -継続行のインデント: > - let g:pyindent_continue = '&sw * 2' - -SHELL *ft-sh-indent* - -シェルファイルの様々な状況に適用されるインデント量を調整するには、|Dictionary| -b:sh_indent_defaults の以下のキーを設定するか、またはインデント量を計算して返 -す関数への参照|Funcref|を用いる。 - -b:sh_indent_options['default'] インデント量の既定値。 - -b:sh_indent_options['continuation-line'] - 継続行に対して追加されるインデント量。 - (実際には実装されていない) - -b:sh_indent_options['case-labels'] - caseのラベルに対して追加されるインデント量。 - -b:sh_indent_options['case-statements'] - caseの文に対して追加されるインデント量。 - -b:sh_indent_options['case-breaks'] - caseのbreakに対して追加(あるいは削減)されるイ - ンデント量。 - -VERILOG *ft-verilog-indent* - -一般的なブロック文であるif, for, case, always, initial, function, specify, そ -してbegin等などはインデントされる。moduleブロック文(最初のレベルのブロック)は -デフォルトではインデントされない。次のように.vimrcで以下の変数を設定するとその -インデントを有効化できる: > - - let b:verilog_indent_modules = 1 - -これによりmoduleブロックがインデントされる。これをやめるには変数を削除すれば良 -い: > - - :unlet b:verilog_indent_modules - -Verilogのファイルにだけこの変数を設定するには、次の設定が使える: > - - au BufReadPost * if exists("b:current_syntax") - au BufReadPost * if b:current_syntax == "verilog" - au BufReadPost * let b:verilog_indent_modules = 1 - au BufReadPost * endif - au BufReadPost * endif - -その上、インデントの幅を変更するのに変数b:verilog_indent_widthを設定できる -(省略値 'shiftwidth'): > - - let b:verilog_indent_width = 4 - let b:verilog_indent_width = &sw * 2 - -さらに、デバッグ目的でverboseモードを有効化できる: > - - let b:verilog_indent_verbose = 1 - -メッセージを表示できるようにするために、先に":set cmdheight=2"を実行することを -確認すること。 - - -VHDL *ft-vhdl-indent* - -generic/port 文の桁揃えが自動的に行われる。これによって、次のように桁揃えさ -れる: > - - ENTITY sync IS - PORT ( - clk : IN STD_LOGIC; - reset_n : IN STD_LOGIC; - data_input : IN STD_LOGIC; - data_out : OUT STD_LOGIC - ); - END ENTITY sync; - -これをオフにするには、次を .vimrc に加える > - - let g:vhdl_indent_genportmap = 0 - -すると、先ほどの例が次のように変わる: > - - ENTITY sync IS - PORT ( - clk : IN STD_LOGIC; - reset_n : IN STD_LOGIC; - data_input : IN STD_LOGIC; - data_out : OUT STD_LOGIC - ); - END ENTITY sync; - ----------------------------------------- - -デフォルトで "<=" の右辺の桁揃えが行われる。例: > - - sig_out <= (bus_a(1) AND - (sig_b OR sig_c)) OR - (bus_a(0) AND sig_d); - -これをオフにするには次を ~/.vimrc に加える。 - - let g:vhdl_indent_rhsassign = 0 - -すると先ほどの例が次のように変わる: > - - sig_out <= (bus_a(1) AND - (sig_b OR sig_c)) OR - (bus_a(0) AND sig_d); - ----------------------------------------- - -"-- " で始まるコメント行は、 1 行前のコメント行と同じインデントになる。 -"--" の後にスペースがついていなければならないことに注意。 - -例: > - - sig_a <= sig_b; -- start of a comment - -- continuation of the comment - -- more of the same comment - -インサートモードでは、"-- " (スペース " " に注意)をタイプしたあと、CTRL-F を -押すと現在行の "-- " を前の行の "--" に揃えることができる。 - -1 行前が "--" を含んでいない場合、その行は下方の「空行でもコメントでもない行」 -と同じインデントになる。 - -以下のコードをインデントすると: > - - sig_c <= sig_d; -- comment 0 - -- comment 1 - -- comment 2 - --debug_code: - --PROCESS(debug_in) - --BEGIN - -- FOR i IN 15 DOWNTO 0 LOOP - -- debug_out(8*i+7 DOWNTO 8*i) <= debug_in(15-i); - -- END LOOP; - --END PROCESS debug_code; - - -- comment 3 - sig_e <= sig_f; -- comment 4 - -- comment 5 - -次のようになる: > - - sig_c <= sig_d; -- comment 0 - -- comment 1 - -- comment 2 - --debug_code: - --PROCESS(debug_in) - --BEGIN - -- FOR i IN 15 DOWNTO 0 LOOP - -- debug_out(8*i+7 DOWNTO 8*i) <= debug_in(15-i); - -- END LOOP; - --END PROCESS debug_code; - - -- comment 3 - sig_e <= sig_f; -- comment 4 - -- comment 5 - -"--debug_code:" は "--" の後にスペースがないため、"-- comment 2" に揃えられ -てないことに注意。 - -コメントをインデントする処理は、動的な性質のため 2 パスで行われる。1 パス目は -コードがインデントされ、2 パス目は正しくインデントされたコードに沿ってコメン -トがインデントされる。 - - -VIM *ft-vim-indent* - -Vimスクリプトに対しては継続行(バックスラッシュで始まる行)のインデント量を指定 -する変数が1つある: > - - :let g:vim_indent_cont = &sw * 3 - -shiftwidth の 3 倍が既定値である。 - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/index.jax b/runtime.old/doc/index.jax deleted file mode 100644 index 0cc7b50a0..000000000 --- a/runtime.old/doc/index.jax +++ /dev/null @@ -1,1671 +0,0 @@ -*index.txt* For Vim バージョン 7.3. Last change: 2011 Jan 04 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - *index* -このファイルには各モードのすべてのコマンドが列挙されており、タグと短い説明が示 -されている。一覧はアスキーコード順に並んでいる。 - -ヒント: 機能で検索するときは、検索コマンドを使用する。例えば、何かを削除するコ -マンドを検索したいなら、"/削除"を使用する。 - -1. 挿入モード |insert-index| -2. ノーマルモード |normal-index| - 2.1. テキストオブジェクト |objects| - 2.2. ウィンドウコマンド |CTRL-W| - 2.3. 角括弧コマンド |[| - 2.4. 'g' で始まるコマンド |g| - 2.5. 'z' で始まるコマンド |z| -3. ビジュアルモード |visual-index| -4. コマンドライン編集 |ex-edit-index| -5. EX コマンド |ex-cmd-index| - -オプションの概略は help.txt を参照。|option-list| -ビルトイン関数の詳細は|functions|を参照。 -Vim変数の一覧は|vim-variable|を参照。 -全ヘルプ項目の一覧は |help-tags| を参照。 - -============================================================================== -1. 挿入モード *insert-index* - -タグ 文字 挿入モードでの動作 ~ ------------------------------------------------------------------------ -|i_CTRL-@| CTRL-@ 直前に挿入したテキストを挿入し、挿入モードを - 終了する。 -|i_CTRL-A| CTRL-A 直前に挿入したテキストを挿入する。 - CTRL-B 未使用 |i_CTRL-B-gone| -|i_CTRL-C| CTRL-C 'insertmode' がセットされていなければ、短縮入 - 力をチェックせずに挿入モードを終了する。 -|i_CTRL-D| CTRL-D 現在の行から shiftwidth 分のインデントを削除 - する。 -|i_CTRL-E| CTRL-E 下の行のカーソルと同じ位置にある文字を挿入する - CTRL-F 未使用 (しかし標準設定では'cinkeys'の設定によ - りカーソル行を再インデントするのに使用される) -|i_CTRL-G_j| CTRL-G CTRL-J 下の行へ移動。カーソルは挿入開始位置と同じ列へ -|i_CTRL-G_j| CTRL-G j 下の行へ移動。カーソルは挿入開始位置と同じ列へ -|i_CTRL-G_j| CTRL-G <Down> 下の行へ移動。カーソルは挿入開始位置と同じ列へ -|i_CTRL-G_k| CTRL-G CTRL-K 上の行へ移動。カーソルは挿入開始位置と同じ列へ -|i_CTRL-G_k| CTRL-G k 上の行へ移動。カーソルは挿入開始位置と同じ列へ -|i_CTRL-G_k| CTRL-G <Up> 上の行へ移動。カーソルは挿入開始位置と同じ列へ -|i_CTRL-G_u| CTRL-G u アンドゥで元に戻す地点を新たに設定 -|i_<BS>| <BS> カーソルの前にある文字を削除する。 -|i_digraph| {char1}<BS>{char2} - 二重字(digraph)を入力する。 ('digraph' オプ - ションがオンのとき) -|i_CTRL-H| CTRL-H <BS> と同じ -|i_<Tab>| <Tab> <Tab> 文字を挿入 -|i_CTRL-I| CTRL-I <Tab> と同じ -|i_<NL>| <NL> <CR> と同じ -|i_CTRL-J| CTRL-J <CR> と同じ -|i_CTRL-K| CTRL-K {char1} {char2} - 二重字(digraph)を入力する。 -|i_CTRL-L| CTRL-L 'insertmode'がオンのとき、挿入モードを終了する -|i_<CR>| <CR> 改行を入力。 -|i_CTRL-M| CTRL-M <CR> と同じ。 -|i_CTRL-N| CTRL-N カーソルの前にあるキーワードで前方検索し、一致 - した単語で補完する。 -|i_CTRL-O| CTRL-O 1回コマンドを実行し、挿入モードに戻る。 -|i_CTRL-P| CTRL-P カーソルの前にあるキーワードで後方検索し、一致 - した単語で補完する。 -|i_CTRL-Q| CTRL-Q CTRL-V と同じ。端末制御に使用されている場合を - 除く。 -|i_CTRL-R| CTRL-R {0-9a-z"%#*:=} - レジスタに保存されている文字列を挿入。 -|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:=} - レジスタに保存されている文字列そのものを挿入。 -|i_CTRL-R_CTRL-O| CTRL-R CTRL-O {0-9a-z"%#*:=} - レジスタに保存されている文字列そのものを挿入。 - インデントは挿入しない。 -|i_CTRL-R_CTRL-P| CTRL-R CTRL-P {0-9a-z"%#*:=} - レジスタに保存されている文字列そのものを挿入。 - インデントは固定。 - CTRL-S (端末制御に使用) -|i_CTRL-T| CTRL-T 現在の行に shiftwidth 分のインデントを挿入する。 -|i_CTRL-U| CTRL-U 現在の行に挿入したすべての文字を削除する。 -|i_CTRL-V| CTRL-V {char} 続いて入力する数字以外の文字をそのまま挿入する -|i_CTRL-V_digit| CTRL-V {number} 続いて入力する3桁の10進数で1バイト文字を指定 - して挿入 -|i_CTRL-W| CTRL-W カーソルの前にある単語を削除する。 -|i_CTRL-X| CTRL-X {mode} CTRL-X サブモードに移行する。 - 詳しくは|i_CTRL-X_index|を参照。 -|i_CTRL-Y| CTRL-Y 上の行のカーソルと同じ位置にある文字を挿入する -|i_CTRL-Z| CTRL-Z 'insertmode' がセットされている場合: Vim をサ - スペンドする。 -|i_<Esc>| <Esc> 挿入モードを終了する。('insertmode' がセットさ - れていない場合) -|i_CTRL-[| CTRL-[ <Esc> と同じ。 -|i_CTRL-\_CTRL-N| CTRL-\ CTRL-N ノーマルモードへ移行。 -|i_CTRL-\_CTRL-G| CTRL-\ CTRL-G 'insertmode'に合わせたモードへ移行。 - CTRL-\ a - z 将来の拡張のために予約。 - CTRL-\ others 未使用 -|i_CTRL-]| CTRL-] 短縮入力を適用する - CTRL-^ マップ|:lmap|の有効無効を切り替える -|i_CTRL-_| CTRL-_ 'allowrevins' がオンのとき、言語を切り替える。 - (ヘブライ語、ペルシア語) {コンパイル時に - |+rightleft| オプションを有効にしたときのみ} - <Space> to '~' 未使用。ただし CTRL-D が後に続く '0' と '^' は - 除く。 - -|i_0_CTRL-D| 0 CTRL-D 現在の行の全インデントを削除する。 -|i_^_CTRL-D| ^ CTRL-D 現在の行の全インデントを削除し、次の行に復元。 - -|i_<Del>| <Del> カーソル位置の文字を削除。 - - Meta characters (0x80 to 0xff, 128 to 255) - 未使用 - -|i_<Left>| <Left> カーソルを1文字左へ移動。 -|i_<S-Left>| <S-Left> カーソルを1単語左へ移動。 -|i_<C-Left>| <C-Left> カーソルを1単語左へ移動。 -|i_<Right>| <Right> カーソルを1文字右へ移動。 -|i_<S-Right>| <S-Right> カーソルを1単語右へ移動。 -|i_<C-Right>| <C-Right> カーソルを1単語右へ移動。 -|i_<Up>| <Up> カーソルを1行上へ移動。 -|i_<S-Up>| <S-Up> <PageUp> と同じ。 -|i_<Down>| <Down> カーソルを1行下へ移動。 -|i_<S-Down>| <S-Down> <PageDown> と同じ。 -|i_<Home>| <Home> カーソルを行の先頭へ移動。 -|i_<C-Home>| <C-Home> カーソルを行の先頭へ移動。 -|i_<End>| <End> カーソルを行末へ移動。 -|i_<C-End>| <C-End> カーソルを行末へ移動。 -|i_<PageUp>| <PageUp> 1画面上へスクロール。 -|i_<PageDown>| <PageDown> 1画面下へスクロール。 -|i_<F1>| <F1> <Help> と同じ。 -|i_<Help>| <Help> 挿入モードを終了し、ヘルプウィンドウを表示する。 -|i_<Insert>| <Insert> 挿入/上書きモードをトグルする。 -|i_<LeftMouse>| <LeftMouse> カーソルをマウスクリックした位置へ移動。 -|i_<ScrollWheelDown>| <ScrollWheelDown> ウィンドウを3行下へ -|i_<S-ScrollWheelDown>| <S-ScrollWheelDown> ウィンドウを1画面下ヘ -|i_<ScrollWheelUp>| <ScrollWheelUp> ウィンドウを3行上へ -|i_<S-ScrollWheelUp>| <S-ScrollWheelUp> ウィンドウを1画面上へ -|i_<ScrollWheelLeft>| <ScrollWheelLeft> ウィンドウを6列左へ -|i_<S-ScrollWheelLeft>| <S-ScrollWheelLeft> ウィンドウを1画面左へ -|i_<ScrollWheelRight>| <ScrollWheelRight> ウィンドウを6列右へ -|i_<S-ScrollWheelRight>| <S-ScrollWheelRight> ウィンドウを1画面右へ - -CTRL-X サブモードで使用するコマンド *i_CTRL-X_index* - -|i_CTRL-X_CTRL-D| CTRL-X CTRL-D 定義済みの識別子を補完。 -|i_CTRL-X_CTRL-E| CTRL-X CTRL-E ウィンドウを上へスクロール。 -|i_CTRL-X_CTRL-F| CTRL-X CTRL-F ファイル名を補完。 -|i_CTRL-X_CTRL-I| CTRL-X CTRL-I 識別子を補完。 -|i_CTRL-X_CTRL-K| CTRL-X CTRL-K 辞書の識別子を補完。 -|i_CTRL-X_CTRL-L| CTRL-X CTRL-L 行全体を補完。 -|i_CTRL-X_CTRL-N| CTRL-X CTRL-N 次の補完候補。 -|i_CTRL-X_CTRL-O| CTRL-X CTRL-O オムニ補完 -|i_CTRL-X_CTRL-P| CTRL-X CTRL-P 前の補完候補。 -|i_CTRL-X_CTRL-S| CTRL-X CTRL-S スペリング補完 -|i_CTRL-X_CTRL-T| CTRL-X CTRL-T 類語による補完 -|i_CTRL-X_CTRL-Y| CTRL-X CTRL-Y ウィンドウを下へスクロール。 -|i_CTRL-X_CTRL-U| CTRL-X CTRL-U 'completefunc'による補完 -|i_CTRL-X_CTRL-V| CTRL-X CTRL-V コマンドラインと同様な補完 -|i_CTRL-X_CTRL-]| CTRL-X CTRL-] タグを補完。 -|i_CTRL-X_s| CTRL-X s スペリング補完 -{コンパイル時に |+insert_expand| オプションを有効にしたときのみ利用可能} - -============================================================================== -2. ノーマルモード *normal-index* - -CHAR 空白以外の文字 -WORD 空白以外の文字からなる文字列 -N コマンドの前に入力される数字 -{motion} カーソル移動コマンド -Nmove {motion} でカーソルが通過するテキスト -SECTION セクション。'{'ではなく'}'の場合もある|section| - -Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 - -タグ 文字 注 ノーマルモードでの動作 ~ ------------------------------------------------------------------------------- - CTRL-@ 未使用 -|CTRL-A| CTRL-A 2 カーソル位置/カーソルより後ろにある数字に N - を加える。 -|CTRL-B| CTRL-B 1 ウィンドウを N 画面上へスクロール。 -|CTRL-C| CTRL-C 現在の(検索)コマンドを中断する。 -|CTRL-D| CTRL-D ウィンドウを N 行下へスクロールする。 - (省略時は半画面) -|CTRL-E| CTRL-E ウィンドウを N 行下へスクロールする。 -|CTRL-F| CTRL-F 1 ウィンドウを N 画面下へスクロール。 -|CTRL-G| CTRL-G 現在のファイル名とカーソル位置を表示する。 -|<BS>| <BS> 1 "h" と同じ。 -|CTRL-H| CTRL-H 1 "h" と同じ。 -|<Tab>| <Tab> 1 N 個先のジャンプリストの場所へジャンプする。 -|CTRL-I| CTRL-I 1 <Tab> と同じ。 -|<NL>| <NL> 1 "j" と同じ。 -|CTRL-J| CTRL-J 1 "j" と同じ。 - CTRL-K 未使用 -|CTRL-L| CTRL-L 画面の再描画。 -|<CR>| <CR> 1 カーソルを N 行下の先頭の CHAR へ移動。 -|CTRL-M| CTRL-M 1 <CR> と同じ。 -|CTRL-N| CTRL-N 1 "j" と同じ。 -|CTRL-O| CTRL-O 1 N 個前のジャンプリストの場所へジャンプする。 -|CTRL-P| CTRL-P 1 "k" と同じ。 - CTRL-Q (端末制御に使用) -|CTRL-R| CTRL-R 2 'u' でアンドゥした変更をリドゥする。 - CTRL-S (端末制御に使用) -|CTRL-T| CTRL-T N 個前のタグリストの場所へジャンプする。 -|CTRL-U| CTRL-U ウィンドウを N 行上へスクロール。 - (省略時は半画面) -|CTRL-V| CTRL-V ブロック指定のビジュアルモードを開始する。 -|CTRL-W| CTRL-W {char} ウィンドウコマンド、|CTRL-W| を参照。 -|CTRL-X| CTRL-X 2 カーソル位置/カーソルより後ろにある数字に N - を減じる。 -|CTRL-Y| CTRL-Y ウィンドウを N 行下へスクロール。 -|CTRL-Z| CTRL-Z Vim の実行を中断。(新しいシェルを開始する) - CTRL-[ <Esc> 未使用 -|CTRL-\_CTRL-N| CTRL-\ CTRL-N ノーマルモードへ移行。(つまり何もしない) -|CTRL-\_CTRL-G| CTRL-\ CTRL-G 'insertmode'に合わせたモードへ移行。 - CTRL-\ a - z 将来の拡張のために予約。 - CTRL-\ others 未使用 -|CTRL-]| CTRL-] カーソル位置の単語を :ta で検索する。 -|CTRL-^| CTRL-^ N 番目のファイルを編集する。(":e #N" と同じ) - CTRL-_ 未使用 - -|<Space>| <Space> 1 "l" と同じ。 -|!| !{motion}{filter} - 2 Nmove のテキストを {filter} コマンドでフィ - ルタする。 -|!!| !!{filter} 2 N 行を {filter} コマンドでフィルタする。 -|quote| "{a-zA-Z0-9.%#:-"} 削除、ヤンク、プットコマンドでレジスタ - {a-zA-Z0-9.%#:-"} (大文字は既存のレジスタに - 追加する)を指定するために使用する。({.%#:} - はプットコマンドでのみ有効) -|#| # 1 カーソル位置の単語で後方検索し、N 番目に見 - つかった場所へ移動。 -|$| $ 1 カーソルを N 行下の行末へ移動。 -|%| % 1 現在の行にある次の括弧やC風コメント(/* */) - の対、対応するプリプロセッサなどに移動 -|N%| {count}% 1 ファイルの N パーセントの位置に移動。 -|&| & 2 最後に実行した :s コマンドを繰り返す。 -|'| '{a-zA-Z0-9} 1 {a-zA-Z0-9} でマークした行の先頭の CHAR へ - カーソルを移動。 -|''| '' 1 最後のジャンプの前にいた行の先頭の CHAR へ - カーソルを移動。 -|'(| '( 1 現在の文の文頭がある行の先頭の CHAR へ移動 -|')| ') 1 現在の文の文末がある行の先頭の CHAR へ移動 -|'<| '< 1 カレントバッファで選択されていた選択範囲の - 最初の行の先頭の CHAR へカーソルを移動。 -|'>| '> 1 カレントバッファで選択されていた選択範囲の - 最後の行の先頭の CHAR へカーソルを移動。 -|'[| '[ 1 最後に編集したテキストまたは挿入したテキス - トの先頭行の先頭の CHAR へカーソルを移動。 -|']| '] 1 最後に編集したテキストまたは挿入したテキス - トの末尾行の先頭の CHAR へカーソルを移動。 -|'{| '{ 1 現在の段落の最初の行の先頭の CHAR へ移動 -|'}| '} 1 現在の段落の最後の行の先頭の CHAR へ移動 -|(| ( 1 カーソルを N 文だけ戻す。 -|)| ) 1 カーソルを N 文だけ先に進める。 -|star| * 1 カーソル位置の単語を前方検索し、N 番目に見 - つかった位置へ移動。 -|+| + 1 <CR>と同じ。 -|,| , 1 最後に実行した f, t, F または T コマンドを - 逆向きに N 回繰り返す。 -|-| - 1 カーソルを N 行上の先頭の CHAR へ移動。 -|.| . 2 最後の編集を N 回繰り返す。 -|/| /{pattern}<CR> 1 {pattern} で前方検索し、N 番目に見つかった - 位置へ移動。 -|/<CR>| /<CR> 1 最後の検索の {pattern} で前方検索。 -|count| 0 1 カーソルを行頭文字へ移動。 -|count| 1 カウントを指定するためにコマンドの前に入力 -|count| 2 " -|count| 3 " -|count| 4 " -|count| 5 " -|count| 6 " -|count| 7 " -|count| 8 " -|count| 9 " -|:| : 1 Ex コマンドの入力開始。 -|N:| {count}: カレント行から N-1 行下の行までの範囲で有効 - となる Ex コマンドの入力開始。 -|;| ; 1 最後の f, t, F または T を N 回繰り返す。 -|<| <{motion} 2 Nmove の行を 'shiftwidth' 分だけ左へシフト。 -|<<| << 2 N 行を 'shiftwidth' 分だけ左へシフト。 -|=| ={motion} 2 Nmove の行のインデントを調整する。 -|==| == 2 N 行のインデントを調整する。 -|>| >{motion} 2 Nmove の行を 'shiftwidth' 分だけ右へシフト。 -|>>| >> 2 N 行を 'shiftwidth' 分だけ右へシフト。 -|?| ?{pattern}<CR> 1 {pattern} で後方検索し、N 番目に見つかった - 位置へ移動。 -|?<CR>| ?<CR> 1 最後の検索の {pattern} で後方検索。 -|@| @{a-z} 2 レジスタ {a-z} の内容を N 回実行する。 -|@:| @: 最後の ":" コマンドを N 回実行する。 -|@@| @@ 2 最後の @{a-z} コマンドを N 回実行する。 -|A| A 2 行末に N 回テキストを追加する。 -|B| B 1 カーソルを N WORD だけ戻す。 -|C| ["x]C 2 カーソル位置から行末までと続く N-1 行のテキ - ストを削除し[バッファ x に保存して]、テキス - トを入力する; "c$" と同じ。 -|D| ["x]D 2 カーソル位置から行末までと続く N-1 行のテキ - ストを削除する[バッファ x に保存する]; "d$" - と同じ。 -|E| E 1 カーソルを N 先の WORD の末尾へ移動。 -|F| F{char} 1 カーソルを左方向へ N 個目の {char} に移動。 -|G| G 1 カーソルを N 行目に移動、省略時は最後の行。 -|H| H 1 カーソルを画面の上から N 行目に移動。 -|I| I 2 行の先頭の CHAR の前に N 回テキストを挿入。 -|J| J 2 N 行結合。省略時は2行。 -|K| K カーソル位置のキーワードを 'keywordprg' で - 調べる。 -|L| L 1 カーソルを画面の下から N 行目に移動。 -|M| M 1 カーソルを画面の中央の行に移動。 -|N| N 1 最後に実行した '/' または '?' を逆方向に N - 回実行する。 -|O| O 2 カーソルの上に新規に行を挿入し、テキストを - 入力、N 回繰り返す。 -|P| ["x]P 2 カーソルの前に[バッファ x の]テキストを N - 回挿入する。 -|Q| Q "Ex" モードに移行する。 -|R| R 2 上書きモードに移行する: 今ある文字を上書き - する、入力したテキストを N-1 回繰り返す。 -|S| ["x]S 2 N 行削除し[バッファ x に保存]、テキストの挿 - 入開始; "cc"と同じ。 -|T| T{char} 1 カーソルを左方向へ N 個目の {char} の直後ま - で移動。 -|U| U 2 1行中の最近の変更をすべて取り消す。 -|V| V 行指定のビジュアルモードを開始する。 -|W| W 1 カーソルを N WORD 先に進める。 -|X| ["x]X 2 カーソルの前にある N 文字を削除する[バッファ - x に保存]。 -|Y| ["x]Y N 行[バッファ x に]ヤンクする; "yy" と同じ。 -|ZZ| ZZ カレントファイルが編集されていたら、保存し - て編集を終了する。 -|ZQ| ZQ カレントファイルの編集を終了する。 -|[| [{char} 大括弧コマンド (下の|[|を参照) - \ 未使用 -|]| ]{char} 大括弧コマンド (下の|]|を参照) -|^| ^ 1 カーソルを行の先頭の CHAR へ移動。 -|_| _ 1 カーソルを N-1 行下の先頭の CHAR へ移動。 -|`| `{a-zA-Z0-9} 1 カーソルをマーク {a-zA-Z0-9} へ移動。 -|`(| `( 1 現在の文の文頭へ移動 -|`)| `) 1 現在の文の文末へ移動 -|`<| `< 1 最後に選択されていた選択範囲の先頭に移動 -|`>| `> 1 最後に選択されていた選択範囲の末尾に移動 -|`[| `[ 1 最後に編集したテキストまたは挿入したテキス - トの先頭へカーソルを移動。 -|`]| `] 1 最後に編集したテキストまたは挿入したテキス - トの末尾へカーソルを移動。 -|``| `` 1 最後のジャンプの前にいた位置へカーソルを移 - 動。 -|`{| `{ 1 現在の段落の最初へ移動 -|`}| `} 1 現在の段落の最後へ移動 -|a| a 2 カーソルの直後に N 回テキストを追加する。 -|b| b 1 カーソルを N ワードだけ戻す。 -|c| ["x]c{motion} 2 Nmove のテキストを削除[バッファ x に保存]し、 - 挿入モードへ移行。 -|cc| ["x]cc 2 N 行削除[バッファ x に保存]し、挿入モードへ - 移行。 -|d| ["x]d{motion} 2 Nmove のテキストを削除[バッファ x に保存]。 -|dd| ["x]dd 2 N 行削除[バッファ x に保存]。 -|do| do 2 ":diffget" と同じ。 -|dp| dp 2 ":diffput" と同じ。 -|e| e 1 カーソルを N 先のワードの末尾へ移動。 -|f| f{char} 1 カーソルを右方向へ N 個目の {char} に移動。 -|g| g{char} 拡張コマンド、下の|g|を参照。 -|h| h 1 カーソルを左へ N 文字移動。 -|i| i 2 カーソルの直前に N 回テキストを挿入する。 -|j| j 1 カーソルを N 行下へ移動する。 -|k| k 1 カーソルを N 行上へ移動する。 -|l| l 1 カーソルを右へ N 文字移動。 -|m| m{A-Za-z} カーソル位置にマーク {A-Za-z} をセットする。 -|n| n 1 最後の '/' or '?' を N 回繰り返す。 -|o| o 2 カーソルの下に新規に行を挿入し、テキストを - 入力、N 回繰り返す。 -|p| ["x]p 2 カーソルの後に[バッファ x の]テキストを N - 回挿入する。 -|q| q{0-9a-zA-Z"} 入力した文字をレジスタ {0-9a-zA-Z"} に記録 - する。(大文字なら既存のレジスタに追加) -|q| q (記録中なら) レジスタへの記録を終了する。 -|q:| q: コマンドラインウィンドウで : のコマンドライ - ンを編集する。 -|q/| q/ コマンドラインウィンドウで / のコマンドライ - ンを編集する。 -|q?| q? コマンドらインウィンドウで ? のコマンドライ - ンを編集する。 -|r| r{char} 2 N 文字を {char} で置き換える。 -|s| ["x]s 2 (置換) N 文字削除[バッファ x に保存]し、挿 - 入モードに移行。 -|t| t{char} 1 カーソルを右方向へ N 個目の {char} の直前ま - で移動。 -|u| u 2 変更をアンドゥ。 -|v| v 文字指定のビジュアルモードを開始する。 -|w| w 1 カーソルを N ワード先へ移動。 -|x| ["x]x 2 カーソル位置と直後の N 文字を削除[バッファ - x に保存] -|y| ["x]y{motion} Nmove のテキストを[バッファ x へ]ヤンク。 -|yy| ["x]yy N 行[バッファ x へ]ヤンク。 -|z| z{char} 'z'で始まるコマンドの実行。下記参照|z| -|{| { 1 カーソルを N 段落戻す。 -|bar| | 1 カーソルを N カラムへ移動。 -|}| } 1 カーソルを N 段落進める。 -|~| ~ 2 'tildeop' オフ: カーソル位置の N 文字の大文 - 字小文字を逆転し、カーソルを右へ N 文字移動 - する。 -|~| ~{motion} 'tildeop' オン: Nmove のテキストの大文字小 - 文字を逆転する。 -|<C-End>| <C-End> 1 "G" と同じ。 -|<C-Home>| <C-Home> 1 "gg" と同じ。 -|<C-Left>| <C-Left> 1 "b" と同じ。 -|<C-Home>| <C-Home> 2 "gg" と同じ。 -|<C-Left>| <C-Left> 2 "b" と同じ。 -|<C-LeftMouse>| <C-LeftMouse> マウスクリック位置のキーワードで ":ta" を実 - 行する。 -|<C-Right>| <C-Right> 1 "w" と同じ。 -|<C-RightMouse>| <C-RightMouse> "CTRL-T" と同じ。 -|<Del>| ["x]<Del> 2 "x" と同じ。 -|N<Del>| {count}<Del> 入力した {count} から最後の数字を削除する。 -|<Down>| <Down> 1 "j" と同じ。 -|<End>| <End> 1 "$" と同じ。 -|<F1>| <F1> <Help> と同じ。 -|<Help>| <Help> ヘルプウィンドウを開く。 -|<Home>| <Home> 1 "0" と同じ。 -|<Insert>| <Insert> 2 "i" と同じ。 -|<Left>| <Left> 1 "h" と同じ。 -|<LeftMouse>| <LeftMouse> 1 カーソルをマウスクリック位置へ移動。 -|<MiddleMouse>| <MiddleMouse> 2 マウスクリック位置で実行した "gP" と同じ。 -|<PageDown>| <PageDown> CTRL-F と同じ。 -|<PageUp>| <PageUp> CTRL-B と同じ。 -|<Right>| <Right> 1 "l" と同じ。 -|<RightMouse>| <RightMouse> ビジュアルモードを開始、カーソルをマウスク - リック位置へ移動。 -|<S-Down>| <S-Down> 1 CTRL-F と同じ。 -|<S-Left>| <S-Left> 1 "b" と同じ。 -|<S-LeftMouse>| <S-LeftMouse> マウスクリック位置で実行した "*" と同じ。 -|<S-Right>| <S-Right> 1 "w" と同じ。 -|<S-RightMouse>| <S-RightMouse> マウスクリック位置で実行した "#" と同じ。 -|<S-Up>| <S-Up> 1 CTRL-B と同じ。 -|<Undo>| <Undo> 2 "u" と同じ。 -|<Up>| <Up> 1 "k" と同じ。 -|<ScrollWheelDown>| <ScrollWheelDown> ウィンドウを3行下へ -|<S-ScrollWheelDown>| <S-ScrollWheelDown> ウィンドウを1画面下へ -|<ScrollWheelUp>| <ScrollWheelUp> ウィンドウを3行上へ -|<S-ScrollWheelUp>| <S-ScrollWheelUp> ウィンドウを1画面上へ -|<ScrollWheelLeft>| <ScrollWheelLeft> ウィンドウを6列左へ -|<S-ScrollWheelLeft>| <S-ScrollWheelLeft> ウィンドウを1画面左へ -|<ScrollWheelRight>| <ScrollWheelRight> ウィンドウを6列右へ -|<S-ScrollWheelRight>| <S-ScrollWheelRight> ウィンドウを1画面右へ - -============================================================================== -2.1 テキストオブジェクト *objects* - -以下のコマンドは演算コマンドの後、もしくは、ビジュアルモードでオブジェクトを選 -択する際に使われる。 - - ビジュアルモードと ~ -タグ コマンド オペレータ待機モードでの動作 ~ ------------------------------------------------------------------------------- -|v_aquote| a" ダブルクォートで囲まれた文字列 -|v_a'| a' シングルクォートで囲まれた文字列 -|v_a(| a( ab と同じ。 -|v_a)| a) ab と同じ。 -|v_a<| a< "a <>" '<' から '>' までを選択。 -|v_a>| a> a< と同じ。 -|v_aB| aB "a Block" "[{" から "]}" までを選択(括弧を - 含む)。 -|v_aW| aW "a WORD" (ホワイトスペースを含む) -|v_a[| a[ "a []" '[' から ']' までを選択。 -|v_a]| a] a[ と同じ。 -|v_a`| a` バッククォートで囲まれた文字列 -|v_ab| ab "a block" "[(" から "])" までを選択(括弧を - 含む)。 -|v_ap| ap "a paragraph" (ホワイトスペースを含む) -|v_as| as "a sentence" (ホワイトスペースを含む) -|v_at| at "a tag block" (ホワイトスペースを含む) -|v_aw| aw "a word" (ホワイトスペースを含む) -|v_a{| a{ aB と同じ。 -|v_a}| a} aB と同じ。 -|v_iquote| i" ダブルクォートで囲まれた文字列。ダブル - クォートは含まない。 -|v_i'| i' シングルクォートで囲まれた文字列。シングル - クォートは含まない。 -|v_i(| i( ib と同じ。 -|v_i)| i) ib と同じ。 -|v_i<| i< "inner <>" '<' から '>' までを選択。 -|v_i>| i> i< と同じ。 -|v_iB| iB "inner Block" "[{" から "]}" までを選択。 -|v_iW| iW "inner WORD" -|v_i[| i[ "inner []" '[' から ']' までを選択。 -|v_i]| i] i[ と同じ。 -|v_i`| i` バッククォートで囲まれた文字列。バック - クォートは含まない。 -|v_ib| ib "inner block" "[(" から "])" までを選択。 -|v_ip| ip "inner paragraph" -|v_is| is "inner sentence" -|v_it| it "inner tag block" -|v_iw| iw "inner word" -|v_i{| i{ iB と同じ。 -|v_i}| i} iB と同じ。 - -============================================================================== -2.2 ウィンドウコマンド *CTRL-W* - -タグ コマンド ノーマルモードでの動作 ~ ------------------------------------------------------------------------------- -|CTRL-W_CTRL-B| CTRL-W CTRL-B "CTRL-W b" と同じ。 -|CTRL-W_CTRL-C| CTRL-W CTRL-C "CTRL-W c" と同じ。 -|CTRL-W_CTRL-D| CTRL-W CTRL-D "CTRL-W d" と同じ。 -|CTRL-W_CTRL-F| CTRL-W CTRL-F "CTRL-W f" と同じ。 - CTRL-W CTRL-G "CTRL-W g .." と同じ。 -|CTRL-W_CTRL-H| CTRL-W CTRL-H "CTRL-W h" と同じ。 -|CTRL-W_CTRL-I| CTRL-W CTRL-I "CTRL-W i" と同じ。 -|CTRL-W_CTRL-J| CTRL-W CTRL-J "CTRL-W j" と同じ。 -|CTRL-W_CTRL-K| CTRL-W CTRL-K "CTRL-W k" と同じ。 -|CTRL-W_CTRL-L| CTRL-W CTRL-L "CTRL-W l" と同じ。 -|CTRL-W_CTRL-N| CTRL-W CTRL-N "CTRL-W n" と同じ。 -|CTRL-W_CTRL-O| CTRL-W CTRL-O "CTRL-W o" と同じ。 -|CTRL-W_CTRL-P| CTRL-W CTRL-P "CTRL-W p" と同じ。 -|CTRL-W_CTRL-Q| CTRL-W CTRL-Q "CTRL-W q" と同じ。 -|CTRL-W_CTRL-R| CTRL-W CTRL-R "CTRL-W r" と同じ。 -|CTRL-W_CTRL-S| CTRL-W CTRL-S "CTRL-W s" と同じ。 -|CTRL-W_CTRL-T| CTRL-W CTRL-T "CTRL-W t" と同じ。 -|CTRL-W_CTRL-V| CTRL-W CTRL-V "CTRL-W v" と同じ。 -|CTRL-W_CTRL-W| CTRL-W CTRL-W "CTRL-W w" と同じ。 -|CTRL-W_CTRL-X| CTRL-W CTRL-X "CTRL-W x" と同じ。 -|CTRL-W_CTRL-Z| CTRL-W CTRL-Z "CTRL-W z" と同じ。 -|CTRL-W_CTRL-]| CTRL-W CTRL-] "CTRL-W ]" と同じ。 -|CTRL-W_CTRL-^| CTRL-W CTRL-^ "CTRL-W ^" と同じ。 -|CTRL-W_CTRL-_| CTRL-W CTRL-_ "CTRL-W _" と同じ。 -|CTRL-W_+| CTRL-W + カレントウィンドウの高さを N 行高くする。 -|CTRL-W_-| CTRL-W - カレントウィンドウの高さを N 行低くする。 -|CTRL-W_<| CTRL-W < カレントウィンドウの幅を N 列狭める -|CTRL-W_=| CTRL-W = すべてのウィンドウの高さと幅を同じにする。 -|CTRL-W_>| CTRL-W > カレントウィンドウの幅を N 列広くする。 -|CTRL-W_H| CTRL-W H カレントウィンドウを最も左に移動する。 -|CTRL-W_J| CTRL-W J カレントウィンドウを最も下に移動する。 -|CTRL-W_K| CTRL-W K カレントウィンドウを最も上に移動する。 -|CTRL-W_L| CTRL-W L カレントウィンドウを最も右に移動する。 -|CTRL-W_P| CTRL-W P プレビューウィンドウへ移動する。 -|CTRL-W_R| CTRL-W R ウィンドウ位置を後方へ N 回転させる。 -|CTRL-W_S| CTRL-W S "CTRL-W s" と同じ。 -|CTRL-W_T| CTRL-W T カレントウィンドウを新しいタブページへ移動。 -|CTRL-W_W| CTRL-W W 上から N 番目のウィンドウに移動。N の指定が - なければ、カレントウィンドウの上のウィンド - ウ(なければ一番下のウィンドウ)に移動。 -|CTRL-W_]| CTRL-W ] ウィンドウを分割してカーソル位置のタグへジャ - ンプする。 -|CTRL-W_^| CTRL-W ^ カレントウィンドウを分割し、N 番目のファイ - ルを編集する。 -|CTRL-W__| CTRL-W _ カレントウィンドウの高さを N 行にする - (省略時は可能な限り高く)。 -|CTRL-W_b| CTRL-W b 一番下のウィンドウへ移動。 -|CTRL-W_c| CTRL-W c カレントウィンドウを閉じる(|:close| と同じ)。 -|CTRL-W_d| CTRL-W d ウィンドウを分割し、カーソル位置の定義へジャ - ンプする。 -|CTRL-W_f| CTRL-W f ウィンドウを分割し、カーソル位置のファイル - 名のファイルを編集する。 -|CTRL-W_F| CTRL-W F ウィンドウを分割し、カーソル位置のファイル - 名のファイルを開き、ファイル名の後に書かれ - た行番号にジャンプする。 -|CTRL-W_g_CTRL-]| CTRL-W g CTRL-] ウィンドウを分割し、カーソル位置のタグに対 - し |:tjump| を実行する。 -|CTRL-W_g]| CTRL-W g ] ウィンドウを分割し、カーソル位置のタグに対 - し |:tselect| を実行する。 -|CTRL-W_g}| CTRL-W g } カーソル位置のタグに対し |:ptjump| を実行す - る。 -|CTRL-W_gf| CTRL-W g f カーソル位置のファイル名のファイルを新しい - タブページで開く。 -|CTRL-W_gF| CTRL-W g F カーソル位置のファイル名のファイルを新しい - タブページで開き、ファイル名の後に書かれた - 行番号にジャンプする。 -|CTRL-W_h| CTRL-W h N 個左のウィンドウに移動(一番左のウィンドウ - でストップ) -|CTRL-W_i| CTRL-W i ウィンドウを分割し、カーソル位置の識別子の - 宣言位置へジャンプする。 -|CTRL-W_j| CTRL-W j N 個下のウィンドウに移動(一番下のウィンドウ - でストップ) -|CTRL-W_k| CTRL-W k N 個上のウィンドウに移動(一番上のウィンドウ - でストップ) -|CTRL-W_l| CTRL-W l N 個右のウィンドウに移動(一番右のウィンドウ - でストップ) -|CTRL-W_n| CTRL-W n 高さが N 行の新しいウィンドウを開く。 -|CTRL-W_o| CTRL-W o カレントウィンドウを除くすべてのウィンドウ - を閉じる(|:only| と同じ)。 -|CTRL-W_p| CTRL-W p 直前の(最後にアクセスしていた)ウィンドウへ - 移動。 -|CTRL-W_q| CTRL-W q カレントウィンドウを終了する(|:quit| と同 - じ)。 -|CTRL-W_r| CTRL-W r ウィンドウ位置を後方へ N 回転させる。 -|CTRL-W_s| CTRL-W s カレントウィンドウを2つに分割し、高さが N - 行の新しいウィンドウを作成する。 -|CTRL-W_t| CTRL-W t 一番上のウィンドウへ移動。 -|CTRL-W_v| CTRL-W v カレントウィンドウを垂直分割する。新しい - ウィンドウの幅は N 列。 -|CTRL-W_w| CTRL-W w 下から N 番目のウィンドウに移動。N の指定が - なければ、カレントウィンドウの下のウィンド - ウ(なければ一番上のウィンドウ)に移動。 -|CTRL-W_x| CTRL-W x カレントウィンドウと上から N 番目のウィンド - ウ(省略時は1つ下のウィンドウ)を入れ替える。 -|CTRL-W_z| CTRL-W z プレビューウィンドウを閉じる。 -|CTRL-W_bar| CTRL-W | ウィンドウの幅を N 列にする。 -|CTRL-W_}| CTRL-W } カーソル位置のタグをプレビューウィンドウに - 表示する。 -|CTRL-W_<Down>| CTRL-W <Down> "CTRL-W j" と同じ。 -|CTRL-W_<Up>| CTRL-W <Up> "CTRL-W k" と同じ。 -|CTRL-W_<Left>| CTRL-W <Left> "CTRL-W h" と同じ。 -|CTRL-W_<Right>| CTRL-W <Right> "CTRL-W l" と同じ。 - -============================================================================== -2.3 角括弧コマンド *[* *]* - -タグ 文字 注 ノーマルモードでの動作 ~ ------------------------------------------------------------------------------- -|[_CTRL-D| [ CTRL-D カーソル位置の単語と一致する #define の文を - カレントファイルとインクルードファイルの中 - から探し、最初に見つけた場所へジャンプす - る。カレントファイルの先頭から検索する -|[_CTRL-I| [ CTRL-I カーソル位置の単語を含む行をカレントファイ - ルの先頭から探し、最初に見つかった行へジャ - ンプする。 -|[#| [# 1 後方へ対応のとれていない #if, #else, #ifdef - を探し、N 個目に見つかった場所へジャンプ。 -|['| [' 1 後方の小文字マークがある行の最初の非空白 - 文字へ移動する。 -|[(| [( 1 後方へ対応のとれていない '(' を探し、N 個目 - に見つかった場所へジャンプする。 -|[star| [* 1 "[/" と同じ。 -|[`| [` 1 後方の小文字マークがある行へ移動する。 -|[/| [/ 1 後方へ C コメントの始まりを探し、N 個目に見 - つかった場所へジャンプする。 -|[D| [D カーソル位置の単語にマッチする単語の定義を - カレントファイルとインクルードファイルの中 - から検索し一覧表示する。カレントファイル - の先頭から検索を開始する。 -|[I| [I カーソル位置の単語にマッチする単語を含む行 - をカレントファイルとインクルードファイルの - 中から検索し一覧表示する。カレントファイ - ルの先頭から検索を開始する。 -|[P| [P 2 "[p" と同じ。 -|[[| [[ 1 カーソルを N 段落後方へ移動 -|[]| [] 1 カーソルを N SECTION 後方へ移動 -|[c| [c 1 カーソル後方へ N 個目の変更箇所へ移動 -|[d| [d カーソル位置の単語にマッチする単語の最初の - 定義(#define)をカレントファイルとインクルー - ドファイルの中から検索し表示する。カレント - ファイルの先頭から検索を開始する。 -|[f| [f "gf" と同じ。 -|[i| [i カーソル位置の単語にマッチする単語を含む最 - 初に見つかった行をカレントファイルとインク - ルードファイルの中から検索し一覧表示する。 - カレントファイルの先頭から検索を開始する。 -|[m| [m 1 後方へ N 番目に現れた関数の先頭へカーソルを - 移動。 -|[p| [p 2 "P" と同様、さらに現在の行と同じインデント - にする -|[s| [s 1 前のスペルミスのある単語へ移動 -|[z| [z 1 開いている折畳の最初の行へ移動 -|[{| [{ 1 後方へ N 番目に現れた対応する括弧のない '{' - へカーソルを移動。 -|[<MiddleMouse> [<MiddleMouse> 2 "[p" と同じ。 - -|]_CTRL-D| ] CTRL-D カーソル位置の単語にマッチする単語の最初の - 定義(#define)をカレントファイルとインクルー - ドファイルの中から検索しジャンプする。カー - ソル位置から検索を開始する。 -|]_CTRL-I| ] CTRL-I カーソル位置の単語にマッチする単語を含む最 - 初に見つかった行をカレントファイルとインク - ルードファイルの中から検索しジャンプする。 - カーソル位置から検索を開始する。 -|]#| ]# 1 前方の対応の取れていないN個目の#endifか - #else へ移動。 -|]'| ]' 1 前方の小文字マークがある行の最初の非空白文 - 字へ移動する。 -|])| ]) 1 前方の対応の取れていないN個目の')'へ移動 -|]star| ]* 1 "]/" と同じ。 -|]`| ]` 1 前方の小文字マークがある行へ移動する。 -|]/| ]/ 1 カーソルを N 先の C のコメントの最後へ移動。 -|]D| ]D カーソル位置の単語にマッチする単語の定義 - (#define)をカレントファイルとインクルードファ - イルの中から探して表示する。カーソル位置か - ら検索を開始する。 -|]I| ]I カーソル位置の単語にマッチする単語を含む行 - をカレントファイルとインクルードファイルの - 中から探して表示。カーソル位置から検索 - を開始する。 -|]P| ]P 2 "[p" と同じ。 -|][| ][ 1 カーソルを N SECTION 前方へ移動。 -|]]| ]] 1 カーソルを N 段落前方へ移動。 -|]c| ]c 1 カーソル前方へ N 個目の変更箇所へ移動 -|]d| ]d カーソル位置の単語にマッチする単語の最初の - 定義(#define)をカレントファイルとインクルー - ドファイルの中から検索し表示する。カーソル - 位置から検索を開始する。 -|]f| ]f "gf" と同じ。 -|]i| ]i カーソル位置の単語にマッチする単語を含む最 - 初に見つかった行をカレントファイルとインク - ルードファイルの中から検索し一覧表示する。 - カーソル位置から検索を開始する。 -|]m| ]m 1 前方へ N 番目に現れた関数の末尾へカーソルを - 移動。 -|]p| ]p 2 "p" と同様、さらにカレントラインにインデン - トをあわせる -|]s| ]s 1 次のスペルミスのある単語へ移動 -|]z| ]z 1 開いている折畳の最後の行へ移動 -|]}| ]} 1 カーソルを N 先のマッチしていない '}' へ移 - 動。 -|]<MiddleMouse> ]<MiddleMouse> 2 "]p" と同じ。 - -============================================================================== -2.4 'g' で始まるコマンド *g* - -タグ 文字 注 ノーマルモードでの動作 ~ ------------------------------------------------------------------------------- -|g_CTRL-A| g CTRL-A MEM_PROFILEを定義してコンパイルしたときのみ - メモリプロファイルをダンプする -|g_CTRL-G| g CTRL-G 現在のカーソル位置に関する情報を表示。 -|g_CTRL-H| g CTRL-H セレクトモードで矩形選択を開始 -|g_CTRL-]| g CTRL-] カーソル位置のタグへ |:tjump| する。 -|g#| g# 1 "#" と同様、ただし "\<" と "\>" を使用しな - い。 -|g$| g$ 1 本当の行末ではなく、表示されたとおりの、見 - ため上の行末へ移動 -|g&| g& 2 最後に実行した":s"をすべての行で実行する -|g'| g'{mark} 1 |'|と同じだがジャンプリストを更新しない -|g`| g`{mark} 1 |`|と同じだがジャンプリストを更新しない -|gstar| g* 1 "*" と同様、ただし "\<" と "\>" を使用しな - い。 -|g0| g0 1 本当の行頭ではなく、表示されたとおりの、見 - ため上の行頭へ移動 -|g8| g8 UTF-8環境でカーソル位置の文字のバイト列を16 - 進数で表示する -|g<| g< 前のコマンドの出力を表示する。 -|g?| g? 2 Rot13 エンコード演算子。 -|g?g?| g?? 2 現在の行を Rot13 エンコード。 -|g?g?| g?g? 2 現在の行を Rot13 エンコード。 -|gD| gD 1 カーソル位置の単語の定義をカレントファイル - 内で検索し、移動。 -|gE| gE 1 直前の WORD の末尾に移動。 -|gH| gH セレクトモードで行選択を開始。 -|gI| gI 2 "I" と同様、ただし1カラム目より挿入開始。 -|gJ| gJ 2 スペースを挿入せずに行を連結。 -|gP| ["x]gP 2 (レジスタ x からの)テキストをカーソルの前に - 挿入、カーソルは挿入テキストの最後へ移動。 -|gQ| gQ "Ex" モードを開始する。 -|gR| gR 2 仮想置換モード開始。 -|gU| gU{motion} 2 Nmove テキストを大文字にする。 -|gV| gV セレクトモードでマップやメニューを使用した - 後、選択していた選択範囲を再選択しない。 -|g]| g] カーソル位置の単語をタグとして :tselect - を実行する -|g^| g^ 1 本当の行頭ではなく、表示されたとおりの、見 - ため上の行頭から最初の非空白文字へ移動 -|ga| ga カーソル位置の文字の ASCII コード値を表示 -|gd| gd 1 カーソル位置の単語の定義を現在の関数内で探 - し、移動 -|ge| ge 1 直前の単語の末尾に移動 -|gf| gf カーソル位置のファイル名のファイルを開く -|gF| gF カーソル位置のファイル名のファイルを開き、 - ファイル名の後に書かれた行番号にジャンプす - る。 -|gg| gg 1 N 行目へジャンプ、省略時は1行目 -|gh| gh セレクトモードの開始 -|gi| gi 2 "i"と同じだがその前に|'^|マークへ移動する -|gj| gj 1 "j" と同様、ただし 'wrap' がオンの時はスク - リーン行で N 行下へ移動 -|gk| gk 1 "k" と同様、ただし 'wrap' がオンの時はスク - リーン行で N 行上へ移動 -|gm| gm 1 スクリーン行の中央の文字へジャンプ -|go| go 1 バッファ中の N バイト目へジャンプ -|gp| ["x]gp 2 N 回カーソルの後に(レジスタxの)テキストを挿 - 入、カーソルは挿入テキストの直後へ移動 -|gq| gq{motion} 2 Nmove テキストを整形する -|gr| gr{char} 2 N 文字を {char} で仮想上書きする -|gs| gs N 秒間スリープする(省略時は1秒) -|gu| gu{motion} 2 Nmove テキストを小文字にする -|gv| gv 前回の選択範囲を再選択する -|gw| gw{motion} 2 Nmove テキストを整形する。カーソル移動なし -|netrw-gx| gx カーソル下のファイル名に対応したアプリケー - ションを起動する(|netrw| プラグインがあると - きのみ) -|g@| g@{motion} 'operatorfunc'を呼ぶ。 -|g~| g~{motion} 2 Nmove テキストの大文字、小文字を変換する -|g<Down>| g<Down> 1 "gj" と同じ。 -|g<End>| g<End> 1 "g$" と同じ。 -|g<Home>| g<Home> 1 "g0" と同じ。 -|g<LeftMouse>| g<LeftMouse> <C-LeftMouse> と同じ。 - g<MiddleMouse> <C-MiddleMouse> と同じ。 -|g<RightMouse>| g<RightMouse> <C-RightMouse> と同じ。 -|g<Up>| g<Up> 1 "gk" と同じ。 - -============================================================================== -2.5 'z' で始まるコマンド *z* - -タグ 文字 注 ノーマルモードでの動作 ~ ------------------------------------------------------------------------------- -|z<CR>| z<CR> 画面の再描画、カーソル行をウィンドウの最上 - 部へ移動、カーソルは行のはじめの空白文字以 - 外の文字へ移動。 -|zN<CR>| z{height}<CR> 画面の再描画、ウィンドウの高さを {height} - にする。 -|z+| z+ カーソルを N 行目に移動(省略時はウィンドウ - の下の行)、その他は "z<CR>" と同じ。 -|z-| z- 画面の再描画、カーソル行をウィンドウの最下 - 部へ移動、カーソルは行のはじめの空白文字以 - 外の文字へ移動。 -|z.| z. 画面の再描画、カーソル行をウィンドウの中央 - 部へ移動、カーソルは行のはじめの空白文字以 - 外の文字へ移動。 -|z=| z= スペリング補完を行う。 -|zA| zA 折畳を再帰的に開閉する -|zC| zC 折畳を再帰的に閉じる -|zD| zD 折畳を再帰的に削除する -|zE| zE 折畳をすべて削除する -|zF| zF N 行の折畳を作成する -|zG| zG wordを正しくスペリングされた単語としてマー - クする。 -|zM| zM 'foldlevel'を0に設定する -|zN| zN 'foldenable'をオンにする -|zO| zO 折畳を再帰的に開く -|zR| zR 'foldlevel'を最も深い折畳と同じレベルに設 - 定する -|zW| zW wordを間違ってスペリングされた単語として - マークする。 -|zX| zX 'foldlevel'を再適用する -|z^| z^ カーソルを N 行目に移動(省略時はウィンドウ - の上の行)、その他は "z-" と同じ。 -|za| za 折畳を開閉する -|zb| zb 画面の再描画、カーソル行をウィンドウの最下 - 部へ移動。 -|zc| zc 折畳を閉じる -|zd| zd 折畳を削除する -|ze| ze 'wrap' オプションがオフの時、カーソルがスク - リーンの右端になるように、水平方向にスク - ロール。 -|zf| zf{motion} Nmoveテキストの折畳を作成する -|zg| zg wordを正しくスペリングされた単語としてマー - クする。 -|zh| zh 'wrap' オプションがオフの時、水平方向に N - 文字分右へスクロール。 -|zi| zi 'foldenable'を切り替える -|zj| zj 1 次の折畳の始めに移動する -|zk| zk 1 前の折畳の最後に移動する -|zl| zl 'wrap' オプションがオフの時、水平方向に N - 文字分左へスクロール。 -|zm| zm 'foldlevel'を1低くする -|zn| zn 'foldenable'をオフにする -|zo| zo 折畳を開く -|zr| zr 'foldlevel'を1高くする -|zs| zs 'wrap' オプションがオフの時、カーソルがスク - リーンの左端になるように、水平方向にスクロー - ル。 -|zt| zt 画面の再描画、カーソル行をウィンドウの最上 - 部へ移動。 -|zv| zv カーソル行が表示されるように折畳を開く -|zw| zw wordを間違ってスペリングされた単語として - マークする。 -|zx| zx 'foldlevel'を最適用して"zv"を実行する -|zz| zz 画面の再描画、カーソル行をウィンドウの中央 - 部へ移動。 -|z<Left>| z<Left> "zh" と同じ。 -|z<Right>| z<Right> "zl" と同じ。 - -============================================================================== -3. ビジュアルモード *visual-index* - -ビジュアルモードでのほとんどのコマンドは、ノーマルモードと同じ。ノーマルモード -と異なるコマンドのみここに列挙した。 - -タグ コマンド 注 ビジュアルモードでの動作 ~ ------------------------------------------------------------------------------- -|v_CTRL-\_CTRL-N| CTRL-\ CTRL-N ビジュアルモードの停止 -|v_CTRL-\_CTRL-G| CTRL-\ CTRL-G 'insertmode'に合わせたモードに移行する -|v_CTRL-C| CTRL-C ビジュアルモードの停止 -|v_CTRL-G| CTRL-G ビジュアルモードとセレクトモードを - 切り替える -|v_<BS>| <BS> 2 セレクトモードのとき: 選択範囲の内容を削除 -|v_CTRL-H| CTRL-H 2 <BS> と同じ。 -|v_CTRL-O| CTRL-O セレクトモードからビジュアルモードへ1キーで - 移行 -|v_CTRL-V| CTRL-V ビジュアルモードを矩形選択にする。すでに - 矩形選択であれば、ビジュアルモードを終了する -|v_<Esc>| <Esc> ビジュアルモードの停止 -|v_CTRL-]| CTRL-] 選択した文字のタグへジャンプ -|v_!| !{filter} 2 選択範囲の行を外部コマンド {filter} - でフィルタする -|v_:| : 選択範囲の行を対象範囲としてコマンドライン - のコマンドを適用する -|v_<| < 2 選択範囲の行を'shiftwidth'分だけ左へシフト -|v_=| = 2 'equalprg' で設定されている外部プログラムで - 選択範囲の行をフィルタする -|v_>| > 2 選択範囲の行を'shiftwidth'分だけ右へシフト -|v_b_A| A 2 矩形選択のとき: 選択範囲のすべての行末に同 - じテキストを追加する -|v_C| C 2 選択範囲の行を削除して、挿入開始 -|v_D| D 2 選択範囲の行を削除 -|v_b_I| I 2 矩形選択のとき: 選択範囲のすべての行頭に同 - じテキストを挿入する -|v_J| J 2 選択範囲の行を連結 -|v_K| K 選択した文字で 'keywordprg' を実行 -|v_O| O 選択範囲のもう一方の端にカーソルを移動する - Q Ex モードに移行しない(未使用) -|v_R| R 2 選択範囲の行を削除し、挿入を開始 -|v_S| S 2 選択範囲の行を削除し、挿入を開始 -|v_U| U 2 選択範囲の文字を大文字にする -|v_V| V ビジュアルモードを行選択にする。すでに - 行選択であれば、ビジュアルモードを終了する -|v_X| X 2 選択範囲の行を削除 -|v_Y| Y 選択範囲の行をヤンク -|v_aquote| a" 選択範囲を " で囲まれた文字列に拡大する -|v_a'| a' 選択範囲を ' で囲まれた文字列に拡大する -|v_a(| a( ab と同じ。 -|v_a)| a) ab と同じ。 -|v_a<| a< 選択範囲を < と > で囲まれた領域に拡大する。 -|v_a>| a> a< と同じ。 -|v_aB| aB 選択範囲を { と } で囲まれた領域に拡大する。 -|v_aW| aW 選択範囲を"a WORD"だけ拡張する -|v_a[| a[ 選択範囲を [ と ] で囲まれた領域に拡大する。 -|v_a]| a] a[ と同じ。 -|v_a`| a` 選択範囲を ` で囲まれた文字列に拡大する。 -|v_ab| ab 選択範囲を ( と ) で囲まれた領域に拡大する。 -|v_ap| ap 選択範囲を1段落に拡大する。 -|v_as| as 選択範囲を1文に拡大する。 -|v_at| at 選択範囲をタグブロックだけ拡大する。 -|v_aw| 選択範囲を"a word"だけ拡張する -|v_a{| a{ aB と同じ。 -|v_a}| a} aB と同じ。 -|v_c| c 2 選択範囲を削除し、挿入開始 -|v_d| d 2 選択範囲を削除 -|v_gJ| gJ 2 選択範囲の行をスペースを挿入せずに連結 -|v_gq| gq 2 選択範囲の行を整形する -|v_gv| gv 現在の選択範囲と直前に選択していた範囲を入 - れ替える -|v_iquote| i" 選択範囲を " で囲まれた文字列に拡大する(" - は含まない) -|v_i'| i' 選択範囲を ' で囲まれた文字列に拡大する(' - は含まない) -|v_i(| i( ib と同じ。 -|v_i)| i) ib と同じ。 -|v_i<| i< 選択範囲を < と > で囲まれた内側の領域に拡 - 大する。 -|v_i>| i> i< と同じ。 -|v_iB| iB 選択範囲を { と } で囲まれた内側の領域に拡 - 大する。 -|v_iW| iW 選択範囲を"inner WORD"だけ拡張する -|v_i[| i[ 選択範囲を [ と ] で囲まれた内側の領域に拡 - 大する。 -|v_i]| i] i[ と同じ。 -|v_i`| i` 選択範囲を ` で囲まれた文字列に拡大する(` - は含まない) -|v_ib| ib 選択範囲を ( と ) で囲まれた内側の領域に拡 - 大する。 -|v_ip| ip 選択範囲を段落の内側の領域に拡大する。 -|v_is| is 選択範囲を文の内側の領域に拡大する。 -|v_it| it 選択範囲をタグブロックの内側の領域に拡大する。 -|v_iw| iw 選択範囲を"inner word"だけ拡張する -|v_i{| i{ iB と同じ。 -|v_i}| i} iB と同じ。 -|v_o| o 選択範囲のもう一方の端にカーソルを移動する -|v_r| r 2 選択範囲の文字を削除し、挿入開始 -|v_s| s 2 選択範囲の文字を削除し、挿入開始 -|v_u| u 2 選択範囲の文字を小文字にする。 -|v_v| v ビジュアルモードを文字選択とする。すでに - 文字選択ならばビジュアルモードを終了する。 -|v_x| x 2 選択範囲の文字を削除 -|v_y| y 選択範囲の文字をヤンク -|v_~| ~ 2 選択範囲の文字の大文字小文字を切り替える - -============================================================================== -4. コマンドライン編集 *ex-edit-index* - -':' や '!', '/', '?' コマンドでコマンドライン入力となる。 -通常の文字はカーソル位置に挿入される。 -以下の説明にある「補完」は、前後関係に依存した補完を行なう。つまり、ファイル名 -やタグ、コマンド等適切な補完が行なわれる。 - -タグ コマンド コマンドライン編集モードでの動作 ~ ------------------------------------------------------------------------------- - CTRL-@ 未使用 -|c_CTRL-A| CTRL-A カーソル直前の文字を補完し、すべての候補を挿入 -|c_CTRL-B| CTRL-B カーソルをコマンドラインの先頭へ移動 -|c_CTRL-C| CTRL-C <Esc> と同じ。 -|c_CTRL-D| CTRL-D カーソル直前の文字に一致する補完候補を一覧表示 -|c_CTRL-E| CTRL-E カーソルをコマンドラインの末尾へ移動 -|'cedit'| CTRL-F 'cedit'が標準設定なら、コマンドラインウィンド - ウを開く。そうでないなら未使用 - CTRL-G 未使用 -|c_<BS>| <BS> カーソル直前の文字を削除 -|c_digraph| {char1} <BS> {char2} - 'digraph'がオンの時、二重字(digraph)を入力する -|c_CTRL-H| CTRL-H <BS> と同じ。 -|c_<Tab>| <Tab> 'wildchar' が <Tab> の時: カーソル直前の文字を - 補完する -|c_<S-Tab>| <S-Tab> CTRL-P と同じ。 -|c_wildchar| 'wildchar' カーソル直前の文字を補完する('wildchar'は標準 - 設定なら<Tab>) -|c_CTRL-I| CTRL-I <Tab> と同じ。 -|c_<NL>| <NL> <CR> と同じ。 -|c_CTRL-J| CTRL-J <CR> と同じ。 -|c_CTRL-K| CTRL-K {char1} {char2} - 二重字(digraph)を入力 -|c_CTRL-L| CTRL-L カーソル直前の文字を補完し、最も長い候補を挿入 -|c_<CR>| <CR> 入力したコマンドを実行 -|c_<CR>| CTRL-M <CR> と同じ。 -|c_CTRL-N| CTRL-N 'wildchar' を使用して複数の補完候補があるとき: - 次の補完候補を表示 - その他: <Down> と同じ - CTRL-O 未使用 -|c_CTRL-P| CTRL-P 'wildchar' を使用して複数の補完候補があるとき: - 前の補完候補を表示 - その他: <Up> と同じ -|c_CTRL-Q| CTRL-Q CTRL-V と同じ (端末制御で使用されていなければ) -|c_CTRL-R| CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A} - カーソル位置のオブジェクトまたはレジスタの内容 - をキー入力したかのように挿入 -|c_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A} - カーソル位置のオブジェクトまたはレジスタの内容 - を文字通りに挿入 - CTRL-S (端末制御に使用) - CTRL-T 未使用 -|c_CTRL-U| CTRL-U すべての文字を削除 -|c_CTRL-V| CTRL-V 続いて入力する、数字以外の文字をそのまま挿入 - もしくは3桁の十進数で1バイト文字を指定して挿入 -|c_CTRL-W| CTRL-W カーソルより前にある単語を削除 - CTRL-X 未使用 (補完機能のために予約) - CTRL-Y モードレス選択をコピー(ヤンク)する - CTRL-Z 未使用 (サスペンド機能のために予約) -|c_<Esc>| <Esc> コマンドラインを実行せずに破棄する -|c_<Esc>| CTRL-[ <Esc> と同じ。 -|c_CTRL-\_CTRL-N| CTRL-\ CTRL-N コマンドラインを破棄して、ノーマルモードへ移行 -|c_CTRL-\_CTRL-G| CTRL-\ CTRL-G コマンドラインを破棄して、'insertmode'に合わせ - たモードへ移行 - CTRL-\ a - d 将来の拡張のために予約 -|c_CTRL-\_e| CTRL-\ e {expr} コマンドラインを{expr}の結果で置き換える - CTRL-\ f - z 将来の拡張のために予約 - CTRL-\ others 未使用 - CTRL-] 未使用 -|c_CTRL-]| CTRL-] 短縮入力を展開する -|c_CTRL-^| CTRL-^ マップ|:lmap|の有効無効を切り替える -|c_CTRL-_| CTRL-_ 'allowrevins' がオンのとき、言語を切り替える。 - (ヘブライ語、ペルシア語) -|c_<Del>| <Del> カーソル位置の文字を削除 -|c_<Left>| <Left> カーソルを左へ移動 -|c_<S-Left>| <S-Left> カーソルを1単語左へ移動 -|c_<C-Left>| <C-Left> カーソルを1単語左へ移動 -|c_<Right>| <Right> カーソルを右へ移動 -|c_<S-Right>| <S-Right> カーソルを1単語右へ移動 -|c_<C-Right>| <C-Right> カーソルを1単語右へ移動 -|c_<Up>| <Up> ヒストリの中でカーソルより前のパタンに一致する - 1つ前のコマンドラインを呼び出す -|c_<S-Up>| <S-Up> ヒストリから1つ前のコマンドラインを呼び出す -|c_<Down>| <Down> ヒストリの中でカーソルより前のパタンに一致する - 1つ次のコマンドラインを呼び出す -|c_<S-Down>| <S-Down> ヒストリから1つ次のコマンドラインを呼び出す -|c_<Home>| <Home> カーソルをコマンドラインの先頭へ移動 -|c_<End>| <End> カーソルをコマンドラインの末尾へ移動 -|c_<PageDown>| <PageDown> <S-Down> と同じ。 -|c_<PageUp>| <PageUp> <S-Up> と同じ。 -|c_<Insert>| <Insert> 挿入モード/上書きモードを変更 -|c_<LeftMouse>| <LeftMouse> カーソルをマウスクリック位置へ移動 - -You found it, Arthur! *holy-grail* - -============================================================================== -5. EX コマンド *ex-cmd-index* *:index* - -以下に簡単ではあるがすべての ":" コマンドを列挙した。引数についての説明はして -いない。コマンド名の省略可能な部分を [] で囲った。コマンドはコマンド名のうち省 -略できない部分を対象としてソートした。 - -タグ コマンド 動作 ~ ------------------------------------------------------------------------------- -|:!| :! 行をフィルタにかける、または、外部コマンドを実 - 行する -|:!!| :!! 最後に実行した ":!" コマンドを繰り返す -|:#| :# ":number" と同じ。 -|:&| :& 最後に実行した ":substitute" を繰り返す -|:star| :* レジスタの内容を実行する -|:<| :< 'shiftwidth' 1つ分だけ行を左へシフト -|:=| := カーソルのある行の行番号を表示 -|:>| :> 'shiftwidth' 1つ分だけ行を右へシフト -|:@| :@ レジスタの内容を実行 -|:@@| :@@ 直前の ":@" を繰り返す -|:Next| :N[ext] 引数リストの1つ前のファイルを編集 -|:Print| :P[rint] 行を表示する -|:X| :X 暗号鍵を設定する -|:append| :a[ppend] テキストを追加する -|:abbreviate| :ab[breviate] 短縮入力を登録する -|:abclear| :abc[lear] すべての短縮入力を削除する -|:aboveleft| :abo[veleft] ウィンドウが左もしくは上に分割されるようにする -|:all| :al[l] 引数リストの全ファイルをウィンドウ作成して表示 -|:amenu| :am[enu] すべてのモードに対してメニュー項目を追加 -|:anoremenu| :an[oremenu] すべてのモードに対して再マップされないメニュー - 項目を追加 -|:args| :ar[gs] 引数リストを表示 -|:argadd| :arga[dd] 引数リストにファイルを追加する -|:argdelete| :argd[elete] 引数リストからファイルを削除する -|:argedit| :arge[dit] 引数リストにファイルを追加し、開く -|:argdo| :argdo 引数リストのすべてのファイルに対してコマンドを - 実行する -|:argglobal| :argg[lobal] グローバル引数リストを使用する -|:arglocal| :argl[ocal] ローカル引数リストを使用する -|:argument| :argu[ment] 引数リストの指定したファイルを開く -|:ascii| :as[cii] カーソル位置の文字のアスキーコードを表示 -|:autocmd| :au[tocmd] オートコマンドの入力と表示 -|:augroup| :aug[roup] 使用するオートコマンドグループの選択と表示 -|:aunmenu| :aun[menu] すべてのモードに対してメニュー項目を削除 -|:buffer| :b[uffer] バッファリストの指定したバッファを開く -|:bNext| :bN[ext] バッファリストの前のバッファを開く -|:ball| :ba[ll] バッファリストのすべてのバッファをウィンドウを - 作成して開く -|:badd| :bad[d] バッファリストにバッファを追加 -|:bdelete| :bd[elete] バッファリストからバッファを削除 -|:behave| :be[have] マウス操作や選択の動作を設定する -|:belowright| :bel[owright] ウィンドウが右もしくは下に分割されるようにする -|:bfirst| :bf[irst] バッファリストの最初のバッファを開く -|:blast| :bl[ast] バッファリストの最後のバッファを開く -|:bmodified| :bm[odified] バッファリストの次の変更済みバッファを開く -|:bnext| :bn[ext] バッファリストの次のバッファを開く -|:botright| :bo[tright] ウィンドウが最も右もしくは最も下に分割されるよ - うにする -|:bprevious| :bp[revious] バッファリストの前のバッファを開く -|:brewind| :br[ewind] バッファリストの先頭のバッファを開く -|:break| :brea[k] while ループを抜ける -|:breakadd| :breaka[dd] デバッガのブレークポイントを追加する -|:breakdel| :breakd[el] デバッガのブレークポイントを削除する -|:breaklist| :breakl[ist] デバッガのブレークポイントを一覧表示する -|:browse| :bro[wse] ファイル選択ダイアログをポップアップする -|:bufdo| :bufdo バッファリストのすべてのバッファに対してコマン - ドを実行する -|:buffers| :buffers バッファリストのファイル名をリスト表示 -|:bunload| :bun[load] 指定のバッファをアンロード -|:bwipeout| :bw[ipeout] バッファの一切を削除する -|:change| :c[hange] 1行または連続する複数行を上書きする -|:cNext| :cN[ext] 直前のエラーへジャンプ -|:cNfile| :cNf[ile] エラーリストの前のファイルの最後のエラーへ移動 - する -|:cabbrev| :ca[bbrev] コマンドラインモードを対象とする ":abbreviate" - コマンド -|:cabclear| :cabc[lear] コマンドラインモードにおけるすべての - 短縮入力を削除 -|:caddbuffer| :caddb[uffer] バッファからエラーを追加する -|:caddexpr| :cad[dexpr] 式からエラーを追加する -|:caddfile| :caddf[ile] 現在のQuickFixリストにエラーメッセージを追加 -|:call| :cal[l] 関数を実行する -|:catch| :cat[ch] :tryコマンドの一部 -|:cbuffer| :cb[uffer] エラーメッセージを解釈し、最初のエラーへジャ - ンプ -|:cc| :cc 指定のエラーへジャンプ -|:cclose| :ccl[ose] クイックフィックスウィンドウを閉じる -|:cd| :cd ディレクトリの移動 -|:center| :ce[nter] 行を中央寄せに整形 -|:cexpr| :cex[pr] 式からエラーを読みこみ、最初のエラーへジャンプ -|:cfile| :cf[ile] エラーファイルを読み込み最初のエラーへジャンプ -|:cfirst| :cfir[st] 指定のエラーへジャンプ。省略時は先頭のエラー -|:cgetbuffer| :cgetb[uffer] バッファからエラーを取得する -|:cgetexpr| :cgete[xpr] 式からエラーを取得する -|:cgetfile| :cg[etfile] エラーファイルを読み込む -|:change| :ch[ange] 行を削除し、テキストを挿入 -|:chdir| :chd[ir] ディレクトリの移動 -|:checkpath| :che[ckpath] インクルードファイルを一覧表示 -|:checktime| :checkt[ime] 開いているファイルのタイムスタンプを確認する -|:clist| :cl[ist] すべてのエラーを一覧表示 -|:clast| :cla[st] 指定のエラーへジャンプ、省略時は最後のエラー -|:close| :clo[se] カレントウィンドウを閉じる -|:cmap| :cm[ap] コマンドラインモードを対象とする":map"コマンド -|:cmapclear| :cmapc[lear] コマンドラインモードのすべてのマップを削除 -|:cmenu| :cme[nu] コマンドラインモードのメニューを追加 -|:cnext| :cn[ext] 次のエラーへジャンプ -|:cnewer| :cnew[er] より新しいエラーリストを使用する -|:cnfile| :cnf[ile] エラーリストの次のファイルの先頭エラーへ - ジャンプ -|:cnoremap| :cno[remap] コマンドラインモードを対象とする ":noremap" - コマンド -|:cnoreabbrev| :cnorea[bbrev] コマンドラインモードを対象とする ":noreabbrev" - コマンド -|:cnoremenu| :cnoreme[nu] コマンドラインモードを対象とする ":noremenu" - コマンド -|:copy| :co[py] 行のコピー -|:colder| :col[der] より古いエラーリストを使用する -|:colorscheme| :colo[rscheme] 指定した色テーマをロードする -|:command| :com[mand] ユーザ定義コマンドの作成 -|:comclear| :comc[lear] すべてのユーザ定義コマンドの削除 -|:compiler| :comp[iler] 指定したコンパイラ用の設定をする -|:continue| :con[tinue] :while に戻って実行を続ける -|:confirm| :conf[irm] コマンドを実行し、ユーザの確認が必要ならプロン - プトを表示する -|:copen| :cope[n] クイックフィックスウィンドウを開く -|:cprevious| :cp[revious] 直前のエラーへジャンプ -|:cpfile| :cpf[ile] エラーリストの前のファイルの最後のエラーへ - ジャンプ -|:cquit| :cq[uit] Vimを終了しエラーコードを返す -|:crewind| :cr[ewind] 指定のエラーへジャンプ。省略時は先頭のエラー -|:cscope| :cs[cope] cscope コマンドを実行 -|:cstag| :cst[ag] cscope を使用してタグへジャンプする -|:cunmap| :cu[nmap] コマンドラインモードを対象とする ":unmap" コマ - ンド -|:cunabbrev| :cuna[bbrev] コマンドラインモードを対象とする ":unabbrev" - コマンド -|:cunmenu| :cunme[nu] コマンドラインモードのメニューを削除 -|:cwindow| :cw[indow] クイックフィックスウィンドウを開閉する -|:delete| :d[elete] 行を削除 -|:delmarks| :delm[arks] マークを削除する -|:debug| :deb[ug] コマンドをデバッグモードで実行する -|:debuggreedy| :debugg[reedy] デバッグモードのコマンドを標準入力から読み込む -|:delcommand| :delc[ommand] ユーザ定義コマンドの削除 -|:delfunction| :delf[unction] ユーザ定義関数の削除 -|:diffupdate| :dif[fupdate] 'diff'バッファを更新する -|:diffget| :diffg[et] カレントバッファの差異を他方に合わせる -|:diffoff| :diffo[ff] diff モードをオフにする -|:diffpatch| :diffp[atch] パッチを適用した新しい差分バッファを作成する -|:diffput| :diffpu[t] 他方の差異をカレントバッファに合わせる -|:diffsplit| :diffs[plit] ファイルを開きその違いを表示する -|:diffthis| :diffthis カレントウィンドウを差分ウィンドウにする -|:digraphs| :dig[raphs] 二重字(digraph)の入力または表示 -|:display| :di[splay] レジスタの内容を表示 -|:djump| :dj[ump] #define へジャンプ -|:dlist| :dl[ist] #define をリスト表示 -|:doautocmd| :do[autocmd] カレントバッファに対しオートコマンドを適用する -|:doautoall| :doautoa[ll] ロードされているバッファすべてにオートコマンド - を適用する -|:drop| :dr[op] 指定したファイルが表示されているウィンドウに - ジャンプするか、カレントウィンドウで開く -|:dsearch| :ds[earch] マクロ定義(#define)を表示する -|:dsplit| :dsp[lit] ウィンドウを分割し #define へジャンプ -|:edit| :e[dit] ファイルの編集 -|:earlier| :ea[rlier] バッファを時間的に前の状態に戻す。アンドゥ -|:echo| :ec[ho] 式の結果を表示する -|:echoerr| :echoe[rr] :echoと同じだが、エラー表示し、履歴に残す -|:echohl| :echoh[l] echoコマンドで使用する強調表示を設定する -|:echomsg| :echom[sg] :echoと同じだが、履歴に残す -|:echon| :echon :echo と同じ、ただし <EOL> を出力しない -|:else| :el[se] :if コマンドと一緒に使用する -|:elseif| :elsei[f] :if コマンドと一緒に使用する -|:emenu| :em[enu] 名前を指定してメニューを実行 -|:endif| :en[dif] 直前の :if の終了 -|:endfor| :endfo[r] 直前の :for の終了 -|:endfunction| :endf[unction] ユーザ定義関数の終了 -|:endtry| :endt[ry] 直前の:tryを終了する -|:endwhile| :endw[hile] 直前の :while の終了 -|:enew| :ene[w] 新しい名無しバッファを開く -|:ex| :ex ":edit" と同じ。 -|:execute| :exe[cute] 式の結果を実行する -|:exit| :exi[t] ":xit" と同じ。 -|:exusage| :exu[sage] Exコマンドの概観 -|:file| :f[ile] カレントファイルの名前を設定または表示 -|:files| :files バッファリストの全ファイルを一覧表示 -|:filetype| :filet[ype] ファイルタイプ検出の on/off 切換 -|:find| :fin[d] 'path' の中からファイルを検索し、開く -|:finally| :fina[lly] :try コマンドの一部 -|:finish| :fini[sh] Vimスクリプトの読み込みを終了する -|:first| :fir[st] 引数リストの最初のファイルを開く -|:fixdel| :fix[del] <Del> のキーコードを設定 -|:fold| :fo[ld] 折畳を作成する -|:foldclose| :foldc[lose] 折畳を閉じる -|:folddoopen| :foldd[oopen] 閉じている折畳以外の行にコマンドを実行する -|:folddoclosed| :folddoc[losed] 閉じている折畳の中の行にコマンドを実行する -|:foldopen| :foldo[pen] 折畳を開く -|:for| :for for ループ -|:function| :fu[nction] ユーザ定義関数を定義 -|:global| :g[lobal] パターンにマッチした行でコマンドを実行する -|:goto| :go[to] バッファ内の指定したバイト数の場所へジャンプ -|:grep| :gr[ep] 'grepprg' を実行し、最初にマッチした位置へジャ - ンプ -|:grepadd| :grepa[dd] :grepと同じだが、結果を現在のリストへ加える -|:gui| :gu[i] GUI をスタートする -|:gvim| :gv[im] GUI をスタートする -|:hardcopy| :ha[rdcopy] テキストをプリンタに出力する -|:help| :h[elp] ヘルプウィンドウを表示 -|:helpfind| :helpf[ind] ヘルプのキーワードを入力するためのダイアログを - ポップアップする -|:helpgrep| :helpg[rep] ヘルプファイル検索用の":grep" -|:helptags| :helpt[ags] 指定したディレクトリのヘルプタグを作成する -|:highlight| :hi[ghlight] 強調表示を定義する -|:hide| :hid[e] コマンドを実行し、必要ならカレントバッファを - 隠れ(hidden)バッファにする -|:history| :his[tory] コマンドラインの履歴を表示 -|:insert| :i[nsert] テキストを挿入 -|:iabbrev| :ia[bbrev] 挿入モードを対象とする ":abbrev" コマンド -|:iabclear| :iabc[lear] 挿入モードを対象とする ":abclear" コマンド -|:if| :if 条件が成立した場合にコマンド群を実行 -|:ijump| :ij[ump] 識別子の定義へジャンプ -|:ilist| :il[ist] 識別子に一致したすべての行をリスト表示 -|:imap| :im[ap] 挿入モードを対象とした ":map" コマンド -|:imapclear| :imapc[lear] 挿入モードを対象とした ":mapclear" コマンド -|:imenu| :ime[nu] 挿入モードを対象にメニュー追加 -|:inoremap| :ino[remap] 挿入モードを対象とした ":noremap" コマンド -|:inoreabbrev| :inorea[bbrev] 挿入モードを対象とした ":noreabbrev" コマンド -|:inoremenu| :inoreme[nu] 挿入モードを対象とした ":noremenu" コマンド -|:intro| :int[ro] 起動直後のメッセージを表示 -|:isearch| :is[earch] 識別子と一致した最初の行を表示 -|:isplit| :isp[lit] ウィンドウを分割し、識別子の定義へジャンプ -|:iunmap| :iu[nmap] 挿入モードを対象とした ":unmap" コマンド -|:iunabbrev| :iuna[bbrev] 挿入モードを対象とした ":unabbrev" コマンド -|:iunmenu| :iunme[nu] 挿入モードを対象にメニュー削除 -|:join| :j[oin] 行の結合 -|:jumps| :ju[mps] ジャンプリストの表示 -|:k| :k マークを設定 -|:keepalt| :keepa[lt] 代替ファイルを変更せずにコマンドを実行する -|:keepmarks| :kee[pmarks] マークを変更せずにコマンドを実行する -|:keepjumps| :keepj[jumps] マークやジャンプリストを変更せずにコマンドを実 - 行する -|:lNext| :lN[ext] ロケーションリストの前の項目の位置へ移動 -|:lNfile| :lNf[ile] 前のファイルの最後の項目の位置へ移動 -|:list| :l[ist] 行を表示 -|:laddexpr| :lad[dexpr] exprからロケーションリストの項目を追加 -|:laddbuffer| :laddb[uffer] バッファからロケーションリストの項目を追加 -|:laddfile| :laddf[ile] 現在のロケーションリストに項目を追加 -|:last| :la[st] 引数リストの最後のファイルを編集 -|:language| :lan[guage] 言語(ロケール)を設定する -|:later| :lat[er] バッファを時間的に新しい状態に戻す。リドゥ -|:lbuffer| :lb[uffer] バッファからロケーションリストを解釈し、 - 最初のエラーへジャンプ -|:lcd| :lc[d] ウィンドウのカレントディレクトリを変更する -|:lchdir| :lch[dir] ウィンドウのカレントディレクトリを変更する -|:lclose| :lcl[ose] ロケーションウィンドウを閉じる -|:lcscope| :lcs[cope] ":cscope"と同様だがロケーションリストを使う -|:left| :le[ft] 行を左寄せに整形 -|:leftabove| :lefta[bove] ウィンドウが左もしくは上に分割されるようにする -|:let| :let 変数またはオプションに値を設定する -|:lexpr| :lex[pr] 式からロケーションリストを読み込み、最初のエ - ラーへジャンプする -|:lfile| :lf[ile] ファイルからロケーションリストを読み込み、最初 - のエラーへジャンプする -|:lfirst| :lfir[st] 指定されたロケーションへジャンプする。デフォル - トは最初のロケーション。 -|:lgetbuffer| :lgetb[uffer] バッファからロケーションリストを取得する -|:lgetexpr| :lgete[xpr] 式からロケーションリストを取得する -|:lgetfile| :lg[etfile] ファイルからロケーションリストを取得する -|:lgrep| :lgr[ep] 'grepprg'を実行し、最初のマッチへジャンプする -|:lgrepadd| :lgrepa[dd] :grepと同様だが現在のリストに追加する -|:lhelpgrep| :lh[elpgrep] ":helpgrep"と同様だがロケーションリストを使う -|:ll| :ll 特定のロケーションへ移動する -|:llast| :lla[st] 特定のロケーションへ移動する。デフォルトは最後 - のロケーション -|:llist| :lli[st] 全てのロケーションをリストする -|:lmake| :lmak[e] 外部プログラム'makeprg'を実行、エラーメッセー - ジを解釈する。 -|:lmap| :lm[ap] ":map!"と同だが、Lang-Argモードも対象 -|:lmapclear| :lmapc[lear] ":mapclear!"と同じだが、Lang-Argモードも対象 -|:lnext| :lne[xt] 次のロケーションへ移動 -|:lnewer| :lnew[er] 新しいロケーションリストへ移動 -|:lnfile| :lnf[ile] 次のファイルの最初のロケーションへ移動 -|:lnoremap| :ln[oremap] ":noremap!"と同じだが、Lang-Argモードも対象 -|:loadkeymap| :loadk[eymap] 次の行からEOFまでキーマップをロードする -|:loadview| :lo[adview] カレントウィンドウにビューを読み込む -|:lockmarks| :loc[kmarks] マークを調整せずにコマンドを実行する -|:lockvar| :lockv[ar] 変数をロックする -|:lolder| :lol[der] 以前のロケーションリストへ移動 -|:lopen| :lope[n] ロケーションウィンドウを開く -|:lprevious| :lp[revious] 前のロケーションへ移動 -|:lpfile| :lpf[ile] 前のファイルの最後のロケーションへ移動 -|:lrewind| :lr[ewind] 指定されたロケーションへ移動。デフォルトは最初 - のロケーション -|:ls| :ls すべてのバッファを表示 -|:ltag| :lt[ag] タグへジャンプし、マッチしたタグをロケーション - リストに追加する -|:lunmap| :lu[nmap] ":unmap!"と同じだが、Lang-Argモードも対象 -|:lua| :lua |Lua| コマンドを実行 -|:luado| :luad[o] 各行に対して Lua コマンドを実行 -|:luafile| :luaf[ile] |Lua| スクリプトファイルを実行 -|:lvimgrep| :lv[imgrep] ファイルからパターンを検索する -|:lvimgrepadd| :lvimgrepa[dd] :vimgrepと同様だが、ロケーションリストに追加す - る -|:lwindow| :lw[indow] ロケーションウィンドウを開閉する -|:move| :m[ove] 行を移動する -|:mark| :ma[rk] マークを設定 -|:make| :mak[e] 外部プログラム'makeprg'を実行し、エラーメッ - セージを解釈する -|:map| :map マップの設定または表示 -|:mapclear| :mapc[lear] ノーマルモードとビジュアルモードを対象にマップ - をクリア -|:marks| :marks すべてのマークを表示 -|:match| :mat[ch] 指定したパターンの文字を強調表示する -|:menu| :me[nu] 新しいメニュー項目を追加 -|:menutranslate| :menut[ranslate] 翻訳したメニュー項目を追加する -|:messages| :mes[sages] 直前に表示されたメッセージの表示 -|:mkexrc| :mk[exrc] 現在のマップと設定をファイルに書き出す -|:mksession| :mks[ession] セッション情報をファイルに書き出す -|:mkspell| :mksp[ell] スペルファイル .splを生成する -|:mkview| :mkvie[w] カレントウィンドウのビューをファイルに保存する -|:mkvimrc| :mkv[imrc] 現在のマップと設定をファイルに書き出す -|:mode| :mod[e] スクリーンモードを表示または変更する -|:mzscheme| :mz[scheme] MzSchemeコマンドを実行する -|:mzfile| :mzf[ile] MzSchemeスクリプトファイルを実行する -|:nbclose| :nbc[lose] 現在の Netbeans セッションを閉じる -|:nbstart| :nbs[art] 新しい Netbeans セッションを開始する -|:nbkey| :nb[key] キーをNetbeansに渡す -|:next| :n[ext] 引数リストの次のファイルを開く -|:new| :new 新規に空のウィンドウを作成する -|:nmap| :nm[ap] ノーマルモードを対象とする ":map" コマンド -|:nmapclear| :nmapc[lear] ノーマルモードのすべてのマップを削除する -|:nmenu| :nme[nu] ノーマルモードのメニューを追加する -|:nnoremap| :nn[oremap] ノーマルモードを対象とする ":noremap" コマンド -|:nnoremenu| :nnoreme[nu] ノーマルモードを対象とする ":noremenu" コマン -|:noautocmd| :noa[utocmd] 自動コマンドを実行せずにコマンドを実行する -|:noremap| :no[remap] 再マップされないマップを定義する -|:nohlsearch| :noh[lsearch] 一時的に'hlsearch'の強調表示をやめる -|:noreabbrev| :norea[bbrev] 再マップされない短縮入力を定義する -|:noremenu| :noreme[nu] 再マップされないメニューを定義する -|:normal| :norm[al] ノーマルモードのコマンドを実行する -|:number| :nu[mber] 行番号を表示 -|:nunmap| :nun[map] ノーマルモードを対象とする ":unmap" コマンド -|:nunmenu| :nunme[nu] ノーマルモードのメニューを削除 -|:oldfiles| :ol[dfiles] viminfo ファイルに記録されたマークを持つファイ - ルを表示する -|:open| :o[pen] openモードを開始(未実装) -|:omap| :om[ap] Operator-pending モードを対象とする ":map" - コマンド -|:omapclear| :omapc[lear] Operator-pending モードのマップをすべて削除 -|:omenu| :ome[nu] Operator-pending モードのメニューを追加 -|:only| :on[ly] カレントウィンドウ以外のウィンドウをすべて閉じる -|:onoremap| :ono[remap] Operator-pending モードを対象とする ":noremap" - コマンド -|:onoremenu| :onoreme[nu] Operator-pending モードを対象とする - ":noremenu" コマンド -|:options| :opt[ions] オプションウィンドウを開く -|:ounmap| :ou[nmap] Operator-pending モードを対象とした ":unmap" - コマンド -|:ounmenu| :ounme[nu] Operator-pending モードのメニューを削除 -|:ownsyntax| :ow[nsyntax] ウィンドウのローカル構文強調を新たに設定する -|:pclose| :pc[lose] プレビューウィンドウを閉じる -|:pedit| :ped[it] プレビューウィンドウでファイルを開く -|:perl| :pe[rl] Perl コマンドを実行 -|:print| :p[rint] 行単位で印刷する -|:profdel| :profd[el] 関数やスクリプトのプロファイリングを停止する -|:profile| :prof[ile] 関数やスクリプトのプロファイリングをする -|:promptfind| :pro[mptfind] GUIの検索ダイアログを開く -|:promptrepl| :promptr[epl] GUIの検索・置換ダイアログを開く -|:perldo| :perld[o] 1行ずつ Perl コマンドを実行 -|:pop| :po[p] タグスタックの1つ古いエントリへジャンプ -|:popup| :pop[up] 指定した名前のメニューをポップアップ表示する -|:ppop| :pp[op] プレビューウィンドウで ":pop" を実行 -|:preserve| :pre[serve] すべてのテキストをスワップファイルに書き出す -|:previous| :prev[ious] 引数リスト中の前のファイルを読み込む -|:psearch| :ps[earch] ":ijump"と同じだが、結果をプレビューウィンドウ - で表示する -|:ptag| :pt[ag] プレビューウィンドウでタグを表示 -|:ptNext| :ptN[ext] プレビューウィンドウで |:tNext| を実行 -|:ptfirst| :ptf[irst] プレビューウィンドウで|:trewind| を実行 -|:ptjump| :ptj[ump] プレビューウィンドウで |:tjump| を実行、タグを - 表示 -|:ptlast| :ptl[ast] プレビューウィンドウで |:tlast| を実行 -|:ptnext| :ptn[ext] プレビューウィンドウで |:tnext| を実行 -|:ptprevious| :ptp[revious] プレビューウィンドウで |:tprevious| を実行 -|:ptrewind| :ptr[ewind] プレビューウィンドウで |:trewind| を実行 -|:ptselect| :pts[elect] プレビューウィンドウで |:tselect| を実行、タグ - を表示 -|:put| :pu[t] テキストにレジスタの内容を挿入 -|:pwd| :pw[d] カレントディレクトリを表示 -|:py3| :py3 Python 3 コマンドを実行 -|:python3| :python3 :py3 と同じ -|:py3file| :py3f[ile] Python 3 スクリプトファイルを実行 -|:python| :py[thon] Python コマンドを実行 -|:pyfile| :pyf[ile] Python スクリプトファイルを実行 -|:quit| :q[uit] カレントウィンドウを閉じる(ウィンドウが1つなら - Vim を終了) -|:quitall| :quita[ll] Vim を終了 -|:qall| :qa[ll] Vim を終了 -|:read| :r[ead] テキストにファイルを挿入 -|:recover| :rec[over] スワップファイルからファイルを復元 -|:redo| :red[o] 1回のアンドゥをリドゥする -|:redraw| :redr[aw] 画面を再描画する -|:redrawstatus| :redraws[tatus] ステータスラインを再描画する -|:redir| :redi[r] ファイルまたはレジスタにメッセージをリダイレク - トする -|:registers| :reg[isters] レジスタの内容を表示 -|:resize| :res[ize] カレントウィンドウの高さを変更 -|:retab| :ret[ab] タブの大きさを変更 -|:return| :retu[rn] ユーザファンクションからリターンする -|:rewind| :rew[ind] 引数リストの先頭のファイルを開く -|:right| :ri[ght] テキストを右寄せに整形 -|:rightbelow| :rightb[elow] ウィンドウが右もしくは下に分割されるようにする -|:ruby| :rub[y] Rubyのコマンドを実行する -|:rubydo| :rubyd[o] 各行に対してRubyのコマンドを実行する -|:rubyfile| :rubyf[ile] Rubyスクリプトファイルを実行する -|:rundo| :rund[o] アンドゥ情報をファイルから読み込む -|:runtime| :ru[ntime] Vimスクリプトを'runtimepath'から探して実行する -|:rviminfo| :rv[iminfo] viminfo ファイルを読み込む -|:substitute| :s[ubstitute] テキストの置換 -|:sNext| :sN[ext] ウィンドウを分割して、引数リストの前のファイル - を開く -|:sandbox| :san[dbox] サンドボックスでコマンドを実行する -|:sargument| :sa[rgument] ウィンドウを分割して、引数リストの指定ファイル - を開く -|:sall| :sal[l] 引数リストのすべてのファイルをウィンドウを作成 - して開く -|:saveas| :sav[eas] 別の名前でファイルを保存する -|:sbuffer| :sb[uffer] ウィンドウを分割してバッファリストの指定した - バッファを開く -|:sbNext| :sbN[ext] ウィンドウを分割してバッファリストの前の - バッファを開く -|:sball| :sba[ll] バッファリストのすべてのバッファをウィンドウを - 作成して開く -|:sbfirst| :sbf[irst] ウィンドウを分割してバッファリストの最初の - バッファを開く -|:sblast| :sbl[ast] ウィンドウを分割してバッファリストの最後の - バッファを開く -|:sbmodified| :sbm[odified] ウィンドウを分割してバッファリストの変更済み - バッファを開く -|:sbnext| :sbn[ext] ウィンドウを分割してバッファリストの次の - バッファを開く -|:sbprevious| :sbp[revious] ウィンドウを分割してバッファリストの前の - バッファを開く -|:sbrewind| :sbr[ewind] ウィンドウを分割してバッファリストの最初の - バッファを開く -|:scriptnames| :scrip[tnames] 実行済みVimスクリプトの名前を一覧表示する -|:scriptencoding| :scripte[ncoding] Vimスクリプトが使用しているエンコー - ディングを指定する -|:scscope| :scs[cope] ウィンドウを分割してcscopeコマンドを実行する -|:set| :se[t] オプションを表示または設定する -|:setfiletype| :setf[iletype] まだ設定されていなければ'filetype'を設定する -|:setglobal| :setg[lobal] グローバルオプションを表示もしくは設定する -|:setlocal| :setl[ocal] ローカルオプションを表示もしくは設定する -|:sfind| :sf[ind] ウィンドウを分割して、'path' にあるファイルを - 開く -|:sfirst| :sfir[st] ウィンドウを分割して引数リストの最初のファイル - を開く -|:shell| :sh[ell] シェルを実行する -|:simalt| :si[malt] Win32 GUI: Windows ALT キーをシミュレートする -|:sign| :sig[n] 目印を取り扱うコマンド -|:silent| :sil[ent] 実行したコマンドの出力を抑制する -|:sleep| :sl[eep] 数秒間なにもしない -|:slast| :sla[st] ウィンドウを分割して引数リストの最後のファイル - を開く -|:smagic| :sm[agic] 'magic' オプションの下で :substitute を実行 -|:smap| :sma[p] ":map"と同様。選択モード用 -|:smapclear| :smapc[lear] 選択モードのすべてのマップを削除する -|:smenu| :sme[nu] 選択モードのメニューを追加する -|:snext| :sn[ext] ウィンドウを分割して引数リストの次のファイルを - 開く -|:sniff| :sni[ff] sniffにリクエストを送信する -|:snomagic| :sno[magic] 'nomagic' オプションの下で :substitute を実行 -|:snoremap| :snor[emap] ":noremap"と同様。選択モード用 -|:snoremenu| :snoreme[nu] ":noremenu"と同様。選択モード用 -|:sort| :sor[t] 行をソートする -|:source| :so[urce] Vim or Ex コマンドをファイルから読み込む -|:spelldump| :spelld[ump] ウィンドウを分割し、正しい単語を列挙する -|:spellgood| :spe[llgood] スペルチェック用に正しい単語を登録する -|:spellinfo| :spelli[nfo] 読み込んでいるスペルファイルの情報を表示する -|:spellrepall| :spellr[epall] 最後の|z=|と同様にすべての間違った単語を置換 -|:spellundo| :spellu[ndo] 正しいまたは間違った単語を削除 -|:spellwrong| :spellw[rong] スペリングの間違いを登録する -|:split| :sp[lit] カレントウィンドウを分割 -|:sprevious| :spr[evious] ウィンドウを分割して引数リストの前のファイルを - 開く -|:srewind| :sre[wind] ウィンドウを分割して引数リストの最初のファイル - を開く -|:stop| :st[op] Vimをサスペンドする -|:stag| :sta[g] ウィンドウを分割して、タグへジャンプする -|:startinsert| :star[tinsert] 挿入モードを開始する -|:startgreplace| :startg[replace] バーチャル上書きモードを開始する -|:startreplace| :startr[eplace] 上書きモードを開始する -|:stopinsert| :stopi[nsert] 挿入モードを終了する -|:stjump| :stj[ump] ウィンドウを分割して、":tjump" を実行 -|:stselect| :sts[elect] ウィンドウを分割して、":tselect" を実行 -|:sunhide| :sun[hide] ":unhide" と同じ。 -|:sunmap| :sunm[ap] ":unmap"と同様。選択モード用 -|:sunmenu| :sunme[nu] 選択モードのメニューを削除する -|:suspend| :sus[pend] ":stop" と同じ。 -|:sview| :sv[iew] ウィンドウを分割してファイルを読み込み専用 - で開く -|:swapname| :sw[apname] 現在のスワップファイルの名前を表示 -|:syntax| :sy[ntax] 構文強調表示 (syntax highlighting) -|:syncbind| :sync[bind] ウィンドウのスクロール状態を同期する -|:t| :t ":copy" と同じ。 -|:tNext| :tN[ext] 後方へ検索し一致したタグ位置へジャンプ -|:tabNext| :tabN[ext] 前のタブページへ移動 -|:tabclose| :tabc[lose] 現在のタブページを閉じる -|:tabdo| :tabdo 各タブページでコマンドを実行する -|:tabedit| :tabe[dit] 新しいタブページでファイルを開く -|:tabfind| :tabf[ind] 'path'からファイルを探し新しいタブページで開く -|:tabfirst| :tabfir[st] 最初のタブページへ移動 -|:tablast| :tabl[ast] 最後のタブページへ移動 -|:tabmove| :tabm[ove] タブページの位置を移動 -|:tabnew| :tabnew 新しいタブページでファイルを編集する -|:tabnext| :tabn[ext] 次のタブページへ移動 -|:tabonly| :tabo[nly] 現在のタブページ以外をすべて閉じる -|:tabprevious| :tabp[revious] 前のタブページへ移動 -|:tabrewind| :tabr[ewind] 最初のタブページへ移動 -|:tabs| :tabs タブページとその中身を列挙 -|:tab| :tab 新しいウィンドウを開くとき新しいタブを作る -|:tag| :ta[g] タグを検索しジャンプする -|:tags| :tags タグスタックの内容を表示 -|:tcl| :tc[l] Tcl コマンドを実行 -|:tcldo| :tcld[o] 各行の Tcl コマンドを実行 -|:tclfile| :tclf[ile] Tcl スクリプトファイルを実行 -|:tearoff| :te[aroff] メニューを切り離す -|:tfirst| :tf[irst] 複数一致した内の最初のタグへジャンプ -|:throw| :th[row] 例外を投げる -|:tjump| :tj[ump] ":tselect" と同様、ただし一致したタグが1つし - かない場合、その場所へジャンプ -|:tlast| :tl[ast] 直前に一致したタグ位置へジャンプ -|:tmenu| :tm[enu] ツールチップメニューを定義する -|:tnext| :tn[ext] タグを前方検索し、ジャンプ -|:tprevious| :tp[revious] タグを後方検索し、ジャンプ -|:topleft| :to[pleft] ウィンドウが最も左もしくは最も上に分割されるよ - うにする -|:trewind| :tr[ewind] 最初に一致したタグ位置へジャンプ -|:tselect| :ts[elect] 一致したタグを一覧表示し、ジャンプ先のタグ - を選択 -|:tunmenu| :tu[nmenu] ツールチップメニューを削除 -|:try| :try コマンドを実行し発生したエラーや例外を処理する -|:undo| :u[ndo] 最後の変更を取り消す -|:undojoin| :undoj[oin] 次の変更を前のアンドゥブロックと連結する -|:undolist| :undol[ist] アンドゥツリーのリーフを列挙する -|:unabbreviate| :una[bbreviate] 短縮入力を削除 -|:unhide| :unh[ide] バッファリストのメモリにロードされているすべて - のバッファをウィンドウを作成して開く -|:unlet| :unl[et] 変数を削除 -|:unlockvar| :unlo[ckvar] 変数をアンロックする -|:unmap| :unm[ap] マップを削除 -|:unmenu| :unme[nu] メニューを削除 -|:unsilent| :uns[ilent] コマンドを silent でなく実行する -|:update| :up[date] バッファ内容が変更されていれば、ファイルに書 - き出す -|:vglobal| :v[global] パターンにマッチしない行でコマンドを実行する -|:version| :ve[rsion] バージョン番号その他の情報を表示 -|:verbose| :verb[ose] 'verbose'を一時設定してコマンドを実行する -|:vertical| :vert[ical] ウィンドウが垂直分割されるようにする -|:vimgrep| :vim[grep] 複数ファイルからパターンを検索する -|:vimgrepadd| :vimgrepa[dd] :vimgrepと同様だが現在のリストに追加 -|:visual| :vi[sual] ":edit" と同じ、ただし "Ex" モードから抜ける。 -|:viusage| :viu[sage] ノーマルモードコマンドの概観 -|:view| :vie[w] 読み込み専用でファイルを開く -|:vmap| :vm[ap] ビジュアル・セレクトモードを対象とする ":map" コマンド -|:vmapclear| :vmapc[lear] ビジュアル・セレクトモードのマッピングをすべて削除 -|:vmenu| :vme[nu] ビジュアル・セレクトモードのメニューを追加 -|:vnew| :vne[w] 新しいウィンドウを垂直分割して作る -|:vnoremap| :vn[oremap] ビジュアル・セレクトモードを対象とする ":noremap" - コマンド -|:vnoremenu| :vnoreme[nu] ビジュアル・セレクトモードを対象とする ":noremenu" - コマンド -|:vsplit| :vs[plit] カレントウィンドウを垂直分割する -|:vunmap| :vu[nmap] ビジュアル・セレクトモードを対象とする ":unmap" コマン - ド -|:vunmenu| :vunme[nu] ビジュアルモードのメニューを削除 -|:windo| :windo 各ウィンドウに対してコマンドを実行する -|:write| :w[rite] ファイルに保存 -|:wNext| :wN[ext] ファイルに保存して、引数リストの直前のファイ - ルを開く -|:wall| :wa[ll] (変更した)すべてのバッファを保存 -|:while| :wh[ile] 与えた条件を満たしている限りループする -|:winsize| :wi[nsize] ウィンドウサイズを取得もしくはセットする(古 - いコマンド) -|:winpos| :winp[os] ウィンドウの位置を取得もしくはセットする -|:wincmd| :winc[md] ウィンドウコマンド(CTRL-W)を実行する -|:wnext| :wn[ext] ファイルに保存して、引数リストの次のファイル - を開く -|:wprevious| :wp[revious] ファイルに保存して、引数リストの直前のファイ - ルを開く -|:wq| :wq ファイルに保存して、ウィンドウもしくは Vim を終 - 了 -|:wqall| :wqa[ll] すべての変更済みバッファを保存し、Vim を終了 -|:wundo| :wu[ndo] アンドゥ情報をファイルに保存する -|:wviminfo| :wv[iminfo] viminfo ファイルに保存 -|:wsverb| :ws[verb] workshopに命令をIPCで送信する -|:xit| :x[it] バッファが変更されていたら保存し、ウィンドウ - もしくは Vim を終了 -|:xall| :xa[ll] ":wqall" と同じ。 -|:xmapclear| :xmapc[lear] ビジュアルモード時のマッピングを全て削除する -|:xmap| :xm[ap] ":map"と同様。ビジュアルモード用 -|:xmenu| :xme[nu] ビジュアルモード時にメニューを追加する -|:xnoremap| :xn[oremap] ":noremap"と同様。ビジュアルモード用 -|:xnoremenu| :xnoreme[nu] ":noremenu"と同様。ビジュアルモード用 -|:xunmap| :xu[nmap] ":unmap"と同様。ビジュアルモード用 -|:xunmenu| :xunme[nu] ビジュアルモード時にメニューを削除する -|:yank| :y[ank] 行をレジスタへヤンク -|:z| :z 行を表示 -|:~| :~ 直前に実行した ":substitute" を実行 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/insert.jax b/runtime.old/doc/insert.jax deleted file mode 100644 index c25b55452..000000000 --- a/runtime.old/doc/insert.jax +++ /dev/null @@ -1,1852 +0,0 @@ -*insert.txt* For Vim バージョン 7.3. Last change: 2010 Nov 10 - - - VIMリファレンスマニュアル by Bram Moolenaar - - - *Insert* *Insert-mode* -テキストの挿入と置換 *mode-ins-repl* - -よく使われるコマンドの概要がユーザーマニュアルの24章|usr_24.txt|にあります。 - -このファイルの大部分は挿入と置換モードについて記述してある。終わりのほうにテキ -ストを挿入する別の方法を記述している。 - -1. 特別なキー |ins-special-keys| -2. もっと特別なキー |ins-special-special| -3. 'textwidth'と'wrapmargin'オプション |ins-textwidth| -4. 'expandtab'、'smarttab'それと'softtabstop'オプション |ins-expandtab| -5. 置換モード |Replace-mode| -6. 仮想置換モード |Virtual-Replace-mode| -7. 挿入モードの補完 |ins-completion| -8. 挿入モードのコマンド |inserting| -9. Exの挿入コマンド |inserting-ex| -10. ファイルを挿入する |inserting-file| - -文字のない場所にカーソルと移動するためには'virtualedit'も参照してください。表 -を編集するときに便利です。 - -============================================================================== -1. 特別なキー *ins-special-keys* - -挿入と置換モードでは、次の文字には特別な意味がある:その他の文字はそのまま入力 -される。それらの特別な文字をバッファに入力するには、CTRL-Vに続けて入力する。 -<Nul>文字を入力するには"CTRL-V CTRL-@"か"CTRL-V 000"を使用する。あるシステムで -は、CTRL-Cを入力するのに"CTRL-V 003"を使わなければならない。Note: CTRL-Vに他の -動作がマップされているときは、多くの場合、代わりにCTRL-Qを使います|i_CTRL-Q|。 - -テキストを入力中に特別な言語のモードを使用している場合には、いつもこのモードが -ON/OFFと切り替えられてしまうのをどう避けるかを示す、'langmap'オプション -|'langmap'|を参照する。 - -'insertmode'を設定した場合には、<Esc>と他の幾つかのキーに別の意味が与えられ -る。|'insertmode'|を参照。 - -文字 アクション ~ ------------------------------------------------------------------------ - *i_CTRL-[* *i_<Esc>* -<Esc> or CTRL-[ 挿入/置換モードを終了し、ノーマルモードに戻る。短縮入力を終了 - する。 - Note: キーボードによっては<Esc>が押し難いかもしれないが、その - 時にはCTRL-[を使うようにする。 - *i_CTRL-C* -CTRL-C 挿入モードを終了し、ノーマルモードに戻る。短縮入力はチェック - しない。CTRL-C でインサートモードを抜けると |InsertLeave| が発 - 生しない。 - - *i_CTRL-@* -CTRL-@ 直前に挿入されたテキストをもう一度挿入し、挿入を終了する。{Vi: - 最初に入力された時だけ、かつ最大128文字まで} - *i_CTRL-A* -CTRL-A 直前に挿入されたテキストをもう一度挿入する。 {Vi にはない} - - *i_CTRL-H* *i_<BS>* *i_BS* -<BS> or CTRL-H カーソルの前の文字を削除する(行同士の連結については - |i_backspacing|参照)。 - <BS>キーが想定するように働かない場合には|:fixdel|を参照。 - {Vi: 自動字下げは消すことができない} - *i_<Del>* *i_DEL* -<Del> カーソルの下の文字を削除する。カーソルが行末にあり、 - 'backspace'オプションに"eol"が含まれている場合には、<EOL>が削 - 除される; 現在の行の後ろに次の行が接続される。 - <Del>キーが想定するように働かない場合には|:fixdel|を参照。 - {Vi にはない} - *i_CTRL-W* -CTRL-W カーソルの前にある単語を削除する(行同士の連結については - |i_backspacing|参照)。単語の定義については"word motions"の節 - |word-motions|を参照。 - *i_CTRL-U* -CTRL-U 現在の行の入力済み文字全部を削除する(行同士の連結については - |i_backspacing|参照)。 - - *i_CTRL-I* *i_<Tab>* *i_Tab* -<Tab> or CTRL-I タブを挿入する。'expandtab'オプションが設定されていれば、同じ - 数の空白文字が挿入される(展開を避けるためにはCTRL-V <Tab>を使 - う。CTRL-Vに他の動作がマップされているときはCTRL-Q <Tab>を使 - う|i_CTRL-Q|)。'smarttab'オプションと|ins-expandtab|も参照。 - *i_CTRL-J* *i_<NL>* -<NL> or CTRL-J 新しい行を始める。 - *i_CTRL-M* *i_<CR>* -<CR> or CTRL-M 新しい行を始める。 - *i_CTRL-K* -CTRL-K {char1} [char2] - 合字(|digraphs|参照)を入力する。{char1}が特別なキーだった場 - 合、そのキーのコードが<>の形で挿入される。例えば、 - <C-K><S-Space>(キー2つ)と入力することで、文字列"<S-Space>"が入 - 力される。マッピングも考慮されない。 {Vi にはない} - -CTRL-N 次のキーワードを探す(|i_CTRL-N|を参照)。 {Vi にはない} -CTRL-P 前のキーワードを探す(|i_CTRL-P|を参照)。 {Vi にはない} - -CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* - レジスタの内容を挿入する。CTRL-Rをタイプしてから2つ目の文字を - タイプするまで、レジスタの名前の入力が期待されていることを示す - ため、'"'が表示される。 - テキストはタイプしたかのように挿入されるが、マッピングや短縮入 - 力の展開はされない。'textwidth'や'formatoptions'や'autoindent' - のようなオプションが設定されている場合には、入力されたテキスト - に対して効力を持つ。これは"p"コマンドやマウスによる貼り付けと - は、違う動作になる。 - 特別なレジスタ: - '"' 最後に削除されたりヤンクされたテキストの入って - いる、名前なしレジスタ - '%' 現在のファイル名 - '#' 代替バッファのファイル名 - '*' クリップボードの内容 (X11: プライマリセレク - ション) - '+' クリップボードの内容 - '/' 最後に検索を行ったパターン - ':' 最後に実行したコマンドライン - '.' 最後に挿入したテキスト - '-' 最後に削除した小さい(行単位以下の)領域 - *i_CTRL-R_=* - '=' 式評価レジスタ: 式評価の入力を求められる - (|expression|参照)。 - 0x80 (10進数で 128) は特殊なキーのために使われ - る。例:次のコマンドでカーソルを上に移動できる: - CTRL-R ="\<Up>" - 文字をそのまま挿入するには CTRL-R CTRL-R を使 - うこと。 - 結果が |List| のときは各要素を行として挿入する。 - 要素の中に改行文字があってもよい。 - 結果が浮動小数点数のときは自動的に文字列に変換 - される。 - レジスタについては|registers|を参照。 {Vi にはない} - -CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* - レジスタの内容を挿入する。CTRL-Rが一つの時と同様に働くが、タイ - プされたようにではなく、テキストは文字通りに挿入される。これは - レジスタに<BS>のような文字が含まれていた場合に違いを生じる。例 - えば"ab^Hc"という内容のレジスタaがあった場合: > - CTRL-R a 結果は"ac". - CTRL-R CTRL-R a 結果は"ab^Hc". -< オプション'textwidth'、'formatoptions'その他はまだ適用される。 - これらも避けたいのならば下記の"<C-R><C-O>r"を使用する。'.'レジ - スタ(最後に挿入されたテキスト)は、まだタイプされたように扱われ - る。{Vi にはない} - -CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O* - レジスタの内容が文字通り挿入され、自動字下げも行われない。マウ - スによる貼り付け|<MiddleMouse>|と同様である。 - キャラクタは置き換えられない! - '.'レジスタ(最後に挿入されたテキスト)は、まだタイプされたよう - に扱われる。 - -CTRL-R CTRL-P {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-P* - レジスタの内容が文字通りに挿入され、インデントが - |[<MiddleMouse>|同様に修正される。 - キャラクタは置き換えられない! - '.'レジスタ(最後に挿入されたテキスト)は、まだタイプされたよう - に扱われる。 - - *i_CTRL-T* -CTRL-T 現在の行の先頭にshiftwidth一単位分の字下げを挿入する。字下げ幅 - は'shiftwidth'に丸められる(これはviと同じ)。{Vi: 字下げされて - いる時だけ} - *i_CTRL-D* -CTRL-D 現在の行の先頭の字下げを、shiftwidth一単位分削除する。字下げ幅 - は'shiftwidth'に丸められる(これはviと同じ)。{Vi: CTRL-Dは自動 - 字下げの適用後にしか使えない} - *i_0_CTRL-D* -0 CTRL-D 現在行の字下げを完全に削除する。{Vi: CTRL-Dは自動字下げの適用 - 後にしか使えない} - *i_^_CTRL-D* -^ CTRL-D 現在行の字下げを完全に削除する。次の行では字下げは元に戻され - る。これはラベルを入力する際に役に立つ。{Vi: CTRL-Dは自動字下 - げの適用後にしか使えない} - - *i_CTRL-V* -CTRL-V 続く非数字文字を文字通りに挿入する。特別なキーはターミナルコー - ドが挿入される。10進数、8進数、16進数、の数字で文字コードを直 - 接指定することもできる|i_CTRL-V_digit|。CTRL-Vの後の入力には - マップは適用されない。{Vi: 数字文字をバイトに変換できない} - Note: CTRL-Vに他の動作がマップされているとき(例えばテキストを - ペーストするなど)、その場合には代わりにCTRL-Qを使用する - |i_CTRL-Q|。 - - *i_CTRL-Q* -CTRL-Q CTRL-Vと同じ。 - Note: ある種のターミナルではCTRL-Qを使用できない。GUIでは使え - る。 - -CTRL-X CTRL-Xモードに入る。これは単語の補完やウィンドウスクロールのコ - マンドを入力する、サブモードである。|i_CTRL-X|と - |ins-completion|を参照。{Vi にはない} - - *i_CTRL-E* -CTRL-E カーソルの下の行の同じ位置の文字を挿入。{Vi にはない} - *i_CTRL-Y* -CTRL-Y カーソルの上の行の同じ位置の文字を挿入。{Vi にはない} - 'textwidth'はCTRL-EとCTRL-Yには、長い行から文字をコピーするこ - とを可能にするために、効力を発揮しないことに注意。 - - *i_CTRL-_* -CTRL-_ 次に示すように言語を切り替える: - - 右→左ウィンドウでは、revinsとnohkmapに切り替えられ、この場 - 合英語を挿入できるようになる。 - - 右→左ウィンドウ以外ではrevinsとhkmapに切り替えられ、この場 - 合ヘブライ語を挿入できるようになる。 - - CTRL-_はカーソルをタイプ済みテキストの末尾に移動させる。 - - このコマンドは'allowrevins'オプションが設定されている時のみ有 - 効。 - 右→左モードについての詳しい情報は|rileft.txt|を参照。 - {Vi にはない} - |+rightleft|機能を有効(にしてコンパイルした時にだけ使用可能。 - - *i_CTRL-^* -CTRL-^ 入力言語を切替える。 - 言語マッピング|:lmap|が定義されているとき: - 'iminsert'が1(言語マッピングが使われている)なら0(言語マッ - ピングを使わない)になる。 - 'iminsert'が他の値なら1になる。したがって言語マッピングが - 有効になる。 - 言語マッピングが定義されていないとき: - 'iminsert'が2(インプットメソッドが使われている)なら0(イン - プットメソッドを使わない)になる。 - 'iminsert'がその他の値なら2になる。したがってインプットメ - ソッドが有効になる。 - 'iminsert'を1にすると"b:keymap_name"の値、または'keymap'オプ - ションか"<lang>"がステータスラインに表示される。 - 言語マッピングは通常はキーボードにない文字を打つのに使われる。 - これらの値を設定するために'keymap'オプションを使える。 - {Vi にはない} - - *i_CTRL-]* -CTRL-] 文字を入れることなく、短縮入力をトリガーする。{Vi にはない} - - *i_<Insert>* -<Insert> 挿入と置換モードを交互に切り替える。{Vi にはない} ------------------------------------------------------------------------ - - *i_backspacing* -<BS>、CTRL-WそしてCTRL-Uの効果は'backspace'オプションに依存している('revins'が -設定されていなければ)。これは下記の項目をカンマで区切ったリストになっている: - -項目 アクション ~ -indent 字下げをバックスペースで消去可能 -eol 行末をバックスペースで消去可能(行を連結) -start 挿入の開始点を超えてバックスペースで消去可能; CTRL-WとCTRL-Uは一度 - スタート地点で停止する。 - -'backspace'が空の時、Vi互換のバックスペースが使用される。自動字下げや、第1カラ -ムの前、そして挿入の開始点を超えてのバックスペースはできない。 - -下位互換性のために、値として"0"、"1"そして"2"を使用することもできる。 -|'backspace'|参照。 - -'backspace'オプションが"eol"を含まれている時に、カーソルが第1カラムにあり、3つ -のキーのうちどれかが押されると、現在の行が1行前の行に連結される。これはカーソ -ルの前にある<EOL>を事実上消している。 -{Vi: 行をまたいだり、挿入の開始点を超えての削除はできない} - - *i_CTRL-V_digit* -CTRL-Vに続けて、10進数、8進数、16進数のどれかで文字コードを直接入力することが -できます。この方法で改行(<NL>, 数値 10)以外のどんな文字でも入力することができ -ます。文字コードを入力するには5つの方法があります。 - -最初の文字 モード 最大文字数 最大値 ~ -(なし) 10進数 3 255 -o か O 8進数 3 377 (255) -x か X 16進数 2 ff (255) -u 16進数 4 ffff (65535) -U 16進数 8 7fffffff (2147483647) - -入力できる文字数の最大まで入力すると、例えば<C-V>032と入力した場合にはスペー -ス(値32)が入る。一番上の桁のゼロは省略することができる。その場合には数値を入 -力した後に入力する文字は数字以外でなければならない。これは他のモードでも同じ -である。モード中で無効な文字を入力した場合には、それ以前に入力されたものが使 -われ無効な文字は通常の入力として扱われる。 - -値10を入力すると、それは0になってしまう。数値10は<NL>であり、内部で<Nul>文字 -を表すのに使われている。バッファをファイルに書き出すときに<NL>は<Nul>に変換 -される。<NL>は各行末に出力されるので、<NL>をファイルに書きたければ改行するこ -と。 - - *i_CTRL-X* *insert_expand* -CTRL-Xを押すと、幾つかのコマンドを使用することが出来る、サブモードに入る。これ -らのコマンドの多くはキーワードの補完である; |ins-completion|参照。Vimのコンパ -イル時に|+insert_expand|機能を無効にした場合には、この機能は使用できない。 - -次の2つのコマンドは、挿入モードを抜けることなくウィンドウを上下にスクロールさ -せることができる: - - *i_CTRL-X_CTRL-E* -CTRL-X CTRL-E ウィンドウを一行上にスクロール。 - 補完途中での機能については |complete_CTRL-E| を参照。 - - *i_CTRL-X_CTRL-Y* -CTRL-X CTRL-Y ウィンドウを一行下にスクロール。 - 補完途中での機能については |complete_CTRL-E| を参照。 - -CTRL-Xを押した後にCTRL-E(もしくはCTRL-Y)を押すと、現在のファイル内でカーソルを -現在の位置から動かすことなく、ウィンドウが一行上(下)にスクロールする。関係ない -キーが押されると、すぐにCTRL-Xモードは終了し、そのキーが挿入モードで押されたも -のとして解釈される。 - - -============================================================================== -2. もっと特別なキー *ins-special-special* - -下のキーは特別である。これらは現在の挿入を中断し、何かを行い、そして挿入を再開 -する。これは挿入モード出ることなく、何かをすることができることを意味している。 -これはモードが分かれていない普通のエディタのように、常に挿入モードを使用するの -が好みの場合には、とても便利である。これには'backspace'オプションに -"indent,eol,start"を設定し、'insertmode'オプションを設定すると良いだろう。コマ -ンドにファンクションキーをマップしたいならば、CTRL-Oを使うことができる。 - -これらのキーを使用する前後の変更(文字の挿入や削除)は、別々に取り消すことができ -る。最後の変更だけがやり直すことができ、常に"i"コマンドのように振舞う。 - -char action ~ ------------------------------------------------------------------------ -<Up> カーソルを1行上へ移動する *i_<Up>* -<Down> カーソルを1行下へ移動する *i_<Down>* -CTRL-G <Up> 1行上の、挿入開始位置と同じ列へ移動 *i_CTRL-G_<Up>* -CTRL-G k 1行上の、挿入開始位置と同じ列へ移動 *i_CTRL-G_k* -CTRL-G CTRL-K 1行上の、挿入開始位置と同じ列へ移動 *i_CTRL-G_CTRL-K* -CTRL-G <Down> 1行下の、挿入開始位置と同じ列へ移動 *i_CTRL-G_<Down>* -CTRL-G j 1行下の、挿入開始位置と同じ列へ移動 *i_CTRL-G_j* -CTRL-G CTRL-J 1行下の、挿入開始位置と同じ列へ移動 *i_CTRL-G_CTRL-J* -<Left> カーソルを1文字左へ移動する *i_<Left>* -<Right> カーソルを1文字右へ移動する *i_<Right>* -<S-Left> カーソルを1単語前へ("b"コマンドのように) *i_<S-Left>* -<C-Left> カーソルを1単語前へ("b"コマンドのように) *i_<C-Left>* -<S-Right> カーソルを1単語後へ("w"コマンドのように) *i_<S-Right>* -<C-Right> カーソルを1単語後へ("w"コマンドのように) *i_<C-Right>* -<Home> カーソルを行の最初の文字へ *i_<Home>* -<End> カーソルを行の最後の文字の後へ *i_<End>* -<C-Home> カーソルをファイルの最初の文字へ *i_<C-Home>* -<C-End> カーソルをファイルの最後の文字の後へ *i_<C-End>* -<LeftMouse> カーソルをマウスでクリックした位置へ *i_<LeftMouse>* -<S-Up> 1ページ上へ *i_<S-Up>* -<PageUp> 1ページ上へ *i_<PageUp>* -<S-Down> 1ページ下へ *i_<S-Down>* -<PageDown> 1ページ下へ *i_<PageDown>* -<ScrollWheelDown> ウィンドウを3行下へ移動 *i_<ScrollWheelDown>* -<S-ScrollWheelDown> ウィンドウを1ページ下へ移動 *i_<S-ScrollWheelDown>* -<ScrollWheelUp> ウィンドウを3行上へ移動 *i_<ScrollWheelUp>* -<S-ScrollWheelUp> ウィンドウを1ページ上へ移動 *i_<S-ScrollWheelUp>* -<ScrollWheelLeft> ウィンドウを6列左へ移動 *i_<ScrollWheelLeft>* -<S-ScrollWheelLeft> ウィンドウを1ページ左へ移動 *i_<S-ScrollWheelLeft>* -<ScrollWheelRight> ウィンドウを6列右へ移動 *i_<ScrollWheelRight>* -<S-ScrollWheelRight> ウィンドウを1ページ右へ移動 *i_<S-ScrollWheelRight>* -CTRL-O 1つコマンドを実行して、挿入モードに戻る *i_CTRL-O* -CTRL-\ CTRL-O CTRL-O と同様だがカーソルを移動させない *i_CTRL-\_CTRL-O* -CTRL-L 'insertmode' がオンのとき: ノーマルモードへ *i_CTRL-L* -CTRL-G u undo で元に戻す地点を新たに設定 *i_CTRL-G_u* ------------------------------------------------------------------------ - -Note: カーソルキーを押した時に挿入モードから抜けてしまったら、'noesckeys'オプ -ションをチェックする。 - -CTRL-Oコマンドは時々副作用を生じる: カーソルが行末を越えている場合に、行の最後 -の文字の上へ移動してしまうかもしれない。マッピングでは<Esc>を使うのが無難です -(まず"x"を入力し、<Esc>を押すとカーソルは常にその文字の上に置かれます)。または -CTRL-\ CTRL-O を使います。しかしその場合はカーソルが行末を越えてしまう可能性が -あることに注意。 - -CTRL-O コマンドでノーマルモードに移動できますが、そこでさらにインサートモード -に入ってもモードは入れ子になりません。例えば "a<C-O>a" と入力してから <Esc> を -押すとノーマルモードに帰ってきます。<Esc> を二回押す必要はありません。 - -Shiftキーを押しながらのカーソルキー操作は、全ての端末で可能なわけではない。 - -更に副作用として、"i"や"a"コマンドでの回数指定は無視される。そうしないと -CTRL-Oでのコマンドの繰り返しが複雑になってしまう。 - -CTRL-G u を使う例: > - - :inoremap <C-H> <C-G>u<C-H> - -これは undo できるバックスペースキーを再定義している。これで以前の入力を変 -更することなく CTRL-O u を使ってバックスペースの結果を元に戻せる。 - -CTRL-O は undo 位置を分割する。つまり、その前後に入力したテキストが別々にundo -されるようになる。これを避けたい場合(マッピングの中などで)は CTRL-R = -|i_CTRL-R| が使えるだろう。例: 関数を呼ぶ: > - :imap <F2> <C-R>=MyFunc()<CR> - -'whichwrap'オプションが適切に設定されているならば、行の先頭/末尾での<Left>と -<Right>キーは、カーソルを上の行や下の行へ移動させる。 - -CTRL-G j と CTRL-G k コマンドはカラムの前にテキストを挿入するのに使える。 -例: > - int i; - int j; -カーソルが最初の"int"にあるとき、"istatic <C-G>j "と入力するとこうなる: > - static int i; - int j; -全ての行のカラムに同じテキストを挿入するにはブロック選択コマンド "I"|v_b_I| -を使う。 - -============================================================================== -3. 'textwidth'と'wrapmargin'オプション *ins-textwidth* - -'textwidth'オプションは入力中の行が長くなりすぎる前に、自動的に改行を行うため -に使うことができる。'textwidth'オプションには望む最大行長を設定する。それを超 -えて文字(空白とタブを除く)を入力すると最後の単語が(それがその行の唯一の単語で -無いならば)次の行に置かれる。'textwidth'に0を設定すれば、この機能を無効にする -ことができる。 - -'wrapmargin'オプションはこれと殆ど同じことをする。違いは'textwidth'は固定幅な -のに対して、'wrapmargin'はスクリーンの幅に依存する。'wrapmargin'を使用すること -は、'textwidth'に(スクリーンのカラム数 - 'wrapmargin'に与えた値)を設定すること -に等しい。 - -'textwidth'と'wrapmargin'が両方とも設定されていた場合には、'textwidth'が使用さ -れる。 - -もしも本当には改行をしたくないけれども、見かけ上は具合の良い場所で折り返されて -ほしい場合には、'linebreak'オプションを参照。 - -自動的に改行されるのは、挿入モードを使用している時か、行に追加している時だけで -ある。置換モードで行の長さが代わらない時には、改行は行われない。 - -長い行は、マージンを超えて非空白文字を入力すると、改行される。この改行がなされ -る位置は、'formatoptions'オプションに与える文字で制御することが可能である: -"l" 挿入を始めた時に'textwidth'よりも既に長くない時にだけ、改行を行う。 -"v" 現在の挿入コマンドの間に挿入された空白文字の位置でのみ、改行を行う。これ - はほぼVi互換。 -"lv" 挿入を始めた時に'textwidth'よりも長くない行にだけ、かつその挿入コマンドの - 間に挿入された空白文字の位置でのみ、改行を行う。'textwidth'の境界を越えて - 非空白文字を入力した時に、"l"と違う。 - -通常は、どこで改行するかを内部関数を使って決定する。この挙動を変えたい場合は、 -'formatexpr' に改行を処理する式を設定すること。 - -テキストのブロックを整形(format)したいならば、"gq"オペレータを使うことができ -る。"gq"に続けて、ブロックの末尾までカーソルを動かす移動コマンドをタイプする。 -多くの場合、コマンド"gq}"が、望むこと(段落の最後までを整形)をしてくるだろう。 -代わりに、現在カーソルがどこにあるかに関わらず、パラグラフ全体をフォーマットし -てくれるコマンド、"gqap"を使うこともできる。またはビジュアル選択モードを使うこ -ともできる: "v"を押し、ブロックの最後まで移動し、"gq"とタイプする。|gq|も参 -照。 - -============================================================================== -4. 'expandtab'、'smarttab'それと'softtabstop'オプション *ins-expandtab* - -'expandtab'オプションがオンになっていると、タブ文字は空白文字(スペース)に展開 -され、その空白文字が挿入される。もし本当の<Tab>文字を挿入したいのならば、 -CTRL-Vを押してから入力する(CTRL-Vに他の動作がマップされているときはCTRL-Qを使 -う|i_CTRL-Q|)。 -'expandtab'は初期状態でオフになっている。置換モードでは、1文字が複数のスペース -で置換されることに注意。この結果、行の中の文字数は増える。バックスペースをする -と、1度に1つの空白が削除される。元々そこにあった文字は、1つのスペース(最後の1 -つ)を削除しただけで元に戻される。{Vi には'expandtabオプションは存在しない} - - *ins-smarttab* -'smarttab'オプションがオンの時には、1度の<Tab>で、行の先頭で<Tab>を1度押すと -'shiftwidth'の位置まで、その他の場所では'tabstop'の位置まで空白が挿入される。 -これは<Tab>文字の代わりに、度々スペースが挿入されることを意味している。 -'smarttab'がオフの時には、<Tab>では常に'tabstop'の位置まで空白が挿入され、 -'shiftwidth'は">>"などの時にだけ使用される。{Vi には無い機能} - - *ins-softtabstop* -'softtabstop'オプションが零ではない時、<Tab>は'softtabstop'で指定されるタブ位 -置まで空白を挿入し、<BS>は'softtabstop'で指定されるタブ位置までの空白を削除す -る。これは'softtabstop'に指定した値を'tabstop'に設定したのと同様に働くが、しか -し本当の<Tab>文字は依然'tabstop'の幅に展開されるので、他のアプリケーションでそ -のファイルを使う時にも正しく表示されるだろう。 - -もしも'softtabstop'がゼロでないならば、直前に挿入された文字が1つの空白文字(ス -ペース)で、そのカーソルの直前の(空白)文字だけを削除する時を除き、<BS>は空白文 -字を一つ前の'softtabstop'の位置まで削除しようと試みる。そうでないとカーソルの -直前の単一の文字を消すということができなくなってしまう。まず'softtabstop'の -キャラクタを消してから、それから望む場所にカーソルを持っていくために、余分な空 -白文字を置く必要がある。 - -============================================================================== -5. 置換モード *Replace* *Replace-mode* *mode-replace* - -ノーマルモードで"R"コマンドを使うと置換モードに入る。 - -置換モードでは、タイプされた全て文字のために行の文字が削除される。消す文字が無 -い場合(行末)、タイプされた文字は(挿入モードのように)追加される。このように行末 -に至るまで、行内のまとまった数の文字が同じままとどまる。<NL>がタイプされると、 -文字は消されずに改行が挿入される。 - -<Tab>文字には注意。<Tab>のある場所に通常の印刷可能文字をタイプすると、文字数は -同じだけど、見た目上のカラム数はより短くなってしまう。 - -置換モードで文字を消す(<BS>、CTRL-WもしくはCTRL-U)場合、変更を取り消すことにな -る。置き換えられてしまった文字が復帰する。存在していたテキストよりも多くタイプ -していた場合には、その追加した分は削除される。これは効果的に1度に1文字ずつの -UNDOになる。 - -'expandtab'オプションがオンの場合、<Tab>は幾つかのスペースで置き換えられる。結 -果として行中の文字数は増えることになる。バックスペースは一度に1つの文字を消 -す。もともとの文字は1つのスペース(最後の1つ)をバックスペースするだけで戻され -る。{Vi には'expandtab'オプションはない} - -============================================================================== -6. 仮想置換モード *vreplace-mode* *Virtual-Replace-mode* - -ノーマルモードで"gR"コマンドを使うと仮想置換モードに入る。 -{|+vreplace| 機能を付けずにコンパイルした場合は利用できない} -{Vi には仮想置換モードはない} - -仮想置換モードは置換モードに良く似ているが、ファイルの実際の文字ごとにではな -く、スクリーン上の文字幅単位で置換することができ、そのためファイル内の他の文字 -の見た目の位置が移動することはない。 - -<Tab>をタイプすると通常のキャラクタを幾つか置換し、<Tab>の先頭で文字をタイプし -たならば、<Tab>は以前と同じ場所に存在することになるから、なにも置換されないこ -とになる。 - -<NL>をタイプしても、ファイル内の後の文字がその(見かけ上の)位置を変えることはな -い。現在行の残りの部分は<NL>によって置き換えられ(それはつまり、消されるという -こと)、次の行で置換が続行される。ファイルの終端に達するまで、新しい行は挿入さ -れない。 - -CTRL-TとCTRL-Dを使用したときには面白い効果がある。カーソルの前のキャラクタは普 -通に横にシフトされるが、しかしカーソルの後のキャラクタはそのままそこに残ろうと -する。CTRL-Tはシフトされた文字の下にある古い行を隠していくが、CTRL-Dはそれらを -再び表示してくれる。 - -置換モード同様に、<BS>他を使用すると置換されてしまった文字を戻すことができる。 -この機能は'smartindent', CTRL-TそれにCTRL-D, 'expandtab', 'smarttab', -'softtabstop', その他などが考慮される。 - -'list'モードで'cpoptions'に"L"が含まれない時には、仮想置換モードはまるで'list' -モードでないかのように振舞う。 - -Note: カーソルより後ろの文字が移動して見えることがありますが、それは List モー -ド |'list'| がオンのとき、そしてまれに 'wrap' がオンのとき (そして変更によって -行の長さがスクリーンの幅より短くなるか長くなるとき) だけです。それ以外では、後 -ろの文字が動かないようにスペースが挿入されます。 - -このモードは<Tab>でカラムが区切られた表へ、新しいデータをカラムを揃えて入力す -るような編集作業に便利である。 - -============================================================================== -7. 挿入モードの補完 *ins-completion* - -挿入・置換モードでは、既にタイプしたキーワードや行の一部を補完するコマンドを使 -用できる。これは複雑なキーワード(例えば大文字やアンダースコアを含む関数名など) -を使用しているときに便利である。 - -この機能はコンパイル時に|+insert_expand|機能を有効にしておかないと使用できな -い。 - -補完には次のような種類がある: - -1. 行全体 |i_CTRL-X_CTRL-L| -2. 現在のファイルのキーワード |i_CTRL-X_CTRL-N| -3. 'dictionary'のキーワード |i_CTRL-X_CTRL-K| -4. 'thesaurus'のキーワード, thesaurus-style |i_CTRL-X_CTRL-T| -5. 編集中と外部参照しているファイルのキーワード |i_CTRL-X_CTRL-I| -6. タグ |i_CTRL-X_CTRL-]| -7. ファイル名 |i_CTRL-X_CTRL-F| -8. 定義もしくはマクロ |i_CTRL-X_CTRL-D| -9. Vimのコマンドライン |i_CTRL-X_CTRL-V| -10. ユーザ定義補完 |i_CTRL-X_CTRL-U| -11. オムニ補完 |i_CTRL-X_CTRL-O| -12. スペリング補完 |i_CTRL-X_s| -13. 'complete'のキーワード |i_CTRL-N| - -これら総て(2の「現在の..」を除く)はCTRL-Xモードで動作する。CTRL-Xモードとは挿 -入・置換モードのサブモードである。CTRL-XとCTRL-Xコマンドのどれか1つをタイプす -ることでCTRL-Xモードに移行する。CTRL-Xモードから抜けるにはコマンドとして有効で -はないキーをタイプする。有効なキーとはCTRL-Xコマンドそれ自身、CTRL-N(次の候 -補)、そしてCTRL-P(前の候補)である。 - -マッチの大文字/小文字を調節したいのならばオプション'infercase'を参照。 - - *complete_CTRL-E* -補完が動作中のとき、CTRL-E で補完を中止し、もともと入力したテキストに戻すこと -ができる。CTRL-E は挿入されない。 - - *complete_CTRL-Y* -ポップアップメニューが表示されているとき、CTRL-Y で補完を中止し、現在選択され -ている候補を挿入できる。CTRL-Y は挿入されない。スペース、エンターなど -unprintable な文字を入力すると、その文字を挿入して補完モードを終了する。 - -ポップアップメニューが表示されているときに使える特殊なキーがもういくつかある。 -|popupmenu-keys| を参照。 - -Note: CTRL-Xモードでの有効なキーはマップされない。これは":map ^F ^X^F"な指定を -可能にする(^Fと^XはそれぞれCTRL-FとCTRL-Xの意味)。これに対して、CTRL-Xモードを -終了させるキー(つまりCTRL-Xモードのコマンドとして有効ではないキー)はマップされ -る。'complete'を使って補完をするとき、マップは通常通りに適用される。 - -Note: 補完が動作中は、再帰的にインサートモードに入ることはできない。":normal -i.."のようなマッピングを使うとエラー E523 が発生する。 - -次のマッピングは補完コマンドのタイピングをちょっとだけ楽にしようと提案された -(これらは他のコマンドを覆い隠してしまうけれど): > - :inoremap ^] ^X^] - :inoremap ^F ^X^F - :inoremap ^D ^X^D - :inoremap ^L ^X^L - -例外として、レジスタの値を挿入するCTRL-RはCTRL-Xモードを終了しない。これは主 -に'='レジスタを使って関数などを呼び次の操作を決定することを可能にする。レジ -スタの内容(や'='レジスタの評価結果)がCTRL-Xモードで無効なキーだった場合、そ -れが入力されたものとしてCTRL-Xモードは終了する。 - -以下のものは現在の行がスペースだけなら<Tab>を入力し、違うならCTRL-Nの補完をす -る<Tab>をマッピングする例である: > - - function! CleverTab() - if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$' - return "\<Tab>" - else - return "\<C-N>" - endif - endfunction - inoremap <Tab> <C-R>=CleverTab()<CR> - - -行全体を補完する *compl-whole-line* - - *i_CTRL-X_CTRL-L* -CTRL-X CTRL-L 現在行のカーソルの前にあるのと同じ文字で始まる行を、後 - 方(上方向)に探す。インデントは無視される。見つかった行 - がカーソルの前に挿入される。 - どのバッファから探すのかを決める際に'complete'オプショ - ンが参照される。読み込まれたバッファ(loaded buffer)と - 読み込まれていないバッファ(unloaded buffer)の両方が対 - 象となる。 - CTRL-L or - CTRL-P 後方に、次にマッチする行を探す。これによりみつかった行 - で、以前のマッチした行を置き換える。 - - CTRL-N 前方に、次のマッチする行を探す。これによりみつかった行 - で以前のマッチした行を置き換える。 - - CTRL-X CTRL-L 行を展開した後で再びCTRL-X CTRL-Lをタイプすれば、それ - に続けて付加的に行を取得でき、CTRL-Xを2回押すことで終 - 了する。読み込まれているバッファのみ検索対象となる。 - -現在のファイルのキーワードで補完する *compl-current* - - *i_CTRL-X_CTRL-P* - *i_CTRL-X_CTRL-N* -CTRL-X CTRL-N カーソルの前にあるキーワードで始まる単語を、前方に検索 - する。みつかったキーワードはカーソルの前に挿入される。 - -CTRL-X CTRL-P カーソルの前にあるキーワードで始まる単語を、後方に検索 - する。みつかったキーワードはカーソルの前に挿入される。 - - CTRL-N 次にマッチするキーワードを前方に検索する。このキーワー - ドは前回マッチしたキーワードを置き換える。 - - CTRL-P 次にマッチするキーワードを後方に検索する。このキーワー - ドは前回マッチしたキーワードを置き換える。 - - CTRL-X CTRL-N or - CTRL-X CTRL-P 続けてCTRL-X CTRL-NやCTRL-X CTRL-Pを使用することで、 - 最後の展開に続けて違うコンテキストで単語を補完すること - ができる。これはCTRL-Xを2度押すことで終了できる。 - -カーソルの直前にあるキーワード(アルファベットと'iskeyword'の文字で構成される名 -前)が、直前に"\<"(単語の開始の意味)が補われて検索パターンとして使用される。 -キーワードがない場合には"\<\k\k"(少なくとも2文字以上のキーワードの開始位置)が -検索パターンに用いられる。 - -置換モードでは、置換される文字数はマッチした文字列の長さに依存する。これはマッ -チした文字列を置換モードでタイピングしたのと同じように振舞う。 - -カーソルの直前に有効なキーワードの文字がなかった場合、少なくとも2文字以上のあ -らゆるキーワードがマッチする。 - 例えば、次の結果を得るには: - printf("(%g, %g, %g)", vector[0], vector[1], vector[2]); - このようにタイプする: - printf("(%g, %g, %g)", vector[0], ^P[1], ^P[2]); - -検索はファイルの最後から最初へ循環する。ここでは 'wrapscan' の値は使われない。 - -同じ補完結果が繰り返される場合にはそれがスキップされる; そのためCTRL-NやCTRL-P -を押すたびに違うマッチ文字列が挿入されることになる(1つしかマッチするキーワード -がない場合は除く)。 - -マッチ結果が1文字のとなる補完候補文字列は、通常の使用で実際に補完して欲しいで -はないことがほとんどなので、補完候補に含まない。 - 例えば、次の結果を得るには: - printf("name = %s\n", name); - このようにタイプする: - printf("name = %s\n", n^P); - こうでも良い: - printf("name = %s\n", ^P); -'\n'の中の文字'n'はスキップされる。 - -単語補完を開始した後で、補完済み単語に続く単語を検索するのに、CTRL-X CTRL-Pも -しくはCTRL-X CTRL-Nを使うことができる。これらのシーケンスはテキストから探さ -れ、単語を拡張補完し、さらに拡張補完していくことができる。これは複雑な単語の -シーケンスを繰り返す必要があるときに役に立つ。CTRL-PとCTRL-Nは少なくとも2文字 -以上の文字列を探すけれども、CTRL-X CTRL-PとCTRL-X CTRL-Nは1文字の文字列も探し -出す。 - 例えば、次の結果を得るには: - México - このようにタイプする: - M^N^P^X^P^X^P -CTRL-Nは補完を開始し、CTRL-Pで最初の1文字"M"に戻し、次の2つのCTRL-X CTRL-Pが -"é"と";xico"を得る。 - -直前の補完が'textwidth'よりも長いために分裂している場合、現在の行のテキストだ -けが使用される。 - -マッチ文字列が行末で見つかった場合には、次の行の最初の単語が挿入され"word from -next line"というメッセージが表示される。さらに続けてCTRL-X CTRL-Pもしくは -CTRL-X CTRL-Nで検索を行なうと、その単語のある行で続く文字が検索される。 - - -'dictionary'のキーワードで補完する *compl-dictionary* - - *i_CTRL-X_CTRL-K* -CTRL-X CTRL-K カーソルの直前のキーワードで始まる単語をオプション - 'dictionary'で与えられたファイルから検索する。これは - CTRL-Nに似ているが、現在のファイル内は検索せずに辞書 - ファイル内だけを検索する。見つけたキーワードはカーソル - の直前に挿入される。最初のマッチが使用される前に総ての - マッチが検索されるので、かなり遅くなる可能性がある。オ - プション'dictionary'の初期値は空である。 - どこから単語リストを見つけ出すかについては、オプション - 'dictionary'を参照。 - - CTRL-K or - CTRL-N マッチするキーワードの前方検索。直前にマッチしたキー - ワードは新しいもので置き換えられる。 - - CTRL-P マッチするキーワードの後方検索。直前にマッチしたキー - ワードは新しいもので置き換えられる。 - - *i_CTRL-X_CTRL-T* -CTRL-X CTRL-T CTRL-X CTRL-Kと同じだが、'dictionary'ではなく - 'thesaurus'オプションを使う。たとえ単語が完全でなくて - も、類語ファイルの中に単語が見つかると、その行の他の単 - 語も一致とみなされる。したがって単語は完全に置き換えら - れる。 - - 例えば、'thesaurus'ファイルにこのような行があるし - て: > - angry furious mad enraged -< カーソルが"ang"の後にあり、CTRL-X CTRL-Tを押すと - "angry"が補完される。続けて補完すると - "furious"、"mad"、...、と置き換えられる。 - 他にも二つの言語間の単語の置き換えや、API関数をキー - ワードによってグループ分けするのに使える。 - - CTRL-T or - CTRL-N 次のキーワードを前方に探す。見つかったキーワードはそ - の前のキーワードを置き換える。 - - CTRL-P 次のキーワードを後方に探す。見つかったキーワードはそ - の前のキーワードを置き換える。 - - -編集中と外部参照しているファイルのキーワードで補完する *compl-keyword* - -'include'オプションは外部参照(インクルード)ファイルを含む行を指定するのに使 -う。'path'オプションはインクルードファイルを探す場所を指定するのに使う。 - - *i_CTRL-X_CTRL-I* -CTRL-X CTRL-I カーソルの直前と同じ文字で始まる最初のキーワードを、現 - 在のファイルとインクルードファイルから探し出す。マッチ - したキーワードはカーソルの直前に挿入される。 - - CTRL-N 次にマッチするキーワードを前方検索する。直前にマッチし - たキーワードは新しいもので置き換えられる。 - Note: CTRL-Iは補完が成功した時に入力する<Tab>と同じで - ある。従ってCTRL-Iを次のマッチを探すために使用すること - はできない。 - - CTRL-P 次にマッチするキーワードを後方検索する。直前にマッチし - たキーワードは新しいもので置き換えられる。 - - CTRL-X CTRL-I 直前の補完の文脈で続けてCTRL-X CTRL-Iによる単語補完を - 行なう。2連CTRL-Xが使用されるまで続く。 - - -タグで補完する *compl-tag* - *i_CTRL-X_CTRL-]* -CTRL-X CTRL-] カーソルの直前と同じ文字で始まる最初のタグを探し出す。 - マッチしたタグはカーソルの直前に挿入される。アルファ - ベットと'iskeyword'で指定される文字が、タグ名にどの文 - 字が含まれるかを決定する(これはキーワードと同じルー - ル)。|CTRL-]|も参照。'showfulltag'オプションはタグ定義 - の周辺からコンテキストに含めるために使用される。 - CTRL-] or - CTRL-N 次にマッチするタグを前方検索する。直前にマッチしたタグ - は新しいもので置き換えられる。 - - CTRL-P 次にマッチするタグを後方検索する。直前にマッチしたタグ - は新しいもので置き換えられる。 - - -ファイル名で補完する *compl-filename* - *i_CTRL-X_CTRL-F* -CTRL-X CTRL-F カーソルの直前と同じ文字で始まる最初のファイル名を探し - 出す。マッチしたファイル名はカーソルの直前に挿入され - る。アルファベットと'isfname'で指定される文字が、ファ - イル名にどの文字が名前に含まれるかを決定する。Note: こ - の段階では(まだ)'path'オプションは使用されない。 - CTRL-F or - CTRL-N 次にマッチするファイル名を前方検索する。直前にマッチし - たファイル名は新しいもので置き換えられる。 - - - CTRL-P 次にマッチするファイル名を後方検索する。直前にマッチし - たファイル名は新しいもので置き換えられる。 - - -定義もしくはマクロで補完する *compl-define* - -定義を含んだ行を特定するのに'define'オプションが使用される。インクルードファイ -ルを含んだ行を特定するのに'include'オプションが使用される。インクルードファイ -ルを探すのに'path'オプションが使用される。 - - *i_CTRL-X_CTRL-D* -CTRL-X CTRL-D カーソルの直前と同じ文字で始まる最初の定義(もしくはマ - クロ)名を、現在のファイルとインクルードファイルから探 - し出す。マッチした定義名はカーソルの直前に挿入される。 - CTRL-D or - CTRL-N 次にマッチするマクロ名を前方検索する。直前にマッチした - マクロ名は新しいもので置き換えられる。 - - CTRL-P 次にマッチするマクロ名を後方検索する。直前にマッチした - マクロ名は新しいもので置き換えられる。 - - CTRL-X CTRL-D 直前の補完の文脈で続けてCTRL-X CTRL-Dによる単語補完を - 行なう。2連CTRL-Xが使用されるまで続く。 - -Vimコマンドの補完 *compl-vim* - -補完は文脈に左右される。コマンドラインでの入力時のように機能する。Exコマンドと -その引数も補完する。これは Vim スクリプトを書いているときに便利である。 - - *i_CTRL-X_CTRL-V* -CTRL-X CTRL-V カーソルの前に何があるかを推測し、最初に一致するもの - を探す。 - Note: CTRL-Vがマッピングに使われていれば、たいていは - CTRL-Qが変わりに使える|i_CTRL-Q|。 - CTRL-V or - CTRL-N 次の一致を前方に探す。そしてその前のものを置き換え - る。 - - CTRL-P 次の一致を後方に探す。そしてその前のものを置き換え - る。 - - CTRL-X CTRL-V 加えて言うと CTRL-X CTRL-V は CTRL-V と同じように働 - く。これはVimコマンドの補完をマッピングをするのに使 - える。例えば: > - :imap <Tab> <C-X><C-V> - -ユーザ定義補完 *compl-function* - -ユーザ定義補完は、オプション 'completefunc' で設定した関数(ユーザ定義関数でも -よい)によって補完する方法である。この関数がどう呼び出されるかについては後述。 -また |complete-functions| の例を参照。 - - *i_CTRL-X_CTRL-U* -CTRL-X CTRL-U カーソルの前にどの種類の項目があるか推測し、最初の候補 - を探す。 - CTRL-U または - CTRL-N 次の候補を選択し、現在の候補と置き換える。 - - CTRL-P 前の候補を選択し、現在の候補と置き換える。 - -オムニ補完 *compl-omni* - -オムニ補完は、オプション 'omnifunc' で設定した関数(ユーザ定義関数でもよい)に -よって補完する方法である。ファイル形式に特化した補完をするために使われる。 - -この関数がどう呼び出されるかについては後述。また |complete-functions| も参照。 -特定のファイル形式についての説明は |compl-omni-filetypes| を参照。 -今後、www.vim.org でより多くの補完スクリプトが公開されるだろう。現在のところ、 -C++ 用の最初のバージョンが存在する。 - - *i_CTRL-X_CTRL-O* -CTRL-X CTRL-O カーソルの前にどの種類の要素があるか推測し、最初の候補 - を探す。 - CTRL-O または - CTRL-N 次の候補を選択し、現在の候補と置き換える。 - - CTRL-P 前の候補を選択し、現在の候補と置き換える。 - - -スペリング補完 *compl-spelling* - -カーソル前、またはカーソル位置の単語を探しだし、正しい単語の候補に置換する。カ -レント行のカーソル位置以前にスペルの間違った単語が存在する場合、カーソルがその -単語の直後に移動する。間違った単語が存在しない場合はカーソルの直前の単語(その -単語が間違っていなくても)の訂正候補が表示される。 - -NOTE: Unix 端末の多くでは CTRL-S は画面をサスペンドさせるため、代わりに 's' を -使うこと。サスペンドした画面を元に戻すには CTRL-Q を押す。 - - *i_CTRL-X_CTRL-S* *i_CTRL-X_s* -CTRL-X CTRL-S または -CTRL-X s カーソル前の単語を探し、その単語の正しい綴りの候補を探 - す。 - CTRL-S または - CTRL-N 次の候補を選択する。これによって以前の候補は置換される。 - Note ここでは代わりに 's' は使えないことに注意。 - - CTRL-P 前の候補を選択する。これによって以前の候補は置換される。 - - -キーワードを別のソースから補完する。 *compl-generic* - - *i_CTRL-N* -CTRL-N カーソルの直前と同じ文字で始まる単語を、'complete'オプ - ションで指定された場所から後方検索する。マッチしたキー - ワードはカーソルの直前に挿入される。 - - *i_CTRL-P* -CTRL-P カーソルの直前と同じ文字で始まる単語を、'complete'オプ - ションで指定された場所から前方検索する。マッチしたキー - ワードはカーソルの直前に挿入される。 - - CTRL-N 次にマッチするキーワードを前方検索する。直前にマッチし - たキーワードは新しいもので置き換えられる。 - - CTRL-P 次にマッチするキーワードを後方検索する。直前にマッチし - たキーワードは新しいもので置き換えられる。 - - CTRL-X CTRL-N or - CTRL-X CTRL-P 直前の補完の文脈で続けてCTRL-X CTRL-NもしくはCTRL-X - CTRL-Pによる単語補完を行なう。2連CTRL-Xが使用されるま - で続く。 - - -補完候補を検索する関数 *complete-functions* - -ここでは 'completefunc' と 'omnifunc' について説明する。 - -これらの関数は次の2通りの形で呼ばれる: -- 最初に、補完するテキストの始点を見つけるために呼ばれる。 -- 次に実際に候補を検索するために呼ばれる。 - -最初の形での呼び出しでは、次の引数が与えられる: - a:findstart 1 - a:base empty - -これらの関数は補完するテキストの始点の桁番号を返す責任を負う。桁番号は 0 以上 -"col('.')" 未満でなければならない。この桁番号はカーソルの直前の文字列を含み、 -補完候補の一部となる文字列を含む。この桁とカーソル位置の間のテキストが補完さ -れ、候補で置き換わることになる。補完を行えないときは -1 を返すこと。 - -2番目の形での呼び出しでは、次の引数が与えられる: - a:findstart 0 - a:base 補完対象のテキスト。つまり最初の呼び出しで指定したテキスト(空 - 文字列の場合もありうる) - -これらの関数は見つかった候補のリストを返す責任を負う。通常、候補の中には -"a:base" そのものも含まれている。候補が存在しない場合は空リストを返すこと。 - *complete-items* -リストの各要素は文字列か辞書のどちらかであること。文字列の場合はそれが候補とな -る。辞書の場合は以下の要素を含んでいること: - word 挿入されるテキスト。必須 - abbr "word" の略。これが空でなければ、メニューで "word" の - 代わりに表示される。 - menu ポップアップメニューにおける追加情報。"word" または - "abbr" の後に表示される。 - info この要素についての追加情報。プレビューウィンドウに表示 - することができる。 - kind 候補の種類を表す1文字 - icase 0 でないならば、候補同士を比較するとき大文字小文字は無 - 視される。省略された場合は 0 となり、大文字小文字の違 - いしかない候補も追加される。 - dup 0 でないならば、すでに同じ候補があってもこの候補を追加 - する。 - empty 0 でないならば、空文字であってもこの候補を追加する。 - -これらのうち 'icase' 以外は文字列でなければならない。これらの要件が満たされな -い場合はエラーメッセージが表示され、リスト中のそれ以降の要素は無視される。リス -トの中で文字列と辞書が混在していてもよい。 - -"menu" はポップアップメニューに表示される。長すぎる場合は切り詰められるので、 -短くするとよい。"info" は 'completeopt' に "preview" が含まれている場合にプ -レビューウィンドウに表示される。これはもっと長くてもよい。"info" はまた、ポッ -プアップメニューが消えた後にもそのまま表示される。これは関数の引数を表示する -場合などに便利である。"info" にスペース1個を指定すると、プレビューウィンドウ -に表示されているテキストが消去される。プレビューウィンドウの大きさは 3 行です -が、'previewheight' が 1 か 2 のときはその高さで表示されます。 - -"kind" は候補の種類を示す1文字である。候補の表示方法(色やアイコンなど)を区別 -するために使われる。 -現在のところ、指定可能な種類は次の通りである: - v 変数 - f 関数やメソッド - m 構造体やクラスのメンバ - t typedef - d #define やマクロ - -候補の検索に時間がかかるときは |complete_add()| を使って候補を1つずつリスト -に加えるとよい。その場合、それらの候補は戻り値のリストに現れるべきではない。 -ときどき |complete_check()| を呼んで、候補の検索中にユーザがキーを押して検索 -を中断できるようにすること。complete_check() が非 0 を返すと中断する。 - - *E839* *E840* -関数の中でカーソルを移動させてもよい。カーソルは実行後に復元される。 -関数の中で他のウィンドウに移動したりテキストを削除することはできません。 - -月の名前を補完する例: > - fun! CompleteMonths(findstart, base) - if a:findstart - " 単語の始点を検索する - let line = getline('.') - let start = col('.') - 1 - while start > 0 && line[start - 1] =~ '\a' - let start -= 1 - endwhile - return start - else - " "a:base" にマッチする月を探す - let res = [] - for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec") - if m =~ '^' . a:base - call add(res, m) - endif - endfor - return res - endif - endfun - set completefunc=CompleteMonths -< -検索が遅い場合のシミュレーション: > - fun! CompleteMonths(findstart, base) - if a:findstart - " 単語の始点を検索する - let line = getline('.') - let start = col('.') - 1 - while start > 0 && line[start - 1] =~ '\a' - let start -= 1 - endwhile - return start - else - " "a:base" にマッチする月を探す - for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec") - if m =~ '^' . a:base - call complete_add(m) - endif - sleep 300m " 次の候補の検索をシミュレートする - if complete_check() - break - endif - endfor - return [] - endif - endfun - set completefunc=CompleteMonths -< - -補完ポップアップメニュー *ins-completion-menu* - *popupmenu-completion* -候補を簡単なポップアップメニューで表示することができる。 - -ポップアップメニューは次のとき表示される: -- 'completeopt' が "menu" か "menuone" を含んでいる。 -- 端末が 8 色以上の表示をサポートしている。 -- 候補が 2 個以上ある。"menuone" を設定している場合は 1 個以上。 - -ポップアップメニューの高さの最大値はオプション 'pumheight' で設定できる。既 -定値は利用可能なスペースをすべて使うようになっている。 - -ポップアップメニューには 3 つの状態がある: -1. 候補が挿入された状態。例えば CTRL-N や CTRL-P の後。 -2. カーソルキーを使って他の候補を選択した後。候補はまだ挿入されていなく、1 - つの候補が強調表示されている状態。 -3. 候補の一部だけが挿入されており、文字の入力やバックスペースキーを使用でき - る状態。カーソルの前にある文字列によって候補のリストが増減する。 - -普通、最初は1番目の候補が挿入された状態(状態1)から始まる。'completeopt' -に "longest" が含まれており、2 個以上の候補があるときは状態3から始まる。 - -CTRL-N や CTRL-P を押すことなどによって他の候補を選択すると状態1へ遷移す -る。このとき候補のリストは変化しない。 - -元のテキストへ戻ると状態3になる。すぐに状態3へしたい場合は、次のように補完の直 -後に CTRL-P を行うマッピングを使えばよい: > - :imap <F7> <C-N><C-P> -< - *popupmenu-keys* -状態1では以下のキーは特別な意味を持つ: -<BS> と CTRL-H 1文字削除し、カーソル前の単語の候補を検索する。これによって候 - 補の数は少なくなり、しばしば1個だけになって状態2へ遷移する。 -特殊文字でない任意の文字: - 候補を変更せずに補完を停止し、入力された文字を挿入する。 - -状態2と状態3では以下のキーは特別な意味を持つ: -<BS> と CTRL-H 1文字削除し、カーソル前の(短くなった)単語の候補を検索する。候 - 補の数は増える。 -CTRL-L 現在の候補から1文字を挿入する。候補の数は少なくなる。 -印字可能で空白文字でない任意の文字: - その文字を挿入する。候補の数は少なくなる。 - -以上すべての状態で以下のキーが使える: -CTRL-Y Yes: 現在選択されている候補に決定し、補完を終了する。 -CTRL-E 補完を終了し、候補を選択する前の状態(タイプした状態または最 - 長共通文字列)へ戻る。 -<PageUp> 数個上の候補を選択するが、挿入はしない。 -<PageDown> 数個下の候補を選択するが、挿入はしない。 -<Up> CTRL-P と同様に上の候補を選択するが、挿入はしない。 -<Down> CTRL-N と同様に下の候補を選択するが、挿入はしない。 -<Space> or <Tab> 候補を変更せずに補完を終了し、タイプされた文字を挿入する。 - -<Enter>キーの挙動は状態に依存する: -状態1: テキストはそのままにし、改行を挿入する。 -状態2: 選択されている候補を挿入する。 -状態3: テキストはそのままにし、改行を挿入する。 - -言い換えると: カーソルキーでリストから他の候補を選択した後 <Enter> を押すとそ -の候補を挿入する。それ以外をタイプした後で <Enter> を押すと改行が挿入される。 - - -メニューの色は以下のハイライトグループで設定できる: -Pmenu 通常の要素 |hl-Pmenu| -PmenuSel 選択されている要素 |hl-PmenuSel| -PmenuSbar スクロールバー |hl-PmenuSbar| -PmenuThumb スクロールバーのつまみ |hl-PmenuThumb| - -ポップアップメニューが表示されているとき用の特別なマッピングというものは存在し -ない。しかしインサートモードマッピングで関数 |pumvisible()| を使えばポップアッ -プメニューが表示されているときだけ用にマッピングを作ることができる。例: > - :inoremap <Down> <C-R>=pumvisible() ? "\<lt>C-N>" : "\<lt>Down>"<CR> - -マッピングで <expr> を使うと、入力中ある条件が満たされたとき自動的にポップアッ -プメニューを表示させることができる。例えば、ドットを入力したとき補完を行う、ま -たはドットそのものを入力するようにするには: > - inoremap <expr> . MayComplete() - func MayComplete() - if (can complete) - return ".\<C-X>\<C-O>" - endif - return '.' - endfunc - -より詳しくは |:map-<expr>| を参照。 - -オムニ補完についてファイル形式ごとの注意点 *compl-omni-filetypes* - -ファイル形式 {filetype} に対して使われるファイルは 'runtimepath' 中の -{filetype}complete.vim とする。つまり、"java" に対するファイルは -autoload/javacomplete.vim となる。 - - -C *ft-c-omni* - -C のソースでオムニ補完を行うには tags ファイルが必要である。Exuberant ctags は -補完に必要な付加情報を出力するため、Exuberant ctags を使うとよい。Exuberant -ctags はこのサイトからダウンロードできる: http://ctags.sourceforge.net/ -バージョン 5.6 以降が推奨されている。 - -バージョン 5.5.4 を使うときは "typename:" フィールドを追加するこのパッチをあて -ること: - ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch -MS-Windows 用の exe ファイルは次のサイトからダウンロードできる: - http://georgevreilly.com/vim/ctags.html - -システム関数を補完するには、次のような方法がある。ctags を使って全システムヘッ -ダファイルの tags ファイルを作る: > - % ctags -R -f ~/.vim/systags /usr/include /usr/local/include -そして .vimrc で 'tags' オプションにこの tags ファイルを追加する: > - set tags+=~/.vim/systags - -カーソル前の単語が "." や "->" を含まないとき、CTRL-X CTRL-O を押すと tags -ファイルから直接補完される。これはすべての識別子、関数名に対して有効である。 -tags ファイルに含まれないローカル変数名を補完するには CTRL-P を使うしかない。 - -カーソル前の単語が "." または "->" を含むとき、CTRL-X CTRL-O を押すと、変数の -型が推測され、その型のメンバが推測される。よって、その変数に対して有効なメンバ -だけが補完候補に現れる。 - -メンバ名がすでに補完されたとき CTRL-X CTRL-O を押すと、複合型に対する "." また -は "->" が挿入される。 - -Vim は C コンパイラを内蔵しているわけではないので、きれいに整形された宣言しか認 -識できない。プリプロセッサが関係すると混乱してしまう可能性がある。同じ構造体名 -が複数の場所に現れる場合、それらのすべてのメンバが補完候補に含まれる。 - - -CSS *ft-css-omni* - -CSS 2.1 仕様に従って、プロパティとその適切な値を補完できる。 - - -HTML *ft-html-omni* -XHTML *ft-xhtml-omni* - -HTML, XHTML ファイルにおいて、CTRL-X CTRL-O で (X)HTML の色々な要素を補完でき -る。補完スクリプトは XHTML 1.0 Strict なファイルを書くために設計されているが、 -他の HTML のバージョンに対しても動作するようになっている。以下の機能がある: - -- "<" の後では文脈に依存してタグ名を補完する(a タグの内側では div は候補に現れ - ない)。'/>' は空タグを示す。 -- タグの内側では適切な属性の補完が行われる(a タグに対しては width 属性は候補に - 現れない)。属性の型も表示される。'*' は必須な属性を意味する。 -- 属性のとりうる値が有限個しかない場合は、それらの補完を支援する。 -- エンティティの名前を補完する。 -- <style> タグとインクルードされた CSS ファイルから得られたデータにより、 - "class" と "id" の値を補完する。 -- "style" 属性の値を補完するときや、"style" タグの内側にいるときは - |ft-css-omni| モードへ移行する。 -- イベント属性の値を補完するときや、"script" タグの内側にいるときは - |ft-javascript-omni| モードへ移行する。 -- "</" の後で CTRL-X CTRL-O を押すと、最後に開いたタグを閉じる。 - -Note: 初回実行時は補完メニューが表示されるまでに少し時間がかかる。 -- これはデータファイルを読み込むのに時間がかかっている。 -Note: 整形されていないファイルでは補完が失敗する場合がある。その場合は |:make| -を実行して整形上の問題を検出してみるとよい。 - -HTML flavor *html-flavor* - -既定の HTML 補完はファイルタイプに依存して動作が変わる。HTML ファイル('filetype' が -"html" の場合)に対しては HTML 4.01 Transitional となり、XHTML ファイル -('filetype' が "xhtml" の場合)に対しては XHTML 1.0 Strict となる。 - -タグの外側で補完を行うと DOCTYPE を選択することができ、適切なデータファイルが -読み込まれ、それ以降の補完に利用される。 - -データファイルのフォーマットについてより詳しくは |xml-omni-datafile| を参照。 -Vim のウェブサイト(|www|)でもいくつかのデータファイルをダウンロードできる。 - -Note: 変数 b:html_omni_flavor に任意の XML データのファイル名を設定できる。こ -れによってPHPオムニ補完(|ft-php-omni|)と任意の XML ダイアレクトを組み合わせる -ことができる(その XML ダイアレクト用のデータファイルが必要)。この変数を設定し -ない場合は XHTML 1.0 Strict が使用される。 - - -JAVASCRIPT *ft-javascript-omni* - -JavaScript のほとんどの要素と DOM 要素を補完できる。 - -補完: - -- 変数 -- 関数名。関数の引数も表示できる -- 関数の引数 -- 変数の型を識別し、変数のプロパティを補完する -- DOM オブジェクトと文脈に依存したプロパティを補完する -- 言語のキーワード - -JavaScript オムニ補完は、単独の JavaScript ファイル(&ft==javascript)、(X)HTML -の <script> タグの中、イベント属性の値の中で動作する(外部ファイルの読み込みも -含む)。 - -DOM 互換性 - -現時点(2006 年初頭)では主流のブラウザが2つある。MS Internet Explorer と -Mozilla Firefox である。これら2つのアプリケーションは市場の 90% 以上を占めてい -る。理論的には標準は W3C (http://www.w3c.org) によって決められるが、これらのブ -ラウザは必ずしもそれに従っていない。 - - IE FF W3C オムニ補完 ~ - +/- +/- + + ~ - + + - + ~ - + - - - ~ - - + - - ~ - -ブラウザの実装状態に関わらず、ある要素が標準で定められていれば、オムニ補完プラ -グインはその要素を候補リストに加える。主流のエンジンが両方ともある要素を実装し -ていれば、たとえそれが標準で定められていなくても候補リストに加える。それ以外の -要素は候補リストに加えない。 - - -PHP *ft-php-omni* -PHP コードの補完を行うには tags ファイルが必要である。外部ファイルに書かれた情 -報の補完と、クラスを意識した補完のためである。Exuberant ctags 5.5.4以降を使う -こと。Exuberant ctags は次のサイトで入手できる: -http://ctags.sourceforge.net/ - - -オムニ補完で以下のものが補完できる: - -- $ の後の変数名 - - 変数がオブジェクトとして宣言されており、"->" がつく場合、tags ファイルがあ - ればクラス名が表示される。 - - "->" の後ではそのクラスの関数名と変数名だけが候補に現れる。クラスの位置と内 - 容を特定するためには tags ファイルが必要になる。PHP は強い型付けの言語では - ないため、クラス宣言に @var タグをつけるとよい : > - - /* @var $myVar myClass */ - $myVar-> -< - しかし @var タグをつけても、myClass の内容を認識するには tags ファイルが必 - 要になる。 - -- 追加情報つきの関数名 - - 組み込み関数の場合には、とりうる引数のリストと、| の後に関数の戻り値の型情 - 報が表示される。 - - ユーザ定義関数の場合には、引数と、その関数の定義を含むファイル名が表示され - る(それがカレントファイルでない場合) - -- 定数名 - - "new" 宣言の後にクラス名 - -Note: 最初に補完を行うとき、必要なデータがすべてメモリにロードされる。これに数 -秒かかる場合があるが、次回からの補完は気になるほどではなくなるだろう。 - -補完スクリプトは、カーソルが<?php ?>の中にあるかどうかを検出する。もしカーソル -がこのタグの外側にあれば、自動的に HMTL/CSS/JavaScript 補完に切り替わる。Note: -元の HTML とは異なり、タグの補完が文脈依存ではなくなる。 - -RUBY *ft-ruby-omni* - -Ruby コードの補完を行うには、vim が |+ruby| 付きでコンパイルされている必要があ -る。 - -Ruby のオムニ補完は、補完候補を提供するために必要に応じてバッファをパースする。 -補完候補は 'require' で読み込まれたモジュールと、カレントバッファ内で定義され -たモジュールから引き出される。 - -CTRL-X CTRL-O による補完は、次のように文脈に依存する: - - 文脈 提供される補完 ~ - -1. クラス定義の外側 クラス、定数、グローバル変数 - -2. クラス定義の内側 そのクラスで定義されたメソッド、定数 - -3. '.', '::', ':' の後 参照されているオブジェクトに適用可能な - メソッド - -4. ':', ':foo' の後 シンボル名(:foo の場合は 'foo' で始ま - るもの) - -Note: - - 補完を行うためにコードをロードする(評価する)機能がある。これはつまり、コー - ドが実行されることになり、問題となるかもしれない。現在、この機能はデフォル - トで無効になっており、有効にするには次を .vimrc に加える: > - let g:rubycomplete_buffer_loading = 1 -<- 上記の文脈 1 において、クラスのリストを補完結果に加えるためにバッファ全体を - パースすることがありうる。デフォルトではこの機能は無効になっており、有効に - するには次を .vimrc に加える: > - let g:rubycomplete_classes_in_global = 1 - - 上記の文脈 2 において、無名クラスには対応していない。 - - 上記の文脈 3 において、Vim はオブジェクトが対応しているメソッドを決定しよう - と試みる。 - - Rails プロジェクトのファイルでは Rails 環境を検出し、読み込む機能がある。 - デフォルトではこの機能は無効になっており、有効にするには次を .vimrc に加え - る: > - let g:rubycomplete_rails = 1 -< - - -SYNTAX *ft-syntax-omni* - -Vim には 500 近くの言語を強調表示する機能がある。この強調表示機能の一部として、 -言語で定められたキーワードを認識する機能がある。多くのファイルタイプには既に専 -用の補完スクリプトが存在するが、そうでないファイルタイプのために構文強調機能を -利用して基本的な補完機能を提供する syntaxcomplete というプラグインがある。この -プラグインは、Vim がテキストを色付けするために持っている情報を利用して補完リス -トを作成する。syntaxcomplete はどんなファイルタイプに対しても利用可能で、言語 -に応じた最小限の補完を提供する。 - -syntaxcomplete を有効にするにはこのコマンドを実行する: > - setlocal omnifunc=syntaxcomplete#Complete - -これを自動的に行うようにするには、以下を ~/.vimrc に書く(":filetype" コマンド -の後で): > - if has("autocmd") && exists("+omnifunc") - autocmd Filetype * - \ if &omnifunc == "" | - \ setlocal omnifunc=syntaxcomplete#Complete | - \ endif - endif - -これによって、ファイルタイプ専用のプラグインが存在しないときだけ -syntaxcomplete プラグインで補完するようになる。 - -ファイルタイプの中には幅広い範囲の構文アイテムを持つものもある。 -syntaxcomplete プラグインでは、構文グループのうちどれを補完に含めるかをカスタ -マイズできる。ファイルタイプ PHP を例として見てみよう。 - -index.php という名前のファイルを開き、次のコマンドを実行してみる: > - :syntax list - -まず最初にたくさんの異なる構文グループがあることに気づくだろう。PHP 言語は -HTML, JavaScript など他の言語の要素を含むことがある。この場合、syntaxcomplete -プラグインはファイルタイプ名 "php" で始まる構文グループだけを含める。例えば、 -次の構文グループはデフォルトで含まれる: phpEnvVar, phpIntVar, phpFunctions。 - -PHP 言語は構文強調で色付けできる要素がとてもたくさんある。これはつまり、非常に -多数の要素がオムニ補完リストに現れることを意味する。人によってはこれがわずらわ -しいと感じたり、一部だけにしか関心がないかもしれない。 - -このリストから余分なものを除くには 2 つの方法がある。ある構文グループを表示さ -せたくない場合は、次を .vimrc に加えるとよい: > - let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' - -カンマ区切りで任意個数の構文グループを指定できる。この変数の基本的な形式は次の -とおり: > - let g:omni_syntax_group_exclude_{filetype} = 'comma,separated,list' - -完全性のために、逆もできるようになっている。~/.vimrc で次の変数を定義すると、 -構文グループ phpFunctions と phpMethods に含まれる要素だけがリストに現れるよう -になる: > - let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' - -この変数名の末尾のファイルタイプを変えればいくらでもこの変数を定義できる。 - -syntaxcomplete プラグインは、構文アイテムの単語境界の認識にオプション -'iskeyword' を使用する。例として、Scheme 言語の補完では "-" が単語に含まれる -(call-with-output-file など)。ファイルタイプによってはこれでは期待する補完がで -きないかもしれない。g:omni_syntax_use_iskeyword に 0 を代入すれば -syntaxcomplete プラグインは単語文字の区切りを使わなくなる: > - let g:omni_syntax_use_iskeyword = 0 - - -プラグイン開発者のために OmniSyntaxList 関数が公開されている。この関数は構文ア -イテムのリストを得るために使うことができる。例えば SQL ファイルを開いていると -きに (:e syntax.sql) ":syntax list" コマンドを実行してグループと構文アイテムを -確認してみる。例: > - syntax list - -次のような出力が表示される: > - sqlOperator xxx some prior all like and any escape exists in is not - or intersect minus between distinct - links to Operator - sqlType xxx varbit varchar nvarchar bigint int uniqueidentifier - date money long tinyint unsigned xml text smalldate - double datetime nchar smallint numeric time bit char - varbinary binary smallmoney - image float integer timestamp real decimal - -二つの構文グループ sqlOperator と sqlType がある。構文アイテムのリストを得るた -めに OmniSyntaxList をいくつかの方法で呼び出すことができる。構文グループを限定 -せずにすべての構文アイテムを得るには次のようにする: > - echo OmniSyntaxList( [] ) - -sqlOperator 構文グループの構文アイテムの得るには次のようにする: > - echo OmniSyntaxList( ['sqlOperator'] ) - -sqlOperator 構文グループと sqlType 構文グループの両方の構文アイテムをすべて得 -るには次のようにする: > - echo OmniSyntaxList( ['sqlOperator', 'sqlType'] ) - -プラグインから呼び出すときは、結果を List に代入して使うのが一般的だろう: > - let myKeywords = [] - let myKeywords = OmniSyntaxList( ['sqlKeyword'] ) - - - -SQL *ft-sql-omni* - -SQL の補完にはステートメント、関数、キーワードが含まれる。また、データベースか -ら直接情報を取得し、テーブル、プロシージャ、ビュー、カラムリストを動的に補完す -ることができる。より詳しい説明とチュートリアルについては |omni-sql-completion| -を参照。 - -SQL 補完プラグインは他の補完プラグインと組み合わせて使うことができる。例えば、 -PHP にはPHP 用の補完スクリプトがあるが、PHP はよくデータベースにアクセスする動 -的なウェブサイトを生成するのに使われるため、SQL 補完プラグインも有効にするとよ -いかもしれない。そうすれば PHP のコードと SQL のコードを両方補完できるようにな -る。 - - -XML *ft-xml-omni* - -Vim 7 には XML ファイルにおける文脈に応じた補完メカニズムがある。この補完メカ -ニズムは特別なファイル |xml-omni-datafile| に依存し、|:XMLns| と |:XMLent| と -いう 2 つのコマンドがある。この補完の機能は以下の通り: - -- "<" の後ろでは文脈に応じ、タグ名を補完する。 -- タグの内側では適切な属性を補完する。 -- 属性の取りうる値が有限個である場合はそれらの補完を支援する。 -- 実体名を補完する(|xml-omni-datafile| 内で定義されたものとカレントファイルの - "<!ENTITY" 宣言にあるもの) -- "</" の後ろで CTRL-X CTRL-O とすると最後に開いたタグを閉じる。 - -XML データファイルのフォーマット *xml-omni-datafile* - -XML データファイルは 'runtimepath' の中のディレクトリ "autoload/xml" に保存さ -れる。標準でディレクトリ"$VIMRUNTIME/autoload/xml" にデータファイルのサンプル -が入っている。これらのファイルにはコマンドで指定できる意味のある名前がついてい -る。XML データファイルは衝突が起きないように一意な名前をつけるべきである。例え -ば、xhtml10s.vim という名前は XHTML 1.0 Strict 用のデータファイルであることを -意味している。 - -各サンプルファイルには g:xmldata_xhtml10s のような名前の変数が含まれている。こ -の変数の値は2つの部分からなる: - -1. "g:xmldata_" 一般的なプリフィックス。全データファイルで共通。 -2. "xhtml10s" ファイル名であり、記述された XML ダイアレクトの名前。この名前 - がコマンド |:XMLns| の引数として使われる。 - -2. は正確にファイル名と同じでなければならない。 - -この変数は辞書 |Dictionary| である。キーはタグ名で、値は2個の要素を持つリスト -である。リストの最初の要素はまたリストであり、有効な子ノードの名前を持つ。2番 -目の要素は辞書 |Dictionary| であり、属性名がキーで、その属性の取りうる値が値で -ある。例: > - - let g:xmldata_crippled = { - \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"], - \ 'vimxmlroot': ['tag1'], - \ 'tag1': - \ [ ['childoftag1a', 'childoftag1b'], {'attroftag1a': [], - \ 'attroftag1b': ['valueofattr1', 'valueofattr2']}], - \ 'childoftag1a': - \ [ [], {'attrofchild': ['attrofchild']}], - \ 'childoftag1b': - \ [ ['childoftag1a'], {'attrofchild': []}], - \ "vimxmltaginfo": { - \ 'tag1': ['Menu info', 'Long information visible in preview window']}, - \ 'vimxmlattrinfo': { - \ 'attrofchild': ['Menu info', 'Long information visible in preview window']}} - -この例を保存するファイルは "autoload/xml/crippled.vim" となり、以下のような -ファイルを書くために使われる: > - - <tag1 attroftag1b="valueofattr1"> - <childoftag1a attrofchild> - & < - </childoftag1a> - <childoftag1b attrofchild="5"> - <childoftag1a> - > ' " - </childoftag1a> - </childoftag1b> - </tag1> - -この例には4個の特別な要素が含まれている: - -1. "vimxmlentities" - 特別なキー。対応する値は、この XML ダイアレクトの実体を - 要素に持つリスト。 -2. 属性の取りうる値を定めるリストの長さが 1 であり、その要素が属性名と等しい場 - 合、この要素は boolean とみなされ、'attrname="' でなく 'attrname' が補完さ - れる。 -3. "vimxmltaginfo" - 特別なキー。対応する値は、タグ名をキー、長さ 2 のリストを - 値として持つ辞書。追加のメニュー情報と長い説明を保持する。 -4. "vimxmlattrinfo" - 特別なキー。対応する値は、属性名をキー、長さ 2 のリスト - を値として持つ辞書。追加のメニュー情報と長い説明を保持する。 - -Note: XML データファイル中のタグ名は名前空間を含んではならない。例として -xsl.vim を参照。 -Note: 全データと関数はグローバル変数/関数として公開されており、個人的な編集関 -数用にも使える。 - - -DTD -> Vim *dtd2vim* - -DTD をパースし、XML オムニ補完用の XML データファイルを作成するスクリプト -|dtd2vim| が |www| 上にある。 - - dtd2vim: http://www.vim.org/scripts/script.php?script_id=1462 - -詳しい使い方はスクリプトの先頭を参照。 -このスクリプトを使うには perl と - - perlSGML: http://savannah.nongnu.org/projects/perlsgml - -が必要。 - - -コマンド - -:XMLns {name} [{namespace}] *:XMLns* - -XML オムニ補完を行うには、使うデータファイルと名前空間を指定しなければならない。 -データファイルを読み込み、データを適切な名前空間に結びつけるにはコマンド -|:XMLns| を使う。第 1 引数(必須)でデータの名前を指定する(xhtml10s, xsl)。 -第 2 引数で名前空間コードを指定する(h, xsl)。第 2 引数を省略して実行した場合は -名前空間宣言なしでダイアレクトが使われる。例として .xsl ファイルで XML 補完を -するには次のようにする: > - - :XMLns xhtml10s - :XMLns xsl xsl - - -:XMLent {name} *:XMLent* - -既定ではデフォルト名前空間のデータファイルからエンティティが補完される。コマン -ド XMLent はデフォルト名前空間が存在しない場合に使う: > - - :XMLent xhtml10s - -使用例 - -この状態で(上記のコマンドを実行した後。カーソルが | の位置にあるとする): > - - <| - -XML オムニ補完すると適切な XHTML タグが補完される。また、次の状態: > - - <xsl:| - -で補完すると適切な XSL タグが補完される。 - - -|autoload| によりロードされるスクリプト xmlcomplete.vim の中で -xmlcomplete#GetLastOpenTag() が定義されており、この関数を使うと XML ファイル内 -で最後に開いたタグの名前が得られる(b:unaryTagsStack が定義されていなければなら -ない)。 - - :echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack") - - - -============================================================================== -8. 挿入モードのコマンド *inserting* - -下のコマンドはバッファに新しいテキストを挿入するのに使うことができる。それらは -全て取り消すことができるし、"."コマンドで繰り返すことができる。 - - *a* -a カーソルの後ろにテキストを[count]回追加する。 - 'virtualedit'がセットされていないなら、カーソルが空行 - の最初のカラムにあるときはそこに挿入する。 - - *A* -A 行末にテキストを[count]回追加する。 - -<insert> or *i* *insert* *<Insert>* -i カーソルの前にテキストを[count]回挿入する。 - 挿入モード中のCTRL-O|i_CTRL-O|で使うときはカウントはサ - ポートされていない。 - - *I* -I 行の先頭の非空白文字の前にテキストを[count]回挿入す - る。 - 'cpoptions' にフラグ 'H' が入っている場合、空白のみを - 含む行では最後の空白文字の1文字前から挿入を開始する。 - - *gI* -gI カラム1からテキストを[count]回挿入する。{Vi にはない} - - *gi* -gi カレントバッファの最後に入力がされた場所にテキストを - 入力する。 - これは|'^|マークを使う。マークが行末を越えているとき - に"'^i"と動作が異なる。 - 行が挿入、削除されていると入力位置は調整されるが、文 - 字単位の変更は考慮されない。 - |:keepjumps|コマンドが使われると|'^|マークは変更され - る。 - {Vi にはない} - - *o* -o カーソルのある行の下に新しい行を作り、そこにテキストを - [count]回繰り返し挿入する。{Vi:空行を[count]行挿入す - る} - 'cpoptions' にフラグ '#' が入っている場合、カウント指 - 定は無視される。 - - *O* -O カーソルのある行の上に新しい行を作り、そこにテキストを - [count]回繰り返し挿入する。{Vi:空行を[count]行挿入す - る} - 'cpoptions' にフラグ '#' が入っている場合、カウント指 - 定は無視される。 - -これらのコマンドはテキストの挿入を開始するのに使われる。挿入モードは<Esc>で止 -めることができる。挿入モードでのその他の特殊な文字は|mode-ins-repl|を参照。 -[count]の効果は挿入モードから抜けた時に現れる。 - -'autoindent'が設定されている時には、新しい行のインデントに、前の行と同じものが -使用される。'smartindent'か'cindent'が設定されている時には、行のインデントはC -プログラム(ソースコード)のスタイルに、自動的に調整される。 - -'textwidth'は、行の最大幅(文字数)を設定することができる。文字を追加している時 -に行が長くなりすぎると、自動的に改行が挿入される。 - - -============================================================================== -9. Exの挿入コマンド *inserting-ex* - - *:a* *:append* -:{range}a[ppend][!] 指定された行の下に何行分かのテキストを挿入する。 - {range}が省略された場合、テキストは現在行の後から挿入 - される。 - [!] をつけるとその実行中のみ 'autoindent' をトグルする。 - - *:i* *:in* *:insert* -:{range}i[nsert][!] 指定された行の上に何行分かのテキストを挿入する。 - {range}が省略された場合、テキストは現在行の前から挿入 - される。 - [!] をつけるとその実行中のみ 'autoindent' をトグルする。 - -これら2つのコマンドは、"."だけを含んだ行を入力するまで、挿入すべきテキストを待 -ちつづける。バックスラッシュで始まる行には警戒すべし。|line-continuation|参照。 - -Ex モード (|-e| 参照) では行末にバックスラッシュを置くことで NUL 文字を挿入で -きます。行末にバックスラッシュを挿入したいときはバックスラッシュを二重にしてく -ださい。バックスラッシュが行末にある場合は実際に挿入される数は半分になります。 - -NOTE: これらのコマンドは |:global| または |:vglobal| と組み合わせて使うことは -できない。":append"と":insert"は":if"と":endif"、":for"と":endfor", ":while"と -":endwhile"の間では機能しない。 - - *:start* *:startinsert* -:star[tinsert][!] このコマンドの実行直後に挿入モードを開始する。ノーマル - モードで"i"をタイプしたように働く。!が含まれていた時に - は、行に追加する"A"のように働く。そうでなければ現在の - 位置から挿入が始まる。関数やスクリプトの中でこのコマン - ドを使用したときには、関数やスクリプトが終了してから挿 - 入が始まることに注意。 - |:normal| からこのコマンドを呼び出すと機能しない。 - {Vi にはない} - {|+ex_extra| 機能を無効にしてコンパイルした場合は利用 - できない} - - *:stopi* *:stopinsert* -:stopi[nsert] できるだけ早く挿入モードを中止します。挿入モードで - <Esc>を押したように機能します。 - オートコマンドで使うことができます。例: > - :au BufEnter scratch stopinsert -< -ここまで - *replacing-ex* *:startreplace* -:startr[eplace][!] このコマンドを実行した直後に置換モードに入る。ノーマル - モードにおける "R" とちょうど同じ。"!" をつけると "$R" - とタイプしたのと同じになる(つまり行末から置換モードを - 開始する)。"!" をつけないとカーソル位置から置換モード - を開始する。 - Note 関数やスクリプトの中からこのコマンドを実行すると、 - その関数・スクリプトが終了した後ではじめて置換モード - になることに注意。 - {Vi にはない} - {|+ex_extra| 機能つきでコンパイルしたときのみ有効} - - *:startgreplace* -:startg[replace][!] |:startreplace| と同様だが、|gR| のようなビジュアル置 - 換モードになる。 - {Vi にはない} - {|+ex_extra| 機能つきでコンパイルしたときのみ有効} - -============================================================================== -10. ファイルを挿入する *inserting-file* - - *:r* *:re* *:read* -:r[ead] [++opt] [name] カーソルの後ろに、ファイル[name] (省略した場合:現在の - ファイル)を挿入する。 - [++opt] として指定できる値については |++opt| を参照。 - -:{range}r[ead] [++opt] [name] - 指定した行の下に、ファイル[name](省略した場合:現在の - ファイル)を挿入。 - [++opt] として指定できる値については |++opt| を参照。 - - *:r!* *:read!* -:[range]r[ead] !{cmd} カーソルまたは指定行の後ろに、{cmd}を実行したその標準 - 出力の内容を挿入。コマンドの出力を蓄え、バッファに読み - 込むために、テンポラリファイルが使用される。コマンドの - 出力を保存するために'shellredir'が使用されるので、標準 - エラー出力も含めるか含めないか指定することができる。 - {cmd}は":!{cmd}と同じように実行されるので、'!'だけを指 - 定した場合には、以前に実行された|:!|コマンドに置き換え - られる。 - -これらのコマンドは、ファイルの内容、もしくはコマンドの出力をバッファへ挿入す -る。これらは取り消す(UNDO)ことができる。これらは"."コマンドで繰り返すことはで -きない。これらは行単位で行われる操作で、挿入はカーソルの直後のラインからか、指 -定したラインの直後から行われる。一番最初のラインより上(ファイルの先頭)に挿入す -るには":0r {name}"というコマンドを使う。 - -":read"コマンドの後には、新しいラインの左で、最初の空白でない文字にカーソルが -移動する。もしExモードでなければ、カーソルは新しい行の最後の左側に移動する(残 -念だがViとの互換性のため)。 - -":r"にファイル名が与えられた場合、それを代替バッファのファイルになる。これは例 -えば代わりにそのファイルを編集したい時に使うことができる: "e! #"。'cpoptions' -オプションから'a'フラグを削除することで、オフに切り替えることができる。 - -":read" には特別な [++opt] 引数が1つある。++edit である。これは実際にファイル -を開いたときと同じようにファイルを挿入したい場合に便利である。空のバッファで次 -のコマンドを実行してみよ: > - :read ++edit filename -こうすると 'fileformat', 'fileencoding', 'bomb' などのオプションがそのファイル -に対して検出された値になる。ただし、(:e filename とした場合と異なり)バッファの -先頭に余計な空行が1行入ってしまう。 - - *file-read* -'fileformat'オプションがファイルの<EOL>の流儀を決定する: -'fileformat' 文字 名前 ~ - "dos" <CR><NL> or <NL> DOS format - "unix" <NL> Unix format - "mac" <CR> Mac format -以前には'textmode'が使用された。それは現在では廃れている。 - -'fileformat'が"dos"の時には、<NL>の前の<CR>は無視され、ファイルの終端にある -CTRL-Zもまた無視される。 - -'fileformat'が"mac"の時には、ファイル内の<NL>は内部的に<CR>によって表現され -る。これは<NL>を表現するために使用される<NUL>との混同を避けるためである。 -|CR-used-for-NL|参照。 - -'fileformats'オプションが空でなかったら、Vimは<EOL>のタイプを識別しようと試み -る(|file-formats|参照)。しかしながら、'fileformat'オプションは変更されない。検 -出されたフォーマットはファイルの読み込みの際にだけ使用される。 -'fileencodings'についても同様。 - -MS-DOS、Win32そしてOS/2以外のシステムでは、DOSフォーマットのファイルを読み込ん -だときにはそれを知らせるために、"[dos format]"というメッセージが表示される。 -マッキントッシュ、MS-DOS、Win32そしてOS/2においては、ファイルがUnixフォーマッ -トであった場合に、"[unix format]"というメッセージが表示される。 -マッキントッシュ以外のシステムでは、ファイルがマックフォーマットであった場合 -に、"[Mac format]"というメッセージが表示される。 - -":r !”をどう使うかの例: > - :r !uuencode binfile binfile -このコマンドは"binfile"を読み込みuuencode化して、それを現在のバッファに読み込 -む。e-mailを編集していて、バイナリファイルを含めたい時に便利である。 - - *read-messages* -ファイルを読み込むときVimはその情報を表示する。いくつかのものについての説明 -をあげる。他のものは見ればわかる。ロングとショートのどちらを使うかは -'shortmess'オプションに依存する。 - - ロング ショート 意味 ~ - [readonly] {RO} ファイルは書き込み制限されている - [fifo/socket] ストリームを使っている - [fifo] FIFOストリームを使っている - [socket] ソケットストリームを使っている - [CR missing] "dos"ファイルフォーマットで読み込ん - でいてCRのないNLを見つけた - [NL found] "mac"ファイルフォーマットで読み込ん - でいてNLを見つけた(unixフォーマット - なのだろう) - [long lines split] 少なくとも一つの行が二つに分割された - [NOT converted] 'fileencoding'から'encoding'の変換が - 失敗した - [converted] 'fileencoding'から'encoding'への変換 - を実施した。 - [crypted] 暗号が解除された - [READ ERRORS] ファイルを全て読み込めなかった - -(訳注)以下日本語メッセージの場合 - ロング ショート 意味 ~ - [読込専用] [読専] ファイルは書き込み制限されている - [FIFO/ソケット] ストリームを使っている - [FIFO] FIFOストリームを使っている - [ソケット] ソケットストリームを使っている - [CR無] "dos"ファイルフォーマットで読み込ん - でいてCRのないNLを見つけた - [NL有] "mac"ファイルフォーマットで読み込ん - でいてNLを見つけた(unixフォーマット - なのだろう) - [長行分割] 少なくとも一つの行が二つに分割された - [未変換] 'fileencoding'から'encoding'の変換が - 失敗した - [変換済] 'fileencoding'から'encoding'の変換 - を実施した。 - [暗号化] 暗号が解除された - [読込エラー] ファイルを全ては読み込めなかった - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/intro.jax b/runtime.old/doc/intro.jax deleted file mode 100644 index 4ae979f62..000000000 --- a/runtime.old/doc/intro.jax +++ /dev/null @@ -1,865 +0,0 @@ -*intro.txt* For Vim バージョン 7.3. Last change: 2011 May 15 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -序文 *ref* *reference* - -1. はじめに |intro| -2. インターネットの Vim 情報 |internet| -3. クレジット |credits| -4. ヘルプの表記法 |notation| -5. モードの紹介 |vim-modes-intro| -6. モードの切り替え |mode-switching| -7. ウィンドウに表示される内容 |window-contents| -8. 用語の定義 |definitions| - -============================================================================== -1. はじめに *intro* - -Vim は Vi IMproved (Viの改良版) です。かつては Vi IMitation (Viの模造品) でし -たが、多くの改良が加えられたので適切な名前に変更されました。Vim はテキストエ -ディタです。Unix のプログラム "Vi" のほとんどのコマンドと、さらに多くの新しい -コマンドを備えています。プログラムを書いたりテキストを編集するのにとても便利で -す。 -すべてのコマンドはキーボードから入力します。そのため、キーボードから手を離す必 -要も、スクリーンから目を離す必要もありません。お望みなら、マウスを使うこともで -きますし、GUIではスクロールバーやメニューを使うこともできます(|gui.txt|参照)。 - -このマニュアルの概要は |help.txt| にあります。Vim から <Help> や <F1> キー、 -|:help| コマンドで開くことができます (単に :help と入力してください。引用符も -バーも必要ありません)。 -ヘルプファイルが標準の位置にインストールされていない場合は、ヘルプファイルの名 -前をオプション 'helpfile' に設定してください。タグでジャンプするのと同じように -ヘルプの項目へジャンプできます。ジャンプしたい項目にカーソルを合わせて CTRL-] -でジャンプできます。CTRL-T で元の場所に戻れます。 - -このマニュアルでは、Vi と Vim の相違点を次のように中カッコの中に記述していま -す。{Vi にはオンラインヘルプはありません}。Vim と Vi の相違点についての要約は -|vi_diff.txt|を参照。 - -このマニュアルの内容は Vim が実行されるほとんどの環境で通用しますが、コン -ピュータや端末によって、少し違う動作をする場合があります。このドキュメントから -外れる内容については、システムごとに個別の説明があります。|sys-file-list| を参 -照。 - -このマニュアルは全ての Vim コマンドとオプションのリファレンスです。Vi や Vim -の入門書ではありません (それを入れるとあちこちで説明が込み入ってしまうので)。 -初心者には、実習 |tutor| があります。Vim の使い方を身につけるにはユーザーマ -ニュアル |usr_toc.txt| を読んでください。 - - *book* -初心者向けの内容を含んだ Vi の本はたくさん出ています。私が推薦できる本は二つあ -ります: - - "Vim - Vi Improved" by Steve Oualline - -訳注: 日本語版は -訳注: ViIMproved‐Vim完全バイブル , 高橋 則利 (翻訳) -訳注: 技術評論社 ; ISBN: 4774120189 - -これは Vim のみを取り扱った最初の本です。初心者にとてもよい本です。最もよく使 -われるコマンドが、図と例を使って説明されています。それほど使われないコマンドも -説明され、さらに高度な機能は要約されています。総括的な索引とクイックリファレン -スがついています。この本の一部はユーザーマニュアルに含まれてます。|frombook| -New Riders Publishing から出版されています。ISBN: 0735710015 -より詳しい情報については、ここを見てみてください。 - http://iccf-holland.org/click5.html - http://www.vim.org/iccf/click5.html - - "Learning the Vi editor" by Linda Lamb and Arnold Robbins - -訳注: 日本語版は -訳注: 入門vi 第6版 , 福崎 俊博 (翻訳) -訳注: オライリー・ジャパン ; ISBN: 4873110831 - -これは Vi についての本で、(第6版では) Vim に関する章もあります。Vi の第一歩が -とてもよく説明されています。Vim 独自のコマンドは簡単に言及されているだけです。 -ドイツ語の翻訳もあります。 -O'Reilly から出版されています。ISBN: 1-56592-426-6. - -============================================================================== -2. インターネットの Vim 情報 *internet* - - *www* *WWW* *faq* *FAQ* *distribution* *download* -Vim のページには Vim についての最新情報が載っています。最新バージョンの Vim へ -のリンクもあります。FAQ はよく尋ねられる質問に対する回答集です。問題があったら -まずこれを読むとよいでしょう。 - - VIMホームページ: http://www.vim.org/ - VIM FAQ: http://vimdoc.sf.net/ - ダウンロード: ftp://ftp.vim.org/pub/vim/MIRRORS - - -Vim について討論している Usenet News グループ *news* *usenet* - comp.editors -このグループでは他のエディタについても話し合われています。Vim について書く場合 -は、そのことを必ず明記してください。 - - *mail-list* *maillist* -Vim のメーリングリストがいくつかあります: -<vim@vim.org> - 現行バージョンの Vim の使い方に関する議論: 使いやすいマップ、質問、回 - 答、特定のバージョンはどこで手に入るかなど。このメーリングリストにはた - くさんの人が参加していて、(初心者の) 質問にも答えてくれます。遠慮せず - どんどん質問してください。 -<vim-dev@vim.org> *vim-dev* *vimdev* - Vim の開発に関する議論: 新しい機能、移植、パッチ、ベータ版など。 -<vim-announce@vim.org> *vim-announce* - Vim の新バージョンに関するアナウンス: ベータ版や他システムへの移植につ - いてもアナウンスがあります。このメーリングリストは購読専用です。 -<vim-multibyte@vim.org> *vim-multibyte* - Vim のマルチバイト機能の使用、改良に関する議論。 -<vim-mac@vim.org> *vim-mac* - Vim のマッキントッシュバージョンの使用、改良に関する議論。 - -最新の情報は http://www.vim.org/maillist.php を参照。 - -NOTE: -- メーリングリストに投稿するにはそのリストに登録する必要があります! -- 登録したアドレスと同じアドレスで投稿する必要があります(スパムメールを避ける - ため)。 -- 最大メッセージサイズは 40000 文字です。 - - *subscribe-maillist* -メーリングリストに参加したい場合は、次の場所へメールを送って下さい。 - <vim-subscribe@vim.org> -"From:" のアドレスが正しいことを確認してください。メーリングリストのサーバーか -ら登録方法についてのヘルプが送られてきます。 - -メーリングリストから過去のメッセージと、それらの索引を得ることができます。その -方法は vim-help に尋ねてください。 - - *maillist-archive* -より詳しい情報とアーカイブについては、Vim メーリングリストページを見てください。 -http://www.vim.org/maillist.php - - -バグレポート: *bugs* *bug-reports* *bugreport.vim* - -バグレポートは Vim 開発陣 <vim_dev@vim.org> に送ってください。 -これはメーリングリストです。たくさんの人がそのメッセージを見ます。それが不都合 -な場合は (例えばセキュリティ関係)、<bugs@vim.org> に送ってください。そのメッ -セージは Vim のメンテナ (Bram) だけに送信されます。 -メッセージは簡潔にお願いします。メールに回答する時間は、Vim を改良する時間から -消費されています! 常に再現可能な例をつけてください。できれば、どこの設定が (あ -るいは機能が) バグの発生に影響しているかを探してください。可能なら、違うマシン -でも試してみて下さい。そして、もし修正できた場合はパッチを私に送って下さい。 -(本家へのリポートは英語でお願いします) - -Vim のバージョンや設定情報を含めてくれると助かります。次のコマンドで情報を得る -ことができます: > - :so $VIMRUNTIME/bugreport.vim -このコマンドはカレントディレクトリにあなたの環境に関する多くの情報を持った -"bugreport.txt" というファイルを作ります。このファイルを送る前に、そこにいかな -る秘密の情報も含まれていないことを確認してください! - -Vim がクラッシュした場合は、クラッシュした場所を探してみてください。詳しくは -|debug.txt| を参照してください。 - -よく分からなかったり、その問題がすでに解決済みかどうか知りたい場合には、 -vim-dev メーリングリストで質問してください。|maillist| - - *year-2000* *Y2K* -Vim の内部では、テキストの編集に日付を使っていないので、2000 年問題はありませ -ん。Vim は 1970 年 1 月 1 日 (正午) からの秒形式で時間を使います。これは、開い -ているファイルとスワップファイルのタイムスタンプをチェックするために使われます -が、致命的な問題は起きません。ただ警告メッセージが表示されるだけでしょう。 - -しかし、32bit 整数で秒があふれてしまう 2038 年問題はあるかもしれません。この問 -題は、コンパイラ、ライブラリ、オペレーティングシステムに依存しています。 -time_t、ctime() 関数が使われているときは特にそうです。time_t はスワップファイ -ル内に 4 バイトで格納されますが、これはファイルの回復時にファイルの日付、時間 -を求めるために使われるだけなので、通常の編集作業には決して影響しません。 - -Vim の strftime() 関数は strftime() システムコールを直接使います。localtime() -は time() システムコールを、getftime() は stat() システムコールで返される時間 -をそれぞれ使用します。システムライブラリが 2000 年対応なら、Vim もそうです。 - -ユーザは外部コマンドを使用する Vim スクリプトを作るかもしれません。このことが -Y2K 問題を招くかもしれませんが、Vim 自身の問題ではありません。 - -============================================================================== -3. クレジット *credits* *author* *Bram* *Moolenaar* - -Vim の大部分は Bram Moolenaar<Bram@vim.org> によって書かれました。 - -ドキュメントの一部は以下の方々によって書かれた Vi のマニュアルによります: - W.N. Joy - Alan P.W. Hewett - Mark Horton - -Vim エディタは Stevie をベースにしており、下記の方々のソフトウェア (のアイディ -ア) も参考にしています。他の人々は私に意見やパッチを送ってくれたり、Vim の良い -点、悪い点に関するフィードバックをしてくれました。 - -これらの人々の協力なくして、Vim は現在の姿にはならなかったことでしょう! - - Ron Aaron Win32 GUIに関する変更 - Mohsin Ahmed 暗号化 - Zoltan Arpadffy VMS移植の作業 - Tony Andrews Stevie - Gert van Antwerpen MS-DOS上のDJGPPに関する変更 - Berkeley DB(3) スワップファイルの実装に関するアイディア - Keith Bostic Nvi - Walter Briscoe Makefileの更新、様々なパッチ - Ralf Brown MS-DOS用のSPAWNOライブラリ - Robert Colon 多くの役立つアドバイス - Marcin Dalecki GTK+ GUIへの移植、ツールバーのアイコン - gettext() - Kayhan Demirel ウガンダのニュースを送ってくれた - Chris & John Downey xvi (マルチウィンドウバージョンのアイディア) - Henk Elbers 最初のVMSへの移植 - Daniel Elstner GTK+ 2 への移植 - Eric Fischer Macへの移植、'cindent'、その他の改良 - Benji Fisher たくさんのユーザの質問に答えてくれた - Bill Foster Athena GUIへの移植 - Google 週に一日 Vim の仕事をさせてくれる - Loic Grenie xvim (マルチウィンドウバージョンのアイディア) - Sven Guckes Vimのプロモーター、 以前のWWWページ管理者 - Darren Hiebert Exuberant ctags - Jason Hildebrand GTK+ 2 への移植 - Bruce Hunsaker VMSへの移植版の改良 - Andy Kahn Cscopeサポート、GTK+ GUIへの移植 - Oezguer Kesim Vimメーリングリストの管理者 - Axel Kielhorn Macintosh移植の仕事 - Steve Kirkendall Elvis - Roger Knobbe オリジナルのWindows NTへの移植 - Sergey Laskavy モスクワからのVimのヘルプ - Felix von Leitner Vimメーリングリストの以前の管理者 - David Leonard UnixへのPython拡張の移植 - Avner Lottem ウィンドウでの右から左への編集 - Flemming Madsen X11 client-server, 様々な機能とパッチ - Tony Mechelynck ユーザーから寄せられたたくさんの質問に回答 - Paul Moore Pythonインターフェイス拡張、たくさんのパッチ - Katsuhito Nagano マルチバイトバージョンに関する作業 - Sung-Hyun Nam マルチバイトバージョンに関する作業 - Vince Negri Win32 GUIと一般的なコンソールの拡張 - Steve Oualline 最初のVimの本の著者|frombook| - Dominique Pelle valgrind のレポートと多くの修正 - A.Politz たくさんのバグ報告と修正 - George V. Reilly Win32移植、Win32 GUIへの移植を始める - Stephen Riehm バグ収集家 - Stefan Roemer さまざまなパッチとユーザへのヘルプ - Ralf Schandl IBM OS/390への移植 - Olaf Seibert DICEとBeBoxバージョン、regexpの改良 - Mortaza Shiran Farsiのパッチ - Peter da Silva termlib - Paul Slootman OS/2への移植 - Henry Spencer 正規表現に関して - Dany St-Amant Macintoshへの移植 - Tim Thompson Stevie - G. R. (Fred) Walter Stevie - Sven Verdoolaege Perlインターフェイス - Robert Webb コマンドライン補完、GUIバージョン、そして - 多くのパッチ - Ingo Wilken Tclインターフェイス - Mike Williams PostScriptの印刷 - Juergen Weigert Latticeバージョン、AUXの改良、UNIXとMS-DOSへ - の移植、autoconf - Stefan 'Sec' Zehl vim.orgの管理 - -バグレポートや提案を送ってくれた人々に感謝します。あまりにたくさんなので、ここ -で彼らの名前について触れることはできませんが。これらの人々のアイディアがなけれ -ば、Vim は今の Vim にはならなかったことでしょう: 彼らが Vim を生かしつづけたの -です! - - -この文書には他のバージョンの Vi に対するいくつかの参照があります: - *Vi* *vi* -Vi "オリジナル"。特に指定がなければSun OS 4.xのバージョンのViを指す。 - ":version"は"Version 3.7, 6/7/85"を返す。別のバージョンに言及すること - もある。Unix 上でのみ動く。ソースコードは許可を得れば利用可能。Vi につ - いての更なる情報は、以下の場所から得られる: - http://vi-editor.org [現在機能していないようですが...] - *Posix* -Posix IEEE standard 1003.2, Part 2: Shell and utilitiesより。 - 一般に "Posix" として知られる。Vi の動作仕様の原典です。 - |posix-compliance| を参照。 - *Nvi* -Nvi "New" Vi。BSD 4.4、FreeBSD に付属の Vi。オリジナルの Vi と高い互換性を - 持ち、少々の拡張がされている。使われているのはバージョン1.79。 - ":version" は "Version 1.79 (10/23/96)" を返す。バージョン 1.81 が開発 - 中だが、ここ数年リリースされていない。 - ソースコードは自由に利用できる。 - *Elvis* -Elvis 別の Vi クローン、Steve Kirkendallの手による。とてもコンパクトだが、 - Vim ほど高機能ではない。使われているのはバージョン 2.1。まだ開発が続い - ている。ソースコードは自由に利用できる。 - -============================================================================== -4. ヘルプの表記法 *notation* - -この文章を構文強調を使って表示すると、見たままの意味ではないテキストは特別に強 -調表示されます。[]、{}、<>、で囲まれた項目や CTRL-X などです。 - -Note: Vim は入力可能な文字はすべてコマンドで使います。実際に、[]、{}、<> を入 -力する場合もあります。それは文脈によって判断できるでしょう。 - - -[] 角カッコで囲まれた文字は省略可能。 - - *count* *[count]* -[count] コマンドに前置して、そのコマンドを繰り返したり、反復したりする - ための省略可能な数字。省略した場合、特に注意が無ければ 1 を指 - 定したのと同じになります。Note: このマニュアルでは、[count] は - コマンドの説明では言及されません。解説する場合だけ説明します。 - これはコマンドを調べ安くするためです。'showcmd'オプションが有 - 効だと、(部分的に) 入力されたカウントがウィンドウの下の方に表 - 示されます。<Del> を使って末尾の数字を削除できます(|N<Del>|)。 - - *[quotex]* -["x] テキストの保管場所として、任意のレジスタを指定できること示す。 - |registers| を参照。x は 'a' から 'z'、'A' から 'Z'、'"'、のど - れか一文字です。場合によっては (put コマンドで使うときなど)、 - '0' から '9'、'%'、'#'、その他の文字も使えます。大文字でも小文字 - でも同じレジスタを指しますが、小文字を使ったときはレジスタの内 - 容が上書きされ、大文字を使ったときはレジスタの内容に追加されま - す。"x を指定しなかった場合や、"" を指定した場合は、無名レジス - タが使われます。 - - *{}* -{} 中括弧の表記は、コマンドの一部として入力する必要があって、そ - こには、いろいろな値を入力することができるときに使われます。 - Vim と Vi の違いを示す場合も中括弧で表記されます (これは文脈か - ら区別できます)。 - - *{char1-char2}* -{char1-char2} char1 から char2 の範囲のどれか一文字。例えば、{a-z} は小文字 - 一文字。複数の範囲が指定される場合もあります。例えば、 - {a-zA-Z0-9} は英数字のどれか一文字です。 - - *{motion}* *movement* -{motion} カーソル移動コマンド。これらは、|motion.txt| で説明されていま - す。例: - w 次の単語の最初に移動 - b 現在の単語の最初へ - 4j 4行下に移動 - /The<CR> つぎの "The" が、ある場所に移動 - オペレータコマンド (|operator|) を入力した後で、対象のテキスト - を選択するため使われます。 - - 移動コマンドがカウントを含み、オペレータコマンドもカウントを - 含むときは、二つのカウントが掛け合わされる。例えば、"2d3w" - は 6 単語を削除する。 - - 移動はバックもできる。例えば、"db" は単語の最初までを削除す - る。 - - 移動はマウスのクリックでもできる。ただし、マウスをサポートし - ていない端末もあります。 - - ":omap" コマンドを使って、オペレータコマンドに対して移動コマ - ンドを入力しているときに働くマップを定義できます。 - - Ex コマンドを使ってカーソルを移動できます。関数を使って複雑 - な移動をすることもできます。どの ":" コマンドが使われても、 - 移動は常に文字指向で排他的です。そのため、改行を含めずに行末 - の文字を選択することはできません ('virtualedit' を設定すれば - 可能)。 - Ex コマンドで、オペレータコマンドを使った場所より前にあるテ - キストを変更したり、他のバッファに移動した場合、結果は予測で - きません。オペレータコマンドを使った場所以降のテキストなら変 - 更できます。カレントバッファがアンロードされないなら、他のバッ - ファにジャンプすることも可能です。 - - *{Visual}* -{Visual} 選択されたテキストの範囲。"v"、"V"、CTRL-V コマンドで選択を開 - 始し、カーソル移動コマンドで選択範囲を変更できます。 - オペレータコマンド (|operator|) を実行する前に使って、対象のテ - キストを選択することができます。|Visual-mode| を参照。 - - *<character>* -<character> 下記の表に示した特殊文字。修飾キーが付くこともあります。修飾 - キーと ASCII 文字の組合せもこのように表記されます。 - - *'character'* -'c' ASCII 文字 1 文字。 - - *CTRL-{char}* -CTRL-{char} 制御文字として入力された文字 {char}。CTRL キーを押しながら - {char} を押す場合です。{char} は大文字でも小文字でも区別されま - せん。CTRL-A と CTRL-a は同じです。SHIFT キーを使うと別のコー - ドを生成する端末もあるため、シフトキーは使わないでください。 - - *'option'* -'option' オプション (設定) はシングルクォートで囲んで表記されます。オプ - ションは設定値を変更できます。|options| を参照。 - - *quotecommandquote* -"command" 説明の中にでてくる入力可能なコマンドは、ダブルクォートで囲んで - 表記されます。 - - *key-notation* *key-codes* *keycodes* -このドキュメントでは、キーの名前として以下のものが使われます。これらは ":map" -コマンドでも使うことができます (キーの名前を挿入するには、CTRL-K を押してか -ら、名前を挿入したいキーを押します)。 - -表記 意味 等価表現 10進数値 ~ ------------------------------------------------------------------------ -<Nul> ゼロ CTRL-@ 0 (10として保存) *<Nul>* -<BS> バックスペース CTRL-H 8 *backspace* -<Tab> タブ CTRL-I 9 *tab* *Tab* - *linefeed* -<NL> ラインフィード CTRL-J 10 (<Nul>に使用) -<FF> フォームフィード CTRL-L 12 *formfeed* -<CR> キャリッジリターン CTRL-M 13 *carriage-return* -<Return> <CR>と同じ *<Return>* -<Enter> <CR>と同じ *<Enter>* -<Esc> エスケープ CTRL-[ 27 *escape* *<Esc>* -<Space> スペース 32 *space* -<lt> 小なり(less-than) < 60 *<lt>* -<Bslash> バックスラッシュ \ 92 *backslash* *<Bslash>* -<Bar> 垂直バー | 124 *<Bar>* -<Del> デリート 127 -<CSI> コマンドの開始バイト ALT-Esc 155 *<CSI>* -<xCSI> GUIにおけるCSI *<xCSI>* - -<EOL> 行の終端 (<CR>、<LF>、<CR><LF> のどれか。 - システムや 'fileformat' に依存) *<EOL>* - -<Up> 上カーソル *cursor-up* *cursor_up* -<Down> 下カーソル *cursor-down* *cursor_down* -<Left> 左カーソル *cursor-left* *cursor_left* -<Right> 右カーソル *cursor-right* *cursor_right* -<S-Up> シフト + 上カーソル -<S-Down> シフト + 下カーソル -<S-Left> シフト + 左カーソル -<S-Right> シフト + 右カーソル -<C-Left> コントロール + 上カーソル -<C-Right> コントロール + 上カーソル -<F1> - <F12> ファンクションキー1から12 *function_key* *function-key* -<S-F1> - <S-F12> シフト + ファンクションキー1から12 - *<S-F1>* -<Help> ヘルプキー -<Undo> アンドゥキー -<Insert> 挿入キー -<Home> ホーム *home* -<End> エンド *end* -<PageUp> ページアップ *page_up* *page-up* -<PageDown> ページダウン *page_down* *page-down* -<kHome> テンキーのホーム(左上) *keypad-home* -<kEnd> テンキーのエンド(左下) *keypad-end* -<kPageUp> テンキーのページアップ(右上) *keypad-page-up* -<kPageDown> テンキーのページダウン(右下) *keypad-page-down* -<kPlus> テンキーの+ *keypad-plus* -<kMinus> テンキーの- *keypad-minus* -<kMultiply> テンキーの * *keypad-multiply* -<kDivide> テンキーの / *keypad-divide* -<kEnter> テンキーのEnter *keypad-enter* -<kPoint> テンキーのピリオド *keypad-point* -<k0> - <k9> テンキーの0から9 *keypad-0* *keypad-9* -<S-...> シフトキー *shift* *<S-* -<C-...> コントロールキー *control* *ctrl* *<C-* -<M-...> altまたはmetaキー *meta* *alt* *<M-* -<A-...> <M-...>と同じ *<A-* -<D-...> コマンドキー (Macintosh のみ) *<D-* -<t_xx> termcapで"xx"エントリを持つキー ------------------------------------------------------------------------ - -Note: シフトされたカーソルキー、ヘルプキー、アンドゥキーを使える端末はあまりあ -りません。Amiga上では、シフトされたファンクションキー 10 は、キーシーケンスに -使われるコード (CSI) を生成します。このコードを入力すると、他のキーを入力する -まで待機状態になります。 - -Note: 削除キーのコードは二つあります。127 は削除キーの 10 進 ASCII 値で、これ -は常に認識されます。削除キーが別の値を生成することもあり、その場合は、termcap -エントリの "kD" からその値を得ます。どちらも同じ効果をもちます。|:fixdel|も参 -照してください。 - -Note: テンキーのキーは、"普通"のキーと同じ用途に使われます。例えば、<kHome>は -<Home>と同じ効果を持ちます。テンキーのキーから、普通のキーと同じキーコードが送 -信される場合、それは普通のキーとして認識されます。例えば、<kHome> から<Home> -と同じコードが送信される場合、<kHome> が押されたとしても、<Home> が押されたと -認識されます。その場合、<kHome> へのマッピングは機能しません。 - - *<>* -例ではよく <> 表記が使われます。これは、何を入力すべきかを明確に表記するために -つかわれますが、文字どおりに入力する必要がある場合もあります。例えば、":map" -コマンドで使う場合など。規則は以下のとおりです: - 1. バックスラッシュと '<' 以外の印字可能文字はそのまま表記される。 - 2. バックスラッシュは "\\" (ダブルバックスラッシュ)、または "<Bslash>" と表 - 記される。 - 3. 実際の '<' は "\<"、または "<lt>" と表記される。混乱を招く恐れがなけれ - ば、'<' はそのまま使われる。 - 4. "<key>" は特殊キーを打つことを示す。これは上記の表で説明している表記で - す。いくつか例を挙げます: - <Esc> エスケープキー - <C-G> CTRL-G - <Up> 上カーソルキー - <C-LeftMouse> コントロール + 左マウスクリック - <S-F11> シフト + ファンクションキー11 - <M-a> Meta + a ('a' with bit 8 set) - <M-A> Meta + A ('A' with bit 8 set) - <t_kd> "kd" termcapエントリ(下カーソルキー) - -<> 表記を使うには、'cpoptions' から '<' フラグを除く必要があります -('compatible' がオフのときは、初期設定でそうなっています)。 > - :set cpo-=< - <> 表記の特別な意味をなくすには <lt> を使います。バックスラッシュを使う方法 -も機能しますが、それは 'cpoptions' が 'B' フラグを含んでいないときだけです。 - -CTRL-H を "<Home>" の 6 文字にマップする例: > - :imap <C-H> \<Home> - :imap <C-H> <lt>Home> -最初の例は 'cpoptions' に 'B' フラグが含まれていない場合のみ機能します。2 番目 -の例は常に機能します。 -マップで "<lt>" を文字どおりに使うには 次のようにします: > - :map <C-L> <lt>lt> - -マップ、短縮入力、メニューコマンドについては、例をコピー&ペーストして、そ -のまま使うことができます。あるいは、'<' と '>' も含めて、そのまま入力してくだ -さい。これは ":set" や ":autocmd" などの他のコマンドでは機能しません! - -============================================================================== -5. モードの紹介 *vim-modes-intro* *vim-modes* - -Vim には 6 つの基本モードがあります。 - - *Normal* *Normal-mode* *command-mode* -ノーマルモード ノーマルモードでは普通の編集コマンドを全て入力でき - ます。エディタをスタートするとこのモードに入ります - (オプション 'insertmode' を設定しているときは違います。 - 以下を参照)。これはコマンドモードとも呼ばれます。 - -ビジュアルモード ノーマルモードに似ていますが、移動コマンドで選択領域が - 拡大されます。移動コマンド以外のコマンドを使うと、選択 - 領域に対してそのコマンドが実行されます。|Visual-mode| - を参照。 - オプション 'showmode' がオンなら、"-- VISUAL --" が - ウィンドウの最下部に表示されます。 - -セレクトモード これは、MS-Windows でテキストを選択するときの動作に似 - ています。印字可能文字が入力されると、選択範囲を削除 - し、挿入モードに入ります。|Select-mode|を参照。 - オプション 'showmode' がオンなら、"-- SELECT --" が - ウィンドウの最下部に表示されます。 - -挿入モード 挿入モードでは、タイプされたテキストはバッファに挿入 - されます。|Insert-mode|を参照。 - オプション 'showmode' がオンなら、"-- INSERT --" が - ウィンドウの最下部に表示されます。 - -コマンドラインモード コマンドラインモードでは、ウィンドウの下部に 1 行のテ - キストを入力できます。これは Ex コマンド、":"、パター - ン検索コマンド、"?"、"/"、そしてフィルタコマンド、"!" - で使用します。|Cmdline-mode|を参照。 - -Ex モード コマンドラインモードに似てますが、コマンド入力後も Ex - モードに留まります。コマンドライン編集は、かなり制限さ - れます。|Ex-mode|を参照。 - -加えて、6 つのモードがあります。これらは基本モードの変種です。 - - *Operator-pending* *Operator-pending-mode* -オペレータ待機モード ノーマルモードに似てますが、オペレータコマンドが実行された後 - で、その適用範囲を決定するための移動コマンド - ({motion}) を得るために、Vim が待機している状態です。 - -置換モード 置換モードは挿入モードの特別版です。挿入モード - と同様のことができますが、一文字入力するごとに、その - 場所にある文字が一つ削除されます。|Replace-mode|を参 - 照。 - オプション 'showmode' がオンなら、"-- REPLACE --" が - ウィンドウの最下部に表示されます。 - -仮想置換モード 仮想置換モードは置換モードに似ていますが、ファイルの文 - 字の上ではなく、画面上の任意の位置を置換できます。 - |Virtual-Replace-mode| を参照。'showmode' がオンなら、 - "-- VREPLACE --" がウィンドウの最下部に表示されます。 - -挿入ノーマルモード 挿入モードで CTRL-O を入力すると、このモードに入りま - す。ノーマルモードに似てますが、コマンドが実行された - 後、挿入モードに戻ります。 - オプション 'showmode' がオンなら、"-- (insert) --" が - ウィンドウの最下部に表示されます。 - -挿入ビジュアルモード 挿入モードでビジュアル選択を開始すると、このモードに入 - ります。例えば、CTRL-O を使い, その後 "v"、"V"、CTRL-V - を使ったときです。 - ビジュアル選択が終了すると、挿入モードに戻ります。 - オプション 'showmode' がオンなら、 - "-- (insert) VISUAL --" がウィンドウの最下部に表示され - ます。 - -挿入セレクトモード 挿入モードでセレクトモードを開始すると、このモードに入 - ります。例えば、マウスをドラッグしたり、<S-Right> を押 - したときです。 - セレクトモードが終了すると、挿入モードに戻ります。 - オプション 'showmode' がオンなら、 - "-- (insert) SELECT --" がウィンドウの最下部に表示され - ます。 - -============================================================================== -6. モードの切り替え *mode-switching* - -何らかの理由で、現在のモードがわからなくなったときは、<Esc> を 2 度押すことで -常にノーマルモードに戻ることができます。Ex モードでは機能しないので、その場合 -は":visual" を使ってください。 -<Esc> を押したとき、スクリーンフラッシュや、ベルの音で、ノーマルモードに戻った -ことを知ることができます。挿入モードで CTRL-O の後に <Esc> を押した場合、ビー -プ音は鳴りますが、まだ挿入モードの中なので、もう一度 <Esc> を押してください。 - - *i_esc* - 移動先のモード ~ - Normal Visual Select Insert Replace Cmd-line Ex ~ -現在のモード ~ -ノーマル v V ^V *4 *1 R gR : / ? ! Q -ビジュアル *2 ^G c C -- : -- -セレクト *5 ^O ^G *6 -- -- -- -挿入 <Esc> -- -- <Insert> -- -- -置換 <Esc> -- -- <Insert> -- -- -コマンドライン *3 -- -- :start -- -- -Ex :vi -- -- -- -- -- - --- 不可 - -*1 ノーマルモードから挿入モードへは、コマンド "i"、"I"、"a"、"A"、"o"、"O"、 - "c"、"C"、"s"、"S" で入ります。 -*2 ビジュアルモードからノーマルモードへは非移動コマンドで入れますが、そのコマ - ンドは実行されてしまいます。<Esc>、"v"、"V"、"CTRL-V" (|v_v|を参照) を入力 - すれば、副作用なしにビジュアルモードから出られます。 -*3 コマンドラインモードからノーマルモードへ移行するには次のようにします: - - <CR> か <NL> を入力する。入力途中のコマンドは実行されます。 - - 行の全てを削除し (例、CTRL-Uを使う)、そして、<BS> を入力する。 - - CTRL-C または <Esc> を入力する、入力途中のコマンドを実行せずに終了できま - す。 - 最後の方法ですが、<Esc> が 'wildchar' に設定されている場合があります。その - 場合、コマンドライン補完が実行されますが、それを無視して、再び <Esc> を入力 - してください。{Vi では、<Esc> を入力すると、そのコマンドラインが実行されま - す。これは多くの人が期待するような動作ではないので、Vim では変更されまし - た。しかし、その <Esc> がマップの一部であるような場合には、コマンドラインは - 実行されます。<Esc> を入力したときに、Vi と同じように動作して欲しいときは、 - ":cmap ^V<Esc> ^V^M" を使ってください} -*4 ノーマルモードからセレクトモードに移行するには次のようにします: - - 'selectmode' が "mouse" を含んでいるときは、マウスでテキストを選択する。 - - 'selectmode' が "key" を含んでいるときは、シフトキーを押しながら、特殊 - キーでカーソルを動かします。(:set keymodel+=startsel が必要) - - 'selectmode' が "cmd" を含んでいるときは、"v"、"V"、"CTRL-V" を使う。 - - "gh"、"gH"、"g CTRL-H" を使う。|g_CTRL-H| -*5 セレクトモードからノーマルモードに移行するには、シフトキーを押さずに特殊 - キーでカーソルを動かします。(:set keymodel+=stopsel が必要) -*6 セレクトモードから挿入モードへ移行するには、印字可能文字 (普通の文字) を入 - 力します。選択範囲は削除され、入力した文字が挿入されます。 - -'insertmode' がオンのときは、編集作業は挿入モードで始まります。 - - *CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N* -CTRL-\ CTRL-N と <C-\><C-N> を使って、どのモードからでもノーマルモードに移行で -きます。このコマンドを使えば、確実にノーマルモードになることができます。<Esc> -のときのようにビープ音はなりません。ただし、Ex モードでは機能しません。|f|や -|m|のように引数をとるコマンドの後で使われたときは、'ttimeoutlen' で設定された -タイムアウトが適用されます。 - - *CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G* -'insertmode' がオンのときは、CTRL-\ CTRL-G や <C-\><C-G> で挿入モードに移行で -きます。オフのときはノーマルモードに移行します。このコマンドを使えば、現在どの -モードにいるのかに関わらず、'insertmode' に設定されたモードに移行することがで -きます。 - - *Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501* -Q "Ex" モードに切り替えます。このモードは ":" コマンドを - 続けて入力するようなものですが、次の点が違います: - - 毎回 ":" を押す必要がない。 - - コマンドを実行するごとに画面が更新されない。 - - 通常のコマンドライン編集機能は使えない。 - - マップと短縮入力は使えない。 - つまり、"標準の" 行編集コマンドだけを使って入力します - (削除に<Del>または<BS>、行削除に CTRL-U を使用する)。 - Vim が "ex" という名前で実行された場合には、このモード - で起動します。 - "Ex" モードを抜けるには、":vi" コマンド |:visual| を使 - います。 - Note: Vim の昔のバージョンでは "Q" がテキストを整形す - るコマンドでしたが、いまは |gq| になっています。ただし - |vimrc_example.vim| を使っている場合は、"Q" と "gq" は - 同じ動作をします。 - - *gQ* -gQ "Ex" モードに切り替えます。"Q" と同じですが、実際に - ":" コマンドでコマンドを入力するのと同じように動作しま - す。コマンドライン編集や補完などがすべて利用可能です。 - "Ex" モードを抜けるには、":vi" コマンド |:visual| を使 - います。{Vi にはない} - -============================================================================== -7. ウィンドウに表示される内容 *window-contents* - -ノーマルモードと挿入/置換モードでは、スクリーンに現在のバッファの内容が表示さ -れます。つまり、見ているものが得られるもの (WYSIWYG) です。しかし、例外が二つ -があります: -- オプション 'cpoptions' が '$' を含んでいて、一行に収まる範囲を変更 (|c|) す - るときは、テキストはすぐに削除されず、削除される文字の最後の位置に '$' が表 - 示されます。 -- あるウィンドウでテキストを挿入していて、別のウィンドウでも同じテキストを表示 - しているとき、挿入を完了するまでそのウィンドウの表示は更新されません。 -訳注: 確認できず -{Vi: 遅い端末では画面が常に更新されるとは限りません} - -ウィンドウの幅より長い行は、折り返して表示されます。'wrap' がオフのときは折り -返されません (下記参照)。'linebreak' を設定すると空白文字で折り返すことができ -ます。 - -ウィンドウ内でバッファの最終行より下に表示領域ある場合、以下のように、それらの -行の始めに '~' が表示されます: - - +-----------------------+ - |some line | - |last line | - |~ | - |~ | - +-----------------------+ - -このように、'~'はバッファの最後に到達したことを示します。 - -ウィンドウに表示されている最後の行が表示しきれない場合、以下のように、最終行の -場所に '@' が表示されます: - - +-----------------------+ - |first line | - |second line | - |@ | - |@ | - +-----------------------+ - -このように、'@'はウィンドウに収まりきらない行があることを示します。 - -'display' に "lastline" フラグが含まれている場合、'@' はウィンドウの左側に表示 -されません。最終行がウィンドウに完全に収まらない場合は、収まる部分のみが表示さ -れ、最後の 3 文字が次のように"@@@"で置き換えられます: - - +-----------------------+ - |first line | - |second line | - |a very long line that d| - |oesn't fit in the wi@@@| - +-----------------------+ - -長すぎてウィンドウに収まりきらない単一の行があるときは、特別な場合として扱われ -ます。Vim はカーソルのある場所付近のみを表示します。特殊記号は表示されません。 -その行のどの部分でも編集できます。 -{Vi はウィンドウに収まらない行に対しては "内部エラー" を起こします} - -'@' と '~' の強調表示を設定するには、オプション 'highlight' の '@' を設定しま -す。それらの文字と、バッファの中の本物の文字を区別することができます。 - -折り返された行の先頭には 'showbreak' に設定した文字が表示されます。 - - *wrap-off* -'wrap' がオフの場合、長い行は折り返されません。スクリーンに収まる分だけ表示さ -れます。カーソルが表示されていない部分に移動すると、スクリーンは水平方向にスク -ロールします。この方法の利点は、縦の列がありのままに表示されること、スクリーン -に収まらない行も編集できることです。欠点としては、一行の全ての文字を一度に見る -ことができないことが挙げられます。'sidescroll' にはスクロールする最小の列(カラ -ム)数を設定します。 -{Vi には 'wrap' オプションはありません} - -全ての普通のASCII文字はスクリーンに直接表示されます。<Tab> は、それが表現する -数のスペースに置き換えられます。他の非表示文字は、"^{char}" に置き換えられま -す、このとき {char} には、その非表示文字に 64 を足した文字が入ります。つまり、 -文字 7 (ベル文字) は "^G" と表示されます。127 から 160 までの文字は "~{char}" -で置き換えられます、このとき {char} には、その文字から 64 を引いた文字が入りま -す。これらの文字はスクリーン上では複数幅で表示されます。カーソルはその複数幅の -先頭にのみ移動させることができます - -'number' がオンの場合、全ての行の先頭に行番号が表示されます。 -Tip: 行を折り返したときに、行番号と行の表示を混ぜたくないときは、'showbreak' -に 8 つのスペースをセットします: > - ":set showbreak=\ \ \ \ \ \ \ \ " - -'list' がオンの場合、<Tab> 文字はいくつかのスペースとしてではなく、"^I" として -表示されます。'$' が行末に表示されるので、行の最後についた空白を見つけることが -できます。 - -コマンドラインモードでは、コマンドラインのみが正しく表示されます。バッファの -内容の表示は、コマンドラインモードから抜けたときに更新されます。 - -ウィンドウの最下行はステータスやその他のメッセージのために使われます。ステータ -スメッセージが使われるのは、オプションがオンのときのみです: - -ステータスメッセージ オプション 初期設定 Unixの初期設定 ~ -現在のモード 'showmode' on on -コマンドの文字 'showcmd' on off -カーソルの位置 'ruler' off off - -現在のモードとは、"-- INSERT --" や "-- REPLACE --" のことです、'showmode' -を参照。コマンドの文字とは、入力されて、まだ実行されていないコマンドのことで -す。{Vi は入力した文字やカーソルの位置を表示しません} - -遅い端末を使っている場合は、ステータスメッセージをオフにすることで編集のスピー -ドを上げることができます: > - :set nosc noru nosm - -エラーが起きたとき、エラーメッセージは少なくとも一秒間は表示されます(反転表示 -で)。{Vi ではエラーメッセージが読む間もなく他のメッセージに上書きされる場合が -あります} - -いくつかのコマンドでは、そのコマンドが作用する行数が表示されます。何行以上でそ -の表示をするかは、'report' で設定できます (初期設定は 2)。 - -Amiga 上では、Vim は CLI ウィンドウで実行されます。Vim の名前と現在のファイル -名の絶対パスがタイトルバーに表示されます。ウィンドウがリサイズされると、Vim は -自動的にウィンドウを再描画します。ウィンドウは好きなだけ小さくできますが、小さ -すぎると1行のみで収まりきらなくなります。最下行に表示されるメッセージが読める -ように、最低でも40文字の幅を取ってください。 - -ほとんどの UNIX システム上で、Vim はウィンドウのリサイズを正しく認識、把握でき -ます。{Vi ではできません} - -============================================================================== -8. 用語の定義 *definitions* - - スクリーン Vim が使う領域全体。端末ウィンドウを指す場合もある。 - "Vimウィンドウ" とも呼ばれる。 - ウィンドウ バッファが表示される場所。 - -一つのスクリーンは一つ以上のウィンドウを内包し、それらはステータスラインで区切 -られ、最下行にはコマンドラインが表示されます。 - - +-------------------------------+ -screen | window 1 | window 2 | - | | | - | | | - |= status line =|= status line =| - | window 3 | - | | - | | - |==== status line ==============| - |command line | - +-------------------------------+ - -コマンドラインはメッセージを表示するためにも使われます。コマンドラインに十分な -表示領域がない場合はスクリーンがスクロールします。 - -行には 4 種類あり、次の違いがあります: - - バッファ行 バッファ内の行。ファイルに読み書きする行のこと。 - 行の長さは制限なし。 - 論理行 折り畳みが適用されたバッファ行。複数のバッファ行が折り - 畳まれ論理行 1 行となり、次のように表示される: - "+-- 99 lines folded"。 - 行の長さは制限なし。 - ウィンドウ行 ウィンドウに表示される行: 折り返し、ラインブレイクなど - が適用された後の論理行の一部。長さはウィンドウの幅以 - 下。それ以上長い行は折り返されるか切り詰められる。 - スクリーン行 Vim が使うスクリーンの行。全てのウィンドウのウィンドウ - 行とステータスライン、コマンドラインからなる。長さはス - クリーンの幅以下。コマンドラインがそれ以上長くなったと - きは折り返して表示され、表示領域を作るために行がスク - ロールされる。 - -バッファ行 論理行 ウィンドウ行 スクリーン行 ~ - -1. one 1. one 1. +-- folded 1. +-- folded -2. two 2. +-- folded 2. five 2. five -3. three 3. five 3. six 3. six -4. four 4. six 4. seven 4. seven -5. five 5. seven 5. === status line === -6. six 6. aaa -7. seven 7. bbb - 8. ccc ccc c -1. aaa 1. aaa 1. aaa 9. cc -2. bbb 2. bbb 2. bbb 10. ddd -3. ccc ccc ccc 3. ccc ccc ccc 3. ccc ccc c 11. ~ -4. ddd 4. ddd 4. cc 12. === status line === - 5. ddd 13. (command line) - 6. ~ - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/map.jax b/runtime.old/doc/map.jax deleted file mode 100644 index 30416c79e..000000000 --- a/runtime.old/doc/map.jax +++ /dev/null @@ -1,1407 +0,0 @@ -*map.txt* For Vim バージョン 7.3. Last change: 2011 Jun 13 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -キーマップ、短縮入力、ユーザ定義コマンドについて。 - -ユーザマニュアルの|05.3|、|24.7|、|40.1|でこの機能について紹介しています。 - -1. マップ |key-mapping| - 1.1 マップコマンド |:map-commands| - 1.2 特別な引数 |:map-arguments| - 1.3 マップとモード |:map-modes| - 1.4 マップの一覧表示 |map-listing| - 1.5 特殊キーのマップ |:map-special-keys| - 1.6 特殊文字 |:map-special-chars| - 1.7 マップに使うキー |map-which-keys| - 1.8 例 |map-examples| - 1.9 マップを使う |map-typing| - 1.10 Altキーを使ったマップ |:map-alt-keys| - 1.11 オペレーターの作成 |:map-operator| -2. 短縮入力 |abbreviations| -3. ローカルマップとローカル関数 |script-local| -4. ユーザ定義コマンド |user-commands| - -============================================================================== -1. マップ (Key mapping) *key-mapping* *mapping* *macro* - -マップは入力キーの動作を変更するために使われます。一般的にはファンクションキー -にコマンドを割り当てるのに使われます。例: > - - :map <F2> a<C-R>=strftime("%c")<CR><Esc> - -このマップはカーソルの位置に現在の日時を挿入します。(<F2>などは|<>|表記法を参照) - - -1.1 マップコマンド *:map-commands* - -マップを新しく作成、削除、一覧表示するコマンドがあります。マップコマンドの種類 -とモードの関係については |map-overview|を参照してください。 - -{lhs} left-hand-side (左辺値) の略 *{lhs}* -{rhs} right-hand-side (右辺値) の略 *{rhs}* - -:map {lhs} {rhs} |mapmode-nvo| *:map* -:nm[ap] {lhs} {rhs} |mapmode-n| *:nm* *:nmap* -:vm[ap] {lhs} {rhs} |mapmode-v| *:vm* *:vmap* -:xm[ap] {lhs} {rhs} |mapmode-x| *:xm* *:xmap* -:smap {lhs} {rhs} |mapmode-s| *:smap* -:om[ap] {lhs} {rhs} |mapmode-o| *:om* *:omap* -:map! {lhs} {rhs} |mapmode-ic| *:map!* -:im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap* -:lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lmap* -:cm[ap] {lhs} {rhs} |mapmode-c| *:cm* *:cmap* - キー入力 {lhs} を {rhs} に割り当てます。作成したマップ - は、マップコマンドに対応したモードで使用できます。マッ - プが使用されたときに {rhs} が調べられ、再マップされま - す。マップを入れ子にしたり再帰的にすることができます。 - - -:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap* -:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap* -:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap* -:xn[oremap] {lhs} {rhs} |mapmode-x| *:xn* *:xnoremap* -:snor[emap] {lhs} {rhs} |mapmode-s| *:snor* *:snoremap* -:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap* -:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!* -:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap* -:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap* -:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap* - キー入力 {lhs} を {rhs} に割り当てます。作成したマッ - プ、はマップコマンドに対応したモードで使用できます。 - {rhs} は再マップされないので、マップが入れ子になったり - 再帰的になることはありません。コマンドを再定義するとき - によく使われます。 - {Vi にはない機能です} - - -:unm[ap] {lhs} |mapmode-nvo| *:unm* *:unmap* -:nun[map] {lhs} |mapmode-n| *:nun* *:nunmap* -:vu[nmap] {lhs} |mapmode-v| *:vu* *:vunmap* -:xu[nmap] {lhs} |mapmode-x| *:xu* *:xunmap* -:sunm[ap] {lhs} |mapmode-s| *:sunm* *:sunmap* -:ou[nmap] {lhs} |mapmode-o| *:ou* *:ounmap* -:unm[ap]! {lhs} |mapmode-ic| *:unm!* *:unmap!* -:iu[nmap] {lhs} |mapmode-i| *:iu* *:iunmap* -:lu[nmap] {lhs} |mapmode-l| *:lu* *:lunmap* -:cu[nmap] {lhs} |mapmode-c| *:cu* *:cunmap* - マップコマンドに対応したモードの {lhs} というマップを - 削除します。他のモードのマップは残ります。 - Note: 末尾の空白は {lhs} に含まれます。次の unmap コマ - ンドは機能しません: > - :map @@ foo - :unmap @@ | print - -:mapc[lear] |mapmode-nvo| *:mapc* *:mapclear* -:nmapc[lear] |mapmode-n| *:nmapc* *:nmapclear* -:vmapc[lear] |mapmode-v| *:vmapc* *:vmapclear* -:xmapc[lear] |mapmode-x| *:xmapc* *:xmapclear* -:smapc[lear] |mapmode-s| *:smapc* *:smapclear* -:omapc[lear] |mapmode-o| *:omapc* *:omapclear* -:mapc[lear]! |mapmode-ic| *:mapc!* *:mapclear!* -:imapc[lear] |mapmode-i| *:imapc* *:imapclear* -:lmapc[lear] |mapmode-l| *:lmapc* *:lmapclear* -:cmapc[lear] |mapmode-c| *:cmapc* *:cmapclear* - マップコマンドに対応したモードのすべてのマップを削除し - ます。{Vi にはない機能です} - バッファローカルなマップを削除するには <buffer> 引数を - 付けてください |:map-<buffer>|。 - mappings |:map-<buffer>| - 警告: 標準設定のマップも削除されます。 - -:map |mapmode-nvo| -:nm[ap] |mapmode-n| -:vm[ap] |mapmode-v| -:xm[ap] |mapmode-x| -:sm[ap] |mapmode-s| -:om[ap] |mapmode-o| -:map! |mapmode-ic| -:im[ap] |mapmode-i| -:lm[ap] |mapmode-l| -:cm[ap] |mapmode-c| - マップコマンドに対応したモードのすべてのマップを一覧表 - 示します。Note: ":map" と ":map!" は複数のモードを表示 - できるのでよく使われます。 - -:map {lhs} |mapmode-nvo| *:map_l* -:nm[ap] {lhs} |mapmode-n| *:nmap_l* -:vm[ap] {lhs} |mapmode-v| *:vmap_l* -:xm[ap] {lhs} |mapmode-x| *:xmap_l* -:sm[ap] {lhs} |mapmode-s| *:smap_l* -:om[ap] {lhs} |mapmode-o| *:omap_l* -:map! {lhs} |mapmode-ic| *:map_l!* -:im[ap] {lhs} |mapmode-i| *:imap_l* -:lm[ap] {lhs} |mapmode-l| *:lmap_l* -:cm[ap] {lhs} |mapmode-c| *:cmap_l* - マップコマンドに対応したモードの {lhs} で始まるマップ - を一覧表示します。 - {Vi にはない機能です} - -マップコマンドを使うと、単キーまたは複数キーの入力を別の文字列にマップできま -す。ファンクションキーにコマンド列を割り当てたり、あるキーを別のキーに変換した -りできます。マップを保存、復元する方法については |:mkexrc| を参照してくださ -い。 - - *map-ambiguous* -二つのマップがあって、両方とも同じ文字で始まっている場合、どちらを使用するかが -あいまいになってしまいます。例: > - :imap aa foo - :imap aaa bar -"aa" と入力したとき、"aa" と "aaa" のどちらを使用するかを決定するためには、次 -の文字が必要になります。そのため、"aa" が入力された時点ではまだマップは適用さ -れず、次の入力まで待機状態になります。例えば空白文字を入力すれば "foo" と空白 -文字が挿入されます。"a" を入力すれば "bar" が挿入されます。 -{Vi はあいまいなマップを許可しません} - - -1.2 特別な引数 *:map-arguments* - -引数に "<buffer>"、"<silent>"、"<special>"、"<script>"、"<expr>"、"<unique>"、 -を指定できます。マップコマンドの直後 (他の引数の前) に置いてください。 - - *:map-local* *:map-<buffer>* *E224* *E225* -カレントバッファだけで使用できるマップを作成するには、マップコマンドの引数に -"<buffer>" を指定します。例: > - :map <buffer> ,w /[.,;]<CR> -この場合、他のバッファで、",w" に対して別の操作を割り当てることができます: > - :map <buffer> ,w /[#&!]<CR> -バッファローカルなマップは通常のマップよりも優先して使用されます。 -"<buffer>" はマップを削除するときにも指定できます: > - :unmap <buffer> ,w - :mapclear <buffer> -バッファローカルのマップはそのバッファが削除されるときにいっしょに消去されま -す。アンロード(|:bunload|)では消去されません。ローカルオプションと同じです。 - - *:map-<silent>* *:map-silent* -実行するコマンドがコマンドラインに表示されないようにするには、マップコマンドの -引数に "<silent>" を指定します。例: > - :map <silent> ,h /Header<CR> -このマップを使用するとき、検索文字列はコマンドラインに表示されません。しかし、 -実行されたコマンドが出力するメッセージは表示されてしまいます。それを静かにさせ -るには ":silent" を使います。 - :map <silent> ,h :exe ":silent normal /Header\r"<CR> -それでもまだ、例えば inputdialog() のプロンプトなどは表示されます。 -"<silent>" は短縮入力にも使えますが、コマンドラインで使うと正しく表示されなく -なります。 - - *:map-<special>* *:map-special* -'cpoptions' に "<" フラグが入っている場合でも、<> 表記を使って特殊キーを記述で -きます。'cpoptions' を設定することで副作用を発生させたくない場合に使ってくださ -い。例: > - :map <special> <F12> /Header<CR> -< - *:map-<script>* *:map-script* -マップや短縮入力を定義するときに "<script>" 引数を指定すると、{rhs} の中の -"<SID>" で始まるスクリプトローカルなマップだけが再マップされます。別の場所で -マップが定義されていても (例えば mswin.vim で CTRL-V にマップが定義されていて -もに)、その影響を避けることができます。その場合でも同じスクリプトで定義された -マップは使うことができます。 -Note: ":map <script>" と ":noremap <script>" の動作は同じです。コマンド名より -"<script>" の効果が優先されます。再マップが制限されることが明確になるため -":noremap <script>" を使う方がいいでしょう。 - - *:map-<unique>* *E226* *E227* -マップや短縮入力を定義するときに "<unique>" 引数を指定すると、同じ名前のものが -すでに定義されていた場合に、コマンドは失敗します。例: > - :map <unique> ,w /[#&!]<CR> -バッファローカルのマップを定義するときは、通常のマップも検査の対象となります。 -失敗する例: > - :map ,w /[#&!]<CR> - :map <buffer> <unique> ,w /[.,;]<CR> -すでにマップされている機能をそのままに、新たにマップを設定したい場合は、 -|maparg()| を参照してください。 - - *:map-<expr>* *:map-expression* -マップや短縮入力を定義するときに "<expr>" 引数を指定すると、引数が式 (スクリプ -ト) として扱われます。マップが実行されたときに、式が評価され、その値が {rhs} -として使われます。例: > - :inoremap <expr> . InsertDot() -InsertDot() 関数の戻り値が挿入されます。カーソルの前のテキストをチェックして、 -ある条件に一致するなら omni 補完を開始する、というようなことができます。 - -短縮入力では、入力されて短縮入力展開のトリガーとなった文字が |v:char| にセット -されます。これを使って {lhs} の展開方法を決めることもできます。自分で v:char -を挿入したり変更したりすべきではありません。 - -副作用に注意してください。式は文字の取得中に評価されるため、簡単に異常動作を起 -こせてしまいます。そのため、次のものは制限されます: -- バッファのテキストの変更 |textlock|。 -- 他のバッファの編集。 -- |:normal| コマンド。 -- カーソルの移動は可能ですが、後で元に戻されます。 -- getchar() は使用できますが、既存の入力バッファからは取得できず、新しい入力 - バッファは捨てられます。 -以上のことを実現したい場合は、そのためのコマンド文字列を返してください。 - -例を示します。リスト番号を自動的に増加させつつ挿入します: > - let counter = 0 - inoremap <expr> <C-L> ListItem() - inoremap <expr> <C-R> ListReset() - - func ListItem() - let g:counter += 1 - return g:counter . '. ' - endfunc - - func ListReset() - let g:counter = 0 - return '' - endfunc - -CTRL-L で次の番号を挿入し、CTRL-R で番号をリセットします。CTRL-R は空文字列を -返すので、なにも挿入されません。 - -Note: 特殊キーが機能するようにしたり、テキスト中の CSI バイトをエスケープした -りするために、特別な処理が行われています。|:map| コマンドも同様の処理を行うの -で、それが二重に実行されるのを防ぐ必要があります。次のものは機能しません: > - :imap <expr> <F3> "<Char-0x611B>" -なぜなら、<Char- で表記した文字 (あるいは本物の文字) のバイト列は |:imap| コマ -ンドが解釈されるときにエスケープされ、<expr> で使われるときにもう一度エスケー -プされるからです。次のものは機能します: > - :imap <expr> <F3> "\u611B" -テキストの末尾以外で 0x80 をシングルバイトとして使った場合、それは機能しませ -ん。特殊キーとして認識されます。 - - -1.3 マップとモード *:map-modes* - *mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o* - -マップには 6 つの種類があります。 -- ノーマルモード: ノーマルモードのコマンドを入力するとき。 -- ビジュアルモード: ビジュアルモードのコマンドを入力するとき。 -- セレクトモード: ビジュアルモードに似ていますが入力したテキストによって選択範 - 囲が置換されます。 -- モーション待ちモード: コマンドを入力した後で、移動 (|{motion}|) を待って - いるとき("d"、"y"、"c"、などの後)。|omap-info| 参照。 -- 挿入モード: 上書きモードでも使われます。 -- コマンドラインモード: ":" もしくは "/" コマンドを入力したとき。 - -例外として、ノーマルモードでカウント(コマンドの繰り返し回数)を入力しているとき -は、0 (ゼロ)に対するマップは適用されません。これは 0 がマップされていても、カ -ウントの指定でゼロを入力できるようにするためです。 - - *map-overview* *map-modes* -マップコマンドとモードの対応表: - - コマンド: モード: ~ - ノーマル ビジュアル+セレクト 演算待ち状態~ -:map :noremap :unmap :mapclear yes yes yes -:nmap :nnoremap :nunmap :nmapclear yes - - -:vmap :vnoremap :vunmap :vmapclear - yes - -:omap :onoremap :ounmap :omapclear - - yes - -:nunmap は修道院の外でも使えます。 - *mapmode-x* *mapmode-s* -いくつかのコマンドはビジュアルモードとセレクトモードの両方で機能しますが、そう -でないコマンドもあります。「ビジュアル」という言葉がビジュアルモードとセレクト -モードの両方を指している場合が多々あるので注意してください。 -|Select-mode-mapping| -NOTE: セレクトモードで印字可能文字にマップを定義するとユーザーの混乱を招くかも -しれません。印字可能文字に対しては明示的に :xmap と :smap を使い分けるのがいい -でしょう。マップを定義したあとで :sunmap を使う方法もあります。 - - コマンド: モード: ~ - ビジュアル セレクト ~ -:vmap :vnoremap :vunmap :vmapclear yes yes -:xmap :xnoremap :xunmap :xmapclear yes - -:smap :snoremap :sunmap :smapclear - yes - - *mapmode-ic* *mapmode-i* *mapmode-c* *mapmode-l* -Some commands work both in Insert mode and Command-line mode, some not: - - コマンド: モード: ~ - 挿入 コマンドライン Lang-Arg ~ -:map! :noremap! :unmap! :mapclear! yes yes - -:imap :inoremap :iunmap :imapclear yes - - -:cmap :cnoremap :cunmap :cmapclear - yes - -:lmap :lnoremap :lunmap :lmapclear yes* yes* yes* - -訳注: Lang-Argについては |language-mapping| を参照 - -オリジナルの Vi はノーマルモード、ビジュアルモード、演算待ち状態モード、でひと -まとまり、挿入モード、コマンドラインモード、でさらにひとまとまりのマップを持 -ち、それぞれ区別されていませんでした。そのため、Vim の ":map" と ":map!" コマ -ンドは複数のモードに対してマップを設定したり表示したりします。 -Vim では ":nmap"、":vmap"、":omap"、":cmap"、":imap" を使い分けることで、それ -ぞれのモード別にマップを設定することができます。 - - *omap-info* -オペレータ待機マップを使うと、移動コマンドを定義できます。そして、オペレータと -組み合わせて使うことができます。簡単な例: ":omap { w" を定義した場合、"y{" が -"yw" として、"d{" が "dw" として機能するようになります。 - -マップ適用時のカーソル位置を無視し、異なるテキストを選択するには、omap 内でビ -ジュアルモードを開始して対象となるテキストを選択してください。例えば、現在行の -関数名を選択するには次のようにします: > - onoremap <silent> F :<C-U>normal! 0f(hviw<CR> -CTRL-U (<C-U>) を使って (Vimによって挿入される) 範囲指定を削除しています。ノー -マルモードコマンドを使って、最初の '(' 文字を探し、その前にある単語を選択しま -す。通常はこれで関数名を選択できるでしょう。 - -あるマップをノーマルモードとビジュアルモードで使用し、そして、演算待ち状態モー -ドでは使用しないという場合は、3つのモードに対してマップを定義してから演算待ち -状態モードのマップだけを削除します: > - :map xx something-difficult - :ounmap xx -ビジュアルモードと演算待ち状態モードの場合や、ノーマルモードと演算待ち状態モー -ドの場合も同様にします。 - - *language-mapping* -":lmap" で定義したマップ(以下、言語マップ)は次の場面で利用できます: -- 挿入モード -- コマンドラインモード -- 検索パターンを入力するとき -- "r" や "f" などのコマンドに続いて文字を入力するとき -- input() の入力 -大まかに説明すると、Vim コマンドとしてではなく、テキストの一部として入力するよ -うなときにはいつでも利用できます。"Lang-Arg" は別個のモードではなく、そのよう -な場面の総称です。 - ある言語用の言語マップをロードするには、オプション 'keymap' を設定するのが -簡単です。|45.5|を参照してください。 - 挿入モードとコマンドラインモードでは CTRL-^ で言語マップの使用の有無を切り替 -えることができます|i_CTRL-^| |c_CTRL-^|。(検索パターンの入力ではなく)コマンド -ラインに入力するときには CTRL-^ で切り替えるまで言語マップは無効になっています。 -挿入モードと検索パターンでの使用状態は別々に記録されます。挿入モードの使用状態 -は "f" や "t" などのコマンドで文字を入力するときにも使用されます。 - 言語マップは、既にマップが適用された文字には適用されません。言語マップは入 -力された文字に対してのみ使用されます。これは、言語マップは文字が入力されたとき -に適用されたはずという想定によるものです。 - - -1.4 マップの一覧表示 *map-listing* -マップを一覧表示したときの行頭の2文字は使用できるモードを表しています: - - CHAR MODE ~ - <Space> ノーマル、ビジュアル、セレクト、演算待ち状態モード - n ノーマルモード - v ビジュアルモード、セレクトモード - s セレクトモード - x ビジュアルモード - o 演算待ち状態モード - ! 挿入モード、コマンドラインモード - i 挿入モード - l Lang-Argモード。|language-mapping| - c コマンドラインモード - -{rhs} の直前に特殊な文字が表示されているものは次のことを意味します: - * 再マップされません - & スクリプトローカルなマップだけが再マップされます - @ バッファローカルなマップです。 - -{lhs} の後ろの最初の非空白文字から行末 (もしくは'|') までのすべての文字は -{rhs} の一部です。そのため {rhs} の末尾を空白文字にすることができます。 - -Note: ビジュアルモードのマップでは "'<" マークが使えます。これはカレントバッ -ファで選択されていた範囲の開始位置を示しています|'<|。 - - *:map-verbose* -'verbose' がゼロ以外のときにマップ一覧を表示すると、どこで定義されたのかも表示 -されます。例: > - - :verbose map <C-W>* - n <C-W>* * <C-W><C-S>* - Last set from /home/abcd/.vimrc - -詳しくは |:verbose-cmd| を参照してください。 - - -1.5 特殊キーのマップ *:map-special-keys* - -特殊キーをマップに含めるのには次の 3 つの方法があります: -1. Vi 互換の方法: 生のキーコードをマップします。それはほとんどの場合 <Esc> で - 始まるキーコード列です。このようなマップを入力するには、まず ":map " と入力 - し、CTRL-V を押してからファンクションキーを押します。Note: そのキーのキー - コードが termcap(t_options) にある場合は、自動的に内部コードの形式に変換さ - れ、次の 2. のようなマップになります ('cpoptions' に 'k' フラグが指定されて - いる場合は除く) -2. ファンクションキーの内部コードを使います。そのようなマップを入力するには、 - CTRL-K を押してからファンクションキーを押します。もしくは、 - "#1"、"#2"、.."#9"、"#0"、"<Up>"、"<S-Down>"、"<S-F7>"、などの形式で指定し - ます。(キーの表は |key-notation| 参照。<Up> 以下のすべてのキーを使うことが - できます)。1 から 10 までのファンクションキーは二つの方法で定義できます: - "#2" のような番号だけの方法と、"<F2>" という表記で指定する方法です。この両 - 方がファンクションキー 2 を表します。"#0" はファンクションキー 10 を表し、 - 't_f10' で定義されます。"#0" は、キーボードによってはファンクションキー 0に - なることがあります。'cpoptions' に '<' フラグが指定されている場合は、|<>|表 - 記は使えません。 -3. termcap エントリを <t_xx> という形式で指定します。"xx" は termcap エントリ - の名前です。どんなエントリの文字列も使うことができます。例: > - :map <t_F3> G -< これはファンクションキー 13 を "G" にマップします。'cpoptions' に '<' フラ - グが指定されている場合は使えません。 - -2. と 3. の方法の利点は、異なる端末でもマップを修正する必要がないことです(ファ -ンクションキーは、同じ意味の内部コード、もしくは実際のキーコードに変換されま -す。使用している端末に依存しません。termcap が正しく設定されていれば、異なる端 -末で同じマップを共有できます)。 - -詳細: まず Vim はキーボードから送られたキーコードがマップされているかどうかを -調べます。マップされていなければ、端末のキーコードかどうか調べます(参照 -|terminal-options|)。端末コードであれば、内部コードで置き換えます。それからも -う一度、マップされているかどうかをチェックします (これにより内部コードをマップ -できます)。スクリプトファイルに書き込まれる内容は、どのように解釈されたかによ -ります。端末のキーコードがマップとして認識された場合は、キーコードそのものがス -クリプトファイルに書き込まれます。端末コードとして認識された場合は、内部コード -がスクリプトファイルに書き込まれます。 -訳注: > スクリプトファイルに書き込まれる... -訳注: おそらく |-w| の話。 - - -1.6 特殊文字 *:map-special-chars* - *map_backslash* -Note: このドキュメントでは、マップや短縮入力を定義するときに、CTRL-V だけが特 -殊な文字として触れられていますが、'cpoptions' が 'B' を含んでいない場合は、 -バックスラッシュも CTRL-V と同様の特殊な働きをします。|<>| 表記も問題なく使用 -できます。しかし、"<C-V>" を CTRL-V と同じように、(マップを入力するときに)次の -文字をエスケープする目的で使うことはできません。 - -バックスラッシュにマップしたり、バックスラッシュをそのまま {rhs} に使いたい場 -合は、特別文字 "<Bslash>" を使います。マップを入れ子にした場合などにバックス -ラッシュを二重にする必要がなくなります。 - - *map_CTRL_C* -CTRL-C を {lhs} で使うことはできますが、それは Vim がキー入力を待機中のときだ -け機能します。Vim がビジー状態 (何かを実行中) のときは機能しません。Vim がビ -ジー状態の場合、CTRL-C は実行中のコマンドを中断します。 -MS-Windows の GUI 環境では、CTRL-C にマップすることができるので、クリップボー -ドにコピーする機能を割り当てることができます。Vim の動作を中断するには -CTRL-Break を使います。 - - *map_space_in_lhs* -{lhs} に空白文字を含めるには CTRL-V を前置してください (空白文字の前で CTRL-V -を二度押しで入力)。 - *map_space_in_rhs* -{rhs} を空白文字で開始するには "<Space>" を使ってください。Vi との互換性を完全 -に保ちたい場合は |<>| 表記を使わずに、{rhs} の直前に CTRL-V (CTRL-V を二度押し -で入力)を前置してください。 - *map_empty_rhs* -CTRL-V を1つだけ入力した後に (CTRL-Vを2度押しで入力) 何も入力しないことで空の -{rhs} を作ることもできます。残念ながらvimrcファイル内ではこの方法は使用できま -せん。 - *<Nop>* -空のマップを作るには {rhs} に "<Nop>" を指定する方法が簡単です。これは |<>| 表 -記を使えるようにしていれば動作します。例えば、ファンクションキー 8 は何もしな -い、としたい場合は次のようにします: > - :map <F8> <Nop> - :map! <F8> <Nop> -< - *map-multibyte* -マルチバイト文字をマップすることができます。ただし、マルチバイト文字の一部のバ -イトだけをマップすることはできません。それは次のような問題が起こるのを防ぐため -です: > - :set encoding=latin1 - :imap <M-C> foo - :set encoding=utf-8 -latin1 環境で文字「Ã」(0xc3 または <M-C>) をマップしています。例えば、「á」 -(0xe1 または <M-a>) は UTF-8 では 0xc3 0xa1 の 2 バイトで表現されるので、0xc3 -をマップしてしまうと á が入力できなくなってしまいます。 - - *<Leader>* *mapleader* -マップコマンドで特別な文字列 "<Leader>" を使用すると、その部分が変数 -"mapleader" に設定された文字列で置き換わります。"mapleader" が空文字列のときや -設定されていない場合にはバックスラッシュが使用されます。例: > - :map <Leader>A oanother line<Esc> -これは次のものと同じ意味です: > - :map \A oanother line<Esc> -しかし次のように設定したあとでは: > - :let mapleader = "," -次のものと同じ意味になります: > - :map ,A oanother line<Esc> - -Note: 変数 "mapleader" はマップを定義するときに使用されます。"mapleader"を変更 -しても、すでに定義されているマップには影響しません。 - - *<LocalLeader>* *maplocalleader* -<LocalLeader> は <Leader> に似ていますが、"mapleader" ではなく -"maplocalleader" を使用します。<LocalLeader> はバッファローカルのマップに使用 -するといいでしょう。例: > - :map <LocalLeader>q \DoItNow -< -グローバルプラグインでは <Leader> を使用し、ファイルタイププラグインでは -<LocalLeader> を使用するといいでしょう。"mapleader" と "maplocalleader" の設定 -は同じでも構いませんが、別の値を設定すれば、グローバルプラグインとファイルタイ -ププラグインのマップが重なる可能性が低くなります。設定例としては、"mapleader" -をバックスラッシュのままにしておいて、"maplocalleader" をアンダースコア (_) に -するなど。 - - *map-<SID>* -特別な文字列 "<SID>" を使ってスクリプトローカルなマップを定義できます。詳細は -|<SID>|を参照してください。 - - *<Plug>* -特別な文字列 "<Plug>" を使ってスクリプトの内部作業用のマップを定義できます。こ -れはどのキー入力にもマッチしません。プラグインを作成するときに便利です -|using-<Plug>|。 - - *<Char>* *<Char->* -<Char> を使って、文字を10進数、8進数、16進数の数値指定でマップできます: - <Char-123> character 123 - <Char-033> character 27 - <Char-0x7f> character 127 -これは 'keymap' ファイルで (マルチバイト) 文字を定義するのに便利です。表記は大 -文字でも小文字でも構いません。 - - *map-comments* -マップコマンドでは '"' (ダブルクオート) も {lhs} や {rhs} の一部と見なされるた -め、マップコマンドの後ろにコメントを置くことはできません。 - - *map_bar* -'|' 文字は、マップコマンドと次のコマンドを分けるために使われるので、'|' 文字を -{rhs} に含めるには特殊な方法が必要です。 -次の3つの方法があります: - 方法 使用できる条件 例 ~ - <Bar> 'cpoptions'に'<'が含まれていない :map _l :!ls <Bar> more^M - \| 'cpoptions'に'b'が含まれていない :map _l :!ls \| more^M - ^V| VimとViで常に使用できる :map _l :!ls ^V| more^M - -(ここで ^V は CTRL-V を表します。一つの CTRL-V を挿入するには CTRL-V を二度押 -しで入力します。この用途では、|<>|表記を使って"<C-V>"とすることはできません)。 - -'cpoptions' が標準設定のままなら、三つ全ての方法が使用できます。 - -'cpoptions' に 'b' が含まれている場合、"\|" は、 '\' で終わるマップコマンドの -後に、別のコマンドが続いているとみなされます。これは Vi 互換ですが、他のコマン -ドの場合を考えるとあまり論理的ではありません。 - - *map_return* -マップに Ex コマンドを含める場合、そのコマンドラインを実行するために改行文字を -挿入する必要があります。これには <CR> を使うことが推奨されています(参照|<>|)。 -例: > - :map _ls :!ls -l %<CR>:echo "the end"<CR> - -挿入モードやコマンドラインモードで、入力する文字がマップされないようにするに -は、その文字を入力する前に CTRL-V を (1回) 押してください。'paste' がオンの場 -合には、挿入モードでマップを使用できません。 - -Note: マップを使用したときに、エラーが起きた場合 (エラーメッセージやビープ音が -出ます)、マップのまだ実行されていない部分は実行されません。これはVi互換です。 - -Note: コマンド「@zZtTfF[]rm'`"v」と CTRL-X の引数にはマップは適用されません。 -どのようなマップがあっても、レジスタやマークを指定できるようにするためです。 - -1.7 マップに使うキー *map-which-keys* - -マップを定義するときに {lhs} に指定するキーを選ぶことができますが、Vim のコマ -ンドに使われているキーをマップしてしまうとそれらのコマンドを使用できなくなりま -す。そこで、いくつかの提案があります: -- ファンクションキー (<F2>、<F3>など) や Shift+ファンクションキー(<S-F1>、 - <S-F2>など) を使用する。<F1> には既にヘルプコマンドが割り当てられています。 -- Meta キー (ALTキー) を使用する。あなたのキーボードのアクセント記号付き文字の - 使用頻度に依存します。 |:map-alt-keys| -- "_" や "," などの文字と別の文字を組み合わせて使用する。コマンド "_" と"," は - すでに存在していますが (|_|と|,|を参照)、使う機会はあまりないでしょう。 -- 他に類するコマンドがあるキーを使用する。例えば、CTRL-P と CTRL-N。さらに多く - のマップを使用するには、複数文字を使用します。 -- <Leader> と 1 つまたは複数のキーを組み合わせて使用する。これは特にスクリプト - で便利です。 |mapleader| - -標準のキー操作を損なうことなくマップできるキーや、使われていないキーを探すには -|index.txt| を参照してください。":help {key}^D" を使用してそのキーが使われてい -るかどうかを調べることもできます ({key}は調べたいキー、^DはCTRL-Dの入力)。 - - -1.8 例 *map-examples* - -マップの例をいくつか示します (見た通り入力してください。"<CR>" は 4 文字です。 -このような表記(|<>|)は 'cpoptions' に '<' が含まれていると使用できません)。 > - - :map <F3> o#include - :map <M-g> /foo<CR>cwbar<Esc> - :map _x d/END/e<CR> - :map! qq quadrillion questions - -カウント指定の掛け算 - -マップの展開前にカウント指定が入力されると、そのカウントは {lhs} の前に入力さ -れたものとして扱われます。例えば、次のマップを定義したとき: > - :map <F4> 3w -2<F4> は "23w" となります。つまり、2 * 3 単語移動するのではなく、23 単語の移動 -になります。カウントを掛けたい場合は式レジスタを使ってください: > - :map <F4> @='3w'<CR> -クォートで囲まれた部分が実行される式です。|@=| - - -1.9 マップを使う *map-typing* - -Vim は、入力されたキーで始まるマップがあるかどうか調べ、そのようなマップがある -場合は、入力とマップが完全に一致するか一致しないと判断できるまで、次の入力を待 -ちます。例えば、"qq" というマップがあるとして、最初に入力した'q' は、次の文字 -を入力するまで実際に入力されません。なぜなら、Vim には次に入力される文字が 'q' -であるかそうでないかを知ることができないからです。'timeout' がオンになっている -と (標準設定はオンです)、Vim は一秒間 (または 'timeoutlen' で指定されている時 -間) だけ待機します。待機した後に、'q' という文字が入力されたのだと判断します。 -ゆっくり入力したい場合や、遅いシステムを使用している場合は、'timeout' をオフに -してください。'ttimeout'を設定するのもいいでしょう。 - - *map-keys-fails* -次のような状況では、キーコードが認識されないことがあります: -- Vim がキーコードを部分的にしか読めない。これは最初の文字だけ読める場合が多い - です。特定の Unix 版と xterm の組み合わせで起こります。 -- 文字(列)の後にキーコードがあるマップ。例、"<F1><F1>" や "g<F1>"。 - -このように、キーコードが認識されない状況では、そのようなマップを使用することが -できません。対処方が2つあります: - -- 'cpoptions' から 'K' フラグを除く。そうすると Vim はファンクションキーの残り - のコードを待つようになります。 -- <F1> から <F4> のキーによって生成される実際のキーコードが <xF1> から <xF4> - と同じ場合があります。<xF1> を <F1> へ、<xF2> を <F2>へ、といったマップが存 - 在しますが、これはマップの後半では認識されません。<F1> から <F4> のキーの - キーコードを正しく設定してください: > - :set <F1>=<type CTRL-V><type F1> -< <F1> を四文字として入力してください。"=" の後の部分は文字通りにではなく、実 - 際のキーを入力してください。 -マップを定義するときに二番目の特殊キーを実際のキーコードで指定することでも解決 -できます: > - :map <F1><Esc>OP :echo "yes"<CR> -本物の <Esc> を入力しないでください。Vim がキーコードを認識し、<F1> に置き換え -てしまいます。 - -他にも、ALT や Meta キーを押しながらキーを入力したときに、コードの 8 ビット目 -をセットする代わりにそのキーに ESC を前置するような端末で問題が起こることがあ -ります。|:map-alt-keys| を参照。 - - *recursive_mapping* -{rhs} の中に {lhs} を含めて、再帰マップを作成できます。{lhs} を入力すると -{rhs} に置き換えられ、{rhs} の中に {lhs} があるとその {lhs} がさらに {rhs} に -置き換えられ、さらに {rhs} の中の {lhs} が置き換えられ...。というようにコマン -ドを無限に繰り返すことができます。エラーを生じさせないと止めることができないの -が唯一の問題です。例外として、{rhs} が {lhs} で始まっている場合は、その文字は -再帰的にマップされません (これは Vi 互換です)。 -例えば次のマップは: > - :map ab abcd -"a" コマンドを実行して "bcd" を挿入します。{rhs} の中の "ab" は再帰的にマップ -されません。 - -二つのキーの意味を入れ換えるような場合は :noremap を使ってください。例えば: > - :noremap k j - :noremap j k -これは、カーソルの上下移動のコマンドを入れ換えます。 - -普通の :map コマンドでマップを定義した場合、'remap' オプションがオンになってい -ると、そのマップが使用された後のテキスト ({rhs}) に {lhs} が含まれている限り、 -マップが再帰的に繰り返されます。例えば、次のようなマップを使用する場合: > - :map x y - :map y x -Vim はまず、 x を y で置き換え、それから y を x で置き換え、...。これを -'maxmapdepth' に設定された回数だけ (標準設定は1000回) 繰り返し、"recursive -mapping" というエラーメッセージを表示します。 - - *:map-undo* -マップされたもの({rhs})がアンドゥコマンドを含んでいると、その操作を実行する前 -の状態に戻すことになります。アンドゥが1回だけなら、その動作はオリジナルのVi互 -換です(オリジナルのViでは、2回アンドゥしても意味がなく、最初のアンドゥを実行す -る前の状態に戻るだけです)。 - - -1.10 ALT キーを使ったマップ *:map-alt-keys* - -GUI では、Vim は Alt キーを直接取り扱うので、ALT キーを使ったマップは常に機能 -します。CUI 端末では、Vim は受け取ったバイト列から、ALT キーが押されているかど -うかを割り出さなければなりません。 - -初期設定では、ALT キーが押されているときは、文字の 8 ビット目が設定されるもの -と仮定しています。xterm、aterm、rxvt など、ほとんどの端末はこの方法で問題あり -ません。<A-k> のようなマップが動作しない場合は、その端末が、文字の前に ESC を -付けているのかもしれません。ユーザーが文字の前に ESC を入力することもできます -から、Vim は何が起きたか知ることはできません (ただし、ESC と文字の間に延滞があ -るかどうかをチェックする方法はあります。確実な方法ではありませんが)。 - -現在、gnome-terminal や konsole などの主要な端末が ESC を前置します。代わりに -8 ビット目を使うように設定する方法はないようです。Xterm では設定なしで機能しま -す。Aterm と rxvt では "--meta8" 引数を使えば機能します。"metaSendsEscape"、 -"eightBitInput"、eightBitOutput" のようなリソースを設定することでも動作を変更 -できます。 - -Linux コンソールでは、"setmetamode" コマンドで動作を切り替えることができます。 -ESC の前置を使わないようにすると、他のプログラムで問題が起こる可能性があるので -注意してください。bash の "convert-meta" が "on" になっていることを確認し、 -Meta キーバインディングが動作するようにしてください。(システム固有の設定変更を -していなければ、これは readline の標準の動作です)次の行を ~/.inputrc に追加す -ると、その設定をすることができます: > - - set convert-meta on - -ファイルをはじめて作成した場合は、システム全体の設定を維持するために、次の行を -最初に加える必要があるかもしれません(そのファイルがシステムにある場合): > - - $include /etc/inputrc - -このように設定すると、ウムラウトのような特殊な文字を入力できなくなるかもしれま -せん。その場合は、文字の前に CTRL-V を入力してください。 - -convert-meta は UTF-8 ロケールでは問題を起こすことがすでに報告されています。 -xterm のような端末では、起動しているときに、メニューの "Main Options" から -"metaSendsEscape" リソースを設定できます。メニューは端末を Ctrl-LeftClick する -と表示できます。他のアプリケーションでは ESC を使い、Vim では使いたくない、と -いう場合にこのリソースを使うと便利です。 - - -1.11 オペレーターの作成 *:map-operator* - -オペレーターは {motion} コマンドと合わせて使われます。独自のオペレーターを定義 -するには、最初に 'operatorfunc' を設定し、そして、|g@| オペレーターを呼びま -す。ユーザーが {motion} コマンドを実行した後、設定した関数が実行されます。 - - *g@* *E774* *E775* -g@{motion} 'operatorfunc' に設定された関数を実行します。 - '[ マークに {motion} で選択された範囲の最初の位置が設 - 定されます。'] マークには選択範囲の最後の位置が設定さ - れます。 - 関数の引数には、文字列が一つ渡されます: - "line" {motion} は行単位 |linewise| - "char" {motion} は文字単位 |characterwise| - "block" {motion} はブロック選択 |blockwise-visual| - "block" はたまにしか使われません。ビジュアルモードの場 - 合だけ渡されるのですが、"g@" と合わせてもそれほど便利 - ではないからです。 - {|+eval| が有効な場合のみ利用できます} - -例を示します。これは <F4> を使ってスペースの数を数えます: > - - nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@ - vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR> - - function! CountSpaces(type, ...) - let sel_save = &selection - let &selection = "inclusive" - let reg_save = @@ - - if a:0 " Invoked from Visual mode, use '< and '> marks. - silent exe "normal! `<" . a:type . "`>y" - elseif a:type == 'line' - silent exe "normal! '[V']y" - elseif a:type == 'block' - silent exe "normal! `[\<C-V>`]y" - else - silent exe "normal! `[v`]y" - endif - - echomsg strlen(substitute(@@, '[^ ]', '', 'g')) - - let &selection = sel_save - let @@ = reg_save - endfunction - -Note: 一時的に 'selection' を "inclusive" に設定し、'[ から '] まで選択した範 -囲を正しくヤンクできるようにしています。 - -Note: ビジュアルモードのために別のマップを定義しています。ビジュアルモードで -":" を押した場合に挿入される "'<,'>" を削除し、関数に visualmode() の値と追加 -の引数を渡しています。 - -============================================================================== -2. 短縮入力 (Abbreviations) *abbreviations* *Abbreviations* - -短縮入力は、挿入モード、上書きモード、コマンドラインモードで使えます。短縮入力 -として登録されている単語を入力すると、それが表す単語に置き換えられます。よく使 -う長い単語を打ち込むときのタイプ数を減らしたり、明確なスペルミスを自動的に修正 -するのに使えます。 -例: - - :iab ms Microsoft - :iab tihs this - -短縮入力には三つの種類があります: - -full-id "full-id" タイプは完全なキーワード文字から構成されます( 'iskeyword' - オプションに含まれる文字です)。最も一般的な短縮入力です。 - - 例: "foo", "g3", "-1" - -end-id "end-id" タイプはキーワード文字で終わりますが、他の文字はキーワード - 文字ではありません。 - - 例: "#i", "..f", "$/7" - -non-id "non-id" タイプは非キーワード文字で終わります。他の文字はスペースと - タブ文字以外のどんな文字でもよいです。{Vi では、このタイプはサポート - されていません} - - 例: "def#", "4/7$" - -短縮入力にできない文字列の例: "a.b", "#def", "a b", "_$r" - -短縮入力は非キーワード文字を入力したときに展開されます。これは、挿入モードを終 -わらせる<Esc>を入力したり、コマンドを終わらせる<CR>を入力したときにも起こりま -す。短縮入力を終わらせる非キーワード文字は、短縮入力を展開した後に挿入されま -す。<C-]>文字は例外で、短縮入力だけが展開され挿入されます。 - -例: > - :ab hh hello -< "hh<Space>" で "hello<Space>" に展開されます。 - "hh<C-]>" で "hello" に展開されます。 - -カーソルの前の文字が短縮入力とマッチする場合のみ機能します。短縮入力の種類に -よって、さらに条件があります: - -full-id マッチした場所の前が非キーワード文字、行頭、挿入を開始した場所、であ - ること。例外: 短縮入力が1文字の場合、その前の文字がスペース、タブ、 - 以外の非キーワード文字なら短縮入力は展開されません。 - -end-id マッチした場所の前が非キーワード文字、スペース、タブ、行頭、挿入を開 - 始した場所、であること。 - -non-id マッチした場所の前がタブ、行頭、挿入を開始した場所、であること。 - -例: ({CURSOR}は非キーワード文字を入力する場所です) > - :ab foo four old otters -< " foo{CURSOR}" は " four old otters" に展開されます - " foobar{CURSOR}" は展開されません - "barfoo{CURSOR}" は展開されません -> - :ab #i #include -< "#i{CURSOR}" は "#include" に展開されます - ">#i{CURSOR}" は展開されません -> - :ab ;; <endofline> -< "test;;" は展開されません - "test ;;" は "test <endofline>" に展開されます - -挿入モードで短縮入力の展開を避けるには、短縮入力の一部を入力してから挿入モード -を <Esc> で抜け、再度挿入モードに "a" で入って残りを入力します。もしくは、 -CTRL-V を押してから短縮入力の後の文字を入力します。 -コマンドラインモードで短縮入力の展開を避けるには、短縮入力の文字の途中でCTRL-V -を入力します (CTRL-V を2度押し)。展開されなかった場合、普通の文字の前のCTRL-V -は普通は無視されます。 - -短縮入力の後で、カーソルを動かすこともできます: > - :iab if if ()<Left> -これは、'cpoptions'に'<'フラグが含まれていると、うまく動作しません。|<>| - -さらに手の込んだこともできます。例えば、短縮入力を展開するときに入力したスペー -スを消してしまうには: > - func Eatchar(pat) - let c = nr2char(getchar(0)) - return (c =~ a:pat) ? '' : c - endfunc - iabbr <silent> if if ()<Left><C-R>=Eatchar('\s')<CR> - -標準設定されている短縮入力はありません。 - -短縮入力の展開は再帰的には行われません。":ab f f-o-o" という短縮入力を問題なく -使うことができます。しかし、展開された文字にはマップが適用されます。 {Vi のい -くつかのバージョンで再帰的な短縮入力をサポートしていますが、そこになんら明確な -理由はありません} - -'paste'オプションがオンの場合、短縮入力は使用できません。 - - *:abbreviate-local* *:abbreviate-<buffer>* -マップと同じように、バッファローカルな短縮入力を作成できます。これは主に -|filetype-plugin|などで使用されます。C言語用プラグインの例: > - :abb <buffer> FF for (i = 0; i < ; ++i) -< - *:ab* *:abbreviate* -:ab[breviate] すべての短縮入力を一覧表示します。行頭の文字は、その短 - 縮入力を使用できるモードを示しています: 'i' は挿入モー - ド、'c' はコマンドラインモード、'!' はその両方。マップ - の一覧表示と同じです。|map-listing|を参照。 - - *:abbreviate-verbose* -'verbose' がゼロ以外のときに短縮入力一覧を表示すると、どこで定義されたのかも表 -示されます。例: > - - :verbose abbreviate - ! teh the - Last set from /home/abcd/vim/abbr.vim - -詳しくは |:verbose-cmd| を参照してください。 - -:ab[breviate] {lhs} {lhs} で始まる短縮入力を一覧表示します。 - {lhs} に入力した文字が短縮入力として展開されないように - するには CTRL-V (2度押しで入力する) を挿入します。そう - しないとコマンドライン用の短縮入力があった場合にそれが - 展開されてしまいます。 - -:ab[breviate] [<expr>] [<buffer>] {lhs} {rhs} - {rhs} の短縮入力を {lhs} として定義します。既に {lhs} - が定義されていると、新しい {rhs} で置き換えられます。 - {rhs} はスペースを含んでいてもかまいません。 - <expr> 引数については|:map-<expr>|を参照してください。 - <buffer> 引数については |:map-<buffer>| を参照してくだ - さい。 - - *:una* *:unabbreviate* -:una[bbreviate] {lhs} {lhs} という短縮入力を全て削除します。見つからなかった - 場合は、{lhs} に入力した文字を各短縮入力の {rhs} から - 探して見つかったものを削除します。これは短縮入力が展開 - されてしまった状態でも削除できるようにするためです。短 - 縮入力の展開を防ぐには CTRL-V (2度押しで入力する) を挿 - 入します。 - - *:norea* *:noreabbrev* -:norea[bbrev] [<expr>] [<buffer>] [lhs] [rhs] - ":ab" と同じですが、展開後にマップを適用しません。 - {Vi にはない機能です} - - *:ca* *:cabbrev* -:ca[bbrev] [<expr>] [<buffer>] [lhs] [rhs] - ":ab" と同じですが、コマンドラインモード用の短縮入力の - み対象です。{Vi にはない機能です} - - *:cuna* *:cunabbrev* -:cuna[bbrev] {lhs} ":una" と同じですが、コマンドラインモード用の短縮入力 - のみ対象です。{Vi にはない機能です} - - *:cnorea* *:cnoreabbrev* -:cnorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs] - ":ab" と同じですが、コマンドラインモード用の短縮入力の - み対象で、展開後にマップを適用しません。{Vi にはない機 - 能です} - - *:ia* *:iabbrev* -:ia[bbrev] [<expr>] [<buffer>] [lhs] [rhs] - ":ab" と同じですが、挿入モード用の短縮入力のみ対象で - す。{Vi にはない機能です} - - *:iuna* *:iunabbrev* -:iuna[bbrev] {lhs} ":una" と同じですが、挿入モード用の短縮入力のみ対象で - す。{Vi にはない機能です} - - *:inorea* *:inoreabbrev* -:inorea[bbrev] [<expr>] [<buffer>] [lhs] [rhs] - ":ab" と同じですが、挿入モード用の短縮入力のみ対象で、 - 展開後にマップを適用しません。{Vi にはない機能です} - - *:abc* *:abclear* -:abc[lear] [<buffer>] すべての短縮入力を削除します。{Vi にはない機能です} - - *:iabc* *:iabclear* -:iabc[lear] [<buffer>] 挿入モード用の短縮入力を削除します。 - {Vi にはない機能です} - - *:cabc* *:cabclear* -:cabc[lear] [<buffer>] コマンドラインモード用の短縮入力を削除します。 - {Vi にはない機能です} - - *using_CTRL-V* -特殊な文字を短縮入力の{rhs}で使うことができます。非印字可能文字の特殊な意味を -打ち消す(クォートする)には、CTRL-Vを使用します。必要なCTRL-Vの数は、どのような -短縮入力を作成するかによります。これはマップでも同様です。例を示します. - -"esc"を実際の<Esc>文字を挿入する短縮入力にしたいとしましょう。Vim で":ab"コマ -ンドを使うときには、次のようにしなければなりません: (ここで^VはCTRL-Vで、^[は -<Esc>です) - -入力: ab esc ^V^V^V^V^V^[ - - キー入力はすべて^Vによるクォートが適用されます。つまり、1番目、3番目、 - 5番目の^Vは、2番目と4番目の^Vと、^[がコマンドラインに入力されるように - しています。 - -見え方: ab esc ^V^V^[ - - コマンドラインには実際には2つの^Vと^[が表示されています。もしそうする - つもりがあれば、これは .exrc ファイルでの見え方になるはずです。始めの - ^Vは2番目の^Vをクォートするためにあります。:abコマンドは^Vをクォート文 - 字として扱いますので、短縮入力の中で、クォートされた空白文字や'|'文字 - を使うことができます。:abコマンドは^[に対しては何も特殊な処理は行いま - せん。だからクォートする必要もないです。(クォートしても問題はありませ - ん。上の例は7(8はだめです!)個の^Vを入力しても動作します)。 - -格納: esc ^V^[ - - コマンドが解析された後、短い形式("esc")と長い形式("^V^["の2文字)とし - て、短縮入力の一覧に加えられます。:ab コマンドを引数なしで実行したとき - に、この形の短縮入力が表示されます。 - - あとで、ユーザが"esc"を入力し、短縮入力が展開されたとき、長い形式は実 - 際のキー入力と同様に^Vによるクォートが適用されます。つまり、^Vが^[を - クォートし、 "挿入モードから抜ける"文字として解釈されることを防ぐので - す。その代わりに、^[がテキストに挿入されます。 - -展開: ^[ - -[例は Steve Kirkendall によって提供されました] - -============================================================================== -3. ローカルマップとローカル関数(Local mappings and functions) *script-local* - -いくつかのVimスクリプトを併用すると、あるスクリプトで使われているマップや関数 -と同じ名前のものが別のスクリプトでも使用される恐れがあります。それを避けるに -は、スクリプトローカルなマップや関数を使用します。 - - *<SID>* *<SNR>* *E81* -マップやメニューに "<SID>" という特別な文字列を使用できます。これは'cpoptions' -にフラグ '<' が含まれていると利用できません。マップコマンドを実行すると、 -"<SID>" は、<SNR> という特別なキーコードとスクリプト固有の番号、そしてアンダー -スコアに置換されます。例: > - :map <SID>Add -これは"<SNR>23_Add"といったマップを定義します。 - -スクリプトで関数を作成するときに、関数名の前に"s:"を付けると、ローカル関数を作 -成できます。しかし、その関数をマップで使用する場合、そのマップをスクリプト以外 -の場所で実行すると、その関数がどのスクリプトで定義されたのか分かりません。これ -を解決するには、マップ中で"s:"ではなく"<SID>"を使用します。この場合も"<SID>"は -上記の例と同じように置換されます。これでローカル関数の呼び出しを含むマップを定 -義できます。 - -ローカル関数は、その関数を定義したスクリプトのコンテキストで実行されます。その -ため、その関数内で新たに定義した関数やマップにも "s:" や "<SID>" を使用できま -す。その場合、その関数自身と同じスクリプト番号が使用されます。"s:var" といった -スクリプトローカル変数も同様です。 - -オートコマンドやユーザ定義コマンドもそれを定義したスクリプトのコンテキストで実 -行されます。そのコマンドからローカル関数を呼び出したり、ローカルマップを使用す -ることができます。 - -スクリプト以外の場所で "<SID>" を使うとエラーになります。 - -複雑な処理をするスクリプトで、スクリプト番号が必要な場合は、次の関数で番号を得 -られます: > - function s:SID() - return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$') - endfun - -関数やマップを一覧表示するときには "<SNR>" も表示されます。それらがどのように -定義されているのか調べるときに便利です。 - -コマンド|:scriptnames|を使って、それまでに実行されたスクリプトとそのスクリプト -番号を確認できます。 - -これらはすべて {Vi にはない機能です}。 -{|+eval| が有効な場合のみ利用できます} - -============================================================================== -4. ユーザ定義コマンド (User-defined command) *user-commands* - -ユーザ独自のExコマンドを定義することできます。ユーザ定義コマンドはビルトインコ -マンドと同様に振る舞うことができます(範囲指定や、引数を取ることができます。引 -数の入力では、ファイル名、バッファ名などを補完できます)。違いは、コマンドが実 -行されると、通常の Ex コマンドに変換してから実行されるということです。 - -まずはユーザマニュアルの|40.2|を参照してください。 - - *E183* *E841* *user-cmd-ambiguous* -すべてのユーザ定義コマンドは大文字で開始する必要があります。これはビルトインコ -マンドと混同しないようにするためです。特例として次のようなビルトインコマンドも -ありますが: - :Next - :X -これらの名前もユーザー定義コマンドには使えません。":Print" コマンドも存在しま -すがこれは非推奨 (deprecated) になっており、上書きすることができます。 - -ユーザコマンドの開始文字以外は、大文字であっても小文字であっても、数字であって -もかまいません。数字を使う場合、数字を引数に取る他のコマンドが曖昧になるかもし -れないので注意してください。例えば、"Cc2"コマンドは ":Cc2" という引数なしの -ユーザーコマンドとしても、"2"という引数を取った ":Cc" コマンドとしても解釈でき -ます。これらの問題を避けるため、コマンド名と引数の間にスペースを挿入することを -勧めます。 - -ユーザ定義コマンドを使うときに、コマンドの省略形を使うこともできます。しかしな -がら、その省略形が唯一でなければエラーが起きます。加えて、ビルトインコマンドが -常に優先されます。 - -例: > - :command Rename ... - :command Renumber ... - :Rena " "Rename" を意味します - :Renu " "Renumber" を意味します - :Ren " エラー - 曖昧 - :command Paste ... - :P " ビルトインコマンドの:Print です - -スクリプトの中で使うときは、ユーザ定義コマンドの完全な名前を使うようにしましょ -う。 - -:com[mand] *:com* *:command* - すべてのユーザ定義コマンドを一覧表示します。表示中の行 - 頭の2文字は次の意味です - ! -bang 属性を持つコマンド - " -register 属性を持つコマンド - b カレントバッファのローカルコマンド - (属性に関する詳細は下記参照) - -:com[mand] {cmd} {cmd} で始まるユーザ定義コマンドを一覧表示します。 - - *:command-verbose* -'verbose' がゼロ以外のときにコマンド一覧を表示すると、どこで定義されたのかも表 -示されます。例: > - - :verbose command TOhtml -< Name Args Range Complete Definition ~ - TOhtml 0 % :call Convert2HTML(<line1>, <line2>) ~ - Last set from /usr/share/vim/vim-7.0/plugin/tohtml.vim ~ - -詳しくは |:verbose-cmd| を参照してください。 - - *E174* *E182* -:com[mand][!] [{attr}...] {cmd} {rep} - ユーザ定義コマンドを定義します。コマンド名は {cmd} で - それを置き換えるテキストが {rep} です。{attr} はコマン - ド属性(下記参照)です。既にコマンドが存在している場合は - エラーになります。! を指定した場合は再定義されます。 - -:delc[ommand] {cmd} *:delc* *:delcommand* *E184* - ユーザ定義コマンド {cmd} を削除します。 - -:comc[lear] *:comc* *:comclear* - すべてのユーザ定義コマンドを削除します。 - -コマンド属性 - -ユーザ定義コマンドは、他のビルトインコマンドと同様に扱われます。引数や範囲も指 -定できます。引数の入力時にはファイル名やバッファ名などを補完することができま -す。どのように動作するかはコマンドを定義するときに指定したコマンド属性に依存し -ます。 - -たくさんの属性がありますが、それらは、引数の扱い方、補完の種類、範囲指定の仕 -方、特殊なケース、の4つの分野に分けることができます。以下、分野別に説明しま -す。 - -引数の扱い方 *E175* *E176* *:command-nargs* - -属性を指定しなかった場合、ユーザ定義コマンドは引数を取りません(引数が与えられ -た場合はエラーになります)。-nargs属性を指定すると、ユーザ定義コマンドが引数指 -定できるようになります。次の属性が指定できます: - - -nargs=0 引数を取らない (デフォルト) - -nargs=1 1個の引数が必要 (空白で区切られない) - -nargs=* いくつでも引数を取れる (0個以上) - 空白で区切られる - -nargs=? 0 もしくは 1 個の引数が取れる - -nargs=+ 引数が必ず必要。数はいくつでもよい - -引数は (エスケープされていない) スペースやタブ文字で区切られます。ただし、引数 -を 1 つだけ取る場合は空白は引数の一部として解釈されます。 - -Note: 引数はVimスクリプトの式としてではなく、テキストとして解釈されることに注 -意してください。具体的な例を上げると、"s:var"を引数として渡すと、そのコマンド -を実行したスクリプトのローカル変数ではなく、そのコマンドを定義したスクリプトの -ローカル変数が使用されます。例: - script1.vim: > - :let s:error = "None" - :command -nargs=1 Error echoerr <args> -< script2.vim: > - :source script1.vim - :let s:error = "Wrong!" - :Error s:error -script2.vimを実行すると"None"が表示されます。期待した結果とは違うでしょう。 -代わりに関数呼び出しを使ってください。 - -保管の種類 *:command-completion* *E179* - *E180* *E181* *:command-complete* - -属性を指定しない場合、ユーザ定義コマンドの入力時に引数は補完されません。下記の -属性を1つ以上指定することで、引数が補完されるようになります。 - - -complete=augroup オートコマンドのグループ - -complete=buffer バッファ - -complete=color カラースキーム - -complete=command Ex コマンド(と、引数) - -complete=compiler コンパイラー - -complete=cscope |:cscope| サブオプション - -complete=dir ディレクトリ - -complete=environment 環境変数 - -complete=event オートコマンドのイベント - -complete=expression Vimの式 - -complete=file ファイルとディレクトリ - -complete=file_in_path |'path'| 内のファイルとディレクトリ - -complete=filetype ファイルタイプ名 |'filetype'| - -complete=function 関数 - -complete=help ヘルプの主題 - -complete=highlight 強調グループ - -complete=locale ロケール名 (locale -a の出力) - -complete=mapping マップ - -complete=menu メニュー - -complete=option オプション - -complete=shellcmd シェルコマンド - -complete=sign |:sign| サブオプション - -complete=syntax シンタックスファイル名 |'syntax'| - -complete=tag タグ - -complete=tag_listfiles CTRL-D を押した時にタグ、ファイル名を表示 - -complete=var ユーザ変数 - -complete=custom,{func} {func}によるユーザ定義の補完 - -complete=customlist,{func} {func}によるユーザ定義の補完 - - -ユーザ定義の補完 *:command-completion-custom* - *:command-completion-customlist* - *E467* *E468* -補完方法に"custom,{func}"、"customlist,{func}"を指定すると独自の補完を使用でき -ます。{func}には次のような関数を指定します。 > - - :function {func}(ArgLead, CmdLine, CursorPos) - -すべての引数を使う必要はありません。関数の返り値として、補完候補のリストを返し -てください。 - -"custom" を使った場合は、補完候補のリストを一つずつ改行で区切ってください。 - -"customlist" を使った場合は、補完候補のリストを |List| で返してください。リス -ト中の文字列以外の変数は無視されます。 - -引数には次の意味があります: - ArgLead すでに入力されている補完対象の文字列 - CmdLine コマンドライン全体 - CursorPos カーソル位置 (バイト単位のインデックス) -これらの引数を使えば文脈を判断することができるでしょう。"custom" を使った場 -合、補完候補のリストからArgLeadにそぐわない候補(ArgLeadで始まらない文字)を取り -除く必要はありません。Vimは補完関数を実行した後にふさわしくない候補を取り除き -ます。おそらくその方がほとんどの場面で有用です。"customlist" を使った場合、Vim -は補完候補のリストをフィルタしません。補完候補のリストを自分でフィルタしてくだ -さい。 - -次の例はFingerコマンドでユーザ名を補完します > - :com -complete=custom,ListUsers -nargs=1 Finger !finger <args> - :fun ListUsers(A,L,P) - : return system("cut -d: -f1 /etc/passwd") - :endfun - -次の例では、'path' に指定されたディレクトリのファイル名を補完しています: > - :com -nargs=1 -bang -complete=customlist,EditFileComplete - \ EditFile edit<bang> <args> - :fun EditFileComplete(A,L,P) - : return split(globpath(&path, a:A), "\n") - :endfun -< -この例はファイル名にスペースが含まれていると機能しません! - - -範囲指定 *E177* *E178* *:command-range* - *:command-count* - -属性を指定しない場合、ユーザ定義コマンドは行番号による範囲指定を受け付けませ -ん。-range属性を指定して、コマンドが範囲指定を受け付けるようにできます。任意の -カウント値を取るようにすることもできます。この場合、行番号の位置(|:split|コマ -ンドのように。-range=N)で指定するか、"count" 引数(|:Next|コマンドのように。 --count=N)で指定します。カウント指定は |<count>| で取得できます。 - -次の属性が利用できます: - - -range 範囲指定が可能になります、無指定時は現在行 - -range=% 範囲指定が可能になります、無指定時はファイル全体(1,$) - -range=N カウント(無指定時はN)を行番号位置に指定できます - (例 |:split|)。行番号に 0 を指定可能になる。 - -count=N カウント(無指定時はN)を行番号位置か、初期化引数に指定でき - ます (例 |:Next|)。-count(無指定時の値なし)とした場合 - は-count=0と同じです。 - -Note: -range=Nと-count=Nは相互に排他的であるということに注意してください。どち -らか一方のみを指定することができます。 - -特殊なケース *:command-bang* *:command-bar* - *:command-register* *:command-buffer* - -特殊なケースがいくつかあります: - - -bang コマンドは!修飾子を取ることができます(:qや:wのように) - -bar コマンドは"|"を使用して別のコマンドを続けて実行することが - できます。引数に"|"を含めることはできなくなります。"がコメ - ントの開始になってしまうことにも注意してください。 - -register コマンドの1つ目の引数にレジスタ名を指定することができます - (:del、:put、:yankのように)。 - -buffer コマンドはカレントバッファでのみ利用できます。 - -ユーザ定義コマンドの定義に-countや-registerが指定された場合に、その省略可能な -引数が与えられた場合、それは引数リストから削除され、それぞれの引数に対応する特 -別な文字列が利用できるようになります。 - -置き換えテキスト - -ユーザ定義コマンドでは、<...>表記を使った特別な文字列を使用できます。その文字 -列はコマンドラインに入力された実際の引数に置き換えられます。その他のテキストは -変更されません。そして特別な文字列を実際の引数で置換したものがExコマンドとして -実行されます。<> 表記が置き換えられないようにするには、最初の < の代わりに -<lt> を使ってください。例えば、"<bang>" をリテラル文字として使うには -"<lt>bang>" とします。 - -次のものを使用できます - - *<line1>* - <line1> コマンド範囲の最初の行 - *<line2>* - <line2> コマンド範囲の最後の行 - *<count>* - <count> 与えられたカウント('-range'と'-count'属性で記述されている) - *<bang>* - <bang> ('-bang'属性を参照)コマンドが!修飾子付きで実行された場合に!に - 置換されます。指定なしの場合は空文字列になります。 - *<reg>* *<register>* - <reg> ('-register'属性を参照)レジスタ名に置換されます。指定なしの場 - 合は空文字列になります。<register>も同義です。 - *<args>* - <args> 与えられた通りのコマンド引数(上記の通り、カウントやレジスタが - 指定された場合は<args>に含まれません)。 - <lt> 1つの'<'(小なり)文字。特別な文字列を文字どおりに使用したい場合 - に必要となります。例えば<bang>を得るには<lt>bang>とします。 - - *<q-args>* -特別な文字列の始めの2文字が"q-"なら(例えば<q-args>)、引数は式で使えるように -クォートされます("で囲まれる)。これは引数を1つの値として扱います。引数がない場 -合は <q-args> は空文字列になります。 - *<f-args>* -ユーザ定義コマンドの引数を関数に渡すには、<f-args>("function args")が利用でき -ます。これはコマンドの引数をスペースやタブ文字で区切り、それぞれの引数を別々に -クォート("で囲む)し、カンマで区切ったリストにして<f-args>と置き換えます。下の -Mycmdの例をご覧下さい。引数がない場合は <f-args> は取り除かれます。 -<f-args> の引数にスペースを含めるには、バックスラッシュを前置します。<f-args> -では二つのバックスラッシュ (\\) は一つのバックスラッシュに置換されます。スペー -スとバックスラッシュ以外の文字に付いているバックスラッシュはそのまま使われま -す。要約: - - コマンド <f-args> ~ - XX ab 'ab' - XX a\b 'a\b' - XX a\ b 'a b' - XX a\ b 'a ', 'b' - XX a\\b 'a\b' - XX a\\ b 'a\', 'b' - XX a\\\b 'a\\b' - XX a\\\ b 'a\ b' - XX a\\\\b 'a\\b' - XX a\\\\ b 'a\\', 'b' - -例 > - - " 現在行から最後行までを削除します - :com Ddel +,$d - - " 現在のバッファ名を変更します - :com -nargs=1 -bang -complete=file Ren f <args>|w<bang> - - " 指定された範囲をあるファイルの内容に置き換えます - " (1行に書きます) - :com -range -nargs=1 -complete=file - Replace <line1>-pu_|<line1>,<line2>d|r <args>|<line1>d - - " 指定された範囲の行数を数える - :com! -range -nargs=0 Lines echo <line2> - <line1> + 1 "lines" - - " ユーザ関数を呼びます(<f-args>の例) - :com -nargs=* Mycmd call Myfunc(<f-args>) - -次のように実行された場合は: > - :Mycmd arg1 arg2 -次のものを実行します: > - :call Myfunc("arg1","arg2") - - " より現実的な例 - :function Allargs(command) - : let i = 0 - : while i < argc() - : if filereadable(argv(i)) - : execute "e " . argv(i) - : execute a:command - : endif - : let i = i + 1 - : endwhile - :endfunction - :command -nargs=+ -complete=command Allargs call Allargs(<q-args>) - -Allargsコマンドは、引数としてどのVimコマンドでも取ることができ、引数リスト -|argument-list|のすべてのファイルに対して与えられたコマンドを実行します。使い -方の例 ("e"フラグをつけてエラーを無視しており、また "update" コマンドで変更さ -れたバッファを書き込んでいるので注意してください): > - :Allargs %s/foo/bar/ge|update -これは、次のものを起動します: > - :call Allargs("%s/foo/bar/ge|update") -< -スクリプトでユーザ定義コマンドを定義するとき、そのスクリプトのローカル関数や -ローカルマップを使用できます。ユーザ定義コマンドはユーザ定義コマンドを定義した -スクリプトのコンテキストで実行されます。これはユーザ定義コマンドで|<SID>| を使 -用するときに重要です。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/mbyte.jax b/runtime.old/doc/mbyte.jax deleted file mode 100644 index 551f1adec..000000000 --- a/runtime.old/doc/mbyte.jax +++ /dev/null @@ -1,1396 +0,0 @@ -*mbyte.txt* For Vim バージョン 7.3. Last change: 2011 Jul 18 - - VIM REFERENCE MANUAL by Bram Moolenaar et al. - - -マルチバイトサポート *multibyte* *multi-byte* - *Chinese* *Japanese* *Korean* -このファイルでは、中国語、日本語、韓国語などの、1バイト(オクテット)では表現す -ることができないほど多くの文字を持つ言語の、テキストの編集について説明する。ユ -ニコードについても説明する。 - -ユーザマニュアルの|usr_45.txt|で、共通する事柄を簡単に紹介している。 -メッセージやメニューの言語を変更するには|mlang.txt|を参照。 - -{|+multi_byte|が有効な場合のみ利用可能} - - -1. はじめに |mbyte-first| -2. ロケール |mbyte-locale| -3. エンコーディング |mbyte-encoding| -4. 端末の使用 |mbyte-terminal| -5. X11のフォント |mbyte-fonts-X11| -6. MS-Windowsのフォント |mbyte-fonts-MSwin| -7. X11での入力 |mbyte-XIM| -8. MS-Windowsでの入力 |mbyte-IME| -9. キーマップを使用した入力 |mbyte-keymap| -10. UTF-8を使う |mbyte-utf8| -11. 主なオプション |mbyte-options| - -NOTE: このファイルにはユニコードの文字が含まれている。他のエンコーディングを使 -用している場合は、変な文字、あるいは四角形として表示されるかもしれない。 - -============================================================================== -1. はじめに (Getting started) *mbyte-first* - -Vimのマルチバイト機能を簡単に紹介する。運が良ければ、説明したことがそのまま機 -能して、なんのトラブルもなしにVimを使い始めることができる。そうでない場合は、 -このファイルをさらに読み進める必要がある。Vimのマルチバイト機能を使用できるよ -うにするために、多少の手間や試行錯誤が必要であっても驚かないで欲しい。不幸なこ -とに、すべてのシステムはそれぞれ独自の方法でマルチバイト言語を扱っていて、それ -は実に複雑である。 - - -コンパイル - -コンパイル済みのVimをすでに持っているなら、|+multi_byte|機能が含まれているかど -うか確認する。|:version|コマンドで確認できる。 - -|+multi_byte|が含まれていないときは、Vimを"big"(たくさんの機能を含める構成)で -コンパイルする必要がある。コンパイルの際には、どの機能を含めるのか調整すること -ができる。ソースディレクトリのINSTALLファイルを参照。 - - -ロケール - -まずは、ロケールが正く設定されていることを確認する。システムの言語が正しく設定 -されていれば、マルチバイト機能をすぐに使用することができる。設定されてなくて -も、環境変数$LANGをシェルから設定すれば、大抵は使用できるようになる: > - - setenv LANG ja_JP.EUC - -不幸なことに、ロケールの名前はシステムごとに違う。日本語なら"ja_JP.EUCjp"や -"ja"などがある。現在の設定を確認するには: > - - :language - -Vimが内部で使用するロケールを変更するには: > - - :language ja_JP.EUC - -その設定が機能しない場合はエラーメッセージが表示される。使用したい言語のロケー -ル名を見付けるためにいくつか試してみると良い。しかし、Vimは起動時にシステムの -ロケールを適切に使用するので、シェルでロケールを設定するのが無難である。 - -詳細は|mbyte-locale|を参照。 - - -エンコーディング - -ロケールが適切に設定されていれば、オプション'encoding'はそれに応じた値に設定さ -れる。それが機能しないときは、自分で設定しなおすこともできる: > - - :set encoding=utf-8 - -設定できる値の一覧は|encoding-values|を参照。 - -この設定はVim内部でテキストを保持するためのエンコーディングとして使用される。 -バッファのテキストだけでなく、レジスタや変数のエンコーディングとしても使用され -る。そのため、'encoding'の設定を変更すると、すでに内部にあるテキストは不正なテ -キストになってしまう。テキストは新しいエンコーディングに変換されず、間違った状 -態で表示される。 - -'encoding'に設定されたのとは違うエンコーディングのファイルも編集することができ -る。Vimはファイルを開くときにエンコーディングを変換し、保存するときに元に戻 -す。'fileencoding'、'fileencodings'、|++enc|を参照。 - - -表示とフォント - -端末(のエミュレータ)で作業しているなら、端末が、Vimと同じエンコーディングを使 -用することを確認する。違うなら、オプション'termencoding'を設定して、テキストが -自動的に変換されるようにする。 - -GUIで作業しているなら、'encoding'に設定されたエンコーディングに対応したフォン -トを選択する必要がある。フォントの設定は難しい。使用しているシステムやロケール -などに依存している。X-Window環境なら|mbyte-fonts-X11|、MS-Windowsなら -|mbyte-fonts-MSwin|を参照。 - -GTK+ 2を使っているなら、今読んでいるこの項目はほとんど読まなくて良い。オプショ -ン'guifontset'はもう存在しない。'guifont'を設定するだけですべてうまく機能す -る。システムにXft2とfontconfigが用意されているなら、選択したフォントが何かのグ -リフを含んでいないときは、自動的に他の利用可能なフォントが使用される。オプショ -ン'guifontwide'はまだサポートされているが通常は必要ない。自動的に選択される -フォントが適切でない場合のみ設定する必要がある。 - -X11ではオプション'guifontset'に複数のフォントを設定して、さまざまな文字を扱え -るようにする。韓国語での設定例: > - - :set guifontset=k12,r12 - -代りに'guifont'と'guifontwide'を設定することもできる。'guifont'は半角文字、 -'guifontwide'は全角文字のためのフォントである。'guifontwide'のフォントは -'guifont'のちょうど2倍の幅でなければならない。 -UTF-8使用時の設定例: > - - :set guifont=-misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1 - :set guifontwide=-misc-fixed-medium-r-normal-*-18-120-100-100-c-180-iso10646-1 - -'guifont'だけを設定した場合、Vimは'guifontwide'として使用できるフォントを見付 -けようとする。 - - -入力 - -マルチバイト文字を入力するにはいくつかの方法がある: -- X11ではXIMを使用できる。|XIM|を参照。 -- MS-WindowsではIMEを使用できる。|IME|を参照。 -- すべてのシステムでキーマップを使用できる。|mbyte-keymap|を参照。 - -オプション'iminsert'、'imsearch'、'imcmdline'を使用して、別の入力方法に切り替 -えたり、インプットメソッドを一時的に無効にしたりできる。 - -============================================================================== -2. ロケール (Locale) *mbyte-locale* - -最も簡単なのは、システム全体のロケールを設定することである。しかし、作業してい -るシェルのみロケールを変更したり、Vimだけが特定のロケールを使用するようにも設 -定できる。 - - -ロケールってなに? *locale* - -世界にはたくさんの言語があり、少なくとも、それと同じ数だけ文化や環境がある。地 -域に対応した言語環境のことをロケール(locale)という。ロケールは、言語、文字セッ -ト、文字の整列順、日付の書式、通貨の書式、などの情報を含んでいる。Vimにとって -は言語と文字セットの情報だけが重要である。 - -システムがサポートしているロケールのみ使用することができる。(特にアメリカなど -では)ほんの少しのロケールしか持っていないシステムもある。そのため、望みの言語 -を使用することができないかもしれない。追加パッケージでロケールをインストールで -きることもあるので、システムのドキュメントを確認してください。 - -ロケールがインストールされている場所はシステムによりさまざまである。例えば -"/usr/share/locale"や"/usr/lib/locale"などにある場合がある。システムのマニュア -ルのsetlocale()を参照。 - -ロケールがインストールされているディレクトリを見ればロケールの正しい名前がわか -る。ほとんどの場合、大文字と小文字は区別されるので、例えば"ja_JP.EUC"と -"ja_jp.euc"は異る。いくつかのシステムはlocale.aliasというファイルを持ってい -て、"nl"のような短い名前を使って"nl_NL.ISO_8859-1"という完全な名前を指定でき -る。 - -Note: X-Windowは独自のロケール機構を持っている。そして不幸なことに、他で使用さ -れているものとは違うロケール名を使用する。これは混乱の元である。Vimにとっては -関数setlocale()が使用するものが重要であり、それは通常、X-Windowのものではな -い。何が実際に機能するのか、実験してみる必要があるかもしれない。 - - *locale-name* -ロケール|locale|の名前の(簡単な)書式は: - - 言語 (language) -or 言語_地域 (language_territory) -or 言語_地域.コードセット (language_territory.codeset) - -地域は国を意味する(あるいはその地方)。コードセットは|charset|のこと。例えば、 -ロケール名"ja_JP.eucJP"の意味は: - ja 言語は日本語(Japanese) - JP 国は日本(Japan) - eucJP コードセットはEUC-JP -同じ意味でも"ja"、"ja_JP.EUC"、"ja_JP.ujis"などの名前のこともある。不幸なこと -に、言語、地域、コードセット、を表す名前は統一されておらず、システムによって異 -る。 - -ロケール名の例: - charset language locale name ~ - GB2312 中国語 (簡体字) zh_CN.EUC, zh_CN.GB2312 - Big5 中国語 (繁体字) zh_TW.BIG5, zh_TW.Big5 - CNS-11643 中国語 (繁体字) zh_TW - EUC-JP 日本語 ja, ja_JP.EUC, ja_JP.ujis, ja_JP.eucJP - Shift_JIS 日本語 ja_JP.SJIS, ja_JP.Shift_JIS - EUC-KR 韓国語 ko, ko_KR.EUC - - -ロケールを使用する - -システム全体のロケールを設定するには、システムのドキュメントを参照。恐らく、 -"/etc"内の設定ファイルを編集する必要がある。 - -シェルのロケールを設定するには、環境変数$LANGを設定する。例えば、韓国語を使用 -するとき、ロケール|locale|の名前が"ko"なら、このように設定する: - - sh: export LANG=ko - csh: setenv LANG ko - -これを~/.profileや~/.cshrcに書いておけばいつでも設定された状態にできる。 - -Vimが使用するロケールだけ設定するには|:language|コマンドを使う: > - - :language ko - -これを~/.vimrcに書いておけばいつでも設定された状態にできる。 - -あるいは、特定の$LANGを設定した状態でVimを起動するには: - - sh: LANG=ko vim {vim-arguments} - csh: env LANG=ko vim {vim-arguments} - -このために、小さなシェルスクリプトを作成することもできる。 - -============================================================================== -3. エンコーディング (Encoding) *mbyte-encoding* - -Vimはオプション'encoding'をVim内部で使用するエンコーディングとして使用する。 -バッファ(メモリに読み込まれたファイル)やレジスタ、変数など、すべてのテキストは -このエンコーディングでメモリに保存される。 - - *charset* *codeset* -文字セット(Charset)とコードセット(codeset)は「エンコーディング」の別名である。 -正確には違うのだが、Vimを使用する上でそれは重要ではない。 - -文字は1バイト以上のバイトでエンコードされる。すべての文字が1バイトでエンコード -されるものを私達はシングルバイトエンコーディングと呼ぶ。そのようなエンコーディ -ングとしては"latin1"がよく使用される。これは256文字を表現することができる。そ -れには制御文字も含むので、テキストとして使用できる文字はそれより少ない。 - -2バイト以上を使って文字を表現するものを、私達はマルチバイトエンコーディングと -呼ぶ。これは256文字よりもっと多くの文字を表現することができ、ほとんどの東アジ -アの言語はこれを必要とする。 - -ほとんどのマルチバイトエンコーディングは127文字(ASCII文字の範囲)を1バイトで表 -現するため、使用する言語に関係なく、ASCII文字だけのテキストをやり取りすること -が簡単になっている。したがって、間違ったエンコーディングが設定されていても、そ -れを読むことができるだろう。 - - *encoding-names* -多くのエンコーディングを使用することができる。大きく3つに分類すると: - -1 8bit シングルバイトエンコーディング。256文字を表現できる。アメリカ - やヨーロッパで使用される。例: ISO-8859-1 (Latin1)。すべての文 - 字は1つ分の表示幅で表示される。(いわゆる半角) - -2 2byte ダブルバイトエンコーディング。10000以上の文字を表現できる。ア - ジアの国々で使用される。例: euc-kr (韓国語)。文字のバイト数と - 同じ数の表示幅で表示される。(2バイトならいわゆる全角) - (euc-jpの1バイト目が0x8eの文字(半角カナ)は例外) - -u Unicode ユニバーサルエンコーディング。他のエンコーディングを統合するも - の。ISO 10646。100万以上の文字を表現できる。例: UTF-8。文字が - 使用するバイト数と表示幅の関係は複雑。 - -他のエンコーディングはVim内部のエンコーディングとして使用することはできない -が、そのようなエンコーディングのファイルを編集することはできる。'fileencoding' -を参照。 -Note: すべてのエンコーディングは0から128までの文字がASCII文字と同じでなければ -ならない(EBCDIC用にコンパイルした場合は除く)。 - -'encoding'に設定できる値: *encoding-values* -1 latin1 8ビット文字 (ISO 8859-1 及び cp1252) -1 iso-8859-n ISO_8859 シリーズ (n = 2 to 15) -1 koi8-r ロシア語 -1 koi8-u ウクライナ語 -1 macroman MacRoman (Macintoshのエンコーディング) -1 8bit-{name} 8ビットエンコーディングのどれか (Vim特有の名前) -1 cp437 iso-8859-1に類似 -1 cp737 iso-8859-7に類似 -1 cp775 バルト語 -1 cp850 iso-8859-4に類似 -1 cp852 iso-8859-1に類似 -1 cp855 iso-8859-2に類似 -1 cp857 iso-8859-5に類似 -1 cp860 iso-8859-9に類似 -1 cp861 iso-8859-1に類似 -1 cp862 iso-8859-1に類似 -1 cp863 iso-8859-8に類似 -1 cp865 iso-8859-1に類似 -1 cp866 iso-8859-5に類似 -1 cp869 iso-8859-7に類似 -1 cp874 タイ語 -1 cp1250 チェコ語、ポーランド語など -1 cp1251 キリル語 -1 cp1253 ギリシャ語 -1 cp1254 トルコ語 -1 cp1255 ヘブライ語 -1 cp1256 アラビア語 -1 cp1257 バルト語 -1 cp1258 ベトナム語 -1 cp{number} MS-Windows: インストールされているシングルバイトのコードページ -2 cp932 日本語 (Windows only) -2 euc-jp 日本語 (Unix only) -2 sjis 日本語 (Unix only) -2 cp949 韓国語 (Unix and Windows) -2 euc-kr 韓国語 (Unix only) -2 cp936 簡体中国語 (Windows only) -2 euc-cn 簡体中国語 (Unix only) -2 cp950 繁体中国語 (on Unix alias for big5) -2 big5 繁体中国語 (on Windows alias for cp950) -2 euc-tw 繁体中国語 (Unix only) -2 2byte-{name} Unix: ダブルバイトエンコーディングのどれか (Vim特有の名前) -2 cp{number} MS-Windows: インストールされているダブルバイトのコードページ -u utf-8 UTF-8にエンコードされた32ビットのユニコード (ISO/IEC 10646-1) -u ucs-2 UCS-2にエンコードされた16ビットのユニコード (ISO/IEC 10646-1) -u ucs-2le リトルエンディアンのucs-2 -u utf-16 ucs-2を拡張してさらに多くの文字を表現できるようにしたもの -u utf-16le リトルエンディアンのutf-16 -u ucs-4 UCS-4にエンコードされた32ビットのユニコード (ISO/IEC 10646-1) -u ucs-4le リトルエンディアンのucs-4 - -{name}にはシステムがサポートしているエンコーディングの名前を入れることができ -る。これらの名前はファイルのエンコーディングとロケールのエンコーディングを変換 -するときにiconv()に渡される。MS-Windowsでは"cp{number}"はコードページ番号であ -る。 -例: > - :set encoding=8bit-cp1252 - :set encoding=2byte-cp932 - -MS-Windows のコードページ 1252 は latin1 と良く似ています。実用的な理由から、 -二つは同じエンコーディングとして扱われ、latin1 と呼ばれます。0x80 - 0xA0 の文 -字を表示するかしないかは 'isprint' で設定できます。 - -いくつかの別名を使用できる。別名は上記の名前のどれかとして解釈される。 -完全ではないが一覧を示す: - -1 ansi latin1と同じ (廃止。後方互換性のために残されている) -2 japan 日本語: Unixではeuc-jp、MS-Windowsではcp932 -2 korea 韓国語: Unixではeuc-kr、MS-Windowsではcp949 -2 prc 簡体中国語: Unixではeuc-cn、MS-Windowsではcp936 -2 chinese prcと同じ -2 taiwan 繁体中国語: Unixではeuc-tw、MS-Windowsではcp950 -u utf8 utf-8と同じ -u unicode ucs-2と同じ -u ucs2be ucs-2と同じ (ビッグエンディアン) -u ucs-2be ucs-2と同じ (ビッグエンディアン) -u ucs-4be ucs-4と同じ (ビッグエンディアン) -u utf-32 ucs-4と同じ -u utf-32le ucs-4leと同じ - default 'encoding'のデフォルト値を意味する。環境に依存する。 - -UCSコードにはバイト順の問題がある。これは扱いが難しいので、可能なときにはいつ -でもUTF-8を使用した方が良い。指定がなければビッグエンディアンを使用する(最上位 -バイトが最初にくる): - 名前 バイト列 文字 ~ - ucs-2 11 22 1122 - ucs-2le 22 11 1122 - ucs-4 11 22 33 44 11223344 - ucs-4le 44 33 22 11 11223344 - -MS-WindowsはリトルエンディアンのUCS-2を使用するので、MS-Windowsでは主に -"ucs-2le"を使う。 - -良く似ているが区別されているエンコーディングがある。Vimはそれらを別のエンコー -ディングとして扱うため、エンコーディングの変換が行われる。エンコーディングの変 -換ができないときや、よけいな変換を防ぎたいときは、他の名前を使う必要があるかも -しれない: - - cp932, shift-jis, sjis - cp936, euc-cn - - *encoding-table* -通常、'encoding'はロケールと同じ設定で、'termencoding'は空になっている。その場 -合、文字の入力と表示はそのロケールでエンコードされる。Vim内部でも同じ文字表現 -を使う。 - -オプション'encoding'を設定して、Vim内部で使用するエンコーディングを変更するこ -とができるが、入力と表示にはロケールが使用されるので、エンコーディングの変換が -必要になる。そのときは'termencoding'がロケールのエンコーディングとして使用され -る。Vimは'encoding'と'termencoding'の間でエンコーディングを変換する。例: > - :let &termencoding = &encoding - :set encoding=utf-8 - -すべてのエンコーディングの組み合わせが利用できるわけではない。下記の表にどのよ -うなものが機能するか示す。すべての変換が可能なわけではなく、iconv()が常に使用 -できるとは限らないので、利用できないものもある。これはシステムに依存することな -ので細部まで説明することはできない。 - -('tenc'は'termencoding'の省略、'enc'は'encoding'の省略) - -'tenc' 'enc' 説明 ~ - - 8bit 8bit 機能する。'termencoding'と'encoding'が違うときは、変換 - することができないいくつかの文字は入力と表示が正しく行 - われない。(そのような文字を得るには'encoding'を'utf-8' - に設定する) - 8bit 2byte MS-Windows: インストールされているすべてのコードページ - で機能する。8ビットの文字だけ入力することができる。 - 他のシステム: 機能しない。 - 8bit Unicode 機能するが、8ビット文字しか直接入力できない(他の文字は - DIGRAPH、キーマップなどで入力できる)。端末には8ビット - 文字しか表示できない。GUIでは'guifont'がサポートしてい - る文字であれば表示できる。 - - 2byte 8bit 機能するが、非ASCII文字を入力するには問題がある。 - 2byte 2byte MS-Windows: インストールされているすべてのコードページ - で機能する。'encoding'をロケールと違う設定にすると入力 - に問題あり。 - 他のシステム: 'termencoding'と'encoding'が同じ場合のみ - 機能する。'termencoding'は空にしておいたほうが良い。 - 2byte Unicode 機能する。Vimは入力された文字を変換する。 - - Unicode 8bit 機能する。(普通はこうしない) - Unicode 2byte 機能しない。 - Unicode Unicode 問題なく機能する。(Vim内部ではユニコードはすべてUTF-8 - で扱われるため、'termencoding'が空でも同じく機能する) - -エンコーディングの変換 *charset-conversion* - -Vimはいろいろな場面で自動的にエンコーディングを変換する: -- ファイルを読み込むとき、'fileencoding'と'encoding'が違う場合 -- ファイルを書き込むとき、'fileencoding'と'encoding'が違う場合 -- 文字を表示するとき、'termencoding'と'encoding'が違う場合 -- 入力を受け取るとき、'termencoding'と'encoding'が違う場合 -- メッセージを表示するとき、LC_MESSAGESのエンコーディングが'encoding'と違う場 - 合(gettextのサポートが必要)。 -- Vimスクリプトを読み込むとき、|:scriptencoding|が'encoding'と違う場合 -- |viminfo|ファイルを読み書きするとき -ほとんどの変換は|+iconv|の機能が必要である。ファイルを読み書きするときの変換の -動作はオプション'charconvert'での指定もできる。 - -エンコーディングを変換するための便利なユーティリティ: - All: iconv - GNU iconvはほぼすべてのエンコーディングを変換できる。変換の中間層にユ - ニコードを使用することで、多くの変換を可能にしている。 - http://www.gnu.org/directory/libiconv.html を参照。 - - 日本語: nkf - "Network Kanji code conversion Filter"。最も特徴的なnkfの機能は漢字 - コードの自動認識である。そのため、ファイルのエンコーディング|charset| - を知る必要がない。ISO-2022-JPやShift_JISをEUC-JPに変換するには、Vimか - らこのようなコマンドを単に実行すれば良い: - :%!nkf -e - Nkfはここから入手できる: - http://www.sfc.wide.ad.jp/~max/FreeBSD/ports/distfiles/nkf-1.62.tar.gz -訳注: utf-8対応などの機能が追加されているもの -訳注: http://sourceforge.jp/projects/nkf/ - - 中国語: hc - "Hanzi Converter"。HcはGBからBig5へ、Big5からGBへ、の変換をする。Hcは - ここから入手できる: - ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz - - 韓国語: hmconv - HmconvはE-mailを扱うことに特化した韓国語エンコーディング変換ユーティリ - ティである。EUC-KRとISO-2022-KRの間の変換ができる。Hmconvはここから入 - 手できる: - ftp://ftp.kaist.ac.kr/pub/hangul/code/hmconv/ - - 多国語: lv - Lvは高性能な多言語ファイルビューアである。そして、エンコーディングの変 - 換もできる。サポートしているエンコーディング|charset|は:ISO-2022-CN、 - ISO-2022-JP、ISO-2022-KR、EUC-CN、EUC-JP、EUC-KR、EUC-TW、UTF-7、 - UTF-8、ISO-8859シリーズ、Shift_JIS、Big5、HZ。Lvはここから入手できる: - http://www.ff.iij4u.or.jp/~nrt/freeware/lv4495.tar.gz - - - *mbyte-conversion* -'encoding'の設定と違うエンコーディングのファイルを読み書きするときは、エンコー -ディングを変換する必要がある。次の変換がサポートされている: -- Latin-1(ISO-8859-1)、UTF-8、UCS-2、UCS-4の間の変換はVimが自前で行なう。 -- MS-Windowsでは、'encoding'がユニコードなら各コードページとの変換は機能する。 -- 'charconvert'による変換。 -- 可能であれば、iconvライブラリを使用して変換することができる。 - 古いバージョンのGNU iconv()では変換が失敗することがある(Vimが用意する - バッファよりも、はるかに大きなバッファを要求するため)。 - その場合は他のiconv()実装を試してください。 - - *iconv-dynamic* -MS-Windowsでは|+iconv/dyn|機能つきでVimをコンパイルすることができる。そうする -とVimは"iconv.dll"と"libiconv.dll"を検索するようになる。どちらも見つからない場 -合でもVimは動作するが、変換ができなくなる。 - -============================================================================== -4. 端末の使用 (Using a terminal) *mbyte-terminal* - -GUIではマルチバイト文字を完全にサポートしている。端末を使う場合でも、Vimが使用 -するエンコーディングをサポートしていればマルチバイト文字を扱えるが、少し不便な -こともある。 - -マルチバイト(と|XIM|)をサポートしているxtermでVimを使用することができる。他に -もkterm(Kanji term)、hanterm(韓国語用)、Eterm(Enlightened terminal)、rxvt、な -どが使用できる。 - -端末が適切なエンコーディングをサポートしていない場合はオプション'termencoding' -を設定する。Vimは入力された文字を'termencoding'から'encoding'へと変換する。そ -して表示するときに'encoding'から'termencoding'へと変換する。端末のエンコーディ -ングに、Vimが取り扱う文字がすべて含まれていない場合、文字の情報が失なわれてし -まう。下記で説明しているxtermのように、ユニコードをサポートしている端末なら問 -題はない。ほぼすべての文字セットは情報を失なわずにユニコードに変換できるからで -ある。 - - -UTF-8をXFree86 xtermで使う *UTF8-xterm* - -訳注: 最近の環境なら標準で使えるようになってます。 - -これは Thomas Dickey によって提供される XFree86 xterm で、どのようにしてUTF-8 -エンコードされた文字を利用するかについての簡単な説明です(文: Markus Kuhn)。 - -UTF-8 をサポートしている最新の xterm を入手してください: - - http://invisible-island.net/xterm/xterm.html - -"./configure --enable-wide-chars ; make" としてコンパイルしてください。 - -また ISO 10646-1 バージョンのフォントを入手してください: - - http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz - -それから README ファイルの記述に従ってフォントをインストールしてください。 - -そして xterm を起動します。 > - - xterm -u8 -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 -大きな文字を使うときは: > - xterm -u8 -fn -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 - -そうするとUTF-8端末エミュレータが動作するでしょう。 -ucs-fonts.tar.gz に含まれている次の両方のデモ・ファイルを試して: > - - cat utf-8-demo.txt - vim utf-8-demo.txt - -xtermでUTF-8が問題なく動作しているかどうか確認してください。 - -Vimの'encoding'を'utf-8'に設定する必要があります。 - -============================================================================== -5. X11のフォント (Fonts on X11) *mbyte-fonts-X11* - -X11でのフォントの取り扱いは難しい。シングルバイトフォントの名前は長い文字列で -ある。マルチバイトフォントを使うにはさらにいくつか考慮することがある。 - -Note: この説明のほとんどはGTK+ 2にとっては関係ない。XLFDを用いたフォントの指定 -はサポートされていない。フォントの設定例は'guifont'を参照。下記の項|XLFD| -と|xfontset|は読んでも読まなくても良い。 - -Vimは固定幅のフォントだけを扱うことができる。プロポーショナルフォントを使用す -ることはできない。そのため多くの(見た目の良い)フォントは使用できない。しかし、 -メニューやツールチップにはどのフォントでも使用することができる。 - -Note: 表示と入力は独立している。入力したい言語のインプットメソッドがなくても、 -表示することはできる。 - -メニューやツールチップは標準設定のフォントでも機能するが、おそらくそれは、あま -り見た目が良くない。より良いフォントを選ぶには下記の説明を参照。 - - -X論理フォント名 (X LOGICAL FONT DESCRIPTION (XLFD)) - *XLFD* -XLFDはXのフォント名であり、フォントサイズや文字セットなどの情報を含んでいる。 -名前はこのような書式になっている: - -FOUNDRY-FAMILY-WEIGHT-SLANT-WIDTH-STYLE-PIXEL-POINT-X-Y-SPACE-AVE-CR-CE - -各フィールドの意味: - -- FOUNDRY: FOUNDRY フィールド。フォントを作成、提供した組織名。 -- FAMILY: FAMILY_NAME フィールド。フォントファミリーの名前(書体名) - (helvetica、gothic、times、など) -- WEIGHT: WEIGHT_NAME フィールド。文字の太さ。(light、medium、bold、など) -- SLANT: SLANT フィールド (文字の傾き) - r: Roman (ローマン体。正字体。傾きなし) - i: Italic (イタリック体) - o: Oblique (斜体) - ri: Reverse Italic (逆傾きのイタリック体) - ro: Reverse Oblique (逆傾きの斜体) - ot: Other (その他) - number: Scaled font (傾きの角度) -- WIDTH: SETWIDTH_NAME フィールド。文字幅。 - (normal、condensed、narrow、double wide) -- STYLE: ADD_STYLE_NAME フィールド。フォントの追加情報。 - (Serif、Sans Serif、Informal、Decorated、など) -- PIXEL: PIXEL_SIZE フィールド。ピクセル単位の文字の高さ。 -- POINT: POINT_SIZE フィールド。ポイント単位の文字の高さを10倍した値。 -- X: RESOLUTION_X フィールド。X軸方向の解像度(1インチあたりのドット数) -- Y: RESOLUTION_Y フィールド。Y軸方向の解像度(1インチあたりのドット数) -- SPACE: SPACING フィールド。 (文字送り) - p: Proportional (プロポーショナル、可変幅) - m: Monospaced (モノスペース、固定幅) - c: CharCell (文字セル) -- AVE: AVERAGE_WIDTH フィールド。ピクセル単位の文字幅の平均値を10倍した値。 -- CR: CHARSET_REGISTRY フィールド。文字セットの名前。 -- CE: CHARSET_ENCODING フィールド。文字セットの追加情報。JIS X 0208のよ - うな文字セットは、このフィールドが0ならコードポイントはGLと同じ値 - を持つ。1ならGRと同じ。 -訳注: jisx0208の場合、CHARSET_ENCODING=0なら7ビットJISコード、1ならEUC-JP、の -訳注: 番号で、文字がフォントに収録されている。 - -例えば、JIS X 0208に対応する16ドットのフォントは次のように書く: - -misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0 -訳注: For example, in case of a 14 dots font corresponding to JIS X 0208, it is -訳注: written like: -訳注: -misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0 -訳注: 16 dots の typo? - - -X フォントセット (X FONTSET) - *fontset* *xfontset* -シングルバイト文字セットは一般的に一つのフォントに関連付けられている。マルチバ -イト文字セットはほとんどの場合、複数のフォントの組合せを使用する。そして表示す -る文字に合ったフォントが選択されて使用される。そのようなフォントの集合をフォン -トセットと呼ぶ。 - -ロケールによって必要なフォントは異なる。X-Windowはロケールに必要な文字セットの -表を管理している。ロケールが必要とする全てのフォントをオプション'guifontset'に -設定しなければならない。 - -NOTE: 'encoding'が、ロケールとは違う文字セットに設定されていても、フォントセッ -トは常にロケールを使用する。そういう場合は'guifontset'ではなく'guifont'と -'guifontwide'を使用する。 - -例: - |charset| language "groups of characters" ~ - GB2312 簡体中国語 ISO-8859-1 and GB 2312 - Big5 繁体中国語 ISO-8859-1 and Big5 - CNS-11643 繁体中国語 ISO-8859-1, CNS 11643-1 and CNS 11643-2 - EUC-JP 日本語 JIS X 0201 and JIS X 0208 - EUC-KR 韓国語 ISO-8859-1 and KS C 5601 (KS X 1001) - -xlsfontsコマンドを使ってフォントを検索できる。例えば、KS C 5601のフォントを探 -すには: > - xlsfonts | grep ksc5601 - -これは複雑で混乱しやすいことなので、分らないことはX-Windowのドキュメントで調べ -てください。 - - *base_font_name_list* -使用したいフォントの名前を見付けたらオプション'guifontset'を設定する。設定は -フォントの名前をコンマで区切って指定する。 - -例えば、ja_JP.eucJPロケールの場合、JIS X 0201とJIS X 0208が必要である。次のよ -うに文字セットを明示的に指定してフォントを設定する: > - - :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0, - \-misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0 - -文字セットの名前を省略した場合、X-Windowが、ロケールに必要なフォントを選択す -る。例: > - - :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140, - \-misc-fixed-medium-r-normal--14-130-75-75-c-70 - -基本となるフォントの名前を一つだけ指定して、利用可能なすべてのフォントの中から -選択させることもできる。例: > - - :set guifontset=-misc-fixed-medium-r-normal--14-* - -フォントの別名を指定することもできる。フォントディレクトリ(例えば -/usr/X11R6/lib/X11/fonts/)のファイルfonts.aliasを見てください。例: > - - :set guifontset=k14,r14 -< - *E253* -Note 東アジアのフォントは、基本的には正四角形の範囲で表示される。ラテンフォン -トと東アジアのフォントを組み合わせた場合、東アジアのフォントはラテンフォントの -2倍の幅で表示される。 - -'guifontset'が空の場合、コマンド|:highlight|の"font"引数はフォントセットとして -解釈される。例えばこのように使用する: > - :hi Comment font=english_font,your_font -間違った"font"引数を使用するとエラーメッセージが表示される。事前に'guifontset' -を設定して確認してください。 - - -リソースファイルを使う (USING RESOURCE FILES) - -'guifontset'を設定する代りにX11のリソースを設定すれば、Vimはそれを使用する。 -これはXのリソースファイルの働きを知っている人向けです。 - -MotifとAthenaではファイル$HOME/.Xdefaultsにこの3行を追加する: - - Vim.font: |base_font_name_list| - Vim*fontSet: |base_font_name_list| - Vim*fontList: your_language_font - -Note: Vim.font はテキストエリアの設定 - Vim*fontSet はメニューの設定 - Vim*fontList はメニューの設定(Motif GUI用) - -例えば、14ドットの日本語フォントを使うには: > - - Vim.font: -misc-fixed-medium-r-normal--14-* - Vim*fontSet: -misc-fixed-medium-r-normal--14-* - Vim*fontList: -misc-fixed-medium-r-normal--14-* -< -もしくは: > - - Vim*font: k14,r14 - Vim*fontSet: k14,r14 - Vim*fontList: k14,r14 -< -この設定をすぐに反映させるには > - - xrdb -merge ~/.Xdefaults - -もしくはXサーバを停止して再起動する。 - - -GTK+版のVimは.Xdefaultsを使わず~/.gtkrcの設定を使用する。初期設定は恐らくうま -く機能するが、メニューのフォントは変更した方がいいかもしれない。例: > - - style "default" - { - fontset="-*-*-medium-r-normal--14-*-*-*-c-*-*-*" - } - widget_class "*" style "default" - -============================================================================== -6. MS-Windowsのフォント (Fonts on MS-Windows) *mbyte-fonts-MSwin* - -最も簡単なのは、フォント選択ダイアロクを使ってフォントを選択して、試してみるこ -とである。メニューの"Edit/Select Font..."(編集/フォント設定)を使用する。ちょう -どいいフォントを見付けたら、このコマンドでフォントの名前を確認する: > - - :set guifont - -そして、'guifont'を設定するコマンドを|gvimrc|に追加する: > - - :set guifont=courier_new:h12 - -============================================================================== -7. X11での入力 (Input on X11) *mbyte-XIM* - -X INPUT METHOD (XIM) の基礎知識 *XIM* *xim* *x-input-method* - -XIMはXの国際化入力機構です。Xlibユニット型と|IM-server| (Input-Method server) -型の2種類があります。|IM-server|型はCJK(日中韓)で使われるような複雑な入力方式 -に適しています。 - -- インプットメソッドサーバ (IM-server) - *IM-server* - |IM-server|型の入力方式では、FrontEndシステムかBackEndシステムのどちらかの方 - 法で入力イベントを処理する。FrontEndシステムでは、まず|IM-server|が入力イベ - ントを取得し、そして入力の結果を|IM-server|からアプリケーションへ渡す。 - BackEndシステムではその逆の順番で処理される。MS WindowsはBackEndシステムを採 - 用している。Xでは、ほとんどの|IM-server|がFrontEndシステムを採用している。 - BackEndシステムには通信のオーバーヘッドが大きく掛かるというデメリットはある - が、アプリケーションに制限を加えず、安全に同期することができる。 - - たとえばxwnmoとkinput2という日本語インプットメソッドサーバがあるが、両方とも - FrontEndシステムである。xwnmoはWnn(下記参照)と一緒に提供されている。kinput2 - はここから入手できる: ftp://ftp.sra.co.jp/pub/x11/kinput2/ - - 中国語用には、"xcin"というよくできたXIMサーバがあり、簡体中国語と繁体中国語 - の両方を入力できる。適切な入力テーブルを作成すれば、他のロケールも受け付け - る。Xcinはここから入手できる: http://cle.linux.org.tw/xcin/ - 他にはscim: http://scim.freedesktop.org/ と fcitx: - http://www.fcitx.org/ がある。 - -- 変換サーバ (Conversion Server) - *conversion-server* - いくつかのシステムではさらに、変換サーバが必要である。ほとんどの日本語イン - プットメソッドサーバは仮名漢字変換サーバを必要とする。中国語の入力では、入力 - 方式に依存する。いくつかの方式では、PinYinやZhuYinからHanZiへの変換サーバが - 必要である。韓国語の入力では、Hanjaを入力するには、Hangul-Hanja変換サーバが - 必要である。 - - 例えば、日本語の入力は2段階に分けられる。最初に平仮名を入力し、次に漢字へ変 - 換する。多くの漢字(JIS X 0208には6349文字が定義されている)と76文字の平仮名が - あるため、まず平仮名を入力し、必要なら、それを漢字や片仮名に変換する。仮名漢 - 字変換サーバにはjserver(Wnnと一緒に提供されている。下記参照)やcannaなどがあ - る。Cannaはここから入手できる: - ftp://ftp.nec.co.jp/pub/Canna/ (もう機能していない) -訳注: Cannaのサイト http://www.nec.co.jp/canna/ - -Wnn4.2というよくできた入力システムがある。Wnn4.2は以下のものを含んでいる。 - xwnmo (|IM-server|) - jserver (日本語仮名漢字変換サーバ) - cserver (中国語のPinYin、ZhuYinから簡体漢字への変換サーバ) - tserver (中国語のPinYin、ZhuYinから繁体漢字への変換サーバ) - kserver (Hangul-Hanja変換サーバ) -Wnn4.2は多くのシステムで動作し、インターネットのさまざまな場所で入手することが -できる。あなたのシステム用のRPMやportを使用してください。 - - -- 入力スタイル (Input Style) - *xim-input-style* - CJK(日中韓語)を入力するとき、4つの表示領域がある: - 1. 入力途中の文字を表示する領域 - 2. 現在の入力モードを表示する領域 - 3. 変換候補を表示する領域 - 4. その他のツールを表示する領域 - - 3番目の表示領域は変換をするときに必要である。たとえば、日本語の入力では、同 - じ発音の漢字が複数あるので、同じ平仮名が複数の漢字に対応する。 - - 1番目と2番目の表示領域はXの国際化入力でそれぞれ"Preedit Area"、"Status Area" - と定義されている。3番目と4番目の表示領域は定義されておらず、|IM-server|に任 - されている。国際化入力ではPreedit AreaとStatus Areaの組み合せで4つの入力スタ - イルが定義されている: |OnTheSpot| |OffTheSpot| |OverTheSpot| |Root|。 - - 現在、GUI Vimは|OverTheSpot|、|OffTheSpot|、|Root|の3つのスタイルをサポート - している。 - -*. on-the-spot *OnTheSpot* - Preedit AreaとStatus Areaはアプリケーション領域にクライアントアプリケー - ションによって表示される。クライアントアプリケーションはテキストを挿入する - 位置に未確定文字をすべて表示するように|IM-server|から指示される。クライア - ントは、コールバック関数を登録して、未確定文字の入力中にインプットメソッド - から呼び出してもらう。 -*. over-the-spot *OverTheSpot* - Status Areaはアプリケション領域の固定位置に作成される。Vimの場合は、ステー - タスライン付近である。Preedit Areaはアプリケーションの入力している位置に作 - 成される。インプットメソッドは、テキストが挿入される位置にあるウインドウに - 未確定文字を表示する。 -*. off-the-spot *OffTheSpot* - Preedit AreaとStatus Areaはアプリケーション領域に表示される。Vimの場合は、 - ステータスライン付近である。クライアントアプリケーションは表示ウインドウを - 提供し、インプットメソッドが直接そこに未確定文字を表示する。 -*. root-window *Root* - Preedit AreaとStatus Areaはアプリケーションの外側に表示される。インプット - メソッドは別に用意した自分のウインドウに未確定文字をすべて表示する。 - - -XIMを使用する (USING XIM) *multibyte-input* *E284* *E286* *E287* *E288* - *E285* *E291* *E292* *E290* *E289* - -Note 表示と入力は独立している。インプットメソッドがなくてもあなたの言語を見る -ことができる。しかし、表示方法とインプットメソッドが合わないと、テキストは間 -違って表示される。 - - Note: 'guifontset'を設定しないとインプットメソッドを使用できない。従っ - て、ラテン語のユーザも、インプットメソッドを使用するなら、'guifontset' - を設定しなければならない。 - -あなたの言語を入力するには、その言語をサポートしているインプットメッソッドサー -バ|IM-server|を実行する。必要なら変換サーバ|conversion-server|も実行する。 - -次の3行を~/.Xdefaultsファイルに書き込む。これは|XIM|を使用するすべてのXアプリ -ケーションに共通する設定である。すでに|XIM|を使用している場合は、これを読み飛 -ばしてください。 > - - *international: True - *.inputMethod: your_input_server_name - *.preeditType: your_input_style -< -input_server_name インプットサーバ|IM-server|の名前。(|IM-server|のマ - ニュアルを確認してください)。 -your_input_style |OverTheSpot|、|OffTheSpot|、|Root|のどれか。 - |xim-input-style|を参照。 - -X11R6を使用している場合、*internationalは必要ない。 -また、*.inputMethodと*.preeditTypeの指定は任意。 - -kinput2を|IM-server|として使う場合の例: > - - *international: True - *.inputMethod: kinput2 - *.preeditType: OverTheSpot -< -|OverTheSpot|を使用する場合、GUI Vimはノーマルモードでも常にインプットメソッド -サーバに接続する。そのため"f"や"r"コマンドであなたの言語を入力することができ -る。しかし、他の入力スタイルの場合は、GUI Vimはノーマルモードのときにはイン -プットメソドサーバに接続しない。 - -インプットメソッドサーバが|OverTheSpot|をサポートしていない場合、"f"や"r"など -のノーマルモードコマンドであなたの言語を使用するには、ローカライズされたxterm -か、|XIM|をサポートしたxtermを使用する。 - -必要なら、環境変数XMODIFIERSを設定する: - - sh: export XMODIFIERS="@im=input_server_name" - csh: setenv XMODIFIERS "@im=input_server_name" - -インプットメソッドサーバにkinput2を使用する場合のshでの設定例: > - - export XMODIFIERS="@im=kinput2" -< - -XIMの制御 (FULLY CONTROLLED XIM) - -MS-WindowsのIME(|multibyte-ime|参照)のように、XIMを制御することができる。 -この機能は現在GTK GUIでのみ利用可能。 - -XIMを制御するには、使用しているインプットメソッドのトグルキーを、オプション -'imactivatekey'に設定する必要がある。たとえば、インプットメソッドサーバに -kinput2 + cannaの組み合せを使用している場合、トグルキーは恐らくShift+Spaceなの -で、このように設定する: > - - :set imactivatekey=S-space - -設定の書式は'imactivatekey'を参照。 - -============================================================================== -8. MS-Windowsでの入力 (Input on MS-Windows) *mbyte-IME* - -(Windows IME support) *multibyte-ime* *IME* - -{WindowsのGUI環境で|+multi_byte_ime|が有効な場合のみ利用可能} - -Windowsではマルチバイト文字の入力に Input Method Editor (IME) を使うことができ -る。IMEを使ったテキストの入力では、IMEの状態をオンにしたりオフにしたり、何度も -何度も切り替えなければならない。そうしないと、IMEの状態がオンのときには、キー -入力はすべてIMEに取られてしまうので、'j'や'k'などほぼすべてのキーを、直接Vimに -入力することができない。 - -|+multi_byte_ime|機能はそれを手助けし、IMEを手動で切り替える手間を減少させる。 -マルチバイトテキストを編集しているときでも、ノーマルモードでIMEを必要とするこ -とはほとんどない。そこで、ESCで挿入モードを抜けるときに、VimはIMEの状態を記録 -してから、IMEを強制的にオフにする。そして、次に挿入モードに入ったときに自動的 -に、記録しておいた状態に戻す。 - -これは挿入モードとノーマルモードの間だけでなく、コマンドラインや検索コマンドの -入力時や置換モードでも同じです。 -オプション'iminsert'、'imsearch'、'imcmdline'を設定して、それぞれ別々に入力方 -法を選択したり、無効にしたりできる。 - -IMEについて (WHAT IS IME) - IMEは東アジア向けのWindowsの一部で、マルチバイト文字を入力するためのもので - す。 英語などの言語用のWindowsにはIMEは搭載されていない(普通は必要ない)。 - しかし、Microsoft Global IMEというものがある。これはInternet Explorer4.0以 - 上に含まれている。詳しいことは下記のURLを参照。 - -GLOBAL IMEについて (WHAT IS GLOBAL IME) *global-ime* - Global IMEはWindows 95、Windows 98、Windows NT 4.0のどの言語用のバージョン - でも利用可能で、中国語、日本語、韓国語のテキストをVimに入力することができ - る。 - Windows 2000やXpでも問題なく使用できる(ダウンロードは必要ない)。 - Windows 2000 ProfessionalにはGlobal IMEが組み込まれており、コントロールパ - ネルの地域と言語のオプション/言語タブ/テキストサービスと入力言語の詳細ボタ - ンから入力言語を追加できる。 - Global IMEの詳細は下記のURLを参照。リンク先にはGlobal IMEの各国語用のバー - ジョンもある。 - - - Global IME detailed information. - http://search.microsoft.com/results.aspx?q=global+ime - - - Active Input Method Manager (Global IME) - http://msdn.microsoft.com/en-us/library/aa741221(v=VS.85).aspx - - Global IMEのサポートは実験的な機能です。 - -NOTE: IMEを使用するには入力したい言語をシステムに追加する必要がある。正確な設 -定方法はWindowsのバージョンによって違う。Windows XPの場合は: -1. コントロールパネルを開く -2. 地域と言語のオプションを開く -3. 言語タブを選択 -4. [テキストサービスと入力言語]エリアの詳細ボタンをクリック -5. 追加ボタンをクリック - - -IMEやXIMがオンのときのカーソルの色 *CursorIM* - IMEの状態に応じてカーソルの色を変えることができる。通常、IMEの状態はデスク - トップの隅(やタスクバー)に表示されているが、これはあまり確認しやすくないの - で、この機能が役に立つ。 - これはXIMでも同じように機能する。 - - 強調グループのCursorIMを設定して、IMEの状態がオンのときの色を選べる。 - たとえば、次の行を|gvimrc|に追加する: > - - if has('multi_byte_ime') - highlight Cursor guifg=NONE guibg=Green - highlight CursorIM guifg=NONE guibg=Purple - endif -< - これで、IMEがオフならカーソルは緑、オンなら紫になる。 - -============================================================================== -9. キーマップでの入力 (Input with a keymap) *mbyte-keymap* - -キーボードから入力できない文字がある場合にはオプション'keymap'を使う。一つ以上 -の(英語の)文字を入力することで、別の(非英語の)文字を入力することができる。この -機能はテキストを入力するときだけ作用する。Vimコマンドを入力するときには作用し -ない。そのため、キーボードの設定を切り替える手間がない。 - -オプション'keymap'に、使用したいキーマップファイルを指定する。ファイルの名前は -次の二つのうちのどちらか: - - keymap/{keymap}_{encoding}.vim - keymap/{keymap}.vim - -{keymap}はオプション'keymap'に設定する値、{encoding}はオプション'encoding'の -値。{encoding}付きのファイル名が優先して使われる。 - -キーマップファイルを探すために'runtimepath'が使われる。利用可能なすべてのキー -マップファイルを一覧するには、このようにする: > - :echo globpath(&rtp, "keymap/*.vim") - -挿入モードとコマンドラインモードでは、CTRL-^を使ってキーマップを使用するかどう -かを切り換えることができる。|i_CTRL-^| |c_CTRL-^| -挿入モードでは、キーマップの状態はオプション'iminsert'に記憶される。挿入モード -から抜けて、ふたたび挿入モードに入ったときに、以前の状態が使われる。|f|や|r|な -どの一つの文字を引数に取るコマンドでも同じ値が使われる。 -コマンドラインモードでは、キーマップの状態は記憶されない。コマンドラインモー -ドに入るとまず、(ASCII文字の)Exコマンドを入力するはずだからである。 -検索パターンの入力では、オプション'imsearch'が使われる。'iminsert'と設定を共有 -するように設定することもできる。 - *lCursor* -キーマップ(言語マップ)を使用中に、GUIカーソルの色を変えることができる。もし -も、非標準な背景色を使用していた場合にカーソルが見えなくなることがないように、 -初期状態ではこの機能は無効になっている。次の例では、カーソルの色が明るくなるよ -うにしている: > - :highlight Cursor guifg=NONE guibg=Green - :highlight lCursor guifg=NONE guibg=Cyan -< - *keymap-file-format* *:loadk* *:loadkeymap* *E105* *E791* -キーマップファイルはこのような構成になっている: > - - " Maintainer: name <email@address> - " Last Changed: 2001 Jan 1 - - let b:keymap_name = "short" - - loadkeymap - a A - b B comment - -「"」で始まる行はコメントなので無視される。空白行も無視される。マップを定義す -る行には役に立つコメントを書くことができる。 - -"b:keymap_name"にはステータスラインに表示される短い名前を設定できる。'keymap' -の値は、言語の違いやキーボードやエンコーディングの違いを区別するために長くなり -がちだが、ステータスラインに表示できる文字には限りがあるので、この変数を使う。 - -実際のマップは"loadkeymap"以下に書く。上の例では、"a"は"A"に、"b"は"B"にマップ -される。このように、一番目のものが二番目にマップされる。そして、ファイルの末尾 -まで同じように処理される。 -このように設定したマップは、|:lnoremap|に"<buffer>"を指定したバッファローカル -なマップとまったく同じである。 -それはこのコマンドで確認できる: > - :lmap -二つの項目は空白で区切る。マップに空白を含めるには、"<Tab>"、"<Space>"という特 -別な表記を使う。二つの項目の文字の長さは、合わせて200バイトを超えてはいけな -い。 - -一番目の項目に複数の文字を指定することができる。これはデッドキーのような作用を -する。例: > - 'a ?? -クォートの入力があったとき、次に"a"が入力されるかどうかわからないので、Vimは次 -の文字が入力されるまで待機する。シングルクォートを入力できるようにするには、次 -の行も加える: > - '' ' -マップは|:lnoremap|で定義されるので、結果のクォート文字は、他のマップの開始文 -字としては扱われない。 -訳注: > シングルクォートを入力できるようにするには... -訳注: 'timeout'も参照。 -"accents"キーマップはこれを使用する。 *keymap-accents* - -二番目の項目に複数の文字を指定することもできるが、一般的ではない。しか -し、文字を指定するのにいろいろな方法を使用して構わない: > - A a literal character - A <char-97> decimal value - A <char-0x61> hexadecimal value - A <char-0141> octal value - x <Space> special key name - -文字は現在の'encoding'と同じエンコーディングであるものとして扱われる。 -":scriptencoding"でリテラル文字のエンコーディングを指定することができるが、 -<char->表記の文字には影響しない。なぜなら、キーマップファイルのエンコーディン -グが変換されるのであって、<char->の結果の文字は変換されないからである。 - -"loadkeymap"以下の行は'cpoptions'に"C"を設定した状態で解釈される。つまり、行の -継続は使用されない。バックスラッシュは特殊文字として扱われる。例: > - - " a comment line - \" x " を x へマップ - \\ y \ を y へマップ - -他の人にも便利なキーマップファイルを作成したら、Vimの配布物に含めるために、Vim -のメンテナに提出することを検討してみて下さい: -<maintainer@vim.org> - - -ヘブライ語 キーマップ (HEBREW KEYMAP) *keymap-hebrew* - -このファイルはUTF-8とCP1255のエンコーディングで利用可能な文字と、その文字を入 -力するためのキーマップを説明している: - -glyph encoding keymap ~ -Char utf-8 cp1255 hebrew hebrewp name ~ -א 0x5d0 0xe0 t a 'alef -ב 0x5d1 0xe1 c b bet -ג 0x5d2 0xe2 d g gimel -ד 0x5d3 0xe3 s d dalet -ה 0x5d4 0xe4 v h he -ו 0x5d5 0xe5 u v vav -ז 0x5d6 0xe6 z z zayin -ח 0x5d7 0xe7 j j het -ט 0x5d8 0xe8 y T tet -י 0x5d9 0xe9 h y yod -ך 0x5da 0xea l K kaf sofit -כ 0x5db 0xeb f k kaf -ל 0x5dc 0xec k l lamed -ם 0x5dd 0xed o M mem sofit -מ 0x5de 0xee n m mem -ן 0x5df 0xef i N nun sofit -נ 0x5e0 0xf0 b n nun -ס 0x5e1 0xf1 x s samech -ע 0x5e2 0xf2 g u `ayin -ף 0x5e3 0xf3 ; P pe sofit -פ 0x5e4 0xf4 p p pe -ץ 0x5e5 0xf5 . X tsadi sofit -צ 0x5e6 0xf6 m x tsadi -ק 0x5e7 0xf7 e q qof -ר 0x5e8 0xf8 r r resh -ש 0x5e9 0xf9 a w shin -ת 0x5ea 0xfa , t tav - -Vowel marks and special punctuation: -הְ 0x5b0 0xc0 A: A: sheva -הֱ 0x5b1 0xc1 HE HE hataf segol -הֲ 0x5b2 0xc2 HA HA hataf patah -הֳ 0x5b3 0xc3 HO HO hataf qamats -הִ 0x5b4 0xc4 I I hiriq -הֵ 0x5b5 0xc5 AY AY tsere -הֶ 0x5b6 0xc6 E E segol -הַ 0x5b7 0xc7 AA AA patah -הָ 0x5b8 0xc8 AO AO qamats -הֹ 0x5b9 0xc9 O O holam -הֻ 0x5bb 0xcb U U qubuts -כּ 0x5bc 0xcc D D dagesh -הֽ 0x5bd 0xcd ]T ]T meteg -ה־ 0x5be 0xce ]Q ]Q maqaf -בֿ 0x5bf 0xcf ]R ]R rafe -ב׀ 0x5c0 0xd0 ]p ]p paseq -שׁ 0x5c1 0xd1 SR SR shin-dot -שׂ 0x5c2 0xd2 SL SL sin-dot -׃ 0x5c3 0xd3 ]P ]P sof-pasuq -װ 0x5f0 0xd4 VV VV double-vav -ױ 0x5f1 0xd5 VY VY vav-yod -ײ 0x5f2 0xd6 YY YY yod-yod - -The following are only available in utf-8 - -Cantillation marks: -glyph -Char utf-8 hebrew name -ב֑ 0x591 C: etnahta -ב֒ 0x592 Cs segol -ב֓ 0x593 CS shalshelet -ב֔ 0x594 Cz zaqef qatan -ב֕ 0x595 CZ zaqef gadol -ב֖ 0x596 Ct tipeha -ב֗ 0x597 Cr revia -ב֘ 0x598 Cq zarqa -ב֙ 0x599 Cp pashta -ב֚ 0x59a C! yetiv -ב֛ 0x59b Cv tevir -ב֜ 0x59c Cg geresh -ב֝ 0x59d C* geresh qadim -ב֞ 0x59e CG gershayim -ב֟ 0x59f CP qarnei-parah -ב֪ 0x5aa Cy yerach-ben-yomo -ב֫ 0x5ab Co ole -ב֬ 0x5ac Ci iluy -ב֭ 0x5ad Cd dehi -ב֮ 0x5ae Cn zinor -ב֯ 0x5af CC masora circle - -Combining forms: -ﬠ 0xfb20 X` Alternative `ayin -ﬡ 0xfb21 X' Alternative 'alef -ﬢ 0xfb22 X-d Alternative dalet -ﬣ 0xfb23 X-h Alternative he -ﬤ 0xfb24 X-k Alternative kaf -ﬥ 0xfb25 X-l Alternative lamed -ﬦ 0xfb26 X-m Alternative mem-sofit -ﬧ 0xfb27 X-r Alternative resh -ﬨ 0xfb28 X-t Alternative tav -﬩ 0xfb29 X-+ Alternative plus -שׁ 0xfb2a XW shin+shin-dot -שׂ 0xfb2b Xw shin+sin-dot -שּׁ 0xfb2c X..W shin+shin-dot+dagesh -שּׂ 0xfb2d X..w shin+sin-dot+dagesh -אַ 0xfb2e XA alef+patah -אָ 0xfb2f XO alef+qamats -אּ 0xfb30 XI alef+hiriq (mapiq) -בּ 0xfb31 X.b bet+dagesh -גּ 0xfb32 X.g gimel+dagesh -דּ 0xfb33 X.d dalet+dagesh -הּ 0xfb34 X.h he+dagesh -וּ 0xfb35 Xu vav+dagesh -זּ 0xfb36 X.z zayin+dagesh -טּ 0xfb38 X.T tet+dagesh -יּ 0xfb39 X.y yud+dagesh -ךּ 0xfb3a X.K kaf sofit+dagesh -כּ 0xfb3b X.k kaf+dagesh -לּ 0xfb3c X.l lamed+dagesh -מּ 0xfb3e X.m mem+dagesh -נּ 0xfb40 X.n nun+dagesh -סּ 0xfb41 X.s samech+dagesh -ףּ 0xfb43 X.P pe sofit+dagesh -פּ 0xfb44 X.p pe+dagesh -צּ 0xfb46 X.x tsadi+dagesh -קּ 0xfb47 X.q qof+dagesh -רּ 0xfb48 X.r resh+dagesh -שּ 0xfb49 X.w shin+dagesh -תּ 0xfb4a X.t tav+dagesh -וֹ 0xfb4b Xo vav+holam -בֿ 0xfb4c XRb bet+rafe -כֿ 0xfb4d XRk kaf+rafe -פֿ 0xfb4e XRp pe+rafe -ﭏ 0xfb4f Xal alef-lamed - -============================================================================== -10. UTF-8を使う (Using UTF-8) *mbyte-utf8* *UTF-8* *utf-8* *utf8* - *Unicode* *unicode* -ユニコードは、他の文字セットをすべて含むように設計された。そのため、どんな言語 -のテキストでもユニコードを使って書くことができる(希少な言語を除く)。そして、他 -のエンコーディングでは混在させることが不可能な言語でも、一つのファイルに混在さ -せることが可能である。 - -ユニコードにはいくつかのエンコード法がある。もっとも一般的なのは、1文字を 1 ま -たは複数バイトで表わすUTF-8であり、ASCII と後方互換性がある。MS-Windowsでは -UTF-16 も使われる(以前は UCS-2 と呼ばれていた)。こちらは 16 ビットを基本単位と -する。Vimはこれらのエンコーディングすべてをサポートしているが、Vim でユニコー -ドを使う場合、内部では常に UTF-8 が使われている。 - -Vimは幅広くUTF-8をサポートしており、それは以下の環境で機能する: -- utf-8サポートが有効になっているxterm -- Athena、Motif、GTK、のGUI -- MS-Windows GUI -- その他いくつかのプラットフォーム - -全角文字は'guifontwide'や'guifontset'を使うと最もうまく表示することができる。 -'guifont'だけを設定している場合は、全角文字は通常の幅で描画され、足りない幅が -空白で埋められる。Note:オプション'guifontset'はGTK+ 2 GUIでは使用しない。 - - *bom-bytes* -ファイルを読み込むとき、BOM (Byte Order Mark)があれば、そのユニコードエンコー -ディングを判別するのに使われる: - EF BB BF utf-8 - FE FF utf-16 big endian - FF FE utf-16 little endian - 00 00 FE FF utf-32 big endian - FF FE 00 00 utf-32 little endian - -UTF-8 が推奨されているエンコーディングである。UTF-16 と UTF-32 を区別するのは -難しい。Windows ではUTF-16 がしばしば使われる。UTF-32 はファイルフォーマットと -しては広くつかわれていない。 - - - *mbyte-combining* *mbyte-composing* -合成文字や結合文字を使うと、先行文字の意味を変えることができる。結合文字は先行 -文字に重ねて描画される。 -デフォルトで2文字までの結合文字を扱うことができる。この値はオプション -'maxcombine'で変更できる。 -テキストの編集中は、合成文字は先行文字の一部として扱われる。例えば、初期設定で -は、"x"は文字を削除するときに、連なる合成文字をいっぺんに削除する。オプション -'delcombine'がオンのときには、'x'は1回に1文字の結合文字を削除して、最後に基底 -文字を削除する。入力するときには、まず1文字目を入力して、そして合成文字を入力 -する。すると、文字が合成される。"r"コマンドを使って結合文字を入力することはで -きない。結合文字がさらに入力されるかどうか知ることができないからである。代りに -"R"を使う。 -訳注: combining character 結合文字 -訳注: composing character 合成文字 -訳注: base character 基底文字 -訳注: preceding character 先行文字? - -UTF-8として不正なバイト列はそれぞれ1バイトの文字として扱われ、<xx>と表示され -る。この"xx"はそのバイトの16進数である。 - -Overlong sequenceに対して特別な処理はされない。通常の文字と同じように表示され -る。Overlong sequenceはどんな検索パターンにもマッチしないかもしれない。 -(Overlong sequenceとは、文字を表すために必要なバイトよりも多くのバイトでその文 -字を表現しているバイト列のこと。) "<00>"と表示されているNUL(zero)は例外。 -訳注: たぶん、"<00>"と表示されてるOverlong sequenceだけはたとえ|/\_.|でもマッ -訳注: チしないということ。 - -ファイルやバッファには、ユニコードで表現できる範囲(31ビット)の文字をすべて書く -ことができる。ただし、それを表示できるのは使用フォントがその文字を提供している -場合のみ。 - -便利なコマンド: -- "ga"はカーソル位置の文字のコードを10進数、16進数、8進数で表示する。合成文字 - も表示される。(表示が途切れてしまった場合は、":messages"を使う)。 -- "g8"は文字のUTF-8コードを16進数で表示する。合成文字も表示される。 -- ":set encoding=utf-8 fileencodings="とすると、すべてのファイルでUTF-8を使う - ように強制できる。'encoding'を現在のロケールに合わせて設定し、 - 'fileencodings'によって自動的にファイルのエンコーディングを判定するように設 - 定するのがデフォルトである。 - - -VimをUTF-8モードで起動する (STARTING VIM) - -ロケールがUTF-8の場合、Vimは自動的にUTF-8モードで起動する。 - -UTF-8以外のロケールを使っている場合はこのようにする: > - - set encoding=utf-8 - -メニューに使われるフォントを変える必要があるかもしれない。残念ながら、これはい -つもうまくいくとは限らない。システムに依存する説明は下記、または'langmenu'を参 -照。 - - -X-WindowでUTF-8を使う (USING UTF-8 IN X-Windows) *utf-8-in-xwindows* - -Note: この項はGTK+ 2 GUIには当てはまらない。 - -使用するフォントを選択する必要がある。全角文字を表示するにはさらに別のフォント -が必要。設定するには次の三つの方法がある: - -1. 'guifont'を設定して、'guifontwide'はVimに設定させる -2. 'guifont'と'guifontwide'を設定する -3. 'guifontset'を設定する - -詳細は各オプションの説明を参照。例: > - - :set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 - -メニューで使用されるフォントも変更することができる。これはMotifでのみ機能す -る。":hi Menu font={fontname}"コマンドを使って設定する。|:highlight| - - -UTF-8を入力する (TYPING UTF-8) *utf-8-typing* - -X-Windowを使っているなら、UTF-8をサポートしているインプットメソッド使用する。 - -システムがUTF-8の入力をサポートしていない場合でも、'keymap'を使って入力するこ -とができる。ASCII文字を複数入力することでUTF-8の文字を入力するようなキーマップ -ファイルを作ることができる。|mbyte-keymap|を参照。 - -他にも、XIMを利用することができる言語に、ロケールを設定する方法がある。その場 -合は、'termencoding'をその言語に設定する。Vimは入力された文字を'termencoding' -から'encoding'へ変換する。 - -すべての方法が使えなくても、4文字の16進数で文字コードを直接入力することができ -る: > - - CTRL-V u 1234 - -"1234"は16進数として解釈される。正しく4文字を入力しなくてはいけない。必要であ -ればゼロを前置する。 - -コマンド引数 (COMMAND ARGUMENTS) *utf-8-char-arg* - -|f|、|F|、|t|、|r|のようなコマンドは一つの文字を引数に取る。UTF-8では一文字か -二文字の合成文字の場合がある。Vimは合成文字の入力かどうかを調べるために次の入 -力を待ったりはしないため、合成文字は基底文字と同時に入力する必要がある。そのよ -うな文字は'keymap'や|:lmap|を使うと簡単に入力することができる。 - -行内検索をするコマンド(|f|など)は合成文字を次のように処理する。非合成文字を検 -索するときは、合成されている文字とされていない文字の両方がマッチする。合成文字 -を検索するときは、合成文字だけがマッチする。すべての人が合成文字を入力できるわ -けではないので、このようになっている。 -訳注: 例えば、か(U+304B) + 濁点(U+3099) という合成文字は"fか"でマッチする - - -============================================================================== -11. 主なオプション (Overview of options) *mbyte-options* - -これらのオプションはマルチバイトテキストのファイルの編集に関係する。詳細は -options.txtの説明を参照。 - -'encoding' キーボード入力や表示に使われるエンコーディング。これは新規ファ - イルのエンコーディングの初期設定でもある。 - -'fileencoding' ファイルのエンコーディング。'encoding'と違う場合、ファイルの読 - み書き時にエンコーディングが変換される。 - -'fileencodings' ファイルに使うことができるエンコーディングのリスト。ファイルを - 開くとき、リストの先頭から順番に変換を試して、エラーが起きな - かった最初のものが'fileencoding'として使われる。 - -'charconvert' あるエンコーディングから別のエンコーディングへファイルを変換す - る式。 - -'formatoptions' このオプションにフラグ'm'を含めると、フォーマット時に、(文字の - コードが256以上の)マルチバイト文字のところで改行することができ - る。これは、どこでも改行することができる言語を編集するときに - 便利である。 - -'guifontset' マルチバイトエンコーディングの文字に使うフォントのリスト。この - オプションが設定されていれば'guifont'の代りに使用される。 - -'keymap' キーボードマッピングの名前を指定する。 - -============================================================================== - -マルチバイト機能は、特に以下の方々の貢献による: - Chi-Deok Hwang <hwang@mizi.co.kr> - SungHyun Nam <goweol@gmail.com> - K.Nagano <nagano@atese.advantest.co.jp> - Taro Muraoka <koron@tka.att.ne.jp> - Yasuhiro Matsumoto <mattn@mail.goo.ne.jp> - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/message.jax b/runtime.old/doc/message.jax deleted file mode 100644 index 7285337b7..000000000 --- a/runtime.old/doc/message.jax +++ /dev/null @@ -1,826 +0,0 @@ -*message.txt* For Vim バージョン 7.3. Last change: 2011 May 10 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -このファイルにはVimが表示するメッセージとエラーメッセージのリストが、アルファ -ベット順で紹介してある。メッセージの意味がわからなかった時にはこれを使って調べ -ることができる。だけど完璧ではない。 - -1. 古いメッセージ |:messages| -2. エラーメッセージ |error-messages| -3. メッセージ |messages| - -============================================================================== -1. 古いメッセージ *:messages* *:mes* *message-history* - -既に発生したメッセージを見るのに":messages"コマンドが使用できる。これはメッ -セージが上書きされてしまったり、スクロールで流れていってしまった時にとりわけ便 -利である。これは'shortmess'オプションに依存する。 - -見ることのできるメッセージ数は、tiny バージョンでは20に、それ以外のバージョン -では200に固定されている。 - - *g<* -コマンド "g<" を使うと前のコマンドの出力の最後のページを見ることができる。 -hit-enter プロンプトで誤って <Space> を押してしまったときにこれは便利である。 -このコマンドを使うと hit-enter プロンプトまで戻り、そこでスクロールバックがで -きる。 -Note: 出力を表示中に "q" を押してそれ以降の出力表示をさせなかった場合は、 -"g<" を使ったときもそこまでしか表示されない。 -他のコマンドが出力を行うと、前のコマンドの出力は消去される。 - -翻訳されたメッセージを使っているなら、誰がそのメッセージや翻訳をメンテナンスし -ているかが最初の行に表示される。間違いを見つけたときはそこを見てメンテナと連絡 -をとることができる。 - -特定の(エラー)メッセージに関するヘルプを見つけたいときは、メッセージの最初に表 -示されるIDを使う。例えば: > - - E72: Close error on swap file - -または翻訳版なら: > - - E72: Errore durante chiusura swap file - -というメッセージに関するヘルプを見つけるには: > - - :help E72 - -とすればよい。面倒ならシフトキーを使わないでもできる: > - - :help e72 - -============================================================================== -2. エラーメッセージ *error-messages* *errors* - -エラーメッセージが表示されたが、それを読む前に消えてしまった場合には、次のコマ -ンドでもう一度見ることができる: > - :echo errmsg -もしくは最近のメッセージのリストを見る: > - :messages - - -LIST OF MESSAGES - *E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317* - *E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322* - *E323* *E341* *E473* *E570* *E685* > - Add to read buffer - makemap: Illegal mode - Cannot create BalloonEval with both message and callback - Hangul automata ERROR - block was not locked - Didn't get block nr {N}? - ml_upd_block0(): Didn't get block 0?? - pointer block id wrong {N} - Updated too many blocks? - get_varp ERROR - u_undo: line numbers wrong - undo list corrupt - undo line missing - ml_get: cannot find line {N} - cannot find line {N} - line number out of range: {N} past the end - line count wrong in block {N} - Internal error - Internal error: {function} - fatal error in cs_manage_matches - -これは内部エラーである。これを再現できる場合はバグレポートを送ってください。 -|bugs| - -> - ATTENTION - Found a swap file by the name ... - -|ATTENTION|を参照。 - - *E92* > - Buffer {N} not found - -あなたが要求したバッファは存在しない。これはマークを含んでいたり、その他の方法 -で参照されているバッファを完全に削除(wiped out)したときも起こりうる。 -|:bwipeout| - - *E95* > - Buffer with this name already exists - -同じ名前のバッファを2つ持つことは出来ない。 - - *E72* > - Close error on swap file - -編集中のテキストのコピーを保存するスワップファイル|swap-file|が適切にクローズ -できなかった。たいていは無害。 - - *E169* > - Command too recursive - -ExコマンドがExコマンドを実行するExコマンドを実行...(以下略)となったとき起こる。 -これは200回まで許されている。それ以上多いときはおそらく無限ループである。おそ -らく|:execute|か|:source|コマンドが関係しているだろう。 - - *E254* > - Cannot allocate color {name} - -色名{name}が不明。ほとんどのシステム上で利用可能な色のリストが|gui-colors|にあ -るので参照。 - - *E458* > - Cannot allocate colormap entry, some colors may be incorrect - -Vimに必要な色数が使用できないことを意味している。Vimは終了しないが、一部の色が -正しく表示されない。多くの色を使っていそうなアプリケーションを止めるか、もしく -はVimを起動した後で起動してみると良い。 -ブラウザは多くの色を浪費することで知られている。netscape の場合は、独自の -colormapを使うように指定することで回避できる: > - netscape -install -もしくは色数の制限をしてしまう(64くらいが良いらしい): > - netscape -ncols 64 -同じことをXdefaultsを使ってやるなら: > - Netscape*installColormap: Yes -もしくは > - Netscape*maxImageColors: 64 -< - *E79* > - Cannot expand wildcards - -ファイル名がおかしな文字の組み合わせを含んでいる。そのためVimはワイルドカード -を展開しようとしたが、失敗した。これはマッチするファイル名が見つからなかったと -いうことではなく、パターンが不正であることを意味している。 - - *E459* > - Cannot go back to previous directory - -ファイル名を展開中に、Vimが以前使われていたディレクトリに戻ることに失敗した。 -こうなると、使われている全てのファイル名が無効になるかもしれない。ユーザはカレ -ントディレクトリに実行パーミッションを持っている必要がある。 - - *E190* *E212* > - Cannot open "{filename}" for writing - Can't open file for writing - -なんらかの理由によって、あなたが書こうとしているファイルは作成または上書きがで -きない。理由は、そのディレクトリに書き込みパーミッションを持っていないか、ファ -イル名が無効であることかもしれない。 - - *E166* > - Can't open linked file for writing - -あなたは上書きできないファイルに書き込みをしようとしていて、そのファイルはリン -ク(ハードリンクまたはシンボリックリンク)である。そのリンクまたはファイルのある -ディレクトリが書き込み可能なら、それでも書き込むことは可能だが、あなたがそのリ -ンクを削除してその場所にファイルを書き込みたいのか、ファイルそのものを削除して -その場所に新しいファイルを書き込みたいのかVimにはわからない。もし本当にファイ -ルをこの名前で書き込みたいのなら、手動でリンクまたはファイルを削除するか、Vimが -それを上書きできるようにパーミッションを変更しなければならない。 - - *E46* > - Cannot change read-only variable "{name}" - -関数の引数|a:var|またはVim内部変数|v:var|に値を代入しようとした。これらはリー -ドオンリーである。 - - *E90* > - Cannot unload last buffer - -Vimは常に少なくとも1つのバッファをロードしていなければならない。そうでなければ -ウィンドウに表示するものが何もなくなってしまう。 - - *E40* > - Can't open errorfile <filename> -":make"や":grep"コマンドを使った時: エラーメッセージやgrepの結果を開くことがで -きなかった。これには幾つかの原因が考えられる: -- 'shellredir'に間違った値が入っている。 -- シェルがディレクトリを変更してしまったために、エラーファイルが違うディレクト - リに作られてしまった。'makeef'を変更することで修正できるが、makeコマンドは - 誤ったディレクトリで実行されてしまうことになる。 -- 'makeef'に間違った値が入っている。 -- 'grepprg'や'makeprg'を実行できない。これは必ず検出できるとは限らない(特に - Windowsでは)。$PATHをチェックすること。 - - > - Can't open file C:\TEMP\VIoD243.TMP - -MS-Windowsにおいて、外部コマンドの出力を読み込もうとしたが、コマンドが正常に動 -作しなかったときに現れる。これには多くの原因がありうる。'shell', 'shellquote', -'shellxquote', 'shellslash' やこれらに関連したオプションをチェックすること。外 -部コマンドが見つからなかったということもありうる。その場合の特別なエラーメッ -セージは用意されていない。 - - *E12* > - Command not allowed from exrc/vimrc in current dir or tag search - -いくつかのコマンドはセキュリティ上の理由のために許可されていない。それらのコマ -ンドはたいていカレントディレクトリの.exrcや.vimrcまたはtagsファイルから来る。 -'secure'も参照。 - - *E74* > - Command too complex - -マッピングが非常に長いコマンド文字列に展開されてしまった。マッピングが間接的に -自分自身を呼ぶことによって起こった可能性がある。 - -> - CONVERSION ERROR - -ファイル書き込み時に"CONVERSION ERROR"という文字が現れたら、これは内部で使われ -ているUTF-8からファイルのフォーマットに変換するときにいくつかのビットが失われ -たことを意味する。このファイルにはunmodifiedのマークがされない。情報の欠落が気 -になるなら、バッファ中の文字を扱えるように'fileencoding'オプションを他の値に -し、再度書き込みを行うこと。気にしないならバッファを破棄したり'modified'オプ -ションをリセットしてもよい。 - - *E302* > - Could not rename swap file - -ファイル名が変更されたとき、Vimは|swap-file|も同様にリネームしようとする。これ -が失敗し、以前のスワップファイルが引き続き使われる。多くの場合は無害。 - - *E43* *E44* > - Damaged match string - Corrupted regexp program - -Vim内部でなんらかの不具合が起こり、正規表現が壊れてしまった。この問題を再現で -きるなら報告してください。|bugs| - - *E208* *E209* *E210* > - Error writing to "{filename}" - Error closing "{filename}" - Error reading "{filename}" - -これはVimがファイルをリネームしようとしたが、ファイル名の単純な変更ができな -かったときに起こる。するとファイルはコピーされるが、どういうわけかこれが失敗し -た。結果として、元のファイルとコピー先のファイルの両方が存在するが、コピー先の -ファイルは不完全な可能性がある。 - -> - Vim: Error reading input, exiting... - -これは入力が求められているときにタイプされた文字が読み込めなかった場合に起こ -る。Vimはどうにもならなくなり、終了するしかない。これは標準入力と標準出力の両 -方がリダイレクトされていて、かつVimを終了させないスクリプトを実行しているとき -に起こりうる。 - - *E47* > - Error while reading errorfile - -エラーファイルの読み込みに失敗した。これは、エラーメッセージが認識できないこと -によって引き起こされるわけではない。 - - *E80* > - Error while writing - -ファイルの書き込みが正常に完了しなかった。そのファイルはおそらく不完全である。 - - *E13* *E189* > - File exists (add ! to override) - "{filename}" exists (add ! to override) - -間違ってファイルを上書きしてしまわないように保護されている。どうしても上書きし -たいのなら、同じコマンドの直後に"!"を付けて使用する。例: > - :w /tmp/test -これをこう変える: > - :w! /tmp/test -< - *E768* > - Swap file exists: {filename} (:silent! overrides) - -Vim で編集している最中のファイルは上書きしないようになっている。このエラーはス -ワップファイルが存在するのに ":w! filename" を実行したときに発生する。 -- もしそのスワップファイルが昔のクラッシュした編集セッションで作られたものなら - このスワップファイルは消したいだろう。{filename} を編集するとそのスワップ - ファイルについての情報が得られる。 -- 強制的に保存したいならコマンドの前に ":silent!" をつける。例: > - :silent! w! /tmp/test -< 既存のファイルを上書きするために既に ! をつけているので、この特別なコマンド -が必要になる。 - - *E139* > - File is loaded in another buffer - -あなたは別のバッファで使われている名前でファイルを書き込もうとしている。そう -すると同じファイルの2つの版が出来てしまう。 - - *E142* > - File not written: Writing is disabled by 'write' option - -'write'オプションがオフである。これはファイルを書き込もうとする全てのコマンド -が生成するメッセージである。コマンドライン引数で|-m|を指定することで同じメッ -セージを発生することができる。":set write"で'write'オプションを設定することが -できる。 - - *E25* > - GUI cannot be used: Not enabled at compile time - -GUIのためのコードを含んでいないVimのバージョンを実行している。従って"gvim"と -":gui"は機能しない。 - - *E49* > - Invalid scroll size - -これは'scroll', 'scrolljump', 'scrolloff'オプションに無効な値を設定することに -よって引き起こされる。 - - *E17* > - "{filename}" is a directory - -あなたは既存のディレクトリの名前でファイルを書き込もうとした。これは不可能であ -る。ファイル名を追加する必要があるだろう。 - - *E19* > - Mark has invalid line number - -存在しない行番号を持つマークを使用した。別のファイルのマークを持っているとき -か、別のプログラムがファイルからラインを消してしまった場合に起こり得る。 - - *E219* *E220* > - Missing {. - Missing }. - -ファイル名の中に{}を使っているが、{に対応する}がない、またはその逆。これは -{foo,bar}のように使わねばならない。これは"foo"と"bar"にマッチする。 - - *E315* > - ml_get: invalid lnum: {number} - -Vimの内部エラー。どうしたらこれを再現できるかを発見して、バグレポートを送って -くれないだろうか |bugreport.vim|。 - - *E173* > - {number} more files to edit - -引数リストの最後の項目を編集していないのに終了しようとしている。これはまだ編集 -すべきファイルがあるのに誤って終了するのを防止する。|argument-list|を参照。もし -本当に終了したいのなら、もう1度繰り返せば終了できる。 - - *E23* *E194* > - No alternate file - No alternate file name to substitute for '#' - -オルタネートファイルがまだ定義されていない。|alternate-file|参照。 - - *E32* > - No file name - -現在のバッファに名前が存在していない。ファイルに保存するためには":w filename" -を使う。もしくは":file fname"でバッファに名前を付ける。 - - *E141* > - No file name for buffer {number} - -変更されたバッファの1つがファイル名を持っていない。そのためそのファイルを書き -込めない。そのバッファにファイル名を与える必要がある: > - :buffer {number} - :file {filename} -< - *E33* > - No previous substitute regular expression - -パターンに文字'~'を使用すると、以前に":substitute"コマンドで使われたパターンに -置き換えられる。そのようなコマンドがまだ使われていない時には、これは失敗する。 -|/~|参照。また、これは ":s/pat/%/" を使ったときにも起こる。この "%" は以前の置 -換で使われた置換後文字列を意味する。 - - *E35* > - No previous regular expression - -空の検索パターンを使用したときには、以前に使われた検索パターンが再度使用され -る。しかし、以前に検索が行われていないのならば無理な話だ。 - - *E24* > - No such abbreviation - -":unabbreviate"コマンドを、存在していない略語を引数にして実行した。 -"cunabbrev"、":iunabbrev"などのバリエーションも同じメッセージを与える。 -後ろに空白がついていないかチェックすること。 - -> - /dev/dsp: No such file or directory - -GnomeサポートつきのGTK GUIでのみ表示される。Gnomeがオーディオデバイスを使おう -としたが、利用可能でない。このエラーは無視してよい。 - - *E31* > - No such mapping - -":unmap"コマンドを、存在していないマップを引数にして実行した。":cunmap"、 -":unmap!"などの、このコマンドのバリエーションも同じメッセージを生成する。 -いくつかのヒント: -- 後ろに空白がついていないかチェックすること。 -- バッファローカルなマッピングについては ":unmap <buffer>" とする必要がある。 - |:map-<buffer>| - - *E37* *E89* > - No write since last change (add ! to override) - No write since last change for buffer {N} (add ! to override) - -変更のあるファイルを放棄(|abandon|)しようとした。Vimは仕事(ファイル)を失ってし -まう危険から守ってくれる。変更されたファイルを":w"で保存するか、変更を失ったと -しても本当に放棄(|abandon|)するかのどちらかである。破棄するには、使ったコマン -ドに'!'を付けて実行すればよい。例: > - :e other_file -これをこう変える: > - :e! other_file -< - *E162* > - No write since last change for buffer "{name}" - -変更されたバッファがあるのにVimを終了しようとしたとき表示される。変更された -バッファを|:w|で書き込むか、":qa!"などのバッファを強制的に破棄するコマンドを使 -うかしなければならない。保存しておきたい変更を破棄しないように注意すること。特 -に'hidden'をセットしているときは、バッファのことを忘れているかもしれない。 - -> - [No write since last change] - -このメッセージは、少なくとも1つのバッファが変更されているときにシェルコマンド -を実行したときに現れる。このメッセージを表示させなくするには、オプション -'warn' をオフにする。 - - *E38* > - Null argument - -Vim内部で何か不具合が起こり、NULLポインタが現れてしまった。もしこの問題を再現 -できるなら報告してください。|bugs| - - *E172* > - Only one file name allowed - -":edit"コマンドは、1つのファイルしか受け付けない。複数のファイルを編集するため -に指定したいのなら":next"を使う |:next|。 - - *E41* *E82* *E83* *E342* > - Out of memory! - Out of memory! (allocating {number} bytes) - Cannot allocate any buffer, exiting... - Cannot allocate buffer, using other one... - -あ~あ… なにか厄介なことをしたか、別のプログラムがメモリを喰らい尽くしたか。 -気をつけて。Vimはメモリ不足の状況というのは、想定していない。まず、変更した -ファイルが保存されているか確認しよう。それからメモリを節約する方法を考えよう。 -安全に使いたいのならば、一度Vimを終了して、再度起動しましょう。 - -バッファは一部のみメモリに保持されるので、大きなファイルを編集するときでもメモ -リ不足になることはほとんどありません。アンドゥ情報は完全にメモリに保持されます -が、次の方法でその量を減らすことができます: -- 'undolevels' を小さい値に設定する。-1 に設定するとアンドゥ機能を完全に無効に - できます。すべての行を変更するような場合に役立ちます。 -- 'undoreload' をゼロに設定して無効化する。 - -|msdos-limitations| も参照。 - - *E339* > - Pattern too long - -int型が16ビットのシステム上で起こる: コンパイルされた正規表現パターンの長さが -65000文字以上である。もっと短いパターンを試してみてください。 -また、ルールのオフセットが利用可能な空間に収まらない場合にも起こります。もっと -シンプルなパターンを試してみてください。 - - *E45* > - 'readonly' option is set (add ! to override) - -読み込み専用とマークされたファイルに書き込もうとした。本当にファイルを書き込ん -でしまうには、'readonly'オプションをリセットするか、保存に使用したコマンドに -'!'を付けて実行し直すかのどちらか。例: > - :w -これはこう変える: > - :w! -< - *E294* *E295* *E301* > - Read error in swap file - Seek error in swap file read - Oops, lost the swap file!!! - -Vimが|swap-file|からテキストを読み込もうとしたが、何かまずいことが起こった。関 -係するバッファのテキストが破壊されているかもしれない。バッファを書き込む前に注 -意深くチェックすること。違いをチェックするために、別のファイルに書き出すといい -かもしれない。 - - *E192* > - Recursive use of :normal too deep - -"normal"コマンドの引数で再び":normal"コマンドを使い、再帰的になっている。これ -は'maxmapdepth'で回数が制限されている。この例ではどうやってそれを引き起こすか -を示している: > - :map gq :normal gq<CR> -"gq"とタイプすれば、このマッピングが実行され、その結果再び"gq"が呼び出される。 - - *E22* > - Scripts nested too deep - -スクリプトはコマンドライン引数の"-s"や、":source"コマンドで読み込むことができ -る。スクリプトは、他のスクリプトファイルを読み込むことができる。これは14段階ま -で続けることができる。それ以上に入れ子にした場合には、Vimは再帰的なループがあ -ると仮定し、このエラーメッセージを出して読み込みを止める。 - - *E319* > - Sorry, the command is not available in this version - -使用中のVimでは利用できないコマンドを使おうとした。Vimのコンパイル時に、いくつ -もの機能を有効/無効にすることができる。これはVimをどれだけ大きくするかの決定 -とOSに依存する。いつどの機能が利用できるのかを見るには|+feature-list|を参照。 -|:version|コマンドを使うとVimがどの機能つきでコンパイルされたかを表示できる。 - - *E300* > - Swap file already exists (symlink attack?) - -Vimがスワップファイルを開こうとしたが、それが既に存在するかその場所にシンボ -リックリンクがあったとき表示される。これは本来起こってはならない。なぜならVim -はすでにそのファイルが存在しないことをチェックしたからである。他の誰かが同じ -ファイルをちょうど同じ瞬間に開いたか(これはほぼありえない)、誰かがsymlink攻撃 -をしようとしているかである(/tmpにあるファイルを編集中か、'directory'が"/tmp"で -始まっている場合に起こりうる。'directory'を"/tmp"以下に設定すべきではない)。 - - *E432* > - Tags file not sorted: {file name} - -Vim(およびVi)はtagsファイルがASCII順でソートされていることを期待する。そうすれ -ば線形探査よりもかなり高速な二分探査が可能になるからである。もしもtagsファイル -がソートされていなかったら、|'tagbsearch'|オプションをリセットする必要がある。 -このメッセージはVimがtagを探している時に問題があると表示される。tagsファイルが -ソートされていないにも関わらず、このメッセージが表示されないことも時々ある。 - - *E460* > - The resource fork would be lost (add ! to override) - -Macintosh(classic)においてファイルを書き込むとき、Vimはファイルについての情報 -すべて(resource forkを含む)を保存しようとする。それができない場合、このエラー -メッセージが表示される。それでも書き込むときはコマンド名の後に"!"をつけること -(すると情報は失われる)。 - - *E424* > - Too many different highlighting attributes in use - -Vimは約223種類までの強調表示を扱うことが出来る。この限界に達してしまったという -ことは、異なる引数に対して|:highlight|コマンドを使いすぎたことを意味する。 -":highlight link"はカウントされない。 - - *E77* > - Too many file names - -ファイル名を展開して、マッチが1個以上見つかった。直前に使われたコマンドに対し -てはマッチが1つしか許されない。 - - *E303* > - Unable to open swap file for "{filename}", recovery impossible - -Vimがスワップファイルを作成できなかった。ファイルを編集することはできるが、 -もしVimが不意に終了したら、変更は失われる。また、巨大なファイルを編集するとき -はメモリを多く消費するかもしれない。このエラーを回避するために'directory'オプ -ションを変更するとよいかもしれない。|swap-file|を参照。 - - *E140* > - Use ! to write partial buffer - -範囲選択をしてバッファの一部を書き込むとき、元のファイルを上書きしようとするこ -とはあまりない。これはおそらく誤りである(例えばビジュアルモードがアクティブな -ときに":w"を使った)。それゆえVimはコマンドの後に ! をつけることを要求する。例: -":3,10w!"。 -> - - Warning: Cannot convert string "<Key>Escape,_Key_Cancel" to type - VirtualBinding - -起動時にこのようなメッセージが現れた場合、これはVimの問題ではなく、X11の設定が -間違っている。この問題を解決するためのヒントがここにある: -http://groups.yahoo.com/group/solarisonintel/message/12179. -[this URL is no longer valid] - - *W10* > - Warning: Changing a readonly file - -ファイルが読み込み専用なのに、変更を加えようとしている。このメッセージを避ける -には、自動コマンドイベント|FileChangedRO|を使うことが出来る(自動コマンドは -'readonly'オプションをリセットしなければならない)。ファイルへの変更を完全に禁 -止するには'modifiable'を参照。 -このメッセージは 'readonly' がセットされて以降最初の変更に対してのみ現れる。 - - *W13* > - Warning: File "{filename}" has been created after editing started - -存在しないファイルの編集をしていたはずが、今は同名のファイルが存在する。現在開 -いているファイルの編集を続けるか、新しく作成されたファイルを開くか決めなければ -ならない。'buftype'が空でないときはこのメッセージは表示されない。 - - *W11* > - Warning: File "{filename}" has changed since editing started - -ファイルが編集を始めた時とは違うタイムスタンプを持っていて、その内容が変更され -ている(より正確には: 現在のオプション設定と自動コマンドでそのファイルを読み直 -した結果、異なるテキストになってしまったとき)多分他のプログラムがそのファイル -を書き換えたのだろう。何が起こったのか究明し、どっちの版を残したいのか決断する -必要がある。これを自動的に行わせたいのなら'autoread'オプションをセットするこ -と。'buftype'が空でないならばこのメッセージは表示されない。 - -なにも間違ったことをしていないのに、このメッセージを受け取る可能性が1つ考えら -れる: 夏時間が始まる日にWindowsでファイルを保存した場合である。この場合、次の -方法のうちどれかで修正できる: > -- 次の行をautoexec.batに加える: > - SET TZ=-1 -< タイムゾーンに"-1"の修正を施す。 -- "automatically adjust clock for daylight saving changes"を無効にする。 -- 単に、次の日にファイルを再び書き直す。または時計を次の日にセットし、ファイル - を2回書き込み、時計を戻す。 - - *W12* > - Warning: File "{filename}" has changed and the buffer was changed in Vim as well - -上のものと同様だが、Vim内のバッファも同様に変更された。Vim中の版とディスク上の -版のどちらを残すのか決めなければならない。'buftype'が空でない場合、このメッ -セージは表示されない。 - - *W16* > - Warning: Mode of file "{filename}" has changed since editing started - -バッファのタイムスタンプが変更され、中身は同じだがモード(パーミッション)が変更 -されたとき。これは通常、読み込み専用ビットをリセットするようなバージョン管理シ -ステムからファイルをチェックアウトしたときに起こる。ファイルを読み直すのが安全 -である。自動的にファイルを読み直させるようにするには'autoread'をセットするこ -と。 - - *E211* > - File "{filename}" no longer available - -編集を始めているファイルが消え失せたか、もはやアクセスできない。変更が失われる -のを避けるため、バッファが書き込まれたか確認すること。'buftype'が空でないとき -はこのメッセージは表示されない。 - - *W14* > - Warning: List of file names overflow - -とてつもなくたくさんのバッファを使っている。こうなると2つのバッファに同じ番号 -が割り当てられるようになり、様々な問題を引き起こす。Vimを終了し、再起動すると -よいかもしれない。 - - *E296* *E297* > - Seek error in swap file write - Write error in swap file - -これはたいていディスクが一杯のときに起こる。Vimが|swap-file|にテキストを書き込 -むことが出来なかった。直接的には有害ではないが、Vimが不意に終了したとき、テキ -ストが失われ、復活の可能性もなくなってしまうかもしれない。この問題が持続する場 -合は、Vimがメモリを使い果たしているのかもしれない。 - - *connection-refused* > - Xlib: connection to "<machine-name:0.0" refused by server - -VimがXサーバへ接続を試みたが、接続を確立できなかった場合にこれが起こる。Xサー -バへの接続は、タイトルとxtermのクリップボードをサポートするために必要とされ -る。残念なことに、|+xterm_clipboard|と|+X11|の機能を無効にしない限り、このエ -ラーメッセージは避けることはできない。 - - *E10* > - \\ should be followed by /, ? or & - -コマンドラインがバックスラッシュで始まっているか、コマンドの範囲のおかしな場所 -にバックスラッシュが含まれている。これはしばしばコマンドラインの行継続が無効に -されているため引き起こされる。行継続を有効にするには'cpoptions'から'C'フラグを -除くか、または ":set nocp" とすること。 - - *E471* > - Argument required - -引数を必要とするExコマンドに対し、引数を与えないで実行したとき起こる。 - - *E474* *E475* > - Invalid argument - Invalid argument: {arg} - -Exコマンドが実行されたが、無効な引数が指定された。 - - *E488* > - Trailing characters - -引数をつけてはならないExコマンドに引数が指定された。 - - *E477* *E478* > - No ! allowed - Don't panic! - -"!"をつけてはならないExコマンドに"!"をつけた。 - - *E481* > - No range allowed - -範囲指定を許可していないExコマンドに範囲を指定した。|cmdline-ranges|を参照。 - - *E482* *E483* > - Can't create file {filename} - Can't get temp file name - -Vimが一時ファイルを作成できなかった。 - - *E484* *E485* > - Can't open file {filename} - Can't read file {filename} - -Vimが一時ファイルを読み込めなかった。 - - *E464* > - Ambiguous use of user-defined command - -名前の先頭部分が一致するユーザ定義コマンドが2つあり、そのうちの1つを実行しよう -とコマンドライン補完をした。|user-cmd-ambiguous|を参照。 -例: > - :command MyCommand1 echo "one" - :command MyCommand2 echo "two" - :MyCommand -< - *E492* > - Not an editor command - -Exコマンドでもユーザ定義コマンドでもないコマンドを実行しようとした。 - -============================================================================== -3. メッセージ *messages* - -Vimがくれるさまざまなメッセージの(不完全な)概観である: - - *hit-enter* *press-enter* *hit-return* - *press-return* *hit-enter-prompt* - - Press ENTER or type command to continue - -このメッセージは読んでもらいたい何かがあって、スクリーンの再描画が中断されてい -るときに与えられる: -- 外部コマンドの実行直後(例えば":!ls"と"=")。 -- ウィンドウの幅よりも長い何かがステータスラインに表示されたか、'showcmd'か - 'ruler'の出力にまで達してしまった。 - --> スクリーンを再描画し再開するには、<Enter>か<Space>(他の用途に使われていない - ことが条件)押す。 --> 何かコマンドを使うために、":"か他のノーマルモードコマンドのキャラクタを叩 - く。 --> 'k', <Up>, 'u', 'b', 'g' を押すとメッセージが上にスクロールする。これは - |more-prompt| と同様に働く。'compatible' がオフで 'more' がオンのときだけ有 - 効である。 --> 'compatible' がオフで 'more' がオンのとき、メッセージが画面上端を越えてスク - ロールした場合、'j', 'f', 'd', <Down> は無視される。これは 'j', 'f' を押しっ - ぱなしにしたときメッセージが消えてしまうのを避けるためである。 --> <C-Y>を押し、モードレスセレクションをクリップボードレジスタにコピー(ヤンク) - する。 --> メニューを使う。コマンドラインモード用に定義されている文字が使われる。 --> 'mouse'が'r'フラグを含んでいる場合は、マウスの左クリックが<Space>を押すのと - 同様になる。ただし'r'フラグを含んでいるとテキストを選択できなくなる。 --> GUIを使っているときは、最後の行で左クリックすると<Space>を押すのと同様にな - る。 -{Vi: ":"だけが割り込める} - -もし誤って <Enter> や <Space> を押してしまって、テキストを表示し直したいときは -|g<| を使う。これは 'more' がオンのときだけ有効である。 - -hit-enterのプロンプトの回数を減らすには: -- 'cmdheight'を2かそれ以上に設定する。 -- 'shortmess'にフラグを追加する。 -- 'showcmd'と'ruler'の両方か、もしくはどちらかをリセットする。 - -スクリプトが hit-enter プロンプトを出すが、なぜそれが出るのかわからない場合は -変数 |v:scrollstart| が便利かもしれない。 - -'mouse'も参照。hit-enterメッセージは|hl-Question|グループで強調される。 - - - *more-prompt* *pager* > - -- More -- - -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit - -このメッセージはスクリーンがメッセージで埋め尽くされた時に表示される。'more'オ -プションがオンの時だけ与えられる。|hl-MoreMsg|グループで強調される。 - -種類 効果 ~ - <CR> or <NL> or j or <Down> 1行進める - d 次の半ページ - <Space> or f or <PageDown> 次のページ (1画面) - G 最後へ(hit-enter プロンプトまで) - - <BS> or k or <Up> 1行戻る (*) - u 前の半ページ (*) - b or <PageUp> 前のページ (*) - g 最初へ戻る (*) - - q, <Esc> or CTRL-C リスト表示を止める - : リスト表示を止めコマンドラインに入る - <C-Y> モードレスセレクションをクリップボード - (レジスタ"*と"+)にヤンク(コピー)する。 - {メニューの項目} コマンドラインでメニューが定義されてい - ること - <LeftMouse> (**) 次のページ - -その他のキーは、これらのキーの意味が表示される。 - -(*) 逆スクロールコマンドは {Vi にはない}。メッセージのスクロールを始めた場所へ - 戻るだけである。 -(**) 左クリックは次のときだけ機能する: - - GUI使用時:スクリーンの最後の行で - - 'mouse'が'r'を含んでいるとき(ただしこのときテキスト選択はできない) - -Note: タイプされたキーはターミナルから直接得られ、マップされずtypeaheadは無視 -される。 - -コマンド |g<| を使うと前のコマンドの出力の最後のページを見ることができる。 -hit-enter プロンプトで誤って <Space> を押してしまったときにこれは便利である。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/mlang.jax b/runtime.old/doc/mlang.jax deleted file mode 100644 index 811eca729..000000000 --- a/runtime.old/doc/mlang.jax +++ /dev/null @@ -1,210 +0,0 @@ -*mlang.txt* For Vim バージョン 7.3. Last change: 2010 Dec 11 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -多言語機能 *multilang* *multi-lang* - -このマニュアルはメッセージとメニューを様々な言語で使用する方法について書かれて -いる。マルチバイトテキストの編集については|multibyte|を参照。 - -基本的なことはユーザマニュアルでも説明されている: |usr_45.txt|。 - -1. メッセージ |multilang-messages| -2. メニュー |multilang-menus| -3. スクリプト |multilang-scripts| - -多言語のヘルプ機能については|help-translated|をご覧ください。 - -{これらのコマンドはViには存在しない} -{|+multi_lang|機能を無効にしてコンパイルした場合には利用できない} - -============================================================================== -1. メッセージ *multilang-messages* - -Vimはシステム環境からロケール(地域情報)を判定する。ほとんどの場合これは、その -言語が利用可能な状態でさえあるならば、Vimを好みの言語で使うことができるを意味 -している。 - -システムによりサポートされるロケールの一覧を見るには、(UNIXでは)これらのディレ -クトリを見る: - /usr/lib/locale ~ - /usr/share/locale ~ -ロケール名には不幸にして大文字と小文字の違いがある。また"-" と "_"の使われ方に -も用心すること。 - - *:lan* *:lang* *:language* *E197* -:lan[guage] -:lan[guage] mes[sages] -:lan[guage] cty[pe] -:lan[guage] tim[e] - 現在の言語(言い換えればロケール)を表示する。 - 引数"message"を使用するとメッセージに利用されている言 - 語が表示される。専門的には: LC_MESSAGES - 引数"ctype"を使用すると文字エンコードに利用されている - 言語が表示される。専門的には: LC_CTYPE - 引数"time"を使用するとstrftime()が表示に利用する言語が - 表示される。専門的には: LC_TIME - 無引数ならばロケールの全体が表示される(どのように表示 - されるかはシステムに依存する)。 - 現在の言語は|v:lang|, |v:ctype| そして |v:lc_time|の各 - 変数で取得することもできる。 - -:lan[guage] {name} -:lan[guage] mes[sages] {name} -:lan[guage] cty[pe] {name} -:lan[guage] tim[e] {name} - 現在の言語(言い換えればロケール)を{name}に設定する。 - {name}というロケールがシステムに存在していなければなら - ない。あるシステムでは"en"とか"en_US"と言った別称を受 - け付けるが、中には"en_US.ISO_8859-1"のように完全な指定 - しか受け付けないシステムもある。Unix では次のコマンド - でサポートされているロケールを確認できる: > - :!locale -a -< 引数"message"を使用するとメッセージに利用する言語を設 - 定する。これにより例として日本語を編集中に英語メッセー - ジを使用するようなことができる。これは$LC_MESSAGESを設 - 定する。 - 引数"ctype"を使用すると文字エンコードに利用する言語を - 設定する。これはVimがリンクしているライブラリに影響を - 与える。"C"や'encoding'と異なる値を指定するのは一般的 - ではない。これは$LC_CTYPEを設定する。 - 引数"time"を使用すると時刻と日付のメッセージに利用され - る言語を設定する。strftime()に影響を与える。これは - $LC_TIMEを設定する。 - 無引数ならば両方が設定され、加えて$LANGが設定される。 - |+float| 機能付きでコンパイルされている場合は、常に - LC_NUMERIC が "C" にセットされ、浮動小数点数が小数点と - して '.' を使うようになる。 - これは言語に依存した項目(メッセージや時刻日付の書式)を - 変更することができる。全てのシステムで完全にサポートさ - れるわけではない。 - 設定に失敗すればエラーメッセージが表示される。成功した - 場合には何も表示されない。例: > - :language - Current language: C - :language de_DE.ISO_8859-1 - :language mes - Current messages language: de_DE.ISO_8859-1 - :lang mes en -< - -MS-WINDOWSでのメッセージ翻訳 *win32-gettext* - -インストーラを利用した場合には、既にメッセージの翻訳が動作している。動作しない -のであればlibintl.dllを別途入手する必要がある: > - - http://sourceforge.net/projects/gettext - -これにはxgettext, msgformatその他のツールも含まれている。 - -libintl.dllは(g)vim.exeと同じディレクトリか、環境変数PATHに示されたディレクト -リのどれかに置く必要がある。メッセージファイル(vim.mo)は -"$VIMRUNTIME/lang/xx/LC_MESSAGES"に置かなければならない。"xx"はその言語名の省 -略形(ほとんどの場合2文字)に置き換えて考える。 - -独自の翻訳を書く場合には.poファイルを作成しそれを.moファイルに変換する必要があ -る。そのためにはVimのソースを取得してファイル"src/po/README.txt"を読む必要があ -る。 - -自動選択された言語を変更するには、$LANGに設定する。次の例は日本語メッセージを -選択する方法を示している: > - - :let $LANG = "ja" - -翻訳をしないようにするには"en"を指定する。 - -(このWindows向け文章は村岡太郎によって書かれた) -(訳注: 訳注として追加されたわけでなく原文にこの記述がある) - -============================================================================== -2. メニュー *multilang-menus* - -基本(特に 'langmenu' の使い方)は|45.2|を参照。 - -メニューの翻訳が作られた後に元のメニューが変更された場合には、それらのメニュー -は英語のまま表示されることがある。そのような場合には翻訳のメンテナーに連絡を取 -り更新するように頼んで欲しい。翻訳者の名前とメールアドレスはファイル -"$VIMRUNTIME/lang/menu_<lang>.vim"の中に見つけることができる。 - -メニューに利用するフォント(もしくはフォントセット)を指定するには、|:highlight| -コマンドを使用する。例: > - - :highlight Menu font=k12,r12 - - -ロケールの省略名 - -あいにく、同じ言語に同じエンコードであっても、ロケール名がシステムによって異な -ることがある。期待した通りにメニューが翻訳されない時には、次のコマンドの実行結 -果を調べる: > - - echo v:lang - -次に"$VIMRUNTIME/lang"ディレクトリを調べて同じ言語に使われるメニュー翻訳ファイ -ル探す。"-" と "_"が違うだけでファイルは見つけられなくなる。良くある間違い -"iso8859-1" と "iso_8859-1"にも用心する。幸い、Vimは全ての名前を小文字にするの -で、大文字小文字の区別を心配する必要はない。名前中の空白文字はエスケープするの -ではなくアンダースコア("_")に変換される。 - -使いたい言語用の、それと異なる名前のメニュー翻訳ファイルを見つけた場合は、独自 -のランタイムディレクトリに読み込まれるようファイルを作成する。ファイルの名前は -次のようにする: > - - ~/.vim/lang/menu_<v:lang>.vim - -ファイルが検索されるディレクトリを指定するオプション'runtimepath'を確認する。 -そのファイルに別の名前のメニューファイルを読み込む、次のようなコマンドを記入す -る: > - - runtime lang/menu_<other_lang>.vim - - -メニューを翻訳する - -メニューを独自に翻訳したい場合は、以下で説明するように|:menutrans|コマンドを使 -うことができる。ある1つの言語の翻訳は1つのVimスクリプトにまとめられることが推 -奨される。まだ翻訳が存在しない言語については、メンテナーになりその翻訳を全ての -Vimユーザに提供することを是非とも考えていただきたい。Vimのメンテナーにメールを -送って欲しい。アドレスは<maintainer@vim.org>である。 - - *:menut* *:menutrans* *:menutranslate* -:menut[ranslate] clear - メニューの翻訳をすべて削除する。 - -:menut[ranslate] {english} {mylang} - メニュー名{english}を{mylang}に翻訳する。"&" と - "<Tab>"の特別な文字も全て含まれる必要がある。半角ス - ペースとピリオド('.')は|:menu|コマンドと同様に、バック - スラッシュ(訳注: '\')でエスケープする必要がある。 - -例は$VIMRUNTIME/langディレクトリを参照。 - -翻訳をテストするには一旦全てのメニューを削除する必要がある。次のはVimを再起動 -せずにそれを行なう方法である: > - :source $VIMRUNTIME/delmenu.vim - :source <your-new-menu-file> - :source $VIMRUNTIME/menu.vim - -メニューパスの各部位は個別に翻訳される。"Help"が"Hilfe"に、"Overview" が -"??berblick"に訳される時、結果的に"Help.Overview" は"Hilfe.??berblick"と翻訳され -る。 - -============================================================================== -3. スクリプト *multilang-scripts* - -Vimスクリプトでは現在の言語(ロケールを)取得するのに変数|v:lang|を使うことがで -きる。デフォルトの値は"C"か環境変数$LANGの値になる。 - -以下の例は、この変数を使ったユーザの好みの言語にメッセージを適合させる簡単な例 -を示している, > - - :if v:lang =~ "de_DE" - : echo "Guten Morgen" - :else - : echo "Good morning" - :endif -< - - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/runtime.old/doc/motion.jax b/runtime.old/doc/motion.jax deleted file mode 100644 index ad441849d..000000000 --- a/runtime.old/doc/motion.jax +++ /dev/null @@ -1,1310 +0,0 @@ -*motion.txt* For Vim バージョン 7.3. Last change: 2011 Jun 02 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -カーソルの移動 *cursor-motions* *navigation* - -これらのコマンドはカーソルの位置を変えます。移動先の位置がスクリーンの外側であ -ればカーソルを表示するためにスクリーンをスクロールさせます( 'scrolljump' と -'scrolloff' オプションも参照してください)。 - -1. 移動とオペレータ |operator| -2. 左右の移動 |left-right-motions| -3. 上下の移動 |up-down-motions| -4. 単語単位の移動 |word-motions| -5. オブジェクト単位で移動 |object-motions| -6. オブジェクト単位で選択 |object-select| -7. マーク |mark-motions| -8. ジャンプ |jump-motions| -9. 様々な移動 |various-motions| - -一般的な注意: - -ファイルのどの場所にいるかを知るには "CTRL-G" コマンド |CTRL-G| か "g CTRL-G" -コマンド |g_CTRL-G| を使ってください。'ruler' オプションをセットしていればス -テータス行にカーソルの位置が表示し続けられます(ちょっとだけ Vim を遅くしま -す)。 - -経験を積んだユーザーは hjkl キーを使うのをそれらが常に指の下にあるという理由で -好みます。初心者はしばしば hjkl キーの動作を知らないので矢印キーを使うのを好み -ます。hjkl がどんな動きをするのか覚えるのはキーボードを見ればすぐわかります。j -を下矢印と見立ててみてください。 - -'virtualedit' オプションをセットすると、文字がない位置や文字の真ん中にもカーソ -ルを移動できるようになります。 - - -============================================================================== -1. 移動とオペレータ *operator* - -移動コマンドはオペレータコマンドの後に続けることができ、カーソルが移動する間の -テキストにそのオペレータコマンドを施すことができます。つまりは移動前と移動後 -のカーソル位置の間のテキストです。オペレータコマンドは一般的にテキストを削除し -たり変更したりするのに使われます。下記のオペレータコマンドを使うことができます: - - |c| c 変更 - |d| d 削除 - |y| y レジスターにヤンクする(テキストは変更しません) - |~| ~ 大文字/小文字を入れ換える( 'tildeop'がセットされてれば) - |g~| g~ 大文字/小文字を入れ換える - |gu| gu 小文字にする - |gU| gU 大文字にする - |!| ! 外部コマンドを使ってフィルターに通す - |=| = 'equalprg' を使ってフィルターに通すか、値が空であれば - C のインデントを行う - |gq| gq テキストを整形する - |g?| g? ROT13 エンコーディング - |>| > 右にシフトする - |<| < 左にシフトする - |zf| zf 折り畳みを作成する - |g@| g@ オプション'operatorfunc'に設定された関数を呼ぶ - -移動コマンドにカウントが前置されていてかつオペレータコマンドにカウントが前置さ -れていれば2つのカウントが掛け合わされます。例: "2d3w" は6つの単語を削除します。 - -オペレータが終了すると、カーソルはだいたいオペレータを受けたテキストの始めに置 -かれます。例えば、"yfe"はカーソルを動かしませんが、"yFe"はカーソルをヤンクのス -タートした"e"の左側に移動します。 - *linewise* *characterwise* -オペレータはすべての行もしくは初めと終わりの位置の間の文字に対して施されます。 -一般的に、行ごとに移動するコマンドは行に対して施され(行指向)、行内を移動するコ -マンドは文字ごとに施されます(文字指向)。しかしながらいくつかの例外はあります。 - - *exclusive* *inclusive* -文字指向の移動は内包的(inclusive)か排他的(exclusive)のどちらかです。内包的な場 -合は移動の最初と最後の位置がオペレータの対象に含まれますが、排他的な場合はバッ -ファの最後に向かって最後の文字は対象に含まれません。行指向の移動は常に最初と最 -後の位置が含まれます。 - -どの移動コマンドが行指向であり、内包的であり、排他的であるかはコマンドのそばに -書かれています。しかしながら2つの例外があります: - -1. 移動コマンドが排他的で移動後の位置が1桁目であれば、移動の最後は一行前の行の - 最後に動かされ、移動コマンドは内包的になります。例: "}" は段落の後の最初の - 行まで移動しますが "d}" はその行を含めません。 - *exclusive-linewise* -2. 移動コマンドが排他的で、移動後の位置が1桁目でかつ移動初めの位置がその行の最 - 初の非空白文字かその手前の位置であれば、移動コマンドは行指向になります。 - 例: 段落が空白文字で始まっていて、カーソルが最初の非空白文字に位置している - とすれば "d}" は段落中のすべての行を最初の空白も含めて削除します。それから - put コマンドを行えば削除された行はカーソルの位置の下から挿入されます。 - -オペレータが待機しているとき(オペレータコマンドがタイプされていて移動コマンド -はまだタイプされていない状態)でのみ動作するマップを作成することができます。 -参照: |:omap| - -初めにオペレータコマンドを指定してそれから移動コマンドを打つ、という風にするか -わりにビジュアルモードを使うこともできます: テキストの最初を "v" でマークして -からカーソルをテキストの終わりまで移動させます。そうするとその範囲にたいしてオ -ペレータコマンドを打つことで処理を施すことができます。テキストの初めとカーソル -位置の間はハイライトされていますので、どの部分のテキストにオペレータが施される -のかを目で確認することができます。こうすることで自由度が上がりますが、打ち込む -キーストロークは増え、そしてリドゥ機能が制限されます。ビジュアルモードの章もご -覧下さい。 -|Visual-mode| - -移動に ":" コマンドを使うことが出来ます。例えば "d:call FindEnd()"。しかし、コ -マンドが1行以上になると "." で繰り返すことが出来ません。 -これは繰り返せます: > - d:call search("f")<CR> -これは繰り返せません: > - d:if 1<CR> - call search("f")<CR> - endif<CR> - - -移動を行指向、文字指向、ブロック指向にする - -移動があなたの望むタイプと違う場合は、オペレータコマンドの後に "v", "V", -CTRL-V を使うことで別のタイプにすることができます。 -例: > - dj -は2行を削除します。 > - dvj -はカーソル位置からカーソルの1個下の文字の手前までを削除します。 > - d<C-V>j -はカーソル位置とカーソルの1個下の文字を削除します。 > - -行指向の移動に文字指向・ブロック指向の移動をさせるときは注意してください。桁が -必ずしも定義されていないかもしれません。 - - *o_v* -v オペレータコマンドと移動コマンドの間で使われたとき: 移動コマン - ドが行指向であっても、オペレータコマンドが文字指向で機能するよ - うにします。移動コマンドが行指向のときは排他的 |exclusive| に - なります。移動コマンドが既に文字指向の場合には、内包的/排他的 - を切り替えます。これによって排他的な移動を内包的にしたり、その - 逆にしたりできます。 - - *o_V* -V オペレータコマンドと移動コマンドの間で使われたとき: 移動コマン - ドが文字指向であっても、オペレータコマンドが行指向で機能するよ - うにします。 - - *o_CTRL-V* -CTRL-V オペレータコマンドと移動コマンドの間で使われたとき: オペレータ - コマンドがブロック指向で機能するようにします。これは移動の前後 - のカーソル位置を端点とする矩形範囲を選択したのと同じように動作 - します。 - -============================================================================== -2. 左右の移動 *left-right-motions* - -この節で説明するコマンドはどれも、カーソルをカレント行の指定の位置に移動させま -す。これらのコマンドは行の先頭と末尾でストップします。例外は "$" で、カウント -を指定した場合は下の行へ移動します。'whichwrap' をオンにすると、これらのコマン -ドが行をまたいで移動するようになります。 - -h or *h* -<Left> or *<Left>* -CTRL-H or *CTRL-H* *<BS>* -<BS> [count] 文字左に移動します|exclusive| - 注: <BS> キーには文字を削除させたければ次のマッピング - を使ってください: - :map CTRL-V<BS> X - ("CTRL-V<BS>" を入力するには CTRL-V キーをタイプした後 - <BS> キーをタイプしてください) - <BS> キーがうまく動作しない場合は |:fixdel| を参照して - ください。 - -l or *l* -<Right> or *<Right>* *<Space>* -<Space> [count] 文字右に移動します|exclusive| - - *0* -0 その行の最初の文字に移動します|exclusive|。 - - *<Home>* *<kHome>* -<Home> その行の最初の文字に移動します|exclusive|。 - 上下に移動するときは同じ論理桁位置に留まります。(可能 - であれば)。他のほとんどのコマンドは同じ物理桁位置に留 - まります。<Home>は"1|" と同じように動作し、"0"との違い - は行が <Tab> で始まる場合です。{Vi にはない機能です} - - *^* -^ その行の最初の非空白文字に移動します|exclusive|。 - - *$* *<End>* *<kEnd>* -$ or <End> その行の最後に移動し、そして [count - 1] 行下に移動し - ます|exclusive|。 - ビジュアルモードではカーソルは行の最後の文字の後へ移動 - します。 - 'virtualedit' がオンのときには、"$" によってカーソルが - 行末の先から行の最後の文字へバックするかもしれません。 - - *g_* -g_ [count - 1]行下の最後の非空白文字へ移動|inclusive|。 - {Vi にはない} - - *g0* *g<Home>* -g0 or g<Home> 行が折り返されている場合( 'wrap' オン): スクリーン行の - 初めの文字に移動|exclusive|。スクリーンより広い行の - 場合に "0" と違う動作になります。 - 行が折り返されていない場合は( 'wrap' オフ): スクリーン上 - の現在の行でもっとも左の文字に移動します。最初の文字が - スクリーン上にない場合に "0" とは違う動作になります。 - {Vi にはない機能です} - - *g^* -g^ 行が折り返されている場合( 'wrap' オン): スクリーン行の - 最初の非空白文字に移動します|exclusive|。スクリーンよ - り広い行の場合に "^" とは違う動作になります。行が折り - 返されていない場合は( 'wrap' オフ): スクリーン上の現在 - の行でもっとも左側にある非空白文字に移動します。最初の - 非空白文字がスクリーン上にない場合に "^" とは違う動作 - になります。 {Vi にはない機能です} - - *gm* -gm "g0" とにていますがスクリーンの幅の真ん中に移動します - (もしくは可能な限り真ん中に向かって右に)。{Vi にはない - 機能です} - - *g$* *g<End>* -g$ or g<End> 行が折り返されている場合( 'wrap' オン): スクリーン行の - 最後の文字に、そして [count - 1] スクリーン行下に移動 - します|inclusive|。行がスクリーンより広い場合に "$" - と違う動作になります。 - 行が折り返されていない場合( 'wrap' オフ): スクリーン上 - に表示されている現在の行の文字のうち最も右に位置するも - のに移動します。行の最後の文字がスクリーン上にないかカ - ウントが使われた場合に "$" とは違う動作になります。 - さらに、縦方向への移動は、行末でなく同じ桁になります。 - {Vi にはない機能です} - - *bar* -| 現在の行の [count] スクリーン桁位置に移動します - |exclusive|。Ceci n'est pas une pipe. - (訳注: 「これはパイプではない」。同名のマグリットの絵 - がある) - - *f* -f{char} 右に向かって [count] 番目に現れる {char} に移動し、 - カーソルがその {char} 上に置かれます|inclusive|。 - {char} は digraph |digraph-arg| でも構いません。 - 'encoding' が Unicode にセットされているときは、 - composing character が使えます。|utf-8-char-arg| を参 - 照。 - |:lmap| マッピングが {char} に適用されます。インサート - モード時の CTRL-^ コマンドでこれの on/off を切り替え - られます|i_CTRL-^|。 - - *F* -F{char} 左に向かって [count] 番目に現れる {char} に移動し、 - カーソルがその {char} 上に置かれます|exclusive|。 - {char} は |f| コマンドと同様に入力できます。 - - *t* -t{char} 右に向かって [count] 番目に現れる {char} まで移動しま - す。カーソルは {char} の左側の文字に置かれます - |inclusive|。 - {char} は |f| コマンドと同様に入力できます。 - - *T* -T{char} 左に向かって [count] 番目に現れる {char} まで移動しま - す。カーソルは {char} の右側の文字に置かれます - |exclusive|。 - {char} は |f| コマンドと同様に入力できます。 - - *;* -; [count] 回最後の f, t, F, T を繰り返します。 - |cpo-;| 参照。 - - *,* -, [count] 回最後の f, t, F, T を反対方向に繰り返します。 - |cpo-;| 参照。 - -============================================================================== -3. 上下の移動 *up-down-motions* - -k or *k* -<Up> or *<Up>* *CTRL-P* -CTRL-P [count] 行上に移動(行指向) - -j or *j* -<Down> or *<Down>* -CTRL-J or *CTRL-J* -<NL> or *<NL>* *CTRL-N* -CTRL-N [count] 行下に移動(行指向) - -gk or *gk* *g<Up>* -g<Up> [count] 表示行上に移動|exclusive|。行が折り返されている - 場合とオペレータコマンドとともに使われた場合は 'k' と - 違う動作になります(行指向ですから)。{Vi にはない機能で - す} - -gj or *gj* *g<Down>* -g<Down> [count] 表示行下に移動|exclusive|。行が折り返されている - 場合とオペレータコマンドとともに使われた場合は 'j' と - 違う動作になります(行指向ですから)。{Vi にはない機能で - す} - - *-* -- <minus> [count] 行上の最初の非空白文字に移動します(行指向) - -+ or *+* -CTRL-M or *CTRL-M* *<CR>* -<CR> [count] 行下の最初の非空白文字に移動します(行指向) - - *_* -_ <underscore> [count] -1 行下の最初の非空白文字に移動します(行指向) - - *G* -G [count] 行目の最初の非空白文字に移動します(行指向) - カウントの前置がなければ最後の行に移動します。 - 'startofline' がセットされていなければ同じ桁位置に移動 - します。 - G はジャンプモーション (|jump-motions|) です。 - - *<C-End>* -<C-End> [count] 行目へ移動|inclusive|。カウントの前置がなければ - 最後の行の最後の文字へ移動します。 - {Vi にはない} - -<C-Home> or *gg* *<C-Home>* -gg [count] 行目の最初に非空白文字に移動します(行指向) - カウントの前置がなければ最初の行に移動します。 - 'startofline' がセットされていなければ同じ桁位置に移動 - します。 - -:[range] [range] 内の最後の行へカーソルを移動します。[range] - は単に 1 個の数字であってもかまいません。例: ":1" や - ":'m"。 - |G| と違ってこのコマンドはジャンプリスト (|jumplist|) - を変更しません。 - *N%* -{count}% ファイルの {count} パーセントの位置の最初の非空白文字 - にに移動します(行指向)。新しい行番号を計算するのに次の - 式が使われます: - ({count} * number-of-lines + 99) / 100 - 'startofline' オプションも参照してください。 - {Vi にはない機能です} - -:[range]go[to] [count] *:go* *:goto* *go* -[count]go バッファ中の {count} バイト目に移動します。デフォルト - では [count] は1で、ファイルの最初になっています。 - [range] が指定された場合は最後の数字が使われます。行の - 終わりを示す文字が数えられるかどうかは 'fileformat' の - 設定によります。 - |line2byte()| 関数と 'statusline' の 'o' オプションも - 参照。 - {Vi にはない機能です} - {|+byte_offset|機能なしでコンパイルされた場合は使えませ - ん} - -これらのコマンドは指定された行に移動します。最初の行もしくは最後の行に到達した -場合はそれ以上動きません。最初の2つのコマンドはカーソルを桁位置を変更する最後 -のコマンドの後の位置と(可能であれば)同じ桁位置に動かします。"$" コマンドは例外 -でカーソルは行の最後の位置に置かれます。 - -[count]をつけて"k", "-", CTRL-Pを実行したが、カーソルより上に[count]分の行がな -かった場合、オプション'cpo'がフラグ"-"を含むならばエラーになります。|cpo--| - -============================================================================== -4. 単語単位の移動 *word-motions* - -<S-Right> or *<S-Right>* *w* -w [count] word 前方に。|exclusive| - -<C-Right> or *<C-Right>* *W* -W [count] WORD 前方に。|exclusive| - - *e* -e [count] word 前方の単語の終わりに。|inclusive| - w や b と異なり、空行では止まりません。 - - *E* -E [count] WORD 前方の単語の終わりに。|inclusive| - w や b と異なり、空行では止まりません。 - -<S-Left> or *<S-Left>* *b* -b [count] word 後方に。|exclusive| - -<C-Left> or *<C-Left>* *B* -B [count] WORD 後方に。|exclusive| - - *ge* -ge [count] word 後方の単語の最後に。|inclusive| - - *gE* -gE [count] WORD 後方の単語の最後に。|inclusive| - -これらのコマンドは word もしくは WORD 単位で移動します。 - *word* -word はアルファベット、数字、アンダースコア、もしくは他の非空白文字の連続で構 -成され、ホワイトスペース(スペース、タブ、<EOL>)で区切られます。これらは -'iskeyword' オプションで変更することができます。空行もwordとみなされます。 - *WORD* -WORD は非空白文字の連続で構成され、ホワイトスペースで区切られます。空行もまた -1つの word と WORD と見做されます。 - -折り畳まれた一連の行は1文字からなる1単語と数えられます。"w" と "W", "e" と"E" -は折り畳まれた行の範囲の後の最初の word や WORD の初め/終わりに移動します。 -"b" と "B" は折り畳みの前の最初の word や WORD の初めに移動します。 - -特殊なケース: カーソルが非空白文字の上にあれば "cw" と "cW" は "ce" と "cE" の -ように扱われます。これは "cw" が単語を変更するコマンドだと解釈されるからで、単 -語には続くホワイトスペースは含まれていないからです。{Vi: 後に空白文字が続く空 -白文字上で "cw" を実行した場合最初の空白文字のみが変更されました; これはおそら -くバグです。なぜなら "dw" はすべての空白文字を削除するからです} - -もう一つの特殊なケース: オペレータコマンドと移動コマンド "w" を組み合わせたと -カーソルがその上を移動した最後の単語が行末にあった場合、その単語の終わりがオペ -レータの対象になるテキストの終わりになります。次の行の最初の単語ではありません。 - -オリジナルの Vi の "e" の実装はかなりバギーでした。例えば、前の行が空行であっ -た場合 "e" コマンドを打っても行の最初の文字に止まったままになりました。しかし -"2e" と打つとこのことは起こりません。Vim では "ee" と "2e" は同じで、こちらの -方が理にかなっています。しかしながら、このことは Vi と Vim との間に少しインコ -ンパチビリティを生じさせていることになります。 - -============================================================================== -5. オブジェクト単位で移動 *object-motions* - - *(* -( [count] 文後方に。|exclusive| - - *)* -) [count] 文前方に。|exclusive| - - *{* -{ [count] 段落後方に。|exclusive| - - *}* -} [count] 段落前方に。|exclusive| - - *]]* -]] [count] セクション前方に、もしくは1桁目が '{' で始まる - 次の場所に。オペレータコマンドの後で使われた場合は1桁 - 目が '}' の場所に(行指向) - Note しばしば|exclusive-linewise|になる。 - - *][* -][ [count] セクション前方に、もしくは1桁目が '}' で始まる - 次の場所に(行指向) - Note しばしば|exclusive-linewise|になる。 - - *[[* -[[ [count] セクション後方に、もしくは1桁目が '{' で始まる - 前の場所に(行指向) - Note しばしば|exclusive-linewise|になる。 - - *[]* -[] [count] セクション後方に、もしくは1桁目が '}' で始まる - 前の場所に(行指向) - Note しばしば|exclusive-linewise|になる。 - -これらのコマンドは3種類のテキストのまとまりの単位で移動します。 - - *sentence* -文は '.', '!', '?' で終わり、その後に行末かスペースもしくはタブが続くものとし -て定義されます。任意の数の閉じ ')', ']', '"', ''' 文字が '.', '!', '?' の後 -に、そして改行もしくはスペースかタブの前に現れてもよいです。段落とセクションの -境界は文の境界でもあります。文の定義を変更することはできません。 -もし 'J' フラグが 'cpoptions' にある場合は句読点の後に少なくとも二つのスペース -がある必要があります; <Tab>s はホワイトスペースとして認識されません。文の定義 -を変更することはできません。 - - *paragraph* -段落はそれぞれ空行の後から始まり、そしてまた段落マクロのセットからそれぞれ始ま -ります。段落マクロは 'paragraphs' オプションで指定されている文字のペアです。デ -フォルトで "IPLPPPQPP TPHPLIPpLpItpplpipbp" で、".IP", ".LP", などのマクロに一 -致します(これらは nroff のマクロです。ですのでドットは1桁目になければなりませ -ん)。セクションの境界は段落の境界でもあります。空行(ホワイト・スペースのみを含 -む行)は、パラグラフの境界ではないということに注意してください。 -これは '{' か '}' を1桁目には含んでいないということにも注意してください。 -'cpoptions'にフラグ"{"が入っていると1桁目の"{"がパラグラフの境界とみなされるよ -うになります。|posix| - - *section* -セクションは1桁目の改ページ(form-feed)(<C-L>)の後から始まり、そしてセクション -マクロのセットからそれぞれ始まります。セクションマクロは 'sections' オプション -で定義される文字のペアです。デフォルトは "SHNHH HUnhsh" で ".SH", ".NH",".H", -".HU", ".nh", ".sh" といった nroff マクロでセクションを開始するものを定義して -います。 - -"]" と "[" コマンドは1桁目の '{' もしくは '}' でストップします。これは C のプ -ログラムで関数の最初か最後を見つけるのに便利です。2番目にタイプされたタイプの -括弧が探されるということに留意しておいてください。 - -もし '{' か '}' が1桁目にはないけれど、とにかく "[[" と "]]" を使って検索した -い場合は次のマッピングを使ってみてください: > - :map [[ ?{<CR>w99[{ - :map ][ /}<CR>b99]} - :map ]] j0[[%/{<CR> - :map [] k$][%?}<CR> -[これらはそのままタイプしてください。参照 |<>|] - -============================================================================== -6. オブジェクト単位で選択 *object-select* *text-objects* - *v_a* *v_i* - -次のものはビジュアルモードかオペレータコマンドの後でのみ使うことができる一連の -コマンドを示しています。"a" で始まるコマンドは "a"n(1つの) まとまりをホワイト -スペースを含めて選択します。"i" で始まるコマンドはまとまりの "inner"(内部)をホ -ワイトスペースを含まずに選択するか、もしくはホワイトスペースのみを選択します。 -ですので、"inner" コマンドはつねに "a" コマンドより少なくテキストを選択するこ -とになります。 - -これらのコマンドは {Vi にはない機能です} -これらのコマンドはコンパイル時に |+textobjects| 機能を無効にしていた場合には -使えません。 - *v_aw* *aw* -aw "a word"、[count] word 選択します(参照 |word|)。 - 単語の前後に続いているホワイトスペースもともに含められ - ますがカウントはされません。 - 行指向ビジュアルモードで使われたときは、"aw" は文字単 - 位ビジュアルモードに切り替えます。 - - *v_iw* *iw* -iw "inner word"、[count] word 選択します(参照 |word|)。 - word の間のホワイトスペースもカウントされます。 - 行指向ビジュアルモードで使われたときは、"iw" は文字単 - 位ビジュアルモードに切り替えます。 - - *v_aW* *aW* -aW "a WORD"、[count] WORD 選択します(参照 |WORD|)。 - 単語の前後に続いているホワイトスペースも含められます - がカウントはされません。 - 行指向ビジュアルモードで使われたときは、"aW" は文字単 - 位ビジュアルモードに切り替えます。 - - *v_iW* *iW* -iW "inner WORD"、[count] WORD 選択します(参照 |WORD|)。 - ホワイトスペースもカウントされます。 - 行指向ビジュアルモードで使われたときは、"iW" は文字単 - 位ビジュアルモードに切り替えます。 - - *v_as* *as* -as "a sentence" [count] 文選択します(参照 |sentence|)。 - ビジュアルモードで使われたときは、文字指向になります。 - - *v_is* *is* -is "inner sentence" [count] 文の内部を選択します(参照 - |sentence|)。 - ビジュアルモードで使われたときは、文字指向になります。 - - *v_ap* *ap* -ap "a paragraph" [count] 段落選択します(参照 - |paragraph|)。 - 例外:空行(空白だけからなる)も段落の境界になります。 - ビジュアルモードで使われたときは、行指向になります。 - - *v_ip* *ip* -ip "inner paragraph" [count] 段落の内部を選択します(参照 - |paragraph|)。 - 例外:空行(空白だけからなる)も段落の境界になります。 - ビジュアルモードで使われたときは、行指向になります。 - -a] *v_a]* *v_a[* *a]* *a[* -a[ "a [] block" [count] '[' ']' block を選択します。この - コマンドは後方に [count] 番目に現れる '[' を探し、それ - から対応する ']' を探します。そしてその2つに囲まれたテ - キストを '[' と ']' も含めて選択します。 - ビジュアルモードで使われたときは、文字指向になります。 - -i] *v_i]* *v_i[* *i]* *i[* -i[ "inner [] block" [count] '[' ']' block の内部を選択し - ます。このコマンドは後方に [count] 番目に現れる '[' を - 探し、それから対応する ']' を探します。そしてその2つに - 囲まれたテキストを '[' と ']' を除いて選択します。 - ビジュアルモードで使われたときは、文字指向になります。 - -a) *v_a)* *a)* *a(* -a( *v_ab* *v_a(* *ab* -ab "a block" [count] block 選択します。"[count] [(" から - それに対応する ')' までで、'(' と ')' を含みます(参照 - |[(|)。括弧の外側の空白は含みません。 - ビジュアルモードで使われたときは、文字指向になります。 - -i) *v_i)* *i)* *i(* -i( *v_ib* *v_i(* *ib* -ib "inner block" [count] block の内部を選択します。 - "[count] [(" からそれに対応する ')' までで、'(' と ')' - を除きます(参照 |[(|)。 - ビジュアルモードで使われたときは、文字指向になります。 - -a> *v_a>* *v_a<* *a>* *a<* -a< "a <> block" [count] <> block 選択します。[count] 番 - 目に現れる '<' を検索し、それに対応する '>' までを '<' - と '>' を含めて選択します。 - ビジュアルモードで使われたときは、文字指向になります。 - -i> *v_i>* *v_i<* *i>* *i<* -i< "inner <> block" [count] <> block の内部を選択します。 - [count] 番目に現れる '<' を検索し、それに対応する '>' - までを '<' と '>' を除いて選択します。 - ビジュアルモードで使われたときは、文字指向になります。 - - *v_at* *at* -at "a tag block" [count]個のタグブロックを選択します。 - 後方の[count]番目の対応しない"<aaa>"からそれに対応する - "</aaa>"までを含みます。詳しくは|tag-blocks|を参照して - ください。ビジュアルモードで使われたときは文字指向にな - ります。 - - *v_it* *it* -it "inner tag block" [count]個のタグブロックを選択します。 - 後方の[count]番目の対応しない"<aaa>"からそれに対応する - "</aaa>"までで、"<aaa>"と"</aaa>"を除きます。詳しくは - |tag-blocks|を参照してください。ビジュアルモードで使わ - れたときは文字指向になります。 - -a} *v_a}* *a}* *a{* -a{ *v_aB* *v_a{* *aB* -aB "a Block" [count] Block 選択します。"[count] [{" から - それに対応する '}' までで '{' と '}' を含みます(参照 - |[{|)。 - ビジュアルモードで使われたときは、文字指向になります。 - -i} *v_i}* *i}* *i{* -i{ *v_iB* *v_i{* *iB* -iB "inner Block" [count] Block 選択します。"[count] [{" か - らそれに対応する '}' までで '{' と '}' を除きます(参照 - |[{|)。 - ビジュアルモードで使われたときは、文字指向になります。 - -a" *v_aquote* *aquote* -a' *v_a'* *a'* -a` *v_a`* *a`* - "a quoted string"。前の引用符から次の引用符までを選択 - します。オプション'quoteescape'を使ってエスケープされ - た引用符をスキップします。 - 1行内でだけ動作します。 - カーソルを引用符の上において実行されると、行の先頭から - 検索し、どの引用符のペアが文字列をなすかを調べます。 - 後に空白文字があると、それも含まれます。ない場合、前に - 空白文字があれば含まれます。 - ビジュアルモードで使われたときは文字指向になります。 - ビジュアルモードでこのオブジェクトが繰り返し使われると、 - 別の文字列を含むように選択範囲を拡大します。現在のとこ - ろ、カウントは使われません。 - -i" *v_iquote* *iquote* -i' *v_i'* *i'* -i` *v_i`* *i`* - a", a', a`と同様ですが、引用符を含まず、繰り返し使われ - たとき選択範囲を拡大しません。 - 特別な場合: カウントに2が指定された場合引用符が含まれ - ます。ただしa"/a'/a`とは違い、前後の空白文字は含まれま - せん。 - -オペレータコマンドの後に使われた場合: -ブロック以外のオブジェクト: - "a" コマンド: オペレータコマンドはオブジェクトとオブジェクトの後に続く - ホワイトスペースに対して施されます。オブジェクトの後にホワイトスペース - がないか、もしくはオブジェクトの前のホワイトスペースにカーソルが位置し - ている場合オブジェクトの前のホワイトスペースも含まれます。 - "inner" コマンド: カーソルがオブジェクト上にあればオペレータコマンドは - オブジェクトに対して施されます。カーソルがホワイトスペース上にあればホ - ワイトスペースにたいして施されます。 -ブロックオブジェクト: - オペレータコマンドはカーソルがその内側に位置しているブロック、もしくは - 囲んでいる括弧上にカーソルがあるブロックに対して施されます。"inner" コ - マンドは囲んでいる括弧以外に対して施され、"a" コマンドの場合は括弧も含 - められます。 - -ビジュアルモードで使われた場合: -ビジュアル範囲の初めと終わりが同一の場合(単に "v" と打っただけの場合): - オペレータコマンドを使う場合と同様1つのオブジェクトが選択されます。 -ビジュアル範囲の初めと終わりが同一でない場合: - ブロック以外のオブジェクトの場合はビジュアル範囲を1オブジェクト分広げる - かもしくは次のオブジェクトまでのホワイトスペースまで広げます。"a" オブ - ジェクトの場合はそれら両方を含みます。広げる方向はカーソルがビジュアル - 範囲のどちら側にあるかによります。つまりブロックオブジェクトの場合はブ - ロックは1レベル外側に広げられます。 - -実例として削除コマンドのリストを挙げます。小さいオブジェクトから大きいオブジェ -クトの順で並べられています。1文字と行全体の削除については今までにも存在してい -た vi 移動コマンドが使われているということに注意してください。 - "dl" 1文字削除 ("x" と同じです) |dl| - "diw" inner word を削除 *diw* - "daw" a word を削除 *daw* - "diW" inner WORD を削除 (参照: |WORD|) *diW* - "daW" a WORD を削除 (参照: |WORD|) *daW* - "dd" 1行削除 |dd| - "dis" inner sentence を削除 *dis* - "das" a sentence を削除 *das* - "dib" inner '(' ')' block を削除 *dib* - "dab" a '(' ')' block を削除 *dab* - "dip" inner paragraph を削除 *dip* - "dap" a paragraph を削除 *dap* - "diB" inner '{' '}' Block を削除 *diB* - "daB" a '{' '}' Block を削除 *daB* - -移動コマンドを使う場合とオブジェクトを使う場合の違いに留意しておいてください。 -移動コマンドの場合はカーソルの位置から移動後の位置までに処理を施します。 -オブジェクトを使った場合はカーソルがオブジェクトの中のどこに位置していてもオペ -レータはオブジェクト全体に施されます。例として "dw" と "daw" を比べてみましょ -う: "dw" はカーソルの位置から次の word の初めまでを削除し、"daw" はカーソルの -位置の単語と前後のスペースを削除します。 - -タグブロック *tag-blocks* - -テキストオブジェクト"it"と"at"ではHTMLやXMLの対応するタグの間のブロックを選択 -しようとします。しかしこれらは完全な互換ではないため、いくつかの制限があります。 - -通常の方法は<tag>から対応する</tag>までを選択します。"at"はそのタグ自身を含み、 -"it"はタグ自身を除きます。しかし"it"が繰り返し使われるとタグ自身が含まれます( -そうでないと何も変わらない)。また、中身がなにもないタグブロックの上で"it"を使 -うと開始タグが選択されます。 - -"<aaa/>"はスキップされます。本来XMLでは大文字・小文字の違いは区別されますが、 -Vimはその違いを無視します。 - -HTMLでは<br>や<meta ...>のように対応する終了タグを持たないタグもありえます。こ -れらは無視されます。 - -このテキストオブジェクトはミスも許容します。対応する開始タグがない終了タグは無 -視されます。 - -============================================================================== -7. マーク *mark-motions* *E20* *E78* - -マークへジャンプするには2つの方法があります: -1. ` (バッククォート)で : カーソルは指定された位置に置かれます。|exclusive| -2. ' (シングルクォート)で: カーソルは指定された位置の行の最初の非空白文字に置 - かれ移動は行指向です。 - - *m* *mark* *Mark* -m{a-zA-Z} カーソル位置を{a-zA-Z}にマークします(これは移動コマン - ドではありません。ですのでカーソルは動きません)。 - - *m'* *m`* -m' or m` 直前位置マークをセットします。"''" もしくは "``" コマン - ドでこの位置に移動できます。(移動コマンドではありませ - ん。ですのでカーソルは動きません)。 - - *m[* *m]* -m[ or m] マーク |'[| or |']| をセットします。オペレータコマンド - が複数のコマンドでシミュレートされるときに便利です。 - (移動コマンドではありません。ですのでカーソルは動きま - せん)。 - - *:ma* *:mark* *E191* -:[range]ma[rk] {a-zA-Z'} - [range]の範囲の最後の行番号の0桁目を{a-zA-Z}にマーク - します。デフォルトはカーソル行です。 - - *:k* -:[range]k{a-zA-Z'} :mark コマンドと同じですが、マーク名の前のスペースは挿 - 入しなくてもよいです。 - - *'* *'a* *`* *`a* -'{a-z} `{a-z} カレントバッファのマーク {a-z} へジャンプ。 - - *'A* *'0* *`A* *`0* -'{A-Z0-9} `{A-Z0-9} マーク {A-Z0-9} を含むファイル・位置へジャンプ。 - (別のファイルにある場合は移動コマンドにはなりません)。 - {Vi にはない機能です} - - *g'* *g'a* *g`* *g`a* -g'{mark} g`{mark} - {mark} へジャンプするが、カレントバッファ内で移動する - 場合にはジャンプリストを変更しない。例: > - g`" -< これはファイル内の最後の記憶している位置にジャンプする。 - $VIMRUNTIME/vimrc_example.vim を参照。 - |:keepjumps|も参照。 - {Vi にはない} - - *:marks* -:marks 現在のマークを全てリストします(移動コマンドではありませ - ん)。 - |'(|, |')|, |'{| と |'}| マークはリストされません。 - 1桁目は桁番号0となります。 - {Vi にはない機能です} - - *E283* -:marks {arg} {arg} で指定されるマークをリストします(移動コマンドでは - ありません)。例: > - :marks aB -< マーク 'a'と'B' をリストします。{Vi にはない機能です} - - *:delm* *:delmarks* -:delm[arks] {marks} 指定されたマークを削除します。削除できるマークはA-Zと - 0-9などです。マーク'は削除できません。それらはダッシュ - で区切られたマーク名のリストを与えることで指定できます。 - スペースは無視されます。例: > - :delmarks a マークaを削除する - :delmarks a b 1 マークa, b, 1を削除する - :delmarks Aa マークA, aを削除する - :delmarks p-z pからzまでのマークを削除する - :delmarks ^.[] マーク^ . [ ]を削除する - :delmarks \" マーク"を削除する -< {Vi にはない} - -:delm[arks]! A-Z, 0-9を除くカレントバッファのすべてのマークを削除し - ます。 - {Vi にはない} - -マークはどのようにしても見えません。マークは単に覚えておかれるファイル中の位置 -に過ぎません。マークと名前付きレジスターを混同しないようにしてください、まった -く別のものです。 - -'a - 'z 小文字のマークです。1つのファイル中で有効です。 -'A - 'Z 大文字のマークで、ファイルマークとも呼ばれます。ファイル間でも - 有効です。 -'0 - '9 番号マークです。.viminfo ファイルによってセットされます。 - -小文字のマーク 'a から 'z まではマークのあるファイルがバッファリストに存在す -る限り覚えておかれます。もしファイルをバッファリストから削除するとそのファイ -ルに関するマーク一は全て失われます。またマークを含んでいる行を削除するとその -マークは消されます。 - -小文字のマークはオペレータコマンドとともに使うことができます。例: -"d't" は現在のカーソル位置からマーク 't' までの行を削除します。アイディア: -マーク 't' をTop 位置に設定したり、'b' を Bottom 位置に設定したりします。小文 -字のマークはアンドゥとリドゥによって復元することができます。 - -大文字のマーク 'A' から 'Z' はファイル名を含んでいます。{Vi: 大文字のマークは -ありません} ファイルからファイルに移動するのに使うことができます。大文字のマー -クをオペレータコマンドとともに使うにはマークは現在のファイルになければなりませ -ん。また大文字のマークの場合は行を挿入/削除したり一時的に他のファイルを編集し -たりしてもマークのある行番号は覚えておかれます。'viminfo' オプションの値が空で -なければ大文字のマークは .viminfo ファイルに保持されます。参照: -|viminfo-file-marks| - -番号マーク '0 から '9 まではこれらとはまったく異なります。直接セットすることは -できず、viminfo ファイル |viminfo-file| を使っている場合にのみ存在します。基本 -的に '0 は最後に Vim を終了したときのカーソル位置であり、'1 は最後から1個前の -位置、などなどです。特定のファイルを番号マークに保存しないようにするには -'viminfo'の "r" フラグを使ってください。参照: |viminfo-file-marks| - - - *'[* *`[* -'[ `[ 直前に変更またはヤンクされたテキストの最初の文字 - へ移動します。 - {Vi にはない機能です} - - *']* *`]* -'] `] 直前に変更またはヤンクされたテキストの最後の文字 - へ移動します。 - {Vi にはない機能です} - -なんらかのオペレータコマンドを実行した後は、カーソルはオペレータを施したテキス -トの初めに置かれます。プットコマンド("p" もしくは "P")の後は、カーソルは挿入さ -れた最初の行に位置する場合と最後に挿入された文字に位置する場合があります。上の -4つのコマンドはカーソルをどちらかの終わりに位置させます。例: 10行ヤンクした後、 -その行の内の最後の行に移動したい場合は: "10Y']"。数行を "p" コマンドで挿入した -後、1番下に挿入された行に移動したい場合は: "p']"。これはすでに挿入済みのテキス -トに関しても動作させることができます。 - -注: ブロック指向のビジュアルモードを使っているのでない限り、テキストの削除の後 -は始めと終わりの位置は同じです。これらのコマンドは、現在のファイルに対してまだ -変更がされていない場合は動作しません。 - - *'<* *`<* -'< `< 現在のバッファで最後に選択されたビジュアルエリアの最初 - の行('<)または最初の文字(`<)に移動します。ブロックモー - ドでは最初の行の最後の文字になる場合もあります(選択の - 開始位置による)。{Vi にはない機能です} - - *'>* *`>* -'> `> 現在のバッファで最後に選択されたビジュアルエリアの最後 - の行('<)または最後の文字(`<)に移動します。ブロックモー - ドでは最後の行の最初の文字になる場合もあります(選択の - 'selection'が適用され、位置はビジュアルエリアの直後に - 開始位置による)。{Vi にはない機能です} - - *''* *``* -'' `` カーソルがジャンプする直前にいた、もしくは最後の "m'" - か "m`" コマンドが行われた位置に移動します。 - |:keepjumps| コマンドモディファイヤが使われた場合には - セットされません。 - |restore-position| も参照。 - - *'quote* *`quote* -'" `" 現在のバッファを最後に終了した時のカーソル位置に - 移動します。デフォルトで最初の行の最初の文字に移動しま - す。それぞれの開いたファイルでこれをどのようにして使う - かについては |last-position-jump|をご覧下さい。 - ウィンドウごとに1つではなく、バッファに対して1つの位 - 置が記憶されます。バッファがあるウィンドウに表示されて - いる間はその位置は変わりません。 - {Vi にはない機能です} - - *'^* *`^* -'^ `^ 最後にインサートモードが終了したときのカーソル位置に移 - 動します。これは |gi| コマンドで使われます。 - |:keepjumps| コマンドモディファイヤが使われたときは - セットされません。 - {Vi にはない} - - *'.* *`.* -'. `. 最後に変更された場所に移動します。変更が始まった場所 - かその近くです。1つのコマンドが複数の変更をすることも - あります。その場合は、変更の最後の近くになります。例え - ば、単語を入力をしたときは、最後の文字の上になります。 - {Vi にはない} - - *'(* *`(* -'( `( |(| コマンドのように、現在の文の最初に移動します。 - {Vi にはない} - - *')* *`)* -') `) |)| コマンドのように、現在の文の最後に移動します。 - {Vi にはない} - - *'{* *`{* -'{ `{ |{| コマンドのように、現在の段落の最初に移動します。 - {Vi にはない} - - *'}* *`}* -'} `} |}| コマンドのように、現在の段落の最後に移動します。 - {Vi にはない} - -これらのコマンドは、それ自身はマークではなく、マークへジャンプします: - - *]'* -]' カーソルがある行から [count] 個先の小文字のマークがあ - る行の最初の非空白文字へ移動します。 - {Vi にはない} - - *]`* -]` カーソル位置以降の [count] 個先の小文字のマークへ移動 - します。 - {Vi にはない} - *['* -[' カーソルがある行から [count] 個前の小文字のマークがある - 行の最初の非空白文字へ移動します。 - {Vi にはない} - - *[`* -[` カーソル位置より [count] 個前の小文字のマークへ移動し - ます。 - {Vi にはない} - - -:loc[kmarks] {command} *:loc* *:lockmarks* - マークを調整することなく {command} を実行します。 - (訳注:普通にコマンドを実行したときはマーク位置が調整 - される) - これは、完了したときの行数が実行前と変わらないような変 - 更をするときに便利です。 - 注意:行数が変わった場合には、変更箇所以降のマークは以 - 前の行番号を持ち続けるので、別の行に移動することになり - ます。 - 以下のものが行の削除・挿入後に調整されません: - - 小文字のマーク 'a - 'z - - 大文字のマーク 'A - 'Z - - 番号マーク '0 - '9 - - 最後の挿入箇所 '^ - - 最後の変更箇所 '. - - ビジュアルエリア '< と '> - - 目印が設置された行の番号 - - quickfix 箇所の行番号 - - |jumplist| 内の位置 - - |tagstack| 内の位置 - 以下のものは調整されます: - - 直前の文脈マーク '' - - カーソル位置 - - the view of a window on a buffer - - 折り畳み - - diffs - -:kee[pmarks] {command} *:kee* *:keepmarks* - 現在のところ、フィルターコマンド |:range!| にだけ効果 - があります: - - フィルタリングの後の行数が実行前以上の場合、全ての - マークは同じ行番号を持ち続けます。 - - 行数が減る場合、削除された行中のマークは削除されま - す。 - どちらの場合にも、フィルタされたテキスト以降のマークは - 通常通りテキストに一致するよう調整されます。 - 'cpoptions' オプション中に 'R' フラグがない場合、これは - ":keepmarks" を使うのと同じ効果があります。 - - *:keepj* *:keepjumps* -:keepj[umps] {command} - {command}の実行中の移動でマーク |''|, |'.|, |'^| と - |jumplist| や |changelist|を変更しないようにします。 - 自動的に変更やテキストの挿入を行い、ユーザがその位置に - 行きたくないという場合に便利です。例:タイムスタンプ - "Last change" を更新するとき: > - - :let lnum = line(".") - :keepjumps normal gg - :call SetLastChange() - :keepjumps exe "normal " . lnum . "G" -< - Note ":keepjumps"はコマンドごとに使わねばなりません。 - 関数を呼び出すとその関数の中のコマンドはジャンプリスト - を変えてしまいます。また、":keepjumps exe 'command '" - とすると、この"command"はジャンプリストを変えてしまい - ます。そうでなくて":exe 'keepjumps command'"としてくだ - さい。 - -============================================================================== -8. ジャンプ *jump-motions* - -「ジャンプ」とは次のコマンドのどれかを意味します: 新しいファイルの編集を始める -コマンドと、"'", "`", "G", "/", "?","n", "N", "%", "(", ")", "[[", "]]", -"{","}", ":s", ":tag", "L", "M", "H" です。これらのコマンドのうちのどれかを -使ってカーソルを「ジャンプ」させた場合、ジャンプする前のカーソルの位置は覚えて -おかれます。その位置を含む行を削除したり変更したりしていなければ、"''" と -"``"コマンドを使ってその位置に戻ることができます。 - - *CTRL-O* -CTRL-O ジャンプリストの中の [count] だけ古いカーソル位置に移 - 動します(移動コマンドではありません)。 - {Vi にはない機能です} - {|+jumplist| 機能なしのときは使用できない} - -<Tab> or *CTRL-I* *<Tab>* -CTRL-I ジャンプリストの中の [count] だけ新しいカーソル位置に - 移動します(移動コマンドではありません)。 - |quickfix-window| 内においては、カーソル下のエラーの位 - 置に移動します。 - {Vi にはない機能です} - {|+jumplist| 機能なしのときは使用できない} - - *:ju* *:jumps* -:ju[mps] ジャンプリストを表示させます(移動コマンドではありませ - ん)。{Vi にはない機能です} - {|+jumplist| 機能なしのときは使用できない} - - *jumplist* -ジャンプはジャンプリストに覚えておかれ、CTRL-O と CTRL-I コマンドで前の古い位 -置に移動し、そして再び新しい位置に戻ることができます。このようにしてジャンプリ -ストの中を上下に移動することができます。ジャンプリストはそれぞれのウインドーで -分かれており、エントリーの最大の数は50に固定されています。 -{|+jumplist| 機能なしのときは使用できない} - -例えば、3回ジャンプを行った後ではジャンプリストは次のようになっています: - - jump line col file/text ~ - 3 1 0 some text ~ - 2 70 0 another line ~ - 1 1154 23 end. ~ - > ~ - -"file/text" 欄はファイル名か現在のファイルであればジャンプするテキストを表示し -ています(インデントは取り除かれ、そして長い行はウインドーに合うように短くカッ -トされます)。 - -現在1167行目にいるとして、CTRL-O コマンドを使うとカーソルは1154行目に移動しま -す。結果として次のようになります: - - jump line file/text ~ - 2 1 some text ~ - 1 70 another line ~ - > 0 1154 end. ~ - 1 1167 foo bar ~ - -ポインターは最後に使われたジャンプ位置にセットされます。次の CTRL-O コマンドは -エントリーの上に、次の CTRL-I コマンドはエントリーの下に移動するのに使います。 -ポインターが最後のエントリーの下に位置している場合、このことは前に CTRL-I もし -くは CTRL-O を使っていないことを意味します。この場合 CTRL-O コマンドを使うと -カーソル位置がジャンプリストにくわえられます。そうしてその CTRL-O コマンドを使 -う前の位置に戻ることもできます。この場合は1167行目です。 - -さらに CTRL-O コマンドを実行することで70行目と1行目に移動し、CTRL-I コマンドを -使うことで再び1154行目と1167行目に戻ることができます。"jump" 欄の数はこの場所 -に移動するのに何回の CTRL-O もしくは CTRL-I コマンドが必要なのかを示しているこ -とも覚えておいてください。 - -ジャンプコマンドを使うと現在の行がジャンプリストの最後に加えられます。同じ行が -すでにジャンプリストにあった場合はそれは削除され、結果としては CTRL-O を繰り返 -していると以前の場所には一度だけ戻ることになります。 - -|:keepjumps|コマンド修飾子が使われた場合、ジャンプ操作はリストに記憶されませ -ん。また、他の場合にもジャンプ操作は記憶されません。例. |:global|の中。 -明示的にジャンプリストに追加するにはマーク'を設定します。 - -CTRL-O コマンドを行って1154行目に移動した後、他のジャンプコマンド(例えば: "G") -を実行したとするとジャンプリストは次のようになります: - - jump line col file/text ~ - 4 1 0 some text ~ - 3 70 0 another line ~ - 2 1167 0 foo bar ~ - 1 1154 23 end. ~ - > ~ - -行が削除されたり挿入された場合は行番号も調整されますが、保存しないで(":n!" コ -マンドなどを使って)編集を中断した場合は失敗します。 - -ウィンドウを分割すると、ジャンプリストは新しいウィンドウにコピーされます。 - -'viminfo' オプションに項目 ' を含めていると、viminfo ファイルにジャンプリスト -が保存され、Vim を起動したときに復元されます。 - - -変更リストへのジャンプ *changelist* *change-list-jumps* *E664* - -変更がなされたとき、カーソル位置が記憶されます。アンドゥできる全ての変更に対 -し、それが前の変更に近くない限り、1つの位置が記憶されます。変更点やアンドゥさ -れた位置へジャンプするのに、以下の2つのコマンドを使うことができます。 - - *g;* *E662* -g; 変更リスト中の [count] 個前の位置に移動します。 - [count] が前の変更箇所の数より大きければ、最も古い変更 - 箇所へ移動します。 - それ以上古い変更が無ければエラーメッセージが表示されま - す。(移動コマンドではありません) - {Vi にはない} - {|+jumplist| 機能なしのときは使用できない} - - *g,* *E663* -g, 変更リスト中の [count] 個後の位置に移動します。 - |g;| の逆方向で、あとは同様です。 - (移動コマンドではありません) - {Vi にはない} - {|+jumplist| 機能なしのときは使用できない} - -count を使うと、可能な限り前/後にジャンプできます。つまり、"999g;" とすると -履歴に残っている最初の変更箇所へジャンプできます。変更リストのエントリの数は固 -定されていて、|jumplist| のものと同じです。 - -アンドゥ可能な変更が2回、同じ行の 'textwidth' よりも小さい桁で行われたときは、 -後者だけが記憶されます。これは "xxxxx" のような一連の小さな変更をリストに残す -のを避けるためです。'textwidth' が 0 のときは 'wrapmargin' が使われます。 -'wrapmargin' もセットされていないときは 79 となります。詳細:速度が落ちるのを -避けるため、計算には文字数でなくバイト数が使われます(これはマルチバイトエン -コーディングに対してのみ関係します)。 - -テキストが挿入または削除されると、カーソル位置が変更箇所と少しずれるかもしれま -せん。(特に行が削除されたときは) - -|:keepjumps| コマンドモディファイヤが使われたときは変更箇所は記憶されません。 - - *:changes* -:changes 変更リストを表示します。文字 ">" のついているエントリ - は現在の位置であることを示しています。変更が行われると - ">" は最新のエントリの下になり、"g;"で最新のエントリの - 場所に移動できることを表します。1列目はその場所に移動 - するのに必要な count を示しています。例: - - change line col text ~ - 3 9 8 bla bla bla - 2 11 57 foo is a bar - 1 14 54 the latest changed line - > - - "3g;" とすると9行目に移動します。すると次の ":changes" - の出力はこうなります: - - change line col text ~ - > 0 9 8 bla bla bla - 1 11 57 foo is a bar - 2 14 54 the latest changed line - - この状態で "g," とすると11行目に移動し、"2g," とすると - 14行目に移動します。 - -============================================================================== -9. 様々な移動 *various-motions* - - *%* -% 現在の行のカーソルの後もしくは下の次のアイテムを検索し - その対応するものにジャンプします|inclusive|。アイテム - は次のものです: - ([{}]) 丸括弧もしくは(ねじれ/四角)括弧 - (これは 'matchpairs' オプションで変更で - きます) - /* */ C スタイルのコメントの始めと終わり - #if, #ifdef, #else, #elif, #endif - C プリプロセッサー条件命令(カーソルが - # の上にあるか ([{ が後にないとき) - 他のアイテムに対しては matchit プラグインが使えます。 - |matchit-install| を参照。このプラグインを使うと、コ - メント内の対応する括弧をスキップするという効果もありま - す。 - - 'cpoptions' が "M" |cpo-m| を含んでいる場合、丸括弧と - 大括弧の前のバックスラッシュは考慮されません。"M" がな - い場合はバックスラッシュの数が考慮され、偶数個と奇数個 - は対応しないようになります。つまり、" ( \) )" や - "\( ( \)"となっているとき、それぞれ最初と最後の括弧が - 対応します。 - - '%' 文字 |cpo-%| が 'cpoptions' にない場合、一つの行の - 中の丸括弧/大括弧の数が偶数ではなく、そして現在行と1 - つ前の行がバックスラッシュで終わっていない限り、二重引 - 用符の中の丸括弧と大括弧は無視されます。 - '(', '{', '[', ']', '}', ')も無視されます(シングル引用 - 符の中の丸括弧と大括弧)。このことは C ではうまく動作し - ますが Perl ではあんまりうまくないことに注意してくださ - い。Perl では文字列にシングル引用符も使われるのです。 - - コメント内にある括弧もそうでない括弧も同様に扱われま - す。matchit プラグイン |matchit-install| を使うか、コ - メント内の括弧に対しては前後に引用符を書くことで、コメ - ント内の括弧を認識して区別できます。 - - カウントの前置はできません({count}% はファイルの - {count} パーセントの位置に移動します)。'%' を - #if/#else/#endif 上で使うと動作は行指向になります。 - - *[(* -[( [count] 前のマッチするものがない '(' に移動します。 - |exclusive|{Vi にはない機能です} - - *[{* -[{ [count] 前のマッチするものがない '{' に移動します。 - |exclusive|{Vi にはない機能です} - - *])* -]) [count] 次のマッチするものがない ')' に移動します。 - |exclusive|{Vi にはない機能です} - - *]}* -]} [count] 次のマッチするものがない '}' に移動します。 - |exclusive|{Vi にはない機能です} - -上の4つのコマンドは現在のコードブロックの最初か最後に移動するのに使うことがで -きます。'(', ')', '{', '}' 上で "%" コマンドを実行するのに似ていますが、この場 -合コードブロック内のどこにいても実行することができます。C プログラムで非常に役 -に立ちます。例: "case x:" にいる時に "[{" を実行することで switch 文の所に戻り -ます。 - - *]m* -]m [count]次のメソッドの始めに移動します(Javaもしくは似た - ような構造の言語用)。メソッドの始まりの前でなければ、ク - ラスの始めか終わりに移動します。カーソルの後に'{' が見 - つからなければエラーとなります。|exclusive| - {Viにはない機能です} - *]M* -]M [count]次のメソッドの終わりに移動します(Javaもしくは似 - たような構造の言語用)。メソッドの終わりの前でなければ、 - クラスの始めか終わりに移動します。カーソルの後に'}'が - 見つからなけばエラーとなります。|exclusive| - {Viにはない機能です} - *[m* -[m [count]前のメソッドの始めに移動します(Javaもしくは似た - ような構造の言語用)。メソッドの始まりの後でなければ、ク - ラスの始めか終わりに移動します。カーソルの前に '{' が見 - つからなければエラーとなります。|exclusive| - {Viにはない機能です} - *[M* -[M [count]前のメソッドの終わりに移動します(Javaもしくは似 - たような構造の言語用)。メソッドの終わりの後でなければ、 - クラスの始めか終わりに移動します。カーソルの前に'}'が見 - つからなければエラーとなります。|exclusive| - {Viにはない機能です} - -上記の2つのコマンドはファイルがメソッドとともにクラスを含んでいることを前提と -しています。クラスの定義は '{' と '}' で囲まれていることです。クラスの中のそれ -ぞれのメソッドもまた '{' と '}' で囲まれています。このことはJava言語にも当て -はまります。ファイルは次のようなものです: > - - // comment - class foo { - int method_one() { - body_one(); - } - int method_two() { - body_two(); - } - } -"body_two()" にカーソルをおいて始めてみましょう。"[m" とすると "method_two()" -の始めの '{' に移動します(当然 method が長いともっと便利です)。"2[m" とすると -"method_one()" の始めに移動します。"3[m" とするとクラスの最初に移動します。 - - *[#* -[# [count] 前のマッチするものがない "#if" か "#else" に移 - 動します。|exclusive|{Vi にはない機能です} - - *]#* -]# [count] 次のマッチするものがない "#else" か "#endif" - に移動します。|exclusive|{Vi にはない機能です} - -これらの2つのコマンドは #if/#else/#endif を含む C のプログラムで使います。これ -を使うと #if/#else/#endif の最初か最後に移動することができます(その場合現在の -行も含みます)。それから "%" を使うことでマッチする行に移動することができます。 - - *[star* *[/* -[* or [/ [count] 前の C コメントの始まり "/*" に移動します。 - {Vi にはない機能です} - - *]star* *]/* -]* or ]/ [count] 次の C コメントの終わり "*/" に移動します。 - {Vi にはない機能です} - - - *H* -H スクリーンの最上行から [count] 行目(デフォルト: スク - リーンの最上行)の最初の非空白文字に移動します(行指 - 向)。'startofline' オプションも参照してください。カー - ソル位置は 'scrolloff' オプションに合うように調整され - ます。 - - *M* -M スクリーンの中央の最初の非空白文字に移動します(行指 - 向)。'startofline' オプションも参照してください。 - - *L* -L スクリーンの最下行から [count] 行目(デフォルト: スク - リーンの最下行)の最初の非空白文字に移動します(行指 - 向)。'startofline' オプションも参照してください。カー - ソル位置は 'scrolloff' オプションに合うように調整され - ます。 - -<LeftMouse> スクリーン上でマウスがクリックされた場所に移動します - |exclusive|。参照 |<LeftMouse>|。もしその位置がステー - タス行の中であると、そのウインドーがアクティブなウイン - ドーとなりカーソルは動きません。{Vi にはない機能です} - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/netbeans.jax b/runtime.old/doc/netbeans.jax deleted file mode 100644 index ae2406dbe..000000000 --- a/runtime.old/doc/netbeans.jax +++ /dev/null @@ -1,988 +0,0 @@ -*netbeans.txt* For Vim バージョン 7.3. Last change: 2010 Sep 29 - - - VIM REFERENCE MANUAL by Gordon Prieur et al. - - - *socket-interface* *netbeans* *netbeans-support* - -Vim NetBeans プロトコル: Vim と IDE を統合するためのソケットインターフェイス - -1. はじめに |netbeans-intro| -2. NetBeans インターフェイスでできること |netbeans-integration| -3. NetBeans 用に configure する |netbeans-configure| -4. エラーメッセージ |netbeans-messages| -5. Vim を NetBeans モードで起動する |netbeans-run| -6. NetBeans プロトコル |netbeans-protocol| -7. NetBeans コマンド |netbeans-commands| -8. 既知の問題 |netbeans-problems| -9. NetBeans プロトコルのデバッグ |netbeans-debugging| -10. NetBeans External Editor - 10.1. NetBeans をダウンロードする |netbeans-download| - 10.2. NetBeans のキーバインド |netbeans-keybindings| - 10.3. NetBeans 側の準備 |netbeans-preparation| - 10.4. External Editor モジュールの入手 |obtaining-exted| - 10.5. NetBeans の設定 |netbeans-setup| - -{Vi にはこれらの機能はまったくない} -{|+netbeans_intg| 機能つきでコンパイルされたときのみ利用可能} - -============================================================================== -1. はじめに *netbeans-intro* - -NetBeans インターフェイスは、最初は External Editor プラグインを使って Vim と -NetBeans Java IDE を統合するために開発されました。その NetBeans プラグインは -今はもう NetBeans の新しいバージョンに対応しておらず、このプロトコルは任意の -IDE と Vim を統合させるために開発されています。 - -Vim の NetBeans プロトコルは、古典的な TCP ソケットを使った、テキストベース -の通信プロトコルです。Java や NetBeans にはまったく依存していません。ソケッ -トインターフェイスさえ備えていれば、どんな言語・環境でもこのプロトコルを使っ -て Vim をコントロールできます。C, C++, Python, Java の実装がすでに存在してい -ます。歴史的な理由により NetBeans の名前が今も残されています。 - -NetBeans プロトコルを使ったプロジェクトは現在のところ、以下のものがあります: -- VimIntegration, Vim の統合を行っている様々なプロジェクトの説明 - http://www.freehackers.org/VimIntegration -- Agide, AAP プロジェクト用の IDE。Python で書かれている。 - http://www.a-a-p.org -- Clewn, gdb 統合。C で書かれている。 - http://clewn.sourceforge.net/ -- Pyclewn, gdb 統合。 Python で書かれている。 - http://pyclewn.sourceforge.net/ -- VimPlugin, Eclipse の内部に Vim を取り込む。 - http://vimplugin.sourceforge.net/wiki/pmwiki.php -- PIDA, Python で書かれた IDE。 - http://pida.co.uk/ -- VimWrapper, Vim と IDE を簡単に統合するためのライブラリ - http://www.freehackers.org/VimWrapper - -詳しくは、それぞれのプロジェクトページを参照してください。 - -このヘルプページの以降の部分で、NetBeans ソケットインターフェイスを使って Vim -をコントロールするプログラムのことを「Vim コントローラ」と呼びます。 - - -NetBeans IDE について ~ - -NetBeans は、Sun Microsystems, Inc. と netbeans.org の開発者コミュニティが合 -同で開発しているオープンソースの統合開発環境(IDE)です。最初は Java の IDE で -したが、今では C, C++, Fortran もサポートするようになっています。 - -NetBeans に関してより詳しくは http://www.netbeans.org を参照してください。 -The External Editor は残念なことに obsolete と宣言されています。 - http://externaleditor.netbeans.org - -Sun Microsystems, Inc. は NetBeans を Sun ONE Studio という名前でもリリース -しています。Sun ONE Studio に関しては http://www.sun.com を参照してくださ -い。 - -現在のところ、NetBeans は Java を完全サポート、C, C++, Fortran を限定的にサ -ポートしています。Sun ONE Studio は Java, C, C++, Fortran を完全サポートして -います。 - -============================================================================== -2. NetBeans インターフェイスでできること *netbeans-integration* - -Vim の NetBeans ソケットインターフェイスを使うと、Vim から情報を引き出した -り、Vim に指定の動作をさせることができます: -- バッファに関する情報を取得する: バッファ名、カーソル位置、バッファの内容、 - など -- バッファが開く・閉じるとき通知してもらう -- バッファの内容がどのように変わったかを通知してもらう -- ファイルを読み込む・保存する -- バッファの内容を修正する -- 特殊なキーバインドをインストールする -- ウィンドウを前面に出す。ウィンドウの位置・サイズを調整する - -Vim にキーストロークを送ったり、Vim の中で関数を評価するには |clientserver| -インターフェイスを使う必要があります。 - - -============================================================================== -3. NetBeans 用に configure する *netbeans-configure* - -Vim のインストールについてより詳しくは、ユーザーマニュアルの |usr_90.txt| を -読んでください。 - - -Unix では: ----------- - -configure を引数なしで起動した場合、NetBeans インターフェイスを有効にできる -か configure がチェックし、可能なら有効にします。 - -NetBeans インターフェイスを有効にしたくない場合は、Makefile の中の -"--disable-netbeans" の行のコメントアウトを解除すれば無効にできます。 - -現在 NetBeans インターフェースは端末動作の Vim と GUI (GTK, GNOME, Windows, -Athena, Motif) の GVim でのみサポートされています。 - -Motif をサポートするためには XPM ライブラリが必要です。XPM の最新バージョン -を入手する方法については |workshop-xpm| を参照してください。 - - -MS-Windows では: ----------------- - -Win32 サポートは現在ベータ版の段階です。 - -Win32 で XPM signs を使う(NetBeans と使う場合など)ためには、XPM を自分自身で -コンパイルするか、コンパイル済みライブラリを使う必要があります。 -http://iamphet.nm.ru/misc/ (MS Visual C++ 用) -http://gnuwin32.sourceforge.net (MinGW 用) - -デバッグを有効化する: ---------------------- - -Vim と NetBeans プロトコルのデバッグを有効化するには、"NBDEBUG" マクロを定義 -する必要があります。お使いのプラットフォーム用の Makefile の中から"NBDEBUG" -を検索し、どの行のコメントを解除すればよいかを調べてください。そうすればコン -パイルコマンドに "-DNBDEBUG" が追加されます。|netbeans-debugging| も参照して -ください。 - -============================================================================== -4. エラーメッセージ *netbeans-messages* - -以下のエラーメッセージは NetBeans ソケットプロトコルのものです: - - *E463* -Region is guarded, cannot modify -日本語版:領域が保護されているので, 変更できません - Vim コントローラがテキスト中に保護領域を設定しており、そこを - 変更することはできません。必要に応じてカレントバッファもセッ - トします。 - - *E532* -The defineAnnoType highlighting color name is too long - defineAnnoType コマンドの "fg" と "bg" の色指定引数の最大長は - 32 文字です。 - バージョン 2.5 で新たに追加された仕様。 - - *E656* -Writes of unmodified buffers forbidden - Vim コントローラによって開かれている変更されていないバッファ - を書き出すことはできません。 - - *E657* -Partial writes disallowed - Vim コントローラによって開かれているバッファの部分的な書き出 - しはできません。 - - *E658* -Connection lost for this buffer -日本語版:バッファの NetBeans 接続が失われました - Vim コントローラがこのファイルの状態について混乱してしまいま - した。データを破損する危険を冒すよりも、このファイルに対する - 接続を切断することを選びました。このファイルに対する変更を保 - 存する責任は Vim が引き継ぎ、Vim コントローラはもうそれらに - ついて関知しません。 - - *E744* -Read-only file -日本語版:NetBeans は読込専用ファイルを変更することを許しません - 通常の Vim では、読み込み専用ファイルを変更することはでき、 - ファイルを書き出すときだけ読み込み専用のルールが適用されま - す。しかし、NetBeans はユーザーが読み込み専用ファイルに変更 - を施すことを許可しません。そのため、Vim が読み込み専用ファイ - ルを変更すると混乱してしまいます。そのため、NetBeans モード - で動作しているときは、Vim でもファイルへの変更を許可しないよ - うにしています。 - -============================================================================== -5. Vim を NetBeans モードで起動する *netbeans-run* - -Vim を NetBeans モードで実行するには二つの方法があります: - - + IDE から起動するときなどに Vim に |-nb| 引数を付けて起動する - + Vim の中で |:nbstart| コマンドを使って開始する - - *netbeans-parameters* -NetBeans 接続情報を指定する形式は三通りあります。 -コマンドラインで |-nb| 引数を指定するときは次のように指定します: - - -nb={fname} ファイルから - -nb:{hostname}:{addr}:{password} 直接指定 - -nb ファイルまたは環境変数から - -Vim の中で |:nbstart| コマンドの引数として指定するときは次のように指定します: - - ={fname} from a file - :{hostname}:{addr}:{password} directly - <MISSING ARGUMENT> from a file or environment - - *E660* *E668* -NetBeans の開始をコマンドラインで指定するとき、セキュリティ上の理由からベスト -な方法は、情報をファイルに書き、自分だけが読めるようにしておくことです。ファイ -ル名は "-nb={fname}" で渡すか、または "-nb" をパラメータなしで使うと環境変数 -"__NETBEANS_CONINFO" が使われます。このファイルは以下の三行を含んでいなければ -なりません(順序は問わない): > - - host={hostname} - port={addr} - auth={password} - -これ以外の行は無視されます。Vim コントローラが終了後にこのファイルを削除する責 -任を負います。 - -{hostname} は Vim コントローラが動作するマシンの名前です。省略されたときは、 -環境変数 "__NETBEANS_HOST" または既定値の "localhost" が使われます。 - -{addr} は NetBeans インターフェイスのポート番号です。省略されたときは、環境 -変数 "__NETBEANS_SOCKET" または既定値の 3219 が使われます。 - -{password} は NetBeans への接続のパスワードです。省略されたときは、環境変数 -"__NETBEANS_VIM_PASSWORD" または "changeme" が使われます。 - -Vim は起動時に、指定されたホスト・ポートへのソケット接続(クライアント側)を -初期化します。接続が確立されると、AUTH イベントによりパスワードが送信されま -す。 - - -============================================================================== -6. NetBeans プロトコル *netbeans-protocol* - -Vim コントローラと Vim の通信にはプレインテキストのメッセージが使われます。 -このプロトコルは、最初は NetBeans の External Editor モジュールと協調して動作 -するように設計されました。その後、Agide (A-A-P GUI IDE, http://www.a-a-p.org -を参照)と、そして他の IDE とも動作するように拡張されました。この拡張は -"version 2.1" とバージョンづけられています。 - -プロトコル version 2.2 は小さな変更で、NetBeans ユーザーにのみ影響し、Agide -ユーザーには無関係なはずでした。しかし、あるバグが修正されました。 -netbeans_saved() 関数が "save" プロトコルコマンドを送信するのですが、プロト -コル version 2.1 とそれ以前では、それが書き込みが行われたことの通知であると -誤解されていました。実際は NetBeans に対して保存するよう通知するものだったの -で、複数の書き込みが行われました。これが様々な問題を引き起こし、2.2 で修正さ -れました。以降、同じ間違いが起こらないようにするため、netbeans_saved() は -netbeans_save_buffer() と名前が変更されました。 - -現在のバージョンは 2.5 です。2.4 と 2.5 の違いは下記文章から "2.5" を検索して -ください。 - -メッセージはソケットを通じて送られます。メッセージは UTF-8 のプレインテキス -トなので、このプロトコルは他のどんな通信メカニズムでも使えます。 - - -6.1 メッセージの種類 |nb-messages| -6.2 用語 |nb-terms| -6.3 コマンド |nb-commands| -6.4 関数と応答 |nb-functions| -6.5 イベント |nb-events| -6.6 特別なメッセージ |nb-special| -6.7 プロトコルエラー |nb-protocol_errors| - - -6.1 メッセージの種類 *nb-messages* - -メッセージには四つの種類があります: - -種類 方向 コメント ~ -コマンド IDE -> editor 応答は必要ない -関数 IDE -> editor エディタは応答を送信しなければならない -応答 editor -> IDE 関数への応答としてのみ送られる -イベント editor -> IDE 応答は必要ない - -メッセージは、改行文字で終わる一行として送られます。引数は一つのスペースで区 -切られます。メッセージの最初の要素はメッセージの種類に依存します: - -種類 最初の要素 例 ~ -コマンド bufID:name!seqno 11:showBalloon!123 "text" -関数 bufID:name/seqno 11:getLength/123 -応答 seqno 123 5000 -イベント bufID:name=seqno 11:keyCommand=123 "S-F2" - - - -6.2 用語 *nb-terms* - -bufID バッファ ID。メッセージは特定のバッファ向けの場合も、全体用の - 場合もあります。全体用のメッセージは bufID 0 を使います。 - NOTE: このバッファ ID は IDE によって割り当てられるもので、 - Vim のバッファ番号とは異なります。bufID は連続して増加する番 - 号で、1 から始まります。 - -seqno IDE が Vim にコマンド・関数を発行するときつけられる連続する番 - 号です。応答は、その元メッセージと同じシーケンス番号を使わねば - なりません。シーケンス番号 0 はイベント用に使われます(最後に受 - け取ったコマンドまたは関数のシーケンス番号が使われることもあり - ます)。 - -string ダブルクォートで囲まれた文字列。UTF-8 でエンコードされます。 - よって ASCII 文字はそのままとなります。特殊文字はバックスラッ - シュをつけて表現されます: - \" ダブルクォート - \n 改行 - \r 復帰 - \t タブ (任意。そのままでも使えます) - \\ バックスラッシュ - NUL 文字は使用できません。 - -boolean 次の二つの値のどちらかとなります。 - T true - F false - -number 10 進数の数値。 - -color 10 進数の数値か "none" (クォートなし) か色の名前 (クォートな - し) のいずれか。色の名前は |highlight-ctermfg| と |gui-colors| - で定義されている名前。 - バージョン 2.5 で新たに追加された仕様。 - -offset バッファ中のバイト位置を示す数値。第 1 バイト目のオフセットは - 0 となります。改行は、ファイル中での表現と同じくカウントされ - ます(CR/LF は 2 バイト)。 - Note: マルチバイト文字は、そのバイト数カウントされます。 - -lnum/col 行番号と桁番号。行番号は 1 から始まり、桁番号は 0 から始まる - バイト位置となります。Note: マルチバイト文字は 2 桁以上を占 - めることに注意してください。 - -pathname 文字列: フルパスでのファイル名 - - -6.3 コマンド *nb-commands* - -actionMenuItem 未実装。 - -actionSensitivity - 未実装。 - -addAnno serNum typeNum off len - このバッファに annotation をつけます。 - 引数: - serNum number この annotation の通し番号。削除する - ときに使われます。 - typeNum number このバッファに対して defineAnnoType - で定義された annotation タイプの番号。 - off number annotation をつける位置のオフセット - len number 未使用 - version 2.1 では "off" の代わりに "lnum/col" が使えます。 - -balloonResult text - 未実装。 - -close バッファを閉じます。これを使うとカレントバッファがない状態に - なります。非常に危険です! - -create 名前をつけてバッファを作成します。作成されたバッファがカレン - トバッファになります(元のバッファは、変更されていれば hidden - 状態になります)。 - Vim コントローラは、開いているファイルに対する最初のコマンド - としてこのコマンドを使うべきです。一連のコマンドの例は次のよ - うになります: - create - setCaretListener (無視される) - setModified (効果なし) - setContentType (無視される) - startDocumentListen - setTitle - setFullName - -defineAnnoType typeNum typeName tooltip glyphFile fg bg - このバッファに対する annotation のタイプを定義します。 - 引数: - typeNum number シーケンス番号(実際には使われない) - typeName string この annotation を識別するための名前 - tooltip string 未使用 - glyphFile string アイコンのファイル名 - fg color 行の文字色 - bg color 行の背景色 - Vim はこの annotation に対して目印を定義します。 - 色を数値で指定するときは "#rrggbb" で赤緑青での色指定になり - (|gui-colors| 参照) GVim でのみ定義されます。 - 色を名前で指定するときはその色はカラー端末上で動作する Vim と - GVim の両方で定義されたものです。 - "fg" と "bg" が両方とも "none" の場合、行は強調されません - (version 2.1 から)。 - "glyphFile" が空の場合、テキストの目印は使われません - (version 2.1 から)。 - "glyphFile" が 1 または 2 文字である場合、テキストの目印が定 - 義されます(version 2.1 から)。 - Note: annotation にはシーケンス番号がつけられ、その番号は - addAnno で使われます。 - -editFile pathname - バッファの名前をセットし、ファイル "pathname" を開きます。 - IDE が開くファイルをエディタに伝える通常の方法です。 - - バッファに bufID を割り当てるため、このコマンドに対する - bufID は 0 以外の値にしなければなりません。bufID 0 でイベン - ト fileOpened が発生しますが、バッファは割り当てられていま - す。 - - IDE からエディタにファイルのテキストを渡したい場合には、代わ - りに次のコマンドを使ってください: - setFullName - insert - initDone - version 2.1 から。 - -enableBalloonEval - 未実装。 - -endAtomic アトミックな操作を終了します。"startAtomic" と "endAtomic" - の間に行われた変更は一つの操作として undo されます。しかし - 現在は未実装です。必要に応じて再描画をしてください。 - -guard off len - バッファ内の領域を保護します。保護された領域を変更することは - できません。"off" と "len" は number で、保護されるテキスト - を指定します。 - -initDone バッファの準備ができたとマークします。暗黙的にそのバッファを - カレントバッファにします。オートコマンドイベント BufReadPost - を発生させます。 - -insertDone - Vim コントローラから Vim へ、最初のファイルの挿入が行われた - ことを通知します。これにより、ファイル読み込みのメッセージが表 - 示されます。version 2.3 より前は、ファイルを開いた後にメッセー - ジが表示されませんでした。 - version 2.3 から。 - -moveAnnoToFront serNum - 未実装。 - -netbeansBuffer isNetbeansBuffer - "isNetbeansBuffer" が "T" ならば、このバッファは NetBeans に - より「所有」されます。 - version 2.2 から。 - -putBufferNumber pathname - pathname は string。"pathname" という名前のバッファにバッファ - 番号を割り当てます。エディタで新たにファイルが開かれると、その - ことを IDE に通知します。そして IDE はそのファイルに対してバッ - ファ番号を割り当てます。そのときこのコマンドが使われます。その - バッファは初期化済みとマークされます。 - version 2.1 から。 - -raise エディタを前面に移動します。 - GUI Vim でのみ有効。 - version 2.1 から。 - -removeAnno serNum - 以前にこのバッファに対してつけられた annotation を削除します。 - "serNum" は addAnno で使われたのと同じ番号です。 - -save バッファが変更されたとき保存します。インターフェイスのもう一方 - 側はバッファを書き出し、"setModified" を呼び出してバッファの - "changed" フラグをオフにすることを期待されています。 - これらの条件が真になる場合、書き込みはスキップされます: - - 'write' がオフのとき - - バッファが読み込み専用のとき - - バッファがファイル名を持たないとき - - 'buftype' により書き込みが禁止されているとき - version 2.2 から。 - -saveDone - Vim コントローラから Vim へ、保存が行われたことを通知します。 - これによって保存メッセージが表示されます。version 2.3 より前で - は、保存メッセージは表示されませんでした。 - version 2.3 から。 - -setAsUser 未実装。 - -setBufferNumber pathname - "pathname" という名前のバッファにバッファ番号を割り当てます。 - エディタで新たにファイルが開かれると、そのことを IDE に通知し - ます。そして IDE はそのファイルに対してバッファ番号を割り当て - ます。そのときこのコマンドが使われます。 - このバッファがカレントバッファになるという副作用があります。 - "putBufferNumber" の方がより便利なコマンドです。 - -setContentType - 未実装。 - -setDot off このバッファをカレントバッファにし、カーソルを指定した位置に移 - 動します。バッファが他のウィンドウで開かれている場合は、その - ウィンドウがカレントウィンドウになります。 - 折り畳みがある場合、カーソル行が見えるように開かれます。 - version 2.1 では "off" の代わりに "lnum/col" が使えます。 - -setExitDelay seconds - "seconds" は number。終了の遅延をセットします。 - この遅延によって、IDE に対して本当に終了するまえに何かをする - チャンスを与えます。既定値は 2 秒です。 - version 2.1 から。 - version 2.3 から非推奨になりました。 - -setFullName pathname - バッファ "pathname" に対するファイル名をセットします。引数は - string です。 - IDE の制御下にあるファイルを IDE が編集したいときに使われます。 - このバッファがカレントバッファになりますが、ファイルは読み込 - まれません。その内容をセットするため、次に "insert" コマンド - が発行されます。 - -setLocAndSize 未実装。 - -setMark 未実装。 - -setModified modified - boolean の引数 "modified" が "T" のとき、バッファを modified - 状態にします。"F" のときは unmodified にします。 - -setModtime time - Vim コントローラによりファイルが直接保存されたあとに発行されま - す。バッファの変更時刻を更新します。 - version 2.3 から。 - -setReadOnly - ファイルを読み込み専用にします。 - version 2.3 で実装されました。 - -setStyle 未実装。 - -setTitle name - "name" という名前のバッファのタイトルをセットします。引数 - "name" は string。このタイトルは Vim コントローラ関数でのみ - 使われ、Vim では使われません。 - -setVisible visible - boolean の引数 "visible" が "T" の場合は、そのバッファへ移動し - ます。"F" の場合は何もしません。 - -showBalloon text - マウスポインタの位置に、"text" という内容のバルーンウィンドウ - (ポップアップウィンドウ)を表示します。引数 "text" は string で - す。マウスが 2, 3 ピクセル以上移動すると、バルーンウィンドウは - 消えます。 - GUI Vim でのみ有効。 - version 2.1 から。 - -specialKeys - Vim コントローラに戻して処理させるキー(大抵はファンクション - キー)を設定します。これによって Vim の中で IDE のホットキーを - 使うことができるようになります。 - version 2.3 で実装されました。 - -startAtomic アトミックな操作を開始します。"endAtomic" が発行されるまで画面 - の更新は行われません。 - -startCaretListen - 未実装。 - -startDocumentListen - そのバッファにおける変更を "insert" と "remove" イベントに - よってIDE に通知するようセットします。既定では通知するように - なっています。 - -stopCaretListen - 未実装。 - -stopDocumentListen - そのバッファにおける変更を IDE に通知しないようにします。 - startDocumentListen の逆です。 - NOTE: "netbeansBuffer" によってこのバッファが NetBeans バッ - ファであるとマークされている場合、このバッファは Vim の中で - 削除されます。Sun Studio 10 との互換性のためです。 - -unguard off len - "guard" の逆で、テキスト領域に対する保護を解除します。 - 必要に応じてカレントバッファもセットします。 - -version 未実装。 - - -6.4 関数と応答 *nb-functions* - -getDot 未実装。 - -getCursor カレントバッファの bufID とカーソル位置を返します。 - 応答は次の形式: - seqno bufID lnum col off - seqno = 関数のシーケンス番号 - bufID = カレントバッファの bufID (未知なら -1) - lnum = カーソル位置の行番号 (1 から始まる) - col = カーソル位置の桁番号 (バイト単位。0 から始まる) - off = カーソル位置のバッファ内のオフセット (バイト単位) - version 2.1 から。 - -getLength バッファの長さをバイト単位で返します。 - 5000 バイトのバッファにおける応答の例: - 123 5000 - TODO: 部分行の使い方を説明する。 - -getMark 未実装。 - -getAnno serNum - 指定された annotation の行番号を返す。 - 引数: - serNum annotation の通し番号 - 応答は次の形式: - 123 lnum annotation の行番号 - 123 0 無効な annotation 番号 - version 2.4 から。 - -getModified バッファが指定された場合: バッファが変更されていないなら 0、 - 変更されているなら 1 を返します。 - バッファが指定されない場合(bufID が 0 の場合): 変更されてい - るバッファの数を返します。戻り値が 0 なら、Vim に終了するよう - 指示しても安全です。 - version 2.1 から。 - -getText バッファの中身を文字列として返します。2 行だけのバッファにおけ - る応答の例: - 123 "first line\nsecond line\n" - NOTE: ドキュメントには引数 offset と length が記述されています - が、実装されていません。 - -insert off text - 位置 "off" の前に "text" を挿入します。"text" は string、 - "off" は number です。 - "text" の行末には "\n" (改行) がつきます。'fileformat' が - "dos" の場合には "\r\n" がつきます。空バッファに対して - "insert" を行うと、Vim はそれに応じて 'fileformat' を設定し - ます。 - "off" が行頭を指している場合、その行の前に挿入されます。 - そのため、"off" が 0 の場合、最初の行の前に挿入されます。 - "off" が行頭よりも後を指す場合(行末の NUL を指す場合も含 - め)、テキストの最初の行はその行に追加されます。2 行目以降 - はその下にきます。 - 応答は次のようになります: - 123 問題なし - 123 !message 失敗 - Note: 応答のメッセージはクォートされていません。 - 必要に応じてこのバッファをカレントバッファにします。 - 変更されたテキストへカーソルを移動させません。 - undo 情報をリセットします。 - -remove off length - 位置 "off" のテキストを "length" バイト削除します。どちらの - 引数も number です。 - 応答は次のようになります: - 123 問題なし - 123 !message 失敗 - Note: 応答のメッセージはクォートされていません。 - 必要に応じてこのバッファをカレントバッファにします。 - -saveAndExit ":confirm qall" と同じことをします(Vim を閉じる)。変更された - ファイルがない、またはユーザーが操作をキャンセルしなかった場 - 合、Vim は終了し、戻り値は送信されません。IDE は接続が切断し - たことをもって成功と判断できます。ユーザーが操作をキャンセル - した場合、変更されているバッファの番号が返され、Vim は終了し - ません。 - version 2.1 から。 - - -6.5 イベント *nb-events* - -balloonEval off len type - マウスポインタが一定時間テキストの上に置かれました。"len" が 0 - の場合、マウスポインタが "off" の位置にあり、選択がされていな - いことを意味します。"len" が 0 でない場合、"off" から "off" + - "len" までのテキストが選択されていることを意味します。 - バッファに対して "enableBalloonEval" が使われた後でのみ送信さ - れます。"type" はまだ定義されていません。 - 未実装。 - -balloonText text - 'ballooneval' がセットされており、マウスポインタが一定時間 - テキストの上に置かれたとき発生します。"text" は string で、マ - ウスポインタの下のテキストを表します。 - GUI Vim でのみ有効。 - version 2.1 から。 - -buttonRelease button lnum col - ボタンが離されたとき、どのボタンが押されたかと、カーソルの位置 - を報告します。Vim コントローラによって所有されているバッファに - おいてのみ発生します。マウスがステータスラインまたはセパレータ - ラインの中にあるときは、ボタンが離されても、このイベントは送信 - されません。col が 1 未満の場合、目印エリアの中でボタンが離さ - れたことを意味します。 - version 2.2 から。 - -disconnect - Vim が終了するので、これ以上コマンドを読み書きしないよう Vim - コントローラに伝えます。 - version 2.3 から。 - -fileClosed 未実装。 - -fileModified 未実装。 - -fileOpened pathname open modified - ユーザーがファイルを開きました。 - 引数: - pathname string ファイル名 - open boolean 常に "T" - modified boolean 常に "F" - -geometry cols rows x y - エディタウィンドウのサイズと位置を報告します。 - 引数: - cols number テキストの桁数 - rows number テキストの行数 - x number 画面上のピクセル位置 - y number 画面上のピクセル位置 - Motif でのみ動作します。 - -insert off text - Vim において、"off" の位置にテキスト "text" が挿入されまし - た。有効化されているときのみ発生します。 - "startDocumentListen" を参照してください。 - -invokeAction 未実装。 - -keyCommand keyName - "keyName" という名前の特殊キーが押されたことを報告します。 - "keyName" は string です。 - サポートされているキー名: - F1 ファンクションキー 1 - F2 ファンクションキー 2 - ... - F12 ファンクションキー 12 - - ' ' スペース (シングルクォートはつかない) - ! エクスクラメーションマーク - ... それ以外の ASCII 印字可能文字 - ~ チルダ - - X 認識されないキー - - 前に "C", "S", "M" がつくことがあります。それぞれ Control, - Shift, Meta (Alt) キーを意味します。これらの修飾キーとキー名 - の間にはダッシュがつきます。例: "C-F2". - ASCII 文字は version 2.1 から。 - -keyAtPos keyName lnum/col - "keyName" と同様ですが、行番号と桁番号も報告します。 - version 2.1 から。 - -killed ユーザーによってファイルが削除またはワイプアウトされ、 - annotation が削除されました。このバッファに対する bufID は - 無効になりました。IDE によって bufID が割り当てられたファイ - ルに対してのみ発生します。 - -newDotAndMark off off - カーソルがバッファの "off" バイトの位置にあることを報告しま - す。"keyCommand" イベントの直前でのみ送信されます。 - -quit 未実装。 - -remove off len - Vim において、"off" の位置から "len" バイトのテキストが削除 - されました。 - 有効にされているときのみ発生します。"startDocumentListen" を - 参照してください。 - -revert 未実装。 - -save バッファが保存され、「未変更」状態です。 - 有効にされているときのみ発生します。"startDocumentListen" を - 参照してください。 - -startupDone エディタがスタートアップ処理を完了し、ファイルを編集する準備 - が整いました。 - version 2.1 から。 - -unmodified バッファが「未変更」状態になりました。 - 有効にされているときのみ発生します。"startDocumentListen" を - 参照してください。 - -version vers インターフェイスの実装のバージョンを報告します。Vim は - "2.4" と報告します(ダブルクォートを含む)。 - - -6.6 特別なメッセージ *nb-special* - -これらのメッセージは、前述のメッセージの形式に従いません。改行文字で終わりま -す。 - -ACCEPT 未使用。 - -AUTH password editor -> IDE: エディタが IDE に送る最初のメッセージ。|-nb| - で指定された、ソケットサーバのパスワードを含んでいなければな - りません。引用符は使われません。 - -DISCONNECT IDE -> editor: 接続を切断します。その後エディタは終了しま - す。IDE は、保存されていない変更がないときしかこのメッセージ - を送ってはなりません。 - -DETACH IDE -> editor: エディタを終了させずに接続を切断します。エ - ディタは終了させずに IDE を終了させるとき使われます。 - version 2.1 で導入されました。 - -REJECT 未使用。 - - -6.7 プロトコルエラー *nb-protocol_errors* - -メッセージがプロトコルに違反したとき、以下のエラーが発生します: -*E627* *E628* *E629* *E630* *E631* *E632* *E633* *E634* *E635* *E636* -*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646* -*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654* - - -============================================================================== -7. NetBeans コマンド *netbeans-commands* - - *:nbstart* *E511* *E838* -:nbs[tart] {connection} 新しい Netbeans セッションを開始する。{connection} は - ソケット接続パラメータ。{connection} の書式は - |netbeans-parameters| で説明されています。 - netbeans ソケットが接続されているかどうかは次のコマン - ドで確認できます: - ':echo has("netbeans_enabled")' - - *:nbclose* -:nbc[lose] 現在の NetBeans セッションを閉じる。目印はすべて削除さ - れます。 - - *:nbkey* -:nb[key] {key} Vim コントローラに {key} を渡します。 - -specialKeys コマンドによりホットキーがインストールされているとき、このコマン -ドを使ってホットキー・メッセージを Vim コントローラに送信できます。イベント -newDotAndMark, keyCommand, keyAtPos がこの順序で発生します。 - - -============================================================================== -8. 既知の問題 *netbeans-problems* - -NUL 文字は扱えません。editor -> IDE の通信では、NUL は NL に置換して送信され -ます。IDE -> editor では、NUL を含めることはできません。 - -NetBeans セッションが端末動作の Vim で初期化され、後で |:gui| コマンドによって -GUI 環境に引き継がれることがあります。この場合、":gui" コマンドが .gvimrc を読 -み込み、カラースキームが読み込まれ、そこで ":highlight clear" コマンドが実行さ -れることで、NetBeans annotation 用に定義された強調表示がクリアされるかもしれま -せん。 -バージョン 2.5 で新たに追加された仕様。 - - -============================================================================== -9. NetBeans プロトコルのデバッグ *netbeans-debugging* - -Vim プロトコルをデバッグするには、まず Vim をデバッグサポートと NetBeans デ -バッグサポートつきでコンパイルします。|netbeans-configure| を参照してくださ -い。 - -次の環境変数をセットしてください: - - export SPRO_GVIM_DEBUG=netbeans.log - export SPRO_GVIM_DLEVEL=0xffffffff - -すると、やりとりされるすべての NetBeans プロトコルメッセージが netbeans.log -というファイルに記録されるようになります。 - -セッションを行った後の netbeans.log の内容は次のようになります: -Tue May 20 17:19:27 2008 -EVT: 0:startupDone=0 -CMD 1: (1) create -CMD 2: (1) setTitle "testfile1.txt" -CMD 3: (1) setFullName "testfile1.txt" -EVT(suppressed): 1:remove=3 0 -1 -EVT: 1:fileOpened=0 "d:\\work\\vimWrapper\\vimWrapper2\\pyvimwrapper\\tests\\testfile1.txt" T F -CMD 4: (1) initDone -FUN 5: (0) getCursor -REP 5: 1 1 0 0 -CMD 6: (2) create -CMD 7: (2) setTitle "testfile2.txt" -CMD 8: (2) setFullName "testfile2.txt" -EVT(suppressed): 2:remove=8 0 -1 -EVT: 2:fileOpened=0 "d:\\work\\vimWrapper\\vimWrapper2\\pyvimwrapper\\tests\\testfile2.txt" T F -CMD 9: (2) initDone - - -============================================================================== -10. NetBeans External Editor - -NOTE: この情報は古くなっています! NetBeans の古いバージョンを使っている場合 -だけ読んでください。 - - -10.1. NetBeans をダウンロードする *netbeans-download* - -NetBeans IDE は netbeans.org からダウンロードできます。リリースされたバージョ -ン、ソースをダウンロードでき、CVS を使って最新のソースを取得することもできま -す。ソースをダウンロードした場合、ビルド方法については netbeans.org にある説明 -に従ってください。 - -NetBeans のバージョンによっては、External Editor モジュールを使うためにもう少し -手を加えなければならないかもしれません。External Editor モジュールによって -NetBeansは gvim と協調して動作できるようになります(xemacs とも :-)。 -このモジュールが NetBeans に含まれていない場合、 -http://externaleditor.netbeans.org を参照してください。 - -C, C++, Fortran サポートには、cpp モジュールも必要になります。 -http://cpp.netbeans.org を参照してください。 - -Sun Microsystems, Inc から Sun ONE Studio の 30 日間無料試用版をダウンロード -することもできます。http://www.sun.com を参照してください。 - - -10.2. NetBeans のキーバインド *netbeans-keybindings* - -Vim は NetBeans コマンドを実行するキーバインドを理解します。これらは普通、 -ファンクションキーの組み合わせです。NetBeans コマンドを実行するには、Pause -キーに続けて NetBeans のキーバインドをタイプします。たとえば、Javaファイルを -コンパイルする NetBeans のキーバインドは "F9" です。なので、Vim で"Pause F9" -と押すと Java ファイルをコンパイルできます。カレント行のブレークポイントをト -グルするには "Pause Shift F8" を押します。 - -Pause キーはファンクションキー 21 です。キーボードに Pause キーがなく、代わ -りにF8 を使いたいという場合、次のようにします: > - - :map <F8> <F21> - -External Editor モジュールは動的に NetBeans キーバインドを読み込むので、 -NetBeans がキーバインドを変更していても、Vim は常に最新のキーバインドに対応し -ます。 - - -10.3. NetBeans 側の準備 *netbeans-preparation* - -NetBeans を Vim と協調動作させるには、NetBeans External Editor モジュールが -読み込まれ、有効化されていなければなりません。Sun ONE Studio Enterprise -Edition を使っているなら、デフォルトでこのモジュールが読み込まれ有効化されます。 -NetBeans を使っている場合は、このオープンソースのモジュールを入手しなければ -なりません。 - -このモジュールが入っているかを確認するには Tools->Options ダイアログを開き、 -IDE Configuration->System->Modules の "Modules" リストを見ます。そこに -"External Editor" があれば、それが有効になっているか確認します("Enabled" -プロパティが "True" かどうか)。"External Editor" がなければ、次の節 -|obtaining-exted| を参照してください。 - - -10.4. External Editor モジュールの入手 *obtaining-exted* - -External Editor モジュールを入手する方法は二通りあります。最も簡単な方法は、 -NetBeans Update Center を使ってダウンロード・インストールすることです。 -しかし残念なことに、いくつかのバージョンでは Update Center にこのモジュールが -存在しません。Update Center にない場合は、モジュールのソースをダウンロードして -ビルドする必要があります。私が NetBeans Update Center からダウンロードできるよ -うにしますので、ビルドは不要になるでしょう。 -他の方法として http://externaleditor.netbeans.org もチェックしてください。 - -CVS で External Editor のソースを取得して自分でビルドする方法は -http://externaleditor.netbeans.org と http://www.netbeans.org を参照してくださ -い。残念ながら、これは簡単な道のりではありません。 - - -10.5. NetBeans の設定 *netbeans-setup* - -NetBeans External Editor モジュールを読み込み、有効化できたら、あとは gvim の -コマンドラインを設定するだけです。 - -Tools->Options を開き、Editing カテゴリを表示します。External Editor を選択し -ます。右側のペインに Properties タブと Expert タブがあるはずです。Properties -タブで "Editor Type" を "Vim" にします。Expert タブで "Vim Command"を正しく設 -定してください。 - -"Vim Command" を変更するときは注意してください。接続するためには、いくつかの -コマンドラインオプションを正しく設定する必要があります。 -You can change the command name but that's about it. -gvim が $PATH の中にあるなら、コマンドを "gvim" から始められます。gvim を -$PATH から検索させたくないならフルパスで指定してください。以上で、NetBeans -で開くファイルが gvim で開かれるようになります。 - -gvim で開かれるファイルもあるが、NetBeans のエディタで開かれるファイルもある -(拡張子が異なる)という場合、Expert タブの MIME Type プロパティを確認してくだ -さい。NetBeans は MIME によって判断し、External Editor はこのプロパティで指定 -された MIME Type だけを開きます。 - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/options.jax b/runtime.old/doc/options.jax deleted file mode 100644 index 953679070..000000000 --- a/runtime.old/doc/options.jax +++ /dev/null @@ -1,8254 +0,0 @@ -*options.txt* For Vim バージョン 7.3. Last change: 2011 Jul 07 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -オプション *options* - -1. オプションの設定 |set-option| -2. オプションの自動設定 |auto-setting| -3. オプションの要約 |option-summary| - -オプションの概要については、help.txt |option-list| を参照。 - -Vimには、特別な働きをさせるための多くの内部変数とスイッチがある。それらのオプ -ションには3種類ある。 - *boolean* *toggle* - 切替 boolean オプション オンかオフかのどちらかの値をとる - 数値 number オプション 数値の値を取る - 文字列 string オプション 文字列の値を取る - -(訳注: このヘルプの中で多く出てくる語句で、分かりにくいものを説明する。 - -- ローカルな: - あるバッファまたはウィンドウにのみ適用されるような、という意味。 -- ローカルオプション: - あるバッファまたはウィンドウ内の設定のみを変え、その他のバッファまたは - ウィンドウの設定に影響しないようなオプション。 -- ウィンドウについてローカルな: - あるウィンドウにのみ適用されるような、という意味。バッファについてロー - カルな、も同様な意味を持つ。 -- グローバルな: - Vim全体に適用されるような、または、Vim全体で共通の値を使うような、とい - う意味。 -上の4項目については |option-summary| も参照。 -- non-printable, unprintable: - 文字が画面に表示可能なフォントに対応していないこと。具体的には <CTRL> - などを押しながら入力した文字や <ESC> が例である。主に制御に利用される。 - -訳語で、さらに相応しいものがあればご提案を下さい。) -============================================================================== -1. オプションの設定 *set-option* *E764* - - *:se* *:set* -:se[t] 既定値と違う値のオプションを全て表示する。 - -:se[t] all ターミナルオプション以外の全てのオプションを表示する。 - -:se[t] termcap ターミナルオプションを全て表示する。Note GUIバージョン - では、キーコードは表示されないので注意。なぜなら、キー - コードは内部的に生成され、変更が不可能だからだ。それに、 - GUIバージョンでターミナルコードを変更するのは便利とは - 言えない... - - *E518* *E519* -:se[t] {option}? {option} の値を表示する。 - -:se[t] {option} 切替オプション: セット、すなわちオンに切り替える。 - 数値オプション: 値を表示する。 - 文字列オプション: 値を表示する。 - -:se[t] no{option} 切替オプション: リセット、すなわちオフに切り替える。 - - *:set-!* *:set-inv* -:se[t] {option}! または -:se[t] inv{option} 切替オプション: オンとオフを切り替える。 {Vi にはない} - - *:set-default* *:set-&* *:set-&vi* *:set-&vim* -:se[t] {option}& オプションを既定値に設定する。オプション 'compatible' - のその時点の値によって違うかもしれない。 {Vi にはない} -:se[t] {option}&vi オプションをViの既定値に設定する。 {Vi にはない} -:se[t] {option}&vim オプションをVimの既定値に設定する。 {Vi にはない} - -:se[t] all& ターミナルオプション以外の全てのオプションを既定値に設 - 定する。オプション 'term', 'lines' と 'columns' の値は - 変更されない。 {Vi にはない} - - *:set-args* *E487* *E521* -:se[t] {option}={value} または -:se[t] {option}:{value} - 数値および文字列オプションの値を {value} に設定する。 - 数値オプションの値は、10進数、(0x を頭に付けて) 16進数、 - または ('0' を頭に付けて) 8進数で指定できる (16進数と8 - 進数は、関数 strtol() を持つマシンでのみ利用可能)。 - オプション 'wildchar' で指定された文字 (既定では - <Tab>、オプション 'compatible' がオンにならば CTRL-E) - を打ち込むと、古い値を挿入できる。|cmdline-completion| - を参照。 - {option} と '=' の間には空白を入れることができる。それ - らは無視される。'=' と {value} の間に空白を入れてはい - けない。 - {value} 内での空白や '\' の使用に関しては、 - |option-backslash| を参照 (訳注: 文書先頭も参照)。 - -:se[t] {option}+={value} *:set+=* - 数値オプションに対しては {value} だけその値を増す。文 - 字列オプションに対しては後ろに {value} を追加する。オ - プションがコンマ区切りのリストのときは、値が空でない限 - り、元の値と {value} の間にコンマが付け加えられる。 - オプションがフラグのリストであるときは、冗長なフラグは - 取り除かれる。すでに入っているフラグを加えようとしたと - きは、そのオプションの値は変わらない。 -< 上の |:set-args| も参照。 - {Vi にはない} - -:se[t] {option}^={value} *:set^=* - 数値オプションに対してはその値を {value} 倍する。文字 - 列オプションに対しては前に {value} を追加する。オプショ - ンがコンマ区切りのリストのときは、{value} と元の値の間 - にコンマが付け加えられる。 - 上の |:set-args| も参照。 - {Vi にはない} - -:se[t] {option}-={value} *:set-=* - 数値オプションに対しては {value} だけその値を減らす。 - 文字列オプションに対しては {value} を (それが含まれて - いたら) 取り除く。 - そのとき {value} が含まれていな - くても、警告やエラーは出ない。オプションがコンマ区切り - のリストであり、取り除くオプションが唯一の値でない限り、 - 間のコンマも削除される。 - オプションがフラグのリストであるときは、{value} は値の - 中に現れるままに、正確に指定しなければならない。問題 - が起こるのを避けるために、フラグを取り除くときは1個ず - つ指定すること。 - 上の |:set-args| も参照。 - {Vi にはない} - -1回のコマンド ":set" に対し、複数の {option} を引数に指定できる。例: > - :set ai nosi sw=3 ts=3 -引数の中にエラーがあると、エラーメッセージが現れ、エラーの元になったオプション -以降は無視される。 - - *:set-verbose* -オプション 'verbose' の値が非0 なら、オプションの値を表示するとき、同時に、そ -のオプションが最後に設定されたのはどこであったかも分かる。例: > - :verbose set shiftwidth cindent? - shiftwidth=4 ~ - Last set from modeline ~ - cindent | - Last set from /usr/local/share/vim/vim60/ftplugin/c.vim -これは特定のオプション名が指定されたときのみ機能する。コマンド ":set all" や、 -引数のないコマンド ":verbose" ではメッセージが現れない。 -オプションが手動で設定されていると、メッセージ "Last set" は現れない。 -オプションが関数やユーザコマンド、オートコマンド autocommand の実行中に設定さ -れたときは、それらが定義されているスクリプト名が報告される。 -Note 'compatible'を設定すると副作用として他のオプションも設定されることがある。 -以下のような特殊なメッセージがある: - Last set from modeline ~ - モードライン |modeline| の中でオプションが設定された。 - Last set from --cmd argument ~ - コマンドライン引数 |--cmd| または + によりオプションが設定され - た。 - Last set from -c argument ~ - コマンドライン引数 |-c|, +, |-S|, |-q| によりオプションが設定 - された。 - Last set from environment variable ~ - 環境変数、$VIMINIT、$GVIMINIT、$EXINIT によりオプションが設定 - された。 - Last set from error handler ~ - オプションを評価中にエラーが発生し、クリアされた。 - -{Vi mが |+eval| 機能付きでコンパイルされたときのみ有効} - - *:set-termcap* *E522* -Termcap オプションを設定するには、{option} に "t_xx" の形式を使ってもよい。こ -れは termcap による値を上書きする。これはマッピングの中で利用することもできる。 -"xx" の部分が特別な文字を含むときは、<t_xx> の形式を使うこと: > - :set <t_#4>=^[Ot -これは特殊なコードを普通のキーに変換する際にも使われる。例えば Alt-b が <Esc>b -を出力するなら、次のようにすること。 > - :set <M-b>=^[b -(ここで ^[ は本物の <Esc> である。入力には CTRL-V <Esc> を使うこと) -マッピングの利点は、どんなときにも機能することである。 - -キーコードを定義することができます。例: > - :set t_xy=^[foo; -未知のキーコード名を使っても警告は表示されません。これらのキーコードに対して -マップを定義できます: > - :map <t_xy> something -< *E846* -キーコードが設定されていない場合、それは存在しないのと同じです。その値を取得し -ようとするとエラーになります: > - :set t_kb= - :set t_kb - E846: Key code not set: t_kb - -t_xxの形のオプションは安全上の理由により、モードライン|modeline|やサンドボック -ス|sandbox|では設定できない。 - -コマンド ":set" によるリスト表示の外見は、Viとは違う。長い文字列オプションはリ -ストの終わりに現れる。オプションの数も極めて多い。コマンド "set all" による表 -示は、画面に収まらないだろう。そうしたとき、Vimは「継続」プロンプト -|more-prompt| を出す。 - - *option-backslash* -文字列オプションの値に空白を含めるには、空白の前に '\' を置く必要がある。値に -'\' を含めるには、2個繰り返す。結果的には、オプションの値の中の '\' の数は半分 -になる (端数は切り捨て)。 -例をいくつか挙げる。 > - :set tags=tags\ /usr/tags の結果は "tags /usr/tags" - :set tags=tags\\,file の結果は "tags\,file" - :set tags=tags\\\ file の結果は "tags\ file" - -文字 "|" によって、コマンド ":set" を後に続くコマンドと分けることができる。文 -字列オプションの値に "|" を含めるには、代わりに "\|" を使うこと。次の例ではオ -プション 'titlestring' の値を "hi|there" に設定している。 > - :set titlestring=hi\|there -しかし次の例では、2個のオプション 'titlestring', 'iconstring' をそれぞれ "hi", -"there" に設定している。 > - :set titlestring=hi|set iconstring=there - -また、ダブルクォート文字はコメントを開始する。オプションの値に'"'を含めるには -'\"'と書くこと。次の例は'titlestring'を'hi "there"'に設定する: > - :set titlestring=hi\ \"there\" - -MS-DOSとWin32では、ファイル名の中の '\' は大抵は取り除かれない。正確に言うと、 -値にファイル名を取るオプション (環境変数が展開されるもの) では、通常のファイル -名に使われる文字の前の '\' は取り除かれない。しかし、特別な文字 (空白、'\' そ -のもの、コンマ等) の前の '\' は、上で説明した通りの働きをする。 -オプションの値が "\\" で始まるときは、特別な状態になる。 > - :set dir=\\マシン名\パス の結果は "\\マシン名\パス" - :set dir=\\\\マシン名\\パス の結果は "\\マシン名\パス" - :set dir=\\パス\\ファイル の結果は "\\パス\ファイル" (間違い!) -最初の例では、始まりの部分の '\' はそのまま保たれている。しかし2番目の例では、 -'\' の数は半分になっている。つまり、'\' をそのまま保ちたいときでも、半分にした -いときでも、どちらがよいか指定できることが分かる。3番目の結果は、おそらく希望 -通りのものではないだろう。このやり方は避けること。 - - *add-option-flags* *remove-option-flags* - *E539* *E550* *E551* *E552* -値がフラグのリストからなるオプションもある。そういったオプションにフラグを追加 -したいとき、既存の値を変更したくないならば、こうすること。 > - :set guioptions+=a -オプションからフラグを取り除くには、こうすること。 > - :set guioptions-=a -これはオプション 'guioptions' からフラグ 'a' を取り除く。 -Note フラグは1個ずつ追加したり取り除いたりするよう注意。オプション -'guioptions' が "ab" という値であるとき、"set guioptions-=ba" は機能しない。な -ぜなら、"ba" という文字列は現れていないからである。 - - *:set_env* *expand-env* *expand-environment-var* -特定の文字列オプションでは環境変数が展開される。'$' とそれに続く環境変数名 -が、その値に置き換えられる (その環境変数が存在するとき)。環境変数が存在しない -とき、'$' とそれに続く変数名は変更を受けない。識別子に使えない non-id 文字 (英 -字、数字、'_' 以外) なら、どれでも環境変数名の後に続けることができる。識別子に -使えない文字とそれに続く文字は、環境変数の値の後ろにそのまま追加される。例: > - :set term=$TERM.new - :set path=/usr/$INCLUDE,$HOME/include,. -コマンド ":set opt-=値" でオプションから文字列を取り除いたり、コマンド ":set -opt+=値" でオプションに文字列を追加したりするときには、環境変数の展開が行われ -てからそうした操作がなされる。 - - -ローカル変数の扱い *local-options* - -いくつかのオプションは、1つのウィンドウや1つのバッファのみに適用される。それぞ -れのウィンドウやバッファは、そうしたオプションの独自のコピーを保持しているため、 -独自の値を持つことができる。これにより、あるウィンドウ内では 'list' オプション -をオンにするが、他のウィンドウではオフにする、ということが可能になる。またオプ -ション 'shiftwidth' を、あるバッファ内では 3 にし、他では 4 にすることもできる。 - -以降では、特定の状況下でそれらのローカルオプションがどうなるかを説明する。実際 -には、それらを全て知る必要はない。なぜなら、Vimはおそらくユーザが予想する通り -にオプションの値を使うからである。残念ながら、ユーザの予想通りに働くのは、いく -らか複雑なことである... - -ウィンドウを分割すると、ローカルオプションは新しいウィンドウにコピーされて引き -継がれる。そのため、ウィンドウを分割した直後には、2つのウィンドウの内容は同じ -ように見える。 - -新しいバッファを編集するとき、そのバッファのローカルオプションは初期化されなけ -ればならない。その以前のカレントバッファのローカルオプションは、そのバッファの -みに適用すべきものかもしれないので、新しいバッファには適用されない。その代わり、 -バッファについてローカルなオプションにはそれぞれグローバルな値があり、新しいバッ -ファにはそれが適用される。コマンド ":set" によって、ローカルな値とグローバルな -値の両方が変更される。コマンド "setlocal" はローカルな値のみを変更するので、そ -れで指定した値は新しいバッファには適用されない。 - -すでに編集されているバッファを編集するときは、最後に使われたウィンドウ内のロー -カルオプションが再び使われる。このバッファがこのウィンドウ内ですでに編集されて -いたなら、そのときの値が再び用いられる。そうでなければ、そのバッファが最後に編 -集されたウィンドウ内の値が用いられる。 - -特定のバッファの種類についてウィンドウ内のローカルオプションを設定することも可 -能である。同じウィンドウ内で別のバッファを編集するときは、ウィンドウについてロー -カルなオプションを使い続けたくはないだろう。そのためVimはウィンドウについてロー -カルなオプションのグローバルな値を記憶しており、別のバッファの編集時にはそれを -用いる。ウィンドウはそれぞれ、それらの値の独自のコピーを持っている。そのため、 -それらのオプションはウィンドウについてはローカルであるが、そのウィンドウ内の全 -てのバッファについてグローバルである。それらを用いて、次のようなことが可能であ -る。 > - :e 一つ目 - :set list - :e 二つ目 -こうするとオプション 'list' はバッファ "二つ目" にも適用される。コマンド -":set list" により、グローバルな値もオンになったからである。 > - :set nolist - :e 一つ目 - :setlocal list - :e 二つ目 -今度はバッファ "二つ目" ではオプション 'list' はオフである。なぜならコマンド -":set nolist" がグローバルな値をオフにしたが、コマンド ":setlocal list" はバッ -ファ "一つ目" についてローカルな値をオンにしただけで、":e 二つ目" ではグローバ -ルな値が適用されるからである。 Note 次にこうすると > - :e 一つ目 -最後にバッファ "一つ目" を編集したときの通りにオプション 'list' の値が戻るわけで -はないので注意。ウィンドウについてローカルなオプションは、バッファそれぞれに対 -して復元されるわけではないからである。 - - *:setl* *:setlocal* -:setl[ocal] ... コマンド ":set" と似ているが、カレントバッファ/ウィン - ドウについてローカルな値のみを設定する。全てのオプショ - ンがローカルな値を持つわけではない。オプションがローカ - ルな値を持たないときは、グローバルな値が設定される。 - 引数が "all" のとき: 全てのローカルオプションのローカ - ルな値を表示する。 - 引数がないとき: 全てのローカルオプションのローカルな値 - で、既定値と異なるものを表示する。 - 特定のローカルオプションを表示するときは、ローカルな値 - も表示する。グローバルまたはローカルな切替オプションに - 対しては、グローバルな値が表示される場合には、オプショ - ン名の前に "--" が表示される。 - グローバルオプションに対しては、グローバルな値が表示さ - れる (しかし、これは将来変更されるかもしれない)。 - - {Vi にはない} - -:setl[ocal] {option}< 値をコピーすることによって{option}のローカルな値をグ - ローバルな値と同じにする。{Vi にはない} - -:se[t] {option}< ローカルな値を空にすることによって{option}のローカルな - 値をグローバルな値と同じにする。|global-local|のオプショ - ンに対してだけ意味がある。{Vi にはない} - - *:setg* *:setglobal* -:setg[lobal] ... コマンド ":set" と似ているが、ローカルオプションのグロー - バルな値のみを設定し、ローカルな値は変更しない。 - オプションの値を表示するときは、グローバルな値が表示さ - れる。 - 引数が "all" のとき: 全てのローカルオプションのグロー - バルな値を表示する。 - 引数がないとき: 全てのローカルオプションのグローバルな - 値で、既定値と異なるものを表示する。 - {Vi にはない} - -バッファ/ウィンドウについてローカルなオプションに対して: - コマンド グローバルな値 ローカルな値 ~ - :set オプション=値 設定される 設定される - :setlocal オプション=値 なし 設定される -:setglobal オプション=値 設定される なし - :set オプション? なし 表示される - :setlocal オプション? なし 表示される -:setglobal オプション? 表示される なし - - -ローカルな値を持つグローバルオプション *global-local* - -オプションがグローバルであるというのは、一つの値を全てのバッファとウィンドウに -用いるような場合である。いくつかのグローバルオプションでは、ローカルな別の値を -持てると便利である。ローカルな値は、コマンド ":setlocal" で設定できる。すると -コマンド":setlocal" を実行したバッファとウィンドウではローカルな値が用いられる -が、他のバッファでは引き続きグローバルな値が用いられる。 - -例えば、あなたは2つのウィンドウを開き、両方でC言語のソースファイルを編集してい -るとする。グローバルなオプション 'makeprg' は両方に適用される。そこでウィンド -ウの片方で > - :set makeprg=gmake -とすると、別のウィンドウでも同じ値が用いられる。別のウィンドウに移って -オプション 'makeprg' を設定する必要はない。 -しかし、新しいウィンドウでPerlのソースファイルの編集を始めると、'makeprg' に別 -の値を設定したくなる。しかしCソースに適用された値を変えたくはない。そんなとき -には次のようにする。 > - :setlocal makeprg=perlmake -次のようにローカルな値を空にすると、グローバルな値に戻る。 > - :setlocal makeprg= -ただし、この方法は文字列オプションにしか使えない。切替オプションには、次のよう -に "<" フラグを使う必要がある。 > - :setlocal autoread< -Note: 非切替オプションの変更で "<" を使うと、グローバルな値がローカルな値にコ -ピーされるが、それはグローバルな値を使うようにするのとは少し違うことに注意 (こ -れは後でグローバルな値が変更されたときに問題になる。--訳注: グローバルな値が変 -更されても、"<" でコピーした値までは変更されない。あくまでもローカルな値だか -ら)。次を使うこともできる: > - :set path< -これは 'path'のローカルな値を空にし、グローバルな値が使われるようにする。すな -わち、次と同じことをする: > - :setlocal path= -Note: 将来、値にグローバルとローカルの区別のあるオプションが増えたら、グローバ -ルオプションにコマンド ":setlocal" を使ったときの結果が変わるかもしれない。 - - -ファイルタイプの設定 - -:setf[iletype] {filetype} *:setf* *:setfiletype* - {filetype} に対してオプション 'filetype' を設定する。 - ただし autocommand の中 (入れ子になっているときは、外 - 側も含めて) でまだ実行されていないときのみ有効である。 - これは以下のコマンドの略である。 > - :if !did_filetype() - : setlocal filetype={filetype} - :endif -< このコマンドは filetype.vim の中で使われ、オプション - 'filetype' が2度設定されて別の設定や構文ファイルが読み - 込まれることがないようにしている。 - {Vi にはない} - - *option-window* *optwin* -:bro[wse] se[t] *:set-browse* *:browse-set* *:opt* *:options* -:opt[ions] 全てのオプションを表示したり設定するためのウィンドウを - 開く。 - オプションは機能ごとにまとめられている。 - ここではオプションの短い説明が読める。その上で <CR> を - 打ち込むと、そのオプションについてのヘルプウィンドウが - 開き、詳しい説明が読める。 - 表示されている値を修正した後に "set" 行の上で <CR> を - 打ち込むと、新しい値を設定できる。ウィンドウやバッファ - 固有のオプションについては、変更した値は最後に使用した - ウィンドウに適用される。そのウィンドウがヘルプウィンド - ウだったときは、変更した値はヘルプウィンドウの (オプショ - ンウィンドウを抜かして) 1つ下のウィンドウに適用される。 - {Vi mが |+eval| 機能と |+autocmd| 機能付きでコンパイル - されたときのみ有効} - - *$HOME* -"~" は "$HOME" と同様に扱われるが、こちらは値の先頭にあるか、空白かコンマの後 -にあるときのみ認識される。 - -Unix系のシステムでは "~正和" も使える。これは "正和" というユーザのホームディ -レクトリに置き換えられる。例: > - :set path=~mool/include,/usr/include,. - -Unix系のシステムでは "${HOME}" という形式も使える。ここで {} の間には識別子に -使えない文字 (訳注: 上を参照) が入ってもよい。 Note これをコマンド "gf" のため -に使いたいなら、文字 '{' と '}' をオプション 'isfname' に追加する必要がある。 - -NOTE: 環境変数と"~/"の展開はコマンド":set"のときのみ行われる。":let"でオプショ -ンに値を代入するときは展開されない。 - -Note 展開されるオプションの値の長さ制限に注意。システムごとに異なるが、大抵は -256文字や1024文字等の長さである (訳注: これは半角の場合で、全角では半分)。 - - *:fix* *:fixdel* -:fix[del] ターミナルオプション 't_kD' (訳注: デリートキー) の値 - を設定する。 - 't_kb' が のとき 't_kD' は ~ - CTRL-? CTRL-H - CTRL-?以外 CTRL-? - - (CTRL-? は8進数で 0177、16進数で 0x7f) {Vi にはない} - - ターミナルのデリートキーのキーコードが違っているが、バッ - クスペースのキーコードは正しいときは、次のコマンドをファ - イル .vimrc に加えればよい。 > - :fixdel -< これはバックスペースのキーコードが実際に何であっても有 - 効である。 - - バックスペースのキーコードが違っていたら、以下のように - する。 > - :if &term == "termname" - : set t_kb=^V<BS> - : fixdel - :endif -< ここで "^V" は CTRL-V 、 "<BS>" はバックスペースを表す - (実際に「^」「V」などのキーを押さないこと)。"termname" - にはユーザの使うターミナル名を当てはめる。 - - <Delete> キーが奇妙なキーコード列 (CTRL-? でも CTRL-H - でもない) を送るときは、コマンド ":fixdel" ではなく以 - 下の方法を使う。 > - :if &term == "termname" - : set t_kD=^V<Delete> - :endif -< ここで "^V" は CTRL-V 、 "<BS>" はデリートキーを表す - (実際に「^」「V」などのキーを押さないこと)。"termname" - にはあなたの使うターミナルの種類を当てはめる。 - - *Linux-backspace* - Note Linuxについての注意: 既定ではバックスペースキーは - CTRL-? を送るが、これは違っている。これを修正するには、 - ファイル rc.local に次の行を加える。 > - echo "keycode 14 = BackSpace" | loadkeys -< - *NetBSD-backspace* - Note NetBSDについての注意: バックスペースキーが正しい - キーコードを送らないとき、これを試すこと。 > - xmodmap -e "keycode 22 = BackSpace" -< 有効だったら、ファイル .Xmodmap に次の行を加えること。 > - keysym 22 = BackSpace -< これを有効にするには、再起動する必要がある。 - -============================================================================== -2. オプションの自動設定 *auto-setting* - -コマンド ":set" によるオプションの設定の他に、3通りの方法で、1つまたは複数のファ -イルに自動的にオプションを設定できる。 - -1. Vimを起動したとき、様々な場所から初期化設定を読み込ませることができる。 - |initialization| を参照。多くの設定は編集セッション全てに適用されるが、いく - つかはVimを起動したディレクトリによって異なる。初期化設定ファイルはコマンド - |:mkvimrc|, |:mkview|, |:mksession| で生成できる。 -2. 新しいファイルの編集を始めたとき、自動的に実行されるコマンドがある。 - これを使うと、特定のパターンにマッチするファイルに対してオプションを設定し - たり、様々なことが可能である。|autocommand| を参照。 -3. 新しいファイルの編集を始めたときオプション 'modeline' がオンなら、ファイル - の先頭と末尾の数行ずつがモードラインとして読み込まれる。それをここで説明す - る。 - - *modeline* *vim:* *vi:* *ex:* *E520* -モードラインには2つの形式がある。1つ目の形式は次の通りである。 - [text]{white}{vi:|vim:|ex:}[white]{options} - -[text] 任意のテキスト、なくても良い -{white} 1個以上の余白 (<Space> または <Tab>) -{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 -[white] 空白、なくても良い -{options} オプション設定が、空白か ':' で区切られて並んだもので、':' の - 間の部分はコマンド ":set" の引数である(空でもよい) - -例: - vi:noai:sw=3 ts=6 ~ - -2つ目の形式は次の通りである (Viのヴァージョンによってはこの形式と互換性がある)。 - - [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text] - -[text] 任意のテキスト、なくても良い -{white} 1個以上の余白 (<Space> または <Tab>) -{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 -[white] 空白、なくても良い -se[t] "set "または"se " という文字列 ( NOTE 終わりの空白に注意) -{options} オプション設定が空白で区切られて並んだもので、コマンド ":set" - の引数である -: コロン -[text] 任意のテキスト、なくても良い - -例: - /* vim: set ai tw=75: */ ~ - -"vi:" または "|vim:|" または "ex:" の前には空白が必要である。これが "lex:" 等 -の普通の言葉を誤認する可能性を低めている。ただし例外があり、 "vi:" と "vim:" -は行頭に来てもよい (バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モー -ドラインとは見なされない ("example:" の略かもしれないから)。 - - *modeline-local* -オプションは ":setlocal" などで設定できる。そうして設定した値は、そのバッファ -とそれを開いているウィンドウにのみ適用される。モードラインからグローバルオプショ -ンを設定することは不可能ではないが、普通そういうことはしない。2つのウィンドウ -を開いていて、それぞれのファイルが同じグローバルオプションを違う値に設定しよう -としたときは、後に開かれたウィンドウが優先される。 - -既に読み込まれているファイルを開くときは、モードラインからはウィンドウローカル -なオプションだけが設定される。つまり、ファイルを開いた後に手動でバッファローカ -ルなオプションを変更したら、そのバッファを別なウィンドウで開いてもそのオプショ -ンは変更されないが、ウィンドウローカルなオプションは変更される。 - - *modeline-version* -モードラインの内容が、Vimのバージョンによって使用可能だったり不可能だったりす -る場合には、"vim:" のところでバージョンを指定できる。 - vim{vers}: バージョン {vers} 以降 (そのバージョンを含む) - vim<{vers}: バージョン {vers} より前 - vim={vers}: バージョン {vers} のみ - vim>{vers}: バージョン {vers} より後 (そのバージョンを含まない) -{vers} に 600 を指定するとVim 6.0を表す (メジャー・バージョンナンバーの100倍足 -すマイナー・バージョンナンバー)。 -例えば、Vim 6.0またはそれより新しいバージョンでのみモードラインを使うにはこう -する。 - /* vim600: set foldmethod=marker: */ ~ -Vim 5.7より古いバージョンでのみモードラインを使うにはこうする - /* vim<570: set sw=4: */ ~ -"vim" と ":" の間に空白があってはならない。 - - -モードラインを探す行数はオプション 'modelines' で設定できる。オプション -'modeline' がオフであるかオプション 'modelines' の値が 0 だと、モードラインを -探さない。 - -Note 1番目の形式では、行全体がオプション指定に使われることに注意。そのため次の -ようにすると、行末の "*/" のためにエラーメッセージが現れる。 - /* vi:ts=4: */ ~ -その代わり、こうすればよい。 - /* vi:set ts=4: */ ~ - -エラーが発見されると、その行の残りは無視される。 - -コマンド "set" の引数に ':' を含めたいときは、その前に '\' を置くこと。':' の -前の '\' は取り除かれる。例: - /* vi:set dir=c\:\tmp: */ ~ -これはオプション 'dir' を "c:\tmp" に変更する。':' の前に '\' が置かれたとき、 -取り除かれるのは1個だけである。だからオプションの値に "\:" を含めたいなら -"\\:" を指定すること。 - -安全上の理由から、コマンド "set" 以外は使用できない (誰かがテキストファイルで -「トロイの木馬」を作るかもしれないから) 。また、全てのオプションが設定できるわ -けではない。ある種のオプションにはフラグが設定されており、それが使用されるとき -には|sandbox|が有効になる。しかしそれでもモードラインが問題を引き起こす可能性 -はわずかに残る。例えば、悪意のある誰かが'textwidth'を5にすると、ファイルの全て -の行が予期せず折り返されてしまう。そのため、信用できないファイルを編集する前に -はモードラインを無効にすること。 -例えばmail ftpluginはそれを行っている。 - -ヒント: ファイルを読み込みときにオプション設定以外を行いたいなら、ファイル内の -特定の文字列を調べる autocommand を定義すればよい。例: > - au BufReadPost * if getline(1) =~ "VAR" | call SetVar() | endif -そして "VAR" を含む行に何かを行うための SetVar() 関数を定義すればよい。 - -============================================================================== -3. オプションの要約 *option-summary* - -以下のリストでは、全てのオプションが、正確な名前と (あれば) 略名で示されている。 -どちらの形を使ってもよい。 - -この文書内では、切替オプションを「オンに」するというのは ":set オプション" を -実行することを表す。切り替えオプションを「オフに」するというのは -":set noオプション" を実行することを表す。 - -いくつかのオプションには、既定値が2種類あるものがある: 1つ目は "Vim default" -つまりVimの既定値で、オプション 'compatible' がオフになっているときに使われる。 -2つ目は "Vi default" つまりViの既定値で、オプション 'compatible' がオンになって -いるときに使われる。 - -ほとんどのオプションは全てのウィンドウやバッファで共通である。さてその中には、 -テキストがウィンドウ内でどのように表示されるかを定めるものもある。そういったオ -プションは、ウィンドウごとに違う値にできる。例えばオプション 'list' は、あるウィ -ンドウ内でオンにしても、同じテキストを編集している別のウィンドウ内ではオフに -することができる。すると同時に違った表示方法が使える。また、ファイルごとに特定 -の値にできるオプションもある。そういったオプションは、ファイルごとまたはバッファ -ごとに違う値にできる。例えばオプション 'textwidth' は、通常のテキストファイル -には78にし、Cプログラムのファイルには0にするようにできる。 - - グローバル: - 一つのオプションが全てのバッファやウィンドウに対して適用される - ウィンドウについてローカル: - ウィンドウがそれぞれ、そのオプションのコピーを独自に持つ - バッファについてローカル: - バッファがそれぞれ、そのオプションのコピーを独自に持つ -(訳注: 上の項目については、文書先頭も参照) - -新しいウィンドウを開くとき、ウィンドウ固有のオプションには、その前にアクティブ -だったウィンドウでの値がまず使われる。バッファ固有のオプションは、オプション -'cpoptions' のフラグ 's' とフラグ 'S' によって違ってくる。フラグ 's' が含まれ -ていると (既定ではこうなっている)、新しいバッファが最初にアクティブになったと -きに、その前にアクティブだったバッファでの値がコピーされる。フラグ 'S' が含ま -れていると、バッファがアクティブになる度に値がコピーされる。これはグローバルオ -プションであるようなものである。フラグ 's' もフラグ 'S' も含まれていないときは、 -バッファが作られるときに、その前にアクティブだったバッファでの値がコピーされる。 - -隠しオプション *hidden-options* - -全てのオプションが全てのバージョンでサポートされているわけではない。これは有効 -にされている機能とシステムにもよる。これに関しての注意は以下の波括弧の中にある。 -もしあるオプションがサポートされていなくても、そのオプションへの設定はエラーに -ならず成功する。これを隠しオプションと呼ぶ。しかし隠しオプションの値は保持され -ていないため、取得することはできない。 - -オプション"foo"が":set"で設定できるかどうか判定するにはこのようにする: > - if exists('&foo') -これは隠しオプションに対してもtrueを返す。オプション"foo"が本当にサポートされ -ているかを判定するにはこのようにする: > - if exists('+foo') -< - *E355* -|Q_op| にはオプションの短い説明付きの表があり、そこからヘルプにジャンプできる。 - - *'aleph'* *'al'* *aleph* *Aleph* -'aleph' 'al' 数値 (既定値はMS-DOSでは128、それ以外では224) - グローバル - {Vi にはない} - {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み有効} - ヘブライ語アルファベットの最初の文字を表すASCIIコード。Insertモード - (オプション 'hkmap' がオンのとき) と Command-lineモード (CTRL-_ を打ち - 込んだとき) の両方において、ヘブライモードのキーボード配列をマッピング - するルーチンは、[aleph..aleph+26] の範囲のヘブライ文字を出力する。 - 'aleph'=128 はPCコード、'aleph'=224 は ISO 8859-8 に使われる。 - |rileft.txt| を参照。 - - *'allowrevins'* *'ari'* *'noallowrevins'* *'noari'* -'allowrevins' 'ari' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み有効} - InsertモードとCommand-lineモードで CTRL-_ を使用可能にする。これは既定 - ではオフになっている。ユーザが間違って SHIFT-_ ではなく CTRL-_ を打ち - 込み、右から左に書いていくモードに入って抜けられなくなる事態を防ぐため - である。オプション 'revins' を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'altkeymap'* *'akm'* *'noaltkeymap'* *'noakm'* -'altkeymap' 'akm' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+farsi| 機能付きでコンパイルされたときのみ有 - 効} - オンのとき、2番目の言語が Farsi になる。オプション 'allowrevins' がオ - ンならば、Insertモードでは CTRL-_ で Farsi と英語のキーボードマップを - 切り替えられる。 - - オフのとき、キーボードマップはヘブライ語と英語で切り替えられる。これは - 普通の状態、つまり英語モード (左から右に書く言語のモード) と既定の第2 - 言語である Farsi またはヘブライ語モード (右から左に書く言語のモード)を - 切り替えた上でVimを開始するのに便利である。|farsi.txt| を参照。 - - *'ambiwidth'* *'ambw'* -'ambiwidth' 'ambw' 文字列 (既定では"single") - グローバル - {Vi にはない} - {Vi mが|+multi_byte|機能付きでコンパイルされたときのみ - 有効} - 'encoding'が"utf-8"などユニコードエンコーディングのときのみ効果がある。 - East Asian Width Class Ambiguous な文字(ユーロ、登録商標記号、著作権記 - 号、ギリシャ文字、キリル文字など)をどう扱うかを定める。 - - 現在のところ、設定可能な値は次の2通りである: - "single": US-ASCIIの文字と同じ幅を使う。これはほとんどのユーザに - とって期待どおりになる。 - "double": ASCII文字の2倍の幅を使う。 - *E834* *E835* - "double" は 'listchars' や 'fillchars' に指定された文字が全角幅になっ - てしまう場合は使えません。 - - これらの文字のグリフの幅を、旧い/伝統的なCJKエンコーディングで何オク - テットを占めるかだけによって決めているCJKフォントがたくさんある。その - エンコーディングではユーロ、登録商標記号、ギリシャ文字、キリル文字は2 - オクテットで表現されるので、それらのフォントはこれらの文字に「wideな」 - グリフを当てている。これはテキストファイルで表を作るための罫線文字にも - あてはまる。そのためGUI版のVimにCJKフォントを使うときや、CJKフォント - を使うターミナル(エミュレータ)の中でVimを実行するとき(またはオプション - "-cjkwidth"つきで起動されたxtermの中でVimを実行するとき)にはこのオプ - ションを"double"にして、Vimが認識する幅をフォントのグリフの幅に合わせ - なければならない。CJKのWindows 9x/MEやWindows 2k/XPでもシステムのロケー - ルがCJKロケールのどれかに設定されている場合は多分"double"にしなければ - ならないだろう。 - Unicode Standard Annex #11 (http://www.unicode.org/reports/tr11)を参照。 - - *'antialias'* *'anti'* *'noantialias'* *'noanti'* -'antialias' 'anti' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mがMac OS XでGUIを有効にしてコンパイルされたときの - み有効} - このオプションはMac OS X v10.2以降の上でGUI版のVimを使うときだけ効果が - ある。これがオンであるとなめらかな(アンチエイリアスされた)フォントが使 - われる。このフォントはある種のディスプレイ上、あるサイズでは読み易くな - る。 - 'guifont'が既定値(空文字列)のときこのオプションを設定すると問題が発生 - することがある。 - - *'autochdir'* *'acd'* *'noautochdir'* *'noacd'* -'autochdir' 'acd' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mのコンパイル時に有効にされたときのみ有効。使用で - きるかどうかは exists("+autochdir") で確認できる} - これがオンであるとファイルを開くとき、バッファを切り替えるとき、バッファ - を削除するとき、ウィンドウを開閉するときに毎回作業ディレクトリが変更さ - れる。開かれた/選択されたファイルを含んでいるディレクトリがカレント - ディレクトリになる。 - このオプションはSun ONE Studio 4 Enterprise Editionとともにリリースさ - れたVimとの後方互換性のために提供されている。 - Note: このオプションがオンになっていると動かないプラグインがある。 - - *'arabic'* *'arab'* *'noarabic'* *'noarab'* -'arabic' 'arab' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが|+arabic|機能付きでコンパイルされたときのみ - 有効} - アラビア語のテキストを編集するときにこのオプションを設定することができ - る。 - このオプションを設定すると次のことが行われる: - - 'termbidi'がオンでない限り、オプション'rightleft'をオンにする。 - - 'termbidi'がオンでない限り、オプション'arabicshape'をオンにする。 - - オプション'keymap'を"arabic"に設定する。これによってインサートモード - でCTRL-^を押すと英語とアラビア語のキーマッピングがトグルする。 - - オプション'delcombine'をオンにする。 - アラビア語のテキストを編集するには'encoding'が"utf-8"でなければならな - いことに注意。 - - このオプションをオフにすると次のことが行われる: - - 'rightleft'をオンにする - - 'keymap'の使用を無効にする(その値は変更しない) - 'arabicshape'と'delcombine'はオフにならない(これらはグローバルオプショ - ンである)。 - |arabic.txt|も参照。 - - *'arabicshape'* *'arshape'* - *'noarabicshape'* *'noarshape'* -'arabicshape' 'arshape' 切替 (既定ではオン) - グローバル - {Vi にはない} - {Vi mが|+arabic|機能付きでコンパイルされたときのみ - 有効} - これがオンで'termbidi'がオフになっているとアラビア語を表示するのに必要 - な文字表示補正が行われる。本質的には字形作成(shaping)が有効になる。こ - の用語は次の事を含む広い用語である。 - a) 単語の中の位置(初期、中間、最終、孤立)によって文字を変更/変形させ - る。 - b) 文字合成機能の有効化 - c) ある文字の組み合わせの有効化 - これが無効になっていると、表示がそれぞれの文字の本来の孤立形になる。 - アラビア語は他にも設定が必要な複雑な言語である。より詳しくは - |arabic.txt|を参照。 - - *'autoindent'* *'ai'* *'noautoindent'* *'noai'* -'autoindent' 'ai' 切替 (既定ではオフ) - バッファについてローカル - 新しい行を開始したとき (Insertモードで <CR> を打ち込むか、コマンド "o" - や "O" を使ったとき)、新しい行のインデントを現在行と同じくする。新しい - 行で <BS> か CTRL-D 以外を打ち込まずに <Esc>、CTRL-O か <CR> を打ち込 - むと、その行のインデントは削除される。'cpoptions'にフラグ'I'が入ってい - ないかぎり、カーソルを他の行に移動させても同様である。 - オプション 'autoindent' がオンのときは、テキストの整形処理 (コマンド - "gq" を使ったり、挿入モードで 1行の文字数がオプション 'textwidth' で指 - 定した数に届いたとき) には最初の行のインデントが使われる。 - - オプション 'smartindent' かオプション 'cindent' がオンのときは、インデ - ントの方法は違ってくる。 - オプション 'paste' がオンのときは 'autoindent' はオフになる。 - {Vi との微妙な違い: <Esc> または <CR> を打ち込んでインデントが削除され - た後、上下に移動した後のカーソル位置は削除されたインデントの後ろになる。 - Viでは削除されたインデントの中のどこかになる} - - *'autoread'* *'ar'* *'noautoread'* *'noar'* -'autoread' 'ar' 切替 (既定ではオフ) - グローバルまたはバッファについてローカル |global-local| - {Vi にはない} - ファイルがVimの内部では変更されてないが、Vimの外部で変更されたことが判 - 明したとき、自動的に読み直す。ファイルが削除されたときにはこのようには - ならない。 |timestamp| - このオプションがローカルな値を持つとき、再びグローバルな値を使うように - するには次のようにする。 > - :set autoread< -< - *'autowrite'* *'aw'* *'noautowrite'* *'noaw'* -'autowrite' 'aw' 切替 (既定ではオフ) - グローバル - コマンド :next, :rewind, :last, :first, :previous, :stop, :suspend, - :tag, :!, :make, CTRL-], CTRL-^ を実行したときや、コマンド :buffer, - CTRL-O, CTRL-I, '{A-Z0-9}, `{A-Z0-9} の移動先が別のファイルのとき、ファ - イルが変更されているなら書き込む。 - Note 'autowrite' が適用されないコマンドもあることに注意。それについて - はオプション 'autowriteall' を参照。 - - *'autowriteall'* *'awa'* *'noautowriteall'* *'noawa'* -'autowriteall' 'awa' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オプション 'autowrite' と似ているが、さらにコマンド ":edit", ":enew", - ":quit", ":qall", ":exit", ":xit", ":recover" を実行したときや、Vimの - ウィンドウを閉じるときも、ファイルが変更されているなら保存する。このオ - プションをオンにすると、同時に 'autowrite' もオンになったような動作に - なる (訳注:このオプションは 'autowrite' の適用されるコマンド全てに適用 - されるので)。 - - *'background'* *'bg'* -'background' 'bg' 文字列 (既定は "dark" または "light"、下記参照) - グローバル - {Vi にはない} - 値が "dark" のときは、Vimは暗い背景によく合う色を使おうとする。値が - "light" のときは、Vimは明るい背景によく合う色を使おうとする。その他の - 値は無効である。 - Vimは使われているターミナルの種類に従って既定の値を定めるが、常に正し - いとは限らない。 - このオプションを変更しても背景色は変わらない。これはただVimに背景色が - どのようなものかを伝えるだけである。背景色の変更には |:hi-normal| を参 - 照。 - - オプション 'background' が変更されると、Vimは既定の色設定グループをを - その値に合わせて調整する。しかし構文強調表示に使われる色設定は変化しな - い。 *g:colors_name* - カラースキームが読み込まれているとき (つまり変数 "g:colors_name" が設定さ - れているとき) 'background' を変更するとカラースキームが再び読み込まれ - る。カラースキームが 'background' に対応していればこれは適用される。し - かしカラースキームが 'background' 自体を設定しているときは効果がない。 - 必要ならば変数 "g:colors_name" を消去すること。 - - 'background' を次のようにして既定値に戻したとき、 > - :set background& -< Vimはその値を推測する。GUI版ならばうまくいくはずだが、そうでなければ正 - しい値を推測できないかもしれない。 - - GUIを開始したとき、'background' の既定値は "light" である。値がファイ - ル .gvimrc で定められておらず、Vimが背景色は実際は暗いと判断したときは、 - 'background' は "dark" になる。しかしこれは .gvimrc が読み込まれた「後」 - に行われる (実際の背景色を知るためにウィンドウが開かれる必要があるか - ら)。これを避けるには、コマンド ":gui" を .gvimrc の中の 'background' - の値が使われる前に置いて (例えば ":syntax on" の前) GUIウィンドウを強 - 制的に開かせればよい。 - - MS-DOS、Windows、OS/2 では初期設定は "dark" です。 - 他のシステムでは 'term' が "linux"、"screen.linux"、"cygwin"、 - または "putty" であるか、$COLORFGBG によってが暗い背景が推奨されていれ - と初期設定は "dark" になります。そうでなければ初期設定は "light" で - す。 - - 通常、このオプションは .vimrc 内で設定される。設定はターミナルの名前に - 依存するでしょう。例: > - :if &term == "pcterm" - : set background=dark - :endif -< このオプションが設定されると、強調表示の既定の設定が変更される。他の設 - 定を使いたいなら、'background' を設定した「後」にコマンド ":highlight" - を置くこと。 - このオプションはファイル "$VIMRUNTIME/syntax/syntax.vim" 内でも、構文 - 強調表示のための色を選択するのに使われる。このオプションを設定した後は - syntax.vim を再読み込みしないと結果が分からない。これにはコマンド - ":syntax on" を実行すればよい。 - - *'backspace'* *'bs'* -'backspace' 'bs' 文字列 (既定では "") - グローバル - {Vi にはない} - Insertモードでの <BS>, <Del>, CTRL-W, CTRL-U の働きに影響する。値はキー - ワードのコンマ区切りのリストである。それぞれのキーワードがバックスペー - スの働く対象を定めている。 - 値 効果 ~ - indent autoindent を超えてバックスペースを働かせる - eol 改行を超えてバックスペースを働かせる (行を連結する) - start 挿入区間の始めでバックスペースを働かせるが CTRL-W と CTRL-U は - 挿入区間の始めでいったん止まる - - 値が空のときは、バックスペースの働きはVi互換になる。 - - バージョン 5.4 またはそれ以前との互換性を保つには次のようにする。 - 値 効果 ~ - 0 ":set backspace=" と同じ (Vi互換) - 1 ":set backspace=indent,eol" と同じ - 2 ":set backspace=indent,eol,start" と同じ - - <BS> や <Del> で望み通りの動作ができないときは |:fixdel| を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときは "" にな - るので注意。 - - *'backup'* *'bk'* *'nobackup'* *'nobk'* -'backup' 'bk' 切替 (既定ではオフ) - グローバル - {Vi にはない} - ファイルを上書きする前にバックアップを作る。書き込みが成功してもバック - アップはそのまま取っておく。バックアップを取っておきたくはないが、書き - 込み中にはバックアップが欲しいときには、このオプションをオフにしてオプ - ション 'writebackup' をオンにすること (既定ではそうなっている)。全くバッ - クアップが要らないなら両方をオフにすること (ユーザのファイルシステムが - ほとんど満杯ならこうするとよい)。詳しくは |backup-table| を参照。 - どちらにしてもオプション 'backupskip' のパターンがマッチすると、バック - アップは作られない。オプション 'patchmode' がオンのときは、バックアッ - プはリネームされてファイルの最も古いバージョンになることがある。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'backupcopy'* *'bkc'* -'backupcopy' 'bkc' 文字列 (UnixでのViの既定値: "yes" 、それ以外: "auto") - グローバル - {Vi にはない} - ファイルの書き込みをしてバックアップが作られるとき、その方法をこのオプ - ションで指定する。このオプションはコンマで区切られた単語のリストである。 - - 主な値は次の通り: - "yes" 先にファイルのコピーを作ってバックアップにして、更新した内容は - 元のファイルに上書きする - "no" 先に元のファイルをリネームしてバックアップにして、更新した内容 - は新しいファイルに書き出す - "auto" どちらか適切な方を選ぶ - - 次の値を上のどれか1つと組み合わせることができる: - "breaksymlink"は書き込み時に常にシンボリックリンクを切る。 - "breakhardlink"は書き込み時に常にハードリンクを切る。 - - 訳注: - $ ls -lF - total 2 - -rw-r--r-- 1 ao ao 24 9 17 12:26 hontai - lrwxr-xr-x 1 ao ao 6 9 17 12:29 l@ -> hontai - - となっているとき、ファイルlを編集して:wすると、 - - backupcopy=auto の場合: - -rw-r--r-- 1 ao ao 24 9 17 12:26 l~ - lrwxr-xr-x 1 ao ao 6 9 17 12:29 l@ -> hontai - -rw-r--r-- 1 ao ao 27 9 17 12:31 hontai - - backupcopy=auto,breaksymlink の場合: - -rw-r--r-- 1 ao ao 27 9 17 12:26 hontai - lrwxr-xr-x 1 ao ao 6 9 17 12:29 l~@ -> hontai - -rw-r--r-- 1 ao ao 30 9 17 12:32 l - - という結果になる。 - - ファイルのコピーを作ってから元のファイルを上書きする方法: - X ファイルのコピーに余計な時間がかかる。 - O 編集したファイルが特別な属性を持っていたり、ファイルがハードリンクや - シンボリックリンクであったり、リソースフォークを持っているときでも、 - 全て元のまま保たれる。 - X 編集したファイルがリンクのとき、バックアップの名前がリンク先の文書の - 名前でなく、リンクの名前になってしまう。 - - ファイルをリネームしてから新しいファイルに書き出す方法: - O 高速である。 - X 時々、元のファイルの属性の一部しか新しいファイルにコピーされないこと - がある。 - X 編集したファイルがリンクのとき、新しいファイルはリンクにならない。 - - "auto" の値にすると折衷策を採る。Vimが副作用なしにリネームの方法が使え - ると判断したとき (属性がコピーでき、ファイルがリンクでないとき) は、そ - ちらが使われる。それでは問題がありそうなときはコピーの方法が使われる。 - - "breaksymlink"と"breakhardlink"の値は"yes", "no", "auto"のどれとも組み - 合わせることができる。これらが含まれていると、必ず"no"とまったく同じよ - うにシンボリックリンクやハードリンクを切るようになり、元のファイルがそ - のままバックアップになり、新しいファイルが作成される。これは例えば全て - のファイルがシンボリックリンクやハードリンクになっているソースツリーで - 便利である。変更がローカルのソースツリーに対してだけ行われ、元のソース - ツリーには反映されない。 - *crontab* - "no" と "auto" では問題が起きる場合がある。プログラムによっては、ファ - イルを開き、Vimを呼び出してそのファイルを編集させ、(ファイル区別プログ - ラムを使って) そのファイルが変更されたかどうかを調べるものがある。そう - したプログラムは新しく書き出されたファイルではなく、バックアップファイ - ルの方を調べてしまう。例としては "crontab -e" が挙げられる。 - - コピーの方法のときは、元のファイルの中身はいったん空になり、そこに新し - いテキストが書き込まれる。つまり、元のファイルの保護ビット、ファイル所 - 有者やシンボリックリンクは変更されない。しかし、新しく作られることにな - るバックアップファイルは、ファイルを編集したユーザの所有となる。また - バックアップファイルの属するグループは、元のファイルと同じグループにな - る。これが失敗すると、他の属性と同様に、そのグループの保護ビットが設定 - される。 - - リネームの方法のときは別の結果になる。バックアップファイルは元のファイ - ルと同じ属性を持ち、新しく書き出されたファイルは、ファイルを編集したユー - ザの所有となる。開いたファイルがハードリンクまたはシンボリックリンクだっ - た場合でも、新しく書き出されたファイルはリンクにならない!だから値が - "auto" のとき、ファイルがリンクならリネームを行わないのである。新しく - 書き出されたファイルの所有者と属するグループは、元のファイルと同じとし - て設定される。しかしシステムがこうすることを許可しないかもしれない。そ - の場合、値が "auto" ならもうファイルのリネームをしようとはしない。 - - *'backupdir'* *'bdir'* -'backupdir' 'bdir' 文字列 (Amigaでの既定値: ".,t:", - MS-DOSとWin32での既定値: ".,c:/tmp,c:/temp" - Unixでの既定値: ".,~/tmp,~/") - グローバル - {Vi にはない} - 値は、バックアップファイル用ディレクトリの、コンマ区切りのリストである。 - - バックアップファイルは、リスト内の、使用可能な最初のディレクトリの中 - に作られる。Vim はそのディレクトリを作成しないので、存在していなけれ - ばならない。 - - 値が空だと、バックアップファイルは作られない ('patchmode' は使えなく - なる!)。そのため書き込みが失敗するかもしれない。 - - ディレクトリに "." を指定するのは、バックアップファイルを、編集され - たファイルと同じディレクトリに作るということである。 - - ディレクトリが "./" (MS-DOS等では ".\") で始まるのは、バックアップファ - イルを作るディレクトリを、編集されたファイルとの相対的な位置で決める - ということである。最初の "." は編集されたファイルのパス名で置き換え - られる (ディレクトリ名の内部の "." には特別な意味はない)。 - - コンマの後の空白は無視されるが、他の場所の空白はディレクトリ名の一部 - と見なされる。ディレクトリ名の先頭に空白を使いたいなら、その空白の前 - に '\' を置くこと。 - - ディレクトリ名にコンマを使いたいなら、そのコンマの前に '\' を置くこ - と。 - - ディレクトリ名は '/' で終わってもよい。 - - 環境変数は展開される |:set_env|。 - - 文字 '\' には注意。空白の前には1個置き、オプションの値に '\' 自身を - 含めるなら2個置く (|option-backslash| を参照)。例: > - :set bdir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces - (訳注: 結果は backupdir=c:\tmp, dir\,with\,commas,\ dir with space) -< - Vim version 3.0 との後方互換性のため、値の先頭の '>' は取り除かれる。 - オプション 'backup' および 'writebackup' も参照。 - Unixでユーザのバックアップファイルを隠したいなら、次のようにしてみるこ - と。 > - :set backupdir=./.backup,~/.backup,.,/tmp -< この方法を使うには、それぞれのディレクトリとあなたのホームディレクトリ - にディレクトリ ".backup" を作らなければならない。 - リストにディレクトリを追加するときにはコマンド |:set+=|、リストからディ - レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来 - のヴァージョンで異なった既定値が使われるようになったときに、問題が起き - るのを防げる。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'backupext'* *'bex'* *E589* -'backupext' 'bex' 文字列 (既定では "~", VMSでは "_") - グローバル - {Vi にはない} - バックアップファイルの名前を作る際、元のファイル名の後ろに付け加える文 - 字列。既定では普段使いそうもないものに定めてあるが、これは既存のファイ - ルをバックアップファイルで上書きするのを避けるためである。".bak" を使 - いたいかもしれないが、大事なファイルに ".bak" で終わるものがないか確か - めること。 - 通常のファイル名文字だけ使える。"/\*?[|<>"は不正である。 - - たくさんのバックアップを残しておきたいなら、自動コマンドBufWritePreを - 使ってファイルを書き込む直前に'backupext'にタイムスタンプを含めるよう - に変更するとよい。 > - :au BufWritePre * let &bex = '-' . strftime("%Y%b%d%X") . '~' -< バックアップを別のディレクトリに保存させるには、オプション'backupdir' - を設定すること。 - - *'backupskip'* *'bsk'* -'backupskip' 'bsk' 文字列 (既定では "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") - グローバル - {Vi にはない} - {Vi mが |+wildignore| 機能付きでコンパイルされたときの - み有効} - ファイル名のパターンのリスト。書き込みをするファイルの名前にマッチする - パターンがこの中にあれば、そのファイルのバックアップは作られない。ファ - イル名を指定してもよいし、ファイルのフルパスを指定 (訳注: C:/temp/* 等 - の方法。既定値ではこの方法で一時ファイル用のディレクトリを指定し、一時 - ファイルのバックアップを作らないようにしている) してもよい。 - パターンの指定方法は |:autocmd| と同じである。|autocmd-patterns| を参 - 照。特別な文字に注意するために |option-backslash| を参照。 - 環境変数の$TMPDIR, $TMP または $TEMP が定義されていないとき、それらは - 既定値に使われない。"/tmp/*" はUnixでのみ使われる。 - - 環境変数は展開されない。$HOMEを使いたい場合は、明示的に展開しなければ - ならない。例: > - :let backupskip = escape(expand('$HOME'), '\') . '/tmp/*' - -< 既定値は"crontab -e"が正常に機能するように定められている(元のファイル - をリネームすることによってバックアップを作ると、crontabは新しく作られ - たファイルを参照しない)。'backupcopy'と|crontab|も参照。 - - *'balloondelay'* *'bdlay'* -'balloondelay' 'bdlay' 数値 (既定では 600) - グローバル - {Vi にはない} - {Vi mが |+balloon_eval| 機能付きでコンパイルされたとき - のみ有効} - バルーン表示が出るまでの時間 (ミリ秒単位)。|balloon-eval| を参照。 - - *'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'* -'ballooneval' 'beval' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+balloon_eval| 機能付きでコンパイルされたとき - のみ有効} - |balloon-eval| 機能を働かせる。 - - *'balloonexpr'* *'bexpr'* -'balloonexpr' 'bexpr' 文字列 (既定では "") - グローバル/バッファについてローカル|global-local| - {Vi にはない} - {Vi mが|+balloon_eval|機能付きでコンパイルされたときの - み有効} - バルーンウィンドウに表示するテキストの式。'ballooneval'がオンのときの - み使われる。以下の変数を使用できる: - - v:beval_bufnr バルーンを表示するバッファの番号 - v:beval_winnr ウィンドウの番号 - v:beval_lnum 行番号 - v:beval_col 桁番号(バイトインデックス) - v:beval_text マウスポインタの下、または後ろにある単語 - - この式の評価には副作用があってはならない。 - 例: > - function! MyBalloonExpr() - return 'Cursor is at line ' . v:beval_lnum . - \', column ' . v:beval_col . - \ ' of file ' . bufname(v:beval_bufnr) . - \ ' on word "' . v:beval_text . '"' - endfunction - set bexpr=MyBalloonExpr() - set ballooneval -< - NOTE: バルーンはカーソルがテキスト文字の上にあるときだけ表示される。 - 'balloonexpr'を評価した結果が空でないなら、Vimは外部デバッガ(Netbeans - またはSun Workshop)にメッセージを送ろうとしない。 - - この式はサンドボックス|sandbox|の中でも評価できる。|sandbox-option|を - 参照。 - - バルーンのテキスト中の改行が機能するかを調べるにはこれを使う: > - if has("balloon_multiline") -< これがサポートされているなら文字列"\n"は新規行を開始する。この式を評価 - した結果がリスト|List|になる場合は、そのリストの各要素を文字列とし、 - それらの間に"\n"を置くのと同じことになる。 - - *'binary'* *'bin'* *'nobinary'* *'nobin'* -'binary' 'bin' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - バイナリファイルを編集する前には、このオプションをオンにすべきである。 - Vimの起動時に引数 |-b| を使ってもよい。オンのときは、いくつかのオプショ - ンの設定が変わる。 - 'textwidth' は 0 になる - 'wrapmargin' は 0 になる - 'modeline' は オフ になる - 'expandtab' は オフ になる - またオプション 'fileformat' と 'fileformats' は無視され、読み込みと書 - き込みは 'fileformat' が "unix" のときのようになる (1個の <NL> が改行 - になる)。 - さらにオプション 'fileencoding' と 'fileencodings' も無視され、ファイ - ルは変換なしに読み込まれるようになる。 - NOTE: オプション 'bin' がオンのときに新しくファイルを読み込むと、 - autocommand によって設定が再び変えられ (例えば 'textwidth')、編集時に - 問題を起こす ことがあるので注意。ファイルを読み込んだ後に再び 'bin' を - オンにするとよい。 - 変更されるオプションの値は記憶されているので、オプション 'bin' がオフに - 戻るとそれらの値も復元される。それらの値はバッファごと独自に記憶される。 - 引数|++bin|を使うと、'binary'をオンにしてファイルを開くことができる。 - これを使うと":set bin"としなくてすむ。":set bin"は編集する全てのバッファ - に対して効果を持つ。 - 'bin' がオンならば、ファイルを書き込むときに最終行に <EOL> が付け加え - られるのは、元のファイルにすでに <EOL> があるときだけである (普通は、 - 最終行に <EOL> がないならVimはそれを付け加える。こうするとその分ファイ - ルが長くなる)。オプション 'endofline' を参照。 - - *'bioskey'* *'biosk'* *'nobioskey'* *'nobiosk'* -'bioskey' 'biosk' 切替 (既定ではオン) - グローバル - {Vi にはなく、MS-DOS版のみ} - オンのとき、キーボードで打ち込まれた文字を取得するためにバイオスが呼び - 出される。これは CTRL-C を認識するためにはよいが、コンソールでしか機能 - しない。ターミナルをシリアルポートから利用する場合は、オフにすること。 - 'conskey' も参照。 - - *'bomb'* *'nobomb'* -'bomb' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み有効} - ファイルを書き込むときに以下の条件が満たされれば、BOM (Byte Order Mark - --訳注: バイト順マーク。Unicodeを適切に扱うために使われるマーク) がファ - イル先頭に付けられる。 - - このオプションがオンである - - 'binary' がオフである - - 'fileencoding' が "utf-8", "ucs-2" または "ucs-4" である (リトルエン - ディアンとビッグエンディアンの違いは無視) - アプリケーションの中には、ファイルのエンコーディングを認識するために - BOM を使うものがある。MS-Windows で UCS-2 ファイルのためによく使われる。 - しかし、アプリケーションによってはこれが問題になることもある。例えば - "cat file1 file2" とすると、file2の BOM がファイル途中に現れてしまう。 - gcc は BOM を受け付けない。 - ファイルを読み込むときに 'fileencodings' が "ucs-bom" で始まるならば、 - BOM が存在するかどうかが調べられ、その結果に従って 'bomb' が設定される。 - 'binary' がオンでなければ BOM は編集時には取り除かれ、ユーザの目には触 - れない。'bomb' をオフにしたり 'binary' をオンにしたり 'fileencodings' - を変えなければ、ファイルの書き込み時に再び BOM が復元される。 - - *'breakat'* *'brk'* -'breakat' 'brk' 文字列 (既定では " ^I!@*-+;:,./?") - グローバル - {Vi にはない} - {Vi mが |+linebreak| 機能付きでコンパイルされたときの - み有効} - オプション 'linebreak' がオンのとき、どの文字のところで行が折り返され - て表示されるかを、このオプションで指定する。これが機能するのはASCIIと - 8bit文字('encoding'が8bitエンコーディングのとき)だけである。 - - *'browsedir'* *'bsdir'* -'browsedir' 'bsdir' 文字列 (既定では "last") - グローバル - {Vi にはなく、Motif, Athena, Mac, Win32のGUI版のみ} - ファイルブラウザの開始時、どのディレクトリを開くかを指定する。 - last 前回にファイルブラウザでファイルを開く・または保存した - ディレクトリ - buffer バッファで開いているファイルのディレクトリ - current カレントディレクトリ - {path} {path} で指定されたディレクトリ - - *'bufhidden'* *'bh'* -'bufhidden' 'bh' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+quickfix| 機能付きでコンパイルされたときの - み有効} - バッファがウィンドウ内に表示されなくなったときの動作を指定する。 - <empty> グローバルオプション 'hidden' に従う - hide バッファを隠す (解放しない)。'hidden' がオフでもそうす - る。 - unload バッファを解放する。'hidden' がオフのときも、コマンド - |:hide| を使ったときもそうする。 - delete バッファをバッファリストから削除する。'hidden' がオン - のときも、|:hide| を使ったときも、|:bdelete| を使った - ときのように、リストから削除する。 - wipe バッファをバッファリストから完全に削除(wipe out)する。 - 'hidden' がオンのときも、|:hide| を使ったときも、 - |:bwipeout| を使ったときのように、リストから削除する。 - - 注意: "unload", "delete", "wipe"を設定すると、バッファの変更は警告 - 無しに失われる。 - このオプションは 'buftype' や 'swapfile' と共に使われ、特殊な用途のバッ - ファを指定する。|special-buffers| を参照。 - - *'buflisted'* *'bl'* *'nobuflisted'* *'nobl'* *E85* -'buflisted' 'bl' 切替 (既定ではオン) - バッファについてローカル - {Vi にはない} - オンのときは、バッファはバッファリストに表示される。オフのときは、その - バッファはコマンド ":bnext" や ":ls" およびバッファメニュー等の対象に - ならない。 - ファイル名やマークを思い出したりするためだけのバッファでは、このオプショ - ンはオフになる。バッファの編集を始めたときは、このオプションはオンにな - る。しかし ":buffer" でバッファに移動したときはオンにはならない。 - - *'buftype'* *'bt'* *E382* -'buftype' 'bt' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+quickfix| 機能付きでコンパイルされたときの - み有効} - このオプションはバッファの種類を指定する。 - <empty> 普通のバッファ - nofile ファイルと関連がなく、書き込まれる予定のないバッファ - nowrite 書き込まれる予定のないバッファ - acwrite いつも自動コマンドBufWriteCmdで書き込まれる予定のバッ - ファ。{Vi mが|+autocmd|機能付きでコンパイルされたとき - のみ有効} - quickfix エラーリスト/ロケーションリスト用の quickfix バッファ - (|:cwindow|, |:lwindow|を参照) - help ヘルプバッファ (ユーザが手動でこれに設定することはない - はずである) - - このオプションはオプション 'bufhidden' や 'swapfile' と共に使われ、特 - 殊な用途のバッファを指定する。|special-buffers| を参照。 - - このオプションの変更には十分注意すること。多くの副作用が起こるかもしれ - ない! - - "quickfix" バッファはエラーリストとロケーションリストにのみ使われる。 - この値はコマンド|:cwindow| と|:lwindow|で設定され、ユーザが変更するこ - とはないはずである。 - - "nofile" バッファと "nowrite" バッファは似ている。 - 両方とも、 バッファの内容はファイルに書き込まれない。":w" が使え - ない (":w 新ファイル名" は使える)。 - 両方とも、 バッファの内容が変更された 'modified' と認識されること - がない。Vimの終了時等、変更点が失われるときでも警告が - 現れない。 - 両方とも、 スワップファイルはメモリを大量に消費したときのみ作られ - る ('swapfile' がオフだと、スワップファイルは作られな - い)。 - nofile だけは、 バッファ名は固定され、ファイル名のようには扱われない。 - |:cd| の結果としてバッファ名が変わることはない。 - *E676* - "acwrite"は"nofile"と同様にバッファ名がファイルと関係していないことを - 意味するが、"nofile"と違って保存される。すなわち、"nofile"と"nowrite" - 違って":w"ができ、変更されたバッファを保存せずに破棄することはできない。 - これを保存するには、マッチする自動コマンド|BufWriteCmd|, - |FileWriteCmd|, |FileAppendCmd|がなければならない。 - - *'casemap'* *'cmp'* -'casemap' 'cmp' 文字列 (既定では"internal,keepascii") - グローバル - {Vi にはない} - {Vi mが|+multi_byte|機能付きでコンパイルされたときのみ - 有効} - 大文字・小文字の変更について詳細を指定する。このオプションはコンマ区切 - りで以下の単語を含む: - internal 内部の大文字・小文字対応関数を使う。現在のロケールに - よって対応が変更されない。これは'encoding'がユニコード - エンコーディング, "latin1", "iso-8859-15"のときのみ問 - 題になる。"internal"が除かれるとシステムライブラリ関数 - towupper()とtowlower()が利用可能ならば使われる。 - keepascii アスキー文字(0x00から0x7f)についてはUS大文字小文字対応 - を使う。現在のロケールは効果を持たない。 - これはおそらくトルコ語でだけ問題になる。 - - *'cdpath'* *'cd'* *E344* *E346* -'cdpath' 'cd' 文字列 (既定では環境変数 $CDPATH または ",,") - グローバル - {Vi にはない} - {Vi mが |+file_in_path| 機能付きでコンパイルされたとき - のみ有効} - コマンド |:cd| や |:lcd| を使ったときに検索されるディレクトリのリスト。 - ただし検索されるディレクトリが "/", "./" や "../" で始まるときはこのオ - プションは使われない。 - オプション 'cdpath' には、'path' と同様の指定方法を使う。 - |file-searching| も参照。 - 既定値は環境変数 $CDPATH から取り込まれるが、カレントディレクトリを最 - 初に探すために "," が先頭に挿入される。 - $CDPATH から取り込まれたものが望ましくないときは、値を上書きするために、 - 次のコマンドを適当に修正し、ユーザのファイル vimrc に加えること。 > - :let &cdpath = ',' . substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g') -< 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。('cdpath' の値の一部は、 - ファイル名を展開するためにシェルに渡すことができる)。 - - *'cedit'* -'cedit' 文字列 (Viの既定値: "", Vimの既定値: CTRL-F) - グローバル - {Vi にはない} - {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み有効} - Command-lineモードで、Command-lineウィンドウを開くために使われるキー。 - オプション 'compatible' がオフならば、既定では CTRL-F である。 - non-printable なキー (訳注: 文書先頭を参照) しか指定できない。キーは単 - 一の文字として設定することもできるが、それでは入力しにくい。<> を使っ - た表記を推奨する。例: > - :set cedit=<C-Y> - :set cedit=<Esc> -< |Nvi| にもこのオプションがあるが、最初の1文字だけが使用される。 - |cmdwin| を参照。 - - *'charconvert'* *'ccv'* *E202* *E214* *E513* -'charconvert' 'ccv' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+multi_byte| 機能および |+eval| 機能付きでコ - ンパイルされたときのみ有効} - 文字エンコーディングの変換に使われる expression を定める。これは読み込 - まれようとしているファイルや書き込みをしたファイルのエンコーディングが、 - 望むものと違うときに評価される。 - オプション 'charconvert' の値は、内部関数 iconv() がサポートされ、それ - による変換が可能ならば使われることはない。ずっと高速なため、iconv() の - 使用を推奨する。 - 'charconvert' は標準入力 (stdin |--|) から読み込みときには使われない。 - なぜなら変換元のファイルが存在しないからだ。まずテキストの内容をファイ - ルに保存しなければいけない。 - 使われる expression は、変換成功時には空文字列または0、失敗時には非0を - 返さなければならない。 - 使用可能なエンコーディング名は 'encoding' で設定されている (訳注: よく - 分からない。原文は The possible encoding names encountered are in - 'encoding'.)。それに加え、'fileencodings' と 'fileencoding' に設定され - ているエンコーディング名も使われる。 - "latin1", "unicode", "ucs-2", "ucs-4", "utf-8" の間の変換はVimの内部で - 行われ、 'charconvert' は使われない。'viminfo' の中にフラグ 'c' が含ま - れるならば、'charconvert' はファイル viminfo の変換にも使われる。また - Unicode の変換にも使われる。 - 例: > - set charconvert=CharConvert() - fun CharConvert() - system("recode " - \ . v:charconvert_from . ".." . v:charconvert_to - \ . " <" . v:fname_in . " >" v:fname_out) - return v:shell_error - endfun -< 関連するVimの変数は以下の通り。 - v:charconvert_from 現在のエンコーディング名 - v:charconvert_to 希望するエンコーディング名 - v:fname_in 入力ファイル名 - v:fname_out 出力ファイル名 - Note 変数 v:fname_in と v:fname_out とは、決して同じになってはいけない - ので注意。 - Note v:charconvert_from と v:charconvert_to の値は 'encoding' と異なる - かもしれないので注意。Vim内部では UCS-2 または UCS-4 の代わりには - UTF-8 を使っている。 - Vim は 'charconvert' を用いたエンコーディング変換では暗号化をしない。 - 変換後に暗号化をしたいなら、'charconvert' にそうさせる必要がある。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'cindent'* *'cin'* *'nocindent'* *'nocin'* -'cindent' 'cin' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - {Vi mが |+cindent| 機能付きでコンパイルされたときのみ - 有効} - Cプログラムファイルの自動インデントを行う。Insertモードで再インデント - を引き起こす文字列を指定するにはオプション 'cinkeys' を、好みのインデ - ントスタイルを設定するには 'cinoptions' を参照。 - 'indentexpr' の値が空でないなら、それは 'cindent' の設定を上書きする。 - 'lisp' がオフで、'indentexpr' と 'equalprg' の両方の値が空なら、"=" に - よるインデントはこのアルゴリズムを使い、外部プログラムを使わない。 - |C-indenting| を参照。 - 'cindent' の動作が気に入らないならば、'smartindent' か 'indentexpr' を - 試してみること。 - このオプションは 'paste' がオンのときには使われない。 - NOTE: このオプションは 'compatible' がオンのときはオフになるので注意。 - - *'cinkeys'* *'cink'* -'cinkeys' 'cink' 文字列 (既定では "0{,0},0),:,0#,!^F,o,O,e") - バッファについてローカル - {Vi にはない} - {Vi mが |+cindent| 機能付きでコンパイルされたときのみ - 有効} - Insertモードで入力されたときに、現在行の再インデントを引き起こす文字の - リスト。オプション 'cindent' がオンで、かつ 'indentexpr' が空の時のみ - 使われる。 - このオプションの設定方法については |cinkeys-format| を参照。 - また |C-indenting| を参照。 - - *'cinoptions'* *'cino'* -'cinoptions' 'cino' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+cindent| 機能付きでコンパイルされたときのみ - 有効} - このオプションは、'cindent' でのC言語ソース内の行の再インデント方法に - 影響を与える。このオプションの値については |cinoptions-values| を、一 - 般的なC言語ソースのインデントの情報については |C-indenting| を参照。 - - - *'cinwords'* *'cinw'* -'cinwords' 'cinw' 文字列 (既定では "if,else,while,do,for,switch") - バッファについてローカル - {Vi にはない} - {Vi mが |+cindent| 機能と |+smartindent| 機能(両方)付 - きでコンパイルされたときのみ有効} - オプション 'smartindent' か 'cindent' がオンのとき、ここに指定したキー - ワードの次の行は、さらにインデントされる。'cindent' がオンのときには、 - 適切な場所 ({} の内側) でのみ機能する。 - NOTE 'ignorecase' は 'cinwords' の値には適用されないので注意。大文字か - 小文字かを区別したくないなら、値に両方を指定すること。例: "if,If,IF" - - *'clipboard'* *'cb'* -'clipboard' 'cb' 文字列 (既定値はX-windowsでは - "autoselect,exclude:cons\|linux" - それ以外では "") - グローバル - {Vi にはない} - {Vi mのGUIバージョンか |+xterm_clipboard| 機能付きでコ - ンパイルされたもののみ有効} - コンマ区切りのキーワードのリストを指定する。 - 認識されるのは、以下のキーワードである。 - - unnamed これが含まれると、コピー、削除、変更、ペーストなどの操 - 作で、普通なら無名レジスタが使われるところで、全てク - リップボードレジスタ "*" が使われるようになる。ただし - レジスタ名を陽に指定すれば、オプション 'clipboard' に - "unnamed" が含まれているかいないかに関わらず、指定され - たレジスタが使われる。またクリップボードレジスタは、"* - という記法を用いれば常にアクセスできる。 - |gui-clipboard| も参照。 - - unnamedplus "unnamed" と似ていますがヤンク以外のすべての操作でレジ - スタ '*' ではなくレジスタ '+' (|quoteplus|) が使われま - す。ヤンクしたときはレジスタ '+' にテキストがコピーさ - れ、"unnamed" が指定されていればレジスタ '*' にもコ - ピーされます。 - |+X11| 機能が有効な場合のみ利用可能。 - 利用できるかどうかは次のコマンドで確認できます: > - if has('unnamedplus') -< - autoselect 'guioptions' のフラグ 'a' のように働く: これが含まれる - と、Visualモードが開始されるたび、または Visual選択範 - 囲が変更されるたびに、Vimはウィンドウシステムのグロー - バルなクリップボードのオーナーになろうとするか、選択さ - れたテキストをクリップボード用レジスタ "* を使ってクリッ - プボードにコピーしようとする。詳細は |guioptions_a| と - |quotestar| を参照。GUI機能が有効のときは 'guioptions' - のフラグ 'a' が使用され、無効のときはこの "autoselect" - フラグが使用される。また、モードレスなセレクションにも - 適用される。 - - autoselectml "autoselect" と似ているが、モードレスセレクションのみ - に適用される。'guioptions' のフラグ 'A' と比較してみる - こと。 - - html クリップボードの内容が HTML であるとき、貼り付け時に使 - われる。テキストをクリップボードにコピーするとき、 - HTML としてマークアップする。Firefox で描画された HTML - あをコピーして Vim で HTML ソースとして貼り付けるとき - や、Vim で HTML を選択して Firefox のリッチエディット - ボックスに貼り付けるときに使われる。 - これを一時的にのみ使いたい場合は BufEnter 自動コマンド - を使うといいかもしれない。 - GTK 2 以降のみ対応している。 - |+multi_byte| 機能が有効なときのみ利用可能。 - - exclude:{pattern} - ターミナルの名前 'term' にマッチするパターンを定義する。 - パターンがマッチすると、Xサーバとの通信がなされなくなる。 - このオプションは以下の場合に便利である。 - - Vimをコンソールで使用しているとき。 - - アプリケーションを別のディスプレイで使うため、環境変 - 数 $DISPLAY が設定されているとき。 - - コンソールではXサーバと通信してほしくないが、ターミ - ナルエミュレータ上では通信してほしいとき。 - - コンソールでVimを使用している最中にXサーバが終了させ - られ、Vimをキルせざるを得ないかもしれないとき。 - Xサーバと全く通信しないようにするには、次のようにする。 > - exclude:.* -< これは引数 |-X| を使用したのと同じ効果を持つ。 - Note Xサーバと通信していないとき、ウィンドウタイトルは - 復元されず、クリップボードにはアクセスできない。 - 'magic' の値は無視され、 {pattern} は 'magic' がオンの - ときのように解釈される。オプション 'clipboard' の値の - 残りは {pattern} として認識されるので、"exclude" は最 - 後に指定しなければならない。 - - *'cmdheight'* *'ch'* -'cmdheight' 'ch' 数値 (既定では 1) - グローバル - {Vi にはない} - コマンドラインに使われる画面上の行数。|hit-enter| プロンプトの出現を避 - けるのに役立つ。 - 各タブページが異なる値を持てるようにするために、このオプションの値はタ - ブページに保存される。 - - *'cmdwinheight'* *'cwh'* -'cmdwinheight' 'cwh' 数値 (既定では 7) - グローバル - {Vi にはない} - {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み有効} - コマンドライン・ウィンドウに使われる画面上の行数。|cmdwin| を参照。 - - *'colorcolumn'* *'cc'* -'colorcolumn' 'cc' 文字列 (既定では "") - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+syntax| 機能付きでコンパイルされたときのみ有 - 効} - 'colorcolumn' はスクリーンの列をカンマ区切りで指定します。指定された列 - は ColorColumn (|hl-ColorColumn|) で強調表示されます。テキストを整列す - るときに便利です。スクリーンの表示は遅くなります。 - 列番号は絶対値で指定するか、番号に '+' か '-' を前置して 'textwidth' - からの相対値として指定します。 > - - :set cc=+1 " highlight column after 'textwidth' - :set cc=+1,+2,+3 " highlight three columns after 'textwidth' - :hi ColorColumn ctermbg=lightgrey guibg=lightgrey -< - 'textwidth' がゼロのときは '-' と '+' で指定されたアイテムは使用されま - せん。 - 最大で 256 個の列を強調表示できます。 - - *'columns'* *'co'* *E594* -'columns' 'co' 数値 (既定では 80 またはターミナルの幅) - グローバル - {Vi にはない} - 画面上の列幅を設定する。普通このオプションはターミナルの初期化の時点で - 設定され、手動で設定する必要はない。|posix-screen-size|も参照。 - VimがGUI内やサイズ変更可能なウィンドウ内で実行されているときは、このオ - プションを変更するとウィンドウサイズも変更される。GUIでだけこのサイズ - を使用したい場合は、このコマンドを|gvimrc|に書くこと。 - ユーザがこのオプションを変更したのに、Vimがディスプレイの列幅の物理的 - な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが - ある。GUIでは常にその可能性があるので、Vimは桁数を画面に収まる値に制限 - している。可能なウィンドウ幅の最大値を取得するには、次のコマンドを使 - う: > - :set columns=9999 -< 最小値は12、最大値は10000。 - (訳注: オプション 'lines' も参照) - - *'comments'* *'com'* *E524* *E525* -'comments' 'com' 文字列 (既定では - "s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-") - バッファについてローカル - {Vi にはない} - {Vi mが |+comments| 機能付きでコンパイルされたときのみ - 有効} - コメント行の始まりとなる文字列の、コンマ区切りのリスト。 - |format-comments| を参照。'\' を使って値にスペースを含める方法について - は、|option-backslash| を参照。 - - *'commentstring'* *'cms'* *E537* -'commentstring' 'cms' 文字列 (既定では "/*%s*/") - バッファについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - コメント用のテンプレート (雛形)。値の中の "%s" はコメントの内容と置き - 換えられる。現在のところ、折り畳み用のマーカを追加するためにのみ使用さ - れている。|fold-marker| を参照。 - - *'compatible'* *'cp'* *'nocompatible'* *'nocp'* -'compatible' 'cp' 切替 (既定では オン、ファイル|vimrc|または - |gvimrc|が発見されたらオフ) - グローバル - {Vi にはない} - VimをなるべくVi互換にするか、便利な機能を使えるようにするかを決定する。 - これは、特別な種類のオプションである。このオプションの値が変更されると、 - それに伴って他のオプションも変更されるからだ。*注意: このオプションを - 変更すると、予期しない効果が数多く現れる。キーマップの解釈は変わり、ア - ンドゥも違った方法で行われる、等々。このオプションをファイル vimrc 内 - で設定するなら、一番先頭に置くこと。 - 既定ではオンなので、その他のオプションにはViの既定値が使われる。この既 - 定値は、VimをViと全く同じように使うことを望み、オプション 'compatible' - について知りもしない、または知りたいとも思わない人たちのためのものであ - る。 - Vimが立ち上がる間にファイル |vimrc| または |gvimrc| が見つかると、こ - のオプションはオフにされ、その他のオプションで変更されていないものは、 - みなVimの既定値に設定される。要するに、Vimはファイル |vimrc| または - |gvimrc| が存在するならVimの既定値を、存在しないならViの既定値を使うの - だ ( Note: システム全体用のファイルvimrc や引数|-u|で指定されるファイ - ルは関係ないことに注意)。|compatible-default| と |posix-compliance| も - 参照。 - - このオプションは引数 "-C" でオンに、引数 "-N" でオフにできる。 |-C| と - |-N| を参照。 - オフに設定すると、「Viの既定値」と「Vimの既定値」が異なっているオプショ - ンについて、Vimの既定値が用いられるようになる。下の表で '+' がついてい - るものを参照。その他のオプションは影響を受けない。 - オンにすると、他のオプションがいくつか変更され、Vimはできる限りVi互換 - を保とうとする。下の表を参照。これはVi互換の編集方法に戻りたいと思うと - きに使うことができる。 - 'cpoptions' も参照。 - - オプション + Viの既定値 効果 ~ - - 'allowrevins' オフ コマンド CTRL-_ なし - 'backupcopy' Unix: "yes" バックアップファイルがコピーになる - 他: "auto" バップアップはコピーまたはリネーム - 'backspace' "" 普通のバックスペース - 'backup' オフ バックアップファイルなし - 'cindent' オフ C言語ファイルにインデントなし - 'cedit' + "" |cmdwin| を開くキーなし - 'cpoptions' + (全フラグ) Vi互換のフラグ - 'cscopetag' オフ ":tag" に cscope を使わない - 'cscopetagorder' 0 |cscopetagorder| を参照 - 'cscopeverbose' オフ |cscopeverbose| を参照 - 'digraph' オフ ダイグラフなし - 'esckeys' + オフ Insertモードで <Esc> で始まるキーなし - 'expandtab' オフ タブはスペースに展開されない - 'fileformats' + "" 自動ファイルタイプ決定なし - "dos,unix" (ただし DOS, Windows と OS/2 以外で) - 'formatoptions' + "vt" Vi互換の文書整形 - 'gdefault' オフ ":s" でフラグの既定値に 'g' なし - 'history' + 0 コマンドラインの履歴なし - 'hkmap' オフ ヘブライ語用キーボードマップなし - 'hkmapp' オフ phoneticヘブライ語用キーボードマップなし - 'hlsearch' オフ 検索でマッチした文字列に強調なし - 'incsearch' オフ インクリメンタル・サーチなし - 'indentexpr' "" expression によるインデントなし - 'insertmode' オフ Insertモードでの開始なし - 'iskeyword' + "@,48-57,_" キーワードはアルファベットと数字と '_' - 'joinspaces' オン ピリオドの後ろには空白を2個挿入 - 'modeline' + オフ モードラインなし - 'more' + オフ リスト表示が止まらない - 'revins' オフ 右から左の挿入なし - 'ruler' オフ ルーラなし - 'scrolljump' 1 ジャンプスクロールなし - 'scrolloff' 0 スクロールにオフセットなし - 'shiftround' オフ インデントは shiftwidth の整数倍でない - 'shortmess' + "" メッセージの短縮なし - 'showcmd' + オフ コマンドの文字は表示されない - 'showmode' + オフ 現在のモードは表示されない - 'smartcase' オフ 大文字小文字の無視は自動にならない - 'smartindent' オフ 高度なインデントなし - 'smarttab' オフ 高度なタブ挿入なし - 'softtabstop' 0 タブは常に 'tabstop' を基準 - 'startofline' オン いくつかのコマンドで行頭に移動する - 'tagrelative' + オフ タグファイル名は相対的でない - 'textauto' + オフ 自動改行コード決定なし - 'textwidth' 0 自動行分割なし - 'tildeop' オフ ティルデはオペレータではない - 'ttimeout' オフ ターミナルの時間切れなし - 'whichwrap' + "" 左から右への移動は行を超えない - 'wildchar' + CTRL-E 現在の値が <Tab> のときのみ、コマンド - ライン補完に CTRL-E を使う - 'writebackup' オンかオフ |+writebackup| 機能に依る - - *'complete'* *'cpt'* *E535* -'complete' 'cpt' 文字列 (既定では: ".,w,b,u,t,i") - バッファについてローカル - {Vi にはない} - コマンド CTRL-P や CTRL-N によるキーワード補完 |ins-completion| の動作 - を指定する。このオプションは行全体の補完 |i_CTRL-X_CTRL-L| にも適用さ - れる。このオプションは補完の方法と、キーワード検索の対象となる場所を示 - す、コンマ区切りのフラグのリストである。 - . カレントバッファから検索 ('wrapscan' の値は無視) - w 別のウィンドウ内のバッファから検索 - b バッファリスト内の、現在読み込まれている別のバッファから検索 - u バッファリスト内の、現在読み込まれていない別のバッファから検索 - U バッファリストにないバッファから検索 - k 'dictionary' で指定されたファイルから検索 - kspell 現在有効化されているスペルチェックを使う |spell| - k{dict} {dict} で与えられたファイルから検索。"k" を複数指定してもよい。 - ファイル名はパターンでも指定できる。例: > - :set cpt=k/usr/dict/*,k~/spanish -< s 'thesaurus' で指定されたファイルから検索 - s{tsr} {tsr} で与えられたファイルから検索。 "s" を複数指定してもよい。 - ファイル名はパターンでも指定できる。 - i カレントファイルとインクルードされるファイルから検索 - d カレントファイルとインクルードされるファイルから、定義された名 - 前またはマクロを検索 |i_CTRL-X_CTRL-D| - ] タグ補完 - t "]" と同じ - - 読み込まれていないバッファでは、何しろ読み込まれていないのだから、 - |:autocmd| は実行されていない。そのため、ある種のファイルからは思いも - しないキーワードを補完してしまうことがある (gzip圧縮されたファイルな - ど)。読み込まれていないバッファは、行全体の補完には使われない。 - - 既定では ".,w,b,u,t,i" となっていて、これは検索対象を次のように指定し - ている。 - 1. カレントバッファ - 2. 別のウィンドウ内のバッファ - 3. 他の読み込まれたバッファ - 4. バッファリスト内の読み込まれていないバッファ - 5. タグ - 6. インクルードされるファイル - - CTRL-N と CTRL-P は 'iskeyword' を利用した全てのファイル名展開で使用で - きる (つまり辞書 |i_CTRL-X_CTRL-K| 、インクルードされるパターン - |i_CTRL-X_CTRL-I|、タグ |i_CTRL-X_CTRL-]| および通常の展開)。 - - *'completefunc'* *'cfu'* -'completefunc' 'cfu' 文字列 (既定では空) - バッファについてローカル - {Vi にはない} - {Vi mが |+eval| と |+insert_expand| 機能付きでコンパイ - ルされたときのみ有効} - このオプションは入力モードのCTRL-X CTRL-U |i_CTRL-X_CTRL-U|での補完に - 使われる関数を指定する。 - その関数がどのように起動され、何を返すべきかについての説明は - |complete-functions|を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'completeopt'* *'cot'* -'completeopt' 'cot' 文字列 (既定では "menu,preview") - グローバル - {Vi mが|+insert_expand|機能付きでコンパイルされたとき - のみ有効} - {Vi にはない} - 入力モードでの補完|ins-completion|についてのオプションのコンマ区切りの - リスト。サポートされている値は次の通り: - - menu ポップアップメニューで補完候補を表示する。ポップアップメ - ニューは、候補が2個以上あり、十分な数の色が使用できるとき - だけ表示される。|ins-completion-menu|を参照。 - - menuone 候補が1つしかないときもポップアップメニューを使う。候補に - ついて付加的な情報があるときに便利である。例えば、それがど - のファイルに含まれているかなど。 - - longest 候補の文字列の最長の共通部分だけを挿入する。メニューが表示 - されているならばCTRL-Lでさらに文字を挿入することができる。 - 大文字・小文字が同一視されるかどうかは補完の種類による。バッ - ファのテキストについてはオプション'ignorecase'が適用される。 - - preview 現在選択されている候補についての付加的な情報をプレビュー - ウィンドウに表示する。"menu"または"menuone"と組み合わせた - ときのみ有効。 - - - *'concealcursor'* *'cocu'* -'concealcursor' 'cocu' 文字列 (既定では: "") - ウィンドウについてローカル - {Vi にはない} - {Vi m が |+conceal| 機能付きでコンパイルされたときのみ - 有効} - カーソル行のテキストを Conceal 表示するモードを設定します。現在のモー - ドがこのオプション値に含まれているなら他の行と同様に Conceal 表示され - ます。 - n ノーマルモード - v ビジュアルモード - i インサートモード - c コマンドライン編集 ('incsearch' 用) - - 'v' はカーソル行だけでなくビジュアル選択された行全体に適用されます。 - 便利な値は "nc" です。これはヘルプファイルで使われています。移動してい - るときはテキストは Conceal 表示されますが、テキストを入力したりビジュ - アル選択したりするときは実際のテキストが表示されるので、自分の操作を視 - 覚できます。 - カーソルの位置は実際の表示とはことなる場合があるので注意してください。 - 例えば縦に移動することで列が変わることがあります。 - - -'conceallevel' 'cole' *'conceallevel'* *'cole'* - 数値 (既定では 0) - ウィンドウについてローカル - {Vi にはない} - {Vi m が |+conceal| 機能付きでコンパイルされたときのみ - 有効} - "conceal" 構文属性 (|:syn-conceal|) のテキストをどのように表示するかを - 設定します: - - 値 効果 ~ - 0 テキストは通常通り表示されます - 1 各ブロックの Conceal されたテキストは一つの文字に置換 - されます。構文アイテムに代理文字 (|:syn-cchar| 参照) - が指定されていないときは 'listchars' の設定が使われま - す (初期設定はスペース)。 - 文字は "Conceal" 強調グループを使って強調表示されま - す。 - 2 Conceal されたテキストは構文アイテムに指定された代理文 - 字 (|:syn-cchar|) として表示されます。それが指定されて - いないときは完全に非表示になります。 - 3 Conceal されたテキストは完全に非表示になります。 - - Note: テキストの編集やコピーの操作を妨げないようにするため、カーソル行 - の Conceal テキストは非表示になりません。これは 'concealcursor' オプ - ションで変更できます。 - - *'confirm'* *'cf'* *'noconfirm'* *'nocf'* -'confirm' 'cf' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オプション 'confirm' がオンならば、バッファへの変更を保存していないと - 実行に失敗する操作 (例えばコマンド ":q" と ":e") の際、ダイアログ - |dialog| を開いてファイルを保存するかどうか尋ねる。これがオンになって - いても、意図的に変更を廃棄したいなら ! を使える。 - 'confirm' がオフでも、コマンド |:confirm| で個別に確認を求めることがで - きる (これはキーマッピングで使うととても便利である)。 - 関数 |confirm()| と 'guioptions' のフラグ 'v' も参照。 - - *'conskey'* *'consk'* *'noconskey'* *'noconsk'* -'conskey' 'consk' 切替 (既定ではオフ) - グローバル - {Vi にはない} {Vi mのMS-DOS版のみ} - オンのとき、キーボードの文字を受け取るのに直接コンソール出入力が使われ - る。これはたいていの場合有効である。'bioskey' も参照。合わせて、3種類 - のコンソール入力が使える。 - 'conskey' 'bioskey' action ~ - オン オンかオフ 直接コンソール入力 - オフ オン BIOS - オフ オフ 標準入力 - - *'copyindent'* *'ci'* *'nocopyindent'* *'noci'* -'copyindent' 'ci' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - 新規行を自動インデントするとき、既存の行のインデント構造をコピーする。 - 普通、新しい行のインデントは|'expandtab'|が有効になっていないかぎり - (この場合は全てスペースになる)、まずタブが使われ、足りない部分がスペー - スで埋められる。このオプションを有効にすると、既存の行のインデントにど - んな文字が使われていようとそれを新規行にコピーする。'expandtab' はこれ - らの文字には影響せず、タブはタブのままになる。新規行のインデントが既存 - の行よりも深いならば、その差の部分は通常の方法で埋められる。 - NOTE: 'compatible'がオンにされると'copyindent'はオフになる。 - 'preserveindent'も参照。 - - *'cpoptions'* *'cpo'* -'cpoptions' 'cpo' 文字列 (Vimの既定値: "aABceFs", Viの既定値: 全フラグ) - グローバル - {Vi にはない} - 1文字のフラグの列で設定する。フラグが設定されると、対応する動作がVi互 - 換になる。大部分、またはある程度のVi互換が求められるときに使われる。 - 'cpoptions' は "compatible-options (互換オプション)" の意味である。 - 読みやすくするためにコンマを入れてもよい。 - 将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+=" - と "-=" を使うこと |add-option-flags|。 - NOTE: このオプションは 'compatible' がオンのときはVi互換の値に設定され、 - 'compatible' がオフのときはVim互換の値に設定されるので注意。 - NOTE: Viの既定値が使われるようになっており、さらに環境変数$VIM_POSIXが - 存在するとき、Vim起動時にこのオプションがPOSIXの既定値にセットされる - |posix|。これによってVimがPOSIX仕様に近い挙動をするようになる。 - - フラグ 動作 ~ - *cpo-a* - a これが含まれると、":read" にファイル名の引数を与えたと - き、そのファイルをカレントウィンドウの代替ファイルに設 - 定する。 - *cpo-A* - A これが含まれると、":write" にファイル名の引数を与えた - とき、そのファイルをカレントウィンドウの代替ファイルに - 設定する。 - *cpo-b* - b ":map" 内の "\|" がコマンドの終端と見なされるようにな - る。'\' はキーマッピングの一部に、'|' の次のテキストは - 次のコマンドと見なされる。'|' をキーマッピングに含める - には、'\' でなく CTRL-V を使うこと。キーマッピングや略 - 語やメニューや autocmd コマンドの全てに適用される。 - |map_bar| も参照。 - *cpo-B* - B '\' が、":menu" のメニューから実行される部分やキーマッ - ピングや略語において、特別な意味を持たなくなる。'\' を - CTRL-V のように使いたいのならこのフラグを取り除くこと。 - 例えば、":map X \<Esc>" で X がマップされるのは、 - 'B' が含まれたとき: "\^[" (^[ は本当の <Esc>) - 'B' が除かれたとき: "<Esc>" (5個の文字) - (どちらの場合も '<' が除かれているとする) - *cpo-c* - c (訳注: 検索でマッチする文字列があった後) カーソル位置 - のマッチの終わり(ただし次行の開始位置を越えない)から次 - の検索を行う。このフラグが含まれないと、次の検索はカー - ソル位置の1文字後から始まる。'c'が含まれると、"/abab" - で検索したとき "abababababab" には3回しかマッチしない - が、'c' が含まれないと5回マッチする。 - *cpo-C* - C ":source" で読み込まれたファイルのうち、'\' で始まる行 - を連結しない。|line-continuation| を参照。 - *cpo-d* - d 'tags' 内で "./" という記法を使ったとき、タグファイル - はカレントファイルのディレクトリでなく、カレントディレ - クトリから探す。 - *cpo-D* - D |r|, |f| や |t| のような、文字を引数に取る Normalモー - ドコマンドの後で、CTRL-K によるダイグラフの入力ができ - なくなる。 - *cpo-e* - e ":@r" でレジスタの内容を (訳注: Exコマンドとして) 実行 - するとき、レジスタが行全体を保存したものでないときでも、 - 常に最終行に <CR> を付け加える。このフラグが含まれない - ときは、レジスタの内容が行全体を保存したものでなく、か - つ <CR> で終わらないならば、実行すると最終行はコマンド - ラインに表示され、<CR> を打ち込むまでは編集できる。 - *cpo-E* - E 空の範囲に "y", "d", "c", "g~", "gu", "gU" などのコマ - ンドを使うとエラーになる。オペレータは作用する対象が最 - 低でも1文字ないと使えない。例: これが含まれると、最初 - の桁で "y0" を行うとエラーになる。 - *cpo-f* - f これが含まれると、カレントバッファにファイル名がまだ設 - 定されていないなら、":read" にファイル名の引数を与えた - とき、そのファイル名をカレントバッファのファイル名に設 - 定する。 - *cpo-F* - F これが含まれると、カレントバッファにファイル名がまだ設 - 定されていないなら、":write" にファイル名の引数を与え - たとき、そのファイル名をカレントバッファのファイル名に - 設定する。|cpo-P|も参照。 - *cpo-g* - g ":edit" を引数なしで使うと1行目に移動する。 - *cpo-H* - H 空白のみを含む行の上で"I"を使ったとき、最後の空白の前 - から挿入する。このフラグが含まれていないと、最後の空白 - の後から挿入を開始する。 - *cpo-i* - i これが含まれると、ファイルの読み込み中に中断が起きたと - き、ファイルは変更されたままになる。 - *cpo-I* - I 'autoindent'によるインデントが挿入された直後にカーソル - を上下に移動したときインデントを削除しない。 - *cpo-j* - j 行の連結時に追加する空白が、'.' の後のみ2個になり、'!' - や '?' の後は1個になる。'joinspaces' も参照。 - *cpo-J* - J 文 |sentence| は '.', '!' または '?' の後に2個の空白を - 伴わなければならない。<Tab> は空白とは見なされない。 - *cpo-k* - k ":menu" で実行される部分や、キーマッピングや略語におい - て、直接入力されたキーコードを認識しない。例えば、 - <Key> が ^[OA を送るなら (ここで ^[ は <Esc> )、 - ":map X ^[OA" で X がマップされるのは、 - 'k' が含まれたとき: "^[OA" (3個の文字) - 'k' が除かれたとき: "<Key>" (1個のキーコード) - 下の '<' も参照。 - *cpo-K* - K キーマッピングの途中で、キーコードが完全に入力されるの - を待たない。This breaks mapping <F1><F1> when - only part of the second <F1> has been read. こうすると - <F1><Esc> と打ち込めばマッピングをキャンセルできる。 - *cpo-l* - l 検索パターンの [] 範囲内で、'\' は文字通りに解釈され、 - "\]", "\^", "\\" だけが特別な意味を持つ。|/[]| を参照。 - 'l' が含まれたとき: - "/[ \t]" がマッチするのは <Space>, '\' と 't' - 'l' が除かれたとき: - "/[ \t]" がマッチするのは <Space> と <Tab> - |cpo-\|も参照。 - *cpo-L* - L 'list' がオンのとき、 'wrapmargin', 'textwidth', - 'softtabstop' とVirtual replaceモード (|gR| を参照) で、 - <Tab> の普通の数え方をせず、必ず 2 文字に数える。 - *cpo-m* - m これが含まれると、対応する括弧の表示を0.5秒待つ。含ま - れていないと、対応する括弧の表示を0.5秒または次の文字 - が打ち込まれるまで待つ。'showmatch' を参照。 - *cpo-M* - M これが含まれていない場合、"%"での括弧の対応にバックス - ラッシュを考慮に入れる。すなわち"( \( )"や"\( ( \)"で - 外側の括弧同士が対応するようになる。"%"が含まれている - 場合はVi互換になり、バックスラッシュは無視される。 - *cpo-n* - n これが含まれているときは折り返された行のテキストの表示 - に 'number' と 'relativenumber' によって行番号表示され - ている列も使用される。 - *cpo-o* - o 検索コマンドの行オフセットは、次回の検索には使われない。 - *cpo-O* - O ファイルが上書きされたとき、編集を始めたときにはそのファ - イルが存在しなかった場合でも警告しない。これは別人に突 - 然作り出されたファイルに対する防御である。Viはこれに警 - 告を出さなかった。 - *cpo-p* - p Vi互換のLisp用インデント。これが含まれないと、いくらか - 良いアルゴリズムが使われる。 - *cpo-P* - P これとフラグ'F'が同時に含まれていると、コマンド":write" - で既存のファイルに追加するとき、カレントバッファの名前 - がまだないならそのファイルの名前をカレントバッファの名 - 前にする。|cpo-F| - *cpo-q* - q 複数の行を連結するとき、2行を連結するときと同じ位置に - カーソルを置く。 - *cpo-r* - r リドゥ (コマンド ".") で検索を繰り返すとき、実際には - "/" を使う。 - *cpo-R* - R フィルタされた行のマークを除去する。このフラグが入って - いないと、|:keepmarks|を使ったときと同じようにフラグは - そのまま保たれる。 - *cpo-s* - s バッファが初めてアクティブになる時点でバッファのオプショ - ンが設定される。これは Vim version 3.0 と同じ動作であ - る。そして既定ではこの動作を行う。これが含まれないと、 - オプションはバッファが作られた時点で設定される。 - *cpo-S* - S バッファのオプションを常にバッファに移動する時点で設定 - する ('readonly', 'fileformat', 'filetype' と 'syntax' - 以外)。これは (ほとんど) Vi互換の設定である。 - オプションの値は元のカレントバッファでの値になる。ユー - ザがオプションを変更し、その後で別のバッファに移ると、 - その値はコピーされる。事実上、バッファオプションを全て - のバッファに対しグローバルにしている。 - - 's' 'S' バッファのオプションをコピーするタイミング ~ - オフ オフ バッファが作られた時点 - オン オフ バッファが初めてアクティブになった時点 (既定) - なし オン バッファに移動するたび (Vi互換) - *cpo-t* - t タグコマンドの検索パターンが "n" による検索の繰り返し - にも使われる。これが含まれないと、検索パターンの履歴に - は加えられるが、最終検索パターンは変化しない。 - *cpo-u* - u アンドゥがVi互換になる。|undo-two-ways| を参照。 - *cpo-v* - v インサートモードにおいて、バックスペースで消した文字を - 画面上に表示したままにしておく。このフラグが入っていな - いと、消された文字はすぐに画面から消える。このフラグが - 入っていると、新しく入力された文字がバックスペースで消 - された文字を上書きする。 - *cpo-w* - w 空白の上で "cw" を使ったとき、1文字だけ変更して、次の - 単語の始まりまでの空白は変更しない。 - *cpo-W* - W 読み込み専用ファイルを上書きしない。これが含まれないと、 - 可能であれば ":w!" で読み込み専用ファイルも上書きでき - る。 - *cpo-x* - x コマンドラインで <Esc> を打ち込むとコマンドを実行する。 - Vimでの既定ではコマンドライン入力を中止して元のモード - に戻る。それは <Esc> は普通はコマンドの中止に使われる - からである。|c_<Esc>| を参照。 - *cpo-X* - X "R"でカウントを指定したとき、置換されるテキストが一度 - だけ削除される。カウントをつけた"."で"R"を繰り返したと - きも同じ。 - *cpo-y* - y コピーコマンドを "." でリドゥできる。 - *cpo-Z* - Z オプション'readonly'がオンになっているのに"w!"をしたと - き'readonly'をオフにしない。 - *cpo-!* - ! フィルタコマンドをリドゥするとき、何であってもとにかく - 最後に実行された外部コマンドを使う。これが含まれないと、 - 最後に実行された「フィルタ」コマンドが使われる。 - *cpo-$* - $ 1行に対して変更をするとき、行を再描画せず、代わりに変 - 更されたテキストの最後に '$' を表示する。変更されたテ - キストはユーザが新しいテキストを入力したときに上書きさ - れる。その行はユーザがカーソルを挿入点から動かすコマン - ドを入力したときに再描画される。 - *cpo-%* - % "%" でVi互換の対応検索が行われる。 - "#if", "#endif" などを認識しない。 - "/*" と "*/" も認識しない。 - 単引用符 ''' または二重引用符 '"' の内部の括弧も数えら - れる。すると括弧を含む文字列が対応を乱すことになる。例 - えば、"if (strcmp("foo(", s))" などでは最初の括弧と最 - 後の括弧はマッチしない。これが含まれないと、単引用符ま - たは二重引用符の内部の括弧は特別な扱いを受ける。引用符 - の外部の括弧の対応を調べるときは、引用符の内部は一切無 - 視される。引用符の内部の括弧の対応を調べるときは、対応 - する括弧を探す (存在すれば)。これはC言語プログラムでは - とても良く機能する。 - このフラグはCインデントなど他の機能にも使われる。 - *cpo--* - - これが含まれていると最初の行や最後の行を越えるような上 - 下移動コマンドは失敗する。含まれているとカーソルが最初 - の行または最後の行に移動する(既にカーソルがその行にな - いかぎり)。 - コマンド"-", "k", CTRL-P, "+", "j", CTRL-N, CTRL-J, - ":1234"に適用される。 - (訳注: 2行目で3kしたとき、これが含まれているならカーソ - ルは移動しない。含まれていないなら1行目へ移動する) - *cpo-+* - + これが含まれていると、":write file"をしたとき、まだそ - のバッファが対応するファイルと異なっていても、そのバッ - ファのフラグ'modified'がオフになる。 - *cpo-star* - * ":*" を ":@" と同じように扱う。これが含まれないと、 - ":*" は ":'<,'>" の別名となり、Visualエリアを選択する。 - *cpo-<* - < ":menu" で実行される部分や、キーマッピングや略語におい - て、|<>| 記法による特殊キーの認識を行わない。例えば、 - ":map X <Tab>" で X がマップされるのは、 - '<' が含まれたとき: "<Tab>" (5個の文字) - '<' が除かれたとき: "^I" (^I は本当の <Tab>) - 上の 'k' も参照。 - *cpo->* - > レジスタにテキスト追加するとき、そのテキストの前に改行 - 文字をつける。 - *cpo-;* - ; |,| や |;| で最後の |t| 検索を繰り返すとき、カーソルの - 位置が検索文字の一つ手前であればカーソルを移動しない。 - フラグが含まれていない場合は、カーソルはその文字を飛び - 越えて次の場所にジャンプする。 - - 次のものはPOSIXフラグである。起動時に$VIM_POSIXがセットされていない限 - り、これらはViの既定値には含まれない。|posix| - - フラグ 動作 ~ - *cpo-#* - # "D", "o", "O"に対するカウントは効果がない。 - *cpo-&* - & ":preserve"が使われたとき通常終了時にバッファはまだ読 - み込まれているが、スワップファイルを保存する。このフラ - グはVimの終了時に判定される。 - *cpo-\* - \ 検索パターンの範囲[]の中のバックスラッシュが文字どおり - に解釈される。"\]"だけがエスケープになる。|/[]|を参照。 - '\'が含まれていると"/[ \-]"は<Space>, '\', '-'にマッチ - する。'\'が含まれていないと"/[ \-]"は<Space>, '-'にマッ - チする。 - |cpo-l|も参照。 - *cpo-/* - / コマンド|:s|の置換後文字列に"%"を指定したとき、前回の - 置換後文字列を使う。|:s%|を参照。 - *cpo-{* - { コマンド|{|と|}|が行頭の文字"{"にも止まる。 - *cpo-.* - . カレントバッファが変更されているとき、"!"をつけないか - ぎりコマンド":chdir"と":cd"が失敗する。Vimは開いたファ - イルのフルパスを覚えているため、これを必要としない。 - *cpo-bar* - | 環境変数$LINESと$COLUMNSの値をシステム固有の関数で得ら - れたターミナルサイズより優先させる。 - - - *'cryptmethod'* *'cm'* -'cryptmethod' 文字列 (既定では "zip") - グローバルまたはバッファについてローカル |global-local| - {Vi にはない} - バッファをファイルに保存するときに使用される暗号化メソッドを設定する: - *pkzip* - zip PkZip 互換メソッド。弱い暗号化。 - Vim 7.2 以前との後方互換。 - *blowfish* - blowfish Blowfish メソッド。強い暗号化。Vim 7.3 以降が必要。こ - のメソッドで保存されたファイルは Vim 7.2 以前のバー - ジョンでは開くことができない。ファイルには "seed" が付 - 加されるので、ファイルを書き込むたびに暗号化されたバイ - ト列は異なる。 - - 暗号化されたファイルを読み込んだとき、'cryptmethod' は自動的にそのファ - イルに使用されている暗号メソッドに設定されます。つまり、そのまま - 'cryptmethod' を変更せずにファイルを保存すれば同じメソッドが使用されま - す。 - 'cryptmethod' の設定を変更してもファイルは変更あり状態にはなりません。 - 設定変更を有効にするにはファイルを保存する必要があります。もし他に変更 - がなければ保存せずに終了したとしても警告は表示されません。 |:X| 参照。 - - グローバル設定を空文字に設定すると "zip" が使用されます。ローカル設定 - を空文字に設定するとグローバル設定が使用されます。 - - Vim の将来のバージョンに新しい暗号化メソッドが追加され、現在の Vim が - それを認識できないときは *E821* エラーが表示されます。 - そのファイルは新しいバージョンの Vim で開く必要があります。 - - - *'cscopepathcomp'* *'cspc'* -'cscopepathcomp' 'cspc' 数値 (既定では 0) - グローバル - {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 - 効} - タグのリストの中でパスを (訳注: 上にさかのぼって) どこまで表示するかを - 指定する。|cscopepathcomp| を参照。 - - *'cscopeprg'* *'csprg'* -'cscopeprg' 'csprg' 文字列 (既定では "cscope") - グローバル - {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 - 効} - Cscope を実行するコマンド名を指定する。|cscopeprg| を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'cscopequickfix'* *'csqf'* -'cscopequickfix' 'csqf' 文字列 (既定では"") - グローバル - {Vi mが|+cscope|または|+quickfix|機能つきでコンパイル - されたときのみ利用可能} - {Vi にはない} - cscopeの結果を表示するのにQuickFixウィンドウを使うかどうかを指定する。 - |cscopequickfix|を参照。 - - *'cscoperelative'* *'csre'* -'cscoperelative' 'csre' 切替 (既定は off) - グローバル - {Vi mが|+cscope|機能つきでコンパイルされたときのみ利用 - 可能} - {Vi にはない} - cscope のプレフィックス (-P) がないとき、このオプションをオンに設定す - ると、cscope.out が保存されているディレクトリがプレフィックスとして使 - われます。 - |cscoperelative| 参照。 - - *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'* -'cscopetag' 'cst' 切替 (既定ではオフ) - グローバル - {Vi mが|+cscope|機能つきでコンパイルされたときのみ - 有効} - {Vi にはない} - コマンドtagにcscopeを使う。|cscope-options|を参照。 - NOTE: 'compatible'をオンにするとこのオプションはオフになる。 - - *'cscopetagorder'* *'csto'* -'cscopetagorder' 'csto' 数値 (既定では 0) - グローバル - {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 - 効} - コマンド ":cstag" が検索を行う順番を指定する。|cscopetagorder| を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな - るので注意。 - - *'cscopeverbose'* *'csverb'* - *'nocscopeverbose'* *'nocsverb'* -'cscopeverbose' 'csverb' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+cscope| 機能付きでコンパイルされたときのみ有 - 効} - Cscope のデータベースに情報を追加するときメッセージを表示する。 - |cscopeverbose| を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'cursorbind'* *'crb'* *'nocursorbind'* *'nocrb'* -'cursorbind' 'crb' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+cursorbind| 機能つきでコンパイルされたときの - み有効} - このオプションをオンにすると、現在のウィンドウでカーソルを動かしたとき - に、他のウィンドウ ('cursorbind' オプションが設定されたウィンドウ) 内 - のカーソルも同じ行と列に移動します。このオプションはバージョン違いの - ファイルの差を見るときに便利です ('diff' 参照)。diff モードでは追加ま - たは削除された行 (行に文字がなくても) のみが考慮されます。 - - - *'cursorcolumn'* *'cuc'* *'nocursorcolumn'* *'nocuc'* -'cursorcolumn' 'cuc' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが|+syntax|機能つきでコンパイルされたときのみ - 有効} - カーソルのある画面上の桁をCursorColumnで強調する|hl-CursorColumn|。 - テキストを桁揃えするのに便利。スクリーンの再描画が遅くなる。 - カレントウィンドウに対してだけこの強調をしたいなら次の自動コマンドを使 - う: > - au WinLeave * set nocursorline nocursorcolumn - au WinEnter * set cursorline cursorcolumn -< - *'cursorline'* *'cul'* *'nocursorline'* *'nocul'* -'cursorline' 'cul' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが|+syntax|機能つきでコンパイルされたときのみ - 有効} - カーソルがある画面上の行をCursorLineで強調する|hl-CursorLine|。 - カーソルを目立たせるのに便利。スクリーンの再描画が遅くなる。 - ビジュアルモードでは選択されたテキストをわかりやすくするためにこの強調 - は行われない。 - - - *'debug'* -'debug' 文字列 (既定では "") - グローバル - {Vi にはない} - 以下の値を指定することができる: - msg 省かれるはずのエラーメッセージも表示する。 - throw 省かれるはずのエラーメッセージも表示し、さらに例外を投げ、 - |v:errmsg|を設定する。 - beep ビープが鳴るだけのところでメッセージを表示する。 - これらの値はコンマで区切って組み合わせることができる。 - "msg"と"throw"はオプション 'foldexpr' や 'formatexpr', 'indentexpr' を - デバッグするのに便利である。 - - - - *'define'* *'def'* -'define' 'def' 文字列 (既定では "^\s*#\s*define") - グローバル/バッファについてローカル |global-local| - {Vi にはない} - マクロ定義を発見するのに使われるパターンを指定する。値はコマンド "/" - で使うのと同様の検索パターンである。このオプションは "[i" や "[d" 等に - 使われる |include-search|。オプション 'isident' は、これがマッチした部 - 分の後の定義された名前を認識するのに使われる。 - {'define' のマッチ}{非識別子}{定義名}{非識別子} - 値に空白や '\' を含めるために '\' を挿入することに関しては、 - |option-backslash| を参照。 - 既定値はCプログラム用である。C++プログラムには、定数定義を加えて次のよ - うにすると便利だろう。 > - ^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\) -< ":set" で設定するときは、'\' の数を2倍にする必要がある! - - *'delcombine'* *'deco'* *'nodelcombine'* *'nodeco'* -'delcombine' 'deco' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み有効} - オンのときは、Unicodeのファイルの編集時、バックスペースとNormalモード - のコマンド "x" はそれぞれの文字の上の combining character のみを削除す - る。オフのときは (これが既定である) combining character と文字は同時に - 削除される。 - Note: 'delcombine'がオンになっていると"xx"の動作が"2x"と異なる場合があ - る。 - - このオプションは、アラビア語、ヘブライ語その他の言語で、ベースとなる文 - 字の上にcombining character が付いていて、combining character のみを削 - 除したいときに便利である。 - - *'dictionary'* *'dict'* -'dictionary' 'dict' 文字列 (既定では "") - グローバル/バッファについてローカル |global-local| - {Vi にはない} - ファイル名のコンマ区切りのリスト。キーワード補完コマンド - |i_CTRL-X_CTRL-K| 用の単語を探すために使われる。単語のリストからなるファ - イルを指定する。その中では1行ごとに1語が並べられていてもよいし、1行に - キーワードでない文字 (空白を推奨) で区切られた数語が並んでいてもよい。 - 1行の文字数の最大値は510バイト分である (訳注: 日本語のいわゆる全角文字 - では半分の255文字)。 - このオプションが空のとき、または"spell"が含まれていてスペルチェックが - 有効になっているとき、現在アクティブなスペリングが使われる。 - |spell| - ファイル名にコンマを含めるには、コンマの前に '\' を置くこと。コンマの - 後ろの空白は無視されるが、それ以外の空白はファイル名の一部として扱われ - る。'\' の使い方については |option-backslash| を参照すること。 - このオプションは変数の辞書型|Dictionary|とは関係ない。 - 単語リストはどこで見つかるか? - - FreeBSDでは、"/usr/share/dict/words" というファイルがある。 - - Simtelアーカイブでは、ディレクトリ "msdos/linguist" を探すこと。 - - GNUコレクションでは、"miscfiles" の中にある。 - リストにディレクトリを追加するときには |:set+=| コマンド、リストからディ - レクトリを除くときには |:set-=| コマンドを使うのがよい。こうすると将来 - のヴァージョンで異なった既定値が使われるようになったときに、問題が起き - るのを防げる。 - 安全上の理由から、バッククォート (`) をこのオプションの値に使うことは - できない。 - - *'diff'* *'nodiff'* -'diff' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+diff| 機能付きでコンパイルされたときのみ有効} - カレントウィンドウをファイル間の差異を示すウィンドウのグループに組み入 - れる。|vimdiff| を参照。 - - *'dex'* *'diffexpr'* -'diffexpr' 'dex' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+diff| 機能付きでコンパイルされたときのみ有効} - 2個のファイル間の差異を求めるとき、ed形式のdiffファイルを求めるために - 評価される expression。|diff-diffexpr| を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'dip'* *'diffopt'* -'diffopt' 'dip' 文字列 (既定では "filler") - グローバル - {Vi にはない} - {Vi mが |+diff| 機能付きでコンパイルされたときのみ有効} - Diffモード用のオプション設定。値は、以下のキーワードのコンマ区切りのリ - ストである。指定しないものがあってもよい。 - - filler 片方のウィンドウ内のテキストのある位置に行が挿 - 入されていたときに、ウィンドウのスクロールを同 - 調させるために、埋め立て用の行を表示する。ウィ - ンドウが隣り合っていて、オプション - 'scrollbind' がオンのときには大抵便利である。 - - context:{n} 変更のあった行の上下を {n} 行だけ折り畳まずに - 表示 (コンテキストの表示) する。指定されないと、 - コンテキストは6行になる。|fold-diff| を参照。 - - icase テキストの大文字と小文字の違いを無視する。"a" - と "A" は同じものと見なされる。オプション - 'diffexpr' が空なら、コマンド "diff" にフラグ - "-i" を追加する。 - - iwhite 空白の数の違いを無視する。オプション - 'diffexpr' が空なら、コマンド "diff" にフラグ - "-b" を追加する。これが正確には何を指定してい - るのかについては、コマンド "diff" のドキュメン - トを参照すること。これは後ろに追加された空白は - 無視するが、前に追加された空白は無視しないはず - である。 - - horizontal (他に明示的に指定されない限り)ウィンドウを水平 - 分割してdiffモードを開始する。 - - vertical (他に明示的に指定されない限り)ウィンドウを垂直 - 分割してdiffモードを開始する。 - - foldcolumn:{n} diffモードの開始時にオプション'foldcolumn'を - {n}に設定する。 - - - 例: > - :set diffopt=filler,context:4 - :set diffopt= - :set diffopt=filler,foldcolumn:3 -< - *'digraph'* *'dg'* *'nodigraph'* *'nodg'* -'digraph' 'dg' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+digraphs| 機能付きでコンパイルされたときのみ - 有効} - Insertモードで {char1} <BS> {char2} でダイグラフを入力できるようにする。 - |digraphs| を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'directory'* *'dir'* -'directory' 'dir' 文字列 (Amigaでの既定値: ".,t:", - MS-DOSとWin32での既定値: ".,c:\tmp,c:\temp" - Unixでの既定値: ".,~/tmp,/var/tmp,/tmp") - グローバル - スワップファイル用ディレクトリの、コンマ区切りのリスト。 - - スワップファイルは、リスト内の利用できるディレクトリのうち、最初のディ - レクトリの中に作られる。 - - 値が空だとスワップファイルは作られない (回復は不可能になる!)。 - - ディレクトリに "." を指定すると、編集されているファイルと同じディレ - クトリにスワップファイルが作られる。Unixではファイル名の先頭にドット - が追加されるので、ディレクトリ内のファイル一覧には表示されない。 - MS-Windowsでは属性"hidden"が設定され、可能ならばファイル名の先頭に - ドットが追加される。 - - "./" で始まるディレクトリ (MS-DOSなどでは ".\") を指定すると、編集さ - れているファイルからの相対的な位置にスワップファイルが作られる。先頭 - の "." は編集されているファイルのパス名に置換される。 - - UnixとWin32では、指定されたディレクトリ名の末尾がディレクトリの区切 - り記号2個("//"または"\\")で終わっていたら、スワップファイルの名前は - フルパスに従って付けられる。スワップファイルのファイル名をフルパス形 - 式で表し、ディレクトリの区切り文字をパーセント記号 '%' で置き換えた - ものが使われる。こうするとスワップファイル格納用ディレクトリの中でも - (訳注: 別のディレクトリ内の同名ファイルのスワップファイルが集まるか - もしれない)、ファイル名の一意性が保証される。 - Win32 では、区切り文字のカンマの前では "\\" でなく "//" と書かなけれ - ばならない。"\\" と書くと、カンマがファイル名の一部と解釈されてしまう - ためである。 - - コンマの後の空白は無視されるが、その他の場所の空白はディレクトリ名の - 一部と見なされる。ディレクトリ名の先頭に空白を指定したいなら、'\' を - 前に付けること。 - - コンマをディレクトリ名の一部に使いたいなら、コンマの前に '\' を付け - ること。 - - ディレクトリ名は ':' や '/' で終わっていてもよい。 - - 環境変数は展開される |:set_env|。 - - '\' の扱いには注意。空白の前には1個置く。値の中に指定するには2個置く - (|option-backslash| を参照)。例: > - :set dir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces -< - Vim version 3.0 との後方互換性のため、値の先頭に '>' を置いてもそれ - は無視される。 - リストの先頭には "." を指定することを推奨する。こうすると、同じファイ - ルを2重に編集しようとすると警告が出る。Unixでディレクトリ "/tmp" を使 - うのはお勧めできない。システムがクラッシュすると、スワップファイルも失 - われてしまう。ディレクトリ "/var/tmp" の中はリブート時にも大抵クリアさ - れないので、ディレクトリ "/tmp" よりもよい選択である。しかしその中には - 多くのファイルが入っているかもしれないので、ユーザのスワップファイルは - 他のファイルに紛れて分からなくなるかもしれない。ユーザのホームディレク - トリ内のディレクトリ "tmp" が最初に試されるのはそのためだ。 - リストにディレクトリを追加するときにはコマンド |:set+=|、リストからディ - レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来 - のヴァージョンで異なった既定値が使われるようになったときに、問題が起き - るのを防げる。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - {Vi: 一時ファイルを作るディレクトリを指定する。既定では "/tmp"} - - *'display'* *'dy'* -'display' 'dy' 文字列 (既定では "") - グローバル - {Vi にはない} - テキスト表示の方法を変える。値はフラグのコンマ区切りのリストである。 - lastline これが含まれると、ウィンドウの最後の行ができる限りまで - 表示される。含まれないと、最後の行が収まりきらないなら - その行は "@" と表示される。 - uhex unprintable な文字を (訳注: 文書先頭を参照) <xx> とい - う形式で16進数表示し、^C や ~C の形式を使わない。 - - *'eadirection'* *'ead'* -'eadirection' 'ead' 文字列 (既定では "both") - グローバル - {Vi にはない} - {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み有効} - オプション 'equalalways' が適用されるときに、 - ver ウィンドウの高さにのみ効果がある - hor ウィンドウの幅にのみ効果がある - both ウィンドウの高さと幅、両方に効果がある - - *'ed'* *'edcompatible'* *'noed'* *'noedcompatible'* -'edcompatible' 'ed' 切替 (既定ではオフ) - グローバル - コマンド ":substitute" のフラグ 'g' と 'c' を、次に別の方を指定するま - でずっと効力を持つようにする。|complex-change| を参照。オプション - 'gdefault' も参照。 - このオプションをオンに設定するのは推奨できない! - - *'encoding'* *'enc'* *E543* -'encoding' 'enc' 文字列 (既定では "latin1" または $LANG) - グローバル - {Vi にはない} - {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み有効} - Vim内部で使われる文字エンコーディングを設定する。そのエンコーディング - はバッファやレジスタ内のテキスト、expression 内の文字列、ファイル - viminfo 内のテキスト等に適用される。つまり、このオプションはVimの通常 - 扱う文字の種類を設定する。指定できる値については |encoding-names| を参 - 照。 - - NOTE: このオプションの値を変更しても、Vim内部の既存のテキストのエンコー - ディングは変化しないので注意。非アスキー文字がおかしくなる恐れもある。 - 既定の値から変更しないか、Vimの起動時に限って設定すること。|multibyte| - を参照。メニューを再読み込みするには|:menutrans|を参照。 - - このオプションはモードライン (|modeline|) では設定できません。テキスト - が壊れてしまうため。 - - NOTE: GTK+2では'encoding'を"utf-8"に設定することが強く推奨される。 - 他の値であってもよいが、この環境では"utf-8"が自然な選択であり、不必要 - な変換のオーバーヘッドを避けることができる。GUIやターミナルのバージョ - ンによって挙動が異なってしまうのを避けるためと、新しく作られたファイル - のエンコーディングが知らないうちに変わってしまうのを避けるため - ('fileencodings'が空の場合)、"utf-8"は既定にはなっていない。 - - 編集するファイルの文字エンコーディングはオプション 'encoding' と異なっ - てもよい。そちらは 'fileencoding' で設定される。エンコーディングの変換 - は関数 iconv() または 'charconvert' で指定された式による。 - - 'encoding' がマルチバイトエンコーディングであるかを知るに - は、以下のコマンドが使える: > - if has("multi_byte_encoding") -< - 普通、'encoding' はユーザのカレントロケールと同じである。Vimがユーザの - 環境設定を認識したならば、それが既定値になる。'encoding' の値がカレン - トロケールに設定されていなければ、入力されたテキストと表示されるテキス - トを変換するために、'termencoding' が設定されていなければならない。 - |encoding-table| を参照。 - - このオプションを設定すると、必要に応じてフォントを設定できるように、 - autocommand のイベント |EncodingChanged| が発生する。 - - オプションが設定されると、値は小文字に変換される。そのため、値を大文字 - で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。 - エンコーディングが認識されると、値は標準の名前に変換される。例えば - "Latin-1" は "latin1" に、"ISO_88592" は "iso-8859-2" に、"utf8" は - "utf-8" になる。 - - Note: "latin1" という値は、エンコーディングを判別できなかったときにも - 使われるので注意。これが正しいのは、編集するファイルが実際に latin1 エ - ンコーディングのときのみである!実際の文字セットが latin1 でないときは、 - 'fileencoding' と 'fileencodings' が空であるのを確認すること。変換が必 - 要なときは、utf-8 を使うようにすること。 - - 値が "unicode", "ucs-2" または "ucs-4" であるとき、Vim内部では utf-8 - が使われている。このことはユーザが編集中に注意を払うことはないが、 - |viminfo-file| については問題になる。またVimはターミナルも utf-8 を使 - うことを想定する。そのため、'encoding' を utf-8 でなく上記のいずれかの - 値に設定しても、'fileencoding' が空のときに編集するファイルのエンコー - ディングにしか影響がない。 - - 'encoding' が Unicode の一種に設定され、'fileencodings' がまだ設定され - ていなければ、'fileencodings' の既定値は変更される。 - - *'endofline'* *'eol'* *'noendofline'* *'noeol'* -'endofline' 'eol' 切替 (既定ではオン) - バッファについてローカル - {Vi にはない} - ファイルを書き込むときに、このオプションがオフでオプション 'binary' が - オンならば、ファイルの最終行に <EOL> が書き込まれない。このオプション - はファイルの編集を始めるときには自動的にオンになる。ただし編集を始めた - ファイルの最終行に <EOL> がないときにはオフになる。普通はユーザがこの - オプションを設定する必要はない。'binary' がオフのときはこのオプション - は使われない。'binary' がオンのときは、ファイルの最終行に <EOL> があっ - たかどうかを復元するためにこのオプションが使われる。そのため、ユーザが - ファイルを書き込むときに元のファイルの状態を保つことができるし、変更す - ることもできる。 - - *'equalalways'* *'ea'* *'noequalalways'* *'noea'* -'equalalways' 'ea' 切替 (既定ではオン) - グローバル - {Vi にはない} - オンのときは、ウィンドウを分割したり閉じたりした後、全てのウィンドウが - 自動的に同じサイズになる。これはこのオプションがオフになった瞬間にも起 - こる。オフのときは、ウィンドウを分割するとカレントウィンドウのサイズだ - けが減り、他のウィンドウに変化はない。ウィンドウを閉じると、 - ('splitbelow' と 'splitright' に従って) 閉じたウィンドウの隣のウィンド - ウの行数が増す。 - 水平に分割されたウィンドウと垂直に分割されたウィンドウが混在していると - きは、サイズの最小値が計算され、いくつかのウィンドウは (余裕があれば) - 大きくなる。'eadirection' はサイズの変化する方向を指定する。 - 'winfixheight', 'winfixwidth' を設定するとウィンドウの高さ・幅が変わる - のを防ぐことができる。 - 新規ウィンドウ作成時にウィンドウサイズが指定された場合、ウィンドウサイ - ズは等しくならない(これは複雑だが、将来は実装されるかもしれない)。 - - *'equalprg'* *'ep'* -'equalprg' 'ep' 文字列 (既定では "") - グローバル/バッファについてローカル |global-local| - {Vi にはない} - コマンド "=" に使う外部プログラムを指定する。値が空のときは内部関数が - 整形に使われる (オプション 'lisp', 'cindent' または 'indentexpr')。 - Vim が内部フォーマットなしでコンパイルされているときは indent コマン - ドが使われる。 - 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については - |option-backslash| を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'errorbells'* *'eb'* *'noerrorbells'* *'noeb'* -'errorbells' 'eb' 切替 (既定ではオフ) - グローバル - エラーメッセージに伴ってベル (ビープ音または画面フラッシュ) を発生させ - る。このオプションはエラーメッセージにのみ適用され、メッセージのない多 - くのエラー (例えばNormalモードで <ESC> を打ち込んだとき) についてはベ - ルは常に使用される。ベルをビープ音にしたり、画面フラッシュにしたり、無 - 効にしたりするためには、オプション 'visualbell' を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'errorfile'* *'ef'* -'errorfile' 'ef' 文字列 (Amigaでの既定値: "AztecC.Err", - 他の既定値: "errors.err") - グローバル - {Vi にはない} - {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ - 有効} - QuickFixモードで使われるエラーファイルの名前 (|:cf| を参照)。 - コマンドライン引数 "-q" が指定されたときは、オプション 'errorfile' は - それに続く値に設定される。|-q| を参照。 - コマンド ":make" には「使われない」。それについては 'makeef' を参照。 - 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については - |option-backslash| を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'errorformat'* *'efm'* -'errorformat' 'efm' 文字列 (既定値はとても長い) - グローバル/バッファについてローカル |global-local| - {Vi にはない} - {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ - 有効} - エラーファイルの内容の書式を、関数 scanf 風に指定する (|errorformat| - を参照)。 - - *'esckeys'* *'ek'* *'noesckeys'* *'noek'* -'esckeys' 'ek' (Vimの既定値: オン, Viの既定値: オフ) - グローバル - {Vi にはない} - オンのときは、<Esc> で始まるファンクションキーもInsertモードで認識され - るようになる。オフのときは、<Esc> で始まるカーソルキーとファンクション - キーは、Insertモードで使うことができない。オンにすることの利点は、 - <Esc> を一回打ち込むだけですぐに認識され、1秒ほど待つ必要がないことだ。 - このオプションをオフにしなくても、オプション 'timeoutlen' と - 'ttimeoutlen' を変更してみるとよい。 Note 'esckeys' がオフのときでも、 - どのキーをマッピングすることもできるが、そのままではカーソルキーは使用 - できないことに注意。 - NOTE: このオプションは 'compatible' がオンのときはViの既定値に、オフの - ときはVimの既定値に設定されるので注意。 - - *'eventignore'* *'ei'* -'eventignore' 'ei' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+autocmd| 機能付きでコンパイルされたときのみ - 有効} - Autocommand のイベント名のうち、無視したいもののリスト。 - "all"が含まれていると全ての autocommand のイベントが無視され、 - autocommand は実行されなくなる。 - それ以外では、値はイベント名のコンマ区切りのリストである。例: > - :set ei=WinEnter,WinLeave -< - *'expandtab'* *'et'* *'noexpandtab'* *'noet'* -'expandtab' 'et' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - Insertモードで <Tab> を挿入するとき、代わりに適切な数の空白を使う。ま - た、コマンド '>' や '<' によるインデントや、オプション 'autoindent' が - オンのときのインデントでも空白を使う。'expandtab' がオンのときに本当の - タブを挿入するには、CTRL-V<Tab> を使うこと。|:retab| と - |ins-expandtab| も参照。 - NOTE: このオプションは、'compatible' がオンのときはオフになるので注意。 - - *'exrc'* *'ex'* *'noexrc'* *'noex'* -'exrc' 'ex' 切替 (既定ではオフ) - グローバル - {Vi にはない} - カレントディレクトリ内のファイル .vimrc, .exrc や .gvimrc 等の読み込み - を有効にする。このオプションをオンにするなら、オプション 'secure' もオ - ンにするよう検討すること (|initialization| を参照)。ファイル .exrc, - .vimrc や .gvimrc にローカルなものを用いると潜在的な安全保護の漏れを招 - くので、注意して使うこと! - |.vimrc| と |gui-init| も参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'fileencoding'* *'fenc'* *E213* -'fileencoding' 'fenc' 文字列 (既定では "") - バッファについてローカル - {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み有効} - {Vi にはない} - カレントバッファのファイルの文字エンコーディングを設定する。 - - 'fileencoding' と 'encoding' が異なるとき、ファイルの書き出しの際に文 - 字エンコーディングの変換が行われる。読み込みについては後述。 - 'fileencoding' が空の場合、'encoding' と同じ値が使われる (ファイルの読 - み書きの際に変換をしない)。 - 'encoding' と 'fileencoding' がともに Unicode エンコーディングであり、 - 'fileencoding' が utf-8 でない場合にも変換が行われる。内部では Unicode - は常に utf-8 で保持されているためである。 - 警告: 文字エンコーディングを変換すると、情報が失われるおそれが - ある!'encoding' が "utf-8" など Unicode エンコーディングだと、 - 変換は大抵成功するし、逆変換をしても同じテキストになる。 - 'encoding' が "utf-8" でないときは、失われる文字があるかもしれ - ない! - - 指定可能な値については 'encoding' を参照。それらに加え、変換ツールで変 - 換可能なエンコーディングの値も設定できる。|mbyte-conversion|を参照。 - - ファイルを読み込むときは、'fileencoding' は 'fileencodings' の値の中か - ら設定される。あるエンコーディングのファイルを読み込むには - 'fileencoding' を設定してもだめで、引数 |++enc| を使う。1つの例外: - 'fileencodings'が空のときは'fileencoding'の値が使われる。 - 新規ファイルに対しては'fileencoding'のグローバルな値が使われる。 - - "8bit-" や "2byte-" を頭に付けてもここでは意味がなく、無視される。 - オプションが設定されると、値は小文字に変換される。そのため、値を大文字 - で設定してもよい。アンダースコア(下線) '_' はハイフン '-' に変換される。 - 値が 'encoding' の値に含まれることが認識されると、値は標準の名前に変換 - される。例えば "ISO_88592" は "iso-8859-2" になる。 - - ファイルの編集を始めた後にこのオプションを設定すると、'modified' がオ - ンになる。なぜならそのファイルの中身は、書き込まれるときには違うものに - なるからである。 - - 'fenc' をモードラインで設定した場合、設定はファイルが読み込まれた後で - 変更されるので注意してください。つまり設定された値はそのファイルを保存 - するときになってから効果を発揮します。もし 'fenc' をモードラインで設定 - するなら 'nomodified' も同時に設定すると ":q" での終了を妨げないのでい - いかもしれません。 - - *'fe'* - NOTE: Vim version 6.0 以前では、このオプションはVim全体の文字エンコー - ディングを指定していたことに注意。これは誤りだった。そのためには代わり - に 'encoding' を使うこと。古い省略形式の名前は 'fe' だが、これはもう使 - われていない。 - - *'fileencodings'* *'fencs'* -'fileencodings' 'fencs' 文字列 (既定値: "ucs-bom", - 'encoding' の値がUnicodeに設定されたときは - "ucs-bom,utf-8,default,latin1") - グローバル - {Vi にはない} - {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み有効} - 値は、既存のファイルの編集を開始するときに考慮される文字エンコーディン - グのリストである。ファイルが読み込まれると、Vimは指定されたうちの先頭 - の文字エンコーディングを使おうとする。そのときエラーが発見されると、値 - のリスト内で次に並んでいるエンコーディングが試される。あるエンコーディ - ングでうまくいくとわかると、'fileencoding'がそれに設定される。すべての - エンコーディングが失敗すると'fileencoding'は空文字列に設定され、 - 'encoding'の値が使われることになる。 - 警告: 文字エンコーディングを変換すると、情報が失われるおそれが - ある!'encoding' が "utf-8" だと、変換は大抵成功するし、逆変換 - をしても同じテキストになる。'encoding' が "utf-8" でないときは、 - 非アスキー文字が失われるかもしれない!変換できない文字をどう扱 - うかは引数|++bad|で指定することができる。 - 空ファイルやアスキー文字のみのファイルではほとんどのエンコーディングで - うまくので、'fileencodings'の最初の値が使われる("ucs-bom"を除く。これ - はBOMがなければいけない)。他のエンコーディングがよければ自動コマンドイ - ベントBufReadPostを使って、そのエンコーディングが使われるかどうかを判 - 定すること。例: > - au BufReadPost * if search('\S', 'w') == 0 | - \ set fenc=iso-2022-jp | endif -< これは、ファイルが空白文字しか含まないとき'fileencoding'を - "iso-2022-jp"に設定する。 - 引数|++enc|を使ったときは'fileencodings'の値は考慮されない。 - 新規ファイルには'fileencodings'は適用されないことに注意。代わりに - 'fileencoding'のグローバルな値が適用される。これを設定するには: > - :setglobal fenc=iso-8859-2 -< とする。これは存在しないファイルが空のファイルとは異なるエンコーディン - グになることを意味する。 - ファイル先頭にユニコードの BOM (Byte Order Mark: バイト順マーク) があ - るかどうか調べるには、"ucs-bom" という特別な値が使える。この値を - "utf-8" 等のUnicode系の値よりも後に指定すると正しく機能しない。 - 8ビットエンコーディング("latin1"など)の項目はリストの最後に書かなけれ - ばならない。そうしないとVimがエラーを検出できず、常にそのエンコーディ - ングが適用されてしまうためである。 - 特別な値"default"を使うと環境からのエンコーディングが適用される。これ - が'encoding'の既定の値である。これは'encoding'が"utf-8"に設定され、環 - 境がロシア語などlatin1でないエンコーディングを使っているときに便利であ - る。 - 'encoding'が"utf-8"のとき、ファイルが不正なバイト列を含んでいるとその - ファイルはUTF-8と認識されない。コマンド|8g8|を使うと不正なバイト列を見 - つけることができる。 - 間違った値: どこが間違っているか: - latin1,utf-8 常に"latin1"が使われてしまう - utf-8,ucs-bom,latin1 utf-8のファイルでBOMが認識されない - cp1250,latin1 常に"cp1250"が使われてしまう - 'fileencodings' が空のときには 'fileencoding' は変更されない。 - 設定可能な値については 'encoding' を参照すること。 - このオプションを設定しても次にファイルを読み込むときまでは効果がない。 - - *'fileformat'* *'ff'* -'fileformat' 'ff' 文字列 (MS-DOS, MS-Windows, OS/2 での既定値: "dos", - Unix での既定値: "unix", - Macintosh での既定値: "mac") - バッファについてローカル - {Vi にはない} - バッファにファイルを読み込んだり、バッファからファイルに書き込んだりす - るときに使われる <EOL> を、カレントバッファについて設定する。 - dos <CR> <NL> - unix <NL> - mac <CR> - "dos" が使われたとき、ファイル末尾の CTRL-Z は無視される。 - |file-formats| と |file-read| を参照。 - ファイルの文字エンコーディングについてはオプション 'fileencoding' を参 - 照。 - 'binary' がオンのときは、'fileformat' の実際の値は無視され、ファイルの - 読み書きは値が "unix' に設定されたときのように行われる。 - ファイルの編集を始めたときに 'fileformats' が空でなく、'binary' がオフ - ならば、'fileformat' は自動的に設定される。 - ファイルの編集を始めた後にこのオプションを設定すると、'modified' がオ - ンになる。なぜならそのファイルの中身は、書き込まれるときには違うものに - なるからである。 - このオプションは、'modifiable' がオフのときは変更できない。 - 後方互換性のために: このオプションが "dos" になると 'textmode' がオン - になり、それ以外では 'textmode' はオフになる。 - - *'fileformats'* *'ffs'* -'fileformats' 'ffs' 文字列 (既定値: - Vim+Vi MS-DOS, MS-Windows OS/2: "dos,unix", - Vim Unix: "unix,dos", - Vim Mac: "mac,unix,dos", - Vi Cygwin: "unix,dos", - Vi その他: "") - グローバル - {Vi にはない} - 想定される改行 (<EOL>) の種類を指定する。これは新しいバッファの編集を - 始めたときと、ファイルを既存のバッファに読み込んだときに使われる。 - - 値が空のときは、オプション 'fileformat' で指定された種類の改行が常に - 使われる。自動的な設定は行われない。 - - 1種類の名前が設定されているときは、新しいバッファが開かれるときには - 常にその種類の改行が使われる。そのバッファでは、'fileformat' はこの - オプションに従って設定される。'fileformats' は、ファイルを既存のバッ - ファに読み込むときに使われる。その際、そのバッファで 'fileformat' が - 何に設定されていても関係ない。 - - 複数の名前がコンマで区切られて設定されているときは、ファイルを読み込 - むときに <EOL> の判別が自動的に行われる。Vimはファイルの編集を始める - ときに、<EOL> を以下のように調べる。 - 1. 全ての行が <CR><NL> で終わっており、かつ 'fileformats' が "dos" - を含むなら、'fileformat' は "dos" になる。 - 2. 改行に <NL> が使われていて、かつ 'fileformats' が "unix" を含むな - ら、'fileformat' は "unix" になる。 Note <NL> があって、その前に - <CR> がないと、"dos" より "unix" が優先的に使われることに注意。 - 3. 'fileformat' がまだ設定されておらず、'fileformats' に "mac" が含 - まれているときは、'fileformat' は "mac" に設定される。 - つまり "mac" が選択されるのは: - "unix" が含まれていないか <NL> がファイルに無い、そして - "dos" が含まれていないか <CR><NL> がファイルに無いときである。 - ただし: "unix" が選択され、最初の <NL> よりも前に <CR> があり、 - 最初の数行において <CR> の数が <NL> の数よりも多いときは、"mac" - に設定される。 - 4. それでも 'fileformat' を決定できないときは、'fileformats' の中で - 最初に指定されている値が使われる。 - 既存のバッファにファイルを読み込むときにも同じ経過をたどる。しかし - 'fileformat' は読み込まれるファイルについては適切に設定されるが、 - そのバッファでの値は変更されない。 - 'binary' がオンのときは、'fileformats' は使われない。 - - Note: Vim が空のバッファで起動されたときはこのオプションは使用されませ - ん。変更したい場合は .vimrc で 'fileformat' を設定してください。 - - DOS形式の <EOL> (<CR><NL>) のシステムでは、コマンド ":source" で読み込 - まれるファイルと、ファイル vimrc については、<EOL> の判別が自動的に行 - われる。 - - 'fileformats' が空のときは、自動設定は行われない。常にDOS形式の改行 - が使われる。 - - 'fileformats' の値に1種類以上の名前が設定されているときは、自動設定 - が行われる。これはファイル内の1個目の <NL> に関して行われる。その前 - に <CR> があるときはDOS形式が使われ、そうでなければUnix形式が使われ - る。 - また |file-formats| も参照。 - 後方互換性のために: このオプションに、空の文字列か1種類だけの名前が設 - 定されたとき (コンマが含まれていないとき) には、'textauto' はオフにな - る。そうでなければ 'textauto' はオンになる。 - NOTE: このオプションは、'compatible' がオンのときはViの既定値に、オフ - のときはVimの既定値になるので注意。 - - *'filetype'* *'ft'* -'filetype' 'ft' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+autocmd| 機能付きでコンパイルされたときのみ - 有効} - このオプションが変更されると autocommand のイベント FileType が発生し、 - このオプションの値にマッチする全ての autocommand が実行される。つ - まり、(訳注: 普通 autocommand が実行されるのはファイル名がマッチしたと - きだが) 'filetype' の値がファイル名の代わりに使われる。 - しかしこのオプションはカレントファイルのファイルタイプを常に反映してい - るわけではない。普通このオプションは、ファイルタイプが判別されたときに - 設定される。判別を有効にするにはコマンド ":filetype on" を使うこと - |:filetype|。 - ファイルタイプが自動的に認識されないファイルのモードラインで、このオプ - ションを異なった値に設定すると非常に便利である。例えば、IDL ファイルの - 中でこうする。 - /* vim: set filetype=idl : */ ~ - |FileType| |filetypes| - 値の中にドットが現れると、それが2つのファイルタイプ名の区切りとなる。 - 例: - /* vim: set filetype=c.doxygen : */ ~ - こうすると最初にファイルタイプ"c"を使い、次にファイルタイプ"doxygen"を - 使う。これはファイルタイププラグインと構文ファイル両方に適用される。2 - 個以上のドットが現れてもよい。 - このオプションは 'cpoptions' のフラグ 's' や 'S' に関わらず、別のバッ - ファにはコピーされない。 - 通常のファイル名文字だけが使える。"/\*?[|<>"は不正である。 - - *'fillchars'* *'fcs'* -'fillchars' 'fcs' 文字列 (既定では "vert:|,fold:-") - グローバル - {Vi にはない} - {Vi mが |+windows| 機能と |+folding| 機能付きでコンパ - イルされたときのみ有効} - ステータス行と垂直分割の区切りを埋める文字を設定する。値にはキーワード - をコンマで区切って指定する。 - - キーワード 既定値 変更の対象 ~ - stl:文字 ' ' か '^' カレントウィンドウのステータス行 - stlnc:文字 ' ' か '-' 非カレントウィンドウのステータス行 - vert:文字 '|' 垂直分割の区切り |:vsplit| - fold:文字 '-' 'foldtext' での空白部分 - diff:文字 '-' 'diff' での削除された行 - - 指定されなかったキーワードについては、既定値が使われる。"stl" と - "stlnc" には、強調表示が行われているときは空白が、行われていないときは - '^' と '-' がそれぞれ使われる。 - - 例: > - :set fillchars=stl:^,stlnc:-,vert:\|,fold:-,diff:- -< これは既定値と似ているが、強調表示が行われていてもこれらの文字が使われ - る点が異なっている。 - - "stl"と"stlnc"に対しては1バイトの値しか使用できない。 - - 強調表示が行われるものおよびその属するグループ: - キーワード 強調表示グループ ~ - stl:文字 StatusLine |hl-StatusLine| - stlnc:文字 StatusLineNC |hl-StatusLineNC| - vert:文字 VertSplit |hl-VertSplit| - fold:文字 Folded |hl-Folded| - diff:文字 DiffDelete |hl-DiffDelete| - - *'fkmap'* *'fk'* *'nofkmap'* *'nofk'* -'fkmap' 'fk' 切替 (既定ではオフ) *E198* - グローバル - {Vi にはない} - {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み有効} - オンのとき、キーボードは Farsi 文字セットにマップされる。 - 普通、オプション 'allowrevins' をオンにしておき、insertモードでこのオ - プションをコマンド CTRL-_ で切り替えられるようにする |i_CTRL-_|。 - |farsi.txt| を参照。 - - *'foldclose'* *'fcl'* -'foldclose' 'fcl' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - "all" に設定すると、カーソルが折り畳み区間の外に出たとき、その区間の折 - り畳みの深さがオプション 'foldlevel' より大きければ折り畳みを行う。折 - り畳み区間の外に出るとき、自動的に折り畳みを行いたいときに便利である。 - - *'foldcolumn'* *'fdc'* -'foldcolumn' 'fdc' 数値 (既定では 0) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - 非0 に設定されると、ウィンドウの端の指定された幅の列が折り畳みを (開い - ていても閉じていても) 表示する。最大値は 12 である。 - |folding| を参照。 - - *'foldenable'* *'fen'* *'nofoldenable'* *'nofen'* -'foldenable' 'fen' 切替 (既定ではオン) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - オフのときは、全ての折り畳みが開かれる。このオプションは、全てのテキス - トを折り畳みなしで見る状態とテキストの一部を折り畳んで見る (手動で開か - れたり閉じられた折り畳みも含む) 状態を素早く切り替えるために使われる。 - このオプションはコマンド |zi| で切り替えることができる。オプション - 'foldenable' がオフのときは、'foldcolumn' は空白のままである。 - このオプションは、新しい折り畳みを作ったり、折り畳みを閉じたりするコマ - ンドによってオンにされる。 - |folding| を参照。 - - *'foldexpr'* *'fde'* -'foldexpr' 'fde' 文字列 (既定では "0") - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能と |+eval| 機能付きでコンパイル - されたときのみ有効} - オプション 'foldmethod' が "expr" のときに使われる expression。これは - 折り畳みの深さを求めるために各行について評価される。|fold-expr| を参照。 - - この式はサンドボックス|sandbox|の中で評価することもできる。 - |sandbox-option|を参照。 - 'diff' がオンのとき、このオプションをモードライン |modeline| で設定す - ることはできない。 - - 'foldexpr'を評価している最中にテキストを変更したり他のウィンドウへジャ - ンプすることは許されていない。|textlock| - - *'foldignore'* *'fdi'* -'foldignore' 'fdi' 文字列 (既定では "#") - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - オプション 'foldmethod' が "indent" のときのみ使われる。'foldignore' - で指定した文字で始まる行の折り畳みの深さは、上下の行から決められる (訳 - 注: その行のインデントが上下と違っていても、一緒に折り畳めるようにする - ため)。空白を無視した上で指定された文字の存在を調べる。 - 既定値の "#" はC言語プログラムについてはうまく動作する。|fold-indent| - を参照。 - - *'foldlevel'* *'fdl'* -'foldlevel' 'fdl' 数値 (既定では 0) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - 折り畳みの深さを設定する。指定した数値よりレベルの深い折り畳み区間は閉 - じられる。このオプションを 0 に設定すると、全ての折り畳みが閉じられる。 - 大きな数値を設定すると、それだけ閉じられる折り畳みの数は減る。 - このオプションはコマンド |zm|, |zM| や |zR| によって設定される。 - |fold-foldlevel| を参照。 - - *'foldlevelstart'* *'fdls'* -'foldlevelstart' 'fdls' 数値 (既定では -1) - グローバル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - ウィンドウで新しいバッファの編集を始めるときのオプション 'foldlevel' - を設定する。編集開始時に常に全ての折り畳みを閉じておいたり (そのために - は 0 にする)、いくつかを閉じておいたり (1 にする)、全て開いておいたり - (99にする) するときに便利である。 - これによる設定はモードラインの読み込み前に行われるので、モードライン内 - での設定はこのオプションによる設定より優先される。ファイルの編集を - |diff-mode| で開始してもやはりこのオプションは無視され、全ての折り畳み - が閉じられる。 - またこれによる設定はイベント BufReadPre による autocommand よりも前に - 行われるので、特定のファイルについて autocommand で 'foldlevel' を上書 - きできる。 - 値が負のときには、このオプションは使われない。 - - *'foldmarker'* *'fmr'* *E536* -'foldmarker' 'fmr' 文字列 (既定では "{{{,}}}") - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - オプション 'foldmethod' が "marker" のときに使われる、折り畳み開始/終 - 了を示すマーカー。開始マーカーと終了マーカーを分けるために、間に1個の - コンマがなければいけない。マーカーはただの文字列である (正規表現では動 - 作が遅すぎるだろう)。 - |fold-marker| を参照。 - - *'foldmethod'* *'fdm'* -'foldmethod' 'fdm' 文字列 (既定では "manual") - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - カレントウィンドウに適用される折り畳みの種類を設定する。指定可能な値は - 以下の通り。 - |fold-manual| manual 折り畳みは手動で設定する。 - |fold-indent| indent 等しいインデントの行で折り畳みを作る。 - |fold-expr| expr オプション 'foldexpr' で深さを設定する。 - |fold-marker| marker マーカーで折り畳みを指定する。 - |fold-syntax| syntax 構文強調表示のキーワードを使って指定する。 - |fold-diff| diff 変更されていないテキストを折り畳む。 - - *'foldminlines'* *'fml'* -'foldminlines' 'fml' 数値 (既定では 1) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - 画面上の行数を設定する。設定された行数より大きな折り畳みだけが閉じた折 - り畳みとして表示される。手動で閉じられた折り畳みにも適用される。初期設 - 定の 1 では、折り畳みが 2 行以上の場合のみ閉じることができる。ゼロに設 - 定することで 1 行だけの折り畳みを閉じることができる。 - Note: このオプションは折り畳みの表示方法に関してのみ効果を持つ。例えば - "zc" で折り畳みを閉じて、その折り畳みが 'foldminlines' より小さいため - に開いた状態で表示されているとき、続けて "zc" を入力するとその外側の折 - り畳みを閉じることになる。 - - *'foldnestmax'* *'fdn'* -'foldnestmax' 'fdn' 数値 (既定では 20) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - 折り畳みの方法に "indent" や "syntax" が選ばれたときの、折り畳みの入れ - 子の深さの最大値を設定する。これにより折り畳みが膨大に作られるのを防ぐ - ことができる。Vim内部の制限が 20 になっているので、20 以上を設定しても - 無効である。 - - *'foldopen'* *'fdo'* -'foldopen' 'fdo' 文字列 (既定では "block,hor,mark,percent,quickfix, - search,tag,undo") - グローバル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - カーソルがコマンドによって、閉じている折り畳みの中に移動したとき、どの - 種類のコマンドだったら折り畳みが開かれるかを指定する。値はコンマ区切り - のキーワードである。 - NOTE: コマンドがマッピングの一部として実行されたときは、このオプション - は使われない。同じ効果を得るには、マッピングにコマンド |zv| を加えるこ - と。 - (理由: 折り畳みを開くかどうかはマッピング自身でコントロールできたほう - がいい) - - キーワード 適用されるコマンド ~ - all 全て - block "(", "{", "[[", "[{" 等 - hor 水平移動: "l", "w", "fx" 等 - insert Insertモードのコマンド全て - jump 長いジャンプ: "G", "gg" 等 - mark マークへのジャンプ: "'m", CTRL-O 等 - percent "%" - quickfix ":cn", ":crew", ":make" 等 - search パターン検索: "/", "n", "*", "gd" 等 - (":"コマンドでの検索パターンには適用されない) - |[s|と|]s|にも適用される。 - tag タグへのジャンプ: ":ta", CTRL-T 等 - undo アンドゥ/リドゥ: "u" と CTRL-R - 移動コマンドがオペレータとして使われたときは (例えば "dl" や "y%")、こ - のオプションは使われない。つまりオペレータは閉じられている折り畳み全体 - を含む効果を持つということだ。 - Note 垂直方向の移動がここに含まれていないことに注意。それは垂直移動を - 含めると、閉じられた折り畳みの上への移動が困難になるからだ。Insertモー - ドでテキストが挿入されるときには、カーソルが中に入っていった折り畳みは - 必ず開かれる。 - 折り畳みを閉じるには、|zx| でオプション 'foldlevel' を再適用するか、 - 'foldclose' を "all" にすればよい。 - - *'foldtext'* *'fdt'* -'foldtext' 'fdt' 文字列 (既定では "foldtext()") - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+folding| 機能付きでコンパイルされたときのみ - 有効} - 閉じられた折り畳みのところに表示されるテキストを生成する expression を - 指定する。|fold-foldtext| を参照。 - - この式はサンドボックス|sandbox|の中で評価することもできる。 - |sandbox-option|を参照。 - - 'foldexpr'を評価している最中にテキストを変更したり他のウィンドウへジャ - ンプすることは許されていない。|textlock| - - *'formatoptions'* *'fo'* -'formatoptions' 'fo' 文字列 (Vimの既定値: "tcq", Viの既定値: "vt") - バッファについてローカル - {Vi にはない} - 自動整形の実行方法を決めるフラグの列である。|fo-table| を参照。オプショ - ン 'paste' がオンのときは、('formatoptions' が空のときのように) 整形は - 行われない。読みやすくするために、フラグの間にコンマを挟んでもよい。 - 将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+=" - と "-=" を使うこと |add-option-flags|。 - NOTE: このオプションは、'compatible' がオンのときはViの既定値に、オフ - のときはVimの既定値になるので注意。 - - *'formatlistpat'* *'flp'* -'formatlistpat' 'flp' 文字列 (既定では "^\s*\d\+[\]:.)}\t ]\s*") - バッファについてローカル - {Vi にはない} - リストのヘッダを認識するのに使われるパターン。'formatoptions'のフラグ - "n"に適用される。 - このパターンにマッチする部分が、それ以下の行のインデントとなる。 - |/\ze|を使うとマッチの終わりをマークしつつ、さらに文字のチェックを続け - ることができる。 - (訳注: 例えば、このオプションが既定の"^\s*\d\+[\]:.)}\t ]\s*"のとき、 - マッチする部分は - 1. the first item - wraps - ^^^^^^^^^^ - の部分である。既定の値に\zeをはさんで"^\s*\d\+[\]:.)}\t ]\ze\s*"とす - ると、リストのヘッダと認識されるパターンはまったく変わらないが、次行 - のインデントが\ze以前の部分に等しくなる: - 1. the first item - wraps - ^^^^^^ - ) - パターンの後ろに文字がなければならない。行全体がマッチすると、その行は - マッチがないのと同様に扱われてしまう。 - 既定では数字(後ろに句読点や空白があってもよい)を認識する。 - - *'formatprg'* *'fp'* -'formatprg' 'fp' 文字列 (既定では "") - グローバル - {Vi にはない} - 選択された行をコマンド |gq| で整形するのに使われる外部プログラムの名前 - を指定する。使われるプログラムは標準入力からテキストを読み込み、整形さ - れたテキストを標準出力に出力しなければいけない。Unixのプログラム "fmt" - が代表である。 - オプション'formatexpr'が空でないならば、代わりにその値が使われる。この - オプションが空ならば、内部の整形関数が使われる|C-indenting|。 - 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については、 - |option-backslash| を参照。 - この式をサンドボックス|sandbox|の中で評価することができる。 - |sandbox-option|を参照。 - - *'formatexpr'* *'fex'* -'formatexpr' 'fex' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが|+eval|機能つきでコンパイルされたときのみ有効} - オペレータ |gq| や自動整形 ('formatoptions' 参照) で行の範囲を整形する - ために評価される式。このオプションが空だと 'formatprg' が使われる。 - - |v:lnum| 変数は整形される最初の行を保持する。 - |v:count| 変数は整形される行数を保持する。 - |v:char| 変数は挿入されようとしている文字を保持する (式が自動整形のた - めに評価されたときに使用される)。空文字の場合もある。この文 - 字をバッファに挿入しないでください。 - - 例: > - :set formatexpr=mylang#Format() -< これはautoload/mylang.vim中の関数mylang#Format()を呼ぶ。|autoload| - - また、'textwidth'がオンになっていて、テキストを追加しているときにその - 値を超えたときにもこの式が評価される。これは内部整形が使われるときと同 - じ条件で起こる。この式を評価した後のカーソル位置がテキストに対して元の - 位置と同じになるようにすること。この式を評価中は、関数|mode()|は"i"ま - たは"R"を返す。 - - この関数が非ゼロを返すと Vim 内部の文章整形処理が使われる。 - - この式はサンドボックス (|sandbox|) の中で評価されることがあります。 - |sandbox-option|を参照。その場合、サンドボックスの中ではバッファテキス - トの変更は許可されていないので、このオプションは機能しません。 - - *'fsync'* *'fs'* -'fsync' 'fs' 切替 (既定ではオン) - グローバル - {Vi にはない} - これがオンになっていると、ファイル書き込みの後にライブラリ関数fsync() - が呼ばれる。するとファイルがディスクにフラッシュされ、メタデータのみを - ジャーナルするファイルシステム上でも安全に書き込みが行われるようになる。 - ラップトップモードで動作するLinuxシステム上で強制的にハードドライブを - 回転させることになるが、これはある種の状況では望ましくない。これをオフ - にするとクラッシュ時にデータを失う可能性を高めることに注意。fsync()の - 実装がないシステム上ではこの変数は常にオフである。 - スワップファイルに対してfsync()をコントロールするには'swapsync'を参照。 - - *'gdefault'* *'gd'* *'nogdefault'* *'nogd'* -'gdefault' 'gd' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オンのときは、コマンド ":substitute" のフラグ 'g' がオンであることが既 - 定になる。つまり行内のマッチする文字列が、1番目のものだけでなく、全て - 置換される。":substitute" に 'g' が指定されると、逆に1番目のみを置換す - るようになる。|complex-change| を参照。 - - コマンド 'gdefault' がオン 'gdefault' がオフ ~ - :s/// 全て置換 最初だけ置換 - :s///g 最初だけ置換 全て置換 - :s///gg 全て置換 最初だけ置換 - - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'grepformat'* *'gfm'* -'grepformat' 'gfm' 文字列 (既定では "%f:%l%m,%f %l%m") - グローバル - {Vi にはない} - コマンド ":grep" の出力を認識するための書式。 - オプション 'errorformat' と同じく、関数 scanf 風の書式指定を使う。 - |errorformat| を参照。 - - *'grepprg'* *'gp'* -'grepprg' 'gp' 文字列 (既定では "grep -n ", - Unixでは: "grep -n $* /dev/null", - Win32では: "findstr /n" か "grep -n", - VMSでは: "SEARCH/NUMBERS ") - グローバル/バッファについてローカル |global-local| - {Vi にはない} - コマンド ":grep" で使われるプログラム。このオプションは文字 '%' や '#' - を含んでもよい。これらはコマンドラインで使われるときのように展開される。 - 引数の挿入される場所を指定するには "$*" が使える。環境変数は展開される - |:set_env|。値に空白や '\' を含める方法については、|option-backslash| - を参照。 - ユーザの "grep" が引数 "-H" を認識するなら、":grep" が1個のファイルに - 対しても適切に働くように、次のようにすること。 > - :set grepprg=grep\ -nH -< 特別な値: 'grepprg'が"internal"に設定されていると、|:grep|は|:vimgrep| - と同様に、|:lgrep|は|:lvimgrep|と同様に、|:grepadd|, - |:vimgrepadd|,|:lgrepadd|は|:lvimgrepadd|と同様に働くようになる。 -< |:make_makeprg| も参照。そこの記述のほとんどが 'grepprg' にも適用でき - るからだ。 - Win32では、"findstr.exe" が見つかるならば既定値は "findstr /n" である。 - 見つからなければ "grep -n" である。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'guicursor'* *'gcr'* *E545* *E546* *E548* *E549* -'guicursor' 'gcr' 文字列 (既定では "n-v-c:block-Cursor/lCursor, - ve:ver35-Cursor, - o:hor50-Cursor, - i-ci:ver25-Cursor/lCursor, - r-cr:hor20-Cursor/lCursor, - sm:block-Cursor - -blinkwait175-blinkoff150-blinkon175") - MS-DOSとWin32コンソールでは: - "n-v-c:block,o:hor50,i-ci:hor15, - r-cr:hor30,sm:block") - グローバル - {Vi にはない} - {Vi mのGUI版か、MS-DOSまたはWin32のコンソール版でのみ - 有効} - Vimのそれぞれのモード内でのカーソルの外観を指定する。GUI上では完全に機 - 能する。MSDOSやWin32コンソールではカーソルの高さだけを変更する。これは - ブロックカーソルを指定する、または垂直・水平方向のパーセンテージを指定 - することで行う。 - コンソール上ではエスケープシーケンス't_SI'と't_EI'が使われる。 - - 値はコンマ区切りのキーワードのリストである。リストは部門別に分かれてお - り、各部門はモードリストと引数リストからなる。 - モードリスト:引数リスト,モードリスト:引数リスト,.. - モードリストは、モードを表す以下の記号のダッシュ区切りのリストである。 - n Normalモード - v Visualモード - ve 'selection' が "exclusive" のときの Visualモード (指定 - されなければ 'v' と同じ設定) - o Operator-pendingモード - i Insertモード - r Replaceモード - c Command-line Normal (追加) モード - ci Command-line Insertモード - cr Command-line Replaceモード - sm Insertモードでの対応括弧表示時 - a 全てのモード - 引数リストは、以下の引数のダッシュ区切りのリストである。 - hor{N} 文字高の {N}% の高さの水平バーカーソル - ver{N} 文字幅の {N}% の幅の垂直バーカーソル - block 文字全体を覆う大きさのブロックカーソル - [上の3個のうちの1個だけを指定できる] - blinkwait{N} *cursor-blinking* - blinkon{N} - blinkoff{N} - カーソルの点滅について指定する。blinkwait にはカーソル - が点滅を始めるまでの遅延時間を、blinkon にはカーソルが - 表示される時間を、blinkoff にはカーソルが消えている時 - 間を指定する。時間の単位はミリ秒である。どれかに 0 を - 指定すると、カーソルは点滅しない。既定では - "blinkwait700-blinkon400-blinkoff250" となっている。こ - れらは指定されなかった項目に適用される。つまり、既定で - は点滅するように設定されているということだ。点滅しない - ようにするには "blinkon0" を指定すればよい。カーソルが - 点滅するのはVimが入力を待っている間で、コマンドを実行 - している間は点滅しない。 - カーソルを xterm の中で点滅させるには、|xterm-blink| - を参照。 - {group-name} - カーソルの色とフォントを設定する、強調表示のグループ名 - を指定する。 - {group-name}/{group-name} - 強調表示グループ名を2個指定する。1個目は言語マッピング - がないときに使われ、2個目は言語マッピングがあるときに - 使われる。|language-mapping| - - 値の一部の例: - n-c-v:block-nCursor Normalモード、Command-lineモードとVisualモード - で、強調表示グループ "nCursor" で指定された色 - のブロックカーソルを使う。 - i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150 - InsertモードとCommand-line Insertモードで、強 - 調表示グループ "iCursor" で指定された色の、文 - 字高の30%の高さの垂直バーカーソルを使う。点滅 - は少し速くする。 - - モード 'a' は他とは異なっていて、与えられた引数リストを全てのモードに - 対して設定し、指定されなかった引数は変更しない。これは全てのモードに共 - 通の設定をするためにある。例えば、点滅を止めるには "a:blinkon0" とする。 - - カーソル強調表示の例: > - :highlight Cursor gui=reverse guifg=NONE guibg=NONE - :highlight Cursor gui=NONE guifg=bg guibg=fg -< - MS-DOSとWin32のコンソール版では、カーソルの高さのみを指定できる。ブロッ - クカーソルを指定するか、垂直/水平バーカーソルの高さ/幅のパーセンテー - ジを指定する。 - - *'guifont'* *'gfn'* - *E235* *E596* -'guifont' 'gfn' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mのGUI版でのみ有効} - VimのGUI版で使われるフォントのリストである。値の最も単純なものは、ただ - 1個のフォント名である。フォントが見つからないとき、エラーメッセージが - 表示される。別のフォント名を試すには、フォント名のコンマ区切りのリスト - を指定できる。その中の最初の使用可能なフォントが使われる。 - オプション 'guifontset' が空でないとき、'guifont' は使われない。 - - 'guifontset'がサポートされているシステム上(X11)で、'guifontset'が空で - ないならば'guifont'が使われる。 - - コンマの後の空白は無視される。フォント名の中にコンマを指定するには、コ - ンマの前に '\' を置くこと。さらにオプションの値の中で空白や '\' を使う - には、それらの前に余分に '\' を置かなければならない。 - |option-backslash| も参照。例えば > - :set guifont=Screen15,\ 7x13,font\\,with\\,commas - (訳注: 結果は "Screen15, 7x13,font\,with\,commas") -< とすると、まずVimはフォント "Screen15" を使おうとし、だめなら代わりに - "7x13" を、そして "font,with,commas" を使おうとする。 - - フォントをどれも読み込めなかったら現在の設定のままになる。空のフォント - リストが与えられると、他のリソース設定を試してみて (X では Vim.font リ - ソースが使われる)、それがだめなら、必ず存在するはずの組み込みの既定 - フォントを試す (X の場合は "7x13")。指定されるフォント名は "normal" な - (訳注: 太字や斜字体でない) フォントでなければならない。Vim は関連する - 太字体や斜字体を見つけようとする。 - - Win32, GTK, Motif, Mac OS, Photon では: > - :set guifont=* -< これはフォント選択ダイアログを開く。そこで望みのフォントを選択すること - ができる。 - - フォント名は使っているGUIに依存する。様々なシステムに対して'guifont'を - 設定する方法については|setting-guifont|を参照。 - - GTK+ 2ではフォント名は次のようになる: > - :set guifont=Andale\ Mono\ 11 -< これだけである。もうXLFDは受け付けない。中国語の場合は以下の記述でうま - くいくと報告されている: > - if has("gui_gtk2") - set guifont=Bitstream\ Vera\ Sans\ Mono\ 12,Fixed\ 12 - set guifontwide=Microsoft\ Yahei\ 12,WenQuanYi\ Zen\ Hei\ 12 - endif -< - Mac OXSでは次のようにする: > - :set guifont=Monaco:h10 -< 'macatsui'も参照。表示上の問題を解決する助けになる。 - *E236* - Note フォントは等幅でなければならない (全ての文字が同じ幅でなければな - らない)。例外はGTK 2である。どんなフォントでも受け付けるが、等幅フォン - トがもっともきれいに見える。 - - X11でフォントのプレビューをするには、プログラム "xfontsel" が使えるか - もしれない。"xlsfonts" は、使用可能な全てのフォントのリストを与える。 - - Win32のGUIについて *E244* *E245* - - フォント名には以下のオプションを指定できる。 - hXX - 文字高が XX (単位はポイント。浮動小数点数でもよい) - wXX - 文字幅が XX (単位はポイント。浮動小数点数でもよい) - b - ボールド (太字体) - i - イタリック (斜字体) - u - 下線付き - s - 打ち消し (文字を横切る線付き) - cXX - 文字セットが XX。使用可能なものは以下の通り: ANSI, - ARABIC, BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, - GB2312, GREEK, HANGEUL, HEBREW, JOHAB, MAC, OEM, - RUSSIAN, SHIFTJIS, SYMBOL, THAI, TURKISH, - VIETNAMESE ANSI, BALTIC - 通常は"cDEFAULT"を使うとよいだろう。 - - オプションの区切りには ':' を使うこと。 - - 空白の代わりに '_' が使えるので、空白を '\' でエスケープする必要はな - い。 - - 例: > - :set guifont=courier_new:h12:w5:b:cRUSSIAN - :set guifont=Andale_Mono:h7.5:w4.5 -< |font-sizes| も参照。 - - *'guifontset'* *'gfs'* - *E250* *E252* *E234* *E597* *E598* -'guifontset' 'gfs' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mのGUI版で、|+xfontset| 機能付きでコンパイルされた - ときのみ有効} - {GTK+ 2 GUIでは利用できない} - このオプションには2種類 (またはそれ以上) のフォントを指定する。値が空 - のときは無視される。 1種類目は普通の英語に使われるもので、2種類目はユー - ザの使う特別な言語用である。 |xfontset| を参照。 - このオプションを設定すると、全てのフォント名はフォントセット名として扱 - われるようになる。またコマンド |:highlight| の引数 "font" に使われるも - のも同様である。 - フォントはカレントロケールに適合していなければならない。カレントロケー - ルの使用している文字セット用のフォントが値に含まれていないと、 - 'guifontset' の設定は失敗する。 - Note 'guifont' と 'guifontset' の違いに注意。'guifont' では、コンマで - 区切られたフォント名は代替用で、そのうちのどれか一つが使われる。 - 'guifontset' では、コンマも含めて値の文字列全体がフォントセット名を表 - す。代替フォントセットを指定することはできない。 - 次の例は多くのX11システムで正しく機能する。 > - :set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-* -< - *'guifontwide'* *'gfw'* *E231* *E533* *E534* -'guifontwide' 'gfw' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mのGUI版でのみ有効} - 2倍幅の文字に使われるフォントをコンマ区切りのリストで指定する。値が空 - のときは無視される。読み込み可能なフォントのうち先頭のものが使われる。 - Note: 指定したフォントの幅は、オプション 'guifont' で指定したフォント - のちょうど2倍の幅で、同じ高さのものでなければならない。 - - GTK+ 2を除くすべてのバージョン: - - 'guifontwide'は、'encoding' が "utf-8" で、かつ 'guifontset' が空であ - るか不適切なものであるときにのみ使われる。 - 'guifont' が設定されていて、その中に適切なフォントが含まれており、かつ - 'guifontwide' が空のとき、Vimは適合する2倍幅のフォントを探し、 - 'guifontwide' をそれに設定しようとする。 - - GTK+ 2 GUI のみ: *guifontwide_gtk2* - - このオプションが設定されており、それが適切な値であるとき、'encoding'が - "utf-8"でなくても常に2倍幅文字に対して'guifontwide'が使われる。 - Vimは自動的に'guifontwide'に適合する値を探そうとはしない。 - 'guifontwide'が空ならばPango/Xftが'guifont'で利用できない文字に対する - フォントを選ぶ。そのため、Pango/Xftが選んだ値を上書きしたいのでない限 - り、'guifontwide'を設定する必要はまったくない。 - - *'guiheadroom'* *'ghr'* -'guiheadroom' 'ghr' 数値 (既定では 50) - グローバル - {Vi にはない} {Vi mのGTKとX11のGUI版でのみ有効} - GUIウィンドウを画面に合わせるときに、画面の高さから差し引かれるピクセ - ル数。このオプションはGUIを開始する前に、例えばファイル |gvimrc| 内で - 設定すること。値を 0 にすると、画面の高さ全体がウィンドウに使われる。 - 正の値を指定すると、それだけのピクセル数がウィンドウの装飾や画面上の他 - のもののために残される。ウィンドウを画面よりも高くするには、負の値を指 - 定すること。 - - *'guioptions'* *'go'* -'guioptions' 'go' 文字列 (既定では "gmrLtT" (MS-Windows), - "agimrLtT" (GTK, MotifとAthena)) - グローバル - {Vi にはない} - {Vi mのGUI版でのみ有効} - このオプションはVimのGUI版でのみ有効である。値は、GUIのどのコンポーネ - ントとオプションを使用するかを決定する、フラグの列である。 - 将来追加されるフラグによる問題を避けるため、コマンド ":set" では "+=" - と "-=" を使うこと |add-option-flags|。 - - 使用できるフラグは以下の通りである。 - *guioptions_a* *'go-a'* - 'a' 自動選択 (autoselect): 値に含まれると、Visualモードが開始され - るたび、またはVisual選択範囲が変更されるたびに、Vimはウィンド - ウシステム共通のクリップボードを使おうとする。つまりVisual選択 - で選択されたテキストは、Vim自身はもとより他のアプリケーション - でも張り付けに使えるということだ。(おそらくテキストに操作を実 - 行したせいで) Visualモードが終了したり、アプリケーションが選択 - 領域を張り付けようとしたときには、強調されたテキストは自動的に - クリップボードレジスタ "* にコピーされる。そのためVisualモード - が終了した後でも、選択領域を他のアプリケーションに張り付けるこ - とができる。 - 含まれないと、レジスタ "* に対するコピーや張り付けによって陽に - 指定されない限り、Vimはウィンドウシステム共通のクリップボード - を使おうとはしない。 - モードレスセレクションについても同様である。 - - *'go-A'* - 'A' モードレスセレクションに対する自動選択。フラグ 'a' と似ている - が、モードレスセレクションにのみ適用される。 - - 'guioptions' Visualモード モードレスセレクション ~ - "" X X - "a" O O - "A" X O - "aA" O O - - *'go-c'* - 'c' 単純な選択にはポップアップダイアログでなくコンソールダイアログ - を使う。 - - *'go-e'* - 'e' 'showtabline'で指定されたタイミングでタブを追加する。 - 'guitablabel'を使うとタブのラベルのテキストを変更することがで - きる。'e'がないと非GUIのタブページラインが使われる。GUIのタブ - はいくつかのシステム上(現在はGTK, Motif, Mac OS/X, MS-Windows) - でのみサポートされている。 - - *'go-f'* - 'f' フォアグラウンド (foreground): シェルからGUIを開始し、そのシェ - ルからgVimを独立させる際に関数 fork() を使わない。これはエディ - タが終了するのを待つプログラム (例えばメールプログラム等) に対 - して使う。フォアグラウンドでGUIを開始するには、これの代わりに - "gvim -f" や ":gui -f" も使える |gui-fork|。 - Note: このオプションはファイル vimrc 内で設定するよう注意。ファ - イル|gvimrc|が読み込まれたときはフォーキングがすでに実行されて - いるかもしれない。 - - *'go-i'* - 'i' Vimのアイコンを使う。KDEのGTKではウィンドウの左上に表示される。 - GTKでないX11では、制限のため白黒のアイコンが使われる。色つきの - アイコンについては |X11-icon| を参照。 - - *'go-m'* - 'm' メニューバーを表示する。 - *'go-M'* - 'M' システムメニューの実体 "$VIMRUNTIME/menu.vim" が読み込まれない。 - Note このフラグは、構文認識やファイルタイプ認識を起動する前に、 - ファイル .vimrc 内で追加されていなければならない (ファイル - .gvimrc が読み込まれたときには、システムメニューはすでに読み込 - まれた後である。コマンド ":syntax on" と ":filetype on" でもメ - ニューは読み込まれる)。 - *'go-g'* - 'g' メニュー項目の灰色表示: 無効のメニュー項目を灰色で表示する。含 - まれていないと、無効のメニュー項目は全く表示されない。 - 例外: Athenaでは常にグレー表示を使う。 - *'go-t'* - 't' メニュー項目の切り離しを有効にする。現在のところWin32, GTK+ と - Motif 1.2 GUI でのみ有効である。 - *'go-T'* - 'T' ツールバーを表示する。現在のところWin32, GTK+ と Motif, - Photon, Athena GUIでのみ有効である。 - *'go-r'* - 'r' 右スクロールバーを常に表示する。 - *'go-R'* - 'R' 垂直分割されたウィンドウがあるときのみ、右スクロールバーを表示 - する。 - *'go-l'* - 'l' 左スクロールバーを常に表示する。 - *'go-L'* - 'L' 垂直分割されたウィンドウがあるときのみ、左スクロールバーを表示 - する。 - *'go-b'* - 'b' 下 (水平) スクロールバーを表示する。サイズは表示されている行の - 中で一番長い行によって決まる。またはフラグ'h'が含まれていると - きはカーソル行によって決まる。|gui-horiz-scroll| - *'go-h'* - 'h' 水平スクロールバーのサイズをカーソル行の長さに制限する。計算量 - を軽減させる。|gui-horiz-scroll| - - そう、もちろん、本当に望むのなら、左スクロールバーと右スクロールバーを - 「両方」使うことだってできる :-) 詳しい情報については |gui-scrollbars| - を参照。 - - *'go-v'* - 'v' ダイアログのボタン配置を垂直方向にする。含まれていないとなるべ - く水平方向の配置を使うが、収まらないときには結局、垂直配置が使 - われる。 - *'go-p'* - 'p' X11のGUIにおいて、ポインタ・コールバックを使う。ウィンドウマネー - ジャの中にはこれが必要なものもある。カーソルが正しいタイミング - で点滅したり変形したりしないときは、これを追加してみること。こ - れはGUIを開始する前に設定しなければならない。ユーザのファイル - |gvimrc|内で設定すること。GUIが開始した後にこのフラグを追加した - り取り除いたりしても、効果はない。 - *'go-F'* - 'F' フッタを追加する。Motifでのみ有効である。|gui-footer| を参照。 - - - *'guipty'* *'noguipty'* -'guipty' 切替 (既定ではオン) - グローバル - {Vi にはない} - {Vi mのGUI版でのみ有効} - GUI版でのみ有効である。オンのときは、シェルコマンドからの入力用および - シェルコマンドへの出力用の仮想端末 pseudo-tty を開こうとする。 - |gui-pty| を参照。 - - *'guitablabel'* *'gtl'* -'guitablabel' 'gtl' 文字列 (既定では空文字列) - グローバル - {Vi にはない} - {GUI と |+windows| 機能を有効にしてコンパイルされたと - きのみ利用可能} - 空文字列でない場合は、GUI のタブページ行のラベルを設定する。空文字列で - あるか、または評価結果が空文字列である場合は、既定のラベルが使われる。 - より詳しくは |setting-guitablabel| を参照。 - - このオプションのフォーマットは 'statusline' のフォーマットに似ている。 - ツールチップには 'guitabtooltip' が使われる。下記参照。 - - GUI のタブページが表示されるときのみ使われる。'guioptions' に 'e' が含 - まれていなければならない。GUI でないタブページ行については 'tabline' - が使われる。 - - *'guitabtooltip'* *'gtt'* -'guitabtooltip' 'gtt' 文字列 (既定では空文字列) - グローバル - {Vi にはない} - {GUI と |+windows| 機能を有効にしてコンパイルしたとき - のみ利用可能} - - 空文字列でない場合は、GUI のタブページ行のツールチップを設定する。空文 - 字列である場合は、既定のツールチップが使われる。 - それ以外は上記の 'guitablabel' と同様。 - 改行を含めることもできる。そのもっとも簡単な方法は |:let|を使うことで - ある: > - :let &guitabtooltip = "line one\nline two" -< - *'helpfile'* *'hf'* -'helpfile' 'hf' 文字列 (既定では MS-DOS: "$VIMRUNTIME\doc\help.txt" - その他: "$VIMRUNTIME/doc/help.txt") - グローバル - {Vi にはない} - ヘルプファイルの名前。Vim に付属のヘルプファイルは全て単一のディレクト - リ内に一緒に置かれるべきである。そのディレクトリの他に、'runtimepath' - 中の全ての "doc" ディレクトリも対象になる。 - 環境変数は展開される |:set_env|。例: - "$VIMRUNTIME/doc/help.txt"。環境変数 $VIMRUNTIME が設定されてないとき - は、$VIM も試される。|$VIMRUNTIME| を参照。値に空白や '\' を含めること - については |option-backslash| も参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'helpheight'* *'hh'* -'helpheight' 'hh' 数値 (既定では 20) - グローバル - {Vi にはない} - {Vi mが |+windows| 機能付きでコンパイルされたときのみ - 有効} - コマンド ":help" で開かれたヘルプウィンドウの、開始時のウィンドウ高の - 最小値を設定する。ヘルプウィンドウの開始時の高さはカレントウィンドウの - 半分であるか、(オプション 'ea' がオンのときには) 他のウィンドウと同じ - である。ウィンドウ高が 'helpheight' より小さくなってしまうとき、実際の - 高さは 'helpheight' になる。こうしないようにするには 0 に設定すること。 - - *'helplang'* *'hlg'* -'helplang' 'hlg' 文字列 (既定では: メッセージ言語または空) - グローバル - {Vi が |+multi_lang| 機能つきでコンパイルされたときの - み有効} - {Vi にはない} - コンマ区切りの言語のリスト。これらの言語の中から、探しているヘルプが見 - つかった最初の言語を使う。英語のヘルプは常に優先度が最後になる。英語の - 優先度を上げるために "en" を追加することはできるが、そうしても、その言 - 語に存在し、英語のヘルプに存在しないタグを見つけるだけである。 - 訳注: 上の文よくわからない。 - 例: > - :set helplang=de,it -< こうすると最初にドイツ語を検索し、次にイタリア語、そして最後に英語のヘ - ルプファイルを検索する。 - |CTRL-]| や英語でないヘルプファイル中で ":help!" を使ったときは、この - オプションより先に現在の言語からタグを検索する。|help-translated| を参 - 照。 - - *'hidden'* *'hid'* *'nohidden'* *'nohid'* -'hidden' 'hid' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オフのときは、バッファは放棄 |abandon| されるときに解放される。オンの - ときは、バッファは放棄 |abandon| されるときに隠れ (hidden) 状態になる。 - そのバッファが別のウィンドウでまだ表示されているなら、もちろん隠れ状態 - にはならない。 - バッファリストをわたって動くコマンドは 'hidden' がオフでもバッファを - 隠れ状態にすることがある。バッファの内容が変更されていて、'autowrite' - がオフであるか書き込みが不可能な状態であり、フラグ '!' が使われたよう - なときだ。|windows.txt| も参照。 - 1つのバッファだけを隠れ状態にするにはオプション 'bufhidden' を使う。 - このオプションは、一つ一つのコマンドに対して ":hide {command}" とする - ことでオンにできる |:hide|。 - 警告: 隠れバッファに対する変更は忘れがちである。コマンド ":q!" や - ":qa!" を使う前にはもう一度よく考えること。 - - *'highlight'* *'hl'* -'highlight' 'hl' 文字列 (既定では (単一の文字列として): - "8:SpecialKey,@:NonText,d:Directory, - e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg, - M:ModeMsg,n:LineNr,r:Question, - s:StatusLine,S:StatusLineNC,c:VertSplit - t:Title,v:Visual,w:WarningMsg,W:WildMenu, - f:Folded,F:FoldColumn,A:DiffAdd, - C:DiffChange,D:DiffDelete,T:DiffText, - >:SignColumn,B:SpellBad,P:SpellCap, - R:SpellRare,L:SpellLocal,-:Conceal, - +:Pmenu,=:PmenuSel, - x:PmenuSbar,X:PmenuThumb") - グローバル - {Vi にはない} - このオプションは、様々な対象に対する強調表示モードを設定する。文字の組 - をコンマ区切りのリストとして指定する。1番目の文字は適用される対象を指 - 定し、2番目の文字はその対象に適用するモードを指定する。 - 対象は以下の通りである。 - |hl-SpecialKey| 8 ":map" でリスト表示されるメタキーと特殊キー - |hl-NonText| @ ウィンドウ末尾の '~' と '@' 、および 'showbreak' - によって表示される文字 - |hl-Directory| d CTRL-D によるリスト表示内のディレクトリや、その他 - の特別な項目 - |hl-ErrorMsg| e エラーメッセージ - h (古くて使われておらず、無視される) - |hl-IncSearch| i 'incsearch' の強調表示 - |hl-Search| l 最終検索パターン強調表示 ('hlsearch' を参照) - |hl-MoreMsg| m 「継続」プロンプト |more-prompt| - |hl-ModeMsg| M モード表示 (例えば "-- INSERT --") - |hl-LineNr| n ":number" と ":#" 用の行番号 - |hl-LineNr| n ":number" と ":#" コマンドでの行番号と、'number' - か 'relativenumber' がオンに設定されているときの行 - 番号。 - |hl-Question| r 「続けるには」プロンプト |hit-enter| とyes/no質問 - |hl-StatusLine| s カレントウィンドウのステータス行 |status-line| - |hl-StatusLineNC| S 非カレントウィンドウのステータス行 |status-line| - |hl-Title| t ":set all", ":autocmd" 等の出力のタイトル - |hl-VertSplit| c ウィンドウの垂直分割に使われる区切り - |hl-Visual| v Visualモード - |hl-VisualNOS| V X11 Gui |gui-x11| と |xterm-clipboard| でのみ有効 - な、選択領域をクリップボードに送らないVisualモード - (訳注: "Not Owning the Selection" をこういう意味に - 取りましたが、勘違いかもしれません。どなたかご教授 - ください) - |hl-WarningMsg| w 警告メッセージ - |hl-WildMenu| W 'wildmenu' によって表示されるワイルドカードマッチ - |hl-Folded| f 閉じられた折り畳みを表す行 - |hl-FoldColumn| F 'foldcolumn' - |hl-DiffAdd| A diff モードで追加された行 - |hl-DiffChange| C diff モードで変更された行 - |hl-DiffDelete| D diff モードで削除された行 - |hl-DiffText| T diff モードで挿入されたテキスト - |hl-SignColumn| > |signs| に使われる桁 - |hl-SpellBad| B スペルミスの単語 |spell| - |hl-SpellCap| P 大文字で始まるべきの単語 |spell| - |hl-SpellRare| R 滅多に現れない単語 |spell| - |hl-SpellLocal| L 他の地域の単語 |spell| - |hl-Conceal| - Conceal テキストの代替表示 ('conceallevel' 参照) - |hl-Pmenu| + ポップアップメニューの通常の行 - |hl-PmenuSel| = ポップアップメニューの通常の行 - |hl-PmenuSbar| x ポップアップメニューのスクロールバー - |hl-PmenuThumb| X ポップアップメニューのスクロールバーのつまみ - - 表示モードは以下の通りである。 - r 反転 (termcapの項目 "mr" と "me") - i 斜字体 (termcapの項目 "ZH" と "ZR") - b 太字体 (termcapの項目 "md" と "me") - s 強調 (termcapの項目 "so" と "se") - u 下線 (termcapの項目 "us" と "ue") - c undercurl (termcapの項目 "Cs" と "Ce") - n 強調表示なし - - 強調表示なし - : 強調表示グループを使って設定 - (訳注: 「文字の組」と書きながら、既定値はどれも2文字でないのは、 - この ":" が使われているからである。これだけは例外で、グルー - プ名を使って指定できる) - ユーザに指定されなかった項目については、既定値が使われる。 - 表示モードの効果を変更したいなら、例として |dos-colors| を参照。 - 表示モードに ':' を使うときは、その後に強調表示グループの名前を続けな - ければならない。強調表示グループは、色も含めて強調表示のあらゆるタイプ - を指定することができる。グループの定義方法については |:highlight| を参 - 照。既定値では対象それぞれに異なったグループを使っている。既定の強調表 - 示グループについては |highlight-default| を参照。 - - *'hlsearch'* *'hls'* *'nohlsearch'* *'nohls'* -'hlsearch' 'hls' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+extra_search| 機能付きでコンパイルされたとき - のみ有効} - 前回の検索パターンが存在するとき、それにマッチするテキストを全て強調表 - 示する。強調表示のタイプは、オプション 'highlight' のフラグ 'l' によっ - て設定できる。既定では強調表示グループ "Search" が使われる。 Note マッ - チするテキストのみが強調表示されるので注意。オフセットは適用されない。 - 'incsearch' とコマンド |:match| も参照。 - マッチするテキストが強調表示されるを見飽きたら、|:nohlsearch| で無効に - 切り替えることができる。再び検索コマンドを使えば、強調表示も再び行われ - る。 - 検索する時間の上限は 'redrawtime' で設定できる。 - 検索パターンが行の終わり end-of-line にマッチするときは、Vimはマッチし - たテキスト全体を強調表示しようとする。しかし、検索を開始した場所によっ - て結果は異なる。ウィンドウの1番上の行または閉じられた折り畳みの次の行 - では、表示されない行内のマッチの強調表示は、表示されている行に継続しな - い。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'history'* *'hi'* -'history' 'hi' 数値 (Vimの既定値: 20, Viの既定値: 0) - グローバル - {Vi にはない} - ":" によるコマンドと以前に使った検索パターンの履歴は保存されるわけだが、 - このオプションはそれぞれの履歴に何個の項目が保存されるかを指定する - (|cmdline-editing| を参照)。 - NOTE: このオプションはオプション 'compatible' がオンのときはViの既定値 - に、オフのときはVimの既定値になるので注意すること。 - - *'hkmap'* *'hk'* *'nohkmap'* *'nohk'* -'hkmap' 'hk' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み有効} - オンのときは、キーボードはヘブライ文字セットにマップされる。普通、オプ - ション 'allowrevins' をオンにしておき、insertモードでこのオプションを - コマンド CTRL-_ で切り替えられるようにすることになる |i_CTRL-_|。 - |rileft.txt| を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'hkmapp'* *'hkp'* *'nohkmapp'* *'nohkp'* -'hkmapp' 'hkp' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み有効} - オンのときは、キーボードは音声ヘブライ文字セットにマップされる。またオ - プション 'hkmap' もオンでなければならない。これはユーザがヘブライ語キー - ボードを持っていないときに便利である。 - |rileft.txt| を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'icon'* *'noicon'* -'icon' 切替 (既定ではオフ、タイトルが復元できるならばオン) - グローバル - {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ有 - 効} - オンのときは、ウィンドウのアイコンテキストが 'iconstring' に (値が空で - なければ) 設定される。空ならば現在編集されているファイル名に設定される。 - ファイル名の末尾部分のみが使われる。 - この設定は 'iconstring' によって上書きできる。 - ターミナルがウィンドウアイコンの設定をサポートしているときのみ有効であ - る (現在のところ X11 GUI とターミナルオプション 't_IS' の値が空でない - ターミナルのみ --- これらは既定では Unix xterm と iris-ansi であり、こ - のとき 't_IS' の値は組み込み termcap から取られる)。 - Vimが HAVE_X11 が定義された状態でコンパイルされたなら、可能であれば元 - のアイコンが復元される |X11|。X11でアイコンを変更するには |X11-icon| - を参照。 - - *'iconstring'* -'iconstring' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ有 - 効} - このオプションが空でないなら、ウィンドウのアイコンテキストに設定される。 - これは 'icon' がオンのときのみ使われる。 - ターミナルがウィンドウのアイコンテキストの設定をサポートしているときの - み有効である (現在のところ X11 GUI とターミナルオプション 't_IS' の値 - が空でないターミナルのみ)。 - MS-Windowsでは無効である。 - Vimが HAVE_X11 が定義された状態でコンパイルされたなら、可能であれば元 - のアイコンが復元される |X11|。 - 値に関数 printf 形式の '%' を使った項目が含まれていると、それらは - 'statusline' と同じように展開される。設定例は 'titlestring' を参照。 - {Vi mが |+statusline| 機能付きでコンパイルされたときのみ有効} - - *'ignorecase'* *'ic'* *'noignorecase'* *'noic'* -'ignorecase' 'ic' 切替 (既定ではオフ) - グローバル - 検索パターンにおいて大文字と小文字を区別しない。タグファイル内の検索に - も適用される。 - オプション 'smartcase' も参照。 - パターン内で "\c" や "\C" を使うことで、この設定を上書きできる。 - |/ignorecase| を参照。 - - *'imactivatekey'* *'imak'* -'imactivatekey' 'imak' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+xim| 機能と |+GUI_GTK| 機能付きでコンパイル - されたときのみ有効} *E599* - X-Windowsでのインプットメソッド (IM) を起動するのに使われるキーを指定 - する。これが正しく設定されていれば、VimはIMをオプション 'imcmdline', - 'iminsert' や 'imsearch' によって完全に制御できる。 - このオプションで起動キーを変えることはできない。これはただVimにそのキー - が何であるのか伝えるだけである。 - 書式は以下の通り。 - [MODIFIER_FLAG-]KEY_STRING - - 以下の文字が MODIFIER_FLAG として使える (大文字でも小文字でもよい)。 - S シフトキー - L ロックキー - C コントロールキー - 1 修飾キー1 - 2 修飾キー2 - 3 修飾キー3 - 4 修飾キー4 - 5 修飾キー5 - これらを組み合わせることができる。例えば "S-C-space" や "SC-space" は - みな shift+ctrl+space を表す。 - KEY_STRING については <X11/keysymdef.h> と XStringToKeysym を参照。 - - 例: > - :set imactivatekey=S-space -< "S-space" は shift+space である。これは kinput2 + canna (日本語) およ - び ami (韓国語) の起動キーである。 - - *'imcmdline'* *'imc'* *'noimcmdline'* *'noimc'* -'imcmdline' 'imc' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+xim| 機能または |+multi_byte_ime| 機能または - |global-ime| 機能付きでコンパイルされたときのみ有効} - オンのときは、コマンドラインの編集を始めるときには常にインプットメソッ - ド (IM) がオンになる。ただし検索パターンの入力には適用されない (それに - はオプション 'imsearch' を参照)。 - ユーザの IM が英語の文字を直接入力できるならば (例えば IM が、普段使わ - れないキーからアクセント記号を入力する程度のものならば)、このオプショ - ンをオンにすると便利である。 - - *'imdisable'* *'imd'* *'noimdisable'* *'noimd'* -'imdisable' 'imd' 切替 (既定ではオフ、いくつかのシステム(SGI)ではオン) - グローバル - {Vi にはない} - {Vi mが |+xim| 機能または |+multi_byte_ime| 機能または - |global-ime| 機能付きでコンパイルされたときのみ有効} - オンのときは、インプットメソッド (IM) が全く使われなくなる。これは IM - がうまく働かないとき、それを無効にしてしまうのに便利である。 - 現在のところ、SGI/IRIX のマシンではオンになっているのが既定である。こ - れは将来変更されるかもしれない。 - - *'iminsert'* *'imi'* -'iminsert' 'imi' 数値 (既定では 0、インプットメソッドがサポートされてい - れば 2) - バッファについてローカル - {Vi にはない} -訳注: iminsert=2 の場合、インサートモードを抜けると IM がオフにされます。 -訳注: 再度インサートモードに入ると、前回抜けたときの IM 状態が復元 -訳注: されます。この機能をオフにするには iminsert=0 にしてください。 - - :lmap かインプットメソッド (IM) がインサートモードで使われるかどうかを - 指定する。指定できる値は以下の通り。 - 0 :lmap はオフ、IM もオフ - 1 :lmap はオン、IM はオフ - 2 :lmap はオフ、IM はオン - 値 2 は、Vimが |+multi_byte_ime| 機能または |+xim| 機能または - |global-ime| 機能付きでコンパイルされたときのみ有効である。 - コマンド <Esc> でInsertモードを終える度に値を 0 に戻すには、次のように - すればよい。 > - :inoremap <ESC> <ESC>:set iminsert=0<CR> -< これはInsertモードを終えるとき :lmap と IM を自動的にオフに切り替える。 - Note Insertモードでコマンド CTRL-^ を使うと、このオプションの値が変わ - るので注意 |i_CTRL-^|。 - オプション 'keymap' に正しいキーマップ名が設定されると、このオプション - は 1 になる。 - これはコマンド "r", "f" 等の引数にも適用される。 - AthenaとMotifでは、値を 0 に設定すると正しく働かないようなXIMがある。 - そのときは XIM を無効にするために 'imdisable' を使うこと。 - - *'imsearch'* *'ims'* -'imsearch' 'ims' 数値 (既定では 0、インプットメソッドがサポートされてい - れば 2) - バッファについてローカル - {Vi にはない} - :lmap かインプットメソッド (IM) が、検索パターンを入力するときに使われ - るかどうかを指定する。指定できる値は以下の通り。 - -1 'iminsert' の値が使われ、それが検索パターンの入力にも - 適用されているかのように動作する - 0 :lmap はオフ、IM もオフ - 1 :lmap がオン、IM はオフ - 2 :lmap はオフ、IM がオン - Note Command-lineモードでコマンド CTRL-^ を使うと、このオプションが変 - わることに注意 |c_CTRL-^|。 - 値が -1 でないなら、'keymap' に正しいキーマップ名が設定されると、この - オプションは 1 になる。 - AthenaとMotifでは、値を 0 に設定すると正しく働かないようなXIMがある。 - そのときは XIM を無効にするために 'imdisable' を使うこと。 - - *'include'* *'inc'* -'include' 'inc' 文字列 (既定では "^\s*#\s*include") - グローバル/バッファについてローカル |global-local| - {Vi にはない} - {Vi mが |+find_in_path| 機能付きでコンパイルされたとき - のみ有効} - (訳注: プログラミング言語の) インクルード命令を探すのに使われるパター - ンを設定する。値はコマンド "/" と同様の検索パターンである (|pattern| - を参照)。既定値はC言語プログラム用に設定されている。このオプションはコ - マンド "[i", "]I", "[d" 等に使われる。 - 通常、マッチしたパターンの後に続くファイル名を認識するためにオプション - 'isfname' が使われる。しかしパターン中に "\zs" が入っている場合、 - "\zs" にマッチしたテキストから最後まで、または "\ze" が入っている場合 - はそこまでがファイル名として認識される。スペースなど、'isfname' に入っ - ていない文字を含めるにはこれを使う。そして 'includeexpr' を使ってマッ - チしたテキストを処理することができる。 - スペースとバックスラッシュを含める方法については|option-backslash| を - 参照。 - - *'includeexpr'* *'inex'* -'includeexpr' 'inex' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+find_in_path| 機能と |+eval| 機能付きでコン - パイルされたときのみ有効} - オプション 'include' が判別した文字列を、ファイル名に変換するために使 - われる expression を指定する。以下のようにして、Java言語で "." を "/" - に変換するようなときに便利である。 > - :set includeexpr=substitute(v:fname,'\\.','/','g') -< 変数 "v:fname" は、判別されたファイル名に設定される。 - このオプションの内容は |sandbox| 内でも評価される。 - コマンド |gf| でも、ファイルの実際の名前が見つからないときは、これが使 - われる。プログラミング言語の 'include' 文の後で "gf" を使えるようにな - る。 - また |<cfile>| にも使われる。 - - この式はサンドボックス |sandbox| の中でも評価することができる。 - |sandbox-option| を参照。 - - 'includeexpr' を評価している間に、テキストを変更したり他のウィンドウに - 移ることは許されない。|textlock| - - *'incsearch'* *'is'* *'noincsearch'* *'nois'* -'incsearch' 'is' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+extra_search| 機能付きでコンパイルされたとき - のみ有効} - 検索コマンドを打ち込んでいる間にも、打ち込んだところまでのパターンがマッ - チするテキストを、すぐに表示する。マッチした文字列は強調表示される。パ - ターンが不適切であったり見つからなければ、何も表示されない。画面は次々 - 更新されることになるので、このオプションは表示の速いターミナルでのみ有 - 用である。 - Note マッチが表示されても、カーソルは実際にはマッチした場所に移動して - いないので注意。カーソルを移動させるには、やはり <Enter> を打ち込んで - 検索コマンドを完了させる必要がある。 - |+reltime| 機能つきでコンパイルされているときは約0.5秒だけ検索する。複 - 雑なパターンであったり、大量のテキストはマッチしない場合がある。これは - 文字をタイプしている途中で Vim が応答しなくなってしまうのを避けるため - である。 - 強調表示は、オプション'highlight' のフラグ 'i' によって設定できる。 - 'hlsearch' も参照。 - CTRL-L を押すと、現在マッチしているテキストの後からコマンドラインへ1文 - 字を追加することができる。その際、'ignorecase' と 'smartcase' が設定さ - れていてコマンドラインに大文字が含まれていなければ、追加された文字は小 - 文字に変換される。 - CTRL-R CTRL-W を押すと、現在マッチしているテキストの末尾から単語を追加 - することができる。そのとき、既にタイプされている文字は除かれる。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'indentexpr'* *'inde'* -'indentexpr' 'inde' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+cindent| 機能と |+eval| 機能付きでコンパイル - されたときのみ有効} - ある行の適切なインデントを得るために評価される expression。これは新し - い行が作られるとき、オペレータ |=| が使われたとき、Insertモードでオプ - ション 'indentkeys' で指定したキーを打ち込んだときに使われる。 - 値が空でないとき、この設定が 'cindent' と 'smartindent' によるインデン - トの設定を上書きする。'lisp' がオンのとき、このオプションは Lisp のイ - ンデントアルゴリズムによって上書きされる。 - 'paste' がオンのとき、このオプションはインデントに使われない。 - 指定された expression が評価されるとき、変数 |v:lnum| はインデント計算 - の対象となっている行の行番号に設定される。また、この式を評価するとき、 - カーソルもこの行に置かれる(移動してしまうかもしれないが)。 - 指定された expression は、インデントすべき空白の数を返さなければならな - い。そのままのインデントを保たせるには "-1" を返させればよい (つまり、 - こうするとインデントには 'autoindent' が使われる)。 - インデント深さを計算するのに便利な関数は、|indent()|, |cindent()| と - |lispindent()| である。 - この expression の評価には副作用があってはならない!つまり、テキストを - 変更したり、 別のウィンドウに移動してはいけない。評価後にはカーソル位 - 置は常に復元されるので、カーソルは移動してもよい。 - 普通、このオプションは関数を呼び出すように設定される: > - :set indentexpr=GetMyIndent() -< 'debug' が "msg" を含まないない限り、エラーメッセージの表示は抑制され - る。 - |indent-expression| を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - この式はサンドボックス |sandbox| の中で評価することができる。 - |sandbox-option| を参照。 - - 'includeexpr' を評価している間に、テキストを変更したり他のウィンドウに - 移ることは許されない。|textlock| - - *'indentkeys'* *'indk'* -'indentkeys' 'indk' 文字列 (既定では "0{,0},:,0#,!^F,o,O,e") - バッファについてローカル - {Vi にはない} - {Vi mが |+cindent| 機能付きでコンパイルされたときのみ - 有効} - Insertモードで打ち込まれたときに、現在行の再インデントを引き起こすキー - のリスト。これはオプション 'indentexpr' が空でないときのみ起きる。 - 書式は 'cinkeys' によって異なってくる。|indentkeys-format| を参照。 - |C-indenting| と |indent-expression| を参照。 - - *'infercase'* *'inf'* *'noinfercase'* *'noinf'* -'infercase' 'inf' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - Insertモードで単語補完 |ins-completion| をしているとき、このオプション - と 'ignorecase' がオンならば、マッチした単語の大文字/小文字の区別は打 - ち込んだテキストに応じて修正される。打ち込んだテキストでは小文字だがマッ - チした単語では大文字であるような所があれば、補完される部分もみな小文字 - になる。打ち込んだテキストには小文字が1個もなく、打ち込んだテキストで - は大文字だがマッチした単語では小文字であるような所があり、かつその前に - 文字があるならば、補完される部分もみな大文字になる。 - 'noinfercase' にすると、マッチした単語がそのまま挿入される。 - - *'insertmode'* *'im'* *'noinsertmode'* *'noim'* -'insertmode' 'im' 切替 (既定ではオフ) - グローバル - {Vi にはない} - VimがInsertモードを中心として動作するようになる。Vimをモードを持たない - エディタとして使いたいときに便利である。|evim| で使われている。 - 以下のInsertモードのコマンドが便利だろう。 - - カーソル移動に矢印キーを使う - - 1個のNormalモードコマンドを実行するためにはコマンド CTRL-O を使う - |i_CTRL-O|。コマンドが別のキー列にマッピングされていたときは、オプショ - ン 'insertmode' がオフであるときのように実行される。つまりマッピング - の内容が終了するまでNormalモードが続く。 - - 数個のNormalモードコマンドを使うためには先に CTRL-L を使い、その後 - Insertモードに戻るために <Esc> を使う。Note CTRL-L を使うと、 - 'insertmode' をオフにして <Esc> を押したときと同様にカーソルが左へ移 - 動する。|i_CTRL-L| - - 'insertmode' がオンになると、以下の項目に変化がある。 - - ファイルの編集を始めたとき、VimはInsertモードになっている。 - - Insertモードで <Esc> を入力しても動作はなく (no-op)、ビープ音が鳴る。 - - Normalモードで <Esc> を入力するとInsertモードに移る。 - - Insertモードでの CTRL-L の入力はコマンドであり、挿入されない。 - - Insertモードで CTRL-Z を入力するとサスペンドする。|CTRL-Z|を参照。 - *i_CTRL-Z* - しかしマッピング内で <Esc> が使われたときは、'insertmode' がオフのとき - のように動作する。これは 'insertmode' がオンでもオフでも、同じマッピン - グが使えるようにするためである。 - |:normal| でNormalモードコマンドを実行するときは、'insertmode' は使わ - れない。 - - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'isfname'* *'isf'* -'isfname' 'isf' 文字列 (MS-DOS, Win32とOS/2での既定値は: - "@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,=" - AMIGAでは: "@,48-57,/,.,-,_,+,,,$,:" - VMSでは: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~" - OS/390では: "@,240-249,/,.,-,_,+,,,#,$,%,~,=" - それ以外では: "@,48-57,/,.,-,_,+,,,#,$,%,~,=") - グローバル - {Vi にはない} - ファイル名やパス名に使われる文字を指定する。ファイル名はコマンド "gf", - "[i" 等やタグファイル内で使われる。またパターン |pattern| 内の "\f" に - も使われる。 - 文字コードが 256 以上のマルチバイト文字は常に含まることになっているの - で、文字コードが 255 以下の文字のみをこのオプションで指定する。 - UTF-8では、文字コードが 0xa0 から 0xff の文字は、同様に常に含まれる。 - このオプションに空白文字を加える場合はよく考えること! ファイル名にスペー - スが含まれることはあるが、スペースを含めると、ファイル名補完の際に、ど - こからどこまでがファイル名であるか判定できなくなってしまうだろう。おそ - らくスペースは含めない方がよいだろう。 - - Note '\' をパスの区切りに使うシステムでは、Vimは '\' がユーザの想定通 - りに働くよう最善を尽くす。これには少し巧妙なことをしている。なぜならVi - は元々、'\' を特殊文字をエスケープするために使っていたからだ。そういっ - たシステムでは、普通のファイル名の文字の前にある '\' を取り除かない。 - しかしUnix系列のシステムでは取り除く。既定では '&' と '^' は含まれない。 - それはこれらの文字が cmd.exe (訳注: Windows NTのシェル) にとって特別な - 意味を持つからである。 - - このオプションの値の書式は、コンマ区切りの指定部のリストである。それぞ - れの指定部は単一の文字または範囲指定からなる。範囲指定は2個の文字コー - ドが '-' で区切られたものである。文字コードは 0 から 255 の10進整数だ - が、代わりにASCIIキャラクタ自身を使ってもよい (ただし数字には使えない)。 - 例: - "_,-,128-140,#-43" ('_' と、'-' と、コードが 128 から 140 - までの文字と、'#' からコードが 43 ま - での文字を含む) - 指定部が '^' で始まるとき、それに続く文字コードまたは範囲は指定から除 - 外される。オプションは左から右に解釈されるので、指定したある範囲に除外 - したい文字があったら、それをその範囲の後に除外指定すること。文字 '^' - 自体を値に含みたいときは、値または指定部の最後に指定すること。例: - "^a-z,#,^" ('a' から 'z' までの文字を除き、'#' と '^' を - 含む) - 文字として '@' を指定すると、関数 isalpha() で TRUE が返るような文字全 - てが含まれる。普通、それは a から z と A から Z の文字と、それらにアク - セントのついたものである。文字 '@' 自身を値に含みたいときは、"@-@" と - すること。例: - "@,^a-z" アルファベットの仲間全て、ただしアルファベット - の小文字は除く - "a-z,A-Z,@-@" アルファベット全てと、文字 '@' - コンマを含めるには、文字コードが来るはずのところにコンマをおけばよい。 - 例: - "48-57,,,_" 数字と、コンマと、下線 (アンダースコア) - コンマを除外するには、前に '^' をおく。例: - " -~,^,,9" 空白から '~' までの全ての文字、ただしコンマと - <Tab> を除く - 値に空白や '\' を含める方法については、|option-backslash| を参照。 - - *'isident'* *'isi'* -'isident' 'isi' 文字列 (MS-DOS, Win32とOS/2での既定値は: - "@,48-57,_,128-167,224-235" - それ以外では: "@,48-57,_,192-255") - グローバル - {Vi にはない} - Identifier に使われる文字を指定する。Identifier は、環境変数の認識とオ - プション 'define' のマッチしたところの後に使われる。またパターン - |pattern| 内の "\i" にも使われる。このオプションの書式の説明は、 - 'isfname' を参考にすること。 - 注意: このオプションを変更すると、環境変数の展開に失敗するかもしれない。 - 例えば値に '/' が含まれているときに "$HOME/.viminfo" を展開しようとす - るとき等である。おそらく代わりに 'iskeyword' を変更するべきだろう。 - - *'iskeyword'* *'isk'* -'iskeyword' 'isk' 文字列 (MS-DOSとWin32でのVimの既定値: - "@,48-57,_,128-167,224-235" - それ以外のシステムでのVimの既定値: - "@,48-57,_,192-255" - Viの既定値: "@,48-57,_") - バッファについてローカル - {Vi にはない} - Keyword は、"w", "*", "[i" 等の多くのコマンドで検索と認識に使われる。 - またパターン |pattern| 内の "\k" にも使われる。このオプションの値の書 - 式の説明については、オプション 'isfname' を参考にすること。C言語プログ - ラムには "a-z,A-Z,48-57,_,.,-,>" が使えるだろう。 - ヘルプファイルでは、このオプションは '*', '"', '|' と空白の仲間を除い - た全ての printable な文字 (訳注: 文書先頭を参照) に設定される (コマン - ド上で CTRL-] を入力したときにそのコマンドについてのヘルプにジャンプで - きるようにするため)。 - 'lisp' がオンのときは、文字 '-' は常に含まれる。 - NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 - 値に、オフのときはVimの既定値になるので注意すること。 - - *'isprint'* *'isp'* -'isprint' 'isp' 文字列 (MS-DOS, Win32, OS/2とMacintoshでの既定値: - "@,~-255"; それ以外では: "@,161-255") - グローバル - {Vi にはない} - このオプションで指定された文字は、画面に直接表示される。またパターン - |pattern| 内の "\p" にも使われる。空白 (ASCIIコード 32) から '~' - (ASCIIコード 126) までの文字は、'isprint' に指定されていなくても、また - は除外指定されていても、常に直接表示される。このオプションの書式の説明 - は、'isfname' を参考にすること。 - - unprintable な文字 (訳注: 文書先頭を参照) は、2文字で表示される。 - 0 - 31 "^@" - "^_" - 32 - 126 常に1文字で表示される - 127 "^?" - 128 - 159 "~@" - "~_" - 160 - 254 "| " - "|~" - 255 "~?" - 'encoding' がUnicodeの一種だったときは、文字コードが 128 から 255 まで - の不正な文字は、<xx> という形式で16進表示される。 - 'display' に "uhex" が含まれているときは、全ての unprintable な文字が - <xx> の形式で表示される。 - unprintable な文字には、強調表示グループ SpecialKey が使われる - |hl-NonText|。 - - 文字コードが 256 以上のマルチバイト文字は常に含まれることになっている - ので、文字コードが 255 以下の文字のみをこのオプションに指定する。文字 - が本来は printable だが現在のフォントでは表示できないときは、代替文字 - が表示される。 - Unprintable またはゼロ幅のUnicode文字は <xxxx> という形式で表示される。 - そういった文字を指定するオプションはない。 - - *'joinspaces'* *'js'* *'nojoinspaces'* *'nojs'* -'joinspaces' 'js' 切替 (既定ではオン) - グローバル - {Vi にはない} - 行連結コマンドにおいて、 '.', '?' や '!' の後に空白を 2 個挿入する。オ - プション 'cpoptions' にフラグ 'j' が含まれるときは、'.' の後にのみ空白 - を2個挿入する。 - それ以外では空白は1個だけ挿入される。 - NOTE: このオプションは、オプション 'compatible' がオンのときにはオンに - なるので注意。 - - *'key'* -'key' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+cryptv| 機能付きでコンパイルされたときのみ有 - 効} - カレントバッファを暗号化したり復号したりするのに使われるキー。 - |encryption| と 'cryptmethod' を参照。 - 注意: このキーの値を手動で (訳注: コマンド ":set" を使って、ということ) - 設定しないこと。誰かが入力された文字を盗み見るかもしれない。代わりにコ - マンド |:X| を使うこと。しかし次のようにして、'key' を空にするのはよい。 > - :set key= -< このオプションの値は、":set key" や "echo &key" 等で得ることはできない。 - これは、値を知るべきでない人に知られないようにするためである。このこと - はまた、設定してしまうとユーザ自身も値を知ることができないということで - ある。タイプミスをしないよう注意! - スクリプトで "&key" を使うことで暗号化が有効になっているか確認でき - る。'key' がセットされている場合は "*****" (5個のスター) が返る。 - - *'keymap'* *'kmp'* *E544* -'keymap' 'kmp' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+keymap| 機能付きでコンパイルされたときのみ有 - 効} - キーマッピングの名前を指定する。|mbyte-keymap| を参照。 - このオプションを適正なキーマップ名に設定すると、キーマッピングが有効に - なるようにオプション 'iminsert' が 1 になるという影響がある。また - 'imsearch' も、元が -1 でない限り 1 になる。 - 通常のファイル名文字だけが使用できる。"/\*?[|<>" は不正である。 - - *'keymodel'* *'km'* -'keymodel' 'km' 文字列 (既定では "") - グローバル - {Vi にはない} - キーで可能なことを指定するためのキーワードの、コンマ区切りのリスト。指 - 定可能なキーワードは以下の通りである。 - startsel シフトキーと特別なキーを同時に押して選択を開始する - (SelectモードとVisualモードのどちらでも、オプション - 'selectmode' で指定された "キー" によって)。 - stopsel シフトキーを押さないままの特別なキーで選択を止める。 - ここでいう「特別なキー」とはカーソルキー、<End>, <Home>, <PageUp> や - <PageDown> である。 - 'keymodel' は、コマンド |:behave| によって設定される。 - - *'keywordprg'* *'kp'* -'keywordprg' 'kp' 文字列 (既定では "man" または "man -s", DOSでは: - ":help", OS/2では: "view /", VMSでは: "help") - グローバルまたはバッファについてローカル|global-local| - {Vi にはない} - コマンド |K| に使われるプログラム。環境変数は展開される |:set_env|。 - Vim の内部ヘルプを開くコマンドは ":help" である(以前はこのオプションの - グローバル値を空にすると Vim の内部ヘルプが使われたが、今は推奨されて - いない)。 - "man" が指定されたときは、"K" に指定されたカウントは自動的に章番号に変 - 換される。"man -s" でも同様で、この場合カウントがないときは "-s" は取 - り除かれる。 - 値に空白や '\' を含める方法については、|option-backslash| を参照。 - 例: > - :set keywordprg=man\ -s -< 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'langmap'* *'lmap'* *E357* *E358* -'langmap' 'lmap' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+langmap| 機能付きでコンパイルされたときのみ - 有効} - このオプションでは、ユーザのキーボードを特別な言語モードに切り替えられ - るようにする。 Insertモードで文字を入力しているときは、文字は直接入力 - される。しかしCommandモードではオプション 'langmap' により、入力された - 特別な文字をキー本来の文字に変換する。つまりNormalモードコマンドを実行 - するためにキーボードモードを変更しなくともよいということである。 - このオプションは 'keymap' と正反対のものである。'keymap' はInsertモー - ドでマッピングを行う。 - - 例 (ギリシア語に対して、UTF-8で): *greek* > - :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz -< 例 (コマンドの z と y の意味の交換): > - :set langmap=zy,yz,ZY,YZ -< - 'langmap' は、コンマ区切りの指定部のリストである。 - それぞれの指定部は次の2種類のうちどちらかの形式に従う。 - 1. 2文字の組のリスト。変換「元」の文字の直後に変換「先」の文字を置い - て組を作る。例: "aA", "aAbBcC" - 2. 変換「元」の文字のリスト、セミコロン、変換「先」の文字のリスト。 - 例: "abc;ABC" - 例: "aA,fgh;FGH,cCdDeE" - 特別な文字は '\' を前に置く必要がある。そのような文字は ";", ',' と - '\' 自身である。 - - Langmap を使えば言語間の切り替えなしにVimの機能を有効化することができ - る。以下のような場合では、ユーザの言語の文字でも、Vimは (langmap のマッ - ピングに従って) 通常の英語の文字として理解できる。 - o Normal/Visualモード (コマンド、バッファ/レジスタ名、ユーザのマッピ - ング) - o Insert/Replaceモード: CTRL-R 入力後のレジスタ名 - o Insert/Replaceモード: マッピング - Command-lineモードで入力された文字には、このオプションは効力を「持たな - い」。Note このオプションは、異なった言語/エンコーディング用のマッピ - ングを切り替えられるときにはいつでも設定を変更できることに注意。毎回マッ - ピング設定を打ち込まずに済むようにするには、マッピングを使うこと! - - *'langmenu'* *'lm'* -'langmenu' 'lm' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+menu| 機能と |+multi_lang| 機能付きでコンパ - イルされたときのみ有効} - メニュー翻訳に使われる言語。つまり 'runtimepath' 内のディレクトリ - "lang" からどのファイルを読み込むのか指定する。指定方法は次の通り (空 - 白はなし)。 > - "lang/menu_" . &langmenu . ".vim" -< 例えば、環境変数 $LANG が何に設定されていても、常にオランダ語メニュー - を使うには、次のようにする。 > - :set langmenu=nl_NL.ISO_8859-1 -< 'langmenu' が空のときは、変数 |v:lang| が使われる。 - 通常のファイル名文字だけが使用できる。"/\*?[|<>" は不正である。 - ユーザの環境変数 $LANG は英語以外の言語だが、必ず英語のメニューを使い - たいならば、次のようにする。 > - :set langmenu=none -< このオプションは、メニューの読み込み、ファイルタイプ判定の起動、構文強 - 調表示の起動のいずれよりも先に設定しなければならない。メニューが定義さ - れてしまうと、このオプションを設定しても何の効果もない。しかしこうする - ことはできる。 > - :source $VIMRUNTIME/delmenu.vim - :set langmenu=de_DE.ISO_8859-1 - :source $VIMRUNTIME/menu.vim -< 注意: こうすると、ユーザ自身の定義したメニューも含む、全てのメニューが - いったん削除される! - - *'laststatus'* *'ls'* -'laststatus' 'ls' 数値 (既定では 1) - グローバル - {Vi にはない} - 最下ウィンドウにいつステータス行が表示されるかを設定する。 - 0: 全く表示しない - 1: ウィンドウの数が2以上のときのみ表示 - 2: 常に表示 - ウィンドウをいくつか表示しているときには、ステータス行があると見栄えが - よくなる。しかし画面上の行をさらに必要とする。|status-line| - - *'lazyredraw'* *'lz'* *'nolazyredraw'* *'nolz'* -'lazyredraw' 'lz' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オンのときは、マクロやレジスタの内容およびその他のキーボードから打ち込 - まれないコマンドを実行する間、画面は再描画されなくなる。また、ウィンド - ウタイトルの更新も後回しになる。画面の再描画を強制的に行うには、コマン - ド |:redraw| を使うこと。 - - *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* -'linebreak' 'lbr' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+linebreak| 機能付きでコンパイルされたときの - み有効} - オンのときは、画面に収まりきる最後の文字ではなく、オプション 'breakat' - に指定された文字のところで、長い行を折り返す。'wrapmargin' や - 'textwidth' と違い、これはファイルに実際の <EOL> を挿入しない。このオ - プションが影響するのはファイルの表示方法であり、内容ではない。 - 'showbreak' に設定された文字が折り返された行の先頭に置かれる。このオプ - ションは、'wrap' がオフであるか、'list' がオンのときには使われない。 - Note 大抵、<EOL> の後の <Tab> は正しい数の空白として表示されないので注 - 意。 - - *'lines'* *E593* -'lines' 数値 (既定では 24 またはターミナルの高さ) - グローバル - 画面上の行数。普通このオプションはターミナルの初期化の時点で設定され、 - 手動で設定する必要はない。|posix-screen-size| も参照。 - VimがGUI環境内やサイズ変更可能なウィンドウ内で実行されているときは、こ - のオプションを変更するとウィンドウサイズも変更される。このサイズ設定を - GUI でだけ使用したいなら、このコマンドを |gvimrc| ファイルに書くこと。 - 行数の最大値は、画面に収まる行数に制限される。可能な限りウィンドウの高 - さを大きくするには次のコマンドを使う: > - :set lines=999 -< 最小値は2、最大値は1000。 - 行数が期待したのより少なかったら、オプション 'guiheadroom' を確認する - こと。 - あなたがこのオプションを変更したのに、Vimがディスプレイの行数の物理的 - な値を変更できなかったら、ディスプレイ表示がめちゃめちゃになるおそれが - ある。 - (訳注: オプション 'columns' も参照) - - *'linespace'* *'lsp'* -'linespace' 'lsp' 数値 (既定では 0, Win32のGUI版では 1) - グローバル - {Vi にはない} - {Vi mのGUI版でのみ有効} - 行間の幅のピクセル数。フォントが文字セルの高さを一杯に使っていて、行同 - 士が接触してしまうときに便利である。1 以上のときには下線を引く余裕がで - きる。 - フォントによっては行間が広すぎることがある。その場合は 'linespace'を負 - の値にすると調整することができる。しかしそうすると表示に問題が出る場合 - がある。 - *'lisp'* *'nolisp'* -'lisp' 切替 (既定ではオフ) - バッファについてローカル - {Vi mが |+lispindent| 機能付きでコンパイルされたときの - み有効} - Lispモード: Insertモードで <Enter> が入力されると、次の行のインデント - を Lisp の標準 (というかまあ、その一種) にする。また "cc" や "S" でも - 同様である。これが機能するにはオプション 'autoindent' もオンでなければ - ならない。'cpoptions' のフラグ 'p' はインデントの方法 (Vi互換か、より - 良い方法か) を変更する。'lispwords' も参照。 - キーワードを構成する文字に '-' も含まれるようになる。'equalprg' が空の - ときには、外部プログラムを呼び出さず、Lisp用のインデント用アルゴリズム - を使うように、オペレータ "=" を再定義する。 - このオプションは、'paste' がオンのときには使われない。 - {Vi では微妙に動作が違う} - - *'lispwords'* *'lw'* -'lispwords' 'lw' 文字列 (既定値はとても長い) - グローバル - {Vi にはない} - {Vi mが |+lispindent| 機能付きでコンパイルされたときの - み有効} - Lisp用のインデント方法を設定するキーワードの、コンマ区切りのリスト。 - |'lisp'| - - *'list'* *'nolist'* -'list' 切替 (既定ではオフ) - ウィンドウについてローカル - listモード: タブ文字を CTRL-I で表示し、行末に $ を表示する。タブ文字 - と空白文字との差異や、行末に続く空白の差異を見るのに便利である。 - オプション 'listchars' でより詳しく表示方法を設定できる。 - - カーソルはタブが占める桁の最初の位置に表示される。nolist の場合はノー - マルモードでカーソルをタブの上に移動させると、タブが占める桁の最後の位 - 置にカーソルが表示されるが、それと異なる。タブをスペースで表示しつつ、 - カーソル位置をそのように変えたいなら、次のようにする: > - - :set list lcs=tab:\ \ - (訳注: 最後、バックスラッシュの後にスペースがあることに注意) -< - Note オプション 'cpoptions' がフラグ 'L' を含むならば、このオプション - は整形コマンドにも影響することに注意 ('textwidth' や 'wrapmargin' と共 - に設定されたとき)。タブの表示方法の変更については、'listchars' を参照。 - - *'listchars'* *'lcs'* -'listchars' 'lcs' 文字列 (既定では "eol:$") - グローバル - {Vi にはない} - 'list' モードと |:list| コマンドでの表示に使われる文字を設定する。値は - 指定文字列のコンマ区切りのリストである。 - eol:文字 行末の表示に使われる文字。指定されないと、行末には何も - 表示されない。 - tab:2文字 タブ文字の表示に使われる文字。1文字目は1回だけ使われる。 - 2文字目はタブが通常占めるだけの空白を埋めるまで繰り返 - し表示される。 - "tab:>-" とすると、タブが4文字の設定では ">---" となる。 - 指定されないと、タブは ^I と表示される。 - trail:文字 行末の空白の表示に使われる文字。指定されないと、行末の - 空白は何も見えない。 - extends:文字 'wrap' がオフで、行が画面の右端よりも伸びているときに、 - 最終列に表示される文字。 - precedes:文字 'wrap' がオフで、最前列で表示されている最初 - の文字より前にテキストが存在するとき (訳注: 上の行の末 - 尾が画面の右端より伸びているとき) に、最前列に表 - 示される文字。 - conceal:文字 'conceallevel' が 1 のときに Conceal されたテキストの - 代わりに表示される文字。 - nbsp:文字 non-breakable な空白(文字 0xA0, 160)を示す文字。 - 指定されない場合は空白のまま。 - (訳注: 0xA0はLatin1でnon-breakableな空白を表す) - - 文字 ':' と ',' は使えない。'encoding' が "utf-8" のときはUTF-8の文字 - が使える。そうでないときはprintableな文字 (訳注: 文書先頭を参照) だけ - が使える。全ての文字は幅が1でなければならない。 - 例: > - :set lcs=tab:>-,trail:- - :set lcs=tab:>-,eol:<,nbsp:% - :set lcs=extends:>,precedes:< -< "eol", "extends", "precedes" には強調表示グループ "NonText" が、 - "nbsp", "tab" と "trail" には "SpecialKey" が適用される。 - |hl-NonText| |hl-SpecialKey| - - *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'* -'loadplugins' 'lpl' 切替 (既定ではオン) - グローバル - {Vi にはない} - オンのときは、Vimが立ち上がるときにプラグイン・スクリプトが読み込まれ - る |load-plugins|。 - このオプションをユーザのファイル |vimrc| 内でオフにすることで、プラグ - インの読み込みを無効化できる。 - Note コマンドライン引数 "-u NONE" または "--noplugin" によってこのオプ - ションをオフにできることに注意 |-u| |--noplugin|。 - - *'macatsui'* *'nomacatsui'* -'macatsui' 切替 (既定ではオン) - グローバル - {Mac GUI 版でのみ利用可能} - これは描画が正しく行われないときのための回避策である。マルチバイト機能 - 付きでコンパイルされ、このオプションがオンになっているとATSUI テキスト - 描画が使われる。オフのときは ATSUI テキスト描画は使われない。描画に問 - 題が出るならこのオプションをオフにすること。将来のバージョンではこの問 - 題は解決し、このオプションは非推奨になるかもしれない。そのため、このオ - プションをオフにするには次のような方法を使うこと: > - if exists('&macatsui') - set nomacatsui - endif -< 描画の問題があるかをチェックするもう1つのオプションは、'termencoding' - である。 - *'magic'* *'nomagic'* -'magic' 切替 (既定ではオン) - グローバル - 検索パターン内で使用可能な特別な文字を変更する。|pattern| を参照。 - NOTE: パターンの使用に関わる移植性の問題を避けるため、常にこのオプショ - ンを既定値のオンにしておくこと。古いViのスクリプトを使うときのみオフに - 切り替えること。それ以外では、いつでも 'magic' がオンのときに動作する - ようなパターンを書くこと。検索パターンに "\M" を含めると magic になる。 - |/\M| - - *'makeef'* *'mef'* -'makeef' 'mef' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ - 有効} - コマンド |:make| (|:make_makeprg| を参照) と |:grep| に使われるエラー - ファイルの名前。 - 値が空のときは、内部で生成された一時ファイルが使われる。 - "##" が含まれているときは、その部分はファイル名の一意性を保つための数 - 字に置き換えられる。こうすれば ":make" で既存のファイルを上書きしてし - まうことがなくなる。 - ":cf" には使われ「ない」。それについてはオプション 'errorfile' を参照。 - 環境変数は展開される |:set_env|。 - 値に空白や '\' を含める方法については、|option-backslash| を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'makeprg'* *'mp'* -'makeprg' 'mp' 文字列 (既定では "make", VMSでは "MMS") - グローバル/バッファについてローカル |global-local| - {Vi にはない} - コマンド ":make" で使われるプログラム。|:make_makeprg| を参照。値には - 文字 '%' と '#' を使える。これらはそれぞれ現在のファイル名と代替ファイ - ル名に展開される。|:_%| |:_#| - 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については、 - |option-backslash| を参照。Note 文字 '|' は2回エスケープすることに注意: - 1回目はコマンド ":set" に対して、 2回目はコマンドの解釈に対してである。 - ユーザのフィルタが "マイフィルタ" であるときは、次のようにする。 > - :set makeprg=gmake\ \\\|\ マイフィルタ -< 引数が挿入される場所を指定するには、"$*" を (複数回でも) 使える。例: > - :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} -< 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'matchpairs'* *'mps'* -'matchpairs' 'mps' 文字列 (既定では "(:),{:},[:]") - バッファについてローカル - {Vi にはない} - 括弧などの組を構成する文字。コマンド |%| で片方からもう片方にジャンプ - する。現在のところ、互いに異なる1バイトの文字の組のみが指定可能である。 - 文字はコロンで区切らなければならない。組はコンマで区切って指定する。値 - に'<' と '>' を設定する例 (HTML用): > - :set mps+=<:> - -< さらに興味深い例は、代入文の '=' と ';' の間でジャンプするもので、Cや - Java等の言語で便利である。 > - :au FileType c,cpp,java set mps+==:; - -< コマンド "%" のさらに発展的な使用法については、ディレクトリ - $VIMRUNTIME/macros 内のプラグイン matchit.vim を参照。 - |add-local-help| - - *'matchtime'* *'mat'* -'matchtime' 'mat' 数値 (既定では 5) - グローバル - {Vi にはない}{Nvi で使われる} - オプション 'showmatch' がオンのとき、マッチしている括弧を表示するため - の時間を0.1秒単位で指定する。Note このオプションでは、他の時間関係のオ - プションと違い、単位がミリ秒でないので注意。これは Nvi との互換性を保 - つためである。 - - *'maxcombine'* *'mco'* -'maxcombine' 'mco' 数値 (既定では 2) - グローバル - {Vi にはない} - {Vi m が |+multi_byte| 機能付きでコンパイルされたとき - のみ利用可能} - 表示の際にサポートされている文字の組み合わせ数の最大値。 - 'encoding' が "utf-8" のときだけ適用される。 - ほとんどの言語に対しては既定値で十分である。ヘブライ語は4以上が必要で - ある。最大値は6。 - このオプションの値が2のときでも、それ以上の組み合わせのテキストを編集 - することは可能である。ただしそれを表示することはできない。|g8| や|ga| - を使う。|mbyte-combining| を参照。 - - *'maxfuncdepth'* *'mfd'* -'maxfuncdepth' 'mfd' 数値 (既定では 100) - グローバル - {Vi にはない} - {Vi mが |+eval| 機能付きでコンパイルされたときのみ有効} - ユーザ定義関数の関数呼び出しの深さの最大値。これは普通、終わらない再帰 - 呼び出しを捉えるために使われる。関数のさらに深い再帰呼び出しを使うとき - は、オプション 'maxfuncdepth' に、さらに大きい値を設定すること。しかし - こうするとメモリを余計に消費するので、メモリを使い果たしたときに落ちる - 危険がある。 - |:function| も参照。 - - *'maxmapdepth'* *'mmd'* *E223* -'maxmapdepth' 'mmd' 数値 (既定では 1000) - グローバル - {Vi にはない} - マッピングに対するマッピングを、文字が使われるまでに繰り返す回数の最大 - 値。これは普通、":map x y" と ":map y x" のような堂々巡りで終わらない - マッピングを捉えるために使われる。しかしこれは ":map g wg" 等は捉えな - い。それは次のマッピングが行われる前に 'w' が使われているからである。 - |key-mapping| も参照。 - - *'maxmem'* *'mm'* -'maxmem' 'mm' 数値 (既定では 256 から 5120 の間 (システムによって - 異なる) または利用できるメモリの半分) - グローバル - {Vi にはない} - 1つのバッファに使用できるメモリの最大値 (キロバイト単位)。この限界に達 - すると、バッファにさらにメモリを割り当てるときには、他のメモリを解放す - る。このオプションの最大値は約 2000000 である。限界を設けないときにはこ - の値に設定すること。'maxmemtot' も参照。 - - *'maxmempattern'* *'mmp'* -'maxmempattern' 'mmp' 数値 (既定では 1000) - グローバル - {Vi にはない} - パターンマッチングに使うメモリ量の最大値(キロバイト単位)。設定可能な最 - 大値は約2000000。限界を設けないときにはこの値に設定すること。 - *E363* - この制限に達したときは、エラーメッセージを表示し、たいていの場合 - CTRL-C が押されたのと同じように振る舞う。 - 制限に達するのはたいてい、検索パターンが極めて非効率であるか複雑過ぎる - ときである。これは非常に長い行の上で "\(.\)*" を検索するとすぐになる。 - ".*" の方がはるかによい。 - 'maxmempattern' の制限に達する前に Vim がメモリ不足になるかもしれない。 - - *'maxmemtot'* *'mmt'* -'maxmemtot' 'mmt' 数値 (既定では 2048 から 10240 の間 (システムによっ - て異なる) または利用できるメモリの半分) - グローバル - {Vi にはない} - 全てのバッファで使用するメモリの合計の最大値 (キロバイト単位)。このオ - プションの最大値は約 2000000 (2 ギガバイト)である。限界を設けないとき - にはこの値に設定すること。64 ビットマシンではもっと高くしても動作する - かもしれない。けれど、本当にテキストの編集に 2 ギガバイト以上も必要で - すか? - 'maxmem' も参照。 - - *'menuitems'* *'mis'* -'menuitems' 'mis' 数値 (既定では 25) - グローバル - {Vi にはない} - {Vi mが |+menu| 機能付きでコンパイルされたときのみ有効} - メニューの項目数の最大値。自動生成されるメニュー、例えばバッファメニュー - に対して使われる。このオプションを変更しても直接の効果はなく、メニュー - を更新しなければならない。 - - *'mkspellmem'* *'msm'* -'mkspellmem' 'msm' 文字列 (既定では "460000,2000,500") - グローバル - {Vi にはない} - {Vi mが |+syntax| 機能付きでコンパイルされたときのみ有 - 効} - |:mkspell| に対するパラメータ。単語ツリーの圧縮を開始するタイミングを - 設定する。単語がたくさんあると圧縮に時間がかかるが、メモリ不足になるの - を防ぐためには必要な事である。単語につき使われるメモリ量はそれらの単語 - がどれだけ似ているかに密接に関係する。そのため、この設定は複雑になる。 - - 3つの数値があり、それらをコンマで区切る: - {start},{inc},{added} - - ほとんどの言語では圧縮しない単語ツリーがメモリに収まる。{start} は圧縮 - を行う前に使えるメモリ量をキロバイト単位で指定する。これは Vim が利用 - 可能なメモリ量より少し少なくするべきである。 - - {start} の制限を超えたとき、別な圧縮を行う前に割り当てることができるメ - モリ量を {inc} によりキロバイト単位で指定する。これを低い値にするとよ - り少ない単語を追加した後に圧縮を行うことになる。高い値にするとより多く - のメモリが割り当てられることになる。 - - 圧縮を行った後、さらにメモリが必要になって {inc} の制限が無視されて圧 - 縮が行われる前に {added}×1024 個の単語を追加することができる。これを - 低い値にすると {inc} の制限にぶつかる機会が少なくなり、より少ないメモ - リを使うが、遅くなる。 - - これらの値が重要になる言語はイタリア語とハンガリー語である。システムが - 約 512Mbyte のメモリを備えているときは既定値でうまくいく。1 GByte のメ - モリを持っているならこうしてもよい: > - :set mkspellmem=900000,3000,800 -< 512 Mbyte より少ないメモリしか持っていないなら、'mkspellmem' がどんな - 値であっても、ある言語に対しては |:mkspell|が失敗するかもしれない。 - - *'modeline'* *'ml'* *'nomodeline'* *'noml'* -'modeline' 'ml' 切替 (Vimの既定値はオン (rootの場合はオフ)、 - Viの既定値はオフ) - バッファについてローカル - *'modelines'* *'mls'* -'modelines' 'mls' 数値 (既定では 5) - グローバル - {Vi にはない} - オプション 'modeline' がオンのときは、テキスト中のコマンド ":set" を - 'modelines' に指定された行数だけ調べる。'modeline' がオフであるか、 - 'modelines' が 0 のときは、":set" は調べられない。|modeline| を参照。 - NOTE: 'modeline' は、オプション 'compatible' がオンのときはViの既定値 - に、オフのときはVimの既定値になるので注意。 - - *'modifiable'* *'ma'* *'nomodifiable'* *'noma'* -'modifiable' 'ma' 切替 (既定ではオン) - バッファについてローカル - {Vi にはない} *E21* - オフのときは、バッファの内容が変更できなくなる。オプション - 'fileformat' と 'fileencoding' も変更できなくなる。 - コマンドライン引数 |-M| でオフに設定できる。 - - *'modified'* *'mod'* *'nomodified'* *'nomod'* -'modified' 'mod' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - オンのとき、バッファは変更を受けたものとされる。これは以下のようなとき - にオンになる。 - 1. 最後に書き込みをした後にテキストが変更されたとき。|undo| をするコマ - ンドで元の状態まで戻ったときは、このオプションはオフになる。しかし - 書き込みより前の編集を undo すると、再びこのオプションはオンになる。 - テキストが最後に書き込まれたときと異なっているからである。 - 2. オプション 'fileformat' や 'fileencoding' が元の値と異なっていると - き。元の値とは、バッファが読み込まれたり書き込まれたときに設定され - た値である。コマンド ":set nomodified" は 'fileformat' や - 'fileencoding' を現在の値に設定し、'modified' をオフにする。 - 'buftype' が "nowrite" または "nofile" であるときもこのオプションを設 - 定できるが、無視される。 - - *'more'* *'nomore'* -'more' 切替 (Vimの既定値: オン、Viの既定値: オフ) - グローバル - {Vi にはない} - オンのときは、一覧表示で画面が一杯になったときは一旦停止し、「継続」プ - ロンプト |more-prompt| を表示する。オフのときは停止せず、最後まで表示 - する。 - NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 - 値に、オフのときはVimの既定値になるので注意。 - - *'mouse'* *E538* -'mouse' 文字列 (既定では "", MS-DOS, Win32とGUI版では "a") - グローバル - {Vi にはない} - オンのとき、マウスが利用可能になる。特定のターミナルでのみ有効である - (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, sysmouse 付きの *BSD - コンソール, gpm 付きの Linux コンソール)。GUIでマウスを使うことについ - ては、|gui-mouse| を参照。 - マウスの利用はモードごとに設定できる。 - n Normalモード - v Visualモード - i Insertモード - c Command-lineモード - h ヘルプファイルを閲覧しているときの上記の4モード全て - a 上記の4モード全て - r 「続けるには」プロンプト |hit-enter| および「継続」プ - ロンプト |more-prompt| が出ているとき - 普通、次のようにしてマウスを4モード全てで利用可能にする。 > - :set mouse=a -< マウスを有効にしていなくても、GUI版ではモードレスセレクションにマウス - を使うことができる。しかしこのときにはカーソルは動かない。 - - |mouse-using| を参照。またオプション 'clipboard' も参照。 - - Note: ターミナルでマウスを有効にすると、Xサーバにアクセスできるならば - コピー/張り付けではレジスタ "* を使うことに注意。マウスボタンの xterm - 風の操作は、シフトキーを押したままにすることで実現できる。 - 'clipboard' も参照。 - - *'mousefocus'* *'mousef'* *'nomousefocus'* *'nomousef'* -'mousefocus' 'mousef' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mのGUI版でのみ有効} - オンのときは、マウスカーソルのおかれたウィンドウが自動的にアクティブに - なる。マウス以外でウィンドウ配置やウィンドウフォーカスを変更すると、マ - ウスカーソルはキーボードフォーカスと共に移動する。既定ではオフだが、こ - れはマウスカーソルを動かして予期しないウィンドウをアクティブにしてしま - うことがあるため、プルダウンメニューの利用を少し面倒にするからである。 - - *'mousehide'* *'mh'* *'nomousehide'* *'nomh'* -'mousehide' 'mh' 切替 (既定ではオン) - グローバル - {Vi にはない} - {Vi mのGUI版でのみ有効} - オンのとき、文字が入力されるときにはマウスカーソルが隠される。マウスが - 動くとマウスカーソルは再び現れる。 - - *'mousemodel'* *'mousem'* -'mousemodel' 'mousem' 文字列 (既定では "extend", MS-DOSとWin32では "popup") - グローバル - {Vi にはない} - マウスの動作モデルを設定する。モデル名は主にマウスの右クリックで行われ - る動作を表している。 - extend 右クリックで選択範囲を広げる。これは xterm と同様の動 - 作である。 - popup 右クリックでポップアップメニューを表示する。シフト+左 - クリックで選択範囲を広げる。これは MS-Windows のような - 動作になる。 - popup_setpos "popup" と似ているが、カーソルが右クリックした場所に移 - 動する。その結果、選択範囲を対象とする操作が (訳注: マ - ウスのドラッグで選択した範囲ではなく) クリックしたオブ - ジェクトに対して働くようになる。 - 元々操作の対象となるはずの選択範囲内を右クリックしたと - きは、カーソルは移動しない。もちろん、選択範囲の外側を - 左クリックすればVisualモードは終了する。 - それぞれのモデルでの、マウス操作の働きの一覧: - マウス操作 extend popup(_setpos) ~ - 左クリック カーソル移動 カーソル移動 - 左ドラッグ 選択開始 選択開始 - シフト+左 単語検索 選択範囲の拡張 - 右クリック 選択範囲の拡張 メニュー (カーソル移動) - 右ドラッグ 選択範囲の拡張 なし - 中央クリック 張り付け 張り付け - - "popup" モデルでは、右クリックでポップアップメニューを表示する。これは - 先に定義しておかなければならない。|popup-menu| を参照。 - - Note マウス操作による動作は、マッピングでさらに詳しく設定できることに - 注意。|gui-mouse-mapping| を参照。しかしマッピングはモードレスセレクショ - ンには「使われない」 (GUIそのものの機能であるため)。 - - オプション 'mousemodel' は、コマンド |:behave| で設定できる。 - - *'mouseshape'* *'mouses'* *E547* -'mouseshape' 'mouses' 文字列 (既定では "i:beam,r:beam,s:updown,sd:cross, - m:no,ml:up-arrow,v:rightup-arrow") - グローバル - {Vi にはない} - {Vi mが |+mouseshape| 機能付きでコンパイルされたときの - み有効} - それぞれのモードでのマウスカーソルの外観を設定する。値はコンマ区切りの - 指定部のリストであり、オプション 'guicursor' に使われるものと大分似て - いる。指定部は、次のような状態リストと外観設定からなる。 - 状態リスト:外観,状態リスト:外観,.. - 状態リストは、以下のモードまたはカーソル位置のダッシュ '-' 区切りのリ - ストである。 - 普通のウィンドウ内: ~ - n Normalモード - v Visualモード - ve 'selection' に "exclusive" が含まれているときのVisual - モード (指定されなければ 'v' と同じ設定になる) - o Operator-pendingモード - i Insertモード - r Replaceモード - - その他: ~ - c コマンドラインへの追加時 - ci コマンドラインへの挿入時 - cr コマンドラインでの置換時 - m 「続けるには」プロンプトまたは「継続」プロンプト表示中 - e 全てのモードにおいて、マウスカーソルが最下ウィンドウよ - りも下に置かれているとき - s 全てのモードにおいて、マウスカーソルがステータス行に置 - かれているとき - sd 全てのモードにおいて、ステータス行をドラッグ中のとき - vs 全てのモードにおいて、マウスカーソルが垂直分割の区切り - 行に置かれているとき - vd 全てのモードにおいて、垂直分割区切りをドラッグ中のとき - a あらゆる場所 - - 指定可能なマウスカーソルの形は以下の通りである。 - avail 名前 外見 ~ - w x arrow 普通のマウスカーソル - w x blank カーソルなし (注意して使うこと!) - w x beam I 状の縦棒 - w x updown 上下のサイズ変更矢印 - w x leftright 左右のサイズ変更矢印 - w x busy システムの「待ち」カーソル - w x no システムの「入力不可」カーソル - x udsizing 上下のサイズ変更を示す - x lrsizing 左右のサイズ変更を示す - x crosshair 大きくて細い + - x hand1 黒い手 - x hand2 白い手 - x pencil 文字を書くときの、あの鉛筆 - x question 大きな ? - x rightup-arrow 右上向き矢印 - w x up-arrow 上向き矢印 - x <number> 任意の X11 のカーソルナンバー - (X11/cursorfont.h を参照) - - 上の "avail" という項目は、 'w' ならばそのマウスカーソルをWin32で利用 - でき、'x' ならばX11で利用できることを表す。 - 指定されなかったモードや、利用不可能なカーソルを指定されたモードでは、 - 通常のマウスカーソルを使う。 - - 例: > - :set mouseshape=s:udsizing,m:no -< とすると、マウスカーソルはステータス行の上ではサイズ変更を表す形になり、 - 「続けるには」プロンプトが表示されているときには入力不可を表す (この状 - 態ではマウスクリックに効果がないので)。 - - *'mousetime'* *'mouset'* -'mousetime' 'mouset' 数値 (既定では 500) - グローバル - {Vi にはない} - GUI版, MS-DOS, Win32とUnixのxtermでのみ有効。ダブルクリックなどとして - 認識されるクリックとクリックの間の時間を、ミリ秒単位で設定する。 - - *'mzquantum'* *'mzq'* -'mzquantum' 'mzq' 数値 (既定では 100) - グローバル - {Vi にはない} - {Vi mが |+mzscheme| 機能付きでコンパイルされたときのみ - 有効} - MzScheme のスレッドを切り替える間隔(ミリ秒)。 - 負または0にするとスレッドのスケジューリングを行わなくなる。 - - *'nrformats'* *'nf'* -'nrformats' 'nf' 文字列 (既定では "octal,hex") - バッファについてローカル - {Vi にはない} - テキスト内の数をコマンド CTRL-A や CTRL-X で増減させるとき、 Vimに何を - 数として認識させるかを設定する。これらのコマンドの詳しい情報については - |CTRL-A| を参照。 - alpha これが含まれると、単一のアルファベットも増減操作を受ける。これ - は a), b) 等の、文字を使ったリストに対して便利である。 - *octal-number* - octal これが含まれると、0 で始まる数は8進数として認識される。例: - "007"の上で CTRL-A を使うと "010" となる。 - hex これが含まれると、"0x" や "0X" で始まる数は16進数として認識さ - れる。例: "0x100" の上で CTRL-X を使うと "0x0ff" となる。 - 1 から 9 の数字で始まる数は、常に10進数として認識される。8進数または16 - 進数として認識されない数も10進数として認識される。 - - *'number'* *'nu'* *'nonumber'* *'nonu'* -'number' 'nu' 切替 (既定ではオフ) - ウィンドウについてローカル - 毎行の前に行番号を表示する。オプション 'cpoptions' にフラグ 'n' が含ま - れていないときは、折り返された行の先頭は行番号の表示される桁に入り込ま - ない ('compatible' がオフのときはこれが既定である)。 - オプション 'numberwidth' で行番号の幅を設定することができる。 - 折り返された行が長すぎて (訳注: 行の途中の部分だけで画面一杯になってし - まい) 行の本当の先頭の文字が表示されていないときは、文字 '-' が行番号 - の前に表示される。行番号に使われる強調表示グループについては - |hl-LineNr| を参照。 - このオプションをオンにすると 'relativenumber' はオフになります。 - - *'numberwidth'* *'nuw'* -'numberwidth' 'nuw' 数値 (Vim の既定値: 4 Vi の既定値: 8) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+linebreak| 機能付きでコンパイルされたときの - み利用可能} - 行番号を表示するのに使われる桁数の最小値。'number' か 'relativenumber' - がオンのときか行番号付きで印刷するときのみ意味がある。常に番号とテキス - トの間にスペースが1つ置かれるので、番号そのものに割かれる桁数はこれよ - り1文字少なくなる。 - この値は最小の幅である。'number' がオンのときにはバッファの行数、 - 'relativenumber' がオンのときにはウィンドウの行数を、それぞれ表示する - のに足りないときは設定されたよりも広い幅が使われる。つまり、Vim の既定 - 値の4だと、999行目までの幅が割り当てられることになる。バッファが1000行 - 以上になると5桁が割り当てられるようになる。 - 最小値は1。最大値は10。 - NOTE: 'compatible' がオンになると 'numberwidth' は8になる。 - - *'omnifunc'* *'ofu'* -'omnifunc' 'ofu' 文字列 (既定では: 空) - バッファについてローカル - {Vi にはない} - {Vi m が |+eval| と |+insert_expand| 機能付きでコンパ - イルされたときのみ利用可能} - このオプションはインサートモードにおける CTRL-X CTRL-O でのオムニ補完 - で使われる関数を指定する。|i_CTRL-X_CTRL-O| - この関数がどのように呼び出され、何を返すべきかについては - |complete-functions| を参照。 - このオプションは普通ファイルタイププラグインによって設定される。 - |:filetype-plugin-on| - - *'opendevice'* *'odev'* *'noopendevice'* *'noodev'* -'opendevice' 'odev' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {MS-DOS, MS-Windows and OS/2 でのみ有効} - デバイスからの読み書きを有効にする。これを有効にすると、オープンされて - いる可能性があるが、実際には入出力を行わないデバイスにひっかかる - 可能性がある。(訳注: 原文は次の通り: - This may get Vim stuck on a device that can be opened but doesn't - actually do the I/O. ) - そのため既定ではオフになっている。 - MS-Windowsで"aux.h"、"lpt1.txt"などを編集するとデバイスを編集中になる - ことに注意。 - - - *'operatorfunc'* *'opfunc'* -'operatorfunc' 'opfunc' 文字列 (既定では: 空) - グローバル - {Vi にはない} - このオプションはオペレータ |g@| で呼び出される関数を指定する。 - より詳しい情報と例については |:map-operator| を参照。 - - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - - *'osfiletype'* *'oft'* -'osfiletype' 'oft' 文字列 (既定では: "") - バッファについてローカル - {Vi にはない} - このオプションは RISC OS でサポートされていましたが、RISC OS サポート - は削除されました。 - - - *'paragraphs'* *'para'* -'paragraphs' 'para' 文字列 (既定では "IPLPPPQPP TPHPLIPpLpItpplpipb") - グローバル - Nroff (訳注: UNIXで使われる画面整形システム) で使われる、段落を分ける - ためのマクロを指定する。値は2文字の組である (|object-motions| を参照)。 - - *'paste'* *'nopaste'* -'paste' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オンにするとVimはPasteモードに移行する。これはテキストを別のウィンドウ - から切り取ったりコピーして、Vim内に張り付けたいときに便利であり、予想 - しない作用を避けることができる。 - このオプションはVimをターミナルで使っているときに便利である。ターミナ - ルでは打ち込まれたテキストと張り付けられたテキストの区別がつかないから - だ。GUI版のVimでは張り付け時にすべき動作を知っているので、'paste' がオ - フでも大抵うまくいく。Vimがマウスクリックを扱えるようなターミナルでも - 同様にうまくいく。 - GUI を開始するとこのオプションはオフになる。そのため、.vimrc 内でこの - オプションをオンにすると、それはターミナル内では働くが、GUI ではオフに - なる。GUI 版で 'paste' をオンにすると次のような副作用がある: 例. - 「ペースト」ツールバーボタンがインサートモードで動作しなくなる。このボ - タンはマッピングを使っているためである。 - 'paste' がオンのときは、以下のように設定が変わる。 - - InsertモードとCommand-lineモードでのマッピングが無効になる - - 略語展開が無効になる - - 'textwidth' が 0 になる - - 'wrapmargin' が 0 になる - - 'autoindent' がオフになる - - 'smartindent' がオフになる - - 'softtabstop' が 0 になる - - 'revins' がオフになる - - 'ruler' がオフになる - - 'showmatch' がオフになる - - 'formatoptions' が空のときのような動作になる - 以下のオプションの値に変化はないが、働きは無効になる。 - - 'lisp' - - 'indentexpr' - - 'cindent' - NOTE: 'paste' がオンのときに別のファイルの編集を始めると、モードライン - や autocommand によって設定が再び変わり、張り付け時に問題が起きること - があるので注意。そのときは 'paste' を再びオンにするとよいだろう。 - 'paste' をオフにすると、上記のオプションの設定は 'paste' がオンになっ - た時点の前の状態に復元される。 - 'paste' をオンにする前にオフにしても何の効果もない。 - 'paste' がオンの間はマッピングが無効になるので、どれかのキーで 'paste' - を切り替えるには 'pastetoggle' を使う必要がある。 - - *'pastetoggle'* *'pt'* -'pastetoggle' 'pt' 文字列 (既定では "") - グローバル - {Vi にはない} - 空でないとき、オプション 'paste' を切り替えるキー列を指定する。これは - 以下のようなマッピングの設定に似ている。 > - :map {keys} :set invpaste<CR> -< ここで {keys} は 'pastetoggle' の値が当てはまる。 - 違うのは、こちらは 'paste' がオンでも有効だという点だ。 - 'pastetoggle' はInsertモードとNormalモードで有効だが、Command-lineモー - ドでは無効である。 - マッピングが最初に調べられるので、'pastetoggle' を上書きできる。しかし - 'paste' がオンならばInsertモードでマッピングは無視されるので、以下のよ - うな設定が可能である。 > - :map <F10> :set paste<CR> - :map <F11> :set nopaste<CR> - :imap <F10> <C-O>:set paste<CR> - :imap <F11> <nop> - :set pastetoggle=<F11> -< こうすると <F10> でPasteモードが始まり、<F11> でPasteモードが終わる。 - Note Pasteモードで <F10> を入力すると "<F10>" が挿入されるので注意。こ - れは、Pasteモードでは 'pastetoggle' で指定されたキー列以外は全てそのま - ま挿入されるからである。 - このオプションの値が複数バイトからなる場合、'ttimeoutlen' が適用される。 - - *'pex'* *'patchexpr'* -'patchexpr' 'pex' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+diff| 機能付きでコンパイルされたときのみ有効} - ファイルにパッチを適用し、ファイルの新しいヴァージョンを生成するために - 使われる式。|diff-patchexpr| を参照。 - - *'patchmode'* *'pm'* *E206* -'patchmode' 'pm' 文字列 (既定では "") - グローバル - {Vi にはない} - 値が空でないとき、ファイルの最も古いヴァージョンが保管されるようになる。 - ソース配布物内のファイルに変更を加えたとき、元のヴァージョンを取ってお - きたいならこれを使う。最初にファイルが書き込まれたときのみ、元のファイ - ルのコピーが作られる。コピーのファイル名は、元のファイル名の後に - 'patchmode' の値を付け加えたものである。このオプションの値はドットで始 - めるようにすべきである。".org" 等を使うこと。この機能を使うには、 - 'backupdir' が空であってはならない (詳細: 変更後のファイルの書き込みが - 成功してから、バックアップファイルがオリジナルをコピーしたファイルにリ - ネームされるため、バックアップファイルを生成できなければならない)。バッ - クアップすべきファイルがないときは、空ファイルが作られる。 - 'backupskip' がファイル名にマッチしたときは、元のファイルは保管されな - い。 - 圧縮ファイルに 'patchmode' を使うと、ファイル名末尾に拡張子が付けられ - るので (例えば "file.gz.orig")、その結果できたファイルは必ずしも圧縮ファ - イルとは認識されなくなってしまう。 - 通常のファイル名文字だけが使える。"/\*?[|<>" は不正である。 - - *'path'* *'pa'* *E343* *E345* *E347* -'path' 'pa' 文字列 (Unixでの既定値: ".,/usr/include,," - OS/2での既定値: ".,/emx/include,," - 他のシステムでの既定値: ".,,") - グローバル/バッファについてローカル |global-local| - {Vi にはない} - 値はディレクトリのリストであり、コマンド |gf|, [f, ]f, ^Wf, |:find|, - |:sfind|, |:tabfind| 等で、検索されるファイルが相対パス ("/", "./", - "../" で始まらないパス --訳注: MS-Windowsでは "C:/" 等で始まらないパス) - で指定されたときに使われるものである。オプション 'path' にディレクトリ - を指定するには、相対パスでも絶対パスでもよい。 - - 複数のディレクトリ名はコンマで区切る。 > - :set path=.,/usr/local/include,/usr/include -< - 区切りには空白も使える (Vim version 3.0 との後方互換性のため)。中に - 空白を含んだディレクトリ名を指定するには、空白の前に余分に '\' (訳注: - |option-backslash| を参照) を置き、その上で空白と '\' を '\' でエス - ケープすること。 > - :set path=.,/dir/with\\\ space - (訳注: 結果は ".,/dir/with\ space") -< - 中にコンマを含んだディレクトリ名を指定するには、コンマの前に余分に - '\' を置き、その上で '\' を '\' でエスケープすること。 > - :set path=.,/dir/with\\,comma - (訳注: 結果は ".,/dir/with\,comma") -< - カレントファイルに対し相対的にディレクトリを指定するには、こうする。 > - :set path=. -< - カレントディレクトリを指定するには、2個のコンマで空文字列を挟む。 > - :set path=,, -< - ディレクトリ名の末尾は ':' や '/' でもよい。 - - 環境変数は展開される |:set_env|。 - - 公式プラグイン |netrw.vim| を使っているときはURLも指定できる。例えば - "http://www.vim.org" を追加すると ":find index.html" とすることがで - きる。 - - "*", "**", ";" を使えばディレクトリツリーの上下に向かって検索できる。 - 詳しくは |file-searching| を参照。 - {Vi mが |+path_extra| 機能付きでコンパイルされたときのみ有効} - - 文字 '\' の扱いには注意。オプションの値に '\' を1個含めるには、次の - ように2個打ち込む。 > - :set path=.,c:\\include -< または、次のように代わりに '/' を使う。 > - :set path=.,c:/include -< 値に "." を含めるのを忘れないこと!そうしないと、カレントファイルと同 - じディレクトリ内のファイルさえも発見できない! - 値の長さには制限がある。システムごとに異なるが、大抵は256文字か1024文 - 字等の長さである (訳注: これは半角の場合で、全角では半分)。 - 'path' でインクルードしたファイルを全て発見できているかどうかについて - は、|:checkpath| を参照。 - リストにディレクトリを追加するときにはコマンド |:set+=|、リストからディ - レクトリを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来 - のヴァージョンで異なった既定値が使われるようになったときに、問題が起き - るのを防げる。ただしカレントディレクトリを取り除くには次のようにする。 > - :set path-= -< またカレントディレクトリを追加するには次のようにする。 > - :set path+= -< 環境変数を使うには、その中の区切り文字を変える必要があるだろう。次のも - のは環境変数 $INCL を追加する例だが、その中ではディレクトリ名はセミコ - ロン ';' で区切られているとする。 > - :let &path = &path . "," . substitute($INCL, ';', ',', 'g') -< 文字 ';' を ':' または指定可能な区切り文字で置換する。 Note この方法 - は、$INCL がコンマや空白を含んでいるときには使えないので注意。 - - *'preserveindent'* *'pi'* *'nopreserveindent'* *'nopi'* -'preserveindent' 'pi' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - カレント行のインデントを変更するとき、可能な限りインデントの構造を保つ - ようにする。普通、インデントはまずタブで埋められ、その後に必要なだけス - ペースで埋められる(|'expandtab'|がオンになっているときは違い、スペース - だけで埋められる)。このオプションをオンにすると、インデントの既存の文 - 字をできるだけそのままにし、追加の際に必要なだけタブやスペースを追加す - るようになる。 - 'expandtab' は適用されない。タブはタブのままになる。 - NOTE: ">>" を複数回使うと、インデントにタブとスペースが混在するように - なる。これは好ましくないかもしれない。 - NOTE: 'compatible' がオンになると 'preserveindent' はオフになる。 - 'copyindent' も参照。 - 空白文字を揃えるには |:retab| を使う。 - - *'previewheight'* *'pvh'* -'previewheight' 'pvh' 数値 (既定では 12) - グローバル - {Vi にはない} - {Vi mが |+windows| 機能と |+quickfix| 機能付きでコンパ - イルされたときのみ有効} - プレビューウィンドウの高さの既定値。コマンド |:ptag| とその関連コマン - ドで使われる。|CTRL-W_}| にカウントが指定されなかったときもこれが使わ - れる。 - - *'previewwindow'* *'nopreviewwindow'* - *'pvw'* *'nopvw'* *E590* -'previewwindow' 'pvw' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+windows| 機能と |+quickfix| 機能付きでコンパ - イルされたときのみ有効} - このオプションでプレビューウィンドウを決める。ただ1つのウィンドウでの - み、このオプションをオンに設定できる。普通、直接設定されることはないが、 - コマンド |:ptag|, |:pedit| 等を使うと設定される。 - - *'printdevice'* *'pdev'* -'printdevice' 'pdev' 文字列 (既定では空) - グローバル - {Vi にはない} - {Vi mが |+printer| 機能付きでコンパイルされたときのみ - 有効} - |:hardcopy| で使われるプリンタの名前。 - |pdev-option| を参照。 - - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'printencoding'* *'penc'* -'printencoding' 'penc' 文字列 (いくつかのシステムを除き、既定は空) - グローバル - {Vi にはない} - {Vi mが |+printer| と |+postscript| 機能付きでコンパイ - ルされたときのみ利用可能} - 印刷の際に使われる文字エンコーディングを指定する。 - |penc-option| を参照。 - - *'printexpr'* *'pexpr'* -'printexpr' 'pexpr' 文字列 (既定値は、以下を参照) - グローバル - {Vi にはない} - {Vi mが |+printer| 機能と |+postscript| 機能付きでコン - パイルされたときのみ有効} - コマンド ":hardcopy" で生成されるPostScript (PS) ファイルを印刷するた - めに評価される expression を指定する。|pexpr-option| を参照。 - - *'printfont'* *'pfn'* -'printfont' 'pfn' 文字列 (既定では "courier") - グローバル - {Vi にはない} - {Vi mが |+printer| 機能付きでコンパイルされたときのみ - 有効} - コマンド |:hardcopy| の出力に使われるフォント名。|pfn-option| を参照。 - - *'printheader'* *'pheader'* -'printheader' 'pheader' 文字列 (既定では "%<%f%h%m%=Page %N") - グローバル - {Vi にはない} - {Vi mが |+printer| 機能付きでコンパイルされたときのみ - 有効} - コマンド |:hardcopy| の出力のヘッダの書式を定義する。 - |pheader-option|を参照。 - - *'printmbcharset'* *'pmbcs'* -'printmbcharset' 'pmbcs' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+printer|, |+postscript|, |+multi_byte| 機能 - 付きでコンパイルされたときのみ利用可能} - コマンド |:hardcopy| の出力の中の CJK 文字に使われる文字集合。 - |pmbcs-option| を参照。 - - *'printmbfont'* *'pmbfn'* -'printmbfont' 'pmbfn' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+printer|, |+postscript|, |+multi_byte| 機能 - 付きでコンパイルされたときのみ利用可能} - コマンド |:hardcopy| の出力の中の CJK 文字に使われるフォント名のリスト。 - |pmbfn-option| を参照。 - - *'printoptions'* *'popt'* -'printoptions' 'popt' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+printer| 機能付きでコンパイルされたときのみ - 有効} - コマンド |:hardcopy| の出力の書式を設定する項目のリスト。 - |popt-option| を参照。 - - *'prompt'* *'noprompt'* -'prompt' 切替 (既定ではオン) - グローバル - オンならば、Ex モードでプロンプト ":" が表示される。 - - *'pumheight'* *'ph'* -'pumheight' 'ph' 数値 (既定では 0) - グローバル - {Vi m が |+insert_expand| 機能付きでコンパイルされたと - きのみ利用可能} - {Vi にはない} - インサートモード補完のポップアップメニューに表示される項目数の最大値。 - 0 のときはスペースの許す限り多く表示される。 - |ins-completion-menu| - - - *'quoteescape'* *'qe'* -'quoteescape' 'qe' 文字列 (既定では "\") - バッファについてローカル - {Vi にはない} - 文字列内で引用符をエスケープする文字。テキストオブジェクト a', a", a` - |a'| などで使われる。 - このオプションの文字のどれかが文字列内に現れると、その次の文字はスキッ - プされる。既定値では、テキスト "foo\"bar\\" が1つの文字列とみなされる。 - - *'readonly'* *'ro'* *'noreadonly'* *'noro'* -'readonly' 'ro' 切替 (既定ではオフ) - バッファについてローカル - オンのときは、書き込みコマンドは '!' を付けないと使えない。これは間違っ - てファイルを上書きしてしまうことを防ぐためのものである。Vimが読み込み - 専用モードで起動された ("vim -R") ときと、実行ファイルの名前が "view" - のときにはオンが既定値になる。 - 'cpoptions' にフラグ 'Z' が入っていない場合、":w!" を使うとカレントバッ - ファの 'readonly' がオフになる。 - {Vi には、以下のコマンドはない} コマンド ":view" を使って開かれたバッ - ファでは、オプション 'readonly' はオンになる。 - - *'redrawtime'* *'rdt'* -'redrawtime' 'rdt' 数値 (既定では 2000) - グローバル - {Vi にはない} - {|+reltime| 機能付きでコンパイルされたときのみ有効} - 画面を再描画するのにかける時間(ミリ秒)。'hlsearch' がオンのときのパ - ターン検索や |:match| によるハイライトに対して適用される。再描画にこれ - で指定したミリ秒以上の時間がかかるとき、それ以上のマッチはハイライトさ - れない。非常に複雑なパターンを検索するさいに Vim が応答しなくなるのを - 避けるためである。 - - *'relativenumber'* *'rnu'* *'norelativenumber'* *'nornu'* -'relativenumber' 'rnu' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - カーソル行からの相対的な行番号を表示する。相対行番号を見れば縦移動のコ - マンドでカウント指定 (|count|) を使うとき自分で数える必要がないので便 - 利です。特に他のコマンド (例: y d c < > gg gw =) と組み合わせるときな - ど。 - 'cpoptions' に 'n' オプションが含まれていないときは、折り返された行を - 表示するのに行番号の表示領域は使われません (これは 'compatible' がオフ - のときの既定動作です)。 - 行番号の表示領域の幅は 'numberwidth' オプションで設定できます。 - 折り返された行がとても長くてその行頭が画面外にあるときは、行番号の前に - '-' 文字が表示されます。 - 行番号の強調表示には |hl-LineNr| が使われます。 - このオプションをオンにすると 'number' はオフになります。 - - *'remap'* *'noremap'* -'remap' 切替 (既定ではオン) - グローバル - 再帰的マッピング (訳注: マッピングに対するマッピング、に対するマッピン - グ...) を有効にする。特定のマッピングに対して再帰的マッピングを禁止し - たいときは、コマンド ":noremap[!]" を使うこと。 - NOTE: Vim スクリプトのポータビリティのために、このオプションは常に既定 - 値のオンのままにしておくこと。昔の Vi スクリプトを使うときだけこれをオ - フにすること。 - - *'report'* -'report' 数値 (既定では 2) - グローバル - 変更された行の数の報告が出る最小値。変更された行の数がオプション - 'report' より大きければ、ほとんどの ":" によるコマンドでメッセージが表 - 示される。必ず報告してほしいなら 'report' を 0 にすること。 - コマンド ":substitute" では、基準は変更された行数ではなく、置換を行っ - た回数になる。 - - *'restorescreen'* *'rs'* *'norestorescreen'* *'nors'* -'restorescreen' 'rs' 切替 (既定ではオン) - グローバル - {Vi にはない} {Vi mのWindows 95/NTのコンソール版} - オンのとき、Vimを終了した後にコンソール画面の内容が復元される。外部コ - マンドを実行するときも同様である。 - - Windows版以外のVimでは: ファイル .vimrc で、オプション 't_ti' と - 't_te'を設定することで実現できる。画面の復元を無効にするには次のように - する。 > - set t_ti= t_te= -< 復元を有効にするには次のようにする (xterm用の設定)。 > - set t_ti=^[7^[[r^[[?47h t_te=^[[?47l^[8 -< (ここで ^[ は <Esc> であり、入力するには CTRL-V <Esc> と打ち込む) - - *'revins'* *'ri'* *'norevins'* *'nori'* -'revins' 'ri' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み有効} - Insertモードでの文字の挿入が通常と逆向きになる。"typing backwards" を - 参照 |ins-reverse|。このオプションは、オプション 'allowrevins' がオン - ならばInsertモードでコマンド CTRL-_ を使うことで切り替えられる。 - NOTE: このオプションは、オプション 'compatible' または 'paste' がオン - のときはオフになるので注意。 - - *'rightleft'* *'rl'* *'norightleft'* *'norl'* -'rightleft' 'rl' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+rightleft| 機能付きでコンパイルされたときの - み有効} - オンのとき、画面表示の方向が右から左になる。つまり、ファイルに保存され - ている文字は右から左の方向へ表示される。このオプションを使うと、ヘブラ - イ語やアラビア語のような右から左に向かって書かれる言語によるファイルを - 編集できる。このオプションはウィンドウごとに設定可能なので、ヘブライ語 - と英語のファイルを同時に編集したり、同一のファイルを2通りに表示するこ - とができる (これは右から左のテキストと左から右のテキストが混在している - ファイルを編集するときに便利である。両方を異なるウィンドウで適切に表示 - することができる)。|rileft.txt| を参照。 - - *'rightleftcmd'* *'rlc'* -'rightleftcmd' 'rlc' 文字列 (既定では "search") - ウィンドウについてローカル - {Vi にはない} - {Vi m が |+rightleft| 機能付きでコンパイルされたときの - み利用可能} - 左←右書きモードで動作するコマンドを指定する: - - search コマンド "/" と "?" - - これはヘブライ語、アラビア語、ペルシア語などの言語で便利である。 - オプション 'rightleft' を設定しないと 'rightleftcmd' は効果がない。 - - *'ruler'* *'ru'* *'noruler'* *'noru'* -'ruler' 'ru' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+cmdline_info| 機能付きでコンパイルされたとき - のみ有効} - カーソルが何行目の何列目に置かれているかを表示する (訳注: これをルーラ - と呼ぶ)。行数と列数はコンマで区切られる。幅に余裕があるときは、表示さ - れているテキストの、ファイル内での相対位置が右端に表示される。 - 先頭 ファイル先頭の行が表示されているとき - 末尾 ファイル末尾の行が表示されているとき - 全て ファイル先頭と末尾の行の両方が表示されているとき - 45% ファイル内での相対位置 - オプション 'rulerformat' が設定されているときは、それによってルーラの - 内容が指定される。ルーラはウィンドウごとに表示される。ウィンドウにステー - タス行が表示されていれば、ルーラもそこに表示される。そうでなければ画面 - の末尾の行に表示される。ステータス行の内容が 'statusline' で指定されて - いるときは (つまりその値が空でないときは)、'statusline' が 'ruler' や - 'rulerformat' より優先される。 - 表示された文字の数がテキスト上でのバイト数と違うときは (例えば、タブ文 - 字やマルチバイト文字があるとき)、テキスト上の列数 (バイト数) と画面上 - の列数が、ダッシュで区切られて両方表示される。 - 空行では "0-1" と表示される。 - 空のバッファでは行数も0になり、 "0,0-1" と表示される。 - このオプションは、'paste' がオンのときはオフになる。 - ルーラを常に表示したくはないが、テキスト内のどこにいるのか知りたいとき - は、コマンド "g CTRL-G" を使うこと |g_CTRL-G|。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフに - なるので注意。 - - *'rulerformat'* *'ruf'* -'rulerformat' 'ruf' 文字列 (既定では空) - グローバル - {Vi にはない} - {Vi mが |+statusline| 機能付きでコンパイルされたときの - み有効} - 値が空でないときは、オプション 'ruler' によって表示されるルーラの内容 - を指定する。 - このオプションの書式は 'statusline' のものと同様である。 - ルーラの幅は既定では17文字である。幅を15文字にするには、値の先頭に - "%15(" を置き、末尾に "%)" を置くこと。例: > - :set rulerformat=%15(%c%V\ %p%%%) -< - *'runtimepath'* *'rtp'* *vimfiles* -'runtimepath' 'rtp' 文字列 (既定値: - Unix: "$HOME/.vim, - $VIM/vimfiles, - $VIMRUNTIME, - $VIM/vimfiles/after, - $HOME/.vim/after" - Amiga: "home:vimfiles, - $VIM/vimfiles, - $VIMRUNTIME, - $VIM/vimfiles/after, - home:vimfiles/after" - DOS, MS-Win系, OS/2: "$HOME/vimfiles, - $VIM/vimfiles, - $VIMRUNTIME, - $VIM/vimfiles/after, - $HOME/vimfiles/after" - Macintosh: "$VIM:vimfiles, - $VIMRUNTIME, - $VIM:vimfiles:after" - RISC-OS: "Choices:vimfiles, - $VIMRUNTIME, - Choices:vimfiles/after" - VMS: "sys$login:vimfiles, - $VIM/vimfiles, - $VIMRUNTIME, - $VIM/vimfiles/after, - sys$login:vimfiles/after") - グローバル - {Vi にはない} - 以下のランタイムファイルが検索されるディレクトリのリスト。 - filetype.vim ファイル名によるファイルタイプの決定 |new-filetype| - scripts.vim ファイルの内容によるファイルタイプの決定 - |new-filetype-scripts| - autoload/ 自動的に読み込まれるスクリプト |autoload-functions| - colors/ 色テーマ定義ファイル |:colorscheme| - compiler/ コンパイラ定義ファイル |:compiler| - doc/ ヘルプドキュメント |write-local-help| - ftplugin/ ファイルタイププラグイン |write-filetype-plugin| - indent/ インデントスクリプト |indent-expression| - keymap/ キーマップ定義ファイル |mbyte-keymap| - lang/ 翻訳版メニュー |:menutrans| - menu.vim GUI版メニュー |menu.vim| - plugin/ プラグインスクリプト |write-plugin| - print/ 印刷用のファイル |postscript-print-encoding| - spell/ スペルチェック用のファイル |spell| - syntax/ 文法ファイル |mysyntaxfile| - tutor/ Vimtutor用ファイル |tutor| - - および、コマンド |:runtime| で検索される全てのファイル。 - - ほとんどのシステムでの既定値は、以下の5カ所を検索するようになっている。 - 1. ユーザの個人的な設定を読み込むため、ユーザのホームディレクトリを検 - 索する。 - 2. システム管理者による設定を読み込むため、システム共通のVim用ディレク - トリを検索する。 - 3. Vim付属のファイルを読み込むため、環境変数 $VIMRUNTIME 内を検索する。 - *after-directory* - 4. システム管理者が付属ファイルによる設定を上書きしたり、それに追加設 - 定をしたりできるようにするため、システム共通のVimディレクトリ内のディ - レクトリ "after" を検索する (これは滅多に使われない)。 - 5. ユーザが付属ファイルやシステム管理者による設定を上書きしたり、それ - に追加設定をしたりできるようにするため、ユーザのホームディレクトリ - 内のディレクトリ "after" を検索する。 - - Note オプション 'path' と違い、ワイルドカードのうち "**" 等は使えない - ことに注意。普通のワイルドカードは使えるが、ランタイムファイルの検索が - 目に見えて遅くなることがある。速度を向上させるには、設定する項目の数を - なるべく少なくし、ワイルドカードの使用を避けること。 - |:runtime| を参照。 - 例: > - :set runtimepath=~/vimruntime,/mygroup/vim,$VIMRUNTIME -< こうすると、ディレクトリ "~/vimruntime" (ユーザの個人的Vimランタイムファ - イルを格納) を最初に検索し、次にディレクトリ "/mygroup/vim" (グループ - 共通の設定ファイルを格納) を、最後に "$VIMRUNTIME" (付属ランタイムファ - イル) を検索する。 - 付属ランタイムファイルを使えるようにするため、どこかに必ず環境変数 - $VIMRUNTIME を指定するべきだろう。付属ランタイムファイルの代わりに使う - ファイルを置くディレクトリは、環境変数 $VIMRUNTIME の前に指定すればよ - い。付属ランタイムファイルによる設定に追加するためのファイルを置くディ - レクトリは、環境変数 $VIMRUNTIME の後に指定すればよい。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'scroll'* *'scr'* -'scroll' 'scr' 数値 (既定では、ウィンドウ高の半分) - ウィンドウについてローカル - コマンド CTRL-U や CTRL-D でスクロールする行数。ウィンドウのサイズが変 - わると、ウィンドウの行数の半分に設定される。CTRL-U や CTRL-D を、カウ - ントを指定して使うと、カウントはオプション 'scroll' の値として使われる。 - ":set scroll=0" とすると、値はウィンドウ高の半分に戻る。 {Vi では微妙 - に違う: オプション 'scroll' ではファイル上の行数ではなく、画面上の行数 - を指定していた。行の折り返しがあるときに違いが出る} - - *'scrollbind'* *'scb'* *'noscrollbind'* *'noscb'* -'scrollbind' 'scb' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+scrollbind| 機能付きでコンパイルされたときの - み有効} - |scroll-binding| も参照。オンのとき、カレントウィンドウは他のスクロー - ル同調中ウィンドウ (このオプションがオンになっているウィンドウ) と同じ - だけスクロールする。このオプションは、ファイルの2個のヴァージョン間の - 違いを見るのに便利である。オプション 'diff' を参照。 - このオプションがどのように解釈されるかを決定するオプションについては、 - オプション 'scrollopt' を参照。 - ウィンドウを分割して他のファイルを編集すると、ほとんどの場合このオプショ - ンはオフになる。よって ":split | edit file" はウィンドウを2つに分割し、 - scroll-binding を設定するが、":split file" はそうならない。 - - *'scrolljump'* *'sj'* -'scrolljump' 'sj' 数値 (既定では 1) - グローバル - {Vi にはない} - カーソルが画面外に出たときにスクロールする行数の最小値 (例えばコマンド - "j" 等によって)。スクロールコマンド (例えば CTRL-E, CTRL-D) には使われ - ない。ユーザのターミナルのスクロールがとても遅いときに便利である。 - -1 から -100 までの負の数に設定すると、ウィンドウの高さのパーセンテー - ジとして扱われる。つまり -50 はウィンドウの高さの半分スクロールする。 - NOTE: このオプションは、オプション 'compatible' がオンのときは 1 にな - るので注意。 - - *'scrolloff'* *'so'* -'scrolloff' 'so' 数値 (既定では 0) - グローバル - {Vi にはない} - カーソルの上または下には、最低でもこのオプションに指定した数の行が表示 - される。これにより、編集中の箇所の周辺のテキストを見ることができる。と - ても大きい値 (999等) にすると、カーソルの置かれた行は常にウィンドウの - 中央に表示される (ファイル先頭または末尾にいるときと、長い行が折り返さ - れているとき以外)。 - 水平スクロールについてはオプション 'sidescrolloff' を参照。 - NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな - るので注意。 - - *'scrollopt'* *'sbo'* -'scrollopt' 'sbo' 文字列 (既定では "ver,jump") - グローバル - {Vi mが |+scrollbind| 機能付きでコンパイルされたときの - み有効} - {Vi にはない} - スクロール同調中ウィンドウ (訳注: オプション 'scrollbind' がオンのウィ - ンドウ) の動作を設定するキーワードの、コンマ区切りのリスト。'sbo' は - ScrollBindOptions の略である。 - 指定可能なキーワードは以下の通りである。 - ver 同調中ウィンドウの垂直スクロールを同調させる - hor 同調中ウィンドウの水平スクロールを同調させる - jump これは垂直スクロールにおいて、2個のウィンドウ間の - offset に適用される。この offset とは同調中ウィンドウ - に表示されているテキストの先頭行のずれのことである。 - ウィンドウ内を動き回るときは、別の同調中ウィンドウの表 - 示区域が、バッファの先頭より前またはバッファの末尾より - 後ろに達してしまうかもしれない。それでも offset は変更 - されず、カーソルが戻ってきたときは、同調中ウィンドウは - 可能ならば求められる位置にスクロールしようとする。 - カレントウィンドウを変更したときは、相対 offset を使っ - て2つのことが行われる。 - 1. 値に "jump" が含まれていないとき、新しくカレントウィ - ンドウになったウィンドウのスクロール位置により相対 - offset が調節される。別のウィンドウに戻ったときは、 - 新しい相対 offset が使われる。 - 2. 値に "jump" が含まれているとき、同じ相対オフセット - を保つために他のウィンドウもスクロールする。他のウィ - ンドウに戻ったときも、同じ相対 offset を使う。 - ("jump" についての訳注: 100行のファイル "short" と200行のファイル - "long" をウィンドウ分割で並べ、1行目を表示させたまま共に 'scrollbind' - をオンにする。"long" を開いているウィンドウで150行目に移動すると、 - "short" に150行目はないのだから、ウィンドウの同調が崩れる。具体的には、 - "short" の方だけ100行目を表示したままになる。しかしそのまま "long" の - 50行目に移動すると、何事もなかったかのように "short" のウィンドウも50 - 行目を表示する。しかし "long" の150 行目に移動した時点でカーソルを - "short" のウィンドウ (の100行目) に移すと、"jump" によって違いが出る。 - 1. では「"long" では150行目、"short" では100行目」という状態が新たな基 - 準となり、"short" のウィンドウで50行目に移ると、"long" のウィンドウは - とにかく50行バック、というわけで100行目を表示する。2. では「1行目同士 - を合わせる」という基準は変わらず、やはり100行目同士を合わせろ、という - わけでウィンドウを移って "short" の100行目に着いた瞬間に "long" のウィ - ンドウも100行目を表示する。話を簡単にするために始めは共に1行目を表示し - ているとしたが、始めがずれているとそれが基準となることに注意) - - |scroll-binding| も参照。 - 差分モードでは、たとえ "ver" が含まれていなくても常に垂直スクロール同 - 調をする。 - - *'sections'* *'sect'* -'sections' 'sect' 文字列 (既定では "SHNHH HUnhsh") - グローバル - Nroff (訳注: UNIXで使われる画面整形システム) で使われる、章を分けるた - めのマクロを指定する。値は2文字の組である (|object-motions| を参照)。 - 既定では、章は nroff マクロの ".SH", ".NH", ".H", ".HU", ".nh" および - ".sh" で始まることになる。 - - *'secure'* *'nosecure'* *E523* -'secure' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オンのとき、コマンド ":autocmd" やシェルコマンド、書き込みコマンドがカ - レントディレクトリ内のファイル ".vimrc" や ".exrc" では使用できなくな - り、マッピングコマンドも表示されるようになる。問題が起きることはないと - 分かっているときか、オプション 'exrc' がオフのときにのみこのオプション - をオフにすること。 - Unixでは、このオプションはファイル ".vimrc" または ".exrc" の所有者が - ユーザ自身でないときのみ使われる。これはユーザが "chown" を使えるシス - テムでは危険である。そのときにはユーザのファイル ~/.vimrc の末尾で - 'secure' をオンにしておいた方がよい。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'selection'* *'sel'* -'selection' 'sel' 文字列 (既定では "inclusive") - グローバル - {Vi にはない} - このオプションは、選択時の動作を設定する。これはVisualモードとSelect - モードでのみ使用される。 - 設定可能な値は以下の通り。 - 値 行末の後 末尾に操作 ~ - old X O - inclusive O O - exclusive O X - 「行末の後」というのは、カーソルを行末より1文字後ろに置けることを表す。 - 「末尾に操作」というのは、選択領域の末尾の文字が操作を受けることを表す。 - 例えば、選択領域の削除に "x" が使われたときなどに違いが出る。 - "exclusive" に設定していると、'virtualedit' が空のときノーマルモードか - ら選択を開始し、末尾から後方に選択すると行末の文字を含めることができな - くなる。 - - オプション 'selection' は、コマンド |:behave| によって設定される。 - - *'selectmode'* *'slm'* -'selectmode' 'slm' 文字列 (既定では "") - グローバル - {Vi にはない} - 値はキーワードのコンマ区切りのリストをである。キーワードは領域選択が開 - 始されたときのうち、どの場合でVisualモードでなくSelectモードを開始する - かを決定する。 - 指定可能なキーワードは以下の通りである。 - mouse マウス使用時 - key シフトキーと特別なキーの同時押しをしたとき - cmd コマンド "v", "V" または CTRL-V の使用時 - |Select-mode| を参照。 - オプション 'selectmode' はコマンド |:behave| で設定される。 - - *'sessionoptions'* *'ssop'* -'sessionoptions' 'ssop' 文字列 (既定では "blank,buffers,curdir,folds, - help,options,tabpages,winsize") - グローバル - {Vi にはない} - {Vi mが |+mksession| 機能付きでコンパイルされたときの - み有効} - コマンド |:mksession| の効果を変更する。値はキーワードのコンマ区切りの - リストである。キーワードは、ある項目の保存と復元を有効にする。 - キーワード 復元される項目 ~ - blank 空のウィンドウ - buffers ウィンドウに表示されたバッファだけでなく、隠れバッファ - と、リストに載っているだけで読み込まれていないバッファ - curdir カレントディレクトリ - folds 手動で作られた折り畳み、折り畳みの開閉の区別、折り畳み - 関連のローカルなオプション - globals 大文字で始まり、最低1個の小文字を含む名前のグローバル - 変数。文字列型と数値型の変数のみ保存される。 - help ヘルプウィンドウ - localoptions ウィンドウまたはバッファに対してローカルなオプションと - マッピング (ローカルなオプションのグローバルな値ではな - い) - options 全てのオプションとマッピング (ローカルなオプションのグ - ローバルな値も) - resize Vimのウィンドウのサイズ: 'lines' と 'columns' の値 - sesdir セッションファイルがおかれているディレクトリが、カレン - トディレクトリになる (ネットワーク越しに、異なったシス - テムからアクセスを受けるプロジェクトでは便利である) - slash ファイル名内の '\' がスラッシュに置換される - tabpages 全タブページ。これが含まれていないと、カレントタブペー - ジのみが復元される。そのため、タブページごとに別々のセッ - ションを保存することができる。 - unix WindowsやDOS上でも、Unix形式の end-of-line (1個の - <NL>) を使う - winpos Vimのウィンドウ全体の位置 - winsize ウィンドウサイズ - - "curdir" と "sesdir" の両方を含めないこと。 - "curdir" も "sesdir" も含まれていないときは、ファイル名は絶対パスで保 - 存される。 - "slash" と "unix" は、Windows上でセッションファイルをUnixと共有すると - きに便利である。Unix版のVimはdos形式のスクリプトを読み込めないが、 - Windows版のVimはunix形式のスクリプトを読み込めるからだ。 - - *'shell'* *'sh'* *E91* -'shell' 'sh' 文字列 (既定では $SHELL または "sh", - MS-DOSとWin32では: "command.com" または - "cmd.exe", OS/2では: "cmd") - グローバル - "!" や ":!" 等のコマンドで使うシェルの名前。この値を変えたときは、以下 - のオプションも調べること: 'shelltype', 'shellpipe', 'shellslash', - 'shellredir', 'shellquote', 'shellxquote', 'shellcmdflag' - コマンドには引数を与えることができる。例えば "csh -f" である。 - 値に空白や '\' を含める方法については、|option-backslash| を参照。環境 - 変数は展開される |:set_env|。 - シェルの名前が空白を含むときは、それを引用符で挟む必要があるだろう。例: > - :set shell=\"c:\program\ files\unix\sh.exe\"\ -f -< Note 引用符にそれぞれ付けられた '\' (コメントの開始を防ぐため) と空白 - にそれぞれ付けられた '\' (値の終わりと間違えないため) に注意。 - Note また "-f" は引用符の中に入っていないことにも注意。それはコマンド - 名の一部ではないからである。またVimはパスの区切りに使われている '\' を - 自動的に認識する。 - 32ビットのDOS (DJGPP) では、環境変数 $DJSYSFLAGS を設定することで外部 - コマンドの実行方法を変えられる。DJGPPのファイル libc.inf を参照。 - MS-Windowsでは、実行ファイルの名前が ".com" で終わるときは ".com" まで - 含めなければならない。つまりシェルを "command.com" や "4dos.com" に設 - 定すると正しく機能するが、"command" や "4dos" に設定すると、必ずしも全 - てのコマンドに対しては動作しなくなる (例えばフィルタコマンド)。 - 理由は不明だが、"4dos.com" を使ったときはカレントディレクトリが "C:\" - に変更される。これを防ぐには 'shell' を次のようにすること。 > - :set shell=command.com\ /c\ 4dos -< 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'shellcmdflag'* *'shcf'* -'shellcmdflag' 'shcf' 文字列 (既定では "-c", - MS-DOSとWin32で 'shell' に - "sh" が含まれないなら "/c") - グローバル - {Vi にはない} - "!" や ":!" 等のコマンドを実行するためにシェルに渡されるフラグ。例えば、 - "bash.exe -c ls" や "command.com /c dir" である。MS-DOS系のシステムで - は、ユーザが必ずこのオプションを設定しなくともよいように、既定値はオプ - ション 'shell' に従って設定される。OS/2では使われない (EMXは自分でこれ - を理解する)。値に空白や '\' を含める方法については、|option-backslash| - を参照。|dos-shell| も参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'shellpipe'* *'sp'* -'shellpipe' 'sp' 文字列 (既定では ">", "| tee", "|& tee" または - "2>&1| tee") - グローバル - {Vi にはない} - {Vi mが |+quickfix| 機能付きでコンパイルされたときのみ - 有効} - コマンド ":make" の出力をエラーファイルに導くために使われる文字列。 - |:make_makeprg|も参照。値に空白や '\' を含める方法については、 - |option-backslash| を参照。 - 必要であれば、一時ファイルの名前は "%s" で参照できる (値に "%s" が1個 - も含まれていなければ、一時ファイル名は自動的に追加される)。 - AmigaとMS-DOSでの既定値は ">" である。出力はファイルに直接保存され、ス - クリーンには表示されない。 - Unixでの既定値は "| tee" である。コンパイラからの標準出力がファイルに - 保存され、画面にも表示される。初期化の後にオプション 'shell' が "csh" - か "tcsh" だったときは、既定値は "|& tee" である。'shell' が "sh", - "ksh", "mksh", "pdksh", "zsh" または "bash" のときは、既定値は "2>&1| - tee" である。つまり標準エラー出力も含まれる。'shell' オプションは、使 - 用される前にパスが削除される (例えば "/bin/sh" なら "sh" が使われる)。 - このオプションの初期化は、ファイル ".vimrc" の読み込みと他の初期化の後 - に行われる。これは 'shell' がその間に設定されていたときは、'shellpipe' - を自動的に変更するためである。ただし 'shellpipe' がユーザ自らによって - 設定されていたときは、自動設定は行われない。 - 'shellpipe' が空のときは、":make" の出力はリダイレクトされない。この設 - 定は 'makeprg' のプログラムが自分で 'makeef' に書き込んでくれるときに - 便利である。パイプ処理はしたくないが 'makeef' を含みたいときには、 - 'shellpipe' を1個の空白に設定すること。空白の前には ":set sp=\ " のよ - うに '\' を置くことを忘れないこと。 - 将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代 - 遅れになるだろう (少なくともUnixでは)。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'shellquote'* *'shq'* -'shellquote' 'shq' 文字列 (既定では ""; MS-DOSとWin32で 'shell' に - "sh" が含まれるなら "\"") - グローバル - {Vi にはない} - "!" や ":!" 等のコマンドでコマンドをシェルに渡すときに、コマンドを囲む - 引用符(の列)。リダイレクトの指示は常に引用符の外側に置かれる。リダイレ - クトの指示を中に含めるには、オプション 'shellxquote' を参照。両方のオ - プションを設定するのは、おそらく良い方法ではない。 - 既定値は空である。MS-DOS系のシステムの、MKS Korn Shell や bash 等のサー - ドパーティ製のシェルに対してのみ便利である。それらのシェルでは引用符を - "\"" とするべきである。ユーザが必ずこのオプションを設定しなくともよい - ように、既定値は 'shell' に従って設定される。|dos-shell| を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'shellredir'* *'srr'* -'shellredir' 'srr' 文字列 (既定では ">", ">&" or ">%s 2>&1") - グローバル - {Vi にはない} - フィルタコマンドの出力を一時ファイルに導くために使われる文字列。|:!|も - 参照。値に空白や '\' を含める方法については、|option-backslash| を参照。 - 必要であれば、一時ファイルの名前は "%s" で参照できる (このオプションの - 値に "%s" が1個も含まれていなければ、一時ファイル名は自動的に追加され - る)。 - 既定値は ">" である。Unixでは、初期化の後にオプション 'shell' が - "csh", "tcsh" または "zsh" だったときは、既定値は ">&" になる。'shell' - が "sh", "ksh" または "bash" だったときは、既定値は ">%s 2>&1" になる。 - つまり標準エラー出力も含まれる。 - Win32では、Unixと同様のチェックがなされ、加えて値が "cmd" であるかどう - か調べられる。そのときは既定値は ">%s 2>&1" になる。また ".exe" 付きの - シェル名も探す。 - このオプションの初期化は、ファイル ".vimrc" の読み込みと他の初期化の後 - に行われる。これは 'shell' がその間に設定されていたときは、 - 'shellredir' を自動的に変更するためである。ただし 'shellredir' がユー - ザ自らによって設定されていたときは、自動設定は行われない。 - 将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代 - 遅れになるだろう (少なくともUnixでは)。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'shellslash'* *'ssl'* *'noshellslash'* *'nossl'* -'shellslash' 'ssl' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mのMSDOS, MS-Windows, OS/2版でのみ有効} - オンのときは、ファイル名の展開にスラッシュが使われる。これは - command.com や cmd.exe の代わりにUnix系のシェルを使うときに便利である。 - '\' も入力できるが、Vimによってスラッシュに変換される。 - Note このオプションをオンにしたりオフにしても、すでにVim内に読み込まれ - たファイル名には影響がないので、完全を期すためにはこのオプションはどの - ファイルを開くのよりも先に設定する必要があることに注意。この点は将来変 - 更になるかもしれない。 - 'shellslash' はパスの区切りとして '\' が使われるときだけ働く。これをテ - ストするには次のようにする: > - if exists('+shellslash') -< - *'shelltemp'* *'stmp'* *'noshelltemp'* *'nostmp'* -'shelltemp' 'stmp' 切替 (Vi の既定はオフ, Vim の既定はオン) - グローバル - {Vi にはない} - オンのときは、シェルコマンドに一時ファイルを使う。オフのときはパイプを - 使う。オフであってもパイプが使えない場合は一時ファイルを使う。 - 現在のところパイプは Unix と MS-Windows 2K 以降でのみサポートされてい - る。これを確認するには次のようにする: > - :if has("filterpipe") -< パイプを使うことの利点は、一時ファイルを他人に読み取られないことと、 - 'shell' のプログラムがリダイレクトをサポートしていなくてもよいことである。 - 一時ファイルを使うことの利点は、ファイルタイプとエンコーディングを判別 - できることである。 - 'shelltemp' がオフのときは自動コマンドイベント |FilterReadPre|, - |FilterReadPost|, |FilterWritePre|, |FilterWritePost| が発生しない。 - - *'shelltype'* *'st'* -'shelltype' 'st' 数値 (既定では 0) - グローバル - {Vi にはない} {Vi mのAmiga版のみ} - Amigaでは、このオプションはシェルを使うコマンドの実行方法に影響する。 - 0 または 1: 常にシェルを使う - 2 または 3: 行のフィルタ処理にのみシェルを使う - 4 または 5: コマンド ':sh' にのみシェルを使う - シェルを使わないときは、コマンドは直接実行される。 - - 0 または 2: "シェル名 'shellcmdflag' コマンド" で外部コマンドを実行 - 1 または 3: "シェル名 コマンド" で外部コマンドを実行 - - *'shellxquote'* *'sxq'* -'shellxquote' 'sxq' 文字列 (既定では ""; - Win32で 'shell' に "sh" が含まるなら: "\"" - Unixで system() を使っているなら: "\"") - グローバル - {Vi にはない} - "!" や ":!" 等のコマンドでコマンドをシェルに渡すときに、コマンドを囲む - 引用符(の列)。リダイレクトの指示もこの中に含む。リダイレクトの指示を含 - めないようにするには、オプション 'shellquote' を参照。両方のオプション - を設定するのは、おそらく良い方法ではない。 - 既定値は空である。Win32系のシステムの、MKS Korn Shell や bash 等のサー - ドパーティ製のシェルに対してのみ便利である。それらのシェルでは引用符を - "\"" とするべきである。ユーザが必ずこのオプションを設定しなくともよい - ように、既定値は 'shell' に従って設定される。 |dos-shell| を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'shiftround'* *'sr'* *'noshiftround'* *'nosr'* -'shiftround' 'sr' 切替 (既定ではオフ) - グローバル - {Vi にはない} - インデントをオプション 'shiftwidth' の値の倍数に丸める。コマンド ">" - と "<" に適用される。Insertモードでの CTRL-T と CTRL-D では、インデン - トは常に 'shiftwidth' の倍数に丸められる (これはVi互換の動作である)。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意すること。 - - *'shiftwidth'* *'sw'* -'shiftwidth' 'sw' 数値 (既定では 8) - バッファについてローカル - (自動) インデントの各段階に使われる空白の数。オプション 'cindent', コ - マンド |>>|, |<<| 等に使われる。 - (訳注: 'shiftwidth' は自動インデントや "<<", ">>" でずれる幅。 - 'softtabstop' はタブキーやバックスペースキーでカーソルが動く幅。 - 'tabstop' は画面上でタブ文字が占める幅) - - *'shortmess'* *'shm'* -'shortmess' 'shm' 文字列 (Vimの既定値: "filnxtToO", Viの既定値: "", - POSIX の既定値: "A") - グローバル - {Vi にはない} - このオプションは、コマンド CTRL-G 等によるファイル関連のメッセージで、 - 「継続」プロンプト |hit-enter| を避けるのに役立つ。またその他のメッセー - ジを避けるのにも役立つ。 - 値は以下のフラグのリストである。 - フラグ 効果 ~ - f "(file 3 of 5)" の代わりに "(3 of 5)" を表示。 - i "[最終行が不完全]" の代わりに "[noeol]" を表示。 - l "999 行, 888 文字" の代わりに "999L, 888C" を表示。 - m "[変更あり]" の代わりに "[+]" を表示。 - n "[新ファイル]" の代わりに "[新]" を表示。 - r "[読込専用]" の代わりに "[読専]" を表示。 - w 書き込みコマンドには "書込み" の代わりに "[w]" を、コマンド - ':w >> file' には "追加" の代わりに "[a]" を表示。 - x "[dosフォーマット]" の代わりに "[dos]", "[unixフォーマット]" - の代わりに "[unix]", "[マックフォーマット]" の代わりに - "[マック]" を表示。 - a 上記の省略を全て行う。 - - o ファイルの書き込み時のメッセージを、その後のファイルの読み込み - 時のメッセージで上書きする (":wn" を使うときやオプション - 'autowrite' がオンのときに便利である) - O ファイルの読み込み時のメッセージや Quickfix 関係のメッセージ - (例えば ":cn") がその前のメッセージを必ず上書きする。 - s 「下まで検索したので上に戻ります」と「上まで検索したので下に戻 - ります」というメッセージを表示しない。 - t ファイル間連のメッセージが長すぎてコマンドラインに収まらないと - きは、先頭を切り詰める。先頭には "<" が表示される。Exモードで - は無視される。 - T その他ののメッセージが長すぎてコマンドラインに収まらないときは、 - 中央を切り詰める。中央には "..." が表示される。Exモードでは無 - 視される。 - W ファイルの書き込み時に "書込み" や "[w]" を表示しない。 - A スワップファイルがすでにあることが発見されたときに「注意」メッ - セージを表示しない。 - I Vimの開始時に挨拶メッセージを表示しない |:intro|。 - - このオプションはバッファを変更するとき <Enter> を打ち込むのを避ける機 - 会を提供する。が、表示の余裕がある限り有益なメッセージを表示する。 - 'shm' が空のときと同じようにメッセージ全体を表示するには、コマンド - ":file!" を使うこと。 - 便利な値の例: - shm= メッセージの省略なし - shm=a メッセージを省略するが内容までは省略しない - shm=at メッセージを省略し、必要があれば内容も切りつめる - - NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 - 値に、オフのときはVimの既定値になるので注意。 - - *'shortname'* *'sn'* *'noshortname'* *'nosn'* -'shortname' 'sn' 切替 (既定ではオフ) - バッファについてローカル - {Vi とMS-DOS版のVimにはない} - ファイル名が8文字に3文字の拡張子を付けたものであると仮定する。ファイル - 名には複数のドット '.' は使えない。オンならば、拡張子 (".~" または - ".swp") を付けるときにはファイル名の中のドットは下線 '_' に置き換えら - れる。このオプションはMS-DOS版では無効である。なぜなら当然常にオンであ - るからだ。このオプションは、ファイルをMS-DOS互換のシステム (例えば - messydos や crossdos) 上で編集するときに便利である。Win32のGUI版を使っ - ているときは、このオプションは常に既定ではオンである (訳注: いや、オフ - だと思う)。 - - *'showbreak'* *'sbr'* *E595* -'showbreak' 'sbr' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+linebreak| 機能付きでコンパイルされたときの - み有効} - 折り返された行の先頭に表示する文字列。"> " や "+++ " に設定すると便利 - である: > - :set showbreak=>\ -< スペースの前にバックスラッシュをつけてエスケープしていることに注 - 意。次のようにするともっと簡単である: > - :let &showbreak = '+++ ' -< <Tab> 文字とコンマ以外の、printable な文字 (訳注: 文書先頭を参照) のみ - が指定できる (将来のヴァージョンでは、行末に表示される部分と行頭に表示 - される部分の区切りにコンマが使われるかもしれない)。 - この文字列は、オプション'highlight' のフラグ'@' に従って強調表示される。 - Note 'showbreak' の文字列の次にタブ文字が来たときは、表示方法が異なる - ので注意。 - 'showbreak' の文字列を行番号の間に表示したいときは、'cpoptions' にフラ - グ "n" を加えること。 - - *'showcmd'* *'sc'* *'noshowcmd'* *'nosc'* -'showcmd' 'sc' 切替 (Vimの既定値: オン、Unixでの既定値: オフ、 - Viの既定値: オフ) - グローバル - {Vi にはない} - {Vi mが |+cmdline_info| 機能付きでコンパイルされたとき - のみ有効} - コマンド (の一部) を画面の最下行に表示する。ユーザのターミナルの表示が - 遅いときにはオフにすること。 - Visualモードでは、選択領域のサイズが以下のように表示される。 - - 1行の中で選択しているときは、文字数を表示。 - 文字数とバイト数が違う場合はそれも表示される: 例えば "2-6" なら 2 文 - 字で 6 バイトという意味になる。 - - 2行以上にわたって選択しているときは、行数を表示。 - - 矩形選択のときは、画面上の文字数、つまり行数×列数を表示。 - NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 - 値に、オフのときはVimの既定値になるので注意。 - - *'showfulltag'* *'sft'* *'noshowfulltag'* *'nosft'* -'showfulltag' 'sft' 切替 (既定ではオフ) - グローバル - {Vi にはない} - Insertモードでタグファイルから単語補完をするとき (|ins-completion| を - 参照)、タグ名と整理された検索パターン (あれば) の両方をマッチする限り - 表示する。そのため、C言語の関数にマッチすれば、どのような引数を必要と - するかのテンプレートを見ることができる (コーディングスタイルが適当なも - のであれば)。 - Note: 'completeopt' に "longest" を含めている場合はこれを同時に使うこ - とはできない。検索パターンからの補完がタイプされたテキストにマッチしな - いことがあるからである。 - - *'showmatch'* *'sm'* *'noshowmatch'* *'nosm'* -'showmatch' 'sm' 切替 (既定ではオフ) - グローバル - 閉じ括弧が入力されたとき、対応する開き括弧にわずかの間ジャンプする。マッ - チした括弧が画面上に見えているときのみジャンプする。マッチを表示する時 - 間はオプション 'matchtime' で設定できる。 - マッチする閉じ括弧がないときは、ビープ音が鳴る (マッチが見えても見えな - くても)。このオプションは、'paste' がオンのときはオフになる。 - 'cpoptions' にフラグ 'm' が含まれていないときは、ジャンプ中に文字を入 - 力するとカーソルがすぐに元の場所に戻る。 - マッチの表示時のカーソルの形状や点滅方法については、'guicursor' の - "sm" の項目を参照。 - オプション 'matchpairs' によって対応する文字を指定することができる。対 - 応する括弧を探すときは 'rightleft' と 'revins' が適用される。 - カーソル下の括弧に対応する括弧を強調させる方法については matchparen プ - ラグインを参照 |pi_paren.txt|。 - Note: このオプションの省略形式の名前の使用には、保護者への説明が望まれ - るので注意(笑) - - *'showmode'* *'smd'* *'noshowmode'* *'nosmd'* -'showmode' 'smd' 切替 (Vimの既定値: オン、Viの既定値: オフ) - グローバル - Insertモード、ReplaceモードまたはVisualモードで最終行にメッセージを表 - 示する。このメッセージの強調表示の設定には、オプション 'highlight' の - フラグ 'M' を使うこと。 - |XIM| が使用可能なときは、メッセージに "XIM" が含まれる。しかしこれは - 実際に XIM が起動しているということではない。特に 'imactivatekey' が設 - 定されていないときは注意。 - NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 - 値に、オフのときはVimの既定値になるので注意。 - - *'showtabline'* *'stal'* -'showtabline' 'stal' 数値 (既定では 1) - グローバル - {Vi にはない} - {Vi mが |+windows| 機能付きでコンパイルされたときのみ - 利用可能} - このオプションは、いつタブページのラベルを表示するかを指定する。 - 0: 表示しない - 1: 2個以上のタブページがあるときのみ表示 - 2: 常に表示 - これは GUI 版と非 GUI 版両方に適用される。 - タブページについて詳しくは |tab-page| を参照。 - - *'sidescroll'* *'ss'* -'sidescroll' 'ss' 数値 (既定では 0) - グローバル - {Vi にはない} - 水平スクロールの刻み幅。オプション 'wrap' がオフでカーソルが画面外に出 - るときのみ使われる。 - 値が 0 のときはカーソルを画面の中央に置くようにスクロールする。 - 遅いターミナルを使っているときは、大きい値または 0 に設定すること。速 - いターミナルを使っているときは小さい値または 1 に設定すること。コマン - ド "zh" と "zl" には使われない。 - - *'sidescrolloff'* *'siso'* -'sidescrolloff' 'siso' 数値 (既定では 0) - グローバル - {Vi にはない} - オプション 'nowrap' がオフのとき、カーソルの右または左には、最低でもこ - の数だけの列が表示される。'sidescroll' を 1 以上に設定しているときにこ - のオプションも 1 以上にすると、水平スクロールをしている周辺のテキスト - が見えるようになる (行頭の近くにいるとき以外)。とても大きい値 (999等) - にすると、カーソルの置かれた列は常にウィンドウの中央に表示される (行頭 - の近くにいるとき以外)。 - NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな - るので注意。 - - 例: 次の例のように、このオプションを 'sidescroll' と 'listchars' と一 - 緒に設定し、カーソルを "extends" の文字の上に決して来ないようにし - てみる。 -> - :set nowrap sidescroll=1 listchars=extends:>,precedes:< - :set sidescrolloff=1 -< - - *'smartcase'* *'scs'* *'nosmartcase'* *'noscs'* -'smartcase' 'scs' 切替 (既定ではオフ) - グローバル - {Vi にはない} - 検索パターンが大文字を含んでいたらオプション 'ignorecase' を上書きする。 - 検索パターンがキーボードから打ち込まれたときに 'ignorecase' がオンの場 - 合にのみ使われる。適用されるコマンドは "/", "?", "n", "N", ":g", ":s" - である。"*", "#", "gd" やタグ検索などには適用されない。"*" や "#" の後 - で "/" を使い、検索パターンの履歴を呼び出して <Enter> を打ち込むことで、 - 'smartcase' の効果を適用することができる。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'smartindent'* *'si'* *'nosmartindent'* *'nosi'* -'smartindent' 'si' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - {Vi mが |+smartindent| 機能付きでコンパイルされたとき - のみ有効} - 新しい行を作ったときに高度な自動インデント smart autoindenting を行う。 - C言語系のプログラミング言語で有効だが、他のプログラミング言語にも使え - る。オプション 'cindent' でも似たことができ、より多くの場面で適切に動 - 作するが、'cindent' の方がこちらより厳密である。 |C-indenting| を参照。 - 'cindent' か 'indentexpr' がオンのときは 'si' をオンにしても効果はな - い。'indentexpr' を使うとさらに高度な動作が実現できる。 - 'smartindent' を使うときは、'autoindent' もオンに設定するべきである。 - インデントは、以下のときに自動的に挿入される。 - - '{' で終わる行で新しい行を作ったとき。 - - 'cinwords' 内のキーワードで始まる行の次に新しい行を作ったとき。 - - '}' で始まる行の上に新しい行を作ったとき (コマンド "O" のみ)。 - 新しい行の先頭に '}' を入力すると、そこのインデントは対応する '{' と等 - しくなる。 - 新しく作った行の最初の文字が '#' のとき、その行のインデントは取り除か - れ、'#' は最前列に置かれる。次の行のインデントは '#' の行の前と同じに - なる。こうしてほしくないなら、次のマッピングを使うこと。 - ":inoremap # X^H#" - ここで ^H は CTRL-V CTRL-H と打ち込むと入力される。 - コマンド ">>" を使ったとき、'#' で始まる行は右に移動しない。 - NOTE: 'smartindent' は、'compatible' がオンのときはオフに設定されるの - で注意。また'paste' がオンのときは高度なインデントは使えないことも注意。 - - *'smarttab'* *'sta'* *'nosmarttab'* *'nosta'* -'smarttab' 'sta' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オンのときは、行頭の余白内で <Tab> を打ち込むと、'shiftwidth' の数だけ - 空白が挿入される。他の場所では 'tabstop' または 'softtabstop' の数だけ - 空白が挿入される。<BS> を使うと行頭の 'shiftwidth' 分のスペースを削除 - する。 - オフのときは、<Tab> を打ち込むと常に 'tabstop' または 'softtabstop' の - 数だけ空白が挿入される。'shiftwidth' はテキストを右左にずらすときのみ - 使われる|shift-left-right|。 - 挿入される文字 (タブ文字または空白) は 'expandtab' によって変わる。 - |ins-expandtab| も参照。'expandtab' がオフのときは、 <Tab> を打ち込む - と空白の数が最小になる (訳注: できる限り空白をタブ文字で置き換える)。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'softtabstop'* *'sts'* -'softtabstop' 'sts' 数値 (既定では 0) - バッファについてローカル - {Vi にはない} - <Tab> の挿入や <BS> の使用等の編集操作をするときに、<Tab> が対応する空 - 白の数。(訳注: このオプションの長さの) <Tab> が挿入される「ように思え - る」が、実は空白と <Tab> の両方が混ざって使われている。このオプション - は、'tabstop' を標準の 8 に設定したまま、それが 'softtabstop' の値に設 - 定されているかのように編集作業をしたいときに便利である。しかしコマンド - "x" 等は実際の文字に対して動作する。 - このオプションが 0 になると、この機能は無効になる (訳注: 一番分かりや - すい違いは、<BS> を打ち込んだときにどんな文字も1文字ずつ消えていく)。 - このオプションは、'paste' がオンのときは 0 になる。 - |ins-expandtab| も参照。'expandtab' がオフのときは、<Tab> を打ち込むと - 空白の数が最小になる (訳注: できる限り空白をタブ文字で置き換える)。 - 'cpoptions' にフラグ 'L' を含めると、'list' がオンのとき、タブの扱い方 - が変わる。 - NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな - るので注意。 - (訳注: 'shiftwidth' は自動インデントやコマンド "<<", ">>" でずれる幅。 - 'softtabstop' は <Tab> や <BS> を打ち込んだときにカーソルが動く幅。 - 'tabstop' は画面上でタブ文字が占める幅の設定) - - *'spell'* *'nospell'* -'spell' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 - 用可能} - これがオンのときはスペルチェックが行われる。|spell| を参照。 - その言語は 'spelllang' で指定する。 - - *'spellcapcheck'* *'spc'* -'spellcapcheck' 'spc' 文字列 (既定では "[.?!]\_[\])'" \t]\+") - バッファについてローカル - {Vi にはない} - {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 - 用可能} - 文の末尾を見つけるのに使うパターン。その次の単語が大文字で始まるかどう - かチェックされる。大文字でなければ、その単語が SpellCap |hl-SpellCap| - で強調される (その単語がスペリングミスともみなされていなければ)。 - このチェックを行いたくなければ、このオプションを空にすること。 - 'spell' がオンのときだけ適用される。 - 特殊な文字について注意すること。スペースとバックスラッシュを含める方法 - については |option-backslash| を参照。 - 言語に応じて自動的にこのオプションをオンにする方法については - |set-spc-auto| を参照。 - - *'spellfile'* *'spf'* -'spellfile' 'spf' 文字列 (既定では空) - バッファについてローカル - {Vi にはない} - {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 - 用可能} - コマンド |zg|, |zw| で単語を追加するための単語リストファイルの名前。こ - のファイル名の末尾は ".{encoding}.add" でなければならない。ここにパス - を含める必要がある。そうしないと、カレントディレクトリにそのファイルが - 作られる。 - *E765* - このオプションの値はファイル名のコンマ区切りのリストであってもよい。 - コマンド |zg| と |zw| に与えるカウントによって、そのリストのどれにアク - セスするかを指定することができる。これによって、個人用の単語リストファ - イルとプロジェクト用の単語リストファイルを使い分けることができる。 - このオプションが空なのに単語が追加されたときは、Vim が自動的に値を設定 - する: 書き込み可能な最初の 'runtimepath' のディレクトリを使用する。そ - こに "spell" というディレクトリがなければ作成する。ファイル名には - 'spelllang' に現れる最初の言語名が使われ、地域名は無視される。 - そうして作られる ".spl" ファイルがスペルチェックに作られる。このファイ - ルは 'spelllang' に入っていなくてもよい。 - 普通は全ての地域に対して1つのファイルが使われるが、望むなら地域名を追 - 加することもできる。しかしその場合、'spellfile' がそのファイル名に設定 - されているときだけ使われる。'spelllang' のエントリに対しては地域名を省 - いたファイルだけが使われる。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'spelllang'* *'spl'* -'spelllang' 'spl' 文字列 (既定では "en") - バッファについてローカル - {Vi にはない} - {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 - 用可能} - コンマ区切りの単語リスト名のリスト。オプション 'spell' がオンのとき、 - これらの言語に対してスペルチェックが行われる。例: > - set spelllang=en_us,nl,medical -< こうすると US 英語、オランダ語、医学用語が認識される。認識されない単語 - は強調される。 - 単語リスト名はコンマやドットを含んではならない。2文字の言語名と詳細を - 区切るのにダッシュを使うことが推奨される。つまり、"en-rare" は頻度の低 - い(rare)英語となる。 - 地域名は最後に書いて、"_xx" という形でなければならない。ここで "xx" は - 小文字で2文字の地域名である。複数の地域名を列挙することもできる: - "en_us, en_ca" とすると US 英語とカナダ英語の両方に対応する。しかし - オーストラリア、ニュージーランド、英国に固有の単語には対応しない。 - *E757* - 特別な場合として、.spl ファイルの名前をそのまま指定することができる。 - その名前の最初の "_xx" は除去され、地域名として使われる (_xx はアン - ダースコア、2文字、そしてその後にアルファベットでないものが続くことを - 意味する)。これは主にテスト用のためである。正しいエンコーディングが使 - われているかどうか Vim はチェックしないので、ユーザが確認しなければな - らない。 - 'encoding' が設定されると、単語リストは再読み込みされる。そのため、2度 - 読み込むのを避けるため、'encoding' の後で 'spelllang' を設定するとよい。 - 関係するスペルファイルがどう探されるかについてはここで説明されている: - |spell-load|. - - プラグイン |spellfile.vim| が動作しているならば、'runtimepath'に.splファ - イルが見つからない言語名が指定されたとき、このプラグインによりユーザに - 対してファイルをダウンロードするかどうか問い合わせが行われる。 - - このオプションの設定が成功すると、'runtimepath' の"spell/LANG.vim" が - 読み込まれる。"LANG" は 'spelllang' の値の最初のコンマ、ドット、アンダー - スコアまでの部分である。 - |set-spc-auto| を参照。 - - *'spellsuggest'* *'sps'* -'spellsuggest' 'sps' 文字列 (既定では "best") - グローバル - {Vi にはない} - {Vi mが |+syntax| 機能付きでコンパイルされたときのみ利 - 用可能} - スペリング候補の方法を指定する。コマンド |z=| と関数 |spellsuggest()| - の両方に適用される。次の要素のコンマ区切りのリストになる: - - best 英語にもっともよく対応している内部メソッド。「高速に」 - 似た相異点を発見し、音の近さによるスコア判定を少しして - 順序を改善する。 - - double 2つの方法を用い、その結果を混合させる内部メソッド。第 - 一の方法は「高速」で、第二の方法は候補と修正対象の音が - どれだけ似ているかを計算する。これは言語が sound - folding を指定するときだけ機能する。時間がかかるかもし - れず、必ずしもよい結果を出すとは限らない。 - - fast 文字の挿入、削除、交換など、単純な相異だけを判定する内 - 部メソッド。単純なタイプミスに対してよく機能する。 - - {number} |z=| でリストされる候補の最大数。|spellsuggest()| には - 適用されない。候補の数は決して 'lines' の値 - 2 を超え - ない。 - - file:{filename} {filename} を読み込む。そのファイルにはスラッシュで - 区切られた2つの列が書いていなければならない。第1列に間 - 違った単語が書かれ、第2列に候補となる正しい単語が書か - れている。 - 例: - theribal/terrible ~ - 内部メソッドでは候補リストの上の方には出てこない、あり - がちなミスのためにこれを使う。スラッシュを含まない行は - 無視されるのでコメントとすることができる。 - このファイルは全ての言語に対して使われる。 - - expr:{expr} 式 {expr} を評価する。スペースによるトラブルを避けるた - め、関数を使うこと。|v:val| が間違ってつづられた単語を - 保持する。この式を評価した結果が候補とスコアからなるリ - ストのリストにならなければならない。 - 例: - [['the', 33], ['that', 44]] - 'verbose' をオンにして |z=| を使うと内部メソッドが使う - スコアを見ることができる。スコアは低いほどよい。 - 一時的に 'spellsuggest' から "expr:" の部分を除くなら - ば |spellsuggest()| を呼び出してもよい。 - オプション 'verbose' が非0になっていない限り、エラーは - 警告無しに無視される。 - - "best", "double", "fast" は、どれか1つだけ指定できる。他のものはどんな - 順序で何回指定してもよい。例: > - :set sps=file:~/.vim/sugg,best,expr:MySuggest() -< - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - - *'splitbelow'* *'sb'* *'nosplitbelow'* *'nosb'* -'splitbelow' 'sb' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+windows| 機能付きでコンパイルされたときのみ - 有効} - オンのとき、ウィンドウを横分割すると新しいウィンドウはカレントウィンド - ウの下に開かれる |:split|。 - - *'splitright'* *'spr'* *'nosplitright'* *'nospr'* -'splitright' 'spr' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み有効} - オンのとき、ウィンドウを縦分割すると新しいウィンドウはカレントウィンド - ウの右に開かれる |:vsplit|。 - - *'startofline'* *'sol'* *'nostartofline'* *'nosol'* -'startofline' 'sol' 切替 (既定ではオン) - グローバル - {Vi にはない} - オンのときは、以下のコマンドで移動すると、カーソルは行内の最初の非空白 - 文字に移動する。オフのときは、カーソルは (可能ならば) 同じ列に置かれる。 - 適用されるコマンド: CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", - "L", gg, 行単位で行うときの "d", "<<", ">>", カウントを指定したときの - "%"、バッファ変更コマンド (CTRL-^, :bnext, :bNext 等)、行番号のみのEx - コマンド (例えば ":25" や ":+")。 - バッファ変更コマンドの場合は、カーソルはそのバッファが最後に編集された - ときの列に置かれる。 - NOTE: このオプションは、オプション 'compatible' がオンのときはオンにな - るので注意。 - (訳注: 実際の動作はドキュメントとかなり違う。移動先が1列目の場合と余白 - 以外の最初の文字の場合が混在している。ただ、オンのときはカーソルが元い - た列を無視して先頭の「方に」移動するのは確か) - - *'statusline'* *'stl'* *E540* *E542* -'statusline' 'stl' 文字列 (既定では空) - グローバルまたは - ウィンドウについてローカル |global-local| - {Vi にはない} - {Vi mが |+statusline| 機能付きでコンパイルされたときの - み有効} - 値が空でないとき、このオプションはステータス行の表示内容を設定する。 - |status-line| も参照。 - - 値は、普通のテキストに挟まれた関数 printf 形式の項目からなる。項目の形 - 式は以下の通りである。 - %-0{minwid}.{maxwid}{item} - {item} 以外の欄は指定しなくてもよい。パーセント記号そのものを表示する - には "%%" とする。80個までの項目を指定できる。 *E541* - - このオプションの先頭が "%!" である場合は式とみなされ、評価した結果がオ - プションの値となる。例: > - :set statusline=%!MyStatusLine() -< この結果が %{} を含んでいると、それも評価される。 - - オプションを評価している間にエラーが発生すると、それ以降のエラーを避け - るためにオプションに空が設定される。そうしないと画面更新がループに陥っ - てしまう。 - - Note このオプションが設定されているとき (さらにオプション 'laststatus' - が 2 であるとき) は、'ruler' にはコマンド |CTRL-G| の出力を設定する効 - 果しかないことに注意。 - - 欄 意味 ~ - - その項目を左寄せする。minwid が項目の長さより大きい場合は、 - 既定では右寄せになる。 - 0 数値の頭に0を表示する。欄 '-' が優先する。 - minwid 項目の長さの最小値。余白の穴埋めは '-' と '0' で設定する。 - 50以下でなければならない。 - maxwid 項目の長さの最大値。文字列の項目の切り詰めでは '<' が左に - 表示される。数値の項目は maxwid-2 文字に切り詰められ、それ - に ">数" が続く。ここで "数" は表示されなかった文字数であ - り、指数表記に似ている。 - item 以下で説明するアルファベット1文字。 - - 以下は、指定可能なステータス行の item の説明である。"item" の2文字目は - その item の種類を表す。 - N 数値 - S 文字列 - F 以下で説明するフラグ - - 実際に表示されるものではない - - item 意味 ~ - f S バッファ内のファイルのパス(入力された通り、またはカレントディレ - クトリに対する相対パス) - F S バッファ内のファイルのフルパス。 - t S バッファ内のファイルのファイル名 (パスを除く)。 - m F 修正フラグ。表示されるのは "[+]"。'modifiable' がオフのときは - "[-]" - M F 修正フラグ。表示されるのは ",+" または ",-"。 - r F 読み込み専用フラグ。表示されるのは "[RO]"。 - R F 読み込み専用フラグ。表示されるのは ",RO"。 - h F ヘルプバッファフラグ。表示されるのは "[ヘルプ]"。 - H F ヘルプバッファフラグ。表示されるのは ",HLP"。 - w F プレビューウィンドウフラグ。表示されるのは "[プレビュー]"。 - W F プレビューウィンドウフラグ。表示されるのは ",PRV"。 - y F バッファ内のファイルのタイプ。例えば "[vim]"。'filetype' を参照。 - Y F バッファ内のファイルのタイプ。例えば ",VIM"。'filetype' を参照。 - {Vi mが |+autocmd| 機能付きでコンパイルされたときのみ有効} - q S "[Quickfix List]"、"[Location List]" または空文字。 - k S 他言語用マッピング |:lmap| が使われているとき、変数 - "b:keymap_name" または 'keymap' を "<keymap>" と表示する。 - n N バッファ番号。 - b N カーソル下の文字の文字コードの10進数表現。 - B N 同上、ただし16進数表現。 - o N カーソル下の文字がファイル内で何バイト目であるか。先頭では1。 - 覚え方: ファイル先頭からの隔たり (に1を足したもの) - {Vi mが |+byte_offset| 機能付きでコンパイルされたときのみ有効} - O N 同上、ただし16進数表現。 - N N 印刷時のページ番号 ('printheader' 内でのみ有効)。 - l N 何行目にカーソルがあるか。 - L N バッファ内の総行数。 - c N 何列目にカーソルがあるか。 - v N 画面上の何列目にカーソルがあるか。 - V N 画面上の何列目にカーソルがあるか。表示形式は -{num}。値が 'c' と - 等しければ表示されない。 - p N 現在行がファイル内の何%の位置にあるか (|CTRL-G| と同様) - P S 現在表示されているウィンドウ内のテキストが、ファイル内の何%の位 - 置にあるか。これは 'ruler' で説明されているものに似ている。値は - 常に3文字である (訳注: 日本語版では全角2文字になりうる)。 - a S 既定のタイトルと同様の引数ファイルリストを - "({current} of {max})" と表示する。ファイル引数の数が0または1の - ときは空。 - { NF '%{' と '}' の間の expression を評価し、結果に置き換える。 - 閉じ括弧 '}' の前には '%' がつかないことに注意。 - ( - 項目グループの開始。グループ内の項目全てに対する幅と寄せ方の設定 - に使える。どこかで %) で閉じられなければならない。 - ) - 項目グループの終了。欄 width は指定できない。 - T N 'tabline' 用: ラベル「タブページ N」の開始。最後のラベルの後に - %T を書くこと。この情報はマウスクリックに使われる。 - X N 'tabline' 用: ラベル「タブ N を閉じる」の開始。ラベルの後に %X - を書くこと。例: %3Xclose%X。%999X は「カレントタブを閉じる」を - 意味する。この情報はマウスクリックに使われる。 - < - 行が長すぎるときに切り詰める位置。既定では先頭。欄 width は指定 - できない。 - = - 左寄せ項目と右寄せ項目の区切り。欄 width は指定できない。 - # - 強調グループを設定する。この後に名前を書き、その後にまた # を書く。 - つまり、%#HLname# と書くと、強調グループ HLname になる。カレン - トウィンドウ以外のステータスラインに対しても同じ強調が施される。 - * - 使われる強調表示グループを User{N} に設定する。ここで {N} は欄 - minwid から取られる。例えば %1* と設定する。%* や %0* で通常の強 - 調表示を復元する。強調表示グループ User{N} と StatusLine の違い - は、非カレントウィンドウのステータス行の強調表示を設定するグルー - プの StatusLineNC に適用される。数 N は 1 以上 9 以下である。 - |hl-User1..9| を参照。 - - フラグを表示するとき、そのフラグがプレインテキストの直後にあるな - ら、その先頭にカンマがある場合は削除される。そうすることによって以下の - 例のようなフラグの使い方をしたとき、きれいに表示されるようになっている。 - - あるグループ内の全ての項目が空文字列 (つまり設定されていないフラグ) に - なり、かつそのグループに minwid が指定されていなかったときは、グループ - 全体が空になる。これにより、次のようなグループは、フラグがどれも設定さ - れていないときは全く表示されない。 > - :set statusline=...%(\ [%M%R%H]%)... -< - 気を付けてほしいのは、expression はステータス行が表示されるたびに評価 - されるということだ。あるバッファまたはウィンドウのステータス行が描画さ - れている最中は、一時的にそのバッファまたはウィンドウがカレントバッファ - またはカレントウィンドウに設定され、そこで expression が評価される。変 - 数 "actual_curbuf" は、本当のカレントバッファで関数 'bufnr()' が返す値 - に設定される。 - - オプション 'statusline' は |sandbox| の中でも評価することができる。 - |sandbox-option| を参照。 - - 'statusline' を評価している間にテキストを変更したり他のウィンドウにジャ - ンプすることは許されていない |textlock|。 - - ステータス行が望みの時点 (例えば expression 内で使われる変数の設定をし - た後) で更新されていないときは、オプションを値を変えずに設定し直すこと - で更新させることができる。例: > - :let &ro = &ro -< - 全て数字で返された結果は、表示用の数値と見なされる。それ以外の結果はフ - ラグ列と解釈され、上記の方法が適用される。 - - ステータス行で expression を使うときはエラーに気を付けること。Vimの描 - 画機構が使い物にならなくなるかもしれない!行き詰まってしまったならば、 - プロンプトを表示させるために ':' か 'Q' を打ち込む。そしてVimを終了し - たら "vim -u NONE" として (訳注: エラーを起こす設定を読み込まないよう - にして) ユーザのファイル .vimrc か何かを編集し、正常に戻す。 - - 例: - 'ruler' がオンのときの標準のステータス行に似せる > - :set statusline=%<%f%h%m%r%=%l,%c%V\ %P -< 同上、しかしカーソル下の文字の10/16進表現を表示する ("ga" のように) > - :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P -< カーソルが置かれているバイト数、カーソル下の文字のコード、修正フラグを - 赤で表示 > - :set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b' - :hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red -< 圧縮ファイルが読み込まれたとき、フラグ ,GZ を表示するには次のようにす - る。まず > - :set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h... -< として、さらに (訳注: 自動解凍を行う役割の) |:autocmd| 内で > - :let b:gzflag = 1 -< および > - :unlet b:gzflag -< を設定し、最後に次の関数を定義する。 > - :function VarExists(var, val) - : if exists(a:var) | return a:val | else | return '' | endif - :endfunction -< - *'suffixes'* *'su'* -'suffixes' 'su' 文字列 (既定では ".bak,~,.o,.h,.info,.swp,.obj") - グローバル - {Vi にはない} - この拡張子を持つファイルは、ワイルドカードに複数のファイルがマッチした - ときの優先度が低くなる。|suffixes| を参照。拡張子はコンマで区切って指 - 定する。コンマの後の空白は無視される。またドットは拡張子の始まりと見な - される。ドットやコンマが区切りと見なされないようにするには、前に '\' - を置くこと。値に空白や '\' を含める方法については、|option-backslash| - を参照。 - ファイルを完全に無視するには、オプション 'wildignore' を参照。 - リストに拡張子を追加するときにはコマンド |:set+=|、リストから拡張子を - 除くときには |:set-=| を使うのがよい。こうすると将来のヴァージョンで異 - なった既定値が使われるようになったときに、問題が起きるのを防げる。 - - *'suffixesadd'* *'sua'* -'suffixesadd' 'sua' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+file_in_path| 機能付きでコンパイルされたとき - のみ有効} - 値は拡張子のコンマ区切りのリスト。その拡張子は "gf", "[I" 等のコマンド - で検索されるファイルのものである。例: > - :set suffixesadd=.java -< - *'swapfile'* *'swf'* *'noswapfile'* *'noswf'* -'swapfile' 'swf' 切替 (既定ではオン) - バッファについてローカル - {Vi にはない} - バッファでスワップファイルを使用する。このオプションは、特定のバッファ - でスワップファイルを使いたくないときにはオフに設定できる。例えば root - ユーザさえもアクセスしてはならない機密情報等でオフにする。 - 注意: テキストは全てメモリ内に格納される。 - - この手段は大きいファイルに使わないこと。 - - クラッシュからの回復ができなくなる! - スワップファイルが作られるのはオプション 'updatecount' が非0 で、 - 'swapfile' がオンのときだけである。 - 'swapfile' がオフになったときは、カレントバッファのスワップファイルは - すぐに削除される。'swapfile' がオンで、'updatecount' が非0 のときは、 - スワップファイルはすぐに作られる。 - |swap-file| と 'swapsync' も参照。 - - このオプションは、'bufhidden' と 'buftype' と共に、特別な種類のバッファ - を指定するのに使われる。|special-buffers| を参照。 - - *'swapsync'* *'sws'* -'swapsync' 'sws' 文字列 (既定では "fsync") - グローバル - {Vi にはない} - 値が空でないときは、書き込みの後にディスク上のスワップファイルの内容が - 同調される。これにはいくらか時間がかかる。ビジー状態のUnixシステムでは - 特にそうだ。 - 値が空のときは、スワップファイルの一部はメモリ内のままで、ディスクに書 - き込まれないかもしれない。システムがクラッシュすると、仕事の成果が余計 - ひどく失われるかもしれない。 - Unixでは、Vimが求めなくとも時折システムが同調を行うので、これを空にす - ることの不利益は小さい。システムによってはスワップファイルは全く書き込 - まれない。Unixシステムでは、値を "sync" にすると既定の関数 fsync() で - はなく関数 sync() を呼び出すが、システムによってはそちらの方がよい。 - 実ファイルに対してはオプション 'fsync' が適用される。 - - *'switchbuf'* *'swb'* -'switchbuf' 'swb' 文字列 (既定では "") - グローバル - {Vi にはない} - バッファを切り替えるときの動作を調節する。 - 指定可能なキーワードは以下の通りである (コンマ区切りのリストにする)。 - useopen これが含まれたときは、指定されたバッファを開いているウィ - ンドウがあれば、そこにジャンプする。含まれないときは、 - 他のウィンドウを調べない。 - この設定は |quickfix| 関係のコマンドでエラーにジャンプ - するとき (":cc", ":cn", "cp" 等で) に影響する。また - ":sbuffer", ":sbnext", ":sbrewind" 等のバッファ関係の - ウィンドウ分割コマンド全てにも影響する。 - usetab "useopen"と同様だが、他のタブページで開かれているウィ - ンドウも考慮する。 - split これが含まれたときは、カレントウィンドウをバッファの読 - み込み前に分割する。含まれないときは、ウィンドウを分割 - せず、カレントウィンドウを使う。 - |quickfix| 関連の、エラーを表示するコマンドに影響する。 - newtab "split" と同様だが、新しいタブページを開く。"split" と - 両方指定された場合はこちらが優先される。 - - *'synmaxcol'* *'smc'* -'synmaxcol' 'smc' 数値 (既定では 3000) - バッファについてローカル - {Vi にはない} - {Vi mが|+syntax|機能付きでコンパイルされたときのみ有効} - 構文アイテムを検索する桁数の最大値。長い行において、この桁以降のテキス - トは強調されない。また構文の状態がクリアされるため、これ以下の行は正し - く強調されない可能性がある。 - これは長い行を持つXMLファイルの描画が非常に遅くなるのを避けるために役 - に立つ。 - ゼロにするとその制限がなくなる。 - - *'syntax'* *'syn'* -'syntax' 'syn' 文字列 (既定では "") - バッファについてローカル - {Vi にはない} - {Vi mが |+syntax| 機能付きでコンパイルされたときのみ有 - 効} - このオプションが設定されたとき、コマンド ":syntax off" で構文強調表示 - が無効にされていない限り、値の名前の構文定義が読み込まれる。 - このオプションは、その時点以外では使われている構文定義を常に反映する訳 - ではない (常に反映するのは変数 b:current_syntax)。 - このオプションは、構文が自動的に認識されないファイルのモードラインで使 - うのが最も便利である。例えば、IDLファイルでは次のようにする。 - /* vim: set syntax=idl : */ ~ - このオプションの値にドットを含めると、ファイルタイプの区切りとなる。 - 例: - /* vim: set syntax=c.doxygen : */ ~ - こうするとまず最初に"c"の構文を使い、次に"doxygen"の構文を使うようにな - る。2番目のファイルタイプは追加として読み込まれるように準備されていな - ければならない。そうでないとスキップされる。ドットは1つ以上現れてもよ - い。カレントファイルに対する構文強調表示を無効にするにはこうする。 > - :set syntax=OFF -< オプション 'filetype' に従って、構文強調表示を開始するにはこうする。 > - :set syntax=ON -< 'syntax' の設定時に実際起きることは、autocommand のイベント Syntax が、 - このオプションの値を引数にして発生するということだ。 - 'cpoptions' のフラグ 's' や 'S' に関わらず、このオプションの値は別のバッ - ファにはコピーされない。 - 通常のファイル名文字だけが使える。"/\*?[|<>"は不正である。 - - *'tabline'* *'tal'* -'tabline' 'tal' 文字列 (既定では"") - グローバル - {Vi にはない} - {Vi mが|+windows|機能付きでコンパイルされたときのみ有 - 効} - このオプションが空でないとき、Vimウィンドウの上にあるタブページ行の表 - 示内容を指定する。空のときは、既定のタブページ行が使われる。より詳しく - は|setting-tabline|を参照。 - - タブページ行はオプション'showtabline'で指定されたとき、またGUIのタブ行 - がないときだけ表示される。'guioptions'に'e'が入っていて、GUIがタブ行に - 対応しているときは代わりに'guitablabel'が使われる。Note: この二つのタ - ブページ行はかなり異なる。 - - このオプションの値は'statusline'と同じように評価される。|tabpagenr()|, - |tabpagewinnr()|, |tabpagebuflist()|を使えば表示されるテキストを把握す - ることができる。1番目のラベルには"%1T"、2番目のラベルには"%2T"など。閉 - じラベルにはアイテム"%X"を使う。 - - アクティブなタブページは1つだけである。他のタブページは表示されず、そ - の中のウィンドウにジャンプすることはできない。 - - *'tabpagemax'* *'tpm'* -'tabpagemax' 'tpm' 数値 (既定では 10) - グローバル - {Vi にはない} - {Vi mが|+windows|機能付きでコンパイルされたときのみ有 - 効} - コマンドライン引数|-p|や":tab all"で開かれるタブページの最大数。 - |tabpage| - - *'tabstop'* *'ts'* -'tabstop' 'ts' 数値 (既定では 8) - バッファについてローカル - ファイル内の <Tab> が対応する空白の数。コマンド |:retab| とオプション - 'softtabstop' も参照 (訳注: このオプション説明の最後も参照)。 - - Note: 'tabstop' を 8 以外の数に設定すると、多くの場合で (例えば印刷時) - ユーザのファイルが間違って表示されうるので注意。 - - Vimでは、タブの主な使い方には以下の4種類がある。 - 1. 'tabstop' を常に 8 に保ち、'softtabstop' と 'shiftwidth' を 4 (また - は 3 等の好きな値) に設定し、'expandtab' をオフにする。するとVimは - タブと空白の両方を使うが、<Tab> と <BS> を打ち込むと、タブが 4 (ま - たは 3) 文字ごとに現れているかのように表示される。 - 2. 'tabstop' と 'shiftwidth' を好きなように設定し、'expandtab' をオン - にする。この方法では常に空白が挿入される。'tabstop' が変更されても、 - 整形されたテキストはめちゃめちゃにならない。 - 3. 'tabstop' と 'shiftwidth' を好きなように設定し、再びファイルを編集 - するときにはモードライン |modeline| でこれらを設定する。ファイルの - 編集にVimを使うときのみ有効。 - 4. 常に 'tabstop' と 'shiftwidth' を等しく設定し、'expandtab' をオフに - する。すると (1回目のインデントのみだが) どのタブ幅でもうまく働く。 - こうするにしても、余白より後の最初の文字より後にタブ文字を挿入する - ときは、空白文字として挿入されるようにするとよいだろう。そうしない - と、'tabstop' が変更されたときに、整形されたコメントの形がおかしく - なる。 - (訳注: 'shiftwidth' は自動インデントやコマンド "<<", ">>" でずれる幅。 - 'softtabstop' は <Tab> や <BS> を打ち込んだときにカーソルが動く幅。 - 'tabstop' は画面上でタブ文字が占める幅の設定) - - *'tagbsearch'* *'tbs'* *'notagbsearch'* *'notbs'* -'tagbsearch' 'tbs' 切替 (既定ではオン) - グローバル - {Vi にはない} - タグの検索時 (例えばコマンド |:ta|) には、タグファイルの二分探索と線形 - 探索のどちらも可能である。二分探索をすると、タグの検索が「大幅に」速く - なる。しかし線形探索は、タグファイルが適切に整列されていないときには、 - より多くのタグを発見できる。 - Vimは普通タグファイルは整列されているものと想定するが、整列されていな - かったらそのことを表示する。オプション 'tagbsearch' をオフにする必要が - あるのはそのときだけである。 - - 'tagbsearch' がオンのときは、タグファイルではまず二分探索が使われる。 - 特定の状況下では、特定のファイルに代わりに線形探索を使ったり、全てのファ - イルに線形探索を使って再試行する場合がある。'tagbsearch' がオフのとき - は、線形探索のみが使われる。 - - タグファイルの先頭に、それが整列されていないことを示す行があったときは、 - そのファイルでは線形探索が使われる。 > - !_TAG_FILE_SORTED 0 /some comment/ -< ['0' の前後の余白は、単一の <Tab> でなければならない] - - 二分探索が使われて、'tags' で列挙されたどのファイルでもマッチが見つか - らず、かつ 'ignorecase' がオンであるか通常のタグ名の代わりにパターンが - 使われているときは、線形探索を使って再試行が行われる。 - 整列されていないタグファイル内のタグや、大文字と小文字の違いのあるマッ - チは、再試行でのみ見つかるだろう。 - - 次に、タグファイルが大文字・小文字を無視して整列されていることを示して - いるなら、'ignorecase'の場合には線形探索をしなくてすむ。この場合には - "!_TAG_FILE_SORTED"の行で値'2'を設定すること。ほとんどのUnixでは"sort" - にオプション-fをつけると大文字・小文字を無視してタグファイルを整列する - ことができる。そのコマンドは次のようになる: "sort -f -o tags tags"。 - "Exuberant ctags"バージョン5.x以降では(少なくとも5.5では)オプション - --sort=--fold-caseをつけるとこれと同様のことができる。こうするためには文 - 字を大文字に統一していなければならないことに注意。 - - 'tagbsearch' がオフのとき、完全なマッチがあるとタグの検索は遅くなるが、 - 完全なマッチが全くないと逆に速くなる。整列されていないタグファイル内の - タグは、'tagbsearch' がオフでないと見つからないかもしれない。 - タグファイルが整列されていなかったり、間違った順に整列されているとき - (ASCIIコード順でないとき --訳注: IBMの大型コンピュータではASCIIコード - でなく EBCDICコードが使われていた) は、'tagbsearch' をオフにするべきで - ある。またはタグファイル内に上記の行を含めなければならない。 - このオプションは、マッチするタグを全て見つけるようなコマンド (例えば、 - コマンドライン補完やコマンド ":help") には影響しない。 - {Vi: ヴァージョンによっては常に二分探索を使う} - - *'taglength'* *'tl'* -'taglength' 'tl' 数値 (既定では 0) - グローバル - 非0 のときは、タグ名のうち、前からこの値の文字数までが意味を持つ。 - - *'tagrelative'* *'tr'* *'notagrelative'* *'notr'* -'tagrelative' 'tr' 切替 (Vimの既定値: オン、Viの既定値: オフ) - グローバル - {Vi にはない} - オンのとき、タグファイルを別のディレクトリから使うと、そのタグファイル - でのタグ名は、タグファイルのあるディレクトリに対して相対的になる。 - NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 - 値に、オフのときはVimの既定値になるので注意。 - - *'tags'* *'tag'* *E433* -'tags' 'tag' 文字列 (既定では "./tags,tags", - |+emacs_tags| 機能付きでコンパイルされたとき - の既定値: "./tags,./TAGS,tags,TAGS") - グローバル/バッファについてローカル |global-local| - タグを使うコマンドで必要とするタグファイルの名前の、空白またはコンマ区 - 切りのリスト。ファイル名に空白やコンマを使うときは、'\' を前に置くこと - (値に空白や '\' を含める方法については、|option-backslash| を参照)。 - ファイル名が "./" で始まるときは、'.' はカレントファイルのパスに置き換 - えられる。ただしそれはオプション 'cpoptions' にフラグ 'd' が含まれてい - ないときのみである。環境変数は展開される |:set_env|。|tags-option| も - 参照。 - "*" や "**" などのワイルドカードを使い、ディレクトリツリーの下に向かっ - てタグファイルを検索できる。|file-searching| を参照。例えば、 - "/lib/**/tags" なら "/lib" 以下の "tags" という名前がすべて検索され - る。ファイル名自体にはワイルドカードを含めることはできない (そのまま使 - われる)。例えば "/lib/**/tags?" なら "tags?" という名前のファイルが検 - 索される。 {Vi mが |+path_extra|機能付きでコンパイルされたときのみ有 - 効} - 関数|tagfiles()|を使うと実際に使われるファイル名のリストを取得すること - ができる。 - Vimが |+emacs_tags| 機能付きでコンパイルされたときは、Emacs形式のタグ - ファイルも利用できる。形式は自動的に認識される。そのときの既定値は、大 - 文字と小文字の区別がないシステム (MS-Windows) 以外では - "./tags,./TAGS,tags,TAGS" となる。|emacs-tags| - リストにファイル名を追加するときにはコマンド |:set+=|、リストからファ - イル名を除くときにはコマンド |:set-=| を使うのがよい。こうすると将来の - ヴァージョンで異なった既定値が使われるようになったときに、問題が起きる - のを防げる。 - {Vi: 既定値は "tags /usr/lib/tags"} - - *'tagstack'* *'tgst'* *'notagstack'* *'notgst'* -'tagstack' 'tgst' 切替 (既定ではオン) - グローバル - {Vi のヴァージョンによってはこれがないものもある} - オンのときは、タグスタック |tagstack| が通常通りに使われる。オフのとき - は、引数付きのコマンド ":tag" または ":tselect" は、タグをタグスタック - にプッシュしない。 その後に引数無しの ":tag" や、":pop" 等のタグスタッ - クを使うコマンドを使うと、修正されていないタグスタックが使われるが、ア - クティブな項目へのポインタは変更される。 - このオプションをオンにするのは、":tag" をマッピング内で使っていて、タ - グスタックを変更すべきでないときに便利である。 - - *'term'* *E529* *E530* *E531* -'term' 文字列 (既定では $TERM、それが失敗したら - GUI版では: "builtin_gui" - Amigaでは: "amiga" - BeOSでは: "beos-ansi" - Macでは: "mac-ansi" - MiNTでは: "vt52" - MS-DOSでは: "pcterm" - OS/2では: "os2ansi" - Unixでは: "ansi" - VMSでは: "ansi" - Win32では: "win32") - グローバル - ターミナルの名前。ターミナル制御文字の選択に使われる。環境変数は展開さ - れる |:set_env|。 - 例: > - :set term=$TERM -< |termcap| を参照。 - - *'termbidi'* *'tbidi'* - *'notermbidi'* *'notbidi'* -'termbidi' 'tbidi' 切替 (既定ではオフ、"mlterm" のときはオン) - グローバル - {Vi にはない} - {Vi mが |+arabic| 機能付きでコンパイルされたときのみ有 - 効} - 端末がテキストの双方向性 (Bi-directionality) (Unicode による定義) をサ - ポートしていることを示す。端末はいくつかの言語 (例えばアラビア語) で必 - 要とされている変形文字 (shaping) も処理することが期待される。 - このオプションをオンなっている場合、'arabic' をオンに設定しても - 'rightleft' はオンにならず、そして 'arabicshape' の値は無視されます。 - Note: 'termbidi' を設定するとすぐに 'arabicshape' が無視されるようにな - りますが、'rightleft' は自動的には変更されません。 - このオプションは GUI を開始するとリセットされます。 - 詳細は |arabic.txt| を参照してください。 - - *'termencoding'* *'tenc'* -'termencoding' 'tenc' 文字列 (既定では ""; GTK+ 2 GUI では"utf-8"; - Macintosh GUI では"macroman") - グローバル - {Vi mが |+multi_byte| 機能付きでコンパイルされたときの - み有効} - {Vi にはない} - ターミナルで使われるエンコーディング名。このオプションは、どの文字エン - コーディングをキーボードが生成し、どの文字エンコーディングをディスプレ - イが理解できるかを指定する。GUI版ではキーボードにのみ適用される (ディ - スプレイにはオプション 'encoding' が使われる)。Macで'macatsui'がオフに - なっているときは例外で、'termencoding'は"macroman"になる。 - Win32 のコンソール版では、コンソールのコードページがANSIコードページで - ないなら場合、その値が既定値となる。 - *E617* - Note: これはGTK+ 2 GUIには適用されない。GUIの初期化に成功した後で強制 - 的に'termencoding'が"utf-8"に設定される。 - これを他の値に設定しようとしても失敗し、エラーメッセージが表示される。 - Win32 GUIでは'termencoding'は入力された文字に対しては適用されない。 - Win32では常にユニコード文字が渡されるからである。 - 空のときは、'encoding' で指定されたエンコーディングが使われる。これが - 通常の値である。 - 'termencoding' と 'encoding' の組み合わせが全て正しいわけではない。 - |encoding-table| を参照。 - このオプションの値は、内部変換または関数 iconv() でサポートされていな - ければならない。iconv() が値を扱えないときは、変換はなされず、非ASCII - 文字で問題が生じるだろう。 - 例: ユーザは euc-jp (日本語) に設定されたロケールで作業していて、UTF-8 - のファイルを編集したいとする。 > - :let &termencoding = &encoding - :set encoding=utf-8 -< ユーザのシステムがUTF-8のロケールをサポートしていないときは、ユーザが - このように設定する必要がある。 - - *'terse'* *'noterse'* -'terse' 切替 (既定ではオフ) - グローバル - オンのときは、オプション 'shortmess' にフラグ 's' を追加する (こうする - とファイルの端まで検索してしまったときのメッセージが表示されなくなる)。 - オフのときは、オプション 'shortmess' からフラグ 's' を取り除く。 - {Vi では多くのメッセージを切り詰める} - - *'textauto'* *'ta'* *'notextauto'* *'nota'* -'textauto' 'ta' 切替 (Vimの既定値: オン、Viの既定値: オフ) - グローバル - {Vi にはない} - このオプションは時代遅れである。オプション 'fileformats' を使うこと。 - 後方互換性のため、'textauto' がオンのときは、'fileformats' はシステム - の既定値に設定される。'textauto' がオフになったときは、'fileformats' - は空になる。 - NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 - 値に、オフのときはVimの既定値になるので注意。 - - *'textmode'* *'tx'* *'notextmode'* *'notx'* -'textmode' 'tx' 切替 (MS-DOS, Win32とOS/2では: 既定ではオン、 - 他のシステムでは: 既定ではオフ) - バッファについてローカル - {Vi にはない} - このオプションは時代遅れである。オプション 'fileformat' を使うこと。 - 後方互換性のため、'textmode' がオンのときは、'fileformats' は "dos" に - なる。'textmode' がオフのときは、'fileformats' は "unix" になる。 - - *'textwidth'* *'tw'* -'textwidth' 'tw' 数値 (既定では 0) - バッファについてローカル - {Vi にはない} - 入力されているテキストの最大幅。行がそれより長くなると、この幅を超えな - いように空白の後で改行される。値を 0 に設定すると無効になる。オプショ - ン 'textwidth' が 0 のときは、'wrapmargin' が使われる場合がある。 - 'formatoptions' と |ins-textwidth| を参照。 - 'formatexpr'が設定されている場合、その値を使って改行される。 - NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな - るので注意。 - - *'thesaurus'* *'tsr'* -'thesaurus' 'tsr' 文字列 (既定では "") - グローバル/バッファについてローカル |global-local| - {Vi にはない} - 同義語補完コマンド |i_CTRL-X_CTRL-T| で単語の検索に使われるファイルの - 名前の、コンマ区切りのリスト。そのファイルの各行には、似た意味の単語を - キーワードを構成しない文字で (空白がよい) 区切ったものが並ぶ。行長の最 - 大値は 510 バイトである。 - これに使われるファイルを得るには、 http://www.hyphenologist.co.uk で - wordlist FAQ を調べること。 - ファイル名にコンマを含めるときは、その前に '\' を置くこと。コンマの後 - の空白は無視されるが、それ以外では空白はそのままファイル名に含まれる。 - 値に空白や '\' を含める方法については、|option-backslash| を参照。 - リストにディレクトリを追加するときには |:set+=|、リストからディレクト - リを除くときには |:set-=| を使うのがよい。こうすると将来のヴァージョン - で異なった既定値が使われるようになったときに、問題が起きるのを防げる。 - 安全上の問題のため、このオプションにバッククォート '`' は使えない。 - - *'tildeop'* *'top'* *'notildeop'* *'notop'* -'tildeop' 'top' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オンのとき、ティルデコマンド "~" が operator のように使用できる。 - (訳注: 普通ティルデは、打ち込まれた時点でカーソル下のアルファベットの - 大文字/小文字を変換するが、このオプションがオンのときは、"d" 等のよう - に範囲を指定されるまで変換しない。このオプションがオフでも、 - "g~{motion}" なら範囲を指定できる。|case| を参照) - NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな - るので注意。 - - *'timeout'* *'to'* *'notimeout'* *'noto'* -'timeout' 'to' 切替 (既定ではオン) - グローバル - *'ttimeout'* *'nottimeout'* -'ttimeout' 切替 (既定ではオフ) - グローバル - {Vi にはない} - これら2個のオプションは共に、Vimがマッピングされたキー列やキーコードの - 一部を受け取ったときの動作を決定する。 - - 'timeout' 'ttimeout' 動作 ~ - オフ オフ タイムアウト (時間切れ) を設けない - オン オンまたはオフ マッピングとキーコードにタイムアウトあり - オフ オン キーコードにタイムアウトあり - - 両方オフのときは、完全なマッピングやキー列を受け取るか、受け取った文字 - 列に対応するマッピングやキー列はないと明らかになるまで、Vimは待つ。例 - えば "vl" をマッピングして 'v' を入力したとき、'v' の次に 'l' が来るか - どうか判断するには次の文字が入力されることが必要である。 - どちらかがオンのとき、Vimは次の文字が入力されるまで約1秒待つ。その後入 - 力された文字をそれぞれ単一の文字として解釈する。待ち時間はオプション - 'timeoutlen' で設定できる。 - 遅いターミナルや非常にビジーなシステムでは、時間切れを設けるとカーソル - キーの動作がおかしくなることがある。両方オフのときは、<Esc> で始まるキー - コードがあるとVimは <Esc> が入力された後ずっと待ち状態になる。ユーザは - <Esc> を2回打ち込まなければならない。キーコードに問題はないが、マッピ - ングされたキー列を1秒でタイムアウトにされたくなければ、'ttimeout' をオ - ン、'timeout' をオフにすること。 - - NOTE: オプション 'ttimeout' は、オプション 'compatible' がオンのときは - オフになるので注意。 - - - *'timeoutlen'* *'tm'* -'timeoutlen' 'tm' 数値 (既定では 1000) - グローバル - {Vi のヴァージョンによってはないものもある} - *'ttimeoutlen'* *'ttm'* -'ttimeoutlen' 'ttm' 数値 (既定では -1) - グローバル - {Vi にはない} - キーコードやマッピングされたキー列が完了するのを待つ時間 (ミリ秒単位)。 - すでにコマンドの一部がタイプされているとき、CTRL-\ CTRL-NとCTRL-\ - CTRL-Gにも適用される。 - 普通オプション 'timeoutlen' のみが使われ、'ttimeoutlen' は -1 に設定さ - れる。キーコードに対して異なった待ち時間を設定したいときは、 - 'ttimeoutlen' を非負の値に設定すること。 - - ttimeoutlen マッピング待ち キーコード待ち ~ - 負 'timeoutlen' 'timeoutlen' - 0以上 'timeoutlen' 'ttimeoutlen' - - タイムアウト (時間切れ) になるのは、'timeout' と 'ttimeout' でそう設定 - されているときのみである。便利な設定は次の通り。 > - :set timeout timeoutlen=3000 ttimeoutlen=100 -< (マッピングは3秒、キーコードは0.1秒で時間切れ) - - *'title'* *'notitle'* -'title' 切替 (既定ではオフ、 - タイトルが復元できるときにはオン) - グローバル - {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ有 - 効} - オンのとき、ウィンドウのタイトルがオプション 'titlestring' の値 (空で - なければ) になる。空の場合は次のようになる。 - filename [+=-] (path) - VIM - ここでの意味は以下の通り。 - filename 編集されているファイルの名前 - - ファイルが変更できない、つまり 'ma' がオフであ - ることを表す - + ファイルが変更を受けたことを表す - = ファイルが読み込み専用であることを表す - =+ ファイルが読み込み専用であるが変更を受けたこと - を表す - (path) 編集されているファイルのパス - - VIM サーバ名、変数 |v:servername| の値または "VIM" - ターミナルがウィンドウタイトルを設定できるもののときのみ有効である - (現在のところAmigaとWin32のコンソール版、全てのGUI版と 't_IS' が空でな - いターミナルのみ --- これらは既定では Unix xterm と iris-ansi であり、 - このときターミナルオプション 't_IS' は組み込み termcap から取られる)。 - *X11* - Vimが HAVE_X11 が定義された状態でコンパイルされた場合は、可能ならば元 - のタイトルが復元される。HAVE_X11 が定義されていたら、コマンド - ":version" の出力には "+X11" が含まれ、定義されていなかったら "-X11" - が含まれる。これはアイコン名 'icon' にも働く。 - しかしVimが引数 |-X| 付きで起動した場合は、タイトルは復元されない (GUI - 版を除く)。 - タイトルを復元できないときは、'titleold' がタイトルになる。その場合は - Vimの外でタイトルを復元したいと思うかもしれない。ネットワーク越しに - xterm を使っているときは、次のコマンドが使える。 - rsh マシン名 xterm -display $DISPLAY & - すると環境変数 $WINDOWID の値が受け継がれ、ウィンドウのタイトルは、Vim - の終了後に戻るべき状態に戻る。 - - *'titlelen'* -'titlelen' 数値 (既定では 85) - グローバル - {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ有 - 効} - ウィンドウタイトルが占める列の割合 (パーセント単位)。タイトルがこれよ - り長かったときは、パス名の後ろの部分のみが表示される。この切り詰めを示 - すためには、パス名の前に文字 '<' が表示される。 - 割合で指定しているため、タイトルが占める長さはウィンドウの幅に従って調 - 整できる。しかし完全にその通りになる訳ではない。それは実際に利用できる - 文字数は、使われているフォントやタイトルバー内の他のものによっても変わ - るからだ。値が 0 のときは、フルパスが使われる。フルパスを使わないとき - は 1 以上 30000 以下の数を指定する。 - このオプションはオプション 'titlestring' にも使われる。 - - *'titleold'* -'titleold' 文字列 (既定では "Vim を使ってくれてありがとう") - グローバル - {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ有 - 効} - このオプションの値は、Vimの終了時に元のウィンドウタイトルが復元できな - い場合のタイトルに使われる。オプション 'title' がオンであるか - 'titlestring' が空でないときのみ有効である。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - *'titlestring'* -'titlestring' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+title| 機能付きでコンパイルされたときのみ有 - 効} - 空でないとき、ウィンドウタイトルに使われる。オプション 'title' がオン - のときのみ有効である。 - ターミナルがウィンドウタイトルを設定できるもののときのみ有効である (現 - 在のところAmigaとWin32のコンソール版、全てのGUI版とターミナルオプショ - ン 't_IS' が空でないターミナルのみ)。 - Vimが HAVE_X11 が定義された状態でコンパイルされた場合は、可能ならば元 - のタイトルが復元される |X11|。 - 値に関数 printf 形式の '%' による書式指定が含まれているときは、 - 'statusline' と同じ方法で展開される。例: > - :auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p") - :set title titlestring=%<%F%=%l/%L-%P titlelen=70 -< 'titlelen' の値は、利用できる場所の中で項目を中央や右にそろえるために - 使われる。 - ファイル名を最初に表示したい人は、こう設定する。 > - :set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%) -< Note (ファイル名を除いた) パスを得るため、 "%{ }" と expression を使っ - ていることに注意。"%( %)" は、区切りの空白を必要なときだけ加えるために - 使われている。 - NOTE: 'titlestring' に特殊な文字 (例えば文字 <CR> や文字 <NL>) を使う - と、表示がおかしくなることがあるので注意。 - {Vi mが |+statusline| 機能付きでコンパイルされたときのみ有効} - - *'toolbar'* *'tb'* -'toolbar' 'tb' 文字列 (既定では "icons,tooltips") - グローバル - {Vi mの |+GUI_GTK|版, |+GUI_Athena|版, |+GUI_Motif|版, - |+GUI_Photon|版のみ} - ツールバーの様々な設定を行う。指定可能な値は以下の通り。 - icons ツールバーのボタンにアイコンが表示される。 - text ツールバーのボタンに名前が表示される。 - horiz ツールバーのボタンのアイコンとテキストが水平に - 配置される。|GTK+ 2 GUIでのみ利用可能| - tooltips ツールバーのボタンでツールティップが表示される。 - ツールティップとは、マウスカーソルがツールバーのボタン上にしばらく置か - れたときに飛び出す、ヘルプテキストのことである。 - - ツールバーにアイコンと名前を両方表示したいときは、このように設定する。 > - :set tb=icons,text -< MotifとAthenaでは両方同時には表示できない。両方求められると、アイコン - だけが表示される。 - - オプション 'toolbar' が空であるか、適切な値が一つもないときは、このオ - プションは無視される。ツールバーを無効にしたいときは、'guioptions' を - 設定する必要がある。例: > - :set guioptions-=T -< |gui-toolbar| も参照。 - - *'toolbariconsize'* *'tbis'* -'toolbariconsize' 'tbis' 文字列 (既定では "small") - グローバル - {Vi にはない} - {GTK+ 2 GUI版でのみ利用可能} - ツールバーのアイコンのサイズを制御する。設定可能な値は次の通り: - tiny 最も小さいツールバーのアイコンを使用する。 - small 小さいツールバーのアイコンを使用する(既定値)。 - medium 中程度のツールバーのアイコンを使用する。 - large 大きいツールバーのアイコンを使用する。 - 各種アイコンサイズのピクセル単位での正確な大きさは、使用しているテーマ - に依存する。共通の大きさはlarge=32x32、medium=24x24、small=20x20、 - tiny=16x16である。 - - 'toolbariconsize'が空のときは、ユーザの設定または現在使用しているテー - マによって決定されるグローバルなデフォルトサイズが使用される。 - - *'ttybuiltin'* *'tbi'* *'nottybuiltin'* *'notbi'* -'ttybuiltin' 'tbi' 切替 (既定ではオン) - グローバル - {Vi にはない} - オンのときは、外部の termcap の前に組み込みの termcap を探す。 - オフのときは、外部の termcap の後に組み込みの termcap を探す。 - このオプションが変更されたときは、変更を有効にするため、次にオプション - 'term' を設定する必要がある。例: > - :set notbi term=$TERM -< |termcap| も参照。 - 関連情報: このオプションは既定ではオンである。それは普通、組み込み - termcap のエントリの方が良いものだからだ (多くのシステムでおかしな - xterm エントリが含まれている...)。 - - *'ttyfast'* *'tf'* *'nottyfast'* *'notf'* -'ttyfast' 'tf' 切替 (既定ではオフ、 - 'term' が xterm, hpterm, sun-cmd, screen, - rxvt, dtterm, iris-ansi のときはオン、 - DOSのコンソール版でもオン) - グローバル - {Vi にはない} - 高速ターミナル接続を行う。再描画のとき、行挿入/削除コマンドを使う代わ - りに、より多くの文字が画面に送られる。複数のウィンドウが開かれて - いたり、ターミナルが部分スクロールをサポートしていないとき、再描画が滑 - らかになる。 - また折り返された行のそれぞれの行末で、文字の extra writing (訳注: 何の - ことだか分からない。どなたかご教授願います) を有効にする。これは xterm - 等のターミナルで、マウスを使ってコピーやペーストをするときに役立つ。 - (訳注: "tty" とは、昔のコンピュータに使われていたテレタイプ (TeleTYpe) - 端末 (コンソールみたいなもの) から来た言葉である) - - *'ttymouse'* *'ttym'* -'ttymouse' 'ttym' 文字列 (既定値は 'term' によって異なる) - グローバル - {Vi にはない} - {Vi mのUnix版とVMS版でのみ使用可能で、GUI版では無効。 - Vimが |+mouse| 機能付きでコンパイルされたときのみ有効} - マウスコードが、このオプションで指定したターミナル名に従って認識される。 - 現在のところ、以下のターミナル名を設定できる。 - *xterm-mouse* - xterm xterm 風にマウスを扱う。マウスが生成するコードは - "<Esc>[Mscr" である。ここで "scr" は次のような3バイト - のコードである。 - "s" = ボタンの状態 - "c" = 桁数足す 33 - "r" = 行数足す 33 - これは223桁までしか機能しないことに注意。解決策につい - ては"dec"を参照。 - xterm2 "xterm" と動作が似ているが、ドラッグ中もマウス位置を返 - すような xterm に対して働く。こちらの方がずっと動作が - 速く、正確である。これを使うには、ユーザの xterm が最 - 低でもパッチレベルが 88 で XFree 3.3.3 に対応していな - ければならない。Vimがこれを自動認識する方法については、 - 以下を参照。 - *netterm-mouse* - netterm NetTerm 風にマウスを扱う。マウスが生成するコードは - "<Esc>}r,c<CR>" である。ここで "r,c" は、それぞれ - 行数と列数を表す10進数である。 - *dec-mouse* - dec DEC terminal 風にマウスを扱う。マウスが生成するのは、 - "<Esc>[" で始まるかなり複雑なコードである。 - Xtermが"--enable-dec-locator"つきでconfigureされている - ならば、Xtermでもこれを利用できる。 - - *jsbterm-mouse* - jsbterm JSB term 風にマウスを扱う。 - *pterm-mouse* - pterm QNX pterm 風にマウスを扱う。 - - マウスを使用するには、コンパイル時に |+mouse_xterm|, |+mouse_dec|, - |+mouse_netterm| 等のどれかの機能を有効にしておかなければならない。 - 本当に認識されるのは "xterm(2)" のみである。NetTerm のマウスコードは、 - コンパイル時に有効にされていれば必ず認識される。DEC terminal のマウス - コードは、コンパイル時に有効にされ、かつオプション 'ttymouse' が - "xterm" でないときのみ認識される (xterm と DEC のマウスコードが競合す - るため)。 - このオプションが自動的に "xterm" に設定されるのは、'term' が "xterm" - で始まり、かつ 'ttymouse' がすでに "xterm" または "xterm2" でないとき - である。このオプションの主な使い方は、ターミナル名が "xterm" で始まら - ないが、そのターミナルが xterm 風のマウスコードを認識できるときに、値 - を "xterm" に設定する、というものである。 - "xterm2" に自動設定されるのは、xterm のヴァージョンが 95 以上であると - 報告されたときである。この設定は、機能 |+termresponse| がコンパイル時 - に有効になっており、かつターミナルオプション |t_RV| が xterm のヴァー - ジョンナンバーを求めるエスケープシーケンスに設定されていたときのみであ - る。そうでないときはユーザが "xterm2" と設定しなければならない。 - 'ttymouse' を "xterm2" に自動的に設定したくないときは、次のように - |t_RV| を空にすること。 > - :set t_RV= -< - *'ttyscroll'* *'tsl'* -'ttyscroll' 'tsl' 数値 (既定では 999) - グローバル - 画面をスクロールする行数の最大値。この行数以上スクロールするときは、ウィ - ンドウが再描画される。スクロールがとても遅いが再描画は遅くないようなター - ミナルでは、表示を高速化するため、このオプションを 3 等の小さい数にす - るとよい。 - - *'ttytype'* *'tty'* -'ttytype' 'tty' 文字列 (既定値は $TERM によって決まる) - グローバル - 上記のオプション 'term' の別名。 - - *'undodir'* *'udir'* -'undodir' 'udir' 文字列 (既定値は ".") - グローバル - {Vi にはない} - {Vi mが |+persistent_undo| 機能付きでコンパイルされた - ときのみ有効} - アンドゥファイル用のディレクトリをカンマ区切りのリストで指定します。 - 書式についての詳細は |'backupdir'| を参照。 - "." はファイルのディレクトリを意味します。アンドゥファイルの名前は例え - ば "file.txt" なら ".file.txt.un~" になります。 - 別ディレクトリに保存される場合は、アンドゥファイルの名前は対象のファイ - ルの絶対パスのパス区切り文字を "%" で置換した名前になります。 - 保存するとき: 最初に見つかった、存在するディレクトリが使われます。"." - は常に有効なので "." 以降に指定されたディレクトリは使用されません。 - 読み込むとき: アンドゥファイルを探すためにすべてのエントリが試行されま - す。最初に見つかったファイルが使用されます。見つかったファイルが読めな - かったりエラーが発生したりしても、それ以降のエントリは使用されません。 - |undo-persistence| 参照。 - - *'undofile'* *'udf'* -'undofile' 'udf' 切替 (既定ではオフ) - バッファについてローカル - {Vi にはない} - {Vi mが |+persistent_undo| 機能付きでコンパイルされた - ときのみ有効} - オンにすると、バッファをファイルに保存したときにアンドゥ履歴がアンドゥ - ファイルに自動的に保存され、そして、後でそのファイルを開いたときにアン - ドゥファイルからアンドゥ履歴が復元されます。 - アンドゥファイルが保存されるディレクトリは 'undodir' で設定します。 - この機能の詳細は |undo-persistence| を参照してください。 - 'undoreload' の処理の過程でファイルが読み込まれるときはアンドゥファイ - ルは読み込まれません。 - 警告: この機能は追加されたばかりです。自己責任で使ってください! - - *'undolevels'* *'ul'* -'undolevels' 'ul' 数値 (既定では 100、 - Unix, VMS, Win32, OS/2での既定値は 1000) - グローバル - {Vi にはない} - アンドゥ可能な変更の最大値。アンドゥをするための情報はメモリに蓄えられ - るため、大きい数を設定するとメモリの消費量も多くなる (にも関わらず、単 - 一の変更には無制限にメモリを利用できる)。 - Vi互換にするには、次のように 0 にすること。アンドゥは 1 回だけ可能で、 - もう 1 回 "u" を使うとアンドゥがアンドゥ (訳注: リドゥ) される。 > - set ul=0 -< しかしVi互換にするには、オプション 'cpoptions' にフラグ 'u' を追加して - もよい。こうするとコマンド CTRL-R でリドゥできる。 - |undo-two-ways| も参照。 - アンドゥを無効にするには、次のように負の値にすること。 > - set ul=-1 -< これは 1 回の変更でもメモリを使い果たしそうなときに役立つ。 - |clear-undo| も参照。 - - *'undoreload'* *'ur'* -'undoreload' 'ur' 数値 (既定は 10000) - グローバル - {Vi にはない} - リロードするときにアンドゥのためにバッファ全体を保存する。これは ":e!" - コマンドを実行したときや、バッファが Vim の外で変更されたためにそれを - リロードするときに使用されます。 |FileChangedShell| - 保存は、オプションの値が負数に設定されているか、行数が設定値より少ない - 場合にのみ実行されます。 - リロードのアンドゥを無効化するにはこのオプションをゼロに設定します。 - - リロードのためにアンドゥが保存されるときは、アンドゥファイルは読み込ま - れません。 - - Note: この機能によってバッファ全体がメモリに保持されます。メモリ不足が - 起こる場合はこのオプションに小さい値を設定してください。 - - *'updatecount'* *'uc'* -'updatecount' 'uc' 数値 (既定では 200) - グローバル - {Vi にはない} - この回数だけ文字を打ち込むと、スワップファイルがディスクに書き込まれる。 - 0 にすると、スワップファイルは全く作られない (復旧に関する章 - |crash-recovery| を参照)。Vimを引数 "-n" 付きで起動すると、オプション - 'updatecount' を 0 に設定できる。|startup| を参照。読み込み専用モード - で編集しているときは、このオプションは 10000 に初期化される。 - 'swapfile' により、スワップファイルをバッファごとに無効化できる。 - 'updatecount' が 0 から 非0 に変更されたときは、'swapfile' がオンになっ - ている全てのバッファで、スワップファイルが作られる。'updatecount' が 0 - になったときは、既存のスワップファイルは削除されない。 - 'swapsync' も参照。 - 'buftype' が "nofile" や "nowrite" であるようなバッファでは、このオプ - ションの意味はない。 - - *'updatetime'* *'ut'* -'updatetime' 'ut' 数値 (既定では 4000) - グローバル - {Vi にはない} - この時間の間 (ミリ秒単位) 入力がなければ、スワップファイルがディスクに - 書き込まれる (|crash-recovery| を参照)。また autocommand のイベント - |CursorHold| にも使われる。 - - *'verbose'* *'vbs'* -'verbose' 'vbs' 数値 (既定では 0) - グローバル - {Vi にはないが、Viのヴァージョンによっては切替型のオプ - ション verbose がある} - 値が 0 より大きいとき、Vimは実行中の動作に関するメッセージを表示する。 - 現在のところ、以下のメッセージが表示される。 - 1以上 ファイル viminfo が読み書きされたとき - 2以上 コマンド ":source" でファイルを読み込んだとき - 5以上 検索されたタグファイルとインクルードファイル全て - 8以上 autocommand のグループが実行されたファイル - 9以上 実行された autocommand 全て - 12以上 実行された関数全て - 13以上 例外が発生/捕捉/終了/破棄されたとき - 14以上 ":finally"節において保留されている全て - 15以上 実行された Ex コマンド全て (200 文字から後は切り捨て) - - このオプションは、引数 "-V" でも設定できる。|-V| を参照。 - このオプションは、コマンド |:verbose| でも設定できる。 - - 'verbosefile'が設定されている場合、verboseのメッセージは表示されない。 - - *'verbosefile'* *'vfile'* -'verbosefile' 'vfile' 文字列 (既定では "") - グローバル - {Vi にはない} - このオプションが空でないとき、全てのメッセージはこの名前のファイルに書 - き出される。ファイルが既に存在するときは、そこに追加される。 - ファイルへの書き出しはVimが終了したときか、または'verbosefile'が空に設 - 定されたとき終了する。書き込みはバッファされるので出力が欠けることがあ - る。 - 'verbosefile'を新しい値に設定すると、最初に空に設定したのと同じことに - なる。|:redir|との違いは、'verbosefile'が設定されているとき冗長なメッ - セージは画面に表示されないことである。 - - *'viewdir'* *'vdir'* -'viewdir' 'vdir' 文字列 (Amiga, MS-DOS, OS/2とWin32での既定値: - "$VIM/vimfiles/view", - Unixでの既定値: "~/.vim/view", - Macintoshでの既定値: "$VIM:vimfiles:view" - VMSでの既定値: "sys$login:vimfiles/view" - RiscOSでの既定値: "Choices:vimfiles/view") - グローバル - {Vi にはない} - {Vi mが |+mksession| 機能付きでコンパイルされたときの - み有効} - コマンド |:mkview| によるファイルを格納するディレクトリの名前。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'viewoptions'* *'vop'* -'viewoptions' 'vop' 文字列 (既定では "folds,options,cursor") - グローバル - {Vi にはない} - {Vi mが |+mksession| 機能付きでコンパイルされたときの - み有効} - コマンド |:mkview| の効果を変更する。値はキーワードのコンマ区切りのリ - ストである。キーワードは、ある項目の保存と復元を有効にする。 - キーワード 復元される項目 ~ - cursor ファイル/ウィンドウ内のカーソル位置 - folds 手動で作られた折り畳み、折り畳みの開閉の区別、折り畳み - 関連のローカルなオプション - options ウィンドウまたはバッファについてローカルなオプションと - マッピング (ローカルなオプションのグローバルな値は含め - ない) - slash ファイル名内の '\' がスラッシュに置換される - unix WindowsやDOS上でも、Unix形式の end-of-line (1個の - <NL>) を使う - - "slash" と "unix" は、Windows上でビューファイルをUnixと共有するときに - 便利である。Unix版のVimはdos形式のスクリプトを読み込めないが、Windows - 版のVimはunix形式のスクリプトを読み込めるからだ。 - - *'viminfo'* *'vi'* *E526* *E527* *E528* - -'viminfo' 'vi' 文字列 (Viの既定値は "", Vimの既定値は、 - MS-DOS, WindowsとOS/2では: '100,<50,s10,h,rA:,rB:, - Amigaでは: '100,<50,s10,h,rdf0:,rdf1:,rdf2: - 他のシステムでは: '100,<50,s10,h) - グローバル - {Vi にはない} - {Vi mが |+viminfo| 機能付きでコンパイルされたときの - み有効} - 値が空でないとき、viminfo ファイルが起動に先立って読み込まれ、また終了 - 時に書き出される (|viminfo-file| を参照)。値は指定部のコンマ区切りのリ - ストである。指定部には、効果を指定するフラグ1文字の次に、その値を指定 - する数または文字列を指定する。指定されなかったものについては、既定値が - 使われる。フラグとその動作の一覧は、以下の通りである。 - フラグ 動作 ~ - ! これが含まれると、アルファベットの大文字で始まり、小文字を含ま - ないグローバル変数を保存・復元する。つまり "KEEPTHIS" と - "K_L_M" は保存されるが、"KeepThis" と "_K_L_M" は保存されない。 - 入れ子になったリストと辞書は正しく復元されず、空文字列になる。 - " 各レジスタで保存される行数の最大値。これはフラグ'<'の古い表記 - である。この表記の不利点は、エスケープのために"を前に書かない - といけないことである。そうしないとコメントの開始と見なされてし - まう! - % これが含まれると、バッファリストを保存・復元する。Vimの起動時 - にファイル名が引数に含まれていると、バッファリストは復元されな - い。 Vimの起動時にファイル名が引数に含まれていないと、バッファ - リストが viminfo ファイルから復元される。ファイル名のないバッ - ファとヘルプ用バッファは、viminfo ファイルには書き込まれない。 - このフラグの後に続けて数値を書くと、保存されるバッファ数の最大 - 値を指定することができる。数値が書かれていない場合、全てのバッ - ファが保存される。 - ' マークが復元されるファイル履歴の最大値。オプション 'viminfo' - が空でないときは、常にこれを設定しなければならない。 - また、このオプションを設定するとジャンプリスト |jumplist|と - |changelist| も viminfo ファイルに蓄えられることになる。 - / 保存される検索パターンの履歴の最大値。非0 の値を指定すると、前 - 回の検索パターンと置換パターンも保存される。これが含まれないと - きは、'history' の値が使われる。 - : 保存されるコマンドライン履歴の最大値。これが含まれないときは、 - 'history' の値が使われる。 - < 各レジスタで保存される行数の最大値。0 にすると、レジスタは保存 - されなくなる。'"'はこのフラグの古い表記である。 - 下記のフラグ's'も参照: 's'はKbyte単位で最大値を指定する。 - @ 保存される input-line 履歴の最大値。これが含まれないときは、 - 'history' の値が使われる。 - c これが含まれると、viminfo ファイル内のテキストを、書き込まれた - ときのエンコーディングから現在のエンコーディングに変換する。 - |viminfo-encoding| (訳注: および 'encoding') を参照。 - f ファイルマークを保存するかどうか。0 を指定すると、ファイルマー - ク ('0 から '9, 'A から 'Z) は保存されない。これが含まれなかっ - たり、値が非0 のときは、みな保存される。 '0 は (終了時やコマン - ド ":wviminfo" の実行時の) カーソル位置の保存に使われる。 - h viminfo ファイルの読み込み時に、'hlsearch' を無効にする。含ま - れないときは、最後の検索コマンド以来、コマンド ":nohlsearch" - が使われたかどうかによる。 - n これでファイル viminfo の名前を指定する。名前は 'n' のすぐ後に - 続けて指定する。'viminfo' の最後に指定しなければならない!Vim - の開始時に引数 "-i" が指定されると、それで指定されたファイル名 - がここで指定されたものを上書きする。環境変数は、オプションの設 - 定時ではなく、ファイルの読み込み時に展開される。 - r リムーバブル・メディア (訳注: フロッピ、CD-ROM等の取り外せる記 - 憶装置。この中身は取り替えてしまえば全く変わるので、ファイル履 - 歴の意味がない) の指定。引数は文字列 (次の ',' まで) である。 - これは複数個指定できる。それぞれがマーク履歴の対象外になるパス - の先頭部を指定する。これはリムーバブル・メディアを避けるためで - ある。 MS-DOSでは "ra:,rb:", Amigaでは "rdf0:,rdf1:,rdf2:" と - するとよい。ここに一時ファイルを指定することもできる(Unixの例: - "r/tmp")。大文字と小文字の区別はない。それぞれの 'r' の引数の - 最大長は 50 文字である。 - s Kbyte単位でのフラグの最大値。0のときレジスタは保存されない。現 - 在のところこれはレジスタにのみ適用される。既定値の"s10"の状態 - では、10Kbyteを超えるテキストを持つレジスタは除外される。上記 - のフラグ'<'も参照: '<'は行数で制限値を指定する。 - - 例: > - :set viminfo='50,<1000,s100,:0,n~/vim/viminfo -< - '50 最近編集した 50 ファイル内のマークは保存される。 - <1000 レジスタの中身 (それぞれ 1000 行まで) は保存される。 - s100 100Kbyteを超えるテキストを持つレジスタは保存されない。 - :0 コマンドラインの履歴は保存されない。 - n~/vim/viminfo 使用するファイル名は "~/vim/viminfo" である。 - '/' がない '/' が指定されていないので、既定値が使われる。つまり全 - ての検索履歴や前回の検索パターン、置換パターンが保存さ - れる。 - '%' がない バッファリストは、保存も復元もされない。 - 'h' がない 'hlsearch' による強調表示は復元される。 - - 'viminfo'を空の値から他の値へ変更するとき、|:rviminfo|を使うと、そのファ - イルの中身を読み込むことができる。これは自動的には行われない。 - - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 - - *'virtualedit'* *'ve'* -'virtualedit' 've' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+virtualedit| 機能付きでコンパイルされたとき - のみ有効} - 値は、以下のキーワードのコンマ区切りのリストである。 - block Visual blockモードで仮想編集を有効にする。 - insert Insertモードで仮想編集を有効にする。 - all 全てのモードで仮想編集を有効にする。 - onemore 行末の1文字先までカーソルを移動できるようにする。 - 仮想編集とは、実際に文字がないところにもカーソルを置けるようにすること - である。つまりタブ文字の内部や行末より後ろにカーソルを移動できる。 - Visualモードで長方形を選択するときや、表を編集するときに便利である。 - (訳注: フリーカーソルモードとも呼ばれる) - "onemore"は同じではない。"onemore"は単にカーソルを行の最後の文字の直後 - まで移動できるようにするだけである。これによっていくつかのコマンドがよ - り一貫性を持つようになる。以前は、空行では常にカーソルは行末を越えてい - た。しかしこれはVi互換からはほど遠い。これを設定すると動かなくなるプラ - グインやVimスクリプトもあるかもしれない。例えば|l|でカーソルが最後の文 - 字の後に移動できるためである。よく注意して使うこと! - コマンド|$|はカーソルを行の最後の文字へ移動させる。最後の文字を越えは - しない。そのため、|$|によってカーソルが左へ移動することもありえる。 - "all"と"onemore"を同時に設定することは意味がないが、そのように設定して - も警告は出ない。 - - *'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep* -'visualbell' 'vb' 切替 (既定ではオフ) - グローバル - {Vi にはない} - ビープ音に、実際は音でなくビジュアルベル (訳注: 画面フラッシュ) を使う。 - ビジュアルベルに使われるターミナルコードは、ターミナルオプション - 't_vb' で指定される。音もフラッシュも使いたくないならば、次のようにす - ること (訳注: しかしエラーが分からなくなるという諸刃の剣)。 > - :set vb t_vb= -< Note: GUIが開始するとき、't_vb' は既定値に設定されることに注意。 - |gvimrc| ファイルで再設定する必要があるだろう。GUI 版では、't_vb' の既 - 定値は "<Esc>|f" であり、画面の色を 20 ミリ秒だけ反転させる。違った時 - 間を設定したいときは、 "<Esc>|40f" とすること。ここで 40 の所にはミリ - 秒単位で時間を設定する。 - Amigaではこのオプションは無効で、常に画面フラッシュが使われる。 - 'errorbells' も参照。 - - *'warn'* *'nowarn'* -'warn' 切替 (既定ではオン) - グローバル - バッファが変更される間にシェルコマンドが使われたら、警告メッセージを表 - 示する。 - - *'weirdinvert'* *'wiv'* *'noweirdinvert'* *'nowiv'* -'weirdinvert' 'wiv' 切替 (既定ではオフ) - グローバル - {Vi にはない} - このオプションは termcap オプション 't_xs' と同じ効果を持つ。これは - Vim version 4.x との後方互換性のためのものである。 - このオプションをオンにすると、't_xs' が非0 になる。またこのオプション - をオフにすると、't_xs' が 0 になる。GUI版では効果がない。 - - *'whichwrap'* *'ww'* -'whichwrap' 'ww' 文字列 (Vimの既定値: "b,s"、Viの既定値: "") - グローバル - {Vi にはない} - カーソルを左右させるキーのうち、ここで指定したものでは、カーソルが行頭 - /末にあるときに前/次行に移動できるようになる。以下のキーでこれを有効 - にするには、文字を連結すること (訳注: はて?以下の文字を値に加えろとい - うことか?)。 - フラグ キー モード ~ - b <BS> NormalとVisual - s <Space> NormalとVisual - h "h" NormalとVisual (非推奨) - l "l" NormalとVisual (非推奨) - < <Left> NormalとVisual - > <Right> NormalとVisual - ~ "~" Normal - [ <Left> InsertとReplace - ] <Right> InsertとReplace - 例: > - :set ww=<,>,[,] -< こうすると、カーソルキーでのみ行末/頭の移動ができる。 - 移動キーが削除オペレータや変更オペレータと共に使われたときは、<EOL> も - 文字に含まれる。このためカーソルが行末を通るときは、"3h" の動きと - "3dh" の動きは異なる。これは "x" と "X" にも当てはまる。それは、それら - のコマンドは "dl" と "dh" と同様に働くからだ。これを使うときは、バック - スペースでカーソル前の文字を削除できるようにするため、マッピング - ":map <BS> X" を使うとよい。 - 値に 'l' が含まれているとき、行末でオペレータの後にlを使うと、カーソル - が次行に移動しない。これによって"dl", "cl", "yl"などが普通に動作する。 - NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 - 値に、オフのときはVimの既定値になるので注意。 - - *'wildchar'* *'wc'* -'wildchar' 'wc' 数値 (Vimの既定値: <Tab>、Viの既定値: CTRL-E) - グローバル - {Vi にはない} - コマンドラインで、オプション 'wildmode' で指定したようにワイルドカード - を展開するために打ち込まなければならない文字。 - より詳しくは |cmdline-completion| を参照。 - その文字はマクロ内では認識されない。それには 'wildcharm' を参照。 - このオプションは数値オプションだが、次のように特殊キーも設定できる。 > - :set wc=<Esc> -< NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 - 値に、オフのときはVimの既定値になるので注意。 - - *'wildcharm'* *'wcm'* -'wildcharm' 'wcm' 数値 (既定では空 (0)) - グローバル - {Vi にはない} - このオプションはオプション 'wildchar' と全く同様に働くが、こちらはマク - ロ内でも認識される点が異なっている。|ex-edit-index| を探せば、このオプ - ションに適した「予備」コマンドラインキーが見つかるだろう。普通、ユーザ - が実際に 'wildcharm' で指定されたキーを打ち込むことはない。自動的に補 - 完モードを呼び出すマッピング内でのみ使うこと。例えば次のようにする。 > - :set wcm=<C-Z> - :cnoremap ss so $vim/sessions/*.vim<C-Z> -< こうすると ":ss" と打ち込んだ後でコマンド CTRL-P や CTRL-N が使える。 - - *'wildignore'* *'wig'* -'wildignore' 'wig' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが |+wildignore| 機能付きでコンパイルされたときの - み有効} - ファイルパターンのリスト。パターンのどれかにマッチしたファイルは、ファ - イル/ディレクトリ名の補完時に無視される。また、フラグを与えて無効化し - ない限り、|expand()|, |glob()|, |globpath()| の結果に影響する。 - パターンは |:autocmd| と同様のものである。|autocmd-patterns| を参照。 - オプション 'suffixes' も参照。 - 例: > - :set wildignore=*.o,*.obj -< リストにパターンを追加するときにはコマンド |:set+=|、リストからパター - ンを除くときにはコマンド |:set-=| を使うのがよい。こうすると将来のヴァー - ジョンで異なった既定値が使われるようになったときに、問題が起きるのを防 - げる。 - - - *'wildignorecase'* *'wic'* *'nowildignorecase'* *'nowic'* -'wildignorecase' 'wic' 切替 (既定ではオフ) - グローバル - {Vi にはない} - オンのとき、ファイル名やディレクトリを補完するときに大文字と小文字が無 - 視される。元からファイル名の大文字と小文字を無視しているシステムでは効 - 果は無い。ワイルドカードの展開にシェルが使用されるとき (特殊文字が含ま - れているとき) はこのオプションは適用されない。 - - - *'wildmenu'* *'wmnu'* *'nowildmenu'* *'nowmnu'* -'wildmenu' 'wmnu' 切替 (既定ではオフ) - グローバル - {Vi にはない} - {Vi mが |+wildmenu| 機能付きでコンパイルされたときのみ - 有効} - オンのとき、コマンドライン補完が拡張モードで行われる。オプション - 'wildchar' で指定されたキー (普通 <Tab>) を打ち込むと補完を開始し、コ - マンドラインのすぐ上に可能性のあるマッチが表示され、最初のマッチが強調 - 表示される (ステータス行があるときは、それを上書きする)。<Tab> や - CTRL-P /CTRL-N 等の前/次のマッチを表示するキーは、強調部分を適切なマッ - チに移動させる。 - 'wildmode' が有効なときは、"full" が指定されたところで "wildmenu" モー - ドが使われる。"longest" と "list" では "wildmenu" モードは開始されない。 - 1行に収め切れない程マッチがあるときは、(訳注: その後にマッチがあるなら) - 文字 ">" が右端に表示され、(訳注: その前にマッチがあるなら) 文字 "<" - が左端に表示される。ステータス行は必要に応じてスクロールする。 - "wildmenu" モードは、補完候補の選択に使われないキーが打ち込まれた時点 - で終了する。 - "wildmenu" が使われているとき、以下のキーは特別な働きを持つ。 - - <Left> <Right> - 前/次のマッチを選択 (CTRL-P/CTRL-N と同じ) - <Down> - ファイル/メニュー名補完時: サブディレクトリ/メニュー - に移動する。 - <CR> - メニュー補完時、カーソルがドットの直後にあるとき: サ - ブメニューに移動する。 - <Up> - ファイル/メニュー名補完時: 親ディレクトリ/メニュー - に移動する。 - - これにより、メニューがコンソールから扱える |console-menus|。 - - <Left> や <Right> キーで、別のマッチに移動するのではなく、カーソルを移 - 動させたいときは、次のようにする。 > - :cnoremap <Left> <Space><BS><Left> - :cnoremap <Right> <Space><BS><Right> -< - 現在のマッチの表示には、強調表示グループ "WildMenu" が使われる - |hl-WildMenu|。 - - *'wildmode'* *'wim'* -'wildmode' 'wim' 文字列 (Vimの既定値は "full") - グローバル - {Vi にはない} - オプション 'wildchar' で指定されたキーで開始する補完モード。値は、キー - ワードの4個までのコンマ区切りのリストである。それぞれのキーワードで、 - 連続して 'wildchar' を使ったときの動作を指定する。1個目のキーワードが - 'wildchar' を1回目に使ったときの動作を指定し、2個目のキーワードが2回目 - の動作を指定、等となる。 - 指定可能なキーワードは、以下の通りである。 - "" 最初のマッチのみを補完する。 - "full" 次のマッチを完全に補完する。最後のマッチの次には元の文 - 字列が使われ、その次は再び最初のマッチが補完される。 - "longest" 共通する最長の文字列までが補完される。それ以上長い文字 - 列を補完できないときは、次の候補に移る。 - "longest:full" "longest" と似ているが、'wildmenu' が有効ならばそれを - 開始する。 - "list" 複数のマッチがあるときは、全てのマッチを羅列する。 - "list:full" 複数のマッチがあるときは、全てのマッチを羅列し、最初の - マッチを補完する。 - "list:longest" 複数のマッチがあるときは、全てのマッチを羅列し、共通す - る最長の文字列までが補完される。 - マッチが1個しかないときは、どの場合でも完全に補完される。 - - 例: > - :set wildmode=full -< 最初のマッチ、次のマッチ...を完全に補完する (既定値) > - :set wildmode=longest,full -< 共通する最長の文字列を補完し、次からマッチを完全に補完する > - :set wildmode=list:full -< 全てのマッチを羅列し、そして最初のマッチを完全に補完する > - :set wildmode=list,full -< 補完せずに全てのマッチを羅列し、次からマッチを完全に補完する > - :set wildmode=longest,list -< 共通する最長の文字列を補完し、次から他の候補を羅列する - より詳しくは |cmdline-completion| を参照。 - - *'wildoptions'* *'wop'* -'wildoptions' 'wop' 文字列 (既定では "") - グローバル - {Vi にはない} - {Vi mが|+wildignore|機能付きでコンパイルされたときのみ - 有効} - コマンドライン補完の挙動を変える単語のリスト。 - 現在のところ1つの単語だけが設定できる: - tagfile CTRL-Dでマッチするタグを一覧表示するとき、タグの種類と - そのタグのファイル名が表示される。1行につき1つのマッチ - が表示される。よく使われるタグの種類は次の通り: - d #define マクロ - f 関数 - |cmdline-completion|も参照。 - - *'winaltkeys'* *'wak'* -'winaltkeys' 'wak' 文字列 (既定では "menu") - グローバル - {Vi にはない} - {Vi mのWin32版、Motif版、GTK版、Photon GUI版でのみ有効} - GUI版では、メニュー内で下線付きで表示されている文字とALTキーを組み合わ - せて使うことで、メニューの項目にアクセスできるものがある。これはマッピ - ングや特殊な文字の入力にALTキーを使うことと衝突する。このオプションは、 - そのときの動作を指定する。 - no ALTキーをメニューに使わない。ALTキーを使った組み合わせはマッピ - ングに使えるが、自動的にメニューの操作に使われることはない。こ - のときメニューの操作は、コマンド |:simalt| で可能である。 - yes ALTキーの扱いはウィンドウシステムに任される。ALTキーとのキーの - 組み合わせは、マッピングには使えない。 - menu メニューのショートカットキーになっている文字と組み合わせてALT - キーを使うとウィンドウシステムが扱うが、他のキーはマッピングに - 使える。 - オプション 'guioptions' からフラグ 'm' が取り除かれ、メニューが無効に - なっていると、ALT キーはメニューには全く使われない。 - このオプションは<F10>には適用されない; Win32版とGTK版では、マッピング - されていない限り<F10>を押すとメニューが選択される。 - - *'window'* *'wi'* -'window' 'wi' 数値 (既定では: 画面の高さ - 1) - グローバル - ウィンドウの高さ。Vimウィンドウの高さと混同しないこと。そちらには - 'lines'を使う。 - ウィンドウが1つだけで、このオプションの値が'lines' - 1 より小さいとき、 - |CTRL-F|と|CTRL-B|でスクロールする行数に影響する。'window' - 2 行(ただ - し最小値は1行)だけ画面がスクロールする。 - 'window'が'lines' - 1 に等しいとき、CTRL-FとCTRL-Bは折り返された行を考 - 慮したより賢い方法でスクロールする。 - Vimウィンドウをリサイズするとき、このオプションの値が1より小さいか - 'lines'以上ならば'lines' - 1 に設定される。 - {Vi はこのオプションによって表示する行の数も決定する} - - *'winheight'* *'wh'* *E591* -'winheight' 'wh' 数値 (既定では 1) - グローバル - {Vi にはない} - {Vi mが |+windows| 機能付きでコンパイルされたときのみ - 有効} - カレントウィンドウの行数の最小値。これは絶対的な最小値ではなく、余裕の - ないときには行数はこれよりも少なくなる。この指定より小さいウィンドウに - フォーカスが移動すると、他のウィンドウの行数を減らしてそのウィンドウを - 大きくする。 - 通常の編集時には 'winheight' を小さい値にしておくこと。 - 値を 999 にすると、常にカレントウィンドウが画面のほとんどを占め、ほか - のウィンドウは 'winminheight' の高さになる。 - (ただしこうすると":all"を使ったときウィンドウが2つしか作られないとい - う難点もある)。"vim -o 1 2 3 4" としたとき2個のウィンドウしか作られな - いのを避けるには、イベント |VimEnter| を使って、スタートアップが行われ - た後にこのオプションを設定すればよい: > - au VimEnter * set winheight=999 -< 最小値は1。 - カレントウィンドウの高さを変更するコマンドの後では、ウィンドウの高さは - 調整されない。 - 'winheight' はカレントウィンドウに適用される。他のウィンドウの高さの最 - 小値の設定には、'winminheight' を使うこと。 - - *'winfixheight'* *'wfh'* *'nowinfixheight'* *'nowfh'* -'winfixheight' 'wfh' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが|+windows|機能付きでコンパイルされたときのみ有 - 効} - 'equalalways'をオンにしてウィンドウを開閉したとき、ウィンドウの高さを - 保つ。|CTRL-W_=|に対しても同様。|preview-window|と|quickfix-window|に - 対してはデフォルトでオンになる。 - これをオンにしていても、利用できる高さが不足している場合には高さが変わ - る。 - - *'winfixwidth'* *'wfw'* *'nowinfixwidth'* *'nowfw'* -'winfixwidth' 'wfw' 切替 (既定ではオフ) - ウィンドウについてローカル - {Vi にはない} - {Vi mが|+windows|機能付きでコンパイルされたときのみ利 - 用可能} - 'equalalways'がオンになっていてウィンドウを開閉したとき、ウィンドウの - 幅を保つ。|CTRL-W_=|に対しても同様。 - これをオンにしていても、利用できる幅が不足している場合には幅が変わる。 - - *'winminheight'* *'wmh'* -'winminheight' 'wmh' 数値 (既定では 1) - グローバル - {Vi にはない} - {Vi mが |+windows| 機能付きでコンパイルされたときのみ - 有効} - カレントウィンドウではないウィンドウの高さの最小値。これは絶対的な最小 - 値であり、ウィンドウは決してこれより低くはならない。 - 0 に設定すると、ウィンドウは必要に応じて高さゼロに「潰される」 (つまり、 - ステータス行のみになる)。ウィンドウがアクティブになると、高さは最低 1 - 行にはなる (カーソルの居場所が必要なため)。 - カレントウィンドウの高さの最小値の設定には、'winheight' を使うこと。 - このオプションの効果があるのは、ウィンドウを小さくするときだけである。 - 大きな値を使わないこと。そうするとウィンドウを幾つも開いたときにエラー - になる。値は 0 から 3 までが適当である。 - - *'winminwidth'* *'wmw'* -'winminwidth' 'wmw' 数値 (既定では 1) - グローバル - {Vi にはない} - {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み有効} - カレントウィンドウではないウィンドウの幅の最小値。これは絶対的な最小値 - であり、ウィンドウは決してこれより狭くはならない。 - 0 に設定すると、ウィンドウは必要に応じて幅ゼロに「潰される」 (つまり、 - 垂直分割の区切りのみになる)。ウィンドウがアクティブになると、幅は最低 - 1 列にはなる (カーソルの居場所が必要なため)。 - カレントウィンドウの幅の最小値の設定には、'winwidth' を使うこと。 - このオプションの効果があるのは、ウィンドウを小さくするときだけである。 - 大きな値を使わないこと。そうするとウィンドウを幾つも開いたときにエラー - になる。値は 0 から 12 までが適当である。 - - *'winwidth'* *'wiw'* *E592* -'winwidth' 'wiw' 数値 (既定では 20) - グローバル - {Vi にはない} - {Vi mが |+vertsplit| 機能付きでコンパイルされたときの - み有効} - カレントウィンドウの列数の最小値。これは絶対的な最小値ではなく、余裕の - ないときには列数はこれよりも少なくなる。カレントウィンドウの列数が指定 - したものより少ないときは、他のウィンドウの列数を減らしてそれを増やす。 - カレントウィンドウが常に画面を埋めるようにするには、999 に設定すること。 - 普通の編集時には小さい値に設定すること。 - カレントウィンドウの幅を変更するコマンドの後では、ウィンドウの幅は調整 - されない。 - 'winwidth' はカレントウィンドウに適用される。他のウィンドウの幅の最小 - 値の設定には、'winminwidth' を使うこと。 - - *'wrap'* *'nowrap'* -'wrap' 切替 (既定ではオン) - ウィンドウについてローカル - {Vi にはない} - このオプションは、テキストの表示方法を変える。これはバッファ内のテキス - トには変更を与えない。それについてはオプション 'textwidth' を参照。 - オンのときは、ウィンドウの幅より長い行は折り返され、次の行に続けて表示 - される。オフのときは、折り返しは行われず、長い行は一部のみが表示される。 - カーソルが表示されていない部分に移動すると、画面は水平スクロールする。 - 行の分割は、必要であれば単語の中ででも行われる。折り返しを単語の境界で - 行うには、'linebreak' を参照。 - 水平スクロールをもっと便利にするには、次のようにしてみるとよい。 > - :set sidescroll=5 - :set listchars+=precedes:<,extends:> -< 'sidescroll'、'listchars' や |wrap-off| を参照。 - オプション 'diff' がオンの場合、モードライン |modeline| からこのオプ - ションを設定することはできない。 - - *'wrapmargin'* *'wm'* -'wrapmargin' 'wm' 数値 (既定では 0) - バッファについてローカル - ウィンドウの右端からこの文字数だけ離れたところで折り返しが始まる。この - 境界を超えてテキストを入力すると、 <EOL> が挿入され、挿入は次行に続く。 - 'number'や'foldcolumn'など幅をとるオプションを使用していると、テキスト - の幅がこの値より少なくなる。これはVi互換の動作である。 - オプション 'textwidth' が非0 のときは、このオプションは使われない。 - 'formatoptions' と |ins-textwidth| も参照。 {Vi: 少し不便な、違った動 - 作をする} - - *'wrapscan'* *'ws'* *'nowrapscan'* *'nows'* -'wrapscan' 'ws' 切替 (既定ではオン) *E384* *E385* - グローバル - 検索がファイル末尾まで進んだら、ファイル先頭から再び検索する。スペリン - グミスを検索する|]s|と|[s|にも適用される。 - - *'write'* *'nowrite'* -'write' 切替 (既定ではオン) - グローバル - {Vi にはない} - ファイルの書き込みを有効にする。オフのときは、書き込みができない。読込 - 専用モードに使える。ただしファイルの編集は可能である。コマンドライン引 - 数 |-m| や |-M| を使ってオフに設定できる。テキストをフィルタにかけるこ - とも可能であり、一時ファイルの書き込みも可能である。 - - *'writeany'* *'wa'* *'nowriteany'* *'nowa'* -'writeany' 'wa' 切替 (既定ではオフ) - グローバル - いかなるファイルも "!" なしに書き込みができる。 - - *'writebackup'* *'wb'* *'nowritebackup'* *'nowb'* -'writebackup' 'wb' 切替 (|+writebackup| 機能付きでコンパイルされたなら - 既定値はオン、そうでないなら既定値はオフ) - グローバル - {Vi にはない} - ファイルの上書きの前にバックアップを作る。オプション 'backup' がオンで - ない限り、バックアップは上書きに成功した後削除される。ユーザのファイル - システムがほとんど一杯ならばこのオプションをオフにすること。他の説明は - |backup-table| を参照。 - 'backupskip' のパターンがマッチしたら、バックアップは作られない。 - NOTE: このオプションは、オプション 'compatible' がオンのときは既定値に - なるので注意。 - - *'writedelay'* *'wd'* -'writedelay' 'wd' 数値 (既定では 0) - グローバル - {Vi にはない} - 打ち込まれた文字が画面に送られるまでの遅延時間を、1万分の1秒単位 - で指定する。非0 のときは、文字は画面に一つ一つ送られる。MS-DOSの - pcterm では動作しない。これはデバッグ用のオプションである。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_390.jax b/runtime.old/doc/os_390.jax deleted file mode 100644 index d828414fe..000000000 --- a/runtime.old/doc/os_390.jax +++ /dev/null @@ -1,134 +0,0 @@ -*os_390.txt* For Vim バージョン 7.3. Last change: 2010 May 30 - - - VIMリファレンスマニュアル by Ralf Schandl - - *zOS* *z/OS* *OS390* *os390* *MVS* -このファイルには z/OS Unix 上の Vim についての事項が書かれている。 - -1. ASCII/EBCDIC 依存のスクリプト |zOS-has-ebcdic| -2. Putty と色 |zOS-PuTTY| -3. Motif の問題 |zOS-Motif| -4. バグ |zOS-Bugs| -5. 制限事項 |zOS-limitations| -6. z/OS UNIX 上のオープンソース |zOS-open-source| - -貢献者: ~ -z/OS Unix への移植は Ralf Schandl <schandl@de.ibm.com> によって後述の Redbook -のために行なわれた。 - -以下の方々からパッチやバグレポートを戴いた: - - David Moore - Anthony Giorgio - and others - -============================================================================== -1. ASCII/EBCDIC に依存のスクリプト *OS390-has-ebcdic* *zOS-has-ebcdic* - -Vim スクリプト用に "ebcdic" 機能が追加された。ASCII に依存したスクリプトは、以 -下のようにすることで修正可能である: -> - if has("ebcdic") - let space = 64 - else - let space = 32 - endif -< - -============================================================================== -2. Putty と色 *OS390-PuTTY* *zOS-PuTTY* - -Putty を使って z/OS に接続したときに、構文強調表示やスクリーンの表示が乱れるよ -うな問題が発生した場合は、次の手順を試してみてください: - -- Putty を "vt220" 端末として設定する (Connection->Data) -- 次の三行を vimrc に追加する: - -> - set t_AB=[4%p1%dm - set t_AF=[3%p1%dm - set t_CO=8 -< - -Note:  は一文字で、<C-V><Esc> を使って入力できます。 - -============================================================================== -3. Motifの問題 *OS390-Motif* *zOS-Motif* - -Note: Vim 6.* で確認。その後は未テスト。 - -Motif ライブラリの z/OS への移植において、プルダウンメニューのアクセラレータ文 -字を EBCDIC から ASCII への変換することが忘れられているように思える。 -手動で変換するように試してみたが、メニューを開くところ (ファイルメニューを開く - <Alt-F>) までしか働かず、メニュー項目を選択すること (ファイルブラウザを開く - <Alt-F>O) はできない。 - -まだ解決法が見つかっていない。 - -============================================================================== -4. バグ *OS390-bugs* *zOS-Bugs* - -- ビジュアルブロックモードで長大なテキストを選択すると常にハングする。これはメ - モリ破壊による可能性がある。ターミナルと GUI 版両方で起きる。 - -============================================================================== -5. 制限事項 *OS390-limitations* *zOS-limitations* - -- タグファイルには二分検索を使っていない - /bin/sort はデフォルトで ASCII の値を使って並べ替えを行なう。このプログラム - は tags を並べ替えるのに ctag により通常使われている。いつかはそれを正しく扱 - える ctags がリリースされるかもしれないが、いつになるかはわからない。もしか - したら 永遠にリリースされないかもしれないし… - -- 著者のメインフレーム上で使っている cscope のバージョンでは、cscope インター - フェイス(|cscope|)は動作しない。著者が使っているのはバージョン 15.0b12 で、 - これを使って Vim でコマンド "cscope add" を実行すると、Vim がハングする。 - cscope のデータベースのバイナリフォーマットが Vim が期待するものと異なるの - ではないかと推測している。cscope の現在のバージョン(15.3)を z/OS へ移植しよ - うとしたが、うまくいっていない。興味のある方がおられたら、なにか進展があっ - たときは著者にご連絡ください。 - -- glib/gtk はサポートしていない。著者は z/OS UNIX 上で glib をコンパイルするこ - とはできなかった。そのため、すてきな gtk ツールバーなしで生きていかねばなら - ない。 - -コンパイル時に無効化される機能: - - マルチバイトサポート (|multibyte|) - - 右横書きモード (|rileft|) - - ペルシア語キーマップ (|Farsi|) - - アラビア語サポート (|Arabic|) - - スペルチェック (|spell|) - -テストされていない機能: - - Perl インターフェイス (|perl|) - - ハングル文字入力 (|hangul|) - - 暗号化サポート (|encryption|) - - Langmap (|'langmap'|) - - Python インターフェース (|Python|) - - "右左"書きモード (|'rightleft'|) - - SNiFF+ インターフェイス (|sniff|) - - TCL インターフェイス (|tcl|) - .... - -============================================================================== -6. z/OS UNIX 上のオープンソース *OS390-open-source* *zOS-open-source* - -z/OS UNIX 上の他のオープンソースソフトウェアに興味があるなら、以下の Redbook -を参照すること: - - Mike MacIsaac et al - "Open Source Software for z/OS and OS/390 UNIX" - IBM Form Number: SG24-5944-01 - ISBN: 0738424633 - http://www-03.ibm.com/systems/resources/servers_eserver_zseries_zos_unix_redbook_sg245944.pdf - -以下も参照してください: - http://www.redbooks.ibm.com - http://www-03.ibm.com/systems/z/os/zos/features/unix/ - http://www-03.ibm.com/systems/z/os/zos/features/unix/library/IBM+Redbooks/index.html - - - ------------------------------------------------------------------------------- - vim:tw=78:fo=tcq2:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_amiga.jax b/runtime.old/doc/os_amiga.jax deleted file mode 100644 index a89391c8f..000000000 --- a/runtime.old/doc/os_amiga.jax +++ /dev/null @@ -1,148 +0,0 @@ -*os_amiga.txt* For Vim バージョン 7.3. Last change: 2010 Aug 14 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - *Amiga* -このファイルは Amiga version の Vim 特有の事柄に関して記述されています。 -下には特別に|MorphOS|についてのセクションが設けられています。 - -NOTE: Amiga 用のコードはまだソースに含まれていますが、メンテナンスもテストもさ -れていません。 - -Amiga へのインストール: -- "VIm:" を Vim の "doc" ディレクトリがある場所に割り当てます。help コマンドで - "VIM:doc/help.txt" が検索されます。 - $VIM 環境変数を設定してもうまく動作します。他の方法では: $VIM が使われてい - て、定義されていないと "VIM:" が使われます。 -- DOS 1.3 かそれ以前では: "arp.library" を "libs:" に追加してください。|+ARP| - 機能を有効にしてコンパイルしている必要があります。newcli と run が "C:" に含 - まれていることを確認してください(外部コマンドを実行するため)。 -- "-c" を受け付ける shell (例えば、Fish disk 624 に含まれている "Csh")を "c:" - か他の検索パスが通っている場所においてください(外部コマンドを実行するため)。 - -もし十分なメモリーを積んでいれば、"rez csh vim" コマンドを実行し、Vim と csh -を resident にすることで起動の遅さを回避することができます。"rezlib.library" -を "libs:" ディレクトリにおく必要があるでしょう。2.0 以下では rez version 0.5 -が必要です。 - -digraph を使わない場合は、|+digraphs| 機能を無効にして再コンパイルすることでメ -モリーをいくらか節約することができます。他の端末で Vim を使いたい場合は -TERMCAP オプション付きで再コンパイルします。Manx 5.x と SAS 6.x つきでコンパイ -ルされます。makefile と feature.h を参照してください。 - -構文強調がオンになっているときや、検索にネストしたワイルドカードを含めたときに -Vim がクラッシュしたら、それはスタックが小さすぎる可能性があります。スタックサ -イズを大きくしてみてください。Vim を起動する前にシェル内で Stack コマンドを使 -います。workbench では Vim のアイコンを選択し、workbench の "Info" メニューを -選択し、フォーム内の Stack フィールドを変更します。 - -もし異なる色を使いたい場合は、termcap コードを設定してください: - t_mr (反転テキスト) - t_md (太字テキスト) - t_me (t_mr と t_md 後の普通のテキスト) - t_so (standout モード) - t_se (t_so 後の普通のテキスト) - t_us (下線付きテキスト) - t_ue (t_us 後の普通のテキスト) - t_ZH (イタリック・テキスト) - t_ZR (t_ZH 後の普通のテキスト) - -標準の ANSI エスケープ・シーケンスが使われます。コードは: -30 grey char 40 grey cell >0 grey background 0 all attributes off -31 black char 41 black cell >1 black background 1 boldface -32 white char 42 white cell >2 white background 2 faint -33 blue char 43 blue cell >3 blue background 3 italic -34 grey char 44 grey cell >4 grey background 4 underscore -35 black char 45 black cell >5 black background 7 reverse video -36 white char 46 white cell >6 white background 8 invisible -37 blue char 47 blue cell >7 blue background - -'>' つきのコードは最後になければなりません。cell と background の色は同じであ -る必要があります。コードはセミコロンで分割することで組み合わせることができます。 -例えば、青い背景に白のテキストにするには: > - :set t_me=^V<Esc>[0;32;43;>3m - :set t_se=^V<Esc>[0;32;43;>3m - :set t_ue=^V<Esc>[0;32;43;>3m - :set t_ZR=^V<Esc>[0;32;43;>3m - :set t_md=^V<Esc>[1;32;43;>3m - :set t_mr=^V<Esc>[7;32;43;>3m - :set t_so=^V<Esc>[0;31;43;>3m - :set t_us=^V<Esc>[4;32;43;>3m - :set t_ZH=^V<Esc>[3;32;43;>3m - -複数のコマンドをフィルターコマンドとして使う場合、例えば: > - :r! echo this; echo that -では、最後のコマンドの出力のみが使われます。この問題を回避するには、コマンドを -グループにする必要があります。そして、これは使っている shell に依存しています -(このため、Vim では自動的に行いません)。例: > - :r! (echo this; echo that) - :r! {echo this; echo that} - -1つのファイル名のみを受け付けるコマンドではファイル名にスペースが使われていて -もかまいません。しかしながら、複数のファイル名を引数として受け付けるコマンドで -は、スペースの前のバック・スラッシュをつける必要があります。 - ------------------------------------------------------------------------------- -Vim for MorphOS *MorphOS* - -[このセクションの大部分は Ali Akcaagac による] - -MorphOS 版についての最新情報は: - http://www.akcaagac.com/index_vim.html - - -Problems ~ - -MorphOSではなくVimやUN*Xに関連した問題が2つあります。ram(訳注1)内のVimを起動す -るとMorphOSは小煩いrequester(訳注2)を出していろいろと不満を言いますが、それは -無視してください。もう1つ、普通にVimを起動するといくつかのプラグインが無視でき -るような問題を起こします。いつか誰かが直してくれることでしょう。 -訳注1: ram = RAM ディスク? -訳注2: requester = ダイアログ or メッセージボックス? - -とりあえずこれらの問題には目をつむり、次のように起動するか: - - vim <編集するファイル> - -もしくは、このヘルプの意向を享受し、質素に Vim を起動したいなら、次のように -するのが良いでしょう: - - vim --noplugin <もちろんファイルを指定することもできます> - - -インストール ~ - -1) 'VIM' バイナリを c: にコピーしてください -2) Vim のランタイムパッケージを次から入手してください - - ftp://ftp.vim.org/pub/vim/amiga/vim62rt.tgz - - そしてそれを MorphOS がインストールされている場所の 'Apps' ディレクトリに - 展開してください。私の場合は次のような階層になってます: - - MorphOS:Apps/Vim/Vim62/... - -3) s:shell-startup に次の行を加えてください (重要!)。 - - ;Begin VIM - Set VIM=MorphOS:Apps/Vim/Vim62 - Assign HOME: "" - ;End VIM - -4) '.vimrc' ファイルを s: にコピーしてください。 - -5) アーカイブには 'color-sequence' というファイルも含まれています。これは - MorphOS のシェルで ANSI カラーを表示するようにします。このファイルを s: に - コピーし s:shell-startup を以下のように変更してください: - - ;Begin VIM - Set VIM=MorphOS:Apps/Vim/Vim62 - Assign HOME: "" - Execute S:Color-Sequence - Cls - ;End VIM - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_beos.jax b/runtime.old/doc/os_beos.jax deleted file mode 100644 index 2e9f8620e..000000000 --- a/runtime.old/doc/os_beos.jax +++ /dev/null @@ -1,329 +0,0 @@ -*os_beos.txt* For Vim バージョン 7.3. Last change: 2010 Aug 14 - - - VIMリファレンスマニュアル by Bram Moolenaar - - - *BeOS* *BeBox* -これはVim 5.1のBeOS Preview Release 2 (PR2として知られている)以降への移植であ -る。 -(訳注:どうやらこのファイルの内容は長いことメンテナンスされていないらしい。BeOS -自体が廃れてしまったOSであるから致し方ないところか) - -このファイルにはBeBox/BeOS向けのVimについての詳細が含まれている。このファイル -で議論されていないことについては、VimはUNIX|os_unix.txt|版とほとんど同じように -動作する。 - - 1. 概要 |beos-general| - 2. Vimのコンパイル |beos-compiling| - 3. Terminalでのタイムアウト |beos-timeout| - 4. Unicode vs. Latin1 |beos-unicode| - 5. BeOSのGUI |beos-gui| - 6. $VIMディレクトリ |beos-vimdir| - 7. ドラッグ&ドロップ |beos-dragndrop| - 8. Single Launch vs. Multiple - Launch |beos-launch| - 9. フォント |beos-fonts| -10. メタキー |beos-meta| -11. マウスキーマッピング |beos-mouse| -12. 色の名前 |beos-colors| -13. Perl機能をコンパイル |beos-perl| - - -============================================================================== -1. 概要 *beos-general* - -デフォルトの構文強調は大抵は強調する単位ごとに異なる前景色になる。これは -Terminalウィンドウの背景色を暗く、文字色を明るく設定した時に一番見栄えがする。 -中間くらいの灰色((R,G,B)=(168,168,168)くらいのもの)の背景と黒い文字でも素晴ら -しく見栄えがする。デフォルトの明るい背景に暗い文字を使っているならば、前景色と -背景色の設定を単純に反転すればより良く見えるようになるだろう。これを行なうに -は、次の設定をファイル.vimrcに追加する(例中の<Esc>はエスケープキャラクタで置き -換える必要がある): > - - :if &term == "beos-ansi" - : set t_AB=<Esc>[3%dm - : set t_AF=<Esc>[4%dm - :endif - -============================================================================== -2. Vimのコンパイル *beos-compiling* - -Advanced Access Preview Release (AAPR) 以降で、Vimは標準のconfigureスクリプトで -構成できるようになった。コンパイラを取得し、正しいフラグを設定するために次のコマンドをシェルで実行する(カット&ペーストすることができる)。 - -CC=$BE_C_COMPILER CFLAGS="$BE_DEFAULT_C_FLAGS -O7" \ - ./configure --prefix=/boot/home/config - -$BE_C_COMPILERは通常"mwcc"で、$BE_DEFAULT_C_FLAGSは"-I- -I."になる。 - -configureを実行する時に、GUIサポートを有効化したいならば、config.mkを編集して -GUI_xxxが$(NONE_xxx)ではなく$(BEOSGUI_xxx)を参照するように変更する必要がある。 -代わりにMakefileをこのように変更することもできる; そのほうが普遍的な影響を持 -つ。"NONE_"を検索すると良い。 - -コンパイルした後でバイナリにリソースを追加する必要がある。次の行をスクリプト -link.shの終わり(exit $exit_value"の手前)近くに付け加え、これを自動的に行なうよ -うにする。 > - - rmattr BEOS:TYPE vim - copyres os_beos.rsrc vim - mimeset vim - -"strip"のダミーファイルも作る: > - - #!/bin/sh - mimeset $1 - exit 0 - -これは"make install"でVimをインストールする時に必要になる。 - -Vimをコンパイルするために"make"とタイプし、インストールのために"make intall"と -する。 - -Vimを手動でインストールするならば、Vimを$HOME/config/binにコピーし、一連の -symlink({g,r,rg}{vim,ex,view})を作成しなければならない。その上Vimの構成ファイ -ル: vims-5.0s/{*.vim,doc,syntax}を$HOME/config/share/vimにコピーしなければなら -ない。完全にするためにはnroffのmanページも$HOME/config/man/man1にコピーする必 -要がある。それとctags/ctagsとxxd/xxdも忘れないように!。 - -明白だがVimを実際にリンクするには制限されていないリンカが必要だ。BeOS用の -CodeWarriorコンパイラを購入するならばhttp://www.metrowerks.com/を参照。現在の -ところをそれをこなせるほかのリンカは存在しない。 - -ただしそのリンカでは、PerlやPythonが正しくインストールされていたとしても、それ -らのインターフェースをVimに含めることはできない。 |beos-perl| - -============================================================================== -3. Terminalでのタイムアウト *beos-timeout* - -(訳注:恐らくTerminalとはアプリケーション名であるから端末と呼ぶのは不適切) -幾つかのPOSIX/UNIXの機能が未だ実装されていない[1]からBeOSは、Terminalにおいて -タイムアウトを伴う読み込みを行なうことを、直接にサポートはしていない。そのため -に: > - :set notimeout -をしない限り、1文字以上のキーをマップすることができないということに遭遇するだ -ろう。 ('timeout'参照) - -この問題を回避するために、1文字先を読み込む特別なスレッドを使用して、必要なタ -イムアウト付き入力を用意するワークアラウンドを追加した。その副作用として、 -Terminalウィンドウのサイズが変わった時(訳注:最小化など通常はキーボードフォーカ -スが失われる場合)でもVimはキー入力を認識するようになった。 - -Terminalではファンクションキーは非常に独特のキーシーケンスを生成するのでサポー -トしていない。 - -これらの問題はGUI版には存在しない。 - -[1]: ファイルディスクリプタに使えるselect()が無い; termiosのVMINとVTIMEの設定 -も正しく動作していないようだ。この問題はDR7から存在しPR2に至るまで修正されてい -ない。 - -============================================================================== - *beos-unicode* -4. Unicode vs. Latin1 *beos-utf8* - -BeOSは文字列にUnicodeとUTF-8を(16ビット文字を8ビット文字にエンコードして)使っ -ている。VimはISO-Latin1かその他の8ビットエンコーディングを前提としている。その -ため非ASCII文字に対して望む結果は得られない。それを確認するにはコマンド -:digraphs を試すことができる。ISO-Latin1の文字コード128-255の文字が乱れて表示 -されてしまうならば、 :set isprint=@ を使うと(ほんの少し)改善されるかもしれな -い。これにはGUIの方が良く、また使用しているフォントによって改善具合は異なる(以 -下も参照)。 - -ファイルをUTF-8とISO-Latin1の間でコンバートするのにはコマンド/boot/bin/xtouを -使う。xtou -f iso1 filename でUTF-8へ、逆に xtou -t iso1 filename でISO-Latin1 -へコンバートできる。 - -============================================================================== -5. BeOSのGUI *beos-gui* - -BeOS GUI は削除されました。しばらくメンテナンスされておらず、おそらく機能しな -いでしょう。どうしても使いたい場合は Vim 6.x バージョンから機能を取り出して -マージしてください。 - -============================================================================== -6. $VIMディレクトリ *beos-vimdir* - -$VIMにはVim支援ファイルの格納場所が記憶されている。$VIMのデフォルトはコンパイ -ル時に設定され次のコマンドで確認することができる: > - - :version - -通常の値は/boot/home/config/share/vimである。これが気に入らなければ環境変数VIM -を設定することでこれを上書するか、.vimrcで'helpfile'を設定する: > - - :if version >= 500 - : set helpfile=~/vim/vim54/doc/help.txt - : syntax on - :endif - -============================================================================== -7. ドラッグ&ドロップ *beos-dragndrop* - -Vimのアイコン、ウィンドウどちらにでもファイルやディレクトリをドロップすること -ができる。アイコンにドロップした際には、アプリケーションFile Typeを使ってVimに -"Single Launch"を割り当てなくとも新しいVimが起動する。ウィンドウの場合はその -ファイルの編集が開始される。フォルダをドロップするとVimの現在の作業ディレクト -リがそのフォルダへ変更される。|:cd|や|:pwd|を参照。<Shift>を押しながらファイル -をドロップしたならば、ドロップされた最初のファイルのあるディレクトリに変更す -る。ドロップによりVimを起動する時には<Shift>は必要ない: Vimは自動的に移動する -から。 - -ファイルがドロップされると現在の引数リストが設定される。|argument-list| - -============================================================================== -8. Single Launch vs. Multiple Launch *beos-launch* - -Vimのアプリケーションフラグ(FileTypesの設定に見られる)はMultiple Launchに設定 -される。望むならSingle Launchに設定することもできる。それにより既に起動してい -るVimでファイルを開くのではなく2つ目のVimを起動するようになる。これはTrackerか -ら起動した場合にのみ適用され、コマンドラインにも適用される。その後者の場合、 -ファイル(やオプション)を設定しない起動はサポートされない - -NB: GUI版だけがBApplicationを持つ(だからアプリケーションフラグがある)。この非 -GUI版にはこのセクションは無いので、コンパイル時に設定する必要がある。 - -============================================================================== -9. フォント *beos-fonts* - -フォントは次のように設定する: > - - :set guifont=Courier10_BT/Roman/10 - -指定するフォント名はフォントファミリ、スタイル、大きさの3つの部分から構成され -る。ファミリ名とスタイル名の中のスペースはアンダースコア('_')で置き換えて使用 -する。 - -(Courierのような)等幅フォントを指定すると一番良い結果が得られる。Vimは全ての -フォントをB_FIXED_SPACINGモードで使用するよう試みるが、どうやらプロポーショナ -ルフォントについては(BeBookに書かれているにも関わらず)動作しない。 - -VimはISO Latin 1を意味するB_ISO8859_1エンコードを使用するようにも試みる。これ -も全てのフォントについては動作しない。Courierには動作するが、なんとも不思議だ -がProFontISOLatin1/Regularには動作しない。次のコマンドでこれを確かめることがで -きる: > - - :digraphs - -このコマンドはISO Latin 1エンコーディングで表現される文字の集合を表示する。例 -えばそれらの中に四角い文字があった場合や、最後の文字が点の付いたyでなかった場 -合には、そのフォントとエンコーディングの組み合わせは使えないことを意味する。 - -指定したフォントが存在しない場合、システムの固定幅フォントが利用される。 - -標準的な固定幅のシステムフォントは以下の通り: - - ProFontISOLatin1/Regular - Courier10_BT/Roman - Courier10_BT/Italic - Courier10_BT/Bold - Courier10_BT/Bold_Italic - -標準的なプロポーショナルシステムフォントは以下の通り: - - Swis721_BT/Roman - Swis721_BT/Italic - Swis721_BT/Bold - Swis721_BT/Bold_Italic - Dutch801_Rm_BT/Roman - Dutch801_Rm_BT/Italic - Dutch801_Rm_BT/Bold - Dutch801_Rm_BT/Bold_Italic - Baskerville/Roman - Baskerville/Italic - Baskerville/Bold - Baskerville/Bold_Italic - SymbolProp_BT/Regular - -幾つか試してみると面白いだろう。 - -============================================================================== -10. メタキー *beos-meta* - -META修飾キーは左右のOPTIONSによって代用される。これはALT(別名COMMAND)キーがア -プリケーションからは使えないための措置である。 - -============================================================================== -11. マウスキーマッピング *beos-mouse* - -Vimは各マウスボタンをLeftMouse, MiddleMouseそしてRightMouseと呼んでいる。 -デフォルトのマウス設定で使用しているならば、これらの名前はそのボタンの位置を正 -確に反映している。Vimは次のマッピングを行なっている: - - Button 1 -> LeftMouse, - Button 2 -> RightMouse, - Button 3 -> MiddleMouse. - -使っているマウスのボタンが3つより少ない場合には、クリックを修飾操作と同時に行 -なうことでそのボタンを利用できる。例としてはファイル -vim-5.x/macros/swapmous.vimを参照すること。 |gui-mouse-mapping| - -============================================================================== -12. 色の名前 *beos-colors* - -Vimには多くの色の名前が組み込まれている。さらに$VIMRUNTIME/rgb.txtが存在してい -れば、そこから追加の名前が読み込まれる。このファイルは基本的にX11の色データ -ベースである。このファイルの中にある名前は実行速度を確保するためにキャッシュさ -れる。 - -============================================================================== -13. Perl機能をコンパイル *beos-perl* - -Perlをサポートするようコンパイルするには少しトリックが必要である。Metrowerksの -コンパイラにはインクルード文のファイルを探す場所について幾つかおかしな趣向があ -る。Perlのインクルードファイルには幾つかVimのヘッダファイルと同じ名前のものが -あり、間違ったものがインクルードされてしまう。これを修正するには、次のPerlスク -リプトをディレクトリvim-5.0/srcで実行する: > - - preproc.pl > perl.h - - #!/bin/env perl - # Simple #include expander, just good enough for the Perl header files. - - use strict; - use IO::File; - use Config; - - sub doinclude - { - my $filename = $_[0]; - my $fh = new IO::File($filename, "r"); - if (defined $fh) { - print "/* Start of $filename */\n"; - - while (<$fh>) { - if (/^#include "(.*)"/) { - doinclude($1); - print "/* Back in $filename */\n"; - } else { - print $_; - } - } - print "/* End of $filename */\n"; - - undef $fh; - } else { - print "/* Cannot open $filename */\n"; - print "#include \"$filename\"\n"; - } - } - - chdir $Config{installarchlib}."/CORE"; - doinclude "perl.h"; - -これはヘッダーファイル"perl.h"を、その他のPerl用ファイルを使って展開する。 - -これで--enable-perlinterpオプションをつけてconfigureとmakeをすることができる。 -これはVimのサイズを約616KB増やしてしまうことに注意!。Perlを追加しなければ、デ -フォルトの機能とGUIを備えたPerlは約575KBで、Perlを追加したものは約1191KBであ -る。 - --Olaf Seibert - -[Note: これらのアドレスはもう機能していない] -<rhialto@polder.ubc.kun.nl> -http://polder.ubc.kun.nl/~rhialto/be - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_dos.jax b/runtime.old/doc/os_dos.jax deleted file mode 100644 index 5eb8b601e..000000000 --- a/runtime.old/doc/os_dos.jax +++ /dev/null @@ -1,296 +0,0 @@ -*os_dos.txt* For Vim バージョン 7.3. Last change: 2006 Mar 30 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - *dos* *DOS* -このファイルはMS-DOSおよびWin32バージョンのVimに共通の特殊事項をまとめる。 -|os_win32.txt|や|os_msdos.txt|も参照すること。 - -1. ファイルの位置 |dos-locations| -2. バックスラッシュを使う |dos-backslash| -3. 標準マッピング |dos-standard-mappings| -4. 画面出力と色 |dos-colors| -5. ファイルの書式 |dos-file-formats| -6. :cdコマンド |dos-:cd| -7. 中断 |dos-CTRL-Break| -8. 一時ファイル |dos-temp-files| -9. 標準のシェルオプション |dos-shell| - -============================================================================== -1. ファイルの位置 *dos-locations* - -Vimの実行ファイルと同じディレクトリに、ヘルプおよび構文のサブディレクトリがあ -るならば、特に何もする必要はない。レジストリや環境変数も設定する必要はない。た -だVimのディレクトリが検索パスに含まれるか、デスクトップ上のショートカットを利 -用するだけでよい。 - -vimrcファイル("_vimrc"と"_gvimrc")は通常、ランタイムファイルがあるディレクトリ -の1つ上のディレクトリに置かれる。もしどこか違う場所に置きたいならば、環境変数 -$VIMにそのディレクトリを設定する。例: > - set VIM=C:\user\piet -これは"c:\user\piet\_vimrc"を見つけるだろう。 -Note: これはコンピュータを複数人で使う時のために用意されている。 - 普通はデフォルトの場所に _vimrc ファイルを置いてください。 - -実行ファイルを別の場所に移動したい場合は、環境変数$VIMを設定する必要がある。ラ -ンタイムファイルは"$VIM/vim{version}"から見つけられる。例: > - set VIM=E:\vim -これはバージョン5.4のランタイムファイルを"e:\vim\vim54"から見つけるだろう。 -Note: これは推奨しません。ランタイムディレクトリに実行ファイルを入れておくこと - をお勧めします。 - -実行ファイルを移動し、「かつ」"_vimrc"と"_gvimrc"を他の場所に置きたい場合は、 -$VIMにvimrcファイルの場所を、$VIMRUNTIMEにランタイムファイルの場所を設定する。 -例: > - set VIM=C:\usr\piet - set VIMRUNTIME=E:\vim\vim54 -これは"c:\user\piet\_vimrc"ファイルと"e:\vim\vim54"にあるランタイムファイルを -見つけるだろう。 - -さらに情報が欲しいときは|$VIM|と|$VIMRUNTIME|を参照すること。 - -Windows 95では、$VIMをC:\autoexec.batファイルに設定できる。例: > - set VIM=D:\vim -Windows NTでは、環境変数をユーザごとに別々に設定することができる。"スタート/設 -定/コントロールパネル->システム"、もしくは"マイ コンピュータ"のプロパティを通 -して、環境変数のタブに行く。 - -============================================================================== -2. バックスラッシュを使う *dos-backslash* - -ファイル名にバックスラッシュを使うことは問題となり得る。Viではいくつかのコマン -ドにおいて、バックスラッシュの数を半分にする。Vimはもう少し寛大で、ファイル名 -からバックスラッシュを取り除かないので、":e c:\foo\bar"は期待通りに機能する。 -しかしバックスラッシュが特別な文字(スペース、カンマ、バックスラッシュなど)の前 -に現れた場合は、Vimはバックスラッシュを取り除く。問題を避けるにはスラッシュを -使用する: ":e c:/foo/bar"はうまく機能する。MS-DOSプログラムやWin32プログラムの -なかにはこれが問題となるものもあるので、Vimは問題を避けるために内部でスラッシュ -をバックスラッシュに置き換える。 - -スラッシュを使うのを好むのなら、'shellslash'オプションを設定する。するとVimは -ファイル名を展開するときにバックスラッシュをスラッシュに置き換える。これは -Unix-likeの'shell'を使用しているときに特に有用である。 - -============================================================================== -3. 標準マッピング *dos-standard-mappings* - - -以前の CTRL-PageUp と CTRL-PageDown へのマッピングは削除された。今、これらのキー -はそれぞれ次、前のタブページへジャンプする。|<C-PageUp>| |<C-PageDown>| - -これらのキーを画面上の最初、最後の行へジャンプに使いたければ次のマッピングをす -ればよい: - -キー キーコード Normal/Visualモード 挿入モード ~ -CTRL-PageUp <M-N><M-C-D> H <C-O>H -CTRL-PageDown <M-N>v L$ <C-O>L<C-O>$ - -さらに、次のキーがコピー/切り取り/貼り付けに利用できる。Win32とDJGPPバージョン -でのみ、これらはクリップボードを使用する。 - -Shift-Insert テキストを貼り付ける(クリップボードから) *<S-Insert>* - *<C-Insert>* -CTRL-Insert Visualモードでテキストをコピーする(クリップボードに) - *<C-Del>* -CTRL-Del Visualモードでテキストを切り取る(クリップボードに) - *<S-Del>* -Shift-Del Visualモードでテキストを切り取る(クリップボードに) - -以下のマッピングは同様の目的を果たす(VimのWin32とDJGPPバージョン): - -キー キーコード Normal Visual 挿入モード ~ -Shift-Insert <M-N><M-T> "*P "-d"*P <C-R><C-O>* -CTRL-Insert <M-N><M-U> "*y -Shift-Del <M-N><M-W> "*d -CTRL-Del <M-N><M-X> "*d - -もしくは次のマッピング(VimのWin32ではないバージョン): - -キー キーコード Normal Visual 挿入モード ~ -Shift-Insert <M-N><M-T> P d"0P <C-R><C-O>" -CTRL-Insert <M-N><M-U> y -Shift-Del <M-N><M-W> d -CTRL-Del <M-N><M-X> d - -クリップボードがサポートされているときは、レジスタの "* が使える。 - -============================================================================== -4. 画面出力と色 *dos-colors* - -画面出力の方法は、標準ではbiosコールを使用する。これはたいていのシステムで直ち -に機能する。ansi.sysは必要ない。現在の画面モードを設定するには":mode"を使う。 -|:mode|を参照すること。 - -Vimが使用する画面の色を変更するには|:highlight|コマンドを使用する。 Normal強調 -表示グループはVimが普通のテキストに使う色を特定する。例えば、背景色が青で文字 -色が灰色にするには: > - :hi Normal ctermbg=Blue ctermfg=grey -他に利用できるグループについては|highlight-groups|を参照すること。 - -DOSコンソールは太字や下線のような属性をサポートしていない。5つのモードで使用す -る色は9つの端末のオプションで設定できる。":highlight"コマンドによって直接色を -設定した場合には必要ないので注意すること; これらのオプションは古いバージョンの -Vimに互換性がある。 |'highlight'|オプションは5つのモードがどの操作のときに使用 -されるかを特定する。 > - - :set t_mr=^V^[\|xxm 反転モードの開始 - :set t_md=^V^[\|xxm 太字モードの開始 - :set t_me=^V^[\|xxm 普通のテキストに戻る - - :set t_so=^V^[\|xxm standoutモードの開始 - :set t_se=^V^[\|xxm 普通のテキストに戻る - - :set t_us=^V^[\|xxm 下線モードの開始 - :set t_ue=^V^[\|xxm 普通のテキストに戻る - - :set t_ZH=^V^[\|xxm 斜字モードの開始 - :set t_ZR=^V^[\|xxm 普通のテキストに戻る - -^VはCTRL-V -^[は<Esc> -xxは前景色と背景色の数字を足した10進数の数値に置き換える: - -色 前景色 背景色 ~ -Black 0 0 -DarkBlue 1 16 -DarkGreen 2 32 -DarkCyan 3 48 -DarkRed 4 64 -DarkMagenta 5 80 -Brown, DarkYellow 6 96 -LightGray 7 112 -DarkGray 8 128 * -Blue, LightBlue 9 144 * -Green, LightGreen 10 160 * -Cyan, LightCyan 11 176 * -Red, LightRed 12 192 * -Magenta, LightMagenta 13 208 * -Yellow, LightYellow 14 224 * -White 15 240 * - -* ディスプレイモードによっては128以上の色コードは利用できず、コード128は文字を - 点滅させるだろう。 - -0を使用した場合は、Vimの開始時の色にリセットされる(普通は7で背景色が黒、文字色 -が淡い灰色であるが、これは上書きできる。もしコマンドプロンプトから標準色を上書 -きした場合は、vimrc内の強調表示色をいくつか調整する必要があるかもしれない---下 -を参照)。 -これがt_meのデフォルトである。 - -それぞれの強調表示モードの標準: - t_mr 112 反転モード: 文字色Black(0)、背景色LightGray(112) - t_md 15 太字モード: 文字色White(15)、背景色Black(0) - t_me 0 通常モード(標準に戻る) - - t_so 31 standoutモード: 文字色White(15)、背景色DarkBlue(16) - t_se 0 standoutモードの終了(標準に戻る) - - t_czh 225 斜字モード: 文字色DarkBlue(1)、背景色Yellow(224) - t_czr 0 斜字モードの終了(標準に戻る) - - t_us 67 下線モード: 文字色DarkCyan(3)、背景色DarkRed(64) - t_ue 0 下線モードの終了(標準に戻る) - -これらは反転表示でも良く見えるようために選ばれているが、好みで変更してよい。 - -例: > - :set t_mr=^V^[\|97m " 反転モードの開始: DarkBlue (1) on Brown (96) - :set t_md=^V^[\|67m " 太字モードの開始: DarkCyan (3) on DarkRed (64) - :set t_me=^V^[\|112m " ノーマルモードに戻る: Black (0) on LightGray (112) - - :set t_so=^V^[\|37m " standoutモードの開始: DarkMagenta (5) on DarkGreen - (32) - :set t_se=^V^[\|112m " ノーマルモードに戻る: Black (0) on LightGray (112) - -============================================================================== -5. ファイルの書式 *dos-file-formats* - -'fileformat'オプションに"dos"が設定されている場合(標準)、Vimは<NL>と<CR><NL>を -end-of-line (<EOL>)として認識する。ファイルを保存したときは、Vimは<CR><NL>を使 -用する。このため、ファイルを編集して保存した場合は、Vimは<NL>を<CR><NL>で置き -換える。 - -'fileformat'オプションが"unix"であるならば、Vimは<NL>を<EOL>として使用し、<CR> -を^Mと表示する。 - -Vimはどんなモードで読み込んでもDosモードで保存する(":se ff=dos")ことによって、 -<NL>を<CR><NL>に置き換えることができる。 -VimはDosモードで読み込み、Unixモードで保存する(":se ff=unix")ことによって、 -<CR><NL>を<NL>に置き換えることができる。 - -Vimは'fileformats'が設定されている(標準)ときには自動的に'fileformat'を設定する -ので、あなたがしていることについて全く悩む必要がない。 - |'fileformat'| |'fileformats'| - -スクリプトファイルやバイナリファイルを編集したいのならば、ファイルを読み込む前 -に'binary'オプションを設定するとよい。スクリプトファイルやバイナリファイルは -<NL>を含んでいて、Vimによって<CR><NL>に置き換えられてしまうかもしれない。 Vim -の起動時に"-b"(binary)オプションをつけることによって、自動的に'binary'を設定す -ることができる。 - -============================================================================== -6. :cdコマンド *dos-:cd* - -":cd"コマンドはドライブレターを認識し、カレントドライブを変更する。Cドライブに -するには":cd c:"とする。Dドライブの"foo"ディレクトリに移動するには":cd d:\foo" -とする。もしシステムがサポートしているならば、VimはUNC名も認識する; 例えば、 -":cd \\server\share\dir"。|:cd| - -============================================================================== -7. 中断 *dos-CTRL-Break* - -検索を中断するにはCTRL-Cの代わりにCTRL-Breakを使用する。Vimはキーを読み終える -までCTRL-Cを検知しない。 - -============================================================================== -8. 一時ファイル *dos-temp-files* - -16ビットもしくは32ビットのDOSのみ: -Vimは以下のリストの順番で、ディレクトリが存在し、かつVimがファイルを生成できる -最初のディレクトリに一時ファイル(フィルタ用)を置く: - $TMP - $TEMP - C:\TMP - C:\TEMP - 現在のディレクトリ - -Win32バージョン(コンソール、GUIともに): -Vimは標準的なWindows関数を使って一時ファイル名(フィルタ用)を取得する。以下のリ -ストの順番で、ディレクトリが存在し、かつVimがファイルを生成できる最初のディレ -クトリが使用される: - $TMP - $TEMP - 現在のディレクトリ - -============================================================================== -9. 標準のシェルオプション *dos-shell* - -'sh'('shell')オプションはWindows 95では"command.com"、Windows NTでは"cmd.exe" -が標準で設定されている。VimはSHELLが定義されている場合はSHELLを、SHELLが定義さ -れていない状態でCOMSPECが定義されている場合はCOMSPECを代わりに使用する。Vimは -外部コマンドを"<shell> /c <command_name>"として起動する。新しいコマンドシェルを -起動するにはCTRL-Zをタイプする。"exit"でVimに戻る。 |'shell'| |CTRL-Z| - -サードパーティのシェルを使用する場合は、|'shellcmdflag'| ('shcf')と -|'shellquote'| ('shq')か|'shellxquote'| ('sxq')オプションを設定する必要がある -かもしれない。不幸なことに、これは使っているVimのバージョンに依存する。例えば、 -MKS Kornシェルやbashでは、オプションの値を以下のようになる: - - DOS 16ビット DOS 32ビット Win32 ~ -'shellcmdflag' -c -c -c -'shellquote' " -'shellxquote' " - -Dos 16ビットの例は次のようにシェルを起動する: - <shell> -c "command name" >file -Win32の例: - <shell> -c "command name >file" -DOS 32ビットでは、DJGPPが内部的にどうにかして処理する。 - -起動時にVimは"sh"が'shell'オプション内のどこにあるかをチェックする。存在するな -らば、Vimは'shellcmdflag'と'shellquote'または'shellxquote'オプションを上記のよ -うに設定するだろう。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_mac.jax b/runtime.old/doc/os_mac.jax deleted file mode 100644 index b1729d04d..000000000 --- a/runtime.old/doc/os_mac.jax +++ /dev/null @@ -1,116 +0,0 @@ -*os_mac.txt* For Vim バージョン 7.3. Last change: 2006 Apr 30 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - *mac* *Mac* *macintosh* *Macintosh* - -このファイルは、Macintosh 版の Vim に特有の事柄について書いてあります。 - -NOTE: このファイルの内容は少し古いです。つぎのサイトで役に立つ情報が得られます - http://macvim.org/ - -1. ファイル名の決まりごと |mac-filename| -2. .vimrc と .vim ファイル |mac-vimfile| -3. FAQ |mac-faq| -4. 知られている不足事項 |mac-lack| -5. Mac バグレポート |mac-bug| -6. Vim のコンパイル |mac-compile| - -以前には、Vimのバージョン3.0のMac移植版がありました。ここに以前のファイルの最 -初の数行を示します: - -VIM Release Notes -Initial Macintosh release, VIM version 3.0 -19 October 1994 - -Eric Fischer -<enf1@midway.uchicago.edu>, <eric@jcp.uchicago.edu>, <etaoin@uchicago.edu> -5759 N. Guilford Ave -Indianapolis IN 46220 USA - -============================================================================== -1. ファイル名の決まりごと *mac-filename* - -Vim 7 からは Unix のパス区切り文字(/)しか使えないようになりました。指定された -ファイル名がカレントフォルダからの相対パス(すなわち、"Desktop"からの相対)か、 -絶対パスかを判断するには、次のアルゴリズムが使われます: - - パスが"/"から始まる場合は、絶対パス - パスが":"から始まる場合は、相対パス - パスが"/"でも":"でも始まらない場合、そして":"が"/"の前にある - ときは、絶対パス -> - :e /HD/text - :e HD:text -< ディスク"HD"のファイル"text"を編集。 > - :e :src:main.c - :e src/main.c -< カレントフォルダのフォルダ"src"内のファイル"main.c"を編集。 > - e os_mac.c -< カレントフォルダのファイル"os_mac.c"を編集。 - -変数 |$VIM|、または |$VIMRUNTIME| を使うこともできます。 > - - so $VIMRUNTIME:syntax:syntax.vim - -============================================================================== -2. .vimrc と .vim ファイル *mac-vimfile* - -Vim スクリプトを書くときは Unix の改行文字(LF)を使うことが推奨されています。 - -起動時に $VIMRUNTIME/macmap.vim が読み込まれ、デフォルトのコマンドキー・マップ -が定義されます。 - -古いシステムでは、ドット"."で始まるファイルは推奨されていません。そのため、rc -ファイルは、"vimrc"または"_vimrc"、"gvimrc"または"_gvimrc"という名前になってい -ます。これらのファイルは、mac, dos, unix のどのフォーマットでもよいです。 -|'nocompatible'|オプションが設定されていれば、Vimはどんなファイルフォーマット -も扱うことができますが、そうでなければ、macフォーマットファイルしか扱えません。 - -============================================================================== -3. Mac FAQ *mac-faq* - -FAQ はインターネット上でも参照できます: http://macvim.org/OSX/index.php#FAQ - -Q: Apple ターミナルで非 ASCII 文字を入力できない。 -A: [ウィンドウ設定] → [エミュレーション] で「非 ASCII 文字をエスケープする」 - のチェックを外してください。 - -Q: コマンドラインから GUI の Vim を起動するには? -A: Vim.app が /Applications にあるとします。その場合: - open /Applications/Vim.app - または: - /Applications/Vim.app/Contents/MacOS/Vim -g {arguments} - -Q: GUI または open で Vim.app を起動したとき、$PATH になんらかの意味のあるもの - に設定するには? -A: ほとんどのシェルで次のトリックがうまくいきます。vimrc に書き加えてくださ - い。macvim.org で配布されているバイナリでは、これがシステムの vimrc ファイ - ルに含まれています。 > - let s:path = system("echo echo VIMPATH'${PATH}' | $SHELL -l") - let $PATH = matchstr(s:path, 'VIMPATH\zs.\{-}\ze\n') - -============================================================================== -4. 知られている不足事項 *mac-lack* - -ターミナルでは CTRL-^ は Shift-Control-6 とタイプする必要があります。CTRL-@ は -Shift-Control-2 です。 - -============================================================================== -5. Mac バグ レポート *mac-bug* - -Mac版の特定のバグや特性の変更をレポートするときは、vim-macメーリングリストを -使ってください|vim-mac|。メーリングリストに登録したくないなら代わりにMacVimの -メンテナにメッセージを送ってください。 - - mac@vim.org - -============================================================================== -6. Vim のコンパイル *mac-compile* - -ソースファイルと一緒にある"src/INSTALLmac.txt"を見てください。 - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_mint.jax b/runtime.old/doc/os_mint.jax deleted file mode 100644 index a586bd2a4..000000000 --- a/runtime.old/doc/os_mint.jax +++ /dev/null @@ -1,38 +0,0 @@ -*os_mint.txt* For Vim バージョン 7.3. Last change: 2005 Mar 29 - - - VIM REFERENCE MANUAL by Jens M. Felderhoff - - - *MiNT* *Atari* -このファイルは Atari MiNT version の Vim に関する特殊な事柄について述べていま -す。 - -Vim を Atari 上で MiNT を走らせてコンパイルするには src ディレクトリの -"INSTALL" と "Makefile" を参照してください。 - -Vim for MiNT は Unix version とほとんど同じ動作をします。ドキュメントに記述さ -れている Unix 上での振る舞いは、明確に示されていない限り MiNT version の Vim -でも同じです。 - -<~> (ホーム・ディレクトリ)のワイルド・カード展開には、チルダを展開するシェルが -必要です。Vanilla Bourne Shell は展開しません。Csh と ksh はうまく動作します。 - -MiNT version の Vim は、/etc/termcap に端末にあった端末属性をふくんだ termcap -ファイルが必要です。vt52 端末は、内蔵 termcap でサポートされています。TOSWIN -ウインドウ・マネージャーと仮想コンソール端末の termcap エントリーが、Vim とと -もに配布されている termcap ファイルに追加されました。 - -<BS> と <Del> キーが入れ替わっている問題に遭遇した場合は、|:fixdel| を参照して -ください。 - -MiNT での端末の画面更新は、しばしば遅いため(例えば、シリアル・ライン端末)、 -'showcmd' と 'ruler' オプションはデフォルトではオフです。もしもっと速い端末を -使っているなら、これらをオンにしてみてください。'ttyfast' オプションもオンにし -たいかもしれません。 - -バグ・レポートはこちらに: - - Jens M. Felderhoff, e-mail: <jmf@infko.uni-koblenz.de> - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_msdos.jax b/runtime.old/doc/os_msdos.jax deleted file mode 100644 index 24dae6333..000000000 --- a/runtime.old/doc/os_msdos.jax +++ /dev/null @@ -1,271 +0,0 @@ -*os_msdos.txt* For Vim バージョン 7.3. Last change: 2005 Mar 29 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - *msdos* *ms-dos* *MSDOS* *MS-DOS* -このファイルはVimのMS-DOSバージョンに関する特記事項を記述する。 - -1. MS-DOS向けの2つのバージョン |msdos-versions| -2. 既知の問題 |msdos-problems| -3. 長いファイル名 |msdos-longfname| -4. Termcapコード |msdos-termcap| -5. シフトされた矢印キー |msdos-arrows| -6. ファイル拡張子 |msdos-fname-extensions| -7. メモリ利用と制限 |msdos-limitations| -8. シンボリックリンクファイル |msdos-linked-files| -9. dosでのコピー/貼り付け |msdos-copy-paste| - -さらにWin32とDOSで共通の項目がいくつかある: -ファイルの位置 |dos-locations| -バックスラッシュを使う |dos-backslash| -標準マッピング |dos-standard-mappings| -画面出力と色 |dos-colors| -ファイルの書式 |dos-file-formats| -:cdコマンド |dos-:cd| -中断 |dos-CTRL-Break| -一時ファイル |dos-temp-files| -標準シェルオプション |dos-shell| - -Vimのコンパイルに関してはsrc/INSTALL.pcを参照。 *msdos-compiling* - -============================================================================== -1. MS-DOS向けの2つのバージョン *msdos-versions* - -MS-DOSマシンで利用できるVimには2つのバージョンがある: - - *dos16* -Dos16バージョン どんなMS-DOSシステム上でも使用でき、メモリは640 Kbyteまでしか - 使用しない。OS/2、Windows 95、NT上でも同様に動作する。いくつか - のVim-specific機能(オートコマンド、構文強調表示など)を除外して - ある。pre-386マシン上で使用することを推奨する。 - *dos32* -Dos32バージョン 386プロセッサと|DPMI|ドライバが必要であり、すべての利用可能な - メモリを使用する。長いファイル名とクリップボードをサポートして - いるが、Windows NTでは「ない」。MS-DOS、Windows 3.1および - Windows 95を推奨する。 - -Windows下で動作するVimも2つのバージョンがある: -Win32バージョン Windows 95かWindows NTが必要である、すべての利用可能なメモリを - 使用する、長いファイル名をサポートしている、など。Windows 95上 - ではいくつかの問題がある。Windows NTを推奨する。|os_win32.txt| - を参照。 -Win32 GUI Win32バージョンと同様なものが要求されるが、コンソールの代わりに - 独自のウィンドウで動作する。スクロールバー、メニュー、などがあ - る。Windows 95とWindows NTを推奨する。|gui-w32|を参照。 - -Dos32かWin32バージョンを使用することを推奨する。Dos16バージョンは大変大きなファ -イルでも編集できるが、大きな変更をした場合にメモリを枯渇しやすい。undoを無効に -するには: ":set ul=-1"。Dos16バージョンでの画面更新はDOS、Windows 95、Windows -NT上で最も速い; Windows NT上ではWin32バージョンも同じくらいの速さである。 - - *DPMI* -Dos32バージョンでは、MS-DOS上で動作するのにDPMIドライバが必要になるだろう。もし -Windowsが動作しているか、賢いメモリ管理がインストールしてあれば、おそらくすでに -機能しているだろう。もし"No DPMI"メッセージが出てきたら、DPMIドライバをインス -トールする必要がある。そのようなドライバは実行ファイルと共にCSDPMI4B.ZIPに含ま -れている。毎回Vimを起動する前に"cwsdpmi"を実行する。もしくは常駐させるように、 -autoexec.batに"cwsdpmi -p"を記述する。"CSDPMI*.ZIP"の最新版の入手先は: -"ftp.neosoft.com:pub/users/s/sandmann" - - *minimal-features* -16ビットバージョンのDOSは最小の機能でコンパイルされている。|+feature-list|を参 -照してください。"T"でマークされているのがそれです。 -feature.hを編集し、再コンパイルすることでこれら(のいくつか)を含めることができ -る。 - -============================================================================== -2. 既知の問題 *msdos-problems* - -(MS-DOS 6.xで)書き込みキャッシュを使ってスマートドライブを使っているとき、 -Vimには読み込み専用のファイルシステム(プロテクトされたフロッピーなど)にス -ワップファイルを作ることが可能である。しかしそうすると次のようなメッセージを -受け取るだろう > - A serious disk error has occurred .., Retry (r)? -こうなるとフロッピーのプロテクトを外すかコンピュータのスイッチを切る以外にはで -きる事がない。CTRL-ALT-DELも助けにならない。これはスマートドライブの問題であっ -てVimの問題では断じてない。他の点ではスマートドライブはうまく機能する。もしこ -れが困るようなら、書き込みキャッシュを使わないこと。 - -"share"コマンドが使われるまですでに開いているスワップファイルを読み込むことは -できない。すでにあるスワップファイルに関してよくわからない警告がでた場合には -"share"コマンドをconfig.sysかautoexec.batに書き込むとよい(MSDOSのドキュメント -を参照)。 - -Dos16バージョンでは同時に10ファイル(ウィンドウ内もしくはhidden)しか開くことが -できない。それ以上のファイルを扱おうとすると、ファイルを読んだときや書いたとき -にエラーになるだろう。それにはフィルタコマンドも含まれる。もしくはVimはメモリ -を枯渇し、不規則に問題が起きるだろう。 - -Dos32バージョンでは同時に開くことのできるファイル数は無制限ではない。制限数は -CONFIG.SYS内のFILES設定に依存する。標準では15である; もしたくさんのファイルを -編集する必要があるならば、この数を増やせばよい。 -もしFILESが十分に高く設定されていない場合には、奇妙なエラーが発生し、シェルコ -マンドは破損の原因になるかもしれない! - -Dos32バージョンでは長いファイル名が使用できる。ファイル名の補完を行なったとき、 -短いファイル名に一致したものが見つかるだろう。しかし、これは該当する長いファイ -ル名の結果である。例えば、"this_i~1"という短いファイル名で表わされる -"this_is_a_test"という長いファイル名があったとき、":e *1"コマンドは -"this_is_a_test"の編集を開始する。 - -Dos32バージョンを使っているときDPMIサポートで問題があるならリソースを消費し -ているプログラムがconfig.sysにあるかどうか確認すること。"netx"がこの問題を起 -こすことが知られている。これは"NetWare v. 3.26 Workstation shell"である。 -バージョン3.32にすることでこの問題は解決する。 - -Dos32バージョンはクォーテーションを扱うように引数を解析する。これはファイル名 -にスペースを含むファイルを編集するときに良い。例えば: > - vim "program files\accessories\ppp.scp" -副作用としてはシングルクォートが取り除かれてしまう。これはバックスラッシュをつ -けて回避する。例えば、"fi'le.txt"というファイルを編集するなら: > - vim fi\'le.txt - -============================================================================== -3. 長いファイル名 *msdos-longfname* - -Windows 95上で動作するDos32バージョンは長いファイル名が使用できる。それは標準 -で機能するだろう。使用不可にしたい場合は以下の設定をする: - set LFN=N -これはautoexec.batファイルに記述できる。 - -注: DJGPPをインストールしている場合は、おそらく"LFN=n"を含んだ"djgpp.env"ファ -イルがあるだろう。このとき、長いファイル名を使用可能にするには"LFN=Y"とする必 -要がある。 - -============================================================================== -4. Termcapコード *msdos-termcap* - -もし別の出力方法(例えば、COMポート上のターミナルを使うとき)を利用したいならば、 -ターミナル名を"pcansi"に設定する。必要ならばtermcapオプションを変更することが -できる(|terminal-options|を参照)。 通常のIBM ansi.sysはすべてのbuiltin pcansi -ターミナルのコードをサポートしていないので注意すること。もしansi.sysを使ってい -るのならば、以下のようにしてtermcapエントリt_alとt_dlを削除する必要がある。 > - :set t_al= t_dl= -そうでなければ、画面は正しく更新されないだろう。nansi.sysやnnansi.sys、もしく -はansi.sysに代わるようなものを使うほうが良い。 - -もしCOM:ポートに接続されたターミナル上でVimを使いたいのならば、'bioskey'オプショ -ンをリセットする。そうでなければ、コマンドはPCキーボードから読み込まれるだろう。 -CTRL-CとCTRL-Pは'bioskey'をリセットした状態では、正しく機能しないかもしれない。 - -============================================================================== -5. シフトされた矢印キー *msdos-arrows* - -SHIFT-左矢印とSHIFT-右矢印の代わりに、CTRL-左矢印とCTRL-右矢印を使用する。上矢 -印と下矢印はSHIFTやCTRLとともに使用することはできない。 - -============================================================================== -6. ファイル拡張子 *msdos-fname-extensions* - -MS-DOSはファイル名の拡張子を1つしか許可しない。したがって、拡張子を追加すると -きは、もとのファイル名にある'.'を'_'で置き換え、8文字に切り捨ててから新しい拡 -張子(例えば".swp")が追加される。2つの例: "test.c"は"test_c.bak"になり、 -"thisisat.est"は"thisisat.bak"になる。これらの問題を軽減するために、 -'backupext'は標準で".bak"の代わりに"~"となっている。このとき"thisisat.est"のバッ -クアップファイルは"thisisat.es~"となる。'shortname'オプションは常に設定されて -いるため、利用できない。 - -============================================================================== -7. メモリ利用と制限 *msdos-limitations* - -スワップファイルはテキストの大部分を保持するのによく使われる。大変大きなファイ -ルも編集できるだろう。しかしながら、メモリはundoやその他のことに使用される。も -し大量のテキストを削除したなら、Dos16バージョンではメモリが底をつくだろう。 - -もしVimが"Out of memory"の警告を出したなら、編集を中止すべきだ。その後の編集作 -業の結果は予想できない。'undolevels'を0に設定することでメモリをある程度節約す -る。大きな迷路上で迷走するマクロを動作させることは、メモリを枯渇させることを保 -証する。なぜなら各々の変更はundoとして記憶されるからである。このような場合は -'undolevels'を負の数に設定する。これによりundoを完全に機能させないようにするだ -ろう。 - - *msdos-clipboard-limits* -Dos32バージョンでは、これらの問題を避けるために拡張メモリを使用する。 -しかし、ウインドウズのクリップボードを使うにはDosメモリを使わなければならな -い。つまり多量のテキストをウインドウズのクリップボードとやり取りするのは使用で -きるDosメモリの量に制限されます。 - -普通は"config.sys"に以下の行を追加すれば使用できる最大限のメモリを使えるように -なります。 > - - DOS=HIGH,UMB - DEVICE=C:\WINDOWS\himem.sys - DEVICE=C:\WINDOWS\emm386.exe RAM - -Dos16バージョンにおいてconfig.sysをこのように変更することは、もしもそれだけの -メモリを装備していれば、利用可能なメモリを増やす役目も果たすだろう。 - -Dos16バージョンでは、1行の文字数がおよそ32000文字に制限されている。ファイルを -読み込んだ場合、行は自動的に分割される。しかし、1行が制限文字数を越えるような -編集すると予期しない結果になるかもしれない。 - -============================================================================== -8. シンボリックリンクファイル *msdos-linked-files* - -unix NFSファイルサーバ上でシンボリックリンクされたファイルを編集したとき、問題 -に突き当たるかもしれない。 -ファイルを保存したとき、Vimはシンボリックリンク先には書き出さない。代わりに、 -シンボリックリンクを削除して、その場所に新しいファイルを作成する。 -Unix上では、Vimはリンク(シンボリックまたはハード)に対して準備してある。もとの -ファイルのバックアップ用コピーが作成され、もとのファイルを上書きする。これによ -りファイルのすべてプロパティが同じように残ることを保証する。Unixではないシステ -ム上では、もとのファイルは名前を変更され、新しいファイルが書き出される。保護ビッ -トのみが基のファイルと同じように設定される。しかしながら、これはリンクや他のも -のが存在するNFSマウントされたファイルシステム上では適切に機能しない。現在のバー -ジョンでこれを解決する唯一の方法は、":set nobackup nowritebackup"によってバッ -クアップファイルを作成しないようにすることである。 |'writebackup'| - -Samba などのシステムを通して Unix のファイルシステムをマウントしたときにも似た -ような問題が起こる。Vim が新規ファイルを作成すると、そのファイルはマウントされ -たファイルシステムにデフォルトのユーザIDがつけられる。そのユーザIDは元のユーザ -IDと異なるかもしれない。この問題を避けるには、オプション 'backupcopy' を "yes" -に設定すること。 - -============================================================================== -9. dosでのコピー/貼り付け *msdos-copy-paste* - - *E450* *E451* *E452* *E453* *E454* -32ビットバージョンではレジスタ "* を使ってウインドウズのクリップボードを使用で -きます。メモリの許す限り多量のテキストをコピーできます。 -|msdos-clipboard-limits|参照。Vimから他のVimにコピーする時は -(characterwise/linewise/blockwise)の特性も通知されます。 - -その他のバージョンでは以下を使うことができる。 - -(posted to comp.editors by John Velman <velman@igate1.hac.com>) - -dos上のvim から/へ テキストを コピー/貼り付け する方法: - -1) フルスクリーンからVIMが起動しているウィンドウを取得するにはalt+enterを押す。 - これはフルスクリーンとdosウィンドウを交互に切り替える。 - 注: Windows 95では"Fast Pasting"プロパティのチェックをはずさなければならな - い! MS-DOSウィンドウのプロパティダイアログボックス上で、"MS-DOS - Prompt/Misc/Fast pasting"へ行き、チェックされていないことを確認する。 - これを永続的にするには、"\windows\system\conagent.exe"のプロパティを変更す - る。(Philip Nelsonから、未確認). - -2) Vimに何かを貼り付けるには、Vimを挿入モードにする。 - -3) 貼り付けたいテキストをwindowsのクリップボード上に置く。 - -4) Vimウィンドウの左上にあるコントロールボックス(大きなマイナス符号に似ている) - をクリックする。マウスを使いたくないならば、alt+スペースキーで代用できる。 -5) ドロップダウンリストから"編集"を選ぶ。 -6) さらに開いたドロップダウンリストから"貼り付け"を選ぶ。 - -Vimウィンドウからクリップボードへコピーするには、 - -1) コントロールボックスを選択し、コントロールドロップダウンメニューを表示する。 -2) "編集"を選択する。 -3) "範囲指定"を選択する。 -4) キーボードやマウスを使って、コピーしたい部分をVimウィンドウから選択する。キー - ボードの場合は矢印キーを使用し、選択範囲を広げるにはシフトキーを押しながら - 矢印キーを使用する。 -5) 範囲を選択し終わったら'enter'キーを押す。これで選択範囲がwindowsのクリップ - ボードにコピーされる。この方法は、7-10行目の4-25列というように、どんな矩形 - 範囲でも選択できる。これはVIMウィンドウ内のどんなものでも含めることができる: - 例えば、:!dirの出力。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_os2.jax b/runtime.old/doc/os_os2.jax deleted file mode 100644 index 9d754dc3d..000000000 --- a/runtime.old/doc/os_os2.jax +++ /dev/null @@ -1,209 +0,0 @@ -*os_os2.txt* For Vim バージョン 7.3. Last change: 2007 Apr 22 - - - VIMリファレンスマニュアル by Paul Slootman - - - *os2* *OS2* *OS/2* -このファイルはVimのOS/2バージョンの詳細について述べている。 - -現在のところ、VimのGUIバージョンのネイティブPMは存在しない: OS/2バージョンはコ -ンソールアプリケーションである。しかしながら、Warp4(Win32sをサポートしている) -のユーザならば、Win-OS/2セッションで使用できるWin32sコンパチブルなGUIバージョ -ンが存在する。このファイルではネイティブのコンソールバージョンについて言及す -る。 - - -注意 ~ - -このOS/2への移植版や、私(訳注:筆者Paul Slootman)や、何人かのOS/2ユーザにとって -はちゃんと動作する;しかしフィードバックは少ししかもらえてないので、(OS/2特有 -の)バグがまったく(以下で言及するものを加えても)無いか、バグが現れるような状況 -にまだ誰も至っていないのか、のどちらかである。DosとUnixモードでのファイル入出 -力、バイナリモード、FATの取り扱いなどは、トラブルになっても良さそうだが、全て -正しく動いている。 - -知られている問題の一つは、Vimによって開かれたファイルが、Vimのシェルエスケープ -経由で起動されたプログラムによって、継承されてしまうことである。これは特に、そ -の時実行されていたほかのプログラムがあると、そのプログラムが終了するまで、Vim -がバッファに関連付けられたスワップファイルを消すことができないことを意味する。 -スワップファイルを消す時に、Vimは消去に失敗してしまうので結局消すことができな -い。そのファイルに対して再びVimセッションを開始しようとすると、警告メッセージ -を受け取ることになる。これは":!start epm"とすると再現できる。Vimを一度終了し、 -epmをスタートした時に編集していたファイルを開いてみよう。いま、これの修正を試 -みている。 - -2つ目の問題は、OS/2システムをUnixに対してtelnetしてVimを起動したように、ネット -ワーク経由で使用している状況を、Vimが検出できないことにある。OS/2が「時々」 -ファンクションやカーソルキーを認識し、対応する普通のPCのキーボードから生成され -るOS/2のコードへ変換することから、生じる問題のようである。既に幾つか実験はして -いる(OS/2コードを正しい機能にマッピングしたり)が、最終的なことは何も言えない -(余談だがこれはWarp 3で起こる)。そのうち正しく理解されるだろう。 - - -必要条件 ~ - -Vimを実行するために、emxのランタイム環境が必要になる(最新版は0.9b)。大体次の名 -前で存在する(それについてArchieに聞け(訳注:本当?)): - - emxrt.zip emx runtime package - -LIBPATHに示されるディレクトリのどれかに置くべき、emx.dllのコピーを同梱してあ -る。EmxはGPLに基づき配布されるが、emx.dllライブラリはそうではない(どういう意味 -かはCOPYING.EMXを参照すればわかる)。 - -このemx.dllは、emxfix04.zipパッケージの中にあったもので、残念なことにPOSIXの機 -能であるselect()にバグ持ちである。Vimの3.27よりも古いバージョンは起動する時に -ハングしてしまう(正確にはvimrcの読み込み中)。これが起こってしまうと、Vimが起動 -するまでに何回か<Enter>を叩くことになる。そんときゃVimを更新したほうが良い。 - - -ヘルプとVIMRCファイル ~ - -手に入れたVimのアーカイブを解凍し、解凍した場所からVimを直接起動すれば、Vimは -ランタイムに必要になるファイルや.vimrcを見つけることができるので、特に設定は要 -らない。 - -ランタイムファイルをバイナリとは別の場所に置くならば、環境変数VIMがヘルプファ -イルやシステムの.vimrcの場所を見つけるのに使用される。次のようなエントリーを -CONFIG.SYSに書く: > - - SET VIM=c:/local/lib/vim - -このディレクトリに.vimrcファイルと、その他のVim用ファイルを置く。runtimeディレ -クトリをこのディレクトリにコピーする。Vimはバージョン毎に独自のruntimeディレク -トリを持っている。それは"c:/local/lib/vim/vim54"のように呼ばれる。これでこのよ -うなVimのツリーができあがる: - c:/local/lib/vim/.vimrc - c:/local/lib/vim/vim54/filetype.vim - c:/local/lib/vim/vim54/doc/help.txt - etc. - -Note: OS/2をFATファイルシステムにインストールした場合に対応するため、.vimrc -ファイルは_vimrcでも構わない。Vimはまず.vimrcを探し、それに失敗したら同じ場所 -で_vimrcを探す。.vimrcもしくは_vimrcの存在が'compatible'オプションに影響を与 -え、思わぬ副作用を生むことがある。|'compatible'|参照。 - -OS/2でネットワークドライバを使用するならば、ネットワークドライブにVimをインス -トールすることができ(.vimrcファイルを含めて; これを「システム」vimrcファイルと -言う)、個人的な.vimrcのコピーを使う(これが「ユーザ」vimrcファイル)。ユーザ -vimrcファイルは環境変数HOMEに示されるディレクトリに置く。 - - -ファイル名内の環境変数 ~ - -環境変数HOMEは、ファイル名のなかで~が使用されたときにも使われ、":e ~/textfile" -はHOMEによって示されるディレクトリにある"textfile"を編集することになる。さらに -その他の環境変数も、":n $SRC/*.c"のようにファイル名の中に使用することができ -る。 - -環境変数HOMEha.viminfoファイルの位置を指定するのにも使われる(|viminfo-file|参 -照)。FATファイルシステム上に.viminfoを置くことには、申し訳ないがまだ対応してい -ない。しかし、-iの起動フラグ("vim -i $HOME/_viminfo"のように)を試すことはでき -る。 - -環境変数HOMEが指定されていない場合は、デフォルトとして"C:/"が使用される。 - - -バックスラッシュ ~ - -スラッシュ('/')とバックスラッシュ('\')を使うと、ちょっとした問題がある(詳しい -説明は|dos-backslash|)が、Vimは殆どの場合「正しい」判断をする。Vim自信もファイ -ル名にバックスラッシュを使うが、しかし幸いにも入力されれば普通のスラッシュも受 -け付ける(実際、そうしたほうが都合が良い事がある)。 - - -一時ファイル ~ - -一時ファイル(フィルタリング用)は次に示すディレクトリで、ファイルを作成できた最 -初のディレクトリに置かれる: - $TMP - $TEMP - C:\TMP - C:\TEMP - 現在のディレクトリ - - -端末設定 ~ - - *os2ansi* -環境変数TERMには"os2ansi"を用いる(もしくはなにもしない、デフォルトで正しく設定 -される)。他のアプリケーション用にTERMを別の値に設定しなければならない時には、. -vimrcの中で端末としてos2ansiを設定することができる。OS/2のANSIエミュレーション -にはかなり制限があることは問題である(例えば行単位での挿入や削除が無い)。 - -もしも(別のプログラムを使用しているとかで) TERMとして別の値を使いたいならば、 -TERMに設定する値が、termcapに適切なキーマッピングを持つエントリとして含まれて -いるか確認する。emxと一緒に配布されるtermcap.datが常にあるとは限らない。選択し -たtermcapエントリーに付け加えるのに適当な値の幾つかがこれである; これらはカー -ソルキーや、名前つき機能キー(pagedownとか)が効くようにしている。 - - :ku=\316H:kd=\316P:kl=\316K:kr=\316M:%i=\316t:#4=\316s:\ - :kD=\316S:kI=\316R:kN=\316Q:kP=\316I:kh=\316G:@7=\316O:\ - :k1=\316;:k2=\316<:k3=\316=:k4=\316>:k5=\316?:k6=\316@:\ - :k7=\316A:k8=\316B:k9=\316C:k;=\316D: - - -Paul Slootman - - -43行ウィンドウ ~ - -Steven Tryonが提案した、大きなウィンドウでVimを起動する方法: - -PMMailのようなOS/2 WPSのアプリケーションからVimを起動する時には、デフォルトの -25行モードで起動する。快適なウィンドウサイズで使うために、独自の拡張エディタを -"vimbig.cmd"として定義し、'vimbig2.cmd"を呼ぶようにする。多分、かなり強引な方 -法だけど、でもちゃんと動く。 - -vimbig.cmd: > - @echo off - start "Vi Improved" /f vimbig2.cmd %1 %2 %3 %4 - -vimbig2.cmd: > - @echo off - mode 80,43 - vim.exe %1 %2 %3 %4 - exit -< - -クリップボードを使う (Alexander Wagnerの提供) - -OS/2版のVimはシステムのクリップボードに直接アクセスできない。クリップボードを -使うにはほかのアプリケーションを経由する必要がある。これには Stefan Gruendel -によるフリーソフトのパッケージ clipbrd.zip が使える。コンパイルされたバイナリ -と全てのソースがここからダウンロードできる: - http://www.os2site.com/sw/util/clipboard/index.html - http://download.uni-hd.de/ftp/pub/os2/pmtools/ - -このパッケージのインストールは、パッケージに入っている二つの実行可能ファイルを -Vimから呼び出せるようにPATHが通ったディレクトリに置くだけである。 - -クリップボードからVimにコピーするには :r コマンドを使う。次のようにして -clipbrd.exeを呼び出すだけだ: > - - :r !clipbrd -r - -Vimからシステムのクリップボードにコピーするには普通にテキストを選択して次の -ようにする: > - - :!clipbrd -w - -これで選択したものをOS/2のクリップボードに書き込める。 - -簡単に使えるようにこれらのコマンドをマッピングしておくとよい。例えばクリップ -ボードからVimに張り付けるのに F11 を使い、選択したテキストをクリップボードにコ -ピーするのに F12 を使うなら: > - - if has("os2") - imap <F11> <ESC>:r !clipbrd -r<CR>i - vmap <F12> :!clipbrd -w<cr> - else - imap <F11> <ESC>"*p<CR>i - vmap <F12> "*y - endif - -これはOS/2では clipbrd を使い他のプラットフォームではVimの機能を使う。(この -機能をいつも有効にしておくには .vimrc に上記の内容を書いておく) - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_qnx.jax b/runtime.old/doc/os_qnx.jax deleted file mode 100644 index 3aa53b791..000000000 --- a/runtime.old/doc/os_qnx.jax +++ /dev/null @@ -1,137 +0,0 @@ -*os_qnx.txt* For Vim バージョン 7.3. Last change: 2005 Mar 29 - - - VIMリファレンスマニュアル by Julian Kinraid - - - *QNX* *qnx* - -1. 概要 |qnx-general| -2. Vimをコンパイルする |qnx-compiling| -3. 端末サポート |qnx-terminal| -4. Photon GUI |photon-gui| -5. Photon フォント |photon-fonts| -6. バグと今後の予定 - -============================================================================== - -1. 概要 *qnx-general* - -ONX上のVimはほとんどUNIXと同じように動作する。 |os_unix.txt| - -============================================================================== -2. Vimをコンパイルする *qnx-compiling* - -Vimは標準的なconfigure/makeのやり方でコンパイルすることができる。X11を使ってコ -ンパイルしたいならば、configureにオプション--with-xを渡す。そうではなく. -/configureに引数を渡さない場合や、--enable-gui=photonを渡した場合には、Photon -GUIをサポートする。その他の有/無効を指定できる機能については./configure --help -を実行することで知ることができる。 - -============================================================================== -3. 端末サポート *qnx-terminal* - -Vimはコンパイル時にオプションが指定されれば、ptermでのマウスとクリップをサポー -トしている。通常そのオプションは指定される。 - -マウスのサポートに関わるオプションには|'mouse'|と|'ttymouse'|がある。マウスを -使用時には、単純に左右のボタンのクリックとダブルクリックのみがサポートされる。 -マウス使用中に<Shift>, <Ctrl>, <Alt>を押下状態にすると、ptermはマウスを自分で -解釈してしまう。その結果、範囲選択が成されるが、これはVimが行なうのそれとは本 -質的に異なったものである。 - -マウス使用時には<Alt-RightMouse>でptermのメニューを開くことができる。vim側でマ -ウスを無効にするには、オプション|'mouse'|を空に設定する: > - :set mouse= - -============================================================================== -4. Photon GUI *photon-gui* - -GUIのVimを起動するには、gvimかvim -gを実行する。そうでなければ端末版が起動す -る。詳細な情報は - |gui-x11-start| - -サポートされる機能: - :browse コマンド |:browse| - :confirm コマンド |:confirm| - カーソルの点滅 |'guicursor'| - メニュー |:menu| - ポップアップメニュー |popup-menu| - メニューの優先順位 |menu-priority| - ツールバー |gui-toolbar| - |'toolbar'| - フォント選択ダイアログ (:set guifont=*) |photon-fonts| - マウスフォーカス |'mousefocus'| - マウスカーソルを隠す |'mousehide'| - マウスカーソルの形 |'mouseshape'| - クリップボード |gui-clipboard| - -未完成の機能: - 様々な国際化のサポート、アラビア語やヘブライ語のサポート、 - エンコードのサポート、その他諸々。 - - このヘルプファイル - -サポートされていない機能: - 検索/置換ウィンドウ |:promptfind| - 切り取りメニュー - - このリストに書こうとさえ思いつかない、だから書けない他のもの。 - -============================================================================== -5. Photon フォント *photon-fonts* - -オプション'guifont'でGUIのフォントを設定する: > - :set guifont=Lucida\ Terminal -< -指定するフォントは等幅でなければならず、フォント名の中の空白文字は'\'でエス -ケープする必要がある。PC端末で使われるデフォルトのフォントサイズは8である。 -フォント名に'*'を使用すると、フォント選択のためにPhotonの標準的なフォント選択 -ダイアログが開く。 - -フォント名に続いて、フォントのサイズとスタイルを制御するための補助設定を含める -ことができる。各補助設定は':'で区切る。フォントが全てが、全部のスタイルをサ -ポートしているわけではない。 - -補助設定: - s{size} フォントのサイズを{size}に設定する。 - b 太字 - a アンチエイリアス(縁が滑らかになる) - i 斜体 - -例:: - -monospaceフォントをサイズ10のアンチエイリアスで > - :set guifont=monospace:s10:a -< -Courierフォントをサイズ12の太字 + 斜体で > - :set guifont=Courier:s12:b:i -< -ダイアログでフォントを選択する > - :set guifont=* -< -============================================================================== -6. バグと今後の予定 - -既知の問題: - - 外部プログラムを実行すると時々Vimがハングする。回避方法: - 次の行を|vimrc|ファイルに追加する: > - set noguipty - -Bugs: - - メニューの強調にまだ少し問題がある - - phiditto/phinows/その他などの、太字をサポートしていないフォントを使 - 用すると、Vimが太字テキストを描画しようとした時に失敗してしまう。 - (訳注:phidittoやphinowsはフォント名だと推測される) - - カーソルが時々、見え難くなる。 - - 修正可能な相当数の一般的でない問題 - -Todo: - - 多言語対応を進める - - メニューとツールバーで使用されるフォントを設定するオプション - - 検索と置換のダイアログ - - クライアントサーバ通信の機能 - - 切り取りメニュー(予定) - - - 外部コマンドの実行をfork()からspawn()に切換える。 - - vim:tw=78:sw=4:ts=8:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_risc.jax b/runtime.old/doc/os_risc.jax deleted file mode 100644 index ee5091242..000000000 --- a/runtime.old/doc/os_risc.jax +++ /dev/null @@ -1,11 +0,0 @@ -*os_risc.txt* For Vim バージョン 7.3. Last change: 2011 May 10 - - - VIMリファレンスマニュアル by Thomas Leonard - - - *riscos* *RISCOS* *RISC-OS* -RISC OS サポートはパッチ 7.3.187 によって削除されました。 -RISC OS で Vim を使いたい場合はそのパッチ以前のファイルを取得してください。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_unix.jax b/runtime.old/doc/os_unix.jax deleted file mode 100644 index 12974f3e1..000000000 --- a/runtime.old/doc/os_unix.jax +++ /dev/null @@ -1,62 +0,0 @@ -*os_unix.txt* For Vim バージョン 7.3. Last change: 2005 Mar 29 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - *unix* *Unix* -このファイルは Unix のバージョンの Vim で特殊な事柄について書いてあります。 - -Vim を Unix でコンパイルするには src ディレクトリにある "INSTALL" と -"Makefile" をご覧下さい。 - -デフォルトのヘルプファイルの名前は "/usr/local/lib/vim/help.txt" です。 -"s:.vimrc" と "s:.exrc" のかわりに "$HOME/.vimrc" と "$HOME/.exrc" が使われま -す。さらに "/usr/local/etc/vimrc" が初めに使われます。もし "/usr/local/share" - があれば "/usr/local/lib" のかわりにそちらが使われます。 - -(フィルターを実行するときに使われる)一時的なファイルは "/tmp" に置かれます。も -しほかの場所におきたければ $TMPDIR 環境変数を自分の好みの場所に設定してくださ -い。 - -ワイルドカード展開と '~' (ホームディレクトリー)と '$' (環境変数)を使うことがで -きます。 - - *fork* *spoon* -可能であれば fork()/exec() が外部コマンドの実行に使われます、そうでない場合は -もう少し遅い system() が使われます。fork()/exec() が使われる場合は |+fork| が、 -system() が使われる場合は |+system()| が ":version" コマンドの出力に含まれます。 -これはコンパイルするときに変更することができます。 -(GUI バージョンのフォークに関しては |gui-fork| をご覧下さい) - -Unix では端末の更新がしばしば遅いので(例: シリアルライン端末、suntools でのシェ -ルウインドー)、'showcmd' と 'ruler' オプションはデフォルトでオフにしてあります。 -もし速い端末を使っているのであればこれらをオンにしてみてください。それと -'ttyfast' オプションもオンにしておきたいかもしれません。 - -Vim を xterm 上で使っている場合 'mouse' オプションを "a" にセットすることで - Vim でマウスクリックを使うことができるようになります。X-server へのアクセスが -あれば GUI スタイルのコピー/ペーストが利用できます。そしてマウスをドラッグして -いる間ビジュアルなフィードバックが得られるようになります。もしまだ xterm での -マウスを使ってのコピー/ペーストを行いたい場合はマウスを使うときに Shift キーを -押すようにしてください。参照 |mouse-using|。もし十分に新しい xterm を使っていれ -ば 'ttymouse' オプションを通してドラッグする間にビジュアルなフィードバックを得 -られます。 - - *terminal-colors* -Vim で色を使う場合は次のような例を使うことができます(もし端末が色をサポートし -てはいるけれど "T_Co" が空かゼロの場合): > - :set t_me=^[[0;1;36m " ノーマルモード(t_mr と t_md を消す) - :set t_mr=^[[0;1;33;44m " 反転表示モードオン - :set t_md=^[[1;33;41m " 太字表示モードオン - :set t_se=^[[1;36;40m " 強調表示モードから抜ける - :set t_so=^[[1;32;45m " 強調表示モード開始 - :set t_ue=^[[0;1;36m " 下線モードから抜ける - :set t_us=^[[1;32m " 下線モード開始 -[ ^[ は <Esc> で入力するには CTRL-V <Esc> とタイプします] - -本物の色端末では ":highlight" コマンドを使うこともできます。 - -"tools/vim132" ファイルは Vim を vt100 もしくはそれによく似た端末上で 132カラ -ムモードで使うためのシェルスクリプトです。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_vms.jax b/runtime.old/doc/os_vms.jax deleted file mode 100644 index 024ce0861..000000000 --- a/runtime.old/doc/os_vms.jax +++ /dev/null @@ -1,943 +0,0 @@ -*os_vms.txt* For Vim バージョン 7.3. Last change: 2010 Aug 16 - - - VIMリファレンスマニュアル - - - *VMS* *vms* -このファイルにはVMS版のVimについての詳細が書かれている。 -この情報へはVimのコマンドプロンプトから:help VMSとキー入力することで辿り着くこ -とができる。 - - 1. はじめに |vms-started| - 2. ファイル入手 |vms-download| - 3. コンパイル |vms-compiling| - 4. 問題点 |vms-problems| - 5. 配置(インストール) |vms-deploy| - 6. 実践利用 |vms-usage| - 7. GUIモードの論点 |vms-gui| - 8. 利用時の覚書 |vms-notes| - 9. VMS関連の変更点 |vms-changes| -10. 著者 |vms-authors| - -============================================================================== - -1. はじめに *vms-started* - -Vim(Vi IMproved)はvi互換のテキストエディタで、人類にとって既知の殆ど全てのオペ -レーティングシステム(以下OS)で動作する。現在ではOpenVMS上でも文字ベース及び -X/Motif環境でVimを使用することができる。Vimの全機能が利用可能で、他のOS上のVim -と完全な互換性がある。 - -============================================================================== - -2. ファイル入手(ダウンロード) *vms-download* - -Vimのソースコードは公式サイトからftpでダウンロードすることができる: - ftp://ftp.vim.org/pub/vim/ -またはミラーサイトを利用しても良い: - ftp://ftp.vim.org/pub/vim/MIRRORS - -VMSでvim.exeを構築するにはUNIXとextraアーカイブの両方が必要である。Vimの全機能 -を利用するにはランタイムアーカイブも同様に必要となる。 - -コンパイル済み実行可能ファイルは以下のところで入手可能: - http://www.polarfox.com/vim/ - ftp://ftp.polarhome.com/pub/vim/ - -コンパイル済みバイナリを利用するには、以下のどれか1つのアーカイブが必要: - - vim-XX-exe-ia64-gui.zip IA64 GUI/Motif用実行可能ファイル - vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK用実行可能ファイル - vim-XX-exe-ia64-term.zip IA64 console用実行可能ファイル - vim-XX-exe-axp-gui.zip Alpha GUI/Motif用実行可能ファイル - vim-XX-exe-axp-gtk.zip Alpha GUI/GTK用実行可能ファイル - vim-XX-exe-axp-term.zip Alpha console用実行可能ファイル - vim-XX-exe-vax-gui.zip VAX GUI用実行可能ファイル - vim-XX-exe-vax-term.zip VAX console用実行可能ファイル - -そしてもちろん(これはなくてもよい) - vim-XX-runtime.zip Vim用ランタイムファイル - -アーカイブには次のファイルが含まれる: vim.exe, ctags.exe, xxd.exe, mms_vim.exe - -GTK 用実行可能ファイルでは Alpha と IA64 プラットフォームで利用可能な GTKLIB -が必要。 - -============================================================================== - -3. コンパイル *vms-compiling* - -ファイル [.SRC]INSTALLVMS.TXT を参照。 - -============================================================================== - -4. 問題点 *vms-problems* - -コードはDEC Cコンパイラを用いて、Alpha, VAX, IA64 プラットホームのOpen VMSバー -ジョン 6.2 から 8.2 でテストされた。それらでは大きなも問題なく動作するだろう。 -利用しているシステムにインクルードライブラリの欠けがある場合には、ファイル -OS_VMS_CONF.Hを修正することで対応する。 - -Vimを+perlや+python、その他のオプションを追加して構築するならば、まず始めに -OpenVMS版のPerlやPythonを入手する必要がある。それらのライブラリを構築しインス -トールしファイルOS_VMS.MMS内の適切な箇所を変更する。Vimの方には何の問題もない -だろう。 - -GTK, XPM のライブラリパスも MAKE_VMS.MMS で設定される。 - -NOTE: VAXではDEC Cコンパイラを使えば問題ない。VAXCコンパイラはプリプロセッサ命 -令の構文にANSI C非互換な部分がある。従ってプリプロセッサ部分をVAXCコンパイラの -解釈できる形へ変換するプログラムを使用しなければならない。詳細はINSTALLvms.txt -を参照。 - -MMS_VIM.EXEはVIM.EXEと一緒に構築されるが、CTAGS.EXEとXXD.EXEは手動でサブディレ -クトリ<.CTAGS>や<.XXD>へ移動して個別に構築しなければならない。CTAGSとXXDのVMS -用Makefileが常に最新のものとは限らないので注意を払う必要がある。 - -もはやCTAGSはVimとは独立したソフトウェアになっているが、以下で述べるように -OpenVMS特有のソースコードにはCTAGSのソースコードファイルも含まれている。 - -詳しいユーザならばファイルFEATURE.Hで曲芸的なことに挑戦しても良いだろう。 - -+xfontsetと+ximオプションを使用してコンパイルすることも可能だが、その際はGUIの -フォント等その他のものも正しく設定しなければならない。Vimのコマンドプロンプト -から:help ximを参照すること。 - -GUIでGTKアイコンを使いたい場合には、OpenVMS用のGTKをダウンロードしてインストー -ルする必要がある。もしくは polarhome.com で提供されるLIBGTKという共有可能なラ -ンタイムイメージが必要になるだろう。 - -これ以上に高度な質問は、Vim on VMSのメーリングリストに送って欲しい。アドレスは - <vim-vms@polarhome.com> -メーリングリストについての詳しいことは以下を参照すること: - http://www.polarhome.com/mailman/listinfo/vim-vms - -============================================================================== - -5. 配置(インストール) *vms-deploy* - -Vimはドキュメントとランタイムファイルを保持するのに特別なディレクトリ構成を採 -用している: - - vim (変更可能) - |- tmp - |- vim57 - |----- doc - |----- syntax - |- vim62 - |----- doc - |----- syntax - |- vim64 - |----- doc - |----- syntax - vimrc (システム設定ファイル) - gvimrc - -vim.exeがドキュメントやファイル形式や構文等のファイルを見つけ、どこに一時ファ -イルを作成すべきか知るためには: > - - define/nolog VIM device:[path.vim] - define/nolog VIMRUNTIME device:[path.vim.vim60] - define/nolog TMP device:[path.tmp] - -このようにしなければならない。Vimに付属の"runtime"サブディレクトリはvimruntime -にコピーする。 - -論理名$VIMRUNTIMEと$TMPはオプションになるが、推奨される。 - -$VIMRUNTIMEが設定されていない時はVimが推測し自動的に設定する。 -詳細は:help runtimeを参照。 - -$TMPが設定されていない時は、CTAGSやXXDや印刷などの一時ディレクトリを使用する機 -能を利用できなくなる。ディレクトリ$TMPはユーザが読み書き可能でなければいけな -い。一番簡単な$TMPの設定方法は論理名として定義することである。 > - - define/nolog TMP SYS$SCRATCH -もしくは: > - define/nolog TMP SYS$LOGIN - -============================================================================== - -6. 実践利用 *vms-usage* - -通常は1つのバージョンのVimだけが実行するから、Vimのためには1つのディレクトリを -使用するだけで充分である。 -全てのVimランタイムディレクトリ構造をインストール位置にコピーする。(SYS$LONG -ディレクトリにある)LOGIN.COMに以下の内容を付け加える。 -論理名$VIMを設定: > - - $ define VIM device:<path> - -幾つかシンボルを定義: > - - $ ! viはvimをキャラクタモードで起動する - $ vi*m :== mcr device:<path>VIM.EXE - - $ ! gviはvimをGUIモードで起動する - $ gv*im :== spawn/nowait mcr device:<path>VIM.EXE -g - -シンボルのカスタマイズとコンフィギュレーションについては以下で述べる NOTE も -チェックすること。 - -.vimrcと.gvimrcをホームディレクトリ(SYS$LOGIN)に作成する。 - -いちばん簡単な方法は設定例のファイルをリネームして利用することである。元の$VIM -ディレクトリにメニューファイル(MENU.VIM)やvimrcやgvimrcを置いても良いだろう。 -それらは全てのユーザにとってデフォルト設定として機能するので、ホームディレクト -リのファイル.vimrcと.gvimrcではユーザ独自の追加設定だけを行なえば充分となる。 -それらは問題なく動作する。 - -NOTE: システム設定ファイル(全てのユーザにとってのデフォルト)には先頭に"."が付 -かない。だからそれらの名前は: > - - VIM$:vimrc - VIM$:gvimrc - VIM$:menu.vim - -このようになる。そして各ユーザのカスタマイズ設定ファイルは: > - - sys$login:.vimrc - sys$login:.gvimrc - -となる。全てが正しい場所にあるかどうかはコマンド:versionにより確認できる。 - -LOGIN.COMの例: > - - $ define/nolog VIM RF10:[UTIL.VIM] - $ vi*m :== mcr VIM:VIM.EXE - $ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40 - $ set disp/create/node=192.168.5.223/trans=tcpip - -NOTE: 独立サーバやクラスタ環境で使用しているならばこの設定で充分であろう。しか -しノード間エディタとしてVimを使用する場合には次のようにした方がより使いやすい -だろう。ただ "完全な" パスを指定する必要がある: > - - $ define VIM "<server_name>[""user password""]::device:<path>" - $ vi*m :== "mcr VIM:VIM.EXE" - -例としては: > - - $ define VIM "PLUTO::RF10:[UTIL.VIM]" - $ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required - -異なるVimのバージョンを同環境にインストールしてあるならば、正しいVimのバージョ -ンを指すように論理名$VIMRUNTIMEを設定することもできる。$VIMRUNTIMEが設定されて -いないときは、Vimは論理名$VIMからその値を借りてくる。論理名$VIMRUNTIMEについて -のより詳しい情報はVimコマンド :help runtime をキー入力することで得ることができ -る。 - -システム管理者はシステム全体にVimをインストールしたいかもしれない。その場合に -は SYS$System:SYLOGICALS.COM に追加する。 > - - $ define/nolog/sys VIM device:<path> - $ define/nolog/sys TMP SYS$SCRATCH - -SYS$STARTUP:SYLOGIN.COM にも追加する > - - $ vi*m :== mcr VIM:VIM.EXE - $ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40 - - -これによりシステム全てのユーザから通常のVimが利用可能になるだろう。 - -重要: OpenVMS (および大文字・小文字を区別しないシステム)上の Vim は、コマンド -ライン引数が小文字であると仮定する。コマンドライン引数が大文字であることを示す -には、記号 "/" を使わねばならない。 - -例: - > - vim -R filename ! -r と解釈され、スワップファイルを表示して終了する - vim -/r filename ! -R と解釈され、読み込み専用モードになる("view"と同 - じ) - vim -u <vimrc> ! -u と解釈され、.vimrc の代わりに <vimrc> を使う - vim -/u <gvimrc> ! -U と解釈され、.gvimrc の代わりに <gvimrc> を使う - -============================================================================== - -7. GUIモードの論点 *vms-gui* - -OpenVMS は本物のメインフレーム OS であり、したがって、GUI コンソールが備わっ -ていたとしても、大多数のユーザは日中の通常業務で X/Window 環境を使わない。 -Vim を GUI モードで「簡単に」起動することはできないが、しかし、極めて困難と -いうことでもない。 - -まず始めに。GUI の機能を有効にしてコンパイルされた実行ファイルが必要だ。 - -次に。VMS サーバに DECW/Motif がインストールされていなければならない。そうし -ないといくつかの共有ライブラリに関してエラーが生じるだろう。 - -そして。GUI/GTK 対応の拡張機能を使って Vim を実行したいなら、GTK、もしくは -GTK ランタイム (LIBGTK など) もインストール必要がある。 -LIBGTK は http://www.polarhome.com/vim/ からダウンロードできる。 - -1) VMS X/Motifコンソールを利用しているならば: - このコマンドでVimを起動する: > - - $ mc device:<path>VIM.EXE -g -< - もしくはVimコマンドプロンプトで :guiを キー入力する。詳細は:help gui。 - -2) UNIXやリモートX VMSのコンソールなど他のXウィンドウ環境を利用しているならば - ホストの表示設定を行なう: > - - $ set disp/create/node=<your IP address>/trans=<transport-name> -< - そして1)と同様にVimをスタートする。もっと助けになる情報はVIMの文章かVMSのプ - ロンプトで help set disp とキー入力すれば得ることができる。 - 例: > - - $ set disp/create/node=192.168.5.159 ! デフォルトはDECnet - $ set disp/create/node=192.168.5.159/trans=tcpip ! TCP/IPネットワーク - $ set disp/create/node=192.168.5.159/trans=local ! 同じノードに表示 - -NOTE: これらのうちからどれか1つを選ぶ必要がある。もっと情報が必要ならばVMS -プロンプトで $help set disp とキー入力する。 - -3) 別の簡潔な方法は、すでに OpenVMS に XDM がインストールされているならそれ - を使うことである。GUI コンソールを使うように XDM クライアントから作業でき - る。 - -4) MS-Windowや他の非Xウィンドウ環境の場合: - Xサーバを設定して2)と同様にする。 - MS-WindowsではフリーのXサーバMIXや、Omni X等が利用可能である。 - また、DEC により提供されている eXcursion や ReflectionX という素晴らしい - 商用製品もある。 - -注意してほしいのだが、CUI での使用時には、GUI を無効にした物のほうが GUI を -有効にした物よりも若干起動時間が短い。したがって、GUI の機能を使わないのな -ら、非 GUI 版の実行ファイルを選ぶ価値はある。 - -============================================================================== - -8. 利用時の覚書 *vms-notes* - -8.1 バックスペースとデリート -8.2 フィルタ -8.3 VMSのファイルバージョン番号 -8.4 ディレクトリ変換 -8.5 リモートホストの実際 -8.6 端末の問題 -8.7 16進数編集とその他のツール -8.8 vimrcとgvimrcの読み込み -8.9 Vimからの印刷 -8.10 シンボルの設定 -8.11 diff と その他の GNU プログラム -8.12 diff モード -8.13 C 言語のキーワードに '$' を認める -8.14 初心者のための VIMTUTOR -8.15 コンソールモードで起動が遅い問題について -8.16 共通の VIM ディレクトリ - 異なるアーキテクチャ - -8.1 バックスペースとデリート - -VMSにはバックスペースとデリートキーについて矛盾がある。 -:fixdel ではこの問題を解決できないので、次のようにする必要がある: > - - :inoremap ^? ^H " CUI(端末)モード用 - :inoremap <Del> ^H " GUIモード用 - -詳細は8.6章(端末の問題)を参照。 -(Bruce Hunsaker <BNHunsaker@chq.byu.edu> Vim 5.3) - - -8.2 フィルタ - -Vimはフィルタをサポートしている。UNIXのような入出力のリダイレクト -( < infile > outfileの仕組み)を取り扱えるソートプログラムがあれば: > - - :map \s 0!'aqsort<CR> - -このように使うことができる。 -(Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov> Vim 5.4) - - -8.3 VMSのファイルバージョン番号 - -Vimはファイルを1つ上のバージョン番号のファイルとして保存する。次の設定: > - - :set nobackup " バックアップファイル *.*_ backup を作らない - :set nowritebackup " VMSでは意味をなさない。デフォルト値。 - -を行なうと良い。クラッシュからのリカバリはデフォルトのスワップファイルを使って -いる時よりも完全に動作する。詳細は :help swapfile を参照。 - -(Claude Marinier <ClaudeMarinier@xwavesolutions.com> Vim 5.5, Zoltan Arpadffy -Vim 5.6 ) - - -8.4 ディレクトリ変換 - -VimはUNIXスタイルのパス名とUNIX/VMS混合スタイルのパス名を内部的にVMSスタイルに -変換している。典型的な変換には共通点がある: - - /abc/def/ghi -> abc:[def]ghi. - /abc/def/ghi.j -> abc:[def]ghi.j - /abc/def/ghi.j;2 -> abc:[def]ghi.j;2 - /abc/def/ghi/jkl/mno -> abc:[def.ghi.jkl]mno. - abc:[def.ghi]jkl/mno -> abc:[def.ghi.jkl]mno. - ./ -> 現在のディレクトリ - ../ -> 相対的な親ディレクトリ - [.def.ghi] -> 相対的な子ディレクトリ - ./def/ghi -> 相対的な子ディレクトリ - -NOTE: 折カッコ<,>を(device:<path>file.ext;version)のように使うこともできる。 -例: rf10:<user.zay.work>test.c;1 - -(David Elins <delins@foliage.com>, Jerome Lauret -<JLAURET@mail.chem.sunysb.edu> Vim 5.6 ) - - -8.5 リモートホストの実際 - -Vimをノード間エディタとして使用することができる。 -1. リモートノードのファイルを編集する: > - - vi "<server>""username passwd""::<device>:<path><filename>;<version>" - -例: > - vi "pluto""zay passwd""::RF10:<USER.ZAY.WORK>TEST.C;1" - -NOTE: 構文が非常に重要で、間違えるとVMSは複数パラメータと勘違いしてしまう(結果 -的にファイルがみつからない、ということになる)。 - -2. Vimをノード間エディタとして設定する。使用しているホストにVimがインストール -されていない場合、IPアドレスを設定し、サーバ名を含んで完全なVimのパスを指定し -下記のようなコマンドプロシージャを実行する: > - - $ if (p1 .eqs. "") .OR. (p2 .eqs. "") then goto usage - $ set disp/create/node=<your_IP_here>/trans=tcpip - $ define "VIM "<vim_server>""''p1' ''p2'""::<device>:<vim_path>" - $ vi*m :== "mcr VIM:VIM.EXE" - $ gv*im :== "spawn/nowait mcr VIM:VIM.EXE -g" - $ goto end - $ usage: - $ write sys$output " Please enter username and password as a parameter." - $ write sys$output " Example: @SETVIM.COM username passwd" - $ end: - - (訳注: 例中のコマンドで表示されるメッセージは翻訳していない) - -NOTE: これをクラスタ環境では使わない(その必要もない)。これを行なうと非常に遅く -なるが、それでもローカルで実行するEmacsよりは速いだろう。 :-) - -(Zoltan Arpadffy, <arpadffy@altavista.net> Vim 5.6) - - -8.6 端末の問題 - -利用している端末の名前をVimに指示していない場合、Vimは起動時に以下のメッセージ -を表示してデフォルトの端末を見つけようと試みる: > ---- -Terminal entry not found in termcap -'unknown-terminal' not known. Available built-in terminals are: - builtin_gui - builtin_riscos - builtin_amiga - builtin_beos-ansi - builtin_ansi - builtin_vt320 - builtin_vt52 - builtin_pcansi - builtin_win32 - builtin_xterm - builtin_iris-ansi - builtin_debug - builtin_dumb -defaulting to 'vt320' ---- -(訳注: メッセージの翻訳は省略します。実際には翻訳されて表示される可能性があり -ます。) - -解決法はデフォルトの端末名を設定することである: > - - $ ! 不明な端末名。代わりにvt320かansiを使用する。 - $ ! 注意: この名前は大文字小文字が区別される。 - $ define term "vt320" - -VT100からVT320までの端末(VT300, VT220, VT200)については追加のキーボードマッピ -ングは必要ない。それらはカーソルキー、インサートキー、デリートキー等などを含め -て完全に動作する。ただしGUIモードでのバックスペースは除く。これを解決するには -以下の設定を.gvimrcに追加する: > - - inoremap <Del> <BS> - -Vimはそれらが高速な端末かどうかも認識する: - -ウィンドウ間のスクリーンの行ジャンプにイライラするようならば、次の設定をファイ -ル.vimrcに設定する: > - - set ttyfast " 高速端末を指定 - -NOTE: Vimをリモートホストで使用しているか接続が非常に低速な場合には、この高速 -端末のオプションは設定しないことが推奨される: > - - set nottyfast " set terminal to slow mode - -(Zoltan Arpadffy, Vim 5.6) - - -8.7 16進数編集とその他のツール - -OpenVMSとその他のシステムとの間の重要な違いはVMSが実行ファイルを実行するのに特 -別なコマンドを使用しているということである: > - - RUN <path>filename - MCR <path>filename <parameters> - -OpneVMSのユーザはVimのコマンド :! が単にDCLプロンプトに落ちているだけだと意識 -する必要がある。この機能により全てのDCLコマンドを問題なく実行できるのだが、XXD -やCTAGS、JTAGS等のプログラムを実行する場合には、Vimの文章(:help xxd参照)にその -まま従ってしまうと問題になる。 - -解決方法: MCコマンドを実行し、実行ファイルのフルパスを追加する。 -例: コマンド :%!xxd の代わり: > - - :%!mc vim:xxd - -…一般化すれば: > - :!mc <path>filename <parameters> - -NOTE: XXDやCTAGSをGUIメニューから使うこともできる。 - -ctagsをカスタマイズするには論理名$CTAGSに標準的なパラメータをこのように設定す -る: > - - define/nolog CTAGS "--totals -o sys$login:tags" - -追加の情報は、:help tagsearch及びhttp://ctags.sourceforge.net/ctags.htmlにある -CTAGSの文章を読むこと。 - -(Zoltan Arpadffy, <arpadffy@altavista.net> Vim 5.6-70) - - -8.8 vimrcとgvimrcの読み込み - -他のプラットホーム(例: Windows)で使用している.vimrcと.gvimrcを使うには、その -ファイルをftpで転送すると問題が起こるだろう: VMSは異なる改行記号を採用してい -る。 -そのため、次のようにしても.vimrc/.gvimrcは読み込めない: > -> - :so sys$login:.vimrc - -1つのトリックとしては他のプラットホーム上でファイルを圧縮し(例: zip)VMS上で伸 -長する方法がある。それでも同じ現象になるならばファイルをコピー&ペーストで作成 -することを試みる(この両操作を行なうためには、両方のシステムが1つのマシンから使 -えなければならない。例えばWindowsでXtermを使用するか、VMSからWindowsにtelnetす -るかのように)。 - -(Sandor Kopanyi, <sandor.kopanyi@altavista.net> Vim 6.0a) - - -8.9 Vimからの印刷 - -VMSで(GUIモードの)Vimからの印刷を可能にするには論理名$TMPを一時ディレクトリを -指すようにし論理名SYS$PRINTにデフォルトのプリントキューを指定する必要がある。 -例: > - - $define SYS$PRINT HP5ANSI - -バッファ全体を、またマークした範囲だけでも、印刷することができる。 -詳細は :help hardcopy にある。 - -(Zoltan Arpadffy, <arpadffy@altavista.net> Vim 6.0c) - -8.10 シンボルの設定 - -このようにGVIMを使用している際に、親となるターミナルで<CTRL-Y>を押すと、gvimが -終了してしまう問題がある。この問題は異なるシンボルを定義することで回避できるよ -うだ。それは: > - - $ GV*IM:==SPAWN/NOWAIT/INPUT=NLA0: MCR VIM:VIM.EXE -G -GEOMETRY 80X40 - -/INPUT=NLA0: が親ウィンドウからの停止信号をブロックするために、親の端末とgvim -のプロセスの標準入力を切り離す。 --GEOMETRYがない場合、GVIMウィンドウのサイズは最小となり、大きさを修正したあと -でもメニューが混乱しておかしなことになるだろう。 - -(Carlo Mekenkamp, Coen Engelbarts, Vim 6.0ac) - - -8.11 diff と その他の GNU プログラム - -Vim 6.0 から diff 用の機能が実装された。しかし OpenVMS の組込みの diff は -GNU/UNIX 互換ではないので機能しない。 -好ましくないが簡単な解決法としては、Unix 互換の diff をインストールすること -である。そうすれば Vim は diff モードでも完全に機能するだろう。それには diff -プログラムを次のように再定義しなければならない: > - - define /nolog diff <GNU_PATH>diff.exe - -もう 1 つの面倒な方法は以下の (8.12 diff モード) で説明する。 -他に問題の起こりそうなプログラムとして、patch や make などがある。 -www.polarhome.com では OpenVMS 上での GNU プログラムに関する問題を解決するた -めに、Alpha や VAX 向けの GNU パッケージを配布している。 -( Zoltan Arpadffy, Vim 6.1) - - -8.12 diff モード - -Vim 6.0 以降では diff モードがサポートされている (|new-diff-mode|、 -|diff-mode|、|08.7|を参照)。これは 'diff' で指定した外部プログラムを使用し、 -その出力が Unix 互換であると想定している。しかし VMS 標準の diff はそれとは -違った書式で出力する。VMS で vim の diff モードを使うには、次のようにする: - 1 Unix 互換の diff をインストールする。例えば GNU diff。 - 2 vim に diff モードで Unix 互換の diff を使うことを教える。 - -GNU diff は VIM-VMS のウェブサイトからダウンロードできる。これは -http://www.polarhome.com/vim/files/gnu_tools.zip に含まれている GNU ツールの -1 つである。このアーカイブの中身を "GNU" というディレクトリに入れ、論理名 -GNU: をそのディレクトリを指すよう作成するといいだろう。例: > - - DEFINE GNU <DISK>:[<DIRECTORY>.BIN.GNU] - -シンボル GDIFF を定義して、DCL プロンプトから GNU diff を使いたい場合には: > - - GDIFF :== $GNU:DIFF.EXE - -そして、vim に新しい diff プログラムを使うことを教える必要がある。 -|diff-diffexpr| から設定例を持ってきて、外部の diff を呼び出す部分を VMS 上 -の新しい diff を呼び出すように変更する。これを .vimrc ファイルに加える: > - - " Set up vimdiff options - if v:version >= 600 - " Use GNU diff on VMS - set diffexpr=MyDiff() - function MyDiff() - let opt = "" - if &diffopt =~ "icase" - let opt = opt . "-i " - endif - if &diffopt =~ "iwhite" - let opt = opt . "-b " - endif - silent execute "!mc GNU:diff.exe -a " . opt . v:fname_in . " " . v:fname_new . - \ " > " . v:fname_out - endfunction - endif - -これで vim の diff モードを使うことができる。例えば 2 つのファイルを読み込み -専用で開いて比較する: > - - $ VIM -D/R <FILE1> <FILE2> - -vimdiff として新しいシンボルを定義することもできる。例: > - - $ VIMDIFF :== 'VIM' -D/R - $ GVIMDIFF :== 'GVIM' -D/R - -これでファイルを比較するのに 4 つの方法が利用できる: > - - 1. VMS diff: $ DIFF <FILE1> <FILE2> - 2. GNU diff: $ GDIFF <FILE1> <FILE2> - 3. VIM diff: $ VIMDIFF <FILE1> <FILE2> - 4. GVIM diff: $ GVIMDIFF <FILE1> <FILE2> - -( Coen Engelbarts, Vim 6.1) - - -8.13 C 言語のキーワードに '$' を認める - -DEC C では識別子に '$' を使用できる。ANSI C では使用できない。また、vim は識 -別子の終わりを示す '$' を認めている。'iskeyword' を設定して取り扱いを変更で -きる。 -次のコマンドを .vimrc ファイルに追加する: > - - autocmd FileType c,cpp,cs set iskeyword+=$ - -もしくは $VIM/FTPLUGIN/C.VIM (あるいは CPP.VIM や CS.VIM) を作成してこのコマ -ンドを追加する: > - - set iskeyword+=$ - -これで、単語に基づくコマンド、例えば '*' 検索コマンドや CTRL-] タグ検索で正 -しい識別子を選択することができる。(VMS 上の Ctags もバージョン 5.1 から C 言 -語のキーワードに '$' を認めている) - -( Coen Engelbarts, Vim 6.1) - -8.14 初心者のための VIMTUTOR - -OpenVMS 上で Vim 初心者の最初の一歩を手助けするために DCL スクリプトの -VIMTUTOR.COM が用意されている。バイナリ配布物においては次のようにして開始で -きるだろう: > - - @vim:vimtutor - -(Thomas.R.Wyant III, Vim 6.1) - -8.15 コンソールモードでの起動が遅い問題について - -GUI/GTK 版の Vim はコンソールモードでも同じように動作するので、多くの管理者は -それをシステムワイドでデプロイする。 -不幸なことに、回線が遅い環境で GUI/GTK 版の実行ファイルを使ってコンソールモー -ドで起動しようとすると、X 環境を検出しようとしてタイムアウト待ちになるため、か -なり遅くなってしまう。 - -幸いなことに、簡単な解決法がある。GUI/GTK 版の実行ファイルとコンソール用にビル -ドした実行ファイルの両方をデプロイするのである。次のように: > - - |- vim73 - |----- doc - |----- syntax - vimrc (system rc files) - gvimrc - gvim.exe (GUI/GTK 版の vim.exe をリネームしたもの) - vim.exe (コンソール版の実行ファイル) - -以下のようなシステムシンボルを LOGIN.COM または SYLOGIN.COM で定義する: > - - $ define/nolog VIM RF10:[UTIL.VIM73] ! where you VIM directory is - $ vi*m :== mcr VIM:VIM.EXE - $ gvi*m :== mcr VIM:GVIM.EXE - $ ! or you can try to spawn with - $ gv*im :== spawn/nowait/input=NLA0 mcr VIM:GVIM.EXE -g -GEOMETRY 80x40 - - -このようにすれば、X 環境を持たずコンソールモードで使用したいユーザーも速度の問 -題を回避できる。 - -(Zoltan Arpadffy, Vim 7.2) - -8.16 共通の VIM ディレクトリ - 異なるアーキテクチャ - -次のような異なるアーキテクチャのノードを含むクラスタにおいては: - -$show cluster -View of Cluster from system ID 11655 node: TOR 18-AUG-2008 11:58:31 -+---------------------------------+ -ヲ SYSTEMS ヲ MEMBERS ヲ -+-----------------------+---------ヲ -ヲ NODE ヲ SOFTWARE ヲ STATUS ヲ -+--------+--------------+---------ヲ -ヲ TOR ヲ VMS V7.3-2 ヲ MEMBER ヲ -ヲ TITAN2 ヲ VMS V8.3 ヲ MEMBER ヲ -ヲ ODIN ヲ VMS V7.3-2 ヲ MEMBER ヲ -+---------------------------------+ - -VIM ディレクトリは共通にし、実行ファイルだけ異なるようにすると便利である。この -問題に対しては、以下のようにいくつかの解決法がある: > - -解決法 1. すべての実行ファイルを同じディレクトリに違う名前で入れる -これは以下のスクリプトを login.com か sylogin.com に入れることで簡単にできる: -> - - $ if f$getsyi("NODE_HWTYPE") .eqs. "VAX" - $ then - $ say "VAX platform" - $ vi*m:== mcr vim:VIM.EXE_VAX - $ endif - $ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH" - $ then - $ say "ALPHA platform" - $ vi*m :== mcr vim:VIM.EXE_AXP - $ endif - $ if f$getsyi("ARCH_NAME") .eqs. "IA64" - $ then - $ say "IA64 platform" - $ vi*m :== mcr vim:VIM.EXE_IA64 - $ endif - -解決法 2. 別々のディレクトリにする: > - - $ if f$getsyi("NODE_HWTYPE") .eqs. "VAX" - $ then - $ say "VAX platform" - $ define/nolog VIM RF10:[UTIL.VAX_EXE] ! VAX executables - $ endif - $ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH" - $ then - $ say "ALPHA platform" - $ define/nolog VIM RF10:[UTIL.AXP_EXE] ! AXP executables - $ endif - $ if f$getsyi("ARCH_NAME") .eqs. "IA64" - $ then - $ say "IA64 platform" - $ define/nolog VIM RF10:[UTIL.IA64_EXE] ! IA64 executables - $ endif - $! VIMRUNTIME must be defined in order to find runtime files - $ define/nolog VIMRUNTIME RF10:[UTIL.VIM73] - -このアプローチの良い例が http://www.polarhome.com/vim/ からダウンロードできる -GNU_TOOLS.ZIP の [GNU]gnu_tools.com スクリプトである。 - -(Zoltan Arpadffy, Vim 7.2) - -============================================================================== - -9. VMS関連の変更点 *vms-changes* - -バージョン 7.3 -- CTAGS 5.8 の取り込み -- VMS コンパイル警告の修正 - VAX の浮動小数点数オーバーフローの警告を直した -- ファイルパス補完の修正 - ファイル名とシェルコマンドにおいて余計な文字がエス - ケープされていた -- 以下のプラグインが VMS の runtime に追加された: - genutils 2.4, multiselect 2.2, multvals 3.1, selectbuf 4.3, - bufexplorer 7.1.7, taglist 4.5 -- vimrc の小さな変更 (VMS runtime 内のみ) -- make_vms.mms - HUGE がデフォルト -- [TESTDIR]make_vms.mms にできるだけ多くのテストを含めた -- test30 と test54 を VMS 用に修正した -- VMS ポートで FLOAT 機能を有効にした -- os_vms.txt を更新した - -Version 7.2 (2008 Aug 9) -- VCF ファイルの書き込みを修正 -- CTAGS 5.7 を含めた -- make_vms.mms を修正 (VAX で構文エラーになっていた) - -Version 7.1 (2007 Jun 15) -- TAGS ファイルをメニューから作成 - -Version 7 (2006 May 8) -- 低レベルの文字入力を改良 (コンソールモードにのみ影響する) -- プラグインのバグを修正 -- CTAGS 5.6 を含めた - -(訳注: 翻訳対象から除外) - -Version 6.4 (2005 Oct 15) -- GTKLIB and Vim build on IA64 -- colors in terminal mode -- syntax highlighting in terminal mode -- write problem fixed (extra CR) -- ESC and ESC sequence recognition in terminal mode -- make file changed to support new MMS version -- env variable expansion in path corrected -- printing problems corrected -- help text added for case insensitive arguments - -Version 6.3 (2004 May 10) -- Improved vms_read function -- CTAGS v5.5.4 included -- Documentation corrected and updated - -Version 6.2 (2003 May 7) -- Corrected VMS system call results -- Low level character input is rewritten -- Correction in tag and quickfix handling -- First GTK build -- Make file changes - - GTK feature added - - Define for OLD_VMS - - OpenVMS version 6.2 or older -- Documentation updated with GTK features -- CTAGS v5.5 included -- VMS VIM tutor created - -Version 6.1 (2002 Mar 25) -- TCL init_tcl() problem fixed -- CTAGS v5.4 included -- GNU tools binaries for OpenVMS -- Make file changes - - PERL, PYTHON and TCL support improved - - InstallVMS.txt has a detailed description HOWTO build -- VMS/Unix file handling rewritten -- Minor casting and bug fixes - -Version 6.0 (2001 Sep 28) -- Unix and VMS code has been merged - - separated "really" VMS related code - - included all possible Unix functionality - - simplified or deleted the configuration files - - makefile MAKE_VMS.MMS reviewed -- menu changes (fixed printing, CTAGS and XXD usage) -- fixed variable RMS record format handling anomaly -- corrected syntax, ftplugin etc files load -- changed expand_wildcards and expandpath functions to work more general -- created OS_VMS_FILTER.COM - DECC->VAXC pre-processor directive convert - script. -- Improved code's VAXC and new DECC compilers compatibility -- changed quickfix parameters: - - errormessage format to suite DECC - - search, make and other commands to suite VMS system -- updated and renamed MMS make files for Vim and CTAGS. -- CTAGS has been removed from source distribution of Vim but it will remain - in OpenVMS binary distributions. -- simplified build/configuration procedure -- created INSTALLvms.txt - detailed compiling instructions under VMS. -- updated test scripts. - -Version 5.8 (2001 Jun 1) -- OS_VMS.TXT updated with new features. -- other minor fixes. -- documentation updated -- this version had been tested much more than any other OpenVMS version - earlier - -Version 5.7 (2000 Jun 24) -- New CTAGS v5.0 in distribution -- Documentation updated - -Version 5.6 (2000 Jan 17) -- VMS filename related changes: - - version handling (open everything, save to new version) - - correct file extension matching for syntax (version problem) - - handle <,> characters and passwords in directory definition - - handle internode/remote invocation and editing with passwords - - OpenVMS files will be treated case insensitive from now - - corrected response of expand("%:.") etc path related functions - (in one word: VMS directory handling internally) -- version command - - corrected (+,-) information data - - added compiler and OS version - - added user and host information - - resolving $VIM and $VIMRUNTIME logicals -- VMS port is in MAX_FEAT (maximum features) club with Unix, Win32 and OS/2. - - enabled farsi, rightleft etc. features - - undo level raised up to 1000 -- Updated OS_VMS.MMS file. - - maximum features ON is default - - Vim is compilable with +perl, +python and +tcl features. - - improved MMK compatibility -- Created MAKEFILE_VMS.MMS, makefile for testing Vim during development. -- Defined DEC terminal VT320 - - compatibility for VT3*0, VT2*0 and VT1*0 - ANSI terminals - backwards, but not VT340 and newer with colour capability. - - VT320 is default terminal for OpenVMS - - these new terminals are also fast ttys (default for OpenVMS). - - allowed dec_mouse ttym -- Updated files vimrc and gvimrc with VMS specific suggestions. -- OS_VMS.TXT updated with new features. - -Version 5.5 (1999 Dec 3) -- Popup menu line crash corrected. -- Handle full file names with version numbers. -- Directory handling (CD command etc.) -- Corrected file name conversion VMS to Unix and v.v. -- Correct response of expand wildcards -- Recovery is working from this version under VMS as well. -- Improved terminal and signal handing. -- Improved OS_VMS.TXT - -Version 5.4 (1999 Sep 9) -- Cut and paste mismatch corrected. -- Motif directories during open and save are corrected. - -Version 5.3 (1998 Oct 12) -- Minor changes in the code -- Standard distribution with +GUI option - -Version 5.1 (1998 Apr 21) -- Syntax and DEC C changes in the code -- Fixing problems with the /doc subdirectory -- Improve OS_VMS.MMS - -Version 4.5 (1996 Dec 16) -- First VMS port by Henk Elbers <henk@xs4all.nl> - -============================================================================== - -10. 著者 *vms-authors* - -OpenVMSの文章とコンパイル済みバイナリは以下がメンテナンスしている: -Zoltan Arpadffy <arpadffy@polarhome.com> -OpenVMS Vim page: http://www.polarhome.com/vim/ - -この文章には、初期の著者や貢献者の書いた部分や記述が含まれている: - Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov> - Bruce Hunsaker <BNHunsaker@chq.byu.edu> - Sandor Kopanyi <sandor.kopanyi@altavista.net> - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/os_win32.jax b/runtime.old/doc/os_win32.jax deleted file mode 100644 index 09c217839..000000000 --- a/runtime.old/doc/os_win32.jax +++ /dev/null @@ -1,369 +0,0 @@ -*os_win32.txt* For Vim バージョン 7.3. Last change: 2011 May 28 - - - VIM REFERENCE MANUAL by George Reilly - - - *win32* *Win32* *MS-Windows* -このファイルはVim Win32バージョンに特有の事柄についての文書である。 - -Win32 版の Vim は Windows NT, 95, 98, ME, XP, Vista, Windows 7 で実行可能で -す。コンソール 版と GUI 版があります。 - -32 ビット版 Vim は 64 ビット版 MS-Windows システム上でも実行可能です。 - -Windows 3.1 [1] では Win32s サブシステムで動く GUI バージョンもあります。 -32 ビット DOS バージョン の Vim も使えます。|os_msdos.txt| を参照。 - -1. 知られている問題点 |win32-problems| -2. Vimの起動 |win32-startup| -3. スクリーン内容の復帰 |win32-restore| -4. マウスの使用 |win32-mouse| -5. Windows 3.1での使用 |win32-win3.1| -6. Win32 ミニ FAQ |win32-faq| - -付け加えて、Win32とDOS共通の項目がいくつかある: -ファイルの位置 |dos-locations| -バックスラッシュの使用 |dos-backslash| -標準のマッピング |dos-standard-mappings| -画面出力とカラー |dos-colors| -ファイルフォーマット |dos-file-formats| -:cd コマンド |dos-:cd| -割り込み(インタラプト) |dos-CTRL-Break| -一時ファイル |dos-temp-files| -Shellオプションのデフォルト |dos-shell| - -Win32 GUI |gui-w32| - -クレジット: -Win32バージョンはGeorge V. Reilly <george@reilly.org>による。 -オリジナルのWindows NTへの移植はRoger Knobbe <RogerK@wonderware.com>による。 -GUIバージョンはGeorge V. ReillyとRobert Webbによって作成された。 - -コンパイルする場合は"src/INSTALLpc.txt"を参照。 *win32-compiling* - -============================================================================== -1. 知られている問題点 *windows95* *win32-problems* - -Windows 95のコンソール内で実行する場合、いくつかの問題点が知られている。これは -我々の知る限りでは、Windows 98とWindows MEでも同じである。 - -Microsoftに勤務している誰かからのコメント: "Win95のコンソールサポートは今まで -ずっと怪しいものだったし、これからもそうだろう"。 -1. デッドキーサポートが機能しない。 -2. ":set columns=nn lines=nn"によるウィンドウのリサイズは機能するが、外部コマ - ンドを実行するとシステムはハングアップ、またはクラッシュする。 -3. 'columns'または'lines'の値を非DOS値に変えない限り、スクリーンの更新は遅い - だろう。しかし、このときは2番目の問題に該当する! - - -もしこれらの問題に悩んでいるなら、32ビットMS-DOSかWin32 GUIバージョンを使うと -よい。 - -ファイル名補完を行っているとき、Vimは短いファイル名への一致も見つける。しかし、 -それでもVimは長いファイル名への一致を見つけ、採用する。例えば、もしあなたが短 -いファイル名"this_i~1"を持つ、長いファイル名のファイル"this_is_a_test"を持って -いるなら、コマンド":e *1"は"this_is_a_test"の編集を始める。 - -============================================================================== -2. Vimの起動 *win32-startup* - -カレントディレクトリ *win32-curdir* - -Vimにフルパスのファイル名("x:\"の形で始まる)を指定したとき、Vimはエクスプロー -ラから起動されたと仮定してそのファイルのあるディレクトリをカレントディレクトリ -にします。そうならないようにするにはファイルのパスにバックスラッシュ(\)の代わ -りにスラッシュ(/)をを使ってください。 > - - vim c:\text\files\foo.txt - -これはカレントディレクトリを"C:\text\files"に変更します。 > - - vim c:/text\files\foo.txt - -こうすればカレントディレクトリを変更しません。 - - -端末オプション *win32-term* - -Win32バージョンのVimが認識できる唯一の端末の種類は"win32"であり、これは組み込 -みである。'term'に他の何かを設定すると、Vimはたぶんとても奇妙な振る舞いを見せ -ることだろう。それゆえ、Vimは'term'のデフォルト値を環境変数"TERM"から取得しな -い。 - -$PATH *win32-PATH* - -Vim 実行ファイルのディレクトリが $PATH に追加される。これは主に「ツール」メ -ニューにある "!xxd" が動作するようにするためである。また、これにより -executable() が 1 を返すときは実際にその実行ファイルが実行可能であるように -なる。 - -============================================================================== -3. スクリーン内容の復帰 *win32-restore* - -'restorescreen'がセットされているとき(これはデフォルト)、終了時、または外部コ -マンド実行時、Vimはコンソールの元の内容を復帰する。これを行いたくない場合は、 -":set nors"を使うとよい。|'restorescreen'| - -============================================================================== -4. マウスの使用 *win32-mouse* - -Win32バージョンのVimはマウスの使用をサポートする。2ボタンマウスを使用している -場合、中ボタンは左と右の両方のボタンを同時に押すことによってエミュレートでき -る - しかし、Win32 GUIで右ボタンクリックによるポップアップメニューを有効にし -ていると('mouse'を参照)、左ボタンを先にクリックした際、エラーが発生する。 - |mouse-using| - -マウスが機能しない場合には、コンソールの"Quick Edit Mode"特性を無効にしてみよ。 - -============================================================================== -5. Windows 3.1での使用 *win32-win3.1* - - *win32s* *windows-3.1* -Windows 3.1と3.11上で走るGvimの特殊なバージョンがある。Visual C++ 4.1でコンパ -イルしたgvim.exeが必要となる。 - -Windows 3.1上でWin32バージョンを動かすには、Win32sをインストールする必要がある。 -あなたは、他のWin32アプリケーションのインストールにより、すでにWin32sを持って -いるかもしれない。もしVimが正しく動いていないようであれば、最新バージョン:1.30c -を入手するとよいだろう。最新バージョンはここで得られる: - - http://support.microsoft.com/download/support/mslfiles/pw1118.exe - -(マイクロソフトはまたこれを移動した。もうどこにあるのか分からない) -ヽ(`Д´)ノ ウワァァン - -gvim.exeに2つのバージョンがあるのは、Win32sバージョンがVC++ 4.1でコンパイルさ -れているからである。これはWin32sプログラムをサポートするVC++の最新バージョンで -ある。VC++ 5.0はより良くなっているため、Win32バージョンにはこちらを使用してい -る。以上の点を除けば、2つのプログラムに違いはない。もし混在した環境にいるなら、 -Win32s用のgvim.exeを両方で使うことができる。 - -Win32sバージョンは、95/NT上ではWin32バージョンと同じように動く。Win32s上では、 -次の相違点がある: -- 長いファイル名が使用できない、Windows 3.1がサポートしていないためである! -- 外部コマンドを実行したとき、終了コードがリターンされない。":make"の後で、自 - 分で":cn"を行う必要がある。 - -============================================================================== -6. Win32 ミニ FAQ *win32-faq* - -Q. Windows 95上で、Win32バージョンのVimの画面更新が遅いのはなぜ? -A. Win32コンソールモードのアプリケーションのサポートは、Win95においては大変不 - 安定である。何らかの未知の理由で、Vimが標準解像度(80x25、80x43、80x50)のひ - とつで走っているとき画面更新が遅くなり、16ビットDOSバージョンの方がWin32 - バージョンよりもはるかに速く画面更新を行うことになる。しかし、画面をその他 - の解像度、例えば、":set columns=100"や":set lines=40"など、に設定すると16 - ビットバージョンと同じくらいの速度で更新するようになる。 - - 注意: 'columns'の変更はウィンドウの更新中にWindows 95をクラッシュさせる可能 - 性がある(不満があれば --> Microsoft)。これはたいていの場合は機能するので、 - 無効にされていないが、'columns'を変更するときは注意すること。 - - 画面解像度の変更は更新を速くするが、また別の問題を生じる。画面が非標準の解 - 像度に設定されているとき、特に'columns'が80以外の値のとき、外部コマンド(例、 - ":!dir")がVimをフリーズさせるというものである。Vimが外部コマンド実行前に、 - 画面解像度を起動時の値に戻すというのは不可能であるため、'lines'や'columns' - の値を変更するときは、細心の注意を払うように。実際のところ、'columns'の値が - 80以外である場合には、Vimは外部コマンドの実行を許可しない、その後でフリーズ - しやすいためである。 - - 以上のことは、Windows NT上では全く当てはまらない。画面更新は速く、'lines'や - 'columns'がどのような値であろうと、外部コマンドの実行がVimをフリーズさせる - ことはない。 - -Q. Win32バージョンのWindows 95上での画面更新が遅くて、16ビットDOSバージョンの - 画面更新が速いのならば、どうしてWin32バージョンを使う理由があるだろうか? -A. 第一に、画面が'lines'や'columns'の非標準の値に設定されているときは、Win32 - バージョンは遅くはない。第二に、16ビットDOSバージョンはいくつかの厳しい制限 - を受けることになる: 大きな変更ができないことと、長いファイル名に対応してい - ないことである。Win32バージョンはこれらの制限を持たない上、総合的に速い(32 - ビットDJGPP DOSバージョンのVimにも同じことが言える)。Win32バージョンは32 - ビットDJGPP DOSバージョンよりも画面、マウス、キーボードの扱いが簡潔である。 - -Q. 16ビットDOSバージョンとNT上のWin32バージョンについては? -A. NT上で16ビットDOSバージョンを使うべき理由は存在しない。Win32バージョンは、 - NT上の16ビットバージョンと同じくらいの速さで画面を更新する。DOSバージョンに - は上記の不利益がある。その上、DOSアプリケーションは起動に時間がかかり、また - 実行速度も遅い。非インテルのNTプラットホーム上では、DOSバージョンは到底使え - ない程に遅い、これは80x86エミュレータ上で実行されているからである。 - -Q. フォントを変える方法は? -A. GUIバージョンでは、'guifont'オプションを使用すればよい。例: > - :set guifont=Lucida_Console:h15:cDEFAULT -< コンソールバージョンでは、コンソール自体のフォントを設定する必要がある。 - これはVimから行うことはできない。 - -Q. コンソールウィンドウのサイズを':set lines=xx'などで変更したとき、フォントが - 変わってしまった!(Win95) -A. Vimの(もしくはMS-DOSプロンプトの)プロパティで、コンソールフォントを'Auto'に - 設定している。これは(悪いことに!)Win95に最適なフォントを選ばせる。かわりに - はっきりとフォントを指定すればよい。 - -Q. Windows 95上でVimへのペーストができないのだが? -A. MS-DOSウィンドウのプロパティダイアログボックスで、"MS-DOS プロンプト/その他 - /ファーストペースティング"がチェックされていないことを確認する。また、予期 - していない効果を避けるために、Vim内で":set paste"を行うべきである。|'paste'| - -Q. Windows 95上のコンソールバージョンでデッドキーを打つ方法は? - (デッドキーとは、鋭アクセント、低アクセント、ウムラウトのようなアクセント - キーのことで、キャラクタそのものとしては提供されないが、他のキーの後に続い - て打たれて、a-acute、e-grave、u-umlaut、n-tildeなどのアクセントキャラクタを - 提供するものである。多くのヨーロッパ言語で非常に有用である。われわれの知る - 限り、英語キーボードのレイアウトではデッドキーは使われない。) -A. できない。Windows 95ではコンソールモードの入力ルーチンは正しく機能せず、そ - れらを機能させることができたこともない。マイクロソフトの熟練した開発者の言 - 葉によれば: - Win95のコンソールサポートは、今まで常に、そしてこれからも怪しいものだ。 - - 我々はKEYB(これはデータを加工したがる; 国際化に重要である)のような - MS-DOSキーボードのTSRsの世界と、Win32の世界の間に置かれているため、こ - ういった怪しさは避けがたいものである。 - - ゆえに、MS-DOSの世界に"存在"していない(デッドキーのような)キーは、 - Win32コンソールの世界では非常に希薄な存在となる。MS-DOSの世界とWin32コ - ンソールの世界で、違った振舞いをする(capslockキーのような)キーは、怪し - げな振舞いを見せるだろう。 - - 多言語キーボードのレイアウトに関する問題については、考えたくもない... - - digraphsメカニズムによって、このような種類の働きを作り出すことができるかも - しれない。|digraphs| - - 最もよい解決法は、Win32 GUIバージョンのgvim.exeを使うことである。その他に、 - デッドキーがうまく機能しているといわれている、DOSバージョンのVimのひとつを - 試してみるという方法もある。 - -Q. Windows NT上でデッドキーを打つ方法は? -A. デッドキーはNT 3.51上で機能する。単に、他のアプリケーションでやっているのと - 同じようにすればよい。 - NT 4.0では、標準のロケール(コントロールパネルのキーボードで設定する)が、現 - 在アクティブなロケールと同じであることを確認する必要がある。そうしないと、 - NTのコードは混乱しクラッシュしてしまう! これはNT 4.0の問題であり、本質的に - Vimの問題ではない。 - -Q. VimでUnix NFSファイルサーバ上のシンボリックリンクファイルを編集している。 - ファイルを書込むとき、Vimはシンボリックリンクを"介して書込む"ことをしない。 - 代わりに、シンボリックリンクを削除し、その場所に新しいファイルを作成する。 - これは何故か? -A. Unixでは、Vimはリンク(シンボリック、ハード)に対応している。オリジナルファイ - ルのバックアップが作られ、そしてオリジナルファイルが上書きされる。これは - ファイルの全てのプロパティが保たれることを保証する。非Unixシステムでは、オ - リジナルファイルは改名され、新しいファイルが書込まれる。保護ビットのみがオ - リジナルファイルと同じように設定される。しかし、これはリンクなどの機構の存 - 在する、NFSマウントされたファイルシステムにおいて適切に動作しない。現在の - バージョンにおいてこの問題を避ける唯一の方法は、 - ":set nobackup nowritebackup"によって、バックアップファイルを作らないことで - ある。|'writebackup'| - -Q. Samba を通して Unix ファイルサーバ上のファイルを Vim で編集している。この - ファイルを書き込むと、ファイルの所有者が変わってしまう。なぜか? -A. ファイルを書き込むとき、Vim は元のファイルをリネームし、それをバックアップ - とする (ファイルの書き込みが途中で失敗した場合に備えるため)。そしてバッファ - が新規ファイルとして書き込まれる。すると Samba はそのファイルに対してファイ - ルシステムのデフォルト所有者を設定する。その結果、元の所有者と変わってしま - う。これを避けるには、オプション 'backupcopy' を "yes" にすること。すると - バックアップ用に元のファイルのコピーを作ってから、元のファイルを上書き保存 - するようになる。こうすればファイルの所有者は変わらない。 - -Q. ":make"の出力を実行中に見たい場合は? -A. 基本的には、入力(この場合はmakeの出力)を標準出力とエラーファイルの両方にコ - ピーする、teeプログラムを使えばよい。tee(とその他多くのGNUツール)は、 - http://gnuwin32.sourceforge.net か http://unxutils.sourceforge.net - から得られる。もしくは、最新のGNUツ ールのCygnusバージョン - http://www.cygwin.com を使ってみても - よい。その他のWin32用のUnixコマンドはこのサイトに列挙されている。 - http://directory.google.com/Top/Computers/Software/Operating_Systems/Unix/Win32/ - teeを手に入れたら、_vimrcに、以下のように設定する > - set shellpipe=\|\ tee -< - -Q. VisionFSが動いているリモートマシンにファイルを保存しておいたところ、それら - が消えてしまった! -A. VisionFSは、ある種のドット(.)と3文字の拡張子のファイル名を扱えない。SCOによ - れば、この振舞いは16ビットDOS/Windows環境との互換性のために必要とされるそう - である。以下の2つのコマンドで、この振舞いを実演できる: -> - echo Hello > file.bat~ - dir > file.bat -< - この結果、"dir"コマンドは新しい"file.bat"というファイルを作成しないで、 - "file.bat~"を更新する。Vimにおいても、"foo.bat"という名前の既存のファイルを - 編集するときにこれと同じことが起こる、Vimの標準の機能では、'~'をファイル名 - の後に付け加えてテンポラリファイルを作成するからである。ファイルが書込まれ - たとき、これは上書きされる羽目になる。 - - 解決法: _vimrcファイルに次のコマンドを加える: > - set backupext=.temporary - -Q. カーソルの点滅頻度を変更する方法は? -A. できない! これはNTコンソールの制限である。NT 5.0では全てのコンソールウィン - ドウに対して、同時に点滅頻度を設定できるようになるといわれている。 - - *:!start* -Q. 非同期的に外部コマンドやプログラムを実行するにはどうしたらよいか? -A. :!を使って外部コマンドを実行している場合、"start"と共に実行できる: > - :!start winfile.exe<CR> -< "start"を使うと、Vimは他のスクリーンに切り替えたり、新しいコンソールを開い - たり、プログラムが終了するまで待ったりしなくなる; つまり、走らせるプログラ - ムは編集中のファイルに何の影響も与えない。:!startで始まったプログラムは、 - Vimの開いたファイルハンドルを受け渡されないため、Vimより早く終了する必要は - ない。 - このような特別な動作を避けるには ":! start" を使う。 - 利用可能な引数が二つある (次の Q 参照): - /min ウィンドウが最小化される。 - /b" コンソールウィンドウが表示されない。 - 指定できるのはどちらか一方だけです。二番目の引数が start コマンドで実行され - ます。 - -Q. プログラムを非同期で実行したときにそのウィンドウを非表示にするには? -A. あなたの実際の目的に応じて二つの解決方法があります: - 1) /min フラグを使ってプログラムを最小化ウィンドウで実行する (他はそのま - ま)。この方法はコンソールアプリケーションでも GUI アプリケーションでも使 - えます。 - 2) /b フラグを使って、コンソールウィンドウを作成せずにコンソールアプリケー - ションを実行する (GUI アプリケーションに対しては効果なし)。このフラグ - は、実行するアプリケーションが入力を必要としないことがわかっている場合の - み使ってください。その入力ストリーム (stdin) は \\.\NUL にリダイレクトさ - れるので (stdout と stderr も同じ)、入力が使われる場合は EOF エラーが発 - 生するでしょう。 - - コンソールアプリケーションの例。Exuberant ctags を実行する: > - :!start /min ctags -R . -< 実行が完了すると "tags" ファイルがカレントディレクトリに作成されます。タス - クバーでウィンドウタイトルが点滅するのに気づくでしょう。時間が掛かるコマン - ドならはっきりと見えます。 - では、"tags" ファイルを削除して次のコマンドを実行します: > - :!start /b ctags -R . -< 先程と同じ "tags" ファイルが作成されますが、今回はタスクバーは点滅しませ - ん。 - GUI アプリケーションの例: > - :!start /min notepad - :!start /b notepad -< 最初のコマンドは notepad を最小化状態で実行します。二番目のものは notepad - を普通に実行します。 - -Q. Win32sを使っていて、"make"のような外部コマンドを実行すると、Vimはそれが終わ - るまでまってくれない! どうしたよいだろう! -A. この問題は、32ビットアプリケーション(Vim)が、16ビットアプリケーション(DOSの - セッション)が終わったという知らせを、Windowsから受け取ることができないとい - うことである。Vimはこのための働きも含んでいるが、それにはDOSコマンドをフル - スクリーンではなく、ウィンドウ内で実行するように設定しなければならない。不 - 運にも、Windowsをインストールしたデフォルトではフルスクリーンである。これを - 変更するには: - 1) PIFエディタを実行。(メインプログラムグループから) - 2) Windowsディレクトリの"_DEFAULT.PIF"ファイルを開く。 - 3) ディスプレイオプションを"Full Screen"から"Windowed"に変更。 - 4) 保存して終了。 - - 確かめるには、Vimを実行して次のように打つ > - ":!dir C:\<CR>" -< ディレクトリの一覧と共に、DOSボックスが短い間表示されるのを見るはずだ - -Q. Win32sとNTでVimを使っている。NTでは、コンソールをデフォルトから50行に変える - ことができ、':sh'で80x50のシェルを実行することができる。W3.1xでも同じことが - できるか、あるいは80x25のままでいるしかないか? -A. SYSTEM.INIを編集し、 [NonWindowsApp]のセクションに'ScreenLines=50'を付け加え - る。DOSプロンプトと外部DOSコマンドは50行のウィンドウで実行される。 - - vim:tw=78:fo=tcq2:ts=8:ft=help:norl: diff --git a/runtime.old/doc/pattern.jax b/runtime.old/doc/pattern.jax deleted file mode 100644 index 67fa5d96a..000000000 --- a/runtime.old/doc/pattern.jax +++ /dev/null @@ -1,1273 +0,0 @@ -*pattern.txt* For Vim バージョン 7.3. Last change: 2011 May 25 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -パターンと検索コマンド *pattern-searches* - -最も基本的な説明はユーザーマニュアルの |03.9| にあります。 -27章 |usr_27.txt| にも説明があります。 - -1. 検索コマンド |search-commands| -2. パターンの定義 |search-pattern| -3. Magic |/magic| -4. パターンの概要 |pattern-overview| -5. 量指定子 |pattern-multi-items| -6. 普通のアトム |pattern-atoms| -7. 大文字と小文字を無視する |/ignorecase| -8. 合成文字 |patterns-composing| -9. Perl のパターンとの比較 |perl-patterns| -10. マッチしたテキストを強調する|match-highlight| - -============================================================================== -1. 検索コマンド *search-commands* *E486* - - */* -/{pattern}[/]<CR> [count] 番目にマッチする {pattern} を前方検索します。 - |exclusive|(排他的) - -/{pattern}/{offset}<CR> [count] 番目にマッチする {pattern} を前方検索し、 - |{offset}| 行だけ上/下に移動します。|linewise|(行指向) - - */<CR>* -/<CR> [count] 番目にマッチする最終検索パターン|last-pattern| - を、最後に使われた|{offset}|を使って、前方検索します。 - -//{offset}<CR> [count] 番目にマッチする最終検索パターン|last-pattern| - を、新しい |{offset}| を使って前方検索します。 - {offset} を指定しなかった場合、 |{offset}| は使われま - せん。 - - *?* -?{pattern}[?]<CR> [count] 番目にマッチする {pattern} を後方検索します。 - |exclusive|(排他的) - -?{pattern}?{offset}<CR> [count] 番目にマッチする {pattern} を後方検索して - |{offset}| 行だけ上/下に移動します。|linewise|(行指向) - - *?<CR>* -?<CR> [count]番目にマッチする最終検索パターン|last-pattern| - を、最後に使われた|{offset}|を使って、後方検索します。 - -??{offset}<CR> [count]番目にマッチする最終検索パターン|last-pattern| - を、新しい |{offset}| を使って後方検索します。 - {offset} を指定しなかった場合、 |{offset}| は使われま - せん。 - - - *n* -n 最後の "/" か "?" を [count] 回繰り返します。 - |last-pattern| {Vi: カウントの前置を受け付けません} - - *N* -N 最後の "/" か "?" を逆方向に [count] 回繰り返します。 - |last-pattern| {Vi: カウントの前置を受け付けません} - - *star* *E348* *E349* -* [count] 番目にマッチする単語を前方検索します。検索され - る単語は、カーソルに最も近い単語です。次の順番で選択さ - れます: - 1. カーソル位置のキーワード |'iskeyword'| - 2. 現在行の、カーソルの前方のキーワード - 3. カーソル位置の単語 (|WORD|) - 4. 現在行の、カーソルの前方の単語 - "/\<keyword\>" と検索するのと同じように、完全なキー - ワードのみ検索されます。|exclusive|(排他的) - {Vi にはない機能です} - 'smartcase' ではなく 'ignorecase' の設定が使われます。 - - *#* -# "*" と同じですが、後方検索します。ポンド記号 (文字コー - ド 163) でも動作します。"#" キーがバックスペースとして - 動作する場合は、 Vim を起動する前に "stty erase <BS>" - としてみてください (<BS> は CTRL-Hもしくは本当のバック - スペースです)。 {Vi にはない機能です} - - *gstar* -g* "*" と似ていますが "\<" と "\>" を単語の回りに加えませ - ん。つまり単語の一部にマッチするものを検索することもで - きます。 {Vi にはない機能です} - - *g#* -g# "#" と似ていますが "\<" と "\>" を単語の回りに加えませ - ん。つまり単語の一部にマッチするものを検索することもで - きます。 {Vi にはない機能です} - - *gd* -gd ローカル宣言を検索します。カーソルがローカル変数の上に - ある場合、その変数の宣言にジャンプします。はじめに、 - Vim は現在の関数の開始行を検索します ("[[" コマンドと - 同じ)。見つからなかった場合は、ファイルの 1 行目に移動 - します。見つかった場合は、その場所から空行を後方検索し - ます。そして、"*" コマンドで検索するのと同じように、 - キーワードを検索します。このとき、コメントと判断した行 - は無視します('comments'オプション参照)。 - Note: Vim は文法を実際にチェックしているわけではなく、 - キーワードにマッチするものを検索しているだけですので、 - これがうまく動作するとは限りません。インクルードされて - いるファイル内も検索したい場合は、|include-search| で - 列挙されているコマンドを使ってください。 - このコマンドを実行した後、コマンド|n|で次のマッチを前 - 方検索できます。 - {Vi にはない機能です} - - *gD* -gD グローバル宣言を検索します。ファイル内で定義されている - グローバル変数の上にカーソルがある場合、その宣言にジャ - ンプします。"gd" と同じですが、このコマンドは常に 1 行 - 目からキーワードを検索します。 - {Vi にはない機能です} - - *1gd* -1gd "gd" と同じですが、現在のカーソル位置より前の {} ブ - ロック内を無視します。{Vi にはない機能です} - - *1gD* -1gD "gD" と同じですが、現在のカーソル位置より前の {} ブ - ロック内を無視します。{Vi にはない機能です} - - *CTRL-C* -CTRL-C 現在の(検索)コマンドを中止します。MS-DOSではCTRL-Break - を使ってください |dos-CTRL-Break|。 - ノーマルモードでは、入力済みの、まだ実行されていないコ - マンドをすべて中止します。 - - *:noh* *:nohlsearch* -:noh[lsearch] 'hlsearch' オプションによる強調表示をやめます。検索コ - マンドを使うか、'hlsearch' をオンに設定すると、再び強 - 調表示されます。このコマンドはオートコマンド中は機能し - ません。オートコマンドを実行する時に強調表示の状態を保 - 存し、実行後に元に戻すからです。|autocmd-searchpat| - ユーザー関数を呼び出したときも同様。 - -'incsearch' オプションがオンの場合、検索パターンを入力している途中に、その時点 -でマッチしているものが強調表示されます。実際に、その場所にカーソルを移動させる -には <CR> を打って検索を終了する必要があります。検索を中止するには <Esc> キー -を使ってください。 - -'hlsearch' オプションがオンの場合、最後に使った検索パターンは強調表示されます。 -|:nohlsearch| コマンドを使うと、一時的に強調表示をやめさせることができます。 - - *search-offset* *{offset}* -上記の検索コマンドは指定されたパターンを検索します。"/" と "?" ではさらにオフ -セットを指定できます。オフセットには、行オフセットと文字オフセットの 2 種類あ -ります。 {Vi には文字オフセットはありません} - -オフセットを指定して、マッチした場所から相対的にカーソルを移動できます: - [num] [num]行下、1 桁目に移動 - +[num] [num]行下、1 桁目に移動 - -[num] [num]行上、1 桁目に移動 - e[+num] [num]文字右に、マッチ部分の終わりの場所から移動 - e[-num] [num]文字左に、マッチ部分の終わりの場所から移動 - s[+num] [num]文字右に、マッチ部分の初めの場所(start)から移動 - s[-num] [num]文字左に、マッチ部分の初めの場所(start)から移動 - b[+num] [num] 上記 s[+num] と同じ (begin の b) - b[-num] [num] 上記 s[-num] と同じ (begin の b) - ;{pattern} さらに検索する。|//;|を参照。 - -'-' か '+' を指定して [num] を省略した場合は 1 が使われます。'e' を使ってオフ -セットを指定した場合、検索は包括的になります (カーソルが移動するであろう位置の -文字まで含めて操作の対象になります)。 - -例: - -パターン カーソルの位置 ~ -/test/+1 "test" の 1 行下の 1 桁目 -/test/e "test" の最後 -/test/s+2 "test" の 's' -/test/b-3 "test" の 3 文字前 - -これらのコマンドが演算コマンドに対して使われた場合、現在のカーソル位置から、検 -索後のカーソル位置までが、操作の対象となります。ただし、行オフセットが指定され -た場合は、2 つのカーソル位置の間の行全体が操作の対象となります。 - -パターンを検索して置換する例: > - /foo<CR> "foo" を検索 - c//e マッチした文字列を変更 - bar<Esc> 置換する文字を入力 - //<CR> 次のマッチへ移動 - c//e マッチした文字列を変更 - beep<Esc> 今度は別の文字で置換 - ... -< - *//;* *E386* -非常に特殊なオフセットですが、';' に続けて検索コマンドを指定できます。例: > - - /test 1/;/test - /test.*/+1;?ing? - -一つ目の例は、はじめに次の "test 1" を検索し、それから "test" を検索します。 - -これは、2 つの検索コマンドを分けて実行するのと似ていますが、次の点が違います: -- 合わせて 1 つの検索コマンドなので、演算コマンドに対して使うことができます。 -- "n"、"N" コマンドを使った場合、検索方向は最初の検索コマンドと同じです。 -- エラーが起きた場合、カーソルはまったく動きません。 - - *last-pattern* -最後に使われた検索パターン (最終検索パターン) とオフセットは記憶され、同じ検索 -を繰り返すのに使うことができます。検索方向を変えたり、カウントを指定したりする -こともできます。Note: 記憶されるパターンは 2 つあります。1 つは 'normal' 検索 -コマンドのパターンです。もう 1 つは置換コマンド ":s" のパターンです。空のパ -ターンを指定すると直前に使用されたパターンが使われます。ただし、検索パターンが -まだ使用されてなかった場合は、可能であれば、直前の置換コマンドのパターンが使わ -れます。 - -'magic' オプションは最終検索パターンに影響しません。'magic' を変更しても、最終 -検索パターンの解釈は変わりません。 -'ignorecase' オプションは違います。'ignorecase' が変更された場合、最終検索パ -ターンは、違うテキストにマッチする可能性があります。 - -'hlsearch' オプションがオンの場合、最終検索パターンにマッチするテキストが強調 -表示されます。 - -最終検索パターンを消去するには次のようにします: > - :let @/ = "" -パターンに空文字列をセットしているのではありません。それだと全ての場所にマッチ -してしまいます。パターンは本当に消去され、Vim起動直後のように、何もない状態に -なります。 - -検索では通常、カーソル下のマッチはスキップされます。そのとき、すぐ隣の文字から -検索を開始するのか、スキップしたマッチの後ろから検索を開始するのかは、 -'cpoptions' の'c' フラグに依存します。|cpo-c|を参照。 - 'c' フラグがある場合: "/..." は 1 から 3 文字ずつ進みます。 - 'c' フラグがない場合: "/..." は 1 文字ずつ進みます。 -検索は行頭から開始され、カーソル位置を過ぎたマッチを見付けるまでスキップされま -す。そのため、'c' フラグを含んでいる場合の動作は予想外かもしれません。 -訳注: aaaaaa -訳注: カーソルが 2 桁目にある場合、/aaa は 4 桁目からの aaa にマッチする。 -訳注: これは、行頭から aaa aaa というマッチの区切りになり、 -訳注: カーソルを含んだ最初の aaa がスキップされるため。 - -後方検索するときも、検索は行頭から始まり、上述のように 'cpoptions' の 'c' フラ -グが使われます。そして、カーソル位置より前でマッチする最後のマッチが使われます。 - -Vi では、":tag" コマンドでタグを検索すると、最終検索パターンは上書きされます。 -Vim では、'cpoptions' に 't' フラグがある場合のみ、最終検索パターンが上書きさ -れます。どちらにしても、検索パターンは常に検索履歴に保存されます。 - -'wrapscan' オプションがオン (初期設定) の場合、検索がバッファーの端に到達した -ときに、もう一方の端に移動して検索が継続されます。オフの場合は、後方検索なら -バッファーの先頭、前方検索ならバッファーの末尾でストップします。 -パターンが見つからなかった場合、'wrapscan' がオンのときは、"pattern not found" -というメッセージが表示され、カーソルは動きません。オフのときは、後方検索なら -"search hit TOP without match"、前方検索なら"search hit BOTTOM without -match"、というメッセージが表示されます。 -'wrapscan' がオンのときに検索がバッファーの端から端へ継続した場合、後方検索な -ら"search hit TOP, continuing at BOTTOM"、前方検索なら"search hit BOTTOM, -continuing at TOP" というメッセージが表示されます。このメッセージを表示しない -ようにするには、'shortmess' オプションに 's' フラグを設定します。メッセージは -'highlight' オプションの 'w' で強調表示されます (初期設定: standout)。 - - *search-range* -"/" コマンドで検索するとき、\%>l を含めることで検索の範囲を指定できます。 -例えば、199行目と300行目の間にある "limit" という単語を検索するには次のように -します: > - /\%>199l\%<300llimit -|/\%>l|も参照。 - -他にも、":substitute"コマンドに 'c' フラグをつける方法で、擬似的な範囲内検索が -できます。例: > - :.,300s/Pattern//gc -この例では、カーソル位置から 300 行目までの間で "Pattern" が検索されます。マッ -チした場所で、動作を指示するためのキーを入力必要があります。検索を停止するには -'q'を、次のマッチを検索するには 'n' を入力します。 - -"*", "#", "g*", "g#" コマンドはカーソルに近い単語を次の順番で検索します。最初 -に見つかったものが使われます: -- カーソル位置のキーワード -- 同じ行の、カーソルの右側のキーワード -- カーソル位置の単語 -- 同じ行の、カーソルの右側の単語 -キーワードは、'iskeyword' で定義されている文字だけを含む文字列です。 -単語 (|WORD|) は、空白文字 (<Tab> や <Space>) を含まない文字列です。 -Note: 10本の指を使ってタイプしているなら、このコマンドを覚えるのは簡単です: -"#" は左手の中指で押します (左上に向かって検索します)。 -"*" は右手の中指で押します (右下に向かって検索します)。 -訳注: これは英語キーボードでの話 - -============================================================================== -2. パターンの定義 *search-pattern* *pattern* *[pattern]* - *regular-expression* *regexp* *Pattern* - *E76* *E383* *E476* - -初心者の方はユーザーマニュアルの27章 |usr_27.txt| を読んでください。 - - */bar* */\bar* */pattern* -1. パターンは、"\|" で分けられた 1 つ以上のブランチからなります。ブランチがど - れか 1 つでもマッチすればマッチします。例えば、"foo\|beep" は "foo" と - "beep" にマッチします。複数のブランチがマッチした場合は、最初にマッチしたも - のが使われます。 - - pattern ::= branch - or branch \| branch - or branch \| branch \| branch - etc. - - */branch* */\&* -2. ブランチは、"\&" で分けられた1つ以上の連接からなります。全ての連接が同じ - 場所でマッチした場合に限り、最後の連接がマッチします。例: - "foobeep\&..." は "foobeep" の "foo" にマッチします。 - ".*Peter\&.*Bob" は "Peter" と "Bob" が両方ある行でマッチします。 - - branch ::= concat - or concat \& concat - or concat \& concat \& concat - etc. - - */concat* -3. 連接は、連続した 1 つ以上のピースからなります。ピースがすべて、順番どおり - マッチした場合にマッチします。たとえば、"f[0-9]b" は最初に "f" にマッチし、 - 次に数字、そして "b" にマッチします。 - - concat ::= piece - or piece piece - or piece piece piece - etc. - - */piece* -4. ピースはアトムです。アトムが何回マッチするかを指示する、量指定子を後ろに置 - くことができます。たとえば "a*" はいくつの "a" でもマッチします。 - ""、"a"、"aa" など。|/multi|を参照。 - - piece ::= atom - or atom multi - - */atom* -5. アトムはパターンアイテムを構成する要素です。ほとんどのアトムは 1 文字にマッ - チします。多くの場合、アトムは普通の文字か文字クラスです。カッコを使ってパ - ターンからアトムを作れます。"\z(\)" は構文強調専用です。 - - atom ::= ordinary-atom |/ordinary-atom| - or \( pattern \) |/\(| - or \%( pattern \) |/\%(| - or \z( pattern \) |/\z(| - - -============================================================================== -3. Magic */magic* - -パターンの中でリテラルとして扱われる文字は、テキストの同じ文字とマッチします。 -しかし、バックスラッシュが前置されると、特別な意味を持つようになります。 - -バックスラッシュを前置しなくても特別な意味を持つ文字があります。そのような文字 -をリテラル文字としてマッチさせるには、バックスラッシュを前置する必要がありま -す。 - -ある文字がリテラルとして処理されるかどうかは、オプション'magic'と、以下で説明 -するアイテムに依存します。 - */\m* */\M* -"\m" を使うと、それ以降のパターンは 'magic' がオンの状態で処理されます。 -オプション 'magic' の設定よりも優先されます。 -"\M"を使うと、それ以降のパターンは 'nomagic' の状態で処理されます。 - */\v* */\V* -"\v" を使うと、それ以降の、'0'-'9'、'a'-'z'、'A'-'Z'、'_'、以外のすべての -ASCII 文字は特別な意味を持ちます。 "very magic" - -"\V" を使うと、それ以降はバックスラッシュだけが特別な意味を持ちます。 -"very nomagic" - -例: -after: \v \m \M \V マッチするもの ~ - 'magic' 'nomagic' - $ $ $ \$ 行末 - . . \. \. 何か 1 文字 - * * \* \* 直前のアトムの繰り返し - () \(\) \(\) \(\) グループ化してアトムにする - | \| \| \| 選択の区切り - \a \a \a \a 英字 - \\ \\ \\ \\ リテラルのバックスラッシュ - \. \. . . リテラルのドット - \{ { { { リテラルの "{" - a a a a リテラルの 'a' - -{\m、\M、\v、\V、はVimだけの機能です} - -オプション 'magic' は初期設定のままにしておいてください。環境の違いによるトラ -ブルを回避できます。パターンが 'magic' の設定に影響されないようにするには、パ -ターンの先頭に "\m" か "\M" を置きます。 - - -============================================================================== -4. パターンの概要 *pattern-overview* - -量指定子の概要。 */multi* *E61* *E62* -詳しい説明や使用例は、リンク先を参照してください。 *E64* - - 量指定子 ~ - 'magic' 'nomagic' アトムがいくつマッチするか ~ -|/star| * \* 0 以上 最長一致 -|/\+| \+ \+ 1 以上 最長一致 (*) -|/\=| \= \= 0 か 1 最長一致 (*) -|/\?| \? \? 0 か 1 最長一致 (*) - -|/\{| \{n,m} \{n,m} n 以上 m 以下 最長一致 (*) - \{n} \{n} n 正確に指定した数だけ (*) - \{n,} \{n,} n 以上 最長一致 (*) - \{,m} \{,m} 0 以上 m 以下 最長一致 (*) - \{} \{} 0 以上 最長一致 (*と同じ) (*) - -|/\{-| \{-n,m} \{-n,m} n 以上 m 以下 最短一致 (*) - \{-n} \{-n} n 正確に指定した数だけ (*) - \{-n,} \{-n,} n 以上 最短一致 (*) - \{-,m} \{-,m} 0 以上 m 以下 最短一致 (*) - \{-} \{-} 0 以上 最短一致 (*) - - *E59* -|/\@>| \@> \@> 1 強欲な量指定子 (*) -|/\@=| \@= \@= なし 幅ゼロの肯定先読み |/zero-width| (*) -|/\@!| \@! \@! なし 幅ゼロの否定先読み |/zero-width| (*) -|/\@<=| \@<= \@<= なし 幅ゼロの肯定後読み |/zero-width| (*) -|/\@<!| \@<! \@<! なし 幅ゼロの否定後読み |/zero-width| (*) - -(*) {Vi にはない機能です} - - -普通のアトムの概要 */ordinary-atom* -詳しい説明や使用例は、リンク先を参照してください。 - - アトム ~ - magic nomagic マッチするもの ~ -|/^| ^ ^ 行頭 (パターンの先頭にある場合だけ) |/zero-width| -|/\^| \^ \^ リテラル文字 '^' -|/\_^| \_^ \_^ 行頭 (どこでも使える) |/zero-width| -|/$| $ $ 行末 (パターンの末尾にある場合だけ) |/zero-width| -|/\$| \$ \$ リテラル文字 '$' -|/\_$| \_$ \_$ 行末 (どこでも使える) |/zero-width| -|/.| . \. 何か 1 文字 (改行以外) -|/\_.| \_. \_. 何か 1 文字 (改行含む) -|/\<| \< \< 単語の先頭 |/zero-width| -|/\>| \> \> 単語の末尾 |/zero-width| -|/\zs| \zs \zs なし。マッチの開始地点を設定します -|/\ze| \ze \ze なし。マッチの終了地点を設定します -|/\%^| \%^ \%^ ファイルの先頭 |/zero-width| *E71* -|/\%$| \%$ \%$ ファイルの末尾 |/zero-width| -|/\%V| \%V \%V 選択範囲内 |/zero-width| -|/\%#| \%# \%# カーソル位置 |/zero-width| -|/\%'m| \%'m \%'m マーク m の位置 |/zero-width| -|/\%l| \%23l \%23l 23行目 |/zero-width| -|/\%c| \%23c \%23c 23列目 |/zero-width| -|/\%v| \%23v \%23v 23列目 (表示単位) |/zero-width| - -文字クラス {Vi にはない機能です}: */character-classes* -|/\i| \i \i 識別子文字 (オプション 'isident' を参照) -|/\I| \I \I "\i" と同じですが、数字は除外します -|/\k| \k \k キーワード文字 (オプション 'iskeyword' を参照) -|/\K| \K \K "\k" と同じですが、数字は除外します -|/\f| \f \f ファイル名の文字 (オプション 'isfname' を参照) -|/\F| \F \F "\f" と同じですが、数字は除外します -|/\p| \p \p 印字可能文字 (オプション 'isprint' を参照) -|/\P| \P \P "\p" と同じですが、数字は除外します -|/\s| \s \s 空白文字: <Space> と <Tab> -|/\S| \S \S 空白文字以外。\s の反対です -|/\d| \d \d 数字 [0-9] -|/\D| \D \D 数字以外 [^0-9] -|/\x| \x \x 16 進数字 [0-9A-Fa-f] -|/\X| \X \X 16 進数字以外 [^0-9A-Fa-f] -|/\o| \o \o 8 進数字 [0-7] -|/\O| \O \O 8 進数字以外 [^0-7] -|/\w| \w \w 単語を構成する文字 [0-9A-Za-z_] -|/\W| \W \W 単語を構成する文字以外 [^0-9A-Za-z_] -|/\h| \h \h 単語の先頭の文字 [A-Za-z_] -|/\H| \H \H 単語の先頭の文字以外 [^A-Za-z_] -|/\a| \a \a 英字 [A-Za-z] -|/\A| \A \A 英字以外 [^A-Za-z] -|/\l| \l \l 小文字英字 [a-z] -|/\L| \L \L 小文字英字以外 [^a-z] -|/\u| \u \u 大文字英字 [A-Z] -|/\U| \U \U 大文字英字以外 [^A-Z] -|/\_| \_x \_x x は上記の文字クラスのどれかです。文字クラスと改行が - マッチします。 -(文字クラスここまで) - -|/\e| \e \e <Esc> -|/\t| \t \t <Tab> -|/\r| \r \r <CR> -|/\b| \b \b <BS> -|/\n| \n \n 改行 -|/~| ~ \~ 最後に置換された文字列 -|/\1| \1 \1 最初の \(\) と同じ文字列 {Vi にはない機能です} -|/\2| \2 \2 "\1" と同じですが、2 番目の \(\) を使います - ... -|/\9| \9 \9 "\1" と同じですが、9 番目の \(\) を使います - *E68* -|/\z1| \z1 \z1 構文強調専用。|:syn-ext-match|を参照 - ... -|/\z1| \z9 \z9 構文強調専用。|:syn-ext-match|を参照 - - x x 特別な意味のない文字は、その文字自身とマッチします - -|/[]| [] \[] [] で囲んだ文字のうちどれか -|/\%[]| \%[] \%[] 任意にマッチするアトム列 - -|/\c| \c \c 大文字小文字を無視します。'ignorecase' は使用されない -|/\C| \C \C 大文字小文字を区別します。'ignorecase' は使用されない -|/\m| \m \m 以降のパターン文字を 'magic' がオンの状態で処理します -|/\M| \M \M 以降のパターン文字を 'magic' がオフの状態で処理します -|/\v| \v \v 以降のパターン文字を "very magic" で処理します -|/\V| \V \V 以降のパターン文字を "very nomagic" で処理します -|/\Z| \Z \Z ユニコードの合成文字かどうかを無視します。 - ヘブライ語やアラビア語で母音を検索するときに便利です。 - -|/\%d| \%d \%d 10進数指定の特定の文字 (例 \%d123) -|/\%x| \%x \%x 16進数指定の特定の文字 (例 \%x2a) -|/\%o| \%o \%o 8進数指定の特定の文字 (例 \%o040) -|/\%u| \%u \%u 特定のマルチバイト文字 (例 \%u20ac) -|/\%U| \%U \%U 特定の広範囲のマルチバイト文字 (例 \%U12345678) - -例 マッチするもの ~ -\<\I\i* or -\<\h\w* -\<[a-zA-Z_][a-zA-Z0-9_]* - 識別子 (例えば C 言語の識別子) - -\(\.$\|\. \) <EOL> かスペースの直前のピリオド - -[.!?][])"']*\($\|[ ]\) 文末。")" コマンドが認識する文末と同じ定義です。 - -cat\Z "cat" と "càt" ("a" + 0x0300) にマッチする。 - 見た目は似ていますが、"càt" (0x00e0)にはマッチしませ - ん。 - - -============================================================================== -5. 量指定子 (Multi items) *pattern-multi-items* - -アトムがどのように、何回マッチするかを指示するものを、量指定子 (multi) と呼び -ます。概要は |/multi| を参照してください。 - - */star* */\star* *E56* -* ('magic'がオフのときは \* ) - アトムの 0 回以上の繰り返し。最長一致。 - Example 'nomagic' マッチするもの ~ - a* a\* ""、"a"、"aa"、"aaa"、など。 - .* \.\* 改行以外の全て (空文字列も) - \_.* \_.\* バッファの末尾までの全て - \_.*END \_.\*END 一番最後の "END" までの全て - - 例外: パターンの最初と "^" の直後の "*" は、リテラルの "*" にマッチし - ます。 - - "\_." の繰り返しには注意してください。たくさんのテキストがマッチして、 - そして、時間が掛かります。たとえば、"\_.*END" は、カーソルの位置から 1 - 番最後の "END" までのすべてのテキストがマッチします。"*" は最長一致な - ので、まずファイルの末尾までスキップして、それから 1 文字ずつ後退しな - がら "END" を探します。 - - */\+* *E57* -\+ アトムの 1 回以上の繰り返し。最長一致。 {Vi にはない機能です} - Example マッチするもの ~ - ^.\+$ 空行以外の行 - \s\+ 1 文字以上の空白 - - */\=* -\= 0 回または 1 回のアトム。最長一致。 {Vi にはない機能です} - Example マッチするもの ~ - foo\= "fo" と "foo" - - */\?* -\? \= と同じ。"?" コマンドによる後方検索では使えません。 - {Vi にはない機能です} - - */\{* *E58* *E60* *E554* -\{n,m} アトムの n 以上 m 以下の繰り返し。最長一致 -\{n} アトムの n 回 の繰り返し -\{n,} アトムの n 回以上 の繰り返し。最長一致 -\{,m} アトムの 0 以上 m 以下の繰り返し。最長一致 -\{} アトムの 0 回以上 の繰り返し。最長一致 (*と同じ) - */\{-* -\{-n,m} アトムの n 以上 m 以下の繰り返し。最短一致 -\{-n} アトムの n 回 の繰り返し -\{-n,} アトムの n 回以上 の繰り返し。最短一致 -\{-,m} アトムの 0 以上 m 以下の繰り返し。最短一致 -\{-} アトムの 0 回以上 の繰り返し。最短一致 - {すべてViにはない機能です} - - n と m には 10 進数正数、またはゼロを指定できます。 - - *non-greedy* - "{" の直後に "-" がある場合は、最短一致のアルゴリズムが使われます (下 - 記の例を参照)。特に、"\{-}" は "*" と同じですが、最短一致のアルゴリズ - ムが使われます。しかし、早い位置でマッチするものが、短いマッチよりも優 - 先されます。たとえば、"a\{-}b" は "xaaab" の "aaab" にマッチします。 - - Example マッチするもの ~ - ab\{2,3}c "abbc" または "abbbc" - a\{5} "aaaaa" - ab\{2,}c "abbc", "abbbc", "abbbbc", etc. - ab\{,3}c "ac", "abc", "abbc" or "abbbc" - a[bc]\{3}d "abbbd"、"abbcd"、"acbcd"、"acccd"、など - a\(bc\)\{1,2}d "abcd" または "abcbcd" - a[bc]\{-}[cd] "abcd" の "abc" - a[bc]*[cd] "abcd" の "abcd" - - } にバックスラッシュを前置するかどうかは任意です: \{n,m\} - - */\@=* -\@= 幅ゼロの肯定先読み。{Vi にはない機能です} - Perl の "(?=pattern)" と同じです。 - Example マッチするもの ~ - foo\(bar\)\@= "foobar" の "foo" - foo\(bar\)\@=foo なにもマッチしない - */zero-width* - "\@=" (や、"^"、"$"、"\<"、"\>"、など) を使った場合、その文字はマッチ - に含まれません。これらのアイテムは、マッチすることができるかどうかの - チェックだけに使われます。続くアイテムが同じ場所でマッチすることに注意 - してください。上記の最後の例は "foobarfoo" にはマッチしません。"bar" - がマッチしたのと同じ場所で "foo" とマッチしようとするからです。 - - Note: "\&" は "\@=" と同じような働きをします。"foo\&.." と - "\(foo\)\@=.." は同じです。カッコを書かなくていいので "\&" の方が簡単 - です。 - - - */\@!* -\@! 幅ゼロの否定先読み。 |/zero-width| {Vi にはない機能です} - Perl の "(?!pattern)" と同じです。 - Example マッチするもの ~ - foo\(bar\)\@! 後ろに "bar" のない "foo" - a.\{-}p\@! 後ろに "p" のない "a"、"ap"、"aap"、"app" など - if \(\(then\)\@!.\)*$ 後ろに "then" のない "if" - - "\@!" を使うには注意が必要です。パターンにマッチしない場所、というのは - そこらじゅうにあるからです。"a.*p\@!" は "a" から行末までマッチしま - す。なぜなら、".*" が全ての文字にマッチし、"p" は行末にマッチしないか - らです。"a.\{-}p\@!" は後ろに "p" のない文字列、"a"、"ap"、"aap"、など - にマッチします。なぜなら、"." が "p" にもマッチし、"p\@!" がその後ろに - マッチする(つまり "p" がマッチしない) からです。 - - 直前がマッチしないことを調べるために "\@!" を使うことはできません。 - "\(foo\)\@!bar" は "foobar" の "bar" にマッチします。なぜなら、"foo" - がマッチしなかった場所で、"bar" がマッチするからです。"foobar" がマッ - チしないように、"\(foo\)\@!...bar" とすることもできますが、これは行頭 - の "bar" にはマッチしません。"\(foo\)\@<!bar" を使ってください。 - - 実用的な例: "bar" を含んでいない行から "foo" を探す: > - /^\%(.*bar\)\@!.*\zsfoo -< このパターンはまず、行の中で "bar" がマッチしないことを確認します。も - しどこかで ".*bar" がマッチすると \@! によってこのパターンは否決されま - す。それがマッチせず、そしてどこかで "foo" が見つかると、"\zs" によっ - て "foo" の直前でマッチが開始したことにされます。 - - */\@<=* -\@<= 幅ゼロの肯定後読み。|/zero-width| {Vi にはない機能です} - Perl の "(?<=pattern)" と同じですが、Vimでは可変長パターンも使えます。 - Example マッチするもの ~ - \(an\_s\+\)\@<=file "an" と空白文字 (改行含む) の後の "file" - - 処理速度を気にするなら、この量指定子は避けたほうが無難です。代わりに - "\zs" を使ってください |/\zs|。次のものは上記の例と同じものにマッチし - ます: - an\_s\+\zsfile - - "\@<=" と "\@<!" は直前の文字がマッチしているかどうかをチェックしま - す。理論上は、マッチの現在位置よりも前ならどこでもマッチできます。しか - し、処理時間を制限するために、マッチの現在行と、(もしあれば) 1 つ前の - 行だけが検索されます。ほとんどの場合はこれで十分ですし、遅くなり過ぎる - こともありません。 - "\@<=" や "\@<!" の後にくるパターンは最初にチェックされます。そのため、 - "\1" のような、\(\) の前方参照は機能しません。そのときは次のようにしま - す: - Example マッチするもの ~ - \1\@<=,\([a-z]\+\) "abc,abc" の ",abc" - - */\@<!* -\@<! 幅ゼロの否定後読み。マッチの現在位置の直前の文字列が、アトムにマッチし - ない場合にマッチします。現在行と 1 つ前の行だけがチェックされます。 - |/zero-width| {Vi にはない機能です} - Perl の "(?<!pattern)" と同じですが、Vimでは可変長パターンも使えます。 - 対象のアトムは、続くアトムの直前までがマッチの範囲になるため、最後が - ".*" で終わっているアトムも機能します。 - 注意: これは遅くなることがあります (マッチするかどうかを多くの場所で - チェックする必要があるため)。 - Example マッチするもの ~ - \(foo\)\@<!bar "foobar" 以外の "bar" - \(\/\/.*\)\@<!in "//" の後ろ以外の "in" - - */\@>* -\@> 強欲な量指定子。 {Vi にはない機能です} - Perlの "(?>pattern)" と同じです。 - Example マッチするもの ~ - \(a*\)\@>a なにもマッチしない ("a*" が全ての "a" を取るので、その - 後に "a" があることはありません) - - パターンがそのアトムだけであるかのようにマッチします。そして、パターン - 全体がマッチしなくても、そのアトムのマッチを短くして再トライしたりはし - ません (バックトラックしません)。次の違いに注意してください。"a*b" と - "a*ab" は両方とも "aaab" にマッチします。このとき、後者の "a*" は先頭 - の "aa" にマッチしています。"\(a*\)\@>ab" は "aaab" にマッチしません。 - なぜなら、"a*"が"aaa"にマッチする (最長一致する) ため、"ab" がマッチで - きないからです。 - - -============================================================================== -6. 普通のアトム *pattern-atoms* - -普通のアトムは次のものです: - - */^* -^ パターンの先頭にある場合、行頭にマッチします。"\|"、"\("、"\%(" の直後 - でも構いません。他の場所にある場合は、リテラル文字の '^' にマッチしま - す。|/zero-width| - Example マッチするもの ~ - ^beep( (おそらく) C 言語の関数 "beep" の開始。 - - */\^* -\^ リテラル文字 '^' にマッチします。パターンのどの場所でも使えます。 - - */\_^* -\_^ 行頭にマッチします。|/zero-width| パターンのどの場所でも使えます。 - Example マッチするもの ~ - \_s*\_^foo 空白文字や空行の直後の、行頭の "foo" - - */$* -$ パターンの末尾、または "\|"、"\)"、"\n" ('magic' on時) の前にある場 - 合、行末 (<EOL>) にマッチします。他の場所にある場合は、リテラル文字の - '$' にマッチします。 |/zero-width| - - */\$* -\$ リテラル文字の '$' にマッチします。パターンのどの場所でも使えます。 - - */\_$* -\_$ 行末にマッチします。|/zero-width| パターンのどの場所でも使えます。 - Note: "a\_$b" はどこにもマッチしません。"b" は行末とはマッチしないから - です。代わりに、"a\nb" を使ってください |/\n|。 - Example マッチするもの ~ - foo\_$\_s* 行末の "foo" と、それに続く空白や空行 - -. ('nomagic'なら \.) */.* */\.* - 改行以外のすべての文字がマッチします。 - - */\_.* -\_. 改行も含め、すべての文字がマッチします。 - 注意: "\_.*" はバッファの末尾までのすべてのテキストがマッチします。 - - */\<* -\< 単語の先頭にマッチします。このアトムの次の文字は単語の 1 文字目です。 - どの文字が単語を構成するかは、オプション 'iskeyword' で設定します。 - |/zero-width| - - */\>* -\> 単語の末尾にマッチします。このアトムの前の文字は単語の最後の文字です。 - どの文字が単語を構成するかは、オプション 'iskeyword' で設定します。 - |/zero-width| - - */\zs* -\zs どこにでもマッチして、マッチの開始地点を設定します。このアトムの次の文 - 字は、マッチした文字列の 1 文字目です。|/zero-width| - 例: > - /^\s*\zsif -< これは、行頭からスペースを無視して、"if" にマッチします。 - 複数回の繰り返しで使った場合は、最後にマッチしたものが使われます。 - 例: > - /\(.\{-}\zsFab\)\{3} -< これは、3 番目に現れた "Fab" にマッチします。 - {Vi にはない機能です} {|+syntax|が有効な場合のみ利用できます} - */\ze* -\ze どこにでもマッチして、マッチの末尾を設定します。このアトムの前の文字 - は、マッチした文字列の最後の文字です。|/zero-width| - 複数回の繰り返しで使った場合は、最後にマッチしたものが使われます。 - 例: > - /end\ze\(if\|for\) -< これは、"endif" または "endfor" の "end" にマッチします。 - {Vi にはない機能です} {|+syntax|が有効な場合のみ利用できます} - - */\%^* *start-of-file* -\%^ ファイルの先頭にマッチします。文字列 (|expr-string|) とマッチングする - 場合は、文字列の先頭にマッチします。{Vi にはない機能です} - 例: > - /\%^\_.\{-}\zsVIM -< これは、ファイルの最初にある "VIM" にマッチします。 - - */\%$* *end-of-file* -\%$ ファイルの末尾にマッチします。文字列 (|expr-string|) とマッチングする - 場合は、文字列の末尾にマッチします。{Vi にはない機能です} - Note: 次のパターンでは、ファイルの最後の "VIM" を検索できません: > - /VIM\_.\{-}\%$ -< これは、カーソル位置から次の "VIM" を検索します。"VIM" の後の - "\_.\{-}\%$" が常にマッチするからです。ファイルの最後の "VIM" を検索す - るには、次のようにします: > - /VIM\ze\(\(VIM\)\@!\_.\)*\%$ -< "VIM" の後に "VIM" がないことを確実にするために|/\@!|を使っています。 - ファイルの末尾から後方検索する方が簡単です。 - - */\%V* -\%V 選択範囲内にマッチします。ビジュアルモードでないときは、|gv| で再選択 - できる範囲にマッチします。 - これはゼロ幅マッチ |/zero-width| です。パターンを選択範囲内でマッチさ - せたい場合は、パターンの最初と最後にこれを指定してください。例: > - /\%Vfoo.*bar\%V -< カレントバッファでのみ機能します。 - - */\%#* *cursor-position* -\%# カーソルの位置にマッチします。ウィンドウに表示されているバッファ内で - マッチングする場合のみ機能します。{Vi にはない機能です} - 注意: パターンが使われた後で、カーソルを移動した場合、マッチの結果は正 - 確ではなくなってしまいます。マッチの結果は自動的に更新されません。これ - は特に、構文強調と 'hlsearch' に関係します。 - カーソルが移動しても、表示は自動的に更新されません。表示が更新されるの - は、行を変更したため行全体が更新されたときや、|CTRL-L| コマンドを使っ - てスクリーン全体を更新したときです。カーソル位置の単語を強調表示するに - は次のようにします: > - /\k*\%#\k* -< 'hlsearch' をオンにして、カーソルを移動し、テキストを変更してみて、表 - 示が更新されるかどうか確認してください。 - - */\%'m* */\%<'m* */\%>'m* -\%'m マーク m の位置にマッチします。 -\%<'m マーク m より前の位置にマッチします。 -\%>'m マーク m より後の位置にマッチします。 - 例えば、マーク 's から 'e までを強調するには次のようにします: > - /.\%>'s.*\%<'e.. -< Note: マーク 'e の位置をマッチに含めるには 'e の後に二つのドットが必要 - です。なぜなら、"\%<'e" はマーク 'e の前の文字にマッチし、そしてそれは - ゼロ幅マッチ|/zero-width| なので、その文字は結果に含まれないからです。 - {Vi にはない機能です} - 注意: マークを検索した後にマークを移動した場合、その結果は正しくなくな - ります。Vim は自動的にマッチの強調表示を更新したりしません。 - |/\%#| で検索した後にカーソルを動かした場合と似ています。 - - */\%l* */\%>l* */\%<l* -\%23l 指定した行にマッチします。 -\%<23l 指定した行より上にマッチします。 -\%>23l 指定した行より下にマッチします。 - この 3 つを使って、バッファの特定の行にマッチできます。"23" の所に行番 - 号を指定してください。先頭の番号は 1 です。{Vi にはない機能です} - 注意: 行を挿入したり削除したりしても、マッチの結果は自動的に更新されま - せん。そのため、このアトムを使った構文強調は、すぐに誤った表示になって - しまいます。 - 現在行を強調表示するには次のようにします: > - :exe '/\%' . line(".") . 'l.*' -< 'hlsearch' をオンにして、カーソルを移動し、テキストを変更してみて、表 - 示が更新されるかどうか確認してください。 - - */\%c* */\%>c* */\%<c* -\%23c 指定した列にマッチします。 -\%<23c 指定した列より前にマッチします。 -\%>23c 指定した列より後にマッチします。 - この 3 つを使って、バッファの特定の列にマッチできます。"23" の所に列番 - 号を指定してください。先頭の番号は 1 です。実際には、何バイト目かを指 - 定するので、マルチバイト文字を扱うときには、"列番号" という表現は正確 - ではありません。{Vi にはない機能です} - 注意: 行を挿入したり削除したりしても、マッチの結果は自動的に更新されま - せん。そのため、このアトムを使った構文強調は、すぐに誤った表示になって - しまいます。 - カーソル位置の列を強調表示するには次のようにします: > - :exe '/\%' . col(".") . 'c' -< 'hlsearch' をオンにして、カーソルを移動し、テキストを変更してみて、表 - 示が更新されるかどうか確認してください。 - 44 バイト目を強調表示するには次のようにします: > - /\%>43c.\%<46c -< Note: "." が 44 バイト目にマッチした場合、"%<46c" は 45 列目にマッチし - ます。 - */\%v* */\%>v* */\%<v* -\%23v 指定した表示列にマッチします。 -\%<23v 指定した表示列より前にマッチします。 -\%>23v 指定した表示列より後にマッチします。 - この 3 つを使って、バッファの特定の表示列にマッチできます。文字列 - (|expr-string|) とマッチングするときは、カレントウィンドウの、 - 'tabstop' などの設定が使われます。 - "23" の所に表示列番号を指定してください。先頭の番号は 1 です。 - Note: Tab 文字や全角文字などの、複数列で表示される文字の途中の列を指定 - した場合は、マッチしません {Vi にはない機能です} - 注意: 行を挿入したり削除したりしても、マッチの強調表示は自動的に更新さ - れません。そのため、このアトムを使った構文強調は、すぐに誤った表示に - なってしまいます。 - 表示列の72桁目以降のすべての文字を強調表示するには次のようにします: > - /\%>72v.* -< 'hlsearch' をオンにして、カーソルを移動し、テキストを変更してみて、表 - 示が更新されるかどうか確認してください。 - 17 列までのテキストにマッチさせるには次のようにします: > - /.*\%17v -< 17 列目も含まれます。なぜならそこに "\%17v" がマッチするからです (たと - えそれがゼロ幅マッチ (|/zero-width|) だとしても)。ドットを追加してその - 次の文字にマッチさせても結果は同じになります: > - /.*\%17v. -< 次のコマンドも同様の動作ですが、17 列目に文字が存在しなくてもマッチし - ます: > - /.*\%<18v - -文字クラス: {Vi にはない機能です} -\i 識別子文字 ('isident'参照) */\i* -\I "\i" と同じですが、数字は除外します */\I* -\k キーワード文字 ('iskeyword'参照) */\k* -\K "\k" と同じですが、数字は除外します */\K* -\f ファイル名の文字 ('isfname'参照) */\f* -\F "\f" と同じですが、数字は除外します */\F* -\p 印字可能文字 ('isprint'参照) */\p* -\P "\p" と同じですが、数字は除外します */\P* - -NOTE: 上記のものはマルチバイト文字に対しても機能します。次のものは、示された範 -囲の ASCII 文字だけがマッチします。 - - *whitespace* *white-space* -\s 空白文字: <Space> と <Tab> */\s* -\S 空白文字以外。\s の反対です */\S* -\d 数字: [0-9] */\d* -\D 数字以外: [^0-9] */\D* -\x 16 進数字: [0-9A-Fa-f] */\x* -\X 16 進数字以外: [^0-9A-Fa-f] */\X* -\o 8 進数字: [0-7] */\o* -\O 8 進数字以外: [^0-7] */\O* -\w 単語を構成する文字: [0-9A-Za-z_] */\w* -\W 単語を構成する文字以外: [^0-9A-Za-z_] */\W* -\h 単語の先頭の文字: [A-Za-z_] */\h* -\H 単語の先頭の文字以外: [^A-Za-z_] */\H* -\a 英字: [A-Za-z] */\a* -\A 英字以外: [^A-Za-z] */\A* -\l 小文字英字: [a-z] */\l* -\L 小文字英字以外: [^a-z] */\L* -\u 大文字英字: [A-Z] */\u* -\U 大文字英字以外: [^A-Z] */\U* - - NOTE: これらのアトムは |/[]| を使うよりも高速です。 - - NOTE: 'ignorecase'、"\c"、"\C" は、文字クラスには影響しません。 - - */\_* *E63* */\_i* */\_I* */\_k* */\_K* */\_f* */\_F* - */\_p* */\_P* */\_s* */\_S* */\_d* */\_D* */\_x* */\_X* - */\_o* */\_O* */\_w* */\_W* */\_h* */\_H* */\_a* */\_A* - */\_l* */\_L* */\_u* */\_U* -\_x x は上記の文字クラスのどれかです。文字クラスと改行がマッチします。 -(文字クラスここまで) - -\e <Esc> にマッチします */\e* -\t <Tab> にマッチします */\t* -\r <CR> にマッチします */\r* -\b <BS> にマッチします */\b* -\n 改行にマッチします */\n* - バッファのテキストではなく、文字列 (|expr-string|) とマッチングすると - きは、リテラルの改行文字がマッチします。 - -~ 最後に置換された文字列とマッチします */~* */\~* - -\(\) パターンをカッコでまとめます */\(* */\(\)* */\)* - たとえば、"\(^a\)" は行頭の 'a' にマッチします。 *E51* *E54* *E55* - -\1 \( と \) に囲まれた最初の部分正規表現が */\1* *E65* - マッチした文字列と同じ文字列にマッチします。{Vi にない機能です} - たとえば、"\([a-z]\).\1" は "ata"、"ehe"、"tot"、などにマッチします。 -\2 "\1" と同じですが、2 番目の部分正規表現を使います */\2* - ... */\3* -\9 "\1" と同じですが、9 番目の部分正規表現を使います */\9* - Note: 部分正規表現の番号は、最初の "\(" から数えて、左から右へ、順番に - 番号が付けられます。マッチする順番ではありません。 - -\%(\) パターンをカッコでまとめます */\%(\)* */\%(* *E53* - \(\) と同じですが、部分正規表現としてカウントされません。たくさんのグ - ループを作ることができますし、処理が少し高速です。 - {Vi にはない機能です} - -x 特別な意味のない文字は、その文字自身とマッチします - - */\* */\\* -\x バックスラッシュと文字の組合せで、現在、特別な意味を持っていない文字 - は、将来の拡張のために予約されています。 - -[] ('nomagic' のときは \[]) */[]* */\[]* */\_[]* */collection* -\_[] - コレクションです。複数の文字を角カッコで囲みます。コレクションに含まれ - る任意の 1 文字とマッチします。 - Example マッチするもの ~ - [xyz] 'x'、'y'、'z' のどれか - [a-zA-Z]$ 行末の英字 - \c[a-z]$ 同上 - - */[\n]* - "\_" を付けた場合、コレクションは改行も含みます。コレクションに "\n" - を含めた場合と同じですが、"\_" を付けた場合は、コレクションの先頭が - "^" の場合でも改行にマッチします。つまり、"\_[^ab]" は "a" と "b" と改 - 行にマッチします。 - これは Vi 互換です。"\_" や "\n" を使わなければ、改行にはマッチしませ - ん。 - - *E769* - ']' がない場合、Vim はエラーを表示せず、コレクションが使われているので - はないと判断します。'[' を検索するときに便利です。しかし、Vim 内部での - 検索では E769 のエラーがでます。 - - コレクション文字列の先頭が "^" の場合、 コレクションに含まれている文字 - 以外の文字がマッチします。"[^xyz]" は 'x'、'y'、'z' 以外の文字にマッチ - します。 - - 2 つの文字で '-' を挟んで 、ASCII 文字の範囲を指定できます。たとえ - ば、"[0-9]" はすべての数字にマッチします。非ASCII 文字も指定できます - が 256 より大きな値の文字は指定できません。 - - 文字クラス表現を使って、その文字クラスが含んでいる文字を取り込むこと - ができます。次の文字クラスがサポートされています。 - 名前 含んでいるもの ~ -*[:alnum:]* [:alnum:] 英数字 -*[:alpha:]* [:alpha:] 英字 -*[:blank:]* [:blank:] スペースと Tab 文字 -*[:cntrl:]* [:cntrl:] コントロール文字 -*[:digit:]* [:digit:] 10 進数字 -*[:graph:]* [:graph:] スペース以外の印字可能文字 -*[:lower:]* [:lower:] 小文字英字 ('ignorecase' がオンのとき - はすべての英字) -*[:print:]* [:print:] スペースを含む印字可能文字 -*[:punct:]* [:punct:] 句読点 -*[:space:]* [:space:] 空白文字 (スペース、Tab、改ページ文字) -*[:upper:]* [:upper:] 大文字英字 ('ignorecase' がオンのとき - はすべての英字) -*[:xdigit:]* [:xdigit:] 16 進数字 -*[:return:]* [:return:] <CR> 文字 -*[:tab:]* [:tab:] <Tab> 文字 -*[:escape:]* [:escape:] <Esc> 文字 -*[:backspace:]* [:backspace:] <BS> 文字 - 角カッコで囲んだ文字クラス表現を、コレクションの角カッコ内に書きま - す。たとえば、"[-./[:alnum:]_~]\+" は、UNIX のファイル名として妥当な - パターンです。このパターンは、'-'、'.'、'/'、英数字、'_'、'~'、のど - の文字の組合せでも、1 文字以上の文字列にマッチします。 - これらのものは、8 ビット文字のみマッチします。 - */[[=* *[==]* - - 等価クラス。これはその文字とほぼ同じ文字にマッチします。例えば、アク - セントを無視するなど。これは Unicode、latin1、latin9 でのみ機能しま - す。次のように書きます: - [=a=] - */[[.* *[..]* - - 照合要素。現在は中に一文字だけ指定できます: - [.a.] - */\]* - - リテラル文字の ']'、'^'、'-'、'\' をコレクションに含めるには、バック - スラッシュを前置して、"[xyz\]]"、"[\^xyz]"、"[xy\-z]"、"[xyz\\]" と - 書きます。 - Note: POSIX ではこのようなバックスラッシュの使い方はサポートされてい - ません。 - ']' は、コレクションの先頭、または '^' の直後にそのまま書いて、 - "[]xyz]" や "[^]xyz]" とすることができます。 - {Vi にはない機能です} - '-' も、先頭や末尾にそのまま書いて、"[-xyz]"、"[^-xyz]"、"[xyz-]"、 - とすることができます。'\' も指定文字 "^]-\bdertnoUux" 以外の文字の前 - ならそのまま書けます。"[\xyz]" は、'\'、'x'、'y'、'z'、の文字にマッ - チします。しかし、常に "\\" と書くようにした方がいいでしょう。'\' と - 何かの文字の組合せは将来的に拡張に使われる可能性があります。 - - 'cpoptions' が 'l' フラグを含んでいない場合、次のものが特別に解釈さ - れます。{Vi にはない機能です}: - \e <Esc> - \t <Tab> - \r <CR> (改行文字ではありません) - \b <BS> - \n 改行。|/[\n]| 参照。 - \d123 10進数の文字番号 - \o40 8 進数の文字番号 (最大値 0377) - \x20 16進数の文字番号 (最大値 0xff) - \u20AC 16進数のマルチバイト文字番号 (最大値 0xffff) - \U1234 16進数のマルチバイト文字番号 (最大値 0xffffffff) - NOTE: 他のバックスラッシュによる特殊文字の表記は、[] の中では機能し - ません。 - - コレクションを使ったマッチングは遅くなることがあります。 コレクショ - ンの文字と、テキストの文字を、それぞれ 1 文字ずつ比較する必要がある - からです。同じ意味のアトムが他にある場合は、それを使ってください。た - とえば、"\d" は "[0-9]" よりも速く、同じ文字にマッチします。 - - */\%[]* *E69* *E70* *E369* -\%[] 任意にマッチするアトム列です。これは常にマッチします。アトム単位で最長 - 一致し、最初にアトムがマッチしなかったところでストップします。例: > - /r\%[ead] -< これは、"r"、"re"、"rea"、"read" にマッチします。1 番長いマッチが使わ - れます。Ex コマンドの "function" は、"fu" が必須で、"nction" は省略可 - 能ですが、次の例は、そのようなものにマッチします: > - /\<fu\%[nction]\> -< "full" の "fu" にマッチするようなことがないように、単語末尾のアトム - "\>" が使われています。使う機会はあまりないかもしれませんが、普通の文 - 字以外のアトムを使って、さらに複雑なものも表現できます。例: > - /\<r\%[[eo]ad]\> -< これは、"r"、"re"、"ro"、"rea"、"roa"、"read"、"road" にマッチします。 - [] の中では \(\)、\%(\)、\z(\) は使えません。\%[] はネストできません。 - "[" を含めるには "[[]" を、"]" を含めるには "[]]" を使ってください。 - 例: > - /index\%[[[]0[]]] -< これは "index"、"index["、"index[0"、"index[0]" にマッチします。 - {|+syntax| が有効な場合のみ利用可能} - - */\%d* */\%x* */\%o* */\%u* */\%U* *E678* - -\%d123 10進数で指定した文字にマッチします。このアトムの後ろには数字以外の文字 - を置いてください。 -\%o40 8 進数で指定した文字にマッチします (最大値 0377)。040 より小さい値を指 - 定するとき、このアトムの後ろには8進数字以外の文字か、数字以外の文字を - 置いてください。 -\%x2a 16進数で指定した文字にマッチします。2桁まで。 -\%u20AC 16進数で指定した文字にマッチします。4桁まで。 -\%U1234abcd 16進数で指定した文字にマッチします。8桁まで。 - -============================================================================== -7. 大文字と小文字を無視する */ignorecase* - -オプション 'ignorecase' がオンの場合、普通の英字の大文字と小文字の違いは無視さ -れます。'smartcase' がオンの場合、パターンが大文字を含んでいないときだけ、大文 -字と小文字が無視されます。 - */\c* */\C* -"\c" はパターン中のどこにでも置くことができ、パターン全体が、'ignorecase' をオ -ンにした状態で処理されます。実際の 'ignorecase' と 'smartcase' の設定は無視さ -れます。"\C" は "\c" の反対の意味で、大文字と小文字は必ず区別されます。 -{Vim だけが \c と \C をサポートしています} -Note: 'ignorecase'、"\c"、"\C" は、文字クラスには作用しません。 - -例: - パターン 'ignorecase' 'smartcase' マッチするもの ~ - foo off - foo - foo on - foo Foo FOO - Foo on off foo Foo FOO - Foo on on Foo - \cfoo - - foo Foo FOO - foo\C - - foo - -技術的な説明: *NL-used-for-Nul* -ファイル中の <Nul> 文字は、<NL> 文字としてメモリに保存され、ディスプレイには -"^@" と表示されます。これは、ファイルを読み書きする時に変換されます。検索パ -ターンに <Nul> をマッチさせるには、CTRL-@ か "CTRL-V 000" を入力します。この動 -作はそれほど違和感がないはずです。検索パターンの <Nul> 文字は内部で <NL> に変 -換されています。CTRL-V CTRL-J をタイプした場合も <NL> が入力されるので、ファイ -ル中の <Nul> を検索するのに使えますが、この動作は不自然に感じるかもしれませ -ん。{Vi はファイル中の <Nul> 文字を扱えません} - - *CR-used-for-NL* -'fileformat' が "mac" の場合、ファイル中の <NL> は内部では <CR> で保存され、テ -キストの中では "^J" として表示されます。他では、<NL> と <Nul> の場合と同じよう -に扱われます。 - -スクリプトでは、パターン中の <NL> は、文字列中の <NL> とマッチします。"\n" ( -バックスラッシュと n) は <NL> とはマッチしません。バッファ中のテキストとのマッ -チの場合のみ、"\n" は改行とマッチします。 - - *pattern-multi-byte* -マルチバイト文字を使ったパターンは、たいていは、ユーザーが期待したとおりに機能 -します。しかし、不正なバイトでトラブルが起こることもあります。不正なバイトを含 -むパターンはおそらく、決してマッチしません。 - -============================================================================== -8. Composing characters *patterns-composing* - - */\Z* -パターンに "\Z" が含まれている場合、合成文字は無視されます。そのため、どの合成 -文字が、いくつ結合されていても、基底文字とマッチするだけでマッチします。 -'encoding' が "utf-8" の場合だけ使用します。 - -合成文字と合成されないアイテムの直後に合成文字がある場合、その合成文字を含んで -いるすべての文字がマッチします。 -訳注: x が合成文字として /x/ /\(x\)/ /\zsx/ など - -ドットと合成文字を使うと、どの文字に合成されていても、その合成文字にマッチしま -す。 -訳注: x が合成文字として /.x/ と書く - -合成文字の順番を変更して文字の外見が変わらなかったとしても、合成文字の順番は重 -要です。これは将来変更されるかもしれません。 - -============================================================================== -9. Perl のパターンとの比較 *perl-patterns* - -Vim と Perl の正規表現は、とても似ていて、同じ事ができます。違いは表記だけで -す。違いの要約を示します: - -効果 Vim の表記 Perl の表記 ~ ----------------------------------------------------------------- -大文字と小文字を区別しない \c (?i) -大文字と小文字を区別する \C (?-i) -前方参照しないグループ \%(atom\) (?:atom) -最短一致の量指定子 \{-n,m} *?, +?, ??, {}? -幅ゼロの肯定先読み atom\@= (?=atom) -幅ゼロの否定先読み atom\@! (?!atom) -幅ゼロの肯定後読み atom\@<= (?<=atom) -幅ゼロの否定後読み atom\@<! (?<!atom) -強欲な量指定子 atom\@> (?>atom) - -Vim と Perl では文字列中の改行の扱いが少し違います: - -Perl では、'^' と '$' はテキストの最先頭と最末尾にマッチしますが、'm' フラグを -使うと、テキストの中間の改行にもマッチするようになります。's' フラグを使うと、 -'.' が改行にもマッチするようなります。'm' と 's' のフラグは、上記の(?i) フラグ -のように、パターン中で設定することもできます。 - -Vim では、'^' と '$' は常に中間の改行にもマッチします。最先頭と最末尾にはそれ -ぞれ、'\%^' と '\%$' がマッチします。Perl の 's' フラグに対応するのは '\_' 修 -飾子です。'.' や文字クラスの前に '\_' を付けると、改行にもマッチするようになり -ます。 - -次のものは Perl だけの機能です: -- 正規表現中で任意のコードを実行する: (?{perl code}) -- 条件式: (?(condition)true-expr|false-expr) - -次のものは Vim だけの機能です: -- パターンのマジックを変更する: \v \V \m \M - (バックスラッシュだらけになるのを防げます) -- 任意にマッチするアトム列: \%[atoms] -- \& ("\&" と "\|" は、"and" と "or" の関係です。複数のブランチを同じ場所で - マッチさせることができます) -- 行や列を指定してマッチングする: \%5l \%5c \%5v -- 正規表現にマッチしたものとして返される範囲を設定する: \zs \ze - -============================================================================== -10. マッチしたテキストを強調する *match-highlight* - - *:mat* *:match* -:mat[ch] {group} /{pattern}/ - カレントウィンドウ内で強調表示するパターンを定義します。強調に - は {group} が使われます。例: > - :highlight MyGroup ctermbg=green guibg=green - :match MyGroup /TODO/ -< {pattern} の区切りには // 以外の文字を使うことができます。'"' - や '|' などの特別な文字を使うときは注意してください。 - - {group} は、コマンドを実行する前に定義しておく必要があります。 - - {group} の強調は、'hlsearch' や構文強調 ('syntax'参照) の強調 - よりも優先されます。 - - Note: 'hlsearch' の強調はすべてのウィンドウに適用されますが、 - ":match" はカレントウィンドウだけです。ウィンドウのバッファを - 切り替えても、強調表示は維持されます。 - - 'ignorecase' の設定は使われません。大文字と小文字は区別されま - す。大文字と小文字の違いを無視するには、|/\c| を使います。 - - 'redrawtime' を設定すると、検索に費やす時間を制限できます。 - - 改行にマッチしているときに、Vim がディスプレイの一部だけを再描 - 画すると、予期しない結果になることがありますが、それは、Vim が - 再描画した行からマッチの検索を開始するからです。 - - |matcharg()| は |:match| コマンドで使用されたパターンと強調グ - ループを返します。|getmatches()| は |matchadd()| と |:match| - で定義されたマッチのパターンと強調グループのリストを返します。 - - |:match| コマンドではマッチを三つまで定義できます (|:match|、 - |:2match|、|:3match|)。|matchadd()| にはこのような制限はありま - せん。加えて、優先順位を設定することもできます。 - - :match コマンドによって設定された強調グループとパターンを得る - には |matcharg()| を使います。 - - 次の例は、表示桁で 72 列目以降の文字をすべて強調表示します: > - :highlight rightMargin term=bold ctermfg=blue guifg=blue - :match rightMargin /.\%>72v/ -< 表示桁で 7 列目の文字をすべて強調表示するには次のようにします: > - :highlight col8 ctermbg=grey guibg=grey - :match col8 /\%<8v.\%>7v/ -< Note: TAB のような文字は、1 桁を超えて表示されます。 - -:mat[ch] -:mat[ch] none - 以前に定義したマッチパターンを消去します。 - - -:2mat[ch] {group} /{pattern}/ *:2match* -:2mat[ch] -:2mat[ch] none -:3mat[ch] {group} /{pattern}/ *:3match* -:3mat[ch] -:3mat[ch] none - 上述の |:match| と同じですが、別々のマッチを設定します。そのた - め、同時に三つのマッチを表示できます。同じ場所でマッチした場合 - は、数値の低いものが優先されます。 - ":3match" コマンドは |matchparen| プラグインで使用されていま - す。あなたが手動でマッチを設定するときは ":match" を使ってくだ - さい。他のプラグインでは ":2match" を使ってください。 - -訳注: 訳語 -訳注: concat 連接 -訳注: multi >量指定子< 量指定詞 数量子 数量詞 -訳注: ordinary atom 普通のアトム -訳注: a sequence of optionally matched atoms 任意にマッチするアトム列 -訳注: last search pattern 最終検索パターン - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/pi_getscript.jax b/runtime.old/doc/pi_getscript.jax deleted file mode 100644 index 16c27147a..000000000 --- a/runtime.old/doc/pi_getscript.jax +++ /dev/null @@ -1,449 +0,0 @@ -*pi_getscript.txt* For Vim バージョン 7.0. Last change: 2011 May 31 -> - GETSCRIPT REFERENCE MANUAL by Charles E. Campbell, Jr. -< -Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz> - (remove NOSPAM from the email address) - *GetLatestVimScripts-copyright* -Copyright: (c) 2004-2010 by Charles E. Campbell, Jr. *glvs-copyright* - The VIM LICENSE applies to getscript.vim and - pi_getscript.txt (see |copyright|) except use - "getscript" instead of "Vim". No warranty, express or implied. - Use At-Your-Own-Risk. - -Getscript はあなたが使っている Vim スクリプトの最新バージョンを簡単に検索する -ためのプラグインです。|:GLVS| と入力すると getscript が実行されます。すると、 -<GetLatestVimScripts.dat> ファイル (|GetLatestVimScripts_dat|参照) に列挙され -たスクリプトの最新バージョンが http://vim.sf.net/ から取得されます。 - -============================================================================== -1. 目次 *glvs-contents* *glvs* *getscript* - *GetLatestVimScripts* - - 1. 目次............................................: |glvs-contents| - 2. GetLatestVimScripts -- 準備.....................: |glvs-install| - 3. GetLatestVimScripts の使い方....................: |glvs-usage| - 4. GetLatestVimScripts データファイル..............: |glvs-data| - 5. GetLatestVimScripts 対応プラグイン..............: |glvs-plugins| - 6. GetLatestVimScripts 自動インストール............: |glvs-autoinstall| - 7. GetLatestViMScripts オプション..................: |glvs-options| - 8. GetLatestVimScripts アルゴリズム................: |glvs-alg| - 9. GetLatestVimScripts 開発履歴....................: |glvs-hist| - - -============================================================================== -2. GetLatestVimScripts -- 準備 *getscript-start* - *getlatestvimscripts-install* - - Vim に付属の getscript *glvs-dist-install* - -Vim 7.0 には GetLatestVimScripts.dist (サンプルファイル) が付属していないの -で、自分で作成する必要があります。|GetLatestVimScripts_dat| 参照。 - - vim.sf.net から入手した getscript *glvs-install* - -NOTE: GetLatestVimScripts.dist のコピーは、初めて getscript をインストールする -ときだけ必要です。 - -GetLatestVimScripts.dist は自分の一覧を作成するためのサンプルまたはテンプレー -トとして使ってください。ファイルにはスクリプトがいくつか列挙されていますが、必 -要なければ消してください。重要なのはファイル先頭の二行だけです。 - -GetLatestVimScripts の動作には wget か curl が必要です。 - - 1. ファイルが圧縮されている場合: gunzip getscript.vba.gz - 2. Unix: - vim getscript.vba - :so % - :q - cd ~/.vim/GetLatest - mv GetLatestVimScripts.dist GetLatestVimScripts.dat - (GetLatestVimScripts.dat を編集して、インストールしたいプラグ - インの一覧を書いてください。|GetLatestVimScripts_dat| 参照) - - 3. Windows: - vim getscript.vba - :so % - :q - cd **path-to-vimfiles**/GetLatest - mv GetLatestVimScripts.dist GetLatestVimScripts.dat - (GetLatestVimScripts.dat を編集して、インストールしたいプラグ - インの一覧を書いてください。|GetLatestVimScripts_dat| 参照) - - -============================================================================== -3. GetLatestVimScripts の使い方 *glvs-usage* *:GLVS* - -次のコマンドを実行すると GetLatestVimScripts() が呼び出されます > - - :GLVS - -同じ名前のコマンドが他のプラグインによって既に定義されていた場合は、次のコマン -ドを使ってください -> - :GetLatestVimScripts -< -このコマンドは http://vim.sourceforge.net/ をチェックしてスクリプトを更新し、 -許可がある場合はそれを自動的にインストールします。そのために次のファイルが使わ -れます: -> - .vim/GetLatest/GetLatestVimScripts.dat (unix) -< -or > - ..wherever..\vimfiles\GetLatest\GetLatestVimScripts.dat (windows) -(|glvs-data|参照)。そして、[.vim|vimfiles]/plugin ディレクトリ内のプラグインが -検査されます (|glvs-plugins|参照)。 - -ダウンロードされたスクリプトは -~/.vim/GetLatest (unix) or ...\vimfiles\GetLatest (windows) -に保存されます。vimrc ファイルに次の設定を書いておくと、ダウンロードしたスクリ -プトが自動的にインストールされます: > - - let g:GetLatestVimScripts_allowautoinstall=1 -< -<GetLatestVimScripts.dat> ファイルは自動的に更新され、ダウンロードした最新スク -リプトのバージョンが反映されます。 -(|glvs-options|も参照) - - -============================================================================== -4. GetLatestVimScripts データファイル *getscript-data* *glvs-data* - *:GetLatestVimScripts_dat* -<GetLatestVimScripts.dat> ファイルの先頭二行は次のようなテキストになっていま -す: -> - ScriptID SourceID Filename - -------------------------- -< -その下に三列 (数値 数値 テキスト) の行が続きます。 -GetLatest/GetLatestVimScripts.dist ファイルはそのようなデータファイルの例に -なっています。コメントは #... で書くことができます。 - -一列目の数値はスクリプトの ScriptID です。Web ブラウザで http://vim.sf.net/ に -あるスクリプトを探すとき、スクリプトへのリンクにマウスカーソルを合わせると、次 -のような url が確認できますが - - http://vim.sourceforge.net/scripts/script.php?script_id=40 - -この "40" が ScriptID です。GetLatestVimScripts はこの番号を使ってスクリプトの -ページにアクセスします。この番号は最初に vim.sf.net にプラグインをアップロード -したときに付けられます。 - -二列目の数値はスクリプトの SourceID です。SourceID は vim.sf.net にスクリプト -がアップロードされるごとに新しい番号が付けられます。したがって、その番号を見れ -ばスクリプトがアップロードされた時期が分かります。SourceID に 1 を指定すると、 -そのスクリプトがまだ最新版に更新されていないということを明示できます。 - -GetLatestVimScripts は、vim.sf.net のスクリプトのページから SourceID を抜き出 -して、それが GetLatestVimScripts.dat に記録された番号よりも大きければ、そのス -クリプトをダウンロードします。 -(|GetLatestVimScripts_dat|参照) - -スクリプトの作者が、プラグインに特殊なコメント行を書いていた場合、そのコメント -行を使って <GetLatestVimScripts.dat> が生成されます。スクリプトの依存関係も処 -理されます。例: > - - " GetLatestVimScripts: 884 1 :AutoInstall: AutoAlign.vim - -このコメントは、チェックすべきスクリプトの番号が 884 番であること、そのスクリ -プトが自動インストール可能であることを示しています。getscript はこの情報を -GetLatestVimScripts.dat に保存します (まだなければ)。次のような行になります: > - - 884 1 :AutoInstall: AutoAlign.vim -< -詳細は |glvs-plugins| を参照してください。このように、GetLatestVimScripts はプ -ラグインを更新するための包括的な機能を提供しています。 - -要約: - - * getscript が、既にインストールされているプラグインを元に - GetLatestVimScripts.dat を構築/追加できるように設定する: > - let g:GetLatestVimScripts_allowautoinstall=1 -< - * 次のような行が > - " GetLatestVimScripts: 884 1 :AutoInstall: AutoAlign.vim -< プラグインに含まれていれば、そのプラグインは AutoInstall 可能であることが - プラグインの作者によって示されていることになる。すべてのプラグインが - AutoInstall できるとは限らない。そして、AutoInstall できるかどうかを判断す - るのはプラグインの作者がもっとも適している。 - - * 次のような行が > - 884 1 :AutoInstall: AutoAlign.vim -< GetLatestVimScripts.dat ファイルに含まれていれば、あなたが getscript に対 - して AutoInstall の許可を与えていることになる。AutoInstall にはあなたとプ - ラグインの作者の両者の許可が必要です。|GetLatestVimScripts_dat| 参照。 - - - *GetLatestVimScripts_dat* -<GetLatestVimScripts.dat> ファイルの例: -> - ScriptID SourceID Filename - -------------------------- - 294 1 :AutoInstall: Align.vim - 120 2 Decho.vim - 40 3 DrawIt.tar.gz - 451 4 EasyAccents.vim - 195 5 engspchk.vim - 642 6 GetLatestVimScripts.vim - 489 7 Manpageview.vim -< -Note: 最初の二行は必須です。ただしコメントと同様に無視されます。 - - -============================================================================== -5. GetLatestVimScripts 対応プラグイン *getscript-plugins* *glvs-plugins* - - (このセクションはプラグイン作者向けの説明です)~ - -プラグインの作者がプラグインのどこかに以下のようなコメントを書いていた場合、 -GetLatestVimScripts はそれを見付けて、GetLatestVimScripts.dat ファイルの構築に -使います: -> - src_id - v - " GetLatestVimScripts: ### ### yourscriptname - ^ - scriptid -< -プラグインの作者は、上記のような行を書いて自分のプラグインを参照させてくださ -い。複数行書けるので、依存している別のプラグインを参照することもできます。その -場合でも書式は同じです。 - -プラグインが自動インストール可能 (|glvs-autoinstall|参照) なら (ほとんどのスク -リプトはそうだと思いますが)、"yourscriptname" の前に :AutoInstall: を指定する -ことができます。 -> - src_id - v - " GetLatestVimScripts: ### ### :AutoInstall: yourscriptname - ^ - scriptid -< -NOTE: :AutoInstall: 機能の実行にはプラグイン作者とユーザーの両者の許可が必要 ~ - です。 ~ - -GetLatestVimScripts 命令が未登録の場合は、ユーザーの -GetLatest/GetLatestVimScripts.dat ファイルに追加されます。あなたのプラグインが -依存しているスクリプトのインストールを比較的簡単に自動化できます。 - -プラグインの作者の方は、自分の環境で自分のプラグインをダウンロードしたくはない -と思います。リリース前の作業中のスクリプトが上書きされると困りますよね。それを -防ぐための仕組みが用意されています。次の行を <GetLatestVimScripts.dat> に書い -てください: -> - 0 0 yourscriptname -< -スクリプト "yourscriptname" に対する GetLatestVimScript 命令は処理されなくなり -ます。その命令行は <GetLatestVimScripts.dat> には登録されず、スクリプトはダウ -ンロードされません。これは :AutoInstall: を指定しているときには特に重要です。 - -"0 0 yourscriptname" の指定ではスクリプトに書かれた "yourscriptname" と同じ名 -前を使ってください。 - - -============================================================================== -6. GetLatestVimScripts 自動インストール *getscript-autoinstall* - *glvs-autoinstall* - -GetLatestVimScripts には自動インストール機能があります。スクリプトによってはイ -ンストールに特別な作業が必要なものもありますが (各スクリプトのインストール方法 -を確認してください)、ほとんどのスクリプトは自動インストール可能です。 - -自動インストールするには、データファイルのコメントフィールドを次のテキストで開 -始してください (前後の空白は無視されます): > - - :AutoInstall: -< -両端のコロンは必須です。必ずコメントフィールド (yourscriptname) の先頭に書いて -ください。 - -以下の行を <.vimrc> に書くと、自動インストール機能を無効にできます: > - - let g:GetLatestVimScripts_allowautoinstall= 0 -< -:AutoInstall: が有効になっている場合 (初期設定)、次のような拡張子のファイルが -自動インストール可能です: - - ---.tar.bz2 : 伸長して .vim/ ディレクトリに展開 - ---.vba.bz2 : 伸長して .vim/ ディレクトリにコピー、vimball で処理 - ---.vim.bz2 : 伸長して .vim/plugin ディレクトリにコピー - ---.tar.gz : 伸長して .vim/ 展開 - ---.vba.gz : 伸長して .vim/ ディレクトリにコピー、vimball で処理 - ---.vim.gz : 伸長して .vim/plugin ディレクトリにコピー - ---.vba : .vim/ ディレクトリに展開 - ---.vim : .vim/plugin にコピー - ---.zip : .vim/ ディレクトリに展開 - -ただし、圧縮ファイルを展開するか、あるいはファイルをプラグインディレクトリにコ -ピーするだけでインストール可能である必要があります。Vimball は常に自動インス -トール可能です。 - -自動インストールできないのはどんな場合でしょうか? 例を示します: - - .vim/after/syntax/blockhl.vim - -<blockhl.vim> は C/C++ のブロックを強調表示するスクリプトです。次の場所から入 -手できます: - - http://vim.sourceforge.net/scripts/script.php?script_id=104 - -現在、Vim の after/syntax はファイルタイプと同じ名前のスクリプトしかサポートし -てません (blockhl.vim の場合は、after/syntax/c.vim)。そのため、自動的にインス -トールすると、ユーザーの after/syntax/c.vim を上書きする可能性があります。 - -私は個人的に、<aftersyntax.vim> を after/syntax/c.vim にコピーして、 -after/syntax/c/ ディレクトリを使えるようにしています: - - http://vim.sourceforge.net/scripts/script.php?script_id=1023 - -このスクリプトを使うと、after/syntax/c ディレクトリにある複数のファイルをシン -タックスファイルとして使えます。ユーザーの after/syntax/c.vim を上書きしてしま -う可能性があるため、配布物には含めていません。 - - -============================================================================== -7. GetLatestVimScripts オプション *glvs-options* -> - g:GetLatestVimScripts_wget -< 初期設定: "wget" - スクリプトをダウンロードするのに使われるプログラム。 -> - g:GetLatestVimScripts_options -< 初期設定: "-q -O" - g:GetLatestVimScripts_wget に設定されたプログラムの起動引数。 -> - g:GetLatestVimScripts_allowautoinstall -< 初期設定: 1 - スクリプトの自動インストールを許可するかどうかの設定。自動イン - ストールはプラグインの作者によってそのプラグインが自動インス - トール可能であることが明示されている必要があります (それには - :AutoInstall: キーワードを GetLatestVimScripts コメント行に指 - 定します)。 -> - g:GetLatestVimScripts_autoinstalldir -< 初期設定= $HOME/.vim (linux) - 初期設定= $HOME/vimfiles (windows) - 自動インストールスクリプト (:AutoInstall:) のインストール先を - 変更できます。 - vimball のインストールには適用されません。 - -============================================================================== -8. GetLatestVimScripts アルゴリズム *glvs-algorithm* *glvs-alg* - -Vim の Web サイトでは、スクリプトID を利用してページを動的に生成しています。 - - http://vim.sourceforge.net/scripts/script.php?script_id=40 - -ページ内には最新の ソースID が書かれています。ソースID の番号は再利用されない -ので、その番号が、GetLatestVimScripts.dat に記録された番号より大きい場合は、新 -しいスクリプトがダウンロードできるということです。 - -スクリプトをダウンロードしたら、内部データベースの ScriptID、SourceID、 -scriptname を更新します。 - -自動インストールの手順は次の通り: - - ファイルを GetLatest/ から以下のディレクトリに移動する - Unix : $HOME/.vim - Windows: $HOME\vimfiles - if ファイルの拡張子 == ".bz2" - bunzip2 <file> - else if ファイルの拡張子 == ".gz" - gunzip <file> - そして、 - if ファイルの拡張子 == ".zip" - unzip <file> - else if ファイルの拡張子 == ".tar" - tar -oxvf <file> - else if ファイルの拡張子 == ".vim" - plugin ディレクトリに移動 - - -============================================================================== -9. GetLatestVimScripts 開発履歴 *getscript-history* *glvs-hist* {{{1 - -v33 May 31, 2011 : * using fnameescape() instead of escape() - * *.xz support -v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression -v31 Jun 29, 2008 : * (Bill McCarthy) fixed having hls enabled with getscript - * (David Schaefer) the acd option interferes with vimballs - Solution: bypass the acd option -v30 Jun 13, 2008 : * GLVS now checks for existence of fnameescape() and will - issue an error message if it is not supported -v29 Jan 07, 2008 : * Bram M pointed out that cpo is a global option and that - getscriptPlugin.vim was setting it but not restoring it. -v28 Jan 02, 2008 : * improved shell quoting character handling, cygwin - interface, register-a bypass - Oct 29, 2007 * Bill McCarthy suggested a change to getscript that avoids - creating pop-up windows -v24 Apr 16, 2007 : * removed save&restore of the fo option during script - loading -v23 Nov 03, 2006 : * ignores comments (#...) - * handles vimballs -v22 Oct 13, 2006 : * supports automatic use of curl if wget is not - available -v21 May 01, 2006 : * now takes advantage of autoloading. -v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use; - unzip needs the -o flag to overwrite. -v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong - script! Fixed. -v18 Mar 21, 2005 : * bugfix to automatic database construction - * bugfix - nowrapscan caused an error - (tnx to David Green for the fix) - Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in - :AutoInstall:s, even though its o/s is windows - Apr 01, 2005 * when downloading errors occurred, GLVS was - terminating early. It now just goes on to trying - the next script (after trying three times to - download a script description page) - Apr 20, 2005 * bugfix - when a failure to download occurred, - GetLatestVimScripts would stop early and claim that - everything was current. Fixed. -v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which - defaults to 1, can be used to prevent all - :AutoInstall: -v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent - * fixed bug with :AutoInstall: use of helptags -v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't - always preventing downloads (just usually). Fixed. -v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than - s:dotvim. Fixed. -v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid - is zero. Useful for script authors; that way their - own GetLatestVimScripts activity won't overwrite - their scripts. -v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that - was intended only for testing. Removed, now works. - * :AutoInstall: implemented -v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin: - * :GetLatestVimScripts command - * (runtimepath)/GetLatest/GetLatestVimScripts.dat - now holds scripts that need updating -v10 Apr 19, 2004 : * moved history from script to doc -v9 Jan 23, 2004 : windows (win32/win16/win95) will use - double quotes ("") whereas other systems will use - single quotes ('') around the urls in calls via wget -v8 Dec 01, 2003 : makes three tries at downloading -v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id=" - not found in downloaded webpage - Uses t_ti, t_te, and rs to make progress visible -v6 Aug 06, 2003 : final status messages now display summary of work - ( "Downloaded someqty scripts" or - "Everything was current") - Now GetLatestVimScripts is careful about downloading - GetLatestVimScripts.vim itself! - (goes to <NEW_GetLatestVimScripts.vim>) -v5 Aug 04, 2003 : missing an endif near bottom -v4 Jun 17, 2003 : redraw! just before each "considering" message -v3 May 27, 2003 : Protects downloaded files from errant shell - expansions with single quotes: '...' -v2 May 14, 2003 : extracts name of item to be obtained from the - script file. Uses it instead of comment field - for output filename; comment is used in the - "considering..." line and is now just a comment! - * Fixed a bug: a string-of-numbers is not the - same as a number, so I added zero to them - and they became numbers. Fixes comparison. - -============================================================================== -vim:tw=78:ts=8:ft=help:fdm=marker diff --git a/runtime.old/doc/pi_gzip.jax b/runtime.old/doc/pi_gzip.jax deleted file mode 100644 index 650b0eefc..000000000 --- a/runtime.old/doc/pi_gzip.jax +++ /dev/null @@ -1,39 +0,0 @@ -*pi_gzip.txt* For Vim バージョン 7.3. Last change: 2002 Oct 29 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -圧縮されたファイルをVimで編集する *gzip* *bzip2* *compress* - -1. 自動実行コマンド |gzip-autocmd| - -ここで説明されているのは |standard-plugin| (訳注: 標準プラグイン) です。 -このプラグインは 'compatible' がオフのときだけ利用できます。 -変数 "loaded_gzip" を設定することでプラグインが読み込まれないようにできます: > - :let loaded_gzip = 1 - -{Vi にはこの機能はない} - -============================================================================== -1. 自動実行コマンド *gzip-autocmd* - -このプラグインは自動実行コマンドをインストールして、以下の拡張子を持つファイル -の読み書きを処理します: - - 拡張子 圧縮方法(コマンド) ~ - *.Z compress (Lempel-Ziv) - *.gz gzip - *.bz2 bzip2 - -あなたが知るべきことはこれだけです。オプションはありません。 - -ファイルが伸長された後、再びファイル形式の判定処理が実行されます。それにより -"foo.c.gz" のようなファイルが "c" 形式のファイルとして判定されます。 - -'patchmode' を設定している場合、設定された値は圧縮を示す拡張子の後に付けられま -す。したがってパッチモードで作成されたファイルを開くときは自動的には伸長されま -せん。そのファイルを伸長するにはファイル名を変更する必要があるでしょう。 - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/pi_netrw.jax b/runtime.old/doc/pi_netrw.jax deleted file mode 100644 index a7f86cb80..000000000 --- a/runtime.old/doc/pi_netrw.jax +++ /dev/null @@ -1,3584 +0,0 @@ -*pi_netrw.txt* For Vim バージョン 7.3. Last change: 2011 May 31 - - ----------------------------------------------------- - NETRW REFERENCE MANUAL by Charles E. Campbell, Jr. - ----------------------------------------------------- -Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> - (remove NOSPAM from Campbell's email first) - -Copyright: Copyright (C) 1999-2011 Charles E Campbell, Jr *netrw-copyright* - Permission is hereby granted to use and distribute this code, with - or without modifications, provided that this copyright notice is - copied with it. Like anything else that's free, netrw.vim, - netrwPlugin.vim, netrwFileHandlers.vim, netrwSettings.vim, - syntax/netrw.vim, and pi_netrw.txt are provided *as is* and comes - with no warranty of any kind, either expressed or implied. No - guarantees of merchantability. No guarantees of suitability for - any purpose. By using this plugin, you agree that in no event will - the copyright holder be liable for any damages resulting from the - use of this software. - - - *dav* *ftp* *netrw-file* *rcp* *scp* - *davs* *http* *netrw.vim* *rsync* *sftp* - *fetch* *netrw* *network* - -============================================================================== -1. 目次 *netrw-contents* {{{1 - -1. 目次.................................................|netrw-contents| -2. Netrw の準備.........................................|netrw-start| -3. Netrw リファレンス...................................|netrw-ref| - 外部プログラムとプロトコル.........................|netrw-externapp| - 読み込み...........................................|netrw-read| - 書き込み...........................................|netrw-write| - スクリプト実行.....................................|netrw-source| - ディレクトリのファイル一覧表示.....................|netrw-dirlist| - USERID と PASSWORD を変更..........................|netrw-chgup| - NETRW の変数と設定.................................|netrw-variables| - パス...............................................|netrw-path| -4. ネットワークファイル転送.............................|netrw-xfer| - NETRC..............................................|netrw-netrc| - パスワード.........................................|netrw-passwd| -5. netrw の有効化.......................................|netrw-activate| -6. 透過的なリモートファイル編集.........................|netrw-transparent| -7. Ex コマンド..........................................|netrw-ex| -8. 変数とオプション.....................................|netrw-var| -9. ブラウジング.........................................|netrw-browse| - ブラウジングの紹介.................................|netrw-intro-browse| - クイックリファレンス: マップ.......................|netrw-browse-maps| - クイックリファレンス: コマンド.....................|netrw-browse-cmds| - ディレクトリをブックマークする.....................|netrw-mb| - ブラウジング.......................................|netrw-cr| - 水平分割ウィンドウを使ったブラウジング.............|netrw-o| - タブを使ったブラウジング...........................|netrw-t| - 垂直分割ウィンドウを使ったブラウジング.............|netrw-v| - 一覧表示スタイル変更 (thin wide long tree).........|netrw-i| - ブックマークしたディレクトリに移動.................|netrw-gb| - 前方のディレクトリに移動...........................|netrw-u| - 後方のディレクトリに移動...........................|netrw-U| - ユーザー定義関数でブラウジングをカスタマイズ.......|netrw-x| - ブックマークの削除.................................|netrw-mB| - ファイル/ディレクトリの削除........................|netrw-D| - ディレクトリ探査コマンド...........................|netrw-explore| - スターとパターンを使った探索.......................|netrw-star| - ファイルの情報を表示する...........................|netrw-qf| - 隠しリストを編集する...............................|netrw-ctrl-h| - ソートシーケンスを編集する.........................|netrw-S| - 取扱いをファイルまたはディレクトリに強制する.......|netrw-gd| |netrw-gf| - 親ディレクトリに移動する...........................|netrw--| - ファイル/ディレクトリを隠す........................|netrw-a| - ブラウジングを改善する.............................|netrw-ssh-hack| - ブックマークと履歴を一覧表示する...................|netrw-qb| - 新しいディレクトリを作成する.......................|netrw-d| - ブラウジングディレクトリをカレントディレクトリにする |netrw-c| - ファイルをマークする...............................|netrw-mf| - 正規表現を使ってファイルをマークする...............|netrw-mr| - マークファイル: 任意のコマンド.....................|netrw-mx| - マークファイル: 圧縮と伸長.........................|netrw-mz| - マークファイル: コピー.............................|netrw-mc| - マークファイル: Diff...............................|netrw-md| - マークファイル: 編集...............................|netrw-me| - マークファイル: Grep...............................|netrw-mg| - マークファイル: 拡張子による表示/非表示............|netrw-mh| - マークファイル: 移動...............................|netrw-mm| - マークファイル: 印刷...............................|netrw-mp| - マークファイル: スクリプト実行.....................|netrw-ms| - マークファイル: タグ生成...........................|netrw-mT| - マークファイル: ターゲットディレクトリを設定する...|netrw-mt| - マークファイル: マーク解除.........................|netrw-mu| - Netrw ブラウザ変数.................................|netrw-browser-var| - Netrw ブラウザとオプション設定の互換性.............|netrw-incompatible| - Netrw の設定.......................................|netrw-settings| - ファイルを取得する.................................|netrw-O| - プレビューウィンドウ...............................|netrw-p| - 以前のウィンドウ...................................|netrw-P| - 一覧を更新する.....................................|netrw-ctrl-l| - ファイル/ディレクトリの名前を変更する..............|netrw-move| - ソートの順番を逆にする.............................|netrw-r| - ソートの種類を変更する.............................|netrw-s| - ファイルを開くウィンドウを指定する.................|netrw-C| -10. 問題と対策...........................................|netrw-problems| -11. Netrw をデバッグする.................................|netrw-debug| -12. 変更履歴.............................................|netrw-history| -13. Todo.................................................|netrw-todo| -14. クレジット...........................................|netrw-credits| - -{Vi にはこれらの機能はない} - -============================================================================== -2. Netrw の準備 *netrw-start* {{{1 - -Netrw を使うとファイルの読み込み、書き込み、ネットワークを透したブラウジング、 -ローカルファイルのブラウジングが簡単になります。最初に、プラグインが有効になっ -ているかどうかを確認してください。最低限、次のような設定が<.vimrc>に必要です: -(なっていない場合は |netrw-activate| を参照してください) > - - set nocp " 'compatible' をオフにする - filetype plugin on " プラグインを有効にする -< -(|'cp'|と|:filetype-plugin-on|も参照してください) - -Netrw は url を使うことで他のマシンのファイルを透過的に扱うことができます -(|netrw-transparent|参照)。例えば、別のマシンにアカウントを持っていて、scp が -使えるなら、次のようにしてアクセスできます: > - - vim scp://hostname/path/to/file -< -ssh/scp による接続を簡単にしたい場合は |netrw-ssh-hack| を確認してください。 - -ssh/scp ではなく ftp の場合はどうでしょうか? もちろん簡単にできます: > - - vim ftp://hostname/path/to/file -< -ftp によるアクセスを簡単にしたい場合は <.netrc> ファイルを使ってください (あな -たの ftp がそれをサポートしているなら)。通常、それはユーザーのホームディレクト -リにあって、ユーザーだけが読み書きできるようなパーミッションになっています。中 -身は次のようなテキストです: > - - machine HOSTNAME login USERID password "PASSWORD" - machine HOSTNAME login USERID password "PASSWORD" - ... - default login USERID password "PASSWORD" -< -どのようなファイルがあるかを確認してからファイルを開きたい場合はブラウザを使い -ます。ローカルホストのファイルを見たい場合は単にディレクトリを開きます: > - - vim . - vim /home/userid/path -< -リモートホストのファイルを見たい場合も単にディレクトリを開きます (ただしディレ -クトリ名の末尾に "/" を付けてください): > - - vim scp://hostname/ - vim ftp://hostname/path/to/dir/ -< -詳細は |netrw-browse| を参照。 - -scp や ftp 以外のプロトコルもサポートされています。次の項 |netrw-externapp| で -は、それらの外部アプリケーションの使用方法を説明しています。 - -プラグインの無効化 *netrw-noload* - -プラグインを有効にしているときに netrw だけを無効にしたい場合は、netrw のプラ -グインファイルと自動ロードファイルの両方が読み込まれないようにする必要がありま -す。<.vimrc> に次の設定を書いてください: > - - :let g:loaded_netrw = 1 - :let g:loaded_netrwPlugin = 1 -< - -============================================================================== -3. Netrw リファレンス *netrw-ref* {{{1 - - Netrw は |netrw-start| で説明した scp や ftp 以外のプロトコルもサポートして - います。サポートされているのは dav、fetch、http などです。|netrw-externapp| - の一覧を見てください。各プロトコルには変数が関連付けられていて、変数にはそ - のプロトコルをサポートしている外部プログラムが設定されます。 - -外部プログラムとプロトコル *netrw-externapp* {{{2 - - プロトコル 変数 初期設定 - -------- ---------------- ------------- - dav: *g:netrw_dav_cmd* = "cadaver" if cadaver があるなら - dav: g:netrw_dav_cmd = "curl -o" elseif curl があるなら - fetch: *g:netrw_fetch_cmd* = "fetch -o" if fetch があるなら - ftp: *g:netrw_ftp_cmd* = "ftp" - http: *g:netrw_http_cmd* = "elinks" if elinks があるなら - http: g:netrw_http_cmd = "links" elseif links があるなら - http: g:netrw_http_cmd = "curl" elseif curl があるなら - http: g:netrw_http_cmd = "wget" elseif wget があるなら - http: g:netrw_http_cmd = "fetch" elseif fetch があるなら - rcp: *g:netrw_rcp_cmd* = "rcp" - rsync: *g:netrw_rsync_cmd* = "rsync -a" - scp: *g:netrw_scp_cmd* = "scp -q" - sftp: *g:netrw_sftp_cmd* = "sftp" - - *g:netrw_http_xcmd* : http://... プロトコルで使用するオプションはこの - 変数で指定できます。コマンドに合わせて設定を変更してください。初期設定 - は各コマンドに合わせて次のようになります: > - - elinks : "-source >" - links : "-source >" - curl : "-o" - wget : "-q -O" - fetch : "-o" -< - 例えば、あなたのシステムに elinks がインストールされているとき、(html - ソースではなく) レンダリングされたテキストを見たい場合は、.vimrc で次 - のように設定するといいでしょう > - let g:netrw_http_xcmd= "-dump >" -< - -読み込み *netrw-read* *netrw-nread* {{{2 - - 通常のコマンドで url を使うことができます。例: > - - :e ftp://[user@]machine/path -< - Nread コマンドも用意されています: - - :Nread ? ヘルプ表示 - :Nread "machine:path" uses rcp - :Nread "machine path" uses ftp w/ <.netrc> - :Nread "machine id password path" uses ftp - :Nread "dav://machine[:port]/path" uses cadaver - :Nread "fetch://[user@]machine/path" uses fetch - :Nread "ftp://[user@]machine[[:#]port]/path" uses ftp w/ <.netrc> - :Nread "http://[user@]machine/path" uses http uses wget - :Nread "rcp://[user@]machine/path" uses rcp - :Nread "rsync://[user@]machine[:port]/path" uses rsync - :Nread "scp://[user@]machine[[:#]port]/path" uses scp - :Nread "sftp://[user@]machine/path" uses sftp - -書き込み *netrw-write* *netrw-nwrite* {{{2 - - ファイルを保存するときにも url を使うことができます。例: > - - :w ftp://[user@]machine/path -< - Nwrite コマンドも用意されています: - - :Nwrite ? ヘルプ表示 - :Nwrite "machine:path" uses rcp - :Nwrite "machine path" uses ftp w/ <.netrc> - :Nwrite "machine id password path" uses ftp - :Nwrite "dav://machine[:port]/path" uses cadaver - :Nwrite "ftp://[user@]machine[[:#]port]/path" uses ftp w/ <.netrc> - :Nwrite "rcp://[user@]machine/path" uses rcp - :Nwrite "rsync://[user@]machine[:port]/path" uses rsync - :Nwrite "scp://[user@]machine[[:#]port]/path" uses scp - :Nwrite "sftp://[user@]machine/path" uses sftp - http: はサポートされてません! - -スクリプト実行 *netrw-source* {{{2 - - スクリプトを実行するときにも url を使うことができます。例: > - - :so ftp://[user@]machine/path -< - Nsource コマンドも用意されています: - - :Nsource ? ヘルプ表示 - :Nsource "dav://machine[:port]/path" uses cadaver - :Nsource "fetch://[user@]machine/path" uses fetch - :Nsource "ftp://[user@]machine[[:#]port]/path" uses ftp w/ <.netrc> - :Nsource "http://[user@]machine/path" uses http uses wget - :Nsource "rcp://[user@]machine/path" uses rcp - :Nsource "rsync://[user@]machine[:port]/path" uses rsync - :Nsource "scp://[user@]machine[[:#]port]/path" uses scp - :Nsource "sftp://[user@]machine/path" uses sftp - -ディレクトリのファイル一覧表示 *netrw-trailingslash* *netrw-dirlist* {{{2 - - ディレクトリを開くことでファイル一覧をブラウズできます: > - - :e scp://[user]@hostname/path/ - :e ftp://[user]@hostname/path/ -< - リモートのディレクトリを開くときは末尾の "/" が必ず必要です (netrw は - 末尾のスラッシュよってファイルのダウンロードかディレクトリのブラウズか - を判断します)。 - - Nread コマンドを使うこともできます (繰り替えしますが、末尾にはスラッ - シュが必要です): > - - :Nread [protocol]://[user]@hostname/path/ -< - *netrw-login* *netrw-password* -USERID と PASSWORD の変更 *netrw-chgup* *netrw-userpass* {{{2 - - ftp を使うと user-id と password を入力するプロンプトが表示されます。 - それらはグローバル変数の g:netrw_uid と s:netrw_passwd に記録されま - す。記録された ID とパスワードは次に ftp を使うときに再使用されます。 - 他の id/password を使う必要が出てきた場合は NetUserPass() 関数を呼び出 - してください。パスワードの入力を省略したい場合は ftp が <.netrc> ファ - イルをサポートしているかどうか確認してください。|netrw-passwd| も参照 - (ssh/scp でパスワードを省略したい場合は |netrw-ssh-hach| を参照)。 - - :NetUserPass [uid [password]] -- password入力(必要ならuidも) - :call NetUserPass() -- uid と password 入力 - :call NetUserPass("uid") -- password 入力 - :call NetUserPass("uid","password") -- uid と password 設定 - -NETRW の変数と設定 *netrw-variables* {{{2 -(|netrw-browser-var| |netrw-protocol| |netrw-settings| |netrw-var| も参照) - -Netrw にはたくさんの変数が用意されていて、好きなようにカスタマイズできます。 -:NetrwSettings コマンド (|netrw-settings|参照) を使うと、現在の netrw の設定が -表示されます。ほとんどの設定は下記、または |netrw-browser-options|、そして -|netrw-externapp| で説明されています。 - - *b:netrw_lastfile* 最後に読み書きされたネットワークファイルがバッファごと - に記録される。 (:Nw で使われる) - - *g:netrw_bufsettings* netrw バッファのオプション設定 - (初期設定) noma nomod nonu nowrap ro nobl - - *g:netrw_chgwin* ファイルを開くときに使用するウィンドウの番号を指定す - る。 (|netrw-C| も参照) - (初期設定) 定義なし - - *g:Netrw_funcref* ファイルを開くときに呼ばれる関数 (複数可) を指定する。 - まずファイルが開かれ、それから指定された関数参照 - (|Funcref|) が呼ばれる。複数指定する場合は関数参照のリス - ト (|List|) を指定する。 - (初期設定) 定義なし -> - 例: .vimrc で次のように設定します。すべてのファイ - ルを開く操作に作用します。 - fun! MyFuncRef() - endfun - let g:Netrw_funcref= function("MyFuncRef") -< - *g:netrw_ftp* 変数が存在しない場合はデフォルト ftp 使用 - =0 デフォルト ftp を使う (uid password) - =1 ftp の別方式を使う (user uid password) - ftp の使用に問題があるときにこの変数を設定して ftp の別 - 方式を試してください。 - - *g:netrw_ftpextracmd* 初期設定: なし - この変数に設定された文字列は ftp コマンドとして送信され - ます。例: - ="passive" - - *g:netrw_ftpmode* ="binary" (初期設定) - ="ascii" - - *g:netrw_ignorenetrc* =0 (linux と cygwin での初期設定) - =1 <.netrc> ファイルが機能しないのでそれを無視したい場合 - にこの値を設定します (Windoes + cmd.exe での初期設 - 定)。 - - *g:netrw_menu* =0 netrw のメニューを使う - =1 (初期設定) netrw のメニューを使わない - - *g:netrw_nogx* この変数が存在する場合、"gx" マップは定義されません。 - (|netrw-gx|参照) - - *g:netrw_uid* (ftp) user-id Vim セッションごとに記録される - *s:netrw_passwd* (ftp) password Vim セッションごとに記録される - - *g:netrw_preview* =0 (初期設定) プレビューウィンドウを水平分割で表示する - =1 プレビューウィンドウを垂直分割で表示する。 - "直前のウィンドウ" (|netrw-P|参照) にも作用します。 - - *g:netrw_scpport* = "-P" : scp のポート番号を設定するためのオプション - *g:netrw_sshport* = "-p" : ssh のポート番号を設定するためのオプション - - *g:netrw_sepchr* =\0xff - =\0x01 for enc == euc-jp (この値を使った方がいい文字コー - ドが他にもあるなら、知らせてく - ださい) - 内部処理で優先番号とファイル名を区切るのに使われる。 - |netrw-p12| 参照。 - - *g:netrw_silent* =0 : 普通に転送処理をする - =1 : 静か (silent) に転送処理をする - - *g:netrw_use_errorwindow* =1 : netrw のメッセージ表示に別ウィンドウを使う。 - メッセージが確実に表示されます (初期設定)。 - =0 : netrw のメッセージ表示に echoerr を使う。表示さ - れたメッセージを確認できないことがあるかもしれま - せんが、ウィンドウを閉じる必要がありません。 - - *g:netrw_win95ftp* =1 Win95 で、OS 付属の ftp が出力の末尾に書き出す四行 - の空行を削除する。 - =0 普通に ftp を使用する (末尾の行を削除しない) - - *g:netrw_cygwin* =1 windows で cygwin 付属の scp を想定する。また、ネッ - トワークブラウジングで ls を使った時間とサイズによる - ソートを可能にする (windowsでの初期設定)。 - =0 Windows の scp が Windows 形式のパスを扱えると想定す - る。ネットワークブラウジングでは ls ではなく dir を使 - 用する。 - このオプションは unix では無視されます。 - - *g:netrw_use_nt_rcp* =0 WinNT、Win2000、WinXP の rcp を使わない - =1 WinNT の rcp をバイナリモードで使う (初期設定) - -パス *netrw-path* {{{2 - -ほとんどのプロトコルではパスはユーザーディレクトリからの相対パスです。 -(所定のディレクトリからの相対パスとして扱うプロトコルもあります) -> - example: vim scp://user@host/somefile - example: vim scp://user@host/subdir1/subdir2/somefile -< -"somefile" は "user" のホームディレクトリの中です。ルートからのパスを指定した -い場合は絶対パスを指定してください: -> - example: vim scp://user@host//somefile - example: vim scp://user@host//subdir1/subdir2/somefile -< - -============================================================================== -4. ネットワークファイル転送 *netrw-xfer* {{{1 - -Vim におけるネットワークファイルの転送機能は Vim スクリプトで実装されたプラグ -インで提供されています (<netrw.vim>)。これは rcp、ftp or ftp+<.netrc>、scp、 -fetch、dav/cadaver、rsync、sftp などを使ってネットワークファイルの読み書きを実 -現しています。 - -http については wget or fetch による読み込みだけがサポートされています。 - -<netrw.vim> は標準プラグインです。Vim と様々なファイル転送プログラムをつなぐ役 -割をします。オートコマンドイベント (BufReadCmd、FileReadCmd、BufWriteCmd) を -使って、url 指定によるファイルの読み書き処理を横取りします。 > - - 例: vim ftp://hostname/path/to/file -< -コロンより前の文字列がプロトコルを示します (この例では ftp)。<netrw.vim> スク -リプトは、実際にファイルを転送する外部プログラム (ftp、scp、など) のコマンドを -作成します。ファイルは一時ファイル (Unix/Linux では /tmp/...) を経由して読み書 -きされます。一時ファイルは <netrw.vim> によって後始末されます。 - -"FTP User Name and Password Disclosure" における Jan Minář 氏の説明によると、 -ftp はセキュアなプロトコルではなく、ユーザー名とパスワードはインターネットの中 -を "そのまま" 流れ、そしてそれは盗聴ツールで盗むことが可能である。これは netrw -の問題ではなく ftp の問題です。この問題が心配なら ftp ではなく scp や sftp を -使うようにしてください。 - -Netrw は同じ Vim セッション中で同じホスト名が使われている間はユーザーIDとパス -ワードを使いまわします。 - -Jan は netrw における ftp の処理を多少誤解しているようです。通常、一つの "ftp -セッション" では複数のコマンドが実行されます。彼は uid/password は一つの ftp -セッションの間だけ保持されるべきだと考えているようです。しかし、netrw は ftp -操作をするために複数の "ftp セッション" を使います。そのため、uid/password を -一つの "ftp セッション" の間だけ保持しておくというのは、uid/password を保持し -ないのと変わりません。そうなれば、例えばリモートディレクトリをブラウズするよう -な操作はすぐに嫌気が差してしまうでしょう。 - -他方、Jan M 氏には感謝を捧げたいと思います。"細工された(crafted)" ファイル名の -処理における netrw (と vim 自身) の多くの脆弱性を指摘してくれました。その問題 -に対処するために |shellescape()| 関数と |fnameescape()| 関数が Bram Moolenaar -氏によって書かれ、netrw をそれらを使うように変更されました。ただ一つアドバイス -をするとすれば、ファイル名が vim コマンドのように見えて怪しいと感じたら、それ -を開いてはいけません。 - - *netrw-putty* *netrw-pscp* *netrw-psftp* -プロトコルを扱う外部プログラムは変数を設定することで変更できます (例えば、scp -なら g:netrw_scp_cmd を設定します。初期設定は "scp -q" です)。例えば、PuTTY を -使う場合は次のように設定します: > - - let g:netrw_scp_cmd = '"c:\Program Files\PuTTY\pscp.exe" -q -batch' - let g:netrw_sftp_cmd= '"c:\Program Files\PuTTY\psftp.exe"' -< -putty、pscp、psftp 等に関する説明は |netrw-p8| 参照。 - -Ftp (古いプロトコル) は多くの実装に恵まれました。しかし残念ながら、いまいちな -実装もあります (例えばファイル末尾にノイズが付くなど)。そのような実装を使う場 -合は NetReadFixup() 関数を定義することで、ftp 読み込み後にノイズを除去すること -ができます。いくつかの Unix システム (FreeBSDなど) では "fetch" というユーティ -リティが提供されていて、それはノイズがないので <netrw.vim> で使うには適してい -ます。したがって、もし "fetch" が利用可能 (つまり実行可能) なら、ftp://... の -転送には "fetch" を使うのが望ましいでしょう。 - -rcp、scp、sftp、http ではネットワークファイルを透過的に扱えます。例: -> - vim rcp://[user@]machine/path - vim scp://[user@]machine/path -< -ftp が <.netrc> をサポートしていて、マシン名、ユーザー名、パスワードが設定され -ているなら、ftp でも透過的にファイルを扱えます。ただし、ftpが自動的に <.netrc> -ファイルを使うようになっている必要があります。 -> - vim ftp://[user@]machine[[:#]portnumber]/path -< -Windows には ftp (通常は c:\Windows\System32\ftp.exe) を用意されています。 -Windows の ftp には -s:filename オプションがあって (filename はフルパス指定)、 -そのファイルに書かれたコマンドを ftp 開始時に実行することができます。この機能 -を使って一つのサイトに対してユーザー名とパスワードを指定することができます: > - userid - password -もしも、|g:netrw_ftp_cmd| が -s:[path/]MACHINE を含んでいたら、netrw は -MACHINE を ftp 接続がリクエストされたカレントマシン名に置き換えます。そのた -め、マシンごとに ftp 用のユーザー名とパスワードを分けることができます。例: > - - g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' - vim ftp://myhost.somewhere.net/ -これは次のファイルが使われます > - C:\Users\Myself\myhost.ftp -< -ftp を使うときは userid と password を聞かれることがあります。パスワードの入力 -は無表示で行われます (画面には入力した文字の代わりにアスタリスクが表示され -る)。userid と password は記録され、次に同じマシンにアクセスするときにはプロン -プトは表示されません。 - - *netrw-urls* - +=================================+============================+============+ - | Reading | Writing | Uses | - +=================================+============================+============+ - | DAV: | | | - | dav://host/path | | cadaver | - | :Nread dav://host/path | :Nwrite dav://host/path | cadaver | - +---------------------------------+----------------------------+------------+ - | DAV + SSL: | | | - | davs://host/path | | cadaver | - | :Nread davs://host/path | :Nwrite davs://host/path | cadaver | - +---------------------------------+----------------------------+------------+ - | FETCH: | | | - | fetch://[user@]host/path | | | - | fetch://[user@]host:http/path | Not Available | fetch | - | :Nread fetch://[user@]host/path| | | - +---------------------------------+----------------------------+------------+ - | FILE: | | | - | file:///* | file:///* | | - | file://localhost/* | file://localhost/* | | - +---------------------------------+----------------------------+------------+ - | FTP: (*3) | (*3) | | - | ftp://[user@]host/path | ftp://[user@]host/path | ftp (*2) | - | :Nread ftp://host/path | :Nwrite ftp://host/path | ftp+.netrc | - | :Nread host path | :Nwrite host path | ftp+.netrc | - | :Nread host uid pass path | :Nwrite host uid pass path | ftp | - +---------------------------------+----------------------------+------------+ - | HTTP: wget is executable: (*4) | | | - | http://[user@]host/path | Not Available | wget | - +---------------------------------+----------------------------+------------+ - | HTTP: fetch is executable (*4) | | | - | http://[user@]host/path | Not Available | fetch | - +---------------------------------+----------------------------+------------+ - | RCP: | | | - | rcp://[user@]host/path | rcp://[user@]host/path | rcp | - +---------------------------------+----------------------------+------------+ - | RSYNC: | | | - | rsync://[user@]host/path | rsync://[user@]host/path | rsync | - | :Nread rsync://host/path | :Nwrite rsync://host/path | rsync | - | :Nread rcp://host/path | :Nwrite rcp://host/path | rcp | - +---------------------------------+----------------------------+------------+ - | SCP: | | | - | scp://[user@]host/path | scp://[user@]host/path | scp | - | :Nread scp://host/path | :Nwrite scp://host/path | scp (*1) | - +---------------------------------+----------------------------+------------+ - | SFTP: | | | - | sftp://[user@]host/path | sftp://[user@]host/path | sftp | - | :Nread sftp://host/path | :Nwrite sftp://host/path | sftp (*1) | - +=================================+============================+============+ - - (*1) 絶対パスの指定には scp://machine//path を使う。 - - (*2) <.netrc> がある場合は、使用する ftp クライアントがそれをサポート - していると判断される。ない場合は user-id と password が聞かれる。 - - (*3) ftp では、"machine" は machine#port や machine:port でも可。 - 標準外のポート番号が必要な場合に使う。 - - (*4) http では、wget が利用可能ならそれが使われる。あるいは fetch が利 - 用可能ならそれが使われる。 - -:Nread コマンドと :Nwrite コマンドには複数のファイル名を指定できます。 - - -NETRC *netrw-netrc* - -<.netrc> ファイル (普通はホームディレクトリある) には、ホスト (マシン) と -userid/password を関連付ける設定を書くことができます。 - -<.netrc> ファイルの一般的な書式は次のとおりです。Unix の ftp は通常は <.netrc> -をサポートしています。Windows の ftp は通常は <.netrc> をサポートしてません。 -> - machine {full machine name} login {user-id} password "{password}" - default login {user-id} password "{password}" - -ftp が自動的に <.netrc> ファイルを使うようになっている必要があります。<.netrc> -ファイルが存在する場合は、ftp 転送において user-id と passwordは聞かれません。 - - Note: - このファイルにはパスワードが含まれているので、他の誰もファイルを読めな - いようにしてください。ほとんどのプログラムは他人が読むことができる - .netrc ファイルの使用を拒否します。システム管理者は常にそのファイルを - 読めるということを忘れずに。例えば、Linux/Unix では次のように設定しま - す: chmod 600 .netrc - - -パスワード *netrw-passwd* - -ftp でパスワードが必要なときは Vim の組み込み関数 |inputsecret()| による非表示 -入力が使われます。パスワードを設定した後でそれを変更したい場合は -|netrw-userpass| を参照してください。 - -残念ながら、scp にパスワードを渡す方法はありません。scp を使うときはファイルの -転送の度にパスワードを入力する必要があります。この問題については -|netrw-ssh-hack| が役に立つかもしれません。 - - -============================================================================== -5. netrw の有効化 *netrw-activate* {{{1 - -ネットワークファイル転送は |'nocompatible'| が設定されていればデフォルトで利用 -可能です。netrw のスクリプトファイルはシステムのランタイムディレクトリにありま -す。Vim の起動時には plugin/netrwPlugin.vim だけが読み込まれます。メインスクリ -プトの autoload/netrw.vim は、実際に netrw が使用されたときに読み込まれます。 -次の (最低限の) 設定を <.vimrc> ファイルに書いておくことをお勧めします: > - - set nocp - if version >= 600 - filetype plugin indent on - endif -< - -============================================================================== -6. 透過的なリモートファイル編集 *netrw-transparent* {{{1 - -ネットワークファイルの転送は、ファイルを読み書きするときに |:autocmd| の -|BufReadCmd|、|BufWriteCmd|、|SourceCmd| イベントによって透過的に処理されま -す。それによって、ローカルファイルと同じくらい簡単にネットワークファイルを読み -込み、書き込み、スクリプト実行することができます。 > - - vim ftp://[user@]machine/path - ... - :wq - -netrw のようなプラグインの使用方法は |netrw-activate| を参照してください。 - - -============================================================================== -7. Ex コマンド *netrw-ex* {{{1 - -一般的な読み込み/書き込みコマンドがサポートされています。それ以外のコマンドも -いくつかあります。|netrw-transparent| で説明したように、通常はこれらのコマンド -を使う必要はありません。次のように使ってください (|netrw-urls|参照): > - :e url - :r url - :w url -以下の説明では、{netfile} はリモートファイルの url を示します。 - - *:Nwrite* *:Nw* -:[range]Nw[rite] - 指定した範囲の行を b:netrw_lastfile が示すファイルに保存する。 - (関連: |netrw-nwrite|) - -:[range]Nw[rite] {netfile} [{netfile}]... - 指定した範囲の行を {netfile} に保存する。 - - *:Nread* *:Nr* -:Nr[ead] b:netrw_lastfile が示すファイルをカレントバッファに読み込む。 - (関連: |netrw-nread|) - -:Nr[ead] {netfile} {netfile}... - {netfile} を現在行の下に読み込む。 - - *:Nsource* *:Ns* -:Ns[ource] {netfile} - {netfile} をスクリプトとして実行する。 - リモートの .vimrc を使って vim を起動するには、次のようにしま - す (実際にはすべて一行です) (tnx to Antoine Mechelynck) > - vim -u NORC -N - --cmd "runtime plugin/netrwPlugin.vim" - --cmd "source scp://HOSTNAME/.vimrc" -< (関連: |netrw-source|) - -:call NetUserPass() *NetUserPass()* - g:netrw_uid と s:netrw_passwd が存在しない場合は、入力プロンプ - トが表示されます。 - (関連: |netrw-userpass|) - -:call NetUserPass("userid") - g:netrw_uid を設定します。password がない場合は、入力プロンプ - トが表示されます。 - (関連: |netrw-userpass|) - -:call NetUserPass("userid","passwd") - g:netrw_uid と s:netrw_passwd を設定します。user-idとpassword - は ftp 転送で使われます。user-id と password に空文字列 ("") - を指定すると、値を削除できます。 - (関連: |netrw-userpass|) - -:NetrwSettings - このコマンドは |netrw-settings| で説明します。netrw の設定を表 - 示し、netrw の動作を変更するために使用されます。 - - -============================================================================== -8. 変数とオプション *netrw-options* *netrw-var* {{{1 - -(netrw ブラウザの設定に関しては |netrw-browser-var| を見てください) - -<netrw.vim> スクリプトでは、ファイル転送の動作を変更するためのオプションとし -て、いくつかの変数が定義されています。通常、それらの変数を <.vimrc> ファイルの -中で設定して使います。(|netrw-settings| |netrw-protocol| も参照) -> - ---------------- - Netrw オプション - ---------------- - オプション 説明 - -------------- ----------------------------------------------- -< - b:netrw_col カーソル位置を保持する (NetWrite使用時) - g:netrw_cygwin =1 windows の scp が cygwin のものと想定する - (windowsの初期設定) - =0 windows の scp が windows スタイルのパスを - 扱えると想定する (その他の初期設定) - g:netrw_ftp =0 デフォルト ftp を使う (uid password) - =1 ftp の別方式を使う (user uid password) - g:netrw_ftpmode ="binary" (初期設定) - ="ascii" - g:netrw_ignorenetrc =1 (初期設定) - <.netrc> を持っていて、しかしそれを使いたく - ない場合にこの変数を設定する。この変数は値 - に関係なく存在するだけで作用する。 - b:netrw_lastfile 最近使用された method/machine/path を保持する - b:netrw_line 現在の行番号を保持する (NetWrite使用時) - g:netrw_silent =0 普通にファイル転送する - =1 静か (silent) にファイル転送する - g:netrw_uid ftp の現在の user-id を保持する - g:netrw_use_nt_rcp =0 WinNT/2K/XP の rcp を使わない (初期設定) - =1 WinNT/2K/XP の rcp を binary mode で使う - g:netrw_win95ftp =0 win95/98/ME/etc で unix-style ftp を使う - =1 標準の ftp を使う > - ----------------------------------------------------------------------- -< -netrw は次の変数を一時的に使用します。 -> - -------- - 一時変数 - -------- - 変数 説明 - -------- ------------------------------------ -< - b:netrw_method rcp/ftp+.netrc/ftp を示すインデックス - w:netrw_method (b:netrw_method と同じ) - g:netrw_machine 入力から得られたマシン名を保持 - b:netrw_fname アクセスするファイル名を保持 > - ------------------------------------------------------------ -< - *netrw-protocol* - -netrw は複数のプロトコルをサポートしています。それぞれのプロトコルは以下の変数 -を使って呼び出されます。変数はユーザーが変更することができます。 -> - ------------------------ - プロトコル制御オプション - ------------------------ - オプション タイプ 設定 説明 - ---------- -------- -------------- --------------------------- -< - netrw_ftp 変数 =変数なし useridを"user userid"で設定 - =0 useridを"user userid"で設定 - =1 useridを"userid"で設定 - NetReadFixup 関数 =変数なし 変更しない - =変数あり ftp で取得したファイルを - NetReadFixup() で自動的に - フィルタする。 - g:netrw_dav_cmd 変数 ="cadaver" if cadaver があるなら - g:netrw_dav_cmd 変数 ="curl -o" elseif curl があるなら - g:netrw_fetch_cmd 変数 ="fetch -o" if fetch があるなら - g:netrw_ftp_cmd 変数 ="ftp" - g:netrw_http_cmd 変数 ="fetch -o" if fetch があるなら - g:netrw_http_cmd 変数 ="wget -O" else if wget があるなら - g:netrw_list_cmd 変数 ="ssh USEPORT HOSTNAME ls -Fa" - g:netrw_rcp_cmd 変数 ="rcp" - g:netrw_rsync_cmd 変数 ="rsync -a" - g:netrw_scp_cmd 変数 ="scp -q" - g:netrw_sftp_cmd 変数 ="sftp" > - ------------------------------------------------------------------------- -< - *netrw-ftp* - -|g:netrw_ftp_cmd| と |g:netrw_sftp_cmd| は ftp プロトコルを処理するための外部 -プログラムを指定するオプションです。コマンドラインオプションを含めることもでき -ます (passive mode の -p など)。例: > - - let g:netrw_ftp_cmd= "ftp -p" -< -ブラウジングは |g:netrw_list_cmd| を使ってサポートされます。"HOSTNAME" と書か -れた部分は実際のホスト名に置換されます。 - -|g:netrw_ftp| と |netrw-fixup| の二つのオプションは、問題のある ftp クライアン -トを補助します。これらのオプションの使用方法を理解してもらうため、netrw が ftp -からファイルを読み込むときの仕組みを少し解説します。 - -ftp を使うとき、netrw は次のどちらかのテキストを生成して一時ファイルに書き込み -ます。 -> - g:netrw_ftpが未定義、または1以外 g:netrw_ftpに1が設定されている - -------------------------------- ------------------------------ -< - open machine [port] open machine [port] - user userid password userid password - [g:netrw_ftpmode] password - [g:netrw_ftpextracmd] [g:netrw_ftpmode] - get filename tempfile [g:netrw_extracmd] - get filename tempfile > - --------------------------------------------------------------------- -< -|g:netrw_ftpmode| と |g:netrw_ftpextracmd| は任意です。 - -netrw は生成したテキストを次のようなコマンドでフィルタします: > -> - :%! {g:netrw_ftp_cmd} -i [-n] -< - g:netrw_ftp_cmd は通常は "ftp" です - -i ftp を対話的に使わない - -n netrc を使わない。Method #3 を使う (<.netrc>無しでftp使用) -訳注: Method #3 は |netrw-fixup| の a:method == 3 - -<.netrc> が存在するとき、userid と password の入力を省略するためにそれが使われ -ます。転送されたファイルは一時ファイルに保存されます。一時ファイルはメインの -ウィンドウに読み込まれ、そして削除されます。 - -使用する ftp が "user" コマンドを受け付けず、直接に userid を入力する必要があ -る場合は、"let netrw_ftp=1" という設定を <.vimrc> に書いてください。 - - *netrw-cadaver* -未承認サーバーのための SSL 証明書ダイアログを何とかするには、その証明書を取っ -てきて /usr/ssl/cert.pem に置いてください。この操作によってサーバーが信用済み -扱いになります。 - - *netrw-fixup* *netreadfixup* -使用している ftp が何らかの理由で余計な出力を出す場合 (例えば認証メッセージな -ど)、NetReadFixup() 関数を書いてください: -> - function! NetReadFixup(method,line1,line2) - " a:line1: first new line in current file - " a:line2: last new line in current file - if a:method == 1 "rcp - elseif a:method == 2 "ftp + <.netrc> - elseif a:method == 3 "ftp + machine,uid,password,filename - elseif a:method == 4 "scp - elseif a:method == 5 "http/wget - elseif a:method == 6 "dav/cadaver - elseif a:method == 7 "rsync - elseif a:method == 8 "fetch - elseif a:method == 9 "sftp - else " complain - endif - endfunction -> -NetReadFixup() 関数は定義するだけで呼び出されるようになります。これにより読み -込みの処理をカスタマイズできます。例えば、<netrw.vim> の中では Windows 95 ftp -の問題を回避するために、この関数が定義されています。なぜか Windows 95 の ftp -は転送ファイルの末尾に 4 行の空行を出力するので、それを取り除いています。 -<netrw.vim> のコードは次のようなものです: -> - if has("win95") && g:netrw_win95ftp - fun! NetReadFixup(method, line1, line2) - if method == 3 " ftp (no <.netrc>) - let fourblanklines= line2 - 3 - silent fourblanklines.",".line2."g/^\s*/d" - endif - endfunction - endif -> - -============================================================================== -9. ブラウジング *netrw-browsing* *netrw-browse* *netrw-help* {{{1 - *netrw-browser* *netrw-dir* *netrw-list* - -ブラウジングの紹介 *netrw-intro-browse* {{{2 - (クイックリファレンス: |netrw-quickmaps| |netrw-quickcoms|) - -Netrw はローカルシステムとリモートホストのディレクトリのブラウジングをサポート -しています。ブラウジングの機能は、ファイルとディレクトリの一覧表示、ディレクト -リへの移動、ファイルを開く、ファイルとディレクトリの削除、ディレクトリの作成、 -ファイルとディレクトリの移動 (名前の変更)、ファイルとディレクトリのコピー、な -どです。ファイルを選択し、任意のシステムコマンドを実行できます。Netrw ブラウザ -には以前のエクスプローラプラグインのマップとコマンドが実装されていて、それはリ -モートディレクトリに対しても実行できます。ただし、細かい違いはあります (グロー -バル変数の名前など)。ディレクトリをブラウズするには単にそれを開きます。 > - - vim /your/directory/ - vim . - vim c:\your\directory\ -< -(関連情報: |netrw-cr| |netrw-o| |netrw-p| |netrw-P| |netrw-t| - |netrw-mf| |netrw-mx| |netrw-D| |netrw-R| |netrw-v| ) - -Netrw リモートファイル/ディレクトリブラウザは ssh と ftp の二つのプロトコルを -サポートしています。例えば url のプロトコルが ftp なら、netrw は ftp を使って -リモートブラウジングを実行します。ftp と ssh 以外のプロトコルを指定した場合 -は、それはファイル転送になります。 - -Netrw リモートディレクトリブラウザを使うには、ファイルを開くときに名前の末尾に -スラッシュを付けます。ディレクトリの表示要求として解釈されます: > - - vim [protocol]://[user@]hostname/path/ -< - [protocol] は scp か ftp です。例: > - - vim ftp://ftp.home.vim.org/pub/vim/ -< -ローカルディレクトリの場合は末尾のスラッシュは必要ではありません。付け忘れがよ -くあるのでもう一度言いますが、リモートディレクトリをブラウズするときは url の -末尾にスラッシュを付ける必要があります。 - -ssh か scp でリモートディレクトリを表示するたびにパスワードを入力したくない場 -合は |netrw-ssh-hack| を参照してください。ftp でパスワードの入力を省略したい場 -合は |netrw-netrc| を参照してください (ftp がそれをサポートしているなら)。 - -次の操作でファイル一覧の表示方法を変更できます: - - * "i" キーで表示スタイルを変更できます (|netrw-i|)。 - 四つのスタイルがあります: thin、long、wide、tree。 - この変更を常に設定したい場合は |g:netrw_liststyle| を参照。 - - * ファイルを隠す (xyz~ みたいなファイルを表示したくないですよね?) に - は |netrw-ctrl-h| を参照してください。 - - * s を押すと name、time、size の順で並べ替えできます。 - -netrw で実行できる操作の一覧は |netrw-browse-cmds| を参照してください。 - - *netrw-getftype* *netrw-filigree* *netrw-ftype* -ローカルファイルを一覧表示するときは、|getftype()| 関数を使って、ファイルタイ -プを示す装飾文字が付加されます: - - ディレクトリ : / - 実行ファイル : * - fifo : | - リンク : @ - ソケット : = - -装飾文字は |g:netrw_sort_sequence| にも影響します。 - - -QUICK HELP *netrw-quickhelp* {{{2 - (ctrl-] を押すと項目を選択できます) ~ - ブラウジングの紹介..............................|netrw-intro-browse| - クイックリファレンス: マップ..................|netrw-quickmap| - クイックリファレンス: コマンド................|netrw-browse-cmds| - ファイルを隠す - 隠すファイルを設定する........................|netrw-ctrl-h| - ファイル/ディレクトリを隠す...................|netrw-a| - 拡張子で表示/非表示...........................|netrw-mh| - ドットファイルを隠す..........................|netrw-gh| - 表示スタイル - 表示スタイルの選択 (thin/long/wide/tree)......|netrw-i| - スタイル設定変数..............................|g:netrw_liststyle| - ファイル一覧取得に使われるシェルコマンド......|g:netrw_list_cmd| - ファイル情報表示..............................|netrw-qf| - ソート方法 - ソートスタイルの選択 (name/time/size).........|netrw-s| - ソートの優先順位を設定........................|netrw-S| - ソートオプション..............................|g:netrw_sort_options| - ソート優先順位設定変数........................|g:netrw_sort_sequence| - 逆順ソート....................................|netrw-r| - - - *netrw-quickmap* *netrw-quickmaps* -クイックリファレンス: マップ *netrw-browse-maps* {{{2 -> - ------ ---------- ------ - マップ 簡単な説明 リンク - ------ ---------- ------ -< <F1> Netrw のヘルプを開く - <cr> ディレクトリに移動、またはファイルを開く |netrw-cr| - <del> ファイル/ディレクトリを削除する |netrw-del| - - 一つ上のディレクトリに移動する |netrw--| - a 隠しファイルの表示を切り替える |netrw-a| - normal (通常表示) - hiding (g:netrw_list_hide にマッチしたファイルを表示しない) - showing (g:netrw_list_hide にマッチしたファイルのみ表示する) - c 表示中のディレクトリをカレントディレクトリにする |netrw-c| - C ファイルを開くウィンドウを指定する |netrw-C| - d ディレクトリを作成する |netrw-d| - D ファイル/ディレクトリ(複数可)を削除する |netrw-D| - gb 前のブックマークされたディレクトリに移動 |netrw-gb| - gh ドットファイルの表示/非表示を切り替える |netrw-gh| - <c-h> 隠しファイルのパターンを編集する |netrw-ctrl-h| - i 表示方法を切り替える (thin, long, wide, tree) |netrw-i| - <c-l> 最新の情報に更新する |netrw-ctrl-l| - mb カレントディレクトリをブックマークする |netrw-mb| - mc マークしたファイルをターゲットディレクトリにコピー |netrw-mc| - md マークしたファイルの差分を表示する (3ファイルまで) |netrw-md| - me マークしたファイルを引数リストに入れ編集する |netrw-me| - mf ファイルをマークする |netrw-mf| - mh マークしたファイルの拡張子を隠しリストに登録/解除 |netrw-mh| - mm マークしたファイルをターゲットディレクトリに移動 |netrw-mm| - mp マークしたファイルを印刷する |netrw-mp| - mr シェル形式正規表現 (|regexp|) でファイルをマークする |netrw-mr| - mt 表示中のディレクトリをターゲットディレクトリにする |netrw-mt| - mT マークしたファイルに対して ctags を実行 |netrw-mT| - mu すべてのマークを解除する |netrw-mu| - mx マークしたファイルに対して任意のシェルコマンドを実行 |netrw-mx| - mz マークしたファイルを圧縮/伸長する |netrw-mz| - o カーソル位置のファイル/ディレクトリを |netrw-o| - 新しいウィンドウで開く。水平分割。 - O カーソル位置のファイルを取得する |netrw-O| - p ファイルをプレビューする |netrw-p| - P 直前に使用していたウィンドウで開く |netrw-P| - qb ブックマークと履歴の一覧を表示する |netrw-qb| - qf ファイル情報を表示する |netrw-qf| - r ソート順を逆にする |netrw-r| - R ファイル/ディレクトリ(複数可)の名前を変える |netrw-R| - s ソート方法を変える: name, time, file size |netrw-s| - S 名前ソート時の拡張子の優先順位を設定する |netrw-S| - t カーソル位置のファイル/ディレクトリを新しいタブで開く|netrw-t| - u 最近訪れたディレクトリに移動する |netrw-u| - U 次に訪れたディレクトリに移動する |netrw-U| - v カーソル位置のファイル/ディレクトリを |netrw-v| - 新しいウィンドウで開く。垂直分割。 - x 関連付けられたプログラムでファイルを表示する |netrw-x| - - % 表示しているディレクトリで新しいファイルを開く |netrw-%| - - *netrw-mouse* *netrw-leftmouse* *netrw-middlemouse* *netrw-rightmouse* - <leftmouse> (gvim only) ファイルを選択して <cr> を押したのと同じ。 - (ファイルを開く、ディレクトリに移動) - <middlemouse> (gvim only) ファイルを選択して P を押したのと同じ。 - |netrw-P| 参照 - <rightmouse> (gvim only) 選択したファイル/ディレクトリを削除する。 - <2-leftmouse> (gvim only) 使用できる条件: - * netrw からファイルを開いたとき - * |g:netrw_retmap| == 1 - * netrw がロードされた時点で <2-leftmouse> に対する - マップが定義されていない - netrw ブラウザウィンドウに戻る。|g:netrw_retmap|参照。 - <s-leftmouse> (gvim only) mf と同じ。ファイルをマークする。 - - (ブラウジング中にマウスボタンを無効化するには: |g:netrw_mousemaps|) - - *netrw-quickcom* *netrw-quickcoms* -クイックリファレンス: コマンド *netrw-explore-cmds* *netrw-browse-cmds* {{{2 - :NetrwClean[!] ...........................................|netrw-clean| - :NetrwSettings ...........................................|netrw-settings| - :Explore[!] [dir] カレントファイルのディレクトリを開く...|netrw-explore| - :Hexplore[!] [dir] 水平分割 & Explore.....................|netrw-explore| - :Nexplore[!] [dir] 垂直分割 & Explore.....................|netrw-explore| - :Pexplore[!] [dir] 垂直分割 & Explore.....................|netrw-explore| - :Rexplore Explorer に戻る........................|netrw-explore| - :Sexplore[!] [dir] ウィンドウ分割 & Explore...............|netrw-explore| - :Texplore[!] [dir] タブ & Explore.........................|netrw-explore| - :Vexplore[!] [dir] 垂直分割 & Explore.....................|netrw-explore| - -ディレクトリをブックマークする {{{2 - *netrw-mb* *netrw-bookmark* *netrw-bookmarks* -次のコマンドでディレクトリをブックマークできます > - - mb -< -ブックマークは $HOME/.netrwbook に保存されます。ブックマークは常にソートされま -す。 - -関連項目: - |netrw-gb| ブックマークに戻る (移動する) - |netrw-mB| ブックマークを削除する - |netrw-qb| ブックマークを一覧表示する - - -ブラウジング *netrw-cr* {{{2 - -ブラウジングは簡単です。ファイルまたはディレクトリの上にカーソルを移動して、 -<cr> (リターンキー) を押すとファイルが開きます。ディレクトリを開くとそのファイ -ル一覧が表示されます。ファイルを開くときには一覧表示で使われたプロトコルが使用 -されます。 - - 警告: 一覧表示には四つの方法があります (|netrw-i|参照)。long/wide 表示では二 - つ以上のスペースでファイル名/ディレクトリ名を区切るので、ファイル名に二つ以 - 上のスペースが含まれている場合、あるいは名前の末尾にスペースが付いている場合 - は、表示方法を "thin" にしてからファイルを選択してください。 - -|g:netrw_browse_split| オプション (初期設定は0) を設定すると、ファイルを開くと -きの動作を、新しいウィンドウやタブを開くように変更できます。設定が 1 か 2 な -ら、ウィンドウはそれぞれ水平分割、垂直分割されます。設定が 3 なら、新しいタブ -でファイルが開きます。 - - -gui (gvim) では <leftmouse> (左クリック) でファイルを選択できます。また、 - - *|g:netrw_retmap| == 1 (初期設定は0) - * netrw からファイルを開いたとき - * netrw がロードされた時点で <2-leftmouse> に対するマップが定義されていない - -以上の条件を満たすとき、左ダブリクリックで元の netrw ブラウザウィンドウに戻る -ことができます。 - -ブラウジング、特にリモートブラウジングを効率よくするため、ディレクトリのファイ -ル一覧バッファは再利用されます。この動作は |g:netrw_fastbrowse| 変数で制御でき -ます。低速ブラウジング (バッファ再利用なし)、中速ブラウジング (リモートディレ -クトリのみバッファ再利用)、高速ブラウジング (可能な限りバッファを再利用)、から -選択できます。バッファ再利用の代償として、何か変更があった (例えば新しいファイ -ルが作成された) 場合でも、表示されるファイル一覧は古いままです。最新の情報に更 -新するには ctrl-L (|netrw-ctrl-l|参照) を押してください。 - - -関連トピック: |netrw-o| |netrw-p| |netrw-P| |netrw-t| |netrw-v| -関連設定: |g:netrw_browse_split| |g:netrw_fastbrowse| - |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| - |g:netrw_ftp_timelist_cmd| |g:netrw_ssh_cmd| - |g:netrw_ssh_browse_reject| |g:netrw_use_noswf| - - -水平分割ウィンドウを使ったブラウジング *netrw-o* *netrw-horiz* {{{2 - -<cr> でファイル/ディレクトリを開くことができますが、代わりに "o" マップを使え -ばウィンドウを分割して開くことができます。ウィンドウは水平分割されます。(垂直 -分割は |netrw-v|) - -通常、o キーを押すと新しいウィンドウが上に分割されます。下に分割したい場合は -<.vimrc> の中で次のように設定してください: - - let g:netrw_alto = 1 - -(|netrw-t| と |netrw-T| と|netrw-v| も参照) - -関連設定: |g:netrw_alto| |g:netrw_winsize| - - -タブを使ったブラウジング *netrw-t* *netrw-T* {{{2 - -<cr> でファイル/ディレクトリを開くことができますが、代わりに "t" マップを使え -ばそれを新しいタブで開くことができます。"T" を使うと、ファイル/ディレクトリを -バックグラウンドタブで開くことができます (|gT| 参照)。 - -関連項目: |netrw-o| |netrw-v| - - -垂直分割ウィンドウを使ったブラウジング *netrw-v* {{{2 - -<cr> でファイル/ディレクトリを開くことができますが、代わりに "v" マップを使え -ばウィンドウを分割して開くことができます。ウィンドウは垂直分割されます。(水平 -分割は |netrw-o|) - -通常、v キーを押すと新しいウィンドウが左に分割されます。右に分割したい場合は -<.vimrc> の中で次のように設定してください: - - let g:netrw_altv = 1 - -(|netrw-o| と|netrw-t| |netrw-T| も参照) - -一つのディレクトリには一つのバッファが使われます。"v" で表示済みのサブディレク -トリを開くとウィンドウは分割されますが、同じバッファが再び表示されます。 - -関連設定: |g:netrw_altv| |g:netrw_winsize| - -一覧表示スタイル変更 (THIN LONG WIDE TREE) *netrw-i* {{{2 - (細 長 広 ツリー) - -"i" マップを使うと表示方法が thin, long, wide, tree と、順番に切り替わります。 - -thin 形式ではファイル/ディレクトリの名前だけが表示されます。 - -long 形式は、リモートディレクトリの場合は ssh 経由で "ls" コマンドを実行した結 -果に基づいて表示され、ローカルディレクトリの場合はファイル名、ファイルサイズ -(バイト単位)、最終変更日時が表示されます。long 形式では末尾にスペースが付いた -ファイル名を扱うことができません。そのようなファイルがあるときは thin 形式を -使ってください。 - -wide 形式では二つ以上のスペースを使ってファイル名を区切って表示します。この表 -示形式では、二つ以上の連続したスペースが含まれているファイル名、または末尾にス -ペースが付いているファイル名を扱うことができません。そのような場合は thin 形式 -を使ってください。wide 形式は最もコンパクトな表示形式です。 - -tree 形式ではトップディレクトリに続いてファイル/ディレクトリが名前の前に "|" -を付けて表示されます。ディレクトリの名前の所で <cr> キーを押すと、そのディレク -トリを開いたり閉じたりできます。 - -デフォルトの表示スタイルを変更できます。(|g:netrw_liststyle|) 参照。 -例えば、次の行を .vimrc に書くと: > - let g:netrw_liststyle= 4 -ツリー形式の表示スタイルがデフォルトで使用されます。 - -関連設定: |g:netrw_liststyle| |g:netrw_maxfilenamelen| - |g:netrw_timefmt| |g:netrw_list_cmd| - -パーミッションの変更 *netrw-gp* {{{2 - -"gp" を使うと新しいパーミッションを入力するプロンプトが表示されます。カーソル -位置のファイルのパーミッションを変更できます。 -現在、これはローカルファイルに対してのみ機能します。 - -関連設定: |g:netrw_chgperm| - - -ブックマークしたディレクトリに移動 *netrw-gb* {{{2 - -ブックマークしたディレクトリに移動するには、次のコマンドを使います。 - - {cnt}gb - -カウントを付けてブックマークを指定することができます。 - -関連項目: - |netrw-mB| ブックマークを削除する - |netrw-mb| ブックマークを設定する - |netrw-qb| ブックマークを一覧表示する - - -前のディレクトリに戻る *netrw-u* *netrw-updir* {{{2 - -ディレクトリを移動するとき (カレントセッションで新規の場合)、そのディレクトリ -は、最近表示したディレクトリの履歴リストに保存されます (|g:netrw_dirhistmax| -が 0 でない場合に限る。初期設定は 10)。"u" マップを使用すると、前のディレクト -リに移動できます。反対に移動したい場合は |netrw-U| を参照。 - - -次のディレクトリに進む *netrw-U* *netrw-downdir* {{{2 - -"U" マップを使用すると、次のディレクトリに移動できます。このマップは "u" マッ -プの反対です (|netrw-u|参照)。q マップを使用するとブックマークと履歴の一覧を表 -示できます (|netrw-qb|参照)。 - - -NETRW CLEAN *netrw-clean* *:NetrwClean* - -:NetrwClean を使うと、ホームディレクトリから netrw を削除できます。正確には、 -|'runtimepath'| の最初のディレクトリから削除します。 - -:NetrwClean! を使うと、|'runtimepath'| のすべてのディレクトリから netrw を削除 -できます。 - -どちらのコマンドも、本当に削除していいかどうかを確認するダイアログが最初に表示 -されます。ファイルを削除する権限がない場合はエラーメッセージが表示されます。 - - *netrw-gx* -ユーザー定義関数でブラウジングをカスタマイズ *netrw-x* *netrw-handler* {{{2 - (|netrw_filehandler|も参照) - -html, gif, jpeg, (word/office) doc などのファイルは専用ハンドラ (コンピュータ -にあらかじめ備わっているようなツール) で処理するのが一番です。 -Netrw ではそのような専用ハンドラの呼び出しをサポートしています: > - - * ファイル一覧表示中に "x" キーを押す - * ファイルを開いているときに、ファイル名の上で gx を押す -< (|g:netrw_nogx| が設定されている場合は使えません) - -Netrw は次の方法で専用ハンドラを決定します: - - * |g:netrw_browsex_viewer| が設定されているときは、それを使ってファイルを開 - きます。例えば次のような設定が便利です (<.vimrc>で設定する): > - - :let g:netrw_browsex_viewer= "kfmclient exec" -< or > - :let g:netrw_browsex_viewer= "gnome-open" -< - g:netrw_browsex_viewer が '-' のときは netrwFileHandler() が最初に呼ばれま - す (|netrw_filehandler|参照)。 - - * Windows 32 or 64 では、url と FileProtocolHandler dll が使われます。 - * Gnome (with gnome-open): gnome-open が使われます。 - * KDE (with kfmclient) : kfmclient が使われます。 - * Mac OS X : open が使われます。 - * その他では netrwFileHandler プラグインが使われます。 - -これらの方法ではファイルを処理するためのアプリケーションは拡張子によって決めら -れます。例えば OpenOffice (*.sfx)、画像表示 (*.jpg, *.gif, etc)、PostScript -(*.ps, *.eps) などに対応可能です。 - - *netrw_filehandler* - -"x" マップはファイルの拡張子に応じて関数を呼び出します。ただし、あらかじめハン -ドラ関数を定義しておく必要があります。 -> - 例: mypgm.html x -> - NFH_html("scp://user@host/some/path/mypgm.html") -< -拡張子ごとのハンドラ関数を自分で定義できます。関数のサンプルは -<autoload/netrwFileHandlers.vim> を参照してください。例: > - - " NFH_suffix(filename) - " NFH_拡張子(ファイル名) - fun! NFH_suffix(filename) - ..ファイル名に応じた処理... - endfun -< -このような関数は .vim/plugin (vimfiles\plugin) ディレクトリ内のファイルで定義 -します。Vim では関数名に記号を含めることができません (アンダースコアは可)。記 -号を含む拡張子をサポートするため、拡張子は次のルールで変換されます: > - - @ -> AT ! -> EXCLAMATION % -> PERCENT - : -> COLON = -> EQUAL ? -> QUESTION - , -> COMMA - -> MINUS ; -> SEMICOLON - $ -> DOLLAR + -> PLUS ~ -> TILDE -< -例: > - - file.rcs,v -> NFH_rcsCOMMAv() -< -他にも変換が必要な文字があるようなら、メールでお知らせください: > - NdrOchip at ScampbellPfamily.AbizM - NOSPAM - -関連設定: |g:netrw_browsex_viewer| - - *netrw-curdir* -ブックマークを削除する *netrw-mB* {{{2 - -ブックマークを削除するには、次のコマンドを使います > - - {cnt}mB -< -関連項目: - |netrw-gb| ブックマークに戻る (移動する) - |netrw-mb| ブックマークを設定する - |netrw-qb| ブックマークを一覧表示する - - -ファイル/ディレクトリの削除 *netrw-delete* *netrw-D* *netrw-del* {{{2 - -ファイルが |netrw-mf| でマークされていない場合: (local marked file list) - - ファイル/ディレクトリを削除するにはファイル名の上にカーソルを移動して "D" - を押します。ディレクトリを削除する場合は中身が空でなければなりません。ディ - レクトリがディレクトリへのソフトリンクだった場合は、ディレクトリを削除する - ために二つのリクエストが実行されます。netrw はファイルを削除する前に確認ダ - イアログを表示します。"V" コマンド (ビジュアルセレクト) で範囲を選択して - "D" を使うこともできます。 -訳注: > 二つのリクエスト -訳注: rmdir <file> || rm <file> 的な処理 - -ファイルが |netrw-mf| でマークされている場合: (local marked file list) - - マークされたファイル (と空ディレクトリ) が削除されます。netrw はファイルを - 削除する前に確認ダイアログを表示します。 - -ファイルとディレクトリの削除には、|g:netrw_rm_cmd|、|g:netrw_rmf_cmd|、 -|g:netrw_rmdir_cmd| 変数が使われます。|g:netrw_rm_cmd| はファイルの削除に使わ -れます。初期設定は次のとおり: - - g:netrw_rm_cmd: ssh HOSTNAME rm - -g:netrw_rmdir_cmd 変数はディレクトリの削除に使われます。初期設定は次のとおり: - - g:netrw_rmdir_cmd: ssh HOSTNAME rmdir - -g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は、g:netrw_rmf_cmd を -使用した削除が試されます。初期設定は次のとおり: - - g:netrw_rmf_cmd: ssh HOSTNAME rm -f - -関連設定: |g:netrw_local_rmdir| |g:netrw_rm_cmd| - |g:netrw_rmdir_cmd| |g:netrw_ssh_cmd| - - -*netrw-explore* *netrw-hexplore* *netrw-nexplore* *netrw-pexplore* -*netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore* -ディレクトリ探査コマンド {{{2 - - :[N]Explore[!] [dir]... カレントファイルのディレクトリを開く *:Explore* - :[N]Hexplore[!] [dir]... 水平分割で開く *:Hexplore* - :Rexplore ... エクスプローラに戻る *:Rexplore* - :[N]Sexplore[!] [dir]... カレントファイルのディレクトリを分割 *:Sexplore* - して開く - :Texplore [dir]... タブで開く *:Texplore* - :[N]Vexplore[!] [dir]... 垂直分割で開く *:Vexplore* - - :Explore **/pattern で開いたときに使うコマンド : (|netrw-starstar|参照) - :Nexplore............. 次のファイルに移動 *:Nexplore* - :Pexplore............. 前のファイルに移動 *:Pexplore* - -:Explore は、ローカルディレクトリブラウザを開始してカレントファイルのディレク - トリ (または [dir] で指定されたディレクトリ) を開きます。編集中の - ファイルに未保存の変更がある場合は新しいウィンドウを作成します。そう - でない場合は同じウィンドウを使用します。通常、ウィンドウの分割は水平 - 分割です。 -:Explore! は、:Explore と同じですが、ウィンドウを垂直分割します。 -:Sexplore は、常に新しいウィンドウを作成してローカルディレクトリブラウザを開始 - します。Explore と同様、通常はウィンドウは水平分割されます。 -:Sexplore! [dir] は、:Sexplore と同じですが、ウィンドウを垂直分割します。 -:Hexplore [dir] は、|:belowright| 水平分割を使って :Explore を実行します。 -:Hexplore! [dir] は、|:aboveleft| 水平分割を使って :Explore を実行します。 -:Vexplore [dir] は、|:leftabove| 垂直分割を使って :Explore を実行します。 -:Vexplore! [dir] は、|:rightbelow| 垂直分割を使って :Explore を実行します。 -:Texplore [dir] は、ブラウザウィンドウを作成する前に tabnew を実行します。 - -引数を指定しなかった場合、これらのコマンドはカレントファイルのディレクトリを開 -きます。明示的にディレクトリ (path) を指定することもできます。 - -[N] は新しいエクスプローラウィンドウの幅/高さを指定します。これは -|g:netrw_winsize| よりも優先されます。 - -幅指定がない場合は、|g:netrw_winsize| 変数が (設定されているなら)、新しいエク -スプローラウィンドウの幅/高さとして使用されます。 - -:Rexplore このコマンドは他のコマンドとは少し違います。例えば、netrw ブラウザ - ウィンドウで <cr> を押してファイルを開いたとき、:Rexplore を実行す - ると、最後に表示していたブラウザ画面に戻ることができます。これは - <2-leftmouse> のコマンド版です (<2-leftmouse> はマウス対応端末か - gvim でしか使えません)。 - - -*netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* -スターとパターンを使った探索 - -Explore, Sexplore, Hexplore, Vexplore それぞれのコマンドで、次のようなパターン -が使われた場合、Explore はそれにマッチするようなファイルのリストを生成します。 -> - */filepat カレントディレクトリの、filepat にマッチするファイル - **/filepat カレントディレクトリとそれ以下のディレクトリの、filepat にマッ - チするファイル - *//pattern カレントディレクトリの、pattern を含んでいるファイル (vimgrep - が使用されます) - **//pattern カレントディレクトリとそれ以下のディレクトリの、pattern を含ん - でいるファイル (vimgrep が使用されます) -< -カーソルはリストの最初のファイルの上に置かれます。|:Nexplore| でファイルリスト -の次のファイルへ、|:Pexplore| で前のファイルへ移動できます。netrw はディレクト -リやカーソル位置を適切に更新します。 - -引数を付けずに > - :Explore -と実行すると、ファイルリストがクリアされます。 - -あなたのコンソールまたは gui が shift-up と shift-down を解釈できるなら、 -shift-downarrow と shift-uparrow を使うと便利でしょう。 -次のマップが netrw によって定義されます: - - <s-down> == Nexplore - <s-up> == Pexplore - -例 -> - :Explore */*.c - :Nexplore - :Nexplore - :Pexplore -< -ステータスラインの右の方に "Match 3 of 20" のようなメッセージが表示されます。 - -関連設定: |g:netrw_keepdir| |g:netrw_browse_split| - |g:netrw_fastbrowse| |g:netrw_ftp_browse_reject| - |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| - |g:netrw_ftp_timelist_cmd| |g:netrw_list_cmd| - |g:netrw_liststyle| - - -ファイルの情報を表示する *netrw-qf* {{{2 - -ファイル名の上にカーソルを移動して "qf" を押すと、ファイルのサイズと最終更新日 -時が表示されます。現在、この機能はローカルファイルのみ対応しています。 - - -隠しリストを編集する *netrw-ctrl-h* *netrw-edithide* {{{2 - -"<ctrl-h>" マップを使うと、|g:netrw_list_hide| に設定されたファイル/ディレクト -リの隠しリストを変更できます。隠しリストはパターンをカンマで区切ったものです。 -パターンにマッチしたファイル/ディレクトリは表示されなくなります。あるいはマッ -チしたファイルのみを表示することができます (|netrw-a|参照)。 - -"gh" マップ (|netrw-gh|参照) を使うと、通常の隠しリストの使用と "." で始まる -ファイル/ディレクトリを非表示にするのを切り替えることができます。 - -例: > - let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' -これは |netrw-gh| コマンドの初期設定での動作と実質的に同じになります。 -解説: - - \(^\|\s\s\) : 行頭または連続した二つの空白文字が見つかったら - \zs : その場所からマッチを開始して - \. : ドットで始まり - \S\+ : 一つ以上の非空白文字が続く名前にマッチする - -関連設定: |g:netrw_hide| |g:netrw_list_hide| -関連項目: |netrw-a| |netrw-gh| |netrw-mh| - - -ソートシーケンスを編集する *netrw-S* *netrw-sortsequence* {{{2 - -"Sorted by" が name (名前順ソート) のとき 、g:netrw_sort_sequence を設定するこ -とで優先順位を指定できます。ソートシーケンスは典型的には順位の高い順に拡張子を -並べたもので、パターンを使うこともできます。パターンはカンマで区切ります。ソー -トシーケンスの初期設定は次のとおり (実際にはすべて一行): - -For Unix: > - '[\/]$,\<core\%(\.\d\+\)\=,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$, - \.info$,\.swp$,\.bak$,\~$' -< -その他: > - '[\/]$,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$, - \.swp$,\.bak$,\~$' -< -単に * だけが指定されている場合は他のパターンにマッチしなかったすべてのファイ -ルがマッチします。ソートシーケンスを変更するには、g:netrw_sort_sequence 変数を -設定するか (手動または <.vimrc> で設定)、"S" マップを使います。 - -関連項目: |netrw-s| |netrw-S| -関連設定: |g:netrw_sort_sequence| |g:netrw_sort_options| - - -取扱いをファイルまたはディレクトリに強制する *netrw-gd* *netrw-gf* {{{2 - -リモートのシンボリックリンク (ssh や ftp を使用時) はリンク先がファイルなのか -ディレクトリなのかを知るのが難しいという問題があります。 - -強制的にファイルとして扱うには次のコマンドを使います: > - gd -< -強制的にディレクトリとして扱うには次のコマンドを使います: > - gf -< - -親ディレクトリに移動する *netrw--* {{{2 - -親ディレクトリに移動するには "-" を押すか、ファイル一覧の ../ ディレクトリの上 -で <cr> を押します。 - -netrw は |g:netrw_list_cmd| を使ってディレクトリ一覧を取得します。変数の -HOSTNAME の部分は実際の url に置き換えられます。初期設定は次のとおり: - - ssh HOSTNAME ls -FLa - -HOSTNAME の部分は実際のリクエストの [user@]hostname に置換されます。設定は必要 -に応じて変更してください。ディレクトリ名の末尾にはスラッシュが付くことが想定さ -れています。 - - -ファイル/ディレクトリを隠すにする *netrw-a* *netrw-hiding* {{{2 - -Netrw のブラウジングでは隠しリストを使う方法が三つあります: 使用しない、マッチ -したファイルを隠す、マッチしたファイルのみを表示する。 - -ファイルが |netrw-mf| によってマークされていない場合: - -"a" マップを使うと三つの表示モードが順番に切り替わります。 - -|g:netrw_list_hide| 変数にはカンマで区切られた正規表現に基づくパターンのリスト -(例 ^.*\.obj$,^\.) が設定されます。隠しリストを設定するには <c-h> マップを使い -ます (|netrw-ctrl-h|参照)。例えば、 "." で始まるファイルを非表示にしたい場合、 -<c-h> を押して隠しリストに '^\..*' を設定します (あるいは <.vimrc> で -let g:netrw_list_hide= '^\..*' を設定する)。そして、"a" キーを押して表示を切り -替えます (すべてのファイルを表示、マッチしたファイルを隠す、マッチしたファイル -のみ表示。 - - 例: \.[ch]$ - すべての *.c *.h ファイルを表示/非表示する。 - - 例: \.c$,\.h$ - 同上。すべての *.c *.h ファイルを表示/非表示する。 - -表示モード (normal/hiding/show) の切り替えは "a" マップです。忘れないで! - -ファイルが |netrw-mf| によってマークされている場合、次のように動作します: - - すべてのファイルを表示 or 隠しファイル非表示の場合: - マークされたファイルを g:netrw_list_hide に追加し、 - 隠しファイル非表示モードにする - - 隠しファイルのみ表示の場合: - マークされたファイルを g:netrw_list_hide から削除し、 - 隠しファイル非表示モードにする - - *netrw-gh* *netrw-hide* -次のコマンドを使うと - gh -ドットで始まるファイルを非表示にするかどうかを簡単に切り替えることができます。 - -関連設定: |g:netrw_list_hide| -関連項目: |netrw-a| |netrw-ctrl-h| |netrw-mh| - -ブラウジングを改善する *netrw-listhack* *netrw-ssh-hack* {{{2 - -リモートディレクトリをブラウジングするときなどに、操作の度にパスワードを入力す -るのは面倒です。 - -Linux/Unix システム向けには - - 「Linux Server Hacks - 100 industrial strength tips & tools"」 - Rob Flickenger 著 - O'Reilly, ISBN 0-596-00461-3 - -日本語版は - 「LinuxサーバHacks—プロが使うテクニック&ツール100選」 - 翻訳: 山口晴広、イメージズアンドワーズ - ISBN-10: 487311151X - ISBN-13: 978-4873111513 - -に、 ssh と scp のパスワードを省略するための設定と、セキュリティ関係の議論があ -ります。以前は http://hacks.oreilly.com/pub/h/66 で参照できましたが、現在この -アドレスは "hackzine" へのリダイレクトになっています。 -記事の内容と Ben Schmidt とのやりとりを要約します: - - 1. ローカルマシン (sshクライアント) でパブリックキーとプライベートキー - のペアを生成する: > - ssh-keygen -t rsa - (プロンプトに従ってファイルが ~/.ssh/id_rsa に保存されます) -< - 2. パスフレーズを聞かれる (二度) のでそのまま <CR> を押してパスフレー - ズを空にする。もしパスフレーズを設定するなら、ssh-agent を使うこと - でパスフレーズの入力をセッションごとに一度だけで済ますことができま - す。パスフレーズを設定しなかった場合、あなたのローカルコンピュータ - にログインするか、あるいはキーファイルにアクセスできれば、そのキー - ファイルが登録された ssh サーバーにアクセスできます。 - - 3. 二つのファイルが作成される: > - ~/.ssh/id_rsa - ~/.ssh/id_rsa.pub -< - 4. ターゲットマシン (sshサーバー) での操作: > - cd - mkdir .ssh - chmod 0700 .ssh -< - 5. ローカルマシン (sshクライアント) での操作: (一行で入力) > - ssh {serverhostname} - cat '>>' '~/.ssh/authorized_keys2' < ~/.ssh/id_rsa.pub -< -次のコマンドで接続テストします: > - ssh {serverhostname} -他に何も入力しないでサーバーマシンにログインできるはずです。 - -パスフレーズを設定している場合は次のようにします: > - ssh-agent $SHELL - ssh-add - ssh {serverhostname} -ssh-add を実行するとパスフレーズを入力するプロンプトが表示されます。そして、 -ssh を使うときはそれは表示されません。vim で使うときは、次のようにもできます > - ssh-agent vim -そして、vim の中で次のコマンドを実行します > - :!ssh-add -あるいは、vim を実行する予定の端末に ssh-agent を適用する方法もあります: > - ssh-agent xterm & -そして、必要になったところで ssh-add を実行してください。 - -Windows 向けには、vim メーリングリストにおいてパスワードの省略には Pagent を使 -うのがいいという話がありました。 - -Kingston Fung 氏がパスワードを省略する別の方法について書いています: - - scp を使うたびにパスワードを入力しなくてもよくするには、ドキュメントにある - ハックで空パスワードの ssh アカウントを作成する方法もあるが、もっといい方 - 法がある。この方法では通常のパスワード付き ssh アカウントを使い、パスワー - ドなしで操作を行える。これはセキュアかつ便利だ。方法としては、ssh パブリッ - クキー認証と ssh-agent を使う。詳しくはリンク先を見て欲しい。 - - http://www.ibm.com/developerworks/library/l-keyc2/ - http://sial.org/howto/openssh/publickey-auth/ - - -ブックマークと履歴を一覧表示する *netrw-qb* *netrw-listbookmark* {{{2 - -"qb" (query bookmarks) を押すと、ブックマークされたディレクトリと移動履歴の一 -覧が表示されます。 - -関連項目: - |netrw-gb| ブックマークに戻る (移動する) - |netrw-mb| ブックマークを設定する - |netrw-mB| ブックマークを削除する - |netrw-u| 表示履歴の前のディレクトリに移動する - |netrw-U| 表示履歴の次のディレクトリに移動する - - -新しいディレクトリを作成する *netrw-d* {{{2 - -"d" マップを使うと新しいディレクトリを作成できます (リモート操作は -g:netrw_mkdir_cmd 変数に依存。ローカル操作は g:netrw_locak_mkdir に依存)。コマ -ンドを実行すると新しいディレクトリの名前を入力するプロンプトが表示されます。何 -も入力せずに <CR> を押すとディレクトリの作成をキャンセルできます。ローカルディ -レクトリを作成するときに既存のファイルまたはディレクトリと同じ名前を指定する -と、エラーが表示され、操作は無視されます。 - -現在、ftp でのディレクトリ作成はサポートされていません。 - -関連設定: |g:netrw_local_mkdir| |g:netrw_mkdir_cmd| - - -ブラウジングディレクトリをカレントディレクトリにする *netrw-c* {{{2 - -|g:netrw_keepdir| の初期設定は 1 です。この設定の場合、カレントディレクトリは -ブラウジングディレクトリに合わせて変更されません。 - -g:netrw_keepdir を 0 に設定すると、ディレクトリを移動する度にカレントディレク -トリが設定されます。 - -g:netrw_keepdir が 1 のときは netrw のブラウジングディレクトリとカレントディレ -クトリは別々です。二つのディレクトリを同じにするには "c" マップを使います (cを -押すだけ)。このマップは Vim のカレントディレクトリを netrw のブラウジングディ -レクトリに変更します。 - -関連設定: |g:netrw_keepdir| - -ファイルをマークする *netrw-mf* {{{2 - (|netrw-mr|も参照) - -ファイルにマークを設定するにはファイル名の上で "mf" を押します。gvim では -<s-leftmouse> でマークを設定することもできます。マークしたファイルは以下のマッ -プで操作できます: - - |netrw-a| ファイル/ディレクトリを隠す - |netrw-D| ファイル/ディレクトリを削除する - |netrw-mc| ファイルをターゲットディレクトリにコピーする - |netrw-md| マークしたファイルに vimdiff を適用する - |netrw-me| マークしたファイルを開く - |netrw-mg| マークしたファイルに vimgrep を適用する - |netrw-mm| マークしたファイルを移動する - |netrw-mp| マークしたファイル印刷する - |netrw-mt| |netrw-mm| または |netrw-mc| 用のターゲットを設定する - |netrw-mT| マークしたファイルのタグを生成する - |netrw-mx| マークしたファイルにシェルコマンドを適用する - |netrw-mz| マークしたファイルを圧縮/伸長する - |netrw-O| マークしたファイルを取得する - |netrw-R| マークしたファイルの名前を変更する - -マークを解除したいときはマークを設定したときと同様に、ファイル名の上で "mf" を -押します。gvim では <s-leftmouse> も使えます。すべてのマークを解除するには -"mu" を使います (|netrw-mu|参照)。 - -マークされたファイルは "netrwMarkFile" 強調グループで強調表示されます。これは -初期設定では "Identifier" へのリンクです (|group-name| の Identifier 参照)。次 -のようなコマンドで強調グループを設定することができます > - - highlight clear netrwMarkFile - hi link netrwMarkFile ..何か.. -< -これを $HOME/.vim/after/syntax/netrw.vim に書きます。 - -*markfilelist* *global_markfilelist* *local_markfilelist* -マークされたすべてのファイルはグローバルマークファイルリストに記録されます。グ -ローバルリストは一つだけ存在します。さらに、すべての netrw バッファはローカル -マークファイルリストを持っています。netrw バッファは特定のディレクトリと結びつ -いているので、ディレクトリごとにローカルマークファイルリストが存在することにな -ります。マークされたファイルに対する操作はグローバル、またはローカルのマーク -ファイルリストに作用します。 - - -正規表現を使ってファイルをマークする *netrw-mr* {{{2 - (|netrw-mf|も参照) - -正規表現を使ってファイルをマークするには "mr" を使います。"mr" を押すと "Enter -regexp: " というプロンプトが表示されるので、例えば *.c$ のようなシェル形式の正 -規表現 (|glob()| 参照) を入力します。リモートシステムに対しては glob() は使え -ないので、netrw は "*" を ".*" に変換し (|regexp| 参照)、それを使ってファイル -をマークします。将来的には glob() スタイルではなく |regexp| スタイルの正規表現 -を使えるようにする予定です (また別のオプションで)。 - - -マークファイル: 任意のコマンド *netrw-mx* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (ローカルマークファイルリスト使用) - -"mx" マップを実行すると(外部)コマンドを入力するためのプロンプトが表示され、 -マークしたファイルに対して入力したコマンドが実行されます。コマンド文字列内のす -べての "%" は実行ごとにファイル名に置換されます。"%" が無い場合はコマンドの後 -ろにスペースとファイル名が付けられます。 - - -マークファイル: 圧縮と伸長 *netrw-mz* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (ローカルマークファイルリスト使用) - -マークされたファイルが圧縮されている場合、"mz" はファイルを伸長します。 -マークされたファイルが圧縮されていない場合、"mz" はファイルを圧縮します。 -圧縮コマンドは |g:netrw_compress| で設定できます。初期設定は "gzip" です。 - -伸長には、拡張子と伸長コマンドを関連付けた |Dictionary| が使われます。 -|g:netrw_decompress| 参照。 - -関連設定: |g:netrw_compress| |g:netrw_decompress| - -マークファイル: コピー *netrw-mc* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (グローバルマークファイルリスト使用) - -mt (|netrw-mt|) でコピー先ディレクトリを選択し、ファイルのあるディレクトリに移 -動し、mf (|netrw-mf|) でファイルを選択し、"mc" を押します。カレントウィンドウ -(mf を実行した場所) からターゲットディレクトリへ、ファイルがコピーされます。 - -関連設定: |g:netrw_localcopycmd| |g:netrw_ssh_cmd| - -マークファイル: DIFF *netrw-md* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (グローバルマークファイルリスト使用) - -|vimdiff| を使って選択したファイルの違いを表示します (選択できるファイルは二つ -か三つです)。グローバルマークファイルリストが使われます。 - -マークファイル: 編集 *netrw-me* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (グローバルマークファイルリスト使用) - -このコマンドはマークされたファイルを |arglist| に設定し、編集を開始します。 -|:Rexplore| でエクスプローラウィンドウに戻ることができます。 - -マークファイル: GREP *netrw-mg* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (グローバルマークファイルリスト使用) - -マークされたファイルに対して |:vimgrep| を適用します。検索パターンを入力するた -めのプロンプトが表示されます。次の形式で入力してください: > - /pattern/[g][j] - ! /pattern/[g][j] - pattern -< -拡張子による表示/非表示 *netrw-mh* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (ローカルマークファイルリスト使用) - -このコマンドは、マークされたファイルの拡張子を隠しリストに追加、または削除しま -す。Note: 同じ拡張子のファイルが複数選択されていた場合はファイルの数だけ追加と -削除が繰り返されます (つまり、同じ拡張子のファイルが偶数個選択されている場合は -それを選択しなかったのと同じ)。 - -関連項目: |netrw-a| |g:netrw_list_hide| - -マークファイル: 移動 *netrw-mm* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (グローバルマークファイルリスト使用) - - 警告: ファイルの移動はコピーと比べて危険です。ファイルの移動時は、まず - コピーされ、それから削除されます。コピーが失敗して削除が成功するとファ - イルが失われます。実際に操作する前に適当なファイルで試してみるか、ある - いは、mc と D を使って自分でコピーと削除を実行してください。 - 自己責任で使ってください。 - -mt (|netrw-mt|) で移動先ディレクトリを選択し、ファイルのあるディレクトリに移動 -し、mf (|netrw-mf|) でファイルを選択し、"mm" を押します。カレントウィンドウ -(mf を実行した場所) からターゲットディレクトリへ、ファイルが移動されます。 - -関連設定: |g:netrw_localmovecmd| |g:netrw_ssh_cmd| - -マークファイル: 印刷 *netrw-mp* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (ローカルマークファイルリスト使用) - -マークされたファイルに対して |:hardcopy| コマンドを実行します。具体的には、そ -れぞれのファイルを一行のウィンドウで開いて、hardcopy を実行し、一行ウィンドウ -を閉じます。 - - -マークファイル: スクリプト実行 *netrw-ms* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (ローカルマークファイルリスト使用) - -マークされたファイルをスクリプト実行します (Vimの|:source|コマンド使用) - - -マークファイル: タグ生成 *netrw-mT* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - (ローカルマークファイルリスト使用) - -"mT" マップはマークされたファイルに対して |g:netrw_ctags| で指定されたコマンド -を実行します (初期設定は "ctags")。リモートブラウジングでは、タグファイルを生 -成するために ssh が使われます (|g:netrw_ssh_cmd|参照)。したがって、リモートシ -ステムの ssh でコマンドが使えなければなりません。ローカルで使う場合は、|ctags| -を参照して ctags を準備してください。私は個人的に hdrtags を使っています。 -hdrtags は http://mysite.verizon.net/astronaut/src/index.html から入手できま -す。これを使う場合は <.vimrc> で次のように設定してください: > - - let g:netrw_ctags= "hdrtag" -< -リモートでタグファイルを生成した場合、タグファイルが "取得" されます。つまり、 -ローカルシステムにファイルがコピーされます。そして、ネットワーク越しのファイル -にアクセスできるように、タグファイルが変更されます。変更されるのはタグファイル -内のファイル名で、それぞれのファイル名の前に netrw で扱える形の url が挿入され -ます (urlは元のタグファイルの場所に基づく)。タグ操作 (|tags|) を実行すると、 -netrw によって url が開かれ、タグに移動できます。 - -関連設定: |g:netrw_ctags| |g:netrw_ssh_cmd| - - -マークファイル: ターゲットディレクトリを設定する *netrw-mt* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - -ファイルコピー/移動のターゲットを設定する (|netrw-mc|と|netrw-mm| 参照): - - * カーソルがファイルの上にある場合、netrw ウィンドウに表示されているディレク - トリがターゲットとして設定されます。 - - * カーソルがバナーの上にある場合も、netrw ウィンドウに表示されているディレク - トリがターゲットとして設定されます。 - - * カーソルがディレクトリの上にある場合は、そのディレクトリがターゲットとして - 設定されます。 - -ターゲットは Vim セッションで一つしか設定できません。ターゲットはスクリプト変 -数 (|s:var|参照) で管理されており、(Vim のインスタンスごとの) すべての netrw -ウィンドウで共有されます。 - -マークファイル: マーク解除 *netrw-mu* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) - -"mu" マップを使うと現在設定されているすべてのマークが解除されます。 - - -NETRW ブラウザ変数 *netrw-browser-options* *netrw-browser-var* {{{2 - -(ファイル転送の設定については |netrw-options| を参照) - -netrw ブラウザの各種設定は変数で管理されていて、それを変更することができます。 -<.vimrc> などで変数を設定することでブラウザの動作をカスタマイズできます。 -(|netrw-settings|も参照) -> - ---- ----------- - 変数 説明 - ---- ----------- -< *g:netrw_alto* 分割ウィンドウを(上ではなく)下に開くようにする - (|netrw-o| 参照) - 初期設定: =&sb (|'sb'| 参照) - - *g:netrw_altv* 分割ウィンドウを(左ではなく)右に開くようにする - (|netrw-v| 参照) - 初期設定: =&spr (|'spr'| 参照) - - *g:netrw_banner* バナーの表示を切り替える - =0: バナーを表示しない - =1: バナーを表示する (初期設定) - NOTE: バナー非表示は新しい機能なので問題が起こ - るかもしれません。 - - *g:netrw_browse_split* ブラウザで <cr> を押してファイルを開くとき: - =0: 同じウィンドウを使う - =1: ウィンドウを水平分割する - =2: ウィンドウを垂直分割する - =3: 新しいタブで開く - =4: "P" で開く (以前のウィンドウで開く) - Note: |g:netrw_preview| を使うと (水平分割 - から変更して) 垂直分割にできます 。 - - *g:netrw_browsex_viewer* ユーザー指定のビューア: > - "kfmclient exec" - "gnome-open" -< 値が > - "-" -< なら、netrwFileHandler() によってファイルを処 - 理するスクリプト/関数が呼ばれます。 - (|netrw_filehandler| 参照) - - *g:netrw_chgperm* Unix/Linux: "chmod PERM FILENAME" - Windows: "cacls FILENAME /e /p PERM" - ファイルのアクセス権限を変更するのに使われま - す。 - - *g:netrw_compress* ="gzip" - ファイル圧縮コマンド - - *g:netrw_ctags* ="ctags" - タグを作成するための外部コマンド - - *g:netrw_cursor* = 2 (初期設定) - 'cursorline' (cul) と 'cursorcolumn' (cuc) を - 使用するかどうかをコントロールする: - - Value Thin-Long-Tree Wide - =0 u-cul u-cuc u-cul u-cuc - =1 u-cul u-cuc cul u-cuc - =2 cul u-cuc cul u-cuc - =3 cul u-cuc cul cuc - =4 cul cuc cul cuc - - 記号の意味 - u-cul : |'cursorline'| のユーザー設定使用 - u-cuc : |'cursorcolumn'| のユーザー設定使用 - cul : |'cursorline'| をローカル設定する - cuc : |'cursorcolumn'| をローカル設定する - - *g:netrw_decompress* = { ".gz" : "gunzip" , - ".bz2" : "bunzip2" , - ".zip" : "unzip" , - ".tar" : "tar -xf"} - 拡張子と伸長プログラムを関連付ける辞書 - - *g:netrw_dirhistmax* =10: 履歴の最大数を設定する。履歴を使用しな - い場合はゼロを設定する。 - (関連: |netrw-qb| |netrw-u| |netrw-U|) - - *g:netrw_fastbrowse* =0: 低速ディレクトリブラウジング - ファイル一覧を再利用しない - 常にファイル一覧取得を行う - =1: 中速ディレクトリブラウジング - リモートディレクトリのみファイル一覧を再利 - 用する。 - (初期設定) - =2: 高速ディレクトリブラウジング - 未取得のディレクトリ (または|netrw-ctrl-l| - が使われたとき) のみファイル一覧を取得す - る。 - - 高速ブラウジングは古いファイル一覧バッファを保 - 持し、再取得処理を実行しません。これは特にリ - モートブラウジングで重要になります。ファイルが - 作成/削除されるとファイル一覧バッファは不正確 - な情報になります。|netrw-ctrl-l| を使うことで - ファイル一覧を更新できます。 - この設定によって正確さ (常に最新) とスピードの - トレードオフを選択できます。 - - *g:netrw_fname_escape* =' ?&;%' - リモートで読み/書きするときにファイル名をエス - ケープするのに使われる。 - - *g:netrw_ftp_browse_reject* ftp がエラーや警告を出力すると、それがファイル - やディレクトリとして一覧に表示されてしまいま - す。この変数に設定したパターンを使ってそれらの - メッセージが取り除かれます。初期設定は以下のと - おり: - '^total\s\+\d\+$\| - ^Trying\s\+\d\+.*$\| - ^KERBEROS_V\d rejected\| - ^Security extensions not\| - No such file\| - : connect to address [0-9a-fA-F:]* - : No route to host$' - - *g:netrw_ftp_list_cmd* ftp に渡されるファイル一覧取得コマンド。 - 初期設定: - unix or g:netrw_cygwin set: : "ls -lF" - そうでない場合 "dir" - - - *g:netrw_ftp_sizelist_cmd* ftp に渡されるファイル一覧取得コマンド。ファイ - ルサイズでソートする。 - 初期設定: - unix or g:netrw_cygwin set: : "ls -slF" - そうでない場合 "dir" - - *g:netrw_ftp_timelist_cmd* ftp に渡されるファイル一覧取得コマンド。最終更 - 新日時でソートする。 - 初期設定: - unix or g:netrw_cygwin set: : "ls -tlF" - そうでない場合 "dir" - - *g:netrw_glob_escape* ='[]*?`{~$' (unix) - ='[]*?`{$' (windows - 設定された文字がディレクトリ名に使われていたら - glob() を適用する前にエスケープされる。 - - *g:netrw_hide* true なら、隠しリストが使用される - 初期設定: =0 - - *g:netrw_home* ブックマークと履歴 (.netrwbook と .netrwhist) - を保存するホームディレクトリ。 - 初期設定: |'runtimepath'| の最初のディレクトリ - - *g:netrw_keepdir* =1 (初期設定) カレントディレクトリとブラウジン - グディレクトリを別にする - =0 カレントディレクトリとブラウジングディレク - トリを同じにする。 - 現在のブラウジングディレクトリはb:netrw_curdir - に保存されます。 (|netrw-c| 参照) - - *g:netrw_list_cmd* リモートディレクトリのファイル一覧取得コマンド - 初期設定: (sshがあるなら) - "ssh HOSTNAME ls -FLa" - - *g:netrw_liststyle* デフォルトのファイル一覧表示スタイル: - = 0: thin listing (一行に一つのファイル) - = 1: long listing (一行に一つのファイル、タイ - ムスタンプ、ファイルサイズ) - = 2: wide listing (一行に複数のファイル) - = 3: tree style listing (ツリー表示) - *g:netrw_list_hide* 隠しファイル用のパターンのリスト(カンマ区切り) - パターンは正規表現です (|regexp|参照) - 例: let g:netrw_list_hide= '.*\.swp$' - 初期設定: "" - - *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin - ="copy" Windows - マークされたファイル (|netrw-mf|) をターゲット - ディレクトリにコピー (|netrw-mt|, |netrw-mc|) - - *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin - ="move" Windows - マークされたファイル (|netrw-mf|) をターゲット - ディレクトリに移動 (|netrw-mt|, |netrw-mm|) - - *g:netrw_local_mkdir* ローカルディレクトリ作成コマンド - 初期設定: "mkdir" - - *g:netrw_local_rmdir* ディレクトリ削除コマンド (rmdir) - 初期設定: "rmdir" - - *g:netrw_maxfilenamelen* 初期設定は 32。 long スタイルでの表示を 80 カ - ラムのディスプレイに収められるような値。 - 大きい画面を使っているか、32 バイトより長い名 - 前のファイル/ディレクトリがあるなら、このオプ - ションを設定して表示を調整するといいでしょう。 - - *g:netrw_mkdir_cmd* リモートディレクトリ作成コマンド - 初期設定: "ssh USEPORT HOSTNAME mkdir" - - *g:netrw_mousemaps* =1 (初期設定) ブラウジングでマウスボタンを有効 - にする: - 左クリック : ファイル/ディレクトリを - 開く - Shift-左クリック: ファイルをマークする - 中クリック : P と同じ - 右クリック : ファイル/ディレクトリを - 削除 - =0: マウスのマップを無効にする - - *g:netrw_retmap* この変数が存在し、その値が 1 なら: - * netrw でファイルを開いたとき - * <2-leftmouse> のノーマルモードのマップが他 - に定義されていない - という場合、netrw ブラウザウィンドウに戻るため - の機能として <2-leftmouse> マップが設定されま - す。 - 例: クリックしてファイルを開き、ダブルクリッ - クで戻る。 - - Note: <2-leftmouse> 以外のキーを割り当てたい場 - 合は: - * let g:netrw_retmap= 1 - * nmap <silent> 好きなキー <Plug>NetrwReturn - を設定してください。 - - |:Rexplore| コマンドを使っても同じことができま - す。 - - 初期設定: =0 - - *g:netrw_rm_cmd* ファイル削除コマンド - 初期設定: "ssh USEPORT HOSTNAME rm" - - *g:netrw_rmdir_cmd* ディレクトリ削除コマンド - 初期設定: "ssh USEPORT HOSTNAME rmdir" - - *g:netrw_rmf_cmd* ソフトリンク削除コマンド - 初期設定: "ssh USEPORT HOSTNAME rm -f" - - *g:netrw_sort_by* ソートの種類 ("name" or "time" or "size") - 初期設定: "name" - - *g:netrw_sort_direction* ソートの順序: "normal" or "reverse" - 初期設定: "normal" - - *g:netrw_sort_options* ソートには |:sort| が使われます。この変数に設 - 定された値はソートコマンドに追加されます。例え - ば .vimrc で次のように設定すると、大文字小文字 - を無視できます: > - let g:netrw_sort_options="i" -< 初期設定: "" - - *g:netrw_sort_sequence* 名前でソートするとき、まずこの変数で指定された - パターンを使ってソートする。カンマで区切られた - パターンのリスト。Note: ソート時のファイル名に - はファイルタイプを示す装飾文字 - (|netrw-filigree|) が含まれます。 - 初期設定: '[\/]$,*,\.bak$,\.o$,\.h$, - \.info$,\.swp$,\.obj$' - - *g:netrw_special_syntax* true なら、特定の種類のファイルが特別な色(シン - タックス)で表示されます: - - netrwBak : *.bak - netrwCompress: *.gz *.bz2 *.Z *.zip - netrwData : *.dat - netrwHdr : *.h - netrwLib : *.a *.so *.lib *.dll - netrwMakefile: [mM]akefile *.mak - netrwObj : *.o *.obj - netrwTags : tags ANmenu ANtags - netrwTilde : *~ - netrwTmp : tmp* *tmp - - これらの構文ハイライトグループは、初期設定では - Folded か DiffChange へのリンクです。 - (|hl-Folded| と |hl-DiffChange| 参照) - 例えば <.vimrc> で次のように設定することで > - hi link netrwCompress Visual -< 好みの配色を設定できます。 - - *g:netrw_ssh_cmd* リモートアクセス時に ssh として使われる実行可 - 能ファイル。ファイル一覧取得やファイル削除など - に使われます。 - 初期設定: ssh - - *g:netrw_ssh_browse_reject* ssh の出力に不要なテキスト (メッセージ、バナー - 等) が混ざっていて、それらがディレクトリやファ - イルとして認識されると困ります。この変数に設定 - されたパターンを使って余計なメッセージを取り除 - きます。 - 初期設定: - '^total\s\+\d\+$' - - - *g:netrw_tmpfile_escape* =' &;' - 一時ファイルを escape() で処理するときに使われ - るエスケープ文字列。 - - *g:netrw_timefmt* Vim の strftime() で使用するフォーマット文字列 - を指定します。初期設定は "%c" で、これは手元の - strftime() のマニュアルページによれば "現在の - ロケールにおいて一般的な日付・時刻の表記" で - す。"%c" の結果に不満な場合は例えば次のような - 設定が便利でしょう: - "%a %d %b %Y %T", - " %a %Y-%m-%d %I-%M-%S %p" - 初期設定: "%c" - - *g:netrw_use_noswf* netrw のブラウザバッファではスワップファイルを - 使わないようにしています。しかし、あるシステム - ではそれによって ml_get エラーが発生することが - あります。そのようなエラーが出た場合は .vimrc - で次のように設定してみてください - let g:netrw_use_noswf= 0 - - *g:netrw_winsize* ウィンドウを作成したときの初期サイズ。"o" - (|netrw-o|), "v" (|netrw-v|), |:Hexplore|, - |:Vexplore| で使用。g:netrw_winsize の値は整数 - です。新しいウィンドウのサイズを netrw のカレ - ントバッファウィンドウに対する比率で指定しま - す。 - 初期設定: 50 (50%) - - *g:netrw_xstrlen* マルチバイト文字列の長さを計算する方法を指定す - る。 (thanks to N Weibull, T Mechelynck) - =0: Vim の組み込み関数 strlen() を使う - =1: 文字数。(Latin a + combining circumflex は - 二文字)(初期設定) - =2: 文字数。(Latin a + combining circumflex は - 一文字。タブ文字は 1。CJK文字は全角半角と - もに 1。...) - =3: 表示幅 (タブ文字は 1 から |'tabstop'| まで - の可変幅。CJK文字は全角は 2、その他は 1。 - アラビア文字の alif は、lam が前置されてい - る場合は 0、そうでなければ 1。...) - - *g:NetrwTopLvlMenu* トップレベルメニューの名前を指定する。初期設定 - は "Netrw."。これを変更したい場合は .vimrc で - 設定してください。 - -NETRW ブラウザとオプション設定の互換性 *netrw-incompatible* {{{2 - -Netrw 内部でオプションを変更するときは、ユーザー設定を保存してから netrw 用の -値を設定し、後で元に戻すという方法が使われます。しかし、autochdirオプション: > - :set acd -の扱いには問題があります。autochdir は開いているファイルが置かれているディレク -トリをカレントディレクトリとして設定しますが、これはディレクトリを開いたときも -適用されます。つまり、autochdir によってファイル (それがディレクトリであって -も) が置かれているディレクトリがカレントディレクトリとして設定されてしまいま -す。 - -NETRW ブラウザの設定 *netrw-settings* {{{2 - -NetrwSettings.vim プラグインのコマンド > - :NetrwSettings -を実行すると、netrw の設定変数が表示されたウィンドウが表示されます。値を編集し -てファイルを保存すると設定が反映されます。それぞれの変数の上で "?" を押すとそ -の変数のヘルプが表示されます。 - -(参照: |netrw-browser-var| |netrw-protocol| |netrw-var| |netrw-variables|) - - -============================================================================== -ファイルを取得する *netrw-O* {{{2 - -マークされたファイルがない場合: - - リモートディレクトリを表示しているとき、ファイル名の上で O を押すことで - ファイルを取得できます (ローカルマシンにファイルがコピーされる。編集は開始 - されない)。 - -マークされたファイルがある場合: - - マークされたファイルが取得されます (ローカルマシンにファイルがコピーされ - る。編集は開始されない)。 - -この操作は ftp と scp でサポートされています (ブラウジングが動作しているなら -問題なく使えるはずです)。ステータスラインの右側に "Obtaining filename" のよう -なメッセージが表示されます。ファイル転送が完了するとステータスラインは元に戻り -ます。 - -ローカルマシンのファイルを "取得" することもできます。<.vimrc> で -|g:netrw_keepdir| が 0 に設定されていなければ、Netrw では Vim のカレントディレ -クトリとは別のディレクトリを表示できます。ローカルブラウザでファイルを選択 -(ファイル名の上にカーソルを移動) し、"O" を押すことで、ファイルを "取得" (Vim -のカレントディレクトリにコピー) できます。 - -関連項目: - * カレントディレクトリを確認するには: |:pwd| 参照。 - * ブラウザで表示しているディレクトリをカレントディレクトリにしたい場合は: - |netrw-c| 参照。 - * ブラウザで表示しているディレクトリをカレントディレクトリに自動的にしたい場 - 合は: |g:netrw_keepdir| 参照。 - - - *netrw-createfile* -NETRW のカレントディレクトリで新しいファイルを作成する *netrw-%* - -netrw のカレントディレクトリで新しいファイルを作成するには "%" を押します。 -ファイル名を入力するためのプロンプトが表示されます。指定した名前の空のファイル -が netrw のカレントディレクトリ (b:netrw_curdir) に作成されます。 - - -プレビューウィンドウ *netrw-p* *netrw-preview* {{{2 - -ファイルの上で "p" キーを押すと、そのファイルをプレビューウィンドウで開くこと -ができます。ブラウザウィンドウとは別にファイルを表示するウィンドウが作成されま -す (|:pedit|参照。カーソルは移動しません)。初期設定ではウィンドウは水平分割さ -れます。|g:netrw_preview| を設定することで垂直分割に変更できます。 - -netrw を次のように設定すると便利かもしれません: > - - let g:netrw_preview = 1 - let g:netrw_liststyle = 3 - let g:netrw_winsize = 30 - -これは: - 1. ファイルのプレビューを垂直分割で開く。 - 2. デフォルトの一覧表示スタイルを "tree" にする。 - 3. 垂直分割でプレビューウィンドウを開いたときに、ディレクトリの一覧表 - 示ウィンドウは 30 列の幅しか使わないので、残りの領域をプレビュー - ウィンドウの表示に使用できる。 - -以前のウィンドウ *netrw-P* *netrw-prvwin* {{{2 - -ファイル/ディレクトリを以前の (最後にアクセスした) ウィンドウ (:he |CTRL-W_p|) -で開くには、"P" を押します。ウィンドウが一つしかない場合は、新しいウィンドウが -水平分割で作成されます (分割位置は |g:netrw_alto| で設定できます。ウィンドウの -初期サイズは |g:netrw_winsize| で設定できます)。 - -ウィンドウが複数ある場合は、以前のウィンドウを使ってファイル/ディレクトリが開 -かれます。以前のウィンドウで表示されているバッファに未保存の変更があり、その -バッファを表示しているウィンドウが一つだけの場合、バッファを保存するかどうかを -尋ねるプロンプトが表示されます (yes, no, または cancel)。 - - -一覧を更新する *netrw-ctrl-l* *netrw-ctrl_l* {{{2 - -ローカル/リモートのディレクトリのファイル一覧は、ctrl-l (<c-l>) を押すか、一覧 -の ./ の上で <cr> を押すことで更新できます。":e ." でローカルディレクトリを更 -新することもできます。 - - -ファイルの名前を変更する *netrw-move* *netrw-rename* *netrw-R* {{{2 - -マークされたファイルがない場合: (|netrw-mf| 参照) - - 移動 (名前変更) したいファイル/ディレクトリにカーソルを移動して "R" を押し - ます。プロンプトが表示されるのでファイル/ディレクトリの移動先を入力してく - ださい。"V" コマンド (ビジュアル選択) で複数の行を選択して "R" を使うこと - もできます。 - -マークされたファイルがある場合: (|netrw-mf| 参照) - - マークされたファイルを移動 (名前変更) します。プロンプトが表示されるので - ファイル/ディレクトリの移動先を入力してください。 - - 警告:~ - - Note: ファイルの移動はコピーと比べて危険です。なぜなら、リモートのファイル - を "移動" するとき、実際には コピー + 削除 を実行しているからです。コピー - が失敗して削除が成功するとファイルが失われます。 - -g:netrw_rename_cmd 変数で名前変更のコマンドを指定できます。初期設定は次のとお -り: - - ssh HOSTNAME mv - -V (|linewise-visual|) で選択することで複数のファイル/ディレクトリを名前変更で -きます。 - - -ソートの順番を逆にする *netrw-r* *netrw-reverse* {{{2 - -"r" キーを押すことでソートの順番を昇順/降順に切り替えることができます。 - -関連項目: |netrw-s| -関連設定: |g:netrw_sort_direction| - - -ソートの種類を変更する *netrw-s* *netrw-sort* {{{2 - -ファイル一覧は名前、時間、ファイルサイズのいずれかでソートできます。"s" マップ -を使うことでソートの種類を順番に切り替えることができます。ファイルの一覧は自動 -的に更新されます。 - -関連項目: |netrw-r| |netrw-S| -関連設定: |g:netrw_sort_by| |g:netrw_sort_sequence| - - -ファイルを開くウィンドウを指定する *netrw-C* {{{2 - -ファイルを開くウィンドウを指定するには、netrw ウィンドウで "C" マップを押す -か、g:netrw_chgwin にウィンドウ番号を設定します。ファイルを開く (|netrw-cr|) -と、指定されたウィンドウが使われます。 - -関連項目: |netrw-cr| -関連設定: |g:netrw_chgwin| - - -10. 問題と対策 *netrw-problems* {{{1 - - (何かフィードバックがあればこの項に追加していきます) - (|netrw-debug| も参照) - *netrw-p1* - P1. Windows 95 を使っています。ftp が読み込みのたびに末尾に四行の空行 - を出力します。 - - |netrw-fixup| を見て、次の設定を <.vimrc> に加えてください: - - let g:netrw_win95ftp= 1 - - *netrw-p2* - P2. Windows を使っています。ftp を使ったブラウジングで時間やサイズで - ソートできません。- あるいは - リモートシステムが Windows サーバー - なんですが、時間やサイズでソートできません。 - - Windows の ftp の ls には最低限の機能しかありません (ソートオ - プションが使えない等)。注釈文字を得るための -F もサポートされ - ていません (例えば ABC がディレクトリなら ABC/ になる機能)。 - そのため、Netrw は "dir" を使って thin と long スタイルの一覧 - を取得します。あなたの ftp がこれらの機能をサポートしているな - ら、<.vimrc> に次の設定を書いてください: > - - let g:netrw_ftp_list_cmd = "ls -lF" - let g:netrw_ftp_timelist_cmd= "ls -tlF" - let g:netrw_ftp_sizelist_cmd= "ls -slF" -< - あるいは、あなたの Windows に cygwin がインストールされている - なら、<.vimrc> に次の設定を書いてください: > - - let g:netrw_cygwin= 1 -< - この問題はリモートシステムが Windows だった場合にも起こりま - す。その場合、以上のように g:netrw_ftp_[time|size}list_cmd を - 設定しても、リモートシステムは期待した動作をしないでしょう。 - - - *netrw-p3* - P3. rcp://user@host/ (あるいは他の ftp 以外のプロトコル) を指定したの - に netrw は ssh を使おうとする。 - - Netrw はリモートディレクトリを表示する方法として ssh と ftp を - 使います。ftp 以外が指定された場合は ssh が使われます。(ファイ - ル一覧取得ではなく) ファイルをダウンロードするときに、指定され - たプロトコルが使われます。 - - *netrw-p4* - P4. ファイル一覧の表示スタイルを long をデフォルトにしたい。 - - |.vimrc| に次のコマンドを書いてください: > - - let g:netrw_liststyle= 1 -< - 他にもいろいろカスタマイズできます。|netrw-browser-var| を参照 - してください。 - - *netrw-p5* - P5. ローカルブラウザでの時間の表示がおかしい - - あなたのシステムの strftime() は "%c" を指定したときに "Sun - Apr 27 11:49:23 1997" のような出力を返しますか? そうでない場 - 合は、"man strftime" を実行して適切なオプションを確認してくだ - さい。そして、|.vimrc| にその設定を書いてください: > - - let g:netrw_timefmt= "%X" (X は調べたオプション) -< - *netrw-p6* - P6. ブラウザで移動するごとにカレントディレクトリを設定したい。 - - 次の設定を |.vimrc| に書いてください: -> - let g:netrw_keepdir= 0 -< - *netrw-p7* - P7. ファイル名に中国語 (などの非 ascii) の文字が使われていると、netrw - (Explore, Sexplore, Hexplore, etc) でそれが表示されない。 - - (Vim メーリングリストでの Wu Yongwei 氏による回答) - 問題は確認できました。936 以外のコードページを使っていません - か? Windows の Unicode版 API に対応していない他のアプリケー - ション同様、どうやら Vim ではカレントコードページの文字以外は - 使えないようです。これは OS の問題です。最近の Linux ディスト - リビューションのような UTF-8 ロケールが使えるシステムではこの - ような問題は起こらないでしょう。 - - (こういうのが utf-8 が推奨される理由の一つです) - - *netrw-p8* - P8. "ssh is not executable on your system" (ssh という実行可能ファイル - がない) って表示されるんだけど、どうすればいいの? - - (Dudley Fox) 私の知る限りほとんどの windows ユーザーは ssh と - して putty を使っています。putty はフリーの ssh/telnet アプリ - ケーションです。詳しくは url を参照してください。 - - http://www.chiark.greenend.org.uk/~sgtatham/putty/ - - (Marlin Unruh) このプログラムは私のところでも動作しました。実 - 行ファイル一つなので、Windows\System32 フォルダにコピーして - ショートカットを作っておくといいかも。 - - (Dudley Fox) plink も試してみるといいでしょう。こっちの方が目 - 的にあっていると思います。plink は putty スイートに含まれてい - ます。 - - http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html#plink - - (Vissale Neang) OpenSSH の windows 版もあります。次の場所から - 入手可能: - - http://sshwindows.sourceforge.net/ - - これは Cygwin をインストールしなくても使えます。 - - (Antoine Mechelynck) Windows 環境でネイティブに動く Unix プロ - グラムが個別に欲しい場合は sourceforge の GnuWin32 プロジェク - トのものがいいと思います: - - http://gnuwin32.sourceforge.net/ - - Cygwin が Windows の上に Unix 仮想マシンを作っているのと違い、 - GnuWin32 は Windows のシステムコールで Unix のユーティリティを - 実装しています。なので、それらのプログラムは cmd.exe と相性が - いいです。 - - (dave) WinSCP を使ってサーバーに接続する方法もあります。 - Preferences > Editors で gvim をエディタとして設定する: - - - "Add..." をクリック - - 外部エディタを設定 (パスは適当に調節してください。ク - オートを付けて最後に !.! を付ける): - "c:\Program Files\Vim\vim70\gvim.exe" !.! - - 設定画面のの下の方を見てファイルタイプが - {asterisk}.{asterisk} (すべてのファイル)、または自分 - の設定したい値になっているのを確認する (cec: - {asterisk} は * に読み替えてください。こういう風に書 - かないとヘルプのタグとして認識されてしまうので...)。 - - 設定がリストボックスの一番上にくるようにする (なって - いない場合は設定をクリックして "Up" をクリックする) - Norton Commander スタイルを使っている場合は <F4> を押すことで - ファイルをローカルにコピーしたものをgvimで開くことができます。 - - (Vit Gottwald) パブリックキーとプライベートキーを生成してパブ - リックキーをサーバーに保存する方法: > - http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter8.html#pubkey-gettingready - (8.3 Getting ready for public key authentication) -< - 'pscp' でプライベートキーを使う方法: > - - http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter5.html - (5.2.4 Using public key authentication with PSCP) -< - (Ben Schmidt) cwRsync に付属している ssh が便利だと思います。 - 私は最近これを見つけてほとんどの Windows システムに cwRsync か - cwRsyncServer をインストールしました。ssh だけ使いたい場合は同 - じ人が配布している COPSSH を使った方がいいかもしれません。こっ - ちには多分 sftp とかも入ってると思います。cwRsync には入ってな - いのでよくわかりませんが。 - - (cec) 以上の提案を実行する場合は以下の変数を .vimrc で設定する - 必要があるでしょう: - - |g:netrw_ssh_cmd| |g:netrw_list_cmd| |g:netrw_mkdir_cmd| - |g:netrw_rm_cmd| |g:netrw_rmdir_cmd| |g:netrw_rmf_cmd| - - 最初の変数 (|g:netrw_ssh_cmd|) が一番重要です。他の変数は - g:netrw_ssh_cmd の文字列を使って初期値が設定されます。 - *netrw-p9* *netrw-ml_get* - P9. ブラウザでディレクトリを変更するとなんか変になる。ml_get エラーが - 表示されて、vim を kill するしかなくなる。どうすればいいの? - - Netrw ではディレクトリを表示しているバッファに対してスワップ - ファイルが作成されないようにしていますが、その影響で、システム - によっては ml_get エラーが発生することがあります。<.vimrc> で - |g:netrw_use_noswf| を 0 に設定してみてください: > - let g:netrw_use_noswf= 0 -< - *netrw-p10* - P10. "[something] is a directory" と表示されて "Press ENTER or type - command to continue" というプロンプトが出るのがいやなんだけど... - - "[something] is a directory" プロンプトは (netrw ではなく) Vim - によって出力されていて、この表示をなくす方法はありません。 - cmdheight が 1 (初期設定) の場合にこのメッセージによって - "Press ENTER..." プロンプトが表示されます。|hit-enter| を読ん - でください。|'cmdheight'| を 2 (かそれ以上) に設定するといいか - もしれません。 - - *netrw-p11* - P11. ウィンドウを二分割して、左の細いウィンドウをブラウザ表示に、右の - ウィンドウをファイル編集用にしたいんだけど、どうすればいいの? - - * <.vimrc> に次の設定を書く: - let g:netrw_altv = 1 - * カレントディレクトリを ":e ." で開く - * ファイルを選択して v を押す - * 適当にウィンドウのサイズを変更する (|CTRL-W_<| と |CTRL-W_>| - 参照)。gvim を使っている場合はウィンドウの区切りをマウスでド - ラッグすることでもサイズを変更できる。 - * 他のファイルを開く場合は ctrl-w h で netrw ブラウザに戻り、 - ファイルを選択し、P を押す (|CTRL-W_h| と |netrw-P| 参照)。 - gvim を使っている場合はブラウザウィンドウで <leftmouse> 押し - てから開きたいファイルを <middlemouse> で選択する。 - - *netrw-p12* - P12. ディレクトリが正しくソートされない、一覧のファイル名になんか変な - 文字が付く、wide 表示でファイルが正しく整列されない、...。 - - おそらくエンコーディングの問題です。私は普段 utf-8 を使っています - が、しかし ascii文字 (32-126の範囲のバイト) しか使っていません。 - マルチバイトエンコーディングでは一つの文字を 2 バイトかそれ以上の - バイトで表現します。|g:netrw_sepchr| や |g:netrw_xstrlen| の設定 - を変更してみてください。 - - *netrw-p13* - P13. Windows + putty + ssh を使っています。ブラウズするときにディレク - トリの末尾に "/" が付いていないため、netrw はそれをファイルとして - 転送しようとするので、サブディレクトリをブラウズできません。なん - とかなりませんか? - - (mikeyao) Windows 環境で vim を ssh と putty で使いたいなら、 - plink と pscp/psftp の組み合わせを試してみてください。pscp/psftp - は接続に、plink はサーバー上でのコマンドの実行 (例えば 'ls' を - 使ってファイルとディレクトリの一覧を取得) に使用されます。 - - 私は次のように設定して使っています: -> - " ファイルの一覧取得用。一番大事な設定。これを設定しないと空のバッ - " ファが表示される - let g:netrw_list_cmd = "plink HOSTNAME ls -Fa" - " putty のディレクトリのシステムパスに追加していない場合は - " scp/sftp コマンドを指定する必要がある。例: - "let g:netrw_sftp_cmd = "d:\\dev\\putty\\PSFTP.exe" - "let g:netrw_scp_cmd = "d:\\dev\\putty\\PSCP.exe" -< - *netrw-p14* - P14. scp/ssh 接続で Nwrite の速度をスピードアップしたいんだけど? - (Thomer M. Gil) - - ssh の ControlMaster と ControlPath を試してみてください - (ssh_config のマンページ参照)。一つのネットワーク接続を複数の ssh - 接続で共有できます。これにより、ファイル書き込みごとの暗号ハンド - シェイクを省略でき、時には一桁くらい速くなります。 - ( http://thomer.com/howtos/netrw_ssh.html 参照) - (取り込み許可取得済み) - - ~/.ssh/config に以下の設定を追加してください: > - - # "*" は目的のホスト名に変更してください - Host * - ControlMaster auto - ControlPath /tmp/%r@%h:%p - -< そして、ホストに ssh 接続し、それを実行したままにしておきます: > - - ssh -N host.domain.com - -< そして、Vim の Netrw でファイルを開きます。快適な速度をお楽しみく - ださい: > - - vim scp://host.domain.com//home/user/.bashrc -< - *netrw-p15* - P15. ファイルやディレクトリを開くのにシングルクリックじゃなくてダブル - クリックを使うようにするにはどうすればいいの? (Ben Fritz) - - まず、netrw のマップを無効化します > - let g:netrw_mousemaps= 0 -< そして、netrw バッファのみで使うマップを - $HOME/.vim/after/ftplugin/netrw.vim で定義します: > - nmap <buffer> <2-leftmouse> <CR> -< Note: g:netrw_mousemaps をゼロに設定すると、<leftmouse> だけでな - く、netrw のマウス関連のマップはすべて無効化されます。 - (|g:netrw_mousemaps| 参照) - -============================================================================== -11. Netrw をデバッグする *netrw-debug* {{{1 - -<netrw.vim> スクリプトはたいていは次のような場所にあります: -> - /usr/local/share/vim/vim7x/plugin/netrwPlugin.vim - /usr/local/share/vim/vim7x/autoload/netrw.vim -< -or- > - /usr/local/share/vim/vim6x/plugin/netrwPlugin.vim - /usr/local/share/vim/vim6x/autoload/netrw.vim -< -スクリプトは起動時に自動的にロードされます (:set nocp を想定)。 - - 1. <Decho.vim> スクリプトを入手してください: - - http://mysite.verizon.net/astronaut/vim/index.html#DECHO - or - http://vim.sourceforge.net/scripts/script.php?script_id=120 - - スクリプトは "vimball" になっています。7.0 かそれ以前の vim を使って - いる場合は vimball もアップデートする必要があります。 - http://mysite.verizon.net/astronaut/vim/index.html#VIMBALL - - 2. 次のようにして <netrw.vim> ファイルを編集してください: > - - vim netrw.vim - :DechoOn - :wq -< - 通常のデバッグなし状態に戻すには再び <netrw.vim> を編集します > - - vim netrw.vim - :DechoOff - :wq -< - このコマンドは <Decho.vim> で定義されており、すべての Decho デバッ - グステートメント (Dfunc(), Dret(), Decho(), Dredir()) をコメントア - ウトします。 - - 3. Vim を起動して、ネットワークファイルを開いたりブラウジングしたりし - て問題を再現してください。<netrw.vim> がネットワーク上のファイルを - 読み込んだり書き込んだりする過程が別のタブに出力されます。 - - 出力をファイルに保存するには次のようにします > - :tabnext - :set bt= - :w! DBG -< その情報を <netrw.vim> のメンテナに送ってください > - NdrOchip at ScampbellPfamily.AbizM - NOSPAM -< -============================================================================== -12. 変更履歴 *netrw-history* {{{1 - - v142: Apr 06, 2011 * I modified NetrwRemoteListing() to use - shellescape(fnameescape(s:path),1) for - the benefit of those using scp://.../ - with subdirectories having spaces. - Problem reported by: Gilles Charron - Apr 18, 2011 * s:NetrwMethod() attempts to issue an - error message when given a malformed url - Apr 29, 2011 * converted most mousemaps to use <Plug>s - * |g:netrw_winsize|'s meaning changed - v141: Aug 28, 2010 * added -s:... support for Windows ftp - * restored 2-leftmouse for :Rex-like return - * added balloon help for banner - Oct 26, 2010 * :Texplore changed to start from netrw's idea - of the current directory, not pwd's - Feb 10, 2011 * netrwPlugin modified to use BufReadCmd - when the "filename" ends with a "/" or a "\" - Avoids "... is a directory" message, works - inside a try-catch-endtry clause. - Feb 22, 2011 * for menus, &go =~# used to insure correct case - Apr 01, 2011 * changed g:netrw_cursorcolumn to g:netrw_cursor - In addition, there's more supported settings for - it. - v140: Jul 27, 2010 * (Lech Lorens) unexpected change of window - v139: May 14, 2010 * when viewing remote directory listings and - changing listing style, going to tree listing - mode was issuing two rather useless messages - about the buffer name. They have now been - silenced. - * (Jean Johner) with "behave mswin", clicking - on a filename in wide mode opened a new file - with a missing first letter - * (Britton Kerin) wanted netrw listings to be - buflisted; the |g:netrw_bufsettings| option - permits that. - Jun 18, 2010 * (Jan Steffens) added support for xz compression - Jun 23, 2010 * vimdiff dir1 dir2 now works - Jul 27, 2010 * (John Orr) pointed out that the intended maparg - test for gx was actually testing for g rather - than gx. Fixed. - v138: May 01, 2010 * added the bomb setting to the Save-Set-Restore - option handling (for Tony M) - May 14, 2010 * (Bram Moolenaar) netrw optionally sets cursorline - (and sometimes cursorcolumn) for its display. - This option setting was leaking through with - remote file handling. - v137: Dec 28, 2009 * modified the preview window handling for - vertically split windows. The preview - window will take up all but g:netrw_winsize - columns of the original window; those - g:netrw_winsize columns will be used for - the netrw listing. - * (Simon Dambe) removed "~" from - |g:netrw_glob_escape| under Windows - * (Bram Moolenaar) modified test for status bar - click with leftmouse. Moved code to - s:NetrwLeftmouse(). - Feb 24, 2010 * (for Jean Johner) added insert-mode maps; one - can get into insert mode with netrw via - ctrl-o :e . - Mar 15, 2010 * (Dominique Pellé) Directory with backslashes such - as foo\bar were not being entered/left properly - Mar 15, 2010 * Using :Explore .. and causing two FocusGained - events caused the directory to change. Fixed. - Mar 22, 2010 * Last fix caused problems for *//pat and */filepat - searches. - Mar 30, 2010 * With :set hidden and changing listing styles 8 - times, the tree listing buffer was being marked - as modified upon exit. Fixed. - v136: Jan 14, 2009 * extended |g:Netrw_funcref| to also handle lists - of function references - Jan 14, 2009 * (reported by Marvin Renich) with spell check - enabled, some filenamess will still being - displayed as spelling errors. - Apr 13, 2009 * (Björn Winckler) writing a file using - remote scp caused syntax highlighting problem. - Solution: avoid syntax/syntax.vim's - au Filetype * syntax setting autocommand by - checking that the current buffer has the - netrw filetype before attempting a doau - in s:NetrwSafeOptions(). - Apr 14, 2009 * (asgeo1) suggested the "T" map (|netrw-T|) - Apr 14, 2009 * marking wasn't working on executable and - other special filenames - Apr 20, 2009 * (Dennis Benzinger) files opened via http have - their syntax filetype auto-detected - Jun 19, 2009 * (Yukihiro Nakadaira) help document improvements - Jul 22, 2009 * g:netrw_browse_split will honor the - |'equalalways'| setting. - Jul 29, 2009 * implemented "I" mapping to toggle banner - (this is experimental and still being debugged) - Sep 19, 2009 * (Mike McEwan) writes via ftp now send both - g:netrw_ftpmode and g:netrw_ftpextracmd (if the - latter exists) - Dec 02, 2009 * netrw uses vimgrep several places; it now uses - "noautocmd vimgrep" (should be speedier). - Dec 03, 2009 * changed back to using -source instead of -dump - for elinks-using commands. (requested by James - Vega and Karsten Hopp) - v135: Oct 29, 2008 * using |simplify()| on directory names - (supporting handling ".."s in directory names) - Oct 31, 2008 * added special file highlighting for core dumps - under Unix/Linux. The default sorting sequence - now also gives core dumps priority. - Nov 10, 2008 * uses a call to netrw#Nread() instead of Nread - to avoid having to use fnameescape() - * fixed a tree redrawing problem (open directory, - open subdir, close subdir, close dir) - Nov 19, 2008 * sprinkled some histdel("/",-1)s through the code - in an attempt to prevent netrw from changing - the search history. - Jan 02, 2009 * |g:Netrw_funcref| included - Jan 05, 2009 * Explore */ **/ *// **// all clear explorer - variables - Jan 05, 2009 * (Panagiotis Louridas) extended s:WinPath() - to remove cygdrive from non-cygwin Windows - paths. Improved the determination as to - whether or not to do so. - Jan 13, 2009 * included contains=@NoSpell in every syntax - group for syntax/netrw.vim . - v134: Sep 30, 2008 * (Sander Marechal) provided a bugfix involving - the use of the |netrw-t| command with a remote - directory. - Sep 30, 2008 * using "x" on a remote jpg was failing; fixed. - Oct 03, 2008 * bookmarks now go on a list and are stored to - the first directory on the |'runtimepath'| in - the hopes of making their retention reliable. - History now also goes to that directory. - Oct 07, 2008 * Included check that vim 7.0 or later is in use. - Oct 07, 2008 * Improved |g:netrw_retmap| handling. - Oct 12, 2008 * Based upon Sébastien Migniot's suggestion, if - cadaver isn't available then netrw will try to - use curl for the dav://... protocol. - Oct 13, 2008 * added @*/ to netrw buffers' |'iskeyword'|setting - This lets mf (|netrw-mf|) mark directories, links - and executables. - Oct 13, 2008 * avoids a second NetrwBrowse() refresh when - g:netrw_fastbrowse is <= 1 (slow, medium speed) - Oct 22, 2008 * |g:netrw_http_xcmd| may now be overridden - independently of |g:netrw_http_cmd|. - Oct 23, 2008 * [N] added to the various Explore commands to - let users specify the width/height of new - explorer windows, overriding |g:netrw_winsize|. - v133: Aug 10, 2008 * NetReadFixup() for win95 was missing some "a:"s - Aug 12, 2008 * (Jan Minář) an error condition in NetrwMethod() - wasn't being used, resulting in "b:netrw_fname - undefined" errors - Aug 12, 2008 * (François Ingeirest) asked that "hi link" be - changed to hi default link in the netrw syntax - files. - Aug 12, 2008 * using s:NetrwUnmarkList() more often. Filenames - were being left on the global list when removed - from the buffer-local lists. - Aug 14, 2008 * (Joshua Clayton) an errant extra ")" was left in - the rcp-handling portion of NetRead(). - Sep 03, 2008 * added |'cursorline'| highlighting to thin, long, - and tree displays. - v132: Aug 06, 2008 * Fixed marked file-based obtain - Aug 08, 2008 * sourcing a file via ftp from a netrw-generated - buffer (or any buffer with |'nobl'|) left an - empty no-name buffer in its wake. Fixed. - v130: Jul 31, 2008 * trying out elinks/links for http://host/ - requests. One problem: in-page links - (such as with ...#LABEL) are not supported - * verified that Bram's modified netrwPlugin works - Aug 01, 2008 * fixed a bug: when sourcing a file via ftp, the - "filter window" was left behind. - v129: Jul 31, 2008 * bug found in non-mouse enabled vim and some - local maps - v128: Jul 30, 2008 * much work done in using shellescape() and - fnameescape() - v126: Jun 30, 2008 * after having gone to a remote directory, - <f1> was no longer taking one to the correct - entry in the help (|netrw-quickhelp|). Fixed. - Jul 01, 2008 * extracting the last filename from a wide listing - missed the last letter when |'virtualedit'| not - enabled. - Jul 01, 2008 * vim foo/bar was creating [Scratch] buffers, - where bar was also a directory - Jul 01, 2008 * numerous additional changes were made to netrw - to use fnameescape() and shellescape() instead - of escape(). Not all changes have been tested - as yet... - Jul 01, 2008 * (James Vega reported) some problems with - :NetrwSettings (due to no longer used setting - variables). - Jul 07, 2008 * Additional numerous changes to support security; - shellescape(arg,1), etc. - v125: Apr 07, 2008 * (Cristian Rigamonti) CR provides a patch; he - noted that gx was failing since its call to - netrw#NetBrowseX() wasn't updated to - netrw#NetrwBrowseX(). - * (Stanis Trendelenburg) ST provides a patch to - supports davs: (dav + ssl) - * (Rick Choi) noted that directory names comprised - of three digits were not being displayed by - the internal browser. Fixed. - * (Erik Falor) provided a patch to handle problems - with changing directory and |'acd'| option. - * (James Vega, Teemu Likonen) noted that netrw - wasn't handling multi-byte filenames/directories - correctly. Fixed. - * (Rick) found problem with g:netrw_maxfilenamelen - being overridden. - * (James Vega) pointed out that netrw was - misidentifying all files in a symbolically linked - directory as being symbolically linked - themselves. This particular problem was fixed; - however, there are now situations where - symbolically linked files will not be detected. - Really need an internal vim function to do this - identification. - Apr 17, 2008 * When g:netrw_keepdir==0, current directory - doesn't necessarily equal b:netrw_curdir - initially. Problem is due to the patch directly - above. - * Fixed qf to handle case where b:netrw_curdir - isn't the same as the current directory under - linux/macosx. - * New: |netrw-mg| (apply vimgrep to marked files) - May 05, 2008 * (Rick) pointed out that a "setlocal ts=32" was - interfering with g:netrw_maxfilenamelen - May 05, 2008 * (James Vega) a file inside a linked directory - was showing up as a symbolic link itself. - May 22, 2008 * symbolic links, fifos, and sockets are now - indicated by a trailing @, |, or =, respectively. - Jun 06, 2008 * Removed numerous bugs from the marked file - move and copy. Tested these changes under - Unix only thus far. - * :Rexplore returns to the screen position in the - netrw listing from whence the file was edited - v124: Apr 02, 2008 * (Adrian Rollett) change the line supporting the - "x" action for mac to use g:netrw_shq - v123: Feb 27, 2008 * Marked files now keeps a "global" marked file - list. The global marked file list is used to - support tag processing and vimdiff'ing - (|netrw-md| |netrw-mt|) - * Been insuring that mm and mc works with various - combinations of local and remote directories - * (Stefan Bittner) http://.../ should always have - filetype "html" -- fixed. - * (Stefan Bittner) a "?" in a http://.../ request - wasn't being handled correctly. Fixed by - removing ? from default |g:netrw_tmpfile_escape|. - * (Nico Weber) % codes in http://.../ requests - weren't being handled correctly. Fixed by - including % in default |g:netrw_fname_escape|. - * (Stefan Bittner) attempts to update Buffers.Refresh - were failing because locale use changed the menu - names. I implemented a workaround. - v122: Feb 12, 2008 * bugfix - first sorting sequence match now has - priority - Feb 14, 2008 * bugfix - sorting sequence was effectively ignoring - sequencing priority of anything following '*' - * toggling a marked file was showing incorrect list - (list was correct, but displayed matches weren't) - * |g:netrw_special_syntax| implemented - v121: Feb 11, 2008 * Bram M reported that :e file ... :e . would not - retain the alternate file. Fixed -- I hope! - * bugfix -- apparently v120 broke an explicit - :Explore dirname - v120: Jan 21, 2008 * |netrw-mt| changed to allow for target selection - based on whether or not word under cursor is a - directory or file, or if cursor is in banner - area. - * |netrw-mh| included (hiding by marked-file suffix) - * functions moved about a bit (improved - categorization) - * executable files now displayed with trailing (*) - * symbolically linked files now displayed with - trailing (@) - * Somewhen, s:NetrwMarkFileMove() got damaged. It - * is now restored (missing an endif, for example). - * |netrw-mu| implemented (unmarking marked files) - * many bugs have been removed from the marked file - system (tnx to Mark S. for feedback) - * |netrw-ms| implemented (sourcing marked files) - * fixed use of P with tree listing style - * multiple tree listing now supported - * ./ suppressed - * changed q -> qb (query bookmarks) - * implemented |netrw-qf| - * Explore now has four special list-generation - modes: */filepat **/filepat - *//pattern **//pattern - * gh (|netrw-gh|) is a shortcut for toggling the - hiding of files and directories beginning with a - dot - v119: Jan 10, 2008 * When g:netrw_keepdir is false, - NetrwOptionsRestore() had a problem - (Bill McCarthy) - Jan 11, 2008 * Netrw now shows symbolic links with a trailing - "@" and special highlighting. - Jan 15, 2008 * Changed g:netrw_noretmap -> |g:netrw_retmap|. - Changed: disabled by default at Bram's - preference. - v118: Jan 02, 2008 * Fixed a problem with Windows; - :Explore c:/path/ would not work, - but :Explore c:/path would. - * Fixed a bug in s:NetrwOptionRestore() - lcd's - argument wasn't being properly escaped so it - wouldn't handle spaces in directory names. - (Gary Johnson) - v117: Jan 02, 2008 * Fixed a problem with P; had to include - a b:netrw_curdir bypass (Bram Moolenaar) - v116: Nov 27, 2007 * netrw#LocalBrowseCheck() has &ft=="netrw" - check to prevent doing a directory listing - (was getting unexpected directory refreshes - in the middle of some function calls) - * NetrwOptionRestore moved after e! filename - in order to retain user options for editing - in s:NetrwBrowseChgDir() - Dec 12, 2007 * Bug fix -- netrw does a better job of retaining - user options when editing files under the aegis - of the browser - v115: Oct 04, 2007 * Erik Remmelzwaal pointed out that the use of - shellslash in s:GetTempfile() was incorrect - Oct 11, 2007 * Tracked down and eliminated a bug with editing - remote *.tar.gz and *.tar.bz2 files - Oct 11, 2007 * g:netrw_localmovecmd wasn't being initialized - properly, and g:netrw_localcopycmd was being - overwritten. - Oct 12, 2007 * Placed all :Rexplore and <2-leftmouse> setup - in a new support function (s:SetRexDir()). - Oct 15, 2007 * new: g:netrw_browse_split == 4; means <cr> - based selection will use previous window - Oct 20, 2007 * also checks on |'shellxquote'| to set g:netrw_shq - Oct 24, 2007 * Explore handles path/**/filename - Oct 27, 2007 * sourcing remote files often didn't work with ftp, - turns out that b:netrw_method was undefined, so - s:SaveBufVars and s:RestoreBufVars() fixed it. - v114: Sep 28, 2007 * mT, the map that invokes tags, has been improved - to support use of remote tags files. - Oct 02, 2007 * changed Netrw menu to use more submenus - v113: Sep 07, 2007 * worked out why the cursor position wasn't being - saved and restored as intended after doing such - things as deleting and renaming files. - Sep 11, 2007 * Fixed bug which effectively disabled <c-l> and - <c-h> maps - Sep 18, 2007 * there used to be one NetrwOptionRestore() call at - the end of the s:NetrwBrowseChgDir() function; - they're now at the end of every if..elseif..else - block. The edit-a-file one is not quite at the end - of its block; instead, it's just before the edit. - Restores user options, then this new placement - allows ftplugins, autocmds, etc to change settings - (ex. ftplugin/cpp.vim sets cindent). - Sep 19, 2007 * changed all strlen() calls to use s:Strlen(), a - function which handles utf-8 wide characters - correctly. - Sep 20, 2007 * (Nico Weber) the "x" command has been extended - to Mac's OS/X (macunix); it now uses open to - handle |netrw-x| browsing with special files. - Sep 22, 2007 * Added g:netrw_noretmap to netrw at Tony M's - request. - * Included path to NetrwRemoteRmFile() - v112: Aug 18, 2007 * added mx (|netrw-mx|) for executing arbitrary - commands on marked files - Aug 22, 2007 * more option save/restore work for - s:NetrwBrowseChgDir(); s:NetrwOptionSave() - and s:NetrwOptionRestore() now take a parameter - specifying the type of variables to be used for - saving and restoring (either "w:" or "s:") - Sep 04, 2007 * added the :NetrwClean[!] command - v111: Jul 25, 2007 * using Windows but not using Cygwin, netrw does a - "file bufname" where the bufname uses /s - instead of \s; Vim "fixes" it by changing the - bufname to use \s anyway. This meant that - NetrwGetBuffer() didn't find the appropriately - named buffer, and so would generate a new - buffer listing; hence the cursor would appear - to have been moved when doing a preview. - * added <2-leftmouse> map to return to netrw's - browser display - Aug 16, 2007 * added the mark-file system, including - maps for mf mp mt mz and mu. Modifications - made to maps for a D O and R to support - marked files. - v110: May 10, 2007 * added [ and ] maps to NetrwTreeListing - May 25, 2007 * |g:netrw_preview| included - May 29, 2007 * modified netrw#NetBrowseX to consistently use - g:netrw_shq instead of hardcoded quotes, - and modified the snippet that sets up redir - so Windows machines use "nul" instead of - "/dev/null". - Jun 01, 2007 * fixed bug -- NetGetBuffer() wasn't always - recognizing a buffer name match when it should, - thus resulting in [Scratch] buffers. - Jun 04, 2007 * Gary Johnson found a bugfix for the "c" mapping - when the directory is to be made current but - the name contains spaces. - v109: Mar 26, 2007 * if a directory name includes a "$" character, - Explore() will use expand() in an attempt to - decipher the name. - May 07, 2007 * g:netrw_use_errorwindow now allows one to - have error messages go to a reliable window - or to use a less reliable but recallable - echoerr method - May 07, 2007 * g:netrw_scpport and g:netrw_sshport support - use of -P and -p, respectively, to set port - for scp/ssh. - v108: Jan 03, 2007 * included preview map (|netrw-p|), supporting - remote browsing - * netrw can now source remote files - Jan 26, 2007 * Colton Jamieson noted that remote directory - browsing did not support alternate port - selection. This feature has now been extended - to apply to all remote browsing commands via ssh. - (list, remove/delete, rename) - Jan 31, 2007 * Luis Florit reported that @* was an invalid - register. The @* register is now only saved and - restored if |'guioptions'| contains "a". - Feb 02, 2007 * Fixed a bug that cropped up when writing files - via scp using cygwin - Feb 08, 2007 * tree listing mode managed to stop working again; - fixed again! - Feb 15, 2007 * Guido Van Hoecke reported that netrw didn't - handle browsing well with M$ ftp servers. He even - set up a temporary account for me to test with - (thanks!). Netrw now can browse M$ ftp servers. - v107: Oct 12, 2006 * bypassed the autowrite option - Oct 24, 2006 * handles automatic decompression of *.gz and *.bz2 - files - Nov 03, 2006 * Explore will highlight matching files when - **/pattern is used (and if the |'hls'| option - is set) - Nov 09, 2006 * a debugging line, when enabled, was inadvertently - bringing up help instead of simply reporting on - list contents - Nov 21, 2006 * tree listing improved (cursor remains put) - Nov 27, 2006 * fixed b:netrw_curdir bug when repeated "i"s were - pressed. - Dec 15, 2006 * considerable qty of changes, mostly to share more - code between local and remote browsing. Includes - support for tree-style listing for both remote - and local browsing. - Dec 15, 2006 * Included Peter Bengtsson's modifications to - support the Amiga. - v106: Sep 21, 2006 * removed old v:version<700 code as netrw now - requires vim 7.0 - * worked around a bug where register * was - overwritten during local browsing - v104: Sep 05, 2006 * as suggested by Rodolfo Borges, :Explore and - variants will position the cursor on the file - just having been edited - * changed default |g:netrw_sort_sequence| order - * changed b, Nb to simply mb (see |netrw-mb|) - * changed B, NB to simply gb (see |netrw-gb|) - * tree listing style (see |g:netrw_liststyle|) - * attempts to retain the alternate file - v103: Jul 26, 2006 * used Yakov Lerner's tip#1289 to improve netrw - error message display - * wide listings didn't handle files with backslashes - in their names properly. A symptom was an - inability to open files. - Aug 09, 2006 * included "t" mapping for opening tabbed windows, - both for remote and local browsing - * changed netrw_longlist to netrw_liststyle - Aug 15, 2006 * fixed one of the NB maps - Aug 22, 2006 * changed *Explore commands to use -nargs=* instead - of -nargs=?. Allows both -complete=dir _and_ the - starstar arguments to work (-nargs=? seems to - require one or the other). - Aug 23, 2006 * copied all w:.. variables across splits to - new windows - Aug 25, 2006 * when g:netrw_browsex_viewer was '-' - (see |g:netrw_browsex_viewer|) it wasn't causing - netrwFileHandlers#Invoke() to be called as it - was expected to. (tnx Steve Dugaro) - Aug 29, 2006 * changed NetBrowseX() to use "setlocal ... noswf" - instead of "set ... noswf" (tnx Benji Fisher) - Aug 31, 2006 * tabs and fastbrowse<=1 didn't work together. - v102: Jun 15, 2006 * chgd netrwPlugin to call netrw#LocalBrowseCheck() - * bugfix: g:netrw_keepdir==0 had stopped working - Jul 06, 2006 * bugfix: NetOptionSave/Restore now saves/restores - the unnamed register (|registers|) - Jul 07, 2006 * |g:netrw_menu| support included - Jul 13, 2006 * :Texplore command implemented - Jul 17, 2006 * NetSplit and (Local|Net)BrowseChgDir() were both - splitting windows. This affected o, v, and - g:netrw_browse_split. - Jul 20, 2006 * works around wildignore setting (was causing - netrw's local browser not to list wildignore'd - files) - Jul 24, 2006 * <leftmouse> acts as a <cr> for selecting a file - <rightmouse> acts as a <del> for deleting a file - v100: May 14, 2006 * when using Windows and shell==cmd.exe, the - default for g:netrw_ignorenetrc is now 1 - * bugfix: unwanted ^Ms now removed - (affected shell==cmd.exe - Windows) - * added Bookmarks and History to the menu - * an error message about non-existing - w:netrw_longlist was appearing during attempts to - Explore (fixed) - * g:netrw_shq now available to make netrw use - specified style of quotes for commands - May 29, 2006 * user NFH_*() functions were inadvertently being - ignored - * fixed a Windows non-cygwin ftp handling problem. - * hiding pattern candidate separators included some - characters it shouldn't have (tnx to Osei Poku) - Jun 01, 2006 * for browsing, netrw was supposed to use "dir" - instead of "ls -lF" when using - ftp+non-cygwin+windows. Fixed. - * an inadvertently left-in-place debugging statement - was preventing use of the "x" key with browsing. - Jun 05, 2006 * g:netrw_nogx available to prevent making the gx - map (see |g:netrw_nogx|) - * bugfix, Explore wouldn't change directory - properly (vim ., :Explore subdirname) - Jun 06, 2006 * moved history to 2nd line in Netrw menu - * fixed delete for unix-based systems - Jun 07, 2006 * x key now works for windows-noncygwin-ftp - Jun 08, 2006 * Explore */pat and **//pat now wraps - v99: May 09, 2006 * g:netrw_browse_split=3 for opening files in new - tabs implemented. - May 12, 2006 * deletes temporary file at end of NetRead() - * visual mode based Obtain implemented - * added -complete=dir to the various Explore - commands - v98: May 02, 2006 * the "p" key didn't work properly when the browsing - directory name had spaces in it. - v97: May 01, 2006 * exists("&acd") now used to determine if - the 'acd' option exists - * "obtain" now works again under Windows - v96: * bugfix - the |'acd'| option is not always defined - but is now bypassed only when it is - v95: * bugfix - Hiding mode worked correctly (don't show - any file matching any of the g:netrw_hide - patterns), but showing mode was showing only those - files that didn't match any of the g:netrw_hide - patterns. Instead, it now shows all files that - match any of the g:netrw_hide patterns (the - difference between a logical and and logical or). - v94: * bugfix - a Decho() had a missing quote; only - affects things when debugging was enabled. - v93: * bugfix - removed FocusGained event from causing a - slow-browser refresh for Windows - v92: * :Explore **//pattern implemented - (**/filepattern was already taken) - v91: * :Explore */pattern implemented - * |'acd'| option bypassed - v90: * mark ', as suggested by Yegappan Lakshmanan, used - to help guarantee entry into the jump list when - appropriate. - * <s-down> and <s-up> are no longer defined until a - :Explore **/pattern is used (if the user already - has a map for them). They will be defined for new - browser windows from that point forward. - v89: * A <s-down>, <s-up>, :Nexplore, or a :Pexplore - without having first done an :Explore **/pattern - (see |netrw-starstar|) caused - a lot of unhelpful error messages to appear - v88: * moved DrChip.Netrw menu to Netrw. Now has - priority 80 by default. - g:NetrwTopLvlMenu == "Netrw" and can be changed - by the user to suit. The priority is given by - g:NetrwMenuPriority. - * Changed filetype for browser displays from - netrwlist to netrw. - v87: * bug fix -- menus were partially disappearing - v85: * bug fix -- missing an endif - * bug fix -- handles spaces in names and directories - when using ftp-based browsing - v83: * disabled stop-acd handling; the change in directory - handling may allow acd to be used again. - * D was refusing to delete remote files/directories - in wide listing mode. - v81: * FocusGained also used to refresh/wipe local browser - directory buffers - * (bugfix) netrw was leaving [Scratch] buffers behind - when the user had the "hidden" option set. The - 'hidden' option is now bypassed. - v80: * ShellCmdPost event used in conjunction with - g:netrw_fastbrowse to refresh/wipe local browser - directory buffers. - v79: * directories are now displayed with nowrap - * (bugfix) if the column width was smaller than the - largest file's name, then netrw would hang when - using wide-listing mode - fixed - * g:netrw_fastbrowse introduced - v78: * progress has been made on allowing spaces inside - directory names for remote work (reading, writing, - browsing). (scp) - v77: * Mikolaj Machowski fixed a bug in a substitute cmd - * g:netrw_browsex_viewer implemented - * Mikolaj Machowski pointed out that gnome-open is - often executable under KDE systems, although it is - effectively not functional. NetBrowseX now looks - for "kicker" as a running process to determine if - KDE is actually running. - * Explorer's O functionality was inadvertently left - out. Netrw now does the same thing, but with the - "P" key. - * added g:netrw_browse_split option - * fixed a bug where the directory contained a "." but - the file didn't (was treating the dirname from "." - onwards as a suffix) - v76: * "directory is missing" error message now restores - echo highlighting - v75: * file://... now conforms to RFC2396 (thanks to - S. Zacchiroli) - * if the binary option is set, then NetWrite() will - only write the whole file (line numbers don't make - sense with this). Supports writing of tar and zip - files. - v74: * bugfix (vim, then :Explore) now works - * ctrl-L keeps cursor at same screen location (both - local and remote browsing) - * netrw now can read remote zip and tar files - * Obtain now uses WinXP ftp+.netrc successfully - v73: * bugfix -- scp://host/path/file was getting named - incorrectly - * netrw detects use of earlier-than-7.0 version of - vim and issues a pertinent error message. - * netrwSettings.vim is now uses autoloading. Only - <netrwPlugin.vim> is needed as a pure plugin - (ie. always loaded). - v72: * bugfix -- formerly, one could prevent the loading - of netrw by "let g:loaded_netrw=1"; when - autoloading became supported, this feature was - lost. It is now restored. - v71: * bugfix -- made some "set nomodifiable"s into - setlocal variants (allows :e somenewfile to be - modifiable as usual) - * NetrwSettings calls a netrw function, thereby - assuring that netrw has loaded. However, if netrw - does not load for whatever reason, then - NetrwSettings will now issue a warning message. - * For what reason I don't recall, when wget and fetch - are both not present, and an attempt to read a - http://... url is made, netrw exited. It now only - returns. - * When ch=1, on the second and subsequent uses of - browsing Netrw would issue a blank line to clear - the echo'd messages. This caused an annoying - "Hit-Enter" prompt; now a blank line message - is echo'd only if &ch>1. - v70: * when using |netrw-O|, the "Obtaining filename" - message is now shown using |hl-User9|. If User9 - has not been defined, netrw itself will define it. - v69: * Bugfix: win95/98 machines were experiencing a - "E121: Undefined variable: g:netrw_win95ftp" - message - v68: * double-click-leftmouse selects word under mouse - v67: * Passwords which contain blanks will now be - surrounded by double-quotes automatically (Yongwei) - v66: * Netrw now seems to work with a few more Windows - situations - * O now obtains a file: remote browsing - file -> local copy, locally browsing - file -> current directory (see :pwd) - * i now cycles between thin, long, and wide listing - styles - * NB and Nb are maps that are always available; - corresponding B and b maps are only available when - not using wide listing in order to allow them to - be used for motions - v65: * Browser functions now use NetOptionSave/Restore; in - particular, netrw now works around the report - setting - v64: * Bugfix - browsing a "/" directory (Unix) yielded - buffers named "[Scratch]" instead of "/" - * Bugfix - remote browsing with ftp was omitting - the ./ and ../ - v63: * netrw now takes advantage of autoload (needs 7.0) - * Bugfix - using r (to reverse sort) working again - v62: * Bugfix - spaces allowed again in directory names - with g:netrw_keepdir=0. In fact, I've tested netrw - with most ANSI punctuation marks for directory - names. - * Bugfix - NetrwSettings gave errors when - g:netrw_silent had not be set. - v61: * Document upgrade -- netrw variable-based settings - all should have tags. Supports NetrwSettings cmd. - * Several important variables are window-oriented. - Netrw has to transfer these across a window split. - See s:BufWinVars() and s:UseBufWinVars(). - v60: * When using the i map to switch between long and - short listings, netrw will now keep cursor on same - line - * "Match # of #" now uses status line - * :Explore **/*.c will now work from a - non-netrw-browser window - * :Explore **/patterns can now be run in separate - browser windows - * active banner (hit <cr> will cause various things - to happen) - v59: * bugfix -- another keepalt work-around installed - (for vim6.3) - * "Match # of #" for Explore **/pattern matches - v58: * Explore and relatives can now handle - **/somefilepattern (v7) - * Nexplore and Pexplore introduced (v7). shift-down - and shift-up cursor keys will invoke Nexplore and - Pexplore, respectively. - * bug fixed with o and v - * autochdir only worked around for vim when it has - been compiled with either - |+netbeans_intg| or |+sun_workshop| - * Under Windows, all directories and files were - being preceded with a "/" when local browsing. - Fixed. - * When: syntax highlighting is off, laststatus=2, and - remote browsing is used, sometimes the laststatus - highlighting bleeds into the entire display. Work - around - do an extra redraw in that case. - * Bugfix: when g:netrw_keepdir=0, due to re-use of - buffers, netrw didn't change the directory when it - should've - * Bugfix: D and R commands work again - v57: * Explore and relatives can now handle RO files - * reverse sort restored with vim7's sort command - * g:netrw_keepdir now being used to keep the current - directory unchanged as intended (sense change) - * vim 6.3 still supported - v56: * LocalBrowse now saves autochdir setting, unsets it, - and restores it before returning. - * using vim's rename() instead of system + - local_rename variable - * avoids changing directory when g:netrw_keepdir is - false - v55: * -bar used with :Explore :Sexplore etc to allow - multiple commands to be separated by |s - * browser listings now use the "nowrap" option - * browser: some unuseful error messages now - suppressed - v54: * For backwards compatibility, Explore and Sexplore - have been implemented. In addition, Hexplore and - Vexplore commands are available, too. - * <amatch> used instead of <afile> in the - transparency support (BufReadCmd, FileReadCmd, - FileWriteCmd) - * ***netrw*** prepended to various error messages - netrw may emit - * g:netrw_port used instead of b:netrw_port for scp - * any leading [:#] is removed from port numbers - v53: * backslashes as well as slashes placed in various - patterns (ex. g:netrw_sort_sequence) to better - support Windows - v52: * nonumber'ing now set for browsing buffers - * when the hiding list hid all files, error messages - ensued. Fixed - * when browsing, swf is set, but directory is not - set, when netrw was attempting to restore options, - vim wanted to save a swapfile to a local directory - using an url-style path. Fixed - v51: * cygwin detection now automated - (using windows and &shell is bash) - * customizable browser "file" rejection patterns - * directory history - * :[range]w url now supported (ie. netrw uses a - FileWriteCmd event) - * error messages have a "Press <cr> to continue" to - allow them to be seen - * directory browser displays no longer bother the - swapfile - * u/U commands to go up and down the history stack - * history stack may be saved with viminfo with it's - "!" option - * bugfixes associated with unwanted [No Files] - entries - v50: * directories now displayed using buftype=nofile; - should keep the directory names as-is - * attempts to remove empty "[No File]" buffers - leftover from :file ..name.. commands - * bugfix: a "caps-lock" editing difficulty left in - v49 was fixed - * syntax highlighting for "Showing:" the hiding list - included - * bookmarks can now be retained if "!" is in the - viminfo option - v49: * will use ftp for http://.../ browsing - v48: * One may use ftp to do remote host file browsing - * (windows and !cygwin) remote browsing with ftp can - now use the "dir" command internally to provide - listings - * g:netrw_keepdir now allows one to keep the initial - current directory as the current directory - (normally the local file browser makes the - currently viewed directory the current directory) - * g:netrw_alto and g:netrw_altv now support - alternate placement of windows started with o or v - * Nread ? and Nwrite ? now uses echomsg (instead of - echo) so :messages can repeat showing the help - * bugfix: avoids problems with partial matches of - directory names to prior buffers with longer names - * one can suppress error messages with g:netrw_quiet - ctrl-h used - * instead of <Leader>h for editing hiding list one - may edit the sorting sequence with the S map, which - now allows confirmation of deletion with - [y(es) n(o) a(ll) q(uit)] - * the "x" map now handles special file viewing with: - (windows) rundll32 url.dll (gnome) gnome-open (kde) - kfmclient If none of these are on the executable - path, then netrwFileHandlers.vim is used. - * directory bookmarking during both local and remote - browsing implemented - * one may view all, use the hiding list to suppress, - or use the hiding list to show-only remote and - local file/directory listings - * improved unusual file and directory name handling - preview window support - v47: * now handles local browsing. - v46: * now handles remote browsing - * g:netrw_silent (if 1) will cause all transfers to - be silent - v45: * made the [user@]hostname:path form a bit more - restrictive to better handle errors in using - protocols (e.g. scp:usr@host:file was being - recognized as an rcp request) - v44: * changed from "rsync -a" to just "rsync" - * somehow an editing error messed up the test to - recognize use of the fetch method for NetRead. - * more debugging statements included - v43: * moved "Explanation" comments to <pi_netrw.txt> help - file as "Network Reference" (|netrw-ref|) - * <netrw.vim> now uses Dfunc() Decho() and Dret() for - debugging - * removed superfluous NetRestorePosn() calls - v42: * now does BufReadPre and BufReadPost events on - file:///* and file://localhost/* - v41: * installed file:///* and file://localhost/* handling - v40: * prevents redraw when a protocol error occurs so - that the user may see it - v39: * sftp support - v38: * Now uses NetRestorePosn() calls with Nread/Nwrite - commands - * Temporary files now removed via bwipe! instead of - bwipe (thanks to Dave Roberts) - v37: * Claar's modifications which test if ftp is - successful, otherwise give an error message - * After a read, the alternate file was pointing to - the temp file. The temp file buffer is now wiped - out. - * removed silent from transfer methods so user can - see what's happening - - -============================================================================== -13. Todo *netrw-todo* {{{1 - -07/29/09 : banner :|g:netrw_banner| can be used to suppress the - suppression banner. This feature is new and experimental, - so its in the process of being debugged. -09/04/09 : "gp" : See if it can be made to work for remote systems. - : See if it can be made to work with marked files. - -============================================================================== -14. クレジット *netrw-credits* {{{1 - - Vim editor by Bram Moolenaar (Thanks, Bram!) - dav support by C Campbell - fetch support by Bram Moolenaar and C Campbell - ftp support by C Campbell <NdrOchip@ScampbellPfamily.AbizM> - http support by Bram Moolenaar <bram@moolenaar.net> - rcp - rsync support by C Campbell (suggested by Erik Warendorph) - scp support by raf <raf@comdyn.com.au> - sftp support by C Campbell - - inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell - - Jérôme Augé -- also using new buffer method with ftp+.netrc - Bram Moolenaar -- obviously vim itself, :e and v:cmdarg use, - fetch,... - Yasuhiro Matsumoto -- pointing out undo+0r problem and a solution - Erik Warendorph -- for several suggestions (g:netrw_..._cmd - variables, rsync etc) - Doug Claar -- modifications to test for success with ftp - operation - -============================================================================== -Modelines: {{{1 - vim:tw=78:ts=8:ft=help:norl:fdm=marker diff --git a/runtime.old/doc/pi_paren.jax b/runtime.old/doc/pi_paren.jax deleted file mode 100644 index da89319b9..000000000 --- a/runtime.old/doc/pi_paren.jax +++ /dev/null @@ -1,58 +0,0 @@ -*pi_paren.txt* For Vim バージョン 7.3. Last change: 2008 Jun 16 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -対応するカッコの強調表示 *matchparen* - -このプラグインは標準プラグイン |standard-plugin| です。 -'compatible' がオフのときだけ利用できます。 - -このプラグインが読み込まれないようにするには変数 "loaded_matchparen" を設定し -てください: > - :let loaded_matchparen = 1 - -このプラグインはオートコマンドイベントの CursorMoved、CursorMovedI、WinEnter -を使って強調表示を再設定します。 - - *:NoMatchParen* *:DoMatchParen* -このプラグインの機能を無効にするには次のコマンドを使います: > - - :NoMatchParen - -機能を有効に戻すには次のコマンドを使います: > - - :DoMatchParen - -強調表示には MatchParen が使われます。":highlight" コマンドを使って好きな色を -設定できます。例: > - - :hi MatchParen ctermbg=blue guibg=lightblue - -オプション 'matchpairs' に設定されている文字が強調表示されます。このオプション -を設定することで好きな文字を強調表示できます。Note: 設定しても機能しない文字も -あります。例えば、シングルクオートやダブルクオートのペアなどは、始点と終点が同 -じなので強調表示できません。 - -対応するカッコを探すときには構文強調の属性が使われます。カーソル位置の文字が、 -文字列やコメント以外のときは、文字列やコメントの中は無視されます。名前に -"string" や comment"が含まれている構文強調アイテムはすべて、文字列やコメントと -して扱われます。 - -カーソルの移動が遅くならないように、対応するカッコの検索には次の制限がありま -す: -- ウィンドウに表示されている範囲だけ検索する。 -- 閉じた折り畳みがあると処理に時間がかかるので、カーソル位置から 100 行以内の - 範囲だけ検索する。 -- 長い行が構文強調表示されていると処理に時間がかかるので、カーソル位置から - 'synmaxcol' の二倍の範囲の文字だけ検索する。 - - -|%| コマンドの動作を改善したい場合は matchit プラグインを使ってください。 -|matchit-install| 参照。このプラグインを使うとコメント内のカッコをスキップする -こともできます。これは matchparen プラグインとの関連性はありません。matchit プ -ラグインは matchparen とは別のメカニズムを使っています。 - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/pi_spec.jax b/runtime.old/doc/pi_spec.jax deleted file mode 100644 index 8b58b1413..000000000 --- a/runtime.old/doc/pi_spec.jax +++ /dev/null @@ -1,109 +0,0 @@ -*pi_spec.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - -by Gustavo Niemeyer ~ - -ここではRPMのspecファイル用のプラグインについて解説する。 - -このプラグインを使用することでRPMのspecファイルの%changelogセクションを簡単に -更新することができる。まだセクションが存在していないならば、プラグインが作成し -てくれる。既に本日分のエントリがあるのならば、プラグインは本日のエントリに新し -い項目を追加する機会を与えてくれる。書式設定文字列(|spec_chglog_format|)を準備 -していないならば、プラグインはemailアドレスをユーザに問い合わせ、そこから書式 -文字列を構築する。 - -1. 使い方 |spec-how-to-use-it| -2. カスタマイズ |spec-customizing| - -============================================================================== -1. 使い方 *spec-how-to-use-it* - -spec_chglogプラグインは以下のようなキーマップを提供する: > - - :map <buffer> <LocalLeader>c <Plug>SpecChangelog -< -これはspecファイルではマップローカルリーダ(デフォルトは'\')に続いて'c'を押すこ -とでプラグインが起動することを意味している。|spec_chglog_format|を設定していな -い場合には、プラグインはユーザにemailアドレスを問い合わせこの編集セッションで -使用する。 - -プラグインを起動するたびに、changelogに本日分の項目が既に書かれているかを -チェックする。そのようなエントリが存在すれば、新しいchangelog項目が追加され、 -存在しない場合には新しいchangelogエントリが作成される。 -|spec_chglog_release_info|を有効化して実行した場合には、名前とバージョンとリ -リースも一致するかが確認される。プラグインは充分に賢いので、パッケージリリース -がアップデートされるべき時にはその旨を訊ねてくるから、ユーザはわざわざそれをす -る必要はない。 - -キーマップ定義 *spec-setting-a-map* --------------- - -既に知っているように、あらゆるVimコマンド(その意味ではあらゆる事が可能)を実行 -するためのキーマップは簡単に定義できる。デフォルトのキーマップ<LocalLeader>cが -気に喰わないならば、独自のキーを設定するのも良いだろう。次はそれをファイル. -vimrcで行なう例で、プラグインを<F5>キーに割り当てている: -> - au FileType spec map <buffer> <F5> <Plug>SpecChangelog -< -NOTE: プラグインはユーザのマッピング変更の要望を尊重するので、再設定は行なわな - い。 - -このコマンドはspecファイルのバッファにのみ適用される。 - - -============================================================================== -2. カスタマイズ *spec-customizing* - -書式設定文字列 *spec_chglog_format* --------------- - -specファイルがどのように表示されるかは簡単にカスタマイズできる。これを行なうに -はファイル.vimrcで次のように変数"spec_chglog_format"を設定する: > - - let spec_chglog_format = "%a %b %d %Y My Name <my@email.com>" - -"%a %b %d %Y"はもっとも頻繁に使用される時刻の書式であることに注意。書式文字列 -を準備していなければ、SpecChangelogコマンドを最初に実行した時に、ユーザにemail -アドレスを問い合わせアドレスから自動的に|spec_chglog_format|を構築する。この方 -法でユーザは一度emailアドレスを設定するだけで済む。 - -どのような書式を使うことができるのかを知るには、strftime()関数のマニュアルペー -ジを参照する。 -(訳注: |strftime()|も参照) - -新規項目の挿入箇所 *spec_chglog_prepend* ------------------- - -プラグインは通常新しい%changelogエントリの項目(エントリそのものではないこと -に注意)を、既に存在するものの後に挿入しようとする。変数spec_chglog_prependを設 -定すれば: > - - let spec_chglog_prepend = 1 - -既に存在するものの前に新規項目を挿入するようになる。 - -リリース情報の挿入 *spec_chglog_release_info* ------------------- - -望むのならば、プラグインはchangelogエントリごとのリリース情報を自動的に挿入す -ることができる。この機能を利用することの利点の1つは、最後の変更の後にリリース -を更新すべきかそうでないかをコントールできることである。パッケージのバージョン -かリリースを更新していない時には、パッケージリリースを更新すべきならばその旨を -ユーザに問い合わせてくれる。この機能を利用するには、.vimrcに次のコードを書き加 -える: > - - let spec_chglog_release_info = 1 - -こうすれば、changelogエントリの最初の項目が次のようなものの場合に問い合わせが -発生する: - - + name-1.0-1cl - -リリース更新機能が気に入らず、古いリリースを検出するたびに毎回"No"と答えるのに -嫌気が差したならば、次のようにして無効化できる: > - - let spec_chglog_never_increase_release = 1 - - -幸運を!! - -vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/pi_tar.jax b/runtime.old/doc/pi_tar.jax deleted file mode 100644 index bb6703dcf..000000000 --- a/runtime.old/doc/pi_tar.jax +++ /dev/null @@ -1,126 +0,0 @@ -*pi_tar.txt* For Vim バージョン 7.3. Last change: 2011 May 31 - - +====================+ - | Tar File Interface | - +====================+ - -Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> - (remove NOSPAM from Campbell's email first) -Copyright 2005-2010: The GPL (gnu public license) applies to *tar-copyright* - tar.vim, tarPlugin.vim, and pi_tar.txt. - No warranty, express or implied. Use At-Your-Own-Risk. - -============================================================================== -1. 目次 *tar* *tar-contents* - 1. 目次......................................................|tar-contents| - 2. 使い方....................................................|tar-usage| - 3. オプション................................................|tar-options| - 4. 開発履歴..................................................|tar-history| - -============================================================================== -2. 使い方 *tar-usage* *tar-manual* - - tar ファイルを開くと、このプラグインが動作し、ファイル一覧が表示されます。 - カーソルを動かして、開きたいファイルを選択し、<return> キーを押してくださ - い。編集後に保存することもできます。tar ファイルに新しいファイルを追加する - ことはまだできません。 - - *:Vimuntar* - VIMUNTAR~ - - :Vimuntar [vimhome] - - このコマンドは (必要なら) tarball を .vim または vimfiles ディレクトリ - にコピーします。 [vimhome] が指定されていなければ 'runtimepath' の最初 - の書き込み可能なディレクトリにコピーされます。 [vimhome] が指定されて - いればそのディレクトリが使われます。 - - コピーには *g:tar_copycmd* に指定されたコマンドが使用されます。初期設 - 定は: > - cp for cygwin, unix, macunix - copy for windows (32, 95, 64, 16) -< ファイルの展開には *g:tar_extractcmd* で指定されたコマンドが使用されま - す。初期設定は: > - "tar -xf" -< - ロードの無効化~ - - もしなんらかの理由で tar ファイルを vim で開きたくない場合は、次の二つの変 - 数を <.vimrc> ファイルで設定すると、tar プラグインはロードされなくなります: -> - let g:loaded_tarPlugin= 1 - let g:loaded_tar = 1 -< - -============================================================================== -3. オプション *tar-options* - - これらの変数を <.vimrc> ファイルなどで設定してください。 - 変数 初期設定 説明 - *g:tar_browseoptions* "Ptf" ファイル一覧を取得するときに使われる - *g:tar_readoptions* "OPxf" tar ファイルを展開するときに使われる - *g:tar_cmd* "tar" tar プログラムの名前 - *g:tar_nomax* 0 trueならファイルウィンドウが最大化されない - *g:tar_secure* undef 変数が存在する場合: - "--" を使って、ファイル名がオプション - 指定として解釈されるのを防ぎます。 - tar コマンドが "--" に対応している必要 - があります。Posix 互換の tar なら対応 - しているはずです。 - 変数が存在しない場合: - tar プラグインは "-" で始まる tar ファ - イルまたは中のファイルを受け付けませ - ん。 - すべての tar が "--" をサポートしているわけ - ではないので、初期設定では無効になっていま - す。 - *g:tar_writeoptions* "uf" ファイルを更新/置換するときに使われる - - -============================================================================== -4. 開発履歴 *tar-history* - - - v27 May 31, 2011 * moved cygwin detection before g:tar_copycmd handling - * inserted additional |:keepj| modifiers - * changed silent to sil! (|:silent|) - v26 Aug 09, 2010 * uses buffer-local instead of window variables to hold - tarfile name - * inserted keepj before 0d to protect jump list - v25 Jun 19, 2010 * (Jan Steffens) added support for xz compression - v24 Apr 07, 2009 * :Untarvim command implemented - Sep 28, 2009 * Added lzma support - v22 Aug 08, 2008 * security fixes - v16 Jun 06, 2008 * tarfile:: used instead of tarfile: when editing files - inside tarballs. Fixes a problem with tarballs called - things like c:\abc.tar. (tnx to Bill McCarthy) - v14 May 09, 2008 * arno caught a security bug - May 28, 2008 * various security improvements. Now requires patch 299 - which provides the fnameescape() function - May 30, 2008 * allows one to view *.gz and *.bz2 files that are in - *.tar files. - v12 Sep 07, 2007 * &shq now used if not the empty string for g:tar_shq - v10 May 02, 2006 * now using "redraw then echo" to show messages, instead - of "echo and prompt user" - v9 May 02, 2006 * improved detection of masquerading as tar file - v8 May 02, 2006 * allows editing of files that merely masquerade as tar - files - v7 Mar 22, 2006 * work on making tar plugin work across network - Mar 27, 2006 * g:tar_cmd now available for users to change the name - of the tar program to be used. By default, of course, - it's "tar". - v6 Dec 21, 2005 * writing to files not in directories caused problems - - fixed (pointed out by Christian Robinson) - v5 Nov 22, 2005 * report option workaround installed - v3 Sep 16, 2005 * handles writing files in an archive back to the - archive - Oct 18, 2005 * <amatch> used instead of <afile> in autocmds - Oct 18, 2005 * handles writing to compressed archives - Nov 03, 2005 * handles writing tarfiles across a network using - netrw#NetWrite() - v2 * converted to use Vim7's new autoload feature by - Bram Moolenaar - v1 (original) * Michael Toren (see http://michael.toren.net/code/) - -============================================================================== -vim:tw=78:ts=8:ft=help diff --git a/runtime.old/doc/pi_vimball.jax b/runtime.old/doc/pi_vimball.jax deleted file mode 100644 index 1f75c0e80..000000000 --- a/runtime.old/doc/pi_vimball.jax +++ /dev/null @@ -1,259 +0,0 @@ -*pi_vimball.txt* For Vim バージョン 7.3. Last change: 2011 Apr 02 - - ---------------- - Vimball Archiver - ---------------- - -Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> - (remove NOSPAM from Campbell's email first) -Copyright: (c) 2004-2011 by Charles E. Campbell, Jr. *Vimball-copyright* - The VIM LICENSE applies to Vimball.vim, and Vimball.txt - (see |copyright|) except use "Vimball" instead of "Vim". - No warranty, express or implied. - Use At-Your-Own-Risk! - -============================================================================== -1. 目次 *vba* *vimball* *vimball-contents* - - 1. 目次..........................................: |vimball-contents| - 3. マニュアル....................................: |vimball-manual| - MkVimball.....................................: |:MkVimball| - UseVimball....................................: |:UseVimball| - RmVimball.....................................: |:RmVimball| - 4. 開発履歴......................................: |vimball-history| - - -============================================================================== -2. はじめに *vimball-intro* - - Vimball はプラグインの利用方法をシンプルにします。vimball は次のように - 実行するだけで利用できます: > - vim someplugin.vba - :so % - :q -< すると、プラグインが適切なディレクトリにインストールされます。実行前に - 適切なディレクトリに移動する必要なんてありません。プラグインのヘルプも - 自動的にインストールされます。 - - AsNeeded プラグインを使っている場合、vimball は .vim/plugin/ に入る予 - 定のものを適切に .vim/AsNeeded/ に入れます。 - - vimball でインストールしたプラグインを削除するのは簡単です: > - vim - :RmVimball someplugin -< 例えば zip や tarball でインストールした場合はこのように簡単ではありま - せん。 - - Vimball はユーザーの |'runtimepath'| 設定を見てスクリプトのインストー - ル場所を決定します。通常は runtimepath の最初の使用可能なディレクトリ - が使われます。次のコマンドでディレクトリを確認できます > - :echo &rtp -< - -============================================================================== -3. マニュアル *vimball-manual* - -VIMBALL の作成 *:MkVimball* - :[range]MkVimball[!] filename [path] - - 作成する vimball に含めるファイルのパスを書き、それらの行を範囲指定し - て実行します。パスは runtimepath (|'rtp'|) からの相対パスです。例: > - plugin/something.vim - doc/something.txt -< この二行を範囲指定して次のように実行すると > - :[range]MkVimball filename -< - "filename.vba" という名前のファイルが作成されます。Vimball.vim を使う - ことでこのファイルから元のファイルを再構成できます。"filename.vba" が - 既に存在する場合は警告が表示され、ファイルは作成されません。ファイルの - パスは .vim (vimfiles) ディレクトリからの相対パスで、ファイルが存在し - ている必要があります。通常は |'runtimepath'| の最初のディレクトリが相 - 対パスのルートとして使われます。特別な理由がない限り絶対パスを使わない - でください。 - - 感嘆符 (!) を指定すると、既存の "filename.vba" は上書きされます。 - |:w| コマンドの動作と同じようなものです。 - - ファイル名にスラッシュを含めたい場合も感嘆符を付ける必要があります - (例: :MkVimball! path/filename)。 - - http://vim.wikia.com/wiki/Using_VimBall_with_%27Make%27 に、作品の - vimball の作成を make を使って自動化するためのチップが掲載されていま - す。 - - -VIMBALL によるディレクトリの作成 *g:vimball_mkdir* - - 最初に |mkdir()| コマンドが試されます (それをサポートしていないシステ - ムもあります)。 - - |mkdir()| が使えず、g:vimball_mkdir が設定されていない場合は、次の順番 - で設定されます: > - |g:netrw_local_mkdir| (変数が存在するなら) - "mkdir" (コマンドが存在するなら) - "makedir" (コマンドが存在するなら) - すべてだめなら (未定義) -< g:vimball_mkdir にはディレクトリ作成コマンドを指定します。自分で設定す - ることもできます。このコマンドは vimball 展開時にディレクトリを作成す - るために使われます。 - - -VIMBALL を展開するディレクトリの設定 *g:vimball_home* - - vimball によって使用される |'runtimepath'| を指定したい場合は - g:vimball_home 変数を設定してください。 - - *vimball-extract* - vim filename.vba - - ファイルを展開するには、Vimball ファイルを Vim で開き、そのファイルを - 実行 (:source %) してください。 - - Vimball ファイルの一行目が "Vimball Archiver by Charles E. Campbell, - Jr., Ph.D." となっている場合のみ、ファイルを展開できます。 - -VIMBALL 内のファイルを一覧表示する *:VimballList* - - :VimballList - - このコマンドを実行すると、Vimball ファイルに含まれているファイルと、そ - れぞれの行数が表示されます。 - -VIMBALL の展開を手動で呼び出す *:UseVimball* - - :UseVimball [path] - - このコマンドは vimball に埋め込まれます。これは vimbal#Vimball() を呼 - び出して vimball を展開します。vimball を実行する代わりに、このコマン - ドを自分で実行しても構いません。その場合、インストール先のパスを指定で - きます。指定がない場合は |'runtimepath'| の最初の存在するディレクトリ - が使用されます。 - -VIMBALL の削除 *:RmVimball* - - :RmVimball vimballfile [path] - - vimball に含まれていたすべてのファイルを削除します (ディレクトリは削除 - されません)。アンインストール元のパスを指定できます (|'runtimepath'|参 - 照)。指定がない場合は |'runtimepath'| の最初の存在するディレクトリが使 - 用されます。 - この機能を実現するため、インストールパスに .VimballRecord というファイ - ルが作成され、削除すべきファイル (それまでに vimball によってインス - トールされたファイル) が記録されます。 - -ロードの無効化 - - もしなんらかの理由で vimballs プラグインを使いたくない場合は、次の二つ - の変数を <.vimrc> で設定すると、vimball.vim の読み込みを無効化できま - す: > - - let g:loaded_vimballPlugin= 1 - let g:loaded_vimball = 1 -< -WINDOWS *vimball-windows* - - 多くの vimball ファイルは gzip で圧縮されています。残念ながら Windows - には gzip 圧縮されたファイルを展開するためのツールが含まれていません。 - しかし幸運にも、Windows ユーザーにも使える gzip 展開ツールがいくつかあ - ります: -> - Item Tool/Suite Free Website - ---- ---------- ---- ------- - 7zip tool y http://www.7-zip.org/ - Winzip tool n http://www.winzip.com/downwz.htm - unxutils suite y http://unxutils.sourceforge.net/ - cygwin suite y http://www.cygwin.com/ - GnuWin32 suite y http://gnuwin32.sourceforge.net/ - MinGW suite y http://www.mingw.org/ -< - -============================================================================== -4. 開発履歴 *vimball-history* {{{1 - - 33 : Apr 02, 2011 * Gave priority to *.vmb over *.vba - * Changed silent! to sil! (shorter) - * Safed |'swf'| setting (during vimball extraction, - its now turned off) - 32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and - :so someplugin.vba.gz (and the other supported - compression types) now works - * (Jan Steffens) added support for xz compression - * fenc extraction was erroneously picking up the - end of the line number when no file encoding - was present. Fixed. - * By request, beginning the switchover from the vba - extension to vmb. Currently both are supported; - MkVimball, however, now will create *.vmb files. - Feb 11, 2011 * motoyakurotsu reported an error with vimball's - handling of zero-length files - 30 : Dec 08, 2008 * fnameescape() inserted to protect error - messaging using corrupted filenames from - causing problems - * RmVimball supports filenames that would - otherwise be considered to have "magic" - characters (ie. Abc[1].vba) - Feb 18, 2009 * s:Escape(), g:vimball_shq, and g:netrw_shq - removed (shellescape() used directly) - Oct 05, 2009 * (Nikolai Weibull) suggested that MkVimball - be allowed to use slashes in the filename. - 26 : May 27, 2008 * g:vimball_mkdir usage installed. Makes the - $HOME/.vim (or $HOME\vimfiles) directory if - necessary. - May 30, 2008 * (tnx to Bill McCarthy) found and fixed a bug: - vimball wasn't updating plugins to AsNeeded/ - when it should - 25 : Mar 24, 2008 * changed vimball#Vimball() to recognize doc/*.??x - files as help files, too. - Apr 18, 2008 * RmVimball command is now protected by saving and - restoring settings -- in particular, acd was - causing problems as reported by Zhang Shuhan - 24 : Nov 15, 2007 * g:vimball_path_escape used by s:Path() to - prevent certain characters from causing trouble - (defunct: |fnameescape()| and |shellescape()| - now used instead) - 22 : Mar 21, 2007 * uses setlocal instead of set during BufEnter - 21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header - handling problem and it now changes \s to /s - 20 : Nov 20, 2006 * substitute() calls have all had the 'e' flag - removed. - 18 : Aug 01, 2006 * vimballs now use folding to easily display their - contents. - * if a user has AsNeeded/somefile, then vimball - will extract plugin/somefile to the AsNeeded/ - directory - 17 : Jun 28, 2006 * changes all \s to /s internally for Windows - 16 : Jun 15, 2006 * A. Mechelynck's idea to allow users to specify - installation root paths implemented for - UseVimball, MkVimball, and RmVimball. - * RmVimball implemented - 15 : Jun 13, 2006 * bugfix - 14 : May 26, 2006 * bugfixes - 13 : May 01, 2006 * exists("&acd") used to determine if the acd - option exists - 12 : May 01, 2006 * bugfix - the |'acd'| option is not always defined - 11 : Apr 27, 2006 * VimballList would create missing subdirectories that - the vimball specified were needed. Fixed. - 10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of - functions. Included some more settings in them - which frequently cause trouble. - 9 : Apr 26, 2006 * various changes to support Windows' predilection - for backslashes and spaces in file and directory - names. - 7 : Apr 25, 2006 * bypasses foldenable - * uses more exe and less norm! (:yank :put etc) - * does better at insuring a "Press ENTER" prompt - appears to keep its messages visible - 4 : Mar 31, 2006 * BufReadPost seems to fire twice; BufReadEnter - only fires once, so the "Source this file..." - message is now issued only once. - 3 : Mar 20, 2006 * removed query, now requires sourcing to be - extracted (:so %). Message to that effect - included. - * :VimballList now shows files that would be - extracted. - 2 : Mar 20, 2006 * query, :UseVimball included - 1 : Mar 20, 2006 * initial release - - -============================================================================== -vim:tw=78:ts=8:ft=help:fdm=marker diff --git a/runtime.old/doc/pi_zip.jax b/runtime.old/doc/pi_zip.jax deleted file mode 100644 index 10644609e..000000000 --- a/runtime.old/doc/pi_zip.jax +++ /dev/null @@ -1,114 +0,0 @@ -*pi_zip.txt* For Vim バージョン 7.3. Last change: 2011 May 24 - - +====================+ - | Zip File Interface | - +====================+ - -Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> - (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright* - Permission is hereby granted to use and distribute this code, - with or without modifications, provided that this copyright - notice is copied with it. Like anything else that's free, - zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is* - and it comes with no warranty of any kind, either expressed or - implied. By using this plugin, you agree that in no event will - the copyright holder be liable for any damages resulting from - the use of this software. - -============================================================================== -1. 目次 *zip* *zip-contents* - 1. 目次....................................................|zip-contents| - 2. 使い方..................................................|zip-usage| - 3. zip以外の拡張子.........................................|zip-extension| - 4. 開発履歴................................................|zip-history| - -============================================================================== -2. 使い方 *zip-usage* *zip-manual* - - *.zip ファイルを開くとファイルの一覧が表示されます。一覧の中のファイルを開 - きたい場合はファイル名の上にカーソルを移動して <return> キーを押してくださ - い。開いたファイルを編集して保存することもできます。zip アーカイブに新しい - ファイルを追加することはまだできません。 - - オプション - - *g:zip_nomax* - - この変数が存在し、その値が真なら、ファイルを開いたときにウィンドウを最大化 - しません。 - - *g:zip_shq* - コマンドの実行に使用されるシェルはシステムによって異なります。Zip は適切な - 方法でスペースなどの文字をクォートしようとしますが、それがうまく機能しない - 場合はこの変数を設定してください。 > - g:zip_shq -< 初期設定は、Unix ではシングルクォート (')、Windows ではダブルクォート (") - です。クォート自体をしたくない場合は <.vimrc> の中で g:zip_shq に空文字を設 - 定してください (let g:zip_shq = "")。 - - *g:zip_unzipcmd* - "unzip" として使用するプログラムを指定します。これはブラウジングに使用され - ます。初期設定: > - let g:zip_unzipcmd= "unzip" -< - *g:zip_zipcmd* - "zip" として使用するプログラムを指定します。これは zip ファイルを保存する - (更新する) ときに使用されます。初期設定: > - let g:zip_zipcmd= "zip" -< - ロードの無効化~ - - もしなんらかの理由で vim で zip ファイルを開きたくない場合は、次の二つの変 - 数を <.vimrc> で設定すると、zip プラグインのロードを無効化できます: > - - let g:loaded_zipPlugin= 1 - let g:loaded_zip = 1 -< -< - -============================================================================== -3. zip 以外の拡張子 *zip-extension* - - zip ファイルを zip 以外の拡張子 (.jar や .xpi など) で生成するアーカイバが - あります。そのようなファイルを扱いたい場合は、<.vimrc> ファイルに次のような - 行を追加してください: > - - au BufReadCmd *.jar,*.xpi call zip#Browse(expand("<amatch>")) -< - この行に拡張子を追加していけば対応する拡張子を増やすことができます。 - -============================================================================== -4. 開発履歴 *zip-history* {{{1 - v24 Jun 21, 2010 * (Cédric Bosdonnat) unzip seems to need its filenames - fnameescape'd as well as shellquote'd - * (Motoya Kurotsu) inserted keepj before 0d to protect - jump list - v17 May 09, 2008 * arno caught a security bug - v15 Sep 07, 2007 * &shq now used if not the empty string for g:zip_shq - v14 May 07, 2007 * using b:zipfile instead of w:zipfile to avoid problem - when editing alternate file to bring up a zipfile - v10 May 02, 2006 * now using "redraw then echo" to show messages, instead - of "echo and prompt user" - * g:zip_shq provided to allow for quoting control for the - command being passed via :r! ... commands. - v8 Apr 10, 2006 * Bram Moolenaar reported that he received an error message - due to "Pattern not found: ^.*\%0c"; this was caused by - stridx finding a Name... at the beginning of the line; - zip.vim tried 4,$s/^.*\%0c//, but that doesn't work. - Fixed. - v7 Mar 22, 2006 * escaped some characters that can cause filename handling - problems. - v6 Dec 21, 2005 * writing to files not in directories caused problems - - fixed (pointed out by Christian Robinson) - v5 Nov 22, 2005 * report option workaround installed - v3 Oct 18, 2005 * <amatch> used instead of <afile> in autocmds - v2 Sep 16, 2005 * silenced some commands (avoiding hit-enter prompt) - * began testing under Windows; works thus far - * filetype detection fixed - Nov 03, 2005 * handles writing zipfiles across a network using - netrw#NetWrite() - v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing - -============================================================================== -vim:tw=78:ts=8:ft=help:fdm=marker diff --git a/runtime.old/doc/print.jax b/runtime.old/doc/print.jax deleted file mode 100644 index 41e7e5166..000000000 --- a/runtime.old/doc/print.jax +++ /dev/null @@ -1,743 +0,0 @@ -*print.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -印刷 *printing* - -1. はじめに |print-intro| -2. 印刷オプション |print-options| -3. PostScript 印刷 |postscript-printing| -4. PostScript 印字エンコーディング |postscript-print-encoding| -5. PostScript CJK 印刷 |postscript-cjk-printing| -6. PostScript 印刷トラブルシューティング|postscript-print-trouble| -7. PostScript ユーティリティ |postscript-print-util| -8. 改ページ文字 |printing-formfeed| - -{Vi にはない機能です} -{|+printer| が有効な場合のみ利用できます} - -============================================================================== -1. はじめに *print-intro* - -MS-Windows では、インストールされているプリンタを使ってテキストを印刷すること -ができます。他のシステムでは PostScript ファイルが生成されます。そのファイルは -直接 PostScript プリンタに送ることができます。非PostScript プリンタを使うには -ghostscript のようなプログラムが必要です。 - -Note: |:hardcopy| による印刷が機能しない場合は、|:TOhtml| で HTML に変換し、そ -れをブラウザで印刷する方法もあります。 - - *:ha* *:hardcopy* *E237* *E238* *E324* -:[range]ha[rdcopy][!] [arguments] - 範囲 [range] の行 (省略時はファイル全体) をプリンタへ - 出力します。 - - MS-Windows ではプリンタの選択やページサイズの設定など - をするためのダイアログが表示されます。ダイアログを省略 - するには [!] を付けてください。その場合、'printdevice' - に設定したプリンタが使われます。未設定の場合はシステム - 標準のプリンタが使われます。 - - MS-Windows 以外のシステムでは、PostScript が一時ファイ - ルに書き込まれ、それを実際に印刷するために 'printexpr' - が実行されます。そのとき、[arguments] は |v:cmdarg| と - して 'printexpr' の中で使うことができます。[arguments] - は無視することもできます。用紙サイズや両面印刷などの指 - 定を 'printoptions' に設定できます。 - -:[range]ha[rdcopy][!] >{filename} - 上記と同じですが、PostScript を {filename} に保存しま - す。 - "%" のような文字は展開されます |cmdline-special|。 - 注意: すでにファイルが存在する場合は、警告なしに上書き - されます。 - {|+postscript| が有効な場合のみ利用できます} - MS-Windows では、プリンタドライバの "ファイルに保存" - の機能を使ってください。 - -印刷している間、印刷中のページ番号や進行率などの印刷状況が表示されます。印刷を -中止するには中断キーを押してください (CTRL-C、MS-Windows では CTRL-Break)。 - -プリンタの出力は 'printfont' と 'printoptions' の設定で制御できます。ページ -ヘッダの書式は 'printheader' に設定します。 - -ファイルの印刷は常に余白の設定に影響を受けます。カレントウィンドウの'wrap' や -'linebreak' の設定は影響しません。行の折り返しをしないようにするには -'printoptions' の設定で "wrap" をオフにしてください。 -印刷には現在の強調表示の色が使われます。次のように処理されます: -1) 通常テキストの背景色は常に白色で出力されます (つまり白紙)。 -2) 通常テキストと同じ前景色の文字や、白色の文字は、それが視認できるようにする - ために、黒色で出力されます。 -3) 'background' が "dark" の場合、文字色が明るすぎて、白紙に印刷するとはっきり - 視認できなくなるため、文字色は暗い色に調整されます。 - -============================================================================== -2. 印刷オプション *print-options* - -印刷の動作を変更するためのオプションについて説明します。設定についての大まかな -説明は |options.txt| を参照してください。 - - *pdev-option* -'printdevice' 'pdev' 文字列 (初期値は空) - グローバル設定 -プリンタの名前を設定します。|:hardcopy| が ! 付きで実行され、プリンタ選択ダイ -アログが省略されたときに使われます。Win32 では、標準印刷ダイアログで表示される -プリンタの名前を正確に指定してください。 -このオプションが空のときに ":hardcopy!" が実行されると、システム標準のプリンタ -が使われます。 - - *penc-option* *E620* -'printencoding' 'penc' 文字列 (初期値は空。あるいは次のとおり: - Windows, OS/2: cp1252, - Macintosh: mac-roman, - VMS: dec-mcs, - HPUX: hp-roman8, - EBCDIC: ebcdic-uk) - グローバル設定 -印刷に使う文字エンコーディングを設定します。'runtimepath' の "print" ディレク -トリにある、このオプションに対応した印刷文字エンコーディングファイルが印刷に使 -われます。 - -このオプションには |encoding-names| に列挙されているエンコーディングを設定でき -ます。エンコーディング名は Vim が規定している名前に変換されます。詳しくは -'encoding' を参照してください。Vim が認識できないエンコーディング名は、すべて -小文字に変換され、アンダースコアは '-' に置換されます。 - -'printencoding' が空、もしくは印刷エンコーディングファイルが見つからなかった場 -合は、'encoding' に対応した印刷エンコーディングファイルを探します -(|+multi_byte| が有効で、8-bit エンコーディングが設定されている場合のみ)。それ -でも印刷エンコーディングファイルが見つからなかった場合は、"latin1" の印刷エン -コーディングファイルが使われます。 - -'encoding' にマルチバイトエンコーディングが設定されている場合、印刷のときに、 -'encoding' から印刷エンコーディングに文字が変換されます ('printencoding' が空 -のときは latin1 に変換されます)。印刷エンコーディングが latin1 以外のときは、 -|+iconv| が有効になっている必要があります。エンコーディングの変換が利用できな -いときは、印刷は失敗します。変換できない文字は、逆さクエスチョンマークに置換さ -れます。 - -Mac、VMS、HPUX、EBCDIC、環境の標準エンコーディングのための、印刷エンコーディン -グファイルが用意されています。それは初期設定として使われます。Windows と OS/2 -では、コードページ1252 の印刷エンコーディングファイルが標準で使われます。 - - *pexpr-option* -'printexpr' 'pexpr' 文字列 (初期設定は下記参照) - グローバル設定 -|:hardcopy| で PostScript を印刷するためのスクリプトを設定します。 -印刷する PostScript ファイルは |v:fname_in| に設定されます。 -":hardcopy" コマンドの引数は |v:cmdarg| に設定されます。 -印刷をした後で、スクリプトから PostScript ファイルを削除してください。 -エラーが起きたときは、スクリプトは 0 以外の値を返す必要があります。 -エラーがないときは、0 か 空文字列を返してください。 -MS-Windows と VMS 以外の環境の初期設定では、単純に "lpr" を使ってファイルを印 -刷します: > - - system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) - . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error - -MS-Dos、MS-Windows、OS/2、での初期設定は、指定されている印刷デバイスにファイル -をコピーします: > - - system('copy' . ' ' . v:fname_in . (&printdevice == '' - ? ' LPT1:' : (' \"' . &printdevice . '\"'))) - . delete(v:fname_in) - -VMS での初期設定は、標準の印刷デバイスか、指定されている印刷デバイスにファイル -を送ります: > - - system('print' . (&printdevice == '' ? '' : ' /queue=' . - &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) - -このオプションを設定するときは、関数を使うと、スペースをエスケープしなくてもい -いので簡単です。例: > - - :set printexpr=PrintFile(v:fname_in) - :function PrintFile(fname) - : call system("ghostview " . a:fname) - : call delete(a:fname) - : return v:shell_error - :endfunc - -ファイルを読み込む前に制御を返す印刷プログラムもあるので注意してください。ファ -イルをすぐに削除してしまうと、印刷できないかもしれません。ほとんどの場合、その -ようなプログラムには、印刷した後でファイルを削除するオプションが用意されていま -す。 - *E365* -スクリプトを実行できなかったり、スクリプトが 0 以外の値を返したときは、エラー -メッセージが表示されます。その場合は、Vim が PostScript ファイルを削除します。 -MS-Windows 以外のシステムの初期設定では、"v:shell_error" を足す、というトリッ -クを使っています。"v:shell_error" には system() の呼び出しでエラーが起きたとき -に 0 以外の値が入ります。 - -セキュリティ上の理由により、このオプションは、|modeline| や |sandbox| の中では -設定できません。 - - *pfn-option* *E613* -'printfont' 'pfn' 文字列 (初期設定は "courier") - グローバル設定 -|:hardcopy| コマンドの出力で使われるフォント名を設定します。このオプションは -'guifont' と同じ書式で指定します。ただし、フォントは一つだけ指定可能です。 -"guifont=*" と同じ特別な指定方法は使えません。 - -Win32 GUI では、'guifont' と同じように、フォントの属性を追加指定できます。 - -他のシステムでは、"h11" という指定のみ受け付けます。"11" の所にはフォントのサ -イズをポイントで指定します。省略時のフォントサイズは 10 です。 - - *pheader-option* -'printheader' 'pheader' 文字列 (初期値は "%<%f%h%m%=Page %N") - グローバル設定 -|:hardcopy| の出力で使われるヘッダーの書式を設定します。このオプションは -'statusline' と同じ書式で指定します。|+statusline| が無効な場合には、このオプ -ションは機能しません。その場合は、初期設定の、ページ番号を表示するだけのシンプ -ルなヘッダが使われます。 - - *pmbcs-option* -'printmbcharset' 'pmbcs' 文字列 (初期設定は "") - グローバル設定 -|:hardcopy| で漢字 (CJK文字) を出力するための文字セットを設定します。 -現在 Vim は、以下で定義されている文字セットを認識します。 - - 設定値 説明 ~ - Chinese GB_2312-80 - (Simplified) GBT_12345-90 - MAC Apple Mac Simplified Chinese - GBT-90_MAC GB/T 12345-90 Apple Mac Simplified - Chinese - GBK GBK (GB 13000.1-93) - ISO10646 ISO 10646-1:1993 - - Chinese CNS_1993 CNS 11643-1993, Planes 1 & 2 - (Traditional) BIG5 - ETEN Big5 with ETen extensions - ISO10646 ISO 10646-1:1993 - - Japanese JIS_C_1978 - JIS_X_1983 - JIS_X_1990 - MSWINDOWS Win3.1/95J (JIS X 1997 + NEC + - IBM extensions) - KANJITALK6 Apple Mac KanjiTalk V6.x - KANJITALK7 Apple Mac KanjiTalk V7.x - - Korean KS_X_1992 - MAC Apple Macintosh Korean - MSWINDOWS KS X 1992 with MS extensions - ISO10646 ISO 10646-1:1993 - -上記の文字セットと 'printencoding' は、決められた組合せのみ利用可能です。可能 -な組合せは以下のとおり: - - euc-cn gbk ucs-2 utf-8 ~ - Chinese GB_2312-80 x - (Simplified) GBT_12345-90 x - MAC x - GBT-90_MAC x - GBK x - ISO10646 x x - - euc-tw big5 ucs-2 utf-8 ~ - Chinese CNS_1993 x - (Traditional) BIG5 x - ETEN x - ISO10646 x x - - euc-jp sjis ucs-2 utf-8 ~ - Japanese JIS_C_1978 x x - JIS_X_1983 x x - JIS_X_1990 x x x - MSWINDOWS x - KANJITALK6 x - KANJITALK7 x - - euc-kr cp949 ucs-2 utf-8 ~ - Korean KS_X_1992 x - MAC x - MSWINDOWS x - ISO10646 x x - -日本語のテキストを印刷するには、次のように、適切なエンコーディングと文字セット -を設定してください: > - :set printencoding=euc-jp - :set printmbcharset=JIS_X_1983 - -'printmbcharset' が上記のどれでもないときは、独自のマルチバイト文字セットであ -ると判断されます。'printencoding' と互換性があるかどうかはチェックされません。 -Vim は、'runtimepath' の "print" ディレクトリから、指定された文字セット用の -ファイルを探します。 - - *pmbfn-option* -'printmbfont' 'pmbfn' 文字列 (初期値は "") - グローバル設定 -|:hardcopy| で漢字 (CJK) を出力するために使われるフォントのリストを設定しま -す。リストはコンマで区切ります。フォント名には、そのフォントがどのスタイルで使 -われるかを指示する文字を前置します: - - r:{font-name} 普通文字のフォント - b:{font-name} 太字 (bold) のフォント - i:{font-name} 斜体文字 (italic) のフォント - o:{font-name} 太字斜体文字 (bold-italic) のフォント - -CJK 印刷をするには r: 指定のフォントを必ず設定してください。その他のフォントの -指定は省略できます。省略した場合は次のとおりに処理されます: - - b: がないときは、r: を使います。 - i: がないときは、r: を使います。 - o: がないときは、b: を使います。 - -CJK フォントが ASCII 文字を持っていない場合があります。また、CJK の ASCII 文字 -のうちいくつかの文字が、通常の ASCII 文字とは違う場合があります。ASCII コード -の範囲の文字をどのように印刷するかを指定することができます。 - - c:yes ASCII 文字を Courier フォントで出力します。 - c:no (初期値) - - a:yes ASCIIコードの範囲を ASCII 文字セットで出力します。 - a:no (初期値) - -次の例では、二つのマルチバイトフォントを指定しています。一つは普通文字と斜体文 -字、もう一つは太字と太字斜体文字の印刷に使われます。そして、ASCII コードの範囲 -の文字は、国内標準文字セットを使って、Courier で印刷されます: > - :set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,c:yes -< - *popt-option* -'printoptions' 'popt' string (default "") - global -|:hardcopy| の出力を制御するためのオプションのリストを設定します。リストはコン -マで区切ります: - - left:{spec} 左余白 (標準設定: 10pc) - right:{spec} 右余白 (標準設定: 5pc) - top:{spec} 上余白 (標準設定: 5pc) - bottom:{spec} 下余白 (標準設定: 5pc) - {spec} には数値を指定します。数値には単位を付けてくだ - さい。インチなら "in"、ポイントなら "pt" (1 ポイントは - 1/72 インチ)、ミリメートルなら "mm"、用紙サイズに対す - る割合なら "pc"、を指定します。 - (例示のための) 例: - left:2in,top:30pt,right:16mm,bottom:3pc - 上記以外の単位を指定した場合は標準設定が使われます。エ - ラーは表示されません。 - - header:{nr} ヘッダーの印刷に使う行数を指定します。 - 実際には最初の行だけに文字が印刷されます。つまり、{nr} - に 2 を指定した場合は空行が印刷されます。ヘッダーの書 - 式は 'printheader' で指定します。 - header:0 ヘッダーを印刷しません。 - header:2 (標準設定) ヘッダーの印刷に二行使います。 - - syntax:n 構文強調を使わない。大きなファイルでも高速に印刷できま - す。 - syntax:y 構文強調を使う。 - syntax:a (標準設定) カラー印刷またはグレースケール印刷が可能なプリンタなら - 構文強調を使います。 - - number:y 行番号を印刷する。 - number:n (標準設定) 行番号を印刷しない。 - - wrap:y (標準設定) 長い行を折り返す。 - wrap:n 長い行を切り詰める。 - - duplex:off 片面印刷。 - duplex:long (標準設定)両面印刷 (可能なら)。長い辺で閉じます。 - duplex:short 両面印刷 (可能なら)。短い辺で閉じます。 - - collate:y (標準設定) ページを順番にそろえる: 1 2 3, 1 2 3, 1 2 3 - collate:n そのまま: 1 1 1, 2 2 2, 3 3 3 - - jobsplit:n (標準設定) すべてを一回で印刷する。 - jobsplit:y 印刷ジョブを部ごとに分ける。N-up 印刷をする場合に便利 - です。 - - portrait:y (標準設定) 縦置きの用紙に印刷する。 - portrait:n 横置きの用紙に印刷する。 - *a4* *letter* - paper:A4 (標準設定) 用紙サイズ: A4 - paper:{name} 次の中から用紙サイズを選んでください: - {name} センチメートル単位 インチ単位 ~ - 10x14 25.4 x 35.57 10 x 14 - A3 29.7 x 42 11.69 x 16.54 - A4 21 x 29.7 8.27 x 11.69 - A5 14.8 x 21 5.83 x 8.27 - B4 25 x 35.3 10.12 x 14.33 - B5 17.6 x 25 7.17 x 10.12 - executive 18.42 x 26.67 7.25 x 10.5 - folio 21 x 33 8.27 x 13 - ledger 43.13 x 27.96 17 x 11 - legal 21.59 x 35.57 8.5 x 14 - letter 21.59 x 27.96 8.5 x 11 - quarto 21.59 x 27.5 8.5 x 10.83 - statement 13.97 x 21.59 5.5 x 8.5 - tabloid 27.96 x 43.13 11 x 17 - - formfeed:n (標準設定) 改ページ文字 (0x0c) を普通の文字として処理します。 - formfeed:y 改ページ文字を処理し、現在の行を新しいページに印刷しま - す。 - -設定を省略した場合は、それぞれの設定項目で (標準設定) となっているものが使われ -ます。設定ダイアログでプリンタの選択やオプションを設定したときなど、指定した設 -定が使われないこともあります。 -例: > - :set printoptions=paper:letter,duplex:off - -============================================================================== -3. PostScript 印刷 *postscript-printing* - *E455* *E456* *E457* *E624* -十分なディスクスペースがあれば、問題なく PostScript ファイルを出力できます。ラ -ンタイムファイルを正しくインストールする必要もあります (ヘルプを見れるなら正し -くインストールされているでしょう)。 - -現在、PostScript 印刷には次の制限があります: - -- 'printfont' - フォント名は無視され、フォントサイズだけが使われます。(Courier - ファミリが常に使われます。これはすべての PostScript プリンタで利用可能なはず - です)。 - -- 'printoptions' - PostScript は両面印刷の設定を使って出力されますが、プリンタ - によっては機能しない場合があります。両面印刷をサポートしていないプリンタの場 - 合、両面印刷の設定は静かに無視されます。何も印刷しないプリンタもあります。 - -- 8-bit サポート。8-bit エンコーディングの印刷はサポートされていますが、いくつ - かの文字が印刷されない場合もあります。文字が印刷されるかどうかは、プリンタの - フォントにその文字があるかどうかに依存しています。印刷できない文字は逆さのク - エスチョンマークに置き換えられます。その文字もない場合にはスペースに置き換え - られます。新しい Courier フォントファミリをインストールすれば、エンコーディ - ングのすべての文字を印刷できるようになるかもしれません。 - -- マルチバイトサポート。現在、Vim はマルチバイト文字を 'printencoding' で指定 - された 8-bit エンコーディングに変換しようとします ('printencoding' が空のと - きは latin1 が使われます)。変換できない文字は未知の文字として印刷されます。 - マルチバイトから 8-bit エンコーディングへの変換を実行できないときは、印刷は - 失敗します。 - -============================================================================== -4. 独自 8-bit 印字エンコーディング *postscript-print-encoding* - *E618* *E619* -独自の 8-bit 印字エンコーディングを使って 8-bit テキストを印刷することができま -す。それには PostScript フォントエンコーディングベクタを自分で定義する必要があ -ります。フォントエンコーディングベクタの定義方法はこのヘルプの範囲外なので説明 -しません。詳細は Addison-Wesley から出版されている PostScript リファレンスマ -ニュアル第三版を参照してください。http://www.adobe.com/ には PDF ファイルが用 -意されています。次に、独自の印字エンコーディングを使用する方法を説明します。 -訳注: PostScriptリファレンスマニュアル第3版 ASCII電子出版シリーズ -訳注: Adobe Systems (著), 桑沢 清志 (翻訳) -訳注: ISBN: 4756138225 - -i. エンコーディングベクタのためのユニークな名前を決めてください。Vim が使う - 標準エンコーディング名 (|encoding-names|参照) は使えません。他の人が使わ - ないような名前を付けてください。 -ii. $VIMRUNTIME/print/latin1.ps をあなたの 'runtimepath' の print ディレクト - リにコピーし、ファイル名を自分のエンコーディング名に変更してください。 -iii. 名前を変更した latin1.ps を編集し、ファイル内に表れる latin1 という文字を - すべて、あなたのエンコーディング名に置換してください (%%Title: で始まる行 - も忘れずに)。そして、グリフ名の配列を変更し、新しいエンコーディングベクタ - を定義してください。配列の長さは 256 でなければいけません。それ以外では印 - 刷できません。 -iv. 'printencoding' に新しい印字エンコーディングを設定し印刷します。あなたの - 独自印字エンコーディングを使って印刷されます。 - -リソースファイルの最初の三行の内容や順番が変更されているとエラーが表示されま -す。%%Title: と %%Version: で始まる行は変更しても構いません。 - -PostScript を知っている人への技術的な説明。Vim は印刷に使うエンコーディングと -同じ名前のファイルを探します。そのファイルは /Vim-name という名前の新しい -PostScript エンコーディングを定義しています。name の部分は Vim が使用する印字 -エンコーディングの名前です。 - -============================================================================== -5. PostScript CJK 印刷 *postscript-cjk-printing* - *E673* *E674* *E675* - -中国語、日本語、韓国語のファイルを印刷することができます。CJK ファイルを正しく -印刷するために、いくつかのオプションを設定する必要があります。 - -日中韓の国々には標準文字セットとエンコーディングがたくさんあります。印刷するに -は、その両方を正しく設定する必要があります。CJK フォントには一般的に、斜体グリ -フという概念がありません。また、強調して印刷するために、字間や文字の太さが違う -フォントを使います。適切なフォントで印刷するためには適切な設定が必要です。 - -エンコーディングと文字セットはオプションの 'printencoding' と 'printmbcharset' -で指定します。'printencoding' を設定しなかった場合は、'encoding' が使われま -す。'printencoding' を設定した場合は、印刷する文字が、指定したエンコーディング -に変換されます。エンコーディングには、ファイルを印刷するための文字セットと互換 -性のあるエンコーディングを設定してください。あるいは、互換性のない文字が印刷さ -れないようなエンコーディングを設定してください。 - -CJK 印刷に使うフォントは 'printmbfont' に設定します。このオプションでは、構文 -強調の、普通の文字、斜体文字、太字、斜体太字、に対して別々のフォントを指定でき -ます。 - -CJK フォントは Vim に付属していません。韓国語、日本語、繁体中国語、の無料で使 -えるフォントが次の場所にあります: - - http://examples.oreilly.com/cjkvinfo/adobe/samples/ - -フォントについての説明は readme ファイルを読んでください: - - http://examples.oreilly.de/english_examples/cjkvinfo/adobe/00README - -フォントのインストール方法については、プリンタの説明書を読んでください。 - -CJK フォントにはたくさんのグリフが含まれていますが、国内標準文字セットだけを -持っているフォントも珍しくありません。ASCII 文字を含んでいないこともよくありま -す。もし、半角英数が印刷されないときは、'printmbfont' を設定し、Courierフォン -トを使って、半角 ASCII 文字を印刷するようにしてください。他にも印刷されない文 -字がある場合は、別のフォントを探す必要があるでしょう。 - -ASCII 文字についてもう一つ。国内標準文字セットによっては、ASCII 文字の範囲に -ASCII 文字とは別の文字を定義している場合があります。そのため、国内標準文字セッ -トを使って ASCII テキストを印刷すると、予期しない文字が印刷されるかもしれませ -ん。ASCII コードの範囲が ASCII 文字として印刷されるようにするには、 -'printmbfont' を設定してください。 - -独自のマルチバイト文字セットを定義することができまが、それは簡単ではありませ -ん。その方法についてはこのヘルプの範囲を越えるので説明しません。CMap -(character map) ファイルについての詳細は、'Adobe CMap and CIDFont Files -Specification, Version 1.0' を参照してください。http://www.adobe.com に PDF -ファイルがあります。 - -============================================================================== -6. PostScript 印刷トラブルシューティング *postscript-print-trouble* - *E621* -ほとんどの場合、印刷されない、ということだけが、PostScript印刷で問題が起きてい -る合図です。 運が良ければ、どの PostScript 命令がエラーを起こしたのかが印刷さ -れるかもしれません。 - -印刷が失敗する原因として考えられるものをいくつか上げます: - -- prolog リソースファイルのバージョンが間違っている。prolog リソースファイルに - は、印刷に必要な PostScript が含まれています。Vim のバージョンに対応したリ - ソースファイルが必要です。ランタイムファイルが正しくインストールされているこ - とを確認してください。また、古いバージョンの prolog ファイルが 'runtimepath' - ディレクトリに残っている場合は除外してください。 - -- 用紙サイズ。対応していない用紙サイズを指定すると、印刷を中断する PostScript - プリンタがあります。標準設定では、A4 用紙が使われます。プリンタが対応してい - る用紙サイズを確認して 'printoptions' を設定してください。用紙サイズの名前が - 分からない場合は、使用する紙の寸法を計り、'printoptions' の説明にある用紙サ - イズと見比べて、一番近いものを選択してください。 - Note: 実際の用紙サイズは、一覧されているものとわずかに違うことがあります。 - 十分に近い用紙サイズがない場合は、下記で説明している PSUtils の psresize を - 試してください。 - -- 両面印刷 (duplex)。両面印刷に対応していないほとんどの PostScript プリンタ - は、両面印刷の命令を無視しますが、印刷を中断してしまう PostScript プリンタも - あります。その場合は、両面印刷の設定をオフにして印刷してください。 - Note: PSUtils を使って手動で両面印刷することもできます。下記参照。 - -- 丁合 (collate、用紙の整列)。複数部印刷する場合、丁合をサポートしていないほと - んどの PostScript プリンタは、丁合の命令を無視しますが、そうでないプリンタも - あります。その場合は、丁合の設定をオフにして印刷してください。 - -- 構文強調。構文強調が有効になっているとき、使われている色が黒一色だけの場合で - も、生成された PostScript ファイルがモノクロプリンタで印刷されないように、印 - 刷を中断する印刷管理プログラムがあります。その場合は、構文強調をオフにして印 - 刷してください。 - -安全な printoptions の設定は次のようなものです: > - - :set printoptions=paper:A4,duplex:off,collate:n,syntax:n - -"A4" の部分を適切な用紙サイズに変更してください。 - -============================================================================== -7. PostScript ユーティリティ *postscript-print-util* - -7.1 Ghostscript - -Ghostscript は PostScript と PDF のインタプリタです。PostScript と PDF ファイ -ルを表示したり、非PostScript プリンタで印刷することができます。PostScript から -PDF ファイルを生成することもできます。 - -Ghostscript はさまざまな環境で動作します。 - -次の三つのバージョンが利用可能です: - -- AFPL Ghostscript (かつての Aladdin Ghostscript)。非商用利用ではフリー。 - 次の場所から入手できます: - - http://www.cs.wisc.edu/~ghost/ - -- GNU Ghostscript。 GNU General Public License に従って利用可能。 - 次の場所から入手できます: - - ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/ - -- 商用利用可能な販売品。 - -Ghostscript についての詳細は次の場所を見てください: - - http://www.ghostscript.com/ - -標準の配布物には、たくさんの非PostScript プリンタのサポートが含まれています。 -あなたのプリンタがサポートされていない場合は、Ghostscript のサイトを確認してみ -てください。 - - -7.2 Ghostscript プレビューア - -Ghostscript の操作方法はとても原始的なので、たくさんの GUI フロントエンドが作 -成されました。PostScript ファイルを選択したり、いろんな大きさで表示したり、印 -刷したりすることが簡単にできます。詳細は付属の説明書を参照してください。 - -X11 - -- Ghostview。次の場所から入手できます: - - http://www.cs.wisc.edu/~ghost/gv/ - -- gv。Ghostview から派生。次の場所から入手できます: - - http://wwwthep.physik.uni-mainz.de/~plass/gv/ - - (最新版ではないかもしれませんが) 次の場所からも入手できます: - - http://www.cs.wisc.edu/~ghost/gv/ - -OpenVMS - -- 次のものが利用できます (試してません): - - http://wwwthep.physik.uni-mainz.de/~plass/gv/ - -Windows and OS/2 - -- GSview。次の場所から入手できます: - - http://www.cs.wisc.edu/~ghost/gsview/ - -DOS - -- ps_view。次の場所から入手できます: - - ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/ - ftp://ftp.dante.de/tex-archive/support/ps_view/ - -Linux - -- GSview。Windows や OS/2 で人気のあるプレビューアの Linux 版。 - 次の場所から入手できます: - - http://www.cs.wisc.edu/~ghost/gsview/ - -- BMV。Ghostview や gv とは違い、X ではなく、svgalib を使用します。 - 次の場所から入手できます: - - ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz - - -7.3 PSUtils - -PSUtils は。 PostScript ドキュメントを処理するための便利なプログラム集です。た -くさんのプラットフォーム向けのバイナリが配布されています。ソースも公開されてい -ます。PSUtils は次の場所にあります: - - http://knackered.org/angus/psutils - -次のものは特に便利です: - -- psnup. PS ファイルを変換し、N-up 印刷する。 -- psselect. 印刷する範囲や順番を選択する。 -- psresize. 用紙サイズを変更する。 -- psbook. 製本のためにレイアウトを調整する。 - -これらのプログラムの出力は、他のプログラムに入力にできるので、複雑な印刷物も作 -成できます。 - - -N-UP 印刷 -訳注: 複数のページを一ページにまとめて印刷。 - -Vim が生成した PostScript ファイルを psnum で処理し、n-up 版の PostScript を作 -成できます。2-up 印刷をするには、まず、次のように PostScript を作成します: > - - :hardcopy > test.ps - -そして、シェルのコマンドラインで次のコマンドを実行します: > - - psnup -n 2 test.ps final.ps - -Note: psnum が生成したファイルを Ghostscript プレビューアで表示すると警告が表 -示されることがありますが、無視して問題ないでしょう。 - -そして、環境に合わせた方法で、final.ps を PostScript プリンタで印刷します。(印 -刷後、必要なら二つの PostScript ファイルを自分で削除してください)。'printexpr' -を設定し、印刷前にこの特別な処理をするように設定できます。 - - -両面印刷の代用品 - -PSUtils の psselect を使って、両面印刷を安価に実現できます。このユーティリティ -の引数に -e と -o を指定して、偶数ページと奇数ページを別々のファイルに出力でき -ます。 - -まず、|:hardcopy| コマンドで PostScript ファイルを生成します。そして、そのファ -イルを偶数ページと奇数ページに分けます: > - - psselect -o test.ps odd.ps - psselect -e test.ps even.ps - -次に、環境に合わせた方法で odd.ps を印刷します。そして、できあがった印刷物を -ひっくり返し、再びプリンタの給紙トレーにセットし、even.ps を印刷します。これ -で、偶数ページが奇数ページの裏面に印刷されます。 - -次のことを気に留めておいてください: - -1. 最初のページの位置。奇数ページを印刷したときに、最初のページが印刷物の上面 - にある場合、偶数ページの印刷順を逆にする必要があります。これは、psselect - に-rを指定すればできます。これで二ページ目が一ページ目の裏に印刷されます。 - Note: 元の PostScript ファイルのページ数が奇数の場合は、偶数ページを逆順に - 印刷するよりも、奇数ページを逆順に印刷したほうがいいでしょう。 - -2. 紙のひっくり返し方。奇数ページを印刷した紙をひっくり返すとき、水平方向 (長 - い辺に沿って)、または垂直方向 (短い辺に沿って) に裏返すだけでなく、180 度回 - 転させる必要があるかもしれません。これはプリンタによって違います。デスク - トップ用インクジェットプリンタであれば、紙の通り道が見えないスモールオフィ - ス用レーザープリンタとは違い、確認しやすいでしょう。 - - -============================================================================== -8. 改ページ文字 *printing-formfeed* - -標準設定では、Vim は |formfeed| 制御文字 (改ページ文字) の特別な処理を一切しま -せん。'printoptions' の formfeed を設定すると、Vim は改ページ文字を認識するよ -うになります。改ページ文字を含む行は新しいページの一行目に印刷されます。改ペー -ジ文字を使って原始的な印刷制御ができますが、いくつか気を付けることがあります。 - -たとえ行頭の文字が改ページ文字であっても、その行は常に通常の位置から (設定に -よっては行番号をともなって) 印刷されます。そのため、そのような行が (たまたま) -ページの一行目だった場合、空白のページが印刷されます。 - -行番号は、改ページ文字を含む行の印刷が開始したところに印刷されるので、その行の -(改ページ文字以降の) 残りの部分が新しいページに印刷されるときには、行番号は印 -刷されません ('printoptions' の wrap がオンのときに、長い行が折り返して印刷さ -れる場合も同じです)。 - -改ページ文字が行の最後の文字だった場合、次の行は、新しいページの二行目に印刷さ -れます。これは、Vim が改ページ文字を処理した後で改行を処理し、カーソルを下へ移 -動して、次の行を印刷するからです。 - -上記の理由により、改ページ文字を使用する場合には、行番号印刷をオフにして、改 -ページ文字を行末に置かないことが望ましいです。その場合でも、予期しない空白ペー -ジが印刷されないように、行数を変更して改ページ文字の位置を調整する必要があるか -もしれません。 - -訳注: 例: -訳注: 1: aaa<0c>bbb (<0c> == <C-L> == formfeed) -訳注: 2: <0c>ccc<0c> -訳注: 3: ddd -訳注: は次のように印刷されます。 -訳注: 1: aaa -訳注: - new page - -訳注: bbb -訳注: 2: -訳注: - new page - -訳注: ccc -訳注: - new page - -訳注: -訳注: 3: ddd - -============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/quickfix.jax b/runtime.old/doc/quickfix.jax deleted file mode 100644 index df4cbeb64..000000000 --- a/runtime.old/doc/quickfix.jax +++ /dev/null @@ -1,1401 +0,0 @@ -*quickfix.txt* For Vim バージョン 7.3. Last change: 2011 May 10 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -この話題に関してはユーザーマニュアルの|30.1|でも紹介されている。 - - -1. QuickFixコマンドの使い方 |quickfix| -2. エラーウィンドウ |quickfix-window| -3. 複数のエラーリストを使う |quickfix-error-lists| -4. :makeの使い方 |:make_makeprg| -5. :grepの使い方 |grep| -6. コンパイラを選択する |compiler-select| -7. エラーフォーマット |error-file-format| -8. ディレクトリスタック |quickfix-directory-stack| -9. 具体的なエラーファイルフォーマット |errorformats| - -{これらのコマンドはViには存在しない} - -コンパイル時に|+quickfix|機能が無効にされた場合は、QuickFixコマンドは使えない。 - - -============================================================================= -1. QuickFixコマンドの使い方 *quickfix* *Quickfix* *E42* - -Vimには編集-コンパイル-編集のサイクルを加速するための特別なモードがある。これ -はAmigaのManx's Aztec C compilerのquickfixオプションにインスパイアされた。Cコ -ンパイラから出力されたエラーメッセージをファイルに保存し、Vimでそのエラーにジャ -ンプするというアイディアである。エラーメッセージを全部覚えておかなくても、それ -ぞれの問題を検証し、修正することができる。 - -QuickFixコマンドはより一般的に、ファイル中の位置のリストを作成し、ジャンプする -ために使うことができる。例えば、|:vimgrep|はパターンにマッチした位置をリストす -る。スクリプト中で|getqflist()|を使ってこれらの位置を参照することができる。 -そのため、編集・コンパイル・修正のサイクル以外にも多くの事に利用できる。 - -AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる方法について -|quickfix-manx|を見よ。別のコンパイラを使用するならば、エラーメッセージを一度 -ファイルに保存してVimを"vim -q filename"で起動する。これをする簡単な方法の1つ -はコマンド|:make|である(後述)。各コンパイラからのエラーメッセージを解釈させる -ためには、オプション'errorformat'をセットする(下の|errorformat|を参照)。 - - *location-list* *E776* -ロケーションリストはQuickFixリストに似ていて、ファイル中の位置のリストを保持す -る。ロケーションリストはウィンドウに関連付けられていて、各ウィンドウが別々のロ -ケーションリストを持つことができる。ロケーションリストは1個のウィンドウにだけ -関連付けることができる。ロケーションリストはQuickFixリストとは独立している。 - -ロケーションリストを持つウィンドウが分割されると、新しいウィンドウはロケーショ -ンリストのコピーを得る。ロケーションリストへの参照がなくなると、そのロケーショ -ンリストは破棄される。 - -以下のQuickFixコマンドが利用できる。ロケーションリストコマンドはQuickFixコマン -ドに似ていて、QuickFixコマンドのプレフィックス'c'が'l'に置き換わっている。 - - *:cc* -:cc[!] [nr] エラー[nr]を表示する。[nr]が省略されると同じエラーが - 再度表示される。[!]が無く、現在のバッファに変更が有り - ウィンドウが1つしか無く、'hidden'も'autowrite'もoffで - ある場合には、他のバッファへジャンプする事は無い。 - [!]を使用して他のバッファに移る時、現在のバッファへの - 変更点は、'hidden'がセットされているか別のウィンドウが - 開いているかしない場合、破棄されてしまう。 - バッファ移動の際は設定'switchbuf'が関係してくる。 - - *:ll* -:ll[!] [nr] ":cc"と同様だが、QuickFixリストでなくカレントウィンド - ウのロケーションリストが使われる。 - - *:cn* *:cnext* *E553* -:[count]cn[ext][!] ファイル名を含むエラーリストで[count]個後のエラーを表 - 示する。ファイル名が無かった場合[count]個後のエラーに - 移動する。[!]と'switchbuf'については|:cc|を参照。 - - *:lne* *:lnext* -:[count]lne[xt][!] ":cnext"と同様だが、QuickFixリストでなくカレントウィン - ドウのロケーションリストが使われる。 - -:[count]cN[ext][!] *:cp* *:cprevious* *:cN* *:cNext* -:[count]cp[revious][!] ファイル名を含むエラーリストで[count]個前のエラーを表 - 示する。ファイル名が無かった場合[count]個前のエラーに - 移動する。[!]と'switchbuf'については|:cc|を参照。 - -:[count]lN[ext][!] *:lp* *:lprevious* *:lN* *:lNext* -:[count]lp[revious][!] ":cNext"と":cprevious"と同様だが、QuickFixリストでな - く、カレントウィンドウのロケーションリストが使われる。 - - *:cnf* *:cnfile* -:[count]cnf[ile][!] ファイル名を含むエラーリストで[count]個後のファイルの - 最初のエラーを表示する。ファイル名が無いか後のファイル - が無い場合には、[count]後のエラーに移動する。[!]と - 'switchbuf'については|:cc|を参照。 - - *:lnf* *:lnfile* -:[count]lnf[ile][!] ":cnfile"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - -:[count]cNf[ile][!] *:cpf* *:cpfile* *:cNf* *:cNfile* -:[count]cpf[ile][!] ファイル名を含むエラーリストで[count]個前のファイルの - 最後のエラーを表示する。ファイル名が無いか後のファイル - が無い場合には、[count]個前のエラーに移動する。[!]と - 'switchbuf'については|:cc|を参照。 - -:[count]lNf[ile][!] *:lpf* *:lpfile* *:lNf* *:lNfile* -:[count]lpf[ile][!] ":cNfile"と":cpfile"と同様だが、QuickFixリストでなく、 - カレントウィンドウのロケーションリストが使われる。 - - *:crewind* *:cr* -:cr[ewind][!] [nr] [nr]のエラーを表示する。[nr]が省略されると一番最初の - エラーが表示される。|:cc|を参照。 - - *:lrewind* *:lr* -:lr[ewind][!] [nr] ":crewind"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - - *:cfirst* *:cfir* -:cfir[st][!] [nr] ":crewind"と同じ。 - - *:lfirst* *:lfir* -:lfir[st][!] [nr] ":lrewind"と同じ。 - - *:clast* *:cla* -:cla[st][!] [nr] [nr]のエラーを表示する。[nr]が省略されると一番最後の - エラーが表示される。|:cc|を参照。 - - *:llast* *:lla* -:lla[st][!] [nr] ":clast"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - - *:cq* *:cquit* -:cq[uit][!] Vimをエラーとして終了することで、コンパイラが同じ - ファイルをコンパイルする事が無くなる。 - 警告: ファイルに対する変更はすべて失われる([!] を指定 - しなくても)! このコマンドは、システムへの戻り値が非 - 零であるということ以外 ":qall!" |:qall| と同じである。 - - *:cf* *:cfile* -:cf[ile][!] [errorfile] エラーファイルを読みこみ最初のエラーへ移動する。Vimが - オプション-qで起動された時には自動的に行なわれる。 - コンパイルの間Vimを実行したままにしたい時に使うことが - できる。エラーファイルの名前を与えればオプション - 'errorfile'に[errorfile]が設定される。[!]については - |:cc|を参照。 - - *:lf* *:lfile* -:lf[ile][!] [errorfile] ":cfile"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。コマンドライ - ンオプション-qを使ってロケーションリストを設定すること - はできない。 - - -:cg[etfile] [errorfile] *:cg* *:cgetfile* - エラーファイルを読み込む。":cfile"に似ているが、最初のエ - ラーに移動しない。 - -:lg[etfile] [errorfile] *:lg* *:lgetfile* - ":cgetfile"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - - *:caddf* *:caddfile* -:caddf[ile] [errorfile] エラーファイルを読み込み、現在のQuickFixリストにエラー - を追加する。QuickFixリストがまだない場合は、新しいリス - トが作成される。 - - *:laddf* *:laddfile* -:laddf[ile] [errorfile] ":caddfile"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - - *:cb* *:cbuffer* *E681* -:cb[uffer][!] [bufnr] カレントバッファからエラーリストを読み込む。[bufnr]を - 指定すると、カレントバッファの代わりにそのバッファが使 - われる。bufnrには読み込まれているバッファ番号を指定しな - ければならない。範囲を指定すると、読み込む行を指定する - ことができる。範囲指定がないとバッファ全体が使われる。 - [!]については|:cc|を参照。 - - *:lb* *:lbuffer* -:lb[uffer][!] [bufnr] ":cbuffer"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - - *:cgetb* *:cgetbuffer* -:cgetb[uffer] [bufnr] カレントバッファからエラーリストを読み込む。":cbuffer" - と同じだが、最初のエラーにジャンプしない点が異なる。 - - *:lgetb* *:lgetbuffer* -:lgetb[uffer] [bufnr] ":cgetbuffer"と同様だが、QuickFixリストでなく、カレン - トウィンドウのロケーションリストが使われる。 - - *:caddb* *:caddbuffer* -:caddb[uffer] [bufnr] カレントバッファからエラーリストを読み込み、現在の - QuickFixリストにエラーを追加する。QuickFixリストが存在 - まだない場合は、新しいリストが作成される。それ以外は - :cbufferと同じ。 - - *:laddb* *:laddbuffer* -:laddb[uffer] [bufnr] ":caddbuffer"と同様だが、QuickFixリストでなく、カレン - トウィンドウのロケーションリストが使われる。 - - *:cex* *:cexpr* *E777* -:cex[pr][!] {expr} {expr} の結果を使って QuickFix リストを作成し、最初の - エラーにジャンプする。 - {expr} が文字列のときは、その文字列を改行コードで区切 - り、各行を 'errorformat' のグローバル値に従って解釈 - し、結果を QuickFix リストに追加する。 - {expr} がリストのときはリストの各文字列要素を解釈し、 - QuickFix リストに追加する。リスト中の文字列でない要素 - は無視される。 - [!]については|:cc|を参照。 - 例: > - :cexpr system('grep -n xyz *') - :cexpr getline(1, '$') -< - *:lex* *:lexpr* -:lex[pr][!] {expr} |:cexpr|と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - - *:cgete* *:cgetexpr* -:cgete[xpr] {expr} {expr}の結果を使ってQuickFixリストを作成する。|:cexpr| - と同様だが、最初のエラーにジャンプしない点が異なる。 - - *:lgete* *:lgetexpr* -:lgete[xpr] {expr} |:cgetexpr|と同様だが、QuickFixリストでなく、カレ - ントウィンドウのロケーションリストが使われる。 - - *:cad* *:caddexpr* -:cad[dexpr] {expr} {expr}を評価し、結果の行を現在のQuickFixリストに追加す - る。QuickFixリストがまだ無い場合は、新しいリストが作成 - される。現在のカーソル位置は変わらない。より詳しくは - |:cexpr|を参照。 - 例: > - :g/mypattern/caddexpr expand("%") . ":" . line(".") . ":" . getline(".") -< - *:lad* *:laddexpr* -:lad[dexpr] {expr} ":caddexpr"と同様だが、QuickFixリストでなく、カレ - ントウィンドウのロケーションリストが使われる。 - - *:cl* *:clist* -:cl[ist] [from] [, [to]] - 有効なエラーを全て列挙する|quickfix-valid|。[from]及び - もしくは[to]で行数を指定された場合、その範囲のエラーが - 表示される。負であった場合最後のエラーから数える。-1 - が最後のエラーとなる。設定'switchbuf'がバッファの移動 - に関係する。 - -:cl[ist]! [from] [, [to]] - 全てのエラーを表示する。 - - *:lli* *:llist* -:lli[st] [from] [, [to]] - ":clist"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - -:lli[st]! [from] [, [to]] - カレントウィンドウのロケーションリストの中身を全部表示 - する。 - -正しいエラーの位置は隠されたマークによって示されているので、例え行を挿入したり -削除したとしても問題はない(Manx's Z editorではそうではない)。時々マークが幾つ -かの理由で消されてしまう事があり、メッセージ"line changed"がその警告となる。 -一度Vimを終了し再起動した場合マークは失われ正しいエラー位置は把握できない。 - -Vimが|+autocmd|機能つきでビルドされている場合、QuickFixコマンド(':make', -':grep'など)を実行する前後に2つの自動コマンドが利用できる。詳しくは -|QuickFixCmdPre|と|QuickFixCmdPost|を参照。 - - *QuickFixCmdPost-example* -'encoding' とロケールが異なる場合、コンパイラのエラーメッセージと Vim 内部のエ -ンコーディングが異なる場合がある。次のようにすれば、このメッセージを変換でき -る: > -> - function QfMakeConv() - let qflist = getqflist() - for i in qflist - let i.text = iconv(i.text, "cp936", "utf-8") - endfor - call setqflist(qflist) - endfunction - - au QuickfixCmdPost make call QfMakeConv() - - -============================================================================= -2. エラーウィンドウ *quickfix-window* - - *:cope* *:copen* *w:quickfix_title* -:cope[n] [height] 現在のエラーリストを表示するウィンドウを開く。 - [height]が与えられたとき、(余地があれば)ウィンドウの - 高さがその値になる。与えられなければウィンドウの高さは - 10行になる。 - ウィンドウは'buftype'の値が"quickfix"である特別なバッ - ファを含んでいる。これを変更してはならない。 - すでにQuickFixウィンドウがある場合はそれがカレントウィ - ンドウになる。2個目のQuickFixウィンドウを開くことは出 - 来ない。ウィンドウの w:quickfix_title 変数を設定するこ - とで、エラーリストを生成したコマンドを表示するようなこ - とができる。変数の値は 'statusline' が適切に調整されて - いればステータスラインに表示される。 - - *:lop* *:lopen* -:lop[en] [height] カレントウィンドウのロケーションリストを表示するウィン - ドウを開く。カレントウィンドウにロケーションリストが存 - 在するときだけ動作する。一度に2個以上のロケーションリ - ストを開くことができる。それ以外は":copen"と同様。 - - *:ccl* *:cclose* -:ccl[ose] QuickFixウィンドウを閉じる。 - - *:lcl* *:lclose* -:lcl[ose] カレントウィンドウのロケーションリストを表示している - ウィンドウを閉じる。 - - *:cw* *:cwindow* -:cw[indow] [height] 認識されたエラーがあるときQuickFixウィンドウを開く。 - ウィンドウがすでに開いていて認識されたエラーがない - 場合はウィンドウを閉じる。 - - *:lw* *:lwindow* -:lw[indow] [height] ":cwindow"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - -通常、QuickFixウィンドウはスクリーンの一番下に現れる。垂直分割したウィンドウが -ある場合は、一番右下に現れる。常に最大幅を占めるようにさせたい場合は - :botright cwindow -とする。このウィンドウを|window-moving|コマンドで移動させることもできる。 -例えば、一番上に移動させたければCTRL-W Kとする。 -'winfixheight'オプションが設定されれば、'winheight'と'equalalways'を無視し、た -いていその高さを維持する。高さを手動で変更することも出来る(例えばステータスラ -インをマウスで上へドラッグするなど)。 - -QuickFixウィンドウには各行に1個ずつエラーが表示される。その行数はエラー番号に -等しい。":.cc"でカーソル下のエラーに移動できる。<Enter>キーを押すのと行をダブ -ルクリックするのは同じ効果がある。そのエラーを含むファイルがQuickFixウィンドウ -の上に開かれる。そのファイルがすでにウィンドウに開かれていたらそのウィンドウが -アクティブになる。そのウィンドウにあるバッファが変更されていて、そのエラーが別 -のファイルにある場合はエラーへの移動は失敗する。まず、そのウィンドウが破棄して -もよいバッファを含んでいることを確かめなければならない。 - *CTRL-W_<Enter>* *CTRL-W_<CR>* -CTRL-W <Enter>を使うと、新しいウィンドウを開いてそこでエラーにジャンプできる。 - -QuickFixウィンドウが一杯になったとき、2つの自動コマンドイベントが発生する。第 -一は'filetype'オプションが"qf"にセットされ、FileTypeイベントが発生する。それか -らBufReadPostイベントが発生する。そのときのバッファ名は"quickfix"となる。これを -使ってエラーリストに対して操作を行うことができる。例: - au BufReadPost quickfix setlocal modifiable - \ | silent exe 'g/^/s//\=line(".")." "/' - \ | setlocal nomodifiable -これは各行に行番号を追加する。文字列の置換":s"コマンドの中で使われている"\="に -注目。これは式を評価するのに使われる。 -BufWinEnterイベントも発生する。ここでもバッファ名は"quickfix"になる。 - -注意:QuickFixウィンドウ内で変更を加えてもエラーのリストには何の影響もない。変 -更を防ぐために'modifiable'がオフになっている。それでも行を削除や挿入した場合 -は、テキストとエラー番号の関係がめちゃくちゃになる。本当にエラーリストを変更し -たいのなら、QuickFixウィンドウの内容をファイルに保存し、":cfile"を実行、ファイ -ルをパースさせ、新しいエラーリストとして使うこと。 - - *location-list-window* -ロケーションリストウィンドウはロケーションリストの中身を表示する。ロケーション -ウィンドウを開くと、カレントウィンドウに下に開かれ、カレントウィンドウのロケー -ションリストが表示される。ロケーションリストはQuickFixウィンドウに似ているが、 -一度に2個以上のロケーションリストウィンドウを開ける点が異なる。このウィンドウ -内でロケーションリストコマンドを使うと、表示されているロケーションリストが使わ -れる。 - -ロケーションリストウィンドウからファイルを選択すると、以下のステップによって、 -そのファイルを編集するウィンドウが探される。 - -1. ロケーションリストウィンドウに表示されているロケーションリストに関連付けら - れているウィンドウがあるなら、そのウィンドウが使われる。 -2. 上のステップが失敗した場合、そのファイルが既に他のウィンドウで開かれている - なら、そのウィンドウが使われる。 -3. 上のステップが失敗した場合、'buftype'がセットされていないバッファを表示して - いるウィンドウが存在するなら、そのウィンドウが使われる。 -4. 上のステップが失敗した場合、新しいウィンドウでファイルが開かれる。 - -上の全ての場合において、選択されたウィンドウに対してまだロケーションリストが関 -連付けられていなかった場合、ロケーションリストウィンドウに表示されているロケー -ションリストが関連づけられる。 - -============================================================================= -3. 複数のエラーリストを使う *quickfix-error-lists* - -これまでは一つだけのエラーリストがあると仮定してきた。実際は最後に使った10個 -迄のエラーリストが記憶される。新しいリストではじめた時には、以前のリストは自動 -的に保存される。古いエラーリストにアクセスするために、2つのコマンドが用意され -ている。これらは存在するエラーリストの内1つを現在のエラーリストに設定する。 - - *:colder* *:col* *E380* -:col[der] [count] 古いエラーリストへ移動する。[count]が与えられると、 - その回数繰り返し移動する。既に一番古いエラーリストに - いる場合、エラーメッセージが表示される。 - - *:lolder* *:lol* -:lol[der] [count] ":colder"と同様だが、QuickFixリストでなく、カレン - トウィンドウのロケーションリストが使われる。 - - *:cnewer* *:cnew* *E381* -:cnew[er] [count] 新しいエラーリストへ移動する。[count]が与えられると、 - その回数繰り返し移動する。既に一番新しいエラーリストに - いる場合、エラーメッセージが表示される。 - - *:lnewer* *:lnew* -:lnew[er] [count] ":cnewer"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - -新しいエラーリストが追加された時には、それがカレントリストとなる。 - -":colder"が実行された後で":make"や":grep"が実行され新しいエラーリストが追加さ -れたときは1個新しいリストが上書きされる。これは":grep"|grep|でブラウジングし -ているときに特に便利である。もっと最近のエラーリストを残しておきたい場合は初め -に":cnewer 99"を行うこと。 - -============================================================================= -4. :makeの使い方 *:make_makeprg* - - *:mak* *:make* -:mak[e][!] [arguments] 1. vimが|+autocmd|つきでビルドされているならば、 - |QuickFixCmdPre|に関連付けられた自動コマンドが全て - 実行される。 - 2, オプション'autowrite'がonならば変更のあるバッファは - 保存される。 - 3. 'makeef'からエラーファイルの名前が生成される。 - 'makeef'が"##"を含まずかつ既に名前が存在する場合 - それは削除される。 - 4. オプション'makeprg'で与えられたプログラム(省略時 - "make")が[argument]をオプションにして実行され、 - 出力がerrorfileに保存される(Unixではそれも画面に - echoされる)。 - 5. 'errorformat'を使ってerrorfileが読みこまれる。 - 6. vimが|+autocmd|つきでビルドされているならば、 - |QuickFixCmdPost|に関連付けられた自動コマンドが全て - 実行される。 - 後述のサンプルを参照。 - 7. [!]が与えられていないときは最初のエラーに移動する。 - 8. エラーファイルが削除される。 - 9.|:cnext|や|:cprevious|などのコマンドでエラー間を移動 - できる。上を参照。 - このコマンドは如何なるコメントも受けつけず、どんな " - という文字もargumentの一部とみなされる。 - - *:lmak* *:lmake* -:lmak[e][!] [arguments] - ":make"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - -コマンド":make"はオプション'makeprg'で与えられるコマンドを実行する。これは -オプション'shell'で与えられたシェルにコマンドを渡す事で実行されている。以下を -タイピングするのとほぼ同じである。 - - ":!{makeprg} [arguments] {shellpipe} {errorfile}". - -{makeprg}は'makeprg'オプションで指定された文字列である。"make"に限らず、どんな -コマンドでも使用できる。'%'と'#'の文字は通常通りコマンドライン中で展開される。 -拡張子無しの現在ファイル名を表すのに"%<"、拡張子無しの代替ファイル名を表すのに -"#<"が使える。例えば: - - :set makeprg=make\ #<.o - -[arguments] ":make"より後に入力した全て。 -{shellpipe} オプション'shellpipe' -{errorfile} オプション'makeef'。"##"は一意な名前にする - -コマンドがargumentsの後にオプションを必要とするならば、{makeprg}の中で引数リス -トに展開される置換子"$*"が使用できる。$*は引数全てに置換えられる。例: - :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} -またはより単純に - :let &mp = 'latex \\nonstopmode \\input\{$*}' -"$*"は次の例のように何度でも与える事ができる: - :set makeprg=gcc\ -o\ $*\ $* - -オプション'shellpipe'の省略値はAmiga、MS-DOSとWin32では">"である。これはコンパ -イラの出力が直接ファイルに出力されスクリーンには出力されないことを意味する。 -Unixでは"| tee"が使用される。コンパイラがファイルに出力すると同時にスクリーン -にも表示される。使っているシェルに応じて標準エラーへの出力も含めるために -"|& tee"や"2>&1| tee"が省略値となる。 - -'shellpipe'が空の場合、{errorfile}が省略される。これはコンパイラ自身がエラー -ファイルを作成する場合(Manx's Amiga C)に便利である。 - - -QuickFixCmdPost を使ってエンコーディングを修正する ~ - -ビルドプログラムが出力するメッセージと 'encoding' の値が異なる場合がある。この -例は、Vim がそのエラーメッセージを読み込んだ後でエンコーディングを変換する方法 -を示している: > - - function QfMakeConv() - let qflist = getqflist() - for i in qflist - let i.text = iconv(i.text, "cp936", "utf-8") - endfor - call setqflist(qflist) - endfunction - - au QuickfixCmdPost make call QfMakeConv() - -(Faque Cheng による例) - -============================================================================== -5. :vimgrepと:grepの使い方 *grep* *lid* - -Vimにはパターンを検索する方法が2つある: 内部grepと外部grepである。内部grepの利 -点は、全てのシステム上で動作し、Vimの強力な検索パターンを使えることである。内 -部grepが目的に合わない場合は外部grepを使うことができる。 - -内部grepはファイルをメモリに読み込むため、より遅い。利点は: -- ファイルを開くときと同様に改行コードとエンコーディングが自動的に認識される。 -- Vimの検索パターンを使う。複数行にわたるパターンが使える。 -- プラグインが有効になっていれば、圧縮ファイル、リモートファイルを検索できる。 - |gzip| |netrw| - -これを行うために、Vimは各ファイルを編集するときと同じように読み込む。そのファ -イルにマッチがなかったら、そのバッファは消去(wiped out)される。多数のファイル -を扱うときのメモリ不足やファイル記述子不足を避けるために、ここではオプション -'hidden'は無視される。しかし、コマンド修飾子|:hide|が使われたときは、バッファ -が読み込まれたままになる。これによって、同じファイルを続けて検索するのがとても -高速になる。 - -Note: 検索結果へのリンク一覧を開くには |:copen| (|:lgrep| なら |:lopen|) が使 -われる。|:silent| コマンドを使うことで grep の出力が画面いっぱいに表示されるの -を防ぐことができる。|:grep| コマンドを ":grep!" 形式で使うと最初のマッチに自動 -的にジャンプしなくなる。これらのコマンドを組み合わせて NewGrep コマンドを作る -と次のようになる: > - - command! -nargs=+ NewGrep execute 'silent grep! <args>' | copen 42 - - -5.1 Vimの内部grepの使い方 - - *:vim* *:vimgrep* *E682* *E683* -:vim[grep][!] /{pattern}/[g][j] {file} ... - ファイル{file}から{pattern}を検索し、マッチ位置をエ - ラーリストに追加する。 - フラグ'g'がない場合、各行は1度だけ追加される。 - 'g'がある場合、マッチ位置が毎回追加される。 - - {pattern}はVimの検索パターンである。/で囲まない場合、 - それが{pattern}中に現れない限り、どんな非ID文字 - (|'isident'|を参照)でも使える。 - 'ignorecase'が適用される。パターン中に|/\c|を含めると - 大文字小文字を区別しなくなり、|/\C|を含めると区別する - ようになる。これは'ignorecase'より優先される。 - 'smartcase'は適用されない。 - - このコマンドの前に数字が置かれると、その数が検索する - マッチの最大数となる。":1vimgrep pattern file"とすると - 最初のマッチだけを検索する。マッチが存在するかどうかだ - けをチェックしたく、それが見つかったらすぐに終了してほ - しい場合に便利である。 - - フラグ'j'がない場合、最初のマッチへジャンプする。 - 'j'がある場合はQuickFixリストが更新されるだけである。 - [!]がついた場合、カレントバッファに対する変更は全て失 - われる。 - - 進行状況を示すため、1秒程度ごとに検索されたファイル名 - が表示される。 - 例: > - :vimgrep /an error/ *.c - :vimgrep /\<FileName\>/ *.h include/* - :vimgrep /myfunc/ **/*.c -< "**"の使い方については|starstar-wildcard|を参照。 - -:vim[grep][!] {pattern} {file} ... - 上と同様だが、パターンを非ID文字で囲むのでなく、空白 - でパターンを区切る。パターンはID文字で始まらねばなら - ない。 - 例: > - :vimgrep Error *.c -< - *:lv* *:lvimgrep* -:lv[imgrep][!] /{pattern}/[g][j] {file} ... -:lv[imgrep][!] {pattern} {file} ... - ":vimgrep"と同様だが、新しくエラーリストを作る代わり - に、現在のリストに追加する。 - - *:vimgrepa* *:vimgrepadd* -:vimgrepa[dd][!] /{pattern}/[g][j] {file} ... -:vimgrepa[dd][!] {pattern} {file} ... - ":vimgrep"と同様だが、QuickFixリストでなく、カレン - トウィンドウのロケーションリストが使われる。 - - *:lvimgrepa* *:lvimgrepadd* -:lvimgrepa[dd][!] /{pattern}/[g][j] {file} ... -:lvimgrepa[dd][!] {pattern} {file} ... - ":vimgrepadd"と同様だが、QuickFixリストでなく、カレン - トウィンドウのロケーションリストが使われる。 - -5.2 外部grep -Vimはコンパイラに対するのと同じ方法(|:make|参照)で"grep"やGNU id-utilsなどの -grepライクなプログラムと連携できる。 - -[Unix豆知識:Unixのコマンド"grep"の名前は":g/re/p"に由来している。"re"はRegular - Expression(正規表現)を意味する。] - - *:gr* *:grep* -:gr[ep][!] [arguments] ":make"と同じようにしかし'makeprg'の代りに'grepprg'が - 'errorformat'の代りに'grepformat'が使われる。 - 'grepprg'が"internal"の場合、|:vimgrep|と同様に機能す - る。その場合、パターンが区切り文字が囲まれていなければ - ならないことに注意。 - - *:lgr* *:lgrep* -:lgr[ep][!] [arguments] ":grep"と同様だが、QuickFixリストでなく、カレントウィ - ンドウのロケーションリストが使われる。 - - *:grepa* *:grepadd* -:grepa[dd][!] [arguments] - ":grep"と似ているが、新しいエラーリストを作らず、解釈さ - れたエラーが現在のリストに追加される。 - Example: > - :call setqflist([]) - :bufdo grepadd! something % -< 1番目のコマンドは新しい空のエラーリストを作成する。2 - 番目のコマンドはバッファリスト内の各バッファに対し - "grepadd"を実行する。最初のエラーへジャンプするのを避け - るために!を使っていることに注意。|:bufdo|でジャンプする - ことはできない。 - 引数リスト内のファイルに対して実行し、マッチがないファ - イルでのエラーを回避する例: > - :silent argdo try - \ | grepadd! something % - \ | catch /E480:/ - \ | endtry" -< - *:lgrepa* *:lgrepadd* -:lgrepa[dd][!] [arguments] - ":grepadd"と同様だが、QuickFixリストでなく、カレント - ウィンドウのロケーションリストが使われる。 - -5.3 grepをセットアップする - -標準的な"grep"プログラムがインストールされていれば:grepコマンドはデフォルトの -ままで動くだろう。使い方は標準的なコマンドにとてもよく似ている: - - :grep foo *.c - -これは拡張子.cの全てのファイルの中から部分文字列"foo"を検索する。:grepへの引数 -はそのまま"grep"プログラムに渡されるので、その"grep"がサポートするオプションは -なんでも使うことができる。 - -デフォルトでは:grepはgrepを-nオプションつきで呼び出す(これはファイル名と行番号 -を出力させる)。これは'grepprg'オプションで変更できる。次のような場合に'grepprg' -を変更する必要があるだろう: - -a) "grep"以外の名前のプログラムを使っているとき -b) grepをフルパスで呼ばなければならないとき -c) 他のオプションを自動的に渡したいとき(例:大文字・小文字の無視) - -"grep"が実行されると、Vimはその結果を'grepformat'オプションに従って解釈する。 -このオプションは'errorformat'オプションと同様にはたらくので詳細はそちらを参照 -すること。あなたのgrepが標準的でない書式で出力したり、あるいは特別な書式を持つ -他のプログラムを使っている場合は'grepformat'をデフォルト値から変更する必要が -あるだろう。 - -結果が解釈されると、|quickfix|モードにおけるコンパイルエラーと同様に、Vim -はマッチした部分を含む最初のファイルを読み込み、対応した行へジャンプする。その -後は|:cnext|,|:clist|などのコマンドを使って他のマッチにジャンプすることが出来 -る。 - - -5.4 id-utilsと共に:grepを使う - -:grepをGNU id-utilsと共に使うにはこのようにする: - - :set grepprg=lid\ -Rgrep\ -s - :set grepformat=%f:%l:%m - -そして - :grep (regexp) - -これで期待通りの動作をする。 -(最初にmkidをするのを忘れていなければ) - - -5.5 :vimgrepや:grepを使ってソースコードをわたり歩く - -Vimが保存するエラーリストのスタックを使うことによって、ファイルをわたり歩き、 -関数とその関数が呼んでいる関数を探すことができる。例えば、read_file()関数に引 -数を加えたいとする。次のようにコマンドを打てばよい: - - :vimgrep /\<read_file\>/ *.c - -:cnでマッチのリストを巡り、引数を加えることが出来る。またあるとき上位の関数msg -()から新しい引数を得て、それを変更しなければならないとする。ならばこうするとよ -い: - :vimgrep /\<msg\>/ *.c - -msg()関数を変更しているときに、上位から引数を得なければならない関数をもう1個 -見つけたとする。ならばその関数を見つけるのにまた":vimgrep"を使えばよい。1つの -関数が終わったら、 - - :colder - -とすれば1つ前に戻ることができる。 - -これはツリーをわたるのに似ている:":vimgrep"が1レベル深く進むにつれて、分岐の -リストが1つ作られる。":colder"は1つ上に戻る。":vimgrep"と":colder"を使ってツ -リーに似た方法ですべての場所をわたることができる。これを一貫して行えば、"todo" -のリストを書き留めることなく、すべての場所に行くことができる。 - -============================================================================= -6. コンパイラを選ぶ *compiler-select* - - *:comp* *:compiler* *E666* -:comp[iler][!] {name} コンパイラ{name}を使うときに機能するオプション - を設定する。"!"オプションがない場合は現在の - バッファに対して設定される。"!"がある場合はグ - ローバルオプションが設定される。 - "file.foo"で":compiler foo"とし、その後別の - バッファで":compiler! bar"としたとき、Vimは - "file.fo o"では"foo"を使い続ける。 - {|+eval|機能なしでコンパイルされた場合には使用 - できない} - -"compiler"ディレクトリ内にあるVimプラグインによって、選択されたコンパイラを使 -うためのオプションが設定される。":compiler"はローカルオプションを設定し、"compi -ler!"はグローバルオプションを設定する。 - - *current_compiler* -Vimの古いバージョンをサポートするために、それらのプラグインは常に"b:current_com -piler"でなく"current_compiler"を使う。このコマンドが実際に行うことは次の通り: - -- 変数"current_compiler"と"b:current_compiler"を削除する -- ユーザーコマンド"CompilerSet"を定義する。"!"がついた場合は":set"を行い、"!"が - 無い場合は":setlocal"を実行する。 -- ":runtime! compiler/{name}.vim"を実行する。このプラグインは"CompilerSet"に伴 - うオプションを設定し、変数"current_compiler"をそのコンパイラの名前に設定する - と期待される。 -- ユーザーコマンド"CompilerSet"を削除する。 -- "b:current_compiler"を"current_compiler"の値に設定する。 -- "!"が無い場合は"current_compiler"の元の値を復元する。 - - -コンパイラプラグインを書くためには|write-compiler-plugin|を参照せよ。 - - -GCC *quickfix-gcc* *compiler-gcc* - -GCC用に設定できる変数は1つある: - -g:compiler_gcc_ignore_unmatched_lines - GCC用に定義されたどのパターンにもマッチしない - 行を無視する。makeから起動されたコマンドの出力 - のせいで誤検出(false positive)が発生してしまう - ときに有用である。 - - -MANX AZTEC C *quickfix-manx* *compiler-manx* - -Amiga上でManx's Aztec C compilerとともにVimを使うには次のようにする: -- 環境変数CCEDITを次のコマンドで設定する: - mset "CCEDIT=vim -q" -- -qfオプションをつけてコンパイルする。もしコンパイラがエラーを見つけたらVimが - カーソルを最初のエラーの上に置いた状態で起動する。エラーメッセージは最後の行 - に表示される。上で述べたコマンドを使って他のエラーへ移動することができる。エ - ラーを修正し、ファイルを保存できる。 -- Vimを普通に終了するとコンパイラが同じファイルを再コンパイルする。:cqコマンド - で終了した場合はコンパイラは終了する。エラーを修正できないときや、まず他の - ファイルをコンパイルする必要があるときはそうするとよい。 - -AmigaにおけるQuickfixモードには他にも制限がある。コンパイラは最初の25個のエ -ラーしか出力しない(Manx'sのドキュメントにはそれ以上出力する方法が書かれていな -い)。それ以上のエラーを探したいのならば、幾つかのエラーを修正しエディタを抜け -る必要がある。再コンパイルの後残り25個のエラーが出てくる - -Vimがコンパイラから起動された場合、:shやいくつかの:!コマンドは機能しない。Vim -がコンパイラと同じプロセスの中で動いているため、標準出力が利用できないからで -ある。 - - -PERL *quickfix-perl* *compiler-perl* - -Perl コンパイラプラグインはコンパイルはしないが、Perl 内部の構文チェック機能を -呼び出し、その出力を解析してエラーを QuickFix モードで修正できるようにする。 - -チェックするファイルの中に "no warnings" または "$^W = 0" と書いてあっても関係 -なく警告が表示される。これを無効にするには g:perl_compiler_force_warnings に 0 -を代入する。例: > - let g:perl_compiler_force_warnings = 0 - - -PYUNIT COMPILER *compiler-pyunit* - -これは実際にはコンパイラではなく、Python言語用のユニットテストフレームワークで -ある。PYUNITはバージョン2.0からPython標準ディストリビューションに含まれるよう -になった。それより古いバージョンは -http://pyunit.sourceforge.net -で入手できる。 - -フレームワークの助けを借りてテストを走らせるとき、エラーがあればVimによって解 -釈され、QuickFixモードで表示される。 - -残念ながら、テストを走らせる標準的な方法はない。alltests.pyスクリプトがよく使 -われると思われるが、それだけである。 -よって、'makeprg'に対する実用的な値は - setlocal makeprg=./alltests.py " テストスイートを走らせる - setlocal makeprg=python % " 1つのテストケースを走らせる -となる。 - -次も参照。 -http://vim.sourceforge.net/tip_view.php?tip_id=280. - - -TEX COMPILER *compiler-tex* - -ディストリビューションに含まれているTeX用のコンパイラスクリプト($VIMRUNTIME/com -piler/tex.vim)は、可能ならmakeコマンドを使う。コンパイラがカレントディレクトリ -に"Makefile"または"makefile"というファイルを見つけたら、*TeXファイルをmakeを -使って処理しようとし、そのmakefile通りの動作をする。この場合コンパイラ -は'errorfor mat'を*TeX出力用にセットし、'makeprg'は触らずにそのままにしてお -く。"Makefie"も" makefile"も見つからない場合はコンパイラはmakeを使わない。 -makefileを無視するように指定することもできる。変数b:tex_ignore_makefileかg:tex_ -ignore_makefileを設定すればよい(これらは存在するかのみチェックされる)。 - -コンパイラがmakeを使わないことになったら、コンパイラは入力を処理するプログラム -を選択する。変数b:tex_flavorかg:tex_flavor(この順で探される)が存在すれば、そ -れが:makeコマンドのためのオプションを定義する。もし両方とも存在しなければ、既 -定値"latex"になる。例えば、AMS-TeXで書かれたmypaper.texから\input-ed chapter2.t -exを編集中に > - - :let b:tex_flavor = 'amstex' - :compiler tex -< [editing...] > - :make mypaper - -処理するファイルの名前を引数に指定しなければならないことに注意(\input-edか\inc -lude-edファイルを編集中に正しいファイルを処理するため;%を引数なしに置換する -ポータブルな方法もよい)。これはソースではなく、ターゲットを指定するというmake -の意味論ではないが、拡張子".tex"を除いたファイル名を指定してもよい。その場合、 -「"filename.dviまたはfilename.pdfまたは filename.some_result_extension -をメイクしろ」ということを意味する。 - -注意:tex コマンドライン文法はMikTex(Srinath Avadhanulaによって提案された)とte -TeX(Artem Chuprinaによってチェックされた)の両方で使えるように設定されている。 -|errorformat-LaTeX|からの提案は他のシェルやOSで動かせるようにするには複雑すぎる -し、他のTeXオプションを使うことも許さない。もしあなたのTeXが"-interaction=nonst -opmode"をサポートしていなければ、コマンドラインから\nonstopmodeを表現する他の -方法とともにその旨を報告してください。 - -============================================================================= -7. エラーフォーマット *error-file-format* - - *errorformat* *E372* *E373* *E374* - *E375* *E376* *E377* *E378* -'errorformat'オプションは認識されるエラーフォーマットのリストを指定する。その -中からエラーメッセージにマッチした最初のフォーマットが使われる。複数のフォーマッ -トを指定して、数種類のメッセージに対応したり、複数のコンパイラに対応したりする -ことができる。|efm-entries|を参照。 - -'errorformat'の各要素は、scanfに似たフォーマットを記述する文字列である。はじめ -に、scanfがどのようにはたらくか知る必要がある。Cコンパイラのドキュメントを読ん -でください。以下はVimが理解する%の項目である。他は無効になる。 - -'errorformat'中の特別な文字はコンマとバックスラッシュである。それがどう扱われ -るかは|efm-entries|を参照。"%%"はリテラル"%"にマッチする。よってこれはバック -スラッシュでエスケープしない。 - -注意:デフォルトでは大文字と小文字の違いは無視される。もし大文字・小文字の区別 -をしたいなら"\C"をパターンに付け加える|/\C|。 - - -基本要素 - - %f ファイル名(文字列を検索) - %l 行番号(数字を検索) - %c 桁番号(エラーの桁を表す数字(<Tab>1個は1桁と数える)) - %v 画面上の桁番号(エラーの画面上の桁を表す番号(<Tab>1個 - はスクリーン上8桁と数える) - %t エラーの種類(1文字を検索) - %n エラー番号(数字を検索) - %m エラーメッセージ(文字列を検索) - %r その行の残り全部 %O/%P/%Q - %p ポインタ行('-', '.', ' 'の列を検索し、その長さを桁 - 番号とする) - %*{conv} scanfに割り当てられない変換 - %% 1個のリテラル'%' - %s テキスト検索 (文字列を検索) - -"%f"の変換は現在の'isfname'の設定に依存する。"~/"はホームディレクトリ名に展開 -され、環境変数も展開される。 - -変換"%f"と"%m"はその文字列の終端を検出しなければならない。通常は、後に続く文字 -と要素がマッチすれば、そこが終端になる。もし後に続く要素がなかったら、その行の -残りの部分がマッチする。"%f"の後に'%'かバックスラッシュが続いているなら、それ -は'isfname'文字の列を検索する。 - -MS-DOS, MS-Windows and OS/2では、"C:"で始まる部分は"%f"に含まれる。"%f:"と指定 -したときでもそうなる。これはアルファベット1文字の名前のファイルは検出されない -ことを意味する。 - -"%p"の後には通常"^"をつける。これは、以下のような出力によってエラーの桁を示す -コンパイラ用に使える: > - ^ -または > - ---------^ -これは複数行のエラーメッセージでも使える。実用的なサンプルとしては -|errorformat-javac|を参照。 - -"%s"はエラー行の位置を探すためのテキストを指定する。そのテキストは文字列リテ -ラルして使われる。検索テキストに正確にマッチするエラー行を探すために、"^"と"$" -がテキストに加えられる。また、テキストの先頭に"\V"が追加され、"very nomagic"と -される。"%s"はエラー出力中の行番号がない行を探すために使うことができる。シェル -コマンド"grep"の出力のように。 -パターンがある場合は行番号は使われない。 - -ディレクトリを変更する - -次の大文字の変換文字は、特別なフォーマット文字列のタイプを指定する。これらのう -ち高々1つをコンマ区切りのフォーマットパターンの先頭につけることができる。 -"%f"によって読まれるファイル名の前につけたす必要があるディレクトリ名を出力する -コンパイラがある(例:GNU make)。以下のコードはそれらのディレクトリ名を解釈す -るのに使われる。そのディレクトリ名は内部のディレクトリスタックに保存される。 - *E379* - %D "enter directory" フォーマット文字列。これ以下の%fはそ - のディレクトリ名を検索する。 - %X "leave directory" フォーマット文字列。これ以下の%fは - ディレクトリスタックの1つ前のディレクトリを検索する。 - -"enter directory"や"leave directory"フォーマットを定義する場合、"%D"や"%X"は部 -分文字列の最初に置かれなけれならない。Vimはディレクトリ変更を追跡し -相対パスによって指定されたファイル名の前にカレントディレクトリ名をつけたす。 -Tipsや制限など詳細は|quickfix-directory-stack|を参照。 - -複数行にわたるメッセージ *errorformat-multi-line* - -複数行メッセージにわたるメッセージを解釈することも可能である。取りうるプリ -フィックスは: - %E 複数行エラーメッセージの開始 - %W 複数行警告メッセージの開始 - %I 複数行情報メッセージの開始 - %A 複数行メッセージの開始(種類指定なし) - %> 現在と同じパターンで始まっている次行 |efm-%>| - %C 複数行メッセージの継続 - %Z 複数行メッセージの終了 -これらに対して'+'と'-'をつけることもできる。|efm-ignore|を参照。 - -パターンに"\n"を含めても、複数行のメッセージにはマッチしない。 - -例:コンパイラが次のフォーマットでエラーを出力したとする。 -(行頭の行番号は実際の出力の一部ではない): - - 1 Error 275 ~ - 2 line 42 ~ - 3 column 3 ~ - 4 ' ' expected after '--' ~ - -適切なエラーフォーマット文字列はこのようになる: - :set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m - -すると、このエラーに対し|:clist|が表示するエラーメッセージはこのようになる: - - 1:42 col 3 error 275: ' ' expected after '--' - -別の例:次のエラーメッセージを出力するPythonインタープリタを考える。 -(行頭の行番号は実際の出力の一部ではない): - - 1 ============================================================== - 2 FAIL: testGetTypeIdCachesResult (dbfacadeTest.DjsDBFacadeTest) - 3 -------------------------------------------------------------- - 4 Traceback (most recent call last): - 5 File "unittests/dbfacadeTest.py", line 89, in testFoo - 6 self.assertEquals(34, dtid) - 7 File "/usr/lib/python2.2/unittest.py", line 286, in - 8 failUnlessEqual - 9 raise self.failureException, \ - 10 AssertionError: 34 != 33 - 11 - 12 -------------------------------------------------------------- - 13 Ran 27 tests in 0.063s - -このメッセージに関する情報だけを|:clist|で表示させたいところだろう。 -このように: - 5 unittests/dbfacadeTest.py:89: AssertionError: 34 != 33 - -そのためにはエラーフォーマット文字列を次のように定義する: - :set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m - -"%C"を"%A"の前に置いていることに注意:' %.%#'(これは正規表現' .*'を意味する) -がスペースで始まるすべての行にマッチするので、それが7行目を以降を隠してくれ -る。そうでないと7行目は別のエラーメッセージの始まりと解釈されてしまう。エラー -フォーマットは常に、リストの中から1つ1つ、最初のマッチが起こるまで試されてい -く。 - - *efm-%>* -要素%>は'errorformat'の最初の方に出てくるパターンを試すのを避けるために使え -る。これはほとんど何にでもマッチするパターンに便利である。例えば、エラーが -このようなら: - - Error in line 123 of foo.c: ~ - unknown variable "i" ~ - -これは以下でマッチできる: > - :set efm=xxx,%E%>Error in line %l of %f:,%Z%m -ここで"xxx"には2番目の行にもマッチするパターンが入るとする。 - -重要: エラーフォーマットのどの部分が以前にマッチしたかは記憶されていない。すな -わち、エラーファイルの各行が毎回エラーフォーマットの各行に対してテストされる。 -例えば、次のようになっているとする: > - setlocal efm=aa,bb,cc,dd,ee -ここでaa, bbなどはエラーフォーマット文字列とする。エラーファイルの各行がパター -ンaa,次にbb,次にcc…とテストされる。ccがエラーの1つ前の行にマッチしたからといっ -て、ddが現在行に対して最初にテストされるということにはならない。ccとddが複数行 -エラーフォーマット文字列だったとしても、である。 - -ファイル名を分割する *errorformat-separate-filename* - -1度現れたファイル名を複数のメッセージが参照する場合には、これらのプリフィック -スが有効である。 - %O 1行ファイルメッセージ:マッチ部分を読み込む(それ以前 - に記憶されていたものは消去される) - %P 1行ファイルメッセージ:ファイル%fをスタックにプッシュ - する。 - %Q 1行ファイルメッセージ:スタックから最後のファイル名を - ポップする。 - -例:次のエラーログファイルを出力するコンパイラがあるとする(行番号は実際の出力 -ではない) - - 1 [a1.tt] - 2 (1,17) error: ';' missing - 3 (21,2) warning: variable 'z' not defined - 4 (67,3) error: end of file found before string ended - 5 - 6 [a2.tt] - 7 - 8 [a3.tt] - 9 NEW compiler v1.1 - 10 (2,2) warning: variable 'x' not defined - 11 (67,3) warning: 's' already defined - -このログファイルは[...]で囲まれたファイルに対し複数のメッセージを示している。 -これは次のエラーフォーマットで適切に解釈できる: - :set efm=%+P[%f],(%l\\,%c)%*[\ ]%t%*[^:]:\ %m,%-Q - -|:clist|を呼ぶとこれらをファイル名とともに適切に表示してくれる。: - 2 a1.tt:1 col 17 error: ';' missing - 3 a1.tt:21 col 2 warning: variable 'z' not defined - 4 a1.tt:67 col 3 error: end of file found before string ended - 8 a3.tt:2 col 2 warning: variable 'x' not defined - 9 a3.tt:67 col 3 warning: 's' already defined - -行全体にマッチする他のプリフィックスとは違い、%P, %Q, %Oは同一行の複数のパター -ンにマッチさせるのに使える。それゆえ、次のようにファイルがネストした場合を解釈 -することも出来る: - {"file1" {"file2" error1} error2 {"file3" error3 {"file4" error4 error5}}} -%Oはファイル名情報のプッシュ・ポップを含まない文字列を解釈する。発展例について -は|errorformat-LaTeX|を参照。 - - -メッセージ全体を無視する・使う *efm-ignore* - -'+','-'は大文字の指定文字と組み合わせて使う。'%+A'や'%-G'のように指定文字の前 -につける。 - %- 複数行のマッチを含まない。 - %+ エラー文字列%m中でマッチした行全体 - -プリフィックス%Gだけは'+'か'-'と組み合わせたときのみ意味を持つ。これはコンパイ -ラバージョンのような一般的な情報を含む行か、無視するべきヘッダを読み込む。 - %-G このメッセージを無視する - %+G 一般的なメッセージ - - -パターンマッチング - -古いバージョンのVimとの下位互換性の為にscanf()と同じ"%*[]"という記法がサポート -されている。しかし、フォーマット文字列にVimがサポートするほぼ全ての正規表現を -用いる事も可能である。正規表現言語のメタ文字は普通の文字列やファイル検索の一部 -と重なってしまうから(従って内部的にはエスケープされる必要がある)、メタシンボル -は'%'を付加して表記される必要がある: - %\ 単体の'\'という文字。これは":set errorformat="の定義の - 中ではエスケープされて("%\\")書かれなければならない。 - %. 単体の'.'という文字。 - %# 単体の'*'(!)という文字。 - %^ 単体の'^'という文字。注意: これなしでも行頭にはマッチ - するので、これは特に便利ではない。 - %$ 単体の'$'という文字。注意: これなしでも行末にはマッチ - するので、これは特に便利ではない。 - %[ 単体の'['という文字。文字の範囲[]のために使われる。 - %~ 単体の'~'という文字。 -表現の中でキャラクタクラスを使用する場合(概要は|/\i|を参照)、数量子"\+"を含む -語はscanf()の中に"%*"という記法で書くことができる。例:"%\\d%\\+" ("\d\+", -"どんな数(字)でも")は"%*\\d"と等価である。重要:\(...\)のグループ表現は、内部 -変換に使うため予約されているからフォーマット指定内では使用することができない。 - - -'errorformat'内の複数の要素 *efm-entries* - -複数のコンパイラからの出力を見つけることを可能にするために、カンマで区切って -複数のフォーマットパターンを'errorformat'に設定することができるだろう(注: -カンマ直後の空白は無視される)。完全にマッチした最初のパターンが採択される。 -マッチするものが無い場合、最後にマッチした部分が使われるが、ファイルネームは -除外されエラーメッセージは全体のメッセージとして設定される。複数のコンパイラ -からの出力メッセージにマッチしてしまうパターンがあった(しかし正確には -一致しない)時には、より制限されたもの(訳注:他のメッセージにマッチし難いもの) -の後に置く。パターンの先頭にカンマを含めるにはバックスラッシュ(コマンドset中 -では2度タイプするべきだ)を添える。バックスラッシュを含めるためには2つ与える -(つまりコマンドsetの中では4つタイプする)。また、":set"コマンド内のスペースの前 -にはバックスラッシュを置く必要がある。 - - -有効なマッチ *quickfix-valid* - - -もし'errorformat'に完全には一致しない行が現れた場合、エラーメッセージ全体が -表示され、エントリーは無効とされコマンド":cn"や":cp"使用時にはスキップされる -(有効なエントリーが全く無い場合で無い限り)。エラーメッセージの全てはコマンド -":cl!"で表示する事ができる。 - -エラーフォーマットがファイル名を含んでいないとVimは正しいファイルへジャンプ -することができない。手動でやる必要がある。 - - -例 - -Aztec compilerのファイルの書式は: - - ファイル名>行:列:エラータイプ:識別番号:メッセージ - - ファイル名 エラーが見つかったファイルの名前 - 行 エラーが見つかった行の通し番号 - 列 エラーが見つかった場所の列数(行先頭からの文字数) - タイプ エラーの種類、通常は一文字で'E'か'W' - 識別番号 エラーの番号(マニュアルの検索用) - メッセージ エラーの説明 - -これは'errorformat'をこのように設定すればマッチできる: - %f>%l:%c:%t:%n:%m - -単行エラーを出力するCコンパイラのための幾つかの例: -%f:%l:\ %t%*[^0123456789]%n:\ %m Manx/Aztec C エラーメッセージ - (scanf()は[0-9]を理解しない) -%f\ %l\ %t%*[^0-9]%n:\ %m SAS C用 -\"%f\"\\,%*[^0-9]%l:\ %m generic C compilers用 -%f:%l:\ %m GCC用 -%f:%l:\ %m,%Dgmake[%*\\d]:\ Entering\ directory\ `%f', -%Dgmake[%*\\d]:\ Leaving\ directory\ `%f' - GCC with gmake用(行を連結すること!) -%f(%l)\ :\ %*[^:]:\ %m old SCO C compiler (pre-OS5) -%f(%l)\ :\ %t%*[^0-9]%n:\ %m idem, エラーの種類と番号つき -%f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m - いくつかの拡張つきGCC - -複数行メッセージを扱うために拡張した例が次の所で与えられる。 -|errorformat-Jikes|と|errorformat-LaTeX|を参照。 - -:setコマンドで使うときにはスペースとダブルクォートの前にバックスラッシュが必要 -なことに注意。コンマの前には2つのバックスラッシュを置く。1つは:setコマンド -のため、もう1つはコンマがエラーフォーマットの区切りと認識されるのを避けるため -である。 - - -メッセージをフィルタリングする - -もしコンパイラがフォーマットに合わないエラーメッセージを作成する場合、エラー -メッセージをこのフォーマットに変換するプログラムを書く方法もある。その時は -コマンド":make"によって起動されるプログラムオプション'makeprg'を変更することで -指定できる。例: -> :set mp=make\ \\\|&\ error_filter -パイプ(|)の前のバックスラッシュはコマンドセパレータとして認識されないために -必要。コマンド"set"では空白の前にバックスラッシュが必要。 - -============================================================================= -8. ディレクトリスタック *quickfix-directory-stack* - -Quickfixはmakeの出力を解釈し、使われたディレクトリ全てをスタックで保持する。 -GNU-Makeではディレクトリに入ったり出たりすると常に絶対パスで表示されるので、 -これはむしろシンプルである。これはmakefile中のcdコマンドか、起動パラメータ -"-C dir"(makefileの読みこみ前にディレクトリを変更)なのかには因らない。GNU-Make -に強制的に処理の前後にワーキングディレクトリを表示されるためにスイッチ"-w"を -使用するのは便利かもしれない。 - -GNU-makeを使用しない場合、正しいディレクトリを管理する事はもっと複雑になる。 -例えばAIX-makeはワーキングディレクトリに関してなんの情報も表示しない。 -よってmakefileに細工が必要となる。LessTifのmakefileには"Making {target} in -{dir}"と表示するコマンドがある。ここにはディレクトリを出る時の情報とその相対 -パスが表示されないという重要な問題もある。 - -パスの関係とメッセージ"leave directory"が現れない問題のためにVimでは次の -アルゴリズムで対処している: - -1) 与えられたディレクトリがカレントディレクトリの子か調べる。真ならばそれを - カレントディレクトリとする。 -2) カレントディレクトリの子ディレクトリでなかった場合、上のディレクトリの子 - ディレクトリか(つまり兄弟ディレクトリ)を調べる。 -3) まだディレクトリが見つからない場合、これはVimのカレントディレクトリの子 - ディレクトリだと仮定される。 - -付け加えて、全てのファイルについて認識されたディレクトリに実際に存在するのか調 -べられる。もしもなければディレクトリスタックの中の全てのディレクトリ(サブディ -レクトリではない)について探す。これでも見つからなければVimのカレントディレクト -リにあるものと仮定される。 - -このアルゴリズムには制限がある。この例はmakeがディレクトリに入った時に -"Making all in dir"の形で情報を表示すると仮定している。 - -1) 次のようなディレクトリとファイルがあったとする - ./dir1 - ./dir1/file1.c - ./file1.c - - カレントディレクトリの前にmakeが"./dir1"を処理し"./file1.c"にエラーがあると - Vimは"./dir1/file.c"をロードしてしまう。 - - これはメッセージ"leave directory"があれば解決する事ができる。 - -2) 次のようなディレクトリとファイルがあったとする - ./dir1 - ./dir1/dir2 - ./dir2 - - 次のようになる: - - Makeの出力 Vimが解釈するディレクトリ - ------------------------ ---------------------------- - Making all in dir1 ./dir1 - Making all in dir2 ./dir1/dir2 - Making all in dir2 ./dir1/dir2 - - これはメッセージ"enter directory"に相対パスが記述されるか、メッセージ - "leave directory"が表示されれば解決される。 - -この問題を避けるため、ディレクトリの絶対パスとメッセージ"leave directory" -が表示されるようにすればよい。 - -Makefileの例: - -Unix: - libs: - for dn in $(LIBDIRS); do \ - (cd $$dn; echo "Entering dir '$$(pwd)'"; make); \ - echo "Leaving dir"; \ - done - -上の出力を取り扱うために - %DEntering\ dir\ '%f',%XLeaving\ dir -を'errorformat'につけ加える。 - -注意:Vimはメッセージ"leave directory"の中のディレクトリ名がカレント -ディレクトリかどうかはチェックしない。これが何故メッセージ"Leaveing dir"だけで -良いかの理由だ。 - -============================================================================= -9. 具体的なエラーファイルフォーマット *errorformats* - - *errorformat-Jikes* -IBM Researchによって公開されているJavaコンパイラーJikes(TM)はシンプルなマルチ -ラインエラーメッセージを出力する。 - -このメッセージにマッチする'errorformat'の文字列を下に示す。これをユーザの -|vimrc|に書くことでVimがデフォルトで認識するフォーマットを上書きする事が -できる。またデフォルトに追加インストールする方法は|:set+=|を参照。 - - :set efm=%A%f:%l:%c:%*\\d:%*\\d:, - \%C%*\\s%trror:%m, - \%+C%*[^:]%trror:%m, - \%C%*\\s%tarning:%m, - \%C%m - -Jikes(TM)はオプション"+E"とともに起動されたときは1行エラーメッセージを出力す -る。これは次によってマッチできる。 - - :setl efm=%f:%l:%v:%*\\d:%*\\d:%*\\s%m - - *errorformat-javac* -この'errorformat'は、エラーの桁を示すのに"^"の行を出力するjavac用にうまく動作 -すると報告されている: > - :setl efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%# -または: > - :setl efm=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%# -< -Michael F. Lambが考案した別の方法を以下に示す。これはUnix用で、最初にエラーを -フィルタリングする: > - :setl errorformat=%Z%f:%l:\ %m,%A%p^,%-G%*[^sl]%.%# - :setl makeprg=javac\ %\ 2>&1\ \\\|\ vim-javac-filter - -以下の行を"vim-javac-filter"というファイルに書いて、PATHの通ったディレクトリ( -例えば~/bin)に置き、実行可能にしておく必要がある: > - #!/bin/sed -f - /\^$/s/\t/\ /g;/:[0-9]\+:/{h;d};/^[ \t]*\^/G; - -訳注: BSD sed では動作しないようです。GNU sed では動作します。 - -このsedスクリプトを言葉で説明すると次のようになる: -- 1つのタブを1つのスペースに置換し、 -- ファイル名・行番号・エラーメッセージを含む行をポインタ行("^"の行のこと)の直 - 後に移動する。これによって、エラーメッセージ行とポインタ行の間の使われないテ - キストが無視され、vimの「複数行メッセージ」の記法にマッチするようになり、ま - た、それを「複数行メッセージの継続」として含めなくてもよいようになる。 - - *errorformat-ant* -ant(http://jakarta.apache.org/)用には、各javacの出力行の前につく[javac]を受け -取るために、上のエラーフォーマットを修正しなければならない: - :set efm=%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%# - -javacやjikesとantをともに扱うためにこの'errorformat'を調整することができる。jik -esを使っているなら、jikesの+Eコマンドラインスイッチを使うことをantに教えなけれ -ばならない(このスイッチはjikesに1行エラーメッセージを生成させる)。これがbuil -d.xmlファイルの2行目が行っていることである: - <property name = "build.compiler" value = "jikes"/> - <property name = "build.compiler.emacs" value = "true"/> - -javac、jikesと組み合わせたantを扱う'errorformat'はこうである: - - :set efm=\ %#[javac]\ %#%f:%l:%c:%*\\d:%*\\d:\ %t%[%^:]%#:%m, - \%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%# -< - *errorformat-jade* - -jade (http://www.jclark.com/参照)のエラーを解釈するのは簡単である: - :set efm=jade:%f:%l:%c:%t:%m - - *errorformat-LaTeX* -次のは複数行に渡ってエラーメッセージを表示する(La)TeXタイプセッティング -システム用の'errorformat'文字列を指定する一つの例である。":clist"や":cc" -等々のコマンドは先行する空白を削除して複数行のものを一行にまとめて表示する。 -以下のLaTeX用errorformatはマルチラインエラーを出力する他のコンパイラへ応用する -のは簡単だろう。 - -コマンドは|vimrc|ファイルか別のVimスクリプトファイルに書ける。例えばLaTeXに -関連した内容を含むスクリプトをLaTeXソースの編集時にだけ読みこまれるようにする。 -サンプルの全行をコピーしたことを確認する(順番もそのまま)。行の始まりに見ること -のできる'\'の表記は|line-continuation|を参照。 - - まず'makeprg'をLaTeXが最初のエラーで止まることなく複数のエラー - を返すように準備する。 - :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*} - - マルチラインエラーメッセージの始まり: - :set efm=%E!\ LaTeX\ %trror:\ %m, - \%E!\ %m, - マルチライン警告メッセージの始まり;最初の2つは行番号も含んで - いる。幾つかの正規表現の意味: - - "%.%#" (".*") 文字列(空文字列も含む)にマッチ - - "%*\\d" ("\d\+") matches a number > - \%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#, - \%+W%.%#\ at\ lines\ %l--%*\\d, - \%WLaTeX\ %.%#Warning:\ %m, -< エラー/警告メッセージが続く可能性;最初の一つは行番号も含んで - いる: > - \%Cl.%l\ %m, - \%+C\ \ %m., - \%+C%.%#-%.%#, - \%+C%.%#[]%.%#, - \%+C[]%.%#, - \%+C%.%#%[{}\\]%.%#, - \%+C<%.%#>%.%#, - \%C\ \ %m, -< 次のパターンにマッチする行には重要な情報は含まれていない; - よってメッセージに含まないようにする。 > - \%-GSee\ the\ LaTeX%m, - \%-GType\ \ H\ <return>%m, - \%-G\ ...%.%#, - \%-G%.%#\ (C)\ %.%#, - \%-G(see\ the\ transcript%.%#), -< 通常、空白文字だけの行は表示しない: > - \%-G%*\\s, -< LaTeXの出力ログには個々のライン毎にエラーのあったファイル名が - 特定(記述)されているわけではない;ログのあらゆる所で与えられ、 - 括弧にくくられている。 - 続くパターンはそれらの名前を取り出し内部スタックに保存しようと - 試みる。パターンは時として一つの行を複数回走査(一つ目を - 見つけた後、同じ行に次のを発見しようと)するので、パターンの - 末尾の"%r"が行の残りの部分が次の試行で解釈の対象になることと、 - 行の末尾に達するまでそれが繰り返されることを示す。 - - '('...')'でくくられたファイル名を読み飛ばす;明らかにエラーを - 含まないファイルはスタックに積まない: > - \%+O(%f)%r, -< ファイル名をスタックに積む。名前は'('の後に与えられる。 > - \%+P(%f%r, - \%+P\ %\\=(%f%r, - \%+P%*[^()](%f%r, - \%+P[%\\d%[^()]%#(%f%r, -< ')'が見つかったらファイル名をスタックから取り崩す。 > - \%+Q)%r, - \%+Q%*[^()])%r, - \%+Q[%\\d%*[^()])%r - -幾つかのケースにおいてLaTeXの出力したログの中のファイル名を正確に取り出す事が -できないことに注意。括弧の対応が正しくつかない時パーサは混乱してしまう。上記の -サンプルはもっとも一般的なケースだけ検出できるようにしてある。目的に合わせて -このサンプルを変える事はできる。例えば全てのいまいましい"Overfull ..."という -警告メッセージがエラーとして認識されてしまう事を防ぐ事ができる。 -付け加えてLaTeXコンパイラの出力をフィルタリングするには、[La]TeXコンパイラに -よって生成されるファイル*.logを直接読むことも可能である。これは起こる可能性の -あるエラーについてより便利な情報を沢山含んでいる。しかしそのように複雑な -ファイルを正確に解釈するには、外部フィルタを使うほうが良い。そのようなVimに -識別されるフィルタの作り方はずっと以前に述べたので参照。 - - *errorformat-Perl* -$VIMRUNTIME/tools にefm_perl.plスクリプトがある。これはPerlのエラーメッセー -ジをフィルタし、QuickFixモードが理解できるフォーマットに変換する。使い方は -ファイルの先頭を参照。(このスクリプトはもう非推奨で、今は |compiler-perl| を参 -照のこと) - - - -vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/quickref.jax b/runtime.old/doc/quickref.jax deleted file mode 100644 index 51687f994..000000000 --- a/runtime.old/doc/quickref.jax +++ /dev/null @@ -1,1416 +0,0 @@ -*quickref.txt* For Vim バージョン 7.3. Last change: 2011 Jun 12 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - Quick reference guide - - *quickref* *Contents* - tag subject tag subject ~ -|Q_ct| ヘルプファイルの一覧 |Q_re| 繰り返しコマンド -|Q_lr| 移動: 左右 |Q_km| キーマップ -|Q_ud| 移動: 上下 |Q_ab| 短縮入力 -|Q_tm| 移動: 文脈 |Q_op| オプション -|Q_pa| 移動: パターン検索 |Q_ur| Undo/Redoコマンド -|Q_ma| 移動: マーク |Q_et| 外部コマンド -|Q_vm| 移動: 雑多 |Q_qf| Quickfixコマンド -|Q_ta| 移動: タグの利用 |Q_vc| その他の雑多なコマンド -|Q_sc| スクロール |Q_ce| Exモード: コマンド行編集 -|Q_in| 挿入: 文字列の挿入 |Q_ra| Exモード: 範囲指定 -|Q_ai| 挿入: キー |Q_ex| Exモード: 特殊文字 -|Q_ss| 挿入: 特殊キー |Q_st| Vim の起動方法 -|Q_di| 挿入: 合字(digraph) |Q_ed| ファイル編集 -|Q_si| 挿入: 特殊な挿入 |Q_fl| 引数リストの使い方 -|Q_de| 変更: 文字の削除 |Q_wq| 書き出しと終了 -|Q_cm| 変更: コピーと移動 |Q_ac| 自動コマンド -|Q_ch| 変更: 文字列の変更 |Q_wi| 複数ウィンドウのコマンド -|Q_co| 変更: 複雑な変更 |Q_bu| バッファ一覧コマンド -|Q_vi| ビジュアルモード |Q_sy| シンタックスハイライト -|Q_to| テキストオブジェクト |Q_gu| GUIコマンド - |Q_fo| 折り畳みコマンド - ------------------------------------------------------------------------------- -以下の説明中の N はコマンドの直前に回数指定ができることを示します。 ------------------------------------------------------------------------------- -*Q_lr* 左右の移動 - -|h| N h 左に N 桁移動 ( CTRL-H, <BS>, <Left> キーでも同じ) -|l| N l 右に N 桁移動 ( <Space>,<Right> キーでも同じ) -|0| 0 行の先頭に移動 ( <Home> キーでも同じ) -|^| ^ 行の先頭(但し空白文字類以外)に移動 -|$| N $ 行の末尾に移動。(N-1行、下に移動) - ( <End> キーでも同じ) -|g0| g0 画面上の行の先頭に移動。(複数行にまたがる時の - 動きが"0"と違います) -|g^| g^ 画面上の行の先頭(但し空白文字類以外)に移動。 - (複数行にまたがる時の動きが"^"と違います) -|g$| N g$ 行の末尾に移動。(複数行にまたがる時の動きが"$"と違 - います) -|gm| gm 現在行の中央(端末の横幅の半分の桁位置)に移動 -|bar| N | N桁目に移動。(デフォルトは1) -|f| N f{char} 現在位置から右方向にあるN個目の{char}に移動 -|F| N F{char} 現在位置から左方向にあるN個目の{char}に移動 -|t| N t{char} 現在位置から右方向にあるN個目の{char}の左側に移動 -|T| N T{char} 現在位置から左方向にあるN個目の{char}の右側に移動 -|;| N ; 直前の"f", "F", "t", "T"を N 回繰り返す。 -|,| N , 直前の"f", "F", "t", "T"を逆方向に N 回繰り返す。 ------------------------------------------------------------------------------- -*Q_ud* 上下の移動 - -|k| N k 上に N 行移動 (CTRL-P, <Up> キーでも同じ) -|j| N j 下に N 行移動 (CTRL-J, CTRL-N, <NL>, <Down> でも同じ) -|-| N - 上に N 行移動し、行頭の非空白文字に移動 -|+| N + 下に N 行移動し、行頭の非空白文字に移動(CTRL-M, <CR> - キーでも同じ) -|_| N _ 下に N-1 行移動し,行頭の非空白文字に移動 -|G| N G N 行目(デフォルトは最後の行)に移動し、行頭の非空白文 - 字に移動 -|gg| N gg N 行目(デフォルトは1行目)に移動し、行頭の非空白文字 - に移動 -|N%| N % ファイルの N パーセント目に移動。このコマンドは N の - 指定が必須。無指定の場合は|%|コマンド扱い。 -|gk| N gk 画面上で N 行上に移動。(複数行にまたがる行がある場合 - の動きが"k"と異なる) -|gj| N gj 画面上で N 行下に移動。(複数行にまたがる行がある場合 - の動きが"j"と異なる) ------------------------------------------------------------------------------- -*Q_tm* テキスト文脈単位の移動 - -|w| N w N 個目の単語分、先に進む -|W| N W 空白で区切られた単語(=|WORD|) N 個分、先に進む -|e| N e N 個目の単語のお尻まで進む -|E| N E 空白で区切られた単語(=|WORD|) N 個目のお尻まで進む -|b| N b N 個目の単語分、前に戻る -|B| N B 空白で区切られた単語(=|WORD|) N 個分、前に戻る -|ge| N ge N 個目の単語のお尻まで戻る -|gE| N gE 空白で区切られた単語(=|WORD|) N 個目のお尻まで戻る - -|)| N ) N センテンス(文)分、先に進む -|(| N ( N センテンス分、前に戻る -|}| N } N パラグラフ(段落)分、先に進む -|{| N { N パラグラフ分、前に戻る -|]]| N ]] N セクション(章)分、先に進み、その先頭に移動 -|[[| N [[ N セクション(章)分、前に戻り、その先頭に移動 -|][| N ][ N セクション(章)分、先に進み、その末尾に移動 -|[]| N [] N セクション(章)分、前に戻り、その末尾に移動 -|[(| N [( N 個目の呼応していない'('まで戻る -|[{| N [{ N 個目の呼応していない'{'まで戻る -|[m| N [m N 個前のメソッドの先頭まで戻る(Java用) -|[M| N [M N 個前のメソッドの末尾まで戻る(Java用) -|])| N ]) N 個目の呼応していない')'まで進む -|]}| N ]} N 個目の呼応していない'}'まで進む -|]m| N ]m N 個先のメソッドの先頭まで進む(Java用) -|]M| N ]M N 個先のメソッドの末尾まで進む(Java用) -|[#| N [# N 個目の呼応していない"#if"や"#else"まで戻る -|]#| N ]# N 個目の呼応していない"#else"や"#endif"まで進む -|[star| N [* N 個前のコメントの先頭まで戻る -|]star| N ]* N 個先のコメントの末尾まで進む ------------------------------------------------------------------------------- -*Q_pa* パターン検索 - -|/| N /{pattern}[/[offset]]<CR> - N 回目の{pattern}を含む個所を下方向に検索 -|?| N ?{pattern}[?[offset]]<CR> - N 回目の{pattern}を含む個所を上方向に検索 -|/<CR>| N /<CR> 直前と同じ条件の検索を下方向に対して実施 -|?<CR>| N ?<CR> 直前と同じ条件の検索を上方向に対して実施 -|n| N n 直前の検索を再実行 -|N| N N 直前の検索を逆方向に再実行 -|star| N * カーソル位置にある単語を下方向に検索 -|#| N # カーソル位置にある単語を上方向に検索 -|gstar| N g* "*"と同じだが、部分的な一致を検索 -|g#| N g# "#"と同じだが、部分的な一致を検索 -|gd| gd カーソル位置の識別子のローカル宣言に移動 -|gD| gD カーソル位置の識別子のグローバル宣言に移動 - -|pattern| 検索パターンでの特殊文字の扱い - - meaning magic nomagic ~ - 任意の1文字に一致 . \. - 行頭に一致 ^ ^ - <EOL>に一致 $ $ - 単語の先頭に一致 \< \< - 単語の末尾に一致 \> \> - 指定の範囲の1文字に一致 [a-z] \[a-z] - 指定の範囲にない1文字に一致 [^a-z] \[^a-z] - 識別子の文字に一致 \i \i - 上の条件から数字を除いたもの \I \I - キーワード文字に一致 \k \k - 上の条件から数字を除いたもの \K \K - ファイル名(で使える)文字に一致 \f \f - 上の条件から数字を除いたもの \F \F - 表示可能文字に一致 \p \p - 上の条件から数字を除いたもの \P \P - 空白文字類に一致 \s \s - 空白文字類以外に一致 \S \S - - <Esc>に一致 \e \e - <Tab>に一致 \t \t - <CR>に一致 \r \r - <BS>に一致 \b \b - - 直前に指定したatomと0回以上一致 * \* - 直前に指定したatomと1回以上一致 \+ \+ - 直前に指定した文字と0回もしくは1回一致 \= \= - 直前に指定した文字と2回〜5回一致 \{2,5} \{2,5} - 2種類の正規表現を列記 \| \| - パターンをグループ化してatomとする \(\) \(\) - -|search-offset| 検索パターンでのオフセット指定 - - [num] [num] 行下の1桁目 - +[num] [num] 行下の1桁目 - -[num] [num] 行上の1桁目 - e[+num] 一致した文字列の最後から [num] 桁右 - e[-num] 一致した文字列の最後から [num] 桁左 - s[+num] 一致した文字列の先頭から [num] 桁右 - s[-num] 一致した文字列の先頭から [num] 桁左 - b[+num] 上の s[+num] の別名 (begin の b) - b[-num] 上の s[-num] の別名 (begin の b) - ;{search-command} 次の{search-command}を実行する。 ------------------------------------------------------------------------------- -*Q_ma* マーク - -|m| m{a-zA-Z} 現在の場所を {a-zA-Z} としてマーク -|`a| `{a-z} 編集中のファイルのマーク{a-z} に移動 -|`A| `{A-Z} 任意のファイルのマーク{A-Z} に移動 -|`0| `{0-9} vimが前回終了した時の場所に移動 -|``| `` 直前のジャンプコマンドの前の場所に移動 -|`quote| `" 前回このファイルを編集した時の場所に移動 -|`[| `[ 直前に繰作もしくはプットした文字列の先頭に移動 -|`]| `] 直前に繰作もしくはプットした文字列の末尾に移動 -|`<| `< (直前の)ビジュアルエリアの先頭に移動 -|`>| `> (直前の)ビジュアルエリアの末尾に移動 -|`.| `. このファイルで最後に変更した場所に移動 -|'| '{a-zA-Z0-9[]'"<>.} - ` と同じだが、その行の先頭の非空白文字まで移動する - 点が異なる。 -|:marks| :marks 現在設定されているマークを一覧表示 -|CTRL-O| N CTRL-O ジャンプリストの N 番目に古い場所に移動 -|CTRL-I| N CTRL-I ジャンプリストの N 番目に新しい場所に移動 -|:ju| :ju[mps] ジャンプリストを一覧表示 ------------------------------------------------------------------------------- -*Q_vm* 雑他な移動コマンド - -|%| % 呼応するカッコ類("(","[","{")や、コメント、"#if"/ - "#else"/"#endif"のペアを検索して移動 -|H| N H 画面上で N 行目の最初の非空白文字に移動 -|M| M 画面上の真ん中の行の最初の非空白文字に移動 -|L| N L 画面上で下から N 行目の最初の非空白文字に移動 - -|go| N go 現バッファの N バイト目に移動 -|:go| :[range]go[to] [off] 現バッファの [off] バイト目に移動 ------------------------------------------------------------------------------- -*Q_ta* タグの利用 - -|:ta| :ta[g][!] {tag} {tag}で指定したタグにジャンプ -|:ta| :[count]ta[g][!] タグリストの[count]番目に新しいタグにジャンプ -|CTRL-]| CTRL-] 変更がされていない限り、カーソル位置にあるタ - グにジャンプ -|:ts| :ts[elect][!] [tag] タグに合致する一覧を表示し、ジャンプ先を選択 -|:tjump| :tj[ump][!] [tag] 指定のタグ [tag] にジャンプ。もし、合致する - タグが複数ある時は一覧から選択 -|:ltag| :lt[ag][!] [tag] タグ [tag] にジャンプし、マッチしたタグを - ロケーションリストに加える。 -|:tags| :tags タグリストを一覧表示 -|CTRL-T| N CTRL-T タグリストの N 番目に古いタグにジャンプ -|:po| :[count]po[p][!] タグリストの [count] 番目に古いタグにジャンプ -|:tnext| :[count]tn[ext][!] [count] 個分、次のタグにジャンプ -|:tp| :[count]tp[revious][!] [count]個分、前のタグにジャンプ -|:tr| :[count]tr[ewind][!] [count]番目に一致するタグにジャンプ -|:tl| :tl[ast][!] 直前に一致したタグにジャンプ - -|:ptag| :pt[ag] {tag} {tag}タグを見るためのプレビュー画面を開く -|CTRL-W_}| CTRL-W } CTRL-] と同様だがプレビュー画面にジャンプ -|:pts| :pts[elect] ":tselect"と同様だがプレビュー画面にジャンプ -|:ptjump| :ptj[ump] ":tjump"と同様だがプレビュー画面にジャンプ -|:pclose| :pc[lose] タグプレビュー画面を閉じる。 -|CTRL-W_z| CTRL-W z タグプレビュー画面を閉じる。 ------------------------------------------------------------------------------- -*Q_sc* スクロール - -|CTRL-E| N CTRL-E 画面を N 行下方向スクロール(デフォルトは1) -|CTRL-D| N CTRL-D 画面を N 行下方向スクロール(デフォルトは画面 - の半分) -|CTRL-F| N CTRL-F 画面を N ページ分下方向スクロール -|CTRL-Y| N CTRL-Y 画面を N 行分上方向スクロール(デフォルトは1) -|CTRL-U| N CTRL-U 画面を N 行分上方向スクロール(デフォルトは画面 - の半分) -|CTRL-B| N CTRL-B 画面を N ページ分上方向スクロール -|z<CR>| z<CR> or zt 現在行を画面の1行目にして、再描画 -|z.| z. or zz 現在行を画面の中央にして、再描画 -|z-| z- or zb 現在行を画面の最下行にして、再描画 - -以下は'wrap'がoffになっている時のみ有効です。 -|zh| N zh 画面を N 文字、右へスクロール -|zl| N zl 画面を N 文字、左へスクロール -|zH| N zH 画面桁数の半分だけ、右へスクロール -|zL| N zL 画面桁数の半分だけ、左へスクロール ------------------------------------------------------------------------------- -*Q_in* 文字列の挿入 - -|a| N a カーソル位置の後に文字列を(N回)追加 -|A| N A 現在行の末尾に文字列を(N回)追加 -|i| N i カーソル位置の前に文字列を(N回)追加(<Insert>も同様) -|I| N I 現在行の最初の非空白文字の前に文字列を(N回)追加 -|gI| N gI 現在行の先頭に文字列を(N回)追加 -|o| N o 現在行の下に新たな行を追加し、文字列を(N回)追加する。 -|O| N O 現在行に新たな行を挿入し、文字列を(N回)追加する。 -|:startinsert| :star[tinsert][!] Insertモードを開始する。[!]を指定すると - Appendモードとなる。 -|:startreplace| :startr[eplace][!] Replaceモードを開始する。[!]を指定すると - 行末から開始する。 - -ビジュアルモード用: -|v_b_I| I 選択している全行の前に、同じ文字列を挿入する。 -|v_b_A| A 選択している全行の後ろに、同じ文字列を挿入する。 ------------------------------------------------------------------------------- -*Q_ai* 挿入モードの扱い - -|insert-index| 挿入モードのアルファベット順目次 - -挿入モードの終了: -|i_<Esc>| <Esc> 挿入モードを終わって、通常モードへ復帰 -|i_CTRL-C| CTRL-C <Esc>と同様。ただし、短縮形は展開しない -|i_CTRL-O| CTRL-O {command} {command}を実行し、挿入モードへ復帰 - -移動: -|i_<Up>| cursor keys カーソルを上下左右に移動 -|i_<S-Left>| shift-left/right 1単語ごと左右に移動 -|i_<S-Up>| shift-up/down 1画面ごと前後に移動 -|i_<End>| <End> その行の最終桁に移動 -|i_<Home>| <Home> その行の先頭桁に移動 ------------------------------------------------------------------------------- -*Q_ss* 挿入モードでの特殊キー - -|i_CTRL-V| CTRL-V {char}.. 指定の{char}、もしくは10進数指定のバイト値 - を挿入 -|i_<NL>| <NL> or <CR> or CTRL-M or CTRL-J - 改行して、新しい行を作成 -|i_CTRL-E| CTRL-E カーソル位置の直下の行の内容を1文字挿入 -|i_CTRL-Y| CTRL-Y カーソル位置の真上の行の内容を1文字挿入 - -|i_CTRL-A| CTRL-A 直前に挿入した文字列をもう一度挿入 -|i_CTRL-@| CTRL-@ 直前に挿入した文字列をもう一度挿入し、挿入 - モードから復帰 -|i_CTRL-R| CTRL-R {0-9a-z%#:.-="} 指定のレジスタの内容を挿入 - -|i_CTRL-N| CTRL-N カーソルの前にあるキーワードと合致する単語 - を順方向に検索して挿入 -|i_CTRL-P| CTRL-P カーソルの前にあるキーワードと合致する単語 - を逆方向に検索して挿入 -|i_CTRL-X| CTRL-X ... カーソルの前にある単語をいろんな方法で補完 - する。 - -|i_<BS>| <BS> or CTRL-H カーソルの前の1文字を削除 -|i_<Del>| <Del> カーソル位置の1文字を削除 -|i_CTRL-W| CTRL-W カーソル位置の1単語を削除 -|i_CTRL-U| CTRL-U 現在行で入力した全部の文字を削除 -|i_CTRL-T| CTRL-T 'shiftwidth'での指定分のインデントを現在行 - の行頭に挿入 -|i_CTRL-D| CTRL-D 'shiftwidth'での指定分のインデントを現在行 - の行頭から削除 -|i_0_CTRL-D| 0 CTRL-D 現在行の全インデントを削除 -|i_^_CTRL-D| ^ CTRL-D 現在行の全インデントを削除。但し、次の行の - インデントには影響しない。 ------------------------------------------------------------------------------- -*Q_di* 合字(Digraphs) - -|:dig| :dig[raphs] 現在の合字(ダイグラフ)情報を一覧表示 -|:dig| :dig[raphs] {char1}{char2} {number} ... - 合字情報をリストに追加 - -挿入モード、又はコマンドラインモード: -|i_CTRL-K| CTRL-K {char1} {char2} - 合字の入力 -|i_digraph| {char1} <BS> {char2} - 'digraph'オプションがONの場合、合字を入力 ------------------------------------------------------------------------------- -*Q_si* 特殊な挿入コマンド - -|:r| :r [file] カーソル位置の後ろに [file] の内容を挿入 -|:r!| :r! {command} カーソル位置の後ろに {command} を実行した結果の - 標準出力の内容を挿入 ------------------------------------------------------------------------------- -*Q_de* 文字列の削除 - -|x| N x カーソル位置及びその後ろの N 文字を削除 -|<Del>| N <Del> カーソル位置及びその後ろの N 文字を削除 -|X| N X カーソル位置の前の N 文字を削除 -|d| N d{motion} {motion}で指定された範囲の文字列を削除 -|v_d| {visual}d ハイライト化された文字列を削除 -|dd| N dd N 行削除 -|D| N D (N-1 行後の)行末まで削除 -|J| N J N-1 行を結合して1行に(<EOL>を削除) -|v_J| {visual}J ビジュアルモードで選択された文字列を結合 -|gJ| N gJ "J"と同じだが、行の間にスペースを入れない -|v_gJ| {visual}gJ "{visual}J"と同じだが、行の間にスペースを入れない -|:d| :[range]d [x] [range]で指定した範囲の行を削除 [それをレジスタxに] ------------------------------------------------------------------------------- -*Q_cm* 文字列のコピーと移動 - -|quote| "{char} レジスタ{char}を指定。これに続いて、削除コマンドや - ヤンクコマンド、プットコマンドを指定 -|:reg| :reg 全レジスタの内容を表示 -|:reg| :reg {arg} {arg}で示されたレジスタの内容を表示 -|y| N y{motion} {motion}で指定された範囲の文字列をレジスタにヤンク - (コピー) -|v_y| {visual}y ハイライト化された文字列をレジスタにヤンク -|yy| N yy N 行をレジスタにヤンク -|Y| N Y N 行をレジスタにヤンク -|p| N p カーソル位置の後にレジスタ内容をN回プット(ペースト) -|P| N P カーソル位置の前にレジスタ内容をN回プット(ペースト) -|]p| N ]p pと同じだが、インデントを現在行に合せる -|[p| N [p Pと同じだが、インデントを現在行に合せる -|gp| N gp pと同じだが、挿入した文字列の後にカーソルを移動 -|gP| N gP Pと同じだが、挿入した文字列の後にカーソルを移動 ------------------------------------------------------------------------------- -*Q_ch* 文字列の変更 - -|r| N r{char} N 文字を{char}に置換 -|gr| N gr{char} N 文字をレイアウトに影響を与えずに置換 -訳注: "あ"を"ra"で置換->"a" -訳注: "あ"を"gra"で置換->"a " -|R| N R 置換モードへ (入力文字列を N 回繰り返す) -|gR| N gR 仮想置換モードへ。置換モードと同じだが、レイアウト - に影響しない。 -|v_b_r| {visual}r{char} - ビジュアルブロックモード用: 選択範囲の各文字を{char} - で、置換 - - (この節における「変更」とは、文字列を削除し、挿入モードに入ること) -|c| N c{motion} {motion}で指定した範囲の文字列を変更 -|v_c| {visual}c ビジュアルモードで選択された文字列を変更 -|cc| N cc N 行を変更 -|S| N S N 行を変更 -|C| N C (N-1 行後の)行末までを変更 -|s| N s N 文字を変更 -|v_b_c| {visual}c ビジュアルブロックモード用:選ばれている各行の内容を - 入力した文字列に置き換え -|v_b_C| {visual}C ビジュアルブロックモード用:選ばれている各行の行末ま - でを入力した文字列に置き換え - -|~| N ~ N 文字分の英文字の大文字/小文字を変換し、カーソルを - 移動 -|v_~| {visual}~ ビジュアルモードで選択された範囲の大文字/小文字を変換 -|v_u| {visual}u ビジュアルモードで選択された範囲を小文字に変換 -|v_U| {visual}U ビジュアルモードで選択された範囲を大文字に変換 -|g~| g~{motion} {motion}で指定した範囲の大文字/小文字を変換 -|gu| gu{motion} {motion}で指定した範囲を小文字に変換 -|gU| gU{motion} {motion}で指定した範囲を大文字に変換 -|v_g?| {visual}g? ビジュアルモードで選択した範囲をrot13でエンコードする。 -|g?| g?{motion} {motion}で指定した範囲をrot13でエンコードする。 -smz ※ rot13というのはA->N,B->Oという置き換えのシーザ暗 -smz 号のこと。英語圏では昔から使われている。 - -|CTRL-A| N CTRL-A カーソル位置もしくは後ろにある数字にNを加算する -|CTRL-X| N CTRL-X カーソル位置もしくは後ろにある数字からNを減算する - -|<| N <{motion} {motion}で指定した範囲を'shiftwidth'分、インデントを - 減らす -|<<| N << カレント行から N 行分のインデントを減らす -|>| N >{motion} {motion}で指定した範囲を'shiftwidth'分、インデントを - 増やす -|>>| N >> カレント行から N 行分のインデントを増やす -|gq| N gq{motion} {motion}で指定した範囲を'textwidth'で指定した長さに - フォーマット -|:ce| :[range]ce[nter] [width] - [range]の行範囲をセンタリング -|:le| :[range]le[ft] [indent] - [range]の行範囲を([indent] 分)左寄せ -|:ri| :[range]ri[ght] [width] - [range]の行範囲を([width] 桁まで)右寄せ ------------------------------------------------------------------------------- -*Q_co* 複雑な変更処理 - -|!| N !{motion}{command}<CR> - {motion}で指定した範囲を{command}の結果出力に置き換え -|!!| N !!{command}<CR> - N 行を{command}の結果出力に置き換え -|v_!| {visual}!{command}<CR> - ビジュアルモードで選択された範囲を{command}の結果出力 - に置き換え -|:range!| :[range]! {command}<CR> - [range] の範囲を{command}の結果出力に置き換え -|=| N ={motion} - {motion}で指定した範囲を'equalprg'の結果出力に置き換え -|==| N == N 行を'equalprg'の結果出力に置き換え -|v_=| {visual}= - ビジュアルモードで選択された範囲を'equalprg'の結果出力 - に置き換え -|:s| :[range]s[ubstitute]/{pattern}/{string}/[g][c] - [range]の範囲の{pattern}を{string}に置換する。 - [g]を指定すると、見つかった全{pattern}を置換。 - [c]を指定すると、各置換を確認する。 -|:s| :[range]s[ubstitute] [g][c] - 直前の":s"を新たな範囲とオプションで繰り返す -|&| & 直前の":s"を現在行について繰り返す。(オプションなし) -|:ret| :[range]ret[ab][!] [tabstop] - 'tabstop'の値を変更し、それに従って空白、TABの類を - 適切な状態にする。 ------------------------------------------------------------------------------- -*Q_vi* ビジュアルモード - -|visual-index| ビジュアルモードコマンドの目次 - -|v| v 文字単位のビジュアルモードを開始 } カーソルを動かして -|V| V 行単位のビジュアルモードを開始 } 選択した範囲に対し -|CTRL-V| CTRL-V 矩形単位のビジュアルモードを開始 } コマンドを実行 -|v_o| o カーソル位置と選択範囲の開始位置を入れ替え -|gv| gv 直前の選択範囲を選んだ状態でビジュアルモードを開始 -|v_v| v 文字単位ビジュアルモードを開始、もしくは中断 -|v_V| V 行単位ビジュアルモードを開始、もしくは中断 -|v_CTRL-V| CTRL-V 単位ビジュアルモードを開始、もしくは中断 ------------------------------------------------------------------------------- -*Q_to* 文字列オブジェクト (ビジュアルモードか、オペレータ指定後 - -|v_aw| N aw "a word"を選択(単語の前後の空白も削除) -|v_iw| N iw "inner word"を選択(正味の単語だけを削除) -|v_aW| N aW "a |WORD|"を選択 -|v_iW| N iW "inner |WORD|"を選択 -|v_as| N as "a sentence"を選択 -|v_is| N is "inner sentence"を選択 -|v_ap| N ap "a paragraph"を選択 -|v_ip| N ip "inner paragraph"を選択 -|v_ab| N ab "a block"( "[("~"])"の範囲)を選択 -|v_ib| N ib "inner block" ( "[("~"])"の範囲)を選択 -|v_aB| N aB "a Block" ( "[{"~"]}"の範囲)を選択 -|v_iB| N iB "inner Block" ( "[{"~"]}"の範囲)を選択 -|v_a>| N a> "a <> block"を選択 -|v_i>| N i> "inner <> block"を選択 -|v_at| N at "a tag block" (<aaa> ~ </aaa>)を選択 -|v_it| N it "inner tag block" (<aaa> ~ </aaa>)を選択 -|v_a'| N a' "a single quoted string"を選択 -|v_i'| N i' "inner single quoted string"を選択 -|v_aquote| N a" "a double quoted string"を選択 -|v_iquote| N i" "inner double quoted string"を選択 -|v_a`| N a` "a backward quoted string"を選択 -|v_i`| N i` "inner backward quoted string"を選択 - ------------------------------------------------------------------------------- -*Q_re* 繰り返しコマンド - -|.| N . 直前のコマンドを繰り返す。(回数はN回となる) -|q| q{a-z} 入力された文字群をレジスタ{a-z}に記録 -|q| q{A-Z} 入力された文字群をレジスタ{a-z}に追加して記録 -|q| q 記録を終了 -|@| N @{a-z} レジスタ{a-z}の内容を N 回実行 -|@@| N @@ 直前の@{a-z} を N 回実行 -|:@| :@{a-z} レジスタ{a-z}の内容をExコマンドとみなして、N回実行 -|:@@| :@@ 直前の:@{a-z} を N 回実行 -|:g| :[range]g[lobal]/{pattern}/[cmd] - [range]の中で、指定の{pattern}に合致する各行に対して - [cmd]コマンド(デフォルトでは":p")を実行する。 -|:g| :[range]g[lobal]!/{pattern}/[cmd] - [range]の中で、指定の{pattern}に合致**しない**各行に - 対して[cmd]コマンド(デフォルトでは":p")を実行する。 -|:so| :so[urce] {file} - {file}からExコマンドを読み出す。 -|:so| :so[urce]! {file} - {file}からvimコマンドを読み出す。 -|:sl| :sl[eep] [sec] - [sec] 秒間の間、何もしない -|gs| N gs N 秒間の間、何もしない ------------------------------------------------------------------------------- -*Q_km* キーマップ - -|:map| :ma[p] {lhs} {rhs} 通常モード/ビジュアルモードで{lhs} を {rhs} - に割り付け -|:map!| :ma[p]! {lhs} {rhs} 挿入モード/コマンドラインモードで{lhs} を - {rhs} に割り付け -|:noremap| :no[remap][!] {lhs} {rhs} - ":map"と同じだが、{rhs}の再割り付けしない -|:unmap| :unm[ap] {lhs} 通常モード/ビジュアルモード用の{lhs} 定義を - 削除 -|:unmap!| :unm[ap]! {lhs} 挿入モード/コマンドラインモードの{lhs} - 定義を削除 -|:map_l| :ma[p] [lhs] 通常モード/ビジュアルモード用の([lhs]で - 始まる)マップを一覧表示 -|:map_l!| :ma[p]! [lhs] 挿入モード/コマンドラインモードの( [lhs] - で始まる) マップを一覧表示 -|:cmap| :cmap/:cunmap/:cnoremap - ":map!"/":unmap!"/":noremap!" と同じだが、 - コマンドラインモードのみ対象となる。 -|:imap| :imap/:iunmap/:inoremap - ":map!"/":unmap!"/":noremap!" と同じだが、 - 挿入モードのみ対象となる。 -|:nmap| :nmap/:nunmap/:nnoremap - ":map!"/":unmap!"/":noremap!" と同じだが、 - 通常モードのみ対象となる。 -|:vmap| :vmap/:vunmap/:vnoremap - ":map!"/":unmap!"/":noremap!" と同じだが、 - ビジュアルモードのみ対象となる。 -|:omap| :omap/:ounmap/:onoremap - ":map!"/":unmap!"/":noremap!" と同じだが、 - オペレータ待機モードのみ対象となる。 -|:mapc| :mapc[lear] 通常モード/ビジュアルモード用のマップを削除 -|:mapc| :mapc[lear]! 挿入モード/コマンドモード用のマップを削除 -|:imapc| :imapc[lear] 挿入モード用のマップを削除 -|:vmapc| :vmapc[lear] ビジュアルモード用のマップを削除 -|:omapc| :omapc[lear] オペレータ待機モード用のマップを削除 -|:nmapc| :nmapc[lear] 通常モード用のマップを削除 -|:cmapc| :cmapc[lear] コマンドラインモード用のマップを削除 -|:mkexrc| :mk[exrc][!] [file] 現在のマップ、短縮形、設定を [file] に書き - 出す。(デフォルトは ".exrc" で、[!] をつけ - ると上書きとなる) -|:mkvimrc| :mkv[imrc][!] [file] - ":mkexrc"と同じ。但しデフォルトは".vimrc" -|:mksession| :mks[ession][!] [file] - ":mkvimrc"と同じ。ただし、現在のセッション - を後で続けられるように、現在のファイル名、 - ウィンドウ情報などもいっしょに書き出す。 ------------------------------------------------------------------------------- -*Q_ab* 短縮入力 - -|:abbreviate| :ab[breviate] {lhs} {rhs} 短縮形 {lhs} を {rhs} で定義 -|:abbreviate| :ab[breviate] {lhs} {lhs}で始まる短縮形を一覧表示 -|:abbreviate| :ab[breviate] 全短縮形を一覧表示 -|:unabbreviate| :una[bbreviate] {lhs} {lhs}の短縮形を削除 -|:noreabbrev| :norea[bbrev] [lhs] [rhs] ":ab"と同じだが、 [rhs]の再定義は - しない -|:iabbrev| :iab/:iunab/:inoreab ":ab"と同じだが、挿入モード用のみ - が対象 -|:cabbrev| :cab/:cunab/:cnoreab ":ab"と同じだが、コマンドライン - モード用のみが対象 -|:abclear| :abc[lear] 全短縮形を削除 -|:cabclear| :cabc[lear] コマンドライン用の全短縮形を削除 -|:iabclear| :iabc[lear] 挿入モード用の全短縮形を削除 ------------------------------------------------------------------------------- -*Q_op* オプション - -|:set| :se[t] 変更した全オプションを表示 -|:set| :se[t] all termcap以外の全オプションを表示 -|:set| :se[t] termcap termcapオプションを表示 -|:set| :se[t] {option} 論理値タイプの場合はオプション設定 - (ONになる) - 文字列、数値タイプでは内容を表示 -|:set| :se[t] no{option} 論理値タイプのオプションをOFFに -|:set| :se[t] inv{option} 論理値タイプのオプションを反転。 -|:set| :se[t] {option}={value} 文字列/数値タイプのオプションの値 - を{value}に -|:set| :se[t] {option}+={value} 文字列タイプのオプションに{value} - を追加数値タイプなら加算 -|:set| :se[t] {option}-={value} 文字列タイプのオプションから{value} - を除去 - 数値タイプなら{value}を減算 -|:set| :se[t] {option}? {option}の値を表示 -|:set| :se[t] {option}& {option}の値をデフォルト値に - -|:setlocal| :setl[ocal] ":set"と同じ、ただしローカル値を設定 - する。 -|:setglobal| :setg[lobal] ":set"と同じ、ただしローカルオプショ - ンのグローバル値を設定する。 - -|:fix| :fix[del] 't_kb'の値に従って、't_kD'の値を - セットする。 -|:options| :opt[ions] オプションの閲覧と設定を行うために - 新たなウィンドウを開く。一覧は機能 - 順に並べられ、各行にはオプションの - 説明とヘルプへのリンクをつけてある。 - -各オプションの簡易説明: *option-list* -'aleph' 'al' Aleph文字(ヘブライ語)用のアスキーとする -'allowrevins' 'ari' 挿入モードとコマンドラインモードで、 CTRL-_ を - 使うことを認める。 -'altkeymap' 'akm' デフォルトの第2言語(Farsi/ヘブライ) -'ambiwidth' 'ambw' Unicode文字の不明瞭な文字幅を決定する -'antialias' 'anti' Mac OS X: フォントを滑らかに表示する。 -'autochdir' 'acd' 現在編集中のファイルのディレクトリに変更する -'arabic' 'arab' デフォルトでアラビア語を2番目の言語にする -'arabicshape' 'arshape' アラビア文字を整える -'autoindent' 'ai' 直前の行から新しい行のインデントを得る -'autoread' 'ar' vim以外でファイル変更した時に自動再読み込みする -'autowrite' 'aw' 変更があったら、自動的に書き出す -'autowriteall' 'awa' 'autowrite'と同様だが、より多くのコマンドと連動 -'background' 'bg' "dark"/"light":ハイライト色の指定に使用 -'backspace' 'bs' 行頭でのバックスペースの振る舞いをカスタマイズ -'backup' 'bk' 上書きした時にバックアップを作成する。 -'backupcopy' 'bkc' ファイルをリネームするのではなく、コピーする。 -'backupdir' 'bdir' バックアップファイル用のディレクトリを指定 -'backupext' 'bex' バックアップファイル用の拡張子 -'backupskip' 'bsk' 指定のパターンに合致するファイルはバックアップ - しない。 -'balloondelay' 'bdlay' バルーンウィンドウが出るまでの遅延時間(ms) -'ballooneval' 'beval' バルーン評価のON/OFF -'balloonexpr' 'bexpr' バルーンウィンドウに表示する式 -'binary' 'bin' バイナリモードで、読み/書き/編集する -'bioskey' 'biosk' MS-DOS専用: 文字入力にbiosコールを使う -'bomb' ファイルの先頭にBOMを付加する -'breakat' 'brk' 'linebreak' がオンのとき、改行を引き起こす文字 -'browsedir' 'bsdir' ブラウズを始めるディレクトリ -'bufhidden' 'bh' ウィンドウに繋がったバッファがなくなった時の動作 -'buflisted' 'bl' バッファリストにバッファを表示するかどうか -'buftype' 'bt' バッファのタイプ -'casemap' 'cmp' 文字の大小の変換方法を決める -'cdpath' 'cd' ":cd"コマンドで検索するディレクトリ -'cedit' コマンドラインウィンドウを開くためのキー -'charconvert' 'ccv' 文字コードの変換に使用する式 -'cindent' 'cin' C言語用のインデントを行う -'cinkeys' 'cink' 'cindent'が有効な際に押すとインデントするキー -'cinoptions' 'cino' 'cindent'が有効な際のインデント方法 -'cinwords' 'cinw' 'si'、'cin'によるインデントの開始文字 -'clipboard' 'cb' 無名レジスタ操作でクリップボードを使う -'cmdheight' 'ch' コマンドラインの行数 -'cmdwinheight' 'cwh' コマンドラインウィンドウの行数 -'colorcolumn' 'cc' 列を強調表示する -'columns' 'co' 画面上の桁数 -'comments' 'com' コメント行の開始を示すパターン -'commentstring' 'cms' コメント用テンプレート(foldマーカ用) -'compatible' 'cp' 可能な限りVi互換で動く -'complete' 'cpt' 挿入モードでの補完の動きを指定する -'completefunc' 'cfu' 挿入モードでの補完に使われる関数 -'completeopt' 'cot' 挿入モードでの補完のオプション -'concealcursor' 'cocu' カーソル行の Conceal テキストを表示するかどうか -'conceallevel' 'cole' Conceal テキストを表示するかどうか -'confirm' 'cf' 未保存ファイル、リードオンリファイルの確認方法 -'conskey' 'consk' コンソールからの直接キー検出(MS-DOSのみ) -'copyindent' 'ci' 'autoindent'がすでにあるインデントを参考にする -'cpoptions' 'cpo' vi互換な振る舞いのフラグ集 -'cryptmethod' 'cm' ファイルの保存に使用する暗号化の種類 -'cscopepathcomp' 'cspc' 表示するファイルパスの深さ -'cscopeprg' 'csprg' cscopeの実行ファイル -'cscopequickfix' 'csqf' cscopeの結果の表示にquickfixウインドウを使う -'cscoperelative' 'csre' cscope.out のディレクトリパスをプレフィックスとし - て使う -'cscopetag' 'cst' タグコマンドでcscopeを使う -'cscopetagorder' 'csto' |:cstag|が検索する順番を決める -'cscopeverbose' 'csverb' cscopeデータベースに追加時にメッセージを表示 -'cursorbind' 'crb' カーソルを移動させたときに他のウィンドウ内でもカー - ソルを移動させる -'cursorcolumn' 'cuc' カーソルがある桁を強調表示する -'cursorline' 'cuc' カーソルがある行を強調表示する -'debug' "msg"と設定すると全てのエラーが表示される -'define' 'def' マクロ定義検索パターン -'delcombine' 'deco' 合成文字の削除時に構成要素を全て消す -'dictionary' 'dict' キーワード補完に使うファイルのリスト -'diff' そのウインドウでdiffモードを使う -'diffexpr' 'dex' 差分取得に使う式 -'diffopt' 'dip' diffモードに使うオプション -'digraph' 'dg' 挿入モードで二重字の入力を有効にする -'directory' 'dir' スワップファイル用のディレクトリのリスト -'display' 'dy' テキストの表示方法を指定する -'eadirection' 'ead' 'equalalways'の適用方向を決める -'edcompatible' 'ed' |:substitute|のフラグを切替える -'encoding' 'enc' 内部で使用する文字コード -'endofline' 'eol' ファイル末尾に<EOL>を書く -'equalalways' 'ea' ウインドウを自動で同じ大きさに調整する -'equalprg' 'ep' |=|で使用する外部プログラム -'errorbells' 'eb' エラー表示時にベルを鳴らす -'errorfile' 'ef' QuickFixモードで使うファイルの名前 -'errorformat' 'efm' エラーファイルの書式の定義 -'esckeys' 'ek' 挿入モードでファンクションキーを有効にする -'eventignore' 'ei' 無視するオートコマンドイベント -'expandtab' 'et' <Tab>入力でスペースを入力する -'exrc' 'ex' カレントディレクトリの.vimrcと.exrcを読み込む -'fileencoding' 'fenc' ファイルの文字コード指定 -'fileencodings' 'fencs' 自動認識する'fileencoding'のリスト -'fileformat' 'ff' ファイル入出力時のファイルのフォーマット -'fileformats' 'ffs' 自動認識する'fileformat'のリスト -'filetype' 'ft' オートコマンドで使うファイルタイプ名 -'fillchars' 'fcs' 特殊な表示に使う文字 -'fkmap' 'fk' ペルシア語のキーボードマッピング -'foldclose' 'fcl' カーソル下以外の折畳みを閉じる -'foldcolumn' 'fdc' 折畳みを示すのに使う列幅 -'foldenable' 'fen' 全ての折畳みの開閉を設定する -'foldexpr' 'fde' 'foldmethod'が"expr"の時に使う式 -'foldignore' 'fdi' 'foldmethod'が"indent"の時に無視する行 -'foldlevel' 'fdl' この値より高いレベルの折畳みを閉じる -'foldlevelstart' 'fdls' 'foldlevel'の初期値 -'foldmarker' 'fmr' 'foldmethod'が"marker"の時に使うマーカー -'foldmethod' 'fdm' 折畳みの種類 -'foldminlines' 'fml' 閉じることのできる折畳みの最小行数 -'foldnestmax' 'fdn' 折畳みの深さの制限 -'foldopen' 'fdo' 折畳みを開くことのできるコマンド -'foldtext' 'fdt' 閉じた折畳みの表示に使う式 -'formatlistpat' 'flp' リストのヘッダを認識するためのパターン -'formatoptions' 'fo' 自動整形の動作定義 -'formatprg' 'fp' |gq|で使う外部プログラム -'formatexpr' 'fex' |gq|で使う式 -'fsync' 'fs' ファイルを書き込んだ後に fsync() を呼ぶかどうか -'gdefault' 'gd' |:substitute|で"g"を既定で有効にする -'grepformat' 'gfm' 'grepprg'の出力の書式 -'grepprg' 'gp' |:grep|で使う外部プログラム -'guicursor' 'gcr' GUI: カーソルの形と点滅を設定する -'guifont' 'gfn' GUI: 使用するフォント(複数可) -'guifontset' 'gfs' GUI: マルチバイト用のフォント -'guifontwide' 'gfw' 全角文字用のフォントのリスト -'guiheadroom' 'ghr' GUI: ウインドウ装飾用の余地。ピクセル単位 -'guioptions' 'go' GUI: GUIに特化したオプション -'guipty' GUI: |:!|でpseudo-ttyの使用を試みる -'guitablabel' 'gtl' GUI: タブページのラベル設定 -'guitabtooltip' 'gtt' GUI: タブページのツールチップ設定 -'helpfile' 'hf' メインのヘルプファイルのフルパス指定 -'helpheight' 'hh' ヘルプウインドウの最小高さ -'helplang' 'hlg' 優先するヘルプ用の言語 -'hidden' 'hid' バッファが|abandon|(捨て)られても破棄しない -'highlight' 'hl' 様々な対象に対する強調表示モードの設定 -'hlsearch' 'hls' 最後に検索したパターンを強調表示する -'history' 'hi' コマンドライン履歴の記録数 -'hkmap' 'hk' ヘブライ語のキーボードマッピング -'hkmapp' 'hkp' 発音に即したヘブライ語のキーボードマッピング -'icon' Vimのアイコン表示でテキストを変更するようにする -'iconstring' Vimのアイコン表示に使用するテキスト -'ignorecase' 'ic' 検索パターンで大文字と小文字を区別しない -'imactivatekey' 'imak' X のインプットメソッドを有効にするキー -'imcmdline' 'imc' コマンドライン入力時にIMを有効にする -'imdisable' 'imd' IMを使わない -'iminsert' 'imi' 挿入モードで|:lmap|やIMを使う -'imsearch' 'ims' 検索パターン入力時に|:lmap|やIMを使う -'include' 'inc' インクルードファイルの検索パターン -'includeexpr' 'inex' インクルード行を処理する式 -'incsearch' 'is' 検索パターン入力中にその文字を強調表示する -'indentexpr' 'inde' 行をインデントする式 -'indentkeys' 'indk' 'indentexpr'でインデントを開始するキー -'infercase' 'inf' キーワード補完で大文字小文字を調整する -'insertmode' 'im' 挿入モードで編集を開始する -'isfname' 'isf' ファイル名、パス名に含まれる文字 -'isident' 'isi' 識別子に含まれる文字 -'iskeyword' 'isk' キーワードに含まれる文字 -'isprint' 'isp' 視覚可能な文字 -'joinspaces' 'js' 行連結時にピリオドの後に空白を2つ入れる -'key' 暗号鍵 -'keymap' 'kmp' キーボードマッピングの名前 -'keymodel' 'km' 範囲選択を開始/終了するキー -'keywordprg' 'kp' |K|で使う外部プログラム -'langmap' 'lmap' 他の言語モードでの文字 -'langmenu' 'lm' メニュー表示用言語 -'laststatus' 'ls' 最下ウインドウにいつステータス行を表示するか -'lazyredraw' 'lz' マクロ実行中に表示を更新しない -'linebreak' 'lbr' 長い行を空白で折り返す -'lines' 表示行数 -'linespace' 'lsp' 行間のピクセル数 -'lisp' Lisp用自動インデント -'lispwords' 'lw' Lisp用インデントの動作定義 -'list' <Tab>や<EOL>を表示する -'listchars' 'lcs' 'list'オン時に使う文字 -'loadplugins' 'lpl' 起動時にプラグインスクリプトを読み込む -'macatsui' Mac GUI: ATSUI テキスト描画を使う -'magic' 検索パターン内の特殊文字を変更する -'makeef' 'mef' |:make|用のエラーファイル -'makeprg' 'mp' |:make|で使う外部プログラム -'matchpairs' 'mps' |%|で探す文字ペア -'matchtime' 'mat' 'showmatch'で対応カッコを表示する時間。0.1秒単位 -'maxcombine' 'mco' 表示できる文字の組合せの最大数 -'maxfuncdepth' 'mfd' ユーザ定義関数の再帰呼び出しの最大数 -'maxmapdepth' 'mmd' マッピングの再帰定義の最大数 -'maxmem' 'mm' 1つのバッファに使える最大メモリ(Kbyte単位) -'maxmempattern' 'mmp' 検索に使える最大メモリ(Kbyte単位) -'maxmemtot' 'mmt' 全てのバッファに使える最大メモリ(Kbyte単位) -'menuitems' 'mis' メニューに登録できる項目の最大数 -'mkspellmem' 'msm' |:mkspell|がツリーを圧縮する前に使われるメモリ -'modeline' 'ml' ファイルの先頭や末尾のモードラインを許可する -'modelines' 'mls' モードラインをチェックする行数 -'modifiable' 'ma' ファイルの変更許可 -'modified' 'mod' バッファが変更されているか -'more' スクリーンを埋めるような出力で一時停止するか -'mouse' マウスを使うか -'mousefocus' 'mousef' マウスの移動でキーボードのフォーカスを移動する -'mousehide' 'mh' 入力時にマウスポインタを非表示にする -'mousemodel' 'mousem' マウスボタンの機能を変える -'mouseshape' 'mouses' モード別にマウスポインタの形を変える -'mousetime' 'mouset' ダブルクリックの間隔時間 -'mzquantum' 'mzq' MzSchemeスレッドに切り替える間隔 -'nrformats' 'nf' CTRL-A用の数値書式 -'number' 'nu' 行番号を表示する -'numberwidth' 'nuw' 行番号に使われる桁数 -'omnifunc' 'ofu' ファイルタイプごとの補完に使われる -'opendevice' 'odev' MS-Windows上でデバイスの読み書きを許可する -'operatorfunc' 'opfunc' オペレータ|g@|で呼ばれる関数 -'osfiletype' 'oft' サポートされていない -'paragraphs' 'para' 段落を分けるためのnroffのマクロ -'paste' Pasteモードに移行 -'pastetoggle' 'pt' 'paste'を切替えるキー -'patchexpr' 'pex' パッチを適用するための式 -'patchmode' 'pm' 最初のバージョンを保全する -'path' 'pa' |gf|などでファイルを検索するディレクトリのリスト -'preserveindent' 'pi' 再インデント時にインデントの構造を保つ -'previewheight' 'pvh' プレビューウインドウの高さ -'previewwindow' 'pvw' プレビューウインドウかどうか -'printdevice' 'pdev' |:hardcopy|で使うプリンタの名前 -'printencoding' 'penc' 印刷で使う文字コード -'printexpr' 'pexpr' |:hardcopy|でPostScriptを印刷するための式 -'printfont' 'pfn' |:hardcopy|で使用するフォント -'printheader' 'pheader' |:hardcopy|で使用するヘッダ -'printmbcharset' 'pmbcs' |:hardcopy|に使われるCJK文字集合 -'printmbfont' 'pmbfn' |:hardcopy|の出力に使われるフォント名 -'printoptions' 'popt' |:hardcopy|の出力をコントロールする -'pumheight' 'ph' ポップアップメニューの高さの最大値 -'quoteescape' 'qe' 文字列中に使われるエスケープ文字 -'readonly' 'ro' バッファの書き込みを制限する -'redrawtime' 'rdt' 'hlsearch' と |:match| のハイライトのタイムアウト -'relativenumber' 'rnu' 相対行番号を表示する -'remap' 再帰的マッピングを有効にする -'report' 変更された行の数の方向が出る最小値 -'restorescreen' 'rs' Win32: 終了時スクリーンを更新する -'revins' 'ri' 挿入モードで入力方向が逆になる -'rightleft' 'rl' "右から左"指向のウインドウ -'rightleftcmd' 'rlc' "右から左"に入力するコマンド -'ruler' 'ru' ステータスラインにカーソルが位置する場所を表示する -'rulerformat' 'ruf' 'ruler'用のフォーマット -'runtimepath' 'rtp' ランタイムファイル用のディレクトリのリスト -'scroll' 'scr' CTRL-UやCTRL-Dでスクロールする行数 -'scrollbind' 'scb' 他のウインドウと同期してスクロールする -'scrolljump' 'sj' スクロールする行数の最小値 -'scrolloff' 'so' カーソルの上下に確保する表示行 -'scrollopt' 'sbo' 'scrollbind'がどのように振舞うか -'sections' 'sect' 節を分けるためのnroffのマクロ -'secure' カレントディレクトリの.vimrcを安全に読む -'selection' 'sel' 選択時の動作を設定する -'selectmode' 'slm' ビジュアルモードでなくセレクトモードを開始する条件 -'sessionoptions' 'ssop' |:mksession|用のオプション -'shell' 'sh' 外部プログラム使用時のシェル -'shellcmdflag' 'shcf' シェル実行時のフラグ -'shellpipe' 'sp' |:make|の出力をエラーファイルに入れるのに使う文字 -'shellquote' 'shq' シェルで使う引用符 -'shellredir' 'srr' フィルタの出力を一時ファイルに入れるのに使う文字 -'shellslash' 'ssl' シェルで使うファイルのパス区切りに使う -'shelltemp' 'stmp' シェルコマンドに一時ファイルを使うかどうか -'shelltype' 'st' Amiga: シェルの使い方に影響する -'shellxquote' 'sxq' 'shellquote'に似ているがリダイレクションを含む -'shiftround' 'sr' インデントを'shiftwidth'の倍数に丸める -'shiftwidth' 'sw' (自動的な)インデントにつかうシフト幅 -'shortmess' 'shm' メッセージを短縮するフラグのリスト -'shortname' 'sn' MS-DOS以外: ファイル名が8.3形式であると仮定する -'showbreak' 'sbr' 折り返し表示された行の最初に表示する文字 -'showcmd' 'sc' (未完の)コマンドをステータス行に表示する -'showfulltag' 'sft' タグで補完する時完全なタグのパターンを表示する -'showmatch' 'sm' 括弧入力時に対応する括弧を知らせる -'showmode' 'smd' ステータスラインに現在のモードを表示する -'showtabline' 'stal' いつタブページ行を表示するか -'sidescroll' 'ss' 水平スクロールの刻み幅 -'sidescrolloff' 'siso' カーソルの左右に確保する表示幅 -'smartcase' 'scs' パターンが大文字を含むときは文字の大小を区別する -'smartindent' 'si' C言語用の高度な自動インデント -'smarttab' 'sta' <Tab>入力時に'shiftwidth'を使う -'softtabstop' 'sts' <Tab>で入力する空白の数 -'spell' スペルチェッキングを有効にする -'spellcapcheck' 'spc' スペルチェッキングを有効にする -'spellfile' 'spf' zg|と|zw|が単語を保存するファイル -'spelllang' 'spl' スペルチェックをする言語 -'spellsuggest' 'sps' スペリング訂正をするのに使われるメソッド -'splitbelow' 'sb' ウインドウの横分割で新規ウィンドウを下に作る -'splitright' 'spr' ウインドウの縦分割で新規ウィンドウを右に作る -'startofline' 'sol' カーソル移動コマンドで行の最初の非空白へ移動する -'statusline' 'stl' ステータスラインの表示内容を設定する -'suffixes' 'su' ファイルが複数マッチした時に無視する拡張子 -'suffixesadd' 'sua' 検索対象のファイルの拡張子 -'swapfile' 'swf' スワップファイルを使うかどうか -'swapsync' 'sws' スワップファイルの同期方法 -'switchbuf' 'swb' バッファ切替え時の動作 -'synmaxcol' 'sws' この桁までしか構文アイテムを探さない -'syntax' 'syn' カレントバッファの構文強調表示の定義 -'tabstop' 'ts' <Tab>の表示幅 -'tabline' 'tal' コンソールのタブページラインのカスタムフォーマット -'tabpagemax' 'tpm' タブページの最大数。|-p|と"tab all"に使われる。 -'tagbsearch' 'tbs' タグファイル内の検索にバイナリサーチを使う -'taglength' 'tl' タグ名はこの文字数までしか意味を持たない -'tagrelative' 'tr' タグファイル内のファイル名が相対的になる -'tags' 'tag' タグコマンドで使うファイルのリスト -'tagstack' 'tgst' タグスタックにタグをプッシュする -'term' ターミナルの名前 -'termbidi' 'tbidi' ターミナルが双方向性を持っている -'termencoding' 'tenc' ターミナルが使用する文字コード -'terse' いくつかのメッセージを省略する -'textauto' 'ta' 廃止。今は'fileformats'を使う -'textmode' 'tx' 廃止。今は'fileformat'を使う -'textwidth' 'tw' 入力されているテキストの最大幅 -'thesaurus' 'tsr' キーワード補完に使う thesaurus ファイルのリスト -'tildeop' 'top' "~" がオペレータのように振舞う -'timeout' 'to' マッピングやキーコード入力の時間制限 -'timeoutlen' 'tm' 入力をタイムアウトにするミリ秒単位の時間 -'title' ウインドウのタイトルを変更するようにする -'titlelen' ウインドウのタイトルの'columns'(列幅)の割合 -'titleold' 終了時に戻す古いタイトル -'titlestring' ウインドウのタイトル -'toolbar' 'tb' GUI: ツールバーに表示する内容 -'toolbariconsize' 'tbis' ツールバーアイコンのサイズ(GTK2だけ) -'ttimeout' マッピング入力の時間制限 -'ttimeoutlen' 'ttm' キーコード入力をタイムアウトにするミリ秒単位の時間 -'ttybuiltin' 'tbi' 外部のtermcapの前に組込みのtermcapを探す -'ttyfast' 'tf' 高速ターミナル接続を行う -'ttymouse' 'ttym' マウスコードの種類 -'ttyscroll' 'tsl' 画面をスクロールする行数の最大値 -'ttytype' 'tty' 'term'の別名 -'undodir' 'udir' アンドゥファイルの保存場所 -'undofile' 'udf' アンドゥ情報をファイルに保存する -'undolevels' 'ul' アンドゥ可能な回数の最大値 -'undoreload' 'ur' バッファ再読み込み時にアンドゥを保存するかどうかを - 行数で制限する -'updatecount' 'uc' この回数だけ入力するとスワップファイルを更新する -'updatetime' 'ut' この時間だけ入力がなければスワップファイルを更新 -'verbose' 'vbs' 有益なメッセージを表示する -'verbosefile' 'vfile' メッセージを書き込むファイル -'viewdir' 'vdir' |:mkview|によるファイルを格納するディレクトリ -'viewoptions' 'vop' |:mkview|の保存内容を決める -'viminfo' 'vi' 起動時と終了時に.viminfoファイルを使う -'virtualedit' 've' フリーカーソルモードを使う場面 -'visualbell' 'vb' ビープの代わりにvisualベル(画面フラッシュ)を使用 -'warn' バッファ変更済み時にシェル使用で警告する -'weirdinvert' 'wiv' 変な強調表示方法を持つターミナル用 -'whichwrap' 'ww' 行を越えて機能するキーを設定する -'wildchar' 'wc' コマンドラインでワイルドカードの展開に使うキー -'wildcharm' 'wcm' 'wildchar'に似た、マッピング内で使うもの -'wildignore' 'wig' リスト内のどれかにマッチしたファイル名は補完しない -'wildignorecase' 'wic' ファイル名を補完するときに大文字と小文字を無視する -'wildmenu' 'wmnu' コマンドラインで補完候補をメニュー表示する -'wildmode' 'wim' 'wildchar'の補完モード -'wildoptions' 'wop' コマンドライン補完をどう行うか指定する -'winaltkeys' 'wak' GUIでのALTキーの使い方 -'window' 'wi' CTRL-F と CTRL-B でスクロールする行数 -'winheight' 'wh' カレントウィンドウの行数の最小値 -'winfixheight' 'wfh' ウィンドウの高さをキープする -'winfixwidth' 'wfh' ウィンドウの幅をキープする -'winminheight' 'wmh' カレントウィンドウ以外のウィンドウの高さの最小値 -'winminwidth' 'wmw' カレントウィンドウ以外のウィンドウの幅の最小値 -'winwidth' 'wiw' カレントウィンドウの幅の最小値 -'wrap' 長い行を折り返して表示する -'wrapmargin' 'wm' 折り返しを開始する右端からの文字数 -'wrapscan' 'ws' 検索がファイル末尾まで進んだら先頭から再検索 -'write' ファイルへの保存を許可する -'writeany' 'wa' ファイルへの保存時は"!"がなくても上書きする。 -'writebackup' 'wb' 上書きする時にはバックアップを作る。 -'writedelay' 'wd' 入力の延滞時間を1/1000秒単位で指定(デバッグ用) ------------------------------------------------------------------------------- -*Q_ur* Undo/Redo コマンド - -|u| N u 最後の N 回分の作業をアンドゥ -|CTRL-R| N CTRL-R 最後の N 回分のアンドゥを取り消す(redo) -|U| U 行全体への変更を取り消す ------------------------------------------------------------------------------- -*Q_et* 外部コマンド - -|:shell| :sh[ell] シェルを起動する -|:!| :!{command} {command}をシェルで起動する -|K| K カーソル下にある単語を'keywordprg' 外部コマン - ドで調べる。(デフォルトは"man") ------------------------------------------------------------------------------- -*Q_qf* Quickfix コマンド - -|:cc| :cc [nr] [nr]番のエラーを表示(省略すると再表示) -|:cnext| :cn 次のエラーを表示 -|:cprevious| :cp 1つ前のエラーを表示 -|:clist| :cl 全エラーの一覧を表示 -|:cfile| :cf 'errorfile'からエラーを読み込む -|:cgetbuffer| :cgetb :cbufferと同様だが最初のエラーにジャンプしない -|:cgetfile| :cg :cfileと同様だが最初のエラーにジャンプしない -|:cgetexpr| :cgete :cexprと同様だが最初のエラーにジャンプしない -|:caddfile| :caddf エラーファイルから現在のquickfixリストにエラー - を追加する -|:caddexpr| :cad 式から現在のquickfixリストにエラーを追加する -|:cbuffer| :cb バッファ内のテキストからエラーを読み込む -|:cexpr| :cex 式からエラーを読み込む -|:cquit| :cq ファイルを保存せずに、(コンパイラに)エラーコー - ドを戻して終了する -|:make| :make [args] makeする。エラーを開き最初のコンパイルエラー - にジャンプ -|:grep| :gr[ep] [args] 'grepprg'を実行し、合致する最初の行にジャンプ ------------------------------------------------------------------------------- -*Q_vc* さまざまなコマンド - -|CTRL-L| CTRL-L 画面の再描画 -|CTRL-G| CTRL-G 現在の(パス名+)ファイル名とカーソル位置を - 表示 -|ga| ga カーソル位置のASCII文字コードを10進、16進、 - 8進で表示 -|g8| g8 utf-8エンコーディング用:カーソル下の文字のバ - イト列を16進で表示する。 -|g_CTRL-G| g CTRL-G カーソル桁数、行数、単語数、文字数を表示 -|CTRL-C| CTRL-C 検索中:検索を中止 -|dos-CTRL-Break| CTRL-Break MS-DOS: 検索中:検索を中止 -|<Del>| <Del> 回数指定中: 最後の文字を削除 -|:version| :ve[rsion] バージョン情報を表示 -|:mode| :mode N MS-DOS: 画面モードを N (数字,C80,C4350,など) - に - -|:normal| :norm[al][!] {commands} - 通常モードコマンドを実行 -|Q| Q "Ex"モードに移行 - -|:redir| :redir >{file} メッセージを{file}にリダイレクト -|:silent| :silent[!] {command} {command} を寡黙に実行 -|:confirm| :confirm {command} 終了時、保存時などに保存していない - 変更やリードオンリーの確認をする -|:browse| :browse {command} ファイルを開く時や保存する時に選択 - ダイアログ画面を使う。 ------------------------------------------------------------------------------- -*Q_ce* コマンドラインの編集 - -|c_<Esc>| <Esc> コマンドラインを破棄する('wildchar'が<Esc> - の場合は2回押す) - -|c_CTRL-V| CTRL-V {char} {char}を文字として挿入する(CTRL文字など) -|c_CTRL-V| CTRL-V {number} 文字コードを10進数入力する(最大3桁まで) -|c_CTRL-K| CTRL-K {char1} {char2} - 合字を入力する(|Q_di|参照) -|c_CTRL-R| CTRL-R {0-9a-z"%#:-=} - レジスタの内容を挿入する - -|c_<Left>| <Left>/<Right> カーソルを左右に移動 -|c_<S-Left>| <S-Left>/<S-Right> カーソルを単語単位で左右に移動 -|c_CTRL-B| CTRL-B/CTRL-E カーソルを行頭、行末に移動 - -|c_<BS>| <BS> カーソルの直前の文字を削除 -|c_<Del>| <Del> カーソル位置の文字を削除 -|c_CTRL-W| CTRL-W カーソルの直前の文字を削除 -|c_CTRL-U| CTRL-U 全文字を削除 - -|c_<Up>| <Up>/<Down> 現在のコマンドで始まるコマンドラインの履歴 - を呼び出す -|c_<S-Up>| <S-Up>/<S-Down> コマンドラインの履歴を呼び出す -|:history| :his[tory] コマンドライン履歴を表示 - -文脈依存の補完機能 - -|c_wildchar| 'wildchar' (デフォルト: <Tab>) - カーソルの直前のパターンに合せた補完を実施 - 合致するものが複数ある場合は、ビープを鳴らし - 最初に合致したものを表示。さらに'wildchar'を - 押すと次に合致したものを表示。 -|c_CTRL-D| CTRL-D 現在のカーソルの直前のパターンに合致する全 - ての名前の一覧を表示 -|c_CTRL-A| CTRL-A 現在のカーソルの直前のパターンに合致する全 - ての名前を挿入 -|c_CTRL-L| CTRL-L 現在のカーソルの直前のパターンに合致するも - ののうち、共通部分を挿入 -|c_CTRL-N| CTRL-N 'wildchar'にて複数候補があるとき次の候補へ -|c_CTRL-P| CTRL-P 'wildchar'にて複数候補があるとき前の候補へ ------------------------------------------------------------------------------- -*Q_ra* Exコマンドの範囲 - -|:range| , 2つの行の範囲 -|:range| ; 同上。最初の指定行から次の指定範囲まで - -|:range| {number} ファイル中の行番号 -|:range| . 現在行 -|:range| $ ファイルの最終行 -|:range| % 1,$と同じ(=ファイル全体) -|:range| * '<,'>と同じ(=ビジュアルモードの選択範囲) -|:range| 't マーク t の行 -|:range| /{pattern}[/] {pattern} に合致する行の次の行 -|:range| ?{pattern}[?] {pattern} に合致する行の前の行 - -|:range| +[num] 直前の行指定(デフォルト:1)に[num]を加算した - もの -|:range| -[num] 直前の行指定(デフォルト:1)から[num]を減算し - たもの ------------------------------------------------------------------------------- -*Q_ex* 特殊な Ex 文字 - -|:bar| | コマンドを2つに分割 (":global"と":!"では使用不可) -|:quote| " コメントの開始 - -|:_%| % 現在のファイル名(ファイル名を使うべき場所でのみ可) -|:_#| #[num] 別のファイル名[num] (ファイル名を使うべき場所でのみ可) - - Note: 以下の 7 つについては、そのまま打ち込みます。特殊キーの表記では - ありません。 -|:<abuf>| <abuf> バッファ番号。自動コマンドで使われる (ファイル名を使う - べき場所でのみ可) -|:<afile>| <afile> ファイル名。自動コマンドで使われる (ファイル名を使うべ - き場所でのみ可) -|:<amatch>| <amatch> パターンにマッチしたもの。自動コマンドで使われる (ファ - イル名を使うべき場所でのみ可) -|:<cword>| <cword> カーソル下の単語(ファイル名を使うべき場所でのみ可) -|:<cWORD>| <cWORD> カーソル下の大単語(ファイル名を使うべき場所でのみ可) - ※ 大単語については|WORD|を参照) -|:<cfile>| <cfile> カーソルのあるファイルの名前(ファイル名を使うべき場 - 所でのみ使用可) -|:<sfile>| <sfile> そのファイルで ":source"を使ったファイルの名前(ファ - イル名を使うべき場所でのみ使用可) - - "%", "#", "<cfile>", "<sfile>" , "<afile>" の後に以下の指定 - が可能 - |::p| :p フルパス - |::h| :h ディレクトリ部(ファイル名を削除) - |::t| :t ファイル名のみ - |::r| :r ルート (ファイル名の拡張子のみ削除) - |::e| :e 拡張子のみ - |::s| :s/{pat}/{repl}/ {pat}を{repl}に置換 ------------------------------------------------------------------------------- -*Q_st* Vim の起動方法 - -|-vim| vim [options] 空バッファで編集を開始する -|-file| vim [options] {file} .. 1つ以上のファイルの編集を開始する -|--| vim [options] - ファイルを標準入力から読み込む -|-tag| vim [options] -t {tag} {tag}に関連付けられたファイルを編集 -|-qf| vim [options] -q [fname] QuickFixモードで編集を開始する。 - 最初のエラーを表示する。 - - 最も有用なVimの引数(完全なリストは|startup-options|を参照) - -|-gui| -g GUIを開始する(他のオプションも併用できる) - -|-+| +[num] カーソルを[num]行に移動する(デフォルト:最後の行) -|-+c| +{command} ファイルを読み込んだ後に{command}を実行する -|-+/| +/{pat} {file} .. 最初に{pat}が現れる場所にカーソルを移動する -|-v| -v Viモード。exをノーマルモードで起動する -|-e| -e Exモード。VimをExモードで起動する -|-R| -R 読み込み専用モード。-nもセットする -|-m| -m 修正不可能にする。(オプション'write'をオフにする) -|-d| -d diffモード |diff| -|-b| -b バイナリモード -|-l| -l lispモード -|-A| -A アラビア語モード ('arabic'がセットされる) -|-F| -F ペルシア語モード ('fkmap'と'rightleft'をセット) -|-H| -H ヘブライ語モード ('hkmap'と'rightleft'をセット) -|-V| -V 冗長。役に立つメッセージを表示する -|-C| -C 互換。'compatible'をセットする -|-N| -N 非互換。'compatible'をオフにする -|-r| -r スワップファイルの一覧を表示する -|-r| -r {file} .. 破棄された編集セッションを復元する -|-n| -n スワップファイルを作らない -|-o| -o [num] [num]個のウィンドウを開く。(デフォルト:各ファイル - に対して1個) -|-f| -f GUI: foreground process。forkしない - Amiga: Vimを新しいウィンドウで起動しない - (メールなど用) -|-s| -s {scriptin} 最初にファイル{scriptin}からコマンドを読み込む -|-w| -w {scriptout} 入力された文字を{scriptout}に書き込む(追加) -|-W| -W {scriptout} 入力された文字を{scriptout}に書き込む(上書き) -|-T| -T {terminal} 端末の名前を設定する -|-d| -d {device} Amiga: {device}をコンソールとして開く -|-u| -u {vimrc} {vimrc}を初期化ファイルとして読み込む -|-U| -U {gvimrc} 同上。GUIを起動するときに使われる。 -|-i| -i {viminfo} {viminfo}から情報を読み込む -|---| -- オプション終了。以降の引数はファイル名になる -|--help| --help 引数の一覧を表示して終了する -|--version| --version バージョン情報を表示して終了する -|--| - 標準入力からファイルを読み込む ------------------------------------------------------------------------------- -*Q_ed* ファイルの編集 - - !なしの場合: 現バッファに変更が加わっている場合はコマンド失敗 - !ありの場合: 現在のバッファに対する変更は破棄して、コマンド実行 -|:edit_f| :e[dit][!] {file} {file}を編集 -|:edit| :e[dit][!] 現在のバッファ内容を再読み込み -|:enew| :ene[w][!] 新たな名前なしバッファを編集 -|:find| :fin[d][!] {file} {file} を'path' から探し、編集 - -|CTRL-^| N CTRL-^ 別ファイル N を編集(":e #N"と同じ) -|gf| gf or ]f カーソル下にある名前のファイルを編集 -|:pwd| :pwd カレントディレクトリを表示 -|:cd| :cd [path] カレントディレクトリを [path] に変更 -|:cd-| :cd - 直前のカレントディレクトリに戻る -|:file| :f[ile] 現在のファイル名とカーソル位置を表示 -|:file| :f[ile] {name} 現在のファイル名を{name}に変更 -|:files| :files 別ファイル一覧を表示 ------------------------------------------------------------------------------- -*Q_fl* 引数リストの使い方 |argument-list| - -|:args| :ar[gs] 引数一覧を表示。現在のファイルは[ ]で囲む -|:all| :all or :sall 引数一覧にある全ファイルをウィンドウで表示 -|:wn| :wn[ext][!] 現在のファイルを保存し、次のファイルを編集 -|:wn| :wn[ext][!] {file} {file}がなければ、現在のバッファを{file}に - 保存し、次のファイルを編集。"!"を使えば、 - 既存ファイルを上書き保存 -|:wN| :wN[ext][!] [file] 現在のファイルを保存し、1つ前のファイルを - 編集 - - in current window in new window ~ -|:argument| :argu[ment] N :sar[gument] N ファイル N を編集 -|:next| :n[ext] :sn[ext] 次のファイルを編集 -|:next_f| :n[ext] {arglist} :sn[ext] {arglist} 新たな引数リストを作り - 最初のファイルを編集 -|:Next| :N[ext] :sN[ext] 1つ前のファイルを編集 -|:first| :fir[st] :sfir[st] 最初のファイルを編集 -|:last| :la[st] :sla[st] 最後のファイルを編集 ------------------------------------------------------------------------------- -*Q_wq* 保存と終了 - -|:w| :[range]w[rite][!] 現在のファイルに保存 -|:w_f| :[range]w[rite] {file} {file}がなければ、{file}に保存。 -|:w_f| :[range]w[rite]! {file} {file}に保存。ファイルがあれば上書き。 -|:w_a| :[range]w[rite][!] >> 現在のファイルに追記 -|:w_a| :[range]w[rite][!] >> {file} {file}に追記 -|:w_c| :[range]w[rite] !{cmd} [range]の行を標準入力として{cmd}を - 実行。 -|:up| :[range]up[date][!] 変更されていれば、上書き保存 -|:wall| :wa[ll][!] 変更のある全バッファを上書き保存 - -|:q| :q[uit] 変更がなければ、現在のバッファを終了。他に - ヘルプ以外のバッファがなければvimを終了。 -|:q| :q[uit]! 変更を破棄して、現在のバッファを終了。他に - ヘルプ以外のバッファがなければvimを終了。 -|:qa| :qa[ll] 変更がない限りvimを終了 -|:qa| :qa[ll]! 変更があってもvimを強制終了 -|:cq| :cq 保存せずに終了し、エラーコードを返す。 - -|:wq| :wq[!] 現ファイルを保存して終了 -|:wq| :wq[!] {file} {file}に保存して終了 -|:xit| :x[it][!] [file] ":wq"と同様だが、変更が加わっている場合のみ - 保存 -|ZZ| ZZ ":x"と同じ -|ZQ| ZQ ":q!"と同じ -|:xall| :xa[ll][!] or :wqall[!] - 変更のある全バッファを保存して終了 - -|:stop| :st[op][!] vimをサスペンドし、新たなシェルを起動。'aw' - オプションがONで、[!]も指定していない場合は - バッファを保存 -|CTRL-Z| CTRL-Z ":stop"と同じ。 ------------------------------------------------------------------------------- -*Q_ac* 自動コマンド - -|viminfo-file| 起動時にレジスタ、マーク、ヒストリを読み込み、終了時に保存 - -|:rviminfo| :rv[iminfo] [file] viminfoファイル [file] から情報を読む -|:rviminfo| :rv[iminfo]! [file] 同上。既存情報を破棄して読む -|:wviminfo| :wv[iminfo] [file] viminfoファイル [file] に情報を追記 -|:wviminfo| :wv[iminfo]! [file] viminfoファイル [file] に情報を上書き - -|modeline| ファイルを編集する時に自動的にオプションを設定 - -|modeline| vim:{set-arg}: .. ファイルの最初か最後の行にあれば、 - ('ml'オプションを参照) {set-arg}の - 内容を":set"への引数として与える。 - -|autocommand| 特定のイベントで自動的にコマンドを実行 - -|:autocmd| :au 自動コマンドの一覧表示 -|:autocmd| :au {event} {event}用の自動コマンドの一覧表示 -|:autocmd| :au {event} {pat} {event}用の自動コマンドのうち、{pat} - に合致するコマンドの一覧表示 - {pat} -|:autocmd| :au {event} {pat} {cmd} {event}と{pat}用の新たな自動コマンドを - {cmd}として登録 -|:autocmd| :au! 全ての自動コマンドを削除 -|:autocmd| :au! {event} {event}用の自動コマンドを削除 -|:autocmd| :au! * {pat} {pat}に合致する自動コマンドを削除 -|:autocmd| :au! {event} {pat} {event}と{pat}に合致する自動コマンド - を削除 -|:autocmd| :au! {event} {pat} {cmd} {event}と{pat}に合致する自動コマン - ドを削除後、{cmd}として再登録 ------------------------------------------------------------------------------- -*Q_wi* 複数ウィンドウコマンド - -|CTRL-W_s| CTRL-W s or :split ウィンドウを2つに分割 -|:split_f| :split {file} ウィンドウを2つに分割し、片方で - {file}を開く -|:vsplit| :vsplit {file} 同上。ウインドウは縦分割。 -|:vertical| :vertical {cmd} {cmd}が縦分割するようにする -|:sfind| :sf[ind] {file} ウィンドウを分割し、{file}を'path' - 中で探し、それを編集 -|CTRL-W_]| CTRL-W ] ウィンドウを分割し、カーソル下のタグ - にジャンプ -|CTRL-W_f| CTRL-W f ウィンドウを分割し、カーソル下のファ - イルにジャンプ -|CTRL-W_^| CTRL-W ^ ウィンドウを分割し、別ファイルにジャ - ンプ -|CTRL-W_n| CTRL-W n or :new 新たな空ウィンドウを作成 -|CTRL-W_q| CTRL-W q or :q[uit] 編集を終了しウィンドウを閉じる -|CTRL-W_c| CTRL-W c or :cl[ose] バッファを隠しウィンドウを閉じる -|CTRL-W_o| CTRL-W o or :on[ly] 画面を現在ウィンドウ1つだけにする - -|CTRL-W_j| CTRL-W j カーソルを下のウィンドウに移動 -|CTRL-W_k| CTRL-W k カーソルを上のウィンドウに移動 -|CTRL-W_CTRL-W| CTRL-W CTRL-W カーソルを下のウィンドウに移動(wrap) -|CTRL-W_W| CTRL-W W カーソルを上のウィンドウに移動(wrap) -|CTRL-W_t| CTRL-W t カーソルを一番上のウィンドウに移動 -|CTRL-W_b| CTRL-W b カーソルを一番下のウィンドウに移動 -|CTRL-W_p| CTRL-W p カーソルを直前のアクティブウィンドウ - に移動 - -|CTRL-W_r| CTRL-W r ウィンドウを下側にローテートする。 -|CTRL-W_R| CTRL-W R ウィンドウを上側にローテートする。 -|CTRL-W_x| CTRL-W x 現在のウィンドウを次のウィンドウと - 入れ換え - -|CTRL-W_=| CTRL-W = 全ウィンドウの高さを同一に -|CTRL-W_-| CTRL-W - 現在のウィンドウの高さを減らす -|CTRL-W_+| CTRL-W + 現在のウィンドウの高さを増やす -|CTRL-W__| CTRL-W _ 現在のウィンドウの高さを変更する - (デフォルト:最大) ------------------------------------------------------------------------------- -*Q_bu* バッファ管理コマンド - -|:buffers| :buffers or :files 全バッファとファイル名の一覧 - -|:ball| :ball or :sball 全引数/バッファを編集 -|:unhide| :unhide or :sunhide 読み込み中の全バッファを編集 - -|:badd| :badd {fname} ファイル名{fname}をバッファ一覧に追加 -|:bunload| :bunload[!] [N] [N]番バッファをメモリから開放 -|:bdelete| :bdelete[!] [N] [N]番バッファを開放してバッファ一覧 - から削除 - - in current window in new window ~ -|:buffer| :[N]buffer [N] :[N]sbuffer [N] N 番バッファ/argへ -|:bnext| :[N]bnext [N] :[N]sbnext [N] N番分、次のバッファ/argへ -|:bNext| :[N]bNext [N] :[N]sbNext [N] N番分、次のバッファ/argへ -|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] 同上 -|:bfirst| :bfirst :sbfirst 最初のバッファ/argへ -|:blast| :blast :sblast 最後のバッファ/argへ -|:bmodified| :[N]bmod [N] :[N]sbmod [N] N番分、更新したバッファへ ------------------------------------------------------------------------------- -*Q_sy* シンタックスハイライト - -|:syn-on| :syntax on シンタックスハイライトの使用開始 -|:syn-off| :syntax off シンタックスハイライトの使用停止 - -|:syn-keyword| :syntax keyword {group-name} {keyword} .. - シンタックスにキーワードを加える -|:syn-match| :syntax match {group-name} {pattern} ... - シンタックスにマッチを加える -|:syn-region| :syntax region {group-name} {pattern} ... - シンタックスにリージョンを加える -|:syn-sync| :syntax sync [ccomment | lines {N} | ...] - 同期方法を指示する -|:syntax| :syntax [list] 現在のシンタックスのアイテムを一覧する -|:syn-clear| :syntax clear 全てのシンタックスを削除する - -|:highlight| :highlight clear 全てのハイライトを削除する -|:highlight| :highlight {group-name} {key}={arg} .. - {group-name} にハイライトを設定する - -|:filetype| :filetype on ファイルタイプの検出を有効にする - シンタックスハイライトは有効にならない -|:filetype| :filetype plugin indent on - ファイルタイプの検出を有効にする - 各設定とオートインデントを有効にする ------------------------------------------------------------------------------- -*Q_gu* GUI コマンド - -|:gui| :gui UNIX: GUI 版を起動 -|:gui| :gui {fname} .. 同上、さらに{fname} .. を編集 - -|:menu| :menu 全メニューを表示 -|:menu| :menu {mpath} {mpath}で始まる全メニューを表示 -|:menu| :menu {mpath} {rhs} {mpath}にメニューを加える。 - {mpath}選択で{rhs}実行。 -|:menu| :menu {pri} {mpath} {rhs} - 同上、さらに{pri}による優先度指定 -|:menu| :menu ToolBar.{name} {rhs} - ツールバーの項目を加える。 - {name}選択で{rhs}実行。 -|:tmenu| :tmenu {mpath} {text} {mpath}のメニューにツールチップを加える -|:unmenu| :unmenu {mpath} {mpath}のメニューを削除する - ------------------------------------------------------------------------------- -*Q_fo* 折り畳みコマンド - -|'foldmethod'| set foldmethod=manual 手動で折畳み - set foldmethod=indent インデントで折畳み - set foldmethod=expr 'foldexpr'で折畳み - set foldmethod=syntax シンタックスのリージョンで折畳み - set foldmethod=marker 'foldmarker'で折畳み - -|zf| zf{motion} 手動で折畳みを定義する -|:fold| :{range}fold {range}範囲の行を折畳む -|zd| zd カーソル下の1つの折畳みを削除する -|zD| zD カーソル下の全ての折畳みを削除する - -|zo| zo カーソル下の折畳みを1段開く -|zO| zO カーソル下の折畳みを全段開く -|zc| zc カーソル下の折畳みを1段閉じる -|zC| zC カーソル下の折畳みを全段閉じる - -|zm| zm 'foldlevel'を減らし、折畳みを増やす -|zM| zM 'foldlevel'を0にし、全て折畳む -|zr| zr 'foldlevel'を増やし、折畳を減らす -|zR| zR 'foldlevel'を最大にし、全て開く - -|zn| zn 'foldenable'を無効にし、折畳み無し -|zN| zN 'foldenable'を有効にし、折畳む -|zi| zi 'foldenable'を反転させる - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/quotes.jax b/runtime.old/doc/quotes.jax deleted file mode 100644 index 89bc9a5e0..000000000 --- a/runtime.old/doc/quotes.jax +++ /dev/null @@ -1,264 +0,0 @@ -*quotes.txt* For Vim バージョン 7.3. Last change: 2010 Nov 03 - - - VIMリファレンスマニュアル by Bram Moolenaar - - - *quotes* -ニュースやメールから集めた、Vimに関する素晴らしい引用を紹介する。 - - -vim (vim) 名詞 - 溢れんばかりのバイタリティとエネルギー。 [ラテン語, 『力』の -直接目的格, 力] (辞書) - -Vimはviより大変優れているので、私の古いviの多くの偉大な:mapがすぐに廃れてし -まった! (Tony Nugent, オーストラリア) - -WindowsのGUI志向の強い影響で、Viを使う人々は実は人間の姿をしたエイリアンなん -じゃないかと思っていた。でも一度試してみるとそのパワーに病みつきになって、今で -はVim以外のソフトウェアでVimのようにキータイプするまでになってしまった。これ -が、テキストを編集するあらゆるアプリケーションにVimを埋め込まれて欲しいと願う -理由。 (Jos?? Fonseca) - -私は12年来のemacsユーザだったが、相次ぐ互換性のないバージョンアップや、役立た -ずの追加パッケージ群、一貫性のない操作方法などに嫌気がさして1年前にVimに乗り換 -えた。まさに生涯最高の選択の1つだった。 (Joel Burton) - -資料の作成や修正に多くのプログラムを使用したが、編集のほとんどはGNU-Linux -(RedHat 4.2)上のVimのバージョン4.5と5.0で行なわれた。 -(Arnold Robbins, イスラエル, "Learning the Vi editor"の著者) - -私は幾つものオープンソフトを使い、さらに多くのソフトを見てきたが、その中でも -Vimは大変使いやすく、とても完成度が高く、linux kernel に次ぐ最高の作品だ。 - (Peter Jay Salzman) - -SourceForgeの「全体が」VimとそのPHP用のイカシた構文強調を使って書かれている、 -ということはたいして重要ではない。大事なのはSF.netの技術スタッフ全員がVimを -使っているということであり、そして貴方がVimを使うことを大いに歓迎しているとい -うことだ! (Tim Perdue) - -Vimは私の七つ道具の一つで、代用品がありません。なんてすばらしい作品なんだろう! -(Biju Chacko) - -私の元カノはemacsに走りました。もちろん、彼女とはうまくいきませんでした。 -(Geoffrey Mann) - -魚が水のことを意識しないと思われるのと同様に、私はほとんどVimについて意識しな -い。それは総ての中にある環境である。私は相当に忙しいシステム管理者で、多くの異 -なるプラットホームを扱っている。Vimは私のシステム総てに共通して存在する唯一の -もので、「時々クラッシュする」ということもない唯一のものだ。新しいシステムに -Vimが入っていなかったときには、私は真っ先にインストールする。どの環境でもまっ -たく信頼のおける同じツールを使うことができることは素晴らしく、おかげでVimにつ -いては無視することができ、その他のものについては考えることができるのだ。 (Pete -Schaeffer) - -最近ノキアの端末を通してtelnet経由でVimを起動することに成功した、現在Palm -Pilotでも素晴らしく動いたことを報告できる。 (Allan Kelly, スコットランド) - -Bram! 'VIM'というなんてものすごい仕事をしたものだ! 使えば使うほど感動するよ -(私は古い'vi'のダイハードで1970年代後半の初期の'emacs'から使い始め、1983年に初 -期のUNIXで'vi'を見つけることで救われた)。私の考えでは、標準のトップエディタと -して'VIM'が'emacs'に置換わる時だよ。 (Bo Thide', スウェーデン) - -私もVIMを深く愛し使っている。 (Larry Wall (訳注:Perlの作者)) - -Viはまるでフェラーリだ。初心者にはまるで暴れ馬だが、いったんコツさえ掴んでしま -えば、非常に小さくパワフルかつ高速だ! (不明) -VIMはまるでフェラーリの新モデルだ。発音もそっくり - "VIIIIIIMMM!"。(Stephen -Riehm, ドイツ) - -Schon bei Nutzung eines Bruchteils der VIM-Funktionen wird der Benutzer recht -schnell die Vorzuege dieses Editors kennen- und schaetzenlernen. -翻訳: VIMの機能をほんの少し使うだけでも、ユーザはすぐに使うことができこのエ -ディタの強みを正しく評価するだろう。 (Garry Glendown, conclusion of an -article on VIM in iX magazine 9/1998) - -つい最近VIについてのオライリーの本を手に入れた(VIMについても深く言及されてい -た)。このアプリケーションがあまりにパワフルで驚愕した。 (Jeffrey Rankin) - -このガイドは Windows 9.x 上の GVIM で書いている。これは神が裸の女性を創造して -以来の最高傑作なんじゃないだろうか。 (Michael DiBernardo) - -坊主、私は私自身VIMについてほとんど総てのことを知っていると考えていた。しかし -いつもオンラインドキュメントを眺めるたびに、それまで知らなかったVIMの機能の小 -さな、しかしクールな面を見つけるんだ!。これは私がみた中でも(多くの商業製品と比 -べてさえも)最高のドキュメントであると言わねばならない。 (Gautam Mudunuri) - -VIM 4.5は本当に素晴らしい(ファンタスティックな)エディタだ。VIMにはものす -ごぉぉぉぉい多くの機能があり更に重要なことには、初期設定が素晴らしいので本当に -何の変更も無しに使うことが出来るのだ!!。VIM作者への私の驚きと感謝の念はどんな -言葉をもっても語り尽くせない。この先もそうであって。 (Vikas, アメリカ合衆国) - -人々が他のViエディタをVIMのクローンと呼ぶようになるまでどのくらいかかるだろう -か? (Darren Hiebert) - -"Perfect Programmer's Editor"のスレッドにある[makeのエラーに基づいて自動的に -ファイルの位置へ飛ぶ]というのを読んで、VIMは既にそれをサポートしているので嬉し -かった。 (Brendan Macmillan, オーストラリア) - -VIM (5.0)を発見して多くの知人とそれについて話をした。VIMはVIの新世紀 -(Millenium)を象徴するんだ、と彼らに言い聞かせた。本当にありがとう! (Matt F. -Valentine) - -"vi"は今から"Vim Imitation(Vimのものまね)"と呼ばれるべきで、逆ではないと考える -(訳注: VIMはもともとVi IMitationに端を発している)。 (Rungun Ramanathan) - -VIMの法則(訳注: 数学の公式風に): -プログラムPの考え得る限りの動作空間Bの中で各々の要素をbとした時、プログラムPの -全ユーザ空間Uのうち少なくとも1人のユーザuが、ある動作bを許された動作空間B'に加 -えるように要求するまでにかかる時間は有限である。 (このときB'は B' <= Bとなる) -言い換えれば: 遅かれ早かれ全員がオプションとして総てを欲しがるんだよ (Negri) - -あたらしい計算機プラットホームに移る時はいつも、決まってまず最初にやるのはVIM -を移植すること。後にconfigureを使った時にコンパイルの簡単さにビックリした。 -(A.M. Sabuncu, トルコ) - -オプションが本当に優秀でとてもパワフルだ。 (Anish Maharaj) - -ユーザインターフェースのデザインは春であり、80x24テキスト専用モードのブティッ -クからの「言葉は復讐に戻った!」。ViエディタのクローンであるVIMは、5.0のシン -タックスハイライトによって3月のデスクトップに眩暈のするパステルの景色をもたら -した。金切り声とカスタマイズ性、VIMは伝統的なViのシングルキーマクロ集に独自の -解釈をすることで、我々を驚かせる。(訳注: 原文が難解でまったく自信無) -http://www.ntk.net/index.cgi?back=archive98/now0327.txt&line=179#l - -VIM 5の衝撃をどうしても伝えたかったんだ!。シンタックスハイライティング: これ無 -しでどうやって生きろって?!。人類最高のエディタを作ってくれてありがとう! -(Mun Johl, アメリカ合衆国) - -重ね重ねVIMには感謝する。Linuxで毎日使っている。 (Eric Foster-Johnson, "UNIX -Programming Tools"の著者) - -史上最高のエディタ (Stuart Woolford) - -VIMの素晴らしい機能のほとんどを少なくとも1度は、ものによってはもう何度も頻繁に -使ってきた。正直に白状しよう、どれ1つ欠けても生きていけない。viを使っていた頃 -の自分と生産性を比べると、優に倍にはなっている。 (Sitaram Chamarty) - -VIMを愛している。信じられないよ(incredible)。最初の子供にVimberlyと名づけた。 -(Jose Unpingco, アメリカ合衆国) - -ヒント: "VIM"は"vi improved(vi改)"っていうほうが良い! (Sven Guckes, ドイツ) - -毎日VIMを使っている。他のどんなプログラムよりもVIMと共に過ごす時間が長い…。存 -在するviクローンの中で最高だ。とてもすごいよ。 (Craig Sanders, オーストラリア) - -その無限アンドゥ/リドゥで私を幾度となく悲しみから救ってくれた---VIMを使用す -るように強く薦める。 (Terry Brown) - -私の考えうるなかで、この惑星で最良のテキストエディタを書いて(作成して)くれたこ -とにたいへん感謝する。次に猫を飼うときは"Vim"と命名したい。 (Bob Sheehan,アメ -リカ合衆国) - -:set allとタイプすればオプションで画面が埋め尽くされる。画面全体のものが設定か -非設定かされている。wrapmarginやmodelinesやshowmodeといった古い友人たちも見つ -けたが、新しい友人たちで画面は埋め尽くされていた。私は彼らを愛している!!私は -VIMを愛している!! このエディタに出会えてとても幸せだ! この感じはかつてedを数年 -使った後にviに出会った時感じたものに似ている。今まで私が愛したedや、ましてviを -捨て去る日が来るとは考えもしなかった…あぁ神様、viは偉大だった。でも今は、 -VIM。 (Peter Jay Salzman,アメリカ合衆国) - -こんな素晴らしいソフトウェアパッケージがあるなんて、私は本当に幸せだ。どんな高 -価なソフトよりも良質で、しかも在庫切れということがない。 (Jeff Walker) - -VIMのドキュメントを読むといつも、エディタのパワーに興奮し打ちのめされる。 -(William Edward Webber, オーストラリア) - -VIM万歳!! それはviのように"すぐ手の届くところにあり"、viがひどく必要とした拡張 -がなされている: コマンドを実行すべきブロックの強調表示、簡単に操作でき消化でき -るヘルプ画面、その他沢山。 (Paul Pax) - -私がこの素晴らしく便利なマクロをもう使わない理由は、今はそれらが組み込まれて -いるVIMを使っているからだ。 (Stephen Riehm, ドイツ) - -私はVIMのユーザで、それを愛している。自分の総てのプログラミング、C、C++、 -HTML、そのほか総てにおいてVimを使用している。 (Tim Allwine) - -私はオリジナルのviと苦闘すること数年の後にVIMを発見し、もうそれなしでは生きて -いけなくなった。 (Emmanuel Mogenet, アメリカ合衆国) - -EmacsにはVimが活躍するほどに長く生き残るチャンスはこれっぽっちもない。加えて、 -これほどまでに詳細に渡って記されたドキュメントをい持つソフトウェアを見たことが -ない---しかもそれは多くの商用ソフトウェアよりも素晴らしい! (Leiming Qian) - -このVIMのバージョンは、それがどんなに素晴らしいものが発見するたびに人々を驚愕 -させるだろう! (Tony Nugent,オーストラリア) - -貴方のアドバイスに従い、ついにVIMを入手し、本当に感動した。すぐに転向した。 -(Patrick Killelea, アメリカ合衆国) - -VIMはとりわけ好きなシェアウェアで、特にバージョン3.0がお気に入りだ。これは本当 -にしっかりした仕事だ。 (Robert Colon, アメリカ合衆国) - -VIMを使うは楽しいし、良く考えられていとても役に立つから、何故ほかの人たちがビ -ジュアル開発ツールを使おうとするのか理解に苦しむ。VIMはパワフルで優雅で、一見 -単純だが実は747(訳注: ボーイングのジェット機)のように複雑で(とりわけ成長した私 -の.vimrc)、この素晴らしい仕事を続けて欲しいし、VIMはフリーソフトウェア界の中心 -だ。 (Louis-David Mitterand, アメリカ合衆国) - -VIMを使うことがこんなに素晴らしいなんて未だに信じられない。職場の仲間は私がそ -れを誉めちぎるのを聞かされ過ぎて疲れているだろう。他の人の目が輝きだす。(Rick -Croote) - -Emacsは起動と実行にかなり時間がかかり、実際に使用するには大きくかさばってい -て、インターフェースは助けになるよりもむしろ混乱させる。しかしながらVIMは小さ -く、早く、パワフルで、素晴らしいインターフェースを持っていて、あらゆる用途に使 -うことができる。 (Paal Ditlefsen) - -VIM3.0を初めて得た時から、非常に熱狂した。ほとんど何の問題点もみあたらなかっ -た。スワップファイルの扱いとバックアップの可能性が非常に堅固で、ひとつのファイ -ルを2重に編集することから守ってもくれる。VIとの互換性も非常に高い(この数年私の -脳はすっかりVIに洗脳されているので、これは絶対条件である)。 (Gert van -Antwerpen,オランダ) - -VIMのビジュアルモードは、凄くパワフルな機能だ! (Tony Nugent, オーストラリア) - -VIMは今までネットに存在しなかった(訳注: 定冠詞THEが付く)唯一のもっとも偉大な -ソースコード作品と言わざるを得ないだろう。 (Jim Battle,アメリカ合衆国) - -実際、新しいviが必要ならばVIM-3.0をお奨めする。これは今まで見たなかで断然最高 -のバージョンのviだ。 (Albert W. Schueller) - -VIMは良いエディタで他の如何なるものにも匹敵するものだ、というべきだろう。 -(Ilya Beloozerov) - -実を言えば時々elvis、vile、xvi、calvinやその他の使っていた。だからこそVIMが最 -高だと断言できる!! (Ferenc Deak, ハンガリー) - -VIMは私が長年使用してきた断然最高のエディタである。そして私が使用した総てのプ -ラットホームに存在するいろんなものをみてきた。それらのなかでもVIMは最高。 -だ。 (Guy L. Oliver) - -VIMは石ミノ以来、最高のエディタです。 (Jose Unpingco, アメリカ合衆国) - -こう言いたい、VIMに出会って私はついにemacsからviに鞍替えした - あらゆる点で優 -れたエディタだ:キーボードレイアウト、メモリ使用量、text alteration to name 3 -(訳注:訳不明)。 (Mark Adam) - -実際、今vi独特の設定について知りたいのならば、VIMを起動してそのヘルプをチェッ -クする! (Nikhil Patel, アメリカ合衆国) - -viユーザとして、VIMはテキストに関わる仕事を以前に遭遇していたよりも、はるかに -愉快なものにしてくれた。 (Steinar Knutsen, ノルウェー) - -VIMをバージョン3.0から使っている。そのころから、Solaris、Linux、そしてOS/2 -Warpで使用した唯一のエディタだった。友達全員にVIMを使うように薦め、彼らはトラ -イし、今も使い続けている。VIMはインターネットからダウンロードした中で本当に最 -高のソフトウェアであり、知りうる限りで最高のエディタである。(Marco Eccettuato, -イタリア) - - -以上、要約すれば: (Vimが熱いぜ!) - __ ___ _ _ _ ___ _____ ` - \ \ / (_)_ __ ___ (_)___ | | | |/ _ \_ _| ` - \ \ / /| | '_ ` _ \ | / __| | |_| | | | || | ` - \ V / | | | | | | | | \__ \ | _ | |_| || | ` - \_/ |_|_| |_| |_| |_|___/ |_| |_|\___/ |_| ` - ____ _____ _ _ _____ _____ _ _ ` - / ___|_ _| | | | ___| ___| | | ` - \___ \ | | | | | | |_ | |_ | | | ` - ___) || | | |_| | _| | _| |_|_| ` - |____/ |_| \___/|_| |_| (_|_) (Tony Nugent, Australia) ` - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/recover.jax b/runtime.old/doc/recover.jax deleted file mode 100644 index 1759d9a40..000000000 --- a/runtime.old/doc/recover.jax +++ /dev/null @@ -1,230 +0,0 @@ -*recover.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -クラッシュ後のリカバリー *crash-recovery* - -あなたが明日の朝までに終わらせなければならない文書のタイピングに数時間を費や -していたとき、悲劇があなたを襲う。: コンピュータがクラッシュした。 - - 慌てないで! - -あなたはVimがファイルの内容を蓄えていたファイルから、ほとんどの変更を回復でき -る。たいていの場合、あなたの仕事は1コマンドで回復できる。 - vim -r filename - -1. スワップファイル |swap-file| -2. リカバリー |recovery| - -============================================================================== -1. スワップファイル *swap-file* - -Vimは変更した箇所をスワップファイルに蓄える。編集を開始したオリジナルのファイ -ルとスワップファイルから、あなたのした作業は回復することができる。 - -現在使用しているスワップファイルの名前は、次のコマンドで確認できる: - - :sw[apname] *:sw* *:swapname* - -スワップファイルの名前は、普通は編集中のファイルと同じで、拡張子が".swp"のもの -になる。 -- UNIXでは、スワップファイルは編集中のファイルと同じディレクトリ内に作られ、 - '.'が名前の前につけられる。これはディレクトリ表示からスワップファイルを隠す - ためである。 -- MS-DOS マシンで、'shortname' オプションがオンのときは、オリジナルファイルの - '.'は'_'に置き換えられる。 -- このファイルがすでに存在すると(たとえば、クラッシュから復帰した場合)、注意が - 表示され、違った拡張子、".swo"、".swn"、などが用いられる。 -- 存在しているファイルは決して上書きされない。 -- スワップファイルはVimが編集を終えるとすぐに削除される。 - -技術情報: '.'から'_'への置換はMS-DOS互換のファイルシステム(例、crossdos、 - multidos)での問題を避けるためである。もしVimがMS-DOSライクなファイ - ルシステムを探知すると、'shortname' オプションと同じ効果を持つフラ - グが設定される。このフラグは違うファイルの編集を始めたときにリセッ - トされる。 - *E326* - もし".swp"ファイルがすでに存在すると、同名のファイルが存在しなくな - るか、".saa"となるまで最後の文字をひとつ前の文字に戻す。".saa"まで - 存在するときは、スワップファイルは作られない。 - -'directory' オプションを設定することによって、スワップファイルを、編集している -ファイルとは別の場所に置くこともできる。 -利点: -- ディレクトリが".swp"ファイルで汚染されることがない。 -- 'directory' が別パーティションにある場合、ファイルのあるファイルシステムが - (クラッシュで)損傷を受けるリスクが減る。 -欠点: -- 別ディレクトリの同一名のファイルで名前の衝突を生じうる(Vimはパス名の比較でそ - れを避けようとするが)。 - これによって偽の注意メッセージが表示される。 -- あなたがホームディレクトリで作業をしていて、他の誰かが同じファイルを編集しよ - うとしたとき、その人はあなたのスワップファイルに気付かないし、注意のメッセー - ジも表示されない。 -Amigaでは、回復可能なramディスクを使えるが、それが100%働くという保証はない。 -スワップファイルを通常のramディスク(AmigaではRAM:など)に置いたり、リブートに -よって消されてしまう場所(Unixの/tmpなど)に置くことは無意味であり、クラッシュに -よってスワップファイルは失われてしまう。 - -スワップファイルを固定ディスクに置きたいときは、あなたの.vimrcファイルに次に示 -す様なコマンドを入れる: - :set dir=dh2:tmp (Amigaの場合) - :set dir=~/tmp (Unixの場合) - :set dir=c:\\tmp (MS-DOS and Win32の場合) -これらの設定はフロッピー上で編集作業をしているときには負担となる。もちろん、こ -の様な設定で作業をするならば、"tmp"ディレクトリを作らねばならない。 - -読取専用属性のファイルに対しては、スワップファイルは使用されない。ファイルが大 -きくなければ、'maxmem'や'maxmemtot'で与えられた量より多くのメモリを使用するこ -とはない。読取専用属性のファイルについて何らかの変更が加えられたとき、スワップ -ファイルは無条件に作成される。 - -スワップファイルの作成を避けるために'swapfile'オプションをリセットできる。 - -既存のスワップファイルを削除する ~ - -ユーザーマニュアルの|11.3|をご覧ください。 - - -スワップファイルの更新 ~ - -スワップファイルは200文字を打ち込むか、4秒間何もしなかったときに更新される。こ -れはバッファが変更されたときのみ行われ、動き回っているだけでは行われない。なぜ -常に更新が行われないかといえば、それは通常の作業が大幅に遅くなるからである。 -200文字の設定は'updatecount'で、時間の設定は'updatetime'で変更できる。時間はミ -リ秒単位で与えられる。スワップファイルに書き込んだ後で、Vimはファイルとディス -クの同期を取る。これにはしばらく時間が掛かる(ビジーなUnixシステムにおいては特 -に時間がかかる)。もしこれを行って欲しくなければ、'swapsync'オプションに空文字 -列を設定すればよい。作業の成果を失う危険性は増すが。いくつかの非Unixシステム -(MS-DOS、Amigaなど)においては、スワップファイルはまったく書き込まれなくなるだ -ろう。 - -スワップファイルへの書き込みを望まないなら、'updatecount'を0に設定することで行 -われなくなる。Vimを"-n"オプションで起動することで、同じ結果が得られる。書き込 -みは'updatecount'を非0にすることでまた行われるようになる。これを行ったときはス -ワップファイルが全てのバッファに対して作られる。しかし、'updatecount'を0に設定 -したときは、存在しているスワップファイルは消されることはなく、次に開かれたファ -イルから有効になる。 - -行った編集がスワップファイルに書きこまれたかを確認するには、次のコマンドを使用 -する: - - *:pre* *:preserve* -:pre[serve] 全てのバッファの全てのテキストをスワップファイルに書き - 込む。回復のためにオリジナルが必要とされることはなくな - る。 - このコマンドはカレントバッファにあるフラグを設定する。 - また、'cpoptions' にフラグ '&' が入っているならば、Vim - が終了するとき、このバッファのスワップファイルは削除さ - れず、バッファは読み込まれた状態のままになる。|cpo-&| - {Vi: might also exit} - -Vimのスワップファイルは最初の6文字で認識される: "b0VIM"。 -この後に"3.0"などのバージョン番号が続く。 - - -リンクとシンボリックリンク~ - -Unix では同一のファイルに2つの名前をつけることができる。それはハードリンクまた -はシンボリックリンク(symlink)を使って行う。 - -ハードリンクの場合、 Vim はそのファイルにつけられた他の名前を知ることができな -い。そのため、スワップファイルの名前は、そのファイルを開くときに使った名前に基 -づいてつけられる。 -そのファイルが別の名前でも開かれているかどうかのチェックは行わない。他のスワッ -プファイルを検出することはできないからである(ハードディスク全てを検索するとい -う方法は除く。それはとても遅くなるから)。 - -シンボリックリンクの場合、Vim はそのリンクが指す実際のファイルを見つけられる。 -スワップファイルの名前は実際の名前に基づいてつけられる。よって、ユーザがどんな -名前でそのファイルを開いたかは関係なく、スワップファイル名は同一になる。しかし -次のような例外がある: -- シンボリックリンクがなんらかの形でループになっているとき、エラーメッセージ - *E773* が表示され、変更されていないファイル名が使われる。普通にファイルを保 - 存することはできない。 - -============================================================================== -2. リカバリー *recovery* - -基本的なファイルの回復方法はユーザーマニュアルの|usr_11.txt|をご覧ください。 - -ファイルを回復するためのもうひとつの方法は、Vimを起動して":recover"コマンドを -使うことである。 -これはVimを起動したときに"ATTENTION: Found a swap file ..."というメッセージを -受け取ったときには便利である。その場合には":recover"というコマンドひとつで全て -が済む。 -recoverコマンドにはファイル名かスワップファイル名を渡すことができる: - - *:rec* *:recover* -:rec[over] [file] スワップファイルから[file]を回復するよう試みる。もし - [file]が与えられていない場合は、現在のバッファの名前が - 用いられる。現在のバッファの内容は失われる。このコマン - ドはバッファが修正を加えられている場合に失敗する。 - -:rec[over]! [file] ":recover"と同じだが、現在のバッファに対するどんな変更 - も失われる。 - - *E312* *E309* *E310* -Vimはスワップファイルが何らかの理由で壊れているときに、いくつかの対処を提供す -る。Vimが見つかったものに疑問を持った場合、エラーメッセージが与えられ、"???"と -いうテキストが一緒に行に挿入される。回復中にエラーメッセージを受け取ったら、 -"???"を検索することによってどこに問題があったかを知ることができる。必要なテキ -ストを得るためには、カットやペーストを必要とするかもしれない。 - -ほとんどは"???LINES MISSING"のようなものです。これはVimがそのテキストをオリジ -ナルのファイルから読み込めないことを示します。これはシステムがクラッシュした時 -にファイルが正しくディスクに書き込まれなかったときに起こります。 - -オリジナルを上書きしたり、スワップファイルを削除する前に、回復が成功したことを -確認すること。回復されたファイルをどこか別の場所に保存して、'diff'によって変更 -を加えた箇所が、ちゃんと回復されたファイルに入っているか調べてみるとよい。また -は |:DiffOrig| を使う。 - -回復が成功したと確信したら、スワップファイルを削除する。そうしないと、".swp"が -存在するというメッセージが表示されつづけることになる。 - -{Vi: 違う方法で回復し、回復できそうなときはメールが送られる} - - -暗号化とスワップファイル *:recover-crypt* - -テキストファイルが暗号化されているときはスワップファイルも暗号化されます。これ -はリカバリーを多少複雑にします。スワップファイルからリカバリーするときにそれが -暗号化されていた場合、一つか二つの秘密鍵を入力する必要があるでしょう。 - -テキストファイルが存在しない場合は入力する必要のある秘密鍵はスワップファイル用 -の一つだけです。 - -テキストファイルが存在する場合、そのファイルはスワップファイルとは別の方法で復 -号する必要があるかもしれません。秘密鍵を二つ入力する必要があります: - - Need encryption key for "/tmp/tt" ~ - Enter encryption key: ****** ~ - "/tmp/tt" [crypted] 23200L, 522129C ~ - Using swap file "/tmp/.tt.swp" ~ - Original file "/tmp/tt" ~ - Swap file is encrypted: "/tmp/.tt.swp" ~ - If you entered a new crypt key but did not write the text file, ~ - enter the new crypt key. ~ - If you wrote the text file after changing the crypt key press enter ~ - to use the same key for text file and swap file ~ - Enter encryption key: ~ - -二つの状況が考えられます: - -1. 暗号化キーが変更されなかったか、キーが変更された後でファイルが保存された場 - 合。秘密鍵を二回入力する必要があります。二回目に入力するときは単にエンター - を押してください。そうするとテキストファイルとスワップファイルの両方に同じ - キーが使用されます。 -2. 新しい暗号化キーを入力したが、ファイルは保存されなかった場合。スワップファ - イルには新しいキーが使用されていますが、テキストファイルは古いキーで暗号化 - されたままになっています。二回目にキーを入力するときに新しい方のキーを入力 - してください。 - -Note: リカバリー実行後にはスワップファイルのキーがテキストファイルに使用されま -す。したがって、ファイルを書き込んだ後は新しいキーを使用する必要があります。 - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/remote.jax b/runtime.old/doc/remote.jax deleted file mode 100644 index 5d82ad66e..000000000 --- a/runtime.old/doc/remote.jax +++ /dev/null @@ -1,196 +0,0 @@ -*remote.txt* For Vim バージョン 7.3. Last change: 2008 May 24 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -Vimクライアントサーバ通信 *client-server* - -1. 共通機能 |clientserver| -2. X11特有の項目 |x11-clientserver| -3. Win32特有の項目 |w32-clientserver| - -{これらのコマンドはViには存在しない} - -============================================================================== -1. 共通機能 *clientserver* - -オプション|+clientserver|でコンパイルした時には、Vimはコマンドサーバとして動作 -することができる。それによりクライアントからメッセージを受け取りそれを実行する -ことができる。同時に、Vimはクライアントの機能も持ち合わせVimサーバへメッセージ -を送ることもできる。 - -以下のコマンドライン引数が利用できる: - - 引数 意味 ~ - - --remote [+{cmd}] {file} ... *--remote* - ファイルをリモートのVimで開く。Vimサーバが無い - 時には、ローカルで実行される。オプションで - +{cmd}に一つだけExコマンドを指定できる。コマン - ドは"|"でつなげて複数指定できる。コマンドライン - の残りの部分はファイルのリストとして扱われる。 - だからファイルではない引数はこれよりも前に書か - なければならない。 - この方法で標準入力を開くことはできない|--|。 - 次のようにしなければリモートのVimが問題を起こ - すかもしれない。 > - vim --remote-send "<C-\><C-N>:n filename<CR>" -< --remote-silent [+{cmd}] {file} ... *--remote-silent* - 上と同様、しかしサーバが存在しなくてもエラーを - 報告しない。指定したファイルがすでにローカルで - 編集中であっても同様。 - --remote-wait [+{cmd}] {file} ... *--remote-wait* - --remoteと同様、しかしリモートVimでファイルが - 完了(解放)されるまで待つ。 - --remote-wait-silent [+{cmd}] {file} ... *--remote-wait-silent* - --remote-waitと同様、しかしサーバが存在しなく - てもエラーを報告しない。 - *--remote-tab* - --remote-tab --remote と同様、しかし各ファイルを新しいタブ - ページで開く。 - *--remote-tab-silent* - --remote-tab-silent --remote-silent と同様、しかし各ファイルを新し - いタブページで開く。 - *--remote-tab-wait* - --remote-tab-wait --remote-wait と同様、しかし各ファイルを新しい - タブページで開く。 - - *--remote-tab-wait-silent* - --remote-tab-wait-silent --remote-wait-silent と同様、しかし各ファイル - を新しいタブページで開く。 - *--servername* - --servername {name} サーバ名{name}になる。--remoteコマンドのどれか - 1つと併用すると、デフォルトのサーバではなく - {name}で指定されるサーバに接続する(下を参照)。 - *--remote-send* - --remote-send {keys} サーバに{keys}を送信して終了する。{keys} に - マップは適用されない。特殊キー名が使用できる。 - 例:"<CR>" は CR 文字になる。 - *--remote-expr* - --remote-expr {expr} サーバに{expr}を実行評価させ、その結果を標準出 - 力に印刷する。 - *--serverlist* - --serverlist サーバ名のリストを表示する。 - - -使用例 ~ - -既に起動しているgvimサーバで"file.txt"を編集する: > - gvim --remote file.txt - -既に起動しているFOOBARという名のサーバで"file.txt"を編集する: > - gvim --servername FOOBAR --remote file.txt - -既に起動しているFILESという名のサーバがあれば、FILESで"file.txt"を編集するが、 -無ければ自分がFILESになる: > - gvim --servername FILES --remote-silent file.txt - ---remoteの後の全ての引数がファイル名として解釈されるので動作しない: > - gvim --remote --servername FOOBAR file.txt - -リモートサーバで"+foo"という名のファイルを編集する("./"により先頭の"+"の特別な -意味が無効化されていることに注目): > - vim --remote ./+foo - -"BLA"という名のリモートサーバで編集中の全てのファイルを保存して終了する: > - vim --servername BLA --remote-send '<C-\><C-N>:wqa<CR>' - -サーバ名 ~ - -デフォルトではVimは自分が起動された時の名前(gvim, egvim ...)のサーバになろうと -する。これは引数--servernameで変更できる。指定した名前が利用できない場合には、 -利用できる名前になるように後置名が付加される。例えば、1つのX-Serverで2つ目の -gvimを起動したときには"gvim1"というようになる。その時のサーバ名へは組み込み変 -数|v:servername|によりアクセスできる。サーバ名の大文字小文字は区別されないの -で、"gvim" と "GVIM"は同じとみなされる。 - -Vimが引数--remoteや--remote-waitまたは--remote-sendで起動された時には、上記の -ようにその名前で起動されたサーバを探そうと試みる。正確に一致するサーバがなかっ -た時には、数字の後置名を付けて見つかった最初のサーバを使用する。 -引数-- servernameに数字の後置を付けた名前を指定した場合には、それは正確に一致 -するものだけを対象とする。 - -サーバが見つからなく、--remoteか--remote-waitが使われた時には、Vimは残りのコマ -ンドラインに従い起動し、そのファイルの編集セッションを自分自身で取り持つ。この -方法ならgvimはコマンドを送信する時に、既に別のgvimが起動しているかどうかを知る -必要は無い。 - -引数--serverlistはVimに登録(実行)されている全てのコマンドサーバを、標準出力 -(stdout)に印刷して終了する。 - -Win32 NOTE: Vimサーバをアクティブアプリケーション(トップウィンドウ)にすること -は、MS-Windowsがそれを許していないので必ずしも成功するわけではない。クライアン -トは引数--remoteや--remote-waitを使用しサーバ名が"g"で始まる時には、サーバをア -クティブアプリケーションにすることを試みる。 - - -リモート編集 ~ - -引数--argumentは残りのコマンドラインから|:drop|コマンドを構成することをを引き -起こし、それを上記の方法で送信する。 -引数--remote-waitは同じ事をして、加えて全てのファイルの編集の完了を待つように -設定される。これはBufUnloadイベントを使用し、だからファイルがアンロードされる -とすぐに、Vimはファイルの編集が完了したと判断する。 -引数--remoteと--remote-waitは残りのコマンドライン全てを自分のものとして扱うこ -とに注意。言い換えれば残り全ての引数はファイル名とみなされる。そこにオプション -を置くことはできない! - - -Vimスクリプト関数 ~ - *E240* *E573* -Vimスクリプトにはコマンドサーバを操作するために幾つか関数がある。詳細な解説は -|eval.txt|を参照するか、関数名の上でCTRL-]を使って完全な解説を参照すること。 - - 概要 説明 ~ - remote_expr( server, string, idvar) 式を送信する - remote_send( server, string, idvar) キーシーケンスを送信する - serverlist() 利用可能なサーバのリストを得る - remote_peek( serverid, retvar) 結果文字列の有無確認する - remote_read( serverid) 結果文字列を取得する - server2client( serverid, string) 結果文字列を送信する - remote_foreground( server) サーバを前面に移動する - -|CTRL-\_CTRL-N|の説明も参照。キーシーケンスの先頭に使用すると便利。 -server2client()で使用するサーバIDはexpand("<client>")で取得できる。 - -============================================================================== -2. X11特有の項目 *x11-clientserver* - *E247* *E248* *E251* *E258* *E277* - -クライアントとサーバ間の通信はXサーバにより行なわれる。Vimサーバのディスプレイ -を指定する必要がある。Xサーバの通常の保護機能が使われているは、通信が成り立つ -ためにはそのXサーバでウィンドウを作成できなければならない。異なるマシン間での -通信も可能である。 - -デフォルトでは、GUI Vim は X サーバに名前を登録して送信された文字列を実行でき -るように備える。Vim はクライアントとしても振舞い、同じ X11 ディスプレイで動作 -する別の Vim インスタンスに文字列を送ることができる。 - -X11のGUI Vim(gvim)が起動すると、ルートウィンドウの'VimRegistry'プロパティに -送信サーバ名を登録しようと試みる。 - -X11ディスプレイにアクセスできる非GUIのVim(|xterm-clipboard|が有効になっている) -も、サーバ名が引数--servernameで明示的に与えられればコマンドサーバとして振舞う -ことができる。 - -引数に--servernameサーバ名を与えなければコマンドサーバ機能を無効にできる。 - -異なるアプリケーションからVimサーバへコマンドを送るには、使われているプロトコ -ルの幾つかのヒントを含むソースコードsrc/if_xcmdsrv.cを参照のこと。 - -============================================================================== -3. Win32特有の項目 *w32-clientserver* - -全てのWin32版Vimはコンソールもサーバとして動作できる。OLEを組み込んでコンパイ -ルする必要は無い。どのMS-Windowsでも動作する、Windowsメッセージが使用されてい -る。しかしネットワークを通じてやり取りすることはできない。 - -MS-Windowsメッセージを使っているから、どのようなアプリケーションでもVimサーバ -と通信することができる。加えてOLEの機能を使うこともできる|ole-interface|。 - -gvimを使っている時には、--remote-waitは以下のようにしないと正しく動作しない: > - - start /w gvim --remote-wait file.txt -< - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/runtime.old/doc/repeat.jax b/runtime.old/doc/repeat.jax deleted file mode 100644 index a3e105771..000000000 --- a/runtime.old/doc/repeat.jax +++ /dev/null @@ -1,666 +0,0 @@ -*repeat.txt* For Vim バージョン 7.3. Last change: 2011 Jan 06 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -繰り返しコマンド、Vimスクリプトとデバッグ *repeating* - -繰り返しについてはユーザーマニュアルの26章|usr_26.txt|に紹介があります。 - -1. 単発繰り返し |single-repeat| -2. 多重繰り返し |multi-repeat| -3. 複雑な繰り返し |complex-repeat| -4. Vimスクリプトを使う |using-scripts| -5. スクリプトのデバッグ |debug-scripts| -6. プロファイリング |profiling| - -============================================================================== -1. 単発繰り返し *single-repeat* - - *.* -. 最後の変更を繰り返す。変更の回数は[count]で指定した回 - 数で置き換えられる。'cpoptions'に'y'フラグが含まれてる - 時には、ヤンクコマンドも繰り返す。コマンドラインコマン - ドは繰り返さない。 - -単純な変更は"."コマンドで繰り返すことができる。回数を指定しなければ、最後の変 -更の回数が使用される。回数を指定した場合、最後のそれと置き換えられる。最後に行 -なわれた変更が番号付きレジスタの指定を含んでいた場合、レジスタ番号は増加され -る。これをどのように使うかの例は|redo-register|を参照。ビジュアル選択を使用し -たコマンドを繰り返す時は、同じ「サイズ」の範囲が使用されることに注意。 -|visual-repeat|を参照。 - - *@:* -@: 最後のコマンドラインを[count]回繰り返す。 - {|+cmdline_hist|が無効にされていると使えない} - - -============================================================================== -2. 多重繰り返し *multi-repeat* - - *:g* *:global* *E147* *E148* -:[range]g[lobal]/{pattern}/[cmd] - [range]の範囲で{pattern}にマッチする行に対して、Exコマ - ンド[cmd](省略した場合":p")を実行する。 - -:[range]g[lobal]!/{pattern}/[cmd] - [range]の範囲で{pattern}にマッチしない行に対して、Exコ - マンド[cmd](省略した場合":p")を実行する。 - - *:v* *:vglobal* -:[range]v[global]/{pattern}/[cmd] - :g! と同じ。 - -{patter}の両側の '/' の代わりにどんなシングルバイト文字でも使うことができ -る。しかしアルファベット・数字・'\', '"', '|' は使えない。 -これは、検索パターンや置換文字列に '/' が含まれる場合に便利である。 - -パターンの定義については |pattern|を参照。 - -globalコマンドの動作はまず第1に[range]の行をスキャンしマッチした行すべてに印を -つける(複数行にかかるパターンではマッチの最初の行だけが重要である)。 -次のスキャンでマークされたすべての行の行番号が指定(前置)されて[cmd]が実行され -る。行が変更されたり削除された場合そのマークは消滅する。 -省略した場合の[range]はバッファ全体(1,$)である。コマンドを中断するには"CTRL-C" -を使用する。ある行についてエラーメッセージが与えられると、そのラインに対するコ -マンドは中断されglobalコマンドはマッチした次の行の処理を続ける。 - -非Exコマンドを繰り返すには":normal"コマンドを使用すれば良い: > - :g/pat/normal {commands} -{commands}が完全なコマンドとして終了することを確認すること。そうでないとVimは -全部のマッチに1つ1つについて、コマンドの残りを期待して貴方の入力を待ち続けるだ -ろう。画面は更新されないので、いま何をしているのかわからないだろう。|:normal| -を参照。 - -undo/redoコマンドはglobalコマンドを一度にundo/redoする。以前の文脈マークだけが -一度設定される("''"でグローバルコマンド実行前にカーソルがあった場所に戻ること -が出来る)。 - -globalコマンドは最後に使用した検索パターンと、最後に使用した置換パターンの両方 -を設定する(これはvi互換)。これにより全体に対して文字列置換を行なうのが簡単にな -る: - :g/pat/s//PAT/g -これは総ての"pat"を"PAT"に置き換える。同じことがこれでも可能: - :%s/pat/PAT/g -こっちのほうが2文字短い! - -Ex モード中で "global" を使い、そのコマンドに ":visual" を指定する場合はやや特 -殊である。これを行うと、マッチする行へ移動してノーマルモードに入るので、|Q| を -押して Ex モードへ戻るまでコマンドを実行することができる。これがマッチする各行 -に対して繰り返される。これを行っている間は ":global" を使うことはできない。中 -止するには CTRL-C を2回押すこと。 - -スペースが必要な場合には、バックスラッシュの直後に書くのがベストである。行末に -スペースを書くと、視認が難しく、誤って削除されてしまうかもしれない。 > - :syn match Comment - \ "very long regexp" - \ keepend - -============================================================================== -3. 複雑な繰り返し *complex-repeat* - - *q* *recording* -q{0-9a-zA-Z"} タイプした文字をレジスタ{0-9a-zA-Z"}にレコーディングす - る(大文字なら追記)。レジスタを実行中は'q'コマンドは無 - 効化される。マッピングや |:normal| の中でも機能しな - い。 {Vi: レコーディングはない} - -q レコーディングを終了する。(実装のメモ: レコーディング - を終了する'q'は、それがマッピングの結果であってもレジ - スタに記録されない) {Vi: レコーディングはない} - - *@* -@{0-9a-z".=*} レジスタ {0-9a-z".=*} の内容を [count] 回実行する。 - Note: レジスタ '%' (現在のファイルの名前) と '#' (オル - タネートファイルの名前) は使用できない。 - レジスタはマッピングと同様に実行される。つまり、 - 'wildchar' と 'wildcharm' の違いが動作に影響する。 - "@=" を使用すると式を入力するためのプロンプトが表示さ - れ、そこに入力した式の評価結果が実行される。 - |@:| も参照。 {Vi: 名前付きレジスタのみ} - - *@@* *E748* -@@ 直前の@{0-9a-z":*}を[count]回繰り返す。 - -:[addr]*{0-9a-z".=} *:@* *:star* -:[addr]@{0-9a-z".=*} レジスタ{0-9a-z".=*}の内容をExコマンドとして実行する。 - まず最初にカーソルを[addr]行に設定する(省略した場合現 - 在の行)。レジスタの最終行に<CR>が含まれない場合、 - 'cpoptions'に'e'フラグが含まれていれば自動的に追加され - る。 - ":*"コマンドは'cpoptions'に'*'フラグが含まれていた場合 - にだけ認識されることに留意。これは'nocompatible'が使用 - されている時にはデフォルトにはならない。 - ":@="には最後に評価された式が使用される。式の評価結果 - がExコマンドとして実行される。 - これらのコマンド内ではマッピングは行なわれない。 - {Vi: 幾つかのバージョンだけ} 将来: 指定された範囲の - 各々の行にたいしてレジスタの内容が実行されるだろう。 - - *:@:* -:[addr]@: 最後のコマンドラインを繰り返す。まずカーソルを[addr]行 - に設定する(省略した場合現在の行)。 {Vi にはない} - - *:@@* -:[addr]@@ 最後の:@{0-9a-z"}を繰り返す。まず最初にカーソルを - [addr]行に設定する(省略した場合現在の行)。 {Vi: 幾つか - のバージョンだけ} - -============================================================================== -4. Vimスクリプトを使う *using-scripts* - -Vimスクリプトの書き方はユーザーマニュアルの41章|usr_41.txt|を参照してくださ -い。 - - *:so* *:source* *load-vim-script* -:so[urce] {file} Exコマンドを{file}から読込む。これは":"で始まるコマン - ドを列挙したファイルです。 - (訳注:実際に":"を書く必要はない) - 自動コマンド |SourcePre| が発生する。 - -:so[urce]! {file} Vimコマンドを{file}から読込む。ノーマルモードでファイ - ルの内容をあなたがタイプしたのと同じように実行されま - す。 - |:global|, |:argdo|, |:windo|, |:bufdo|で使ったとき、 - ループ中や他のコマンドが続けられたときは、コマンドの実 - 行中は表示は更新されません。 - {Vi にはない} - - *:ru* *:runtime* -:ru[ntime][!] {file} .. - 'runtimepath'で示された各ディレクトリの{file}からEx - コマンドを読み込みます。ファイルがなくてもエラーには - なりません。例: > - :runtime syntax/c.vim - -< {file}には空白で区切って複数のファイルを指定できます。 - 指定された{file}は'runtimepath'の最初のディレクト - リ、次に二番目のディレクトリ、と検索されます。{file} - に空白を含めるにはバックスラッシュを使います(しかし - ファイル名に空白を含めるのは望ましくありません。トラ - ブルのもとです)。 - - [!]を付けると見つかった全てのファイルを読み込みま - す。付けなければ最初に見つかったファイルだけを読み込 - みます。 - - {file}がワイルドカードを含んでいるとそれは展開されま - す。例: > - :runtime! plugin/*.vim -< これはVimが起動時にプラグインファイルを読み込むのに - 使っているものです。次のは似ていますが: > - :runtime plugin/*.vim -< これは最初に見つかったファイルだけを読み込みます。 - - 'verbose'が1以上ならファイルが見つからないときにメッ - セージが表示されます。 - 'verbose'が2以上なら見つかった全てのファイルについて - メッセージが表示されます。 - {Vi にはない} - -:scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167* - スクリプトで使われている文字コードを宣言します。 - それ以降の行は必要なら[encoding]から'encoding'オプ - ションの文字コードに変換されます。例: > - scriptencoding iso-8859-5 - scriptencoding cp932 -< - [encoding]が空のときは変換はされません。これは文字 - コードの変換を限定するために使います: > - scriptencoding euc-jp - ... 変換される ... - scriptencoding - ... 変換されない ... - -< 変換がシステムによって提供されない場合、エラーメッ - セージは表示されず変換もされません。 - - "ucs-2"や"ucs-4"を使わないでください。スクリプトをそ - の文字コードで書くことはできません(NULバイトが含まれ - てしまうため)。 - スクリプトの最初にutf-8のBOM(Byte Order Mark : バイ - トオーダーマーク)があるとVimはそれを認識します。 - ":scriptencoding utf-8"と書く必要はありません。 - - Vimが|+multi_byte|付きでコンパイルされていない場合、 - このコマンドは無視されます。 - {Vi にはない} - - *:scrip* *:scriptnames* -:scrip[tnames] 読み込まれているスクリプトを読み込まれた順番どおりに - 全て表示します。数字はスクリプトのID(識別子)|<SID>| - に使われています。 - {Vi にはない} {|+eval|付きでコンパイルしないと使えな - い} - - *:fini* *:finish* *E168* -:fini[sh] スクリプトの読み込みを停止します。スクリプトファイル - でのみ使えます。これはファイルの残りを読み込ませない - ための手軽な方法です。|:try|を使った後で|:finally|を - 見つける前に使われると、まず":finally"と|:endtry|の - 間のコマンドが実行されます。この手続きは入れ子になっ - ている全ての":try"に対して適用されます。入れ子の一番 - 外側の":endtry"に達するとスクリプトを停止します。 - {Vi にはない} - -総てのコマンドとコマンドシーケンスは、名前付きレジスタに格納することで繰り返し -実行することができる。レジスタにコマンドを格納する方法は2つある: -- 記録コマンド"q"を使用する。実際にコマンドをタイプし、実行しながらそれをレジ - スタに格納する。今、何が起こっているかを確認できるので簡単である。間違いをし - たならば、レジスタの内容をいったんファイルへ書き出("p"ut)して、コマンドシー - ケンスを編集して、それからそれを削除して再びレジスタに格納することができる。 - レジスタに追加することで継続してレコーディングすることができる(大文字を使用 - する)。 -- コマンドシーケンスを削除かヤンクしてレジスタに入れる。 - -良く使うコマンドは':map'コマンドでファンクションキーに割当てることができる: - -別の方法としてコマンドをファイルに記述しておき、それを':source!'コマンドで読込 -んで実行するという方法もある。長いコマンドシーケンスにとっては便利である。ファ -ンクションキーに複雑なコマンドを割当てるために':map'コマンドと組み合わせること -ができる。 - -':source'コマンドはファイルから一行ずつExコマンドを読込む。キーボード入力が必 -要になった場合にはタイプする必要が生じる。':source!'コマンドはスクリプトファイ -ルから一字一句読込む。各々のキャラクタはユーザがタイプしたものとして解釈され -る。 - -例: ":!ls"コマンドを実行したとすると|hit-enter|プロンプトが表示される。"!ls" -を含むファイルを':source'したならば、自分で<Enter>をタイプする必要がある -だろう。しかし':!ls'を含んだファイルを':source!'したならば、<CR>が見つかるまで -そのファイルから続く文字が読込まれる。":!ls"がファイルの最終行でない限り、<CR> -を自分でタイプする必要はないだろう - -スクリプトファイルの中で':source[!]'コマンドを使うことも可能なので、階層関係の -あるスクリプトファイルを作ることもできる。':source'コマンドは同時に開くことの -できるファイル数(だいたい15)と同じだけネスト(入れ子に)することができる。 -':source!'コマンドは15段までネストすることができる。 - -読込まれるファイルの中ではファイル名が必要なところに、"<sfile>"という文字列( -文字 通りであってスペシャルキーではない)を使うことができる。この文字列は読込ま -れた ファイルのファイル名に置き換えられる。例えば、".vimrc"ファイルと同じ場所 -に"other.vimrc"というファイルがあれば、".vimrc"から次のコマンドでそれを読込む -ことができる: > - :source <sfile>:h/other.vimrc - -スクリプトファイル内では端末依存のキーコードは端末非依存の2文字のコードで表現 -される。これは異なる種類の端末でも同じ方法で依存キーコードを使用できることを意 -味する。最初のキーコードの文字は0x80つまり128で、画面では"~@"と表される。2つ目 -のキャラクタは|key-notation|の表にて見ることができる。これらのコードはどれも -CTRL-Vに続けて3つの10進コードを叩くことで入力できる。これはtermcapコード<t_xx> -に対しては使用できない。これらはマッピングの中だけで使うことができる。 - - *:source_crnl* *W15* -MS-DOS, Win32 and OS/2: ":source"で読込まれるファイルは通常、行末に<CR><NL>を -持っている。これらは常に働く。もしも行末に<NL>を持つファイルを使っているならば -(例えばUNIXで作られたファイル)、'fileformats'が空でかつ先頭行が<CR>で終わって -なければ正しく認識される。しかしこれは先頭行が":map <F1> :help^M"(^Mは<CR>)み -たいな内容だった場合には失敗する。ファイルの先頭行が<CR>で終わっていてその1行 -限りの時、先頭行から<CR>が失われてしまうのでエラーメッセージが出るだろう。 - -Mac Classic: ":source"で読み込まれるファイルは通常、行末に<CR>を持っている。 -これらは常に機能する。もしも行末に<NL>を持つファイルを使っているならば(例えば -UNIXで作られたファイル)、'fileformats'が空でかつ先頭行が<CR>で終わってなければ -正しく認識される。先頭行に<CR>を持ち<NL>で改行しているファイルを使用しないよう -に気を付けてください。 - -その他のシステムでは、Vimは取込まれた(":source"ed)ファイルの行末は<NL>であるこ -とを期待する。これは常に働く。もしも行末が<CR><NL>であるファイル(例えばMS-DOS -で作られたファイル)を使っているならば、総ての行が末尾に<CR>を持っていることに -なる。これは幾つかのコマンドにとって問題となるだろう(例、マッピング)。自動的に -行末記号を検出する機構はない。なぜなら<CR>で終了するマッピングの定義をファイル -の先頭に書くことは一般的で、自動検出用の仕組みを作るのが難しいからである。 - - *line-continuation* -読込まれた(":source"d")Exコマンドスクリプトのファイル内の長い行は、行継続記号 -"\"(backslash)を次行の先頭に挿入することで分割できる。バックスラッシュの前に空 -白を挿入することも可能で、これらは無視される。 - -例: 次の記述は > - :set comments=sr:/*,mb:*,el:*/, - \://, - \b:#, - \:%, - \n:>, - \fb:- - -次の1行と同じ意味として解釈される: > - :set comments=sr:/*,mb:*,el:*/,://,b:#,:%,n:>,fb:- - -バックスラッシュの前に先行する空白文字は全部無視される。しかしながらバックス -ラッシュのある行の1つ前の行末には、自由に空白文字を挿入することはできない; 付 -加的な空白文字が許されるかどうかは、コマンドが分割される位置に依存する。 - -":append"と":insert"コマンドには1つ問題がある: > - :1append - \asdf - . -バックスラッシュは行継続シンボルに見えるが、コマンドの結果はこのようになる: > - :1appendasdf - . -これを避けるには、'cpoptions'に'C'フラグを追加することだ: > - :set cpo+=C - :function Foo() - :1append - \asdf - :. - :set cpo-=C - -Note 関数の中でその手のコマンドを実行するには、関数定義の際に'C'フラグを追加す -る必要があり、それが実行される際にではない。 - :set cpo+=C - :function Foo() - :1append - \asdf - . - :endfunction - :set cpo-=C - -解説: - 多くのプログラムは行継続を、継続する行の末尾にバックスラッシュを置くこ - とで表現する。その方法をVimで採用してしまうと、Viとの互換性に重大な欠 - 陥ができてしまう。たとえばこのようなViのマッピングを考えるとわかりやす - い: > - :map xx asdf\ -< 従って一般的ではないが行頭のバックスラッシュを採用している。 - -============================================================================== -5. スクリプトのデバッグ *debug-scripts* - -スクリプトの動作を知るためのコードを追加することができるのは当り前として、 -Vimはデバッグモードを提供しています。これはスクリプトファイルやユーザーファン -クションをステップ実行することやブレークポイントを仕掛けることを可能にします。 - -NOTE: デバッグモードは未完成です。デバッグはVimの動作に副作用をあたえます。全 -てをデバッグするのには使えません。例えば画面がデバッグメッセージで散乱するとき -など。 -{Vi にはデバッグモードはない} - -デバッグモードの代わりに'verbose'オプションが使えます。大きな値を設定するとV -imの動作についてより詳細なメッセージを得られます。 - - -デバッグモードを開始する *debug-mode* - -デバッグモードを開始するにはこれらの方法のうちどれかを使います: -1. Vimを|-D|引数付きで起動する: > - vim -D file.txt -< 最初にvimrcを読み込むところからデバッグを開始します。これはVimの起動時に何 - が起こっているのかを調査するのに便利です。副作用としてVimは初期化が完了する - 前に安全のためターミナルモードを切替えます。 - (WindowsやMacintoshの)GUI専用バージョンではGUIウインドウを開くとすぐにデ - バッグが開始します。これを早めるにはvimrcファイルに":gui"と書いてください。 - *:debug* -2. ":debug"を前に付けてコマンドを実行します。そのコマンドを実行する間だけデ - バッグできます。特定のスクリプトファイルやユーザー関数をデバッグするのに便 - 利です。オートコマンドから呼び出されるスクリプトや関数にも便利です。 - 例: > - :debug edit test.txt.gz - -3. ブレークポイントをソースファイルやユーザーファンクションに設定します。コ - マンドラインから次のようにできます: > - vim -c "breakadd file */explorer.vim" -< これはVimを起動して"explorer.vim"の最初の行を読み込むところで停止します。 - デバッグモード中でもブレークポイントを設定できます。 - -デバッグモード中に実行されるコマンドはそれが実行される前に表示されます。コメン -トや空の行、実行されない行はとばされます。行が"|"を使って二つのコマンドを含ん -でいた場合には分けて表示されます。 - - -デバッグモード --------------- - -デバッグモードに入ると、通常のExコマンドが使えます。例えば、変数の値を見るに -は: > - echo idx -ユーザーファンクション内では、これはローカル変数の"idx"を表示します。"g:"を頭 -に付けるとグローバル変数の値を表示します: > - echo g:idx -全てのコマンドは実行中の関数やスクリプトの文脈として実行されます。オプションを -設定することもできます。例えば何が起こっているのかを表示するために'verbose'を -設定することができます。興味のある部分を実行する前に次のようにするといいでしょ -う: > - :set verbose=20 - -スクリーンの更新を必要とするコマンドは避けるべきです。なぜならデバッグモードを -抜けるまでその作用に気付き難いからです。例えば: > - :help -これはとても不便です。 - -デバッグモードのためのコマンドラインヒストリが別に用意されています。 - -関数の行番号はその関数の始まりから数えます。見ている行の番号を数えるのに苦労す -る場合はその関数の書かれたファイルを別のVimで開き、その関数の始まりを探しだ -し、"99j"を実行してください。"99"は実際の行番号に合わせて変えてください。 - -さらに、以下のコマンドが使えます: - *>cont* - cont 次のブレークポイントまで実行します。 - *>quit* - quit 異常停止します。これはCTRL-Cを使うことに似ていますが、 - 全てを停止するわけではありません。次のブレークポイント - で停止します。 - *>next* - next コマンドを実行しそれが終わるとデバッグモードに戻りま - す。ユーザー関数やソースファイルの呼び出し時には呼び - 出し元の次の行に進みます。 - *>step* - step コマンドを実行しそれが終わるとデバッグモードに戻りま - す。ユーザー関数やソースファイルの呼び出し時には呼び - 出し先の行に進みます。 - *>interrupt* - interrupt CTRL-Cを使うことに似ていますが、次のコマンドを実行する - ためにデバッグモードに戻る場所が">quit"と違います。例 - 外割り込みについて|:finally|や|:catch|をテストするのに - 便利です。 - *>finish* - finish 実行中のスクリプトやユーザー関数を終了し呼び出し元で - デバッグモードに戻ります。 - -デバッグモードのコマンドについて: -- 補間はできません。通常のExコマンドのみ補間できます。 -- 次の一文字に省略すことができます: "c", "n", "s" そして "f"。 -- <CR>を押すと前回のものを繰り返します。関係ないコマンドを使うとリセットされま - す(どうすべきかがわかりにくいため)。 -- 同じ名前のExコマンドを使うにはコロンを付けてください: - ":cont", ":next", ":finish" (省略時も) - - -ブレークポイントの定義 ----------------------- - *:breaka* *:breakadd* -:breaka[dd] func [lnum] {name} - 関数にブレークポイントを設定します。例: > - :breakadd func Explore -< 関数名が妥当かどうか検査しませので、関数定義の前にブレークポイ - ントを定義できます。 - -:breaka[dd] file [lnum] {name} - ソースファイルにブレークポイントを設定します。例: > - :breakadd file 43 .vimrc - -:breaka[dd] here - カレントファイルのカレント行にブレークポイントを設定します。 - 次を行うのと同様です: > - :breakadd file <cursor-line> <current-file> -< Note これはファイルを読み込むときに実行されるコマンドに対して - だけ働きます。そのファイル中で定義される関数に対しては働きませ - ん。 - -[lnum]はブレークポイントにする行番号です。Vimはその行かそれ以降で停止します。 -省略時すると1行目になります。 - - *:debug-name* -{name} はファイル名や関数名のパターンです。パターンはオートコマンドで使われる -ものと同じです。完全に一致しなければなりません(パターンが"^"で始まって"$"で終 -わるように)。"*"は全ての文字列に一致します。'ignorecase'は使われませんが、大文 -字と小文字を区別しないために"\c"を使うことができます|/\c|。関数名には()を付け -ないでください! - -ソースファイル名のパターン検査はファイルのフルネームに対して行われます。例: > - breakadd file explorer -パスが間違っているので一致しません。 > - breakadd file *explorer.vim -".../plugin/explorer.vim"と".../plugin/iexplorer.vim"に一致します。 > - breakadd file */explorer.vim -".../plugin/explorer.vim"だけに一致します。 - -関数名のパターン検査は";function"で表示される名前に対して行われます。ローカ -ル関数には"<SNR>99_"といったものが前に付くということです。 - -Note 関数はまず読み込まれ、後で実行されます。読み込まれたときに "file" ブレー -クポイントがチェックされ、実行されるときに "func" ブレークポイントがチェックさ -れます。 - -ブレークポイントの削除 ----------------------- - *:breakd* *:breakdel* *E161* -:breakd[el] {nr} - ブレークポイント{nr}を削除します。|:breaklist|を使って番号を - 確認してください。 - -:breakd[el] * - すべてのブレークポイントを削除します。 - -:breakd[el] func [lnum] {name} - 関数内のブレークポイントを削除します。 - -:breakd[el] file [lnum] {name} - ソースファイル内のブレークポイントを削除します。 - -:breakd[el] here - カレントファイルのカレント行のブレークポイントを削除します。 - - -[lnum]が省略されると関数、またはファイルの最初のブレークポイントが削除されま -す。 -{name}は":breakadd"で使った名前と完全に同じでなければなりません。"eplorer"と -"*explorer.vim"、"*explorer*"は違います。 - - -ブレークポイントを列挙する --------------------------- - *:breakl* *:breaklist* -:breakl[ist] - 全てのブレークポイントを列挙します。 - - -その他 ------- - - *:debugg* *:debuggreedy* -:debugg[reedy] - デバッグモードのコマンドをユーザーから直接得るのではなく標準入 - 力から読み込みます。スクリプトのテストのときに便利です。 - 例: > - echo 'q^Mq' | vim -e -s -c debuggreedy -c 'breakadd file script.vim' -S script.vim - -:0debugg[reedy] - ":debuggreedy"を取り消します。それ以降のデバッグモードコマンド - を使わず、ユーザーから直接デバッグモードコマンドを受け取りま - す。 - -============================================================================== -6. プロファイリング *profile* *profiling* - -プロファイリングとは、関数やスクリプトの実行にかかる時間を計測することです。 -これを行うには |+profile| 機能が必要です。 -この機能は "huge" 機能つきでコンパイルしたときだけ含まれます。 -{Vi はプロファイリング機能を持っていない} - -また、関数 |reltime()| を使っても時間を計測できます。この関数には |+reltime| -機能だけが必要です。これは "huge" 以外でもしばしばついてきます。 - -:prof[ile] start {fname} *:prof* *:profile* *E750* - プロファイリングを開始し、終了時に出力を {fname} に出力します。 - {fname} がすでに存在するときは、警告なしに上書きされます。 - 変数 |v:profiling| に 1 が代入されます。 - -:prof[ile] continue - ":profile pause" の後にこれを実行すると、プロファイリングを再 - 開します。 - -:prof[ile] func {pattern} - パターン {pattern} にマッチする関数をプロファイリングします。 - {pattern} がどう使われるかは |:debug-name| を参照。 - -:prof[ile][!] file {pattern} - パターン {pattern} にマッチするスクリプトファイルをプロファイ - リングします。 - {pattern} がどう使われるかは |:debug-name| を参照。 - このコマンドはスクリプトそのものをプロファイリングするだけで、 - その中で定義されている関数のプロファイリングは行いません。 - [!] がつけられたときは、そのスクリプト中で定義されている全ての - 関数のプロファイリングも行います。しかしスクリプトがこのコマン - ドの後で読み込まれたときだけです。 - -:profd[el] ... *:profd* *:profdel* - 指定された引数に対するプロファイリングを停止します。引数につい - ては |:breakdel| を参照。 - -最初は常に ":profile start fname" コマンドで始めなければなりません。結果のファ -イルは Vim が終了するときに書き出されます。次に出力の例を挙げます。説明のため -に行番号が行頭についています: - - 1 FUNCTION Test2() ~ - 2 Called 1 time ~ - 3 Total time: 0.155251 ~ - 4 Self time: 0.002006 ~ - 5 ~ - 6 count total (s) self (s) ~ - 7 9 0.000096 for i in range(8) ~ - 8 8 0.153655 0.000410 call Test3() ~ - 9 8 0.000070 endfor ~ - 10 " Ask a question ~ - 11 1 0.001341 echo input("give me an answer: ") ~ - -ヘッダ(1行目から4行目)は関数全体にかかった時間を示しています。"Total" はこの関 -数を実行している間に経過した時間です。"Self" は "Total" のうち、次のことにか -かった時間を引いたものです: -- 他のユーザ定義関数 -- スクリプトの読み込み -- 自動コマンドの実行 -- 外部(シェル)プログラム - -7行目から11行目は各実行行にかかった時間を示しています。実行されない行はカウン -トされません。それゆえ、コメント行は決してカウントされません。 - -Count の桁はその行が何回実行されたかを示します。7行目の "for" コマンドはそれ以 -下の行と同様に何回も実行されることに注意してください。これは、ループの終わりを -検出するためにこの行が何回も実行されるためです。 - -ユーザ入力待ちにかかった時間は一切カウントされません。それゆえ、input() のプロ -ンプトに反応するのにどれだけ時間がかかろうとも無関係です。 - -プロファイリングはどこで時間が費やされたかのよい指標を与えてくれますが、多くの -原因によりその結果がごまかされてしまう場合があるということを覚えておいてくださ -い: - -- システム関数 gettimeofday() に依存する時間計測の精度。たとえ時間がマイクロ秒 - で表示されていたとしても、1/100秒の精度しかないこともあります。 - -- 実経過時間が計測されます。他のプロセスがビジーであると、それが予測できない箇 - 所で遅れを引き起こす可能性があります。 - -- 1行に複数のコマンドを書いていると、1つの時間しか得られません。ここのコマンド - に対して時間を見るにはその行を分割してください。 - -- 各行の時間の総和をとると、たいてい関数全体の時間より小さくなります。各行の間 - にオーバーヘッドがあります。 - -- Vim が終了する前に削除された関数はプロファイリング情報を生成しません。必要な - ら変数 |v:profiling| をチェックしてください: > - :if !v:profiling - : delfunc MyFunc - :endif -< -- マルチプロセッサシステム上では、スリープモードが作動したときや、省力のためプ - ロセッサの周波数が下がったとき、プロファイリングが奇妙な結果を出すかもしれま - せん。 - -- 関数が再帰的に呼ばれた場合、"self" 時間は正しくでない。 - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/rileft.jax b/runtime.old/doc/rileft.jax deleted file mode 100644 index ecacbf5bb..000000000 --- a/runtime.old/doc/rileft.jax +++ /dev/null @@ -1,119 +0,0 @@ -*rileft.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - - VIMリファレンスマニュアル by Avner Lottem - updated by Nadim Shaikli - - -Vimにおける"右左"書きとヘブライマッピング *rileft* - - -これらの機能はAvner Lottemによって作成された - E-mail: alottem@iil.intel.com - Phone: +972-4-8307322 - -{Vi にはこれらのコマンドはない} - - *E26* -{Vi m が |+rightleft| 機能付きでコンパイルされたときのみ有効} - - -はじめに ------------------- -アラビア語、ペルシア語、ヘブライ語など、いくつかの言語では文章を右から左へ表示 -する。これらの言語で書かれたファイルは普通に記録され、右から左へ表示するのはグ -ラフィックエンジンの機能です(Unicodeを利用して)。右左指向ファイルでは文字は画 -面の右から左へ書かれる。 - -双方向性(Bidirectionality 略して bidi)はユニコードがこれらの言語を扱うために -提供しているものである。双方向性はユーザーが"右から左"のテキストと"左から右" -のテキストを同時に同じウインドウで適切に表示できるようにする。Vim は現在のと -ころ、簡素でいるために、双方向性を提供していない。単に"右から左"言語を表示、 -入力、使用する機能を提供している。古い混在方法、文字単位 (または複数文字) で -表示する方向を決める方法はサポートされていない。そして、この種のサポートは既 -存のエディタに簡単に加えることはできない (そしてユニコードでも承認されていな -い)。 - - -概要 ----------- -o "左右"ファイルの編集はオリジナルのVimと同じで、変更はない - -o "右から左"ウィンドウでファイルを閲覧、編集できる。ファイルはウィンドウ単位 - で指向方向を選択できるので、同じファイルを"右左"と"左右"ウィンドウで同時に - 閲覧することが可能である。(これは表示方向の違う複数の言語が混在している時に - 便利です) - -o オリジナルのVimとの互換性。ほとんど全ての機能が"右左"モードでも使用できる。 - (下記「バグ」の章を参照) - -o 反転入力モードからの復帰がファイルの正しい場所で行なわれる(可能な限り)。 - -o "右左"機能を使用するのに特別な端末を必要としない。"右左"拡張機能は完全に - ハードウェア非依存である。 - -o たくさんの言語が"右左"言語サポートを必要とする。このサポートに手を加え他の" - 右左"言語(アラビア語など)に対応させるのは簡単だろう。文字エンコードに合わせ - てキーボードマッピングを変更したり、ほんの少しコードに手を加えればいい。現 - 在はこれら|arabic.txt|, |farsi.txt|, |hebrew.txt|の言語サポートを含んでいま - す。 - - -重要 --------------- - -o 機能を有効にするために - ----------- - + 'rightleft' ('rl') ウィンドウを"右から左"指向に設定する。 - + 'delcombine' ('deco')。真偽値。UTF-8 でエンコードされた言語を編集中に合 - 成文字を構成している文字を削除すると合成文字全体を削除する。 - + 'rightleftcmd' ('rlc') "右から左"指向で便利なように、あるモード (検索な - ど) のコマンドラインの入力方法を設定する。 - -o 後方タイピング *ins-reverse* - -------------- - - 全面的に'rightleft'オプションを使うかわりに、もう一つ逆方向に挿入する方法が - ある。'revins'(逆挿入)オプションが有効になっていると、挿入した文字が後方に - 流れていく。"右左"方向のテキストを入力するのに使える。キャラクタを挿入する - と、カーソルはその場から動かずテキストが右へ流れていく。<BS>はカーソルの下 - の文字を削除する。CTRL-WとCTRL-Uも反対の方向へ働く。'backspace'オプションが - 指定されているかに関わらず<BS>、CTRL-W、CTRL-Uは入力の開始点や行末で停止し - ない。 - - (まだ)逆置換モードは実装されていない。 - - 'showmode'オプションが設定されていると、逆挿入モードが有効になっている時に - は状態表示行(ステータスライン)に"-- REVERSE INSERT --"が表示されるだろう。 - -o "右左"ウィンドウでの貼り付け - ---------------------------- - - マウスでカットした文章を"右左"ウィンドウに貼り付けると、"左右"バッファから - カットされたバッファの文字を"右左"ファイルへ入力することになるので、テキス - トは反転される。これを避けるには貼り付け前に'revins'を切り替える。 - -バグ ----- -o "右左"ウィンドウではCTRL-AとCTRL-X(足し算、引き算)コマンドは正しく働かな - い。 - -o 逆挿入とコマンドラインでの"右左"モードはサポートされない。しかしながらマッ - ピング、短縮入力、検索、コマンドラインでの"左右"入力が可能なので、エディタ - の機能性はそこなわれない - -o "右左"モードでは多少遅くなる。"右左"の動作は端末制御ではなくVimでのエミュ - レーションによって実現されているため。 - -o 7ビット端末はサポートしない。完全なヘブライ語と英語フォント(ヘブライ語と英 - 語を切り替えるのにエスケープシーケンスを必要としない)のある端末だけがサポー - トされる。 - -o Athena GUIを使用すると、下スクロールバーが間違った方向に働く。これを修正す - るのは難しい。 - -o 'rightleft'と'revins'が両方とも有効になっていると: 'textwidth'が動作しない。 - 行が折り返されない; 長い行が作成される。 - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/russian.jax b/runtime.old/doc/russian.jax deleted file mode 100644 index 846435cea..000000000 --- a/runtime.old/doc/russian.jax +++ /dev/null @@ -1,70 +0,0 @@ -*russian.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - - VIM REFERENCE MANUAL by Vassily Ragosin - - -ロシア語サポート *russian* *Russian* - -1. はじめに |russian-intro| -2. ロシア語キーマップ |russian-keymap| -3. ローカライゼーション |russian-l18n| -4. 既知の問題 |russian-issues| - -=============================================================================== -1. はじめに *russian-intro* - -Vim ではロシア語は完璧にサポートされています。特別な設定をすることなく、他の言 -語とまったく同じようにロシア語のテキストを書いたり表示したりできます。 - -=============================================================================== -2. ロシア語キーマップ *russian-keymap* - -言語を切り替えるには、システムネイティブのキーボード切り替えを使うか、Vim に含 -まれているロシア語キーマップのどれかを使います。例: > -> - :set keymap=russian-jcukenwin -< -後者の方法なら、ロシア語のキーボードを持っていなくてもいいですし、システムの -キーボード設定とは独立して言語を切り替えることができます。|'keymap'| を参照し -てください。また、キーボードを切り替えるためのキーマップを作ることもできます。 -|:map| を参照してください。 - -ノーマルモードコマンドを入力するときにキーボードを切り替えなくてすむように、オ -プション 'langmap' をセットすると便利です: -> - :set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ, - фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz - -上の行は utf-8 で書かれているので、'encoding' が utf-8 でないと読めません。読 -みやすいように折り返していますが、このコマンドを一行で入力してください。 - -=============================================================================== -3. ローカライゼーション *russian-l18n* - -ロシア語に翻訳されたメッセージ、ヘルプファイル、メニューなどを使うには、RuVim -言語パックをインストールする必要があります。次のサイトからダウンロードできます。 - - http://www.sourceforge.net/projects/ruvim/ - -自動インストールするためには Vim 6.2.506 以上、ruvim 0.5 以上でなければなりま -せん。また、ユーザーインターフェイス項目の翻訳を使うには Vim が |+gettext| 機 -能つきでコンパイルされていなければなりません。 - -RuVim プロジェクトからアーカイブをダウンロードしたら、あなたの $VIMRUNTIME ディ -レクトリに展開してください。Vim が |+multi_byte| 機能つきでコンパイルされてい -るならば、UTF-8 アーカイブを使うことを推奨します。 - -ロシア語のドキュメントを使うには、オプション 'helplang' に "ru" をセットしてく -ださい。 - -=============================================================================== -4. 既知の問題 *russian-issues* - --- Win32 のコンソールでロシア語メッセージを使っていると、"vim --help" と - "vim --version" の出力、コンソールウィンドウタイトルが間違ったコードページ - で表示されてしまいます。この問題は GNU gettext ライブラリのバグに関係してい - て、将来の gettextでは修正されるかもしれません。 - -=============================================================================== - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/scroll.jax b/runtime.old/doc/scroll.jax deleted file mode 100644 index 01cc79a53..000000000 --- a/runtime.old/doc/scroll.jax +++ /dev/null @@ -1,323 +0,0 @@ -*scroll.txt* For Vim バージョン 7.3. Last change: 2006 Aug 27 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -スクロール *scrolling* - -これらのコマンドはウィンドウの内容を移動する。カーソルがウィンドウの外に移動し -ようとすると、カーソルはウィンドウに留まるように振舞う('scrolloff'のスクリーン -行をカーソルの周囲に確保する)。1ページとはウィンドウの行数から2引いた行数と定 -義する。これらのコマンドを覚えるのは少し厄介かもしれない。ウィンドウをバッファ -のうち貴方が見ている一部分と捉えて、ウィンドウの動きをバッファ内での上下の移動 -に関連付けてコマンドを覚えると良いだろう。例えばバッファの中でウィンドウが上に -動くと、ウィンドウのテキストはスクリーンの下の方へ移動していくことになる。 - -手始めにユーザーマニュアルの|03.7|を読んでください。 - -1. 下方スクロール |scroll-down| -2. 上方スクロール |scroll-up| -3. カーソル相関スクロール |scroll-cursor| -4. 水平スクロール |scroll-horizontal| -5. 同期スクロール |scroll-binding| -6. マウスホイールスクロール |scroll-mouse-wheel| - -============================================================================== -1. 下方スクロール *scroll-down* - -以下のコマンドは編集ウィンドウ(バッファ内の貴方が見ている一部分)を下に移動する -(つまりテキストバッファのより下にある行を見ることができる): - - *CTRL-E* -CTRL-E バッファの下へ[count]行ウィンドウをスクロールする。 - 覚え方: Extra lines (訳注: Extra=割増) - - *CTRL-D* -CTRL-D ウィンドウをバッファ内で下にスクロールする。スクロール - する行数は'scroll'オプションで指定される(省略した場合: - スクリーンの半分の行数)。[count]が指定された場合、 - 'scroll'オプションに[count]が設定されてからスクロール - する。カーソルもファイル内で同じ行数だけ下へ移動する - (もし可能ならば; 行が折り返されている場合やファイルの - 終端に達した時は違ってくる)。カーソルがバッファの最終 - 行にある時は何も起こらずビープ音が鳴る。'startofline' - オプションも参照。 - {Vi と異なる点: ファイルの物理行数スクロールさせる代わ - りに、Vimでは'scroll'行分スクリーンの論理行でスクロー - ルする; これは行が折り返されている時に違いを生む} - -<S-Down> or *<S-Down>* *<kPageDown>* -<PageDown> or *<PageDown>* *CTRL-F* -CTRL-F ウィンドウをバッファ内で[count]ページ前方(下方)にスク - ロールする。'startofline'オプションも参照。 - ウィンドウが1つだけのときはオプション'window'の値が使 - われる。 - - *z+* -z+ [count]が無い時: 現在のウィンドウの最下行を最上行にし - て再描画する。カーソルはその行の、最初の非空白文字に合 - わせられる。 - [count]が有る時: ちょうど"z<CR>"と同じ。 - -============================================================================== -2. 上方スクロール *scroll-up* - -以下のコマンドは編集ウィンドウ(バッファ内の貴方が見ている一部分)を上に移動する -(つまりテキストバッファのより上にある行を見ることができる): - - *CTRL-Y* -CTRL-Y バッファの上へ[count]行ウィンドウをスクロールする。 - Note: MS-Windowsのキーバインディングを使っているときは - CTRL-Yはredoにマッピングされています。 - - *CTRL-U* -CTRL-U ウィンドウをバッファ内で上にスクロールする。スクロー - ルする行数は'scroll'オプションで指定される(省略した場 - 合: スクリーンの半分の行数)。[count]が指定された場合、 - 'scroll'オプションに[count]が設定されてからスクロール - する。カーソルもファイル内で同じ行数だけ上へ移動する - (もし可能ならば; 行が折り返されている場合やファイルの - 先頭に達した時は違ってくる)。カーソルがバッファの先頭 - 行にある時は何も起こらずビープ音が鳴る。'startofline' - オプションも参照。 - {Vi と異なる点: ファイルの物理行数スクロールさせる代わ - りに、Vimでは'scroll'行分スクリーンの論理行でスクロー - ルする; これは行が折り返されている時に違いを生む} - -<S-Up> or *<S-Up>* *<kPageUp>* -<PageUp> or *<PageUp>* *CTRL-B* -CTRL-B ウィンドウをバッファ内で[count]ページ後方(上方)にスク - ロールする。'startofline'オプションも参照。 - ウィンドウが1つだけのときはオプション'window'の値が使 - われる。 - - *z^* -z^ [count]が無い時: 現在のウィンドウの最上行を最下行にし - て再描画する。カーソルはその行の、最初の非空白文字に合 - わせられる。 - [count]が有る時: まず[count]行がウィンドウの最下行に - なるようにスクロールし、次にウィンドウの最上行になっ - た行を最下行にして再描画する。カーソルはその行の最初 - の非空白文字に合わせられる。 - -============================================================================== -3. カーソル相関スクロール *scroll-cursor* - -下記のコマンドはカーソルの位置は変えずに編集ウィンドウ(バッファの見えている一 -部)の位置を変える: - - *z<CR>* -z<CR> [count]行(省略時はカーソルのある行)をウィンドウの最上 - 行にして再描画する。カーソルは行内の最初の非空白文字に - 置かれる。 - - *zt* -zt "z<CR>"と同様だが、カーソルは同じカラムに留める。 - {Vi にはない} - - *zN<CR>* -z{height}<CR> ウィンドウを高さ{height}行に変更して再描画する。スク - リーンの更新が非常に遅い時に、高さを減らすと有効であ - る。物理的なスクリーンの高さよりも高くすることはできな - い。 - - *z.* -z. [count]行(省略時はカーソルのある行)をウィンドウの中心 - にして再描画する。カーソルは行内の最初の非空白文字に置 - かれる。 - - *zz* -zz "z."と同様だが、カーソルは同じコラムに留める。注意: - caps-lockが有効になっていると、このコマンドは"ZZ"にな - り、バッファを書き出し終了してしまう。{Vi にはない} - - *z-* -z- [count]行(省略時はカーソルのある行)をウィンドウの最下 - 行にして再描画する。カーソルは行内の最初の非空白文字に - 置かれる。 - - *zb* -zb "z-"と同様だが、カーソルは同じコラムに留める。 - {Vi にはない} - -============================================================================== -4. 水平スクロール *scroll-horizontal* - -次の4つのコマンドはスクリーンに応じてカーソルが移動する。カーソルのある文字が -スクリーンが動いたために消えると、カーソルはスクリーン上の一番近い文字に移動す -る。'sidescroll'の値は使用されない。 - -z<Right> or *zl* *z<Right>* -zl スクリーンを[count]文字右へ移動する。従ってテキストは - [count]文字左へスクロールする。これは'wrap'がオフの時 - にだけ働く。 {Vi にはない} - -z<Left> or *zh* *z<Left>* -zh スクリーンを[count]文字左へ移動する。従ってテキストは - [count]文字右へスクロールする。これは'wrap'がオフの時 - にだけ働く。 {Vi にはない} - - *zL* -zL スクリーンの幅の半分右へスクロールする。従ってテキスト - はスクリーンの幅の半分左へスクロールする。これは'wrap' - がオフの時にだけ働く。 {Vi にはない} - - *zH* -zH スクリーンの幅の半分左へスクロールする。従ってテキスト - はスクリーンの幅の半分右へスクロールする。これは'wrap' - がオフの時にだけ働く。 {Vi にはない} - -次の2つのコマンドではテキスト上でカーソルは移動せず、スクリーンのテキストだけ -がスクロールする。 - - *zs* -zs カーソルのある位置がスクリーンの始まり(左側)に来るよう - にテキストを水平にスクロールする。これは'wrap'がオフの - 時にだけ働く。 {Vi にはない} - - *ze* -ze カーソルのある位置がスクリーンの終わり(右側)に来るよう - にテキストを水平にスクロールする。これは'wrap'がオフの - 時にだけ働く。 {Vi にはない} - -============================================================================== -5. 同期スクロール *scroll-binding* - -時折、2つかそれ以上のウィンドウを結びつけて、1つがスクロールしたら他のウィンド -ウもスクロールして欲しいと思うことがある。Vimではウィンドウごとに'scrollbind' -オプションを設定することでこのような振る舞いをさせることが可能である。 -'scrollbind'が設定されたあるウィンドウがスクロールした場合、他の'scrollbind'が -設定されたウィンドウが可能なら同じ量だけスクロールする。'scrollbind'の振る舞い -は'scrollopt'オプションによって変更することができる。 - -スクロールバーを使っているとき、マウスでスクロールバーを操作しても他のウインド -ウはスクロールされない。これは少しの間だけ同期スクロールを使わないでスクロールし -たい時に使える。 - -ウインドウに'diff'オプションも設定されているとき、同期スクロールは二つのバッ -ファの差分を考慮してスクロールする。以下の機能が使われなければこれはうまく機能 -する。 - - *scrollbind-relative* -'scrollbind'された各々のウィンドウは"相対的なオフセット"の量を監視し、それは現 -在のウィンドウの垂直スクロール位置とその他のウィンドウの垂直スクロール位置の間 -の違いと考えることができる。'scrollbind'ウィンドウの1つがテキストの最初もしく -は最後を超えてスクロールしようとすると、ウィンドウはもはやスクロールせず、しか -しどれだけ臨界を超えて移動しようとしたかは記憶される。ウィンドウはこの情報を持 -ち続けて同じオフセットを管理できるように、そのバッファの限界を超えてスクロール -を要求されたかにはかまわない。 -(訳注: 意味は理解できない) - -しかしながら、そのバッファの限界を超えるような相対オフセットを持つウィンドウに -カーソルフォーカスが与えられると、その他の'scrollbind'されたウィンドウは現在の -ウィンドウの有効な相対オフセットの位置にジャンプすることになる。この振る舞いは -'scrollopt'オプションから'jump'フラグを削除することで変えることができる。 - - *syncbind* *:syncbind* *:sync* -:syncbind すべての'scrollbind'ウィンドウが同じ相対オフセットを持 - つように強制する。すなわち'scrollbind'ウィンドウがその - バッファの先頭にスクロールされた時、その他の - 'scrollbind'ウィンドウもまたそれぞれのバッファの先頭に - 持っていかれる。 - - *scrollbind-quickadj* -'scrollbind'フラグはウィンドウを垂直スクロールするキーボードコマンドを使う時に -意味があり、またカーソルフォーカスを持つウィンドウの垂直スクロールバーを使うと -きに意味がある。しかしながら、カーソルフォーカスを持たないウィンドウの垂直スク -ロールバーを使うときには、'scrollbind'は無視される。これを'scrollbind'された -ウィンドウの相対オフセットを修正する時に利用できる。 - -============================================================================== -6. マウスホイールスクロール *scroll-mouse-wheel* - -マウスにスクロールホイールがあるときは、GUI の Vim でそれを使うことができる。 -どのように動作するかはシステムに依存する。ホイールは xterm でも動作する -|xterm-mouse-wheel|。デフォルトでは垂直スクロールホイールのみサポートされてい -る。いくつかの GUI では水平スクロールホイールもサポートされている。 - -Win32 GUIではスクロールの動作はソースに埋め込まれている。それはちょうど現在の -ウィンドウのスクロールバーをドラッグした時のように働く。何行スクロールするかは -貴方のマウスドライバに依存する。スクロールの動作が入力フォーカスの問題を引き起 -こすならば、|intellimouse-wheel-problems|を参照。 - -X11 GUI (Motif、Athena、GTK) ではホイールを回すと <ScrollWheelUp>、 -<ScrollWheelDown>、<ScrollWheelLeft>、<ScrollWheelRight> などのキー入力が発生 -する。例えば、スクロールホイールを上に回すと <ScrollWheelUp> キーが生成され、 -ウィンドウが上にスクロールする (つまりテキストが下に移動する)。これらのキーの -デフォルトの動作は次の通り: - <ScrollWheelUp> 3 行上にスクロール *<ScrollWheelUp>* - <S-ScrollWheelUp> 1 画面上にスクロール *<S-ScrollWheelUp>* - <C-ScrollWheelUp> 1 画面上にスクロール *<C-ScrollWheelUp>* - <ScrollWheelDown> 3 行下にスクロール *<ScrollWheelDown>* - <S-ScrollWheelDown> 1 画面下にスクロール *<S-ScrollWheelDown>* - <C-ScrollWheelDown> 1 画面下にスクロール *<C-ScrollWheelDown>* - <ScrollWheelLeft> 6 列左にスクロール *<ScrollWheelLeft>* - <S-ScrollWheelLeft> 1 画面左にスクロール *<S-ScrollWheelLeft>* - <C-ScrollWheelLeft> 1 画面左にスクロール *<C-ScrollWheelLeft>* - <ScrollWheelRight> 6 列右にスクロール *<ScrollWheelRight>* - <S-ScrollWheelRight> 1 画面右にスクロール *<S-ScrollWheelRight>* - <C-ScrollWheelRight> 1 画面右にスクロール *<C-ScrollWheelRight>* -これはコマンドラインを編集する以外の、全てのモードで動作するだろう。 - -Note: 水平スクロールは 'nowrap' が設定されているときのみ機能します。また、 -'guioptions' の "h" フラグが設定されていない場合は、スクロールするとカーソル行 -が画面外になってしまうようなときに、表示されている範囲の一番長い行にカーソルが -移動します (水平スクロールバーの動作に似た感じ)。 - -キーマッピングによりデフォルトの振る舞いを変更することができる。例えば、ノーマ -ルモードでホイールによるスクロールを1行にしたり半画面にしたりできる: > - map <MouseDown> <C-Y> - map <S-MouseDown> <C-U> - map <MouseUp> <C-E> - map <S-MouseUp> <C-D> -AltやCtrlといった修飾も可能である。 - -これはもちろん、Vimがスクロールホイールのイベントを取得している時にだけ働く。 -この機能が働くかどうかは"xev"プログラムを使用すればチェックできる。 - -XFree86を使っているときには、/etc/XF86Configに貴方のマウスの正しいエントリがな -ければならない。FreeBSDでは、このようなエントリーがロジテックのスクロールマウ -ス用に必要である。 > - Protocol "MouseMan" - Device "/dev/psm0" - ZAxisMapping 4 5 -詳しくはXFree86のドキュメントを参照すること。 - - *<MouseDown>* *<MouseUp>* -<MouseDown> と <MouseUp> は廃止されました。<MouseDown> の代わりに -<ScrollWheelUp> を、<MouseUp> の代わりに <ScrollWheelDown> を使ってください。 - - *xterm-mouse-wheel* -新しいxtermでマウスホイールを使うには、上で書かれているようにXserverでスクロー -ルホイールマウスが動作するようにするだけで良い。 - -古いxtermでマウスホイールを使うにはこうする: -1. 上にかかれているように、Xserverで使えるようにする。 -2. xtermに変換を追加し、スクロールイベントをVimへエスケープシーケンスとして渡 - すようにする。 -3. Vimにマッピングを追加し、エスケープシーケンスを <ScrollWheelDown> もしくは - <ScrollWheelUp> キーとして解釈できるようにする。 - -次のような内容をあなたの~/.Xdefaults(もしくは別名の貴方のXリソースファイル)に -追加すれば変換ができる。 > - - XTerm*VT100.Translations: #override \n\ - s<Btn4Down>: string("0x9b") string("[64~") \n\ - s<Btn5Down>: string("0x9b") string("[65~") \n\ - <Btn4Down>: string("0x9b") string("[62~") \n\ - <Btn5Down>: string("0x9b") string("[63~") \n\ - <Btn4Up>: \n\ - <Btn5Up>: - -以下のマッピングを vimrc ファイルに追加してください: > - :map <M-Esc>[62~ <ScrollWheelUp> - :map! <M-Esc>[62~ <ScrollWheelUp> - :map <M-Esc>[63~ <ScrollWheelDown> - :map! <M-Esc>[63~ <ScrollWheelDown> - :map <M-Esc>[64~ <S-ScrollWheelUp> - :map! <M-Esc>[64~ <S-ScrollWheelUp> - :map <M-Esc>[65~ <S-ScrollWheelDown> - :map! <M-Esc>[65~ <S-ScrollWheelDown> -< - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/sign.jax b/runtime.old/doc/sign.jax deleted file mode 100644 index 0c7bad3e9..000000000 --- a/runtime.old/doc/sign.jax +++ /dev/null @@ -1,192 +0,0 @@ -*sign.txt* For Vim バージョン 7.3. Last change: 2010 Oct 14 - - - VIMリファレンスマニュアル by Gordon Prieur - and Bram Moolenaar - - -目印機能 *sign-support* - -1. 機能紹介 |sign-intro| -2. コマンド |sign-commands| - -{Vi にはこの機能はない} -{コンパイル時に|+signs|機能を指定した場合にのみ利用可能} - -============================================================================== -1. 機能紹介 *sign-intro* *signs* - -デバッガやその他のIDE(訳注 統合開発環境)ツールはエディタをコントールする。その -エディタはユーザにファイルについての役立つ情報を素早く提供するために特別なハイ -ライトを表示できる必要がある。一例としては左のカラムにブレークポイントを示すア -イコンを持つデバッガを挙げることができる。別の例としてはプログラムカウンタ(PC) -を示す矢印が挙げられる。この目印機能により、ウィンドウの左端に目印やアイコン画 -像を置いたり、ある行に適用される強調を定義することができるようになる。画像によ -る目印はgvimでだけ利用で可能である(しかしSun Microsystemsのdttermはそれをサ -ポートしている。これは著者が知り得る限りで唯一の端末エミュレータである)。テキ -ストによる目印と色による強調表示は、あらゆるカラーの端末エミュレータで利用でき -る。 - -目印と強調はデバッガにとってだけ便利なわけではない。SunのVisual WorkShopはビル -ドエラーとSourceBrowserの検索一致箇所を示すのに目印と強調を使用する。加えて、 -デバッガは8個から10個の異なる目印と強調色をサポートする。|workshop|参照。 -Netbeansは|netbeans|を参照。 - -目印を使うには2つの段階がある: - -1. 目印を定義する。画像とテキストと強調色を指定する。例えば"break"の目印として - 道路の停止の画像を使用し、テキストとして"!!"を使用して定義することができ - る。 - -2. 目印を設置する。目印を設置したいファイルと行番号を指定する。定義された目印 - は異なるファイルと異なる位置に複数箇所に置くことができる。 - -ファイルに対して目印が定義されると、Vimは自動的に表示画面に2文字分のカラムを付 -け加える。全てのサインが取り除かれるとそのカラムは消滅する。そのカラムは -SignColumnの色を使う|hl-SignColumn|。色を設定するには次のようにする: > - - :highlight SignColumn guibg=darkgrey - -============================================================================== -2. コマンド *sign-commands* *:sig* *:sign* - -次の例ではカレントファイルの23行目に"piet"という目印を置いている。目印は">>"と -いう文字をともなって表示されます。 > - :sign define piet text=>> texthl=Search - :exe ":sign place 2 line=23 name=piet file=" . expand("%:p") - -それをもう一度消すコマンドを追記しておく: > - :sign unplace 2 - -":sign"コマンドの後には他のコマンドを続けられないことに注意してください。その -ようにするには|:execute|を使います。 - - -目印を定義する *:sign-define* *E255* *E160* *E612* - -:sign define {name} {argument}... - 新しい目印を定義するか既にある目印に属性を設定する。{name}は番 - 号(全て数字)か非数字で始まる名前である。先導数字は無視されるの - で、"0012" と "012" と "12" は同じ名前として解釈されます。 - 約120の異なる目印を定義することができる。 - - 利用可能な引数: - - icon={pixmap} - 目印に使用する画像ファイルを定義する。フルパス指定したほうが良 - い。画像は2文字の幅に納まるものでなければならない。これは - チェックされない。大きすぎる画像を使用すると再描画の際に問題が - 生じることがある。GTK2では画像がちょうど納まるように調整され - る。 - (訳注: Windowsでは自動的に調整される) - toolkit サポートフォーマット ~ - GTK 1 pixmap (.xpm) - GTK 2 many - Motif pixmap (.xpm) - - linehl={group} - 目印が設置された行全体を強調表示するのに使われるハイライトグ - ループを定義する。背景色を定義するのに良く利用される。 - - text={text} *E239* - アイコンが無いかGUIではない時に表示されるテキストを定義する。 - 表示可能な文字のみ指定できる。これは表示幅で1文字か2文字分の文 - 字を指定できる。 - (訳注: アルファベットなら1or2文字。漢字なら1文字) - - texthl={group} - テキスト部分に使用されるハイライトグループ。 - - -(定義した)目印を削除する *:sign-undefine* *E155* - -:sign undefine {name} - 既に定義された目印を削除する。{name}という名前の目印がまだ設置 - されたままの場合はトラブルを引き起こす。 - - -(定義した)目印を一覧表示する *:sign-list* *E156* - -:sign list 全部の定義済み目印とその属性を一覧表示する。 - -:sign list {name} - {name}という名で定義された目印とその属性を表示する。 - - -目印を設置する *:sign-place* *E158* - -:sign place {id} line={lnum} name={name} file={fname} - {name}として定義された目印をファイル{fname}の{lnum}行目に設置 - する。 - *:sign-fname* - ファイル名{fname}は既に読込済みのバッファでなければなら - ない。正確なファイル名でなければならず、ワイルドカードや環境変 - 数そして"~"は展開されない。空白はエスケープされない。末尾の空 - 白は無視される。 - - 目印は{id}という識別子で記憶され、後の操作に使用される。{id}は - 番号でなければならない。 - ユーザは自分で、1つの{id}が各々のファイルに1つしか無いように気 - を付けなければならない(同じ{id}を複数回設置したときには解除も - 同じ回数だけ行なう必要がある。同じ{id}を使うことで目印の位置を - 変更しようという試みはうまく行かない)。 - -:sign place {id} line={lnum} name={name} buffer={nr} - 上に同じ。バッファ番号を使用していることが異なる。 - -:sign place {id} name={name} file={fname} - ファイル{fname}に{id}で設置された目印を、{name}で定義されてい - る目印に変更する。{fname}については上述の|:sign-fname|を参照し - てください。 - これは既に設置された目印を動かすことなく変更するのに使われる。 - (例: デバッガがブレークポイントで停止した時) - -:sign place {id} name={name} buffer={nr} - 上に同じ。バッファ番号を使用していることが異なる。 - - -(設置した)目印を解除する *:sign-unplace* *E159* - -:sign unplace {id} file={fname} - ファイル{fname}に{id}で設置された目印を解除する。 - {fname}については上述の|:sign-fname|を参照してください。 - - -:sign unplace {id} buffer={nr} - 上に同じ。バッファ番号を使用していることが異なる。 - -:sign unplace {id} - {id}で設置された目印を、全てのファイルから削除する。 - -:sign unplace * - 設置された全ての目印を解除する。 - -:sign unplace - カーソル位置に設置されている目印を解除する。 - - -(設置した)目印を一覧表示する - -:sign place file={fname} - ファイル{fname}に設置されている目印を一覧表示する。 - {fname}については上述の|:sign-fname|を参照してください。 - -:sign place buffer={nr} - バッファ{nr}に設置されている目印を一覧表示する。 - -:sign place 全てのファイルに設置されている全ての目印を一覧表示する。 - - -(設置した)目印へ移動する *:sign-jump* *E157* - -:sign jump {id} file={fname} - ファイル{fname}を開くか、{fname}を編集中のウィンドウへ移動し、 - 目印{id}の位置へカーソルを移動させる。 - {fname}については上述の|:sign-fname|を参照してください。 - ファイルがウィンドウに表示されておらず、現在のファイルを放棄で - きない時には、これは失敗する。 - -:sign jump {id} buffer={nr} - 上に同じ。バッファ番号を使用していることが異なる。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/sponsor.jax b/runtime.old/doc/sponsor.jax deleted file mode 100644 index 6545cab7b..000000000 --- a/runtime.old/doc/sponsor.jax +++ /dev/null @@ -1,210 +0,0 @@ -*sponsor.txt* For Vim バージョン 7.3. Last change: 2008 Jun 21 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - -開発支援 (スポンサー) *sponsor* - -バグの修正や新機能の追加には多くの時間と努力が必要です。その仕事に対するあなた -の評価を形にするために、また、Bram や他の人の Vim を開発しようとする気持ちを継 -続させるために、寄付をお願いしています。 - -Bram は再び就職したため、寄付金はウガンダの子供達を援助するために使われます。 -|uganda| を参照してください。寄付は Bram が Vim の開発を継続するための励みにも -なっています。 - -開発支援に関する最新の情報は Vim のウェブサイトを参照ください。 - - http://www.vim.org/sponsor/ - -|sponsor-faq| にさらに説明があります。 - - -ユーザー登録 *register* - -10 ユーロ以上の送金で Vim の登録ユーザーになれます。これは開発支援と似たような -ものです。上記 |sponsor| を参照してください。上司や帳簿係はソフトウェアに出費 -してくれるが、"開発支援" や "寄付"という名目では問題がある、という場合に使って -ください。 - -|register-faq| にさらに説明があります。 - - -機能への投票 *vote-for-features* - -登録ユーザーやスポンサーには、Bram がするべき作業を決定するための投票権が与え -られます。投票の手順は次のとおりです。 - -1. 10 ユーロ以上送金をしてください。送金方法は下記を参照してください。 - |send-money| - -2. 登録キーが送られてくるので、そのキーを Vim のウェブサイトにあるご自身のア - カウントページで入力してください。アカウントを持っていなかったとしても、簡 - 単に作ることができます。 - -3. 投票ページで投票します。登録キーを入力すると、投票ページへのリンクがアカウ - ントページに作成されます。票は二年間有効です。 - -4. 結果は投票結果ページで確認できます。このページはだれでも見ることができま - す。http://www.vim.org/sponsor/vote_results.php - -送金額が合計で 100 ユーロを越えると、名誉の殿堂 (Vim hall of honour) にあなた -の名前が載ります。http://www.vim.org/sponsor/hall_of_honour.php -しかしそれは、あなたが自分のアカウントページでそれを許可した場合のみです。 - - -送金方法 *send-money* - -クレジットカード - クレジットカードでの送金には PayPal を使ってください。詳しいこ - とは PayPal のサイトを参照してください: - https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q - 開発支援の送金のためのメールアドレスはこれです: - donate@vim.org - ユーザー登録のためのメールアドレスはこれです: - register@vim.org - なるべくユーロを使って欲しいのですが、他の通貨も受け付けていま - す。ヨーロッパ在住なら銀行振込の方が手数料が安いです。 - -他の方法 |iccf-donations| を参照してください。 - 送金するときにコメント欄に "Vim sponsor" か "Vim registration" - と記入してください。あなたが Vim の登録ユーザーやスポンサーで - あることを他の人に分かるようにしたり、機能へ投票したい場合は、 - いくら送金したのかを、私にメールで知らせてください。 - -現金 少額の場合は郵送することもできます。お金は、外から見えないよう - に、何かで包装してください。あなたが Vim の登録ユーザーやスポ - ンサーであることを他の人に分かるようにしたり、機能へ投票したい - 場合は、あなたのメールアドレスを書き添えてください。 - -送付先の住所は次のとおりです: - Bram Moolenaar - Finsterruetihof 1 - 8134 Adliswil - Switzerland - - - -質問と回答 *sponsor-faq* *register-faq* - -なぜ送金しないといけないの? - -Vim に対する評価を形にしなかった場合、バグを修正したり新機能を追加しようとする -Bram の動機が弱まります。彼は何か他のことをするでしょう。 - - -いくら送金すればいいの? - -いくらでも結構です。たくさん送金すれば、たくさんの子供達が救われます。目安とし -ては、ホームユーザーなら年に 10 ユーロ、仕事で使う場合は一人あたり年に 30 ユー -ロほどでしょうか。10 ユーロ以上送金すると機能へ投票できるようになります。 - - -何かいいことあるの? - -10 ユーロ以上寄付した登録ユーザーとスポンサーは新機能へ投票できます。投票に -よって Vim 開発の優先順位が決まります。票は二年間有効です。金額が大きいほど投 -票得点が大きくなります |votes-counted|。 - -送金額が合計で 100 ユーロ以上になると、名誉の殿堂 (Vim hall of honour) にあな -たの名前が載ります。しかしそれは、あなたが自分のアカウントページでそれを許可し -た場合のみです。金額を表示するかどうかを選択することもできます。 - - -登録ユーザーやスポンサーになるにはどうすればいいの? - -上記 |send-money| に従って送金し、メールアドレスを知らせてください。送金が完了 -すると、登録キーが送付されます。登録キーは Vim のウェブサイトのアカウントで、 -機能へ投票できるようにするために使います。登録キーを使うと、投票ページが追加さ -れます。あなたが寄付したことを他の人が確認できるかどうかを設定することもできま -す。そのページへのリンクは "My Account" ページにあります。 - - -登録ユーザーとスポンサーの違いは? - -名前が違うだけです。あなたの上司が "開発支援" や "寄付" を好まない場合に "ユー -ザー登録" という名目を使ってください。特典は同じです。 - - -どうやって送金するの? - -|send-money| を参照してください。最新情報はウェブサイトで確認してください: -http://www.vim.org/sponsor/ - - -なぜ SourceForge の寄付システムを使わないの? - -SourceForge は寄付金の 5% を手数料として取るからです。SouceForge を支援したい -場合は直接彼らに送金してください。 - - -私には送金するほど経済的余裕がありません。それでも Vim を使えますか? - -はい。 - - -私はユーザー登録してません。すべての機能を使えますか? - -はい。 - - -バグを発見しました。報告するにはユーザー登録が必要ですか? - -必要ありません。Vim をより良くするための提案はいつでも歓迎します。改良に関して -は開発メーリングリスト |maillist| を使ってください。バグ報告に関しては |bugs| -を参照してください。 - - -私の投票はどのように集計されるのですか? *votes-counted* - -10 ユーロ以上送金すると投票できるようになります。10 票まで投票できます。複数の -ポイントを入れるために、同じ項目に複数の票を入れることもできます。3 票の反対票 -を入れることもできます。 - -30 ユーロ以上送金するとポイントが倍になります。100 ユーロなら 4 倍、300 ユーロ -なら 6 倍、1000 ユーロ以上なら 10 倍です。 - - -投票先を変更できますか? - -いつでも好きなときに投票先を変更できます。票は送金してから二年間有効です。ポイ -ントはただちに反映されます。 - - -投票したい項目を追加できますか? - -直接はできません。投票したい項目について Bram に相談してください。その項目を一 -覧に加えるかどうかは彼が判断します - - -チャリティーウェアとは? - -現在、Vim への寄付金は |uganda| に送金されます。そのため、Vim を支援するのと -ICCFを支援するのは、機能へ投票できるかどうかの違いしかありません。 - - -私は $$$ 円寄付しました。XYZ の機能を加えてください。 - -Bram の作業と寄付の間に直接的な関係はありません。対価が仕事に対して支払われる -とすると、私たちはその寄付に関して納税しなければなりません。特定の仕事のために -Bram を雇いたい場合は、寄付ではなく、彼に直接連絡してください。 - - -寄付金は税金控除の対象になりますか? - -国によって違います。|Uganda| の子供達を援助するための寄付は、オランダ、ドイ -ツ、カナダ、アメリカ、で税金が控除されます。ICCF のウェブサイトを参照してくだ -さい http://iccf-holland.org/donate.html。 Vim を使用することに対して寄付した -ことを、メールで Bram に知らせてください。 - - -明細書はもらえますか? - -いいえ。なぜなら、寄付金と仕事の間には関係がないからです。領収書なら発行できま -す。 - - - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/starting.jax b/runtime.old/doc/starting.jax deleted file mode 100644 index 2d179a0c2..000000000 --- a/runtime.old/doc/starting.jax +++ /dev/null @@ -1,1491 +0,0 @@ -*starting.txt* For Vim バージョン 7.3. Last change: 2010 Sep 18 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -Vimる *starting* - -1. Vimの起動引数 |vim-arguments| -2. Amiga版のVim |starting-amiga| -3. eVimについて |evim-keys| -4. 初期化 |initialization| -5. $VIM と $VIMRUNTIME |$VIM| -6. サスペンド |suspend| -7. 設定の保存 |save-settings| -8. ビューとセッション |views-sessions| -9. viminfo ファイル |viminfo-file| - -============================================================================== -1. Vimの起動引数 *vim-arguments* - -たいていは1つのファイルを編集するために次のようなコマンドでVimを起動する - - vim filename *-vim* - -より一般的に言えば、Vimは次の書式で起動することができる: - - vim [option | filename] .. - -オプション引数とファイル引数は混在でき、幾つでも与える事ができる。しかし引数を -取るオプションには注意が必要である。 - -さまざまなViのバージョンとの互換性に付いては|cmdline-arguments|を参照。 - -正確には、以下の5つの項目から1つを選んで編集が開始される: - - *-file* *---* -filename 1つ以上のファイル名が与えられた場合。まずは最初の1つが編集ファ - イルとしてバッファに読み込まれる。カーソルはそのバッファの1行 - 目に置かれる。 - '-'で始まるファイル名を指定するには、オプションと区別するため - に、引数に"--"を置く。例: > - vim -- -filename -< "--"の後の全ての引数はファイル名として解釈されるので、その他の - オプションや引数"+command"は使用することができない。 - - *--* -- この引数はExモードで起動するかどうかで意味が異なる。 - - ノーマルモードで起動する場合: > - vim - - ex -v - -< 新しいバッファに、標準入力を読み込んで編集を始める。このコマン - ドを使用するとまず標準入力を読み込み、それから標準エラー出力を - 読み込む。例: > - find . -name "*.c" -print | vim - -< バッファには未保存のテキストが含まれるので、「変更(modified)」 - のマークがつけられる。ただし読み込み専用モードで起動する場合は - 除く。例: > - ls | view - -< - Exモードで起動する場合: > - ex - - vim -e - - exim - - vim -E - -< サイレントモードで起動する。|-s-ex|を参照。 - - *-t* *-tag* --t {tag} タグを開く。{tag}がtagsファイルから検索され、関連づけられた - ファイルが現在のファイルとされ、関連づけられたコマンドが実行さ - れる。大抵これはCプログラムを編集するときに使用され、"tag"は関 - 数名である事が多い。それにより、その関数を含むファイルが自動的 - に開かれ、カーソルがその関数の定義位置に設定される(|tags|を参 - 照)。 - - *-q* *-qf* --q [errorfile] クイックフィックスモードで起動。 [errorfile]に指定したファイル - が読み込まれ最初のエラーが表示される。|quickfix|を参照。 - [errorfile]が与えられない場合、オプション'errorfile'がファイル - 名として使用される。省略値に関しては'errorfile'を参照。 - {Vi にはない} - -(nothing) 上記の4つのうち、どれも指定せずにVimを起動すると、新しいバッ - ファが用意される。それは名前のない空のバッファである。 - - -起動時のモードはプログラム名を"vim"とは別の名前にすることで指定できる。それは -次のようにオプションを与えたのと同じである: -ex vim -e Exモードで起動(|Ex-mode|を参照)。 *ex* -exim vim -E 改良版Exモードで起動(|Ex-mode|を参照)。 *exim* - (通常はインストールされない) -view vim -R 読み込み専用モードで起動(|-R|を参照)。 *view* -gvim vim -g GUIで起動(|gui|を参照)。 *gvim* -gex vim -eg GUIのEXモードで起動。 *gex* -gview vim -Rg GUIの読み込み専用モードで起動。 *gview* -rvim vim -Z "vim"の制限モードで起動(|-Z|を参照)。 *rvim* -rview vim -RZ "view"の制限モード。 *rview* -rgvim vim -gZ "gvim"の制限モード。 *rgvim* -rgview vim -RgZ "gview"の制限モード。 *rgview* -evim vim -y 簡易操作のVim(|-y|を参照) *evim* -eview vim -yR "evim"と同じ。読み込み専用モード。 *eview* -vimdiff vim -d 差分モードで起動|diff-mode| -gvimdiff vim -gd 差分モードで起動|diff-mode| - -これらの別名の後ろに付けられる文字は無視される。たとえばGUIで起動するのに -"gvim-5"という名前を付けることができる。もちろんその名前で実行可能なファイルが -なければならない。 - -UNIXでは通常、Vimという名前の実行可能ファイルが一つあり、それにに対して違う名 -前のリンクが用意される。使用しているシステムがリンクをサポートせず、実行ファイ -ルのコピーを幾つも作りたくないのならば、リンクの代わりにエイリアスを使うことも -できる。例: > - alias view vim -R - alias gvim vim -g -< - *startup-options* -オプション引数はどんな順番で与えても良い。一文字のオプションは一つのダッシュ -(-)の後に組み合わせる。引数"--"の後にはオプション引数を置くことはできない。 - -VMSでは全てのオプション引数は小文字であるとみなされる。大文字を指定するにはス -ラッシュを前に置く。つまり"-R"でリカバリモード、"-/R"で読み込み専用となる。 - ---help *-h* *--help* --h 使用法(ヘルプ)を表示して終了する。{Viにはない機能} - そのテキストを保存するには|info-message|を参照。 - - *--version* ---version バージョン情報を表示して終了する。出力は|:version|コマンドと一 - 緒。{Viにはない機能} - そのテキストを保存するには|info-message|を参照。 - - *--noplugin* ---noplugin プラグインを読み込まない。'loadplugins'オプションをオフにす - る。{Vi にはない} - Note: |-u|引数でもプラグインを読み込まないようにできる: - 引数 vimrcファイル プラグイン ~ - なし yes yes - -u NONE no no - -u NORC no yes - --noplugin yes no - ---startuptime {fname} *--startuptime* - 起動処理の間、経過時間のメッセージをファイル {fname} に書き出 - す。.vimrc やプラグインの読み込み、最初のファイルの読み込みに - おいて、どこで時間がかかっているかを調べるために役に立つ。 - {fname} が既に存在するときはそのファイルに追記される。 - {|+startuptime| 付きでコンパイルされたときのみ有効} - - *--literal* ---literal ファイル名を文字どおり解釈する。ワイルドカードを展開しない。 - Unixでは必要ない、Vimは常にファイル名を文字どおり解釈する(シェ - ルがワイルドカードを展開する)。 - 全てのファイル名に適用される。この引数の前に指定したものも同 - じ。 - - *-+* -+[num] 最初に編集されるファイルの"num"行目にカーソルを置いて開く。 - "num"がなかった場合には、カーソルは最終行に置かれる。 - - *-+/* -+/{pat} 最初に編集されるファイルの、"pat"を含む最初の行にカーソルを置 - いて起動する(指定可能な検索パターンについては|pattern|を参 - 照)。 - -+{command} *-+c* *-c* --c {command} 最初のファイルが読み込まれた後(加えてそのファイルに適応される - autocommandとmodelineが処理された後)に{command}が実行される。 - "command"はExコマンドとして解釈される。"command"にスペースを含 - んでいる場合には、ダブルクォートで挟まれている必要がある(これ - は使われているシェルに依存する)。例: > - vim "+set si" main.c - vim "+find stdio.h" - vim -c "set ff=dos" -c wq mine.mak -< - Note: Vimコマンドの引数として"+"か"-c"をあわせ、最大10個まで使 - うことができる。これらの引数は与えられた順番で実行される。"-S" - 引数は"-c"として同じように数える。 - {Vi は一つのコマンドしか許さない} - ---cmd {command} *--cmd* - vimrcファイルを処理する前に{command}を実行する。それ以外は - -c {command} と同じである。"-c"引数とは別に、10個まで使うこと - ができる。 - - *-S* --S {file} 最初のファイルが読み込まれた後に{file}を実行する。これは次のも - の簡単にしたものである: > - -c "source {file}" -< "-c"と混ぜて使うことができ、複数指定できる。"-c"と合わせて10個 - まで指定できる。 - {file}の先頭文字には"-"は使えない。 - {Vi にはない} - --S "-S Session.vim"と同じ。最後の引数として使われたときや、その後 - に他のオプション引数が続いたときのみこのように解釈される。 - - *-r* --r リカバリモード。ファイル名の引数なしで実行した場合には、存在す - るスワップファイルのリストが表示される。ファイルを指定すると、 - クラッシュしたセッションを復活させるために、スワップファイルが - 読み込まれる。|crash-recovery|を参照。 - - *-L* --L -rと同じ。{幾つかのバージョンのViだけにある: "List recoverable - edit sessions"(復活可能な編集セッションのリスト)のListのL} - - *-R* --R 読み込み専用モード。オプション'readonly'が、編集される全ての - ファイルに設定される。これにより、まだバッファを編集することは - できるが、偶然にファイルを上書きしてしまうようなことは防がれ - る。もしも、読み込み専用モードにいることを忘れてバッファへ変更 - を行ったとしても、":w!"のようにExコマンドに「ビックリマーク」 - を付けることで上書きすることが可能。'readonly'オプションは - ":set noro"としてオフに設定することが可能である(オプションを説 - 明した章|options|を参照)。その後の編集は読み込み専用モードでは - なくなる。実行ファイルを"view"として起動した場合は、この-R引数 - と同じ動作になる。オプション'updatecount'は10000に設定され、こ - れはスワップファイルがそう頻繁には自動更新されなくなるというこ - とである。 - - *-m* --m 変更を保存できなくする。オプション'write'がオフに設定され、 - ファイルを保存することができなくなる。オプション'write'をオン - すれば、再び保存することが可能になる。 - {Vi にはない} - - *-M* --M 変更できないようにする。オプション'modifiable'がオフに設定さ - れ、変更を加えることができなくなる。さらに、オプション'write' - がオフに設定され、ファイルを保存することができなくなる。 - 'modifiable'と'write'をオンにすれば、変更を加えて保存できるよ - うになる。 - {Vi にはない} - - *-Z* *restricted-mode* --Z 制限モード。外部シェルを実行するあらゆるコマンドの使用を不許可 - にする。これにはサスペンドであるCTRL-Zや、":sh"、フィルタリン - グ、system() 関数、バッククォートの評価、delete()、rename()、 - mkdir()、writefile()、libcall()、などが含まれる。 - {Vi にはない} - - *-g* --g VimをGUIモードで起動する。|gui|を参照。 {Vi にはない} - - *-v* --v ExをViモードで起動する。実行ファイルが"ex"や"gvim"である時にだ - け、違いが現れる。gvimでは可能ならば"GUI"ではないモードで起動 - する。 - - *-e* --e VimをExモードで起動する|Q|。実行ファイルの名前が"ex"以外の時に - 意味がある。 - - *-E* --E Vimを改良版Exモードで起動する|gQ|。実行ファイルの名前が"exim" - 以外の時に意味がある。 - {Vi にはない} - - *-s-ex* --s サイレント(もしくはバッチ)モード。Vimが"ex"で起動されるか、こ - のオプションよりも先に"-e"が付いていた場合にだけ働く。そうでな - い場合には|-s|を参照。|-s|として使うときには引数をとる。 - 端末の替わりにファイルからExコマンドを実行する場合に使用され - る。ほとんどのプロンプトとメッセージは抑制される。警告とエラー - のメッセージも抑制される。 - 次のコマンドの出力は標準出力へ表示される: - :print - :list - :number - :set オプション値を表示するため。 - 'verbose'が0以外のときにはメッセージは抑制されずに標準エラー - 出力へ表示される(デバッグ用)。 - 'term' と $TERM は考慮されない。 - Vimが停止しているようだったら"qa!<Enter>"と入力してみてほし - い。Vimがユーザーの入力を待っているときでもプロンプトは表示さ - れない。 - 初期化処理はスキップされる(このオプションが引数"-u"と一緒に使 - われた場合は除く)。 - 例: > - vim -e -s < thefilter thefile -< - *-b* --b バイナリモード。ファイルを入出力する再に<NL>だけを行のセパレー - タとして認識するようになる。オプション'expandtab'は無効化され - る。オプション'textwidth'は0に設定される。'modeline'はオフに設 - 定される。オプション'binary'がオンに設定される。これは - vimrc/exrcのファイルが読み込まれた直後、引数で与えられたファイ - ルが読み込まれるよりも前に行われる。|edit-binary|も参照。 - {Vi にはない} - - *-l* --l Lispモード。オプション'lisp'と'showmatch'をオンに設定する。 - - *-A* --A アラビア語モード。オプション'arabic'をオンに設定する。 - |+arabic|(これは|+rightleft|も含んでいる)が有効なときだけ使用 - できる。そうでないときにはVimはエラーメッセージを出力して終了 - する。 {Vi にはない} - - *-F* --F Farsi(ペルシア語)モード。'fkmap'と'rightleft'オプションをオン - に設定する。(|+rightleft|と|+farsi|有効にしてコンパイルした時 - にだけ有効。そうでない場合Vimはエラーメッセージを表示して終了 - する)。 - {Vi にはない} - - *-H* --H Hebrew(ヘブライ語)モード。オプション'hkmap'と'rightleft'をオン - に設定する。(|+rightleft|を有効にしてコンパイルした時にだけ使 - 用可。そうでない場合Vimはエラーメッセージを表示して終了する)。 - {Vi にはない} - - *-V* *verbose* --V[N] 詳細表示する。オプション'verbose'を[N]に設定する(Nを省略した場 - 合は10が設定される)。":source"が実行される度、viminfoの読み書 - きを行う度に情報が表示される。Vimの起動時と終了時の動作を調べ - るときに便利である。{Vi にはない} - 例: > - vim -V8 foobar - --V[N]{filename} - -V と同様で、さらに 'verbosefile' を {filename} に設定する。そ - の結果、メッセージは表示されずにファイル {filename} に書き出さ - れる。{filename} は数字で始まってはならない。 - 例: > - vim -V20vimlog foobar -< - *-D* --D デバッグする。スクリプトの最初のコマンドを実行するところからデ - バッグを開始する。|debug-mode| - {|+eval|が有効な場合のみ利用可能} - {Vi にはない} - - *-C* --C コンパチブルモード。オプション'compatible'をオンに設定する。 - ファイル.vimrcファイルが存在する場合にもViとの互換性を得ること - ができる。プラグインや起動時スクリプトで ":set nocompatible" - とするとこのオプションより優先されるため、起動後には - 'nocompatible'になってしまうだろう。どこで最後に設定されたかを - 調べるには次のコマンドを使う: > - :verbose set compatible? -< 'compatible' がオンになっていると動かないプラグインもあ - る。起動処理の後でこれをセットするにはこのようにする: > - vim "+set cp" filename -< |compatible-default| も参照。{Vi にはない} - - *-N* --N 非コンパチブルモード。オプション'compatible'をオフに設定する。 - ファイル.vimrcがないときや、"-u NONE" としているときに、 - 'nocompatible'(Vimの拡張を有効)にすることができる。 - |compatible-default|も参照。{Vi にはない} - - *-y* *easy* --y 簡易モード。|evim|や|eview|と同じ。'insertmode'をオンに設定し - て起動し、モードレスエディタのように振舞う。このスイッチを指定 - すると、$VIMRUNTIME/evim.vimが自動的に読み込まれ、一般的なエ - ディタと同じ操作ができるようなマッピングが設定される。 - |evim-keys|を参照。利用可能ならGUIが使用される。 - {Vi にはない} - - *-n* --n スワップファイルを使用しない。クラッシュしたときに編集していた - ファイルを復旧することはできなくなる。フロッピーディスクのよう - な非常に低速なメディアのファイルを読んだり編集したいときに有用 - である。":set updatecount=0"と設定するのと同じである。オプショ - ン'updatecount'に0より大きい値を設定することで、スワップファイ - ルの使用を有効にすることができる。例、":set uc=100"。 - NOTE: -n と -b を合わせて -nb としないこと。-nb には別の意味が - ある: |-nb| - ファイルvimrcの実行解釈の直後で、GUIが初期化される前に - 'updatecount'が0に設定される。よってファイルvimrcの中で - 'updatecount'を設定しても上書きされてしまうが、gvimrcでの設定 - は上書きされない。|startup|を参照。ディスクへのアクセスを減ら - したいのならば(ノートPCを使用している場合など)、"-n"を使用する - 替わりに、'updatetime'を設定し、'updatecount'に非常に大きい値 - を設定して、編集中のファイルを保存する時に":preserve"を利用す - ると良い。この方法だとクラッシュからの復旧の可能性を保てる。 - {Vi にはない} - - *-o* --o[N] N個のウィンドウを水平分割して開く。[N]が与えられない場合には、 - 引数で指定された全てのファイルに対して1個のウィンドウが開かれ - る。画面に十分な広さがない場合には、始めのほうの数個のファイル - だけがウィンドウを伴って表示される。逆にファイルの数よりもウィ - ンドウの数が多く指定された場合、多い分のウィンドウは空ファイル - の編集用として開かれる。 - {Vi にはない} - - *-O* --O[N] N個のウィンドウを垂直分割して開く。それ以外は|-o|と同じ。 - -oと-Oが両方指定されたときは最後に指定された方を使用する。 - {Vi にはない} - - *-p* --p[N] N 個のタブページを開く。[N] が省略されると、引数として与えられ - た各ファイルに対し1つずつタブページを開く。最大値は - 'tabpagemax' ページ(既定値は 10)である。引数よりも多くのタブペー - ジが作られる場合は、最後の数個のタブページは空ファイルを開く。 - |tabpage| も参照。 - {Vi にはない} - - *-T* --T {terminal} 端末の種類を"terminal"に設定する。これはVimがユーザの端末へ送 - るコードに影響を与える。Vimはユーザが使用している端末の種類を - 自分で判断することができるので、通常これは必要がない - (|terminal-info|を参照)。{Vi にはない機能} - - *-d* --d diffモードで起動する。|vimdiff|と同じ。 - {Vi にはない} {|+diff|が有効な場合のみ利用可能} - --d {device} Amiga専用機能。|+diff|が無効な場合のみ利用可能。|-dev|と同じよ - うに機能する。 - *-dev* --d {device} Amiga専用機能: {device}が編集用に開かれる。 - 普通、ウィンドウの位置とサイズを設定するために"-d - con:x/y/width/height"の形式で指定する。例、"-d - con:30/10/600/150"。しかしその他のAUX:のようなデバイスの編集を - 開始することにも使用できる。{Vi にはない} - *-f* --f Amiga専用機能: Vimを新しいウィンドウで起動しない。編集作業が終 - わるのを待つプログラム(メールソフトやニュースリーダ)によって - Vimが起動される時に、このオプションは使用される。 - |amiga-window|を参照。 - - 一般的なGUI: Vimを起動したプログラム(プロセス)から独立しない。 - 'f'は"foreground"を意味する。省略すると、GUI版のVimは新しいプ - ロセスへforkして、現在のプロセスは終了してしまう。gvimの編集 - セッションが終わるのを待つプログラム(メールソフトやニュース - リーダなど)には、"-f"を使うべきだろう。gvimがforkしないように - するには、自分の. gvimrcの中で'guioptions'に'f'を加えれば良 - い。 - Note: "-gf"でGUIをフォアグラウンドで実行開始できるが、"-fg"だ - と前景色の設定になってしまう。|gui-fork|参照。 - {Vi にはない} - - *--nofork* ---nofork GUI: forkしない。|-f|と同じ。 - - *-u* *E282* --u {vimrc} 初期化のためにファイル{vimrc}が読込まれる。その他の初期化はス - キップされる。|initialization|を参照。これにより特殊なマッピン - グや設定をした、特殊なモードでVimを起動することができる。これ - を簡単に使用するにはシェルのエイリアスが使えるだろう。例: > - alias vimc vim -u ~/.c_vimrc !* -< autocommandを使うことも考慮すべきである。|autocommand|を参照。 - {vimrc}に"NONE"(全て大文字)が指定された時には、設定ファイルや - 環境変数による初期化、.gvimrcによるGUIの初期化も含め、全て省略 - される。プラグインも読み込まれない。 - {vimrc}が"NORC"(全部大文字)のときは"NONE"と同じように処理され - るが、プラグインは読み込まれる。 - "-u"引数を使用すると副作用としてオプション'compatible'がオンに - 設定される。これは予期せぬ動作を引き起こすかもしれない。 - |'compatible'|を参照。 - {Vi にはない} - - *-U* *E230* --U {gvimrc} GUIがスタートする時にファイル{gvimrc}が読込まれる。その他のGUI - 初期化はスキップされる。{gvimrc}にNONEが指定された場合、初期化 - ファイルは何も読込まれない。 - 例外: システムのメニューファイルは常に読込まれる。 - {Vi にはない} - - *-i* --i {viminfo} デフォルトのviminfoの代わりにファイル{viminfo}を使用する。 - "NONE"(全て大文字)が指定された場合には、'viminfo'が指定された - り、":rv"や":wv"が使われても、viminfoは読み書きともに使用され - ない。|viminfo-file|参照。 - {Vi にはない} - - *-x* --x ファイルの読み書き時に暗号化を施す。暗号の鍵としてオプション - 'key'に設定された値を使用する。全ての書き込みは、テキストに対 - して鍵を使って暗号化を行ってから なされる。ファイルを読込む時 - には、Vimは暗号化ファイルかチェックし、自動的に鍵を聞いてくる - ので、引数'-x'は必要でない。|encryption| - - *-X* --X Xサーバと通信しない。そうして、カレントウィンドウのタイトルを - 取得したり、Xのクリップボードを使ったコピー/ペーストを使用した - りしない。端末エミュレータでVimを使用するときにXサーバとの通信 - 速度が遅い場合にそれを回避できる。 - 効果があるか確かめるには |--startuptime| を使ってみること。 - UnixかVMSで|+X11|が有効な場合のみ意味がある。 - 特定の端末を使用するときだけ通信を無効にするには、オプション - 'clipboard'を参照。 - X11 Session Management Protocol (XSMP) の処理が組み込まれてい - る場合、その通信にも大きな延滞が生じるため、無効にする。 - (例えばクライアントとサーバが通信するため)あとからXサーバとの - 通信をつなげるには|serverlist()|関数を呼び出す。ただしXSMPの処 - 理は有効にならない。 - {Vi にはない} - - *-s* --s {scriptin} スクリプトファイル{scriptin}が読込まれる。ファイルの中のキャラ - クタは、全てユーザがタイプしたものとして解釈される。エディタが - 終了する前にファイルの終端に達した場合、以降のキャラクタはキー - ボードから読込まれる。Exモード動作時には働かない、|-s-ex|を参 - 照。|complex-repeat|も参照。 - {Vi にはない} - - *-w_nr* --w {number} --w{number} オプション 'window' を {number} に設定する。 - - *-w* --w {scriptout} Vimを終了するまで、ユーザが入力した全部の文字が記録され、ファ - イル{scriptout}に書き出される。これは"vim -s"や":source!"で読 - 込まれるスクリプトファイルを作成するのに役立つ。既にファイル - "scriptout"が存在する場合には、そのファイルに追加保存する。 - |complex-repeat|も参照。 - {scriptout} は数字で始まってはならない。 - {Vi にはない} - - *-W* --W {scriptout} -wに似ているが、アペンド(追加)せずに、既にあるファイルを上書き - する。 - {Vi にはない} - ---remote [+{cmd}] {file} ... - サーバとして機能している他のVimで{file}を開く。 - この引数の前にファイルを指定することはできない。 - |--remote|を参照。 {Vi にはない} - ---remote-silent [+{cmd}] {file} ... - --remoteと同じ。ただしサーバがなくてもメッセージを出さない。 - |--remote-silent|を参照。 {Vi にはない} - ---remote-wait [+{cmd}] {file} ... - --remoteと同じ。ただしサーバが終了するまで待機する。 - |--remote-wait|を参照。 {Vi にはない} - ---remote-wait-silent [+{cmd}] {file} ... - --remote-waitと同じ。ただしサーバがなくてもメッセージを出さな - い。|--remote-wait-silent|を参照。 {Vi にはない} - ---servername {name} - Vimサーバの名前を指定する。これは通信先のサーバ名、あるいは起 - 動するVimが使用する名前である。 - |--servername|を参照。 {Vi にはない} - ---remote-send {keys} - {keys}をVimサーバに送り、終了する。 - |--remote-send|を参照。 {Vi にはない} - ---remote-expr {expr} - Vimサーバで{expr}を評価し、その結果を標準出力に出力する。 - |--remote-expr|を参照。 {Vi にはない} - ---serverlist - 稼働しているVimサーバの一覧を出力する。 - |--serverlist|を参照。 {Vi にはない} - ---socketid {id} *--socketid* - GTK+ GUIのVimのみ。GtkPlugを使用し、別アプリケーションのウィン - ドウで起動するようにする。詳細は|gui-gtk-socketid|を参照。 - {Vi にはない} - ---windowid {id} *--windowid* - Win32 GUI の Vim のみ。ウィンドウ {id} を親ウィンドウにしよう - と試みる。成功するとそのウィンドウの内側で起動する。詳しくは - |gui-w32-windowid| を参照。{Vi にはない} - ---echo-wid *--echo-wid* - GTK+ GUIのVimのみ。ウィンドウのIDを標準出力に出力する。この値 - はgvimをkpartウィジェットに埋め込むのに使用できる。出力の書式 - は: > - WID: 12345\n -< {Vi にはない} - ---role {role} *--role* - GTK+ 2 GUIのみ。メインウィンドウの役割(role)を{role}に設定す - る。ウィンドウの役割はウィンドウマネージャがウィンドウを識別し - て、ウィンドウの位置等を復元するのに使われる。この引数はログイ - ン時にセッションを復元するときに自動的に使用される。 - |gui-gnome-session|を参照。 - {Vi にはない} - --P {parent-title} *-P* *MDI* *E671* *672* - Win32のみ。親になるアプリケーションのタイトルを指定する。可能 - であればVimはそのMDIアプリケーションのウィンドウ内で起動する。 - {parent-title}が親アプリケーションのウィンドウのタイトルに使わ - れていて、明確に区別できる必要がある。 - Note: まだ簡単に実装されているだけである。全てのアプリケーショ - ンで動くわけではない。メニューは機能しない。 - --nb *-nb* --nb={fname} --nb:{hostname}:{addr}:{password} - Netbeansと接続し、エディタサーバになる。2番目の型は接続情報を - 格納したファイルを指定する。3番目の型はNetbeansに接続するため - のホスト名、アドレス、パスワードを指定する。|netbeans-run| - -実行ファイルが"view"だったならば、Vimは読込み専用モードで起動する。"view"から -"vim"へハードリンクかシンボリックリンクを作成すると便利だろう。"vim -R"とする -ことでも読込み専用モードで起動できる。 - -実行ファイルの名前が"ex"ならば、VimはExモードで起動する。これは":"コマンドだけ -しか使えないことを意味している。しかし引数"-v"が与えられれば、Vimは常にノーマ -ルモードで起動する。 - -unix互換のシステムでX11 GUIサポートが有効ならさらに多くの引数が利用可能であ -る。|gui-resources|を参照。 - -============================================================================== -2. Amiga版のVim *starting-amiga* - -VimをWorkbenchから起動する *workbench* --------------------------- - -Workbench上でアイコンを2度クリックすればVimを起動することができる。そうすると -空のバッファで起動するだろう。 - -"Project"アイコンを使用することで、1つ以上のファイルを開くことができる。アイコ -ンの"Default Tool"にはVimの実行ファイルの完全なパスを設定し、".info"ファイルの -名前には、編集するテキストファイルの名前を設定する。このアイコンを2度クリック -すると、Vimが起動してそのファイルを開く(そのファイルがあれば)。シフトキーを押 -しながらアイコンをクリックし、最後のファイルを2度クリックすることで、複数の -ファイルを開くことができる。これら全てのアイコンの"Default Tool"は同じでなけれ -ばならない。 - -Workbenchからではファイル名以外の引数は、Vimへ与えることができない。 - -Vimウィンドウ *amiga-window* ----------- - -Vimは起動されたCLIウィンドウの中で動作する。Vimが"run"や"runback"コマンド、 -あるいやWorkbenchから起動された場合には、自分自身でウィンドウを開く。 - -技術的詳細: - 新しいウィンドウを開くためにちょっとしたトリックを使う。Vimは普通のCLI - ウィンドウの中で起動されていないことを検出するとすぐに、"t:"にあるスク - リプトファイルを作成する。このスクリプトファイルにはVimを起動したのと - 同じコマンドに加えて"endcli"コマンドが含まれている。このスクリプトファ - イルは"newcli"コマンドと一緒に実行される (これが行われる時には"c:run" - と"c:newcli"コマンドが必要)。スクリプトファイルはリブートするか、手動 - で消すまで存在しつづける。この方法は":sh"と":!"コマンドが正しく機能す - る必要がある。しかしVimが-fオプション(フォアグラウンドモード)で起動さ - れた時には、この方法は使われない。Vimを-fオプションで起動した時には、 - その終了を待つからである。スクリプトのトリックを使うと、Vimを呼び出し - たプログラムはその終了を知ることができない。オプション-fはメールプログ - ラムなど編集のセッションが終わったことを 検出したい場合に、Vimを起動す - る方法として使用される。だからオプション-fが指定された時には、":sh"と - ":!"コマンドは使用することができない。 - -Vimは自動的にウィンドウのサイズを認識して対応する。Amiga DOS 1.3の元では、表示 -の更新速度を上げるために、fastfontsのプログラム"FF"の支援を受けて動作する。 - -============================================================================== -3. eVimについて *evim-keys* - -EVimはVimをモードレスエディタとして実行する。これはViらしくない発想ではある -が、Vimの操作方法を覚えられるほどには使用しない人の助けになる。ノーマルモード -のコマンドを覚えることで編集作業がより簡単になるということを利用者が感付いてく -れれば幸いである。 - -Evimでは以下のオプションが標準設定から変更される: - - :set nocompatible ViにはないVim独自の機能を使う - :set insertmode 常時挿入モードを使用する - :set hidden 非表示になったバッファを開放しない - :set backup バックアップファイルを消さない(VMS以外) - :set backspace=2 どこでもバックスペースを使用できるようにする - :set autoindent 新しい行を入力するときに自動的にインデントする - :set history=50 Exコマンドの使用履歴を50回前まで記録する - :set ruler カーソルの位置を表示する - :set incsearch 検索時、入力途中にマッチ箇所を表示する - :set mouse=a 全てのモードでマウスを使う - :set hlsearch 検索した文字を強調表示する - :set whichwrap+=<,>,[,] <Left>と<Right>を使った左右の移動で行を跨ぐ - :set guioptions-=a 非Unixのみ。選択時に自動的にコピーしない - -キーマッピング: - <Down> 実際の行ではなく表示された行の単位で移動する - <Up> 同上 - Q "gq"コマンドで文章整形する。 - <BS> ビジュアルモードで選択範囲を削除する - CTRL-X ビジュアルモードで選択範囲を切り取ってクリップボードに - コピーする - <S-Del> 同上 - CTRL-C ビジュアルモードで選択範囲をクリップボードにコピーする - <C-Insert> 同上 - CTRL-V クリップボードから貼り付ける(どのモードでも) - <S-Insert> 同上 - CTRL-Q 本来のCTRL-Vの機能 - CTRL-Z 元に戻す(undo) - CTRL-Y やり直し(redo) - <M-Space> システムメニューを表示 - CTRL-A 全てを選択する - <C-Tab> 次のウィンドウへ。CTRL-W w と同じ - <C-F4> ウィンドウを閉じる。CTRL-W c と同じ - -追記: -- ":behave mswin"が使用される|:behave| -- 構文強調表示が有効になる -- ファイルタイプ別の機能が有効になる。ファイルタイプ用のプラグインやインデント - が使用される。 -- テキストファイルでは'textwidth'が78に設定される - -ヒント: ノーマルモードのコマンドを連続して使用するにはCTRL-Lを使用する。 -|i_CTRL-L| - -============================================================================== -4. 初期化 *initialization* *startup* - -このセクションはVimの非GUIバージョンについて書く。GUIをスタートさせた時の追加 -の初期化は|gui-fork|を参照。 - -スタート時に、Vimは環境変数とファイルを調べ、然るべく値を設定する。Vimはこの順 -序で取り掛かる。 - -1. オプション'shell'と'term'を設定する *SHELL* *COMSPEC* *TERM* - 環境変数SHELLが存在するならば、オプション'shell'を設定するのに使われ - る。MS-DOSとWin32ではSHELLが設定されていない場合COMSPECの値が使用され - る。 - 環境変数TERMが存在するならば、オプション'term'を設定するのに使われる。 - しかし、後で GUI を開始するときに 'term' は変更される(下のステップ 8 - を参照。 - -2. 引数を処理する - Vimを起動するときに指定したオプション引数やファイル名を調べる。指定さ - れたファイルのバッファを作成する(まだ読み込まない)。 - 引数 |-V| を使うと、初期化処理のデバッグ用にこれ以降で起こることを表示 - したりログに書き出したりできる。 - -3. 環境変数とファイルのExコマンドを実行する - 環境変数の値は一つのExコマンドラインとして読まれるので、複数のコマンド - を実行したい時には'|'か"<NL>"で区切る必要がある。 - *vimrc* *exrc* - "vimrc"ファイルは初期化コマンドを含んだファイルである。vimrcファイルは - 一行ずつExコマンドとして実行される。"exrc"とほぼ等価である。それらは同 - じタイプのファイルであるが、"exrc"が常にViによって使われるのに対して、 - "vimrc"はVim特有のものである。|vimrc-intro|も参照。 - - 個人の初期化ファイルの推奨される配置場所: - Unix $HOME/.vimrc - OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc) - MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc - Amiga s:.vimrc or $VIM/.vimrc - - Vimが"-u filename"で起動された場合、デフォルトのvimrcの代わりに - "filename"が使われる。続く初期化処理の4.までがスキップされる。 - "vim -u NORC"によりファイルを読み込むことなくこれらの初期化を省略する - ことができる。"vim -u NONE"を使用するとさらにプラグインも読み込まな - い。|-u| - - 起動引数"-s"によりVimがExモードで起動されたならば、続く4.までの初期化 - 処理がスキップされる。オプション"-u"だけが処理される。 - *evim.vim* - a. Vimを|evim|や|eview|として、あるいは|-y|引数を指定して起動すると - $VIMRUNTIME/evim.vimが実行される。 - *system-vimrc* - b. Unix、MS-DOS、MS-Windows、OS/2、VMS、Macintosh、RISC-OSそしてAmigaで - は、システムのvimrcファイルが初期化のために読み込まれる。このファイル - のパスは":version"コマンドによって確認できる。普通は"$VIM/vimrc"であ - る。Note: このファイルは'compatible'モードであっても読み込まれる。 - 'compatible'の自動リセットはこれが終わった後に行われることになってい - る。必要ならば":set nocp"コマンドを追加する。 - Macintosh では $VIMRUNTIME/macmap.vim が読み込まれる。 - - *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* *$MYVIMRC* - c. 初期化のために4つの場所が検索される。最初に見つかったものが使用され、 - 残りは無視される。ここまでで環境変数 $MYVIMRC が設定されていなく、 - VIMINIT を使っていないなら、$MYVIMRC に最初にみつかったファイルが設定 - される。 - - 環境変数VIMINIT(|compatible-default|も参照) (*) - その内容はExコマンドとして解釈される。 - - ユーザvimrcファイル: - "$HOME/.vimrc" (for Unix and OS/2) (*) - "s:.vimrc" (for Amiga) (*) - "home:.vimrc" (for Amiga) (*) - "$VIM/.vimrc" (for OS/2 and Amiga) (*) - "$HOME/_vimrc" (for MS-DOS and Win32) (*) - "$VIM/_vimrc" (for MS-DOS and Win32) (*) - Note: Unix, OS/2そしてAmigaでは、".vimrc"がなかった場合には、 - MS-DOS互換のファイルシステムを使用することを考え、"_vimrc"も試 - みられる。MS-DOSとWin32では"_vimrc"を探したあとで、ロングファ - イルネームの仕組みを使用して".vimrc"が探される。 - Note: MS-DOSとWin32では"$HOME"がまず検査される。"_vimrc"と - ".vimrc"のどちらもない場合には、"$VIM"が調べられる。$VIMが設定 - されていない場合については|$VIM|参照。 - - 環境変数EXINIT。 - その内容はExコマンドとして解釈される。 - - ユーザのexrcファイル。vimrcと同じだが、vimrcがexrcによって置き換え - られている。しかし ".exrc" と "_exrc" のどちらか1つだけが使われる。 - これはシステムによる。(*)の注釈は適用されない。 - - d. 'exrc'オプションがオン(初期状態ではオフ)の場合、現在のディレクトリで4 - つのファイルが検索される。最初に見つかったものだけが使用され、残りは無 - 視される。 - - The file ".vimrc" (for Unix, Amiga and OS/2) (*) - "_vimrc" (for MS-DOS and Win32) (*) - - The file "_vimrc" (for Unix, Amiga and OS/2) (*) - ".vimrc" (for MS-DOS and Win32) (*) - - The file ".exrc" (for Unix, Amiga and OS/2) - "_exrc" (for MS-DOS and Win32) - - (*) このファイルを使用するか環境変数を使用した場合、自動的に'compatible' - オプションがオフに設定される。|compatible-default|を参照。 - -4. プラグインスクリプトを読み込む *load-plugins* - 次のコマンドと同じことを実行する: > - :runtime! plugin/**/*.vim -< オプション'runtimepath'に指定された各ディレクトリのサブディレクトリ - "plugin"にある拡張子が".vim"となっているファイルを実行する(各ディレク - トリごとに名前順で実行される)。サブディレクトリに対しても再帰的に検索 - される。 - 次の場合にはプラグインを読み込まない: - - vimrcファイルでオプション'loadplugins'がオフに設定された。 - - 起動時の引数に|--noplugin|が指定された。 - - 起動時の引数に"-u NONE"が指定された。 - - |+eval|の機能を無効にしてVimをコンパイルした。 - Note: 引数に"-c set noloadplugins"と指定しても意味がない。このコマンド - はこの時点ではまだ実行されない。"--cmd 'set noloadplugins'" とすればよ - い。|--cmd| - -5. 'shellpipe'と'shellredir'を設定する - それ以前に設定されていなければ、'shell'オプションに従って'shellpipe'と - 'shellredir'オプションが設定される。つまり自分で設定しなくても、Vimが - 適切な'shellpipe'と'shellredir'の値を設定してくれる。 - -6. "-n"コマンド引数が使用されていたら、'updatecount'を0に設定する - -7. バイナリオプションを設定する - Vimの起動時に"-b"フラグが与えられた場合、この時点でバイナリ編集用のフ - ラグが設定される。|-b|参照。 - -8. GUIの初期化を行う - "gvim"として起動された場合、GUIの初期化が行われる。|gui-init|参照。 - -9. viminfoファイルを読み込む - 'viminfo'オプションが空でなければ、viminfoファイルが読み込まれる。 - |viminfo-file|参照。 - -10. quickfixファイルを読み込む - Vimに"-q"フラグが与えられた場合、quickfixファイルが読み込まれる。これ - に失敗するとVimは終了する。 - -11. 全てのウィンドウを開く - |-o|フラグが与えられた場合、ウィンドウが開く(しかしまだ表示されない)。 - |-p|フラグが与えられた場合、タブページが作られる(しかしまだ表示されな - い)。 - スクリーンが切り替えられると、描画が始まる。 - "-q"フラグがVimに与えられた場合、最初のエラーにジャンプする。全ての - バッファがロードされる。 - -12. スタートアップコマンドが実行される - "-t"フラグがVimに与えられた場合、タグにジャンプする。 - |-c|と|+cmd|引数で与えられたコマンドが実行される。 - スタートフラグがリセットされ、has("vim_starting") がゼロを返すようにな - る。 - 'insertmode'オプションがセットされていると、インサートモード入る。 - |VimEnter|のautocommandが実行される。 - -初期化のヒント: - -スタンダードセットアップ: -全ての編集セッションに有効な、デフォルト設定とキーマッピングを設定するvimrc -ファイルを作成する。それを既に3bで述べた位置に置く: - ~/.vimrc (Unix and OS/2) - s:.vimrc (Amiga) - $VIM\_vimrc (MS-DOS and Win32) -Note vimrcファイルを作るとデフォルトで'compatible'オプションがオフに設定され -る。|compatible-default|参照。 - -ローカルセットアップ: -特定のディレクトリだけにおいて編集時に必要になるコマンドを vimrcファイルに書 -き、そのディレクトリに".vimrc" (MS-DOSとWin32は"_vimrc")という名前で置く。 -NOTE: Vimに、これらのファイルを見るように指定するには、'exrc'オプションをオン -にする必要がある。|trojan-horse|(トロイの木馬)も参照。 - -システムセットアップ: -これは複数人で使うUNIXシステムを管理し、全員のデフォルト設定を行いたい時に適用 -される。デフォルト設定とキーマッピングを行うコマンドをvimrcファイルに記述し、 -":version"コマンドで表示される場所に置く。 - -Vimの現在状態をファイルに保存する: -オプションの値を変えたときや、キーマッピングを作成した時には、それらを後で再利 -用するためにvimrcファイルに保存したいだろう。現在の設定状態をファイルに保存す -るためには|save-settings|を参照。 - -Viユーザの設定の問題の回避: -Viは環境変数EXINITとファイル"~/.exrc"を初期化に使用する。もし(Vimの設定が)Viに -干渉して欲しくないならば、それらを使う替わりにVIMINITとvimrcを使用する。 - -Amigaの環境変数: -Amigaには2種類の環境変数が存在する。1つはDOS 1.3(かそれ以上)のsetenvコマンド -で、これはVimによって認識される。AmigaDos 1.3のマニュアルを参照。古いManxのSet -コマンド(バージョン5.0以前)の環境変数は、認識されない。 - -MS-DOSの行区切り文字: -MS-DOS風(MS-DOS自信、Win32、そしてOS/2)では、全てのvimrcファイルは行区切文字と -して<CR> <NL>を使用していると仮定する。<NL>だけを行区切文字として持つファイル -や、":map xx yy^M"のような設定のファイルを使う場合、問題を引き起こす。末尾の^M -は無視されてしまうだろう。 - - *compatible-default* -Vim が起動すると、オプション 'compatible' がオンに設定される。これは初期化時に -使用される。ユーザの vimrc ファイルが見つかるか、現在のディレクトリに vimrc が -見つかるか、もしくは環境変数 VIMINIT が設定されている場合にはすぐに、 -'nocompatible' が設定される。これには副作用があって、設定が変更されてしまうオプ -ションがある('compatible' 参照)。しかしその時点でユーザが値を設定していないオ -プションだけが変更される。これは Vim の起動時に 'compatible' が設定された場合 -と同様である。Note: これはシステムの vimrc ファイルが存在する場合や、コマンド -ライン引数 |-u| つきで起動されたときは起こらない。gvimrc に対しても同様である。 -最初に見つかった vimrc、gvimrc が $MYVIMRC、$MYGVIMRC に設定される。 - -'compatible' を .vimrc で設定すると副作用が発生する。マッピングは見つかった時 -点で解釈されるので、"<CR>"のようなものを使う時に違いが生じる。もしもマッピング -が 'compatible' の値に依存している場合、そのマッピングを定義する前に -'compatible' を設定する。 - -以上の振る舞いは次の方法で無効にすることができる: -- コマンドライン引数に"-N"を与えた場合、vimrcファイルが存在しなくても - 'nocompatible'が使用される。 -- コマンドライン引数に"-C"が与えられた場合、vimrcが存在しても'compatible'が使 - 用される。 -- 引数"-u {vimrc}"が使用された場合、'compatible'が使われる。 -- 実行ファイルの名前が"ex"で終わっていた場合、"-C"引数が与えられたのと同様に働 - く: vimrcファイルが存在しても'compatible'が使用される。これは"ex"としてVimが - 起動された時にはVimは"ex"のように振舞うようにするためである。 - -トロイの木馬を回避する: *trojan-horse* -現在のディレクトリにある"vimrc"や"exrc"を読み込むときに、'secure'オプションを -設定することで、安全性のために幾つかのコマンドを無効にすることができる。タグ -ファイル内のコマンドを実行する際にも常にこれが行われる。そうでないと他人が作成 -した悪意を持ったコマンドを、偶然実行してしまう可能性がある。使用不可になるコマ -ンドは、シェルを起動するものと、ファイルに書き込むものと、そして":autocmd"であ -る。":map"コマンドは表示され、どのようなマッピングがなされたか確認することがで -きる。 - ローカルなvimrcファイル内で全てのコマンドを実行したい場合には、EXINIT -かVIMINIT環境変数か、グローバルな"exrc"もしくは"vimrc"ファイルで'secure'オプ -ションをオフに設定する。現在のディレクトリにある"vimrc"と"exrc"からは、理由は -明らだが、これは設定できない。 - UNIXシステムでは、vimrcファイルの所有権がユーザにないときだけ'secure' -が適用される。警告: vimrcかexrcを含むアーカイブを展開したときには、そのファイ -ルはあなた自身のものになる。そこには安全性保護などない。Vimを起動する前に現在 -のディレクトリにvimrcファイルがないかチェックするか、'exrc'オプションをオフに -設定したほうが良い。幾つかのUNIXシステムでは一般ユーザがファイルに"chown"を行 -うことを許しているものがある。これは別のユーザが悪意に満ちたvimrcを作成し、所 -有者を貴方にすることを可能にしている。注意されたし! - タグサーチコマンドを使う時には、実行されるサーチコマンド(タグファイル -の各行の最後の部分)は常に安全なモードで行われる。これは現在のディレクトリにあ -るvimrc/exrcからコマンドが実行されるのと、ちょうど同じように働く。 - - *slow-start* -Vimの起動に時間がかかる場合は |--startuptime| 引数を使って原因を探すことができ -ます。よくある原因としては次のようなものがあります: -- UnixでGUIやX11を有効にしている場合(":version"の出力で"+GUI"と"+X11"をチェッ - ク)、共有ライブラリをロードしX11サーバに接続する必要がある。GUIとX11を無効に - してコンパイルしたバージョンを試して欲しい。これにより実行ファイルが小さくも - なるだろう。 - CUI端末でVimを起動するときの引数に|-X|を指定するとXサーバと接続しないように - できる。 -- "viminfo"を使用している場合、viminfoファイルを読み込むのに少し時間がかか - る。viminfoが原因ならば一時的にviminfoを無効にすることによって確認することが - できる(Vimを引数"-i NONE"で起動する。|-i|)。":set viminfo='20,<50,s10"と設定 - して、レジスタに保存される行数を減らしてみるのも良い。 - |viminfo-file|. - - *:intro* -ファイル名を与えずにVimを起動した場合、(Vimのことを知らない人に向けて)紹介メッ -セージが表示される。そのメッセージはなんらかの操作によって画面が再描画されると -すぐに消される。もう一度メッセージをみるには、":intro"コマンドを使用する(表示 -するスペースがなければ一部だけが表示される)。起動時に紹介メッセージを表示しな -いようにするには'shortmess'に'I'フラグを追加する。 - - *info-message* -起動引数に|--help|や|--version|を指定するとVimはメッセージを出力して終了する。 -通常はそのメッセージは標準出力に送られるので、リダイレクトしてファイルに書き込 -むことができる: > - - vim --help >file - -Vimでその出力を取り込むには: > - - :read !vim --help - -gvimは標準出力と標準エラー出力が端末に繋がってないときに、自身がデスクトップか -ら起動され、メッセージを出力する端末がないものと判断する。このせいで上記の -":read"コマンドを使用した例は使えない。使用できるようにするには'shellredir'を -標準設定の">&"から">"へ変更する: > - - :set shellredir=> - :read !gvim --help - -しかしこのようにしてもgvimが標準出力を使用しないようなシステムでは機能しない。 - -============================================================================== -5. $VIM と $VIMRUNTIME - *$VIM* -環境変数の"$VIM"は、設定ファイル".vimrc"のような、Vimが使用するさまざまなファ -イルの置き場所を見つけるために利用される。"$VIM"の値はシステムに依存する。 -|startup|を参照。 - -全てのユーザが環境変数$VIMを設定しなくてすむように、Vimは次の順番で$VIMの値を -決定する: -1. 環境変数$VIMが定義されていればそれを使う。$VIMを定義してVimが使用するファイ - ルをそのディレクトリから探し出すようにできる。例: > - setenv VIM /home/paul/vim -2. 'helpfile'が問題のある環境変数を含んでいなければその値を使う(標準設定は - "$VIMRUNTIME/doc/help.txt"であり、これはニワトリと卵の問題を含んでいる)。 - ファイル名("help.txt"など)の部分は取り除かれる。そしてディレクトリ名の最後 - が"doc"、"runtime"、"vim{version}"(例えば"vim54")、のどれかならそれも取り除 - かれる。 -3. MSDOS、Win32、OS/2、ではVimの実行可能ファイルがあるディレクトリを使用する。 - ディレクトリ名の最後が"/src"ならそれは取り除かれる。配布されているVim一式 - の.zipファイルをあるディレクトリに展開し、検索パスを調整して使っているよう - なら便利である。ディレクトリ名の最後が"runtime"か"vim{version}"(例えば - "vim54")ならそれは取り除かれる。 -4. Unixではコンパイル時に指定したインストール先のディレクトリを使用する - (":version"の出力を見て確認できる)。 - -このうちのどれかが使用できるならVimは環境変数$VIMを設定する。あとからその値を -変更するには":let"コマンドを次のように使う: > - :let $VIM = "/home/paul/vim/" -< - *$VIMRUNTIME* -環境変数の"$VIMRUNTIME"は、ヘルプファイルや構文強調表示の定義ファイルのよう -な、Vimが使用するさまざまな支援ファイルの置き場所を見つけるために使用される。 -例えば、主要なヘルプファイルは通常は"$VIMRUNTIME/doc/help.txt"である。 -普通はユーザが自分で$VIMRUNTIMEを設定せずに、Vimに設定させる。Vimは次の順番で -$VIMRUNTIMEの値を探す: -1. 環境変数$VIMRUNTIMEが設定されていればそれを使う。ランタイムファイルを特殊な - 場所に置くときに設定する。 -2. "$VIM/vim{version}"ディレクトリがあればそれを使う。{version}はVimのバージョ - ン番号から'-'や'.'を除いた物である。例えば"$VIM/vim54"。これは$VIMRUNTIMEと - して一般的な値である。 -3. "$VIM/runtime"ディレクトリがあればそれを使う。 -4. $VIMの値を使う。これは古いバージョンとの互換性のためである。 -5. オプション'helpfile'が設定されていて'$'を含んでいないとき、その値を使用す - る。最後の"doc/help.txt"は取り除かれる。 - -Unixでコンパイル時に$VIMRUNTIMEの初期値を設定した場合(":version"の出力をみて確 -認できる)、2から4は無視される。そして5を試したあとにコンパイル時に設定した値が -使用される。つまり$VIMの値を使わずにコンパイル時に設定した値を使用するというこ -とである。これは$VIMが"/etc"でランタイムファイルが"/usr/share/vim/vim54"にある -ような場合に便利である。 - -このうちのどれかが使用できるならVimは環境変数$VIMRUNTIMEを設定する。あとからそ -の値を変更するには":let"コマンドを次のように使う: > - :let $VIMRUNTIME = "/home/piet/vim/vim54" - -シェル内で $VIMRUNTIME の値が必要な場合(例えば、ヘルプファイルを grep するスク -リプトなど)は、次のようにすれば得られる: > - - VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' ` - -============================================================================== -6. サスペンド *suspend* - - *iconize* *iconise* *CTRL-Z* *v_CTRL-Z* -CTRL-Z ":stop"のようにVimをサスペンドする。 - ノーマルモードとビジュアルモードで動作する。挿入モード - とコマンドラインモードでは、CTRL-Zは通常のキャラクタ文 - 字として入力・挿入される。ビジュアルモードで使用したと - きはサスペンドから復帰するとノーマルモードになる。 - Note: CTRL-Z がアンドゥになる場合は |mswin.vim| を参照。 - - -:sus[pend][!] or *:sus* *:suspend* *:st* *:stop* -:st[op][!] Vimをサスペンドする。 - 'autowrite'がオンのときに'!'を付けなかったときには、 - ファイル名を持つ未保存のバッファは全て保存される。 - '!'を付けたときや、'autowrite'がオフのときには、未保存 - のバッファは保存されないので、後でVimをフォアグラウン - ドに戻すのを忘れてはならない。 - -GUIモードでは、サスペンドはgvimのアイコン化として実装されている。Windows 95/NT -では、gvimは最小化される。 - -多くのUNIXシステムでは、VimをCTRL-Zでサスペンドすることが可能である。これは -ノーマルモードとビジュアルモードにおいて有効である(次の章|vim-modes|を参照)。 -Vimを再びフォアグラウンドに戻せば、続きの作業を行うことができる。それ以外のシ -ステムでは、CTRL-Zは新しいシェルをスタートさせる。これはコマンド":sh"と同じで -ある。この場合、シェルを終了させればVimで続きの作業を行うことができる。 -訳注: |vim-modes|に何がある? - -X-windowsではVimをサスペンドするとセレクションの所有権が失われる。つまり選択し -ていた内容を他のアプリケーションにコピーすることができない(そうしないとVimが停 -止しているのでセレクションを得ようとしたプログラムがフリーズしてしまう)。 - -============================================================================== -7. 設定の保存 *save-settings* - -多くの人はvimrcファイルを手作業で編集しているだろう。この機能はそのような人に -優れた利便性を提供する。vimrcファイルを自動的に作成するコマンドが用意されてい -て、作成したファイルをそのまま、もしくは一部分だけをコピーして使用することがで -きる。 - - *:mk* *:mkexrc* -:mk[exrc] [file] 現在のキーマッピングと変更されているオプションを - [file]に保存する( [file]を省略するとカレントディレクト - リの".exrc"に保存される)。 [file]がすでにあるときには - 保存しない。 {Vi にはない} - -:mk[exrc]! [file] 現在のキーマッピングと変更されているオプションを - [file]に保存する( [file]を省略するとカレントディレクト - リの".exrc"に保存される)。 [file]がすでにあるときには - 上書き保存する。 {Vi にはない} - - *:mkv* *:mkvimrc* -:mkv[imrc][!] [file] ":mkexrc"と同じだが [file]を省略したときにカレントディ - レクトリの".vimrc"に保存する。コマンド":version"もファ - イルに書き込まれる。 {Vi にはない} - -これらのコマンドは":map"コマンドや":set"コマンドをファイルに書き込む。書き込ん -だコマンドを実行するとキーマッピングやオプションが現在と同じように設定される。 -オプションの'columns'、'endofline'、'fileformat'、'key'、'lines'、'modified'、 -'scroll'、'term'、'textmode'、'ttyfast'、'ttymouse'は端末やファイルに依存する -ため含まれない。Note: オプションの'binary'、'paste'、'readonly'が含まれるが、 -これは必ずしも望むような動作ではないかもしれない。 - -マッピングに特殊なキーが使われているときは、マッピングが正しく解釈されるよう -に、オプション'cpoptions'が一時的に初期値に戻される。Viとの互換性はなくなる -が、別の端末でもそのマッピングを使用できるようになる。 - -グローバルなマッピングだけが保存される。バッファローカルなマッピングは保存され -ない。 - -一般的な方法は、デフォルトの".vimrc"ファイルを使い、幾つかの":map"や":set"コマ -ンドを変更してそれを保存するというものである。 - -一般的な方法は、デフォルトの".vimrc"ファイルを使い、":map"や":set"コマンドで設 -定を変更し、それをファイルに保存するというものである。まず -":source ~piet/.vimrc.Cprogs"のようなコマンドでデフォルトの".vimrc"を読み込 -み、実際に設定を変更してから、":mkvimrc!"を使ってカレントディレクトリに設定を -保存する。もしもこのファイルをデフォルトの.vimrcにしたいならば、UNIXではホーム -ディレクトリへ、Amigaならばs:へ、MS-DOSならば$VIMディレクトリへそのファイルを -移動する。オートコマンド|autocommand|やモードライン|modeline|も、同じ方法を -使って設定することができる。 - - *vimrc-option-example* -vimrcにオプションの設定を1つだけ加えるには次のようにする: -1. Vimでvimrcファイルを開く。 -2. 期待どおりになるようにオプションを設定する。例えば、'guifont'を設定していろ - んなフォントを試す。 -3. オプションを設定する行を追加する。値を入力するのに'='レジスタを使用する。 - 例えば、オプション'guifont'の設定を加えるには: > - o:set guifont=<C-R>=&guifont<CR><Esc> -< [<C-R>はCTRL-R、<CR>はエンターキー、<Esc>はエスケープキー] - 特別な文字(特にスペース)はエスケープする必要がある。 - -Note: .vimrcファイルを作成するときにはオプション'compatible'が持つ副作用の影響 -に注意する必要がある。|'compatible'|を参照。 -副作用を防ぐため、":mkvimrc"、":mkexrc"、":mksession"は最初にオプション -'compatible'の設定を出力する。 - -============================================================================== -8. ビューとセッション(Views and Sessions) *views-sessions* - -ユーザーマニュアルの|21.4|と|21.5|で簡単に紹介されている。 - - *View* *view-file* -ビューとは、あるウィンドウに適用された設定の集合である。ビューを保存しておい -て、あとからそれを復元することで、開いていたテキストをまた同じように表示するこ -とができる。ウィンドウに関連したオプションやマッピングも復元されるので、ビュー -を保存したときと同じ状態で作業を再開することができる。 - - *Session* *session-file* -セッションとは、全てのウィンドウのビューとグローバルな設定のことである。セッ -ションを保存しておいて、あとからそれを復元することで、各ウィンドウのレイアウト -を元に戻すことができる。セッションを利用してすばやくプロジェクト(作業単位)を切 -り替えることが可能で、そのプロジェクトで開いていたファイルを自動的に開くことが -できる。 - -ビューとセッションはviminfoファイルを拡張した便利な機能である。ビューとセッ -ションをviminfoファイル(|viminfo-file|)と併用することで全ての情報を記録するこ -とができる。 - -保存しておいたビューやセッションを素早く再開するには引数|-S|を使う: > - vim -S Session.vim -< -これら全ては {Vi にはない} 機能である。{|+mksession|が有効な場合のみ利用可能} - - *:mks* *:mksession* -:mks[ession][!] [file] 現在のセッションを復元するためのVimスクリプトを作成す - る。 - [!]を付けたときはファイルを上書保存する。 - [file]を省略したときは"Session.vim"に保存する。 - -":mksession"の出力は":mkvimrc"の出力に似ているが、さらにいくつかのコマンドが追 -加されている。どのコマンドが出力されるかはオプション'sessionoptions'に依存す -る。保存したファイルは、コマンド":source"で実行すると次の効果がある: -1. 'sessionoptions'に"options"が含まれているときは、グローバルなマッピングとオ - プションを復元する。スクリプトローカルなマッピングは復元されない。 -2. 'sessionoptions'に"globals"が含まれているときは、大文字で始まって1つ以上の - 小文字を含む名前を持ったグローバルな変数を復元する。 -3. 現在読み込まれているバッファを全て開放する。 -4. 'sessionoptions'に"curdir"が含まれているときは、カレントディレクトリを復元 - する。あるいは、'sessionoptions'に"sesdir"が含まれているときは、カレント - ディレクトリをセッションファイルが保存されているディレクトリに変更する。 -5. 'sessionoptions'に"winpos"が含まれているときは、GUIウィンドウの位置を復元す - る。 -6. 'sessionoptions'に"resize"が含まれているときは、スクリーンのサイズを復元す - る。 -7. 'sessionoptions'に"buffers"が含まれているときは、バッファリストと各バッファ - におけるカーソルの位置を復元する。隠れ(hidden)バッファや開放済み(unloaded) - バッファも含めて、全てのバッファを復元する。"buffers"が含まれていないとき - は、ウィンドウに表示されているバッファのみが復元される。 -8. 全てのウィンドウとそのレイアウトを復元する。'sessionoptions'に"help"が含ま - れているときは、ヘルプウィンドウも復元する。'sessionoptions'に"blank"が含ま - れているときは、無名のバッファを編集していたウィンドウも復元する。 - 'sessionoptions'に"winsize"が含まれていて、ヘルプウィンドウや無名バッファの - ウィンドウが除外されていないときは、ウィンドウのサイズも復元する(スクリーン - サイズに比例する)。"winsize"が含まれていないときは、ウィンドウは妥当なサイ - ズになる。 -9. 各ウィンドウのビューを|:mkview|の機能と同じように復元する。しかし - 'viewoptions'ではなく'sessionoptions'が使われる。 -10. セッションファイルと同じ名前で最後が"x.vim"(eXtraのx)という名前のファイル - があればそのファイルを実行する。この仕組を使ってセッションに関連した処理や - 設定、例えばGUIのメニューを作成するなど、を行うことができる。 - 訳注:セッションファイルがSESSION.vimならSESSIONx.vimが実行される。 - -セッションを復元すると、内部変数の"v:this_session"(|this_session-variable|)を -使って現在のセッションの名前(フルパス)を利用できる。 -それを利用したマッピングの例: > - :nmap <F2> :wa<Bar>exe "mksession! " . v:this_session<CR>:so ~/sessions/ -これは現在のセッションを保存してから、別のセッションを開こうとするものである。 - -'sessionoptions' から "tabpages" が除かれていない限り、セッションはすべてのタ -ブページを含む。|tab-page| - -セッションファイルが読み込まれると、自動コマンドイベント |SessionLoadPost| が -発生する。 - *SessionLoad-variable* -セッションファイルを読み込んでいる間、グローバル変数 SessionLoad は 1 になる。 -プラグインはこれを使ってイベント SessionLoadPost が発生するまで、なんらかの作 -業を後回しにすることができる。 - - *:mkvie* *:mkview* -:mkvie[w][!] [file] 現在のウィンドウの状態を復元するためのVimスクリプトを - 作成する。 - [!]を付けたときはファイルを上書保存する。 - [file]を省略したり、1から9の数字を指定したときは、 - 'viewdir'に指定したディレクトリに適切な名前で保存され - る。'viewdir'に指定したディレクトリがないときには、そ - のディレクトリも作成される。 - [file]を省略、もしくは数字を指定した場合は、常に上書き - 保存される。そして、ビューを復元するときには - |:loadview|を使用する。 - [file]にファイル名を指定すると、編集を再開するためのコ - マンドがそのファイルに保存される(この場合は'viewdir'は - 使われない)。 - -":mkview"の出力は次の項目を含んでいる: -1. ウィンドウで使用している引数リストの復元する。グローバルな引数リスト使って - いるときにはそれが使用される。 - 引数リストのインデックスも復元される。 -2. ウィンドウで編集していたファイルを開く。編集していたファイルがなければ、空 - のウィンドウが作成される。 -3. 'viewoptions'が"localoptions"を含んでいるときは、そのバッファやウィンドウに - 特有な(ローカルな)、マッピング、短縮(abbreviations)、オプション、を復元す - る。セッションの一部としてビューを保存するときに、'sessionoptions'に - "options"が含まれているときは、オプションのグローバルな値とローカルな値が両 - 方保存される。 -4. 'viewoptions'が"folds"を含んでいるときは、手作業で設定した折畳みを復元す - る。折畳みの開閉状態も復元する。 -5. ファイルにおけるカーソルとスクロールの位置を復元する。閉じた折畳みがあると - うまく機能しない。 -6. ローカルなカレントディレクトリを復元する。グローバルなカレントディレクトリ - と違っている場合のみ。 -訳注: |current-directory| - -Note: ビューとセッションは完璧ではない: -- 全てを復元するわけではない。例えば、関数、オートコマンド、":syntax on"、など - は含まれない。レジスタやコマンドラインの履歴などは、ビューやセッションではな - く、viminfoに保存される。 -- グローバルなオプションの設定は、その値を初期設定から変更していた場合のみ保存 - される。現在の設定が初期設定とは違うときにセッションを復元しても、初期設定に - は戻らない。しかしながら、ローカルなオプションは初期設定に戻される。 -- 既存のマッピングは警告なく上書きされる。そのようなときはよく分からないエラー - が発生するだろう。 -- 手動で設定した折畳みや、その開閉状態を復元すると表示が乱れることがある。それ - はビューを保存してから復元する間に、編集していたファイルを変更した場合であ - る。 -- Vimスクリプトはまったくもって効率的ではない。しかしそうは言っても、自分でコ - マンドを再入力するよりは断然早い。 - - *:lo* *:loadview* -:lo[adview] [nr] 編集中のファイルに関連したビューを読み込む。 [nr]を省 - 略すると、":mkview"で保存したビューが読み込まれる。 - [nr]を付けた場合は、":mkview [nr]"で保存したビューが読 - み込まれる。 - -":mkview"と":loadview"の組は、1つのファイルに対して全部で10コのビューを管理で -きる。ビューは'viewdir'で指定したディレクトリに保存される。ビューはファイル名 -を利用して管理されている。そのため、ファイルの名前を変更したり、(シンボリック) -リンクファイルを使ってアクセスした場合は、対応するビューを見つけることができな -い。 - -たまには'viewdir'を綺麗に掃除するといいだろう。 - -*.cファイルを編集するときにビューを自動的に保存、復元するには: > - au BufWinLeave *.c mkview - au BufWinEnter *.c silent loadview - -============================================================================== -9. viminfoファイル *viminfo* *viminfo-file* *E136* - *E575* *E576* *E577* - -いったんVimを終了させ、後に再び起動する時には、通常多くの情報が失われてしま -う。viminfoファイルは終了する時の情報を保存しておくのに使用され、それにより再 -起動した時には同じ状態で編集セッションを続けることができる。 - -ユーザーマニュアルの|21.3|で簡単に紹介されている。 - -viminfoファイルにはこんなものを記憶できる: -- コマンドラインの履歴 -- 検索文字列の履歴 -- 入力(|input()|)の履歴 -- レジスタの内容 -- 複数のファイルのマーク -- ファイルの中の位置を指し示すマーク -- 最後の検索/置換パターン('n'と'&'のため) -- バッファのリスト -- グローバル変数 - -コンパイル時に|+viminfo|機能が無効にされていたら、viminfoファイルはサポートさ -れない。 - -セッションファイルも使用することができる。viminfoファイルは「している仕事」に -依存しない、という点で異なる。通常viminfoファイルは一つしか存在しない。セッ -ションファイルは、ある特定の編集作業の状態を保存するのに使う。セッションファイ -ルは、作業しているプロジェクト毎に複数作成することが可能である。Viminfoもセッ -ションファイルどちらも、Vimをスタートしてすぐに好みの設定を行うという目的のた -めに、効果的に使用できる。 |session-file| - - *viminfo-read* -Vimが起動した時に'viminfo'オプションが空でなかったら、viminfoファイルが読み込 -まれ、その情報は適切に使用される。変数 |v:oldfiles| がセットされる。起動時には -マークは読み込まれない(しかしファイルマークは読み込まれる)。起動時に'viminfo' -オプションをどうやって設定するのかは|initialization|を参照。 - - *viminfo-write* -Vimが終了する時に'viminfo'が空でなかったら、情報がviminfoファイルに保存される -(もし既に存在した場合には、それと混合(マージ)される)。'viminfo'オプションは、 -どのような情報を保存するか、またどのくらいの量を保存するべきかその限界を指定す -る為の情報を含む文字列である。('viminfo'参照)。 - -Note: Unixにおける注意点: -- viminfoファイルには入力したテキストや、使用したコマンドが記載されているの - で、他人に覗かれないように保護(パーミション設定)したほうが良い。 -- 複数のユーザでviminfoファイルを共有したい時(例えば他のユーザへ"su"する時な - ど)には、グループもしくは全員にviminfoファイルへの書き込み権限を与える。Vim - が新しくviminfoファイルを保存するときに、その設定を維持する。しかし、誰にで - もviminfoファイルを読ませたり書かせたりすべきではないし、注意が必要。 -- 現在の"本当"のユーザによって書き込み不能なviminfoファイルは、Vimは決して上書 - きしない。これは"su"でrootユーザになった時、しかし$HOMEがまだ通常ユーザの - ホームディレクトリのままの時の支援となる。そうでないとVimはroot所有の、他の - 誰にも読めないviminfoファイルを作成してしまう。 -- viminfo ファイルはシンボリックリンクであってはならない。セキュリティ上の問題 - を避けるためである。 - -マークは個々のファイルに対して別々に保存される。ファイルが読み込まれ'viminfo' -が空でない場合、viminfoファイルからマーク情報が読み込まれる。NOTE: マークはVim -が正常に終了したときにだけ保存される。また、Vimの起動中に開かれた":bdel"されて -いないファイル全てのマークが記録される。もしも":bdel"で破棄したファイルについ -てマークを保存しておきたいのならば、":wv"を使う。'['と']'のマークは保存されな -いが、'"'は保存される。'"'マークはファイルを開いたときに前回のカーソル位置を復 -元するのに非常に便利である。'viminfo'に文字"r"が与えられた時には、一切のマーク -情報は記録されない。これはリムーバブルメディア上のファイルのマークが保存される -のを避ける場合に使う(MS-DOSでは"ra:,rb:"を、Amigaでは"rdf0:,rdf1:,rdf2:"を使う -viminfo ファイルにマークが記録されているファイルの名前が |v:oldfiles| のリスト -に追加される。 - - *viminfo-file-marks* -大文字のマーク('Aから'Z)はviminfoファイルが書かれるときに、保存される。数字の -マーク('0から'9)はちょっと特別である。viminfoファイルが書き込まれる時(終了時、 -もしくは":wviminfo"コマンド実行時)に、'0が現在のファイルの現在のカーソル位置に -設定される。古い'0は'1になり、'1は'2になり、以下同様。"1から"9の削除レジスタに -起こることに似ている。'0に記憶する位置が'1から'9に既出であった時には、同じ位置 -が2度記憶されるのではなく、そのレジスタが'0に浮き上がってくる。結果として"'0" -を使用すると、最後にVimを終了した時のファイルとその行に戻ることができる。起動 -後直ちにそれを行うには、次のコマンドを試す: > - - vim -c "normal '0" - -csh 互換なシェルではエイリアスをこんな風に使用して: > - - alias lvim vim -c '"'normal "'"0'"' - -bash ライクなシェルでは: > - - alias lvim='vim -c "normal '\''0"' - -特定のファイルのマークを保存しないようにするには'viminfo'に"r"フラグを追加す -る。 - -Viminfoファイルの名前 *viminfo-file-name* - -- viminfoファイルの名前を特に指定しない時は、UnixとOS/2では"$HOME/.viminfo" - に、Amigaでは"s:.viminfo"に、MS-DOSとWin32では"$HOME\_viminfo"になる。MS-DOS - とWin32で、$HOMEが設定されていない時には、"$VIM\_viminfo"になる。$VIMも設定 - されていない時には"c:\_viminfo"が使われる。OS/2では、$HOMEが設定されず$VIMが - 設定されていれば"$VIM/.viminfo"となる。 -- 'viminfo'オプションの'n'フラグは、別の名前のviminfoファイルを使うために、そ - のファイル名を指定するのに使用される|'viminfo'|。 -- Vimの起動引数"-i"も、viminfoとして別のファイルを指定するのに使用できる|-i|。 - ファイル名として"NONE"(全て大文字)が与えられると、viminfoファイルは使用(読み - 込みも書き込みも)されない。 -- 起動後に、コマンドで別の名前を与えると、デフォルト名や'viminfo'や"-i"で与え - た名前を上書きすることができる("-i"はNONEが指定されていない時に限る)。 - -文字エンコーディング *viminfo-encoding* - -viminfoファイルのテキストはオプション'encoding'で指定したエンコーディングで保 -存される。通常は'encoding'の設定はいつも同じなので、問題なく機能する。しかしな -がら、もしもviminfoファイルを読み込むときに、'encoding'の設定がviminfoファイル -を保存したときとは違うエンコーディングに設定されていると、いくつかのテキスト -(ASCII以外の文字)は不正な文字になってしまう。それを回避するには、オプション -'viminfo'に'c'フラグを追加する: > - :set viminfo+=c -そうするとVimは、viminfoファイルを保存したときの'encoding'から現在の'encoding' -へとテキストを変換する。これを利用するには|+iconv|が有効になっている必要があ -る。ファイル名は変換されない。 - - -viminfoファイルを手動で読み書きする *viminfo-read-write* - -viminfoファイルを手動で読み書きするのに2つのコマンドが用意されている。これは同 -時に起動している複数のVim間で、レジスタの内容を交換するのに利用できる: まず片 -方で":wv"してから、もう片方で":rv"する。既にレジスタに何かを記憶している場合に -は、":rv!"する必要があることに注意。またこれを行うとコマンドラインの履歴を含む -全ての情報が、送り側のVimのもので上書きされてしまうことにも注意。 - -viminfoファイル自体を手で編集することもできるが、Vimによって作られる正しい -フォーマットのviminfoを元にすることを推奨する。一度試してみればどういう構造に -なっているかよく分かるだろう。これを覚えておけば、Vimを起動したときにいつでも -設定しておきたい内容を、"~/.my_viminfo"というようなファイルに用意しておくとき -に重宝する。例としては、あるデータをレジスタに予め読み込んでおくとか、コマンド -ライン履歴に特定のコマンドをいれるとか、そういう使い方がある。.vimrcファイルに -次の一行を入れておけば > - :rviminfo! ~/.my_viminfo -その情報を読み込むことができる。ファイルの種類によって(Cコードだとかvimスクリ -プトだとか)、異なるviminfoを持ち、":autocmd"を組み合わせることでファイル名に基 -づいたりしながら、それらを使用することもできる(|:autocmd|)参照。 - - *viminfo-errors* -Vimがviminfoファイルを読み込み中にエラーを検出すると、ファイルの上書きはされな -くなる。もしも10個以上のエラーがある場合には、それ以上viminfoファイルを読み込 -むのを止める。こうするのはviminfoファイル内のファイル名が間違っている場合、突 -発的にそのファイルを破壊してしまうのを避けるためである。これは"vim -R file"と -したいときに、誤って"vim -i file"とタイプしてしまうと起こり得る(そう、偶然何人 -かが実際にそうしてしまったよ!!)。viminfoファイルにエラーがあったけれども -viminfoを上書きしたいのならば、エラーを修正するか、またはファイルを消すかのど -ちらかが必要(Vimの実行中は、殆どの情報が回復してしまう)。 - - *:rv* *:rviminfo* *E195* -:rv[iminfo][!] [file] viminfoファイルを [file](デフォルト:上記参照)から読込 - む。[!]が与えれらた場合、既に設定されている情報(レジス - タ、マーク、|v:oldfiles|、その他)は上書きされる。{Vi - にはない} - - - *:wv* *:wviminfo* *E137* *E138* *E574* -:wv[iminfo][!] [file] viminfoファイルを [file](デフォルト:上記参照)として保 - 存する。まず既存のファイルの(古い)情報が読み込まれ、 - Vim内部の(新しい)情報とマージ(混合)されてから、ファイ - ルに保存される。[!]を指定すると古い情報は読み込まれ - ず、Vim内部の情報だけが保存される。'viminfo'が空("")に - 設定されている場合は、100個のファイルのマークが書き出 - される。 - "E138: Can't write viminfo file"("E138: viminfoファイ - ルを保存できません")というエラーが出たときには古い一時 - ファイル(例えば~/.viminf*)が残っていないことを確か - め、.viminfoファイルを保存するディレクトリの書込み権限 - を確認すること。 - {Vi にはない} - - *:ol* *:oldfiles* -:ol[dfiles] viminfo ファイルにマークが記録されているファイルのリス - トを表示する。起動時にこのリストが読み込まれ、 - ":rviminfo!" を行った後でのみ変更される。|v:oldfiles| - も参照。このリストで表示される番号は |c_#<| で使うこと - ができる。 - {Vi にはない。|+eval| 機能付きでコンパイルされたときの - み有効} - -:bro[wse] ol[dfiles][!] - |:oldfiles| と同じようにファイルのリストを表示し、番号 - の入力を待つ。有効な番号が入力されると、リスト中のその - ファイルを開く。 - |press-enter| プロンプトが表示されたときは "q" を押す - とファイル番号を入力するプロンプトに戻れる。 - ! をつけると変更中のバッファを破棄する。|abandon| - {tiny または small でコンパイルされたときは利用できな - い} - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/syntax.jax b/runtime.old/doc/syntax.jax deleted file mode 100644 index bf120d6fe..000000000 --- a/runtime.old/doc/syntax.jax +++ /dev/null @@ -1,4634 +0,0 @@ -*syntax.txt* For Vim バージョン 7.3. Last change: 2011 Jul 18 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -構文ハイライト *syntax* *syntax-highlighting* *coloring* - -Vimは構文ハイライトによってテキストの一部を別のフォントや色で表示することがで -きる。ハイライトするキーワードやテキストは、正規表現パターンによって指定する。 -動作を速く保つため、ファイル全体を構文解析するわけではないから、このハイライト -方法には限界が存在する。単語(レキシカル)ハイライトと呼ぶのがより正しいが、皆が -構文ハイライトと呼ぶのでそう呼び続けている。 - -Vimは全ての端末で構文ハイライトをサポートしている。しかし、多くの普通の端末に -はごく限られたハイライト手段しか提供されていないので、GUI版のgvimで動作させた -ときに見栄えが最もよくなる。 - -ユーザマニュアルにおける記述: -|usr_06.txt| 構文ハイライトの紹介。 -|usr_44.txt| 構文ファイルの記述方法の紹介。 - -1. クイックスタート |:syn-qstart| -2. 構文ファイル |:syn-files| -3. 構文ファイル読込の手順 |syntax-loading| -4. 構文ファイルの覚書 |:syn-file-remarks| -5. 構文を定義する |:syn-define| -6. :syntaxの引数 |:syn-arguments| -7. syntaxのパターン |:syn-pattern| -8. クラスタ |:syn-cluster| -9. 構文ファイルのインクルード |:syn-include| -10. 表示のシンクロナイズ |:syn-sync| -11. 構文アイテムのリストを表示する |:syntax| -12. ハイライトコマンド |:highlight| -13. グループのリンク |:highlight-link| -14. 構文の消去 |:syn-clear| -15. 関数名などのハイライト |tag-highlight| -16. ウィンドウローカル構文 |:ownsyntax| -17. カラー対応xterm |xterm-color| - -{これらのコマンドはViには存在しない} - -コンパイル時に|+syntax|機能を無効にした場合には構文ハイライトは利用することは -できない。 - -============================================================================== -1. クイックスタート *:syn-qstart* - - *:syn-enable* *:syntax-enable* -次のコマンドで構文ハイライトが有効になる: > - - :syntax enable - -このコマンドにより実際には次のコマンドが実行される > - :source $VIMRUNTIME/syntax/syntax.vim - -環境変数VIMが設定されていない場合は、Vimは別の方法(|$VIMRUNTIME|参照)でパスの -検索を試みる。通常はこれでうまくいく。うまく動作しない場合は、環境変数VIMにVim -の構成ファイルが置いてあるディレクトリの設定を試みる。例えば、構文ファイルがディ -レクトリ"/usr/vim/vim50/syntax"にあるならば、$VIMRUNTIMEに"/usr/vim/vim50"を設 -定する。これはVimを起動する前に、シェルで設定しておかなければならない。 - - *:syn-on* *:syntax-on* -コマンド":syntax enable"は現在の色設定を変更しない。そのため、このコマンドを使 -用する前後にコマンド":highlight"で好みの色を設定することができる。現在の設定を -破棄して、デフォルトの色を設定させたい場合は次のコマンドを使用する: > - :syntax on -< - *:hi-normal* *:highlight-normal* -GUIを使用している場合は、次のコマンドで黒地に白文字を設定できる: > - :highlight Normal guibg=Black guifg=White -カラー端末については|:hi-normal-cterm|を参照。 -自分自身で色を設定する方法については|syncolor|を参照。 - -NOTE: MS-DOSとWindowsの構文ファイルは改行コードが<CR><NL>である。UNIXでは<NL> -である。自分のシステムに合った改行コードのファイルを使わなければならない。しか -し、MS-DOSとWindowsではオプション'fileformats'が空でなければ正しい形式が自動的 -に選択される。 - -NOTE: 反転表示("gvim -fg white -bg black")を使用する場合、|gvimrc|が読込まれた -後、GUIウィンドウが開かれるまでは'background'のデフォルト値が設定されない。そ -のせいで誤ったデフォルトのハイライトが使用されてしまう。ハイライト表示を有効化 -する前に'background'のデフォルト値を設定するには、|gvimrc|にコマンド":gui"を含 -めればよい: > - - :gui " ウィンドウを開き、'background'にデフォルト値を設定する - :syntax on " ハイライトを有効化し、'background'にもとづいて色を設定する - -NOTE: |.gvimrc|の中で":gui"を使用すると"gvim -f"によりフォアグラウンドで開始す -ることができなくなる。その際は":gui -f"を使用すること。 - - *g:syntax_on* -次のコマンドで構文ハイライトの有効・無効を切換えることができる: > - :if exists("g:syntax_on") | syntax off | else | syntax enable | endif - -これをキーマップに設定するには、以下のように書く: > - :map <F7> :if exists("g:syntax_on") <Bar> - \ syntax off <Bar> - \ else <Bar> - \ syntax enable <Bar> - \ endif <CR> -[全ての文字をそのまま入力すること] - -詳細 -コマンド":syntax"はファイルをsourceすることで実装されている。その際にsourceさ -れるファイルの中身を見れば、このコマンドがどのように動作しているのか正確に知る -ことができる。 - コマンド ファイル ~ - :syntax enable $VIMRUNTIME/syntax/syntax.vim - :syntax on $VIMRUNTIME/syntax/syntax.vim - :syntax manual $VIMRUNTIME/syntax/manual.vim - :syntax off $VIMRUNTIME/syntax/nosyntax.vim -|syntax-loading|も参照。 - -NOTE: 長い行があって表示が遅く、構文ハイライトをオフにしたくなるような場合は、 -'synmaxcol' をもっと小さい値にすることも考えてみること。 - -============================================================================== -2. 構文ハイライトファイル *:syn-files* - -ある1つの言語用の構文とハイライト色定義コマンドは通常1つのファイル(以下構文ファ -イル)に格納される。名前は"{name}.vim"と付ける慣習になっている。{name}はその言 -語の名前か短縮名となる(DOSファイルシステムで要求される、8.3文字の形式にあわせ -ることが望ましい)。 -例: - c.vim perl.vim java.vim html.vim - cpp.vim sh.vim csh.vim - -構文ファイルには、vimrcファイルと同様にExコマンドを記述できる。しかし1つのファ -イルには、1つの言語のためのコマンドだけを記述するよう取り決めている。ある言語 -が別の言語のスーパーセットである時には、他のファイルを内包していても良く、例え -ば、ファイルcpp.vimはファイルc.vimを取り込むようになっている: > - :so $VIMRUNTIME/syntax/c.vim - -通常これらの構文ファイルはオートコマンドにより読込まれる。例: > - :au Syntax c source $VIMRUNTIME/syntax/c.vim - :au Syntax cpp source $VIMRUNTIME/syntax/cpp.vim -このようなコマンドはファイル$VIMRUNTIME/syntax/synload.vimに書かれている。 - - - -独自構文ファイルの作成 *mysyntaxfile* - -独自の構文ファイルを作成し、":syntax enable"をしたとき自動的にそのファイルが使 -われるようにするには、以下のようにする: - -1. ユーザランタイムディレクトリを作成する。通常はオプション'runtimepath'に示さ - れる最初のディレクトリを使用する。UNIXの例では: > - mkdir ~/.vim - -2. "syntax"という名のディレクトリを作成する。UNIXでは: > - mkdir ~/.vim/syntax - -3. Vimの構文ファイルを作成する。もしくはインターネットからダウンロードする。そ - のファイルはディレクトリsyntaxに置く。構文"mine"の例では: > - :w ~/.vim/syntax/mine.vim - -これで独自構文ファイルを手動で使うことはできるようになっている: > - :set syntax=mine -このコマンドを実行するためにVimを再起動する必要はない。 - -このファイルタイプが認識されるようにするには、|new-filetype|を参照。 - -システム管理者としてユーザ全てに独自構文ファイルを使わせるには、各ユーザに同じ -構文ファイルをインストールさせる必要はなく、全ユーザ共通の'runtimepath'ディレ -クトリにインストールすればよい。 - - -既存の構文ファイルに設定を追加する *mysyntaxfile-add* - -既存の構文ファイルでほぼ満足だが、いくつかの設定を追加したりハイライト手法を変 -更したい場合には、以下の手順に従う: - -1. 上同様、'runtimepath'に示されるユーザディレクトリを作成する。 - -2. "after/syntax"というディレクトリを作成する。UNIXの例: > - mkdir ~/.vim/after - mkdir ~/.vim/after/syntax - -3. 追加設定を行なうコマンドを含むVimスクリプトファイルを作成する。例として、C - 言語のコメントの色を変更するには: > - highlight cComment ctermfg=Green guifg=Green - -4. その設定ファイルをディレクトリ"after/syntax"に置く。名前には構文名に".vim" - を追加して使用する。Cの構文を拡張するならば: > - :w ~/.vim/after/syntax/c.vim - -以上。次回Cのファイルを編集する時にはコメントが異なった色で表示される。Vimを再 -起動する必要はない。 - -構文ファイルが複数になるときは、ファイルタイプの名前のディレクトリに置くとよい。 -そのディレクトリの中の全ての "*.vim" ファイルが読み込まれるようになる。例: > - ~/.vim/after/syntax/c/one.vim - ~/.vim/after/syntax/c/two.vim - -既存の構文ファイルを置き換える *mysyntaxfile-replace* - -標準の構文ファイルが気に入らない場合や、新しいバージョンをダウンロードした際に -は、上で述べた|mysyntaxfile|に従えば良い。ただ'runtimepath'で、前の方に記され -たディレクトリに構文ファイルを置くように気を付ければ良い。Vimは適合する構文ファ -イルのうち最初に見つけた1つだけを読込む。 - - -名前付けの慣習 *group-name* *{group-name}* *E669* *W18* - -構文グループとは、同じ種類の構文アイテムをグループ化したものである。構文グルー -プから強調グループにリンクされ、強調グループに対して色が設定される。構文グルー -プそれ自体は、色や属性を指定するものではない。 - -ハイライトや構文グループの名前はアスキー文字、数字、アンダースコアだけでつけな -ければならない。正規表現では: "[a-zA-Z0-9_]*" - -各ユーザが好みの色セットを使用できるように、多くの言語に共通するハイライトグルー -プには優先名が与えられている。推奨されているグループ名は以下のとおり(構文ハイ -ライトがちゃんと機能していれば、"Ignore"以外はそのグループに設定された色で表示 -されるだろう): - - *Comment o コメント - - *Constant o 定数 - String o 文字列定数: "これは文字列です" - Character o 文字定数: 'c', '\n' - Number o 数値定数: 234, 0xff - Boolean o ブール値の定数: TRUE, false - Float o 不動小数点数の定数: 2.3e10 - - *Identifier o 変数名 - Function o 関数名(クラスメソッドを含む) - - *Statement o 命令文 - Conditional o if, then, else, endif, switch, その他 - Repeat o for, do, while, その他 - Label o case, default, その他 - Operator o "sizeof", "+", "*", その他 - Keyword o その他のキーワード - Exception o try, catch, throw - - *PreProc o 一般的なプリプロセッサ命令 - Include o #include プリプロセッサ - Define o #define プリプロセッサ - Macro o Defineと同値 - PreCondit o プリプロセッサの #if, #else, #endif, その他 - - *Type o int, long, char, その他 - StorageClass o static, register, volatile, その他 - Structure o struct, union, enum, その他 - Typedef o typedef宣言 - - *Special o 特殊なシンボル - SpecialChar o 特殊な文字定数 - Tag o この上で CTRL-] を使うことができる - Delimiter o 注意が必要な文字 - SpecialComment o コメント内の特記事項 - Debug o デバッグ命令 - - *Underlined o 目立つ文章, HTMLリンク - - *Ignore o (見た目上)空白, 不可視 |hl-Ignore| - - *Error o エラーなど、なんらかの誤った構造 - - *Todo o 特別な注意がひつようなもの; 大抵はTODO FIXME XXXなど - のキーワード - -マーク(*)されている名前が優先グループ、その他はマイナーグループである。優先グ -ループには、"syntax.vim"によりデフォルトのハイライト手法が定義されている。マイ -ナーグループは優先グループにリンクされ、リンクした先と同じハイライト手法になる。 -ファイル"syntax.vim"が読込まれた後でコマンド":highlight"を使えば、そのデフォル -トを上書することができる。 - -ハイライトグループ名には大文字小文字の区別がないことに注意。"String" と -"string"はどちらも同じグループを意味する。 - -以下の名前は予約されているのでグループ名として使用することはできない: - NONE ALL ALLBUT contains contained - - *hl-Ignore* -Ignore グループを使うときは、conceal 機能も使うと便利かもしれません。 -|conceal| 参照。 - -============================================================================== -3. 構文ファイル読込の手順 *syntax-loading* - -ここではコマンド":syntax enable"を実行した時に何が起こるかの詳細を説明する。 -Vimは初期化の時に、ランタイムファイルの在り処を自動的に発見する。ここでは変数 -|$VIMRUNTIME|にその場所が格納されているとする。 - -":syntax enable" と ":syntax on"では以下のことが起こる: - - $VIMRUNTIME/syntax/syntax.vimを読込む - | - +- $VIMRUNTIME/syntax/nosyntax.vimを読込んで古い構文を削除する - | - +- 'runtimepath'からsyntax/synload.vimを読込む - | | - | +- 構文ハイライトの色を設定する。 - | | カラースキームが定義されている場合は":colors {name}"で再度読込む。 - | | そうでない場合は":runtime! syntax/syncolor.vim"が使用される。 - | | ":syntax on"は既存の色設定を上書設定し、":syntax enable"はまだ設定 - | | されていないグループのみを設定する。 - | | - | +- 適切な構文ファイルをオプション'syntax'が設定される時に読込む自動実 - | | 行コマンドを設定する。 *synload-1* - | | - | +- ユーザによる追加ファイルを変数|mysyntaxfile|から読込む。これは - | Vim 5.xとの互換性のためだけに存在する。 *synload-2* - | - +- ":filetype on"を実行し":runtime! filetype.vim"が実行される。これは見つ - | けることのできる全てのfiletype.vimを読込む。$VIMRUNTIME/filetype.vimは - | 常に読込まれ、以下のことが実行される。 - | | - | +- 拡張子に基づいてオプション'filetype'を設定するオートコマンドをイン - | | ストールする。これにより既知のファイル形式に付いて、ファイル名と - | | 当該形式との関連付けが成される。 *synload-3* - | | - | +- ユーザによる追加ファイルを変数 *myfiletypefile* から読込む。これは - | | Vim 5.xとの互換性のためだけに存在する。 *synload-4* - | | - | +- ファイル形式が検出されなかった時にscripts.vimを読込むための自動実 - | | 行コマンドをインストールする。 *synload-5* - | | - | +- 構文メニュー設定のため$VIMRUNTIME/menu.vimを読込む。 |menu.vim| - | - +- ファイル形式が検出された時にオプション'syntax'を設定するためのFileType - | オートコマンドを設定する。 *synload-6* - | - +- 既に読込まれているバッファに対して構文ハイライトを行なうために、関連し - たオートコマンドを実行する。 - - -ファイルを読込む時には、Vimは以下のように関連した構文ファイルを見つける: - - ファイルを読込むとBufReadPostオートコマンドが起動する。 - | - +- |synload-3|(既知ファイル形式)か|synload-4|(ユーザ定義ファイル形式)の自 - | 動実行コマンドがヒットした場合、オプション'filetype'にそのファイル形式 - | 名が設定される。 - | - +- |synload-5|のオートコマンドが実行される。まだファイル形式が決定され - | ていない場合は、'runtimepath'からscripts.vimが検索される。これは常に以 - | 下のことを行なう$VIMRUNTIME/scripts.vimを読込む。 - | | - | +- ユーザによる追加ファイルを変数 *myscriptsfile* から読込む。これは - | | Vim 5.xとの互換性のためだけに存在する。 - | | - | +- 未だにファイル形式が決定できない場合、ファイルの内容を検査する。検 - | 査は"getline(1) =~ pattern"のように認識できるファイル形式かどうか - | 行なわれ、認識できるならば'filetype'を設定する。 - | - +- ファイル形式が決定されて'filetype'が設定された時に、上記|synload-6|の - | FileTypeオートコマンドが実行される。決定したファイル形式名がそれによ - | り'syntax'へ設定される。 - | - +- 上記でオプション'syntax'が設定されると、|synload-1|(と|synload-2|)の自 - | 動実行コマンドが実行される。これにより次のコマンドでメインとなる構文 - | ファイルが'runtimepath'から読込まれる。 - | runtime! syntax/<name>.vim - | - +- ユーザがインストールしたその他のFileTypeおよびSyntaxオートコマンドが - 実行される。これは特定の構文のハイライトを変更するのに使うことができる。 - -============================================================================== -4. 構文ファイルの覚書 *:syn-file-remarks* - - *b:current_syntax-variable* -Vimはロードした構文の名前を変数"b:current_syntax"に記憶している。ある構文が有 -効な場合だけある設定を行うにはこの変数が利用できる。例: > - :au BufReadPost * if b:current_syntax == "csh" - :au BufReadPost * do-some-things - :au BufReadPost * endif - - -2HTML *2html.vim* *convert-to-HTML* - -これは構文ファイルではなくて、現在のウィンドウの内容をHTMLに変換するスクリプト -である。Vimは新しいウィンドウを作成しそこにHTMLファイルを構築する。 - -使う際にはオプション'filetype'や'syntax'に"2html"を設定してはならない! -現在のファイルをコンバートするためにはこのスクリプトを読込む: > - - :runtime! syntax/2html.vim -< - *:TOhtml* -またはユーザコマンド":TOhtml"を使ってもよい。これは標準プラグイン中で定義され -ている。":TOhtml"は範囲指定やビジュアルモードにも対応している: > - - :10,40TOhtml - -警告: 遅いかも! スクリプトはすべての行のすべての文字を処理しなければなりませ -ん。処理に時間が掛かるので、初期設定では、処理経過を表示するためのプログレス -バーがステータスラインに表示されます。プログレスバーを非表示にしたい場合は次の -コマンドでそれを無効化できます。ほんの少しだけ早くなります: > - - let g:html_no_progress = 1 - -":TOhtml" には diff モード用の特別な機能があり、すべての関連するウィンドウの内 -容が HTML として生成されます。これは g:html_diff_one_file を設定することで無効 -化できます: > - - let g:html_diff_one_file = 1 - -出力結果をファイルに保存すれば、好きなブラウザでそれを観ることができる。Vimで -表示されるのと寸分たがわぬ色が再現される。 - -変換の範囲を指定するには、|:TOhtml| コマンドに範囲を指定するか、 -"g:html_start_line" と "g:html_end_line" に変換したい範囲の最初と最後の行を設 -定します。例えば、最後に選択された範囲だけを変換するには: > - - :let g:html_start_line = line("'<") - :let g:html_end_line = line("'>") - -オプション'number'が設定されている場合には、各行にNumberでハイライトされた行番 -号が付加される。"html_number_lines"に非0の値を設定すれば、HTMLの出力へ強制的に -行番号を付加することができる: > - :let g:html_number_lines = 1 -この変数に0を設定すれば行番号を強制的に省略できる: > - :let g:html_number_lines = 0 -この変数を削除すれば元通り'number'に従うように戻すことができる: > - :unlet g:html_number_lines - -デフォルトでは、カスケーディングスタイルシート (CSS1) を使用した正当 (valid) -な HTML 4.01 の HTML が生成されます。古いブラウザや、CSS をサポートしていない -他のユーザーエージェント向けに HTML を生成したい場合は次のように設定してくださ -い: > - :let g:html_use_css = 0 - -Conceal されたテキストは HTML には表示されず、'conceallevel' の現在の設定に応 -じて |:syn-cchar| や 'listchars' の文字が代わりに表示されます。すべてのテキス -トを表示したい場合は 2html を呼ぶ前に 'conceallevel' をゼロに設定するか、次の -変数を設定してください: > - :let g:html_ignore_conceal = 1 - -同様に、閉じた折り畳みは、画面表示通りに HTML に出力される。これが好ましくない -なら、2html を呼ぶ前にコマンド |zR| を使うか、または次のようにする: > - :let g:html_ignore_folding = 1 - -ブラウザ上でも Vim と同じように折り畳みの開閉を行えるようにしたいことがある -だろう。そんなときは次の設定をすると、動的な折り畳みの HTML が生成される: > - :let g:html_dynamic_folds = 1 - -html_dynamic_folds を使うと、html_use_css も自動的にセットされる。古いブラウ -ザで動的な折り畳みを実現するのは非常に難しいからである。html_ignore_folding -を設定していると html_dynamic_folds はオフになる。 - -html_dynamic_folds を使うと、HTML でも Vim と同じような折畳表示カラム -(foldcolumn) が表示される。これをクリックすると JavaScript によって折り畳み -が開閉される。この折畳表示カラムの幅は |'foldcolumn'| の設定値から始まり、文 -書の最大の折り畳みレベルまで増えていく。折畳表示カラムをまったく表示させない -ようにするには次のようにする: > - :let g:html_no_foldcolumn = 1 - -このオプションをセットすると、HTML の中で折り畳みを開くための折畳表示カラム -がすべてなくなってしまう。そこで、html_hover_unfold というオプションが用意さ -れている。このオプションをセットすると、CSS 2.0 を使い、折り畳みの上にマウス -を持っていくだけで折り畳みを開くことができるようになる。古いブラウザ(特に -Internet Explorer 6)はこの機能に対応していないことに注意。IE6 でも表示できる -ように CSS1 を使った専用のマークアップが入っているが、IE6 では折畳を開くこと -はできない。html_hover_unfold を有効にしているとき、新しいブラウザなら -JavaScript を無効にしていても閉じた折畳の中を見られることに注意。このオプショ -ンを有効にするには次のようにする: > - :let g:html_hover_unfold = 1 - -html_no_foldcolumn と html_dynamic_folds をセットすると、自動的に -html_hover_unfold もセットされる。そうしないと折畳が閉じたままになってしまう -からである。 - -デフォルトでは、テキストの周りに"<pre>"と"</pre>"がつけられる。変換されるウィ -ンドウの 'wrap' がオンになっている場合、テキストを折り返し表示するために CSS -2.0 の "white-space:pre-wrap" が使われる。折り返しを明示的に有効化するには次の -ように設定する: > - :let g:html_pre_wrap = 1 -無効化するには次のように設定する: > - :let g:html_pre_wrap = 0 -生成される HTML は Vim ウィンドウでの表示に近いものになるが、'showbreak' やラ -インブレイクなどは HTML には反映されない。 - -HTML で折り返しを有効にするもう一つ方法がある。ただし表示がさらに違うものに -なってしまうかもしれない。次のように設定する: > - :let g:html_no_pre = 1 -こうすると、各行末に<br>を使い、連続するスペースに" "を使うようになる。こ -の方法は古いブラウザとの互換性が高い。しかし最近のブラウザは "white-space" を -サポートしている。 - -"<pre>" タグを使う場合、テキスト中の <Tab> 文字は、それがテキストの見た目に影 -響せず、ドキュメントの中で故意に使用されているようなら、そのまま出力に含まれま -す。その場合、HTML 出力をブラウザで表示してそれをコピー&ペーストしたときに、元 -のドキュメントの実際の空白文字をそのままコピーできます。 - -具体的に言うと、<Tab> 文字が含まれるのは、'tabstop' オプションが初期設定の 8 -に設定されていて、'expandtab' がオフになっていて、foldcolumn も 行番号も HTML -出力に含まれないときです (上述のオプション参照)。これらの条件に満たないとき -は、<Tab> 文字は適切な数のスペースに展開されます。 - -"<pre>" が含まれるとき、他の条件に関わらずタブ文字をそのままにしたい場合は次の -ように設定します: > - :let g:html_expand_tabs = 0 -Note: おそらく HTML 内のテキストのインデントや整列が崩れます。 - -強制的にタブ文字を展開したい場合は次のように設定します: > - :let g:html_expand_tabs = 1 - -シングルファイルの diff モード (g:html_diff_one_file 設定) では、4 行以上の詰 -め行 (訳注:他方のファイルに行が挿入されていることを示す行) は 3 行で表示され、 -何行挿入されているかが真ん中の行に表示されます。横並び表示の diff のように挿入 -された行をすべて表示したい場合は次のように設定します: > - :let g:html_whole_filler = 1 -3 行で表示するように戻すには次のように設定します: > - :unlet g:html_whole_filler -< -ほとんどのバッファでは、TOhtml は 'fileencoding' が設定されていればその値を、 -設定されていなければ 'encoding' の値を使い、HTML ファイルの文字セットと -'fileencoding' を決定します。特定の 'buftype' では常に 'encoding' が使われま -す。|encoding-names| の説明で名前が出てくるようなエンコーディングであればたい -ていは機能しますが、TOhtml で自動的に使用されるのは広くサポートされているエン -コーディングだけです。特定のエンコーディングが初期設定で自動的に認識されない場 -合には自分でそれを指定することができます。 - -自動的な文字セットの認識を停止するには、g:html_use_encoding に使用したい文字 -セットの名前を設定します。TOhtml は文字セットを見て適当な 'fileencoding' を設 -定しますが、TOhtml がエンコーディングを決定できなかった場合は自分で設定する必 -要があります。ウェブサーバーに上げるような場合には、UTF-8 のような広くサポート -されている文字セットを設定することが推奨されます: > - :let g:html_use_encoding = "UTF-8" -文字セット指定の行を含めたくない場合は g:html_use_encoding に空文字を設定して -ください: > - :let g:html_use_encoding = "" -自動的に判断する設定に戻すには変数 g:html_use_encoding を削除します: > - :unlet g:html_use_encoding - -g:html_use_encoding を設定したときに TOhtml によって適切な 'fileencoding' が自 -動的に設定されない場合は、g:html_encoding_override を使うことで正しいエンコー -ディングが選択されるように設定できます。 -これは文字セット-エンコーディング組の辞書で、TOhtml が使用する組を置き換えたり -追加したりできます。例えば HTML 文字セットの "windows-1252" を "8bit-cp1252" -エンコーディングに対応させるには次のように設定します: > - :let g:html_encoding_override = {'windows-1252': '8bit-cp1252'} -< -g:html_charset_override も同様です。これは TOhtml が 'fileencoding' や -'encoding' から HTML 文字セットを自動的に決定できない場合に、それをできるよう -にします。既定のエンコーディング-文字セット組を上書きすることもできます。例え -ば、初期設定ではすべての Unicode/UCS エンコーディングに対しては UTF-8 が使用さ -れますが、代わりに UTF-16 や UTF-32 を使うにするには次のように設定します: > - :let g:html_charset_override = {'ucs-4': 'UTF-32', 'utf-16': 'UTF-16'} - -Note: UTF-32 か UTF-16 でエンコードされたドキュメントは少なくとも一つのメ -ジャーブラウザで互換性の問題があることが知られています。 - - *convert-to-XML* *convert-to-XHTML* -プレーン HTML が好みでない場合は代わりに XHTML (XML 準拠の HTML) を生成するこ -ともできます。"html_use_xhtml" 変数を設定してください: > - :let g:html_use_xhtml = 1 - -上述の on/off オプションは明示的に希望の値を設定することで有効化または無効化で -きます。|:unlet| を使って変数を削除することで初期設定に戻すことができます。 - -覚書き: -- いくつかの本当に古いブラウザでは背景色が表示されないことがある。 -- 大半のブラウザでは(なんとカラーで)印刷することができる! -- このバージョンの TOhtml はおそらく古い Vim でも動作しますが、例えば conceal - サポートのようないくつかの機能は動作しません。また、GUI サポート無しでコンパ - イルされた古い Vim では色がおかしくなるかもしれません。 - -ここではUNIXのシェル上で全ての.cと.hをコンバートする方法を例として示す: > - for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done -< - -ABEL *abel.vim* *ft-abel-syntax* - -ABELのハイライトにはユーザが定義できるオプションが幾つかある。それらを有効化す -るにはそれぞれの変数に何か値を設定すれば良い。例: > - :let abel_obsolete_ok=1 -無効化するには":unlet"を使用する。例: > - :unlet abel_obsolete_ok - -変数 ハイライト ~ -abel_obsolete_ok 古いキーワードをエラーでなく命令文として扱う -abel_cpp_comments_illegal '//'をインラインコメントリーダとして扱わない - - -ADA - -|ft-ada-syntax|を参照。 - - -ANT *ant.vim* *ft-ant-syntax* - -ANTの構文ファイルにはデフォルトでJavaScriptとPythonの構文ハイライトが含まれて -いる。関数AntSyntaxScript()の第1引数にタグ名を、第2引数にファイル名を指定する -ことでその他のスクリプト言語用構文ハイライトをインストールすることができる。 -例: > - - :call AntSyntaxScript('perl', 'perl.vim') - -これは次のようなANTのコードにPerlの構文ハイライトをインストールするものである > - - <script language = 'perl'><![CDATA[ - # everything inside is highlighted as perl - ]]></script> - -スクリプト言語を永続的にインストールするには|mysyntaxfile-add|を参照。 - - -APACHE *apache.vim* *ft-apache-syntax* - -apacheの構文ファイルはApache HTTPサーバのバージョンに基づいた構文ハイライトを -提供する(デフォルトでは1.3.x)。他のバージョン用の構文ハイライトを利用するには -"apache_version"にApacheのバージョンを文字列としてセットする。例: > - - :let apache_version = "2.0" -< - - *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* -アセンブリ言語 *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax* - *ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim* - -"*.i"にマッチする名前のファイルのタイプはProgressかアセンブリである。自動検出 -が動作しない場合や、Progressを編集しないことが判っている場合には、起動設定ファ -イルvimrcに次のコマンドを書くことができる: > - :let filetype_i = "asm" -"asm"には使用するアセンブリ言語の種類を指定する。 - -同じ拡張子を使用しているアセンブリ言語はたくさんある。そのため、ユーザは自分 -が使っている種類を選択するか、もしくはアセンブリファイルそのものにVimがそれ -と判断できるような行を追加しなければならない。現在は以下の構文ファイルが利用 -可能: - asm GNUアセンブラ(デフォルト) - asm68k モトローラ680x0アセンブラ - asmh8300 日立H-8300用GNUアセンブラ - ia64 インテルItanium 64 - fasm Flat アセンブラ (http://flatassembler.net) - masm マイクロソフトアセンブラ(たぶん80x86汎用) - nasm ネットワイドアセンブラ - tasm ターボアセンブラ(80x86,Pentium,MMXの命令コードを含む) - pic PICアセンブラ(現在はPIC16F84用) - -アセンブリファイルに次のような行を書き加えるのが一番柔軟である: > - asmsyntax=nasm -ここで、"nasm" は実際に使用するアセンブリ構文の名前に置き換えること。この記 -述はファイルの先頭 5 行以内に書いてなければならない。この文字列の前後に非空 -白文字があってはならない。 - -構文の種類はバッファ変数b:asmsyntaxを設定することで常にそちらが優先される: > - :let b:asmsyntax = "nasm" - -自動にしろ手動にしろb:asmsyntaxが設定されていないときには、グローバル変数 -asmsyntaxが使用される。これによりデフォルトのアセンブリ言語を設定することがで -きる: > - :let asmsyntax = "nasm" - -最後の手段として、何も設定されていない場合には、"asm"構文が使用される。 - - -ネットワイドアセンブラ(nasm.vim)の補助ハイライト ~ - -機能を有効化するには: > - :let {variable}=1|set syntax=nasm -無効化するには: > - :unlet {variable} |set syntax=nasm - -変数 ハイライト内容 ~ -nasm_loose_syntax 非オフィシャルな拡張構文をエラーとしない - (パーザ依存; 非推奨) -nasm_ctx_outside_macro マクロ外のコンテキストをエラーとしない -nasm_no_warn 潜在的に危険な構文をToDoとしてハイライトしない - - -ASPPERL and ASPVBS *ft-aspperl-syntax* *ft-aspvbs-syntax* - -*.aspと*.aspという名のファイルはどちらもPerlもしくはVisual Basicのスクリプトた -りえる。Vimにとってこれを判別するのは難しいので、グローバル変数を設定すること -でどちらを使用するのか宣言することができる。どちらでもPerlスクリプトを使用する -なら: > - :let g:filetype_asa = "aspperl" - :let g:filetype_asp = "aspperl" -Visual Basicを使用するなら次のように設定する: > - :let g:filetype_asa = "aspvbs" - :let g:filetype_asp = "aspvbs" - - -BAAN *baan.vim* *baan-syntax* - -baan.vim は リリース BaanIV から SSA ERP LN まで、3 GL と 4 GL プログラミング -両方に対応した構文を定義している。たくさんの標準的な定義/定数がサポートされて -いる。 - -次を |.vimrc| に書いておくと、ある種のコーディング標準違反を教えてくれる: > - let baan_code_stds=1 - -*baan-folding* - -以下の変数によって、様々なレベルで構文折り畳みを有効にできる (これらはユーザの -|.vimrc| で設定すること)。ソースブロックと SQL についてより複雑な折り畳みを行 -うと CPU に負荷がかかる。 - -折り畳みを有効にし、関数レベルで折り畳みをするにはこうする: > - let baan_fold=1 -次の設定を行うと、if, while, for ... のようなソースブロックレベルの折り畳みが -有効になる。キーワード begin/end の前のインデントが等しくなければならない (ス -ペースとタブは異なるとみなされる)。 > - let baan_fold_block=1 -次を設定すると SELECT, SELECTDO, SELECTEMPTY ... のような埋め込み SQL ブロック -の折り畳みが有効になる。キーワード begin/end の前のインデントが等しくなければ -ならない (スペースとタブは異なるとみなされる)。 > - let baan_fold_sql=1 -Note: ブロック折り畳みを有効にすると、小さな折り畳みがたくさんできるかもしれな -い。|.vimrc| でオプション 'foldminlines' と 'foldnestmax' を |:set| するか、... -/after/syntax/baan.vim 内で |:setlocal| をする (|after-directory| を参照) とよ -いかもしれない。例: > - set foldminlines=5 - set foldnestmax=6 - - -BASIC *basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax* - -Visual Basicも「通常の」BASICも、どちらも拡張子には".bas"が使用される。どちら -が使用されているか判別するのに、Vimはファイルの先頭5行以内に"VB_Name"という文 -字列が存在するかどうかを検査する。存在しなければ、ファイル形式は"basic"とな -り、そうでなければ"vb"となる。拡張子が".frm"のファイルは常にVisual Basicとして -扱われる。 - - -C *c.vim* *ft-c-syntax* - -Cには幾つかの補助的なハイライト方法がある。それらを有効化するには対応した変数 -に値を設定する。例: > - :let c_comment_strings = 1 -これを無効化するには":unlet"を使う。例: > - :unlet c_comment_strings - -変数 ハイライト内容 ~ -c_gnu GNU gcc固有の要素 -c_comment_strings コメント内の文字列と数値 -c_space_errors 行末の空白文字とタブ文字前のスペース文字 -c_no_trail_space_error ... 但し行末の空白文字は除外 -c_no_tab_space_error ... 但しタブ文字前のスペース文字は除外 -c_no_bracket_error []の中の{}をエラーとして表示しない -c_no_curly_error { と } が第1桁にあるときを除き、[] と () の内側の {} - をエラーとして表示しない。 -c_curly_error 対応する { がない } をハイライトする。これを有効に - すると、ファイルの先頭から同期が始まるため、遅くなる。 - start of the file, can be slow -c_no_ansi ANSI標準の型と定数をハイライトしない -c_ansi_typedefs ... 但し標準ANSI型はハイライトする -c_ansi_constants ... 但し標準ANSI定数はハイライトする -c_no_utf 文字列中の\uと\Uをハイライトしない -c_syntax_for_h ファイル*.hにC++ではなくCの構文を適用する -c_no_if0 "#if 0"のブロックをコメントとしてハイライトしない -c_no_cformat 文字列中の"%"によるフォーマットをハイライトしない -c_no_c99 C99の標準アイテムをハイライトしない - -'foldmethod' が "syntax" に設定されていると、/* */ のコメントと { } のブロック -が折り畳まれる。コメントを折り畳みたくなければこのようにする: > - :let c_no_comment_fold = 1 -"#if 0" のブロックも同様に折り畳まれる。折り畳みたくなければこのようにする: > - :let c_no_if0_fold = 1 - -上方向にスクロールしているときにハイライト表示がおかしくなり、それが<CTRL-L>で -再描画すると直るようなら、内部変数"c_minlines"にもっと大きな値を設定すれば解決 -できるかもしれない: > - :let c_minlines = 100 -これにより構文判定のシンクロナイズ位置が表示開始行の100行手前に設定される。初 -期設定の値は50行(c_no_if0を使用した場合は15行)である。ただしこれには、大きな値 -を設定すると再描画が遅くなるという短所がある。 - -"#if 0" / "#endif"のブロックをコメントとしてハイライトしている場合には、 -"#if 0"がウィンドウのトップから"c_minlines"以内にある時にしか正しく動作しない -ことに注意する。長い"#if 0"のブロックを使用した場合には、それは正しくハイライ -トされない。 - -コメント内で追加要素にマッチを行なうには、クラスタcCommentGroupを使用する。 -例: > - :au Syntax c call MyCadd() - :function MyCadd() - : syn keyword cMyItem contained Ni - : syn cluster cCommentGroup add=cMyItem - : hi link cMyItem Title - :endfun - -ANSIの定数はグループ"cConstant"でハイライトされる。これには"NULL", "SIG_IGN"や -その他のものが含まれる。しかしANSI標準でないもの、例えば"TRUE"は含まれない。も -しもこれが紛らわしいならば、cConstant用のハイライトを削除する: > - :hi link cConstant NONE - -文法上エラーではないはずの'{'と'}'がエラーとしてハイライトされてしまう場合には、 -cErrInParen及びcErrInBracketのハイライトをリセットする。 - -Cファイルで折り畳みをするには、以下の行を'runtimepath'中の"after"ディレクトリ -内のファイルに加えるとよい。Unixなら~/.vim/after/syntax/c.vimに加えるとよいだ -ろう: > - syn sync fromstart - set foldmethod=syntax - -CH *ch.vim* *ft-ch-syntax* - -C/C++ インタープリタ。Ch は C に似た構文ハイライトを持ち、C の構文ファイルに基 -づいている。C で利用できる設定については |c.vim| を参照。 - -変数を設定すれば、*.h ファイルに対して C, C++ でなく Ch の構文を使うようにする -ことができる: > - :let ch_syntax_for_h = 1 - - -CHILL *chill.vim* *ft-chill-syntax* - -Chillの構文ハイライトはCに似ている。設定に関しては|c.vim|を参照。それに加えて -次のものがある: - -chill_space_errors c_space_errors と同様 -chill_comment_string c_comment_strings と同様 -chill_minlines c_minlines と同様 - - -CHANGELOG *changelog.vim* *ft-changelog-syntax* - -ChangeLogでは行頭のスペースのハイライトできる。これをオフにしたいなら、次の行を -.vimrcに加える: > - let g:changelog_spacing_errors = 0 -これは次にchangelogファイルを編集するときから有効になる。バッファごとに設定す -るには"b:changelog_spacing_errors"を使う(構文ファイルを読み込む前に設定するこ -と)。 - -例えばスペースをエラーとするかどうかなどのハイライト方法を変えることができる: > - :hi link ChangelogError Error -ハイライトをやめるには: > - :hi link ChangelogError NONE -これは即座に有効になる。 - - -COBOL *cobol.vim* *ft-cobol-syntax* - -既存のCOBOLコードに要求されるハイライト方法と、新規に開発されるコードに要求さ -れるそれには違いがある。この違いはコードのおかれている状況(保守 vs 開発)やその -他の要素によって決定する。既存コードのハイライトを行なうには.vimrcに次の行を加 -える: > - :let cobol_legacy_code=1 -これを再び無効にするには次のようにする: > - :unlet cobol_legacy_code - - -COLD FUSION *coldfusion.vim* *ft-coldfusion-syntax* - -ColdFusionには独自版のHTMLコメントが存在する。ColdFusionのコメントハイライトを -有効化するには、次の行を起動設定ファイルに加える: > - - :let html_wrong_comments=1 - -ColdFusionの構文ファイルはHTML用構文ファイルに基づいている。 - - -CSH *csh.vim* *ft-csh-syntax* - -これは"csh"という名前のシェルに対応している。システムによっては実際に使われて -いるのがtcshである場合もあることに注意。 - -ファイルがcshかtcshかを判定するのは難しいことがよく知られている。いくつかのシ -ステムでは/bin/cshを/bin/tcshにシンボリックリンクしていることが、この判別をほ -ぼ不可能にしている。Vimが間違った判定をする場合には変数"filetype_csh"を設定す -ることが出来る。cshを使うには: *g:filetype_csh* -> - :let g:filetype_csh = "csh" - -tcshを使うには: > - - :let g:filetype_csh = "tcsh" - -拡張子がtcshであるか標準的なtcshファイル名(.tcshrc, tcsh.tcshrc, tcsh.login)を -持つスクリプトはすべてtcshファイル形式とされる。他のtcsh/cshスクリプトは、 -"filetype_csh"変数が存在しない限り、すべてtcshとみなされる。変数"filetype_csh" -が存在するならファイル形式はその値にセットされる。 - - -CYNLIB *cynlib.vim* *ft-cynlib-syntax* - -Cynlibファイルは、ハードウェアのモデリングとシミュレーションを行なうCynlibクラ -スライブラリを使用したC++ファイルである。通常Cynlibのファイルは.ccや.cppという -拡張子を持つので、CynlibではないC++ファイルと区別するのは非常に困難である。だ -から.ccファイルをCynlibでハイライトする際には、ファイル.vimrcに次の行を加える: -> - - :let cynlib_cyntax_for_cc=1 - -cppファイルについても同様(この拡張子は通常Windowsだけで使用される) > - - :let cynlib_cyntax_for_cpp=1 - -これらを再び無効にするには次のコマンドを使用する: > - - :unlet cynlib_cyntax_for_cc - :unlet cynlib_cyntax_for_cpp -< - -CWEB *cweb.vim* *ft-cweb-syntax* - -"*.w"にマッチする名前のファイルのタイプはProgressかCWEBである。自動検出が動作 -しない場合や、Progressを編集しないことが判っている場合には、起動設定ファイル -vimrcに次のコマンドを書くとよい: > - :let filetype_w = "cweb" - - -DESKTOP *desktop.vim* *ft-desktop-syntax* - -この構文ファイルの本来の目的は、freedesktop.org 標準の .desktop と .directory -を構文ハイライトすることである: -http://standards.freedesktop.org/desktop-entry-spec/latest/ -しかし実際にはこの標準を完全に実装したものはほとんどない。なのでこれは全ての -iniファイルをハイライトする。ただし次をvimrcファイルに書くことによって厳格に標 -準に準拠したハイライトをさせることもできる: > - :let enforce_freedesktop_standard = 1 - - -DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* - -dircolorsユーティリティ用のハイライト定義には、Slackware GNU/Linuxディストリ -ビューション版のdircolorsに対応するためのオプションがある。このオプションはほ -とんどのバージョンでは無視されるいくつかのキーワードを付け加える。しかし -Slackwareシステムではdircolorsはこれらのキーワードを認め、処理に用いる。 -Slackwareキーワードを有効化するには次を起動設定ファイルに付け加えればよい: > - let dircolors_is_slackware = 1 - - -DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook* -DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax* -DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax* - -DocBookファイルには2つの種類: SGMLとXMLがある。どちらのタイプを使用するのかを -指定するには変数"b:docbk_type"をセットする。Vimがそのタイプを認識できた場合に -はこれを自動的に行う。認識できなかった場合にはデフォルトはXMLになる。 -これを手動で設定するには: > - :let docbk_type = "sgml" -または: > - :let docbk_type = "xml" -これは構文ファイルを読み込む前に行う必要がある。しかし構文ファイルの読み込みは -込み入っている。より単純な方法はファイル形式を"docbkxml"または"docbksgml"に -セットすることである: > - :set filetype=docbksgml -または: > - :set filetype=docbkxml - - -DOSバッチファイル *dosbatch.vim* *ft-dosbatch-syntax* - -DOSバッチファイルのハイライトにはオプションが1つある。このオプションにより -Windows 2000で導入されたコマンドインタプリタの新しい拡張機能がサポートされ、変 -数dosbatch_cmdextversionによりその有効/無効が制御される。Windows NTでは値1を設 -定し、Windows 2000では2を設定するのが良い。次のようにすれば使用するバージョン -を選択できる: > - - :let dosbatch_cmdextversion = 1 - -変数が定義されていない際のデフォルトはWindows 2000をサポートする2となる。 - -2番目のオプションは、*.btm ファイルを "dosbatch" (MS-DOS バッチファイル) タイ -プか "btm" (4DOS バッチファイル) タイプのどちらと判定するかを指定する。デフォ -ルトでは後者が使われる。前者を使うには、次のようにする: > - - :let g:dosbatch_syntax_for_btm = 1 - -この変数が定義されていない、または0であると btm の構文が使われる。 - -DOXYGEN *doxygen.vim* *doxygen-syntax* - -Doxygen は JavaDoc に似た特殊なフォーマットからコードのドキュメントを生成する。 -この構文スクリプトは c, cpp, idl, php のファイルに対して Doxygen のハイライ -トを追加する。また、Java に対しても使える。 - -Doxygen のフォーマットを有効にするにはいくつかの方法がある。手動、またはモード -ラインでそのファイルの syntax に '.doxygen' を追加する。例: > - :set syntax=c.doxygen -または > - // vim:syntax=c.doxygen - -C, C++, C#, IDL のファイルに対しては、グローバルまたはバッファローカルな変数 -load_doxygen_syntax を設定すれば自動的にこれが行われる。次の行を .vimrc に加え -る。 > - :let g:load_doxygen_syntax=1 - -構文ハイライトに影響を与える変数がいくつかある。また、これらは標準でないハイラ -イトオプションに関係している。 - -変数 既定値 効果 ~ -g:doxygen_enhanced_color -g:doxygen_enhanced_colour 0 Doxygen コメントに対して標準でないハイ - ライトを行う。 - -doxygen_my_rendering 0 HTML の太字、斜体、html_my_rendering - に対する下線の描画を無効にする。 - -doxygen_javadoc_autobrief 1 0にすると JavaDoc の autobrief に対す - るハイライトを無効にする。 - -doxygen_end_punctuation '[.]' brief の終わりを示す句読点にマッチする - 正規表現。 - -また、次のハイライトグループを設定すると便利である。 - -ハイライト 効果 ~ -doxygenErrorComment code, verbatim, dot セクション中で句読点が抜け - ている終了コメントの色 -doxygenLinkError \link セクションで \endlink が抜けているときの - 終了コメントの色。 - - -DTD *dtd.vim* *ft-dtd-syntax* - -初期状態ではDTD構文ハイライトは大/小文字を区別する。区別しないようにするには、 -起動設定ファイルに次の行を書き足す: > - - :let dtd_ignore_case=1 - -DTD構文ファイルでは未知のタグをエラーとしてハイライトする。これが煩わしいなら -ば、構文ファイルdtd.vimが読込まれる前に: > - - :let dtd_no_tag_errors=1 - -と設定することで無効化することができる。定義部内のパラメータのエンティティ名は -ハイライトグループ'Type'、句読点と'%'は'Comment'を使用してハイライトされる。パ -ラメータエンティティの実体はハイライトグループ'Constant'を、区切り文字の%と;は -ハイライトグループ'Type'を使用してハイライトされる。以下を設定するとこれを無効 -化できる: > - - :let dtd_no_param_entities=1 - -XML内の埋め込みDTDをハイライト表示するために、DTDの構文ファイルはxml.vimからも -参照される。 - - -EIFFEL *eiffel.vim* *ft-eiffel-syntax* - -Eiffelは大小文字の区別をしないけれども、スタイルガイドラインが示すように、構文 -ハイライトではそれらが区別される。これにより大小文字が違えば違うクラス名として -ハイライト表示することが可能になっている。大小文字の違いを無視してハイライトを -行なうならば、起動設定ファイルに次の行を書き足す: > - - :let eiffel_ignore_case=1 - -これを行なってもコメント内のクラス名とTODOの印には大小文字の区別がなされる。 - -逆に、もっと厳密に検査するには、次の行のいずれかを書き足す: > - - :let eiffel_strict=1 - :let eiffel_pedantic=1 - -eiffel_strictを設定すると"Current", "Void", "Result", "Precursor"そして"NONE" -の5つの既定単語について、不正な大小文字の使用を捕捉し、機能やクラス名としてそ -れらが使用されれば警告を与えるようになる。 - -eiffel_pedanticを設定すると、Eiffelのスタイルガイドラインを相当に厳格に強制す -る。(キーワードを大文字で書く時代遅れの方法と同様に、大小文字を任意にミックス -したようなものが補足される) - -"Current", "Void", "Result"そして"Precursor"の小文字版を使用するには、大小文字 -を区別するハイライト方法を無効化する代わりに: > - - :let eiffel_lower_case_predef=1 - -という方法を使うことができる。 - -ISEが提案し、実験的に幾つかのコンパイラでは取り扱うことのできる、新しい生成構 -文は次のコマンドで使用できるようになる: > - - :let eiffel_ise=1 - -最後に幾つかのベンダは16進数定数値をサポートしている。それを取り扱うには: > - - :let eiffel_hex_constants=1 - -この行を起動設定ファイルに書き足す。 - - -ERLANG *erlang.vim* *ft-erlang-syntax* - -これはErlang(ERicsson LANGuage: エリクソン言語)をサポートする構文ハイライトファ -イルである。Erlangは大小文字を区別しデフォルトの拡張子は".erl"である。 - -キーワードハイライトを無効化するには、これを.vimrcに書き足す: > - :let erlang_keywords = 1 -組み込み関数ハイライトを無効化するには、これを.vimrcに書き足す: > - :let erlang_functions = 1 -特殊文字のハイライトを無効化するには、これを.vimrcに書き足す: > - :let erlang_characters = 1 - - -FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax* - - -FlexWiki は http://www.flexwiki.com で入手できる ASP.NET ベースの wiki パッ -ケージである。 -NOTE: このサイトは現在機能していない。Wikipedia によると 2009 年に開発がストッ -プした。 - -FlexWiki の構文のほとんどの一般的な要素に対して構文ハイライトができる。 -FlexWiki のtplugin スクリプトはバッファローカルなオプションを設定し、FlexWiki -ページの編集をより便利にする。FlexWiki は改行を新しい段落の開始とみなすので、 -このftplugin は 'tw' を0に設定し (行の長さを制限しない)、'wrap' をオンにし (長 -い行を水平スクロールさせるのでなく、折り返す)、'linebreak' をオンにする (画面 -上の最後の文字でなく 'breakat' の文字で折り返す)、などを行う。また、デフォルト -では無効にされているキーマップも含んでいる。 - -"j"、"k"、カーソルキーで表示行単位で移動するようにするキーマップを有効にするに -は次を .vimrc に追加する: > - :let flexwiki_maps = 1 - - -FORM *form.vim* *ft-form-syntax* - -FORMファイルの構文要素に使用するカラースキームには、Conditional, Number, -Statement, Comment, PreProc, Type, そしてStringが、次の文献で定義される言語仕 -様に沿って行なわれる。 -文献: 'Symbolic Manipulation with FORM' by J.A.M. Vermaseren, CAN, - Netherlands, 1991. - -初期設定の色に変更を加えるには、次の構文グループを再定義すれば良い: - - - formConditional - - formNumber - - formStatement - - formHeaderStatement - - formComment - - formPreProc - - formDirective - - formType - - formString - -構文ファイルform.vimではFORMプリプロセッサコマンドとディレクティブをそれぞれ、 -デフォルトでは同じ構文グループにしていることに注意。 - -FORM用の既定の拡張カラーモードではヘッダ命令とFORMプログラム本体での命令を区別 -できるような色設定が利用可能である。拡張カラーモードを使用可能にするには、ファ -イルvimrcに次の設定を書き足す: > - - :let form_enhanced_color=1 - -拡張モードを使うことは、gvimで暗いディスプレイを使用した場合にも利点がある。命 -令文は黄色ではなく明るい黄色で表示され、条件文は視認性のため明るい青で表示され -る。 - - -FORTRAN *fortran.vim* *ft-fortran-syntax* - -デフォルトのハイライトと方言 ~ -デフォルトでは f95 (Fortran 95) に相当するハイライトが行なわれる。Fortran 95 -は Fortran 90 のスーパーセットであり、かつ Fortran 77のほぼスーパーセットであ -るから、多くのユーザの多くのケースにとって適切な選択である。Fortran 2003 と -Fortran 2008 の機能にも対応しており、これはデフォルトの (f95) ハイライトの中で -自動的に利用可能である。 - -Fortranソースコードの形式 ~ -Fortran 9xのソースコードには固定形式と自由形式が有る。形式が誤って設定されてい -ると構文ハイライトが正しくされないことに注意。 - -新規にFortranのファイルを作成する場合には、構文ファイルは固定形式であると仮定 -する。常に自由形式を使う場合には > - :let fortran_free_source=1 -これを.vimrcでコマンド:syntaxを実行する前に行なう必要がある。常に固定形式を使 -うには > - :let fortran_fixed_source=1 -これも.vimrcでコマンド:syntaxを実行する前に行う必要がある。 - -ソースコードの形式がファイル拡張子によって決定できる場合には、ftpluginファイル -の1つでfortran_free_sourceを設定すると便利になる。ftpluginファイルについての詳 -細は|ftplugin|を参照のこと。例えば、拡張子.f90を持つファイルについては全て自由 -形式として扱い、それ以外のものは固定形式とする場合には、次のコードをftplugin -ファイルに記述すれば良い。 > - let s:extfname = expand("%:e") - if s:extfname ==? "f90" - let fortran_free_source=1 - unlet! fortran_fixed_source - else - let fortran_fixed_source=1 - unlet! fortran_free_source - endif -これは.vimrcで"syntax on"より前に"filetype plugin indent on"が書かれていないと -機能しないことに注意。 - -既存のFortranファイルを編集する時には、変数fortran_free_sourceが設定されていれ -ば構文ファイルは自由形式のソースであると仮定し、変数fortran_fixed_sourceが設定 -されていれば固定形式のソースであると仮定する。どちらも設定されていないときに -は、ファイルの先頭250行の行頭5カラムを調べて、その形式が固定なのか自由なのかを -決定しようと試みる。自由形式コードの兆候が見られない場合には、ファイルは固定形 -式コードとして取り扱われる。このアルゴリズムはほとんどのケースにおいて有効に機 -能する。しかしいくつかのケース、例えば先頭250行以上が行コメントで占められてい -るようなファイルでは、構文ファイルが固定形式コードであると誤った判断をしてしま -うだろう。そのような場合には、ファイルの先頭250行の行頭5桁のどこかに、コメント -以外の命令文を追加し、ファイルの保存(:w)そして再読込(:e!)を行なえば良い。 - -Fortranファイル内のタブ文字 ~ -標準のFortranではタブ文字は認識されない。固定桁位置での境界を必要とする固定形 -式のFortranソースコードでタブ文字を使用するのは良いアイデアではない。従ってタ -ブ文字はエラーとしてハイライトされる。しかしながらプログラマーによってはタブ文 -字を使用することを望む場合があるだろう。Fortranファイルにタブ文字が含まれてい -る場合には、変数fortran_have_tabsをコマンド:syntaxが実行される前に > - :let fortran_have_tabs=1 -このように.vimrcで設定すれば良い。タブ文字を使う場合には残念ながら、構文ファイ -ルによって不正な余白を検出することができなくなる。 - -Fortranファイルの構文による折り畳み ~ -foldmethod=syntaxを使用したいならば、まず変数fortran_foldを > - :let fortran_fold=1 -このようなコマンドで設定しなければならない。これにより構文ファイルはプログラム -単位の領域、プログラム命令文で始まるメインプログラム、サブルーチン、関数、サブ -プログラム、ブロックデータサブプログラム、そしてモジュールといったプログラム単 -位の領域で折り畳みを定義する。同時に変数fortran_fold_conditionalsを > - :let fortran_fold_conditionals=1 -このように設定すると、doループ、ifブロック、そしてselect-case構造の領域が折り -畳まれる。さらに変数fortran_fold_multilinecommentsも > - :let fortran_fold_multilinecomments=1 -このように設定すれば、3行以上にわたって続くコメントの領域が折り畳まれる。大き -なファイルに対してこのように構文による折り畳みを使用すると、非常に遅くなること -に注意。 - -fortran_foldを設定し、fortran_fold_conditionalsか -fortran_fold_multilinecomments(どちらか片方でも両方でも)を設定した場合には、 -foldmethod=syntaxを設定してある時に、Vimはファイルを折り畳む。2つのプログラム単 -位の間にあるコメントや空行は折り畳まれない。なぜならそれらは構文によって定義され -るプログラム単位に属していないからである。 - -より正確なFortranの構文 ~ -変数fortran_more_preciseを > - :let fortran_more_precise=1 -このようなコマンドで設定した場合には、構文ハイライトがより正確になるが動作は遅 -くなる。とりわけ、do、goto、そして算術if命令文に使用される命令ラベルが、do、if、 -selectもしくはforall構造の終端で使用される名前として認識されるようになる。 - -非標準のFortran方言 ~ -構文ファイルは5つのFotranの方言をサポートしている: f95, f90, f77, the Lahey -サブセットの elf90, そして Imagine1 サブセットの F. - -f77の拡張機能を使うときには、それがg77(GNU Fortran)を含む多くのコンパイラがサ -ポートしている一般的な、do/enddoループ、do/whileループ、自由形式ソースコード、 -拡張機能であるならば、恐らくデフォルトのハイライトで満足できるだろう。しかしな -がら、拡張機能を使用せずに厳密なf77を使用する場合や、自由形式やMIL STD 1753の -拡張を用いない場合には問題がある。そのような時に方言としてf77を指定することに -は、SUMのようなf9xの持つ関数として認識されてしまう名前が、ユーザ変数として認識 -されハイライトされないという利点がある。また廃れてしまったASSIGN命令文のような -構造も修正用TODOとしてはハイライトされなくなり、固定形式が仮定されるようになる。 - -elf90やFを使う場合には適切な方言を設定する。それにより、これらの方言においては -除外されるf90の機能はtodoとしてハイライトされ、これらの方言で必要とされる自由 -形式のソースコードが仮定される。 - -方言は変数fortran_dialectを設定することで選択できる。fortran_dialectに設定でき -る値には大小文字の区別があり"f95"、"f70"、"elf"もしくは"F"である。無効な値を -fortran_dialectへ設定した場合にはそれは無視される。 - -全てのFortranファイルで同じ方言を使用するならば、.vimrcでsyntax onが実行される -前にfortran_dialectを設定する。方言がファイルの拡張子に依存して決定する場合に -は、ftpluginファイル内で設定するのが最良の手段である。ftpluginファイル付いての -詳細な情報は、|ftplugin|を参照。例、全ての.f90という拡張子のファイルが"elf"サ -ブセットにより書かれているならば、ftpluginファイルに次のようなコードを書き足す -べきである > - let s:extfname = expand("%:e") - if s:extfname ==? "f90" - let fortran_dialect="elf" - else - unlet! fortran_dialect - endif -これは.vimrcで"syntax on"より前に"filetype plugin indent on"が書かれていないと -機能しないことに注意。 - -拡張子が方言を一意に決定できない場合には、もっと良い制御方法が必要になる。各 -ファイルの先頭3行以内にコメントで"fortran_dialect=xx"という命令を書けば方言の -設定を上書することができる(xxにはf77やelfやFやf90やf95が入る)。これによりファ -イル毎に方言を設定できる。例えば、古い.fファイルはf77の拡張を使用して書かれて -いるが、新しい.fファイルがFで書かれている場合には > - ! fortran_dialect=F -このような形で新しいファイルの先頭3行以内にコメントを追加することで、Fで書かれ -ていることが判別できるようになる。Fとelfの両方が指定された場合には、Fの方が優 -先される。 - -制限事項 ~ -丸カッコチェックは、閉じカッコの不足については捕捉できない。ホレリス定数は認識 -されない。幾つかのキーワードはFortran90の予約語ではないので誤ってハイライトさ -れる。 - -Fortranに関するその他の情報は|ft-fortran-indent|や|ft-fortran-plugin|を参照。 - -FVWM CONFIGURATION FILES *fvwm.vim* *ft-fvwm-syntax* - -*fvwmrc*または*fvwm2rc*というパターンにマッチしないFvwm設定ファイルを認識させ -るには、ファイルmyfiletypefile.vimであなたのシステムに合ったパターンを設定しな -ければならない。具体的には、変数"b:fvwm_version"にFvwmのメジャーバージョンを指 -定し、オプション'filetype'にfvwmを設定する。 - -例えば、/etc/X11/fvwm2/配下の全てのファイルをFvwm2の設定ファイルと認識させるに -は次のようにする: > - - :au! BufNewFile,BufRead /etc/X11/fvwm2/* let b:fvwm_version = 2 | - \ set filetype=fvwm - -全ての有効な色の名前をVimにハイライトさせるには、システムの色データベース -(rgb.txt)の位置を知らせる必要がある。これには変数"rgb_file"にその場所を設定す -る。色データベースが/usr/X11/lib/X11/にあるとすれば: > - - :let rgb_file = "/usr/X11/lib/X11/rgb.txt" - -このような内容をファイル.vimrcに追加する。 - - -GSP *gsp.vim* *ft-gsp-syntax* - -GSPページのデフォルトカラーは|html.vim|にて定義され、Javaコード(Javaタグ内部や -インラインのバッククォート内)のカラーは|java.vim|にて定義される。インライン -Javaコードをハイライトするために、|html.vim|で定義される以下のHTMLグループは、 -再定義されている: - - htmlString - htmlValue - htmlEndTag - htmlTag - htmlTagN - -書かれた大抵の場所のインラインJavaコードは適切にハイライトされるが、幾つかの特 -殊なケースではそうはならない。他のHTMLグループ内にインラインJavaコードを書いて -それが正しくハイライトされない場合には、必要な行を|html.vim|からコピーして -gspJavaをconstains節に加えれば、正しくハイライトされるようになる。 - -インラインJavaを示すバッククォートは、目立ちやすくするためにhtmlErrorグループ -でハイライトされる。 - - -GROFF *groff.vim* *ft-groff-syntax* - -groff構文ファイルは|nroff.vim|のラッパーであり、使用例と設定例についてはそこの -下に書かれている注意を参照。このラッパーの目的は、モードラインか個人用のファイ -ル定義ファイル(|filetype.txt|参照)からファイル形式をセットすることにより、 -groff構文拡張を設定することである。 - - -HASKELL *haskell.vim* *lhaskell.vim* *ft-haskell-syntax* - -Haskell構文ファイルは、プレーンHaskellコードとliterate Haskellコード両方を -サポートしている。後者はBirdスタイルとTeXスタイル両方に対応している。Haskell用 -の構文ハイライトはCプリプロセッサ命令もハイライトできる。 - -区切り文字もハイライトさせるには(明るい背景色を使っているなら便利)、次を.vimrc -に書き足す: > - :let hs_highlight_delimiters = 1 -TrueとFalseを通常の識別子と区別してキーワードとして扱うにはこれを書き足す: > - :let hs_highlight_boolean = 1 -プリミティブ型の名前をキーワードして扱うには: > - :let hs_highlight_types = 1 -比較的一般的な型の名前をキーワードとして扱うには: > - :let hs_highlight_more_types = 1 -デバッグ関数の名前をハイライトさせるには、これを.vimrcに書き足す: > - :let hs_highlight_debug = 1 - -Haskell用の構文ハイライトはCプリプロセッサ命令もハイライトし、#で始まるが命令 -として有効でない行をエラーとして警告する。Haskellの演算子の構文は#で始まること -もあるため、これらが干渉する。これらをエラーでなく演算子としてハイライトしたい -なら、次を.vimrcに書く: > - :let hs_allow_hash_operator = 1 - -literate Haskellコード用の構文ハイライトはファイルがTeXマークアップを含んでい -るかどうか、それに応じてTeX要素をハイライトするかどうかを自動的に推測しようと -する。.vimrcに次のような行を書くと、これをグローバルに上書きすることができる > - :let lhs_markup = none -と書くとまったくハイライトしなくする。または > - :let lhs_markup = tex -と書くと常にTeXマークアップをハイライトするように強制する。より柔軟に、この変 -数のバッファローカル版を使うことも出来る。例. > - :let b:lhs_markup = tex -と書くと特定のバッファにTeXハイライトさせるようにする。これはそのバッファに構 -文ハイライトを有効化するかファイルを読み込む前に設定しなければならない。 - - -HTML *html.vim* *ft-html-syntax* - -HTMLファイルのタグ用の構文ファイルは以下のように動作する。 - -開きタグの<>は、閉じタグの</>とは異なった色でハイライトされる。これは意図的に -そうしてある!。開きタグにはハイライト'Function'が使用され、閉じタグにはハイラ -イト'Type'が使用される(あなたの環境でこれらがどう定義されているかについては -syntax.vimを参照すること)。 - -既知のタグ名はC命令文と同じようにハイライトされる。未知のタグ名は間違いを見分 -けやすくするために、<>や</>と同じようにハイライトされる。 - -引数(もしくは属性)名にも同じことが言える。既知の属性名と未知の属性名には異なる -ハイライトがなされる。 - -幾つかのHTMLタグは表示する文字種を変更するために使用される。以下のタグは構文 -ファイルhtml.vimによって認識され、その内容は通常の文字種とは異なる文字種で表示 -される: <B> <I> <U> <EM> <STRONG> (<EM>は<I>のエイリアスとして使われ、<STRONG> -は<B>のエイリアス)、<H1> - <H6>、<HEAD>、<TITLE>そして<A>、ただしhrefが含まれ -ていてリンクとして使われている(例<A href="somefile.html">)場合。 - -それらのテキストの文字種を変更するには、以下の構文グループを再定義する必要があ -る: - - - htmlBold - - htmlBoldUnderline - - htmlBoldUnderlineItalic - - htmlUnderline - - htmlUnderlineItalic - - htmlItalic - - htmlTitle for titles - - htmlH1 - htmlH6 for headings - -この再定義が機能するためには最後の2つを除くすべてを再定義しなければならない。 -最後の2つ、htmlTitleとhtmlH[1-6]は任意である。そして次の変数をvimrcで設定しな -ければならない(初期化の際に読み込まれるファイルの順序のせい)。 > - :let html_my_rendering=1 - -この例については以下からmysyntax.vimをダウンロードすること。 -http://www.fleiner.com/vim/download.html - -次の行をvimrcに加えればこの描画を無効にできる: > - :let html_no_rendering=1 - -HTMLコメントはむしろ特別で(詳細はHTMLリファレンスドキュメントを参照)、すべての -エラーをハイライトする。しかしその間違ったスタイル(<!--で始まり--!>で終わる)を -使いたいならこれを定義する > - :let html_wrong_comments=1 - -HTMLドキュメント中に埋め込まれたJavaScriptやVisual Basicについては、文は -'Special'でハイライトされ、コメントや文字列などは標準のプログラミング言語と同 -じように色づけされる。現在のところサポートされているのはJapaScriptとVisual -Basicだけであり、他のスクリプト言語はまだ加えられていない。 - -カスケードスタイルシート(CSS)の埋め込みとインラインもハイライトされる。 - -htmlプロセッサ言語は複数ある。html.vimはインクルードしやすいように簡素に書かれ -ている。html.vimをインクルードするには以下の2行をその言語用の構文ファイルに書 -き足すこと(この例はasp.vimからとった): - - runtime! syntax/html.vim - syn cluster htmlPreproc add=asp - -そしてプリプロセッサ言語を含むすべての領域をクラスタhtmlPreprocに加えればよい。 - - -HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax* - -HTML/OS用のカラースキームは以下のように機能する: - -デフォルトでは関数名と変数名は同じである。これは、Vimは関数と識別子に異なる色 -を指定しないためである。これを変えるには(関数名を違う色にしたいならこうすると -よい)次の行を~/.vimrcに書き加える: > - :hi Function term=underline cterm=bold ctermfg=LightGray - -もちろん好みに応じてctermfgは違う色にしてよい。 - -HTML/OSに関するもう1つの問題は、ファイルがHTML/OSコーディングであることを示す -特別なファイル形式が存在しないことである。そのため、ファイルを開いた後に次のよ -うにしてHTML/OS構文をオンにしなければならない: > - :set syntax=htmlos - -HTML/OSコードのブロックの開始と終了を示す文字は、それぞれ<<または[[, ->>または]]のどちらであってもよい。 - - -IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax* - -Intel Itanium 64アセンブリ言語用のハイライト。このファイル形式を認識させる方法 -については|asm.vim|を参照。 - -*.incファイルをIA64と認識させるには次を.vimrcに書き足す: > - :let g:filetype_inc = "ia64" - - -INFORM *inform.vim* *ft-inform-syntax* - -Inform構文ハイライトはInform Libraryによって提供されるシンボルを含んでいる。ほ -とんどのプログラムがそれを利用しているためである。Libraryのシンボルをハイライ -トさせたくないなら、次をvim初期化ファイルに加える: > - :let inform_highlight_simple=1 - -デフォルトではInformプログラムはZ-machineターゲットと仮定され、Z-machineアセン -ブリ言語シンボルが適切にハイライトされる。もしプログラムがGlulx/Glk環境をター -ゲットとしたものなら、次を初期化ファイルに加える: > - :let inform_highlight_glulx=1 - -こうすると代わりにGlulxオペコードをハイライトし、glk()をシステム関数としてハイ -ライトする。 - -Informコンパイラはある古いキーワードをエラーとみなす。普通、これらのキーワード -はエラーとしてハイライトされる。これをエラーとしてハイライトするのをやめるには、 -次を初期化ファイルに加える: > - :let inform_suppress_obsolete=1 - -デフォルトではハイライトされる言語機能はコンパイラのバージョン6.30とライブラリ -のバージョン6.11に従う。これより古いInform開発環境を使っているなら、次の行を初 -期化ファイルに加えるとよいかもしれない: > - :let inform_highlight_old=1 - -IDL *idl.vim* *idl-syntax* - -IDL (Interface Definition Language) ファイルは RPC 呼び出しを定義するために使 -われる。Microsoft の世界では COM インターフェイスと呼び出しの定義にも使われる。 - -IDL の構造は単純であるため、ヒューリスティックな方法でなく、完全に文法にのっとっ -たアプローチができる。その結果は巨大でいくぶん冗長であるが、一応は機能するよう -である。 - -idl ファイルには Microsoft 拡張がある。それらのうちいくつかは -idl_no_ms_extensions を定義すると無効になる。 - -より複雑な拡張は idl_no_extensions を定義すると無効になる。 - -変数 効果 ~ - -idl_no_ms_extensions Microsoft 独自の拡張の一部を無効にする -idl_no_extensions 複雑な拡張を無効にする -idlsyntax_showerror IDL エラーを表示する (少々うるさいがとても助け - になる) -idlsyntax_showerror_soft エラーに対してデフォルトでよりソフトな色を使う - - -JAVA *java.vim* *ft-java-syntax* - -java.vim構文ハイライトファイルはいくつかのオプションを提供している: - -Java 1.0.2では丸括弧の内側に波括弧が入ることは絶対になかったため、これはエラー -と判断された。Java1.1以降では(無名クラスとともに)これが可能になったため、エ -ラーと判断されなくなった。もし以前のようにしたいなら、vimの初期化ファイルに次 -の行を加えること: > - :let java_mark_braces_in_parens_as_errors=1 - -java.lang.*中の全ての識別子は常に全てのクラスから見える。これらをハイライトす -るには - :let java_highlight_java_lang_ids=1 -とする。 - -http://www.fleiner.com/vim/download.html にあるスクリプトjavaid.vimをダウンロー -ドすれば、ほとんどのJava標準パッケージの識別子をハイライトすることもできる。 -java.ioなど特定のパッケージの識別子だけをハイライトしたいならばこうする: > - :let java_highlight_java_io=1 -対応している全パッケージのリストはjavaid.vimを参照のこと。 - -関数を認識する方法はJavaコードの書き方に依存するため、関数名はハイライトされな -い。構文ファイルは関数をハイライトする方法を2つ備えている: - -関数宣言が常にタブ、スペース8個、スペース2個のいずれかでインデントされているな -ら > - :let java_highlight_functions="indent" -とするとよいかもしれない。 -しかし、関数とクラスの命名(大文字・小文字についての)に関するJavaガイドラインに -したがっているなら > - :let java_highlight_functions="style" -とすること。 -もしどちらのオプションもだめで、それでも関数宣言をハイライトしたいなら、 -java.vim中の定義を変更するか、もとのjava.vimに関数をハイライトするコードを加え -て自分用のjava.vimを作るかして独自の定義を作るしかない。 - -Java 1.1では、System.out.println()とSystem.err.println()はデバッグのためだけに -使われるものだった。そのためデバッグ用の文を区別してハイライトすることができる。 -それには次の定義を初期化ファイルに加える: > - :let java_highlight_debug=1 -するとデバッグ用の文が'Special'の文字としてハイライトされるだろう。これらを別 -の色でハイライトさせるには、以下のグループに対して新しいハイライトを定義するこ -と: - Debug, DebugSpecial, DebugString, DebugBoolean, DebugType -これらはそれぞれ、文、デバッグ文字列に使われる特別な文字、文字列、ブール型定 -数、型(this, super)に使われる。私はこれらの文に異なる背景色をつけることにして -いる。 - -Java と C++ 間で移植が容易なコードを書くための支援として、Java プログラム内 -の C++ キーワードをエラーとしてハイライトすることができる。そうするには次の -行を .vimrc に書く: > - :let java_allow_cpp_keywords=1 - -JavadocはJavaプログラム中から特別なコメントを抜き出してHTMLページを作成するプ -ログラムである。標準の設定ではこれらのHTMLコードをHTMLファイル(|html.vim|を参 -照)と同様にハイライトする。さらにこのコードの中にjavascriptとCSSを書くこともで -きる(後述)。しかし4つの違いがある: - 1. タイトル(その後にホワイトスペースが続く最初の'.'まで、または最初の'@'まで - のすべての文字)は異なる色でハイライトされる(この色を変更するには - CommentTitleを変えること)。 - 2. テキストは'Comment'としてハイライトされる。 - 3. HTMLコメントは'Special'としてハイライトされる。 - 4. 特別なJavadocタグ(@see, @param, ...)はSpecialとして、(@see, @param, - @exceptionなどの)引数はFunctionとしてハイライトされる。 -この機能をオフにするには初期化ファイルに次の行を加えること: > - :let java_ignore_javadoc=1 - -以上のjavadocコメントを使う場合、javascript、visual basicスクリプト、埋め込み -CSS(スタイルシート)のハイライトをすることもできる。これは実際にjavascriptや埋 -め込みCSSを含むjavadocコメントがあるときだけ意味がある。これらを有効化するため -のオプションは次の通り > - :let java_javascript=1 - :let java_css=1 - :let java_vb=1 - -ネストした丸括弧に異なる色をつけるには、javaParen、javaParen1、javaParen2に異 -なる色を定義する。例えば > - :hi link javaParen Comment -あるいは > - :hi javaParen ctermfg=blue guifg=#0000ff - -上方向にスクロールしていてハイライトがおかしくなった場合(CTRL-Lで再描画すると -直る)、内部変数"java_minlines"を大きくしてみるとよい: > - :let java_minlines = 50 -こうすると表示行の50行前から構文シンクロナイズが始まるようになる。デフォルト値 -は10である。大きな値にすることの不利点は、再描画が遅くなることである。 - - -LACE *lace.vim* *ft-lace-syntax* - -Lace (Language for Assembly of Classes in Eiffel)は大文字・小文字を無視する。 -しかしスタイルガイドラインはそうでない。大文字・小文字を区別してハイライトさせ -るには、vim変数'lace_case_insensitive'を初期化ファイル中で定義すればよい: > - :let lace_case_insensitive=1 - - -LEX *lex.vim* *ft-lex-syntax* - -"^%%$"セクションデリミタが、その後にどんなセクションが続くかの手がかりを与えな -いため、Lexはブルートフォースなシンクロナイズを行う。それゆえ(巨大なlexファイ -ルなどで)同期の問題が起こる場合には: > - :syn sync minlines=300 -の値を変更するとよいかもしれない。 - - -LIFELINES *lifelines.vim* *ft-lifelines-syntax* - -廃止された関数をエラーとしてハイライトしたい場合は .vimrc で次のように設定して -ください: > - - :let g:lifelines_deprecated = 1 -< -LISP *lisp.vim* *ft-lisp-syntax* - -lisp の構文ハイライトには2つのオプションがある: > - - g:lisp_instring : この変数が存在すると "(...)" 形式の文字列が、その中 - 身が lisp であるかのようにハイライトされる。AutoLisp - 用に便利である。 - g:lisp_rainbow : この変数が存在し、0以外であると段階の異なる括弧に - 対して異なるハイライトがつくようになる。 -< -オプション g:lisp_rainbow は括弧とバッククォートされた括弧に対して10段階の異な -る色をつける。色づけ段階の多さのため、rainbow モード自身が ctermfg とguifg を -使ってハイライトを指定する (rainbow モードでない場合はそうではない)。それゆえ、 -ハイライトグループを使う普通のカラースキームの影響を受けない。実際にどうハイラ -イトされるかはdark/bright の設定 (|'bg'| を参照) による。 - - -LITE *lite.vim* *ft-lite-syntax* - -lite構文ハイライトには2つのオプションがある。 - -文字列中でSQL構文ハイライトを行ってほしいならこうする: > - - :let lite_sql_query = 1 - -シンクロナイズの最小行数はデフォルトで100になっている。他の値に変えたいなら -"lite_minlines"をセットすればよい。例: > - - :let lite_minlines = 200 - - -LPC *lpc.vim* *ft-lpc-syntax* - -LPCはシンプルでメモリ効率的な言語、Lars Pensj| Cの略である。LPCのファイル名は -通常*.cである。これらのファイルをLPCと認識するとCプログラムのみを書くユーザの -迷惑になる。LPC構文を使用したいなら、.vimrcでこの変数をセットすること: > - - :let lpc_syntax_for_c = 1 - -これでも適切に動作しないCまたはLPCのファイルに対してはモードラインを使うこと。 -LPCファイルには: - - // vim:set ft=lpc: - -LPCと認識されてしまうCファイルには: - - // vim:set ft=c: - -変数をセットしたくないなら全てのLPCファイルでモードラインを使うこと。 - -LPCには複数の実装がある。我々はもっとも広く使われているものをサポートしたいと -思っている。デフォルトのLPC文法はMudOSシリーズ用である。MudOS v22以前を使って -いるなら、次をセットすることによりsensible モディファイヤをオフにし、v22以降の -新しいefunを無効にするとよい。MudOSの最新版を使っているときはこの変数をセット -しないこと: > - - :let lpc_pre_v22 = 1 - -LPCのLpMud 3.2シリーズには: > - - :let lpc_compat_32 = 1 - -LPCのLPC4シリーズには: > - - :let lpc_use_lpc4_syntax = 1 - -LPCのuLPCシリーズには: -uLPCはPike用に開発されている。なのでPike構文を代わりに使い、ソースファイルの名 -前を.pikeとすること。 - - -LUA *lua.vim* *ft-lua-syntax* - -この構文ファイルはLua 4.0とLua 5.0, 5.1(デフォルト)用に使える。グローバル変数 -lua_version と lua_subversion を使うと、これらのバージョンを指定することができ -る。例えば、Lua 4.0 の構文ハイライトを有効にするには次のコマンドを使う: > - - :let lua_version = 4 - -Lua 5.0 を使っているなら、次のコマンドを使う: > - - :let lua_version = 5 - :let lua_subversion = 0 - -ハイライトを Lua 5.1 に戻すには次のようにする: > - - :let lua_version = 5 - :let lua_subversion = 1 - - -MAIL *mail.vim* *ft-mail.vim* - -Vimはemailの標準的な要素(ヘッダ、シグネチャ、引用文、URL / emailアドレス)の全 -てをハイライトする。標準的な慣習に従い、シグネチャは、"--"とそれに続く任意個の -空白、そして改行のみからなる行で始まる。 - -Vimは']', '}', '|', '>'で始まる行または'>'が続く単語を引用文とみなす。引用文中 -のヘッダとシグネチャについては、テキストが'>'(1個のスペースが続いてもよい)で引 -用された場合のみハイライトする。 - -デフォルトではmail.vimは先頭表示行の100行前までの構文をシンクロナイズさせる。 -遅いマシンを使っていて、一般的に短いヘッダのemailを扱っているなら、これをより -小さい値に変えることが出来る: > - - :let mail_minlines = 30 - - -MAKE *make.vim* *ft-make-syntax* - -Makefileではエラーを見つけやすくするためにコマンドがハイライトされる。しかし、 -これは色が多すぎるかもしれない。この機能をオフにするにはこうする: > - - :let make_no_commands = 1 - - -MAPLE *maple.vim* *ft-maple-syntax* - -Waterloo Maple IncによるMaple Vは記号代数をサポートしている。その言語はユーザ -によって選択的にロードされる関数のパッケージをたくさんサポートしている。Maple -V release 4で供給される標準的なパッケージセットの関数がユーザの判断によって強 -調される。ユーザは.vimrcに以下を書くと、全てのパッケージ関数がハイライトされる: > - - :let mvpkg_all= 1 - -あるいは以下の表から任意のサブセット変数/パッケージを選んで.vimrcファイル中で -その変数を1にセットしてもよい($VIMRUNTIME/syntax/syntax.vimを読み込む前に行う -必要がある)。 - - Maple V パッケージ関数選択肢の表 > - mv_DEtools mv_genfunc mv_networks mv_process - mv_Galois mv_geometry mv_numapprox mv_simplex - mv_GaussInt mv_grobner mv_numtheory mv_stats - mv_LREtools mv_group mv_orthopoly mv_student - mv_combinat mv_inttrans mv_padic mv_sumtools - mv_combstruct mv_liesymm mv_plots mv_tensor - mv_difforms mv_linalg mv_plottools mv_totorder - mv_finance mv_logic mv_powseries - - -MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax* - -次を .vimrc に書いておかないかぎり、空の *.m ファイルは自動的に Matlab のファ -イルであるとみなされる: > - - let filetype_m = "mma" - - -MOO *moo.vim* *ft-moo-syntax* - -式の中でCスタイルのコメントを使っていて、それがハイライトを乱している場合は、C -スタイル用の拡張マッチ(これは遅い!)を使うことが出来る: > - - :let moo_extended_cstyle_comments = 1 - -文字列中の代名詞置換パターンのハイライトを無効化させるには: > - - :let moo_no_pronoun_sub = 1 - -正規表現演算子'%l'のハイライトと文字列中の'%('と'%)'のマッチを無効化させるには: -> - - :let moo_no_regexp = 1 - -対応していないダブルクォートを認識してエラーとしてハイライトすることが出来る: -> - - :let moo_unmatched_quotes = 1 - -組み込みプロパティ(.name, .location, .programmerなど)をハイライトするには : > - - :let moo_builtin_properties = 1 - -未知の組み込み関数を認識してエラーとしてハイライトすることが出来る。このオプショ -ンを使うなら、mooKnownBuiltinFunctionグループに自分自身の拡張を加えること。こ -のオプションを有効化するには: > - - :let moo_unknown_builtin_functions = 1 - -既知の組み込み関数のリストにsprintf()を加える例: > - - :syn keyword mooKnownBuiltinFunction sprintf contained - - -MSQL *msql.vim* *ft-msql-syntax* - -msql構文ハイライトには2つのオプションがある。 - -文字列中でSQL構文ハイライトをさせるにはこうする: > - - :let msql_sql_query = 1 - -シンクロナイズは、minlinesはデフォルトで100になっている。この値を変えるには、 -"msql_minlines"の望む値にすればよい。例: > - - :let msql_minlines = 200 - - -NCF *ncf.vim* *ft-ncf-syntax* - -NCF構文ハイライトには1つのオプションがある。 - -ncf.vimによって認識されない文をエラーとしてハイライトさせるにはこうする: > - - :let ncf_highlight_unknowns = 1 - -これらをエラーとしてハイライトさせたくない場合は、この変数をセットしないでおく。 - - -NROFF *nroff.vim* *ft-nroff-syntax* - -nroff構文ファイルはそのままでAT&T n/troffに対応している。構文ファイルに含まれ -ているGNU groff拡張機能を使うには、それを有効化する必要がある。 - -例えば、LinuxとBSDディストリビューションは、デフォルトではテキスト処理パッケー -ジとしてgroffを使う。groff用の拡張構文ハイライト機能を有効化するには、次のオプ -ションを初期化ファイルに加える: > - - :let b:nroff_is_groff = 1 - -groffは、Solarisでまだ使われているかもしれない古いAT&T n/troffとは異なる。 -groffのマクロとリクエスト名は2文字以上の長さであってもよく、言語プリミティブに -拡張がされている。例えば、AT&T troffではリクエスト\(yrを使い、2桁の数で年にア -クセスする。groffでは互換性のために同じリクエストを使うことも出来るし、または -groffネイティブの構文,\[yr]を使うことも出来る。さらに、\[year]として4桁の年を -直接使うことも出来る。マクロリクエストは2文字以上の長さであってもよい。例え -ば、GNU mmはverbatim環境を作るのに".VERBON"と".VERBOFF"というリクエストを受け -つける。 - -g/troffによって得られる最良の整形された出力を得るには、スペースと句読点に関す -るいくつかの単純なルールに従うべきである。 - -1. 行の末尾に空のスペースを置かないこと - -2. 文末のピリオド、エクスクラメーションマークなどの後にはちょうど1個のスペース - を置くこと。 - -3. 後述の理由により、全てのピリオドの後に改行(carriage return)を置くとよい。 - -これらの妙なtipsの理由は、g/n/troffが改行に、これらのルールに従わないとすぐに -混乱してしまうアルゴリズムを使っているためである。 - - -troffはTeXと違い、段落ごとでなく行ごとにテキストを書き込む。さらに、glueや -stretchの概念を持たず、入力に水平、垂直の空白があると全てそのまま出力される。 - -それゆえ、最終的なドキュメントで意図する以上の空白を文と文の間にはさまないよう -に注意すること。この理由のため、全ての句読点記号の後すぐに改行を入れるという習 -慣がある。最終的に処理された出力が「一様な」テキストになってほしければ、入力の -テキストで正しくスペースを置いておく必要がある。行末の空白と句読点の後の2個以 -上の空白をエラーとしてハイライトしたいならこうする: > - - :let nroff_space_errors = 1 - -正しい活字組みと干渉するかもしれないが、余分な空白や他のエラーを検出するもう1 -つの方法は、設定ファイル中で構文グループ"nroffDefinition"と"nroffDefSpecial"に -目立つハイライト定義を定義することである。例: > - - hi def nroffDefinition term=italic cterm=italic gui=reverse - hi def nroffDefSpecial term=italic,bold cterm=italic,bold - \ gui=reverse,bold - -ソースファイル中のプリプロセッサのエントリをセクションマーカーと同じくらい容易 -に表示させたいなら、.vimrc中で次のオプションを有効化する: > - - let b:preprocs_as_sections = 1 - -同様に、構文ファイルはmsパッケージ中の拡張段落マクロ(.XP)用の余分な段落マーカー -も含んでいる。 - -最後に、構文ファイル|groff.vim|が存在する。これはデフォルトでfile basisとグ -ローバルの両方でgroff構文ハイライトすることができる。 - - -OCAML *ocaml.vim* *ft-ocaml-syntax* - -OCaml構文ファイルは以下の拡張子を持つファイルに対応している: .ml, .mli, .mll -.mly。以下の変数をセットすると、標準的OCaml構文からcamlp4プリプロセッサでサ -ポートされている修正構文に切り替えることが出来る: > - - :let ocaml_revised = 1 - -以下の変数をセットすると"end"をエラーとしてハイライトするのをやめることが出来 -る。これはVimがシンクロナイズできないほど長い構造を含むソースのとき便利である: -> - - :let ocaml_noend_error = 1 - - -PAPP *papp.vim* *ft-papp-syntax* - -PApp構文ファイルは.pappファイルと、その小さな拡張、トップレベルのファイル -フォーマットとしてxmlを用いたperl/xml/html/その他の混合である.pxml, .pxslファ -イルを扱う。デフォルトでは、phtmlやpxmlセクションの内側の全ては埋め込みプリプ -ロセッサコマンドつきの文字列として扱われる。次の変数を初期化ファイルで設定する -とphtmlセクションの内側のhtmlコードを構文ハイライトしようとする: > - - :let papp_include_html=1 - -しかしこれは比較的遅く、実用的に編集するにはカラフルすぎる。 - -構文ファイルpapp.vimの最新版は、通常以下で得られる。 -http://papp.plan9.de - - -PASCAL *pascal.vim* *ft-pascal-syntax* - -"*.p"にマッチするファイルのタイプはProgressかPascalである。自動判別が機能しな -いなら、またはProgressファイルを一切編集しないとわかっているなら、これをvimrc -ファイルに書くといい: > - - :let filetype_p = "pascal" - -Pascal構文ファイルはTurbo Pascal, Free Pascal CompilerとGNU Pascal Compiler -で提供される拡張に対応するための拡張が施されてきた。Delphiのキーワードもサポー -トされている。デフォルトではTurbo Pascal 7.0の機能が有効化されている。標準的な -Pascalのキーワードだけを使いたいなら、次の行を初期化ファイルに加えること: > - - :let pascal_traditional=1 - -Delphi固有の構文(1行コメント、キーワード等)を有効化したいなら: > - - :let pascal_delphi=1 - - -オプションpascal_symbol_operatorは、+, *などのような演算子記号をOperatorの色を -使って表示するどうかを制御する。演算子記号を色づけするには、次の行を初期化ファ -イルに加えること: > - - :let pascal_symbol_operator=1 - -いくつかの関数はデフォルトでハイライトされる。これをオフにするには: > - - :let pascal_no_functions=1 - -さらに、いくつかのコンパイラ用に個別の変数がある。pascal_delphi, -pascal_gpc, pascal_fpcがある。デフォルトの拡張はTurbo Pascalに合うようになって -いる。 > - - :let pascal_gpc=1 - -または > - - :let pascal_fpc=1 - -文字列が1行で定義されるものとするなら、変数pascal_one_line_string variableを定 -義するとよい。 > - - :let pascal_one_line_string=1 - -タブ文字が好きでないなら、変数pascal_no_tabsをセットするとよい。するとタブがエ -ラーとしてハイライトされる。 > - - :let pascal_no_tabs=1 - - -PERL *perl.vim* *ft-perl-syntax* - -perl用の構文ハイライトにはたくさんのオプションがある。 - -PODファイルやPODセグメントを使っているなら、こうするとよいかもしれない: > - - :let perl_include_pod = 1 - -パースの複雑さを軽減するために (そしてパフォーマンスを上げるために) 、変数名と -内容のパースにおける2つの要素をオフにすることができる。 > - -変数名と関数名中のパッケージ参照('$PkgName::VarName'中の'PkgName::'のような)を -他の名前と区別しないようにするには次のようにする: > - - :let perl_no_scope_in_variables = 1 - -(Vim 6.x では違う方法だった: "perl_want_scope_in_variables" を設定するとこの機 -能が有効になった) - -'@{${"foo"}}'のように複雑なものをパースさせたくないなら次のようにする: > - - :let perl_no_extended_vars = 1 - -(Vim 6.x では違う方法だった: "perl_extended_vars" を設定するとこの機能が有効に -なった) - -文字列の色づけは変更できる。デフォルトでは文字列とqq friendsは第1行と同じよう -にハイライトされる。変数perl_string_as_statementをセットすると第2行のようにハ -イライトされる。 - - "hello world!"; qq|hello world|; - ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) - S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN (let perl_string_as_statement) - -(^ = perlString, S = perlStatement, N = None at all) - -シンクロナイズには3つのオプションがある。最初の2つは、シンクロナイズのトリガー -の一部をオフにするもので、ハイライトが適切に機能しないときのみ必要になる。スク -ロール中に突然スクリーン全体の色がすっかり変わってしまったらこれらのうち1つを -オフにしてみること。その誤りを引き起こした行を特定できるなら、それを知らせてく -ださい。 - -1つのトリガーは"^\s*sub\s*"に関するもので、もう1つはほぼ"^[$@%]"に関するもので -ある。 > - - :let perl_no_sync_on_sub - :let perl_no_sync_on_global_var - -以下のようにして、どこから構文ハイライトを始めるかの最大距離を設定できる: > - - :let perl_sync_dist = 100 - -perlで折りたたみを使いたいならperl_foldをセットすること: > - - :let perl_fold = 1 - -if 文などでも同様にブロックを折り畳みたければ、次のように設定する: > - - :let perl_fold_blocks = 1 - -perl の折り畳みが有効になっているとき、package や sub を折り畳みたくなければ、 -対応する変数を設定する: > - - :unlet perl_nofold_packages - :unlet perl_nofold_subs - - - -PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* - -[注意: これは以前は"php3"と呼ばれていた。しかし現在はphp4もサポートしているの -で"php"と名前が変更された] - -php用の構文ハイライトには以下のオプションがある。 - -文字列中でSQL構文ハイライトを行いたいなら: > - - let php_sql_query = 1 - -Baselibメソッドのハイライトを行いたいなら: > - - let php_baselib = 1 - -文字列中でHTML構文ハイライトを行いたいなら: > - - let php_htmlInStrings = 1 - -古いカラースタイルを使いたいなら: > - - let php_oldStyle = 1 - -ASPスタイルのショートタグを有効化したいなら: > - - let php_asp_tags = 1 - -ショートタグを無効化したいなら: > - - let php_noShortTags = 1 - -] や ) の対応エラーをハイライトしたいなら: > - - let php_parent_error_close = 1 - -対応する閉じ括弧がない開き括弧( や [が存在する場合、php終了タグをスキップさせ -たいなら: > - - let php_parent_error_open = 1 - -クラスや関数の折り畳みを有効化するには: > - - let php_folding = 1 - -シンクロナイズ方法を選ぶには: > - - let php_sync_method = x - -x = -1 で検索によるシンクロナイズ(デフォルト) -x > 0 少なくともx行上までシンクロナイズ -x = 0 最初からシンクロナイズ - - -PLAINTEX *plaintex.vim* *ft-plaintex-syntax* - -TeX とは組版言語であり、plaintex は「素の」TeX に対して使われるファイルタイプ -である。*.tex ファイルを決して素の TeX と認識してほしくないならば -|ft-tex-plugin| を参照。 - -この構文ファイルは次のオプションを持つ > - - let g:plaintex_delimiters = 1 - -角括弧 "[]" と波括弧 "{}" をハイライトさせるには上の変数を設定する。 - -PPWIZARD *ppwiz.vim* *ft-ppwiz-syntax* - -PPWizardはHTMLとOS/2 INFファイル用のプリプロセッサである。 - -構文ファイルは以下のオプションを持つ: - -- ppwiz_highlight_defs : PPWizardの定義についてのハイライトモードを決める。 - とりうる値は - - ppwiz_highlight_defs = 1 : #define 文においてその内容の色を保つ(例. PPWizard - マクロと変数) - - ppwiz_highlight_defs = 2 : 行継続記号を除き、#defineと#evaluate文が単一の色 - で表示される。 - - ppwiz_highlight_defsのデフォルトは1である。 - -- ppwiz_with_html : この値が1(デフォルト)なら、HTMLコードをハイライトする。0なら - HTMLコードを通常のテキストのように扱う。 - - -PHTML *phtml.vim* *ft-phtml-syntax* - -phtml用の構文ハイライトには2つのオプションがある。 - -文字列中でSQL構文ハイライトをさせたいならこうする: > - - :let phtml_sql_query = 1 - -シンクロナイズについては、minlinesのデフォルトは100になっている。他の値にした -いなら"phtml_minlines"を望む値にセットすればよい。例: > - - :let phtml_minlines = 200 - - -POSTSCRIPT *postscr.vim* *ft-postscr-syntax* - -PostScript用の構文ハイライトにはいくつかのオプションがある。 - -まず、どのバージョンのPostScript言語をハイライトするかである。現在のところ、言 -語の3つのバージョン、あるいはレベルが定義されている。レベル1はオリジナルの基本 -バージョンで、レベル2のリリース以前のすべての拡張を含んでいる。レベル2はもっと -も一般的なバージョンで、レベル3リリース以前のすべての拡張を含んでいる。レベル3 -は現在のところサポートされている中でもっともレベルが高い。次のように変数 -postscr_levelを定義することによって、PostScript言語のどのレベルをハイライトす -るか選ぶことができる: > - - :let postscr_level=2 - -この変数が定義されていないときはデフォルトの2(レベル2)になる。これが現在のとこ -ろもっとも普及しているためである。 - -すべてのPSインタープリタがその言語レベルのすべての言語機能をサポートしているわ -けではないことに注意。とくに、PSファイルの先頭の%!PS-Adobe-3.0は現在の -PostScriptがレベル3であることを示すわけではない! - -以下のように変数postscr_displayを定義すると、Display PostScriptの言語機能もハ -イライトさせることができる: > - - :let postscr_display=1 - -以下のように変数postscr_ghostscriptを定義すると、Ghostscript固有の言語機能もハ -イライトさせることができる: > - - :let postscr_ghostscript=1 - -PostScriptはたくさんの定義済み要素を持つ巨大な言語である。これらの要素すべてを -ハイライトすると便利であるが、そうすると遅いマシンではVimの動作が遅くなってし -まう。マシンフレンドリーにするために、デフォルトではフォント名と文字エンコーディ -ングはハイライトされない、これらをハイライトさせるには、以下の変数のどちらか -または両方をセットすること: > - - :let postscr_fonts=1 - :let postscr_encodings=1 - -and、or、notのハイライトについて、スタイル上のオプションが存在する。PostScript -では、これらの演算子の機能はオペランドの型に依存する。オペランドが両方ブール型 -なら論理演算子となり、両方整数型なら2項演算子となる。2項演算子と論理演算子を区 -別してハイライトすることができるので、どちらにしてもこれらはハイライトされなけ -ればならない。デフォルトではどちらも論理演算子としてハイライトされる。変数 -postscr_andornot_binaryを定義すると、どちらも2項演算子としてハイライトされる: > - - :let postscr_andornot_binary=1 -< - - *ptcap.vim* *ft-printcap-syntax* -PRINTCAP + TERMCAP *ft-ptcap-syntax* *ft-termcap-syntax* - -この構文ファイルはprintcapとtermcapデータベースに適用される。 - -*printcap*または*termcap*というパターンにマッチしないprintcap/termcapファイル -を認識させるためには、ファイル|myfiletypefile|において、あなたのシステムに合っ -たパターンを追加しなければならない。これらのパターンには、変数"b:ptcap_type"を -"print"か"term"のどちらかにセットしなければならない。するとオプション -'filetype'の値がptcapになる。 - -例えば、/etc/termcaps/以下の全てのファイルをtermcapファイルと識別させるように -するには次を書き加える: > - - :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" | - \ set filetype=ptcap - -上方向にスクロールしているときハイライトがおかしくなり、それがCTRL-Lで再描画す -ると直るようなら、変数"ptcap_minlines"の値を大きくしてみるとよい: > - - :let ptcap_minlines = 50 - -(デフォルトは20行) - - -PROGRESS *progress.vim* *ft-progress-syntax* - -"*.w"にマッチするファイルのタイプはProgressかCWEBである。自動判別がうまく機能 -しないなら、またはcwebファイルを一切編集しないとわかっているなら、次をvimrcに -加えるとよい: > - :let filetype_w = "progress" -同じことが"*.i"(アセンブリでもありうる)と"*.p"(Pascalでもありうる)にもいえる。 -アセンブリとPascalを使わないとわかっているならこれを使うこと: > - :let filetype_i = "progress" - :let filetype_p = "progress" - - - -PYTHON *python.vim* *ft-python-syntax* - -Python構文ハイライトをコントロールするオプションは4つある。 - -数字のハイライト: > - :let python_highlight_numbers = 1 - -組み込み関数のハイライト: > - :let python_highlight_builtins = 1 - -標準例外のハイライト: > - :let python_highlight_exceptions = 1 - -行末の空白と、スペースとタブの混在をハイライト: > - :let python_highlight_space_errors = 1 - -全てのハイライトを有効化させるには(上の3つのオプションをセットするのと同じ): > - :let python_highlight_all = 1 - - -QUAKE *quake.vim* *ft-quake-syntax* - -Quake構文定義はQuakeエンジンのどれかに基づくほとんど全てのFPS(First Person -Shooter)用に対応するはずである。しかし3つのゲーム(Quake, Quake 2, Quake 3 -Arena)間でコマンド名が少々異なる。そのため、3つのグローバル変数により、どのコ -マンドが有効であるか指定できるようになっている。3つの変数には次のような効果が -ある: - -Quakeでのみ利用可能なコマンドをハイライトするように設定: > - :let quake_is_quake1 = 1 - -Quake 2でのみ利用可能なコマンドをハイライトするように設定: > - :let quake_is_quake2 = 1 - -Quake 3 Arenaでのみ利用可能なコマンドをハイライトするように設定: > - :let quake_is_quake3 = 1 - -これら3つのコマンドを自由に組み合わせることが出来る。しかしゲームで利用できな -いコマンドもハイライトしてしまうかもしれない。 - - -READLINE *readline.vim* *ft-readline-syntax* - -readlineライブラリは主としてBASHシェルで使われ、BASHはかなりの数のコマンドとオ -プションを追加している。これらの項目を同様にハイライトするには次を|vimrc|に加 -えるか、readline構文ファイルを読み込む前にこれをタイプすればよい: > - let readline_has_bash = 1 - -こうするとBASH(バージョン2.05a以降。一部それ以前)が追加するコマンドもハイライ -トするようになる。 - - -REXX *rexx.vim* *ft-rexx-syntax* - -上方向にスクロールしているときにハイライトがおかしくなり、それがCTRL-Lで再描画 -すると直るようなら、変数"rexx_minlines"の値を大きくしてみるとよい: > - :let rexx_minlines = 50 -こうすると構文シンクロナイズが画面最上行の50行前から始まるようになる。値を大き -くすることの欠点は、再描画が遅くなることである。 - -Vim は ".r" ファイルのタイプを推測しようとします。(コメント行から) タイプを特 -定できなかった場合、デフォルトは "r" です。デフォルトを rexx にするには次の行 -を .vimrc に追加します: *g:filetype_r* -> - :let g:filetype_r = "r" - - -RUBY *ruby.vim* *ft-ruby-syntax* - -Ruby構文ハイライトにはたくさんのオプションがある。 - -デフォルトではキーワード"end"はそれに対応するブロック開始文にしたがって色づけ -される。この機能は便利だが、コストがかかる。再描画が遅くなったら(または色機能 -の貧弱なターミナルを使っているなら)変数"ruby_no_expensive"を定義することによっ -てこの機能をオフにできる: > - - :let ruby_no_expensive = 1 -< -この場合すべての制御キーワードに同じ色が使われる。 - -この機能を有効化したいが、上にスクロールしているときにハイライトがおかしくなり、 -それがCTRL-Lで再描画すると直るようなら、変数"ruby_minlines"を50以上の値にセッ -トしてみるとよい: > - - :let ruby_minlines = 100 -< -理想的にはこの値はファイル中の最も大きいクラスやモジュールの長さよりも大きくし -ておくとよい。 - -rubyIdentifierを取り除くと、特別な識別子がハイライトされなくなる: > - - :hi link rubyIdentifier NONE -< -これによって "ConstantName", "$global_var", "@@class_var", "@instance_var", -"| block_param |", ":symbol" のような特別な識別子がハイライトされなくなる。 - -Kernel, Module, Object などの重要なメソッドはデフォルトでハイライトされる。 -"ruby_no_special_methods" を定義するとこれらのハイライトがされなくなる: > - - :let ruby_no_special_methods = 1 -< -これによって "require", "attr", "private", "raise", "proc" などの重要なメソッ -ドのハイライトがされなくなる。 - -Rubyの演算子をハイライトすることができる。これは"ruby_operators"を定義すると有 -効になる: > - - :let ruby_operators = 1 -< -"ruby_space_errors" を定義するとホワイトスペースのエラーがハイライトされるよう -になる: > - - :let ruby_space_errors = 1 -< -これによって行末のホワイトスペースやタブ文字の前のスペース文字がエラーとして強 -調されるようになる。これは "ruby_no_trail_space_error" と -"ruby_no_tab_space_error" を定義すると改善することができる。これらはそれぞれ行 -末のホワイトスペースとスペース文字の後のタブ文字を無視する。 - -"ruby_fold" を定義すると折り畳みを有効にすることができる: > - - :let ruby_fold = 1 -< -これを定義すると、オプション 'foldmethod' が "syntax" になり、クラス、モジュー -ル、メソッド、コードブロック、ヒアドキュメント、コメントの折り畳みを行うように -なる。 - -"ruby_no_comment_fold"を定義すると複数行コメントの折り畳みを無効にできる: > - - :let ruby_no_comment_fold = 1 -< - -SCHEME *scheme.vim* *ft-scheme-syntax* - -デフォルトでは R5RS のキーワードだけをハイライトし、正しくインデントする。 - -変数 b:is_mzscheme または g:is_mzscheme が定義されていると、MzScheme 固有の設 -定が使われる。 - -また、scheme.vim は Chicken Scheme->C コンパイラのキーワードにも対応している。 -それを有効にするには b:is_chicken または g:is_chicken を定義する。 - - -SDL *sdl.vim* *ft-sdl-syntax* - -SDL用のハイライトにはいくつかのキーワードが抜けているかもしれない。しかしSDLに -はたくさんのキーワードがあるので、すべてに対応することはほとんど不可能である。 - -新しい標準SDL-2000ではすべての識別子の大文字・小文字が区別される(以前はそうで -はなかった)。また、すべてのキーワードが全部大文字または全部小文字であってもよ -い。構文ハイライトにこれを反映させるには次の変数をセットすればよい: > - :let sdl_2000=1 - -これはたくさんの新しいキーワードもセットする。古いキーワードを無効にするには( -これはよい考えである)こうする: > - :let SDL_no_96=1 - -インデントもおそらく不完全であるが、今のところ私はこれでとても満足している。 - - -SED *sed.vim* *ft-sed-syntax* - -タブをハイライトして通常の空白と区別しやすくするには、次の行をvimrcに書いて -"highlight_sedtabs"を定義する(TODOと同じ構文グループが使われる) > - - :let highlight_sedtabs = 1 - -(タブのハイライトは、検索パターン、置換テキスト、アドレス、 -Append/Change/Insertコマンドに含まれるテキストいずれかの中のタブにだけ適用され -る)。このオプションを有効化するなら、タブ幅を1文字にするとよい。そうすると文字 -列中のタブの数を数えやすくなる。 - -バグ: - - 変換コマンド(y)は置換コマンドとまったく同様に扱われる。つまり、この構文ファ - イルにおいては、変換は置換と同じフラグを受け取ると判断される。これは間違いで - ある(変換は一切フラグを受け取らない)。これに関係したコマンドは非常に複雑な処 - 理を要求するため(95パターン、もっともらしいパターンデリミタごとに1つ)、私は - このバグを容認している。 - - -SGML *sgml.vim* *ft-sgml-syntax* - -SGMLファイル中のタグをハイライトする方法は以下のように動作する。 - -開きタグ<>と閉じタグ</>は異なる色がつけられる。これは意図されたものである。開 -きタグには'Function'の色が使われ、閉じタグには'Type'の色が使われる(これらがど -う定義されているかを確かめたいならsyntax.vimを見ること)。 - -登録されているタグ名はCの文と同じ方法で色づけされる。エラーを見つけやすくする -ため、登録されていないタグ名は色づけされない。 - -引数名(や属性名)も同様である。登録されている属性名は登録されていない属性名と異 -なる色がつけられる。 - -いくつかのSGMLタグはテキストの外見を変更するのに使われる。以下のタグは構文ファ -イルsgml.vimによって認識され、通常のテキストの表示法を変更する: - <varname> <emphasis> <command> <function> <literal> <replaceable> <ulink> - <link>。 - -そのテキストの表示法を変えたいなら以下の構文グループを再定義しなければならない -: - - sgmlBold - - sgmlBoldItalic - - sgmlUnderline - - sgmlItalic - - sgmlLink for links - -この再定義を機能させるにはこれらすべてを再定義し、以下の変数をvimrc中で定義し -なければならない(初期化の際にファイルが読み込まれる順序のため) > - let sgml_my_rendering=1 - -この表示法を無効にしたければ次の行をvimrcに加える: > - let sgml_no_rendering=1 - -(Claudio Fleiner <claudio@fleiner.com>によるhtml.vimのヘルプテキストから一部借 -用した) - - -SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* - -これは「普通の」Unix (Bourne) sh、bashそしてKornシェルをカバーしている。 - -Vimは様々なファイル名がどのタイプであるかを指定することによって、どのシェルが -使われているかを決定しようとする: > - - ksh : .kshrc* *.ksh - bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash -< -これらのうちどれにも当てはまらなければ、ファイルの第一行によって判断される(例. -/bin/sh /bin/ksh /bin/bash)。第一行でシェルを指定されていれば、そのシェルが使 -用される。しかしいくつかのファイル(例. .profile)はシェルファイルであることはわ -かっていても、どのタイプか明らかではない。さらに、多くのシステムでshは -"bash"(Linux, Windows+cygwin)や"ksh"(Posix)へのシンボリックリンクになっている。 - -以下の3つの変数のどれかを.vimrcで定義することにより、デフォルトを設定すること -が出来る: - - ksh: > - let g:is_kornshell = 1 -< posix: (これは is_kornshell を1に設定することと同じ) > - let g:is_posix = 1 -< bash: > - let g:is_bash = 1 -< sh: (デフォルト) Bourne shell > - let g:is_sh = 1 - -"#! ..." という行がなく、かつユーザが上の方法でデフォルトの sh.vim の構文を設 -定していない場合、sh.vim は Bourne シェルの構文であると仮定する。エラーレポート -に RFC や市場浸透統計の引用を含める必要はありません。単に .vimrc でシステムで -使われるデフォルトの sh のバージョンを選択してください。 - -syntax/sh.vim は構文ベースの折り畳みを数種類用意している: > - let g:sh_fold_enabled= 0 (デフォルト。構文折り畳みなし) - let g:sh_fold_enabled= 1 (関数の折り畳みを有効化) - let g:sh_fold_enabled= 2 (ヒアドキュメントの折り畳みを有効化) - let g:sh_fold_enabled= 4 (if/do/for の折り畳みを有効化) -> -様々な構文要素(ヒアドキュメントと関数の中身)がsyntaxメソッドによって折り畳み可 -能になる(|:syn-fold|)。これらのうち複数を組み合わせることもできる: > - - let g:sh_fold_enabled= 3 (関数とヒアドキュメントの折畳を有効化) - -上方向にスクロールしているときにハイライトがおかしくなり、それがCTRL-Lで再描画 -すると直るようなら、変数"sh_minlines"の値を大きくしてみるとよい。例: > - - let sh_minlines = 500 - -こうすると構文シンクロナイズが画面最上行の500行前から始まるようになる。デフォ -ルトの値は200である。大きい値を設定することの欠点は、動作が遅くなるかもしれな -いことである。 - -シンクロナイズさせるものがあまりないときは表示がとても遅くなるかもしれない。こ -れを減らすために、変数"sh_maxlines"をセットすることができる。例: > - - let sh_maxlines = 100 -< -デフォルトはsh_minlinesの2倍の値が使われる。表示を高速化するにはこれをもっと小 -さい値にすること。欠点はハイライト間違いが出るかもしれないことである。 - - -SPEEDUP (AspenTech plant simulator) *spup.vim* *ft-spup-syntax* - -Speedup構文ファイルにはいくつかのオプションがある: - -- strict_subsections : この変数が定義されていると、セクションとサブセクション - 用のキーワードだけが文としてハイライトされ、他のキーワードにはされなくなる - (OPERATIONセクションのWITHINと同様)。 - -- highlight_types : この変数が定義されていると、温度や圧力のようなストリーム - 型が単純な識別子でなくTypeとしてハイライトされる。Includedは通常DECLAREセク - ション中に現れる型である;ユーザが自分用の型を定義しているならそれらを構文ファ - イルに含めなければならない。 - -- oneline_comments : この値は1から3までの間になり、#スタイルのコメントのハイラ - イトを決定する。 - - oneline_comments = 1 : 偶数個の#の後にも通常のSpeedupコードが現れることを許す - - oneline_comments = 2 : 2番目の#で始まるコードをエラーとして表示する。これが - デフォルトの設定である。 - - oneline_comments = 3 : 1個以上の#を含む行全体をエラーとしてハイライトする。 - -変数のPRESETにより、OPERATIONセクションはとても大きくなりがちであり、そのため -シンクロナイズが追いつかなくなるかもしれない。あなたのコンピュータが十分速いな -ら構文ファイルの最後近くでminlinesとmaxlinesの値を大きくするとよいかもしれない。 - - -SQL *sql.vim* *ft-sql-syntax* - *sqlinformix.vim* *ft-sqlinformix-syntax* - *sqlanywhere.vim* *ft-sqlanywhere-syntax* - -SQLにはANSI標準があるのだが、ほとんどのデータベースエンジンは独自の拡張を追加 -している。現在のところ、VimはOracleとInformixのSQL方言をサポートしている。 -デフォルトではVimは"*.sql"のファイルをOracle SQLであると判断する。 - -現在のところ、Vimは構文スクリプトによって、様々なベンダのSQLに対応している。 -デフォルト設定をOracleから他の対応しているSQLに変更することができる。また、 -バッファごとに使うSQLの方言を変えることも簡単にできる。 - -より詳しい説明は|ft_sql.txt|を参照。 - - -TCSH *tcsh.vim* *tcsh-syntax* - -これは"tcsh"という名前のシェルをカバーしている。これはcshのスーパーセットであ -る。ファイル形式がどのように判定されるかは|csh.vim|を参照。 - -tcshはシェル変数 backslash_quote をセットしていない限り文字列中に\"が現れるこ -とを許さない。Vimにバックスラッシュクォート構文が存在しないと判断させたいな -ら、次の行を.vimrcに加えること: > - - :let tcsh_backslash_quote = 0 - -上方向にスクロールしているときにハイライトがおかしくなり、それがCTRL-Lで再描画 -すると直るようなら、変数 tcsh_minlines の値を大きくしてみるとよい: > - - :let tcsh_minlines = 1000 - -こうすると構文シンクロナイズが画面最上行の1000行前から始まるようになる。 -tcsh_minlines に "fromstart" をセットすると、ファイルの先頭からシンクロナイズ -が行われるようになる。tcsh_minlines の既定値は 100。大きな値にすることの欠点は、 -再描画が遅くなることである。 - - -TEX *tex.vim* *ft-tex-syntax* - - *tex-folding* - Tex: 構文折り畳み? ~ - -<syntax/tex.vim>のバージョン28以降では、構文による部分、章、節、小節などの折り -畳みに対応している。それを有効にするには次の行を<.vimrc>に書き、 > - let g:tex_fold_enabled=1 -:set fdm=syntaxとする。後者をLaTeXファイルの末尾にモードラインとして書いておく -といいかもしれない: > - % vim: fdm=syntax -< - *tex-nospell* - Tex: コメントの中ではスペルチェックを行わせたくない場合 ~ - -LaTeX ファイルのコメントの中にソースコードのようなものを含めることがあるので、 -コメントの中ではスペルチェックを無効にしたいという人もいる。そのようにするには -次の行を .vimrc に加える: > - let g:tex_comment_nospell= 1 -< - *tex-verb* - Tex: Verbatim ゾーンをスペルチェックするには?~ - -たいてい verbatim リージョンはソースコードのようなものを書くのに使われます。 -ソースコードをスペルチェックしたいと思うことはほとんどないでしょう。とはいえ、 -もし verbatim ゾーンの内容をスペルチェックしたいときは <.vimrc> で次のように設 -定してください: > - let g:tex_verbspell= 1 -< - *tex-runon* - Tex: コメントや MathZone の区切り ~ - -<syntax/tex.vim>の構文ハイライトはTeX, LaTeX, AmsTeXをサポートしている。normal, -texZone, texMathZoneの3つの主な区間・範囲がサポートされている。これらの区間を -適切に区切るようかなりの努力がされたが、$..$と$$..$$で線引きされる区間は開始・ -終了のパターンとまったく同じにシンクロナイズさせることは出来ない。その結果、特 -別な"TeX comment"が提供されている > - %stopzone -このコメントがあると、ここで強制的にtexZoneまたはtexMathZoneのハイライトを終わ -らせる。 - - *tex-slow* - Tex: 構文ハイライトが遅いならば ~ - -遅いコンピュータを使っているなら、これらの値を減らすとよいかもしれない > - :syn sync maxlines=200 - :syn sync minlines=50 -(特に後者を)。速いコンピュータを使っているならこれらの値を増やしてもよい。これ -らは第一にシンクロナイズ(つまり、画面最上行のテキストがどのグループに入るか)に -影響を与える。 - - *tex-morecommands* *tex-package* - Tex: もっとコマンドをハイライトさせるには ~ - -LaTeXはプログラミング言語であり、特殊化されたLaTeXのコマンド、構文、フォントが -つまったパッケージがたくさんある。そのようなパッケージを使っている人は、標準の -syntax/tex.vimにそのパッケージを対応させてほしいと思うだろう。しかしそれは明ら -かに非現実的である。そこで、|mysyntaxfile-add|で使われているテクニックを使っ -て、syntax/tex.vimで提供されているハイライトを拡張・修正してみてください。 - - *tex-error* - Tex: エラーのハイライトが行き過ぎならば ~ - -<tex.vim>は様々な種類のレキシカルエラーチェックをサポートしている。すなわち、 -エラーチェックはとても便利だが、実際にはエラーでない箇所もエラーと示すかもしれ -ない。それが嫌なら、次の行を<.vimrc>に置くとよい: > - let tex_no_error=1 -すると<syntax/tex.vim>によるすべてのエラーチェックが行われなくなる。 - - *tex-math* - Tex: 新しいMathグループが必要ならば ~ - -新しいmathグループをLaTeXに含めるには、以下のコードがその例となるだろう: > - - call TexNewMathZone(sfx,mathzone,starform) -新しいmathグループに一意な接尾辞をつけたいと思うだろう(現在のところ、AからLま -でとVからZまでは<syntax/tex.vim>自身によって取得されている)。 -例として、<syntax/tex.vim>でeqnarrayがどのように設定されているかを見てみよ -う: > - call TexNewMathZone("D","eqnarray",1) -"mathzone"をあなたが作ったmathグループの名前に変える必要がある。 -また、それが呼ばれるようにするために.vim/after/syntax/tex.vimに書くこと。 -変数"starform"が真ならば、あなたが作ったmathグループがアスタリスクつきの形を -もつことを意味する(例. eqnarray*)。 - -LOCALMATHをあなたが決めた新しいmathグループに書き換える必要がある。そしてこれ -を.vim/after/syntax/tex.vimに加えること。 - - *tex-style* - Tex: 新しいスタイルを始めるには ~ - -*.texファイルで"\makeatletter"を使う人がいるかもしれないので、コマンド中で"@" -が使えるようになっている。しかし*.texファイルは次の拡張子: sty cls clo dtx ltx -を持たないので@をエラーと判断してハイライトする。これを解決するにはこうする: > - - :let b:tex_stylish = 1 - :set ft=tex - -"let g:tex_stylish=1"を<.vimrc>に書くと<syntax/tex.vim>は常にこのような@の使用 -法を受け入れるようになる。 - - *tex-cchar* *tex-cole* *tex-conceal* - Tex: Conceal モードを活用する ~ - -'conceallevel' が 2 に設定され、エンコーディングとして utf-8 が使われていると -き、さまざまな文字シーケンスがそれに対応した utf-8 グリフとして表示されます。 -対応している文字としてはアクセント付き文字、Math ゾーンの中のギリシア文字、 -Math ゾーンの中の上付き記号と下付き記号などがあります。すべての上付き記号と下 -付き記号を表示できるわけではありません。utf-8 がサポートしている範囲でのみ利用 -可能です。実際のところ、サポートされている下付き記号は少ししかありません。 - -使用例としては、ウィンドウを垂直分割して (|CTRL-W_v| 参照)、一つのウィンドウは -|'conceallevel'| を 0 に設定してもう一方は 2 に設定し、両方で |'scrollbind'| -を設定するような使い方があります。 - - *g:tex_conceal* - Tex: Conceal モードの選択 ~ - -g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示を変更できま -す。初期設定は "admgs" で、これは次の文字セットが Conceal 表示されます: > - - a = アクセント/合字 (accents/ligatures) - d = 区切り記号 (delimiters) - m = 数学記号 (math symbols) - g = ギリシア文字 (Greek) - s = 上付き記号/下付き記号 (superscripts/subscripts) -< -これらの文字を設定から外すことで、それに関連した文字が Conceal 表示されなくな -ります。 - - -TF *tf.vim* *ft-tf-syntax* - -tfの構文ハイライトには1つのオプションがある。 - -シンクロナイズについて、minlinesのデフォルトは100になっている。この値を変える -には、"tf_minlines"に望みの値をセットする。例: > - - :let tf_minlines = your choice - - -VIM *vim.vim* *ft-vim-syntax* - *g:vimsyn_minlines* *g:vimsyn_maxlines* -正確な構文ハイライトと画面更新速度はトレードオフの問題である。正確さを向上させ -るには、変数 g:vimsyn_minlines の値を大きくすればよい。g:vimsyn_maxlines も画 -面更新頻度を高めるのに使える(これについては|:syn-sync|を参照)。 > - g:vim_minlines : シンクロナイズの最小行数を指定する - g:vim_maxlines : シンクロナイズの最大行数を指定する -< - (g:vim_minlines と g:vim_maxlines はこれらのオプションの以前の名前であ - る) - - *g:vimsyn_embed* -g:vimsyn_embed オプションは、どの外部スクリプト言語の埋め込みに対応するかを指 -定する。 > - - g:vimsyn_embed == 0 : どのスクリプトの埋め込みも対応しない - g:vimsyn_embed =~ 'm' : mzscheme に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 'p' : perl に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 'P' : python に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 'r' : ruby に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 't' : tcl に対応 (コンパイル時に有効にした場合のみ) -< -g:vimsyn_embed の既定値は "mpPr" であり、mzscheme, perl, python, ruby に対応し -ている。tcl が利用可能でない環境で has("tcl") の判定を行うと Vim がハングする -ようなので、デフォルトでは tcl の埋め込みには対応していない(もちろん、有効にし -たい場合には g:vimembedscript に含めることで有効にできる)。 - *g:vimsyn_folding* - -syntax/vim.vim によって折り畳みが可能である: > - - g:vimsyn_folding == 0 または変数が存在しない: 構文ベースの折り畳みはしない - g:vimsyn_folding =~ 'a' : augroups - g:vimsyn_folding =~ 'f' : 関数を折り畳む - g:vimsyn_folding =~ 'm' : mzscheme スクリプトを折り畳む - g:vimsyn_folding =~ 'p' : perl スクリプトを折り畳む - g:vimsyn_folding =~ 'P' : python スクリプトを折り畳む - g:vimsyn_folding =~ 'r' : ruby スクリプトを折り畳む - g:vimsyn_folding =~ 't' : tcl スクリプトを折り畳む - - *g:vimsyn_noerror* -syntax/vim.vimによるエラーのハイライトは必ずしも正しいとは限らない。Vimスクリ -プトは正しくハイライトするのが難しい言語である。エラーのハイライトをやめるには -次を|vimrc|に書けばよい: > - - let g:vimsyn_noerror = 1 -< - - -XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax* - -XF86Configファイルの構文はXFree86 v3.xとv4.xで異なっている。両方のバージョンが -サポートされている。自動的に判定がされるが、完全からはほど遠い。手動でバージョ -ンを設定する必要があるかもしれない。使用しているXFree86に応じて、.vimrc中で変 -数xf86conf_xfree86_versionを3または4にセットすること。例: > - :let xf86conf_xfree86_version=3 -複数のバージョンが混在しているときには -変数b:xf86conf_xfree86_versionをセットすること。 - -Note オプション名の中のスペースとアンダースコアはハイライトされない。オプショ -ン名をハイライトさせるには"__s yn con gr_e_e_n"でなく"SyncOnGreen"と書くこと。 - - -XML *xml.vim* *ft-xml-syntax* - -Xml名前空間がデフォルトでハイライトされる。次のグローバル変数をセットするとそ -れが無効化される: > - - :let g:xml_namespace_transparent=1 -< - *xml-folding* -xml構文ファイルを使うと、開始タグと終了タグの間を折りたたむ|folding|ことができ -る(|:syn-fold|を参照)。これをオンにするには > - - :let g:xml_syntax_folding = 1 - :set foldmethod=syntax - -とする。 -構文による折り畳みは、構文ハイライトを著しく遅くする可能性がある。特に巨大なファ -イルではそうである。 - - -X Pixmaps (XPM) *xpm.vim* *ft-xpm-syntax* - -xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を生成する。そのため、色 -設定文字列などを変更したときは":set syn=xpm"などとしてxpm.vimを読み直さなけれ -ばならない。 - -色つきのピクセルをコピーするには"yl"で"pixel"をヤンクし、どこかで"P"としてそれ -を挿入する。 - -マウスで図を描くには、次のようにしてみるとよい: > - :function! GetPixel() - : let c = getline(".")[col(".") - 1] - : echo c - : exe "noremap <LeftMouse> <LeftMouse>r".c - : exe "noremap <LeftDrag> <LeftMouse>r".c - :endfunction - :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR> - :set guicursor=n:hor20 " to see the color beneath the cursor -これを行うと、右ボタンがピペットになり、左ボタンがペンになる。これは1ピクセル -につき1文字だけとなっているXPMファイルでうまく機能する。ピクセル文字列の外をク -リックしてはならない。これを自由に改良してください。 - -セルサイズが正方形のフォントを使うと見栄えがよくなる。Xの場合の例: > - :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* - - -============================================================================== -5. 構文を定義する *:syn-define* *E410* - -構文アイテムには3つのタイプがある。 - -1. キーワード (Keyword) - これはオプション'iskeyword'で定義されるキーワード文字だけからなる。他の構文 - 要素を含むことはできない。完全な単語(マッチの前後にキーワード文字が存在しな - い)にのみマッチする。キーワード"if"は"if(a=b)"にはマッチするが、"ifdef x"に - はマッチしない。"("はキーワード文字でなく、"d"はキーワード文字だから。 - -2. マッチ (Match) - 単一の正規表現パターンにマッチする。 - -3. リージョン (Region) - 正規表現パターン"start"のマッチ位置から始まり、正規表現パターン"end"のマッ - チ位置で終わる。その間にどんなテキストがあってもよい。正規表現パターン - "skip"を使うとパターン"end"にマッチするのを避けることができる。 - -複数の構文アイテムを1つの構文グループに入れることができる。構文グループにはハ -イライト属性を与えることができる。例えば、"/* .. */"のコメントを定義する要素と -"// .."のコメントを定義する要素を作り、両方を"Comment"グループに入れる。そして -"Comment"を青のボールドフォントで表示するように指定すると、両方のタイプのコメ -ントに対して同じハイライトがされるようになる。1つの構文要素に対し1つの構文グルー -プを作ってもよいし、すべての要素を1つのグループに入れてもよい。これはハイライ -ト属性をどう指定したいかによる。各要素をそれ自身のグループに入れるとすると、た -くさんのグループに対して色を指定しなければならなくなる。 - -構文グループとハイライトグループは似ているが異なることに注意。ハイライトグルー -プに対してはハイライト属性を与えることになる。それらの属性が同名の構文グループ -に対して適用される。 - -同じ箇所に対して複数のアイテムがマッチした場合には、最後に定義されたものが有効 -になる。よって同じテキストにマッチする要素を使って、以前に定義された構文アイテ -ムを上書きすることができる。大文字・小文字の違いも含めてマッチするキーワードが -ある場合は、そうでないものより優先される。 - - -優先順位 *:syn-priority* - -複数の構文アイテムがマッチするときは、以下のルールが適用される: - -1. 複数のマッチまたはリージョンアイテムが同じ場所で始まるときは、後に定義され - たものが優先される。 -2. マッチとリージョンよりキーワードが優先される。 -3. より前の位置から始まる要素が優先される。 - - -大文字・小文字の区別 *:syn-case* *E390* - -:sy[ntax] case [match | ignore] - これ以降の":syntax"コマンドが大文字・小文字を区別するかどうかを定義す - る。"match"を使うと区別し、"ignore"を使うと区別しなくなる。これ以前の - 要素には影響せず、次の":syntax case"コマンドまでのすべての要素に影響 - する。 - - -スペルチェック *:syn-spell* - -:sy[ntax] spell [toplevel | notoplevel | default] - 構文アイテムに入っていないテキストに対して、どこでスペルチェック - を行うかを定義する: - - toplevel: テキストのスペルチェックを行う。 - notoplevel: テキストのスペルチェックを行わない。 - default: クラスタ@Spellがあるときスペルチェックを行わない。 - - 構文アイテムに入っているテキストはクラスタ@Spellと@NoSpellを使う - |spell-syntax|。クラスタ@Spellと@NoSpellがないときは、スペルチェックは - "default"と"toplevel"に対して行われる。 - - スペルチェックを有効化するにはオプション'spell'をオンにしなければなら - ない。 - - -キーワードの定義 *:syn-keyword* - -:sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] - - キーワードを定義する。 - - {group-name} "Comment"のような構文グループ名。 - [{options}] 後述の|:syn-arguments|を参照。 - {keyword} .. このグループに含めるキーワードのリスト。 - - 例: > - :syntax keyword Type int long char -< - {options}は行のどこに置いてもよい。それらは与えられたキーワード全てに - 適用される。オプションがキーワードの後にあっても同じ。以下の例はまった - く同じ意味になる: > - :syntax keyword Type contained int long char - :syntax keyword Type int long contained char - :syntax keyword Type int long char contained -< *E789* - Vimのexコマンドのようにキーワードに短縮形があるとき、省略可能な部分を - []のでくくることによって受け入れるキーワードをいっぺんに定義することが - できる: > - :syntax keyword vimCommand ab[breviate] n[ext] -< - キーワードは、その文字全てがオプション'iskeyword'に含まれていないと認 - 識されないことに注意。1文字でも含まれていないものがあると、そのキーワー - ドは認識されない。 - マルチバイト文字を使うこともできる。マルチバイト文字は'iskeyword'に含 - まれている必要はない。 - - キーワードは常にマッチやリージョンより優先される。キーワードは一要素以 - 上マッチしたとき使われる。キーワードは入れ子にならなく、それ以外のもの - を含むこともできない。 - - オプション名と同じ単語は、それがその位置で利用できないものであったとし - ても、キーワードとして定義することはできない。マッチで代用すること。 - - キーワードの長さは最大80文字である。 - - containmentが異なれば、同じキーワードを複数回定義することができる。例 - えば、まずキーワードをcontainedでなく定義して1つのハイライトグループを - 設定し、次にcontainedとして定義して別のハイライトグループを設定するこ - とができる。例: > - :syn keyword vimCommand tag - :syn keyword vimSetting contained tag -< 構文要素の外側に"tag"があったときはハイライトグループ"vimCommand"が適 - 用される。"vimSetting"を含む構文要素の中に"tag"があったときは - "vimSetting"グループが適用される。 - - -マッチの定義 *:syn-match* - -:sy[ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}] - - マッチを定義する。 - - {group-name} "Comment"のような構文グループ名。 - [{options}] 後述の|:syn-arguments|を参照。 - [excludenl] 行末の"$"を含んでいるパターンに対して、行末以 - 降までマッチやリージョンを拡張しないようにす - る。パターンの前に置かなければならない。 - |:syn-excludenl| - {pattern} マッチを定義する検索パターン。|:syn-pattern|を - 後述の参照。 - パターンは複数行にもマッチする。よって検 - 索を開始する場所によってマッチが変わってくる可 - 能性がある。シンクロナイズが関係してくることに - 注意。 - - 例 (文字定数にマッチする): > - :syntax match Character /'.'/hs=s+1,he=e-1 -< - -リージョンの定義 *:syn-region* *:syn-start* *:syn-skip* *:syn-end* - *E398* *E399* - -:sy[ntax] region {group-name} [{options}] - [matchgroup={group-name}] - [keepend] - [extend] - [excludenl] - start={start_pattern} .. - [skip={skip_pattern}] - end={end_pattern} .. - [{options}] - - リージョンを定義する。複数行にわたってもよい。 - - {group-name} "Comment"のような構文グループ名。 - [{options}] 後述の|:syn-arguments|を参照。 - [matchgroup={group-name}] 以下の開始パターンと終了パターンのマッチに - のみ使われる構文グループ。マッチの開始パターン - と終了パターンには使われない。開始パターンと終 - 了パターン用に異なるグループを使わないようにリ - セットするにはNONEを使う。 - |:syn-matchgroup|を参照。 - keepend 内包されたマッチが終了パターンを越えないように - する。 - |:syn-keepend|を参照。 - extend このリージョンを含むアイテムの"keepend"を上書 - きする。|:syn-extend|を参照。 - excludenl 行末の"$"を含んでいるパターンに対して、行末以 - 降までマッチやアイテムを拡張しないようにする。 - 終了パターンに対してのみ使い道がある。適用する - パターンの前に置かねばならない。 - |:syn-excludenl| - start={start_pattern} リージョンの開始を定義する検索パターン。後述の - |:syn-pattern|を参照。 - skip={skip_pattern} その中ではリージョンの終了を探さないテキストを - 定義する検索パターン。|:syn-pattern|を参照。 - end={end_pattern} リージョンの終了を定義する検索パターン。 - 後述の|:syn-pattern|を参照。 - - 例: > - :syntax region String start=+"+ skip=+\\"+ end=+"+ -< - start/skip/endパターンとオプションはどんな順序で書いてもよい。skip - パターンは0個か1個許される。startとendパターンは1個以上なければならな - い。つまりskipパターンは省略できるが、少なくとも1つのstartとendパター - ンを書かなければならない。等号記号の前後にはホワイトスペースがあっても - よい(たいていはホワイトスペースがないほうが見やすいが)。 - - 2個以上のstartパターンが与えられたときは、それらの1つがマッチすれば十 - 分である。つまりstartパターンらの間にはOR関係があることになる。最後に - マッチしたものが使われる。endパターンについても同じである。 - - endパターンの検索はstartパターンの直後から行われる。これはendパターン - のマッチとstartパターンは決して重ならないことを意味する。 - - skipとendパターンは改行をまたいでマッチしてもよい。しかしパターンの検 - 索はどの行からも始まりうるので、望みどおりにならないこともある。 - skipパターンは次の行のendパターンのマッチを回避しない。問題を避けるには - 単一行のパターンを使うこと。 - - Note: リージョンの開始は、startパターンのマッチによってのみ決まる。 - endパターンの照合のチェックはされない。次のは機能しない: > - :syn region First start="(" end=":" - :syn region Second start="(" end=";" -< 2番目のは常にFirstより前にマッチする(最後に定義されたパターンが優先され - る)。こうすると、その前に':'があるかどうかに関わらず、2番目のリージョ - ンが次の';'まで続く。マッチを使うとうまくいく: > - :syn match First "(\_.\{-}:" - :syn match Second "(\_.\{-};" -< このパターンは"\_."によって任意の文字と改行にマッチし、"\{-}"によって - 繰り返しにマッチする(最小限の個数の繰り返し)。 - - *:syn-keepend* - デフォルトでは内包されたマッチはendパターンのマッチを隠す。これはネス - ト用に便利である。例えば、"{"で始まり"}"で終わるリージョンがもう1つの - リージョンを含むことができる。"}"に出会うと内包されたリージョンが終わ - り、外側のリージョンは終了しない: - { 外側の"{}"リージョンの開始 - { 内包された"{}"リージョンの開始 - } 内包された"{}"リージョンの終了 - } 外側の"{}"リージョンの終了 - この挙動が望みでないなら、引数"keepend"をつければ、外側のリージョンの - endパターンのマッチによって内包されたアイテムも終了させることができる。 - そうすると同一リージョンのネストが不可能になるが、内包されたアイテムで - endパターンをスキップさせることなく、endパターンの一部をハイライトする - ことができる。例: > - :syn match vimComment +"[^"]\+$+ - :syn region vimCommand start="set" end="$" contains=vimComment keepend -< "keepend"によってvimCommandが常に行末で終わるようにしている。たとえ内 - 包されたvimCommentが<EOL>とのマッチを含んでいてもそのようになる。 - - "keepend"が使われないときは、内包されたマッチの後でendパターンのマッチ - が検索される。"keepend"が含まれているときは最初にendパターンにマッチし - たところで終了し、内包されたマッチもすべてそこで終了になる。 - - *:syn-extend* - 引数"extend"を使うと"keepend"の挙動が変わる。"keepend"付きのアイテム中 - に"extend"付きのアイテムが内包されていると、"keepend"が無視され、外側 - のリージョンが拡張される。これによっていくつかのアイテムに対して例外的 - にリージョンを拡張させるようにできる。例: > - - :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript - :syn match htmlItem +<[^>]*>+ contained - :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend - -< - この例では、htmlItemの位置でhtmlRefが終了する。htmlItemは<>要素をハイ - ライトするためだけに使われる。htmlScriptアイテムはhtmlRefアイテムを拡 - 張する。 - - もう1つの例: > - :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend -< "</a>"を別の色でハイライトしたいときなどのために、"keepend"つきでリー - ジョンを定義し、内包するアイテムによって終端が変更されないようにしてい - る。ただしxmlFoldがネストしたとき(それ自身を含んだとき)、"extend"が適 - 用され、内側の"</a>"はそのリージョン自身だけを終了させ、それを含んでい - るリージョンは終了しない。 - - *:syn-excludenl* - マッチ用のパターンやリージョンの終了パターンが行末にマッチさせるために - '$'を含んでいると、それを含むリージョンアイテムが次の行まで継続するよ - うになる。例えば、"\\$"(行末のバックスラッシュ)とのマッチを使うと、通 - 常は行末で終了するはずのリージョンを継続させることができる。これはデ - フォルトの挙動である。これが望みどおりでないなら、これをされる2つの方 - 法がある: - 1. 外側のアイテムに"keepend"を使う。こうすると含んでいるアイテム全てに - 対して拡張しないようにする。含んでいるアイテム全てが外側のアイテム - を拡張してはならないときに使える。 - 2. 内側のアイテムに"excludenl"を使う。こうするとそのマッチに対して、そ - れを含んでいるマッチやリージョンを拡張しないようにする。これはいく - つかのアイテムだけが外側のアイテムを拡張してはならないときに使える。 - "excludenl"はそれを適用するパターンの前に置かねばならない。 - - *:syn-matchgroup* - "matchgroup"は、リージョンの本体とその開始・終了パターンに対して異なる - ハイライトをしたいときに使える。例: > - :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ -< こうすると引用符を"Quote"グループでハイライトし、その間にあるテキスト - を"String"グループでハイライトすることができる。"matchgroup"はそれが従 - うすべての開始・終了パターンに対して使われる。matchgroupを使わないよう - に戻すには"matchgroup=NONE"を使う。 - - 開始・終了パターンが"matchgroup"でハイライトされるとき、そのリージョン - に含まれているアイテムは無視される。これによって含まれているアイテムが - 開始・終了パターンにマッチするのを避けることができる。"transparent"を - 使っている場合、これは"matchgroup"でハイライトされる開始・終了パターン - のマッチ部分には適用されない。 - - 次の例は、3段階の括弧を異なる色でハイライトする例である: > - :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2 - :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained - :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained - :hi par1 ctermfg=red guifg=red - :hi par2 ctermfg=blue guifg=blue - :hi par3 ctermfg=darkgreen guifg=darkgreen -< - *E849* -構文グループの最大数は 19999 です。 - -============================================================================== -6. :syntaxの引数 *:syn-arguments* - -構文アイテムを定義する:syntaxコマンドにはたくさんの引数がある。 -ここでは共通のものを説明する。引数はどんな順序でもよく、パターンと混ざっていて -もよい。 - -全てのコマンドが全ての引数を受けいれるわけではない。次の表はどの引数がどのコマ -ンドに対して利用可能かを示している: - *E395* - contains oneline fold display extend concealends~ -:syntax keyword - - - - - - -:syntax match yes - yes yes yes - -:syntax region yes yes yes yes yes yes - -以下の引数は3つのコマンド全てに対して使える: - conceal - cchar - contained - containedin - nextgroup - transparent - skipwhite - skipnl - skipempty - -conceal *conceal* *:syn-conceal* -訳注: conceal = 隠す、秘密にする - -"conceal" 引数が指定されると、そのアイテムは Conceal 可能になります。アイテム -が実際に Conceal 表示されるかどうかは 'conceallevel' オプションの設定に依存し -ます。現在行のアイテムを Conceal 表示するかどうかは 'concealcursor' オプション -で制御できます (行の編集を妨げないようにするため)。 - -concealends *:syn-concealends* - -"concealends" 引数が指定されると、リージョンの開始部分と終了部分が Conceal 可 -能になります (リージョンの中身はなりません)。アイテムが実際に Conceal 表示され -るかどうかは 'conceallevel' の設定に依存します。"matchgroup" で別のハイライト -を設定することでリージョンの終了部分だけを別に Conceal 表示するということもで -きます。 - -cchar *:syn-cchar* - - *E844* -"cchar" 引数はアイテムが Conceal 表示されたときに実際に画面に表示される文字を -定義します ("cchar" は conceal 引数が指定されたときのみ意味を持ちます)。 -"cchar" が指定されていない場合はデフォルトの Conceal 文字として 'listchars' オ -プションが使われます。Tab 文字のようなコントロール文字は使用できません。例: > - :syntax match Entity "&" conceal cchar=& -ハイライトについては |hl-Conceal| を参照してください。 - -contained *:syn-contained* - -引数"contained"が与えられると、そのアイテムはトップレベルでは認識されず、他の -マッチの"contains"フィールドで指定されたときのみ認識される。例: > - :syntax keyword Todo TODO contained - :syntax match Comment "//.*" contains=Todo - - -display *:syn-display* - -引数"display"が与えられると、そのアイテムは検出されたハイライトが表示されない -時にはスキップされる。こうすることで、表示されるべきテキストの構文状態だけを検 -索するときにはこのアイテムはスキップされ、ハイライトが高速になる。 - -通常は、以下の条件に合うときマッチとリージョンに"display"を使うとよい: -- アイテムが行末を越えて継続しない。Cの例: "/*"コメント用のリージョンは - "display"を含んではならない。なぜなら次の行に継続するからである。 -- アイテムが、行を越えて継続したり、そのコンテナを次行まで継続させる効果を持つ - 子アイテムを含んでいない。 -- それを含むどんなアイテムのサイズも変更しない。Cの例: プリプロセッサマッチ中 - の"\\$"とのマッチは"display"を含んではならない。なぜならこれによってプリプロ - セッサマッチが短くなるかもしれないからである。 -- 他のアイテムがマッチすることを許さず、そうでなければマッチせず、加えてマッチ - 自体が非常に長くなるようなアイテム。 - Cの例: "//"コメント用のマッチは"display"を使ってはならない。なぜならそのコメ - ントの内側の"/*"がマッチするかも知れず、そうなると行末をまたぐコメントが始ま - るからである。 - -例としてC言語では次のとき"display"が使える: -- 数字とのマッチ -- ラベルとのマッチ - - -transparent *:syn-transparent* - -引数"transparent"が与えられると、そのアイテムはそれ自身ではハイライトされず、 -それを含むアイテムのハイライトを引き継ぐ。これはハイライトはせず、テキストの一 -部をスキップするためだけに使われる構文アイテムに対して有効である。 - -transparentなアイテム自身に引数"contains"が与えられていない場合、それを含むア -イテムから引数"contains="も受け継がれる。望まないアイテムが含まれるのを避ける -には"contains=NONE"とすること。文字列中の単語をハイライトするが、"vim"だけは -例外とする例: > - :syn match myString /'[^']*'/ contains=myWord,myVim - :syn match myWord /\<[a-z]*\>/ contained - :syn match myVim /\<vim\>/ transparent contained contains=NONE - :hi link myString String - :hi link myWord Comment -"myVimが"myWord"の後に来ているので、"myVim"が優先される(同じ位置で複数のアイテ -ムにマッチした場合、最後に定義されたものが前のものを上書きする)。"transparent" -により、"myVim"にマッチしたテキストは"myString"と同じハイライトになる。しかし -"myVim"は何も含まない。もし"contains=NONE"を取り除くと、"myVim"は"myString"か -ら引数containsを受け継いで"myWord"を含むようになり、テキスト"vim"はConstantと -してハイライトされる。これは、内包されたマッチは同じ位置でそれ自身の内側でマッ -チしないためこうなる。つまり、ここではマッチ"myVim"は"マッチmyWord"を上書きし -ない。 - -色づけされたテキストは、内包されたアイテムの層のようにみなすことができる。内包 -されたアイテムは内包しているアイテムより上にあり、そのため内包されたアイテムを -見ることができる。内包されたアイテムがtransparentな場合、それを透過して見るこ -とができ、よってそれを含んでいるアイテムが見える。図にすると: - - ここから見る - - | | | | | | - V V V V V V - - xxxx yyy さらに内包されたアイテム達 - .................... 内包されたアイテム (transparent) - ============================= 最初のアイテム (最も外側のアイテム) - -'x', 'y', '='はハイライトされた構文アイテムを表す。'.'はtransparentなグループ -を表している。 - -このとき次のように見える: - - =======xxxx=======yyy======== - -つまりtransparentな"...."は透過して見える。 - - -oneline *:syn-oneline* - -引数"oneline"をつけると、そのリージョンは行をまたがないという意味になる。つま -り、現在行の中で完全にマッチしなければならない。しかし、そのリージョンが行をま -たぐアイテムを内包している場合は次の行に継続する。内包されたアイテムによって行 -継続パターンを認識することができる。しかしその場合でも"end"パターンは最初の行 -内でマッチしなければならない。そうでないとリージョンは開始すらしない。 - -startパターンが行末にマッチする"\n"を含んでいるときは、startパターンの終了位置 -と同じ行にendパターンがなければならない。endパターンも行末を含んでもよい。 -つまり引数"oneline"は、startパターンの終了位置とendパターンの開始位置が同一行 -にあることを意味する。改行にマッチするskipパターンを使ってもこの規則を変えるこ -とはできない。 - -fold *:syn-fold* - -引数"fold"はこのアイテムに対して折り畳みレベルを1増加させる。例: > - :syn region myFold start="{" end="}" transparent fold - :syn sync fromstart - :set foldmethod=syntax -これは{}ブロックごとに1つの折り畳みを作らせる。 - -折り畳みはそのアイテムの開始位置から始まり、アイテムの終了位置で終わる。開始位 -置と終了位置が同一行にある場合、折り畳みは作られない。 -オプション'foldnestmax'によって構文折り畳みのネストを制限できる。 -{|+folding|機能なしでコンパイルされた場合は利用できない} - - - *:syn-contains* *E405* *E406* *E407* *E408* *E409* -contains={groupname},.. - -引数"contains"の後には構文グループ名のリストを続ける。"contains"で指定されたグ -ループは、そのアイテムの内側で始まることを許可される(内包されるグループによっ -ては、外側のアイテムの終端が拡張されることもある)。これを使うと、マッチとリー -ジョンが再帰的にネストできるようになる。引数"contains"がまったく指定されない場 -合は、そのアイテムはどんなグループも内包しない。ここで使うグループ名は、必ずし -も以前に定義していなくてもよい。 - -contains=ALL - containsリストが"ALL"だけのとき、全てのグループがこのアイテム - の内側で許可される。 - -contains=ALLBUT,{group-name},.. - - containsリストの最初の要素が"ALLBUT"のとき、{group-name}で列挙 - したグループを除く全てのグループがこのアイテムの内側で許可され - る。例: > - :syntax region Block start="{" end="}" ... contains=ALLBUT,Function - -contains=TOP - containsリストの最初の要素が"TOP"のとき、引数"contained"を持た - ないグループ全てが許可される。 -contains=TOP,{group-name},.. - "TOP"と同様だが、{group-name}に列挙したグループは除かれる。 - -contains=CONTAINED - containsリストの最初の要素が"CONTAINED"のとき、引数 - "contained"を持つグループ全てが許可される。 -contains=CONTAINED,{group-name},.. - "CONTAINED"と同様だが、{group-name}に列挙したグループは除かれ - る。 - - -"contains"リスト内の{group-name}はパターンであってもよい。そのパターンにマッチ -するグループ名全てが含まれる("ALLBUT"が使われたときはそれが除かれる)。パターン -はホワイトスペースや','を含んではならない。例: > - ... contains=Comment.*,Keyw[0-3] -パターンの照合はそのsyntaxコマンドが実行されたときに行われる。それ以降に定義さ -れたグループは照合されない。また、現在のsyntaxコマンドが新しいグループを定義し -ている場合、そのグループは照合されない。ファイル内にsyntaxコマンドを書く場合、 -定義されていないグループを当てにすることはできないことに注意。これは、そのファ -イルは以前に読み込まれているかもしれず、":syn clear"はグループ名を削除しないた -めである。 - -内包されたグループはリージョンのstartとendパターン内にもマッチする。これが望み -の挙動でないなら、引数"matchgroup"を使うとよい|:syn-matchgroup|。オフセット -"ms="と"me="によって内包されたアイテムがマッチする領域を変更することができる。 -これはハイライトされる範囲も制限することに注意。 - - -containedin={groupname}... *:syn-containedin* - -引数"containedin"の後には構文グループ名のリストを続ける。するとこのアイテムが -それらのグループの内側で始まることが許可される。これは外側のアイテムが引数 -"contains="でこのアイテムを指定したのと同じように動作する。 - -{group-name}...の指定の仕方は前述の"contains"と同様である。 - -これは構文アイテムを後から追加するときに便利である。既に定義されているアイテム -の定義を変更することなく、その内側にアイテムを含めることができる。例えば、Cの -構文を読み込んだ後で、Cコメント中の単語をハイライトしたいときは: > - :syn keyword myword HELP containedin=cComment contained -このアイテムがトップレベルではマッチしないように"contained"を使っている。 - -"containedin"の照合は、このアイテムが現れる場所に追加される。引数"contains"も -通常通り追加される。注意: キーワードは他のアイテムを含むことができないため、 -"containedin"の先にキーワードを指定することは無意味である。 - - -nextgroup={groupname},.. *:syn-nextgroup* - -引数"nextgroup"の後には構文グループ名のリストをカンマ区切りで続ける -("contains"と同様。パターンを使うこともできる)。 - -引数"nextgroup"が与えられると、マッチやリージョンの終了位置の後ろで、指定され -た構文グループにマッチする部分が探される。どのグループもマッチしなければ、ハイ -ライトは通常通り続けられる。マッチが見つかった場合はそのグループが使われる。現 -在のグループの引数"contains"でそのグループが指定されていなくてもそうなる。つま -り、これは指定されたグループの優先度を最大にすることと同じである。例: > - :syntax match ccFoobar "Foo.\{-}Bar" contains=ccFoo - :syntax match ccFoo "Foo" contained nextgroup=ccFiller - :syntax region ccFiller start="." matchgroup=ccBar end="Bar" contained - -これは"Foo"の後に"Bar"が現れたときのみ、"Foo"と"Bar"に異なるハイライトをする。 -以下のテキストにおいて、"f"と書いたところはccFooでハイライトされ、"bbb"と書い -たところはccBarでハイライトされる。 > - - Foo asdfasd Bar asdf Foo asdf Bar asdf - fff bbb fff bbb - -".\{-}"を使い、次のBarまでのスキップが最小になるようにしている。もし".*"を使う -と、最初の"Foo"と最後の"Bar"がccFooBarのマッチ部分に含まれるため、"Bar"と"Foo" -の間の"asdf"が"ccFoobar"グループとしてハイライトされてしまう(|pattern|を参照)。 - - -skipwhite *:syn-skipwhite* -skipnl *:syn-skipnl* -skipempty *:syn-skipempty* - -これら3個の引数は"nextgroup"と組み合わせたときのみ意味を持つ。これらを指定する -と、次のグループがマッチする前に、以下のテキストがあってもよくなる。 - skipwhite スペースとタブ文字をスキップする - skipnl 行末をスキップする - skipempty 空行をスキップする(自動的に"skipnl"も含むことになる) - -例えば"skilwhite"を指定した場合、次のどのグループもホワイトスペースにマッチし -ないならば、ホワイトスペースをスキップする。 - -"skipnl"を指定すると、nextgroupの照合が次の行からも探される。これは現在のアイ -テムが行末で終わったときのみ有効である。"skipnl"を指定しない場合、nextgroupは -同一行のそのアイテム以降から照合される。 - -次のグループまでスキップされたテキストの中では他のグループの照合は無視される。 -次のグループの照合が見つからなかったとき、再び他のグループの照合が検索される。 -つまり、次のグループの照合と、ホワイトスペースと<EOL>のスキップは他のアイテム -より優先される。 - -例: > - :syn match ifstart "\<if.*" nextgroup=ifline skipwhite skipempty - :syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained - :syn match ifline "endif" contained -Note マッチ"[^ \t].*"はホワイトスペース以外の全てのテキストにマッチする。よっ -て"endif"にもマッチする。そのためマッチ"endif"を最後に置き、最優先にしている。 -Note この例はネストした"if"には機能しないことに注意。ネストに対応するには引数 -"contains"を指定する必要がある(この例では簡単のため省略した)。 - -暗黙 CONCEAL (IMPLICIT CONCEAL) *:syn-conceal-implicit* - -:sy[ntax] conceal [on|off] - これ以降の ":syntax" コマンドでキーワード、マッチ、リージョンを定義し - たときに "conceal" フラグをセットするかどうかを定義します。":syn - conceal on" を実行した後で ":syn keyword"、":syn match"、":syn region" - を実行すると、暗黙的に "conceal" フラグがセットされます。":syn conceal - off" を実行することで通常の状態、つまり "conceal" フラグを明示的に設定 - しなければならない状態に戻ります。 - -============================================================================== -7. syntaxのパターン *:syn-pattern* *E401* *E402* - -syntaxコマンドでは、パターンの前後を同じ文字で囲まなければならない。これは -":s"コマンドと同様である。もっともよく使われるのはダブルクォートである。しかし -パターンがダブルクォートを含んでいる場合は、そのパターンが含んでいない他の文字 -を使ったほうがよい。例: > - :syntax region Comment start="/\*" end="\*/" - :syntax region String start=+"+ end=+"+ skip=+\\"+ - -パターンの説明については|pattern|を参照。構文パターンは常に'magic'オプションが -セットされているのと同じように解釈される(実際の'magic'オプションの値とは無関 -係)。また、'cpoptions'に'l' フラグが含まれていない場合と同じように解釈される。 -これは構文ファイルの可搬性を高め、'compatible'と'magic'の設定と無関係にするた -めである。 - -"[a-z]*"など空文字列にマッチするパターンは避けること。これは全ての位置にマッチ -するため、ハイライトがとても遅くなる。 - - *:syn-pattern-offset* -パターンに文字数のオフセットを指定することができる。これによってハイライトされ -る部分を変更したり、マッチやリージョンに含まれるテキスト領域(これは他のアイテ -ムを照合するときにだけ関係する)を変更することができる。どちらもマッチしたパター -ンに相対的である。skipパターンに対して文字数のオフセットを指定すると、endパター -ンの検索が始まる位置を決めることができる。 - -オフセットは"{what}={offset}"の形で指定する。 -{what}は次の7個の文字列のどれかである: - -ms Match Start マッチしたテキストの開始位置のオフセット -me Match End マッチしたテキストの終了位置のオフセット -hs Highlight Start ハイライトが始まる位置のオフセット -he Highlight End ハイライトが終わる位置のオフセット -rs Region Start リージョンの本体が始まる位置のオフセット -re Region End リージョンが終わる位置のオフセット -lc Leading Context パターンの"leading context"を過ぎた後のオフセット - -{offset}は次のうちのどれか: - -s パターンのマッチ部分の先頭 -s+{nr} パターンのマッチ部分の先頭から右へ{nr}文字目 -s-{nr} パターンのマッチ部分の先頭から左へ{nr}文字目 -e パターンのマッチ部分の末尾 -e+{nr} パターンのマッチ部分の末尾から右へ{nr}文字目 -e-{nr} パターンのマッチ部分の末尾から左へ{nr}文字目 -{nr} ("lc"専用): ら左へ{nr}文字目 - -例: "ms=s+1", "hs=e-2", "lc=3". - -どのパターンの後にどのオフセットを指定してもよいが、それが意味を持たない場合も -ある。次の表はどのオフセットが実際に有効かを示している: - - ms me hs he rs re lc ~ -match item yes yes yes yes - - yes -region item start yes - yes - yes - yes -region item skip - yes - - - - yes -region item end - yes - yes - yes yes - -複数のオフセットの間に','を入れて連結することができる。例: > - :syn match String /"[^"]*"/hs=s+1,he=e-1 -< - some "string" text - ^^^^^^ ここがハイライトされる - -注意: -- パターンとオフセットの間にホワイトスペースを挟んではならない。 -- ハイライトされる領域がマッチしたテキストの外側にはみ出してはならない。 -- endパターンに対する負のオフセットは機能しない場合がある。これはハイライトが - 既に終わっているべきとき、endパターンは検出されない可能性があるからである。 -- Vim 7.2 以前では、オフセットは文字単位でなくバイト単位であった。それではマル - チバイト文字ではうまく機能しないので、7.2 から変更された。 -- マッチの開始位置が、パターンがマッチした位置と別の行になってはならない。つま - り"a\nb"ms=eというのは正常に機能しない。ハイライトの開始位置は別の行にあって - もかまわない。"a\nb"hs=eというのは正常に機能する。 - -例(コメントにマッチするが /* と */ はハイライトしない): > - :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1 -< - /* this is a comment */ - ^^^^^^^^^^^^^^^^^^^ ここがハイライトされる - -より複雑な例: > - :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1 -< - abcfoostringbarabc - mmmmmmmmmmm マッチ部分 - sssrrreee start/region/endとしてハイライトされる部分 ("Foo", "Exa", "Bar") - -Leading context *:syn-lc* *:syn-leading* *:syn-context* - -注意:これは古い機能であり、以前のバージョンとの後方互換性のためだけに残されて -いる。現在はパターン中の|/\@<=|コンストラクトを使うことが推奨されている。 - -"lc"オフセットはリーディングコンテキストを指定する。これはパターンの一部になけ -ればならないが、マッチ部分の一部とは見なされないものである。"lc=n"のオフセット -を使うとパターンの照合を試みる前にn桁戻るようになる。リーディングコンテキスト -内に他のパターンにマッチしている文字が現れてもよい。これはマッチの前方にあって -はならない「エスケープ」文字を指定する場合などに使える: > - - :syn match ZNoBackslash "[^\\]z"ms=s+1 - :syn match WNoBackslash "[^\\]w"lc=1 - :syn match Underline "_\+" -< - ___zzzz ___wwww - ^^^ ^^^ Underlineにマッチする - ^ ^ ZNoBackslashにマッチする - ^^^^ WNoBackslashにマッチする - -"ms"を指定しないと自動的に"lc"と同じ値にセットされる。 - - -複数行にわたるパターン *:syn-multi-line* - -パターンが"\n"を含むと改行にマッチするようになる。たいていの場合これは期待通り -に動作するが、少しだけ例外がある。 - -startパターンにオフセットをつけるとき、マッチ部分の開始位置が次の行の先頭で -あってはならない。ハイライトは次の行で始まってもよい。"\zs" を使うときも、マッ -チ部分の開始位置が他の行になってはならない。 - -skipパターンも"\n"を含んでよい。ただし次の行の最初の文字がskipパターンにマッチ -していても、そこからendパターンの検索が続けられる。これは、再描画は領域内のど -の行でも始まることができ、skipパターンが前の行から始まったかどうかはチェックさ -れないからである。例えば、skipパターンが"a\nb"で、endパターンが"b"のとき、次の -テキストの2行目でendパターンがマッチする。 > - x x a - b x x -つまり、skipパターンは"\n"以降の文字にはマッチしないことになる。 - - -外部マッチ *:syn-ext-match* - -リージョンのパターンでは特別に以下の正規表現が使える: - - */\z(* */\z(\)* *E50* *E52* - \z(\) 一部を「external」としてマークする。これをつけると他のパターン - からアクセスできるようになる。現在はリージョンのstartパターン - 内でのみ使用可能。 - - */\z1* */\z2* */\z3* */\z4* */\z5* - \z1 ... \z9 */\z6* */\z7* */\z8* */\z9* *E66* *E67* - startパターンにマッチしたテキスト中からマークしておいた部分を - 参照する。 - -リージョンのstartとendパターンで正規表現の一部を共有したい場合がある。 -一般的な例としてはPerlやUnixシェルのヒアドキュメントがある。これは特別な正規表 -現アイテム"\z"を使えば達成できる。これは正規表現の一部を"external"としてマーク -しておく。するとその部分を他のパターンから参照できるようになる。例えば、ヒアド -キュメントは次のようにすればよい: > - :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" - -このように、\zは2つの役割を果たす。startパターンにおいては正規表現の一部 -"\(\I\i*\)"をexternalとしてマークする。endパターンでは\1によってstartパターン -中の最初のマークされた部分への外部参照とする。外部参照はskipパターン中でも使え -る: > - :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" - -通常のマークとexternalなマークはまったく独立であり、別々に番号が振られる。例え -ば、文字列"aabb"に対してパターン"\z(..\)\(..\)"を適用すると、\1は"bb"を参照 -し、\z1は"aa"を参照するようになる。externalなマークをした部分は、通常のマーク -と違って、同一パターン内で後方参照することはできない。ある部分に対して通常の -マーク、externalなマーク両方をつけたい場合は、"\(\z(...\)\)"のようにネストさせ -ればよい。 - -一行内でマッチした部分しか参照できないことに注意。複数行にわたってマッチした部 -分は参照できない。 - -============================================================================== -8. クラスタ *:syn-cluster* *E400* - -:sy[ntax] cluster {cluster-name} [contains={group-name}..] - [add={group-name}..] - [remove={group-name}..] - -このコマンドを使うと、複数の構文グループを1つの名前のもとにまとめることができ -る。このまとまりのことをクラスタと呼ぶ。 - - contains={group-name}.. - クラスタに含まれるグループを指定する。 - add={group-name}.. - 指定したグループをクラスタに加える。 - remove={group-name}.. - 指定したグループをクラスタからとり除く。 - -定義したクラスタはcontains=..やcontainedin=..、nextgroup=..、add=..、remove=.. -などの文脈で使うことができる。そのとき、クラスタ名の頭に"@"をつける。クラスタ -を定義する前にそのクラスタ名を使用してもよい。 - -例: > - :syntax match Thing "# [^#]\+ #" contains=@ThingMembers - :syntax cluster ThingMembers contains=ThingMember1,ThingMember2 - -この例からわかるように、クラスタに対する変更はさかのぼって効果がある。クラスタ -の定義は直前になってチェックされる。例: > - :syntax keyword A aaa - :syntax keyword B bbb - :syntax cluster AandB contains=A - :syntax match Stuff "( aaa bbb )" contains=@AandB - :syntax cluster AandB add=B " これによって2つのキーワードがStuff内で - マッチするようになる - -これはクラスタのネスト度にも関係がある: > - :syntax keyword A aaa - :syntax keyword B bbb - :syntax cluster SmallGroup contains=B - :syntax cluster BigGroup contains=A,@SmallGroup - :syntax match Stuff "( aaa bbb )" contains=@BigGroup - :syntax cluster BigGroup remove=B " BはBigGroup内にないので無意味 - :syntax cluster SmallGroup remove=B " Stuff内でbbbがマッチしなくなる -< - *E848* -クラスタの最大数は 9767 です。 - -============================================================================== -9. 構文ファイルのインクルード *:syn-include* *E397* - -構文ファイルの中で、関係する構文ファイルをインクルードしたい場合がある。 -これには、構文ファイルの関係に応じて2種類の方法がある: - - - インクルードされるファイル内のトップレベルのアイテムをそのままトップ - レベルとしたい場合は、単に|:runtime|コマンドを使えばよい: > - - " In cpp.vim: - :runtime! syntax/c.vim - :unlet b:current_syntax - -< - インクルードされるファイル内のトップレベルのアイテムをリージョンに内 - 包させるには、":syntax include"コマンドを使うとよい: > - -:sy[ntax] include [@{grouplist-name}] {file-name} - - インクルードされるファイル中で宣言された構文アイテム全てに - "contained"フラグがつけられる。さらにグループのリストを指定すると、 - インクルードされるファイル中のトップレベルの構文アイテム全てに対して - そのリストがつけられる。 > - - " In perl.vim: - :syntax include @Pod <sfile>:p:h/pod.vim - :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod -< - {file-name}が絶対パスである場合("/", "c:", "$VAR", "<sfile>"のどれか - で始まる場合)そのファイルが読み込まれる(sourceされる)。相対パスの場 - 合(例:"syntax/pod.vim")、そのファイルが'runtimepath'中から探される。 - マッチしたファイル全てが読み込まれる。相対パスを使用することが推奨さ - れる。そうすればユーザが":syn include"を書き換えることなく、インク - ルードされるファイルを改変して別の場所におけるからである。 - - *E847* -インクルードの最大数は 999 です。 - -============================================================================== -10. 表示のシンクロナイズ *:syn-sync* *E403* *E404* - -ドキュメント中のどの位置からでも再描画を開始できると望ましい。これを実現するに -は、再描画を開始する位置における構文の状態を知る必要がある。 - -:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...] - -シンクロナイズには4つのやり方がある: -1. 常にファイルの最初からパースする。 - |:syn-sync-first| -2. Cスタイルのコメントに基づく。VimはCコメントの仕様を理解し、現在行がコメント - の内側から始まっているか外側から始まっているかを判定することができる。 - |:syn-sync-second| -3. 一定行さかのぼり、そこからパースを開始する。 - |:syn-sync-third| -4. テキストをさかのぼり、シンクロナイズを始める目印の正規表現を検索する。 - |:syn-sync-fourth| - - *:syn-sync-maxlines* *:syn-sync-minlines* -最後の3つの方法に関して、さかのぼる行数は"minlines"と"maxlines"で制限される。 - -引数"minlines={N}"が指定されると、常に少なくともその行数さかのぼってパースが開 -始される。パースする行数が少なすぎて正しくハイライトできないかもしれないとき、 -またはシンクロナイズを使うのが不可能であるとき、この引数を使うとよい。 - -引数"maxlines={N}"が指定されると、コメントや正規表現を検索するためにさかのぼる -行数が最大N行になる。これは遅いマシンを使っていて、シンクロナイズする行数が少 -ないとわかっているときに便利である。例: > - :syntax sync ccomment maxlines=500 -< - *:syn-sync-linebreaks* -複数行にマッチする正規表現を使っているとき、ある行に変更を施すと、前の行でマッ -チしていた正規表現がマッチしなくなってしまうことがある。この場合、変更を施した -位置より上からシンクロナイズを行わなければならない。その行数を引数"linebreaks" -で指定する。例えば、正規表現が改行を1個含んでいる場合はこのようにする: > - :syntax sync linebreaks=1 -こうすると、常に変更が施された行の少なくとも1行前から再描画が開始される。 -"linebreaks"のデフォルト値は0。通常"minlines"の値は"linebreaks"の値より大きい。 - -第一の方法: *:syn-sync-first* -> - :syntax sync fromstart - -ファイルの最初からパースする。この方法を使うと構文ハイライトが正確になるが、大 -きいファイルに対しては遅くなる。Vimは以前にパースしたテキストをキャッシュして -おく。そのため、遅くなるのはファイルを最初にパースするときだけである。しかし、 -変更を施すと、それ以降の一部をパースし直さなければならなくなる(最悪の場合はファ -イルの最後まで)。 - -"fromstart"を使うことは"minlines"を非常に大きな値にすることと同じ効果を持つ。 - - -第二の方法: *:syn-sync-second* *:syn-sync-ccomment* - -第二の方法を使うには、単に引数"ccomment"をつければよい。 -例: > - :syntax sync ccomment - -画面最上行がCスタイルコメントの内側にあると判断される場合、グループ名が -"Comment"のリージョン構文アイテムが使われる。この方法を使うには"Comment"という -グループ名のリージョンがなければならないことに注意。他のグループ名を指定するこ -ともできる。例: > - :syntax sync ccomment javaComment -こうすると、検出されたCコメントのリージョンに対して"syn region javaComment"で -指定されたアイテムのうち最後のものが使われる。ここで指定するリージョンのstart -パターンが"\/*"、endパターンが"*\/"となっていないと適切に機能しない。 - -引数"maxlines"を使うと検索の行数を制限できる。引数"minlines"を使うと少なくとも -その行数だけさかのぼって開始させることができる(例:2,3行だけを受け取るコンスト -ラクトがある場合。ただしその場合シンクロナイズするのが困難) - -注意: "*/"を含む文字列で行をまたぐものがあると、Cコメントによるシンクロナイズ -は適切に機能しない。行をまたいで文字列を書くのは悪いプログラミング習慣である -(多くのコンパイラが警告を出す)。また、コメント中に"*/"が現れる機会はまれなの -で、この制限は注意するほどのものではない。 - - -第三の方法: *:syn-sync-third* - -第三の方法を使うには引数"minlines={N}"を加えればよい。この方法を指定すると、 -{N}行前からパースを開始する。これは{N}行余分にパースされることを意味する。その -ためこの方法は少し遅くなる。 -例: > - :syntax sync minlines=50 - -"lines"は"minlines"と同じ意味である(古いバージョンで使われている)。 - -第四の方法: *:syn-sync-fourth* - -第四の方法は、シンクロナイズパターンと呼ばれる特定のリージョンの末尾でシンクロ -ナイズするものである。行をまたげるのはリージョンだけなので、リージョンの末尾に -出会ったら、どの構文アイテムの中にいるのかを知ることができる。再描画が始まる行 -のすぐ上から検索を開始し、ファイルの上方に向かって検索する。 - -これはシンクロナイズしない構文アイテムとちょうど同じように機能する。内包された -マッチ、nextgroupなどを使うことができる。ただし少しだけ違いがある。 -- キーワードを使うことはできない。 -- "sync"キーワード付きの構文アイテムは、完全に別の構文アイテムのグループを形成 - する。シンクロナイズするグループとしないグループを混ぜることはできない。 -- 照合はバッファ内で1行ごとに逆向きに行われる(前向きではない)。 -- 行継続パターンをつけることができる。これを使うと、あたかも1行であるかのよう - に検索する一連の行を指定することができる。これは、指定したアイテムとの照合が - 継続パターンを含む一連の行の最初から始まることを意味する。 -- "nextgroup"や"contains"は1行(または継続された一連の行)内でだけ有効。 -- リージョンは同一行(または継続された一連の行)内で開始・終了しなければならな - い。そうでないと行末(または継続された一連の行)内で終わるものとされる。 -- シンクロナイズパターンとのマッチが見つかると、その行(または継続された一連の - 行)の残りから再びマッチが探される。最後のマッチが使われる。 - これはリージョンの開始と終了が同一行内にあるとき使われる - (例: /* this */のようなCコメントでは、最後の"*/"が使われる)。 - -シンクロナイズパターンとのマッチは2通りの使い方がある。 -1. 再描画を始める場所(シンクロナイズパターンの検索が始まる場所でもある)から強 - 調のためのパースを始める。そこで有効であると期待される構文グループを指定し - なければならない。行をまたぐリージョンが他のリージョンを含んではならない場 - 合にこれはうまく機能する。 -2. ハイライトのためのパースはマッチの直後から継続される。マッチの直後に現れる - と期待される構文グループを指定しなければならない。 - これは前の方法がうまくいかないときに使われる。より多くのテキストをパースす - る必要があるため、とても遅い。 -両方のタイプを同時に使うこともできる。 - -シンクロナイズパターンだけでなく、他のマッチとリージョンを指定して望まないマッ -チが見つかるのを避けることができる。 - -[シンクロナイズパターンが別々に与えられる理由は、シンクロナイズポイントの検索 -はたいていの場合、ハイライトするところを判別するよりずっと単純だからである。パ -ターンの数が減るとそれだけ速くなる。] - - *syn-sync-grouphere* *E393* *E394* - :syntax sync match {sync-group-name} grouphere {group-name} "pattern" .. - - シンクロナイズ用に使うマッチを定義する。{group-name}はマッチのすぐ後に - 続く構文グループの名前である。ハイライトのためのテキストのパースはマッ - チの直後から始まる。この{group-name}がついたリージョンが存在しなければ - ならない。最初に定義されたリージョンが使われる。マッチの後に構文グルー - プが続かない場合は"NONE"を使う。 - - *syn-sync-groupthere* - :syntax sync match {sync-group-name} groupthere {group-name} "pattern" .. - - "grouphere"と同様。ただし{group-name}はシンクロナイズポイントの検索が - 始まる行の行頭で使われる構文グループの名前である。マッチとシンクロナイ - ズパターンの検索が始まる位置との間のテキストは構文ハイライトを変えては - ならない。例えばCにおいて"/*"と"*/"を後方検索することができる。"/*"が - 先に見つかったら、今はコメントの内側にいるとわかる。なので"groupthere" - は"cComment"となる。"*/"が先に見つかったら今はコメントの中ではないとわ - かる。なので"groupthere"は"NONE"となる。(実際は、文字列の中に"/*"と - "*/"があるかもしれないので、もう少し込み入っている。これは読者の練習問 - 題としておく...)。 - - :syntax sync match .. - :syntax sync region .. - - 引数"groupthere"なしの場合。シンクロナイズポイントの検索の際にスキップ - されるリージョンやマッチを定義する。 - - *syn-sync-linecont* - :syntax sync linecont {pattern} - - {pattern}とのマッチが次の行にも継続されるとみなされる。つまりシンクロ - ナイズポイントの検索の際、行は連結されているものと見なされる。 - -引数"maxlines={N}"が同時に与えられると、マッチを検索する行がN行に制限される。 -これは遅いマシンを使っていて、シンクロナイズするものが少ないとわかっているとき -に便利。例: > - :syntax sync maxlines=100 - -全てのシンクロナイズの設定をクリアするには: > - :syntax sync clear - -あるシンクロナイズパターンをクリアするには: > - :syntax sync clear {sync-group-name} .. - -============================================================================== -11. 構文アイテムのリストを表示する *:syntax* *:sy* *:syn* *:syn-list* - -次のコマンドは全ての構文アイテムのリストを表示する: > - - :sy[ntax] [list] - -ある構文グループに属する構文アイテムを表示するには: > - - :sy[ntax] list {group-name} - -あるクラスタに属する構文グループを表示するには: *E392* > - - :sy[ntax] list @{cluster-name} - -":syntax"コマンドに対する他の引数については上を参照。 - -":syntax"コマンドは":sy"とも略記できる。しかし":syn"の方が見栄えがよいため、普 -通はこちらが使われる。 - -============================================================================== -12. ハイライトコマンド *:highlight* *:hi* *E28* *E411* *E415* - -ハイライトグループには3つのタイプがある: -- 特定の構文言語用のもの。名前がその言語の名前で始まる。このタイプのほとんど - は属性を持たず、2番目のタイプのグループにリンクされる。 -- 全ての構文言語に対して使われるもの。 -- 'highlight'オプションに使われるもの。 - *hitest.vim* -現在有効な全てのグループを知るにはこのコマンドを使う: > - :so $VIMRUNTIME/syntax/hitest.vim -このコマンドは新しいウィンドウを開き、そこに全てのハイライトグループ名を、それ -自身の色を使って表示する。 - - *:colo* *:colorscheme* *E185* -:colo[rscheme] 現在のカラースキームの名前を表示します。 - 基本的には次のコマンドと同じです > - :echo g:colors_name -< g:colors_name が定義されていない場合は "default" と表 - 示されます。|+eval| 機能付きでコンパイルされていない場 - 合は "unknown" と表示されます。 - -:colo[rscheme] {name} カラースキーム{name}を読み込む。これは'runtimepath'中 - から"colors/{name}.vim"というファイルを検索する。最初 - に見つかったものが読み込まれる。 - 現在使われているカラースキームの名前を見るには次のよう - にします: > - :colo -< 名前は g:colors_name 変数にも格納されています。 - 再帰的な読み込みはされない。つまりカラースキームスクリ - プト中で":colorscheme"を使うことはできない。 - カラースキームが読み込まれた後、自動コマンドイベント - |ColorScheme|が発生する。カラースキームファイルを書く - ための情報については次を参照: > - :edit $VIMRUNTIME/colors/README.txt - -:hi[ghlight] 属性がセットされたハイライトグループを全て表示する。 - -:hi[ghlight] {group-name} - 1つのハイライトグループを表示する。 - -:hi[ghlight] clear 全てのハイライトをデフォルトに戻す。ユーザによって加え - られたグループに対するハイライトが全て消去される。 - 現在の'background'の値によってデフォルトの色が決まる。 - -:hi[ghlight] clear {group-name} -:hi[ghlight] {group-name} NONE - 1つのハイライトグループに対するハイライトを無効にする。 - デフォルトの色に戻すわけではない。 - -:hi[ghlight] [default] {group-name} {key}={arg} .. - ハイライトグループを追加する、または既存のグループに対 - する強調を変更する。 - 引数{key}={arg}については|highlight-args|を参照。 - オプショナルな引数[default]については - |:highlight-default|を参照。 - -通常、ハイライトグループは起動時に一度だけ追加される。そこでハイライトのデフォ -ルト値をセットする。その後、ハイライトコマンドを使うことによってデフォルトでな -い値に変えることができる。値"NONE"を使うとその値をオフにしたりデフォルト値に戻 -したりできる。 - -色を変える簡単な方法は|:colorscheme|コマンドを使うことである。すると、次のよう -な":highlight"コマンドが書かれたファイルが読み込まれる: > - - :hi Comment gui=bold - -このファイルに含まれない設定は変更されないままである。指定されたフィールドだけ -が更新され、それ以前の設定とマージされる。なのでその結果は次のコマンド1つを実 -行するのと同じである: > - :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold -< - *:highlight-verbose* -'verbose'を0でない値にしてハイライトグループの一覧を表示すると、最後に設定され -た場所も表示される。例: > - :verbose hi Comment -< Comment xxx term=bold ctermfg=4 guifg=Blue ~ - Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~ - -":hi clear"が実行されると、このコマンドを実行したスクリプトがデフォルト値とし -て言及される。より詳しくは|:verbose-cmd|を参照。 - - *highlight-args* *E416* *E417* *E423* -ハイライトに関して、ターミナルは3種類に分類される: -term 通常のターミナル(vt100, xterm) -cterm カラーターミナル(MS-DOS console, color-xterm。これらはtermcapエントリ - "Co"をもつ) -gui GUI - -ハイライトはこれらのタイプごとに指定できる。そうすることによって、同じ構文ファ -イルを全てのターミナルに対して使用でき、ターミナルごとに最善のハイライトを利用 -できるようになっている。 - -1. highlightコマンドの引数(通常のターミナル用) - - *bold* *underline* *undercurl* - *inverse* *italic* *standout* -term={attr-list} *attr-list* *highlight-term* *E418* - attr-listはカンマ区切りのリスト(スペースは入れない)で、要素は以下の通 - り(順序はどうでもよい): - bold - underline - undercurl 必ずしも使用できるとは限らない - reverse - inverse reverseと同じ - italic - standout - NONE 属性を使用しない(属性をリセットするために使う) - - この引数で"bold"を指定してもよいし、太文字のフォントを指定してもよい。 - どちらも表示は同じになる。 - "undercurl"は波線のこと。"undercurl"が使用できないときは"underline"が - 使われる。一般的には"undercurl"はGUIでのみ使用できる。その色は - |highlight-guisp|で設定できる。 - -start={term-list} *highlight-start* *E422* -stop={term-list} *term-list* *highlight-stop* - これらのターミナルコードのリストを使ってターミナルについての標準的でな - い属性を得ることができる。 - - 引数"start"でエスケープシーケンスを指定すると、ハイライトするテキスト - の前にそれが書き込まれる。そのテキストをハイライトする際にターミナルに - 送りたいものをなんでも指定できる。引数"stop"でエスケープシーケンスを指 - 定すると、強調されるテキストの後にそれが書き込まれる。"start"で行った - ことを"stop"で元に戻すべきである。そうしないとスクリーンがごちゃごちゃ - になってしまうだろう。 - - {term-list}は2つの形を持つ: - - 1. エスケープシーケンス付きの文字列。 - これは"t_"で始まるものと空文字列を除く任意の文字列である。"<Esc>"や - "<Space>"のような<>記法が利用できる。例: - start=<Esc>[27h;<Esc>[<Space>r; - - 2. ターミナルコードのリスト。 - ターミナルコードは"t_xx"の形を持つ。"xx"はtermcapエントリ名である。 - ターミナルコードはカンマで区切る。ホワイトスペースは使えない。例: - start=t_C1,t_BL - 対応するターミナルコードが存在しなければならない。 - -2. highlightコマンドの引数(カラーターミナル用) - -cterm={attr-list} *highlight-cterm* - {attr-list}の説明は上を参照|attr-list|。 - 色を使う場合、引数"cterm"は"term"と異なる結果になる。例えば、通常の - ターミナルではコメントにアンダーラインを引き、カラーターミナルではコメ - ントを青色で表示することができる。 - 注意:DOSコンソールなど多くのターミナルでは色づけの際にこれらの属性を混 - 在させることはできない。"cterm="か"ctermfg="が"ctermbg="のどれか1つだ - けを使うこと。 - -ctermfg={color-nr} *highlight-ctermfg* *E421* -ctermbg={color-nr} *highlight-ctermbg* - 引数{color-nr}で色番号を指定する。色番号の範囲は0からtermcapエントリ - "Co"の値 - 1 までである。 - この色番号で実際に表示される色はターミナルの種類とその設定に依存する。 - "cterm"の設定によって色が変わる場合もある。例えば、あるシステムでは - "cterm=bold ctermfg=3"でそのまま3番の色を表示し、他のシステムでは異な - る色を表示することがある。 - - xtermにおいてはこれはユーザのリソースに依存し、やや予測ができない。デ - フォルトについてはxtermのドキュメントを参照のこと。カラーxterm用の色は - .Xdefaultsファイルで変更することができる。このため、ユーザごとに表示さ - れる色が異なるかもしれない。カラーxtermについては|xterm-color|を参照。 - - コンソールウィンドウ内のMSDOS標準色は固定されている。そのため、これら - の色を名前に使っている。一方、X11の色名の意味は固定されている。そこで - ハイライトの設定に可搬性を持たせるため、X11の色設定が使われている(複雑 - であるが)。以下の色名を、色番号の代わりに使うことができる: - - *cterm-colors* - NR-16 NR-8 COLOR NAME ~ - 0 0 Black - 1 4 DarkBlue - 2 2 DarkGreen - 3 6 DarkCyan - 4 1 DarkRed - 5 5 DarkMagenta - 6 3 Brown, DarkYellow - 7 7 LightGray, LightGrey, Gray, Grey - 8 0* DarkGray, DarkGrey - 9 4* Blue, LightBlue - 10 2* Green, LightGreen - 11 6* Cyan, LightCyan - 12 1* Red, LightRed - 13 5* Magenta, LightMagenta - 14 3* Yellow, LightYellow - 15 7* White - - "NR-16"の下の番号は16色ターミナル('t_Co'が16以上のもの)用である。 - "NR-8"の下の番号は8色ターミナル('t_Co'が16未満のもの)用である。 - '*'はctermfgにbold属性がセットされることを意味している。"linux"な - ど多くの8色ターミナルでは明るい色になる。ただし背景色には適用され - ない。'*'がないものはbold属性なしになる。他の方法でbold属性をつけ - たいなら引数"cterm="を"ctermfg="や"ctermbg="の後に書くこと。または - 色名の代わりに番号を使うこと。 - - 色名の大文字・小文字は無視される。 - 16色ansiスタイルターミナル(xtermを含む)ではNR-8の列の番号が使われ - ることに注意。ここで'*'は'add 8'という意味になる。つまりBlueが12 - に、DarkGrayが8になる。 - - カラーターミナルによっては、色名を使うと間違った色で表示される場合 - もあることに注意。 - - *:hi-normal-cterm* - Normalグループに対して"ctermfg"や"ctermbg"を設定すると、これらはハイラ - イトされないテキストに対する色になる。 - 例: > - :highlight Normal ctermfg=grey ctermbg=darkblue -< Normalグループに対して"ctermbg"を設定すると、オプション'background'が - 自動的に調整される。これによって'background'に依存するハイライトグルー - プが変更される。そのため、まずNormalに対する色を設定し、それから他の色 - を設定するべきである。 - カラースキーム使用時に'background'を変更するとカラースキームが再読み込 - みされる。そしてNormalを含む全ての色がリセットされる。これが嫌なら最初 - に変数"g:colors_name"を削除すること。 - - Normalグループの"ctermfg"や"ctermbg"を変更した場合、Vim終了時にその色 - をリセットする必要がある。これはtermcapエントリ"op"|t_op|を使ってなさ - れる。リセットがうまくいかない場合は.vimrc中で't_op'を設定してみること。 - *E419* *E420* - Vimが通常の文字色と背景色を知っている場合、色名として"fg"と"bg"を使用 - できる。これはNormalグループの色とMS-DOSコンソールの色を設定しないと使 - えない。例えば反転表示をするには: > - :highlight Visual ctermfg=bg ctermbg=fg -< このコマンドを実行した時点で有効な色が使われることに注意。この後で - Normalグループを変更しても"fg"と"bg"は調整されない。 - - -3. highlightコマンドの引数(GUI用) - -gui={attr-list} *highlight-gui* - これらはGUIモードで使われる属性を設定する。 - 説明は|attr-list|を参照。 - ここで"bold"を設定しても太字のフォントを使ってもよい。どちらも同じ効果 - を持つ。 - "Normal"グループに対する属性は無視される。 - -font={font-name} *highlight-font* - font-nameはVimを実行しているシステム上で使われるフォント名である。X11 - ではこれは複雑な名前になる。例えば: > - font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 -< - フォント名"NONE"を使うとデフォルトのフォントに戻る。 - "Normal"グループに対してフォントを設定すると、これがデフォルトフォント - になる(オプション'guifont'が変更されるまでは; 最後に設定したものが使わ - れる)。 - 以下のものはMotifとAthena上でのみ動作し、他のGUI上では利用できない: - "Menu"グループに対してフォントを設定すると、メニューが変更される。 - "Tooltip"グループに対してフォントを設定するt、ツールチップが変更され - る。 - Menu用とTooltip用を除く全てのフォントのサイズがデフォルトフォントのサ - イズと同じでなければならない。そうでないと再描画の際に問題が発生する。 - -guifg={color-name} *highlight-guifg* -guibg={color-name} *highlight-guibg* -guisp={color-name} *highlight-guisp* - guifgは文字色、guibgは背景色、guispは波線の色を指定する。これらはGUIで - 使用される。 - いくつか特別な名前がある: - NONE no color (透明) - bg 通常の背景色を使う - background 通常の背景色を使う - fg 通常の文字色を使う - foreground 通常の文字色を使う - 埋め込みスペースや他の特別な文字に対して色名を使うには、色名をシングル - クォートでくくる。それゆえシングルクォートを使うことはできない。 - 例: > - :hi comment guifg='salmon pink' -< - *gui-colors* - 推奨されている色名 (これらはほとんどのシステムで利用可能である) - Red LightRed DarkRed - Green LightGreen DarkGreen SeaGreen - Blue LightBlue DarkBlue SlateBlue - Cyan LightCyan DarkCyan - Magenta LightMagenta DarkMagenta - Yellow LightYellow Brown DarkYellow - Gray LightGray DarkGray - Black White - Orange Purple Violet - - Win32 GUIバージョンでは他にもシステムカラーが利用できる。 - |win32-colors|を参照。 - - RGB値によって色を指定することもできる。 - フォーマットは"#rrggbb"、ここで - "rr" Red値 - "gg" Green値 - "bb" Blue値 - これらの値は16進であり、範囲は"00"から"ff"。例: > - :highlight Comment guifg=#11f0c3 guibg=#ff00ff -< - *highlight-groups* *highlight-default* -以下はデフォルトのハイライトグループである。これらのグループはデフォルトでオプ -ション'highlight'によって使われる。ただしハイライトは'background'の値に依存す -ることに注意。":highlight"コマンドで現在の設定を知ることができる。 - *hl-ColorColumn* -ColorColumn 'colorcolumn' で設定された列の表示に使われる - *hl-Conceal* -Conceal Conceal されたテキストの代わりに表示される代替文字の表示に使わ - れる ('conceallevel' 参照) - *hl-Cursor* -Cursor カーソル下の文字 - *hl-CursorIM* -CursorIM Cursorと同じだが、IMEモードにいるとき使われる|CursorIM|。 - *hl-CursorColumn* -CursorColumn 'cursorcolumn'がオンになっているときのカーソルがある画面上の桁 - *hl-CursorLine* -CursorLine 'cursorline'がオンになっているときのカーソルがある画面上の行 - *hl-Directory* -Directory ディレクトリ名(とリストにある特別な名前) - *hl-DiffAdd* -DiffAdd diffモード: 追加された行 |diff.txt| - *hl-DiffChange* -DiffChange diff モード: 変更された行 |diff.txt| - *hl-DiffDelete* -DiffDelete diff モード: 削除された行 |diff.txt| - *hl-DiffText* -DiffText diff モード: 変更された行中の変更されたテキスト |diff.txt| - *hl-ErrorMsg* -ErrorMsg コマンドラインに現れるエラーメッセージ - *hl-VertSplit* -VertSplit 垂直分割したウィンドウの区切りとなる桁 - *hl-Folded* -Folded 閉じた折り畳みの行 - *hl-FoldColumn* -FoldColumn 'foldcolumn' - *hl-SignColumn* -SignColumn 目印|signs|が表示される行。 - *hl-IncSearch* -IncSearch 'incsearch'のハイライト; ":s///c"で置換されたテキストにも使わ - れる。 - *hl-LineNr* -LineNr ":number" と ":#" コマンドの行番号。'number' オプションか - 'relativenumber' オプションが設定されているときにはその表示に - も使われる。 - *hl-MatchParen* -MatchParen カーソル下の文字、または直後の文字が括弧であるとき、その文字と - 対応する括弧に使われる。|pi_paren.txt| - - *hl-ModeMsg* -ModeMsg 'showmode'のメッセージ (例. "-- INSERT --") - *hl-MoreMsg* -MoreMsg |more-prompt| - *hl-NonText* -NonText ウィンドウの端の'~'と'@'、'showbreak'で設定された文字など、実 - 際のテキストには存在しない文字(例. 全角文字が行末に収まらない - とき">"が表示される)。 - *hl-Normal* -Normal 通常のテキスト - *hl-Pmenu* -Pmenu ポップアップメニュー: 通常の項目。 - *hl-PmenuSel* -PmenuSel ポップアップメニュー: 選択されている項目。 - *hl-PmenuSbar* -PmenuSbar ポップアップメニュー: スクロールバー。 - *hl-PmenuThumb* -PmenuThumb ポップアップメニュー: スクロールバーのつまみ部分。 - *hl-Question* -Question ヒットエンタープロンプト|hit-enter|とyes/noクエスチョン - *hl-Search* -Search 最後に検索した語のハイライト('hlsearch')を参照。 - quickfixウィンドウ内の現在行のハイライトや、それに類するものに - 使われる。 - *hl-SpecialKey* -SpecialKey ":map"でリストされるメタキーと特別なキー。テキスト中の - unprintableな文字を表示するのにも使われる。 - 一般に: 実際とは異なる文字で表示されるテキスト - *hl-SpellBad* -SpellBad スペルチェッカに認識されない単語。|spell| - これは他のハイライトと同時に組み合わせられる。 - *hl-SpellCap* -SpellCap 大文字で始まるべき単語。 |spell| - これは他のハイライトと同時に組み合わせられる。 - *hl-SpellLocal* -SpellLocal スペルチェッカによって他の地域で使われると判断される単語。 - |spell|これは他のハイライトと同時に組み合わせられる。 - *hl-SpellRare* -SpellRare スペルチェッカによってまず使わないと判断される単語。|spell| - これは他のハイライトと同時に組み合わせられる。 - *hl-StatusLine* -StatusLine カレントウィンドウのステータスライン - *hl-StatusLineNC* -StatusLineNC 非カレントウィンドウのステータスライン。 - Note: これが"StatusLine"に等しい場合、カレントウィンドウのステー - タスラインに"^^^"が使われる。 - *hl-TabLine* -TabLine タブページの行の、アクティブでないタブページのラベル - *hl-TabLineFill* -TabLineFill タブページの行の、ラベルがない部分 - *hl-TabLineSel* -TabLineSel タブページの行の、アクティブなタブページのラベル - *hl-Title* -Title ":set all"、":autocmd"などによる出力のタイトル。 - *hl-Visual* -Visual ビジュアルモード選択 - *hl-VisualNOS* -VisualNOS vimが"Not Owning the Selection"のときのビジュアルモード選択。 - これをサポートしているのはX11GUI|gui-x11|と|xterm-clipboard|の - み。 - *hl-WarningMsg* -WarningMsg 警告メッセージ - *hl-WildMenu* -WildMenu 'wildmenu'補完における現在の候補 - - *hl-User1* *hl-User1..9* *hl-User9* -'statusline'構文によってステータスラインとルーラー('rulerformat'によって)中で9 -個のハイライトが使えるようになっている。その名前はUser1からUser9である。 - -GUI使用時には、これらのグループを使ってメニューやスクロールバー、ツールチップ -の色を設定することができる。これらにデフォルト値はない。これはWin32では利用で -きない。ここではhighlightの引数のうちfont, guibg, guifgの3つだけが効果を持つ。 - - *hl-Menu* -Menu メニューのフォント、文字、背景。ツールバーにも使われる。 - 使用可能なhighlightの引数: font, guibg, guifg. - - NOTE: MotifとAthenaでは'guifontset'が空かどうかに関わらず、常 - に引数fontで実際のフォントセットを指定する。そしてそれが現在の - |:language|に結び付けられる。 - - *hl-Scrollbar* -Scrollbar メインウィンドウのスクロールバーの文字と背景。 - 使用可能なhighlightの引数: guibg, guifg. - - *hl-Tooltip* -Tooltip ツールチップのフォント、文字、背景。 - 使用可能なhighlightの引数: font, guibg, guifg. - - NOTE: MotifとAthenaでは'guifontset'が空かどうかに関わらず、常 - に引数fontで実際のフォントセットを指定する。そしてそれが現在の - |:language|に結び付けられる。 - -============================================================================== -13. グループのリンク *:hi-link* *:highlight-link* *E412* *E413* - -複数の構文グループに対して同じハイライトを適用させるには、両方のグループから一 -つの強調グループにリンクを作り、リンク先に対して色属性を与えると簡単である。 - -リンクを作るには: - - :hi[ghlight][!] [default] link {from-group} {to-group} - -リンクを削除するには: - - :hi[ghlight][!] [default] link {from-group} NONE - -Notes: *E414* -- {from-group}か{to-group}のどちらかが存在しない場合、リンクは作成されない。こ - の場合エラーメッセージは表示されない。 -- リンクされたグループに対して":highlight"を使うと、即座にリンクが削除される。 -- 既に{from-group}にハイライト設定がされている場合、'!'をつけないとリンクは作 - 成されない。sourceされたファイル中の":highlight link"コマンドに関して、エラー - メッセージは表示されない。そのため既に設定を持つグループに対するリンクがスキッ - プされる。 - - *:hi-default* *:highlight-default* -引数[default]によってグループに対するデフォルトのハイライトを設定することがで -きる。そのグループに対して既にハイライトが指定されている場合、このコマンドは無 -視される。既にリンクが存在する場合も同様。 - -[default] は、そのハイライト設定をあとから上書きさせるために使われる。例えば -C 構文ファイルは次の行を含んでいる: > - :highlight default link cComment Comment -この設定を変更し、C コメントに対して Question のハイライトをつけたい場合、次の -行を .vimrc に加える: > - :highlight link cComment Question -"default" をつけないと、.vimrc より C 構文ファイルの方があとに読み込まれるた -め、.vimrc の設定を上書きしてしまう。 - -============================================================================== -14. 構文の消去 *:syn-clear* *E391* - -カレントバッファに対する構文設定を消去したいときはこのコマンドを使う: > - :syntax clear - -このコマンドは、構文ハイライトをオフにしたいときや他の構文を適用したいときに使 -う。通常、これを構文ファイル内で行う必要はない。なぜなら、構文ファイルを読み込 -む自動コマンドによって構文がクリアされる。 -また、このコマンドは変数"b:current_syntax"を削除する。このコマンドの実行後には -すべての構文がなくなるからである。 - -全てのバッファに対して構文ハイライトを無効にしたいときは、構文ファイルを読み込 -む自動コマンドを削除する必要がある: > - :syntax off - -このコマンドが実際に行うことは次のコマンドを実行するのと同じである: > - :source $VIMRUNTIME/syntax/nosyntax.vim -詳細は"nosyntax.vim"を参照。これが正常に機能するためには$VIMRUNTIMEが正しく設 -定されている必要がある。|$VIMRUNTIME|を参照。 - -カレントバッファに対する特定の構文グループを消去するには: > - :syntax clear {group-name} .. -これは{group-name}に対する全てのパターンとキーワードを消去する。 - -カレントバッファに対する特定の構文グループリストを消去するには: > - :syntax clear @{grouplist-name} .. -これは{grouplist-name}の中身を空リストにセットする。 - - *:syntax-reset* *:syn-reset* -色を変えたため、色がごちゃごちゃになってしまったときは、次のコマンドを使うとデ -フォルトに戻る: > - - :syntax reset - -これはオプション'highlight'に対する色は変更しない。 - -ユーザのvimrcファイル中で設定した構文色もVimのデフォルト値に戻ることに注意。 -カラースキームを使っている場合、カラースキームによって定義された色は失われるこ -とに注意。 - -このコマンドが実際に行うことは次と同じ: > - - let g:syntax_cmd = "reset" - runtime! syntax/syncolor.vim - -ここでオプション'runtimepath'が使われていることに注意。 - - *syncolor* -構文ハイライトに別の色を使うには、色を設定するVimスクリプトを作ればよい。その -ファイルを'runtimepath'中('runtimepath'は$VIMRUNTIMEを含む)のディレクトリに置 -くと、その設定がデフォルトの色設定を上書きする。こうして":syntax reset"コマン -ドを実行すると、それらの色が有効になる。 - -Unixでは~/.vim/after/syntax/syncolor.vimファイルを使うとよい。例: > - - if &background == "light" - highlight comment ctermfg=darkgreen guifg=darkgreen - else - highlight comment ctermfg=green guifg=green - endif - -カラースキームを使用すると、ユーザ定義の色が使われるのか、それともカラースキー -ムで定義された色が使われるのかわからなくなる場合がある。これはカラースキーム -ファイルに依存する。|:colorscheme|を参照。 - - *E679* -このsyncolor.vimが"syntax on"を実行しないこと、また、オプション'background'を -設定したりコマンド"colorscheme"を実行しないように注意すること。もしこれらを実 -行すると無限ループに陥ってしまう。 - - *syntax_cmd* -syntax/syncolor.vimファイルが読み込まれると、変数"syntax_cmd"に次の3つの値のど -れかがセットされる: - "on" ":syntax on" コマンド。ハイライト色が上書きされるがリンクはそ - のまま。 - "enable" ":syntax enable" コマンド。まだハイライトが定義されていないグ - ループに対して色を定義するだけ。":syntax default"を使うこと。 - "reset" ":syntax reset" コマンドまたはカラースキームを読み込む。全ての - 色を定義する。 - "skip" 色を定義しない。'runtimepath'で前にあるsyncolor.vimファイルが - 既にデフォルト設定をセットしているとき、そのデフォルト設定をス - キップするために使われる。 - -============================================================================== -15. 関数名などのハイライト *tag-highlight* - -ファイル中の全てのタグ(関数名など)をハイライトするには、次のマッピングを使うと -よい。 - - <F11> -- tags.vimファイルを生成し、タグをハイライトする。 - <F12> -- 既存のtags.vimファイルをもとにハイライトする。 -> - :map <F11> :sp tags<CR>:%s/^\([^ :]*:\)\=\([^ ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12> - :map <F12> :so tags.vim<CR> - -WARNING: tagsファイルが大きくなるほどこの操作は遅くなり、消費するメモリ量も多 -くなる。 - -typedef、union、structだけをハイライトすることもできる。そのためにはExuberant ctags -(http://ctags.sf.netで入手可能)が必要である。 - -以下をあなたのMakefileに加える: - -# 型用のハイライトファイルを作成する。Exuberant ctagsとawkが必要 -types: types.vim -types.vim: *.[ch] - ctags --c-kinds=gstu -o- *.[ch] |\ - awk 'BEGIN{printf("syntax keyword Type\t")}\ - {printf("%s ", $$1)}END{print ""}' > $@ - -そして以下を.vimrcに加える: > - - " load the types.vim highlighting file, if it exists - autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim' - autocmd BufRead,BufNewFile *.[ch] if filereadable(fname) - autocmd BufRead,BufNewFile *.[ch] exe 'so ' . fname - autocmd BufRead,BufNewFile *.[ch] endif - -============================================================================== -16. ウィンドウローカル構文 *:ownsyntax* - -通常は同じバッファを表示するすべてのウィンドウは同じ構文設定を共有します。しか -しながら、特定のウィンドウだけ別の構文設定を使用することも可能です。例えば -一つのウィンドウで LaTeX のソースを普通に表示して、別のウィンドウで異なる表示 -をする (文字を隠したり太字や斜字体で表示したりする) ことが可能です。その場合は -'scrollbind' オプションを使うと便利です。 - -同じバッファを表示しているウィンドウが複数あって、現在のウィンドウの構文だけを -"foo" に設定するには次のようにします: > - :ownsyntax foo -< *w:current_syntax* -"w:current_syntax" 変数が "foo" に設定されます。"b:current_syntax" 変数の値は -変更されません。"b:current_syntax" は構文ファイルによって変更されますが、 -"b:current_syntax" を一時的に保存・復元することで値が変わらないようになってい -ます。構文ファイルによって設定された値が "w:current_syntax" に代入されます。 - -ウィンドウの独自構文が定義されると、同じバッファの他のウィンドウで実行された構 -文コマンドが影響しなくなります。逆に、そのウィンドウで実行された構文コマンドも -他のウィンドウには影響しなくなります。 - -独自構文を持ったウィンドウは他のバッファを読み込むかファイルを再読み込みするこ -とで通常の動作に戻ります。 -ウィンドウを分割したときは、新しいウィンドウは元々の構文を使います。 - -============================================================================== -17. カラー対応xterm *xterm-color* *color-xterm* - -ほとんどのカラー対応xtermは8色しか持たない。デフォルト設定で色がつかない場合は -以下を.vimrcに加えれば正常に色がつくはずである: > - :if &term =~ "xterm" - : if has("terminfo") - : set t_Co=8 - : set t_Sf=<Esc>[3%p1%dm - : set t_Sb=<Esc>[4%p1%dm - : else - : set t_Co=8 - : set t_Sf=<Esc>[3%dm - : set t_Sb=<Esc>[4%dm - : endif - :endif -< [<Esc>はエスケープ文字そのもの。CTRL-V <Esc>とタイプして入力する] - -最初の"if"を自分のターミナル名にマッチするように変更する必要があるかもしれない -例: "xterm"でなく"dtterm"。 - -Note: これらの設定は":syntax on"の前に行うこと。そうでないと色がおかしくなって -しまう。 - *xiterm* *rxvt* -上の設定はxitermとrxvtでも動作するように注意されている。しかしrxvtで16色を使う -場合にはterminfoを設定しなければならない: > - :set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm - :set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm - - *colortest.vim* -色設定をテストするためのファイルがVimディストリビューションに入っている。これ -を使うには次のコマンドを実行する: > - :runtime syntax/colortest.vim - -xtermのあるバージョン(とlinuxコンソールのようなターミナル)は、たとえ色数が8に -定義されていても、より明るい文字色を出力することができる。そのため't_Co'が8の -とき、Vimは明るい文字色に対して"cterm=bold"属性をセットする。 - - *xfree-xterm* -16色以上を使うにはxtermの最新バージョンを入手すること(XFree86 3.3以降に含まれ -ているはずである)。また、以下の場所でも最新バージョンを入手できる: > - http://invisible-island.net/xterm/xterm.html -次にそれをconfigureするよい方法を示す。これは88色を使い、termcap-query機能を有 -効化する。これによってVimがxtermに何色をサポートしているか問い合わせることがで -きるようになる > - ./configure --disable-bold-color --enable-88-color --enable-tcap-query -もし8色しか使えなかったらxtermのコンパイル設定を確認すること。 -(このxtermをUTF-8エンコーディングで使う場合には|UTF8-xterm|も参照)。 - -以下を.vimrcに加えるとこのxtermで動くはずである(16色用): > - :if has("terminfo") - : set t_Co=16 - : set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm - : set t_AF=<Esc>[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm - :else - : set t_Co=16 - : set t_Sf=<Esc>[3%dm - : set t_Sb=<Esc>[4%dm - :endif -< [<Esc>はエスケープ文字そのもの。CTRL-V <Esc>とタイプして入力する] - -|+terminfo|なしではVimはこれらの設定を認識し、自動的にctermの8色と上の設定を -"<Esc>[9%dm" と "<Esc>[10%dm"に変換する。16色以上も自動的に変換される。 - -以下の設定が256色用にうまくいくと報告されている: > - - :set t_AB=<Esc>[48;5;%dm - :set t_AF=<Esc>[38;5;%dm - -または単にTERM環境変数を"xterm-color"または"xterm-16color"にセットし、うまくい -くか試してみるとよい。 - -以下のX resourcesを(~/.Xdefaultsファイルで)使いたいかもしれない: - XTerm*color0: #000000 - XTerm*color1: #c00000 - XTerm*color2: #008000 - XTerm*color3: #808000 - XTerm*color4: #0000c0 - XTerm*color5: #c000c0 - XTerm*color6: #008080 - XTerm*color7: #c0c0c0 - XTerm*color8: #808080 - XTerm*color9: #ff6060 - XTerm*color10: #00ff00 - XTerm*color11: #ffff00 - XTerm*color12: #8080ff - XTerm*color13: #ff40ff - XTerm*color14: #00ffff - XTerm*color15: #ffffff - Xterm*cursorColor: Black - -[Note: cursorColorにはバグがある。カーソルの色が最後に描画されたテキストの色に -なってしまうというものである。これはxtermの新しいバージョンを使うと解決する -が、まだ全ての人がそれを使っているわけではない。] - -これらを即座に更新するには.XdefaultsファイルをXオプションデータベースマネー -ジャに再読み込みさせる(.Xdefaultsを変更したときはこれを行う必要がある): > - xrdb -merge ~/.Xdefaults - *xterm-blink* *xterm-blinking-cursor* -xtermでカーソルを点滅させるにはtools/blink.cを見ること。またはThomas Dickeyの -xtermのパッチレベル107以上を使い(入手場所は上を参照)、以下のリソースを設定す -る。 - XTerm*cursorBlink: on - XTerm*cursorOnTime: 400 - XTerm*cursorOffTime: 250 - XTerm*cursorColor: White - - *hpterm-color* -次の設定はhptermで(大体)うまく機能する。文字色は8色だけサポートしている: > - :if has("terminfo") - : set t_Co=8 - : set t_Sf=<Esc>[&v%p1%dS - : set t_Sb=<Esc>[&v7S - :else - : set t_Co=8 - : set t_Sf=<Esc>[&v%dS - : set t_Sb=<Esc>[&v7S - :endif -< [<Esc>はエスケープ文字そのもの。CTRL-V <Esc>とタイプして入力する] - - *Eterm* *enlightened-terminal* -次の設定がEnlightenedターミナルエミュレータまたはEtermで機能すると報告されてい -る。また、明るい色を表示するのにbold属性を使うxtermライクターミナル全てで機能 -すると思われる。必要なら前述のように":if"をつけること。 > - :set t_Co=16 - :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m - :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m -< - *TTpro-telnet* -次の設定がTTpro telnet用にうまくいく。Tera Term ProはMS-Windows用のフリーウェ -ア/オープンソースプログラムである。 > - set t_Co=16 - set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm - set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm -また、TTproのSetup→Window→Full Colorが有効になっていることと、 -Setup→Font→Enable Boldが無効になっていることを確認すること。 -(この情報はJohn Love-Jensen <eljay@Adobe.COM>によって提供された) - - vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/runtime.old/doc/tabpage.jax b/runtime.old/doc/tabpage.jax deleted file mode 100644 index 17165d3f2..000000000 --- a/runtime.old/doc/tabpage.jax +++ /dev/null @@ -1,373 +0,0 @@ -*tabpage.txt* For Vim バージョン 7.3. Last change: 2010 Jul 31 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -タブページの使い方 *tab-page* *tabpage* - -タブページを使うために追加されたコマンドについて説明します。複数のタブページを -開いていると違う働きをするコマンドについても説明します。 - -1. はじめに |tab-page-intro| -2. コマンド |tab-page-commands| -3. その他 |tab-page-other| -4. 'tabline' の設定 |setting-tabline| -5. 'guitablabel' の設定 |setting-guitablabel| - -{Vi にはこれらのコマンドはありません} -{|+windows| が有効な場合のみ利用できます} - -============================================================================== -1. はじめに *tab-page-intro* - -タブページは複数のウィンドウを持てます。タブページを使うと、作業別のウィンドウ -の集合を簡単に切り替えることができます。 - -通常、Vim ウィンドウの最上部にタブページを表すラベルの一覧が表示されます。その -ラベルをマウスでクリックすると、そのタブページにジャンプできます。他の方法でも -タブページを移動できます。 - -ほとんどのコマンドは作業中のタブページ内だけで動作します。|CTRL-W| コマンド -や、|:tab| を前置しない |:windo|、|:all|、|:ball| なども同様です。カレントタブ -ページ以外にも作用するコマンドについては以下で説明しています。 - -タブページを使うと、一時的なバッファを使用するときに、作業中のウィンドウレイア -ウトを変更しなくてすみます。新しいタブページを開いて、何か作業をし、そのタブ -ページを閉じる、という具合です。 - -============================================================================== -2. コマンド *tab-page-commands* - -タブページを開くには: - -Vim を "vim -p filename ..." と起動すると、それぞれのファイルごとに (最大 -'tabpagemax' までの) タブページを開けます。|-p| 参照。 - -CUI の Vim でタブページラインをダブルクリックすると新しいタブページが作成され -ます。新しいタブページはクリックした場所の左に作成されます。最初のクリックが他 -のタブページの選択になってしまうときは、スクリーンが余計に更新されます。 - -この機能は Win32 と Motif の GUI でも使えます。ただし、ラベルの右をクリックし -た場合のみです。 - -GUI でタブページラインを右クリックするとメニューが表示されます。|tabline-menu| - -:[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* -:[count]tabnew - カレントタブページの後ろに空のウィンドウを持った新しいタブペー - ジを作成します。[count] については下記 |:tab| 参照。 - -:[count]tabe[dit] [++opt] [+cmd] {file} -:[count]tabnew [++opt] [+cmd] {file} - {file} を新しいタブページで開きます。|:edit| と同じです。 - [count] については下記 |:tab| 参照。 - -:[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* - 'path' 内の {file} を新しいタブページで開きます。|:find| と同 - じです。[count] については下記 |:tab| 参照。 - {|+file_in_path| が有効な場合のみ利用できます} - -:[count]tab {cmd} *:tab* - {cmd} を実行します。そのコマンドが新しいウィンドウを作成すると - きは、その代わりに新しいタブページを作成します。|:diffsplit|と - |:diffpatch|, |:execute|, |:normal| に対しては機能しません。 - [count] を省略すると、新しいタブページはカレントタブページの後 - ろに作成されます。 - [count] を指定すると、[count] 番目のタブページの後ろに作成され - ます。タブページを一番左に作成するには ":0tab cmd" とします。 - 例: > - :tab split " opens current buffer in new tab page - :tab help gt " opens tab page with help for "gt" - -CTRL-W gf カーソル下のファイル名のファイルを新しいタブページで開きます。 - |CTRL-W_gf| を参照してください。 - -CTRL-W gF カーソル下のファイル名のファイルを新しいタブページで開きます。 - そして、ファイル名の後ろに指定された行番号にジャンプします。 - |CTRL-W_gF| を参照してください。 - -タブページを閉じるには: - -複数のタブページを開いているときは、タブページ内の最後のウィンドウを閉じると、 -そのタブページが閉じられます。 - -タブページラインが表示されているときは、右上に表示されている "X" をマウスでク -リックすると、カレントタブページが閉じます。|'tabline'| を設定しているときは、 -他の何かが表示されているかもしれません。 - - *:tabc* *:tabclose* -:tabc[lose][!] カレントタブページを閉じます。 - このコマンドは次のときに失敗します: - - タブページが一つしかないとき。 *E784* - - 'hidden' がオフのときに [!] を使わず、バッファに変更があり、 - そのバッファを表示しているウィンドウが他にない場合。 - バッファの変更はファイルに保存されませんが、失われることもあり - ません。このコマンドは安全なコマンドです。 - -:tabc[lose][!] {count} - {count} 番目のタブページを閉じます。|:tabclose| と同じ理由で失 - 敗することがあります。 - - *:tabo* *:tabonly* -:tabo[nly][!] カレントタブページ以外のすべてのタブページを閉じます。 - オプション 'hidden' がオンのとき、閉じたウィンドウのバッファは - すべて隠しバッファになります。 - 'hidden' がオフ、'autowrite' がオンのときは、変更のあるバッ - ファはファイルに保存されます。そうでないときは、変更のあるバッ - ファを表示しているウィンドウは閉じません。[!] を指定した場合 - は、変更のあるバッファは隠しバッファになります。変更のあるバッ - ファは絶対に破棄されないので、変更を失うことはありません。 - - -タブページを切り替えるには: - -タブページラインが表示されているときは、タブページラベルをマウスでクリックする -と、そのタブページに移動できます。ラベルが表示されていない場所をクリックする -と、次のタブページに移動できます。 |'tabline'| - -:tabn[ext] *:tabn* *:tabnext* *gt* -<C-PageDown> *CTRL-<PageDown>* *<C-PageDown>* -gt *i_CTRL-<PageDown>* *i_<C-PageDown>* - 次のタブページに移動します。次のタブページがない場合は、最初の - タブページに移動します。 - -:tabn[ext] {count} -{count}<C-PageDown> -{count}gt {count} 番目のタブページに移動します。最初のタブページの番号は - 1 です。 - - -:tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN* -:tabN[ext] *:tabNext* *CTRL-<PageUp>* -<C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>* -gT 前のタブページに移動します。前のタブページがない場合は、最後の - タブページに移動します。 - -:tabp[revious] {count} -:tabN[ext] {count} -{count}<C-PageUp> -{count}gT {count} の数だけ前のタブページに移動します。前のタブページがな - い場合は最後のタブページに移動します。 - -:tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind* -:tabfir[st] 最初のタブページに移動します。 - - *:tabl* *:tablast* -:tabl[ast] 最後のタブページに移動します。 - - -その他のコマンド: - *:tabs* -:tabs タブページと、含まれているウィンドウの一覧を表示します。 - ">" と表示されるのはカレントウィンドウです。 - "+" と表示されるのは変更のあるバッファです。 - - -タブページを並べ替えるには: - -:tabm[ove] [N] *:tabm* *:tabmove* - カレントタブページを N 番目のタブページの後ろに移動します。カ - レントタブページを一番目のタブページにするにはゼロを指定します。 - N を省略すると最後に移動します。 - - -タブページごとにコマンドを実行するには: - - *:tabd* *:tabdo* -:tabd[o] {cmd} タブページごとにコマンドを実行します。 - これは次のような動作をします: > - :tabfirst - :{cmd} - :tabnext - :{cmd} - etc. -< このコマンドは各タブページのカレントウィンドウで実行されます。 - いずれかのタブページでエラーが起きたときは、その場で実行を中断 - します。 - 最後のタブページ (またはエラーが起きたタブページ) がカレントタ - ブページになります。 - {cmd} は '|' を使って複数のコマンドを繋げることができます。 - {cmd} はタブページを開いたり閉じたり並べ替えたりしてはいけませ - ん。 - {Vi にはない機能です} - {|+listcmds| が有効な場合のみ利用できます} - |:windo|、|:argdo|、|:bufdo| も参照してください。 - -============================================================================== -3. その他 *tab-page-other* - - *tabline-menu* -GUI のタブページラインにはポップアップメニューがあります。右クリックで次のメ -ニューが表示されます: - Close マウスポインタの下のタブページを閉じます。マウスがラベ - ルの上にないときは、カレントタブページを閉じます。 - New Tab タブページを新規バッファで開きます。マウスポインタの左 - 側に作成されます。 - Open Tab... "New Tab" と同じですが、ファイル選択ダイアログを使っ - て選択したファイルを新しいタブページで開きます。 - -Diff モードはタブページ単位で機能します。一つのタブページ内でファイル間の差分 -を表示できます。そして、他のタブページでは他のファイルとの差分を表示することが -できます。 - -タブページローカル変数は "t:" で始まります。|tabpage-variable| - -現在、タブページローカルなオプションは 'cmdheight' だけです。 - -オートコマンドイベントの TabLeave と TabEnter を使って、タブページを切り替える -ときにコマンドを実行できます。イベントが起きる正確な順番は何をしたかによって変 -わります。新しいタブページを作成したときは、例えば、編集中のバッファを新しい -ウィンドウで開き、それからそのウィンドウで別のバッファを開いたときと同じような -動きをします。つまり、":tabnew" では次の順番でイベントが実行されます: - WinLeave カレントウィンドウから離れる - TabLeave カレントタブページから離れる - TabEnter 新しいタブページに入る - WinEnter 新しいタブページのウィンドウに入る - BufLeave カレントバッファから離れる - BufEnter 新しい空のバッファに入る - -タブページを切り替えたときは次の順番です: - BufLeave - WinLeave - TabLeave - TabEnter - WinEnter - BufEnter - -============================================================================== -4. 'tabline' の設定 *setting-tabline* - -オプション 'tabline' を設定してタブページラベルの表示方法を指定できます。これ -は CUI の タブページラインで使います。 - -オプション 'showtabline' を設定してタブページラインを表示するかどうかを指定で -きます。表示しない、タブページが複数あるときだけ表示する、常に表示する、から選 -べます。 - -タブページラインの強調表示には TabLine、TabLineSel、TabLineFill が使われます。 -|hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| - -変更されているウィンドウを含むタブページには "+" が表示されます。タブページ内 -のウィンドウの個数も表示されます。よって "3+" という表示は3個のウィンドウを含 -む、そのうちの1つが変更されているバッファを含むということを意味します。 - -オプション 'tabline' を使って、タブページラベルを好みの表示に設定できます。こ -れはあまり簡単ではないので、サンプルを用意してあります。 - -基本的には 'statusline' を参照してください。同じアイテムが 'tabline' で使用で -きます。加えて、|tabpagebuflist()|、|tabpagenr()|、|tabpagewinnr()| という関数 -も使えます。 - -タブページラベルの数は変化するので、オプションには式を使う必要があります。次の -ように設定します: > - :set tabline=%!MyTabLine() - -では、関数 MyTabLine() を定義して、すべてのタブページラベルを表示するようにし -ます。タブページラベル全体の作成と、個々のタブページラベルの作成、という二つの -段階に分けると簡単です。 > - - function MyTabLine() - let s = '' - for i in range(tabpagenr('$')) - " 強調表示グループの選択 - if i + 1 == tabpagenr() - let s .= '%#TabLineSel#' - else - let s .= '%#TabLine#' - endif - - " タブページ番号の設定 (マウスクリック用) - let s .= '%' . (i + 1) . 'T' - - " ラベルは MyTabLabel() で作成する - let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' - endfor - - " 最後のタブページの後は TabLineFill で埋め、タブページ番号をリセッ - " トする - let s .= '%#TabLineFill#%T' - - " カレントタブページを閉じるボタンのラベルを右添えで作成 - if tabpagenr('$') > 1 - let s .= '%=%#TabLine#%999Xclose' - endif - - return s - endfunction - -関数 MyTabLabel() は個々のタブページラベルを得るために呼ばれます。 > - - function MyTabLabel(n) - let buflist = tabpagebuflist(a:n) - let winnr = tabpagewinnr(a:n) - return bufname(buflist[winnr - 1]) - endfunction - -このサンプルは単純なものです。生成されるのは未設定時のタブページラインとほぼ同 -じですが、変更のあるバッファに + が付けたり、名前を切り詰めたりはしません。十 -分な表示領域がない場合など、なんらかのうまい方法でラベルの幅を減らしたいでしょ -う。利用できる表示領域はオプション 'columns' を確認してください。 - -============================================================================== -5. 'guitablabel' の設定 *setting-guitablabel* - -GUI のタブページラインが表示されているとき、'guitablabel' を設定してタブページ -ラベルの表示方法を指定できます。'tabline' とは違い、一度にタブページライン全体 -を指定するのではなく、個々のラベルを得るために 'guitablabel' が使われます。 - -'guitabtooltip' という良く似たオプションがあります。これはラベルのツールチップ -を表示するために使われます。ツールチップはマウスポインタがラベルの上に乗ってい -るときだけ表示されるので、普通は、長い文字を表示します。いくつかのシステムだけ -サポートされています。 - -書式についてはオプション 'statusline' を参照してください。 - -"%N" はカレントタブページ番号になります。このオプションを評価するときに、 -|v:lnum| にも同じ番号が設定されます。ファイル名を参照するアイテムにはタブペー -ジのカレントウィンドウのものが使われます。 - -Note: このオプションでは強調表示は使えません。%T と %X は無視されます。 - -簡単な例として、次のものはタブページ番号とバッファ名をラベルに表示します: > - :set guitablabel=%N\ %f - -次の例は 'guitablabel' の標準設定の動作と似た動作をします。タブページのウィン -ドウ数と、変更のあるバッファがあるときには '+' を表示します: > - - function GuiTabLabel() - let label = '' - let bufnrlist = tabpagebuflist(v:lnum) - - " このタブページに変更のあるバッファがるときには '+' を追加する - for bufnr in bufnrlist - if getbufvar(bufnr, "&modified") - let label = '+' - break - endif - endfor - - " ウィンドウが複数あるときにはその数を追加する - let wincount = tabpagewinnr(v:lnum, '$') - if wincount > 1 - let label .= wincount - endif - if label != '' - let label .= ' ' - endif - - " バッファ名を追加する - return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) - endfunction - - set guitablabel=%{GuiTabLabel()} - -Note: この関数はオプションを設定する前に定義しておく必要があります。そうしない -と、関数未定義のエラーが表示されてしまいます。 - -標準のラベルを使いたい場合は、空文字列を返してください。 - -あるタブページに固有の何かを表示したいときは、タブページローカル変数 |t:var| -が便利です。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/tags-ja b/runtime.old/doc/tags-ja deleted file mode 100644 index d926c5ba4..000000000 --- a/runtime.old/doc/tags-ja +++ /dev/null @@ -1,8205 +0,0 @@ -!_TAG_FILE_ENCODING utf-8 // -! change.jax /*!* -!! change.jax /*!!* -# pattern.jax /*#* -$ motion.jax /*$* -$HOME options.jax /*$HOME* -$MYGVIMRC gui.jax /*$MYGVIMRC* -$MYVIMRC starting.jax /*$MYVIMRC* -$VIM starting.jax /*$VIM* -$VIMRUNTIME starting.jax /*$VIMRUNTIME* -% motion.jax /*%* -%:. cmdline.jax /*%:.* -%:8 cmdline.jax /*%:8* -%:e cmdline.jax /*%:e* -%:gs cmdline.jax /*%:gs* -%:h cmdline.jax /*%:h* -%:p cmdline.jax /*%:p* -%:r cmdline.jax /*%:r* -%:s cmdline.jax /*%:s* -%:t cmdline.jax /*%:t* -%:~ cmdline.jax /*%:~* -& change.jax /*&* -' motion.jax /*'* -'' motion.jax /*''* -'( motion.jax /*'(* -') motion.jax /*')* -'. motion.jax /*'.* -'0 motion.jax /*'0* -'< motion.jax /*'<* -'> motion.jax /*'>* -'A motion.jax /*'A* -'[ motion.jax /*'[* -'] motion.jax /*']* -'^ motion.jax /*'^* -'a motion.jax /*'a* -'acd' options.jax /*'acd'* -'ai' options.jax /*'ai'* -'akm' options.jax /*'akm'* -'al' options.jax /*'al'* -'aleph' options.jax /*'aleph'* -'allowrevins' options.jax /*'allowrevins'* -'altkeymap' options.jax /*'altkeymap'* -'ambiwidth' options.jax /*'ambiwidth'* -'ambw' options.jax /*'ambw'* -'anti' options.jax /*'anti'* -'antialias' options.jax /*'antialias'* -'ap' vi_diff.jax /*'ap'* -'ar' options.jax /*'ar'* -'arab' options.jax /*'arab'* -'arabic' options.jax /*'arabic'* -'arabicshape' options.jax /*'arabicshape'* -'ari' options.jax /*'ari'* -'arshape' options.jax /*'arshape'* -'autochdir' options.jax /*'autochdir'* -'autoindent' options.jax /*'autoindent'* -'autoprint' vi_diff.jax /*'autoprint'* -'autoread' options.jax /*'autoread'* -'autowrite' options.jax /*'autowrite'* -'autowriteall' options.jax /*'autowriteall'* -'aw' options.jax /*'aw'* -'awa' options.jax /*'awa'* -'background' options.jax /*'background'* -'backspace' options.jax /*'backspace'* -'backup' options.jax /*'backup'* -'backupcopy' options.jax /*'backupcopy'* -'backupdir' options.jax /*'backupdir'* -'backupext' options.jax /*'backupext'* -'backupskip' options.jax /*'backupskip'* -'balloondelay' options.jax /*'balloondelay'* -'ballooneval' options.jax /*'ballooneval'* -'balloonexpr' options.jax /*'balloonexpr'* -'bdir' options.jax /*'bdir'* -'bdlay' options.jax /*'bdlay'* -'beautify' vi_diff.jax /*'beautify'* -'beval' options.jax /*'beval'* -'bex' options.jax /*'bex'* -'bexpr' options.jax /*'bexpr'* -'bf' vi_diff.jax /*'bf'* -'bg' options.jax /*'bg'* -'bh' options.jax /*'bh'* -'bin' options.jax /*'bin'* -'binary' options.jax /*'binary'* -'biosk' options.jax /*'biosk'* -'bioskey' options.jax /*'bioskey'* -'bk' options.jax /*'bk'* -'bkc' options.jax /*'bkc'* -'bl' options.jax /*'bl'* -'bomb' options.jax /*'bomb'* -'breakat' options.jax /*'breakat'* -'brk' options.jax /*'brk'* -'browsedir' options.jax /*'browsedir'* -'bs' options.jax /*'bs'* -'bsdir' options.jax /*'bsdir'* -'bsk' options.jax /*'bsk'* -'bt' options.jax /*'bt'* -'bufhidden' options.jax /*'bufhidden'* -'buflisted' options.jax /*'buflisted'* -'buftype' options.jax /*'buftype'* -'casemap' options.jax /*'casemap'* -'cb' options.jax /*'cb'* -'cc' options.jax /*'cc'* -'ccv' options.jax /*'ccv'* -'cd' options.jax /*'cd'* -'cdpath' options.jax /*'cdpath'* -'cedit' options.jax /*'cedit'* -'cf' options.jax /*'cf'* -'cfu' options.jax /*'cfu'* -'ch' options.jax /*'ch'* -'character' intro.jax /*'character'* -'charconvert' options.jax /*'charconvert'* -'ci' options.jax /*'ci'* -'cin' options.jax /*'cin'* -'cindent' options.jax /*'cindent'* -'cink' options.jax /*'cink'* -'cinkeys' options.jax /*'cinkeys'* -'cino' options.jax /*'cino'* -'cinoptions' options.jax /*'cinoptions'* -'cinw' options.jax /*'cinw'* -'cinwords' options.jax /*'cinwords'* -'clipboard' options.jax /*'clipboard'* -'cm' options.jax /*'cm'* -'cmdheight' options.jax /*'cmdheight'* -'cmdwinheight' options.jax /*'cmdwinheight'* -'cmp' options.jax /*'cmp'* -'cms' options.jax /*'cms'* -'co' options.jax /*'co'* -'cocu' options.jax /*'cocu'* -'cole' options.jax /*'cole'* -'colorcolumn' options.jax /*'colorcolumn'* -'columns' options.jax /*'columns'* -'com' options.jax /*'com'* -'comments' options.jax /*'comments'* -'commentstring' options.jax /*'commentstring'* -'compatible' options.jax /*'compatible'* -'complete' options.jax /*'complete'* -'completefunc' options.jax /*'completefunc'* -'completeopt' options.jax /*'completeopt'* -'concealcursor' options.jax /*'concealcursor'* -'conceallevel' options.jax /*'conceallevel'* -'confirm' options.jax /*'confirm'* -'consk' options.jax /*'consk'* -'conskey' options.jax /*'conskey'* -'copyindent' options.jax /*'copyindent'* -'cot' options.jax /*'cot'* -'cp' options.jax /*'cp'* -'cpo' options.jax /*'cpo'* -'cpoptions' options.jax /*'cpoptions'* -'cpt' options.jax /*'cpt'* -'crb' options.jax /*'crb'* -'cryptmethod' options.jax /*'cryptmethod'* -'cscopepathcomp' options.jax /*'cscopepathcomp'* -'cscopeprg' options.jax /*'cscopeprg'* -'cscopequickfix' options.jax /*'cscopequickfix'* -'cscoperelative' options.jax /*'cscoperelative'* -'cscopetag' options.jax /*'cscopetag'* -'cscopetagorder' options.jax /*'cscopetagorder'* -'cscopeverbose' options.jax /*'cscopeverbose'* -'cspc' options.jax /*'cspc'* -'csprg' options.jax /*'csprg'* -'csqf' options.jax /*'csqf'* -'csre' options.jax /*'csre'* -'cst' options.jax /*'cst'* -'csto' options.jax /*'csto'* -'csverb' options.jax /*'csverb'* -'cuc' options.jax /*'cuc'* -'cul' options.jax /*'cul'* -'cursorbind' options.jax /*'cursorbind'* -'cursorcolumn' options.jax /*'cursorcolumn'* -'cursorline' options.jax /*'cursorline'* -'cwh' options.jax /*'cwh'* -'debug' options.jax /*'debug'* -'deco' options.jax /*'deco'* -'def' options.jax /*'def'* -'define' options.jax /*'define'* -'delcombine' options.jax /*'delcombine'* -'dex' options.jax /*'dex'* -'dg' options.jax /*'dg'* -'dict' options.jax /*'dict'* -'dictionary' options.jax /*'dictionary'* -'diff' options.jax /*'diff'* -'diffexpr' options.jax /*'diffexpr'* -'diffopt' options.jax /*'diffopt'* -'digraph' options.jax /*'digraph'* -'dip' options.jax /*'dip'* -'dir' options.jax /*'dir'* -'directory' options.jax /*'directory'* -'display' options.jax /*'display'* -'dy' options.jax /*'dy'* -'ea' options.jax /*'ea'* -'ead' options.jax /*'ead'* -'eadirection' options.jax /*'eadirection'* -'eb' options.jax /*'eb'* -'ed' options.jax /*'ed'* -'edcompatible' options.jax /*'edcompatible'* -'ef' options.jax /*'ef'* -'efm' options.jax /*'efm'* -'ei' options.jax /*'ei'* -'ek' options.jax /*'ek'* -'enc' options.jax /*'enc'* -'encoding' options.jax /*'encoding'* -'endofline' options.jax /*'endofline'* -'eol' options.jax /*'eol'* -'ep' options.jax /*'ep'* -'equalalways' options.jax /*'equalalways'* -'equalprg' options.jax /*'equalprg'* -'errorbells' options.jax /*'errorbells'* -'errorfile' options.jax /*'errorfile'* -'errorformat' options.jax /*'errorformat'* -'esckeys' options.jax /*'esckeys'* -'et' options.jax /*'et'* -'eventignore' options.jax /*'eventignore'* -'ex' options.jax /*'ex'* -'expandtab' options.jax /*'expandtab'* -'exrc' options.jax /*'exrc'* -'fcl' options.jax /*'fcl'* -'fcs' options.jax /*'fcs'* -'fdc' options.jax /*'fdc'* -'fde' options.jax /*'fde'* -'fdi' options.jax /*'fdi'* -'fdl' options.jax /*'fdl'* -'fdls' options.jax /*'fdls'* -'fdm' options.jax /*'fdm'* -'fdn' options.jax /*'fdn'* -'fdo' options.jax /*'fdo'* -'fdt' options.jax /*'fdt'* -'fe' options.jax /*'fe'* -'fen' options.jax /*'fen'* -'fenc' options.jax /*'fenc'* -'fencs' options.jax /*'fencs'* -'fex' options.jax /*'fex'* -'ff' options.jax /*'ff'* -'ffs' options.jax /*'ffs'* -'fileencoding' options.jax /*'fileencoding'* -'fileencodings' options.jax /*'fileencodings'* -'fileformat' options.jax /*'fileformat'* -'fileformats' options.jax /*'fileformats'* -'filetype' options.jax /*'filetype'* -'fillchars' options.jax /*'fillchars'* -'fk' options.jax /*'fk'* -'fkmap' options.jax /*'fkmap'* -'fl' vi_diff.jax /*'fl'* -'flash' vi_diff.jax /*'flash'* -'flp' options.jax /*'flp'* -'fml' options.jax /*'fml'* -'fmr' options.jax /*'fmr'* -'fo' options.jax /*'fo'* -'foldclose' options.jax /*'foldclose'* -'foldcolumn' options.jax /*'foldcolumn'* -'foldenable' options.jax /*'foldenable'* -'foldexpr' options.jax /*'foldexpr'* -'foldignore' options.jax /*'foldignore'* -'foldlevel' options.jax /*'foldlevel'* -'foldlevelstart' options.jax /*'foldlevelstart'* -'foldmarker' options.jax /*'foldmarker'* -'foldmethod' options.jax /*'foldmethod'* -'foldminlines' options.jax /*'foldminlines'* -'foldnestmax' options.jax /*'foldnestmax'* -'foldopen' options.jax /*'foldopen'* -'foldtext' options.jax /*'foldtext'* -'formatexpr' options.jax /*'formatexpr'* -'formatlistpat' options.jax /*'formatlistpat'* -'formatoptions' options.jax /*'formatoptions'* -'formatprg' options.jax /*'formatprg'* -'fp' options.jax /*'fp'* -'fs' options.jax /*'fs'* -'fsync' options.jax /*'fsync'* -'ft' options.jax /*'ft'* -'gcr' options.jax /*'gcr'* -'gd' options.jax /*'gd'* -'gdefault' options.jax /*'gdefault'* -'gfm' options.jax /*'gfm'* -'gfn' options.jax /*'gfn'* -'gfs' options.jax /*'gfs'* -'gfw' options.jax /*'gfw'* -'ghr' options.jax /*'ghr'* -'go' options.jax /*'go'* -'go-A' options.jax /*'go-A'* -'go-F' options.jax /*'go-F'* -'go-L' options.jax /*'go-L'* -'go-M' options.jax /*'go-M'* -'go-R' options.jax /*'go-R'* -'go-T' options.jax /*'go-T'* -'go-a' options.jax /*'go-a'* -'go-b' options.jax /*'go-b'* -'go-c' options.jax /*'go-c'* -'go-e' options.jax /*'go-e'* -'go-f' options.jax /*'go-f'* -'go-g' options.jax /*'go-g'* -'go-h' options.jax /*'go-h'* -'go-i' options.jax /*'go-i'* -'go-l' options.jax /*'go-l'* -'go-m' options.jax /*'go-m'* -'go-p' options.jax /*'go-p'* -'go-r' options.jax /*'go-r'* -'go-t' options.jax /*'go-t'* -'go-v' options.jax /*'go-v'* -'gp' options.jax /*'gp'* -'gr' vi_diff.jax /*'gr'* -'graphic' vi_diff.jax /*'graphic'* -'grepformat' options.jax /*'grepformat'* -'grepprg' options.jax /*'grepprg'* -'gtl' options.jax /*'gtl'* -'gtt' options.jax /*'gtt'* -'guicursor' options.jax /*'guicursor'* -'guifont' options.jax /*'guifont'* -'guifontset' options.jax /*'guifontset'* -'guifontwide' options.jax /*'guifontwide'* -'guiheadroom' options.jax /*'guiheadroom'* -'guioptions' options.jax /*'guioptions'* -'guipty' options.jax /*'guipty'* -'guitablabel' options.jax /*'guitablabel'* -'guitabtooltip' options.jax /*'guitabtooltip'* -'hardtabs' vi_diff.jax /*'hardtabs'* -'helpfile' options.jax /*'helpfile'* -'helpheight' options.jax /*'helpheight'* -'helplang' options.jax /*'helplang'* -'hf' options.jax /*'hf'* -'hh' options.jax /*'hh'* -'hi' options.jax /*'hi'* -'hid' options.jax /*'hid'* -'hidden' options.jax /*'hidden'* -'highlight' options.jax /*'highlight'* -'history' options.jax /*'history'* -'hk' options.jax /*'hk'* -'hkmap' options.jax /*'hkmap'* -'hkmapp' options.jax /*'hkmapp'* -'hkp' options.jax /*'hkp'* -'hl' options.jax /*'hl'* -'hlg' options.jax /*'hlg'* -'hls' options.jax /*'hls'* -'hlsearch' options.jax /*'hlsearch'* -'ht' vi_diff.jax /*'ht'* -'ic' options.jax /*'ic'* -'icon' options.jax /*'icon'* -'iconstring' options.jax /*'iconstring'* -'ignorecase' options.jax /*'ignorecase'* -'im' options.jax /*'im'* -'imactivatekey' options.jax /*'imactivatekey'* -'imak' options.jax /*'imak'* -'imc' options.jax /*'imc'* -'imcmdline' options.jax /*'imcmdline'* -'imd' options.jax /*'imd'* -'imdisable' options.jax /*'imdisable'* -'imi' options.jax /*'imi'* -'iminsert' options.jax /*'iminsert'* -'ims' options.jax /*'ims'* -'imsearch' options.jax /*'imsearch'* -'inc' options.jax /*'inc'* -'include' options.jax /*'include'* -'includeexpr' options.jax /*'includeexpr'* -'incsearch' options.jax /*'incsearch'* -'inde' options.jax /*'inde'* -'indentexpr' options.jax /*'indentexpr'* -'indentkeys' options.jax /*'indentkeys'* -'indk' options.jax /*'indk'* -'inex' options.jax /*'inex'* -'inf' options.jax /*'inf'* -'infercase' options.jax /*'infercase'* -'insertmode' options.jax /*'insertmode'* -'is' options.jax /*'is'* -'isf' options.jax /*'isf'* -'isfname' options.jax /*'isfname'* -'isi' options.jax /*'isi'* -'isident' options.jax /*'isident'* -'isk' options.jax /*'isk'* -'iskeyword' options.jax /*'iskeyword'* -'isp' options.jax /*'isp'* -'isprint' options.jax /*'isprint'* -'joinspaces' options.jax /*'joinspaces'* -'js' options.jax /*'js'* -'key' options.jax /*'key'* -'keymap' options.jax /*'keymap'* -'keymodel' options.jax /*'keymodel'* -'keywordprg' options.jax /*'keywordprg'* -'km' options.jax /*'km'* -'kmp' options.jax /*'kmp'* -'kp' options.jax /*'kp'* -'langmap' options.jax /*'langmap'* -'langmenu' options.jax /*'langmenu'* -'laststatus' options.jax /*'laststatus'* -'lazyredraw' options.jax /*'lazyredraw'* -'lbr' options.jax /*'lbr'* -'lcs' options.jax /*'lcs'* -'linebreak' options.jax /*'linebreak'* -'lines' options.jax /*'lines'* -'linespace' options.jax /*'linespace'* -'lisp' options.jax /*'lisp'* -'lispwords' options.jax /*'lispwords'* -'list' options.jax /*'list'* -'listchars' options.jax /*'listchars'* -'lm' options.jax /*'lm'* -'lmap' options.jax /*'lmap'* -'loadplugins' options.jax /*'loadplugins'* -'lpl' options.jax /*'lpl'* -'ls' options.jax /*'ls'* -'lsp' options.jax /*'lsp'* -'lw' options.jax /*'lw'* -'lz' options.jax /*'lz'* -'ma' options.jax /*'ma'* -'macatsui' options.jax /*'macatsui'* -'magic' options.jax /*'magic'* -'makeef' options.jax /*'makeef'* -'makeprg' options.jax /*'makeprg'* -'mat' options.jax /*'mat'* -'matchpairs' options.jax /*'matchpairs'* -'matchtime' options.jax /*'matchtime'* -'maxcombine' options.jax /*'maxcombine'* -'maxfuncdepth' options.jax /*'maxfuncdepth'* -'maxmapdepth' options.jax /*'maxmapdepth'* -'maxmem' options.jax /*'maxmem'* -'maxmempattern' options.jax /*'maxmempattern'* -'maxmemtot' options.jax /*'maxmemtot'* -'mco' options.jax /*'mco'* -'mef' options.jax /*'mef'* -'menuitems' options.jax /*'menuitems'* -'mesg' vi_diff.jax /*'mesg'* -'mfd' options.jax /*'mfd'* -'mh' options.jax /*'mh'* -'mis' options.jax /*'mis'* -'mkspellmem' options.jax /*'mkspellmem'* -'ml' options.jax /*'ml'* -'mls' options.jax /*'mls'* -'mm' options.jax /*'mm'* -'mmd' options.jax /*'mmd'* -'mmp' options.jax /*'mmp'* -'mmt' options.jax /*'mmt'* -'mod' options.jax /*'mod'* -'modeline' options.jax /*'modeline'* -'modelines' options.jax /*'modelines'* -'modifiable' options.jax /*'modifiable'* -'modified' options.jax /*'modified'* -'more' options.jax /*'more'* -'mouse' options.jax /*'mouse'* -'mousef' options.jax /*'mousef'* -'mousefocus' options.jax /*'mousefocus'* -'mousehide' options.jax /*'mousehide'* -'mousem' options.jax /*'mousem'* -'mousemodel' options.jax /*'mousemodel'* -'mouses' options.jax /*'mouses'* -'mouseshape' options.jax /*'mouseshape'* -'mouset' options.jax /*'mouset'* -'mousetime' options.jax /*'mousetime'* -'mp' options.jax /*'mp'* -'mps' options.jax /*'mps'* -'msm' options.jax /*'msm'* -'mzq' options.jax /*'mzq'* -'mzquantum' options.jax /*'mzquantum'* -'nf' options.jax /*'nf'* -'noacd' options.jax /*'noacd'* -'noai' options.jax /*'noai'* -'noakm' options.jax /*'noakm'* -'noallowrevins' options.jax /*'noallowrevins'* -'noaltkeymap' options.jax /*'noaltkeymap'* -'noanti' options.jax /*'noanti'* -'noantialias' options.jax /*'noantialias'* -'noar' options.jax /*'noar'* -'noarab' options.jax /*'noarab'* -'noarabic' options.jax /*'noarabic'* -'noarabicshape' options.jax /*'noarabicshape'* -'noari' options.jax /*'noari'* -'noarshape' options.jax /*'noarshape'* -'noautochdir' options.jax /*'noautochdir'* -'noautoindent' options.jax /*'noautoindent'* -'noautoread' options.jax /*'noautoread'* -'noautowrite' options.jax /*'noautowrite'* -'noautowriteall' options.jax /*'noautowriteall'* -'noaw' options.jax /*'noaw'* -'noawa' options.jax /*'noawa'* -'nobackup' options.jax /*'nobackup'* -'noballooneval' options.jax /*'noballooneval'* -'nobeval' options.jax /*'nobeval'* -'nobin' options.jax /*'nobin'* -'nobinary' options.jax /*'nobinary'* -'nobiosk' options.jax /*'nobiosk'* -'nobioskey' options.jax /*'nobioskey'* -'nobk' options.jax /*'nobk'* -'nobl' options.jax /*'nobl'* -'nobomb' options.jax /*'nobomb'* -'nobuflisted' options.jax /*'nobuflisted'* -'nocf' options.jax /*'nocf'* -'noci' options.jax /*'noci'* -'nocin' options.jax /*'nocin'* -'nocindent' options.jax /*'nocindent'* -'nocompatible' options.jax /*'nocompatible'* -'noconfirm' options.jax /*'noconfirm'* -'noconsk' options.jax /*'noconsk'* -'noconskey' options.jax /*'noconskey'* -'nocopyindent' options.jax /*'nocopyindent'* -'nocp' options.jax /*'nocp'* -'nocrb' options.jax /*'nocrb'* -'nocscopetag' options.jax /*'nocscopetag'* -'nocscopeverbose' options.jax /*'nocscopeverbose'* -'nocst' options.jax /*'nocst'* -'nocsverb' options.jax /*'nocsverb'* -'nocuc' options.jax /*'nocuc'* -'nocul' options.jax /*'nocul'* -'nocursorbind' options.jax /*'nocursorbind'* -'nocursorcolumn' options.jax /*'nocursorcolumn'* -'nocursorline' options.jax /*'nocursorline'* -'nodeco' options.jax /*'nodeco'* -'nodelcombine' options.jax /*'nodelcombine'* -'nodg' options.jax /*'nodg'* -'nodiff' options.jax /*'nodiff'* -'nodigraph' options.jax /*'nodigraph'* -'noea' options.jax /*'noea'* -'noeb' options.jax /*'noeb'* -'noed' options.jax /*'noed'* -'noedcompatible' options.jax /*'noedcompatible'* -'noek' options.jax /*'noek'* -'noendofline' options.jax /*'noendofline'* -'noeol' options.jax /*'noeol'* -'noequalalways' options.jax /*'noequalalways'* -'noerrorbells' options.jax /*'noerrorbells'* -'noesckeys' options.jax /*'noesckeys'* -'noet' options.jax /*'noet'* -'noex' options.jax /*'noex'* -'noexpandtab' options.jax /*'noexpandtab'* -'noexrc' options.jax /*'noexrc'* -'nofen' options.jax /*'nofen'* -'nofk' options.jax /*'nofk'* -'nofkmap' options.jax /*'nofkmap'* -'nofoldenable' options.jax /*'nofoldenable'* -'nogd' options.jax /*'nogd'* -'nogdefault' options.jax /*'nogdefault'* -'noguipty' options.jax /*'noguipty'* -'nohid' options.jax /*'nohid'* -'nohidden' options.jax /*'nohidden'* -'nohk' options.jax /*'nohk'* -'nohkmap' options.jax /*'nohkmap'* -'nohkmapp' options.jax /*'nohkmapp'* -'nohkp' options.jax /*'nohkp'* -'nohls' options.jax /*'nohls'* -'nohlsearch' options.jax /*'nohlsearch'* -'noic' options.jax /*'noic'* -'noicon' options.jax /*'noicon'* -'noignorecase' options.jax /*'noignorecase'* -'noim' options.jax /*'noim'* -'noimc' options.jax /*'noimc'* -'noimcmdline' options.jax /*'noimcmdline'* -'noimd' options.jax /*'noimd'* -'noimdisable' options.jax /*'noimdisable'* -'noincsearch' options.jax /*'noincsearch'* -'noinf' options.jax /*'noinf'* -'noinfercase' options.jax /*'noinfercase'* -'noinsertmode' options.jax /*'noinsertmode'* -'nois' options.jax /*'nois'* -'nojoinspaces' options.jax /*'nojoinspaces'* -'nojs' options.jax /*'nojs'* -'nolazyredraw' options.jax /*'nolazyredraw'* -'nolbr' options.jax /*'nolbr'* -'nolinebreak' options.jax /*'nolinebreak'* -'nolisp' options.jax /*'nolisp'* -'nolist' options.jax /*'nolist'* -'noloadplugins' options.jax /*'noloadplugins'* -'nolpl' options.jax /*'nolpl'* -'nolz' options.jax /*'nolz'* -'noma' options.jax /*'noma'* -'nomacatsui' options.jax /*'nomacatsui'* -'nomagic' options.jax /*'nomagic'* -'nomh' options.jax /*'nomh'* -'noml' options.jax /*'noml'* -'nomod' options.jax /*'nomod'* -'nomodeline' options.jax /*'nomodeline'* -'nomodifiable' options.jax /*'nomodifiable'* -'nomodified' options.jax /*'nomodified'* -'nomore' options.jax /*'nomore'* -'nomousef' options.jax /*'nomousef'* -'nomousefocus' options.jax /*'nomousefocus'* -'nomousehide' options.jax /*'nomousehide'* -'nonu' options.jax /*'nonu'* -'nonumber' options.jax /*'nonumber'* -'noodev' options.jax /*'noodev'* -'noopendevice' options.jax /*'noopendevice'* -'nopaste' options.jax /*'nopaste'* -'nopi' options.jax /*'nopi'* -'nopreserveindent' options.jax /*'nopreserveindent'* -'nopreviewwindow' options.jax /*'nopreviewwindow'* -'noprompt' options.jax /*'noprompt'* -'nopvw' options.jax /*'nopvw'* -'noreadonly' options.jax /*'noreadonly'* -'norelativenumber' options.jax /*'norelativenumber'* -'noremap' options.jax /*'noremap'* -'norestorescreen' options.jax /*'norestorescreen'* -'norevins' options.jax /*'norevins'* -'nori' options.jax /*'nori'* -'norightleft' options.jax /*'norightleft'* -'norl' options.jax /*'norl'* -'nornu' options.jax /*'nornu'* -'noro' options.jax /*'noro'* -'nors' options.jax /*'nors'* -'noru' options.jax /*'noru'* -'noruler' options.jax /*'noruler'* -'nosb' options.jax /*'nosb'* -'nosc' options.jax /*'nosc'* -'noscb' options.jax /*'noscb'* -'noscrollbind' options.jax /*'noscrollbind'* -'noscs' options.jax /*'noscs'* -'nosecure' options.jax /*'nosecure'* -'nosft' options.jax /*'nosft'* -'noshellslash' options.jax /*'noshellslash'* -'noshelltemp' options.jax /*'noshelltemp'* -'noshiftround' options.jax /*'noshiftround'* -'noshortname' options.jax /*'noshortname'* -'noshowcmd' options.jax /*'noshowcmd'* -'noshowfulltag' options.jax /*'noshowfulltag'* -'noshowmatch' options.jax /*'noshowmatch'* -'noshowmode' options.jax /*'noshowmode'* -'nosi' options.jax /*'nosi'* -'nosm' options.jax /*'nosm'* -'nosmartcase' options.jax /*'nosmartcase'* -'nosmartindent' options.jax /*'nosmartindent'* -'nosmarttab' options.jax /*'nosmarttab'* -'nosmd' options.jax /*'nosmd'* -'nosn' options.jax /*'nosn'* -'nosol' options.jax /*'nosol'* -'nospell' options.jax /*'nospell'* -'nosplitbelow' options.jax /*'nosplitbelow'* -'nosplitright' options.jax /*'nosplitright'* -'nospr' options.jax /*'nospr'* -'nosr' options.jax /*'nosr'* -'nossl' options.jax /*'nossl'* -'nosta' options.jax /*'nosta'* -'nostartofline' options.jax /*'nostartofline'* -'nostmp' options.jax /*'nostmp'* -'noswapfile' options.jax /*'noswapfile'* -'noswf' options.jax /*'noswf'* -'nota' options.jax /*'nota'* -'notagbsearch' options.jax /*'notagbsearch'* -'notagrelative' options.jax /*'notagrelative'* -'notagstack' options.jax /*'notagstack'* -'notbi' options.jax /*'notbi'* -'notbidi' options.jax /*'notbidi'* -'notbs' options.jax /*'notbs'* -'notermbidi' options.jax /*'notermbidi'* -'noterse' options.jax /*'noterse'* -'notextauto' options.jax /*'notextauto'* -'notextmode' options.jax /*'notextmode'* -'notf' options.jax /*'notf'* -'notgst' options.jax /*'notgst'* -'notildeop' options.jax /*'notildeop'* -'notimeout' options.jax /*'notimeout'* -'notitle' options.jax /*'notitle'* -'noto' options.jax /*'noto'* -'notop' options.jax /*'notop'* -'notr' options.jax /*'notr'* -'nottimeout' options.jax /*'nottimeout'* -'nottybuiltin' options.jax /*'nottybuiltin'* -'nottyfast' options.jax /*'nottyfast'* -'notx' options.jax /*'notx'* -'novb' options.jax /*'novb'* -'novice' vi_diff.jax /*'novice'* -'novisualbell' options.jax /*'novisualbell'* -'nowa' options.jax /*'nowa'* -'nowarn' options.jax /*'nowarn'* -'nowb' options.jax /*'nowb'* -'noweirdinvert' options.jax /*'noweirdinvert'* -'nowfh' options.jax /*'nowfh'* -'nowfw' options.jax /*'nowfw'* -'nowic' options.jax /*'nowic'* -'nowildignorecase' options.jax /*'nowildignorecase'* -'nowildmenu' options.jax /*'nowildmenu'* -'nowinfixheight' options.jax /*'nowinfixheight'* -'nowinfixwidth' options.jax /*'nowinfixwidth'* -'nowiv' options.jax /*'nowiv'* -'nowmnu' options.jax /*'nowmnu'* -'nowrap' options.jax /*'nowrap'* -'nowrapscan' options.jax /*'nowrapscan'* -'nowrite' options.jax /*'nowrite'* -'nowriteany' options.jax /*'nowriteany'* -'nowritebackup' options.jax /*'nowritebackup'* -'nows' options.jax /*'nows'* -'nrformats' options.jax /*'nrformats'* -'nu' options.jax /*'nu'* -'number' options.jax /*'number'* -'numberwidth' options.jax /*'numberwidth'* -'nuw' options.jax /*'nuw'* -'odev' options.jax /*'odev'* -'oft' options.jax /*'oft'* -'ofu' options.jax /*'ofu'* -'omnifunc' options.jax /*'omnifunc'* -'op' vi_diff.jax /*'op'* -'open' vi_diff.jax /*'open'* -'opendevice' options.jax /*'opendevice'* -'operatorfunc' options.jax /*'operatorfunc'* -'opfunc' options.jax /*'opfunc'* -'optimize' vi_diff.jax /*'optimize'* -'option' intro.jax /*'option'* -'osfiletype' options.jax /*'osfiletype'* -'pa' options.jax /*'pa'* -'para' options.jax /*'para'* -'paragraphs' options.jax /*'paragraphs'* -'paste' options.jax /*'paste'* -'pastetoggle' options.jax /*'pastetoggle'* -'patchexpr' options.jax /*'patchexpr'* -'patchmode' options.jax /*'patchmode'* -'path' options.jax /*'path'* -'pdev' options.jax /*'pdev'* -'penc' options.jax /*'penc'* -'pex' options.jax /*'pex'* -'pexpr' options.jax /*'pexpr'* -'pfn' options.jax /*'pfn'* -'ph' options.jax /*'ph'* -'pheader' options.jax /*'pheader'* -'pi' options.jax /*'pi'* -'pm' options.jax /*'pm'* -'pmbcs' options.jax /*'pmbcs'* -'pmbfn' options.jax /*'pmbfn'* -'popt' options.jax /*'popt'* -'preserveindent' options.jax /*'preserveindent'* -'previewheight' options.jax /*'previewheight'* -'previewwindow' options.jax /*'previewwindow'* -'printdevice' options.jax /*'printdevice'* -'printencoding' options.jax /*'printencoding'* -'printexpr' options.jax /*'printexpr'* -'printfont' options.jax /*'printfont'* -'printheader' options.jax /*'printheader'* -'printmbcharset' options.jax /*'printmbcharset'* -'printmbfont' options.jax /*'printmbfont'* -'printoptions' options.jax /*'printoptions'* -'prompt' options.jax /*'prompt'* -'pt' options.jax /*'pt'* -'pumheight' options.jax /*'pumheight'* -'pvh' options.jax /*'pvh'* -'pvw' options.jax /*'pvw'* -'qe' options.jax /*'qe'* -'quote motion.jax /*'quote* -'quoteescape' options.jax /*'quoteescape'* -'rdt' options.jax /*'rdt'* -'readonly' options.jax /*'readonly'* -'redraw' vi_diff.jax /*'redraw'* -'redrawtime' options.jax /*'redrawtime'* -'relativenumber' options.jax /*'relativenumber'* -'remap' options.jax /*'remap'* -'report' options.jax /*'report'* -'restorescreen' options.jax /*'restorescreen'* -'revins' options.jax /*'revins'* -'ri' options.jax /*'ri'* -'rightleft' options.jax /*'rightleft'* -'rightleftcmd' options.jax /*'rightleftcmd'* -'rl' options.jax /*'rl'* -'rlc' options.jax /*'rlc'* -'rnu' options.jax /*'rnu'* -'ro' options.jax /*'ro'* -'rs' options.jax /*'rs'* -'rtp' options.jax /*'rtp'* -'ru' options.jax /*'ru'* -'ruf' options.jax /*'ruf'* -'ruler' options.jax /*'ruler'* -'rulerformat' options.jax /*'rulerformat'* -'runtimepath' options.jax /*'runtimepath'* -'sb' options.jax /*'sb'* -'sbo' options.jax /*'sbo'* -'sbr' options.jax /*'sbr'* -'sc' options.jax /*'sc'* -'scb' options.jax /*'scb'* -'scr' options.jax /*'scr'* -'scroll' options.jax /*'scroll'* -'scrollbind' options.jax /*'scrollbind'* -'scrolljump' options.jax /*'scrolljump'* -'scrolloff' options.jax /*'scrolloff'* -'scrollopt' options.jax /*'scrollopt'* -'scs' options.jax /*'scs'* -'sect' options.jax /*'sect'* -'sections' options.jax /*'sections'* -'secure' options.jax /*'secure'* -'sel' options.jax /*'sel'* -'selection' options.jax /*'selection'* -'selectmode' options.jax /*'selectmode'* -'sessionoptions' options.jax /*'sessionoptions'* -'sft' options.jax /*'sft'* -'sh' options.jax /*'sh'* -'shcf' options.jax /*'shcf'* -'shell' options.jax /*'shell'* -'shellcmdflag' options.jax /*'shellcmdflag'* -'shellpipe' options.jax /*'shellpipe'* -'shellquote' options.jax /*'shellquote'* -'shellredir' options.jax /*'shellredir'* -'shellslash' options.jax /*'shellslash'* -'shelltemp' options.jax /*'shelltemp'* -'shelltype' options.jax /*'shelltype'* -'shellxquote' options.jax /*'shellxquote'* -'shiftround' options.jax /*'shiftround'* -'shiftwidth' options.jax /*'shiftwidth'* -'shm' options.jax /*'shm'* -'shortmess' options.jax /*'shortmess'* -'shortname' options.jax /*'shortname'* -'showbreak' options.jax /*'showbreak'* -'showcmd' options.jax /*'showcmd'* -'showfulltag' options.jax /*'showfulltag'* -'showmatch' options.jax /*'showmatch'* -'showmode' options.jax /*'showmode'* -'showtabline' options.jax /*'showtabline'* -'shq' options.jax /*'shq'* -'si' options.jax /*'si'* -'sidescroll' options.jax /*'sidescroll'* -'sidescrolloff' options.jax /*'sidescrolloff'* -'siso' options.jax /*'siso'* -'sj' options.jax /*'sj'* -'slm' options.jax /*'slm'* -'slow' vi_diff.jax /*'slow'* -'slowopen' vi_diff.jax /*'slowopen'* -'sm' options.jax /*'sm'* -'smartcase' options.jax /*'smartcase'* -'smartindent' options.jax /*'smartindent'* -'smarttab' options.jax /*'smarttab'* -'smc' options.jax /*'smc'* -'smd' options.jax /*'smd'* -'sn' options.jax /*'sn'* -'so' options.jax /*'so'* -'softtabstop' options.jax /*'softtabstop'* -'sol' options.jax /*'sol'* -'sourceany' vi_diff.jax /*'sourceany'* -'sp' options.jax /*'sp'* -'spc' options.jax /*'spc'* -'spell' options.jax /*'spell'* -'spellcapcheck' options.jax /*'spellcapcheck'* -'spellfile' options.jax /*'spellfile'* -'spelllang' options.jax /*'spelllang'* -'spellsuggest' options.jax /*'spellsuggest'* -'spf' options.jax /*'spf'* -'spl' options.jax /*'spl'* -'splitbelow' options.jax /*'splitbelow'* -'splitright' options.jax /*'splitright'* -'spr' options.jax /*'spr'* -'sps' options.jax /*'sps'* -'sr' options.jax /*'sr'* -'srr' options.jax /*'srr'* -'ss' options.jax /*'ss'* -'ssl' options.jax /*'ssl'* -'ssop' options.jax /*'ssop'* -'st' options.jax /*'st'* -'sta' options.jax /*'sta'* -'stal' options.jax /*'stal'* -'startofline' options.jax /*'startofline'* -'statusline' options.jax /*'statusline'* -'stl' options.jax /*'stl'* -'stmp' options.jax /*'stmp'* -'sts' options.jax /*'sts'* -'su' options.jax /*'su'* -'sua' options.jax /*'sua'* -'suffixes' options.jax /*'suffixes'* -'suffixesadd' options.jax /*'suffixesadd'* -'sw' options.jax /*'sw'* -'swapfile' options.jax /*'swapfile'* -'swapsync' options.jax /*'swapsync'* -'swb' options.jax /*'swb'* -'swf' options.jax /*'swf'* -'switchbuf' options.jax /*'switchbuf'* -'sws' options.jax /*'sws'* -'sxq' options.jax /*'sxq'* -'syn' options.jax /*'syn'* -'synmaxcol' options.jax /*'synmaxcol'* -'syntax' options.jax /*'syntax'* -'t_#2' term.jax /*'t_#2'* -'t_#4' term.jax /*'t_#4'* -'t_%1' term.jax /*'t_%1'* -'t_%i' term.jax /*'t_%i'* -'t_&8' term.jax /*'t_&8'* -'t_@7' term.jax /*'t_@7'* -'t_AB' term.jax /*'t_AB'* -'t_AF' term.jax /*'t_AF'* -'t_AL' term.jax /*'t_AL'* -'t_CS' term.jax /*'t_CS'* -'t_CV' term.jax /*'t_CV'* -'t_Ce' term.jax /*'t_Ce'* -'t_Co' term.jax /*'t_Co'* -'t_Cs' term.jax /*'t_Cs'* -'t_DL' term.jax /*'t_DL'* -'t_EI' term.jax /*'t_EI'* -'t_F1' term.jax /*'t_F1'* -'t_F2' term.jax /*'t_F2'* -'t_F3' term.jax /*'t_F3'* -'t_F4' term.jax /*'t_F4'* -'t_F5' term.jax /*'t_F5'* -'t_F6' term.jax /*'t_F6'* -'t_F7' term.jax /*'t_F7'* -'t_F8' term.jax /*'t_F8'* -'t_F9' term.jax /*'t_F9'* -'t_IE' term.jax /*'t_IE'* -'t_IS' term.jax /*'t_IS'* -'t_K1' term.jax /*'t_K1'* -'t_K3' term.jax /*'t_K3'* -'t_K4' term.jax /*'t_K4'* -'t_K5' term.jax /*'t_K5'* -'t_K6' term.jax /*'t_K6'* -'t_K7' term.jax /*'t_K7'* -'t_K8' term.jax /*'t_K8'* -'t_K9' term.jax /*'t_K9'* -'t_KA' term.jax /*'t_KA'* -'t_KB' term.jax /*'t_KB'* -'t_KC' term.jax /*'t_KC'* -'t_KD' term.jax /*'t_KD'* -'t_KE' term.jax /*'t_KE'* -'t_KF' term.jax /*'t_KF'* -'t_KG' term.jax /*'t_KG'* -'t_KH' term.jax /*'t_KH'* -'t_KI' term.jax /*'t_KI'* -'t_KJ' term.jax /*'t_KJ'* -'t_KK' term.jax /*'t_KK'* -'t_KL' term.jax /*'t_KL'* -'t_RI' term.jax /*'t_RI'* -'t_RV' term.jax /*'t_RV'* -'t_SI' term.jax /*'t_SI'* -'t_Sb' term.jax /*'t_Sb'* -'t_Sf' term.jax /*'t_Sf'* -'t_WP' term.jax /*'t_WP'* -'t_WS' term.jax /*'t_WS'* -'t_ZH' term.jax /*'t_ZH'* -'t_ZR' term.jax /*'t_ZR'* -'t_al' term.jax /*'t_al'* -'t_bc' term.jax /*'t_bc'* -'t_cd' term.jax /*'t_cd'* -'t_ce' term.jax /*'t_ce'* -'t_cl' term.jax /*'t_cl'* -'t_cm' term.jax /*'t_cm'* -'t_cs' term.jax /*'t_cs'* -'t_da' term.jax /*'t_da'* -'t_db' term.jax /*'t_db'* -'t_dl' term.jax /*'t_dl'* -'t_fs' term.jax /*'t_fs'* -'t_k1' term.jax /*'t_k1'* -'t_k2' term.jax /*'t_k2'* -'t_k3' term.jax /*'t_k3'* -'t_k4' term.jax /*'t_k4'* -'t_k5' term.jax /*'t_k5'* -'t_k6' term.jax /*'t_k6'* -'t_k7' term.jax /*'t_k7'* -'t_k8' term.jax /*'t_k8'* -'t_k9' term.jax /*'t_k9'* -'t_k;' term.jax /*'t_k;'* -'t_kB' term.jax /*'t_kB'* -'t_kD' term.jax /*'t_kD'* -'t_kI' term.jax /*'t_kI'* -'t_kN' term.jax /*'t_kN'* -'t_kP' term.jax /*'t_kP'* -'t_kb' term.jax /*'t_kb'* -'t_kd' term.jax /*'t_kd'* -'t_ke' term.jax /*'t_ke'* -'t_kh' term.jax /*'t_kh'* -'t_kl' term.jax /*'t_kl'* -'t_kr' term.jax /*'t_kr'* -'t_ks' term.jax /*'t_ks'* -'t_ku' term.jax /*'t_ku'* -'t_le' term.jax /*'t_le'* -'t_mb' term.jax /*'t_mb'* -'t_md' term.jax /*'t_md'* -'t_me' term.jax /*'t_me'* -'t_mr' term.jax /*'t_mr'* -'t_ms' term.jax /*'t_ms'* -'t_nd' term.jax /*'t_nd'* -'t_op' term.jax /*'t_op'* -'t_se' term.jax /*'t_se'* -'t_so' term.jax /*'t_so'* -'t_sr' term.jax /*'t_sr'* -'t_star7' term.jax /*'t_star7'* -'t_te' term.jax /*'t_te'* -'t_ti' term.jax /*'t_ti'* -'t_ts' term.jax /*'t_ts'* -'t_ue' term.jax /*'t_ue'* -'t_us' term.jax /*'t_us'* -'t_ut' term.jax /*'t_ut'* -'t_vb' term.jax /*'t_vb'* -'t_ve' term.jax /*'t_ve'* -'t_vi' term.jax /*'t_vi'* -'t_vs' term.jax /*'t_vs'* -'t_xs' term.jax /*'t_xs'* -'ta' options.jax /*'ta'* -'tabline' options.jax /*'tabline'* -'tabpagemax' options.jax /*'tabpagemax'* -'tabstop' options.jax /*'tabstop'* -'tag' options.jax /*'tag'* -'tagbsearch' options.jax /*'tagbsearch'* -'taglength' options.jax /*'taglength'* -'tagrelative' options.jax /*'tagrelative'* -'tags' options.jax /*'tags'* -'tagstack' options.jax /*'tagstack'* -'tal' options.jax /*'tal'* -'tb' options.jax /*'tb'* -'tbi' options.jax /*'tbi'* -'tbidi' options.jax /*'tbidi'* -'tbis' options.jax /*'tbis'* -'tbs' options.jax /*'tbs'* -'tenc' options.jax /*'tenc'* -'term' options.jax /*'term'* -'termbidi' options.jax /*'termbidi'* -'termencoding' options.jax /*'termencoding'* -'terse' options.jax /*'terse'* -'textauto' options.jax /*'textauto'* -'textmode' options.jax /*'textmode'* -'textwidth' options.jax /*'textwidth'* -'tf' options.jax /*'tf'* -'tgst' options.jax /*'tgst'* -'thesaurus' options.jax /*'thesaurus'* -'tildeop' options.jax /*'tildeop'* -'timeout' options.jax /*'timeout'* -'timeoutlen' options.jax /*'timeoutlen'* -'title' options.jax /*'title'* -'titlelen' options.jax /*'titlelen'* -'titleold' options.jax /*'titleold'* -'titlestring' options.jax /*'titlestring'* -'tl' options.jax /*'tl'* -'tm' options.jax /*'tm'* -'to' options.jax /*'to'* -'toolbar' options.jax /*'toolbar'* -'toolbariconsize' options.jax /*'toolbariconsize'* -'top' options.jax /*'top'* -'tpm' options.jax /*'tpm'* -'tr' options.jax /*'tr'* -'ts' options.jax /*'ts'* -'tsl' options.jax /*'tsl'* -'tsr' options.jax /*'tsr'* -'ttimeout' options.jax /*'ttimeout'* -'ttimeoutlen' options.jax /*'ttimeoutlen'* -'ttm' options.jax /*'ttm'* -'tty' options.jax /*'tty'* -'ttybuiltin' options.jax /*'ttybuiltin'* -'ttyfast' options.jax /*'ttyfast'* -'ttym' options.jax /*'ttym'* -'ttymouse' options.jax /*'ttymouse'* -'ttyscroll' options.jax /*'ttyscroll'* -'ttytype' options.jax /*'ttytype'* -'tw' options.jax /*'tw'* -'tx' options.jax /*'tx'* -'uc' options.jax /*'uc'* -'udf' options.jax /*'udf'* -'udir' options.jax /*'udir'* -'ul' options.jax /*'ul'* -'undodir' options.jax /*'undodir'* -'undofile' options.jax /*'undofile'* -'undolevels' options.jax /*'undolevels'* -'undoreload' options.jax /*'undoreload'* -'updatecount' options.jax /*'updatecount'* -'updatetime' options.jax /*'updatetime'* -'ur' options.jax /*'ur'* -'ut' options.jax /*'ut'* -'vb' options.jax /*'vb'* -'vbs' options.jax /*'vbs'* -'vdir' options.jax /*'vdir'* -'ve' options.jax /*'ve'* -'verbose' options.jax /*'verbose'* -'verbosefile' options.jax /*'verbosefile'* -'vfile' options.jax /*'vfile'* -'vi' options.jax /*'vi'* -'viewdir' options.jax /*'viewdir'* -'viewoptions' options.jax /*'viewoptions'* -'viminfo' options.jax /*'viminfo'* -'virtualedit' options.jax /*'virtualedit'* -'visualbell' options.jax /*'visualbell'* -'vop' options.jax /*'vop'* -'w1200' vi_diff.jax /*'w1200'* -'w300' vi_diff.jax /*'w300'* -'w9600' vi_diff.jax /*'w9600'* -'wa' options.jax /*'wa'* -'wak' options.jax /*'wak'* -'warn' options.jax /*'warn'* -'wb' options.jax /*'wb'* -'wc' options.jax /*'wc'* -'wcm' options.jax /*'wcm'* -'wd' options.jax /*'wd'* -'weirdinvert' options.jax /*'weirdinvert'* -'wfh' options.jax /*'wfh'* -'wfw' options.jax /*'wfw'* -'wh' options.jax /*'wh'* -'whichwrap' options.jax /*'whichwrap'* -'wi' options.jax /*'wi'* -'wic' options.jax /*'wic'* -'wig' options.jax /*'wig'* -'wildchar' options.jax /*'wildchar'* -'wildcharm' options.jax /*'wildcharm'* -'wildignore' options.jax /*'wildignore'* -'wildignorecase' options.jax /*'wildignorecase'* -'wildmenu' options.jax /*'wildmenu'* -'wildmode' options.jax /*'wildmode'* -'wildoptions' options.jax /*'wildoptions'* -'wim' options.jax /*'wim'* -'winaltkeys' options.jax /*'winaltkeys'* -'window' options.jax /*'window'* -'winfixheight' options.jax /*'winfixheight'* -'winfixwidth' options.jax /*'winfixwidth'* -'winheight' options.jax /*'winheight'* -'winminheight' options.jax /*'winminheight'* -'winminwidth' options.jax /*'winminwidth'* -'winwidth' options.jax /*'winwidth'* -'wiv' options.jax /*'wiv'* -'wiw' options.jax /*'wiw'* -'wm' options.jax /*'wm'* -'wmh' options.jax /*'wmh'* -'wmnu' options.jax /*'wmnu'* -'wmw' options.jax /*'wmw'* -'wop' options.jax /*'wop'* -'wrap' options.jax /*'wrap'* -'wrapmargin' options.jax /*'wrapmargin'* -'wrapscan' options.jax /*'wrapscan'* -'write' options.jax /*'write'* -'writeany' options.jax /*'writeany'* -'writebackup' options.jax /*'writebackup'* -'writedelay' options.jax /*'writedelay'* -'ws' options.jax /*'ws'* -'ww' options.jax /*'ww'* -'{ motion.jax /*'{* -'} motion.jax /*'}* -( motion.jax /*(* -) motion.jax /*)* -+ motion.jax /*+* -++bad editing.jax /*++bad* -++bin editing.jax /*++bin* -++builtin_terms various.jax /*++builtin_terms* -++edit editing.jax /*++edit* -++enc editing.jax /*++enc* -++ff editing.jax /*++ff* -++nobin editing.jax /*++nobin* -++opt editing.jax /*++opt* -+ARP various.jax /*+ARP* -+GUI_Athena various.jax /*+GUI_Athena* -+GUI_GTK various.jax /*+GUI_GTK* -+GUI_Motif various.jax /*+GUI_Motif* -+GUI_Photon various.jax /*+GUI_Photon* -+GUI_neXtaw various.jax /*+GUI_neXtaw* -+X11 various.jax /*+X11* -+arabic various.jax /*+arabic* -+autocmd various.jax /*+autocmd* -+balloon_eval various.jax /*+balloon_eval* -+browse various.jax /*+browse* -+builtin_terms various.jax /*+builtin_terms* -+byte_offset various.jax /*+byte_offset* -+cindent various.jax /*+cindent* -+clientserver various.jax /*+clientserver* -+clipboard various.jax /*+clipboard* -+cmd editing.jax /*+cmd* -+cmdline_compl various.jax /*+cmdline_compl* -+cmdline_hist various.jax /*+cmdline_hist* -+cmdline_info various.jax /*+cmdline_info* -+comments various.jax /*+comments* -+conceal various.jax /*+conceal* -+cryptv various.jax /*+cryptv* -+cscope various.jax /*+cscope* -+cursorbind various.jax /*+cursorbind* -+cursorshape various.jax /*+cursorshape* -+debug various.jax /*+debug* -+dialog_con various.jax /*+dialog_con* -+dialog_con_gui various.jax /*+dialog_con_gui* -+dialog_gui various.jax /*+dialog_gui* -+diff various.jax /*+diff* -+digraphs various.jax /*+digraphs* -+dnd various.jax /*+dnd* -+emacs_tags various.jax /*+emacs_tags* -+eval various.jax /*+eval* -+ex_extra various.jax /*+ex_extra* -+extra_search various.jax /*+extra_search* -+farsi various.jax /*+farsi* -+feature-list various.jax /*+feature-list* -+file_in_path various.jax /*+file_in_path* -+find_in_path various.jax /*+find_in_path* -+float various.jax /*+float* -+folding various.jax /*+folding* -+footer various.jax /*+footer* -+fork various.jax /*+fork* -+gettext various.jax /*+gettext* -+hangul_input various.jax /*+hangul_input* -+iconv various.jax /*+iconv* -+iconv/dyn various.jax /*+iconv\/dyn* -+insert_expand various.jax /*+insert_expand* -+jumplist various.jax /*+jumplist* -+keymap various.jax /*+keymap* -+langmap various.jax /*+langmap* -+libcall various.jax /*+libcall* -+linebreak various.jax /*+linebreak* -+lispindent various.jax /*+lispindent* -+listcmds various.jax /*+listcmds* -+localmap various.jax /*+localmap* -+lua various.jax /*+lua* -+lua/dyn various.jax /*+lua\/dyn* -+menu various.jax /*+menu* -+mksession various.jax /*+mksession* -+modify_fname various.jax /*+modify_fname* -+mouse various.jax /*+mouse* -+mouse_dec various.jax /*+mouse_dec* -+mouse_gpm various.jax /*+mouse_gpm* -+mouse_netterm various.jax /*+mouse_netterm* -+mouse_pterm various.jax /*+mouse_pterm* -+mouse_sysmouse various.jax /*+mouse_sysmouse* -+mouse_xterm various.jax /*+mouse_xterm* -+mouseshape various.jax /*+mouseshape* -+multi_byte various.jax /*+multi_byte* -+multi_byte_ime various.jax /*+multi_byte_ime* -+multi_lang various.jax /*+multi_lang* -+mzscheme various.jax /*+mzscheme* -+mzscheme/dyn various.jax /*+mzscheme\/dyn* -+netbeans_intg various.jax /*+netbeans_intg* -+ole various.jax /*+ole* -+path_extra various.jax /*+path_extra* -+perl various.jax /*+perl* -+perl/dyn various.jax /*+perl\/dyn* -+persistent_undo various.jax /*+persistent_undo* -+postscript various.jax /*+postscript* -+printer various.jax /*+printer* -+profile various.jax /*+profile* -+python various.jax /*+python* -+python/dyn various.jax /*+python\/dyn* -+python3 various.jax /*+python3* -+python3/dyn various.jax /*+python3\/dyn* -+quickfix various.jax /*+quickfix* -+reltime various.jax /*+reltime* -+rightleft various.jax /*+rightleft* -+ruby various.jax /*+ruby* -+ruby/dyn various.jax /*+ruby\/dyn* -+scrollbind various.jax /*+scrollbind* -+signs various.jax /*+signs* -+smartindent various.jax /*+smartindent* -+sniff various.jax /*+sniff* -+startuptime various.jax /*+startuptime* -+statusline various.jax /*+statusline* -+sun_workshop various.jax /*+sun_workshop* -+syntax various.jax /*+syntax* -+system() various.jax /*+system()* -+tag_any_white various.jax /*+tag_any_white* -+tag_binary various.jax /*+tag_binary* -+tag_old_static various.jax /*+tag_old_static* -+tcl various.jax /*+tcl* -+tcl/dyn various.jax /*+tcl\/dyn* -+terminfo various.jax /*+terminfo* -+termresponse various.jax /*+termresponse* -+textobjects various.jax /*+textobjects* -+tgetent various.jax /*+tgetent* -+title various.jax /*+title* -+toolbar various.jax /*+toolbar* -+user_commands various.jax /*+user_commands* -+vertsplit various.jax /*+vertsplit* -+viminfo various.jax /*+viminfo* -+virtualedit various.jax /*+virtualedit* -+visual various.jax /*+visual* -+visualextra various.jax /*+visualextra* -+vreplace various.jax /*+vreplace* -+wildignore various.jax /*+wildignore* -+wildmenu various.jax /*+wildmenu* -+windows various.jax /*+windows* -+writebackup various.jax /*+writebackup* -+xfontset various.jax /*+xfontset* -+xim various.jax /*+xim* -+xsmp various.jax /*+xsmp* -+xsmp_interact various.jax /*+xsmp_interact* -+xterm_clipboard various.jax /*+xterm_clipboard* -+xterm_save various.jax /*+xterm_save* -, motion.jax /*,* -- motion.jax /*-* --+ starting.jax /*-+* --+/ starting.jax /*-+\/* --+c starting.jax /*-+c* --+reverse gui_x11.jax /*-+reverse* --+rv gui_x11.jax /*-+rv* --- starting.jax /*--* ---- starting.jax /*---* ---cmd starting.jax /*--cmd* ---echo-wid starting.jax /*--echo-wid* ---help starting.jax /*--help* ---literal starting.jax /*--literal* ---nofork starting.jax /*--nofork* ---noplugin starting.jax /*--noplugin* ---remote remote.jax /*--remote* ---remote-expr remote.jax /*--remote-expr* ---remote-send remote.jax /*--remote-send* ---remote-silent remote.jax /*--remote-silent* ---remote-tab remote.jax /*--remote-tab* ---remote-tab-silent remote.jax /*--remote-tab-silent* ---remote-tab-wait remote.jax /*--remote-tab-wait* ---remote-tab-wait-silent remote.jax /*--remote-tab-wait-silent* ---remote-wait remote.jax /*--remote-wait* ---remote-wait-silent remote.jax /*--remote-wait-silent* ---role starting.jax /*--role* ---serverlist remote.jax /*--serverlist* ---servername remote.jax /*--servername* ---socketid starting.jax /*--socketid* ---startuptime starting.jax /*--startuptime* ---version starting.jax /*--version* ---windowid starting.jax /*--windowid* --A starting.jax /*-A* --C starting.jax /*-C* --D starting.jax /*-D* --E starting.jax /*-E* --F starting.jax /*-F* --H starting.jax /*-H* --L starting.jax /*-L* --M starting.jax /*-M* --N starting.jax /*-N* --O starting.jax /*-O* --P starting.jax /*-P* --R starting.jax /*-R* --S starting.jax /*-S* --T starting.jax /*-T* --U starting.jax /*-U* --V starting.jax /*-V* --W starting.jax /*-W* --X starting.jax /*-X* --Z starting.jax /*-Z* --b starting.jax /*-b* --background gui_x11.jax /*-background* --bg gui_x11.jax /*-bg* --boldfont gui_x11.jax /*-boldfont* --borderwidth gui_x11.jax /*-borderwidth* --bw gui_x11.jax /*-bw* --c starting.jax /*-c* --d starting.jax /*-d* --dev starting.jax /*-dev* --display gui_x11.jax /*-display* --e starting.jax /*-e* --f starting.jax /*-f* --fg gui_x11.jax /*-fg* --file starting.jax /*-file* --fn gui_x11.jax /*-fn* --font gui_x11.jax /*-font* --foreground gui_x11.jax /*-foreground* --g starting.jax /*-g* --geom gui_x11.jax /*-geom* --geometry gui_x11.jax /*-geometry* --geometry-example gui_x11.jax /*-geometry-example* --gui gui_x11.jax /*-gui* --h starting.jax /*-h* --i starting.jax /*-i* --iconic gui_x11.jax /*-iconic* --italicfont gui_x11.jax /*-italicfont* --l starting.jax /*-l* --m starting.jax /*-m* --menufont gui_x11.jax /*-menufont* --menufontset gui_x11.jax /*-menufontset* --menuheight gui_x11.jax /*-menuheight* --mf gui_x11.jax /*-mf* --mh gui_x11.jax /*-mh* --n starting.jax /*-n* --nb starting.jax /*-nb* --o starting.jax /*-o* --p starting.jax /*-p* --q starting.jax /*-q* --qf starting.jax /*-qf* --r starting.jax /*-r* --register if_ole.jax /*-register* --reverse gui_x11.jax /*-reverse* --rv gui_x11.jax /*-rv* --s starting.jax /*-s* --s-ex starting.jax /*-s-ex* --scrollbarwidth gui_x11.jax /*-scrollbarwidth* --silent if_ole.jax /*-silent* --sw gui_x11.jax /*-sw* --t starting.jax /*-t* --tag starting.jax /*-tag* --u starting.jax /*-u* --ul gui_x11.jax /*-ul* --unregister if_ole.jax /*-unregister* --v starting.jax /*-v* --vim starting.jax /*-vim* --w starting.jax /*-w* --w_nr starting.jax /*-w_nr* --x starting.jax /*-x* --xrm gui_x11.jax /*-xrm* --y starting.jax /*-y* -. repeat.jax /*.* -... eval.jax /*...* -.Xdefaults gui_x11.jax /*.Xdefaults* -.exrc starting.jax /*.exrc* -.gvimrc gui.jax /*.gvimrc* -.vimrc starting.jax /*.vimrc* -/ pattern.jax /*\/* -/$ pattern.jax /*\/$* -/. pattern.jax /*\/.* -//; pattern.jax /*\/\/;* -/<CR> pattern.jax /*\/<CR>* -/[[. pattern.jax /*\/[[.* -/[[= pattern.jax /*\/[[=* -/[\n] pattern.jax /*\/[\\n]* -/[] pattern.jax /*\/[]* -/\ pattern.jax /*\/\\* -/\$ pattern.jax /*\/\\$* -/\%# pattern.jax /*\/\\%#* -/\%$ pattern.jax /*\/\\%$* -/\%'m pattern.jax /*\/\\%'m* -/\%( pattern.jax /*\/\\%(* -/\%(\) pattern.jax /*\/\\%(\\)* -/\%<'m pattern.jax /*\/\\%<'m* -/\%<c pattern.jax /*\/\\%<c* -/\%<l pattern.jax /*\/\\%<l* -/\%<v pattern.jax /*\/\\%<v* -/\%>'m pattern.jax /*\/\\%>'m* -/\%>c pattern.jax /*\/\\%>c* -/\%>l pattern.jax /*\/\\%>l* -/\%>v pattern.jax /*\/\\%>v* -/\%U pattern.jax /*\/\\%U* -/\%V pattern.jax /*\/\\%V* -/\%[] pattern.jax /*\/\\%[]* -/\%^ pattern.jax /*\/\\%^* -/\%c pattern.jax /*\/\\%c* -/\%d pattern.jax /*\/\\%d* -/\%l pattern.jax /*\/\\%l* -/\%o pattern.jax /*\/\\%o* -/\%u pattern.jax /*\/\\%u* -/\%v pattern.jax /*\/\\%v* -/\%x pattern.jax /*\/\\%x* -/\& pattern.jax /*\/\\&* -/\( pattern.jax /*\/\\(* -/\(\) pattern.jax /*\/\\(\\)* -/\) pattern.jax /*\/\\)* -/\+ pattern.jax /*\/\\+* -/\. pattern.jax /*\/\\.* -/\1 pattern.jax /*\/\\1* -/\2 pattern.jax /*\/\\2* -/\3 pattern.jax /*\/\\3* -/\9 pattern.jax /*\/\\9* -/\< pattern.jax /*\/\\<* -/\= pattern.jax /*\/\\=* -/\> pattern.jax /*\/\\>* -/\? pattern.jax /*\/\\?* -/\@! pattern.jax /*\/\\@!* -/\@<! pattern.jax /*\/\\@<!* -/\@<= pattern.jax /*\/\\@<=* -/\@= pattern.jax /*\/\\@=* -/\@> pattern.jax /*\/\\@>* -/\A pattern.jax /*\/\\A* -/\C pattern.jax /*\/\\C* -/\D pattern.jax /*\/\\D* -/\F pattern.jax /*\/\\F* -/\H pattern.jax /*\/\\H* -/\I pattern.jax /*\/\\I* -/\K pattern.jax /*\/\\K* -/\L pattern.jax /*\/\\L* -/\M pattern.jax /*\/\\M* -/\O pattern.jax /*\/\\O* -/\P pattern.jax /*\/\\P* -/\S pattern.jax /*\/\\S* -/\U pattern.jax /*\/\\U* -/\V pattern.jax /*\/\\V* -/\W pattern.jax /*\/\\W* -/\X pattern.jax /*\/\\X* -/\Z pattern.jax /*\/\\Z* -/\[] pattern.jax /*\/\\[]* -/\\ pattern.jax /*\/\\\\* -/\] pattern.jax /*\/\\]* -/\^ pattern.jax /*\/\\^* -/\_ pattern.jax /*\/\\_* -/\_$ pattern.jax /*\/\\_$* -/\_. pattern.jax /*\/\\_.* -/\_A pattern.jax /*\/\\_A* -/\_D pattern.jax /*\/\\_D* -/\_F pattern.jax /*\/\\_F* -/\_H pattern.jax /*\/\\_H* -/\_I pattern.jax /*\/\\_I* -/\_K pattern.jax /*\/\\_K* -/\_L pattern.jax /*\/\\_L* -/\_O pattern.jax /*\/\\_O* -/\_P pattern.jax /*\/\\_P* -/\_S pattern.jax /*\/\\_S* -/\_U pattern.jax /*\/\\_U* -/\_W pattern.jax /*\/\\_W* -/\_X pattern.jax /*\/\\_X* -/\_[] pattern.jax /*\/\\_[]* -/\_^ pattern.jax /*\/\\_^* -/\_a pattern.jax /*\/\\_a* -/\_d pattern.jax /*\/\\_d* -/\_f pattern.jax /*\/\\_f* -/\_h pattern.jax /*\/\\_h* -/\_i pattern.jax /*\/\\_i* -/\_k pattern.jax /*\/\\_k* -/\_l pattern.jax /*\/\\_l* -/\_o pattern.jax /*\/\\_o* -/\_p pattern.jax /*\/\\_p* -/\_s pattern.jax /*\/\\_s* -/\_u pattern.jax /*\/\\_u* -/\_w pattern.jax /*\/\\_w* -/\_x pattern.jax /*\/\\_x* -/\a pattern.jax /*\/\\a* -/\b pattern.jax /*\/\\b* -/\bar pattern.jax /*\/\\bar* -/\c pattern.jax /*\/\\c* -/\d pattern.jax /*\/\\d* -/\e pattern.jax /*\/\\e* -/\f pattern.jax /*\/\\f* -/\h pattern.jax /*\/\\h* -/\i pattern.jax /*\/\\i* -/\k pattern.jax /*\/\\k* -/\l pattern.jax /*\/\\l* -/\m pattern.jax /*\/\\m* -/\n pattern.jax /*\/\\n* -/\o pattern.jax /*\/\\o* -/\p pattern.jax /*\/\\p* -/\r pattern.jax /*\/\\r* -/\s pattern.jax /*\/\\s* -/\star pattern.jax /*\/\\star* -/\t pattern.jax /*\/\\t* -/\u pattern.jax /*\/\\u* -/\v pattern.jax /*\/\\v* -/\w pattern.jax /*\/\\w* -/\x pattern.jax /*\/\\x* -/\z( syntax.jax /*\/\\z(* -/\z(\) syntax.jax /*\/\\z(\\)* -/\z1 syntax.jax /*\/\\z1* -/\z2 syntax.jax /*\/\\z2* -/\z3 syntax.jax /*\/\\z3* -/\z4 syntax.jax /*\/\\z4* -/\z5 syntax.jax /*\/\\z5* -/\z6 syntax.jax /*\/\\z6* -/\z7 syntax.jax /*\/\\z7* -/\z8 syntax.jax /*\/\\z8* -/\z9 syntax.jax /*\/\\z9* -/\ze pattern.jax /*\/\\ze* -/\zs pattern.jax /*\/\\zs* -/\{ pattern.jax /*\/\\{* -/\{- pattern.jax /*\/\\{-* -/\~ pattern.jax /*\/\\~* -/^ pattern.jax /*\/^* -/atom pattern.jax /*\/atom* -/bar pattern.jax /*\/bar* -/branch pattern.jax /*\/branch* -/character-classes pattern.jax /*\/character-classes* -/collection pattern.jax /*\/collection* -/concat pattern.jax /*\/concat* -/dyn various.jax /*\/dyn* -/ignorecase pattern.jax /*\/ignorecase* -/magic pattern.jax /*\/magic* -/multi pattern.jax /*\/multi* -/ordinary-atom pattern.jax /*\/ordinary-atom* -/pattern pattern.jax /*\/pattern* -/piece pattern.jax /*\/piece* -/star pattern.jax /*\/star* -/zero-width pattern.jax /*\/zero-width* -/~ pattern.jax /*\/~* -0 motion.jax /*0* -01.1 usr_01.jax /*01.1* -01.2 usr_01.jax /*01.2* -01.3 usr_01.jax /*01.3* -01.4 usr_01.jax /*01.4* -02.1 usr_02.jax /*02.1* -02.2 usr_02.jax /*02.2* -02.3 usr_02.jax /*02.3* -02.4 usr_02.jax /*02.4* -02.5 usr_02.jax /*02.5* -02.6 usr_02.jax /*02.6* -02.7 usr_02.jax /*02.7* -02.8 usr_02.jax /*02.8* -03.1 usr_03.jax /*03.1* -03.10 usr_03.jax /*03.10* -03.2 usr_03.jax /*03.2* -03.3 usr_03.jax /*03.3* -03.4 usr_03.jax /*03.4* -03.5 usr_03.jax /*03.5* -03.6 usr_03.jax /*03.6* -03.7 usr_03.jax /*03.7* -03.8 usr_03.jax /*03.8* -03.9 usr_03.jax /*03.9* -04.1 usr_04.jax /*04.1* -04.10 usr_04.jax /*04.10* -04.2 usr_04.jax /*04.2* -04.3 usr_04.jax /*04.3* -04.4 usr_04.jax /*04.4* -04.5 usr_04.jax /*04.5* -04.6 usr_04.jax /*04.6* -04.7 usr_04.jax /*04.7* -04.8 usr_04.jax /*04.8* -04.9 usr_04.jax /*04.9* -05.1 usr_05.jax /*05.1* -05.2 usr_05.jax /*05.2* -05.3 usr_05.jax /*05.3* -05.4 usr_05.jax /*05.4* -05.5 usr_05.jax /*05.5* -05.6 usr_05.jax /*05.6* -05.7 usr_05.jax /*05.7* -06.1 usr_06.jax /*06.1* -06.2 usr_06.jax /*06.2* -06.3 usr_06.jax /*06.3* -06.4 usr_06.jax /*06.4* -06.5 usr_06.jax /*06.5* -06.6 usr_06.jax /*06.6* -07.1 usr_07.jax /*07.1* -07.2 usr_07.jax /*07.2* -07.3 usr_07.jax /*07.3* -07.4 usr_07.jax /*07.4* -07.5 usr_07.jax /*07.5* -07.6 usr_07.jax /*07.6* -07.7 usr_07.jax /*07.7* -08.1 usr_08.jax /*08.1* -08.2 usr_08.jax /*08.2* -08.3 usr_08.jax /*08.3* -08.4 usr_08.jax /*08.4* -08.5 usr_08.jax /*08.5* -08.6 usr_08.jax /*08.6* -08.7 usr_08.jax /*08.7* -08.8 usr_08.jax /*08.8* -08.9 usr_08.jax /*08.9* -09.1 usr_09.jax /*09.1* -09.2 usr_09.jax /*09.2* -09.3 usr_09.jax /*09.3* -09.4 usr_09.jax /*09.4* -10.1 usr_10.jax /*10.1* -10.2 usr_10.jax /*10.2* -10.3 usr_10.jax /*10.3* -10.4 usr_10.jax /*10.4* -10.5 usr_10.jax /*10.5* -10.6 usr_10.jax /*10.6* -10.7 usr_10.jax /*10.7* -10.8 usr_10.jax /*10.8* -10.9 usr_10.jax /*10.9* -11.1 usr_11.jax /*11.1* -11.2 usr_11.jax /*11.2* -11.3 usr_11.jax /*11.3* -11.4 usr_11.jax /*11.4* -12.1 usr_12.jax /*12.1* -12.2 usr_12.jax /*12.2* -12.3 usr_12.jax /*12.3* -12.4 usr_12.jax /*12.4* -12.5 usr_12.jax /*12.5* -12.6 usr_12.jax /*12.6* -12.7 usr_12.jax /*12.7* -12.8 usr_12.jax /*12.8* -1gD pattern.jax /*1gD* -1gd pattern.jax /*1gd* -20.1 usr_20.jax /*20.1* -20.2 usr_20.jax /*20.2* -20.3 usr_20.jax /*20.3* -20.4 usr_20.jax /*20.4* -20.5 usr_20.jax /*20.5* -21.1 usr_21.jax /*21.1* -21.2 usr_21.jax /*21.2* -21.3 usr_21.jax /*21.3* -21.4 usr_21.jax /*21.4* -21.5 usr_21.jax /*21.5* -21.6 usr_21.jax /*21.6* -22.1 usr_22.jax /*22.1* -22.2 usr_22.jax /*22.2* -22.3 usr_22.jax /*22.3* -22.4 usr_22.jax /*22.4* -23.1 usr_23.jax /*23.1* -23.2 usr_23.jax /*23.2* -23.3 usr_23.jax /*23.3* -23.4 usr_23.jax /*23.4* -23.5 usr_23.jax /*23.5* -24.1 usr_24.jax /*24.1* -24.10 usr_24.jax /*24.10* -24.2 usr_24.jax /*24.2* -24.3 usr_24.jax /*24.3* -24.4 usr_24.jax /*24.4* -24.5 usr_24.jax /*24.5* -24.6 usr_24.jax /*24.6* -24.7 usr_24.jax /*24.7* -24.8 usr_24.jax /*24.8* -24.9 usr_24.jax /*24.9* -25.1 usr_25.jax /*25.1* -25.2 usr_25.jax /*25.2* -25.3 usr_25.jax /*25.3* -25.4 usr_25.jax /*25.4* -25.5 usr_25.jax /*25.5* -26.1 usr_26.jax /*26.1* -26.2 usr_26.jax /*26.2* -26.3 usr_26.jax /*26.3* -26.4 usr_26.jax /*26.4* -27.1 usr_27.jax /*27.1* -27.2 usr_27.jax /*27.2* -27.3 usr_27.jax /*27.3* -27.4 usr_27.jax /*27.4* -27.5 usr_27.jax /*27.5* -27.6 usr_27.jax /*27.6* -27.7 usr_27.jax /*27.7* -27.8 usr_27.jax /*27.8* -27.9 usr_27.jax /*27.9* -28.1 usr_28.jax /*28.1* -28.10 usr_28.jax /*28.10* -28.2 usr_28.jax /*28.2* -28.3 usr_28.jax /*28.3* -28.4 usr_28.jax /*28.4* -28.5 usr_28.jax /*28.5* -28.6 usr_28.jax /*28.6* -28.7 usr_28.jax /*28.7* -28.8 usr_28.jax /*28.8* -28.9 usr_28.jax /*28.9* -29.1 usr_29.jax /*29.1* -29.2 usr_29.jax /*29.2* -29.3 usr_29.jax /*29.3* -29.4 usr_29.jax /*29.4* -29.5 usr_29.jax /*29.5* -2html.vim syntax.jax /*2html.vim* -30.1 usr_30.jax /*30.1* -30.2 usr_30.jax /*30.2* -30.3 usr_30.jax /*30.3* -30.4 usr_30.jax /*30.4* -30.5 usr_30.jax /*30.5* -30.6 usr_30.jax /*30.6* -31.1 usr_31.jax /*31.1* -31.2 usr_31.jax /*31.2* -31.3 usr_31.jax /*31.3* -31.4 usr_31.jax /*31.4* -31.5 usr_31.jax /*31.5* -32.1 usr_32.jax /*32.1* -32.2 usr_32.jax /*32.2* -32.3 usr_32.jax /*32.3* -32.4 usr_32.jax /*32.4* -40.1 usr_40.jax /*40.1* -40.2 usr_40.jax /*40.2* -40.3 usr_40.jax /*40.3* -41.1 usr_41.jax /*41.1* -41.10 usr_41.jax /*41.10* -41.11 usr_41.jax /*41.11* -41.12 usr_41.jax /*41.12* -41.13 usr_41.jax /*41.13* -41.14 usr_41.jax /*41.14* -41.15 usr_41.jax /*41.15* -41.16 usr_41.jax /*41.16* -41.2 usr_41.jax /*41.2* -41.3 usr_41.jax /*41.3* -41.4 usr_41.jax /*41.4* -41.5 usr_41.jax /*41.5* -41.6 usr_41.jax /*41.6* -41.7 usr_41.jax /*41.7* -41.8 usr_41.jax /*41.8* -41.9 usr_41.jax /*41.9* -42 usr_42.jax /*42* -42.1 usr_42.jax /*42.1* -42.2 usr_42.jax /*42.2* -42.3 usr_42.jax /*42.3* -42.4 usr_42.jax /*42.4* -43.1 usr_43.jax /*43.1* -43.2 usr_43.jax /*43.2* -44.1 usr_44.jax /*44.1* -44.10 usr_44.jax /*44.10* -44.11 usr_44.jax /*44.11* -44.12 usr_44.jax /*44.12* -44.2 usr_44.jax /*44.2* -44.3 usr_44.jax /*44.3* -44.4 usr_44.jax /*44.4* -44.5 usr_44.jax /*44.5* -44.6 usr_44.jax /*44.6* -44.7 usr_44.jax /*44.7* -44.8 usr_44.jax /*44.8* -44.9 usr_44.jax /*44.9* -45.1 usr_45.jax /*45.1* -45.2 usr_45.jax /*45.2* -45.3 usr_45.jax /*45.3* -45.4 usr_45.jax /*45.4* -45.5 usr_45.jax /*45.5* -672 starting.jax /*672* -8g8 various.jax /*8g8* -90.1 usr_90.jax /*90.1* -90.2 usr_90.jax /*90.2* -90.3 usr_90.jax /*90.3* -90.4 usr_90.jax /*90.4* -90.5 usr_90.jax /*90.5* -: cmdline.jax /*:* -:! various.jax /*:!* -:!! various.jax /*:!!* -:!cmd various.jax /*:!cmd* -:!start os_win32.jax /*:!start* -:# various.jax /*:#* -:#! various.jax /*:#!* -:$ cmdline.jax /*:$* -:% cmdline.jax /*:%* -:& change.jax /*:&* -:' cmdline.jax /*:'* -:, cmdline.jax /*:,* -:. cmdline.jax /*:.* -:/ cmdline.jax /*:\/* -:0file editing.jax /*:0file* -:2match pattern.jax /*:2match* -:3match pattern.jax /*:3match* -::. cmdline.jax /*::.* -::8 cmdline.jax /*::8* -::e cmdline.jax /*::e* -::gs cmdline.jax /*::gs* -::h cmdline.jax /*::h* -::p cmdline.jax /*::p* -::r cmdline.jax /*::r* -::s cmdline.jax /*::s* -::t cmdline.jax /*::t* -::~ cmdline.jax /*::~* -:; cmdline.jax /*:;* -:< change.jax /*:<* -:<abuf> cmdline.jax /*:<abuf>* -:<afile> cmdline.jax /*:<afile>* -:<amatch> cmdline.jax /*:<amatch>* -:<cWORD> cmdline.jax /*:<cWORD>* -:<cfile> cmdline.jax /*:<cfile>* -:<cword> cmdline.jax /*:<cword>* -:<sfile> cmdline.jax /*:<sfile>* -:= various.jax /*:=* -:> change.jax /*:>* -:? cmdline.jax /*:?* -:@ repeat.jax /*:@* -:@: repeat.jax /*:@:* -:@@ repeat.jax /*:@@* -:AdaLines ft_ada.jax /*:AdaLines* -:AdaRainbow ft_ada.jax /*:AdaRainbow* -:AdaSpaces ft_ada.jax /*:AdaSpaces* -:AdaTagDir ft_ada.jax /*:AdaTagDir* -:AdaTagFile ft_ada.jax /*:AdaTagFile* -:AdaTypes ft_ada.jax /*:AdaTypes* -:CompilerSet usr_41.jax /*:CompilerSet* -:DiffOrig diff.jax /*:DiffOrig* -:DoMatchParen pi_paren.jax /*:DoMatchParen* -:Explore pi_netrw.jax /*:Explore* -:GLVS pi_getscript.jax /*:GLVS* -:GetLatestVimScripts_dat pi_getscript.jax /*:GetLatestVimScripts_dat* -:GnatFind ft_ada.jax /*:GnatFind* -:GnatPretty ft_ada.jax /*:GnatPretty* -:GnatTags ft_ada.jax /*:GnatTags* -:Hexplore pi_netrw.jax /*:Hexplore* -:Man filetype.jax /*:Man* -:MkVimball pi_vimball.jax /*:MkVimball* -:N editing.jax /*:N* -:NetrwClean pi_netrw.jax /*:NetrwClean* -:Nexplore pi_netrw.jax /*:Nexplore* -:Next editing.jax /*:Next* -:NoMatchParen pi_paren.jax /*:NoMatchParen* -:Nr pi_netrw.jax /*:Nr* -:Nread pi_netrw.jax /*:Nread* -:Ns pi_netrw.jax /*:Ns* -:Nsource pi_netrw.jax /*:Nsource* -:Nw pi_netrw.jax /*:Nw* -:Nwrite pi_netrw.jax /*:Nwrite* -:P various.jax /*:P* -:Pexplore pi_netrw.jax /*:Pexplore* -:Print various.jax /*:Print* -:Rexplore pi_netrw.jax /*:Rexplore* -:RmVimball pi_vimball.jax /*:RmVimball* -:Sexplore pi_netrw.jax /*:Sexplore* -:TOhtml syntax.jax /*:TOhtml* -:Texplore pi_netrw.jax /*:Texplore* -:UseVimball pi_vimball.jax /*:UseVimball* -:Vexplore pi_netrw.jax /*:Vexplore* -:VimballList pi_vimball.jax /*:VimballList* -:Vimuntar pi_tar.jax /*:Vimuntar* -:X editing.jax /*:X* -:XMLent insert.jax /*:XMLent* -:XMLns insert.jax /*:XMLns* -:\bar cmdline.jax /*:\\bar* -:_! cmdline.jax /*:_!* -:_# cmdline.jax /*:_#* -:_## cmdline.jax /*:_##* -:_#0 cmdline.jax /*:_#0* -:_#< cmdline.jax /*:_#<* -:_#n cmdline.jax /*:_#n* -:_% cmdline.jax /*:_%* -:_%: cmdline.jax /*:_%:* -:_%< cmdline.jax /*:_%<* -:a insert.jax /*:a* -:ab map.jax /*:ab* -:abbreviate map.jax /*:abbreviate* -:abbreviate-<buffer> map.jax /*:abbreviate-<buffer>* -:abbreviate-local map.jax /*:abbreviate-local* -:abbreviate-verbose map.jax /*:abbreviate-verbose* -:abc map.jax /*:abc* -:abclear map.jax /*:abclear* -:abo windows.jax /*:abo* -:aboveleft windows.jax /*:aboveleft* -:al windows.jax /*:al* -:all windows.jax /*:all* -:am gui.jax /*:am* -:amenu gui.jax /*:amenu* -:an gui.jax /*:an* -:anoremenu gui.jax /*:anoremenu* -:append insert.jax /*:append* -:ar editing.jax /*:ar* -:arga editing.jax /*:arga* -:argadd editing.jax /*:argadd* -:argd editing.jax /*:argd* -:argdelete editing.jax /*:argdelete* -:argdo editing.jax /*:argdo* -:arge editing.jax /*:arge* -:argedit editing.jax /*:argedit* -:argglobal editing.jax /*:argglobal* -:arglocal editing.jax /*:arglocal* -:args editing.jax /*:args* -:args_f editing.jax /*:args_f* -:args_f! editing.jax /*:args_f!* -:argu editing.jax /*:argu* -:argument editing.jax /*:argument* -:as various.jax /*:as* -:ascii various.jax /*:ascii* -:au autocmd.jax /*:au* -:aug autocmd.jax /*:aug* -:augroup autocmd.jax /*:augroup* -:augroup-delete autocmd.jax /*:augroup-delete* -:aun gui.jax /*:aun* -:aunmenu gui.jax /*:aunmenu* -:autocmd autocmd.jax /*:autocmd* -:autocmd-verbose autocmd.jax /*:autocmd-verbose* -:b windows.jax /*:b* -:bN windows.jax /*:bN* -:bNext windows.jax /*:bNext* -:ba windows.jax /*:ba* -:bad windows.jax /*:bad* -:badd windows.jax /*:badd* -:ball windows.jax /*:ball* -:bar cmdline.jax /*:bar* -:bd windows.jax /*:bd* -:bdel windows.jax /*:bdel* -:bdelete windows.jax /*:bdelete* -:be gui.jax /*:be* -:behave gui.jax /*:behave* -:bel windows.jax /*:bel* -:belowright windows.jax /*:belowright* -:bf windows.jax /*:bf* -:bfirst windows.jax /*:bfirst* -:bl windows.jax /*:bl* -:blast windows.jax /*:blast* -:bm windows.jax /*:bm* -:bmodified windows.jax /*:bmodified* -:bn windows.jax /*:bn* -:bnext windows.jax /*:bnext* -:botright windows.jax /*:botright* -:bp windows.jax /*:bp* -:bprevious windows.jax /*:bprevious* -:br windows.jax /*:br* -:brea eval.jax /*:brea* -:break eval.jax /*:break* -:breaka repeat.jax /*:breaka* -:breakadd repeat.jax /*:breakadd* -:breakd repeat.jax /*:breakd* -:breakdel repeat.jax /*:breakdel* -:breakl repeat.jax /*:breakl* -:breaklist repeat.jax /*:breaklist* -:brewind windows.jax /*:brewind* -:bro editing.jax /*:bro* -:browse editing.jax /*:browse* -:browse-set options.jax /*:browse-set* -:bu windows.jax /*:bu* -:buf windows.jax /*:buf* -:bufdo windows.jax /*:bufdo* -:buffer windows.jax /*:buffer* -:buffer-! windows.jax /*:buffer-!* -:buffers windows.jax /*:buffers* -:bun windows.jax /*:bun* -:bunload windows.jax /*:bunload* -:bw windows.jax /*:bw* -:bwipe windows.jax /*:bwipe* -:bwipeout windows.jax /*:bwipeout* -:c change.jax /*:c* -:cN quickfix.jax /*:cN* -:cNext quickfix.jax /*:cNext* -:cNf quickfix.jax /*:cNf* -:cNfile quickfix.jax /*:cNfile* -:ca map.jax /*:ca* -:cabbrev map.jax /*:cabbrev* -:cabc map.jax /*:cabc* -:cabclear map.jax /*:cabclear* -:cad quickfix.jax /*:cad* -:caddb quickfix.jax /*:caddb* -:caddbuffer quickfix.jax /*:caddbuffer* -:caddexpr quickfix.jax /*:caddexpr* -:caddf quickfix.jax /*:caddf* -:caddfile quickfix.jax /*:caddfile* -:cal eval.jax /*:cal* -:call eval.jax /*:call* -:cat eval.jax /*:cat* -:catch eval.jax /*:catch* -:cb quickfix.jax /*:cb* -:cbuffer quickfix.jax /*:cbuffer* -:cc quickfix.jax /*:cc* -:ccl quickfix.jax /*:ccl* -:cclose quickfix.jax /*:cclose* -:cd editing.jax /*:cd* -:cd- editing.jax /*:cd-* -:ce change.jax /*:ce* -:center change.jax /*:center* -:cex quickfix.jax /*:cex* -:cexpr quickfix.jax /*:cexpr* -:cf quickfix.jax /*:cf* -:cfile quickfix.jax /*:cfile* -:cfir quickfix.jax /*:cfir* -:cfirst quickfix.jax /*:cfirst* -:cg quickfix.jax /*:cg* -:cgetb quickfix.jax /*:cgetb* -:cgetbuffer quickfix.jax /*:cgetbuffer* -:cgete quickfix.jax /*:cgete* -:cgetexpr quickfix.jax /*:cgetexpr* -:cgetfile quickfix.jax /*:cgetfile* -:ch change.jax /*:ch* -:change change.jax /*:change* -:changes motion.jax /*:changes* -:chd editing.jax /*:chd* -:chdir editing.jax /*:chdir* -:che tagsrch.jax /*:che* -:checkpath tagsrch.jax /*:checkpath* -:checkt editing.jax /*:checkt* -:checktime editing.jax /*:checktime* -:cl quickfix.jax /*:cl* -:cla quickfix.jax /*:cla* -:clast quickfix.jax /*:clast* -:clist quickfix.jax /*:clist* -:clo windows.jax /*:clo* -:close windows.jax /*:close* -:cm map.jax /*:cm* -:cmap map.jax /*:cmap* -:cmap_l map.jax /*:cmap_l* -:cmapc map.jax /*:cmapc* -:cmapclear map.jax /*:cmapclear* -:cme gui.jax /*:cme* -:cmenu gui.jax /*:cmenu* -:cn quickfix.jax /*:cn* -:cnew quickfix.jax /*:cnew* -:cnewer quickfix.jax /*:cnewer* -:cnext quickfix.jax /*:cnext* -:cnf quickfix.jax /*:cnf* -:cnfile quickfix.jax /*:cnfile* -:cno map.jax /*:cno* -:cnorea map.jax /*:cnorea* -:cnoreabbrev map.jax /*:cnoreabbrev* -:cnoremap map.jax /*:cnoremap* -:cnoreme gui.jax /*:cnoreme* -:cnoremenu gui.jax /*:cnoremenu* -:co change.jax /*:co* -:col quickfix.jax /*:col* -:colder quickfix.jax /*:colder* -:colo syntax.jax /*:colo* -:colorscheme syntax.jax /*:colorscheme* -:com map.jax /*:com* -:comc map.jax /*:comc* -:comclear map.jax /*:comclear* -:command map.jax /*:command* -:command-bang map.jax /*:command-bang* -:command-bar map.jax /*:command-bar* -:command-buffer map.jax /*:command-buffer* -:command-complete map.jax /*:command-complete* -:command-completion map.jax /*:command-completion* -:command-completion-custom map.jax /*:command-completion-custom* -:command-completion-customlist map.jax /*:command-completion-customlist* -:command-count map.jax /*:command-count* -:command-nargs map.jax /*:command-nargs* -:command-range map.jax /*:command-range* -:command-register map.jax /*:command-register* -:command-verbose map.jax /*:command-verbose* -:comment cmdline.jax /*:comment* -:comp quickfix.jax /*:comp* -:compiler quickfix.jax /*:compiler* -:con eval.jax /*:con* -:conf editing.jax /*:conf* -:confirm editing.jax /*:confirm* -:continue eval.jax /*:continue* -:cope quickfix.jax /*:cope* -:copen quickfix.jax /*:copen* -:copy change.jax /*:copy* -:cp quickfix.jax /*:cp* -:cpf quickfix.jax /*:cpf* -:cpfile quickfix.jax /*:cpfile* -:cprevious quickfix.jax /*:cprevious* -:cq quickfix.jax /*:cq* -:cquit quickfix.jax /*:cquit* -:cr quickfix.jax /*:cr* -:crewind quickfix.jax /*:crewind* -:cs if_cscop.jax /*:cs* -:cscope if_cscop.jax /*:cscope* -:cstag if_cscop.jax /*:cstag* -:cu map.jax /*:cu* -:cuna map.jax /*:cuna* -:cunabbrev map.jax /*:cunabbrev* -:cunmap map.jax /*:cunmap* -:cunme gui.jax /*:cunme* -:cunmenu gui.jax /*:cunmenu* -:cw quickfix.jax /*:cw* -:cwindow quickfix.jax /*:cwindow* -:d change.jax /*:d* -:de change.jax /*:de* -:debug repeat.jax /*:debug* -:debug-name repeat.jax /*:debug-name* -:debugg repeat.jax /*:debugg* -:debuggreedy repeat.jax /*:debuggreedy* -:del change.jax /*:del* -:delc map.jax /*:delc* -:delcommand map.jax /*:delcommand* -:delete change.jax /*:delete* -:delf eval.jax /*:delf* -:delfunction eval.jax /*:delfunction* -:delm motion.jax /*:delm* -:delmarks motion.jax /*:delmarks* -:di change.jax /*:di* -:diffg diff.jax /*:diffg* -:diffget diff.jax /*:diffget* -:diffo diff.jax /*:diffo* -:diffoff diff.jax /*:diffoff* -:diffp diff.jax /*:diffp* -:diffpatch diff.jax /*:diffpatch* -:diffpu diff.jax /*:diffpu* -:diffput diff.jax /*:diffput* -:diffs diff.jax /*:diffs* -:diffsplit diff.jax /*:diffsplit* -:difft diff.jax /*:difft* -:diffthis diff.jax /*:diffthis* -:diffu diff.jax /*:diffu* -:diffupdate diff.jax /*:diffupdate* -:dig digraph.jax /*:dig* -:digraphs digraph.jax /*:digraphs* -:display change.jax /*:display* -:dj tagsrch.jax /*:dj* -:djump tagsrch.jax /*:djump* -:dli tagsrch.jax /*:dli* -:dlist tagsrch.jax /*:dlist* -:do autocmd.jax /*:do* -:doau autocmd.jax /*:doau* -:doautoa autocmd.jax /*:doautoa* -:doautoall autocmd.jax /*:doautoall* -:doautocmd autocmd.jax /*:doautocmd* -:dr windows.jax /*:dr* -:drop windows.jax /*:drop* -:ds tagsrch.jax /*:ds* -:dsearch tagsrch.jax /*:dsearch* -:dsp tagsrch.jax /*:dsp* -:dsplit tagsrch.jax /*:dsplit* -:e editing.jax /*:e* -:ea undo.jax /*:ea* -:earlier undo.jax /*:earlier* -:ec eval.jax /*:ec* -:echo eval.jax /*:echo* -:echo-redraw eval.jax /*:echo-redraw* -:echoe eval.jax /*:echoe* -:echoerr eval.jax /*:echoerr* -:echoh eval.jax /*:echoh* -:echohl eval.jax /*:echohl* -:echom eval.jax /*:echom* -:echomsg eval.jax /*:echomsg* -:echon eval.jax /*:echon* -:edit editing.jax /*:edit* -:edit! editing.jax /*:edit!* -:edit!_f editing.jax /*:edit!_f* -:edit_f editing.jax /*:edit_f* -:el eval.jax /*:el* -:else eval.jax /*:else* -:elsei eval.jax /*:elsei* -:elseif eval.jax /*:elseif* -:em gui.jax /*:em* -:emenu gui.jax /*:emenu* -:en eval.jax /*:en* -:endf eval.jax /*:endf* -:endfo eval.jax /*:endfo* -:endfor eval.jax /*:endfor* -:endfunction eval.jax /*:endfunction* -:endif eval.jax /*:endif* -:endt eval.jax /*:endt* -:endtry eval.jax /*:endtry* -:endw eval.jax /*:endw* -:endwhile eval.jax /*:endwhile* -:ene editing.jax /*:ene* -:ene! editing.jax /*:ene!* -:enew editing.jax /*:enew* -:enew! editing.jax /*:enew!* -:ex editing.jax /*:ex* -:exe eval.jax /*:exe* -:exe-comment eval.jax /*:exe-comment* -:execute eval.jax /*:execute* -:exi editing.jax /*:exi* -:exit editing.jax /*:exit* -:exu helphelp.jax /*:exu* -:exusage helphelp.jax /*:exusage* -:f editing.jax /*:f* -:fi editing.jax /*:fi* -:file editing.jax /*:file* -:file_f editing.jax /*:file_f* -:filename editing.jax /*:filename* -:files windows.jax /*:files* -:filet filetype.jax /*:filet* -:filetype filetype.jax /*:filetype* -:filetype-indent-off filetype.jax /*:filetype-indent-off* -:filetype-indent-on filetype.jax /*:filetype-indent-on* -:filetype-off filetype.jax /*:filetype-off* -:filetype-overview filetype.jax /*:filetype-overview* -:filetype-plugin-off filetype.jax /*:filetype-plugin-off* -:filetype-plugin-on filetype.jax /*:filetype-plugin-on* -:fin editing.jax /*:fin* -:fina eval.jax /*:fina* -:finally eval.jax /*:finally* -:find editing.jax /*:find* -:fini repeat.jax /*:fini* -:finish repeat.jax /*:finish* -:fir editing.jax /*:fir* -:first editing.jax /*:first* -:fix options.jax /*:fix* -:fixdel options.jax /*:fixdel* -:fo fold.jax /*:fo* -:fold fold.jax /*:fold* -:foldc fold.jax /*:foldc* -:foldclose fold.jax /*:foldclose* -:foldd fold.jax /*:foldd* -:folddoc fold.jax /*:folddoc* -:folddoclosed fold.jax /*:folddoclosed* -:folddoopen fold.jax /*:folddoopen* -:foldo fold.jax /*:foldo* -:foldopen fold.jax /*:foldopen* -:for eval.jax /*:for* -:fu eval.jax /*:fu* -:function eval.jax /*:function* -:function-verbose eval.jax /*:function-verbose* -:g repeat.jax /*:g* -:global repeat.jax /*:global* -:go motion.jax /*:go* -:goto motion.jax /*:goto* -:gr quickfix.jax /*:gr* -:grep quickfix.jax /*:grep* -:grepa quickfix.jax /*:grepa* -:grepadd quickfix.jax /*:grepadd* -:gu gui_x11.jax /*:gu* -:gui gui_x11.jax /*:gui* -:gv gui_x11.jax /*:gv* -:gvim gui_x11.jax /*:gvim* -:h helphelp.jax /*:h* -:ha print.jax /*:ha* -:hardcopy print.jax /*:hardcopy* -:help helphelp.jax /*:help* -:helpf helphelp.jax /*:helpf* -:helpfind helphelp.jax /*:helpfind* -:helpg helphelp.jax /*:helpg* -:helpgrep helphelp.jax /*:helpgrep* -:helpt helphelp.jax /*:helpt* -:helptags helphelp.jax /*:helptags* -:hi syntax.jax /*:hi* -:hi-default syntax.jax /*:hi-default* -:hi-link syntax.jax /*:hi-link* -:hi-normal syntax.jax /*:hi-normal* -:hi-normal-cterm syntax.jax /*:hi-normal-cterm* -:hide windows.jax /*:hide* -:highlight syntax.jax /*:highlight* -:highlight-default syntax.jax /*:highlight-default* -:highlight-link syntax.jax /*:highlight-link* -:highlight-normal syntax.jax /*:highlight-normal* -:highlight-verbose syntax.jax /*:highlight-verbose* -:his cmdline.jax /*:his* -:history cmdline.jax /*:history* -:history-indexing cmdline.jax /*:history-indexing* -:i insert.jax /*:i* -:ia map.jax /*:ia* -:iabbrev map.jax /*:iabbrev* -:iabc map.jax /*:iabc* -:iabclear map.jax /*:iabclear* -:if eval.jax /*:if* -:ij tagsrch.jax /*:ij* -:ijump tagsrch.jax /*:ijump* -:il tagsrch.jax /*:il* -:ilist tagsrch.jax /*:ilist* -:im map.jax /*:im* -:imap map.jax /*:imap* -:imap_l map.jax /*:imap_l* -:imapc map.jax /*:imapc* -:imapclear map.jax /*:imapclear* -:ime gui.jax /*:ime* -:imenu gui.jax /*:imenu* -:in insert.jax /*:in* -:index index.jax /*:index* -:ino map.jax /*:ino* -:inorea map.jax /*:inorea* -:inoreabbrev map.jax /*:inoreabbrev* -:inoremap map.jax /*:inoremap* -:inoreme gui.jax /*:inoreme* -:inoremenu gui.jax /*:inoremenu* -:insert insert.jax /*:insert* -:intro starting.jax /*:intro* -:is tagsrch.jax /*:is* -:isearch tagsrch.jax /*:isearch* -:isp tagsrch.jax /*:isp* -:isplit tagsrch.jax /*:isplit* -:iu map.jax /*:iu* -:iuna map.jax /*:iuna* -:iunabbrev map.jax /*:iunabbrev* -:iunmap map.jax /*:iunmap* -:iunme gui.jax /*:iunme* -:iunmenu gui.jax /*:iunmenu* -:j change.jax /*:j* -:join change.jax /*:join* -:ju motion.jax /*:ju* -:jumps motion.jax /*:jumps* -:k motion.jax /*:k* -:kee motion.jax /*:kee* -:keepa editing.jax /*:keepa* -:keepalt editing.jax /*:keepalt* -:keepj motion.jax /*:keepj* -:keepjumps motion.jax /*:keepjumps* -:keepmarks motion.jax /*:keepmarks* -:l various.jax /*:l* -:lN quickfix.jax /*:lN* -:lNext quickfix.jax /*:lNext* -:lNf quickfix.jax /*:lNf* -:lNfile quickfix.jax /*:lNfile* -:la editing.jax /*:la* -:lad quickfix.jax /*:lad* -:laddb quickfix.jax /*:laddb* -:laddbuffer quickfix.jax /*:laddbuffer* -:laddexpr quickfix.jax /*:laddexpr* -:laddf quickfix.jax /*:laddf* -:laddfile quickfix.jax /*:laddfile* -:lan mlang.jax /*:lan* -:lang mlang.jax /*:lang* -:language mlang.jax /*:language* -:last editing.jax /*:last* -:lat undo.jax /*:lat* -:later undo.jax /*:later* -:lb quickfix.jax /*:lb* -:lbuffer quickfix.jax /*:lbuffer* -:lc editing.jax /*:lc* -:lcd editing.jax /*:lcd* -:lch editing.jax /*:lch* -:lchdir editing.jax /*:lchdir* -:lcl quickfix.jax /*:lcl* -:lclose quickfix.jax /*:lclose* -:lcs if_cscop.jax /*:lcs* -:lcscope if_cscop.jax /*:lcscope* -:le change.jax /*:le* -:left change.jax /*:left* -:lefta windows.jax /*:lefta* -:leftabove windows.jax /*:leftabove* -:let eval.jax /*:let* -:let+= eval.jax /*:let+=* -:let-$ eval.jax /*:let-$* -:let-& eval.jax /*:let-&* -:let-= eval.jax /*:let-=* -:let-@ eval.jax /*:let-@* -:let-environment eval.jax /*:let-environment* -:let-option eval.jax /*:let-option* -:let-register eval.jax /*:let-register* -:let-unpack eval.jax /*:let-unpack* -:let.= eval.jax /*:let.=* -:lex quickfix.jax /*:lex* -:lexpr quickfix.jax /*:lexpr* -:lf quickfix.jax /*:lf* -:lfile quickfix.jax /*:lfile* -:lfir quickfix.jax /*:lfir* -:lfirst quickfix.jax /*:lfirst* -:lg quickfix.jax /*:lg* -:lgetb quickfix.jax /*:lgetb* -:lgetbuffer quickfix.jax /*:lgetbuffer* -:lgete quickfix.jax /*:lgete* -:lgetexpr quickfix.jax /*:lgetexpr* -:lgetfile quickfix.jax /*:lgetfile* -:lgr quickfix.jax /*:lgr* -:lgrep quickfix.jax /*:lgrep* -:lgrepa quickfix.jax /*:lgrepa* -:lgrepadd quickfix.jax /*:lgrepadd* -:lh helphelp.jax /*:lh* -:lhelpgrep helphelp.jax /*:lhelpgrep* -:list various.jax /*:list* -:ll quickfix.jax /*:ll* -:lla quickfix.jax /*:lla* -:llast quickfix.jax /*:llast* -:lli quickfix.jax /*:lli* -:llist quickfix.jax /*:llist* -:lm map.jax /*:lm* -:lmak quickfix.jax /*:lmak* -:lmake quickfix.jax /*:lmake* -:lmap map.jax /*:lmap* -:lmap_l map.jax /*:lmap_l* -:lmapc map.jax /*:lmapc* -:lmapclear map.jax /*:lmapclear* -:ln map.jax /*:ln* -:lne quickfix.jax /*:lne* -:lnew quickfix.jax /*:lnew* -:lnewer quickfix.jax /*:lnewer* -:lnext quickfix.jax /*:lnext* -:lnf quickfix.jax /*:lnf* -:lnfile quickfix.jax /*:lnfile* -:lnoremap map.jax /*:lnoremap* -:lo starting.jax /*:lo* -:loadk mbyte.jax /*:loadk* -:loadkeymap mbyte.jax /*:loadkeymap* -:loadview starting.jax /*:loadview* -:loc motion.jax /*:loc* -:lockmarks motion.jax /*:lockmarks* -:lockv eval.jax /*:lockv* -:lockvar eval.jax /*:lockvar* -:lol quickfix.jax /*:lol* -:lolder quickfix.jax /*:lolder* -:lop quickfix.jax /*:lop* -:lopen quickfix.jax /*:lopen* -:lp quickfix.jax /*:lp* -:lpf quickfix.jax /*:lpf* -:lpfile quickfix.jax /*:lpfile* -:lprevious quickfix.jax /*:lprevious* -:lr quickfix.jax /*:lr* -:lrewind quickfix.jax /*:lrewind* -:ls windows.jax /*:ls* -:lt tagsrch.jax /*:lt* -:ltag tagsrch.jax /*:ltag* -:lu map.jax /*:lu* -:lua if_lua.jax /*:lua* -:luado if_lua.jax /*:luado* -:luafile if_lua.jax /*:luafile* -:lunmap map.jax /*:lunmap* -:lv quickfix.jax /*:lv* -:lvimgrep quickfix.jax /*:lvimgrep* -:lvimgrepa quickfix.jax /*:lvimgrepa* -:lvimgrepadd quickfix.jax /*:lvimgrepadd* -:lw quickfix.jax /*:lw* -:lwindow quickfix.jax /*:lwindow* -:m change.jax /*:m* -:ma motion.jax /*:ma* -:mak quickfix.jax /*:mak* -:make quickfix.jax /*:make* -:make_makeprg quickfix.jax /*:make_makeprg* -:map map.jax /*:map* -:map! map.jax /*:map!* -:map-<buffer> map.jax /*:map-<buffer>* -:map-<expr> map.jax /*:map-<expr>* -:map-<script> map.jax /*:map-<script>* -:map-<silent> map.jax /*:map-<silent>* -:map-<special> map.jax /*:map-<special>* -:map-<unique> map.jax /*:map-<unique>* -:map-alt-keys map.jax /*:map-alt-keys* -:map-arguments map.jax /*:map-arguments* -:map-commands map.jax /*:map-commands* -:map-expression map.jax /*:map-expression* -:map-local map.jax /*:map-local* -:map-modes map.jax /*:map-modes* -:map-operator map.jax /*:map-operator* -:map-script map.jax /*:map-script* -:map-silent map.jax /*:map-silent* -:map-special map.jax /*:map-special* -:map-special-chars map.jax /*:map-special-chars* -:map-special-keys map.jax /*:map-special-keys* -:map-undo map.jax /*:map-undo* -:map-verbose map.jax /*:map-verbose* -:map_l map.jax /*:map_l* -:map_l! map.jax /*:map_l!* -:mapc map.jax /*:mapc* -:mapc! map.jax /*:mapc!* -:mapclear map.jax /*:mapclear* -:mapclear! map.jax /*:mapclear!* -:mark motion.jax /*:mark* -:marks motion.jax /*:marks* -:mat pattern.jax /*:mat* -:match pattern.jax /*:match* -:me gui.jax /*:me* -:menu gui.jax /*:menu* -:menu-<script> gui.jax /*:menu-<script>* -:menu-<silent> gui.jax /*:menu-<silent>* -:menu-<special> gui.jax /*:menu-<special>* -:menu-disable gui.jax /*:menu-disable* -:menu-enable gui.jax /*:menu-enable* -:menu-script gui.jax /*:menu-script* -:menu-silent gui.jax /*:menu-silent* -:menu-special gui.jax /*:menu-special* -:menut mlang.jax /*:menut* -:menutrans mlang.jax /*:menutrans* -:menutranslate mlang.jax /*:menutranslate* -:mes message.jax /*:mes* -:messages message.jax /*:messages* -:mk starting.jax /*:mk* -:mkexrc starting.jax /*:mkexrc* -:mks starting.jax /*:mks* -:mksession starting.jax /*:mksession* -:mkv starting.jax /*:mkv* -:mkvie starting.jax /*:mkvie* -:mkview starting.jax /*:mkview* -:mkvimrc starting.jax /*:mkvimrc* -:mo change.jax /*:mo* -:mod term.jax /*:mod* -:mode term.jax /*:mode* -:move change.jax /*:move* -:mz if_mzsch.jax /*:mz* -:mzf if_mzsch.jax /*:mzf* -:mzfile if_mzsch.jax /*:mzfile* -:mzscheme if_mzsch.jax /*:mzscheme* -:n editing.jax /*:n* -:nbclose netbeans.jax /*:nbclose* -:nbkey netbeans.jax /*:nbkey* -:nbstart netbeans.jax /*:nbstart* -:ne editing.jax /*:ne* -:new windows.jax /*:new* -:next editing.jax /*:next* -:next_f editing.jax /*:next_f* -:nm map.jax /*:nm* -:nmap map.jax /*:nmap* -:nmap_l map.jax /*:nmap_l* -:nmapc map.jax /*:nmapc* -:nmapclear map.jax /*:nmapclear* -:nme gui.jax /*:nme* -:nmenu gui.jax /*:nmenu* -:nn map.jax /*:nn* -:nnoremap map.jax /*:nnoremap* -:nnoreme gui.jax /*:nnoreme* -:nnoremenu gui.jax /*:nnoremenu* -:no map.jax /*:no* -:no! map.jax /*:no!* -:noa autocmd.jax /*:noa* -:noautocmd autocmd.jax /*:noautocmd* -:noh pattern.jax /*:noh* -:nohlsearch pattern.jax /*:nohlsearch* -:norea map.jax /*:norea* -:noreabbrev map.jax /*:noreabbrev* -:noremap map.jax /*:noremap* -:noremap! map.jax /*:noremap!* -:noreme gui.jax /*:noreme* -:noremenu gui.jax /*:noremenu* -:norm various.jax /*:norm* -:normal various.jax /*:normal* -:normal-range various.jax /*:normal-range* -:nu various.jax /*:nu* -:number various.jax /*:number* -:nun map.jax /*:nun* -:nunmap map.jax /*:nunmap* -:nunme gui.jax /*:nunme* -:nunmenu gui.jax /*:nunmenu* -:o vi_diff.jax /*:o* -:ol starting.jax /*:ol* -:oldfiles starting.jax /*:oldfiles* -:om map.jax /*:om* -:omap map.jax /*:omap* -:omap_l map.jax /*:omap_l* -:omapc map.jax /*:omapc* -:omapclear map.jax /*:omapclear* -:ome gui.jax /*:ome* -:omenu gui.jax /*:omenu* -:on windows.jax /*:on* -:only windows.jax /*:only* -:ono map.jax /*:ono* -:onoremap map.jax /*:onoremap* -:onoreme gui.jax /*:onoreme* -:onoremenu gui.jax /*:onoremenu* -:op vi_diff.jax /*:op* -:open vi_diff.jax /*:open* -:opt options.jax /*:opt* -:options options.jax /*:options* -:ou map.jax /*:ou* -:ounmap map.jax /*:ounmap* -:ounme gui.jax /*:ounme* -:ounmenu gui.jax /*:ounmenu* -:ownsyntax syntax.jax /*:ownsyntax* -:p various.jax /*:p* -:pc windows.jax /*:pc* -:pclose windows.jax /*:pclose* -:pe if_perl.jax /*:pe* -:ped windows.jax /*:ped* -:pedit windows.jax /*:pedit* -:perl if_perl.jax /*:perl* -:perld if_perl.jax /*:perld* -:perldo if_perl.jax /*:perldo* -:po tagsrch.jax /*:po* -:pop tagsrch.jax /*:pop* -:popu gui.jax /*:popu* -:popup gui.jax /*:popup* -:pp windows.jax /*:pp* -:ppop windows.jax /*:ppop* -:pr various.jax /*:pr* -:pre recover.jax /*:pre* -:preserve recover.jax /*:preserve* -:prev editing.jax /*:prev* -:previous editing.jax /*:previous* -:print various.jax /*:print* -:pro change.jax /*:pro* -:prof repeat.jax /*:prof* -:profd repeat.jax /*:profd* -:profdel repeat.jax /*:profdel* -:profile repeat.jax /*:profile* -:promptfind change.jax /*:promptfind* -:promptr change.jax /*:promptr* -:promptrepl change.jax /*:promptrepl* -:ps windows.jax /*:ps* -:psearch windows.jax /*:psearch* -:ptN tagsrch.jax /*:ptN* -:ptNext tagsrch.jax /*:ptNext* -:pta windows.jax /*:pta* -:ptag windows.jax /*:ptag* -:ptf tagsrch.jax /*:ptf* -:ptfirst tagsrch.jax /*:ptfirst* -:ptj tagsrch.jax /*:ptj* -:ptjump tagsrch.jax /*:ptjump* -:ptl tagsrch.jax /*:ptl* -:ptlast tagsrch.jax /*:ptlast* -:ptn tagsrch.jax /*:ptn* -:ptnext tagsrch.jax /*:ptnext* -:ptp tagsrch.jax /*:ptp* -:ptprevious tagsrch.jax /*:ptprevious* -:ptr tagsrch.jax /*:ptr* -:ptrewind tagsrch.jax /*:ptrewind* -:pts tagsrch.jax /*:pts* -:ptselect tagsrch.jax /*:ptselect* -:pu change.jax /*:pu* -:put change.jax /*:put* -:pw editing.jax /*:pw* -:pwd editing.jax /*:pwd* -:py if_pyth.jax /*:py* -:py3 if_pyth.jax /*:py3* -:py3file if_pyth.jax /*:py3file* -:pyf if_pyth.jax /*:pyf* -:pyfile if_pyth.jax /*:pyfile* -:python if_pyth.jax /*:python* -:python3 if_pyth.jax /*:python3* -:q editing.jax /*:q* -:qa editing.jax /*:qa* -:qall editing.jax /*:qall* -:quit editing.jax /*:quit* -:quita editing.jax /*:quita* -:quitall editing.jax /*:quitall* -:quote cmdline.jax /*:quote* -:r insert.jax /*:r* -:r! insert.jax /*:r!* -:range cmdline.jax /*:range* -:range! change.jax /*:range!* -:re insert.jax /*:re* -:read insert.jax /*:read* -:read! insert.jax /*:read!* -:rec recover.jax /*:rec* -:recover recover.jax /*:recover* -:recover-crypt recover.jax /*:recover-crypt* -:red undo.jax /*:red* -:redi various.jax /*:redi* -:redir various.jax /*:redir* -:redo undo.jax /*:redo* -:redr various.jax /*:redr* -:redraw various.jax /*:redraw* -:redraws various.jax /*:redraws* -:redrawstatus various.jax /*:redrawstatus* -:reg change.jax /*:reg* -:registers change.jax /*:registers* -:res windows.jax /*:res* -:resize windows.jax /*:resize* -:ret change.jax /*:ret* -:retab change.jax /*:retab* -:retu eval.jax /*:retu* -:return eval.jax /*:return* -:rew editing.jax /*:rew* -:rewind editing.jax /*:rewind* -:ri change.jax /*:ri* -:right change.jax /*:right* -:rightb windows.jax /*:rightb* -:rightbelow windows.jax /*:rightbelow* -:ru repeat.jax /*:ru* -:rub if_ruby.jax /*:rub* -:ruby if_ruby.jax /*:ruby* -:rubyd if_ruby.jax /*:rubyd* -:rubydo if_ruby.jax /*:rubydo* -:rubyf if_ruby.jax /*:rubyf* -:rubyfile if_ruby.jax /*:rubyfile* -:rundo undo.jax /*:rundo* -:runtime repeat.jax /*:runtime* -:rv starting.jax /*:rv* -:rviminfo starting.jax /*:rviminfo* -:s change.jax /*:s* -:s% change.jax /*:s%* -:sN windows.jax /*:sN* -:sNext windows.jax /*:sNext* -:s\= change.jax /*:s\\=* -:s_c change.jax /*:s_c* -:s_flags change.jax /*:s_flags* -:sa windows.jax /*:sa* -:sal windows.jax /*:sal* -:sall windows.jax /*:sall* -:san eval.jax /*:san* -:sandbox eval.jax /*:sandbox* -:sargument windows.jax /*:sargument* -:sav editing.jax /*:sav* -:saveas editing.jax /*:saveas* -:sb windows.jax /*:sb* -:sbN windows.jax /*:sbN* -:sbNext windows.jax /*:sbNext* -:sba windows.jax /*:sba* -:sball windows.jax /*:sball* -:sbf windows.jax /*:sbf* -:sbfirst windows.jax /*:sbfirst* -:sbl windows.jax /*:sbl* -:sblast windows.jax /*:sblast* -:sbm windows.jax /*:sbm* -:sbmodified windows.jax /*:sbmodified* -:sbn windows.jax /*:sbn* -:sbnext windows.jax /*:sbnext* -:sbp windows.jax /*:sbp* -:sbprevious windows.jax /*:sbprevious* -:sbr windows.jax /*:sbr* -:sbrewind windows.jax /*:sbrewind* -:sbuffer windows.jax /*:sbuffer* -:scrip repeat.jax /*:scrip* -:scripte repeat.jax /*:scripte* -:scriptencoding repeat.jax /*:scriptencoding* -:scriptnames repeat.jax /*:scriptnames* -:scs if_cscop.jax /*:scs* -:scscope if_cscop.jax /*:scscope* -:se options.jax /*:se* -:search-args tagsrch.jax /*:search-args* -:set options.jax /*:set* -:set+= options.jax /*:set+=* -:set-! options.jax /*:set-!* -:set-& options.jax /*:set-&* -:set-&vi options.jax /*:set-&vi* -:set-&vim options.jax /*:set-&vim* -:set-= options.jax /*:set-=* -:set-args options.jax /*:set-args* -:set-browse options.jax /*:set-browse* -:set-default options.jax /*:set-default* -:set-inv options.jax /*:set-inv* -:set-termcap options.jax /*:set-termcap* -:set-verbose options.jax /*:set-verbose* -:set^= options.jax /*:set^=* -:set_env options.jax /*:set_env* -:setf options.jax /*:setf* -:setfiletype options.jax /*:setfiletype* -:setg options.jax /*:setg* -:setglobal options.jax /*:setglobal* -:setl options.jax /*:setl* -:setlocal options.jax /*:setlocal* -:sf windows.jax /*:sf* -:sfind windows.jax /*:sfind* -:sfir windows.jax /*:sfir* -:sfirst windows.jax /*:sfirst* -:sh various.jax /*:sh* -:shell various.jax /*:shell* -:si gui_w32.jax /*:si* -:sig sign.jax /*:sig* -:sign sign.jax /*:sign* -:sign-define sign.jax /*:sign-define* -:sign-fname sign.jax /*:sign-fname* -:sign-jump sign.jax /*:sign-jump* -:sign-list sign.jax /*:sign-list* -:sign-place sign.jax /*:sign-place* -:sign-undefine sign.jax /*:sign-undefine* -:sign-unplace sign.jax /*:sign-unplace* -:sil various.jax /*:sil* -:silent various.jax /*:silent* -:simalt gui_w32.jax /*:simalt* -:sl various.jax /*:sl* -:sla windows.jax /*:sla* -:slast windows.jax /*:slast* -:sleep various.jax /*:sleep* -:sm change.jax /*:sm* -:smagic change.jax /*:smagic* -:smap map.jax /*:smap* -:smap_l map.jax /*:smap_l* -:smapc map.jax /*:smapc* -:smapclear map.jax /*:smapclear* -:sme gui.jax /*:sme* -:smenu gui.jax /*:smenu* -:sn windows.jax /*:sn* -:snext windows.jax /*:snext* -:sni if_sniff.jax /*:sni* -:sniff if_sniff.jax /*:sniff* -:sno change.jax /*:sno* -:snomagic change.jax /*:snomagic* -:snor map.jax /*:snor* -:snoremap map.jax /*:snoremap* -:snoreme gui.jax /*:snoreme* -:snoremenu gui.jax /*:snoremenu* -:so repeat.jax /*:so* -:sor change.jax /*:sor* -:sort change.jax /*:sort* -:source repeat.jax /*:source* -:source_crnl repeat.jax /*:source_crnl* -:sp windows.jax /*:sp* -:split windows.jax /*:split* -:split_f windows.jax /*:split_f* -:spr windows.jax /*:spr* -:sprevious windows.jax /*:sprevious* -:sre windows.jax /*:sre* -:srewind windows.jax /*:srewind* -:st starting.jax /*:st* -:sta windows.jax /*:sta* -:stag windows.jax /*:stag* -:star repeat.jax /*:star* -:start insert.jax /*:start* -:startgreplace insert.jax /*:startgreplace* -:startinsert insert.jax /*:startinsert* -:startreplace insert.jax /*:startreplace* -:stj tagsrch.jax /*:stj* -:stjump tagsrch.jax /*:stjump* -:stop starting.jax /*:stop* -:stopi insert.jax /*:stopi* -:stopinsert insert.jax /*:stopinsert* -:sts tagsrch.jax /*:sts* -:stselect tagsrch.jax /*:stselect* -:su change.jax /*:su* -:substitute change.jax /*:substitute* -:sun windows.jax /*:sun* -:sunhide windows.jax /*:sunhide* -:sunm map.jax /*:sunm* -:sunmap map.jax /*:sunmap* -:sunme gui.jax /*:sunme* -:sunmenu gui.jax /*:sunmenu* -:sus starting.jax /*:sus* -:suspend starting.jax /*:suspend* -:sv windows.jax /*:sv* -:sview windows.jax /*:sview* -:sw recover.jax /*:sw* -:swapname recover.jax /*:swapname* -:sy syntax.jax /*:sy* -:syn syntax.jax /*:syn* -:syn-arguments syntax.jax /*:syn-arguments* -:syn-case syntax.jax /*:syn-case* -:syn-cchar syntax.jax /*:syn-cchar* -:syn-clear syntax.jax /*:syn-clear* -:syn-cluster syntax.jax /*:syn-cluster* -:syn-conceal syntax.jax /*:syn-conceal* -:syn-conceal-implicit syntax.jax /*:syn-conceal-implicit* -:syn-concealends syntax.jax /*:syn-concealends* -:syn-contained syntax.jax /*:syn-contained* -:syn-containedin syntax.jax /*:syn-containedin* -:syn-contains syntax.jax /*:syn-contains* -:syn-context syntax.jax /*:syn-context* -:syn-default-override usr_06.jax /*:syn-default-override* -:syn-define syntax.jax /*:syn-define* -:syn-display syntax.jax /*:syn-display* -:syn-enable syntax.jax /*:syn-enable* -:syn-end syntax.jax /*:syn-end* -:syn-excludenl syntax.jax /*:syn-excludenl* -:syn-ext-match syntax.jax /*:syn-ext-match* -:syn-extend syntax.jax /*:syn-extend* -:syn-file-remarks syntax.jax /*:syn-file-remarks* -:syn-files syntax.jax /*:syn-files* -:syn-fold syntax.jax /*:syn-fold* -:syn-include syntax.jax /*:syn-include* -:syn-keepend syntax.jax /*:syn-keepend* -:syn-keyword syntax.jax /*:syn-keyword* -:syn-lc syntax.jax /*:syn-lc* -:syn-leading syntax.jax /*:syn-leading* -:syn-list syntax.jax /*:syn-list* -:syn-manual usr_06.jax /*:syn-manual* -:syn-match syntax.jax /*:syn-match* -:syn-matchgroup syntax.jax /*:syn-matchgroup* -:syn-multi-line syntax.jax /*:syn-multi-line* -:syn-nextgroup syntax.jax /*:syn-nextgroup* -:syn-off usr_06.jax /*:syn-off* -:syn-on syntax.jax /*:syn-on* -:syn-oneline syntax.jax /*:syn-oneline* -:syn-pattern syntax.jax /*:syn-pattern* -:syn-pattern-offset syntax.jax /*:syn-pattern-offset* -:syn-priority syntax.jax /*:syn-priority* -:syn-qstart syntax.jax /*:syn-qstart* -:syn-region syntax.jax /*:syn-region* -:syn-reset syntax.jax /*:syn-reset* -:syn-skip syntax.jax /*:syn-skip* -:syn-skipempty syntax.jax /*:syn-skipempty* -:syn-skipnl syntax.jax /*:syn-skipnl* -:syn-skipwhite syntax.jax /*:syn-skipwhite* -:syn-spell syntax.jax /*:syn-spell* -:syn-start syntax.jax /*:syn-start* -:syn-sync syntax.jax /*:syn-sync* -:syn-sync-ccomment syntax.jax /*:syn-sync-ccomment* -:syn-sync-first syntax.jax /*:syn-sync-first* -:syn-sync-fourth syntax.jax /*:syn-sync-fourth* -:syn-sync-linebreaks syntax.jax /*:syn-sync-linebreaks* -:syn-sync-maxlines syntax.jax /*:syn-sync-maxlines* -:syn-sync-minlines syntax.jax /*:syn-sync-minlines* -:syn-sync-second syntax.jax /*:syn-sync-second* -:syn-sync-third syntax.jax /*:syn-sync-third* -:syn-transparent syntax.jax /*:syn-transparent* -:sync scroll.jax /*:sync* -:syncbind scroll.jax /*:syncbind* -:syntax syntax.jax /*:syntax* -:syntax-enable syntax.jax /*:syntax-enable* -:syntax-on syntax.jax /*:syntax-on* -:syntax-reset syntax.jax /*:syntax-reset* -:t change.jax /*:t* -:tN tagsrch.jax /*:tN* -:tNext tagsrch.jax /*:tNext* -:ta tagsrch.jax /*:ta* -:tab tabpage.jax /*:tab* -:tabN tabpage.jax /*:tabN* -:tabNext tabpage.jax /*:tabNext* -:tabc tabpage.jax /*:tabc* -:tabclose tabpage.jax /*:tabclose* -:tabd tabpage.jax /*:tabd* -:tabdo tabpage.jax /*:tabdo* -:tabe tabpage.jax /*:tabe* -:tabedit tabpage.jax /*:tabedit* -:tabf tabpage.jax /*:tabf* -:tabfind tabpage.jax /*:tabfind* -:tabfir tabpage.jax /*:tabfir* -:tabfirst tabpage.jax /*:tabfirst* -:tabl tabpage.jax /*:tabl* -:tablast tabpage.jax /*:tablast* -:tabm tabpage.jax /*:tabm* -:tabmove tabpage.jax /*:tabmove* -:tabn tabpage.jax /*:tabn* -:tabnew tabpage.jax /*:tabnew* -:tabnext tabpage.jax /*:tabnext* -:tabo tabpage.jax /*:tabo* -:tabonly tabpage.jax /*:tabonly* -:tabp tabpage.jax /*:tabp* -:tabprevious tabpage.jax /*:tabprevious* -:tabr tabpage.jax /*:tabr* -:tabrewind tabpage.jax /*:tabrewind* -:tabs tabpage.jax /*:tabs* -:tag tagsrch.jax /*:tag* -:tags tagsrch.jax /*:tags* -:tc if_tcl.jax /*:tc* -:tcl if_tcl.jax /*:tcl* -:tcld if_tcl.jax /*:tcld* -:tcldo if_tcl.jax /*:tcldo* -:tclf if_tcl.jax /*:tclf* -:tclfile if_tcl.jax /*:tclfile* -:te gui_w32.jax /*:te* -:tearoff gui_w32.jax /*:tearoff* -:tf tagsrch.jax /*:tf* -:tfirst tagsrch.jax /*:tfirst* -:th eval.jax /*:th* -:throw eval.jax /*:throw* -:tj tagsrch.jax /*:tj* -:tjump tagsrch.jax /*:tjump* -:tl tagsrch.jax /*:tl* -:tlast tagsrch.jax /*:tlast* -:tm gui.jax /*:tm* -:tmenu gui.jax /*:tmenu* -:tn tagsrch.jax /*:tn* -:tnext tagsrch.jax /*:tnext* -:topleft windows.jax /*:topleft* -:tp tagsrch.jax /*:tp* -:tprevious tagsrch.jax /*:tprevious* -:tr tagsrch.jax /*:tr* -:trewind tagsrch.jax /*:trewind* -:try eval.jax /*:try* -:ts tagsrch.jax /*:ts* -:tselect tagsrch.jax /*:tselect* -:tu gui.jax /*:tu* -:tunmenu gui.jax /*:tunmenu* -:u undo.jax /*:u* -:un undo.jax /*:un* -:una map.jax /*:una* -:unabbreviate map.jax /*:unabbreviate* -:undo undo.jax /*:undo* -:undoj undo.jax /*:undoj* -:undojoin undo.jax /*:undojoin* -:undol undo.jax /*:undol* -:undolist undo.jax /*:undolist* -:unh windows.jax /*:unh* -:unhide windows.jax /*:unhide* -:unl eval.jax /*:unl* -:unlet eval.jax /*:unlet* -:unlo eval.jax /*:unlo* -:unlockvar eval.jax /*:unlockvar* -:unm map.jax /*:unm* -:unm! map.jax /*:unm!* -:unmap map.jax /*:unmap* -:unmap! map.jax /*:unmap!* -:unme gui.jax /*:unme* -:unmenu gui.jax /*:unmenu* -:unmenu-all gui.jax /*:unmenu-all* -:uns various.jax /*:uns* -:unsilent various.jax /*:unsilent* -:up editing.jax /*:up* -:update editing.jax /*:update* -:v repeat.jax /*:v* -:ve various.jax /*:ve* -:verb various.jax /*:verb* -:verbose various.jax /*:verbose* -:verbose-cmd various.jax /*:verbose-cmd* -:version various.jax /*:version* -:vert windows.jax /*:vert* -:vertical windows.jax /*:vertical* -:vertical-resize windows.jax /*:vertical-resize* -:vglobal repeat.jax /*:vglobal* -:vi editing.jax /*:vi* -:vie editing.jax /*:vie* -:view editing.jax /*:view* -:vim quickfix.jax /*:vim* -:vimgrep quickfix.jax /*:vimgrep* -:vimgrepa quickfix.jax /*:vimgrepa* -:vimgrepadd quickfix.jax /*:vimgrepadd* -:visual editing.jax /*:visual* -:visual_example visual.jax /*:visual_example* -:viu helphelp.jax /*:viu* -:viusage helphelp.jax /*:viusage* -:vm map.jax /*:vm* -:vmap map.jax /*:vmap* -:vmap_l map.jax /*:vmap_l* -:vmapc map.jax /*:vmapc* -:vmapclear map.jax /*:vmapclear* -:vme gui.jax /*:vme* -:vmenu gui.jax /*:vmenu* -:vn map.jax /*:vn* -:vne windows.jax /*:vne* -:vnew windows.jax /*:vnew* -:vnoremap map.jax /*:vnoremap* -:vnoreme gui.jax /*:vnoreme* -:vnoremenu gui.jax /*:vnoremenu* -:vs windows.jax /*:vs* -:vsplit windows.jax /*:vsplit* -:vu map.jax /*:vu* -:vunmap map.jax /*:vunmap* -:vunme gui.jax /*:vunme* -:vunmenu gui.jax /*:vunmenu* -:w editing.jax /*:w* -:w! editing.jax /*:w!* -:wN editing.jax /*:wN* -:wNext editing.jax /*:wNext* -:w_a editing.jax /*:w_a* -:w_c editing.jax /*:w_c* -:w_f editing.jax /*:w_f* -:wa editing.jax /*:wa* -:wall editing.jax /*:wall* -:wh eval.jax /*:wh* -:while eval.jax /*:while* -:win gui.jax /*:win* -:winc windows.jax /*:winc* -:wincmd windows.jax /*:wincmd* -:windo windows.jax /*:windo* -:winp gui.jax /*:winp* -:winpos gui.jax /*:winpos* -:winsize gui.jax /*:winsize* -:wn editing.jax /*:wn* -:wnext editing.jax /*:wnext* -:wp editing.jax /*:wp* -:wprevious editing.jax /*:wprevious* -:wq editing.jax /*:wq* -:wqa editing.jax /*:wqa* -:wqall editing.jax /*:wqall* -:write editing.jax /*:write* -:write_a editing.jax /*:write_a* -:write_c editing.jax /*:write_c* -:write_f editing.jax /*:write_f* -:ws workshop.jax /*:ws* -:wsverb workshop.jax /*:wsverb* -:wundo undo.jax /*:wundo* -:wv starting.jax /*:wv* -:wviminfo starting.jax /*:wviminfo* -:x editing.jax /*:x* -:xa editing.jax /*:xa* -:xall editing.jax /*:xall* -:xit editing.jax /*:xit* -:xm map.jax /*:xm* -:xmap map.jax /*:xmap* -:xmap_l map.jax /*:xmap_l* -:xmapc map.jax /*:xmapc* -:xmapclear map.jax /*:xmapclear* -:xme gui.jax /*:xme* -:xmenu gui.jax /*:xmenu* -:xn map.jax /*:xn* -:xnoremap map.jax /*:xnoremap* -:xnoreme gui.jax /*:xnoreme* -:xnoremenu gui.jax /*:xnoremenu* -:xu map.jax /*:xu* -:xunmap map.jax /*:xunmap* -:xunme gui.jax /*:xunme* -:xunmenu gui.jax /*:xunmenu* -:y change.jax /*:y* -:yank change.jax /*:yank* -:z various.jax /*:z* -:z# various.jax /*:z#* -:~ change.jax /*:~* -; motion.jax /*;* -< change.jax /*<* -<2-LeftMouse> term.jax /*<2-LeftMouse>* -<3-LeftMouse> term.jax /*<3-LeftMouse>* -<4-LeftMouse> term.jax /*<4-LeftMouse>* -<< change.jax /*<<* -<> intro.jax /*<>* -<A- intro.jax /*<A-* -<A-LeftMouse> term.jax /*<A-LeftMouse>* -<A-RightMouse> term.jax /*<A-RightMouse>* -<BS> motion.jax /*<BS>* -<Bar> intro.jax /*<Bar>* -<Bslash> intro.jax /*<Bslash>* -<C- intro.jax /*<C-* -<C-Del> os_dos.jax /*<C-Del>* -<C-End> motion.jax /*<C-End>* -<C-Home> motion.jax /*<C-Home>* -<C-Insert> os_dos.jax /*<C-Insert>* -<C-Left> motion.jax /*<C-Left>* -<C-LeftMouse> tagsrch.jax /*<C-LeftMouse>* -<C-PageDown> tabpage.jax /*<C-PageDown>* -<C-PageUp> tabpage.jax /*<C-PageUp>* -<C-Right> motion.jax /*<C-Right>* -<C-RightMouse> tagsrch.jax /*<C-RightMouse>* -<C-ScrollWheelDown> scroll.jax /*<C-ScrollWheelDown>* -<C-ScrollWheelLeft> scroll.jax /*<C-ScrollWheelLeft>* -<C-ScrollWheelRight> scroll.jax /*<C-ScrollWheelRight>* -<C-ScrollWheelUp> scroll.jax /*<C-ScrollWheelUp>* -<CR> motion.jax /*<CR>* -<CSI> intro.jax /*<CSI>* -<Char-> map.jax /*<Char->* -<Char> map.jax /*<Char>* -<D- intro.jax /*<D-* -<Del> change.jax /*<Del>* -<Down> motion.jax /*<Down>* -<Drop> change.jax /*<Drop>* -<EOL> intro.jax /*<EOL>* -<End> motion.jax /*<End>* -<Enter> intro.jax /*<Enter>* -<Esc> intro.jax /*<Esc>* -<F10> term.jax /*<F10>* -<F11> term.jax /*<F11>* -<F12> term.jax /*<F12>* -<F13> term.jax /*<F13>* -<F14> term.jax /*<F14>* -<F15> term.jax /*<F15>* -<F16> term.jax /*<F16>* -<F17> term.jax /*<F17>* -<F18> term.jax /*<F18>* -<F19> term.jax /*<F19>* -<F1> helphelp.jax /*<F1>* -<F2> term.jax /*<F2>* -<F3> term.jax /*<F3>* -<F4> term.jax /*<F4>* -<F5> term.jax /*<F5>* -<F6> term.jax /*<F6>* -<F7> term.jax /*<F7>* -<F8> term.jax /*<F8>* -<F9> term.jax /*<F9>* -<Help> helphelp.jax /*<Help>* -<Home> motion.jax /*<Home>* -<Insert> insert.jax /*<Insert>* -<Leader> map.jax /*<Leader>* -<Left> motion.jax /*<Left>* -<LeftDrag> term.jax /*<LeftDrag>* -<LeftMouse> visual.jax /*<LeftMouse>* -<LeftRelease> visual.jax /*<LeftRelease>* -<LocalLeader> map.jax /*<LocalLeader>* -<M- intro.jax /*<M-* -<MiddleDrag> term.jax /*<MiddleDrag>* -<MiddleMouse> change.jax /*<MiddleMouse>* -<MiddleRelease> term.jax /*<MiddleRelease>* -<Mouse> term.jax /*<Mouse>* -<MouseDown> scroll.jax /*<MouseDown>* -<MouseUp> scroll.jax /*<MouseUp>* -<NL> motion.jax /*<NL>* -<Nop> map.jax /*<Nop>* -<Nul> intro.jax /*<Nul>* -<PageDown> scroll.jax /*<PageDown>* -<PageUp> scroll.jax /*<PageUp>* -<Plug> map.jax /*<Plug>* -<Return> intro.jax /*<Return>* -<Right> motion.jax /*<Right>* -<RightDrag> term.jax /*<RightDrag>* -<RightMouse> visual.jax /*<RightMouse>* -<RightRelease> term.jax /*<RightRelease>* -<S- intro.jax /*<S-* -<S-Del> os_dos.jax /*<S-Del>* -<S-Down> scroll.jax /*<S-Down>* -<S-End> term.jax /*<S-End>* -<S-F10> term.jax /*<S-F10>* -<S-F11> term.jax /*<S-F11>* -<S-F12> term.jax /*<S-F12>* -<S-F1> intro.jax /*<S-F1>* -<S-F2> term.jax /*<S-F2>* -<S-F3> term.jax /*<S-F3>* -<S-F4> term.jax /*<S-F4>* -<S-F5> term.jax /*<S-F5>* -<S-F6> term.jax /*<S-F6>* -<S-F7> term.jax /*<S-F7>* -<S-F8> term.jax /*<S-F8>* -<S-F9> term.jax /*<S-F9>* -<S-Home> term.jax /*<S-Home>* -<S-Insert> os_dos.jax /*<S-Insert>* -<S-Left> motion.jax /*<S-Left>* -<S-LeftMouse> term.jax /*<S-LeftMouse>* -<S-Right> motion.jax /*<S-Right>* -<S-RightMouse> term.jax /*<S-RightMouse>* -<S-ScrollWheelDown> scroll.jax /*<S-ScrollWheelDown>* -<S-ScrollWheelLeft> scroll.jax /*<S-ScrollWheelLeft>* -<S-ScrollWheelRight> scroll.jax /*<S-ScrollWheelRight>* -<S-ScrollWheelUp> scroll.jax /*<S-ScrollWheelUp>* -<S-Tab> term.jax /*<S-Tab>* -<S-Up> scroll.jax /*<S-Up>* -<S-xF1> term.jax /*<S-xF1>* -<S-xF2> term.jax /*<S-xF2>* -<S-xF3> term.jax /*<S-xF3>* -<S-xF4> term.jax /*<S-xF4>* -<SID> map.jax /*<SID>* -<SNR> map.jax /*<SNR>* -<ScrollWheelDown> scroll.jax /*<ScrollWheelDown>* -<ScrollWheelLeft> scroll.jax /*<ScrollWheelLeft>* -<ScrollWheelRight> scroll.jax /*<ScrollWheelRight>* -<ScrollWheelUp> scroll.jax /*<ScrollWheelUp>* -<Space> motion.jax /*<Space>* -<Tab> motion.jax /*<Tab>* -<Undo> undo.jax /*<Undo>* -<Up> motion.jax /*<Up>* -<abuf> cmdline.jax /*<abuf>* -<afile> cmdline.jax /*<afile>* -<amatch> cmdline.jax /*<amatch>* -<args> map.jax /*<args>* -<bang> map.jax /*<bang>* -<buffer=N> autocmd.jax /*<buffer=N>* -<buffer=abuf> autocmd.jax /*<buffer=abuf>* -<cfile> cmdline.jax /*<cfile>* -<character> intro.jax /*<character>* -<count> map.jax /*<count>* -<f-args> map.jax /*<f-args>* -<k0> term.jax /*<k0>* -<k1> term.jax /*<k1>* -<k2> term.jax /*<k2>* -<k3> term.jax /*<k3>* -<k4> term.jax /*<k4>* -<k5> term.jax /*<k5>* -<k6> term.jax /*<k6>* -<k7> term.jax /*<k7>* -<k8> term.jax /*<k8>* -<k9> term.jax /*<k9>* -<kDivide> term.jax /*<kDivide>* -<kEnd> motion.jax /*<kEnd>* -<kEnter> term.jax /*<kEnter>* -<kHome> motion.jax /*<kHome>* -<kMinus> term.jax /*<kMinus>* -<kMultiply> term.jax /*<kMultiply>* -<kPageDown> scroll.jax /*<kPageDown>* -<kPageUp> scroll.jax /*<kPageUp>* -<kPlus> term.jax /*<kPlus>* -<kPoint> term.jax /*<kPoint>* -<line1> map.jax /*<line1>* -<line2> map.jax /*<line2>* -<lt> intro.jax /*<lt>* -<q-args> map.jax /*<q-args>* -<reg> map.jax /*<reg>* -<register> map.jax /*<register>* -<sfile> cmdline.jax /*<sfile>* -<slnum> cmdline.jax /*<slnum>* -<xCSI> intro.jax /*<xCSI>* -<xDown> term.jax /*<xDown>* -<xEnd> term.jax /*<xEnd>* -<xEnd>-xterm term.jax /*<xEnd>-xterm* -<xF1> term.jax /*<xF1>* -<xF1>-xterm term.jax /*<xF1>-xterm* -<xF2> term.jax /*<xF2>* -<xF2>-xterm term.jax /*<xF2>-xterm* -<xF3> term.jax /*<xF3>* -<xF3>-xterm term.jax /*<xF3>-xterm* -<xF4> term.jax /*<xF4>* -<xF4>-xterm term.jax /*<xF4>-xterm* -<xHome> term.jax /*<xHome>* -<xHome>-xterm term.jax /*<xHome>-xterm* -<xLeft> term.jax /*<xLeft>* -<xRight> term.jax /*<xRight>* -<xUp> term.jax /*<xUp>* -= change.jax /*=* -== change.jax /*==* -> change.jax /*>* ->> change.jax /*>>* ->cont repeat.jax /*>cont* ->finish repeat.jax /*>finish* ->interrupt repeat.jax /*>interrupt* ->next repeat.jax /*>next* ->quit repeat.jax /*>quit* ->step repeat.jax /*>step* -? pattern.jax /*?* -?<CR> pattern.jax /*?<CR>* -@ repeat.jax /*@* -@/ change.jax /*@\/* -@: repeat.jax /*@:* -@= change.jax /*@=* -@@ repeat.jax /*@@* -@r eval.jax /*@r* -A insert.jax /*A* -ACL editing.jax /*ACL* -ATTENTION usr_11.jax /*ATTENTION* -Abbreviations map.jax /*Abbreviations* -Aleph options.jax /*Aleph* -Amiga os_amiga.jax /*Amiga* -Arabic arabic.jax /*Arabic* -Atari os_mint.jax /*Atari* -Athena gui_x11.jax /*Athena* -B motion.jax /*B* -BeBox os_beos.jax /*BeBox* -BeOS os_beos.jax /*BeOS* -Bram intro.jax /*Bram* -BufAdd autocmd.jax /*BufAdd* -BufCreate autocmd.jax /*BufCreate* -BufDelete autocmd.jax /*BufDelete* -BufEnter autocmd.jax /*BufEnter* -BufFilePost autocmd.jax /*BufFilePost* -BufFilePre autocmd.jax /*BufFilePre* -BufHidden autocmd.jax /*BufHidden* -BufLeave autocmd.jax /*BufLeave* -BufNew autocmd.jax /*BufNew* -BufNewFile autocmd.jax /*BufNewFile* -BufRead autocmd.jax /*BufRead* -BufReadCmd autocmd.jax /*BufReadCmd* -BufReadPost autocmd.jax /*BufReadPost* -BufReadPre autocmd.jax /*BufReadPre* -BufUnload autocmd.jax /*BufUnload* -BufWinEnter autocmd.jax /*BufWinEnter* -BufWinLeave autocmd.jax /*BufWinLeave* -BufWipeout autocmd.jax /*BufWipeout* -BufWrite autocmd.jax /*BufWrite* -BufWriteCmd autocmd.jax /*BufWriteCmd* -BufWritePost autocmd.jax /*BufWritePost* -BufWritePre autocmd.jax /*BufWritePre* -C change.jax /*C* -C-editing tips.jax /*C-editing* -C-indenting indent.jax /*C-indenting* -COMSPEC starting.jax /*COMSPEC* -CR-used-for-NL pattern.jax /*CR-used-for-NL* -CTRL-6 editing.jax /*CTRL-6* -CTRL-<PageDown> tabpage.jax /*CTRL-<PageDown>* -CTRL-<PageUp> tabpage.jax /*CTRL-<PageUp>* -CTRL-A change.jax /*CTRL-A* -CTRL-B scroll.jax /*CTRL-B* -CTRL-C pattern.jax /*CTRL-C* -CTRL-D scroll.jax /*CTRL-D* -CTRL-E scroll.jax /*CTRL-E* -CTRL-F scroll.jax /*CTRL-F* -CTRL-G editing.jax /*CTRL-G* -CTRL-H motion.jax /*CTRL-H* -CTRL-I motion.jax /*CTRL-I* -CTRL-J motion.jax /*CTRL-J* -CTRL-L various.jax /*CTRL-L* -CTRL-M motion.jax /*CTRL-M* -CTRL-N motion.jax /*CTRL-N* -CTRL-O motion.jax /*CTRL-O* -CTRL-P motion.jax /*CTRL-P* -CTRL-Q gui_w32.jax /*CTRL-Q* -CTRL-R undo.jax /*CTRL-R* -CTRL-T tagsrch.jax /*CTRL-T* -CTRL-U scroll.jax /*CTRL-U* -CTRL-V visual.jax /*CTRL-V* -CTRL-V-alternative gui_w32.jax /*CTRL-V-alternative* -CTRL-W index.jax /*CTRL-W* -CTRL-W_+ windows.jax /*CTRL-W_+* -CTRL-W_- windows.jax /*CTRL-W_-* -CTRL-W_< windows.jax /*CTRL-W_<* -CTRL-W_<BS> windows.jax /*CTRL-W_<BS>* -CTRL-W_<CR> quickfix.jax /*CTRL-W_<CR>* -CTRL-W_<Down> windows.jax /*CTRL-W_<Down>* -CTRL-W_<Enter> quickfix.jax /*CTRL-W_<Enter>* -CTRL-W_<Left> windows.jax /*CTRL-W_<Left>* -CTRL-W_<Right> windows.jax /*CTRL-W_<Right>* -CTRL-W_<Up> windows.jax /*CTRL-W_<Up>* -CTRL-W_= windows.jax /*CTRL-W_=* -CTRL-W_> windows.jax /*CTRL-W_>* -CTRL-W_CTRL-B windows.jax /*CTRL-W_CTRL-B* -CTRL-W_CTRL-C windows.jax /*CTRL-W_CTRL-C* -CTRL-W_CTRL-D tagsrch.jax /*CTRL-W_CTRL-D* -CTRL-W_CTRL-F windows.jax /*CTRL-W_CTRL-F* -CTRL-W_CTRL-H windows.jax /*CTRL-W_CTRL-H* -CTRL-W_CTRL-I tagsrch.jax /*CTRL-W_CTRL-I* -CTRL-W_CTRL-J windows.jax /*CTRL-W_CTRL-J* -CTRL-W_CTRL-K windows.jax /*CTRL-W_CTRL-K* -CTRL-W_CTRL-L windows.jax /*CTRL-W_CTRL-L* -CTRL-W_CTRL-N windows.jax /*CTRL-W_CTRL-N* -CTRL-W_CTRL-O windows.jax /*CTRL-W_CTRL-O* -CTRL-W_CTRL-P windows.jax /*CTRL-W_CTRL-P* -CTRL-W_CTRL-Q windows.jax /*CTRL-W_CTRL-Q* -CTRL-W_CTRL-R windows.jax /*CTRL-W_CTRL-R* -CTRL-W_CTRL-S windows.jax /*CTRL-W_CTRL-S* -CTRL-W_CTRL-T windows.jax /*CTRL-W_CTRL-T* -CTRL-W_CTRL-V windows.jax /*CTRL-W_CTRL-V* -CTRL-W_CTRL-W windows.jax /*CTRL-W_CTRL-W* -CTRL-W_CTRL-X windows.jax /*CTRL-W_CTRL-X* -CTRL-W_CTRL-Z windows.jax /*CTRL-W_CTRL-Z* -CTRL-W_CTRL-] windows.jax /*CTRL-W_CTRL-]* -CTRL-W_CTRL-^ windows.jax /*CTRL-W_CTRL-^* -CTRL-W_CTRL-_ windows.jax /*CTRL-W_CTRL-_* -CTRL-W_F windows.jax /*CTRL-W_F* -CTRL-W_H windows.jax /*CTRL-W_H* -CTRL-W_J windows.jax /*CTRL-W_J* -CTRL-W_K windows.jax /*CTRL-W_K* -CTRL-W_L windows.jax /*CTRL-W_L* -CTRL-W_P windows.jax /*CTRL-W_P* -CTRL-W_R windows.jax /*CTRL-W_R* -CTRL-W_S windows.jax /*CTRL-W_S* -CTRL-W_T windows.jax /*CTRL-W_T* -CTRL-W_W windows.jax /*CTRL-W_W* -CTRL-W_] windows.jax /*CTRL-W_]* -CTRL-W_^ windows.jax /*CTRL-W_^* -CTRL-W__ windows.jax /*CTRL-W__* -CTRL-W_b windows.jax /*CTRL-W_b* -CTRL-W_bar windows.jax /*CTRL-W_bar* -CTRL-W_c windows.jax /*CTRL-W_c* -CTRL-W_d tagsrch.jax /*CTRL-W_d* -CTRL-W_f windows.jax /*CTRL-W_f* -CTRL-W_gF windows.jax /*CTRL-W_gF* -CTRL-W_g] windows.jax /*CTRL-W_g]* -CTRL-W_g_CTRL-] windows.jax /*CTRL-W_g_CTRL-]* -CTRL-W_gf windows.jax /*CTRL-W_gf* -CTRL-W_g} windows.jax /*CTRL-W_g}* -CTRL-W_h windows.jax /*CTRL-W_h* -CTRL-W_i tagsrch.jax /*CTRL-W_i* -CTRL-W_j windows.jax /*CTRL-W_j* -CTRL-W_k windows.jax /*CTRL-W_k* -CTRL-W_l windows.jax /*CTRL-W_l* -CTRL-W_n windows.jax /*CTRL-W_n* -CTRL-W_o windows.jax /*CTRL-W_o* -CTRL-W_p windows.jax /*CTRL-W_p* -CTRL-W_q windows.jax /*CTRL-W_q* -CTRL-W_r windows.jax /*CTRL-W_r* -CTRL-W_s windows.jax /*CTRL-W_s* -CTRL-W_t windows.jax /*CTRL-W_t* -CTRL-W_v windows.jax /*CTRL-W_v* -CTRL-W_w windows.jax /*CTRL-W_w* -CTRL-W_x windows.jax /*CTRL-W_x* -CTRL-W_z windows.jax /*CTRL-W_z* -CTRL-W_} windows.jax /*CTRL-W_}* -CTRL-X change.jax /*CTRL-X* -CTRL-Y scroll.jax /*CTRL-Y* -CTRL-Z starting.jax /*CTRL-Z* -CTRL-\_CTRL-G intro.jax /*CTRL-\\_CTRL-G* -CTRL-\_CTRL-N intro.jax /*CTRL-\\_CTRL-N* -CTRL-] tagsrch.jax /*CTRL-]* -CTRL-^ editing.jax /*CTRL-^* -CTRL-{char} intro.jax /*CTRL-{char}* -Chinese mbyte.jax /*Chinese* -Cmd-event autocmd.jax /*Cmd-event* -Cmdline cmdline.jax /*Cmdline* -Cmdline-mode cmdline.jax /*Cmdline-mode* -CmdwinEnter autocmd.jax /*CmdwinEnter* -CmdwinLeave autocmd.jax /*CmdwinLeave* -ColorScheme autocmd.jax /*ColorScheme* -Command-line cmdline.jax /*Command-line* -Command-line-mode cmdline.jax /*Command-line-mode* -Contents quickref.jax /*Contents* -Cscope if_cscop.jax /*Cscope* -CursorHold autocmd.jax /*CursorHold* -CursorHold-example windows.jax /*CursorHold-example* -CursorHoldI autocmd.jax /*CursorHoldI* -CursorIM mbyte.jax /*CursorIM* -CursorMoved autocmd.jax /*CursorMoved* -CursorMovedI autocmd.jax /*CursorMovedI* -D change.jax /*D* -DOS os_dos.jax /*DOS* -DOS-format editing.jax /*DOS-format* -DOS-format-write editing.jax /*DOS-format-write* -DPMI os_msdos.jax /*DPMI* -Dictionaries eval.jax /*Dictionaries* -Dictionary eval.jax /*Dictionary* -Dictionary-function eval.jax /*Dictionary-function* -Digraphs digraph.jax /*Digraphs* -E motion.jax /*E* -E10 message.jax /*E10* -E100 diff.jax /*E100* -E101 diff.jax /*E101* -E102 diff.jax /*E102* -E103 diff.jax /*E103* -E104 digraph.jax /*E104* -E105 mbyte.jax /*E105* -E107 eval.jax /*E107* -E108 eval.jax /*E108* -E109 eval.jax /*E109* -E11 cmdline.jax /*E11* -E110 eval.jax /*E110* -E111 eval.jax /*E111* -E112 eval.jax /*E112* -E113 eval.jax /*E113* -E114 eval.jax /*E114* -E115 eval.jax /*E115* -E116 eval.jax /*E116* -E117 eval.jax /*E117* -E118 eval.jax /*E118* -E119 eval.jax /*E119* -E12 message.jax /*E12* -E120 eval.jax /*E120* -E121 eval.jax /*E121* -E122 eval.jax /*E122* -E123 eval.jax /*E123* -E124 eval.jax /*E124* -E125 eval.jax /*E125* -E126 eval.jax /*E126* -E127 eval.jax /*E127* -E128 eval.jax /*E128* -E129 eval.jax /*E129* -E13 message.jax /*E13* -E130 eval.jax /*E130* -E131 eval.jax /*E131* -E132 eval.jax /*E132* -E133 eval.jax /*E133* -E134 change.jax /*E134* -E135 autocmd.jax /*E135* -E136 starting.jax /*E136* -E137 starting.jax /*E137* -E138 starting.jax /*E138* -E139 message.jax /*E139* -E14 cmdline.jax /*E14* -E140 message.jax /*E140* -E141 message.jax /*E141* -E142 message.jax /*E142* -E143 autocmd.jax /*E143* -E144 various.jax /*E144* -E146 change.jax /*E146* -E147 repeat.jax /*E147* -E148 repeat.jax /*E148* -E149 helphelp.jax /*E149* -E15 eval.jax /*E15* -E150 helphelp.jax /*E150* -E151 helphelp.jax /*E151* -E152 helphelp.jax /*E152* -E153 helphelp.jax /*E153* -E154 helphelp.jax /*E154* -E155 sign.jax /*E155* -E156 sign.jax /*E156* -E157 sign.jax /*E157* -E158 sign.jax /*E158* -E159 sign.jax /*E159* -E16 cmdline.jax /*E16* -E160 sign.jax /*E160* -E161 repeat.jax /*E161* -E162 message.jax /*E162* -E163 editing.jax /*E163* -E164 editing.jax /*E164* -E165 editing.jax /*E165* -E166 message.jax /*E166* -E167 repeat.jax /*E167* -E168 repeat.jax /*E168* -E169 message.jax /*E169* -E17 message.jax /*E17* -E170 eval.jax /*E170* -E172 message.jax /*E172* -E173 message.jax /*E173* -E174 map.jax /*E174* -E175 map.jax /*E175* -E176 map.jax /*E176* -E177 map.jax /*E177* -E178 map.jax /*E178* -E179 map.jax /*E179* -E180 map.jax /*E180* -E181 map.jax /*E181* -E182 map.jax /*E182* -E183 map.jax /*E183* -E184 map.jax /*E184* -E185 syntax.jax /*E185* -E186 editing.jax /*E186* -E187 editing.jax /*E187* -E188 gui.jax /*E188* -E189 message.jax /*E189* -E19 message.jax /*E19* -E190 message.jax /*E190* -E191 motion.jax /*E191* -E192 message.jax /*E192* -E193 eval.jax /*E193* -E194 message.jax /*E194* -E195 starting.jax /*E195* -E197 mlang.jax /*E197* -E198 options.jax /*E198* -E199 cmdline.jax /*E199* -E20 motion.jax /*E20* -E200 autocmd.jax /*E200* -E201 autocmd.jax /*E201* -E202 options.jax /*E202* -E203 autocmd.jax /*E203* -E204 autocmd.jax /*E204* -E206 options.jax /*E206* -E207 editing.jax /*E207* -E208 message.jax /*E208* -E209 message.jax /*E209* -E21 options.jax /*E21* -E210 message.jax /*E210* -E211 message.jax /*E211* -E212 message.jax /*E212* -E213 options.jax /*E213* -E214 options.jax /*E214* -E215 autocmd.jax /*E215* -E216 autocmd.jax /*E216* -E217 autocmd.jax /*E217* -E218 autocmd.jax /*E218* -E219 message.jax /*E219* -E22 message.jax /*E22* -E220 message.jax /*E220* -E222 message.jax /*E222* -E223 options.jax /*E223* -E224 map.jax /*E224* -E225 map.jax /*E225* -E226 map.jax /*E226* -E227 map.jax /*E227* -E228 message.jax /*E228* -E229 gui.jax /*E229* -E23 message.jax /*E23* -E230 starting.jax /*E230* -E231 options.jax /*E231* -E232 message.jax /*E232* -E233 gui.jax /*E233* -E234 options.jax /*E234* -E235 options.jax /*E235* -E236 options.jax /*E236* -E237 print.jax /*E237* -E238 print.jax /*E238* -E239 sign.jax /*E239* -E24 message.jax /*E24* -E240 remote.jax /*E240* -E241 eval.jax /*E241* -E243 if_ole.jax /*E243* -E244 options.jax /*E244* -E245 options.jax /*E245* -E246 autocmd.jax /*E246* -E247 remote.jax /*E247* -E248 remote.jax /*E248* -E25 message.jax /*E25* -E250 options.jax /*E250* -E251 remote.jax /*E251* -E252 options.jax /*E252* -E253 mbyte.jax /*E253* -E254 message.jax /*E254* -E255 sign.jax /*E255* -E256 message.jax /*E256* -E257 if_cscop.jax /*E257* -E258 remote.jax /*E258* -E259 if_cscop.jax /*E259* -E26 rileft.jax /*E26* -E261 if_cscop.jax /*E261* -E262 if_cscop.jax /*E262* -E265 if_ruby.jax /*E265* -E266 if_ruby.jax /*E266* -E267 if_ruby.jax /*E267* -E268 if_ruby.jax /*E268* -E269 if_ruby.jax /*E269* -E27 farsi.jax /*E27* -E270 if_ruby.jax /*E270* -E271 if_ruby.jax /*E271* -E272 if_ruby.jax /*E272* -E273 if_ruby.jax /*E273* -E274 if_sniff.jax /*E274* -E275 if_sniff.jax /*E275* -E276 if_sniff.jax /*E276* -E277 remote.jax /*E277* -E278 if_sniff.jax /*E278* -E279 if_sniff.jax /*E279* -E28 syntax.jax /*E28* -E280 if_tcl.jax /*E280* -E281 if_tcl.jax /*E281* -E282 starting.jax /*E282* -E283 motion.jax /*E283* -E284 mbyte.jax /*E284* -E285 mbyte.jax /*E285* -E286 mbyte.jax /*E286* -E287 mbyte.jax /*E287* -E288 mbyte.jax /*E288* -E289 mbyte.jax /*E289* -E29 change.jax /*E29* -E290 mbyte.jax /*E290* -E291 mbyte.jax /*E291* -E292 mbyte.jax /*E292* -E293 message.jax /*E293* -E294 message.jax /*E294* -E295 message.jax /*E295* -E296 message.jax /*E296* -E297 message.jax /*E297* -E298 message.jax /*E298* -E299 if_perl.jax /*E299* -E30 change.jax /*E30* -E300 message.jax /*E300* -E301 message.jax /*E301* -E302 message.jax /*E302* -E303 message.jax /*E303* -E304 message.jax /*E304* -E309 recover.jax /*E309* -E31 message.jax /*E31* -E310 recover.jax /*E310* -E312 recover.jax /*E312* -E315 message.jax /*E315* -E316 message.jax /*E316* -E317 message.jax /*E317* -E318 message.jax /*E318* -E319 message.jax /*E319* -E32 message.jax /*E32* -E320 message.jax /*E320* -E321 editing.jax /*E321* -E322 message.jax /*E322* -E323 message.jax /*E323* -E324 print.jax /*E324* -E325 usr_11.jax /*E325* -E326 recover.jax /*E326* -E327 gui.jax /*E327* -E328 gui.jax /*E328* -E329 gui.jax /*E329* -E33 message.jax /*E33* -E330 gui.jax /*E330* -E331 gui.jax /*E331* -E332 gui.jax /*E332* -E333 gui.jax /*E333* -E334 gui.jax /*E334* -E335 gui.jax /*E335* -E336 gui.jax /*E336* -E337 gui.jax /*E337* -E338 editing.jax /*E338* -E339 message.jax /*E339* -E34 various.jax /*E34* -E340 vi_diff.jax /*E340* -E341 message.jax /*E341* -E342 message.jax /*E342* -E343 options.jax /*E343* -E344 options.jax /*E344* -E345 options.jax /*E345* -E346 options.jax /*E346* -E347 options.jax /*E347* -E348 pattern.jax /*E348* -E349 pattern.jax /*E349* -E35 message.jax /*E35* -E350 fold.jax /*E350* -E351 fold.jax /*E351* -E352 fold.jax /*E352* -E353 change.jax /*E353* -E354 change.jax /*E354* -E355 options.jax /*E355* -E356 message.jax /*E356* -E357 options.jax /*E357* -E358 options.jax /*E358* -E359 term.jax /*E359* -E360 various.jax /*E360* -E362 term.jax /*E362* -E363 options.jax /*E363* -E365 print.jax /*E365* -E367 autocmd.jax /*E367* -E369 pattern.jax /*E369* -E37 message.jax /*E37* -E370 various.jax /*E370* -E371 various.jax /*E371* -E372 quickfix.jax /*E372* -E373 quickfix.jax /*E373* -E374 quickfix.jax /*E374* -E375 quickfix.jax /*E375* -E376 quickfix.jax /*E376* -E377 quickfix.jax /*E377* -E378 quickfix.jax /*E378* -E379 quickfix.jax /*E379* -E38 message.jax /*E38* -E380 quickfix.jax /*E380* -E381 quickfix.jax /*E381* -E382 options.jax /*E382* -E383 pattern.jax /*E383* -E384 options.jax /*E384* -E385 options.jax /*E385* -E386 pattern.jax /*E386* -E387 tagsrch.jax /*E387* -E388 tagsrch.jax /*E388* -E389 tagsrch.jax /*E389* -E39 digraph.jax /*E39* -E390 syntax.jax /*E390* -E391 syntax.jax /*E391* -E392 syntax.jax /*E392* -E393 syntax.jax /*E393* -E394 syntax.jax /*E394* -E395 syntax.jax /*E395* -E397 syntax.jax /*E397* -E398 syntax.jax /*E398* -E399 syntax.jax /*E399* -E40 message.jax /*E40* -E400 syntax.jax /*E400* -E401 syntax.jax /*E401* -E402 syntax.jax /*E402* -E403 syntax.jax /*E403* -E404 syntax.jax /*E404* -E405 syntax.jax /*E405* -E406 syntax.jax /*E406* -E407 syntax.jax /*E407* -E408 syntax.jax /*E408* -E409 syntax.jax /*E409* -E41 message.jax /*E41* -E410 syntax.jax /*E410* -E411 syntax.jax /*E411* -E412 syntax.jax /*E412* -E413 syntax.jax /*E413* -E414 syntax.jax /*E414* -E415 syntax.jax /*E415* -E416 syntax.jax /*E416* -E417 syntax.jax /*E417* -E418 syntax.jax /*E418* -E419 syntax.jax /*E419* -E42 quickfix.jax /*E42* -E420 syntax.jax /*E420* -E421 syntax.jax /*E421* -E422 syntax.jax /*E422* -E423 syntax.jax /*E423* -E424 message.jax /*E424* -E425 tagsrch.jax /*E425* -E426 tagsrch.jax /*E426* -E427 tagsrch.jax /*E427* -E428 tagsrch.jax /*E428* -E429 tagsrch.jax /*E429* -E43 message.jax /*E43* -E430 tagsrch.jax /*E430* -E431 tagsrch.jax /*E431* -E432 message.jax /*E432* -E433 options.jax /*E433* -E434 tagsrch.jax /*E434* -E435 tagsrch.jax /*E435* -E436 term.jax /*E436* -E437 term.jax /*E437* -E438 message.jax /*E438* -E439 message.jax /*E439* -E44 message.jax /*E44* -E440 message.jax /*E440* -E441 windows.jax /*E441* -E442 windows.jax /*E442* -E443 windows.jax /*E443* -E444 windows.jax /*E444* -E445 windows.jax /*E445* -E446 editing.jax /*E446* -E447 editing.jax /*E447* -E448 various.jax /*E448* -E449 eval.jax /*E449* -E45 message.jax /*E45* -E450 os_msdos.jax /*E450* -E451 os_msdos.jax /*E451* -E452 os_msdos.jax /*E452* -E453 os_msdos.jax /*E453* -E454 os_msdos.jax /*E454* -E455 print.jax /*E455* -E456 print.jax /*E456* -E457 print.jax /*E457* -E458 message.jax /*E458* -E459 message.jax /*E459* -E46 message.jax /*E46* -E460 message.jax /*E460* -E461 eval.jax /*E461* -E462 editing.jax /*E462* -E463 netbeans.jax /*E463* -E464 message.jax /*E464* -E465 gui.jax /*E465* -E466 gui.jax /*E466* -E467 map.jax /*E467* -E468 map.jax /*E468* -E469 if_cscop.jax /*E469* -E47 message.jax /*E47* -E470 change.jax /*E470* -E471 message.jax /*E471* -E472 editing.jax /*E472* -E473 message.jax /*E473* -E474 message.jax /*E474* -E475 message.jax /*E475* -E476 pattern.jax /*E476* -E477 message.jax /*E477* -E478 message.jax /*E478* -E48 eval.jax /*E48* -E480 editing.jax /*E480* -E481 message.jax /*E481* -E482 message.jax /*E482* -E483 message.jax /*E483* -E484 message.jax /*E484* -E485 message.jax /*E485* -E486 pattern.jax /*E486* -E487 options.jax /*E487* -E488 message.jax /*E488* -E49 message.jax /*E49* -E490 fold.jax /*E490* -E492 message.jax /*E492* -E493 cmdline.jax /*E493* -E494 editing.jax /*E494* -E495 cmdline.jax /*E495* -E496 cmdline.jax /*E496* -E497 cmdline.jax /*E497* -E498 cmdline.jax /*E498* -E499 cmdline.jax /*E499* -E50 syntax.jax /*E50* -E500 cmdline.jax /*E500* -E501 intro.jax /*E501* -E502 editing.jax /*E502* -E503 editing.jax /*E503* -E504 editing.jax /*E504* -E505 editing.jax /*E505* -E506 editing.jax /*E506* -E507 editing.jax /*E507* -E508 editing.jax /*E508* -E509 editing.jax /*E509* -E51 pattern.jax /*E51* -E510 editing.jax /*E510* -E511 netbeans.jax /*E511* -E512 editing.jax /*E512* -E513 options.jax /*E513* -E514 editing.jax /*E514* -E515 windows.jax /*E515* -E516 windows.jax /*E516* -E517 windows.jax /*E517* -E518 options.jax /*E518* -E519 options.jax /*E519* -E52 syntax.jax /*E52* -E520 options.jax /*E520* -E521 options.jax /*E521* -E522 options.jax /*E522* -E523 options.jax /*E523* -E524 options.jax /*E524* -E525 options.jax /*E525* -E526 options.jax /*E526* -E527 options.jax /*E527* -E528 options.jax /*E528* -E529 options.jax /*E529* -E53 pattern.jax /*E53* -E530 options.jax /*E530* -E531 options.jax /*E531* -E532 netbeans.jax /*E532* -E533 options.jax /*E533* -E534 options.jax /*E534* -E535 options.jax /*E535* -E536 options.jax /*E536* -E537 options.jax /*E537* -E538 options.jax /*E538* -E539 options.jax /*E539* -E54 pattern.jax /*E54* -E540 options.jax /*E540* -E541 options.jax /*E541* -E542 options.jax /*E542* -E543 options.jax /*E543* -E544 options.jax /*E544* -E545 options.jax /*E545* -E546 options.jax /*E546* -E547 options.jax /*E547* -E548 options.jax /*E548* -E549 options.jax /*E549* -E55 pattern.jax /*E55* -E550 options.jax /*E550* -E551 options.jax /*E551* -E552 options.jax /*E552* -E553 quickfix.jax /*E553* -E554 pattern.jax /*E554* -E555 tagsrch.jax /*E555* -E556 tagsrch.jax /*E556* -E557 term.jax /*E557* -E558 term.jax /*E558* -E559 term.jax /*E559* -E56 pattern.jax /*E56* -E560 if_cscop.jax /*E560* -E561 if_cscop.jax /*E561* -E562 if_cscop.jax /*E562* -E563 if_cscop.jax /*E563* -E564 if_cscop.jax /*E564* -E566 if_cscop.jax /*E566* -E567 if_cscop.jax /*E567* -E568 if_cscop.jax /*E568* -E569 if_cscop.jax /*E569* -E57 pattern.jax /*E57* -E570 message.jax /*E570* -E571 if_tcl.jax /*E571* -E572 if_tcl.jax /*E572* -E573 remote.jax /*E573* -E574 starting.jax /*E574* -E575 starting.jax /*E575* -E576 starting.jax /*E576* -E577 starting.jax /*E577* -E578 editing.jax /*E578* -E58 pattern.jax /*E58* -E581 eval.jax /*E581* -E582 eval.jax /*E582* -E583 eval.jax /*E583* -E584 eval.jax /*E584* -E585 eval.jax /*E585* -E586 eval.jax /*E586* -E587 eval.jax /*E587* -E588 eval.jax /*E588* -E589 options.jax /*E589* -E59 pattern.jax /*E59* -E590 options.jax /*E590* -E591 options.jax /*E591* -E592 options.jax /*E592* -E593 options.jax /*E593* -E594 options.jax /*E594* -E595 options.jax /*E595* -E596 options.jax /*E596* -E597 options.jax /*E597* -E598 options.jax /*E598* -E599 options.jax /*E599* -E60 pattern.jax /*E60* -E600 eval.jax /*E600* -E601 eval.jax /*E601* -E602 eval.jax /*E602* -E603 eval.jax /*E603* -E604 eval.jax /*E604* -E605 eval.jax /*E605* -E606 eval.jax /*E606* -E607 eval.jax /*E607* -E608 eval.jax /*E608* -E609 if_cscop.jax /*E609* -E61 pattern.jax /*E61* -E612 sign.jax /*E612* -E613 print.jax /*E613* -E614 editing.jax /*E614* -E615 editing.jax /*E615* -E616 editing.jax /*E616* -E617 options.jax /*E617* -E618 print.jax /*E618* -E619 print.jax /*E619* -E62 pattern.jax /*E62* -E620 print.jax /*E620* -E621 print.jax /*E621* -E622 if_cscop.jax /*E622* -E623 if_cscop.jax /*E623* -E624 print.jax /*E624* -E625 if_cscop.jax /*E625* -E626 if_cscop.jax /*E626* -E627 netbeans.jax /*E627* -E628 netbeans.jax /*E628* -E629 netbeans.jax /*E629* -E63 pattern.jax /*E63* -E630 netbeans.jax /*E630* -E631 netbeans.jax /*E631* -E632 netbeans.jax /*E632* -E633 netbeans.jax /*E633* -E634 netbeans.jax /*E634* -E635 netbeans.jax /*E635* -E636 netbeans.jax /*E636* -E637 netbeans.jax /*E637* -E638 netbeans.jax /*E638* -E639 netbeans.jax /*E639* -E64 pattern.jax /*E64* -E640 netbeans.jax /*E640* -E641 netbeans.jax /*E641* -E642 netbeans.jax /*E642* -E643 netbeans.jax /*E643* -E644 netbeans.jax /*E644* -E645 netbeans.jax /*E645* -E646 netbeans.jax /*E646* -E647 netbeans.jax /*E647* -E648 netbeans.jax /*E648* -E649 netbeans.jax /*E649* -E65 pattern.jax /*E65* -E650 netbeans.jax /*E650* -E651 netbeans.jax /*E651* -E652 netbeans.jax /*E652* -E653 netbeans.jax /*E653* -E654 netbeans.jax /*E654* -E655 eval.jax /*E655* -E656 netbeans.jax /*E656* -E657 netbeans.jax /*E657* -E658 netbeans.jax /*E658* -E659 if_pyth.jax /*E659* -E66 syntax.jax /*E66* -E660 netbeans.jax /*E660* -E661 helphelp.jax /*E661* -E662 motion.jax /*E662* -E663 motion.jax /*E663* -E664 motion.jax /*E664* -E665 gui_x11.jax /*E665* -E666 quickfix.jax /*E666* -E667 editing.jax /*E667* -E668 netbeans.jax /*E668* -E669 syntax.jax /*E669* -E67 syntax.jax /*E67* -E670 helphelp.jax /*E670* -E671 starting.jax /*E671* -E673 print.jax /*E673* -E674 print.jax /*E674* -E675 print.jax /*E675* -E676 options.jax /*E676* -E677 eval.jax /*E677* -E678 pattern.jax /*E678* -E679 syntax.jax /*E679* -E68 pattern.jax /*E68* -E680 autocmd.jax /*E680* -E681 quickfix.jax /*E681* -E682 quickfix.jax /*E682* -E683 quickfix.jax /*E683* -E684 eval.jax /*E684* -E685 message.jax /*E685* -E686 eval.jax /*E686* -E687 eval.jax /*E687* -E688 eval.jax /*E688* -E689 eval.jax /*E689* -E69 pattern.jax /*E69* -E690 eval.jax /*E690* -E691 eval.jax /*E691* -E692 eval.jax /*E692* -E693 eval.jax /*E693* -E694 eval.jax /*E694* -E695 eval.jax /*E695* -E696 eval.jax /*E696* -E697 eval.jax /*E697* -E698 eval.jax /*E698* -E699 eval.jax /*E699* -E70 pattern.jax /*E70* -E700 eval.jax /*E700* -E701 eval.jax /*E701* -E702 eval.jax /*E702* -E703 eval.jax /*E703* -E704 eval.jax /*E704* -E705 eval.jax /*E705* -E706 eval.jax /*E706* -E707 eval.jax /*E707* -E708 eval.jax /*E708* -E709 eval.jax /*E709* -E71 pattern.jax /*E71* -E710 eval.jax /*E710* -E711 eval.jax /*E711* -E712 eval.jax /*E712* -E713 eval.jax /*E713* -E714 eval.jax /*E714* -E715 eval.jax /*E715* -E716 eval.jax /*E716* -E717 eval.jax /*E717* -E718 eval.jax /*E718* -E719 eval.jax /*E719* -E72 message.jax /*E72* -E720 eval.jax /*E720* -E721 eval.jax /*E721* -E722 eval.jax /*E722* -E723 eval.jax /*E723* -E724 eval.jax /*E724* -E725 eval.jax /*E725* -E726 eval.jax /*E726* -E727 eval.jax /*E727* -E728 eval.jax /*E728* -E729 eval.jax /*E729* -E73 tagsrch.jax /*E73* -E730 eval.jax /*E730* -E731 eval.jax /*E731* -E732 eval.jax /*E732* -E733 eval.jax /*E733* -E734 eval.jax /*E734* -E735 eval.jax /*E735* -E736 eval.jax /*E736* -E737 eval.jax /*E737* -E738 eval.jax /*E738* -E739 eval.jax /*E739* -E74 message.jax /*E74* -E740 eval.jax /*E740* -E741 eval.jax /*E741* -E742 eval.jax /*E742* -E743 eval.jax /*E743* -E744 netbeans.jax /*E744* -E745 eval.jax /*E745* -E746 eval.jax /*E746* -E747 editing.jax /*E747* -E748 repeat.jax /*E748* -E749 various.jax /*E749* -E75 vi_diff.jax /*E75* -E750 repeat.jax /*E750* -E757 options.jax /*E757* -E76 pattern.jax /*E76* -E764 options.jax /*E764* -E765 options.jax /*E765* -E766 eval.jax /*E766* -E767 eval.jax /*E767* -E768 message.jax /*E768* -E769 pattern.jax /*E769* -E77 message.jax /*E77* -E773 recover.jax /*E773* -E774 map.jax /*E774* -E775 map.jax /*E775* -E776 quickfix.jax /*E776* -E777 quickfix.jax /*E777* -E78 motion.jax /*E78* -E784 tabpage.jax /*E784* -E785 eval.jax /*E785* -E786 eval.jax /*E786* -E787 diff.jax /*E787* -E788 autocmd.jax /*E788* -E789 syntax.jax /*E789* -E79 message.jax /*E79* -E790 undo.jax /*E790* -E791 mbyte.jax /*E791* -E792 gui.jax /*E792* -E793 diff.jax /*E793* -E794 eval.jax /*E794* -E795 eval.jax /*E795* -E796 editing.jax /*E796* -E798 eval.jax /*E798* -E799 eval.jax /*E799* -E80 message.jax /*E80* -E800 arabic.jax /*E800* -E801 eval.jax /*E801* -E802 eval.jax /*E802* -E803 eval.jax /*E803* -E804 eval.jax /*E804* -E805 eval.jax /*E805* -E806 eval.jax /*E806* -E807 eval.jax /*E807* -E808 eval.jax /*E808* -E809 cmdline.jax /*E809* -E81 map.jax /*E81* -E810 diff.jax /*E810* -E811 autocmd.jax /*E811* -E812 autocmd.jax /*E812* -E813 editing.jax /*E813* -E814 editing.jax /*E814* -E815 if_mzsch.jax /*E815* -E816 diff.jax /*E816* -E817 editing.jax /*E817* -E818 editing.jax /*E818* -E819 editing.jax /*E819* -E82 message.jax /*E82* -E820 editing.jax /*E820* -E821 options.jax /*E821* -E822 undo.jax /*E822* -E823 undo.jax /*E823* -E824 undo.jax /*E824* -E825 undo.jax /*E825* -E826 undo.jax /*E826* -E827 undo.jax /*E827* -E828 undo.jax /*E828* -E829 undo.jax /*E829* -E83 message.jax /*E83* -E830 undo.jax /*E830* -E831 editing.jax /*E831* -E832 undo.jax /*E832* -E833 editing.jax /*E833* -E834 options.jax /*E834* -E835 options.jax /*E835* -E836 if_pyth.jax /*E836* -E837 if_pyth.jax /*E837* -E838 netbeans.jax /*E838* -E839 insert.jax /*E839* -E84 windows.jax /*E84* -E840 insert.jax /*E840* -E841 map.jax /*E841* -E842 cmdline.jax /*E842* -E843 editing.jax /*E843* -E844 syntax.jax /*E844* -E846 options.jax /*E846* -E847 syntax.jax /*E847* -E848 syntax.jax /*E848* -E849 syntax.jax /*E849* -E85 options.jax /*E85* -E850 change.jax /*E850* -E86 windows.jax /*E86* -E88 windows.jax /*E88* -E89 message.jax /*E89* -E90 message.jax /*E90* -E91 options.jax /*E91* -E92 message.jax /*E92* -E93 windows.jax /*E93* -E94 windows.jax /*E94* -E95 message.jax /*E95* -E96 diff.jax /*E96* -E97 diff.jax /*E97* -E98 diff.jax /*E98* -E99 diff.jax /*E99* -EX intro.jax /*EX* -EXINIT starting.jax /*EXINIT* -Elvis intro.jax /*Elvis* -EncodingChanged autocmd.jax /*EncodingChanged* -Eterm syntax.jax /*Eterm* -Ex intro.jax /*Ex* -Ex-mode intro.jax /*Ex-mode* -Exuberant_ctags tagsrch.jax /*Exuberant_ctags* -F motion.jax /*F* -FAQ intro.jax /*FAQ* -Farsi farsi.jax /*Farsi* -FileAppendCmd autocmd.jax /*FileAppendCmd* -FileAppendPost autocmd.jax /*FileAppendPost* -FileAppendPre autocmd.jax /*FileAppendPre* -FileChangedRO autocmd.jax /*FileChangedRO* -FileChangedShell autocmd.jax /*FileChangedShell* -FileChangedShellPost autocmd.jax /*FileChangedShellPost* -FileEncoding autocmd.jax /*FileEncoding* -FileReadCmd autocmd.jax /*FileReadCmd* -FileReadPost autocmd.jax /*FileReadPost* -FileReadPre autocmd.jax /*FileReadPre* -FileType autocmd.jax /*FileType* -FileWriteCmd autocmd.jax /*FileWriteCmd* -FileWritePost autocmd.jax /*FileWritePost* -FileWritePre autocmd.jax /*FileWritePre* -FilterReadPost autocmd.jax /*FilterReadPost* -FilterReadPre autocmd.jax /*FilterReadPre* -FilterWritePost autocmd.jax /*FilterWritePost* -FilterWritePre autocmd.jax /*FilterWritePre* -Float eval.jax /*Float* -FocusGained autocmd.jax /*FocusGained* -FocusLost autocmd.jax /*FocusLost* -Folding fold.jax /*Folding* -FuncUndefined autocmd.jax /*FuncUndefined* -Funcref eval.jax /*Funcref* -G motion.jax /*G* -GNOME gui_x11.jax /*GNOME* -GTK gui_x11.jax /*GTK* -GTK+ gui_x11.jax /*GTK+* -GUI gui.jax /*GUI* -GUI-X11 gui_x11.jax /*GUI-X11* -GUIEnter autocmd.jax /*GUIEnter* -GUIFailed autocmd.jax /*GUIFailed* -GetLatestVimScripts pi_getscript.jax /*GetLatestVimScripts* -GetLatestVimScripts-copyright pi_getscript.jax /*GetLatestVimScripts-copyright* -GetLatestVimScripts_dat pi_getscript.jax /*GetLatestVimScripts_dat* -Gnome gui_x11.jax /*Gnome* -H motion.jax /*H* -I insert.jax /*I* -ICCF uganda.jax /*ICCF* -IM-server mbyte.jax /*IM-server* -IME mbyte.jax /*IME* -Insert insert.jax /*Insert* -Insert-mode insert.jax /*Insert-mode* -InsertChange autocmd.jax /*InsertChange* -InsertCharPre autocmd.jax /*InsertCharPre* -InsertEnter autocmd.jax /*InsertEnter* -InsertLeave autocmd.jax /*InsertLeave* -J change.jax /*J* -Japanese mbyte.jax /*Japanese* -K various.jax /*K* -KDE gui_x11.jax /*KDE* -KVim gui_x11.jax /*KVim* -Kibaale uganda.jax /*Kibaale* -Korean mbyte.jax /*Korean* -L motion.jax /*L* -Linux-backspace options.jax /*Linux-backspace* -List eval.jax /*List* -Lists eval.jax /*Lists* -Lua if_lua.jax /*Lua* -M motion.jax /*M* -MDI starting.jax /*MDI* -MS-DOS os_msdos.jax /*MS-DOS* -MS-Windows os_win32.jax /*MS-Windows* -MSDOS os_msdos.jax /*MSDOS* -MSVisualStudio if_ole.jax /*MSVisualStudio* -MVS os_390.jax /*MVS* -Mac os_mac.jax /*Mac* -Mac-format editing.jax /*Mac-format* -Mac-format-write editing.jax /*Mac-format-write* -Macintosh os_mac.jax /*Macintosh* -Mark motion.jax /*Mark* -MenuPopup autocmd.jax /*MenuPopup* -MiNT os_mint.jax /*MiNT* -Moolenaar intro.jax /*Moolenaar* -MorphOS os_amiga.jax /*MorphOS* -Motif gui_x11.jax /*Motif* -MzScheme if_mzsch.jax /*MzScheme* -N pattern.jax /*N* -N% motion.jax /*N%* -N: cmdline.jax /*N:* -N<Del> various.jax /*N<Del>* -NL-used-for-Nul pattern.jax /*NL-used-for-Nul* -NetBSD-backspace options.jax /*NetBSD-backspace* -NetUserPass() pi_netrw.jax /*NetUserPass()* -Normal intro.jax /*Normal* -Normal-mode intro.jax /*Normal-mode* -Number eval.jax /*Number* -Nvi intro.jax /*Nvi* -O insert.jax /*O* -OS/2 os_os2.jax /*OS\/2* -OS2 os_os2.jax /*OS2* -OS390 os_390.jax /*OS390* -OS390-Motif os_390.jax /*OS390-Motif* -OS390-PuTTY os_390.jax /*OS390-PuTTY* -OS390-bugs os_390.jax /*OS390-bugs* -OS390-has-ebcdic os_390.jax /*OS390-has-ebcdic* -OS390-limitations os_390.jax /*OS390-limitations* -OS390-open-source os_390.jax /*OS390-open-source* -OffTheSpot mbyte.jax /*OffTheSpot* -OnTheSpot mbyte.jax /*OnTheSpot* -Operator-pending intro.jax /*Operator-pending* -Operator-pending-mode intro.jax /*Operator-pending-mode* -OverTheSpot mbyte.jax /*OverTheSpot* -P change.jax /*P* -PATHEXT eval.jax /*PATHEXT* -Pattern pattern.jax /*Pattern* -Perl if_perl.jax /*Perl* -Posix intro.jax /*Posix* -Python if_pyth.jax /*Python* -Q intro.jax /*Q* -QNX os_qnx.jax /*QNX* -Q_ab quickref.jax /*Q_ab* -Q_ac quickref.jax /*Q_ac* -Q_ai quickref.jax /*Q_ai* -Q_bu quickref.jax /*Q_bu* -Q_ce quickref.jax /*Q_ce* -Q_ch quickref.jax /*Q_ch* -Q_cm quickref.jax /*Q_cm* -Q_co quickref.jax /*Q_co* -Q_ct help.jax /*Q_ct* -Q_de quickref.jax /*Q_de* -Q_di quickref.jax /*Q_di* -Q_ed quickref.jax /*Q_ed* -Q_et quickref.jax /*Q_et* -Q_ex quickref.jax /*Q_ex* -Q_fl quickref.jax /*Q_fl* -Q_fo quickref.jax /*Q_fo* -Q_gu quickref.jax /*Q_gu* -Q_in quickref.jax /*Q_in* -Q_km quickref.jax /*Q_km* -Q_lr quickref.jax /*Q_lr* -Q_ma quickref.jax /*Q_ma* -Q_op quickref.jax /*Q_op* -Q_pa quickref.jax /*Q_pa* -Q_qf quickref.jax /*Q_qf* -Q_ra quickref.jax /*Q_ra* -Q_re quickref.jax /*Q_re* -Q_sc quickref.jax /*Q_sc* -Q_si quickref.jax /*Q_si* -Q_ss quickref.jax /*Q_ss* -Q_st quickref.jax /*Q_st* -Q_sy quickref.jax /*Q_sy* -Q_ta quickref.jax /*Q_ta* -Q_tm quickref.jax /*Q_tm* -Q_to quickref.jax /*Q_to* -Q_ud quickref.jax /*Q_ud* -Q_ur quickref.jax /*Q_ur* -Q_vc quickref.jax /*Q_vc* -Q_vi quickref.jax /*Q_vi* -Q_vm quickref.jax /*Q_vm* -Q_wi quickref.jax /*Q_wi* -Q_wq quickref.jax /*Q_wq* -QuickFixCmdPost autocmd.jax /*QuickFixCmdPost* -QuickFixCmdPost-example quickfix.jax /*QuickFixCmdPost-example* -QuickFixCmdPre autocmd.jax /*QuickFixCmdPre* -Quickfix quickfix.jax /*Quickfix* -R change.jax /*R* -RISC-OS os_risc.jax /*RISC-OS* -RISCOS os_risc.jax /*RISCOS* -RemoteReply autocmd.jax /*RemoteReply* -Replace insert.jax /*Replace* -Replace-mode insert.jax /*Replace-mode* -Root mbyte.jax /*Root* -Ruby if_ruby.jax /*Ruby* -Russian russian.jax /*Russian* -S change.jax /*S* -SHELL starting.jax /*SHELL* -SQLGetType ft_sql.jax /*SQLGetType* -SQLSetType ft_sql.jax /*SQLSetType* -Select visual.jax /*Select* -Select-mode visual.jax /*Select-mode* -Select-mode-mapping visual.jax /*Select-mode-mapping* -Session starting.jax /*Session* -SessionLoad-variable starting.jax /*SessionLoad-variable* -SessionLoadPost autocmd.jax /*SessionLoadPost* -ShellCmdPost autocmd.jax /*ShellCmdPost* -ShellFilterPost autocmd.jax /*ShellFilterPost* -SourceCmd autocmd.jax /*SourceCmd* -SourcePre autocmd.jax /*SourcePre* -SpellFileMissing autocmd.jax /*SpellFileMissing* -StdinReadPost autocmd.jax /*StdinReadPost* -StdinReadPre autocmd.jax /*StdinReadPre* -SwapExists autocmd.jax /*SwapExists* -Syntax autocmd.jax /*Syntax* -T motion.jax /*T* -TCL if_tcl.jax /*TCL* -TERM starting.jax /*TERM* -TSQL ft_sql.jax /*TSQL* -TTpro-telnet syntax.jax /*TTpro-telnet* -Tab intro.jax /*Tab* -TabEnter autocmd.jax /*TabEnter* -TabLeave autocmd.jax /*TabLeave* -Tcl if_tcl.jax /*Tcl* -TermChanged autocmd.jax /*TermChanged* -TermResponse autocmd.jax /*TermResponse* -Transact-SQL ft_sql.jax /*Transact-SQL* -U undo.jax /*U* -UTF-8 mbyte.jax /*UTF-8* -UTF8-xterm mbyte.jax /*UTF8-xterm* -Uganda uganda.jax /*Uganda* -Unicode mbyte.jax /*Unicode* -Unix os_unix.jax /*Unix* -Unix-format editing.jax /*Unix-format* -Unix-format-write editing.jax /*Unix-format-write* -User autocmd.jax /*User* -UserGettingBored autocmd.jax /*UserGettingBored* -V visual.jax /*V* -VIMINIT starting.jax /*VIMINIT* -VMS os_vms.jax /*VMS* -Vi intro.jax /*Vi* -View starting.jax /*View* -VimEnter autocmd.jax /*VimEnter* -VimLeave autocmd.jax /*VimLeave* -VimLeavePre autocmd.jax /*VimLeavePre* -VimResized autocmd.jax /*VimResized* -Vimball-copyright pi_vimball.jax /*Vimball-copyright* -Virtual-Replace-mode insert.jax /*Virtual-Replace-mode* -VisVim if_ole.jax /*VisVim* -Visual visual.jax /*Visual* -Visual-mode visual.jax /*Visual-mode* -W motion.jax /*W* -W10 message.jax /*W10* -W11 message.jax /*W11* -W12 message.jax /*W12* -W13 message.jax /*W13* -W14 message.jax /*W14* -W15 repeat.jax /*W15* -W16 message.jax /*W16* -W17 arabic.jax /*W17* -W18 syntax.jax /*W18* -WORD motion.jax /*WORD* -WWW intro.jax /*WWW* -Win32 os_win32.jax /*Win32* -WinEnter autocmd.jax /*WinEnter* -WinLeave autocmd.jax /*WinLeave* -X change.jax /*X* -X11 options.jax /*X11* -X11-icon gui_x11.jax /*X11-icon* -X11_mouse_shapes gui_x11.jax /*X11_mouse_shapes* -X1Drag term.jax /*X1Drag* -X1Mouse term.jax /*X1Mouse* -X1Release term.jax /*X1Release* -X2Drag term.jax /*X2Drag* -X2Mouse term.jax /*X2Mouse* -X2Release term.jax /*X2Release* -XIM mbyte.jax /*XIM* -XLFD mbyte.jax /*XLFD* -Y change.jax /*Y* -Y2K intro.jax /*Y2K* -ZQ editing.jax /*ZQ* -ZZ editing.jax /*ZZ* -[ index.jax /*[* -[# motion.jax /*[#* -[' motion.jax /*['* -[( motion.jax /*[(* -[++opt] editing.jax /*[++opt]* -[+cmd] editing.jax /*[+cmd]* -[..] pattern.jax /*[..]* -[/ motion.jax /*[\/* -[:alnum:] pattern.jax /*[:alnum:]* -[:alpha:] pattern.jax /*[:alpha:]* -[:backspace:] pattern.jax /*[:backspace:]* -[:blank:] pattern.jax /*[:blank:]* -[:cntrl:] pattern.jax /*[:cntrl:]* -[:digit:] pattern.jax /*[:digit:]* -[:escape:] pattern.jax /*[:escape:]* -[:graph:] pattern.jax /*[:graph:]* -[:lower:] pattern.jax /*[:lower:]* -[:print:] pattern.jax /*[:print:]* -[:punct:] pattern.jax /*[:punct:]* -[:return:] pattern.jax /*[:return:]* -[:space:] pattern.jax /*[:space:]* -[:tab:] pattern.jax /*[:tab:]* -[:upper:] pattern.jax /*[:upper:]* -[:xdigit:] pattern.jax /*[:xdigit:]* -[<MiddleMouse> change.jax /*[<MiddleMouse>* -[==] pattern.jax /*[==]* -[D tagsrch.jax /*[D* -[I tagsrch.jax /*[I* -[M motion.jax /*[M* -[P change.jax /*[P* -[[ motion.jax /*[[* -[] motion.jax /*[]* -[_CTRL-D tagsrch.jax /*[_CTRL-D* -[_CTRL-I tagsrch.jax /*[_CTRL-I* -[` motion.jax /*[`* -[c diff.jax /*[c* -[count] intro.jax /*[count]* -[d tagsrch.jax /*[d* -[f editing.jax /*[f* -[i tagsrch.jax /*[i* -[m motion.jax /*[m* -[p change.jax /*[p* -[pattern] pattern.jax /*[pattern]* -[quotex] intro.jax /*[quotex]* -[range] cmdline.jax /*[range]* -[star motion.jax /*[star* -[z fold.jax /*[z* -[{ motion.jax /*[{* -\0 change.jax /*\\0* -] index.jax /*]* -]# motion.jax /*]#* -]' motion.jax /*]'* -]) motion.jax /*])* -]/ motion.jax /*]\/* -]<MiddleMouse> change.jax /*]<MiddleMouse>* -]D tagsrch.jax /*]D* -]I tagsrch.jax /*]I* -]M motion.jax /*]M* -]P change.jax /*]P* -][ motion.jax /*][* -]] motion.jax /*]]* -]_CTRL-D tagsrch.jax /*]_CTRL-D* -]_CTRL-I tagsrch.jax /*]_CTRL-I* -]` motion.jax /*]`* -]c diff.jax /*]c* -]d tagsrch.jax /*]d* -]f editing.jax /*]f* -]i tagsrch.jax /*]i* -]m motion.jax /*]m* -]p change.jax /*]p* -]star motion.jax /*]star* -]z fold.jax /*]z* -]} motion.jax /*]}* -^ motion.jax /*^* -_ motion.jax /*_* -_exrc starting.jax /*_exrc* -_gvimrc gui.jax /*_gvimrc* -_vimrc starting.jax /*_vimrc* -` motion.jax /*`* -`( motion.jax /*`(* -`) motion.jax /*`)* -`-expansion editing.jax /*`-expansion* -`. motion.jax /*`.* -`0 motion.jax /*`0* -`< motion.jax /*`<* -`= editing.jax /*`=* -`> motion.jax /*`>* -`A motion.jax /*`A* -`[ motion.jax /*`[* -`] motion.jax /*`]* -`^ motion.jax /*`^* -`` motion.jax /*``* -`a motion.jax /*`a* -`quote motion.jax /*`quote* -`{ motion.jax /*`{* -`} motion.jax /*`}* -a insert.jax /*a* -a' motion.jax /*a'* -a( motion.jax /*a(* -a) motion.jax /*a)* -a4 print.jax /*a4* -a:0 eval.jax /*a:0* -a:000 eval.jax /*a:000* -a:1 eval.jax /*a:1* -a:firstline eval.jax /*a:firstline* -a:lastline eval.jax /*a:lastline* -a:var eval.jax /*a:var* -a< motion.jax /*a<* -a> motion.jax /*a>* -aB motion.jax /*aB* -aW motion.jax /*aW* -a[ motion.jax /*a[* -a] motion.jax /*a]* -a` motion.jax /*a`* -ab motion.jax /*ab* -abandon editing.jax /*abandon* -abbreviations map.jax /*abbreviations* -abel.vim syntax.jax /*abel.vim* -abs() eval.jax /*abs()* -acos() eval.jax /*acos()* -active-buffer windows.jax /*active-buffer* -ada#Create_Tags() ft_ada.jax /*ada#Create_Tags()* -ada#Jump_Tag() ft_ada.jax /*ada#Jump_Tag()* -ada#Listtags() ft_ada.jax /*ada#Listtags()* -ada#Switch_Syntax_Option() ft_ada.jax /*ada#Switch_Syntax_Option()* -ada#Word() ft_ada.jax /*ada#Word()* -ada-compiler ft_ada.jax /*ada-compiler* -ada-ctags ft_ada.jax /*ada-ctags* -ada-extra-plugins ft_ada.jax /*ada-extra-plugins* -ada-reference ft_ada.jax /*ada-reference* -ada.vim ft_ada.jax /*ada.vim* -add() eval.jax /*add()* -add-filetype-plugin usr_05.jax /*add-filetype-plugin* -add-global-plugin usr_05.jax /*add-global-plugin* -add-local-help usr_05.jax /*add-local-help* -add-option-flags options.jax /*add-option-flags* -add-plugin usr_05.jax /*add-plugin* -after-directory options.jax /*after-directory* -aleph options.jax /*aleph* -alt intro.jax /*alt* -alt-input debugger.jax /*alt-input* -alternate-file editing.jax /*alternate-file* -amiga-window starting.jax /*amiga-window* -anonymous-function eval.jax /*anonymous-function* -ant.vim syntax.jax /*ant.vim* -ap motion.jax /*ap* -apache.vim syntax.jax /*apache.vim* -append() eval.jax /*append()* -aquote motion.jax /*aquote* -arabic.txt arabic.jax /*arabic.txt* -arabicfonts arabic.jax /*arabicfonts* -arabickeymap arabic.jax /*arabickeymap* -arg-functions usr_41.jax /*arg-functions* -argc() eval.jax /*argc()* -argidx() eval.jax /*argidx()* -arglist editing.jax /*arglist* -arglist-position editing.jax /*arglist-position* -arglist-quit usr_07.jax /*arglist-quit* -argument-list editing.jax /*argument-list* -argv() eval.jax /*argv()* -as motion.jax /*as* -asin() eval.jax /*asin()* -asm.vim syntax.jax /*asm.vim* -asm68k syntax.jax /*asm68k* -asmh8300.vim syntax.jax /*asmh8300.vim* -at motion.jax /*at* -atan() eval.jax /*atan()* -atan2() eval.jax /*atan2()* -athena-intellimouse gui.jax /*athena-intellimouse* -attr-list syntax.jax /*attr-list* -author intro.jax /*author* -auto-format change.jax /*auto-format* -auto-setting options.jax /*auto-setting* -auto-shortname editing.jax /*auto-shortname* -autocmd-<> tips.jax /*autocmd-<>* -autocmd-buffer-local autocmd.jax /*autocmd-buffer-local* -autocmd-buflocal autocmd.jax /*autocmd-buflocal* -autocmd-changes autocmd.jax /*autocmd-changes* -autocmd-define autocmd.jax /*autocmd-define* -autocmd-disable autocmd.jax /*autocmd-disable* -autocmd-events autocmd.jax /*autocmd-events* -autocmd-events-abc autocmd.jax /*autocmd-events-abc* -autocmd-execute autocmd.jax /*autocmd-execute* -autocmd-groups autocmd.jax /*autocmd-groups* -autocmd-intro autocmd.jax /*autocmd-intro* -autocmd-list autocmd.jax /*autocmd-list* -autocmd-nested autocmd.jax /*autocmd-nested* -autocmd-osfiletypes filetype.jax /*autocmd-osfiletypes* -autocmd-patterns autocmd.jax /*autocmd-patterns* -autocmd-remove autocmd.jax /*autocmd-remove* -autocmd-searchpat autocmd.jax /*autocmd-searchpat* -autocmd-use autocmd.jax /*autocmd-use* -autocmd.txt autocmd.jax /*autocmd.txt* -autocommand autocmd.jax /*autocommand* -autocommand-events autocmd.jax /*autocommand-events* -autocommand-pattern autocmd.jax /*autocommand-pattern* -autoload eval.jax /*autoload* -autoload-functions eval.jax /*autoload-functions* -aw motion.jax /*aw* -a{ motion.jax /*a{* -a} motion.jax /*a}* -b motion.jax /*b* -b:changedtick-variable eval.jax /*b:changedtick-variable* -b:changelog_name filetype.jax /*b:changelog_name* -b:current_syntax-variable syntax.jax /*b:current_syntax-variable* -b:netrw_lastfile pi_netrw.jax /*b:netrw_lastfile* -b:var eval.jax /*b:var* -baan-folding syntax.jax /*baan-folding* -baan-syntax syntax.jax /*baan-syntax* -baan.vim syntax.jax /*baan.vim* -backslash intro.jax /*backslash* -backspace intro.jax /*backspace* -backspace-delete version4.jax /*backspace-delete* -backtick-expansion editing.jax /*backtick-expansion* -backup editing.jax /*backup* -backup-changed version4.jax /*backup-changed* -backup-extension version4.jax /*backup-extension* -backup-table editing.jax /*backup-table* -balloon-eval debugger.jax /*balloon-eval* -bar motion.jax /*bar* -bars help.jax /*bars* -base_font_name_list mbyte.jax /*base_font_name_list* -basic.vim syntax.jax /*basic.vim* -beep options.jax /*beep* -beos-colors os_beos.jax /*beos-colors* -beos-compiling os_beos.jax /*beos-compiling* -beos-dragndrop os_beos.jax /*beos-dragndrop* -beos-fonts os_beos.jax /*beos-fonts* -beos-general os_beos.jax /*beos-general* -beos-gui os_beos.jax /*beos-gui* -beos-launch os_beos.jax /*beos-launch* -beos-meta os_beos.jax /*beos-meta* -beos-mouse os_beos.jax /*beos-mouse* -beos-perl os_beos.jax /*beos-perl* -beos-timeout os_beos.jax /*beos-timeout* -beos-unicode os_beos.jax /*beos-unicode* -beos-utf8 os_beos.jax /*beos-utf8* -beos-vimdir os_beos.jax /*beos-vimdir* -beval_bufnr-variable eval.jax /*beval_bufnr-variable* -beval_col-variable eval.jax /*beval_col-variable* -beval_lnum-variable eval.jax /*beval_lnum-variable* -beval_text-variable eval.jax /*beval_text-variable* -beval_winnr-variable eval.jax /*beval_winnr-variable* -blockwise-examples visual.jax /*blockwise-examples* -blockwise-operators visual.jax /*blockwise-operators* -blockwise-register change.jax /*blockwise-register* -blockwise-visual visual.jax /*blockwise-visual* -blowfish options.jax /*blowfish* -bold syntax.jax /*bold* -bom-bytes mbyte.jax /*bom-bytes* -book intro.jax /*book* -bookmark usr_03.jax /*bookmark* -boolean options.jax /*boolean* -break-finally eval.jax /*break-finally* -browse() eval.jax /*browse()* -browsedir() eval.jax /*browsedir()* -browsefilter editing.jax /*browsefilter* -bufexists() eval.jax /*bufexists()* -buffer-functions usr_41.jax /*buffer-functions* -buffer-hidden windows.jax /*buffer-hidden* -buffer-list windows.jax /*buffer-list* -buffer-variable eval.jax /*buffer-variable* -buffer-write editing.jax /*buffer-write* -buffer_exists() eval.jax /*buffer_exists()* -buffer_name() eval.jax /*buffer_name()* -buffer_number() eval.jax /*buffer_number()* -buffers windows.jax /*buffers* -buffers-menu gui.jax /*buffers-menu* -buflisted() eval.jax /*buflisted()* -bufloaded() eval.jax /*bufloaded()* -bufname() eval.jax /*bufname()* -bufnr() eval.jax /*bufnr()* -bufwinnr() eval.jax /*bufwinnr()* -bug-reports intro.jax /*bug-reports* -bugreport.vim intro.jax /*bugreport.vim* -bugs intro.jax /*bugs* -builtin-terms term.jax /*builtin-terms* -builtin-tools gui.jax /*builtin-tools* -builtin_terms term.jax /*builtin_terms* -byte-count editing.jax /*byte-count* -byte2line() eval.jax /*byte2line()* -byteidx() eval.jax /*byteidx()* -bzip2 pi_gzip.jax /*bzip2* -c change.jax /*c* -c.vim syntax.jax /*c.vim* -cW change.jax /*cW* -c_# cmdline.jax /*c_#* -c_## cmdline.jax /*c_##* -c_#< cmdline.jax /*c_#<* -c_#n cmdline.jax /*c_#n* -c_% cmdline.jax /*c_%* -c_<BS> cmdline.jax /*c_<BS>* -c_<C-Left> cmdline.jax /*c_<C-Left>* -c_<C-R> cmdline.jax /*c_<C-R>* -c_<C-R>_<C-A> cmdline.jax /*c_<C-R>_<C-A>* -c_<C-R>_<C-F> cmdline.jax /*c_<C-R>_<C-F>* -c_<C-R>_<C-O> cmdline.jax /*c_<C-R>_<C-O>* -c_<C-R>_<C-P> cmdline.jax /*c_<C-R>_<C-P>* -c_<C-R>_<C-R> cmdline.jax /*c_<C-R>_<C-R>* -c_<C-R>_<C-W> cmdline.jax /*c_<C-R>_<C-W>* -c_<C-Right> cmdline.jax /*c_<C-Right>* -c_<CR> cmdline.jax /*c_<CR>* -c_<Del> cmdline.jax /*c_<Del>* -c_<Down> cmdline.jax /*c_<Down>* -c_<End> cmdline.jax /*c_<End>* -c_<Esc> cmdline.jax /*c_<Esc>* -c_<Home> cmdline.jax /*c_<Home>* -c_<Insert> cmdline.jax /*c_<Insert>* -c_<Left> cmdline.jax /*c_<Left>* -c_<LeftMouse> cmdline.jax /*c_<LeftMouse>* -c_<NL> cmdline.jax /*c_<NL>* -c_<PageDown> cmdline.jax /*c_<PageDown>* -c_<PageUp> cmdline.jax /*c_<PageUp>* -c_<Right> cmdline.jax /*c_<Right>* -c_<S-Down> cmdline.jax /*c_<S-Down>* -c_<S-Left> cmdline.jax /*c_<S-Left>* -c_<S-Right> cmdline.jax /*c_<S-Right>* -c_<S-Tab> cmdline.jax /*c_<S-Tab>* -c_<S-Up> cmdline.jax /*c_<S-Up>* -c_<Tab> cmdline.jax /*c_<Tab>* -c_<Up> cmdline.jax /*c_<Up>* -c_BS cmdline.jax /*c_BS* -c_CR cmdline.jax /*c_CR* -c_CTRL-A cmdline.jax /*c_CTRL-A* -c_CTRL-B cmdline.jax /*c_CTRL-B* -c_CTRL-C cmdline.jax /*c_CTRL-C* -c_CTRL-D cmdline.jax /*c_CTRL-D* -c_CTRL-E cmdline.jax /*c_CTRL-E* -c_CTRL-F cmdline.jax /*c_CTRL-F* -c_CTRL-H cmdline.jax /*c_CTRL-H* -c_CTRL-I cmdline.jax /*c_CTRL-I* -c_CTRL-J cmdline.jax /*c_CTRL-J* -c_CTRL-K cmdline.jax /*c_CTRL-K* -c_CTRL-L cmdline.jax /*c_CTRL-L* -c_CTRL-N cmdline.jax /*c_CTRL-N* -c_CTRL-P cmdline.jax /*c_CTRL-P* -c_CTRL-Q cmdline.jax /*c_CTRL-Q* -c_CTRL-R cmdline.jax /*c_CTRL-R* -c_CTRL-R_= cmdline.jax /*c_CTRL-R_=* -c_CTRL-R_CTRL-A cmdline.jax /*c_CTRL-R_CTRL-A* -c_CTRL-R_CTRL-F cmdline.jax /*c_CTRL-R_CTRL-F* -c_CTRL-R_CTRL-O cmdline.jax /*c_CTRL-R_CTRL-O* -c_CTRL-R_CTRL-P cmdline.jax /*c_CTRL-R_CTRL-P* -c_CTRL-R_CTRL-R cmdline.jax /*c_CTRL-R_CTRL-R* -c_CTRL-R_CTRL-W cmdline.jax /*c_CTRL-R_CTRL-W* -c_CTRL-U cmdline.jax /*c_CTRL-U* -c_CTRL-V cmdline.jax /*c_CTRL-V* -c_CTRL-W cmdline.jax /*c_CTRL-W* -c_CTRL-Y cmdline.jax /*c_CTRL-Y* -c_CTRL-\_CTRL-G intro.jax /*c_CTRL-\\_CTRL-G* -c_CTRL-\_CTRL-N intro.jax /*c_CTRL-\\_CTRL-N* -c_CTRL-\_e cmdline.jax /*c_CTRL-\\_e* -c_CTRL-] cmdline.jax /*c_CTRL-]* -c_CTRL-^ cmdline.jax /*c_CTRL-^* -c_CTRL-_ cmdline.jax /*c_CTRL-_* -c_Del cmdline.jax /*c_Del* -c_Down cmdline.jax /*c_Down* -c_End cmdline.jax /*c_End* -c_Esc cmdline.jax /*c_Esc* -c_Home cmdline.jax /*c_Home* -c_Insert cmdline.jax /*c_Insert* -c_Left cmdline.jax /*c_Left* -c_Right cmdline.jax /*c_Right* -c_Up cmdline.jax /*c_Up* -c_digraph cmdline.jax /*c_digraph* -c_wildchar cmdline.jax /*c_wildchar* -call() eval.jax /*call()* -carriage-return intro.jax /*carriage-return* -case change.jax /*case* -catch-all eval.jax /*catch-all* -catch-errors eval.jax /*catch-errors* -catch-interrupt eval.jax /*catch-interrupt* -catch-order eval.jax /*catch-order* -catch-text eval.jax /*catch-text* -cc change.jax /*cc* -ceil() eval.jax /*ceil()* -ch.vim syntax.jax /*ch.vim* -change-list-jumps motion.jax /*change-list-jumps* -change-name tips.jax /*change-name* -change-tabs change.jax /*change-tabs* -change.txt change.jax /*change.txt* -changelist motion.jax /*changelist* -changelog.vim syntax.jax /*changelog.vim* -changenr() eval.jax /*changenr()* -changetick eval.jax /*changetick* -changing change.jax /*changing* -char-variable eval.jax /*char-variable* -char2nr() eval.jax /*char2nr()* -characterwise motion.jax /*characterwise* -characterwise-register change.jax /*characterwise-register* -characterwise-visual visual.jax /*characterwise-visual* -charconvert_from-variable eval.jax /*charconvert_from-variable* -charconvert_to-variable eval.jax /*charconvert_to-variable* -charity uganda.jax /*charity* -charset mbyte.jax /*charset* -charset-conversion mbyte.jax /*charset-conversion* -chill.vim syntax.jax /*chill.vim* -cindent() eval.jax /*cindent()* -cinkeys-format indent.jax /*cinkeys-format* -cino-# indent.jax /*cino-#* -cino-( indent.jax /*cino-(* -cino-) indent.jax /*cino-)* -cino-+ indent.jax /*cino-+* -cino-/ indent.jax /*cino-\/* -cino-2 indent.jax /*cino-2* -cino-: indent.jax /*cino-:* -cino-= indent.jax /*cino-=* -cino-> indent.jax /*cino->* -cino-C indent.jax /*cino-C* -cino-J indent.jax /*cino-J* -cino-L indent.jax /*cino-L* -cino-M indent.jax /*cino-M* -cino-N indent.jax /*cino-N* -cino-U indent.jax /*cino-U* -cino-W indent.jax /*cino-W* -cino-^ indent.jax /*cino-^* -cino-b indent.jax /*cino-b* -cino-c indent.jax /*cino-c* -cino-e indent.jax /*cino-e* -cino-f indent.jax /*cino-f* -cino-g indent.jax /*cino-g* -cino-h indent.jax /*cino-h* -cino-i indent.jax /*cino-i* -cino-j indent.jax /*cino-j* -cino-l indent.jax /*cino-l* -cino-m indent.jax /*cino-m* -cino-n indent.jax /*cino-n* -cino-p indent.jax /*cino-p* -cino-star indent.jax /*cino-star* -cino-t indent.jax /*cino-t* -cino-u indent.jax /*cino-u* -cino-{ indent.jax /*cino-{* -cino-} indent.jax /*cino-}* -cinoptions-values indent.jax /*cinoptions-values* -clear-undo undo.jax /*clear-undo* -clearmatches() eval.jax /*clearmatches()* -client-server remote.jax /*client-server* -clientserver remote.jax /*clientserver* -clipboard gui.jax /*clipboard* -cmdarg-variable eval.jax /*cmdarg-variable* -cmdbang-variable eval.jax /*cmdbang-variable* -cmdline-arguments vi_diff.jax /*cmdline-arguments* -cmdline-completion cmdline.jax /*cmdline-completion* -cmdline-editing cmdline.jax /*cmdline-editing* -cmdline-history cmdline.jax /*cmdline-history* -cmdline-lines cmdline.jax /*cmdline-lines* -cmdline-ranges cmdline.jax /*cmdline-ranges* -cmdline-special cmdline.jax /*cmdline-special* -cmdline-too-long cmdline.jax /*cmdline-too-long* -cmdline-window cmdline.jax /*cmdline-window* -cmdline.txt cmdline.jax /*cmdline.txt* -cmdwin cmdline.jax /*cmdwin* -cmdwin-char cmdline.jax /*cmdwin-char* -cobol.vim syntax.jax /*cobol.vim* -codeset mbyte.jax /*codeset* -coding-style develop.jax /*coding-style* -col() eval.jax /*col()* -coldfusion.vim syntax.jax /*coldfusion.vim* -collapse tips.jax /*collapse* -color-xterm syntax.jax /*color-xterm* -coloring syntax.jax /*coloring* -colortest.vim syntax.jax /*colortest.vim* -command-line-functions usr_41.jax /*command-line-functions* -command-line-window cmdline.jax /*command-line-window* -command-mode intro.jax /*command-mode* -compatible-default starting.jax /*compatible-default* -compiler-compaqada ft_ada.jax /*compiler-compaqada* -compiler-decada ft_ada.jax /*compiler-decada* -compiler-gcc quickfix.jax /*compiler-gcc* -compiler-gnat ft_ada.jax /*compiler-gnat* -compiler-hpada ft_ada.jax /*compiler-hpada* -compiler-manx quickfix.jax /*compiler-manx* -compiler-perl quickfix.jax /*compiler-perl* -compiler-pyunit quickfix.jax /*compiler-pyunit* -compiler-select quickfix.jax /*compiler-select* -compiler-tex quickfix.jax /*compiler-tex* -compiler-vaxada ft_ada.jax /*compiler-vaxada* -compl-current insert.jax /*compl-current* -compl-define insert.jax /*compl-define* -compl-dictionary insert.jax /*compl-dictionary* -compl-filename insert.jax /*compl-filename* -compl-function insert.jax /*compl-function* -compl-generic insert.jax /*compl-generic* -compl-keyword insert.jax /*compl-keyword* -compl-omni insert.jax /*compl-omni* -compl-omni-filetypes insert.jax /*compl-omni-filetypes* -compl-spelling insert.jax /*compl-spelling* -compl-tag insert.jax /*compl-tag* -compl-vim insert.jax /*compl-vim* -compl-whole-line insert.jax /*compl-whole-line* -complete() eval.jax /*complete()* -complete-functions insert.jax /*complete-functions* -complete-items insert.jax /*complete-items* -complete_CTRL-E insert.jax /*complete_CTRL-E* -complete_CTRL-Y insert.jax /*complete_CTRL-Y* -complete_add() eval.jax /*complete_add()* -complete_check() eval.jax /*complete_check()* -completion-functions usr_41.jax /*completion-functions* -complex-change change.jax /*complex-change* -complex-repeat repeat.jax /*complex-repeat* -compress pi_gzip.jax /*compress* -conceal syntax.jax /*conceal* -confirm() eval.jax /*confirm()* -connection-refused message.jax /*connection-refused* -console-menus gui.jax /*console-menus* -control intro.jax /*control* -conversion-server mbyte.jax /*conversion-server* -convert-to-HTML syntax.jax /*convert-to-HTML* -convert-to-XHTML syntax.jax /*convert-to-XHTML* -convert-to-XML syntax.jax /*convert-to-XML* -copy() eval.jax /*copy()* -copy-diffs diff.jax /*copy-diffs* -copy-move change.jax /*copy-move* -copying uganda.jax /*copying* -copyright uganda.jax /*copyright* -cos() eval.jax /*cos()* -cosh() eval.jax /*cosh()* -count intro.jax /*count* -count() eval.jax /*count()* -count-bytes tips.jax /*count-bytes* -count-items tips.jax /*count-items* -count-variable eval.jax /*count-variable* -count1-variable eval.jax /*count1-variable* -cpo-! options.jax /*cpo-!* -cpo-# options.jax /*cpo-#* -cpo-$ options.jax /*cpo-$* -cpo-% options.jax /*cpo-%* -cpo-& options.jax /*cpo-&* -cpo-+ options.jax /*cpo-+* -cpo-- options.jax /*cpo--* -cpo-. options.jax /*cpo-.* -cpo-/ options.jax /*cpo-\/* -cpo-; options.jax /*cpo-;* -cpo-< options.jax /*cpo-<* -cpo-> options.jax /*cpo->* -cpo-A options.jax /*cpo-A* -cpo-B options.jax /*cpo-B* -cpo-C options.jax /*cpo-C* -cpo-D options.jax /*cpo-D* -cpo-E options.jax /*cpo-E* -cpo-F options.jax /*cpo-F* -cpo-H options.jax /*cpo-H* -cpo-I options.jax /*cpo-I* -cpo-J options.jax /*cpo-J* -cpo-K options.jax /*cpo-K* -cpo-L options.jax /*cpo-L* -cpo-M options.jax /*cpo-M* -cpo-O options.jax /*cpo-O* -cpo-P options.jax /*cpo-P* -cpo-R options.jax /*cpo-R* -cpo-S options.jax /*cpo-S* -cpo-W options.jax /*cpo-W* -cpo-X options.jax /*cpo-X* -cpo-Z options.jax /*cpo-Z* -cpo-\ options.jax /*cpo-\\* -cpo-a options.jax /*cpo-a* -cpo-b options.jax /*cpo-b* -cpo-bar options.jax /*cpo-bar* -cpo-c options.jax /*cpo-c* -cpo-d options.jax /*cpo-d* -cpo-e options.jax /*cpo-e* -cpo-f options.jax /*cpo-f* -cpo-g options.jax /*cpo-g* -cpo-i options.jax /*cpo-i* -cpo-j options.jax /*cpo-j* -cpo-k options.jax /*cpo-k* -cpo-l options.jax /*cpo-l* -cpo-m options.jax /*cpo-m* -cpo-n options.jax /*cpo-n* -cpo-o options.jax /*cpo-o* -cpo-p options.jax /*cpo-p* -cpo-q options.jax /*cpo-q* -cpo-r options.jax /*cpo-r* -cpo-s options.jax /*cpo-s* -cpo-star options.jax /*cpo-star* -cpo-t options.jax /*cpo-t* -cpo-u options.jax /*cpo-u* -cpo-v options.jax /*cpo-v* -cpo-w options.jax /*cpo-w* -cpo-x options.jax /*cpo-x* -cpo-y options.jax /*cpo-y* -cpo-{ options.jax /*cpo-{* -crash-recovery recover.jax /*crash-recovery* -creating-menus gui.jax /*creating-menus* -credits intro.jax /*credits* -crontab options.jax /*crontab* -cs-find if_cscop.jax /*cs-find* -cs7-problem term.jax /*cs7-problem* -cscope if_cscop.jax /*cscope* -cscope-commands if_cscop.jax /*cscope-commands* -cscope-find if_cscop.jax /*cscope-find* -cscope-howtouse if_cscop.jax /*cscope-howtouse* -cscope-info if_cscop.jax /*cscope-info* -cscope-intro if_cscop.jax /*cscope-intro* -cscope-limitations if_cscop.jax /*cscope-limitations* -cscope-options if_cscop.jax /*cscope-options* -cscope-suggestions if_cscop.jax /*cscope-suggestions* -cscope-win32 if_cscop.jax /*cscope-win32* -cscope_connection() eval.jax /*cscope_connection()* -cscopepathcomp if_cscop.jax /*cscopepathcomp* -cscopeprg if_cscop.jax /*cscopeprg* -cscopequickfix if_cscop.jax /*cscopequickfix* -cscoperelative if_cscop.jax /*cscoperelative* -cscopetag if_cscop.jax /*cscopetag* -cscopetagorder if_cscop.jax /*cscopetagorder* -cscopeverbose if_cscop.jax /*cscopeverbose* -csh.vim syntax.jax /*csh.vim* -cspc if_cscop.jax /*cspc* -csprg if_cscop.jax /*csprg* -csqf if_cscop.jax /*csqf* -csre if_cscop.jax /*csre* -cst if_cscop.jax /*cst* -csto if_cscop.jax /*csto* -csverb if_cscop.jax /*csverb* -ctags tagsrch.jax /*ctags* -cterm-colors syntax.jax /*cterm-colors* -ctrl intro.jax /*ctrl* -ctype-variable eval.jax /*ctype-variable* -curly-braces-function-names eval.jax /*curly-braces-function-names* -curly-braces-names eval.jax /*curly-braces-names* -current-directory editing.jax /*current-directory* -current-file editing.jax /*current-file* -current_compiler quickfix.jax /*current_compiler* -cursor() eval.jax /*cursor()* -cursor-blinking options.jax /*cursor-blinking* -cursor-down intro.jax /*cursor-down* -cursor-functions usr_41.jax /*cursor-functions* -cursor-left intro.jax /*cursor-left* -cursor-motions motion.jax /*cursor-motions* -cursor-position pattern.jax /*cursor-position* -cursor-right intro.jax /*cursor-right* -cursor-up intro.jax /*cursor-up* -cursor_down intro.jax /*cursor_down* -cursor_left intro.jax /*cursor_left* -cursor_right intro.jax /*cursor_right* -cursor_up intro.jax /*cursor_up* -cw change.jax /*cw* -cweb.vim syntax.jax /*cweb.vim* -cynlib.vim syntax.jax /*cynlib.vim* -d change.jax /*d* -daB motion.jax /*daB* -daW motion.jax /*daW* -dab motion.jax /*dab* -dap motion.jax /*dap* -das motion.jax /*das* -date-functions usr_41.jax /*date-functions* -dav pi_netrw.jax /*dav* -davs pi_netrw.jax /*davs* -daw motion.jax /*daw* -dd change.jax /*dd* -debug-gcc debug.jax /*debug-gcc* -debug-highlight debugger.jax /*debug-highlight* -debug-leaks debug.jax /*debug-leaks* -debug-minidump debug.jax /*debug-minidump* -debug-mode repeat.jax /*debug-mode* -debug-scripts repeat.jax /*debug-scripts* -debug-signs debugger.jax /*debug-signs* -debug-vim debug.jax /*debug-vim* -debug-vs2005 debug.jax /*debug-vs2005* -debug-win32 debug.jax /*debug-win32* -debug-windbg debug.jax /*debug-windbg* -debug.txt debug.jax /*debug.txt* -debugger-compilation debugger.jax /*debugger-compilation* -debugger-features debugger.jax /*debugger-features* -debugger-integration debugger.jax /*debugger-integration* -debugger-support debugger.jax /*debugger-support* -debugger.txt debugger.jax /*debugger.txt* -dec-mouse options.jax /*dec-mouse* -decada_members ft_ada.jax /*decada_members* -deepcopy() eval.jax /*deepcopy()* -definition-search tagsrch.jax /*definition-search* -definitions intro.jax /*definitions* -delete() eval.jax /*delete()* -delete-insert change.jax /*delete-insert* -delete-menus gui.jax /*delete-menus* -deleting change.jax /*deleting* -design-assumptions develop.jax /*design-assumptions* -design-compatible develop.jax /*design-compatible* -design-decisions develop.jax /*design-decisions* -design-documented develop.jax /*design-documented* -design-flexible develop.jax /*design-flexible* -design-goals develop.jax /*design-goals* -design-improved develop.jax /*design-improved* -design-maintain develop.jax /*design-maintain* -design-multi-platform develop.jax /*design-multi-platform* -design-not develop.jax /*design-not* -design-speed-size develop.jax /*design-speed-size* -desktop.vim syntax.jax /*desktop.vim* -develop-spell develop.jax /*develop-spell* -develop-spell-suggestions develop.jax /*develop-spell-suggestions* -develop.txt develop.jax /*develop.txt* -development develop.jax /*development* -dh change.jax /*dh* -diB motion.jax /*diB* -diW motion.jax /*diW* -dialog gui_w32.jax /*dialog* -dib motion.jax /*dib* -dict-functions usr_41.jax /*dict-functions* -dict-identity eval.jax /*dict-identity* -dict-modification eval.jax /*dict-modification* -did_filetype() eval.jax /*did_filetype()* -diff diff.jax /*diff* -diff-diffexpr diff.jax /*diff-diffexpr* -diff-mode diff.jax /*diff-mode* -diff-options diff.jax /*diff-options* -diff-original-file diff.jax /*diff-original-file* -diff-patchexpr diff.jax /*diff-patchexpr* -diff.txt diff.jax /*diff.txt* -diff_filler() eval.jax /*diff_filler()* -diff_hlID() eval.jax /*diff_hlID()* -digraph digraph.jax /*digraph* -digraph-arg change.jax /*digraph-arg* -digraph-encoding digraph.jax /*digraph-encoding* -digraph-table digraph.jax /*digraph-table* -digraph-table-mbyte digraph.jax /*digraph-table-mbyte* -digraph.txt digraph.jax /*digraph.txt* -digraphs digraph.jax /*digraphs* -digraphs-default digraph.jax /*digraphs-default* -digraphs-define digraph.jax /*digraphs-define* -digraphs-use digraph.jax /*digraphs-use* -dip motion.jax /*dip* -dircolors.vim syntax.jax /*dircolors.vim* -dis motion.jax /*dis* -disable-menus gui.jax /*disable-menus* -distribute-script usr_41.jax /*distribute-script* -distribution intro.jax /*distribution* -diw motion.jax /*diw* -dl change.jax /*dl* -do diff.jax /*do* -doc-file-list help.jax /*doc-file-list* -docbk.vim syntax.jax /*docbk.vim* -docbksgml.vim syntax.jax /*docbksgml.vim* -docbkxml.vim syntax.jax /*docbkxml.vim* -docbook syntax.jax /*docbook* -donate uganda.jax /*donate* -dos os_dos.jax /*dos* -dos-:cd os_dos.jax /*dos-:cd* -dos-CTRL-Break os_dos.jax /*dos-CTRL-Break* -dos-backslash os_dos.jax /*dos-backslash* -dos-colors os_dos.jax /*dos-colors* -dos-file-formats os_dos.jax /*dos-file-formats* -dos-locations os_dos.jax /*dos-locations* -dos-shell os_dos.jax /*dos-shell* -dos-standard-mappings os_dos.jax /*dos-standard-mappings* -dos-temp-files os_dos.jax /*dos-temp-files* -dos16 os_msdos.jax /*dos16* -dos32 os_msdos.jax /*dos32* -dosbatch.vim syntax.jax /*dosbatch.vim* -double-click term.jax /*double-click* -download intro.jax /*download* -doxygen-syntax syntax.jax /*doxygen-syntax* -doxygen.vim syntax.jax /*doxygen.vim* -dp diff.jax /*dp* -drag-n-drop gui.jax /*drag-n-drop* -drag-n-drop-win32 gui_w32.jax /*drag-n-drop-win32* -drag-status-line term.jax /*drag-status-line* -dtd.vim syntax.jax /*dtd.vim* -dtd2vim insert.jax /*dtd2vim* -dying-variable eval.jax /*dying-variable* -e motion.jax /*e* -easy starting.jax /*easy* -edit-a-file editing.jax /*edit-a-file* -edit-binary editing.jax /*edit-binary* -edit-dialogs editing.jax /*edit-dialogs* -edit-files editing.jax /*edit-files* -edit-intro editing.jax /*edit-intro* -edit-no-break usr_25.jax /*edit-no-break* -editing.txt editing.jax /*editing.txt* -efm-%> quickfix.jax /*efm-%>* -efm-entries quickfix.jax /*efm-entries* -efm-ignore quickfix.jax /*efm-ignore* -eiffel.vim syntax.jax /*eiffel.vim* -emacs-keys tips.jax /*emacs-keys* -emacs-tags tagsrch.jax /*emacs-tags* -emacs_tags tagsrch.jax /*emacs_tags* -empty() eval.jax /*empty()* -encoding-names mbyte.jax /*encoding-names* -encoding-table mbyte.jax /*encoding-table* -encoding-values mbyte.jax /*encoding-values* -encryption editing.jax /*encryption* -end intro.jax /*end* -end-of-file pattern.jax /*end-of-file* -enlightened-terminal syntax.jax /*enlightened-terminal* -erlang.vim syntax.jax /*erlang.vim* -errmsg-variable eval.jax /*errmsg-variable* -error-file-format quickfix.jax /*error-file-format* -error-messages message.jax /*error-messages* -errorformat quickfix.jax /*errorformat* -errorformat-Jikes quickfix.jax /*errorformat-Jikes* -errorformat-LaTeX quickfix.jax /*errorformat-LaTeX* -errorformat-Perl quickfix.jax /*errorformat-Perl* -errorformat-ant quickfix.jax /*errorformat-ant* -errorformat-changed version4.jax /*errorformat-changed* -errorformat-jade quickfix.jax /*errorformat-jade* -errorformat-javac quickfix.jax /*errorformat-javac* -errorformat-multi-line quickfix.jax /*errorformat-multi-line* -errorformat-separate-filename quickfix.jax /*errorformat-separate-filename* -errorformats quickfix.jax /*errorformats* -errors message.jax /*errors* -escape intro.jax /*escape* -escape() eval.jax /*escape()* -escape-bar version4.jax /*escape-bar* -eval eval.jax /*eval* -eval() eval.jax /*eval()* -eval-examples eval.jax /*eval-examples* -eval-sandbox eval.jax /*eval-sandbox* -eval.txt eval.jax /*eval.txt* -eventhandler() eval.jax /*eventhandler()* -eview starting.jax /*eview* -evim starting.jax /*evim* -evim-keys starting.jax /*evim-keys* -evim.vim starting.jax /*evim.vim* -ex starting.jax /*ex* -ex-cmd-index index.jax /*ex-cmd-index* -ex-edit-index index.jax /*ex-edit-index* -ex-flags cmdline.jax /*ex-flags* -ex: options.jax /*ex:* -except-autocmd eval.jax /*except-autocmd* -except-autocmd-Cmd eval.jax /*except-autocmd-Cmd* -except-autocmd-Post eval.jax /*except-autocmd-Post* -except-autocmd-Pre eval.jax /*except-autocmd-Pre* -except-autocmd-ill eval.jax /*except-autocmd-ill* -except-compat eval.jax /*except-compat* -except-examine eval.jax /*except-examine* -except-from-finally eval.jax /*except-from-finally* -except-hier-param eval.jax /*except-hier-param* -except-several-errors eval.jax /*except-several-errors* -except-single-line eval.jax /*except-single-line* -except-syntax-err eval.jax /*except-syntax-err* -except-syntax-error eval.jax /*except-syntax-error* -exception-handling eval.jax /*exception-handling* -exception-variable eval.jax /*exception-variable* -exclusive motion.jax /*exclusive* -exclusive-linewise motion.jax /*exclusive-linewise* -executable() eval.jax /*executable()* -execute-menus gui.jax /*execute-menus* -exim starting.jax /*exim* -exists() eval.jax /*exists()* -exp() eval.jax /*exp()* -expand() eval.jax /*expand()* -expand-env options.jax /*expand-env* -expand-environment-var options.jax /*expand-environment-var* -expr eval.jax /*expr* -expr-! eval.jax /*expr-!* -expr-!= eval.jax /*expr-!=* -expr-!=# eval.jax /*expr-!=#* -expr-!=? eval.jax /*expr-!=?* -expr-!~ eval.jax /*expr-!~* -expr-!~# eval.jax /*expr-!~#* -expr-!~? eval.jax /*expr-!~?* -expr-% eval.jax /*expr-%* -expr-&& eval.jax /*expr-&&* -expr-' eval.jax /*expr-'* -expr-+ eval.jax /*expr-+* -expr-- eval.jax /*expr--* -expr-. eval.jax /*expr-.* -expr-/ eval.jax /*expr-\/* -expr-< eval.jax /*expr-<* -expr-<# eval.jax /*expr-<#* -expr-<= eval.jax /*expr-<=* -expr-<=# eval.jax /*expr-<=#* -expr-<=? eval.jax /*expr-<=?* -expr-<? eval.jax /*expr-<?* -expr-== eval.jax /*expr-==* -expr-==# eval.jax /*expr-==#* -expr-==? eval.jax /*expr-==?* -expr-=~ eval.jax /*expr-=~* -expr-=~# eval.jax /*expr-=~#* -expr-=~? eval.jax /*expr-=~?* -expr-> eval.jax /*expr->* -expr-># eval.jax /*expr->#* -expr->= eval.jax /*expr->=* -expr->=# eval.jax /*expr->=#* -expr->=? eval.jax /*expr->=?* -expr->? eval.jax /*expr->?* -expr-[:] eval.jax /*expr-[:]* -expr-[] eval.jax /*expr-[]* -expr-barbar eval.jax /*expr-barbar* -expr-entry eval.jax /*expr-entry* -expr-env eval.jax /*expr-env* -expr-env-expand eval.jax /*expr-env-expand* -expr-function eval.jax /*expr-function* -expr-is eval.jax /*expr-is* -expr-is# eval.jax /*expr-is#* -expr-is? eval.jax /*expr-is?* -expr-isnot eval.jax /*expr-isnot* -expr-isnot# eval.jax /*expr-isnot#* -expr-isnot? eval.jax /*expr-isnot?* -expr-nesting eval.jax /*expr-nesting* -expr-number eval.jax /*expr-number* -expr-option eval.jax /*expr-option* -expr-quote eval.jax /*expr-quote* -expr-register eval.jax /*expr-register* -expr-star eval.jax /*expr-star* -expr-string eval.jax /*expr-string* -expr-unary-+ eval.jax /*expr-unary-+* -expr-unary-- eval.jax /*expr-unary--* -expr-variable eval.jax /*expr-variable* -expr1 eval.jax /*expr1* -expr2 eval.jax /*expr2* -expr3 eval.jax /*expr3* -expr4 eval.jax /*expr4* -expr5 eval.jax /*expr5* -expr6 eval.jax /*expr6* -expr7 eval.jax /*expr7* -expr8 eval.jax /*expr8* -expr9 eval.jax /*expr9* -expression eval.jax /*expression* -expression-commands eval.jax /*expression-commands* -expression-syntax eval.jax /*expression-syntax* -exrc starting.jax /*exrc* -extend() eval.jax /*extend()* -extension-removal cmdline.jax /*extension-removal* -f motion.jax /*f* -faq intro.jax /*faq* -farsi farsi.jax /*farsi* -farsi.txt farsi.jax /*farsi.txt* -fasm.vim syntax.jax /*fasm.vim* -fcs_choice-variable eval.jax /*fcs_choice-variable* -fcs_reason-variable eval.jax /*fcs_reason-variable* -feature-list eval.jax /*feature-list* -feedkeys() eval.jax /*feedkeys()* -fetch pi_netrw.jax /*fetch* -file-formats editing.jax /*file-formats* -file-functions usr_41.jax /*file-functions* -file-pattern autocmd.jax /*file-pattern* -file-read insert.jax /*file-read* -file-searching editing.jax /*file-searching* -file-type filetype.jax /*file-type* -file-types filetype.jax /*file-types* -file_readable() eval.jax /*file_readable()* -filename-backslash cmdline.jax /*filename-backslash* -filename-modifiers cmdline.jax /*filename-modifiers* -filereadable() eval.jax /*filereadable()* -filetype filetype.jax /*filetype* -filetype-detect filetype.jax /*filetype-detect* -filetype-ignore filetype.jax /*filetype-ignore* -filetype-overrule filetype.jax /*filetype-overrule* -filetype-plugin usr_43.jax /*filetype-plugin* -filetype-plugins filetype.jax /*filetype-plugins* -filetype.txt filetype.jax /*filetype.txt* -filetypes filetype.jax /*filetypes* -filewritable() eval.jax /*filewritable()* -filter change.jax /*filter* -filter() eval.jax /*filter()* -find-manpage usr_12.jax /*find-manpage* -find-replace usr_10.jax /*find-replace* -finddir() eval.jax /*finddir()* -findfile() eval.jax /*findfile()* -flexwiki.vim syntax.jax /*flexwiki.vim* -float-e eval.jax /*float-e* -float-functions usr_41.jax /*float-functions* -float-pi eval.jax /*float-pi* -float2nr() eval.jax /*float2nr()* -floating-point-format eval.jax /*floating-point-format* -floating-point-precision eval.jax /*floating-point-precision* -floor() eval.jax /*floor()* -fmod() eval.jax /*fmod()* -fname_diff-variable eval.jax /*fname_diff-variable* -fname_in-variable eval.jax /*fname_in-variable* -fname_new-variable eval.jax /*fname_new-variable* -fname_out-variable eval.jax /*fname_out-variable* -fnameescape() eval.jax /*fnameescape()* -fnamemodify() eval.jax /*fnamemodify()* -fo-table change.jax /*fo-table* -fold-behavior fold.jax /*fold-behavior* -fold-colors fold.jax /*fold-colors* -fold-commands fold.jax /*fold-commands* -fold-create-marker fold.jax /*fold-create-marker* -fold-delete-marker fold.jax /*fold-delete-marker* -fold-diff fold.jax /*fold-diff* -fold-expr fold.jax /*fold-expr* -fold-foldcolumn fold.jax /*fold-foldcolumn* -fold-foldlevel fold.jax /*fold-foldlevel* -fold-foldtext fold.jax /*fold-foldtext* -fold-indent fold.jax /*fold-indent* -fold-manual fold.jax /*fold-manual* -fold-marker fold.jax /*fold-marker* -fold-methods fold.jax /*fold-methods* -fold-options fold.jax /*fold-options* -fold-syntax fold.jax /*fold-syntax* -fold.txt fold.jax /*fold.txt* -foldclosed() eval.jax /*foldclosed()* -foldclosedend() eval.jax /*foldclosedend()* -folddashes-variable eval.jax /*folddashes-variable* -foldend-variable eval.jax /*foldend-variable* -folding fold.jax /*folding* -folding-functions usr_41.jax /*folding-functions* -foldlevel() eval.jax /*foldlevel()* -foldlevel-variable eval.jax /*foldlevel-variable* -folds fold.jax /*folds* -foldstart-variable eval.jax /*foldstart-variable* -foldtext() eval.jax /*foldtext()* -foldtextresult() eval.jax /*foldtextresult()* -font-sizes gui_x11.jax /*font-sizes* -fontset mbyte.jax /*fontset* -foreground() eval.jax /*foreground()* -fork os_unix.jax /*fork* -form.vim syntax.jax /*form.vim* -format-bullet-list tips.jax /*format-bullet-list* -format-comments change.jax /*format-comments* -formatting change.jax /*formatting* -formfeed intro.jax /*formfeed* -fortran.vim syntax.jax /*fortran.vim* -frombook usr_01.jax /*frombook* -ft-abel-syntax syntax.jax /*ft-abel-syntax* -ft-ada-commands ft_ada.jax /*ft-ada-commands* -ft-ada-constants ft_ada.jax /*ft-ada-constants* -ft-ada-functions ft_ada.jax /*ft-ada-functions* -ft-ada-indent ft_ada.jax /*ft-ada-indent* -ft-ada-omni ft_ada.jax /*ft-ada-omni* -ft-ada-options ft_ada.jax /*ft-ada-options* -ft-ada-plugin ft_ada.jax /*ft-ada-plugin* -ft-ada-syntax ft_ada.jax /*ft-ada-syntax* -ft-ada-variables ft_ada.jax /*ft-ada-variables* -ft-ant-syntax syntax.jax /*ft-ant-syntax* -ft-apache-syntax syntax.jax /*ft-apache-syntax* -ft-asm-syntax syntax.jax /*ft-asm-syntax* -ft-asm68k-syntax syntax.jax /*ft-asm68k-syntax* -ft-asmh8300-syntax syntax.jax /*ft-asmh8300-syntax* -ft-aspperl-syntax syntax.jax /*ft-aspperl-syntax* -ft-aspvbs-syntax syntax.jax /*ft-aspvbs-syntax* -ft-bash-syntax syntax.jax /*ft-bash-syntax* -ft-basic-syntax syntax.jax /*ft-basic-syntax* -ft-c-omni insert.jax /*ft-c-omni* -ft-c-syntax syntax.jax /*ft-c-syntax* -ft-ch-syntax syntax.jax /*ft-ch-syntax* -ft-changelog-plugin filetype.jax /*ft-changelog-plugin* -ft-changelog-syntax syntax.jax /*ft-changelog-syntax* -ft-chill-syntax syntax.jax /*ft-chill-syntax* -ft-cobol-syntax syntax.jax /*ft-cobol-syntax* -ft-coldfusion-syntax syntax.jax /*ft-coldfusion-syntax* -ft-csh-syntax syntax.jax /*ft-csh-syntax* -ft-css-omni insert.jax /*ft-css-omni* -ft-cweb-syntax syntax.jax /*ft-cweb-syntax* -ft-cynlib-syntax syntax.jax /*ft-cynlib-syntax* -ft-desktop-syntax syntax.jax /*ft-desktop-syntax* -ft-dircolors-syntax syntax.jax /*ft-dircolors-syntax* -ft-docbk-syntax syntax.jax /*ft-docbk-syntax* -ft-docbksgml-syntax syntax.jax /*ft-docbksgml-syntax* -ft-docbkxml-syntax syntax.jax /*ft-docbkxml-syntax* -ft-dosbatch-syntax syntax.jax /*ft-dosbatch-syntax* -ft-dtd-syntax syntax.jax /*ft-dtd-syntax* -ft-eiffel-syntax syntax.jax /*ft-eiffel-syntax* -ft-erlang-syntax syntax.jax /*ft-erlang-syntax* -ft-flexwiki-syntax syntax.jax /*ft-flexwiki-syntax* -ft-form-syntax syntax.jax /*ft-form-syntax* -ft-fortran-indent indent.jax /*ft-fortran-indent* -ft-fortran-plugin filetype.jax /*ft-fortran-plugin* -ft-fortran-syntax syntax.jax /*ft-fortran-syntax* -ft-fvwm-syntax syntax.jax /*ft-fvwm-syntax* -ft-gitcommit-plugin filetype.jax /*ft-gitcommit-plugin* -ft-groff-syntax syntax.jax /*ft-groff-syntax* -ft-gsp-syntax syntax.jax /*ft-gsp-syntax* -ft-haskell-syntax syntax.jax /*ft-haskell-syntax* -ft-html-omni insert.jax /*ft-html-omni* -ft-html-syntax syntax.jax /*ft-html-syntax* -ft-htmlos-syntax syntax.jax /*ft-htmlos-syntax* -ft-ia64-syntax syntax.jax /*ft-ia64-syntax* -ft-inform-syntax syntax.jax /*ft-inform-syntax* -ft-java-syntax syntax.jax /*ft-java-syntax* -ft-javascript-omni insert.jax /*ft-javascript-omni* -ft-ksh-syntax syntax.jax /*ft-ksh-syntax* -ft-lace-syntax syntax.jax /*ft-lace-syntax* -ft-lex-syntax syntax.jax /*ft-lex-syntax* -ft-lifelines-syntax syntax.jax /*ft-lifelines-syntax* -ft-lisp-syntax syntax.jax /*ft-lisp-syntax* -ft-lite-syntax syntax.jax /*ft-lite-syntax* -ft-lpc-syntax syntax.jax /*ft-lpc-syntax* -ft-lua-syntax syntax.jax /*ft-lua-syntax* -ft-mail-plugin filetype.jax /*ft-mail-plugin* -ft-mail.vim syntax.jax /*ft-mail.vim* -ft-make-syntax syntax.jax /*ft-make-syntax* -ft-man-plugin filetype.jax /*ft-man-plugin* -ft-maple-syntax syntax.jax /*ft-maple-syntax* -ft-masm-syntax syntax.jax /*ft-masm-syntax* -ft-mathematica-syntax syntax.jax /*ft-mathematica-syntax* -ft-mma-syntax syntax.jax /*ft-mma-syntax* -ft-moo-syntax syntax.jax /*ft-moo-syntax* -ft-msql-syntax syntax.jax /*ft-msql-syntax* -ft-nasm-syntax syntax.jax /*ft-nasm-syntax* -ft-ncf-syntax syntax.jax /*ft-ncf-syntax* -ft-nroff-syntax syntax.jax /*ft-nroff-syntax* -ft-ocaml-syntax syntax.jax /*ft-ocaml-syntax* -ft-papp-syntax syntax.jax /*ft-papp-syntax* -ft-pascal-syntax syntax.jax /*ft-pascal-syntax* -ft-pdf-plugin filetype.jax /*ft-pdf-plugin* -ft-perl-syntax syntax.jax /*ft-perl-syntax* -ft-php-indent indent.jax /*ft-php-indent* -ft-php-omni insert.jax /*ft-php-omni* -ft-php-syntax syntax.jax /*ft-php-syntax* -ft-php3-syntax syntax.jax /*ft-php3-syntax* -ft-phtml-syntax syntax.jax /*ft-phtml-syntax* -ft-plaintex-syntax syntax.jax /*ft-plaintex-syntax* -ft-postscr-syntax syntax.jax /*ft-postscr-syntax* -ft-ppwiz-syntax syntax.jax /*ft-ppwiz-syntax* -ft-printcap-syntax syntax.jax /*ft-printcap-syntax* -ft-progress-syntax syntax.jax /*ft-progress-syntax* -ft-ptcap-syntax syntax.jax /*ft-ptcap-syntax* -ft-python-indent indent.jax /*ft-python-indent* -ft-python-syntax syntax.jax /*ft-python-syntax* -ft-quake-syntax syntax.jax /*ft-quake-syntax* -ft-readline-syntax syntax.jax /*ft-readline-syntax* -ft-rexx-syntax syntax.jax /*ft-rexx-syntax* -ft-ruby-omni insert.jax /*ft-ruby-omni* -ft-ruby-syntax syntax.jax /*ft-ruby-syntax* -ft-scheme-syntax syntax.jax /*ft-scheme-syntax* -ft-sdl-syntax syntax.jax /*ft-sdl-syntax* -ft-sed-syntax syntax.jax /*ft-sed-syntax* -ft-sgml-syntax syntax.jax /*ft-sgml-syntax* -ft-sh-indent indent.jax /*ft-sh-indent* -ft-sh-syntax syntax.jax /*ft-sh-syntax* -ft-spec-plugin filetype.jax /*ft-spec-plugin* -ft-spup-syntax syntax.jax /*ft-spup-syntax* -ft-sql filetype.jax /*ft-sql* -ft-sql-omni insert.jax /*ft-sql-omni* -ft-sql-syntax syntax.jax /*ft-sql-syntax* -ft-sqlanywhere-syntax syntax.jax /*ft-sqlanywhere-syntax* -ft-sqlinformix-syntax syntax.jax /*ft-sqlinformix-syntax* -ft-syntax-omni insert.jax /*ft-syntax-omni* -ft-termcap-syntax syntax.jax /*ft-termcap-syntax* -ft-tex-plugin filetype.jax /*ft-tex-plugin* -ft-tex-syntax syntax.jax /*ft-tex-syntax* -ft-tf-syntax syntax.jax /*ft-tf-syntax* -ft-vb-syntax syntax.jax /*ft-vb-syntax* -ft-verilog-indent indent.jax /*ft-verilog-indent* -ft-vhdl-indent indent.jax /*ft-vhdl-indent* -ft-vim-indent indent.jax /*ft-vim-indent* -ft-vim-syntax syntax.jax /*ft-vim-syntax* -ft-xf86conf-syntax syntax.jax /*ft-xf86conf-syntax* -ft-xhtml-omni insert.jax /*ft-xhtml-omni* -ft-xml-omni insert.jax /*ft-xml-omni* -ft-xml-syntax syntax.jax /*ft-xml-syntax* -ft-xpm-syntax syntax.jax /*ft-xpm-syntax* -ft_ada.txt ft_ada.jax /*ft_ada.txt* -ft_sql.txt ft_sql.jax /*ft_sql.txt* -ftdetect filetype.jax /*ftdetect* -ftp pi_netrw.jax /*ftp* -ftplugin usr_41.jax /*ftplugin* -ftplugin-docs filetype.jax /*ftplugin-docs* -ftplugin-name usr_05.jax /*ftplugin-name* -ftplugin-overrule filetype.jax /*ftplugin-overrule* -ftplugin-special usr_41.jax /*ftplugin-special* -ftplugins usr_05.jax /*ftplugins* -function() eval.jax /*function()* -function-argument eval.jax /*function-argument* -function-key intro.jax /*function-key* -function-list usr_41.jax /*function-list* -function-range-example eval.jax /*function-range-example* -function-search-undo eval.jax /*function-search-undo* -function_key intro.jax /*function_key* -functions eval.jax /*functions* -fvwm.vim syntax.jax /*fvwm.vim* -g index.jax /*g* -g# pattern.jax /*g#* -g$ motion.jax /*g$* -g& change.jax /*g&* -g' motion.jax /*g'* -g'a motion.jax /*g'a* -g+ undo.jax /*g+* -g, motion.jax /*g,* -g- undo.jax /*g-* -g0 motion.jax /*g0* -g8 various.jax /*g8* -g:NetrwTopLvlMenu pi_netrw.jax /*g:NetrwTopLvlMenu* -g:Netrw_funcref pi_netrw.jax /*g:Netrw_funcref* -g:ada#Comment ft_ada.jax /*g:ada#Comment* -g:ada#Ctags_Kinds ft_ada.jax /*g:ada#Ctags_Kinds* -g:ada#DotWordRegex ft_ada.jax /*g:ada#DotWordRegex* -g:ada#Keywords ft_ada.jax /*g:ada#Keywords* -g:ada#WordRegex ft_ada.jax /*g:ada#WordRegex* -g:ada_abbrev ft_ada.jax /*g:ada_abbrev* -g:ada_all_tab_usage ft_ada.jax /*g:ada_all_tab_usage* -g:ada_begin_preproc ft_ada.jax /*g:ada_begin_preproc* -g:ada_default_compiler ft_ada.jax /*g:ada_default_compiler* -g:ada_extended_completion ft_ada.jax /*g:ada_extended_completion* -g:ada_extended_tagging ft_ada.jax /*g:ada_extended_tagging* -g:ada_folding ft_ada.jax /*g:ada_folding* -g:ada_gnat_extensions ft_ada.jax /*g:ada_gnat_extensions* -g:ada_line_errors ft_ada.jax /*g:ada_line_errors* -g:ada_no_tab_space_error ft_ada.jax /*g:ada_no_tab_space_error* -g:ada_no_trail_space_error ft_ada.jax /*g:ada_no_trail_space_error* -g:ada_omni_with_keywords ft_ada.jax /*g:ada_omni_with_keywords* -g:ada_rainbow_color ft_ada.jax /*g:ada_rainbow_color* -g:ada_space_errors ft_ada.jax /*g:ada_space_errors* -g:ada_standard_types ft_ada.jax /*g:ada_standard_types* -g:ada_with_gnat_project_files ft_ada.jax /*g:ada_with_gnat_project_files* -g:ada_withuse_ordinary ft_ada.jax /*g:ada_withuse_ordinary* -g:colors_name options.jax /*g:colors_name* -g:decada ft_ada.jax /*g:decada* -g:decada.Error_Format ft_ada.jax /*g:decada.Error_Format* -g:decada.Make() ft_ada.jax /*g:decada.Make()* -g:decada.Make_Command ft_ada.jax /*g:decada.Make_Command* -g:decada.Unit_Name() ft_ada.jax /*g:decada.Unit_Name()* -g:filetype_csh syntax.jax /*g:filetype_csh* -g:filetype_r syntax.jax /*g:filetype_r* -g:gnat ft_ada.jax /*g:gnat* -g:gnat.Error_Format ft_ada.jax /*g:gnat.Error_Format* -g:gnat.Find() ft_ada.jax /*g:gnat.Find()* -g:gnat.Find_Program ft_ada.jax /*g:gnat.Find_Program* -g:gnat.Make() ft_ada.jax /*g:gnat.Make()* -g:gnat.Make_Command ft_ada.jax /*g:gnat.Make_Command* -g:gnat.Pretty() ft_ada.jax /*g:gnat.Pretty()* -g:gnat.Pretty_Program ft_ada.jax /*g:gnat.Pretty_Program* -g:gnat.Project_File ft_ada.jax /*g:gnat.Project_File* -g:gnat.Set_Project_File() ft_ada.jax /*g:gnat.Set_Project_File()* -g:gnat.Tags() ft_ada.jax /*g:gnat.Tags()* -g:gnat.Tags_Command ft_ada.jax /*g:gnat.Tags_Command* -g:netrw_alto pi_netrw.jax /*g:netrw_alto* -g:netrw_altv pi_netrw.jax /*g:netrw_altv* -g:netrw_banner pi_netrw.jax /*g:netrw_banner* -g:netrw_browse_split pi_netrw.jax /*g:netrw_browse_split* -g:netrw_browsex_viewer pi_netrw.jax /*g:netrw_browsex_viewer* -g:netrw_bufsettings pi_netrw.jax /*g:netrw_bufsettings* -g:netrw_chgperm pi_netrw.jax /*g:netrw_chgperm* -g:netrw_chgwin pi_netrw.jax /*g:netrw_chgwin* -g:netrw_compress pi_netrw.jax /*g:netrw_compress* -g:netrw_ctags pi_netrw.jax /*g:netrw_ctags* -g:netrw_cursor pi_netrw.jax /*g:netrw_cursor* -g:netrw_cygwin pi_netrw.jax /*g:netrw_cygwin* -g:netrw_dav_cmd pi_netrw.jax /*g:netrw_dav_cmd* -g:netrw_decompress pi_netrw.jax /*g:netrw_decompress* -g:netrw_dirhistmax pi_netrw.jax /*g:netrw_dirhistmax* -g:netrw_fastbrowse pi_netrw.jax /*g:netrw_fastbrowse* -g:netrw_fetch_cmd pi_netrw.jax /*g:netrw_fetch_cmd* -g:netrw_fname_escape pi_netrw.jax /*g:netrw_fname_escape* -g:netrw_ftp pi_netrw.jax /*g:netrw_ftp* -g:netrw_ftp_browse_reject pi_netrw.jax /*g:netrw_ftp_browse_reject* -g:netrw_ftp_cmd pi_netrw.jax /*g:netrw_ftp_cmd* -g:netrw_ftp_list_cmd pi_netrw.jax /*g:netrw_ftp_list_cmd* -g:netrw_ftp_sizelist_cmd pi_netrw.jax /*g:netrw_ftp_sizelist_cmd* -g:netrw_ftp_timelist_cmd pi_netrw.jax /*g:netrw_ftp_timelist_cmd* -g:netrw_ftpextracmd pi_netrw.jax /*g:netrw_ftpextracmd* -g:netrw_ftpmode pi_netrw.jax /*g:netrw_ftpmode* -g:netrw_glob_escape pi_netrw.jax /*g:netrw_glob_escape* -g:netrw_hide pi_netrw.jax /*g:netrw_hide* -g:netrw_home pi_netrw.jax /*g:netrw_home* -g:netrw_http_cmd pi_netrw.jax /*g:netrw_http_cmd* -g:netrw_http_xcmd pi_netrw.jax /*g:netrw_http_xcmd* -g:netrw_ignorenetrc pi_netrw.jax /*g:netrw_ignorenetrc* -g:netrw_keepdir pi_netrw.jax /*g:netrw_keepdir* -g:netrw_list_cmd pi_netrw.jax /*g:netrw_list_cmd* -g:netrw_list_hide pi_netrw.jax /*g:netrw_list_hide* -g:netrw_liststyle pi_netrw.jax /*g:netrw_liststyle* -g:netrw_local_mkdir pi_netrw.jax /*g:netrw_local_mkdir* -g:netrw_local_rmdir pi_netrw.jax /*g:netrw_local_rmdir* -g:netrw_localcopycmd pi_netrw.jax /*g:netrw_localcopycmd* -g:netrw_localmovecmd pi_netrw.jax /*g:netrw_localmovecmd* -g:netrw_maxfilenamelen pi_netrw.jax /*g:netrw_maxfilenamelen* -g:netrw_menu pi_netrw.jax /*g:netrw_menu* -g:netrw_mkdir_cmd pi_netrw.jax /*g:netrw_mkdir_cmd* -g:netrw_mousemaps pi_netrw.jax /*g:netrw_mousemaps* -g:netrw_nogx pi_netrw.jax /*g:netrw_nogx* -g:netrw_preview pi_netrw.jax /*g:netrw_preview* -g:netrw_rcp_cmd pi_netrw.jax /*g:netrw_rcp_cmd* -g:netrw_retmap pi_netrw.jax /*g:netrw_retmap* -g:netrw_rm_cmd pi_netrw.jax /*g:netrw_rm_cmd* -g:netrw_rmdir_cmd pi_netrw.jax /*g:netrw_rmdir_cmd* -g:netrw_rmf_cmd pi_netrw.jax /*g:netrw_rmf_cmd* -g:netrw_rsync_cmd pi_netrw.jax /*g:netrw_rsync_cmd* -g:netrw_scp_cmd pi_netrw.jax /*g:netrw_scp_cmd* -g:netrw_scpport pi_netrw.jax /*g:netrw_scpport* -g:netrw_sepchr pi_netrw.jax /*g:netrw_sepchr* -g:netrw_sftp_cmd pi_netrw.jax /*g:netrw_sftp_cmd* -g:netrw_silent pi_netrw.jax /*g:netrw_silent* -g:netrw_sort_by pi_netrw.jax /*g:netrw_sort_by* -g:netrw_sort_direction pi_netrw.jax /*g:netrw_sort_direction* -g:netrw_sort_options pi_netrw.jax /*g:netrw_sort_options* -g:netrw_sort_sequence pi_netrw.jax /*g:netrw_sort_sequence* -g:netrw_special_syntax pi_netrw.jax /*g:netrw_special_syntax* -g:netrw_ssh_browse_reject pi_netrw.jax /*g:netrw_ssh_browse_reject* -g:netrw_ssh_cmd pi_netrw.jax /*g:netrw_ssh_cmd* -g:netrw_sshport pi_netrw.jax /*g:netrw_sshport* -g:netrw_timefmt pi_netrw.jax /*g:netrw_timefmt* -g:netrw_tmpfile_escape pi_netrw.jax /*g:netrw_tmpfile_escape* -g:netrw_uid pi_netrw.jax /*g:netrw_uid* -g:netrw_use_errorwindow pi_netrw.jax /*g:netrw_use_errorwindow* -g:netrw_use_noswf pi_netrw.jax /*g:netrw_use_noswf* -g:netrw_use_nt_rcp pi_netrw.jax /*g:netrw_use_nt_rcp* -g:netrw_win95ftp pi_netrw.jax /*g:netrw_win95ftp* -g:netrw_winsize pi_netrw.jax /*g:netrw_winsize* -g:netrw_xstrlen pi_netrw.jax /*g:netrw_xstrlen* -g:syntax_on syntax.jax /*g:syntax_on* -g:tar_browseoptions pi_tar.jax /*g:tar_browseoptions* -g:tar_cmd pi_tar.jax /*g:tar_cmd* -g:tar_copycmd pi_tar.jax /*g:tar_copycmd* -g:tar_extractcmd pi_tar.jax /*g:tar_extractcmd* -g:tar_nomax pi_tar.jax /*g:tar_nomax* -g:tar_readoptions pi_tar.jax /*g:tar_readoptions* -g:tar_secure pi_tar.jax /*g:tar_secure* -g:tar_writeoptions pi_tar.jax /*g:tar_writeoptions* -g:tex_conceal syntax.jax /*g:tex_conceal* -g:var eval.jax /*g:var* -g:vimball_home pi_vimball.jax /*g:vimball_home* -g:vimball_mkdir pi_vimball.jax /*g:vimball_mkdir* -g:vimsyn_embed syntax.jax /*g:vimsyn_embed* -g:vimsyn_folding syntax.jax /*g:vimsyn_folding* -g:vimsyn_maxlines syntax.jax /*g:vimsyn_maxlines* -g:vimsyn_minlines syntax.jax /*g:vimsyn_minlines* -g:vimsyn_noerror syntax.jax /*g:vimsyn_noerror* -g:zip_nomax pi_zip.jax /*g:zip_nomax* -g:zip_shq pi_zip.jax /*g:zip_shq* -g:zip_unzipcmd pi_zip.jax /*g:zip_unzipcmd* -g:zip_zipcmd pi_zip.jax /*g:zip_zipcmd* -g; motion.jax /*g;* -g< message.jax /*g<* -g<Down> motion.jax /*g<Down>* -g<End> motion.jax /*g<End>* -g<Home> motion.jax /*g<Home>* -g<LeftMouse> tagsrch.jax /*g<LeftMouse>* -g<RightMouse> tagsrch.jax /*g<RightMouse>* -g<Up> motion.jax /*g<Up>* -g? change.jax /*g?* -g?? change.jax /*g??* -g?g? change.jax /*g?g?* -g@ map.jax /*g@* -gD pattern.jax /*gD* -gE motion.jax /*gE* -gF editing.jax /*gF* -gH visual.jax /*gH* -gI insert.jax /*gI* -gJ change.jax /*gJ* -gP change.jax /*gP* -gQ intro.jax /*gQ* -gR change.jax /*gR* -gT tabpage.jax /*gT* -gU change.jax /*gU* -gUU change.jax /*gUU* -gUgU change.jax /*gUgU* -gV visual.jax /*gV* -g] tagsrch.jax /*g]* -g^ motion.jax /*g^* -g_ motion.jax /*g_* -g_CTRL-A various.jax /*g_CTRL-A* -g_CTRL-G editing.jax /*g_CTRL-G* -g_CTRL-H visual.jax /*g_CTRL-H* -g_CTRL-] tagsrch.jax /*g_CTRL-]* -g` motion.jax /*g`* -g`a motion.jax /*g`a* -ga various.jax /*ga* -garbagecollect() eval.jax /*garbagecollect()* -gd pattern.jax /*gd* -ge motion.jax /*ge* -get() eval.jax /*get()* -get-ms-debuggers debug.jax /*get-ms-debuggers* -getbufline() eval.jax /*getbufline()* -getbufvar() eval.jax /*getbufvar()* -getchar() eval.jax /*getchar()* -getcharmod() eval.jax /*getcharmod()* -getcmdline() eval.jax /*getcmdline()* -getcmdpos() eval.jax /*getcmdpos()* -getcmdtype() eval.jax /*getcmdtype()* -getcwd() eval.jax /*getcwd()* -getfontname() eval.jax /*getfontname()* -getfperm() eval.jax /*getfperm()* -getfsize() eval.jax /*getfsize()* -getftime() eval.jax /*getftime()* -getftype() eval.jax /*getftype()* -getlatestvimscripts-install pi_getscript.jax /*getlatestvimscripts-install* -getline() eval.jax /*getline()* -getloclist() eval.jax /*getloclist()* -getmatches() eval.jax /*getmatches()* -getpid() eval.jax /*getpid()* -getpos() eval.jax /*getpos()* -getqflist() eval.jax /*getqflist()* -getreg() eval.jax /*getreg()* -getregtype() eval.jax /*getregtype()* -getscript pi_getscript.jax /*getscript* -getscript-autoinstall pi_getscript.jax /*getscript-autoinstall* -getscript-data pi_getscript.jax /*getscript-data* -getscript-history pi_getscript.jax /*getscript-history* -getscript-plugins pi_getscript.jax /*getscript-plugins* -getscript-start pi_getscript.jax /*getscript-start* -gettabvar() eval.jax /*gettabvar()* -gettabwinvar() eval.jax /*gettabwinvar()* -getwinposx() eval.jax /*getwinposx()* -getwinposy() eval.jax /*getwinposy()* -getwinvar() eval.jax /*getwinvar()* -gex starting.jax /*gex* -gf editing.jax /*gf* -gg motion.jax /*gg* -gh visual.jax /*gh* -gi insert.jax /*gi* -gj motion.jax /*gj* -gk motion.jax /*gk* -glob() eval.jax /*glob()* -global-ime mbyte.jax /*global-ime* -global-local options.jax /*global-local* -global-variable eval.jax /*global-variable* -global_markfilelist pi_netrw.jax /*global_markfilelist* -globpath() eval.jax /*globpath()* -glvs pi_getscript.jax /*glvs* -glvs-alg pi_getscript.jax /*glvs-alg* -glvs-algorithm pi_getscript.jax /*glvs-algorithm* -glvs-autoinstall pi_getscript.jax /*glvs-autoinstall* -glvs-contents pi_getscript.jax /*glvs-contents* -glvs-copyright pi_getscript.jax /*glvs-copyright* -glvs-data pi_getscript.jax /*glvs-data* -glvs-dist-install pi_getscript.jax /*glvs-dist-install* -glvs-hist pi_getscript.jax /*glvs-hist* -glvs-install pi_getscript.jax /*glvs-install* -glvs-options pi_getscript.jax /*glvs-options* -glvs-plugins pi_getscript.jax /*glvs-plugins* -glvs-usage pi_getscript.jax /*glvs-usage* -gm motion.jax /*gm* -gnat#Insert_Tags_Header() ft_ada.jax /*gnat#Insert_Tags_Header()* -gnat#New() ft_ada.jax /*gnat#New()* -gnat-xref ft_ada.jax /*gnat-xref* -gnat_members ft_ada.jax /*gnat_members* -gnome-session gui_x11.jax /*gnome-session* -go motion.jax /*go* -gp change.jax /*gp* -gpm-mouse term.jax /*gpm-mouse* -gq change.jax /*gq* -gqap change.jax /*gqap* -gqgq change.jax /*gqgq* -gqq change.jax /*gqq* -gr change.jax /*gr* -graphic-option-gone version4.jax /*graphic-option-gone* -greek options.jax /*greek* -grep quickfix.jax /*grep* -groff.vim syntax.jax /*groff.vim* -group-name syntax.jax /*group-name* -gs various.jax /*gs* -gsp.vim syntax.jax /*gsp.vim* -gstar pattern.jax /*gstar* -gt tabpage.jax /*gt* -gtk-tooltip-colors gui_x11.jax /*gtk-tooltip-colors* -gu change.jax /*gu* -gugu change.jax /*gugu* -gui gui.jax /*gui* -gui-clipboard gui_w32.jax /*gui-clipboard* -gui-colors syntax.jax /*gui-colors* -gui-extras gui.jax /*gui-extras* -gui-footer debugger.jax /*gui-footer* -gui-fork gui_x11.jax /*gui-fork* -gui-functions usr_41.jax /*gui-functions* -gui-gnome gui_x11.jax /*gui-gnome* -gui-gnome-session gui_x11.jax /*gui-gnome-session* -gui-gtk gui_x11.jax /*gui-gtk* -gui-gtk-socketid gui_x11.jax /*gui-gtk-socketid* -gui-horiz-scroll gui.jax /*gui-horiz-scroll* -gui-init gui.jax /*gui-init* -gui-kde gui_x11.jax /*gui-kde* -gui-mouse gui.jax /*gui-mouse* -gui-mouse-focus gui.jax /*gui-mouse-focus* -gui-mouse-mapping gui.jax /*gui-mouse-mapping* -gui-mouse-modeless gui.jax /*gui-mouse-modeless* -gui-mouse-move gui.jax /*gui-mouse-move* -gui-mouse-select gui.jax /*gui-mouse-select* -gui-mouse-status gui.jax /*gui-mouse-status* -gui-mouse-various gui.jax /*gui-mouse-various* -gui-pty gui_x11.jax /*gui-pty* -gui-pty-erase gui_x11.jax /*gui-pty-erase* -gui-resources gui_x11.jax /*gui-resources* -gui-scrollbars gui.jax /*gui-scrollbars* -gui-selections gui.jax /*gui-selections* -gui-shell gui.jax /*gui-shell* -gui-shell-win32 gui_w32.jax /*gui-shell-win32* -gui-start gui.jax /*gui-start* -gui-toolbar gui.jax /*gui-toolbar* -gui-vert-scroll gui.jax /*gui-vert-scroll* -gui-w16 gui_w16.jax /*gui-w16* -gui-w32 gui_w32.jax /*gui-w32* -gui-w32-cmdargs gui_w32.jax /*gui-w32-cmdargs* -gui-w32-dialogs gui_w32.jax /*gui-w32-dialogs* -gui-w32-printing gui_w32.jax /*gui-w32-printing* -gui-w32-start gui_w32.jax /*gui-w32-start* -gui-w32-various gui_w32.jax /*gui-w32-various* -gui-w32-windowid gui_w32.jax /*gui-w32-windowid* -gui-w32s gui_w32.jax /*gui-w32s* -gui-win32-maximized gui_w32.jax /*gui-win32-maximized* -gui-x11 gui_x11.jax /*gui-x11* -gui-x11-athena gui_x11.jax /*gui-x11-athena* -gui-x11-compiling gui_x11.jax /*gui-x11-compiling* -gui-x11-gtk gui_x11.jax /*gui-x11-gtk* -gui-x11-kde gui_x11.jax /*gui-x11-kde* -gui-x11-misc gui_x11.jax /*gui-x11-misc* -gui-x11-motif gui_x11.jax /*gui-x11-motif* -gui-x11-neXtaw gui_x11.jax /*gui-x11-neXtaw* -gui-x11-printing gui_x11.jax /*gui-x11-printing* -gui-x11-start gui_x11.jax /*gui-x11-start* -gui-x11-various gui_x11.jax /*gui-x11-various* -gui.txt gui.jax /*gui.txt* -gui_w16.txt gui_w16.jax /*gui_w16.txt* -gui_w32.txt gui_w32.jax /*gui_w32.txt* -gui_x11.txt gui_x11.jax /*gui_x11.txt* -guifontwide_gtk2 options.jax /*guifontwide_gtk2* -guioptions_a options.jax /*guioptions_a* -guu change.jax /*guu* -gv visual.jax /*gv* -gview starting.jax /*gview* -gvim starting.jax /*gvim* -gvimdiff diff.jax /*gvimdiff* -gvimrc gui.jax /*gvimrc* -gw change.jax /*gw* -gwgw change.jax /*gwgw* -gww change.jax /*gww* -gzip pi_gzip.jax /*gzip* -gzip-autocmd pi_gzip.jax /*gzip-autocmd* -gzip-example autocmd.jax /*gzip-example* -gzip-helpfile tips.jax /*gzip-helpfile* -g~ change.jax /*g~* -g~g~ change.jax /*g~g~* -g~~ change.jax /*g~~* -h motion.jax /*h* -hangul hangulin.jax /*hangul* -hangulin.txt hangulin.jax /*hangulin.txt* -has() eval.jax /*has()* -has-patch eval.jax /*has-patch* -has-python if_pyth.jax /*has-python* -has_key() eval.jax /*has_key()* -haskell.vim syntax.jax /*haskell.vim* -haslocaldir() eval.jax /*haslocaldir()* -hasmapto() eval.jax /*hasmapto()* -help helphelp.jax /*help* -help-context help.jax /*help-context* -help-summary usr_02.jax /*help-summary* -help-translated helphelp.jax /*help-translated* -help-writing helphelp.jax /*help-writing* -help-xterm-window helphelp.jax /*help-xterm-window* -help.txt help.jax /*help.txt* -helpfile_name.txt helphelp.jax /*helpfile_name.txt* -helphelp helphelp.jax /*helphelp* -helphelp.txt helphelp.jax /*helphelp.txt* -hex-editing tips.jax /*hex-editing* -hidden-buffer windows.jax /*hidden-buffer* -hidden-menus gui.jax /*hidden-menus* -hidden-options options.jax /*hidden-options* -hidden-quit windows.jax /*hidden-quit* -highlight-args syntax.jax /*highlight-args* -highlight-changed version4.jax /*highlight-changed* -highlight-cterm syntax.jax /*highlight-cterm* -highlight-ctermbg syntax.jax /*highlight-ctermbg* -highlight-ctermfg syntax.jax /*highlight-ctermfg* -highlight-default syntax.jax /*highlight-default* -highlight-font syntax.jax /*highlight-font* -highlight-groups syntax.jax /*highlight-groups* -highlight-gui syntax.jax /*highlight-gui* -highlight-guibg syntax.jax /*highlight-guibg* -highlight-guifg syntax.jax /*highlight-guifg* -highlight-guisp syntax.jax /*highlight-guisp* -highlight-start syntax.jax /*highlight-start* -highlight-stop syntax.jax /*highlight-stop* -highlight-term syntax.jax /*highlight-term* -highlightID() eval.jax /*highlightID()* -highlight_exists() eval.jax /*highlight_exists()* -highlighting-functions usr_41.jax /*highlighting-functions* -hist-names eval.jax /*hist-names* -histadd() eval.jax /*histadd()* -histdel() eval.jax /*histdel()* -histget() eval.jax /*histget()* -histnr() eval.jax /*histnr()* -history cmdline.jax /*history* -history-functions usr_41.jax /*history-functions* -hit-enter message.jax /*hit-enter* -hit-enter-prompt message.jax /*hit-enter-prompt* -hit-return message.jax /*hit-return* -hitest.vim syntax.jax /*hitest.vim* -hjkl usr_02.jax /*hjkl* -hl-ColorColumn syntax.jax /*hl-ColorColumn* -hl-Conceal syntax.jax /*hl-Conceal* -hl-Cursor syntax.jax /*hl-Cursor* -hl-CursorColumn syntax.jax /*hl-CursorColumn* -hl-CursorIM syntax.jax /*hl-CursorIM* -hl-CursorLine syntax.jax /*hl-CursorLine* -hl-DiffAdd syntax.jax /*hl-DiffAdd* -hl-DiffChange syntax.jax /*hl-DiffChange* -hl-DiffDelete syntax.jax /*hl-DiffDelete* -hl-DiffText syntax.jax /*hl-DiffText* -hl-Directory syntax.jax /*hl-Directory* -hl-ErrorMsg syntax.jax /*hl-ErrorMsg* -hl-FoldColumn syntax.jax /*hl-FoldColumn* -hl-Folded syntax.jax /*hl-Folded* -hl-Ignore syntax.jax /*hl-Ignore* -hl-IncSearch syntax.jax /*hl-IncSearch* -hl-LineNr syntax.jax /*hl-LineNr* -hl-MatchParen syntax.jax /*hl-MatchParen* -hl-Menu syntax.jax /*hl-Menu* -hl-ModeMsg syntax.jax /*hl-ModeMsg* -hl-MoreMsg syntax.jax /*hl-MoreMsg* -hl-NonText syntax.jax /*hl-NonText* -hl-Normal syntax.jax /*hl-Normal* -hl-Pmenu syntax.jax /*hl-Pmenu* -hl-PmenuSbar syntax.jax /*hl-PmenuSbar* -hl-PmenuSel syntax.jax /*hl-PmenuSel* -hl-PmenuThumb syntax.jax /*hl-PmenuThumb* -hl-Question syntax.jax /*hl-Question* -hl-Scrollbar syntax.jax /*hl-Scrollbar* -hl-Search syntax.jax /*hl-Search* -hl-SignColumn syntax.jax /*hl-SignColumn* -hl-SpecialKey syntax.jax /*hl-SpecialKey* -hl-SpellBad syntax.jax /*hl-SpellBad* -hl-SpellCap syntax.jax /*hl-SpellCap* -hl-SpellLocal syntax.jax /*hl-SpellLocal* -hl-SpellRare syntax.jax /*hl-SpellRare* -hl-StatusLine syntax.jax /*hl-StatusLine* -hl-StatusLineNC syntax.jax /*hl-StatusLineNC* -hl-TabLine syntax.jax /*hl-TabLine* -hl-TabLineFill syntax.jax /*hl-TabLineFill* -hl-TabLineSel syntax.jax /*hl-TabLineSel* -hl-Title syntax.jax /*hl-Title* -hl-Tooltip syntax.jax /*hl-Tooltip* -hl-User1 syntax.jax /*hl-User1* -hl-User1..9 syntax.jax /*hl-User1..9* -hl-User9 syntax.jax /*hl-User9* -hl-VertSplit syntax.jax /*hl-VertSplit* -hl-Visual syntax.jax /*hl-Visual* -hl-VisualNOS syntax.jax /*hl-VisualNOS* -hl-WarningMsg syntax.jax /*hl-WarningMsg* -hl-WildMenu syntax.jax /*hl-WildMenu* -hlID() eval.jax /*hlID()* -hlexists() eval.jax /*hlexists()* -holy-grail index.jax /*holy-grail* -home intro.jax /*home* -home-replace editing.jax /*home-replace* -hostname() eval.jax /*hostname()* -how-do-i howto.jax /*how-do-i* -how-to howto.jax /*how-to* -howdoi howto.jax /*howdoi* -howto howto.jax /*howto* -howto.txt howto.jax /*howto.txt* -hpterm term.jax /*hpterm* -hpterm-color syntax.jax /*hpterm-color* -html-flavor insert.jax /*html-flavor* -html.vim syntax.jax /*html.vim* -htmlos.vim syntax.jax /*htmlos.vim* -http pi_netrw.jax /*http* -i insert.jax /*i* -i' motion.jax /*i'* -i( motion.jax /*i(* -i) motion.jax /*i)* -i< motion.jax /*i<* -i> motion.jax /*i>* -iB motion.jax /*iB* -iW motion.jax /*iW* -i[ motion.jax /*i[* -i] motion.jax /*i]* -i_0_CTRL-D insert.jax /*i_0_CTRL-D* -i_<BS> insert.jax /*i_<BS>* -i_<C-End> insert.jax /*i_<C-End>* -i_<C-Home> insert.jax /*i_<C-Home>* -i_<C-Left> insert.jax /*i_<C-Left>* -i_<C-PageDown> tabpage.jax /*i_<C-PageDown>* -i_<C-PageUp> tabpage.jax /*i_<C-PageUp>* -i_<C-Right> insert.jax /*i_<C-Right>* -i_<CR> insert.jax /*i_<CR>* -i_<Del> insert.jax /*i_<Del>* -i_<Down> insert.jax /*i_<Down>* -i_<End> insert.jax /*i_<End>* -i_<Esc> insert.jax /*i_<Esc>* -i_<F1> helphelp.jax /*i_<F1>* -i_<Help> helphelp.jax /*i_<Help>* -i_<Home> insert.jax /*i_<Home>* -i_<Insert> insert.jax /*i_<Insert>* -i_<Left> insert.jax /*i_<Left>* -i_<LeftMouse> insert.jax /*i_<LeftMouse>* -i_<NL> insert.jax /*i_<NL>* -i_<PageDown> insert.jax /*i_<PageDown>* -i_<PageUp> insert.jax /*i_<PageUp>* -i_<Right> insert.jax /*i_<Right>* -i_<S-Down> insert.jax /*i_<S-Down>* -i_<S-Left> insert.jax /*i_<S-Left>* -i_<S-Right> insert.jax /*i_<S-Right>* -i_<S-ScrollWheelDown> insert.jax /*i_<S-ScrollWheelDown>* -i_<S-ScrollWheelLeft> insert.jax /*i_<S-ScrollWheelLeft>* -i_<S-ScrollWheelRight> insert.jax /*i_<S-ScrollWheelRight>* -i_<S-ScrollWheelUp> insert.jax /*i_<S-ScrollWheelUp>* -i_<S-Up> insert.jax /*i_<S-Up>* -i_<ScrollWheelDown> insert.jax /*i_<ScrollWheelDown>* -i_<ScrollWheelLeft> insert.jax /*i_<ScrollWheelLeft>* -i_<ScrollWheelRight> insert.jax /*i_<ScrollWheelRight>* -i_<ScrollWheelUp> insert.jax /*i_<ScrollWheelUp>* -i_<Tab> insert.jax /*i_<Tab>* -i_<Up> insert.jax /*i_<Up>* -i_BS insert.jax /*i_BS* -i_CTRL-<PageDown> tabpage.jax /*i_CTRL-<PageDown>* -i_CTRL-<PageUp> tabpage.jax /*i_CTRL-<PageUp>* -i_CTRL-@ insert.jax /*i_CTRL-@* -i_CTRL-A insert.jax /*i_CTRL-A* -i_CTRL-C insert.jax /*i_CTRL-C* -i_CTRL-D insert.jax /*i_CTRL-D* -i_CTRL-E insert.jax /*i_CTRL-E* -i_CTRL-F indent.jax /*i_CTRL-F* -i_CTRL-G_<Down> insert.jax /*i_CTRL-G_<Down>* -i_CTRL-G_<Up> insert.jax /*i_CTRL-G_<Up>* -i_CTRL-G_CTRL-J insert.jax /*i_CTRL-G_CTRL-J* -i_CTRL-G_CTRL-K insert.jax /*i_CTRL-G_CTRL-K* -i_CTRL-G_j insert.jax /*i_CTRL-G_j* -i_CTRL-G_k insert.jax /*i_CTRL-G_k* -i_CTRL-G_u insert.jax /*i_CTRL-G_u* -i_CTRL-H insert.jax /*i_CTRL-H* -i_CTRL-I insert.jax /*i_CTRL-I* -i_CTRL-J insert.jax /*i_CTRL-J* -i_CTRL-K insert.jax /*i_CTRL-K* -i_CTRL-L insert.jax /*i_CTRL-L* -i_CTRL-M insert.jax /*i_CTRL-M* -i_CTRL-N insert.jax /*i_CTRL-N* -i_CTRL-O insert.jax /*i_CTRL-O* -i_CTRL-P insert.jax /*i_CTRL-P* -i_CTRL-Q insert.jax /*i_CTRL-Q* -i_CTRL-R insert.jax /*i_CTRL-R* -i_CTRL-R_= insert.jax /*i_CTRL-R_=* -i_CTRL-R_CTRL-O insert.jax /*i_CTRL-R_CTRL-O* -i_CTRL-R_CTRL-P insert.jax /*i_CTRL-R_CTRL-P* -i_CTRL-R_CTRL-R insert.jax /*i_CTRL-R_CTRL-R* -i_CTRL-T insert.jax /*i_CTRL-T* -i_CTRL-U insert.jax /*i_CTRL-U* -i_CTRL-V insert.jax /*i_CTRL-V* -i_CTRL-V_digit insert.jax /*i_CTRL-V_digit* -i_CTRL-W insert.jax /*i_CTRL-W* -i_CTRL-X insert.jax /*i_CTRL-X* -i_CTRL-X_CTRL-D insert.jax /*i_CTRL-X_CTRL-D* -i_CTRL-X_CTRL-E insert.jax /*i_CTRL-X_CTRL-E* -i_CTRL-X_CTRL-F insert.jax /*i_CTRL-X_CTRL-F* -i_CTRL-X_CTRL-I insert.jax /*i_CTRL-X_CTRL-I* -i_CTRL-X_CTRL-K insert.jax /*i_CTRL-X_CTRL-K* -i_CTRL-X_CTRL-L insert.jax /*i_CTRL-X_CTRL-L* -i_CTRL-X_CTRL-N insert.jax /*i_CTRL-X_CTRL-N* -i_CTRL-X_CTRL-O insert.jax /*i_CTRL-X_CTRL-O* -i_CTRL-X_CTRL-P insert.jax /*i_CTRL-X_CTRL-P* -i_CTRL-X_CTRL-S insert.jax /*i_CTRL-X_CTRL-S* -i_CTRL-X_CTRL-T insert.jax /*i_CTRL-X_CTRL-T* -i_CTRL-X_CTRL-U insert.jax /*i_CTRL-X_CTRL-U* -i_CTRL-X_CTRL-V insert.jax /*i_CTRL-X_CTRL-V* -i_CTRL-X_CTRL-Y insert.jax /*i_CTRL-X_CTRL-Y* -i_CTRL-X_CTRL-] insert.jax /*i_CTRL-X_CTRL-]* -i_CTRL-X_index index.jax /*i_CTRL-X_index* -i_CTRL-X_s insert.jax /*i_CTRL-X_s* -i_CTRL-Y insert.jax /*i_CTRL-Y* -i_CTRL-Z options.jax /*i_CTRL-Z* -i_CTRL-[ insert.jax /*i_CTRL-[* -i_CTRL-\_CTRL-G intro.jax /*i_CTRL-\\_CTRL-G* -i_CTRL-\_CTRL-N intro.jax /*i_CTRL-\\_CTRL-N* -i_CTRL-\_CTRL-O insert.jax /*i_CTRL-\\_CTRL-O* -i_CTRL-] insert.jax /*i_CTRL-]* -i_CTRL-^ insert.jax /*i_CTRL-^* -i_CTRL-_ insert.jax /*i_CTRL-_* -i_DEL insert.jax /*i_DEL* -i_Tab insert.jax /*i_Tab* -i_^_CTRL-D insert.jax /*i_^_CTRL-D* -i_backspacing insert.jax /*i_backspacing* -i_digraph digraph.jax /*i_digraph* -i_esc intro.jax /*i_esc* -i` motion.jax /*i`* -ia64.vim syntax.jax /*ia64.vim* -ib motion.jax /*ib* -iccf uganda.jax /*iccf* -iccf-donations uganda.jax /*iccf-donations* -icon-changed version4.jax /*icon-changed* -iconise starting.jax /*iconise* -iconize starting.jax /*iconize* -iconv() eval.jax /*iconv()* -iconv-dynamic mbyte.jax /*iconv-dynamic* -ident-search tips.jax /*ident-search* -idl-syntax syntax.jax /*idl-syntax* -idl.vim syntax.jax /*idl.vim* -if_cscop.txt if_cscop.jax /*if_cscop.txt* -if_lua.txt if_lua.jax /*if_lua.txt* -if_mzsch.txt if_mzsch.jax /*if_mzsch.txt* -if_ole.txt if_ole.jax /*if_ole.txt* -if_perl.txt if_perl.jax /*if_perl.txt* -if_pyth.txt if_pyth.jax /*if_pyth.txt* -if_ruby.txt if_ruby.jax /*if_ruby.txt* -if_sniff.txt if_sniff.jax /*if_sniff.txt* -if_tcl.txt if_tcl.jax /*if_tcl.txt* -ignore-errors eval.jax /*ignore-errors* -inactive-buffer windows.jax /*inactive-buffer* -include-search tagsrch.jax /*include-search* -inclusive motion.jax /*inclusive* -indent() eval.jax /*indent()* -indent-expression indent.jax /*indent-expression* -indent.txt indent.jax /*indent.txt* -indentkeys-format indent.jax /*indentkeys-format* -index index.jax /*index* -index() eval.jax /*index()* -index.txt index.jax /*index.txt* -info-message starting.jax /*info-message* -inform.vim syntax.jax /*inform.vim* -informix ft_sql.jax /*informix* -initialization starting.jax /*initialization* -input() eval.jax /*input()* -inputdialog() eval.jax /*inputdialog()* -inputlist() eval.jax /*inputlist()* -inputrestore() eval.jax /*inputrestore()* -inputsave() eval.jax /*inputsave()* -inputsecret() eval.jax /*inputsecret()* -ins-completion insert.jax /*ins-completion* -ins-completion-menu insert.jax /*ins-completion-menu* -ins-expandtab insert.jax /*ins-expandtab* -ins-reverse rileft.jax /*ins-reverse* -ins-smarttab insert.jax /*ins-smarttab* -ins-softtabstop insert.jax /*ins-softtabstop* -ins-special-keys insert.jax /*ins-special-keys* -ins-special-special insert.jax /*ins-special-special* -ins-textwidth insert.jax /*ins-textwidth* -insert insert.jax /*insert* -insert() eval.jax /*insert()* -insert-index index.jax /*insert-index* -insert.txt insert.jax /*insert.txt* -insert_expand insert.jax /*insert_expand* -inserting insert.jax /*inserting* -inserting-ex insert.jax /*inserting-ex* -inserting-file insert.jax /*inserting-file* -insertmode-variable eval.jax /*insertmode-variable* -install usr_90.jax /*install* -install-home usr_90.jax /*install-home* -install-registry gui_w32.jax /*install-registry* -intel-itanium syntax.jax /*intel-itanium* -intellimouse-wheel-problems gui_w32.jax /*intellimouse-wheel-problems* -interactive-functions usr_41.jax /*interactive-functions* -internal-variables eval.jax /*internal-variables* -internet intro.jax /*internet* -intro intro.jax /*intro* -intro.txt intro.jax /*intro.txt* -inverse syntax.jax /*inverse* -ip motion.jax /*ip* -iquote motion.jax /*iquote* -is motion.jax /*is* -isdirectory() eval.jax /*isdirectory()* -islocked() eval.jax /*islocked()* -it motion.jax /*it* -italic syntax.jax /*italic* -items() eval.jax /*items()* -iw motion.jax /*iw* -i{ motion.jax /*i{* -i} motion.jax /*i}* -j motion.jax /*j* -java-cinoptions indent.jax /*java-cinoptions* -java-indenting indent.jax /*java-indenting* -java.vim syntax.jax /*java.vim* -javascript-cinoptions indent.jax /*javascript-cinoptions* -javascript-indenting indent.jax /*javascript-indenting* -join() eval.jax /*join()* -jsbterm-mouse options.jax /*jsbterm-mouse* -jtags tagsrch.jax /*jtags* -jump-motions motion.jax /*jump-motions* -jumplist motion.jax /*jumplist* -jumpto-diffs diff.jax /*jumpto-diffs* -k motion.jax /*k* -kcc uganda.jax /*kcc* -kde gui_x11.jax /*kde* -key-codes intro.jax /*key-codes* -key-codes-changed version4.jax /*key-codes-changed* -key-mapping map.jax /*key-mapping* -key-notation intro.jax /*key-notation* -key-variable eval.jax /*key-variable* -keycodes intro.jax /*keycodes* -keymap-accents mbyte.jax /*keymap-accents* -keymap-file-format mbyte.jax /*keymap-file-format* -keymap-hebrew mbyte.jax /*keymap-hebrew* -keypad-0 intro.jax /*keypad-0* -keypad-9 intro.jax /*keypad-9* -keypad-comma term.jax /*keypad-comma* -keypad-divide intro.jax /*keypad-divide* -keypad-end intro.jax /*keypad-end* -keypad-enter intro.jax /*keypad-enter* -keypad-home intro.jax /*keypad-home* -keypad-minus intro.jax /*keypad-minus* -keypad-multiply intro.jax /*keypad-multiply* -keypad-page-down intro.jax /*keypad-page-down* -keypad-page-up intro.jax /*keypad-page-up* -keypad-plus intro.jax /*keypad-plus* -keypad-point intro.jax /*keypad-point* -keys() eval.jax /*keys()* -l motion.jax /*l* -l:var eval.jax /*l:var* -lCursor mbyte.jax /*lCursor* -lace.vim syntax.jax /*lace.vim* -lang-variable eval.jax /*lang-variable* -language-mapping map.jax /*language-mapping* -last-pattern pattern.jax /*last-pattern* -last-position-jump eval.jax /*last-position-jump* -last_buffer_nr() eval.jax /*last_buffer_nr()* -lc_time-variable eval.jax /*lc_time-variable* -left-right-motions motion.jax /*left-right-motions* -len() eval.jax /*len()* -less various.jax /*less* -letter print.jax /*letter* -lex.vim syntax.jax /*lex.vim* -lhaskell.vim syntax.jax /*lhaskell.vim* -libcall() eval.jax /*libcall()* -libcallnr() eval.jax /*libcallnr()* -license uganda.jax /*license* -lid quickfix.jax /*lid* -lifelines.vim syntax.jax /*lifelines.vim* -limits vi_diff.jax /*limits* -line() eval.jax /*line()* -line-continuation repeat.jax /*line-continuation* -line2byte() eval.jax /*line2byte()* -linefeed intro.jax /*linefeed* -linewise motion.jax /*linewise* -linewise-register change.jax /*linewise-register* -linewise-visual visual.jax /*linewise-visual* -lisp.vim syntax.jax /*lisp.vim* -lispindent() eval.jax /*lispindent()* -list-functions usr_41.jax /*list-functions* -list-identity eval.jax /*list-identity* -list-index eval.jax /*list-index* -list-modification eval.jax /*list-modification* -list-repeat windows.jax /*list-repeat* -lite.vim syntax.jax /*lite.vim* -literal-string eval.jax /*literal-string* -lnum-variable eval.jax /*lnum-variable* -load-plugins starting.jax /*load-plugins* -load-vim-script repeat.jax /*load-vim-script* -local-additions help.jax /*local-additions* -local-function eval.jax /*local-function* -local-options options.jax /*local-options* -local-variable eval.jax /*local-variable* -local-variables eval.jax /*local-variables* -local_markfilelist pi_netrw.jax /*local_markfilelist* -locale mbyte.jax /*locale* -locale-name mbyte.jax /*locale-name* -localtime() eval.jax /*localtime()* -location-list quickfix.jax /*location-list* -location-list-window quickfix.jax /*location-list-window* -log() eval.jax /*log()* -log10() eval.jax /*log10()* -lowercase change.jax /*lowercase* -lpc.vim syntax.jax /*lpc.vim* -lua if_lua.jax /*lua* -lua-buffer if_lua.jax /*lua-buffer* -lua-commands if_lua.jax /*lua-commands* -lua-vim if_lua.jax /*lua-vim* -lua-window if_lua.jax /*lua-window* -lua.vim syntax.jax /*lua.vim* -m motion.jax /*m* -m' motion.jax /*m'* -m[ motion.jax /*m[* -m] motion.jax /*m]* -m` motion.jax /*m`* -mac os_mac.jax /*mac* -mac-bug os_mac.jax /*mac-bug* -mac-compile os_mac.jax /*mac-compile* -mac-faq os_mac.jax /*mac-faq* -mac-filename os_mac.jax /*mac-filename* -mac-lack os_mac.jax /*mac-lack* -mac-vimfile os_mac.jax /*mac-vimfile* -macintosh os_mac.jax /*macintosh* -macro map.jax /*macro* -mail-list intro.jax /*mail-list* -mail.vim syntax.jax /*mail.vim* -maillist intro.jax /*maillist* -maillist-archive intro.jax /*maillist-archive* -make.vim syntax.jax /*make.vim* -manual-copyright usr_01.jax /*manual-copyright* -map() eval.jax /*map()* -map-<SID> map.jax /*map-<SID>* -map-ambiguous map.jax /*map-ambiguous* -map-backtick tips.jax /*map-backtick* -map-comments map.jax /*map-comments* -map-examples map.jax /*map-examples* -map-keys-fails map.jax /*map-keys-fails* -map-listing map.jax /*map-listing* -map-modes map.jax /*map-modes* -map-multibyte map.jax /*map-multibyte* -map-overview map.jax /*map-overview* -map-self-destroy tips.jax /*map-self-destroy* -map-typing map.jax /*map-typing* -map-which-keys map.jax /*map-which-keys* -map.txt map.jax /*map.txt* -map_CTRL_C map.jax /*map_CTRL_C* -map_backslash map.jax /*map_backslash* -map_bar map.jax /*map_bar* -map_empty_rhs map.jax /*map_empty_rhs* -map_return map.jax /*map_return* -map_space_in_lhs map.jax /*map_space_in_lhs* -map_space_in_rhs map.jax /*map_space_in_rhs* -maparg() eval.jax /*maparg()* -mapcheck() eval.jax /*mapcheck()* -maple.vim syntax.jax /*maple.vim* -mapleader map.jax /*mapleader* -maplocalleader map.jax /*maplocalleader* -mapmode-c map.jax /*mapmode-c* -mapmode-i map.jax /*mapmode-i* -mapmode-ic map.jax /*mapmode-ic* -mapmode-l map.jax /*mapmode-l* -mapmode-n map.jax /*mapmode-n* -mapmode-nvo map.jax /*mapmode-nvo* -mapmode-o map.jax /*mapmode-o* -mapmode-s map.jax /*mapmode-s* -mapmode-v map.jax /*mapmode-v* -mapmode-x map.jax /*mapmode-x* -mapping map.jax /*mapping* -mark motion.jax /*mark* -mark-functions usr_41.jax /*mark-functions* -mark-motions motion.jax /*mark-motions* -markfilelist pi_netrw.jax /*markfilelist* -masm.vim syntax.jax /*masm.vim* -match() eval.jax /*match()* -match-highlight pattern.jax /*match-highlight* -match-parens tips.jax /*match-parens* -matchadd() eval.jax /*matchadd()* -matcharg() eval.jax /*matcharg()* -matchdelete() eval.jax /*matchdelete()* -matchend() eval.jax /*matchend()* -matchit-install usr_05.jax /*matchit-install* -matchlist() eval.jax /*matchlist()* -matchparen pi_paren.jax /*matchparen* -matchstr() eval.jax /*matchstr()* -max() eval.jax /*max()* -mbyte-IME mbyte.jax /*mbyte-IME* -mbyte-XIM mbyte.jax /*mbyte-XIM* -mbyte-combining mbyte.jax /*mbyte-combining* -mbyte-composing mbyte.jax /*mbyte-composing* -mbyte-conversion mbyte.jax /*mbyte-conversion* -mbyte-encoding mbyte.jax /*mbyte-encoding* -mbyte-first mbyte.jax /*mbyte-first* -mbyte-fonts-MSwin mbyte.jax /*mbyte-fonts-MSwin* -mbyte-fonts-X11 mbyte.jax /*mbyte-fonts-X11* -mbyte-keymap mbyte.jax /*mbyte-keymap* -mbyte-locale mbyte.jax /*mbyte-locale* -mbyte-options mbyte.jax /*mbyte-options* -mbyte-terminal mbyte.jax /*mbyte-terminal* -mbyte-utf8 mbyte.jax /*mbyte-utf8* -mbyte.txt mbyte.jax /*mbyte.txt* -menu-examples gui.jax /*menu-examples* -menu-priority gui.jax /*menu-priority* -menu-separator gui.jax /*menu-separator* -menu.vim gui.jax /*menu.vim* -menus gui.jax /*menus* -merge diff.jax /*merge* -message-history message.jax /*message-history* -message.txt message.jax /*message.txt* -messages message.jax /*messages* -meta intro.jax /*meta* -min() eval.jax /*min()* -minimal-features os_msdos.jax /*minimal-features* -missing-options vi_diff.jax /*missing-options* -mkdir() eval.jax /*mkdir()* -mlang.txt mlang.jax /*mlang.txt* -mma.vim syntax.jax /*mma.vim* -mode() eval.jax /*mode()* -mode-Ex intro.jax /*mode-Ex* -mode-cmdline cmdline.jax /*mode-cmdline* -mode-ins-repl insert.jax /*mode-ins-repl* -mode-replace insert.jax /*mode-replace* -mode-switching intro.jax /*mode-switching* -modeless-selection gui.jax /*modeless-selection* -modeline options.jax /*modeline* -modeline-local options.jax /*modeline-local* -modeline-version options.jax /*modeline-version* -moo.vim syntax.jax /*moo.vim* -more-prompt message.jax /*more-prompt* -more-variables eval.jax /*more-variables* -motion.txt motion.jax /*motion.txt* -mouse-mode-table term.jax /*mouse-mode-table* -mouse-overview term.jax /*mouse-overview* -mouse-swap-buttons term.jax /*mouse-swap-buttons* -mouse-using term.jax /*mouse-using* -mouse_col-variable eval.jax /*mouse_col-variable* -mouse_lnum-variable eval.jax /*mouse_lnum-variable* -mouse_win-variable eval.jax /*mouse_win-variable* -movement intro.jax /*movement* -ms-dos os_msdos.jax /*ms-dos* -msdos os_msdos.jax /*msdos* -msdos-arrows os_msdos.jax /*msdos-arrows* -msdos-clipboard-limits os_msdos.jax /*msdos-clipboard-limits* -msdos-compiling os_msdos.jax /*msdos-compiling* -msdos-copy-paste os_msdos.jax /*msdos-copy-paste* -msdos-fname-extensions os_msdos.jax /*msdos-fname-extensions* -msdos-limitations os_msdos.jax /*msdos-limitations* -msdos-linked-files os_msdos.jax /*msdos-linked-files* -msdos-longfname os_msdos.jax /*msdos-longfname* -msdos-mode gui_w32.jax /*msdos-mode* -msdos-problems os_msdos.jax /*msdos-problems* -msdos-termcap os_msdos.jax /*msdos-termcap* -msdos-versions os_msdos.jax /*msdos-versions* -msql.vim syntax.jax /*msql.vim* -mswin.vim gui_w32.jax /*mswin.vim* -multi-byte mbyte.jax /*multi-byte* -multi-lang mlang.jax /*multi-lang* -multi-repeat repeat.jax /*multi-repeat* -multibyte mbyte.jax /*multibyte* -multibyte-ime mbyte.jax /*multibyte-ime* -multibyte-input mbyte.jax /*multibyte-input* -multilang mlang.jax /*multilang* -multilang-menus mlang.jax /*multilang-menus* -multilang-messages mlang.jax /*multilang-messages* -multilang-scripts mlang.jax /*multilang-scripts* -myfiletypefile syntax.jax /*myfiletypefile* -myscriptsfile syntax.jax /*myscriptsfile* -mysql ft_sql.jax /*mysql* -mysyntaxfile syntax.jax /*mysyntaxfile* -mysyntaxfile-add syntax.jax /*mysyntaxfile-add* -mysyntaxfile-replace syntax.jax /*mysyntaxfile-replace* -mzeval() eval.jax /*mzeval()* -mzscheme if_mzsch.jax /*mzscheme* -mzscheme-buffer if_mzsch.jax /*mzscheme-buffer* -mzscheme-commands if_mzsch.jax /*mzscheme-commands* -mzscheme-dynamic if_mzsch.jax /*mzscheme-dynamic* -mzscheme-examples if_mzsch.jax /*mzscheme-examples* -mzscheme-mzeval if_mzsch.jax /*mzscheme-mzeval* -mzscheme-sandbox if_mzsch.jax /*mzscheme-sandbox* -mzscheme-threads if_mzsch.jax /*mzscheme-threads* -mzscheme-vim if_mzsch.jax /*mzscheme-vim* -mzscheme-vimext if_mzsch.jax /*mzscheme-vimext* -mzscheme-window if_mzsch.jax /*mzscheme-window* -n pattern.jax /*n* -nasm.vim syntax.jax /*nasm.vim* -navigation motion.jax /*navigation* -nb-commands netbeans.jax /*nb-commands* -nb-events netbeans.jax /*nb-events* -nb-functions netbeans.jax /*nb-functions* -nb-messages netbeans.jax /*nb-messages* -nb-protocol_errors netbeans.jax /*nb-protocol_errors* -nb-special netbeans.jax /*nb-special* -nb-terms netbeans.jax /*nb-terms* -ncf.vim syntax.jax /*ncf.vim* -netbeans netbeans.jax /*netbeans* -netbeans-commands netbeans.jax /*netbeans-commands* -netbeans-configure netbeans.jax /*netbeans-configure* -netbeans-debugging netbeans.jax /*netbeans-debugging* -netbeans-download netbeans.jax /*netbeans-download* -netbeans-integration netbeans.jax /*netbeans-integration* -netbeans-intro netbeans.jax /*netbeans-intro* -netbeans-keybindings netbeans.jax /*netbeans-keybindings* -netbeans-messages netbeans.jax /*netbeans-messages* -netbeans-parameters netbeans.jax /*netbeans-parameters* -netbeans-preparation netbeans.jax /*netbeans-preparation* -netbeans-problems netbeans.jax /*netbeans-problems* -netbeans-protocol netbeans.jax /*netbeans-protocol* -netbeans-run netbeans.jax /*netbeans-run* -netbeans-setup netbeans.jax /*netbeans-setup* -netbeans-support netbeans.jax /*netbeans-support* -netbeans.txt netbeans.jax /*netbeans.txt* -netreadfixup pi_netrw.jax /*netreadfixup* -netrw pi_netrw.jax /*netrw* -netrw-% pi_netrw.jax /*netrw-%* -netrw-- pi_netrw.jax /*netrw--* -netrw-C pi_netrw.jax /*netrw-C* -netrw-D pi_netrw.jax /*netrw-D* -netrw-O pi_netrw.jax /*netrw-O* -netrw-P pi_netrw.jax /*netrw-P* -netrw-R pi_netrw.jax /*netrw-R* -netrw-S pi_netrw.jax /*netrw-S* -netrw-T pi_netrw.jax /*netrw-T* -netrw-U pi_netrw.jax /*netrw-U* -netrw-a pi_netrw.jax /*netrw-a* -netrw-activate pi_netrw.jax /*netrw-activate* -netrw-bookmark pi_netrw.jax /*netrw-bookmark* -netrw-bookmarks pi_netrw.jax /*netrw-bookmarks* -netrw-browse pi_netrw.jax /*netrw-browse* -netrw-browse-cmds pi_netrw.jax /*netrw-browse-cmds* -netrw-browse-maps pi_netrw.jax /*netrw-browse-maps* -netrw-browser pi_netrw.jax /*netrw-browser* -netrw-browser-options pi_netrw.jax /*netrw-browser-options* -netrw-browser-var pi_netrw.jax /*netrw-browser-var* -netrw-browsing pi_netrw.jax /*netrw-browsing* -netrw-c pi_netrw.jax /*netrw-c* -netrw-cadaver pi_netrw.jax /*netrw-cadaver* -netrw-chgup pi_netrw.jax /*netrw-chgup* -netrw-clean pi_netrw.jax /*netrw-clean* -netrw-contents pi_netrw.jax /*netrw-contents* -netrw-copyright pi_netrw.jax /*netrw-copyright* -netrw-cr pi_netrw.jax /*netrw-cr* -netrw-createfile pi_netrw.jax /*netrw-createfile* -netrw-credits pi_netrw.jax /*netrw-credits* -netrw-ctrl-h pi_netrw.jax /*netrw-ctrl-h* -netrw-ctrl-l pi_netrw.jax /*netrw-ctrl-l* -netrw-ctrl_l pi_netrw.jax /*netrw-ctrl_l* -netrw-curdir pi_netrw.jax /*netrw-curdir* -netrw-d pi_netrw.jax /*netrw-d* -netrw-debug pi_netrw.jax /*netrw-debug* -netrw-del pi_netrw.jax /*netrw-del* -netrw-delete pi_netrw.jax /*netrw-delete* -netrw-dir pi_netrw.jax /*netrw-dir* -netrw-dirlist pi_netrw.jax /*netrw-dirlist* -netrw-downdir pi_netrw.jax /*netrw-downdir* -netrw-edithide pi_netrw.jax /*netrw-edithide* -netrw-ex pi_netrw.jax /*netrw-ex* -netrw-explore pi_netrw.jax /*netrw-explore* -netrw-explore-cmds pi_netrw.jax /*netrw-explore-cmds* -netrw-externapp pi_netrw.jax /*netrw-externapp* -netrw-file pi_netrw.jax /*netrw-file* -netrw-filigree pi_netrw.jax /*netrw-filigree* -netrw-fixup pi_netrw.jax /*netrw-fixup* -netrw-ftp pi_netrw.jax /*netrw-ftp* -netrw-ftype pi_netrw.jax /*netrw-ftype* -netrw-gb pi_netrw.jax /*netrw-gb* -netrw-gd pi_netrw.jax /*netrw-gd* -netrw-getftype pi_netrw.jax /*netrw-getftype* -netrw-gf pi_netrw.jax /*netrw-gf* -netrw-gh pi_netrw.jax /*netrw-gh* -netrw-gp pi_netrw.jax /*netrw-gp* -netrw-gx pi_netrw.jax /*netrw-gx* -netrw-handler pi_netrw.jax /*netrw-handler* -netrw-help pi_netrw.jax /*netrw-help* -netrw-hexplore pi_netrw.jax /*netrw-hexplore* -netrw-hide pi_netrw.jax /*netrw-hide* -netrw-hiding pi_netrw.jax /*netrw-hiding* -netrw-history pi_netrw.jax /*netrw-history* -netrw-horiz pi_netrw.jax /*netrw-horiz* -netrw-i pi_netrw.jax /*netrw-i* -netrw-incompatible pi_netrw.jax /*netrw-incompatible* -netrw-intro-browse pi_netrw.jax /*netrw-intro-browse* -netrw-leftmouse pi_netrw.jax /*netrw-leftmouse* -netrw-list pi_netrw.jax /*netrw-list* -netrw-listbookmark pi_netrw.jax /*netrw-listbookmark* -netrw-listhack pi_netrw.jax /*netrw-listhack* -netrw-login pi_netrw.jax /*netrw-login* -netrw-mB pi_netrw.jax /*netrw-mB* -netrw-mT pi_netrw.jax /*netrw-mT* -netrw-mb pi_netrw.jax /*netrw-mb* -netrw-mc pi_netrw.jax /*netrw-mc* -netrw-md pi_netrw.jax /*netrw-md* -netrw-me pi_netrw.jax /*netrw-me* -netrw-mf pi_netrw.jax /*netrw-mf* -netrw-mg pi_netrw.jax /*netrw-mg* -netrw-mh pi_netrw.jax /*netrw-mh* -netrw-middlemouse pi_netrw.jax /*netrw-middlemouse* -netrw-ml_get pi_netrw.jax /*netrw-ml_get* -netrw-mm pi_netrw.jax /*netrw-mm* -netrw-mouse pi_netrw.jax /*netrw-mouse* -netrw-move pi_netrw.jax /*netrw-move* -netrw-mp pi_netrw.jax /*netrw-mp* -netrw-mr pi_netrw.jax /*netrw-mr* -netrw-ms pi_netrw.jax /*netrw-ms* -netrw-mt pi_netrw.jax /*netrw-mt* -netrw-mu pi_netrw.jax /*netrw-mu* -netrw-mx pi_netrw.jax /*netrw-mx* -netrw-mz pi_netrw.jax /*netrw-mz* -netrw-netrc pi_netrw.jax /*netrw-netrc* -netrw-nexplore pi_netrw.jax /*netrw-nexplore* -netrw-noload pi_netrw.jax /*netrw-noload* -netrw-nread pi_netrw.jax /*netrw-nread* -netrw-nwrite pi_netrw.jax /*netrw-nwrite* -netrw-o pi_netrw.jax /*netrw-o* -netrw-options pi_netrw.jax /*netrw-options* -netrw-p pi_netrw.jax /*netrw-p* -netrw-p1 pi_netrw.jax /*netrw-p1* -netrw-p10 pi_netrw.jax /*netrw-p10* -netrw-p11 pi_netrw.jax /*netrw-p11* -netrw-p12 pi_netrw.jax /*netrw-p12* -netrw-p13 pi_netrw.jax /*netrw-p13* -netrw-p14 pi_netrw.jax /*netrw-p14* -netrw-p15 pi_netrw.jax /*netrw-p15* -netrw-p2 pi_netrw.jax /*netrw-p2* -netrw-p3 pi_netrw.jax /*netrw-p3* -netrw-p4 pi_netrw.jax /*netrw-p4* -netrw-p5 pi_netrw.jax /*netrw-p5* -netrw-p6 pi_netrw.jax /*netrw-p6* -netrw-p7 pi_netrw.jax /*netrw-p7* -netrw-p8 pi_netrw.jax /*netrw-p8* -netrw-p9 pi_netrw.jax /*netrw-p9* -netrw-passwd pi_netrw.jax /*netrw-passwd* -netrw-password pi_netrw.jax /*netrw-password* -netrw-path pi_netrw.jax /*netrw-path* -netrw-pexplore pi_netrw.jax /*netrw-pexplore* -netrw-preview pi_netrw.jax /*netrw-preview* -netrw-problems pi_netrw.jax /*netrw-problems* -netrw-protocol pi_netrw.jax /*netrw-protocol* -netrw-prvwin pi_netrw.jax /*netrw-prvwin* -netrw-pscp pi_netrw.jax /*netrw-pscp* -netrw-psftp pi_netrw.jax /*netrw-psftp* -netrw-putty pi_netrw.jax /*netrw-putty* -netrw-qb pi_netrw.jax /*netrw-qb* -netrw-qf pi_netrw.jax /*netrw-qf* -netrw-quickcom pi_netrw.jax /*netrw-quickcom* -netrw-quickcoms pi_netrw.jax /*netrw-quickcoms* -netrw-quickhelp pi_netrw.jax /*netrw-quickhelp* -netrw-quickmap pi_netrw.jax /*netrw-quickmap* -netrw-quickmaps pi_netrw.jax /*netrw-quickmaps* -netrw-r pi_netrw.jax /*netrw-r* -netrw-read pi_netrw.jax /*netrw-read* -netrw-ref pi_netrw.jax /*netrw-ref* -netrw-rename pi_netrw.jax /*netrw-rename* -netrw-reverse pi_netrw.jax /*netrw-reverse* -netrw-rexplore pi_netrw.jax /*netrw-rexplore* -netrw-rightmouse pi_netrw.jax /*netrw-rightmouse* -netrw-s pi_netrw.jax /*netrw-s* -netrw-settings pi_netrw.jax /*netrw-settings* -netrw-sexplore pi_netrw.jax /*netrw-sexplore* -netrw-sort pi_netrw.jax /*netrw-sort* -netrw-sortsequence pi_netrw.jax /*netrw-sortsequence* -netrw-source pi_netrw.jax /*netrw-source* -netrw-ssh-hack pi_netrw.jax /*netrw-ssh-hack* -netrw-star pi_netrw.jax /*netrw-star* -netrw-starpat pi_netrw.jax /*netrw-starpat* -netrw-starstar pi_netrw.jax /*netrw-starstar* -netrw-starstarpat pi_netrw.jax /*netrw-starstarpat* -netrw-start pi_netrw.jax /*netrw-start* -netrw-t pi_netrw.jax /*netrw-t* -netrw-texplore pi_netrw.jax /*netrw-texplore* -netrw-todo pi_netrw.jax /*netrw-todo* -netrw-trailingslash pi_netrw.jax /*netrw-trailingslash* -netrw-transparent pi_netrw.jax /*netrw-transparent* -netrw-u pi_netrw.jax /*netrw-u* -netrw-updir pi_netrw.jax /*netrw-updir* -netrw-urls pi_netrw.jax /*netrw-urls* -netrw-userpass pi_netrw.jax /*netrw-userpass* -netrw-v pi_netrw.jax /*netrw-v* -netrw-var pi_netrw.jax /*netrw-var* -netrw-variables pi_netrw.jax /*netrw-variables* -netrw-vexplore pi_netrw.jax /*netrw-vexplore* -netrw-write pi_netrw.jax /*netrw-write* -netrw-x pi_netrw.jax /*netrw-x* -netrw-xfer pi_netrw.jax /*netrw-xfer* -netrw.vim pi_netrw.jax /*netrw.vim* -netrw_filehandler pi_netrw.jax /*netrw_filehandler* -netterm-mouse options.jax /*netterm-mouse* -network pi_netrw.jax /*network* -new-filetype filetype.jax /*new-filetype* -new-filetype-scripts filetype.jax /*new-filetype-scripts* -news intro.jax /*news* -nextnonblank() eval.jax /*nextnonblank()* -no-eval-feature eval.jax /*no-eval-feature* -no_buffers_menu gui.jax /*no_buffers_menu* -non-greedy pattern.jax /*non-greedy* -non-zero-arg eval.jax /*non-zero-arg* -normal-index index.jax /*normal-index* -not-compatible usr_01.jax /*not-compatible* -not-edited editing.jax /*not-edited* -notation intro.jax /*notation* -notepad gui_w32.jax /*notepad* -nr2char() eval.jax /*nr2char()* -nroff.vim syntax.jax /*nroff.vim* -numbered-function eval.jax /*numbered-function* -o insert.jax /*o* -o_CTRL-V motion.jax /*o_CTRL-V* -o_V motion.jax /*o_V* -o_v motion.jax /*o_v* -object-motions motion.jax /*object-motions* -object-select motion.jax /*object-select* -objects index.jax /*objects* -obtaining-exted netbeans.jax /*obtaining-exted* -ocaml.vim syntax.jax /*ocaml.vim* -octal eval.jax /*octal* -octal-number options.jax /*octal-number* -oldfiles-variable eval.jax /*oldfiles-variable* -ole-activation if_ole.jax /*ole-activation* -ole-eval if_ole.jax /*ole-eval* -ole-gethwnd if_ole.jax /*ole-gethwnd* -ole-interface if_ole.jax /*ole-interface* -ole-methods if_ole.jax /*ole-methods* -ole-normal if_ole.jax /*ole-normal* -ole-registration if_ole.jax /*ole-registration* -ole-sendkeys if_ole.jax /*ole-sendkeys* -ole-setforeground if_ole.jax /*ole-setforeground* -omap-info map.jax /*omap-info* -omni-sql-completion ft_sql.jax /*omni-sql-completion* -online-help helphelp.jax /*online-help* -opening-window windows.jax /*opening-window* -operator motion.jax /*operator* -operator-variable eval.jax /*operator-variable* -option-backslash options.jax /*option-backslash* -option-list quickref.jax /*option-list* -option-summary options.jax /*option-summary* -option-window options.jax /*option-window* -options options.jax /*options* -options.txt options.jax /*options.txt* -optwin options.jax /*optwin* -oracle ft_sql.jax /*oracle* -os2 os_os2.jax /*os2* -os2ansi os_os2.jax /*os2ansi* -os390 os_390.jax /*os390* -os_390.txt os_390.jax /*os_390.txt* -os_amiga.txt os_amiga.jax /*os_amiga.txt* -os_beos.txt os_beos.jax /*os_beos.txt* -os_dos.txt os_dos.jax /*os_dos.txt* -os_mac.txt os_mac.jax /*os_mac.txt* -os_mint.txt os_mint.jax /*os_mint.txt* -os_msdos.txt os_msdos.jax /*os_msdos.txt* -os_os2.txt os_os2.jax /*os_os2.txt* -os_qnx.txt os_qnx.jax /*os_qnx.txt* -os_risc.txt os_risc.jax /*os_risc.txt* -os_unix.txt os_unix.jax /*os_unix.txt* -os_vms.txt os_vms.jax /*os_vms.txt* -os_win32.txt os_win32.jax /*os_win32.txt* -other-features vi_diff.jax /*other-features* -p change.jax /*p* -page-down intro.jax /*page-down* -page-up intro.jax /*page-up* -page_down intro.jax /*page_down* -page_up intro.jax /*page_up* -pager message.jax /*pager* -papp.vim syntax.jax /*papp.vim* -paragraph motion.jax /*paragraph* -pascal.vim syntax.jax /*pascal.vim* -pathshorten() eval.jax /*pathshorten()* -pattern pattern.jax /*pattern* -pattern-atoms pattern.jax /*pattern-atoms* -pattern-multi-byte pattern.jax /*pattern-multi-byte* -pattern-multi-items pattern.jax /*pattern-multi-items* -pattern-overview pattern.jax /*pattern-overview* -pattern-searches pattern.jax /*pattern-searches* -pattern.txt pattern.jax /*pattern.txt* -patterns-composing pattern.jax /*patterns-composing* -pdev-option print.jax /*pdev-option* -penc-option print.jax /*penc-option* -perl if_perl.jax /*perl* -perl-Append if_perl.jax /*perl-Append* -perl-Buffer if_perl.jax /*perl-Buffer* -perl-Buffers if_perl.jax /*perl-Buffers* -perl-Count if_perl.jax /*perl-Count* -perl-Delete if_perl.jax /*perl-Delete* -perl-DoCommand if_perl.jax /*perl-DoCommand* -perl-Eval if_perl.jax /*perl-Eval* -perl-Get if_perl.jax /*perl-Get* -perl-GetCursor if_perl.jax /*perl-GetCursor* -perl-Msg if_perl.jax /*perl-Msg* -perl-Name if_perl.jax /*perl-Name* -perl-Number if_perl.jax /*perl-Number* -perl-Set if_perl.jax /*perl-Set* -perl-SetHeight if_perl.jax /*perl-SetHeight* -perl-SetOption if_perl.jax /*perl-SetOption* -perl-Windows if_perl.jax /*perl-Windows* -perl-compiling if_perl.jax /*perl-compiling* -perl-dynamic if_perl.jax /*perl-dynamic* -perl-editing if_perl.jax /*perl-editing* -perl-overview if_perl.jax /*perl-overview* -perl-patterns pattern.jax /*perl-patterns* -perl-using if_perl.jax /*perl-using* -perl.vim syntax.jax /*perl.vim* -persistent-undo undo.jax /*persistent-undo* -pexpr-option print.jax /*pexpr-option* -pfn-option print.jax /*pfn-option* -pheader-option print.jax /*pheader-option* -photon-fonts os_qnx.jax /*photon-fonts* -photon-gui os_qnx.jax /*photon-gui* -php-comment indent.jax /*php-comment* -php-indent indent.jax /*php-indent* -php-indenting indent.jax /*php-indenting* -php.vim syntax.jax /*php.vim* -php3.vim syntax.jax /*php3.vim* -phtml.vim syntax.jax /*phtml.vim* -pi_getscript.txt pi_getscript.jax /*pi_getscript.txt* -pi_gzip.txt pi_gzip.jax /*pi_gzip.txt* -pi_netrw.txt pi_netrw.jax /*pi_netrw.txt* -pi_paren.txt pi_paren.jax /*pi_paren.txt* -pi_spec.txt pi_spec.jax /*pi_spec.txt* -pi_tar.txt pi_tar.jax /*pi_tar.txt* -pi_vimball.txt pi_vimball.jax /*pi_vimball.txt* -pi_zip.txt pi_zip.jax /*pi_zip.txt* -pkzip options.jax /*pkzip* -plaintex.vim syntax.jax /*plaintex.vim* -plsql ft_sql.jax /*plsql* -plugin usr_05.jax /*plugin* -plugin-details filetype.jax /*plugin-details* -plugin-filetype usr_41.jax /*plugin-filetype* -plugin-special usr_41.jax /*plugin-special* -pmbcs-option print.jax /*pmbcs-option* -pmbfn-option print.jax /*pmbfn-option* -popt-option print.jax /*popt-option* -popup-menu gui.jax /*popup-menu* -popupmenu-completion insert.jax /*popupmenu-completion* -popupmenu-keys insert.jax /*popupmenu-keys* -posix vi_diff.jax /*posix* -posix-compliance vi_diff.jax /*posix-compliance* -posix-screen-size vi_diff.jax /*posix-screen-size* -postgresql ft_sql.jax /*postgresql* -postscr.vim syntax.jax /*postscr.vim* -postscript-cjk-printing print.jax /*postscript-cjk-printing* -postscript-print-encoding print.jax /*postscript-print-encoding* -postscript-print-trouble print.jax /*postscript-print-trouble* -postscript-print-util print.jax /*postscript-print-util* -postscript-printing print.jax /*postscript-printing* -pow() eval.jax /*pow()* -ppwiz.vim syntax.jax /*ppwiz.vim* -press-enter message.jax /*press-enter* -press-return message.jax /*press-return* -prevcount-variable eval.jax /*prevcount-variable* -preview-window windows.jax /*preview-window* -prevnonblank() eval.jax /*prevnonblank()* -print-intro print.jax /*print-intro* -print-options print.jax /*print-options* -print.txt print.jax /*print.txt* -printf() eval.jax /*printf()* -printf-% eval.jax /*printf-%* -printf-E eval.jax /*printf-E* -printf-G eval.jax /*printf-G* -printf-X eval.jax /*printf-X* -printf-c eval.jax /*printf-c* -printf-d eval.jax /*printf-d* -printf-e eval.jax /*printf-e* -printf-f eval.jax /*printf-f* -printf-g eval.jax /*printf-g* -printf-o eval.jax /*printf-o* -printf-s eval.jax /*printf-s* -printf-x eval.jax /*printf-x* -printing print.jax /*printing* -printing-formfeed print.jax /*printing-formfeed* -profile repeat.jax /*profile* -profiling repeat.jax /*profiling* -profiling-variable eval.jax /*profiling-variable* -progname-variable eval.jax /*progname-variable* -progress.vim syntax.jax /*progress.vim* -psql ft_sql.jax /*psql* -ptcap.vim syntax.jax /*ptcap.vim* -pterm-mouse options.jax /*pterm-mouse* -pumvisible() eval.jax /*pumvisible()* -put change.jax /*put* -put-Visual-mode change.jax /*put-Visual-mode* -python if_pyth.jax /*python* -python-buffer if_pyth.jax /*python-buffer* -python-buffers if_pyth.jax /*python-buffers* -python-command if_pyth.jax /*python-command* -python-commands if_pyth.jax /*python-commands* -python-current if_pyth.jax /*python-current* -python-dynamic if_pyth.jax /*python-dynamic* -python-error if_pyth.jax /*python-error* -python-eval if_pyth.jax /*python-eval* -python-examples if_pyth.jax /*python-examples* -python-input if_pyth.jax /*python-input* -python-output if_pyth.jax /*python-output* -python-range if_pyth.jax /*python-range* -python-vim if_pyth.jax /*python-vim* -python-window if_pyth.jax /*python-window* -python-windows if_pyth.jax /*python-windows* -python.vim syntax.jax /*python.vim* -python3 if_pyth.jax /*python3* -q repeat.jax /*q* -q/ cmdline.jax /*q\/* -q: cmdline.jax /*q:* -q? cmdline.jax /*q?* -qnx os_qnx.jax /*qnx* -qnx-compiling os_qnx.jax /*qnx-compiling* -qnx-general os_qnx.jax /*qnx-general* -qnx-terminal os_qnx.jax /*qnx-terminal* -quake.vim syntax.jax /*quake.vim* -quickfix quickfix.jax /*quickfix* -quickfix-directory-stack quickfix.jax /*quickfix-directory-stack* -quickfix-error-lists quickfix.jax /*quickfix-error-lists* -quickfix-functions usr_41.jax /*quickfix-functions* -quickfix-gcc quickfix.jax /*quickfix-gcc* -quickfix-manx quickfix.jax /*quickfix-manx* -quickfix-perl quickfix.jax /*quickfix-perl* -quickfix-valid quickfix.jax /*quickfix-valid* -quickfix-window quickfix.jax /*quickfix-window* -quickfix.txt quickfix.jax /*quickfix.txt* -quickref quickref.jax /*quickref* -quickref.txt quickref.jax /*quickref.txt* -quote change.jax /*quote* -quote# change.jax /*quote#* -quote% change.jax /*quote%* -quote+ gui_x11.jax /*quote+* -quote- change.jax /*quote-* -quote. change.jax /*quote.* -quote/ change.jax /*quote\/* -quote0 change.jax /*quote0* -quote1 change.jax /*quote1* -quote2 change.jax /*quote2* -quote3 change.jax /*quote3* -quote4 change.jax /*quote4* -quote9 change.jax /*quote9* -quote: change.jax /*quote:* -quote= change.jax /*quote=* -quote_ change.jax /*quote_* -quote_# change.jax /*quote_#* -quote_% change.jax /*quote_%* -quote_- change.jax /*quote_-* -quote_. change.jax /*quote_.* -quote_/ change.jax /*quote_\/* -quote_: change.jax /*quote_:* -quote_= change.jax /*quote_=* -quote_alpha change.jax /*quote_alpha* -quote_number change.jax /*quote_number* -quote_quote change.jax /*quote_quote* -quote_~ change.jax /*quote_~* -quotea change.jax /*quotea* -quotecommandquote intro.jax /*quotecommandquote* -quoteplus gui_x11.jax /*quoteplus* -quotequote change.jax /*quotequote* -quotes quotes.jax /*quotes* -quotes.txt quotes.jax /*quotes.txt* -quotestar gui.jax /*quotestar* -quote~ change.jax /*quote~* -r change.jax /*r* -range() eval.jax /*range()* -raw-terminal-mode term.jax /*raw-terminal-mode* -rcp pi_netrw.jax /*rcp* -read-messages insert.jax /*read-messages* -read-only-share editing.jax /*read-only-share* -readfile() eval.jax /*readfile()* -readline.vim syntax.jax /*readline.vim* -recording repeat.jax /*recording* -recover.txt recover.jax /*recover.txt* -recovery recover.jax /*recovery* -recursive_mapping map.jax /*recursive_mapping* -redo undo.jax /*redo* -redo-register undo.jax /*redo-register* -ref intro.jax /*ref* -reference intro.jax /*reference* -reference_toc help.jax /*reference_toc* -regexp pattern.jax /*regexp* -register sponsor.jax /*register* -register-faq sponsor.jax /*register-faq* -register-variable eval.jax /*register-variable* -registers change.jax /*registers* -regular-expression pattern.jax /*regular-expression* -reltime() eval.jax /*reltime()* -reltimestr() eval.jax /*reltimestr()* -remote.txt remote.jax /*remote.txt* -remote_expr() eval.jax /*remote_expr()* -remote_foreground() eval.jax /*remote_foreground()* -remote_peek() eval.jax /*remote_peek()* -remote_read() eval.jax /*remote_read()* -remote_send() eval.jax /*remote_send()* -remove() eval.jax /*remove()* -remove-filetype filetype.jax /*remove-filetype* -remove-option-flags options.jax /*remove-option-flags* -rename() eval.jax /*rename()* -rename-files tips.jax /*rename-files* -repeat() eval.jax /*repeat()* -repeat.txt repeat.jax /*repeat.txt* -repeating repeat.jax /*repeating* -replacing change.jax /*replacing* -replacing-ex insert.jax /*replacing-ex* -reselect-Visual visual.jax /*reselect-Visual* -resolve() eval.jax /*resolve()* -restore-cursor usr_05.jax /*restore-cursor* -restore-position tips.jax /*restore-position* -restricted-mode starting.jax /*restricted-mode* -retab-example change.jax /*retab-example* -rethrow eval.jax /*rethrow* -reverse() eval.jax /*reverse()* -rexx.vim syntax.jax /*rexx.vim* -rgb.txt gui_w32.jax /*rgb.txt* -rgview starting.jax /*rgview* -rgvim starting.jax /*rgvim* -right-justify change.jax /*right-justify* -rileft rileft.jax /*rileft* -rileft.txt rileft.jax /*rileft.txt* -riscos os_risc.jax /*riscos* -rot13 change.jax /*rot13* -round() eval.jax /*round()* -rsync pi_netrw.jax /*rsync* -ruby if_ruby.jax /*ruby* -ruby-buffer if_ruby.jax /*ruby-buffer* -ruby-command if_ruby.jax /*ruby-command* -ruby-commands if_ruby.jax /*ruby-commands* -ruby-dynamic if_ruby.jax /*ruby-dynamic* -ruby-evaluate if_ruby.jax /*ruby-evaluate* -ruby-globals if_ruby.jax /*ruby-globals* -ruby-message if_ruby.jax /*ruby-message* -ruby-set_option if_ruby.jax /*ruby-set_option* -ruby-vim if_ruby.jax /*ruby-vim* -ruby-window if_ruby.jax /*ruby-window* -ruby.vim syntax.jax /*ruby.vim* -russian russian.jax /*russian* -russian-intro russian.jax /*russian-intro* -russian-issues russian.jax /*russian-issues* -russian-keymap russian.jax /*russian-keymap* -russian-l18n russian.jax /*russian-l18n* -russian.txt russian.jax /*russian.txt* -rview starting.jax /*rview* -rvim starting.jax /*rvim* -rxvt syntax.jax /*rxvt* -s change.jax /*s* -s/\& change.jax /*s\/\\&* -s/\0 change.jax /*s\/\\0* -s/\1 change.jax /*s\/\\1* -s/\2 change.jax /*s\/\\2* -s/\3 change.jax /*s\/\\3* -s/\9 change.jax /*s\/\\9* -s/\<CR> change.jax /*s\/\\<CR>* -s/\E change.jax /*s\/\\E* -s/\L change.jax /*s\/\\L* -s/\U change.jax /*s\/\\U* -s/\\ change.jax /*s\/\\\\* -s/\b change.jax /*s\/\\b* -s/\e change.jax /*s\/\\e* -s/\l change.jax /*s\/\\l* -s/\n change.jax /*s\/\\n* -s/\r change.jax /*s\/\\r* -s/\t change.jax /*s\/\\t* -s/\u change.jax /*s\/\\u* -s/\~ change.jax /*s\/\\~* -s:netrw_passwd pi_netrw.jax /*s:netrw_passwd* -s:var eval.jax /*s:var* -s<CR> change.jax /*s<CR>* -sandbox eval.jax /*sandbox* -sandbox-option eval.jax /*sandbox-option* -save-file editing.jax /*save-file* -save-settings starting.jax /*save-settings* -scheme.vim syntax.jax /*scheme.vim* -scp pi_netrw.jax /*scp* -script usr_41.jax /*script* -script-here if_perl.jax /*script-here* -script-local map.jax /*script-local* -script-variable eval.jax /*script-variable* -scriptnames-dictionary eval.jax /*scriptnames-dictionary* -scriptout-changed version4.jax /*scriptout-changed* -scroll-binding scroll.jax /*scroll-binding* -scroll-cursor scroll.jax /*scroll-cursor* -scroll-down scroll.jax /*scroll-down* -scroll-horizontal scroll.jax /*scroll-horizontal* -scroll-insert tips.jax /*scroll-insert* -scroll-mouse-wheel scroll.jax /*scroll-mouse-wheel* -scroll-region term.jax /*scroll-region* -scroll-smooth tips.jax /*scroll-smooth* -scroll-up scroll.jax /*scroll-up* -scroll.txt scroll.jax /*scroll.txt* -scrollbind-quickadj scroll.jax /*scrollbind-quickadj* -scrollbind-relative scroll.jax /*scrollbind-relative* -scrolling scroll.jax /*scrolling* -scrollstart-variable eval.jax /*scrollstart-variable* -sdl.vim syntax.jax /*sdl.vim* -search() eval.jax /*search()* -search()-sub-match eval.jax /*search()-sub-match* -search-commands pattern.jax /*search-commands* -search-offset pattern.jax /*search-offset* -search-pattern pattern.jax /*search-pattern* -search-range pattern.jax /*search-range* -search-replace change.jax /*search-replace* -searchdecl() eval.jax /*searchdecl()* -searchforward-variable eval.jax /*searchforward-variable* -searchpair() eval.jax /*searchpair()* -searchpairpos() eval.jax /*searchpairpos()* -searchpos() eval.jax /*searchpos()* -section motion.jax /*section* -sed.vim syntax.jax /*sed.vim* -self eval.jax /*self* -send-money sponsor.jax /*send-money* -send-to-menu gui_w32.jax /*send-to-menu* -sendto gui_w32.jax /*sendto* -sentence motion.jax /*sentence* -server-functions usr_41.jax /*server-functions* -server2client() eval.jax /*server2client()* -serverlist() eval.jax /*serverlist()* -servername-variable eval.jax /*servername-variable* -session-file starting.jax /*session-file* -set-option options.jax /*set-option* -setbufvar() eval.jax /*setbufvar()* -setcmdpos() eval.jax /*setcmdpos()* -setline() eval.jax /*setline()* -setloclist() eval.jax /*setloclist()* -setmatches() eval.jax /*setmatches()* -setpos() eval.jax /*setpos()* -setqflist() eval.jax /*setqflist()* -setreg() eval.jax /*setreg()* -settabvar() eval.jax /*settabvar()* -settabwinvar() eval.jax /*settabwinvar()* -setting-guifont gui.jax /*setting-guifont* -setting-guitablabel tabpage.jax /*setting-guitablabel* -setting-tabline tabpage.jax /*setting-tabline* -setuid change.jax /*setuid* -setwinvar() eval.jax /*setwinvar()* -sftp pi_netrw.jax /*sftp* -sgml.vim syntax.jax /*sgml.vim* -sh.vim syntax.jax /*sh.vim* -shell-window tips.jax /*shell-window* -shell_error-variable eval.jax /*shell_error-variable* -shellescape() eval.jax /*shellescape()* -shift intro.jax /*shift* -shift-left-right change.jax /*shift-left-right* -short-name-changed version4.jax /*short-name-changed* -showing-menus gui.jax /*showing-menus* -sign-commands sign.jax /*sign-commands* -sign-intro sign.jax /*sign-intro* -sign-support sign.jax /*sign-support* -sign.txt sign.jax /*sign.txt* -signs sign.jax /*signs* -simple-change change.jax /*simple-change* -simplify() eval.jax /*simplify()* -simulated-command vi_diff.jax /*simulated-command* -sin() eval.jax /*sin()* -single-repeat repeat.jax /*single-repeat* -sinh() eval.jax /*sinh()* -skeleton autocmd.jax /*skeleton* -slice eval.jax /*slice* -slow-fast-terminal term.jax /*slow-fast-terminal* -slow-start starting.jax /*slow-start* -slow-terminal term.jax /*slow-terminal* -sniff if_sniff.jax /*sniff* -sniff-commands if_sniff.jax /*sniff-commands* -sniff-compiling if_sniff.jax /*sniff-compiling* -sniff-intro if_sniff.jax /*sniff-intro* -socket-interface netbeans.jax /*socket-interface* -sort() eval.jax /*sort()* -sorting change.jax /*sorting* -soundfold() eval.jax /*soundfold()* -space intro.jax /*space* -spec-customizing pi_spec.jax /*spec-customizing* -spec-how-to-use-it pi_spec.jax /*spec-how-to-use-it* -spec-setting-a-map pi_spec.jax /*spec-setting-a-map* -spec_chglog_format pi_spec.jax /*spec_chglog_format* -spec_chglog_prepend pi_spec.jax /*spec_chglog_prepend* -spec_chglog_release_info pi_spec.jax /*spec_chglog_release_info* -special-buffers windows.jax /*special-buffers* -speed-up tips.jax /*speed-up* -spell-functions usr_41.jax /*spell-functions* -spellbadword() eval.jax /*spellbadword()* -spellsuggest() eval.jax /*spellsuggest()* -split() eval.jax /*split()* -splitfind windows.jax /*splitfind* -splitview windows.jax /*splitview* -sponsor sponsor.jax /*sponsor* -sponsor-faq sponsor.jax /*sponsor-faq* -sponsor.txt sponsor.jax /*sponsor.txt* -spoon os_unix.jax /*spoon* -spup.vim syntax.jax /*spup.vim* -sql-adding-dialects ft_sql.jax /*sql-adding-dialects* -sql-completion ft_sql.jax /*sql-completion* -sql-completion-columns ft_sql.jax /*sql-completion-columns* -sql-completion-customization ft_sql.jax /*sql-completion-customization* -sql-completion-dynamic ft_sql.jax /*sql-completion-dynamic* -sql-completion-filetypes ft_sql.jax /*sql-completion-filetypes* -sql-completion-maps ft_sql.jax /*sql-completion-maps* -sql-completion-procedures ft_sql.jax /*sql-completion-procedures* -sql-completion-static ft_sql.jax /*sql-completion-static* -sql-completion-tables ft_sql.jax /*sql-completion-tables* -sql-completion-tutorial ft_sql.jax /*sql-completion-tutorial* -sql-completion-views ft_sql.jax /*sql-completion-views* -sql-dialects ft_sql.jax /*sql-dialects* -sql-macros ft_sql.jax /*sql-macros* -sql-matchit ft_sql.jax /*sql-matchit* -sql-navigation ft_sql.jax /*sql-navigation* -sql-object-motions ft_sql.jax /*sql-object-motions* -sql-predefined-objects ft_sql.jax /*sql-predefined-objects* -sql-type-default ft_sql.jax /*sql-type-default* -sql-types ft_sql.jax /*sql-types* -sql.vim syntax.jax /*sql.vim* -sqlanywhere ft_sql.jax /*sqlanywhere* -sqlanywhere.vim syntax.jax /*sqlanywhere.vim* -sqlgettype ft_sql.jax /*sqlgettype* -sqlinformix.vim syntax.jax /*sqlinformix.vim* -sqlj ft_sql.jax /*sqlj* -sqlserver ft_sql.jax /*sqlserver* -sqlsettype ft_sql.jax /*sqlsettype* -sqrt() eval.jax /*sqrt()* -sscanf eval.jax /*sscanf* -standard-plugin usr_05.jax /*standard-plugin* -standard-plugin-list help.jax /*standard-plugin-list* -standout syntax.jax /*standout* -star pattern.jax /*star* -starstar editing.jax /*starstar* -starstar-wildcard editing.jax /*starstar-wildcard* -start-of-file pattern.jax /*start-of-file* -starting starting.jax /*starting* -starting-amiga starting.jax /*starting-amiga* -starting.txt starting.jax /*starting.txt* -startup starting.jax /*startup* -startup-options starting.jax /*startup-options* -startup-terminal term.jax /*startup-terminal* -static-tag tagsrch.jax /*static-tag* -status-line windows.jax /*status-line* -statusmsg-variable eval.jax /*statusmsg-variable* -sticky-type-checking eval.jax /*sticky-type-checking* -str2float() eval.jax /*str2float()* -str2nr() eval.jax /*str2nr()* -strcasestr() eval.jax /*strcasestr()* -strchars() eval.jax /*strchars()* -strchr() eval.jax /*strchr()* -strcspn() eval.jax /*strcspn()* -strdisplaywidth() eval.jax /*strdisplaywidth()* -strftime() eval.jax /*strftime()* -stridx() eval.jax /*stridx()* -string() eval.jax /*string()* -string-functions usr_41.jax /*string-functions* -string-match eval.jax /*string-match* -strlen() eval.jax /*strlen()* -strpart() eval.jax /*strpart()* -strpbrk() eval.jax /*strpbrk()* -strrchr() eval.jax /*strrchr()* -strridx() eval.jax /*strridx()* -strspn() eval.jax /*strspn()* -strstr() eval.jax /*strstr()* -strtrans() eval.jax /*strtrans()* -strwidth() eval.jax /*strwidth()* -style-changes develop.jax /*style-changes* -style-examples develop.jax /*style-examples* -style-functions develop.jax /*style-functions* -style-names develop.jax /*style-names* -style-spaces develop.jax /*style-spaces* -style-various develop.jax /*style-various* -sub-menu-priority gui.jax /*sub-menu-priority* -sub-replace-\= change.jax /*sub-replace-\\=* -sub-replace-expression change.jax /*sub-replace-expression* -sub-replace-special change.jax /*sub-replace-special* -sublist eval.jax /*sublist* -submatch() eval.jax /*submatch()* -subscribe-maillist intro.jax /*subscribe-maillist* -substitute() eval.jax /*substitute()* -suffixes cmdline.jax /*suffixes* -suspend starting.jax /*suspend* -swap-exists-choices usr_11.jax /*swap-exists-choices* -swap-file recover.jax /*swap-file* -swapchoice-variable eval.jax /*swapchoice-variable* -swapcommand-variable eval.jax /*swapcommand-variable* -swapfile-changed version4.jax /*swapfile-changed* -swapname-variable eval.jax /*swapname-variable* -sybase ft_sql.jax /*sybase* -syn-sync-grouphere syntax.jax /*syn-sync-grouphere* -syn-sync-groupthere syntax.jax /*syn-sync-groupthere* -syn-sync-linecont syntax.jax /*syn-sync-linecont* -synID() eval.jax /*synID()* -synIDattr() eval.jax /*synIDattr()* -synIDtrans() eval.jax /*synIDtrans()* -syncbind scroll.jax /*syncbind* -syncolor syntax.jax /*syncolor* -synconcealed() eval.jax /*synconcealed()* -synload-1 syntax.jax /*synload-1* -synload-2 syntax.jax /*synload-2* -synload-3 syntax.jax /*synload-3* -synload-4 syntax.jax /*synload-4* -synload-5 syntax.jax /*synload-5* -synload-6 syntax.jax /*synload-6* -synstack() eval.jax /*synstack()* -syntax syntax.jax /*syntax* -syntax-functions usr_41.jax /*syntax-functions* -syntax-highlighting syntax.jax /*syntax-highlighting* -syntax-loading syntax.jax /*syntax-loading* -syntax-printing usr_06.jax /*syntax-printing* -syntax.txt syntax.jax /*syntax.txt* -syntax_cmd syntax.jax /*syntax_cmd* -sys-file-list help.jax /*sys-file-list* -sysmouse term.jax /*sysmouse* -system() eval.jax /*system()* -system-functions usr_41.jax /*system-functions* -system-vimrc starting.jax /*system-vimrc* -s~ change.jax /*s~* -t motion.jax /*t* -t:var eval.jax /*t:var* -t_#2 term.jax /*t_#2* -t_#4 term.jax /*t_#4* -t_%1 term.jax /*t_%1* -t_%i term.jax /*t_%i* -t_&8 term.jax /*t_&8* -t_@7 term.jax /*t_@7* -t_AB term.jax /*t_AB* -t_AF term.jax /*t_AF* -t_AL term.jax /*t_AL* -t_CS term.jax /*t_CS* -t_CV term.jax /*t_CV* -t_Ce term.jax /*t_Ce* -t_Co term.jax /*t_Co* -t_Cs term.jax /*t_Cs* -t_DL term.jax /*t_DL* -t_EI term.jax /*t_EI* -t_F1 term.jax /*t_F1* -t_F2 term.jax /*t_F2* -t_F3 term.jax /*t_F3* -t_F4 term.jax /*t_F4* -t_F5 term.jax /*t_F5* -t_F6 term.jax /*t_F6* -t_F7 term.jax /*t_F7* -t_F8 term.jax /*t_F8* -t_F9 term.jax /*t_F9* -t_IE term.jax /*t_IE* -t_IS term.jax /*t_IS* -t_K1 term.jax /*t_K1* -t_K3 term.jax /*t_K3* -t_K4 term.jax /*t_K4* -t_K5 term.jax /*t_K5* -t_K6 term.jax /*t_K6* -t_K7 term.jax /*t_K7* -t_K8 term.jax /*t_K8* -t_K9 term.jax /*t_K9* -t_KA term.jax /*t_KA* -t_KB term.jax /*t_KB* -t_KC term.jax /*t_KC* -t_KD term.jax /*t_KD* -t_KE term.jax /*t_KE* -t_KF term.jax /*t_KF* -t_KG term.jax /*t_KG* -t_KH term.jax /*t_KH* -t_KI term.jax /*t_KI* -t_KJ term.jax /*t_KJ* -t_KK term.jax /*t_KK* -t_KL term.jax /*t_KL* -t_RI term.jax /*t_RI* -t_RV term.jax /*t_RV* -t_SI term.jax /*t_SI* -t_Sb term.jax /*t_Sb* -t_Sf term.jax /*t_Sf* -t_WP term.jax /*t_WP* -t_WS term.jax /*t_WS* -t_ZH term.jax /*t_ZH* -t_ZR term.jax /*t_ZR* -t_al term.jax /*t_al* -t_bc term.jax /*t_bc* -t_cd term.jax /*t_cd* -t_cdl version4.jax /*t_cdl* -t_ce term.jax /*t_ce* -t_ci version4.jax /*t_ci* -t_cil version4.jax /*t_cil* -t_cl term.jax /*t_cl* -t_cm term.jax /*t_cm* -t_cri version4.jax /*t_cri* -t_cs term.jax /*t_cs* -t_csc version4.jax /*t_csc* -t_cv version4.jax /*t_cv* -t_da term.jax /*t_da* -t_db term.jax /*t_db* -t_dl term.jax /*t_dl* -t_ed version4.jax /*t_ed* -t_el version4.jax /*t_el* -t_f1 version4.jax /*t_f1* -t_f10 version4.jax /*t_f10* -t_f2 version4.jax /*t_f2* -t_f3 version4.jax /*t_f3* -t_f4 version4.jax /*t_f4* -t_f5 version4.jax /*t_f5* -t_f6 version4.jax /*t_f6* -t_f7 version4.jax /*t_f7* -t_f8 version4.jax /*t_f8* -t_f9 version4.jax /*t_f9* -t_fs term.jax /*t_fs* -t_help version4.jax /*t_help* -t_il version4.jax /*t_il* -t_k1 term.jax /*t_k1* -t_k2 term.jax /*t_k2* -t_k3 term.jax /*t_k3* -t_k4 term.jax /*t_k4* -t_k5 term.jax /*t_k5* -t_k6 term.jax /*t_k6* -t_k7 term.jax /*t_k7* -t_k8 term.jax /*t_k8* -t_k9 term.jax /*t_k9* -t_k; term.jax /*t_k;* -t_kB term.jax /*t_kB* -t_kD term.jax /*t_kD* -t_kI term.jax /*t_kI* -t_kN term.jax /*t_kN* -t_kP term.jax /*t_kP* -t_kb term.jax /*t_kb* -t_kd term.jax /*t_kd* -t_ke term.jax /*t_ke* -t_kh term.jax /*t_kh* -t_kl term.jax /*t_kl* -t_kr term.jax /*t_kr* -t_ks term.jax /*t_ks* -t_ku term.jax /*t_ku* -t_le term.jax /*t_le* -t_mb term.jax /*t_mb* -t_md term.jax /*t_md* -t_me term.jax /*t_me* -t_mr term.jax /*t_mr* -t_ms term.jax /*t_ms* -t_nd term.jax /*t_nd* -t_op term.jax /*t_op* -t_se term.jax /*t_se* -t_sf1 version4.jax /*t_sf1* -t_sf10 version4.jax /*t_sf10* -t_sf2 version4.jax /*t_sf2* -t_sf3 version4.jax /*t_sf3* -t_sf4 version4.jax /*t_sf4* -t_sf5 version4.jax /*t_sf5* -t_sf6 version4.jax /*t_sf6* -t_sf7 version4.jax /*t_sf7* -t_sf8 version4.jax /*t_sf8* -t_sf9 version4.jax /*t_sf9* -t_skd version4.jax /*t_skd* -t_skl version4.jax /*t_skl* -t_skr version4.jax /*t_skr* -t_sku version4.jax /*t_sku* -t_so term.jax /*t_so* -t_sr term.jax /*t_sr* -t_star7 term.jax /*t_star7* -t_tb version4.jax /*t_tb* -t_te term.jax /*t_te* -t_ti term.jax /*t_ti* -t_tp version4.jax /*t_tp* -t_ts term.jax /*t_ts* -t_ts_old version4.jax /*t_ts_old* -t_ue term.jax /*t_ue* -t_undo version4.jax /*t_undo* -t_us term.jax /*t_us* -t_ut term.jax /*t_ut* -t_vb term.jax /*t_vb* -t_ve term.jax /*t_ve* -t_vi term.jax /*t_vi* -t_vs term.jax /*t_vs* -t_xs term.jax /*t_xs* -tab intro.jax /*tab* -tab-page tabpage.jax /*tab-page* -tab-page-commands tabpage.jax /*tab-page-commands* -tab-page-intro tabpage.jax /*tab-page-intro* -tab-page-other tabpage.jax /*tab-page-other* -tabline-menu tabpage.jax /*tabline-menu* -tabpage tabpage.jax /*tabpage* -tabpage-variable eval.jax /*tabpage-variable* -tabpage.txt tabpage.jax /*tabpage.txt* -tabpagebuflist() eval.jax /*tabpagebuflist()* -tabpagenr() eval.jax /*tabpagenr()* -tabpagewinnr() eval.jax /*tabpagewinnr()* -tag tagsrch.jax /*tag* -tag-! tagsrch.jax /*tag-!* -tag-any-white tagsrch.jax /*tag-any-white* -tag-binary-search tagsrch.jax /*tag-binary-search* -tag-blocks motion.jax /*tag-blocks* -tag-commands tagsrch.jax /*tag-commands* -tag-details tagsrch.jax /*tag-details* -tag-highlight syntax.jax /*tag-highlight* -tag-matchlist tagsrch.jax /*tag-matchlist* -tag-old-static tagsrch.jax /*tag-old-static* -tag-preview tagsrch.jax /*tag-preview* -tag-priority tagsrch.jax /*tag-priority* -tag-regexp tagsrch.jax /*tag-regexp* -tag-search tagsrch.jax /*tag-search* -tag-security tagsrch.jax /*tag-security* -tag-skip-file tagsrch.jax /*tag-skip-file* -tag-stack tagsrch.jax /*tag-stack* -tagfiles() eval.jax /*tagfiles()* -taglist() eval.jax /*taglist()* -tags tagsrch.jax /*tags* -tags-and-searches tagsrch.jax /*tags-and-searches* -tags-file-format tagsrch.jax /*tags-file-format* -tags-option tagsrch.jax /*tags-option* -tagsrch.txt tagsrch.jax /*tagsrch.txt* -tagstack tagsrch.jax /*tagstack* -tan() eval.jax /*tan()* -tanh() eval.jax /*tanh()* -tar pi_tar.jax /*tar* -tar-contents pi_tar.jax /*tar-contents* -tar-copyright pi_tar.jax /*tar-copyright* -tar-history pi_tar.jax /*tar-history* -tar-manual pi_tar.jax /*tar-manual* -tar-options pi_tar.jax /*tar-options* -tar-usage pi_tar.jax /*tar-usage* -tcl if_tcl.jax /*tcl* -tcl-beep if_tcl.jax /*tcl-beep* -tcl-buffer if_tcl.jax /*tcl-buffer* -tcl-buffer-append if_tcl.jax /*tcl-buffer-append* -tcl-buffer-cmds if_tcl.jax /*tcl-buffer-cmds* -tcl-buffer-command if_tcl.jax /*tcl-buffer-command* -tcl-buffer-count if_tcl.jax /*tcl-buffer-count* -tcl-buffer-delcmd if_tcl.jax /*tcl-buffer-delcmd* -tcl-buffer-delete if_tcl.jax /*tcl-buffer-delete* -tcl-buffer-expr if_tcl.jax /*tcl-buffer-expr* -tcl-buffer-get if_tcl.jax /*tcl-buffer-get* -tcl-buffer-insert if_tcl.jax /*tcl-buffer-insert* -tcl-buffer-last if_tcl.jax /*tcl-buffer-last* -tcl-buffer-mark if_tcl.jax /*tcl-buffer-mark* -tcl-buffer-option if_tcl.jax /*tcl-buffer-option* -tcl-buffer-set if_tcl.jax /*tcl-buffer-set* -tcl-buffer-windows if_tcl.jax /*tcl-buffer-windows* -tcl-bugs if_tcl.jax /*tcl-bugs* -tcl-command if_tcl.jax /*tcl-command* -tcl-commands if_tcl.jax /*tcl-commands* -tcl-dynamic if_tcl.jax /*tcl-dynamic* -tcl-ex-commands if_tcl.jax /*tcl-ex-commands* -tcl-examples if_tcl.jax /*tcl-examples* -tcl-expr if_tcl.jax /*tcl-expr* -tcl-linenumbers if_tcl.jax /*tcl-linenumbers* -tcl-misc if_tcl.jax /*tcl-misc* -tcl-option if_tcl.jax /*tcl-option* -tcl-output if_tcl.jax /*tcl-output* -tcl-var-current if_tcl.jax /*tcl-var-current* -tcl-var-lbase if_tcl.jax /*tcl-var-lbase* -tcl-var-line if_tcl.jax /*tcl-var-line* -tcl-var-lnum if_tcl.jax /*tcl-var-lnum* -tcl-var-range if_tcl.jax /*tcl-var-range* -tcl-variables if_tcl.jax /*tcl-variables* -tcl-window if_tcl.jax /*tcl-window* -tcl-window-buffer if_tcl.jax /*tcl-window-buffer* -tcl-window-cmds if_tcl.jax /*tcl-window-cmds* -tcl-window-command if_tcl.jax /*tcl-window-command* -tcl-window-cursor if_tcl.jax /*tcl-window-cursor* -tcl-window-delcmd if_tcl.jax /*tcl-window-delcmd* -tcl-window-expr if_tcl.jax /*tcl-window-expr* -tcl-window-height if_tcl.jax /*tcl-window-height* -tcl-window-option if_tcl.jax /*tcl-window-option* -tcsh-style cmdline.jax /*tcsh-style* -tcsh-syntax syntax.jax /*tcsh-syntax* -tcsh.vim syntax.jax /*tcsh.vim* -tear-off-menus gui.jax /*tear-off-menus* -telnet-CTRL-] tagsrch.jax /*telnet-CTRL-]* -temp-file-name eval.jax /*temp-file-name* -tempfile change.jax /*tempfile* -template autocmd.jax /*template* -tempname() eval.jax /*tempname()* -term-dependent-settings term.jax /*term-dependent-settings* -term-list syntax.jax /*term-list* -term.txt term.jax /*term.txt* -termcap term.jax /*termcap* -termcap-changed version4.jax /*termcap-changed* -termcap-colors term.jax /*termcap-colors* -termcap-cursor-color term.jax /*termcap-cursor-color* -termcap-cursor-shape term.jax /*termcap-cursor-shape* -termcap-options term.jax /*termcap-options* -termcap-title term.jax /*termcap-title* -terminal-colors os_unix.jax /*terminal-colors* -terminal-info term.jax /*terminal-info* -terminal-options term.jax /*terminal-options* -terminfo term.jax /*terminfo* -termresponse-variable eval.jax /*termresponse-variable* -tex-cchar syntax.jax /*tex-cchar* -tex-cole syntax.jax /*tex-cole* -tex-conceal syntax.jax /*tex-conceal* -tex-error syntax.jax /*tex-error* -tex-folding syntax.jax /*tex-folding* -tex-math syntax.jax /*tex-math* -tex-morecommands syntax.jax /*tex-morecommands* -tex-nospell syntax.jax /*tex-nospell* -tex-package syntax.jax /*tex-package* -tex-runon syntax.jax /*tex-runon* -tex-slow syntax.jax /*tex-slow* -tex-style syntax.jax /*tex-style* -tex-verb syntax.jax /*tex-verb* -tex.vim syntax.jax /*tex.vim* -text-functions usr_41.jax /*text-functions* -text-objects motion.jax /*text-objects* -textlock eval.jax /*textlock* -tf.vim syntax.jax /*tf.vim* -this_session-variable eval.jax /*this_session-variable* -throw-catch eval.jax /*throw-catch* -throw-expression eval.jax /*throw-expression* -throw-from-catch eval.jax /*throw-from-catch* -throw-variables eval.jax /*throw-variables* -throwpoint-variable eval.jax /*throwpoint-variable* -time-functions usr_41.jax /*time-functions* -timestamp editing.jax /*timestamp* -timestamps editing.jax /*timestamps* -tips tips.jax /*tips* -tips.txt tips.jax /*tips.txt* -toggle options.jax /*toggle* -toggle-revins version4.jax /*toggle-revins* -tolower() eval.jax /*tolower()* -toolbar-icon gui.jax /*toolbar-icon* -toupper() eval.jax /*toupper()* -tr() eval.jax /*tr()* -trojan-horse starting.jax /*trojan-horse* -trunc() eval.jax /*trunc()* -try-conditionals eval.jax /*try-conditionals* -try-echoerr eval.jax /*try-echoerr* -try-finally eval.jax /*try-finally* -try-nested eval.jax /*try-nested* -try-nesting eval.jax /*try-nesting* -tutor usr_01.jax /*tutor* -type() eval.jax /*type()* -type-mistakes tips.jax /*type-mistakes* -typecorr-settings usr_41.jax /*typecorr-settings* -typecorr.txt usr_41.jax /*typecorr.txt* -u undo.jax /*u* -uganda uganda.jax /*uganda* -uganda.txt uganda.jax /*uganda.txt* -undercurl syntax.jax /*undercurl* -underline syntax.jax /*underline* -undo undo.jax /*undo* -undo-blocks undo.jax /*undo-blocks* -undo-branches undo.jax /*undo-branches* -undo-commands undo.jax /*undo-commands* -undo-persistence undo.jax /*undo-persistence* -undo-redo undo.jax /*undo-redo* -undo-remarks undo.jax /*undo-remarks* -undo-tree undo.jax /*undo-tree* -undo-two-ways undo.jax /*undo-two-ways* -undo.txt undo.jax /*undo.txt* -undo_ftplugin usr_41.jax /*undo_ftplugin* -undofile() eval.jax /*undofile()* -undotree() eval.jax /*undotree()* -unicode mbyte.jax /*unicode* -unix os_unix.jax /*unix* -unlisted-buffer windows.jax /*unlisted-buffer* -up-down-motions motion.jax /*up-down-motions* -uppercase change.jax /*uppercase* -use-cpo-save usr_41.jax /*use-cpo-save* -use-visual-cmds version4.jax /*use-visual-cmds* -useful-mappings tips.jax /*useful-mappings* -usenet intro.jax /*usenet* -user-cmd-ambiguous map.jax /*user-cmd-ambiguous* -user-commands map.jax /*user-commands* -user-functions eval.jax /*user-functions* -user-manual usr_toc.jax /*user-manual* -using-<Plug> usr_41.jax /*using-<Plug>* -using-menus gui.jax /*using-menus* -using-scripts repeat.jax /*using-scripts* -using-xxd tips.jax /*using-xxd* -using_CTRL-V map.jax /*using_CTRL-V* -usr_01.txt usr_01.jax /*usr_01.txt* -usr_02.txt usr_02.jax /*usr_02.txt* -usr_03.txt usr_03.jax /*usr_03.txt* -usr_04.txt usr_04.jax /*usr_04.txt* -usr_05.txt usr_05.jax /*usr_05.txt* -usr_06.txt usr_06.jax /*usr_06.txt* -usr_07.txt usr_07.jax /*usr_07.txt* -usr_08.txt usr_08.jax /*usr_08.txt* -usr_09.txt usr_09.jax /*usr_09.txt* -usr_10.txt usr_10.jax /*usr_10.txt* -usr_11.txt usr_11.jax /*usr_11.txt* -usr_12.txt usr_12.jax /*usr_12.txt* -usr_20.txt usr_20.jax /*usr_20.txt* -usr_21.txt usr_21.jax /*usr_21.txt* -usr_22.txt usr_22.jax /*usr_22.txt* -usr_23.txt usr_23.jax /*usr_23.txt* -usr_24.txt usr_24.jax /*usr_24.txt* -usr_25.txt usr_25.jax /*usr_25.txt* -usr_26.txt usr_26.jax /*usr_26.txt* -usr_27.txt usr_27.jax /*usr_27.txt* -usr_28.txt usr_28.jax /*usr_28.txt* -usr_29.txt usr_29.jax /*usr_29.txt* -usr_30.txt usr_30.jax /*usr_30.txt* -usr_31.txt usr_31.jax /*usr_31.txt* -usr_32.txt usr_32.jax /*usr_32.txt* -usr_40.txt usr_40.jax /*usr_40.txt* -usr_41.txt usr_41.jax /*usr_41.txt* -usr_42.txt usr_42.jax /*usr_42.txt* -usr_43.txt usr_43.jax /*usr_43.txt* -usr_44.txt usr_44.jax /*usr_44.txt* -usr_45.txt usr_45.jax /*usr_45.txt* -usr_90.txt usr_90.jax /*usr_90.txt* -usr_toc.txt usr_toc.jax /*usr_toc.txt* -utf-8 mbyte.jax /*utf-8* -utf-8-char-arg mbyte.jax /*utf-8-char-arg* -utf-8-in-xwindows mbyte.jax /*utf-8-in-xwindows* -utf-8-typing mbyte.jax /*utf-8-typing* -utf8 mbyte.jax /*utf8* -v visual.jax /*v* -v:beval_bufnr eval.jax /*v:beval_bufnr* -v:beval_col eval.jax /*v:beval_col* -v:beval_lnum eval.jax /*v:beval_lnum* -v:beval_text eval.jax /*v:beval_text* -v:beval_winnr eval.jax /*v:beval_winnr* -v:char eval.jax /*v:char* -v:charconvert_from eval.jax /*v:charconvert_from* -v:charconvert_to eval.jax /*v:charconvert_to* -v:cmdarg eval.jax /*v:cmdarg* -v:cmdbang eval.jax /*v:cmdbang* -v:count eval.jax /*v:count* -v:count1 eval.jax /*v:count1* -v:ctype eval.jax /*v:ctype* -v:dying eval.jax /*v:dying* -v:errmsg eval.jax /*v:errmsg* -v:exception eval.jax /*v:exception* -v:fcs_choice eval.jax /*v:fcs_choice* -v:fcs_reason eval.jax /*v:fcs_reason* -v:fname_diff eval.jax /*v:fname_diff* -v:fname_in eval.jax /*v:fname_in* -v:fname_new eval.jax /*v:fname_new* -v:fname_out eval.jax /*v:fname_out* -v:folddashes eval.jax /*v:folddashes* -v:foldend eval.jax /*v:foldend* -v:foldlevel eval.jax /*v:foldlevel* -v:foldstart eval.jax /*v:foldstart* -v:insertmode eval.jax /*v:insertmode* -v:key eval.jax /*v:key* -v:lang eval.jax /*v:lang* -v:lc_time eval.jax /*v:lc_time* -v:lnum eval.jax /*v:lnum* -v:mouse_col eval.jax /*v:mouse_col* -v:mouse_lnum eval.jax /*v:mouse_lnum* -v:mouse_win eval.jax /*v:mouse_win* -v:oldfiles eval.jax /*v:oldfiles* -v:operator eval.jax /*v:operator* -v:prevcount eval.jax /*v:prevcount* -v:profiling eval.jax /*v:profiling* -v:progname eval.jax /*v:progname* -v:register eval.jax /*v:register* -v:scrollstart eval.jax /*v:scrollstart* -v:searchforward eval.jax /*v:searchforward* -v:servername eval.jax /*v:servername* -v:shell_error eval.jax /*v:shell_error* -v:statusmsg eval.jax /*v:statusmsg* -v:swapchoice eval.jax /*v:swapchoice* -v:swapcommand eval.jax /*v:swapcommand* -v:swapname eval.jax /*v:swapname* -v:termresponse eval.jax /*v:termresponse* -v:this_session eval.jax /*v:this_session* -v:throwpoint eval.jax /*v:throwpoint* -v:val eval.jax /*v:val* -v:var eval.jax /*v:var* -v:version eval.jax /*v:version* -v:warningmsg eval.jax /*v:warningmsg* -v:windowid eval.jax /*v:windowid* -v_! change.jax /*v_!* -v_$ visual.jax /*v_$* -v_: cmdline.jax /*v_:* -v_< change.jax /*v_<* -v_<BS> change.jax /*v_<BS>* -v_<Del> change.jax /*v_<Del>* -v_<Esc> visual.jax /*v_<Esc>* -v_= change.jax /*v_=* -v_> change.jax /*v_>* -v_C change.jax /*v_C* -v_CTRL-C visual.jax /*v_CTRL-C* -v_CTRL-G visual.jax /*v_CTRL-G* -v_CTRL-H change.jax /*v_CTRL-H* -v_CTRL-O visual.jax /*v_CTRL-O* -v_CTRL-V visual.jax /*v_CTRL-V* -v_CTRL-Z starting.jax /*v_CTRL-Z* -v_CTRL-\_CTRL-G intro.jax /*v_CTRL-\\_CTRL-G* -v_CTRL-\_CTRL-N intro.jax /*v_CTRL-\\_CTRL-N* -v_CTRL-] tagsrch.jax /*v_CTRL-]* -v_D change.jax /*v_D* -v_J change.jax /*v_J* -v_K various.jax /*v_K* -v_O visual.jax /*v_O* -v_P change.jax /*v_P* -v_R change.jax /*v_R* -v_S change.jax /*v_S* -v_U change.jax /*v_U* -v_V visual.jax /*v_V* -v_X change.jax /*v_X* -v_Y change.jax /*v_Y* -v_a motion.jax /*v_a* -v_a' motion.jax /*v_a'* -v_a( motion.jax /*v_a(* -v_a) motion.jax /*v_a)* -v_a< motion.jax /*v_a<* -v_a> motion.jax /*v_a>* -v_aB motion.jax /*v_aB* -v_aW motion.jax /*v_aW* -v_a[ motion.jax /*v_a[* -v_a] motion.jax /*v_a]* -v_a` motion.jax /*v_a`* -v_ab motion.jax /*v_ab* -v_ap motion.jax /*v_ap* -v_aquote motion.jax /*v_aquote* -v_as motion.jax /*v_as* -v_at motion.jax /*v_at* -v_aw motion.jax /*v_aw* -v_a{ motion.jax /*v_a{* -v_a} motion.jax /*v_a}* -v_b_< visual.jax /*v_b_<* -v_b_<_example visual.jax /*v_b_<_example* -v_b_> visual.jax /*v_b_>* -v_b_>_example visual.jax /*v_b_>_example* -v_b_A visual.jax /*v_b_A* -v_b_A_example visual.jax /*v_b_A_example* -v_b_C visual.jax /*v_b_C* -v_b_D change.jax /*v_b_D* -v_b_I visual.jax /*v_b_I* -v_b_I_example visual.jax /*v_b_I_example* -v_b_c visual.jax /*v_b_c* -v_b_r visual.jax /*v_b_r* -v_b_r_example visual.jax /*v_b_r_example* -v_c change.jax /*v_c* -v_d change.jax /*v_d* -v_g? change.jax /*v_g?* -v_gF editing.jax /*v_gF* -v_gJ change.jax /*v_gJ* -v_gV visual.jax /*v_gV* -v_g] tagsrch.jax /*v_g]* -v_g_CTRL-G editing.jax /*v_g_CTRL-G* -v_g_CTRL-] tagsrch.jax /*v_g_CTRL-]* -v_gf editing.jax /*v_gf* -v_gq change.jax /*v_gq* -v_gv visual.jax /*v_gv* -v_gw change.jax /*v_gw* -v_i motion.jax /*v_i* -v_i' motion.jax /*v_i'* -v_i( motion.jax /*v_i(* -v_i) motion.jax /*v_i)* -v_i< motion.jax /*v_i<* -v_i> motion.jax /*v_i>* -v_iB motion.jax /*v_iB* -v_iW motion.jax /*v_iW* -v_i[ motion.jax /*v_i[* -v_i] motion.jax /*v_i]* -v_i` motion.jax /*v_i`* -v_ib motion.jax /*v_ib* -v_ip motion.jax /*v_ip* -v_iquote motion.jax /*v_iquote* -v_is motion.jax /*v_is* -v_it motion.jax /*v_it* -v_iw motion.jax /*v_iw* -v_i{ motion.jax /*v_i{* -v_i} motion.jax /*v_i}* -v_o visual.jax /*v_o* -v_p change.jax /*v_p* -v_r change.jax /*v_r* -v_s change.jax /*v_s* -v_u change.jax /*v_u* -v_v visual.jax /*v_v* -v_x change.jax /*v_x* -v_y change.jax /*v_y* -v_~ change.jax /*v_~* -val-variable eval.jax /*val-variable* -valgrind debug.jax /*valgrind* -values() eval.jax /*values()* -var-functions usr_41.jax /*var-functions* -variables eval.jax /*variables* -various various.jax /*various* -various-cmds various.jax /*various-cmds* -various-functions usr_41.jax /*various-functions* -various-motions motion.jax /*various-motions* -various.txt various.jax /*various.txt* -vb.vim syntax.jax /*vb.vim* -vba pi_vimball.jax /*vba* -verbose starting.jax /*verbose* -version-variable eval.jax /*version-variable* -version4.txt version4.jax /*version4.txt* -vi intro.jax /*vi* -vi-differences vi_diff.jax /*vi-differences* -vi: options.jax /*vi:* -vi_diff.txt vi_diff.jax /*vi_diff.txt* -view starting.jax /*view* -view-diffs diff.jax /*view-diffs* -view-file starting.jax /*view-file* -views-sessions starting.jax /*views-sessions* -vim-additions vi_diff.jax /*vim-additions* -vim-announce intro.jax /*vim-announce* -vim-arguments starting.jax /*vim-arguments* -vim-default-editor gui_w32.jax /*vim-default-editor* -vim-dev intro.jax /*vim-dev* -vim-mac intro.jax /*vim-mac* -vim-modes intro.jax /*vim-modes* -vim-modes-intro intro.jax /*vim-modes-intro* -vim-multibyte intro.jax /*vim-multibyte* -vim-script-intro usr_41.jax /*vim-script-intro* -vim-variable eval.jax /*vim-variable* -vim.vim syntax.jax /*vim.vim* -vim: options.jax /*vim:* -vimball pi_vimball.jax /*vimball* -vimball-contents pi_vimball.jax /*vimball-contents* -vimball-extract pi_vimball.jax /*vimball-extract* -vimball-history pi_vimball.jax /*vimball-history* -vimball-intro pi_vimball.jax /*vimball-intro* -vimball-manual pi_vimball.jax /*vimball-manual* -vimball-windows pi_vimball.jax /*vimball-windows* -vimdev intro.jax /*vimdev* -vimdiff diff.jax /*vimdiff* -vimfiles options.jax /*vimfiles* -viminfo starting.jax /*viminfo* -viminfo-encoding starting.jax /*viminfo-encoding* -viminfo-errors starting.jax /*viminfo-errors* -viminfo-file starting.jax /*viminfo-file* -viminfo-file-marks starting.jax /*viminfo-file-marks* -viminfo-file-name starting.jax /*viminfo-file-name* -viminfo-read starting.jax /*viminfo-read* -viminfo-read-write starting.jax /*viminfo-read-write* -viminfo-write starting.jax /*viminfo-write* -vimrc starting.jax /*vimrc* -vimrc-filetype usr_05.jax /*vimrc-filetype* -vimrc-intro usr_05.jax /*vimrc-intro* -vimrc-option-example starting.jax /*vimrc-option-example* -vimrc_example.vim usr_05.jax /*vimrc_example.vim* -vimtutor usr_01.jax /*vimtutor* -virtcol() eval.jax /*virtcol()* -visual-block visual.jax /*visual-block* -visual-change visual.jax /*visual-change* -visual-examples visual.jax /*visual-examples* -visual-index index.jax /*visual-index* -visual-mode visual.jax /*visual-mode* -visual-operators visual.jax /*visual-operators* -visual-repeat visual.jax /*visual-repeat* -visual-search visual.jax /*visual-search* -visual-start visual.jax /*visual-start* -visual-use visual.jax /*visual-use* -visual.txt visual.jax /*visual.txt* -visualmode() eval.jax /*visualmode()* -vms os_vms.jax /*vms* -vms-authors os_vms.jax /*vms-authors* -vms-changes os_vms.jax /*vms-changes* -vms-compiling os_vms.jax /*vms-compiling* -vms-deploy os_vms.jax /*vms-deploy* -vms-download os_vms.jax /*vms-download* -vms-gui os_vms.jax /*vms-gui* -vms-notes os_vms.jax /*vms-notes* -vms-problems os_vms.jax /*vms-problems* -vms-started os_vms.jax /*vms-started* -vms-usage os_vms.jax /*vms-usage* -vote-for-features sponsor.jax /*vote-for-features* -votes-counted sponsor.jax /*votes-counted* -vreplace-mode insert.jax /*vreplace-mode* -vt100-cursor-keys term.jax /*vt100-cursor-keys* -vt100-function-keys term.jax /*vt100-function-keys* -w motion.jax /*w* -w32-clientserver remote.jax /*w32-clientserver* -w:current_syntax syntax.jax /*w:current_syntax* -w:quickfix_title quickfix.jax /*w:quickfix_title* -w:var eval.jax /*w:var* -warningmsg-variable eval.jax /*warningmsg-variable* -white-space pattern.jax /*white-space* -whitespace pattern.jax /*whitespace* -wildcard editing.jax /*wildcard* -wildcards editing.jax /*wildcards* -win16-!start gui_w16.jax /*win16-!start* -win16-clipboard gui_w16.jax /*win16-clipboard* -win16-colors gui_w16.jax /*win16-colors* -win16-default-editor gui_w16.jax /*win16-default-editor* -win16-dialogs gui_w16.jax /*win16-dialogs* -win16-drag-n-drop gui_w16.jax /*win16-drag-n-drop* -win16-gui gui_w16.jax /*win16-gui* -win16-maximized gui_w16.jax /*win16-maximized* -win16-printing gui_w16.jax /*win16-printing* -win16-shell gui_w16.jax /*win16-shell* -win16-start gui_w16.jax /*win16-start* -win16-truetype gui_w16.jax /*win16-truetype* -win16-various gui_w16.jax /*win16-various* -win32 os_win32.jax /*win32* -win32-!start gui_w32.jax /*win32-!start* -win32-PATH os_win32.jax /*win32-PATH* -win32-colors gui_w32.jax /*win32-colors* -win32-compiling os_win32.jax /*win32-compiling* -win32-curdir os_win32.jax /*win32-curdir* -win32-faq os_win32.jax /*win32-faq* -win32-gettext mlang.jax /*win32-gettext* -win32-gui gui_w32.jax /*win32-gui* -win32-hidden-menus gui.jax /*win32-hidden-menus* -win32-mouse os_win32.jax /*win32-mouse* -win32-open-with-menu gui_w32.jax /*win32-open-with-menu* -win32-popup-menu gui_w32.jax /*win32-popup-menu* -win32-problems os_win32.jax /*win32-problems* -win32-restore os_win32.jax /*win32-restore* -win32-startup os_win32.jax /*win32-startup* -win32-term os_win32.jax /*win32-term* -win32-vimrun gui_w32.jax /*win32-vimrun* -win32-win3.1 os_win32.jax /*win32-win3.1* -win32s os_win32.jax /*win32s* -winbufnr() eval.jax /*winbufnr()* -wincol() eval.jax /*wincol()* -window windows.jax /*window* -window-contents intro.jax /*window-contents* -window-exit editing.jax /*window-exit* -window-functions usr_41.jax /*window-functions* -window-move-cursor windows.jax /*window-move-cursor* -window-moving windows.jax /*window-moving* -window-resize windows.jax /*window-resize* -window-size term.jax /*window-size* -window-size-functions usr_41.jax /*window-size-functions* -window-tag windows.jax /*window-tag* -window-variable eval.jax /*window-variable* -windowid-variable eval.jax /*windowid-variable* -windows windows.jax /*windows* -windows-3.1 os_win32.jax /*windows-3.1* -windows-intro windows.jax /*windows-intro* -windows-starting windows.jax /*windows-starting* -windows.txt windows.jax /*windows.txt* -windows95 os_win32.jax /*windows95* -winheight() eval.jax /*winheight()* -winline() eval.jax /*winline()* -winnr() eval.jax /*winnr()* -winrestcmd() eval.jax /*winrestcmd()* -winrestview() eval.jax /*winrestview()* -winsaveview() eval.jax /*winsaveview()* -winwidth() eval.jax /*winwidth()* -word motion.jax /*word* -word-count editing.jax /*word-count* -word-motions motion.jax /*word-motions* -workbench starting.jax /*workbench* -workshop workshop.jax /*workshop* -workshop-commands workshop.jax /*workshop-commands* -workshop-compiling workshop.jax /*workshop-compiling* -workshop-configure workshop.jax /*workshop-configure* -workshop-intro workshop.jax /*workshop-intro* -workshop-support workshop.jax /*workshop-support* -workshop-xpm workshop.jax /*workshop-xpm* -workshop.txt workshop.jax /*workshop.txt* -wrap-off intro.jax /*wrap-off* -write-compiler-plugin usr_41.jax /*write-compiler-plugin* -write-device editing.jax /*write-device* -write-fail editing.jax /*write-fail* -write-filetype-plugin usr_41.jax /*write-filetype-plugin* -write-library-script usr_41.jax /*write-library-script* -write-local-help usr_41.jax /*write-local-help* -write-permissions editing.jax /*write-permissions* -write-plugin usr_41.jax /*write-plugin* -write-plugin-quickload usr_41.jax /*write-plugin-quickload* -write-quit editing.jax /*write-quit* -write-readonly editing.jax /*write-readonly* -writefile() eval.jax /*writefile()* -writing editing.jax /*writing* -www intro.jax /*www* -x change.jax /*x* -x-input-method mbyte.jax /*x-input-method* -x11-clientserver remote.jax /*x11-clientserver* -x11-cut-buffer gui_x11.jax /*x11-cut-buffer* -x11-selection gui_x11.jax /*x11-selection* -xf86conf.vim syntax.jax /*xf86conf.vim* -xfontset mbyte.jax /*xfontset* -xfree-xterm syntax.jax /*xfree-xterm* -xim mbyte.jax /*xim* -xim-input-style mbyte.jax /*xim-input-style* -xiterm syntax.jax /*xiterm* -xml-folding syntax.jax /*xml-folding* -xml-omni-datafile insert.jax /*xml-omni-datafile* -xml.vim syntax.jax /*xml.vim* -xpm.vim syntax.jax /*xpm.vim* -xterm-8-bit term.jax /*xterm-8-bit* -xterm-8bit term.jax /*xterm-8bit* -xterm-blink syntax.jax /*xterm-blink* -xterm-blinking-cursor syntax.jax /*xterm-blinking-cursor* -xterm-clipboard term.jax /*xterm-clipboard* -xterm-codes term.jax /*xterm-codes* -xterm-color syntax.jax /*xterm-color* -xterm-command-server term.jax /*xterm-command-server* -xterm-copy-paste term.jax /*xterm-copy-paste* -xterm-cursor-keys term.jax /*xterm-cursor-keys* -xterm-end-home-keys term.jax /*xterm-end-home-keys* -xterm-function-keys term.jax /*xterm-function-keys* -xterm-modifier-keys term.jax /*xterm-modifier-keys* -xterm-mouse options.jax /*xterm-mouse* -xterm-mouse-wheel scroll.jax /*xterm-mouse-wheel* -xterm-resize term.jax /*xterm-resize* -xterm-save-screen tips.jax /*xterm-save-screen* -xterm-screens tips.jax /*xterm-screens* -xterm-scroll-region term.jax /*xterm-scroll-region* -xterm-shifted-keys term.jax /*xterm-shifted-keys* -y change.jax /*y* -yank change.jax /*yank* -ye-option-gone version4.jax /*ye-option-gone* -year-2000 intro.jax /*year-2000* -your-runtime-dir usr_43.jax /*your-runtime-dir* -yy change.jax /*yy* -z index.jax /*z* -z+ scroll.jax /*z+* -z- scroll.jax /*z-* -z. scroll.jax /*z.* -z/OS os_390.jax /*z\/OS* -z<CR> scroll.jax /*z<CR>* -z<Left> scroll.jax /*z<Left>* -z<Right> scroll.jax /*z<Right>* -zA fold.jax /*zA* -zC fold.jax /*zC* -zD fold.jax /*zD* -zE fold.jax /*zE* -zF fold.jax /*zF* -zH scroll.jax /*zH* -zL scroll.jax /*zL* -zM fold.jax /*zM* -zN fold.jax /*zN* -zN<CR> scroll.jax /*zN<CR>* -zO fold.jax /*zO* -zOS os_390.jax /*zOS* -zOS-Bugs os_390.jax /*zOS-Bugs* -zOS-Motif os_390.jax /*zOS-Motif* -zOS-PuTTY os_390.jax /*zOS-PuTTY* -zOS-has-ebcdic os_390.jax /*zOS-has-ebcdic* -zOS-limitations os_390.jax /*zOS-limitations* -zOS-open-source os_390.jax /*zOS-open-source* -zR fold.jax /*zR* -zX fold.jax /*zX* -z^ scroll.jax /*z^* -za fold.jax /*za* -zb scroll.jax /*zb* -zc fold.jax /*zc* -zd fold.jax /*zd* -ze scroll.jax /*ze* -zf fold.jax /*zf* -zh scroll.jax /*zh* -zi fold.jax /*zi* -zip pi_zip.jax /*zip* -zip-contents pi_zip.jax /*zip-contents* -zip-copyright pi_zip.jax /*zip-copyright* -zip-extension pi_zip.jax /*zip-extension* -zip-history pi_zip.jax /*zip-history* -zip-manual pi_zip.jax /*zip-manual* -zip-usage pi_zip.jax /*zip-usage* -zj fold.jax /*zj* -zk fold.jax /*zk* -zl scroll.jax /*zl* -zm fold.jax /*zm* -zn fold.jax /*zn* -zo fold.jax /*zo* -zr fold.jax /*zr* -zs scroll.jax /*zs* -zt scroll.jax /*zt* -zv fold.jax /*zv* -zx fold.jax /*zx* -zz scroll.jax /*zz* -{ motion.jax /*{* -{Visual} intro.jax /*{Visual}* -{address} cmdline.jax /*{address}* -{arglist} editing.jax /*{arglist}* -{char1-char2} intro.jax /*{char1-char2}* -{event} autocmd.jax /*{event}* -{file} editing.jax /*{file}* -{group-name} syntax.jax /*{group-name}* -{lhs} map.jax /*{lhs}* -{motion} intro.jax /*{motion}* -{move-around} visual.jax /*{move-around}* -{offset} pattern.jax /*{offset}* -{pat} autocmd.jax /*{pat}* -{rhs} map.jax /*{rhs}* -{subject} helphelp.jax /*{subject}* -{} intro.jax /*{}* -} motion.jax /*}* -~ change.jax /*~* diff --git a/runtime.old/doc/tagsrch.jax b/runtime.old/doc/tagsrch.jax deleted file mode 100644 index 7a87076fa..000000000 --- a/runtime.old/doc/tagsrch.jax +++ /dev/null @@ -1,814 +0,0 @@ -*tagsrch.txt* For Vim バージョン 7.3. Last change: 2009 Feb 18 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Tags and special searches *tags-and-searches* - -初めにユーザーマニュアルのセクション|29.1|をご覧ください。 - -1. タグへのジャンプ |tag-commands| -2. タグスタック |tag-stack| -3. タグマッチリスト |tag-matchlist| -4. タグの詳細 |tag-details| -5. タグファイルの書式 |tags-file-format| -6. インクルードファイルの検索 |include-search| - -============================================================================== -1. タグへのジャンプ *tag-commands* - - *tag* *tags* -タグとは"tags"ファイルに現われる識別子である。タグはラベルのようなものであり、 -そこにジャンプすることができる。例えば: Cのプログラムではそれぞれの関数名をタ -グとして使うことができる。タグ機能を使う前には、ctagsのようなプログラムによっ -て"tags"ファイルを生成しなければならない。 - -":tag"コマンドはカーソルをタグ上に移動する。CTRL-]コマンドはカーソルの下にある -キーワードをタグとして使用する。もしカーソルがキーワード上になければ、カーソル -位置から右側で最初に現れるキーワードを使用する。 - -":tag"コマンドはCプログラムでよく機能する。もし関数呼び出しを見つけた時にその -関数が何をするのか疑問に思ったら、カーソルを関数名の上に置いてCTRL-]を叩けばよ -い。これで関数定義に導いてもらえるだろう。簡単に戻る方法はCTRL-Tコマンドを使う -ことである。後述するタグスタックについても読むとよい。 - - *:ta* *:tag* *E426* *E429* -:[count]ta[g][!] {ident} - tagsファイル内の情報を用いて、{ident}の定義へジャンプ - する。{ident}はタグスタックに積まれる。[!]については - |tag-!|を参照。 - {ident}は正規表現を使用できる。|tag-regexp|を参照。 - {ident}に対してマッチするタグが複数ある場合、[count]番 - 目のタグへジャンプする。[count]が指定されないときは最 - 初のタグへジャンプする。他のマッチするタグへジャンプす - るには|tag-matchlist|を参照。 - -g<LeftMouse> *g<LeftMouse>* -<C-LeftMouse> *<C-LeftMouse>* *CTRL-]* -CTRL-] カーソルの下のキーワードを定義している場所にジャンプし - ます。":tag {ident}"と同様であるが、{ident}はカーソル - の下、もしくは次に現われるキーワードである。 - {ident}に対してマッチするタグが複数ある場合、[count]番 - 目のタグへジャンプする。[count]が指定されないときは最 - 初のタグへジャンプする。他のマッチするタグへジャンプす - るには|tag-matchlist|を参照。 - {Vi: identifier after the cursor} - - *v_CTRL-]* -{Visual}CTRL-] ":tag {ident}"と同様であるが、{ident}はハイライトされ - ているテキストである。{Vi にはない} - - *telnet-CTRL-]* -CTRL-]はtelnetの標準エスケープキーである。タグにジャンプしようとCTRL-]を打つと、 -代わりにtelnetのプロンプトが立ち上がるだろう。telnetのたいていのバージョンは、 -標準エスケープキーを変更、もしくは使用不可能にできる。telnetのマニュアルを参照 -すること。エスケープキーを使用不可能にするには'telnet -E {ホスト名}'、エスケー -プ文字を他の文字にするには'telnet -e {エスケープ文字} {ホスト名}'を使用する。 -もし可能ならtelnetの代わりにsshを使うことで、この問題を回避できる。 - - *tag-priority* -タグのマッチが複数ある場合、以下の優先度が使われる: -1. "FSC" カレントファイル内の全一致するstaticタグ。 -2. "F C" カレントファイル内の全一致するglobalタグ。 -3. "F " 別のファイル内の全一致するglobalタグ。 -4. "FS " 別のファイル内の全一致するstaticタグ。 -5. " SC" カレントファイル内の大文字、小文字を無視した一致をするstaticタグ。 -6. " C" カレントファイル内の大文字、小文字を無視した一致をするglobalタグ。 -7. " " 別のファイル内の大文字、小文字を無視した一致をするglobalタグ。 -8. " S " 別のファイル内の大文字、小文字を無視した一致をするstaticタグ。 - -カレントファイルが変わっても、優先度のリストはほとんどの場合変化しないので注意 -すること。これは":tnext"を使うときの混乱を避けるためである。優先度のリストは -":tag {ident}"を使ったときに変化する。 - -'ignorecase'オプションがオフになっているときの":tag"コマンドでは、大文字、小文 -字を区別しないマッチは見つからない。'ignorecase'がオフになっていても、("/"で -始まる)パターンを使用し、かつ":tselect"を使ったときには見つけることができる。 -大文字、小文字を区別しないタグ検索を使うと、tagsファイル内で2分探索ができなく -なるため処理が遅くなる、ということに注意すること。これはタグファイルを大文字と -小文字を区別せずにソートすることで回避できます。'tagbsearch'オプションの説明も -参照してください。 - -============================================================================== -2. タグスタック *tag-stack* *tagstack* *E425* - -タグスタック上にはジャンプ先のタグと、どこから来たのかという情報が記憶される。 -タグは'tagstack'オプションが設定されているときにだけ積まれる。 - -g<RightMouse> *g<RightMouse>* -<C-RightMouse> *<C-RightMouse>* *CTRL-T* -CTRL-T タグスタック中の[count]分だけ古いエントリにジャンプす - る(デフォルトは1)。 {Vi にはない} - - *:po* *:pop* *E555* *E556* -:[count]po[p][!] タグスタック中の[count]分だけ古いエントリにジャンプす - る(デフォルトは1)。 - [!]については|tag-!|を参照。 {Vi にはない} - -:[count]ta[g][!] タグスタック中の[count]分だけ新しいエントリにジャンプ - する(デフォルトは1)。 - [!]については|tag-!|を参照。 {Vi にはない} - - *:tags* -:tags タグスタックの内容を表示する。現在のエントリは'>'でマー - クされる。 {Vi にはない} - -":tags"の出力は以下のようになる: - - # TO tag FROM line in file/text - 1 1 main 1 harddisk2:text/vim/test - > 2 2 FuncA 58 i = FuncA(10); - 3 1 FuncC 357 harddisk2:text/vim/src/amiga.c - -このリストはジャンプ先のタグとジャンプ前のカーソル位置を表示する。上から順に古 -いタグが並び、一番下が最も新しいタグである。 - -'>'は現在のエントリを指している。これは次の":tag"コマンドで使われるタグである。 -CTRL-Tと":pop"コマンドは1つ上のタグを使う。 - -"TO"の列にはマッチリスト中の現在のマッチ数を表示する。これは":pop"や":tag"を使っ -ても変化しないので注意すること。 - -行番号とファイル名は、タグコマンドを実行する前にいた位置に戻ることができるよう -に記憶される。行番号は行の削除や挿入が行なわれた時にも正しく維持される。ただし、 -別のプログラム(例えば、Vimの別インスタンス)で編集した場合を除く。 - -ジャンプ前の位置がカレントファイル内であれば、"file/text"の列にその行が表示さ -れる。インデントは取り除かれ、長い行はウィンドウに収まるように切り詰められる。 - -前に使ったタグにジャンプするコマンドはいくつかある。例えば: - - ":pop" or CTRL-T ひとつ前に使われたタグにジャンプする。 - {count}CTRL-T {count}分だけ前のタグにジャンプする。 - ":tag" 現在のエントリより新しいタグにジャンプする。 - ":0tag" 最後に使われたタグにジャンプする。 - -これらの最も明白な利用方法は、プログラムの関数呼び出しをあちこち拾い読みするときである。次のような呼び出し図を考える: - - main ---> FuncA ---> FuncC - ---> FuncB - -(解説: mainはFuncAとFuncBを呼び出し、FuncAはFuncCを呼び出す)。 -FuncAの呼び出し部分の上でCTRL-]を使うことによって、mainからFuncAに行くことがで -きる。同様にCTRL-]を使ってFuncCへ行くことができる。mainに戻るにはCTRL-Tを2回 -使う。そこでCTRL-]を使ってFuncBに行くことができる。 - -":ta {ident}"やCTRL-]コマンドは、タグスタック上の現在の位置にタグを追加する。 -もしスタックが満たされていた場合(スタックは20エントリまで保持できる)、最も古い -エントリが削除され、古いものから順にひとつずつ上に移動する(インデックス番号は1 -ずつ減る)。もし最後に使われたエントリが一番下になかった場合、最後に使われたエ -ントリより下にあるものは削除される。つまり古いタグ経路は失われる。上のパラグラ -フの説明を実行したあとのタグスタックは次のような状態になる: - - # TO tag FROM line in file/text - 1 1 main 1 harddisk2:text/vim/test - 2 1 FuncB 59 harddisk2:text/vim/src/main.c - - *E73* -タグスタックを使おうとしたとき、タグスタックになにも入っていないとエラーが表示 -されます。 - -============================================================================== -3. タグマッチリスト *tag-matchlist* *E427* *E428* - -以下のコマンドは複数のタグがマッチしたときに、タグの間を移動するために使うこと -ができる。これらのコマンドはタグスタックを変更せず、同じエントリを保つことに注 -意すること。 - - *:ts* *:tselect* -:ts[elect][!] [ident] タグファイルの情報を用いて、[ident]にマッチするタグをリ - スト表示する。 - [ident]を省略した場合、タグスタック上の最後のタグが使 - われる。 - 最初の列に'>'があるものはリスト中の現在の位置を指し示 - している(それがあるならば)。 - [ident]は正規表現を取り得る。|tag-regexp|を参照。 - リストに使われているプロパティは|tag-priority|を参照。 - {Vi にはない} - 出力例: - -> - nr pri kind tag file - 1 F f mch_delay os_amiga.c - mch_delay(msec, ignoreinput) - > 2 F f mch_delay os_msdos.c - mch_delay(msec, ignoreinput) - 3 F f mch_delay os_unix.c - mch_delay(msec, ignoreinput) - Enter nr of choice (<CR> to abort): -< - "pri"については|tag-priority|を参照。この例は現在のファ - イルに依存しているため、":tselect xxx"を使ったときには - 違う結果が得られることに注意すること。 - "kind"はタグファイルからタグの種類が得られる場合のみ、 - その情報を示す。 - "info"はタグファイルから得られる情報が表示される。この - 情報はタグファイルを生成したプログラムに依存する。 - リストが長い場合には|more-prompt|が表示される。もしす - でに使いたいタグを見つけているのなら、'q'のあとに"nr" - の番号を入力すればよい。 - - *:sts* *:stselect* -:sts[elect][!] [ident] ":stselect[!] [ident]"を実行し、ウィンドウを分割して選 - 択されたtagを表示する。(Viでは使えない。) - - *g]* -g] CTRL-]と動作は似ているが、":tag"の変わりに":tselect"を - 用いる。(Viでは使えない。) - - *v_g]* -{Visual}g] "g]"と同じ。ただし、選択されたテキストが検索に使われ - る。{Vi にはない} - *:tj* *:tjump* -:tj[ump][!] [ident] ":tselect"と動作は似ているが、適合するtagが1つだけの - ときには直接移動する。(Viでは使えない。) - - *:stj* *:stjump* -:stj[ump][!] [ident] ":tjump[!] [ident]"を実行し、ウィンドウを分割して選択 - されたtagを表示する。(Viでは使えない。) - - *g_CTRL-]* -g CTRL-] CTRL-]と動作は似ているが、":tag"の変わりに":tjump"を用 - いる。(Viでは使えない。) - - *v_g_CTRL-]* -{Visual}g CTRL-] "g CTRL-]"と同じ。ただし、選択されたテキストが検索に使 - われる。 - *:tn* *:tnext* -:[count]tn[ext][!] 適合するtagのうち、[count]番目のtagに移動する。(省略時 - は1。)[!]に関しては|tag-!|を参照。(Viでは使えない。) - - *:tp* *:tprevious* -:[count]tp[revious][!] 適合するtagのうち、[count]分だけ前のtagに移動する。( - 省略時は1。)[!]に関しては|tag-!|を参照。(Viでは使えな - い。) - - *:tN* *:tNext* -:[count]tN[ext][!] ":tprevious"と同様。(Viでは使えない。) - - *:tr* *:trewind* -:[count]tr[ewind][!] 適合したtagのうち最初のtagに移動する。もし[count]が与 - えられていたら、[count]番目のtagに移動する。[!]につい - ては|tag-!|を参照。(Viでは使えない。) - - *:tf* *:tfirst* -:[count]tf[irst][!] ":trewind"と同じ。{Vi にはない} - *:tl* *:tlast* -:tl[ast][!] 適合したtagのうち最後のtagに移動する。[!]に関しては - |tag-!|を参照。(Viでは使えない。) - - *:lt* *:ltag* -:lt[ag][!] [ident] タグ[ident]にジャンプし、マッチするタグ全てをカレント - ウィンドウの新しいロケーションリストに追加する。 - [ident]は正規表現でもよい(|tag-regexp|を参照)。[ident] - が指定されないときはタグスタックにある最後のタグ名が使 - われる。タグにマッチする行を特定するための検索パターン - には、特別な文字を全てエスケープするために"\V"がつけら - れる(very nomagic)。マッチするタグを保持するロケーショ - ンリストはタグスタックとは独立している。[!]については - |tag-!|を参照。{Vi にはない} - -他にメッセージがないとき、Vimは今までに移動したtagとtagの数を表示する: > - tag 1 of 3 or more -" or more"は、Vimがまだすべてのtagファイルを検索していないことを示すために用い -られる。":tnext"を数回用いるか、":tlast"を使用したとき、さらにtagが見つけられ -るだろう。 - -他のメッセージがあったときや、現在の場所を知りたいときには次のコマンドで再び -表示することができる。(最後に行なった移動と同じtagに移動する。): > - :0tn -< - *tag-skip-file* -マッチしたタグに対するファイルが見つからなかった場合、スキップされて次にマッチ -するタグが使われる。Vimはファイルがないことを通知する。もしリストの終端に達し -ていたならば、エラーメッセージが与えられる。 - - *tag-preview* -タグマッチリストはプレビューウィンドウ内でも使用できる。そのコマンドは上記のも -のに似ているが、先頭に"p"がつく。 -{|+quickfix|が無効なときは利用できない} - - *:pts* *:ptselect* -:pts[elect][!] [ident] ":tselect[!] [ident]"を実行し、"Preview"ウィンドウに新 - しいタグを表示する。詳細は|:ptag|を参照すること。 - {Vi にはない} - - *:ptj* *:ptjump* -:ptj[ump][!] [ident] ":tjump[!] [ident]"を実行し、"Preview"ウィンドウに新 - しいタグを表示する。詳細は|:ptag|を参照すること。 - {Vi にはない} - - *:ptn* *:ptnext* -:[count]ptn[ext][!] プレビューウィンドウで":tnext"を実行する。|:ptag|を参 - 照すること。{Vi にはない} - - *:ptp* *:ptprevious* -:[count]ptp[revious][!] プレビューウィンドウで":tprevious"を実行する。|:ptag| - を参照すること。{Vi にはない} - - *:ptN* *:ptNext* -:[count]ptN[ext][!] ":ptprevious"と同じ。{Vi にはない} - - *:ptr* *:ptrewind* -:[count]ptr[ewind][!] プレビューウィンドウで":trewind"を実行する。|:ptag|を - 参照すること。{Vi にはない} - - *:ptf* *:ptfirst* -:[count]ptf[irst][!] ":ptrewind"と同じ。{Vi にはない} - - *:ptl* *:ptlast* -:ptl[ast][!] プレビューウィンドウで":tlast"を実行する。|:ptag|を参 - 照すること。{Vi にはない} - -============================================================================== -4. タグの詳細 *tag-details* - - *static-tag* -staticタグは特別なファイルのために定義されたタグである。Cプログラムではstatic -関数が当てはまる。 - -Viはタグにジャンプするときに現在の検索パターンを設定する。これはタグにジャンプ -したあとの"n"コマンドは、その前の検索パターンと同じ検索を行わないということで -ある。Vimではこのようなバグとも考えられることはしない。検索履歴にある検索パター -ンで検索できる。もし古いViの振る舞いを望むならば、'cpoptions'に't'を設定する。 - - *tag-binary-search* -Vimは希望のタグをすばやく見つけるために、タグファイル内で二分検索を行う -(|+tag_binary|がコンパイル時に有効になっていれば)。しかしこれはタグファイルが -ASCIIコードでソートされている場合にのみ機能する。したがって、もし適合しないも -のが見つかった場合は、その他の方法として線形検索が行われる。もし線形検索のみを -利用したいならば、'tagbsearch'オプションをリセットすればよい。そうでなければ: -タグファイルをソートすること! - -検索が明確な名前をもったタグでない場合は二分検索は利用できないことに注意するこ -と。これは大文字小文字を無視した検索や固定文字列で始まらない正規表現による検索 -で発生する。そのときはタグ検索はかなり遅くなるだろう。先人はタグファイルを大文 -字と小文字を区別せずにソートすることで回避できた。詳細は'tagbsearch'を参照して -ください。 - - *tag-regexp* -":tag"と"tselect"コマンドは引数に正規表現を受け付ける。使用できる特殊文字につ -いては|pattern|を参照すること。引数が'/'で始まる場合はパターンとして使われる。 -もし引数が'/'で始まらなければ、完全なタグ名の文字列として扱われる。 -例: > - :tag main -< 最も優先度の高い"main"というタグにジャンプする。 > - :tag /^get -< 最も優先度の高い"get"で始まるタグにジャンプする。 > - :tag /norm -< "norm"を含むすべてのタグを列挙する。これは"id_norm"というタグも含まれる。 -もし引数と全く同じタグと、正規表現によってマッチしたタグがあった場合、引数と同 -じタグが優先される。例えば、":tag /open"は"open_file"や"file_open"よりも前に -"open"にマッチする。 -正規表現を使うときは大文字・小文字は区別されない。大文字・小文字を区別したいな -ら正規表現の中で"\C"を使うこと。 - - *tag-!* -もしタグが現在のファイル上にあるならば、いつも機能するだろう。そうでなければ、 -実行結果は現在のファイルが変更されているか、コマンドに!がつけられているか、 -'autowrite'オプションが設定されているかに依存する: - -タグが現在の autowrite ~ - ファイル内 変更あり ! オプション 動作 ~ ------------------------------------------------------------------------------ - yes x x x タグに行く - no no x x 対象ファイルを読み込み、タグに行く - no yes yes x 現在のファイルを捨て、対象ファイルを読み込ん - でタグに行く - no yes no on 現在のファイルを保存し、対象ファイルを読み込 - んでタグに行く - no yes no off 失敗する ------------------------------------------------------------------------------ - -- タグが現在のファイル上にある場合は、コマンドはいつも機能する。 -- タグが他のファイル上にあり、現在のファイルが変更されていないならば、対象とな - るファイルがバッファに読み込まれる。 -- タグが他のファイル上にあり、現在のファイルが変更されていて、かつ!がコマンド - につけられている場合には、現在のファイルに対する変更は失われ、対象となるファ - イルがバッファに読み込まれる。 -- タグが他のファイル上にあり、現在のファイルが変更されていて、かつ'autowrite' - オプションが設定されている場合には、現在のファイルは保存され、対象となるファ - イルがバッファに読み込まれる。 -- タグが他のファイル上にあり、現在のファイルが変更されていて、かつ'autowrite' - オプションが設定されていない場合には、コマンドは失敗する。変更を保存したいな - らば":w"コマンドを使用し、そのあとで":tag"を引数なしで実行する。これはタグが - スタック上に残っているためにうまく機能する。変更を失ってもよいのならば、 - ":tag!"コマンドを使用できる。 - - *tag-security* -Vimはセキュリティの都合上、いくつかのコマンドを禁止していることに注意すること。 -これはちょうど現在のディレクトリにあるexrc/vimrcファイルに'secure'オプションが -使われているのと同じように機能する。|trojan-horse|と|sandbox|を参照すること。 -{tagaddress}がバッファを変更したとき、次のようなエラーメッセージが表示される: - "WARNING: tag command changed a buffer!!!" -将来のバージョンではバッファを変更することは不可能になるだろう。これらはすべて -セキュリティの理由である: 誰かが気付かれないように実行される厄介なコマンドをタ -グファイルに隠しているかもしれない。例えば: > - :$d|/tag-function-name/ -{Vi ではこのセキュリティ予防は提供されない}. - -Viでは":tag"コマンドによってタグを検索すると、最新の検索パターンを上書きする。 -Vimでは'cpoptions'に't'フラグが設定されていなければ、前の検索パターンは引き続 -き記憶される。検索パターンはいつも検索履歴にあるので、もし検索に失敗したらそこ -を修正するとよい。 - - *emacs-tags* *emacs_tags* *E430* -Emacsスタイルのタグファイルは、Vimのコンパイル時に|+emacs_tags|機能を有効にし -た場合にのみ使用できる。すまないが、Emacsタグファイルについての説明はここでは -しない。それは下位互換のためにのみ提供している :-)。 - -Emacs タグファイルの行は非常に長くなることがある。Vim は行の約510バイトまでし -か扱わない。行が無視されたかどうかは 'verbose' を5以上にしていればわかる。 - - *tags-option* -'tags'オプションはファイル名のリストで構成される。これらのファイルからタグが検 -索される。デフォルトの"tags"ファイルよりも、異なるtagsファイルがよく使われるだ -ろう。共通のtagsファイルにもよくアクセスするだろう。 - -以下のようなときは、リストの次のファイルを使わない: -- 現在のバッファに対するstaticタグが見つかった場合。 -- globalタグが見つかった場合。 -これらは'ignorecase'オプションに依存する。もしオフにしてあり、tagsファイルに大 -文字小文字が一致するタグがない場合、一致するタグを次のtagsファイルで検索する。 -もし一致するタグが見つからなければ、大文字小文字を無視して最初にマッチしたもの -が使われる。もし'ignorecase'がオンの場合、大文字小文字の区別なく、globalタグが -見つかった時点でそのタグが使用され、それ以降のtagsファイルは検索されない。 - -タグファイル名が"./"で始まるとき、'.'は現在のファイルのパスで置き換えられる。 -これにより、現在のファイルがあるディレクトリのtagsファイルを使用することができ -る(たとえ現在のディレクトリがどこであろうと)。"./"を使用する概念は、どのタグ -ファイルを最初に検索するかを決定することである: 現在のディレクトリにするか -("tags,./tags")、現在のファイルがあるディレクトリにするか("./tags,tags")であ -る。 - -例: > - :set tags=./tags,tags,/home/user/commontags - -この例では、現在のファイルがあるディレクトリの"tags"ファイルがまず検索される。 -次に現在のディレクトリにある"tags"ファイルが検索される。もしまだ見つからなけれ -ば、"/home/user/commontags"が検索される。 - -これは'cpoptions'に'd'フラグを含めることでVi互換のようにすることができる。 -"./tags"は現在のファイルがあるディレクトリのtagsファイルではなく、現在のディレ -クトリのtagsファイルを意味するようになる。 - -カンマの変わりにスペースを使用してもよい。文字列オプションに含めるためにはスペー -スの前にバックスラッシュが必要となる: > - :set tags=tags\ /home/user/commontags - -ファイル名にスペースを含めるにはバックスラッシュを3つ並べる。カンマをファイル -名に使用する場合にはバックスラッシュを2つ並べる。例えば: > - :set tags=tag\\\ file,/home/user/common\\,tags - -"tag file"と"/home/user/common,tags"というファイルが指定できる。'tags'オプショ -ンは"tag\ file,/home/user/common\,tags"という値を持つだろう。 - -'tagrelative'オプションをオンにし(デフォルト)、他のディレクトリでタグファイル -を使用すると、タグファイル内に記述されたファイル名はタグファイルがあるディレク -トリを基準として相対パスになる。 - -============================================================================== -5. タグファイルの書式 *tags-file-format* *E431* - - *ctags* *jtags* -tagsファイルは"ctags"のような外部コマンドによって生成される。それはそれぞれの -関数へのタグを含んでいる。"ctags"のあるバージョンでは"#defined"マクロやtypedef、 -enumなどに対してもタグを作ることができる。 - -tagsファイルを生成するプログラム: -ctags ほとんどのUnixシステムにある。C言語のみ対応し、基本的な - 機能を提供する。 - *Exuberant_ctags* -exuberant ctags これはとてもよいものだ。C言語、C++、Java、Fortran、 - Eiffel、そしてその他に対応している。多くの項目にタグを - 生成することができる。 - http://ctags.sourceforge.net をご覧ください。 -etags Emacsに連携する。多言語に対応している。 -JTags For Java, in Java. - http://www.fleiner.com/jtags/で入手できる。 -ptags.py For Python, in Python. - PythonのソースディレクトリTools/scripts/ptags.pyにある。 -ptags PerlのためにPerlで使う。これはここで見つかる。 - http://www.eleves.ens.fr:8080/home/nthiery/Tags/ -gnatxref Ada用。http://www.gnuada.org/ をご覧ください。 - gnatxrefはgnatパッケージの一部です。 - -tagsファイルは次の3つの形式のどれかで構成されなければならない: - -1. {tagname} {TAB} {tagfile} {TAB} {tagaddress} -2. {tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress} -3. {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} .. - -最初の形式は通常のタグで、Viで完全に互換性がある。伝統的なctagsによってのみ作 -られる形式である。これはしばしばグローバルな関数や他のファイルを参照する場合に -使用される。 - -タグファイルの行は<LF>または<CR><LF>で終わる。Macintoshでは<CR>も機能します。 -<CR>と<NL>は行内に決して現れない。 - - *tag-old-static* -2番目の形式はstaticタグにのみ使用できる。現在では廃れており、3番目の形式に置 -き換えられている。これはElvis 1.xとVim、それといくつかのバージョンのctagsによっ -てのみサポートされている。staticタグはローカル関数によく用いられ、{tagfile}内 -のみ参照する。staticタグでは2つの{tagfile}は正確に一致していなければならない -ことに注意すること。staticタグがどのように使われるかについては|tags-option|を -参照すること。 - -3番目の形式は新しい。各行の任意のフィールドに伝統的な情報を含む。これは以前の -Viとも互換性がある。新しいバージョンのctagsにのみサポートされている(Exuberant -ctagsとか)。 - -{tagname} 識別子。普通は関数名であるが、どんな識別子でも構わない。<Tab> - を含めることはできない。 -{TAB} 1文字の<Tab>。 注: 以前のバージョンではここでどんな空白文字も - 許可していた。これは{tagfile}内にスペースを使うことを断念した - ためである。コンパイル時に|+tag_any_white|機能を付加すれば再び - 使えるようになる。 *tag-any-white* -{tagfile} {tagname}の定義を含むファイル名。絶対パスでも相対パスでも構わ - ない。環境変数やワイルドカードを含んでもよい(ワイルドカードの - 使用法方法はあいまいだが)。<Tab>を含むことはできない。 -{tagaddress} カーソルをタグ上に移動するExコマンド。制限(|tag-security|を参 - 照)はあるが、どんなExコマンドでも使用可能である。 - Posixでは主に使われる行番号と検索コマンドのみ許可する。 -{term} ;" セミコロンとダブルクォートの2文字。これはViによってコメント - とみなされ、続く文字列は無視される。以前のViとの互換性を保つた - めにある。これは続くフィールドを無視する。 -{field} .. 任意のフィールドのリスト。各フィールドは次の書式を持つ: - - <Tab>{fieldname}:{value} - - {fieldname}はフィールドの識別子であり、アルファベットのみ使用 - 可能である[a-zA-Z]。 - {value}は任意の文字列であるが、<Tab>は使用できない。 - 以下の特殊文字が使用できる: - "\t"は<Tab>を表す - "\r"は<CR>を表す - "\n"は<NL>を表す - "\\"は\を表す - - ':'を持たないフィールドがある。これはタグの一種である。"kind:" - を先頭につけたものとして扱われる。 - kindsについては、それを提供するctagsのドキュメントを参照。 - - 現在Vimが認識できるその他のフィールドは"file:"(値はなし)だけで - ある。これはstaticタグに使われる。 - -tagsファイルの先頭行には、 - !_TAG_ -で始まる行を含めることができる。 -これらは極稀な"!"で始まるタグを除けば先頭行にソートされる。Vimは2つのタグを認 -識します。1つはファイルがソートされているかどうかを示す行で、この行が見つかっ -た場合には、Vimはtagsファイルに対して二分検索を使用する: - !_TAG_FILE_SORTED<TAB>1<TAB>{anything} ~ - -'ignorecase'がonのときに線形検索を避けるために、大文字と小文字を区別せずにタグ -ファイルがソートされたかもしれません。。詳細は'tagbsearch'を参照してください。 -そのときは'2'が使われます。 - !_TAG_FILE_SORTED<TAB>2<TAB>{anything} ~ - -Vimが認識するもう1つのタグはタグファイルのエンコーディングを指定するものです。 -これは|+multi_byte|が有効なときだけ利用できます。 - !_TAG_FILE_ENCODING<Tab>utf-8<Tab>{anything} ~ -ここで"utf-8"はタグのエンコーディングです。Vimはタグを検索するときに検索するタ -グを'encoding'からタグファイルのエンコーディングに変換します。そして、タグをリ -ストするときに元に戻します。変換が失敗したときは元のままのタグが使われます。 - - *tag-search* -コマンドはどんなExコマンドでも使用可能であるが、検索コマンドがよく使われるであ -ろう。 -例: - tag1 file1 /^main(argc, argv)/ ~ - tag2 file2 108 ~ - -コマンドは常に'magic'がセットされない状態で実行される。検索パターンで使用でき -る特殊文字は"^"(行頭)と"$"(<EOL>)だけである。|pattern|を参照すること。検索文字 -列中のバックスラッシュの前にはバックスラッシュをつけなければならないことに注意 -すること。これは以前のViと互換性がある。 - - *E434* *E435* -もしコマンドが普通の検索コマンド("/"か"?"で始まり、終わる)であるならば、いくつ -かの特別な扱いをされる: -- 検索はファイルの1行目から開始する。 - 検索方向は"/"で前方、"?"で後方となる。 - 'wrapscan'は問題にならず、いつもファイル全体を検索することに注意。(Vi は - 'wrapscan'を使用するため、それが原因でタグが見つからないこともある。) {Vi は - 別のファイルの2行目から検索を開始する。'wrapscan'を設定しないときには、別 - のファイルの1行目にあるタグは見つけられない} -- 検索が失敗した場合は、大文字小文字を無視してもう一度検索する。それも失敗した - 場合には次の検索が行われる: - "^tagname[ \t]*(" - (タグの先頭に'^'、末尾に"[ \t]*("が追加される)。関数名の検索の場合には、これ - はカラム0の位置にある関数名を見つけるだろう。関数の引数がtagsファイルを作成 - したときから変更になったときなどに役立つだろう。この検索でも見つからない場合 - にはさらに次の検索が行われる: - "^[#a-zA-Z_].*\<tagname[ \t]*(" - この意味は: '#'もしくは識別子で始まり、空白文字と'('が続くタグを含む行である。 - これは型が先頭にあるマクロ名や関数名を見つけるだろう。{Vi には拡張検索はない} - -============================================================================== -6. インクルードファイルの検索 *include-search* *definition-search* - *E387* *E388* *E389* - -これらのコマンドは対象となる文字列を現在のファイルと、遭遇するすべてのインクルー -ドファイルを再帰的に探す。これは変数や関数、マクロの定義を探すのに利用できる。 -現在のバッファに対してだけ検索をしたいのならば、|pattern-searches|に列挙されて -いるコマンドを使うとよい。 - -これらのコマンドは、コンパイル時に|+find_in_path|機能を使用不可にした場合には -利用できない。 - -他のファイルをインクルードする行に遭遇すると、現在のバッファを続けて検索する前 -にインクルードファイルを検索する。インクルードファイルによってインクルードされ -るファイルも同様に検索される。インクルードファイルが見つからなかった場合は黙っ -て無視する。見つからなかったファイルを知りたいときは|:checkpath|コマンドを使う。 -たぶん'path'オプションが正しく設定されていないのだろう。注: インクルードファイ -ルはファイルが検索され、そのファイルを編集中のバッファが存在しても対象にならな -い。バッファにある行は、現在のファイルにのみ適用される。 - -検索文字列は任意のキーワードや定義されたマクロが指定できる。キーワードの場合は -マッチするものを見つける。定義されたマクロの場合は'define'オプションにマッチす -る行だけが見つけられる。デフォルトはCプログラム用の"^#\s*define"である。他の言 -語の場合はおそらく変更したいだろう。C++用の例は'define'を参照。その文字列に改 -行を含めることはできません。一行内にマッチするものだけが見つかります。 - -定義されたマクロが見つかった場合、行末がバックスラッシュのときは次の行も表示す -る。 - -"["で始まるコマンドは現在のファイルの先頭から検索を開始する。"]"で始まるコマン -ドは現在のカーソル位置から検索を開始する。 - -'include'オプションは他のファイルをインクルードする行を定義する。デフォルトはC -プログラム用の"\^#\s*include"である。注: VimはCの構文を認識しない。もし -'include'オプションにマッチする行が"#ifdef/#endif"の間やコメント行であっても、 -とにかく検索される。'isfname'オプションはマッチパターンに続くファイル名を認識 -するために使用される。 - -'path'オプションは絶対パスを持たないインクルードファイルを探すためのディレクト -リを指定する。 - -'comments'オプションは単一行を表示するコマンド、もしくは行にジャンプするコマン -ドで使用される。これはコメントの開始パターンを定義する。それらの行は[!]を使用 -しない限り検索において無視される。ひとつの例外: 行が"^# *define"というパターン -にマッチしたとき、コメントであるとはみなされない。 - -もしマッチしたリストを表示して、その中からジャンプ先を選択したいならば、マッピ -ングが利用できる。例: > - - :map <F4> [I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."[\t"<CR> -< - *[i* -[i カーソルの下にあるキーワードを含む1行を表示する。検索 - はファイルの先頭から開始する。コメントとみなせる行は無 - 視される('comments'オプションを参照すること)。数字が与 - えられた場合は、先頭から指定した個数目にマッチした行を - 表示する。この場合はコメント行は無視されない。 - {Vi にはない} - - *]i* -]i "[i"と同様だが、検索が現在のカーソル位置から開始される。 - {Vi にはない} - - *:is* *:isearch* -:[range]is[earch][!] [count] [/]pattern[/] - "[i"や"]i"と同様だが、[range]で指定された範囲から検索す - る(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *[I* -[I カーソルの下にあるキーワードを含む行をすべて表示する。 - 結果にはファイル名と行番号が表示される。検索はファイル - の先頭から開始される。{Vi にはない} - - *]I* -]I "[I"と同様だが、検索が現在のカーソル位置から開始される。 - {Vi にはない} - - *:il* *:ilist* -:[range]il[ist][!] [/]pattern[/] - "[I"や"]I"と同様だが、[range]で指定された範囲から検索す - る(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *[_CTRL-I* -[ CTRL-I カーソルの下にあるキーワードを含む最初の1行にジャンプ - する。検索はファイルの先頭から開始する。コメントとみな - せる行は無視される('comments'オプションを参照すること)。 - 数字が与えられた場合は、先頭から指定した個数目にマッチ - した行にジャンプする。この場合はコメント行は無視されな - い。{Vi にはない} - - *]_CTRL-I* -] CTRL-I "[ CTRL-I"と同様だが、検索が現在のカーソル位置から開始 - される。{Vi にはない} - - *:ij* *:ijump* -:[range]ij[ump][!] [count] [/]pattern[/] - "[ CTRL-I"や"] CTRL-I"と同様だが、[range]で指定された - 範囲から検索する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - -CTRL-W CTRL-I *CTRL-W_CTRL-I* *CTRL-W_i* -CTRL-W i 新しいウィンドウを開き、カーソルの下にあったキーワード - を含む最初の1行に移動する。検索はファイルの先頭から開 - 始する。コメントとみなせる行は無視される('comments'オ - プションを参照すること)。数字が与えられた場合は、先頭 - から指定した個数目にマッチした行にジャンプする。この場 - 合はコメント行は無視されない。{Vi にはない} - - *:isp* *:isplit* -:[range]isp[lit][!] [count] [/]pattern[/] - "CTRL-W i"や"CTRL-W i"と同様だが、[range]で指定された - 範囲から検索する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *[d* -[d カーソルの下にあるマクロを含む最初のマクロ定義を表示す - る。検索はファイルの先頭から開始する。数字が与えられた - 場合は、先頭から指定した個数目にマッチした行を表示する。 - {Vi にはない} - - *]d* -]d "[d"と同様だが、検索が現在のカーソル位置から開始される。 - {Vi にはない} - - *:ds* *:dsearch* -:[range]ds[earch][!] [count] [/]string[/] - "[d"や"]d"と同様だが、[range]で指定された範囲から検索 - する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *[D* -[D カーソルの下にあるマクロを含むすべてのマクロ定義を表示 - する。結果にはファイル名と行番号が表示される。検索はファ - イルの先頭から開始される。{Vi にはない} - - *]D* -]D "[D"と同様だが、検索が現在のカーソル位置から開始される。 - {Vi にはない} - - *:dli* *:dlist* -:[range]dl[ist][!] [/]string[/] - "[D"や"]D"と同様だが、[range]で指定された範囲から検索 - する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - Note: ":dl"はフラグ"l"つきの":delete"と同じように働く。 - - *[_CTRL-D* -[ CTRL-D カーソルの下にあるキーワードを含む最初のマクロ定義にジャ - ンプする。検索はファイルの先頭から開始する。数字が与え - られた場合は、先頭から指定した個数目にマッチした行にジャ - ンプする。 {Vi にはない} - - *]_CTRL-D* -] CTRL-D "[ CTRL-D"と同様だが、検索が現在のカーソル位置から開始 - される。{Vi にはない} - - *:dj* *:djump* -:[range]dj[ump][!] [count] [/]string[/] - "[ CTRL-D"や"] CTRL-D"と同様だが、[range]で指定された - 範囲から検索する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - -CTRL-W CTRL-D *CTRL-W_CTRL-D* *CTRL-W_d* -CTRL-W d 新しいウィンドウを開き、カーソルの下にあったキーワード - を含む最初のマクロ定義に移動する。検索はファイルの先頭 - から開始する。数字が与えられた場合は、先頭から指定した - 個数目にマッチした行にジャンプする。 {Vi にはない} - - *:dsp* *:dsplit* -:[range]dsp[lit][!] [count] [/]string[/] - "CTRL-W d"と同様だが、[range]で指定された範囲から検索 - する(デフォルト: ファイル全体)。 - [/]と[!]については|:search-args|を参照。{Vi にはない} - - *:che* *:checkpath* -:che[ckpath] ファイルが見つからないすべてのインクルードファイル名を - リスト表示する。 - {Vi にはない} - -:che[ckpath]! すべてのインクルードファイル名をリスト表示する。 - {Vi にはない} - - *:search-args* -上記コマンドに共通の引数: -[!] 使用した場合は、コメントとみなせる行に対しても検索をする。使用しなかった - 場合は'comments'によってコメントとみなされる行やCコメント("//"の後ろか - /* */の間)にあるものは無視される。コメントとみなされた行が、途中からコメ - ントでなくなるようなときは見逃すかもしれないことに注意。また、コメント行 - であっても、('comments'によって)認識されないでとにかくマッチするかもしれ - ない。例: > - /* comment - foobar */ -< "foobar"に対する検索はマッチする。これは行がコメントとして認識されないた - めである(たとえ構文強調表示が認識したとしても)。 - 注: マクロ定義はたいていコメントと誤認されることはないので、":dlist"や - ":dsearch"、":djump"に[!]を使用することは大差がない。 -[/] パターンは'/'で囲むことができる。'/'なしの場合、"\<pattern\>"というパ - ターンを使うことによって、完全な語だけがマッチする。2つ目の'/'の後にだ - け、'|'を使うことによって次のコマンドを追加できる。例: > - :isearch /string/ | echo "the last one" -< ":djump", ":dsplit", ":dlist", ":dsearch"コマンドではパターンは検索パ - ターンとしてではなく文字通りに使われる。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/term.jax b/runtime.old/doc/term.jax deleted file mode 100644 index c7b3d175c..000000000 --- a/runtime.old/doc/term.jax +++ /dev/null @@ -1,871 +0,0 @@ -*term.txt* For Vim バージョン 7.3. Last change: 2011 Feb 16 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -端末情報 *terminal-info* - -Vim はユーザが使っている端末の情報にもとづいて、ユーザがどのキーを押したかを認 -識します。この情報が正しくないと、スクリーンは乱れ、キーが認識されなくなってし -まいます。スクリーンに対する操作は、キーコードのシーケンスを出力することで実現 -されています。特殊なキーを押すとコードのシーケンスが出力されます。これらのシー -ケンスは端末オプションに保存されています。|terminal-options|を参照。 - -NOTE: |GUI| で実行しているときは、このドキュメントのほとんどの事柄は関係ありま -せん。 - -1. 起動 |startup-terminal| -2. 端末オプション |terminal-options| -3. ウィンドウサイズ |window-size| -4. 端末の速度 |slow-fast-terminal| -5. マウスの使用 |mouse-using| - -============================================================================== -1. 起動 *startup-terminal* - -Vim の起動時はデフォルトの端末タイプ向けの設定になっています。これは Amiga で -は標準の CLI ウィンドウ、MS-DOS では PC の端末、Unix では ANSI 端末です。 -他に 2, 3 の端末が常に使用可能です。後述の |builtin-terms| を参照。 - -Vim の引数 '-T' により端末名を指定することができます。これが指定されない場合、 -環境変数 TERM から端末名を取得しようとします。 - - *termcap* *terminfo* *E557* *E558* *E559* -Unix では terminfo データベースや termcap ファイルが使われます。全てのドキュメ -ントを通して、これのことを "termcap" と呼びます。コンパイル時に、configure に -より terminfo と termcap を使うかどうかが自動的に決定されます。":version" の出 -力に |+terminfo| が含まれていれば terminfo を使用しています。|xterm-screens|も -参照。 - -Unix 以外のシステムでは、TERMCAP を定義してコンパイルしたときのみ termcap を使 -用できます。 - - *builtin-terms* *builtin_terms* -どの組み込み端末が利用できるかは、feature.h で定義されているマクロに依存します。 -これらはコンパイル時に設定しなければなりません: - define ":version" の出力 組み込まれる端末 ~ -NO_BUILTIN_TCAPS -builtin_terms なし -SOME_BUILTIN_TCAPS +builtin_terms 一般的なもの (デフォルト) -ALL_BUILTIN_TCAPS ++builtin_terms 全て使用可能 - -利用可能な組み込み端末のリストを見るには ":set term=xxx" とします(GUI でないと -きのみ)。|+builtin_terms|も参照。 - -termcap のコードが組み込まれているときは、termcap ファイルと組み込みの -termpcap から、使われている端末用のキーシーケンスを取得しようとします。使われ -ている端末のエントリがあるならば、その両方が使われます。どちらが先に使われるか -はオプション 'ttybuiltin' に依存します。 - -'ttybuiltin' on 1: 組み込み termcap 2: 外部 termcap -'ttybuiltin' off 1: 外部 termcap 2: 組み込み termcap - -ある端末オプションが片方にないときは、もう一方から取得します。ある端末オプショ -ンが両方にあるときは、先に見つかった方が使われます。 - -どの外部 termcap ファイルが使われるかはシステムによって異なり、環境変数 -"TERMCAP" と "TERMPATH" に依存します。"man tgetent" を参照してください。 - -端末によって設定を切り替える *term-dependent-settings* - -端末名によってオプションやマッピングを切り替えるには .vimrc で行うのがベスト -です。例: > - - if &term == "xterm" - ... xterm 用のマッピングと設定 ... - elseif &term =~ "vt10." - ... vt100, vt102 用のマッピングと設定 ... - endif -< - *raw-terminal-mode* -通常の編集に入るとき、端末は raw モードになります。このとき、't_ti' と 't_ks' -で定義されるシーケンスが端末に送信されます。これらのシーケンスにより、端末は -termcap のコードが有効になり、カーソルキーとファンクションキーが使えるようにな -ります。Vim が終了するとき、端末を起動前のモードに戻します。このとき't_te' と -'t_ke' で定義されるシーケンスが端末に送信されます。Amiga では、外部プログラム -を起動するコマンド(例: "!!")を実行するとき、一時的に端末が通常モードになります。 -そのため、print キーを押してスクリーンへの出力を止めることができます。<BS> を -押すと出力が再開します。 - - *cs7-problem* -Note: Vim を起動した後で端末の設定を変えると、設定が一貫しない状態になるかもし -れません。Solaris 2.5 で "stty cs8 parenb" が "stty cs7 parenb" に復元されてし -まうという報告が上がっています。代わりに "stty cs8 -parenb -istrip" を使ってく -ださい。これは正しく復元されます。 - -'t_ks' を送った後では、カーソルキーが termcap で定義されているのとは異なるコー -ドを送るという意味で、ある種の termcap エントリは正しくありません。この問題を -避けるには't_ks' (と't_ke')を空文字列にします。これは初期化の最中に行わねばな -りません(|initialization| を参照)。そうでないと手遅れです。 - -いくつかの termcap エントリは、最上位ビットが常にオフになっていると仮定してい -ます。例: Amiga のカーソル↑エントリは例えば ":ku=\E[A:" です。しかし実際には -"\233A" が送られます。これは、シリアル回線上で使っているときなど、最上位ビット -がオフならば正しく動作します。カーソルキーが使えない場合はこのエントリを -":ku=\233A:" にしてみてください。 - -":ku=\E[A:" というエントリをもつ termcap エントリがあります。しかし実際には -"\233A" が送られます。出力において "\E[" と "\233" はしばしば同値であり、入力 -においてはそうでありません。この問題を解決するには、termcap エントリを変更する -か、:set コマンドでキーコードを変更するしかありません。 - -多くのカーソルキーのコードは <Esc> から始まります。Vim はこれが 1 つの <Esc> -キーを押下したものか、カーソルキーのシーケンスのはじまりかを判定しなければなり -ません。そのため、次の文字が届くのを待ちます。1 秒以内に次のキーが届かない場合 -は <Esc> が押されたとみなします。非常に遅いシステムではこれが誤判定され、カー -ソルキーが使えなくなることがあります。この問題に出会った場合は 'timeout' をオ -フにしてください。Vim は <Esc> の後に届く文字を待ちます。1 つの <Esc> を入力す -るには 2 回押さなければなりません。'esckeys' をオフにすると、インサートモード -でのこの問題を解決できます。しかしインサートモードでカーソルキーとファンクショ -ンキーが使えなくなってしまいます。 - -Amiga でウィンドウリサイズを認識するには、端末名が "amiga" か "builtin_amiga" -でなければなりません。 - -ある種の端末ではカーソルキーに混乱を招きやすいコードを割り当てています。 -televideo 925 はその一例です。televideo 925 はカーソル左キーで CTRL-H を送りま -す。そのためバックスペースとカーソル左を区別することは不可能です。この問題のた -め CTRL-H は常にカーソル左と認識されます。 - - *vt100-cursor-keys* *xterm-cursor-keys* -vt100 や xterm などの端末ではカーソルキーを押すと <Esc>0A や <Esc>0B などが送 -られます。不運なことに、これらは「挿入を終了し、上に新規行を作成して 'A' や -'B' を挿入する」というインサートモードでのコマンドでもあります。 -このコマンドを実行するのでなく、カーソルキーのシーケンスが入力されたのだと誤認 -識してしまうかもしれません。これを防ぎ、意図通りの動作をさせるには次の設定を使 -います -: > - :set notimeout " マッピングについてタイムアウトしない - :set ttimeout " 端末のキーコードについてタイムアウトする - :set timeoutlen=100 " 100 ミリ秒後にタイムアウトする -この設定をすると、キーコードが 100 ミリ秒以内に送られた場合のみカーソルキーと -認識されます。ユーザが普通に入力するときはそんなに速くないので、たとえまったく -同じキーコードのシーケンスを送信しても、個々のコマンドと認識されます。 - - *vt100-function-keys* *xterm-function-keys* -xterm は vt100 互換モードと非互換モードの両方のモードで F1 から F4 のファンク -ションキーを送信できます。Vim は xterm がどちらのコードを送信するかわからない -ので、両方のタイプのキーを認識するようになっています。<Home> と <End> について -も同様です。 - 通常 vt100 ~ - <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* - <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* - <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* - <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* - <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* - <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* - -Vim が起動したときに <xF1> が <F1>へ、<xF2> が <F2> へマッピングされます。これ -により、デフォルトではどちらのコードも同じ動作になります。<xF2> へのマッピング -を作ると、デフォルトのマッピングが上書きされます。そして <F2> と <xF2> に別の -動作をさせることができます。 - - *xterm-shifted-keys* -新しいバージョンの xterm はシフトキーとファンクションキー、特殊キーの組み合わ -せをサポートしています。Vim はこれらのほとんどを認識します。":set termcap" に -よりどれがサポートされているか、そのコードは何かを調べることができます。大抵の -場合、これらは termcap には入っていません。 builtin_xterm の termcap でのみサ -ポートされています。 - - *xterm-modifier-keys* -新しいバージョンの xterm は Alt と Ctrl キーとほとんどのファンクションキーの組 -み合わせをサポートしています。全てのキーに対する Alt、Ctrl、Shift の組み合わせ -全てを termcap に追加しなくてもいいように、termcap エントリの最後に ";*X" とい -う特殊なシーケンスを追加することができます。この "X" はどんな文字でもよく、'~' -がよく使われます。";*" は省略可能な修飾キー引数を意味します。";2" は -Shift、";3" は Alt、";5" はCtrl、";9" は Meta (Alt と異なる場合)。これらを組み -合わせることができます。例: > - :set <F8>=^[[19;*~ - :set <Home>=^[[1;*H -これらのコードのもう1つの特殊な性質は、他のコードで上書きできないことです。 -xterm から直接得られたコードが |t_RV| それらを上書きするのを避けるためです。 - - *xterm-scroll-region* -Sun などのプラットフォームのデフォルトの xterm 用の termcap エントリには領域の -スクロール用のエントリが入っていません。/etc/termcap の xterm エントリに -":cs=\E[%i%d;%dr:" を追加すれば全てうまく動作するでしょう。 - - *xterm-end-home-keys* -いくつかのシステム(少なくとも FreeBSD と XFree86 3.1.2)では、 <End> と <Home> -キーが送信するキーに <NUL> 文字が含まれています。これらのキーが適切なキーコー -ドを送信するようにするために、次の行を ~/.Xdefaults に追加してください: - -*VT100.Translations: #override \n\ - <Key>Home: string("0x1b") string("[7~") \n\ - <Key>End: string("0x1b") string("[8~") - - *xterm-8bit* *xterm-8-bit* -xterm は 8 ビットエスケープシーケンスを使うモードで動作させることができます。 -このモードでは <Esc>[ の代わりに CSI コードが使われます。この利点は、インサー -トモードで <Esc> が即座に認識されることです。なぜなら、特殊キーの開始と紛らわ -しくないためです。 -組み込みの termcap エントリでは、オプション 'term' のどこかに "8bit" が含まれ -ていないか確認されます。含まれていると、termcap エントリ、マウス等に 8 ビット -文字が使われます。シェルにおいて $TERM を "xterm-8bit" に設定しておくと、Vim -はそれに気づいて自動的に 8 ビットの設定を使うようになります。 -Vim がシーケンス |t_RV| (バージョン要求)への応答を受け取ったとき、それが CSI -で始まっていれば、その端末は 8 ビットモードであると認識し、全てのキーシーケン -スを 8 ビット版に変換します。 - -============================================================================== -2. 端末オプション *terminal-options* *termcap-options* *E436* - -端末オプションは普通のオプションとまったく同じように設定できます。しかし端末オ -プションは ":set all" コマンドでは表示されないので、代わりに ":set termcap" を -使ってください。 - -termcap コードに対応するオプションを設定することによって、そのシーケンスを変更 -することができます。例: > - :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) - -{Vi: 端末オプションは存在しない。Vi を終了し、termcap エントリを編集して再起動 -しなければならない} - -端末オプションの一覧を後で載せます。対応する termcap のコードと、それに対応す -るオプション名の最後の2文字が等しくなっています。絶対に必要な termcap コードは -カーソルを移動させる 't_cm' の1つだけです。 - -オプション 't_da', 't_db', 't_ms', 't_xs' は termcap におけるフラグに対応して -います。termcap にこれらのフラグが存在すると、対応するオプションに "y" が設定 -されます。空でない文字列を設定するとオンになり、空文字列を設定するとオフになり -ます。't_CS' もこれと同様ですが、termcap フラグではありません。 - -出力コード - option 意味 ~ - - t_AB 背景色を設定 (ANSI) *t_AB* *'t_AB'* - t_AF 文字色を設定 (ANSI) *t_AF* *'t_AF'* - t_AL 指定数の空行を追加する *t_AL* *'t_AL'* - t_al 空行を追加する *t_al* *'t_al'* - t_bc バックスペース文字 *t_bc* *'t_bc'* - t_cd スクリーンの最後までクリア *t_cd* *'t_cd'* - t_ce 行末までクリア *t_ce* *'t_ce'* - t_cl 画面をクリア *t_cl* *'t_cl'* - t_cm カーソル移動 (必須!) *E437* *t_cm* *'t_cm'* - t_Co 色数 *t_Co* *'t_Co'* - t_CS 空でなければカーソルをスクロール範囲に相対的に *t_CS* *'t_CS'* - t_cs スクロール範囲を定義 *t_cs* *'t_cs'* - t_CV 縦スクロール範囲を定義 *t_CV* *'t_CV'* - t_da 空でない場合は上の行からスクロールダウンする *t_da* *'t_da'* - t_db 空でない場合は下の行からスクロールアップする *t_db* *'t_db'* - t_DL 複数行を削除 *t_DL* *'t_DL'* - t_dl 行を削除 *t_dl* *'t_dl'* - t_fs ウィンドウタイトルの終端を設定(ステータスラインから) *t_fs* *'t_fs'* - t_ke キーパッド使用終了 *t_ke* *'t_ke'* - t_ks キーパッド使用開始 *t_ks* *'t_ks'* - t_le カーソルを1文字分左へ移動 *t_le* *'t_le'* - t_mb 点滅モード *t_mb* *'t_mb'* - t_md 太字モード *t_md* *'t_md'* - t_me 通常モード (t_mr, t_mb, t_md, 色設定を解除) *t_me* *'t_me'* - t_mr 反転モード *t_mr* *'t_mr'* - *t_ms* *'t_ms'* - t_ms 空でない場合は強調・反転モードでカーソルを移動できる - t_nd non destructive space character *t_nd* *'t_nd'* - t_op 元の色のペアに戻す *t_op* *'t_op'* - t_RI カーソルを指定数右へ移動 *t_RI* *'t_RI'* - t_Sb 背景色を設定 *t_Sb* *'t_Sb'* - t_Sf 文字色を設定 *t_Sf* *'t_Sf'* - t_se 強調終了 *t_se* *'t_se'* - t_so 強調モード *t_so* *'t_so'* - t_sr 逆スクロール *t_sr* *'t_sr'* - t_te "termcap" モードから抜ける *t_te* *'t_te'* - t_ti 端末を "termcap" モードにする *t_ti* *'t_ti'* - t_ts (ステータスラインに)ウィンドウタイトル設定開始 *t_ts* *'t_ts'* - t_ue 下線終了 *t_ue* *'t_ue'* - t_us 下線モード *t_us* *'t_us'* - t_Ce 下波線終了 *t_Ce* *'t_Ce'* - t_Cs 下波線モード *t_Cs* *'t_Cs'* - t_ut 現在の背景色を使ってクリア *t_ut* *'t_ut'* - t_vb ビジュアルベル *t_vb* *'t_vb'* - t_ve カーソル表示 *t_ve* *'t_ve'* - t_vi カーソル非表示 *t_vi* *'t_vi'* - t_vs カーソル強調表示 *t_vs* *'t_vs'* - *t_xs* *'t_xs'* - t_xs 空でない場合は強調が上書きによって消されない(hpterm) - t_ZH 斜体モード *t_ZH* *'t_ZH'* - t_ZR 斜体終了 *t_ZR* *'t_ZR'* - -Vim 独自のもの (標準的なコードはないもの): - t_IS アイコンテキスト設定開始 *t_IS* *'t_IS'* - t_IE アイコンテキスト設定終了 *t_IE* *'t_IE'* - t_WP ウィンドウ位置 (Y, X) をピクセルで指定 *t_WP* *'t_WP'* - t_WS ウィンドウサイズ (height, width) を文字数で指定 *t_WS* *'t_WS'* - t_SI インサートモード開始 (バー型のカーソル) *t_SI* *'t_SI'* - t_EI インサートモード終了(ブロック型カーソル) *t_EI* *'t_EI'* - |termcap-cursor-shape| - t_RV 端末バージョン文字列を要求 (xterm 用) *t_RV* *'t_RV'* - |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| - -キーコード -Note: 可能なかぎり <> 形式を使ってください。 - - オプション名 意味 ~ - - t_ku <Up> カーソル上 *t_ku* *'t_ku'* - t_kd <Down> カーソル下 *t_kd* *'t_kd'* - t_kr <Right> カーソル右 *t_kr* *'t_kr'* - t_kl <Left> カーソル左 *t_kl* *'t_kl'* - <xUp> カーソル上の代替 *<xUp>* - <xDown> カーソル下の代替 *<xDown>* - <xRight> カーソル右の代替 *<xRight>* - <xLeft> カーソル左の代替 *<xLeft>* - <S-Up> シフト+カーソル上 - <S-Down> シフト+カーソル下 - t_%i <S-Right> シフト+カーソル右 *t_%i* *'t_%i'* - t_#4 <S-Left> シフト+カーソル左 *t_#4* *'t_#4'* - t_k1 <F1> F1 *t_k1* *'t_k1'* - <xF1> もう1つの F1 *<xF1>* - t_k2 <F2> F2 *<F2>* *t_k2* *'t_k2'* - <xF2> もう1つのF2 *<xF2>* - t_k3 <F3> F3 *<F3>* *t_k3* *'t_k3'* - <xF3> もう1つのF3 *<xF3>* - t_k4 <F4> F4 *<F4>* *t_k4* *'t_k4'* - <xF4> もう1つのF4 *<xF4>* - t_k5 <F5> F5 *<F5>* *t_k5* *'t_k5'* - t_k6 <F6> F6 *<F6>* *t_k6* *'t_k6'* - t_k7 <F7> F7 *<F7>* *t_k7* *'t_k7'* - t_k8 <F8> F8 *<F8>* *t_k8* *'t_k8'* - t_k9 <F9> F9 *<F9>* *t_k9* *'t_k9'* - t_k; <F10> F10 *<F10>* *t_k;* *'t_k;'* - t_F1 <F11> F11 *<F11>* *t_F1* *'t_F1'* - t_F2 <F12> F12 *<F12>* *t_F2* *'t_F2'* - t_F3 <F13> F13 *<F13>* *t_F3* *'t_F3'* - t_F4 <F14> F14 *<F14>* *t_F4* *'t_F4'* - t_F5 <F15> F15 *<F15>* *t_F5* *'t_F5'* - t_F6 <F16> F16 *<F16>* *t_F6* *'t_F6'* - t_F7 <F17> F17 *<F17>* *t_F7* *'t_F7'* - t_F8 <F18> F18 *<F18>* *t_F8* *'t_F8'* - t_F9 <F19> F19 *<F19>* *t_F9* *'t_F9'* - <S-F1> シフト+F1 - <S-xF1> もう1つの<S-F1> *<S-xF1>* - <S-F2> シフト+F2 *<S-F2>* - <S-xF2> もう1つの<S-F2> *<S-xF2>* - <S-F3> シフト+F3 *<S-F3>* - <S-xF3> もう1つの<S-F3> *<S-xF3>* - <S-F4> シフト+F4 *<S-F4>* - <S-xF4> もう1つの<S-F4> *<S-xF4>* - <S-F5> シフト+F5 *<S-F5>* - <S-F6> シフト+F6 *<S-F6>* - <S-F7> シフト+F7 *<S-F7>* - <S-F8> シフト+F8 *<S-F8>* - <S-F9> シフト+F9 *<S-F9>* - <S-F10> シフト+F10 *<S-F10>* - <S-F11> シフト+F11 *<S-F11>* - <S-F12> シフト+F12 *<S-F12>* - t_%1 <Help> ヘルプキー *t_%1* *'t_%1'* - t_&8 <Undo> アンドゥキー *t_&8* *'t_&8'* - t_kI <Insert> インサートキー *t_kI* *'t_kI'* - t_kD <Del> デリートキー *t_kD* *'t_kD'* - t_kb <BS> バックスペースキー *t_kb* *'t_kb'* - t_kB <S-Tab> バックタブ(シフト+タブ) *<S-Tab>* *t_kB* *'t_kB'* - t_kh <Home> ホームキー *t_kh* *'t_kh'* - t_#2 <S-Home> シフト+ホームキー *<S-Home>* *t_#2* *'t_#2'* - <xHome> もう1つのホームキー *<xHome>* - t_@7 <End> エンドキー *t_@7* *'t_@7'* - t_*7 <S-End> シフト+エンドキー *<S-End>* *t_star7* *'t_star7'* - <xEnd> もう1つのエンドキー *<xEnd>* - t_kP <PageUp> ページアップキー *t_kP* *'t_kP'* - t_kN <PageDown> ページダウンキー *t_kN* *'t_kN'* - t_K1 <kHome> キーパッドホームキー *t_K1* *'t_K1'* - t_K4 <kEnd> キーパッドエンドキー *t_K4* *'t_K4'* - t_K3 <kPageUp> キーパッドページアップキー *t_K3* *'t_K3'* - t_K5 <kPageDown> キーパッドページダウンキー *t_K5* *'t_K5'* - t_K6 <kPlus> キーパッドプラスキー *<kPlus>* *t_K6* *'t_K6'* - t_K7 <kMinus> キーパッドマイナスキー *<kMinus>* *t_K7* *'t_K7'* - t_K8 <kDivide> キーパッド / *<kDivide>* *t_K8* *'t_K8'* - t_K9 <kMultiply> キーパッド * *<kMultiply>* *t_K9* *'t_K9'* - t_KA <kEnter> キーパッドエンターキー *<kEnter>* *t_KA* *'t_KA'* - t_KB <kPoint> キーパッド . *<kPoint>* *t_KB* *'t_KB'* - t_KC <k0> キーパッド 0 *<k0>* *t_KC* *'t_KC'* - t_KD <k1> キーパッド 1 *<k1>* *t_KD* *'t_KD'* - t_KE <k2> キーパッド 2 *<k2>* *t_KE* *'t_KE'* - t_KF <k3> キーパッド 3 *<k3>* *t_KF* *'t_KF'* - t_KG <k4> キーパッド 4 *<k4>* *t_KG* *'t_KG'* - t_KH <k5> キーパッド 5 *<k5>* *t_KH* *'t_KH'* - t_KI <k6> キーパッド 6 *<k6>* *t_KI* *'t_KI'* - t_KJ <k7> キーパッド 7 *<k7>* *t_KJ* *'t_KJ'* - t_KK <k8> キーパッド 8 *<k8>* *t_KK* *'t_KK'* - t_KL <k9> キーパッド 9 *<k9>* *t_KL* *'t_KL'* - <Mouse> マウスコードの先頭部分 *<Mouse>* - -Note t_so と t_mrについて: termcap に "so" エントリがない場合は "mr" が使われ -ます。逆に "mr" がない場合は "so" が使われます。"se" と "me" も同じ関係にあり -ます。お使いの端末が反転と強調の両方をサポートしているならば、これらは別々のモー -ドとして表示されます。これらの片方しかサポートしていない場合は、どちらも同じよ -うに表示されます。 - - *keypad-comma* -キーパッドのキーは、何かにマップされていないときは通常のキーと等価です。ただ 1 -つだけ例外があります。小数点キーがあるべき場所にコンマキーがあるキーパッドの場 -合でも Vim では小数点として認識されます。これを修正するには次のマッピングを -使ってください: > - :noremap <kPoint> , - :noremap! <kPoint> , -< *xterm-codes* -キーコードを取得するトリックがあります。これは現在のところ xterm でだけ動作し -ます。|t_RV| が定義されていて、xterm のパッチレベルが 141 以上であることを示す -返信を受け取った場合、Vim は特別なエスケープシーケンスを使って xterm から直接 -キーコードを要求します。その返信を使って様々な t_ のコードを調整します。これに -よって xterm がモード (8-bit, VT102, VT220 など) によって異なるコードを出力す -るという問題に対応することができます。そのため、<xF1> のようなコードは必要なく -なります。 -Note: これは起動時にのみ行われます。Vim が起動した後で xterm のオプションが変 -更された場合は、これらのエスケープシーケンスは認識されなくなる可能性があります。 - - *xterm-resize* -xterm でのウィンドウサイズ変更はリソース allowWindowOps が有効なときのみ動作し -ます。システムや xterm のバージョンによっては、セキュリティ上の問題になるとの -考えにより、既定では無効になっていることがあります。それが本当に問題になるかど -うかは明らかではありません。 - -既定値を上書きするには、次の行を ~/.Xdefaults または ~/.Xresources に書きま -す: -> - XTerm*allowWindowOps: true - -そして "xrdb -merge .Xresources" を実行し、この設定を有効化します。コンテキス -トメニュー(CTRL キーを押しながらマウス右ボタン)でこの値を確認できます。 -allow-window-pos にチェックが入っているはずです。 - - *termcap-colors* -色についての Note: 't_Co' は利用できる色の数を示します。この値が 0 でなければ -'t_AB' と 't_AF' の値を使って色を設定します。これらのうちどれかが存在しない場 -合は 't_Sb' と 't_Sf' が使われます。色をデフォルトに戻すのには 't_me' が使われ -ます。 - - *termcap-cursor-shape* *termcap-cursor-color* -インサートモードに入るとき、エスケープシーケンス 't_SI' が送られます。インサー -トモードを抜けるときは 't_EI' が送られます。ただし、両方が定義されているときの -みです。これを利用して、インサートモードにおけるカーソルの形や色を変えることが -できます。これらは標準的な termcap/terminfo エントリではないので、自分で設定す -る必要があります。 -以下は xterm でカーソルの色を変える例です: > - if &term =~ "xterm" - let &t_SI = "\<Esc>]12;purple\x7" - let &t_EI = "\<Esc>]12;blue\x7" - endif -NOTE: Vim を終了するとき、ノーマルモードでのカーソル設定がそのまま残ります。 -Vim を起動する前のカーソル設定は復元されません。 -{|+cursorshape| つきでコンパイルしたときのみ利用可能} - - *termcap-title* -文字列を送ってタイトルを変更できる端末の場合は 't_ts' と 't_fs' を使ってウィン -ドウタイトルを変更できます。これらがタイトル文字列の前後に送られます。同様に -'t_IS' と 't_IE' を使ってアイコンテキストが設定されます。これらの termcap エン -トリは Vim 独自の拡張であり、外部の termcap からこれらを取得することはできませ -ん。しかし組み込みの termcap に xterm と iris-ansi 用のエントリが含まれており、 -これらを自分で設定する必要はありません。 - *hpterm* -もしも反転などの強調が正常に機能しない場合は、't_xs' を空でない文字列に設定し -てみてください。すると 't_ce' コードを使って行から強調を取り除くようになります。 -"hpterm" に対してはこれが必要です。'weirdinvert' を設定すると 't_xs' を空でな -い値にするのと同じ効果があります。 - - *scroll-region* -端末が領域スクロールをサポートしているのに 'cs' エントリを含まない termcap があ -ります。例えば Sun の xterm がそうです。この場合は builtin_xterm を使うか、 -t_cs を自分で定義します。例: > - :set t_cs=^V^[[%i%d;%dr -^V は CTRL-V、^[ は <Esc> を表します。 - -t_CV (領域縦スクロール) は標準的な termcap コードではありません。Vim はこれを -GUI モードで内部的に使っています。しかし、領域縦スクロールに対応している端末が -あるなら、その端末でもこれを定義することができます。2つの引数は、スクロールを -制限する領域の左右の桁を表します。t_cs が行の上端と下端を定義するのと同じです。 -t_CV を定義すると垂直分割したウィンドウのスクロールがとても速くなります。t_da -または t_db を設定したときは t_CV を設定しないでください(スクロールするときテ -キストが消去されなくなります)。 - -残念ながら、領域スクロールを使用しているとき、カーソルの位置がどう変わるかを -termcap から推測することは不可能です。スクリーンの始点から相対的またはスクロー -ルさせる領域の始点から相対的になります。ほとんどの端末では前者となります。よく -知られた例外は MS-DOS コンソール(pcterm)です。カーソル位置がスクロールさせる領 -域の始点から相対的となる場合は 't_CS' オプションになんらかの文字列を設定しなけ -ればなりません。そうでなければ空文字列となります。'term' が "pcterm"のときはデ -フォルトで "yes" になります。 - -xterm ユーザへの注意: 通常、Shift + カーソルキーは使用できません。xmodmap コマ - ンドと Vim でマッピングを使えば、これらを使用できるようになります。 - - 以下のコマンドを xterm の中で実行します: - xmodmap -e "keysym Up = Up F13" - xmodmap -e "keysym Down = Down F16" - xmodmap -e "keysym Left = Left F18" - xmodmap -e "keysym Right = Right F19" - - そして次のマッピングを Vim の中で実行します: - :map <t_F3> <S-Up> - :map! <t_F3> <S-Up> - :map <t_F6> <S-Down> - :map! <t_F6> <S-Down> - :map <t_F8> <S-Left> - :map! <t_F8> <S-Left> - :map <t_F9> <S-Right> - :map! <t_F9> <S-Right> - -Shift+カーソル上キーに対して <S-Up> 以外のコマンドを割り当てることもできます。 -Note: 左側にキーがある Sun のキーボードを使っている人を助けるために、以下の -キーは使われません。 -F14 (アンドゥキーと混乱するため) -F15 (ウィンドウを全面に移動するキーであるため) -F17 (ウィンドウを閉じるキーであるため) -他のシステムではこれらも使用できるでしょう。 - -============================================================================== -3. ウィンドウサイズ *window-size* - -[これは Vim 自身のウィンドウのサイズのことです。":split" コマンドで分割できる -ウィンドウのことではありません。] - -Amiga 上では端末名が "amiga" または "builtin_amiga" であればアミーガ固有のウィ -ンドウリサイズ処理が有効になります。Unix ではウィンドウサイズを取得するために -3 種類の方法が試行されます: - -- ioctl 呼び出し (システムによって TIOCGSIZE か TIOCGWINSZ のどちらか) -- 環境変数 "LINES" と "COLUMNS" -- termcap エントリ "li" と "co" - -これら全てが失敗した場合はデフォルトの 24 行 80 桁とみなされます。ウィンドウ -サイズ変更のシグナルを受け取るとそのサイズに再設定されます。ウィンドウサイズが -正しくない場合は、オプション 'lines' と 'columns' で正しい値を設定することがで -きます。 - -スクリーンサイズを設定するには次のコマンドを使います: - - *:mod* *:mode* *E359* *E362* -:mod[e] [mode] - -引数が指定されない場合はスクリーンサイズを検出し、スクリーンを再描画します。 -MS-DOS ではスクリーンモードを切り替えることが可能です。[mode] は以下のうちのど -れか1つです。 - "bw40" 40 桁 白黒 - "c40" 40 桁 カラー - "bw80" 80 桁 白黒 - "c80" 80 桁 カラー (ほとんどの場合はこれ) - "mono" 80 桁 モノクロ - "c4350" 43 or 50 行 EGA/VGA モード - number モード番号。ビデオカードに依存 - -============================================================================== -4. 端末の速度 *slow-fast-terminal* - *slow-terminal* - -高速な端末を使用している場合はオプション 'ruler' をオンにするとよいでしょう。 -するとステータスラインにカーソル位置が表示されます。水平スクロールをオンにして -いる('wrap' をオフ)にしているなら 'sidescroll' を小さい値にするとよいでしょう。 - -遅い端末を使用している場合はオプション 'showcmd' をオフにするとよいでしょう。 -するとコマンド文字列がステータスラインに表示されなくなります。端末のスクロール -が非常に遅いなら、'scrolljump' を5ぐらいにしてください。("j" などで)カーソルが -スクリーンから出たとき、一度に5行スクロールするようになります。もう1つの方法は、 -"z{height}<CR>" でスクリーンの中で Vim が使う行数を減らすことです。 - -端末から文字が届く間隔が1秒以上になる場合は 'timeout' と 'ttimeout' を設定しな -おすとよいでしょう。オプションの章を参照してください |options|。 - -お使いの端末が領域のスクロールをサポートしていないが、行の挿入・削除コマンドを -サポートしている場合、複数のウィンドウを開いた状態でスクロールすると、行が上下 -するかもしれません。これが好ましくない場合は 'ttyfast' をオンにしてください。 -するとウィンドウをスクロールするのでなく再描画するようになります。 - -お使いの端末におけるスクロールが非常に遅いが再描画は遅くないという場合は、 -'ttyscroll' を 3 などの小さな値にしてください。すると、 3 行より多くスクロール -する場合はスクロールでなく画面を再描画するようになります。 - -低速なカラー端末をお使いの場合は、次のコマンドを実行してください: > - hi NonText cterm=NONE ctermfg=NONE -すると、異なる属性を持つスペースを送信しないようになります。ほとんどの端末では -どちらにせよそれは目に見えません。 - -低速なシリアル回線上で Vim を使っている場合は、"screen" プログラム上で Vim を -実行するとよいかもしれません。screen は端末の入出力をほんの少し最適化します。 - -termcap オプションをテストする際、何が起こっているかを見たいならば 'writedelay' -をオンにするとよいかもしれません。これがゼロでない場合、一度に1つの文字が端末 -に送られます(MS-DOS では機能しません)。そうすると画面の更新がとても遅くなり、 -何が起こっているかが見えるようになります。 - -============================================================================== -5. マウスの使用 *mouse-using* - -この節では端末や端末エミュレータ上でマウスを使う方法を説明します。GUI のウィン -ドウでマウスを使う方法については |gui-mouse| で説明されています。マウスホイー -ルでスクロールする方法については |scroll-mouse-wheel| を参照してください。 - -次のコマンドでマウスを有効にしてください: > - :set mouse=a -これを行わないと、Vim はどのモード('mouse' を参照)でもマウスを認識できません。 - -現時点では Unix の xterm、|sysmouse| つきの *BSD コンソール、Linux コンソール -(GPM マウスにも対応 |gpm-mouse|)、MS-DOS、Windows コンソールにおいてマウスがサ -ポートされています。 -マウスクリックによってカーソル位置の設定、領域の選択、ペーストを行えます。 - -'mouse' オプションに以下の文字を含めることにより、どの状況でマウスを有効にする -かを設定します: - n ノーマルモード - v ビジュアルモード - i インサートモード - c コマンドラインモード - h ヘルプファイルを閲覧しているときの上記の4モード全て - a 上記の4モード全て - r |hit-enter| プロンプトが出ているとき - -'mouse' の既定値は空で、マウスは無効になっています。普通は次のようにしてマウス -を有効にします: > - :set mouse=a -これは 'mouse' の値を "nvich" にすることと同値です。 -特定のモードでだけマウスを使いたい場合や、2つの質問のために使いたい場合は、こ -れらの文字を組み合わせます。 -例: > - :set mouse=nv -上の例はノーマルモードとビジュアルモードでのみマウスを有効にします。 > - :set mouse=h -上の例はヘルプファイルでのみマウスを有効にします ("g<LeftMouse>" でタグジャン -プができるようになります) - -マウスで選択を開始した場合、ビジュアルモードとセレクトモードのどちらになるかは -'selectmode' に "mouse" が含まれているかどうかによります。 - -xterm において、現在有効になっているモードが 'mouse' オプションに含まれている -ときマウスをクリックすると、それは Vim によって処理されます。Shift や Ctrl -キーを押しながらクリックすると xterm に伝わります。現在有効なモードが 'mouse' -に含まれていない場合、すべてのクリックは xterm に伝わります。 - - *xterm-clipboard* -Athena と Motif の GUI 版では、端末の中で動作しているときも、X サーバとの接続 -があれば(DISPLAY がセットされていれば)、コピーとペーストが GUI 版と同様に動作 -します。そうでないときは真ん中ボタンクリックで無名レジスタが挿入されます。この -場合、テキストをコピー&ペーストする方法は次の通りです: - -ビジュアルモードでマウスを使ってコピー&ペーストする方法('mouse' がセットされ -ていなければなりません。上記参照): -1. コピーしたいテキストの最初の文字の上で左ボタンを押して最後の文字の上までマ - ウスポインタを動かし、ボタンを離します。するとビジュアルモードが開始し、選 - 択したテキストが強調されます。 -2. "y" を押して選択したテキストを無名レジスタにヤンクします。 -3. ペーストしたい位置で左ボタンをクリックします。 -4. 真ん中ボタンをクリックします。 - -ショートカット: ペーストしたい位置が選択したテキストと同時に画面に見えている場 -合は、ペーストしたい位置で真ん中ボタンをクリックすることにより、2, 3, 4 のス -テップを一度に行えます: - -Note: コマンドライン引数 |-X| が指定されていると Vim は X サーバに接続せず、 -X のクリップボード(セレクション)へのコピー&ペーストは機能しません。Shift キー -を押しながらクリックすることにより、xterm に選択を行わせることができます。 - - *xterm-command-server* -X サーバのクリップボードを利用できるときは、コマンドライン引数 --servername を -指定すると |x11-clientserver| で説明されているコマンドサーバが有効になります。 - - *xterm-copy-paste* -NOTE: 古い xterm では95桁目を越えてカーソルを移動できない場合があります。これ -は xterm の問題であり、Vim の問題ではありません。新しい xterm を入手してくださ -い |color-xterm|。 -現在、制限は 223 桁です。 - -xterm でコピー&ペーストする方法('mouse' に現在のモードが含まれていないとき): -1. テキストの最初の文字の上で左ボタンを押し、最後の文字までマウスポインタを動 - かしてからボタンを離します。 -2. 普通の Vim のコマンドを使ってカーソルをペーストしたい位置まで動かします。 -3. "a" を押してインサートモードを開始します。 -4. 真ん中ボタンを押します。 -5. ESC を押してインサートモードを抜けます。 -('mouse' に含まれているモードにいる場合も、Shift キーを押しながらマウスを操作 -することによりどの操作も同じようにできます) - -Note: ペーストするときに8ビット目が失われてしまう(特殊文字が他の文字に変換され -てしまう)ときは、Vim を起動する前にシェルで "stty cs8 -istrip -parenb" としな -ければならないかもしれません。 - -xterm では Shift と Ctrl キーを押しながらマウスを使うことはできません。CTRL 修 -飾子を必要とするマウスコマンドは、マウス操作の前に "g" を押すことでシミュレー -トできます: - "g<LeftMouse>" は "<C-LeftMouse> (クリックした位置のタグへジャンプ) - "g<RightMouse>" は "<C-RightMouse> ("CTRL-T") - - *mouse-mode-table* *mouse-overview* -以下は、'mousemodel' が "extend" の場合のマウスボタンの機能の概略です: - -ノーマルモード: -イベント カーソル 選択範囲 ウィンドウ 動作 ~ - 移動 切替 ~ -<LeftMouse> yes end yes -<C-LeftMouse> yes end yes "CTRL-]" (2) -<S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* -<LeftDrag> yes start or extend (1) no *<LeftDrag>* -<LeftRelease> yes start or extend (1) no -<MiddleMouse> yes if not active no put -<MiddleMouse> yes if active no yank and put -<RightMouse> yes start or extend yes -<A-RightMouse> yes start or extend blockw. yes *<A-RightMouse>* -<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* -<C-RightMouse> no no change no "CTRL-T" -<RightDrag> yes extend no *<RightDrag>* -<RightRelease> yes extend no *<RightRelease>* - -インサート/置換モード: -イベント カーソル 選択範囲 ウィンドウ 動作 ~ - 移動 切替 ~ -<LeftMouse> yes (cannot be active) yes -<C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) -<S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) -<LeftDrag> yes start or extend (1) no like CTRL-O (1) -<LeftRelease> yes start or extend (1) no like CTRL-O (1) -<MiddleMouse> no (cannot be active) no put register -<RightMouse> yes start or extend yes like CTRL-O -<A-RightMouse> yes start or extend blockw. yes -<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) -<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" - -ヘルプウィンドウ: -イベント 位置 選択 変更 動作 ~ - カーソル ウィンドウ ~ -<2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) - -'mousemodel' が "popup" の場合は次のように異なります: - -ノーマルモード: -イベント カーソル 選択範囲 ウィンドウ 動作 ~ - 移動 切替 ~ -<S-LeftMouse> yes start or extend (1) no -<A-LeftMouse> yes start or extend blockw. no *<A-LeftMouse>* -<RightMouse> no popup menu no - -インサート/置換モード: -イベント カーソル 選択範囲 ウィンドウ 動作 ~ - 移動 切替 ~ -<S-LeftMouse> yes start or extend (1) no like CTRL-O (1) -<A-LeftMouse> yes start or extend blockw. no -<RightMouse> no popup menu no - -(1) 押してからマウスポインタが移動したときのみ -(2) 同一バッファでクリックしたときのみ - -左ボタンをクリックするとカーソルが移動します。他のウィンドウ内でクリックすると -そのウィンドウがアクティブになります。コマンドラインを編集中はコマンドライン内 -でカーソルが移動します。インサートモードでクリックしたときはインサートモードの -ままです。'scrolloff' がセットされている場合は、ウィンドウの境界から -'scrolloff' 行数内の範囲にカーソルが移動し、テキストがスクロールします。 - -選択は、左ボタンを押すと始まり、カーソルを移動してボタンを離すことで行います。 -ボタンを離すまでは選択が見えるようにならない場合もあります。GUI, MS-DOS, WIN32 -などいくつかのバージョンでのみドラッグが即座に表示されます。'scrolloff' がゼロ -でない場合、ウィンドウの最初/最後の行で1文字以上動かすとテキストがスクロールす -る可能性があることに注意してください。 - -ノーマルモード、ビジュアルモード、セレクトモードで右ボタンをクリックすると選択 -範囲が拡大します。ただし、'mousemodel' が "popup" のときは、Shift キーを押した -ままで左ボタンをクリックします。他のバッファを開いているウィンドウの中をクリッ -クするとビジュアルモードとセレクトモードは中止されます。 - -ノーマルモード、ビジュアルモード、セレクトモードで Alt キーを押したまま右ボタ -ンをクリックすると、選択範囲がブロック指向になります。ただし、'mousemodel' が -"popup"のときは、Alt キーを押しながら左ボタンをクリックします。Alt キーを押し -ているときはマウスイベントをウィンドウマネージャが処理(ウィンドウ移動など)して -しまうシステムでは機能しないことに注意してください。 - - *double-click* -MS-DOS、Win32、xterm (関数 gettimeofday() が使用できるとき)において、GUI が有 -効なときはダブル、トリプル、クアドラプルクリックが使用できます。テキストを選択 -しているときさらにクリックすると選択範囲が拡大します: - クリック 選択範囲 ~ - ダブル 単語または % でのマッチ *<2-LeftMouse>* - トリプル 行 *<3-LeftMouse>* - クアドラプル 矩形範囲 *<4-LeftMouse>* -例外: ヘルプウィンドウでダブルクリックすると、その下にある単語のヘルプへジャン -プします。 -単語の上でダブルクリックするとその単語を選択します。単語を構成する文字は -'iskeyword' によって決まります。対応する文字がある文字の上でダブルクリックする -とそのマッチまでを選択します("v%" と同様)。そのマッチが #if/#else/#endif であ -る場合、選択は行指向になります。 -MS-DOS と xterm ではダブルクリックの間隔は 'mousetime' で設定できます。他のシ -ステムでは、この間隔は Vim の外部で設定されています。 -例: ダブルクリックでカーソル下のタグへジャンプする > - :map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR> - -ダブルクリックによるドラッグ(押す、離す、押してドラッグ)をすると単語全体が選択 -されるようになります。これはボタンが離されるまで続き、ボタンを離すと文字単位に -戻ります。 - - *gpm-mouse* -GPM マウスは |+mouse_gpm| 機能を有効にしてコンパイルしたときのみサポートされま -す。GPM マウスドライバ(Linux コンソール)はクアドラプルクリックに対応していませ -ん。 - -インサートモードで選択を開始すると、一時的にノーマルモードへ移行します。ビジュ -アルモードまたはセレクトモードが終了するとインサートモードへ戻ります。インサー -トモードにおける CTRL-O と同様です。'selectmode' オプションが "mouse" を含んで -いるとセレクトモードになります。 - - *sysmouse* -sysmouse は、コンパイル時に |+mouse_sysmouse| 機能が有効化されている場合のみサ -ポートされます。sysmouse ドライバ(*BSD コンソール)はキーボード修飾子には対応し -ていません。 - - *drag-status-line* -ウィンドウを複数に分割しているとき、マウスでステータスラインをドラッグすると -ウィンドウのサイズを変更できます。マウスをステータスライン上へ持っていき、左ボ -タンを押し、ステータスラインを望みの位置まで動かしてボタンを離します。単にス -テータスラインをクリックすると、カーソルを動かさずにそのウィンドウをカレントに -します。ステータスラインのドラッグは、ウィンドウを選択して位置やサイズが変わる -と混乱を招きがちです。しかしこれは確かに動作します(試してみてください)。 - - *<MiddleRelease>* *<MiddleDrag>* -マウスクリックイベントもマップすることができます。マウスクリックに対するコード -は次の通りです: - コード マウスボタン 通常の動作 ~ - <LeftMouse> 左ボタン押下 カーソル位置設定 - <LeftDrag> 左ボタンを押しながら移動 選択範囲を拡張 - <LeftRelease> 左ボタン放す 選択を終了 - <MiddleMouse> 中央ボタン押下 カーソル位置にテキストを貼りつけ - <MiddleDrag> 中央ボタンを押しながら移動 - - <MiddleRelease> 中央ボタン放す - - <RightMouse> 右ボタン押下 選択を拡張 - <RightDrag> 右ボタンをお品が雷同 選択を拡張 - <RightRelease> 右ボタン放す 選択を終了 - <X1Mouse> X1 ボタン押下 - *X1Mouse* - <X1Drag> X1 ボタンを押しながら移動 - *X1Drag* - <X1Release> X1 ボタン放す - *X1Release* - <X2Mouse> X2 ボタン押下 - *X2Mouse* - <X2Drag> X2 ボタンを押しながら移動 - *X2Drag* - <X2Release> X2 ボタン放す - *X2Release* - -X1 ボタンと X2 ボタンは、ある種のマウスについている4番目、5番目のボタンのこと -です。'Microsoft Explorer' マウスの場合、これらのボタンは右親指の位置について -います。現在のところ、X1 と X2 は Win32 環境でのみ機能します。 - -例: > - :noremap <MiddleMouse> <LeftMouse><MiddleMouse> -マウス中央ボタンをクリックしたとき、クリックした位置に貼り付けます(通常はカー -ソル位置に貼り付けます)。 > - - :noremap <LeftRelease> <LeftRelease>y -ビジュアルモードで選択範囲を即座にヤンクします。 - -Note 再帰マッピングにならないように "map" でなく "noremap" を使っています。 -> - :map <X1Mouse> <C-O> - :map <X2Mouse> <C-I> -X1 と X2 ボタンでジャンプリストの前後に移動するようにマップします。 -|CTRL-O| と |CTRL-I| を参照。 - - *mouse-swap-buttons* -左右のマウスボタンの意味を交換するには次のようにします: > - :noremap <LeftMouse> <RightMouse> - :noremap <LeftDrag> <RightDrag> - :noremap <LeftRelease> <RightRelease> - :noremap <RightMouse> <LeftMouse> - :noremap <RightDrag> <LeftDrag> - :noremap <RightRelease> <LeftRelease> - :noremap g<LeftMouse> <C-RightMouse> - :noremap g<RightMouse> <C-LeftMouse> - :noremap! <LeftMouse> <RightMouse> - :noremap! <LeftDrag> <RightDrag> - :noremap! <LeftRelease> <RightRelease> - :noremap! <RightMouse> <LeftMouse> - :noremap! <RightDrag> <LeftDrag> - :noremap! <RightRelease> <LeftRelease> -< - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/tips.jax b/runtime.old/doc/tips.jax deleted file mode 100644 index 44f8f9263..000000000 --- a/runtime.old/doc/tips.jax +++ /dev/null @@ -1,543 +0,0 @@ -*tips.txt* For Vim バージョン 7.3. Last change: 2009 Nov 07 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Vim を使うときのヒントとアイディア *tips* - -これは、多くのユーザーにとって便利だろうと思うこの一部です。wiki には -もっと多くの tips があります。http://www.vim.org - -ユーザーマニュアルも参照してください。ユーザーマニュアルにはたくさんのtipsが含 -まれています|usr_toc.txt|。 - -C のプログラムを編集する |C-editing| -識別子が使われている場所を検索する |ident-search| -xterm でのスクリーンの切り替え |xterm-screens| -挿入モードでスクロールさせる |scroll-insert| -スムーズにスクロールさせる |scroll-smooth| -ありがちなタイプミスを修正する |type-mistakes| -単語や行の数を数える |count-items| -カーソルの位置を戻す |restore-position| -ファイルをリネームする |rename-files| -複数ファイル中の名前を置換する |change-name| -外部コマンドの実行速度を速くする |speed-up| -便利なマッピング |useful-mappings| -ヘルプファイルを圧縮する |gzip-helpfile| -ウィンドウでシェルコマンドを実行する |shell-window| -16進編集 |hex-editing| -オートコマンドで <> 表記を使う |autocmd-<>| -対応する括弧を強調する |match-parens| - -============================================================================== -C のプログラムを編集する *C-editing* - -Vim には C のプログラムファイルを編集するのを手助けする機能がたくさんあります。 -詳細をジャンプして確認できるようにタグつきで機能のあらましを紹介しましょう。 - -|usr_29.txt| ユーザーマニュアルの「プログラム内の移動」 -|usr_30.txt| ユーザーマニュアルの「プログラムの編集」 -|C-indenting| テキストをタイプ中、自動的に行をインデントします。 -|=| 数行をインデントし直します。 -|format-comments| コメントを自動的にフォーマットします。 - -|:checkpath| 再帰的にインクルードされるファイルをすべて表示します。 -|[i| カーソルの下にある単語と同じものを現在のファイルとイン - クルードされるファイルから探します。 -|[_CTRL-I| "[i" でマッチした場所にジャンプします。 -|[I| カーソルの下にある単語と同じものを現在のファイルとイン - クルードされるファイルから探し出しその行のリストを表示 - します。 - -|[d| カーソルの下の単語の定義を現在のファイルとインクルード - されるファイルから探します -|CTRL-]| カーソルの下のタグにジャンプします。(例、関数の定義) -|CTRL-T| CTRL-]コマンドの前に戻ります。 -|:tselect| マッチしたタグのリストから一つ選びます。 - -|gd| カーソルの下のローカル変数の宣言にジャンプする。 -|gD| カーソルの下のグローバル変数の宣言にジャンプする。 - -|gf| カーソルの下のファイル名にジャンプする。 - -|%| 対応する(),{},[],/* */, #if, #else, #endifに移動する。 -|[/| 前のコメントが始まる場所に移動する。 -|]/| 次のコメントが終わる場所に移動する。 -|[#| 前の閉じられていない #if, #ifdef, #else に移動する。 -|]#| 次の閉じられていない #else, #endif に移動する。 -|[(| 前の閉じられていない '(' に移動する。 -|])| 次の閉じられていない ')' に移動する。 -|[{| 前の閉じられていない '{' に移動する。 -|]}| 次の閉じられていない '}' に移動する。 - -|v_ab| 「ブロック("[("から"])"まで)」を括弧を含めて選択する。 -|v_ib| 「ブロック("[("から"])"まで)の内部」を選択する。 -|v_aB| 「ブロック("[{"から"]}"まで)」を括弧を含めて選択する。 -|v_iB| 「ブロック("[{"から"]}"まで)の内部」を選択する。 - -============================================================================== -識別子が使われている場所を検索する *ident-search* - -|tags|が関数や変数の定義された場所へのジャンプに使えることはすでにわかりました -が、ときどき関数や変数が使われている場所にジャンプしたいことがあります。これ -は二つの方法で実現することができます: -1. |:grep|を使う方法。この方法はほとんどの Unix システムでうまく動作しますが遅 - いですし(全てのファイルを読むため)、一つのディレクトリの中だけしか検索でき - ません。 -2. ID ユーティリティを使う方法。この方法は速いですし複数のディレクトリを検索で - きます。この方法は位置を記憶するためにデータベースを使用します。いくつかの - プログラムを新たに入れる必要があります。そして、データベースを最新に保つこ - とが要求されます。 - -GNU id-tools と Vim を連動させる。 - -必要なもの: -- The GNU id-toolsがインストールされていること(IDを生成するにはmkidが必要でマ - クロを使うのにlidが必要です)。 -- 現在のディレクトリに "ID" と呼ばれる識別子データベースファイルがあること。 - シェルコマンド"mkid file1 file2 .."で作成可能です。 - -次の行を .vimrc に追加してください。 > - map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR> - map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR> - - function! ID_search() - let g:word = expand("<cword>") - let x = system("lid --key=none ". g:word) - let x = substitute(x, "\n", " ", "g") - execute "next " . x - endfun - -これを使うには、単語上にカーソルを置いて、"_u"とタイプすればvimは単語を含んだ -ファイルを読みこみます。同じファイルで次に単語が出てくるところを検索するには -"n"をタイプします。"_n"で次のファイルに行きます。 - -この方法は id-utils-3.2 を使って動作を確認しました (id-utlis-3.2 は id-tools -アーカイブの名前です。近くの gnu-ftp-mirror から入手してください。) - -[このアイディアはAndreas Kutscheraさんから頂いたものです] - -============================================================================== -xterm でのスクリーンの切り替え *xterm-screens* *xterm-save-screen* - -(comp.editors で質問に答えて Juergen Weigert 氏が投稿したもの) - -:> もう一つの質問は vim を終了させた後にスクリーンがそのまま残っている -:> ことに関してです。例えばいままで見ていた(編集していた)内容がスクリ -:> ーンに残っていますよね。そして前に行った ls などのコマンドの出力が -:> 消えてしまうのです(例えばスクロールバッファからなくなってしまう)。 -:> vim や他の vi 風のエディタでもどうにかして前の画面を復元する方法が -:> あるとは思うのですが、どのようにすれば実現できるのかわかりません。 -:> 教えていただけると嬉しいです。それでは。 -: -:どなたか詳しい方が答えて下さると思います。vim も vi も xterm の設定を -:みて同じことをそれぞれやっていると思うのですが。 - -これらは必ずしも同じ動作をするとは限りません、というのはこれは termcapと -terminfo の問題であるかもしれないからです。個々のタイプのターミナルの属性を記 -述するデータベースには termcap と terminfoという二つのデータベースがあるという -ことを知っておいてください。エントリーが異なっていて、かつ質問にあったプログラ -ムのどれかが termcapを使っていて他のものがterminfo を使っていた場合、違う動作 -をすることになりえます。 -(|+terminfo| も参照してください) - -この問題の場合、^[[?47h と ^[[?47l というコントロールシーケンスが答えになりま -す。これらはxtermのメインスクリーンバッファともう一方のバッファを切り替えるの -に用いられます。簡単に動作させてみるには次のコマンドを打ってみてください、 > - echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" -あなたが望む動作はこれかもしれません。 (ここで ^[ は ESC キャラクターを意味し -ます。このあとデータベースではこの記号の代わりに \E を使っていることがわかるで -しょう) - -起動時に vim は termcap の ti 変数(terminfo の場合: smcup) の値をecho し、終了 -時には te 変数(terminfo の場合: rmcup) の値をターミナルに echo します。という -わけで、これらの二つの変数が上記のコントロールシーケンスを設定する正しい場所で -す。 - -xterm の termcap エントリー(/etc/termcap にあります) と xterm のterminfo エン -トリー(infocmp -C xterm として入手します)とを比べてみてください。双方に次のよ -うなエントリーが含まれている必要があります。 > - :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: - -追伸: もしなんらかの違いを見つけた場合、だれかが(システム管理者かな?) termcap - と terminfo データベースを継続的にチェックするようにした方がよいです。 - -注1: feature.h で定義される FEAT_XTERM_SAVE をつけて Vim を再コンパイルすると -内蔵の xterm は上記の "te" と "ti" エントリーを含むようになります。 - -注2: スクリーンのスイッチを行わないようにし、termcap の変更も行いたくない場合 -次の行を .vimrc に加えてください。 > - :set t_ti= t_te= - -============================================================================== -挿入モードでスクロールを行う *scroll-insert* - -挿入モードでスクリーンの外の部分を見たい場合、CTRL-X CTRL-E と CTRL-X CTRL-Y -を使うことでスクリーンをスクロールさせることができます。 - |i_CTRL-X_CTRL-E| - -これを簡単に行うには次のマッピングをすることができます: > - :inoremap <C-E> <C-X><C-E> - :inoremap <C-Y> <C-X><C-Y> -(文字通り入力するには、'<'フラグが'cpoptions'にないことを確認してください) -しかしこれを行うとカーソルの上/下の行のテキストをコピーする機能が使えなくなり -ます。 -|i_CTRL-E|. - -カーソルの回りの前後を常に見渡せるように 'scrolloff' オプションの値を大きい値 -に設定するのもよいです。'scrolloff' の値がウインドーの高さの半分以上に設定さ -れているとカーソルが常にスクリーンの中央にあることになりテキストはカーソルの -上下移動にあわせてスクロールすることになります。 - -============================================================================== -スムーズにスクロールさせる *scroll-smooth* - -もう少しスムーズにスクロールさせたい場合、次のマッピングを使うこともできます: -> - :map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y> - :map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E> - -(文字通り入力するには、'<'フラグが'cpoptions'にないことを確認してください) - -============================================================================== -ありがちなタイプミスを修正する *type-mistakes* - -しょっちゅう間違ってタイプする単語がいくつかあれば、略記を修正するのに利用しま -しょう。例えば: > - :ab teh the - :ab fro for - -============================================================================== -単語や行などの数を数える *count-items* - -カレントバッファの中になんらかのパターンがどのくらいの回数現れるのかを数えるに -は、substituteコマンドを使い、実際に置換するのを避けるためにフラグ'n'をつけま -す。報告される数がそのアイテムの数です。例: > - - :%s/./&/gn 文字 - :%s/\i\+/&/gn 単語 - :%s/^//n 行 - :%s/the/&/gn "the"(どこかしら) - :%s/\<the\>/&/gn "the"(単語一致) - -'hlsearch'をリセットするか、":nohlsearch"をしたくなるかもしれません。 -マッチが1個もないときにエラーになってほしくなければフラグ'e'をつけます。 - -別の方法としては、ビジュアルモードで|v_g_CTRL-G|を使います。 - -複数のファイルから検索したければ|:vimgrep|を使います。 - -これは'modifiable'オプションがオフのときは機能しません。代わりにビジュアルモー -ドで|v_g_CTRL-G|を使ってください。 - - *count-bytes* -バイト数を数えるにはこれを使ってください。 - - 文字列を選択してください(ブロック選択も使えます) - "y"でコピーしてください - そして、strlen()を使います > - :echo strlen(@") -改行は1バイトとして数えられます。 - -============================================================================== -カーソルの位置を戻す *restore-position* - -ときにはファイルのどこかに変更を加えて、テキストをスクロールすることなくカーソ -ルを元の位置に戻すようなマッピングを書きたくなることがあります。ファイルに書い -た日付を変更する例をあげます: - :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s - -位置を記憶する: - ms 's'マークにカーソルの位置を記録します - H ウインドウに表示された最初の行に移動します - mt その行を't'マークに記録します - -位置を元に戻す: - 't 先程のウインドウに表示された最初の行に移動します - zt その行がウインドウの最初に表示されるようにスクロールします - `s 最初の位置に戻ります - -より高度なことについては |winsaveview()| と |winrestview()| を参照してくださ -い。 - -============================================================================== -ファイルをリネームする *rename-files* - -例えば以下のようなファイルを含むディレクトリがあるとします(ディレクトリはラン -ダムに選び出したものです :-): - -buffer.c -charset.c -digraph.c -... - -そして *.c を *.bla にリネームしたい場合次のようなコマンドを実行します: > - - $ vim - :r !ls *.c - :%s/\(.*\).c/mv & \1.bla - :w !sh - :q! - -============================================================================== -複数ファイル中の名前を置換する *change-name* - -スクリプトファイルを使って複数ファイル中の名前を置換する例です: - - 以下のように置換コマンドと :update コマンドを含む "subs.vim" というファ - イルを作成します: > - :%s/Jones/Smith/g - :%s/Allen/Peter/g - :update -< - Vim で置換したい全ファイルを開き、各引数に対してこのスクリプトを実行 - します: > - - vim *.let - argdo source subs.vim - -|:argdo| も参照。 - -============================================================================== -外部コマンドの実行をスピードアップする *speed-up* - -いくつかの状況では外部コマンドの実行速度が非常に遅くなる場合があります。これは -Unix でのワイルドカード展開が行われた場合もそうです。いくつかのスピードアップ -する方法を紹介しましょう。 - -もし .cshrc (もしくは他のファイル、使っているシェルによります)が非常に長いなら -ばそれを対話的に使う部分とそうでない用途(セカンダリーシェルとよく呼ばれます)の -部分にわけるべきです。Vim から ":!ls" のようなコマンドを実行する場合、対話的に -行う必要はありませんよね(例えば、プロンプトを出させたり)。次の行の後にそれらを -おくようにしてください。 > - - if ($?prompt == 0) then - exit 0 - endif - -もう一つの方法は 'shell' オプションに "-f" フラグをつける方法です、例えば: > - - :set shell=csh\ -f - -(オプションの中にスペースを含めるにはバックスラッシュが必要です) -こうすると csh が .cshrc ファイルを読み込まないようにすることができます。しか -しこうすることでなんらかが動作しない場合もあるかもしれません。 - -============================================================================== -便利なマッピング *useful-mappings* - -ここでいくつか好んで使われるマッピングを紹介します。 - - *map-backtick* > - :map ' ` -シングル引用符の動作をバック引用符の動作のようにします。カーソルをマークがある -行の最初の非空白文字に移動させるのではなく、マークがある桁位置に移動させます。 - - *emacs-keys* -コマンドラインでのキーバインドを Emacs スタイルにします: > - " 行頭へ移動 - :cnoremap <C-A> <Home> - " 一文字戻る - :cnoremap <C-B> <Left> - " カーソルの下の文字を削除 - :cnoremap <C-D> <Del> - " 行末へ移動 - :cnoremap <C-E> <End> - " 一文字進む - :cnoremap <C-F> <Right> - " コマンドライン履歴を一つ進む - :cnoremap <C-N> <Down> - " コマンドライン履歴を一つ戻る - :cnoremap <C-P> <Up> - " 前の単語へ移動 - :cnoremap <Esc><C-B> <S-Left> - " 次の単語へ移動 - :cnoremap <Esc><C-F> <S-Right> - -注: これを利用するには'cpoptions'から'<'フラグを外しておく必要があります。|<>| - - *format-bullet-list* -このマッピングはブレットリストのフォーマットを整えるものです。それぞれのリスト -のエントリーの前後に空行がある必要があります。式が使われているのはマッピングを -部分的に解説するコメントを入れるためです。 > - - :let m = ":map _f :set ai<CR>" " 'autoindent' をセット - :let m = m . "{O<Esc>" " アイテムの上に空行を挿入 - :let m = m . "}{)^W" " ブレットの後のテキストに移動 - :let m = m . "i <CR> <Esc>" " インデントの為のスペースを挿入 - :let m = m . "gq}" " ブレットの後のテキストを整形 - :let m = m . "{dd" " 空行を削除 - :let m = m . "5lDJ" " ブレットの後にテキストを置く - :execute m |" マッピングを決定する - -(<> 表記法 |<>|。これらは文字どおりにタイプするということに注意してください。 -^W は "^" "W" で CTRL-W ではありません。'cpoptions' に '<' がなければ Vim にコ -ピー/ペーストすることができますよ。) - -最後のコメントは |" で始まっていることに注意してください、これは ":execute" コ -マンドが直接のコメントを受け付けないからです。 - -また 'textwidth' を 0 以外の値にしておく必要があります。例えば: > - set tw=70 - -最初の行からインデントすることになりますが次のようなマッピングでも同じことがで -きます (注: このマッピングは多くのスペースを含む長い一つの行です): > - :map _f :set ai<CR>}{a <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j -< - *collapse* -これら2つのマッピングは空行(;b)もしくは空白文字のみからなる行(;n)の連続を1行に -します。 > - :map ;b GoZ<Esc>:g/^$/.,/./-j<CR>Gdd - :map ;n GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd - -============================================================================== -ヘルプファイルを圧縮する *gzip-helpfile* - -ディスクスペースに空きがあまりない人はヘルプファイルを圧縮することができます。 -圧縮した後でもヘルプファイルを閲覧することはできます。ヘルプファイルへのアクセ -スは少し遅くなります。また "gzip" プログラムが必要です。 - -(1) すべてのヘルプファイルを圧縮するには: "gzip doc/*.txt" - -(2) "doc/tags" を編集して ".txt" を ".txt.gz" にします。 > - :%s=\(\t.*\.txt\)\t=\1.gz\t= - -(3) 次の行を vimrc に追加します: > - set helpfile={dirname}/help.txt/gz - -{dirname}はヘルプファイルのある場所です。|gzip|プラグインがファイルの解凍をし -ます。それともし圧縮された "doc" ディレクトリと同じ場所に他のVim ファイルがな -い場合、$VIMRUNTIME が他の Vim ファイルがある場所になるようにしておかなければ -なりません。|$VIMRUNTIME|も参照してください。 - -============================================================================== -ウィンドーでシェルコマンドを実行する *shell-window* - -Vim の中のウインドーでシェルを起動できるかという質問がいままでに何度かありまし -た。答えは、できないです。もしこれを実装しようとすればかなりおおくのコードを加 -えなければなりません、これが実装しない理由です。つまるところ、Vim はエディター -なのです、エディターとしてではない作業を実行するようには考えられていません。し -かしながら、同じようなことを実行するには "splitvt" プログラムを使って端末のス -クリーンもしくはウインドーの表示を分割することができます。このプログラムはたぶ -んどこかの ftp サーバーで見つけることができると思います。このプログラムに詳し -いのは Sam Lantinga <slouken@cs.ucdavis.edu> です。もう一つの方法は "window" -コマンドを利用する方法で、このコマンドは BSD Unix システムにあります。このコマ -ンドは複数のウインドーをオーバーラップさせることができます。それか "screen" プ -ログラムを使うかです。これは www.uni-erlangen.de で見つけることができ、このプ -ログラムでウインドーの積み重ねをすることができます。 - -============================================================================== -16進編集 *hex-editing* *using-xxd* - -ユーザーマニュアルの|23.4|を参照してください。 - -もしそのファイルがバイナリファイル特有の拡張子(exe、binなど)をしているときは、 -あなたの<.vimrc>に次のオートコマンドを加えることで、変換の過程を自動化しておく -こともできます。"*.bin"をあなたの編集したいファイルの拡張子の、カンマで区切ら -れたリストに変えてください: > - - " vim -b : edit binary using xxd-format! - augroup Binary - au! - au BufReadPre *.bin let &bin=1 - au BufReadPost *.bin if &bin | %!xxd - au BufReadPost *.bin set ft=xxd | endif - au BufWritePre *.bin if &bin | %!xxd -r - au BufWritePre *.bin endif - au BufWritePost *.bin if &bin | %!xxd - au BufWritePost *.bin set nomod | endif - augroup END - -============================================================================== -オートコマンドで <> 表記を使う *autocmd-<>* - -<> 表記は :autocmd の引数として使っても正しく解釈されません。特殊な文字を入力 -するのを避けるには、<> 表記をするための自己破壊的なマッピング行ってそれからオー -トコマンドの中でそのマッピングを呼び出すことで実現することもできます。例: - - *map-self-destroy* > - " この方法はファイル名を自動的にメニューリストに追加するものです。 - " 自己破壊的なマッピングを使っています! - " 1. ファイル名に含まれる 'dots' を \. に変更するためにバッファーの一つの - " 行を使います。 - " 2. それをレジスター '"' に格納します。 - " 3. その名前をバッファーメニューリストに追加します。 - " 警告: この方法にはいくらか副作用があります。現在のレジスターの内容を上書 - " きしたり "i" コマンドへのマッピングをすべて削除してしまったりします。 - " - autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR> - autocmd BufNewFile,BufReadPre * normal i - -もう一つのよりよい方法は ":execute" コマンドを使う方法です。文字列の中ではバッ -クスラッシュを前置することで <> 表記が使えます。それまであったバックスラッシュ -は \\ という風に2回重ねるのを忘れないでください。また '"' の前にもバックスラッ -シュを前置しなければなりません。 -> - autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>" - -実際のバッファメニューではユーザー定義関数を使うべきですが(|:function|を参照)、 -そうすると<>表記は使いませんので、ここでの例としてそれを使うのは不適切です。 - -============================================================================== -対応する括弧を強調する *match-parens* - -この例はいくつかの高度なトリックを紹介しています。 -- 自動コマンドイベント|CursorMoved|の使い方 -- |searchpairpos()|を使って対応する括弧を見つける方法 -- |synID()|を使ってカーソルが文字列やコメントの中にあるかを判定する方法 -- |:match|を使ってなにかを強調する方法 -- |pattern|を使ってファイルの特定の位置にマッチさせる方法 - -これはスクリプトローカル変数を使っているので、Vimスクリプトファイル中に書かな -ければなりません。カーソルが文字列やコメントの中にないならば、文字列やコメント -はスキップして検索します。構文強調が有効になっている必要があります。 - -これより若干高度なバージョンがプラグイン|matchparen|の中で使われています。 -> - let s:paren_hl_on = 0 - function s:Highlight_Matching_Paren() - if s:paren_hl_on - match none - let s:paren_hl_on = 0 - endif - - let c_lnum = line('.') - let c_col = col('.') - - let c = getline(c_lnum)[c_col - 1] - let plist = split(&matchpairs, ':\|,') - let i = index(plist, c) - if i < 0 - return - endif - if i % 2 == 0 - let s_flags = 'nW' - let c2 = plist[i + 1] - else - let s_flags = 'nbW' - let c2 = c - let c = plist[i - 1] - endif - if c == '[' - let c = '\[' - let c2 = '\]' - endif - let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . - \ '=~? "string\\|comment"' - execute 'if' s_skip '| let s_skip = 0 | endif' - - let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip) - - if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') - exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col . - \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' - let s:paren_hl_on = 1 - endif - endfunction - - autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren() - autocmd InsertEnter * match none -< - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/uganda.jax b/runtime.old/doc/uganda.jax deleted file mode 100644 index 9a29bcc9a..000000000 --- a/runtime.old/doc/uganda.jax +++ /dev/null @@ -1,359 +0,0 @@ -*uganda.txt* For Vim バージョン 7.3. Last change: 2010 Aug 07 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - - *uganda* *Uganda* *copying* *copyright* *license* -要約 - *iccf* *ICCF* -Vim はチャリティウェアです。好きなだけコピーして使うことができますが、ウガンダ -の孤児院への寄付を推奨しています。下記の |kcc| を参照するか、ICCFのウェブサイ -トを訪れてください。URLは以下のとおりです。 - - http://iccf-holland.org/ - http://www.vim.org/iccf/ - http://www.iccf.nl/ - -Vimの開発のスポンサーになることもできます。スポンサーは機能要望に投票できま -す。|sponsor|をご覧ください。集めたお金はウガンダへ送金されます。 - -Vimのドキュメントには Open Publication License が適用されています。 -|manual-copyright|をご覧ください。 - -=== begin of license === - -VIM LICENSE - -I) There are no restrictions on distributing unmodified copies of Vim except - that they must include this license text. You can also distribute - unmodified parts of Vim, likewise unrestricted except that they must - include this license text. You are also allowed to include executables - that you made from the unmodified Vim sources, plus your own usage - examples and Vim scripts. - -II) It is allowed to distribute a modified (or extended) version of Vim, - including executables and/or source code, when the following four - conditions are met: - 1) This license text must be included unmodified. - 2) The modified Vim must be distributed in one of the following five ways: - a) If you make changes to Vim yourself, you must clearly describe in - the distribution how to contact you. When the maintainer asks you - (in any way) for a copy of the modified Vim you distributed, you - must make your changes, including source code, available to the - maintainer without fee. The maintainer reserves the right to - include your changes in the official version of Vim. What the - maintainer will do with your changes and under what license they - will be distributed is negotiable. If there has been no negotiation - then this license, or a later version, also applies to your changes. - The current maintainer is Bram Moolenaar <Bram@vim.org>. If this - changes it will be announced in appropriate places (most likely - vim.sf.net, www.vim.org and/or comp.editors). When it is completely - impossible to contact the maintainer, the obligation to send him - your changes ceases. Once the maintainer has confirmed that he has - received your changes they will not have to be sent again. - b) If you have received a modified Vim that was distributed as - mentioned under a) you are allowed to further distribute it - unmodified, as mentioned at I). If you make additional changes the - text under a) applies to those changes. - c) Provide all the changes, including source code, with every copy of - the modified Vim you distribute. This may be done in the form of a - context diff. You can choose what license to use for new code you - add. The changes and their license must not restrict others from - making their own changes to the official version of Vim. - d) When you have a modified Vim which includes changes as mentioned - under c), you can distribute it without the source code for the - changes if the following three conditions are met: - - The license that applies to the changes permits you to distribute - the changes to the Vim maintainer without fee or restriction, and - permits the Vim maintainer to include the changes in the official - version of Vim without fee or restriction. - - You keep the changes for at least three years after last - distributing the corresponding modified Vim. When the maintainer - or someone who you distributed the modified Vim to asks you (in - any way) for the changes within this period, you must make them - available to him. - - You clearly describe in the distribution how to contact you. This - contact information must remain valid for at least three years - after last distributing the corresponding modified Vim, or as long - as possible. - e) When the GNU General Public License (GPL) applies to the changes, - you can distribute the modified Vim under the GNU GPL version 2 or - any later version. - 3) A message must be added, at least in the output of the ":version" - command and in the intro screen, such that the user of the modified Vim - is able to see that it was modified. When distributing as mentioned - under 2)e) adding the message is only required for as far as this does - not conflict with the license used for the changes. - 4) The contact information as required under 2)a) and 2)d) must not be - removed or changed, except that the person himself can make - corrections. - -III) If you distribute a modified version of Vim, you are encouraged to use - the Vim license for your changes and make them available to the - maintainer, including the source code. The preferred way to do this is - by e-mail or by uploading the files to a server and e-mailing the URL. - If the number of changes is small (e.g., a modified Makefile) e-mailing a - context diff will do. The e-mail address to be used is - <maintainer@vim.org> - -IV) It is not allowed to remove this license from the distribution of the Vim - sources, parts of it or from a modified version. You may use this - license for previous Vim releases instead of the license that they came - with, at your option. - -=== end of license === - -=== ライセンス日本語訳 ここから === - -訳注: この日本語訳は参考のために示すものであり、法的効力を持ちません。 -訳注: 必ず上記の原文を参照してください。 - -VIM ライセンス - -I) Vim のコピーを変更せずに配布することは、このライセンス文を含めなければな - らないこと以外に制限されません。また、変更を加えていない Vim の一部分だ - けを配布することも同様に、このライセンス文を含めなければならないこと以外 - に制限されません。配布物には、変更を加えていない Vim のソースから作成し - た実行可能ファイルや、あなた独自の説明書や Vim スクリプトを含めることも - できます。 - -II) 以下の条件を満たす場合に限り、Vim に変更 (または拡張) を加えた物を、実行 - 可能ファイルやソースコードも含めて配布することが認められています: - 1) このライセンス文を変更せずに配布物に含めること。 - 2) 変更された Vim は以下の 5 つの方法のどれかで配布しなければならない。 - a) Vim に独自の変更を加えた場合、配布物にあなたの連絡先を明確に示して - ください。メンテナがあなたが配布した変更された Vim のコピーについ - て (何かを) 尋ねたときに、あなたが加えた変更を、ソースコードも含め - て、無償で、メンテナが利用できるようにしなければなりません。メンテ - ナは公式なバージョンの Vim にあなたの変更を取り込むために適切に保 - 存します。メンテナがあなたの変更をどのようにし、どういったライセン - スで配布するかを交渉することができます。交渉するものがなければ、こ - のライセンス、もしくはこれの新しいバージョンのライセンスがあなたの - 変更に適用されます。現在のメンテナは Bram Moolenaar <Bram@vim.org> - です。これが変更されるときは適切な場所で告知されます(おそらく - vim.sf.net やwww.vim.org そして comp.editors)。もし本当にメンテナ - と連絡が取れない場合には、あなたの変更を提出する義務はありません。 - 一旦、メンテナがあなたの変更を受け取ったことを確認できたなら、再度 - 提出する必要はありません。 - b) a) に基づいて配布された変更された Vim を受け取った場合、それを変更 - することなしに、I) に基づいて再配布できます。さらなる変更を加えた - 場合、その変更には a) が適用されます。 - c) 変更された Vim の配布物全てに、ソースコードも含めて、全ての変更点を - 提供してください。これは context diff の形式にしてください。あなた - が加えた新しいコードに対してどのライセンスを適用するか選択できます。 - その変更とライセンスは、公式なバージョンの Vim に取り込むことで、他 - のものを制限してはいけません。 - d) c) に基づいて配布された変更された Vim があるとき、次の条件を満たす場 - 合に限り、そのソースコードを含めずに配布することができます: - - その変更に適用されているライセンスが、その変更を無償で制限なしに - Vim のメンテナに提供することを認め、そして、Vim のメンテナがその - 変更を公式なバージョンの Vim に取り込むことを無償で制限なしに認 - めている。 - - その変更された Vim の変更点を、最後に配布したときから少なくとも - 3 年は保持してください。その期間内に、メンテナや誰かがその変更に - ついて (何かを) 尋ねた場合、彼らがその変更を利用できるようにしな - ければなりません。 - - その配布物にあなたの連絡先を明確に示してください。その連絡方法は、 - その変更された Vim に相当する配布物が最後に提供されてから、少なく - とも 3 年、そして可能な限り長く、有効でなければなりません。 - e) その変更に GNU General Public License (GPL) が適用されている場合、 - GNU GPL バージョン 2、またはそれより新しいバージョンに基づいて、その - 変更された Vim を配布することができます。 - 3) その変更された Vim を利用しているユーザーが、それが変更されていると確 - 認できるように、少なくとも、":version" コマンドや起動時の挨拶メッセー - ジに、変更されている旨を表示しなければなりません。その配布物が 2)e) - によるものである場合、そのライセンスが変更前のものと矛盾していない、 - という旨のメッセージだけが必要です。 - 4) 2)a) と 2)d) により要求されている連絡方法を、その本人が訂正する以外 - に、変更したり削除してはいけません。 - -III) 変更された Vim を配布する場合、あなたの変更に Vim のライセンスを使い、 - その変更を、ソースコードも含めて、メンテナが利用できるようにすることが奨 - 励されています。そのためには電子メールで送るか、サーバにアップロードして - その URL を電子メールで知らせるのが望ましいです。少しの変更なら (例えば - Makefile の変更など) context diff を電子メールで送るのがいいでしょう。電 - 子メールの送り先は <maintainer@vim.org> です。 - -IV) Vim のソースや、その一部、または変更された Vim、の配布物からこのライセン - スを削除することは認められていません。望むなら、以前の Vim リリースに、 - その時点のライセンスではなく、このライセンスを適用することができます。 - -=== ライセンス日本語訳 ここまで === - -Note: - -- Vim に満足していただけたのなら、このファイルをさらに読み進め、ウガンダの貧し - い子供たちへの援助を検討してください。 - -- Vimの開発に協力したいとお考えなら、スポンサーになることを検討してください - |sponsor|。集めたお金はウガンダへ送金されます。 - -- Richard Stallman にならってVimのライセンスは GNU GPL互換です。彼がそれを確認 - してから多少の変更が加えられましたが、違いはないでしょう。 - -- Vimに GNU GPL のライブラリをリンクした場合、配布形態が GNU GPL に制限されま - す。あなたがVimに何の変更も加えていなくてもです。 - -- 一度でも GNU GPL を含む変更を加えた場合、それ以降の変更は GNU GPL 互換のライ - センスを使わなければいけません。 - -- Vimに改良を加えたバージョンを配布するときは、configureの引数に - "--with-modified-by"を指定するかMODIFIED_BYを定義して、あなたの名前を連絡先 - に含めることができます。 - -============================================================================== -Kibaale Children's Centre *kcc* *Kibaale* *charity* - -Kibaale Children's Centre (KCC) はウガンダの南部にある小さな町 Kibaale にあり -ます。ウガンダは東アフリカのタンザニアの近くに位置しています。その地域はRakai -地区として知られています。人口の大部分は農民で、貧乏ではありますが食料は十分に -あります。しかしこの地域は世界のほかの場所よりも AIDS で苦しんでいます。AIDS -はここから始まったという人もいます。ウガンダ人の 10-30% がHIV に感染していると -推定されています。両親が死んでしまうので孤児がたくさんいます。この地域では人口 -350,000 人のうちの 60,000 人の子供が親をどちらか、または両方をなくしており、そ -の数は増え続けています。 - -子供たちは多くの援助を必要としています。KCC は食料、医療、教育を彼らに提供する -ために懸命に働いています。食料と医療は彼らの健康を保つために、そして教育は彼ら -の将来を手助けするためです。KCC はキリスト教の教えに基づいて活動していますが、 -子供たちの宗教にかかわらず援助が行われています。 - -この地域の問題を解決する鍵は教育です。過去数年にわたる Idi Amin 大統領の時代と -それに続く市民戦争により、教育は軽視されてきました。今は政府が再び安定しました -し、子供と親は自分自身の健康をどうやって保つか、そしてどうすれば感染を避けられ -るかを学ぶ必要があります。病気にかかっている人々や空腹を抱えている人々への援助 -もなされていますが、第一の目標は人々を病気から遠ざけることであり、そして体によ -い食料を育てる方法を彼らに教えることです。 - -ほとんどの孤児は拡大家族の中で生活しています。叔父や姉が彼らの世話をしていま -す。このような家庭は大家族でありながら収入は少ないので、子供が体によい食料を得 -られるのは希です。まして衣類、医療、学校に通うことなどは無理なのです。このよう -な貧しい子供たちを助けるために資金援助制度が設けられました。子供は経済的に養子 -になるのです。KCC は、月に数ドルのお金で、子供たちに必要なもの、健康や学校に通 -うことなどを手配します。また KCC はその他にも、子供とその世話をしている家族が -必要とするものの面倒を見ています。 - -子供を直接援助するほかに、子供が育つ環境を改善する必要があります。KCC は学校の -教育方法が改善されるよう援助を行っています。センターには実地教育をする学校 -(demonstration school) があり、教師を指導しています。保健に従事する人の育成も -されており、衛生教育も行われています。そして、各家庭が適切なトイレを作れるよう -に支援しています。私はセメントの厚い板を作る現場を設立する手伝いをしました。そ -の板はよいトイレを作るのに使われ、そしてコスト以下の値段で売られています。 - -プロジェクトには小さな診療所があり、子供たちとその家族が医療を受けられるように -しています。そして必要があれば病院へ移ることを申し出ます。病気の予防プログラム -が実行されており、伝染病 (風疹とコレラは悩みの種です) が発生した場合は援助が行 -われます。 - - *donate* -私は1994年の夏から1995年の夏までの丸1年間をボランティアとしてセンターで過ごし -ました。センターを拡大するための手助けを行い、そして飲料水の改善を行う地区と衛 -生設備の改善を行う地区で働いていました。そして KCC が提供している援助が本当に -役に立っていることを学んできました。オランダへ戻ったとき、KCC のサポートを続け -たいと思いました。それを実行するために私は基金を設立し、そしてスポンサーシップ・ -プログラムを組織化しました。次のどれかが可能かどうか検討してみてください: - -1. 1人の小学生のスポンサーになる: 月に17ユーロ(か、もっと) -2. 1人の中学生のスポンサーになる: 月に25ユーロ(か、もっと) -3. 診療所のスポンサーになる: 月もしくは4半期ごとにいくらでも -4. 1度に限定した寄付(A one-time donation) - -他の組織に比べると子供のスポンサーシップの料金はかなり低いです。これはお金が直 -接センターに届くようになっているからです。5%以下しか運営には使われていません。 -それが可能なのはこの組織が小さく、そしてボランティアで運営されているからです。 -子供のスポンサーになるのなら、少なくとも1年は続ける心構えを持ってください。 - -しかしお金が適切に使われていることを信用できるでしょうか? まず、私は Vim の作 -者として個人的に信用されています。そして私はセンターで働いている人々を信用して -いますし、彼らを個人的に知ってもいます。さらには、このセンターはかつては World -Vision と Save the Children Fund によって共同運営・監督され、今は Pacific -Academy Outreach Society の監督下にあります。センターは約 1 年に 1 回は視察を -受けて進行をチェックしてもらっています (自費で)。私自身 1993 年から何度も視察 -をしています。ICCF のウェブサイトに視察レポートがあります。 - -もし他に質問がありましたら、私にメールを送ってください: <Bram@vim.org> - -センターの住所: - Kibaale Children's Centre - p.o. box 1658 - Masaka, Uganda, East Africa - -送金: *iccf-donations* - -最新の情報はICCFのウェブサイトをご覧ください。ICCFのURLは|iccf|をご覧ください。 - -アメリカ: 下記で説明する方法が使えます。 - 残念ながら、Nehemiah Group Outreach Society (NGOS) に小切手を - 送る方法はもう使えません。 - 国税庁 (IRS) の税領収書を得られる他の方法を今探しています。 - 子供のスポンサーになるにはカナダの KCF (下記参照) に連絡して - ください。銀行の手数料を節約するため、アメリカの小切手を彼らに - 送ることができます。 - -カナダ: カナダのSurreyにあるKibaale Children's Fund(KCF)に連絡してくだ - さい。彼らはKibaaleの子供たちのために、カナダのスポンサーを世 - 話しています。KCF が集めたお金は100%、ウガンダのプロジェクトに - 送金されます。1度に限定した寄付の場合は、そこに直接送ることが - できます。Vimによってどのくらい寄付されているか知りたいので、 - よろしければ、送金したことを私に知らせてください。スポンサー - シップについては KCF に尋ねてください。 - Kibaale Children's Fund c/o Pacific Academy - 10238-168 Street - Surrey, B.C. V4N 1Z4International Child Care Fund - Phone: 604-581-5353 - Kibaale Children's Fund (KCF) に寄付をすると、税領収書を受け取 - れるので、確定申告で提出できます。 - -オランダ: Lisse の "Stichting ICCF Holland" の口座に振り替えてください。 - オランダ在住の方は税金が控除されます。 - Postbank, nr. 4548774 - -ドイツ: 寄付により、確定申告で税金が控除されます。 - 最新の情報は ICCF のウェブサイトを御覧下さい: - http://iccf-holland.org/germany.html - -ワールド: 郵便為替を使ってください。ほとんどの国で、たいていは郵便局か - ら送れます。この名前を使ってください (これは私のパスポートの - ものです): "Abraham Moolenaar"。可能なら通貨はユーロにしてく - ださい。 - -ヨーロッパ: 可能なら銀行振り込みを使ってください。あなたの銀行はそのための - 方法を用意しているはずです。swift codeとIBAN numberは下記の"そ - の他"の項を参照してください。 - 他の方法も使えると思います。スポンサーシップについてはお問い合 - わせください。 - -クレジットカード: クレジットカードでの送金には PayPal が使えます。これはイン - ターネットでの決算で最も広く使われているシステムです。これは本 - 当に簡単です。詳細はこのリンク先を見てください: - https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q - 送金のための e-mail アドレスは: - Bram@iccf-holland.org - 400 ユーロ (500ドル) より大きな送金は、小切手で送るようにして - ください。 - -その他: 可能であれば次のうちのどれかの口座に振り替えてください: - Postbank, account 4548774 - Swift code: INGB NL 2A - IBAN: NL47 PSTB 0004 5487 74 - under the name "stichting ICCF Holland", Lisse - これがうまく行かなければ: - Rabobank Lisse, account 3765.05.117 - Swift code: RABO NL 2U - under the name "Bram Moolenaar", Lisse - それ以外は、ユーロか US ドルの小切手を下記の住所に送ってくださ - い。最小の金額は 70 ドルです(私が利用している銀行はそれ以下の - 海外からの小切手は受け付けないのです、ごめんなさい)。 - - -小切手の送り先: - stichting ICCF Holland - Bram Moolenaar - Finsterruetihof 1 - 8134 Adliswil - Switzerland - -この住所はとうぶん先まで使えると思います。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/undo.jax b/runtime.old/doc/undo.jax deleted file mode 100644 index c0b995bc7..000000000 --- a/runtime.old/doc/undo.jax +++ /dev/null @@ -1,400 +0,0 @@ -*undo.txt* For Vim バージョン 7.3. Last change: 2010 Dec 19 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -undo と redo *undo-redo* - -基本的なことは |02.5| で説明されています。 - -1. undo と redo のコマンド |undo-commands| -2. Undo の二つの方式 |undo-two-ways| -3. Undo ブロック |undo-blocks| -4. Undo ブランチ |undo-branches| -5. Undo の永続化 |undo-persistence| -6. 備考 |undo-remarks| - -============================================================================== -1. undo と redo のコマンド *undo-commands* - -<Undo> or *undo* *<Undo>* *u* -u [count] 個の変更を元に戻す。 {Vi は 1 レベルだけ} - - *:u* *:un* *:undo* -:u[ndo] 一つの変更を元に戻す。 {Vi は 1 レベルだけ} - - *E830* -:u[ndo] {N} 変更番号 {N} の直後にジャンプする。{N} の意味について - は |undo-branches| を参照。 {Vi にはない} - - *CTRL-R* -CTRL-R undo された変更を [count] 個やり直す (redoする)。 - {Vi ではこのキーはスクリーンの再描画} - - *:red* *:redo* *redo* -:red[o] undo された変更を一つやり直す。 {Vi: redo はない} - - *U* -U 最近実行された、一つの行の中でのすべての変更を元に戻 - す。 {Vi では行から移動すると使えない} - -変更は記録されます。上記の undo コマンドや redo コマンドを使うと、それぞれの変 -更が加えられる前のテキストに戻したり、変更を元に戻した後でその変更を再び加える -ことができます。 - -"U" コマンドは他のコマンドと同様に undo/redo の対象となります。つまり、"u" コ -マンドで "U" コマンドを undo したり、'CTRL-R' コマンドでそれを redo したりでき -ます。"U" と "u" と 'CTRL-R' を混ぜて使うと、"U" コマンドが直前の "U" コマンド -以前の状態を復元することに気付くでしょう。この動作はわかりにくいかもしれません -が、練習して慣れてください。 -"U" コマンドはバッファを変更有りの状態にします。つまり、"U" コマンドで変更が加 -えられる前のテキストに戻しても、それは変更有りの状態として認識されます。"u" を -使って変更無しの状態まで undo してください。 - -============================================================================== -2. undo の二つの方式 *undo-two-ways* - -undo コマンドと redo コマンドの動作は 'cpoptions' の 'u' フラグに依存していま -す。Vim 方式 ('u'がない場合) と Vi 互換方式 ('u'がある場合) があります。Vim 方 -式では "uu" は二つの変更を undo します。Vi 互換方式では "uu" は何もしません -(undo を undo する)。 - -'u' がない場合。Vim 方式: -undo コマンドで過去に戻れます。そして、redo コマンドで再び先に進むことができま -す。undo コマンドを実行した後で新しい変更を加えると、redo はできなくなります。 - -'u' がある場合。Vi 互換方式: -undo コマンドは直前の変更と undo コマンドを undo します。redo コマンドは直前の -undo コマンドを繰り返します。変更コマンドが繰り返されるわけではないので、そう -したい場合は "." を使ってください。 - -例 Vim 方式 Vi 互換方式 ~ -"uu" 2回 undo 変更なし -"u CTRL-R" 変更なし 2回 undo - -理由: Nvi では CTRL-R の代わりに "." コマンドを使います。あいにくこれは - Vi 互換ではありません。例えば、"dwdwu." は Vi では二つの単語が削除 - されますが、Nvi ではなにも変更されません。 - -============================================================================== -3. Undo ブロック *undo-blocks* - -undo コマンドは普通は一つのコマンドを undo します。そのコマンドがいくつの変更 -を加えるかは関係ありません。この undo 可能な変更の組が undo ブロックです。例え -ば、キーの入力によって関数が呼ばれた場合、その関数内のすべてのコマンドは一緒に -undo されます。 - -関数やスクリプトを作るとき、undo 可能な変更を新しく追加するのではなく、その変 -更を直前の変更につなげたい場合は、次のコマンドを使ってください: - - *:undoj* *:undojoin* *E790* -:undoj[oin] 以降の変更を直前の undo ブロックにつなげる。 - 警告: 注意して使ってください。ユーザーが適切に変更を - undo するのを妨げてしまうかもしれません。undo や redo - の後でこのコマンドを使わないでください。 - {Vi にはない} - -これは特に変更の途中でプロンプトを表示するような場合に便利です。例えば関数の中 -で |getchar()| を呼び出すなど。変更をつなげてしかるべき関連性のある変更がそこ -にあることがわかっている場合に使ってください。 - -このコマンドは単独では機能しません。なぜなら、次のキー入力によって再び新しい変 -更が開始されるからです。しかし例えば次のように使うことはできます: > - - :undojoin | delete - -この後で "u" コマンドを実行すると delete コマンドとその直前の変更が undo され -ます。 - -反対の動作、つまり変更を二つの undo ブロックに分けるには、インサートモードで -CTRL-G u を使います。インサートコマンドを部分ごと (例えば文単位) に undo でき -るようにしたい場合に便利です。 |i_CTRL-G_u| -'undolevels' の値を設定したときも undo は区切られます。新しい値と古い値が同じ -でもそうなります。 - -============================================================================== -4. Undo ブランチ *undo-branches* *undo-tree* - -ここまでは一線上の undo/redo について説明してきました。しかし、それを枝分かれ -させることもできます。枝分かれは、変更を undo してから新しい変更を加えることで -起こります。undo された変更は枝 (ブランチ) になります。以下のコマンドで枝に移 -動できます。 - -ユーザーマニュアルに説明があります: |usr_32.txt|. - - *:undol* *:undolist* -:undol[ist] 変更木 (tree) の、葉 (leaf) を一覧表示する。例: - number changes when saved ~ - 88 88 2010/01/04 14:25:53 - 108 107 08/07 12:47:51 - 136 46 13:33:01 7 - 166 164 3 seconds ago - - "number" 列は変更番号です。この番号は連続的に増えてい - き、undo 可能な変更の識別番号として使えます。 |:undo| - 参照。 - "changes" 列は木のルートから葉までの変更の数です。 - "when" 列は変更が加えられた日付と時刻です。日時の表記 - は 4 種類あります: - N seconds ago 秒前 - HH:MM:SS 時:分:秒 - MM/DD HH:MM:SS 月/日 時:分:秒 - YYYY/MM/DD HH:MM:SS 年/月/日 時:分:秒 - "saved" 列は変更がディスクに保存されたかどうか、そして - それがどの書き込みだったかを示します。この番号は - |:later| コマンドと |:earlier| コマンドで使用できま - す。 - 詳細を取得するには |undotree()| 関数を使います。 - - *g-* -g- 古いテキスト状態に移動する。カウント指定で繰り返し回数 - を指定できます。 {Vi にはない} - *:ea* *:earlier* -:earlier {count} {count} 回前の古いテキスト状態に移動する。 -:earlier {N}s {N} 秒前の古いテキスト状態に移動する。 -:earlier {N}m {N} 分前の古いテキスト状態に移動する。 -:earlier {N}h {N} 時間前の古いテキスト状態に移動する。 -:earlier {N}d {N} 日前の古いテキスト状態に移動する。 - -:earlier {N}f {N} 回前のファイルを保存したときのテキスト状態に移動す - る。 - 最後の保存から何か変更が加えられていたとき、":earlier - 1f" は保存時の状態に移動します。変更がない場合は一つ前 - の保存時の状態に移動します。 - 最初にファイルを保存した直後か、ファイルをまだ保存して - いないときは、":earlier 1f" は最初の変更の前に移動しま - す。 - - *g+* -g+ 新しいテキスト状態に移動する。カウント指定で繰り返し回 - 数を指定できます。 {Vi にはない} - *:lat* *:later* -:later {count} {count} 回後の新しいテキスト状態に移動する。 -:later {N}s {N} 秒後の新しいテキスト状態に移動する。 -:later {N}m {N} 分後の新しいテキスト状態に移動する。 -:later {N}h {N} 時間後の新しいテキスト状態に移動する。 -:later {N}d {N} 日後の新しいテキスト状態に移動する。 - -:later {N}f {N} 回後のファイルを保存したときのテキスト状態に移動す - る。 - 最後に保存した状態にいるときは、":later 1f" は一番新し - いテキスト状態に移動します。 - - -Note: テキスト状態は、'undolevels' により undo 情報がクリアされると、到達不可 -能になります。 - -時間を移動すると一度に複数の変更が現れることもあります。これは undo ツリーを移 -動して新しい変更を加えたときに起こります。 - -例 - -次のテキストがあります: - one two three ~ - -"x" を 3 回押して最初の単語を削除します: - ne two three ~ - e two three ~ - two three ~ - -"u" を 3 回押してそれを undo します: - e two three ~ - ne two three ~ - one two three ~ - -"x" を 3 回押して二番目の単語を削除します: - one wo three ~ - one o three ~ - one three ~ - -"g-" を 3 回押してそれを undo します: - one o three ~ - one wo three ~ - two three ~ - -最初の undo ブランチ ("one" を削除した後) に戻りました。さらに "g-" を押してい -くと元のテキストに戻ります: - e two three ~ - ne two three ~ - one two three ~ - -":later 1h" を実行すると最後の変更にジャンプします: - one three ~ - -":earlier 1h" を実行すると最初に戻ります: - one two three ~ - - -Note: "u" と CTRL-R では "g-" と "g+" のようにすべてのテキスト状態に移動するこ -とはできません。 - -============================================================================== -5. Undo の永続化 (Undo persistence) *undo-persistence* *persistent-undo* - -バッファがアンロードされるとき、通常はバッファの undo ツリーは廃棄されます。 -'undofile' オプションを設定することで、ファイルを書き込んだときに自動的に undo -履歴が保存され、後でファイルを開いたときに undo 履歴が復元されます。 - -'undofile' オプションはファイルを書き込んだ後、BufWritePost 自動コマンドの前に -参照されます。undo 情報の保存をファイルごとに制御したい場合は BufWritePre 自動 -コマンドを使います: > - au BufWritePre /tmp/* setlocal noundofile - -undo ツリーは undo ファイルとして分けて保存されます。undo ファイルは編集ファイ -ルごとに作られます。保存場所の決定にはファイルシステムのパスをそのまま使用した -簡単な方法が使われます。Vim は編集ファイルと undo ファイルの同期がとれているか -どうかを確認し (ファイルの中身のハッシュ値で判断)、undo ファイルが書き込まれた -後で編集ファイルが変更されていたときは、データの損失を防ぐため、undo ファイル -を無視します。開いているファイルと undo ファイルの所有者が違うときも undo ファ -イルは無視されます。この事についてのメッセージを表示させるには 'verbose' を設 -定してください。 - -通常、undo ファイルは編集ファイルと同じディレクトリに保存されます。この動作は -'undodir' オプションで変更できます。 - -ファイルが暗号化されているときは、undo ファイル内のテキストも暗号化されます。 -ファイルと同じ暗号化メソッドとキーが使用されます。 |encryption| - -":wundo" と ":rundo" を使うことで undo 履歴の保存と復元を手動で実行することも -できます。 - *:wundo* *:rundo* -:wundo[!] {file} - undo 履歴を {file} に保存する。 - {file} が存在し、それが undo ファイルでないなら (ファイル先頭 - のマジックナンバーが違うなら)、コマンドは失敗します。それでも - 保存したい場合は ! を付けてください。 - {file} が存在し、それが undo ファイルなら上書きされます。 - {Vi にはない} - -:rundo {file} {file} から undo 履歴を読み込む。 - {Vi にはない} - -自動コマンドを使うことで undo ファイルの名前を明示的に指定することができます。 -例: > - - au BufReadPost * call ReadUndo() - au BufWritePost * call WriteUndo() - func ReadUndo() - if filereadable(expand('%:h'). '/UNDO/' . expand('%:t')) - rundo %:h/UNDO/%:t - endif - endfunc - func WriteUndo() - let dirname = expand('%:h') . '/UNDO' - if !isdirectory(dirname) - call mkdir(dirname) - endif - wundo %:h/UNDO/%:t - endfunc - -これを使うときは 'undofile' をオフにしておく必要があります。そうしないと二つの -undo ファイルが作成されてしまいます。 - -|undofile()| 関数を使うと、Vim が使用する undo ファイルの名前を取得できます。 - -Note: 'undofile' が設定された状態でファイルを読み書きするとき、ほとんどのエ -ラーは表示されません ('verbose' が設定されていなければ)。:wundo と :rundo を使 -うときはより多くのエラーメッセージが表示されます。例えばファイルが読めない、書 -き込めないとき。 - -Note: Vim は undo ファイルを削除しません。自分で削除する必要があります。 - -undo ファイルの読み込みが失敗する原因はいくつかあります: -*E822* パーミッションの設定によりファイルを開けない。 -*E823* ファイル先頭のマジックナンバーが違う。普通はそのファイルが undo ファイ - ルでないことを意味します。 -*E824* undo ファイルのバージョン番号が、それが Vim の新しいバージョンで書き込 - まれたことを示している。新しいバージョンで開く必要があります。undo - ファイルの情報を維持したいならそのバッファを保存してはいけません。 -"ファイルが変更されています。undo 情報を使用できません" -("File contents changed, cannot use undo info") - ファイルのテキストが undo ファイルを保存したときから変わっています。テ - キストが壊れてしまうため、その undo ファイルは使用できません。これは - 'encoding' の設定が undo ファイル保存時と違う場合にも起こります。 -*E825* undo ファイルの中身が不正なので使用できません。 -*E826* undo ファイルが暗号化されていて、復号に失敗しました。 -*E827* undo ファイルが暗号化されていて、使用中の Vim が暗号化をサポートしてい - ません。他の Vim でファイルを開いてください。 -*E832* undo ファイルが暗号化されていて、'key' が設定されておらず、テキスト - ファイルは暗号化されていません。これはテキストファイルが暗号化を使用し - て保存された後で、暗号化を使用しないで上書きされた場合に起こります。 - おそらく undo ファイルを削除する必要があります。 -"undo ファイルを読み込めません。所有者が違います" -("Not reading undo file, owner differs") - undo ファイルの所有者とテキストファイルの所有者が違います。安全のため - undo ファイルは使用されません。 - -undo ファイルの書き込みは次のような理由で失敗することがあります: -*E828* 書き込みのためのファイルを作成できません。おそらくディレクトリの書き込 - み権限がありません。 -"'undodir' で指定されたディレクトリに undo ファイルを保存できません" -("Cannot write undo file in any directory in 'undodir'") - 'undodir' で指定されたディレクトリの中に使用可能なものがありません。 -"undo ファイルを上書きしません。読み込み不可です" -("Will not overwrite with undo file, cannot read") - undo ファイルと同じ名前のファイルが存在し、それが読み込みできない状態 - になっています。そのファイルを削除するか名前を変更する必要があります。 -"上書きしません。undo ファイルではありません" -("Will not overwrite, this is not an undo file") - undo ファイルと同じ名前のファイルが存在し、そのファイルの先頭に正しい - マジックナンバーがありません。そのファイルを削除するか名前を変更する必 - 要があります。 -"undo ファイルの書き込みをスキップします。undo がありません" -("Skipping undo file write, noting to undo") - 保存する undo 情報がありません。なにも変更されていないか 'undolevels' - がマイナス値です。 -*E829* undo ファイルの保存中にエラーが発生しました。もう一度試してみてくださ - い。 - -============================================================================== -6. 備考 *undo-remarks* - -記録される変更の数は 'undolevels' オプションで設定できます。ゼロに設定すると、 -Vi 互換方式の動作になります。マイナスの値に設定すると undo は使用できなくなり -ます。メモリが足りない場合に設定してください。 - - *clear-undo* -'undolevels' を -1 に設定しても、undo 情報はすぐにはクリアされません。次の変更 -が加えられたときにクリアされます。強制的に undo 情報をクリアしたいときは次のコ -マンドを使ってください: > - :let old_undolevels = &undolevels - :set undolevels=-1 - :exe "normal a \<BS>\<Esc>" - :let &undolevels = old_undolevels - :unlet old_undolevels - -バッファのマーク ('a から 'z) はテキストと同様に記録、復元されます。 -{Vi とは少し動作が違います} - -すべての変更を undo したとき、バッファは変更ありとはみなされません。その状態か -らは ":q" (":q!"ではなく) で Vim を終了できます {Vi にはない}。Note: これはい -つファイルを保存したかに関係します。":w" の後で "u" を実行すると、保存したとき -から見てバッファは変更された状態なので、バッファは変更ありと認識されます。 - -マニュアル設定の折り畳み (|folding|) を使っているとき、折り畳みは記録も復元も -されません。変更が折り畳みの中だけで行われた場合のみ (折り畳みの最初と最後の行 -が変わらないので) 折り畳みは維持されます。 - -番号レジスタを使って削除を元に戻すこともできます。テキストを削除すると、それは -"1 レジスタに記録されます。元々 "1 にあったものは "2 にシフトされ、他の番号レ -ジスタも同様にシフトされます。"9 レジスタの内容は失われます。そして、プットコ -マンド '"1P' を使って削除されたテキストを元に戻すことができます。(削除やコピー -の操作をした後ならテキストは無名レジスタに入っているので 'P' や 'p' でも元に戻 -せます)。三回前に削除されたテキストなら '"3P' で戻せます。 - - *redo-register* -数回に分けて削除されたテキストを戻したい場合は、"." コマンドの特殊な機能が役に -立ちます。"." コマンドは使用されたレジスタの番号を増加させます。例えば、""1P" -を実行した後で "." を押すと '"2P' が実行されます。さらに "." を押していくとす -べての番号レジスタが挿入されます。 - -例: 'dd....' でテキストを削除したら '"1P....' で元に戻せる。 - -削除されたテキストがどのレジスタに記録されているかわからないときは :display コ -マンドで確認できます。あるいは、'"1P' を実行してみて、もしそれが違うものなら -'u.' を実行します。'u.' は最初にプットされたテキストを削除し、二番目のレジスタ -を使ってプットコマンドを実行します。目的のものが出るまで 'u.' を繰り返してくだ -さい。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_01.jax b/runtime.old/doc/usr_01.jax deleted file mode 100644 index 25e86adce..000000000 --- a/runtime.old/doc/usr_01.jax +++ /dev/null @@ -1,192 +0,0 @@ -*usr_01.txt* For Vim バージョン 7.3. Last change: 2010 Nov 03 - - VIM USER MANUAL - by Bram Moolenaar - - マニュアルについて - - -この章では、Vim のマニュアルを紹介します。著作権についてもお読み下さい。 - -|01.1| 二つのマニュアル -|01.2| Vim の準備 -|01.3| チュートリアル -|01.4| 著作権 (copyright) - -次章: |usr_02.txt| 初めての Vim -目次: |usr_toc.txt| - -============================================================================== -*01.1* 二つのマニュアル - -Vim のマニュアルは二部構成になっています。 - -1. ユーザーマニュアル - 簡単なものから複雑なものまで、具体的な例を使って説明しています。本のよう - に最初から順を追って読んでください。 - -2. リファレンスマニュアル - Vim がどのように動作するかを詳しく説明しています。 - -マニュアルの表記方法については |notation| をご覧ください。 - - -他のトピックへのジャンプ ------------------------- -二つのマニュアルにはハイパーリンクが張ってあります。編集手順の説明とコマンドや -オプションの詳しい説明とを素早く行き来できます。次のコマンドを使ってください。 - - CTRL-] : カーソル位置の項目にジャンプする。 - CTRL-O : ジャンプ先から戻る。 - -リンクは |bars| のように縦線 (vertical bar) で囲まれています。縦線は隠れている -か非表示になっているかもしれません (下記参照)。オプション名は 'number' のよう -にアポストロフィで、コマンドは ":write" のように引用符で囲まれています。普通の -単語もリンクとして使えます。試しに、カーソルを CTRL-] の上に動かして CTRL-] を -押してみてください。 - -":help" コマンドでヘルプの目次を表示できます。|help.txt|をご覧ください。 - -縦線とスターは通常は |conceal| 機能によって隠されています。さらに、|hl-Ignore| -が使用され、背景色と同じ色が設定されています。次のコマンドでそれらを表示するこ -とができます: > - :set conceallevel=0 - :hi link HelpBar Normal - :hi link HelpStar Normal - -============================================================================== -*01.2* Vim の準備 - -マニュアルの大部分は Vim が正しくインストールされていることを前提にしていま -す。まだインストールしていなかったり、うまく動いていない(ファイルが見つからな -い、GUI でメニューが出ないなどの)場合は、インストールの章 |usr_90.txt| を読ん -でください。 - *not-compatible* -このマニュアルでは「vi互換スイッチ('compatible')」がオフになっていることを前提 -にしています。ほとんどのコマンドは互換スイッチの影響を受けませんが、例えば、複 -数回アンドゥなどの機能を使うときは設定が重要になります。正しく設定されているこ -とを確実にするには、サンプル設定ファイルをコピーするのが簡単です。Vim の中から -コピーを実行するなら、サンプル設定ファイルの場所を探す必要はありません。コピー -の方法はシステムによって違います: - -Unix: > - :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc -MS-DOS, MS-Windows, OS/2: > - :!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc -Amiga: > - :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc - -vimrc ファイルが既にある場合はコピーする必要はないかもしれません。 - -Vim を起動すると、オプション 'compatible' はオフになっているはずです。次のコマ -ンドで現在の設定を確認できます: > - - :set compatible? - -"nocompatible" と表示されればオフになっています。"compatible" と表示された場合 -は正しく設定されていません。オプションがオンになっている理由を確認してくださ -い。もしかしたら、先程保存した設定ファイルが読み込まれていないのかもしれませ -ん。次のコマンドで確認してください: > - - :scriptnames - -ファイルが一覧に無い場合は、vimrc ファイルの名前と場所を確認してください。一覧 -に入っている場合は、他のファイルによって 'compatible' がオンに設定されているは -ずです。 - -詳しくは|vimrc|と|compatible-default|をご覧ください。 - - Note: - このマニュアルはVimを普通に使うための説明書です。実は evim(=easy vim) - という別の Vim があります。これも Vim なのですが、メモ帳 のように - 「クリック & 入力」方式であったり、常に挿入モードあったり、普通の Vim - とはかなり雰囲気が違います。このユーザーマニュアルでは evim について説 - 明していません。操作方法は使えばわかるはずです。 - 詳しいことは |evim-keys| をご覧ください。 - -============================================================================== -*01.3* チュートリアル *tutor* *vimtutor* - -テキストを読むだけではなく (退屈だし!) チュートリアルを使って Vim の初歩を学ぶ -ことができます。vimtutor は 30 分の演習コースです。実際に操作しながら Vim の最 -低限の操作方法を習得できます。 - -Unix では、Vim が適切にインストールしてあれば、シェルから起動できます: > - - vimtutor - -MS-Windows では、スタートメニューの Program/Vim から起動できます。あるいは、 -$VIMRUNTIME ディレクトリにある vimtutor.bat を実行してください。 - -演習ファイルのコピーが作られるので、テキストを編集してもオリジナルの演習ファイ -ルを壊してしまう心配はありません。 -チュートリアルはいくつかの言語に翻訳されています。翻訳されたチュートリアルを使 -うには、二文字の言語コードを指定します。日本語の場合は次のようにします: > - - vimtutor ja - -Unix で GUI 版の Vim を使いたい場合は、"gvimtutor" か "vimtutor -g" を実行して -ください。 - -OpenVMS では、VMS プロンプトから次のようにして起動できます。 > - - @VIM:vimtutor - -上の例と同じようにオプションで二文字の言語コードを指定できます。 - - -Unix 以外のシステムでは、多少の作業が必要です。 - -1. 演習用ファイルをコピーします。これは Vim を使ってコピーできます(Vim はファ - イルの場所を知っている): -> - vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' -< -"TUTORCOPY" というファイルがカレントディレクトリに作成されます。翻訳された演習 -ファイルを使うには、二文字の言語コードを指定します。日本語の場合は次のようにし -ます: -> - vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.ja' -c 'w! TUTORCOPY' -c 'q' -< -2. コピーしたファイルを Vim で開きます: -> - vim -u NONE -c "set nocp" TUTORCOPY -< -指定している引数によって Vim がイイ感じで起動されます。 - -3. 練習が終わったら、コピーしたファイルを削除します: -> - del TUTORCOPY -< -============================================================================== -*01.4* 著作権 (Copyright) *manual-copyright* - -Vim のユーザマニュアルとリファレンスマニュアルの著作権は以下の通りです。 - Copyright (c) 1988-2003 by Bram Moolenaar -Open Publication License, v1.0 以降の条件に従って配布することができます。ライ -センスの最新バージョンは次の場所から入手できます: - http://www.opencontent.org/openpub/ - -マニュアルに貢献する人は上記の著作権通達に同意しなければなりません。 - - *frombook* -ユーザマニュアルの一部は "Vi IMproved - VIM" から取られたものです。 - "Vi IMproved - Vim" Steve Oualline著 - (出版:New Riders Publishing, ISBN: 0735710015) -この本には Open Publication License が適用されています。必要な部分のみコピー -し、変更を加えています (図を削除したり、Vim 6.0 以降のために更新したり、間違い -を訂正したり)。|frombook|タグが省略されていたとしても、この本からコピーしたこ -とを否定するものではありません。 - -この本を OPL で出版してくださった Steve Oualline 氏と New Riders に深く感謝し -ます。ユーザマニュアルの執筆においてとても助けられました。文章を提供してもらっ -ただけでなく、スタイルや文体も参考にさせていただきました。 - -このマニュアルの販売で収益を上げた方は、利益の一部を寄付してくださるようお願い -します。ウガンダのエイズ患者を助けてあげてください。詳しくは|iccf|をご覧くださ -い。 - -============================================================================== - -次章: |usr_02.txt| 初めての Vim - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_02.jax b/runtime.old/doc/usr_02.jax deleted file mode 100644 index 1f4abebe9..000000000 --- a/runtime.old/doc/usr_02.jax +++ /dev/null @@ -1,555 +0,0 @@ -*usr_02.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - 初めての Vim - - -この章では、Vim を使ってファイルを編集するための最低限のことを説明します。操作 -が下手でも遅くても、とにかく編集できるようになりましょう。この章に出てくるコマ -ンドはこれからの基礎になるものなので、少し時間をとって練習してください。 - -|02.1| Vim の起動方法 -|02.2| 文字の挿入 -|02.3| カーソル移動 -|02.4| 文字の削除 -|02.5| undo (取り消し) と redo (やり直し) -|02.6| 他の編集コマンド -|02.7| Vim の終了 -|02.8| ヘルプの引き方 - -次章: |usr_03.txt| カーソルの移動 -前章: |usr_01.txt| マニュアルについて -目次: |usr_toc.txt| - -============================================================================== -*02.1* Vim の起動方法 - -Vim を起動するには次のコマンドを入力します。 > - - gvim file.txt - -UNIXならコマンドプロンプトから実行できます。Microsoft Windows環境では、MS-DOS -プロンプトを開いて、入力してください。 -Vim が起動して file.txt という名前のファイルの編集が開始されます。これは新しい -ファイルなので、ウィンドウは空になっています。次のような画面が表示されます: - - +---------------------------------------+ - |# | - |~ | - |~ | - |~ | - |~ | - |"file.txt" [New file] | - +---------------------------------------+ - ("#" はカーソルの位置です) - -ティルド(~)の行は、ファイルにその行がないことを示しています。ファイルの -末尾より後ろを表示する場合にティルドが表示されます。画面の下の方に、編集中の -ファイル名は "file.txt" で、それが新しいファイルであることが表示されています。 -このメッセージの表示は一時的なもので、他のメッセージが表示されると消えてしまい -ます。 - - -VIM コマンド ------------- - -gvim は編集用のウィンドウを新しく作ります。次のコマンドを使った場合は: > - - vim file.txt - -コマンドウィンドウの中で編集できます。つまり、xterm の中で実行すれば、Vim は -xterm ウィンドウを使います。Microsoft Windows の MS-DOS プロンプトを使っている -場合も、そのウィンドウの中で編集できます。gvim でも vim でもテキストは同じよう -に表示されますが、gvimにはメニューバーなどの追加機能があります。詳しくは後で述 -べます。 - -============================================================================== -*02.2* 文字の挿入 - -Vim はモード型エディタです。モードによって挙動が変わります。一番よく使うモード -は「ノーマルモード」と「挿入モード」です。ノーマルモードでは、入力した文字は -コマンドとして扱われます。挿入モードでは、入力した文字はそのまま挿入されます。 -Vim を起動した直後はノーマルモードになっています。挿入モードに入るには、"i" コ -マンドを入力します (i は Insert の意)。これで、文章を入力できるようになります。 -入力した文章はファイルに挿入されます。入力を間違えても心配する必要はありませ -ん。後から修正できます。プログラマーのリメリック(詩の一種)を入力して見ましょ -う。次のように入力します: > - - iA very intelligent turtle - Found programming UNIX a hurdle - -"turtle" を入力した後で <Enter> キーを押して改行します。最後に <Esc> キーを押 -して挿入モードを終了し、ノーマルモードに戻ります。このとき、Vim ウィンドウには -次のような二行が表示されています。 - - +---------------------------------------+ - |A very intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - | | - +---------------------------------------+ - - -今は何モード? -------------- - -現在のモードを確認できるようにするには、次のコマンドを入力してください。 > - - :set showmode - -":" (コロン記号) を入力すると、カーソルがウィンドウの最下段に移動します。ここ -はコロンコマンド (":"で始まるコマンド) を入力する場所です。<Enter> キーを押す -とコマンドが実行されます (コロンで始まるコマンドは全てこの方法を使います)。 -さて、"i" コマンドを入力すると、ウィンドウの最下段に "― 挿入 ―" という表示が -現れます。これは、あなたが挿入モードにいることを示しています。 - - - +---------------------------------------+ - |A very intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - |― 挿入 ― | - +---------------------------------------+ - -<Esc> を押すとノーマルモードに戻り、最下段は空白になります。 - - -トラブルを避ける ----------------- - -Vim を使い始めたときはモードを混同しがちです。現在のモードを忘れてしまったり、 -知らないうちに間違ってモードを変更してしまったりすることがあります。どのモード -にいる場合でも <Esc> を押せばノーマルモードに戻れます。<Esc> を二回押さなけれ -ばならないときもあります。ノーマルモードで <Esc> を押すとビープ音が鳴るので、 -その場合は既にノーマルモードにいるということです。 - -============================================================================== -*02.3* カーソル移動 - -ノーマルモードでは、次のキーを使って移動できます: - - h 左 *hjkl* - j 下 - k 上 - l 右 - -最初はでたらめなコマンドに思えるかもしれません。"l" キーで 右 (right) に移動す -るなんておかしいですね。しかしこれには合理的な理由があります。エディタで最もよ -く使うのはカーソル移動であり、これらのキーは右手のホームポジションにあるので -す。つまり、(特に 10 本の指を使ってタイプする人が) 最も速く打てる場所にコマン -ドが配置されています。 - - Note: - カーソルは矢印キーでも移動できます。しかし、ホームポジションから手を離 - さなければならないので、編集速度は落ちてしまいます。一時間に数百回も移 - 動することを考えると、結構な時間が消費されることになります。 - また、矢印キーが無いキーボードや、矢印キーの配置場所がおかしいキーボー - ドもあります。hjkl の使い方を知っていれば、そのような場合でも安心です。 - -コマンドを覚えるには、"h" は左にあって、"l" は右にあって、"j" は下を指してい -る、とでも覚えてください。図で示します: > - - k - h l - j - -移動コマンドを覚える一番の方法は使ってみることです。"i" コマンドを使って適当な -テキストを入力し、hjkl キーを使って動き回り、いろんな場所に文字を挿入してみて -ください。<Esc> キーを押してノーマルモードに戻るのを忘れずに。|vimtutor| を使っ -て練習してみるのもいいでしょう。 - -日本のユーザーへ、Hiroshi Iwataniさんは次のような提案をしています。 - - Komsomolsk - ^ - | - Huan Ho <--- ---> Los Angeles - (Yellow river) | - v - Java (ジャワ島。プログラミング言語のあれではない) - -============================================================================== -*02.4* 文字の削除 - -文字を削除したい場合は、文字の上にカーソルを移動して "x" を押します。(これはタ -イプライタを使っていた古い時代に、消したい文字の上に "xxxxxx" と印字していたの -と同じ感覚です)。例えば、例文の一行目にカーソルを移動して、xxxxxxx (xを7つ) 打 -ち、"A very " を消してみましょう。その結果は次のようになります: - - +---------------------------------------+ - |intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - | | - +---------------------------------------+ - -さて、新しいテキストを挿入してみましょう。例えば次のように入力します: > - - iA young <Esc> - -"i" で挿入を開始し、"A young " を入力しています。最後に <Esc> キーを押して挿入 -モードを抜けます。結果は次のようになります。 - - +---------------------------------------+ - |A young intelligent turtle | - |Found programming UNIX a hurdle | - |~ | - |~ | - | | - +---------------------------------------+ - - -行削除 ------- - -行全体を消すには "dd" コマンドを使います。行が消された場所は、それ以降の行を上 -げることで詰められます。 - - +---------------------------------------+ - |Found programming UNIX a hurdle | - |~ | - |~ | - |~ | - | | - +---------------------------------------+ - - -改行を取る ----------- - -Vim では複数の行を一行にまとめることができます。これは行と行の間にある改行文字 -を削除するのと同じです。それには "J" コマンドを使います。 -例えば、次の二行があるとします: - - A young intelligent ~ - turtle ~ - -最初の行にカーソルを動かし "J" を押すと次のようになります: - - A young intelligent turtle ~ - -============================================================================== -*02.5* undo (取り消し) と redo (やり直し) - -間違ってテキストを削除してしまった場合、同じ内容を入力し直すこともできますが、 -もっと簡単な方法があります。"u" コマンドで直前の編集結果を undo (取り消し) -できます。例えば、"dd" コマンドで削除した行を、"u" コマンドで元に戻せます。 -もう一つ例を示します。カーソルを一行目の A に移動して: - - A young intelligent turtle ~ - -xxxxxxx とタイプし、"A young" を削除します。結果は次のようになります: - - intelligent turtle ~ - -"u" で直前の削除が取り消されます。最後に削除されたのは g なので、その文字が復 -活します。 - - g intelligent turtle ~ - -もう一度 "u" を実行すると、さらに一つ前に削除された文字が復活します: - - ng intelligent turtle ~ - -次の "u" コマンドでは u が復活し、次々と元に戻すことができます: - - ung intelligent turtle ~ - oung intelligent turtle ~ - young intelligent turtle ~ - young intelligent turtle ~ - A young intelligent turtle ~ - - Note: - "u" を二回押したときに、最初の状態に戻ってしまった場合は、Vi 互換モー - ドが設定されています。|not-compatible| を参照して正しく設定してくださ - い。 - このマニュアルでは「Vim方式」の使い方を前提にしています。古き良き時代 - の Vi 方式を使いたい場合は、細かい部分でマニュアルの説明と違うことがあ - るので注意してください。 - - -redo (やり直し) ---------------- - -undo し過ぎてしまった場合は、CTRL-R (redo) を押すことで、直前のコマンドを -取り消せます。つまり、undo を undo します。実際に二回 CTRL-R を押してみましょ -う。"A "の二文字が消えます。 - - young intelligent turtle ~ - -undo コマンドには特別なバージョン、"U" (行 undo) コマンドがあります。行 undo -コマンドは直前に編集した行のすべての変更を取り消します。このコマンドは、二回実 -行すると、直前の "U" が取り消されます。 - - A very intelligent turtle ~ - xxxx "very"を削除 - - A intelligent turtle ~ - xxxxxx "turtle"を削除 - - A intelligent ~ - "U" で行全体を元に戻す - A very intelligent turtle ~ - "u" で "U" を undo - A intelligent ~ - -"u" が undo で、 CTRL-R が redo であるのに対し、"U" コマンドはそれ自身が変更コ -マンドです。ちょっとわかりにくいかも知れませんが心配はいりません。"u" と -CTRL-R があればどんな場合でも大丈夫だ、ってことです。詳細は |32.2| にあります。 - -============================================================================== -*02.6* 他の編集コマンド - -Vim には文章を編集するための数多くのコマンドがあります。下記、または|Q_in|を参 -照してください。ここでは頻繁に使うものだけを述べます。 - - -追記 (APPENDING) ----------------- - -"i" コマンドはカーソルの前に文字列を挿入しますが、行末に文字を追加したいときは -はどうすればいいでしょうか? それにはカーソルの後ろに文を挿入できないといけませ -ん。"a" (append) コマンドで追記できます。 -例えば、次の行を - - and that's not saying much for the turtle. ~ -このように変更したいとします - and that's not saying much for the turtle!!! ~ - -まずカーソルを行末のピリオドの上に動かし、"x" でピリオドを消します。この時カー -ソルは行末の turtle の "e" の上にあります。ここで、次のコマンドを入力します。 -> - a!!!<Esc> - -これで turtle の後ろに三つの "!" 記号が追加されます: - - and that's not saying much for the turtle!!! ~ - - -新しい行を開く --------------- - -"o" コマンドを使うと、カーソルの下に新しい空の行が作成され、挿入モードに入りま -す。そのため、そのまま新しい行の文章を入力できます。 -以下のような二行があり、カーソルが一行目のどこかにあるとします: - - A very intelligent turtle ~ - Found programming UNIX a hurdle ~ - -"o" コマンドを実行し、テキストを入力すると: > - - oThat liked using Vim<Esc> - -次のような結果になります: - - A very intelligent turtle ~ - That liked using Vim ~ - Found programming UNIX a hurdle ~ - -"O" コマンド (大文字) を使うと、カーソルの上に空行を作成できます。 - - -カウンタを使う --------------- - -例えば、9 行上に移動したい場合、"kkkkkkkkk" とタイプすることもできますが、"9k" -コマンドでも同様に移動できます。実はほとんどのコマンドには回数を指定できます。 -例えば上記の例では、"a!!!<Esc>" で三つの "!" 記号を追加しましたが、これは -"3a!<Esc>" と入力することもできます。最初の 3 はコマンドを三回実行することを指 -定しています。同様に、三文字削除したい場合は "3x" を使います。カウントは必ず対 -象となるコマンドの前に指定してください。 - -============================================================================== -*02.7* Vim の終了 - -Vim を終了するには "ZZ"コマンドを使います。ファイルが保存され、Vim が終了しま -す。 - - Note: - 他の多くのエディタと違い、Vim は自動的にバックアップを作成しません。 - "ZZ" と打つとファイルが上書きされるため、元に戻す方法はありません。バッ - クアップファイルを作成するように設定することもできます。|07.4|を参照し - てください。 - - -変更を破棄する --------------- - -ファイルを編集した後で、元の方が良かったと気づくことがあると思います。心配はい -りません。「全部投げ捨てて終了する」コマンドがあります。 > - - :q! - -コマンドを確定するには <Enter> キーが必要ですよ。お忘れなく。 - -詳細を説明すると、このコマンドは三つの部分から成っています。":" はコマンドライ -ンモードの開始、"q" コマンドはエディタを終了するコマンド、"!" はオーバーライド -修飾詞です。 -変更を破棄するにはオーバーライド修飾詞が必要です。単に ":q" を実行した場合、エ -ラーメッセージが表示され、コマンドは実行されません: - - E37: 最後の変更が保存されていません (! で変更を破棄) ~ - -オーバーライドを指定することで、「バカげたことをしてるように見えるのはわかって -る。でもボクは大人だし、本当にそうしたいんだ」と Vim に告げているわけです。 - -Vim を終了したくない場合は、":e!" コマンドでオリジナルのファイルを再読み込みで -きます。 - -============================================================================== -*02.8* ヘルプの引き方 - -知りたいことは何でも Vim のヘルプで調べることができます。どんどん調べてくださ -い! -次のコマンドでヘルプの総合案内が表示されます: > - - :help - -ヘルプは <F1> ファンクションキーでも表示できます。キーボードに <Help> キーがあ -る場合はそれも使えます。 -":help" に引数を指定しなかった場合は総合案内が表示されます。Vim の作者はとても -賢い (いや、すごい怠け者かも) ので、ヘルプウィンドウには普通の編集ウィンドウが -使われています。ヘルプウィンドの中ではすべてのノーマルモードコマンドが使えま -す。したがって、h, j, k, l で 上下左右に移動できます。 -ヘルプウィンドウは、エディタを終了するのと同じコマンド ("ZZ") で閉じることがで -きます。この場合は、ヘルプウィンドウが閉じるだけで、Vim は終了しません。 - -ヘルプを読むと、縦棒 "|" で囲まれた文字に気づくと思います (例:|help|)。それは -ハイパーリンクです。その場所にカーソルを置いて、CTRL-] (タグジャンプ) を押す -と、そのヘルプにジャンプできます。(理由は省きますが、Vim ではハイパーリンクの -ことをタグと呼びます。CTRL-] はカーソル下の単語をタグとみなして、その場所にジャ -ンプします。) -ジャンプした後は CTRL-T (タグをポップする) で元の場所に戻れます。CTRL-O(古い -場所へのジャンプ)でも元に場所に戻れます。 - -ヘルプ画面の最上部に*help.txt*という表記があります。"*" で囲まれた名前はヘルプ -システムのタグ(ハイパーリンクの飛び先)を定義するために使われています。 -タグの使い方の詳細は |29.1| を参照してください。 - -特定のヘルプ項目を見るには次のコマンドを使います: > - - :help {subject} - -例えば "x" コマンドのヘルプを見るには次のようにします: > - - :help x - -文字の削除方法を調べるには次のようにします: > - - :help deleting - -Vim のコマンド一覧を見たい場合は次のようにします: > - - :help index - -コントロール文字コマンド (例えば CTRL-A) のヘルプを見るには、"CTRL-" に続けて -その文字を指定します: > - - :help CTRL-A - -Vim にはいろんなモードがあります。特に指定がなければノーマルモードコマンドのヘ -ルプが表示されます。例えば、次のコマンドでノーマルモードの CTRL-H コマンドのヘ -ルプが表示されます: > - - :help CTRL-H - -他のモードを指定するにはプレフィクスを付けてください。例えば、挿入モードのヘル -プが見たいときには、"i_"を付けます。CTRL-H の場合なら次のようになります: > - - :help i_CTRL-H - -Vim を起動するときにはコマンドライン引数を指定できます。引数は先頭が "-" で始 -まります。例えば、"-t" 引数の意味を調べるには次のコマンドを使います: > - - :help -t - -Vim にはオプションがたくさんあり、それを設定することでカスタマイズができます。 -オプションのヘルプを見るには、アポストロフィでそれを囲ってください。例えば、 -'number'オプションの意味を調べるには次のコマンドを使います: > - - :help 'number' - -モードのプレフィクス一覧は |help-context| を参照してください。 - -特殊キー不等号で囲んで表記します。例えば、挿入モードの上矢印キーのヘルプを見る -には次のコマンドを使います: > - - :help i_<Up> - -例えば次のようなエラーメッセージが表示された場合: - - E37: 最後の変更が保存されていません (! で変更を破棄) ~ - -行頭のエラーIDを使えばヘルプを検索できます: > - - :help E37 - -サマリー: *help-summary* > - - :help -< 一般的なヘルプを表示します。下へスクロールすると、全てのヘルプ - ファイルの一覧を表示します。ここには独自に追加された、Vim標準 - には添付されていないヘルプファイルも含まれます。 > - :help user-toc.txt -< ユーザーマニュアルの目次を表示します。 > - :help :subject -< Exコマンド"subject"のヘルプ。例えば次のようなもの: > - :help :help -< ヘルプの探し方のヘルプ。 > - :help abc -< ノーマルモードコマンド"abc"のヘルプ。 > - :help CTRL-B -< ノーマルモードコマンドにおけるキー<C-b>のヘルプ。 > - :help i_abc - :help i_CTRL-B -< インサートモードにおける特定のキーのヘルプ。 > - :help v_abc - :help v_CTRL-B -< ビジュアルモードにおける特定のキーのヘルプ。 > - :help c_abc - :help c_CTRL-B -< コマンドラインモードにおける特定のキーのヘルプ。 > - :help 'subject' -< オプション'subject'のヘルプ。 > - :help subject() -< 関数"subject"のヘルプ。 > - :help -subject -< コマンドラインオプション"-subject"のヘルプ。 > - :help +subject -< コンパイル時機能"+subject"のヘルプ。 > - :help EventName -< 自動コマンドイベント"EventName"のヘルプ。 > - :help digraphs.txt -< ヘルプファイル"digraph.txt"のトップ。 - 他のヘルプファイルについても同様。 > - :help pattern<Tab> -< "pattern"で始まるヘルプタグを検索。<Tab>を繰り返し押すと他の候 - 補を検索する。 > - :help pattern<Ctrl-D> -< "pattern"にマッチするヘルプタグを全て表示する。 > - :helpgrep pattern -< 全ヘルプファイルの全テキストからパターン"pattern"を検索し、最 - 初のマッチへジャンプする。他のマッチへジャンプするには以下のコ - マンドを使う: > - :cn -< 次のマッチへ > - :cprev - :cN -< 前のマッチへ > - :cfirst - :clast -< 最初/最後のマッチへ > - :copen - :cclose -< quickfixウィンドウを開く/閉じる。quickfixウィンドウで - <Enter>を押すと、カーソル下の要素へジャンプする。 - -============================================================================== - -次章: |usr_03.txt| カーソルの移動 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_03.jax b/runtime.old/doc/usr_03.jax deleted file mode 100644 index 3248ffed7..000000000 --- a/runtime.old/doc/usr_03.jax +++ /dev/null @@ -1,643 +0,0 @@ -*usr_03.txt* For Vim バージョン 7.3. Last change: 2006 Jun 21 - - VIM USER MANUAL - by Bram Moolenaar - - カーソルの移動 - - -文の入力したり削除したりするには、カーソルを目的の場所に動かさなくてはなりませ -ん。Vim にはカーソル移動のためのコマンドがたくさんあります。本章では、その中で -も重要なコマンドの使い方を述べます。コマンドの一覧は |Q_lr| を参照してくださ -い。 - -|03.1| 単語ごとの移動 -|03.2| 行頭、行末への移動 -|03.3| 文字への移動 -|03.4| カッコの対応 -|03.5| 特定の行への移動 -|03.6| 現在の場所を表示 -|03.7| スクロール -|03.8| 簡単な検索 -|03.9| 簡単なパターン検索 -|03.10| マークの使用 - -次章: |usr_04.txt| 簡単な編集 -前章: |usr_02.txt| 初めての Vim -目次: |usr_toc.txt| - -============================================================================== -*03.1* 単語ごとの移動 - -カーソルを 1 単語先に進めるには、"w"コマンドを使います。他の Vim コマンドもそ -うですが、複数の単語を一気に進めるために数値 (カウンタ) による回数指定ができま -す。例えば、"3w"では 3 単語進みます。図で示すと次のようになります。 - - This is a line with example text ~ - --->-->->-----------------> - w w w 3w - -"w" で次の単語の先頭に移動します。既にカーソルが単語の先頭にある場合は、その次 -の単語の先頭に移動します。 -逆に "b" コマンドで直前の単語の先頭に戻ります。 - - This is a line with example text ~ - <----<--<-<---------<--- - b b b 2b b - -"e" コマンドで次の単語の末尾に移動します。"ge" で直前の単語の末尾に移動します。 - - This is a line with example text ~ - <- <--- -----> ----> - ge ge e e - -カーソルが行末の単語にある場合、"w" コマンドは次の行の最初の単語に進みます。こ -れを使うと "l" よりもずっと速く文章の中を動けます。"b" は "w" の逆方向に同じ -ルールで動きます。 - -単語は"."や"-"、")"といったアルファベット以外の文字で区切られます。Vimが何を単 -語とみなすかは、'iskeyword'オプションの設定で変更できます。 -空白を区切りとした単語(WORD)を移動することもできます。これは普段意識する単語 -(word)とは若干違うため、大文字を使っています。WORD単位で動くコマンドは全部大 -文字です。図で示すと次の通りです。 - - ge b w e - <- <- ---> ---> - This is-a line, with special/separated/words (and some more). ~ - <----- <----- --------------------> -----> - gE B W E - -小文字と大文字のコマンドを両方使うと、文章中をより素早く動けるようになります。 - -============================================================================== -*03.2* 行頭、行末への移動 - -"$"コマンドでカーソルを行末に移動します。キーボードに<End>キーがあれば、それも -同じ意味で使えます。 - -"^"コマンドでカーソルを行頭から最初の非空白文字に移動します。"0"(数字のゼロ)コ -マンドは行頭に移動します。<Home>キーも同じです。図で示しましょう。 - - ^ - <------------ - .....This is a line with example text ~ - <----------------- ---------------> - 0 $ - -("....." は空白文字があることを示します) - -"$"コマンドでも他の移動コマンドのようにカウンタの指定ができます。行末への移動 -を何度やっても意味がありませんので、"$"コマンドでのカウンタは他の行の行末への -移動の意味になります。例えば、"1$"は"$"と同じで現在行の行末への移動ですが、 -"2$"は次の行末への移動、"3$"は 2 行下の行末への移動、となります。 -"0"コマンドは回数指定できません。これは、"0"自身が回数指定の一部になってしまう -からです。"^"に回数指定をした場合は単に無視されます。 - -============================================================================== -*03.3* 文字への移動 - -特に便利な移動コマンドはいくつかありますが、一文字検索コマンドもその一つです。 -コマンド "fx" はその行にある文字 x を前方検索します。(f は Find の意味です)。 -例えば、次の文の先頭にカーソルがあり、 human の h に移動したいとします。"fh"コ -マンドを実行すると、'h'の上にカーソルが進みます。 - - To err is human. To really foul up you need a computer. ~ - ---------->---------------> - fh fy - -続いて、"fy"コマンドで really の y まで移動できます。 -これもカウンタ指定ができます。例えば次の文の foul の l に進むには "3fl" です。 - - To err is human. To really foul up you need a computer. ~ - ---------------------> - 3fl - -"F"コマンドで左向きに検索できます。 - - To err is human. To really foul up you need a computer. ~ - <--------------------- - Fh - -"tx"コマンドは"fx"コマンドに似た動きをしますが、検索した文字の上ではなく、その -直前で止まります。(tはToの意味です) -このコマンドの逆方向版は"Tx"です。 - - To err is human. To really foul up you need a computer. ~ - <------------ -------------> - Th tn - -この 4 つのコマンドは ";" コマンドで繰り返せます。反対方向に繰り返すには "," -コマンドです。このコマンドは、カーソルが他の行に移動することはありません。文が -次行に続いていても移動しません。 - -検索をしようとして、コマンドを打ち間違うこともあるでしょう。例えば、逆方向検索 -のつもりで("F"と打つべきところを)"f"と打ってしまったとしましょう。コマンドの実 -行を取り止めるには<Esc>を押します。"f<Esc>"は<Esc>を探すのではなく、コマンドを -キャンセルします。Note:<Esc>は検索に限らず、ほとんどのコマンドをキャンセルする -のに使えます。 - -============================================================================== -*03.4* カッコの対応 - -プログラムを書いていると、入れ子になった () を書くことがよくあります。そのよう -な場合には、"%" コマンドがとても便利です。このコマンドを使うと対応するカッコに -移動できます。カーソルが "(" の上なら対応する ")" に、")" の上なら対応する "(" -に移動できます。 - - % - <-----> - if (a == (b * c) / d) ~ - <----------------> - % - -このコマンドは [] や {} のペアでも機能します。(これは'matchpairs'オプションで -定義できます) - -カーソルがカッコの上にない場合、"%"はまず前方検索をしてカッコを探します。上記 -の例文で行頭にカーソルがあった場合、"%" は前方検索をして "(" を見つけ、それか -ら、対応するカッコ ")" に移動します。 - - if (a == (b * c) / d) ~ - ---+----------------> - % - -============================================================================== -*03.5* 特定の行に移動 - -CやC++のプログラマであれば、次のようなパターンのエラーメッセージはおなじみで -しょう。 - - prog.c:33: j undeclared (first use in this function) ~ - -何か33行目に修正しないといけない点がありそうです。では、どうやって33行目に移動 -しましょうか?"9999k"などとしてファイルの先頭まで移動してから、"32j"で32行下に -移動するやり方もあります。確かに目的は達しますが、あまりいい方法とは思えませ -ん。そこで"G"というコマンドを使います。このコマンドにカウンタを指定すると、そ -の行にジャンプできます。例えば、"33G"とすれば、33行目にジャンプできます。(実は -コンパイラのエラーリストを使ってもっと簡単に移動する方法もあります。 -|usr_30.txt| の":make"コマンドをご覧ください。) -カウンタを指定しなかった場合はファイルの最終行にジャンプします。ファイルの先頭 -にジャンプするには"gg"を使います。"1G"でも同じですが、ちょっと打ちにくいですか -ら。 - - | first line of a file ^ - | text text text text | - | text text text text | gg - 7G | text text text text | - | text text text text - | text text text text - V text text text text | - text text text text | G - text text text text | - last line of a file V - -特定行に移動するもう一つの方法はカウンタ付きの"%"コマンドです。例えば、"50%" -でファイルの真ん中に移動できます。"90%"ならファイルのほぼ最後(90%の場所) に移 -動します。 - -以上述べたのは、画面上に見えているかどうかに関係なくファイルの特定行に移動した -い場合のコマンドでした。では画面上に見えている行に移動したい場合はどうしましょ -うか?そういう時に使える 3 つのコマンドを下図に示します。 - - +---------------------------+ - H --> | text sample text | - | sample text | - | text sample text | - | sample text | - M --> | text sample text | - | sample text | - | text sample text | - | sample text | - L --> | text sample text | - +---------------------------+ - -("H"はHome、"M"はMiddle、"L"はLastの意味です) - -============================================================================== -*03.6* 現在の場所を表示 - -ファイル中の現在の場所を知るには、次の 3 つの方法があります。 - -1. CTRL-Gコマンド。次のようなメッセージが表示されます。('ruler'オプション - がオフの場合) - - "usr_03.txt" line 233 of 650 --35%-- col 45-52 ~ - - 編集中のファイル名、カーソルのある行番号、全体の行数、ファイル全体を - 通してのパーセント、カーソル桁位置、を表示します。 - 場合によっては、カーソル桁位置が 2 つに分けて表示されます。例えば、 - "col 2-9" の場合、カーソルは 2 文字目にあります。2 文字のうち、1 文字がタ - ブ文字で、8 文字分で表示されているため、画面上では 9 桁目にある、というこ - とです。 - -2. 'number'オプションを設定する。行頭に行番号が表示されるようになります: > - - :set number -< - オプションをオフに戻すには: > - - :set nonumber -< - 'number'は論理値オプションなので、オプション名の先頭に"no"をつければオフに - できます。論理値オプションにはオンかオフの 2 つの状態しかありません。 - Vimには多数のオプションがあります。論理値オプションの他に、数値オプション - と文字列オプションがあります。それらのオプションの設定方法はそのうち説明し - ます。 - -3. 'ruler'オプションを設定する。現在のカーソル位置が、Vimウィンドウの右下隅に - 表示されるようになります: > - - :set ruler -< -'ruler' は表示に場所を取らないので、画面を広く使えます。 - -============================================================================== -*03.7* スクロール - -CTRL-U コマンドで画面の半分だけ下にスクロールします。窓を通してテキストを見て -いて、その窓を高さの半分だけ上に動かす、と考えてください。窓が上に動き、さっき -より上の位置のテキストが表示されます。どっちが上でどっちが下かわかりにくいかと -思いますが、気にすることはありません。みんな同じように悩むことですから。 -CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが画面の半分だけスクロール -することになります。 - - +----------------+ - | some text | - | some text | - | some text | - +---------------+ | some text | - | some text | CTRL-U --> | | - | | | 123456 | - | 123456 | +----------------+ - | 7890 | - | | +----------------+ - | example | CTRL-D --> | 7890 | - +---------------+ | | - | example | - | example | - | example | - | example | - +----------------+ - -1 行だけスクロールするにはCTRL-E(スクロールアップ)とCTRL-Y(スクロールダウン) -を使います。(MS-Windows互換のキーマップをお使いの場合、CTRL-Yはスクロールでは -なく、redo コマンドとなります) - -1 画面分スクロールするにはCTRL-Fを使います(2行は重複します)。逆方向へのスク -ロールはCTRL-Bコマンドを使います。CTRL-FはForward、CTRL-BはBackward、ですから -覚えやすいでしょう。 - -"j" で何行も下に移動して、カーソルが画面の最下段にあるとします。カーソル前後の -行を表示したい場合は "zz" コマンドを使います。 - - +------------------+ +------------------+ - | some text | | some text | - | some text | | some text | - | some text | | some text | - | some text | zz --> | line with cursor | - | some text | | some text | - | some text | | some text | - | line with cursor | | some text | - +------------------+ +------------------+ - -"zt" コマンドでカーソル行を画面の 1 行目として表示できます。"zb" コマンドなら -画面の最下段です。これ以外にもいくつかスクロールコマンドがあります。|Q_sc|を参 -照してください。カーソル近辺の数行を常に表示させたい場合は、'scrolloff'オプショ -ンを使ってください。 - -============================================================================== -*03.8* 簡単な検索 - -文字列を検索するには"/string"コマンドを使います。例えば、"include"という単語 -を探したいのであれば、次のように使います。 > - - /include - -"/"を押すと、コマンドラインモードのときのように、カーソルがVimウィンドウの最下 -段に移動します。そこで検索したい単語を入力します。入力した文字を訂正するには、 -バックスペースキー (左矢印 または <BS>) を使います。必要に応じて<Left>や -<Right>の矢印キーを使ってください。 -<Enter>を押すとコマンドが実行されます。 - - Note: - 文字のうち、 .*[]^%/\?~$ には特別な意味があります。検索時にこれらを - 使う場合はその文字の直前に \ を置いてください。これは後(|03.9|の - 最後)で述べます。 - -同じ文字列をもう一度探したい場合には"n"コマンドを使います。今のカーソル位置 -の後ろにある#includeを探すには次のコマンドを使います。 > - - /#include - -次に"n"を数回押すと、順々に #include にジャンプします。移動したい場所が何個目 -かわかっているなら、カウンタも使えます。例えば、"3n"なら 3 つ目の #include を -探します。"/" にはカウンタを指定できません。 - -"?"コマンドは"/"と同じですが、逆方向に検索します。 > - - ?word - -"N"コマンドは直前の検索とは反対の方向に検索を繰り返します。"/"の後で"N"を使う -と後方検索になり、"?"の後で"N"を使うと前方検索になります。 - - -大文字/小文字の無視 -------------------- - -普通は探したい文字列の大文字/小文字を正確に指定しなければなりません。大文字と -小文字を区別したくないのであれば、'ignorecase'オプションを設定します。 > - - :set ignorecase - -これで、"word"を検索すると、"Word"も"WORD"もヒットします。大文字/小文字を区 -別するように戻すのは次のコマンドです。 > - - :set noignorecase - - -ヒストリ(履歴) --------------- - -次のような3つの検索を行ったとします。 > - - /one - /two - /three - -さて、"/" だけを入力し、まだ <Enter> を押さないでください。<Up>(上矢印キー) -を押すと、コマンド行に /three と表示されます。ここで <Enter> を押すと、 -"three"が検索されます。<Enter>を押さずに<Up>を押すとコマンド行には"/two"と表示 -されます。さらに<Up>を押すと"/one"となります。 -同じように<Down>キーを使って逆方向に検索ヒストリを移動できます。 - -以前に使ったパターンを覚えていて、それをまた使いたい場合には、そのパターンの先 -頭文字を入力してから <Up> を押してください。上の例で言えば、"/o<Up>"と入力する -と、コマンドラインに"/one"と表示されます。 - -":"で始まるコマンドにもヒストリがあります。以前のコマンドを呼び出して、再実行 -できます。検索用ヒストリと":"コマンドヒストリは分かれています。 - - -文章中の単語の検索 ------------------- - -"TheLongFunctionName" という単語が文章中にあり、次に現れる場所を探したいと -します。もちろん、"/TheLongFunctionName"として検索もできますが、たくさんの打鍵 -が必要です。それに、打ち間違えてしまうとうまく検索できません。 -もっと簡単な方法があります。探したい単語の上にカーソルを置いて、"*"コマンドを -使うのです。カーソル位置の単語が抜き出され、それが検索文字列として使われます。 -"#"コマンドは同じことを逆方向に実行します。このコマンドもカウンタが指定でき -ます。例えば、"3*"はカーソル位置の単語が 3 回目に現われる場所を探します。 - - -単語全体を一致させる検索 ------------------------- - -"/the"と検索を行うと、"there"などもヒットします。"the"で終わる単語だけを探 -したい場合には次のようにします。 > - - /the\> - -"\>"というのは特別なマーカで、単語がここで終わっている時だけヒットします。 -同じように"\<"は単語がここで始まっている時にだけヒットします。つまり、"the" -という単語だけを探したい場合は、次のようにします。 > - - /\<the\> - -これだと、"there"とか"soothe"にはヒットしません。なお、"*"と"#"コマンドは -上の「単語の先頭」と「単語の末尾」マーカを使って、完全に一致する単語だけを -探します。(単語の一部として検索したい時は"g*"と"g#"コマンドを使います) - - -検索結果の強調表示 ------------------- - -プログラムの編集中に、"nr"という変数を見つけ、その変数がどこで使われているか -を知りたいとします。"nr"の上にカーソルを移動して、"*"と"n"コマンドで片っ端 -から探すのもいいですが、他にも方法があります。次のコマンドを入力してください。 > - - :set hlsearch - -"nr"を検索すると、ヒットした全てのパターンが強調表示されます。これなら余計なコ -マンド入力が必要ないので、変数の使用箇所を確認したいときには便利です。 -このオプションは次のコマンドでオフにできます。 > - - :set nohlsearch - -さて上のやり方では、検索を行うたびに、いちいちオプションの切替えが必要になりま -す。単に強調表示を止めるだけなら、次のコマンドを使ってください。 > - - :nohlsearch - -これならオプションはオフになりません。強調表示だけを取り消せます。次に検索コマ -ンドを実行すると、ふたたび強調表示されます。"n"や"N"を使ったときも同様です。 - - -検索のチューニング ------------------- - -検索の挙動を変更するオプションがいくつかあります。重要なのは次のものです: > - - :set incsearch - -これはいわゆるインクリメンタルサーチです。検索したい文字を入力している間にも -ヒットする文字列を探して画面に表示してくれます。これはヒットするパターンがある -かどうかのチェックに使えます。<Enter>を押すと実際にその場所にカーソルがジャン -プします。 -> - :set nowrapscan - -ファイルの末尾まで進んだら(後方検索の場合はファイルの先頭まで戻ったら)検索を停 -止します。'wrapscan'オプションの初期設定はオンです。オンの場合は、ファイルの末 -尾まで進んだら先頭に戻って検索を続けます。 - - -ところで... ------------ - -これまでに出てきたオプションを毎回設定したい場合は、スタートアップファイルにそ -のコマンドを書いてください。 -|not-compatible|の説明のとおりにファイルを編集するか、次のコマンドを入力して、 -ファイルがどこにあるか確認してください。 > - - :scriptnames - -ファイルを編集するには、例えば次のようにします。 > - - :edit ~/.vimrc - -そして、オプションを設定するためにVim上で実行したのと同じコマンドを書き加えま -す。例えば、次のようにします。 > - - Go:set hlsearch<Esc> - -"G" でファイルの末尾まで移動し、"o" で新しい行を挿入して ":set" コマンドを書く -ための空行を作っています。挿入モードの終了は<Esc>です。そして、ファイルを保存 -しましょう。 > - - ZZ - -次にVimを起動すると、'hlsearch'オプションが最初からオンになっています。 - -============================================================================== -*03.9* 簡単なパターン検索 - -Vimでは、検索に正規表現(regular expressions)を使います。 -正規表現というのは検索パターンを指定するための、極めてパワフルでシンプルな方法 -です。残念ながら、これの実力を発揮させるには少々苦労していただくことになりま -す。というのも、正規表現はちょっとばかりトリッキーなんです。 -ここでは本当に基本的なものだけを述べます。パターン検索とコマンドについては -27章|usr_27.txt|でもっと詳しく説明します。完全な説明は|pattern|にあります。 - - -行頭と行末 ----------- - -"^"は行頭を示します。英語(ASCII)キーボードでは 6 のキーに、日本語(JIS)キーボー -ドでは 0 のキーの 2 つ右側に刻印してあります。 -例えば、"include"というパターンは 行のどこかに include という単語を含んでいれ -ば、ヒットします。一方、"^include" は行頭にある include にだけマッチします。 -"$"は同様に行末にヒットします。ですから、パターン"was$" は、行末が was で終 -わっている場合だけヒットします。 - -下の例では、"the"にマッチする箇所を"xxx"で示しています。 - - the solder holding one of the chips melted and the ~ - xxx xxx xxx - -"/the$"の場合は次のようになります。 - - the solder holding one of the chips melted and the ~ - xxx - -"/^the"の場合はこうです。 - - the solder holding one of the chips melted and the ~ - xxx - -"/^the$"という指定もできます。この指定だと、"the"という単語だけの行にヒット -します。なお空白文字も意味を持ちます。ですから、"the "のように行末に空白文 -字を含んでいた場合は、"/the$"のパターンではヒットしません。 - - -任意の 1 文字 -------------- - -"." はあらゆる文字にヒットします。例えば、"c.m"は最初が"c"で始まり、2 文字目は -何でも良くて、3 文字目が"m"であるパターンにヒットします。例を示します。 - - We use a computer that became the cummin winter. ~ - xxx xxx xxx - - -特殊文字 --------- - -例えば"."という文字自体を探す時は、上で述べたような特殊な意味を"\"文字を -使って無効にします。 -"ter."というパターンで検索をすると、次の"xxx"の箇所でヒットします。 - - We use a computer that became the cummin winter. ~ - xxxx xxxx - -これを"ter\."で検索すると、上図の 2 つ目だけがヒットします。 - -============================================================================== -*03.10* マークの使用 - -"G"コマンドでジャンプすると、その直前のカーソル位置が記録されます。これをマー -クと呼びます。元の場所に戻るには、次のコマンドを使います。 > - - `` - -この ` は backtick とか open single-quote と呼ばれる(日本では「バッククオート」 -が多いでしょうか)ものです。 -このコマンドを 2 回実行すると、元の場所に戻ります。これは ` コマンドもジャンプ -コマンドなので、実行前の場所が記録されるためです。 - -通常、現在行以外にカーソルが動くようなコマンドを実行した場合、それをジャンプ -と呼びます。"/"や"n"もジャンプの一種です(ジャンプ先がどれだけ離れているかは -関係ありません)。逆に、文字検索である"fx"や"tx"、単語移動である"w"や"e"は -ジャンプではありません。 -"j"や"k"はカウンタを指定すればカーソルをはるか彼方に移動できますが、これも -ジャンプ扱いではありません。 - -``コマンドは 2 個所の間を交互にジャンプします。CTRL-Oコマンドはより古いマーク -(O は Older の意味です)にジャンプします。CTRL-Iはより新しいマーク("I"キーは -"O"キーのすぐ左隣りです)にジャンプします。次のコマンドを例にしましょう。 > - - 33G - /^The - CTRL-O - -まず33行目にジャンプします。次に"The"で始まる行を探します。ここでCTRL-Oを使う -と、33行目に戻ります。もう一度CTRL-Oを使うと、最初の場所に戻ります。そして、 -CTRL-Iを使うと33行目にジャンプし、さらにCTRL-Iを使うと行頭が"The"で始まる行に -ジャンプします。 - - | example text ^ | - 33G | example text | CTRL-O | CTRL-I - | example text | | - V line 33 text ^ V - | example text | | - /^The | example text | CTRL-O | CTRL-I - V There you are | V - example text - - Note: - CTRL-Iは<Tab>キーと同じです。 - -":jumps"コマンドで今までにジャンプした場所の一覧を表示できます。最後に使ったエ -ントリには">"記号がついています。 - - -名前付きマーク *bookmark* --------------- - -文章中にマークを付けることができます。"ma"コマンドで現在のカーソル位置をマーク -a に記録します。文章には 26 個 (aからzまで) のマークを付けられます。マークは -Vim が記録している位置情報です。画面に何かが表示されるわけではありません。 -マークへの移動は `{mark} コマンドを使います。{mark}はマーク文字のことです。 -マーク a に移動するには次のようにします。 -> - `a -< -'{mark}(アポストロフィ + マーク名)コマンドで{mark}を設定してある行の行頭に移動 -できます。`{mark}の場合は{mark}を設定した桁位置に移動します。 - -マーク機能はファイル中の関連している 2 箇所で作業をする場合に便利です。例えば、 -ファイルの最後の方を編集している時に、ファイルの最初の方の内容を確認する必要が -生じた場合を考えてみましょう。 -まずファイルの最初の方に移動して、マーク s (startのつもり) を付けます。 > - - ms - -次に編集したい場所に移動して、マーク e (endのつもり) を付けます。 > - - me - -これで自由に行き来ができます。ファイルの先頭に移動したい時は、次のコマンドで -ジャンプできます。 > - - 's - -ここで、 '' を使って戻ることもできますし、 'e を使って末尾のマークまでジャン -プすることもできます。 -先頭にマーク s を、末尾にマーク e を使いましたが、その名前に特別な意味はありま -せん。単に覚えやすいから使っただけです。 - -次のコマンドは設定してあるマークの一覧を表示します。 > - - :marks - -この一覧には次のような特殊なマークも表示されます。 - - ' ジャンプする直前のカーソル位置 - " 直前にファイルを編集した時のカーソル位置 - [ 直前の変更の開始位置 - ] 直前の変更の終了位置 - -============================================================================== - -次章: |usr_04.txt| 簡単な編集 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_04.jax b/runtime.old/doc/usr_04.jax deleted file mode 100644 index 87704d074..000000000 --- a/runtime.old/doc/usr_04.jax +++ /dev/null @@ -1,504 +0,0 @@ -*usr_04.txt* For Vim バージョン 7.3. Last change: 2008 Sep 06 - - VIM USER MANUAL - by Bram Moolenaar - - 簡単な編集 - - -本章では、 テキストの修正方法や他の場所への移動方法をいくつか説明します。テキ -ストを変更するための三つの基本操作方法 (オペレータとモーション、ビジュアルモー -ド、テキストオブジェクト) についても説明します。 - -|04.1| オペレータとモーション -|04.2| テキストの変更 -|04.3| 変更の繰り返し -|04.4| ビジュアルモード -|04.5| テキストの移動 -|04.6| テキストのコピー -|04.7| クリップボード -|04.8| テキストオブジェクト -|04.9| 置換モード -|04.10| 終わりに - -次章: |usr_05.txt| 設定の変更 -前章: |usr_03.txt| カーソルの移動 -目次: |usr_toc.txt| - -============================================================================== -*04.1* オペレータとモーション - -二章で学んだように、"x"は 1 文字削除するコマンドです。カウンタを使って、"4x"と -すれば 4 文字削除されます。 -"dw"コマンドで単語を削除できます。"w" が単語単位で移動するコマンドであることを -思い出してください。"d" コマンドにモーション (移動) コマンドを続けることで、現 -在の場所から、モーションコマンドで移動した場所までを削除できます。 -例えば、"4w" コマンドはカーソルを 4 単語分、動かします。ということは、"d4w"は -4 つの単語を削除するコマンドなわけです。 - - To err is human. To really foul up you need a computer. ~ - ------------------> - d4w - - To err is human. you need a computer. ~ - -モーションコマンドでカーソルが移動した場所までが削除されます。移動先の単語の先 -頭文字が削除されないのは、そのほうが便利だからです。しかし、"e" コマンドで単語 -の末尾まで移動した場合は、末尾の文字も削除したほうが便利ですよね: - - To err is human. you need a computer. ~ - --------> - d2e - - To err is human. a computer. ~ - -カーソル下の文字が範囲に含まれるかどうかは、移動に使ったコマンドによって異なり -ます。リファレンスマニュアルでは、移動先の文字が含まれないことを "exclusive" -(排他的)、含まれることを "inclusive" (包括的) と呼んでいます。 - -"$"コマンドで行末まで移動できます。"d$"コマンドならカーソル位置から行末までが -削除されます。これは包括的モーションなので行末の文字は削除処理の対象となりま -す。 - - To err is human. a computer. ~ - ------------> - d$ - - To err is human ~ - -オペレータとモーションを組み合わせるときは、最初にオペレータコマンドを入力しま -す。例えば、"d" は削除オペレータです。次に "4l" や "w" といったモーションコマ -ンドを入力します。この方法ならテキストのどんな範囲でも操作できます。 - -============================================================================== -*04.2* テキストの変更 - -"c" は「変更」オペレータです。"d" オペレータと同じように使えますが、挿入モード -に入る点が違います。例えば、"cw" は単語を変更します。正確に言うと、単語を削除 -してから挿入モードに入ります。 - - To err is human ~ - -------> - c2wbe<Esc> - - To be human ~ - -"c2wbe<Esc>" は次の部分から成ります: - - c 変更オペレータ - 2w 2 単語進む (単語が削除され、挿入モードに入る) - be この文字列を挿入する - <Esc> ノーマルモードに戻る - -勘のいい人なら、ちょっと変だと感じるかも知れません。"human" の前の空白が削除さ -れていないのです。"どんな問題に関しても単純で、明解で、間違った答えがある" と -いう格言があります。この "cw" コマンドを使った例がまさにそれです。"c" オペレー -タは "d" オペレータと全く同じように使えますが、"cw" はその例外なのです。実際に -はこれは"ce"と同じく、単語末までを変更します。ですから、単語の後ろの空白は含ま -れないのです。これはかつての Vi までさかのぼる例外です。多くの人々がこれを使っ -ているので、Vim でも不本意ながら残してあるのです。 - - -その他の変更コマンド --------------------- - -"dd" で行が削除できるのと同じように、"cc" で行全体を変更できます。ただし、イン -デント(行頭の空白類)は残されます。 - -"d$" で行末まで削除できるのと同じように、"c$" で行末まで変更できます。この機能 -は "d$" で行末まで削除してから"a"で挿入モードに入り、文を追加するのと同じです。 - - -ショートカット --------------- - -いくつかのオペレータとモーションの組合せは頻繁に使われるため、1 文字コマンドと -して用意されています。 - - x は dl (カーソル下の文字を削除) - X は dh (カーソルの左側の文字を削除) - D は d$ (行末まで削除) - C は c$ (行末まで変更) - s は cl (1文字変更) - S は cc (1行変更) - - -カウンタの使い方 ----------------- - -"3dw" も "d3w" も 3 つの単語を削除するコマンドです。細かいことが気になる方のた -めに補足しておくと、最初の例(3dw)は 1 単語削除を 3 回実行し、2 つ目の例(d3w)は -3 単語の削除を 1 度だけ実行します。2 つの違いは区別できません。カウンタを 2 個 -所で指定することもできます。例えば、"3d2w"は 2 単語の削除を 3 回繰り返し、結果 -として 6 単語が削除されます。 - - -1 文字の置き換え ----------------- - -"r" コマンドはオペレータではありません。文字が入力されるまで待機し、入力された -文字で、カーソル下の文字を置き換えます。"cl" や "s" でも同じ事ができますが、 -"r" の場合は最後に <Esc> を押す必要がありません。 - - there is somerhing grong here ~ - rT rt rw - - There is something wrong here ~ - -"r" にカウンタを指定すると、指定した数の文字がすべて、同じ文字に置き換えられま -す。 - - There is something wrong here ~ - 5rx - - There is something xxxxx here ~ - -文字を改行に置き換えたい場合は "r<Enter>"を使います。1 文字削除され、改行が挿 -入されます。ただし、改行に対してカウンタは適用されません。削除する文字にのみ適 -用されます。"4r<Enter>" は 4 文字削除し、1 つの改行を挿入します。 - -============================================================================== -*04.3* 変更の繰り返し - -"." コマンドはもっともシンプルでパワフルなコマンドの一つです。これは直前の変更 -コマンドを繰り返します。例えば、HTMLファイルの編集中に、全ての<B>タグを削除す -るとしましょう。カーソルを最初の"<"に移動し、"df>"コマンドで<B>を削除します。 -次に</B>の"<"を探し、それを削除するのに"."コマンドを使います。"."コマンドは直 -前の変更コマンド(この場合なら"df>")を実行します。他のタグの削除したければ、 -カーソルを"<"の上に置いて、"."を打てばよいのです。 - - To <B>generate</B> a table of <B>contents ~ - f< 最初の < を検索 ---> - df> > まで削除 --> - f< 次の < を検索 ---------> - . df> を繰り返し ---> - f< 次の < を検索 -------------> - . df> を繰り返し --> - -"." コマンドではすべての変更を繰り返すことができますが、 "u" (undo)、CTRL-R -(redo)、先頭が ":" のコマンド、は繰り返せません。 - -例2: 文中に何度も出てくる単語 "four" を "five" に変更したいとします。次の手順 - で変更できます。 - - /four<Enter> 最初の"four"を探す。 - cwfive<Esc> その単語を"five"に変更する。 - n 次の"four"を探す - . 直前の変更を繰り返す。 - n 次の"four"を探す - . 直前の変更を繰り返す。 - 以下繰り返し。 - -============================================================================== -*04.4* ビジュアルモード - -単純なものならオペレータ-モーション方式で簡単に変更できますが、変更する範囲に -適したコマンドを選択するのが難しいこともあります。そんなときはビジュアルモード -を使ってください。 - -ビジュアルモードに入るには "v" を押します。そしてカーソルを動かして変更したい -領域を選択します。選択中はその領域が強調表示されます。最後にオペレータコマンド -を入力します。 -例えば、単語の途中から次の単語の途中までを削除するには、次のようにします。 - - This is an examination sample of visual mode ~ - ----------> - velllld - - This is an example of visual mode ~ - -この方法なら、"l" を何回押せば目的の場所まで移動できるか? などと考える必要が -全くありません。削除する範囲を確認してから "d" を押すことができます。 - -選択した範囲を変更したくなくなった場合は <Esc> キーを押してください。ビジュア -ルモードが終了し、なにも変更されません。 - - -行選択 ------- - -行全体を選択するには "V" コマンドでビジュアルモードを開始します。行全体が選択 -されます。左右に移動しても選択範囲は変更されません。上下に移動すると、選択範囲 -が行単位で拡張されます。 -例えば、"Vjj" で 3 行を選択してみましょう。 - - +------------------------+ - | text more text | - >> | more text more text | | - 選択された行 >> | text text text | | Vjj - >> | text more | V - | more text more | - +------------------------+ - - -ブロック選択 ------------- - -四角いブロック (矩形) の範囲を変更したい場合は CTRL-V でビジュアルモードを開始 -します。このモードは表を編集するような場合に非常に便利です。 - - name Q1 Q2 Q3 - pierre 123 455 234 - john 0 90 39 - steve 392 63 334 - -例えば、中央の Q2 の列を削除するには、カーソルを "Q2" の "Q" に移動します。 -CTRL-V を押し、ブロック選択ビジュアルモードに入ります。次にカーソルを "3j" で -3 行下に動かし、"w" を押して 1 単語分右に移動します。この状態では、最後の列の -先頭が範囲に含まれているので、"h" でそれをはずします。"d" を押すと、選択範囲が -削除されます。 - - -反対側に移動 ------------- - -ビジュアルモードで選択中に、選択範囲の反対側(始点)にカーソルを動かしたいとき -は、"o" を押します (o は "other end" の意味です) 。カーソルは始点に動き、始点 -を自由に変更できるようになります。もう一度 "o" を押すと、元の終点側に戻ります。 - -ブロック選択のときは 4 隅が存在します。"o" は始点と終点を斜めに動くだけです。 -同じ行の反対側に移動するには "O" を使ってください。 - -Note: ビジュアルモードの "o" と "O" はノーマルモードのコマンドとはまったく違う -動作なので注意してください。ノーマルモードではカーソル行の上や下に空行を作る機 -能です。 - -============================================================================== -*04.5* テキストの移動 - -"d" や "x" などのコマンドで何かを削除すると、そのテキストは記録されます。"p" -コマンドを使うと、そのテキストをペースト (張り付け。Vimではこれをプットと呼び -ます) できます。 -どのように動くかを見てみましょう。まず、削除したい行にカーソルを移動し、"dd" -コマンドでその行を削除します。次に、プットしたい場所にカーソルを動かして "p" -を押します。先ほど削除した行がカーソルの下に挿入されます。 - - 最初 削除後 プット後 - a line a line a line - line 2 dd line 3 p line 3 - line 3 line 2 - -行全体を削除したので、"p" コマンドにより行が挿入されました。行の一部 (単語な -ど) を削除した場合は、"p"コマンドはカーソルの直後にそれがプットされます。 - - Some more boring try text to out commands. ~ - ----> - dw - - Some more boring text to out commands. ~ - -------> - welp - - Some more boring text to try out commands. ~ - - - -その他のプット --------------- - -"P" コマンドは "p" と同じですが、カーソルの前にプットします。直前に"dd"コマン -ドで行を削除したなら、カーソルの上にその行がプットされます。"dw" で単語を削除 -した場合は、カーソルの直前にプットされます。 - -プットは何回でも好きなだけ繰り返せます。同じ文が毎回使われます。 - -"p"も"P"もカウンタを指定できます。指定しただけ、プット処理が繰り返されます。例 -えば、"dd"の後に "3p" を実行すると、削除した行のコピーが 3 つプットされます。 - - -2 文字の入れ換え ----------------- - -入力しているときに、指が頭を追い越してしまうことがしばしばあります。その結果、 -"the" を "teh" とタイポ (打ち間違い) したりすることがあります。Vim ではこの種 -の間違いを簡単に修正できます。カーソルを "teh" の "e" の上に置いて、"xp" と打 -てばよいのです。"x" で "e" の文字を削除してレジスタに入れ、"p" で ("h"の上にあ -る) カーソル の後ろにレジスタ内容をプットするのです。 - - teh th the ~ - x p - -============================================================================== -*04.6* テキストのコピー - -テキストを別の場所にコピーするには、それを削除して、"u" で削除を取り消し、他の -場所で "p" を使いプットすることもできますが、ヤンク (yank) を使えばもっと簡単 -です。"y" オペレータで文字列をレジスタにコピーできます。その文字列は "p" コマ -ンドでプットできます。 -コピーのことを Vim ではヤンクと呼びます。文字 "c" は既に変更オペレータのために -使われていたので "y" を使うことになったわけですが、"y" キーを覚えやすくするた -めにコピー操作をヤンク (yank) と読んでいます。 - -"y" はオペレータなので、"yw" とすれば単語をヤンクできます。カウンタも当然指定 -できます。2 単語をヤンクするには、"y2w" とします。例を示しましょう。 - - let sqr = LongVariable * ~ - --------------> - y2w - - let sqr = LongVariable * ~ - p - - let sqr = LongVariable * LongVariable ~ - -"yw" は単語の後の空白まで含まれるので注意してください。それが嫌なら、"ye" を -使ってください。 - -"yy" コマンドは "dd" が行削除するのと同様に、行全体をヤンクします。ただ、"D"が -行末まで削除するのに対して、"Y" は "yy" と同じ動きになります。この点は気をつけ -てください。行末までヤンクしたい時には "y$" を使ってください。 - - a text line yy a text line a text line - line 2 line 2 p line 2 - last line last line a text line - last line - -============================================================================== -*04.7* クリップボード - -GUI版の Vim (gvim) を使っている場合は、[編集] メニューに [コピー] コマンドがあ -ります。ビジュアルモードで文字列を選択してから、メニューの [編集]-[コピー] を -使ってください。選択文字列がクリップボードにコピーされるので、それを他のプログ -ラムにペーストできます。もちろん Vim 自身でも使えます。 - -他のアプリケーションでクリップボードに文字列をコピーすれば、Vim の [編集]-[貼 -り付け] メニューでそれをペーストできます。これはノーマルモードでも挿入モードで -も機能します。ビジュアルモードでは、選択文字列がペーストされた文字列に置換され -ます。 - -メニューの [編集]-[切り取り] はクリップボードにプットする前に文字列が削除され -ます。[コピー]、[切り取り]、[貼り付け] の 3 つはポップアップメニューでも使えま -す (ポップアップメニューが利用可能な場合のみ)。ツールバーが利用可能なら、そこ -にも同じ項目があるはずです。 - -GUI を使っていない場合やメニューを使いたくない場合は他の方法を使うしかありませ -ん。普通の "y" や "p" コマンドを使う前に "* (ダブルクオート + アステリスク)を -指定するのです。行を丸ごとクリップボードにコピーするには次のようにします: > - - "*yy - -クリップボードからプットするにはこうします: > - - "*p - -この機能はクリップボードをサポートした Vim でのみ動きます。クリップボードにつ -いての詳細は|09.3|章 と |clipboard|をご覧ください。 - -============================================================================== -*04.8* テキストオブジェクト - -単語の真ん中にカーソルがある場合、その単語を削除するには "dw" を実行する前に -カーソルを単語の先頭に戻す必要があります。"daw" を使うともっと簡単です。 - - this is some example text. ~ - daw - - this is some text. ~ - -"daw" の "d" は削除オペレータです。"aw" はテキストオブジェクトです。"aw" は"a -word" の意味です。つまり "daw" は "Delete A Word" という意味になります。正確に -は、単語の後の空白も削除されます (単語が行末にある場合は、行末までのすべての空 -白が削除されます)。 - -テキストオブジェクトは基本操作方法の一つです。。オペレータ-モーション方式とビ -ジュアルモードは既に述べました。そこにオペレータ + テキストオブジェクト方式が -加わります。 -これはオペレータ-モーション方式と非常に似ていますが、オペレータ-モーション方式 -では移動コマンドの前と後のカーソル位置がオペレータの範囲となっていたのに対し、 -テキストオブジェクトではオブジェクト全体を対象とします。オブジェクトのどこに -カーソルがあっても構いません。 - -文全体を変更するのは "cis" です。次の文を使いましょう: - - Hello there. This ~ - is an example. Just ~ - some text. ~ - -2 行目の先頭、"is an" の上に移動し、"cis"を実行してください: - - Hello there. Just ~ - some text. ~ - -カーソルは 1 行目の空白の間にあります。ここで新たな文 "Another line." を入力し -ます: - - Hello there. Another line. Just ~ - some text. ~ - -"cis" は変更オペレータの "c" とテキストオブジェクトの "is" から成ります。"is" -は "Inner Sentence" の意味です。"as" (a sentence) オブジェクトというのもありま -す。"as" は文の後の空白を含みますが、"is" は含みません。文を削除するときに、前 -後の空白も同時に消したい場合は "das" を使います。文を修正するため、空白を残し -ておきたい場合は "cis"を使えばよいでしょう。 - -テキストオブジェクトはビジュアルモードでも使えます。テキストオブジェクトを選択 -範囲に含めることができます。テキストオブジェクトを指定してもビジュアルモードは -終了しないので、何度でもテキストオブジェクトを使えます。例えば、"v" でビジュア -ルモードを開始して、"as" で文を選択した後に、"as" を繰り返してたくさんの文を追 -加できます。最後にオペレータを使って、選択した文を対象として、何らかの処理を行 -います。 - -テキストオブジェクトの機能一覧は |text-objects| を参照してください。 - -============================================================================== -*04.9* 置換モード - -"R" コマンドを使うと置換モードに入ります。このモードでは、入力した文字が、カー -ソル下の文字を置き換えます。このモードは <Esc> を押すまで続きます。 -例えば、"text" の 1 つ目の "t" で置換モードを開始したとします: - - This is text. ~ - Rinteresting.<Esc> - - This is interesting. ~ - -末尾の 5 文字が 12 文字の他の文字に置き換えられています。"R" コマンドは置換す -る文字がなくなると自動的に行末をずらします。次の行へ移動したりはしません。 - -<Insert> キーで挿入モードと置換モードを切り換えることができます。 - -<BS> キーで修正をしようとすると、元の文字が復元されます。直前に打った文字を -undo するような働きをします。 - -============================================================================== -*04.10* 終わりに - -オペレータ、移動コマンド、テキストオブジェクトを組み合せると、とてつもない数 -のコンビネーションを生み出すことができます。N 個のオペレータと M 個の移動コマ -ンドを組み合わせれば N * M 個のコマンドが作れるのです! - -オペレータの一覧は |operator| を参照してください。 - -テキストの一部を削除するには数多くの方法があります。ほんの一部ですが、よく使 -うものを挙げておきましょう。 - -x カーソル位置の文字を削除 ("dl"と同じ) -X カーソル位置の直前の文字を削除 ("dh"と同じ) -D カーソル位置から行末までを削除 ("d$"と同じ) -dw カーソル位置から次の単語の先頭までを削除 -db カーソル位置から直前の単語の先頭までを削除 -diw カーソル位置の単語を削除 (文の後の空白は除く) -daw カーソル位置の単語を削除 (文の後の空白を含む) -dG ファイルの末尾まで削除 -dgg ファイルの先頭まで削除 - -"d" の代わりに "c" を使うと削除ではなく、変更コマンドになります。"y" にすれ -ばヤンクコマンドです。他のオペレータも同様です。 - - -他の章では特に説明されない雑多な変更コマンドをいくつか挙げておきます: - - ~ カーソル位置の大文字/小文字を変更し、カーソルを次に進めます。 - これは('tildeop'がオフの場合は)オペレータではありません。つま - りモーションコマンドと組み合わせることができません。ビジュアル - モードで使うと選択範囲のテキスト全体が変更されます。 - - I (大文字の"i"です) カーソルを行の最初の非空白文字に移動して - 挿入モードを開始します。 - - A 行末にカーソルを動かして、挿入モードを開始します。 - -============================================================================== - -次章: |usr_05.txt| 設定の変更 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_05.jax b/runtime.old/doc/usr_05.jax deleted file mode 100644 index fb5ff2f75..000000000 --- a/runtime.old/doc/usr_05.jax +++ /dev/null @@ -1,634 +0,0 @@ -*usr_05.txt* For Vim バージョン 7.3. Last change: 2009 Jun 04 - - VIM USER MANUAL - by Bram Moolenaar - - 設定の変更 - - -あなたの望みどおりに Vim をチューニングできます。本章では、好みの設定で Vim を -起動する方法を説明します。Vim にプラグインを追加して機能拡張したり、自分でマク -ロを定義する方法も説明します。 - -|05.1| vimrc ファイル -|05.2| 見本 vimrc ファイルの解説 -|05.3| 簡単なマップ -|05.4| プラグインの追加 -|05.5| ヘルプファイルの追加 -|05.6| オプションウィンドウ -|05.7| よく使うオプション - -次章: |usr_06.txt| 構文強調表示 -前章: |usr_04.txt| 簡単な編集 -目次: |usr_toc.txt| - -============================================================================== -*05.1* vimrc ファイル *vimrc-intro* - -よく使うコマンドを入力するのが面倒に感じたことがあるでしょう。好みのオプション -やマップを設定した状態で Vim を起動するには、vimrc というファイルに設定を書い -てください。そのファイルに書いたコマンドは、Vim が起動するときに実行されます。 - -すでに vimrc ファイルがある場合 (例えばシステム管理者が設置した場合など) は、 -次のコマンドでそのファイルを開くことができます: > - - :edit $MYVIMRC - -vimrc ファイルがまだない場合は |vimrc| を参照して vimrc ファイルを作成する場所 -を確認してください。":version" コマンドで表示される "ユーザ vimrc" の表示を見 -て確認することもできます。 - -Unix と Macintosh ではこのファイルを使ってください。 - - ~/.vimrc ~ - -MS-DOS と MS-Windows では次のどちらかです。 - - $HOME/_vimrc ~ - $VIM/_vimrc ~ - -vimrc ファイルには、コロン (:) を押してから入力するコマンドなら、どのコマンド -でも書くことができます。一番わかりやすいのはオプション設定です。例えば、毎回 -'incsearch' オプションをオンに設定したい場合は、vimrc ファイルに次の一行を加え -ます。 > - - set incsearch - -この新しい行を有効にするには、Vim を終了し、再起動する必要があります。再起動し -ないで設定を反映する方法は後で説明します。 - -この章では、ごく基本的な項目だけを説明します。Vim スクリプトのより詳しい情報に -ついては |usr_41.txt| を参照してください。 - -============================================================================== -*05.2* 見本 vimrc ファイルの解説 *vimrc_example.vim* - -第一章では、Vim の配布物に付属の見本 vimrc ファイルを使って、非互換モード -(|not-compatible|参照) で Vim を起動する方法を説明しました。見本 vimrc ファイ -ルは次のディレクトリにあります: - - $VIMRUNTIME/vimrc_example.vim ~ - -この節では、このファイルで使われているコマンドを説明します。自分用の設定をする -ときの参考にしてください。しかし、全てを説明するわけではないので、詳しいことは -":help" コマンドで調べてください。 - -> - set nocompatible - -第一章で述べたように、このマニュアルでは「Vim」について説明しているので、Vi と -は完全に互換性がない部分があります。動作を同じにするには、'compatible' オプ -ションをオフに設定する必要があります。 - -> - set backspace=indent,eol,start -< -挿入モードで <BS> を使って削除できる文字を指定しています。コンマで区切られた三 -つの部分はそれぞれ次の文字の削除を許可しています。 - indent 行頭の空白 - eol 改行 - start 挿入モード開始位置より手前の文字 -> - - set autoindent - -新しい行を作成したときに、直前の行と同じだけインデントされるようになります。つ -まり、新しい行の行頭に直前の行と同じだけの空白が挿入されます。例えば、挿入モー -ドで <Enter> キーを押したときや、"o" コマンドで新しい行を作成したときに機能し -ます。 -> - - if has("vms") - set nobackup - else - set backup - endif - -ファイルを上書きしたときに、バックアップファイルを削除しないように指定していま -す。ただし VMS システムでは OS が古いバージョンを保持してくれるので、オフにし -ています。バックアップファイルのファイル名はオリジナルの名前に "~" を加えたも -のになります。|07.4|を参照してください。 -> - - set history=50 - -コマンドを50個分、検索パターンを50個分、ヒストリ(履歴)として残します。記録の容 -量を増減したいときはこの値を変更してください。 -> - - set ruler - -現在のカーソル位置(行、桁)を Vim ウィンドウの右下に常に表示します。 - -> - set showcmd - -入力途中の (まだ実行していない) コマンドを Vim ウィンドウの右下 (rulerの左側) -に表示します。例えば、"2f" と入力したとき、Vim は検索文字の入力を待っていて、 -画面の右下には "2f" と表示されます。次に "w" と入力すると、"2fw" というコマン -ドが完成するので、それが実行され、画面の "2f" という表示も消去されます。 - - +-------------------------------------------------+ - |text in the Vim window | - |~ | - |~ | - |-- VISUAL -- 2f 43,8 17% | - +-------------------------------------------------+ - ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ - 'showmode' 'showcmd' 'ruler' - -> - set incsearch - -検索パターンを入力中に、入力途中のパターンにマッチする文字列を表示します。 - -> - map Q gq - -キーマップを定義しています。詳しくは次の節で述べます。ここでは、"gq" オペレー -タのフォーマット機能を "Q" コマンドとして定義しています。"Q" の動作が Vim 4.0 -以前と同じになります。実際の "Q" は EX モードへの移行コマンドですが、おそらく -必要ないでしょう。 - -> - vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR> - -このマップは、選択されたテキストをヤンクして、それを C ファイルの中から検索し -ます。これは複雑なマップです。マップを使ってとても難しいことができるということ -が分かってもらえたと思います。とはいっても、実際にコマンドを手入力するのと同じ -ように一連のコマンドを実行しているに過ぎません。 - -> - if &t_Co > 2 || has("gui_running") - syntax on - set hlsearch - endif - -カラー表示が使えるかどうかを確認し、構文強調表示を有効にしています。さらに、 -'hlsearch' オプションをオンにして、検索にマッチした箇所が強調表示されるように -しています。特定の条件のときだけオプションを設定したい場合は "if" コマンドが便 -利です。 詳しくは、|usr_41.txt|を参照してください。 - - *vimrc-filetype* > - filetype plugin indent on - -三つの便利な機能を有効にしています: -1. ファイルタイプの検出 - ファイルを開いたときに、そのファイルの種類を特定します。例えば、"main.c" を - 開いた場合は、拡張子の ".c" を見てファイルタイプは "c" だと判断します。ファ - イルの一行目が "#!/bin/sh" で始まっていた場合は、ファイルタイプは "sh" だと - 判断します。 - 検出されたファイルタイプは構文強調と次の 2 つの項目で使われます。 - |filetypes|参照。 - -2. ファイルタイププラグインを使う - ファイルを開いたときに、ファイルタイプに応じたオプションが設定されます。例 - えば、"c" ファイルの場合なら自動的にインデントしてくれる'cindent' オプショ - ンは欠かせないでしょう。こういった、一般的に便利な設定がファイルタイププラ - グインの中に入っています。自分でプラグインを追加することもできます。 - |write-filetype-plugin|参照。 - -3. インデントファイルを使う - プログラミング言語のインデントはほとんど自動的に計算できます。Vim にはファ - イルタイプに応じたインデントルールが数多く用意されています。 - |:filetype-indent-on| と 'indentexpr' 参照。 - -> - autocmd FileType text setlocal textwidth=78 - -行が長くなりすぎないように78文字で分割するように指定しています。このルールはテ -キストファイルにだけ適用されます。この記述には二つの要素があります。"autocmd -FileType text" はオートコマンド定義です。この場合、ファイルタイプが "text" に -設定されたときに、指定したコマンドが自動的に実行されます。"setlocal -textwidth=78" はそのファイルの 'textwidth' オプションを 78 に設定しています。 - - *restore-cursor* > - autocmd BufReadPost * - \ if line("'\"") > 1 && line("'\"") <= line("$") | - \ exe "normal! g`\"" | - \ endif - -オートコマンドをもう一つ。ファイルを読み込んだ直後に実行されるオートコマンドを -定義しています。後ろのごちゃごちゃした部分は「'" マークが定義されているかどう -かをチェックし、定義があればそこにジャンプする」という意味です。コマンドを複数 -行に分けて書くために、行頭に "\" を書いています。行がやたらと長くなるのを防ぐ -ためです。|line-continuation|参照。"\" は Vim スクリプト内でのみ使えます。コマ -ンドラインで入力するときは使えません。 - -============================================================================== -*05.3* 簡単なマップ - -マップを使うと、複数のコマンドを 1 つのキー繰作にまとめることができます。例え -ば、ある単語を {} で囲みたいとします。つまり、"amount" を "{amount}" にしたい -わけです。:map コマンドを使って、その操作を <F5> キーに割り当てることができま -す。次のように書きます。 > - - :map <F5> i{<Esc>ea}<Esc> -< - Note: - このコマンドを入力するときの注意点。 - <F5> 見たままのは 4 文字の文字列として入力してください。<Esc> も同じで - す。<Esc> キーを押すのではなく、 5 文字の文字列として入力してください。 - このマニュアルを読むときはその違いに注意してください ! - -この定義を分解してみましょう。 - <F5> ファンクションキーのF5です。このキーを押すと、定義してあるコマ - ンドが実行されます。 - - i{<Esc> "{" 文字を挿入し、<Esc> キーで挿入モードから抜けます。 - - e 単語の末尾に移動します。 - - a}<Esc> "}" 文字を追加します。 - -この ":map" コマンドを実行した後は、カーソルを単語の先頭に動かして F5 キーを押 -すだけで単語の両側に {} を追加できます。 - -この例では、コマンドは 1 キーでしたが、どの文字列でも割り当てることができます。 -ただし、Vim のコマンドと同じ文字列を割り当てると、元のコマンドが使えなくなるの -で、それは避けた方が無難です。 -複数キーを組み合わせるときには、バックスラッシュ(日本語環境では円記号)がよく使 -われます。マップをたくさん定義したい場合は、複数文字を使ってください。例えば、 -単語を () で囲むには "\p" で、単語を {} で囲むには "\c" で、といったことができ -ます。 > - - :map \p i(<Esc>ea)<Esc> - :map \c i{<Esc>ea}<Esc> - -"\" と "p" はくっつけてください。そうすれば Vim は 2 文字のマップだと認識でき -ます。 - -引数なしの ":map" コマンドで現在のマップ定義の一覧を表示できます。表示された -マップは、少なくともノーマルモードで使えます。より詳しくは|40.1|章を参照してく -ださい。 - -============================================================================== -*05.4* プラグインの追加 *add-plugin* *plugin* - -プラグインを追加することで機能拡張できます。プラグインといっても、Vimが起動さ -れたときに自動的に読み込まれるだけの、ただの Vim スクリプトファイルです。ファ -イルをプラグインディレクトリにコピーするだけで簡単にプラグインを追加できます。 -{|+eval|が有効な場合のみ利用できます} - -2 種類のプラグインがあります。 - - グローバルプラグイン 全種類のファイルで使われるプラグイン - ファイルタイププラグイン 特定タイプのファイルでのみ使われるプラグイン - -まず、グローバルプラグインについて説明し、次にファイルタイププラグインの説明 -|add-filetype-plugin|をします。 - - -グローバルプラグイン *standard-plugin* --------------------- - -Vim を起動すると、自動的にいくつものグローバルプラグインがロードされます。特に -何もしなくて大丈夫です。グローバルプラグインは、ほとんどの人が欲しいと思うだろ -う機能を提供しています。それらの機能は Vim の中にコンパイルして組み込まれてい -るのではなく、Vim スクリプトとして実装されています。ヘルプの目次にプラグインの -一覧があります|standard-plugin-list|。|load-plugins|も参照してください。 - - *add-global-plugin* -グローバルプラグインを追加すると、いつでもその機能を使えるようになります。 -グローバルプラグインを追加するのは簡単です。 -1. プラグインを入手する -2. 正しいディレクトリにコピーする - - -グローバルプラグインを入手する ------------------------------- - -プラグインはどこにありますか? -- Vim の配布物にいくつか含まれています。$VIMRUNTIME/macros ディレクトリをご覧 - ください -- インターネットからダウンロードする。たくさんのプラグインが - http://www.vim.org にあります。 -- Vim のメーリングリスト|maillist|に投稿されることもあります。 -- あなたが自作することもできます。プラグインの書き方|write-plugin|をどうぞ。 - -いくつかのプラグインは vimball アーカイブで配布されています。|vimball|参照。 -いくつかのプラグインは自動更新可能です。|getscript|参照。 - - -グローバルプラグインを使う --------------------------- - -まず、プラグイン自身のドキュメントを読んで、動作条件を確認してください。 -次にそれをプラグインディレクトリにコピーします。 - - system plugin directory ~ - Unix ~/.vim/plugin/ - PC や OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin - Amiga s:vimfiles/plugin - Macintosh $VIM:vimfiles:plugin - Mac OS X ~/.vim/plugin/ - RISC-OS Choices:vimfiles.plugin - -Unixの場合の例 (プラグインディレクトリがまだない場合) > - - mkdir ~/.vim - mkdir ~/.vim/plugin - cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin - -これだけです。vimを再起動するとプラグインで定義されたコマンドが使えます。 - -plugin/ ディレクトリ以下にファイルを置く代わりに、それらのファイルを plugin/ -ディレクトリ以下のサブディレクトリに置くこともできます。例えば、Perl 用のプラ -グインを "~/.vim/plugin/perl/*.vim" に置いたりできます。 - - -ファイルタイププラグイン *add-filetype-plugin* *ftplugins* ------------------------- - -Vim の配布パッケージにはたくさんのファイルタイププラグインが入っています。 -次のコマンドで利用開始できます。 > - - :filetype plugin on - -これだけです。|vimrc-filetype|も参照してください。 - -使いたいファイルタイププラグインがない場合や、標準より良いものを見つけた場合 -は、追加することもできます。ファイルタイププラグインの追加は次の手順で行いま -す: -1. プラグインを入手する -2. 正しいディレクトリにコピーする - - -ファイルタイププラグインを入手する ----------------------------------- - -ファイルタイププラグインもグローバルプラグインと同じ方法で入手できます。プラグ -インの種類が記載されているのでそれを見て、そのプラグインがグローバルプラグイン -かファイルタイププラグインか確認してください。$VIMRUNTIME/macros に入っている -のはグローバルプラグインです。$VIMRUNTIME/ftplugin に入っているのはファイルタ -イププラグインです。 - - -ファイルタイププラグインを使う *ftplugin-name* ------------------------------- - -ファイルタイププラグインは正しいディレクトリにコピーするだけで追加できます。 -ディレクトリの場所はグローバルプラグインと同じですが、ディレクトリ名の最後の部 -分が "ftplugin" となります。例えば "staff" ファイルタイプ用のプラグインを Unix -システムに入れるとしましょう。入手したファイルを次のコマンドで ftplugin ディレ -クトリに移します: > - - mv thefile ~/.vim/ftplugin/stuff.vim - -そのファイルがすでにある場合は、既存のプラグインと追加しようとしているプラグイ -ンを同時に使っても問題ないかどうか確認してください。問題がなければ別の名前に変 -えましょう: > - - mv thefile ~/.vim/ftplugin/stuff_too.vim - -アンダースコアはファイルタイプの名前とそれ以外を区切るのに使います。アンダース -コア以降はどんな文字列でも構いません。しかし、"otherstuff.vim" といった名前に -した場合はうまく動きません。そのファイルは "otherstuff" というファイルタイプの -ときにだけロードされます。 - -MS-DOS では長いファイル名が使えません。プラグインを追加するときに、ファイルタ -イプ名が 6 文字以上だと問題が生じます。そういうときはさらにディレクトリを掘っ -てください: > - - mkdir $VIM/vimfiles/ftplugin/fortran - copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim - -ファイルタイププラグインの名前付けルールは次の通りです: > - - ftplugin/<filetype>.vim - ftplugin/<filetype>_<name>.vim - ftplugin/<filetype>/<name>.vim - -"<name>" の部分はどんな文字列でも構いません。 -以下は Unix での "staff" ファイルタイプの例です: > - - ~/.vim/ftplugin/stuff.vim - ~/.vim/ftplugin/stuff_def.vim - ~/.vim/ftplugin/stuff/header.vim -< -<filetype> の部分はプラグインの対象になっているファイルタイプ名です。同じファ -イルタイプのファイルだけがそのプラグインを使います。<name> の部分は無視されま -す。一つのファイルタイプに複数のプラグインを登録する場合に使ってください。 -Note: ファイルの拡張子は必ず ".vim" にしてください。 - - -詳しくは以下を参照してください: -|filetype-plugins| ファイルタイププラグインについてのドキュメントと、マッ - プで問題が発生した場合の対処方法。 -|load-plugins| 起動時にロードされるグローバルプラグイン。 -|ftplugin-overrule| 標準のファイルタイププラグインの設定を上書きする。 -|write-plugin| プラグインスクリプトの書き方。 -|plugin-details| プラグインの使い方やプラグインが動かない場合について - の詳細な情報。 -|new-filetype| 新しいファイルタイプを追加するには。 - -============================================================================== -*05.5* ヘルプファイルの追加 *add-local-help* *matchit-install* - -運が良ければ、プラグインにはヘルプファイルが添付されています。ここでは、ヘルプ -ファイルのインストール方法を説明します。 インストールしておけば新しいプラグイ -ンのヘルプを簡単に調べることができます。 -"matchit.vim" プラグイン (Vim の配布パッケージに入っています) を例にやってみま -しょう。このプラグインは "%" コマンドを拡張し、対応する HTML タグや、Vim スク -リプトの if/else/endif間でジャンプできるようにします。これはとても便利です。後 -方互換性がないので、標準では有効になっていません。 -このプラグインにはヘルプ "matchit.txt" が付属しています。最初にプラグイン本体 -を適切なディレクトリにコピーしましょう。今回は Vim の中から操作するので、 -$VIMRUNTIME が使えます。(ディレクトリがすでにある場合は、"mkdir" コマンドを省 -略してください。) > - - :!mkdir ~/.vim - :!mkdir ~/.vim/plugin - :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin - -"cp" は Unix のコマンドです。MS-DOS では "copy" を使ってください。 - -次に 'runtimepath' のいずれかのディレクトリに "doc" ディレクトリを作ります。 > - - :!mkdir ~/.vim/doc - -"doc" ディレクトリにヘルプファイルをコピーします。 > - - :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc - -続いて、新しいヘルプファイルの項目にジャンプできるように仕掛けをします。 -|:helptags|コマンドを使ってタグファイルを生成してください。 > - - :helptags ~/.vim/doc - -さて、これで次のコマンドが使えます。 > - - :help g% - -これは上で追加したヘルプファイルの中から "g%" のヘルプを探すコマンドです。次の -コマンドでローカルヘルプの目次を見ることができます。 > - - :help local-additions - -ここには、インストールしたローカルヘルプのタイトルが自動的に追加されます。ここ -を見れば、どんなローカルヘルプが追加されているかわかります。ここからタグジャン -プもできます。 - -ローカルヘルプファイルの書き方については|write-local-help|を参照してください。 - -============================================================================== -*05.6* オプションウィンドウ - -何かのオプションを探しているなら、ヘルプファイル |options| から見つけることが -できるでしょう。もう一つ、次のコマンドを使う方法もあります: > - - :options - -新しいウィンドウが開き、一行解説付きのオプションの一覧が表示されます。オプショ -ンは種類別にグループ化されています。カーソルを目次の上に動かして <Enter> を押 -すとそこにジャンプできます。もう一度 <Enter> を押すか、CTRL-O を押すと戻れま -す。 - -その場でオプションの値を設定できます。例えば、"displaying text" グループに移動 -し、カーソルを次の行まで持っていきます: - - set wrap nowrap ~ - -ここで <Enter> を押すと、表示が次のようになります: - - set nowrap wrap ~ - -このオプションはオフになりました。 - -この行の上には 'wrap' オプションの簡単な説明があります。説明のところにカーソル -を動かして、<Enter> を押すと、'wrap' オプションのヘルプにジャンプできます。 - -数値や文字列を引数に取るオプションの場合、値を編集できます。修正後に<Enter> -キーを押すとそれが新しい値として設定されます。例えば、カーソルを次の行まで -('wrap'の少し上に) 動かしてください。 - - set so=0 ~ - -"$" コマンドでカーソルを "0" の上に動かし、"r5" で値を 5 に変更します。<Enter> -を押すと、その値が設定されます。カーソルを動かしてみると、画面の端までカーソル -が達する前にスクロールが始まることに気づくと思います。これは 'scrolloff' オプ -ションのしわざです。ウィンドウの端からのオフセットを設定し、スクロールが開始す -る位置を指定しています。 - -============================================================================== -*05.7* よく使うオプション - -Vim には本当に大量のオプションがあります。ほとんどのオプションは使う機会がない -と思います。ここでは一部のよく使うものだけを説明します。これらのオプションには -より詳しいヘルプがあることをお忘れなく。ヘルプを見るには、":help" に続けてアポ -ストロフィで囲んだオプション名を指定してください: > - - :help 'wrap' - -オプションの値がおかしくなってしまったら、初期設定に戻すことができます。初期設 -定に戻すのにはアンパサンド(&)を使います: > - - :set iskeyword& - - -行の折り曲げの禁止 ------------------- - -長い行は、文の全体が見えるように、画面の右端で折り曲げて表示されます。しかし -ウィンドウの右にはみ出した方が良い場合もあります。その場合は、左右にスクロール -して長い行を表示することになります。次のコマンドで折り曲げしないようになりま -す: > - - :set nowrap - -表示されていない領域にカーソルを動かすと自動的にスクロールされます。10 文字ず -つスクロールするには、次のようにします: > - - :set sidescroll=10 - -これはファイルの内容には影響しません。表示方法を変更するだけです。 - - -折り返して移動するコマンド --------------------------- - -ほとんどの移動コマンドは行頭と行末で移動を停止します。'whichwrap' オプションで -それを変更できます。次の例では、'whichwrap' を初期設定に設定しています: > - - :set whichwrap=b,s - -ここでは、<BS> キーで行頭から 1 つ上の行の行末へ動くことを許可しています。ま -た、<Space> キーで行末から次の行の行頭への移動することを許可しています。 - -カーソルキーの <Left> と <Right> もこのコマンドで折り返しを許可できます: > - - :set whichwrap=b,s,<,> - -この指定はノーマルモードでのみ有効です。挿入モードでも <Left> と <Right> を許 -可するには次のように指定します: > - - :set whichwrap=b,s,<,>,[,] - -他にもいくつかフラグがあります。詳しくは 'whichwrap' を参照してください。 - - -TAB を表示する --------------- - -ファイル中に Tab 文字があっても、それを視認することはできません。Tab 文字が表 -示されるようにしましょう: > - - :set list - -Tab 文字が ^I と表示されます。行末には $ と表示され、通常なら気付かないよう -な、行末の空白もよくわかるようになります。 -これの欠点はファイルに Tab 文字がたくさんあると見づらくなる点です。カラー端末 -か GUI を使っている場合は、空白と Tab 文字を別の文字に置き換えて強調表示するこ -とができます。'listchars' オプションを使ってください: > - - :set listchars=tab:>-,trail:- - -Tab 文字は全て ">---" と表示され、行末の空白は "-" と表示されます。この方が -ずっとイイと思いませんか? - - -キーワード ----------- - -'iskeyword' オプションは単語に使える文字を定義しています: > - - :set iskeyword -< iskeyword=@,48-57,_,192-255 ~ - -"@" は「すべてのアルファベット」を表しています。"48-57" は ASCII コード の 48 -から 57 までの文字、つまり "0" から "9" までの数字を表しています。"192-255" は -印字可能なラテン文字です。 -例えば、"upper-case" を1つの単語と扱って欲しい場合は、"-" をキーワードに追加 -します。次のように設定してください: > - - :set iskeyword+=- - :set iskeyword -< iskeyword=@,48-57,_,192-255,- ~ - -新しい設定をみると、"-" の直前に "," が自動的に追加されています。 -キーワードから文字を削除するには "-=" を使います。アンダースコアを削除するには -次のようにします: > - - :set iskeyword-=_ - :set iskeyword -< iskeyword=@,48-57,192-255,- ~ - -"_" を削除すると "," も自動的に削除されました。 - - -メッセージ行 ------------- - -初期設定では、最下段の一行がメッセージの表示に使われます。メッセージが長いとき -は、メッセージを切り詰めて一部だけ表示するか、メッセージをスクロールして表示 -し、最後に <Enter> を押してもらうかのどちらかです。 -メッセージの表示に使う行数は 'cmdheight' オプションで設定できます: > - - :set cmdheight=3 - -編集画面が狭くなってしまうので、ほどほどの値を設定してください。 - -============================================================================== - -次章: |usr_06.txt| 構文強調表示 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_06.jax b/runtime.old/doc/usr_06.jax deleted file mode 100644 index 324d2beb8..000000000 --- a/runtime.old/doc/usr_06.jax +++ /dev/null @@ -1,278 +0,0 @@ -*usr_06.txt* For Vim バージョン 7.3. Last change: 2009 Oct 28 - - VIM USER MANUAL - by Bram Moolenaar - - 構文強調表示 - - -白黒だけのテキストは退屈です。カラー表示すればファイルも生き生き見えてきます。 -これは単に見た目が良いだけではなく、作業のスピードアップにもつながります。意味 -のある文字列は違う色で表示しましょう。そして、画面と同じ色で印刷しましょ -う。 - -|06.1| 構文強調表示を有効にする -|06.2| 色がつかない?変な色になる? -|06.3| 色を変える -|06.4| カラーを使う?使わない? -|06.5| カラー印刷 -|06.6| 詳しい情報 - -次章: |usr_07.txt| 複数のファイルを開く -前章: |usr_05.txt| 設定の変更 -目次: |usr_toc.txt| - -============================================================================== -*06.1* 構文強調表示を有効にする - -次の簡単なコマンドで全てが始まります。 > - - :syntax enable - -これで、カラー表示になるはずです。ファイルタイプが自動的に特定され、適切な構文 -強調がロードされます。すると、コメントは青、キーワードは茶色、文字列は赤、と -いった具合にカラー表示になります。ファイルが見やすくなりましたね。しばらくする -と、白黒のテキストがあなたの足を引っ張っていたことに気づくでしょう。 - -常に構文強調表示を使いたい場合は、":syntax enable" コマンドを|vimrc|ファイルに -追加してください。 - -カラー端末のときだけ使いたい場合は、次のコマンドを|vimrc|ファイルに追加してく -ださい。 > - if &t_Co > 1 - syntax enable - endif - -GUI バージョンのときだけ使いたい場合は、":syntax enable" を |gvimrc| ファイル -に追加してください。 - -============================================================================== -*06.2* 色が付かない?変になる? - -カラー表示がうまくいかない理由はいろいろあります: - -- カラー端末じゃない。 - Vim は、太字やイタリック、下線も使えます。でもそれだけではあまりカッコ - 良くはできません。カラー対応の端末を入手するのがいいでしょう。 - Unixなら、XFree86プロジェクト(|xfree-xterm|)のxtermがお勧めです。 - -- カラー端末であることを Vim が認識できない - $TERM の設定が正しいかどうかを確認してください。例えば、カラー対応の - xterm なら次のように設定します: > - - setenv TERM xterm-color -< - シェルによってはこうかもしれません: > - - TERM=xterm-color; export TERM - -< 端末名と実際に使っている端末名は同じでないといけません。それでも - うまく動かない場合は、|xterm-color|を参照してください。この文書には - Vim をカラー表示にする方法がいくつか書いてあります。(xtermに限った文書 - ではありません) - -- ファイルタイプが識別できなかった。 - いくら Vim でも古今東西のファイルタイプをすべて知っているわけではあり - ません。ファイルが言語を特定するのが困難な場合もあります。このコマンド - を使ってみてください。 > - - :set filetype -< - この結果が "filetype=" ならば、ファイルタイプが認識できなかったという - ことです。手動でファイルタイプを指定することもできます。 > - - :set filetype=fortran - -< どんなタイプが使えるかは、$VIMRUNTIME/syntax のディレクトリを見て - ください。GUI なら、[シンタックス]メニューも使えます。 - ファイルタイプの設定はモード行(|modeline|)でも出来ます。モード行で指定 - すれば、そのファイルを開いたときにカラー表示が必ず設定されます。例え - ば、Makefile なら次のように書きます。(ファイルの最初か最後に近い場所に - 書いてください): > - - # vim: syntax=make - -< あなたはファイルタイプの判定方法を知っているかもしれませんね。ほとんど - のファイルは拡張子を見ればファイルタイプがわかります。 - ファイルタイプを検出して設定する方法については|new-filetype|を参照して - ください。 - -- ファイルタイプ用の構文定義がない - 似ているファイルタイプを手動で設定して使ってみてください。それでも不満 - な場合は、自分で構文定義ファイルを書くこともできます。詳しくは - |mysyntaxfile|を参照してください。 - - -色がおかしい場合: - -- 色付きの文字が非常に読みづらい - Vim は使われている背景色を推測します。黒 (もしくは同様の暗色) なら、明 - るい色で文字を表示します。白 (もしくは同様の明るい色) なら、暗い色で文 - 字を表示します。Vim の予想がはずれると、文字は読みづらくなります。 - これは 'background' オプションを設定することで解決できます。暗い背景色 - を使っている場合は、次のように設定してください: > - - :set background=dark - -< 明るい背景色なら次のように設定してください: > - - :set background=light - -< このコマンドは ":syntax enable" より *前* に実行してください。色が設 - 定された後では意味がありません。後から 'background' を設定した場合は、 - ":syntax reset" を実行すると、標準色に戻すことができます。 - -- 上に向ってスクロールしたときに色が間違っている - 構文解析は、ファイル全体を読んでるわけではありません。画面に表示されて - いるところから、解析は始まります。これだと時間を大幅に節約できるのです - が、時には色を間違ってしまいます。直すには単に CTRL-L を押してくださ - い。あるいは、少し多めに上スクロールしてから戻ると直ります。 - 根本的に解決するには、|:syn-sync|を参照してください。一部の構文ファイ - ルは、ずっと上の方まで戻って解析をしています。詳しくは個々の構文定義 - ファイルのヘルプを参照してください。例えば、TeX 用の定義ファイル - |tex.vim|がそれを行っています。 - -============================================================================== -*06.3* 色を変える *:syn-default-override* - -標準色が好みでなければ、他の色テーマを使うことができます。GUI ならメニューの -[編集]-[色テーマ] が使えます。コマンドで指定することもできます: > - - :colorscheme evening - -"evening" というのは色テーマの名前です。色テーマは他にもたくさんあります。ディ -レクトリ $VIMRUNTIME/colors をご覧ください。 - -好みの色テーマを見つけたら、":colorscheme" コマンドを|vimrc|ファイルに追加して -ください。 - -自分で色テーマを作ることもできます。その手順は次の通りです。 - -1. 作りたいテーマに近い色テーマを選び、それを自分の Vim ディレクトリにコピーし - ます。Unix なら次のとおりです: > - - !mkdir ~/.vim/colors - !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim -< - $VIMRUNTIME は Vim が設定する環境変数なので、このコマンドは Vim から実行し - てください。 - -2. 色テーマファイルを編集します。この一覧が役に立つでしょう: - - term 白黒端末での属性 - cterm カラー端末での属性 - ctermfg カラー端末での文字色 - ctermbg カラー端末での背景色 - gui GUI での属性 - guifg GUI での文字色 - guibg GUI での背景色 - - 例えば、コメントを緑にするにはこのようにします。 > - - :highlight Comment ctermfg=green guifg=green -< - "cterm"と"gui"の属性には、"bold"と"underline"が指定できます。両方を指定した - い場合は、"bold,underline"のように指定します。詳しくは|:highlight|を参照し - てください。 - -3. 作った色テーマが使われるように設定します。この行を|vimrc|に追加してくださ - い: > - - colorscheme mine - -次のコマンドで、よく使われる色の組み合わせを表示して、見栄えを確認できます: > - - :runtime syntax/colortest.vim - -いろんな色の組み合せが表示されます。どれが読みやすくて見た目が良いかチェックし -てください。 - -============================================================================== -*06.4* カラーを使う?使わない? - -テキストをカラーで表示するには、たくさんの計算が必要です。表示が遅すぎると感じ -たときは、構文強調表示を一時的に止めてみてください: > - - :syntax clear - -他のファイル (又は同じファイル) を開くと、再びカラー表示されます。 - - *:syn-off* -構文強調表示を完全に無効にするには、このようにします: > - - :syntax off - -これで、構文強調表示が無効になり、すべてのバッファが白黒表示になります。 - - *:syn-manual* -特定のファイルだけ構文強調表示するには、このようにします: > - - :syntax manual - -構文強調表示は有効になりますが、ファイルを開いても、自動的にはカラー表示になり -ません。'syntax' オプションを設定すると、カレントバッファがカラー表示になりま -す: > - - :set syntax=ON -< -============================================================================== -*06.5* カラー印刷 *syntax-printing* - -MS-Windows では、次のコマンドでファイルを印刷できます: > - - :hardcopy - -通常の印刷ダイアログが表示されるので、プリンタを選択し、設定してください。カ -ラープリンタを使っている場合は、画面に表示されているのと同じように印刷されま -す。ただし、背景色を暗い色にしている場合は、白い紙に適した色に変更されます。 - -印刷方法を変更するには、以下のオプションを設定してください: - 'printdevice' - 'printheader' - 'printfont' - 'printoptions' - -一部の範囲だけ印刷するには、ビジュアルモードで印刷したい範囲を選択し、印刷コマ -ンドを実行してください: > - - v100j:hardcopy - -"v" でビジュアルモードを開始して、"100j" で 100 行下まで移動すると、その範囲が -選択されます。":hardcopy" で選択範囲が印刷されます。もちろん、ビジュアルモード -では他のコマンドを使って移動することもできます。 - -PostScript プリンタを使っている場合は Unix でも同様に印刷できます。PostScript -を印刷できない場合は多少の手間がかかります。テキストを HTML に変換してから Web -ブラウザで印刷してください。 - -現在のファイルを HTML に変換するには次のコマンドを使います: > - - :TOhtml - -動かない場合は次のコマンドを試してください: > - - :source $VIMRUNTIME/syntax/2html.vim - -カリカリと音を立て処理が開始します。巨大なファイルの変換にはしばらく時間がかか -ります。しばらくすると別ウィンドウに HTMLコードが表示されるので、どこかに保存 -してください (後で削除するファイルなので、適当な場所に保存してください): -> - :write main.c.html - -このファイルをお好みのブラウザで開いて印刷してください。うまくいけば、Vim の画 -面での表示と全く同じものが印刷されます。詳しくは|2html.vim|を参照してくださ -い。全てが終わったら、HTMLファイルは削除してしまいましょう。 - -印刷する代りに、HTML ファイルを Web サーバに置いて、他の人にカラー付きの文書と -して提供することもできます。 - -============================================================================== -*06.6* 詳しい情報 - -|usr_44.txt| 構文定義の自作 -|syntax| 全ての詳細 - -============================================================================== - -次章: |usr_07.txt| 複数のファイルを開く - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_07.jax b/runtime.old/doc/usr_07.jax deleted file mode 100644 index 6dfa2403c..000000000 --- a/runtime.old/doc/usr_07.jax +++ /dev/null @@ -1,481 +0,0 @@ -*usr_07.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - 複数のファイルを開く - - -どんなにファイルが多くても心配はいりません。Vim を複数起動することなしに、それ -らのファイルを編集できます。作業するファイルのリストを定義して、他のファイルに -ジャンプしたりテキストをコピーしたりできます。 - -|07.1| 他のファイルを開く -|07.2| ファイルのリスト -|07.3| 他のファイルにジャンプする -|07.4| バックアップファイル -|07.5| 他のファイルにテキストをコピーする -|07.6| 読み込み専用モード -|07.7| ファイル名の変更 - -次章: |usr_08.txt| ウィンドウの分割 -前章: |usr_06.txt| 構文強調表示 -目次: |usr_toc.txt| - -============================================================================== -*07.1* 他のファイルを開く - -いままでは、ファイルを開くごとに Vim を起動しなければなりませんでしたが、もっ -と簡単な方法があります。次のコマンドを使ってください: > - - :edit foo.txt - -ファイル名は "foo.txt" に限らず何でも使えます。Vim は現在のファイルを閉じて、 -指定されたファイルを開きます。ファイルの変更が保存されていない場合は、エラー -メッセージが表示され、新しいファイルは開かれません。 - - E37: 最後の変更が保存されていません (! で変更を破棄) ~ - - Note: - エラーメッセージの先頭には エラーID が表示されます。エラーの意味や原因 - がわからない場合は、この ID をヘルプで引いてください。上記エラーの場合 - は、このようにします: > - - :help E37 - -このエラーを回避するには、次のコマンドでファイルを保存してください: > - - :write - -あるいは、変更を破棄して新しいファイルを開くこともできます。(!) 文字を使ってく -ださい: > - - :edit! foo.txt - -ファイルの変更を保存せずに他のファイルを開きたい場合は、ファイルを隠す方法もあ -ります: > - - :hide edit foo.txt - -ファイルの変更はまだ破棄されませんが、ファイルは画面外に隠れてしまいます。詳し -くは|22.4|バッファリスト で説明します。 - -============================================================================== -*07.2* ファイルのリスト - -Vim を起動するときに、複数のファイルを指定することができます。例: > - - vim one.c two.c three.c - -このコマンドは Vim を起動し、三つのファイルを開くように指示しています。Vim は -一つ目のファイル (one.c) だけを表示します。そのファイルの編集が終わり、次のファ -イル (two.c) を編集したい場合はこのコマンドを使います: > - - :next - -ファイルの変更が保存されていない場合は、エラーメッセージが表示され、":next" コ -マンドは中断されます。前節で述べた ":edit" の場合と同じです。変更を破棄するに -は次のコマンドを使います。 > - - :next! - -しかしほとんどの場合、変更を保存してから次のファイルを開くと思います。それには -専用のコマンドが用意されています。 > - - :wnext - -これは次の二つのコマンドを使うのと同じ結果となります。 > - - :write - :next - - -私はドコにいるの? ------------------- - -今編集しているのが引数リスト中のどのファイルなのかは、ウィンドウタイトルを見れ -ばわかります。そこに "(2 of 3)" のような表示があります。この場合は全部で三つの -ファイルがあり、今は二つ目を編集しているという意味です。 -次のコマンドでファイルの一覧を表示できます: > - - :args - -これは "arguments" の省略形です。結果は次のように表示されます。 - - one.c [two.c] three.c ~ - -Vim を起動したときに指定したファイルが表示されます。編集中のファイル (ここでは -"two.c") は [] 記号で囲んで表示されます。 - - -他のファイルへの移動 --------------------- - -これはファイルを一つ戻るコマンドです。 > - - :previous - -":next" コマンドと同じ動作ですが、移動する方向が違います。このコマンドにも、 -ファイル保存してから移動する専用のコマンドがあります。 > - - :wprevious - -一覧の最後のファイルに移動するには次のコマンドを使います。 > - - :last - -最初のファイルに戻るには次のコマンドです。 > - - :first - -":wlast" とか ":wfirst" みたいなコマンドはありません。 - -":next" と ":previous" にはカウンタを指定できます。例えば、二つ先のファイルに -進むにはこのようにします。 > - - :2next - - -自動保存 --------- - -いろんなファイルを編集して回るときには、":write" で保存するのを忘れないでくだ -さい。変更を保存せずに移動しようとすると、エラーメッセージが表示されます。移動 -するときはいつでも変更を保存したいと思った場合は、次のように設定してください。 -変更が自動的に保存されるようになります。 > - - :set autowrite - -保存して欲しくないファイルを編集するときは、機能をオフに設定してください。 > - - :set noautowrite - - -他のファイルリストで編集する ----------------------------- - -Vim を再起動しなくても、ファイルリストを変更できます。例えば、他の三つのファイ -ルを編集するには次のようにします。 > - - :args five.c six.c seven.h - -シェルと同じようにワイルドカードを使うこともできます。 > - - :args *.txt - -リストの最初のファイルがまず開かれます。ここでも、現在のファイルの変更をまだ保 -存していない場合は、ファイルを保存するか、":args!" (! が付いています) を使って -変更を破棄する必要があります。 - - -最後のファイルまで編集した? ----------------------------- - *arglist-quit* -ファイルリストが使われると、Vim は、すべてのファイルが編集対象だと判断します。 -間違って Vim を終了してしまうことがないように、すべてのファイルをまだ開いてい -ないのに終了しようとした場合は、エラーメッセージが表示されます: - - E173: 編集すべきファイルがあと 46 個あります。 ~ - -本当に終了してよければ、もう一度終了コマンドを実行してください。こんどは終了で -きます (間に他のコマンドを挟まないでください)。 - -============================================================================== -*07.3* ファイルからファイルへのジャンプ - -CTRL-^ を使うと二つのファイル間を素早く移動できます(日本語キーボードなら ^ は -'-' キーの右側 (「へ」キー) にあります)。例: > - - :args one.c two.c three.c - -上を実行すると "one.c" が開きます。 > - - :next - -これで、"two.c" になりました。ここで CTRL-^ を使うと "one.c" に戻ります。もう -一度 CTRL-^ を押すと "two.c" に戻ります。さらに CTRL-^ を使うと "one.c" になり -ます。さて、ここで次のコマンドを実行します。 > - - :next - -すると、"three.c" になります。CTRL-^ コマンドはファイルリスト中での現在地を変 -更しません。":next" や ":previous" のようなコマンドだけが現在地を変更します。 - -直前に編集していたファイルのことをオルタネートファイル (alternate file) と言い -ます。Vim の起動直後はオルタネートファイルがまだ無いため CTRL-^ は動作しませ -ん。 - - -定義済マーク ------------- - -他のファイルにジャンプすると、二つの定義済マークが使えるようになります。これは -非常に便利です。 > - - `" - -このコマンドを実行すると、以前にファイルを開いていたときにいた場所にカーソルが -移動します。もう一つは、最後に変更を加えた場所に設定されたマークです。 > - - `. - -例えば、"one.txt" を編集しているとします。ファイルの真ん中あたりで "x" を使っ -て文字を削除しました。そして、"G" を使って最後の行に移動し、":w" でファイルを -保存します。他のファイルをいくつか編集してから、":edit one.txt" で "one.txt" -に戻ってきました。ここで、 `" を実行すると、ファイルの最後の行にカーソルが移動 -します。`. を実行すると、文字を削除した場所に移動します。ファイル内をいろいろ -と移動した後でも、`" と `. は同じ場所を覚えています。少なくとも、他の変更を加 -えたり、別のファイルに移動したりするまでは。 - - -ファイルマーク --------------- - -4 章 (|04.1|) では "mx" でマークを付け、"`x" でその場所にジャンプする方法を説明 -しました。そのマークはファイルの中だけで使えます。別のファイルを開いて、それに -同じマークを付けても、マークはそのファイルに固有のものとなります。つまり各ファ -イルはそれぞれのマークを持っていて、ファイル内に閉じているということです。いま -までは、マークに小文字を使ってきましたが、大文字のマークも使えます。 -大文字のマークはグローバルで、どのファイルからでも使えます。例えば "foo.txt" -というファイルを開き、"50%" コマンドでファイルの真ん中にジャンプして、その場所 -に F というマークを付けたとします: > - - 50%mF - -次に "bar.txt" を開き、最終行にマーク B を付けます: > - - GmB - -さて、ここで "'F" コマンドを使うと、いきなり foo.txt の真ん中にジャンプできま -す。さらに、他のファイルを開いてから "'B" を入力すると、bar.txt の行末に移動で -きます。 - -他の場所を設定するまで、ファイルマークは同じ場所を記憶しています。そのため、一 -度マークを付ければ、何時間も編集を行ってからでもそのマークに戻って来ることがで -きます。 -マークの文字とマークを付けた場所が連想できるような単純なルールを決めておくとよ -いでしょう。例えば、ヘッダファイルは H 、makeファイルは M 、C 言語のソースには -C といった具合です。 - -マークが置いてある場所を確認するには、":marks" コマンドにそのマークを指定して -ください。 > - - :marks M - -マークを複数指定しても構いません。 > - - :marks MCP - -マークを使わなくても、CTRL-O と CTRL-I を使えば、古い場所と新しい場所の間を -ジャンプできることをお忘れなく。 - -============================================================================== -*07.4* バックアップファイル - -初期設定ではバックアップファイルは作成されません。バックアップファイルが必要な -ら、次のコマンドを実行してください: > - - :set backup - -バックアップファイルの名前は、ファイル名の後ろに ~ を加えた名前になります。 -例えば、ファイル名が data.txt なら、バックアップファイルは data.txt~ です。 - ~ 以外の文字を使いたい場合は、次のように設定してください: > - - :set backupext=.bak - -これで、バックアップファイルの名前が data.txt.bak になります。 -もう一つのオプション 'backupdir' についても説明しましょう。これはバックアップ -ファイルを保存するディレクトリを指定するオプションです。初期設定ではバックアッ -プは元ファイルと同じディレクトリに保存されます。たいていの場合はこれで問題ない -はずです。 - - Note: - 'writebackup' がオンの場合、'backup' がオフでもバックアップファイルは - 作成されますが、ファイルの保存が成功すると、そのバックアップファイルは - すぐに削除されます。これは、ファイルを保存できなかったときに、オリジナ - ルファイルが失われないようにするための機能です。(失敗の原因は、例え - ば、ディスクがいっぱいになったというのが一番ありがちな理由です。雷にや - られるというのも可能性は低いですがありうることです)。 - - -オリジナルファイルを残す ------------------------- - -ソースファイルを編集していると、変更を加える前のファイルを残しておきたいときが -あります。しかし、バックアップファイルはファイルを保存するたびに上書きされるの -で、直前のバックアップしか残らず、最初のファイルはなくなってしまいます。 -オリジナルのファイルを残しておきたい場合は、'patchmode' オプションを設定してく -ださい。バックアップファイルを最初に作成するときに使う拡張子を指定します。次の -ように設定してください: > - - :set patchmode=.orig - -例えば、はじめて data.txt を開いたときに、変更を加え、保存しようとすると、変更 -前のファイルが "data.txt.orig" という名前でコピーされます。 -その後、ファイルを変更しても、既に "data.txt.orig" があるので、上書きはされま -せん。この場合もバックアップファイルは "data.txt~" (もしくは 'backupext' で指 -定した名前) で作成されます。 -'patchmode' が空のまま (初期設定) だと、オリジナルファイルは残りません。 - -============================================================================== -*07.5* 他のファイルにテキストをコピーする - -ここではファイルから別のファイルにテキストをコピーする方法を説明します。簡単な -例で始めましょう。コピーしたいテキストを含んでいるファイルを開きます。テキスト -の先頭にカーソルを移動して "v" を押すとビジュアルモードが開始します。テキスト -の末尾までカーソルを移動して "y" を押します。これでテキストがヤンク (コピー) -されました。 - -例えば、上の段落をコピーするには、次のようにします。 > - - :edit thisfile - /ここでは - vjjjj$y - -次に、このテキストをプット (ペースト) したいファイルを開きます。テキストをプッ -トしたい場所にカーソルを動かし、"p" コマンドでプットします。 > - :edit otherfile - /どこか - p - -当然ながら、テキストのヤンクには他にもいろんなコマンドが使えます。例えば、"V" -でビジュアルモードを開始すると行単位で選択できますし、CTRL-V で矩形選択もでき -ます。"Y" で一行をヤンクしたり、"yaw"で単語をヤンク (yank-a-word) するなど、い -ろいろできます。 -"p" コマンドはカーソルの後にテキストをプットします。カーソルの前にプットするに -は "P" を使います。Vim はヤンクしたときの選択単位 (行選択や矩形選択) を覚えて -いて、同じ単位でプットします。 - - -レジスタを使う --------------- - -あるファイルから別のファイルに数箇所のテキストをコピーしたいとき、何度も何度も -ファイルを切り換えると時間がかかります。テキストをレジスタにコピーして手間を省 -きましょう。 -レジスタとは、Vim がテキストを保持する場所です。ここでは a から z までの名前が -付いたレジスタを使います (レジスタは他にもあります)。では、テキストをレジスタ -f (fはfirstのつもり) にヤンクしてみましょう。 > - - "fyas - -"yas" コマンドで文をヤンクしています。"f はテキストをレジスタ f に入れるための -指定です。この指定はヤンクコマンドの直前に指定します。 -さらに三行をレジスタ l (lはlineのつもり) にヤンクしてみましょう。 > - - "l3Y - -カウンタ (回数指定) は "l の直前に指定することもできます。テキストのブロック -(矩形選択) をレジスタ b (bはblockのつもり) にヤンクする場合は次のようにしま -す。 > - - CTRL-Vjjww"by - -レジスタ指定 "b を "y" コマンドの直前で指定している点に注意してください。これ -は重要なことです。これを "w" コマンドより前に置いてしまうとうまく動きません。 -さて、f、l、b の三つのレジスタにテキストをヤンクできました。他のファイルを開い -て、テキストを挿入したい場所にカーソルを移動し、レジスタの内容をプットしましょ -う。 > - - "fp - -ヤンクの場合と同じく、レジスタ指定 "f は "p" コマンドより前に指定します。 -どのレジスタからプットしても構いません。他のテキストをヤンクし直さない限り、レ -ジスタの内容は変わらないので、同じレジスタを何度でも好きなだけプットできます。 - -テキストを削除するときにも、レジスタを指定できます。テキストを何ヶ所かに移動す -るときなどに使ってください。例えば、単語を削除 (delete-a-word) してその内容を -レジスタ w に入れるには次のようにします。 > - - "wdaw - -何度も言うようですが、レジスタ指定は削除コマンド "d" の前に置いてください。 - - -ファイルに追記する ------------------- - -文章を一つのファイルにまとめたい場合は、次のコマンドを使います。 > - - :write >> logfile - -カレントファイルの内容が "logfile" の末尾に追記されます。テキストをコピーして、 -"logfile" を開き、テキストをプットするより簡単です。作業を 2 手節約できます。 -ただし、ファイルの末尾への追加しかできません。 -ファイルの一部だけ追記したい場合は、ビジュアルモードでテキストを選択してから -":write" を実行してください。テキストを選択する方法は他にもありますが、10 章で -説明します。 - -============================================================================== -*07.6* 読み込み専用モード - -ファイルを変更する気はなく、ただファイルの内容を見たいだけのときがあります。普 -通に開くと、うっかり ":w" を実行して元のファイルを上書きしてしまう危険がありま -す。そういうときは、読み込み専用モードでファイルを開いてください。 -Vim を読み込み専用モードで起動するには、次のコマンドを使います。 > - - vim -R file - -Unix なら、次のコマンドも同じ意味になります。 > - - view file - -"file" が読み込み専用モードで開きます。":w" をしようとしても、エラーメッセージ -が表示され保存はされません。 -ファイルに変更を加えようとすると、次のような警告が表示されます。 - - W10: 警告:読込専用ファイルを変更します ~ - -警告は出ますが、変更は可能です。これは、例えばファイルを読みやすくフォーマット -したりするためです。 -読み込み専用モードであることを忘れて、ファイルを修正してしまったようなときは、 -write コマンドに ! を付けて強制保存してください。 - -完全にファイルの変更を禁止したい場合は、次のようにしてください。 > - - vim -M file - -これで、内容を変更しようとしてもエラーになります。例えば、ヘルプファイルはこの -モードで表示されています。変更しようとすると、次のエラーメッセージが表示されま -す。 - - E21: 'modifiable'がオフなので、変更できません ~ - --M 引数を使えば Vim を閲覧モードに設定できますが、これは自主規制みたいなもの -で、次のコマンドを使えば制限はなくなってしまいます。 > - - :set modifiable - :set write - -============================================================================== -*07.7* ファイル名の変更 - -新しいファイルを作成するときに、目的に近いファイルがあるなら、それを利用するの -が効率的です。例えば、ファイルを移動するプログラムを作りたいとしましょう。ファ -イルをコピーするプログラムがすでにあるので、それを流用することにしました。 > - - :edit copy.c - -新しいプログラムに必要ない部分は削除してしまいましょう。次に、このファイルを新 -しい名前で保存する必要があります。そのためのコマンドが ":saveas" です。 > - - :saveas move.c - -指定した名前でファイルが保存され、そのファイルが開かれます。そのため、次に -":write" したときは "move.c" に保存されます。"copy.c" は変更されません。ファイ -ルを保存せずに、ファイルの名前だけ変更したい場合は、次のコマンドを使います。 > - - :file move.c - -そのファイル (move.c) は、実際のファイルではないので、"開いていない" (not -edited) 扱いになります。ファイルを保存しようとすると、次のメッセージが表示され -ることがあります。 - - E13: ファイルが存在します (! を追加で上書) ~ - -これは、実際のファイルを間違って上書きしてしまわないようにするためです。 - -============================================================================== - -次章: |usr_08.txt| ウィンドウの分割 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_08.jax b/runtime.old/doc/usr_08.jax deleted file mode 100644 index 9a50259aa..000000000 --- a/runtime.old/doc/usr_08.jax +++ /dev/null @@ -1,596 +0,0 @@ -*usr_08.txt* For Vim バージョン 7.3. Last change: 2006 Jul 18 - - VIM USER MANUAL - by Bram Moolenaar - - ウィンドウの分割 - - -関係のない2つの違ったファイルを表示したい。1つのファイルの2個所を同時に -見たい。2つのファイルを横に並べて差分を見てみたい。 -ウィンドウ分割を使えばどれもできてしまいます。 - -|08.1| ウィンドウの分割 -|08.2| ウィンドウを分割してファイルを開く -|08.3| ウィンドウのサイズ -|08.4| 縦分割 -|08.5| ウィンドウの移動 -|08.6| 全ウィンドウに対するコマンド -|08.7| vimdiff で差分を表示する -|08.8| その他 -|08.9| タブページ - -次章: |usr_09.txt| GUI を使う -前章: |usr_07.txt| 複数のファイルを開く -目次: |usr_toc.txt| - -============================================================================== -*08.1* ウィンドウの分割 - -新しいウィンドウを開く一番簡単なコマンドはこれです。 > - - :split - -画面が2つのウィンドウに分割されます。カーソルは上側のウィンドウに置かれます。 - - +----------------------------------+ - |/* file one.c */ | - |~ | - |~ | - |one.c=============================| - |/* file one.c */ | - |~ | - |one.c=============================| - | | - +----------------------------------+ - -二つのウィンドウに同じファイルが表示されています。"====" のラインはステータス -行です。各ウィンドウの一番下にあってそのウィンドウの情報を表示します。(実際に -はステータス行は反転表示になります) -各ウィンドウには同じファイルの違う場所を表示できます。例えば、上側のウィンド -ウにはプログラムの変数宣言部を表示し、下の方にはその変数を使っている箇所を -表示させる、といったことができます。 - -CTRL-W w コマンドでウィンドウ間をジャンプできます。上側のウィンドウにカーソル -がある時に CTRL-W w を押すとその下のウィンドウにジャンプします。一番下のウィン -ドウにカーソルがある時は一番上のウィンドウに戻ります。(CTRL-W CTRL-W も同じ動 -作をするので、CTRL キーを離すのがちょっと遅れても大丈夫です) - - -ウィンドウを閉じる ------------------- - -ウィンドウを閉じるのは次のコマンドです。 > - - :close - -":quit" や "ZZ" のようなファイルを閉じるコマンドでもウィンドウを閉じることがで -きますが、":close" を使えば、最後のウィンドウを閉じて Vim を終了してしまうよう -な間違いを防げます。 - - -他ウィンドウを全部閉じる ------------------------- - -ウィンドウをたくさん開いたときに、どれか一つのウィンドウに集中したいと思った場 -合は、次のコマンドが便利です。 > - - :only - -カーソルのあるウィンドウを残して全てのウィンドウが閉じます。他のウィンドウに保 -存されていない変更がある場合には、エラーメッセージが表示され、そのウィンドウは -閉じません。 - -============================================================================== -*08.2* ウィンドウを分割してファイルを開く - -次のコマンドを実行すると、2つ目のウィンドウが開き、指定されたファイルの編集が -開始されます。 > - - :split two.c - -例えば、one.c を編集していたなら、結果は次のようになります。 - - +----------------------------------+ - |/* file two.c */ | - |~ | - |~ | - |two.c=============================| - |/* file one.c */ | - |~ | - |one.c=============================| - | | - +----------------------------------+ - -新しいウィンドウに新規ファイルを開くには、次のコマンドを使います。 > - - :new - -":split" や ":new" コマンドを使って好きなだけウィンドウを作成できます。 - -============================================================================== -*08.3* ウィンドウのサイズ - -":split" コマンドは数値を引数として取れます。その値は新しいウィンドウの高さと -なります。例えば、次のコマンドは3行分の高さのウィンドウを作成し、alpha.c を開 -きます。 > - - :3split alpha.c - -ウィンドウのサイズを変更する方法はいくつかあります。マウスが使えれば話は簡単で -す。ウィンドウを分割しているステータス行にマウスを動かし、上下にドラッグしてく -ださい。 - -ウィンドウを大きくするには次のようにします: > - - CTRL-W + - -小さくするには次のようにします: > - - CTRL-W - - -どちらのコマンドも数値を引数として取り、その行数分、ウィンドウサイズを増減しま -す。つまり、"4 CTRL-W +" ならウィンドウが4行分大きくなります。 - -ウィンドウの高さを明示的に指定するには次のコマンドを使います: > - - {height}CTRL-W _ - -{height} に数値を指定し、CTRL-W と _ (アンダースコア) を入力します。 -ウィンドウを最大まで大きくするには、CTRL-W _ コマンドを数値指定なしで実行して -ください。 - - -マウスを使う - -Vim では様々なことをキーボードから極めて素早く操作できますが、残念ながら、ウィ -ンドウサイズを変更するのは少し面倒です。この場合、マウスを使う方が簡単です。マ -ウスポインタをステータス行に合せてから左ボタンを押してドラッグしてください。ス -テータス行が動き、片方のウィンドウが大きくなり、もう片方は小さくなります。 - - -オプション - -'winheight' オプションにはウィンドウの最小の高さ (それ以上は小さくならない) の -希望値を、'winminheight' には最小の高さの強制値を設定できます。 -同様に、'winwidth' オプションにはウィンドウの最小の幅の希望値を、'winminwidth' -には最小の幅の強制値を設定できます。 -'equalalways' オプションが設定されていると、ウィンドウを閉じたり開いたりするた -びに、全てのウィンドウのサイズが同じになります。 - -============================================================================== -*08.4* 縦分割 - -":split" コマンドは現在のウィンドウの上側に新しいウィンドウを作ります。ウィン -ドウを左側に作るには、次のコマンドを使います: > - - :vsplit - -あるいは、 > - :vsplit two.c - -実行後は次のようになります。 - - +--------------------------------------+ - |/* file two.c */ |/* file one.c */ | - |~ |~ | - |~ |~ | - |~ |~ | - |two.c===============one.c=============| - | | - +--------------------------------------+ - -中央の縦棒 (|) は実際には反転表示されます。これは縦セパレータと呼ばれ、これに -よって左右のウィンドウが区切られます。 - -ウィンドウを縦分割して新しい空ファイルを作成する ":vnew" コマンドもあります。 -次のコマンドでも同じことができます: > - - :vertical new - -":vertical" コマンドは、ウィンドウを分割する他のコマンドにも適用できます。これ -を指定すると、ウィンドウは横ではなく、縦に分割されるようになります。(ウィンド -ウを分割しないコマンドの場合は何も変わりません) - - -他のウィンドウへの移動 - -横でも縦でも好きなようにウィンドウを分割できるので、自在にウィンドウを配置でき -ます。他のウィンドウへ移動するには次のコマンドを使います。 - - CTRL-W h 左側のウィンドウに移動 - CTRL-W j 下側のウィンドウに移動 - CTRL-W k 上側のウィンドウに移動 - CTRL-W l 右側のウィンドウに移動 - - CTRL-W t 一番上のウィンドウに移動 - CTRL-W b 一番下のウィンドウに移動 - -カーソル移動と同じ文字を使っていることに注目してください。もちろん、矢印キーも -使うことができます。 -他のウィンドウへ移動するためのコマンドは他にもあります: |Q_wi| - -============================================================================== -*08.5* ウィンドウの移動 - -ウィンドウを分割したが、配置が好ましくなかった場合、ウィンドウをどこか別の場所 -に動かしたいと思うしょう。例えば、次のように三つのウィンドウがあるとします: - - +----------------------------------+ - |/* file two.c */ | - |~ | - |~ | - |two.c=============================| - |/* file three.c */ | - |~ | - |~ | - |three.c===========================| - |/* file one.c */ | - |~ | - |one.c=============================| - | | - +----------------------------------+ - -明らかに一番下のウィンドウが一番上にくるべきです。一番下のウィンドウに移動して -(CTRL-W w を使用)、次のコマンドを入力してください: > - - CTRL-W K - -ここでは大文字の K を使います。これを実行すると、ウィンドウが一番上に移動しま -す。上への移動に K が使われていることに注目してください。 -縦分割しているときに CTRL-W K を使うと、ウィンドウが一番上に移動し、Vim ウィン -ドウと同じ幅になります。例えば、次のようなレイアウトになっているとします。 - - +-------------------------------------------+ - |/* two.c */ |/* three.c */ |/* one.c */ | - |~ |~ |~ | - |~ |~ |~ | - |~ |~ |~ | - |~ |~ |~ | - |~ |~ |~ | - |two.c=========three.c=========one.c========| - | | - +-------------------------------------------+ - -中央のウィンドウ (three.c) で CTRL-W K を実行すると、次のような結果になります: - - +-------------------------------------------+ - |/* three.c */ | - |~ | - |~ | - |three.c====================================| - |/* two.c */ |/* one.c */ | - |~ |~ | - |two.c==================one.c===============| - | | - +-------------------------------------------+ - -他に同じようなコマンドが三つあります。(説明する必要はありませんね) - - CTRL-W H ウィンドウを左端に移動 - CTRL-W J ウィンドウを下端に移動 - CTRL-W L ウィンドウを右端に移動 - -============================================================================== -*08.6* 全ウィンドウを対象とするコマンド - -Vim を終了しようと思ったときに、複数のウィンドウが開いていた場合、ウィンドウを -一つずつ閉じていけば Vim を終了できますが、次のコマンドを使えばもっと速く終了 -できます。: > - - :qall - -これは "quit all" (すべて閉じる) という意味です。まだ保存していないファイルが -ある場合は、Vim は終了しません。保存していないファイルを表示しているウィンドウ -にカーソルが自動的に移動するので、":write" で保存するか ":quit!" で変更を破棄 -するかしてください。 - -未保存のファイルを全て保存するには、次のコマンドを使ってください: > - - :wall - -これは "write all" (すべて保存) という意味です。とはいっても、実際に保存される -のは変更のあったファイルだけです。変更していないファイルを上書きしても意味がな -いことを Vim はわかってますから。 -":qall" と ":wall" を組み合わせた "write and quit all" (すべて保存して終了) コ -マンドもあります: > - - :wqall - -このコマンドは、変更されたファイルをすべて保存して Vim を終了します。 -最後に、次のコマンドは、すべての変更を破棄して Vim を終了するコマンドです: > - - :qall! - -このコマンドはアンドゥできないので、使う時には慎重に! - - -引数で指定したすべてのファイルをウィンドウで開く - -それぞれのファイルごとにウィンドウを開くには、起動パラメタに "-o" を指定します。 -> - vim -o one.txt two.txt three.txt - -結果はこうなります。 - - +-------------------------------+ - |file one.txt | - |~ | - |one.txt========================| - |file two.txt | - |~ | - |two.txt========================| - |file three.txt | - |~ | - |three.txt======================| - | | - +-------------------------------+ - -起動パラメタ "-O" を使えば、ウィンドウが縦分割になります。 -Vim が既に起動している場合、":all" コマンドを使うと引数リストの各ファイルごと -にウィンドウを開くことができます。":vertical all"だと縦分割になります。 - -============================================================================== -*08.7* vimdiff で差分を表示する - -特別な方法で Vim を起動すると、二つのファイルの差分を表示することができます。 -例えば、"main.c" というファイルを開き、どこかの行に文字を挿入したとします。そ -して、オプション 'backup' を有効にしてファイルを保存しました。バックアップファ -イル "main.c~" には変更前のファイルが保存されています。 -シェルで (vim上ではありません) 次のコマンドを入力します: > - - vimdiff main.c~ main.c - -二つのウィンドウを左右に並べた状態で Vim が起動します。画面には先ほど文字を挿 -入した行とその前後の数行が表示されています。 - - VV VV - +-----------------------------------------+ - |+ +--123 lines: /* a|+ +--123 lines: /* a| <- 折り畳み - | text | text | - | text | text | - | text | text | - | text | changed text | <- 変更された行 - | text | text | - | text | ------------------| <- 削除された行 - | text | text | - | text | text | - | text | text | - |+ +--432 lines: text|+ +--432 lines: text| <- 折り畳み - | ~ | ~ | - | ~ | ~ | - |main.c~==============main.c==============| - | | - +-----------------------------------------+ - -(上の図は強調表示されてないので、ちゃんと見たければ、vimdiff コマンドを実行し -てみてください) - -変更のない行は一行に折り畳まれて表示されます。これを閉じた折り畳みと呼びます。 -上の図では "<- 折り畳み" とある行がそうです。最初の折り畳みは 123 行を折り畳ん -でいます。それらの行は両方のファイルで一致しています。 -"<- 変更された行" とある行は強調表示されていて、挿入した文字列が別の色で表示さ -れています。強調表示されているので、どこが違うのかが一目でわかります。 -削除された行は main.c のウィンドウにあるように "---" と表示されます。上の図の、 -"<- 削除された行" とある行を見てください。実際には、そこに文字はありません。そ -の行は、main.c を別のウィンドウと同じ行数で表示するために使われています。 - - -折り畳み表示列 - -各ウィンドウの左側に色の違う列があります。上の図では "VV" で示されています。そ -の列の、閉じた折り畳みのある行に、"+" 記号が表示されています。マウスポインタを -その "+" 記号に合わせて、左ボタンをクリックしてください。折り畳みが開き、折り -畳まれていたテキストが表示されます。 -開いた折り畳みは "-" 記号で表示されます。"-" 記号をクリックすると折り畳みは閉 -じます。 -当り前ですが、これはマウスが利用できる場合のみ機能します。キーボードの場合は -"zo" で折り畳みを開いたり、"zc" で閉じたりできます。 - - -Vim の中で差分を取る - -Vim の中から差分モードを開始する方法もあります。"main.c" を開いて、ウィンドウ -を分割し差分を表示するには、次のようにします: > - - :edit main.c - :vertical diffsplit main.c~ - -":vertical" コマンドはウィンドウを縦分割するために使用します。使わなかった場合 -は横分割になります。 - -パッチ、または diff ファイルがある場合は、三つめの方法で差分モードを開始できま -す。最初に、パッチを適用するファイルを開き、次に、Vim にパッチファイルの名前を -教えてやります: > - - :edit main.c - :vertical diffpatch main.c.diff - -警告: パッチファイルは、開いているファイル用のパッチが一つだけ含まれているもの -でなければなりません。そうでない場合は、大量のエラーメッセージが表示されたり、 -予期せずに、他のファイルにパッチが適用されてしまう場合があります。 -パッチ処理は Vim 内部の、ファイルのコピーに対して実行されます。ハードディスク -上のファイルは (それを上書きしない限り) 変更されません。 - - -同期スクロール - -ファイル間の差分がたくさんある場合、通常どおりスクロールすればそれらを表示でき -ます。もう一方のウィンドウも同じ場所を表示するように自動的にスクロールされるの -で、簡単に差分を並べて表示できます。 -同期スクロールを無効にするには、次のコマンドを使います: > - - :set noscrollbind - - -変更された場所にジャンプする - -折り畳みを無効にしている場合、変更された場所を見つけるのは簡単ではありません。 -次のコマンドを使うと、前方の変更にジャンプできます: > - - ]c - -逆方向にジャンプするには次のコマンドを使います: > - - [c - -回数指定を使えば、さらに遠くまでジャンプできます。 - - -変更を取り除く - -ウィンドウからウィンドウへテキストを移動できます。これによって、差分が増えたり -減ったりします。強調表示は自動的に更新されません。更新するには次のコマンドを使 -います: > - - :diffupdate - -差分を取り除くには、強調表示された範囲のテキストをもう一方のウィンドウに移動し -ます。上述の "main.c" と "main.c~" の例を使って説明します。左ウィンドウに移動 -して、もう一方のウィンドウでは削除されている行に移動します。そして、次のコマン -ドを入力します: > - - dp - -カレントウィンドウのテキストがもう一方のウィンドウにプットされ、変更がなくなり -ます。"dp" は "diff put" の意味です。 -別の方法でも同じことができます。右のウィンドウに移動して、"changed" が挿入され -た行に移動します。そして、次のコマンドを入力します: > - - do - -もう一方のファイルからテキストがコピーされ、変更はなくなります。これで変更がな -くなってしまったので、すべてのテキストが折り畳まれて表示されます。"do" は -"diff obtain" の意味です。意味的には"dg"の方が良いのですが、それはすでに他で -使われています ("dgg" でカーソル位置から最初の行まで削除されます)。 - -差分モードの詳細は |vimdiff| をご覧ください。 - -============================================================================== -*08.8* その他 - -'laststatus' オプションを使うと、最後のウィンドウにステータスラインを表示する -かどうかを設定できます: - - 0 表示しない - 1 分割ウィンドウがある時だけ表示 (初期設定) - 2 常に表示 - -ほとんどの、ファイルを開くコマンドには、ウィンドウを分割するバージョンが存在し -ます。 -Ex コマンドの場合、先頭に "s" が付いています。例えば、":tag" はタグジャンプで -すが、":stag" はウィンドウを分割してからタグジャンプします。 -ノーマルモードコマンドの場合、CTRL-W を前置します。例えば、CTRL-^ はオルタネー -トファイルへのジャンプですが、CTRL-W CTRL-^ はウィンドウを分割してからオルタネー -トファイルを開きます。 - -'splitbelow' オプションを設定すると、カレントウィンドウの下に新しいウィンドウ -が作られるようになります。'splitright' オプションを設定すると、縦分割したとき -に、カレントウィンドウの右に新しいウィンドウが作られるようになります。 - -ウィンドウを分割するときに、次の修飾コマンドを使うと、ウィンドウの位置を指定で -きます: - - :leftabove {cmd} カレントウィンドウの左、または上 - :aboveleft {cmd} 同上 - :rightbelow {cmd} カレントウィンドウの右、または下 - :belowright {cmd} 同上 - :topleft {cmd} 上、または左の端 - :botright {cmd} 下、または右の端 - - -============================================================================== -*08.9* タブページ - -ウィンドウは重ねることができないので、画面がすぐにいっぱいになってしまいます。 -それを解決するために、タブページ、というものが用意されています。 - -"thisfile" というファイルを開いているとしましょう。新しいタブページを作成する -ために次のコマンドを実行します: > - - :tabedit thatfile - -"thatfile" が開かれ、Vim ウィンドウ全体を占める大きさのウィンドウに表示されま -す。そして、上部にバーが表示され、ファイル名が二つ表示されているのが確認できる -と思います: - - +----------------------------------+ - | thisfile | /thatfile/ __________X| (thatfile は太字) - |/* thatfile */ | - |that | - |that | - |~ | - |~ | - |~ | - | | - +----------------------------------+ - -これは二つのタブページがある状態です。一つ目のタブページには "thisfile" を開い -ているウィンドウが、二つ目のタブページには "thatfile" を開いているウィンドウが -入っています。これは、紙が二枚重なっていて、それぞれの紙にファイル名が書かれた -ラベルが付いているようなものです。 - -マウスを使って "thisfile" をクリックしてみましょう。次のようになります。 - - +----------------------------------+ - | /thisfile/ | thatfile __________X| (thisfile は太字) - |/* thisfile */ | - |this | - |this | - |~ | - |~ | - |~ | - | | - +----------------------------------+ - -上部のラベルをクリックすると、タブページを切替えることができます。マウスがな -い、あるいは使いたくない場合には、"gt" コマンドでも切替えられます。"gt" は -Goto Tab の略です。 - -次のコマンドを実行し、タブページをもう一つ作成してみましょう: > - - :tab split - -ウィンドウを一つもったタブページが作成され、そのウィンドウには、さっきまで開い -ていたのと同じバッファが表示されています: - - +-------------------------------------+ - | thisfile | /thisfile/ | thatfile __X| (thisfile は太字) - |/* thisfile */ | - |this | - |this | - |~ | - |~ | - |~ | - | | - +-------------------------------------+ - -":tab" コマンドは、ウィンドウを開く Ex コマンドと組み合わせて使います。そうす -ると、ウィンドウは新しいタブページで開かれます。もう一つ例をあげます: > - - :tab help gt - -このコマンドを実行すると、"gt" についてのヘルプが新しいタブページで開きます。 - -タブページの操作には、他にも次のようなものがあります: - -- 上部バーの最後のラベルより右 (ラベルのないとこ) をマウスでクリック - "gt" と同じように、次のタブページを選択します。 - -- 上部右端の "X" をクリック - 現在のタブページを閉じます。ただし、そのタブページ内に未保存の変更があ - る場合は閉じません。 - -- 上部バーをダブルクリック - 新しいタブページを作成します。 - -- "tabonly" コマンド - 現在のタブページ以外を閉じます。ただし、それらのタブページ内に未保存の - 変更がある場合は閉じません。 - -タブページについての詳細は |tab-page| を参照してください。 - -============================================================================== - -次章: |usr_09.txt| GUI を使う - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_09.jax b/runtime.old/doc/usr_09.jax deleted file mode 100644 index 141e3fa26..000000000 --- a/runtime.old/doc/usr_09.jax +++ /dev/null @@ -1,293 +0,0 @@ -*usr_09.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - GUI を使う - - -Vim は普通の端末で動作します。GVim はそれより少しだけ多機能です。GUI ではメ -ニュー、ツールバー、スクロールバーなどが利用できます。本章では GUI が提供する -それらの機能を説明します。 - -|09.1| GUI の部品 -|09.2| マウスを使う -|09.3| クリップボード -|09.4| セレクトモード - -次章: |usr_10.txt| 大規模な編集 -前章: |usr_08.txt| ウィンドウの分割 -目次: |usr_toc.txt| - -============================================================================== -*09.1* GUI の部品 - -おそらく、gVim を起動するためのアイコンがデスクトップにあるはずです。ない場合 -は、次のコマンドのどちらかで起動できます: > - - gvim file.txt - vim -g file.txt - -GUI 版の Vim がインストールされていない場合は起動できません。まず最初に GUI 版 -の Vim をインストールしてください。 -起動すると、ウィンドウが開き、そこに "file.txt" が表示されます。ウィンドウの外 -見は Vim のバージョンによって違うかもしれませんが、だいたい次のような画面が表 -示されるはずです (この図は ASCII で正しく表示されます)。 - - +----------------------------------------------------+ - | file.txt + (~/dir) - VIM X | <- ウィンドウ - +----------------------------------------------------+ タイトル - | File Edit Tools Syntax Buffers Window Help | <- メニューバー - +----------------------------------------------------+ - | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- ツールバー - | aaa bbb ccc ddd eee fff ggg hhh iii jjj | - +----------------------------------------------------+ - | file text | ^ | - | ~ | # | - | ~ | # | <- スクロール - | ~ | # | バー - | ~ | # | - | ~ | # | - | | V | - +----------------------------------------------------+ - -一番大きな領域にはファイルのテキストが表示されています。その部分は端末での表示 -と同じです。色やフォントは違うかもしれません。 - - -ウィンドウタイトル ------------------- - -最上部はウィンドウタイトルです。この部分はウィンドウシステム (Windows や X の -ウィンドウマネージャなど) によって描画されます。Vim はカレントファイルの名前を -タイトルに設定します。ファイル名が先頭に表示され、それから、記号、カッコで囲ま -れたディレクトリ名が表示されます。記号には次の意味があります。 - - - ファイルは変更不可。(例: ヘルプファイル) - + ファイルは変更された。 - = ファイルは読み込み専用。 - =+ ファイルは読み込み専用だが、変更された。 - -何も表示されていなければ、変更されていない通常のファイルです。 - - -メニューバー ------------- - -メニューの使い方はわかりますよね? 一般的な項目に加え、Vim 特有の項目が少しあ -ります。メニューをざっと眺めてどんなものがあるか確認してください。この章に関連 -したサブメニューが [編集]-[全体設定] にあります。次のような項目です: - - ツールバー表示切替 ツールバーの表示のon/off - スクロールバー(下)表示切替 スクロールバー(下)の表示のon/off - スクロールバー(左)表示切替 スクロールバー(左)の表示のon/off - スクロールバー(右)表示切替 スクロールバー(右)の表示のon/off - -ほとんどのシステムではメニューの切り離しができます。メニューの最上部にある点線 -のような項目を選択すると、メニューが別ウィンドウで表示されます。明示的に閉じる -まで、ウィンドウは開いたままです。 - - -ツールバー ----------- - -ツールバーには、よく使われる機能がアイコンの形で格納されています。アイコンを見 -ればその機能を連想できると思います。マウスをアイコンの上に動かしてクリックせず -に一秒ほど待つと、機能の説明がツールチップで表示されます。 - -メニューの [編集]-[全体設定]-[ツールバー表示切換] を使うとツールバーを非表示に -できます。ツールバーを全く使わないのであれば、次のコマンドを vimrc に書いてく -ださい: > - - :set guioptions-=T - -これは 'guioptions' オプションから "T" フラグを取り除くコマンドです。GUI の他の -部品もこのオプションを使って、表示/非表示を指定できます。詳しくはオプションの -ヘルプを参照してください。 - - -スクロールバー --------------- - -初期設定では右側にスクロールバーが表示されます。動作は一般的なアプリケーション -と同じです。ウィンドウを分割するとウィンドウごとにスクロールバーが作られます。 -メニューの [編集]-[全体設定]-[スクロールバー(下)表示切換] を使うと横スクロール -バーを表示できます。差分モードのときや 'wrap' オプションをオフにしているときに -便利です。(詳しくは後で説明します) - -ウィンドウを垂直分割していて、右側のウィンドウにだけスクロールバーが付いている -場合は、左側のウィンドウにカーソルを移動すれば、スクロールバーはそのウィンドウ -に作用するようになります。 -垂直分割をよく使うなら、左側にもスクロールバーを付けるといいかもしれません。メ -ニューから選択するか、'guioptions' を設定してください: > - - :set guioptions+=l - -これは 'guioptions' に 'l' フラグを追加しています。 - -============================================================================== -*09.2* マウスを使う - -標準は素晴らしい。Microsoft Windows では、マウスを使った標準的な操作方法でテキ -ストを選択できます。X ウィンドウシステムにもマウスの操作方法の標準があります。 -残念ながら、この二つの標準は別物です。 -幸運なことに Vim はカスタマイズできます。マウスの振る舞いを X ウィンドウシステ -ム方式か Microsoft Windows 方式のどちらかに変更できます。次のコマンドでマウス -の振る舞いを X ウィンドウシステム方式に設定できます: > - - :behave xterm - -次のコマンドでマウスの振る舞いを Microsoft Windows 方式に設定できます: > - - :behave mswin - -UNIX での初期設定は xterm です。Microsoft Windows での初期設定はインストール時 -に選択できます。二つの振る舞いの詳細については|:behave|をご覧ください。ここで -は概要だけ説明します。 - - -XTERM 方式のマウスの振る舞い - -左クリック カーソル移動 -左ドラッグ ビジュアルモードでテキストを選択 -中クリック クリップボードからテキストを貼り付け -右クリック マウスポインタで指した場所まで選択範囲を拡張 - - -MSWIN 方式のマウスの振る舞い - -左クリック カーソル移動 -左ドラッグ セレクトモードでテキストを選択 (|09.4| 参照) -シフトキー + 左クリック マウスポインタで指した場所まで選択範囲を拡張 -中クリック クリップボードからテキストを貼り付け -右クリック ポップアップメニューを表示 - - -マウスの動作はさらに細かく設定できます。マウスの動作を変更したい場合は、以下の -オプションを確認してください。 - - 'mouse' Vim のどのモードでマウスを使うのか - 'mousemodel' クリックしたときの動作 - 'mousetime' ダブルクリックのクリック間隔 - 'mousehide' 入力している間、マウスを隠す - 'selectmode' マウスで選択したときにビジュアルモードとセレク - トモードのどちらを開始するか - -============================================================================== -*09.3* クリップボード - -|04.7| ではクリップボードの基本的な使い方を説明しました。ここでは X Window -での必須事項を説明します。X Window にはプログラム間でテキストを交換するための -空間が二つあります。MS-Window にはありません。 - -X Window にはカレントセレクション ("current selection") があります。これは選択 -中のテキストのことです。Vim において、それはビジュアル選択している範囲のことで -す (初期設定の場合)。選択しているテキストは特に何もしなくても他のアプリケーショ -ンにペーストできます。 -例えば、この文章のどこかを適当にマウスで選択したとします。Vim は自動的にビジュ -アルモードに切り替わり、選択したテキストが強調表示されます。ここで、別の Vim -を引数なしで起動し、空のウィンドウを開きます。中央ボタンをクリックすると、選択 -したテキストが挿入されます。 - -カレントセレクションは他のテキストを選択するまで有効です。他の gVim にペースト -した後、そのウィンドウのテキストを選択すると、直前に別の gVim で選択していたテ -キストの表示が変わるのが確認できると思います。その選択範囲はもうカレントセレク -ションではないのです。 - -テキストの選択はマウスでなくても構いません。ビジュアルモードのコマンドをキーボー -ドで入力しても同じことになります。 - - -真のクリップボード ------------------- - -さて、テキストを交換するためのもう一つの空間を説明します。今までの説明との混同 -を避けるために、ここでは真のクリップボード ("real clipboard") と呼びます。普通 -はカレントセレクションと真のクリップボードはどちらもクリップボードと呼ばれます -が、慣れてください。 -真のクリップボードにテキストをプットするために、動作中の gVim で適当なテキスト -を選択し、メニューの [編集]-[コピー] コマンドを実行してください。これで、テキ -ストが真のクリップボードにコピーされました。クリップボードの内容は専用のアプリ -ケーション (例えば KDE の klipper) がなければ見ることはできません。 -次に、別の gVim に移り、カーソルを適当なところに移動し、メニューの [編集]-[貼 -り付け] コマンドを実行します。真のクリップボードからテキストが挿入されます。 - - -両方を使う ----------- - -カレントセレクションと真のクリップボードを両方使うのは少し複雑ですが、でもこれ -はとても便利なのです。例を挙げましょう。 -gVim でテキストファイルを開いて以下の操作を実行してください: > - -- 単語をビジュアルモードで選択する。 -- [編集]-[コピー] メニューを実行して単語をクリップボードに入れる。 -- ビジュアルモードで別の単語を選択する。 -- [編集]-[貼り付け] メニューを実行する。選択している単語がクリップボードにあ - る単語で置き換えられます。 -- マウスポインタを他のところに動かして中央ボタンを押す。直前にクリップボード - のテキストで上書きされた単語がその場所に挿入されます。 - -カレントセレクションと真のクリップボードは気を付けて使いさえすれば、非常に役立 -つテクニックになります。 - - -キーボードを使う ----------------- - -マウスが嫌いなあなたでも、二つのレジスタを使って、カレントセレクションと真のク -リップボードにアクセスできます。カレントセレクションには "* レジスタでアクセス -します。 -テキストをカレントセレクションにするにはビジュアルモードを使います。例えば、 -"V" を押せば行全体を選択できます。 -次のコマンドでカレントセレクションのテキストをカーソルの直前に挿入できます: > - - "*P - -大文字の "P" であることに注意してください。小文字の "p" だとカーソルの直後に -プットされます。 - -真のクリップボードには "+ レジスタでアクセスします。例えば、カーソル位置から行 -末までを真のクリップボードにコピーするには、次のようにします: > - - "+y$ - -"y" はヤンク、つまり Vim のコピーコマンドのことでしたね。 -次のコマンドで真のクリップボードのテキストをカーソルの直前に挿入できます: > - - "+P - -カレントセレクションの場合とコマンドは同じですが、スター (*) ではなくプラス -(+) レジスタを使っています。 - -============================================================================== -*09.4* セレクトモード - -これは X Window よりも MS-Windows でよく利用される機能です。しかし、どちらの環 -境でも利用できます。ビジュアルモードについては既に知っていますね。セレクトモー -ドはビジュアルモードに似ています。セレクトモードもテキストを選択するための機能 -です。違いは、文字を入力すると、選択されていたテキストが削除され、入力した文字 -に置き換わることです。 - -セレクトモードを使うには、最初にそれを有効にする必要があります。(MS-Windows で -は、既に有効になっていると思いますが、これを実行しても問題ありません): > - - :set selectmode+=mouse - -設定したら、マウスを使ってテキストを選択してみてください。ビジュアルモードのよ -うにテキストが強調表示されます。そして、文字を入力してください。選択されていた -テキストが削除され、入力した文字に置き換わります。挿入モードに入るので、続けて -文字を入力することができます。 - -普通に文字を入力すると選択中のテキストが削除されてしまうので、通常の移動コマン -ドの "hjkl" や "w" などは使えません。代わりに、シフト + 特殊キーの組み合わせを -使ってください。<S-Left> (シフト + 左矢印キー) でカーソルが左に移動します。ビ -ジュアルモードと同じように選択範囲が変化します。他の矢印キーも同様に使えます。 -<S-End> と <S-Home> も使えます。 - -選択モードの動作は 'selectmode' オプションで変更できます。 - -============================================================================== - -次章: |usr_10.txt| 大規摸な編集 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_10.jax b/runtime.old/doc/usr_10.jax deleted file mode 100644 index 4db695358..000000000 --- a/runtime.old/doc/usr_10.jax +++ /dev/null @@ -1,804 +0,0 @@ -*usr_10.txt* For Vim バージョン 7.3. Last change: 2006 Nov 05 - - VIM USER MANUAL - by Bram Moolenaar - - 大規模な編集 - - -四章では、小さな変更を加える方法について説明しました。この章では、同じ操作を再 -実行する方法や、広範囲のテキストを変更する方法を説明します。ビジュアルモードで -は選択範囲にさまざまな処理を実行できます。外部プログラムを使えばとても複雑な処 -理もできます。 - -|10.1| 操作の記録と再実行 -|10.2| 置換 -|10.3| コマンドの範囲指定 -|10.4| global コマンド -|10.5| 矩形選択 -|10.6| ファイルの一部の保存と読み込み -|10.7| テキストの整形 -|10.8| 大文字/小文字の変換 -|10.9| 外部プログラムを使う - -次章: |usr_11.txt| クラッシュからの復帰 -前章: |usr_09.txt| GUI を使う -目次: |usr_toc.txt| - -============================================================================== -*10.1* 操作の記録と再実行 - -"." コマンドを使えば直前の変更を繰り返せますが、複数のコマンドを組み合わせた、 -もっと複雑な操作を繰り返すにはどうすればいいでしょうか。それには記録コマンドを -使います。次の手順で記録できます: - -1. "q{register}" コマンドを実行する。指定したレジスタ {register} へのキー入力 - の記録が開始されます。レジスタ名は a から z のいずれかです。 -2. コマンドを入力して編集する。 -3. q を押して記録を終了する (レジスタの指定は必要ない)。 - -記録したマクロは "@{register}" コマンドで実行できます。 - -このコマンドの使い方を練習してみましょう。次のようなファイル名の一覧がありま -す: - - stdio.h ~ - fcntl.h ~ - unistd.h ~ - stdlib.h ~ - -これを次のように変更します: - - #include "stdio.h" ~ - #include "fcntl.h" ~ - #include "unistd.h" ~ - #include "stdlib.h" ~ - -まず、一行目の行頭に移動してください。そして次のコマンドを実行します。 - - qa レジスタ a へのマクロの記録を開始。 - ^ 行頭に移動。 - i#include "<Esc> 行頭に #include " を挿入。 - $ 行末に移動。 - a"<Esc> 行末に引用符 (") を追加。 - j 次の行に移動。 - q マクロの記録を終了。 - -さて、一回分の作業はこれで終りました。"@a" コマンドを使って変更を繰り返してみ -てください。 -"@a" コマンドには繰り返し回数を指定できます。三回繰り返すには、次のようにしま -す: > - - 3@a - - -移動と実行 ----------- - -変更したい行がいろんな場所に分散している場合は、それぞれの場所に移動してから -"@a" コマンドを使います。一度でも再実行すると、次からは "@@" で同じマクロを再 -実行できます。"@@" の方が少しだけ入力が簡単です。例えば、"@b" でレジスタ b を -実行すると、次に "@@" を実行したときはレジスタ b が使われます。 -マクロの実行と "." にはいくつか違いがあります。まず第一に、"." は一つの変更し -か繰り返せません。上述の例のように、"@a" では複数の変更やカーソルの移動も繰り -返せます。第二に、"." は直前の変更しか繰り返せません。レジスタを実行する方法な -ら、他の変更を加えた後でも、"@a" を使って、記録されたコマンドを繰り返せます。 -最後に、レジスタは 26 個あります。つまり、26 個のコマンド操作を記録しておける -のです。 - - -レジスタを使う --------------- - -記録に用いるレジスタはヤンクや削除で使っているのと同じものです。そのため、レジ -スタを操作して、記録されたコマンドと他のコマンドを合成することができます。 -レジスタ n にいくつかのコマンドが記録されているとします。ところが、"@n" で実行 -してみると、ミスがあることに気付きました。最初から記録をやり直すこともできます -が、また何か間違えてしまうかもしれません。代わりに、次のようなテクニックを使っ -てみましょう。 - - G ファイルの最後にジャンプ。 - o<Esc> 空行を作成。 - "np レジスタ n の内容をプット。記録されたコマンド - がテキストとして表示されます。 - {edits} 間違っている部分を修正。普通にテキストを編集す - るのと同じです。 - 0 行頭に移動。 - "ny$ 修正したコマンドをレジスタ n にヤンク - dd 不要になった最終行を削除 - -さて、"@n" で正しいコマンドが実行されるようになりました。(記録されたコマンドに -改行が含まれている場合は、上記の最後の二項目はその全内容が含まれるようにしてく -ださい) - - -レジスタに追記 --------------- - -これまで、レジスタ名には小文字を使ってきました。レジスタに追記するには大文字を -使います。 -単語を変更するためのコマンドがレジスタ c に記録されているとします。これは正し -く動作するのですが、変更すべき次の単語を検索する処理を追加したくなりました。次 -のようにすればできます: > - - qC/word<Enter>q - -レジスタ c に追記するために "qC" で記録を開始しています。レジスタ名を大文字で -書くと、同じレジスタに追記するという意味になるのです。 - -これは記録コマンドだけでなく、ヤンクや削除コマンドでも同じです。例えば、いくつ -かの行をレジスタ a に集めたいとします。最初の行を次のコマンドでヤンクしましょ -う: > - - "aY - -次の行に移動し、このように入力します: > - - "AY - -これを全ての行で実行します。レジスタ a にはヤンクした順にすべての行が保存され -ます。 - -============================================================================== -*10.2* 置換 *find-replace* - -":substitute" コマンドを使うと、指定した範囲内の文字列を置換できます。コマンド -の書式は次のとおりです: > - - :[range]substitute/from/to/[flags] - -このコマンドは [range] で指定された行範囲の中の文字列 "from" を文字列 "to" に -置換します。例えば、次のコマンドを実行すると、すべての行の "Professor" が -"Teacher" に置換されます: > - - :%substitute/Professor/Teacher/ -< - Note: - ":substitute" の綴りを完全に入力するような人はまずいません。普通は短縮 - 形の ":s" が使われます。以降ではこの短縮形を使います。 - -コマンドの前の "%" はファイル全体を意味する範囲指定です。範囲指定がない場合は、 -現在行のみ置換されます。範囲指定については次の節で述べます |10.3|。 - -初期設定では、各行の最初に見つかったものだけが変更されます。例えば、上のコマン -ドを実行すると、次の行は: - - Professor Smith criticized Professor Johnson today. ~ - -このように変更されます: - - Teacher Smith criticized Professor Johnson today. ~ - -すべてを置換するには g (global) フラグを指定してください: > - - :%s/Professor/Teacher/g - -これを実行すると、先程の行は次のようになります。 - - Teacher Smith criticized Teacher Johnson today. ~ - -フラグは他にもあります。p (print=出力) フラグ を指定すると、最後に変更された -行が表示されます。c (confirm=確認) フラグを指定すると、一つ一つ確認しながら置 -換できます。次のようにして使います: > - - :%s/Professor/Teacher/c - -"Professor" が現れる最初の場所が検索され、置換される予定のテキストが表示されま -す。そして、次のようなプロンプトが表示されます: > - - Teacher に置換しますか? (y/n/a/q/l/^E/^Y) - -ここでは次のいずれかの返答が必要です。 - - y Yes; 置換する。 - n No; 置換せずにスキップ。 - a All; 置換する。以降すべて確認なしで置換する。 - q Quit; 置換を終了する。 - l Last; 置換をしてから終了する。 - CTRL-E 画面を一行上にスクロールする。 - CTRL-Y 画面を一行下にスクロールする。 - - -置換コマンドの "from" の部分は実際にはパターン (正規表現) です。これは検索コマ -ンドで使うのと同じものです。例えば、次のコマンドでは、行頭に現れる "the" のみ -が置換されます: > - - :s/^the/these/ - -"from" や "to" にスラッシュ (/) を含めるには、バックスラッシュ (\) を前置する -必要がありますが、スラッシュの代わりに他の文字を使えばその必要はありません。例 -えばプラス (+) など: > - - :s+one/two+one or two+ - -============================================================================== -*10.3* コマンドの範囲指定 - -":substitute" などの : コマンドは、実行する範囲を指定できます。これを範囲指定 -(range) と呼びます。 -範囲指定の基本形式は {number},{number} です。例: > - - :1,5s/this/that/g - -1 行目から 5 行目まで置換コマンドが実行されます。5 行目も範囲に入ります。範囲 -指定はコマンドの前に指定してください。 - -特定の一行だけ指定するには、数字を一つだけ指定します: > - - :54s/President/Fool/ - -一部のコマンドは範囲指定を省略するとファイル全体を処理します。そのようなコマン -ドで現在行だけを処理するには "." を使います。例えば、":write" コマンドの範囲指 -定を省略するとファイル全体が保存されますが、現在行だけを保存するには、次のよう -にします: > - - :.write otherfile - -一行目の行番号は 1 です。最終行は "$" で指定できます。例えば、現在行から最終行 -までの範囲で置換をするには、次のようにします: > - - :.,$s/yes/no/ - -先程使った "%" は "1,$"、つまり一行目から最終行までと同じことです。 - - -パターンを使った範囲指定 ------------------------- - -例えば、本のどこかの章を編集していて、その章で使われている "grey" を全て -"gray" に置換したいとします。ただし、その章だけを置換、つまり次章は変更したく -ありません。章は行頭が "Chapter" で始まる行で区切られています。次のコマンドで -それができます: > - - :?^Chapter?,/^Chapter/s=grey=gray=g - -パターン検索が二回使われています。最初の "?^Chapter?" では現在行から上に向かっ -て検索しています。この ?pattern? という範囲の書き方は後方検索をするために使い -ます。同様に、"/^Chapter/" で前方検索を行い、次章の先頭を検索しています。 -上の例では、説明をわかりやすくするために、置換コマンドの区切りに "=" を使って -います。スラッシュでも他の文字でも動作に違いはありません。 - - -加算と減算 ----------- - -実は上のコマンドには少しだけ間違いがあります。次章のタイトルに "grey" が含まれ -ていると、それも置換されてしまいます。それが期待どおりの動作ならいいのですが、 -そうでなければ? その場合はオフセットを指定すればよいのです。 -パターンを検索し、その一行上の行を使うには、次のようにします: > - - /Chapter/-1 - -数字は 1 でなくても構いません。ヒットした行の 2 行下を指定するなら、次のように -します: > - - /Chapter/+2 - -オフセットは他の範囲指定にも使えます。例えば: > - - :.+3,$-5 - -これは、現在行の 3 行下から、最終行の 5 行上までの範囲を指定しています。 - - -マークを使う ------------- - -行番号を直接指定する代わりに、マークを使うこともできます。 -マークの使い方は三章で説明しました。例えば、範囲指定したい領域の先頭を "mt" で -マークし、領域の末尾を "mb" でマークします。すると、マークを使って次のように範 -囲指定をすることができます (マークのある行は範囲に含まれます): > - - :'t,'b - - -ビジュアルモードと範囲指定 --------------------------- - -ビジュアルモードでテキストを選択し、":" を押してコマンドラインモードに入ると、 -次のような表示になります: > - - :'<,'> - -この状態でコマンドを入力すると、そのコマンドはビジュアル選択した範囲に対して適 -用されます。 - - Note: - 行の一部だけビジュアルモードで選択した場合や、CTRL-V で矩形選択した場 - 合でも、コマンドは行全体に適用されます。これは将来、変更されるかも知れ - ません。 - -実は、'< と '> はマークです。ビジュアル選択の始点と終点を示しています。このマー -クは、次にビジュアル選択するまで同じ場所を指しています。そのため、 "'<" コマン -ドでその場所にジャンプすることもできます。マークと他の範囲指定方法を組み合わせ -ることもできます: > - - :'>,$ - -これは、選択範囲の終点からファイルの末尾までを範囲指定しています。 - - -行数指定 --------- - -変更したい行数が分かっているなら、その数を入力してから ":" を押してください。 -例えば、"5:" と入力すると、次のような表示になります: > - - :.,.+4 - -続けて、使いたいコマンドを入力してください。これは、"." (現在行) から ".+4" (4 -行下) が範囲指定されています。つまり範囲は 5 行ということです。 - -============================================================================== -*10.4* global コマンド - -":global" コマンドは Vim の中でも最も強力な機能の一つです。パターンにヒットす -る行を検索し、その行で、任意のコマンドを実行できます。コマンドの書式は次のとお -りです: > - - :[range]global/{pattern}/{command} - -":substitute" コマンドに似ていますが、文字列が置換されるのではなく、{command} -コマンドが実行されます。 - - Note: - ":global" で実行できるのは ":" で始まるコマンドだけです。ノーマルモー - ドコマンドはそのままでは使えません。|:normal|コマンドを使ってください。 - -例えば、C++ スタイルのコメント内の "foobar" を "barfoo" に置換したいとします。 -コメントは "//" で開始されています。次のコマンドを使いましょう: > - - :g+//+s/foobar/barfoo/g - -最初の ":g" は ":global" の短縮形です。":substitute" を ":s" と縮めるのと同じ -です。次に "+" 記号で囲まれたパターンがあります。今回はスラッシュを含んだパター -ンを検索するので、セパレータに "+" を使っています。その後に、"foobar" を -"barfoo" に置換するコマンドが続きます。 -範囲指定を省略した場合、global コマンドはファイル全体に適用されます。そのため、 -上の例では範囲指定をしていません。この点は、":substitute" が、範囲指定を省略す -ると現在行だけ処理するのと異なっています。 -このコマンドは完璧ではありません。"//" が行の途中にあった場合もヒットしてしま -うので、行頭から "//" までの文字も置換されてしまいます。 - -":substitute" と同じく、どんなパターンでも使えます。もっと複雑なパターンを覚え -たら使ってみてください。 - -============================================================================== -*10.5* 矩形選択 - -CTRL-V を使うと、テキストの矩形部分を選択することができます。ここでは、矩形選 -択でのみ使える特殊なコマンドを説明します。 - -矩形選択では、"$" コマンドに特殊な意味があります。"$" で移動した直後は、選択範 -囲のすべての行で、選択範囲が行末まで拡張されます。現在行より長い行も行末まで選 -択されます。この選択効果は、左右の移動をすると失われてしまいます。つまり、"j" -なら効果は残りますが、"h" では元に戻ってしまいます。 - - -テキストの挿入 --------------- - -"I{string}<Esc>" コマンドを使うと、各行の、矩形選択した左側に {string} を挿入 -できます。例えば、CTRL-V を押して矩形選択を開始し、カーソルを動かして選択範囲 -を設定します。次に I を押して挿入モードに入り、テキストを挿入します。このとき、 -挿入したテキストは最初の行にだけ表示されます。 -<Esc> を押して挿入モードを抜けると、テキストが魔法のように選択範囲の残りの行に -挿入されます。例: - - include one ~ - include two ~ - include three ~ - include four ~ - -カーソルを "one" の "o" に移動し CTRL-V を押します。"3j" で、"four" まで移動し -ます。これで 4 行が矩形選択されました。そして、次のコマンドを入力します: > - - Imain.<Esc> - -結果は次のようになります: - - include main.one ~ - include main.two ~ - include main.three ~ - include main.four ~ - -選択範囲の途中に短い行があって、その行の文字が選択範囲に入ってなかった場合は、 -その行には何も挿入されません。例えば、以下のテキストで、一行目と三行目の -"long" を矩形選択します。二行目は短いのでなにも選択されていません: - - This is a long line ~ - short ~ - Any other long line ~ - - ^^^^ 選択範囲 - -そして、"Ivery <Esc>" を入力すると、次のようになります: - - This is a very long line ~ - short ~ - Any other very long line ~ - -短かい行には何も挿入されません。 - -改行を含むテキストを挿入した場合、"I" は通常の挿入コマンドと同じ動作をします。 -つまり、最初の行にだけテキストが挿入されます。 - -"A" コマンドも同様の動作をします。ただし、テキストは右側に挿入されます。そし -て、短い行にもテキストが挿入されます。"I" と使い分ければ、短い行にテキストを挿 -入するかどうかを選択することができます。 -"A" には特別な場合が一つあります。矩形選択時に "$" を使って各行の行末まで選択 -範囲を拡張した場合、"A"を使うと各行の行末にテキストが追加されます。 -上と同じ例を使って、こんどは "$A XXX<Esc>" と入力すると、結果は次のようになり -ます: - - This is a long line XXX ~ - short XXX ~ - Any other long line XXX ~ - -"$" を使わなければこの効果は出せません。Vim は "$" が使われたかどうかを記憶し -ています。カーソルを一番長い行の行末に移動し、見た目の選択範囲を同じにしても、 -同じ結果にはなりません。 - - -テキストの変更 --------------- - -矩形選択で "c" コマンドを使うと、選択範囲が削除され、挿入モードに入ります。入 -力された文字列は選択されていた各行に挿入されます。 -上と同じ例を使って、"long" を選択しているときに今度は "c_LONG_<Esc>" と入力す -ると、結果は次のようになります: - - This is a _LONG_ line ~ - short ~ - Any other _LONG_ line ~ - -"I" コマンドの場合と同じく、短い行は無視されます。また、新しい文字列には改行は -入力できません。 - -"C" コマンドの場合は、ブロックの左端から行末までが削除されます。そして、挿入 -モードに入り、文字列を入力できるようになります。その文字列は各行の行末に追加さ -れます。 -また同じ例ですが、こんどは "Cnew text<Esc>" と入力すると、結果は次のようになり -ます。 - - This is a new text ~ - short ~ - Any other new text ~ - -注意すべきは、"long" という単語だけが選択されていても、これを実行すると、行末 -まで全部消えてしまう点です。つまり、選択範囲の左端の位置だけが意味を持ちます。 -繰り返しですが、文字が選択されていない短い行はここでも無視されます。 - -その他に、矩形選択内の文字列を変更するコマンドには次のようなものがあります。 - - ~ 大文字/小文字切換え (a -> A and A -> a) - U 大文字化する (a -> A and A -> A) - u 小文字化する (a -> a and A -> a) - - -一つの文字で埋める ------------------- - -選択範囲全体を一つの文字で埋めるには "r" コマンドを使います。またまた、上で用 -いた例ですが、こんどは "long" を選択した上で "rx" と入力します: - - This is a xxxx line ~ - short ~ - Any other xxxx line ~ - - - Note: - 行末を越えて矩形選択したい場合は、25 章の 'virtualedit' の説明を参照し - てください。 - - -シフト ------- - -">" コマンドを使うと、選択されたテキストを右側にシフトできます。間は空白で埋め -られます。シフトの開始位置は矩形選択の左端です。 -また同じ例を使って、今度は ">" を実行すると次のようになります: - - This is a long line ~ - short ~ - Any other long line ~ - -シフトされる桁数は 'shiftwidth' オプションで設定します。これを 4 に変更するに -は次のようにします: > - - :set shiftwidth=4 - -"<" コマンドを使うと、選択範囲の左側にある空白を一つのシフト分だけ削除できま -す。このコマンドは選択範囲の左側にある空白の量によって制限されます。つまり、空 -白がシフト量より少ない場合は、可能な範囲だけ空白が削除されます。 - - -行の結合 --------- - -"J" コマンドを使うと、選択範囲の行を一行に連結できます。つまり改行が削除されま -す。正確には、改行、行頭の空白、行末の空白、が一つの空白で置換されます -('joinspaces' オプションで動作を変更できます)。 -さて、また同じ例を使って、今度は "J" を実行します: - - This is a long line short Any other long line ~ - -"J" コマンドは矩形選択以外でも使えます。"v" や "V" で選択した場合も全く同じ動 -作をします。 - -空白を変更したくない場合は、"gJ" コマンドを使ってください。 - -============================================================================== -*10.6* ファイルの一部の保存と読み込み - -メールを書いているとき、他のファイルを取り込みたいことがあるかもしれません。そ -れには ":read {filename}" コマンドを使います。指定したファイルの内容が現在行の -下にプットされます。 -次の文章でやってみましょう。 - - Hi John, ~ - Here is the diff that fixes the bug: ~ - Bye, Pierre. ~ - -カーソルを二行目に移動し、次のコマンドを入力します: > - - :read patch - -"patch" という名前のファイルが挿入され、次のようになります: - - Hi John, ~ - Here is the diff that fixes the bug: ~ - 2c2 ~ - < for (i = 0; i <= length; ++i) ~ - --- ~ - > for (i = 0; i < length; ++i) ~ - Bye, Pierre. ~ - -":read" コマンドに範囲指定すると、指定されたファイルが範囲指定された行の下に -プットされます。例えば、":$r patch" なら、"patch" の内容がファイルの末尾に追加 -されます。 -ファイルの先頭に読み込むにはどうすればいいでしょうか。それには、行番号 0 を指 -定します。そのような行は実際にはないので、他のコマンドに指定するとエラーになる -かもしれませんが、このコマンドでは指定できます: > - - :0read patch - -"patch" の内容がファイルの先頭にプットされます。 - - -ファイルの一部だけ保存 ----------------------- - -ファイルの一部だけ保存するには、":write" コマンドを使います。範囲指定を省略す -るとファイル全体が保存されますが、範囲指定すると、指定した範囲の行だけが保存さ -れます: > - - :.,$write tempo - -このコマンドで、現在行から最終行までが "tempo" に保存されます。ファイルが既に -存在している場合はエラーメッセージが表示されるので、間違ってファイルを上書きす -る心配はありません。ファイルを上書きしたい場合は、! を付けてください: > - - :.,$write! tempo - -注意: ! は ":write" コマンドの直後に指定してください。間に空白を入れると、フィ -ルタコマンドになってしまいます。フィルタコマンドについては後で説明します。 - - -ファイルに追記する ------------------- - -この章の最初の節で、複数の行をレジスタに集める方法を説明しました。同じように、 -複数の行をファイルに集めることができます。まず、次のコマンドで最初の行を保存し -てください: > - - :.write collection - -次に、二行目として保存したい行に移動し、次のように入力します: > - - :.write >>collection - -新規ファイルとして保存するのではなく、">>" を使って、ファイルの末尾に追記する -ことを指示しています。あとは必要なだけこの操作を繰り返してください。 - -============================================================================== -*10.7* テキストの整形 - -文章を入力しているとき、行が画面内に収まるように自動的に改行してくれたら便利で -すよね。そうするには、'textwidth' オプションを設定します: > - - :set textwidth=72 - -vimrc ファイルの見本 (|vimrc_example.vim|) で、テキストファイルが開かれたとき -にこのオプションが設定されるようにしていたのを覚えているでしょうか。したがっ -て、vimrc ファイルの見本をそのまま使っているなら、オプションは既に設定されてい -ます。現在の 'textwidth' の設定を確認するには、次のようにします: > - - :set textwidth - -これで、行が 72 文字より長くなった行が改行されるようになりました。ただし、行の -途中からテキストを挿入したときや、単語削除をしたときは、行が 72 文字よりも長く -なったり短くなったりします。既存の文章が自動的に再整形されたりはしません。 -現在の段落を整形するには、次のコマンドを使います: > - - gqap - -これは "gq" というオペレータで始まるコマンドです。次に "ap" というテキストオブ -ジェクトが指定されています。これは "a paragraph" (一つの段落) という意味です。 -段落は、空行で区切られたテキストです。 - - Note: - 空行 (改行文字だけの行) と空白行 (空白文字だけの行) は違います。段落の - 区切りは「空行」だけです。見た目では気付きにくいので注意! - -"ap" 以外のテキストオブジェクトや、移動コマンドも指定できます。段落が正しく分 -割されているなら、次のコマンドでファイル全体を整形できます: > - - gggqG - -これは、"gg" で一行目に移動し、"gq" で整形オペレータを指定、"G" でファイル末尾 -までジャンプしています。 - -段落の区切りが明確でない場合は、手動で行を選択して整形してください。整形したい -範囲の最初の行に移動し、"gqj" コマンドを使います。現在行と次の行が整形されま -す。現在行が短い場合は、次の行の単語が現在行に移動します。現在行が長い場合は、 -現在行の単語が次の行に移動します。カーソルは次の行に移動しているので、"." でコ -マンドを再実行できます。あとは必要なだけ繰り返してください。 - -============================================================================== -*10.8* 大文字/小文字の変換 - -"section header" という小文字のテキストがあります。これを、"section" だけ大文 -字にするには、"gU" オペレータを使います。カーソルを先頭に移動して、コマンドを -実行してください: > - - gUw -< section header ----> SECTION header - -"gu" オペレータで小文字に変換できます: > - - guw -< SECTION header ----> section header - -"g~" を使うと、大文字と小文字を切り替えることができます。今説明したのは全てオ -ペレータなので、移動コマンドやテキストオブジェクトやビジュアルモードと組み合わ -せることができます。 -オペレータを行に適用するには、オペレータを二回繰り返してください。例えば、"d" -は削除オペレータなので、"dd" で一行削除になります。同じように、"gugu" で行全体 -が小文字になります。もっと短く、"guu" でも構いません。"gUgU" は "gUU"、"g~g~" -は "g~~" と短縮できます。例: > - - g~~ -< Some GIRLS have Fun ----> sOME girls HAVE fUN ~ - -============================================================================== -*10.9* 外部プログラムを使う - -Vim には強力なコマンドがたくさんあるので何でもできますが、外部プログラムを使っ -た方がもっとキレイで高速に処理できる場合もあります。 -"!{motion}{program}" コマンドを使うと、ファイルの一部を、外部プログラムでフィ -ルタすることができます。つまり、{program} で指定したプログラムが実行され、 -{motion} で指定した範囲のテキストがプログラムに入力され、指定された範囲のテキ -ストがプログラムの出力で置き換えられます。 -UNIX のフィルタに馴染のない方にはわかりにくいと思うので、例を交えて説明します。 -sort コマンドはファイルの中身をソート (並べ替え) するコマンドです。次のコマン -ドを実行すると、ソートされていない input.txt の中身が整列され、output.txt に保 -存されます。(この例は UNIX でも Microsoft Windows でも動作します) > - - sort <input.txt >output.txt - -さて、同じことを Vim でやってみましょう。1 行目から 5 行目までをソートしてみま -す。カーソルを一行目に移動して、次のコマンドを実行します: > - - !5G - -"!" はフィルタを実行するためのコマンドです。次に、移動コマンドを実行し、フィル -タに渡す範囲を指定しています。"5G" は 5 行目に移動するコマンドなので、1 行目 -(現在行) から 5 行目までがフィルタの範囲として指定されます。 -カーソルが画面の一番下に移動し、! プロンプトが表示されるので、フィルタプログラ -ムの名前を入力してください。この場合なら "sort" ですね。したがって、コマンドは -全部で次のようになります。 > - - !5Gsort<Enter> - -コマンドを実行すると、最初の五行が sort プログラムで処理され、元のテキストが、 -プログラムの出力で置き換えられます。 - - line 55 line 11 - line 33 line 22 - line 11 --> line 33 - line 22 line 44 - line 44 line 55 - last line last line - -"!!" コマンドを使うと、現在行をフィルタできます。Unix では "date" コマンドで現 -在の日時を出力できるので、"!!date<Enter>" で現在行を "date" の出力で置き換える -ことができます。これはファイルに日付を挿入するのに便利です。 - - -うまく動作しない場合 --------------------- - -シェルを起動し、テキストを入力し、出力を取り込むためには、シェルが正しく実行で -きるように設定されている必要があります。フィルタ処理に問題がある場合は、以下の -オプションを確認してください。 - - 'shell' 外部プログラムを実行するために使われるプログラムの指定 - 'shellcmdflag' シェルにコマンドを渡すための引数指定 - 'shellquote' コマンドを囲むためのクオート文字 - 'shellxquote' コマンドとリダイレクトを囲むためのクオート文字 - 'shelltype' シェルの種類 (Amiga専用) - 'shellslash' ファイル名のバックスラッシュをスラッシュにする - (MS-Windows 系専用) - 'shellredir' コマンドの出力をファイルに保存するために指定する文字列 - -Unix では、設定する必要はほとんどありません。なぜなら、おそらく sh 系か csh 系 -のシェルが使われているからです。Vim は 'shell' に "csh" という文字列が含まれて -いるかどうかでシェルの種類を判断し、関連したオプションを自動的に設定します。 -しかし、MS-Windows ではいろんなシェルがあるので、フィルタを動作させるためには、 -オプションを設定する必要があるかもしれません。詳しくはオプションのヘルプを参照 -してください。 - - -コマンドの出力を読み込む ------------------------- - -カレントディレクトリの内容を読み込むには、次のようにします。 - -Unix系: > - :read !ls -MS-Windows系: > - :read !dir - -"ls" や "dir" コマンドの出力が取り込まれ、カーソルの下に挿入されます。これは -ファイルの読み込みに似ていますが、"!" を使ってコマンドを指定している点が違いま -す。 -コマンドに引数を指定することもできます。出力をプットする場所を指定することもで -きます: -> - :0read !date -u - -これはファイルの先頭に現在の日付と時間を UTC 形式で挿入します ("-u" 引数が使え -る date コマンドが必要ですよ。当たり前ですが...)。Note: "!!date" が現在行を置 -き換えるのに対して、":read !date" は行を挿入するという点が違います。 - - -コマンドにテキストを入力する ----------------------------- - -Unix の "wc" コマンドは単語を数えることができます。編集中のファイル内の単語を -数えるには、次のようにします: > - - :write !wc - -これは上述の write コマンドと似ていますが、"!" を使って外部プログラムを指定し -ている点が違います。テキストがコマンドの標準入力に渡され、次のような結果が表示 -されます: - - 4 47 249 ~ - -"wc" コマンドは冗長なメッセージを出力しません。この出力は、行数が 4、単語数が -47、文字数が 249 であることを示しています。 - -次のような間違いに気をつけてください: > - - :write! wc - -これはカレントディレクトリの "wc" というファイルに強制上書きするコマンドです。 -空白は重要ですよ! - - -画面の再描画 ------------- - -外部プログラムがエラーを起こした場合、画面がめちゃくちゃになってしまうことがあ -ります。Vim は必要だと思われる最小限の領域だけを再描画しますが、他のプログラム -の出力内容を完全に把握することはできません。次のコマンドで画面を再描画できま -す: > - - CTRL-L - -============================================================================== - -次章: |usr_11.txt| クラッシュからの復帰 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_11.jax b/runtime.old/doc/usr_11.jax deleted file mode 100644 index 96c60a14b..000000000 --- a/runtime.old/doc/usr_11.jax +++ /dev/null @@ -1,321 +0,0 @@ -*usr_11.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - クラッシュからの復帰 - - -マシンがクラッシュした? しかも何時間もかけて編集していたところだった? 慌てな -いで! 作業を復元するための情報がハードディスクに記録されています。この章で -は、作業の復元方法や、スワップファイルの扱いについて説明します。 - -|11.1| リカバリの基本 -|11.2| スワップファイルはどこにある? -|11.3| クラッシュした? -|11.4| さらなる情報 - -次章: |usr_12.txt| 便利な小技 -前章: |usr_10.txt| 大規模な編集 -目次: |usr_toc.txt| - -============================================================================== -*11.1* リカバリの基本 - -ほとんどの場合、編集していたファイルの名前さえ覚えていれば (そしてハードディス -クが正しく動いていれば) ファイルのリカバリはとても簡単です。Vim を起動するとき -に、ファイル名に "-r" 引数を付けるだけです: > - - vim -r help.txt - -スワップファイル (編集中の文書を保持するのに使われる) が読み込まれ、編集してい -たファイルのかけらが読み込まれます。変更がリカバリされると次のようなメッセージ -が表示されます (もちろん、ファイル名は違うでしょう): - - Using swap file ".help.txt.swp" ~ - Original file "~/vim/runtime/doc/help.txt" ~ - Recovery completed. You should check if everything is OK. ~ - (You might want to write out this file under another name ~ - and run diff with the original file to check for changes) ~ - You may want to delete the .swp file now. ~ - -日本語: - スワップファイル ".help.txt.swp" を使用中 ~ - 原本ファイル "~/vim/runtime/doc/help.txt" ~ - リカバリが終了しました. 全てが正しいかチェックしてください. ~ - (変更をチェックするために, このファイルを別の名前で保存した上で ~ - 原本ファイルとの diff を実行すると良いでしょう) ~ - それから.swpファイルを削除してください ~ - -念のため、ファイルを違う名前で保存しましょう: > - - :write help.txt.recovered - -復元前のファイルと比較して、正しく復元できたどうかを確認してください。それには -vimdiff (|08.7|) が便利です。例: > - - :write help.txt.recovered - :edit # - :diffsp help.txt - -復元したファイルが、復元前のファイル (クラッシュする前に保存してあったファイ -ル) の内容を含んでいることを確認し、失われた行がないかどうかも確認してください -(Vim がリカバリに失敗することもあるので)。 -リカバリ時に警告メッセージが表示された場合は、それを注意深く読んでください。ま -あ、そんなことは滅多にありませんが。 - -リカバリ後のテキストがファイル内のテキストと同じ場合は次のようなメッセージが表 -示されます: - - Using swap file ".help.txt.swp" ~ - Original file "~/vim/runtime/doc/help.txt" ~ - Recovery completed. Buffer contents equals file contents. ~ - You may want to delete the .swp file now. ~ - -日本語: - スワップファイル ".help.txt.swp" を使用中 ~ - 原本ファイル "~/vim/runtime/doc/help.txt" ~ - リカバリが終了しました. バッファの内容とファイルの内容は同じです. ~ - それから.swpファイルを削除してください ~ - -これが起こるのは既にファイルをリカバリしていたか、なにか変更したあとでファイル -を保存していた場合などです。この場合は安全にスワップファイルを削除できます。 - -普通は、クラッシュ直前の変更はリカバリできません。スワップファイルは、四秒間入 -力がなかったときや、約 200 文字入力されるごとに、ディスクに書き出されます。こ -の動作は 'updatetime' と 'updatecount' で設定できます。ですから、変更を保存す -る間もなしにシステムがダウンすると、最後に書き出した後の変更は失われてしまうの -です。 - -名前のないファイルを編集していた場合は、引数に空文字列を与えてください: > - - vim -r "" - -これは正しいディレクトリで実行してください。ディレクトリが違うとスワップファイ -ルを検出できません。 - -============================================================================== -*11.2* スワップファイルはどこにある? - -スワップファイルはいろんな場所に保存できます。通常は元のファイルと同じディレク -トリに保存されます。スワップファイルを見つけるには、ファイルのあるディレクトリ -に移動して、次のコマンドを使います: > - - vim -r - -検出されたスワップファイルの一覧が表示されます。カレントディレクトリのファイル -のスワップファイルが別ディレクトリにある場合はそれも表示されます。ディレクトリ -ツリーを再帰的に処理したりはしません。 -出力は次のようなものです: - - スワップファイルが複数見つかりました: ~ - 現在のディレクトリ: ~ - 1. .main.c.swp ~ - 所有者: mool 日付: Tue May 29 21:00:25 2001 ~ - ファイル名: ~mool/vim/vim6/src/main.c ~ - 変更状態: あり ~ - ユーザ名: mool ホスト名: masaka.moolenaar.net ~ - プロセスID: 12525 ~ - ディレクトリ ~/tmp: ~ - -- なし -- ~ - ディレクトリ /var/tmp: ~ - -- なし -- ~ - ディレクトリ /tmp: ~ - -- なし -- ~ - -リカバリを実行したとき、スワップファイルが複数見つかった場合は、スワップファイ -ルの一覧が表示されるので、使いたいスワップファイルを番号で選択してください。日 -付を見て慎重に選択してください。 -どれを指定したらよいかわからない場合は、一つずつ試して中身を確認してください。 - - -スワップファイルを直接指定する ------------------------------- - -使いたいスワップファイルがわかっている場合は、スワップファイルの名前を指定すれ -ばリカバリすることができます。元ファイルの名前はスワップファイルから取得されま -す。 - -例: > - vim -r .help.txt.swo - -これはスワップファイルが本来の場所以外にあるときも便利です。 -Vim は *.s[uvw][a-z] のパターンにマッチするファイルをスワップファイルとして認 -識します。 - -うまく動作しない場合は、Vim が表示したファイル名を見て、それにしたがってファイ -ル名を変更してください。'directory' オプションを確認し、スワップファイルが保存 -される場所も確認してください。 - - Note: - スワップファイルには、'dir' オプションに指定されたディレクトリ内の、 - "filename.sw?" というパターンにマッチしたファイルが使われます。ワイル - ドカードの展開ができなかった (例えば 'shell' オプションが無効であった) - 場合は、"filname.swp" というファイルが検索されます。それも失敗した場合 - は、スワップファイルを直接指定してリカバリするしかありません。 - -============================================================================== -*11.3* クラッシュした? *ATTENTION* *E325* - -Vim には、うっかりミスを防止するための仕組みがあります。ファイルを開こうとした -ときに、次のようなメッセージが表示されることがあります: - - E325:注意 ~ - 次の名前でスワップファイルを見つけました ".main.c.swp" ~ - 所有者: mool 日付: Tue May 29 21:09:28 2001 ~ - ファイル名: ~mool/vim/vim6/src/main.c ~ - 変更状態: なし ~ - ユーザ名: mool ホスト名: masaka.moolenaar.net ~ - プロセスID: 12559 (まだ実行中) ~ - 次のファイルを開いている最中 "main.c" ~ - 日付: Tue May 29 19:46:12 2001 ~ - - (1) 別のプログラムが同じファイルを編集しているかもしれません. ~ - この場合には, 変更をした際に最終的に, 同じファイルの異なる ~ - 2つのインスタンスができてしまうことに注意してください. ~ - 終了するか, 注意しながら続けます. ~ - - (2) このファイルの編集セッションがクラッシュした. ~ - この場合には ":recover" か "vim -r main.c" ~ - を使用して変更をリカバーします(":help recover" を参照). ~ - 既にこれを行なったのならば, スワップファイル ".main.c.swp" ~ - を消せばこのメッセージを回避できます. ~ - -ファイルを開くとき、スワップファイルが既に存在するかどうかがチェックされます。 -既に存在しているなら、何かがおかしくなっているのです。原因は次の二つの内のどち -らかでしょう。 - -1. 別のセッションが同じファイルを編集している。上記メッセージの "プロセスID" - の行に注目してください。次のようになっていますね: - - プロセスID: 12559 (まだ実行中) ~ - - "(まだ実行中)" というのは、このファイルを編集しているプロセスが、同じマシン - 上で実行されていることを示しています。この情報は Unix 以外のシステムでは表 - 示されないかもしれません。ネットワーク越しにファイルを編集している場合も、 - この情報は表示されません。なぜなら、そのプロセスは他のコンピュータで実行さ - れているからです。そのような場合は、自分で状況判断してください。 - 別の Vim が同じファイルを編集している場合、そのまま編集を続けると同じファイ - ルの二つのバージョンができてしまいます。後から書き込まれたファイルがもう一 - 方のファイルを上書きしてしまうので、変更内容が失われることになります。この - ような場合は、そのまま Vim を終了したほうがいいでしょう。 - -2. Vim またはマシンがクラッシュしたのでスワップファイルが残っている。メッセー - ジの日付を確認してください。スワップファイルの日付が開こうとしたファイルよ - りも新しく、メッセージに次の行が含まれている場合: - - 変更状態: あり ~ - - この場合、クラッシュしたセッションが存在し、リカバリすべき内容が含まれてい - る可能性があります。 - ファイルの日付がスワップファイルの日付よりも新しい場合、クラッシュした後に - 何らかの変更が加えられた可能性があります (おそらく、リカバリした後に、スワッ - プファイルを消し忘れたのではないですか?)。もしくは、スワップファイルが更新 - されてからクラッシュするまでの間にファイルが保存されたのかもしれません (そ - れならラッキーです。古いスワップファイルは必要ありません)。そういう場合は、 - 次のような警告が表示されます: - - スワップファイルよりも新しいです! ~ - - -読めないスワップファイル ------------------------- - -ときどき、スワップファイルの名前の下に、次の行が表示されることがあります - - [読込めません] ~ - -これには良い状態と悪い状態があります。 - -以前のセッションがファイルに変更を加えることなくクラッシュした場合は良い状態で -す。その場合、ゼロバイトのスワップファイルが作成されているはずです。それを削除 -して作業を続けてください。 - -スワップファイルの読み込み権限があなたにない場合は少し悪い状態です。ファイルを -読み込み専用で開くか、Vim を終了するかしてください。マルチユーザーシステムで、 -あなたが違う名前でログインしていたときに変更を加えていたのだとしたら、その名前 -でログインしなおせば "読み込みエラー" を直せるかもしれません。あるいは、その -ファイルを最後に変更した (している) 人を探して話し合う必要があるかもしれませ -ん。 - -スワップファイルを保存しているディスクが物理的に故障している場合はとても悪い状 -態です。幸いにも、そんなことはほとんど起こりません。(可能なら) まず、ファイル -を読み込み専用で開き、変更がどの程度失われたか確認してください。あなたがその -ファイルの責任者なら、変更をやり直す覚悟を決めましょう。 - - -どうしますか? *swap-exists-choices* --------------- - -ダイアログがサポートされている場合、次の五つの選択肢が表示されます: - - スワップファイル ".main.c.swp" が既にあります! ~ - 読込専用で開く([O]), とにかく編集する((E)), 復活させる((R)), ~ - 削除する((D)), 終了する((Q)), 中止する((A)): ~ - -"O" ファイルを読み込み専用で開く。リカバリが必要なくて、ただファイルを表示した - い場合に選択してください。他の誰かがファイルを編集しているときに、ファイル - の内容を変更したいのではなく、確認だけしたい場合にも使えます。 - -"E" ファイルを普通に編集する。注意!他の Vim がそのファイルを編集中の場合、そ - のファイルの二つのバージョンができてしまいます。そうなる前に Vim は警告を - 発しますが、後で残念なことにならないように、最初から安全な選択をしましょ - う。 - -"R" スワップファイルを使ってファイルを復元する。復元すべき内容がスワップファイ - ルに含まれていることがわかっている場合に使ってください。 - -"Q" 終了する。ファイル編集を取り止めます。他の Vim が同じファイルを編集してい - る場合に使ってください。 - Vim を起動中なら、Vim が終了します。複数のファイルを開こうとしていた場合、 - Vim が終了するのは、それが最初のファイルだった場合のみです。":edit" コマン - ドで開こうとしていた場合は、ファイルを開かずに、直前のファイルに戻ります。 - -"A" 停止する。「終了する」に似ていますが、コマンドも即座に停止します。例えば、 - 複数のファイルを開くようなスクリプトを実行したときに、スクリプトを即座に停 - 止させることができます。 - -"D" スワップファイルを削除する。スワップファイルが不要なことがはっきりしている - 場合に使ってください。例えば、スワップファイルが変更を何も含んでいない場合 - や、ファイル本体の日付がスワップファイルより新しい場合に使います。 - Unixでは、スワップファイルを生成したプロセスがまだ実行中の場合、この選択肢 - は表示されません。 - -ダイアログが表示されない (ダイアログをサポートしていない Vim を使っている) 場 -合は、手動で復元作業を実行してください。ファイルを復元するには、次のコマンドを -使います: > - - :recover - - -スワップファイルの存在を常に検出できるとは限りません。例えば、他のセッションが -別のディレクトリにスワップファイルを保存している場合や、他のマシンのファイルを -編集しているためにファイルのパスが違っている場合などです。ですから、警告が表示 -されないからといって安心しないでください。 - -スワップファイルの警告を表示したくない場合は、'shortmess' オプションに "A" フ -ラグを追加してください。しかし特別な理由がなければ設定を変更する必要はないで -しょう。 - -暗号化時のスワップファイルの扱いについては |:recover-crypt| を参照してくださ -い。 - -============================================================================== -*11.4* さらなる情報 - -|swap-file| スワップファイルの名前と作成される場所の説明。 -|:preserve| スワップファイルを手動でディスクに書き込む。 -|:swapname| カレントファイル用のスワップファイルの名前を表示する。 -'updatecount' キーストロークの数。指定された数だけキーが入力されると、スワッ - プファイルがディスクに書き込まれる。 -'updatetime' タイムアウト値。指定された時間内に入力がなかったら、スワップ - ファイルがディスクに書き込まれる。 -'swapsync' スワップファイルを書き込んだときにディスクを同期するかどうか。 -'directory' スワップファイルが保存されるディレクトリの一覧。 -'maxmem' テキストをスワップファイルに保存せずに扱えるメモリの上限。 -'maxmemtot' 同上。ただし、全ファイルの合計値。 - -============================================================================== - -目次: |usr_12.txt| 便利な小技 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_12.jax b/runtime.old/doc/usr_12.jax deleted file mode 100644 index 6f21394ec..000000000 --- a/runtime.old/doc/usr_12.jax +++ /dev/null @@ -1,359 +0,0 @@ -*usr_12.txt* For Vim バージョン 7.3. Last change: 2007 May 11 - - VIM USER MANUAL - by Bram Moolenaar - - 便利な小技 - - -コマンドを組み合わせれば、ほとんど何でもこなすことができます。この章では、便利 -なコマンドの組み合わせをいくつか紹介します。今までに紹介したコマンドを主に使い -ますが、まだ紹介していないコマンドも少し登場します。 - -|12.1| 単語を置換する -|12.2| "Last, First" を "First Last" に変更する -|12.3| リストをソートする -|12.4| 行を逆順に並べ替える -|12.5| 単語を数える -|12.6| マニュアルを引く -|12.7| 空白を取り除く -|12.8| 単語が使われている場所を検索する - -次章: |usr_20.txt| コマンドラインを素早く入力する -前章: |usr_11.txt| クラッシュからの復帰 -目次: |usr_toc.txt| - -============================================================================== -*12.1* 単語を置換する - -置換コマンドを使うと、文章中に現れる単語を別の単語に置換することができます: > - - :%s/four/4/g - -"%" はすべての行を処理するための範囲指定です。末尾の "g" は、行のすべての単語 -を置換するための指定です。 - -上記のコマンドは正しく動作しません。例えば、"thirtyfour" という単語がファイル -に含まれていた場合、"thirty4" に置換されてしまいます。これを防ぐには、"\<" を -使って単語の先頭にヒットさせます: > - - :%s/\<four/4/g - -これでもまだ、"fourteen" のような単語が間違って置換されてしまいます。"\>" を -使って単語の末尾にヒットさせましょう: > - - :%s/\<four\>/4/g - -プログラムを書いているなら、コメントの中にある "four" だけを置換したい場合もあ -るでしょう。コメントの中かどうかを区別するのは難しいので、置換コマンドに "c" -フラグを指定して、確認しながら置換してください: > - - - :%s/\<four\>/4/gc - - -複数のファイル内で置換する --------------------------- - -複数のファイル内で置換したい場合を考えます。ファイルを一つずつ開いて、その都度 -コマンドを入力することもできますが、操作の記録と再実行を使えば、はるかに素早く -置換できます。 -拡張子が ".cpp" の C++ ファイルが入ったディレクトリがあるとします。"GetResp" -という関数を "GetAnswer" に置換してみましょう。 - - vim *.cpp Vim を起動して、すべての C++ ファイルを引数リ - ストに加える。Vim が起動すると、最初のファイル - が表示されます。 - qq レジスタ "q" に記録を開始する。 - :%s/\<GetResp\>/GetAnswer/g - 最初のファイルで置換コマンドを実行する。 - :wnext ファイルを保存し、次のファイルに移動する。 - q 記録を終了する。 - @q レジスタ "q" を実行する。置換コマンドと - ":wnext" が再実行されます。エラーメッセージが - 表示されたりしないか確認してください。 - 999@q レジスタ "q" を繰り返し実行し、残りのファイル - をすべて処理します。 - -最後のファイルを処理したとき、もうそれ以上ファイルがないので、":wnext" コマン -ドがエラーメッセージを表示します。それにより、実行が中断され、すべてが完了しま -す。 - - Note: - 記録されたコマンドの実行中にエラーが発生すると、実行は中断されます。 - ですから、エラーが出ないように注意して操作を記録してください。 - -まだ問題が一つ残っています。もしも、"GetResp" を含んでいないファイルがあった場 -合、置換コマンドがエラーを発生し、そこで処理が停止してしまいます。それを避ける -には、置換コマンドに "e" フラグを指定してください: > - - :%s/\<GetResp\>/GetAnswer/ge - -"e" フラグは、パターンが見つからなくてもエラーを発生させないための指定です。 - -============================================================================== -*12.2* "Last, First" を "First Last" に変更する - -次のような形式で名前の一覧があるとします: - - Doe, John ~ - Smith, Peter ~ - -これを次のように変更したいとします: - - John Doe ~ - Peter Smith ~ - -これはたった一つのコマンドでできてしまいます: > - - :%s/\([^,]*\), \(.*\)/\2 \1/ - -一つずつ説明しましょう。これが置換コマンドであることはわかりますよね。"%" はす -べての行を示す範囲指定です。つまり、ファイルのすべての行で置換が実行されます。 -置換コマンドには "/from/to/" という形式で引数を指定します。スラッシュ (/) は -"from" パターンと "to" 文字列の区切りです。"from" パターンは次のようになってい -ます: - \([^,]*\), \(.*\) ~ - - 一つ目の \( \) で囲まれた部分は "Last" です \( \) - カンマ (,) 以外の文字が [^,] - 何文字でもマッチする * - ", " という文字にそのままマッチ , - 二つ目の \( \) で囲まれた部分は "First" です \( \) - どんな文字でも . - 何文字でもマッチする * - -"to" の部分には "\2" と "\1" が指定されています。これはバックリファレンスとい -うものです。"\( \)" で囲まれた部分にマッチしたテキストを参照しています。"\2" -は二つ目の "\( \)" で囲まれた部分にマッチしたテキスト ("First" name) を参照し -ています。"\1" は一つ目の "\( \)" ("Last" name) を参照しています。 -置換コマンドの "to" 部分には最大で 9 個のバックリファレンスを指定できます。 -"\0" はパターンがマッチしたテキスト全体になります。置換コマンドには他にもいく -つか特殊なアイテムがあります。|sub-replace-special| を参照してください。 - -============================================================================== -*12.3* リストをソートする - -Makefile ではよく、ファイルのリストが使われます。例: - - OBJS = \ ~ - version.o \ ~ - pch.o \ ~ - getopt.o \ ~ - util.o \ ~ - getopt1.o \ ~ - inp.o \ ~ - patch.o \ ~ - backup.o ~ - -このリストをソートするには、外部コマンドの sort を使ってテキストをフィルタリン -グします: > - - /^OBJS - j - :.,/^$/-1!sort - -リストの先頭 (行頭が "OBJS" で始まる行) に移動してから、一行下に移動、その行か -ら次の空行までの範囲をフィルタに通しています。ビジュアルモードで範囲を選択して -から "!sort" を実行する方法でも構いません。その方が入力は簡単です。行がたくさ -んある場合は少し面倒かもしれませんが。 -結果は、次のようになります: - - OBJS = \ ~ - backup.o ~ - getopt.o \ ~ - getopt1.o \ ~ - inp.o \ ~ - patch.o \ ~ - pch.o \ ~ - util.o \ ~ - version.o \ ~ - - -各行の末尾に行結合のためのバックスラッシュ (\) が使われている点に注意して下さ -い。並べ替えたために、これが壊れてしまいました。"backup.o" はリストの最後にあっ -たので行末にバックスラッシュが付いていませんでしたが、並べ替えによって別の場所 -に移動したため、バックスラッシュが必要になったのです。 -一番簡単な解決方法は "A \<Esc>" でバックスラッシュを追加することです。最後の行 -にあるバックスラッシュは次の行を空白行にしておけば削除しなくても問題ありませ -ん。これで同じ問題は二度と起きないでしょう。 - -============================================================================== -*12.4* 行を逆順に並べ替える - -|:global| コマンドと |:move| コマンドを組み合せて、全ての行を 1 行目の上に移動 -することで、行を逆順に並べ替えたファイルを作ることができます。コマンドは次の通 -りです: > - - :global/^/m 0 - -短縮して書くこともできます: > - - :g/^/m 0 - -"^" という正規表現は行の先頭に (それが空行であっても) マッチします。|:move| コ -マンドはマッチした行を 0 行目 (実際には存在しない仮想的な行) の下に移動します。 -つまり、マッチした行がファイルの先頭行になります。|:global| コマンドは行番号が -変更されても処理を継続できます。そして、マッチしたすべての行が、順番にファイル -の先頭に移動していきます。 - -ある一定の範囲だけ並べ替えることもできます。まず、並べ替えたい範囲の一行上に移 -動し、"mt" でマークします。そして、範囲の末尾に移動し、次のように入力します: > - - :'t+1,.g/^/m 't - -============================================================================== -*12.5* 単語を数える - -ときには、単語数に制限のある文章を書かなければならない場合もあるでしょう。Vim -には単語を数えるための機能があります。 -ファイル全体の単語数を数えるには、次のコマンドを使います: > - - g CTRL-G - -"g" の後の空白は入力しないでください。この空白はコマンドを読み易く表記するため -のものです。 -次のような結果が出力されます: - - 列 1 / 0; 行 141 / 157; 単語 748 / 774; バイト 4489 / 4976 ~ - -これを見れば、何番目の単語 (748) にカーソルがあり、ファイル全体でいくつの単語 -(774) があるのかがわかります。 - -ファイルの一部の文章だけ単語を数えたい場合は、テキストの先頭に移動して -"g CTRL-G" を入力し、テキストの末尾に移動して "g CTRL-G" をもう一度入力し、そ -して、表示された単語の位置を引き算して単語数を求めます…これは頭の体操にはなり -ますが簡単な方法とは言えませんね。ビジュアルモードを使えば、テキストを選択して -から "g CTRL-G" を入力するだけです。次のような結果が表示されます: - - 選択 5 / 293 行; 70 / 1884 単語; 359 / 10928 バイト ~ - -単語や行などを数える他の方法については |count-items| を参照してください。 - -============================================================================== -*12.6* マニュアルを引く *find-manpage* - -シェルスクリプトや C プログラムを書いているときに、コマンドや関数のマニュアル -を引きたいことがあると思います (Unix での話です)。まずは簡単な方法でやってみま -しょう。ヘルプを引きたい単語の上にカーソルを移動して、次のコマンドを入力しま -す: > - - K - -単語を引数として "man" プログラムが実行され、マニュアルが見つかった場合は、そ -れが表示されます。テキストをスクロール表示するために、標準設定のページャ (おそ -らく "more" プログラム) が使われます。マニュアルを最後まで表示したら、<Enter> -を押して Vim に戻ってください。 - -この方法の欠点は編集中のテキストとマニュアルを同時に表示できないことです。しか -し、Vim ウィンドウの中にマニュアルを表示する方法もあります。最初に、man ファイ -ルタイププラグインをロードしてください: > - - :runtime! ftplugin/man.vim - -このコマンドを vimrc ファイルに書いておけばいつでも使えるようになります。さて、 -":Man" コマンドが使えるようになりました。新しいウィンドウにマニュアルを表示で -きます: -> - :Man csh - -カラー表示されたテキストをスクロールして表示することができます。これで、調べた -い説明を見つけることができますね。CTRL-W w を使えば、元のウィンドウにジャンプ -できます。 -特定のセクションのマニュアルを表示したいときは、セクション番号を指定してくださ -い。例えば、セクション 3 にある "echo" を調べるなら、次のようにします: > - - :Man 3 echo - -マニュアルの中で "word(1)" のような形式で示されている他のマニュアルにジャンプ -するには CTRL-] を押してください。":Man" コマンドが続けて使われた場合は、同じ -ウィンドウが使用されます。 - -カーソル下の単語のマニュアルを表示するには、次のコマンドを使います: > - - \K - -(自分で <Leader> を再定義している場合は、"\" ではなく、それを使ってください) -例えば、次の行を編集中に "strstr()" の返り値を知りたくなったら: - - if ( strstr (input, "aap") == ) ~ - -"strstr" の上にカーソルを移動し、"\K" と入力してください。ウィンドウが開いて -strstr() のマニュアルが表示されます。 - -============================================================================== -*12.7* 空白を取り除く - -行末の空白は無用であり、浪費であり、見苦しいものであると考える人々がいます。す -べての行末から空白を取り除くには、次のコマンドを使います: > - - :%s/\s\+$// - -"%" を使ってすべての行を範囲指定しています。":substitute" コマンドに指定されて -いるパターンは "\s\+$" です。これは、空白文字 (\s) が一文字以上続き (\+)、行末 -($) で終わる文字列にマッチします。このようなパターンの書き方は |usr_27.txt| で -説明されています。"to" の部分は空 ("//") になっています。空文字列で置き換える、 -つまり、マッチした空白を削除するという意味になります。 - -もう一つの浪費パターンとして、tab の直前にスペースが使われている場合がありま -す。たいていは、そのスペースを削除しても見た目の空白の量は変わりませんが、いつ -も大丈夫というわけではありません。ですから、手作業で削除するのがベストです。次 -の検索コマンドを使ってください: > - - / - -何も見えないかもしれませんが、Tab 文字の直前にスペースがあります。つまりこれは -"/<Space><Tab>" です。検索したら、"x" コマンドを使ってスペースを削除し、見た目 -の変化がないことを確認してください。変化があった場合は、tab 文字を挿入して調整 -しましょう。"n" を押して次の場所を検索します。マッチするものがなくなるまで同じ -操作を繰り返してください。 - -============================================================================== -*12.8* 単語が使われている場所を検索する - -UNIX を使っているなら、Vim と grep コマンドを組み合わせれば、指定した単語が含 -まれているすべてのファイルを開くことができます。これは、プログラムを書いている -ときに、特定の変数が使われているファイルを表示または編集したい場合にとても便利 -です。 -例えば、"frame_counter" という単語が含まれているすべての C 言語ファイルを開く -には、次のようにします: > - - vim `grep -l frame_counter *.c` - -このコマンドを詳しく見てみましょう。"grep" コマンドは、指定されたファイルの中 -から単語を検索します。"-l" 引数が指定されているので、単語が含まれているファイ -ルの名前だけが表示されます。マッチした行は表示されません。検索される単語は -"frame_counter" です。単語の指定には正規表現が使えます。(Note: grep で使える正 -規表現は Vim の正規表現と完全に同じではありません。) -コマンドはバッククオート (`) で囲まれています。これは、コマンドを実行し、その -出力を、コマンドラインに入力されたものとして扱うように UNIX シェルに指示してい -ます。つまり、grep コマンドが実行され、出力されたファイルの一覧が Vim の引数に -渡されます。Vim が起動した後は、":next" や ":first" などのコマンドでそれらの -ファイルを切り替えられます。 - - -単語が使われている行を検索する ------------------------------- - -上述のコマンドは単語が含まれているファイルを見つけるだけなので、単語が使われて -いる行は自分で検索する必要がありました。 -Vim には、指定された文字列を複数のファイルの中から検索するための組み込みコマン -ドがあります。例えば、"error_string" という文字列をすべての C 言語ファイルの中 -から検索するには、次のコマンドを使います: > - - :grep error_string *.c - -指定されたファイル (*.c) の中から、"error_string" という文字列が検索されます。 -コマンドを実行すると、文字列が含まれている最初のファイルが開き、検索にヒットし -た最初の行にカーソルが移動します。文字列が現れる次の場所 (同じファイルとは限り -ません) に移動するには、":cnext" コマンドを使います。一つ前に戻るには ":cprev" -コマンドを使います。":clist" コマンドを使うと、検索結果の一覧と現在位置が表示 -されます。 -":grep" コマンドの実行には、外部プログラムの grep (Unix) または findstr -(Windows) が使われます。使われるプログラムは 'grepprg' オプションで変更できま -す。 - -============================================================================== - -次章: |usr_20.txt| コマンドラインを素早く入力する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_20.jax b/runtime.old/doc/usr_20.jax deleted file mode 100644 index 0fc9c4be5..000000000 --- a/runtime.old/doc/usr_20.jax +++ /dev/null @@ -1,386 +0,0 @@ -*usr_20.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - コマンドラインを素早く入力する - - -Vim にはコマンド入力を簡単にするための一般的な機能が備わっています。コロン (:) -コマンドでは短縮入力、編集、履歴、文脈依存の補完機能が利用できます。 - -|20.1| コマンドライン編集 -|20.2| コマンドライン短縮入力 -|20.3| コマンドライン補完 -|20.4| コマンドライン履歴 -|20.5| コマンドラインウィンドウ - -次章: |usr_21.txt| 中断と再開 -前章: |usr_12.txt| 便利な小技 -目次: |usr_toc.txt| - -============================================================================== -*20.1* コマンドライン編集 - -コロン (:) コマンドや検索コマンド (/ or ?) を使うとき、カーソルは画面の一番下 -に表示されます。そこにコマンドや検索パターンを入力するわけです。その場所を「コ -マンドライン」と呼びます。 - -コマンドラインの編集で最もわかりやすいのは <BS> でしょう。カーソルの直前の文字 -を削除できます。他の位置にある文字を削除したい場合は、矢印キーでカーソルを動か -してから <BS> を押してください。 -例えば、次のように入力して: > - - :s/col/pig/ -< -<Enter> を押す前になって、"col" が "cow" の入力ミスであることに気づきました。 -これを修正するには、左矢印キー (<Left>) を 5 回押して "col" の直後にカーソルを -動かしてから、<BS> と "w" を入力します: > - - :s/cow/pig/ - -修正したら、その場で <Enter> を押しましょう。コマンドを実行するためにカーソル -を行末まで動かす必要はありません。 - -コマンドラインでのカーソル移動には次のキーがよく使われます: - - <Left> 1 文字左 - <Right> 1 文字右 - <S-Left> or <C-Left> 1 単語左 - <S-Right> or <C-Right> 1 単語右 - CTRL-B or <Home> 行頭 - CTRL-E or <End> 行末 - - Note: - <S-Left> (シフトキーを押したまま左矢印キーを押す) と <C-Left> (コント - ロールキーを押したまま左矢印キーを押す) が機能しないキーボードもありま - す。その他のシフトキーとコントロールキーの組み合せも同様に、機能しない - ことがあります。 - -カーソルはマウスでも動かせます。 - - -削除 ------ - -上述のとおり、<BS> でカーソルの直前の文字を削除できます。単語を削除するには -CTRL-W を使います。 - - /the fine pig ~ - - CTRL-W - - /the fine ~ - -CTRL-U ですべてのテキストを削除できます。コマンドを最初から入力し直したいとき -に使ってください。 - - -上書き ------- - -<Insert> キーを押すと、挿入と上書きが切り替わります。次のテキストを使って説明 -します: - - /the fine pig ~ - -<S-Left> を 2 回押して (<S-Left> が機能しない場合は <Left> を 8 回押して) -"fine" の先頭にカーソルを動かします。<Insert> を押して上書きに切り替え、 -"great" と入力します: - - /the greatpig ~ - -おっと、スペースが消えてしまいました。ここで <BS> を押すと "t" が削除されてし -まいます (置換モードとは違いますね)。<Insert> を押して、上書きから挿入に切り替 -え、スペースを入力します: - - /the great pig ~ - - -キャンセル ----------- - -: または / コマンドを入力した後で、そのコマンドの実行をキャンセルしたくなった -場合は、CTRL-C または <Esc> を押してください。 - - Note: - <Esc> キーはどこでも使える「脱出」キーですが、残念なことに、古き良き - Vi では、コマンドラインで <Esc> を押すと、コマンドが実行されてしまいま - す。これはおそらくバグなので、Vim では <Esc> でコマンドをキャンセルで - きるようになっています。ただし、'cpoptions' を設定して Vi 互換の動作に - 変更することもできます。また、マップが適用されたときは (それが Vi 用に - 書かれたものであってもなくても) <Esc> は Vi 互換の動作をします。CTRL-C - を使えば設定に関係なくキャンセルできます。 - -コマンドラインの先頭にカーソルがあるときに <BS> キーを押すとコマンドをキャンセ -ルできます。これは行頭にある ":" や "/" を削除するような感覚です。 - -============================================================================== -*20.2* コマンドライン短縮入力 - -とても長い名前の ":" コマンドがいくつかあります。":substitute" が ":s" と短縮 -できることは既に説明しましたが、これはなにも特別なことではありません。すべての -":" コマンドが短縮できます。 - -コマンドはどこまで短縮できるでしょうか。アルファベットは 26 文字ですが、コマン -ドはそれよりたくさんあります。例えば、":set" の先頭は ":s" ですが、":s" では -":set" を実行できません。":set" の短縮形は ":se" です。 -二つのコマンドが同じ名前に短縮できたとしても、最短の名前を使えるのは一つのコマ -ンドだけです。その決定方法に明確なルールはないので、個別に覚えるしかありませ -ん。コマンドの最短の名前はヘルプファイルに記述されています。例: > - - :s[ubstitute] - -これは ":substitute" の短縮形が ":s" であることを示しています。それ以降の文字 -は任意です。":su" でも ":sub" でも動作します。 - -ユーザーマニュアルではコマンドの長い名前と短い名前の両方が使われますが、読み難 -い短縮形は使われません。例えば、":function" は ":fu" と短縮できますが、これだ -と大半の人が何の略なのか理解できないので ":fun" が使われます。(Vim に ":funny" -コマンドはありませんが、もしあれば、":fun" でも混乱を招きますよね) - -Vim スクリプトを書くときはコマンドの長い名前を使うことをお勧めします。そうして -おけば、後で変更しようと思ったときに読むのが楽です。しかし、":w" (":write") や -":r" (":read") のような頻繁に使われるコマンドなら短縮形を使っても構わないでしょ -う。 -特にややこしいのは ":end" です。これは ":endif" の短縮形ですが、":endwhile" や -":endfunction" と誤解しやすいので、常に長い名前を使うようにしましょう。 - - -オプションの短い名前 --------------------- - -ユーザーマニュアルではオプションの長い名前が使われますが、ほとんどのオプション -には短い名前があります。":" コマンドと違い、オプションの短い名前は一つしかあり -ません。例えば、'autoindent' の短い名前は 'ai' なので、次の二つのコマンドは同 -じ動作をします: > - - :set autoindent - :set ai - -オプションの長い名前と短い名前の一覧は |option-list| を参照してください。 - -============================================================================== -*20.3* コマンドライン補完 - -コマンドライン補完はこれだけでも Vi から Vim に乗り換えるに値する程の機能です。 -一度使ってしまったら、手放せなくなるでしょう。 - -次のようなファイルを含むディレクトリがあるとします: - - info.txt - intro.txt - bodyofthepaper.txt - -bodyofthepaper.txt を開くには次のコマンドを使います: > - - :edit bodyofthepaper.txt - -いかにも打ち間違えそうです。もっと簡単にやりましょう: > - - :edit b<Tab> - -どちらも結果は同じになります。どういうことでしょうか。<Tab> キーによってカーソ -ル直前の単語 (この場合なら "b") が補完されたのです。ディレクトリが検索され、 -"b" で始まるファイルが一つだけ見つかり、それはあなたが探しているファイルに違い -ないので、その名前が補完されました。 - -さて、次はこのように入力してみます: > - - :edit i<Tab> - -ビープ音が鳴り、次のように表示されます: > - - :edit info.txt - -ビープ音は複数のファイルが見つかったことを示しています。まずは (アルファベット -順で) 最初のファイルが表示されます。もう一度 <Tab> を押すと、次のようになりま -す: > - - :edit intro.txt - -つまり、最初の <Tab> で、探しているファイルが出てこなかったら、もう一度 <Tab> -を押せばよいのです。ファイルがたくさんあるなら、一つずつ表示していきましょう。 -最後の補完候補を表示しているときに <Tab> を押すと、最初の状態に戻ります: > - - :edit i - -また最初から補完候補を表示できます。つまり、補完候補は循環表示されます。CTRL-P -を使うと、逆方向に移動できます: - - <------------------- <Tab> -------------------------+ - | - <Tab> --> <Tab> --> - :edit i :edit info.txt :edit intro.txt - <-- CTRL-P <-- CTRL-P - | - +---------------------- CTRL-P ------------------------> - - -文脈 ------ - -":edit i" ではなく、":set i" と入力してから <Tab> を押すと、次のようになりま -す: > - - :set icon - -どうして ":set info.txt" にならないのでしょうか。それは、Vim が文脈を認識して -いるからです。補完される単語の種類は入力されたコマンドに依存します。":set" コ -マンドに指定するのはファイル名ではなくオプション名であることを Vim は知ってい -るのです。 -上述の例と同様、<Tab> を入力すれば補完候補が一つずつ順番に表示されます。たいて -いは、いくつかの文字を入力してから補完した方が素早く補完できます: > - - :set isk<Tab> - -次のような結果になります: > - - :set iskeyword - -さて、"=" を入力してから <Tab> を押してみましょう: > - - :set iskeyword=@,48-57,_,192-255 - -オプションの現在の設定が挿入されるので、それを編集することができます。 -<Tab> で補完されるのはその場所に入力すべき内容です。どのように動作するかは自分 -で試してみてください。期待したような結果にならないこともあると思いますが、それ -は、Vim がその文脈を認識できなかったか、その文脈における補完が実装されていない -かのどちらかです。その場合は <Tab> 文字が挿入されます (画面上では ^I と表示さ -れます)。 - - -補完候補一覧 ------------- - -補完候補がたくさんあるとき、その一覧を確認することができます。それには CTRL-D -を使います。例えば、次のコマンドを入力してから CTRL-D を押してみます: > - - :set is - -次のような結果になります: > - - :set is - incsearch isfname isident iskeyword isprint - :set is - -補完候補の一覧が表示され、また元の入力に戻ります。この一覧に期待した項目がある -かどうか確認してください。ない場合は、<BS> でテキストを削除し、入力し直してく -ださい。補完候補がたくさんある場合は、さらにいくつかの文字を入力してから <Tab> -を押して補完してください。 -注意深い方なら、候補一覧にある "incsearch" が "is" で始まっていないことに気づ -いたと思います。"is" は "incsearch" の短縮形です。ほとんどのオプションには短い -名前と長い名前がありますが、Vim は賢いので、 オプションの短い名前を見て、長い -名前に展開してくれます。 - - -さらに他にも ------------- - -CTRL-L コマンドを使うと、共通したところまで補完できます。例えば、"info.txt" と -"info_backup.txt" というファイルがあって、":edit i" と入力してから CTRL-L を押 -すと、":edit info" になります。 - -'wildmode' オプションで補完の動作を変更できます。 -'wildmenu' オプションを設定すると補完候補をメニューのように表示できます。 -'suffixes' オプションに優先度の低いファイルを指定しておくと、それらのファイル -は補完候補の末尾に現れます。 -'wildignore' オプションには補完候補として表示して欲しくないファイルを指定しま -す。 - -コマンドライン補完についての詳細は |cmdline-completion| を参照してください。 - -============================================================================== -*20.4* コマンドライン履歴 - -履歴については三章で簡単に説明しました。簡単に言えば、<Up> キーで以前に入力し -た古いコマンドラインを呼び出すことができる機能です。<Down> で新しい方のコマン -ドに戻れます。 - -履歴には四種類あります。ここでは ":" コマンドと検索コマンド ("/" or "?") の履 -歴を説明します。"/" と "?" はどちらも検索コマンドなので、同じ履歴を共有します。 -他には、式入力と input() 関数の履歴があります。|cmdline-history| - -例えば、":set" コマンドを実行した後で、他のコマンドを 10 個実行し、再び ":set" -コマンドを実行したいとします。":" を押してから <Up> を 10 回押せばできますが、 -もっと簡単な方法があります: > - - :se<Up> - -以前使った "se" で始まるコマンドに戻ります。これなら探していた ":set" コマンド -に効率良くたどり着けるでしょう。少なくとも、何度も何度も <Up> を押す必要はあり -ません (入力したすべてのコマンドが ":set" コマンドでもない限り)。 - -<Up> キーを押すと、入力されたテキストと履歴のコマンドラインが比較され、マッチ -した履歴だけが使われます。 -探していた履歴が見つからなかった場合は、<Down> で元に戻ってから正しく入力し直 -すか、CTRL-U を押して最初からやり直してください。 - -履歴をすべて見るには次のコマンドを使います: > - - :history - -":" コマンドの履歴が表示されます。検索コマンドの履歴を表示するには、次のコマン -ドを使います: > - - :history / -< -<Up> の代わりに CTRL-P を使うこともできますが、CTRL-P の前に入力されていたテキ -ストは無視されます。同様に、<Down> の代わりに CTRL-N を使うこともできます。 -CTRL-P は previous (前)、CTRL-N は next (次) という意味です。 - -============================================================================== -*20.5* コマンドラインウィンドウ - -コマンドラインでの文字入力は挿入モードでの文字入力とは違います。テキストを編集 -するための多くのコマンドが使えません。通常のコマンドライン入力ではそれほど問題 -になりませんが、複雑なコマンドを入力しなければならないときもあるでしょう。その -ようなときは、コマンドラインウィンドウが便利です。 - -次のコマンドでコマンドラインウィンドウを開いてください: > - - q: - -画面の下の方に (小さな) ウィンドウが作成されます。ウィンドウにはコマンドライン -履歴が表示され、最終行には空行があります: - - +-------------------------------------+ - |other window | - |~ | - |file.txt=============================| - |:e c | - |:e config.h.in | - |:set path=.,/usr/include,, | - |:set iskeyword=@,48-57,_,192-255 | - |:set is | - |:q | - |: | - |command-line=========================| - | | - +-------------------------------------+ - -ウィンドウを開いた後はノーマルモードになっています。"hjkl" キーで移動できます。 -例えば、"5k" を入力し、":e config.h.in" の行に移動します。"$h" で "in" の "i" -に移動し "cwout" と入力します。行が次のように変更されました: - - :e config.h.out ~ - -<Enter> を押すとこのコマンドが実行され、コマンドラインウィンドウが閉じます。 -<Enter> コマンドで現在行が実行されます。挿入モードでもノーマルモードでも同じ動 -作です。 -コマンドラインウィンドウでの編集は失われます。つまり、コマンドライン履歴は変更 -されません。ただし、実行したコマンドは、通常どおり、履歴に追加されます。 - -コマンドラインウィンドウは、実行したいコマンドに似たコマンドを履歴の一覧から探 -し、それをちょっと変更して再実行するような場合に便利です。コマンドラインウィン -ドウでは検索コマンドも使えます。 -上の例の場合なら、"?config" という検索コマンドを実行すれば、以前に実行した -"config" を含んでいるコマンドを探せます。これは少し不思議ですね。コマンドライ -ンを使ってコマンドラインウィンドウの中を検索しているのですから。しかし、検索コ -マンドを入力するための新たなコマンドラインウィンドウを作成することはできませ -ん。コマンドラインウィンドウは常に一つだけです。 - -============================================================================== - -次章: |usr_21.txt| 中断と再開 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_21.jax b/runtime.old/doc/usr_21.jax deleted file mode 100644 index 1bb863e59..000000000 --- a/runtime.old/doc/usr_21.jax +++ /dev/null @@ -1,491 +0,0 @@ -*usr_21.txt* For Vim バージョン 7.3. Last change: 2008 Nov 09 - - VIM USER MANUAL - by Bram Moolenaar - - 中断と再開 - - -この章では、Vim と他のプログラムを並行して使う方法を説明します。Vim の中から外 -部プログラムを実行したり、Vim を一次的に中断することでそれを実現できます。さら -に、作業状態を記録しておいて、後から復元する方法も説明します。 - -|21.1| サスペンドとレジューム -|21.2| シェルコマンドの実行 -|21.3| viminfo に情報を記録する -|21.4| セッション -|21.5| ビュー -|21.6| モードライン - -次章: |usr_22.txt| ファイルを探す -前章: |usr_20.txt| コマンドラインを素早く入力する -目次: |usr_toc.txt| - -============================================================================== -*21.1* サスペンドとレジューム - -他の Unix プログラムと同様に、Vim も CTRL-Z でサスペンドできます。CTRL-Z を押 -すと Vim が停止し、実行元のシェルに制御が戻ります。そこで好きなだけ他のコマン -ドを実行できます。Vim に戻るには "fg" コマンドを使います。 > - - CTRL-Z - {任意のシェルコマンドを実行} - fg - -サスペンドする前とまったく同じ状態に戻ることができます。 -CTRL-Z を押しても反応がなかった場合は ":suspend" コマンドを使ってください。 -Vim をフォアグラウンドに戻すのを忘れないでください。戻さなかった場合は編集作業 -が失われてしまいます。 - -この機能は Unix でのみサポートされています。他のシステムでは新しいシェルが起動 -されるでしょう。シェルのコマンドが使えることに違いはありませんが、しかしそれは -Vim を実行したシェルではなく、新しいシェルです。 -GUI で実行しているときは実行元のシェルに戻ることはできません。CTRL-Z を押すと -Vim ウィンドウが最少化されます。 - -============================================================================== -*21.2* シェルコマンドの実行 - -一つのシェルコマンドを実行するには ":!{command}" を使います。例えば、ディレク -トリのファイル一覧を見るには次のようにします: > - - :!ls (Unix 環境) - :!dir (MS-DOS/MS-Windows 環境) - -外部プログラムが実行されます。コマンドの実行が終わると <Enter> キーの入力を促 -すプロンプトが表示されるので、コマンドの出力を確認してから通常画面に戻ってくだ -さい。 -"!" は他のコマンドで外部プログラムを指定するときにも使われます。次のコマンドで -指定できます: - - :!{program} {program} を実行する - :r !{program} {program} を実行し、その出力を読み込む - :w !{program} {program} を実行し、標準入力にテキストを書き込む - :[range]!{program} {program} を実行し、テキストをフィルタリングする - -"!{program}" に範囲指定をするとまったく違う動作になるので注意してください。範 -囲指定がなければ単純にプログラムが実行されるだけですが、範囲指定があると、その -範囲のテキストがプログラムでフィルタ処理されます。 - -この方法で外部プログラムを何度でも実行できますが、続けてたくさん実行したい場合 -はシェルを起動した方がいいでしょう。次のコマンドで新しいシェルを起動できます: -> - :shell - -CTRL-Z で Vim をサスペンドしたときの動作に似ていますが、新しいシェルが起動され -るという点が違います。 - -GUI を使っている場合は、シェルの入出力に Vim ウィンドウが使われます。Vim は端 -末エミュレータではないので、端末の機能を完全に再現することはできません。うまく -動作しない場合は、'guipty' オプションを設定してみてください。それでも動作しな -い場合は、新しい端末を作成し、そこでシェルを実行してください。例えば、次のよう -にします: > - - :!xterm& - -============================================================================== -*21.3* viminfo に情報を記録する - -テキストを保持しているレジスタ、いろんな場所に設定されたマーク、慎重に書き上げ -たコマンドが記録されたコマンドライン履歴などは、Vim を終了するとすべて失われて -しまいます。ただし、それらを復元することは可能です! - -viminfo ファイルには以下の情報を記録できます: - - コマンドライン履歴と検索履歴 - レジスタ - マーク - バッファリスト - グローバル変数 - -Vim を終了すると、これらの情報が viminfo ファイルに保存されます。次に Vim を起 -動すると、viminfo ファイルが読み込まれ、状態が復元されます。 - -'viminfo' オプションの初期設定では、あまり多くの情報は記録されません。たくさん -の情報を記録したい場合は、次のコマンドで設定してください: > - - :set viminfo=string - -"string" の部分に、記録したい情報を指定します。設定の書式は、オプション文字と -引数の組み合わせをカンマ (,) で区切ったリストです。 -'viminfo' の設定方法を順番に見ていきましょう。まず、' オプションを設定してみま -す。' オプションには、マーク (a-z) を記録するファイルの数を指定できます。適当 -な数 (例えば 1000) を設定しましょう。コマンドは次のようになります: > - - :set viminfo='1000 - -f オプションには、グローバルマーク (A-Z と 0-9) を記録するかどうかを指定できま -す。引数が 0 ならなにも記録されません。f オプションを指定しない、あるいは引数 -に 1 を指定すると、マークが保存されます。このオプションを指定すると、コマンド -は次のようになります: > - - :set viminfo='1000,f1 -< -< オプションには、レジスタの行数制限を指定できます。初期設定ではすべての行が記 -録されます。引数が 0 なら何も記録されません。何千行もの (起動を遅くする以外に -使い道のない) テキストを viminfo ファイルに記録したくはないので、500 行に制限 -してみます: > - - :set viminfo='1000,f1,<500 -< -他にも次のようなオプションがあります: - : 記録するコマンドライン履歴の数 - @ 記録する入力行履歴の数 - / 記録する検索履歴の数 - r 指定されたリムーバブルメディア上のファイルのマークを記録しない - (複数指定可) - ! 名前がすべて大文字のグローバル変数を記録する - h 起動直後に 'hlsearch' による強調表示をしない - % バッファリスト (Vim をファイル引数なしで起動したときのみ復元さ - れます) - c テキストを 'encoding' で変換する - n viminfo ファイルの名前 (このオプションは末尾に指定する必要があ - ります) - -詳細は 'viminfo' と |viminfo-file| を参照してください。 - -Vim を複数起動した場合は、最後に終了した Vim の状態が記録されます。それより前 -に終了した Vim が記録した情報は失われます。記録できるのは一つの状態だけです。 - - -前回の場所に戻る ----------------- - -ファイルの編集中に終業時間が来てしまいました。明日から休暇です。Vim を終了し、 -家路につきましょう。仕事の事はすべて忘れて休暇を楽しんでください。数週間後、仕 -事に戻ったら、Vim を立ち上げて、こう入力します: > -> - '0 - -すると、最後に編集していた場所に戻れます。これで仕事が続けられますね。 -Vim を終了するたびにマークが設定されます。最新のマークは '0 です。マークは '0 -から '1 へ、'1 から '2 へ、しだいにずれていき、'9 まで記録されます。 -'0 から '9 までのマークがどこを指しているのかは |:marks| コマンドで確認できま -す。 - - -最近開いたファイルに戻る ------------------------- - -最近開いたファイルを再び開きたい場合はすこし面倒です (前回の Vim 終了時に開い -ていたファイルではなくてまさに最近開いたファイルのこと)。次のコマンドでファイ -ルの一覧を表示できます: > - - :oldfiles -< 1: ~/.viminfo ~ - 2: ~/text/resume.txt ~ - 3: /tmp/draft ~ - -二番目のファイル ("2:"の行) を開きたい場合は次のように入力します: > - - :e #<2 - -":e" 以外にも、ファイル名を引数に取るコマンドならどれを使っても構いません。 -"#<2" という表記は "%" (カレントファイル) や "#" (オルタネートファイル) と同じ -要領で使用できます。例えば次のようにすると、三番目のファイルを分割ウィンドウで -開くことができます: > - - :split #<3 - -単にファイルを開きたい場合には #<123 という指定は少し面倒かもしれませんね。 -もっと簡単な方法があります: > - - :browse oldfiles -< 1: ~/.viminfo ~ - 2: ~/text/resume.txt ~ - 3: /tmp/draft ~ - -- More -- - -|:oldfiles| と同じようにファイル一覧が表示されます。"resume.txt" を開きたい場 -合にはまず "q" を押して表示を止めます。プロンプトが表示されるので: - - Type number and <Enter> (empty cancels): ~ - -"2" を入力して <Enter> を押し、二番目のファイルを開きます。 - -詳細は |:oldfiles|、|v:oldfiles|、|c_#<| を参照してください。 - - -他の Vim に情報を移動する -------------------------- - -":wviminfo" コマンドと ":rviminfo" コマンドを使うと、Vim の実行中でも viminfo -ファイルの保存と復元ができます。例えば、他の Vim からレジスタの内容をコピーす -ることができます。片方の Vim で次のようにして保存し: > - - :wviminfo! ~/tmp/viminfo - -もう一方の Vim でそれを読み込みます: > - - :rviminfo! ~/tmp/viminfo - -言うまでもなく、"w" は "write"、"r" は "read" の意味です。 -既存のファイルに上書きするときは、":wviminfo" に ! を付けてください。! を指定 -しなかった場合は、現在の情報と既存のファイルの情報がマージされます。 -":rviminfo" に ! を付けると、ファイルのすべての情報が使われます。つまり、現在 -の情報が上書きされます。! を指定しなかった場合は、まだ設定されていない情報だけ -が使われます。 -これらのコマンドを使えば、状態を保存しておいて後で再利用することもできます。例 -えば、viminfo 専用のディレクトリに状態を保存しておき、目的ごとに使い分けること -も可能です。 - -============================================================================== -*21.4* セッション - -作業が終わらない内に一日が終わってしまった場合、その日の作業を中断し、次の日に -同じ状態で作業を再開できたら便利ですよね。編集セッションを保存しておけば、作業 -状態を復元することができます。 -セッションには、作業状態に関するすべての情報が保存されます。例えば、ファイルリ -スト、ウィンドウレイアウト、グローバル変数、オプションの設定などです。(正確に -は、下記で説明されている 'sessionoptions' に指定された項目が保存されます。) -次のコマンドでセッションファイルを作成できます: > - - :mksession vimbook.vim - -セッションを復元するには、次のコマンドを使います: > - - :source vimbook.vim - -Vim の起動と同時にセッションを再開するには、次のようにして Vim を起動します: > - - vim -S vimbook.vim - -Vim が起動し、指定したファイルが読み込まれます。'S' はセッション (Session) の -意味です (実際には、-S には Vim スクリプトならなんでも指定できるので、 -"source" を意味しているとも言えます)。 - -以前に開いていたウィンドウが、同じ場所、同じ大きさで作成されます。マップやオプ -ションの設定も復元されます。 -復元される情報は 'sessionoptions' オプションで設定できます。初期設定は -"blank,buffers,curdir,folds,help,options,winsize" です。 - - blank 空のウィンドウ - buffers すべてのバッファ (ウィンドウに表示されていないバッファ - も含む) - curdir カレントディレクトリ - folds 折り畳み (手動で設定したものも含む) - help ヘルプウィンドウ - options すべてのオプションとマップ - winsize ウィンドウの大きさ - -好きなように設定してください。例えば、Vim ウィンドウの大きさも復元したい場合 -は、次のようにします: > - - :set sessionoptions+=resize - - -こっちにもセッション、あっちにもセッション ------------------------------------------- - -セッションは、複数のプロジェクトで仕事をするときなどに使われます。 -例えば、"~/.vim" にセッションファイルを保存するとします。そして、"secret" プロ -ジェクトで作業している最中に、"boring" プロジェクトで作業する必要がでてきまし -た: > - - :wall - :mksession! ~/.vim/secret.vim - :source ~/.vim/boring.vim - -最初に、":wall" ですべてのファイルを保存します。次に、現在のセッションを -":mksession!" で保存します。以前のセッション情報が上書きされました。後で -secret セッションをロードすると今現在の状態から作業を再開できます。最後に、 -"boring" セッションをロードします。 - -ヘルプを開いたり、ウィンドウを分割したり閉じたりして、ウィンドウレイアウトが乱 -れてしまった場合、セッションをロードし直せば元に戻せます: > - - :source ~/.vim/boring.vim - -毎回新しいセッションを保存するか、あるいは最初に保存したセッションを使い続ける -かは自由に選択できます。 -セッションには他の使い方もあります。例えば、好みのウィンドウレイアウトをセッ -ションに保存しておけば、いつでも好きなときにそのレイアウトに戻ることができま -す。 -例えば、このようなレイアウトは使いやすいでしょう: - - +----------------------------------------+ - | VIM - main help file | - | | - |Move around: Use the cursor keys, or "h| - |help.txt================================| - |explorer | | - |dir |~ | - |dir |~ | - |file |~ | - |file |~ | - |file |~ | - |file |~ | - |~/=========|[No File]===================| - | | - +----------------------------------------+ - -ヘルプウィンドウが上部に表示され、いつでも参照できます。左端の縦長のウィンドウ -はファイルエクスプローラという Vim のプラグインでです。ディレクトリのファイル -一覧を表示し、その中からファイルを選択して開くことができます。詳しくは次章で説 -明します。 -このようなウィンドウを作るには、Vim を起動してから次のコマンドを実行します: > - - :help - CTRL-W w - :vertical split ~/ - -ウィンドウの大きさを調節し、セッションを保存してください: > -> - :mksession ~/.vim/mine.vim - -これで、同じレイアウトで Vim を起動できます: > - - vim -S ~/.vim/mine.vim - -Hint: エクスプローラでファイルを選択し、空のウィンドウでファイルを開くには、 -ファイル名の場所にカーソルを移動して "O" を押します。マウスのダブルクリックで -も同じ動作になります。 - - -UNIX と MS-WINDOWS ------------------- - -MS-Windows と Unix を両方使わなければならない人もいるでしょう。そのような人は、 -'sessionoptions' に "slash" と "unix" を追加した方がいいかもしれません。その設 -定で保存されたセッションファイルはどちらのシステムでも使えます。次のコマンドを -vimrc ファイルに追加してください: > - - :set sessionoptions+=unix,slash - -セッションファイルが Unix 形式で保存されるようになります。MS-Windows の Vim は -Unix 形式のセッションファイルを読み書きできますが、Unix の Vim は MS-Windows -形式のセッションファイルを読み込むことができません。同様に、MS-Windows の Vim -は / で区切られたファイル名を処理できますが、Unix の Vim は \ を処理できませ -ん。 - - -セッション と viminfo ---------------------- - -セッションファイルにはたくさんの情報が保存されますが、マークやレジスタ、コマン -ドライン履歴などは保存されません。それらの情報を保存するには viminfo を使って -ください。 -セッションと viminfo は分けて使うことが多いと思います。他のセッションに切り換 -えてもコマンドライン履歴をそのまま残すことができますし、テキストをレジスタにヤ -ンクし、他のセッションでペーストするということもできます。 -セッションと viminfo を同時に使いたい場合は、自分で保存してください。例: > - - :mksession! ~/.vim/secret.vim - :wviminfo! ~/.vim/secret.viminfo - -復元するには次のようにします: > - - :source ~/.vim/secret.vim - :rviminfo! ~/.vim/secret.viminfo - -============================================================================== -*21.5* ビュー - -セッションは Vim 全体の表示設定を扱います。一つのウィンドウに関する設定だけ保 -存したい場合は、ビューを使います。 -ビューは、ファイルごとに表示設定を変更したい場合に使います。例えば、'number' -を設定して行番号を表示し、いくつかの折り畳みを定義した場合に、その情報を保存し -て、後で復元することができます。実際のところ、セッションには、各ウィンドウの -ビューが保存されているのです。 -ビューの使い方は二つあります。一つは、ビューファイルの名前を Vim に決めさせる -方法です。保存したビューは、同じ名前のファイルを開いているときに復元できます。 -カレントウィンドウのビューを保存するには、次のコマンドを使います: > - - :mkview - -ビューを保存する場所は自動的に決定されます。後で同じファイルを開いたときに、次 -のコマンドでビューを復元できます: > - - :loadview - -簡単ですね。 -さて、同じファイルを違う設定で表示してみましょう。'number' オプションをオフに -設定、あるいは折り畳みをすべて開き、ウィンドウの表示を変更してみます。そして、 -次のコマンドでビューを保存します: > - - :mkview 1 - -当然、次のようにして復元します: > - - :loadview 1 - -これで、":loadview" と ":loadview 1" を使って、同じファイルの二つのビューを切 -り替えられるようになりました。 -ファイル一つにつき、番号なしのビューと、1 から 9 までの 9 個のビュー、合わせて -10 個のビューが使えます。 - - -名前付きのビュー ----------------- - -ビューのもう一つの使用方法は、指定したファイルにビューを保存する方法です。この -方法なら、他のファイルを開いていてもビューを復元できます。ビューを復元すると、 -ビューに関連付けられたファイルが開くので、編集するファイルを素早く切り替える方 -法としても使えます。 -例えば、カレントファイルのビューを保存するには、次のようにします: > - - :mkview ~/.vim/main.vim - -次のコマンドで復元できます: > - - :source ~/.vim/main.vim - -============================================================================== -*21.6* モードライン - -ファイル固有の設定を、ファイルを開くたびに設定しても構いませんが、何度も何度も -同じコマンドを入力するのはうんざりですよね。セッションやビューでは同じ設定を他 -人と共有できません。 -そのような場合にはモードラインを使います。モードラインとは、ファイル固有の設定 -をファイル内に記述するための仕組みです。 -例えば、C 言語ファイルのインデントをスペース 4 個分に設定したい場合に使います。 -それには 'shiftwidth' オプションを 4 に設定する必要があるので、モードラインは -次のようになります: - - /* vim:set shiftwidth=4: */ ~ - -この行を、ファイルの先頭または末尾から五行以内のどこかに書いてください。その -ファイルを開くと 'shiftwidth' が自動的に設定されます。他のファイルを開くと、初 -期設定の 8 に戻ります。 -モードラインをファイルヘッダに書くのが適当な場合はファイルの先頭にモードライン -を書きます。テキストファイルなど、モードラインがその内容を邪魔してしまうような -場合は末尾に書きます。 - -'modelines' オプションでモードラインの有効範囲を設定できます。ファイルの先頭ま -たは末尾からの行数で指定してください。例えば、10 行にしたい場合は次のように設 -定します: > - - :set modelines=10 - -モードライン機能を無効にするには 'modeline' オプションをオフに設定します。Unix -の root や MS-Windows の Administrator として作業する場合や、信用できないファ -イルを開く場合に設定してください: > - - :set nomodeline - -モードラインは次の書式で書きます: - - any-text vim:set {option}={value} ... : any-text ~ - -モードラインの前後、"any-text" の部分はどんな文字列でも構いません。例えば上述 -の例のように、/* と */ で囲んでコメントにすることができます。 -Vim は " vim:" という部分を見てモードラインを認識します。直前に空白のある -"vim"、または行頭の "vim" だけが認識されます。つまり、例えば "gvim:" は機能し -ません。 -二つのコロン (:) の間には ":set" コマンドを記述します。これは通常の ":set" コ -マンドと同じです。ただし、コロンの前にバックスラッシュ (\) を置く必要がありま -す (バックスラッシュがない場合はそれがモードラインの終端だと認識されます)。 - -例: - - // vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here ~ - -最初のコロンにはバックスラッシュが前置されているので、それは ":set" コマンドの -一部です。二つ目のコロン以降は無視されるので、説明を書くことができます。 - -詳細は |modeline| を参照してください。 - -============================================================================== - -次章: |usr_22.txt| ファイルを探す - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_22.jax b/runtime.old/doc/usr_22.jax deleted file mode 100644 index 440b37977..000000000 --- a/runtime.old/doc/usr_22.jax +++ /dev/null @@ -1,396 +0,0 @@ -*usr_22.txt* For Vim バージョン 7.3. Last change: 2010 Feb 21 - - VIM USER MANUAL - by Bram Moolenaar - - ファイルを探す - - -ファイルはどこにでもありますが、どうやって目的のファイルを見つければいいので -しょうか。Vim ではさまざまな方法でディレクトリツリーをブラウズできます。ファイ -ルにジャンプするコマンドもあります。開いたことのあるファイルは後から参照できま -す。 - -|22.1| ファイルブラウザ -|22.2| カレントディレクトリ -|22.3| ファイルを探す -|22.4| バッファリスト - -次章: |usr_23.txt| 特殊なファイルを編集する -前章: |usr_21.txt| 中断と再開 -目次: |usr_toc.txt| - -============================================================================== -*22.1* ファイルブラウザ - -ディレクトリを編集するためのプラグインがあります。試してみましょう: > - - :edit . - -自動コマンドと Vim スクリプトの魔法により、ディレクトリの内容がウィンドウに表 -示されます。例えばこんな具合です: - -" ============================================================================ ~ -" Netrw Directory Listing (netrw v109) ~ -" Sorted by name ~ -" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$ ~ -" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec ~ -" ============================================================================ ~ -../ ~ -./ ~ -check/ ~ -Makefile ~ -autocmd.txt ~ -change.txt ~ -eval.txt~ ~ -filetype.txt~ ~ -help.txt.info ~ - -次の項目が表示されます: - -1. ブラウジングツールの名前とバージョン番号 -2. 表示しているディレクトリ -3. ソート方法 (name、time、sizeなど) -4. 名前のソート方法 (最初はディレクトリで、続いて *.h、*.c、などなど) -5. ヘルプの表示方法 (<F1>キーを使ってください)。利用可能なコマンド抜粋。 -6. ファイル一覧。"../" は親ディレクトリを示す。 - -構文強調表示が有効な場合は各項目が別々の色で表示され、視認性が上がります。 - -一覧の中はノーマルモードコマンドで移動できます。ファイル名の上にカーソルを動か -して <Enter> を押すとファイルが開きます。もう一度 ":edit ." と入力すればエクス -プローラに戻れます。CTRL-O で戻ることもできます。 - -ディレクトリ名の上にカーソルを動かして <Enter> を押すと、ファイルブラウザがそ -のディレクトリに移動し、新たなファイル一覧が表示されます。"../" ディレクトリの -上で <Enter> を押すと上の階層に移動できます。あるいは、"../" までカーソルを移 -動しなくても、"-" を押すだけで上の階層に移動できます。 - -<F1> を押すと netrw ファイルブラウザのヘルプが表示されます。表示は次のようなも -のです: > - - 9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help - - MAPS netrw-maps - <F1>.............ヘルプ.....................................|netrw-help| - <cr>.............ブラウジング...............................|netrw-cr| - <del>............ファイル/ディレクトリを削除................|netrw-delete| - -................親ディレクトリに移動.......................|netrw--| - a................ファイル/ディレクトリを隠す................|netrw-a| - mb...............ディレクトリをブックマークする.............|netrw-mb| - gb...............ブックマークしたディレクトリに移動.........|netrw-gb| - c................表示ディレクトリをカレントディレクトリに...|netrw-c| - d................ディレクトリ作成...........................|netrw-d| - D................ファイル/ディレクトリを削除................|netrw-D| - <c-h>............ファイル/ディレクトリ隠し設定編集..........|netrw-ctrl-h| - i................表示スタイル変更...........................|netrw-i| - <c-l>............最新情報に更新.............................|netrw-ctrl-l| - o................水平分割してファイルを開く.................|netrw-o| - p................プレビューウィンドウを使う.................|netrw-p| - P................プレビューウィンドウで開く.................|netrw-p| - q................ブックマークと履歴を表示する...............|netrw-q| - r................ソート順序を逆にする.......................|netrw-r| -< (etc) - -<F1> キーを押すと netrw プラグインのヘルプに飛びます。これは通常のヘルプページ -です。|CTRL-]| でタグジャンプして |CTRL-O| で戻ることができます。 - -ファイルを選択してファイルを開きます: (カーソルをファイル名の上に移動してから) - - <enter> カレントウィンドウでファイルを開く |netrw-cr| - o ウィンドウを水平分割してファイルを表示する |netrw-o| - v ウィンドウを垂直分割してファイルを表示する |netrw-v| - p |preview-window| を使う |netrw-p| - P 直前のウィンドウで開く |netrw-P| - t 新しいタブページで開く |netrw-t| - -ノーマルモードでは次のコマンドを使ってブラウザの表示をコントロールできます: - - i 表示スタイルを変更する (thin, long, wide, tree)。 - long ではファイルのサイズと日付が表示されます。 - s ファイルのソート方法を切り替える。名前、更新時間、サイ - ズでソート可。 - r ソート順序を逆にする。 - -次のようなコマンドもあります: - - c 表示しているディレクトリをカレントディレクトリにする。 - (|g:netrw_keepdir| で動作を変更できます) - R カーソルの下のファイル/ディレクトリの名前を変更する。 - 表示されるプロンプトに新しい名前を入力してください。 - D カーソルの下のファイル/ディレクトリを削除する。確認ダ - イアログが表示されます。 - mb gb ブックマークを設定/ブックマークに移動 - - -次のような Ex コマンドもあります (他にもあります): - - :Explore [directory] カレントディレクトリ、または指定したディレクト - リをブラウズする。 - :NetrwSettings netrw の現在の設定一覧。ヘルプリンク付き。 - -netrw ブラウザの機能はローカルマシンに限定されません。次のように url を使うこ -ともできます: (末尾の / は重要) - - :Explore ftp://somehost/path/to/dir/ - :e scp://somehost/path/to/dir/ - -詳細は |netrw-browse| を参照してください。 - -============================================================================== -*22.2* カレントディレクトリ - -シェルと同じように Vim にもカレントディレクトリという概念があります。例えば、 -ホームディレクトリにいるときに "VeryLongFileName" ディレクトリにあるファイルを -開きたい場合、そのまま実行することもできますが: > - - :edit VeryLongFileName/file1.txt - :edit VeryLongFileName/file2.txt - :edit VeryLongFileName/file3.txt - -次のようにすれば、入力が簡単です: > - - :cd VeryLongFileName - :edit file1.txt - :edit file2.txt - :edit file3.txt - -":cd" コマンドでカレントディレクトリを変更できます。現在のカレントディレクトリ -を確認するには ":pwd" コマンドを使います: > - - :pwd - /home/Bram/VeryLongFileName - -直前のカレントディレクトリは記録されているので ":cd -" で元の場所に戻れます。 -例: > - - :pwd - /home/Bram/VeryLongFileName - :cd /etc - :pwd - /etc - :cd - - :pwd - /home/Bram/VeryLongFileName - :cd - - :pwd - /etc - - -ウィンドウローカルディレクトリ ------------------------------- - -ウィンドウを分割した直後、二つのウィンドウは同じカレントディレクトリを使ってい -ます。カレントディレクトリはウィンドウ毎に設定できるので、新しいウィンドウだけ -カレントディレクトリを変更して別の場所で作業できます。これを、ローカルディレク -トリといいます。 > - - :pwd - /home/Bram/VeryLongFileName - :split - :lcd /etc - :pwd - /etc - CTRL-W w - :pwd - /home/Bram/VeryLongFileName - -":lcd" コマンドを使うまでは、すべてのウィンドウが共通のカレントディレクトリを -使っています。一つのウィンドウで ":cd" コマンドを実行すると、他のウィンドウの -カレントディレクトリも変更されます。 -":lcd" を使ってカレントディレクトリを変更したウィンドウは、固有のカレントディ -レクトリを持ちます。固有のカレントディレクトリは、他のウィンドウで ":cd" また -は ":lcd" を使っても変更されません。 -固有のカレントディレクトリを持っているウィンドウで ":cd" コマンドを使うと、再 -び共通のカレントディレクトリを使うようになります。 - -============================================================================== -*22.3* ファイルを探す - -C 言語のファイルを編集していて、次のような行があったとします: - - #include "inits.h" ~ - -"inits.h" を開いて内容を確認したい場合は、カーソルをファイル名の上に動かして、 -次のように入力します: > - - gf - -ファイルが検索され、開かれます。 -ファイルがカレントディレクトリにない場合は 'path' オプションが使われます。この -オプションはディレクトリ名のリストです。指定されたディレクトリからファイルが検 -索されます。 -例えば、"c:/prog/include" にインクルードファイルがある場合は次のコマンドでディ -レクトリを追加できます: > - - :set path+=c:/prog/include - -ディレクトリを絶対パスで指定した場合は、どこで作業していても同じディレクトリが -参照されます。開いているファイル以下のサブディレクトリにインクルードファイルが -ある場合は相対パスを指定してください。相対パスの先頭はドットです: > - - :set path+=./proto - -この場合、ファイルが保存されているディレクトリの "proto" ディレクトリからファ -イルが検索されます。つまり、"inits.h" の上で "gf" を使うと、同じディレクトリの -"inits.h" が検索された後に、"proto/inits.h" が検索されます。 -"./" を付けなかった場合、つまり "proto" と指定した場合は、カレントディレクトリ -の "proto" ディレクトリが検索されます。ファイルのディレクトリとカレントディレ -クトリは意味が異なるので注意してください。 - -ディレクトリの指定方法は他にもあります。'path' オプションのヘルプを参照してく -ださい。 -'isfname' オプションには、ファイル名として使える文字、あるいは使えない文字を設 -定できます (例えば上の例では " 文字がファイル名に含まれてませんね)。 - -ファイルの名前がわかっている場合は、その名前がファイル内で使われていなくても、 -検索することができます: > - - :find inits.h - -'path' オプションを使ってファイルが検索されます。'path' が使われる以外は -":edit" コマンドと同じです。 - -検索したファイルを新しいウィンドウで開くには、"gf" ":find" ではなく "CTRL-W f" -":sfind" を使います。 - - -Vim を起動して 'path' の中からファイルを開くには、次の方法が便利です: > - - vim "+find stdio.h" - -'path' 内の "stdio.h" が検索されます。引数はクオート (") で囲む必要があります -|-+c|。 - -============================================================================== -*22.4* バッファリスト - -Vim では編集中のファイルのことをバッファといいます。バッファはファイルのコピー -です。編集を終えて保存したときに、バッファの内容がファイルに書き込まれます。 -バッファにはファイルのテキストの他に、マークやオプション設定などのファイルに関 -連した情報も記録されます。 - - -隠れバッファ (HIDDEN BUFFERS) ------------- - -例えば、one.txt を編集しているときに two.txt を編集したくなったとします。 -one.txt は変更されているので ":edit two.txt" は使えません。しかも、あなたはま -だ one.txt を保存したくはありません。次のコマンドで解決できます: > - - :hide edit two.txt - -"one.txt" というバッファは画面から消えます。しかしバッファの内容が失われるわけ -ではありません。未保存のテキストはまだ残っています。このようなバッファを隠れ -バッファといいます。 -":hide" コマンドの引数はコマンドです。指定されたコマンドは、'hidden' オプショ -ンがオンに設定されているかのように動作します。もちろん、自分で 'hidden' オプ -ションを設定しても構いません。バッファが破棄されたとき、'hidden' がオンなら、 -そのバッファは隠れバッファになります。 -隠れバッファを使ったときは、すべてのバッファが保存されたのを確認してから Vim -を終了してください。 - - -休眠バッファ (INACTIVE BUFFERS) ------------- - -バッファを閉じてもいくつかの情報は失われずに残ります。バッファリストに入ってい -るバッファの内、画面に表示されず、隠れバッファでもないバッファのことを休眠バッ -ファといいます: - - アクティブバッファ ウィンドウに表示されている。テキストはメモリの中。 - 隠れバッファ 表示されていない。テキストはメモリの中。 - 休眠バッファ 表示されていない。テキストは保持されていない。 - -休眠バッファにはファイル名やマークなどの情報が保存されています。ファイル名が保 -存されているので、編集したことのあるファイルを確認し、それを再び開くことができ -ます。 - - -バッファリストの表示 --------------------- - -次のコマンドでバッファリストを表示できます: > - - :buffers - -次のコマンドも同じです。コマンドの名前と機能が連想しずらいかもしれませんが、入 -力は簡単です: > - - :ls - -コマンドの出力例: - - 1 #h "help.txt" line 62 ~ - 2 %a+ "usr_21.txt" line 1 ~ - 3 "usr_toc.txt" line 1 ~ - -行頭の数字はバッファ番号です。バッファを開くときに名前の代わりにバッファ番号を -指定することもできます。下記参照。 -バッファ番号に続いてフラグ、ファイル名、最後にカーソルが位置していた行番号、が -表示されます。 -フラグ部分には以下の文字が (左から右へ) 表示されます。 - - u 非列挙バッファ (|unlisted-buffer|)。 - % カレントバッファ。 - # オルタネートバッファ。 - a テキストを持っている。表示されている。 - h テキストを持っている。隠れバッファ。 - = 読み込み専用。 - - 変更不可 ('modifiable' オプションがオフ)。 - + 変更あり。 - - -バッファを開く --------------- - -バッファ番号を指定してバッファを開くことができます。ファイル名を入力する必要は -ありません: > - - :buffer 2 - -しかし、バッファ番号を知るためにはバッファリストを表示しなければなりません。名 -前の一部分だけを指定して開くこともできます: > - - :buffer help - -指定された名前に近いバッファが検索され、名前が一致したバッファが一つだけなら、 -そのバッファが使われます。この例なら "help.txt" など。 -バッファを新しいウィンドウで開くには、次のコマンドを使います: > - - :sbuffer 3 - -もちろん名前も指定できます。 - - -バッファリストを使う --------------------- - -次のコマンドでバッファリストの中を移動できます: - - :bnext 次のバッファを開く - :bprevious 前のバッファを開く - :bfirst 最初のバッファを開く - :blast 最後のバッファを開く - -次のコマンドでバッファリストからバッファを削除できます: > - - :bdelete 3 - -もちろん名前も指定できます。 -アクティブバッファ (ウィンドウに表示されているバッファ) を削除すると、表示して -いたウィンドウも閉じます。カレントバッファを削除するば、カレントウィンドウが閉 -じます。ウィンドウが一つしかなかった場合は、他のバッファに切り替わります。なに -もないを開くことはできません! - - Note: - ":bdelete" でバッファを削除してもバッファの情報は失われません。バッファ - が "unlisted" 状態になり、":buffers" コマンドで表示されなくなるだけで - す。":buffers!" コマンドを使えば unlisted バッファも表示されます (そ - う、Vim は不可能を可能にするのです)。バッファの情報を完全に消去するに - は ":bwipe" を使ってください。'buflisted' オプション参照。 - -============================================================================== - -次章: |usr_23.txt| 特殊なファイルを編集する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_23.jax b/runtime.old/doc/usr_23.jax deleted file mode 100644 index e6079a98f..000000000 --- a/runtime.old/doc/usr_23.jax +++ /dev/null @@ -1,336 +0,0 @@ -*usr_23.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - 特殊なファイルを編集する - - -この章では特殊なファイルの編集について説明します。圧縮ファイルや暗号化された -ファイルを編集できます。多少不便ですが、バイナリファイルも編集できます。イン -ターネット越しにファイルアクセスする方法も説明します。 - -|23.1| DOS、Mac、Unix形式のファイル -|23.2| インターネット上のファイル -|23.3| 暗号化 -|23.4| バイナリファイル -|23.5| 圧縮ファイル - -次章: |usr_24.txt| 効率的な入力 -前章: |usr_22.txt| ファイルを探す -目次: |usr_toc.txt| - -============================================================================== -*23.1* DOS、Mac、Unix形式のファイル - -その昔、旧いテレタイプマシンは改行のために二つの文字を使っていました。一つ目の -文字 (キャリッジリターン。<CR>) でキャリッジを初期位置に戻し、二つ目の文字 (ラ -インフィード。<LF>) で用紙を送っていたのです。 -コンピュータが登場した頃は記憶装置がとても高価だったので、改行のために二文字も -使う必要はないと考える人たちがいました。UNIX の人々は <LF> だけを使って改行す -ることに決めました。Apple の人々は <CR> を標準としました。MS-DOS (と Microsoft -Windows) の人々は <CR><LF> を使い続けました。 -このような事情により、異なるシステム間でファイルを交換するときには改行文字の非 -互換が問題になります。Vim はファイル形式を自動的に認識し、それを適切に処理する -ことができます。 -'fileformats' オプションを設定して使用するファイル形式を指定してください。例え -ば、最初に Unix 形式を試し、次に MS-DOS 形式を試すには、次のように設定します: -> - :set fileformats=unix,dos - -ファイルを開いたときのメッセージにファイル形式が表示されることがあります。シス -テム標準のファイル形式だった場合は表示されません。例えば、Unix で Unix 形式の -ファイルを編集するときに注意は必要ないでしょう。しかし、DOS 形式のファイルな -ら注意が必要です。次のようなメッセージが表示されます: - - "/tmp/test" [dos] 3L, 71C ~ - -Mac 形式なら "[mac]" と表示されます。 -ファイル形式は 'fileformat' オプションに設定されます。現在のファイル形式を確認 -するには、次のコマンドを使います: > - - :set fileformat? - -Vim では次の3つの名前が使われます: - - unix <LF> - dos <CR><LF> - mac <CR> - - -Mac 形式を使う --------------- - -Unix では <LF> が改行文字です。行の途中に <CR> 文字がくることは普通はありませ -ん。ただし、Vi (と Vim) のスクリプトでは <CR> 文字が使われることがあります。 -Macintosh では <CR> が改行文字なので、行の途中に <LF> 文字を使うことができま -す。 -つまり、<CR> と <LF> を両方含んでいるファイルは、ファイル形式を 100% 確実に判 -別することはできません。 -そのため、Unix では Mac 形式の改行はチェックされません。おそらく、Unix で Mac -形式のファイルを編集することはあまりないでしょう。どうしても Mac 形式のファイ -ルを使いたい場合は 'fileformats' オプションに "mac" を追加してください。 > - - :set fileformats+=mac - -これで、Mac 形式の改行が認識されるようになります。ただし、正しく認識できないこ -とがあるので注意してください。 - - -ファイル形式を指定する ----------------------- - -古き良き Vi で MS-DOS 形式のファイルを開くと、すべての行末に ^M が付きます。 -(^M = <CR>)。Vim では改行が自動認識されるので、そのようなことにはなりません。 -敢えて昔の動作を再現したい場合は、ファイル形式を指定してください: > - - :edit ++ff=unix file.txt - -"++" に続いてオプション名を指定することで、コマンドの設定を変更できます。 -'fileformat' なら "++ff" です。もちろん "++ff=mac" または "++ff=dos" と設定す -ることもできます。 -この方法ではすべてのオプションを設定できません。現在のところ "++ff" と "++enc" -だけが実装されています。"++fileformat" や "++encoding" のようにフルネームでも -指定できます。 - - -ファイル形式の変換 ------------------- - -'fileformat' オプションを使ってファイル形式を変換できます。例えば、README.TXT -を MS-DOS 形式から UNIX 形式に変換してみます。まず、MS-DOS 形式のファイルを開 -きます: > - - vim README.TXT - -ファイル形式は自動的に認識されます。では、ファイル形式を変換しましょう: > - - :set fileformat=unix - :write - -ファイルは Unix 形式で保存されます。 - -============================================================================== -*23.2* インターネット上のファイル - -誰かがあなたにメールを出しました。メールには URL が書いてあります。例: - - そのことならここに情報があったよ。 ~ - ftp://ftp.vim.org/pub/vim/README ~ - -他のプログラムを使ってファイルをダウンロードし、それを Vim で開いても構いませ -んが、もっと簡単な方法があります。カーソルを URL の上に移動して次のコマンドを -入力してください。 > - - gf - -運が良ければ、ダウンロード用のプログラムが実行され、ダウンロードされたファイル -が開かれます。新しいウィンドウで開きたい場合は "CTRL-W f" を使ってください。 -ダウンロードが失敗してエラーメッセージが表示された場合は、次のような原因が考え -られます。 - - URL が間違っている。 - - アクセス権限がない。 - - ネットワークがダウンしている。 - - その他。 -残念ながら、エラーの原因を把握するのは非常に困難です。エラーが起きた場合は手作 -業でファイルをダウンロードしてください。 - -インターネット経由のファイルアクセスは netrw プラグインによって実行されます。 -現在、以下の形式の URL が認識可能です。 - - ftp:// ftp を使う - rcp:// rcp を使う - scp:// scp を使う - http:// wget を使う (読込専用) - -Vim 自身は通信機能を持っていません。インターネットアクセスは外部プログラムを -使って実行されます。"ftp" と "rcp" はほとんどの Unix システムで利用できるはず -です。"scp" と "wget" は別途インストールする必要があるかもしれません。 - -":edit" や ":split" などのコマンドでファイルを開くときにも URL を指定できます。 -もちろん保存もできます (http:// は不可)。 - -パスワードの指定方法など、詳細は|netrw|を参照してください。 - -============================================================================== -*23.3* 暗号化 - -情報を秘密にしたいことがあると思います。例えば、生徒と共有のコンピュータを使っ -てテストを作成している場合、賢い生徒にテスト問題を盗み見られてしまうようでは困 -ります。Vim の暗号化機能を使って情報を保護しましょう。 -ファイルを暗号化するには、Vim の起動引数に "-x" を指定します。例: > - - vim -x exam.txt - -プロンプトが表示されるので、ファイルを暗号化または複号するための鍵を入力してく -ださい: - - 暗号化用のキーを入力してください: ~ - -慎重に秘密鍵を入力してください。入力した文字は表示されません。代りにスター (*) -が表示されます。入力ミスがあると大変なので、念のため、もう一度同じ鍵を入力して -ください: - - もう一度同じキーを入力してください: ~ - -ファイルの編集方法は通常のファイルと同じです。秘密にしたいことを書き込んでくだ -さい。ファイルを保存すると、暗号化されて保存されます。 -次にそのファイルを Vim で開くと、鍵を入力するためのプロンプトが表示されます。 -既に暗号化されたファイルを開くときは "-x" 引数を指定する必要はありません。通常 -の ":edit" コマンドで開くこともできます。暗号化ファイルにはマジック文字列が埋 -め込まれているので、Vim は暗号化ファイルを認識できます。 -他のプログラムで暗号化ファイルを開くと、ゴミが表示されます。たとえ Vim で開い -たとしても、不正な鍵を使った場合は、やはりゴミが表示されます。鍵が正しいかどう -かを判断する機能は Vim にはありません (暗号をより強固なものにするため)。 - - -暗号化と解除 ------------- - -ファイルの暗号化を解除するには、'key' オプションに空文字を設定します: > - - :set key= - -空に設定してからファイルを保存すると、暗号化されずに保存されます。 -'key' オプションに鍵を設定すれば暗号化を有効にできますが、それは安全ではありま -せん。パスワードがコマンドラインに表示されるので、肩越しに盗み見られてしまいま -す。 -安全に暗号化を有効にするには、":X" コマンドを使ってください。"-x" 引数を使った -ときと同じプロンプトが表示されます: > - - :X - 暗号化用のキーを入力してください: ****** - もう一度同じキーを入力してください: ****** - - -暗号化の限界 ------------- - -Vim の暗号アルゴリズムは脆弱です。いたずら小僧を撃退するには十分ですが、暗号エ -キスパートのハックには耐えられません。さらに、スワップファイルが暗号化されない -ことにも注意が必要です。ファイルを編集している間、スーパーユーザ権限さえあれば -誰でも平文のスワップファイルを読むことができます。 -スワップファイルを使わないというのも一つの手です。起動引数に "-n" を指定すれ -ば、スワップファイルは作成されなくなります (代わりにメモリが使われます)。例え -ば、暗号化した "file.txt" をスワップファイル無しで開くには、次のコマンドを使い -ます: > - - vim -x -n file.txt - -既にファイルを編集中なら、次のコマンドでスワップファイルを無効にできます: > - - :setlocal noswapfile - -スワップファイルが無いということは、リカバリできないということです。普段よりま -めにファイルを保存し、クラッシュによるリスクを抑えましょう。 - -メモリ上のファイルは暗号化されていません。権限さえあれば誰でもエディタのメモリ -を調べてファイルの内容を知ることができます。 -viminfo ファイルを使っている場合、レジスタの中身が平文で保存されることにも注意 -が必要です。 -本気でファイルを秘密にしたいなら、ネットワークから切り離したマシンで作業し、強 -力な暗号化ツールを使い、そのマシンを使わないときは金庫に入れておきましょう。 - -============================================================================== -*23.4* バイナリファイル - -Vim はバイナリファイルを編集できます。専用ツールではないので若干の制限はありま -すが、ファイルを読み込み、編集し、保存できます。 -Vim の便利な (そして今は邪魔な) 機能を無効にするために、"-b" 引数を付けて Vim -を起動してください: > - - vim -b datafile - -'binary' オプションがオンになります。これにより、余計な機能が無効になります。 -例えば、'textwidth' が 0 に設定され、自動整形が無効になります。そして、ファイ -ルは Unix 形式で読み込まれます。 - -バイナリモードを使うと、例えば実行ファイルのメッセージを変更できます。ただし、 -文字を挿入したり削除したりするとプログラムが動かなくなってしまうので注意してく -ださい。"R" コマンドの置換モードを使いましょう。 - -バイナリファイルには非印字可能文字がたくさんあります。これを 16 進数で表示する -には、次のように設定してください: > - - :set display=uhex - -あるいは、調べたい文字にカーソルを移動して "ga" コマンドを使います。例えば、 -<Esc> の上で "ga" を実行すると、次のように表示されます: - - <^[> 27, Hex 1b, Octal 033 ~ - -ファイルに含まれている改行コードが少ない場合、'wrap' オプションをオフにすると -全体をざっくり眺めることができます: > - - :set nowrap - - -バイト位置 ----------- - -次のコマンドで現在のカーソル位置をバイト単位で表示できます: > - - g CTRL-G - -冗長なメッセージが表示されます: - - 列 9-16 / 9-16; 行 277 / 330; 単語 1806 / 2058; バイト 10580 / 12206 ~ - -末尾の数字に注目してください。カーソルの位置とファイルの大きさがバイト単位で表 -示されています。'fileformat' の設定による改行の種類もちゃんと考慮されています。 -指定したバイト位置に移動するには "go" コマンドを使います。例えば、2345 バイト -目に移動するには、次のようにします: > - - 2345go - - -XXDを使う ---------- - -本物のバイナリエディタは、テキスト表示と 16 進表示の二通りの方法でファイルを表 -示します。"xxd" を使ってファイルを変換すれば Vim でも同じように表示できます。 -"xxd" は Vim に付属しています。 -まず、ファイルをバイナリモードで開いてください: > - - vim -b datafile - -そして、xxd を使って16進数ダンプ形式に変換します: > - - :%!xxd - -テキストは次のように変換されます: - - 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ - 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ - 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ - -あとは、好きなようにテキストを編集してください。普通のテキストを編集するのと同 -じです。16 進数部分を変更しても、テキスト部分は更新されません。逆も同様です。 -編集が済んだら変換し、テキストに戻します: > - - :%!xxd -r - -16 進数部分への変更だけが反映されます。右側のテキスト部分への変更は無視されま -す。 - -詳細は xxd のマニュアルを参照してください。 - -============================================================================== -*23.5* 圧縮ファイル - -これは簡単です。圧縮ファイルを編集するのに特別な操作は必要ありません。ただファ -イルを開くだけです。"gzip" プラグインが展開の面倒をみてくれます。ファイルを保 -存すれば勝手に圧縮してくれます。 -現在、以下の圧縮形式がサポートされています: - - .Z compress - .gz gzip - .bz2 bzip2 - -実際の圧縮と展開には上記のプログラムが使われます。無い場合は別途インストールし -てください。 - -============================================================================== - -次章: |usr_24.txt| 素早く入力する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_24.jax b/runtime.old/doc/usr_24.jax deleted file mode 100644 index 5e11ee18e..000000000 --- a/runtime.old/doc/usr_24.jax +++ /dev/null @@ -1,596 +0,0 @@ -*usr_24.txt* For Vim バージョン 7.3. Last change: 2006 Jul 23 - - VIM USER MANUAL - by Bram Moolenaar - - 素早く入力する - - -テキストを入力するときに、キーストロークを減らしたり入力ミスを防いだりする方法 -がいくつかあります。補完機能を使えば以前に入力した単語を繰り返し入力できます。 -長い単語を短縮形で入力することもできます。キーボードに無い文字を入力する方法も -あります。 - -|24.1| 修正する -|24.2| 対応する括弧を表示する -|24.3| 補完 -|24.4| 挿入を繰り返す -|24.5| 隣の行からコピーする -|24.6| レジスタを挿入する -|24.7| 短縮形 -|24.8| 特殊な文字を入力する -|24.9| 二重字 (Digraph) -|24.10| ノーマルモードコマンド - -次章: |usr_25.txt| テキストの整形 -前章: |usr_23.txt| 特殊なファイルを編集する -目次: |usr_toc.txt| - -============================================================================== -*24.1* 修正する - -<BS> キーは既に説明しましたね。<BS> はカーソル直前の文字を削除します。<Del> -キーはカーソルの下(後)の文字を削除します。 -直前の単語をまるごと削除したい場合は CTRL-W を使います: - - The horse had fallen to the sky ~ - CTRL-W - The horse had fallen to the ~ - -行全体を削除して行頭から入力しなおしたい場合は CTRL-U を使います。カーソルより -後ろの文字とインデントは削除されません。最初の非空白文字からカーソルまでのテキ -ストだけが削除されます。例えば、カーソルが "fallen" の "f" にある場合、CTRL-U -を押すと次のようになります: - - The horse had fallen to the ~ - CTRL-U - fallen to the ~ - -何個か前の単語だけを修正したい場合はカーソルを動かす必要があります。例えば、次 -のように入力してから: - - The horse had follen to the ground ~ - -途中にある "follen" を "fallen" に修正してみます。カーソルが末尾にある場合、次 -のように入力すれば修正できます: > - - <Esc>4blraA - -< 挿入モードを抜ける <Esc> - 4 単語戻る 4b - 最初の "o" に移動する l - "a" に置換する ra - 行末に移動して挿入モードを再開 A - -他の方法もあります: > - - <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End> - -< 4 単語戻る。 <C-Left><C-Left><C-Left><C-Left> - 最初の "o" に移動する <Right> - "o" を削除する <Del> - "a" を挿入する a - 行末に移動する <End> - -挿入モードの中で特殊キーを使って移動しています。これは普通のモードレスエディタ -の操作と似ています。操作方法は覚えやすいかもしれませんが少し面倒です (カーソル -キーを押すには手をホームポジションから離さなければならないし、<End> キーを押す -にはキーボードに視線を移さなければならない)。 -特殊キーは挿入モードの中で使えるのでマップを書くときに重宝します。マップの中で -使う分には入力が面倒になることもありません。 -挿入モードでは次の特殊キーが使えます: - - <C-Home> ファイルの先頭に移動 - <PageUp> 1 画面分、逆スクロール - <Home> 行頭へ移動 - <S-Left> 1 単語左へ移動 - <C-Left> 1 単語左へ移動 - <S-Right> 1 単語右へ移動 - <C-Right> 1 単語右へ移動 - <End> 行末へ移動 - <PageDown> 1 画面分、スクロール - <C-End> ファイルの末尾に移動 - -使えるキーは他にもあります。|ins-special-special| 参照。 - -============================================================================== -*24.2* 対応する括弧を表示する - -")" を入力したときに、対応する "(" の場所を確認できたら便利ですよね。次のコマ -ンドでそのように設定できます: > - - :set showmatch - -例えば "(example)" と入力したとき、")" を入力した瞬間に、対応する括弧にカーソ -ルが移動します。カーソルは 0.5 秒くらいその場所に留まり、再び元の場所に帰って -きます。 -対応する括弧が見つからなかった場合はビープ音が鳴ります。そのときは、( を入力し -忘れてないか、) を入力し過ぎてないか、確認しましょう。 -この機能は、[] や {} の組み合わせにも対応しています。カーソルが移動していると -きに、戻ってくるまで次の入力を待つ必要はありません。次の文字を入力した瞬間に -カーソルは元に戻るので、すぐに入力を再開できます。 -カーソルが移動先で待機する時間は 'matchtime' オプションで設定できます。例えば、 -1.5 秒待機するには次のように設定します: > - - :set matchtime=15 - -時間は 1/10 秒単位で指定してください。 - -============================================================================== -*24.3* 補完 - -テキストの中から単語を検索して補完することができます。単語の出だしを入力して -CTRL-P を押すと、残りの部分が入力されます。 -例えば、C プログラムを書いていて、次のように入力したいとします: - - total = ch_array[0] + ch_array[1] + ch_array[2]; ~ - -まず、次のように入力してください: - - total = ch_array[0] + ch_ ~ - -ここで、CTRL-P コマンドを使って単語を補完します。カーソル直前の文字列にマッチ -する単語が検索されます。この場合なら、"ch_" にマッチする単語、つまり -"ch_array" がヒットします。したがって、CTRL-P を押すと次のようになります: - - total = ch_array[0] + ch_array ~ - -続けて入力し、次のようになりました (末尾に空白があります): - - total = ch_array[0] + ch_array[1] + ~ - -さて、ここで CTRL-P を押すと再びカーソル直前の文字列が補完されます。今回は文字 -が無いので、最初に見つかった単語、つまり "ch_array" が補完されます。もう一度 -CTRL-P を押すと、さらに次の候補が補完されます。この場合は "total" です。もう一 -度 CTRL-P を押せばさらに次の候補が補完されます。次の単語が見つからなかった場合 -は元の文字列に戻ります。この例では空文字列です。四度目に CTRL-P を押すと再び最 -初の "ch_array" が補完されます。 - -前方検索する場合は CTRL-N を使います。検索はファイル終端を超えて処理されるの -で、CTRL-N と CTRL-P は順番が違うだけで、同じ単語が検索されます。Hint: CTRL-N -は Next-match (次の候補)、CTRL-P は Previous-match (前の候補) です。 - -単語の補完では、様々な場所から単語を検索できます。初期設定では、次の場所が検索 -されます: - - 1. カレントファイル - 2. 他のウィンドウのファイル - 3. ロードされたファイル (隠しバッファ) - 4. ロードされてないファイル (休眠バッファ) - 5. タグファイル - 6. カレントファイルが #include しているファイル - - -オプション ----------- - -検索場所の順番は 'complete' オプションで設定できます。 - -検索には 'ignorecase' オプションが使われます。このオプションがオンのときは、大 -文字と小文字は区別されません。 - -'infercase' は補完用の特別なオプションです。大文字と小文字を区別しない -('ignorecase' がオンに設定されている) ときでも、自分で入力した文字の種類をその -まま使えます。つまり、"For" と入力して "fortunately" がマッチしたとき、結果は -"Fortunately" になります。 - - -補完タイプの指定 ----------------- - -補完したい単語の種類がわかっている場合は、次のコマンドで補完の種類を指定できま -す: - - CTRL-X CTRL-F ファイル名 - CTRL-X CTRL-L 行全体 - CTRL-X CTRL-D マクロ定義 (インクルードファイルの中も探す) - CTRL-X CTRL-I カレントファイルとインクルードファイル - CTRL-X CTRL-K 辞書 - CTRL-X CTRL-T 同義語辞書 (シソーラス) - CTRL-X CTRL-] タグ - CTRL-X CTRL-V Vim のコマンドライン - -補完を実行した後は、CTRL-N で次の候補、CTRL-P で前の候補を検索できます。 -各コマンドの詳細は |ins-completion| を参照してください。 - - -ファイル名の補完 ------------------ - -例として CTRL-X CTRL-F を使って説明します。これはファイル名を補完するコマンド -です。カレントディレクトリのファイルが検索され、カーソル直前の文字列にマッチす -るファイル名が補完されます。 -例えば、カレントディレクトリに次のファイルがあるとします: - - main.c sub_count.c sub_done.c sub_exit.c - -挿入モードに入って次のように入力します: - - The exit code is in the file sub ~ - -そして、CTRL-X CTRL-F を入力します。カレントディレクトリから "sub" にマッチす -るファイルが検索されます。最初にマッチするのは sub_count.c です。このファイル -は求めているファイルではありませんでした。CTRL-N を押して次の候補を検索しましょ -う。次に sub_done.c がマッチします。もう一度 CTRL-N を押すと sub_exit.c がマッ -チします。結果: - - The exit code is in the file sub_exit.c ~ - -ファイル名の先頭を / (Unix) や C:\ (MS-Windows) で開始すれば、ファイルシステム -全体からファイルを検索できます。例えば、"/u" と入力してから CTRL-X CTRL-F と入 -力すると "/usr" がヒットします (Unix の場合): - - the file is found in /usr/ ~ - -もう一度 CTRL-N を押すと "/u" に戻ってしまいます。"/usr/" を確定してからさらに -深い階層へ進みたい場合は再び CTRL-X CTRL-F を使います: - - the file is found in /usr/X11R6/ ~ - -もちろん、ファイル構成が違えば結果は異なるでしょう。検索結果はアルファベット順 -にソートされます。 - - -ソースコードの補完 - -ソースコードは書式が決まっているので、より賢い補完を実装することができます。 -Vim ではそれをオムニ補完 (Omni completion) と呼びます。某エディタではインテリ -センスと呼ばれていますが、それは商標です。 - -オムニ補完のキーは CTRL-X CTRL-O です。O は Omni の頭文字なので覚えやすいでしょ -う。C 言語のソースを使って説明します: - - { ~ - struct foo *p; ~ - p-> ~ - -カーソルは "p->" の後ろにあります。CTRL-X CTRL-O を押すと、"struct foo" のメン -バが候補として表示されます。これは CTRL-P の補完とはまったく違います。CTRL-P -ではあらゆる単語が候補になりますが、オムニ補完は "struct foo" のメンバだけが補 -完されます。 - -オムニ補完を使うには設定が必要です。最低でもファイルタイププラグインを有効にし -ておく必要があります。vimrc に以下の行を書き加えてください: > - filetype plugin on -または: > - filetype plugin indent on - -C 言語の場合はタグファイルを作成して 'tags' オプションを設定する必要がありま -す。|ft-c-omni| を参照してください。他のファイルタイプでも似たような設定が必要 -になります。|compl-omni-filetypes| を参照してください。オムニ補完は特定のファ -イルタイプでしか利用できません。'omnifunc' オプションを確認し、オムニ補完が利 -用できるかどうか確認してください。 - -============================================================================== -*24.4* 挿入を繰り返す - -CTRL-A を押すと、前回の挿入モードで入力したテキストを挿入できます。 -例えば、次のようなファイルがあったとします: - - "file.h" ~ - /* Main program begins */ ~ - -一行目の行頭に "#include " を挿入します: - - #include "file.h" ~ - /* Main program begins */ ~ - -"j^" コマンドで次の行の行頭に移動し、再び "#include " を挿入してみます。次のよ -うに入力しましょう: > - - i CTRL-A - -結果は次のようになります: - - #include "file.h" ~ - #include /* Main program begins */ ~ - -CTRL-A は前回に入力したテキストを挿入するコマンドなので、"#include " が挿入さ -れました。続けて "main.h"<Enter> と入力し、行を完成させましょう: - - #include "file.h" ~ - #include "main.h" ~ - /* Main program begins */ ~ - -CTRL-@ コマンドは CTRL-A と同じことを実行してから挿入モードを抜けます。まった -く同じ挿入を繰り返したいときに使います。 - -============================================================================== -*24.5* 隣の行からコピーする - -CTRL-Y コマンドを使うと、カーソルの上の文字を挿入できます。一つ上の行を複製し -たい場合に便利です。例えば、次のような C 言語のコードがあるとして: - - b_array[i]->s_next = a_array[i]->s_next; ~ - -"s_next" を "s_prev" に変えただけの同じ行を入力してみます。新しい行を開いて -CTRL-Y を 14 回押して、"next" の "n" の直前まで進みます: - - b_array[i]->s_next = a_array[i]->s_next; ~ - b_array[i]->s_ ~ - -そして "prev" と入力します: - - b_array[i]->s_next = a_array[i]->s_next; ~ - b_array[i]->s_prev ~ - -続けて、次の"next"まで CTRL-Y を押します。 - - b_array[i]->s_next = a_array[i]->s_next; ~ - b_array[i]->s_prev = a_array[i]->s_ ~ - -"prev;" と入力すれば、行が完成です。 - -CTRL-Y と似たコマンドに CTRL-E があります。これはカーソルの下の文字を挿入する -コマンドです。 - -============================================================================== -*24.6* レジスタを挿入する - -CTRL-R {register} コマンドを使うと、レジスタの内容を挿入できます。長い単語を入 -力するのが簡単になります。例えば、次の行を入力したいとします。 - - r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~ - -関数名は別のファイルで定義されています。そのファイルを開いてカーソルを関数名の -先頭に移動し、次のコマンドでレジスタ v にヤンクします: > - - "vyiw - -"v はレジスタの指定、"yiw" は yank-inner-word (単語をヤンクする) です。さて、 -元のファイルに戻り、挿入モードを開始して次のように入力します: - - ir = ~ - -ここで、CTRL-R v を押して関数の名前を挿入します: - - r = VeryLongFunction ~ - -続けて関数の引数などを入力し、関数名を入力するときになったら再び CTRL-R v を使 -います。 -同じことは補完を使ってもできますが、同じ文字で始まる単語がたくさんある場合には -レジスタが便利です。 - -レジスタの中に <BS> などの特殊な文字が含まれている場合、その文字は、実際にキー -ボードから入力されたのと同じように処理されます。それが望みの動作ではない場合 -(例えば、<BS> をテキストとして挿入したい場合) は CTRL-R CTRL-R {register} を -使ってください。 - -============================================================================== -*24.7* 短縮形 (Abbreviations) - -短縮形とは長い単語を置き換える短い単語のことです。例えば、"ad" は -"advertisement" の短縮形です。Vim では、入力した短縮形を自動的に展開することが -できます。 -"ad" を "advertisement" の短縮形として登録するには、次のコマンドを使います: > - - :iabbrev ad advertisement - -これで、"ad" と入力すると、完全形の "advertisement" がテキストに挿入されます。 -短縮形の置き換えは、スペースなどの、単語の一部として認識されない文字を入力した -ときに実行されます: - - 入力した文字 画面上での見え方 - I saw the a I saw the a ~ - I saw the ad I saw the ad ~ - I saw the ad<Space> I saw the advertisement<Space> ~ - -"ad" と入力しただけでは展開されません。これは例えば "add" のような単語も入力で -きるようにするためです。単語の境界が確定してから短縮形の展開が適用されます。 - - -複数の単語の短縮形 ------------------- - -複数の単語に展開される短縮形を定義できます。例えば、"JB" を "Jack Benny" の短 -縮形として登録するには、次のコマンドを使います: > - - :iabbrev JB Jack Benny - -プログラムを書くとき、私は少し変った短縮形を使っています: > - - :iabbrev #b /**************************************** - :iabbrev #e <Space>****************************************/ - -これはコメントブロックを作成するときに使います。コメントを開始するときに #b で -最初の行を描き、コメントを書いてから、#e で末尾の行を描きます。#e の展開形がス -ペースで始まっています。別の言い方をすれば、最初の二文字がスペースとスターに -なっています。通常、短縮形と展開形の間の空白は無視されるので、スペースを入れた -い場合は <, S, p, a, c, e, > という 7 文字の特殊な表記を使います。 - - Note: - ":iabbrev" は入力するのが長くて大変なので、":iab" でも構いません。 - これは短縮コマンドの短縮形です! - - -入力ミスを直す --------------- - -入力ミスの癖ってありますよね。例えば、"the" と入力するはずが "teh" になってし -まったり。短縮形を使って修正しましょう: > - - :abbreviate teh the - -このような短縮形のリストを作成し、入力ミスの癖を見つけたら追加しましょう。 - - -短縮形を一覧表示する --------------------- - -":abbreviate" コマンドで短縮形の一覧を表示できます: > - - :abbreviate - i #e ****************************************/ - i #b /**************************************** - i JB Jack Benny - i ad advertisement - ! teh the - -行頭の "i" は挿入モードの意味です。その短縮形は挿入モードの中だけで有効です。 -他にも、次のような文字が表示されます: - - c コマンドラインモード :cabbrev - ! 挿入モードとコマンドラインモード :abbreviate - -コマンドラインモードで短縮形が役に立つことはあまりないので、"iabbrev" コマンド -を主に使うことになるでしょう。"iabbrev" なら、次のようなコマンドで "ad" が展開 -される心配はありません: > - - :edit ad - - -短縮形の削除 ------------- - -短縮形を取り除くには ":unabbreviate" コマンドを使います。次のような短縮形が登 -録されているなら: > - - :abbreviate @f fresh - -次のコマンドで削除できます: > - - :unabbreviate @f - -このコマンドを入力すると @f が "fresh" に展開されてしまいますが、心配はいりま -せん。コマンドは正しく処理されます (ただし、"fresh" という別の短縮形が定義され -ている場合は期待した動作になりません。まぁそんなことはほとんどないはずですが)。 -すべての短縮形を削除するには次のコマンドを使います: > - - :abclear - -":unabbreviate" と ":abclear" にも、挿入モード用 (":iunabbreviate" と -":iabclear") とコマンドライン用 (":cunabbreviate" と ":cabclear") があります。 - - -短縮形の再マップ ----------------- - -短縮形を定義するときに注意すべき点がもう一つあります。展開された文字列がマップ -されないようにしなくてはなりません。例をあげましょう: > - - :abbreviate @a adder - :imap dd disk-door - -"@a" を入力すると "adisk-doorer"になってしまいます。これは意図した動作ではない -はずです。これを避けるには、":noreabbrev" コマンドを使います。":abbreviate" と -機能は同じですが、展開結果にマップが適用されません: > - - :noreabbrev @a adder - -これで、展開結果がマップされなくなります。 - -============================================================================== -*24.8* 特殊な文字を入力する - -CTRL-V コマンドを使うと、その次に入力した文字をそのまま挿入できます。つまり、 -文字の特殊効果が無視されます。例えば、このように入力すると: > - - CTRL-V <Esc> -< -エスケープ文字が挿入されます。挿入モードは終了しません。(CTRL-V の後ろの空白は -見やすくするためのものなので、実際には入力しないでください) - - Note: - MS-Windows では CTRL-V はテキストのペーストに使われています。CTRL-V の - 代わりに CTRL-Q を使ってください。Unixでは逆に一部の端末で CTRL-Q に特 - 別な意味があるので使えないかもしれません。 - -また、CTRL-V {digits} コマンドを使うと、文字コードを 10 進数で指定して、その文 -字を入力できます。例えば、文字コード 127 は <Del> 文字 (<Del> *キー*と同じとは -限りません) です。<Del> を挿入するには次のように入力します: > - - CTRL-V 127 - -同じやりかたで文字コード 255 までの文字を入力できます。文字コードが 2 桁以下の -場合は、数字以外の文字を入力してコマンドを確定してください。 -数字以外の文字を入力したくない場合は、数値が 3 桁になるように 1 つか 2 つの -"0" を数値の前に付けてください。 -次のコマンドはいずれも <Tab> と "." を挿入します: - - CTRL-V 9. - CTRL-V 09. - CTRL-V 009. - -文字コードは 16 進数でも指定できます。その場合は CTRL-V の直後に "x" を指定し -ます: > - - CTRL-V x7f - -この場合もコード 255 (CTRL-V xff) までの文字が入力できます。"o" で 8 進数の数 -値を指定することもできます。他にも "u" と "U" でそれぞれ 16 ビットと 32 ビット -の文字コード (例えば Unicode の文字) を指定できます: > - - CTRL-V o123 - CTRL-V u1234 - CTRL-V U12345678 - -============================================================================== -*24.9* 二重字 (Digraph) - -例えば、コピーライト文字 (©) など、キーボードに無い文字がいくつかあります。 -そのような文字を Vim で入力するには二重字を使います。つまり、二文字で一文字を -表現します。例えば、コピーライト文字 (©) を入力するには、次のようにします: > - - CTRL-K Co - -使用できる二重字の一覧を表示するには、次のコマンドを使います: > - - :digraphs - -一部抜粋: - - AC ~_ 159 NS | 160 !I ¡ 161 Ct ¢ 162 Pd £ 163 Cu ¤ 164 Ye ¥ 165 ~ - BB ¦ 166 SE § 167 ': ¨ 168 Co © 169 -a ª 170 << « 171 NO ¬ 172 ~ - -- ­ 173 Rg ® 174 'm ¯ 175 DG ° 176 +- ± 177 2S ² 178 3S ³ 179 ~ - -これを見れば、例えば CTRL-K Pd でポンド記号 (£) が入力できることがわかります。 -文字番号は 163 (10進数) です。 -Pd は Pound (ポンド) の略です。ほとんどの二重字には、生成される文字が連想しや -すい文字が割り当てられています。法則は表を見ればだいたいわかると思います。 -二重字の一文字目と二文字目は逆の順番で入力しても構いません。ただし、その組み合 -わせが他の二重字で使われていない場合に限ります。すなわち、CTRL-K dP もポンド記 -号になります。"dP" という組み合わせが他に使われていないので、"Pd" の二重字が使 -われるのです。 - - Note: - 二重字はユーザーが使っている (と Vim が認識している) 文字セットに依存 - します。MS-DOS の文字セットと MS-Windows の文字セットは違います。 - ":digraphs" を使って、利用可能な二重字を確認してください。 - -自分で二重字を定義することもできます。例: > - - :digraph a" ä - -CTRL-K a" を入力すると ä になります。文字コードを 10 進数で指定することもでき -ます。次のコマンドは上記のコマンドと同じです: > - - :digraph a" 228 - -二重字についての詳細は |digraphs| を参照してください。 -他にも、キーマップを使って特殊な文字を入力することもできます。詳しくは |45.5| -参照。 - -============================================================================== -*24.10* ノーマルモードコマンド - -挿入モードで使えるコマンドはそれほど多くありませんが、ノーマルモードにはたくさ -んのコマンドがあります。それらのコマンドを使うには <Esc> で挿入モードを抜けて、 -ノーマルモードコマンドを実行し、"i" または "a" で挿入モードに戻ってこなければ -なりません。 -もっと簡単な方法があります。CTRL-O {command} を使えばノーマルモードコマンドを -挿入モードの中で実行できます。例えば、次のコマンドでカーソル位置から行末まで削 -除できます: > - - CTRL-O D - -この方法で実行できるのは一つのコマンドだけです。ただし、レジスタやカウントの指 -定はできます。もう少し複雑な例: > - - CTRL-O "g3dw - -三つの単語を削除してレジスタ g に格納します。 - -============================================================================== - -次章: |usr_25.txt| テキストの整形 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_25.jax b/runtime.old/doc/usr_25.jax deleted file mode 100644 index b0931cf03..000000000 --- a/runtime.old/doc/usr_25.jax +++ /dev/null @@ -1,566 +0,0 @@ -*usr_25.txt* For Vim バージョン 7.3. Last change: 2007 May 11 - - VIM USER MANUAL - by Bram Moolenaar - - テキストの整形 - - -文章を一行に一文ずつ書くようなことはほとんどありません。この章では、テキストが -画面に収まるように整形する方法などを説明します。 -一行段落や表を編集するための便利な機能もあります。 - -|25.1| 行を改行する -|25.2| テキストの位置揃え -|25.3| インデントとタブ -|25.4| 長い行の扱い -|25.5| 表の編集 - -次章: |usr_26.txt| 繰り返し -前章: |usr_24.txt| 素早く入力する -目次: |usr_toc.txt| - -============================================================================== -*25.1* 行を改行する - -文章を快適に編集するための機能がいくつかあります。初期設定では行は自動的に改行 -されません。つまり自分で <Enter> を押す必要があります。プログラムを書くときは -その方が便利ですが、ドキュメントを書くときは少し不便です。文章が 70 桁の幅に収 -まるように自分で整形するのは大変でしょう。 -'textwidth' オプションを設定すると、行が自動的に改行されるようになります。例え -ば、30 桁の幅で文章を書きたい場合は次のように設定します: > - - :set textwidth=30 - -そして、テキストを入力します (上の数字はルーラーです): - - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a whi ~ - -次に "l" を入力すると一行が 30 桁の制限を超えるので、自動的に改行が挿入されま -す。その結果、次のようになります: - - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a ~ - whil ~ - -そのまま続けて文章の残りを入力しましょう: - - 1 2 3 - 12345678901234567890123456789012345 - I taught programming for a ~ - while. One time, I was stopped ~ - by the Fort Worth police, ~ - because my homework was too ~ - hard. True story. ~ - -自分で改行する必要はありません。改行は自動的に挿入されます。 - - Note: - 'wrap' オプションを使うと長い行を改行して表示できますが、実際に改行文 - 字が挿入されるわけではありません。 - - -再整形 ------- - -Vim はワープロではありません。ワープロなら、段落の最初の方で文字を削除すると、 -改行の位置が調整されますが、Vim は違います。つまり、一行目の "programming" を -削除すると、単にその行が短くなるだけです: - - 1 2 3 - 12345678901234567890123456789012345 - I taught for a ~ - while. One time, I was stopped ~ - by the Fort Worth police, ~ - because my homework was too ~ - hard. True story. ~ - -これはよくありません。"gq" オペレータを使って段落を整形しましょう。 -まず、ビジュアルモードを使ってやってみます。一行目に移動して次のように入力しま -す: > - - v4jgq - -"v" はビジュアルモードの開始、"4j" で段落の最後まで移動し、"gq" オペレータを実 -行します。結果: - - 1 2 3 - 12345678901234567890123456789012345 - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - -Note: 特定の書式に従った文章なら自動的に整形することもできます。 -|auto-format| 参照。 - -"gp" はオペレータなので、ビジュアルモード、カーソルモーション、テキストオブジェ -クト、の三つの方法で適用範囲を選択できます。 -上記の例は "gq4j" とすることもできます。これはコマンドは短くなりますが、行数を -数えないといけません。"}" というモーションコマンドを使えばもっと簡単です。これ -は段落の末尾に移動するコマンドです。"gq}" でカーソル位置から段落の末尾までが整 -形されます。 -テキストオブジェクトを使うともっと簡単にできます: > - - gqap - -"ap" は "a-paragraph" という意味です。(空行区切りの) 一つの段落が整形されます。 -カーソル位置より前の部分も範囲に入ります。 -段落が空行で区切られているなら、次のコマンドでファイル全体を整形できます: > - - gggqG - -"gg" でファイル先頭に移動し、"gqG" でファイル末尾まで整形します。 -注意: 段落が適切に区切られていない場合、それらの文章は一つにつながってしまいま -す。スペースや Tab 文字だけの行があったりするのはよくあるミスです。それは空白 -行です。空行ではありません。 - -整形できるのは単純なプレインテキストだけではありません。整形の設定については -|fo-table| を参照してください。ピリオドの後ろに挿入されるスペースの数を変更す -るには 'joinspaces' を参照してください。 -外部プログラムを使って整形することもできます。Vim の組み込みコマンドで正しく整 -形できないようなテキストを編集するのに便利です。'formatprg' オプション参照。 - -============================================================================== -*25.2* テキストの位置揃え - -テキストを中央揃えするには、次のコマンドを使います: > - - :{range}center [width] - -{range} は通常のコマンドライン範囲指定です。 [width] には中央揃えに使う行の幅 -を指定できます。 [width] を指定しなかった場合は 'textwidth' の設定が使われま -す。('textwidth' が 0 なら 80 が使われます) -例: > - - :1,5center 40 - -次のような結果になります: - - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - - -右端揃え --------- - -同様に、右端揃えするには ":right" コマンドを使います: > - - :1,5right 37 - -結果: - - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - -左端揃え --------- - -次のコマンドで左端揃えできます: > - - :{range}left [margin] - -":center" や ":right" と違い、":left" の引数に指定する値は行の幅ではありませ -ん。左マージンを指定します。省略した場合は、文章は左端にぴったり寄せられます -(マージンに 0 を指定したのと同じ)。5 を指定した場合は 5 つのスペースでインデン -トされます。例えば、次のように使います: > - - :1left 5 - :2,5left - -次のような結果になります: - - I taught for a while. One ~ - time, I was stopped by the ~ - Fort Worth police, because my ~ - homework was too hard. True ~ - story. ~ - - -両端揃え --------- - -両端揃えするための組み込みコマンドはありません。しかし、そのためのマクロパッ -ケージが用意されています。パッケージを使うには、次のコマンドを実行します: > - - :runtime macros/justify.vim - -新しいビジュアルモードコマンド "_j" が定義されます。ビジュアルモードで範囲選択 -して "_j" を実行すればテキストを両端揃えできます。 -詳しい説明はスクリプトファイルを参照してください。この名前の上で "gf" を使えば -ファイルを開けます: $VIMRUNTIME/macros/justify.vim - -外部コマンドを使って整形することもできます。例: > - - :%!fmt - -============================================================================== -*25.3* インデントとタブ - -テキストをインデントすればその部分を目立たせることができます。例えばこのマニュ -アルでは、例文を示すときに 8 個のスペースまたは Tab 文字でインデントしていま -す。通常なら行頭で Tab キーを押せばインデントできます。例: - - the first line ~ - the second line ~ - -Tab キーを押してテキストを挿入、<Enter>、また Tab キーを押してテキストを挿入し -ます。 -'autoindent' オプションを設定すると、自動的にインデントできます: > - - :set autoindent - -新しい行を開始すると、直前の行と同じだけのインデントが挿入されます。上の例な -ら、<Enter> を押した後の Tab キーが必要なくなります。 - - -インデントを増やす ------------------- - -行のインデント量を増やすには ">" オペレータを使います。現在行のインデントを増 -やしたい場合は ">>" を使うと簡単です。 -インデントの増加量は 'shiftwidth' オプションで設定できます。初期設定は 8 です。 -例えば、">>" でスペース 4 つ分のインデントを増やしたい場合は次のように設定しま -す: > - - :set shiftwidth=4 - -上記例文の二行目で ">>" を使うと、次のようになります: - - the first line ~ - the second line ~ - -"4>>" は四つの行のインデントを増やすコマンドです。 - - -タブストップ ------------- - -インデントを 4 桁にしたい場合は 'shiftwidth' を 4 に設定します。しかしそれだけ -では、<Tab> を押したときのインデントの量はスペース 8 個分のままです。これを変 -更するには 'softtabstop' オプションを設定します: > - - :set softtabstop=4 - -これで、<Tab> キーがスペース 4 個分のインデントになります。既に 4 つスペースで -インデントされている場合は <Tab> 文字に置き換えられます (7 バイト節約)。(Tab -文字を使いたくない場合は 'expandtab' を設定してください。) - - Note: - 'tabstop' オプションを 4 に設定することもできますが、その設定で編集し - たファイルを 'tabstop' の初期設定 (8) で見ると見た目が崩れてしまいま - す。他のプログラムで印刷する場合もインデントが崩れてしまうかもしれませ - ん。したがって、'tabstop' は常に 8 のままにしておきましょう。それが標 - 準的な値です。 - - -TAB幅を変更する ---------------- - -tabstop が 3 で書かれたファイルを (tabstop が 8 の) Vim で開くと表示が崩れてし -まいます。'tabstop' を 3 に設定すれば表示を直すことができますが、ファイルを開 -くたびに設定を変更しなければなりません。 -ファイルの tabstop 幅を変更することができます。インデントが正しく表示されるよ -うに 'tabstop' を設定してから ":retab" コマンドを使います: > - - :set tabstop=3 - :retab 8 - -":retab" コマンドを使って 'tabstop' を 8 に変更しています。ただし、テキストの -見た目は変更されません。空白部分が Tab 文字とスペースに置き換えられます。その -状態でファイルを保存すれば、次からは設定を変更しなくてもインデントが正しく表示 -されます。 -注意: プログラムに対して ":retab" を使った場合、文字列定数の中の空白記号が変更 -されてしまうかもしれません。文字列定数の中では Tab 文字ではなく "\t" を使うよ -うにしましょう。 - -============================================================================== -*25.4* 長い行の扱い - -ウィンドウの幅に収まりきらないようなファイルを編集することがあると思います。そ -の場合、すべての行が画面に収まるように折り返して表示されます。 -'wrap' オプションをオフにすると、すべての行が一行で表示されます。長い行の画面 -に収まりきらない部分は表示されません。 -表示されていない部分にカーソルを動かすと、テキストがスクロールされ、その部分が -表示されます。ウィンドウの枠を右に動かすような感じです。 -初期設定では、GUI の水平スクロールバーは表示されません。表示したい場合は次のコ -マンドを使います: > - - :set guioptions+=b - -Vim ウィンドウの下部に水平スクロールバーが表示されます。 - -スクロールバーが使えない、または使いたくない場合は、次のコマンドでテキストをス -クロールしてください。カーソルは同じ位置にとどまりますが、画面外に出てしまうと -きは画面内に移動されます。 - - zh 右にスクロール - 4zh 右に 4 文字分スクロール - zH 右にウィンドウの半分だけスクロール - ze カーソル位置が右端になるように右スクロール - zl 左にスクロール - 4zl 左に 4 文字分スクロール - zL 左にウィンドウの半分だけスクロール - zs カーソル位置が左端になるように左スクロール - -例を使って説明します。カーソルは "which" の "w" にあります。上部の "current -window" はウィンドウに表示されている範囲を示しています。コマンド実行後の表示範 -囲を "window" で示します。 - - |<-- current window -->| - some long text, part of which is visible in the window ~ - ze |<-- window -->| - zH |<-- window -->| - 4zh |<-- window -->| - zh |<-- window -->| - zl |<-- window -->| - 4zl |<-- window -->| - zL |<-- window -->| - zs |<-- window -->| - - -折り返し無しの場合の移動 ------------------------- - -'wrap' がオフで、テキストが水平スクロールされているとき、次のコマンドで画面の -表示範囲を基準にして移動できます。ウィンドウの左右のテキストは無視されます。こ -れらのコマンドはテキストをスクロールしません: - - g0 行の右端に移動 - g^ 行の右端の最初の非空白文字に移動 - gm 行の中央に移動 - g$ 行の左端に移動 - - |<-- window -->| - some long text, part of which is visible ~ - g0 g^ gm g$ - - -禁則処理 *edit-no-break* --------- - -他のプログラムで使うテキストを編集する場合、一つの段落を改行無しで書かなければ -ならないことがあります。'nowrap' を使うと編集中の文全体を表示することができま -せん。'wrap' をオンにすると単語の途中で行が折り返されて読み難くなってしまいま -す。 -そのような場合は 'linebreak' オプションを使ってください。適切な場所で行が折り -返されるようになります。ファイルの内容は変更されません。 -'linebreak' がオフの状態では次のように表示されますが: - - +---------------------------------+ - |letter generation program for a b| - |ank. They wanted to send out a s| - |pecial, personalized letter to th| - |eir richest 1000 customers. Unfo| - |rtunately for the programmer, he | - +---------------------------------+ - -'linebreak' を設定すると: > - - :set linebreak - -次のように表示されます: - - +---------------------------------+ - |letter generation program for a | - |bank. They wanted to send out a | - |special, personalized letter to | - |their richest 1000 customers. | - |Unfortunately for the programmer,| - +---------------------------------+ - -関連オプション: - 'breakat' 折り返し可能な文字を指定する。 - 'showbreak' 折り返された行の先頭に表示される文字。 - 'textwidth' 0 に設定して段落が改行されないようにしてください。 - - -表示行単位の移動 ----------------- - -"j" と "k" で上下の行に移動できますが、長い行の上で使うと、一度に複数の表示行 -を移動することになります。 -画面上で一行だけ移動したい場合は "gj" と "gk" を使ってください。行が折り返され -ていないときは "j" と "k" と同じ動作をします。折り返されているときは、画面上の -一行だけ移動します。 -次のようなマップを定義しておくと便利かもしれません: > - - :map <Up> gk - :map <Down> gj - - -段落を一行につなげる --------------------- - -MS-Word のようなプログラムにテキストをコピーするとき、段落は一行につながってい -なければなりません。段落が空行で区切られているなら、次のコマンドでそれぞれの段 -落を一行につなげることができます: > - - :g/./,/^$/join - -すこし複雑ですね。分解して説明します: - - :g/./ 一文字以上の文字を含んでいる行を探す":global"コマンド - ,/^$/ 現在行(非空行)から空行までの範囲を指定 - join 指定された範囲の行を ":join" コマンドで一行につなげる - -30 桁で改行された次のようなテキストが: - - +----------------------------------+ - |A letter generation program | - |for a bank. They wanted to | - |send out a special, | - |personalized letter. | - | | - |To their richest 1000 | - |customers. Unfortunately for | - |the programmer, | - +----------------------------------+ - -二行にまとめられます: - - +----------------------------------+ - |A letter generation program for a | - |bank. They wanted to send out a s| - |pecial, personalized letter. | - |To their richest 1000 customers. | - |Unfortunately for the programmer, | - +----------------------------------+ - -Note: スペースや Tab 文字を含んでいる空白行 (空行ではない) で段落が区切られて -いる場合、上記のコマンドは機能しません。次のコマンドは空白行でも機能します: > - - :g/\S/,/^\s*$/join - -最後の段落を処理するには、ファイル末尾に空行または空白行が必要です。 - -============================================================================== -*25.5* 表の編集 - -次のような 4 列の表を編集していて: - - nice table test 1 test 2 test 3 ~ - input A 0.534 ~ - input B 0.913 ~ - -4 列目に数字を入力したいと思いました。2 行目に移動して "A" を使い、いくつかス -ペースとテキストを入力すればできます。 -このような編集のための特別なオプションがあります: > - - set virtualedit=all - -これを設定すると、文字が無い場所にもカーソルを移動できるようになります。これを -"virtual space" (仮想空白) と呼びます。この方法を使えば簡単に表を編集できます。 -検索を実行して 4 列目のヘッダに移動します: > - - /test 3 - -"j" を押すとカーソルが適切な場所に移動するので、そのまま "input A" の値を入力 -できます。"0.693" と入力します: - - nice table test 1 test 2 test 3 ~ - input A 0.534 0.693 ~ - input B 0.913 ~ - -テキストが無かった部分は空白で埋められます。"Bj" コマンドを使って次の行に移動 -しましょう。"B" で単語の先頭に移動し、"j" で次のフィールドに移動します。 - - Note: - 画面上のどの場所にでもカーソルを移動できます。行末を超えて移動すること - もできます。文字を挿入しない限り、スペースは挿入されません。 - - -列のコピー ----------- - -4 列目をコピーして "test 1" 列の前に追加します。次の手順でできます: -1. カーソルを列の左上隅に移動する。例: "/test 3"。 -2. CTRL-V を押して矩形選択開始。 -3. "2j" で二行下に移動。カーソルは仮想空白の上 ("input B" 行の "test 3" 列) -4. 右に移動して列全体を選択。列を区切るためのスペースも選択する。例えば "9l" - で移動する。 -5. "y" で選択範囲をヤンク。 -6. カーソルを "text 1" に移動。この場所に新しい列を挿入する。 -7. "P" を押す。 - -結果は次のようになります: - - nice table test 3 test 1 test 2 test 3 ~ - input A 0.693 0.534 0.693 ~ - input B 0.913 ~ - -"test 1" 列全体が右側に押し出されます。"test 3" 列のテキストが無い行も同様に移 -動していますね。 - -次のコマンドでカーソル移動を通常に戻せます: > - - :set virtualedit= - - -バーチャル置換モード --------------------- - -'virtualedit' の不便なところは感覚が狂ってしまうところです。カーソルを動かして -いるときに、カーソルが Tab 文字の上にあるのか、行末を越えた位置にあるのか、認 -識することができません。そこで「バーチャル置換モード」を使います。 -例えば、表の中で Tab 文字が使われているとします。その Tab 文字の上で "rx" を -使ってみます: - - inp 0.693 0.534 0.693 ~ - - | - rx | - V - - inpx0.693 0.534 0.693 ~ - -レイアウトが崩れてしまいました。こうならないように、"gr" コマンドを使います: - - inp 0.693 0.534 0.693 ~ - - | - grx | - V - - inpx 0.693 0.534 0.693 ~ - -"gr" コマンドで置換すると、置換した結果がスクリーン上で同じ幅になるように調整 -されます。足りない分はスペースか Tab 文字で埋められます。つまり上の例は、Tab -文字が "x" で置換され、残りの部分を埋めるように空白が追加されたのです。例では -Tab 文字が挿入されてます。 -複数の文字を置き換えたい場合は "R" コマンドの置換モード (|04.9|参照) を使いま -すが、それだとレイアウトが崩れて意図しない文字が置換されてしまいます: - - inp 0 0.534 0.693 ~ - - | - R0.786 | - V - - inp 0.78634 0.693 ~ - -"gR" コマンドのバーチャル置換モードを使いましょう。これならレイアウトは崩れま -せん: - - inp 0 0.534 0.693 ~ - - | - gR0.786 | - V - - inp 0.786 0.534 0.693 ~ - -============================================================================== - -次章: |usr_26.txt| 繰り返し - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_26.jax b/runtime.old/doc/usr_26.jax deleted file mode 100644 index ee70b4c9c..000000000 --- a/runtime.old/doc/usr_26.jax +++ /dev/null @@ -1,215 +0,0 @@ -*usr_26.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - VIM USER MANUAL - by Bram Moolenaar - - 繰り返し - - -ほとんどの編集作業は手順が決まっています。同じ変更を繰り返したいと思うことはよ -くあります。この章では、変更を繰り返すための便利な方法をいくつか説明します。 - -|26.1| ビジュアルモードを使って繰り返す -|26.2| 加算と減算 -|26.3| 複数のファイルを変更する -|26.4| シェルスクリプトから Vim を使う - -次章: |usr_27.txt| 検索コマンドと正規表現 -前章: |usr_25.txt| テキストの整形 -目次: |usr_toc.txt| - -============================================================================== -*26.1* ビジュアルモードを使って繰り返す - -ビジュアルモードを使えば好きな範囲のテキストを変更できるのでとても便利です。選 -択範囲は強調表示されるので、変更される範囲が正しいかどうか確認できます。しか -し、何度も範囲選択するのは少し面倒です。"gv" コマンドを使えば同じ範囲を再選択 -できます。同じ範囲に対して別の変更を加えることができます。 -例えば、"2001" を "2002" に変更し、"2000" を "2001" に変更してみます: - - The financial results for 2001 are better ~ - than for 2000. The income increased by 50%, ~ - even though 2001 had more rain than 2000. ~ - 2000 2001 ~ - income 45,403 66,234 ~ - -まず "2001" を "2002" に変更します。ビジュアルモードでテキストを選択し、次のコ -マンドを実行します: > - - :s/2001/2002/g - -次に "gv" で同じ範囲を再選択します。カーソルの位置は気にしなくて大丈夫です。そ -して、":s/2000/2001/g" で二回目の変更を加えます。 -同じ方法で何度でも変更を繰り返せます。 - -============================================================================== -*26.2* 加算と減算 - -ある数字を変更し、それと同じ数だけ他の数字を変更したいような場合があります。例 -えば上の例ではすべての年に 1 を加えました。変更したいすべての年に対して置換コ -マンドを実行しなくても、CTRL-A を使って同じことができます。 -上記例文から、年を検索します: > - - /19[0-9][0-9]\|20[0-9][0-9]<Enter> - -そして CTRL-A を押すと、年が一つ増えます: - - The financial results for 2002 are better ~ - than for 2000. The income increased by 50%, ~ - even though 2001 had more rain than 2000. ~ - 2000 2001 ~ - income 45,403 66,234 ~ - -"n" で次の年を検索し、"." を押して CTRL-A を繰り返します ("." を押す方が簡単で -すよね)。"n" と "." を繰り返し、全ての年を更新します。 -ヒント: 'hlsearch' オプションを設定して検索にヒットした場所を確認できるように -すると、先の方まで見通せるので作業がはかどります。 - -加算する量を増やしたい場合は CTRL-A の前に数値を指定します。例えば、次のテキス -トで: - - 1. item four ~ - 2. item five ~ - 3. item six ~ - -カーソルを "1." のところに動かして次のように入力します: > - - 3 CTRL-A - -"1." が "4." に変わります。"." を使って同じ変更を繰り返せます。 - -もう一つ例を示します: - - 006 foo bar ~ - 007 foo bar ~ - -これらの数字に対して CTRL-A を使うと次のようになります: - - 007 foo bar ~ - 010 foo bar ~ - -7 + 1 = 10? これは、"007" の先頭が 0 で始まっているため、八進数と認識されてし -まったのです。この表記方法は C 言語などで使われています。先頭が 0 で始まってい -る数字を八進数として扱いたくない場合は、次のように設定してください: > - - :set nrformats-=octal - -CTRL-X コマンドを使うと同じ方法で減算できます。 - -============================================================================== -*26.3* 複数のファイルを変更する - -あるプログラムに "x_cnt" という変数があり、それを "x_counter" に変更したい場合 -を考えます。変数は複数の C ファイルで使われているので、すべてのファイルを変更 -しなければなりません。その方法を説明します。 -関連ファイルを引数リストに加えます: > - - :args *.c - -すべての C ファイルが検索され、一つ目のファイルが開きます。これで、すべてのファ -イルに対して置換コマンドを実行できます: > - - :argdo %s/\<x_cnt\>/x_counter/ge | update - -":argdo" コマンドの引数にはコマンドを指定できます。指定されたコマンドは引数リ -スト内のすべてのファイルに対して実行されます。 -"%s" はファイル全体を置換するコマンドです。"\<x_cnt\>" で "x_cnt" を検索してい -ます。"\<" と "\>" を使って単語全体がマッチするようにしています。つまり -"px_cnt" や "x_cnt2" は置換されません。 -置換コマンドに指定された "g" フラグは、一つの行で複数の "x_cnt" が見つかった場 -合に、すべての "x_cnt" を置換するための指定です。"e" フラグは "x_cnt" が見つか -らなかった場合でもエラーメッセージを表示しないための指定です。エラーが起こると -その場で ":argdo" が止まってしまいます。 -"|" はコマンドの区切りです。"update" コマンドを使って、変更があったときだけ -ファイルを保存しています。置換する "x_cnt" が見つからなければ保存は実行されま -せん。 - -他にも、すべてのウィンドウに対してコマンドを実行する ":windo" コマンド、すべて -のバッファに対してコマンドを実行する ":bufdo" コマンドがあります。バッファリス -トにはあなたの予想以上にファイルが入っているかもしれないので注意してください。 -":buffers" コマンド (or ":ls") で確認できます。 - -============================================================================== -*26.4* シェルスクリプトから Vim を使う - -例えば、たくさんのファイルがあって、"-person-" を "Jones" に置換して印刷する必 -要があるとします。どのように実行すればいいでしょう。すべてを手作業で実行するの -も一つの方法ですが、シェルスクリプトを書いて済ます方法もあります。 -スクリーンエディタとして Vim を使うとき、ノーマルモードコマンドを使えば簡単に -処理できます。しかし、バッチ処理したい場合は、ノーマルモードコマンドでは分かり -難くなってしまいますし、コマンドファイルにコメントも書けません。代わりに Ex -モードを使います。Ex モードのコマンドはバッチファイルを書くのに適しています。 -("EX コマンド" はコマンドライン (:) コマンドの別名です) -必要となる Ex コマンドは次のとおりです: > - - %s/-person-/Jones/g - write tempfile - quit - -これらのコマンドを "change.vim" に保存します。そして、Vim をバッチモードで起動 -します: > - - for file in *.txt; do - vim -e -s $file < change.vim - lpr -r tempfile - done - -for-done ループは間にある行を繰り返し実行するためのシェル構文です。繰り返すた -びに $file 変数に異なるファイル名が設定されます。 -二行目では、Vim を Ex モード (-e 引数) で起動して $file を開き、"change.vim" -からコマンドを読み込んでいます。-s 引数を指定して Vim をサイレントモードにして -いるので、":" プロンプトやその他のプロンプトは表示されません。 -"lpr -r tempfile" コマンドで出力結果の "tempfile" を印刷し、そのファイルを削除 -しています ("-r" 引数が削除指示)。 - - -標準入力からの読み込み ----------------------- - -Vim は標準入力からテキストを読み込めます。標準入力からはコマンドを読み込むのが -普通なので、そうでないことを Vim に伝えなくてはなりません。ファイルを指定する -場所に "-" 引数を指定してください。例: > - - ls | vim - - -"ls" コマンドの出力結果を、ファイルに保存せずに直接編集できます。 -標準入力からテキストを読み込む場合でも、"-S" 引数を使えば、スクリプトを読み込 -ませることができます。 > - - producer | vim -S change.vim - - - -ノーマルモードスクリプト ------------------------- - -ノーマルモードコマンドをスクリプトの中で使いたい場合は、次のようにすればできま -す: > - - vim -s script file.txt ... -< - Note: - "-s" 引数は "-e" の有無で違う意味になります。この例の場合は、"script" - をノーマルモードコマンドとして実行するという意味になります。"-e" といっ - しょに指定された場合はサイレントモードの指定になり、"-s" にファイルを - 指定することはできません。 - -"script" の中のコマンドは、実際に入力したのと同じように実行されます。改行は -<Enter> として解釈されるので注意してください。次の行へ移動するノーマルモードコ -マンドとして実行されます。 -スクリプトを作る方法はスクリプトファイルを開いてコマンドを入力するだけですが、 -コマンドの結果を自分で想像しなければならないので、少し難しい作業になります。 -実際に編集をしてみて、その操作手順を記録する方法もあります。次のコマンドを使い -ます: > - - vim -w script file.txt ... - -入力したすべてのキーが "script" に保存されます。多少のミスがあってもそのまま操 -作を続けて、後からスクリプトを編集できます。 -"-w" 引数は既存のスクリプトに追記します。したがって、スクリプトの記録を少しず -つ進めることができます。スクリプトをスクラッチから作成したい場合は "-W" 引数を -使ってください。既存のファイルが上書きされます。 - -============================================================================== - -次章: |usr_27.txt| 検索コマンドと正規表現 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_27.jax b/runtime.old/doc/usr_27.jax deleted file mode 100644 index 6451048b1..000000000 --- a/runtime.old/doc/usr_27.jax +++ /dev/null @@ -1,559 +0,0 @@ -*usr_27.txt* For Vim バージョン 7.3. Last change: 2010 Mar 28 - - VIM USER MANUAL - by Bram Moolenaar - - 検索コマンドと正規表現 - - -3 章で検索パターンについて簡単に説明しました |03.9|。Vim ではもっと複雑な検索 -もできます。この章では、よく使われる検索パターンについて説明します。詳細な仕様 -については |pattern| を参照してください。 - -|27.1| 大文字と小文字を区別しない -|27.2| ファイルの端で折り返す -|27.3| オフセット -|27.4| 繰り返しマッチ -|27.5| 選択肢 -|27.6| 文字範囲 -|27.7| 文字クラス -|27.8| 改行記号にマッチ -|27.9| 例 - -次章: |usr_28.txt| 折り畳み -前章: |usr_26.txt| 繰り返し -目次: |usr_toc.txt| - -============================================================================== -*27.1* 大文字と小文字を区別しない - -初期設定では大文字と小文字は区別されます。つまり "include" と "INCLUDE" と -"Include" は三つの別々の単語として扱われ、検索してもどれか一つにしかマッチしま -せん。 -'ignorecase' オプションをオンにしてみましょう: > - - :set ignorecase - -"include" を検索すると、"Include" にも "INCLUDE" にも "InClUDe" にもマッチしま -す。('hlsearch' オプションをオンにするとパターンにマッチした箇所を簡単に確認で -きます。) -次のコマンドでオプションをオフにできます: > - - :set noignorecase - -しかしまだ設定は変更せずに、そのまま "INCLUDE" を検索してみます。"include" を -検索したときとまったく同じテキストがマッチします。次に 'smartcase' オプション -をオンに設定してみます: > - - :set ignorecase smartcase - -パターンに大文字が含まれているときに限り、大文字と小文字が区別されるようになり -ます。これは、大文字を入力するのは大文字と小文字を区別したいときだけだろうとい -う考えに基づいています。スマートでしょ! -この二つのオプションを設定すると次のようにマッチします: - - パターン マッチ ~ - word word, Word, WORD, WoRd, etc. - Word Word - WORD WORD - WoRd WoRd - - -パターンの中で指定する ----------------------- - -ある特定のパターンの中でだけ大文字と小文字の無視したい場合は、パターンに "\c" -をつけます。大文字と小文字を区別したいときは "\C" を使います。"\c" と "\C" の -指定は 'ignorecase' と 'smartcase' の設定よりも優先されます。 - - パターン マッチ ~ - \Cword word - \CWord Word - \cword word, Word, WORD, WoRd, etc. - \cWord word, Word, WORD, WoRd, etc. - -"\c" と "\C" の大きな利点はそれがパターンに埋め込まれていることです。検索履歴 -からパターンを再利用したときなどに、同じ検索結果を期待できます。'ignorecase' -や 'smartcase' の設定は影響しません。 - - Note: - 検索パターンでの "\" の扱いは 'magic' オプションに依存します。この章で - は 'magic' がオンに設定されていることを前提にしています。それが標準設 - 定であり推奨設定です。'magic' を変更してしまうと今まで使えていた検索パ - ターンが使えなくなってしまうかもしれません。 - - Note: - 検索がなかなか終わらない場合は CTRL-C (Unix) または CTRL-Break (MS-DOS - と MS-Windows) で処理を中断できます。 - -============================================================================== -*27.2* ファイルの端で折り返す - -前方検索を実行すると現在のカーソル位置から処理が開始し、指定された文字列が検索 -されます。そしてファイルの末尾まで検索が進みます。ファイルの末尾まで検索しても -文字列が見つからない場合は、ファイルの先頭からカーソル位置に向かって検索が継続 -します。 -"n" コマンドを使って順々に検索を進めている場合もそのうち最初にヒットした場所に -戻ってきます。これに気が付かないと永遠に検索を続けることになってしまいます! -そのようなことがないように、次のようなメッセージが表示されます: - - 下まで検索したので上に戻ります ~ - -"?" コマンドを使って逆方向に検索している場合は次のメッセージが表示されます: - - 上まで検索したので下に戻ります ~ - -それでも気づかないことがあるかもしれません。'ruler' オプションをオンにすると確 -認しやすくなります: > - - :set ruler - -ウィンドウの右下隅 (ステータスラインがあるときはその中) にカーソルの位置が表示 -されます。次のような表示です: - - 101,29 84% ~ - -最初の数字はカーソルの行番号です。検索を開始した行番号を覚えておいて、検索が一 -周してないか確認しましょう。 - - -折り返さない ------------- - -検索を折り返さないようにするには次のコマンドを使います: > - - :set nowrapscan - -検索がファイルの末尾に達するとエラーメッセージが表示されます: - - E385: 下まで検索したけれど該当箇所はありません: forever ~ - -すべての箇所を検索したい場合は "gg" でファイルの先頭に移動してからこのメッセー -ジが表示されるまで検索を繰り返してください。 -"?" を使って逆方向に検索した場合は次のメッセージが表示されます: - - E384: 上まで検索したけれど該当箇所はありません: forever ~ - -============================================================================== -*27.3* オフセット - -通常、検索コマンドを実行すると、パターンにヒットした場所の先頭にカーソルが移動 -します。オフセットを指定することで別の場所に移動することができます。前方検索コ -マンドの "/" の場合、パターンの後ろに "/" とオフセット値を指定します: > - - /default/2 - -"default" というパターンが検索され、見つかった場所から二行下の行頭にカーソルが -移動します。例えばこのコマンドで今読んでいる段落を検索すると、一行目に -"default" が見つかるので、カーソルはその二行した (つまりこの行) に移動すること -になります。 - -オフセットに数値を指定すると、マッチした行から指定した行数だけ移動した行の行頭 -にカーソルが移動します。オフセット値には負の数も指定できます。正の数ならカーソ -ルが下に移動し、負の数なら上に移動します。 - - -文字オフセット --------------- - -"e" はマッチした文字列の末尾を示すオフセットです。マッチした文字列の末尾にカー -ソルが移動します。次のように使います: > - - /const/e - -"const" の "t" にカーソルが移動します。 -オフセットに数値を足すと、その場所からさらにカーソルを進めることができます。 -次のコマンドではマッチした文字列の後ろにカーソルが移動します: > - - /const/e+1 - -正の数ならカーソルが右に動き、負の数なら左に動きます。例: > - - /const/e-1 - -"const" の "s" にカーソルが移動します。 - -オフセットに "b" を指定すると、マッチした文字列の先頭に移動できます。これはオ -フセット指定無しの動作と同じなので単体では使い道はありません。数値を足したり引 -いたりしたい場合に使います。指定した数だけカーソルを前後に移動できます。例: > - - /const/b+2 - -マッチした文字列の先頭から二文字右にカーソルが移動します。つまり "n" の上です。 - - -繰り返し --------- - -直前に使った検索パターンを、別のオフセットを使って再検索したい場合は、パターン -指定を省略します: > - - /that - //e - -これは次の指定と同じです: > - - /that/e - -同じオフセットを使って再検索したい場合は: > - - / - -"n" と同じ動作になります。オフセット指定を無効にして再検索したい場合は次のよう -にします: > - - // - - -後方検索 --------- - -"?" コマンドでも同じようにオフセットを指定できますが、パターンとオフセットを区 -切るのは "/" ではなく "?" になります: > - - ?const?e-2 - -"b" と "e" の意味は同じです。"?" を使う場合でも方向は逆になりません。 - - -検索開始位置 ------------- - -検索は通常、現在のカーソル位置から開始します。オフセットを指定するとうまくいか -ないときがあります。例: > - - /const/-2 - -"const" を検索してその二行上に移動します。"n" を使って再検索すると、その場所か -ら検索が開始して同じ場所の "const" がヒットします。そして、再びオフセットが適 -用されて元の場所に戻ってきます。まったく移動できません。 -次の行に "const" があった場合はもっとおかしなことになります。検索を実行すると -次の行がヒットして、その二行上にカーソルが移動するので、カーソルが逆方向に移動 -してしまうのです。 - -文字オフセットを使った場合はそうなりません。オフセット指定の分だけ検索開始位置 -がずれるので、同じものが再びヒットすることはありません。 - -============================================================================== -*27.4* 繰り返しマッチ - -ある文字を任意の数だけマッチさせたい場合は "*" を使います: > - - /a* - -これは "a" でも "aa" でも "aaa" でもマッチします。0 回というのも任意の数に含ま -れるので "" (空文字列) もマッチします。 -"*" は直前の文字に対してだけ適用されます。"ab*" なら "a"、"ab"、"abb"、"abbb" -などがマッチします。単語を繰り返したい場合は、その単語をグループにまとめなけれ -ばなりません。"\(" と "\)" で単語を囲んでください。次のように使います: > - - /\(ab\)* - -"ab"、"abab"、"ababab"、"" などにマッチします。 - -空文字列にマッチさせたくない場合は "\+" を使います。直前の文字が一つ以上あると -きだけマッチするようになります: > - - /ab\+ - -"ab"、"abb"、"abbb" などにマッチします。"b" が後ろに付いていない "a" にはマッ -チしません。 - -0 または 1 つの文字にマッチさせたい場合は "\=" を使います。例: > - - /folders\= - -"folder" と "folders" がマッチします。 - - -回数指定 --------- - -特定の数だけ文字をマッチさせるには "\{n,m}" を使います。"n" と "m" に数字を指 -定します。直前の文字が "n" から "m" の数だけ連続している場合にマッチします。 -例: > - - /ab\{3,5} - -"abbb"、"abbbb"、"abbbbb" にマッチします。 -"n" を省略した場合は 0 が使われます。"m" が省略された場合は繰り返し回数は無制 -限になります。",m" を省略した場合は、正確に "n" 回の繰り返しにマッチします。 -例: - - pattern match count ~ - \{,4} 0, 1, 2, 3 or 4 - \{3,} 3, 4, 5, etc. - \{0,1} 0 or 1 (\= と同じ) - \{0,} 0 以上 (* と同じ) - \{1,} 1 以上 (\+ と同じ) - \{3} 3 - - -最短一致 --------- - -今まで説明した繰り返し指定は、可能な限りたくさんの文字列にマッチしようとしま -す。できるだけ少ない回数だけマッチさせるには "\{-n,m}" を使います。動作は -"\{n,m}" とほとんど同じですが、最短一致が使われます。 -例: > - - /ab\{-1,3} - -"abbbb" の中の "ab" だけがマッチします。一つの "b" にマッチするだけで条件を満 -たすので、二つ目以降の "b" には絶対にマッチしません。後ろに他のパターンが続い -ているなら最小回数以上の文字にもマッチします。 -"n" と "m" を省略した場合も同じルールが適用されます。両方の数字を省略して -"\{-}" とすることもできます。これは直前の文字が 0 回以上繰り返されている場合に -最小の数だけマッチします。単体で使った場合は常に 0 回にマッチします。他のパター -ンと組み合わせて使うと便利です。例: > - - /a.\{-}b - -"axbxb" の中の "axb" にマッチします。次のパターンを使った場合は: > - - /a.*b - -".*" は可能な限り多くの文字にマッチするので "axbxb" 全体がマッチします。 - -============================================================================== -*27.5* 選択肢 - -パターンの中で "or" (または) を指定するには "\|" を使います。例: > - - /foo\|bar - -"foo" と "bar" のどちらかがマッチします。複数の選択肢を指定できます: > - - /one\|two\|three - -"one"、"two"、"three" のどれかにマッチします。 -複数回マッチさせるには、全体を "\(" と "\)" で囲みます: > - - /\(foo\|bar\)\+ - -"foo"、"foobar"、"foofoo"、"barfoobar" などにマッチします。 -もう一つの例: > - - /end\(if\|while\|for\) - -"endif"、"endwhile"、"endfor" にマッチします。 - -"\&" も似たような条件指定です。指定された選択肢がすべて同じ場所でマッチします。 -マッチ結果としては最後の選択肢が使われます。例: > - - /forever\&... - -"forever" の "for" にマッチします。"fortuin" にはマッチしません。 - -============================================================================== -*27.6* 文字範囲 - -"a"、"b"、"c" のどれかにマッチさせるには "/a\|b\|c" が使えます。しかし "a" か -ら "z" までの文字をマッチさせようとするとパターンが長くなってしまいます。簡単 -な方法があります: > - - /[a-z] - -[] は一つの文字にマッチします。マッチさせたい文字を [] の中に指定します。次の -ようにして文字を一つずつ指定することもできます: > - - /[0123456789abcdef] - -指定された文字の中から一つがマッチします。文字が連続している場合は文字範囲を指 -定できます。例えば "0-3" は "0123" という意味です。"w-z" は "wxyz" という意味 -になります。上記の例は次のように短くできます: > - - /[0-9a-f] - -文字 "-" 自体をマッチさせたい場合は [] の中の一番最初か最後に書いてください。 -[] の中では以下の特殊文字が使えます (これらは [] の中でなくても使えます): - - \e <Esc> - \t <Tab> - \r <CR> - \b <BS> - -[] の中では他にも特殊な指定方法が使えます。詳細は |/[]| を参照してください。 - - -文字範囲の補集合 ----------------- - -マッチして欲しくない文字を指定したい場合は、文字範囲の先頭に "^" を指定します。 -すると、指定した文字以外の文字がマッチするようになります。例: > - - /"[^"]*" -< - " ダブルクオート - [^"] ダブルクオート以外の文字が - * 可能な限りたくさん - " ダブルクオート - -"foo" や "3!x" がマッチします (ダブルクオートもマッチに含まれる)。 - - -定義済み文字範囲 ----------------- - -一般的な文字範囲はあらかじめ定義されています。 -例: > - - /\a - -アルファベット文字が検索されます。これは "/[a-zA-Z]" と同じです。他にも次のよ -うなものがあります: - - item matches equivalent ~ - \d 数字 [0-9] - \D 数字以外 [^0-9] - \x 16進数の数字 [0-9a-fA-F] - \X 16進数の数字以外 [^0-9a-fA-F] - \s 空白文字 [ ] (<Tab>か<Space>) - \S 空白文字以外 [^ ] (<Tab>か<Space>以外) - \l 小文字アルファベット [a-z] - \L 小文字アルファベット以外 [^a-z] - \u 大文字アルファベット [A-Z] - \U 大文字アルファベット以外 [^A-Z] - - Note: - 定義済み文字範囲は普通の文字範囲よりも処理が高速です。 - これらのアイテムは [] の中では指定できません。つまり "[\d\l]" と書いた - としても数字と小文字にはマッチしません。"\(\d\|\l\)" を使ってください。 - -定義済み文字範囲の一覧は |/\s| を参照してください。 - -============================================================================== -*27.7* 文字クラス - -文字範囲は特定の文字のセットにマッチします。文字クラスも似たようなものですが、 -検索パターンを変更せずに文字のセットを変更できるという違いがあります。 -例えば、次のパターンを検索します: > - - /\f\+ - -"\f" はファイル名に使える文字を表します。つまりこのパターンはファイル名として -使える文字列にマッチします。 -どの文字がファイル名として使えるかはシステムによって異なります。MS-Windows で -は "\" が使えますが Unix では使えません。これは 'isfname' オプションで指定され -ています。Unix の初期設定: > - - :set isfname - isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,= - -他のシステムでは初期設定が変わります。ファイル名にマッチさせたいときに "\f" を -使えば、そのパターンはいろいろなシステムで使えます。 - - Note: - Unix では空白などのどんな文字でもファイル名に使えます。'isfname' にそ - れらの文字を設定するのは理論的には正しいことです。しかしその場合、テキ - ストの中からファイル名を切り出すのが困難になってしまいます。したがっ - て、'isfname' の初期設定にはすべての文字は含まれていません。 - -次のような文字クラスがあります: - - item matches option ~ - \i 識別子に使える文字 'isident' - \I \iから数字を抜いたもの - \k キーワードとなる文字 'iskeyword' - \K \kから数字を抜いたもの - \p 印刷可能文字 'isprint' - \P \pから数字を抜いたもの - \f ファイル名に使える文字 'isfname' - \F \fから数字を抜いたもの - -============================================================================== -*27.8* 改行記号にマッチ - -改行を含んだパターンを検索することができます。改行の位置は明示的に指定する必要 -があります。今までに説明したパターンアイテムはどれも改行にマッチしません。 -改行の場所を指定するには "\n" を使います: > - - /the\nword - -行末が "the" で終わり、次の行の行頭が "word" になっている行がマッチします。 -"the word" にもマッチさせたい場合は、スペースと改行の両方をマッチさせる必要が -あります。それには "\_s" を使います: > - - /the\_sword - -間に空白をいくつでも挟めるようにするには: > - - /the\_s\+word - -これは、行末が "the " で終わり、次の行の行頭が " word" で始まっているよう -な場所にもマッチします。 - -"\s" は空白にマッチします。"\_s" は空白と改行にマッチします。 -同様に、"\a" はアルファベットにマッチし、"\_a" はアルファベットと改行にマッチ -します。他の文字クラスや文字範囲も同様に、"_" を付けることによって改行にもマッ -チするようになります。 - -他の多くのパターンアイテムも "\_" を付けることによって改行にマッチさせることが -できます。例えば、"\_." は改行を含めたすべての文字にマッチします。 - - Note: - "\_.*" はファイル末尾までのすべての文字がマッチします。検索コマンドの - 動作が遅くなるかもしれないので注意してください。 - -"\_[]" を使うと文字範囲にも改行を追加できます: > - - /"\_[^"]*" - -ダブルクオートで囲まれたテキストが検索されます。間には改行も含むことができま -す。 - -============================================================================== -*27.9* 例 - -便利そうな検索パターンをいくつか説明します。今までに説明したパターンをどのよう -に使えばいいかを示します。 - - -カリフォルニア州のナンバープレートを探す ----------------------------------------- - -"1MGU103" という番号を検索してみます。これは一つの数字、三つの大文字アルファ -ベット、三つの数字、から成っています。そのままパターンに置き換えてみます: > - - /\d\u\u\u\d\d\d - -同じものが並んでいる部分は回数指定に置き換えることができます: > - - /\d\u\{3}\d\{3} - -[] 指定を使うこともできます: > - - /[0-9][A-Z]\{3}[0-9]\{3} - -あなたならどれを使いますか? どれでも覚えやすいものを使ってください。簡単に覚え -られる方法を使う方がそうでないものを頑張って覚えるよりずっと効率がよくなりま -す。最後の例は他より長くて実行速度も遅いので、どれでも覚えられるという場合は選 -択肢から外してください。 - - -識別子を見つける ----------------- - -C 言語 (などのほとんどの言語) では、識別子は英文字で始まってその後に英数字が続 -きます。アンダースコアも使えるかもしれません。次のパターンでそのような文字を検 -索できます: > - - /\<\h\w*\> - -"\<" と "\>" は単語全体をマッチさせるための指定です。"\h" は "[A-Za-z_]" と同 -じ意味で、"\w" は "[0-9A-Za-z_]" と同じ意味になります。 - - Note: - "\<" と "\>" の動作は 'iskeyword' オプションに依存します。例えば "-" - が含まれている場合、上記パターンは "ident-" にマッチしません。次のパ - ターンを使ってください: > - - /\w\@<!\h\w*\w\@! -< - 識別子の前後の文字が "\w" にマッチしないかどうかをチェックしています。 - |/\@<!| と |/\@!| 参照。 - -============================================================================== - -次章: |usr_28.txt| 折り畳み - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_28.jax b/runtime.old/doc/usr_28.jax deleted file mode 100644 index 0aeb32b5c..000000000 --- a/runtime.old/doc/usr_28.jax +++ /dev/null @@ -1,423 +0,0 @@ -*usr_28.txt* For Vim バージョン 7.3. Last change: 2008 Jun 14 - - VIM USER MANUAL - by Bram Moolenaar - - 折り畳み - - -構造化されたテキストはいくつかのセクションから構成され、セクションはさらにサブ -セクションに分かれています。折り畳みを使うとセクションを一行で表示できます。折 -り畳まれた行にはセクションの概要が表示されます。この章では折り畳みの使い方を説 -明します。 - -|28.1| 折り畳みとは -|28.2| 手動で折り畳む -|28.3| 折り畳みを使って作業する -|28.4| 折り畳みの保存と復元 -|28.5| インデントで折り畳む -|28.6| マーカーで折り畳む -|28.7| 構文で折り畳む -|28.8| スクリプトで折り畳む -|28.9| 変更のない行を折り畳む -|28.10| どれを使えばいいの? - -次章: |usr_29.txt| プログラムの中を移動する -前章: |usr_27.txt| 検索コマンドと正規表現 -目次: |usr_toc.txt| - -============================================================================== -*28.1* 折り畳みとは - -折り畳みとは、バッファ中の複数の行を画面上で一行に表示するための機能です。紙を -折り畳んで短くするような感じです。 - - +------------------------+ - | line 1 | - | line 2 | - | line 3 | - |_______________________ | - \ \ - \________________________\ - / folded lines / - /________________________/ - | line 12 | - | line 13 | - | line 14 | - +------------------------+ - -バッファ内のテキストが消えるわけではありません。折り畳みが影響するのは画面の表 -示だけです。 - -折り畳みを使うと文章構成を把握するのが簡単になります。折り畳まれたセクションは -一行で表示され、その行にはセクションの概要が表示されます。 - -============================================================================== -*28.2* 手動で折り畳む - -実際に試してみましょう。どこかの段落にカーソルを動かして次のように入力します: -> - zfap - -段落が、ハイライトされた一行に置き換わります。それが折り畳みです。|zf| はオペ -レータです。|ap| はテキストオブジェクトによる範囲指定です。|zf| はどのカーソル -移動コマンドとも組み合わせることができます。カーソルが移動した範囲が折り畳みの -対象になります。|zf| はビジュアルモードでも使えます。 - -再びテキストを表示するには、次のコマンドで折り畳みを開きます: > - - zo - -次のコマンドで折り畳みを閉じることができます: > - - zc - -折り畳み関連のコマンドはすべて "z" で始まります。この文字は、紙を折り畳んで横 -から見た図に見えますよね。"z" の後ろにはコマンドが連想しやすいような文字が割り -当てられています。 - - zf 折り畳む (Fold) - zo 折り畳みを開く (Open) - zc 折り畳みを閉じる (Close) - -折り畳みは入れ子にできます。折り畳まれた行を含んだ範囲をさらに折り畳むことがで -きます。例えば、このセクションの段落をそれぞれ折り畳み、そして、この章のセク -ション全体を折り畳むということができます。実際に試してください。折り畳みを開い -たとき、その中にある折り畳みは、閉じたときと同じ開閉状態のままになっています。 - -いくつかの折り畳みを作ったときに、すべての折り畳みを開きたくなった場合、それぞ -れの折り畳みを "zo" で開いていくこともできますが、次のコマンドでもっと簡単にで -きます: > - - zr - -折り畳みが減少 (Reduce) します。その逆は "zm" です: > - - zm - -折り畳みが増加 (More) します。"zr" と "zm" は入れ子になった折り畳みを一階層ず -つ開閉できます。 - -入れ子になった折り畳みをいっぺんに開きたい場合は次のコマンドを使います: > - - zR - -すべての折り畳みが開くまで、折り畳みが減少 (Reduce) します。すべての折り畳みを -閉じるには: > - - zM - -折り畳みが次々と (More and More) 閉じます。 - -|zn| コマンドで折り畳みを無効にできます。無効になった折り畳みは |zN| で元に戻 -ります。|zi| で無効と有効を交互に切り替えられます。次のように使うと便利です: -- ファイルの構造を確認するために折り畳みを作成する -- 作業したい場所に移動する -- |zi| で折り畳みを無効にして編集作業をする -- |zi| で折り畳みを有効にして別の場所に移動する - -手作業で折り畳みを作成するための詳しい説明はリファレンスマニュアルを参照してく -ださい: |fold-manual| - -============================================================================== -*28.3* 折り畳みを使って作業する - -折り畳みが閉じているとき、"j" や "k" などのコマンドでその上を移動できます。閉 -じた折り畳みは一行の空行のように扱われます。つまり折り畳まれたテキストの上を素 -早く移動できます。 - -折り畳まれたテキストは、それが一つの行であるかのように、ヤンクしたり削除したり -できます。これは例えばプログラムの関数を並べ替えたりするときに便利です。まず -'foldmethod' を正しく設定し、それぞれの関数が適切に折り畳まれるようにします。 -そして、"dd" で関数を削除し、カーソルを移動して、"p" でプットします。関数の一 -部が折り畳みからはみ出している場合はビジュアルモードを使います: -- 移動させたい範囲の最初の行に移動 -- "V" でビジュアルモードを開始 -- 移動させたい範囲の最後の行に移動 -- "d" で選択範囲を削除 -- カーソルを移動して、"p" でテキストをプットする - -折り畳みを設定した場所 (つまり |zo| コマンドが機能する場所) を覚えておくのは大 -変です。次のコマンドで折り畳みの場所を確認できます: > - - :set foldcolumn=4 - -ウィンドウの左側に折り畳みの場所が表示されます。閉じた折り畳みは "+" で表示さ -れます。開いた折り畳みは、一行目が "-" で表示され、それ以降は "|" で表示されま -す。 - -マウスで "+" の部分をクリックすると折り畳みが開きます。"-" や "|" の部分をク -リックすると折り畳みが閉じます。 - -現在行の折り畳みをすべて開くには |zO| を使います。 -現在行の折り畳みをすべて閉じるには |zC| を使います。 -現在行の折り畳みを削除するには |zd| を使います。 -現在行の折り畳みをすべて削除するには |zD| を使います。 - -挿入モードでは現在行の折り畳みは絶対に閉じません。入力した文字は必ず表示されま -す。 - -カーソルをジャンプさせたり左右に動かしたりしたとき、折り畳みは自動的に開きま -す。例えば "0" コマンドを使うと現在行の折り畳みが開きます ('foldopen' に "hor" -が含まれている場合のみ。初期設定では含まれています)。どのコマンドを使うと折り -畳みが開くかは 'foldopen' オプションで設定できます。カーソルが乗っている行の折 -り畳みを常に開いておきたい場合は次のように設定します: > - - :set foldopen=all - -注意: 閉じた折り畳みの上に移動することはできなくなります。この設定を一時的に使 -い、元に戻したくなったら次のようにします: > - - :set foldopen& - -折り畳みを自動的に閉じたい場合は次のようにします: > - - :set foldclose=all - -カーソルが乗っていないすべての折り畳みに 'foldlevel' が適用されます。このよう -な動作は好き嫌いがあるので実際に試してみてください。折り畳みを増加させたい場合 -は |zm| を、減少させたい場合は |zr| を使ってください。 - -折り畳みはウィンドウローカルな設定です。同じファイルを二つのウィンドウで表示し -て、片方では折り畳みを使い、もう片方では普通に表示するということができます。あ -るいは、片方ですべての折り畳みを閉じ、もう片方ですべての折り畳みを開くこともで -きます。 - -============================================================================== -*28.4* 折り畳みの保存と復元 - -ファイルを破棄すると折り畳みの情報は失われてしまいます。後で同じファイルを開い -たとき、折り畳みの開閉状態は初期状態に戻っています。手動で作成した折り畳みは失 -われます。折り畳みを保存するには |:mkview| コマンドを使います: > - - :mkview - -ファイルの表示に関する設定が保存されます。保存される情報の種類は 'viewoptions' -オプションで設定できます。 -後で同じファイルを開いたときに保存したビューを復元できます: > - - :loadview - -一つのファイルにつき 10 個までのビューを保存できます。例えば、現在の設定を 3 -番に保存して 2 番の設定をロードするには次のようにします: > - - :mkview 3 - :loadview 2 - -Note: 行を挿入したり削除したりすると保存していたビューが使えなくなるかもしれま -せん。ビューの保存場所は 'viewdir' オプションで決まります。必要な場合は自分で -ビューを削除してください。 - -============================================================================== -*28.5* インデントで折り畳む - -|zf| を使って折り畳みを定義するのは大変です。テキストが階層的にインデントされ -ている場合は、それを使って折り畳むことができます。インデントの深さにしたがって -折り畳みが作成され、大きくインデントされた部分は折り畳みが入れ子になります。こ -の方法は多くのプログラミング言語で使うことができます。 - -'foldmethod' オプションを次のように設定してください: > - - :set foldmethod=indent - -|zm| や |zr| を使って折り畳みを増減できるようになりました。以下の例文を使うと -簡単に確認できます: - -この行はインデントされていない - この行は一段インデントされている - この行は二段インデントされている - この行は二段インデントされている - この行は一段インデントされている -この行はインデントされていない - この行は一段インデントされている - この行は一段インデントされている - -Note: インデントの量と折り畳みの深さの対応は 'shiftwidth' オプションで決まりま -す。'shiftwidth' の幅を単位としてインデントが深くなると折り畳みが深くなります。 -これを折り畳みレベルと呼びます。 - -|zr| や |zm| コマンドを使ったとき、実際には 'foldlevel' の値を増減させているの -です。自分で設定することもできます: > - - :set foldlevel=3 - -'shiftwidth' の幅を単位として、インデントが三段より深い階層の折り畳みが閉じま -す。設定した値より深い階層の折り畳みが閉じる仕組みです。'foldlevel' を 0 に設 -定するとすべての折り畳みが閉じます。|zM| を使うと 'foldlevel' が 0 に設定され -ます。|zR| を使うと 'foldlevel' がファイル内の最も深い折り畳みレベルに設定され -ます。 - -つまり、折り畳みを開閉する方法は二つあります -(A) 折り畳みレベルを設定する方法。 - この方法は、テキストを "ズームアウト" して文章の構成を眺め、カーソルを動か - し、テキストに "ズームイン" するような使い方ができます。 - -(B) |zo| や |zc| を使って個々の折り畳みを開閉する方法。 - 他の折り畳みは閉じたままで、必要な折り畳みだけを開くことができます。 - -二つの方法を組み合わせることもできます。|zm| で全体的に折り畳みを閉じてから -|zo| で特定の折り畳みだけを開く。あるいは、|zR| でですべての折り畳みを開いてか -ら |zc| で特定の折り畳みを閉じるなど。 - -'foldmethod' が "indent" に設定されている場合は手動で折り畳みを定義できません。 -インデントと折り畳みレベルの関係を保つためです。 - -インデントによる折り畳みの詳しい説明はリファレンスマニュアルを参照してくださ -い: |fold-indent| - -============================================================================== -*28.6* マーカーで折り畳む - -テキストにマーカーを書いて、折り畳みの始点と終点を指定できます。この方法を使う -と折り畳みの範囲を明示的に指定できます。ただし、テキストに変更を加える必要があ -ります。 - -次のように設定してください: > - - :set foldmethod=marker - -C 言語を使った例文: - - /* foobar () {{{ */ - int foobar() - { - /* return a value {{{ */ - return 42; - /* }}} */ - } - /* }}} */ - -マーカーの直前に書かれたテキストが折り畳まれた行に表示されるので、折り畳まれた -テキストがどのような内容なのかを知ることができます。 - -テキストを移動したときなどにマーカーの対応がずれてしまうと面倒です。番号付き -マーカーを使うと手間が省けます。例: - - /* global variables {{{1 */ - int varA, varB; - - /* functions {{{1 */ - /* funcA() {{{2 */ - void funcA() {} - - /* funcB() {{{2 */ - void funcB() {} - /* }}}1 */ - -番号付きマーカーを書いた場所から指定レベルの折り畳みが開始します。指定レベルよ -り高いレベルの折り畳みをその場所で区切るという効果もあります。番号付きマーカー -は開始マーカーを指定するだけで折り畳みを定義できます。折り畳みを明示的に止めた -い場合は終了マーカーを設定する必要があります。 - -マーカーによる折り畳みの詳しい説明はリファレンスマニュアルを参照してください: -|fold-marker| - -============================================================================== -*28.7* 構文で折り畳む - -ファイルを表示するとき、ファイルの種類に応じた構文ファイルが使われます。構文 -ファイルにはファイルをカラー表示するための定義が書かれています。例えばこのヘル -プファイルは "help" 構文ファイルを使ってカラー表示されています (カラー端末を -使っているなら)。 -構文ファイルで構文を定義するときに "fold" 属性を指定して折り畳み領域を定義する -ことができます。構文ファイルを書くのは大変ですが、一度作ってしまえば、後は自動 -的に折り畳みが作成されるようになります。 -自分で構文ファイルを作成することはほとんどないと思うので、詳しい説明は省きま -す。折り畳みを開いたり閉じたりする方法は他と変わりません。ファイルを開くと自動 -的に折り畳みが作成されます。 - -構文による折り畳みの詳しい説明はリファレンスマニュアルを参照してください: -|fold-syntax| - -============================================================================== -*28.8* スクリプトで折り畳む - -これはインデントによる折り畳みと似ていますが、インデントではなくユーザーが定義 -した関数を使って折り畳みレベルを計算します。テキストの内容から折り畳みレベルを -判断するようなことができます。例えば、メールでは引用したテキストの前に ">" を -付けます。それを折り畳むには次のようにします: > - - :set foldmethod=expr - :set foldexpr=strlen(substitute(substitute(getline(v:lnum),'\\s','',\"g\"),'[^>].*','','')) - -次のようなテキストが折り畳まれます。試してみてください: - -> 相手が書いた文章 -> 相手が書いた文章 -> > 相手が引用した私の文章 -> > 相手が引用した私の文章 - -上記の 'foldexpr' の設定を説明します (呼び出しの深い順番): - getline(v:lnum) 現在行を取得 - substitute(...,'\\s','','g') 行から空白を削除 - substitute(...,'[^>].*','','') 先頭の'>'以降を全て削除 - strlen(...) 文字の長さ('>'の数)を数える - -Note: ":set" コマンドでは、空白とダブルクオートとバックスラッシュのすべてに対 -してバックスラッシュを前置する必要があります。よくわからないときは: > - - :set foldexpr - -このコマンドで実際に設定された値を確認してください。複雑な式を書いていてそれを -修正したい場合は、コマンドライン補完を使ってください: > - - :set foldexpr=<Tab> -< -<Tab> は実際の Tab キーです。現在の設定値が入力されるので、それを編集できます。 - -複雑な式を使いたい場合はその処理を関数にして、'foldexpr' からはその関数を呼ぶ -ように設定してください。 - -スクリプトにより折り畳みの詳しい説明はリファレンスマニュアルを参照してください: -|fold-expr| - -============================================================================== -*28.9* 変更のない行を折り畳む - -'diff' オプションと合わせて使うと便利です。|vimdiff| コマンドを使ったときもこ -の設定が適用されます。例: > - - :setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1 - -同じファイルの別バージョンを表示しているすべてのウィンドウでこの設定を実行して -ください。同じ部分は折り畳まれ、違いのある行だけが表示されるようになります。 - -詳細は |fold-diff| 参照。 - -============================================================================== -*28.10* どれ使えばいいの? - -いろんな方法があるのでどれを使えばいいか悩んでしまいますね。残念ながら完璧な答 -えはありません。いくつかヒントを示します。 - -編集したい言語の構文ファイルが折り畳みに対応している場合は、それを使うのがおそ -らくベストです。あるいは自分で書いてみるのもいいかもしれません。構文ファイルの -作成には検索パターンの詳しい知識が必要です。簡単な仕事ではありませんが、それが -動作するようになれば、手動で折り畳みを定義する必要がなくなります。 - -テキストのフォーマットが不定な場合は手動で折り畳みを定義してください。 -|:mkview| を使えば折り畳みを保存したり復元したりできます。 - -マーカーを使う方法はファイルにマーカーを書き込む必要があります。他の人とファイ -ルを共有したり、社内のコーディング規約に従う必要がある場合は使えないかもしれま -せん。 -マーカーの利点は折り畳みを明示的に設置できることです。折り畳みをカット&ペース -トしたときに前後の不要な行が変更されたりしません。折り畳まれた行に表示されるコ -メントを指定することもできます。 - -インデントによる折り畳みはたいていのファイルで機能しますが、うまく機能しない場 -合もあります。他の方法が使えない場合に使ってください。しかしアウトラインを表示 -する方法としては非常に便利です。'shiftwidth' の幅ずつインデントを付けて折り畳 -みレベルを指定します。 - -スクリプトを使った方法はほとんどの構造化されたテキストを折り畳むことができま -す。設定方法もシンプルです。折り畳みの開始と終了を認識するのが容易な場合は特に -簡単です。 -この方法で折り畳みを定義したときに思ったとおりの折り畳みが作成されなかった場合 -は "manual" に切り替えてみてください。設定を変更しても折り畳みは削除されないの -で、そのまま手動で折り畳みを削除したり追加したりできます。 - -============================================================================== - -次章: |usr_29.txt| プログラムの中を移動する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_29.jax b/runtime.old/doc/usr_29.jax deleted file mode 100644 index 4be28cc0f..000000000 --- a/runtime.old/doc/usr_29.jax +++ /dev/null @@ -1,616 +0,0 @@ -*usr_29.txt* For Vim バージョン 7.3. Last change: 2008 Jun 28 - - VIM USER MANUAL - by Bram Moolenaar - - プログラムの中を移動する - - -Vim の作者はプログラマです。当然、プログラムを書くための機能が Vim にはたくさ -んあります。この章では、識別子が定義された場所、あるいは使われている場所にジャ -ンプしたり、その定義を別のウィンドウでプレビューしたりする方法を説明します。プ -ログラミング関連の機能は次章でも説明します。 - -|29.1| タグを使う -|29.2| プレビューウィンドウ -|29.3| プログラムの中を移動する -|29.4| グローバル識別子を検索する -|29.5| ローカル識別子を検索する - -次章: |usr_30.txt| プログラムの編集 -前章: |usr_28.txt| 折り畳み -目次: |usr_toc.txt| - -============================================================================== -*29.1* タグを使う - -タグとは、識別子が定義された場所のことです。例えば C や C++ の関数定義がそうで -す。タグの一覧はタグファイルに保存されます。Vim はタグファイルに対応しており、 -タグ、つまり識別子の定義場所に直接ジャンプできます。 -カレントディレクトリのすべての C ファイルからタグを生成するには、次のコマンド -を使います: > - - ctags *.c - -"ctags" は Vim に付属してません。ほとんどの Unix システムには最初からインス -トールされています。持っていない場合は Exuberant ctags を使ってください: - - http://ctags.sf.net ~ - -Vim のコマンドラインから次のコマンドを実行すると関数定義にジャンプできます: > - - :tag startlist - -"startlist" 関数が検索されます。他のファイルで定義されていても検索可能です。 -CTRL-] コマンドを使うとカーソルの下の単語をタグとみなしてジャンプできます。こ -れは複雑な C コードの探索を簡単にしてくれます。例えば、"write_block" 関数の中 -で "write_line" の呼び出しを見つけたとき、その関数の動作を知りたかったら、 -"write_line" にカーソルを合わせて CTRL-] を押せば、その関数の定義にジャンプで -きます。 -"write_line" の中で "write_char" が呼ばれていたら、その関数の動作も調べる必要 -があります。"write_char" にカーソルを合わせて CTRL-] を押しましょう。これ -で "write_char" の定義に移動できました。 - - +-------------------------------------+ - |void write_block(char **s; int cnt) | - |{ | - | int i; | - | for (i = 0; i < cnt; ++i) | - | write_line(s[i]); | - |} | | - +-----------|-------------------------+ - | - CTRL-] | - | +----------------------------+ - +--> |void write_line(char *s) | - |{ | - | while (*s != 0) | - | write_char(*s++); | - |} | | - +--------|-------------------+ - | - CTRL-] | - | +------------------------------------+ - +--> |void write_char(char c) | - |{ | - | putchar((int)(unsigned char)c); | - |} | - +------------------------------------+ - -":tags" コマンドで移動経路を確認できます: - - :tags - # TO tag FROM line in file/text ~ - 1 1 write_line 8 write_block.c ~ - 2 1 write_char 7 write_line.c ~ - > ~ - -では元の場所に戻りましょう。CTRL-T で直前のタグに戻れます。上の例であれば、 -"write_line" 関数の中の "write_char" の呼び出しに戻ることになります。 -このコマンドはカウント指定を付けてジャンプする回数を指定できます。前方にジャン -プして、そして戻ってくることができましたね。もう一度前方に移動してみましょう。 -次のコマンドでタグリストの前方に移動できます: > - - :tag - -コマンドの前にカウント指定を付けてジャンプする回数を指定できます。例えば -":3tag" のように使います。CTRL-T も同様に回数指定できます。 -このように、CTRL-] をで呼び出しをたどり、CTRL-T でさかのぼることができます。 -":tags" コマンドで現在地を確認できます。 - - -ウィンドウを分割する --------------------- - -":tag" コマンドはカレントウィンドウを使ってジャンプ先のファイルを表示します。 -しかし現在の関数とジャンプ先の関数を同時に表示したいこともあると思います。 -":split" コマンドでウィンドウを分割してから ":tag" コマンドを使うという方法も -ありますが、専用の短縮コマンドが用意されています: > - - :stag tagname - -カーソルの下の単語にタグジャンプするときにウィンドウを分割したい場合は次のコマ -ンドを使います: > - - CTRL-W ] - -カウント指定を付けて新しいウィンドウの高さを指定できます。 - - -複数のタグファイルを使う ------------------------- - -ファイルが複数のディレクトリに分れている場合、ディレクトリ毎にタグファイルを作 -ることもできますが、その方法だとタグファイルと同じディレクトリのファイルにしか -ジャンプできません。 -タグファイルが複数ある場合は 'tags' オプションを設定して、関連するすべてのタグ -ファイルが検索されるようにしてください。例: > - - :set tags=./tags,./../tags,./*/tags - -カレントファイルと同じディレクトリ、その一つ上のディレクトリ、すべてのサブディ -レクトリからタグファイルが検索されます。 -これでかなり多くのタグファイルが使えるようになりましたが、まだ十分ではないかも -しれません。例えば "~/proj/src" を編集しているときに "~/proj/sub/tags" を見つ -けることができません。そのような場合はディレクトリツリー全体を検索するように設 -定します。例: > - - :set tags=~/proj/**/tags - - -タグファイルを一つだけ使う --------------------------- - -たくさんの場所からタグファイルを検索しているときは、ハードディスクがガリガリと -音を立てるのが聞こえると思います。これは効率が良くありません。そんなときは少し -時間を掛けて一つの巨大なタグファイルを生成するのがベストです。寝ている間にでも -やってしまうといいでしょう。 -それには上述した Exuberant ctags が必要です。このプログラムにはディレクトリツ -リー全体を検索するためのオプションがあります: > - - cd ~/proj - ctags -R . - -Exuberant ctags のいいところは、いろんなファイルタイプを認識してくれるところで -す。C や C++ だけでなく Effiel や Vim スクリプトも処理できます。詳しくは ctags -のドキュメントを参照してください。 -これで、巨大なタグファイルを一つだけ指定するだけでよくなりました: > - - :set tags=~/proj/tags - - -定義の重複 ----------- - -同じ名前の関数が何度も定義されている場合、あるいは複数のクラスで同名のメソッド -が定義されている場合、":tag" コマンドは最初に見つかったタグにジャンプします。 -カレントファイル内にタグがある場合はそれが優先されます。 -タグが重複している場合は次のコマンドで別のタグにジャンプできます: > - - :tnext - -もう一度実行するとさらに別のタグにジャンプできます。タグがたくさんある場合は次 -のコマンドでタグを選択できます: > - - :tselect tagname - -このような選択画面が表示されます: - - # pri kind tag file ~ - 1 F f mch_init os_amiga.c ~ - mch_init() ~ - 2 F f mch_init os_mac.c ~ - mch_init() ~ - 3 F f mch_init os_msdos.c ~ - mch_init(void) ~ - 4 F f mch_init os_riscos.c ~ - mch_init() ~ - Enter nr of choice (<CR> to abort): ~ - -(行頭の) 番号を入力してジャンプしたい場所を選択してください。他の列にはタグの -場所を示すヒントが表示されます。 - -次のコマンドで他の重複タグに移動できます: - - :tfirst 最初のタグに移動 - :[count]tprevious [count]個 前のタグに移動 - :[count]tnext [count]個 次のタグに移動 - :tlast 最後のタグに移動 - -[count] を省略すると 1 が使われます。 - - -タグ名の推測 ------------- - -コマンドライン補完を使うと長いタグ名の入力が簡単になります。最初の数文字を入力 -してから <Tab> キーを押してください: > - - :tag write_<Tab> - -最初にマッチしたタグが補完されます。それが意図したタグでない場合は、目的のタグ -が見つかるまで <Tab> キーを押してください。 -関数名の一部しか知らない場合や、同じ文字で始まるタグ (後半だけが違っている) が -たくさんある場合は、パターンを使ってタグを検索できます。 -例えば、名前に "block" が含まれているタグにジャンプする場合は、まず次のように -入力します: > - - :tag /block - -そして、コマンドライン補完を使います。<Tab> キーを押してください。"block" を含 -むタグが検索され、最初にマッチしたタグが使われます。 -タグ名の前に "/" を付けると、続くタグ名はそのまま使われず、パターンとして解釈 -されます。検索パターンと同じ機能がすべて使えます。例えば、"write_" で始まるタ -グを選択したい場合は次のようにします: > - - :tselect /^write_ - -最初の "^" はタグ名が "write_" で始まることを示しています。"^" がない場合はタ -グ名の途中にもマッチしてしまいます。同様に、"$" を最後に付けるとタグ名の末尾に -マッチするようになります。 - - -タグブラウザ ------------- - -CTRL-] を使うとカーソルの下にある識別子の定義にジャンプできますが、これを利用 -すると、識別子の一覧を目次として使うことができます。例を示します。まず識別子の -一覧を作ります (Exuberant ctags が必要です) > - - ctags --c-types=f -f functions *.c - -そして Vim をファイル指定なしで起動し、作成したファイルを縦分割ウィンドウで開 -きます: > - - vim - :vsplit functions - -ウィンドウにはすべての関数の一覧が表示されています。関数以外の名前も含まれてい -るかもしれませんが、それは無視してください。":setlocal ts=99" を実行して表示を -見やすくします。 -このウィンドウで、次のマップを定義します: > - - :nnoremap <buffer> <CR> 0ye<C-W>w:tag <C-R>"<CR> - -表示したい関数の行に移動して <Enter> を押すと、カーソルが他のウィンドウに移動 -して、選択した関数にジャンプします。 - - -関連項目 --------- - -タグ名の大文字と小文字を無視したい場合は 'ignorecase' をオンに設定してくださ -い。 - -'tagbsearch' オプションにはタグファイルがソートされているかどうかを設定しま -す。初期設定ではソート済みに設定されています。これはタグの検索を高速に実行でき -ますが、ソートされていないタグファイルを扱えなくなります。 - -'taglength' オプションはタグの識別に使う文字数を指定するのに使います。 - -SNiFF+ プログラムを使う場合は |sniff| インターフェースが使えます。SNiFF+ は商 -用のアプリケーションです。 - -cscope はフリーのプログラムです。識別子の定義場所を探すだけでなく、それが使わ -れている場所も検索できます。|cscope| 参照。 - -============================================================================== -*29.2* プレビューウィンドウ - -コードの中で関数を呼び出すときには、その引数を正確に把握する必要があります。引 -数の意味は関数の定義を見ればわかります。タグの仕組みを使えば簡単に確認できます -が、できれば別のウィンドウに定義を表示したいところです。それにはプレビューウィ -ンドウを使います。 -次のようにすると "write_char" 関数をプレビューウィンドウで表示できます: > - - :ptag write_char - -ウィンドウが開いて "write_char" タグにジャンプします。カーソルの位置は動かない -ので CTRL-W コマンドを使って戻る必要はありません。 -テキストの中に関数名がある場合は、次のコマンドでその定義をプレビューウィンドウ -で表示できます: > - - CTRL-W } - -カーソルの下にある単語の定義場所を自動的に表示してくれるスクリプトもあります。 -|CursorHold-example|参照。 - -プレビューウィンドウを閉じるには次のコマンドを使います: > - - :pclose - -プレビューウィンドウでファイルを開きたい場合は ":pedit" を使います。例えばヘッ -ダファイルを表示するような場合に便利です: > - - :pedit defs.h - -最後に ":psearch" コマンドを紹介します。カレントファイルおよびインクルードされ -ているファイルから単語を検索して、ヒットした場所をプレビューウィンドウで表示で -きます。これは例えば、ライブラリ関数を使っていて、それ用のタグファイルを作って -いないときに使います。例: > - - :psearch popen - -"stdio.h" がプレビューウィンドウで開き、popen() 関数のプロトタイプが表示されま -す: - - FILE *popen __P((const char *, const char *)); ~ - -プレビューウィンドウの高さは 'previewheight' オプションで設定できます (最初に -開いたときに使われる)。 - -============================================================================== -*29.3* プログラムの中を移動する - -プログラムには構造があるので、構文を認識することが可能です。その情報を利用して -移動するコマンドが用意されています。 -例えば C のプログラムには次のような構文がよく現れます: - - #ifdef USE_POPEN ~ - fd = popen("ls", "r") ~ - #else ~ - fd = fopen("tmp", "w") ~ - #endif ~ - -もっと長いかもしれませんし、入れ子になっていることもあります。"#ifdef" に移動 -して % を押すと "#else" にジャンプできます。もう一度 % を押すと "#endif" に -ジャンプします。さらに % を押すと "#ifdef" に戻ります。 -構文が入れ子になっている場合は、正しく対応しているものが検索されます。これは -"#endif" の書き忘れがないかどうか確認するのに便利です。 -"#if" と "#endif" の間にカーソルがあるとき、次のコマンドで開始位置にジャンプで -きます: > - - [# - -"#if" や "#ifdef" の中にいない場合は警告音が鳴ります。前方の "#else" または -"#endif" に移動するには次のコマンドを使います: > - - ]# - -これらのコマンドは、途中にある "#if" - "#endif" ブロックをスキップします。 -例: - - #if defined(HAS_INC_H) ~ - a = a + inc(); ~ - # ifdef USE_THEME ~ - a += 3; ~ - # endif ~ - set_width(a); ~ - -カーソルが最後の行にあるとき、"[#" で最初の行に移動できます。途中の "#ifdef" - -"#endif" ブロックはスキップされます。 - - -コードブロック内の移動 ----------------------- - -C のコードブロックは {} で囲まれています。ブロックはかなり大きい場合もありま -す。アウターブロック (最も外側のブロック) の開始位置に移動するには "[[" コマン -ドを使います。"][" でブロックの末尾に移動できます。このコマンドは行頭の "{" と -"}" をブロックの区切りとして認識します。 -"[{" コマンドで現在のブロックの開始位置に移動できます。同じレベルの {} ペアは -スキップされます。"]}" で末尾に移動できます。 -つまりこのような動作です: - - function(int a) - +-> { - | if (a) - | +-> { - [[ | | for (;;) --+ - | | +-> { | - | [{ | | foo(32); | --+ - | | [{ | if (bar(a)) --+ | ]} | - +-- | +-- break; | ]} | | - | } <-+ | | ][ - +-- foobar(a) | | - } <-+ | - } <-+ - -C++ や Java では、最も外側の {} ブロックはクラスです。その次のレベルの {} はメ -ソッドです。クラスの中で "[m" を使うと、前のメソッドの開始位置に移動できます。 -"]m" で次のメソッドの開始位置に移動できます。 - -"[]" で前の関数の末尾に移動、"]]" で次の関数の開始位置に移動できます。行頭が -"}" で始まる行が関数の末尾として認識されます。 - - int func1(void) - { - return 1; - +----------> } - | - [] | int func2(void) - | +-> { - | [[ | if (flag) - start +-- +-- return flag; - | ][ | return 2; - | +-> } - ]] | - | int func3(void) - +----------> { - return 3; - } - -()、{}、[] などの対括弧に移動する場合は "%" も使えることを忘れないでください。 -括弧の間に複数の行がはさまっていても機能します。 - - -カッコ内の移動 --------------- - -"[(" と "])" は "[{" と "]}" と機能は同じです。ただし、 {} のペアではなく () -のペアに対して動作します。 -> - [( -< <-------------------------------- - <------- - if (a == b && (c == d || (e > f)) && x > y) ~ - --------------> - --------------------------------> > - ]) - -コメント内の移動 ----------------- - -コメントの開始位置に戻るには "[/" コマンドを使います。コメントの終了位置に移動 -するには "]/" を使います。これは /* - */ 形式のコメントのみ対応しています。 - - +-> +-> /* - | [/ | * A comment about --+ - [/ | +-- * wonderful life. | ]/ - | */ <-+ - | - +-- foo = bar * 3; --+ - | ]/ - /* a short comment */ <-+ - -============================================================================== -*29.4* グローバル識別子を検索する - -C プログラムを編集していて、変数の型が "int" なのか "unsigned" なのか分からな -かったら、"[I" コマンドで簡単に確認できます。 -例えば、"column" という単語の上でコマンドを実行すると: > - - [I - -マッチした行が一覧表示されます。カレントファイルとインクルードファイル (さらに -その中でインクルードされているファイル) が検索されます。検索結果は次のように表 -示されます: - - structs.h ~ - 1: 29 unsigned column; /* column number */ ~ - -インクルードファイルも検索されるという点が、タグやプレビューウィンドウを使った -検索よりも便利です。たいていは正しい定義場所が見つかります。タグファイルが更新 -されていなくても、インクルードファイル用のタグファイルがなくても機能します。 -ただし、"[I" が動作するためには少し条件があります。ファイルのインクルードを認 -識するために、'include' オプションが正しく設定されていなければなりません。初期 -設定は C と C++ 用に設定されているので、他の言語では設定を変更する必要がありま -す。 - - -インクルードファイルの場所 --------------------------- - -インクルードファイルは 'path' オプションに設定された場所から検索されます。設定 -に含まれていないディレクトリがあると、いくつかのインクルードファイルは検出でき -ないかもしれません。次のコマンドで検出できないファイルを確認できます: > - - :checkpath - -検出できなかったインクルードファイルの一覧が表示されます。インクルードファイル -の中のインクルードも検査されます。次のような結果が表示されます: - - --- Included files not found in path --- ~ - <io.h> ~ - vim.h --> ~ - <functions.h> ~ - <clib/exec_protos.h> ~ - -カレントファイルでインクルードしている "io.h" が見つかっていません。"vim.h" は -見つかったので ":checkpath" はさらにそのファイルのインクルードも検査しました。 -そして、"functions.h" と "clib/exec_protos.h" が見つかりませんでした。 - - Note: - Vim はコンパイラではないので、"#ifdef" ステートメントを認識しません。 - つまり、"#if NEVER" で囲まれている "#include" ステートメントもすべて検 - 査されます。 - -この問題を修正するには 'path' オプションにディレクトリを追加します。Makefileを -見れば必要なディレクトリがわかると思います。"-I/usr/local/X11" のように、"-I" -が使われている行を調べてください。次のコマンドでディレクトリを追加できます: > - - :set path+=/usr/local/X11 - -サブディレクトリがたくさんある場合はワイルドカード "*" が使えます。例: > - - :set path+=/usr/*/include - -これで "/usr/local/include/" や "/usr/X11/include/" などが検索対象になります。 - -ディレクトリツリーのあちこちにインクルードファイルがあるようなプロジェクトでは -"**" が便利です。すべてのサブディレクトリを検索できます。例: > - - :set path+=/projects/invent/**/include - -例えば次のようなディレクトリからファイルが検索されます: - - /projects/invent/include ~ - /projects/invent/main/include ~ - /projects/invent/main/os/include ~ - etc. - -設定方法は他にもあります。'path' オプションの説明を確認してください。 -実際に検出されたインクルードファイルを確認したい場合は次のコマンドを使います: -> - :checkpath! - -インクルードされているファイルの (長大な) 一覧が表示されます。出力を短くするた -め、同じファイルを見つけた場合は "(Already listed)" とだけ表示し、その中のイン -クルードファイルは表示しません。 - - -定義場所にジャンプする ----------------------- - -"[I" はマッチした行だけを一覧表示します。その周辺を見たい場合は、次のコマンド -で最初のマッチにジャンプします: > - - [<Tab> -< -<Tab> と CTRL-I は同じなので "[ CTRL-I" でも構いません。 - -"[I" で表示される一覧には番号が付いています。最初の項目以外の場所にジャンプし -てい場合は番号を指定してください: > - - 3[<Tab> - -三番目のマッチにジャンプします。CTRL-O で元の場所に戻れることをお忘れなく。 - - -関連コマンド ------------- - - [i 最初のマッチだけ表示 - ]I カーソルより後ろのマッチを一覧表示 - ]i カーソルより後ろの最初のマッチだけ表示 - - -定義済識別子の検索 ------------------- - -"[I" コマンドはすべての識別子を検索します。"#define" で定義されたマクロだけを -検索するには次のコマンドを使います: > - - [D - -このコマンドもインクルードファイルが検索対象になります。検索される行の書式は -'define' オプションで指定します。C と C++ 以外の言語では設定を変更する必要があ -ります。 -次のような "[D" に関連したコマンドがあります: - - [d 最初のマッチだけ表示 - ]D カーソルより後ろのマッチを一覧表示 - ]d カーソルより後ろの最初のマッチだけ表示 - -============================================================================== -*29.5* ローカル識別子を検索する - -"[I" コマンドはインクルードファイルの中も検索します。カーソルの下の単語が最初 -に現れる場所を、カレントファイルの中だけ検索し、その場所にジャンプするには、次 -のコマンドを使います: > - - gD - -ヒント: Goto Definition (定義に移動)。このコマンドはローカル(C 用語で"static") -に定義された変数や関数を検索するのに便利です。例 (カーソルは"counter" の上): - - +-> static int counter = 0; - | - | int get_counter(void) - gD | { - | ++counter; - +-- return counter; - } - -さらに検索範囲を狭めて、現在の関数の中だけ検索したい場合は次のコマンドを使いま -す: > - - gd - -現在の関数の開始位置から最初に単語が使われている場所が検索されます。実際に、行 -頭が "{" で始まる行を後方検索して、その上の空行まで戻り、そこから識別子を前方 -検索しています。例 (カーソルは "idx" の上): - - int find_entry(char *name) - { - +-> int idx; - | - gd | for (idx = 0; idx < table_len; ++idx) - | if (strcmp(table[idx].name, name) == 0) - +-- return idx; - } - -============================================================================== - -次章: |usr_30.txt| プログラムの編集 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_30.jax b/runtime.old/doc/usr_30.jax deleted file mode 100644 index 40d31a4e9..000000000 --- a/runtime.old/doc/usr_30.jax +++ /dev/null @@ -1,633 +0,0 @@ -*usr_30.txt* For Vim バージョン 7.3. Last change: 2007 Nov 10 - - VIM USER MANUAL - by Bram Moolenaar - - プログラムの編集 - - -プログラミングに役立つ機能が Vim にはたくさんあります。プログラムをコンパイル -してエラーが出た行にジャンプしたり、言語に合わせて自動的にインデントしたり、コ -メントを整形したりできます。 - -|30.1| コンパイル -|30.2| C 言語系インデント -|30.3| インデント設定の自動化 -|30.4| その他のインデント -|30.5| タブとスペース -|30.6| コメントの整形 - -次章: |usr_31.txt| GUI を活用する -前章: |usr_29.txt| プログラムの中を移動する -目次: |usr_toc.txt| - -============================================================================== -*30.1* コンパイル - -Vim にはクイックフィックス (quickfix) 機能があります。これは、Vim の中でプログ -ラムをコンパイルして、エラーになった場所に移動し、エラーを修正するための機能で -す。そうして、正常にコンパイルできるまでコンパイルとエラー修正を繰り返します。 - -次のコマンドは "make" を実行し、その出力を読み込みます (引数はそのまま渡されま -す): > - - :make {arguments} - -エラーが発生するとそれが認識され、最初のエラーにカーソルが移動します。 -":make" の使い方を実際に見てみましょう。(典型的な :make セッションはもっと多く -のエラーあるいは少しのゴミを出力しますが) ":make" を実行すると次のような出力が -画面に表示されます: - - :!make | &tee /tmp/vim215953.err ~ - gcc -g -Wall -o prog main.c sub.c ~ - main.c: In function 'main': ~ - main.c:6: too many arguments to function 'do_sub' ~ - main.c: At top level: ~ - main.c:10: parse error before '}' ~ - make: *** [prog] Error 1 ~ - - 2 returned ~ - "main.c" 11L, 111C ~ - (3 of 6): too many arguments to function 'do_sub' ~ - Hit ENTER or type command to continue ~ - -"main.c" の中でエラーが発生していることが確認できると思います。<Enter> を押す -と "main.c" ファイルが開き、6 行目 (最初のエラー) にカーソルが移動します。自分 -でファイルを開く必要はありません。Vim はエラーメッセージを認識できます。 - - +---------------------------------------------------+ - |int main() | - |{ | - | int i=3; | - cursor -> | do_sub("foo"); | - | ++i; | - | return (0); | - |} | - |} | - | ~ | - |(3 of 12): too many arguments to function 'do_sub' | - +---------------------------------------------------+ - -このコマンドで次のエラーに移動できます: > - - :cnext - -カーソルが 10 行目に移動します。ファイルの最終行に余分な '}' がありますね。長 -すぎるエラーメッセージは省略して表示されます。全部を表示するには次のコマンドを -使います: > - - :cc - -すべてのエラーメッセージを表示するには ":clist" コマンドを使います。次のような -出力が表示されます: > - - :clist -< 3 main.c: 6:too many arguments to function 'do_sub' ~ - 5 main.c: 10:parse error before '}' ~ - -ファイル名と行番号が認識された行だけが表示されますが、それは、重要なのはそのよ -うな行だけで、他の行は無駄なメッセージであると判断されるからです。しかし時に -は、認識されなかった行が重要な情報を含んでいることもあります。例えばリンカが未 -解決の関数をエラー表示した場合などです。すべてのメッセージを表示するにはコマン -ドに "!" を付けます: > - - :clist! -< 1 gcc -g -Wall -o prog main.c sub.c ~ - 2 main.c: In function 'main': ~ - 3 main.c:6: too many arguments to function 'do_sub' ~ - 4 main.c: At top level: ~ - 5 main.c:10: parse error before '}' ~ - 6 make: *** [prog] Error 1 ~ - -現在のエラーは強調表示されます。前のエラーに戻るには次のコマンドを使います: > - - :cprevious - -エラーリストを移動するコマンドは他にもあります: - - :cfirst 最初のエラー - :clast 最後のエラー - :cc 3 3つ目のエラー - - -他のコンパイラを使う --------------------- - -":make" コマンドが実際に実行するプログラムは 'makeprg' オプションで設定しま -す。通常は "make" に設定されていますが、例えば Visual C++ を使う場合は "nmake" -に設定する必要があります: > - - :set makeprg=nmake - -オプションにはプログラムの引数も含めることができます。特殊文字はバックスラッ -シュでエスケープしてください。例: > - - :set makeprg=nmake\ -f\ project.mak - -プログラムの設定には特殊なキーワードが使えます。文字 % はカレントファイルの名 -前に展開されます。例えば次のように設定すると: > - - :set makeprg=make\ % - -main.c を編集しているときに ":make" を実行すると次のコマンドが実行されます: > - - make main.c - -これ自体はそれほど便利ではありませんが、すこし変更して :r (root) 修飾子を使う -とどうでしょう: > - - :set makeprg=make\ %:r.o - -これで、実行されるコマンドは次のようになります: > - - make main.o - -修飾子については |filename-modifiers| を参照してください。 - - -古いエラーリスト ----------------- - -例えば ":make" を実行したときに、一つのファイルで警告メッセージが出て、他の -ファイルではエラーが出たとします。エラーを修正し、本当に直ったかどうかを確認す -るためにもう一度 ":make" を実行しました。さて、ここで先程の警告メッセージを確 -認しようとしても、エラーリストには警告メッセージありません。なぜなら、警告メッ -セージを出したファイルは再コンパイルされなかったからです。次のコマンドで古いエ -ラーリストに戻ることができます: > - - :colder - -":clist" と ":cc {nr}" を使って、警告が発生した場所にジャンプしましょう。 -次のコマンドで新しいエラーリストに戻れます: > - - :cnewer - -全部で 10 個までのエラーリストを保持しておくことができます。 - - -他のコンパイラを使う --------------------- - -コンパイラが出力するエラーメッセージの書式を調べ、'errorformat' オプションを設 -定する必要があります。このオプションの構文は非常に複雑ですが、どのようなコンパ -イラにも対応できます。詳しい説明は |errorformat| を参照してください。 - -複数のコンパイラを使うとき、コンパイラを変更するたびに 'makeprg' や -'errorformat' を設定するのは面倒ですよね。簡単な方法が用意されています。例え -ば、Microsoft Visual C++ なら次のように設定します: > - - :compiler msvc - -"msvc" 用のスクリプトが検索され、適切なオプションが設定されます。 -自分で設定スクリプトを書くこともできます。|write-compiler-plugin| 参照。 - - -出力のリダイレクト ------------------- - -":make" コマンドは、実行したプログラムの出力をエラーファイルにリダイレクトしま -す。その動作はいろいろな要因に依存しています (例えば 'shell' オプション)。 -":make" コマンドがプログラムの出力を拾えていないようなら、'makeef' オプション -と 'shellpipe' オプションを確認してみてください。'shellquote' オプションと -'shellxquote' オプションも関係あるかもしれません。 - -どうしても ":make" コマンドのリダイレクトが機能しない場合は、シェルからコンパ -イルを実行して、その出力をファイルにリダイレクトしてください。そして、次のコマ -ンドでそのファイルを読み込みます: > - - :cfile {filename} - -":make" コマンドと同様にエラーにジャンプできます。 - -============================================================================== -*30.2* C 言語系インデント - -プログラムを適切にインデントするとコードが読みやすくなります。Vim の機能を使え -ばインデントするのは簡単です。C 言語、あるいは C++ や Java などの C スタイルの -プログラムなら 'cindent' オプションをオンに設定してください。C 言語のインデン -トは組み込みで用意されていて、複雑な構文でも適切にインデントできます。インデン -トに使うスペースの数は 'shiftwidth' オプションで設定します。スペース 4 個くら -いが適切でしょうか。次のコマンドで設定できます: > - - :set cindent shiftwidth=4 - -このオプションを設定すると、例えば "if (x)" と入力したときに、次の行が自動的に -インデントされます。 - - if (flag) - インデントが増える ---> do_the_work(); - インデントが減る <-- if (other_flag) { - インデントが増える ---> do_file(); - インデントそのまま do_some_more(); - インデントが減る <-- } - -波カッコ ({}) の中でテキストを入力すると、最初の行でインデントが増え、最後の行 -でインデントが減ります。インデントが減るのは '}' を押したタイミングです (入力 -を予測することはできないので)。 - -自動インデントには、コーディングのミスを早く発見できるという副作用があります。 -例えば、関数の最後で } を入力したときに、インデントが本来よりも多くなったとし -たら、どこかで } を入力し忘れています。"%" コマンドを使って、最後に入力した } -と対になっている { を探しましょう。 -同様に、) や ; を忘れると、次の行のインデントが増えます。もし予想よりもインデ -ントが多くなってしまった場合は直前の行を確認してください。 - -書式が汚いコードを編集するとき、あるいは編集によってインデントが崩れてしまった -場合、コードを再インデントする必要があります。それには "=" オペレータを使いま -す。最も単純なのは次の使い方です: > - - == - -現在行がインデントされます。他のオペレータと同様、使い方は三通りあります。ビ -ジュアルモードで "=" を使うと、選択範囲の行がインデントされます。テキストオブ -ジェクトで便利なのは "a{" です。これは現在のブロックを選択します。つまり、次の -コマンドでコードのブロックをインデントできます: > - - =a{ - -コードが根本的に汚い場合は、次のコマンドでファイル全体を再インデントできます: -> - gg=G - -ただし、手作業で丁寧にインデントされたファイルに対してこれを実行してはいけませ -ん。自動インデントは良い仕事をしてくれますが、場合によってはそのルールを破る必 -要もあるからです。 - - -インデントスタイルの設定 ------------------------- - -インデントスタイルは人によってさまざまです。初期設定では 90% のプログラマーが -満足するようなスタイルに設定されています。しかし、世の中にはいろいろなスタイル -があるので、必要なら、'cinoptions' を設定することで、インデントスタイルをカス -タマイズできます。 -'cinoptions' の初期設定は空です。その場合はデフォルトのスタイルが使われます。 -このオプションに値を追加していくことでスタイルを変更できます。例えば、波カッコ -の位置を次のようにしたい場合は: - - if (flag) ~ - { ~ - i = 8; ~ - j = 0; ~ - } ~ - -次のコマンドを使います: > - - :set cinoptions+={2 - -設定できる項目はたくさんあります。|cinoptions-values| 参照。 - -============================================================================== -*30.3* インデント設定の自動化 - -C ファイルを開くたびに 'cindent' オプションを設定するのは面倒ですよね。インデ -ントの設定は自動化できます: > - - :filetype indent on - -実際には、C ファイルに対して 'cindent' をオンにする以外の機能も有効になりま -す。まず最初に、ファイルタイプの認識が有効になります。認識機能は構文強調表示で -使われているものと同じです。 -ファイルタイプが認識されると、そのファイルタイプ用のインデントファイルが検索さ -れます。Vim にはさまざまな言語に対応したインデントファイルが付属しています。イ -ンデントファイルが読み込まれ、自動インデントのための設定が行われます。 - -インデント設定の自動化は次のコマンドでオフにできます: > - - :filetype indent off - -特定のファイルタイプだけインデントを無効にしたい場合は、次のような一行だけの -ファイルを作成してください: > - - :let b:did_indent = 1 - -これを、決められた名前で保存します: - - {directory}/indent/{filetype}.vim - -{filetype} は "cpp" や "java" といったファイルタイプの名前です。次のコマンドで -Vim が使っている名前を確認できます: > - - :set filetype - -例えばこのヘルプファイルなら次のように表示されます: - - filetype=help ~ - -したがって、{filetype} には "help" が入ります。 -{directory} はランタイムディレクトリです。次のコマンドの出力を調べてください: -> - set runtimepath - -ここでは先頭のパスを使います。つまり、出力が次のようなら: - - runtimepath=~/.vim,/usr/local/share/vim/vim60/runtime,~/.vim/after ~ - -{directory} には "~/.vim" が入ります。したがって、ファイル名は次のようになりま -す: - - ~/.vim/indent/help.vim ~ - -インデントをオフにするのではなく、自分のインデントファイルを作成したい場合は、 -|indent-expression| を参照してください。 - -============================================================================== -*30.4* その他のインデント - -最もシンプルな自動インデントは 'autoindent' オプションを使う方法です。これは直 -前の行と同じインデントを使います。'smartindent' はもう少しスマートです。これは -インデントファイルが用意されていないような場合に使います。'smartindent' は -'cindent' より低機能ですが、'autoindent' よりは高機能です。 -'smartindent' をオンにすると、{ でインデントが一つ増え、} で減ります。さらに、 -'cinwords' オプションに設定された単語が現れた場合もインデントが増えます。# で -始まる行は特別扱いされ、一切インデントされません。つまり、プリプロセッサディレ -クティブの行はインデントされません。その次の行は通常通りインデントされます。 - - -インデントの訂正 ----------------- - -'autoindent' や 'smartindent' を設定すると、直前の行と同じインデントを使うこと -ができますが、自分でインデントを ('shiftwidth'の幅ずつ) 増やしたり減らしたりす -る必要も多々あります。それにはインサートモードで CTRL-D と CTRL-T を使うと簡単 -です。 -例えば、次のようなシェルスクリプトを入力してみましょう: - - if test -n a; then ~ - echo a ~ - echo "-------" ~ - fi ~ - -まず、次のオプションを設定します: > - - :set autoindent shiftwidth=3 - -一行目を入力し、<Enter> を押して二行目を開始します: - - if test -n a; then ~ - echo ~ - -二行目にはインデントが必要ですね。CTRL-T を押します: - - if test -n a; then ~ - echo ~ - -インサートモードの CTRL-T コマンドは、'shiftwidth' の幅だけインデントを増やし -ます。カーソルの位置は関係ありません。 -二行目を入力し、<Enter> を押して三行目を開始します。三行目のインデントは問題あ -りません。<Enter> を押して最後の行を入力します。テキストは次のようになりまし -た: - - if test -n a; then ~ - echo a ~ - echo "-------" ~ - fi ~ - -最後の行の余分なインデントを削除するには CTRL-D 押します。これは 'shiftwidth' -の幅だけインデントを減らします。カーソルの位置は関係ありません。 -ノーマルモードでは ">>" コマンドと "<<" コマンドで同様の操作ができます。">" と -"<" はオペレータなので、他のオペレータと同様に、インデントを変更する範囲を三通 -りの方法で指定できます。次の組み合わせが特に便利です: > - - >i{ - -現在のブロックのインデントが増えます。変更されるのは {} の中だけで、{ と } 自 -体の行は変更されません。">a{" なら {} も含まれます。次の例では、カーソルは -"printf" の上にあります: - - original text after ">i{" after ">a{" - - if (flag) if (flag) if (flag) ~ - { { { ~ - printf("yes"); printf("yes"); printf("yes"); ~ - flag = 0; flag = 0; flag = 0; ~ - } } } ~ - -============================================================================== -*30.5* タブとスペース - -'tabstop' の初期設定は 8 です。変更することはできますが、それはトラブルの元に -なります。他のプログラムはあなたが使用しているタブ幅を知ることができません。そ -のようなプログラムでは、恐らくタブの幅は 8 であると仮定されているので、テキス -トが崩れて表示されてしまいます。また、ほとんどのプリンタはタブ幅を 8 で固定し -ています。したがって、'tabstop' を変更するのはお勧めしません。(他のタブ幅設定 -で書かれたテキストを修正したい場合は |25.3| を参照してください。) -プログラムをインデントする場合、8 桁単位でインデントするとすぐに画面が埋まって -しまいます。しかしスペースが一つだけではインデントが目立ちません。多くのプログ -ラマは (折衷して) 4 桁を好んで使います。 -<Tab> の幅は 8 桁で、インデントを 4 桁にしたいということは、<Tab> 文字を使って -インデントすることはできないということです。そのようなインデントには二つの方法 -があります: - -1. <Tab> とスペースを混在させる。<Tab> は 1 つでスペース 8 個分の幅になるので - ファイルサイズの節約になります。スペース 8 個より <Tab> の方が入力も削除も - 簡単です。 - -2. スペースだけを使う。違うタブ幅を使う他のプログラムでもトラブルが起きませ - ん。 - -Vim はどちらの方法もサポートしています。 - - -タブとスペースを混在させる --------------------------- - -タブとスペースを混在させる場合は特別な設定は必要ありません。初期設定でうまくい -きます。 -'softtabstop' オプションを設定すると編集が少し楽になります。このオプションが設 -定されると、タブ幅が 'softtabstop' の値に設定されたかのように、<Tab> キーが動 -作します。しかし実際にはタブとスペースが混在して使われます。 -次のコマンドを実行すると、<Tab> キーでカーソルが 4 桁ごとに進むようになります: -> - :set softtabstop=4 - -行頭で <Tab> を押すと、スペースが 4 個挿入されます。次に <Tab> を押すと、最初 -のスペース 4 個が削除されて <Tab> 文字が挿入されます (つまりカーソルは 8 列 -目)。このように、スペースは可能な限り <Tab> 文字で置き換えられます。 -バックスペースはその反対の動作になります。<BS> を押すと、'softtabstop' の幅だ -け削除されます。可能な限り <Tab> が使われ、余りはスペースになります。 -次の図は、<Tab> をいくつか入力してから <BS> を使ったときの様子を示しています。 -"." はスペースで "------->" は <Tab> です。 - - 入力 結果 ~ - <Tab> .... - <Tab><Tab> -------> - <Tab><Tab><Tab> ------->.... - <Tab><Tab><Tab><BS> -------> - <Tab><Tab><Tab><BS><BS> .... - -同様の動作は 'smarttab' オプションを使っても実現できます。このオプションを設定 -した場合、インデントの入力のために <Tab> を押すと 'shiftwidth' の幅が使われ、 -何かの文字より後ろでは実際の <Tab> 文字が使われます。ただし、<BS> の動作は -'softtabstop' のときと同様にはなりません。 - - -スペースだけを使う ------------------- - -Tab 文字を一切使いたくない場合は 'expandtab' オプションを設定してください: > - - :set expandtab - -このオプションをオンにすると、<Tab> キーでスペースが入力されるようになります。 -つまり、<Tab> 文字と同じ量のスペースが挿入され、<Tab> 文字は使われません。 -バックスペースキーはスペースを一つずつ削除するので、<Tab> を押した後でそれを削 -除するには <BS> を 8 回押さなければなりません。インデントの削除は CTRL-D を使 -うと簡単です。 - - -タブをスペースに変換する (あるいはその逆) ------------------------------------------ - -'expandtab' を設定しても、それ以前に入力されたタブ文字は影響を受けません。つま -り、文章中のタブ文字はタブ文字のままです。タブ文字をスペースに変換したい場合 -は、":retab" コマンドを使ってください。次のように使います: > - - :set expandtab - :%retab - -すべてのインデントがスペースに変換されます。ただし、何かの文字より後ろにある -(インデント以外の) タブ文字はそのままです。それらのタブ文字も変換したい場合は -コマンドに ! を付けます: > - - :%retab! - -これは少し注意が必要です。なぜなら、文字列の中のタブ文字も変換されてしまうから -です。文字列の中でタブ文字が使われているかどうかは、次の検索パターンで確認でき -ます: > - - /"[^"\t]*\t[^"]*" - -文字列の中でタブ文字を使うのはお勧めしません。トラブルを避けるためにも "\t" を -使ってください。 - -同様に、スペースをタブ文字に変換できます: > - - :set noexpandtab - :%retab! - -============================================================================== -*30.6* コメントの整形 - -Vim のすばらしいところはコメントを解釈できるところです。コメントの整形を指示す -るだけで適切に処理してくれます。 -例えば、次のようなコメントがあるとします: - - /* ~ - * This is a test ~ - * of the text formatting. ~ - */ ~ - -最初の行に移動して次のコマンドを実行すると、コメントを整形できます: > - - gq]/ - -"gq" はテキスト整形のためのオペレータです。"]/" はコメントの末尾に移動するコマ -ンドです。次のような結果になります: - - /* ~ - * This is a test of the text formatting. ~ - */ ~ - -各行の行頭が適切に処理されていますね。 -ビジュアルモードでテキストを選択してから "gq" を使う方法でも構いません。 - -新しい行を追加したい場合は、真ん中の行に移動して "o" を押します。次のような結 -果になります: - - /* ~ - * This is a test of the text formatting. ~ - * ~ - */ ~ - -行頭のスペースと * は自動的に挿入されるので、そのままコメントを入力することが -できます。テキストが 'textwidth' より長くなると自動的に改行されます。そのとき -も、行頭の * は自動的に挿入されます: - - /* ~ - * This is a test of the text formatting. ~ - * Typing a lot of text here will make Vim ~ - * break ~ - */ ~ - -この機能を使うには 'formatoptions' の設定が必要です: - - r インサートモードで <Enter> を押したときに * を挿入する - o ノーマルモードで "o" または "O" を使ったときに * を挿入する - c コメントを 'textwidth' の幅で改行する - -詳しくは |fo-table| 参照。 - - -コメントの定義 --------------- - -コメントの書式は 'comments' オプションで設定します。一行コメントと三部コメント -(開始、中間、終端からなるコメント) は分けて処理されます。 -ほとんどの一行コメントは特定の文字で始まります。C++ は //、メイクファイルは -#、 Vim は " です。例えば、C++ のコメントなら次のように設定します: > - - :set comments=:// - -コロンはフラグとコメント文字の区切りです。'comments' の設定は次のような形式で -指定します: - - {flags}:{text} - -この例のように、{flags} は空でも構いません。 -複数のアイテムを指定するときはカンマで区切ります。アイテムを複数指定できるの -で、同じファイルの中でいろんな種類のコメントを使うことができます。例えばメール -を返信するときに、相手のメッセージに ">" や "!" を付けて引用する場合は、次のよ -うに設定します: > - - :set comments=n:>,n:! - -二つのアイテムが設定されました。一つは ">" で開始するコメント、もう一つは "!" -で開始するコメントです。"n" フラグが使われているので、コメントを入れ子にできま -す。つまり、">" で開始する行は、">" の後ろに他のコメントを含んでいても構いませ -ん。この設定により、次のようなメッセージを整形することができます: - - > ! Did you see that site? ~ - > ! It looks really great. ~ - > I don't like it. The ~ - > colors are terrible. ~ - What is the URL of that ~ - site? ~ - -'textwidth' の設定を変更して (例えば 80 にして)、テキストを整形してみましょ -う。ビジュアルモードでテキストを選択してから "gq" を押します: - - > ! Did you see that site? It looks really great. ~ - > I don't like it. The colors are terrible. ~ - What is the URL of that site? ~ - -違う種類のコメントテキストは混ざっていませんね。 -二行目の "I" は一行目の末尾に入れることも可能ですが、しかし、一行目は "> !" で -始まり、二行目は ">" で始まっているため、それらのコメントは別のものであると判 -断されます。 - - -三部コメント (A THREE PART COMMENT) ------------- - -C のコメントは "/*" で始まり、中間には "*" が付き、"*/" で終わります。このよう -なコメントは次のように設定します: > - - :set comments=s1:/*,mb:*,ex:*/ - -開始部分は "s1:/*" です。"s" は三部コメントの開始を示します。フラグとコメント -文字 "/*" をコロンで区切っています。フラグには "1" が指定されていますが、これ -により中間部分がスペース一個分、字下げされます。 -中間部分は "mb:*" です。"m" は三部コメントの中間を示します。"b" フラグは、コメ -ント文字の後ろに空白が必要であることを示します。これを指定しないと、"*pointer" -などもコメントとして認識されてしまいます。 -終端部分は "ex:*/" です。"e" は三部コメントの終端を示します。"x" は特殊なフラ -グです。中間の * が自動的に挿入された直後に "/" を押すと、余計なスペースが削除 -されます。 - -詳細は |format-comments| を参照してください。 - -============================================================================== - -次章: |usr_31.txt| GUI を活用する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_31.jax b/runtime.old/doc/usr_31.jax deleted file mode 100644 index 4d324b261..000000000 --- a/runtime.old/doc/usr_31.jax +++ /dev/null @@ -1,264 +0,0 @@ -*usr_31.txt* For Vim バージョン 7.3. Last change: 2007 May 08 - - VIM USER MANUAL - by Bram Moolenaar - - GUI を活用する - - -Vim は端末でも動作しますが、GUI 版の Vim にはさらに追加機能があります。ファイ -ルブラウザを使ってファイルを選択したり、操作を確認するためのダイアログを表示し -たり、キーボードショートカットを使ってメニューにアクセスしたりできます。 - -|31.1| ファイルブラウザ -|31.2| 操作確認 -|31.3| メニューのショートカット -|31.4| Vim ウィンドウの位置とサイズ -|31.5| その他 - -次章: |usr_32.txt| undo ツリー -前章: |usr_30.txt| プログラムの編集 -目次: |usr_toc.txt| - -============================================================================== -*31.1* ファイルブラウザ - -[ファイル]/[開く...] メニューを実行するとファイルブラウザが表示されます。ファ -イルブラウザを使えば簡単にファイルを探すことができます。しかし例えば、[ウィン -ドウを分割して開く] などのメニューは用意されていません。[ウィンドウ]/[分割] を -実行してから [ファイル]/[開く...] を実行することもできますが、面倒ですよね。 -他のコマンドと同様、ファイルブラウザもコマンド入力で開くことができます。例え -ば、split コマンドに "browse" を付けることで、ファイルブラウザを使うことができ -ます: > - - :browse split - -選択したファイルが ":split" コマンドで開かれます。キャンセルボタンを押した場合 -は何も実行されず、ウィンドウも分割されません。引数にファイルを指定すると、ファ -イルブラウザの初期ディレクトリとして使われます。例: > - - :browse split /etc - -"/etc" ディレクトリでファイルブラウザが開きます。 - -":browse" コマンドはファイルを開くためのコマンドと組み合わせて使います。 -ディレクトリを指定しなかった場合は、適切なディレクトリが選択されます。初期設定 -では、最後に使ったディレクトリが使われます。例えば、":browse split" で -"/usr/local/share" のファイルを開いた場合、次に ":browse" を使ったときは -"/usr/local/share" が使われます。 -この動作は 'browsedir' オプションで変更できます。次の値を設定できます: - - last 最後に使ったディレクトリ (初期設定) - buffer カレントバッファと同じディレクトリ - current カレントディレクトリ - -例えば、カレントディレクトリが "/usr" で、"/usr/local/share/readme" を開いてい -るとき、次のコマンドを実行すると: > - - :set browsedir=buffer - :browse edit - -"/usr/local/share" でブラウザが開きます。次のように設定すると: > - - :set browsedir=current - :browse edit - -"/usr" で開きます。 - - Note: - 大抵のファイルブラウザではキーボードが使えるので、マウスを使わなくても - 操作できます。操作方法はシステム依存なのでここでは説明しません。Vim は - (可能な限り) 標準のブラウザを使用します。システムのドキュメントにキー - ボードショートカットの説明が載っているはずです。 - -GUI を使っていない場合でも、ファイルエクスプローラを使えばファイルブラウザと同 -じようにファイルを選択できます。ただし、":browse" コマンドは使えません。 -|netrw-browse| 参照。 - -============================================================================== -*31.2* 操作確認 - -ファイルが上書きされたり変更が失われたりするような操作は、間違って実行してしま -わないように保護されています。何かがマズいことになりそうなときは「本当にその操 -作を実行したい場合は ! を付けてください」というようなエラーメッセージが表示さ -れます。 -同じコマンドを再度入力したくない場合は、ダイアログを使うと便利です。"OK" か -"Cancel" を選ぶだけで動作を指示できます。 -例えば、ファイルを開いて変更を加えてから、次のコマンドで別のファイルを開きま -す: > - - :confirm edit foo.txt - -すると、次のようなダイアログが表示されます: - - +-----------------------------------+ - | | - | ? Save changes to "bar.txt"? | - | | - | YES NO CANCEL | - +-----------------------------------+ - -ファイルを保存したい場合は "YES" を選択します。変更を破棄したい場合は "NO" を -選択します。戻って状態を確認したい場合は "CANCEL" を選択します。"CANCEL" を選 -択すると元のファイルに戻れます。変更は失われません。 - -":browse" と同様、":confirm" もファイルを開くためのコマンドと組み合わせること -ができます。同時に使うこともできます: > - - :confirm browse edit - -カレントバッファが未保存ならダイアログが表示されます。そして、ファイルブラウザ -が表示され、ファイルを選択できます。 - - Note: - ダイアログはキーボードで操作できます。一般的には、<TAB> キーと矢印キー - で選択を変更し、<Enter> で決定します。操作方法はシステムにより異なりま - す。 - -":conform" コマンドは CUI 版の Vim でも使えます。ダイアログの代わりに Vim ウィ -ンドウの下部にメッセージが表示されるので、キーを押して操作を選択してください。 -> - :confirm edit main.c -< Save changes to "Untitled"? ~ - [Y]es, (N)o, (C)ancel: ~ - -どれか一つのキーを押すと選択できます。コマンドラインでの入力とは違い、<Enter> -を押す必要はありません。 - -============================================================================== -*31.3* メニューのショートカット - -キーボードを使えばすべてのコマンドを実行できます。メニューは (複雑な) コマンド -を簡単に使うための手段を提供しますが、キーボードから手を離してマウスを使わなけ -ればなりません。 -メニューはキーボードでも選択できます。キーボードが使えるかどうかはシステム依存 -ですが、大抵は大丈夫です。メニューを選択するには、メニューの下線付きの文字と -<Alt> キーを組み合わせて使います。例えば、<A-w> (<Alt>とw) で [ウィンドウ] メ -ニューが表示されます。 -[ウィンドウ] メニューの "分割(p)" アイテムは p に下線が付いているので、<Alt> -キーを押したまま p を押せば選択できます。 - -<Alt> キーでメニューを表示した後は、カーソルキーを使ってメニューを選択できま -す。サブメニューは <Right> で開いて <Left> で閉じることができます。閉じるのは -<Esc> でも可能です。<Enter> でメニューを実行します。 - -<Alt> キーはメニュー選択とキーマップの両方で使われるので操作が衝突します。 -<Alt> キーの動作は 'winaltkeys' オプションで設定できます。 -初期設定は "menu" です。メニューのショートカットと同じキーはマップできません -が、他のキーはマップすることができます。 -設定を "no" にすると、<Alt> キーを使ってメニューを選択できなくなります。メ -ニューを選択するにはマウスを使う必要がありますが、すべての <Alt> キーをマップ -できます。 -設定を "yes" にすると、<Alt> キーはメニューのために使われます。いくつかの -<Alt> キー操作はメニュー選択以外の動作になることもあります。 - -============================================================================== -*31.4* Vim ウィンドウの位置とサイズ - -次のコマンドでスクリーン上の Vim ウィンドウの位置を確認できます: > - - :winpos - -このコマンドは GUI でのみ機能します。次のような出力が表示されます: - - Window position: X 272, Y 103 ~ - -位置は画面のピクセル単位です。数値を指定して Vim ウィンドウを移動することもで -きます。例えば、左に 100 ピクセル移動するには次のようにします: > - - :winpos 172 103 -< - Note: - 指定した位置と実際に移動した位置が少しずれることがあります。これはウィ - ンドウの枠があるからです。ウィンドウマネージャがずれを引き起こします。 - -このコマンドを起動スクリプトに書けば好きな位置でウィンドウを開くことができま -す。 - -Vim ウィンドウのサイズは文字数で計算されるので、実際の幅はフォントの大きさに依 -存します。次のコマンドで現在のサイズを確認できます: > - - :set lines columns - -サイズを変更するには 'lines' と 'columns' を設定します: > - - :set lines=50 - :set columns=80 - -CUI 端末でもサイズを取得することができますが、ほとんどの端末ではサイズを変更で -きません。 - -X-Windows 版の gvim では、ウィンドウの位置とサイズを起動引数で指定できます: > - - gvim -geometry {width}x{height}+{x_offset}+{y_offset} - -{width} と {height} は文字数です。{x_offset} と {y_offset} はピクセル数です。 -例: > - - gvim -geometry 80x25+100+300 - -============================================================================== -*31.5* その他 - -gvim はメールの編集にも使えます。そのためには、メーラーを設定して、gvim をエ -ディタとして選択する必要があります。しかしそれだけではうまくいきません。gvim -がまだ実行中にもかかわらず、メーラーは、gvim が編集を終えたものと判断してしま -います。 -gvim が起動するとき、gvim はシェルから分離されます。これは、端末から gvim を起 -動したときに、gvim と端末を平行して使うことができるので便利です。gvim が終了す -るまで待機させたい場合は分離をしないようにする必要があります。それには "-f" 引 -数を使います: > - - gvim -f file.txt - -"-f" は "foreground" (操作中) の意味です。Vim を終了するまでシェルがブロックさ -れます。 - - -GUI の遅延スタート ------------------- - -Unix では gvim を vim として起動することができます。これはシェルの中だけで作業 -を完結したい場合に便利です。ファイルの編集中に GUI を使いたくなったら、次のコ -マンドで GUI を開始できます: > - - :gui - -GUI ウィンドウが開いて端末が開放されるので、同じ端末で他の作業を開始できます。 -"-f" 引数を指定するとフォアグラウンドで GUI を開始できます。":gui -f" のように -指定します。 - - -gvim の起動ファイル -------------------- - -gvim を起動すると、gvimrc ファイルが読み込まれます。これは Vim を起動したとき -に使われる vimrc ファイルのようなものです。gvimrc には、GUI を開始したときだけ -使いたい設定やコマンドを記述します。例えば、'lines' オプションを設定してウィン -ドウのサイズを変更できます: > - - :set lines=55 - -端末ではウィンドウサイズは固定なのでこの設定は必要ありません (サイズの変更をサ -ポートしている xterm もありますが)。 -gvimrc は vimrc と同じ場所から検索されます。通常、Unix では "~/.gvimrc"、 -MS-Windows では "$VIM/_gvimrc" が使われます。 -$MYGVIMRC 環境変数に、読み込まれたファイルの名前が設定されるので、次のコマンド -でそのファイルを開くことができます (ファイルが存在するなら): > - - :edit $MYGVIMRC - -何らかの理由で通常の gvimrc を使いたくない場合は、"-U" 引数で他のファイルを指 -定できます: > - - gvim -U thisrc ... - -いつもと違う設定で gvim を起動できます。例えばフォントのサイズを変更するなど。 -gvimrc を読み込みたくない場合は次のようにします: > - - gvim -U NONE ... - -============================================================================== - -次章: |usr_32.txt| undo ツリー - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_32.jax b/runtime.old/doc/usr_32.jax deleted file mode 100644 index 1bdbde165..000000000 --- a/runtime.old/doc/usr_32.jax +++ /dev/null @@ -1,182 +0,0 @@ -*usr_32.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - undo ツリー - - -Vim にはマルチレベルの undo 機能があります。変更を undo してから新しい変更を加 -えると、undo ツリーに枝が作成されます。このテキストでは、枝を移動する方法を説 -明します。 - -|32.1| ファイル保存時への undo -|32.2| 変更の番号付け -|32.3| ツリーを飛び回る -|32.4| タイムトラベル - -次章: |usr_40.txt| 新しいコマンドを作る -前章: |usr_31.txt| GUI の活用 -目次: |usr_toc.txt| - -============================================================================== -*32.1* ファイル保存時への undo - -いくつかの変更を加えた後で、やっぱり最後にファイルを保存したときの状態に戻りた -いなと思うようなことがときどきあります。そんなときは次のコマンドを使います: > - - :earlier 1f - -"f" は "file" を意味します。 - -このコマンドを繰り返し実行してさらに過去に戻ることができます。あるいは、1 より -大きなカウント指定をすればもっと素早く過去に戻れます。 - -戻り過ぎてしまったときは次のコマンドで進むことができます: > - - :later 1f - -Note: このコマンドは時間を基準にして移動します。これは undo した後でなにか変更 -を加えていた場合に重要になってきます。それについては次の節で説明します。 - -Note: ここではテキストの保存の話をしています。undo 情報のファイルへの保存につ -いては |undo-persistence| を参照してください。 - -============================================================================== -*32.2* 変更の番号付け - -セクション |02.5| では一本道の undo/redo について説明しましたが、実は、 -undo/redo は分岐することができます。変更を undo してから新しい変更を加えると、 -新しい変更が undo ツリーの枝になります。 - -"one" というテキストから始めましょう。最初に " too" を追加します。次に too の -一つ目の 'o' を 'w' に変更します。これで、 二つの変更 (番号 1、2) と、テキスト -の三つの状態ができました。 - - one ~ - | - change 1 - | - one too ~ - | - change 2 - | - one two ~ - -一つだけ変更を undo して "one too" の状態に戻り、"one" を "me" に変更します。 -すると、undo ツリーに枝が作成されます。 - - one ~ - | - change 1 - | - one too ~ - / \ - change 2 change 3 - | | - one two me too ~ - -この状態で |u| コマンドを使って undo してみてください。二回 undo すると "one" -に戻ります。|CTRL-R| で redo すると "one too" になります。もう一度 |CTRL-R| を -実行すると "me too" になります。このように、undo/redo を実行すると、最後に使わ -れた枝を上下に移動できます。 - -重要なのは変更が作成される順番です。undo ツリーにおいては、undo とredo は変更 -とはみなされません。それぞれの変更の後にはテキストの新しい状態があります。 - -Note: 変更にだけ番号が付きます。上図のツリーに示されている "テキスト" の部分に -は番号が付きません。テキストは、その上の変更番号によって参照されます。ただし、 -ツリーを上に移動したときなどは、下の変更番号によって参照されます (どの変更が -undo されたかわかるように)。 -訳注: 例えば上図の "one too" から undo/redo したときのメッセージ: -訳注: undo したとき: 1 change; before #1 <- 下の番号が使われる -訳注: redo したとき: 1 change; after #3 - -============================================================================== -*32.3* ツリーを飛び回る - -さて、"one two" の状態を得るにはどうすればいいでしょうか。次のコマンドを使いま -す: > - - :undo 2 - -テキストが "one two" (change 2 の下) になります。|:undo| コマンドを使うと、指 -定した変更の下にジャンプできます。 - -新しい変更を加えてみましょう。"one" を "not" に変更します: - - one ~ - | - change 1 - | - one too ~ - / \ - change 2 change 3 - | | - one two me too ~ - | - change 4 - | - not two ~ - -何か考えが変わって "me too" に戻りたくなった場合は、|g-| コマンドを使います。 -このコマンドは時間を基準にして戻ります。ツリーを上下に移動するのではなく、直前 -の変更に移動します。 - -|g-| を繰り返し実行すると、テキストは次のように変化します: - me too ~ - one two ~ - one too ~ - one ~ - -|g+| を使えば時間を進めることができます: - one ~ - one too ~ - one two ~ - me too ~ - not two ~ - -ジャンプしたい変更番号が分かっているときには |:undo| が便利です。番号がよく分 -からないときには |g-| と |g+| が便利です。 - -|g-| と |g+| にカウント指定を付けると実行回数を指定できます。 - -============================================================================== -*32.4* タイムトラベル - -しばらくテキストを編集すると、ツリーは大きく成長します。そのとき、数分前のテキ -ストに戻りたいと思うことがあるかもしれません。 - -undo ツリーにどのような枝があるかを確認するには次のコマンドを使います: > - - :undolist -< number changes time ~ - 3 2 16 seconds ago - 4 3 5 seconds ago - -枝に付いている葉の数と、変更された時間が表示されます。今、change 4 の下 ("not -two") にいるとして、10 秒前に戻るには次のようにします: > - - :earlier 10s - -指定した時間だけ戻り、ツリーの特定の位置へ移動できます。|:earlier| コマンドの -引数は "m" で分、"h" で時間、"d" で日を指定することもできます。すべての変更を -元に戻したい場合は大きな値を指定してください: > - - :earlier 100d - -時間を進めるには |:later| コマンドを使います: > - - :later 1m - -|:earlier| と同様に、"s"、"m"、"h" で単位を指定します。 - -undo 情報の詳細を見たい、触りたい、という場合は |undotree()| 関数を使ってくだ -さい。関数が何を返すかは次のコマンドで確認できます: > - - :echo undotree() - -============================================================================== - -次章: |usr_40.txt| 新しいコマンドを作る - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_40.jax b/runtime.old/doc/usr_40.jax deleted file mode 100644 index 8a00a30d4..000000000 --- a/runtime.old/doc/usr_40.jax +++ /dev/null @@ -1,659 +0,0 @@ -*usr_40.txt* For Vim バージョン 7.3. Last change: 2006 Jun 21 - - VIM USER MANUAL - by Bram Moolenaar - - 新しいコマンドを作る - - -Vim は拡張可能なエディタです。よく使う操作を一つにまとめて新しいコマンドを作成 -したり、既存のコマンドを再定義したりできます。自動コマンドを使うと、コマンドを -自動的に実行できます。 - -|40.1| キーマッピング -|40.2| コマンドラインコマンドを定義する -|40.3| 自動コマンド - -次章: |usr_41.txt| Vim スクリプト書法 -前章: |usr_32.txt| undo ツリー -目次: |usr_toc.txt| - -============================================================================== -*40.1* キーマッピング - -|05.3| で簡単なマップを説明しました。マップの原理は、キー操作を他のキー操作に -変換するというものです。単純ですが強力な仕組みです。 -典型的な使い方は、一つのキーを複数のキーにマップする方法です。ファンクション -キー (<F1>以外) には機能が割り当てられていないので、それらのキーを使うとよいで -しょう。例: > - - :map <F2> GoDate: <Esc>:read !date<CR>kJ - -このマップでは三つのモードが使われています。"G" で最後の行にジャンプし、"o" で -新しい行を開いてインサートモードを開始、"Date: " というテキストを入力してから -<Esc> でインサートモードを抜けます。 -特殊キーを <> で囲んで表記していますが、これは括弧表記というものです。特殊キー -を押すのではなく、見たまま文字どおり入力してください。この表記を使ったマップは -読むのが簡単で、そのままコピー&ペーストして使うことができます。 -さて、":" でコマンドラインモードに入ります。":read !date" コマンドは、"date" -コマンドの出力を読み込んで、現在行の下に追加します。<CR> は ":read" コマンドを -実行するために必要です。 -この時点で、テキストは次のようになっています: - - Date: ~ - Fri Jun 15 12:54:34 CEST 2001 ~ - -最後に、"kJ" で上に移動してから二つの行を一行につなげます。 -マップするキーを選ぶときは |map-which-keys| を参考にしてください。 - - -マップとモード --------------- - -":map" コマンドはノーマルモードのキーマップを定義します。同様に、他のモードの -マップを定義することもできます。例えば ":imap" でインサートモードのマップを定 -義できます。次のマップは、カーソルの下に日付を挿入します: > - - :imap <F2> <CR>Date: <Esc>:read !date<CR>kJ - -多少の違いはありますが、ノーマルモードで <F2> にマップしたものと同じです。この -マップを定義してもノーマルモードの <F2> は消えません。このように、同じキーを -モード別にマップすることができます。 -このマップはインサートモードの中で開始しますが、実行後はノーマルモードになって -しまいます。インサートモードを継続したい場合はマップの最後に "a" を追加してく -ださい。 - -マップコマンドはモード別に用意されています: - - :map ノーマルモード、ビジュアルモード、オペレータ待機モード - :vmap ビジュアルモード - :nmap ノーマルモード - :omap オペレータ待機モード - :map! インサートモード、コマンドライン - :imap インサートモード - :cmap コマンドライン - -オペレータ待機モードとは、"d" や "y" などのオペレータを入力した後、モーション -コマンドやテキストオブジェクトの入力を待機している状態のことです。例えば "dw" -の "w" はオペレータ待機モードでの入力です。 - -例えば、d<F7> コマンドで C プログラムのブロック ({}で囲まれたテキスト) を削除 -できるように、あるいは、y<F7> でブロックをヤンクできるようにしたい場合は、<F7> -をマップしてプログラムブロックを選択できるようにする必要があります。次のように -します: > - - :omap <F7> a{ - -オペレータ待機モードで <F7> を押すと "a{" によってブロックが選択されます。この -マップは、{ が押しにくい位置にあるキーボードでは便利です。 - - -マップの一覧を表示する ----------------------- - -定義されたマップの一覧を確認したい場合は、":map" コマンドを引数なしで実行しま -す。モード別のマップコマンドを使うこともできます。次のような一覧が表示されま -す: - - _g :call MyGrep(1)<CR> ~ - v <F2> :s/^/> /<CR>:noh<CR>`` ~ - n <F2> :.,$s/^/> /<CR>:noh<CR>`` ~ - <xHome> <Home> - <xEnd> <End> - - -最初の列は、マップが機能するモードを示しています。"n" はノーマルモード、"i" は -インサートモード、などなど。":map" で定義されたマップには空白が使われます。空 -白の場合はノーマルモードとビジュアルモードで使えます。 -この一覧を見れば、<> 表記で書いた特殊キーが正しく認識されているかを確認できま -す (カラー表示がサポートされている場合に限る)。例えば、<Esc> が色付きで表示さ -れていれば、それはエスケープ文字です。他のテキストと同じ色で表示されている場合 -は、それは "<Esc>" という 5 文字の文字列です。 - - -再マップ --------- - -マップは他のマップを含むことができます。例えば、上述の <F2> のマップは次のよう -に短くできます: > - - :map <F2> G<F3> - :imap <F2> <Esc><F3> - :map <F3> oDate: <Esc>:read !date<CR>kJ - -ノーマルモードの <F2> は、最後の行に移動して <F3> を押すようにマップされていま -す。インサートモードの <F2> は、<Esc> でインサートモードを停止して <F3> を押す -ようにマップされています。そして、<F3> には目的の機能がマップされています。 - -例えば、Ex モードはほとんど使わないので "Q" をテキスト整形コマンドとして使える -ようにしたい (昔の Vim はそういう動作でした) 場合は、次のようなマップを定義し -ます: > - - :map Q gq - -しかし、Ex モードが使いたくなることもあるかもしれません。"gQ" を Q にマップし -て、EX モードが使えるようにしましょう: > - - :map gQ Q - -この状態で "gQ" を入力すると "Q" にマップされます。ここまではいいですね。とこ -ろが、さらに "Q" が "gq" にマップされてしまいます。つまり、"gQ" は "gq" に変換 -されるので Ex モードを使うことはできないのです。 -再マップされないようにするには、":noremap" コマンドを使います: > - - :noremap gQ Q - -これで、マップされた "Q" に対して他のマップが適用されなくなります。同じような -コマンドがモード別に用意されています: - - :noremap ノーマルモード、ビジュアルモード、オペレータ待機モード - :vnoremap ビジュアルモード - :nnoremap ノーマルモード - :onoremap オペレータ待機モード - :noremap! インサートモード、コマンドライン - :inoremap インサートモード - :cnoremap コマンドライン - - -再帰マップ ----------- - -マップが自分自身を含んでいる場合、そのマップは永遠に動き続けます。これを利用す -れば、コマンドを無限に繰り返すことができます。 -例えば、いくつかのファイルがあって、すべてのファイルは一行目にバージョン番号が -書かれているとします。"vim *.txt" でそれらのファイルを開くと、一つ目のファイル -が開いた状態になります。次のマップを定義します: > - - :map ,, :s/5.1/5.2/<CR>:wnext<CR>,, - -そして、",," を入力してマップを実行します。このマップは一行目の "5.1" を "5.2" -に変更し、":wnext" で上書き保存してから次のファイルを開きます。マップの最後は -",," になっているので同じマップが再び適用され、置換と保存が実行されます。 -このマップは、何かエラーが発生するまで止まりません。このマップの場合、置換コマ -ンドの実行で "5.1" が見つからなかった場合にエラーが発生します。その場合は、 -"5.1" を挿入してから再びマップを実行します。最後のファイルに到達すると、 -":wnext" が失敗してマップが停止します。 -マップの途中でエラーが発生した場合は、そのマップの残りの部分は無視されます。 -マップは CTRL-C で中断できます (MS-WindowsではCTRL-Break)。 - - -マップを削除する ----------------- - -マップを削除するには ":unmap" コマンドを使います。このコマンドにも、モード別の -ものが用意されています: - - :unmap ノーマルモード、ビジュアルモード、オペレータ待機モード - :vunmap ビジュアルモード - :nunmap ノーマルモード - :ounmap オペレータ待機モード - :unmap! インサートモード、コマンドライン - :iunmap インサートモード - :cunmap コマンドライン - -例えば、ビジュアルモードを除き、ノーマルモードとオペレータ待機モードだけでマッ -プを定義したいような場合は次のトリックが使えます。最初に三つのモードでマップを -定義し、ビジュアルモードのマップだけを削除します: > - - :map <C-A> /---><CR> - :vunmap <C-A> - -"<C-A>" は CTRL-A キーとして解釈されます。 - -すべてのマップを削除するには |:mapclear| コマンドを使います。他のコマンドと同 -様に、これにもモード別のコマンドが用意されています。マップの削除はアンドゥでき -ないので注意してください。 - - -特殊文字 --------- - -":map" コマンドの後ろには他のコマンドを続けて書くことができます。その場合は | -文字でコマンドを区切ります。そのため、マップの中では | 文字が使えません。この -文字を使いたい場合は <Bar> (5文字) を使ってください。例: > - - :map <F8> :write <Bar> !checkin %<CR> - -同じ問題は ":unmap" コマンドにもあります。":unmap" の場合はさらに末尾のスペー -スにも注意しなければなりません。以下の二つのコマンドは動作が違います: > - - :unmap a | unmap b - :unmap a| unmap b - -一つ目のコマンドは "a " (スペース付き) のマップを削除します。 - -マップの中でスペースを使いたい場合は <Space> (7文字) を使ってください: > - - :map <Space> W - -このマップはスペースキーを押すと、次の単語 (空白区切り) に移動します。 - -マップコマンドの末尾にはコメントを付けられません。なぜなら、" 文字はマップの一 -部として処理されてしまうからです。代わりに |" を使ってください。これは、新しい -空のコマンドを開始して、そのコマンドにコメントをつけます。例: > - - :map <Space> W| " 次の単語に移動するのにスペースバーを使う - - -マップと短縮入力 ----------------- - -インサートモードのマップは短縮入力とよく似ています。引数は同じ方法で処理されま -す。主な違いは実行されるタイミングです。短縮入力は単語の後で単語以外の文字を入 -力したときに実行されます。マップはマップ文字列の最後の文字を入力したときに実行 -されます。 -違いは他にもあります。短縮入力では入力した文字がすぐに挿入されます。短縮入力が -実行されると元の文字が削除されて指定された文字列に置換されます。マップされた文 -字を入力したときは最後の文字を入力してマップが実行されるまで何も挿入されませ -ん。'showcmd' オプションがオンに設定されている場合は、入力途中の文字がウィンド -ウ下部に表示されます。 -マップがあいまいな場合は少し違う動作になります。例えば、次の二つのマップがある -とき: > - - :imap aa foo - :imap aaa bar - -"aa" と入力した時点では、一つ目のマップを適用すべきか、それとも二つ目のマップ -を使うべきか、判断できません。その場合は、他の文字が入力されるまで待機状態にな -ります。"a" を入力すると二つ目のマップが適用されて "bar" が挿入されます。他の -文字、例えばスペース、を入力すると一つ目のマップが適用されて "foo" が挿入さ -れ、さらにスペースが挿入されます。 - - -さらに... ---------- - -<script> キーワードを使うと、スクリプトローカルなマップを定義できます。 -|:map-<script>| 参照。 - -<buffer> キーワードを使うと、バッファローカルなマップを定義できます。 -|:map-<buffer>| 参照。 - -<unique> キーワードを使うと、定義しようとしたマップがすでに定義されていた場合 -にコマンドが失敗します。このキーワードを使わない場合は、古いマップが上書き定義 -されます。|:map-<unique>| 参照。 - -何もしないキーを定義したい場合は <Nop> (5文字) を使います。次のコマンドは、 -<F7> キーが何もしないように設定しています: > - - :map <F7> <Nop>| map! <F7> <Nop> -< -<Nop> の後に空白を入れないでください。 - -============================================================================== -*40.2* コマンドラインコマンドを定義する - -Vim では新しいコマンドを定義することができます。定義したコマンドはコマンドライ -ンモードの他のコマンドと同じように使えます。 -コマンドを定義するには ":command" コマンドを使います: > - - :command DeleteFirst 1delete - -":DeleteFirst" コマンドを実行すると、":1delete" が実行され、最初の行が削除され -ます。 - - Note: - ユーザー定義コマンドの名前は必ず大文字で開始する必要があります。":X"、 - ":Next"、":Print" を使うことはできません。アンダースコア ("_") も使え - ません。数字は使えますがお勧めしません。 - -ユーザー定義コマンドの一覧を見るには、次のコマンドを実行します: > - - :command - -組み込みコマンドと同じように、ユーザー定義コマンドも省略できます。他のコマンド -と区別するのに十分な長さの文字を入力するだけでコマンドを実行できます。コマンド -ライン補完を使って完全な名前を得ることもできます。 - - -引数の数 --------- - -ユーザー定義コマンドは引数を取ることができます。引数の数は -nargs オプションで -指定する必要があります。例えば、上述の :DeleteFirst コマンドは引数を取らないの -で、次のように定義できます: > - - :command -nargs=0 DeleteFirst 1delete - -指定が無ければ 0 が使われるので、わざわざ "-nargs=0" を指定する必要はありませ -ん。-nargs には次の値を指定できます: - - -nargs=0 引数なし - -nargs=1 引数 1 個 - -nargs=* いくつでも - -nargs=? 引数なし、もしくは 1 個 - -nargs=+ 引数 1 個以上 - - -引数の使い方 ------------- - -コマンド定義の中では、<args> キーワードを使って引数を表します。例: > - - :command -nargs=+ Say :echo "<args>" - -次のコマンドを実行すると: > - - :Say Hello World - -"Hello World" と表示されます。引数に引用符 (") が使われると、これはうまく動き -ません。例: > - - :Say he said "hello" - -特殊な文字が含まれているときにそれを適切にエスケープして文字列として使えるよう -にするには "<q-args>" を使います: > - - :command -nargs=+ Say :echo <q-args> - -上記の ":Say" コマンドを実行すると、次のコマンドが実行されます: > - - :echo "he said \"hello\"" -< -<f-args> キーワードを使うと、引数が関数呼び出しに適した形に展開されます。例: > - - :command -nargs=* DoIt :call AFunction(<f-args>) - :DoIt a b c - -次のコマンドが実行されます: > - - :call AFunction("a", "b", "c") - - -範囲指定 --------- - -いくつかのコマンドは範囲指定を受け付けますが、そのようなコマンドを定義したい場 -合は -range オプションを使います。このオプションには次の値を指定できます: - - -range 範囲指定を許可。省略時は現在行が選択される。 - -range=% 範囲指定を許可。省略時はファイル全体が選択される。 - -range={count} 範囲指定を許可。範囲指定の最後の数値だけを使う。省略時 - は {count} が使われる。 - -範囲指定を使う場合は、<line1> キーワードと <line2> キーワードを使って範囲の最 -初と最後の行を取得できます。例えば、次のコマンドは、指定された範囲のテキストを -"save_file" に保存するコマンドを定義しています: > - - :command -range=% SaveIt :<line1>,<line2>write! save_file - - -他のオプション --------------- - -使用できるオプションやキーワードは他にもあります: - - -count={number} カウント指定を受け付ける。省略時は {number}。 - カウント指定は <count> キーワードで取得できま - す。 - -bang ! の指定を受け付ける。! が使われた場合は - <bang> キーワードが ! に置き換わります。 - -register レジスタの指定を受け付ける。(省略時は無名レジ - スタ。) - 指定されたレジスタは <reg> (または <register>) - で取得できます。 - -complete={type} コマンドライン補完の種類を指定する。使用できる - 補完の種類は |:command-completion| を参照。 - -bar コマンドの後ろに | を使って他のコマンド (ある - いはコメント) を続けて書くことを許可する。 - -buffer カレントバッファでのみ使用できるコマンドを定義 - する。 - -最後に <lt> キーワードを説明します。これは文字 "<" を意味します。<> 表記をエス -ケープして、特殊な意味を消すために使います。 - - -再定義と削除 ------------- - -同じ名前のコマンドを再定義したい場合は ! を使います: > - - :command -nargs=+ Say :echo "<args>" - :command! -nargs=+ Say :echo <q-args> - -コマンドを削除したい場合は ":delcommand" を使います。削除したいコマンドの名前 -を引数に指定してください。例: > - - :delcommand SaveIt - -次のコマンドですべてのユーザー定義コマンドを削除できます: > - - :comclear - -コマンドの削除はアンドゥできないので注意してください。 - -ユーザー定義コマンドについての詳細はリファレンスマニュアルを参照してください。 -|user-commands|。 - -============================================================================== -*40.3* 自動コマンド - -自動コマンドとは、さまざまなイベントに応じて自動的に実行されるコマンドのことで -す。ファイルを読み書きしたり、バッファを切り替えたりしたときに実行されます。例 -えば、|gzip|プラグインは、圧縮ファイルを開くために自動コマンドを使っています。 -自動コマンドは非常に強力です。適切に使えばいろんな手間を省くことができます。し -かし、不適切な使い方をすればさまざまなトラブルの原因になります。 - -例えば、ファイルを保存するときに、保存した日付をファイル末尾に書き込んでみま -しょう。まず、次の関数を定義します: > - - :function DateInsert() - : $delete - : read !date - :endfunction - -ファイルを保存する直前にこの関数を実行したいわけです。次のコマンドで設定しま -す: > - - :autocmd FileWritePre * call DateInsert() - -"FileWritePre" は自動コマンドが実行されるイベントです。このイベントはファイル -を保存する直前に発行されます。"*" の部分はファイル名にマッチするパターンです。 -"*" はすべてのファイルにマッチします。 -この自動コマンドが設定された状態で ":write" を実行すると、ファイル名にマッチし -たすべての FileWritePre 自動コマンドが実行されてから、ファイルが保存されます。 -:autocmd の正式な書式は次のとおりです: > - - :autocmd [group] {events} {file_pattern} [nested] {command} - -[group] は省略可能です。コマンドを管理したり呼び出したりしたい場合に使います -(後述)。{events} はコマンドを実行するイベントのリストです (カンマ区切り)。 -{file_pattern} はファイル名です。ワイルドカードが使えます。例えば、"*.txt" な -ら ".txt" で終わるファイルに対してコマンドが実行されます。 [nested] は省略可能 -です。自動コマンドを再帰的に呼び出したい場合に指定します (下記参照)。そして、 -実行したいコマンドを {command} に指定します。 - - -イベント --------- - -BufReadPost は最も便利なイベントの一つです。これは新しいファイルを開いたときに -発行されます。普通はオプションを設定したりするのに使われます。例えば、"*.gsm" -というファイルを GNU アセンブリ言語のファイルとして扱いたい場合は、次のように -設定します: > - - :autocmd BufReadPost *.gsm set filetype=asm - -ファイルの種類が検出されて、'filetype' オプションが設定されると、Filetype イベ -ントが発行されます。このイベントはファイルの種類に応じて何かを実行したい場合に -使います。例えば、テキストファイルを開いたときに短縮入力の定義を読み込むには次 -のようにします: > - - :autocmd Filetype text source ~/.vim/abbrevs.vim - -新しいファイルを作成したときにスケルトンを挿入することもできます: > - - :autocmd BufNewFile *.[ch] 0read ~/skeletons/skel.c - -イベントの一覧は |autocmd-events| を参照してください。 - - -パターン --------- - -{file_pattern} 引数には複数のパターンをカンマ区切りで指定できます。例えば、 -"*.c,*.h" なら、末尾が ".c" と ".h" のファイルにマッチします。 -パターンには一般的なワイルドカードが使えます。次のようなものがよく使われます: - - * 何かの文字が何文字でも - ? 何かの文字が 1 つ - [abc] a か b か c - . ドット - a{b,c} ab か ac - -パターンにスラッシュ (/) が含まれている場合は、ディレクトリ名と比較されます。 -スラッシュが含まれていない場合は、ファイル名のみが使われます。例えば、 -"/home/biep/readme.txt" には "*.txt" がマッチします。"/home/biep/*" も同様に -マッチします。しかし、"home/foo/*.txt" はマッチしません。 -スラッシュが含まれているときは、ファイルの絶対パス ("/home/biep/readme.txt") -と相対パス (例えば "biep/readme.txt") の両方が比較されます。 - - Note: - MS-Windows のように、ディレクトリの区切りにバックスラッシュを使うよう - なシステムでもスラッシュを使ってパターンを指定することができます。 - バックスラッシュはエスケープする必要があるので、スラッシュを使ったほう - が簡単です。自動コマンドの移植性もあがります。 - - -自動コマンドを削除する ----------------------- - -自動コマンドの削除には、定義と同じコマンドを使います。ただし、削除するときは ! -を使い、{command} は指定しません。例: > - - :autocmd! FileWritePre * - -"FileWritePre" イベントの、"*" パターンを使っている自動コマンドがすべて削除さ -れます。 - - -一覧表示する ------------- - -定義されている自動コマンドの一覧を見るには次のようにします: > - - :autocmd - -とても長い出力が表示されます。ファイルタイプの認識が有効になっている場合は特に -長くなります。一部のコマンドだけを表示したい場合は、グループ、イベント、パター -ンのどれかを指定してください。例えば、次のコマンドで BufNewFile に設定された自 -動コマンドを表示できます: > - - :autocmd BufNewFile - -"*.c" に対する自動コマンドを表示したい場合は次のようにします: > - - :autocmd * *.c - -イベントに "*" を指定すると、すべてのイベントが表示されます。cprograms グルー -プの自動コマンドを表示したい場合は次のようにします: > - - :autocmd cprograms - - -グループ --------- - -自動コマンドを定義するとき、{group} を指定することで、関連した自動コマンドをグ -ループ化できます。例えば、特定のグループの自動コマンドをまとめて削除したりでき -ます。 -自動コマンドをグループ化するには、":augroup" コマンドを使います。例えば、C 言 -語用の自動コマンドを定義してみましょう: > - - :augroup cprograms - : autocmd BufReadPost *.c,*.h :set sw=4 sts=4 - : autocmd BufReadPost *.cpp :set sw=3 sts=3 - :augroup END - -次のように書くこともできます: > - - :autocmd cprograms BufReadPost *.c,*.h :set sw=4 sts=4 - :autocmd cprograms BufReadPost *.cpp :set sw=3 sts=3 - -"cprograms" グループのすべての自動コマンドを削除するには、次のようにします: > - - :autocmd! cprograms - - -ネスト ------- - -通常は、自動コマンドの中で実行されたコマンドによってイベントが発行されることは -ありません。例えば、FileChangedShell イベントの中でファイルを読み込んでも、シ -ンタックスを設定するための自動コマンドは実行されません。イベントを発行させたい -場合は "nested" 引数を指定してください: > - - :autocmd FileChangedShell * nested edit - - -自動コマンドを実行する ----------------------- - -擬似的にイベントを発行して、自動コマンドを実行することができます。自動コマンド -の中から他の自動コマンドを実行するような場合に便利です。例: > - - :autocmd BufReadPost *.new execute "doautocmd BufReadPost " . expand("<afile>:r") - -新しいファイルが開かれたときに実行される自動コマンドを定義しています。ファイル -名の末尾が ".new" になっているものが対象です。":execute" コマンドは、引数を評 -価した結果をコマンドとして実行します。例えば、"tryout.c.new" を開くと、次のコ -マンドが実行されます: > - - :doautocmd BufReadPost tryout.c - -expand() 関数に指定された "<afile>" が自動コマンドで使われたファイル名に展開さ -れ、":r" によって、そのルート部分 (訳注: .newを除いた部分) が使われます。 - -":doautocmd" はカレントバッファの上で実行されます。":doautoall" コマンドは、 -":doautocmd" と同じ操作をすべてのバッファに対して実行します。 - - -ノーマルモードコマンドを使う ----------------------------- - -自動コマンドで使用できるのはコマンドラインコマンドです。ノーマルモードコマンド -を使いたい場合は ":normal" コマンドを使ってください。例: > - - :autocmd BufReadPost *.log normal G - -*.log ファイルを開くと、ファイル末尾にカーソルがジャンプします。 -":normal" コマンドは少し複雑です。指定するコマンドは完結していなければなりませ -ん。例えば、"i" でインサートモードに入ったら、<Esc> でモードを抜ける必要があり -ます。"/" で検索する場合は、<CR> で検索を実行する必要があります。 -":normal" コマンドはすべてのテキストを引数として解釈するので、| を使って他のコ -マンドを続けて書くことはできません。それが必要な場合は ":execute" コマンドの中 -で ":normal" コマンドを実行してください。":execute" を使うと、特殊文字を指定す -るのが簡単になります。例: > - - :autocmd BufReadPost *.chg execute "normal ONew entry:\<Esc>" | - \ 1read !date - -長いコマンドを見やすくするために、バックスラッシュを使って複数行に分けていま -す。この方法はスクリプトファイルの中だけで使えます (コマンドラインで入力すると -きは使えません)。 - -自動コマンドの中で複雑なことを実行すると、必然的にカーソルの位置が変わってしま -います。それを元に戻す方法については |restore-position| を参照してください。 - - -イベントの無効化 ----------------- - -自動コマンドを実行して欲しくないときは、'eventignore' オプションに無視したいイ -ベントを設定してください。例えば、次のように設定すると、他のウィンドウに移動し -たときのイベントが無視されます: > - - :set eventignore=WinEnter,WinLeave - -すべてのイベントを無視するには、次のように設定します: > - - :set eventignore=all - -通常の状態に戻すには、'eventignore' を空に設定します: > - - :set eventignore= - -============================================================================== - -次章: |usr_41.txt| Vim スクリプト書法 - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_41.jax b/runtime.old/doc/usr_41.jax deleted file mode 100644 index d6cc12425..000000000 --- a/runtime.old/doc/usr_41.jax +++ /dev/null @@ -1,2415 +0,0 @@ -*usr_41.txt* For Vim バージョン 7.3. Last change: 2011 Jun 19 - - VIM USER MANUAL - by Bram Moolenaar - - Vim スクリプト書法 - - -Vim スクリプト言語は vimrc ファイルや構文ファイルなど、さまざまな目的に使われ -ます。この章では Vim スクリプトの書き方を説明します。説明することがたくさんあ -るので大きな章になってます。 - -|41.1| はじめに -|41.2| 変数 -|41.3| 式 -|41.4| 条件式 -|41.5| 式を実行する -|41.6| 関数を使う -|41.7| 関数を定義する -|41.8| リストと辞書 -|41.9| 例外 -|41.10| 注意事項 -|41.11| プラグインを書く -|41.12| ファイルタイププラグインを書く -|41.13| コンパイラプラグインを書く -|41.14| プラグインを書く (高速ロード版) -|41.15| ライブラリスクリプトを書く -|41.16| Vim スクリプトを配布する - -次章: |usr_42.txt| 新しいメニューを追加する -前章: |usr_40.txt| 新しいコマンドを作る -目次: |usr_toc.txt| - -============================================================================== -*41.1* はじめに *vim-script-intro* *script* - -誰もが最初に触れる Vim スクリプトは vimrc ファイルです。Vim が起動するときに読 -み込まれ、書かれているコマンドが実行されます。それにより好きなように設定を変更 -できます。vimrc の中ではすべてのコロンコマンドが使えます (":" で始まるコマンド -のこと。Ex コマンドやコマンドラインコマンドと呼ばれることもある)。 -シンタックスファイルも Vim スクリプトです。シンタックスファイルは、ファイルタ -イプ別にオプションを設定するファイルの一種です。複雑なマクロ定義を別ファイルに -分けて保存しておくこともできます。このように、いろいろな使用方法が考えられま -す。 - -簡単な例から始めましょう: > - - :let i = 1 - :while i < 5 - : echo "count is" i - : let i += 1 - :endwhile -< - Note: - 実際には ":" を書く必要はありません。":" が必要なのはコマンドラインで - 入力するときだけです。Vim スクリプトファイルを書くときは省略できます。 - このヘルプでは、コロンコマンドであることを強調し、ノーマルモードと区別 - するためにコロンを表記しています。 - Note: - 例文をヤンクして :@" コマンドで実際に実行できます。 - -出力は次のようになります: - - count is 1 ~ - count is 2 ~ - count is 3 ~ - count is 4 ~ - -一行目では ":let" コマンドで変数に値を代入しています。書式は次のとおりです: > - - :let {変数名} = {式} - -例では、変数名が "i"、式が 1 です。 -":while" コマンドでループを開始します。書式は次のとおりです: > - - :while {条件式} - : {ステートメント} - :endwhile - -条件式が真である間、ステートメントが実行されます。例では、条件式は "i < 5" で -す。これは、i が 5 より小さい場合に真になります。 - Note: - 何かのミスで while ループが止まらなかった場合は、CTRL-C を押せば中断で - きます (MS-Windows では CTRL-Break)。 - -":echo" コマンドは引数を出力します。例では、"count is" という文字列と、変数 i -の値を出力しています。i が 1 なら、次のように表示されます: - - count is 1 ~ - -":let i += 1" は ":let i = i + 1" と同じ意味です。変数 i に 1 を加算し、新しい -値を同じ変数に代入します。 - -上述の例は、実際にはもっと簡潔に書くことができます: > - - :for i in range(1, 4) - : echo "count is" i - :endfor - -|:for| と |range()| の説明はもっと先です。すぐに知りたい人はリンク先にジャンプ -してください。 - - -三種類の数値 ------------- - -数値は10進数、16進数、8進数のいずれかで表記します。16進数は "0x" か "0X" で開 -始します。例えば "0x1f" は10進数の 31 です。8進数は "0" で開始します。例えば -"017" は10進数の 15 です。注意: 10進数で書くときは先頭に "0" を付けないでくだ -さい。8進数として扱われてしまいます。 -":echo" コマンドは常に10進数で出力します。例: > - - :echo 0x7f 036 -< 127 30 ~ - -数値にマイナス記号を付けると負数になります。8進数や16進数も負数にできます。マ -イナス記号は減算記号としても使われます。次の例を上の例と比べてみてください: > - - :echo 0x7f -036 -< 97 ~ - -式の途中にある空白は無視されますが、可読性を高めるために、適切に空白で区切るこ -とをお勧めします。例えば上記の数値が負数であると勘違いしてしまわないように、マ -イナス記号と数値の間に空白をいれましょう: > - - :echo 0x7f - 036 - -============================================================================== -*41.2* 変数 - -変数名にはアルファベット、数字、アンダースコアが使えます。変数名を数字で開始す -ることはできません。次のような変数名が使えます: - - counter - _aap3 - very_long_variable_name_with_underscores - FuncLength - LENGTH - -"foo+var" や "6var" のような名前は使えません。 -例に挙げた変数はグローバル変数です。定義されている変数の一覧を見るのは次のコマ -ンドを使います: > - - :let - -グローバル変数はどこでも使えます。そのため、あるスクリプトファイルで "count" -という変数を使ったとき、その変数は他のスクリプトでも使われている可能性がありま -す。これは混乱を招きますし、トラブルの元です。それを避けるには "s:" を付けてス -クリプトローカル変数を使います。例えば、次のように使います: > - - :let s:count = 1 - :while s:count < 5 - : source other.vim - : let s:count += 1 - :endwhile - -"s:count" はスクリプトローカル変数なので、他のスクリプトファイルによって変更さ -れる心配はありません。他のスクリプトファイルで "s:count" 変数が使われていたと -しても、それは別の変数です。スクリプトローカル変数についての詳細は -|script-variable| を参照してください。 - -変数の種類は他にもあります。|internal-variables| 参照。次の変数がよく使われま -す: - - b:name バッファローカル変数 - w:name ウィンドウローカル変数 - g:name グローバル変数 (関数内では g: 必須) - v:name Vim が定義する変数 - - -変数の削除 ----------- - -変数はメモリを消費します。":let" コマンドの出力にも表示されます。変数を削除す -るには ":unlet" コマンドを使います。例: > - - :unlet s:count - -スクリプトローカル変数の "s:count" が削除され、使用されていたメモリが開放され -ます。変数が存在しない場合でもエラーを起こしたくない場合は ! を付けてください: -> - :unlet! s:count - -スクリプトの実行が終了したとき、ローカル変数は自動的には削除されません。次に同 -じスクリプトを実行したときにその変数を使うことができます。例: > - - :if !exists("s:call_count") - : let s:call_count = 0 - :endif - :let s:call_count = s:call_count + 1 - :echo "called" s:call_count "times" - -"exists()" 関数は変数が定義されているかどうかをチェックします。引数に調べたい -変数の名前を指定します。変数自体を指定するのではありません。例えば: > - - :if !exists(s:call_count) - -これは、s:call_count の値を変数名として exists() 関数を呼び出しているので、意 -味が違ってしまいます。 -感嘆符 (! 記号) は値を反転します。値が真なら偽になり、偽なら真になります。この -記号は "not" と読むことができます。つまり、"if !exists()" は "if not exists()" -と読むことができます。 -Vim では、0 以外の値はすべて真です。0 は偽です。 - Note: - 数値が必要なところで文字列を使ったとき、文字列は自動的に数値に変換され - ます。文字列の先頭が数字ではなかった場合は 0 に変換されます。つまり: > - :if "true" -< "true" は 0 に変換されるので偽になります。 - - -文字列変数と定数 ----------------- - -ここまでは変数の値に数値だけを使っていましたが、文字列を使うこともできます。 -Vim は数値と文字列を基本型としてサポートしています。変数は動的に型付けされま -す。型は ":let" コマンドで変数に値を代入するたびに変化します。詳しくは|41.8| -を参照してください。 -変数に文字列を代入するには文字列定数を使う必要があります。文字列定数には二つの -種類があります。一つはダブルクオート文字列です: > - - :let name = "peter" - :echo name -< peter ~ - -文字列の中でダブルクオートを使いたい場合は、バックスラッシュを前置してくださ -い: > - - :let name = "\"peter\"" - :echo name -< "peter" ~ - -バックスラッシュを使いたくない場合はシングルクオート文字列を使ってください: > - - :let name = '"peter"' - :echo name -< "peter" ~ - -シングルクオート文字列の中ではすべての文字がそのまま使われます。ただし、シング -ルクオートだけは特別で、一つのシングルクオートを表すためには二つのシングルク -オートを書く必要があります。バックスラッシュはそのまま使われるので、特殊文字は -使えません。 -ダブルクオート文字列の中では特殊文字が使えます。次のようなものがあります: - - \t <Tab> - \n <NL>, 改行 - \r <CR>, <Enter> - \e <Esc> - \b <BS>, バックスペース - \" " - \\ \, バックスラッシュ - \<Esc> <Esc> - \<C-W> CTRL-W - -最後の二つはただの一例です。"\<name>" 形式で "name" という特殊キーを使うことが -できます。 -文字列で使える特殊表記については |expr-quote| を参照してください。 - -============================================================================== -*41.3* 式 - -Vim の式は高機能でシンプルです。式の定義については |expression-syntax| を参照 -してください。ここでは基本的なことだけを説明します。 -数値と文字列と変数はそれ自体が式です。つまり、式が必要なところでは数値でも文字 -列でも変数でも使えます。他にも次のようなものが使えます: - - $NAME 環境変数 - &name オプション - @r レジスタ - -例: > - - :echo "The value of 'tabstop' is" &ts - :echo "Your home directory is" $HOME - :if @a > 5 - -&name 形式を使うと、オプションを保存し、別の値に設定し、何かを実行して、オプ -ションを元に戻す、というようなことができます。例: > - - :let save_ic = &ic - :set noic - :/The Start/,$delete - :let &ic = save_ic - -'ignorecase' オプションをオフにしてから "The Start" パターンを検索しています。 -しかし設定は変更されません。(パターンに "\C" を加える方法でも同じことができま -す。|/\C| 参照。) - - -数値計算 --------- - -基本的な要素を組み合わせると面白くなってきます。まずは数値計算です: - - a + b 加算 - a - b 減算 - a * b 乗算 - a / b 除算 - a % b 剰余演算(余りを得る) - -演算子の優先順位は一般的な規則と同じです: > - - :echo 10 + 5 * 2 -< 20 ~ - -カッコを使って優先順位を変更できます: > - - :echo (10 + 5) * 2 -< 30 ~ - -文字列は "." で連結できます: > - - :echo "foo" . "bar" -< foobar ~ - -":echo" コマンドに複数の引数を指定すると、スペースで区切られて表示されます。こ -れらの例では一つの式しか使われていないので、スペースは挿入されていません。 - -C 言語と同じ条件演算子も使えます: - - a ? b : c - -"a" が真なら "b" が使われ、そうでなければ "c" が使われます。例: > - - :let i = 4 - :echo i > 5 ? "i is big" : "i is small" -< i is small ~ - -被演算子の部分は優先的に評価されるので、次のように見なすことができます: - - (a) ? (b) : (c) - -============================================================================== -*41.4* 条件式 - -":if" コマンドは条件が真の場合に ":endif" までのステートメントを実行します。書 -式は次のとおり: - - :if {condition} - {statements} - :endif - -{condition} を評価した結果が真 (0以外) であれば、{statements} の内容が実行され -ます。{statements} は正しく記述されている必要があります。不正な記述があると -":endif" までたどり着けません。 -":else" を使うこともできます。書式は次のとおり: - - :if {condition} - {statements} - :else - {statements} - :endif - -二つ目の {statements} は条件が偽の場合にだけ実行されます。 -":elseif" を使うこともできます: - - :if {condition} - {statements} - :elseif {condition} - {statements} - :endif - -これは ":else" に続けて "if" 文を使うのと同じ動作ですが、余計な ":endif" を使 -わなくて済みます。 -vimrc ファイルで便利に使える例を示しましょう。'term' オプションの値を調べ、そ -の値に応じて処理を分けます: > - - :if &term == "xterm" - : " xterm 用の設定 - :elseif &term == "vt100" - : " vt100 端末用の設定 - :else - : " その他の端末用の設定 - :endif - - -論理演算子 ----------- - -今までの説明で既に論理演算子を使いました。次の演算子がよく使われます: - - a == b 等しい - a != b 等しくない - a > b より大きい - a >= b より大きいか等しい - a < b より小さい - a <= b より小さいか等しい - -条件が成立するなら 1、そうでなければ 0 が返ります。例: > - - :if v:version >= 700 - : echo "おめでとう" - :else - : echo "古いバージョンを使っています。更新してね!" - :endif - -"v:version" は Vim によって定義されている変数で、Vim のバージョンが入っていま -す。バージョン 6.0 なら 600、バージョン 6.1 なら 601 です。これは複数のバー -ジョンに対応するスクリプトを書くときに便利です。|v:version| - -論理演算子は数値でも文字列でも扱えます。文字列どうしを比較するときは数学的な差 -が比較されます。文字のバイト値を比較するので、一部の言語では正しい結果にならな -いかもしれません。 -文字列と数値を比較するときは、文字列を数値に変換します。文字列が数字ではなかっ -たときは 0 になるので注意してください。例: > - - :if 0 == "one" - : echo "yes" - :endif - -これは "yes" と表示されます。"one" は数字ではないので 0 に変換されるのです。 - -文字列にはさらに二つの論理演算子があります: - - a =~ b パターンにマッチする - a !~ b パターンにマッチしない - -左辺の "a" は文字列として扱われます。右辺の "b" は検索パターンとして扱われま -す。例: > - - :if str =~ " " - : echo "str にはスペースが含まれている" - :endif - :if str !~ '\.$' - : echo "str の末尾はピリオドではない" - :endif - -パターンを指定するのにシングルクオート文字列を使うのがコツです。ダブルクオート -文字列ではバックスラッシュを二重に書く必要があり、そして、検索パターンではバッ -クスラッシュをよく使うので、バックスラッシュだらけになってしまいます。 - -文字列を比較するときは 'ignorecase' オプションが使われます。大文字小文字の区別 -を明示的に指定したい場合は比較演算子に "#" (区別する) または "?" (区別しない) -をつけます。大文字小文字を区別せずに等しいかどうかを比較したい場合は "==?" を -使います。"!~#" ならパターンにマッチしないことを、大文字と小文字を区別して確認 -できます。演算子の一覧は |expr-==| を参照してください。 - - -他のループコマンド ------------------- - -":while" コマンドは既に説明しました。":while" ループの中では二つのステートメン -トが使えます: - - :continue ループの先頭にジャンプしてループを継続する。 - :break ":endwhile" までジャンプしてループを脱ける。 - -例: > - - :while counter < 40 - : call do_something() - : if skip_flag - : continue - : endif - : if finished_flag - : break - : endif - : sleep 50m - :endwhile - -":sleep" コマンドは Vim を一定時間停止します。"50m" は 50 ミリ秒です。 -":sleep 4" なら 4 秒間スリープします。 - -":for" コマンドを使ってループすることもできます。|41.8|を参照。 - -============================================================================== -*41.5* 式を実行する - -今まではコマンドを直接書いてきました。":execute" コマンドを使うと、式の評価結 -果をコマンドとして実行できます。これによってコマンドを動的に生成することができ -ます。 -例えば、変数に格納された文字列を使ってタグジャンプするには次のようにします: > - - :execute "tag " . tag_name - -文字列 "tag " と変数 "tag_name" の値を "." で連結しています。仮に "tag_name" -の値が "get_cmd" だった場合、次のコマンドが実行されることになります: > - - :tag get_cmd - -":execute" コマンドはコロンコマンドのみ実行できます。":normal" コマンドでノー -マルモードコマンドを実行できますが、このコマンドの引数は文字がそのまま使われ、 -式としては評価されません。例: > - - :normal gg=G - -このコマンドは一行目にジャンプしてから "=" オペレータですべての行を整形しま -す。 -":normal" コマンドで式の値を使いたい場合は ":execute" と組み合わせてください。 -例: > - - :execute "normal " . normal_commands - -変数 "normal_commands" にはノーマルモードコマンドを入れておく必要があります。 -":normal" には完結したコマンドを指定するようにしてください。引数が最後まで実行 -された段階でコマンドは中断されます。例えば、インサートモードを開始した場合はイ -ンサートモードを終了しなくてはなりません。次のコマンドは正しく動作します: > - - :execute "normal Inew text \<Esc>" - -これは現在行に "new text" を挿入します。特殊キー "\<ESC>" を使っていることに注 -目してください。これによりスクリプトの中で本物の <Esc> 文字を使わないですみま -す。 - -文字列を実行するのではなく、その式の値を得たい場合は、eval() 関数を使います: > - - :let optname = "path" - :let optval = eval('&' . optname) - -文字 "&" と "path" を連結しているので eval() の引数は "&path" になります。返り -値は 'path' オプションの値です。 -次のようにすることもできます: > - :exe 'let optval = &' . optname - -============================================================================== -*41.6* 関数を使う - -たくさんの関数があらかじめ定義され、豊富な機能が提供されています。このセクショ -ンの説明にもいくつか登場します。関数の一覧は |functions| を参照してください。 - -関数は ":call" コマンドで呼び出します。引数はカッコで囲み、それぞれをカンマで -区切ります。例: > - - :call search("Date: ", "W") - -これは "Date: " と "W" を引数にして search() 関数を呼び出しています。search() -関数は一つ目の引数を検索パターンとして使い、二つ目の引数をフラグとして使いま -す。"W" フラグを指定するとファイル末尾で検索が終了します (折り返さない)。 - -関数は式の中で使うこともできます。例: > - - :let line = getline(".") - :let repl = substitute(line, '\a', "*", "g") - :call setline(".", repl) - -getline() 関数はカレントバッファから行を取得する関数です。引数には行番号を指定 -します。この例では "." ですが、これはカーソルのある行を示します。 -substitute() 関数は ":substitute" コマンドとほぼ同じです。最初の引数は置換対象 -の文字列、二つ目の引数はパターン、三つ目は置き換え文字列、最後はフラグです。 -setline() 関数は行の内容を置き換えます。最初の引数は行番号、二つ目の引数は置き -換える文字列です。この例では、substitute() の結果で現在行を置き換えています。 -上記の三行のコマンドは次のコマンドと同じことをしています: > - - :substitute/\a/*/g - -substitute() コマンドの前後にいろいろな処理を入れたりすると、もっと面白いこと -ができるようになります。 - - -関数一覧 *function-list* --------- - -たくさんの関数があります。ここでは機能別に分類して紹介します。アルファベット順 -の一覧は |functions| を参照してください。関数の名前の上で CTRL-] を押すと、詳 -細な説明にジャンプできます。 - -文字列繰作: *string-functions* - nr2char() ASCII値から文字を得る - char2nr() 文字のASCII値を得る - str2nr() 文字列を数値に変換する - str2float() 文字列を浮動小数点数に変換する - printf() 書式付き文字列を整形する - escape() 文字列の特定の文字を '\' でエスケープ - shellescape() シェルコマンドで使えるように文字列をエスケープ - fnameescape() Vim コマンド用にファイル名をエスケープ - tr() ある文字の集合から別の文字の集合へ置換する - strtrans() 文字列を印刷可能な状態とする - tolower() 文字列を小文字にする - toupper() 文字列を大文字にする - match() 文字列の中でパターンにマッチした位置 - matchend() 文字列の中でパターンにマッチした末尾の位置 - matchstr() 文字列の中でパターンにマッチした文字列 - matchlist() matchstr()と同様だが、部分マッチも返す - stridx() 文字列の中で部分文字列が見つかった最初の位置 - strridx() 文字列の中で部分文字列が見つかった最後の位置 - strlen() 文字列の長さ - substitute() パターンにマッチする文字列を置換 - submatch() ":s" と substitute() の中で部分マッチを得る - strpart() 文字列の一部分を得る - expand() 特殊キーワードを展開する - iconv() テキストのエンコーディングを変換する - byteidx() 文字列中の文字のバイトインデックス - repeat() 文字列を複数回繰り返す - eval() 文字列を式として評価する - -リスト操作: *list-functions* - get() 要素を取得。存在しないインデックスでもエラーを - 出さない - len() リスト中の要素の個数 - empty() リストが空であるか判定する - insert() リストの任意の位置に要素を挿入する - add() リストに要素を追加する - extend() リストにリストを連結する - remove() リストから1個以上の要素を取り除く - copy() リストの浅いコピーを作成する - deepcopy() リストの完全なコピーを作成する - filter() リストから選択された要素を取り除く - map() リストの各要素を変換する - sort() リストをソートする - reverse() リストの並び順を反転させる - split() 文字列を分割し、リストにする - join() リストの要素を連結し、文字列にする - range() 数列リストを返す - string() リストの文字列表現 - call() リストを引数として関数を呼ぶ - index() リスト中の要素のインデックス - max() リスト中の最大値 - min() リスト中の最小値 - count() ある要素がリスト中に出現する回数を返す - repeat() リストを複数回繰り返す - -辞書操作: *dict-functions* - get() 辞書の要素を返す。存在しないキーでもエラーを出 - さない - len() 辞書の要素の個数 - has_key() あるキーが辞書に含まれているか判定する - empty() 辞書が空であるか判定する - remove() 辞書から要素を取り除く - extend() ある辞書の要素をすべて別の辞書に追加する - filter() 辞書から選択された要素を取り除く - map() 辞書の各要素を変換する - keys() 辞書の全キーのリストを取得する - values() 辞書の全値のリストを取得する - items() 辞書の全キー・値のペアを取得する - copy() 辞書の浅いコピーを作成する - deepcopy() 辞書の完全なコピーを作成する - string() 辞書の文字列表現 - max() 辞書中の最大値 - min() 辞書中の最小値 - count() ある値が出現する回数を返す - -浮動小数点数の計算: *float-functions* - float2nr() Float を Number に変換 - abs() 絶対値 (Numberも処理可能) - round() 丸め - ceil() 切り上げ - floor() 切り下げ - trunc() 少数切り捨て - log10() 10 を底とする対数 - pow() x の y 乗 - sqrt() 平方根 - sin() sine - cos() cosine - tan() tangent - asin() arc sine - acos() arc cosine - atan() arc tangent - atan2() arc tangent - sinh() hyperbolic sine - cosh() hyperbolic cosine - tanh() hyperbolic tangent - -変数: *var-functions* - type() 変数の型 - islocked() 変数がロックされているか判定する - function() 関数名からFuncrefを取得する - getbufvar() 指定バッファの変数値を得る - setbufvar() 指定バッファに変数を設定する - getwinvar() 指定ウィンドウの変数値を得る - gettabvar() 指定タブページから変数値を得る - gettabwinvar() 指定ウィンドウ・タブページから変数値を取得する - setwinvar() 指定ウィンドウに変数を設定する - settabvar() 指定タブページに変数を設定する - settabwinvar() 指定ウィンドウ・タブページに変数を設定する - garbagecollect() 開放可能なメモリを解放する - -カーソルとマークの位置: *cursor-functions* *mark-functions* - col() カーソルやマークの列番号を得る - virtcol() カーソルやマークの画面上の列番号を得る - line() カーソルやマークの行番号を得る - wincol() カーソルのウィンドウでの列番号 - winline() カーソルのウィンドウでの行番号 - cursor() カーソルを指定した位置に移動させる - getpos() カーソルやマークなどの位置を取得する - setpos() カーソルやマークなどの位置を設定する - byte2line() 指定のバイト位置の行番号を得る - line2byte() 指定の行のバイト位置を得る - diff_filler() ある行より上の詰め行の数を取得する - -カレントバッファで動作するもの: *text-functions* - getline() バッファから行を得る - setline() バッファの行を置き換える - append() 行または行のリストをバッファに追加する - indent() 行のインデントを得る - cindent() C 言語におけるインデントを得る - lispindent() Lisp 言語におけるインデントを得る - nextnonblank() 次の非空行を探す - prevnonblank() 前の非空行を探す - search() パターンにマッチする場所を探す - searchpos() パターンにマッチする場所を探す - searchpair() start/skip/end の対を探す - searchpairpos() start/skip/end の対を探す - searchdecl() 名前が宣言されている場所を探す - - *system-functions* *file-functions* -システム関数とファイル繰作: - glob() ワイルドカードを展開する - globpath() 複数のディレクトリを対象にワイルドカードを展開 - findfile() 複数のディレクトリからファイルを探す - finddir() 複数のディレクトリからディレクトリを探す - resolve() ショートカットのリンク先を得る - fnamemodify() ファイル名を修飾する - pathshorten() パス中のディレクトリ名を短くする - simplify() パスの意味を変えずに簡略化する - executable() 実行形式ファイルかどうかをチェックする - filereadable() ファイルが読み込み可能かどうかをチェックする - filewritable() ファイルが書き込み可能かどうかをチェックする - getfperm() ファイルのパーミッションを得る - getftype() ファイルの種類を得る - isdirectory() ディレクトリの存在をチェックする - getfsize() ファイルのサイズを得る - getcwd() カレントディレクトリを得る - tempname() 一時ファイルの名前を得る - mkdir() ディレクトリを作成する - delete() ファイルを削除する - rename() ファイルの名前を変更する - system() シェルコマンドを実行し、その結果を得る - hostname() システムの名称を得る - readfile() ファイルを読み込み、行のリストを得る - writefile() 行のリストをファイルに書き込む - -日付と時刻: *date-functions* *time-functions* - getftime() ファイルの最終更新日時を得る - localtime() 現在時刻を秒単位で得る - strftime() 時刻を文字列に変換する - reltime() 現在時刻または経過時間を正確に取得する - reltimestr() reltime()の結果を文字列に変換する - - *buffer-functions* *window-functions* *arg-functions* -バッファ、ウィンドウ、引数リスト: - argc() 引数リストの大きさ - argidx() 引数リスト中の現在の位置 - argv() 引数リストの中身を得る - bufexists() バッファの存在をチェックする - buflisted() バッファが存在し、リストされているかどうか - bufloaded() バッファが存在し、ロードされているかどうか - bufname() バッファの名前を得る - bufnr() バッファの番号を得る - tabpagebuflist() タブページ中のバッファのリストを返す - tabpagenr() タブページの番号を取得する - tabpagewinnr() タブページを対象にwinnr()と同様 - winnr() カレントウィンドウの番号を得る - bufwinnr() バッファのウィンドウ番号を得る - winbufnr() ウィンドウのバッファ番号を得る - getbufline() バッファの行のリストを得る - -コマンドライン: *command-line-functions* - getcmdline() 現在のコマンドラインを取得 - getcmdpos() コマンドラインにおけるカーソル位置を取得 - setcmdpos() コマンドラインにおけるカーソル位置を設定 - getcmdtype() 現在のコマンドラインの種類を返す - -Quickfixとロケーションリスト: *quickfix-functions* - getqflist() quickfixエラーのリスト - setqflist() quickfixを変更する - getloclist() ロケーションリストの項目のリスト - setloclist() ロケーションリストを変更する - -インサートモード補完: *completion-functions* - complete() 補完候補を設定する - complete_add() 補完候補を追加する - complete_check() 補完処理を終えるべきかどうかをチェックする - pumvisible() ポップアップメニューが表示されているかチェック - -折り畳み: *folding-functions* - foldclosed() 行が折り畳まれているかどうかをチェックする - foldclosedend() foldclosed()と同様。折り畳み末尾の行番号を返す - foldlevel() 行の折り畳みレベルを得る - foldtext() 閉じた折り畳みを代替表示するテキストを生成 - foldtextresult() 閉じた折り畳みを代替表示するテキストを得る - -シンタックスハイライト: *syntax-functions* *highlighting-functions* - clearmatches() |matchadd()|と|:match|コマンドで定義されたマッ - チをクリアする - getmatches() |matchadd()|と|:match|コマンドで定義されたすべ - てのマッチを得る - hlexists() ハイライトグループの存在をチェック - hlID() ハイライトグループのIDを得る - synID() 指定位置のシンタックスIDを得る - synIDattr() シンタックスIDから指定の属性を得る - synIDtrans() 変換したシンタックスIDを得る - synstack() 指定位置のシンタックスIDのリストを得る - synconcealed() conceal の情報を得る - diff_hlID() diffモードの指定位置のシンタックスIDを得る - matchadd() 強調表示するパターンを定義する - matcharg() |:match|の引数の情報を得る - matchdelete() |matchadd()|と|:match|コマンドで定義されたマッ - チを削除する - setmatches() |getmatches()|で得たマッチを使って復元する - -スペリング: *spell-functions* - spellbadword() カーソル位置以降のスペルミスを探す - spellsuggest() スペル訂正の候補を返す - soundfold() 単語の同音等値(sound-a-like equivalent)を返す - -履歴: *history-functions* - histadd() 履歴に項目を追加 - histdel() 履歴から項目を削除 - histget() 履歴の項目を得る - histnr() 履歴リストの最大インデックスを得る - -対話インターフェース: *interactive-functions* - browse() ファイル選択ダイアログを開く - browsedir() ディレクトリ選択ダイアログを開く - confirm() ユーザーに選択をさせる - getchar() ユーザーが入力した文字を得る - getcharmod() 最後に入力した文字の修飾子(modifier)を得る - feedkeys() 先行入力キューに文字を入れる - input() ユーザーが入力した行を得る - inputlist() ユーザーにリストから項目を選択させる - inputsecret() ユーザーが入力した行を得る。ただし表示はしない - inputdialog() ダイアログを使ってユーザーが入力した行を得る - inputsave() 先行入力キューを保存して空にする - inputrestore() inputsave()で保存した状態に戻す - -GUI: *gui-functions* - getfontname() 現在使われているフォントの名前を取得 - getwinposx() GUIのVimウィンドウのX座標 - getwinposy() GUIのVimウィンドウのY座標 - -Vimサーバ: *server-functions* - serverlist() サーバ名のリストを返す - remote_send() Vimサーバにコマンド文字を送る - remote_expr() Vimサーバで式を評価する - server2client() Vimサーバのクライアントに応答を返す - remote_peek() Vimサーバから返信があったかどうかをチェック - remote_read() Vimサーバからの返信を読む - foreground() Vimのウィンドウを前面に持ってくる - remote_foreground() Vimサーバのウィンドウを前面に持ってくる - -ウィンドウサイズと位置: *window-size-functions* - winheight() ウィンドウの高さを取得 - winwidth() ウィンドウの幅を取得 - winrestcmd() ウィンドウサイズを復元するコマンドを返す - winsaveview() カレントウィンドウのビューを取得 - winrestview() カレントウィンドウのビューを復元 - -その他: *various-functions* - mode() 現在の編集モードを得る - visualmode() 最後に使われたビジュアルモードの種類 - hasmapto() マップの存在をチェック - mapcheck() マッチするマップの存在をチェック - maparg() マップのrhs(展開結果)を得る - exists() 変数、関数の存在をチェック - has() 機能がサポートされているかをチェック - changenr() 最近の変更番号を返す - cscope_connection() cscope接続をチェック - did_filetype() FileTypeオートコマンドが使用されたかどうか - eventhandler() イベントハンドラによって起動されたかどうか - getpid() Vim のプロセスIDを得る - - libcall() 外部ライブラリの関数を呼ぶ - libcallnr() 同上、数値を返す - - getreg() レジスタの値を得る - getregtype() レジスタのタイプを得る - setreg() レジスタの値を設定する - - taglist() マッチするタグのリストを取得 - tagfiles() タグファイルのリストを取得 - - mzeval() |MzScheme| の式を評価する - -============================================================================== -*41.7* 関数を定義する - -自分で関数を定義することができます。基本的な関数定義は次のとおり: > - - :function {name}({var1}, {var2}, ...) - : {body} - :endfunction -< - Note: - 関数名は大文字で開始する必要があります。 - -小さな関数を定義してみましょう。二つの数値のうち小さい方を返す関数を作ります。 -関数は次のような行で始まります: > - - :function Min(num1, num2) - -関数の名前が "Min" であり、二つの引数 ("num1"と"num2") を取る、ということを表 -しています。 -最初にしなければならないのは、どちらの数値が小さいかをチェックすることです: > - - : if a:num1 < a:num2 - -"a:" は特殊なプレフィクスで、この変数が関数の引数であることを示します。小さい -方の値を変数 "smaller" に代入しましょう: > - - : if a:num1 < a:num2 - : let smaller = a:num1 - : else - : let smaller = a:num2 - : endif - -変数 "smaller" はローカル変数です。関数の中で使われた変数はローカル変数になり -ます。ただし、"g:"、"a:"、"s:" などのプレフィクスを付けた場合は別です。 - - Note: - 関数の内からグローバル変数にアクセスするには "g:" を付ける必要がありま - す。つまり、関数内では "g:today" はグローバル変数 "today" を示し、 - "today" ならそれとは別の変数、すなわちローカル変数になります。 - -":return" ステートメントを使って、小さい方の値を呼び出し元に返しましょう。そし -て、関数を閉じます: > - - : return smaller - :endfunction - -関数定義の全体は次のようになります: > - - :function Min(num1, num2) - : if a:num1 < a:num2 - : let smaller = a:num1 - : else - : let smaller = a:num2 - : endif - : return smaller - :endfunction - -関数を短く書きたい場合は、次のようにもできます: > - - :function Min(num1, num2) - : if a:num1 < a:num2 - : return a:num1 - : endif - : return a:num2 - :endfunction - -ユーザー定義関数は組み込み関数とまったく同じ方法で呼び出すことができます。違う -のは名前だけです。Min 関数は次のように使用できます: > - - :echo Min(5, 8) - -関数が実行され、関数の中身が Vim によって解釈されます。未定義の変数や関数を使 -うなどの間違いがあったときは、エラーメッセージが表示されます。関数定義の時点で -はそれらのエラーは検出されません。 - -関数が ":endfunction" まで実行されたとき、あるいは引数無しで ":return" を使っ -たときは 0 が返ります。 - -既存の関数を再定義したい場合は ":function" コマンドに "!" を付けてください: > - - :function! Min(num1, num2, num3) - - -範囲指定を使う --------------- - -":call" コマンドは行範囲を受け取ることができます。範囲指定の使用方法は二つあり -ます。関数を定義するときに "range" キーワードを使った場合は、関数自身が範囲指 -定を処理します。 -関数には "a:firstline" と "a:lastline" という二つの変数が暗黙的に渡されます。 -この二つの変数には範囲指定された行番号が代入されています。例: > - - :function Count_words() range - : let lnum = a:firstline - : let n = 0 - : while lnum <= a:lastline - : let n = n + len(split(getline(lnum))) - : let lnum = lnum + 1 - : endwhile - : echo "found " . n . " words" - :endfunction - -この関数は次のように呼び出すことができます: > - - :10,30call Count_words() - -関数が一度だけ実行され、単語の数が表示されます。 -関数を定義するときに "range" キーワードを使わなかった場合は、指定された範囲の -それぞれの行に対して関数が呼ばれます (カーソルはその行の上)。例: > - - :function Number() - : echo "line " . line(".") . " contains: " . getline(".") - :endfunction - -次のように実行すると: > - - :10,15call Number() - -関数は 6 回実行されます。 - - -可変長引数 ----------- - -可変個の引数を取る関数を定義できます。例えば、次の関数は、必ず 1 つの引数 -(start) を取り、最大で 20 個までの引数を取ることができます: > - - :function Show(start, ...) - -変数 "a:1" に 1 つ目のオプション引数が代入されます。2 つ目が "a:2" で、3 つ目 -が "a:3" です。"a:0" にはオプション引数の数が入ります。 -例: > - - :function Show(start, ...) - : echohl Title - : echo "start is " . a:start - : echohl None - : let index = 1 - : while index <= a:0 - : echon " Arg " . index . " is " . a:{index} - : let index = index + 1 - : endwhile - : echo "" - :endfunction - -この関数は ":echohl" を使って ":echo" の出力に色を付けています。":echohl None" -で色付けをやめます。":echon" コマンドは ":echo" と同じ機能ですが、改行を出力し -ません。 - -変数 a:000 を使うこともできます。これは "..." 引数がすべて入ったリストです。 -|a:000|を参照。 - - -関数の一覧 ----------- - -":function" コマンドでユーザー定義関数の一覧を表示できます: > - - :function -< function Show(start, ...) ~ - function GetVimIndent() ~ - function SetSyn(name) ~ - -関数の中身を見たいときは関数名を指定してください: > - - :function SetSyn -< 1 if &syntax == '' ~ - 2 let &syntax = a:name ~ - 3 endif ~ - endfunction ~ - - -デバッグ --------- - -エラーメッセージが表示されたとき、あるいはデバッグ中に、行番号が表示されると便 -利です。デバッグモードについては |debug-scripts| を参照してください。 -'verbose' オプションに 12 以上の値を設定すると、すべての関数呼び出しが表示され -ます。15 以上にすると、実行されたすべての行が表示されます。 - - -関数の削除 ----------- - -例えば Show() 関数を削除するのは次のようにします: > - - :delfunction Show - -関数が存在しない場合はエラーになります。 - - -関数への参照 ------------- - -変数に関数を代入できると便利なことがあります。それには function() 関数を使いま -す。function() は関数の名前を受け取り、関数への参照を返します: > - - :let result = 0 " or 1 - :function! Right() - : return 'Right!' - :endfunc - :function! Wrong() - : return 'Wrong!' - :endfunc - : - :if result == 1 - : let Afunc = function('Right') - :else - : let Afunc = function('Wrong') - :endif - :echo call(Afunc, []) -< Wrong! ~ - -Note 関数への参照を保持する変数の名前は大文字で始めなければなりません。そうで -ないと組み込み関数の名前と紛らわしくなります。 -変数が参照している関数を呼び出すには call() 関数を使います。call() 関数の最初 -の引数は関数への参照で、2 番目の引数は引数のリストです。 - -関数への参照は、次節で説明される辞書と組み合わせたときもっとも役に立ちます。 - -============================================================================== -*41.8* リストと辞書 - -ここまでは基本型(文字列と数値)を扱ってきました。Vim は二つの複合型、リストと辞 -書もサポートしています。 - -リストとは、要素を順番に並べたものです。要素はどのような型でも構いません。数値 -のリスト、リストのリスト、あるいは複数の型が混在したリストでも作れます。例え -ば、3 個の文字列からなるリストを作るには次のようにします: > - - :let alist = ['aap', 'mies', 'noot'] - -リストの要素は角括弧で囲み、コンマで区切ります。空のリストを作るには次のように -します: > - - :let alist = [] - -関数add()を使うとリストに要素を追加することができます: > - - :let alist = [] - :call add(alist, 'foo') - :call add(alist, 'bar') - :echo alist -< ['foo', 'bar'] ~ - -リストの連結には + を使います: > - - :echo alist + ['foo', 'bar'] -< ['foo', 'bar', 'foo', 'bar'] ~ - -直接リストを拡張するには次のようにします: > - - :let alist = ['one'] - :call extend(alist, ['two', 'three']) - :echo alist -< ['one', 'two', 'three'] ~ - -add()とは効果が異なることに注意してください: > - - :let alist = ['one'] - :call add(alist, ['two', 'three']) - :echo alist -< ['one', ['two', 'three']] ~ - -add()の第二引数は1つの要素として追加されます。 - - -FOR ループ ----------- - -リストを使ってできる素晴らしいことの1つが、リストに対する繰り返しです: > - - :let alist = ['one', 'two', 'three'] - :for n in alist - : echo n - :endfor -< one ~ - two ~ - three ~ - -上の例は、リスト"alist"の各要素に対して、その値を変数"n"に代入しながらループを -行います。forループの書式は次の通りです: > - - :for {varname} in {listexpression} - : {commands} - :endfor - -ある回数だけループするには、その長さのリストを使います。関数range()を使うと、 -そのようなリストを作成できます: > - - :for a in range(3) - : echo a - :endfor -< 0 ~ - 1 ~ - 2 ~ - -range()が生成するリストの最初の要素は0であることに注意してください。そのため、 -最後の要素はリストの長さより1小さい値になります。 -最大値、ステップ幅を指定することもでき、逆方向に進むこともできます: > - - :for a in range(8, 4, -2) - : echo a - :endfor -< 8 ~ - 6 ~ - 4 ~ - -より有用な例として、バッファ中の行に対するループ: > - - :for line in getline(1, 20) - : if line =~ "Date: " - : echo matchstr(line, 'Date: \zs.*') - : endif - :endfor - -1行目から20行目(両端を含む)を調べ、そこに含まれる日付を全て表示しています。 - - -辞書 ------ - -辞書はキーと値のペアを保持します。キーを指定することで高速に値を検索できます。 -辞書は波括弧で作ります: > - - :let uk2nl = {'one': 'een', 'two': 'twee', 'three': 'drie'} - -そして角括弧の中にキーを書くことで単語を検索します: > - - :echo uk2nl['two'] -< twee ~ - -辞書の定義の書式は次の通りです: > - - {<key> : <value>, ...} - -空の辞書とは、どんなキーも持たない辞書のことです: > - - {} - -辞書にはいろいろな使い道があります。辞書を扱う関数もたくさんあります。例えば、 -キーのリストを取得してそれに対してループするには次のようにします: > - - :for key in keys(uk2nl) - : echo key - :endfor -< three ~ - one ~ - two ~ - -キーはソートされていません。特定の順序に並べるにはリストをソートします: > - - :for key in sort(keys(uk2nl)) - : echo key - :endfor -< one ~ - three ~ - two ~ - -要素が定義された順序を得ることはできません。そのような目的にはリストを使ってく -ださい。リストは順序を保って要素を保持します。 - - -辞書の関数 ----------- - -辞書の要素は角括弧でインデックスを指定して取得します: > - - :echo uk2nl['one'] -< een ~ - -記号を使わない方法もあります: > - - :echo uk2nl.one -< een ~ - -この方法はキーがアルファベット、数字、アンダースコアなどの ASCII 文字だけで構 -成されている場合に使えます。この方法で値を代入することもできます: > - - :let uk2nl.four = 'vier' - :echo uk2nl -< {'three': 'drie', 'four': 'vier', 'one': 'een', 'two': 'twee'} ~ - -関数の定義と辞書への代入を同時に記述することができます: > - - :function uk2nl.translate(line) dict - : return join(map(split(a:line), 'get(self, v:val, "???")')) - :endfunction - -これを実行してみましょう: > - - :echo uk2nl.translate('three two five one') -< drie twee ??? een ~ - -":function" の行の末尾に "dict" と書かれています。これは、その関数が辞書から使 -われることを示します。ローカル変数 "self" がその辞書を指すようになります。 -次に、複雑なreturnコマンドを分解してみましょう: > - - split(a:line) - -関数split()は文字列を空白文字で区切り、リストにして返します。そのため、この例 -での戻り値は次のようになります: > - - :echo split('three two five one') -< ['three', 'two', 'five', 'one'] ~ - -このリストがmap()関数の第一引数になります。map()はリストの各要素を "v:val" に -代入した状態で第二引数を評価します。これによりforループより短いコードが書けま -す。このコードは: > - - :let alist = map(split(a:line), 'get(self, v:val, "???")') - -次のコードと同じです: > - - :let alist = split(a:line) - :for idx in range(len(alist)) - : let alist[idx] = get(self, alist[idx], "???") - :endfor - -関数get()はそのキーが辞書に入っているかをチェックします。入っていればその値を -返します。入っていなければデフォルト値(この例では'???')を返します。キーが入っ -ていなくてもエラーを起こしたくないような場合に便利です。 - -関数join()はsplit()の逆の処理をします。つまり単語のリストをスペースでつなげま -す。 -split()、map()、join() を組み合わせると、単語からなる行を簡潔に処理することが -できます。 - - -オブジェクト指向プログラミング ------------------------------- - -辞書には値と関数を入れることができるので、辞書をオブジェクトとして使うことがで -きます。 -上述の例ではオランダ語から英語に翻訳するために辞書を使いました。同じことが他の -言語でもできると面白いかもしれませんね。まず翻訳関数を持ったオブジェクト (つま -り辞書) を作ります。翻訳する単語はまだ定義しません: > - - :let transdict = {} - :function transdict.translate(line) dict - : return join(map(split(a:line), 'get(self.words, v:val, "???")')) - :endfunction - -単語を翻訳するのに 'self.words' を使う点が上述の例と少し違います。しかし、 -self.words はまだありません。よって、これは抽象クラスと呼ぶことができます。 - -オランダ語を翻訳するオブジェクトをインスタンス化してみましょう: > - - :let uk2nl = copy(transdict) - :let uk2nl.words = {'one': 'een', 'two': 'twee', 'three': 'drie'} - :echo uk2nl.translate('three one') -< drie een ~ - -さらにドイツ語の翻訳機を作ります: > - - :let uk2de = copy(transdict) - :let uk2de.words = {'one': 'ein', 'two': 'zwei', 'three': 'drei'} - :echo uk2de.translate('three one') -< drei ein ~ - -copy() 関数を使って "transdict" 辞書をコピーし、そのコピーに対して単語を追加し -ています。元の辞書はもちろん変更されません。 - -さらに一歩進んで、適切な言語を選択できるようにしてみます: > - - :if $LANG =~ "de" - : let trans = uk2de - :else - : let trans = uk2nl - :endif - :echo trans.translate('one two three') -< een twee drie ~ - -"trans"は2つのオブジェクト(辞書)のうちどちらか1つを参照します。コピーは作られ -ていません。リストと辞書の同一性についてのより詳しい情報は|list-identity|と -|dict-identity|にあります。 - -未対応の言語を使う場合は、translate() 関数を上書きして何もしないようにするとい -いかもしれません: > - - :let uk2uk = copy(transdict) - :function! uk2uk.translate(line) - : return a:line - :endfunction - :echo uk2uk.translate('three one wladiwostok') -< three one wladiwostok ~ - -! を使って既に存在している関数への参照を上書きしています。続いて、未対応の言語 -に対して "uk2uk" を使うように変更します: > - - :if $LANG =~ "de" - : let trans = uk2de - :elseif $LANG =~ "nl" - : let trans = uk2nl - :else - : let trans = uk2uk - :endif - :echo trans.translate('one two three') -< one two three ~ - -さらなる情報については|List|と|Dictionaries|を参照してください。 - -============================================================================== -*41.9* 例外 - -まずは例題を見てください: > - - :try - : read ~/templates/pascal.tmpl - :catch /E484:/ - : echo "パスカル用のテンプレートファイルは見つかりませんでした。" - :endtry - -":read" コマンドはファイルがなければ失敗します。そのエラーをキャッチして、エ -ラーメッセージの代わりにより親切なメッセージを表示しています。 - -":try" と ":endtry" の間で起きたエラーは例外に変わります。例外は文字列です。エ -ラーが例外に変わったとき、文字列にはエラーメッセージが含まれます。また、全ての -エラーメッセージは番号を持っています。例題では "E484:" を含んだエラーをキャッ -チしています。この番号は変わらないことが保証されています (テキストは翻訳される -などして変わるかもしれません)。 - -":read" コマンドが他のエラーを起こした場合、"E484:" というパターンはマッチしな -いでしょう。したがって、その例外はキャッチされず、通常のエラーメッセージが表示 -されます。 - -次のように書くこともできます: > - - :try - : read ~/templates/pascal.tmpl - :catch - : echo "パスカル用のテンプレートファイルは見つかりませんでした。" - :endtry - -全ての例外がキャッチされます。しかしこれでは "E21: Cannot make changes, -'modifiable' is off" のような有効なエラーに気づくことができません。 - -":finally" という便利なコマンドもあります: > - - :let tmp = tempname() - :try - : exe ".,$write " . tmp - : exe "!filter " . tmp - : .,$delete - : exe "$read " . tmp - :finally - : call delete(tmp) - :endtry - -カーソル行からファイル末尾までを "filter" コマンド (ファイル名を引数に取るコマ -ンド) でフィルタ処理しています。":try" と ":finally" の間で問題が起きても、 -ユーザーが CTRL-C を押して操作をキャンセルしても、"call delete(tmp)" は必ず呼 -ばれます。一時ファイルが残ってしまう心配はありません。 - -例外についてさらに詳しい情報はリファレンスマニュアルの|exception-handling|を -参照してください。 - -============================================================================== -*41.10* 注意事項 - -Vim スクリプトにおいて注意すべきことの概要を簡単に説明します。他の場所にも同じ -ような説明はありますが、手頃なチェックリストに使えるでしょう。 - -改行記号はシステムによって異なります。Unix では <NL> 文字が使われますが、 -MS-DOS 、Windows、OS/2 などでは <CR><LF> が使われます。末尾が <CR> になってい -るマップを使うときは注意してください。|:source_crnl| 参照。 - - -空白 ------ - -空の行はあっても構いません。無視されます。 - -行頭の空白 (スペースとTAB) は常に無視されます。引数と引数の間には空白がいくつ -あっても構いません (例えば下記の 'set' と 'cpoptions' の間) 。空白は一つのス -ペースにまとめられ、セパレータの役目をします。最後の文字より後ろにある空白文字 -は状況によって無視されたりされなかったりします。下記参照。 - -":set" コマンドで "=" 記号を使うとき: > - - :set cpoptions =aABceFst - -"=" の直前にある空白は無視されます。しかし、"=" の後ろに空白をはさむことはでき -ません。 - -オプション値に空白を含めるときは、バックスラッシュ ("\") でエスケープする必要 -があります: > - - :set tags=my\ nice\ file - -次のように書くと: > - - :set tags=my nice file - -これはエラーになります。このコマンドは次のように解釈されてしまいます: > - - :set tags=my - :set nice - :set file - - -コメント --------- - -コメントは " (ダブルクオート) 記号で開始します。行末までのすべての文字がコメン -トとして解釈され、無視されます。ただし、コメントを書くことができないコマンドも -あります (以下に例を示します)。コメントは行のどこからでも開始できます。 - -コメントとして簡単な注釈を付けたとします。例: > - - :abbrev dev development " shorthand - :map <F3> o#include " insert include - :execute cmd " do it - :!ls *.c " list C files - -短縮形 'dev' は 'development " shorthand' に展開されます。<F3> には 'o# -....' から '" insert include' までの全部がマップされます。"execute" コマンドは -エラーを起こします。"!" コマンドはすべての文字をシェルに渡すので、" 記号が閉じ -られていないことでエラーが起こります。 -":map"、":abbreviate"、":execute"、"!" などのコマンドはその後ろにコメントを書 -くことができません (そのようなコマンドは他にもあります)。ただし、無理やりコメ -ントを書く方法もあります: > - - :abbrev dev development|" shorthand - :map <F3> o#include|" insert include - :execute cmd |" do it - -'|' 文字でコマンドを区切り、次のコマンドを書くことができます。この例では二つ目 -のコマンドはコメントのみです。"!" の場合は |:execute| と '|' を使わなければな -りません: > - :exe '!ls *.c' |" list C files - -":map" と ":abbreviate" の場合は '|' の前に空白を置かないように注意してくださ -い。これらのコマンドは行末か '|' までのすべての文字を使います。そのため、意図 -せずに末尾に空白を入れてしまうかもしれません: > - - :map <F4> o#include - -vimrc を編集するときに 'list' オプションをオンに設定しておくと、この問題が発見 -しやすくなります。 - -Unix では特別なコメント書式を使って Vim スクリプトを実行形式にすることができま -す: > - #!/usr/bin/env vim -S - echo "this is a Vim script" - quit - -"#" コマンドは行を行番号付きで表示しますが、'!' をつけると何もしなくなります。 -よってファイルを実行するためのシェルコマンドを記述することができます。 -|:#!| |-S| - - -落とし穴 --------- - -次の例には大きな問題があります: > - - :map ,ab o#include - :unmap ,ab - -この unmap コマンドはうまく動きません。なぜなら ",ab " を unmap しようとしてい -るからです。そのようなマップは存在しません。エラーが表示されますが、スペースは -目に見えないので、エラーの原因を見つけるのは困難です。 - -":unmap" コマンドの後にコメントを書いた場合も同様です: > - - :unmap ,ab " comment - -コメントは無視されますが、Vim は ',ab ' を unmap しようとします。次のよう -に書いてください: > - - :unmap ,ab| " comment - - -ビューの復元 ------------- - -何らかの変更を加えてから、カーソルのあった場所に戻りたい時があります。そのとき -に、画面に表示されていた行範囲も復元されるとすてきです。 -次の例は、現在行をヤンクしてファイルの先頭にプットし、ビューを復元します: > - - map ,p ma"aYHmbgg"aP`bzt`a - -これは次のことをしています: > - ma"aYHmbgg"aP`bzt`a -< ma 現在のカーソル位置にマーク a を設定 - "aY 現在行をレジスタ a にヤンク - Hmb ウィンドウの一行目に移動してマーク b を設定 - gg ファイルの一行目に移動 - "aP ヤンクした行をその上にプット - `b ウィンドウの一行目に戻る - zt ウィンドウの表示範囲を以前と同じにする - `a 保存しておいたカーソル位置に移動 - - -パッケージング --------------- - -関数の名前が他の人の関数とかぶらないように、次の方法を使ってください: -- ユニークな文字列を名前の前に付ける。私はよく略語を使います。例えば、オプショ - ンウィンドウ (option window) のための関数なら "OW_" などです。 -- 関数を一つのファイルにまとめて、関数がロードされているかどうかを示すグローバ - ル変数を設定する。ファイルが二回目に読み込まれたとき、最初にそれらの関数をア - ンロードする。 -例: > - - " This is the XXX package - - if exists("XXX_loaded") - delfun XXX_one - delfun XXX_two - endif - - function XXX_one(a) - ... body of function ... - endfun - - function XXX_two(b) - ... body of function ... - endfun - - let XXX_loaded = 1 - -============================================================================== -*41.11* プラグインを書く *write-plugin* - -Vim スクリプトを書いて、それを多くの人に使ってもらうことができます。そのような -スクリプトはプラグインと呼ばれます。Vim ユーザーはあなたのスクリプトをプラグイ -ンディレクトリにコピーするだけで、すぐにその機能を使うことができます。 -|add-plugin| 参照。 - -プラグインには二種類あります: - - グローバルプラグイン : すべてのファイルで共通 - ファイルタイププラグイン : ファイルの種類別 - -この節ではグローバルプラグインについて説明します。ほとんどの説明はファイルタイ -ププラグインに対してもあてはまります。ファイルタイププラグイン特有の説明は次節 -にあります |write-filetype-plugin|。 - - -名前 ------ - -最初にプラグインの名前を決めなければなりません。プラグインが提供する機能が名前 -から分かるようにしてください。また、他の人が作ったプラグインと名前がかぶらない -ようにしてください。古い Windows システムでの問題を避けるため、名前は 8 文字以 -内にしてください。 - -例えばタイプミス (type mistake) を修正 (correct) するためのスクリプトなら -"typecorr.vim" という名前を付けたりします。ここではこれを例題として使います。 - -プラグインが誰でも使えるようにするため、いくつかのガイドラインに従ってくださ -い。ガイドラインは段階的に説明していきます。例題プラグインの完全なソースは最後 -に示します。 - - -ボディ ------- - -まずはプラグインの本体部分を見てみましょう。行番号は実際の番号です: > - - 14 iabbrev teh the - 15 iabbrev otehr other - 16 iabbrev wnat want - 17 iabbrev synchronisation - 18 \ synchronization - 19 let s:count = 4 - -もちろん、実際のスクリプトはもっと巨大です。 - -行番号は説明のために追加したものです。プラグインを書くときは行番号を付けないで -ください。 - - -へッダ ------- - -新しい単語を追加していくと、プラグインには複数のバージョンが存在することになり -ます。ファイルを配布したとき、それを使った人は、誰がこの素晴らしいプラグインを -書いたのかを知りたいと思うでしょうし、感想を伝えたいと思うかもしれません。 -というわけで、次のようなヘッダをプラグインに書いてください: > - - 1 " Vim global plugin for correcting typing mistakes - 2 " Last Change: 2000 Oct 15 - 3 " Maintainer: Bram Moolenaar <Bram@vim.org> - -著作権とライセンスについて: プラグインがとても便利で、そして再配布を制限するほ -どのものでない場合は、パブリックドメインか Vim ライセンス (|license|) の適用を -検討してみてください。次の短い宣言をプラグインの先頭付近に書いておくだけで十分 -です: > - - 4 " License: This file is placed in the public domain. - - -行連結、副作用の回避 *use-cpo-save* --------------------- - -上の例の 18 行目では行連結 (|line-continuation|) が使われています。ユーザーの -環境で 'compatible' オプションがオンに設定されていると、この行でエラーが発生し -ます。'compatible' オプションの設定には副作用があるので、勝手に設定をオフにす -ることはできません。問題を避けるには、一時的に 'cpoptions' の値を Vim の初期値 -に設定し、後で元に戻します。そうすれば、行連結を使うことができ、スクリプトはほ -とんどの環境で動作するようになります。設定の変更は次のようにします: > - - 11 let s:save_cpo = &cpo - 12 set cpo&vim - .. - 42 let &cpo = s:save_cpo - -最初に 'cpoptions' の値を s:save_cpo 変数に保存します。プラグインの最後でオプ -ションの値を元に戻します。 - -スクリプトローカル変数 (|s:var|) を使っていることに注目してください。グローバ -ル変数は他の場所で使われている可能性があります。スクリプトの中だけで使う場合は -スクリプトローカル変数を使ってください。 - - -ロードしない ------------- - -ユーザーが常にプラグインをロードしたいと思うとは限りません。また、システム管理 -者がシステムのプラグインディレクトリにプラグインを入れたが、ユーザーは自分で入 -れたプラグインを使いたいということもあります。したがって、指定したプラグインだ -けを無効にできる必要があります。次のようにします: > - - 6 if exists("g:loaded_typecorr") - 7 finish - 8 endif - 9 let g:loaded_typecorr = 1 - -これはスクリプトの二重ロードを避ける効果もあります。スクリプトを二重にロードす -ると、関数の再定義エラーが発生したり、自動コマンドが二重に追加されることでトラ -ブルが起きたりします。 - -変数の名前は "loaded_" で始めてプラグインのファイル名をそのまま付けるようにし -てください。"g:" を付けることで関数の中で変数を使用したときに発生するミスを防 -いでいます (関数の中では "g:" を付けない変数はローカル変数になります)。 - -"finish" を使ってファイルの残りの部分の読み込みを停止しています。この方法は -ファイル全体を if-endif で囲むよりも速いです。 - - -マップ ------- - -さて、プラグインをもっと魅力あるものに仕上げましょう。マップを追加して、カーソ -ルの下の単語に対する修正を追加できるようにします。単純にキーを選んでマップを設 -定することもできますが、そのキーは既にユーザーが使っているかもしれません。マッ -プに使用するキーをユーザーが選択できるようにするには、<Leader> を使います: > - - 22 map <unique> <Leader>a <Plug>TypecorrAdd - -"<Plug>TypecorrAdd" は目的の動作をします。詳しくは後で説明します。 - -使用したいキーを "mapleader" 変数に設定することで、マップの最初のキーを設定で -きます。例えば、次のように設定すると: > - - let mapleader = "_" - -マップは "_a" と定義されます。変数が設定されていない場合は初期設定 (バックス -ラッシュ) が使われます。つまり "\a" というマップが定義されます。 - -Note: 上記のコマンドでは <unique> が使われています。これは、同じマップが既に定 -義されていた場合にエラーを表示します。|:map-<unique>| - -マップするキーをユーザーが自分で定義できるようにするには、次のようにします: > - - 21 if !hasmapto('<Plug>TypecorrAdd') - 22 map <unique> <Leader>a <Plug>TypecorrAdd - 23 endif - -"<Plug>TypecorrAdd" に対するマップが既にあるかどうかを調べ、無い場合のみ -"<Leader>a" にマップを定義します。ユーザーは自分の vimrc ファイルの中でマップ -を定義することができます: > - - map ,c <Plug>TypecorrAdd - -すると、マップのキーとして ",c" が使われます。"_a" や "\a" は使われません。 - - -ピース ------- - -スクリプトが大きくなると、それを部品ごとに分けたくなります。それには関数やマッ -プを使います。しかし、そうすると関数やマップが他のスクリプトのものと衝突する可 -能性があります。例えば、Add() という関数を追加したとき、他のスクリプトでも同じ -名前の関数が定義されているかもしれません。そのような場合は、名前の前に "s:" を -付けて、スクリプトの中だけで使える関数を定義します。 - -新しい修正を追加するための関数を定義します: > - - 30 function s:Add(from, correct) - 31 let to = input("type the correction for " . a:from . ": ") - 32 exe ":iabbrev " . a:from . " " . to - .. - 36 endfunction - -s:Add() 関数は同じスクリプトの中から呼び出すことができます。他のスクリプトが -s:Add() を定義していた場合、それはそのスクリプトにローカルであり、関数が定義さ -れたスクリプトの中からのみ呼び出すことができます。さらにグローバルの Add() 関 -数 ("s:"無し) を定義することもでき、それはまた別の関数になります。 - -マップ定義では <SID> が使えます。これは、現在のスクリプトを識別するためのスク -リプト ID を生成します。私たちの入力修正プラグインでは <SID> を次のように使い -ます: > - - 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add - .. - 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> - -ユーザーが "\a" と入力すると、次の手順でキー入力が呼び出されます: > - - \a -> <Plug>TypecorrAdd -> <SID>Add -> :call <SID>Add() - -他のスクリプトで <SID>Add をマップすると、別のスクリプト ID が使われ、別のマッ -プが生成されます。 - -Note: s:Add() ではなく <SID>Add() と書いていることに注意してください。マップは -スクリプトの外側でユーザーが入力するものだからです。<SID> はスクリプト ID に変 -換され、どのスクリプトの Add() 関数を呼べばいいのかわかるようになっています。 - -これは少し複雑ですが、複数のプラグインを同時に使用するためには必要なことです。 -基本的なルールとしては、マップの中では <SID>Add() を使い、他の場所 (スクリプト -の中、自動コマンド、ユーザー定義コマンド) では s:Add() を使います。 - -マップと同じ方法で、メニューを追加することもできます: > - - 26 noremenu <script> Plugin.Add\ Correction <SID>Add - -プラグインのメニューを追加する場合は "Plugin" メニューの下に登録することが推奨 -されています。この例ではメニューが一つだけですが、複数のメニューを追加する場合 -は、サブメニューの使用が推奨されています。例えば、"Plugin.CVS" 以下に -"Plugin.CVS.checkin" や "Plugin.CVS.checkout" などの CVS の操作を登録します。 - -Note: 28 行目では ":noremap" を使って、他のマップでトラブルが起きないようにし -ています。例えば、誰かが ":call" をマップしているかもしれないからです。24 行目 -でも ":noremap" を使っていますが、ここでは "<SID>Add" を再マップして欲しいの -で、"<script>" を使っています。これを使うとスクリプトローカルなマップだけが再 -マップされます |:map-<script>|。26 行目でも ":noremenu" で同様のことをしていま -す |:menu-<script>|。 - - -<SID> と <Plug> *using-<Plug>* ---------------- - -<SID> と <Plug> は、入力したキーに対するマップと、他のマップの中だけで使われる -マップが干渉しないようにするために使われます。<SID> と <Plug> の違いに注意して -ください: - -<Plug> これはスクリプトの外側からも見えます。ユーザーが自分でプラグインの機能 - をマップできるようにするような場合に使います。<Plug> は特殊なコード - で、キーボードから入力されることはありません。 - キー列が他のプラグインとかぶらないように、<Plug> スクリプト名 マップ - 名、という形式で使ってください。 - 我々の例では、スクリプト名が "Typecorr"、マップ名が "Add" なので、 - "<Plug>TypecorrAdd" というキー列になります。スクリプト名とマップ名の最 - 初の文字だけを大文字にして、どこがマップ名なのかわかるようにします。 - -<SID> これはスクリプト ID (スクリプト固有の識別子) です。 - Vim は内部で <SID> を "<SNR>123_" に変換します ("123"の部分はいろいろ - な数字が入ります)。つまり、関数 "<SID>Add()" は、あるスクリプトでは - "<SNR>11_Add()" という名前になり、別のスクリプトでは "<SNR>22_Add()" - になります。これは ":function" コマンドで関数一覧を表示すると確認する - ことができます。<SID> の変換はマップの中でも同様におこなわれるので、 - マップの中からスクリプトローカル関数を呼び出すことができます。 - - -ユーザ定義コマンド ------------------- - -修正を追加するためのユーザー定義コマンドを追加します: > - - 38 if !exists(":Correct") - 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) - 40 endif - -ユーザー定義コマンドは、同じ名前のコマンドがまだない場合のみ定義できます。既に -定義されている場合はエラーになります。":command!" を使ってユーザー定義関数を上 -書きするのは良いアイデアとは言えません。ユーザーは、自分が定義したコマンドがな -ぜ動かないのか不思議に思うでしょう。|:command| - - -スクリプト変数 --------------- - -先頭に "s:" が付いた変数はスクリプト変数です。これはスクリプトの中だけで使えま -す。スクリプトの外からは見えません。同じ名前の変数を複数のスクリプトで使ってし -まうようなトラブルを避けることができます。Vim が実行されている間、変数は保持さ -れます。そして、同じスクリプトが再読み込みされると、再び同じ変数が使われます。 -|s:var| - -スクリプト変数は、同じスクリプトの中で定義された関数、自動コマンド、ユーザー定 -義コマンドでも使えます。我々の例に、修正の数を数えるための数行のコードを追加し -ます: > - - 19 let s:count = 4 - .. - 30 function s:Add(from, correct) - .. - 34 let s:count = s:count + 1 - 35 echo s:count . " corrections now" - 36 endfunction - -最初に s:count はスクリプトの中で 4 で初期化されます。その後、s:Add() 関数が呼 -び出されると、s:count が増加します。関数がどこから呼ばれたかに関わらず、関数が -定義されたスクリプトのローカル変数が使われます。 - - -まとめ ------- - -例題の完成形は以下のようになります: > - - 1 " Vim global plugin for correcting typing mistakes - 2 " Last Change: 2000 Oct 15 - 3 " Maintainer: Bram Moolenaar <Bram@vim.org> - 4 " License: This file is placed in the public domain. - 5 - 6 if exists("g:loaded_typecorr") - 7 finish - 8 endif - 9 let g:loaded_typecorr = 1 - 10 - 11 let s:save_cpo = &cpo - 12 set cpo&vim - 13 - 14 iabbrev teh the - 15 iabbrev otehr other - 16 iabbrev wnat want - 17 iabbrev synchronisation - 18 \ synchronization - 19 let s:count = 4 - 20 - 21 if !hasmapto('<Plug>TypecorrAdd') - 22 map <unique> <Leader>a <Plug>TypecorrAdd - 23 endif - 24 noremap <unique> <script> <Plug>TypecorrAdd <SID>Add - 25 - 26 noremenu <script> Plugin.Add\ Correction <SID>Add - 27 - 28 noremap <SID>Add :call <SID>Add(expand("<cword>"), 1)<CR> - 29 - 30 function s:Add(from, correct) - 31 let to = input("type the correction for " . a:from . ": ") - 32 exe ":iabbrev " . a:from . " " . to - 33 if a:correct | exe "normal viws\<C-R>\" \b\e" | endif - 34 let s:count = s:count + 1 - 35 echo s:count . " corrections now" - 36 endfunction - 37 - 38 if !exists(":Correct") - 39 command -nargs=1 Correct :call s:Add(<q-args>, 0) - 40 endif - 41 - 42 let &cpo = s:save_cpo - -33 行目は説明がまだでした。これは、新しい修正をカーソルの下の単語に適用しま -す。|:normal| コマンドを使って新しい略語を適用しています。Note: マップと略語は -その場で展開されます。":noremap" で定義されたマップから関数が呼び出されたとし -ても動作は同じです。 - -'fileformat' オプションを "unix" に設定することが推奨されています。そうすれ -ば、Vim スクリプトはどこでも動作します。'fileformat' が "dos" に設定されたスク -リプトは Unix では動作しません。|:source_crnl| も参照。設定が正しいことを確実 -にするため、ファイルを保存する前に次のコマンドを実行してください: > - - :set fileformat=unix - - -ドキュメント *write-local-help* ------------- - -プラグインのドキュメントを書くのは良いアイデアです。ユーザーが動作を変更できる -ような場合には特に重要です。|add-local-help| ではどのようにしてドキュメントが -インストールされるか説明されています。 - -プラグインヘルプファイルの例を示します ("typecorr.txt"): > - - 1 *typecorr.txt* Plugin for correcting typing mistakes - 2 - 3 If you make typing mistakes, this plugin will have them corrected - 4 automatically. - 5 - 6 There are currently only a few corrections. Add your own if you like. - 7 - 8 Mappings: - 9 <Leader>a or <Plug>TypecorrAdd - 10 Add a correction for the word under the cursor. - 11 - 12 Commands: - 13 :Correct {word} - 14 Add a correction for {word}. - 15 - 16 *typecorr-settings* - 17 This plugin doesn't have any settings. - -書式に気をつけなければならないのは一行目だけです。一行目はコピーされ、help.txt -の "LOCAL ADDITIONS:" の項に埋め込まれます |local-additions|。最初の "*" は一 -行目の一桁目に書いてください。ヘルプを追加したら ":help" を実行して項目が追加 -されたことを確認してください。 - -ヘルプの中で ** で文字を囲むとタグを追加することができます。ただし、既存のヘル -プタグと同じものを使わないでください。"typecorr-settings" のように、プラグイン -の名前を使ってタグを作るといいかもしれません。 - -ヘルプの他の部分を参照するときは || で囲みます。そうすれば、ユーザーは簡単にヘ -ルプの関連した部分を参照することができます。 - - -ファイルタイプの認識 *plugin-filetype* --------------------- - -ファイルタイプが Vim によって認識されない場合は、別ファイルにファイルタイプを -認識するためにコードを作成する必要があります。通常は、自動コマンドを使って、 -ファイル名がパターンにマッチしたときにファイルタイプを設定します。例: > - - au BufNewFile,BufRead *.foo set filetype=foofoo - -この一行を 'runtimepath' の最初のディレクトリの "ftdetect/foofoo.vim" に書き -込みます。例えば、Unix なら "~/.vim/ftdetect/foofoo.vim" などです。ファイルタ -イプとスクリプトファイルの名前を同じにする決まりになっています。 - -必要ならより複雑な処理をすることもできます。例えば、ファイルの中身を見て言語を -判定したりできます。|new-filetype| も参照。 - - -要約 *plugin-special* ------ - -プラグインで使用する特有事項の要約を示します: - -s:name スクリプトローカル変数。 - -<SID> スクリプトID。マップや関数をスクリプトローカルにする - のに使う。 - -hasmapto() スクリプトが提供している機能に対して、ユーザーが既に - マップを定義したかどうかをチェックする関数。 - -<Leader> "mapleader" の値。ユーザーがその変数にキーを設定するこ - とで、プラグインのマップの開始キーを指定できる。 - -:map <unique> マップが既に定義されているなら警告を発する。 - -:noremap <script> スクリプトローカルマップだけを使う。グローバルマップは - 使わない。 - -exists(":Cmd") ユーザー定義コマンドが既にあるかどうかをチェックする。 - -============================================================================== -*41.12* ファイルタイププラグインを書く *write-filetype-plugin* *ftplugin* - -ファイルタイププラグインはグローバルプラグインと似ていますが、カレントバッファ -のマップやオプションだけを設定します。ファイルタイププラグインの使用方法につい -ては |add-filetype-plugin| を参照してください。 - -先に |41.10| 節のグローバルプラグインの項を読んでください。そこで説明されてい -ることはすべてファイルタイププラグインにもあてはまります。この節ではファイルタ -イププラグイン特有の事項だけを説明します。ファイルタイププラグインはカレント -バッファに対してのみ機能するということが最も大切です。 - - -無効化 ------- - -ファイルタイププラグインを書いて多くの人に使ってもらおうとするなら、プラグイン -を無効化できるようにしておく必要があります。プラグインの先頭に次のような記述を -追加してください: > - - " このバッファに対してまだ実行されていない場合のみ処理を実行する - if exists("b:did_ftplugin") - finish - endif - let b:did_ftplugin = 1 - -これは同じプラグインが同じバッファで二重にロードされるのを防ぐためにも必要です -(":edit"コマンドを引数なしで実行したときに発生します)。 - -ユーザーは、次の一行だけを書いたファイルタイププラグインを作成することで、標準 -プラグインのロードを無効化できます: > - - let b:did_ftplugin = 1 - -ただし、そのファイルを保存したファイルタイププラグインディレクトリが、 -'runtimepath' の中で $VIMRUNTIME よりも前にある必要があります。 - -標準プラグインを使いつつ、その設定を一つだけ変更したいという場合は、スクリプト -の中で設定を変更することができます: > - - setlocal textwidth=70 - -このファイルを "after" ディレクトリに保存すると、(例えば filetype=vim なら) 標 -準配布の "vim.vim" が読み込まれた後に、保存したファイルが読み込まれるようにな -ります |after-directory|。Unix ならファイルのパスは -"~/.vim/after/ftplugin/vim.vim" です。Note: 標準プラグインは "b:did_ftplugin" -を設定しますが、ここではそれを無視しています。 - - -オプション ----------- - -ファイルタイププラグインでは、カレントバッファの設定だけを変更するため、次のコ -マンドを使ってオプションを設定してください: > - - :setlocal - -そして、バッファローカルなオプションだけを設定してください (どのオプションがそ -うなのかはヘルプで確認してください)。|:setlocal| コマンドでグローバルオプショ -ンやウィンドウローカルオプションを設定すると、たくさんのバッファの設定が変更さ -れます。ファイルタイププラグインはそのような動作をすべきではありません。 - -オプションの値がフラグや設定項目のリストなら、"+=" や "-=" を使うことで既存の -設定を維持することができます。ユーザーがそのオプションの設定を変更している可能 -性もあるので注意してください。最初に初期設定に戻してから設定を変更するといいか -もしれません。例: > - - :setlocal formatoptions& formatoptions+=ro - - -マップ ------- - -カレントバッファの中だけで機能するマップを作るには次のコマンドを使います: > - - :map <buffer> - -上述したように、マップは二段階に分けて作る必要があります。ファイルタイププラグ -インで機能を定義する例を示します: > - - if !hasmapto('<Plug>JavaImport') - map <buffer> <unique> <LocalLeader>i <Plug>JavaImport - endif - noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc> - -|hasmapto()| を使って、ユーザーが既に <Plug>JavaImport に対してマップを定義し -ているかどうかを調べます。未定義ならファイルタイププラグインの標準のマップを定 -義します。マップは <LocalLeader> で開始します。そうすることで、ファイルタイプ -プラグインのマップを開始するキーをユーザーが選択できます。初期設定はバックス -ラッシュです。 -"<unique>" を使って、マップが既に存在したとき、あるいは既存のマップと重複した -ときにエラーメッセージが表示されるようにします。 -|:noremap| を使って、ユーザーが定義した他のマップの影響を受けないようにしま -す。":noremap <script>" を使うと、スクリプトの中で定義した <SID> で始まるマッ -プだけが再マップされます。 - -ユーザーがファイルタイププラグインのマップを無効化できる仕組みを提供しなければ -なりません。例えば、"mail" ファイルタイプのプラグインなら次のようにします: > - - " マップを追加する。ユーザーが望まない場合は追加しない。 - if !exists("no_plugin_maps") && !exists("no_mail_maps") - " "> " を挿入して引用する - if !hasmapto('<Plug>MailQuote') - vmap <buffer> <LocalLeader>q <Plug>MailQuote - nmap <buffer> <LocalLeader>q <Plug>MailQuote - endif - vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR> - nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR> - endif - -ここでは二つのグローバル変数が使われています: - no_plugin_maps すべてのファイルタイププラグインのマップを無効化 - no_mail_maps 特定のファイルタイププラグインのマップを無効化 - - -ユーザー定義コマンド --------------------- - -ファイルタイプ用のユーザー定義コマンドを追加して、それを一つのバッファの中だけ -で使えるようにするには、|:command| の引数に "-buffer" を指定します。例: > - - :command -buffer Make make %:r.s - - -変数 ------ - -ファイルタイププラグインは対応するすべてのバッファに対して実行されます。スクリ -プトローカル変数 |s:var| はすべての実行で共有されます。バッファごとの変数を使 -いたい場合はバッファローカル変数 |b:var| を使ってください。 - - -関数 ------ - -関数は一度だけ定義すれば十分です。しかし、ファイルタイププラグインは対応する -ファイルが開かれるたびに読み込まれます。次のようにすると関数が一度だけ定義され -るようになります: > - - :if !exists("*s:Func") - : function s:Func(arg) - : ... - : endfunction - :endif -< - -アンドゥ *undo_ftplugin* --------- - -ユーザーが ":setfiletype xyz" としたとき、それ以前のファイルタイプの効果は無効 -になるべきです。b:undo_ftplugin 変数にコマンドを設定し、ファイルタイププラグイ -ンの設定をアンドゥするようにしてください。例: > - - let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<" - \ . "| unlet b:match_ignorecase b:match_words b:match_skip" - -":setlocal" でオプション名の後に "<" を付けると、そのオプションをグローバルな -値でリセットします。オプションをリセットするにはこの方法が一番です。 - -このように行継続を使うには 'cpoptions' から "C" フラグを取り除く必要がありま -す。上述の |use-cpo-save| を参照してください。 - - -ファイル名 ----------- - -ファイルタイププラグインのファイル名にはファイルタイプ名が含まれていなければな -りません |ftplugin-name|。次の三つのうちのどれかにしてください: - - .../ftplugin/stuff.vim - .../ftplugin/stuff_foo.vim - .../ftplugin/stuff/bar.vim - -"stuff" はファイルタイプ名、"foo" と "bar" は任意の名前です。 - - -要約 *ftplugin-special* ------ - -ファイルタイププラグインの特有事項を要約します: - -<LocalLeader> "maplocalleader" の値。ユーザーがその変数にキーを設定 - することで、ファイルタイププラグインのマップの開始キー - を指定できる。 - -:map <buffer> バッファローカルなマップを定義する。 - -:noremap <script> 同スクリプトで定義している <SID> で始まるマップだけを - 再マップする。 - -:setlocal カレントバッファのオプションのみ設定する。 - -:command -buffer バッファローカルなユーザー定義コマンドを定義する。 - -exists("*s:Func") 関数が定義済かどうかをチェックする。 - -プラグイン全般に関する事項は |plugin-special| を参照してください。 - -============================================================================== -*41.13* コンパイラプラグインを書く *write-compiler-plugin* - -コンパイラプラグインは特定のコンパイラを使うためのオプションを設定します。ユー -ザーは |:compiler| コマンドでその設定を読み込むことができます。設定されるオプ -ションは主に 'errorformat' と 'makeprg' です。 - -百聞は一見に如かず。次のコマンドですべての標準コンパイラプラグインを開くことが -できます: > - - :next $VIMRUNTIME/compiler/*.vim - -|:next| を使って次のプラグインファイルに移動してください。 - -これらのファイルには二つの特有事項があります。一つは、標準ファイルに対して設定 -を追加したり上書きしたりできる仕組みです。標準ファイルの先頭は次のようになって -います: > - - :if exists("current_compiler") - : finish - :endif - :let current_compiler = "mine" - -コンパイラファイルを書いて、それを個人用のランタイムディレクトリ (例えば Unix -なら ~/.vim/compiler) に置いたとき、"current_compiler" 変数を設定することで標 -準ファイルの設定をスキップすることができます。 - *:CompilerSet* -二つ目は、":compiler!" が使われたときは ":set" を使い、":compiler" が使われた -ときは ":setlocal" を使う仕組みです。Vim はそのために ":CompilerSet" という -ユーザーコマンドを定義します。古い Vim はそれを定義しないので、プラグインの中 -で定義してください。例: > - - if exists(":CompilerSet") != 2 - command -nargs=* CompilerSet setlocal <args> - endif - CompilerSet errorformat& " use the dfault 'errorformat' - CompilerSet makeprg=nmake - -コンパイラプラグインを書いて、それを Vim の配布物に含めたり、システムのランタ -イムディレクトリに入れたりする場合は、上記の方法を使ってください。 -"current_compiler" がユーザープラグインで設定された場合は何も実行しないように -します。 - -コンパイラプラグインを書いて標準プラグインの設定を上書きする場合は -"current_compiler" をチェックしないようにします。そのプラグインは最後に読み込 -まれないといけないので、'runtimepath' の最後にあるディレクトリに置きます。例え -ば、Unix なら ~/.vim/after/compiler などです。 - -============================================================================== -*41.14* プラグインを書く (高速ロード版) *write-plugin-quickload* - -プラグインが成長し、とても大きくなることがあります。すると、起動速度は遅くなっ -てきます。例えそのプラグインをたまにしか使わないとしても遅くなります。そういう -ときはクイックロードプラグインの出番です。 - -基本的なアイデアはプラグインを二回に分けて読み込むということです。一回目はユー -ザー定義コマンドやマップを定義して機能を提供します。二回目は機能を実装する関数 -を定義します。 - -スクリプトを二回読み込むことがクイックロードだというと驚かれるかもしれません。 -この手法の意味は、一回目は高速に読み込み、スクリプトの重い部分は二回目に後回し -にするということです。二回目の読み込みは、ユーザが実際にその機能を使用したとき -に発生します。あなたがその機能を常に使うなら、これは逆に遅くなってしまいます。 - -Note Vim 7 以降では代わりの方法があります。|41.15| で説明されている |autoload| -機能を使う方法です。 - -次に例を示します: > - - " クイックロードのデモ用のグローバルプラグイン - " Last Change: 2005 Feb 25 - " Maintainer: Bram Moolenaar <Bram@vim.org> - " License: This file is placed in the public domain. - - if !exists("s:did_load") - command -nargs=* BNRead call BufNetRead(<f-args>) - map <F19> :call BufNetWrite('something')<CR> - - let s:did_load = 1 - exe 'au FuncUndefined BufNet* source ' . expand('<sfile>') - finish - endif - - function BufNetRead(...) - echo 'BufNetRead(' . string(a:000) . ')' - " read 機能をここに書く - endfunction - - function BufNetWrite(...) - echo 'BufNetWrite(' . string(a:000) . ')' - " write 機能をここに書く - endfunction - -このスクリプトが最初に読み込まれたとき、"s:did_load" は設定されていません。 -"if" と "endif" の間のコマンドが実行されます。|:finish| コマンドによって終了 -し、スクリプトの残りの部分は実行されません。 - -二回目に読み込まれたときは "s:did_load" が存在するので、"endif" 以降のコマンド -が実行されます。この部分では (長くなる可能性のある) BufNetRead() 関数と -BufNetWrite() 関数を定義します。 - -このスクリプトをプラグインディレクトリに置くと、Vim の起動時に実行されます。処 -理の流れは次のようになります: - -1. 起動時にスクリプトが読み込まれる。"BNRead" コマンドが定義され、<F19> キーに - マップが設定される。自動コマンドの |FuncUndefined| が定義される。":finish" - コマンドによってスクリプトが終了する。 - -2. ユーザーが BNRead コマンド実行する、または <F19> キーを押す。BufNetRead() - 関数か BufNetWrite() 関数が呼び出される。 - -3. Vim はその関数を見つけることができず、自動コマンドの |FuncUndefined| イベン - トを発行する。関数名が "BufNet*" というパターンにマッチするので、"source - fname" コマンドが実行される。"fname" はスクリプトの名前になります。スクリプ - トがどこに保存されていても、"<sfile>" が展開されてファイル名になります - (|expand()|参照)。 - -4. スクリプトが再び読み込まれる。"s:did_load" 変数が存在するので関数が定義され - る。 - -遅延ロードされる関数の名前が |FuncUndefined| 自動コマンドのパターンにマッチし -ていることに注意してください。他のプラグインがこのパターンにマッチする関数を定 -義しているとうまく動きません。 - -============================================================================== -*41.15* ライブラリスクリプトを書く *write-library-script* - -いろいろな場所で同じ機能が必要になることがあります。コードが二、三行以上になる -場合は、それを一つのスクリプトに入れて、他のスクリプトから使えるようにしたくな -ると思います。そのようなスクリプトをライブラリスクリプトと呼びます。 - -自分でライブラリスクリプトを読み込むことは可能ですが、同じスクリプトを二重に読 -み込まないようにする必要があります。それには |exists()| 関数を使います。例: > - - if !exists('*MyLibFunction') - runtime library/mylibscript.vim - endif - call MyLibFunction(arg) - -'runtimepath' に設定されたディレクトリの中の "library/mylibscript.vim" の中で -MyLibFunction() が定義されている必要があります。 - -これをより簡単にするために、Vim には autoload という仕組みがあります。同じこと -を次のように書くことができます: > - - call mylib#myfunction(arg) - -この方がずっと簡単でしょう? Vim は関数の名前を見て、それが未定義なら、 -'runtimepath' の中から "autoload/mylib.vim" を探します。そのスクリプトは関数 -"mylib#myfunction()" を定義していなければなりません。 - -mylib.vim には他の関数も入れられます。ライブラリスクリプトの中では自由に関数を -作ることができます。ただし、関数名の '#' より前の部分はスクリプトの名前と同じ -にする必要があります。そうしないと Vim はどのスクリプトを読み込めばいいのかわ -かりません。 - -ライブラリスクリプトをたくさん書く場合は、サブディレクトリを使うといいかもしれ -ません。例: > - - call netlib#ftp#read('somefile') - -Unix では、このライブラリスクリプトは次のような場所に置かれます: > - - ~/.vim/autoload/netlib/ftp.vim - -関数は次のように定義します: > - - function netlib#ftp#read(fname) - " ftp を使ってファイルを読み込む - endfunction - -関数定義と関数呼び出しではまったく同じ名前が使われます。最後の '#' より前の部 -分がサブディレクトリとスクリプトの名前に対応しています。 - -同じ方法で変数を扱うこともできます: > - - let weekdays = dutch#weekdays - -これによって "autoload/dutch.vim" が読み込まれます。そのスクリプトには例えば次 -のようなコードが書かれています: > - - let dutch#weekdays = ['zondag', 'maandag', 'dinsdag', 'woensdag', - \ 'donderdag', 'vrijdag', 'zaterdag'] - -より詳しくは |autoload| を参照してください。 - -============================================================================== -*41.16* Vim スクリプトを配布する *distribute-script* - -Vim ユーザーは Vim のウェブサイト http://www.vim.org でスクリプトを探します。 -便利なスクリプトを作ったら、ぜひ共有しましょう! - -Vim スクリプトはどのシステムでも使えます。tar や gzip コマンドは存在しないこと -があります。ファイルをまとめたり圧縮したりするには "zip" ユーティリティが推奨 -されています。 - -可搬性を最大限に高めるには、Vim 自身を使ってスクリプトをパッケージ化します。そ -れには Vimball ユーティリティを使います。|vimball| を参照。 - -自動更新するための行を書いておくと便利です。|glvs-plugins| を参照。 - -============================================================================== - -次章: |usr_42.txt| 新しいメニューを追加する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_42.jax b/runtime.old/doc/usr_42.jax deleted file mode 100644 index b9f4fa2d1..000000000 --- a/runtime.old/doc/usr_42.jax +++ /dev/null @@ -1,375 +0,0 @@ -*usr_42.txt* For Vim バージョン 7.3. Last change: 2008 May 05 - - VIM USER MANUAL - by Bram Moolenaar - - 新しいメニューを追加する - - -Vim の柔軟性については既にご存知だと思います。それは GUI のメニューにおいても -同じです。自分でメニューを追加して、コマンドの実行を簡単にすることができます。 -この章はマウスをよく使うユーザー向けです。 - -|42.1| はじめに -|42.2| メニューコマンド -|42.3| その他いろいろ -|42.4| ツールバーとポップアップメニュー - -次章: |usr_43.txt| ファイルタイプを使う -前章: |usr_41.txt| Vim スクリプト書法 -目次: |usr_toc.txt| - -============================================================================== -*42.1* はじめに - -Vim のメニューは "$VIMRUNTIME/menu.vim" で定義されています。自分のメニューを作 -りたい場合は、そのファイルにざっと目を通してみてください。 -メニューを定義するには ":menu" コマンドを使います。基本的な書式は次のとおり: > - - :menu {menu-item} {keys} - -{menu-item} にはメニューの場所を指定します。例えば {menu-item} が "File.Save" -なら、"File" メニューの下の "Save" 項目を示します。ドットで名前を区切ります。 -例: > - - :menu File.Save :update<CR> - -":update" コマンドは、ファイルが変更されていればそれを保存するコマンドです。 -階層を深くすることもできます。"Edit.Settings.Shiftwidth" なら、"Edit" メニュー -の下の "Settings" サブメニューの下の "Shiftwidth" 項目を示します。さらに深くす -ることもできます。メニューが深くなりすぎるとマウスをたくさん動かさなければなら -なくなるので注意してください。 -":menu" コマンドは ":map" コマンドとよく似ています。パラメタの左側でコマンドの -実行方法を指定し、右側で実行されるコマンドを指定します。{keys} は文字列で、そ -れが実際に入力されたかのように使われます。つまり、インサートモードでは {keys} -の文字列がそのまま挿入されます。 - - -キーボードアクセラレータ ------------------------- - -アンパサンド文字 (&) はアクセラレータを示すために使われます。例えば、Alt-F で -"File" を選択し、そして S で "Save" を選択できます。 ('winaltkeys' オプション -の設定によって無効になっている可能性もあります)。その場合、{menu-item} は -"&File.&Save" のようになります。アクセラレータ文字は下線付きで表示されます -それぞれのキーは各メニューの中で一度だけしか使わないようにしてください。そうし -ないと、どちらが実行されるのかわからなくなります。これについて Vim は警告は発 -しません。 - - -並び順 ------- - -"File.Save" メニューの実際の定義は次のようになっています: > - - :menu 10.340 &File.&Save<Tab>:w :confirm w<CR> - -10.340 という数値は順位番号です。これはメニュー項目の位置を決定するために使わ -れます。最初の番号 (10) はメニューバーにおける位置を示します。数字が小さいほど -左側に配置され、大きいほど右側に配置されます。 -標準メニューでは次の順位番号が使われています: - - 日本語環境 - 10 20 40 50 60 70 9999 - +-----------------------------------------------------------------+ - | ファイル 編集 ツール シンタックス バッファ ウィンドウ ヘルプ | - +-----------------------------------------------------------------+ - - 英語環境 - 10 20 40 50 60 70 9999 - +------------------------------------------------------------+ - | File Edit Tools Syntax Buffers Window Help | - +------------------------------------------------------------+ - -ヘルプメニューには大きな番号が与えられ、右端に表示されるようになっています。 -二番目の数字 (340) はプルダウンメニューにおける位置を示します。数字が小さいほ -ど上に配置され、大きいほど下に配置されます。ファイルメニューの順位番号を以下に -示します: - - 日本語環境 英語環境 - +-------------------+ +-----------------+ - 10.310 |開く... | |Open... | - 10.320 |分割して開く... | |Split-Open... | - 10.325 |新規作成 | |New | - 10.330 |閉じる | |Close | - 10.335 |------------------ | |---------------- | - 10.340 |保存 | |Save | - 10.350 |名前を付けて保存...| |Save As... | - 10.400 |------------------ | |---------------- | - 10.410 |差分表示... | |Split Diff with | - 10.420 |パッチ結果を表示...| |Split Patched By | - 10.500 |------------------ | |---------------- | - 10.510 |印刷 | |Print | - 10.600 |------------------ | |---------------- | - 10.610 |保存して終了 | |Save-Exit | - 10.620 |終了 | |Exit | - +-------------------+ +-----------------+ - -それぞれの番号の間には少し余裕があるので、必要なら、そこにメニューを追加するこ -とができます (ただし、標準メニューに手を加えるより、新しいメニューを追加したほ -うがよいでしょう)。 -サブメニューを作るときは、さらに ".number" を追加することができます。つまり、 -{menu-item} のそれぞれの名前が順位番号を持ちます。 - - -特殊文字 --------- - -例では、{menu-item} に "&File.&Save<Tab>:w" が指定されていました。これは重要な -ポイントです。{menu-item} は一つの単語でなければなりません。ドット、スペース、 -タブなどを使いたい場合は <> 表記 (<Space>や<Tab>など) を使うか、バックスラッ -シュ (\) でエスケープする必要があります。 > - - :menu 10.305 &File.&Do\ It\.\.\. :exit<CR> - -これは、メニュー項目の名前が "Do It..." (空白が含まれてます)、実行されるコマン -ドは ":exit<CR>" になります。 - -メニューの名前は <Tab> 文字を使って、名前の部分とヒント情報の部分を区切ること -ができます。<Tab> より後ろの部分は右寄せされて表示されます。File.Save では -"&File.&Save<Tab>:w" という名前が使われていました。これは "File.Save" という名 -前と ":w" というヒント情報です。 - - -セパレータ ----------- - -セパレータは、関連した項目をグループ化するのに使います。これは例えば "-sep-" -のように名前の最初と最後に "-" を付けることで定義できます。複数のセパレータを -使う場合はそれぞれ別の名前を付けてください。名前自体に意味はありません。 -セパレータに設定されたコマンドが実行されることはありませんが、その定義は必要で -す。":" を書いておいてください。例: > - - :amenu 20.510 Edit.-sep3- : - -============================================================================== -*42.2* メニューコマンド - -メニューはモード別に定義できます。メニュー項目は対応するモードでのみ使えます。 -":map" コマンドのバリエーションと同じようなものです: - - :menu ノーマルモード、ビジュアルモード、オペレータ待機モード - :nmenu ノーマルモード - :vmenu ビジュアルモード - :omenu オペレータ待機モード - :menu! インサートモード、コマンドライン - :imenu インサートモード - :cmenu コマンドラインモード - :amenu すべてのモード - -メニュー項目が再マップされないようにするには、":noremenu"、":nnoremenu"、 -":anoremenu" などを使います。 - - -:amenu の使い方 ---------------- - -":amenu" コマンドは少し特殊です。{keys} に指定した文字列はノーマルモードで実行 -するものとして扱われます。ビジュアルモードやインサートモードでメニューが使われ -た場合は、実行の前にノーマルモードに戻らなければならないので、CTRL-C や CTRL-O -が挿入されます。例えば、次のコマンドを使うと: > -> - :amenu 90.100 Mine.Find\ Word * - -メニューのコマンドは次のように定義されます: - - ノーマルモード: * - ビジュアルモード: CTRL-C * - オペレータ待機モード: CTRL-C * - インサートモード: CTRL-O * - コマンドラインモード: CTRL-C * - -コマンドラインモードでは、入力途中のコマンドが CTRL-C によって破棄されます。ビ -ジュアルモードとオペレータ待機モードでは、CTRL-C によってモードが停止します。 -インサートモードでは、CTRL-O を使ってコマンドを実行してからインサートモードに -戻ります。 -CTRL-O は一つのコマンドに対してのみ機能します。複数のコマンドを実行したい場合 -は、それらを関数に入れて、その関数を呼んでください。例: > - - :amenu Mine.Next\ File :call <SID>NextFile()<CR> - :function <SID>NextFile() - : next - : 1/^Code - :endfunction - -このメニュー項目は、":next" で引数リストの次のファイルに移動し、"Code" で始ま -る行を検索します。 -関数名の前にある <SID> はスクリプトIDです。関数がスクリプトの中に限定されるよ -うになります。複数のスクリプトファイルで関数の名前が重複してしまう問題を避ける -ことができます。|<SID>| 参照。 - - -サイレントメニュー ------------------- - -メニューは {keys} を実際に入力したかのように実行されます。":" コマンドであれば -コマンドラインにエコーされたコマンドが表示されます。そのコマンドが長ければ、 -hit-Enter プロンプトが表示されます。そんなのはうっとうしいですよね。 -これはメニューをサイレントにすることで解決できます。それには <silent> 引数を指 -定します。例えば、上の例の NextFile() を呼び出してみます。メニューを実行する -と、コマンドラインには次のような表示がでます: - - :call <SNR>34_NextFile() ~ - -このような表示をなくすには、最初の引数として "<silent>" を指定します: > - - :amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR> - -"<silent>" の使いすぎに注意してください。コマンドが短いならそれは必要ありませ -ん。誰かのためにメニューを作る場合、実行されたコマンドが表示されるようになって -いれば、マウスを使わない場合はどのように入力すればいいかのヒントになります。 - - -メニューの一覧 --------------- - -{keys} を指定せずに menu コマンドを使うと、定義されたメニューの一覧を表示でき -ます。{menu-item} やその一部を指定することで、特定の項目だけを表示できます。 -例: > - - :amenu - -すべてのメニューが表示されます。とっても長い一覧が表示されます。メニューの名前 -を指定して短い一覧を表示したほうがいいでしょう: > - - :amenu Edit - :amenu 編集(E) - -すべてのモードの "Edit" メニューの項目だけが表示されます。インサートモードのメ -ニュー項目を一つだけ表示するには次のようにします: > - - :imenu Edit.Undo - :imenu 編集(E).取り消す(U) - -名前は正しく指定する必要があります。大文字と小文字は区別されます。ただし、アク -セラレータ指定のための '&' は省略できます。<Tab> と、その後に続く文字列も同様 -に省略できます。 - - -メニューの削除 --------------- - -メニューを削除するには一覧表示と同じようなコマンドを使います。ただし、"menu" -ではなく "unmenu" を使います。":menu" は ":unmenu" になり、":nmenu" は -":nunmenu" になります。インサートモードの "Tools.Make" を削除するには次のよう -にします: > - - :iunmenu Tools.Make - :iunmenu ツール(T).メイク(M) - -メニューの名前を指定すると、その中の項目もすべて削除されます。例: > - - :aunmenu Syntax - :aunmenu シンタックス(S) - -シンタックスメニューとその中の項目がすべて削除されます。 - -============================================================================== -*42.3* その他いろいろ - -'guioptions' のフラグを設定することでメニューの表示を変更できます。初期設定で -は以下の "M" 以外のすべてのフラグが設定されています。フラグは次のようなコマン -ドで外すことができます: > - - :set guioptions-=m -< - m 外すとメニューバーが非表示になります。 - - M 追加すると標準メニューがロードされなくなります。 - - g 外すと非アクティブなメニュー項目は灰色表示にはならず非 - 表示になります。(そうならないシステムもあります。) - - t 外すとティアオフ機能が無効になります。 - -メニューの一番上に表示される点線はセパレータではありません。その項目を選択する -と、メニューは "ティアオフ(切り離し)"、つまり別ウィンドウで表示されます。これ -をティアオフメニューと呼びます。同じメニュー項目を頻繁に使う場合に便利です。 - -メニュー項目の翻訳については |:menutrans| を参照してください。 - -メニューはマウスで選択するものなので、":browse" コマンドを使って、ファイルを選 -択できるようにすると便利です。また、":confirm" を使って、エラーメッセージの代 -わりにダイアログを表示するのもいいでしょう (例えばカレントバッファに変更がある -状態で何かをする場合など)。この二つのコマンドは同時に使用できます: > - - :amenu File.Open :browse confirm edit<CR> - -":browse" を使うと、開くファイルを選択するためのファイルブラウザが表示されま -す。":confirm" を使うと、カレントバッファに変更があった場合にポップアップダイ -アログが表示され、それを保存するか、破棄するか、コマンドをキャンセルするかを選 -択できます。 -confirm() 関数や inputdialog() 関数を使ってもっと複雑な処理をすることもできま -す。標準メニューにいくつか例があります。 - -============================================================================== -*42.4* ツールバーとポップアップメニュー - -特殊なメニューが二つあります。ToolBar (ツールバー) と PopUp (ポップアップ) で -す。これらの名前で始まるメニュー項目はメニューバーに表示されません。 - - -ツールバー ----------- - -ツールバーは 'guioptions' オプションに "T" フラグが含まれている場合のみ表示さ -れます。 -ツールバーではテキストの代わりにアイコンが表示されます。例えば、"ToolBar.New" -という {menu-item} はツールバーの "New" アイコンとして表示されます。 -Vim には 28 個のアイコンが組み込まれています。その一覧は |builtin-tools| にあ -ります。ほとんどのアイコンは標準ツールバーで使われています。それらの項目の動作 -は変更可能です (標準メニューの初期化後に変更できます)。 -標準アイコン以外の画像を使ったり、新しい項目を追加することもできます。例えば、 -次のコマンドで新しい項目を追加できます: > - - :tmenu ToolBar.Compile Compile the current file - :amenu ToolBar.Compile :!cc % -o %:r<CR> - -アイコンは別途作成する必要があります。MS-Windows では "Compile.bmp" という名前 -の bitmap 形式の画像を使います。Unix では "Compile.xpm" という名前の XPM 形式 -の画像を使います。サイズは 18x18 ドットにしてください。MS-Windows では他のサイ -ズでも構いませんが、きれいには表示されません。 -画像は、'runtimepath' の "bitmaps" ディレクトリに入れてください。例えば、Unix -なら "~/.vim/bitmaps/Compile.xpm" などです。 - -ツールバーの各項目にはツールチップを設定できます。ツールチップとは、機能を説明 -するための短かいテキストです。例えば "ファイルを開く" といったものです。項目の -上にマウスポインタを置いてしばらく待つと表示されます。画像だけではどのような機 -能かわからない場合に便利です。 -例: > - - :tmenu ToolBar.Make Run make in the current directory -< - Note: - 大文字/小文字に注意してください。"Toolbar" と "toolbar" はどちらも - "ToolBar" とは区別されます。 - -ツールチップを削除するには |:tunmenu| コマンドを使います。 - -'toolbar'オプションを設定すると、画像の代わりに文字列を表示したり、文字列と画 -像の両方を表示したりできます。テキストの表示は場所を取るので、ほとんどの人は画 -像だけを表示しています。 - - -ポップアップメニュー --------------------- - -ポップアップメニューはマウスポインタのある場所に表示されるメニューです。 -MS-Windows ではマウスの右クリックで表示し、左クリックで項目を選択します。Unix -では右ボタンを押したままにして使います。 -ポップアップメニューは 'mousemodel' が "popup" か "popup_setpos" のどちらかに -設定されている場合にだけ表示されます。両者の違いは、"popup_setpos" ならマウス -ポインタの場所にカーソルが移動するという点です。選択中のテキストをクリックした -場合はその選択範囲は変更されずにそのまま使われます。テキストの選択中に他の場所 -をクリックした場合は選択が解除されます。 -ポップアップメニューはモード別になっています。普通のメニューのように、他のモー -ドの項目が灰色表示されるということはありません。 - -生命、宇宙、その他もろもろの答えは? *42* -この問の真意を知っていた唯一の人物、ダグラス・アダムズは残念ながら他界しまし -た。それで死の答えはなんなんだろう... - -============================================================================== - -次章: |usr_43.txt| ファイルタイプを使う - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_43.jax b/runtime.old/doc/usr_43.jax deleted file mode 100644 index f5c7a42c2..000000000 --- a/runtime.old/doc/usr_43.jax +++ /dev/null @@ -1,171 +0,0 @@ -*usr_43.txt* For Vim バージョン 7.3. Last change: 2008 Dec 28 - - VIM USER MANUAL - by Bram Moolenaar - - ファイルタイプを使う - - -C プログラムやシェルスクリプトなどの特定の種類のファイルを編集するときに、よく -使うオプション設定やマップがあると思います。それを毎回手作業で設定するのは面倒 -ですよね。この章ではそれを自動化する方法を説明します。 - -|43.1| ファイルタイププラグイン -|43.2| ファイルタイプを追加する - -次章: |usr_44.txt| 構文ファイルを作成する -前章: |usr_42.txt| 新しいメニューを追加する -目次: |usr_toc.txt| - -============================================================================== -*43.1* ファイルタイププラグイン *filetype-plugin* - -ファイルタイププラグインの使用方法については既に |add-filetype-plugin| で説明 -しました。しかし、標準では最小限の設定しかされないので、それだけでは物足りない -と思います。例えば C ファイルを開いたときに、'softtabstop' オプションを 4 に設 -定したり、三行コメントを挿入するためのマップを定義したりすると便利かもしれませ -ん。2 ステップで設定できます。 - - *your-runtime-dir* -1. 自分のランタイムディレクトリを作成する。Unix なら普通は "~/.vim" です。その - ディレクトリの中に "ftplugin" ディレクトリを作成します: > - - mkdir ~/.vim - mkdir ~/.vim/ftplugin -< - Unix 以外のシステムでは、'runtimepath' オプションを見て、"ftplugin" ディレ - クトリが検索される場所を確認してください: > - - set runtimepath - -< 普通は最初のディレクトリ (最初のカンマの前) を使います。初期設定以外のディ - レクトリを使いたい場合は、|vimrc| ファイルの中で 'runtimepath' オプションを - 設定してディレクトリを追加してください。 - -2. "~/.vim/ftplugin/c.vim" を作成して設定を書きます: > - - setlocal softtabstop=4 - noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> - -そして、C ファイルを開いてみてください。'softtabstop' オプションが 4 に設定さ -れていますね。しかし、他のファイルを開くと初期設定の 0 にリセットされます。そ -れは ":setlocal" コマンドが使われているからです。このコマンドはバッファの -'softtabstop' オプションだけを設定します。他のバッファを開くと、開いたバッファ -用の設定が使用されます。新しいバッファの設定には、初期設定、または最後に -":set" コマンドで設定された値が使われます。 - -同様に、"\c" マップも他のバッファを開くと見えなくなります。":map <buffer>" コ -マンドを使うと、カレントバッファの中だけで使えるマップを作成できます。これは -":map!" や ":vmap" などの他のマップコマンドでも同様です。マップの中の -|<LocalLeader>| は "maplocalleader" 変数の値で置き換えられます。 - -ファイルタイププラグインの例はこのディレクトリで探すことができます: > - - $VIMRUNTIME/ftplugin/ - -ファイルタイププラグインの作成方法の詳細は |write-plugin| を参照してください。 - -============================================================================== -*43.2* ファイルタイプを追加する - -Vim がファイルタイプを認識しない場合は、設定を追加してください。まず自分用のラ -ンタイムディレクトリを用意する必要があります。上述の |your-runtime-dir| を参照 -してください。 - -"filetype.vim" というファイルを作成してファイルタイプ用の自動コマンドを設定し -ます。(自動コマンドは |40.3| で説明されています。) 例: > - - augroup filetypedetect - au BufNewFile,BufRead *.xyz setf xyz - augroup END - -ファイル名が ".xyz" で終わるすべてのファイルが "xyz" ファイルタイプとして認識 -されるようになります。":augroup" コマンドを使って自動コマンドを -"filetypedetect" グループに置いています。こうすることで、ファイルタイプを認識 -するための自動コマンドを ":filetype off" で削除できるようになります。"setf" コ -マンドは 'filetype' を指定されたタイプに設定します。ただし、設定済みの場合は変 -更しません。これによってファイルタイプが二重に設定されないようになっています。 - -ファイル名にマッチするパターンはいろいろなものが使えます。ディレクトリ名を含め -ることもできます。|autocmd-patterns| 参照。例えば、"/usr/share/scripts" にある -ファイルが拡張子に関係なくすべて "ruby" ファイルであるなら、次のような設定を追 -加します: > - - augroup filetypedetect - au BufNewFile,BufRead *.xyz setf xyz - au BufNewFile,BufRead /usr/share/scripts/* setf ruby - augroup END - -しかし、/usr/share/scripts/README.txt を開いたとき、それは ruby ファイルではあ -りえませんよね。"*" で終わるパターンの問題は、多くのファイルにマッチしすぎてし -まうことです。この問題を避けるには、'runtimepath' の最後に指定されたディレクト -リに "filetype.vim" を置きます。例えば Unix なら "~/.vim/after/filetype.vim" -などです。 -では、~/.vim/filetype.vim にテキストファイルの検出を設定します: > - - augroup filetypedetect - au BufNewFile,BufRead *.txt setf text - augroup END - -このファイルは 'runtimepath' の最初に見つかります。そして、最後に見つかるファ -イル "~/.vim/after/filetype.vim" の中で次の設定をします: > - - augroup filetypedetect - au BufNewFile,BufRead /usr/share/scripts/* setf ruby - augroup END - -処理の流れは次のようになります。Vim は 'runtimepath' の各ディレクトリから -"filetype.vim" を探します。最初に "~/.vim/filetype.vim" が見つかります。*.txt -を処理する自動コマンドがここで定義されます。次に Vim は $VIMRUNTIME にある -filetype.vim を見つけます ($VIMRUNTIME は 'runtimepath' の中程にあります)。最 -後に ~/.vim/after/filetype.vim が見つかり、/usr/share/scripts の ruby ファイル -を認識するための自動コマンドが追加されます。 -/usr/share/scripts/README.txt を開くと、定義された順番で自動コマンドがチェック -されます。*.txt というパターンがマッチするので、"setf text" が実行され、ファイ -ルタイプが "text" に設定されます。ruby 用のパターンもマッチするので、"setf -ruby" が実行されます。しかし、'filetype' は既に設定されているので何も起こりま -せん。 -/usr/share/scripts/foobar を開くと、同様に自動コマンドがチェックされます。ruby -のパターンだけがマッチするので、"setf ruby" が実行され、'filetype' が ruby に -設定されます。 - - -内容を見て判断する ------------------- - -ファイル名からはファイル種別を判断できなくても、内容で判断できる場合がありま -す。例えば、多くのスクリプトファイルは次のような行で始まります: - - #!/bin/xyz ~ - -このスクリプトを認識するには、"scripts.vim" というファイルをランタイムディレク -トリに作ります (filetype.vim と同じ場所です)。中身は次のようになります: > - - if did_filetype() - finish - endif - if getline(1) =~ '^#!.*[/\\]xyz\>' - setf xyz - endif - -最初に did_filetype() を使って、既にファイル名からファイルタイプが認識されてい -るかどうかを確認し、不要ならファイル内容のチェックを実行しないようにします。こ -れは、"setf" コマンドが意味をなさないときに、ファイルのチェックによって時間を -無駄に消費しないためです。 -scripts.vim は標準ファイルの filetype.vim で定義された自動コマンドによって読み -込まれます。そのため、次の順番でチェックが実行されます: - - 1. 'runtimepath' の $VIMRUNTIME の前にある filetype.vim - 2. $VIMRUNTIME/filetype.vim の前半部分 - 3. 'runtimepath' のすべての scripts.vim - 4. $VIMRUNTIME/filetype.vim の後半部分 - 5. 'runtimepath' の $VIMRUNTIME の後にある filetype.vim - -もっと複雑なことがしたい場合は、すべてのファイルにマッチする自動コマンドを追加 -して、スクリプトを読み込むなり関数を実行するなりしてファイルの内容をチェックし -てください。 - -============================================================================== - -次章: |usr_44.txt| 構文ファイルを作成する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_44.jax b/runtime.old/doc/usr_44.jax deleted file mode 100644 index e8fc3984f..000000000 --- a/runtime.old/doc/usr_44.jax +++ /dev/null @@ -1,711 +0,0 @@ -*usr_44.txt* For Vim バージョン 7.3. Last change: 2008 Dec 28 - - VIM USER MANUAL - by Bram Moolenaar - - 構文ファイルを作成する - - -Vim は 200 種類以上ものファイルを強調表示できます。強調表示されないファイルを -見つけた場合は、本章を読んで、ファイルを強調表示する方法を調べてください。リ -ファレンスマニュアルの |:syn-define| も参照してください。 - -|44.1| 基本的な syntax コマンド -|44.2| キーワード -|44.3| マッチ -|44.4| リージョン -|44.5| 構文アイテムを入れ子にする -|44.6| グループの並び -|44.7| その他の引数 -|44.8| クラスタ -|44.9| 他の構文ファイルをインクルードする -|44.10| シンクロナイズ -|44.11| 構文ファイルをインストールする -|44.12| ポータブルな文法定義ファイル - -次章: |usr_45.txt| 言語を選択する -前章: |usr_43.txt| ファイルタイプを使う -目次: |usr_toc.txt| - -============================================================================== -*44.1* 基本的な syntax コマンド - -既存の構文ファイルを土台にすることで多くの時間を節約できます。望みのものに近い -言語の構文ファイルを $VIMRUNTIME/syntax から探してください。それらのファイルを -見れば、構文ファイルの基本的な構造がわかると思います。内容を理解するには本章を -読んでください。 - -基本的なことから説明します。構文定義を開始する前に、古い定義をクリアする必要が -あります: > - - :syntax clear - -最終的な構文ファイルではこのコマンドは必要ありませんが、いろいろと試したいとき -には便利です。 - -本章の説明はかなり簡略化されています。構文ファイルを書いて、それを他人に使って -もらう場合は、本章を最後まで読んで詳細を理解してください。 - - -定義された構文アイテムを一覧表示する ------------------------------------- - -現在定義されている構文アイテムを表示するには、次のコマンドを使います: > - - :syntax - -実際に定義されている構文アイテムを確認することができます。新しい構文ファイルを -作っていて、いろいろと試しているときに便利です。また、それぞれの構文アイテム -は、実際の表示と同じ色で表示されるので、何がどうなっているかも確認できます。 -特定の構文グループのアイテムを一覧表示するには次のようにします: > - - :syntax list {group-name} - -これはクラスタ (|44.8|参照) を一覧表示することもできます。その場合は名前に @ -を付けてください。 - - -大文字と小文字の区別 --------------------- - -Pascal などの言語は大文字と小文字を区別しません。C などの言語は大文字と小文字 -を区別します。次のコマンドで区別するかしないかを指定できます: > - :syntax case match (大文字/小文字を区別する) - :syntax case ignore (大文字/小文字を区別しない) - -"match" を指定すると大文字と小文字は区別されます。その場合、"int" と "Int" と -"INT" はそれぞれ違うものになります。"ignore" を指定した場合は、"Procedure" と -"PROCEDURE" と "procedure" は同じ扱いになります。 -":syntax case" コマンドは構文ファイルのどこにでも書くことができ、それ移行の構 -文定義に作用します。ほとんどの場合、":syntax case" コマンドは構文ファイルに一 -つだけ書きますが、大文字と小文字を区別する要素と区別しない要素を両方もつような -特殊な言語の場合には、ファイルのいたるところで ":syntax case" コマンドを書くこ -ともできます。 - -============================================================================== -*44.2* キーワード - -最も基本的な構文要素はキーワードです。次のように定義します: > - - :syntax keyword {group} {keyword} ... - -{group} は構文グループの名前です。":highlight" コマンドを使うことで {group} に -色を割り当てることができます。{keyword} は実際のキーワードです。いくつか例を示 -します: > - - :syntax keyword xType int long char - :syntax keyword xStatement if then else endif - -"xType" と "xStatement" がグループ名です。習慣的に、グループ名の先頭にはファイ -ルタイプ名が付けられます。この例では x 言語 (そういう言語があるのではなく単に -eXample の x) の構文を定義しています。例えば "csh" スクリプト用の構文ファイル -なら "cshType" という名前になります。つまり、'filetype' の値と同じものを先頭に -付けます。 -この例では "int" と "long" と "char" が同じ方法で強調表示され、"if" と "then" -と "else" と "endif" が別の同じ方法で強調表示されます。次に、x グループ名と -Vim の標準名を関連付ける必要があります。次のようにします: > - - :highlight link xType Type - :highlight link xStatement Statement - -"xType" を "Type" で強調表示し、"xStatement" を "Statement" で強調表示します。 -標準名については |group-name| を参照してください。 - - -特殊なキーワード ----------------- - -キーワードとして使われる文字は 'iskeyword' オプションに指定されていなければな -りません。それ以外の文字を使った場合、その単語は決してマッチしません。Vim はそ -のことについて警告メッセージを出しません。 -例題の x 言語は '-' 文字をキーワードとして使えます。それは次のように設定しま -す: > - - :setlocal iskeyword+=- - :syntax keyword xStatement when-not - -":setlocal" コマンドを使って、カレントバッファだけ 'iskeyword' を変更していま -す。この設定によって "w" や "*" などのコマンドの動作も変更されます。動作を変更 -したくない場合は、キーワードではなくマッチを使ってください(次節で説明します)。 - -x 言語では短縮形も使えます。例えば、"next" は "n"、"ne"、"nex" に短縮できま -す。次のコマンドでそれを定義できます: > -> - :syntax keyword xStatement n[ext] - -これは "nextone" にはマッチしません。キーワードは常に単語全体にのみマッチしま -す。 - -============================================================================== -*44.3* マッチ - -もう少し複雑なものを定義してみましょう。普通の識別子にマッチさせるため、マッチ -構文アイテムを定義します。次の例は、すべての文字が小文字の単語にマッチします: -> - :syntax match xIdentifier /\<\l\+\>/ -< - Note: - キーワードは他の構文アイテムより優先されます。"if" や "then" などの - キーワード (上述の ":syntax keyword" コマンドで定義したもの) は、 - xIdentifier にもマッチしますが、キーワードとして扱われます。 - -最後の部分はパターンです。これは検索で使用するものと同じです。// を使ってパ -ターンを囲みます (":substitute" コマンドと同じ)。+ や " など、他の文字を使うこ -ともできます。 - -次はコメント用のマッチを定義してみます。x 言語では "#" から行末までがコメント -になります: > - - :syntax match xComment /#.*/ - -すべての検索パターンが使えるので、マッチを使うことで非常に複雑なものを強調表示 -できます。検索パターンについては |pattern| を参照してください。 - -============================================================================== -*44.4* リージョン - -例題の x 言語では、文字列をダブルクオートで囲みます。文字列を強調表示するため -にリージョン (領域) を定義します。それにはリージョンの開始 (ダブルクオート) と -リージョンの終了 (ダブルクオート) が必要です。定義は次のようになります: > - - :syntax region xString start=/"/ end=/"/ - -"start" と "end" に指定したパターンは、リージョンの開始と終了を探すために使用 -されます。しかし次のような文字列があったらどうなるでしょうか? - - "A string with a double quote (\") in it" ~ - -これはうまくいきません。文字列の途中のダブルクオートによってリージョンが終了し -てしまいます。文字列中のエスケープされたダブルクオートをスキップするように指定 -する必要があります。それには "skip" キーワードを使います: > - - :syntax region xString start=/"/ skip=/\\"/ end=/"/ - -検索パターンの中ではバックスラッシュが特殊な文字として使われるので、連続した二 -つのバックスラッシュが一つのバックスラッシュにマッチします。 - -マッチではなくリージョンを使うのはどんな場面しょうか?主な違いは、マッチは一つ -のパターンであり、そのパターン全体がマッチするということです。リージョンは -"start" パターンがマッチするとすぐに開始されます。"end" パターンが見つかるかど -うかは関係ありません。つまり、構文アイテムが "end" パターンにマッチすることに -依存している場合はリージョンは使えません。それが大丈夫なら、リージョンを定義す -る方が簡単な場合が多々あります。また、次の節でも述べるように、構文アイテムを入 -れ子にする場合もリージョンが適しています。 - -============================================================================== -*44.5* 構文アイテムを入れ子にする - -次のようなコメントがあります: - - %Get input TODO: Skip white space ~ - -コメントを青色で強調表示し、その中の TODO を黄色の大きな字で強調表示してみま -しょう。それには、次のような構文グループを定義します: > - - :syntax keyword xTodo TODO contained - :syntax match xComment /%.*/ contains=xTodo - -一行目の "contained" 引数は、そのキーワードが他の構文アイテムの中にのみ出現す -ることを示しています。二行目の "contains=xTodo" は、その構文アイテムの中に -xTodo が出現することを示しています。結果、コメント全体は "xComment" にマッチし -て青色になり、その中の TODO は xTodo にマッチして黄色になります (xTodo に対す -る強調表示が設定してあるなら)。 - - -入れ子の再帰 ------------- - -x 言語では波カッコでコードブロックを表現します。コードブロックの中にはさらに別 -のコードブロックを入れることができます。これは次のように定義できます: > - - :syntax region xBlock start=/{/ end=/}/ contains=xBlock - -例えば、次のようなテキストがあった場合: - - while i < b { ~ - if a { ~ - b = c; ~ - } ~ - } ~ - -まず、一行目の { で一つ目の xBlock が開始します。二行目には別の { があります。 -そこは xBlock の中で、xBlock は自身を含むことができるので、二つ目の xBlock が -開始します。したがって、"b = c" の行は第二レベルの xBlock リージョンの中という -ことになります。次の行には } があり、これはリージョンの末尾を示すパターンに -マッチするので、これによって二つ目の xBlock が閉じます。この } は二つ目の -xBlock リージョンの中の文字なので、一つ目の xBlock リージョンからは隠されま -す。そして、最後の } によって一つ目の xBlock リージョンが閉じます。 - - -末尾をキープする ----------------- - -次の二つの構文アイテムを見てみましょう: > - - :syntax region xComment start=/%/ end=/$/ contained - :syntax region xPreProc start=/#/ end=/$/ contains=xComment - -% から行末までをコメントとして定義し、# から行末までをプリプロセッサ指令として -定義しています。プリプロセッサ行にはコメントを入れることができるので、プリプロ -セッサの定義には "contains=xComment" 引数が指定されています。では、次のような -テキストで何が起こるか見てみましょう: - - #define X = Y % Comment text ~ - int foo = 1; ~ - -このテキストは、二行目も xPreProc として強調表示されます。プリプロセッサ指令は -行末で終るものであり、そのために "end=/$/" と指定しました。何が間違っていたの -でしょうか? -問題は内包されたコメントにあります。コメントは % で始まり、行末で終ります。コ -メントが終るとプリプロセッサ構文に戻りますが、それは行末が処理された後なので、 -次の行も含まれてしまうのです。 -この問題を回避し、内包された構文が改行を消費しないようにするには、"keepend" 引 -数を使います。これで、行末への二重マッチに対応できます: > - - :syntax region xComment start=/%/ end=/$/ contained - :syntax region xPreProc start=/#/ end=/$/ contains=xComment keepend - - -複数アイテムの内包 ------------------- - -"contains=" 引数には「すべての構文アイテム」を指定することができます。例: > - - :syntax region xList start=/\[/ end=/\]/ contains=ALL - -xList にはすべての構文アイテムが内包されます。「すべて」は自分自身を含みます -が、同じ位置のものは除外されます (無限ループを避けるため)。 -一部のグループだけを除外するような指定もできます。つまり、指定したグループ以外 -のグループを内包できます: > - - :syntax region xList start=/\[/ end=/\]/ contains=ALLBUT,xString - -"TOP" を指定すると、"contained" 引数を持たないすべてのアイテムが対象になりま -す。"CONTAINED" を指定すると、"contained" 引数を持つアイテムだけが対象になりま -す。詳しくは |:syn-contains| を参照してください。 - -============================================================================== -*44.6* グループの並び - -x 言語には次のような形式のステートメントがあります: - - if (condition) then ~ - -この三つのアイテムを別々に強調表示します。ただし、"(condition)" と "then" は他 -の場所にも出現し、そこでは別の方法で強調表示されることもあります。次のように定 -義します: > - - :syntax match xIf /if/ nextgroup=xIfCondition skipwhite - :syntax match xIfCondition /([^)]*)/ contained nextgroup=xThen skipwhite - :syntax match xThen /then/ contained - -"nextgroup" 引数で、次に来るアイテムを指定します。これは (マッチするための) 必 -須条件にはなりません。指定されたアイテムが見つからなかった場合は何も起こりませ -ん。例えば、次のテキストの場合: - - if not (condition) then ~ - -"if" は xIf にマッチします。"not" は nextgroup に指定された xIfCondition に -マッチしません。したがって、"if" だけが強調表示されます。 - -"skipwhite" 引数を指定すると、次のアイテムとの間に空白 (スペースとタブ) をはさ -むことができます。同様に、"skipnl" を指定すれば、次のアイテムとの間に改行をは -さむことができ、"skipempty" を指定すれば、空行をはさむことができます。ただし、 -"skipnl" は空行をスキップしないので注意してください。改行の後で何かにマッチす -る必要があります。 - -============================================================================== -*44.7* その他の引数 - -MATCHGROUP ----------- - -リージョンは、リージョン全体が同じグループで強調表示されます。例えば、() で囲 -まれたテキストを xInside グループで強調表示するため、次のように定義します: > - - :syntax region xInside start=/(/ end=/)/ - -このときに、カッコだけを別の方法で強調表示することを考えます。複雑な方法を使っ -て定義することもできますが、"matchgroup" 引数を使う方法もあります。 -"matchgroup" を指定すると、リージョンの start と end の部分を別の強調グループ -で表示できます (この例では xParen): > - - :syntax region xInside matchgroup=xParen start=/(/ end=/)/ - -"matchgroup" 引数は、その引数より後ろに指定された start と end に対して適用さ -れます。上の例では start と end の両方が xParen で強調表示されます。end を -xParenEnd で強調表示する場合は次のようにします: > - - :syntax region xInside matchgroup=xParen start=/(/ - \ matchgroup=xParenEnd end=/)/ - -"matchgroup" を使うと、内包されたアイテムが start と end の部分にマッチしなく -なります。次の "transparent" の例題ではそれを利用しています。 - - -TRANSPARENT (透過) ------------------- - -例えば C 言語のファイルで、"while" の後の () と、"for" の後の () を別の方法で -強調表示してみます。両方とも () を入れ子にできて、それが外側の () と同じ方法で -強調表示されるようにします。() の強調表示は ) がマッチしたところでストップしま -す。それには、例えば次のようにします: > - - :syntax region cWhile matchgroup=cWhile start=/while\s*(/ end=/)/ - \ contains=cCondNest - :syntax region cFor matchgroup=cFor start=/for\s*(/ end=/)/ - \ contains=cCondNest - :syntax region cCondNest start=/(/ end=/)/ contained transparent - -cWhile と cFor には別の強調表示が使われます。cCondNest は両方に出現し、自身を -内包しているアイテムと同じ強調グループで強調表示されます。"transparent" 引数に -よってこのような動作になります。 -この例では、"matchgroup" 引数に自分自身のグループを指定しています。その理由 -は、matchgroup を使うことで、内包されたアイテムが start の部分にマッチしないと -いう副作用が発生するからです。それを利用して cCondNest グループが "while" や -"for" の直後の ( にマッチしないようにしています。もし直後の ( にマッチしてしま -うと、cCondNest は ) までのすべてのテキストにマッチしてしまい、その後ろから -リージョンが再開することになってしまいます。matchgroup を指定することで、 -cCondNest は start の後、つまり最初の ( より後でマッチするようになります。 - - -オフセット ----------- - -"if" の後ろにある ( と ) の間のテキストをリージョンとして定義します。ただし、 -"if" と () 自体はリージョンに含めたくありません。そのような場合はオフセットを -使います。例: > - - :syntax region xCond start=/if\s*(/ms=e+1 end=/)/me=s-1 - -start パターンには "ms=e+1" というオフセットが指定されています。"ms" は Match -Start という意味です。マッチの開始位置のオフセットを設定できます。通常は、パ -ターンがマッチした場所がマッチの開始位置になります。"e+1" はパターンがマッチし -たテキストの末尾からさらに一つ進んだ場所を示します。 -end パターンには "me=s-1" というオフセットが指定されています。"me" は Match -End という意味です。"s-1" はパターンにマッチしたテキストの先頭から一つ戻った場 -所を示します。例えば、次のテキストでは: - - if (foo == bar) ~ - -"foo == bar" の部分だけが xCond で強調表示されます。 - -オフセットの詳細については |:syn-pattern-offset| を参照してください。 - - -ONELINE -------- - -"oneline" 引数は、リージョンが複数行にまたがらないことを示します。例: > - - :syntax region xIfThen start=/if/ end=/then/ oneline - -これは "if" で始まって "then" で終るリージョンを定義しています。ただし、"if" -と "then" が同じ行にない場合はマッチしません。 - - Note: - "oneline" を使用した場合、end パターンが同じ行でマッチしない限り、リー - ジョンは開始されません。"oneline" がない場合は、end パターンがマッチす - る場所があるかどうかはチェックされません。その場合、たとえ end パター - ンにマッチする場所がなくても、リージョンは開始されます。 - - -行の継続と継続の回避 --------------------- - -さて、少し複雑になってきました。次はプリプロセッサ行を定義してみます。プリプロ -セッサ行は行頭の # で始まり、行末まで続きます。行末が \ で終っていた場合は、次 -の行まで継続します。それには、継続パターンにマッチする構文アイテムを内包するよ -うに指定します: > - - :syntax region xPreProc start=/^#/ end=/$/ contains=xLineContinue - :syntax match xLineContinue "\\$" contained - -通常は xPreProc は単一行にマッチしますが、内包された xLineContinue によって次 -の行まで継続するようになります。例えば、次のテキストは二行ともマッチします: - - #define SPAM spam spam spam \ ~ - bacon and spam ~ - -これは期待した動作ですね。あるいは、内包されたパターンに "excludenl" を指定す -ることによって、リージョンを単一行に収めることもできます。例えば、xPreProc の -中で、行末に "end" があったときに、それを強調表示したいような場合に使います。 -xPreProc が (xLineContinueのときのように) 次の行に継続しないようにするには、次 -のように "excludenl" を使います: > - - :syntax region xPreProc start=/^#/ end=/$/ - \ contains=xLineContinue,xPreProcEnd - :syntax match xPreProcEnd excludenl /end$/ contained - :syntax match xLineContinue "\\$" contained - -"excludenl" はパターン指定の前に置いてください。"xLineContinue" には -"excludenl" が指定されていないので、最初の例と同様、マッチすることによって -xPreProc リージョンが拡張されます。 - -============================================================================== -*44.8* クラスタ - -構文ファイルを書いてみると、実にたくさんの構文グループを作成するということに気 -付くと思います。必要なら、クラスタと呼ばれるものを定義して複数の構文グループを -ひとまとめにすることができます。 -例えば、for ループ、if 文、while ループ、関数、などを持った言語があります。そ -れぞれは数値や識別子など、同じ構文要素を含むことができます。それを次のように定 -義してみます: > - - :syntax match xFor /^for.*/ contains=xNumber,xIdent - :syntax match xIf /^if.*/ contains=xNumber,xIdent - :syntax match xWhile /^while.*/ contains=xNumber,xIdent - -同じ "contains=" を何度も書かなければなりません。内包されるアイテムを追加する -ときは、その変更を三回繰り返すことになります。クラスタを使って複数の構文グルー -プをひとまとめにすることで、このような指定が簡単になります。 -上の三つのグループが内包している二つのアイテムをクラスタとして定義するには、次 -のコマンドを使います: > - - :syntax cluster xState contains=xNumber,xIdent - -クラスタは他の構文アイテムの中で使われます。使い方は普通の構文アイテムと同じで -す。名前の先頭に @ を付けてください。例の三つの構文アイテムは次のように定義で -きます: > - - :syntax match xFor /^for.*/ contains=@xState - :syntax match xIf /^if.*/ contains=@xState - :syntax match xWhile /^while.*/ contains=@xState - -クラスタに構文グループを追加するには "add" 引数を使います: > - - :syntax cluster xState add=xString - -クラスタから構文グループを取り除くこともできます: > - - :syntax cluster xState remove=xNumber - -============================================================================== -*44.9* 他の構文ファイルをインクルードする - -C++ 言語の構文は C 言語のスーパーセットです。構文ファイルを二つも書くのは避け -たいので、次のコマンドを使って、C++ 構文ファイルの中で C 構文ファイルを読み込 -みます: > - - :runtime! syntax/c.vim - -":runtime!" コマンドは 'runtimepath' の中からすべての "syntax/c.vim" を探しま -す。そして、C ファイルを開いたときと同様に、C++ における C の部分の構文が定義 -されます。c.vim 構文ファイルを入れ替えていたり、拡張ファイルで構文アイテムを追 -加していたりする場合は、それらも読み込まれます。 -C の構文アイテムをロードしたら、C++ 特有の構文アイテムを定義します。例えば、C -にはないキーワードを定義します: > - - :syntax keyword cppStatement new delete this friend using - -コマンドの動作は普通の構文ファイルのときと同じです。 - -次に、Perl 言語を考えてみましょう。Perl スクリプトは二つの異なる部分で構成され -ます。一つは POD 形式のドキュメントセクション、もう一つは Perl で書かれたプロ -グラムです。POD セクションは "=head" で始まり "=cut" で終ります。 -POD 構文の定義を一つのファイルに書き、Perl 構文ファイルの中からそれを使いま -す。":syntax include" コマンドで構文ファイルを読み込むと、その中で定義されてい -る要素がクラスタに格納されます。Perl の場合、次のようなコマンドを使います: > - - :syntax include @Pod <sfile>:p:h/pod.vim - :syntax region perlPOD start=/^=head/ end=/^=cut/ contains=@Pod - -Perl ファイルの中で "=head" が見つかると perlPOD リージョンが開始します。 -perlPOD リージョンは @Pod クラスタを内包しています。リージョンの中では、 -pod.vim 構文ファイルで定義されたトップレベルの構文アイテムがマッチします。 -"=cut" が見つかるとリージョンは終了し、Perl ファイルの構文アイテムに戻ります。 -":syntax include" コマンドで読み込まれたファイル内の ":syntax clear" コマンド -は適切に無視されます。さらに、"contains=ALL" のような引数は同じファイルの構文 -アイテムだけが対象になります。呼び出し元の構文アイテムは対象になりません。 -"<sfile>:p:h/" の部分は、カレントファイル名 (<sfile>) をフルパス (:p) に展開 -し、その head (先端) (:h) を取り出しています。展開結果はファイルのディレクトリ -名になります。つまり、同じディレクトリの pod.vim がインクルードされます。 - -============================================================================== -*44.10* シンクロナイズ (構文解析の同期) - -例えばコンパイラなら話は簡単です。ファイルの先頭から開始して、順番に構文解析し -ていくだけです。しかし Vim では、ユーザーが編集している場所、つまりファイルの -途中から構文解析が開始されます。どのようにして適切な開始位置を決めているので -しょうか。 -秘密は ":syntax sync" コマンドにあります。このコマンドを使って、構文解析の開始 -位置を指定します。例えば、次のコマンドを使うと、C スタイルコメントの開始位置、 -あるいは終了位置が後方検索され、その場所から構文ハイライトが開始されます: > - - :syntax sync ccomment - -引数を指定して動作を調整できます。"minlines" 引数には、後方検索で戻る最小の行 -数を指定します。"maxlines" 引数には、検索される行数の上限を指定します。 -例えば、画面の一番上に表示されている行から、最低でも 10 行前まで調べるようにす -るには、次のようにします: > - - :syntax sync ccomment minlines=10 maxlines=500 - -最小の範囲内で見つからなかった場合は、適切な場所が見つかるまで、さらに戻って調 -べます。ただし、500 行以上は戻りません。 ("maxlines" を大きくすると処理速度が -遅くなります。小さ過ぎるとシンクロナイズに失敗してしまいます。) -シンクロナイズは、スキップ可能な構文アイテムを指定することで、少し高速になりま -す。テキストを実際に表示するときだけ必要な構文アイテムを定義するときに -"display" 引数を指定してください。 -デフォルトでは、検索されたコメントは Comment 構文グループで強調表示されます。 -他の方法で強調表示したい場合は、使用したい構文グループを指定してください: > - - :syntax sync ccomment xAltComment - -プログラミング言語が C スタイルコメントを持っていない場合は、他の方法でシンク -ロナイズします。最も簡単なのは、戻る行数を指定して、その場所から構文解析を試す -方法です。例えば、150 行前に戻って、そこから構文解析を開始するには、次のように -します: > - - :syntax sync minlines=150 - -"minlines" に大きな値を指定すると Vim の動作が遅くなります (特に上方にスクロー -ルする場合など)。 -検索対象になる構文グループを指定することもできます: > - - :syntax sync match {sync-group-name} - \ grouphere {group-name} {pattern} - -{group-name} という構文グループが {pattern} にマッチした場所のすぐ後から開始す -るということを定義します。{sync-group-name} はシンクロナイズ定義の名前です。例 -えば、sh スクリプトでは if 文を "if" で開始し、"fi" で閉じます: - - if [ --f file.txt ] ; then ~ - echo "File exists" ~ - fi ~ - -この構文に対して "grouphere" を定義すると、次のようになります: > - - :syntax sync match shIfSync grouphere shIf "\<if\>" - -"groupthere" 引数を使ってグループの終端を示すパターンを指定します。例えば、 -if/fi グループの終端は次のように定義できます: > - - :syntax sync match shIfSync groupthere NONE "\<fi\>" - -この例では、NONE を指定して、パターンにマッチした場所が特定のリージョンの中で -はないこと、つまりは if ブロックの中ではないことを指定しています。 - -"grouphere" 引数と "groupthere" 引数を指定しないで、マッチやリージョンを定義す -ることもできます。そのようなグループはシンクロナイズのときにスキップされます。 -例えば、次のように定義すると、{} で囲まれた範囲がスキップされます (他のシンク -ロナイズメソッドにマッチする場合でも): > - - :syntax sync match xSpecial /{.*}/ - -シンクロナイズの詳細はリファレンスマニュアルの|:syn-sync|を参照してください。 - -============================================================================== -*44.11* 構文ファイルをインストールする - -新しい構文ファイルを使用する準備ができたら、それを 'runtimepath' の "syntax" -ディレクトリにコピーしてください。Unix なら "~/.vim/syntax" です。 -構文ファイルの名前はファイルタイプ名に ".vim" を付けた名前にします。したがっ -て、x 言語ならファイルのフルパスは次のようになります: - - ~/.vim/syntax/x.vim ~ - -さらに、ファイルタイプが認識されるように設定する必要があります。|43.2| 参照。 - -構文ファイルがうまく動作したら、それを他の Vim ユーザーが利用できるようにして -あげるといいでしょう。まず次のセクションを読んで、構文ファイルが他の環境でも動 -作するようにしてください。そして、Vim のメンテナ <maintainer@vim.org> にメール -を送ってください。ファイルタイプの認識方法の説明もお願いします。よほどのことが -ない限り、Vim のバージョンアップに合わせて取り込まれます。 - - -既存の構文ファイルを拡張する ----------------------------- - -上記は、完全に新しい構文ファイルを作成する場合の説明です。既存の構文ファイルを -使っていて、それに足りない構文アイテムがあるような場合には、それとは別のファイ -ルを使って構文アイテムを追加することができます。ファイルを別にすることで、Vim -をバージョンアップしたときに変更が失われてしまうのを防止します。 -syntax コマンドを自分のファイルに書きます。できる限り既存の構文グループの名前 -を使ってください。例えば、C 構文ファイルに新しい変数タイプを追加するには、次の -ように書きます: > - - :syntax keyword cType off_t uint - -これを、元の構文ファイルと同じ名前で保存します。この場合なら "c.vim" です。そ -のファイルを 'runtimepath' の最後の方にあるディレクトリに置きます。そうするこ -とで、元の構文ファイルよりも後に読み込ませます。Unix なら次の場所に保存します: - - ~/.vim/after/syntax/c.vim ~ - -============================================================================== -*44.12* ポータブルな構文ファイル - -すべての Vim ユーザーが構文ファイルを共有できれば素晴らしいと思いませんか?そ -のためには、構文ファイルはいくつかのガイドラインに従っている必要があります。 - -ファイルの先頭にヘッダを書いてください。構文ファイルの用途、メンテナ、最終更新 -日を書きます。詳細な変更履歴は必要ありません(ほとんどの人はそれを読みません)。 -例: > - - " Vim syntax file - " Language: C - " Maintainer: Bram Moolenaar <Bram@vim.org> - " Last Change: 2001 Jun 18 - " Remark: Included by the C++ syntax. - -他の構文ファイルと同じレイアウトを使ってください。既存の構文ファイルを参考にす -ると時間を節約できます。 - -構文ファイルには分かりやすい名前を付けます。小文字と数字だけを使ってください。 -名前は多くの場所で使うので長くなり過ぎないようにします (構文ファイルの名前 -("name.vim")、'filetype'、b:current_syntax、構文グループの接頭辞 (nameType、 -nameStatement、nameString、etc) などで使います)。 - -最初に "b:current_syntax" をチェックします。これが定義済みなら、他の構文ファイ -ルが 'runtimepath' の前の方でロードされたということです: > - - if exists("b:current_syntax") - finish - endif - -Vim 5.8 との互換性が必要なら次のようにします: > - - if version < 600 - syntax clear - elseif exists("b:current_syntax") - finish - endif - -ファイルの最後で "b:current_syntax" に構文の名前を設定します。ファイルをインク -ルードしている場合、そのファイルの中でも "b:current_syntax" が設定されるので注 -意してください。複数のファイルをインクルードする場合には、"b:current_syntax" -をリセットする必要があるかもしれません。 - -構文ファイルが Vim 5.x でも動作するようにするには、v:version をチェックする必 -要があります。実例は yacc.vim を参照してください。 - -ユーザー設定を変更しないでください。'tabstop' や 'expandtab' などの設定を変更 -してはいけません。そのような設定はファイルタイププラグインの仕事です。 - -マップや短縮入力を定義しないでください。'iskeyword' だけは、キーワードの識別に -どうしても必要なら、設定しても構いません。 - -ユーザーが好みの色を選択できるように、強調表示されるグループの名前に標準とは違 -う名前を付けます。そして、それらを標準の強調グループにリンクします。そうすれば -どのカラースキームでも適切に強調表示できます。標準以外の強調グループを使ってし -まうと、カラースキームによっては正しく強調表示されません。また、ユーザーの環境 -によって背景色が違ったり、色数が 8 色しかない場合もあるので覚えておいてくださ -い。 - -強調グループをリンクするには "hi def link" を使います。そうすることで、ユー -ザーはあなたの構文ファイルがロードされる前の段階で他の強調グループを選択できま -す。例: > - - hi def link nameString String - hi def link nameNumber Number - hi def link nameCommand Statement - ... etc ... - -シンクロナイズで使用しない構文アイテムには "display" 引数を付けてください。上 -方向へのスクロールや CTRL-L の動作が早くなります。 - -============================================================================== - -次章: |usr_45.txt| 言語を選択する - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_45.jax b/runtime.old/doc/usr_45.jax deleted file mode 100644 index f9ef325c1..000000000 --- a/runtime.old/doc/usr_45.jax +++ /dev/null @@ -1,413 +0,0 @@ -*usr_45.txt* For Vim バージョン 7.3. Last change: 2008 Nov 15 - - VIM USER MANUAL - by Bram Moolenaar - - 言語を選択する - - -Vim のメッセージは言語を変更できます。本章では、言語を変更する方法を説明しま -す。様々な言語で書かれたファイルを取り扱う方法も説明します。 - -|45.1| メッセージの言語 -|45.2| メニューの言語 -|45.3| 他のエンコーディングを使う -|45.4| 異なるエンコーディングのファイルを編集する -|45.5| 言語のテキストを入力する - -次章: |usr_90.txt| Vim のインストール -前章: |usr_44.txt| 構文ファイルを作成する -目次: |usr_toc.txt| - -============================================================================== -*45.1* メッセージの言語 - -Vim を起動すると、あなたが使っている言語を知るために環境がチェックされます。ほ -とんどの場合、この処理はうまく動作します。そして、メッセージはあなたの言語で表 -示されます (それが利用可能なら)。現在の言語を確認するには、次のコマンドを使い -ます: > - - :language - -"C" と表示された場合は、デフォルト (英語) が使われています。 - - Note: - 異なる言語を扱えるのは、Vim のコンパイル時にその機能が有効にされた場合 - だけです。機能の有無は、":version" コマンドを実行し、"+gettext" と - "+multi_lang" の表示を確認してください。それが表示されてれば問題ありま - せん。"-gettext" か "-multi_lang" と表示された場合は他の Vim を探して - ください。 - -異なる言語でメッセージを表示する方法はいくつかあります。どの方法を使うかはシス -テムによって違います。 -一つ目は、Vim を起動する前に使用したい言語を環境変数に設定する方法です。Unix -の場合の例: > - - env LANG=de_DE.ISO_8859-1 vim - -この方法は、指定した言語がシステムでサポートされている場合のみ使えます。この方 -法の利点は、GUI や何かのライブラリのメッセージも適切な言語で表示されることで -す。欠点は、Vim を起動する前に環境変数を設定しなければならないことです。Vim の -実行中に言語を変更したい場合は、二つ目の方法を使います: > - - :language fr_FR.ISO_8859-1 - -この方法では言語の名前をいくつか試すことになるかもしれません。システムでサポー -トされていない名前を使うとエラーメッセージが表示されます。翻訳されたメッセージ -が利用可能でない場合はエラーメッセージは表示されません。Vim は静かに英語を選択 -します。 -利用可能な言語の一覧を調べるには、その一覧が入っているディレクトリを探してくだ -さい。私のシステムでは "/usr/share/locale" にあります。"/usr/lib/locale" に -入っているシステムもあります。"setlocale" のマニュアルページにディレクトリの場 -所を示すヒントがあるかもしれません。 -言語の名前は正確に入力してください。大文字と小文字の違いは重要です。"-" と "_" -は間違えやすいので注意してください。 - -メッセージ、編集するテキスト、時間の書式など、それぞれに別の言語を設定できま -す。|:language| 参照。 - - -自分でメッセージを翻訳する --------------------------- - -あなたの言語の翻訳メッセージが用意されていない場合、自分で翻訳することもできま -す。それには、Vim のソースコードと GNU gettext パッケージを入手してください。 -ソースを展開すると、src/po/README.txt に説明が入っています。 -翻訳作業はそれほど難しくありません。プログラマでなくても大丈夫です。しかし当然 -ですが、英語と翻訳先の言語を両方知っている必要はあります。 -納得のいく翻訳ができたら、それを他の人にも提供してもらえないでしょうか。 -vim-online (http://vim.sf.net) にアップロードするか、Vim のメンテナ -<maintainer@vim.org> にメールを送ってください。両方でも構いません。 - -============================================================================== -*45.2* メニューの言語 - -デフォルトのメニューは英語です。メニューが翻訳されていれば、あなたの国の言語で -表示することができます。メッセージと同様、環境が設定してあれば、自動的に適切な -言語が選択されます。そのために何かを設定する必要はありません。メニューが翻訳さ -れていれば動作します。 -例えば、ドイツに住んでいてドイツ語を使っているにもかかわらず、"Datei" ではなく -"File" と表示したい場合、次のコマンドでメニューを英語に戻すことができます: > - - :set langmenu=none - -特定の言語を選択することもできます: > - - :set langmenu=nl_NL.ISO_8859-1 - -前述したように、"-" と "_" の違いは重要です。ただし、この場合は大文字と小文字 -の違いは無視されます。 -'langmenu' オプションはメニューがロードされる前に設定する必要があります。メ -ニューが定義された後では、単に 'langmenu' を設定しただけでは何も変更されませ -ん。ですから、'langmenu' は vimrc ファイルの中で設定してください。 -どうしても Vim の実行中にメニューの言語を変更したい場合は、次の手順を実行して -ください: > - - :source $VIMRUNTIME/delmenu.vim - :set langmenu=de_DE.ISO_8859-1 - :source $VIMRUNTIME/menu.vim - -ただし、ユーザーが自分で定義したメニューは失われてしまうので、それらを再定義す -る必要があります。 - - -自分でメニューを翻訳する ------------------------- - -利用可能な翻訳済みメニューは、次のディレクトリにあります: - - $VIMRUNTIME/lang ~ - -ファイルは menu_{language}.vim という名前になっています。使用したい言語がない -場合は自分で翻訳することもできます。最も簡単なのは、既存のファイルをコピーし -て、それを変更する方法です。 -まず、あなたの言語の名前を ":language" コマンドで確認してください。その名前を -使います。ただし、すべてを小文字にします。そして、ファイルを自分のランタイム -ディレクトリにコピーします ('runtimepath' の早めに見つかるように)。例えば、 -Unix なら次のようにします: > - - :!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim - -"$VIMRUNTIME/lang/README.txt" には翻訳のヒントが書かれています。 - -============================================================================== -*45.3* 他のエンコーディングを使う - -ファイルを開くとき、そのファイルはユーザーの言語のエンコーディングで保存されて -いるものと推測されます。多くのヨーロッパ系言語では "latin1" が使われます。その -場合、1 バイトで 1 文字を表すので、合計 256 個の文字を扱えます。アジア系言語の -場合はそれでは足りません。それらの言語はダブルバイトエンコーディングを使って、 -1 万以上の文字を扱います。それでも、複数の言語を混在させるには十分ではありませ -ん。そういうときは Unicode の出番です。Unicode は一般的に使われている言語の文 -字をすべて網羅しています。Unicode は "他のすべてのエンコーディングに取って代わ -るスーパーエンコーディング" なのです。しかしまだ広くは普及していません。 -Vim はこのような三種類のエンコーディングをサポートしています。そして、多少の制 -限はありますが、使用している言語とは違う言語のテキストを扱うことができます。 -とはいえ、自分の言語のテキストだけを扱う場合は、Vim は何も設定しなくても適切に -動作します。以下の説明は、他の言語のテキストを編集したい場合にだけ必要です。 - - Note: - 他のエンコーディングを使うには、Vim のコンパイル時にその機能を有効にし - ておく必要があります。有効かどうかは、":version" コマンドの出力を見て - "+multi_byte" の表示を確認してください。表示されていれば有効です。 - "-multi_byte" と表示されている場合は他の Vim を探してください。 - - -GUI で Unicode を使う ---------------------- - -Unicode には他のエンコーディングと相互に変換しても情報が欠落しないという長所が -あります。Vim の内部で Unicode を使うように設定すれば、あらゆるエンコーディン -グのファイルを編集することができます。 -残念ながら、Unicode をサポートしているシステムはまだ限られています。言語のエン -コーディングが Unicode になっていることはまれです。その場合、Unicode の使用を -宣言し、非 Unicode システムと協調方法を設定する必要があります。 -まずは、(Unicode文字を表示可能な) GUI 版の Vim を設定します。次のようにします: -> - :set encoding=utf-8 - :set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 - -'encoding' オプションに使用したいエンコーディングを設定します。これは、バッ -ファ (編集中のファイル) のテキスト、レジスタ、Vim スクリプトファイル、などに使 -われます。'encoding' は Vim の内部エンコーディングであると言えます。 -この例では、設定しているフォントがシステムに存在することを前提にしています。例 -で使用されているのは X Window System のフォント名です。このフォントは Unicode -をサポートした拡張 xterm で使われるパッケージに入っています。フォントがない場 -合は、次の場所から入手できます: - - http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~ - -MS-Windows では、Unicode 文字を部分的に持っているフォントがいくつかあります。 -"Courier New" フォントを試してみてください。メニューの 編集/フォント設定 を使 -うと、利用可能な一覧からフォントを選択できます。使用できるのは等幅フォントのみ -です。例: > - - :set guifont=courier_new:h12 - -これがうまくいかない場合は、フォントパックを入手してください。Microsoft が場所 -を変更していなければ、次の場所にあります: - - http://www.microsoft.com/typography/fonts/default.aspx ~ - -さて、内部エンコーディングを Unicode にして、Unicode フォントでテキスト表示す -るように設定できました。しかし、入力される文字はまだ元の言語のエンコーディング -のままです。入力を Unicode に変換する必要があります。'termencoding' オプション -に入力のエンコーディングを設定します。次のように設定します: > - - :let &termencoding = &encoding - :set encoding=utf-8 - -'encoding' に utf-8 を設定する前に、元の値を 'termencoding' に代入しています。 -この設定が動作するかどうか、実際にあなたの環境で試してください。特に、アジア系 -言語の入力メソッドを使って Unicode のテキストを編集したい場合は、正しく動作す -る必要があります。 - - -Unicode 端末で Unicode を使う ------------------------------ - -Unicode をサポートしている端末がいくつかあります。XFree86 に付属の標準 xterm -もその一つです。ここではそれを使って説明します。 -まず何よりも、xterm が Unicode サポート付きでコンパイルされている必要がありま -す。|UTF8-xterm| を参照し、その確認方法と、必要ならコンパイル方法も確認してく -ださい。 -xterm に "-u8" 引数を付けて起動します。フォントを指定する必要もあるかもしれま -せん。例: > - - xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 - -この端末の中で Vim を実行します。前述したように 'encoding' を "utf-8" に設定し -てください。設定は以上です。 - - -普通の端末で Unicode を使う ---------------------------- - -Unicode をサポートしていない端末で Unicode ファイルを取り扱うことができます。 -ただし、端末でサポートされていない文字は表示されません。テキストのレイアウトは -失われません: > - - :let &termencoding = &encoding - :set encoding=utf-8 - -これは GUI での設定と同じです。しかし作用は違います。Vim はテキストを表示する -ときに、端末に文字を送る前に、それを変換します。それによって、端末の文字化けを -防ぐことができます。 -これには、'termencoding' と 'encoding' の間での変換が可能である必要がありま -す。latin1 から Unicode への変換は Vim の内部で行われるので常に機能します。他 -の変換には |+iconv| 機能が必要です。 -実際に Unicode のテキストを編集してみてください。端末に表示できない文字は、ク -エスチョンマーク (あるいはアンダースコアや他の文字) として表示されます。クエス -チョンマークの上にカーソルを動かして次のコマンドを実行してください: > - - ga - -文字コード情報が表示されます。そこに実際に格納されている文字を知るヒントになり -ます。文字コードを Unicode の表から調べることもできます。時間さえあれば、実際 -にこの方法でファイルを見ることも可能です。 - - Note: - 'encoding' は Vim 内部のすべてのテキストで使われるので、設定を変更する - と 非ASCII のテキストは不正になってしまいます。レジスタの中身や - 'viminfo' ファイル (例えば記録された検索パターン) などで確認できます。 - 'encoding' は vimrc ファイルの中で設定し、それ以外では変更しないことが - 推奨されています。 - -============================================================================== -*45.4* 異なるエンコーディングのファイルを編集する - -Unicode を使うように設定された Vim で 16-bit Unicode のファイルを開く場合、実 -際には Vim の内部では utf-8 が使われているので、エンコーディングの変換が必要に -なります。文字セット (Unicode) とエンコーディング (utf-8 or 16-bit) は別ものな -のです。 -ファイルを開くとき、Vim はファイルのエンコーディングを判別しようとします。それ -には 'fileencodings' オプションが使われます。Unicode を使っているときは、その -初期設定は "ucs-bom,utf-8,latin1" です。この設定を使ってファイルのエンコーディ -ングがチェックされます: - - ucs-bom ファイルの先頭がバイトオーダーマーク (BOM) で開始する - 場合。Unicode の 16-bit、32-bit、utf-8 エンコーディン - グを判別できます。 - utf-8 utf-8 Unicode。utf-8 として不正なバイトがあった場合は - 拒否されます。 - latin1 古き良き 8-bit エンコーディング。常に有効です。 - -16-bit Unicode ファイルを開いたとき、BOM が付いていたなら、エンコーディングが -判別され、ファイルは utf-8 に変換されながら読み込まれます。'fileencoding' (末 -尾に s なし) には判別されたエンコーディングが設定されます。この場合は -"utf-16le" になります。"utf-16le" はリトルエンディアンの 16-bit Unicode を意味 -します。これは MS-Windows での一般的な形式です (例えばレジストリファイルな -ど)。 -ファイルを保存するとき、'fileencoding' と 'encoding' が比較され、それが違って -いた場合は、テキストが変換されます。 -'fileencoding' の値が空の場合は変換は実行されません。つまり、テキストは -'encoding' でエンコードするものと判断されます。 - -'fileencodings' の初期設定が良くない場合は、チェックさせたいエンコーディングを -自分で設定してください。設定の最初から順番に変換が試行されます。"latin1" を先 -頭に置くとうまく動作しません。それは "latin1" の変換が失敗することがないからで -す。例えば次の設定では、BOM がなく、utf-8 でもない場合に、Shift_JIS が使われま -す: > - - :set fileencodings=ucs-bom,utf-8,sjis - -エンコーディングの名前は |encoding-values| を参照してください。それ以外の名前 -も使えます。使用できる名前は変換ライブラリに依存します。 - - -エンコーディングを強制する --------------------------- - -自動判別が機能しない場合は、エンコーディングを指定する必要があります。例: > - - :edit ++enc=koi8-r russian.txt - -"++enc" を使ってファイルのエンコーディングを指定します。ファイルは指定されたエ -ンコーディング (例ではロシア語) から 'encoding' に変換されます。'fileencoding' -は指定されたエンコーディングに設定されるので、保存するときには逆の変換が実行さ -れます。 -ファイルを保存するときにも同じ引数が使えます。すなわち Vim をコード変換ツール -として使うこともできます。例: > - - :write ++enc=utf-8 russian.txt -< - Note: - 変換によって一部の文字が失われることがあります。任意のエンコーディング - から Unicode に変換し、それを元に戻す場合は、不正な文字が入っていない - 限り、そのような問題はほとんどありません。多言語で書かれたファイルを - Unicode から他のエンコーディングに変換すると、情報が失われます。 - -============================================================================== -*45.5* 言語のテキストを入力する - -コンピューターのキーボードには 100 個ほどのキーしかありません。しかし、数千の -文字を持つ言語があり、Unicode には 1 万以上の文字があります。どのようにしてそ -れらの文字を入力するのでしょうか? -それほど多くの文字を必要としない場合は二重字 (Digraph) が使えます。二重字につ -いては |24.9| で説明しました。 -キーボードのキー数よりはるかに多い文字を扱う場合はインプットメソッド (Input -Method, IM) を使います。インプットメソッドを使うには、目的の文字を入力するため -のキー操作を学ぶ必要があります。あなたがインプットメソッドを必要とするなら、そ -れはおそらくは最初からシステムに用意されています。Vim でも他のプログラムと同様 -にインプットメソッドを使うことができます。詳細は、X Window system なら -|mbyte-XIM| を、MS-Windows なら |mbyte-IME| を参照してください。 - - -キーマップ ----------- - -いくつかの言語は latin とは文字セットが異なるだけで、文字の数は同じような場合 -があります。その場合はキーを文字にマップすることができます。それにはキーマップ -を使います。 -例えば、ヘブライ語を使いたい場合は、次のようにしてキーマップをロードします: > - - :set keymap=hebrew - -キーマップファイルが検索されます。これは 'encoding' の設定に依存します。ファイ -ルが見つからなかった場合はエラーメッセージが表示されます。 - -さて、インサートモードでヘブライ語を入力できるようになりました。ただし、ノーマ -ルモードのときや、":" コマンドを入力するときは、自動的に英語に切り替わります。 -次のコマンドでヘブライ語と英語を切り替えることができます: > - - CTRL-^ - -これはインサートモードとコマンドラインモードでのみ機能します。ノーマルモードで -はまったく別の機能です (オルタネートファイルにジャンプ)。 -キーマップの使用状態はモードメッセージに表示されます ('showmode'が設定されてい -るなら)。GUI ではカーソルの色が変わります。 -キーマップの使用状態は 'iminsert' と 'imsearch' を設定することでも変更できま -す。 - -次のコマンドでマップの一覧を表示できます: > - - :lmap - -利用可能なキーマップファイルの一覧は、GUI ならメニューの 編集/キーマップ で確 -認できます。あるいは次のコマンドで一覧を表示できます: > - - :echo globpath(&rtp, "keymap/*.vim") - - -自分でキーマップを作成する --------------------------- - -自分でキーマップファイルを作成することができます。作成はそれほど難しくありませ -ん。目的の言語に近い既存のキーマップファイルを土台にしてください。そのファイル -を自分の "keymap" ディレクトリにコピーします。例えば、Unix なら"~/.vim/keymap" -などを使います。 -キーマップファイルの名前は次のような形式にします: - - keymap/{name}.vim ~ -もしくは - keymap/{name}_{encoding}.vim ~ - -{name} はキーマップの名前です。分かりやすい名前を付けます。既存のキーマップと -は違う名前にしてください (既存のキーマップファイルを置き換えるとき以外は)。 -{name} にはアンダースコアを含めることはできません。アンダースコアに続けてエン -コーディングを指定することができます。例: - - keymap/hebrew.vim ~ - keymap/hebrew_utf-8.vim ~ - -ファイルの内容については実物を見れば分かると思います。Vim に付属のキーマップを -見てください。詳細は |mbyte-keymap| を参照。 - - -最後の手段 ----------- - -すべての方法がダメだったとしても、CTRL-V を使えばあらゆる文字を入力できます: - - エンコード 入力方法 入力できる範囲 ~ - 8-bit CTRL-V 123 10進数の 0-255 - 8-bit CTRL-V x a1 16進数の 00-ff - 16-bit CTRL-V u 013b 16進数の 0000-ffff - 31-bit CTRL-V U 001303a4 16進数の 00000000-7fffffff - -入力するときはスペースは不要です。詳細は |i_CTRL-V_digit| を参照。 - -============================================================================== - -次章: |usr_90.txt| Vim のインストール - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_90.jax b/runtime.old/doc/usr_90.jax deleted file mode 100644 index addb930c8..000000000 --- a/runtime.old/doc/usr_90.jax +++ /dev/null @@ -1,497 +0,0 @@ -*usr_90.txt* For Vim バージョン 7.3. Last change: 2008 Sep 10 - - VIM USER MANUAL - by Bram Moolenaar - - Vim のインストール - - *install* -Vim を使うにはまずインストールする必要があります。システムにも依りますが、とて -も簡単な作業です。本章では、若干のヒントと、新しいバージョンへのアップグレード -手順を説明します。 - -|90.1| Unix -|90.2| MS-Windows -|90.3| アップグレード -|90.4| よくある問題 -|90.5| アンインストール - -前章: |usr_45.txt| 言語を選択する -目次: |usr_toc.txt| - -============================================================================== -*90.1* Unix - -最初に、Vim をシステム全体で使うのか、自分一人で使うのかを決めてください。イン -ストール方法はほぼ同じですが、インストールするディレクトリが異なります。 -システムにインストールするときは、ベースディレクトリとして大抵は "/usr/local" -が使われます。ただし、これはシステムによって異なります。インストールされている -他のパッケージを参考にするなどして調べてください。 -自分一人で使う場合は、例えばホームディレクトリをベースディレクトリにします。 -ファイルはその下の "bin" や "shared/vim" などに置かれます。 - - -パッケージからインストール --------------------------- - -Unix システムごとにコンパイル済みバイナリが用意されています。次のページにパッ -ケージへのリンクが一覧されています: - - http://www.vim.org/binaries.html ~ - -バイナリのメンテナンスはボランティアベースなので、古いままになっていることが -多々あります。自分でソースからコンパイルする方が無難です。自分でコンパイルする -ことによって組み込む機能をコントロールできるようにもなります。それが必要な場合 -はどのみちコンパイルが必要です。 - -Linux を使っている場合、"vi" はおそらく最小構成の Vim です。それには例えば構文 -強調表示などの機能はありません。そのディストリビューションから別の Vim パッ -ケージが配布されていないか、あるいは Web サイトで公開されていないか調べてみて -ください。 - - -ソースからインストール ----------------------- - -Vim をコンパイルしてインストールするには、次のものが必要です: - - - C コンパイラ (GCCが望ましい) - - GZIP プログラム (www.gnu.org から入手可能) - - Vim のソースとランタイムのアーカイブ - -Vim のアーカイブを入手するには、次のファイルを見てダウンロード速度が最も早いで -あろう近くのミラーを探してください: - - ftp://ftp.vim.org/pub/vim/MIRRORS ~ - -Vim のホームサイト ftp.vim.org で十分な速度が出るならそれでも構いません。 -"unix" ディレクトリにファイルが入っています。バージョン番号はファイル名に埋め -込まれています。特に事情がなければ最新のバージョンをダウンロードしてください。 -ファイルの入手方法は二通りあります。すべてのファイルが含まれた一つの大きなアー -カイブをダウンロードするか、フロッピーサイズの四つの小さなアーカイブをダウン -ロードします。例えば、バージョン 6.1 の大きなアーカイブは次の名前です: - - vim-6.1.tar.bz2 ~ - -このアーカイブの展開には "bzip2" が必要です。それがない場合は四つの小さなファ -イルをダウンロードしてください。それらは gzip で展開できます。Vim 6.1 なら次の -ような名前になっています: - - vim-6.1-src1.tar.gz ~ - vim-6.1-src2.tar.gz ~ - vim-6.1-rt1.tar.gz ~ - vim-6.1-rt2.tar.gz ~ - - -コンパイル ----------- - -まず作業用のディレクトリを作成します。例: > - - mkdir ~/vim - cd ~/vim - -この場所でアーカイブを展開します。大きなアーカイブを使う場合は、次のようにしま -す: > - - bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf - - -"path" の部分は適当に変更してください。 > - - gzip -d path/vim-6.1-src1.tar.gz | tar xf - - gzip -d path/vim-6.1-src2.tar.gz | tar xf - - gzip -d path/vim-6.1-rt1.tar.gz | tar xf - - gzip -d path/vim-6.1-rt2.tar.gz | tar xf - - -欲しいのがデフォルトの機能だけで、環境が適切に設定されているのであれば、次のコ -マンドを実行するだけでコンパイルできます: > - - cd vim61/src - make - -make プログラムによって configure とコンパイルが実行されます。設定を変更してコ -ンパイルする方法については後で説明します。 -コンパイル中にエラーが発生した場合は、エラーメッセージをよく見てください。何が -悪かったのかを知るヒントが出ているはずです。可能ならそれを修正してください。も -しかしたら何かの機能を無効にする必要があるかもしれません。Makefile を見て自分 -のシステム特有のヒントがないか確認してください。 - - -テスト ------- - -コンパイルが正しくできたかどうか確認します: > - - make test - -Vim が期待した動作をするかどうかをテストスクリプトを使って検査します。Vim が何 -度も実行され、様々なテキストやメッセージが表示されます。最後に次のように表示さ -れたら検査は合格です: - - test results: ~ - ALL DONE ~ - -テストが失敗すると "TEST FAILURE" と表示されます。失敗メッセージが一つか二つ表 -示された場合は、Vim はとりあえず動作していますが完全ではありません。エラーメッ -セージがたくさん表示されたり、テストが最後まで完了しなかった場合は、何か問題が -あります。自分で解決するか、誰かに聞いてください。メーリングリストの過去ログ -(|maillist-archive|) に答えがあるかもしれません。どうしても解決できない場合は -Vim のメーリングリスト (|maillist|) で質問してみてください。 - - -インストール *install-home* ------------- - -ホームディレクトリにインストールする場合は、Makefile を開いて次の行を探してく -ださい: - - #prefix = $(HOME) ~ - -行頭の # を削除します。 -システムにインストールする場合は、適切なディレクトリが自動的に選択されます。自 -分でディレクトリを指定する方法は後述します。以下の作業は root で実行する必要が -あります。 - -次のコマンドで Vim をインストールします: > - - make install - -必要なファイルが適切な場所にコピーされます。Vim を起動してみて正しくインストー -ルできたかどうかを確認してください。二つの簡単なテストで、Vim がランタイムファ -イルを検出できているかどうかを確認します: > - - :help - :syntax enable - -うまく動作しない場合は、次のコマンドで、Vim がどこからランタイムファイルを探し -ているのか確認してください: > - - :echo $VIMRUNTIME - -また、Vim の起動時に "-V" 引数を付けることで、起動中に起きていることを見ること -ができます: > - - vim -V - -ユーザーマニュアルは Vim が適切に動作することを前提に書かれています。Vim のイ -ンストールが終ったら、|not-compatible| の説明に従って、Vim を適切に設定してく -ださい。 - - -機能を選択する --------------- - -機能を選択する方法はいろいろあります。最も簡単なのは Makefile を編集する方法で -す。Makefile には多くの説明やサンプルが書かれています。大抵は行をコメントアウ -トすることで機能を有効/無効にできます。 -make とは別に "configure" を実行する方法もあります。オプションを個別に設定する -ことができます。ただし、オプションを正しく理解して、正確に指定する必要がありま -す。 -よく使われる引数を次に示します。これらは Makefile からでも有効にできます。 - - --prefix={directory} Vim をインストールするトップディレクトリ - --with-features=tiny 多くの機能を無効にしてコンパイル - --with-features=small 一部の機能を無効にしてコンパイル - --with-features=big 多くの機能を有効にしてコンパイル - --with-features=huge ほとんどの機能を有効にしてコンパイル - いつどの機能が有効になるのかは |+feature-list| - を参照してください。 - - --enable-perlinterp Perl インターフェースを有効にする。同様に、 - ruby、python、tclなどもあります。 - - --disable-gui GUI インターフェースをコンパイルしない。 - --without-x X-windows の機能をコンパイルしない。 - これら二つが指定された場合、Vim は X サーバー - に接続しません。起動が早くなります。 - -オプションの一覧を見るには次のようにします: > - - ./configure --help - -各機能の簡単な説明と、より詳しい情報へのリンクは |feature-list| にあります。 -冒険野郎な人は "feature.h" を開いてみてください。自分でソースコードを改造する -こともできますよ! - -============================================================================== -*90.2* MS-Windows - -Vim を Microsoft Windows にインストールする方法は二つあります。複数のアーカイ -ブを展開するか、インストーラー形式の大きなアーカイブを使います。最近のコン -ピュータを使っているほとんどのユーザーはインストーラーを使います。複数のアーカ -イブを展開する方法には次のものが必要です: - - - Vim のバイナリが入ったアーカイブ - - Vim のランタイムアーカイブ - - zip ファイルを展開できるプログラム - -Vim のアーカイブを入手するには、次のファイルを見てダウンロード速度が最も早いで -あろう近くのミラーを探してください: - - ftp://ftp.vim.org/pub/vim/MIRRORS ~ - -Vim のホームサイト ftp.vim.org で十分な速度が出るならそれでも構いません。"pc" -ディレクトリにファイルが入っています。バージョン番号はファイル名に埋め込まれて -います。特に事情がなければ最新のバージョンをダウンロードしてください。ここでは -"61" (バージョン6.1) を使って説明します。 - - gvim61.exe インストーラー - -必要なのはこのファイルだけです。ファイルを実行し、表示される指示に従ってくださ -い。 - -アーカイブを自分で展開する方法の場合、使用するアーカイブを選択する必要がありま -す。次のものがあります: - - gvim61.zip 普通の MS-Windows GUI バージョン。 - gvim61ole.zip OLE サポート付きの MS-Windows GUI バージョン。 - メモリを食いますが、他の OLE アプリケーション - との通信をサポートしています。 - vim61w32.zip 32 ビット MS-Windows コンソールバージョン。 - Win NT/2000/XP コンソール用。Win 95/98 では適 - 切に動作しません。 - vim61d32.zip 32 ビット MS-DOS バージョン。 - Win 95/98 コンソール用。 - vim61d16.zip 16 ビット MS-DOS バージョン。 - 古いシステム用。ロングファイルネームはサポート - されてません。 - -必要なのはどれか一つだけです。GUI バージョンとコンソールバージョンを両方インス -トールすることもできます。いずれの場合でも、さらにランタイムファイルのアーカイ -ブをダウンロードする必要があります。 - - vim61rt.zip ランタイムファイルのアーカイブ - -zip 展開プログラムを使ってファイルを展開してください。例えば、"unzip" プログラ -ムを使う場合は次のようにします: > - - cd c:\ - unzip path\gvim61.zip - unzip path\vim61rt.zip - -この例では "c:\vim\vim61" にファイルが展開されます。既にどこかに vim という -ディレクトリがある場合は、その親ディレクトリで実行してください。 -"vim\vim61" に移動して、install プログラムを実行します: > - - install - -メッセージをよく読んでオプションを選択してください。最後に "do it" を選択する -と、それまでの選択に従ってインストールが実行されます。 -インストールプログラムはランタイムファイルを移動しません。それらは展開した場所 -にあるままです。 - -提供されているバイナリに、必要な機能が不足している場合は、自分で Vim をコンパ -イルしてみてください。ソースのアーカイブはバイナリと同じ場所にあります。対応す -る Makefile が用意されているコンパイラも必要です。Microsoft Visual C は使えま -すが高価です。Borland のコマンドラインコンパイラ 5.5 は無料で使えます。MingW -と Cygwin のコンパイラも無料です。詳しくは "src/INSTALLpc.txt"を見てください。 - -============================================================================== -*90.3* アップグレード - -既に Vim がインストールされているところに新たに Vim をインストールする方法を説 -明します。 - - -UNIX ------ - -"make install" を実行すると、ランタイムファイルはバージョンごとのディレクトリ -にコピーされます。つまり以前のバージョンは上書きされません。複数のバージョンを -同時に使うことができます。 -古いバージョンの "vim" 実行ファイルは上書きされます。古い実行ファイルが必要な -い場合は単に "make install" を実行してください。ランタイムファイルは手動で削除 -します。古いバージョンのランタイムディレクトリを削除するだけです。例: > - - rm -rf /usr/local/share/vim/vim58 - -普通はこのディレクトリ以下のファイルが変更されることはありません。しかし、例え -ば "filetype.vim" などを変更した場合は、削除する前にその変更を新バージョンの方 -にマージしてください。 - -新しいバージョンに切り替える前に試用期間を設けたい場合は、新しいバージョンを違 -う名前でインストールしてください。configure に引数を設定する必要があります。 -例: > - - ./configure --with-vim-name=vim6 - -"make install" を実行する前に "make -n install" を実行し、大事なファイルが上書 -きされないか確認してください。 -評価の結果、新しいバージョンに切り替えると決めたら、実行ファイルの名前を変更し -ます。例: > - - mv /usr/local/bin/vim6 /usr/local/bin/vim - - -MS-WINDOWS ----------- - -アップグレードは新しいバージョンをインストールするのとほぼ同じです。古いバー -ジョンと同じ場所にファイルを展開してください。新しいディレクトリ (例えば -"vim61") が作成され、その下に新しいバージョンがコピーされます。ランタイムファ -イル、vimrc、viminfo などはそのまま残ります。 -古いものをそのままにして新しいバージョンを実行したい場合は、多少の手作業が必要 -です。install プログラムを実行すると、古いバージョンのためのファイルがいくつか -上書きされてしまいます。新しいバイナリをフルパス指定で実行してください。正しい -バージョンのランタイムファイルが自動的に検出されます。ただし、$VIMRUNTIME 変数 -が定義されている場合はうまく機能しません。 -アップグレードが満足のいくものであったなら、旧バージョンのファイルを削除してく -ださい。|90.5| 参照。 - -============================================================================== -*90.4* よくある問題 - -Vim のインストール時に起こる問題と、その解決方法を説明します。インストールに関 -する質問にも答えます。 - - -Q: 私には root 権限がありません。Vim をインストールできますか? (Unix) - -次のような引数を付けて configure を実行してください。この例では $HOME/vim に -Vim がインストールされます: > - - ./configure --prefix=$HOME - -自分のディレクトリに Vim がコピーされます。エディタを実行するには $HOME/bin に -パスを通す必要があります。|install-home| も参照。 - - -Q: 私の画面では表示される色が正しくありません (Unix) - -端末の設定を確認してください。シェルの上で次のコマンドを使います: > - - echo $TERM - -表示された端末タイプが正しくない場合はそれを修正します。詳しくは |06.2| を参照 -してください。あるいは、gvim と呼ばれる GUI 版の Vim を使ってください。GUI な -ら端末を正しく設定する必要はありません。 - - -Q: Backspace キーと Delete キーが正しく動いていないようです - -キーが押されたときに送信されるコードが Backspace <BS> と Delete <Del> について -はとてもあいまいです。まず、$TERM の設定を確認してください。それが問題なけれ -ば、次の設定を試してください: > - - :set t_kb=^V<BS> - :set t_kD=^V<Del> - -一行目の ^V<BS> は CTRL-V を押してから Backspace キーを押します。二行目の -^V<Del> は CTRL-V を押してから Delete キーを押します。この二行を vimrc ファイ -ルに書いておくこともできます (|05.1|参照)。ただし、この方法は端末を変更すると -機能しなくなります。これ以外の解決方法は |:fixdel| を参照してください。 - - -Q: 私は RedHat Linux を使っています。システム付属の Vim は使えますか? - -RedHat にはデフォルトで最小構成の Vim がインストールされます。 -"Vim-enhanced-version.rpm" のような名前の RPM パッケージを探して、それをインス -トールしてください。 - - -Q: テキストを色付きで表示するには? プラグインを動かすには? - -サンプルの vimrc スクリプトを使ってください。説明は |not-compatible| にありま -す。 - -構文強調表示については第 6 章を参照してください: |usr_06.txt|。 - - -Q: 便利な vimrc ファイルの例はありますか? - -Web サイト (www.vim.org) に良い例がいくつかあります。 - - -Q: 便利な Vim プラグインはどこにありますか? - -Vim-online サイト (http://vim.sf.net) を参照してください。多くのユーザーが便利 -な Vim スクリプトやプラグインをアップロードしています。 - - -Q: 便利な Tips はどこにありますか? - -Vim-online サイト (http://vim.sf.net) を参照してください。Vim のユーザーから寄 -せられたヒントが集められています。メーリングリスト (|maillist-archive|) を検索 -するのもいいでしょう。 - -============================================================================== -*90.5* アンインストール - -Vim をアンインストールする機会はあまりないと思いますが、その方法を説明します。 - - -UNIX ------ - -Vim をパッケージからインストールした場合は、パッケージマネージャを確認し、パッ -ケージの除去方法を調べてください。 -ソースからインストールした場合は、次のコマンドでアンインストールできます: > - - make uninstall - -元のファイルを削除してしまった場合や、誰かが作ったアーカイブからインストールし -た場合は、この方法は使えません。手作業でファイルを削除してください。例えば -"/usr/local" にインストールした場合は以下のファイルを root 権限で削除します: > - - rm -rf /usr/local/share/vim/vim61 - rm /usr/local/bin/eview - rm /usr/local/bin/evim - rm /usr/local/bin/ex - rm /usr/local/bin/gview - rm /usr/local/bin/gvim - rm /usr/local/bin/gvim - rm /usr/local/bin/gvimdiff - rm /usr/local/bin/rgview - rm /usr/local/bin/rgvim - rm /usr/local/bin/rview - rm /usr/local/bin/rvim - rm /usr/local/bin/rvim - rm /usr/local/bin/view - rm /usr/local/bin/vim - rm /usr/local/bin/vimdiff - rm /usr/local/bin/vimtutor - rm /usr/local/bin/xxd - rm /usr/local/man/man1/eview.1 - rm /usr/local/man/man1/evim.1 - rm /usr/local/man/man1/ex.1 - rm /usr/local/man/man1/gview.1 - rm /usr/local/man/man1/gvim.1 - rm /usr/local/man/man1/gvimdiff.1 - rm /usr/local/man/man1/rgview.1 - rm /usr/local/man/man1/rgvim.1 - rm /usr/local/man/man1/rview.1 - rm /usr/local/man/man1/rvim.1 - rm /usr/local/man/man1/view.1 - rm /usr/local/man/man1/vim.1 - rm /usr/local/man/man1/vimdiff.1 - rm /usr/local/man/man1/vimtutor.1 - rm /usr/local/man/man1/xxd.1 - - -MS-WINDOWS ----------- - -インストーラーを使ってインストールした場合は、Vim の実行ファイルと同じディレク -トリ (例: "c:\vim\vim61") にある "uninstall-gui" プログラムを実行してくださ -い。スタートメニューに登録した場合は、そこから起動しても構いません。それによっ -て、ほとんどのファイルと、メニューと、デスクトップのショートカットが削除されま -す。いくつかのファイルは削除されずに残るかもしれませんが、それらを削除するには -Windows の再起動が必要です。 -"vim" ディレクトリをまるごと削除するという方法もあります。あなたが作成した -vimrc ファイルやランタイムファイルがそこに保存されている場合は慎重に実行してく -ださい。 - -zip アーカイブからインストールした場合は、"uninstal" プログラムを使ってくださ -い (Note:末尾の l 注意)。"install" プログラムと同じディレクトリにあります (例: -"c:\vim\vim61")。コントロールパネルの「アプリケーションの追加と削除」からも削 -除できます。 -ただし、これはレジストリの登録を削除するだけです。ファイルの削除は自分でやる必 -要があります。単に "vim\vim61" をまるごと削除します。そこにあなたが変更を加え -たファイルは保存されていないと思いますが、念のため確認してください。 -"vim" ディレクトリにあなたが作成した vimrc ファイルやランタイムファイルが入っ -ているなら、それらは残しておいた方がいいかもしれません。 - -============================================================================== - -目次: |usr_toc.txt| - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/usr_toc.jax b/runtime.old/doc/usr_toc.jax deleted file mode 100644 index e239b561f..000000000 --- a/runtime.old/doc/usr_toc.jax +++ /dev/null @@ -1,355 +0,0 @@ -*usr_toc.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - VIM USER MANUAL - by Bram Moolenaar - - 目次 *user-manual* - -============================================================================== -大見出し一覧 ~ - -初級編 ~ -|usr_01.txt| マニュアルについて -|usr_02.txt| 初めての Vim -|usr_03.txt| カーソルの移動 -|usr_04.txt| 簡単な編集 -|usr_05.txt| 設定の変更 -|usr_06.txt| 構文強調表示 -|usr_07.txt| 複数のファイルを開く -|usr_08.txt| ウィンドウの分割 -|usr_09.txt| GUI を使う -|usr_10.txt| 大規模な編集 -|usr_11.txt| クラッシュからの復帰 -|usr_12.txt| 便利な小技 - -上級編 ~ -|usr_20.txt| コマンドラインを素早く入力する -|usr_21.txt| 中断と再開 -|usr_22.txt| ファイルを探す -|usr_23.txt| 特殊なファイルを編集する -|usr_24.txt| 素早く入力する -|usr_25.txt| テキストの整形 -|usr_26.txt| 繰り返し -|usr_27.txt| 検索コマンドと正規表現 -|usr_28.txt| 折り畳み -|usr_29.txt| プログラムの中を移動する -|usr_30.txt| プログラムの編集 -|usr_31.txt| GUI を活用する -|usr_32.txt| undo ツリー - -カスタマイズ ~ -|usr_40.txt| 新しいコマンドを作る -|usr_41.txt| Vim スクリプト書法 -|usr_42.txt| 新しいメニューを追加する -|usr_43.txt| ファイルタイプを使う -|usr_44.txt| 構文ファイルを作成する -|usr_45.txt| 言語を選択する - -インストール ~ -|usr_90.txt| Vimのインストール - - -リファレンスマニュアル -|reference_toc| 全コマンドの詳細情報 - -シングルファイルで印刷に適した HTML 形式と PDF 形式のユーザーマニュアルが用意 -されています: - http://vimdoc.sf.net - -============================================================================== -初級編 ~ - -最初から順番に読んで基本的なコマンドを学びましょう。 - -|usr_01.txt| マニュアルについて - |01.1| 二つのマニュアル - |01.2| Vim の準備 - |01.3| チュートリアル - |01.4| 著作権 (copyright) - -|usr_02.txt| 初めての Vim - |02.1| Vim の起動方法 - |02.2| 文字の挿入 - |02.3| カーソル移動 - |02.4| 文字の削除 - |02.5| undo (取り消し) と redo (やり直し) - |02.6| 他の編集コマンド - |02.7| Vim の終了 - |02.8| ヘルプの引き方 - -|usr_03.txt| カーソルの移動 - |03.1| 単語ごとの移動 - |03.2| 行頭、行末への移動 - |03.3| 文字への移動 - |03.4| カッコの対応 - |03.5| 特定の行への移動 - |03.6| 現在の場所を表示 - |03.7| スクロール - |03.8| 簡単な検索 - |03.9| 簡単なパターン検索 - |03.10| マークの使用 - -|usr_04.txt| 簡単な編集 - |04.1| オペレータとモーション - |04.2| テキストの変更 - |04.3| 変更の繰り返し - |04.4| ビジュアルモード - |04.5| テキストの移動 - |04.6| テキストのコピー - |04.7| クリップボード - |04.8| テキストオブジェクト - |04.9| 置換モード - |04.10| 終わりに - -|usr_05.txt| 設定の変更 - |05.1| vimrc ファイル - |05.2| 見本 vimrc ファイルの解説 - |05.3| 簡単なマップ - |05.4| プラグインの追加 - |05.5| ヘルプファイルの追加 - |05.6| オプションウィンドウ - |05.7| よく使うオプション - -|usr_06.txt| 構文強調表示 - |06.1| 構文強調表示を有効にする - |06.2| 色がつかない?変な色になる? - |06.3| 色を変える - |06.4| カラーを使う?使わない? - |06.5| カラー印刷 - |06.6| 詳しい情報 - -|usr_07.txt| 複数のファイルを開く - |07.1| 他のファイルを開く - |07.2| ファイルのリスト - |07.3| 他のファイルにジャンプする - |07.4| バックアップファイル - |07.5| 他のファイルにテキストをコピーする - |07.6| 読み込み専用モード - |07.7| ファイル名の変更 - -|usr_08.txt| ウィンドウの分割 - |08.1| ウィンドウの分割 - |08.2| ウィンドウを分割してファイルを開く - |08.3| ウィンドウのサイズ - |08.4| 縦分割 - |08.5| ウィンドウの移動 - |08.6| 全ウィンドウに対するコマンド - |08.7| vimdiff で差分を表示する - |08.8| その他 - |08.9| タブページ - -|usr_09.txt| GUIを使う - |09.1| GUI の部品 - |09.2| マウスを使う - |09.3| クリップボード - |09.4| セレクトモード - -|usr_10.txt| 大規模な編集 - |10.1| 操作の記録と再実行 - |10.2| 置換 - |10.3| コマンドの範囲指定 - |10.4| global コマンド - |10.5| 矩形選択 - |10.6| ファイルの一部の保存と読み込み - |10.7| テキストの整形 - |10.8| 大文字/小文字の変換 - |10.9| 外部プログラムを使う - -|usr_11.txt| クラッシュからの復帰 - |11.1| リカバリの基本 - |11.2| スワップファイルはどこにある? - |11.3| クラッシュした? - |11.4| さらなる情報 - -|usr_12.txt| 便利な小技 - |12.1| 単語を置換する - |12.2| "Last, First" を "First Last" に変更する - |12.3| リストをソートする - |12.4| 行を逆順に並べ替える - |12.5| 単語を数える - |12.6| マニュアルを引く - |12.7| 空白を取り除く - |12.8| 単語が使われている場所を検索する - -============================================================================== -上級編 ~ - -これらの項目は好きな順番で読んでも構いません。 - -|usr_20.txt| コマンドラインを素早く入力する - |20.1| コマンドライン編集 - |20.2| コマンドライン短縮入力 - |20.3| コマンドライン補完 - |20.4| コマンドライン履歴 - |20.5| コマンドラインウィンドウ - -|usr_21.txt| 中断と再開 - |21.1| サスペンドとレジューム - |21.2| シェルコマンドの実行 - |21.3| viminfo に情報を記録する - |21.4| セッション - |21.5| ビュー - |21.6| モードライン - -|usr_22.txt| ファイルを探す - |22.1| ファイルブラウザ - |22.2| カレントディレクトリ - |22.3| ファイルを探す - |22.4| バッファリスト - -|usr_23.txt| 特殊なファイルを編集する - |23.1| DOS、Mac、Unix形式のファイル - |23.2| インターネット上のファイル - |23.3| 暗号化 - |23.4| バイナリファイル - |23.5| 圧縮ファイル - -|usr_24.txt| 素早く入力する - |24.1| 修正する - |24.2| 対応する括弧を表示する - |24.3| 補完 - |24.4| 挿入を繰り返す - |24.5| 隣の行からコピーする - |24.6| レジスタを挿入する - |24.7| 短縮形 - |24.8| 特殊な文字を入力する - |24.9| 二重字 (Digraph) - |24.10| ノーマルモードコマンド - -|usr_25.txt| テキストの整形 - |25.1| 行を改行する - |25.2| テキストの位置揃え - |25.3| インデントとタブ - |25.4| 長い行の扱い - |25.5| 表の編集 - -|usr_26.txt| 繰り返し - |26.1| ビジュアルモードを使って繰り返す - |26.2| 加算と減算 - |26.3| 複数のファイルを変更する - |26.4| シェルスクリプトから Vim を使う - -|usr_27.txt| 検索コマンドと正規表現 - |27.1| 大文字と小文字を区別しない - |27.2| ファイルの端で折り返す - |27.3| オフセット - |27.4| 繰り返しマッチ - |27.5| 選択肢 - |27.6| 文字範囲 - |27.7| 文字クラス - |27.8| 改行記号にマッチ - |27.9| 例 - -|usr_28.txt| 折り畳み - |28.1| 折り畳みとは - |28.2| 手動で折り畳む - |28.3| 折り畳みを使って作業する - |28.4| 折り畳みの保存と復元 - |28.5| インデントで折り畳む - |28.6| マーカーで折り畳む - |28.7| 構文で折り畳む - |28.8| スクリプトで折り畳む - |28.9| 変更のない行を折り畳む - |28.10| どれを使えばいいの? - -|usr_29.txt| プログラムの中を移動する - |29.1| タグを使う - |29.2| プレビューウィンドウ - |29.3| プログラムの中を移動する - |29.4| グローバル識別子を検索する - |29.5| ローカル識別子を検索する - -|usr_30.txt| プログラムの編集 - |30.1| コンパイル - |30.2| C 言語系インデント - |30.3| インデント設定の自動化 - |30.4| その他のインデント - |30.5| タブとスペース - |30.6| コメントの整形 - -|usr_31.txt| GUI を活用する - |31.1| ファイルブラウザ - |31.2| 操作確認 - |31.3| メニューのショートカット - |31.4| Vim ウィンドウの位置とサイズ - |31.5| その他 - -|usr_32.txt| undo ツリー - |32.1| ファイル保存時への undo - |32.2| 変更の番号付け - |32.3| ツリーを飛び回る - |32.4| タイムトラベル - -============================================================================== -カスタマイズ ~ - -Vim の動作を好きなように変更できます。 - -|usr_40.txt| 新しいコマンドを作る - |40.1| キーマッピング - |40.2| コマンドラインコマンドを定義する - |40.3| 自動コマンド - -|usr_41.txt| Vim スクリプト書法 - |41.1| はじめに - |41.2| 変数 - |41.3| 式 - |41.4| 条件式 - |41.5| 式を実行する - |41.6| 関数を使う - |41.7| 関数を定義する - |41.8| リストと辞書 - |41.9| 例外 - |41.10| 注意事項 - |41.11| プラグインを書く - |41.12| ファイルタイププラグインを書く - |41.13| コンパイラプラグインを書く - |41.14| プラグインを書く (高速ロード版) - |41.15| ライブラリスクリプトを書く - |41.16| Vim スクリプトを配布する - -|usr_42.txt| 新しいメニューの追加 - |42.1| はじめに - |42.2| メニューコマンド - |42.3| その他いろいろ - |42.4| ツールバーとポップアップメニュー - -|usr_43.txt| ファイルタイプを使う - |43.1| ファイルタイププラグイン - |43.2| ファイルタイプを追加する - -|usr_44.txt| 構文ファイルを作成する - |44.1| 基本的な syntax コマンド - |44.2| キーワード - |44.3| マッチ - |44.4| リージョン - |44.5| 構文アイテムを入れ子にする - |44.6| グループの並び - |44.7| その他の引数 - |44.8| クラスタ - |44.9| 他の構文ファイルをインクルードする - |44.10| シンクロナイズ - |44.11| 構文ファイルをインストールする - |44.12| ポータブルな文法定義ファイル - -|usr_45.txt| 言語を選択する - |45.1| メッセージの言語 - |45.2| メニューの言語 - |45.3| 他のエンコーディングを使う - |45.4| 異なるエンコーディングのファイルを編集する - |45.5| 言語のテキストを入力する - -============================================================================== -インストール ~ - -インストール方法を説明します。 - -|usr_90.txt| Vim のインストール - |90.1| Unix - |90.2| MS-Windows - |90.3| アップグレード - |90.4| よくある問題 - |90.5| アンインストール - -============================================================================== - -Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/various.jax b/runtime.old/doc/various.jax deleted file mode 100644 index 315fb91e3..000000000 --- a/runtime.old/doc/various.jax +++ /dev/null @@ -1,624 +0,0 @@ -*various.txt* For Vim バージョン 7.3. Last change: 2011 May 19 - - - VIM リファレンスマニュアル by Bram Moolenaar - -様々なコマンド *various* - -1. 様々なコマンド |various-cmds| -2. less、more の代わりに Vim を使う |less| - -============================================================================== -1. 様々なコマンド *various-cmds* - - *CTRL-L* -CTRL-L 画面を消去して再描画します。すでに入力されているキーを - すべて処理してから再描画します。 - - *:redr* *:redraw* -:redr[aw][!] 画面をすぐに再描画します。! を付けたときは、画面を消去 - してから再描画します。 - スクリプトや関数を実行している途中で画面を更新するのに - 便利です。マップの実行中や、'lazyredraw' がオンに設定 - されているときでも更新できます。 - - *:redraws* *:redrawstatus* -:redraws[tatus][!] カレントウィンドウのステータスラインを再描画します。 - ! を付けたときは、すべてのステータスラインを再描画しま - す。 - 'statusline' に自動更新されない項目が含まれている場合 - に、ステータスラインを更新するのに便利です。 - - *N<Del>* -<Del> ノーマルモードで数値 (|count|) を入力しているときは、 - 数字の最後の桁を削除します。 - Note: 同じことをするにの <BS> を使いたい場合は、次の - マップを .vimrc に追加してください: > - :map CTRL-V <BS> CTRL-V <Del> -< <Del> が望みどおりに機能しない場合には|:fixdel|を参照。 -訳注: "CTRL-V <BS>"はCTRL-Vを押してから<BS>を押す。 - -:as[cii] *ga* *:as* *:ascii* -ga カーソル位置の文字の文字コードを、10/16/8 進数で表示し - ます。カーソルが 'R' の上にあるときは次のように表示さ - れます: - <R> 82, Hex 52, Octal 122 ~ - ASCII 以外の文字がオプション 'isprint' に設定されてい - て、表示可能になっている場合には、特殊な表示形式もいっ - しょに表示されます。文字コードが 127 より大きいときに - は <M-x> という形式も表示されます。例: - <~A> <M-^A> 129, Hex 81, Octal 201 ~ - <p> <|~> <M-~> 254, Hex fe, Octal 376 ~ - (<p> には実際の特殊文字が表示されます。) - ファイル中の <Nul> 文字は内部的には <NL> として保存さ - れていますが、次のように表示されます: - <^@> 0, Hex 00, Octal 000 ~ - 合成文字も表示されます。'maxcombine' の設定は影響しま - せん。 - 覚え方: Get Ascii value (アスキーコードを取得) - {Vi にはない} - - *g8* -g8 カーソル位置の文字のバイト列を 16 進数で表示します。エ - ンコーディングが |UTF-8| の場合のみ正しく機能します。 - 合成文字も表示されます。'maxcombine' の設定は影響しま - せん。 - 2 文字の合成文字が結合されている文字の表示例: - e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ - {Vi にはない} {|+multi_byte| が有効な場合のみ利用でき - ます} - - *8g8* -8g8 カーソル以降の不正な UTF-8 バイト列を検索します。 - 次の二つの状況で機能します。 - 1. 'encoding' が 8-bit エンコーディングの場合。 - 2. 'encoding' が "utf-8" で、'fileencoding' が 8-bit - エンコーディングの場合。 - UTF-8 のファイルを開いたはずが、不正なバイト列が含まれ - ていて、別の 8-bit エンコーディングとして開かれてし - まった場合などに使ってください。 - 検索がファイル末尾に達しても、ファイル先頭に戻って検索 - を継続しません。 - Note: カーソルがすでに不正なバイト列の上にある場合は、 - カーソルは移動しません。 - {Vi にはない} {|+multi_byte| が有効な場合のみ利用でき - ます} - - *:p* *:pr* *:print* *E749* -:[range]p[rint] [flags] - 範囲 [range] の行を表示します (省略時は現在行を表示)。 - Note: テキストファイルを印刷する方法については - |:hardcopy| を参照してください。GUI を使用している場合 - は、メニューの File.Print から印刷できます。 - [flags] については |ex-flags| を参照してください。 - -:[range]p[rint] {count} [flags] - [range] の開始行から {count} 行を表示します([range]を - 省略した場合は現在行から開始 |cmdline-ranges|)。 - [flags] については |ex-flags| を参照してください。 - - *:P* *:Print* -:[range]P[rint] [count] [flags] - :print と同じです。シフトキーを長く押し続けてしまう人 - のために追加されました。 - Note: ユーザーコマンドでこのコマンドを上書きできます。 - [flags] については |ex-flags| を参照してください。 - - *:l* *:list* -:[range]l[ist] [count] [flags] - :print と同じですが、表示できない文字は '^'を付けて表 - 示し、行末に $ を置きます。表示は 'listchars' オプショ - ンの設定で変更できます。 - [flags] については |ex-flags| を参照してください。 - - *:nu* *:number* -:[range]nu[mber] [count] [flags] - :print と同じですが、先頭に行番号を付加します。 - (オプション 'highlight' と 'numberwidth' も参照) - [flags] については |ex-flags| を参照してください。 - - *:#* -:[range]# [count] [flags] - :number と同じです。 - - *:#!* -:#!{anything} 無視されます。そのため、次のようにして Vim スクリプト - を実行することができます: > - #!vim -S - echo "this is a Vim script" - quit -< - *:z* *E144* -:{range}z[+-^.=]{count} {range}に指定した行の周辺を表示します。{range} を省略 - した場合は現在行の周辺を表示します。行の範囲をどれだけ - 表示するかは {count} に指定します。{count} を省略した - 場合、ウィンドウが一つだけなら 'scroll' オプションの - 2 倍の数が、そうでなければカレントウィンドウの高さから - 3 を引いた数が使われます。 - - :z は修飾マークを付加して使うこともできます。次の効果 - があります。 - - 記号 開始行 終了行 新しいカーソル位置 ~ - ---- ------ ------ ---------- - + 現在行 1画面先 1画面先 - - 1画面前 現在行 現在行 - ^ 2画面前 1画面前 1画面前 - . 半画面前 半画面先 半画面先 - = 半画面前 半画面先 現在行 - - マークを省略した場合は、"+" が使われます。マークが "=" - の場合は、現在行の周りにマイナス記号で作った線が表示さ - れます。 - -:{range}z#[+-^.=]{count} *:z#* - ":z" と同じですが、行番号も表示します。 - {この機能が使えない Vi クローンもあります。引数が違う - 場合もあります} - - *:=* -:= [flags] 最終行の行番号を表示します。 - [flags] については |ex-flags| を参照してください。 - -:{range}= [flags] {range} で指定した範囲の最終行の行番号を表示します。た - とえば、次のコマンドは現在行の行番号を表示します。 - :.= - [flags] については |ex-flags| を参照してください。 - -:norm[al][!] {commands} *:norm* *:normal* - ノーマルモードコマンド {commands} を実行します。コマン - ドラインからノーマルモードのコマンドを実行できます。 - {commands} は、ノーマルモードで入力されたときと同じよ - うに実行されます。{commands} による変更は、一回のアン - ドゥで取り消されます。 - エラーが発生すると実行停止します。 - [!] を付けた場合はマップは適用されません。 - {commands} は実行を完了する (ノーマルモードに戻る) 必 - 要があります。 - {commands} が完了しない場合は、最後のコマンドが<Esc> - や <C-C> で終了したのと同じように動作します。 - ":normal" の実行中は画面は更新されません。挿入モードも - 必ず完了します (挿入モードを開始するには - |:startinsert| を参照)。":" コマンドも必ず完了します。 - "Q" や "gQ" を使って Ex モードを開始することはできませ - ん。 - {commands} の最初にスペースは置けません。そうしたい場 - 合はスペースの前にカウント指定の 1 (数字の 1) を置いて - ください。"1 " は 1 つのスペースになります。 - {command} の実行ではオプション 'insertmode' は無視され - ます。'|' は :normal コマンドの一部として処理されるの - で、他のコマンドを続けて書けません。:normal コマンドは - 'maxmapdepth' の制限内で再帰的に呼び出すことができま - す。 - このコマンドが再マップされないマップ|:noremap|から呼ば - れた場合でも、([!] を付けない限り) {commands} は再マッ - プされます - |:execute| コマンドには Vim スクリプトの式を指定できる - ので、印字可能文字を使って制御文字を入力することもでき - ます。例: > - :exe "normal \<c-w>\<c-w>" -< {Vi には、もちろんない} - {|+ex_extra|が有効な場合のみ利用できます} - -:{range}norm[al][!] {commands} *:normal-range* - {range} の各行に対してノーマルモードコマンド{commands} - を実行します。{commands} はカーソルが行頭にある状態で - 実行されます。その他は範囲指定の無い ":normal" コマン - ドと同じです。 - {Vi にはない} - {|+ex_extra|が有効な場合のみ利用できます} - - *:sh* *:shell* *E371* -:sh[ell] シェルを起動します。シェルを終了 ("exit"コマンドを実 - 行) すると Vim に戻ってきます。オプション 'shell' に設 - 定されているシェルコマンドを使います。 - *E360* - Note: Amiga では、コンパイラから QuickFix モードで Vim - が起動された場合には、コンパイラが標準入力を非対話型 - モードにしてしまうので使用できません。 - - *:!cmd* *:!* *E34* -:!{cmd} シェルで {cmd} を実行します。'shell' と 'shelltype'も - 参照。 - {cmd} の中の '!' は以前使用した外部プログラムに置 - き換えられます ('cpoptions' も参照)。'!' の前にバック - スラッシュがある場合はバックスラッシュが削除され '!' - は置き換えられません。 - 例: ":!ls" を実行後の ":!echo !\! \\!" は "echo ls ! - \!" と解釈、実行されます。 - 外部プログラムを実行した後で、開いているファイルのタイ - ムスタンプがチェックされます |timestamp|。 - {cmd} の中の '|' はシェルに渡されます。'|' を使って - Vim コマンドを続けて書くことはできません。(|:bar|参 - 照)。 - {cmd} の終わりを示す改行文字 (newline) 以降の文字は、 - 次の ":" コマンドとして解釈されます。改行文字の前に - バックスラッシュがある場合は、バックスラッシュは削除さ - れ、改行文字は {cmd} の一部として解釈されます。改行文 - 字の前にバックスラッシュがいくつあっても、一つだけが削 - 除されます。 - Unix ではシェルを非対話型モードで起動します。対話型 - モードで起動したい場合 (aliasを使いたい場合など) は、 - 'shellcmdflag' に "-ic" を設定してください。 - Win32の場合は|:!start|も参照。 - 外部プログラムはメッセージを出力するかもしれないので、 - 外部プログラムを実行した後にスクリーンが再描画されます。 - そのため、プログラムの出力を見逃してしまわないように、 - hit-enter プロンプトが表示されます。プロンプトを表示し - たくない場合は、次のようにします: > - :silent! !{cmd} -< これでスクリーンは再描画されません。外部プログラムが何 - かを出力した場合は CTRL-L や ":redraw!" で再描画できま - す。|shell-window|も参照。 - - *:!!* -:!! 最後の ":!{cmd}" を繰り返します。 - - *:ve* *:version* -:ve[rsion] エディタのバージョンを表示します。コンパイル時に - "__DATE__" が利用可能だった場合には、コンパイルされた - 日時も表示されます。利用不可だった場合は、リリースの最 - 終修正日時が表示されます。 - Vim の、どの機能が有効になっているかも表示されます。機 - 能名の前に '+' があれば、その機能は有効になっていま - す。'-' のときは無効になっています。 - 機能の有無を変えるには features.h を編集して、Vim をコ - ンパイルし直す必要があります。Vim スクリプトから機能の - 有無を確認するには |has()| を使います。以下に、機能の - 概要を示します。 - 行頭の文字はその機能が含まれる最小構成です: - T tiny - S small - N normal - B big - H huge - m 手動で組み込むか他の機能に依存 - (none) システム依存 - 例えば "N" と書いてあれば、その機能は - normal、big、huge バージョンの Vim に含まれます。 - - *+feature-list* - *+ARP* Amiga のみ: ARP サポートを含む -B *+arabic* |Arabic|言語サポート -N *+autocmd* |:autocmd|, 自動コマンド実行 -m *+balloon_eval* |balloon-eval| サポート。GUI が有効で、Netbeans/Sun - Workshop (|+sun_workshop|) または |+eval| が有効な場合 - に利用できます。 -N *+browse* |:browse| コマンド -N *+builtin_terms* 幾つかの組み込み端末 |builtin-terms| -B *++builtin_terms* 全部の組み込み端末 |builtin-terms| -N *+byte_offset* 'statusline'の'o'フラグ、|go|、|:goto|をサポート -N *+cindent* |'cindent'|, C言語インデント -N *+clientserver* UnixとWin32: リモート呼び出し |clientserver| - *+clipboard* |clipboard|サポート -N *+cmdline_compl* コマンドライン補完 |cmdline-completion| -N *+cmdline_hist* コマンドライン履歴 |cmdline-history| -N *+cmdline_info* |'showcmd'| と |'ruler'| -N *+comments* |'comments'| サポート -B *+conceal* "conceal" サポート。|conceal| |:syn-conceal| 他 参照。 -N *+cryptv* 暗号化サポート |encryption| -B *+cscope* |cscope| サポート -m *+cursorbind* |'cursorbind'| サポート -m *+cursorshape* |termcap-cursor-shape| サポート -m *+debug* Vim がデバッグ用にコンパイルされた -N *+dialog_gui* |:confirm| のGUIダイアログをサポート -N *+dialog_con* |:confirm| のコンソールダイアログをサポート -N *+dialog_con_gui* |:confirm| GUIとコンソールダイアログをサポート -N *+diff* |vimdiff|と'diff' -N *+digraphs* |digraphs| - *+dnd* "~レジスタ |quote_~|を使ったDnDのサポート -B *+emacs_tags* |emacs-tags| ファイル -N *+eval* 式評価(訳注:Vimスクリプト) |eval.txt| -N *+ex_extra* Vimの拡張Exコマンド: |:center|, |:left|、 - |:normal|、|:retab| 及び |:right| -N *+extra_search* |'hlsearch'| と |'incsearch'| オプション -B *+farsi* |farsi| 言語 -N *+file_in_path* |gf|, |CTRL-W_f| と |<cfile>| -N *+find_in_path* include ファイル検索: |[I|、|:isearch|、 - |CTRL-W_CTRL-I|、|:checkpath|、その他 -N *+folding* |folding| - *+footer* |gui-footer| - *+fork* Unix のみ: |fork| シェルコマンド - *+float* 浮動小数点数サポート -N *+gettext* メッセージの翻訳 |multi-lang| - *+GUI_Athena* Unix のみ: Athena |GUI| - *+GUI_neXtaw* Unix のみ: neXtaw |GUI| - *+GUI_GTK* Unix のみ: GTK+ |GUI| - *+GUI_Motif* Unix のみ: Motif |GUI| - *+GUI_Photon* QNX のみ: Photon |GUI| -m *+hangul_input* ハングル入力サポート |hangul| - *+iconv* iconv() 関数が組み込まれている - *+iconv/dyn* |iconv-dynamic| |/dyn| と同じ -N *+insert_expand* |insert_expand| 挿入モード補完 -N *+jumplist* |jumplist| -B *+keymap* |'keymap'| -B *+langmap* |'langmap'| -N *+libcall* |libcall()| -N *+linebreak* |'linebreak'|、|'breakat'| と |'showbreak'| -N *+lispindent* |'lisp'| -N *+listcmds* バッファリストや引数リストに対するVimコマンド - |buffer-hidden| |:argdelete| -N *+localmap* バッファローカルなマップのサポート |:map-local| -m *+lua* |Lua| インターフェース -m *+lua/dyn* |Lua| インターフェース |/dyn| -N *+menu* |:menu| -N *+mksession* |:mksession| -N *+modify_fname* |filename-modifiers| -N *+mouse* マウス操作 |mouse-using| -N *+mouseshape* |'mouseshape'| -B *+mouse_dec* Unix のみ: Dec端末マウス操作 |dec-mouse| -N *+mouse_gpm* Unix のみ: Linuxコンソールマウス操作 |gpm-mouse| -B *+mouse_netterm* Unix のみ: nettermマウス操作 |netterm-mouse| -N *+mouse_pterm* QNX のみ: ptermマウス操作 |qnx-terminal| -N *+mouse_sysmouse* Unix のみ: *BSD コンソールマウス操作 |sysmouse| -N *+mouse_xterm* Unix のみ: xtermマウス操作 |xterm-mouse| -B *+multi_byte* 16ビット、32 ビット文字 |multibyte| - *+multi_byte_ime* Win32 IMEサポート -N *+multi_lang* 多言語サポート |multi-lang| -m *+mzscheme* Mzscheme インターフェース |mzscheme| -m *+mzscheme/dyn* Mzscheme インターフェース |mzscheme-dynamic| |/dyn| -m *+netbeans_intg* |netbeans| -m *+ole* Win32 GUI のみ: |ole-interface| -N *+path_extra* 'path'や'tags'での上下階の検索 -m *+perl* Perl インターフェース |perl| -m *+perl/dyn* Perl インターフェース |perl-dynamic| |/dyn| -N *+persistent_undo* 永続 undo |undo-persistence| - *+postscript* |:hardcopy| でPostScriptファイルの書き出し -N *+printer* |:hardcopy| コマンド -H *+profile* |:profile| コマンド -m *+python* Python 2 インターフェース |python| -m *+python/dyn* Python 2 インターフェース |python-dynamic| |/dyn| -m *+python3* Python 3 インターフェース |python| -m *+python3/dyn* Python 3 インターフェース |python-dynamic| |/dyn| -N *+quickfix* |:make| と |quickfix| コマンド -N *+reltime* |reltime()| 関数, 'hlsearch'/'incsearch' タイムアウト, - 'redrawtime' オプション -B *+rightleft* 右から左へタイプ |'rightleft'| -m *+ruby* Ruby インターフェース |ruby| -m *+ruby/dyn* Ruby インターフェース |ruby-dynamic| |/dyn| -N *+scrollbind* |'scrollbind'| -B *+signs* |:sign| -N *+smartindent* |'smartindent'| -m *+sniff* SniFFインターフェース |sniff| -N *+startuptime* |--startuptime| 引数 -N *+statusline* オプション'statusline'、'rulerformat'と、 - 'titlestring'と'iconstring'の特殊フォーマット -m *+sun_workshop* |workshop| -N *+syntax* 構文強調 |syntax| - *+system()* Unix のみ: |+fork|の反対 -N *+tag_binary* タグファイル内の高速(二分探査)検索 |tag-binary-search| -N *+tag_old_static* 静的タグの古い方法 |tag-old-static| -m *+tag_any_white* tagsファイル内で空白文字を許す |tag-any-white| -m *+tcl* Tcl インターフェース |tcl| -m *+tcl/dyn* Tcl インターフェース |tcl-dynamic| |/dyn| - *+terminfo* |terminfo|でtermcapを代替 -N *+termresponse* |t_RV| と |v:termresponse| のサポート -N *+textobjects* |text-objects| 選択 - *+tgetent* 非Unix のみ: 外部termcapを使用可能 -N *+title* ウィンドウタイトルとアイコン設定 |'title'| |'icon'| -N *+toolbar* |gui-toolbar| -N *+user_commands* ユーザ定義コマンド |user-commands| -N *+viminfo* |'viminfo'| -N *+vertsplit* ウィンドウの垂直分割 |:vsplit| -N *+virtualedit* |'virtualedit'| -S *+visual* ビジュアルモード |Visual-mode| -N *+visualextra* 拡張ビジュアルモードコマンド |blockwise-operators| -N *+vreplace* |gR|と|gr| -N *+wildignore* |'wildignore'| -N *+wildmenu* |'wildmenu'| -S *+windows* 複数ウィンドウ -m *+writebackup* |'writebackup'|がデフォルトで有効 -m *+xim* Xインプットメソッド |xim| - *+xfontset* Xフォントセットサポート |xfontset| - *+xsmp* XSMP(X session management)サポート - *+xsmp_interact* 対話型XSMP(X session management)サポート -N *+xterm_clipboard* Unix のみ: xtermクリップボード操作 -m *+xterm_save* xtermのスクリーンを保存と復帰 |xterm-screens| -N *+X11* Unix のみ: ウィンドウタイトルを復帰可能 |X11| - - */dyn* *E370* *E448* - 機能が動的ライブラリを利用する場合には機能名に"/dyn" - が付加されます。 - -:ve[rsion] {nr} 現在は無視されます。これはかつて .vimrc の中でバージョ - ン番号をチェックするために使われていました。現在は - ":if" コマンドを使ってバージョン依存の振る舞いを記述で - きるので、削除されています。{Vi にはない} - - *:redi* *:redir* -:redi[r][!] > {file} コマンドの出力 (メッセージ) を {file} にリダイレクトし - ます。メッセージは、リダイレクトを終了するまで、ファイ - ルに出力されます。メッセージは画面にも表示されます。 - [!] を付けたときは、既存のファイルが上書きされます。 - [!] を省略した場合は、すでに {file} が存在していると、 - コマンドは失敗します。 - ":redir" を同時に複数使用することはできません。 - ":redir" を実行すると、新しいリダイレクトを開始する前 - に、すでに実行されている他のリダイレクトは閉じられま - す。 - 実行中のコマンドやメッセージがスクリーンに表示されない - ようにするには、コマンドを関数の中に書き、その関数を - ":silent call Function()" と実行してください。 - このコマンドの代わりに、オプション 'verbosefile' を使 - うこともできます。":redir" と同時に使うこともできま - す。 - {Vi にはない} - -:redi[r] >> {file} メッセージを {file} にリダイレクトします。 - {file} が既に存在する場合は追記します。 {Vi にはない} - -:redi[r] @{a-zA-Z} -:redi[r] @{a-zA-Z}> メッセージをレジスタ {a-z} にリダイレクトします。レジ - スタ名が大文字 {A-Z} の場合は、そのレジスタに追記され - ます。レジスタ名の後ろの ">" は省略可能です。 - {Vi にはない} -:redi[r] @{a-z}>> メッセージをレジスタ {a-z} に追記します。 {Vi にはない} - -:redi[r] @*> -:redi[r] @+> メッセージをセレクションまたはクリップボードにリダイレ - クトします。互換性のため、レジスタ名の後ろの ">" は省 - 略できます。|quotestar| と |quoteplus| を参照。 - {Vi にはない} -:redi[r] @*>> -:redi[r] @+>> メッセージをクリップボードに追記します。 - {Vi にはない} - -:redi[r] @"> メッセージを無名レジスタにリダイレクトします。互換性の - ため、レジスタ名の後ろの ">" は省略できます。 - {Vi にはない} -:redi[r] @">> メッセージを無名レジスタに追記します。{Vi にはない} - -:redi[r] => {var} メッセージを変数にリダイレクトします。変数が存在しない - 場合は、作成されます。変数がすでにある場合は、空文字列 - で初期化されます。 - リダイレクトが終了するまでは、変数は空のままです。 - 文字列変数のみ使えます。リダイレクトを開始した後で変数 - を変更したり、ロックしたり、変数タイプを変更したりする - と、それ以降のコマンドがメッセージを出力するときにエラー - が起こります。{Vi にはない} -:redi[r] =>> {var} メッセージを変数に追記します。文字列変数のみ使えます。 - {Vi にはない} - -:redi[r] END メッセージのリダイレクトを終了します。 {Vi にはない} - - *:sil* *:silent* -:sil[ent][!] {command} {command} を静かに実行します。メッセージは表示されず、 - メッセージ履歴にも残りません。 - [!] を付けた場合は、エラーが起きたときでもエラーメッ - セージは表示されず、コマンドやマップは中断されません。 - その場合でも |v:errmsg| はセットされます。 - [!] を付けない場合は、エラーメッセージは通常どおりに表 - 示されます。 - |:redir| によるリダイレクトは通常どおり機能します。 - |:silent| を使うとコマンドの出力をスクリーンに表示する - ことなくリダイレクトすることができます。例: > - :redir >/tmp/foobar - :silent g/Aap/p - :redir END -< ノーマルモードコマンドを静かに実行するには|:normal|コ - マンドを使用します。例えばメッセージを表示することなく - 文字列を検索するには: > - :silent exe "normal /path\<CR>" -< ":silent!" は失敗するかもしれないコマンドを実行すると - きには便利ですが、エラーが無視されてしまいます。例: > - :let v:errmsg = "" - :silent! /^begin - :if v:errmsg != "" - : ... パターンが見付からなかった -< ":silent" は hit-enter プロンプトも抑制します。外部プ - ログラムを実行したとき、その出力は表示されたままになっ - てしまいます。その場合は|CTRL-L|でスクリーンを綺麗にで - きます。 - ":silent menu ..." はコマンドをコマンドラインにエコーし - ないメニューを定義できます。しかしメニューに割り当てた - コマンドのメッセージは表示されます。表示しないようにす - るにはそのコマンド自身に ":silent" を付けてください: - ":silent menu .... :silent command" - - *:uns* *:unsilent* -:uns[ilent] {command} {command} を静かでなく実行します。|:silent| コマンドが - 使用されているときのみ違いがでます。 - |:silent| が使われていてもメッセージを表示したいときに - 使用します。次の例では、|:silent| を使ってファイル読み - 込みに関するメッセージを抑制しつつ、|:unsilent| を使っ - て各ファイルの最初の行を表示できるようにしています: > - :silent argdo unsilent echo expand('%') . ": " . getline(1) -< - - *:verb* *:verbose* -:[count]verb[ose] {command} - 'verbose' に [count] を設定した状態で {command} を実行 - します。[count] を省略した場合は1が設定されます。 - ":0verbose" として 'verbose' をゼロにすることもできま - す。 - ":silent" と一緒に使用すると、メッセージは生成されます - が、表示はされません。 - ":silent" と ":verbose" を一緒に使用するとメッセージを - 生成して |v:statusmsg| を確認することができます。例: > - :let v:statusmsg = "" - :silent verbose runtime foobar.vim - :if v:statusmsg != "" - : " foobar.vim が見付からない - :endif -< コマンドを連続させた場合は、":verbose"は最初のコマンド - だけに適用されます: > - :4verbose set verbose | set verbose -< verbose=4 ~ - verbose=0 ~ - メッセージをログファイルに出力するには 'verbosefile' - を使ってください。 - - *:verbose-cmd* -Vim のオプション、マップ、短縮入力、ユーザー定義関数、ユーザー定義コマンド、強 -調グループ、オートコマンド、を表示するとき、'verbose' がゼロ以外だと、それが設 -定された場所も表示されます。手動で設定したときは "Last set" メッセージは表示さ -れません。関数、ユーザーコマンド、オートコマンド、を実行中に設定された場合に -は、そのコマンドを定義したスクリプトが表示されます。 -{|+eval| が有効な場合のみ利用できます} - - *K* -K カーソル位置のキーワードを調べるためのプログラムを実行 - します。プログラムの名前はオプション 'keywordprg' (kp) - で設定します (初期設定は "man")。キーワードはアルファ - ベット、数字、'iskeyword' に設定された文字から構成され - ます。 - カーソルの下、もしくは右側のキーワード使用されます。次 - のコマンドで同じことができます: > - :!{program} {keyword} -< Vim の tools ディレクトリにサンプルプログラムがありま - す。'ref' という簡易スペルチェックプログラムです。 - 特別なケース: - - 'keywordprg' が空の場合は、":help" コマンドが使われ - ます。検索しやすくするために 'iskeyword' に文字を追 - 加すると良いでしょう。 - - 'keywordprg' が "man" の場合は、"K" の前に入力された - カウントが "man" とキーワードの間に挿入されます。例 - えば、"mkdir" にカーソルがあって、"2K" をを実行する - と、結果はこのようになります: > - !man 2 mkdir -< - 'keywordprg' が "man -s" の場合は、"K" の前に入力さ - れたカウントは "-s" の後に挿入されます。カウントを省 - 略した場合は、"-s" は除去されます。 - {Vi にはない} - - *v_K* -{Visual}K "K" と同じですが、キーワードにはビジュアル選択されたテ - キストが使用されます。複数行を選択したときは機能しませ - ん。{Vi にはない} - -[N]gs *gs* *:sl* *:sleep* -:[N]sl[eep] [N] [m] [N] 秒間なにもしません。[m] を付けると、[N] ミリ秒間ス - リープします。"gs" に指定する数値は常に秒単位です。省 - 略時は 1 秒間スリープします。 > - :sleep " 1 秒スリープ - :5sleep " 5 秒スリープ - :sleep 100m " 100 ミリ秒スリープ - 10gs " 10 秒スリープ -< CTRL-C で割り込むことができます(MS-DOSではCTRL-Break)。 - "gs" は "goto sleep" の略です。 - カーソルが表示可能な位置にある場合は、スリープしている - 間、カーソルはテキスト中に表示されます。 - {Vi にはない} - - *g_CTRL-A* -g CTRL-A MEM_PROFILING を define して Vim をコンパイルしたとき - み使えます (通常は使いません)。メモリ使用量の統計を表 - 示します。Vim をデバッグするときなどに使います。 - -============================================================================== -2. less、more の代わりに Vim を使う *less* - -less や more ではファイルを構文強調表示できません。代わりに、Vim を使うことが -できます。それには、シェルスクリプト "$VIMRUNTIME/macros/less.sh" を使います。 - -このシェルスクリプトは Vim スクリプト "$VIMRUNTIME/macros/less.vim" を使って、 -less のコマンドをシミュレートするためのマップを設定します。less コマンド以外は -通常どおり、Vim のコマンドを使うことができます。 - -完璧に同じ動作ではありません。例えば、短いファイルを表示する場合でも、Vim はス -クリーンを占有します。しかし、ほとんどの場合は満足に機能します。それにとにか -く、構文強調表示することができます。 - -"h" キーを押すと使用できるコマンドのショートヘルプが表示されます。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/version4.jax b/runtime.old/doc/version4.jax deleted file mode 100644 index 053cb8a80..000000000 --- a/runtime.old/doc/version4.jax +++ /dev/null @@ -1,367 +0,0 @@ -*version4.txt* For Vim バージョン 7.3. Last change: 2006 Apr 24 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -このドキュメント Vim 3.0 と Vim 4.0 との違いを一覧にしています。4.0 と述べてい -ますが、これもまたバージョン 4.1, 4.2, などなどがあります。 - -Vim 3.0 からアップグレードしてきた人にはこのファイルは重要です。不測の問題を避 -けるために注意深く読んでおいてください。 - -'backup' オプションの初期値を変更 |backup-changed| -バックアップファイルの拡張子を変更 |backup-extension| -スワップファイルの構造を変更 |swapfile-changed| -"-w scriptout" 引数を変更 |scriptout-changed| -Backspace と Delete キーについて |backspace-delete| -| のエスケープの方法を変更 |escape-bar| -キーコードを変更 |key-codes-changed| -端末のオプションを変更 |termcap-changed| -'errorformat' オプションを変更 |errorformat-changed| -'graphic' オプションがなくなりました |graphic-option-gone| -'yankendofline' オプションがなくなりました |ye-option-gone| -'icon' と 'title' の初期値を変更 |icon-changed| -'highlight' オプションを変更 |highlight-changed| -'tildeop' と 'weirdinvert' の略記を変更 |short-name-changed| -"v", "V", "CTRL-V" をビジュアルモードで使う |use-visual-cmds| -挿入モードでの CTRL-B がなくなりました |toggle-revins| - - -'backup' オプションの初期値を変更 *backup-changed* ---------------------------------- - -'backup' オプションの初期値はいままではオンでした。この結果オリジナルのファイ -ルがが上書きされた場合はバックアップファイルが常に作られることになっていました。 - -いまは 'backup'の初期値はオフになっています。ファイルへの書き込みが成功次第バッ -クアップファイルは削除されます。バックアップファイルを取っておきたい場合は -'backup' オプションを vimrc でオンにしておいてください。この変更がなされた理由 -は多くの人がバックアップファイルが残ることに Vi-compatible ではない、と不満を -唱えたからです。 |'backup'| - - -バックアップファイルの拡張子を変更 *backup-extension* ----------------------------------- - -バックアップファイルの拡張子は今までは ".bak"でした。他のプログラムでもこの拡 -張子を使うものがあるのとユーザーでこの拡張子でファイルのコピーを作っておく人も -いるのでもうすこしあいまいな拡張子"~"に変更されました。もう一つの利点はファイ -ル名が短くなることで、ファイル名が短いことを要求されるようなシステムでは便利で -す。例えば、MS-DOSでは "longfile.c" と "longfile.h" のバックアップファイルはど -ちらも"longfile.bak" になっていましたが、いまはこれらは "longfile.c~" と -"longfile.h~" になります。 - -もし ".bak" という拡張子の方がよいなら 'backupext'オプションで設定することがで -きます。 > - :set bex=.bak |'backupext'| - - -スワップファイルの構造を変更 *swapfile-changed* ------------------------------- - -スワップファイルの内容はいくつかのパラメーターに関して拡張されました。Vim はユー -ザー名と編集されたファイルに関する情報を保持しています。これによって復元がより -簡単になり、またスワップファイルがどこで作成されたものかを知ることができるよう -になりました。現在はスワップファイルの最初の部分で異なるバイトオーダーか -sizeof(int) を持つマシーンを区別することができます。そういった異なるマシーン -間でリカバーを行おうとすると、できないという旨のエラーメッセージが出ます。 - -この変更のため3.0と4.0との間のスワップファイルには互換性がありません。もし3.0 -のセッションでクラッシュしたスワップファイルがあるなら Vim 3.0 を使ってそのファ -イルをリカバーして下さい(4.0は使わないでください)。 |swap-file| - - -"-w scriptout" 引数を変更 *scriptout-changed* -------------------------- - -"vim -w scriptout" は今まではスクリプトアウトファイルに追加するのに使われてい -ました。これはあまり合理的とは言えなかったので新しいファイルを作成するように変 -更されました。ファイルが存在する場合は上書きされません(この方法で追加するのに -なれている人が今まであったファイルを破壊するのを防ぐためです。) -[後に再び削除された] |-w| - - -バックスペースとデリートキー *backspace-delete* ----------------------------- - -3.0ではデリートキーとバックスペースキーは挿入モードではどちらもバックスペース -のように機能していました。つまりカーソルの左側の文字を削除していました。4.0で -はデリートキーは新しい動作をするようになっています: コマンドラインでの動作がそ -うであるようにカーソルの下の文字を削除するのです。カーソルが行末の後に位置して -いて 'bs'オプションがセットされていると2つの行を連結します。 - |<Del>| |i_<Del>| - -3.0ではバックスペースキーは CTRL-H として定義されておりデリートキーは CTRL-? -と定義されていました。4.0ではバックスペースとデリートキーのキーコードは -termcap/termlib から読み込まれます。そして Unix では "stty erase" によって修 -正されます。このことは使っているキーボードによって削除するキーを決めている人に -とっては便利です。 - |<BS>| |i_<BS>| - -もしバックスペースとデリートキーの挿入モードでの動作が前の物がよければ次の行を -vimrc に加えてください。 - - inoremap ^? ^H - -また <BS> と <Del> キーの値を修正するのに次のものも必要かもしれません: - - set t_kb=^H - set t_kD=^? - -(^H を入力するには CTRL-V CTRL-H と入力し ^? を入力するには CTRL-V CTRL-? もし -くは <Del> と入力します。) - -もし t_kb の値が正しく t_kD の値が正しくなければ ":fixdel"コマンドを使ってくだ -さい、t_kb の値によって t_kDをセットします。これは複数の異なるターミナルを使っ -ているときに便利です。 |:fixdel| - -^H が <BS> か <Del> のように認識されると、バックスペースのように使われます。 - - -| のエスケープの方法を変更 *escape-bar* --------------------------- - -'cpoptions' に 'b'フラグがあると、バックスラッシュによってマッピングと略記の中 -で '|'をエスケープするのにバックスラッシュを使うことはできません。CTRL-Vだけが -エスケープさせることができ、これは Vi と同じ仕様です。もし Viコンパチブルで - Vim を使っていて "\|"をバーを含めるためにマッピングで使っている場合、"^V|" に -することが必要です。参照 |:bar| - - -キーコードを変更 *key-codes-changed* ----------------- - -キーコードの内部表現が大幅に変わりました。3.0 では1バイトコードは1つのキーを表 -すのに用いられました。このことは他の文字セットですでにこれらのコードを使ってい -た場合に問題が生じました。4.0 では3バイトコードが使われ一つの文字が混同されな -いようにしました。 |key-notation| - -もし vimrc のマッピングに1バイトコードを使っているなら4.0のコードに置き換える -必要があるでしょう。また3バイトコードを直接使う代わりに <> 表記を用いるべきで -す。下の表をご覧下さい。表には3.0のドキュメントで使われていた古い名前も載せら -れています。 - -<> の中のキーの名前はマッピングで直接使うことができます。つまりこれらの例をコ -ピー/ペーストするかその通りにタイプすることができるのです。<>表記はこの |<>| -で紹介されています。これを動作させるには 'B' と '<'フラグが 'cpoptions' の中に -あってはいけません。|'cpoptions'| - -old name new name old code old MS-DOS code ~ - hex dec hex dec ~ -<ESC> <Esc> -<TAB> <Tab> -<LF> <NL> <NewLine> <LineFeed> -<SPACE> <Space> -<NUL> <Nul> -<BELL> <Bell> -<BS> <BS> <BackSpace> -<INSERT> <Insert> -<DEL> <Del> <Delete> -<HOME> <Home> -<END> <End> -<PAGE_UP> <PageUp> -<PAGE_DOWN> <PageDown> - -<C_UP> <Up> 0x80 128 0xb0 176 -<C_DOWN> <Down> 0x81 129 0xb1 177 -<C_LEFT> <Left> 0x82 130 0xb2 178 -<C_RIGHT> <Right> 0x83 131 0xb3 179 -<SC_UP> <S-Up> 0x84 132 0xb4 180 -<SC_DOWN> <S-Down> 0x85 133 0xb5 181 -<SC_LEFT> <S-Left> 0x86 134 0xb6 182 -<SC_RIGHT> <S-Right> 0x87 135 0xb7 183 - -<F1> <F1> 0x88 136 0xb8 184 -<F2> <F2> 0x89 137 0xb9 185 -<F3> <F3> 0x8a 138 0xba 186 -<F4> <F4> 0x8b 139 0xbb 187 -<F5> <F5> 0x8c 140 0xbc 188 -<F6> <F6> 0x8d 141 0xbd 189 -<F7> <F7> 0x8e 142 0xbe 190 -<F8> <F8> 0x8f 143 0xbf 191 -<F9> <F9> 0x90 144 0xc0 192 -<F10> <F10> 0x91 145 0xc1 193 - -<SF1> <S-F1> 0x92 146 0xc2 194 -<SF2> <S-F2> 0x93 147 0xc3 195 -<SF3> <S-F3> 0x94 148 0xc4 196 -<SF4> <S-F4> 0x95 149 0xc5 197 -<SF5> <S-F5> 0x96 150 0xc6 198 -<SF6> <S-F6> 0x97 151 0xc7 199 -<SF7> <S-F7> 0x98 152 0xc8 200 -<SF8> <S-F8> 0x99 153 0xc9 201 -<SF9> <S-F9> 0x9a 154 0xca 202 -<SF10> <S-F10> 0x9b 155 0xcb 203 - -<HELP> <Help> 0x9c 156 0xcc 204 -<UNDO> <Undo> 0x9d 157 0xcd 205 - - (not used) 0x9e 158 0xce 206 - (not used) 0x9f 159 0xcf 207 - - -端末のオプションを変更 *termcap-changed* ----------------------- - -端末のオプションの名前は、termcap でこれらのオプションに対応するエントリーの名 -前に変更されました。すべての端末のオプションは t_xx という形式の名前を持ち、 -xx が termcap でのエントリーの名前です。termcap の設定を誤っているか不完全であ -る場合か、ハイライトのオプションを他の値にセットしている場合でなければ普段はこ -れらのオプションは使われません。 |terminal-options| - -いくつかのキーに関しては termcap のエントリーに名前がないものがあるということ -に注意してください。そう言う場合は <> 表記を代わりに使ってください、またその表 -記をする方がどっちにしろよいです。 - -"t_ti" が "t_mr" (出力を逆にする/元に戻す)に変わり、"t_ts" が "t_ti"(端末を初 -期化する)に変わっていることに注意してください。また "t_ti"を使うときは十分に注 -意を払ってください。 - -old name new name meaning ~ -t_cdl t_DL 指定行数を削除 *t_cdl* -t_ci t_vi カーソルを見えなくする *t_ci* -t_cil t_AL 指定行数を挿入する *t_cil* -t_cm t_cm カーソルを移動 -t_cri t_RI カーソルを指定数右へ移動 *t_cri* -t_cv t_ve カーソルを見えるようにする *t_cv* -t_cvv t_vs カーソルを明確に見えるようにする*t_cvv* -t_dl t_dl 行を削除する -t_cs t_cs スクロールする範囲 -t_ed t_cl 画面をクリアする *t_ed* -t_el t_ce 行をクリアする *t_el* -t_il t_al 行を挿入する *t_il* - t_da スクリーンより上の描画が保存される - t_db スクリーンより下の描画が保存される -t_ke t_ke キーパッドモードから復帰 -t_ks t_ks キーパッドモードに移行 -t_ms t_ms 強調表示モードでカーソルの動きをセーブする -t_se t_se ノーマルモード(アンドゥ t_so) -t_so t_so シフトアウトモード(標準出力) -t_ti t_mr ハイライトを逆にする -t_tb t_md 太字モード *t_tb* -t_tp t_me ハイライト終わり *t_tp* -t_sr t_sr 逆にスクロールする -t_te t_te termcap モードから出る -t_ts t_ti termcap モードに移行 ョ *t_ts_old* -t_vb t_vb ビジュアルベル -t_csc t_CS スクロール範囲相対カーソル移動モード *t_csc* - -t_ku t_ku <Up> 上矢印キー -t_kd t_kd <Down> 下矢印キー -t_kr t_kr <Right> 右矢印キー -t_kl t_kl <Left> 左矢印キー -t_sku <S-Up> シフト+上矢印キー *t_sku* -t_skd <S-Down> シフト+下矢印キー *t_skd* -t_skr t_%i <S-Right> シフト+右矢印キー *t_skr* -t_skl t_#4 <S-Left> シフト+左矢印キー *t_skl* -t_f1 t_k1 <F1> ファンクションキー1 *t_f1* -t_f2 t_k2 <F2> ファンクションキー2 *t_f2* -t_f3 t_k3 <F3> ファンクションキー3 *t_f3* -t_f4 t_k4 <F4> ファンクションキー4 *t_f4* -t_f5 t_k5 <F5> ファンクションキー5 *t_f5* -t_f6 t_k6 <F6> ファンクションキー6 *t_f6* -t_f7 t_k7 <F7> ファンクションキー7 *t_f7* -t_f8 t_k8 <F8> ファンクションキー8 *t_f8* -t_f9 t_k9 <F9> ファンクションキー9 *t_f9* -t_f10 t_k; <F10> ファンクションキー10 *t_f10* -t_sf1 <S-F1> シフト+ファンクションキー1 *t_sf1* -t_sf2 <S-F2> シフト+ファンクションキー2 *t_sf2* -t_sf3 <S-F3> シフト+ファンクションキー3 *t_sf3* -t_sf4 <S-F4> シフト+ファンクションキー4 *t_sf4* -t_sf5 <S-F5> シフト+ファンクションキー5 *t_sf5* -t_sf6 <S-F6> シフト+ファンクションキー6 *t_sf6* -t_sf7 <S-F7> シフト+ファンクションキー7 *t_sf7* -t_sf8 <S-F8> シフト+ファンクションキー8 *t_sf8* -t_sf9 <S-F9> シフト+ファンクションキー9 *t_sf9* -t_sf10 <S-F10> シフト+ファンクションキー10 *t_sf10* -t_help t_%1 <Help> ヘルプキー *t_help* -t_undo t_&8 <Undo> アンドゥキー *t_undo* - - -'errorformat' オプションを変更 *errorformat-changed* ------------------------------- - -'errorformat'がコンマで区切っていくつかのフォーマットで定義できるようになりま -した。初めにマッチしたフォーマットが使われます。初期値で多くの一般的なフォーマッ -トを認識できるように調整されました。 |errorformat| - -コンマを含むフォーマットがある場合バックスラッシュを前置する必要があります。こ -の時 :set コマンドが一つ取ってしまうのでバックスラッシュは二つ重ねてください。 - - -'graphic' オプションがなくなりました *graphic-option-gone* ------------------------------------- - -'graphic' オプションは <~> と 0xa0の文字をスクリーンに直接表示させるために使わ -れていました。いまは 'isprint'オプションがこのかわりになりますし、もっと強化さ -れています。初期の設定は同じで前に'graphic' オプションを vimrc でセットしてい -る場合のみ気をつける必要があります。 |'isprint'| - - -'yankendofline' オプションがなくなりました *ye-option-gone* ------------------------------------------- - -'yankendofline'オプションがなくなりました。かわりに次のマッピングを使うことが -できます。 - :map Y y$ - - -'icon' と 'title' オプションの初期値を変更 *icon-changed* ------------------------------------------- - -"Thanks for flying Vim" のタイトルが残るのを避けるために、'title' オプションは -もとのタイトルを復元できる場合にのみ初期値でオンになるようになりました。 - |'title'| - -'icon' オプションの初期値は 'title'オプションのように元の値を復元できるかどう -かによるようになりました。もしアイコンのタイトルを変更するのが嫌であれば次の行 -をvimrc に加えてください。 |'icon'| - :set noicon - - -'highlight' オプションを変更 *highlight-changed* ----------------------------- - -'i'フラグは反転を意味するフラグではなく斜体のハイライトの意味になりました。今 -まで 'i' フラグが意味していた反転ハイライトには 'r'フラグが使われるようになり -ました。普通はこの変更による違いは気づかないかもしれません。というのはほとんど -の端末では斜体表示はサポートされていない上、斜体表示が使えないときは反転モード -が使われるからです。 |'highlight'| - -'highlight' オプションでセットされるアイテムのうち定義されていないアイテムは従 -来は反転モードで表示されていましたが、'highlight' でのそのアイテムのデフォルト -で設定されている値から引っ張ってきてそれが使われるようになりました。 - - -'tildeop' と 'weirdinvert' の略記名を変更 *short-name-changed* ------------------------------------------ - -'to' ( 'tildeop' の略記名) は 'top' に変更 |'tildeop'| -'wi' ( 'weirdinvert' の略記名) は 'wiv' に変更 |'weirdinvert'| - -これは Vi が 'wi' を 'window' の略記名に使っており 'to' を 'timeout'の略記名と -して使っているために変更されました。このことはこれらのオプションをセットしよう -とした場合エラーメッセージはでないけれども動作が違ってくることになります。 - - -ビジュアルモードで "v", "V", "CTRL-V" を使う *use-visual-cmds* --------------------------------------------- - -ビジュアルモードにおいては "v", "V", "CTRL-V"はビジュアルモードを終了させるの -に使われてきました。いまはビジュアルモードが一致するタイプにおいてのみ終了させ -るのに使われるようになりました。そうでない場合はビジュアルモードのタイプが変わ -ります。どんな状況でもビジュアルモードをなにも行わずに終了させるにはESC キーを -利用してください。 |v_V| - - -挿入モードでの CTRL-B を削除 *toggle-revins* ----------------------------------- - -いままでは CTRL-B は 'revins'オプションのオン/オフをトグルするのにつかわれてい -ました。このことは、この動作を知らないで誤ってCTRL-Bを押してしまった場合、どう -やってアンドゥしてよいか気づくのが困難でした。ほとんどの人はこの機能を使ってい -ないので初期値では使えないようにしました。もしこの機能を使いたいならばコンパイ -ルするときにRIGHTLEFT を feature.h で define してください。 |'revins'| - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/vi_diff.jax b/runtime.old/doc/vi_diff.jax deleted file mode 100644 index cdb20bd52..000000000 --- a/runtime.old/doc/vi_diff.jax +++ /dev/null @@ -1,1047 +0,0 @@ -*vi_diff.txt* For Vim バージョン 7.3. Last change: 2010 Oct 11 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -Vim と Vi の違い *vi-differences* - -ヘルプファイルを通して Vim と Vi/Exの違いはねじれ括弧の中で "{Vi にはない機能 -です}"のように示されています。このファイルは他のファイルで触れられていない部分 -のみを列挙します。それと違いの概略を説明します。 - -Vim は大体において POSIX 1003.2-1 に従っています。知られている唯一の足りないコ -マンドは ":open" コマンドです。細かな違いはたぶんたくさんあります(Vimが間違っ -ているか、Posixの指標がはずれているかのどちらか)。 - -1. シミュレートされているコマンド |simulated-command| -2. なくなっているオプション |missing-options| -3. 制限 |limits| -4. もっとも興味深い機能追加 |vim-additions| -5. Vim の他の特徴 |other-features| -6. コマンドライン引数 |cmdline-arguments| -7. POSIX 準拠 |posix-compliance| - -============================================================================== -1. シミュレートされているコマンド *simulated-command* - -このコマンドは Vi にはありますが Vim ではシミュレートしているだけです。 - - *:o* *:op* *:open* -:[range]o[pen] |:visual|と同様。Exモードを終了します。 - {Vi: オープンモードで編集を開始する} - -:[range]o[pen] /pattern/ 上と同様で、さらに現在行の中で"pattern"にマッ - チする桁へカーソルを移動します。 - -Vimにオープンモードはありません。まったく便利ではないからです。Viなら":open"で -オープンモードを開始しますが、VimではExモードを抜けます。その結果、Viの場合と -同じコマンドが実行できるようになります。ただ、1行だけを再描画するのでなく、画 -面全体を再描画する点が違います。 -============================================================================== -2. なくなっているオプション *missing-options* - -これらのオプションは Vi にはあって、Vim にはないものです。これらのオプションを -セットしてもエラーメッセージは出ませんが、設定した値は使われませんし表示もされ -ません。 - -autoprint (ap) 二者択一 (初期値 オン) *'autoprint'* *'ap'* -beautify (bf) 二者択一 (初期値 オフ) *'beautify'* *'bf'* -flash (fl) 二者択一 (初期値 ??) *'flash'* *'fl'* -graphic (gr) 二者択一 (初期値 オフ) *'graphic'* *'gr'* -hardtabs (ht) 数値 (初期値 8) *'hardtabs'* *'ht'* - ディスプレイ上で一つの <Tab> が移動するスペースの数 -mesg 二者択一 (初期値 オン) *'mesg'* -novice 二者択一 (初期値 オフ) *'novice'* -open 二者択一 (初期値 オン) *'open'* -optimize (op) 二者択一 (初期値 オフ) *'optimize'* *'op'* -redraw 二者択一 (初期値 オフ) *'redraw'* -slowopen (slow) 二者択一 (初期値 オフ) *'slowopen'* *'slow'* -sourceany 二者択一 (初期値 オフ) *'sourceany'* -w300 数値 (初期値 23) *'w300'* -w1200 数値 (初期値 23) *'w1200'* -w9600 数値 (初期値 23) *'w9600'* - -============================================================================== -3. 制限 *limits* - -Vim で編集できるファイルの制限はかなり少ないです。 {Vi: <Nul>文字を扱えず、ま -た 128をこえる文字を扱えません。行の長さにも制限がありますし、他にも多くの制限 -があります。} - - *E340* -行の最大の長さ 16-bit ints を使っているマシーン(Amiga と MS-DOS の - リアルモード): 32767 か 2147483647 文字。それより長 - い行は分割されます。 -最大行数 2147483647 行 -最大のファイルのサイズ long integer が32ビットである場合2147483647バイト(2 - ギガバイト)です。64ビットの長さであればもっと多くな - ります。またスワップファイル|swap-file|の為のディス - クの空き容量にも制限されます。 - *E75* -ファイルのパスの長さ Unix と Win32: 1024 文字か 256 文字(もしくはシステム - がサポートしている長さ分だけ) -ファイル名の長さ Unix と Win32: 1024 文字か 256 文字 -展開されたオプションの文字列の長さ - Unix と Win32: 1024 文字か 256 文字 -表示される最大の長さ Unix と Win32: 1024 文字か 256 文字 -マッピングでの lhs の最大の長さ - 50 文字 -異なるハイライトの種類の数: 30000以上 -数値変数の範囲: -2147483648 から 2147483647 (64ビットシステムではそれ以上) -タグファイルにおける一行の最大の長さ: 512 バイト - -アンドゥとレジスターの中のテキストに関する情報はメモリーに保持されます。ですの -で、使用可能な(仮想)メモリーの量を超えて(大きな)変更を行っている場合はアンドゥ -レベルの数とレジスターに保持されうるテキストは制限されることになります。コマン -ドライン履歴やクイックフィクスモードでのエラーメッセージなどの他のものもまたメ -モリーに保持されます。 - -メモリーの使い方を制限する --------------------------- - -'maxmem' ( 'mm' ) オプションは一つのバッファに使われるメモリーの最大の量(キ -ロバイトで)を決めるのに使います。'maxmemtot' はすべてのバッファで使われるメ -モリーの最大の量(キロバイトで)を決めるのに使います。Amiga と MS-DOS では -'maxmemtot' は使えるメモリーの量に依存して設定されます。 -これらは厳格な制限ではなく、いつテキストをスワップファイルに移動するかの目安で -す。もし Vim がファイルにスワップを行うのが嫌であれば 'maxmem' と'maxmemtot' -の値をかなり大きい値に設定しておきます。そうするとスワップファイルはリカバリー -の時にのみ使われるようになります。もしどんなスワップファイルも欲しくなければ -'updatecount' を 0 に設定するか、Vim を起動するときに "-n" 引数をつけます。 - -============================================================================== -4. もっとも興味深い機能追加 *vim-additions* - -Vi コンパチビリティ |'compatible'| - Vim には Vi の99%の機能が含まれますが、Vi のうちのいくつかはバグか少な - くとも改良が必要だと考えられるものがあります。しかしそれでもなお Vim は - 可能な限り「本当の」 Vi のように振る舞うモードで起動します。Vim にもう - 少しよい動作をして欲しい場合は 'compatible' オプションを解除してみてく - ださい。 - :set nocompatible - それか Vim を "-N" 引数つきで起動してください: - vim -N - もし .vimrc ファイルがあれば'nocompatible'つきでVimが起動します。 - |startup| も見てください。'cpoptions' オプションはたくさんの特定のアイ - テムに関する Viと同一の動作をするかどうかのオン/オフを切り替えることが - できます。 - -様々なシステムのサポート - Vim は次のシステムで利用できます: - - すべての Unix システム (テストされたすべてのシステムで動作しますが - GUI と Perl インターフェースはどこでも動作するわけではないかもしれま - せん)。 - - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). - - リアルモードの MS-DOS (他のドライバーは必要ありません) - - プロテクトモードの Windows 3.1 と MS-DOS (DPMI ドライバーが必要です) - - Windows 95 と Windows NT、ロングファイル名をサポート - - OS/2 (emx.dll が必要です) - - Atari MiNT - - VMS - - BeOS - - Macintosh - - Risc OS - - IBM OS/390 - Note: いくつかのシステムではリソース使用量を削減するために機能を無効に - する必要があります(特にMS-DOS)。いくつかの時代後れのシステムでは以前の - バージョンのVimを使わねばなりません。 - -多段アンドゥ |undo| - 'u' は時をさかのぼり、'CTRL-R' は再び進めます。変更を覚えておく回数を - 'undolevels' オプションでセットしてください(初期値 1000)。'undolevels' - を0にセットすると Vi コンパチブルのアンドゥになります。-1 にセットする - とアンドゥできないようになります。 - - あるバッファに対する変更をすべてアンドゥした場合は、バッファはなに - も変更されていないと見做されます。つまり <!> なしで :q で終了させること - ができます。 - 変更をアンドゥしてその後新しい変更をすると、Vimのアンドゥツリーにブラ - ンチが作られます。これにより、テキストを永遠に失うという危険性なしにテ - キストをどの状態にでも戻すことができます。|undo-tree| - -グラフィカルユーザーインターフェース(GUI) |gui| - GUI (メニュー、マウス、スクロールバー、などなど)のサポートが含められま - した。独自のメニューを定義することもできます。CTRL/SHIFT/ALT とキーの組 - み合わではなく特殊なキーとマウスの組み合わせというよりよい方法がサポー - トされます。さまざまなプラットフォーム、 X11 (Motif と Athena インター - フェース)、Win32 (Windows95 か、より最新のもの),BeOS, Amiga, Macintosh - でサポートされています。 - -複数のウィンドウとバッファ |windows.txt| - Vim ではスクリーンをいくつかのウィンドウに分けてそれぞれの中で異なる - バッファーを編集したり同じバッファを別の場所で編集したりできます。バッ - ファーはウィンドウに表示されていなくともロードして(変更を加えて)おくこ - ともできます。これは隠れたバッファと呼ばれます。この機能のために多くの - コマンドやオプションが追加されています。 - Vimはタブページを使うこともできます。各タブページは1個以上のウィンドウ - を含みます。タブラベルを表示する行を使ってこれらのタブを素早く切替える - ことができます。|tab-page| - -構文ハイライト |:syntax| - Vim ではキーワードやパターンやその他のものをハイライトすることができま - す。これは ":syntax" コマンドで定義し、ほとんどの言語やファイルのタイプ - に対してハイライトをつけることができます。C、C++、Java、Pascal、 - Makefiles、シェルスクリプト、などなどの多くの一般的な言語のうちのほとん - どのためのハイライト定義ファイルはすでに含まれています。ハイライトに使 - われる色は普通の端末で定義することができ、色端末と GUI では - |:highlight| コマンドで定義できます。色を変更するのに便利な方法は - |:colorscheme|コマンドを使うことです。 - ハイライトされたテキストをHTMLにエクスポートすることができます - |convert-to-HTML|。ハイライトできる他の要素は、検索文字列のマッチ部分 - |'hlsearch'|、対応する括弧 |matchparen|、カーソル行とカーソル桁 - |'cursorline'| |'cursorcolumn'|です。 - -スペルチェック |spell| - オプション'spell'がセットされていると、スペリングの間違いがハイライト - されます。現在のところ約40の言語がサポートされています。言語はオプショ - ン'spelllang'で選択できます。ソースコード中ではコメントと文字列だけが - スペルチェックされます。 - -折畳み |folding| - 複数行の範囲を一行の「折畳まれた」行として表示することができます。これ - によりファイルを一望することができ、テキストブロック間を素早く移動する - ことが可能になります。折畳みの設定は手動、ファイルのシンタックス、イン - デント等々で設定することができます。 - -Diffモード |diff| - ファイルの2つのバージョンの差分をハイライトして表示することができます。 - テキストの一致する部分は折り畳みされます。コマンドを使って片方のバー - ジョンのテキストをもう一方へ移動することができます。 - -プラグイン |add-plugin| - プラグインファイルを正しいディレクトリにただ置くだけで機能追加ができま - す。これは他人が書いたVimスクリプトを使い始める簡単な方法です。プラグ - インは全ての種類のファイルについて設定することもできますし、ある1つの - ファイルタイプについて設定することも可能です。 - -一連のコマンドを繰り返す |q| - "q{c}"で名前付きレジスター{c}にタイプする文字の記録を始めます。後に続 - く"q" は記録を終了します。そしてレジスターにあるコマンドは"@{c}"コマン - ドで実行することができます。これは複雑な動作を繰り返すときに非常に便利 - です。 - -柔軟な挿入モード |ins-special-special| - ファイルを動き回るのに矢印キーを挿入モードで使うことができます。このこ - とはアンドゥとリドゥを考えると挿入モードが二つに分かれることになります - - CTRL-O は一つのノーマルモードのコマンドを実行するのに使うことができま - す。これはつまり <Esc> キーを打ってコマンドを打ってからそれから |a| を - 打ったのとほとんど同じことです。 - -ビジュアルモード |Visual-mode| - ビジュアルモードは、初めにいくつかのテキストを選択してからそれに対して - コマンドを実行するのに使うことができます。これは初めに演算コマンドを与 - えてからその演算を施すテキストの最後まで移動するコマンドを実行するもう - 一つの(簡単な)方法です。 - |v| と |V| はビジュアルモードを開始します。|v|は文字ごとに選択し |V| - は行ごとに選択します。カーソルを動かしてビジュアル部分を広げ、その部分 - はスクリーン上でハイライトされます。"o" を打つことでビジュアルなテキス - ト部分の反対側の端が動かされることになります。ビジュアルなテキスト部分 - には次の演算を施すことができます: - d 削除 - c 変更 - y ヤンク - > or < インデントを挿入/削除 - ! 外部プログラムを使ってフィルターを施す - = インデントを通してフィルターを施す - : ビジュアルな行に対して |:| コマンドを始める - gq 'textwidth' 桁位置にテキストを整形する - J 行を連結する - ~ 大文字小文字を入れ換える - u 小文字にする - U 大文字にする - -ブロック演算コマンド |visual-block| - 長方形のテキストがビジュアルモードを使って選択することができます。 - CTRL-V でビジュアルモードを開始します。選択されたブロックは "d" で削除 - したり 'y' でヤンクしたり大文字小文字を "~"、"u"、"U" で変えることがで - きます。削除もしくはヤンクされたブロックは "p" か "P" コマンドでテキス - トに挿入することができます。 - -ヘルプシステム |:help| - ヘルプはウィンドウの中に表示されます。検索したりするテキストの中を移動 - する普通のコマンドはそのまま使えます。タグも複数のヘルプファイルの間を - 移動するのに使え、ハイパーテキストのリンクをクリックするような感覚で - す。|:help| コマンドは引数を取りますので検索したい情報に素早くジャンプ - できます。<F1> を押して素早くヘルプシステムにアクセスすることもできま - す。ヘルプファイルのインデックスファイルは 'helpfile' オプションで設定 - することができます。 - -コマンドライン編集/履歴 |cmdline-editing| - カーソルキーを使うことでコマンドラインのどの場所からでも挿入を行ったり - 削除を行ったりすることができます。右/左矢印キーは前/後に一つの文字移動 - するのに使うことができ、Shift キーを押しながら右/左矢印キーを押すと前/ - 後に一つの単語移動することができます。CTRL-B/CTRL-E はコマンドラインの - 初め/終わりに移動するのに使うことができます。 - - |cmdline-history| - コマンドラインは記録されます。上/下矢印キーを使うことで前のコマンドライ - ンを呼び出すことができます。'history' オプションで覚えておく行数を設定 - することができます。検索パターンのコマンド履歴はまた別に分かれていま - す。 - -コマンドライン補完 |cmdline-completion| - コマンドライン(スクリーンの一番下で)でなんらかの作業をしているときに - <Tab> キーを押すと補完を行うことができます。 - what example ~ - - コマンド :e<Tab> - - タグ :ta scr<Tab> - - オプション :set sc<Tab> - - オプションの値 :set hf=<Tab> - - ファイル名 :e ve<Tab> - - その他 - - 複数マッチしたものがある場合は、CTRL-N (次)と CTRL-P (前)でマッチしたも - のの間を移動することができます。<Tab> は CTRL-N のように振る舞います - が、マッチしたものの最後で押すと最初にマッチしたものに戻ります。 - - 'wildchar' オプションでコマンドライン補完に利用する文字を設定できま - す。デフォルトは<Tab>です。複数の補完候補がある不完全な状態でCTRL-Dを - タイプすることで、全ての補完候補を表示することができます。CTRL-Aではす - べての候補を入力することができます。CTRL-Lでは候補内で、一致する最長部 - 分までを入力します。 - -挿入モードでの補完 |ins-completion| - 挿入モードで CTRL-N と CTRL-P を使うことでどこかに現れる単語を補完する - ことができます。 |i_CTRL-N| - CTRL-X を使うことでもう一つのモードに入ることができます。どの補完を行う - ことができるかというと: - |i_CTRL-X_CTRL-F| ファイル名 - |i_CTRL-X_CTRL-K| 辞書'dictionary'ファイルにある単語 - |i_CTRL-X_CTRL-T| 類語辞典'thesaurus'ファイルにある単語 - |i_CTRL-X_CTRL-I| インクルードされるファイルにある単語 - |i_CTRL-X_CTRL-L| すべての行 - |i_CTRL-X_CTRL-]| タグファイルにある単語 - |i_CTRL-X_CTRL-D| マクロ定義 - |i_CTRL-X_CTRL-O| オムニ補完: ファイルタイプに特化した賢い補完 - など。 - -長い行のサポート |'wrap'| |'linebreak'| - 'wrap' オプションがオフであれば、長い行は折り返されずに行の一部分だけが - 表示されます。カーソルが表示されていない部分に移動するとスクリーンも横 - にスクロールします。横にスクロールする桁数の最小の値を 'sidescroll' オ - プションで設定することができます。|zh| と |zl| コマンドは横スクロールに - 使うことができます。あるいは、'linebreak' オプションがセットされている - 場合は長い行は単語の間で切られます。こうすることで段落を一つの行にして - 編集することが容易になります(例: 後で編集中のテキストを DTP プログラム - に持っていく場合)。カーソルを上下するには |gk| と |gj| コマンドを使って - ください。 - -テキストの整形 |formatting| - 'textwidth' オプションを設定することで行の長さを自動的に制限することが - できます。このオプションはあまり便利ではなかった Vi での 'wrapmargin' - オプションを補助するものです。|gq| 演算コマンドはテキストの一部分を整 - 形するのに使うことができます(例えば、|gqap| は現在の段落を整形します)。 - テキストの位置に関するコマンドは |:center|, |:left|, |:right| です。 - -拡張正規表現 |pattern| - 様々なテキスト要素にマッチさせるための、多くの拡張正規表現の要素があり - ます。たとえば"\n"は改行にマッチします。 - "x\{2,4}"は、"x"が2個から4個続くテキストにマッチします。 - "\s"は空白文字にマッチします。 - -ディレクトリ、リモート、アーカイブの閲覧 |netrw| - Vimはファイルシステムをブラウズすることができます。単にディレクトリを - 編集します(訳註: :e {directory} とする)。そのリスト中を普通のコマンド - を使って移動し、<Enter>を押すとカーソル下のディレクトリやファイルに移 - ります。 - これはftp, http, sshなど越しのリモートファイルにも機能します。 - zipとtarのアーカイブもブラウズすることができます。|tar| |zip| -編集-コンパイル-編集 をスピードアップする |quickfix| - |:make| コマンドを使うことでコンパイルしてから初めのエラーにジャンプす - ることができます。コンパイラのエラーメッセージが書かれたファイルを解析 - できます。最初のエラーにジャンプします。 - - エラーファイルのそれぞれの行はファイルの名前、行番号、エラーメッセージ - という風に調べられます。'errorformat' オプションは多くのコンパイラーか - らの出力を扱うことができるように scanf のような形式の文字列のリストを指 - 定することができます。 - - |:cn| コマンドは次のエラーにジャンプするのに使うことができます。|:cl| - コマンドはすべてのエラーメッセージをリストします。他のコマンドも使うこ - とができます。'makeef' オプションはエラーメッセージが含まれるファイルの - 名前を指定します。'makeprg' オプションは |:make| コマンドで実行するプロ - グラムの名前を指定します。'shellpipe' オプションはコンパイラーからの出 - 力をエラーファイルに書き込むときに使われる文字列を指定します。 - -複数のファイルから検索する |:vimgrep| - 複数のファイルからパターンを検索することができます。この機能はVimの高 - 度な正規表現パターンを使い、すべてのシステム上で機能し、圧縮されたファ - イルも検索できます。 - -C プログラムのインデントを改善 |'cindent'| - 'cindent' オプションがオンの時はそれぞれのインデントは自動的に調整され - ます。C の文法はだいたい解釈されますし、さまざまなスタイルでのインデン - トは 'cinoptions' で設定することができます。インデントをするきっかけと - なるキーワードは 'cinkeys' で指定することができます。 - - コメントも自動的に整形することができ、'comments' オプションでどの文字が - コメントをスタートさせ終了させるのかを指定することができます。この機能 - は C のコードでもっともよく動作しますがメール(行の最初の ">")や他のタイ - プのテキストでもうまく動作します。|=| 演算コマンドで行を再インデントす - ることもできます。 - - 他にも多くの言語に対して自動インデントをするためのインデントプラグイン - が提供されています。|30.3| - -インクルードされるファイルの中から単語を探す |include-search| - |[i| コマンドはカーソルのしたの単語をインクルードされるファイルの中から - 検索することができます。'include' オプションをセットすることでファイル - をインクルードするコマンドのパターンを記述することができます(デフォルト - では C のプログラムで検索できるように設定してあります)。 - |[I| コマンドはマッチしたすべてをリストし、|[ CTRL-I| コマンドはマッチ - した場所にジャンプするコマンドです。 - |[d|, |[D|, |[ CTRL-D| も同様ですが、'define' オプションで指定されるパ - ターンにマッチする行にのみします - -自動コマンド |autocommand| - ファイルを読み込んだり書き込んだり別のバッファにジャンプしたりなどす - る時に、ファイル名によって自動的にコマンドを実行することができます。こ - れは C のプログラムを書いたり、ドキュメントを書いたり、普通のテキストを - 書いたりなどする時にオプションをセットしたりそれら特有のマッピングをし - たりするときに便利です。これを利用することで圧縮されたファイルを編集す - ることもできるようになります。 - -コマンドと表現 |expression| - 強力なスクリプト言語を形成するようにいくつかコマンドが追加されました。 - |:if| 条件によって実行します。例えば $TERM の値によってオプ - ションを変更したりできます。 - |:while| コマンドを繰り返します。 - |:for| リストをわたるループ。 - |:echo| 式の結果を表示します - |:let| 値を内部変数やオプションなどに割り当てます。 - 変数の型は数値、文字列、リスト、辞書。 - |:execute| 式からなるコマンドを実行します。 - |:try| 例外を捕捉します。 - などなど。|eval|を参照。 - デバッグとプロファイリングがサポートされています。|debug-scripts| - |profile| - もしこれで十分でないなら、|Python|, |Ruby|, |Tcl|, |Lua|, |Perl|, - |MzScheme| のインターフェイスが提供されています。 - -Viminfo |viminfo-file| - コマンドライン履歴やマークやレジスターの内容を起動時に読み込まれるファ - イルに保存しておくことができます。Vim を終了させた後、再び Vim を起動し - たときでも検索コマンドを繰り返したりコマンドラインを繰り返したりできま - す。|'0| を使って最後に編集していた場所にジャンプすることもまた可能で - す。'viminfo' オプションで .viminfo ファイルに保存されるアイテムを選択 - することができます。初期値はオフです。 - -印刷 |printing| - コマンド|:hardcopy|はテキストをプリンタに送信します。構文強調も含まれ - ます。 -マウスサポート |mouse-using| - マウスは GUI バージョンと Unix、sysmouse がある BSD、gpm がある Linux、 - MS-DOS、Win32 上の xterm でサポートされています。カーソルの場所を変え - たりビジュアル領域を選択したりレジスターの内容を張りつけたりするのに使 - うことができます。 - -キーの名前の使い方 |<>| |key-notation| - 特殊なキーはすべて <Up>、<End> などなどのような書き方ができるようになり - ました。この名前はマッピングでも使うことができますしそれらを編集するの - が容易になります。 - -バイナリーファイルを編集する |edit-binary| - Vim はバイナリーファイルを編集することができます。実行形式のファイルを - 壊すことなくいくつかの文字を変更することができます。Vim は NUL 文字を削 - 除しません(内部では <NL> と表されています)。 - |-b| バイナリーファイルの編集を始める時のコマンドライン引数 - |'binary'| |-b| によってセットされるオプションで、ファイルの最後の - 行に <EOL> を付加するのをやめさせます - -多言語のサポート |multi-lang| - ダブルバイトやマルチバイトエンコーディングのファイルを編集できます。 - フォントを切り替えずに多言語を同時に編集可能なUTF-8をサポートしていま - す。 |UTF-8| - メッセージやメニューが多くの言語に翻訳されています。 - -行を越えるカーソル移動 - オプション'virtualedit'がセットされていると、テキストがない場所を含め、 - 画面全体どこでもカーソルを移動させることができます。これは表や図を容易 - に編集できて便利です。 - -============================================================================== -5. その他の Vim の機能 *other-features* - -その他の優れた機能をランダムに集めてみました。 - - -Vim が "-s scriptfile" 付きで起動された場合、"scriptfile" から読み込まれる文字 -は実際あなたがそれをタイプしたように扱われます。もしエディタが終了する前にスク -リプトファイルの終わりに到達した場合は、さらにコンソールから文字を読み込みます - -"-w" オプションはタイプした文字をすべてスクリプトファイルに記録するのに使うこ -とができます。このファイルは後で別のファイルでその編集を繰り返したり、スクリプ -トファイルをに修正を加えてから繰り返しを実行したりするのに使うことができます。 - -"-o" オプションはそれに続く引数の数だけウィンドウを開きます。"-o4" は4つのウイ -ンドーを開きます。 - -Viはフルスクリーンで動作するためにいくつかのtermcapのエントリが必要でした。Vim -が必要とするのは"cm"エントリ(cursor motion)だけです。 - - -コマンドモードで: - -'showcmd' オプションがセットされていると、スクリーンの最後の行にコマンドの文字 -列が表示されます。これらはコマンドが終了した後に削除されます。 - -'ruler' オプションがセットされているとスクリーンの最後の行に現在のカーソルの位 -置が表示されます。 - -"U" は最後に変更した行からはなれた後でも、また "u" を実行した後でも動作します。 - -8bit 目がセットされている文字は表示されます。その文字が'isprint'オプションに含 -まれていなければ、'~' と 0xa0 の間の文字は "~?"、"~@"、"~A"、などなどのように -表示されます。 - -"][" は C の関数の次の終わりに移動します(一桁目が '}' の行)。 -"[]" は C の関数の前の終わりに移動します(一桁目が '}' の行)。 - -"]f"、"[f" と "gf" はカーソルの下のファイル名の編集を開始します。CTRL-W f は -カーソルの下のファイル名の編集をウィンドウを分割してそこで開始します。 - -"*" はカーソルの下の識別子を前方に検索し、"#" は後方に検索します。 -"K" はカーソルの下の識別子を引数として 'keywordprg' オプションに定義されている -プログラムを呼び出します。 - -'%' は前に数を前置することでそのファイルのパーセント数の場所にジャンプします。 -数を前置しない場合はくくられているテキストの中では対応する括弧に移動します。 - -CTRL-] コマンドでは、カーソルは識別子の真ん中にあります。 - -使ったタグは覚えておかれ、タグスタックに覚えておかれるコマンドは CTRL-T と - ":pop" と ":tag" です。 ":tags" はタグスタックの内容をリスト表示します。 - -'tags' オプションはタグファイル名のリストを設定することができます。ですので複 -数のタグファイルを使うことができます。ファイル名が '.' で始まる場合は '.' はそ -のファイルのパスに展開されます。こうすることで編集しているファイルがあるディレ -クトリと同じディレクトリのタグファイルを使うことができるようになります - -前に編集されたファイルは代替ファイルリストに覚えておかれます。CTRL-^ に数を前 -置することでこのリストのインデックスの番号のファイルにジャンプできます。 -":files"コマンドで開いたファイルの一覧を見ることができます。 -"#<N>"はリスト内の<N>番目のファイルの名前で置換されます。 -"#<"は現在のファイル名から拡張子を取り除いたもので置換されます。 - -検索パターンも強化されました。<NL> 文字を検索パターンや ":s" コマンドの文字列 -の一部に使うことができます。Vi では単にコマンドの終了と見做されます。 - -検索ではマッチした最後にカーソルをおくこともできますし、オフセット文字を使って -検索することもできます。 - -"~"、":next"、":Next"、"n"、"N" にカウントを前置することができるようになりまし -た。 - -'autowrite' オプションがセットされている場合でも ":next!" コマンドはファイルを -書き込みません。Vi ではファイルは上書きされましたが、これはバグだと思われます。 -というのもそういう動作は期待されませんし ":rewind!" コマンドでは書き込まれない -からです。 - -Vi では上書きモードで <CR> を打ち込んだときに文字を削除するのは 'ai' がセット -されている場合のみでした(しかし <Esc> キーが押されるまでは表示されませんでし -た)。Vim は常に文字を削除します(またすぐに表示します)。 - -:wnext コマンドが追加されました。":write" コマンドを実行して ":next" コマンド -を実行するのと同じです。 - -":w!" コマンドは上書き禁止されているファイルでも常に書き込みます。Vi では - ":!chmod+w %" してから ":set noro" としなければなりませんでした。 - -'tildeop' がセットされていると "~" は演算コマンドとして動作します(移動コマンド -を後に続けます)。 - -"J" (連結)コマンドを実行するときにピリオドの後でスペースを挿入するのを一つだけ -にするように 'joinspaces'オプションを再セットすることができます(Vi では2つのス -ペースが挿入されます)。 - -"cw" はいくつかの文字で構成されるホワイトスペースを変更できます(Vi では "cw"は -スペースを一つだけ変更するのに "dw" はすべてのホワイトスペースを削除するという -紛らわしい仕様でした)。 - -"o" と "O" は回数を前置することができます(Vi は表示の一部分を削除します)。 - -Ex コマンドの後につけるフラグはサポートされていません(予定もありません)。 - -UNIX システム以外では ":cd" コマンドはホームディレクトリーに移動するのではなく -(ホームディレクトリはないです)、現在のディレクトリを表示します。":pwd" はすべ -てのシステムで現在のディレクトリを表示します。 - -":cd"コマンドの後でもファイル名(引数リストや開いたファイル)は元のファイルを指 -します。Viではファイルに変更があると":cd"できません。そうでなければファイル名 -の解釈が変わってしまうからです。 - -":source!" コマンドはファイルから Vi コマンドを読み込みます。 - -":mkexrc" コマンドは現在の変更されているオプションとマッピングを ".exrc" ファ -イルに書き出すコマンドです。":mkvimrc" は ".vimrc" ファイルに書き出します。 - -マッピングで「最後が再帰的であるかどうか」のチェックはされません。つまり次のよ -うなマッピングもできます。 -":map! foo ^]foo". - -マッピングが数字で始まる場合は、Vi ではそのカウントが失われてしまっていました -(例: ":map g 4G" というマッピングを使っていると "7g" は4行目に移動してしまいま -した)。これは Vi のバグだと考えられます。Vim では多くの人が期待する動作である -ようにカウントを連結します(この例の場合は "74G" になります。 - -:put! コマンドは現在の行の上にレジスターの内容を挿入します。 - -Vi での "p" と "P" コマンドは挿入されるテキストが一行より短い場合は "." で繰り -返すことができませんでした。Vim では常に繰り返すことができます。 - -":noremap" コマンドは再マップされないマップを作るのに使うことができます。これ -は2つのキーの意味を交換するのに使うと便利です。":cmap",":cunmap",":cnoremap"は -コマンドライン編集でのみ動作するマッピングです。":imap",":iunmap",":inoremap" -は挿入モードのみで動作するマッピングを定義できます。同様なコマンドは略記にもあ -ります: ":noreabbrev",":iabbrev",":cabbrev", ":iunabbrev",":cunabbrev", -":inoreabbrev",":cnoreabbrev" - -Vi では ":map foo bar" は前の ":map bug foo" というマッピングを削除していまし -た。これはバグと思われますので Vim ではその仕様は含まれません。":unmap! foo" -は "map! bug foo" というマッピングを削除します。なぜならそうでなければマッピン -グを外すのが非常に困難になるからです(これは Vi と同じ動作です)。 - -':' レジスターは最後のコマンドラインを含んでいます。 -'%' レジスターは現在のファイル名を含んでいます。 -'.' レジスターは最後に挿入されたテキストを含んでいます。 - -":dis" コマンドはヤンクレジスターの内容を表示します。 - -CTRL-O/CTRL-I は古い/新しい場所に移動するのに使うことができます。これらの移動 -する場所は '' コマンドで移動する場所と同じですが他のファイルの中でもありえます。 -":jumps" コマンドは古い場所をリストします。 - -'shiftround' オプションがセットされていると ">" と "<" コマンドでは -'shiftwidth' の倍数になるようにインデントは調整されます。 - -'scrolljump' オプションはスクリーンからカーソルが出たときにスクロールする最小 -の行数を設定することができます。もしスクロールが遅い場合はこれをセットしてくだ -さい。 - -'scrolloff' オプションでカーソルの上や下に保持しておく最小の行数を設定できます。 -これを設定しておくとカーソルの前後を見渡せるようになります。かなり大きい数字に -セットしておけばカーソル行は常にウィンドウの中央に来ることになります。 - -大文字のマークはファイルを越えてジャンプするのに使うことができます。":marks" -コマンドは現在セットされているすべてのマークをリストします。"']"と"`]"は前に操 -作を行った場所の最後か、テキストを挿入したかプットした場所の最後に移動します。 -"'[" と "`[" は初めに移動します。 - -'shelltype' オプションは Amiga 上で使われるシェルのタイプを反映させるのに使う -ことができます。 - -'highlight' オプションはいくつかのコマンドで使われるハイライトモードを設定する -ことができます。 - -CTRL-A (加算) と CTRL-X (減算) コマンドが新たに追加されました。カウントを前置 -することもでき(初期値 1)、カーソルの下もしくは後の数字をその値の分加算/減算す -るのに使うことができます。数は10進数、8進数(0で始まります)、16進数(0xで始まり -ます)でもよいです。マクロを使うときに非常に便利です。 - -:set コマンドでは "inv" を前置することで二者択一のオプションは逆の意味にするこ -とができます。 - -Vi と Vim の両方で ":substitute" コマンドで CTRL-M を使うことで改行を挿入する -ことができます。Vi ではこのためにテキストに実際の CTRL-M を挿入することができ -なかったのですが、Vim では CTRL-V を前に挿入してから実際の CTRL-M をおくことが -できます。 - - -挿入モードで: - -'revins' オプションがセットされていると挿入は逆方向に向かってなされます。これ -はヘブライ語を入力するためです。普通の文字を挿入するときはカーソルは逆方向にな -りませんしテキストは右方向に動きます。バックスペース、CTRL-W、CTRL-U もまた逆 -方向に動作します。上書きモードではなんら影響しません。コンパイル時にのみ有効に -することができます。 - -オートインデントを削除するのにバックスペースキーをちょうど CTRL-D のように使う -ことができます。 - -'backspace' (bs) オプションが"eol"を含んでいると改行をこえてバックスペースした -り CTRL-U したり CTRL-W することができます。'backspace'が"start"を含んでいると -挿入の初めをこえてバックスペースすることができます。 - -'paste' オプションがセットされているといくつかのオプションが解除され挿入モード -でのマッピングと略記が使用不可になります。こうすることでウィンドウシステムでテ -キストを張りつけるときに不測の結果が生じるのを避けることができます。'paste'オ -プションが解除されればオプションの前の値が復元されます。 - -CTRL-T/CTRL-D はカーソルがどこの桁位置にあっても常に現在の行のインデントを挿 -入/削除します。 - -CTRL-@ (前に挿入したテキストを挿入する)は常に動作します(Vi: 初めの文字としてを -打ち込んだときにのみ)。 - -CTRL-A は CTRL-@ のように動作しますが挿入モードから抜けません。 - -CTRL-R {0-9a-z..} はレジスターの内容を挿入するのに使うことができます。 - -'smartindent' オプションがセットされていると、C プログラムはもっとうまく自動イ -ンデントされます。'cindent' オプションをセットしているとさらにうまくインデント -されます。 - -CTRL-Y と CTRL-E は現在のカーソルの上/下の文字をコピーするのに使うことができま -す。 - -CTRL-V を打った後に3桁の8進数を打つことができ、このバイトの値がテキストに一文 -字として挿入されます。キーボードからは打ち込めない内部の文字を使うときに便利で -す。 - -'expandtab' (et) がセットされていると <Tab> は適切な数のスペースに展開されま -す。 - -ウィンドーは常にバッファの内容を反映します(Vi ではテキストを変更したりそのほ -かいくつかの場合では行われませんでした)。 - -Vim が DIGRAPHS を定義してコンパイルされていれば digraph がサポートされます。 -普通の digraph のセットが含まれるようになり、":digraph" コマンドで見ることがで -きます。":digraph {char1}{char2} {number}" でさらに追加することもできます。 -"CTRL-K {char1} {char2}" とするか "{char1} BS {char2}" とすることで digraph を -入力できます( 'digraph' オプションがセットされている場合のみです)。 - -挿入をカウントを前置して行う場合、例 "10atest <Esc>"、Vi は初めの挿入に対して -のみ wrapmargin を扱うことができましたが、Vim ではすべてに対して扱います。 - -"i" か "a" コマンドでのカウント前置はすべてのテキストに対して利用できます。Vi -では一つの行に対してのみカウントを前置できました。"3iabc<NL>def<Esc>" は -"abcabcabc<NL>def" が Vi の動作で、"abc<NL>defabc<NL>defabc<NL>def" が Vim で -の動作です。 - - -コマンドラインモードで: - -<Esc> はコマンドラインを実行せずに抜けることができます。Vi ではコマンドライン -は実行されており、ほとんどの人が予測する動作とは違いました(<Esc> を打つことで -常にコマンドモードに戻るべきでしょう)。この問題をなんらかの曖昧なマクロで避け -るにはマクロでの <Esc> はコマンドを実行します。もし <Esc> で Vi のようにコマン -ドを実行したい場合は次のように修正できます。 - ":cmap ^V<Esc> ^V<CR>" - -一般: - -'ttimeout' オプションは 'timeout' オプションに似ていますが、カーソルかファンク -ションキーに対してのみ働きます。'timeoutlen' オプションは待つ時間をミリセコン -ド単位で指定することができます。'esckeys' オプションがセットされていない場合い、 -<Esc> キーで始まるカーソルとファンクションキーは挿入モードでは解釈されません。 - -端末文字列がそれぞれオプションとしてあります。termcap がサポートされていなかっ -たり独自の文字列に変更したい場合に利用することができます。 - -'fileformat' オプションは <EOL> を選択して設定するのに使います: "dos" -<CR><NL>, "unix" <NL>, "mac" <CR>。 -'fileformats' オプションが空でない場合、Vim は <EOL> のタイプを自動的に判断し -ようとします。'fileformat' オプションはそれに従ってセットされます。 - -ジョブコントロールを持たないシステム(古い Unix システムと Unix 以外のシステム) -ではCTRL-Z、":stop"、":suspend" コマンドは新しいシェルを起動します。 - -出力のための対話的なウィンドウなしで Vim が Amiga 上で起動された場合、ウィンドウ -が開かれます(そうして :sh コマンドは動作します)。|-d| 引数で編集する装置を指定 -することができます(例: "-d con:20/20/600/150")。 - -'columns' と 'lines' オプションはディスプレイの幅と高さを指定するのに使うこと -ができます。 - -ファイルの最初と最後の数行はオプションをセットするために読み込まれます。 -'modelines' オプションがどれだけの数の行を読み込もうとするかを決めることができ -ます(初期値は5です)。モードラインでどんな Ex コマンドも実行できる(重大なセキュ -リティ問題です)バージョンの Vi がありますがそれとは違うということに注意してく -ださい。 |trojan-horse| - -'insertmode' オプションがセットされていると(例えば .exrc で) Vim は挿入モード -で起動します。<Esc> キーを押すと元に戻ります。 - -アンドゥの情報はメモリーに保持されます。使用可能なメモリーの量でアンドゥの回数 -とアンドゥ可能なサイズが制限されます。このことは MS-DOS では問題になるかもしれ -ません。Amiga ではほとんど問題にならないですし、Unix と Win32 では大体において -決して問題になることはないです。 - -'backup' か 'writebackup' オプションがセットされていると: ファイルを上書きする -前にバックアップファイル(.bak)が作られます。"backup" オプションがセットされて -いるとバックアップファイルは残されたままになります。 - -Vim は変更されたファイルの一部分やメモリーに入りきらないものをに保持するため -にファイルの最後が ".swp" であるファイルを作成します。このファイルはクラッシュ -した編集セッションを "vim -r file" として復元するのに使われます。'updatecount' -オプションを0にするか Vim を "-n" オプションをつけて起動するとスワップファイル -を使うのをやめさせることができます。.swp ファイルをどこか別の場所に作成させたい -場合は'directory' オプションを設定してください。 - -Vim は8.3形式のファイルシステムでも正しく動作することができます。また Amiga 上 -での汚い DOS もしくは 雑種の DOS ファイルシステムでも使うことができますし、8.3 -形式のファイルシステムを搭載したどんな Unix でも動作します。|'shortname'| もご -覧下さい。 - -エラーメッセージは少なくとも1秒は表示されます(Vi ではエラーメッセージは上書き -されます) - -|hit-enter| プロンプトが出た場合でもどんなキーでも打つことができます。<CR>、 -<NL>、<Space> 以外の文字はコマンド(の最初)として解釈されます(Vi では ':' で始 -まるコマンドしか受け付けませんでした)。 - -番号付きレジスターと名前なしレジスターの内容はファイルが変更されたときに覚えて -おかれます。 - -"No lines in buffer" メッセージはマッピングが拒否された理由で表示される、エラー -メッセージではなく普通のメッセージです。 - -The AUX: Amiga のデバイスをサポートしています。 - -============================================================================== -6. コマンドライン引数 *cmdline-arguments* - -異なるバージョンの Vi では異なるコマンドライン引数があります。これはちょっと紛 -らわしいですので便宜のためにこの章では違いの概略を説明します。 - -5つの種類の Vi がここでは考慮されます: - Elvis Elvis version 2.1b - Nvi Nvi version 1.79 - Posix Posix 1003.2 - Vi Vi version 3.7 (Sun 4.1.x) - Vile Vile version 7.4 (不完全) - Vim Vim version 5.2 - -Vim だけがファイル名の後でもオプションを受け付けます。 - -+{command} Elvis, Nvi, Posix, Vi, Vim: "-c {command}" と同じです。 - -- Nvi, Posix, Vi: Ex をバッチモードで起動します - Vim: 標準入力からファイルを読み込みます(バッチモードを使うには - -s を利用してください)。 - --- Vim: オプションの終わりです。この後はファイル名のみ書くことがで - きます。 - ---cmd {command} Vim: vimrcファイルを読み込む前に{command}を実行します - ---echo-wid Vim: GTK+がウインドウのIDを標準出力に書き出します。 - ---help Vim: ヘルプメッセージを表示して終了します。 - ---literal Vim: ファイル名のワイルドカードを処理しません - ---nofork Vim: |-f|と同じです - ---noplugin[s] Vim: プラグインの読み込みをしません - ---remote Vim: 他のVimサーバでそのファイルの編集をします - ---remote-expr {expr} Vim: 他のVimサーバで{expr}を評価します - ---remote-send {keys} Vim: Vimサーバに{Keys}を送って終了します - ---remote-silent {file} Vim: 可能なら他のVimサーバでファイルの編集をします - ---remote-wait Vim: 他のVimサーバでファイルの編集をして、それが終わるまで待機 - します - ---remote-wait-silent Vim: --remote-waitと同じですが、それが不可能な場合でも - エラーをだしません。 - ---role {role} Vim: GTK+ 2: メインウインドウのroleを設定します - ---serverlist Vim: Vimサーバのリストを出力して終了します - ---servername {name} Vim: Vimサーバの名前を指定します - ---socketid {id} Vim: Vimを起動するGTKウインドウのsocket - ---windowid {id} Vim: Vimを起動するWin32のウィンドウID - ---version Vim: バージョンメッセージを表示して終了します。 - --? Vile: 簡単な使い方を表示して終了します。 - --a Elvis: 指定されたファイル名をそれぞれ一つのウィンドウに読み込み - ます(Vim では -o を使ってください)。 - --A Vim: アラビア語モードで起動します(その機能が組み込まれているな - ら) - --b {blksize} Elvis: ファイルのセッションに {blksize} のブロックサイズを使い - ます。 --b Vim: 'binary' モードをセットします。 - --C Vim: Vi コンパチブルモードで起動します。 - --c {command} Elvis, Nvi, Posix, Vim: ファイルを編集バッファにロードした後 - {command} を Ex コマンドとして走らせます。 - Vim: 10個まで "-c" 引数をとることができます。 - --d {device} Vim: I/O に {device} を使います(Amiga のみ)。{|+diff|の機能を - 外してコンパイルされたときのみ} --d Vim: 'diff'を設定して起動します|vimdiff| - --dev {device} Vim: I/O に {device} を使います(Amiga のみ) - --D Vim: デバッグモード - --e Elvis, Nvi, Vim: あたかも "ex" が起動されたように Ex モードで起 - 動します。 - --E Vim: "exim"のように、より良いExモードで起動します|gQ| - --f Vim: GUI をフォアグラウンドジョブとして起動します(Amiga: 新たに - ウィンドウを開きません)。 --f {session} Elvis: {session} をセッションファイルとして使います。 - --F Vim: Farsi モードで起動します(Farsi 付きでコンパイルされている - 場合)。 - Nvi: 編集を開始するときにファイルのすべてを読み込まず素早く起動 - します。 - --G {gui} Elvis: {gui} をユーザーインターフェイスとして使います。 - --g Vim: GUI で起動します。 --g N Vile: N 行目から編集を開始します。 - --h Vim: ヘルプメッセージを表示します。 - Vile: ヘルプファイルを編集します。 - --H Vim: ヘブライモードで起動します(ヘブライオプションをつけてコン - パイルされている場合)。 - --i Elvis: それぞれのウィンドウを挿入モードで起動します。 --i {viminfo} Vim: {viminfo} を Viminfo ファイルとして使います。 - --L Vim: "-r" と同じです(またいくつかのバージョンの Vi でもそうで - す)。 - --l Nvi, Vi, Vim: 'lisp' と 'showmatch' オプションをセットします。 - --m Vim: 変更を書き込むことを禁止し、'write' オプションを解除します。 - --M Vim: 変更を加えることを禁止し、'write' オプションと - 'modifiable'オプションを解除します。 - --N Vim: コンパチブルモードではないモードで起動します。 - --n Vim: スワップファイルを使いません。 - --nb[args] Vim: NetBeansへの接続を開きます - --O[N] Vim: -oと同じですが、ウィンドウを縦分割します - --o[N] Vim: [N]個のウィンドウを開きます。もしくは各ファイルに1個ずつ - ウィンドウを開きます。 - --p[N] Vim: [N]個のタブページを開きます。もしくは各ファイルに1個ずつ - タブページを開きます。 - --P {parent-title} Win32 Vim: 親となるアプリケーションの内側でVimを開きます - --q {name} Vim: {name} をクイックフィクスエラーファイルとして使います。 --q{name} Vim: 同上。 - --R Elvis, Nvi, Posix, Vile, Vim: 'readonly' オプションをセットしま - す。 - --r Elvis, Nvi, Posix, Vi, Vim: 復元モード - --S Nvi: 'secure' オプションをセットします。 --S {script} Vim: 起動後にスクリプトを実行します。 - --s Nvi, Posix, Vim: Exモードでは "-"(サイレントモード)と同じです。 - Elvis: 'safer' オプションをセットします。 --s {scriptin} Vim: {scriptin} からスクリプトを読み込みます; Ex モードでないと - きにのみ有効です。 --s {pattern} Vile: {pattern} を検索します。 - --t {tag} Elvis, Nvi, Posix, Vi, Vim: {tag} を含むファイルを編集します。 --t{tag} Vim: 同上。 - --T {term} Vim: {term} に端末名をセットします。 - --u {vimrc} Vim: {vimrc} ファイルを初期化ファイルとして読み込みます。 - --U {gvimrc} Vim: {gvimrc} ファイルを GUI 初期化ファイルとして読み込みます。 - --v Nvi, Posix, Vi, Vim: ノーマルモードで起動します(Vi ではビジュア - ルモードを意味していました)。 - Vile: 閲覧モードで起動し、変更は不可です。 - --V Elvis, Vim: 冗長なモードで起動します。 --V{nr} Vim: 特定レベルの冗長なモードで起動します。 - --w {size} Elvis, Posix, Nvi, Vi, Vim:'window'の値を{size}にセットします。 --w{size} Nvi, Vi: "-w {size}"と同じです。 --w {name} Vim: スクリプトファイル{name}に書き込みます(non-digit で起動し - なければなりません)。 - --W {name} Vim: スクリプトファイル{name}に追加します。 - --x Vi, Vim: 暗号鍵の入力を尋ねさせます。|encryption|もご覧下さい。 - --X Vim: Xサーバに接続しません。 - --y Vim: |evim|のように簡単モードで起動します。 - --Z Vim: 制限モード - -@{cmdfile} Vile: {cmdfile} を初期化ファイルに使います。 - -============================================================================== -7. POSIX 準拠 *posix* *posix-compliance* - -2005年、Vimの互換性をチェックするためにPOSIXテストを行いました。テストのほとん -どはパスしました。Vi互換モードで実行したときでもPOSIX準拠でない点が2,3ありまし -た。 - -Vim起動時にオプション'cpoptions'にPOSIXフラグを含めるには、環境変数$VIM_POSIX -を設定してください。そうするとVimができるだけPOSIXに従うようになります。これは -Vi互換であることとは少し違います。 - -以下はVimがPOSIX仕様に従わない点とその理由です: - - *posix-screen-size* - Vimは端末からより確かな方法でサイズが得られると、環境変数$COLUMNSと - $LINESを無視します。'cpoptions'にフラグ'l'を加えると$COLUMNSと$LINESが - 他の方法で得られたサイズを上書きするようになります。 - - オリジナルのViではコマンド"{"と"}"は"{"で止まりませんが、POSIXは止まる - ように指定しています。POSIX流を望むなら'cpoptions'にフラグ'{'を加えて - ください。 - - コマンド"D", "o", "O"がカウントを受け付けます。繰り返されたときもです。 - カウントを無視するようにしたければ'cpoptions'にフラグ'#'を加えてくださ - い。 - - 'cpoptions'にフラグ'.'が入っていると、バッファが変更されているときコマ - ンド":cd"が失敗します。 - - ViにはATTENTIONメッセージはありません。ATTENTIONメッセージを出さなくす - るには'shortmess'にフラグ"A"を加えてください。 - -POSIXテストの実行についての注意: -- viテスト33はときどき未知の理由のために失敗します -- viテスト250が失敗します。新しいバージョンで挙動が変更されるでしょう。 - http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html - (今はリンク切れ。現在の場所はおそらくここ: - https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711) -- viテスト310が失敗します。エラーが起きたとき終了コードが非ゼロになる? -- exテスト24が失敗します。テストが間違っているためです。SUSv2とSUSv3の間に変更 - されました。 -- exテスト47, 48, 49, 72, 73が失敗します。サイレントモードでは.exrcは読み込ま - れず、$EXINITが使われないためです。 -- exテスト76, 78が失敗します。printfの代わりにechoが使われるためです(修正され - ました)。Also: problem with \s not changed to space. -- exテスト355が失敗します。"30z"のときに'window'が使われないためです。 -- exテスト368が失敗します。サイレントモードでシェルコマンドがエコーされないた - めです。 -- exテスト394が失敗します。コマンド"="の出力がサイレントモードで見えないためで - す。 -- exテスト411が失敗します。テストファイルが迷子の':'を含んで正しくないためです -- exテスト475, 476が失敗します。サイレントモードでリプリント出力が見えないため - です。 -- exテスト480, 481が失敗します。tagsファイルがタブでなくスペースを含んでいるた - めです。 -- exテスト502が失敗します。サイレントモードで.exrcが読まれないためです。 -- exテスト509が失敗します。サイレントモードで.exrcが読まれないためです。また、終了コードが2 - でなく1になるためです。 -- exテスト534が失敗します。サイレントモードで.exrcが読まれないためです。 - - -vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/vim-ja.UTF-8.1 b/runtime.old/doc/vim-ja.UTF-8.1 deleted file mode 100644 index 265370e46..000000000 --- a/runtime.old/doc/vim-ja.UTF-8.1 +++ /dev/null @@ -1,501 +0,0 @@ -.TH VIM 1 "2006 Apr 11" -.SH 名前 -vim \- Vi IMproved, プログラマのテキストエディタ -.SH 書式 -.br -.B vim -[options] [file ..] -.br -.B vim -[options] \- -.br -.B vim -[options] \-t tag -.br -.B vim -[options] \-q [errorfile] -.PP -.br -.B ex -.br -.B view -.br -.B gvim -.B gview -.B evim -.B eview -.br -.B rvim -.B rview -.B rgvim -.B rgview -.SH 説明 -.B Vim -は Vi 互換のテキストエディタです。 -どのような種類のプレインテキストでも編集できます。 -特に、プログラムの編集に力を発揮します。 -.PP -Vi に多くの改良が加えられています: -多段アンドゥ、マルチウィンドウ、マルチバッファ、構文強調表示、 -コマンドライン編集、ファイル名補完、ヘルプ、ビジュアル選択、などなど。 -.B Vim -と Vi の違いについての要約は ":help vi_diff.txt" を参照してください。 -.PP -.B Vim -の実行中は ":help" コマンドでヘルプを引くことができます。 -下記、オンラインヘルプの項を参照してください。 -.PP -.B Vim -は次のようなコマンドで起動できます。 -.PP - vim file -.PP -正確な書式は次の通りです: -.PP - vim [options] [filelist] -.PP -filelist を省略した場合は、空のバッファが開かれます。 -指定した場合は、以下の四つのうちどれか一つの方法でファイルが開かれます。 -.TP 12 -file .. -ファイルのリスト。 -一番目のファイルがカレントファイルになり、バッファに読み込まれます。 -カーソルは、バッファの一行目に置かれます。 -他のファイルを表示するには ":next" コマンドを使ってください。 -ファイル名がダッシュで始まるファイルを開く場合は、 -filelist の前に "\-\-" を指定してください。 -.TP -\- -ファイルは標準入力から読み込まれます。コマンドは標準エラー (ttyからの入 -力になっているはず) から読み込まれます。 -.TP -\-t {tag} -開くファイルとカーソルの初期位置は "tag" に依存します。goto label の一種です。 -tags ファイルから {tag} が検索され、関連したファイルがカレントファイルになり -ます。そして、関連したコマンドが実行されます。 -これは主に C 言語のファイルを開くときに使われます。その場合 {tag} に関数など -を指定して使います。 -関数を含んでいるファイルが開かれ、その関数の先頭にカーソルが移動する、 -という動作になります。 -詳しくは ":help tag\-commands" を参照してください。 -.TP -\-q [errorfile] -クイックフィックスモードで起動します。 -[errorfile] に指定したファイルが読み込まれ、最初のエラーが表示されます。 -[errorfile] を省略した場合は、オプション 'errorfile' が使われます (初期設定 -は、Amiga では "AztecC.Err"、その他のシステムでは "errors.err" です)。 -":cn" コマンドで次のエラーにジャンプできます。 -詳しくは ":help quickfix" を参照してください。 -.PP -.B Vim -は、起動されたときの実行ファイルの名前によって動作を変えます -(実行ファイルの実体が同じであっても)。 -.TP 10 -vim -"普通" に起動します。標準の状態です。 -.TP -ex -Ex モードで起動します。 -ノーマルモードに切り替えるには ":vi" コマンドを使ってください。 -引数に "\-e" を指定した場合と同じです。 -.TP -view -読み込み専用モードで起動します。ファイルの保存が制限されます。 -引数に "\-R" を指定した場合と同じです。 -.TP -gvim gview -GUI バージョン。 -新しいウィンドウを開いて起動します。 -引数に "\-g" を指定した場合と同じです。 -.TP -evim eview -簡易モードの GUI バージョン。 -新しいウィンドウを開いて起動します。 -引数に "\-y" を指定した場合と同じです。 -.TP -rvim rview rgvim rgview -上記と同じですが、制限モードで起動します。シェルコマンドを実行したり、 -.B Vim -をサスペンドしたりできなくなります。 -引数に "\-Z" を指定した場合と同じです。 -.SH オプション -ファイル名の前でも後ろでも、好きな順番でオプションを指定できます。 -パラメータを必要としない引数は、一つのダッシュにまとめて指定できます。 -.TP 12 -+[num] -一番目のファイルの "num" 行目にカーソルを移動します。 -"num" を省略した場合は、一行目にカーソルが移動します。 -.TP -+/{pat} -一番目のファイルの、最初に {pat} が見つかった行にカーソルが移動します。 -検索パターンについては ":help search\-pattern" を参照してください。 -.TP -+{command} -.TP -\-c {command} -一番目のファイルが読み込まれた後に {command} が実行されます。 -{command} は Ex コマンドとして解釈されます。 -{command} に空白を含める場合は、ダブルクォートで囲んでください (シェルに依存)。 -例: vim "+set si" main.c -.br -Note: "+" と "\-c" は合わせて 10 個まで指定できます。 -.TP -\-S {file} -一番目のファイルが読み込まれた後に {file} が実行されます。 -これは \-c "source {file}" と同じ動作です。 -{file} の先頭が '\-' の場合は使えません。 -{file} が省略された場合は、"Session.vim" が使われます (ただし \-S が最後の引 -数だった場合の)。 -.TP -\-\-cmd {command} -"\-c" と同じですが、vimrc を処理する前にコマンドが実行されます。 -これらのコマンドは "\-c" コマンドとは別に、10 個まで指定できます。 -.TP -\-A -アラビア語がサポートされていて、アラビア語キーマップがある場合は、 -アラビア語モードで起動します ('arabic' がオンになります)。 -右横書きのファイルを編集できます。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-b -バイナリモード。 -バイナリファイルを編集ためのオプションがいくつか設定されます。 -.TP -\-C -互換モード。'compatible' オプションがオンになります。 - .vimrc ファイルの有無にかかわらず、 -.B Vim -の動作が Vi 互換になります。 -.TP -\-d -diff モードで起動します。 -二つか三つの四つのファイルを引数に指定してください。 -指定されたファイルが開かれ、それらのファイルの差分が表示されます。 -vimdiff(1) と同様の動作です。 -.TP -\-d {device} -{device} を端末として開きます。 -Amiga でのみ使います。 -例: -"\-d con:20/30/600/150". -.TP -\-D -デバッグ。スクリプトの最初のコマンドが実行されるところからデバッグモードを開 -始します。 -.TP -\-e -Ex モードで起動します。 -実行ファイルの名前が "ex" の場合と同じです。 -.TP -\-E -改良版 Ex モードで起動します。 -実行ファイルの名前が "exim" の場合と同じです。 -.TP -\-f -フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 -Amiga の場合は、新しいウィンドウで再起動しなくなります。 -メールソフトなどから -.B Vim -を起動して、編集が終わるまで待機したいような場合に使ってください。 -Amiga では、":sh" と "!" コマンドは機能しなくなります。 -.TP -\-\-nofork -フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 -.TP -\-F -ペルシア語がサポートされていて、ペルシア語キーマップがある場合は、 -ペルシア語モードで起動します ('fkmap' と 'rightleft' がオンになります)。 -右横書きのファイルを編集できます。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-g -GUI がサポートされている場合は、GUI で起動します。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-h -コマンドライン引数やオプションのヘルプを表示して終了します。 -.TP -\-H -ヘブライ語がサポートされていて、ヘブライ語キーマップがある場合は、 -ヘブライ語モードで起動します ('hkmap' と 'rightleft' がオンになります)。 -右横書きのファイルを編集できます。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-i {viminfo} -viminfo ファイルを使う設定になっている場合は、初期設定の "~/.viminfo" の代わ -りに、指定されたファイルを設定します。 -"NONE" を指定すると、.viminfo ファイルを使わないように設定できます。 -.TP -\-L -\-r と同じです。 -.TP -\-l -lisp モード。 -オプションの 'lisp' と 'showmatch' がオンになります。 -.TP -\-m -ファイルの変更を不可能にします。 -オプション 'write' がオフになります。 -バッファを変更することはできますが、ファイルを保存することはできません。 -.TP -\-M -変更を不可能にします。オプションの 'modifiable' と 'write' がオフになり、 -ファイルの変更と保存ができなくなります。 -Note: それらのオプションを設定すれば変更できるようになります。 -.TP -\-N -非互換モード。'compatible' オプションがオフになります。 - .vimrc ファイルの有無にかかわらず、 -.B Vim -の改良された機能が有効になります。Vi との互換性が少し失われます。 -.TP -\-n -スワップファイルを使用しません。 -クラッシュしてもリカバリできなくなります。 -フロッピーディスクのような非常に低速なメディアのファイルを読み書きするときに -便利です。 -":set uc=0" と設定しても同じです。 -戻すには ":set uc=200" と設定してください。 -.TP -\-nb -NetBeans と接続し、エディタサーバーになります。 -詳しくはヘルプを参照してください。 -.TP -\-o[N] -N 個のウィンドウを水平分割で開きます。 -N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 -.TP -\-O[N] -N 個のウィンドウを垂直分割で開きます。 -N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 -.TP -\-p[N] -N 個のタブページを開きます。 -N を省略した場合は、引数のファイルを個別のタブページで開きます。 -.TP -\-R -読み込み専用モード。 -オプション 'readonly' がオンになります。 -バッファを変更することはできますが、間違ってファイルを上書きしてしまうのを防 -ぐことができます。 -ファイルを保存したい場合は、":w!" のように、Ex コマンドに感嘆符を付けてくだ -さい。 -\-R オプションは \-n オプションの効果も含んでいます (下記参照)。 -オプション 'readonly' は ":set noro" でオフにできます。 -詳しくは ":help 'readonly'" を参照してください。 -.TP -\-r -スワップファイルの一覧を表示します。リカバリに関する情報も表示されます。 -.TP -\-r {file} -リカバリモード。 -スワップファイルを使って、クラッシュした編集セッションを復活させます。 -スワップファイルは、ファイル名に ".swp" を加えた名前のファイルです。 -詳しくは ":help recovery" を参照してください。 -.TP -\-s -サイレントモード。"ex" という名前で起動するか、"\-e" オプションの後で -"\-s" オプションが指定された場合のみ。 -.TP -\-s {scriptin} -{scriptin} をスクリプトファイルとして読み込まれます。 -ファイル中の文字列は、手で入力したときと同じように処理されます。 -これは ":source! {scriptin}" と同じ動作です。 -エディタが終了する前にファイルの終わりまで読み込んだ場合、 -それ以降はキーボードから入力を読み込みます。 -.TP -\-T {terminal} -端末の名前を指定します。 -端末が自動的に認識されない場合に使ってください。 -Vim が組み込みでサポートしている名前か、 -termcap または terminfo ファイルで定義されている名前を指定してください。 -.TP -\-u {vimrc} -{vimrc} ファイルを使って初期化します。 -他の初期化処理はスキップされます。 -特殊なファイルを編集する場合などに使ってください。 -すべての初期化をスキップするには "NONE" を指定してください。 -詳しくは ":help initialization" を参照してください。 -.TP -\-U {gvimrc} -{gvimrc} ファイルを使って GUI を初期化します。 -他の GUI の初期化はスキップされます。 -すべての GUI の初期化をスキップするには "NONE" を指定してください。 -詳しくは ":help gui\-init" を参照してください。 -.TP -\-V[N] -冗長モード。スクリプトファイルを実行したり viminfo ファイルを読み書きするた -びにメッセージを表示します。N に指定した数値が 'verbose' に設定されます。 -省略した場合は 10 になります。 -.TP -\-v -Vi モードで起動します。 -実行ファイルの名前が "vi" の場合と同じです。 -実行ファイルの名前が "ex" の場合だけ効果があります。 -.TP -\-w {scriptout} -入力した文字を {scriptout} に記録します。 -"vim \-s" や "source!" で実行するためのスクリプトファイルを作成するのに便利 -です。 -{scriptout} ファイルがすでに存在した場合は追加保存されます。 -.TP -\-W {scriptout} -\-w と同じですが、ファイルがすでに存在した場合は上書きされます。 -.TP -\-x -ファイルを暗号化して書き込みます。暗号化キーの入力プロンプトが表示されます。 -.TP -\-X -X サーバーと通信しません。端末での起動時間を短くできます。 -しかし、ウィンドウタイトルの変更やクリップボードは使えなくなります。 -.TP -\-y -簡易モードで起動します。 -実行ファイルの名前が "evim" や "eview" の場合と同じです。 -.B Vim -の動作がモードレスエディタ (click-and-type editor) のようになります。 -.TP -\-Z -制限モード。 -実行ファイルの名前が "r" で始まっている場合と同じです。 -.TP -\-\- -オプション指定の末尾を示す記号です。 -これ以降の引数はすべてファイル名として扱われます。 -ファイル名が '\-' で始まっているファイルを開くときに使ってください。 -.TP -\-\-echo\-wid -GTK GUI のみ: Window ID を標準出力に出力します。 -.TP -\-\-help -ヘルプを表示して終了します。"\-h" と同じです。 -.TP -\-\-literal -引数のファイル名をリテラル文字列として扱います。ワイルドカードを展開しませ -ん。Unix のように、シェルがワイルドカードを展開する場合は機能しません。 -.TP -\-\-noplugin -プラグインをロードしません。\-u NONE はこの動作を含んでいます。 -.TP -\-\-remote -Vim サーバーと通信し、引数に指定されたファイルを Vim サーバーで開きます。 -サーバーが存在しない場合は、エラーメッセージを表示され、起動中の Vim でファ -イルが開かれます。 -.TP -\-\-remote\-expr {expr} -Vim サーバーと通信し、{expr} に与えられた式を Vim サーバーで実行し、結果を標 -準出力に出力します。 -.TP -\-\-remote\-send {keys} -Vim サーバーと通信し、{keys} に与えられたキーを Vim サーバーに送信します。 -.TP -\-\-remote\-silent -\-\-remote と同じですが、サーバーが存在しなくてもエラーメッセージを表示しま -せん。 -.TP -\-\-remote\-wait -\-\-remote と同じですが、ファイルが開かれるのを確認できるまで待機します。 -.TP -\-\-remote\-wait\-silent -\-\-remote\-wait と同じですが、サーバーが存在しなくてもエラーメッセージを表 -示しません。 -.TP -\-\-serverlist -Vim サーバーの一覧を表示します。 -.TP -\-\-servername {name} -サーバーの名前を {name} に設定します。\-\-remote 引数を指定しなかった場合 -は、起動中の Vim の名前として使われるので、後からその名前を使ってサーバー通 -信できます。 -.TP -\-\-socketid {id} -GTK GUI のみ: GtkPlug メカニズムを使って gvim を別のウィンドウの中で実行しま -す。 -.TP -\-\-version -バージョン情報を表示して終了します。 -.SH オンラインヘルプ -ヘルプを開くには、 -.B Vim -の中で ":help" と入力してください。 -":help 調べたい項目" と入力すれば、指定した項目のヘルプが表示されます。 -例: "ZZ" コマンドのヘルプを表示するには ":help ZZ" と入力します。 -<Tab> や CTRL\-D を使って補完することもできます -(":help cmdline\-completion" 参照)。 -ヘルプには、項目から項目へジャンプできるようにタグが埋め込まれています -(ハイパーリンクのようなものです。":help" 参照)。 -すべてのヘルプファイルはこの方法で開くことができます。 -例: ":help syntax.txt"。 -.SH ファイル -.TP 15 -/usr/local/lib/vim/doc/*.txt -.B Vim -のヘルプファイル。 -ファイルの一覧は ":help doc\-file\-list" に記載されています。 -.TP -/usr/local/lib/vim/doc/tags -ヘルプを検索するための tags ファイル。 -.TP -/usr/local/lib/vim/syntax/syntax.vim -システムの構文定義初期化ファイル。 -.TP -/usr/local/lib/vim/syntax/*.vim -いろいろな言語用の構文定義ファイル。 -.TP -/usr/local/lib/vim/vimrc -システムの -.B Vim -初期化ファイル。 -.TP -~/.vimrc -ユーザーの -.B Vim -初期化ファイル。 -.TP -/usr/local/lib/vim/gvimrc -システムの gvim 初期化ファイル。 -.TP -~/.gvimrc -ユーザーの gvim 初期化ファイル。 -.TP -/usr/local/lib/vim/optwin.vim -":options" コマンドで使われるファイル。オプションを表示したり設定したりでき -ます。 -.TP -/usr/local/lib/vim/menu.vim -システムのメニュー初期化ファイル。gvim で使います。 -.TP -/usr/local/lib/vim/bugreport.vim -バグレポートを生成するスクリプト。":help bugs" 参照。 -.TP -/usr/local/lib/vim/filetype.vim -ファイル名からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 -.TP -/usr/local/lib/vim/scripts.vim -ファイルの内容からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 -.TP -/usr/local/lib/vim/print/*.ps -PostScript 印刷に使われるファイル。 -.PP -最新の情報は VIM のホームページを参照してください: -.br -<URL:http://www.vim.org/> -.SH 関連項目 -vimtutor(1) -.SH 著者 -.B Vim -のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 -":help credits" を参照してください。 -.br -.B Vim -は Stevie を基にしています。Stevie は Tim Thompson、Tony Andrews、 -G.R. (Fred) Walter によって開発されました。 -ただし、オリジナルのコードはもうほとんど残っていません。 -.SH バグ -既知のバグは ":help todo" に記載されています。 -.PP -Vi の動作を忠実に再現した結果、多くの人がバグだと思うような機能もいくつかあ -ります。 -"この動作は Vi と違う" からバグだと思った場合は、vi_diff.txtを確認してみてく -ださい (ファイルを開くか、Vim から ":help vi_diff.txt" と入力)。 -オプションの 'compatible' と 'cpoptions' も確認してください。 diff --git a/runtime.old/doc/vimdiff-ja.UTF-8.1 b/runtime.old/doc/vimdiff-ja.UTF-8.1 deleted file mode 100644 index c9376efe3..000000000 --- a/runtime.old/doc/vimdiff-ja.UTF-8.1 +++ /dev/null @@ -1,44 +0,0 @@ -.TH VIMDIFF 1 "2001 March 30" -.SH 名前 -vimdiff \- 二つか三つの四つファイルを Vim で開いて、その差分を表示する -.SH 書式 -.br -.B vimdiff -[options] file1 file2 [file3 [file4]] -.PP -.B gvimdiff -.SH 説明 -.B Vimdiff -は、二つ (か三つか四つ) のファイルを -.B Vim -で開きます。 -ファイルは個別のウィンドウで開かれ、差分が強調表示されます。 -同じファイルの別のバージョン間で、変更を確認したり、変更を移動したりするのが -簡単になります。 -.PP -Vim についての詳細は vim(1) を参照してください。 -.PP -.B gvimdiff -という名前で起動された場合は GUI で起動します。 -.PP -差分を強調表示するために、 -それぞれのウィンドウの 'diff' オプションがオンに設定されます。 -.br -テキストを見やすくするために、オプションの 'wrap' と 'scrollbind' もオンに設 -定されます。 -.br - 'foldmethod' オプションは "diff" に設定され、変更されていない行は折り畳まれ -ます。 -折り畳みの確認と開閉が簡単にできるように、'foldcolumn'は 2 に設定されます。 -.SH オプション -行を並べて表示するために、"\-O" 引数を使ったときのように、ウィンドウは垂直分 -割されます。 -ウィンドウを水平分割したい場合は "\-o" 引数を使ってください。 -.PP -その他の引数については vim(1) を参照してください。 -.SH 関連項目 -vim(1) -.SH 著者 -.B Vim -のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 -":help credits" を参照してください。 diff --git a/runtime.old/doc/vimtutor-ja.UTF-8.1 b/runtime.old/doc/vimtutor-ja.UTF-8.1 deleted file mode 100644 index 29b9b48f2..000000000 --- a/runtime.old/doc/vimtutor-ja.UTF-8.1 +++ /dev/null @@ -1,45 +0,0 @@ -.TH VIMTUTOR 1 "2001 April 2" -.SH 名前 -vimtutor \- Vim チュートリアル -.SH 書式 -.br -.B vimtutor [\-g] [language] -.SH 説明 -.B Vim -のチュートリアルを起動します。 -演習ファイルのコピーを使って実施するので、オリジナルの演習ファイルを壊してし -まう心配はありません。 -.PP -.B Vim -を初めて学ぶ人向けのチュートリアルです。 -.PP -引数に \-g を指定すると GUI 版の vim が利用可能であれば vim ではなく gvim を -使って vimtutor が開始します。gvim が見つからないときは Vim が使用されます。 -.PP -[language] 引数は "ja" や "es" などの二文字の言語名です。 -[language] 引数を省略した場合はロケールの言語が使われます。 -翻訳された演習ファイルがある場合は、そのファイルが使われます。 -ない場合は英語のファイルが使われます。 -.PP -.B Vim -は Vi 互換モードで起動されます。 -.SH ファイル -.TP 15 -/usr/local/lib/vim/tutor/tutor[.language] -.B Vimtutor -の演習ファイル。 -.TP 15 -/usr/local/lib/vim/tutor/tutor.vim -演習ファイルをコピーするための Vim スクリプト。 -.SH 著者 -.B Vimtutor -は、Colorado State University の Charles Smith のアイデアを基に、 -Colorado School of Mines の Michael C. Pierce と Robert K. Ware の両名 -によって Vi 向けに作成されたものを基にしています。 -E-mail: bware@mines.colorado.edu. -.br -.B Vim -に合わせて Bram Moolenaar が変更を加えました。 -翻訳者の名前は演習ファイルを参照してください。 -.SH 関連項目 -vim(1) diff --git a/runtime.old/doc/visual.jax b/runtime.old/doc/visual.jax deleted file mode 100644 index 2b8383620..000000000 --- a/runtime.old/doc/visual.jax +++ /dev/null @@ -1,493 +0,0 @@ -*visual.txt* For Vim バージョン 7.3. Last change: 2010 Feb 17 - - - VIMリファレンスマニュアル by Bram Moolenaar - - -ビジュアルモード *Visual* *Visual-mode* *visual-mode* - -ビジュアルモードは利用者にとってテキストの部分を選択する柔軟で簡単な方法であ -る。矩形範囲のテキスト(ブロック)を選択する唯一の方法でもある。 - -ユーザーマニュアルの|04.4|で簡単に説明されている。 - -1. ビジュアルモードを使う |visual-use| -2. ビジュアルモードの開始と終了 |visual-start| -3. ビジュアル領域の変更 |visual-change| -4. ビジュアル領域での操作 |visual-operators| -5. 矩形範囲の操作 |blockwise-operators| -6. 繰り返し |visual-repeat| -7. 使用例 |visual-examples| -8. 選択モード |Select-mode| - -{Vi にはビジュアルモードは無く、"visual"という名前はExモードとは区別するため -に、ノーマルモードを指して使われている} -{コンパイル時に|+visual|が無効にされていると使えません} - -============================================================================== -1. ビジュアルモードを使う *visual-use* - -ビジュアルモードを使うには3つの部分から構成される: -1. 選択したいテキストの開始位置を"v"、"V"またはCTRL-Vでマークする。 - カーソルの下の文字が開始位置として使用される。 -2. 選択したいテキストの終了位置に移動する。 - ビジュアルモードの開始位置からカーソルの下の文字を含むテキストが強調され - る。 -3. 操作キー(オペレータ)を押す。 - 強調された文字が操作対象になる。 - -ビジュアルモードでの強調表示の仕方を設定するのに、'highlight'オプションを使用 -することができる。 -文字のない場所を選択するには'virtualedit'を設定する。 - -強調されたテキストにはカーソルの下の文字も含まれる。 -けれども、'selection'オプションが"exclusive"に設定されていて、カーソルが -Visualエリアの後にあるとき、カーソルの下の文字は含まれない。 - -"v"では開始位置より前と、終了位置より後のテキストは強調されない。しかし全ての -大文字とアルファベット以外のキーによる操作は、"~"と"U"を除いて、表示に関係なく -行単位で働く。下記の操作一覧を参照。 - - *visual-block* -CTRL-V(矩形ビジュアルモード)は開始位置からカーソルの位置まで、テキストを矩形に -強調する。しかし、幾つかの操作(下記のリストを参照)はそれとは関係無く行単位で適 -用される。「変更」と「置き換え」の操作は強調されたテキストを削除し、選択範囲の -左上より挿入を開始する。 - -============================================================================== -2. ビジュアルモードの開始と終了 *visual-start* - - *v* *characterwise-visual* -v 文字単位のビジュアルモードを開始する。 - - *V* *linewise-visual* -V 行単位のビジュアルモードを開始する。 - - *CTRL-V* *blockwise-visual* -CTRL-V 矩形ビジュアルモードを開始する。Note: ウィンドウズでは - CTRL-Vはテキストの貼り付けにマップされることがあり、そ - の際にはビジュアルモードを開始できない。 - |CTRL-V-alternative|を参照。 - -ビジュアルモードの最中に<Esc>を使用したり、マウスの右ボタンをクリックしたり、 -または他のバッファに移動するコマンドを使用した場合には、強調は停止しテキストに -は何の操作も行なわれない。文字単位のビジュアルモード中に"v"を叩いた時や、矩形 -ビジュアルモード時の"CTRL-V"、行単位のビジュアルモードでの"V"も同様である。 -CTRL-Zを押すと強調は停止し、エディタが一時停止するか新しいシェルが開始される -|CTRL-Z|。 - - タイプ後の新モード: *v_v* *v_CTRL-V* *v_V* -旧モード "v" "CTRL-V" "V" ~ - -ノーマル ビジュアル 矩形ビジュアル 行ビジュアル -ビジュアル ノーマル 矩形ビジュアル 行ビジュアル -矩形ビジュアル ビジュアル ノーマル 行ビジュアル -行ビジュアル ビジュアル 矩形ビジュアル ノーマル - - *gv* *v_gv* *reselect-Visual* -gv 最後に使用したのと同じ範囲のビジュアルモードを開始す - る。ビジュアルモードで使用すると、現在の選択領域と以前 - のものとが交換される。 - ビジュアルモードで"p"や"P"を実行した後にこれを使うと、 - プットしたテキストが選択される。 - - *<LeftMouse>* -<LeftMouse> 現在のカーソル位置を設定する。ビジュアルモードが活動中 - の場合は停止する。オプション'mouse'が'n'もしくは'a'を - 含むときだけ働く。指定した位置がスクリーンの下端から - 'so'行以内の時にはテキストがスクロールアップする。指定 - した位置がスクリーンの上端から'so'行以内の時にはテキス - トがスクロールダウンする。 - - *<RightMouse>* -<RightMouse> ビジュアルモードが活動していないのならば開始する。カー - ソルの位置からクリックした位置までのテキストが強調され - る。ビジュアルモードが既に活動しているならば、開始位置 - か終了位置のどちらか近いほうがクリックした位置になる。 - オプション'mouse'が'n'もしくは'a'を含むときだけ働く。 - - Note: 'mousemodel'が"popup"の時には<RightMouse>の代わ - りに<S-LeftMouse>を使用する。 - - *<LeftRelease>* -<LeftRelease> <LeftMouse>と同じ位置でなければ、これは<LeftMouse>のよ - うに働く。古いxtermでは実行されているディスプレイ(環境 - 変数DISPLAYもしくは-display引数による)へのアクセスが無 - い限り、xterm上ではボタンが離されるまで選択領域を見る - ことはできない。'mouse'オプションが'n'もしくは'a'を含 - むときだけ働く。 - -ビジュアルモードが活動していない時に"v"、"V"もしくはCTRL-Vが数字(カウント)の後 -に使用されると、以前の強調領域の大きさが開始位置から使用される。その時カーソル -は強調領域の終了位置へ移動し通常の操作を行なうことができる。領域の形式(文字、 -行、矩形)は過去のものが使用される。 -- 行ビジュアルモード: 行数がカウント倍される。 -- 矩形ビジュアルモード; 行数とカラム数がカウント倍される。 -- 1行内の通常ビジュアルモード: 文字数がカウント倍される。 -- 複数行にまたがる通常ビジュアルモード: 行数がカウント倍され、最終行だけは前回 - の強調領域の最終行と同じ文字数が使用される。 -テキストの開始位置はカーソルの位置となる。強調テキストを拡張するための最後のコ -マンドとして"$"コマンドが使用された場合、領域は最長の行の最右端のカラムまで拡 -張される。 - -前回の時と全く同じ領域を強調したいときには、"gv"を使用できる |gv| |v_gv|。 - - *v_<Esc>* -<Esc> ビジュアルモード: ビジュアルモードを停止する。 - - *v_CTRL-C* -CTRL-C ビジュアルモード: ビジュアルモードを停止する。挿入モー - ドがぶら下がっている時には(モードメッセージが"-- - (insert) VISUAL --"となる)、そちらも終了する。 - -============================================================================== -3. ビジュアル領域の変更 *visual-change* - - *v_o* -o 強調されたテキストのもう一方の端へ移動する: 現在のカー - ソルの位置が強調されたテキストの開始地点になり、カーソ - ルは強調されたテキストのもう一方の端に移動する。強調さ - れた領域は同じままに保たれる。 - - *v_O* -O 強調されたテキストのもう一方の端へ移動する: これは"o" - に近い動作だが、ビジュアル矩形モードではカーソルが同じ - 行内のもう一方のコーナーに移動する。移動した先のキャラ - クタが画面上で1つ以上の文字幅を占有している場合(例えば - <Tab>文字)、強調される範囲は変更・拡張される。 - - *v_$* -矩形(ブロック)選択モード時に"$"コマンドを使用すると、選択されるテキストの右終 -端は選択されているラインのうち一番長いものによって決定される。この状態は水平方 -向への移動コマンドを使うことで終了する。 - -ブロックの終端へ移動するために色々なコマンドを使うことができるが、Exコマンド、 -変更を加えるコマンド、もしくはファイルを放棄するコマンドは使用できない。次の文 -字で開始するコマンド".", "&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I, -CTRL-O を使用するとブザー音が発生し、ビジュアルモードが継続される。 - -同じバッファを表示している別のウインドウに切り替えるとき、そのウインドウのカー -ソル位置はVisual選択に合わせて調整されます。これは特にVisual選択の開始位置や終 -了位置を確認するのに便利です。選択範囲を変更するのに<RightMouse>が使えます。 -('mousemodel'が"popup"に設定されているときは<S-LeftMouse>)。 - -============================================================================== -4. ビジュアル領域での操作 *visual-operators* - -施すことのできる操作: - ~ 大/小文字の切替 |v_~| - d 削除 |v_d| - c 変更 (4) |v_c| - y ヤンク |v_y| - > 右シフト (4) |v_>| - < 左シフト (4) |v_<| - ! 外部コマンドによるフィルタ (1) |v_!| - = 'equalprg'オプションで指定されたフィルタ (1) |v_=| - gq 'textwidth'の長さによる行の整形 (1) |v_gq| - -使用できるオブジェクト: - aw (空白文字を含む) 1語(訳注:|word|) |v_aw| - iw 1語(訳注:|word|) |v_iw| - aW (空白文字を含む) 1語(訳注:|WORD|) |v_aW| - iW 1語(訳注:|WORD|) |v_iW| - as (空白文字を含む) 1文 |v_as| - is 1文 |v_is| - ap (空白文字を含む) 1段落 |v_ap| - ip 1段落 |v_ip| - ab (丸括弧文字を含む) ()のブロック |v_ab| - ib ()のブロックの中身 |v_ib| - aB (波括弧文字を含む) {}のブロック |v_aB| - iB {}のブロックの中身 |v_iB| - at (タグ自身を含む) <tag> </tag> ブロック |v_at| - it <tag> </tag> ブロックの中身 |v_it| - a< (大小記号文字を含む) <>のブロック |v_a<| - i< <>のブロックの中身 |v_i<| - a[ (各カッコ文字を含む) []のブロック |v_a[| - i] []のブロックの中身 |v_i[| - a" (クォートを含む) ダブルクォート文字列 |v_aquote| - i" ダブルクォート文字列の中身 |v_iquote| - a' (クォートを含む) シングルクォート文字列 |v_a'| - i' シングルクォート文字列の中身 |v_i'| - a` (backtick を含む) backtick 文字列 |v_a`| - i` backtick 文字列の中身 |v_i`| - -加えて続くコマンドが使用可能: - : 強調された行にExコマンドを適用 (1) |v_:| - r 変更 (4) |v_r| - s 変更 |v_s| - C 変更 (2)(4) |v_C| - S 変更 (2) |v_S| - R 変更 (2) |v_R| - x 削除 |v_x| - D 削除 (3) |v_D| - X 削除 (2) |v_X| - Y ヤンク (2) |v_Y| - p 貼り付け |v_p| - J 連結 (1) |v_J| - U 大文字化 |v_U| - u 小文字化 |v_u| - ^] タグ検索 |v_CTRL-]| - I ブロック挿入 |v_b_I| - A ブロック追加 |v_b_A| - -(1): 常に全部の行、|:visual_example|を参照。 -(2): CTRL-Vを使ってないときは全部の行。 -(3): CTRL-Vを使ってないときは全部の行、CTRL-Vを使っているときは行の最後までを - 削除。 -(4): CTRL-Vを使っているときにはブロックにのみ作用。 - -ビジュアルモードでは特別なキー割り当てを行なうために":vmap"コマンドを使うこと -が出来ることに注意。例えば、"/"をビジュアル領域を拡張するのではなくて、選択し -たテキストによる検索を行なわせたい場合には: > - :vmap / y/<C-R>"<CR> -(<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし -'cpoptions'から'B'と'<'のフラグを外しておく必要がある) - -"""コマンドを使用するときにレジスタ名を指定したい場合には、操作キーを入力する -前にタイプする: "v{move-around}"xd"。 - -コマンドの回数を指定したい場合には、操作キーを入力する前にタイプする: -"v{move-around}3>" (行を3単位、右へインデントする)。 - - *{move-around}* -{move-around}は一連の移動コマンドのシーケンス。1つの移動コマンドを意味する -{motion}とは異なるので注意。 - -ビジュアル領域に対して操作を行うもう1つの方法は、パターンにアイテム|/\%V|を含 -めることがある。例えば、ビジュアル領域内のすべての'('を'X'に置換するには: > - - :%s/\%V(/X/g - -============================================================================== -5. 矩形範囲の操作 *blockwise-operators* - -{|+visualextra|機能を無効にしてコンパイルした場合には利用できない} - -注意: 'virtualedit'オプションを設定して、行末を越えた選択や、Tab文字の(表示上 -の)途中での選択ができる。 - -ビジュアル矩形挿入 *v_b_I* -矩形選択中に、I文字列<ESC> を行なうとブロック内の全ての行のブロック先頭にその -文字列が挿入され、行の長さはその分拡張される。選択ブロックの左側のカラムより短 -い行は変更されない。タブは見た目のカラムを保つように分解される。 -|v_b_I_example|を参照。 - -ビジュアル矩形追加 *v_b_A* -矩形選択中に、A文字列<ESC> を行なうとブロック内の全ての行のブロック末尾ににそ -の文字列が挿入される。ブロックの右端が真っ直ぐでない時には、行の長さの違いに -よって異なる動作がある。 - -1. ブロックが <C-v>$ で作成された場合 - このケースでは各行の最後に文字列が追加される。 -2. ブロックが <C-v>{move-around}で作成された場合。 - このケースではブロック内の各行のブロック末尾に文字列が追加され、行長が拡張 - される。さらにブロックの末尾を揃えるために空白文字が挿入される。 -|v_b_A_example|を参照。 -Note: "I"と"A"は変更によって行が拡張されるときに違う動作をする。これはわざとそ -うなっていて、あなたがしたいようにできる。 - -ビジュアル矩形変更 *v_b_c* -矩形選択されたテキストの全てが同じテキスト文字列によって置き換えられる。"c"を -押した時には選択されたテキストが消去された後に挿入モードに入る。テキスト(改行 -を除く)を入力できる。<Esc>を叩くと、選択されていた行全てに同じ文字列が入力され -る。 - -ビジュアル矩形変更(大文字) *v_b_C* -小文字の"c"と同様だが、選択領域が各行の末尾まで拡張される。 - - *v_b_<* -ビジュアル矩形シフト *v_b_>* -ブロックが'shiftwidth'によりシフトされる。ブロックの右端には拠らない。ブロック -の左端がどのポイントから右シフトを適用するかを決定し、'ts'と'et'に従い最適なタ -ブ文字が埋め込まれる(パディング)。ブロックの左端が何処まで左シフトするかを決定 -する。 -|v_b_>_example|を参照。 -|v_b_<_example|を参照。 - -ビジュアル矩形置換 *v_b_r* -強調された領域の全ての画面上の文字が同じ文字で置き換えられ、タブ文字は画面上の -レイアウトを保持するために仮想的な空白文字に置き換えられる。 -|v_b_r_example|を参照。 - - -============================================================================== -6. 繰り返し *visual-repeat* - -ビジュアルモードの操作を繰り返して行なう時には、最後の時と同じ量のテキストに対 -して操作が適用されている: -- 行ビジュアルモード: 同じ行数 -- 矩形ビジュアルモード: 同じ行数とカラム数 -- 1行内の通常ビジュアルモード: 同じ文字数 -- 複数行にまたがる通常ビジュアルモード: 同じ行数で、最終行だけは前回の時の最 - 終行と同じ文字数。 -テキストの開始位置は現在の位置となる。最後のコマンドとして強調されたテキストを -拡張するために"$"が使用された場合には、繰り返されるコマンドへは一番長い行の右 -端のカラムが適用される。 - - -============================================================================== -7. 使用例 *visual-examples* - - *:visual_example* -現在":"コマンドは行全体に対して働くだけである。行の一部を選択して、":!date"の -ような何かを行なっても1行全体が置換わってしまう。行の一部だけを置き換えたい場 -合には何かマッピングのようなものを作らなければならないだろう。将来のリリースで -は":"は部分的に動作するようになるだろう。 - -ここに1つ、選択されたテキストを"date"の出力に置き換える例がある: > - :vmap _a <Esc>`>a<CR><Esc>`<i<CR><Esc>!!date<CR>kJJ - -(<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし -'cpoptions'から'B'と'<'のフラグを外しておく必要がある) - -これが何をしているかというと: -<Esc> ビジュアルモードを終了する -`> 選択領域の最後に移動する -a<CR><Esc> 選択領域の直後に改行を挿入する -`< 選択領域の先頭に移動する -i<CR><Esc> 選択領域の直前に改行を挿入する -!!date<CR> 選択されたテキストをdateでフィルタリングする -kJJ 分割した行を連結して1つにする - - *visual-search* -選択したテキストを検索に使用することを可能にするマッピングのアイデアがここにあ -る: > - :vmap X y/<C-R>"<CR> - -(<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし -'cpoptions'から'B'と'<'のフラグを外しておく必要がある) - -特別なキャラクタ('.'や'*'のようなもの)が問題を引き起こすことに注意。 - -矩形ビジュアルモードの例 *blockwise-examples* -以下のテキストを使って、矩形モードのコマンドの使用法と結果を示していく。どの -ケースでも、初めカーソルはテストテキストの最初の行の先頭の'a'の上にあるものと -する。 -以下、modelineの設定は ":ts=8:sw=4:" であることを仮定している。 - -次のように設定しておくと理解の助けになるだろう。 -:set hls -/<TAB> -<TAB>とかかれている場所は本物のタブに読み替える。これが操作を可視化してくれ -る。 - -テストテキストは: - -abcdefghijklmnopqrstuvwxyz -abc defghijklmnopqrstuvwxyz -abcdef ghi jklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz - -1. fo<C-v>3jISTRING<ESC> *v_b_I_example* - -abcdefghijklmnSTRINGopqrstuvwxyz -abc STRING defghijklmnopqrstuvwxyz -abcdef ghi STRING jklmnopqrstuvwxyz -abcdefghijklmnSTRINGopqrstuvwxyz - -2. fo<C-v>3j$ASTRING<ESC> *v_b_A_example* - -abcdefghijklmnopqrstuvwxyzSTRING -abc defghijklmnopqrstuvwxyzSTRING -abcdef ghi jklmnopqrstuvwxyzSTRING -abcdefghijklmnopqrstuvwxyzSTRING - -3. fo<C-v>3j3l<.. *v_b_<_example* - -abcdefghijklmnopqrstuvwxyz -abc defghijklmnopqrstuvwxyz -abcdef ghi jklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz - -4. fo<C-v>3j>.. *v_b_>_example* - -abcdefghijklmn opqrstuvwxyz -abc defghijklmnopqrstuvwxyz -abcdef ghi jklmnopqrstuvwxyz -abcdefghijklmn opqrstuvwxyz - -5. fo<C-v>5l3jrX *v_b_r_example* - -abcdefghijklmnXXXXXXuvwxyz -abc XXXXXXhijklmnopqrstuvwxyz -abcdef ghi XXXXXX jklmnopqrstuvwxyz -abcdefghijklmnXXXXXXuvwxyz - -============================================================================== -8. 選択モード *Select* *Select-mode* - -選択モードはビジュアルモードに似ているように見えるが、受け付けるコマンドが少し -異なる。これはMicrosoft Windowsの選択モードに似ている。オプション'showmode'が -設定されている時には、"-- SELECT --"が最下の行に表示される。 - -選択モードに入るには: -- 'selectmode'が"mouse"を含んだ状態で、マウスを使って領域を選択する。 - 'mouse'が現在のモードのフラグを含んでなければならない。 -- 'selectmode'が"key"を含んだ状態で、シフトキーを押しながら表示できない移動コ - マンドを使用する。例えば: <S-Left>や<S-End>。'keymodel'が"startsel"を含んで - いる必要もある。 -- 'selectmode'が"cmd"を含んだ状態で "v", "V" もしくはCTRL-Vを使用する。 -- ノーマルモードで "gh", "gH" もしくは "g_CTRL-H" コマンドを使用する。 -- ビジュアルモードでCTRL-Gを押す。 *v_CTRL-G* - -選択モードのコマンド: -- 表示可能な文字、及び<NL>と<CR>は選択領域を削除し、Vimは入力モードに移行す - る。タイプした文字は挿入される。 -- シフトキーを押しながらの表示不可能な移動コマンド、は選択領域を拡張する。 - 'keymodel'は"startsel"を含まねばならない。 -- シフトキーを押さずに表示不可能な移動コマンドを使用すると、選択モードを終了す - る。'keymodel'は"stopsel"を含まねばならない。 -- ESCは選択モードを終了する。 -- CTRL-Oでビジュアルモードに切り替え1つだけコマンドを実行する。 *v_CTRL-O* -- CTRL-Gでビジュアルモードに切り替える。 - -それ以外では、入力された文字はビジュアルモードと同様に扱われる。 - -選択モードで操作が行なわれると、行選択の時には、選択された行が操作対象になる -が、文字選択の時のように扱われる。例えば、行全体を削除した時には、後でその内容 -を行の中間に貼り付けることが出来る。 - - -選択モード時のマッピングとメニュー *Select-mode-mapping* - -コマンド|:vmap|や|:vmenu|で定義したマッピングとメニューはビジュアルモードと選 -択モードの両方で働く。選択モードでは、それらのマッピングやメニューが実行される -直前に自動的にビジュアルモードに切り替わるので、ビジュアルモードと同じ動作が行 -われる。ビジュアルモードと選択モードで別々にマッピングを定義するときは|:xmap| -や|:smap|を使うこと。 - -ユーザーは印字可能な文字を押すと選択された領域が置換されることを期待している。 -そのため、選択モードで印字可能な文字にマップするのは避けること。または |:map| -と|:vmap|のあとで |:sunmap| をして選択モードに対するマップを削除すること。 - -マッピング及びメニューが終了した後には、選択領域が削除されるか、他のバッファに -切り替わるか、ウィンドウのレイアウトが変更されない限り、選択領域が再び有効にな -り選択モードになる。 - -文字が入力されたとき、選択領域が削除され挿入モードにはいると挿入モードのマッピ -ングが適用されます。選択モードで入力された文字に挿入モードのマッピングが適用さ -れると言うのはおそらく混乱を招きます。そのうえ言語マッピングも適用されます。 - - *gV* *v_gV* -gV 選択モードのマッピング及びメニューが終了したあとでビ - ジュアル領域が再度自動的に選択されるのを抑制する。マッ - ピングやメニューの終わる直前にこれを使用する。少なくと - もセレクションのあらゆる操作の後に行なわれるべきであ - る。 - - *gh* -gh 文字選択モードを開始する。これは"v"に似ているが、ビ - ジュアルモードの代わりに選択モードを開始する。 - 覚え方: "get highlighted" - - *gH* -gH 行選択モードを開始する。これは"V"に似ているが、 - ビジュアルモードの代わりに選択モードを開始する。 - 覚え方: "get Highlighted". - - *g_CTRL-H* -g CTRL-H 矩形選択モードを開始する。これはCTRL-Vに似ているが、ビ - ジュアルモードの代わりに選択モードを開始する。 - 覚え方: "get Highlighted". - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/windows.jax b/runtime.old/doc/windows.jax deleted file mode 100644 index c2477a8c5..000000000 --- a/runtime.old/doc/windows.jax +++ /dev/null @@ -1,1220 +0,0 @@ -*windows.txt* For Vim バージョン 7.3. Last change: 2010 Aug 15 - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -マルチウィンドウ、マルチバッファを使った編集 *windows* *buffers* - -ここではマルチウィンドウやマルチバッファを使用するために追加したコマンドについ -て説明する。さらに、2つ以上のウィンドウを組合せて使用するときに異なる動作をす -るコマンドについての説明もする。 - -基本についてはユーザーマニュアルの7章と8章で説明されている。 -|usr_07.txt| |usr_08.txt|. - -1. はじめに |windows-intro| -2. Vim の起動 |windows-starting| -3. ウィンドウのオープンとクローズ |opening-window| -4. ウィンドウ間のカーソル移動 |window-move-cursor| -5. ウィンドウの移動 |window-moving| -6. ウィンドウのサイズ変更 |window-resize| -7. コマンド引数とバッファリスト |buffer-list| -8. 全てのバッファ/ウィンドウに対してコマンド実行 |list-repeat| -9. カーソル位置のタグ名/ファイル名 |window-tag| -10. プレビューウィンドウ |preview-window| -11. 隠れ(hidden)バッファを使う |buffer-hidden| -12. 特殊なバッファ |special-buffers| - - -{Vi にはこれらのコマンドはない} -{コンパイル時に|+windows|機能が無効にされた場合は複数のウィンドウを使うことはで -きない} -{コンパイル時に|+vertsplit|機能が無効にされた場合は垂直分割ウィンドウを使うこと -はできない} - - -============================================================================== -1. はじめに *windows-intro* *window* - -要約: - バッファとはメモリに保持しているファイルの内容である。 - ウィンドウとはバッファの表示領域である。 - タブページとはウィンドウを集めたものである。 - -ウィンドウはバッファの表示領域である。 1つのバッファに対して複数のウィンドウを -開くことができるし、異なる複数のバッファに対して複数のウィンドウを開くこともで -きる。 - -バッファは編集時にメモリ上にロードされたファイルのことを言う。 -オリジナルのファイルはバッファ内容をそのファイルに上書きするまで変更されずにいる。 - -バッファは以下の3つの状態のうちのどれか1つの状態にある。 - - *active-buffer* -アクティブ: バッファ内容はウィンドウに表示されている。このバッファに対応する - ファイルが存在する場合、ファイルがバッファに読み込まれている。 - バッファはそれ以降編集されていて、ファイルと異なっているかもしれ - ない。 - *hidden-buffer* -隠れ(hidden): バッファ内容はウィンドウに表示されていない。このバッファに対応す - るファイルが存在する場合、ファイルはバッファに読み込まれている。 - 見ることができないが、それ以外はアクティブなバッファと同じ。 - *inactive-buffer* -非アクティブ: バッファ内容はウィンドウに表示されていない。バッファには何もロー - ドされていない。ファイルが一度でもメモリにロードされていたなら、 - そのバッファのオプションは記憶されている。|viminfo|ファイルにより - マークを含んでいるかもしれない。 - -状態表: - -状態 ウィンドウ メモリ上に ":buffers" ~ - 表示 ロード 表示 ~ -アクティブ ○ ○ 'a' -隠れ(hidden) × ○ 'h' -非アクティブ × × ' ' - - -注意: ノーマルコマンドが利用できない、あるいは使い勝手が悪い状況のために、全て -のCTRL-Wコマンドは|:wincmd|によっても実行できる。 - -Vimではウィンドウを複数に分割することができる。タブページ|tab-page|というもの -もあり、タブページは複数のウィンドウを保持することができる。 - -============================================================================== -2. Vim の起動 *windows-starting* - -デフォルトでは、Vim は Vi のように1つのウィンドウで起動する。 - -Vim のオプション引数に "-o" と "-O" を使うと、引数で指定した各ファイルのウィン -ドウがオープンする。オプション"-o" はウィンドウを水平分割し、"-O" オプションは -ウィンドウを垂直分割する。"-o" と "-O" の両方が与えられた場合は、後に現れた方 -が分割方向を決めるのに使われる。例えば、これは3つのウィンドウが垂直分割して -開かれる: > - vim -o file1 file2 file3 - -"-oN" (N は10進数)の場合は、N個のウィンドウが水平に分割して開く。ウィンドウの数 -(N)より引数で指定したファイルの数が多い場合、N個のウィンドウが開き、残りのファ -イルはウィンドウに表示されない。逆にウィンドウの数より引数で指定したファイルの -数が少ない場合、残りのウィンドウは空のバッファを表示する。同様に "-ON" はN個の -ウィンドウを垂直分割して開く。制限も同じである。 - -引数にたくさんのファイル名を指定した場合、ウィンドウは非常に小さくなる。もしか -したら、作業のできる環境にするために 'winheight' または 'winwidth' オプション -を設定したくなるかもしれない。 - -Buf/Win Enter/Leave 時のオートコマンド|autocommand|は、新しいウィンドウを開い -たりファイルを読み込んだりしても実行されない。そのオートコマンドはバッファ/ -ウィンドウへ入った時にのみ実行される。 - - *status-line* -ステータス行はウィンドウの分割に使われる。 'laststatus' オプションは一番下の -ウィンドウにステータス行を表示するかを設定する: - 'laststatus' = 0 常にステータス行を表示しない。 - 'laststatus' = 1 ウィンドウが2つ以上ある場合に表示する。 - 'laststatus' = 2 常にステータス行を表示する。 - -ステータス行の内容は 'statusline' オプションで変更できる。 -このオプションはウィンドウについてローカルにすることもでき、そうすると各ウィン -ドウごとに異なるステータスラインを表示することができる。 - -通常、ステータス行は反転表示される。これは 'highlight' オプションの 's' キャラ -クタで変更できる。例えば、"sb" は太文字に設定する。ステータス行にハイライトを -使用しない場合("sn")、'^'がカレントウィンドウに使われ、'='が他のウィンドウに使 -われる。マウスがサポートされていて 'mouse' オプションでマウスが使用可能になっ -ている場合は、ステータス行をドラッグすることでウィンドウのリサイズを行なえる。 - -注: ステータス行が反転表示されるはずが反転表示されなければ、'highlight' オプ -ションに 'si' が含まれているか確認すること。version 3.0 では、'si' がステータ -ス行の反転表示を意味していた。今は反転表示には 'sr' を使用し、'si' はイタリッ -ク表示を意味している! イタリックを表示できない端末では、ステータス行は反転表 -示となる。イタリック表示のための termcap コードがある場合にのみ、この問題が見 -られる。 - -============================================================================== -3. ウィンドウのオープンとクローズ *opening-window* - -CTRL-W s *CTRL-W_s* -CTRL-W S *CTRL-W_S* -CTRL-W CTRL-S *CTRL-W_CTRL-S* -:[N]sp[lit] [++opt] [+cmd] *:sp* *:split* - カレントウィンドウを2つに分割する。その結果、2つの表示領域に同 - じファイルが表示されるようになる。新しいウィンドウの高さはNに - なる(デフォルトの高さはカレントウィンドウの高さの半分)。新しい - ウィンドウの場所を確保するため、カレントウィンドウの高さは低く - なる('equalalways' オプションがセットされていて、かつ - 'eadirection' の値が"hor"でない場合、他のウィンドウの中でカレ - ントウィンドウか新しいウィンドウより大きいものがあれば、その - ウィンドウも小さくなる) - 注: CTRL-S は端末によっては使用できない。また、それ以上の入力 - をブロックしてしまうかもしれない。続けるためにはCTRL-Qを使うこ - と。 - |++opt|と|+cmd| も参照のこと。 - -CTRL-W CTRL-V *CTRL-W_CTRL-V* -CTRL-W v *CTRL-W_v* -:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* - |:split|と同様、ただし垂直分割する。次のすべてに当てはまる場合、 - ウィンドウは水平に広げられる: - 1. 幅が指定されていない。 - 2. 'equalalways' がセットされている。 - 3. 'eadirection' が "ver" でない。 - 4. 他のウィンドウの中でカレントウィンドウか新しいウィンドウよ - り幅が広いものがある。 - 注意:他の局面ではCTRL-QはCTRL-Vと同じだが、ここではそうでな - い。 - -CTRL-W n *CTRL-W_n* -CTRL-W CTRL_N *CTRL-W_CTRL-N* -:[N]new [++opt] [+cmd] *:new* - 新しいウィンドウが作成して空のファイルの編集が始まる。新しい - ウィンドウの高さはNになる(デフォルトの高さはカレントウィンドウ - の高さの半分)。新しいウィンドウの場所を確保するため、カレント - ウィンドウの高さは低くなる。 ('equalalways' オプションがセット - されていてかつ'equalalways'オプションが"hor"でない場合、他の - ウィンドウの高さも低くなる)。|++opt|と |+cmd| も参照のこと。 - 'fileformats' オプションが空でない場合は、与えられた最初の - フォーマットが新しいバッファにも使用される。 - 'fileformats' オプションが空の場合は、カレントバッファの - 'fileformat' が使用される。これは引数|++opt|によって上書きされ - うる。 - オートコマンドはこの順で実行される: - 1. カレントウィンドウに対する WinLeave - 2. 新しいウィンドウに対する WinEnter - 3. カレントバッファに対する BufLeave - 4. 新しいバッファに対する BufEnter - この動作は、はじめに ":split"、次に ":e" コマンドを実行した場 - 合と同じ動作である。 - -:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew* - |:new|と同様だが、垂直分割する。'equalalways'がセットされ、 - 'eadirection'が"ver"でないならば、幅が指定されない限りウィン - ドウは水平に広げられる。 - -:[N]new [++opt] [+cmd] {file} -:[N]sp[lit] [++opt] [+cmd] {file} *:split_f* - 新しいウィンドウを作成し、そのウィンドウでファイル {file} の編 - 集が始まる。 [+cmd] が指定された場合は、ファイルをロードしコマ - ンドを実行する |+cmd|。 - |++opt| も参照のこと。 - 新しいウィンドウの高さはNになる(デフォルトの高さはカレントウィ - ンドウの高さの半分)。新しいウィンドウの場所を確保するため、カ - レントウィンドウの高さは低くなる。('equalalways' オプションが - セットされていれば他のウィンドウも低くなる) - -:[N]sv[iew] [++opt] [+cmd] {file} *:sv* *:sview* *splitview* - ":split" と同じ。ただし、バッファに対して 'readonly' オプショ - ンがセットされる。 - -:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfind* *splitfind* - ":split" と同じ。ただし、|:find| と同様に 'path' から {file} - を検索する。{file}が見つからなければ、ウィンドウは分割されない。 - -CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^* -CTRL-W ^ ":split #" と同じ。つまり、ウィンドウを2つに分割してもう一方の - ファイルを編集する。カウントが指定された場合は ":split #N" と - 同じ。つまり、ウィンドウを分割してバッファNを編集する。 - -オプション'splitbelow'と'splitright'が新しいウィンドウが現れる場所に影響を及ぼ -すことに注意。 - - *:vert* *:vertical* -:vert[ical] {cmd} - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いれば、垂直分割させる。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - -:lefta[bove] {cmd} *:lefta* *:leftabove* -:abo[veleft] {cmd} *:abo* *:aboveleft* - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いる場合は、垂直分割ならば左側に、水平分割ならば上側にカレント - ウィンドウを出現させる。'splitbelow'と'splitright'を上書きする。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - -:rightb[elow] {cmd} *:rightb* *:rightbelow* -:bel[owright] {cmd} *:bel* *:belowright* - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いる場合は、垂直分割ならば右側に、水平分割ならば下側にカレント - ウィンドウを出現させる。'splitbelow'と'splitright'を上書きする。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - - *:topleft* *E442* -:to[pleft] {cmd} - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いる場合は、最上段に現れ、Vimのウィンドウの中で幅を最大にする。 - 垂直分割のときはウィンドウは最も左側に現れ、Vimウィンドウの中で - 高さを最大にする。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - - *:botright* -:bo[tright] {cmd} - {cmd}を実行する。{cmd}がウィンドウを分割させるコマンドを含んで - いる場合は、最下段に現れ、Vimのウィンドウの中で幅を最大にす - る。垂直分割のときはウィンドウは最も右側に現れ、Vimウィンドウ - の中で高さを最大にする。 - cmdとして|:execute|または|:normal|を指定しても効果がない。 - -これらのコマンドモディファイヤを組み合わせて、最大高さの垂直分割したウィンドウ -を作ることができる。例: > - :vertical topleft edit tags -ウィンドウを垂直分割し、"tags"ファイルのウィンドウを最大の高さで最も左に開く。 - - -ウィンドウを閉じる ------------------- - -CTRL-W q *CTRL-W_q* -CTRL-W CTRL-Q *CTRL-W_CTRL-Q* -:q[uit] カレントウィンドウを終了する。最後のウィンドウ(ヘルプウィンド - ウを除く)を終了すると Vim が終了する。 'hidden' オプションが - セットされていて、かつ、カレントバッファを表示しているウィンド - ウが 1つしかない場合は、そのバッファは隠れ状態(hidden)となる。 - 'hidden' オプションがセットされていなくて、カレントバッファを - 表示しているウィンドウが1つしかなくて、かつ、そのバッファが編 - 集中の場合は、このコマンドは失敗する。 (注: CTRL-Q は総ての端 - 末で動作しない。) - -:q[uit]! カレントウィンドウを終了する。このウィンドウがバッファを表示し - ている最後のウィンドウの場合、このバッファに対する変更は総て失 - われる。最後のウィンドウ(ヘルプウィンドウを除く)を終了すると - Vim が終了する。たとえ 'hidden' オプションがセットされていたと - しても、バッファ内容は失われる。 - -CTRL-W c *CTRL-W_c* *:clo* *:close* -:clo[se][!] カレントウィンドウを閉じる。'hidden' オプションがセットされて - いる時、または、バッファが変更されていて[!]を使用した時は、( - バッファが他のウィンドウで編集中でなければ)バッファは隠れ状態 - (hidden)になる。 - カレントタブページにウィンドウが1つしかなく、他にタブページが - あるとき、このコマンドを実行するとカレントタブページが閉じる。 - |tab-page| - このコマンドは以下の場合に失敗する: *E444* - - スクリーン上に1つのウィンドウしかない時 - - 'hidden' がセットされていなくて、[!]を使用せず、バッファが変 - 更されていて、かつ、このバッファが他のウィンドウで表示されて - いない場合 - バッファへの変更は保存されず、失われることもないため、このコマ - ンドは「安全な」コマンドである。 - -CTRL-W CTRL-C *CTRL-W_CTRL-C* - CTRL-W CTRL-C はカレントウィンドウを閉じると期待するかもしれな - いが、CTRL-C はコマンドをキャンセルするために期待通りには動作 - しない。 - - *:hide* -:hid[e] カレントウィンドウがスクリーン上の最後のウィンドウでなければ、 - カレントウィンドウを終了する。 (他のウィンドウがバッファを編集 - していなく、かつ 'bufhidden' の値が "unloaded" か"delete" でな - いならば)そのバッファは隠れ状態(hidden)となる。 - そのウィンドウがカレントタブページで最後のウィンドウであるなら - ばタブページも閉じる。|tab-page| - 'hidden' の値はこのコマンドには無関係である。 - バッファへの変更は保存されず、失われることもないため、このコマ - ンドは「安全な」コマンドである。 - -:hid[e] {cmd} {cmd} を実行し、同時に 'hidden' をセットする。{cmd} が実行され - た後に 'hidden' の以前の値が復旧される。 - 例: > - :hide edit Makefile - これはカレントバッファに変更があっても、それを隠しバッファに - し、"Makefile" を編集する。 - -CTRL-W o *CTRL-W_o* *E445* -CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* -:on[ly][!] カレントウィンドウをスクリーン上にある唯一のウィンドウにする。 - 他の総てのウィンドウは閉じられる。 - 'hidden' オプションがセットされていれば、閉じられた総てのバッ - ファは隠れ状態(hidden)となる。 - 'hidden' オプションがセットされておらず、'autowrite' オプショ - ンがセットされている場合は、編集中のバッファは保存される。さも - なければ、編集中のバッファを表示しているウィンドウは閉じられる - ことはない。 ただし[!]が与えられていれば、それらのバッファは隠 - れ状態(hidden)となる。しかし、編集中のバッファは決して削除され - ないので、変更は失われない。 - -============================================================================== -4. ウィンドウ間のカーソル移動 *window-move-cursor* - -CTRL-W <Down> *CTRL-W_<Down>* -CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j* -CTRL-W j カーソルをカレントウィンドウのN個下のウィンドウに移動。 - 候補が複数ある場合は、現在のカーソル位置によって選択される。 - -CTRL-W <Up> *CTRL-W_<Up>* -CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k* -CTRL-W k カーソルをカレントウィンドウのN個上のウィンドウに移動。 - 候補が複数ある場合は、現在のカーソル位置によって選択される。 - -CTRL-W <Left> *CTRL-W_<Left>* -CTRL-W CTRL-H *CTRL-W_CTRL-H* -CTRL-W <BS> *CTRL-W_<BS>* *CTRL-W_h* -CTRL-W h カーソルをカレントウィンドウのN個左のウィンドウに移動。 - 候補が複数ある場合は、現在のカーソル位置によって選択される。 - -CTRL-W <Right> *CTRL-W_<Right>* -CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l* -CTRL-W l カーソルをカレントウィンドウのN個右のウィンドウに移動。 - 候補が複数ある場合は、現在のカーソル位置によって選択される。 - -CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W* -CTRL-W CTRL-W カウント指定なし: カーソルをカレントウィンドウの下/右のウィン - ドウに移動。下/右にウィンドウがなければ、一番上/左のウィンド - ウに移動。カウント指定有り: N番目のウィンドウに移動(ウィンド - ウは左上から右下へと番号が振られる)。ウィンドウの番号を知るに - は |bufwinnr()| と |winnr()| を参照。N がウィンドウの個数より - 大きい場合、最後のウィンドウへ移動する。 - - *CTRL-W_W* -CTRL-W W カウント指定なし: カーソルをカレントウィンドウの上/左のウィン - ドウに移動。上/左にウィンドウがなければ、一番下/右のウィンド - ウに移動。カウント指定有り: N番目のウィンドウに移動 - (CTRL-W w と同様)。 - -CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T* -CTRL-W CTRL-T カーソルを一番左上のウィンドウに移動。 - -CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B* -CTRL-W CTRL-B カーソルを一番右下のウィンドウに移動。 - -CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P* -CTRL-W CTRL-P カーソルを直前の(最後にアクセスしていた)ウィンドウに移動。 - - *CTRL-W_P* *E441* -CTRL-W P プレビューウィンドウに移動。プレビューウィンドウがない場合には - エラーになる。 - {|+quickfix| 機能なしでコンパイルされた場合には使用できない} - -ビジュアルモードがアクティブで移動先のウィンドウがカレントバッファと同じバッ -ファを表示していない場合、ビジュアルモードは終了する。ウィンドウが同じバッファ -を表示している場合、カーソル位置は選択領域が保たれるようにセットされる。 - - *:winc* *:wincmd* -以上のコマンドは ":wincmd" によっても実行することができる: - -:[count]winc[md] {arg} - CTRL-W [count] {arg} を実行するのと同じ。例: > - :wincmd j -< 下のウィンドウに移動する。 - このコマンドは(|CursorHold| 自動コマンドイベントのため)ノー - マルモードが利用できないときやノーマルコマンドが不便なときに有 - 効である。 - count はウィンドウ番号であってもよい。例: > - :exe nr . "wincmd w" -< これは "nr" 番のウィンドウへ移動する。 - -============================================================================== -5. ウィンドウの移動 *window-moving* - -CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443* -CTRL-W CTRL-R ウィンドウ位置を下/右へ回転させる。1番のウィンドウは2番目に、 - 2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。 - カーソルは同じウィンドウにとどまる。 - この移動はカレントウィンドウと同じ段/列の中だけで行われる。 - - *CTRL-W_R* -CTRL-W R ウィンドウ位置を上/左へ回転させる。1番のウィンドウは2番目に、 - 2番目のウィンドウは3番目になる。最後のウィンドウは1番になる。 - カーソルは同じウィンドウにとどまる。 - この移動はカレントウィンドウと同じ段/列の中だけで行われる。 - - -CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X* -CTRL-W CTRL-X カウント指定なし: カレントウィンドウと次(1つ下)のウィンドウを - 入れ替える。次のウィンドウがない(カレントウィンドウが一番下の) - 場合は、前(1つ上)のウィンドウと入れ替える。 - カウント指定有り: カレントウィンドウと上からN番目のウィンドウ - (一番上は1番目)を入れ替える。カーソルは入れ替えた相手のウィン - ドウに移動する。 - 水平分割と垂直分割が混ざっている場合には、カレントウィンドウと - 同じ段/列の中だけで入れ替えが行われる。 - -以下のコマンドはウィンドウのレイアウトを変更するために使える。例えば、2つの垂 -直分割されたウィンドウがある場合、 CTRL-W K はそれらを水平分割に変更する。 -CTRL-W H はその逆を行う。 - - *CTRL-W_K* -CTRL-W K カレントウィンドウを最上段に移動し、幅を最大にする。これは、カレ - ントウィンドウを閉じ、それから "topleft split" で別のウィンド - ウを作るのと同様で、違いは新しいウィンドウにカレントウィンドウ - の内容が表示されるということだけである。 - - *CTRL-W_J* -CTRL-W J カレントウィンドウを最下段に移動し、幅を最大にする。これは、カレ - ントウィンドウを閉じ、それから "botright split" で別のウィンド - ウを作るのと同様で、違いは新しいウィンドウにカレントウィンドウ - の内容が表示されるということだけである。 - - *CTRL-W_H* -CTRL-W H カレントウィンドウを最左列に移動し、高さを最大にする。これは、 - カレントウィンドウを閉じ、それから ":vert topleft split" で別 - のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント - ウィンドウの中身が使われるということだけである。 - {|+vertsplit| 機能なしでコンパイルされた場合は使用できない} - - *CTRL-W_L* -CTRL-W L カレントウィンドウを最右列に移動し、高さを最大にする。これは、 - カレントウィンドウを閉じ、それから ":vert botright split" で別 - のウィンドウを作るのと同様で、違いは新しいウィンドウにカレント - ウィンドウの中身が使われるということだけである。 - {|+vertsplit| 機能なしでコンパイルされた場合は使用できない} - - *CTRL-W_T* -CTRL-W T カレントウィンドウを新しいタブページへ移動する。カレントタブ - ページにウィンドウが1つしかないときは、このコマンドは失敗す - る。カウントが指定されると、その番号のタブページの前に新しいタ - ブページが開く。指定されないときはカレントタブページの後ろに開 - く。 - -============================================================================== -6. ウィンドウのサイズ変更 *window-resize* - - *CTRL-W_=* -CTRL-W = 総てのウィンドウの高さ・幅を(ほとんど)同じにする。ただしカレン - トウィンドウに対しては 'winheight' と 'winwidth' が適用される。 - 'winfixheight'がセットされたウィンドウの高さはそのままにし、 - 'winfixwidth'がセットされたウィンドウの幅はそのままにする。 - -:res[ize] -N *:res* *:resize* *CTRL-W_-* -CTRL-W - カレントウィンドウの高さをN(デフォルトは1)行分低くする。 - |:vertical| の後に置かれたときは、幅を N 桁分減らす。 - -:res[ize] +N *CTRL-W_+* -CTRL-W + カレントウィンドウの高さをN(デフォルトは1)行分高くする。 - |:vertical| の後に置かれたときは、幅を N 桁分増やす。 - -:res[ize] [N] -CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* -CTRL-W _ カレントウィンドウの高さをN行にする(デフォルト: 可能な限り高く - する) - -z{nr}<CR> カレントウィンドウの高さを {nr} にする。 - - *CTRL-W_<* -CTRL-W < カレントウィンドウの幅を N(デフォルトは1)桁分減らす。 - - *CTRL-W_>* -CTRL-W > カレントウィンドウの幅を N(デフォルトは1)桁分増やす。 - -:vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar* -CTRL-W | カレントウィンドウの幅を N桁にする(デフォルト:可能な限り広く - する) - -マウスでステータス行を上下にドラッグすることによってもウィンドウのサイズを変更 -できる。垂直セパレータ行を左右にドラッグしても同様。これができるのは、使用して -いる Vim がマウスをサポートしていて 'mouse' オプションでマウスが使えるように設 -定されているときである。 - -'winheight'('wh') オプションはカレントウィンドウの最小の高さを設定する。このオ -プションは他のウィンドウがカレントウィンドウになるたびに使用される。このオプ -ションが '0' に設定されている場合、オプションが無効になる。 'winheight' オプ -ションをかなり大きい値、例えば '9999' に設定すると、カレントウィンドウの高さは -常に可能な限り高くなる。このオプションを適当な値、例えば '10' に設定した場合、 -カレントウィンドウでの編集がやりやすくなる。 - -同様のオプション 'winwidth' ('wiw') がカレントウィンドウの最小幅を設定するのに -使える。 - -'equalalways'('ea') オプションをセットした場合、ウィンドウを分割したり閉じたり -した後は総てのウィンドウは自動的に同じ高さとなる。このオプションをセットしてい -ない場合、ウィンドウを分割するとカレントウィンドウが低くなり他のウィンドウの高 -さは変化しない。ウィンドウを閉じると、閉じたウィンドウの上のウィンドウの下の -ウィンドウが高くなる。 - -オプション'eadirection'は'equalalways'がどの方向に適用されるかを制限する。デ -フォルトの"both"は両方の方向にリサイズする。その値が"ver"のときはウィンドウの -高さだけが等しくされる。垂直分割したウィンドウを手動でリサイズし、この幅を保ち -たいときにこれを使うとよい。同じように、値が"hor"のときはウィンドウの幅だけが -等しくされる。 - -'cmdheight'('ch') オプションはコマンド行の高さを設定する。長いメッセージの表示 -の際の |hit-enter| プロンプトをわずらわしいと感じたら、このオプションを2か3に -設定しなさい。 - -ウィンドウが1つしかない場合、ウィンドウの高さを変更するとコマンド行の高さも変 -化する。 2つ以上ウィンドウがある場合、カレントウィンドウの高さを変更するとその -下のウィンドウの高さも変化する(たまに上のウィンドウの高さが変化することもあ -る)。 - -ウィンドウの最小の高さと幅は 'winminheight' と 'winminwidth' によって設定され -る。これらは固定値で、ウィンドウはこれらより小さくなることはない。 -These are hard values, a window will never become smaller. - -============================================================================== -7. コマンド引数とバッファリスト *buffer-list* - - args list buffer list meaning ~ -1. :[N]argument [N] 11. :[N]buffer [N] N番目の引数/バッファに移動 -2. :[N]next [file ..] 12. :[N]bnext [N] N個先の引数/バッファに移動 -3. :[N]Next [N] 13. :[N]bNext [N] N個前の引数/バッファに移動 -4. :[N]previous [N] 14. :[N]bprevious [N] N個前の引数/バッファに移動 -5. :rewind / :first 15. :brewind / :bfirst 最初の引数/バッファに移動 -6. :last 16. :blast 最後の引数/バッファに移動 -7. :all 17. :ball 総ての引数/バッファを編集 - 18. :unhide 総ての読み込まれたバッファを編集 - 19. :[N]bmod [N] N個先の編集中のバッファへ移動 - - split & args list split & buffer list meaning ~ -21. :[N]sargument [N] 31. :[N]sbuffer [N] split + N番目の引数/バッファに移動 -22. :[N]snext [file ..] 32. :[N]sbnext [N] split + N個先の引数/バッファに移動 -23. :[N]sNext [N] 33. :[N]sbNext [N] split + N個前の引数/バッファに移動 -24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + N個前の引数/バッファに移動 -25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + 最初の引数/バッファに移動 -26. :slast 36. :sblast split + 最後の引数/バッファに移動 -27. :sall 37: :sball 総ての引数/バッファを編集 - 38. :sunhide 総ての読み込まれたバッファを編集 - 39. :[N]sbmod [N] split + N個先の編集中のバッファへ移動 - -40. :args コマンド引数の表示 -41. :buffers バッファの表示 - -[N] の意味はコマンドによって異なる。 - ?2、?3、?4のコマンドにおいては、[N]は前方/後方に移動するバッファ数 - 1、21のコマンドにおいては、[N]は引数番号、デフォルトはカレント引数 - 11、31のコマンドにおいては、[N]はバッファ番号、デフォルトはカレントバッファ - 19、39のコマンドにおいては、[N]はカウント - -注: ":next" は例外である。なぜならこのコマンドは Vi との互換性のためにファイル -名リストを受け付けなければならないからである。 - - -引数リストと複数のウィンドウ ----------------------------- - -引数リストのカレント位置は各ウィンドウ毎に異なっている可能性がある。 ":e file" -コマンドを実行した際には引数リストないのカレント位置は変化しないが、カレント位 -置のファイルを編集していないことを忘れないでほしい。この状態を示すために、ファ -イルメッセージに(もしあるならタイトルにも)「(file (N) of M)」と表示する。ここ -で、"(N)"はファイルリスト中のカレント位置を、"M"はファイルリスト中のファイルの -数を表している。 - -引数リストの総てはバッファリストに追加される。だから、":bnext"のようなバッファ -リストコマンドで引数リストを表示することができる。 - -:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall* -:[N]sal[l][!] [N] - 各引数に対して1つのウィンドウを開き、スクリーンを再構成する。 - 他の総てのウィンドウは閉じられる。カウントが指定された時は、開 - くウィンドウの最大数となる。 - コマンド修飾子|:tab|をつけて実行すると、各引数に対して1つずつ - タブページを開く。'tabpagemax'個より多くの引数が与えられたとき - は、多すぎる引数は最後のタブページの中でウィンドウに分割されて - 開かれる。 - 'hidden' オプションがセットされている場合は、閉じられるウィン - ドウで表示されている総てのバッファは隠れ状態(hidden)となる。 - 'hidden' オプションがセットされておらず 'autowrite' オプション - がセットされている場合は、編集中のバッファは保存される。さもな - ければ、編集中のバッファを表示しているウィンドウは閉じられな - い。ただし[!]が与えられていれば、それらのバッファは隠れ状態 - (hidden)となる。しかし、編集中のバッファは決して削除されないの - で、変更は失われない。 - [N] は開かれるウィンドウの数の最大値。'winheight'(|:vertical| - が前に与えられている場合は'winwidth')もまた開かれるウィンドウ - の数を制限する。 - この時点では Buf/Win Enter/Leave オートコマンドは新しいウィン - ドウに対して実行されない。実際にそのウィンドウに移ったときに実 - 行される。 - -:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument* - ":split | argument [N]" の短縮形: ウィンドウを分割し、N番目の - 引数へ移動する。しかし、N番目の引数がなければ、ウィンドウは分 - 割しない。|++opt| と |+cmd| も参照。 - -:[N]sn[ext][!] [file ..] *:sn* *:snext* - ":split | [N]next" の短縮形: ウィンドウを分割し、N個先の引数へ - 移動する。しかし、N個先の引数がなければ、ウィンドウは分割しな - い。|++opt| と |+cmd| も参照。 - -:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious* -:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext* - ":split | [N]Next" の短縮形: ウィンドウを分割し、N個前の引数へ - 移動する。しかし、N個前の引数がなければ、ウィンドウは分割しな - い。|++opt| と |+cmd| も参照。 - - *:sre* *:srewind* -:sre[wind][!] [++opt] [+cmd] - ":split | rewind" の短縮形: ウィンドウを分割し、最初の引数へ移 - 動する。しかし、引数がなければ、ウィンドウは分割しない。 - |++opt| と |+cmd| も参照。 - - *:sfir* *:sfirst* -:sfir[st] [++opt] [+cmd] - ":srewind" と同じ。 - - *:sla* *:slast* -:sla[st][!] [++opt] [+cmd] - ":split | last" の短縮形: ウィンドウを分割し、最後の引数へ移動 - する。しかし、引数がなければ、ウィンドウは分割しない。 - |++opt| と |+cmd| も参照。 - - *:dr* *:drop* -:dr[op] [++opt] [+cmd] {file} .. - 最初の {file} を編集する。 - - そのファイルがすでにあるウィンドウで開かれていたら、そのウィ - ンドウに移動する。 - - そのファイルがウィンドウで開かれていなければ、カレントウィン - ドウで開く。カレントバッファが破棄されえない(|abandon|)ならば - まずウィンドウが分割される。 - |:next| コマンドと同様に、|argument-list| がセットされる。 - このコマンドの目的は、Vimに別のファイルを開いてほしいプログラ - ム(例:デバッガ)から使われることである。 - コマンド修飾子|:tab|をつけて実行すると、各引数が1つずつタブ - ページで開かれる。最後のウィンドウが空ならそのウィンドウが使わ - れる。 - |++opt| と |+cmd| も参照。 - {GUI 機能つきでコンパイルされたときのみ使用可能} - -============================================================================== -8. 全てのバッファ/ウィンドウに対してコマンド実行 *list-repeat* - *:windo* -:windo[!] {cmd} 各ウィンドウに対して {cmd} を実行する。 - これは次のようにするのと同じ動作をする: > - CTRL-W t - :{cmd} - CTRL-W w - :{cmd} - etc. -< カレントタブページ内でのみ実行される。 - 1つのウィンドウに対してエラーが検出されると、それ以降 - のウィンドウに対しては実行されない。 - 最後のウィンドウ(またはエラーが起こったウィンドウ)が - カレントウィンドウになる。 - {cmd} は '|' を含んで複数のコマンドを連結していてもよ - い。 - {cmd} はウィンドウの開閉、並べ替えをしてはならない。 - {Vi にはない} {|+listcmds| 機能なしでコンパイルされた場 - 合は使用できない} - |:tabdo|, |:argdo|, |:bufdo| も参照。 - - *:bufdo* -:bufdo[!] {cmd} {cmd} をバッファリスト内の各バッファに対して実行。 - これは次のようにするのと同じ動作をする: > - :bfirst - :{cmd} - :bnext - :{cmd} - etc. -< カレントファイルが破棄されえなく(|abandon|)かつ [!]が - 与えられない場合、このコマンドは失敗する。 - 1つのバッファに対してエラーが検出されると、それ以降 - のバッファに対しては実行されない。 - リストされていないバッファはスキップされる。 - 最後のバッファ(またはエラーが起こったバッファ)がカレ - ントウィンドウになる。 - {cmd} は '|' を含んで複数のコマンドを連結していてもよ - い。 - {cmd} はバッファリストにバッファを削除、追加してはなら - ない。 - 注意:このコマンドを実行している間、Syntax 自動コマンド - イベントが 'eventignore' に追加され、無効化される。 - これは各バッファの編集を大幅にスピードアップさせる。 - {Vi にはない} {|+listcmds| 機能なしでコンパイルされた - 場合は使用できない} - |:tabdo|, |:argdo|, |:bufdo| も参照。 - -例: > - - :windo set nolist nofoldcolumn | normal zn - -これは 'list' オプションをリセットし全てのウィンドウの折り畳みを無効化する。 - > - :bufdo set fileencoding= | update - -これは各バッファの 'fileencoding' をリセットし、バッファに変更があったらそれを -保存する。結果として、すべてのバッファが同じ 'encoding' のエンコーディングを使 -用する(変換がうまくいったとすれば)。 - -============================================================================== -9. カーソル位置のタグ名/ファイル名 *window-tag* - - *:sta* *:stag* -:sta[g][!] [tagname] - ":tag[!] [tagname]" を実行し見つかったタグの表示のためにウィン - ドウを分割する。 |:tag| を参照。 - -CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* -CTRL-W CTRL-] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ - として使用し、新しくできた上側のウィンドウでタグに移動する。新 - しいウィンドウの高さはNとなる。 - - *CTRL-W_g]* -CTRL-W g ] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ - として使用し、新しくできた上側のウィンドウで ":tselect" を実行 - する。新しいウィンドウの高さはNとなる。 - - *CTRL-W_g_CTRL-]* -CTRL-W g CTRL-] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ - として使用し、新しくできた上側のウィンドウで ":tjump" を実行す - る。新しいウィンドウの高さはNとなる。 - -CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* -CTRL-W CTRL-F カレントウィンドウを2つに分割する。カーソル位置のファイル名を - 編集する。":split ]f" と同様だが、ファイルが存在しなければウィ - ンドウを分割しない。 - ファイルを探すディレクトリのリストとして変数 'path' が使われ - る。また、カレントファイルのパスも探される。 - その名前が "type://machine/path" のようにハイパーテキストリン - クならば "/path" のみが使われる。 - count が与えられた場合、count 番目にマッチしたファイルが編集さ - れる。 - {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で - きない} - -CTRL-W F *CTRL-W_F* - カレントウィンドウを2つに分割する。カーソル下のファイル名を開 - き、そのファイル名の後に書かれている行番号へジャンプする。ど - のように行番号を取得するかについては|gF|を参照。 - {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で - きない} - -CTRL-W gf *CTRL-W_gf* - 新しいタブページを開き、カーソル下のファイル名を開く。 - "tab split"と"gf"の組み合わせに似ているが、そのファイルが存在 - しない場合に新しいタブページを作成しないところが異なる。 - {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で - きない} - -CTRL-W gF *CTRL-W_gF* - 新しいタブページを開き、カーソル下のファイル名を開いて、ファイ - ル名の後に書かれている行番号へジャンプする。 - "tab split"と"gF"の組み合わせに似ているが、そのファイルが存在 - しない場合に新しいタブページを作成しないところが異なる。 - {コンパイル時に |+file_in_path| 機能が無効にされた場合は使用で - きない} - -|CTRL-W_CTRL-I| も参照:カーソル位置のキーワードを含むインクルードファイルを新 -しいウィンドウで開く。 - -============================================================================== -10. プレビューウィンドウ *preview-window* - -プレビューウィンドウは別のファイルをプレビューする特別なウィンドウである。通常 -はインクルードファイルや関数の定義を示すのに使われる小さなウィンドウである。 -{コンパイル時に |+quickfix| 機能が無効にされた場合は使用できない} - -プレビューウィンドウはタブページにつき1つだけ開くことができる。プレビューウィ -ンドウは以下のコマンドのどれかが実行されたとき作成される。オプション -'previewheight'によってプレビューウィンドウが開くときの高さを設定できる。プレ -ビューウィンドウを識別するために、プレビューウィンドウにはオプション -'previewwindow'がセットされる。他のウィンドウを開閉したときにも同じ高さを保つ -ためにオプション'winfixheight'がセットされる。 - - *:pta* *:ptag* -:pta[g][!] [tagname] - ":tag[!] [tagname]" を実行し、現在のバッファまたはカーソル位置 - を変えずに「プレビュー」ウィンドウないで検索したタグを表示す - る。「プレビュー」ウィンドウがすでに存在していた場合は、(ヘル - プウィンドウのように)そのウィンドウに表示する。新しいウィンド - ウが開いたときは、'previewheight' の設定がそのウィンドウの高さ - になる。|:tag| も参照のこと。 - 例は下を参照。|CursorHold-example| - |:tag|とは小さな違いがある:[tagname] がすでに表示されているタ - グと同じ場合、マッチしたタグリスト内の位置はリセットされない。 - このおかげで |:ptnext| の後でも CursorHold の例がうまくいくよ - うになっている。 - -CTRL-W z *CTRL-W_z* -CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* -:pc[lose][!] 現在開いている「プレビュー」ウィンドウを閉じる。 'hidden' オプ - ションがセットされている時、または、バッファが編集中で[!]が使 - われた時、(そのバッファを編集している他のウィンドウがなければ) - そのバッファは隠れ状態(hidden)となる。いずれかの「プレビュー」 - バッファを閉じることができない場合、このコマンドは失敗する。 - |:close| も参照のこと。 - - *:pp* *:ppop* -:[count]pp[op][!] - プレビューウィンドウで ":[count]pop[!]" を実行する。 |:pop| と - |:ptag| を参照。 {Vi にはない機能} - -CTRL-W } *CTRL-W_}* - カーソル位置の識別子をタグとして使用し、:ptag を実行する。 (必 - 要なら)高さNの新しいプレビューウィンドウを作成する。 Nが与えら - れなければ、'previewheight' が使われる。 - -CTRL-W g } *CTRL-W_g}* - カーソル位置の識別子をタグとして使用し、:ptjump を実行する。 - (必要なら)高さNの新しいプレビューウィンドウを作成する。 Nが与 - えられなければ、'previewheight' が使われる。 - - *:ped* *:pedit* -:ped[it][!] [++opt] [+cmd] {file} - {file} をプレビューウィンドウで編集する。プレビューウィンドウは - |:ptag| と同じように開かれる。カレントウィンドウとカーソル位置 - は変わらない。便利な例: > - :pedit +/fputc /usr/include/stdio.h -< - *:ps* *:psearch* -:[range]ps[earch][!] [count] [/]pattern[/] - |:ijump| と同様だが、見つかったマッチをプレビューウィンドウで - 開く。プレビューウィンドウは |:ptag| と同じように開かれる。カ - レントウィンドウとカーソル位置は変わらない。便利な例: > - :psearch popen -< |:ptag| コマンドと同じように、これを使ってカーソル位置の単語に - 関する情報を自動的に表示させることが出来る。これは |:ptag| コ - マンドを使うほど賢くないが、tags ファイルが必要なく、システム - インクルードファイル内のマッチを見つけることも出来る。例: > - :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>") -< 注意:遅いかもしれない。 - - -例 *CursorHold-example* - - :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>") - -この例では、'updatetime' に設定された時間の間カーソルが動かなければ、カーソル -下のキーワードで ":ptag" が実行される。"nested" は他のオートコマンドを実行する -ので、シンタックスハイライトはプレビューウィンドウ内で動作する。"silent!" は -タグが見つからなかったときのエラーメッセージを抑止する。|CursorHold|も参照。 -この自動コマンドを再び無効化するには: > - - :au! CursorHold - -見つかったタグをハイライトさせる、カーソル位置に単語がないときに":ptag"を実行 -しない、などの改良をしたものが以下の通り: > - - :au! CursorHold *.[ch] nested call PreviewWord() - :func PreviewWord() - : if &previewwindow " プレビューウィンドウ内では実行しない - : return - : endif - : let w = expand("<cword>") " カーソル下の単語を得る - : if w =~ '\a' " その単語が文字を含んでいるなら - : - : " 別のタグを表示させる前にすでに存在するハイライトを消去する - : silent! wincmd P " プレビューウィンドウにジャンプ - : if &previewwindow " すでにそこにいるなら - : match none " 存在するハイライトを消去する - : wincmd p " もとのウィンドウに戻る - : endif - : - : " カーソル下の単語にマッチするタグを表示してみる - : try - : exe "ptag " . w - : catch - : return - : endtry - : - : silent! wincmd P " プレビューウィンドウにジャンプ - : if &previewwindow " すでにそこにいるなら - : if has("folding") - : silent! .foldopen " 閉じた折り畳みを開く - : endif - : call search("$", "b") " 前の行の最後へ - : let w = substitute(w, '\\', '\\\\', "") - : call search('\<\V' . w . '\>') " カーソルをマッチしたところへ - : " ここで単語にハイライトをつける - : hi previewWord term=bold ctermbg=green guibg=green - : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"' - : wincmd p " もとのウィンドウへ戻る - : endif - : endif - :endfun - -============================================================================== -11. 隠れ(hidden)バッファを使う *buffer-hidden* - -隠れ(hidden)バッファはウィンドウに表示されないが、メモリ上にはすでにロードされ -ている。これにより、毎回ファイルを保存したり読み込んだりしなくても、また、ウィ -ンドウ内にファイルを残しておかなくても、他のバッファをウィンドウに表示すること -が可能となる。 -{|+listcmds| 機能なしでコンパイルされた場合には使用できない} - - *:buffer-!* -'hidden' ('hi') オプションがセットされている場合は、":edit", ":next", ":tag" -等の他のファイルの編集をスタートさせる総てのコマンドに関して、いらないバッファ -は捨てられない。バッファリストで移動コマンドを実行すると、'hidden' オプション -がセットされていないにもかかわらず、バッファが隠れ状態(hidden)になることがあ -る。これはバッファが編集中で、ウィンドウが強制的に削除され('!' を使用)、 -'autowrite' がセットされていないかバッファを保存できなかったときに起こる。 - -隠れ状態の(hidden)バッファはそのバッファの編集を開始するコマンドで隠れ状態 -(hidden)ではなくなる。 ":bdelete" コマンドでバッファを削除しても隠れ状態 -(hidden)ではなくなる。 - -オプション 'hidden' はグローバルである、全てのバッファに適用される。オプション -'bufhidden' は特定のバッファを例外にするために使える。'bufhidden' はこれらの値 -をとりうる: - <empty> 'hidden' の値を使う。 - hide 'hidden' が設定されてなくてもこのバッファを隠れ状態に - する。 - unload 'hidden' が設定されているときでも隠れ状態にせず、この - バッファをアンロードする。 - delete バッファを削除する。 - - *hidden-quit* -編集中で隠れ状態(hidden)のバッファがあるときに Vim を終了しようとすると、エ -ラーが表示されてその編集中のバッファがカレントバッファになる。そして、バッファ -を保存するか(":wq")、保存しないで終了するか(":q!")を指定することができる。 -注意: 他にも編集中の隠れバッファ(hidden)や編集中のバッファがあるかも。 - -バッファはリストから除かれることもある。これは、存在しているがバッファのリスト内 -にはないことを意味する。|unlisted-buffer| - -:files[!] *:files* -:buffers[!] *:buffers* *:ls* -:ls[!] 全バッファを表示。例: - - 1 #h "/test/text" line 1 ~ - 2u "asdf" line 0 ~ - 3 %a+ "version.c" line 1 ~ - - [!] が含まれているときは、バッファリストにないバッファも表示さ - れる。 - - 各バッファは一意の番号が割り当てられている。この番号は変わらな - いので、 ":buffer N" や "N CTRL-^" を使ってある特定のバッファ - へ移動できる。Nはバッファの番号である。 - - 指標(同じ桁にある文字は互いに排他的): - u リストされていないバッファ([!] が使われたときのみ表示 - される)|unlisted-buffer| - % カレントウィンドウにあるバッファ - # ":e #" や CTRL_^ で使われる代替バッファ - a アクティブバッファ:ロードされていて、表示されている - h 隠れバッファ:ロードされているが、現在はウィンドウに表 - 示されていない |hidden-buffer| - - 'modifiable' がオフのバッファ - = リードオンリーのバッファ - + 変更のあるバッファ - x 読み込みエラーのあるバッファ - - *:bad* *:badd* -:bad[d] [+lnum] {fname} - ファイル名 {fname} をバッファリストに追加する。ただし、メモリ - 上には読み込まれない。 "lnum" が指定された場合、バッファに初め - て移動したときにカーソルが指定された行番号にジャンプする。 + - 以降の他のコマンドは無視されることに注意。 - -:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* -:bd[elete][!] [N] - バッファ[N](デフォルト: カレントバッファ)をメモリから取り除 - き、バッファリストから削除する。バッファが編集中の場合はこのコ - マンドは失敗する([!] が与えられた場合は成功する。そのとき変更 - は破棄される)。ファイルには影響はない。このバッファを表示し - ている総てのウィンドウは閉じられる。バッファ[N]がカレントバッ - ファの場合は、他のバッファが代わりに表示される。このバッファに - は、ジャンプリストの中のメモリ上にロードされているバッファを指 - し示している最も最近のエントリが使用される。 - 実際は、バッファは完全に削除されていない。バッファリストから削 - 除され |unlisted-buffer|、バッファに対するオプションの値、変数、 - マッピング・略語が消去される。 - -:bdelete[!] {bufname} *E93* *E94* - ":bdelete[!] [N]" と同様だが、バッファを名前で指定する。数字が - 名前になっているバッファは、その数字では参照されない。つまり、 - バッファ番号として使用されてしまう。バッファ名中のスペースの前 - にはバックスラッシュを入れる必要がある。 - -:bdelete[!] N1 N2 ... - ":bdelete[!]" をバッファN1、N2、等に対して実行する。引数には - バッファ番号かバッファ名(ただし数字のバッファ名は使用不可)を使 - 用できる。バッファ名中のスペースの前にはバックスラッシュを入れ - る必要がある。 - -:N,Mbdelete[!] ":bdelete[!]" を N から M まで(N,Mを含む)の総てのバッファに対 - して実行する。 - -:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517* -:bw[ipeout][!] {bufname} -:N,Mbw[ipeout][!] -:bw[ipeout][!] N1 N2 ... - |:bdelete| に似ているが、本当にバッファを削除する。このバッ - ファに関するすべてが失われる。例えば、このバッファ中のすべての - マークが無効になり、オプション設定が失われるなど。このことの意 - 味がわからなければ使わないこと。 - -:[N]bun[load][!] *:bun* *:bunload* *E515* -:bun[load][!] [N] - バッファ[N] (デフォルト:カレントバッファ)をメモリから取り除 - く。このバッファに割り当てられたメモリ領域を解放する。バッファ - はバッファリストには残る。バッファが編集中の場合は、このコマン - ドは失敗する([!] が与えられた場合は成功する。そのとき変更は破 - 棄される)。このバッファを表示しているどのウィンドウも閉じられ - る。バッファ[N]がカレントバッファの場合、他のバッファが代わり - に表示される。このバッファには、ジャンプリストの中のメモリ上に - ロードされているバッファを指し示している最も最近のエントリが使 - 用される。 - -:bunload[!] {bufname} - ":bunload[!] [N]" と同様だが、バッファを名前で指定する。数字が - 名前になっているバッファは、その数字では参照されない。つまり、 - バッファ番号として使用されてしまう。バッファ名中のスペースの前 - にはバックスラッシュを入れる必要がある。 - -:N,Mbunload[!] ":bunload[!]" を N から M まで(N,Mを含む)の総てのバッファに対 - して実行する。 - -:bunload[!] N1 N2 ... - ":bunload[!]" をバッファN1、N2、等に対して実行する。引数には - バッファ番号かバッファ名(ただし数字のバッファ名は使用不可)を使 - 用できる。バッファ名中のスペースの前にはバックスラッシュを入れ - る必要がある。 - -:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86* - バッファリストのバッファ[N]を編集する。 [N]が与えられなけれ - ば、そのままカレントバッファが編集される。 [!]については - |:buffer-!| を参照。これはバッファリストにないバッファも - 'buflisted' フラグを設定することなく編集する。 - -:[N]b[uffer][!] {bufname} - バッファリストの {bufname} のバッファを編集する。 [!]について - は |:buffer-!| を参照。これはバッファリストにないバッファも - 'buflisted' フラグを設定することなく編集する。 - - -:[N]sb[uffer] [N] *:sb* *:sbuffer* - ウィンドウを分割しバッファリストのバッファ[N]を編集する。 [N] - が与えられなければ、そのままカレントバッファが編集される。ウィ - ンドウ分割の際には、'switchbuf' の "useopen" の設定に従う。 - これはバッファリストにないバッファも'buflisted' フラグを設定す - ることなく編集する。 - Note: 別名でカレントバッファのコピーを作って、それを別のウィン - ドウで表示したいのなら、次のようにすること: > - :w foobar | sp # - -:[N]sb[uffer] {bufname} - ウィンドウを分割しバッファリストの {bufname} バッファを編集す - る。これはバッファリストにないバッファも'buflisted' フラグを設 - 定することなく編集する。 - - - *:bn* *:bnext* -:[N]bn[ext][!] [N] - バッファリスト中の[N]個先のバッファへ移動する。 [N] のデフォル - ト値は1である。バッファリストの最後に到達したら、先頭に戻って - バッファを探す。 [!]については |:buffer-!| を参照。 - ヘルプバッファにいる場合、(もし有れば)次のヘルプバッファへ移動 - する。同様に、通常の(ヘルプではない)バッファにいる場合、次の通 - 常のバッファへ移動する。従って、ヘルプウィンドウを表示していて - も、コード/テキストバッファを次々と表示する際にヘルプが邪魔に - ならない。次の3つのコマンドも同じように動作する。 - - *:sbn* *:sbnext* -:[N]sbn[ext] [N] - ウィンドウを分割しバッファリストの[N]個先のバッファへ移動す - る。バッファリストの最後に到達したら、先頭に戻ってバッファを探 - す。ウィンドウ分割の際には、'switchbuf' の "useopen" 設定に従 - う。 - -:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* -:[N]bp[revious][!] [N] - バッファリスト中の[N]個前のバッファへ移動する。 [N] のデフォル - ト値は1である。バッファリストの先頭に到達したら、最後に戻って - バッファを探す。 [!]については |:buffer-!| を参照。'switchbuf' - も参照。 - -:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* -:[N]sbp[revious] [N] - ウィンドウを分割しバッファリストの[N]個前のバッファへ移動す - る。バッファリストの先頭に到達したら、最後に戻ってバッファを探 - す。ウィンドウ分割の際には、'switchbuf' の "useopen" 設定に従 - う。 - - *:br* *:brewind* -:br[ewind][!] バッファリスト中の先頭のバッファへ移動する。 [!]については - |:buffer-!| を参照。 - - *:bf* *:bfirst* -:bf[irst] ":brewind" と同じ。 - - *:sbr* *:sbrewind* -:sbr[ewind] ウィンドウを分割してバッファリスト中の先頭のバッファへ移動す - る。バッファリストが空の場合はリストされていない最初のバッファ - へ移動する。'switchbuf' オプションの設定に従う。 - - *:sbf* *:sbfirst* -:sbf[irst] ":sbrewind" と同じ。 - - *:bl* *:blast* -:bl[ast][!] バッファリスト中の最後のバッファへ移動する。 バッファリストが - 空の場合はリストされていない最初のバッファへ移動する。'[!]につ - いては|:buffer-!| を参照。 - - *:sbl* *:sblast* -:sbl[ast] ウィンドウを分割してバッファリスト中の最後のバッファへ移動す - る。バッファリストが空の場合はリストされていない最初のバッファ - へ移動する。'switchbuf' オプションの設定に従う。 - -:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84* - バッファリスト中の[N]個先の編集中のバッファへ移動する。 - 注意:このコマンドはリストされていないバッファも見つける。変更 - されているバッファがない場合はコマンドは失敗する。 - -:[N]sbm[odified] [N] *:sbm* *:sbmodified* - ウィンドウを分割し、バッファリスト中の[N]個先の編集中のバッ - ファへ移動する。'switchbuf' オプションの設定に従う。 - 注意:このコマンドはリストされていないバッファも見つける。 - -:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide* -:[N]sun[hide] [N] - バッファリスト中のメモリ上にロードされた各バッファに対して1つ - のウィンドウが開かれているようにスクリーンを再構成する。カウン - トが与えられたら、開くウィンドウの最大数となる。 - -:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball* -:[N]sba[ll] [N] バッファリスト中のメモリ上にロードされた各バッファに対して1つ - のウィンドウが開かれているようにスクリーンを再構成する。カウン - トが与えられたら、開くウィンドウの最大数となる。'winheight' も - 開くウィンドウの数を制限する(|:vertical| が前に与えられている - ときは'winwidth')。この時点では、Buf/Win Enter/Leave オートコ - マンドは新しいウィンドウに対して実行されない。ウィンドウに移動 - したときにのみ実行される。 - コマンド修飾子|:tab|をつけて実行すると、新しいウィンドウがそれ - ぞれ新しいタブで開く。ただしタブの個数は'tabpagemax'に制限され - る。 - -注: 上の総てのコマンドは他のバッファの編集を開始する。各バッファの 'readonly' -フラグは保存されている。 ":edit" コマンドと異なる点は、":edit" コマンドでは -ファイルが読まれた時点で 'readonly' フラグが設定される点である。 - -============================================================================== -12. 特殊なバッファ *special-buffers* - -バッファがファイルのテキストを保持するのでなく、他の目的のために使われることも -ある。バッファの振る舞いを変更するためにいくつかのオプションを設定することが出 -来る: - 'bufhidden' バッファがウィンドウに表示されなくなったときどうするか - 'buftype' どんな種類のバッファか - 'swapfile' バッファがスワップファイルを持つか - 'buflisted' バッファリストに現れるか - -いくつかの有用なバッファの種類: - -quickfix エラーリストやロケーションリストを保持するのに使われる。 - |:cwindow| と |:lwindow| を参照。このコマンドは 'buftype' オプ - ションを "quickfix" にセット。これを変更してはならない。 - 'swapfile' はオフ。 - -help ヘルプファイルを保持する。|:help| コマンドによってのみ作成され - る。ヘルプバッファを示すフラグは内部にあり、変更することは出来 - ない。ヘルプバッファに対する 'buflisted' オプションはリセット - される。 - -directory ディレクトリの内容を表示する。ファイルエクスプローラプラグイン - で使用されている。このバッファは以下の設定で作成される: > - :setlocal buftype=nowrite - :setlocal bufhidden=delete - :setlocal noswapfile -< バッファ名はディレクトリの名前になり、|:cd| コマンドを使ったと - きは変更される。 - -scratch いつでも破棄されうるテキストを保持する。ウィンドウを閉じても - 保たれ、明示的に削除されなければならない。 - 設定は: > - :setlocal buftype=nofile - :setlocal bufhidden=hide - :setlocal noswapfile -< このバッファを識別するためにはバッファ名が使われる。ただし、そ - のためにはそのバッファに意味のある名前がついていなければならな - い。 - - *unlisted-buffer* -unlisted このバッファはバッファリストにない。通常の編集には使われず、 - ヘルプファイルを表示するためや、ファイル名やマークを記憶するた - めに使われる。":bdelete" コマンドによってもこのオプションが - セットされる。それゆえ、このコマンドは完全にはバッファを削除し - ない。設定は: > - :setlocal nobuflisted -< - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/workshop.jax b/runtime.old/doc/workshop.jax deleted file mode 100644 index f2533db64..000000000 --- a/runtime.old/doc/workshop.jax +++ /dev/null @@ -1,99 +0,0 @@ -*workshop.txt* For Vim バージョン 7.3. Last change: 2010 Jul 20 - - - VIM リファレンスマニュアル by Gordon Prieur - - -Sun Visual WorkShop との連携機能 *workshop* *workshop-support* - -1. 機能紹介 |workshop-intro| -2. コマンド |workshop-commands| -3. WorkShop用vim/gvimのコンパイル |workshop-compiling| -4. Configuring gvim for a WorkShop release tree |workshop-configure| -5. 最新のXPMライブラリの取得方法 |workshop-xpm| - -{Vi にはこれらの機能はない} -{|+sun_workshop|機能を付けてコンパイルしたときのみ利用可能} - -============================================================================== -1. 機能紹介 *workshop-intro* - -Sun Visual WorkShopではデバッグに使用するエディタを"Editor of Choice" (訳注:エ -ディタの選択)によってユーザの好みのものに変更できる。バージョン6.0のリリースに -あたりgvimはこれに対応した。WorkShopのデバッグセッションにはデバッグウィンドウ -とエディタウィンドウが表示される(同じように他のウィンドウが表示される可能性も -ある)。ウィンドウを切換える必要は最低限で良く、ユーザはエディタウィンドウから -多くのデバッグ操作を行なうことができる。 - -Sun Visual WorkShop 6 (Forte Developer6とも呼ばれる)に付属するVimのバージョン -は5.3である。このリリース(訳注:Vim 6)の機能はVisual WorkShopに付属するvim/gvim -よりもかなり頼りになる。vimをエディタとして選択しているVWS(訳注:Visual -WorkShopの略)のユーザは、(訳注: Vim 6の)ソースをコンパイルしWorkShopのリリース -ツリーへインストールするべきだ。 - -============================================================================== -2. コマンド *workshop-commands* - - *:ws* *:wsverb* -:ws[verb] {verb} {verb}を命令実行エンジンに渡す - -WorkShop関数に{verb}を渡し、関数は幾つかの引数を集めて{verb}とデータをIPC接続 -を通じてWorkShopへ送る。 - -============================================================================== -3. WorkShop用vim/gvimのコンパイル *workshop-compiling* - -コンパイル時にFEAT_SUN_WORKSHOPを指定すると、Visual WorkShopに対応したVimを構 -築するのに必要なコンパイルフラグが全て有効化される。VWSのリリースに含まれるSun -のコンパイラを使って、VWSに必要な機能が構築されテストされる。GNUのコンパイラを -使っている場合は構築もテストもされない。これはgccでは決して構築し実行すること -ができないのではなく、単に保証ができないという意味である。 - -============================================================================== -4. Configuring gvim for a WorkShop release tree *workshop-configure* - -VimをSun Visual WorkShop 6と供に使えるようにするためには、幾つかの仮定をしなけ -ればならない。 - - o gccではなくVWSに付属のコンパイラを使わなければならない。gccでは構築もテ - ストもしていないので正しく構築できるかは保証できない。 - - o XPMライブラリを自分で用意しなければならない。最新のXPMの入手方法の詳細は - 下記の|workshop-xpm|を参照すること。 - - o ディレクトリsrc/の中のMakefileを編集し、Sun Visual WorkShopのための何行 - かのコメントを解除する。文字列FEAT_SUN_WORKSHOPを検索すれば簡単に見つけ - ることができる。 - - o GUIにはMotifを使用することを提案する。そうすればgvimの外見と感触がSun - Visual WorkShopの他の部分と同じようなものになる。 - -下のコマンドはSun Visual WorkShopに対応したvimを構築するよう構成したい時に使用 -できる: > - - $ CC=cc configure --enable-workshop --enable-gui=motif \ - -prefix=<VWS-install-dir>/contrib/contrib6/<vim-version> -< -<VWS-install-dir>にはSun Visual WorkShopをインストールしたベースディレクトリを -指定する。デフォルトでは/opt/SUNWsproである。通常Vimをインストールするには管理 -者権限が必要になる。<VWS-install-dir>/bin/gvimが新しくインストールしたgvimを指 -すようにsymlinkを変更する必要もある。<vim-version>にはバージョンを示す文字列を -指定する。著者は"vim"にversion.hの中のVIM_VERSION_SHORTと同じ物を付加して使っ -ている。 - -============================================================================== -5. 最新のXPMライブラリの取得方法 *workshop-xpm* - -XPMライブラリはVimで(MotifかAthenaを使って)画像を表示するために必要とされる。 -それ無しではツールバーと目印が利用できなくなる。 - -XPMライブラリは French National Institute for Research in Computer Science and -Control(訳注:フランス国立コンピュータ科学/制御研究所---通称INRIA) の Arnaud Le -Hors によって提供されている。http://cgit.freedesktop.org/xorg/lib/libXpm より -ダウンロードできる。これを書いている時点での最新版はxpm-3.4k-solaris.tgzでgzip -されたtarファイルである。ディレクトリ /usr/local/xpmを作成してそこにファイルを -伸長展開したならば、Makefile内のコメントアウトされた行を内容は変更せずにコメン -トを解除するだけで使うことができる。もしもxpmを他のディレクトリに置いたならば -src/Makefile内のXPM_DIRを変更する必要がある。 - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime.old/doc/xxd-ja.UTF-8.1 b/runtime.old/doc/xxd-ja.UTF-8.1 deleted file mode 100644 index c1d8e25cf..000000000 --- a/runtime.old/doc/xxd-ja.UTF-8.1 +++ /dev/null @@ -1,366 +0,0 @@ -.TH XXD 1 "August 1996" "Manual page for xxd" -.\" -.\" 21st May 1996 -.\" Man page author: -.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> -.\" Changes by Bram Moolenaar <Bram@vim.org> -.SH 名前 -.I xxd -\- 16 進ダンプを作成したり、元に戻したり。 -.SH 書式 -.B xxd -\-h[elp] -.br -.B xxd -[options] [infile [outfile]] -.br -.B xxd -\-r[evert] [options] [infile [outfile]] -.SH 説明 -ファイルや標準入力から 16 進ダンプを作成します。 -16 進ダンプから元のバイナリに戻すこともできます。 -.BR uuencode (1) -や -.BR uudecode (1) -のように、バイナリデータを、メールに張り付け可能な ASCII 形式に変換できた -り、標準出力に出力することもできます。 -さらに、バイナリファイルにパッチを当てるという使い方もできます。 -.SH オプション -.I infile -を指定しなかった場合は、標準入力が読み込まれます。 -.I infile -に -.RB \` \- ' -を指定した場合も、標準入力から読み込まれます。 -.I outfile -を指定しなかった (または -.RB \` \- ' -を指定した) 場合は、標準出力に出力されます。 -.PP -引数の解釈処理は適当なので注意してください。パラメータを取らない引数は -最初の一文字だけチェックされます。 -引数の文字とパラメータの間のスペースは省略可能です。 -パラメータは 10 進数、16 進数、8 進数で指定できます。 -.BR \-c8 -、 -.BR "\-c 8" -、 -.B \-c 010 -、 -.B \-cols 8 -はすべて同じ意味です。 -.PP -.TP -.IR \-a " | " \-autoskip -オートスキップ: 連続した nul 行を一つの '*' で置き換える。 -.TP -.IR \-b " | " \-bits -ビット (2進数) ダンプ。 -1 オクテットが "1" と "0" の 8 文字で出力されます。 -各行の行頭には 16 進数の行番号が表示されます。 -行末には ascii (または ebcdic) で表した場合の文字が表示されます。 -このモードでは \-r、\-p、\-i は機能しません。 -.TP -.IR "\-c cols " | " \-cols cols" -一行 -.RI < cols > -オクテットで出力する。標準設定は 16 (\-i: 12, \-ps: 30, \-b: 6)。最大 256。 -.TP -.IR \-E " | " \-EBCDIC -右端に出力される文字のエンコーディングを ASCII から EBCDIC に変更する。 -16 進ダンプの出力形式は変更されません。 -\-r、\-p、\-i が同時に指定された場合は何の効果もありません。 -.TP -.IR "\-g bytes " | " \-groupsize bytes" -出力を -.RI < bytes > -バイト (2 文字の 16 進数、または 8 文字の 2 進数) ごとにスペースで区切りま -す。 -区切らずに出力するには -.I \-g 0 -を指定してください。 -.RI < Bytes > -の標準設定は \fI2\fP です。2 進ダンプの場合は \fI1\fP です。 -ポストスクリプト形式やインクルード形式で出力するときは、このオプションは使わ -れません。 -.TP -.IR \-h " | " \-help -コマンドの説明を出力して終了する。変換は実行されません。 -.TP -.IR \-i " | " \-include -C インクルードファイル形式で出力します。入力ファイルの名前が付けられた静的配 -列の定義が出力されます。標準入力の場合は定義の中身だけ出力されます。 -.TP -.IR "\-l len " | " \-len len" -.RI < len > -オクテットだけ出力する。 -.TP -.IR \-p " | " \-ps " | " \-postscript " | " \-plain -ポストスクリプト形式の 16 進ダンプを出力する。別名 プレーン 16 進ダンプ。 -.TP -.IR \-r " | " \-revert -元に戻す: 16 進ダンプからバイナリ形式に変換 (またはパッチ) します。 -ファイルへ出力する場合、出力先のファイルは切り詰めされません。 -行番号や特定の書式がないプレーン 16 進ダンプを読み込む場合は、 -.I \-r \-p -を指定してください。空白と改行は無視されます。 -.TP -.I \-seek offset -.IR \-r -の後で使われた場合: 16 進ダンプを出力するファイルの位置に -.RI < offset > -を加える。 -.TP -.I \-s [+][\-]seek -infile の -.RI < seek > -バイト目 (絶対位置、または相対位置) から開始する。 -\fI+ \fRは、現在の標準入力の位置から相対的な位置を示します -(標準入力から読み込むときのみ意味があります)。\fI\- \fRは、入力の終わりから -の文字数を示します (\fI+\fR と同時に指定した場合は、現在の標準入力の位置から -手前の位置を示します)。 -\-s 引数を指定しなかった場合は、現在のファイル位置から開始されます。 -.TP -.I \-u -16 進数の表記に大文字を使います。指定がない場合は小文字で出力されます。 -.TP -.IR \-v " | " \-version -バージョンを表示します。 -.SH 警告 -.PP -.I xxd \-r -では行番号の評価に関しての暗黙のルールがいくつかあります。 -出力ファイルがシーク可能なら、各行の行番号が順番通りに並んでなくても構いませ -ん。位置が飛んでいても重なっていても大丈夫です。その場合、次の位置に移動する -ために lseek(2) が使われます。 -出力ファイルがシーク不可なら、「隙間」だけが処理可能です。隙間は null バイト -で埋められます。 -.PP -.I xxd \-r -は不正な入力をエラーにしません。ゴミは静かに読み飛ばされます。 -.PP -16 進ダンプを編集するときは注意が必要です。 -.I xxd \-r -は必要な桁 (\-c 引数参照) だけ 16 進データを読み込んで、行の残りを無視しま -す。つまり、ascii (または ebcdic) を示している列への変更は無視されます。 -xxd \-r \-p でプレーン形式 (ポストスクリプト形式) の 16 進ダンプを元に戻す場 -合は、列の数は影響しません。 -2 桁の 16 進数と認識できるものはすべて変換されます。 -.PP -\fI% xxd \-i file\fR -.br -と -.br -\fI% xxd \-i < file\fR -.br -の結果は違います。注意してください。 -.PP -.I xxd \-s +seek -と -.IR "xxd \-s seek" , -の違いは、lseek(2) を使って入力を "巻き戻す" かどうかです。'+' が意味を持つ -のは、入力が標準入力で、xxd が起動されたときに標準入力のファイル位置がファイ -ルの先頭ではなかった場合です。 -以下の例が分かりやすいかもしれません (もっと混乱するかも!)... -.PP -`cat' が既に標準入力を終わりまで読んでいるので、読む前に標準入力を巻き戻す必 -要がある。 -.br -\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR -.PP -ファイル位置 0x480 (=1024+128) 前方から 16 進ダンプする。 -`+' は 「現在地からの相対位置」を意味するので、dd が 1k 処理した後から、さら -に `128' 進めます。 -.br -\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR -.PP -ファイル位置 0x100 ( = 1024\-768) から 16 進ダンプする。 -.br -\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR -.PP -このような使い方はあまりしませんし、`+' を使うこともほとんどないでしょう。 -\-s を使うときはいつでも、strace(1) や truss(1) を使って、xxd の働きをチェッ -クすることをお勧めします。 -.SH 例 -.PP -.br -.BR ファイル -の最初の三行 (16 進数で 0x30 バイト) 以降を出力する。 -.br -\fI% xxd \-s 0x30 file\fR -.PP -.br -.BR ファイル -の最後から三行 (16 進数で 0x30 バイト) を出力する。 -.br -\fI% xxd \-s \-0x30 file\fR -.PP -.br -120 バイトを、平文 16 進ダンプ形式で一行に 20 オクテットずつ出力する。 -.br -\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR -.br -2e54482058584420312022417567757374203139 -.br -39362220224d616e75616c207061676520666f72 -.br -20787864220a2e5c220a2e5c222032317374204d -.br -617920313939360a2e5c22204d616e2070616765 -.br -20617574686f723a0a2e5c2220202020546f6e79 -.br -204e7567656e74203c746f6e79407363746e7567 -.br - -.br -この man ページの先頭から 120 バイトを一行に 12 オクテットずつ 16 進ダンプす -る。 -.br -\fI% xxd \-l 120 \-c 12 xxd.1\fR -.br -0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A -.br -000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" -.br -0000018: 224d 616e 7561 6c20 7061 6765 "Manual page -.br -0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ -.br -0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M -.br -000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" -.br -0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut -.br -0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" -.br -0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent -.br -000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug -.PP -.br -xxd.1 の日付部分だけを出力する。 -.br -\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR -.br -0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996 -.PP -.br -.B input_file -を -.B output_file -にコピーし、先頭に 0x00 を 100 バイト分付け加える。 -.br -\fI% xxd input_file | xxd \-r \-s 100 > output_file\fR -.br - -.br -xxd.1 の日付を修正する。 -.br -\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR -.br -\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR -.br -0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 -.PP -.br -中身がすべて 0x00 の 65537 バイトのファイルを作成する。 -ただし、最後のバイトだけは 'A' (hex 0x41)。 -.br -\fI% echo "010000: 41" | xxd \-r > file\fR -.PP -.br -作成したファイルをオートスキップを使って 16 進ダンプする。 -.br -\fI% xxd \-a \-c 12 file\fR -.br -0000000: 0000 0000 0000 0000 0000 0000 ............ -.br -* -.br -000fffc: 0000 0000 40 ....A -.PP -一文字の 'A' からなる 1 バイトのファイルを作成する。 - '\-r \-s' の後に指定した数値がファイル中の行番号に加算され、結果、余計なバ -イトが飛ばされる。 -.br -\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR -.PP -.B vim(1) -の中から xxd をフィルタとして実行し、 -マークされた `a' から `z' までの領域を 16 進ダンプする。 -.br -\fI:'a,'z!xxd\fR -.PP -.B vim(1) -の中から xxd をフィルタとして実行し、 -マークされた `a' から `z' までの領域をバイナリに戻す。 -.br -\fI:'a,'z!xxd \-r\fR -.PP -.B vim(1) -の中から xxd をフィルタとして実行し、 -16 進ダンプされた行を元に戻す。戻したい行にカーソルを移動して: -.br -\fI!!xxd \-r\fR -.PP -シリアル行から一文字読み込む -.br -\fI% xxd \-c1 < /dev/term/b &\fR -.br -\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR -.br -\fI% echo \-n foo > /dev/term/b\fR -.PP -.SH 返り値 -以下のエラー値が返ります: -.TP -0 -エラーなし。 -.TP -\-1 -操作がサポートされていない ( -.I xxd \-r \-i -はまだ不可です). -.TP -1 -引数の解釈に関するエラー。 -.TP -2 -入力ファイルに関する問題。 -.TP -3 -出力ファイルに関する問題。 -.TP -4,5 -指定された位置へシークできなかった。 -.SH 関連項目 -uuencode(1), uudecode(1), patch(1) -.br -.SH 警告 -この奇妙なツールは作者が使いやすいように作られています。 -自己責任で使ってください。ファイルをコピーし、それを調べ、ウィザードたれ。 -.br -.SH バージョン -このマニュアルは xxd バージョン 1.7 について説明しています。 -.SH 著者 -.br -(c) 1990-1997 by Juergen Weigert -.br -<jnweiger@informatik.uni\-erlangen.de> -.LP -私の功績として自由に配布してください。 -.br -儲かったら教えてください。 -.br -損しても知りません。 -.PP -マニュアルは Tony Nugent -.br -<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> -.br -によって書かれ、 -Bram Moolenaar が少し変更を加え、 -Juergen Weigert が編集しました。 -.PP diff --git a/runtime.old/syntax/help_ja.vim b/runtime.old/syntax/help_ja.vim deleted file mode 100644 index 9712ac70b..000000000 --- a/runtime.old/syntax/help_ja.vim +++ /dev/null @@ -1,3 +0,0 @@ -scriptencoding utf-8 - -syn match helpVim "Vim バージョン [0-9.a-z]\+" diff --git a/tools/googlecode_upload.py b/tools/googlecode_upload.py deleted file mode 100644 index d2d5f974c..000000000 --- a/tools/googlecode_upload.py +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2006, 2007 Google Inc. All Rights Reserved. -# Author: danderson@google.com (David Anderson) -# -# Script for uploading files to a Google Code project. -# -# This is intended to be both a useful script for people who want to -# streamline project uploads and a reference implementation for -# uploading files to Google Code projects. -# -# To upload a file to Google Code, you need to provide a path to the -# file on your local machine, a small summary of what the file is, a -# project name, and a valid account that is a member or owner of that -# project. You can optionally provide a list of labels that apply to -# the file. The file will be uploaded under the same name that it has -# in your local filesystem (that is, the "basename" or last path -# component). Run the script with '--help' to get the exact syntax -# and available options. -# -# Note that the upload script requests that you enter your -# googlecode.com password. This is NOT your Gmail account password! -# This is the password you use on googlecode.com for committing to -# Subversion and uploading files. You can find your password by going -# to http://code.google.com/hosting/settings when logged in with your -# Gmail account. If you have already committed to your project's -# Subversion repository, the script will automatically retrieve your -# credentials from there (unless disabled, see the output of '--help' -# for details). -# -# If you are looking at this script as a reference for implementing -# your own Google Code file uploader, then you should take a look at -# the upload() function, which is the meat of the uploader. You -# basically need to build a multipart/form-data POST request with the -# right fields and send it to https://PROJECT.googlecode.com/files . -# Authenticate the request using HTTP Basic authentication, as is -# shown below. -# -# Licensed under the terms of the Apache Software License 2.0: -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Questions, comments, feature requests and patches are most welcome. -# Please direct all of these to the Google Code users group: -# http://groups.google.com/group/google-code-hosting - -"""Google Code file uploader script. -""" - -__author__ = 'danderson@google.com (David Anderson)' - -import httplib -import os.path -import optparse -import getpass -import base64 -import sys - - -def upload(file, project_name, user_name, password, summary, labels=None): - """Upload a file to a Google Code project's file server. - - Args: - file: The local path to the file. - project_name: The name of your project on Google Code. - user_name: Your Google account name. - password: The googlecode.com password for your account. - Note that this is NOT your global Google Account password! - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - - Returns: a tuple: - http_status: 201 if the upload succeeded, something else if an - error occured. - http_reason: The human-readable string associated with http_status - file_url: If the upload succeeded, the URL of the file on Google - Code, None otherwise. - """ - # The login is the user part of user@gmail.com. If the login provided - # is in the full user@domain form, strip it down. - if user_name.endswith('@gmail.com'): - user_name = user_name[:user_name.index('@gmail.com')] - - form_fields = [('summary', summary)] - if labels is not None: - form_fields.extend([('label', l.strip()) for l in labels]) - - content_type, body = encode_upload_request(form_fields, file) - - upload_host = '%s.googlecode.com' % project_name - upload_uri = '/files' - auth_token = base64.b64encode('%s:%s'% (user_name, password)) - headers = { - 'Authorization': 'Basic %s' % auth_token, - 'User-Agent': 'Googlecode.com uploader v0.9.4', - 'Content-Type': content_type, - } - - server = httplib.HTTPSConnection(upload_host) - server.request('POST', upload_uri, body, headers) - resp = server.getresponse() - server.close() - - if resp.status == 201: - location = resp.getheader('Location', None) - else: - location = None - return resp.status, resp.reason, location - - -def encode_upload_request(fields, file_path): - """Encode the given fields and file into a multipart form body. - - fields is a sequence of (name, value) pairs. file is the path of - the file to upload. The file will be uploaded to Google Code with - the same file name. - - Returns: (content_type, body) ready for httplib.HTTP instance - """ - BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla' - CRLF = '\r\n' - - body = [] - - # Add the metadata about the upload first - for key, value in fields: - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="%s"' % key, - '', - value, - ]) - - # Now add the file itself - file_name = os.path.basename(file_path) - f = open(file_path, 'rb') - file_content = f.read() - f.close() - - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="filename"; filename="%s"' - % file_name, - # The upload server determines the mime-type, no need to set it. - 'Content-Type: application/octet-stream', - '', - file_content, - ]) - - # Finalize the form body - body.extend(['--' + BOUNDARY + '--', '']) - - return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body) - - -def upload_find_auth(file_path, project_name, summary, labels=None, - user_name=None, password=None, tries=3): - """Find credentials and upload a file to a Google Code project's file server. - - file_path, project_name, summary, and labels are passed as-is to upload. - - Args: - file_path: The local path to the file. - project_name: The name of your project on Google Code. - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - config_dir: Path to Subversion configuration directory, 'none', or None. - user_name: Your Google account name. - tries: How many attempts to make. - """ - - while tries > 0: - if user_name is None: - # Read username if not specified or loaded from svn config, or on - # subsequent tries. - sys.stdout.write('Please enter your googlecode.com username: ') - sys.stdout.flush() - user_name = sys.stdin.readline().rstrip() - if password is None: - # Read password if not loaded from svn config, or on subsequent tries. - print 'Please enter your googlecode.com password.' - print '** Note that this is NOT your Gmail account password! **' - print 'It is the password you use to access Subversion repositories,' - print 'and can be found here: http://code.google.com/hosting/settings' - password = getpass.getpass() - - status, reason, url = upload(file_path, project_name, user_name, password, - summary, labels) - # Returns 403 Forbidden instead of 401 Unauthorized for bad - # credentials as of 2007-07-17. - if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]: - # Rest for another try. - user_name = password = None - tries = tries - 1 - else: - # We're done. - break - - return status, reason, url - - -def main(): - parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY ' - '-p PROJECT [options] FILE') - parser.add_option('-s', '--summary', dest='summary', - help='Short description of the file') - parser.add_option('-p', '--project', dest='project', - help='Google Code project name') - parser.add_option('-u', '--user', dest='user', - help='Your Google Code username') - parser.add_option('-w', '--password', dest='password', - help='Your Google Code password') - parser.add_option('-l', '--labels', dest='labels', - help='An optional list of comma-separated labels to attach ' - 'to the file') - - options, args = parser.parse_args() - - if not options.summary: - parser.error('File summary is missing.') - elif not options.project: - parser.error('Project name is missing.') - elif len(args) < 1: - parser.error('File to upload not provided.') - elif len(args) > 1: - parser.error('Only one file may be specified.') - - file_path = args[0] - - if options.labels: - labels = options.labels.split(',') - else: - labels = None - - status, reason, url = upload_find_auth(file_path, options.project, - options.summary, labels, - options.user, options.password) - if url: - print 'The file was uploaded successfully.' - print 'URL: %s' % url - return 0 - else: - print 'An error occurred. Your file was not uploaded.' - print 'Google Code upload server said: %s (%s)' % (reason, status) - return 1 - - -if __name__ == '__main__': - sys.exit(main()) From 0d1f4d69911ca83674099f5ae3a7de3bf760aa87 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 13 Oct 2011 14:19:19 +0900 Subject: [PATCH 360/783] html --- Makefile | 2 +- html/build.vim => tools/buildhtml.vim | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) rename html/build.vim => tools/buildhtml.vim (94%) diff --git a/Makefile b/Makefile index ea09e1d69..a4f9e5ff9 100644 --- a/Makefile +++ b/Makefile @@ -4,5 +4,5 @@ all: html: - cd html && gvim -u build.vim + gvim -u tools/buildhtml.vim diff --git a/html/build.vim b/tools/buildhtml.vim similarity index 94% rename from html/build.vim rename to tools/buildhtml.vim index 65e41e23d..e94d078fa 100644 --- a/html/build.vim +++ b/tools/buildhtml.vim @@ -3,7 +3,7 @@ if has('vim_starting') set nocompatible set loadplugins - call feedkeys(":source " . expand('<sfile>:t') . "\<CR>") + call feedkeys(":source " . expand('<sfile>') . "\<CR>") finish endif @@ -21,15 +21,15 @@ source $VIMDOCROOT/tools/makehtml.vim function! s:main() " clean - for f in split(glob('tmp/*'), '\n') + for f in split(glob('html/*'), '\n') call delete(f) endfor - if !isdirectory('tmp') - call mkdir('tmp') + if !isdirectory('html') + call mkdir('html') endif - cd tmp + cd html " " copy dist files From 6f27743f3e76d6ad108707c828dd0ce09f4fdab8 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 13 Oct 2011 14:25:16 +0900 Subject: [PATCH 361/783] html --- tools/buildhtml.vim | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index e94d078fa..651809055 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -36,8 +36,6 @@ function! s:main() " args $VIMDOCROOT/runtime/doc/* $VIMDOCROOT/vim_faq/vim_faq.jax argdo saveas %:t - " add non-ascii char - edit vim_faq_help.jax | 1s/$/ 和訳/ | update " generate tags try From 94b9c0d165557d2c92f70542b3a294e2c6d19796 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 13 Oct 2011 19:26:03 +0900 Subject: [PATCH 362/783] html --- tools/buildhtml.vim | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index 651809055..6a2b793fc 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -57,12 +57,18 @@ function! s:main() " 2html.vim escape modeline. But it doesn't escape /^vim:/. set nomodeline args *.html - argdo call s:FixIE8() | call s:AddHeaderFooter() | update + argdo call s:PostEdit() | update quit cd - endfunction +function! s:PostEdit() + call s:FixIE8() + call s:AddHeaderFooter() + call s:StyleToLink() +endfunction + function! s:FixIE8() " IE8はHTMLがインライン要素のみの長いテキストだった場合にテキストの選 " 択が激しく遅くなるようなので、適当にブロック要素を入れる。 @@ -92,6 +98,12 @@ function! s:AddHeaderFooter() \ ]) endfunction +function! s:StyleToLink() + 1;/^<style/,/^<\/style/change +<link rel="stylesheet" href="style.css" type="text/css" /> +. +endfunction + try call s:main() endtry From 27675ba0d02ec8955de3cb841512ee133d7ecd52 Mon Sep 17 00:00:00 2001 From: mattn <mattn.jp@gmail.com> Date: Thu, 13 Oct 2011 20:09:54 +0900 Subject: [PATCH 363/783] set encoding=utf-8 --- tools/buildhtml.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index 6a2b793fc..80b3e0bb1 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -9,6 +9,7 @@ endif set nocompatible set nomore +set encoding=utf-8 syntax on colorscheme delek From 1e040748c0675fb76e8bc6d7fe863de7ab28905c Mon Sep 17 00:00:00 2001 From: mattn <mattn.jp@gmail.com> Date: Fri, 14 Oct 2011 11:58:05 +0900 Subject: [PATCH 364/783] fork for windows. (and include js) --- tools/buildhtml.vim | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index 80b3e0bb1..c700c95a9 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -10,6 +10,7 @@ endif set nocompatible set nomore set encoding=utf-8 +set fileencodings=utf-8 syntax on colorscheme delek @@ -65,6 +66,7 @@ function! s:main() endfunction function! s:PostEdit() + set fileformat=unix call s:FixIE8() call s:AddHeaderFooter() call s:StyleToLink() @@ -77,6 +79,10 @@ function! s:FixIE8() endfunction function! s:AddHeaderFooter() + call append(search('^<body', 'wn')-1, [ + \ '<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>', + \ '<script src="vimdoc-ja.js" type="text/javascript"></script>', + \ ]) call append(search('^<body', 'wn'), [ \ '<div id="cse-search-form" style="float:right;">Loading</div>', \ '<script src="//www.google.com/jsapi" type="text/javascript"></script>', From 05bbef49e86be6286c0c39f657e1a59085212563 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Fri, 14 Oct 2011 20:13:08 +0900 Subject: [PATCH 365/783] html --- tools/buildhtml.vim | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index c700c95a9..10e29be6f 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -97,10 +97,15 @@ function! s:AddHeaderFooter() \ ' }, true);', \ '</script>', \ '<link rel="stylesheet" href="//www.google.com/cse/style/look/default.css" type="text/css" />', + \ '<a href="http://vim-jp.org/">vim-jp</a>', + \ '> <a href="http://vim-jp.org/vimdoc-ja/">vimdoc-ja</a>', + \ '> ' . expand('%:t'), \ ]) call append(search('^</body', 'wn') - 1, [ \ '<div style="text-align:right;">', - \ '<a href="https://github.com/vim-jp/vimdoc-ja">Vim日本語ドキュメント</a><br>', + \ 'Translated by <a href="https://github.com/vim-jp/vimdoc-ja">vimdoc-ja プロジェクト</a><br />', + \ '間違いを見つけたら<a href="http://groups.google.com/group/vimdoc-ja">メーリングリスト</a>か<a href="https://github.com/vim-jp/vimdoc-ja/issues">issueトラッカー</a>でお知らせください。<br />', + \ '<a href="https://github.com/vim-jp/vimdoc-ja/wiki/HowToContribute">参加者募集中。</a><br />', \ '</div>', \ ]) endfunction From fec94ff0279a1480db5caf36461bd62c89b5d749 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Fri, 14 Oct 2011 20:39:40 +0900 Subject: [PATCH 366/783] html --- tools/buildhtml.vim | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index 10e29be6f..0717a366a 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -98,12 +98,13 @@ function! s:AddHeaderFooter() \ '</script>', \ '<link rel="stylesheet" href="//www.google.com/cse/style/look/default.css" type="text/css" />', \ '<a href="http://vim-jp.org/">vim-jp</a>', - \ '> <a href="http://vim-jp.org/vimdoc-ja/">vimdoc-ja</a>', - \ '> ' . expand('%:t'), + \ '/ <a href="http://vim-jp.org/vimdoc-ja/">vimdoc-ja</a>', + \ '/ ' . expand('%:t'), \ ]) call append(search('^</body', 'wn') - 1, [ \ '<div style="text-align:right;">', \ 'Translated by <a href="https://github.com/vim-jp/vimdoc-ja">vimdoc-ja プロジェクト</a><br />', + \ '<a href="https://github.com/vim-jp/vimdoc-ja/zipball/master">ダウンロード</a><br />', \ '間違いを見つけたら<a href="http://groups.google.com/group/vimdoc-ja">メーリングリスト</a>か<a href="https://github.com/vim-jp/vimdoc-ja/issues">issueトラッカー</a>でお知らせください。<br />', \ '<a href="https://github.com/vim-jp/vimdoc-ja/wiki/HowToContribute">参加者募集中。</a><br />', \ '</div>', From ed1a7d59ef4c76a34eb979dab552b6fd673184e2 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Fri, 14 Oct 2011 20:47:15 +0900 Subject: [PATCH 367/783] html --- tools/buildhtml.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index 0717a366a..9bda98a7d 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -104,7 +104,7 @@ function! s:AddHeaderFooter() call append(search('^</body', 'wn') - 1, [ \ '<div style="text-align:right;">', \ 'Translated by <a href="https://github.com/vim-jp/vimdoc-ja">vimdoc-ja プロジェクト</a><br />', - \ '<a href="https://github.com/vim-jp/vimdoc-ja/zipball/master">ダウンロード</a><br />', + \ '<a href="https://github.com/vim-jp/vimdoc-ja/zipball/master">ヘルプ一式ダウンロード</a><br />', \ '間違いを見つけたら<a href="http://groups.google.com/group/vimdoc-ja">メーリングリスト</a>か<a href="https://github.com/vim-jp/vimdoc-ja/issues">issueトラッカー</a>でお知らせください。<br />', \ '<a href="https://github.com/vim-jp/vimdoc-ja/wiki/HowToContribute">参加者募集中。</a><br />', \ '</div>', From b8b8d90684fea7928b06a4654fe5f2cb597b97f8 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 15 Oct 2011 19:00:34 +0900 Subject: [PATCH 368/783] jekyllize --- tools/buildhtml.vim | 63 +++++++++++++-------------------------------- 1 file changed, 18 insertions(+), 45 deletions(-) diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index 9bda98a7d..368e209e6 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -67,56 +67,29 @@ endfunction function! s:PostEdit() set fileformat=unix - call s:FixIE8() - call s:AddHeaderFooter() - call s:StyleToLink() + call s:ToJekyll() endfunction -function! s:FixIE8() - " IE8はHTMLがインライン要素のみの長いテキストだった場合にテキストの選 - " 択が激しく遅くなるようなので、適当にブロック要素を入れる。 - %s@^<br>$@<div><br></div>@e -endfunction - -function! s:AddHeaderFooter() - call append(search('^<body', 'wn')-1, [ - \ '<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>', - \ '<script src="vimdoc-ja.js" type="text/javascript"></script>', - \ ]) - call append(search('^<body', 'wn'), [ - \ '<div id="cse-search-form" style="float:right;">Loading</div>', - \ '<script src="//www.google.com/jsapi" type="text/javascript"></script>', - \ '<script type="text/javascript"> ', - \ ' google.load("search", "1", {language : "ja"});', - \ ' google.setOnLoadCallback(function() {', - \ ' var customSearchControl = new google.search.CustomSearchControl("001325159752250591701:65aunpq8rlg");', - \ ' customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);', - \ ' var options = new google.search.DrawOptions();', - \ ' options.enableSearchboxOnly("http://www.google.com/cse?cx=001325159752250591701:65aunpq8rlg");', - \ ' customSearchControl.draw("cse-search-form", options);', - \ ' }, true);', - \ '</script>', - \ '<link rel="stylesheet" href="//www.google.com/cse/style/look/default.css" type="text/css" />', - \ '<a href="http://vim-jp.org/">vim-jp</a>', - \ '/ <a href="http://vim-jp.org/vimdoc-ja/">vimdoc-ja</a>', - \ '/ ' . expand('%:t'), - \ ]) - call append(search('^</body', 'wn') - 1, [ - \ '<div style="text-align:right;">', - \ 'Translated by <a href="https://github.com/vim-jp/vimdoc-ja">vimdoc-ja プロジェクト</a><br />', - \ '<a href="https://github.com/vim-jp/vimdoc-ja/zipball/master">ヘルプ一式ダウンロード</a><br />', - \ '間違いを見つけたら<a href="http://groups.google.com/group/vimdoc-ja">メーリングリスト</a>か<a href="https://github.com/vim-jp/vimdoc-ja/issues">issueトラッカー</a>でお知らせください。<br />', - \ '<a href="https://github.com/vim-jp/vimdoc-ja/wiki/HowToContribute">参加者募集中。</a><br />', - \ '</div>', +function! s:ToJekyll() + let helpname = expand('%:t:r') + if helpname == 'index' + let helpname = 'help' + endif + " remove header + 1,/^<hr>/delete _ + " remove footer + /^<hr>/,$delete _ + " escape jekyll tags + %s/{\{2,}\|{%/{{ "\0" }}/ge + " YAML front matter + call append(0, [ + \ '---', + \ 'layout: vimdoc', + \ printf("helpname: '%s'", helpname), + \ '---', \ ]) endfunction -function! s:StyleToLink() - 1;/^<style/,/^<\/style/change -<link rel="stylesheet" href="style.css" type="text/css" /> -. -endfunction - try call s:main() endtry From 8aa341d90e36f6ec35b67eed1aac999d26d47aa2 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 16 Oct 2011 13:05:54 +0900 Subject: [PATCH 369/783] update to 7.3 snapshot --- en/autocmd.txt | 6 ++- en/eval.txt | 4 +- en/gui.txt | 11 +++++- en/gui_w32.txt | 5 ++- en/gui_x11.txt | 4 +- en/if_pyth.txt | 4 +- en/indent.txt | 45 ++++++++++++++++++++-- en/index.txt | 4 +- en/insert.txt | 24 ++++++++++-- en/map.txt | 5 ++- en/motion.txt | 4 +- en/options.txt | 13 +++++-- en/os_vms.txt | 98 +++++++++++++++++++++++------------------------ en/os_win32.txt | 8 ++-- en/pattern.txt | 2 +- en/pi_vimball.txt | 3 +- en/pi_zip.txt | 3 +- en/starting.txt | 15 ++++---- en/syntax.txt | 42 +++++++++++++++++++- en/undo.txt | 8 ++-- en/vi_diff.txt | 6 +-- en/windows.txt | 4 +- 22 files changed, 217 insertions(+), 101 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index 40949bb1e..c14845584 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.3. Last change: 2011 May 19 +*autocmd.txt* For Vim version 7.3. Last change: 2011 Aug 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -448,6 +448,9 @@ BufWriteCmd Before writing the whole buffer to a file. 'modified' if successful, unless '+' is in 'cpo' and writing to another file |cpo-+|. The buffer contents should not be changed. + When the command resets 'modified' the undo + information is adjusted to mark older undo + states as 'modified', like |:write| does. |Cmd-event| *BufWritePost* BufWritePost After writing the whole buffer to a file @@ -508,6 +511,7 @@ CursorMoved After the cursor was moved in Normal mode. not expect or that is slow. *CursorMovedI* CursorMovedI After the cursor was moved in Insert mode. + Not triggered when the popup menu is visible. Otherwise the same as CursorMoved. *EncodingChanged* EncodingChanged Fires off after the 'encoding' option has been diff --git a/en/eval.txt b/en/eval.txt index 12d9504f3..624b47da9 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2011 Jul 13 +*eval.txt* For Vim version 7.3. Last change: 2011 Aug 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -39,7 +39,7 @@ done, the features in this document are not available. See |+eval| and *E712* There are six types of variables: -Number A 32 bit signed number. |expr-number| *Number* +Number A 32 or 64 bit signed number. |expr-number| *Number* Examples: -123 0x10 0177 Float A floating point number. |floating-point-format| *Float* diff --git a/en/gui.txt b/en/gui.txt index 213f455cc..b2e6a0c4c 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 7.3. Last change: 2010 Nov 03 +*gui.txt* For Vim version 7.3. Last change: 2011 Jul 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -147,6 +147,15 @@ task bar with the 'guiheadroom' option. If you are running the X Window System, you can get information about the window Vim is running in with this command: > :!xwininfo -id $WINDOWID +< + *gui-IME* *iBus* +Input methods for international characters in X that rely on the XIM +framework, most notably iBus, have been known to produce undesirable results +in gVim. These may include an inability to enter spaces, or long delays +between typing a character and it being recognized by the application. + +One workaround that has been successful, for unknown reasons, is to prevent +gvim from forking into the background by starting it with the |-f| argument. ============================================================================== 2. Scrollbars *gui-scrollbars* diff --git a/en/gui_w32.txt b/en/gui_w32.txt index 7b60c3b4a..16758b000 100644 --- a/en/gui_w32.txt +++ b/en/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 7.3. Last change: 2010 Dec 19 +*gui_w32.txt* For Vim version 7.3. Last change: 2011 Jul 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -137,6 +137,9 @@ options: And if there already is a gvim running: "Edit with existing gvim" -- edit the file with the running gvim +The "edit with existing Vim" entries can be disabled by adding an entry in the +registry under HKLM\Software\Vim\Gvim, named DisableEditWithExisting, and with +any value. *install-registry* You can add the "Edit with Vim" menu entry in an easy way by using the "install.exe" program. It will add several registry entries for you. diff --git a/en/gui_x11.txt b/en/gui_x11.txt index 6d16500c5..1ae656e04 100644 --- a/en/gui_x11.txt +++ b/en/gui_x11.txt @@ -1,4 +1,4 @@ -*gui_x11.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*gui_x11.txt* For Vim version 7.3. Last change: 2011 Sep 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -53,6 +53,8 @@ When using "gvim -f" and then ":gui", Vim will run in the foreground. The ":gui -b". "gvim --nofork" does the same as "gvim -f". + *E851* *E852* +When starting the GUI fails Vim will try to continue running in the terminal. If you want the GUI to run in the foreground always, include the 'f' flag in 'guioptions'. |-f|. diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 43c435655..03d24a5b8 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.3. Last change: 2011 May 07 +*if_pyth.txt* For Vim version 7.3. Last change: 2011 Aug 19 VIM REFERENCE MANUAL by Paul Moore @@ -380,7 +380,7 @@ To work around such problems there are these options: *has-python* You can test what Python version is available with: > if has('python') - echo 'there is Pyton 2.x' + echo 'there is Python 2.x' elseif has('python3') echo 'there is Python 3.x' endif diff --git a/en/indent.txt b/en/indent.txt index 7767ce891..9a4aaa79a 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.3. Last change: 2011 Jul 15 +*indent.txt* For Vim version 7.3. Last change: 2011 Sep 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -132,8 +132,8 @@ The 'cinoptions' option sets how Vim performs indentation. The value after the option character can be one of these (N is any number): N indent N spaces -N indent N spaces to the left - Ns N times 'shiftwidth spaces - -Ns N times 'shiftwidth spaces to the left + Ns N times 'shiftwidth' spaces + -Ns N times 'shiftwidth' spaces to the left In the list below, "N" represents a number of your choice (the number can be negative). When @@ -432,7 +432,7 @@ The examples below assume a 'shiftwidth' of 4. c3 c3 ) && c4; ) && c4; < - *cino-2* + *cino-w* wN When in unclosed parentheses and N is non-zero and either using "(0" or "u0", respectively, or using "U0" and the unclosed parentheses is the first non-white character in its line, line @@ -706,6 +706,43 @@ Indent for a continuation line: > let g:pyindent_continue = '&sw * 2' +R *ft-r-indent* + +Function arguments are aligned if they span for multiple lines. If you prefer +do not have the arguments of functions aligned, put in your |vimrc|: +> + let r_indent_align_args = 0 +< +All lines beginning with a comment character, #, get the same indentation +level of the normal R code. Users of Emacs/ESS may be used to have lines +beginning with a single # indented in the 40th column, ## indented as R code, +and ### not indented. If you prefer that lines beginning with comment +characters are aligned as they are by Emacs/ESS, put in your |vimrc|: +> + let r_indent_ess_comments = 1 +< +If you prefer that lines beginning with a single # are aligned at a column +different from the 40th one, you should set a new value to the variable +r_indent_comment_column, as in the example below: +> + let r_indent_comment_column = 30 +< +Any code after a line that ends with "<-" is indented. Emacs/ESS does not +indent the code if it is a top level function. If you prefer that the +Vim-R-plugin behaves like Emacs/ESS in this regard, put in your |vimrc|: +> + let r_indent_ess_compatible = 1 +< +Below is an example of indentation with and without this option enabled: +> + ### r_indent_ess_compatible = 1 ### r_indent_ess_compatible = 0 + foo <- foo <- + function(x) function(x) + { { + paste(x) paste(x) + } } +< + SHELL *ft-sh-indent* The amount of indent applied under various circumstances in a shell file can diff --git a/en/index.txt b/en/index.txt index bd9f3823e..c01f1d031 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.3. Last change: 2011 Jan 04 +*index.txt* For Vim version 7.3. Last change: 2011 Aug 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1261,7 +1261,7 @@ tag command action ~ |:k| :k set a mark |:keepalt| :keepa[lt] following command keeps the alternate file |:keepmarks| :kee[pmarks] following command keeps marks where they are -|:keepjumps| :keepj[jumps] following command keeps jumplist and marks +|:keepjumps| :keepj[umps] following command keeps jumplist and marks |:lNext| :lN[ext] go to previous entry in location list |:lNfile| :lNf[ile] go to last entry in previous file |:list| :l[ist] print lines diff --git a/en/insert.txt b/en/insert.txt index 4ee1c79b8..24a17d524 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.3. Last change: 2010 Nov 10 +*insert.txt* For Vim version 7.3. Last change: 2011 Sep 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1020,6 +1020,21 @@ On the second invocation the arguments are: The function must return a List with the matching words. These matches usually include the "a:base" text. When there are no matches return an empty List. + +In order to return more information than the matching words, return a Dict +that contains the List. The Dict can have these items: + words The List of matching words (mandatory). + refresh A string to control re-invocation of the function + (optional). + The only value currently recognized is "always", the + effect is that the function is called whenever the + leading text is changed. +Other items are ignored. + +For example, the function can contain this: > + let matches = ... list of words ... + return {'words': matches, 'refresh': 'always'} +< *complete-items* Each list item can either be a string or a Dictionary. When it is a string it is used as the completion. When it is a Dictionary it can contain these @@ -1040,9 +1055,10 @@ items: empty when non-zero this match will be added even when it is an empty string -All of these except 'icase' must be a string. If an item does not meet these -requirements then an error message is given and further items in the list are -not used. You can mix string and Dictionary items in the returned list. +All of these except 'icase', 'dup' and 'empty' must be a string. If an item +does not meet these requirements then an error message is given and further +items in the list are not used. You can mix string and Dictionary items in +the returned list. The "menu" item is used in the popup menu and may be truncated, thus it should be relatively short. The "info" item can be longer, it will be displayed in diff --git a/en/map.txt b/en/map.txt index 2ebf2ebc4..92e21668f 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.3. Last change: 2011 Jun 13 +*map.txt* For Vim version 7.3. Last change: 2011 Aug 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -228,7 +228,7 @@ text before the cursor and start omni completion when some condition is met. For abbreviations |v:char| is set to the character that was typed to trigger the abbreviation. You can use this to decide how to expand the {lhs}. You -you should not either insert or change the v:char. +should not either insert or change the v:char. Be very careful about side effects! The expression is evaluated while obtaining characters, you may very well make the command dysfunctional. @@ -544,6 +544,7 @@ construct can be used: <Char-123> character 123 <Char-033> character 27 <Char-0x7f> character 127 + <S-Char-114> character 114 ('r') shifted ('R') This is useful to specify a (multi-byte) character in a 'keymap' file. Upper and lowercase differences are ignored. diff --git a/en/motion.txt b/en/motion.txt index 2f635bc48..ccf689889 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.3. Last change: 2011 Jun 02 +*motion.txt* For Vim version 7.3. Last change: 2011 Jul 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1017,8 +1017,6 @@ CTRL-O Go to [count] Older cursor position in jump list <Tab> or *CTRL-I* *<Tab>* CTRL-I Go to [count] newer cursor position in jump list (not a motion command). - In a |quickfix-window| it takes you to the position of - the error under the cursor. {not in Vi} {not available without the |+jumplist| feature} diff --git a/en/options.txt b/en/options.txt index 3bfc05a24..b256cb6fb 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.3. Last change: 2011 Jul 07 +*options.txt* For Vim version 7.3. Last change: 2011 Sep 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -4861,6 +4861,10 @@ A jump table for the options with a short description can be found at |Q_op|. written. A ":set nomodified" command also resets the original values to the current values and the 'modified' option will be reset. + This option is not set when a change is made to the buffer as the + result of a BufNewFile, BufRead/BufReadPost, BufWritePost, + FileAppendPost or VimLeave autocommand event. See |gzip-example| for + an explanation. When 'buftype' is "nowrite" or "nofile" this option may be set, but will be ignored. @@ -5898,8 +5902,11 @@ A jump table for the options with a short description can be found at |Q_op|. "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like systems, the default is set according to the value of 'shell', to reduce the need to set this option by the user. It's not used for - OS/2 (EMX figures this out itself). See |option-backslash| about - including spaces and backslashes. See |dos-shell|. + OS/2 (EMX figures this out itself). + On Unix it can have more than one flag. Each white space separated + part is passed as an argument to the shell command. + See |option-backslash| about including spaces and backslashes. + Also see |dos-shell| for MS-DOS and MS-Windows. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. diff --git a/en/os_vms.txt b/en/os_vms.txt index 81d184189..6fc07694e 100644 --- a/en/os_vms.txt +++ b/en/os_vms.txt @@ -1,4 +1,4 @@ -*os_vms.txt* For Vim version 7.3. Last change: 2010 Aug 16 +*os_vms.txt* For Vim version 7.3. Last change: 2011 Aug 14 VIM REFERENCE MANUAL @@ -38,9 +38,6 @@ You can download the Vim source code by ftp from the official Vim site: Or use one of the mirrors: ftp://ftp.vim.org/pub/vim/MIRRORS -You will need both the Unix and Extra archives to build vim.exe for VMS. -For using Vim's full power you will need the runtime files as well. - You can download precompiled executables from: http://www.polarhome.com/vim/ ftp://ftp.polarhome.com/pub/vim/ @@ -75,7 +72,7 @@ See the file [.SRC]INSTALLVMS.TXT. 4. Problems *vms-problems* The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64 -platforms with the DEC C compiler. It should work without bigger problems. +platforms with the DEC C compiler. It should work without big problems. If your system does not have some include libraries you can tune up in OS_VMS_CONF.H file. @@ -88,11 +85,11 @@ Also GTK, XPM library paths should be configured in MAKE_VMS.MMS Note: Under VAX it should work with the DEC C compiler without problems. The VAX C compiler is not fully ANSI C compatible in pre-processor directives -semantics, therefore you have to use a converter program what will do the lion +semantics, therefore you have to use a converter program that will do the lion part of the job. For detailed instructions read file INSTALLvms.txt -MMS_VIM.EXE is build together with VIM.EXE, but for XD.EXE you should -change to subdirectory and build it separately. +MMS_VIM.EXE is build together with VIM.EXE, but for XXD.EXE you should +change to a subdirectory and build it separately. CTAGS is not part of the Vim source distribution anymore, however the OpenVMS specific source might contain CTAGS source files as described above. @@ -184,9 +181,9 @@ You may want to create .vimrc and .gvimrc files in your home directory The easiest way is just rename example files. You may leave the menu file (MENU.VIM) and files vimrc and gvimrc in the original $VIM directory. It will -be default setup for all users, and for users it is enough just to have their -own additions or resetting in their home directory in files .vimrc and .gvimrc. -It should work without problems. +be the default setup for all users, and for users it is enough to just have +their own additions or resetting in their home directory in files .vimrc and +.gvimrc. It should work without problems. Note: Remember, system rc files (default for all users) don't have a leading ".". So, system rc files are: > @@ -200,7 +197,7 @@ and user customized rc files are: > sys$login:.vimrc sys$login:.gvimrc -You can check that everything is on the right place with the :version command. +You can check that everything is at the right place with the :version command. Example LOGIN.COM: > @@ -209,15 +206,15 @@ Example LOGIN.COM: > $ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40 $ set disp/create/node=192.168.5.223/trans=tcpip -Note: This set-up should be enough, if you are working on standalone server or -clustered environment, but if you want to use Vim as internode editor in +Note: This set-up should be enough, if you are working on a standalone server or +clustered environment, but if you want to use Vim as an internode editor in DECNET environment, it will satisfy as well. You just have to define the "whole" path: > $ define VIM "<server_name>[""user password""]::device:<path>" $ vi*m :== "mcr VIM:VIM.EXE" -As for example: > +For example: > $ define VIM "PLUTO::RF10:[UTIL.VIM]" $ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required @@ -300,12 +297,12 @@ For more information type $help set disp in VMS prompt. 4) If you are working on MS-Windows or some other non X/Window environment you need to set up one X server and run Vim as in point 2. - For MS-Windows there are available free X servers as MIX , Omni X etc., + For MS-Windows there are available free X servers as MIX, Omni X etc., as well as excellent commercial products as eXcursion or ReflectionX with built-in DEC support. Please note, that executables without GUI are slightly faster during startup -then with enabled GUI in character mode. Therefore, if you do not use GUI +than with enabled GUI in character mode. Therefore, if you do not use GUI features, it is worth to choose non GUI executables. ============================================================================== @@ -326,8 +323,8 @@ features, it is worth to choose non GUI executables. 8.12 diff-mode 8.13 Allow '$' in C keywords 8.14 VIMTUTOR for beginners -8.15 Slow start in console mode issue -8.16 Common VIM directory - different architectures +8.15 Slow start in console mode issue +8.16 Common VIM directory - different architectures 8.1 Backspace/delete @@ -360,7 +357,7 @@ number, try these settings. > :set nowritebackup " does not have any purpose on VMS. It's the " default. -Recovery is working perfect as well from the default swap file. +Recovery is working perfectly as well from the default swap file. Read more with :help swapfile (Claude Marinier <ClaudeMarinier@xwavesolutions.com> Vim 5.5, Zoltan Arpadffy @@ -386,7 +383,7 @@ Note: You may use <,> brackets as well (device:<path>file.ext;version) as rf10:<user.zay.work>test.c;1 (David Elins <delins@foliage.com>, Jerome Lauret -<JLAURET@mail.chem.sunysb.edu> Vim 5.6 ) +<JLAURET@mail.chem.sunysb.edu> Vim 5.6) 8.5 Remote host invocation @@ -445,14 +442,14 @@ Terminal entry not found in termcap builtin_dumb defaulting to 'vt320' --- -The solution is to define default terminal name: > +The solution is to define the default terminal name: > $ ! unknown terminal name. Let us use vt320 or ansi instead. $ ! Note: it's case sensitive $ define term "vt320" -Terminals from VT100 to VT320 (as V300, VT220, VT200 ) do not need any extra -keyboard mappings. They should work perfect as they are, including arrows, +Terminals from VT100 to VT320 (as V300, VT220, VT200) do not need any extra +keyboard mappings. They should work perfectly as they are, including arrows, Ins, Del buttons etc., except Backspace in GUI mode. To solve it, add to .gvimrc: > @@ -465,8 +462,8 @@ your .vimrc file: > set ttyfast " set fast terminal -Note: if you're using Vim on remote host or through very slow connection, it's -recommended to avoid fast terminal option with: > +Note: if you're using Vim on remote host or through a very slow connection, it's +recommended to avoid the fast terminal option with: > set nottyfast " set terminal to slow mode @@ -483,8 +480,8 @@ special commands to execute executables: > OpenVMS users always have to be aware that the Vim command :! "just" drop them to DCL prompt. This feature is possible to use without any problem with all -DCL commands, but if we want to execute some program as XXD, CTAGS, JTAGS etc. -we're running into trouble if we follow the Vim documentation (see: help +DCL commands, but if we want to execute some programs such as XXD, CTAGS, JTAGS, +etc. we're running into trouble if we follow the Vim documentation (see: help xxd). Solution: Execute with the MC command and add the full path to the executable. @@ -534,7 +531,7 @@ Example: > $define SYS$PRINT HP5ANSI -You can print out whole buffer or just the marked area. +You can print out the whole buffer or just the marked area. More info under :help hardcopy (Zoltan Arpadffy, Vim 6.0c) @@ -561,16 +558,16 @@ will be confused after a window-resize. From 6.0 diff functionality has been implemented, but OpenVMS does not use GNU/Unix like diff therefore built in diff does not work. There is a simple solution to solve this anomaly. Install a Unix like diff -and Vim will work perfect in diff mode too. You just have to redefine your +and Vim will work perfectly in diff mode too. You just have to redefine your diff program as: > define /nolog diff <GNU_PATH>diff.exe Another, more sophisticated solution is described below (8.12 diff-mode) -There are some other programs as patch, make etc that may cause same problems. -At www.polarhome.com is possible to download an GNU package for Alpha and VAX -boxes that is meant to solve GNU problems on OpenVMS. -( Zoltan Arpadffy, Vim 6.1) +There are other programs such as patch, make etc that may cause the same +problems. At www.polarhome.com is possible to download an GNU package for +Alpha and VAX boxes that is meant to solve GNU problems on OpenVMS. +(Zoltan Arpadffy, Vim 6.1) 8.12 diff-mode @@ -632,7 +629,7 @@ You can now compare files in 4 ways: > 3. VIM diff: $ VIMDIFF <FILE1> <FILE2> 4. GVIM diff: $ GVIMDIFF <FILE1> <FILE2> -( Coen Engelbarts, Vim 6.1) +(Coen Engelbarts, Vim 6.1) 8.13 Allow '$' in C keywords @@ -653,35 +650,36 @@ Now word-based commands, e.g. the '*'-search-command and the CTRL-] tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in C keywords since ctags version 5.1.) -( Coen Engelbarts, Vim 6.1) +(Coen Engelbarts, Vim 6.1) 8.14 VIMTUTOR for beginners -It exits VIMTUTOR.COM DCL script that can help Vim beginners to learn/make -first steps with Vim on OpenVMS. Depending of binary distribution you may -start it with: > +The VIMTUTOR.COM DCL script can help Vim beginners to learn/make their first +steps with Vim on OpenVMS. Depending of binary distribution you may start it +with: > @vim:vimtutor (Thomas.R.Wyant III, Vim 6.1) -8.14 Slow start in console mode issue +8.16 Slow start in console mode issue As GUI/GTK Vim works equally well in console mode, many administrators deploy those executables system wide. Unfortunately, on a remote slow connections GUI/GTK executables behave rather -slow when user wants to run Vim just in the console mode - because of X environment detection timeout. +slow when user wants to run Vim just in the console mode - because of X +environment detection timeout. Luckily, there is a simple solution for that. Administrators need to deploy both GUI/GTK build and just console build executables, like below: > |- vim73 |----- doc - |----- syntax + |----- syntax vimrc (system rc files) gvimrc - gvim.exe (the renamed GUI or GTK built vim.exe) - vim.exe (the console only executable) + gvim.exe (the renamed GUI or GTK built vim.exe) + vim.exe (the console only executable) Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: > @@ -692,7 +690,7 @@ Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: > $ gv*im :== spawn/nowait/input=NLA0 mcr VIM:GVIM.EXE -g -GEOMETRY 80x40 -Like this, users that do not have X environment and want to use Vim just in +Like this, users that do not have X environment and want to use Vim just in console mode can avoid performance problems. (Zoltan Arpadffy, Vim 7.2) @@ -714,8 +712,8 @@ View of Cluster from system ID 11655 node: TOR +---------------------------------+ It is convenient to have a common VIM directory but execute different -executables. -There are more solutions for this problem: +executables. +There are several solutions for this problem: Solution 1. All executables in the same directory with different names This is easily done with the following script that can be added @@ -769,7 +767,7 @@ GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/ Version 7.3 - CTAGS 5.8 included - VMS compile warnings fixed - floating-point overflow warning corrected on VAX -- filepath completition corrected - too many chars were escaped in filename +- filepath completion corrected - too many chars were escaped in filename and shell commands - the following plugins are included into VMS runtime: genutils 2.4, multiselect 2.2, multvals 3.1, selectbuf 4.3, @@ -784,10 +782,10 @@ Version 7.3 Version 7.2 (2008 Aug 9) - VCF files write corrected - CTAGS 5.7 included -- corrected make_vms.mms (on VAX gave syntax error) +- corrected make_vms.mms (on VAX gave syntax error) Version 7.1 (2007 Jun 15) -- create TAGS file from menu +- create TAGS file from menu Version 7 (2006 May 8) - Improved low level char input (affects just console mode) diff --git a/en/os_win32.txt b/en/os_win32.txt index 92e85c77b..0452bfae0 100644 --- a/en/os_win32.txt +++ b/en/os_win32.txt @@ -1,4 +1,4 @@ -*os_win32.txt* For Vim version 7.3. Last change: 2011 May 28 +*os_win32.txt* For Vim version 7.3. Last change: 2011 Aug 14 VIM REFERENCE MANUAL by George Reilly @@ -316,11 +316,11 @@ A. When using :! to run an external command, you can run it with "start": > There are two optional arguments (see the next Q): /min the window will be minimized. /b" no console window will be opened - You can only one of these flags at a time. A second second one will be + You can use only one of these flags at a time. A second one will be treated as the start of the command. Q. How do I avoid getting a window for programs that I run asynchronously? -A. You have two possible solutions depending on what exactly do you want: +A. You have two possible solutions depending on what you want: 1) You may use the /min flag in order to run program in a minimized state with no other changes. It will work equally for console and GUI applications. @@ -328,7 +328,7 @@ A. You have two possible solutions depending on what exactly do you want: console window for them (GUI applications are not affected). But you should use this flag only if the application you run doesn't require any input. Otherwise it will get an EOF error because its input stream - (stdin) would be redirected to \\.\NUL (stdoud and stderr too). + (stdin) would be redirected to \\.\NUL (stdout and stderr too). Example for a console application, run Exuberant ctags: > :!start /min ctags -R . diff --git a/en/pattern.txt b/en/pattern.txt index 1c7feed20..9b7eacceb 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.3. Last change: 2011 May 25 +*pattern.txt* For Vim version 7.3. Last change: 2011 Jul 20 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/pi_vimball.txt b/en/pi_vimball.txt index 4d5a23716..73e3e6669 100644 --- a/en/pi_vimball.txt +++ b/en/pi_vimball.txt @@ -1,4 +1,4 @@ -*pi_vimball.txt* For Vim version 7.3. Last change: 2011 Apr 02 +*pi_vimball.txt* For Vim version 7.3. Last change: 2011 Aug 14 ---------------- Vimball Archiver @@ -16,6 +16,7 @@ Copyright: (c) 2004-2011 by Charles E. Campbell, Jr. *Vimball-copyright* 1. Contents *vba* *vimball* *vimball-contents* 1. Contents......................................: |vimball-contents| + 2. Vimball Introduction..........................: |vimball-intro| 3. Vimball Manual................................: |vimball-manual| MkVimball.....................................: |:MkVimball| UseVimball....................................: |:UseVimball| diff --git a/en/pi_zip.txt b/en/pi_zip.txt index 25242b863..13c604cfd 100644 --- a/en/pi_zip.txt +++ b/en/pi_zip.txt @@ -1,4 +1,4 @@ -*pi_zip.txt* For Vim version 7.3. Last change: 2011 May 24 +*pi_zip.txt* For Vim version 7.3. Last change: 2011 Aug 14 +====================+ | Zip File Interface | @@ -69,7 +69,6 @@ Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright* let g:loaded_zipPlugin= 1 let g:loaded_zip = 1 < -< ============================================================================== 3. Additional Extensions *zip-extension* diff --git a/en/starting.txt b/en/starting.txt index ba9083c2c..e390e4c8a 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.3. Last change: 2010 Sep 18 +*starting.txt* For Vim version 7.3. Last change: 2011 Jul 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -424,12 +424,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly. "-d con:30/10/600/150". But you can also use it to start editing on another device, e.g., AUX:. {not in Vi} *-f* --f Amiga: Do not restart Vim to open a new window. This - option should be used when Vim is started by a program that - will wait for the edit session to finish (e.g., mail or - readnews). See |amiga-window|. - - GUI: Do not disconnect from the program that started Vim. +-f GUI: Do not disconnect from the program that started Vim. 'f' stands for "foreground". If omitted, the GUI forks a new process and exits the current one. "-f" should be used when gvim is started by a program that will wait for the edit @@ -437,8 +432,14 @@ a slash. Thus "-R" means recovery and "-/R" readonly. never to fork, include 'f' in 'guioptions' in your |gvimrc|. Careful: You can use "-gf" to start the GUI in the foreground, but "-fg" is used to specify the foreground color. |gui-fork| + + Amiga: Do not restart Vim to open a new window. This + option should be used when Vim is started by a program that + will wait for the edit session to finish (e.g., mail or + readnews). See |amiga-window|. {not in Vi} + *--nofork* --nofork GUI: Do not fork. Same as |-f|. *-u* *E282* diff --git a/en/syntax.txt b/en/syntax.txt index ad3cccc61..6d14f617f 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.3. Last change: 2011 Jul 18 +*syntax.txt* For Vim version 7.3. Last change: 2011 Sep 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2605,8 +2605,41 @@ reduce this, the "sh_maxlines" internal variable can be set. Example: > The default is to use the twice sh_minlines. Set it to a smaller number to speed up displaying. The disadvantage is that highlight errors may appear. + *g:sh_isk* *g:sh_noisk* +The shell languages appear to let "." be part of words, commands, etc; +consequently it should be in the isk for sh.vim. As of v116 of syntax/sh.vim, +syntax/sh.vim will append the "." to |'iskeyword'| by default; you may control +this behavior with: > + let g:sh_isk = '..whatever characters you want as part of iskeyword' + let g:sh_noisk= 1 " otherwise, if this exists, the isk will NOT chg +< + *sh-embed* *sh-awk* + Sh: EMBEDDING LANGUAGES~ + +You may wish to embed languages into sh. I'll give an example courtesy of +Lorance Stinson on how to do this with awk as an example. Put the following +file into $HOME/.vim/after/syntax/sh/awkembed.vim: > + + " AWK Embedding: {{{1 + " ============== + " Shamelessly ripped from aspperl.vim by Aaron Hope. + if exists("b:current_syntax") + unlet b:current_syntax + endif + syn include @AWKScript syntax/awk.vim + syn region AWKScriptCode matchgroup=AWKCommand start=+[=\\]\@<!'+ skip=+\\'+ end=+'+ contains=@AWKScript contained + syn region AWKScriptEmbedded matchgroup=AWKCommand start=+\<awk\>+ skip=+\\$+ end=+[=\\]\@<!'+me=e-1 contains=@shIdList,@shExprList2 nextgroup=AWKScriptCode + syn cluster shCommandSubList add=AWKScriptEmbedded + hi def link AWKCommand Type +< +This code will then let the awk code in the single quotes: > + awk '...awk code here...' +be highlighted using the awk highlighting syntax. Clearly this may be +extended to other languages. -SPEEDUP (AspenTech plant simulator) *spup.vim* *ft-spup-syntax* + +SPEEDUP *spup.vim* *ft-spup-syntax* +(AspenTech plant simulator) The Speedup syntax file has some options: @@ -2689,6 +2722,8 @@ sections, subsections, etc are supported. Put > in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a modeline at the end of your LaTeX file: > % vim: fdm=syntax +If your system becomes too slow, then you might wish to look into > + https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7 < *tex-nospell* Tex: Don't Want Spell Checking In Comments? ~ @@ -2729,6 +2764,9 @@ If you have a slow computer, you may wish to reduce the values for > increase them. This primarily affects synchronizing (i.e. just what group, if any, is the text at the top of the screen supposed to be in?). +Another cause of slow highlighting is due to syntax-driven folding; see +|tex-folding| for a way around this. + *tex-morecommands* *tex-package* Tex: Want To Highlight More Commands? ~ diff --git a/en/undo.txt b/en/undo.txt index e9406e6aa..e9ed1b2cb 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 7.3. Last change: 2010 Dec 19 +*undo.txt* For Vim version 7.3. Last change: 2011 Aug 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -35,8 +35,10 @@ CTRL-R Redo [count] changes which were undone. {Vi: redraw :red[o] Redo one change which was undone. {Vi: no redo} *U* -U Undo all latest changes on one line. {Vi: while not - moved off of it} +U Undo all latest changes on one line, the line where + the latest change was made. |U| itself also counts as + a change, and thus |U| undoes a previous |U|. + {Vi: while not moved off of the last modified line} The last changes are remembered. You can use the undo and redo commands above to revert the text to how it was before each change. You can also apply the diff --git a/en/vi_diff.txt b/en/vi_diff.txt index 8e1f54347..8379667ff 100644 --- a/en/vi_diff.txt +++ b/en/vi_diff.txt @@ -1,4 +1,4 @@ -*vi_diff.txt* For Vim version 7.3. Last change: 2010 Oct 11 +*vi_diff.txt* For Vim version 7.3. Last change: 2011 Aug 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -88,8 +88,8 @@ Maximum display width Unix and Win32: 1024 characters, otherwise 255 characters Maximum lhs of a mapping 50 characters. Number of different highlighting types: over 30000 -Range of a Number variable: -2147483648 to 2147483647 (more on 64 bit - systems) +Range of a Number variable: -2147483648 to 2147483647 (might be more on 64 + bit systems) Maximum length of a line in a tags file: 512 bytes. Information for undo and text in registers is kept in memory, thus when making diff --git a/en/windows.txt b/en/windows.txt index ccb980114..31a0e2544 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 7.3. Last change: 2010 Aug 15 +*windows.txt* For Vim version 7.3. Last change: 2011 Aug 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -246,7 +246,7 @@ window will appear. These command modifiers can be combined to make a vertically split window occupy the full height. Example: > - :vertical topleft edit tags + :vertical topleft split tags Opens a vertically split, full-height window on the "tags" file at the far left of the Vim window. From 50ca6ef8d8dd6b725ac3b77d0405159270c74c4e Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Tue, 18 Oct 2011 21:51:53 +0900 Subject: [PATCH 370/783] clean --- en/vim_faq_help.txt | 7569 ------------------------------------------- 1 file changed, 7569 deletions(-) delete mode 100644 en/vim_faq_help.txt diff --git a/en/vim_faq_help.txt b/en/vim_faq_help.txt deleted file mode 100644 index edb077066..000000000 --- a/en/vim_faq_help.txt +++ /dev/null @@ -1,7569 +0,0 @@ -*vim_faq.txt* Frequently Asked Questions - -For instructions on installing this file, type > - :help add-local-help -inside Vim. - -Last updated on: 17 October 2004 - - VIM REFERENCE MANUAL by: Yegappan Lakshmanan - -Frequently Asked Questions *faq* *FAQ* - -This Vim FAQ is created from the questions and answers posted to the -vim@vim.org user mailing list and the comp.editors newsgroup. There are -several ways to solve a problem in Vim. This FAQ gives one of those several -possibilities. You can explore the other ways using the information and -links given in this FAQ. The credit for the answers in this FAQ goes to -Peppe, Benji, Charles Campbell and numerous others. - *faq-index* -INDEX - *faq-general-information* -SECTION 1 - GENERAL INFORMATION -|faq-1.1| What is Vim? -|faq-1.2| Who wrote Vim? -|faq-1.3| Is Vim compatible with Vi? -|faq-1.4| What are some of the improvements of Vim over Vi? -|faq-1.5| Is Vim free? - *faq-resources* -SECTION 2 - RESOURCES -|faq-2.1| Where can I learn more about Vim? -|faq-2.2| Is there a mailing list available? -|faq-2.3| Is there an archive available for the Vim mailing lists? -|faq-2.4| Where can I get the Vim user manual in HTML/PDF/PS format? -|faq-2.5| I have a "xyz" (some) problem with Vim. How do I determine it is a - problem with my setup or with Vim? -|faq-2.6| Where can I report bugs? -|faq-2.7| Where can the FAQ be found? -|faq-2.8| What if I don't find an answer in this FAQ? -|faq-2.9| I have a patch for implementing a Vim feature. Where do I send the - patch? -|faq-2.10| I have a Vim tip or developed a new Vim - syntax/indent/filetype/compiler plugin or developed a new script - or a colorscheme. Is there a public website where I can upload - this? - *faq-availability* -SECTION 3 - AVAILABILITY -|faq-3.1| What is the latest version of Vim? -|faq-3.2| Where can I find the latest version of Vim? -|faq-3.3| What platforms does it run on? -|faq-3.4| Where can I download the latest version of the Vim runtime files? - *faq-help* -SECTION 4 - HELP -|faq-4.1| How do I use the help files? -|faq-4.2| How do I search for a keyword in the Vim help files? -|faq-4.3| I am getting an error message E123, what did I do wrong? -|faq-4.4| Where can I read about the various modes in Vim? -|faq-4.5| How do I generate the Vim help tags file after adding a new Vim - help file? -|faq-4.6| Can I use compressed versions of the help files? - *faq-editing-a-file* -SECTION 5 - EDITING A FILE -|faq-5.1| How do I load a file in Vim for editing? -|faq-5.2| How do I save the current file in another name (save as) and edit - a new file? -|faq-5.3| How do I change the current directory to the directory of the - current file? -|faq-5.4| How do I write a file without the line feed (EOL) at the end of - the file? -|faq-5.5| How do I configure Vim to open a file at the last edited location? -|faq-5.6| When editing a file in Vim, which is being changed by an external - application, Vim opens a warning window (like the confirm dialog) - each time a change is detected. How do I disable this warning? -|faq-5.7| How do I edit a file whose name is under the cursor? -|faq-5.8| How do I reload/re-edit the current file? -|faq-5.9| How do I autosave a file periodically? -|faq-5.10| How do I open a file in read-only mode? - *faq-editing-multiple-files* -SECTION 6 - EDITING MULTIPLE FILES -|faq-6.1| How do I open multiple files at once from within Vim? -|faq-6.2| How do I switch between multiple files/buffers in Vim? -|faq-6.3| How do I open several files in Vim, with each file in a separate - window? -|faq-6.4| How do I configure Vim to autoload several files at once similar - to "work-sets" or "projects"? -|faq-6.5| Is it possible to open multiple top level windows in a single - instance of Vim similar to Nedit or emacs? -|faq-6.6| How do I browse/explore directories from within Vim? -|faq-6.7| How do I edit files over a network using ftp/scp/rcp/http? - *faq-backup* -SECTION 7 - BACKUP -|faq-7.1| When I edit and save files, Vim creates a file with the same name - as the original file and a "~" character at the end. How do I stop - Vim from creating this file (or) How do I disable the Vim backup - file feature? -|faq-7.2| How do I configure Vim to store all the backup files in a - particular directory? -|faq-7.3| When I save a file with Vim, the file permissions are changed. - How do I configure Vim to save a file without changing the file - permissions? - *faq-buffers* -SECTION 8 - BUFFERS -|faq-8.1| I have made some modifications to a buffer. How do I edit another - buffer without saving the modified buffer and also without losing - the modifications? -|faq-8.2| How do I configure Vim to auto-save a modified buffer when - switching to another buffer? -|faq-8.3| How do I replace the buffer in the current window with a blank - buffer? -|faq-8.4| Is there a keyboard shortcut to load a buffer by the buffer - number? -|faq-8.5| How do I open all the current buffers in separate windows? -|faq-8.6| How do I close (delete) a buffer without exiting Vim? -|faq-8.7| I have several buffers opened with ":e filename". How do I close - one of the buffers without exiting Vim? -|faq-8.8| When I use the command ":%bd" to delete all the buffers, not all - the buffers are deleted. Why? -|faq-8.9| How do I display the buffer number of the current buffer/file? -|faq-8.10| How do I delete a buffer without closing the window in which the - buffer is displayed? -|faq-8.11| How do I map the tab key to cycle through and open all the - buffers? - *faq-windows* -SECTION 9 - WINDOWS -|faq-9.1| What is the difference between a Vim window and a buffer? -|faq-9.2| How do I increase the width of a Vim window? -|faq-9.3| How do I zoom into or out of a window? -|faq-9.4| How do I execute an ex command on all the open buffers or open - windows or all the files in the argument list? - *faq-motion* -SECTION 10 - MOTION -|faq-10.1| How do I jump to the beginning (first line) or end (last line) of - a file? -|faq-10.2| In insert mode, when I press the <Esc> key to go to command mode, - the cursor moves one character to the left (except when the cursor - is on the first character of the line). Is it possible to change - this behavior to keep the cursor at the same column? -|faq-10.3| How do I configure Vim to maintain the horizontal cursor position - when scrolling with the <Page Up>, <Page Down>, etc keys? -|faq-10.4| Some lines in a file are more than the screen width and they are - all wrapped. When I use the j, k keys to move from one line to the - next, the cursor is moved to the next line in the file instead of - the next line on the screen. How do I move from one screen line to - the next? -|faq-10.5| What is the definition of a sentence, paragraph and section in - Vim? -|faq-10.6| How do I jump to beginning or end of a sentence, paragraph or a - section? -|faq-10.7| I have lines in a file that extends beyond the right extent of the - screen. How do I move the Vim view to the right to see the text - off the screen? -|faq-10.8| How do I scroll two or more buffers simultaneously? -|faq-10.9| When I use my arrow keys, Vim changes modes, inserts weird - characters in my document but doesn't move the cursor properly. - What's going on? -|faq-10.10| How do I configure Vim to move the cursor to the end of the - previous line, when the left arrow key is pressed and the cursor - is currently at the beginning of a line? -|faq-10.11| How do I configure Vim to stay only in insert mode (modeless - editing)? -|faq-10.12| How do I display some context lines when scrolling text? -|faq-10.13| How do I go back to previous cursor locations? - *faq-searching-text* -SECTION 11 - SEARCHING TEXT -|faq-11.1| After I searched for a text with a pattern, all the matched text - stays highlighted. How do I turn off the highlighting - temporarily/permanently? -|faq-11.2| How do I enter a carriage return character in a search pattern? -|faq-11.3| How do I search for the character ^M? -|faq-11.4| How can I search/replace characters that display as '~R', '~S', - etc.? -|faq-11.5| How do I highlight all the non-printable characters in a file? -|faq-11.6| How do I search for whole words in a file? -|faq-11.7| How do I search for the current word under the cursor? -|faq-11.8| How do I search for a word without regard to the case (uppercase - or lowercase)? -|faq-11.9| How do I search for words that occur twice consecutively? -|faq-11.10| How do I count the number of times a particular word occurs in a - buffer? -|faq-11.11| How do I place the cursor at the end of the matched word when - searching for a pattern? -|faq-11.12| How do I search for an empty line? -|faq-11.13| How do I search for a line containing only a single character? -|faq-11.14| How do I search and replace a string in multiple files? -|faq-11.15| I am using the ":s" substitute command in a mapping. When a - search for a pattern fails, the map terminates. I would like the - map to continue processing the next command, even if the - substitute command fails. How do I do this? -|faq-11.16| How do I search for the n-th occurrence of a character in a - line? -|faq-11.17| How do I replace a tab (or any other character) with a hard - return (newline) character? -|faq-11.18| How do I search for a character by its ASCII value? -|faq-11.19| How do I search for long lines? -|faq-11.20| How do I display all the lines in the current buffer that - contain a specified pattern? -|faq-11.21| How do I search for a text string that spans multiple lines? -|faq-11.22| How do I search for a pattern only within a range of lines - in a buffer? - *faq-changing-text* -SECTION 12 - CHANGING TEXT -|faq-12.1| How do I delete all the trailing white space characters (SPACE - and TAB) at the end of all the lines in a file? -|faq-12.2| How do I replace all the occurrences of multiple consecutive - space characters to a single space? -|faq-12.3| How do I reduce a range of empty lines into one line only? -|faq-12.4| How do I delete all blank lines in a file? How do I remove all - the lines containing only space characters? -|faq-12.5| How do I copy/yank the current word? -|faq-12.6| How do I yank text from one position to another position within a - line, without yanking the entire line? -|faq-12.7| When I yank some text into a register, how do I append the text - to the current contents of the register? -|faq-12.8| How do I yank a complete sentence that spans over more than one - line? -|faq-12.9| How do I yank all the lines containing a pattern into a buffer? -|faq-12.10| How do I delete all the lines in a file that does not contain a - pattern? -|faq-12.11| How do I add a line before each line with "pattern" in it? -|faq-12.12| Is there a way to operate on a line if the previous line - contains a particular pattern? -|faq-12.13| How do I execute a command on all the lines containing a - pattern? -|faq-12.14| Can I copy the character above the cursor to the current cursor - position? -|faq-12.15| How do I insert a blank line above/below the current line - without entering insert mode? -|faq-12.16| How do I insert the name of current file into the current - buffer? -|faq-12.17| How do I insert the contents of a Vim register into the current - buffer? -|faq-12.18| How do I move the cursor past the end of line and insert some - characters at some columns after the end of the line? -|faq-12.19| How to replace the word under the cursor (say: junk) with - "foojunkbar" in Vim? -|faq-12.20| How do I replace a particular text in all the files in a - directory? -|faq-12.21| I have some numbers in a file. How do I increment or decrement - the numbers in the file? -|faq-12.22| How do I reuse the last used search pattern in a ":substitute" - command? -|faq-12.23| How do I change the case of a string using the ":substitute" - command? -|faq-12.24| How do I enter characters that are not present in the keyboard? -|faq-12.25| Is there a command to remove any or all digraphs? -|faq-12.26| In insert mode, when I press the backspace key, it erases only - the characters entered in this instance of insert mode. How do I - erase previously entered characters in insert mode using the - backspace key? -|faq-12.27| I have a file which has lines longer than 72 characters - terminated with "+" and wrapped to the next line. How can I - quickly join the lines? -|faq-12.28| How do I paste characterwise yanked text into separate lines? -|faq-12.29| How do I change the case (uppercase, lowercase) of a word or - a character or a block of text? -|faq-12.30| How do I enter ASCII characters that are not present in the - keyboard? -|faq-12.31| How do I replace non-printable characters in a file? -|faq-12.32| How do I remove duplicate lines from a buffer? -|faq-12.33| How do I prefix all the lines in a file with the corresponding - line numbers? -|faq-12.34| How do I exchange (swap) two characters or words or lines? - *faq-completion-in-insert-mode* -SECTION 13 - COMPLETION IN INSERT MODE -|faq-13.1| How do I complete words or lines in insert mode? -|faq-13.2| How do I complete file names in insert mode? -|faq-13.3| I am using CTRL-P/CTRL-N to complete words in insert mode. How do - I complete words that occur after the just completed word? - *faq-text-formatting* -SECTION 14 - TEXT FORMATTING -|faq-14.1| How do I format a text paragraph so that a new line is inserted - at the end of each wrapped line? -|faq-14.2| How do I format long lines in a file so that each line contains - less than 'n' characters? -|faq-14.3| How do I join short lines to the form a paragraph? -|faq-14.4| How do I format bulleted and numbered lists? -|faq-14.5| How do I indent lines in insert mode? -|faq-14.6| How do I format/indent an entire file? -|faq-14.7| How do I increase or decrease the indentation of the current - line? -|faq-14.8| How do I indent a block/group of lines? -|faq-14.9| When I indent lines using the > or < key, the standard 8-tabstops - are used instead of the current 'tabstop' setting. Why? -|faq-14.10| How do I turn off the automatic indentation of text? -|faq-14.11| How do I configure Vim to automatically set the 'textwidth' - option to a particular value when I edit mails? -|faq-14.12| Is there a way to make Vim auto-magically break lines? -|faq-14.13| I am seeing a lot of ^M symbols in my file. I tried setting the - 'fileformat' option to 'dos' and then 'unix' and then 'mac'. - None of these helped. How can I hide these symbols? -|faq-14.14| When I paste some text into a Vim buffer from another - application, the alignment (indentation) of the new text is - messed up. How do I fix this? -|faq-14.15| When there is a very long wrapped line (wrap is "on") and a line - doesn't fit entirely on the screen it is not displayed at all. - There are blank lines beginning with '@' symbol instead of - wrapped line. If I scroll the screen to fit the line the '@' - symbols disappear and the line is displayed again. What Vim - setting control this behavior? -|faq-14.16| How do I convert all the tab characters in a file to space - characters? -|faq-14.17| What Vim options can I use to edit text that will later go to a - word processor? - *faq-visual-mode* -SECTION 15 - VISUAL MODE -|faq-15.1| How do I do rectangular block copying? -|faq-15.2| How do I delete or change a column of text in a file? -|faq-15.3| How do I apply an ex-command on a set of visually selected lines? -|faq-15.4| How do I execute an ex command on a column of text selected in - Visual block mode? -|faq-15.5| How do I select the entire file in visual mode? -|faq-15.6| When I visually select a set of lines and press the > key to - indent the selected lines, the visual mode ends. How can I - reselect the region for further operation? (or) How do I - re-select the last selected visual area again? -|faq-15.7| How do I jump to the beginning/end of a visually selected region? -|faq-15.8| When I select text with mouse and then press : to enter an ex - command, the selected text is replaced with the : character. How - do I execute an ex command on a text selected using the mouse - similar to the text selected using the visual mode? -|faq-15.9| When I select a block of text using the mouse, Vim goes into - selection mode instead of Visual mode. Why? - *faq-command-line-mode* -SECTION 16 - COMMAND-LINE MODE -|faq-16.1| How do I use the name of the current file in the command mode or - an ex command line? -|faq-16.2| How do I edit the text in the Vim command-line effectively? -|faq-16.3| How do I switch from Vi mode to Ex mode? -|faq-16.4| How do I copy the output from an ex-command into a buffer? -|faq-16.5| When I press the tab key to complete the name of a file in the - command mode, if there are more than one matching file names, - then Vim completes the first matching file name and displays a - list of all matching filenames. How do I configure Vim to only - display the list of all the matching filenames and not complete - the first one? -|faq-16.6| How do I copy text from a buffer to the command line and from the - command line to a buffer? -|faq-16.7| How do I put a command onto the command history without executing - it? -|faq-16.8| How do I increase the height of the command-line? - *faq-viminfo* -SECTION 17 - VIMINFO -|faq-17.1| When I invoke Vim, I get error messages about illegal characters - in the viminfo file. What should I do to get rid of these - messages? -|faq-17.2| How do I disable the viminfo feature? -|faq-17.3| How do I save and use Vim marks across Vim sessions? - *faq-remote-editing* -SECTION 18 - REMOTE EDITING -|faq-18.1| How do I open a file with existing instance of gvim? What - happened to the Vim 5.x OpenWithVim.exe and SendToVim.exe files? -|faq-18.2| How do I send a command to a Vim server to write all buffers to - disk? -|faq-18.3| Where can I get the documentation about the Vim remote server - functionality? - *faq-options* -SECTION 19 - OPTIONS -|faq-19.1| How do I configure Vim in a simple way? -|faq-19.2| How do I toggle the value of an option? -|faq-19.3| How do I set an option that affects only the current - buffer/window? -|faq-19.4| How do I use space characters for a Vim option value? -|faq-19.5| Can I add (embed) Vim option settings to the contents of a file? -|faq-19.6| How do I display the line numbers of all the lines in a file? -|faq-19.7| How do I change the width of the line numbers displayed using the - "number" option? -|faq-19.8| How do I display (view) all the invisible characters like space, - tabs and newlines in a file? -|faq-19.9| How do I configure Vim to always display the current line and - column number? -|faq-19.10| How do I display the current Vim mode? -|faq-19.11| How do I configure Vim to show pending/partial commands on the - status line? -|faq-19.12| How do I configure the Vim status line to display different - settings/values? -|faq-19.13| How do I configure Vim to display status line always? -|faq-19.14| How do I make a Vim setting persistent across different Vim - invocations/instances/sessions? -|faq-19.15| Why do I hear a beep (why does my window flash) about 1 second - after I hit the Escape key? -|faq-19.16| How do I make the 'c' and 's' commands display a '$' instead of - deleting the characters I'm changing? -|faq-19.17| How do I remove more than one flag using a single ":set" command - from a Vim option? - *faq-mapping-keys* -SECTION 20 - MAPPING KEYS -|faq-20.1| How do I know what a key is mapped to? -|faq-20.2| How do list all the user-defined key mappings? -|faq-20.3| How do I unmap a key? -|faq-20.4| I am not able to create a mapping for the <xxx> key. What is - wrong? -|faq-20.5| How do I map the numeric keypad keys? -|faq-20.6| How do I create a mapping that works only in visual mode? -|faq-20.7| In a Vim script, how do I know which keys to use for my mappings, - so that the mapped key will not collide with an already used key? -|faq-20.8| How do I map the escape key? -|faq-20.9| How do I map a key to perform nothing? -|faq-20.10| I want to use the Tab key to indent a block of text and - Shift-Tab key to unindent a block of text. How do I map the keys - to do this? This behavior is similar to textpad, visual studio, - etc. -|faq-20.11| In my mappings the special characters like <CR> are not - recognized. How can I configure Vim to recognize special - characters? -|faq-20.12| How do I use the '|' to separate multiple commands in a map? -|faq-20.13| If I have a mapping/abbreviation whose ending is the beginning of - another mapping/abbreviation, how do I keep the first from - expanding into the second one? -|faq-20.14| Why does it take a second or more for Vim to process a key, - sometimes when I press a key? -|faq-20.15| How do I map a key to run an external command using a visually - selected text? -|faq-20.16| How do I map the Ctrl-I key while still retaining the - functionality of the <Tab> key? - *faq-abbreviations* -SECTION 21 - ABBREVIATIONS -|faq-21.1| How do I auto correct misspelled words? -|faq-21.2| How do I create multi-line abbreviations? -|faq-21.3| When my abbreviations are expanded, an additional space character - is added at the end of the expanded text. How do I avoid this - character? -|faq-21.4| How do I insert the current date/time stamp into the file? -|faq-21.5| How do I prevent an abbreviation from expanding in insert mode? - *faq-record-and-playback* -SECTION 22 - RECORD AND PLAYBACK -|faq-22.1| How do I repeat an editing operation (insertion, deletion, paste, - etc)? -|faq-22.2| How I record and repeat a set of key sequences? -|faq-22.3| How do I edit/modify a recorded set of key sequences? -|faq-22.4| How do I write recorded key sequences to a file? -|faq-22.5| I am using register 0 to record my key sequences (i.e. q0 .... - q). In the recorded key sequences, I am yanking some text. After - the first replay of the recorded key sequence, I am no longer - able to play it back. - *faq-autocommands* -SECTION 23 - AUTOCOMMANDS -|faq-23.1| How do I execute a command when I try to modify a read-only file? -|faq-23.2| How do I execute a command every time when entering a buffer? -|faq-23.3| How do I execute a command every time when entering a window? -|faq-23.4| From an autocmd, how can I determine the name of the file or the - buffer number for which the autocommand is executed? -|faq-23.5| How do I automatically save all the changed buffers whenever Vim - loses focus? -|faq-23.6| How do I execute/run a function when Vim exits to do some - cleanup? - *faq-syntax-highlight* -SECTION 24 - SYNTAX HIGHLIGHT -|faq-24.1| How do I turn off/on syntax highlighting? -|faq-24.2| How do I change the background and foreground colors used by Vim? -|faq-24.3| How do I change the highlight colors to suit a dark/light - background? -|faq-24.4| How do I change the color of the line numbers displayed when the - ":set number" command is used? -|faq-24.5| How do I change the background color used for a Visually selected - block? -|faq-24.6| How do I highlight the special characters (tabs, trailing spaces, - end of line, etc) displayed by the 'list' option? -|faq-24.7| How do I specify a colorscheme in my .vimrc/.gvimrc file, so that - Vim uses the specified colorscheme everytime? -|faq-24.8| Vim syntax highlighting is broken. When I am editing a file, some - parts of the file is not syntax highlighted or syntax highlighted - incorrectly. -|faq-24.9| Is there a built-in function to syntax-highlight the - corresponding matching bracket? -|faq-24.10| How do I turn off the C comment syntax highlighting? -|faq-24.11| How do I add my own syntax extensions to the standard syntax - files supplied with Vim? -|faq-24.12| How do I replace a standard syntax file that comes with the Vim - distribution with my own syntax file? -|faq-24.13| How do I highlight all the characters after a particular column? -|faq-24.14| How do I convert a source file (.c, .h, etc) with the Vim syntax - highlighting into a HTML file? -|faq-24.15| How do I list the definition of all the current highlight - groups? - *faq-vim-script-writing* -SECTION 25 - VIM SCRIPT WRITING -|faq-25.1| How do I list the names of all the scripts sourced by Vim? -|faq-25.2| How do I debug Vim scripts? -|faq-25.3| How do I locate the script/plugin which sets a Vim option? -|faq-25.4| I am getting some error/informational messages from Vim (possibly - when running a script), the messages are cleared immediately. How - do I display the messages again? -|faq-25.5| How do I save and restore a plugin specific information across - Vim invocations? -|faq-25.6| How do I start insert mode from a Vim function? -|faq-25.7| How do I change the cursor position from within a Vim function? -|faq-25.8| How do I check the value of an environment variable in the .vimrc - file? -|faq-25.9| How do I check whether an environment variable is set or not from - a Vim function? -|faq-25.10| How do I call/use the Vim built-in functions? -|faq-25.11| I am using some normal mode commands in my Vim script. How do I - avoid using the user-defined mappings for these normal mode - commands and use the standard Vim functionality for these normal - mode commands? -|faq-25.12| How do I get a visually selected text into a Vim variable or - register? -|faq-25.13| I have some text in a Vim variable 'myvar'. I would like to use - this variable in a ":s" substitute command to replace a text - 'mytext'. How do I do this? -|faq-25.14| A Vim variable (bno) contains a buffer number. How do I use this - variable to open the corresponding buffer? -|faq-25.15| How do I store the value of a Vim option into a Vim variable? -|faq-25.16| I have copied and inserted some text into a buffer from a Vim - function. How do I indent the inserted text from the Vim - function? -|faq-25.17| How do I get the character under the cursor from a Vim script? -|faq-25.18| How do I get the name of the current file without the extension? -|faq-25.19| How do I get the basename of the current file? -|faq-25.20| How do I get the output from a Vim function into the current - buffer? -|faq-25.21| How do I call external programs from a Vim function? -|faq-25.22| How do I get the return status of a program executed using the - ":!" command? -|faq-25.23| How do I determine whether the current buffer is modified or - not? -|faq-25.24| I would like to use the carriage return character in a normal - command from a Vim script. How do I specify the carriage return - character? -|faq-25.25| How do I split long lines in a Vim script? -|faq-25.26| When I try to "execute" my function using the "execute 'echo - Myfunc()'" command, the cursor is moved to the top of the - current buffer. Why? -|faq-25.27| How do I source/execute the contents of a register? -|faq-25.28| After calling a Vim function or a mapping, when I press the 'u' - key to undo the last change, Vim undoes all the changes made by - the mapping/function. Why? -|faq-25.29| How can I call a function defined with s: (script local - function) from another script/plugin? -|faq-25.30| Is it possible to un-source a sourced script? In otherwords, - reverse all the commands executed by sourcing a script. - *faq-plugins* -SECTION 26 - PLUGINS -|faq-26.1| How do I set different options for different types of files? -|faq-26.2| I have downloaded a Vim plugin or a syntax file or a indent file, - or a color scheme or a filetype plugin from the web. Where should - I copy these files so that Vim will find them? -|faq-26.3| How do I extend an existing filetype plugin? -|faq-26.4| How do I turn off loading the Vim plugins? -|faq-26.5| How do I turn on/off loading the filetype plugins? -|faq-26.6| How do I override settings made in a file type plugin in the - global ftplugin directory for all the file types? -|faq-26.7| How do I disable the Vim directory browser plugin? -|faq-26.8| How do I set the filetype option for files with names matching a - particular pattern or depending on the file extension? - *faq-editing-program-files* -SECTION 27 - EDITING PROGRAM FILES -|faq-27.1| How do I enable automatic indentation for C/C++ files? -|faq-27.2| How do I configure the indentation used for C/C++ files? -|faq-27.3| How do I turn off the automatic indentation feature? -|faq-27.4| How do I change the number of space characters used for the - automatic indentation? -|faq-27.5| I am editing a C program using Vim. How do I display the - definition of a macro or a variable? -|faq-27.6| I am editing a C program using Vim. How do I jump to the - beginning or end of a code block from within the block? -|faq-27.7| Is there a way to turn off the "//" comment auto-insertion - behavior for C++ files? If I'm sitting on a line beginning with - "//", then I open a new line above or below it, Vim automatically - inserts new "//" chars. -|faq-27.8| How do I add the comment character '#' to a set of lines at the - beginning of each line? -|faq-27.9| How do I edit a header file with the same name as the - corresponding C source file? -|faq-27.10| How do I automatically insert comment leaders while typing - comments? - *faq-quickfix* -SECTION 28 - QUICKFIX -|faq-28.1| How do I build programs from Vim? -|faq-28.2| When I run the make command in Vim I get the errors listed as the - compiler compiles the program. When it finishes this list - disappears and I have to use the :clist command to see the error - message again. Is there any other way to see these error - messages? - *faq-folding* -SECTION 29 - FOLDING -|faq-29.1| How do I extend the Vim folding support? -|faq-29.2| When I enable folding by setting the 'foldmethod' option, all the - folds are closed. How do I prevent this? -|faq-29.3| How do I control how many folds will be opened when I start - editing a file? -|faq-29.4| How do I open and close folds using the mouse? -|faq-29.5| How do I change the text displayed for a closed fold? -|faq-29.6| How do I store and restore manually created folds across - different Vim invocations? - *faq-vim-with-external-applications* -SECTION 30 - VIM WITH EXTERNAL APPLICATIONS -|faq-30.1| Can I run a shell inside a Vim window? -|faq-30.2| How do I pass the word under the cursor to an external command? -|faq-30.3| How do I get the output of a shell command into a Vim buffer? -|faq-30.4| How do I pipe the contents of the current buffer to an external - command and replace the contents of the buffer with the output - from the command? -|faq-30.5| How do I sort a section of my file? -|faq-30.6| Is there a step-by-step guide for using Vim with slrn? -|faq-30.7| How do I use Vim as a pager? -|faq-30.8| How do I view Unix man pages from inside Vim? -|faq-30.9| How do I change the diff command used by the Vim diff support? -|faq-30.10| How do I use the Vim diff mode without folding? - *faq-gui-vim* -SECTION 31 - GUI VIM -|faq-31.1| How do I create buffer specific menus? -|faq-31.2| How do I change the font used by GUI Vim? -|faq-31.3| When starting GUI Vim, how do I specify the location of the GVIM - window? -|faq-31.4| How do I add a horizontal scrollbar in GVim? -|faq-31.5| How do I make the scrollbar appear in the left side by default? -|faq-31.6| How do I remove the Vim menubar? -|faq-31.7| I am using GUI Vim. When I press the ALT key and a letter, the - menu starting with that letter is selected. I don't want this - behavior as I want to map the ALT-<key> combination. How do I do - this? -|faq-31.8| Is it possible to scroll the text by dragging the scrollbar so - that the cursor stays in the original location? -|faq-31.9| How do I get gvim to start browsing files in a particular - directory when using the ":browse" command? -|faq-31.10| For some questions, like when a file is changed outside of Vim, - Vim displays a GUI dialog box. How do I replace this GUI dialog - box with a console dialog box? -|faq-31.11| I am trying to use GUI Vim as the editor for my xxx application. - When the xxx application launches GUI Vim to edit a file, the - control immediately returns to the xxx application. How do I - start GUI Vim, so that the control returns to the xxx - application only after I quit Vim? -|faq-31.12| Why does the "Select Font" dialog doesn't show all the fonts - installed in my system? -|faq-31.13| How do I use the mouse in Vim command-line mode? -|faq-31.14| When I use the middle mouse button to scroll text, it pastes the - last copied text. How do I disable this behavior? -|faq-31.15| How do I change the location and size of a GUI Vim window? - *faq-vim-on-unix* -SECTION 32 - VIM ON UNIX -|faq-32.1| I am running Vim in a xterm. When I press the CTRL-S key, Vim - freezes. What should I do now? -|faq-32.2| I am seeing weird screen update problems in Vim. What can I do to - solve this screen/display update problems? -|faq-32.3| I am using the terminal/console version of Vim. In insertmode, - When I press the backspace key, the character before the cursor - is not erased. How do I configure Vim to do this? -|faq-32.4| I am using Vim in a xterm. When I quit Vim, the screen contents - are restored back to the original contents. How do I disable - this? -|faq-32.5| When I start Vim, it takes quite a few seconds to start. How do I - minimize the startup time? -|faq-32.6| How can I make the cursor in gvim in unix stop blinking? -|faq-32.7| How do I change the menu font on GTK Vim? -|faq-32.8| How do I prevent <Ctrl-Z> from suspending Vim? -|faq-32.9| When I kill the xterm running Vim, the Vim process continues to - run and takes up a lot of CPU (99%) time. Why is this happening? -|faq-32.10| How do I get the Vim syntax highlighting to work in a Unix - terminal? - *faq-vim-on-ms-windows* -SECTION 33 - VIM ON MS-WINDOWS -|faq-33.1| In MS-Windows, CTRL-V doesn't start the blockwise visual mode. - What happened? -|faq-33.2| When I press the CTRL-Y key, it acts like the CTRL-R key. How do - I configure Vim to treat CTRL-Y as CTRL-Y? -|faq-33.3| How do I start GUI Vim in a maximized window always? -|faq-33.4| After doing some editing operations, Vim freezes. The cursor - becomes an empty rectangle. I am not able enter any characters. - What is happening? -|faq-33.5| I am using Windows XP, the display speed of maximized GVim is - very slow. What can I do to speed the display updates? -|faq-33.6| What are the recommended settings for using Vim with cygwin? -|faq-33.7| I am trying to use GNU diff with Vim diff mode. When I run the - diff from command line, it works. When I try to use the diff with - Vim it doesn't work. What should I do now? -|faq-33.8| Is it possible to use Vim as an external editor for MS-Windows - Outlook email client? -|faq-33.9| I am using Vim to edit HTML files. How do I start internet - explorer with the current file to preview the HTML file? -|faq-33.10| I would like to use Vim with Microsoft Visual Studio. How do I - do this? -|faq-33.11| Where do I place the _vimrc and _gvimrc files? -|faq-33.12| Everytime I save a file, Vim warns about the file being changed - outside of Vim. Why? - *faq-printing* -SECTION 34 - PRINTING -|faq-34.1| How do I print a file along with line numbers for all the lines? -|faq-34.2| How do I print a file with the Vim syntax highlighting colors? - *faq-building-vim-from-source* -SECTION 35 - BUILDING VIM FROM SOURCE -|faq-35.1| How do I build Vim from the sources on a Unix system? -|faq-35.2| How do I install Vim in my home directory or a directory other - than the default installation directory in Unix? -|faq-35.3| How do I build Vim from the sources on a MS-Windows system? -|faq-35.4| The Vim help, syntax, indent files are missing from my Vim - installation. How do I install these files? -|faq-35.5| I have built Vim from the source and installed the Vim package - using "make install". Do I need to keep the Vim source directory? -|faq-35.6| How do I determine the Vim features which are enabled at compile - time? -|faq-35.7| Can I build Vim without the GUI support? -|faq-35.8| When building Vim on a Unix system, I am getting "undefined - reference to term_set_winsize' error. How do I resolve this - error? -|faq-35.9| Vim configure keeps complaining about the lack of gtk-config - while trying to use GTK 2.03. This is correct, since in GTK 2 - they moved to using the generic pkg-config. I can get pkg-config - to list the various includes and libs for gtk, but for some - reason the configure script still isn't picking this up. - *faq-various* -SECTION 36 - VARIOUS -|faq-36.1| How do I edit binary files with Vim? -|faq-36.2| How do I disable the visual error flash and the error beep? -|faq-36.3| How do I display the ascii value of a character displayed in a - buffer? -|faq-36.4| Can I use zero as a count for a Vim command? -|faq-36.5| How do I disable the Vim welcome screen? -|faq-36.6| How do I avoid the "hit enter to continue" prompt? -|faq-36.7| How do I invoke Vim from command line to run a group of commands - on a group of files? -|faq-36.8| How do I use a normal mode command from insert mode without - leaving the insert mode? - *faq-unicode* -SECTION 37 - UNICODE -|faq-37.1| Is it possible to create Unicode files using Vim? -|faq-37.2| Which Vim settings are particularly important for editing Unicode - files? -|faq-37.3| What is the 'encoding' option? -|faq-37.4| How does Vim name the various Unicode encodings? -|faq-37.5| How does Vim specify the presence or absence of a byte-order - mark? -|faq-37.6| What is the 'fileencoding' option? -|faq-37.7| What is the 'fileencodings' option? -|faq-37.8| What is the 'termencoding' option? -|faq-37.9| What is the 'bomb' option? -|faq-37.10| Where can I find an example of a typical use of all these - options? -|faq-37.11| How can I insert Unicode characters into a file using Vim? -|faq-37.12| How can I know which digraphs are defined and for which - characters? - -============================================================================= - *faq-1* -SECTION 1 - GENERAL INFORMATION - - *faq-1.1* -1.1. What is Vim? - -Vim stands for Vi IMproved. It used to be Vi IMitation, but there are so -many improvements that a name change was appropriate. Vim is a text editor -which includes almost all the commands from the Unix program "Vi" and a lot -of new ones. All commands can be given with the keyboard. This has the -advantage that you can keep your fingers on the keyboard and your eyes on -the screen. For those who want it, there is mouse support and a GUI version -with scrollbars and menus. - -Vim is an editor, not a word processor. A word processor is used mainly to -do layout of text. This means positioning it, changing the way it appears -on output. More often than not, the final document is meant to be printed -or typeset or what have you, in order to present it in a pleasing manner to -others. Examples of word processors are Microsoft Word, WordPerfect, -FrameMaker, and AmiPro. - -An editor is simply for entering text. Any typesetting or laying out of the -document is secondary. With an editor, one's main concern is entering text, -not making the text look good. Examples of editors other than Vim and Vi -are Emacs, Crisp, Brief, and xedit. And Notepad. - -For more information, read > - - :help intro -< - *faq-1.2* -1.2. Who wrote Vim? - -Most of Vim was written by Bram Moolenar, with contributions from too many -people to mention here. See ":h credits" for a complete list. - -Vim is based on Stevie, worked on by Tim Thompson, Tony Andrews and G.R. -(Fred) Walter. - -For more information, read > - - :help author -< - *faq-1.3* -1.3. Is Vim compatible with Vi? - -Yes. Vim is very much compatible with Vi. You can use the "-C" -command-line flag to start Vim in Vi compatible mode: > - - $ vim -C -< -You can also use: > - - $ vim -u NONE -< -You can also set the 'compatible' option to enable Vi compatibility: > - - :set compatible -< -For more information, read > - - :help -C - :help 'compatible' - :help compatible-default -< - *faq-1.4* -1.4. What are some of the improvements of Vim over Vi? - -A short summary of the improvements of Vim over vi is listed below. The -list shows that Vim is a thoroughly modern and feature-packed editor. -Standard features of modern editors are implemented, and there is an equal -emphasis on general power-user features and features for programmers. - -Features to modernise Vi: - - Multi-level undo - Allows you to set the number of times you can undo your changes in a - file buffer. You can also redo an undone change. - Multiple windows and buffers - Each file can be displayed in its own window. You can move easily from - one window to another. Each file opened during a Vim session also has - an associated buffer and you can easily jump from one to the other. - Flexible insert mode - Vim allows you to use the arrow keys while in insert mode to move - around in the file. No more hitting <Esc>, moving around, then hitting - `i' or `a'. - Macros - Vim has a facility which allows you to record a sequence of typed - characters and repeat them any number of times. - Visual mode - You can highlight sections of text and execute operations on this - section of text only. - Block operators - Allow selection and highlighting of rectangular blocks of text in - order do execute specific operations on them. - Online help system - You can easily find help on any aspect of using Vim. Help is displayed - in its own window. - Command-line editing and history - History allows you to use the arrow keys to repeat or search for a - command that has already been typed. Allows you to match the beginning - of a command with the beginning of another similar command in the - history buffer. You can also edit a command to correct typos or change - a few values. - Command line completion. - Using the <Tab> key, you can complete commands, options, filenames, - etc. as needed. - Horizontal scrolling. - Long lines can be scrolled horizontally (with or without the GUI). - -Advanced user features: - - Text formatting. - With two keystrokes, you can format large sections of text, without - the use of external programs. - Word completion in Insert mode - Vim can complete words while you are typing, by matching the current - word with other similar words in the file. - Jump tags - Just like in an internet browser, you can jump back to previous parts - of the text you were editing, and then forward again. Your brain is - thus free to edit instead of navigate. - Automatic commands - Commands automatically executed when reading or writing a file, - jumping to another buffer, etc. - Viminfo - Allows storing of the command line history, marks and registers in a - file to be read on startup. Therefore, you can recall old search - patterns, macros, etc., in a new Vim session. - Mouse support - The mouse is supported in an xterm and for MS-DOS. It can be used to - position the cursor, select the visual area, paste a register, etc. - Graphical User Interface (GUI) - Just like any modern editor. Also, it's very easy to add your own - menus. Of course, console vim is still supported, and very widely - used. - Scripting language - Vim has a powerful scripting language so new commands can be created. - You can also use Perl, Python, TCL and Ruby to achieve the same thing! - Plugins - Extra functionality implemented via vim commands (regular commands or - the scripting language) that is automatically loaded on startup. - Examples: file explorer, network editing. More are being developed - and shared on VimOnline all the time. - Syntax highlighting for many programming languages - Syntax highlighting for hundreds of programming languages is - supported. Support for others can be added. - Extended regular expressions - Vim supports extended regular expressions which are similar in - functionality to that of perl regular expressions. - -Programming performance features: - - Edit-compile-edit speedup - You can compile within Vim and automatically jump to the location of - errors in the source code. - Indenting for many programming languages - C, C++, Java, Perl, XML and many other languages can be automatically - indented by vim while you type. Support for others can be added. - Searching for words in include files - Vim allows you to search for a match of the word under the cursor in - the current and included files. - Advance text objects - Instantly select, or delete, or copy, or indent, or format, or change - case, or ... to all the text between ( and ), or { and }, or < and >, - or [ and ]. Or a word, sentence, or paragraph. Very powerful. - Folding - Certain parts of the text can be "folded" away. The best example is - the body of a function. You can get an overview of the code, and then - open the fold of the function whose detail you need to see. - ctags and cscope integration - Using these two powerful programs, you can jump to a definition of a - function from a calling instance of it, and use other tricks to - navigate source code. - -For more information, read > - - :help vi-differences -< - *faq-1.5* -1.5. Is Vim free? - -Vim is Charityware. There are no restrictions on using or copying Vim, but -the author encourages you to make a donation to charity. A document -explaining how to do so is included in the distribution. - -For more information, read > - - :help copyright -< - -============================================================================= - *faq-2* -SECTION 2 - RESOURCES - - *faq-2.1* -2.1. Where can I learn more about Vim? - -You can post your Vim questions to the vim@vim.org mailing list. You can -post your Vim development related questions to the vim-dev@vim.org mailing -list. Vim does not have a newsgroup of its own. But the appropriate -newsgroup to post to is comp.editors. - -"VimOnline" is a web page that serves as a de facto homepage for vim, -although the main purpose of it is to gather tips and scripts from -everywhere. Get involved! The URL is vim.sourceforge.net or vim.sf.net. - -Finally, read the Vi FAQ: > - - http://www.faqs.org/faqs/editor-faq/vi/part1/index.html -< -For more information, read > - - :help mail-list - :help internet -< - *faq-2.2* -2.2. Is there a mailing list available? - -There are several: > - - NAME DESCRIPTION -< - vim-announce Announcements of new releases - vim General discussion - vim-dev Patches, bug reports, development discussions - vim-mac Macintosh discussion - vim-fr General discussion in French - vim-multibyte Multibyte development issues - vim-vms Development on VMS - -Of these, only vim and vim-dev are of general interest. vim-announce is -read-only to most people, and its messages are sent to the other lists as -well. The remaining four are very low volume. - -To subscribe: send an email to <NAME>-subscribe@vim.org -To unsubscribe: send an email to <NAME>-unsubscribe@vim.org -To get help: send an email to <NAME>-help@vim.org - - *faq-2.3* -2.3. Is there an archive available for the Vim mailing lists? - -Yes. Visit http://www.yahoogroups.com/list/<name>, where name is one of: -vimannounce, vim, vimdev, vim-fr, vim-mac, vim-multibyte, vim-vms. - -Alternatively, visit www.gmane.org to find out about GMANE, which allows -you to access the mailing lists as though they were newsgroups. This -offers some convenience to those who wish to browse the history or casually -observe the current threads. - - *faq-2.4* -2.4. Where can I get the Vim user manual in HTML/PDF/PS format? - -You can download the HTML/PDF/PS format of the Vim user manual from: > - - http://vimdoc.sourceforge.net/ -< - *faq-2.5* -2.5. I have a "xyz" (some) problem with Vim. How do I determine it is a - problem with my setup or with Vim? - -First, you have to determine that the problem is not with your .vimrc or -.gvimrc or system vimrc or your personal plugin files or in any of your -setup files. To do this, use > - - $ vim -N -u NONE -U NONE -< -This will start Vim in 'nocompatible" mode and will not source your -personal .vimrc and .gvimrc files. It will also not load your personal -plugins. In this invocation of Vim, try to reproduce your problem. If you -are not able to reproduce the problem, then the problem is related to some -setting in one of your local setup files or plugins. To locate the problem -in your setup files, you have to use trial and error and try commenting out -the lines in your setup files one by one. You can also use the -V command -line argument to Vim to get more debug information and analyze the problem: > - - $ vim -V2 -< -You can increase the value passed to the -V argument to get more debug -information. - -For more information, read > - - :help -u - :help -U - :help -N - :help -V - :help 'verbose' - :help :verbose - :help set-verbose -< - *faq-2.6* -2.6. Where can I report bugs? - -First collect the required information using the following command: > - - :source $VIMRUNTIME/bugreport.vim -< -Now send the resulting text from the above command to the bugs@vim.org -e-mail address. - -The Vim Development mailing list (see above) is a good place to discuss -general bugs. If the bug you find is with syntax highlighting or some -other "added feature" (i.e. not directly programmed into vim), attempt to -inform the maintainer of that feature. - -For more information, read > - - :help bug-reports -< - *faq-2.7* -2.7. Where can the FAQ be found? - -The FAQ can be found at VimOnline (vim.sf.net). Other places will be -decided in the future. - - *faq-2.8* -2.8. What if I don't find an answer in this FAQ? - -This FAQ covers mainly Vim-specific questions. You may find more -information suitable for most Vi clones by reading the Vi FAQ. It is posted -regularly on comp.editors. You can also find a copy at > - - http://www.faqs.org/faqs/editor-faq/vi/part1/index.html -< -Also, since Vim has gathered so many features in the last few years, -successfully documenting the frequently asked questions here is a -near-impossible task. To make it possible, please email the maintainer if -you have a good question. A good question is one that you've tried to -answer yourself (remember, Vim has great documentation) but struggled. - - *faq-2.9* -2.9. I have a patch for implementing a Vim feature. Where can I send this - patch? - -You can send your patches to the Vim developer mailing list -vim-dev@vim.org. - -For more information, read > - - :help vim-dev -< - *faq-2.10* -2.10. I have a Vim tip or developed a new Vim - syntax/indent/filetype/compiler plugin or developed a new script or a - colorscheme. Is there a public website where I can upload this? - -Yes. You can use the Vim Online website to upload your plugins/scripts, -colorschemes, tips, etc. The site is at http://vim.sourceforge.net - -============================================================================= - *faq-3* -SECTION 3 - AVAILABILITY - - *faq-3.1* -3.1. What is the latest version of Vim? - -The latest version of Vim is 6.3 released on 8th June 2004. - -The release-history of different versions of Vim is below: - -Version 6.3 8th June 2004 -Version 6.2 1st June 2003 -Version 6.1 24th March 2002 -Version 6.0 27th September, 2001 -Version 5.8 31st May, 2001 -Version 5.7 24th June, 2000 -Version 5.6 16th January, 2000 -Version 5.5 21st September, 1999 -Version 5.4 26th July, 1999 -Version 5.3 31st August, 1998 -Version 5.2 24th August, 1998 -Version 5.1 7th April, 1998 -Version 5.0 19th February, 1998 -Version 4.6 13th March,1997 -Version 4.5 17th October, 1996 -Version 4.2 5th July,1996 -Version 4.0 21st May, 1996 -Version 3.0 16th August, 1994 -Version 2.0 21st December, 1993 -Version 1.27 23rd April, 1993 -Version 1.17 21st April, 1992 - - *faq-3.2* -3.2. Where can I find the latest version of Vim? - -You can download the sources for the latest version of Vim from the -VimOnline website. The URL for this site is -http://vim.sourceforge.net/download.php. - - *faq-3.3* -3.3. What platforms does it run on? - -All Unix platforms. -All Windows platforms. -Amiga, Atari, BeOS, DOS, Macintosh, MachTen, OS/2, RiscOS, VMS. - - *faq-3.4* -3.4. Where can I download the latest version of the Vim runtime files? - -You can download the latest version of the Vim runtime files (syntax files, -filetype plugins, compiler files, color schemes, documentation, indentation -files and keymaps) from the Vim ftp site from the -ftp://ftp.vim.org/pub/vim/runtime directory. - -============================================================================= - *faq-4* -SECTION 4 - HELP - - *faq-4.1* -4.1. How do I use the help files? - -Help can be found for all functions of Vim. In order to use it, use the -":help" command. This will bring you to the main help page. On that first -page, you will find explanations on how to move around. Basically, you move -around in the help pages the same way you would in a read-only document. -You can jump to specific subjects by using tags. This can be done in two -ways: - - * Use the "<Ctrl-]>" command while standing on the name of a command or - option. This only works when the tag is a keyword. "<Ctrl-LeftMouse>" - and "g<LeftMouse>" work just like "<Ctrl-]>". - * use the ":tag <subject>" command. This works with all characters. - -Use "<Ctrl-T>" to jump back to previous positions in the help files. Use -":q" to close the help window. - -If you want to jump to a specific subject on the help pages, use ":help -{subject}". If you don't know what to look for, try ":help index" to get a -list of all available subjects. Use the standard search keys to locate the -information you want. You can abbreviate the ":help" command as ":h". - -For more information, read > - - :help online-help -< - *faq-4.2* -4.2. How do I search for a keyword in the Vim help files? - -You can press the CTRL-D key after typing the help keyword to get a list of -all the help keywords containing the supplied pattern. You can also use the -meta characters like *, \+, etc to specify the help search pattern: > - - :help init<C-D> - :help str*()<C-D> - :help '*indent<C-D> -< -You can press the Tab key after typing a partial help keyword to expand to -the matching keyword. You can continue to press the Tab key to see other -keyword matches. - -From the help window, you can use the ":tag" command to search for -keywords. For example, > - - :tselect /window -< -This command will list all the help keywords containing the text "window". -You can select one from the list and jump to it. - -You can use the ":helpgrep" command to search for the given text in all the -help files. The quickfix window will be opened with all the matching lines. - -For more information, read > - - :help c_CTRL-D - :help c_<Tab> - :help :tselect - :help :help - :help :helpgrep -< - *faq-4.3* -4.3. I am getting an error message E123, what did I do wrong? - -You can get more information about the error and the error message using: > - - :help E123 -< -For more information, read > - - :help error-messages -< - *faq-4.4* -4.4. Where can I read about the various modes in Vim? - -You can get information about the different modes in Vim by reading > - - :help vim-modes -< - *faq-4.5* -4.5. How do I generate the Vim help tags file after adding a new Vim help - file? - -You can use the ":helptags" command to regenerate the Vim help tag file. -For example: > - - :cd $VIMRUNTIME/doc - :helptags . -< -For more information, read > - - :help :helptags - :help add-local-help -< - *faq-4.6* -4.6. Can I use compressed versions of the help files? - -Yes. You can compress the help files and still be able to view them with -Vim. This makes accessing the help files a bit slower and requires the -"gzip" utility. Follow these steps to compress and use the Vim help files: - -- Compress all the help files using "gzip ddoc/*.txt". - -- Edit the "doc/tags" file and change the "".txt" to ".txt.gz" using - :%s=\(\t.*\.txt\)\t=\1.gz\t= - -- Add the following line to your vimrc: - set helpfile={dirname}/help.txt.gz - -Where {dirname} is the directory where the help files are. The gzip.vim -plugin supplied with the standard Vim distribution will take care of -decompressing the files. You must make sure that $VIMRUNTIME is set to -where the other Vim files are, when they are not in the same location as -the compressed "doc" directory. - -For more information, read > - - :help gzip-helpfile - :help 'helpfile' - :help gzip - :help $VIMRUNTIME -< - -============================================================================= - *faq-5* -SECTION 5 - EDITING A FILE - - *faq-5.1* -5.1. How do I load a file in Vim for editing? - -There are several ways to load a file for editing. The simplest is to -use the ":e" (:edit) command: > - - :e <filename> -< -You can also use the ":n" (:next) command to load files into Vim: > - - :n <filename(s)> -< -You can also use the ":args" command to load files into Vim: > - - :args <filename(s)> -< -For more information, read > - - :help usr_07 - :help edit-files - :help :edit - :help :next_f - :help :args_f -< - *faq-5.2* -5.2. How do I save the current file in another name (save as) and edit a - new file? - -You can use the ":saveas" command to save the current file in another name: > - - :saveas <newfilename> -< -Alternatively, you can also use the following commands: > - - :w <newfilename> - :edit # -< -You can also use the ":file" command, followed by ":w" command: > - - :file <newfilename> - :w -< -For more information, read > - - :help 07.7 - :help :saveas - :help :file_f - :help :w -< - *faq-5.3* -5.3. How do I change the current directory to the directory of the current - file? - -You can use the following command to change the current directory to the -directory of the current file: > - - :cd %:p:h -< -To automatically change the current directory to the directory of the -current file, use the following autocmd: > - - :autocmd BufEnter * cd %:p:h -< -For more information, read > - - :help :cd - :help :lcd - :help filename-modifiers - :help autocommand -< - *faq-5.4* -5.4. How do I write a file without the line feed (EOL) at the end of the - file? - -You can turn off the 'eol' option and turn on the 'binary' option to write -a file without the EOL at the end of the file: > - - :set binary - :set noeol - :w -< -For more information, read > - - :help 'endofline' - :help 'binary' - :help 23.4 -< - *faq-5.5* -5.5. How do I configure Vim to open a file at the last edited location? - -Vim stores the cursor position of the last edited location for each buffer -in the '"' register. You can use the following autocmd in your .vimrc or -.gvimrc file to open a file at the last edited location: > - - au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | - \ exe "normal g'\"" | endif -< -For more information, read > - - :help '" - :help last-position-jump -< - *faq-5.6* -5.6. When editing a file in Vim, which is being changed by an external - application, Vim opens a warning window (like the confirm dialog) each - time a change is detected. How do I disable this warning? - -You can set the Vim 'autoread' option to automatically read the file again -when it is changed outside of Vim: > - - :set autoread -< -You can also use the following autocommand: > - - autocmd FileChangedShell * - \ echohl WarningMsg | - \ echo "File has been changed outside of vim." | - \ echohl None -< -For more information, read > - - :help 'autoread' - :help FileChangedShell - :help timestamp - :help :checktime -< - *faq-5.7* -5.7. How do I edit a file whose name is under the cursor? - -You can use the gf command to edit a file whose name is under the cursor. -You can use the CTRL-W f command to edit the file in a new window. - -For more information, read > - - :help gf - :help CTRL-W_f - :help 'isfname' - :help 'path' - :help 'suffixesadd' - :help 'includeexpr' -< - *faq-5.8* -5.8. How do I reload/re-edit the current file? - -You can use the ":edit" command, without specifying a file name, to reload -the current file. If you have made modifications to the file, you can use -":edit!" to force the reload of the current file (you will lose your -modifications). - -For more information, read > - - :help :edit - :help :edit! - :help 'confirm' -< - *faq-5.9* -5.9. How do I autosave a file periodically? - -Vim doesn't support auto-saving a file periodically. - -For more information, read > - - :help 'updatetime' - :help CursorHold - :help swap-file -< - *faq-5.10* -5.10. How do I open a file in read-only mode? - -You can open a file in read-only mode using the ":view" command: > - - :view <filename> -< -This command sets the 'readonly' option for the opened buffer. You can also -use the "-R" command-line option to open a file in read-only mode: > - - $ vim -R <filename> -< -You can also use the symbolic link executable "view" to open a file in -read-only mode from the command-line: > - - $ view <filename> -< -For more information, read > - - :help 07.6 - :help 'readonly' - :help 'modifiable' - :help :view - :help :sview - :help view - :help -R - :help -M -< - -============================================================================= - *faq-6* -SECTION 6 - EDITING MULTIPLE FILES - - *faq-6.1* -6.1. How do I open multiple files at once from within Vim? - -There are several ways to open multiple files at once from within Vim. You -can use the ":next" command to specify a group of files: > - - :next f1.txt f2.txt - :next *.c -< -You can use the :args command to specify a group of files as arguments: > - - :args f1.txt f2.txt - :args *.c -< -After loading the files, you can use the ":next" and ":prev" command to -switch between the files. - -For more information, read > - - :help 07.2 - :help :next - :help :args_f - :help argument-list -< - *faq-6.2* -6.2. How do I switch between multiple files/buffers in Vim? - -There are several ways to switch between multiple files. You can use the -":buffer" command to switch between multiple files. For example, > - - :buffer file1 - :buffer file2 -< -You can also use the CTRL-^ key to switch between buffers. By specifying a -count before pressing the key, you can edit the buffer with that number. -Without the count, you can edit the alternate buffer by pressing CTRL-^ - -You can also use the ":e #" command to edit a particular buffer: > - - :e #5 -< -For more information, read > - - :help edit-files - :help :buffer - :help CTRL-^ - :help alternate-file - :help 22.4 - :help 07.3 -< - *faq-6.3* -6.3. How do I open several files in Vim, with each file in a separate - window? - -You can use the -o and -O Vim command line arguments to open multiple files -in separate horizontally or vertically split Vim windows. For example: > - - $ vim -o3 f1.txt f2.txt f3.txt -< -The above command will open the files f1.txt, f2.txt and f3.txt in three -separate horizontally split Vim windows. > - - $ vim -O3 f1.txt f2.txt f3.txt -< -The above command will open the files f1.txt, f2.txt and f3.txt in three -separate vertically split Vim windows. - -For more information, read > - - :help -o - :help -O - :help startup-options -< - *faq-6.4* -6.4. How do I configure Vim to autoload several files at once similar to - "work-sets" or "projects"? - -You can use the ":mksession" and the ":mkview" commands to autoload several -files in Vim. - -The ":mksession" command creates a Vim script that restores the current -editing session. You can use the ":source" command to source the file -produced by the mksession command. - -The ":mkview" command creates a Vim script that restores the contents of -the current window. You can use the ":loadview" command to load the view -for the current file. - -For more information, read > - - :help 21.4 - :help 21.5 - :help views-sessions - :help 'sessionoptions' - :help :mksession - :help :source - :help v:this_session - :help :mkview - :help :loadview - :help 'viewdir' - :help buffers -< - *faq-6.5* -6.5. Is it possible to open multiple top level windows in a single instance - of Vim similar to Nedit or emacs? - -No. It is currently not possible to open multiple top-level windows in a -single instance of Vim. This feature is in the todo list. - - *faq-6.6* -6.6. How do I browse/explore directories from within Vim? - -You can use the explorer.vim plugin, supplied with the standard Vim -installation, to browse/explore directories from within Vim. You can start -the file explorer using one of the following commands: > - - :e <directory> - :Explore - :SExplore -< -From the file explorer, you can browse through directories, rename, delete -and edit files. - -For more information, read > - - :help file-explorer - :help 22.1 -< - *faq-6.7* -6.7. How do I edit files over a network using ftp/scp/rcp/http? - -You can use the netrw.vim plugin, supplied with the standard Vim package, -to edit files over a network using ftp/scp/rcp/http. Using this plugin, Vim -will transparently load and save the files over ftp/scp/rcp/http. For -example, to edit a file over ftp, you can use the following command: > - - $ vim ftp://machine/path -< -For more information, read > - - :help netrw.vim -< - -============================================================================= - *faq-7* -SECTION 7 - BACKUP - - *faq-7.1* -7.1. When I edit and save files, Vim creates a file with the same name as - the original file and a "~" character at the end. How do I stop Vim - from creating this file? (or) How do I disable the Vim backup file - feature? - -You have set the 'backup' option, so Vim creates a backup file when saving -the original file. You can stop Vim from creating the backup file, by -clearing the option: > - - :set nobackup -< -Note that, by default this option is turned off. You have explicitly -enabled the 'backup' option in one of the initialization files. You may -also have to turn off the 'writebackup' option: > - - :set nowritebackup -< -For more information, read > - - :help 07.4 - :help backup-table - :help 'backup' - :help 'writebackup' - :help 'backupskip' - :help 'backupdir' - :help 'backupext' - :help 'backupcopy' - :help backup -< - *faq-7.2* -7.2. How do I configure Vim to store all the backup files in a particular - directory? - -You can configure Vim to store all the backup files in a particular -directory using the 'backupdir' option. For example, to store all the -backup files in the ~/backup directory, you can use the following command: > - - :set backupdir=~/backup -< -For more information, read > - - :help 07.4 - :help 'backupdir' - :help backup -< - *faq-7.3* -7.3. When I save a file with Vim, the file permissions are changed. - How do I configure Vim to save a file without changing the file - permissions? - -This may happen, if the 'backupcopy' option is set to 'no' or 'auto'. Note -that the default value for this option is set in such a way that this will -correctly work in most of the cases. If the default doesn't work for you, -try setting the 'backupcopy' option to 'yes' to keep the file permission -when saving a file: > - - :set backupcopy=yes -< -This applies, only if you have configured Vim to make a backup whenever -overwriting a file. By default, Vim will not backup files. - -For more information, read > - - :help 'backupcopy' - :help backup - :help 'backup' - :help 'writebackup' -< - -============================================================================= - *faq-8* -SECTION 8 - BUFFERS - - *faq-8.1* -8.1. I have made some modifications to a buffer. How do I edit another - buffer without saving the modified buffer and also without losing the - modifications? - -You can set the 'hidden' option to edit a file without losing modifications -to the current file: > - - :set hidden -< -By setting the 'hidden' option, you can also save the modification history -(undo-history) for the buffer. Otherwise, as you switch between files, the -undo-history will be lost. - -For more information, read > - - :help 'hidden' - :help hidden-quit - :help :hide -< - *faq-8.2* -8.2. How do I configure Vim to auto-save a modified buffer when switching - to another buffer? - -You can set the 'autowrite' option to auto-save a modified buffer when -switching to another buffer: > - - :set autowrite -< -For more information, read > - - :help 'autowrite' - :help 'autowriteall' - :help 'hidden' -< - *faq-8.3* -8.3. How do I replace the buffer in the current window with a blank buffer? - -You can use the ":enew" command to load an empty buffer in place of the -buffer in the current window. - -For more information, read > - - :help :enew -< - *faq-8.4* -8.4. Is there a keyboard shortcut to load a buffer by the buffer number? - -You can use the CTRL-^ command to load a buffer by specifying the buffer -number. For example, to load buffer number 5, you have to use the 5 CTRL-^ -command. - -For more information, read > - - :help CTRL-^ -< - *faq-8.5* -8.5. How do I open all the current buffers in separate windows? - -You can use the ":ball" or ":sball" commands to open all the buffers -in the buffer list: > - - :ball -< -For more information, read > - - :help :ball -< - *faq-8.6* -8.6. How do I close (delete) a buffer without exiting Vim? - -You can use the ":bdelete" command to delete a buffer without exiting Vim. -For example: > - - :bdelete file1 -< -For more information, read > - - :help :bdelete - :help :bwipeout -< - *faq-8.7* -8.7. I have several buffers opened with :e filename. How do I close one of - the buffers without exiting Vim? - -You can use the ":bdelete <buffername>" command to close the buffer. - -For more information, read > - - :help :bdelelete - :help :bunload - :help :bwipeout -< - *faq-8.8* -8.8. When I use the command ":%bd" to delete all the buffers, not all the - buffers are deleted. Why? - -In the ":%bd" command, the '%' range will be replaced with the starting and -ending line numbers in the current buffer. Instead of using '%' as the -range, you should specify numbers for the range. For example, to delete all -the buffers, you can use the command ":1,9999bd". - -For more information, read > - - :help :bd -< - *faq-8.9* -8.9. How do I display the buffer number of the current buffer/file? - -You can use 2<CTRL-G> command to display the buffer number for the current -file/buffer. Note the use of count before the CTRL-G command. If the count -is greater than 1, then Vim will display the buffer number. - -You can also use the following command to display the current buffer -number: > - - :echo bufnr("%") -< -You can also include the "%n" field to the 'statusline' option to display -the current buffer number on the statusline. - -For more information read, > - - :help CTRL-G - :help bufnr() - :help :echo - :help 'statusline' -< - *faq-8.10* -8.10. How do I delete a buffer without closing the window in which the - buffer is displayed? - -You can use the following command to open the next buffer and delete -the current buffer. > - - :bnext | bdelete # -< -For more information read, > - - :help :bnext - :help :bdelete - :help :buffers -< - *faq-8.11* -8.11. How do I map the tab key to cycle through and open all the buffers? - -You can use the following two map commands, to map the CTRL-Tab key to open -the next buffer and the CTRL-SHIFT-Tab key to open the previous buffer: > - - :nnoremap <C-Tab> :bnext<CR> - :nnoremap <S-C-Tab> :bprevious<CR> -< -For more information read, > - - :help :bnext - :help :previous -< - -============================================================================= - *faq-9* -SECTION 9 - WINDOWS - - *faq-9.1* -9.1. What is the difference between a Vim window and a buffer? - -A Vim buffer is a file loaded into memory for editing. The original file -remains unchanged until you write the buffer to the file. A Vim window is a -viewport onto a buffer. You can use multiple windows on one buffer or -several windows on different buffers. - -For more information, read > - - :help usr_08.txt - :help 22.4 - :help windows-intro - :help Q_wi -< - *faq-9.2* -9.2. How do I increase the width of a Vim window? - -You can increase the width of a Vim window using one of the following -commands: > - - :vert resize +N - :vert resize -N - :vert resize N -< -You can also use CTRL-W < or CTRL-W > or CTRL-W | commands. - -For more information, read > - - :help vertical-resize - :help CTRL-W_> - :help CTRL-W_< - :help window-resize -< - *faq-9.3* -9.3. How do I zoom into or out of a window? - -You can zoom into a window (close all the windows except the current -window) using the "CTRL-W o" command or the ":only" ex command. - -You can use the "CTRL-W _" command or the ":resize" ex command to increase -the current window height to the highest possible without closing other -windows. - -You can use the "CTRL-W |" command or the ":vertical resize" ex command to -increase the current window width to the highest possible without closing -other windows. - -You can use the "CTRL-W =" command to make the height and width of all the -windows equal. - -You can also set the following options to get better results with the above -commands: - -Method 1: -Set the 'winminheight' option to 0: > - - :set winminheight=0 -< -By default, this option is set to 1. -This option controls the minimum height of an inactive window (when it is -not the current window). When the 'winminheight' option is set to 0, only -the status line will be displayed for inactive windows. - -Method 2: -Set the 'noequalalways' option and set the 'winheight' option to a large -value (like 99999): > - - :set noequalalways - :set winheight=99999 -< -Now, the active window will always open to its maximum size, while the -other windows will stay present, but shrunken to just a status line. - -With any of the above mentioned methods, you cannot restore the window -layout after zooming into a window. If you want to restore the Vim window -layout after zooming into a window, you can use the ZoomWin plugin. You can -download this plugin from the Vim online website at: - -http://vim.sourceforge.net/scripts/script.php?script_id=508 - -For more information, read > - - :help CTRL-W_o - :help window-resize - :help 'winminheight' - :help 'equalalways' - :help 'winheight' - :help 08.3 -< - *faq-9.4* -9.4. How do I execute an ex command on all the open buffers or open windows - or all the files in the argument list? - -You can use the ":bufdo" command to execute an ex command on all the open -buffers. You can use the ":windo" command to execute an ex command on all -the open windows. You can use the ":argdo" command to execute an ex -command on all the files specified in the argument list. - -For more information, read > - - :help :windo - :help :bufdo - :help :argdo - :help 26.3 -< - -============================================================================= - *faq-10* -SECTION 10 - MOTION - - *faq-10.1* -10.1. How do I jump to the beginning (first line) or end (last line) of a - file? - -You can use 'G' command to jump to the last line in the file and the 'gg' -command to jump to the first line in the file. - -For more information, read > - - :help G - :help gg -< - *faq-10.2* -10.2. In insert mode, when I press the <Esc> key to go to command mode, the - cursor moves one character to the left (except when the cursor is on - the first character of the line). Is it possible to change this - behavior to keep the cursor at the same column? - -No. It is not possible to change this behavior. The cursor is *always* -positioned on a valid character (unless you have virtual-edit mode -enabled). So, if you are appending text to the end of a line, when you -return to command mode the cursor *must* drop back onto the last character -you typed. For consistency sake, the cursor drops back everywhere, even if -you are in the middle of a line. - -You can use the CTRL-O command in insert mode to execute a single ex -command and return back to insert mode without moving the cursor column. - -For more information, read > - - :help 'virtual' - :help i_CTRL-O -< - *faq-10.3* -10.3. How do I configure Vim to maintain the horizontal cursor position when - scrolling with the <Page Up>, <Page Down>, etc keys? - -You can reset the 'startofline' option to keep the cursor at the same -horizontal location when scrolling text: > - - :set nostartofline -< -For more information, read > - - :help 'startofline' -< - *faq-10.4* -10.4. Some lines in a file are more than the screen width and they are all - wrapped. When I use the j, k keys to move from one line to the next, - the cursor is moved to the next line in the file instead of the next - line on the screen. How do I move from one screen line to the next? - -You can use the gj and gk commands to move from one screen line to the -next/previous screen line. The j and k commands move the cursor from one -file line to the next file line. You can also avoid the line wrapping by -resetting the 'wrap' option: > - - :set nowrap -< -For more information, read > - - :help gj - :help gk - :help 'wrap' -< -You can use the following mappings: > - - :map <Up> gk - :imap <Up> <C-o>gk - :map <Down> gj - :imap <Down> <C-o>gj -< - *faq-10.5* -10.5. What is the definition of a sentence, paragraph and section in Vim? - -A sentence is defined as ending at a '.', '!' or '?' followed by either the -end of a line, or by a space (or two) or tab. Which characters and the -number of spaces needed to constitute a sentence ending is determined by -the 'joinspaces' and 'cpoptions' options. - -A paragraph begins after each empty line, and also at each of a set of -paragraph macros, specified by the pairs of characters in the 'paragraphs' -option. - -A section begins after a form-feed (<C-L>) in the first column and at each -of a set of section macros, specified by the pairs of characters in the -'sections' option. - -For more information, read > - - :help sentence - :help 'joinspaces' - :help 'cpoptions' | /^\s*j\> - :help paragraph - :help section - :help word -< - *faq-10.6* -10.6. How do I jump to beginning or end of a sentence, paragraph or a - section? - -You can use the following motion commands to jump to the beginning or end -of a sentence or a paragraph or a section: > - - motion position where - ( beginning current sentence - ) end current sentence - { beginning current paragraph - } end current paragraph - [] end previous section - [[ beginning current section - ][ end current section - ]] beginning next section -< -Each of these motions can be preceded by a number which will extend the -jump forward (or backward). - -For more information, read > - - :help object-motions -< - *faq-10.7* -10.7. I have lines in a file that extends beyond the right extent of the - screen. How do I move the Vim view to the right to see the text off - the screen? - -You can use one of the following commands to horizontally scroll the screen -to the left or right: > - - zl - scroll to the left - zh - scroll to the right - zL - scroll half a screenwidth to the left - zH - scroll half a screenwidth to the right - zs - scroll to position the cursor at the start of the screen - ze - scroll to position the cursor at the end of the screen -< -You can use the g0 command to move the cursor to the first character of the -screen line and the g$ command to move the cursor to the last character of -the screen line without scrolling the screen. - -For more information, read > - - :help scroll-horizontal -< - *faq-10.8* -10.8. How do I scroll two or more buffers simultaneously? - -You can set the "scrollbind" option for each of the buffer to scroll them -simultaneously. - -For more information, read > - - :help 'scrollbind' - :help scroll-binding - :help 'scrollopt' -< - *faq-10.9* -10.9. When I use my arrow keys, Vim changes modes, inserts weird characters - in my document but doesn't move the cursor properly. What's going on? - -There are a couple of things that could be going on: either you are using -Vim over a slow connection or Vim doesn't understand the key sequence that -your keyboard is generating. - -If you are working over a slow connection (such as a 2400 bps modem), you -can try to set the 'timeout' or 'ttimeout' option. These options, combined -with the 'timeoutlen' and 'ttimeoutlen' options, may fix the problem. - -The preceding procedure will not work correctly if your terminal sends key -codes that Vim does not understand. In this situation, your best option is -to map your key sequence to a matching cursor movement command and save -these mappings in a file. You can then ":source" the file whenever you work -from that terminal. - -For more information, read > - - :help 'timeout' - :help 'ttimeout' - :help 'timeoutlen' - :help 'ttimeoutlen' - :help :map - :help vt100-cursor-keys -< - *faq-10.10* -10.10. How do I configure Vim to move the cursor to the end of the previous - line, when the left arrow key is pressed and the cursor is currently - at the beginning of a line? - -You can add the '<' flag to the 'whichwrap' option to configure Vim to move -the cursor to the end of the previous line, when the left arrow key is -pressed and the cursor is currently at the beginning of a line: > - - :set whichwrap+=< -< -Similarly, to move the cursor the beginning of the next line, when the -right arrow key is pressed and the cursor is currently at the end of a -line, add the '>' flag to the 'whichwrap' option: > - - :set whichwrap+=> -< -The above will work only in normal and visual modes. To use this in insert -and replace modes, add the '[' and ']' flags respectively. - -For more information, read > - - :help 'whichwrap' - :help 05.7 -< - *faq-10.11* -10.11. How do I configure Vim to stay only in insert mode (modeless - editing)? - -You can set the 'insertmode' option to configure Vim to stay only in insert -mode: > - - :set insertmode -< -By setting this option, you can use Vim as a modeless editor. If you press -the <Esc> key, Vim will not go to the normal mode. To execute a single -normal mode command, you can press CTRL-O followed by the normal mode -command. To execute more than one normal command, you can use CTRL-L -followed by the commands. To return to insert mode, press the <Esc> key. To -disable this option, reset the 'insertmode' option: > - - :set noinsertmode -< -You can also start vim using the "evim" command or you can use "vim -y" to -use Vim as a modeless editor. - -For more information, read > - - :help 'insertmode' - :help i_CTRL-O - :help i_CTRL-L - :help evim - :help evim-keys -< - *faq-10.12* -10.12. How do I display some context lines when scrolling text? - -You can set the 'scrolloff' option to display a minimal number of screen -lines (context) above and below the cursor. > - - :set scrolloff=10 -< -For more information, read > - - :help 'scrolloff' - :help 'sidescrolloff' -< - *faq-10.13* -10.13. How do I go back to previous cursor locations? - -You can go back to the cursor location before the latest jump using the '' -or `` command. You can use the CTRL-O command to go back to older cursor -positions and the CTRL-I command to go to the newer cursor positions in the -jump list. - -For more information, read > - - :help 03.10 - :help mark-motions - :help jump-motions -< - -============================================================================= - *faq-11* -SECTION 11 - SEARCHING TEXT - - *faq-11.1* -11.1. After I searched for a text with a pattern, all the matched text - stays highlighted. How do I turn off the highlighting - temporarily/permanently? - -The 'hlsearch' option controls whether all the matches for the last -searched pattern are highlighted or not. By default, this option is not -enabled. If this option is set in a system-wide vimrc file, then you can -turn off the search highlighting by using the following command: > - - :set nohlsearch -< -To temporarily turn off the search highlighting, use > - - :nohlsearch -< -You can also clear the search highlighting, by searching for a pattern that -is not in the current file (for example, search for the pattern 'asdf'). - -For more information, read > - - :help 'hlsearch' - :help :nohlsearch -< - *faq-11.2* -11.2. How do I enter a carriage return character in a search pattern? - -You can either use '\r' or <CTRL-V><CTRL-M> to enter a carriage return -character in a pattern. In Vim scripts, it is better to use '\r' for the -carriage return character. - -For more information, read > - - :help sub-replace-special -< - *faq-11.3* -11.3. How do I search for the character ^M? - -You can enter the ^M character in a search command by first pressing the -CTRL-V key and then pressing the CTRL-M key. > - - /^V^M -< -You can also use the "\r" character. In Vim scripts, "\r" is preferred. - -For more information, read > - - :help c_CTRL-V - :help using_CTRL-V - :help /\r -< - *faq-11.4* -11.4. How can I search/replace characters that display as '~R', '~S', etc.? - -You can use the 'ga' command to display the ASCII value/code for the -special character. For example, let us say the ASCII value is 142. Then you -can use the following command to search for the special character: > - - /^V142 -< -where, ^V is entered by pressing CTRL-V. - -For more information, read > - - :help ga - :help using_CTRL_V - :help 24.8 -< - *faq-11.5* -11.5. How do I highlight all the non-printable characters in a file? - -You can use the following commands and search pattern to highlight all the -non-printable characters in a file: > - - :set hlsearch - /\(\p\|$\)\@!. -< -For more information, read > - - :help /\p - :help /bar - :help /$ - :help /\( - :help /\@! - :help 'hlsearch' -< - *faq-11.6* -11.6. How do I search for whole words in a file? - -You can search for whole words in a file using the \< and \> atoms. For -example: > - - /\<myword\> -< -The \< atom matches the beginning of the word and the \> atom matches the -end of the word. - -For more information, read > - - :help /\< - :help /\> -< - *faq-11.7* -11.7. How do I search for the current word under the cursor? - -You can press the * key to search forward for the current word under the -cursor. To search backward, you can press the # key. Note that only whole -keywords will be searched using these commands. - -For more information, read > - - :help star - :help # - :help g* - :help g# - :help 03.8 - :help search-commands -< - *faq-11.8* -11.8. How do I search for a word without regard to the case (uppercase or - lowercase)? - -To always ignore case while searching for a pattern, set the 'ignorecase' -option: > - - :set ignorecase -< -To ignore case only when searching a particular pattern, use the special \c -directive: > - - /\c<pattern> -< -For more information, read > - - :help 'ignorecase' - :help /ignorecase - :help /\c -< - *faq-11.9* -11.9. How do I search for words that occur twice consecutively? - -You can use one of the following search commands to locate words that occur -twice consecutively: > - - /\(\<\w\+\)\_s\+\1\> - /\(\<\k\+\)\_s\+\1\> -< -The main difference is the use of '\w' and '\k', where the latter is based -on the 'iskeyword' option which may include accented and other language -specific characters. - -For more information, read > - - :help /\1 - :help /\( - :help /\) - :help /\< - :help /\> - :help /\w - :help /\k - :help /\+ - :help /\_x - :help 'iskeyword' -< - *faq-11.10* -11.10. How do I count the number of times a particular word occurs in a - buffer? - -You can use the following set of commands to count the number of times a -particular word occurs in a buffer: > - - :let cnt=0 - :g/\<your_word\>/let cnt=cnt+1 - :echo cnt -< -This only counts the number of lines where the word occurs. You can also -use the following command: > - - :%s/\<word\>/&/g -< -To count the number of alphabetic words in a file, you can use > - - :%s/\a\+/&/g -< -To count the number of words made up of non-space characters, you can use > - - :%s/\S\+/&/g -< -For more information, read > - - :help count-items - :help word-count - :help v_g_CTRL-G - :help 12.5 -< - *faq-11.11* -11.11. How do I place the cursor at the end of the matched word when - searching for a pattern? - -You can use the 'e' offset to the search command to place the cursor at the -end of the matched word. For example > - - /mypattern/e -< -For more information about search offsets, read > - - :help search-offset - :help / -< - *faq-11.12* -11.12. How do I search for an empty line? - -You can search for an empty line using: > - - /^$ -< - or > - - /^\s*$ -< -For more information, read > - - :help /^ - :help /$ - :help /\s - :help /* - :help search-commands -< - *faq-11.13* -11.13. How do I search for a line containing only a single character? - -You can search for a line containing only a single character using: > - - /^\s*\a\s*$ -< -For more information, read > - - :help /^ - :help /\a - :help /\s - :help /* - :help /$ -< - *faq-11.14* -11.14. How do I search and replace a string in multiple files? - -You can use the 'argdo' or 'bufdo' or 'windo' commands to execute an ex -command on multiple files. For example: > - - :argdo %s/foo/bar/g -< -For more information, read > - - :help :argdo - :help :bufdo - :help :windo -< - *faq-11.15* -11.15. I am using the ":s" substitute command in a mapping. When a search - for a pattern fails, the map terminates. I would like the map to - continue processing the next command, even if the substitute command - fails. How do I do this? - -You can use the 'e' flag to the substitute command to continue processing -other commands in a map, when a pattern is not found. - -For more information, read > - - :help :s_flags -< - *faq-11.16* -11.16. How do I search for the n-th occurrence of a character in a line? - -To search for the n-th occurrence of a character in a line, you can prefix -the 'f' command with a number. For example, to search for the 5th -occurrence of the character @ in a line, you can use the command 5f@. This -assumes the cursor is at the beginning of the line - and that this first -character is not the one your are looking for. - -For more information, read > - - :help f - :help F - :help t - :help T - :help ; - :help , -< - *faq-11.17* -11.17. How do I replace a tab (or any other character) with a hard return - (newline) character? - -You can replace a tab (or any other character) with a hard return (newline) -character using the following command: > - - :s/\t/\r/ -< -Note that in the above command, if you use \n instead of \r, then the tab -characters will not be replaced by a new-line character. - -For more information, read > - - :help sub-replace-special - :help NL-used-for-Nul - :help CR-used-for-NL -< - *faq-11.18* -11.18. How do I search for a character by its ASCII value? - -You can search for a character by its ASCII value by pressing CTRL-V -followed by the decimal or hexadecimal or octal value of that character in -the search "/" command. To determine the ASCII value of a character you -can use the ":ascii" or the "ga" command. - -For more information, read > - - :help i_CTRL-V_digit - :help :ascii - :help ga -< - *faq-11.19* -11.19. How do I search for long lines? - -You can search for long lines or lines containing more than a specific -number of characters using the Vim regular-expressions in the search -command. For example, to search for all the lines containing more than 80 -characters, you can use one of the following commands: > - - /^.\{80}.*$ - /^.*\%80c.*$ -< -For more information, read > - - :help /\{ - :help /\%c -< - *faq-11.20* -11.20. How do I display all the lines in the current buffer that contain a - specified pattern? - -You can use the following command to display all the lines in the current -buffer that contain a specified pattern: > - - :g/<pattern>/p -< -For example, the following command will display all the lines in the -current buffer that contain "vim": > - - :g/vim/p -< -If you also want the corresponding line numbers, then you can use the -following command: > - - :g/<pattern>/# -< -For more information, read > - - :help :global - :help :print - :help :number -< - *faq-11.21* -11.21. How do I search for a text string that spans multiple lines? - -You can search for a text string that spans multiple lines using the \_x -regular expression atom. For example, to search for the text string "Hello -World", you can use the following search command: > - - /Hello\_sWorld -< -This will match the word "Hello" followed by a newline character and then -the word "World" at the beginning of the next line. This will also match -the word "Hello" immediately followed by a space character and then the -word "World". When searching for the "Hello World" string, to include the -space characters at the end and beginning of the line, you can use the -following search command: > - - /Hello\_s\+World -< -For more information, read > - - :help 27.8 - :help pattern-atoms - :help /\_ - :help pattern-searches -< - *faq-11.22* -11.22. How do I search for a pattern within the specified range of lines - in a buffer? - -You can search for a pattern within a range of lines using the \%>l -and \%<l regular expression atoms. - -For example, to search for the word 'white' between the lines 10 and 30 in -a buffer, you can use the following command: > - - /white\%>10l\%<20l -< -For more information, read > - - :help /\%l -< - -============================================================================= - *faq-12* -SECTION 12 - CHANGING TEXT - - *faq-12.1* -12.1. How do I delete all the trailing white space characters (SPACE and - TAB) at the end of all the lines in a file? - -You can use the ":substitute" command on the entire file to search and -remove all the trailing white space characters: > - - :%s/\s\+$// -< -For more information, read > - - :help :% - :help :s - :help /\s - :help /\+ - :help /$ -< - *faq-12.2* -12.2. How do I replace all the occurrences of multiple consecutive space - characters to a single space? - -You can use the following command to replace all the occurrences of -multiple consecutive space characters to a single space: > - - :%s/ \{2,}/ /g -< -For more information, read > - - :help :% - :help :s - :help /\{ - :help :s_flags -< - *faq-12.3* -12.3. How do I reduce a range of empty lines into one line only? - -You can use the following command to reduce a range of empty lines into one -line only: > - - :v/./.,/./-1join -< -The explanation for this command is below: > - - :v/./ Execute the following command for all lines not - containing a character (empty lines). - ., Use the current line as the start of the range of - lines. - /./ Use the line containing a character as the last line. - -1 Adjust the range of lines to end with the line before - the last line. - j Join the lines in the range. -< -Note that this will give an error message if the empty lines are at the end -of the file. To correct this, you have to add a temporary line at the end -of the file, execute the command and then remove the temporary line. - -For more information, read > - - :help :v - :help :join - :help cmdline-ranges - :help collapse -< - *faq-12.4* -12.4. How do I delete all blank lines in a file? How do I remove all the - lines containing only space characters? - -To remove all blank lines, use the following command: > - - :g/^$/d -< -To remove all lines with only whitespace (spaces or tabs) in them, use the -following command: > - - :g/^\s\+$/d -< -To remove all the lines with only whitespace, if anything, use the -following command: > - - :g/^\s*$/d -< - *faq-12.5* -12.5. How do I copy/yank the current word? - -You can use the "yiw" (yank inner word without whitespace) command or the -"yaw" (yank a word with whitespace) command to copy/yank the current -word. - -For more information, read > - - :help 04.6 - :help 04.8 - :help iw - :help yank - :help text-objects - :help objects -< - *faq-12.6* -12.6. How do I yank text from one position to another position within a - line, without yanking the entire line? - -You can specify a motion command with the yank operator (y) to yank text -from one position to another position within a line. For example, to yank -from the current cursor position till the next letter x, use yfx or Fx or -tx or Tx. To yank till the nth column, use n|. To yank till the next -occurrence of a 'word', use /word. To do a yank till the nth column on -another line, first mark the position using the 'ma' command, go to the -start of the yank position, and then yank till the mark using y`a (note the -direction of the quote) - -For more information, read > - - :help yank - :help motion.txt - :help 4.6 -< - *faq-12.7* -12.7. When I yank some text into a register, how do I append the text to - the current contents of the register? - -When you specify the register for some operation, if you use the upper-case -for the register name, then the new text will be appended to the existing -contents. For example, if you have some text in the register "a". If you -want to append some new text to this, you have to use the "A" register -name. If you use the lowercase register name, then the contents of the -register will be overwritten with the new text. - -For more information, read > - - :help quote - :help quote_alpha - :help 10.1 -< - *faq-12.8* -12.8. How do I yank a complete sentence that spans over more than one line? - -To yank a complete sentence that spans over more than one line you have to -use the yank operator followed by a motion command. For example: > - - y) -< -From inside the sentence you can use 'yi)' to yank the sentence. - -For more information, read > - - :help yank - :help {motion} - :help object-motions - :help 4.6 -< - *faq-12.9* -12.9. How do I yank all the lines containing a pattern into a buffer? - -You can use the ":global" command to yank all the lines containing the -pattern into a register and then paste the contents of the register into -the buffer: > - - :let @a='' - :g/mypattern/y A -< -The first command, clears the contents of the register "a". The second -command copies all the lines containing "mypattern" into the register "a". -Note that the capital letter "A" is used to append the matched lines. Now -you can paste the contents of register "a" to a buffer using "ap command. -For more information, read > - - :help :g - :help :y - :help let-register - :help quote_alpha - :help put - :help registers - :help :registers -< - *faq-12.10* -12.10. How do I delete all the lines in a file that does not contain a - pattern? - -You can use ":v" command to delete all the lines that does not contain a -pattern: > - - :v/pattern/d -< -or > - - :g!/pattern/d -< -For more information, read > - - :help :v - :help :g -< - *faq-12.11* -12.11. How do I add a line before each line with "pattern" in it? - -You can use the following command to add a line before each line with -"pattern" in it: > - - :g/pattern/normal Oi<line of text goes here> -< -Alternatively you can yank the line using the Y command and then insert the -line using the following command: > - - :g/pattern/put! -< -For more information, read > - - :help :g - :help :put - :help insert - :help 0 -< - *faq-12.12* -12.12. Is there a way to operate on a line if the previous line contains a - particular pattern? - -You can use the ":global" command to operate on a line, if the previous -line contains a particular pattern: > - - :g/<pattern>/+{cmd} -< -For more information, read > - - :help :g - :help :range -< - *faq-12.13* -12.13. How do I execute a command on all the lines containing a pattern? - -You can use the ":global" (:g) command to execute a command on all the -lines containing a pattern. > - - :g/my pattern/d -< -If you want to use a non-Ex command, then you can use the ":normal" -command: > - - :g/my pattern/normal {command} -< -Unless you want the normal mode commands to be remapped, consider using a -":normal!" command instead (note the "!"). - -For more information, read > - - :help :global - :help :v - :help :normal -< - *faq-12.14* -12.14. Can I copy the character above the cursor to the current cursor - position? - -In Insert mode, you can copy the character above the cursor to the current -cursor position by typing <Ctrl-Y>. The same can be done with the -characters below the cursor by typing <Ctrl-E>. - -For more information, read > - - :help i_CTRL-Y - :help i_CTRL-E -< - *faq-12.15* -12.15. How do I insert a blank line above/below the current line without - entering insert mode? - -You can use the ":put" ex command to insert blank lines. For example, try > - - :put ='' - :put! ='' -< -For more information, read > - - :help :put -< - *faq-12.16* -12.16. How do I insert the name of current file into the current buffer? - -There are several ways to insert the name of the current file into the -current buffer. In insert mode, you can use the <C-R>% or the -<C-R>=expand("%") command. In normal mode, you can use the ":put =@%" -command. - -For more information, read > - - :help i_CTRL-R - :help expand() - :help !! -< - *faq-12.17* -12.17. How do I insert the contents of a Vim register into the current - buffer? - -In insert mode, you can use the <C-R><register> command to insert the -contents of <register>. For example, use <C-R>a to insert the contents -of register "a" into the current buffer. - -In normal mode, you can use the ":put <register>" command to insert the -contents of <register>. For example, use the ":put d" command to insert -the contents of register "d" into the current buffer. - -For more information, read > - - :help i_CTRL-R - :help :put -< - *faq-12.18* -12.18. How do I move the cursor past the end of line and insert some - characters at some columns after the end of the line? - -You can set the "virtualedit" option to move the cursor past the -end-of-line and insert characters in a column after the end-of-line. To -start the virtual mode, use > - - :set virtualedit=all -< -For more information, read > - - :help 'virtualedit' -< - *faq-12.19* -12.19. How to replace the word under the cursor (say: junk) with - "foojunkbar" in Vim? - -There are several ways to do this. If the word is the first such word on -the line, use the following command: > - - :exe "s/".expand("<cword>")."/foo&bar/" -< -Too match specifically you could use a more complex substitution like this: > - - :exe 's/\<'.expand("<cword>").'\%>'.(col(".")-1).'c\>/foo&bar/' -< -You can also use the command: ciwfoo<C-R>"bar<Esc> - -For more information, read > - - :help :substitute - :help expand() - :help col() - :help /\%c -< - *faq-12.20* -12.20. How do I replace a particular text in all the files in a directory? - -You can use the "argdo" command to execute the substitute command on all -the files specified as arguments: > - - :args * - :argdo %s/<your_text>/<replacement_text>/ge | update -< -For more information, read > - - :help :args_f - :help :argdo - :help :s_flags -< - *faq-12.21* -12.21. I have some numbers in a file. How do I increment or decrement the - numbers in the file? - -You can use the CTRL-A key to increment the number and the CTRL-X key to -decrement the number. You can also specify the number to -increment/decrement from the number by specifying a count to the key. This -works for decimal, octal and hexadecimal numbers. - -For more information, read > - - :help CTRL-A - :help CTRL-X - :help 'nrformats' -< - *faq-12.22* -12.22. How do I reuse the last used search pattern in a ":substitute" - command? - -To reuse the last used search pattern in a ":substitute" command, don't -specify a new search pattern: > - - :s/pattern/newtext/ - :s//sometext/ -< -In the second ":s" command, as a search pattern is not specified, the -pattern specified in the first ":s" command 'pattern' will be used. - -If you want to change the search pattern but repeat the substitution -pattern you can use the special right hand side, you can use the tilde -character: > - - :s/newpattern/~/ -< -For more information, read > - - :help :s - :help :& - :help :~ - :help & - :help sub-replace-special -< - *faq-12.23* -12.23. How do I change the case of a string using the ":substitute" - command? - -You can use special characters in the replacement string for a -":substitute" command to change the case of the matched string. For -example, to change the case of the string "MyString" to all uppercase, you -can use the following command: > - - :%s/MyString/\U&/g -< -To change the case to lowercase, you can use the following command: > - - :%s/MyString/\L&/g -< -To change the case of the first character in all the words in the current -line to uppercase, you can use the following command: > - - :s/\<\(.\)\(\k*\)\>/\u\1\L\2/g -< -For more information, read > - - :help sub-replace-special - :help :substitute - :help \U - :help \L - :help \u -< - *faq-12.24* -12.24. How do I enter characters that are not present in the keyboard? - -You can use digraphs to enter characters that are not present in the -keyboard. You can use the ":digraphs" command to display all the currently -defined digraphs. You can add a new digraph to the list using the -":digraphs" command. - -For more information, read > - - :help digraphs - :help 'digraphs' - :help 24.9 -< - *faq-12.25* -12.25. Is there a command to remove any or all digraphs? - -No. The digraphs table is defined at compile time. You can only add new -ones. Adding a command to remove digraphs is on the todo list. - - *faq-12.26* -12.26. In insert mode, when I press the backspace key, it erases only the - characters entered in this instance of insert mode. How do I erase - previously entered characters in insert mode using the backspace - key? - -You can set the 'backspace' option to erase previously entered characters -in insert mode: > - - :set backspace=indent,eol,start -< -For more information, read > - - :help 'backspace' -< - *faq-12.27* -12.27. I have a file which has lines longer than 72 characters terminated - with "+" and wrapped to the next line. How can I quickly join the - lines? - -You can use the ":global" command to search and join the lines: > - - :g/+$/j -< -This will, however, only join every second line. A couple of more complex -examples which will join all consecutive lines with a "+" at the end are: > - - :g/*$/,/\(^\|[^+]\)$/j - :g/+$/mark a | .,/\(^\|[^+]\)$/s/+$// | 'a,.j -< -For more information, read > - - :help :g - :help :j - :help :mark -< - *faq-12.28* -12.28. How do I paste characterwise yanked text into separate lines? - -You can use the ":put" command to paste characterwise yanked text into new -lines: > - - :put =@" -< -For more information, read > - - :help :put - :help quote_= -< - *faq-12.29* -12.29. How do I change the case (uppercase, lowercase) of a word or a - character or a block of text? - -You can use the "~" command to switch the case of a character. - -You can change the case of the word under the cursor to uppercase using the -"gUiw" or "viwU" command and to lowercase using the "guiw" or "viwu" -command. - -You can switch the case (upper case to lower case and vice versa) of the -word under the cursor using the "viw~" or "g~iw" command. - -You can use the "gUgU" command to change the current line to uppercase and -the "gugu" command to change the current line to lowercase. - -You can use the "g~g~" command to switch the case of the current line. You -can use the "g~{motion}" or "{Visual}~" commands to switch the case of a -block of text. - -For more information, read > - - :help case -< - *faq-12.30* -12.30. How do I enter ASCII characters that are not present in the - keyboard? - -You can enter ASCII characters that are not present in the keyboard by -pressing CTRL-V and then the ASCII character number. You can also use -digraphs to enter special ASCII characters. - -For more information, read > - - :help i_CTRL-V_digit - :help digraphs - :help 45.5 -< - *faq-12.31* -12.31. How do I replace non-printable characters in a file? - -To replace a non-printable character, you have to first determine the ASCII -value for the character. You can use the ":ascii" ex command or the "ga" -normal-mode command to display the ASCII value of the character under the -cursor. - -You can enter the non-printable character by entering CTRL-V followed by -the decimal number 1-255 (with no leading zero), or by x and a hex number -00-FF, or by an octal number 0-0377 (with leading zero), or by u and a hex -number 0-FFFF, or by U and a hex number 0-7FFFFFFF - -Another alternative is to use the ":digraphs" ex command to display the -digraphs for all characters, together with their value in decimal and -alpha. You can enter a non-printable character by entering CTRL-K followed -by two alphanumeric characters (a digraph). - -For more information, read > - - :help :ascii - :help i_CTRL-V - :help i_CTRL-V_digit - :help :digraphs -< - *faq-12.32* -12.32. How do I remove duplicate lines from a buffer? - -You can use the following user-defined command to remove all the duplicate -lines from a buffer: - -:command -range=% Uniq <line1>,<line2>g/^\%<<line2>l\(.*\)\n\1$/d - -Add the above command to your .vimrc file and invoke ":Uniq" to remove all -the duplicate lines. - - *faq-12.33* -12.33. How do I prefix all the lines in a file with the corresponding line - numbers? - -You can prefix the lines with the corresponding line number in several -ways. Some of them are listed below: > - - :%s/^/\=line('.'). ' ' - :%s/^/\=strpart(line(".")." ", 0, 5) - :g/^/exec "s/^/".strpart(line(".")." ", 0, 4) -< -For more information, read > - - :help sub-replace-special - :help line() - :help expr6 - :help strpart() - :help :execute - :help :global -< - *faq-12.34* -12.34. How do I exchange (swap) two characters or words or lines? - -You can exchange two characters with the "xp" command sequence. The 'x' -will delete the character under the cursor and 'p' will paste the just -deleted character after the character under the cursor. This will result -in exchanging the two characters. - -You can exchange two words with the "deep" command sequence (start with the -cursor in the blank space before the first word). - -You can exchange two lines with the "ddp" command sequence. The 'dd' will -delete the current line and 'p' will paste the just deleted line after the -current line. This will result in exchanging the two lines. - -All of the above operations will change the " unnamed register. - -You can use the ":m +" ex command to exchange two lines without changing the -unnamed register. - -For more information, read > - - :help x - :help p - :help dd - :help d - :help e - :help linewise-register - :help quotequote - :help :move -< - -============================================================================= - *faq-13* -SECTION 13 - COMPLETION IN INSERT MODE - - *faq-13.1* -13.1. How do I complete words or lines in insert mode? - -In insert mode, you can complete words using the CTRL-P and CTRL-N keys. -The CTRL-N command searches forward for the next matching keyword. -The CTRL-P command searches backwards for the next matching keyword. - -In insert mode, you can use the CTRL-X CTRL-L command sequence to complete -lines that starts with the same characters as in the current line before -the cursor. To get the next matching line, press the CTRL-P or CTRL-N keys. -There are a lot of other keys/ways available to complete words in insert -mode. - -Vim supports completion of the following items: > - - CTRL-X CTRL-F file names - CTRL-X CTRL-L whole lines - CTRL-X CTRL-D macro definitions (also in included files) - CTRL-X CTRL-I current and included files - CTRL-X CTRL-K words from a dictionary - CTRL-X CTRL-T words from a thesaurus - CTRL-X CTRL-] tags - CTRL-X CTRL-V Vim command line -< -For more information, read > - - :help 24.3 - :help ins-completion -< - *faq-13.2* -13.2. How do I complete file names in insert mode? - -In insert mode, you can use the CTRL-X CTRL-F command sequence to complete -filenames that start with the same characters as in the current line before -the cursor. - -For more information, read > - - :help compl-filename -< - *faq-13.3* -13.3. I am using CTRL-P/CTRL-N to complete words in insert mode. How do I - complete words that occur after the just completed word? - -You can use CTRL-X CTRL-N and CTRL-X CTRL-P keys to complete words that are -present after the just completed word. - -For more information, read > - - :help i_CTRL-X_CTRL-P - :help i_CTRL-X_CTRL-N - :help ins-completion -< - -============================================================================= - *faq-14* -SECTION 14 - TEXT FORMATTING - - *faq-14.1* -14.1. How do I format a text paragraph so that a new line is inserted at - the end of each wrapped line? - -You can use the 'gq' command to format a paragraph. This will format the -text according to the current 'textwidth' setting. - -Note that the gq operator can be used with a motion command to operate on a -range of text. For example: > - - gqgq - Format the current line - gqap - Format current paragraph - gq3j - Format the current and the next 3 lines -< -For more information, read > - - :help gq - :help formatting - :help usr_25.txt - :help motion.txt -< - *faq-14.2* -14.2. How do I format long lines in a file so that each line contains less - than 'n' characters? - -First set the 'textwidth' option to the desired value: > - - set textwidth=70 -< -Now to break the long lines to the length defined by the 'textwidth' -option, use > - - :g/./normal gqq -< -For more information, read > - - :help gq -< - *faq-14.3* -14.3. How do I join short lines to form a paragraph? - -First, make sure the 'textwidth' option is set to a high value: > - - :set textwidth=99999 -< -Next, join the short lines to form a paragraph using the command: > - - 1GgqG -< -The above command will operate on the entire file. To do the formatting on -all paragraphs in a specific range, use: > - - :'a,'bg/\S/normal gq} -< -For more information, read > - - :help gq - :help G - :help gqq -< - *faq-14.4* -14.4. How do I format bulleted and numbered lists? - -You can configure Vim to format bulleted and numbered lists using the -'formatoptions' option. For example, you can format the list of the -following format: - - - this is a test. this is a test. this is a test. this is a test. - this is a test. - -into this format: - - - this is a test. this is a test. this is a test. this is a test. - this is a test. - -You can use the 'n' flag in the 'formatoptions' to align the text. > - - :set fo+=n -< -With this option, when formatting text, Vim will recognize numbered lists. -For this option to work, the 'autoindent' option also must be set. - -For more information, read > - - :help 'formatoptions' - :help fo-table -< - *faq-14.5* -14.5. How do I indent lines in insert mode? - -In insert mode, you can press the CTRL-T key to insert one shiftwidth of -indent at the start of the current line. In insert mode, you can use the -CTRL-D key to delete on shiftwidth of indent at the start of the current -line. You can also use the CTRL-O >> and CTRL-O << commands to indent the -current line in insert mode. - -For more information, read > - - :help i_CTRL-T - :help i_CTRL-D - :help i_0_CTRL-D - :help i_CTRL-O - :help >> - :help << -< - *faq-14.6* -14.6. How do I format/indent an entire file? - -You can format/indent an entire file using the gg=G command, where > - - gg - Goto the beginning of the file - = - apply indentation - G - till end of file -< -For more information, read > - - :help gg - :help = - :help G - :help 'formatprg' - :help C-indenting -< - *faq-14.7* -14.7. How do I increase or decrease the indentation of the current line? - -You can use the '>>' and '<<' commands to increase or decrease the -indentation of the current line. - -For more information, read > - - :help shift-left-right - :help >> - :help << - :help 'shiftwidth' -< - *faq-14.8* -14.8. How do I indent a block/group of lines? - -You can visually select the group of lines and press the > or < key to -indent/unindent the lines. You can also use the following ex-command to -indent the lines > - - :10,20> -< -For more information, read > - - :help shift-left-right - :help v_> - :help v_< - :help :< - :help :> -< - *faq-14.9* -14.9. When I indent lines using the > or < key, the standard 8-tabstops are - used instead of the current 'tabstop' setting. Why? - -The number of spaces used when lines are indented using the ">" operator is -controlled by the 'shiftwidth' option. The 'tabstop' setting is not used -for indentation. To change the amount of spaces used for indentation, use -the command: > - - :set shiftwidth=4 -< -For more information, read > - - :help 'shiftwidth' - :help >> - :help 'softtabstop' -< - *faq-14.10* -14.10. How do I turn off the automatic indentation of text? - -By default, the automatic indentation of text is not turned on. Check the -configuration files (.vimrc, .gvimrc) for settings related to indentation. -Make sure the ":filetype indent on" command is not present. If it is -present, remove it. Also, depending on your preference, you may also want -to check the value of the 'autoindent', 'smartindent', 'cindent' and -'indentexpr' options and turn them off as needed. - -For more information, read > - - :help :filetype-indent-off - :help 'autoindent' - :help 'smartindent' - :help 'cindent' - :help 'indentexpr' -< - *faq-14.11* -14.11. How do I configure Vim to automatically set the 'textwidth' option - to a particular value when I edit mails? - -You can use the 'FileType' autocommand to set the 'textwidth' option: > - - autocmd FileType mail set tw=<your_value> -< -For more information, read > - - :help :autocmd - :help FileType - :help usr_43.txt -< - *faq-14.12* -14.12. Is there a way to make Vim auto-magically break lines? - -Yes. Set the 'textwidth' option to the preferred length for a line. Then -Vim will auto-magically break the newly entered lines. For example: > - - :set textwidth=75 -< -For more information, read > - - :help textwidth - :help ins-textwidth - :help 'formatoptions' - :help fo-table - :help formatting -< - *faq-14.13* -14.13. I am seeing a lot of ^M symbols in my file. I tried setting the - 'fileformat' option to 'dos' and then 'unix' and then 'mac'. None of - these helped. How can I hide these symbols? - -When a file is loaded in Vim, the format of the file is determined as -below: - -- If all the lines end with a new line (<NLL>), then the fileformat is - 'unix'. -- If all the lines end with a carriage retuurn (<CR>) followed by a new line - (<NL>), then the fileformat is 'dos'. -- If all the lines end with carriage returnn (<CR>), then the fileformat is - 'mac'. - -If the file has some lines ending with <CR> and some lines ending with <CR> -followed by a <NL>, then the fileformat is set to 'unix'. - -You can change the format of the current file, by modifying the -'fileformat' option and then saving the file: > - - :set fileformat=dos - :w -< -To display the format of the current file, use > - - :set fileformat? -< -The above behavior is also controlled by the 'fileformats' option. You can -try the following commands: > - - :set fileformats+=unix - :e <your_file> - :set fileformat=unix - :w -< -For more information, read > - - :help 'fileformats' - :help 'fileformat' - :help file-formats - :help DOS-format-write - :help Unix-format-write - :help Mac-format-write - :help dos-file-formats - :help 23.1 -< - *faq-14.14* -14.14. When I paste some text into a Vim buffer from another application, - the alignment (indentation) of the new text is messed up. How do I - fix this? - -The indentation of the text is messed up due to various Vim settings -related to indentation (like autoindent, smartindent, textwidth etc). -Before pasting text into Vim, you can set the 'paste' option: > - - :set paste -< -After pasting the text, you can turn off the option using: > - - :set nopaste -< -You can also toggle the paste option using: > - - :set paste! -< -If you can access the clipboard through the * register, then you can paste -the text without indentation using CTRL-R CTRL-O *. - -For more information, read > - - :help 'paste' - :help 'pastetoggle' - :help i_CTRL-R_CTRL_O - :help clipboard - :help xterm-clipboard - :help gui-clipboard -< - *faq-14.15* -14.15. When there is a very long wrapped line (wrap is "on") and a line - doesn't fit entirely on the screen it is not displayed at all. There - are blank lines beginning with '@' symbol instead of wrapped line. If - I scroll the screen to fit the line the '@' symbols disappear and the - line is displayed again. What Vim setting control this behavior? - -You can set the 'display' option to 'lastline' to display as much as -possible of the last line in a window instead of displaying the '@' -symbols. > - - :set display=lastline -< -For more information, read > - - :help 'display' -< - *faq-14.16* -14.16. How do I convert all the tab characters in a file to space - characters? - -You can use the ":retab" command to update all the tab characters in the -current file with the current setting of 'expandtab' and 'tabstop'. For -example, to convert all the tabs to white spaces, use > - - :set expandtab - :retab -< -For more information, read > - - :help :retab - :help 'expandtab' - :help 'tabstop' - :help 25.3 -< - *faq-14.17* -14.17. What Vim options can I use to edit text that will later go to a word - processor? - -You can set the following options to edit text that will later go into a -word processor: > - - :set wrap - :set linebreak - :set textwidth=0 - :set showbreak=>>> -< -You can use the 'gk' and 'gj' commands to move one screen line up and down. -For more information, read > - - :help 'wrap' - :help 'linebreak' - :help 'textwidth' - :help 'showbreak' - :help gk - :help gj -< - -============================================================================= - *faq-15* -SECTION 15 - VISUAL MODE - - *faq-15.1* -15.1. How do I do rectangular block copying? - -You can do rectangular block copying in Vim using the blockwise visual -mode. To start blockwise visual mode use the CTRL-V key. Move the cursor -using any of the motion commands and then use the y operator to yank to -visually selected text. - -If CTRL-V does not work as expected, it may have been remapped to CTRL-Q by -the mswin.vim script which is often sourced by a vimrc on Windows machines -to mimic some common short cuts from other programs. - -For more information, read > - - :help 04.4 - :help blockwise-visual - :help visual-mode - :help Q_vi -< - *faq-15.2* -15.2. How do I delete or change a column of text in a file? - -You can use the Vim block-wise visual mode to select the column of text and -apply an operator (delete, change, copy, etc) on it. - -For more information, read > - - :help visual-block - :help visual-operators -< - *faq-15.3* -15.3. How do I apply an ex-command on a set of visually selected lines? - -When you select a range of lines in visual mode, the < register is set to -the start of the visual region and the > register is set to the end of the -visual region. You can use these registers to specify the range for an ex -command. After visually selecting the lines, press ":" to go to the command -mode. Vim will automatically insert the visual range '<,'>. You can run -any ex-command on the visual range. - -For more information, read > - - :help v_: - :help '< - :help '> -< - *faq-15.4* -15.4. How do I execute an ex command on a column of text selected in Visual - block mode? - -All the ex commands operate on whole lines only. If you try to execute an -ex command on a column of text selected in visual block mode, Vim will -operate on all the selected lines (instead of the selected columns). You -can use the vis.vim plugin script from http://vim.sourceforge.net scripts -archive to do this. - -For more information, read > - - :help cmdline-ranges - :help 10.3 - :help cmdline-lines -< - *faq-15.5* -15.5. How do I select the entire file in visual mode? - -You can select the entire file in visual mode using ggVG. > - - gg - go to the beginning of the file. - V - Start linewise visual mode - G - goto the end of the file. -< -For more information, read > - - :help gg - :help linewise-visual - :help G -< - *faq-15.6* -15.6. When I visually select a set of lines and press the > key to indent - the selected lines, the visual mode ends. How can I reselect the - region for further operation? (or) How do I re-select the last - selected visual area again? - -You can use the 'gv' command to reselect the last selected visual area. You -can also use the marks '< and '> to jump to the beginning or the end of the -last selected visual area. - -For more information, read > - - :help gv - :help '< - :help '> -< - *faq-15.7* -15.7. How do I jump to the beginning/end of a visually selected region? - -You can use the 'o' command to jump to the beginning/end of a visually -selected region. - -For more information, read > - - :help v_o -< - *faq-15.8* -15.8. When I select text with mouse and then press : to enter an ex - command, the selected text is replaced with the : character. How do I - execute an ex command on a text selected using the mouse similar to - the text selected using the visual mode? - -This will happen if you have configured Vim to use select mode instead of -Visual mode by setting the 'selectmode' option. Check the value of this -option: > - - :set selectmode? -< -This mode is known as selectmode and is similar to the visual mode. This -option is also automatically set when you use the "behave mswin" command. -Select mode looks like visual mode, but it is similar to the selection mode -in MS-Windows. - -For more information, read > - - :help Select-mode - :help 'selectmode' - :help 9.4 - :help :behave -< - *faq-15.9* -15.9. When I select a block of text using the mouse, Vim goes into - selection mode instead of Visual mode. Why? - -The 'selectmode' option controls whether Select mode will be started when -selecting a block of text using the mouse. To start Visual mode when -selecting text using mouse, remove the 'mouse' value from the 'selectmode' -option: > - - :set selectmode-=mouse -< -Note that by default, the 'selectmode' option will be set to empty, so that -always visual mode is used. - -For more information, read > - - :help 'selectmode' - :help Select-mode - :help :behave -< - *faq-15.10* -15.10. How do I visually select the last copy/pasted text? - -You can use the '[ and '] marks to visually select the last copy/pasted -text. The '[ mark is set to the beginning of the last changed/yanked text -and the '] mark is set to the end of the last changed/yanked text. To -visually select this block of text use the command '[v'] - -For more information, read > - - :help '[ - :help '] - :help `a - :help v -< - -============================================================================= - *faq-16* -SECTION 16 - COMMAND-LINE MODE - - *faq-16.1* -16.1. How do I use the name of the current file in the command mode or an - ex command line? - -In the command line, the '%' character represents the name of the current -file. In some commands, you have to use expand("%") to get the filename: > - - :!perl % -< -For more information, read > - - :help :_% - :help cmdline-special - :help expand() -< - *faq-16.2* -16.2. How do I edit the text in the Vim command-line effectively? - -You can use the command-line window for editing Vim command-line text. To -open the Vim command-line window use the "q:" command in normal mode. In -command-line mode, use the CTRL-F key. In this window, the command line -history will be displayed. You can use normal Vim keys/commands to edit any -previous/new command line. To execute a command line, press the -enter/return key. - -In a similar vain, the search history can be edited with "q/" and "q?" -commands. - -For more information, read > - - :help cmdline-window -< - *faq-16.3* -16.3. How do I switch from Vi mode to Ex mode? - -You can use the Q command to switch from Vi mode to Ex mode. To switch from -Ex mode back to the Vi mode, use the :vi command. - -For more information, read > - - :help Q - :help gQ - :help Ex-mode - :help :vi -< - *faq-16.4* -16.4. How do I copy the output from an ex-command into a buffer? - -To copy the output from an ex-command into a buffer, you have to first get -the command output into a register. You can use the ":redir" command to get -the output into a register. For example, > - - :redir @a - :g/HelloWord/p - :redir END -< -Now the register 'a' will contain the output from the ex command -"g/HelloWord/p". Now you can paste the contents of the register 'a' into a -buffer. You can also send or append the output of an ex-command into a file -using the 'redir' command. - -You can prefix the ":global" command with ":silent", to avoid having the -lines printed to the screen. - -To redirect the output from an ex-command to a file, you can use the -following set of commands: > - - :redir > myfile - :g/HelloWord/p - :redir END -< -For more information, read > - - :help :redir - :help :silent -< - *faq-16.5* -16.5. When I press the tab key to complete the name of a file in the - command mode, if there are more than one matching file names, then - Vim completes the first matching file name and displays a list of all - matching filenames. How do I configure Vim to only display the list - of all the matching filenames and not complete the first one? - -You can modify the 'wildmode' option to configure the way Vim completes -filenames in the command mode. In this case, you can set the 'wildmode' -option to 'list': > - - :set wildmode=list -< -For more information, read > - - :help 'wildmode' -< - *faq-16.6* -16.6. How do I copy text from a buffer to the command line and from the - command line to a buffer? - -To copy text from a buffer to the command line, after yanking the text from -the buffer, use Ctrl-R 0 in the command line to paste the text. You can -also yank the text to a specific register and use CTRL-R <register> to -paste the text to the command line. You can use CTRL-R CTRL-W to paste the -word under the cursor in the command line. - -To copy text from the command line into a buffer, you can paste the -contents of the : register using the ":p command. The most recently -executed command line is stored in the : register. - -Another approach for copying and pasting text to and from the command line -is to open the command line window using q: from normal mode or CTRL-F from -the command-line mode. In the command line window you can use all the Vim -commands to edit the command line. - -For more information, read > - - :help c_CTRL-R - :help quote_: - :help cmdline-window -< - *faq-16.7* -16.7. How do I put a command onto the command history without executing it? - -To put a command onto the command history without executing it, press the -<Esc> key to cancel the command. - -For more information, read > - - :help c_<Esc> -< - *faq-16.8* -16.8. How do I increase the height of the command-line? - -You can increase the height of the command-line by changing the 'cmdheight' -option: > - - :set cmdheight=2 -< -For more information, read > - - :help 'cmdheight' - :help hit-enter - :help 05.7 -< - -============================================================================= - *faq-17* -SECTION 17 - VIMINFO - - *faq-17.1* -17.1. When I invoke Vim, I get error messages about illegal characters in - the viminfo file. What should I do to get rid of these messages? - -You can remove the $HOME/.viminfo or the $HOME/_viminfo file to get rid of -these error messages. - -For more information, read > - - :help viminfo-errors - :help viminfo-file-name - :help viminfo - :help 21.3 -< - *faq-17.2* -17.2. How do I disable the viminfo feature? - -By default, the viminfo feature is disabled. If the viminfo feature is -enabled by a system-wide vimrc file, then you can disable the viminfo -feature by setting the 'viminfo' option to an empty string in your local -.vimrc file: > - - :set viminfo="" -< -For more information, read > - - :help 'viminfo' -< - *faq-17.3* -17.3. How do I save and use Vim marks across Vim sessions? - -You can save and restore Vim marks across Vim sessions using the viminfo -file. To use the viminfo file, make sure the 'viminfo' option is not empty. -To save and restore Vim marks, the 'viminfo' option should not contain the -'f' flag or should have a value greater than zero for the 'f' option. - -For more information, read > - - :help 21.3 - :help viminfo - :help 'viminfo' - :help :wviminfo - :help :rviminfo -< - -============================================================================= - *faq-18* -SECTION 18 - REMOTE EDITING - - *faq-18.1* -18.1. How do I open a file with existing instance of gvim? What happened to - the Vim 5.x OpenWithVim.exe and SendToVim.exe files? - -Starting with Vim6, the OLE version of OpenWithVim.exe and SendToVim.exe -Vim utilities are replaced by the new client-server feature. To open the -file j.txt with an existing instance of Gvim (MyVim), use: > - - $ gvim --servername MyVim --remote-silent j.txt -< -To list the server names of all the currently running Vim instances, use > - - $ vim --serverlist -< -To get more information about client-server feature, read > - - :help client-server -< - *faq-18.2* -18.2. How do I send a command to a Vim server to write all buffers to disk? - -You can use the Vim remote server functionality to do this: > - - $ gvim --servername myVIM --remote-send "<C-\><C-N>:wall<CR>" -< -For more information, read > - - :help client-server - :help CTRL-\_CTRL-N - :help :wall -< - *faq-18.3* -18.3. Where can I get the documentation about the Vim remote server - functionality? - -You can get more information about the Vim remote server functionality by -reading > - - :help client-server -< - -============================================================================= - *faq-19* -SECTION 19 - OPTIONS - - *faq-19.1* -19.1. How do I configure Vim in a simple way? - -You can use the ":options" command to open the Vim option window: > - - :options -< -This window can be used for viewing and setting all the options. - -For more information, read > - - :help :options -< - *faq-19.2* -19.2. How do I toggle the value of an option? - -You can prefix the option with "inv" to toggle the value of the option: > - - :set invignorecase - :set invhlsearch -< -You can also suffix the option with "!" to toggle the value: > - - :set ignorecase! - :set hlsearch! -< -For more information, read > - - :help set-option -< - *faq-19.3* -19.3. How do I set an option that affects only the current buffer/window? - -You can use the ":setlocal" command to set an option that will affect only -the current file/buffer: > - - :setlocal textwidth=70 -< -Note that not all options can have a local value. You can use ":setlocal" -command to set an option locally to a buffer/window only if the option is -allowed to have a local value. - -You can also use the following command to set a option locally: > - - :let &l:{option-name} = <value> -< -For more information, read > - - :help :setlocal - :help local-options -< - *faq-19.4* -19.4. How do I use space characters for a Vim option value? - -To use space characters in a Vim option value, you have to escape the space -character. For example: > - - :set tags=tags\ /usr/tags -< -For more information, read > - - :help option-backslash -< - *faq-19.5* -19.5. Can I add (embed) Vim option settings to the contents of a file? - -You can use modelines to add Vim option settings to the contents of a file. -For example, in a C file, you can add the following line to the top or the -bottom of the file: > - - /* vim:sw=4: */ -< -This will set the 'shiftwidth' option to 4, when editing that C file. -For this to work, the 'modeline' option should be set. By default, the -'modeline' option is set. The 'modelines' settings specifies the number of -lines that will be checked for the Vim set commands. - -For more information, read > - - :help 21.6 - :help modeline - :help auto-setting - :help 'modeline' - :help 'modelines' -< - *faq-19.6* -19.6. How do I display the line numbers of all the lines in a file? - -You can set the 'number' option to display the line numbers for all the -lines. > - - :set number -< -For more information, read > - - :help 'number' -< - *faq-19.7* -19.7. How do I change the width of the line numbers displayed using the - "number" option? - -The width used for displaying the line numbers for the 'number' option is -hard-coded in Vim. It is not possible to change this width by setting some -option. - -The request and the patch to add an option to change the number of columns -used for the 'number' option is in the Vim todo list: > - - "Add an option to set the width of the 'number' column. Eight - positions is often more than needed. Or adjust the width to the length - of the file? - Add patch that adds 'numberlen' option. (James Harvey) - Other patch with min and max from Emmanuel Renieris (2002 Jul 24) - Other patch without an option by Gilles Roy (2002 Jul 25)" -< - *faq-19.8* -19.8. How do I display (view) all the invisible characters like space, tabs - and newlines in a file? - -You can set the 'list' option to see all the invisible characters in your -file. > - - :set list -< -With this option set, you can view space characters, tabs, newlines, -trailing space characters and wrapped lines. - -To not display the invisible characters (which is the default), you have to -reset the 'list' option: > - - :set nolist - (or) - :set list! -< -The ":set list!" command will toggle the current setting of the boolean -'list' option. - -You can modify the 'listchars' option to configure how and which invisible -characters are displayed. For example, with the following command all the -trailing space characters will be displayed with a '.' character. > - - :set listchars=trail:. -< -For more information, read > - - :help 'listchars' - :help 'list' -< - *faq-19.9* -19.9. How do I configure Vim to always display the current line and column - number? - -You can set the 'ruler' option to display current column and line number in -the status line: > - - :set ruler -< -For more information, read > - - :help 'ruler' -< - *faq-19.10* -19.10. How do I display the current Vim mode? - -You can set the 'showmode' option to display the current Vim mode. In -Insert, Replace and Visual modes, Vim will display the current mode on the -last line. > - - :set showmode -< -For more information, read > - - :help 'showmode' -< - *faq-19.11* -19.11. How do I configure Vim to show pending/partial commands on the - status line? - -You can set the 'showcmd' option to display pending/partial commands in the -status line: > - - :set showcmd -< -For more information, read > - - :help 'showcmd' -< - *faq-19.12* -19.12. How do I configure the Vim status line to display different - settings/values? - -You can set the 'statusline' option to display different values/settings in -the Vim status line. - -For more information, read > - - :help 'statusline' - :help 'laststatus' - :help 'rulerformat' - :help 'ruler' -< - *faq-19.13* -19.13. How do I configure Vim to display status line always? - -You can set the 'laststatus' option to 2 to display the status line always. > - - :set laststatus=2 -< -For more information, read > - - :help 'laststatus' -< - *faq-19.14* -19.14. How do I make a Vim setting persistent across different Vim - invocations/instances/sessions? - -To make a Vim option setting persistent across different Vim instances, add -your setting to the .vimrc or .gvimrc file. You can also use the ":mkvimrc" -command to generate a vimrc file for the current settings. - -For more information, read > - - :help save-settings - :help vimrc - :help gvimrc - :help vimrc-intro - :help :mkvimrc - :help initialization -< - *faq-19.15* -19.15. Why do I hear a beep (why does my window flash) about 1 second after - I hit the Escape key? - -This is normal behavior. If your window flashes, then you've got the visual -bell on. Otherwise, you should hear a beep. - -Vim needs a timeout to tell the difference between a simple escape and, -say, a cursor key sequence. When you press a key in normal mode (and even -in insert mode) and that key is the beginning of a mapping, Vim waits a -certain amount of time to see if the rest of the mapping sequence follows. -If the mapping sequence is completed before a given timeout period, the -mapping for that sequence of keys is applied. If you interrupt the mapping, -the normal actions associated with the keys are executed. - -For example, if you have a mapping defined as ":imap vvv Vim is great!!" -and you type "vvv" quickly, the "Vim is great!!" will be inserted into your -text. But if you type "vv v" then that is what will put into your text. -This is also true if you type "vvv" too slowly where "too slowly" is longer -than the value for the timeout option. Setting the timeout option to a -larger value can help alleviate problems that appear when using function -keys over a slow line. - -For more information, read > - - :help ttimeout -< - *faq-19.16* -19.16. How do I make the 'c' and 's' commands display a '$' instead of - deleting the characters I'm changing? - -To make the 'c' and 's' commands display a '$' instead of deleting the -characters, add the $ flag to the 'cpoptions' option: > - - :set cpoptions+=$ -< -For more information, read > - - :help 'cpoptions' -< - *faq-19.17* -19.17. How do I remove more than one flag using a single ":set" command - from a Vim option? - -You can remove more than one flag from a Vim option using a single ":set" -command, by specifying the flags in exactly the same order as they appear -in the option. For example, if you use the following command to remove the -'t' and 'n' flags from the 'formatoptions' option: > - - :set formatoptions-=tn -< -The 't' and 'n' flags will be removed from the 'formatoptions' option, only -if the 'formatoptions' option contains these flags in this order: 'tn'. -Otherwise, it will not remove the flags. To avoid this problem, you can -remove the flags one by one: > - - :set formatoptions-=t formatoptions-=n -< -For more information, read > - - :help :set-= -< - -============================================================================= - *faq-20* -SECTION 20 - MAPPING KEYS - - *faq-20.1* -20.1. How do I know what a key is mapped to? - -To see what a key is mapped to, use the following commands: > - - :map <key> - :map! <key> -< -You can also check the mappings in a particular mode using one of the -":cmap", ":nmap", ":vmap", ":imap", ":omap", etc commands. - -For more information, read > - - :help map-listing - :help map-overview -< - *faq-20.2* -20.2. How do list all the user-defined key mappings? - -You can list all the user-defined key mappings using: > - - :map -< -For more information, read > - - :help map-listing -< - *faq-20.3* -20.3. How do I unmap a previously mapped key? - -You can unmap a previously mapped key using the ":unmap" command: > - - :unmap <key> - :unmap! <key> -< -For mode specific mappings, you can use one of the -":nunmap/:vunmap/:ounmap/:iunmap/:lunmap/:cunmap" commands. - -The following command will fail to unmap a buffer-local mapped key: > - - :unmap <key> -< -To unmap a buffer-local mapped key, you have to use the <buffer> keyword in -the unmap command: > - - :unmap <buffer> <key> - :unmap! <buffer> <key> -< -For more information, read > - - :help :unmap - :help map-modes - :help map-local - :help 'mapleader' -< - *faq-20.4* -20.4. I am not able to create a mapping for the <xxx> key. What is wrong? - -First make sure that the key is passed to Vim. In insert mode, press CTRL-V -followed by the desired key. You should see the keycode corresponding to -the key . If you do see the keycode, then you can create a mapping for the -key using the following command: > - - :map <C-V><xxx> <your_command_to_be_mapped> -< -For more information, read > - - :help map-keys-fails - :help :map-special-keys - :help key-codes -< - *faq-20.5* -20.5. How do I map the numeric keypad keys? - -First make sure that the numeric keypad keys are passed to Vim. Next, you -can use the following command to map the numeric keypad keys: > - - :map <kSomething> <your_command> -< -where, <kSomething> can be kHome, kEnd, kPageUp, kPageDown, kPlus, kMinus, -kDivide, kMultiply, kEnter, etc. - -For more information, read > - - :help key-codes - :help terminal-options -< - *faq-20.6* -20.6. How do I create a mapping that works only in visual mode? - -You can create mappings that work only in specific mode (normal, command, -insert, visual, etc). To create a mapping that works only in the visual -mode, use the ":vmap" command: > - - :vmap <F3> <your mapping here> -< -For more information, read > - - :help :vmap - :help map-modes - :help 40.1 -< - *faq-20.7* -20.7. In a Vim script, how do I know which keys to use for my mappings, so - that the mapped key will not collide with an already used key? - -Vim uses most of the keys in the keyboard. You can use the <leader> prefix -in maps to define keys which will not overlap with Vim keys. For example: > - - :map <leader>S <C-W>s - :map <leader>j <C-W>j - :map <leader>k <C-W>k -< -where by default <leader> gets substituted with a backslash (\), so the -user would enter > - - \s - \j - \k -< -to invoke the above map commands. The user can change the mapleader -variable to be whatever they wanted: > - - :let mapleader = "," -< -When writing a plugin or other script, more often than not, it is advisable -to use :noremap instead of :map to avoid side effects from user defined -mappings. - -For more information, read > - - :help <Leader> - :help <LocalLeader> - :help write-plugin -< - *faq-20.8* -20.8. How do I map the escape key? - -You can map the Escape key to some other key using the ":map" command. For -example, the following command maps the escape key to CTRL-O. > - - :map <C-O> <Esc> -< - *faq-20.9* -20.9. How do I map a key to perform nothing? - -You can map a key to <Nop> to perform nothing when the key is pressed. For -example, with the following mappings, the <F7> key will do nothing when -pressed. > - - :map <F7> <Nop> - :map! <F7> <Nop> -< -For more information, read > - - :help <Nop> - :help :map - :help :map! - :help map-modes -< - *faq-20.10* -20.10. I want to use the Tab key to indent a block of text and Shift-Tab - key to unindent a block of text. How do I map the keys to do this? - This behavior is similar to textpad, visual studio, etc. - -Use the following mapping: > - - :inoremap <S-Tab> <C-O><LT><LT> - :nnoremap <Tab> >> - :nnoremap <S-Tab> <LT><LT> - :vnoremap <Tab> > - :vnoremap <S-Tab> <LT> -< -Note that, the <S-Tab> mapping will work only if Vim receives the correct -key sequence. This is mostly the case with GUI Vim. - -For more information, read > - - :help :inoremap - :help :nnoremap - :help :vnoremap - :help <S-Tab> - :help i_CTRL-O - :help >> - :help << - :help <LT> -< - *faq-20.11* -20.11. In my mappings the special characters like <CR> are not recognized. - How can I configure Vim to recognize special characters? - -Check the value of the 'cpoptions' option: > - - :set cpoptions? -< -If this option contains the '<' flag, then special characters will not be -recognized in mappings. Remove the '<' flag from 'cpoptions' option: > - - :set cpo-=< -< -Also, check the value of the 'compatible' option: > - - :se compatible? -< -The 'compatible' option must be reset: > - - :se nocompatible -< -For more information, read > - - :help 'cpoptions' - :help 'compatible' -< - *faq-20.12* -20.12. How do I use the '|' to separate multiple commands in a map? - -You can escape the '|' character using backslash (\) to use '|' in a map. > - - :map _l :!ls \| more<CR> -< -You can also try the following command: > - - :map _l :!ls <bar> more<CR> -< -There are also other ways to do this. - -For more information, read > - - :help map_bar -< - *faq-20.13* -20.13. If I have a mapping/abbreviation whose ending is the beginning of - another mapping/abbreviation, how do I keep the first from expanding - into the second one? - -Instead of using the ":map lhs rhs" command, use the ":noremap lhs rhs" -command. For abbreviations, use "noreabbrev lhs rhs". The "nore" prefix -prevents the mapping or abbreviation from being expanded again. - -For more information, read > - - :help :noremap - :help :noreabbrev -< - *faq-20.14* -20.14. Why does it take a second or more for Vim to process a key, - sometimes when I press a key? - -Make sure you have not defined a mapping for this key using the following -command: > - - :map <key> -< -If a mapping is defined for this key and the mapped key contains more than -one character, then Vim will wait for the next character to be pressed to -determine whether it is the mapped key or not. For example, if you have -mapped "ab", then if you press "a", Vim will wait for the next key to be -pressed. If the next key is "b", Vim will execute the mapped sequence. -Otherwise, Vim will proceed with the normal processing of "a" followed by -the next key. If the 'timeout' option is set (which is the default), then -Vim will timeout after waiting for the period specified with the -'timeoutlen' option (default is 1 second). - -For more information, read > - - :help map-typing - :help 'timeoutlen' - :help 'ttimeoutlen' - :help 'timeout' - :help 'ttimeout' - :help vt100-cursor-keys - :help slow-fast-terminal -< - *faq-20.15* -20.15. How do I map a key to run an external command using a visually - selected text? - -You can the ":vmap" command to map a key in the visual mode. In the mapped -command sequence, you have to first yank the text. The yanked text is -available in the '"' register. Now, you can use the contents of this -register to run the external command. For example, to run the external -command "perldoc" on a visually selected text, you can use the following -mapping: > - - :vmap <F7> y:!exec "!perldoc '" . @" . "'"<CR> -< -If you want the mapping to work in the visual mode, but not with the -highlighted text, you can use the following command: > - - :vmap <F7> :<C-U>!perldoc <cword><CR> -< -The above mapping will use the word under the cursor instead of the -highlighted text. Note the use of the <C-U> before invoking the "perldoc" -external command. The <C-U> is used to erase the range of text selected in -the visual mode and displayed on the command line. If the visual range is -not removed using <C-U>, then the output from the external command will -replace the visually selected text. - -For more information, read > - - :help :vmap - :help quote_quote - :help let-register - :help c_CTRL-U - :help :!cmd -< - *faq-20.16* -20.16. How do I map the Ctrl-I key while still retaining the functionality - of the <Tab> key? - -The Ctrl-I key and the <Tab> key produce the same keycode, so Vim cannot -distinguish between the Ctrl-I and the <Tab> key. When you map the Ctrl-I -key, the <Tab> key is also mapped (and vice versa). The same restriction -applies for the Ctrl-[ key and the <Esc> key. - -For more information, read > - - :help keycodes -< - -============================================================================= - *faq-21* -SECTION 21 - ABBREVIATIONS - - *faq-21.1* -21.1. How do I auto correct misspelled words? - -You can auto correct misspelled words using abbreviations. For example, the -following abbreviation can be used to correct "teh" with "the": > - - :abbreviate teh the -< -Vim supports abbreviations in insert mode, replace mode and command-line -mode. - -For more information, read > - - :help 24.7 - :help abbreviations - :help Q_ab -< - *faq-21.2* -21.2. How do I create multi-line abbreviations? - -You can create multi-line abbreviations by embedding the "<CR>" -key code in the text: > - - iabbrev #c --------------<CR>-- Date:<CR>--<CR>--------- -< -With the above abbreviation, when you type #c, it will be expanded to -the following text: - --------------- --- Date: --- ---------- - -For more information, read > - - :help abbreviations -< - *faq-21.3* -21.3. When my abbreviations are expanded, an additional space character is - added at the end of the expanded text. How do I avoid this character? - -To avoid an additional space character at the end of the expanded text, you -can expand the abbreviation by pressing the CTRL-] key. The abbreviation -will be expanded without adding a space character at the end. - -Another alternative is to use the following function and command: - -function! Eatchar(pat) - let c = nr2char(getchar()) - return (c =~ a:pat) ? '' : c -endfunction -command! -nargs=+ Iabbr execute "iabbr" <q-args> . "<C-R>=Eatchar('\\s')<CR>" - -Now, define your abbreviations using the new "Iabbr" command instead of the -builtin "iabbrev" command. With this command, after expanding the -abbreviated text, the next typed space character will be discarded. - -For more information, read > - - :help abbreviations -< - *faq-21.4* -21.4. How do I insert the current date/time stamp into the file? - -You can use the strftime() function to insert the current data/time stamp -in a file. For example, you can use the following abbreviation: > - - iabbrev dts <C-R>=strftime("%y/%m/%d %H:%M")<CR> -< -With this abbreviation, when you type dts in insert mode, it will be -expanded to the date/time stamp. - -Some other forms of the above abbreviation are listed below: > - - iabbrev mdyl <C-R>=strftime("%a %d %b %Y")<CR> - iabbrev mdys <C-R>=strftime("%y%m%d")<CR> - iabbrev mdyc <C-R>=strftime("%c")<CR> - iabbrev hml <C-R>=strftime("%d/%m/%y %H:%M:%S")<CR> - iabbrev hms <C-R>=strftime("%H:%M:%S")<CR> -< -For more information, read > - - :help strftime() - :help i_CTRL-R -< - *faq-21.5* -21.5. How do I prevent an abbreviation from expanding in insert mode? - -You can prevent an abbreviation from expanding in insert mode by typing -CTRL-V before the character after the abrreviated word. - -For more information, read > - - :help abbreviations -< - -============================================================================= - *faq-22* -SECTION 22 - RECORD AND PLAYBACK - - *faq-22.1* -22.1. How do I repeat an editing operation (insertion, deletion, paste, - etc)? - -You can repeat the last editing operation using the '.' command. This will -repeat the last simple change like a insert, delete, change, paste, etc. - -For more information, read > - - :help 04.3 - :help single-repeat - :help Q_re -< - *faq-22.2* -22.2. How I record and repeat a set of key sequences? - -You can use the 'q' command in normal mode to record a set of key sequences -and store it in a register. For example, in the normal mode you can press q -followed by a register name {0-9a-bA-Z"} to start the recording. To -end/stop the recording press q again. You can playback/repeat the recorded -key sequences by pressing @ followed by the register name. e.g. @a. - -Another approach is to start Vim with the "-w" command-line argument. > - - $ vim -w <file_name> -< -Vim will record all the characters typed in the session in the -specified file "file_name". You can use the recorded file with the "-s" -command line argument to play it back: > - - $ vim -s <file_name> -< -For more information, read > - - :help 10.1 - :help recording - :help -w - :help -s -< - *faq-22.3* -22.3. How do I edit/modify a recorded set of key sequences? - -The recorded key sequences are stored in a register. You can paste the -contents of the register into a Vim buffer, edit the pasted text and again -yank the text into the register. You can also use the ":let" command to -modify the register. For example: > - - :let @a = "iHello World\<Esc>" -< -For more information, read > - - :help recording - :help 10.1 - :help let-register - :help <> - :help 'cpoptions' -< - *faq-22.4* -22.4. How do I write recorded key sequences to a file? - -The recorded key sequences are stored in a register. You can paste the -contents of the register into a Vim buffer. Now you can save the buffer -into a file. You can also modify the pasted text and again yank into the -register to modify the recorded key sequence. For example, if you record a -set of key sequences using qa ..... q. The recorded key sequences are -stored in the register 'a'. You can paste the contents of register 'a' -using "ap. - -For more information, read > - - :help recording - :help 10.1 -< - *faq-22.5* -22.5. I am using register 0 to record my key sequences (i.e. q0 .... q). - In the recorded key sequences, I am yanking some text. After the - first replay of the recorded key sequence, I am no longer able to - play it back. - -Register 0 contains the text from the last yank operation. In your recorded -key sequence, when the yank is performed, register 0 is overwritten with -the yanked text. So your recording stored in register 0 is lost. You have -to use some other register. - -For more information, read > - - :help registers -< - -============================================================================= - *faq-23* -SECTION 23 - AUTOCOMMANDS - - *faq-23.1* -23.1. How do I execute a command when I try to modify a read-only file? - -You can use the FileChangedRO autocommand event to execute a command when a -read-only file modified. For example, you can use this event to checkout a -read-only file: > - - :autocmd FileChangedRO * call MyCheckoutFunction() -< -For more information, read > - - :help FileChangedRO -< - *faq-23.2* -23.2. How do I execute a command every time when entering a buffer? - -You can use the BufEnter autocommand event to execute a command every time -when entering a buffer. For example: > - - :autocmd BufEnter *.c set formatoptions=croqt -< -For more information, read > - - :help BufEnter -< - *faq-23.3* -23.3. How do I execute a command every time when entering a window? - -You can use the WinEnter autocommand event to execute a command every time -when entering a window. For example: > - - :autocmd WinEnter *.c call MyFunction() -< -For more information, read > - - :help WinEnter -< - *faq-23.4* -23.4. From an autocmd, how can I determine the name of the file or the - buffer number for which the autocommand is executed? - -You can use the special words <afile> or <abuf> in an autocmd to get the -name of the file or the buffer number for which the autocommand is -executed. - -For more information, read > - - :help :<afile> - :help :<abuf> - :help :<amatch> -< - *faq-23.5* -23.5. How do I automatically save all the changed buffers whenever Vim - loses focus? - -You can define an autocommand for the FocusLost event which will save all -the modified buffers whenever Vim loses focus: > - - :autocmd FocusLost * wall -< -For more information, read > - - :help FocusLost - :help :wall -< - *faq-23.6* -23.6. How do I execute/run a function when Vim exits to do some cleanup? - -You can use VimLeave autocmd event to execute a function just before Vim -exists. For example, > - - :autocmd VimLeave * call MyCleanupFunction() -< -For more information, read > - - :help VimLeave -< - -============================================================================= - *faq-24* -SECTION 24 - SYNTAX HIGHLIGHT - - *faq-24.1* -24.1. How do I turn off/on syntax highlighting? - -By default, the Vim syntax highlighting is turned off. To enable the syntax -highlighting, you can use one of the following commands: > - - :syntax enable -< - or > - - :syntax on -< -To disable the syntax highlighting, you can use the following command: > - - :syntax off -< -For more information, read > - - :help 06.1 - :help 06.4 - :help :syntax-enable - :help :syntax-on - :help :syn-clear -< - *faq-24.2* -24.2. How do I change the background and foreground colors used by Vim? - -Vim uses the "Normal" highlight group for the background and foreground -colors. To change the foreground/background colors, you have to modify the -"Normal" highlight group. For example, to set the background color to blue -and foreground color to white, you can use > - - :highlight Normal ctermbg=blue ctermfg=white guibg=blue guifg=white -< -If you are using the Motif or the Athena version of the GUI Vim, then you -can modify the foreground and background resource names in the .Xdefaults -files to change the colors: > - - Vim.foreground: Black - Vim.backround: Wheat -< -You can also use the "-foreground" and "-background" command-line arguments -to specify the foreground and background colors. These arguments are -supported only in the Motif or Athena versions: > - - $ gvim -foreground Black -background Wheat -< -For more information, read > - - :help :highlight - :help .Xdefaults - :help -gui -< - *faq-24.3* -24.3. How do I change the highlight colors to suit a dark/light background? - -You can set the 'background' option to either 'dark' or 'light' to change -the highlight colors to suit a dark/light background: > - - :set background=dark -< -For more information, read > - - :help 'background' - :help 6.2 -< - *faq-24.4* -24.4. How do I change the color of the line numbers displayed when the - ":set number" command is used? - -The line numbers displayed use the LineNr highlighting group. To display -the current colors used, use > - - :hi LineNr -< -To change the color modify the LineNr highlight group. For example: > - - :hi linenr guifg=red guibg=black -< -This will give red numbers on a black background in GVIM. - -For more information, read > - - :help :highlight -< - *faq-24.5* -24.5. How do I change the background color used for a Visually selected - block? - -You can modify the 'Visual' highlight group to change the color used for a -visually selected block: > - - :highlight Visual guibg=red -< -For more information, read > - - :help :highlight - :help hl-Visual -< - *faq-24.6* -24.6. How do I highlight the special characters (tabs, trailing spaces, end - of line, etc) displayed by the 'list' option? - -You can modify the "NonText" and "SpecialKey" highlight groups to highlight -the special characters displayed by the 'list' option: > - - :highlight NonText guibg=red - :highlight SpecialKey guibg=green -< -The "NonText" highlighting group is used for "eol", "extends" and -"precedes" settings in the "listchars" option. The "SpecialKey" -highlighting group is used for the "tab" and "trail" settings. - -For more information, read > - - :help 'listchars' - :help hl-NonText - :help hl-SpecialKey -< - *faq-24.7* -24.7. How do I specify a colorscheme in my .vimrc/.gvimrc file, so that Vim - uses the specified colorscheme everytime? - -You can specify the color scheme using the ":colorscheme" command in your -.vimrc or .gvimrc file: > - - colorschme evening -< -For more information, read > - - :help :colorscheme -< - *faq-24.8* -24.8. Vim syntax highlighting is broken. When I am editing a file, some - parts of the file is not syntax highlighted or syntax highlighted - incorrectly. - -Vim doesn't read the whole file to parse the text for syntax highlighting. -It starts parsing wherever you are viewing the file. That saves a lot of -time, but sometimes the colors are wrong. A simple fix is refreshing the -screen using the CTRL-L key. Or scroll back a bit and then forward again. -You can also use the command: > - - :syntax sync fromstart -< -Note that this might considerably slow down the screen refreshing. - -For more information, read > - - :help :syn-sync - :help :syn-sync-first -< - *faq-24.9* -24.9. Is there a built-in function to syntax-highlight the corresponding - matching bracket? - -No. Vim doesn't support syntax-highlighting matching brackets. You can try -using the plugin developed by Charles Campbell: > - - http://vim.sourceforge.net/tips/tip.php?tip_id=177 -< -You can jump to a matching bracket using the '%' key. You can set the -'showmatch' option to temporarily jump to a matching bracket when in insert -mode. - -For more information, read > - - :help % - :help 'showmatch' - :help 'matchtime' - :help 'matchpairs' -< - *faq-24.10* -24.10. How do I turn off the C comment syntax highlighting? - -You can use the following command to turn off C comment syntax -highlighting: > - - :highlight clear comment -< -For more information, read > - - :help c-syntax -< - *faq-24.11* -24.11. How do I add my own syntax extensions to the standard syntax files - supplied with Vim? - -You should not modify the syntax files supplied with Vim to add your -extensions. When you install the next version of Vim, you will lose your -changes. Instead you should create a file under the ~/.vim/after/syntax -directory with the same name as the original syntax file and add your -additions to this file. - -For more information, read > - - :help mysyntaxfile-add - :help 'runtimepath' -< - *faq-24.12* -24.12. How do I replace a standard syntax file that comes with the Vim - distribution with my own syntax file? - -You can replace a standary syntax file that comes with the Vim distribution -by creating a file with the same name as the original syntax file and -placing it in the vim runtime syntax (~/.vim/syntax) directory. For -example, to replace the c.vim syntax file in a Unix system, place the new -c.vim in the ~/.vim/syntax directory. In a MS-Windows system, place the new -syntax file in the $HOME/vimfiles/syntax or $VIM/vimfiles/syntax directory. - -For more information, read > - - :help mysyntaxfile-replace - :help 44.11 - :help mysyntaxfile -< - *faq-24.13* -24.13. How do I highlight all the characters after a particular column? - -You can use the ":match" command to highlight all the characters after a -particular column: > - - :match Todo '\%>75v.\+' -< -This will highlight all the characters after the 75th column. - -For more information, read > - - :help :match - :help /\%v - :help /\+ - :help /. -< - *faq-24.14* -24.14. How do I convert a source file (.c, .h, etc) with the Vim syntax - highlighting into a HTML file? - -You can use the 2html.vim script to convert a source file into a HTML file -with the Vim syntax highlighting. Use the following command: > - - :runtime! syntax/2html.vim -< -For more information, read > - - :help convert-to-HTML -< - *faq-24.15* -24.15. How do I list the definition of all the current highlight groups? - -You can list the definition of all the current highlight groups using the -":highlight" (without any arguments) ex command. - -For more information, read > - - :help :highlight -< - -============================================================================= - *faq-25* -SECTION 25 - VIM SCRIPT WRITING - - *faq-25.1* -25.1. How do I list the names of all the scripts sourced by Vim? - -You can use the ":scriptnames" command to list the names of all the scripts -sourced by Vim: > - - :scriptnames -< -For more information, read > - - :help :scriptnames -< - *faq-25.2* -25.2. How do I debug Vim scripts? - -Vim has built-in support for a primitive debugger to debug Vim plugins and -scripts. Using this debugger you can set breakpoints and step through the -plugin functions. - -For more information, read > - - :help debug-scripts - :help -D -< - *faq-25.3* -25.3. How do I locate the script/plugin which sets a Vim option? - -You can use the ":verbose" command to locate the plugin/script which last -modified a Vim option. For example: > - - :verbose set textwidth? -< -For more information, read > - - :help :set-verbose - :help :verbose -< - *faq-25.4* -25.4. I am getting some error/informational messages from Vim (possibly - when running a script), the messages are cleared immediately. How do - I display the messages again? - -You can use the ":messages" command to display the previous messages. > - - :messages -< -For more information, read > - - :help :messages - :help :echoerr - :help :echomsg - :help message-history -< - *faq-25.5* -25.5. How do I save and restore a plugin specific information across Vim - invocations? - -Vim will save and restore global variables that start with an uppercase -letter and don't contain a lower case letter. For this to work, the -'viminfo' option must contain the '!' flag. Vim will store the variables in -the viminfo file. - -For more information, read > - - :help 'viminfo' - :help viminfo-file - :help variables -< - *faq-25.6* -25.6. How do I start insert mode from a Vim function? - -You can use the ":startinsert" command to start the insert mode from inside -a Vim function. - -For more information, read > - - :help :startinsert -< - *faq-25.7* -25.7. How do I change the cursor position from within a Vim function? - -You can use the cursor() function to position the cursor. > - - call cursor(lnum, col) -< -You can also use the following command to change the cursor position: > - - exe "normal! " . lnum . "G" . col . "|" -< -For more information, read > - - :help cursor() - :help bar -< - *faq-25.8* -25.8. How do I check the value of an environment variable in the .vimrc - file? - -You can use prefix the environment variable name with the '$' character to -use it from a Vim script/function. You can refer to the value of an -environment variable using the $env_var syntax: > - - if $EDITOR == 'vi' - endif -< -For more information, read > - - :help expr-env -< - *faq-25.9* -25.9. How do I check whether an environment variable is set or not from a - Vim function? - -You can use the exists() function to check for the existence of a -environment variable. > - - if exists("$MY_ENV_VAR") - endif -< -For more information, read > - - :help exists() - :help expr-env -< - *faq-25.10* -25.10. How do I call/use the Vim built-in functions? - -You can use the ":call" command to invoke a Vim built-in function: > - - :call cursor(10,20) -< -You can use the ":echo" command to echo the value returned by a function: > - - :echo char2nr('a') -< -You can use the ":let" command to assign the value returned by a function -to a variable: > - - :let a = getline('.') -< -To store the return value from a function into a Vim register, you can use -the following command: > - - :let @a = system('ls') -< -The above command will store the return value from the 'ls' command into -the register 'a'. - -For more information, read > - - :help :call - :help :echo - :help :let - :help :let-register - :help user-functions - :help usr_41.txt -< - *faq-25.11* -25.11. I am using some normal mode commands in my Vim script. How do I - avoid using the user-defined mappings for these normal mode commands - and use the standard Vim functionality for these normal mode - commands? - -You can use the "normal!" command in your script to invoke a normal-mode -command. This will use the standard functionality of the normal mode -command and will not use the user-defined mapping. - -For more information, read > - - :help :normal -< - *faq-25.12* -25.12. How do I get the current visually selected text into a Vim variable - or register? - -You can get the current visually selected text into a Vim variable by -yanking the text into Vim register and then assigning the contents of the -register into the variable: > - - :normal! gvy - :let myvar = @" -< -The above command copies the visually selected text into the variable -"myvar". - -You can also use the command: > - - :normal! gv"*y -< -In the above command, gv reselects the last visually selected text and the -rest of the command copies the selected text into the * (clipboard) -register. Alternatively, you can set the 'a' flag in the 'guioptions' -option to automatically copy a visually selected text into the * register. -To do this as part of a visual map, you can use a command similar to the -one shown below: > - - :vmap <F3> "*y:call ... -< -For more information, read > - - :help gv - :help :normal - :help let-@ - :help quotestar - :help clipboard - :help registers -< - *faq-25.13* -25.13. I have some text in a Vim variable 'myvar'. I would like to use this - variable in a ":s" substitute command to replace a text 'mytext'. - How do I do this? - -You can use the 'execute' command to evaluate the variable: > - - :execute '%s/mytext/' . myvar . '/' -< -For more information, read > - - :help :execute -< -You can also use "\=" in the substitute command to evaluate the variable: > - - :%s/mytext/\=myvar/ -< -For more information, read > - - :help sub-replace-special -< - *faq-25.14* -25.14. A Vim variable (bno) contains a buffer number. How do I use this - variable to open the corresponding buffer? - -The :buffer command will not accept a variable name. It accepts only a -buffer number or buffer name. You have to use the ":execute" command to -evaluate the variable into the corresponding value. For example: > - - :execute "buffer " . bno -< -For more information, read > - - :help :execute -< - *faq-25.15* -25.15. How do I store the value of a Vim option into a Vim variable? - -You can prefix the option name with the '&' character and assign the option -value to a Vim variable using the "let" command. For example, to store the -value of the 'textwidth' option into the Vim variable "old_tw", you can use -the following command: > - - :let old_tw = &tw -< -To do the opposite, to set the 'textwidth' option with the value stored in -the 'old_tw' variable, you can use the following command: > - - :let &tw = old_tw -< -For more information, read > - - :help expr-option - :help let-option -< - *faq-25.16* -25.16. I have copied and inserted some text into a buffer from a Vim - function. How do I indent the inserted text from the Vim function? - -You can use the following command to format the just inserted text: > - - :normal '[='] -< -For more information, read > - - :help '[ - :help '] - :help = - :help :normal -< - *faq-25.17* -25.17. How do I get the character under the cursor from a Vim script? - -You can use the getline() function and use string index [] to get the -character: > - - :echo getline(".")[col(".") - 1] -< -In the above command, getline(".") returns the text in the current line. -The indexing of the string starts at zero, and you can get a single -character in a string by its index with the "string[index]" notation. The -col(".") returns the column of the cursor position; the adjustment is to -get the right character of the string. - -Alternatively, you can use the following sequence of commands to get the -character under the cursor: > - - normal! vy - let ch=@" -< -Note that the above commands will change the '< and '> marks. - -For more information, read > - - :help getline() - :help col() - :help expr-[] -< - *faq-25.18* -25.18. How do I get the name of the current file without the extension? - -You can get the name of the current file without the extension using: > - - :echo expand("%:r") -< -With some commands, you can use the file name modifiers directly: > - - :cd %:p:h - :!gcc -o %:r.o % -< -For more information, read > - - :help filename-modifiers - :help expand() - :help cmdline-special - :help fnamemodify() -< - *faq-25.19* -25.19. How do I get the basename of the current file? - -You can use the :t filename modifier to get the basename of the current -file: > - - :echo expand("%:t") -< -For more information, read > - - :help filename-modifiers -< - *faq-25.20* -25.20. How do I get the output from a Vim function into the current buffer? - -You can insert the return value from a function using the following command -in insert mode: > - - <C-R>=MyFunc() -< -Note that this will only insert the return value of the function. - -For more information, read > - - :help i_CTRL-R - :help i_CTRL-R_CTRL-R - :help i_CTRL-R_CTRL-O - :help expression -< - *faq-25.21* -25.21. How do I call external programs from a Vim function? - -There are several ways to call external programs from a Vim function. You -can use the builtin system() function to invoke external programs and get -the result: > - - :let output = system("ls") -< -You can also use "!" ex-command to run an external command. - -For more information, read > - - :help system() - :help :! - :help 10.9 -< - *faq-25.22* -25.22. How do I get the return status of a program executed using the ":!" - command? - -You can use the predefined Vim v:shell_error variable to get the return -status of the last run shell command. - -For more information, read > - - :help v:shell_error -< - *faq-25.23* -25.23. How do I determine whether the current buffer is modified or not? - -You can check the value of the 'modified' option to determine whether the -current buffer is modified: > - - :set modified? -< -From a Vim script, you can check the value of the 'modified' option: > - - if &modified - echo "File is modified" - endif -< -For more information, read > - - :help 'modified' -< - *faq-25.24* -25.24. I would like to use the carriage return character in a normal - command from a Vim script. How do I specify the carriage return - character? - -You can use the ":execute" command to specify the special (control) -character in a normal mode command: > - - :execute "normal \<CR>" - :execute "normal ixxx\<Esc>" -< -For more information, read > - - :help :execute - :help expr-quote -< - *faq-25.25* -25.25. How do I split long lines in a Vim script? - -You can split long lines in a Vim script by inserting the backslash -character ("\") at the start of the next line. For example, - -For more information, read > - - :help line-continuation -< - *faq-25.26* -25.26. When I try to "execute" my function using the "execute 'echo - Myfunc()'" command, the cursor is moved to the top of the current - buffer. Why? - -The ":execute" command runs the normal mode command specified by the -argument. In the case of the following command: > - - :execute "echo Myfunc()" -< -The call to "echo Myfunc()" will return 0. The ":execute" command will run -the normal mode command "0", which moves the cursor to the top of the file. -To call a Vim function, you should use the ":call" command instead of the -":execute" command: > - - :call Myfunc() -< -For more information, read > - - :help :call - :help :execute - :help :echo - :help user-functions - :help 41.5 - :help 41.6 -< - *faq-25.27* -25.27. How do I source/execute the contents of a register? - -If you have yanked a set of Vim commands into a Vim register (for example -register 'a'), then you can source the contents of the register using one -of the following commands: - - :@a -or - :exe @a - -For more information, read > - - :help :@ -< - *faq-25.28* -25.28. After calling a Vim function or a mapping, when I press the 'u' - key to undo the last change, Vim undoes all the changes made by - the mapping/function. Why? - -When you call a function or a mapping, all the operations performed by the -function/mapping are treated as one single operation. When you undo the -last operation by pressing 'u', all the changes made by the -function/mapping are reversed. - -For more information, read > - - :help undo-redo - :help map-undo -< - *faq-25.29* -25.29. How can I call a function defined with s: (script local function) - from another script/plugin? - -The s: prefix for a Vim function name is used to create a script local -function. A script local function can be called only from within that -script and cannot be called from other scripts. To define a function in a -script/plugin, so that it can be called from other plugins/scripts, define -the function without the s: prefix. - -For more information, read > - - :help script-variable - :help script-local - :help :scriptnames -< - *faq-25.30* -25.30. Is it possible to un-source a sourced script? In otherwords, reverse - all the commands executed by sourcing a script. - -No. It is not possible to reverse or undo all the commands executed by -sourcing a script. - -For more information, read > - - :help :source -< - -============================================================================= - *faq-26* -SECTION 26 - PLUGINS - - *faq-26.1* -26.1. How do I set different options for different types of files? - -You can create filetype plugins to set different options for different -types of files. You should first enable filetype plugins using the command: > - - :filetype plugin on -< -A filetype plugin is a vim script that is loaded whenever Vim opens or -creates a file of that type. For example, to ensure that the 'textwidth' -option is set to 80 when editing a C program (filetype 'c'), create one of -the following files: > - - ~/.vim/ftplugin/c.vim (Unix) - %HOME%\vimfiles\ftplugin\c.vim (Windows) -< -with the following text in it: > - - setlocal textwidth=80 -< -You can also use autocommands to set specific options when editing specific -type of files. For example, to set the 'textwidth' option to 75 for only -*.txt files, you can use the following autocmd: > - - autocmd BufRead *.txt setlocal textwidth=80 -< -For more information, read > - - :help filetype-plugin - :help add-filetype-plugin - :help autocmd - :help 40.3 -< - *faq-26.2* -26.2. I have downloaded a Vim plugin or a syntax file or a indent file, or - a color scheme or a filetype plugin from the web. Where should I copy - these files so that Vim will find them? - -You can place the Vim runtime files (plugins, syntax files, indent files, -color schemes, filetype plugins, etc) under one of the directories -specified in the 'runtimepath' option. To determine the current value of -the 'runtimepath' option, use the following command: > - - :set runtimepath -< -For Unix systems, this is usally the "$HOME/.vim" directory. For MS-Windows -systems, this is usually the $VIM\vimfiles or $HOME\vimfiles directory. -Depending on the type of the runtime file, you have to place it under a -specific directory under the above runtime directory. The names of the -directories are listed below: > - - colors/ - color scheme files - compiler/ - compiler files - doc/ - documentation - ftplugin/ - filetype plugins - indent/ - indent scripts - keymap/ - key mapping files - lang/ - menu translations - plugin/ - plugin scripts - syntax/ - syntax files - tutor/ - files for vimtutor -< -For more information, read > - - :help your-runtime-dir - :help 'runtimepath' - :help :runtime -< - *faq-26.3* -26.3. How do I extend an existing filetype plugin? - -You can extend an existing filetype plugin by creating a file under either -the $VIMRTUNTIME/after/ftplugin or the $VIMRTUNTIME/ftplugin directory. The -name of the file should be the same as the name of the existing filetype -plugin file. You can place your additions to the new file. - -If you placed the file in the after/ftplugin runtime directory, then Vim -will first source the existing filetype plugin file and then will source -the new file. If you placed the file in the $VIMRTUNTIME/ftplugin runtime -directory, then Vim will first source the new file and then will source the -existing filetype plugin file. - -For more information, read > - - :help ftplugin-overrule - :help filetype-plugin - :help add-filetype-plugin - :help 'runtimepath' -< - *faq-26.4* -26.4. How do I turn off loading the Vim plugins? - -You can reset the 'loadplugins' option to turn off loading the plugins: > - - :set noloadplugins -< -You can also specify the "--noplugin" command line argument to stop loading -the plugins: > - - $ vim --noplugin -< -For more information, read > - - :help 'loadplugins' - :help --noplugin - :help load-plugins -< - *faq-26.5* -26.5. How do I turn on/off loading the filetype plugins? - -By default, Vim will not load the filetype plugins. You can configure Vim -to load filetype plugins using the command: > - - filetype plugin on -< -You can turn off loading the filetype plugins using: > - - filetype plugin off -< -For more information, read > - - :help filetype-plugin-on - :help filetype-plugin-off - :help :filetype -< - *faq-26.6* -26.6. How do I override settings made in a file type plugin in the global - ftplugin directory for all the file types? - -You can use an autocommand triggered on the FileType event: > - - au Filetype * set formatoptions=xyz -< -This should at least be after "filetype on" in your vimrc. Best is to put -it in your "myfiletypefile" file, so that it's always last. - -If you want to override a setting for a particular filetype, then create a -file with the same name as the original filetype plugin in the -~/.vim/after/ftplugin directory For example, to override a setting in the -c.vim filetype plugin, create a c.vim file in the ~/.vim/after/ftplugin -directory and add your preferences in this file. - -For more information, read > - - :help ftplugin-overrule - :help ftplugins - :help myfiletypefile -< - *faq-26.7* -26.7. How do I disable the Vim directory browser plugin? - -To disable the directory browsing Vim plugin, add the following line to -your .vimrc file: > - - let loaded_explorer = 1 -< -For more information, read > - - :help file-explorer -< - *faq-26.8* -26.8. How do I set the filetype option for files with names matching a - particular pattern or depending on the file extension? - -You can set the 'filetype' option for files with names matching a -particular pattern using an autocmd. For example, to set the 'filetype' -option to 'c' for all files with extension '.x', you can use the following -autocmd: > - - autocmd! BufRead,BufNewFile *.x setfiletype c -< -A better alternative to the above approach is to create a filetype.vim file -in the ~/.vim directory (or in one of the directories specified in the -'runtimepath' option) and add the following lines: > - - " my filetype file - if exists("did_load_filetypes") - finish - endif - augroup filetypedetect - au! BufRead,BufNewFile *.x setfiletype c - augroup END -< -For more information, read > - - :help new-filetype - :help 43.2 - :help :setfiletype -< - -============================================================================= - *faq-27* -SECTION 27 - EDITING PROGRAM FILES - - *faq-27.1* -27.1. How do I enable automatic indentation for C/C++ files? - -You can enable file-type based indentation using: > - - :filetype indent on -< -If you want to only enable automatic C indentation, then use: > - - :set cindent -< -For more information, read > - - :help 'cindent' - :help C-indenting - :help filetype -< - *faq-27.2* -27.2. How do I configure the indentation used for C/C++ files? - -You can configure the Vim C indentation by modifying the value of the -'cinoptions', 'cinkeys' and 'cinwords' options. - -For more information, read > - - :help 'cindent' - :help 'cinoptions' - :help 'cinkeys' - :help 'cinwords' - :help C-indenting - :help cinoptions-values - :help 'smartindent' -< - *faq-27.3* -27.3. How do I turn off the automatic indentation feature? - -By default, the automatic indentation is not turned on. You must have -configured Vim to do automatic indentation in either .vimrc or .gvimrc -files. You can disable automatic indentation using either, > - - :filetype indent off -< -or > - - :set nocindent -< -Also, check the setting for the following options: > - - :set autoindent? - :set smartindent? - :set indentexpr? -< -For more information, read > - - :help 'cindent' - :help filetype-indent-off - :help 'autoindent' - :help 'smartindent' - :help 'indentexpr' -< - *faq-27.4* -27.4. How do I change the number of space characters used for the automatic - indentation? - -You can modify the 'shiftwidth' option to change the number of space -characters used for the automatic indentation: > - - :set shiftwidth=4 -< -For more information, read > - - :help 'shiftwidth' -< - *faq-27.5* -27.5. I am editing a C program using Vim. How do I display the definition - of a macro or a variable? - -You can use the [d command to display the definition of a macro and the [i -command to display the definition of a variable. - -For more information, read > - - :help [d - :help [i - :help include-search - :help 29.4 - :help 29.5 -< - *faq-27.6* -27.6. I am editing a C program using Vim. How do I jump to the beginning or - end of a code block from within the block? - -You can use '[{' command to jump to the beginning of the code block and ']} -to jump to the end of the code block from inside the block. - -For more information, read > - - :help [{ - :help ]} - :help various-motions -< - *faq-27.7* -27.7. Is there a way to turn off the "//" comment auto-insertion behavior - for C++ files? If I'm sitting on a line beginning with "//", then I - open a new line above or below it, Vim automatically inserts new "//" - chars. - -You can modify the value of the 'comments' option to stop Vim from -inserting the C++ comment character ("//") automatically. For example: > - - :set comments=sr:/*,mb:*,el:*/ -< -For more information, read > - - :help 'comments' - :help format-comments -< - *faq-27.8* -27.8. How do I add the comment character '#' to a set of lines at the - beginning of each line? - -First, select the first character in all the lines using visual block mode -(CTRL-V). Press 'I' to start inserting characters at the beginning of the -line. Enter the comment character and then stop the insert mode by pressing -<Esc>. Vim will automatically insert the entered characters at the -beginning of all the selected lines. - -For more information, read > - - :help visual-block - :help blockwise-operators - :help v_b_I -< - *faq-27.9* -27.9. How do I edit a header file with the same name as the corresponding C - source file? - -You can use the following command to edit a header file with the same name -as the corresponding C source file: > - - :e %:t:r.h -< -You can use the following command to edit the file in a new split window: > - - :sp %:t:r.h -< -In the above commands, the percent sign expands to the name of the current -file. The ":t" modifier extracts the tail (last component) of the -filename. The ":r" modifier extracts the root of the filename. The .h is -appended to the resulting name to get the header filename. - -Another approach is to use the following command: > - - :sfind %:t:r.h -< -This command will search for the header file in the directories specified -in the 'path' option. - -For more information, read > - - :help cmdline-special - :help filename-modifiers - :help :sfind - :help 'path' -< - *faq-27.10* -27.10. How do I automatically insert comment leaders while typing comments? - -To automatically insert comment leaders while typing comments, add the 'r' -and 'o' flags to the 'formatoptions' option. > - - :set formatoptions+=ro -< -You may also want to add the 'c' flag to auto-wrap comments using the -'textwidth' option setting and the 'q' flag to format comments with the -"gq" command: > - - :set formatoptions=croq -< -For more information, read > - - :help 30.6 - :help format-comments - :help 'comments' - :help fo-table -< - -============================================================================= - *faq-28* -SECTION 28 - QUICKFIX - - *faq-28.1* -28.1. How do I build programs from Vim? - -You can use the ":make" command to build programs from Vim. The ":make" -command runs the program specified by the 'makeprg' option. - -For more information, read > - - :help 30.1 - :help make_makeprg - :help 'makeprg' - :help 'makeef' - :help :make - :help quickfix -< - *faq-28.2* -28.2. When I run the make command in Vim I get the errors listed as the - compiler compiles the program. When it finishes this list disappears - and I have to use the :clist command to see the error message again. - Is there any other way to see these error messages? - -You can use the ":copen" or ":cwindow" command to open the quickfix window -that contains the compiler output. You can select different error lines -from this window and jump to the corresponding line in the source code. - -For more information, read > - - :help :copen - :help :cwindow - :help quickfix -< - -============================================================================= - *faq-29* -SECTION 29 - FOLDING - - *faq-29.1* -29.1. How do I extend the Vim folding support? - -You can use the 'foldexpr' option to fold using an user specified function. -For example, to fold subroutines of the following form into a single line: > - - sub foo { - my $barf; - $barf = 3; - return $barf; - } -< -You can use the following commands: > - - set foldmethod=expr - set foldexpr=MyFoldExpr(v:lnum) - fun! MyFoldExpr(line) - let str = getline(a:line) - if str =~ '^sub\>' - return '1' - elseif str =~ '^}' - return '<1' - else - return foldlevel(a:line - 1) - endif - endfun -< -For more information, read > - - :help 'foldexpr' - :help fold-expr -< - *faq-29.2* -29.2. When I enable folding by setting the 'foldmethod' option, all the - folds are closed. How do I prevent this? - -You can set the 'foldlevelstart' option to a particular value to close only -folds above the specified value. > - - :set foldlevelstart=99 -< -For more information, read > - - :help 'foldlevelstart' - :help 'foldlevel' - :help fold-foldlevel -< - *faq-29.3* -29.3. How do I control how many folds will be opened when I start editing a - file? - -You can modify the 'foldlevelstart' option to control the number of folds -that will be opened when you start editing a file. To start editing with -all the folds closed: > - - :set foldlevelstart=0 -< -For more information, read > - - :help 'foldlevelstart' -< - *faq-29.4* -29.4. How do I open and close folds using the mouse? - -You can click on the + and - characters displayed at the leftmost column to -open and close fold. For this to work, you have to set the 'foldcolumn' -to a value greater than zero: > - - :set foldcolumn=2 -< -For more information, read > - - :help 'foldcolumn' -< - *faq-29.5* -29.5. How do I change the text displayed for a closed fold? - -You can use the 'foldtext' option to change the text displayed for a closed -fold. - -For more information, read > - - :help 'foldtext' - :help fold-foldtext - :help 'fillchars' -< - *faq-29.6* -29.6. How do I store and restore manually created folds across different - Vim invocations? - -You can use the ":mkview" command to store manually created folds. Later, -you can use the ":loadview" command to restore the folds. For this to work, -the 'viewoptions' must contain "folds". - -For more information, read > - - :help 28.4 - :help :mkview - :help :loadview - :help 'viewoptions' - :help 'viewdir' - :help :mksession - :help 'sessionoptions' -< - -============================================================================= - *faq-30* -SECTION 30 - VIM WITH EXTERNAL APPLICATIONS - - *faq-30.1* -30.1. Can I run a shell inside a Vim window? - -Currently Vim doesn't have support for running shell and other external -commands inside a Vim window. - -For more information, read > - - :help shell-window -< -Alternatively, you can try using the Unix "screen" utility or the 'splitvt' -program. - -You can also use the vimsh plugin by Brian Sturk to run a shell in a Vim -window. To use this you need to have Vim built with python support. For -more information visit the following URL: > - - http://vim.sourceforge.net/scripts/script.php?script_id=165 -< - *faq-30.2* -30.2. How do I pass the word under the cursor to an external command? - -You can use the special keyword <cword> to pass the word under the cursor -to an external command. For example: > - - :!dict <cword> -< -For more information, read > - - :help <cword> -< - *faq-30.3* -30.3. How do I get the output of a shell command into a Vim buffer? - -You can use the ":r !" command to get the output of a shell command into a -Vim buffer: > - - :r !ls -< -For more information, read > - - :help :r! -< - *faq-30.4* -30.4. How do I pipe the contents of the current buffer to an external - command and replace the contents of the buffer with the output from - the command? - -You can use the :! command to pipe the contents of the current buffer to a -external command and replace the contents of the buffer with the output -from the command. For example, to sort the contents of the current buffer, -using the Unix sort command, you can use the following command: > - - :%!sort -< -To sort only lines 10-20, you can use the following command > - - :10,20!sort -< -Also, if you want to pipe a buffer to an external command but not put the -results back in the buffer, you can use > - - :w !sort -< -The above command will pipe the entire buffer to the sort command. Note -that the space between the 'w' and the '!' is critical. To pipe only a -range of lines, you can use > - - :10,20w !sort -< -The above command will pipe the lines 10-20 to the sort command. - -For more information, read > - - :help :range! - :help 10.9 - :help :w_c -< - *faq-30.5* -30.5. How do I sort a section of my file? - -You can pipe a section of the file to the Unix "sort" utility to sort the -file. For example: > - - :5,100!sort -< -You can also use a visual block, and use the "!sort" command on the -selected block. - -To sort using visual blocks (sort based on a column or sort just the column -itself), read the following tip from the Vim online web page: - -http://vim.sourceforge.net/tips/tip.php?tip_id=588 - - *faq-30.6* -30.6. Is there a step-by-step guide for using Vim with slrn? - -Visit the following link to get information about using Vim with Slrn: > - - http://thingy.apana.org.au/~fun/slrn/ -< - *faq-30.7* -30.7. How do I use Vim as a pager? - -You can use Vim as a pager using the $VIMRUNTIME/macros/less.sh shell -script, supplied as part of the standard Vim distribution. This shell -script uses the $VIMRUNTIME/macros/less.vim Vim script to provide less like -key bindings. - -For more information, read > - - :help less -< - *faq-30.8* -30.8. How do I view Unix man pages from inside Vim? - -You can view Unix man pages, inside Vim, using the man.vim plugin supplied -as part of the standard Vim distribution. To use this plugin, add the -following line to your startup vimrc file: > - - runtime ftplugin/man.vim -< -You can also press the K key to run the program specified by the -'keywordprg' option with the keyword under the cursor. By default, -'keywordprg' is set to run man on the keyword under the cursor. - -For more information, read > - - :help man-plugin - :help K - :help 'keywordprg' -< - *faq-30.9* -30.9. How do I change the diff command used by the Vim diff support? - -By default, the Vim diff support uses the 'diff' command. You can change -this by changing the 'diffexpr' option. - -For more information, read > - - :help diff-diffexpr - :help 'diffexpr' -< - *faq-30.10* -30.10. How do I use the Vim diff mode without folding? - -You can use the following command-line to start Vim with two filenames -and use the diff mode without folding: > - - $ vim -o file1 file2 "+windo set diff scrollbind scrollopt+=hor nowrap" -< -If you like vertically split windows, then replace "-o" with "-O". - -For more information, read > - - :help vimdiff -< - -============================================================================= - *faq-31* -SECTION 31 - GUI VIM - - *faq-31.1* -31.1. How do I create buffer specific menus? - -Adding support for buffer specific menus is in the Vim TODO list. In the -mean time, you can try Michael Geddes's plugin, buffermenu.vim: > - - http://vim.sourceforge.net/scripts/script.php?script_id=246 -< - *faq-31.2* -31.2. How do I change the font used by GUI Vim? - -You can change the 'guifont' option to change the font used by GUI Vim. To -display the current value of this option, you can use > - - :set guifont? -< -You can add the displayed font name to the .vimrc file to use the font -across Vim sessions. For example, add the following line to the .vimrc file -to use Andale Mono font. > - - set guifont=Andale_Mono:h10:cANSI -< -For Win32, GTK and Photon version of Vim, you can use the following command -to bringup a dialog which will help you in changing the guifont: > - - :set guifont=* -< -You can also use the -font Vim command line option to specify the font used -for normal text. - -For more information, read > - - :help 'guifont' - :help 'guifontset' - :help 'guifontwide' - :help font-sizes - :help -font - :help -boldfont - :help -italicfont - :help -menufont - :help -menufontset -< - *faq-31.3* -31.3. When starting GUI Vim, how do I specify the location of the GVIM - window? - -You can use the "-geometry" command line argument to specify the location -of the GUI Vim window. For example: > - - $ gvim -geometry 80x25+100+300 -< -For more information, read > - - :help 31.4 - :help -geom -< - *faq-31.4* -31.4. How do I add a horizontal scrollbar in GVim? - -You can enable the horizontal scrollbar by modifying the 'guioptions' -option: > - - :set guioptions+=b -< -For more information, read > - - :help 'guioptions' - :help gui-horiz-scroll -< - *faq-31.5* -31.5. How do I make the scrollbar appear in the left side by default? - -You can add the 'l' flag to the 'guioptions' option to make the scrollbar -appear in the left side. > - - :set guioptions+=l - :set guioptions-=r -< -For more information, read > - - :help 'guioptions' - :help gui-scrollbars -< - *faq-31.6* -31.6. How do I remove the Vim menubar? - -You can remove the Vim menubar by removing the 'm' flag from the -'guioptions' option: > - - :set guioptions-=m -< -For more information, read > - - :help 'guioptions' -< - *faq-31.7* -31.7. I am using GUI Vim. When I press the ALT key and a letter, the menu - starting with that letter is selected. I don't want this behavior as - I want to map the ALT-<key> combination. How do I do this? - -You can use the 'winaltkeys' option to disable the use of the ALT key to -select a menu item: > - - :set winaltkeys=no -< -For more information, read > - - :help 'winaltkeys' - :help :simalt -< - *faq-31.8* -31.8. Is it possible to scroll the text by dragging the scrollbar so that - the cursor stays in the original location? - -The way Vim is designed, the cursor position has to be in a visible spot in -normal, visual, select and insert mode. This cannot be changed without -modifying Vim. When the scrollbar is used, the cursor will be moved so that -it is always visible. Another approach to solving this problem is to use -the Vim marks. You can mark the current cursor position using ma. Then -scroll to a different part of the text and jump back to the old position -using `a. You can also try the following suggestion from the Vim Online -website: > - - http://www.vim.org/tip_view.php?tip_id=320 -< -For more information, read > - - :help mark-motions -< - *faq-31.9* -31.9. How do I get gvim to start browsing files in a particular directory - when using the ":browse" command? - -You can set the 'browsedir' option to the default directory to use for the -":browse" command. > - - :set browsedir='<your_dir>' -< -For more information, read > - - :help 'browsedir' -< - *faq-31.10* -31.10. For some questions, like when a file is changed outside of Vim, Vim - displays a GUI dialog box. How do I replace this GUI dialog box with - a console dialog box? - -You can set the 'c' flag in the 'guioptions' option to configure Vim to use -console dialogs instead of GUI dialogs: > - - :set guioptions+=c -< -For more information, read > - - :help 'guioptions' -< - *faq-31.11* -31.11. I am trying to use GUI Vim as the editor for my xxx application. - When the xxx application launches GUI Vim to edit a file, the - control immediately returns to the xxx application. How do I start - GUI Vim, so that the control returns to the xxx application only - after I quit Vim? - -You have to start GUI Vim with the '-f' (foreground) command line option: > - - $ gvim -f -< -By default, GUI Vim will disconnect from the program that started Vim. With -the '-f' option, GUI Vim will not disconnect from the program that started -it. - -For more information, read > - - :help gui-fork - :help -f -< - *faq-31.12* -31.12. Why does the "Select Font" dialog doesn't show all the fonts - installed in my system? - -Vim supports only fixed width (mono-spaced) fonts. Proportional fonts are -not supported. In the "Select Font" dialog, only fixed width fonts will be -displayed. - -For more information, read > - - :help font-sizes - :help 'guifont' -< - *faq-31.13* -31.13. How do I use the mouse in Vim command-line mode? - -You can set the 'c' flag in the 'mouse' option to use mouse in the Vim -command-line mode: > - - :set mouse+=c -< -For more information, read > - - :help mouse-using - :help gui-mouse - :help 09.2 -< - *faq-31.14* -31.14. When I use the middle mouse button to scroll text, it pastes the - last copied text. How do I disable this behavior? - -You can map the middle mouse button to <Nop> to disable the middle mouse -button: > - - :map <MiddleMouse> <Nop> - :map! <MiddleMouse> <Nop> -< -For more information, read > - - :help gui-mouse-mapping - :help <Nop> -< - *faq-31.15* -31.15. How do I change the location and size of a GUI Vim window? - -You can use the "winpos" command to change the Vim window position. To -change the size of the window, you can modify the "lines" and "columns" -options. - -For example, the following commands will position the GUI Vim window at the -X,Y co-ordinates 50,50 and set the number of lines to 50 and the number of -columsn to 80. > - - :winpos 50 50 - :set lines=50 - :set columns=80 -< -The arguments to the 'winpos' command specify the pixel co-ordinates of the -Vim window. The 'lines' and 'columns' options specify the number of lines -and characters to use for the height and the width of the window -respectively. - -For more information, read > - - :help 31.4 - :help :winpos - :help 'lines' - :help 'columns' - :help GUIEnter -< - -============================================================================= - *faq-32* -SECTION 32 - VIM ON UNIX - - *faq-32.1* -32.1. I am running Vim in a xterm. When I press the CTRL-S key, Vim - freezes. What should I do now? - -Many terminal emulators and real terminal drivers use the CTRL-S key to -stop the data from arriving so that you can stop a fast scrolling display -to look at it (also allowed older terminals to slow down the computer so -that it did not get buffer overflows). You can start the output again by -pressing the CTRL-Q key. - -When you press the CTRL-S key, the terminal driver will stop sending the -output data. As a result of this, it will look like Vim is hung. If you -press the CTRL-Q key, then everything will be back to normal. - -You can turn off the terminal driver flow control using the 'stty' command: > - - $ stty -ixon -ixoff -< -or, you can change the keys used for the terminal flow control, using the -following commands: > - - $ stty stop <char> - $ stty start <char> -< - *faq-32.2* -32.2. I am seeing weird screen update problems in Vim. What can I do to - solve this screen/display update problems? - -You have to use a proper terminal emulator like xterm with correct TERM -settings (TERM=xterm) and a correct terminfo/termcap file. -For more information, read > - - :help 'term' -< - *faq-32.3* -32.3. I am using the terminal/console version of Vim. In insertmode, When I - press the backspace key, the character before the cursor is not - erased. How do I configure Vim to do this? - -You have to make sure that Vim gets the correct keycode for the backpspace -key. You can try using the command: > - - :fixdel -< -Make sure the TERM environment variable is set to the correct terminal -name. You can try using the 'stty' command: > - - $ stty erase ^H -< -where, you have to enter the ^H character by pressing the CTRL-V key and -then the CTRL-H key. - -For more information, read > - - :help :fixdel - :help Linux-backspace - :help NetBSD-backspace -< - *faq-32.4* -32.4. I am using Vim in a xterm. When I quit Vim, the screen contents are - restored back to the original contents. How do I disable this? - -The xterm has a capability called "alternate screen". If this capability -is present, vim switches to that alternate screen upon startup and back on -exit, thus restoring the original screen contents. To disable this -feature, add the following line to your .vimrc file: > - - :set t_ti= t_te= -< -For more information, read > - - :help restorescreen - :help xterm-screens -< - *faq-32.5* -32.5. When I start Vim, it takes quite a few seconds to start. How do I - minimize the startup time? - -This may be related to Vim opening the X display for setting the xterm -title and using the X clipboard. Make sure the DISPLAY variable is set to -point to the correct host. Try using the command line: > - - $ vim -X -< -This will prevent Vim from opening the X display. With this command-line -option, the X clipboard cannot be used and also Vim will not be able to -change the xterm title. - -You can also set the 'clipboard' option to > - - :set clipboard=exclude:.* -< -This has the same effect as using the -X command-line argument. - -For more information, read > - - :help -X - :help 'clipboard' -< - *faq-32.6* -32.6. How can I make the cursor in gvim in unix stop blinking? - -You can modify the 'guicursor' option, to stop the cursor from blinking. -For example: > - - :set guicursor=a:blinkon0 -< -For more information, read > - - :help 'guicursor' -< - *faq-32.7* -32.7. How do I change the menu font on GTK Vim? - -You can modify the ~/.gtkrc file to change the menu font on GTK Vim. For -example: > - - style "default" - { font ="smooth09" } - class "*" style "default" -< -The last line changes the font of all widgets. - -For more information, read > - - :help gui-gtk -< - *faq-32.8* -32.8. How do I prevent <Ctrl-Z> from suspending Vim? - -You can map <Ctrl-Z> to prevent the suspending. Here are some suggestions: - -- Make <Ctrl-Z> do nothing: > - - :map <C-Z> <Nop> -< -- Make <Ctrl-Z> start a shell: > - - :map <C-Z> :shell<CR> -< -- Make <Ctrl-Z> give an error message: > - - :map <C-Z> :"suspending disabled<CR> -< -For the last example, the double quote is necessary in order to keep the -message on the status line. - - *faq-32.9* -32.9. When I kill the xterm running Vim, the Vim process continues to run - and takes up a lot of CPU (99%) time. Why is this happening? - -When Vim is built with support for Python interface, you will have this -problem. This is a known problem with the python thread library and Vim. To -solve this problem, use a Vim binary built without the Python interface. - -For more information, read > - - :help +python - :help python -< - *faq-32.10* -32.10. How do I get the Vim syntax highlighting to work in a Unix terminal? - -The easiest and simplest way to get Vim syntax highlighting is to use the -GUI version of Vim (GVIM). To get syntax highlighting to work in the -console/terminal version of Vim, you have to run a terminal emulator (like -Xfree86 xterm or rxvt or dtterm) that supports color. Note that if a -terminal emulator supports changing the background and foreground colors, -that does not mean that it also supports ANSI escape sequences for changing -the color. You can download the latest version of Xfree86 xterm from -http://dickey.his.com/xterm/xterm.html. You can download the latest version -of rxvt from http://www.rxvt.org. You have to install the terminfo/termcap -file that supports colors for the terminal emulator. Also, set the TERM -environment variable to the correct name of the term that supports colors. - -You can use the colortest.vim script supplied with the Vim runtime -package to test the color setup. To use this script, follow these steps: > - - :e $VIMRUNTIME/syntax/colortest.vim - :source % -< -For more information, read > - - :help 06.2 - :help terminal-colors - :help termcap-colors - :help startup-terminal - :help xterm-color - :help colortest.vim -< - -============================================================================= - *faq-33* -SECTION 33 - VIM ON MS-WINDOWS - - *faq-33.1* -33.1. In MS-Windows, CTRL-V doesn't start the blockwise visual mode. What - happened? - -The mswin.vim script provides key mappings and options to make Vim behave -like a MS-Windows application. One of the keys mapped is CTRL-V which is -used for pasting text in MS-Windows applications. This will disable the use -of CTRL-V to start the blockwise visual mode. The mswin.vim script maps -CTRL-Q for staring the blockwise visual mode. So you can use CTRL-Q instead -of CTRL-V. - -For more information, read > - - :help CTRL-V - :help CTRl-V-alternative - :help CTRL-Q - :help 10.5 -< - *faq-33.2* -33.2. When I press the CTRL-Y key, it acts like the CTRL-R key. How do I - configure Vim to treat CTRL-Y as CTRL-Y? - -The mapping of the CTRL-Y key to the CTRL-R key is done by the mswin.vim -script. The mswin.vim script maps CTRL-Y to make Vim behave like a standard -MS-Windows application. This is explained in ":help CTRL-Y". You can either -comment out the line in mswin.vim that maps the CTRL-Y key or you can -remove the line in your .vimrc file that sources the mswin.vim script. - - *faq-33.3* -33.3. How do I start GUI Vim in a maximized window always? - -You can use the "simalt" command to maximize the Vim window. You can use -the GUIEnter autocmd to maximize the Vim window on startup: > - - autocmd GUIEnter * simalt ~x -< -For more information, read > - - :help :simalt - :help GUIEnter - :help gui-win32-maximized -< - *faq-33.4* -33.4. After doing some editing operations, Vim freezes. The cursor becomes - an empty rectangle. I am not able enter any characters. What is - happening? - -Most probably, you used the mouse wheel to scroll the text in Vim. There is -a known problem in using intellimouse mouse wheel with Vim. To avoid this -problem, disable Universal scrolling support for Vim. - -For more information, read > - - :help intellimouse-wheel-problems -< - *faq-33.5* -33.5. I am using Windows XP, the display speed of maximized GVim is very - slow. What can I do to speed the display updates? - -This may be due to the fact that you have enabled 'Smooth edges of screen -fonts' in the display properties. Try turning off font smoothing or try -changing the smoothing method to "Standard". - - *faq-33.6* -33.6. What are the recommended settings for using Vim with cygwin? - -You may want to set the following shell related Vim settings: > - - :set shellcmdflag=-c - :set shellquote= - :set shellslash " Use the forward slash for expansion. - :set shellxquote=\" - :set shell=d:\cygwin\bin\bash.exe " Use the bash shell - :set shellpipe=2>&1| tee - :set shellredir=>%s 2>&1 -< - *faq-33.7* -33.7. I am trying to use GNU diff with Vim diff mode. When I run the diff - from command line, it works. When I try to use the diff with Vim it - doesn't work. What should I do now? - -There is a problem with using GNU diff with Vim. You can try using the -GNU diff.exe built by Ron Aaron from the following link: > - - http://www.mossbayeng.com/~ron/vim/builds.html -< - *faq-33.8* -33.8. Is it possible to use Vim as an external editor for MS-Windows - Outlook email client? - -You can use the "cubiclevim" COM Add-In to use Vim as an external editor -for MS-Windows Outlook email client. Visit the following URL for more -information: > - - http://sourceforge.net/projects/cubiclevim -< -Note that currently this works only with MS-Office 2000 and XP. - - *faq-33.9* -33.9. I am using Vim to edit HTML files. How do I start internet explorer - with the current file to preview the HTML file? - -You can use the following command: > - - :!start c:\progra~1\intern~1\iexplore.exe file://%:p<CR> -< - *faq-33.10* -33.10. I would like to use Vim with Microsoft Visual Studio. How do I do - this? - -You have to download and use the OLE version of Vim (for example: -gvim61ole.zip). This file also contains instructions on how to use Vim with -Visual Studio. - -For more information, read > - - :help MSVisualStudio -< - *faq-33.11* -33.11. Where do I place the _vimrc and _gvimrc files? - -You can place the _vimrc and _gvimrc files under the directory pointed to -by the VIM environment variable. If you are sharing this system with other -users, then you can place the files in a directory and set the HOME -environment variable to this directory. - -For more information, read > - - :help $HOME-use - :help _vimrc -< - *faq-33.12* -33.12. Everytime I save a file, Vim warns about the file being changed - outside of Vim. Why? - -If you get the following warning message, everytime you save a file: > - - WARNING: The file has been changed since reading it!!! - Do you really want to write to it (y/n)? -< -then this problem could be related to a bug in MS-Windows on the day -daylight saving time starts. Vim remembers the timestamp of the file after -it was written. Just before the next write the timestamp is obtained again -to check if the file was changed outside of Vim. This works correctly, -except on the day daylight saving time starts. - -This problem will go away the next day after the day the daylight saving -time starts. - -For more information, read > - - :help W11 -< - -============================================================================= - *faq-34* -SECTION 34 - PRINTING - - *faq-34.1* -34.1. How do I print a file along with line numbers for all the lines? - -You can set the 'printoptions' option and use the ":hardcopy" command to -print your file: > - - :set printoptions=number:y - :hardcopy -< -For more information, read > - - :help 'printoptions' - :help :hardcopy -< - *faq-34.2* -34.2. How do I print a file with the Vim syntax highlighting colors? - -You can use the ":hardcopy" command to print a file with the Vim syntax -highlighting colors. You can also convert your file to a HTML file using -the 2html.vim script and print the HTML file. - -For more information, read > - - :help syntax-printing - :help 2html.vim - :help :hardcopy - :help printing -< - -============================================================================= - *faq-35* -SECTION 35 - BUILDING VIM FROM SOURCE - - *faq-35.1* -35.1. How do I build Vim from the sources on a Unix system? - -For a Unix system, follow these steps to build Vim from the sources: - -- Download the source and run-time files arrchive (vim-##.tar.bz2) from the - ftp://ftp.vim.org/pub/vim/unix directory. -- Extract the archive using the bzip2 and ttar utilities using the command: > - - $ bunzip2 -c <filename> | tar -xf - -< -- Run the 'make' command to configure and bbuild Vim with the default - configuration. -- Run 'make install' command to install Vimm in the default directory. - -To enable/disable various Vim features, before running the 'make' command -you can run the 'configure' command with different flags to include/exclude -the various Vim features. To list all the available options for the -'configure' command, use: > - - $ configure -help -< -For more information, read > - - :help install -< - *faq-35.2* -35.2. How do I install Vim in my home directory or a directory other - than the default installation directory in Unix? - -To install Vim in a directory other than the default installation -directory, you have to specify the directory using the --prefix option -while running the configure script. > - - $ ./configure --prefix=/users/xyz -< -You can enable/disable various Vim feature by supplying different arguments -to the configure script. For more information about all these options, run > - - $ ./configure --help -< -For more information, read > - - :help install-home - :help install -< - *faq-35.3* -35.3. How do I build Vim from the sources on a MS-Windows system? - -For a MS-Windows system, Vim can be built using either the Visual C++ -compiler or the Borland C++ compiler or the Ming GCC compiler or the cygwin -gcc compiler. Follow these steps to build Vim from the sources for -MS-Windows: - -- Download the source (vim##src.zip), runtiime (vim##rt.zip) and the extra - (vim-##-extra.tar.gz) archives from the ftp://ftp.vim.org/pub/vim/pc - directory. -- Extract the archives into a directory (foor example, c:\vimsrc) -- Depending on the installed compiler, you can use the corresponding - makefile to build the Vim sources. For Visual C++ use the Make_mvc.mak - makefile, for borland C++ use the Make_bc5.mak makefile, for ming GCC use - the Make_ming.mak makefile, for cygwin gcc use the Make_cyg.mak makefile. - -Depending on whether you want to build the GUI version of Vim or the -console version of Vim, you have to pass different arguments to the -makefiles. After successfully building the sources, you can copy the -vim.exe or gvim.exe file to the desired directory along with the files from -the runtime archive. - -You can visit the following site for extensive information about building -Vim on a MS-Windows system using the various compilers: > - - http://mywebpage.netscape.com/SharpPeople/vim/howto/index.html -< -For more information, read > - - :help install -< - *faq-35.4* -35.4. The Vim help, syntax, indent files are missing from my Vim - installation. How do I install these files? - -The Vim help, syntax, indent and other runtime files are part of the Vim -runtime package. You need to download and install the Vim runtime package. -For example, for MS-Windows, the name of the Vim 6.1 runtime package is -vim61rt.zip. - -For more information, read > - - :help install -< - *faq-35.5* -35.5. I have built Vim from the source and installed the Vim package using - "make install". Do I need to keep the Vim source directory? - -No. Once you have built and installed Vim in some directory other than the -original source directory (for example, /usr/bin or /usr/local/bin), then -you can remove the source directory. - - *faq-35.6* -35.6. How do I determine the Vim features which are enabled at compile - time? - -You can use the ":version" command to determine the Vim features that are -enabled at compile time. The features that are enabled will be prefixed -with a "+". The features that are not enabled will be prefixed with a "-". - -If you want to test for a feature in a script, you can use the has() -function: > - - if has("menu") - " Set up some menus - endif -< -For more information, read > - - :help :version - :help +feature-list - :help has() -< - *faq-35.7* -35.7. Can I build Vim without the GUI support? - -Yes. You can build Vim by optionally enabling/disabling many of the -features including GUI. - -For more information, read > - - :help install -< - *faq-35.8* -35.8. When building Vim on a Unix system, I am getting "undefined reference - to term_set_winsize' error. How do I resolve this error? - -You will get this error when the build process is not able to locate the -termlib, termcap or ncurses library. You have to install the ncurses-dev -package to resolve this error. - - *faq-35.9* -35.9. Vim configure keeps complaining about the lack of gtk-config while - trying to use GTK 2.03. This is correct, since in GTK 2 they moved to - using the generic pkg-config. I can get pkg-config to list the - various includes and libs for gtk, but for some reason the configure - script still isn't picking this up. - -Use the following shell script named gtk-config: > - - #!/bin/sh - pkg-config gtk+-2.0 $1 $2 -< - -============================================================================= - *faq-36* -SECTION 36 - VARIOUS - - *faq-36.1* -36.1. How do I edit binary files with Vim? - -You can set the following options to edit binary files in Vim: > - - :set binary - :set display=uhex -< -You can also use the "-b" command-line option to edit a binary file: > - - $ vim -b <binary_file_name> -< -You can also use the xxd utility (part of the Vim distribution) to edit -binary files. - -For more information, read > - - :help 23.4 - :help edit-binary - :help hex-editing - :help -b - :help 'binary' - :help 'endofline' - :help 'display' -< - *faq-36.2* -36.2. How do I disable the visual error flash and the error beep? - -You can disable both the visual error flash and the error beep using the -following command: > - - :set visualbell t_vb= -< -For more information, read > - - :help 'visualbell' - :help 'errorbells' - :help t_vb -< - *faq-36.3* -36.3. How do I display the ascii value of a character displayed in a - buffer? - -You can use the 'ga' command to display the ascii value of a displayed -character. - -For more information, read > - - :help ga - :help :ascii -< - *faq-36.4* -36.4. Can I use zero as a count for a Vim command? - -You cannot use zero as a count for a Vim command, as "0" is a command on -its own, moving to the first column of the line. - -For more information, read > - - :help 0 - :help count -< - *faq-36.5* -36.5. How do I disable the Vim welcome screen? - -You can disable the Vim welcome screen, by adding the 'I' flag to the -'shortmess' option: > - - :set shortmess+=I -< -For more information, read > - - :help :intro - :help 'shortmess' -< - *faq-36.6* -36.6. How do I avoid the "hit enter to continue" prompt? - -Vim will prompt you with the "hit enter to continue" prompt, if there are -some messages on the screen for you to read and the screen is about to be -redrawn. You can add the 'T' flag to the 'shortmess' option to truncate -all messages. This will help in avoiding the hit-enter prompt: > - - :set shortmess+=T -< -You can also increase the command height by setting the 'cmdheight' option: > - - :set cmdheight=2 -< -For more information, read > - - :help hit-enter - :help avoid-hit-enter - :help 'shortmess' - :help 'cmdheight' -< - *faq-36.7* -36.7. How do I invoke Vim from command line to run a group of commands on a - group of files? - -There are several ways to invoke Vim from command line to run a group of -commands on a group of files. You can use a set of "-c" command line -options to specify a group of commands: > - - $ vim -c "<ex_command_1>" -c "<ex_command_2>" *.txt -< -Each of the ex-command specified with the "-c" command line option is -executed one by one sequentially. You can also use a single "-c" command -line option and the "|" character to separate the ex commands: > - - $ vim -c "<ex_command_1> | <ex_command_2>" *.txt -< -In the above command, if an ex command fails, then all the remaining ex -commands will not be executed. - -For example, to replace "ABC" with "DEF" in a file from the command-line, -you can use the following command: > - - $ vim -c "%s/ABC/DEF/ge | update" myfile.txt -< -To replace "ABC" with "DEF" in multiple files from the command-line, -you can use the following command: > - - $ vim -c "argdo %s/ABC/DEF/ge | update" *.txt -< -You can store the group of commands into a file and use the "-s" command -line option to run the commands on a set of files. For example, if the -group of commands are stored in the file mycmds.txt, then you can use the -following command: > - - $ vim -s mycmds.txt *.pl -< -For more information, read > - - :help -c - :help -s -< - *faq-36.8* -36.8. How do I use a normal mode command from insert mode without leaving - the insert mode? - -You can use a normal command from insert mode, without leaving the insert -mode, by first pressing the CTRL-O key and then follow that with a single -normal mode command. - -To execute more than one normal mode command, press the CTRL-L key, -followed by any number of normal mode commands and then press <Esc> to get -back to the insert mode. - -For more information, read > - - :help i_CTRL-O - :help i_CTRL-L -< - -============================================================================= - *faq-37* -SECTION 37 - UNICODE -Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> - - *faq-37.1* -37.1. Is it possible to create Unicode files using Vim? - -Yes. It may be more or less complicated depending on the keyboard and fonts -available to you, but it is always possible to encode any possible Unicode -codepoint (and some illegal ones) into a file. To create a Unicode file -using Vim, you should have compiled Vim with the "+multi_byte" compile-time -option. You can get more information about Unicode from the following -sites: > - - http://www.unicode.org - http://www.cl.cam.ac.uk/~mgk25/unicode.html -< -For more information, read > - - :help multibyte - :help usr_45.txt -< - *faq-37.2* -37.2. Which Vim settings are particularly important for editing Unicode - files? - -The most important are the various "encoding" options, i.e., 'encoding', -'fileencoding', 'fileencodings' and 'termencoding'. The boolean option -'bomb' is also significant. - -For more information, read > - - :help 'encoding' - :help 'fileencoding' - :help 'fileencodings' - :help 'termencoding' - :help 'bomb' -< - *faq-37.3* -37.3. What is the 'encoding' option? - -Basically, the 'encoding' option defines how Vim will represent your data -internally. However, all Unicode encodings are represented internally as -utf-8 and converted (if necessary) when reading and writing. - -For more information, read > - - :help 'encoding' -< - *faq-37.4* -37.4. How does Vim name the various Unicode encodings? - -Utf-8 is called utf-8 or utf8; utf-16 is called ucs-2 or ucs2; utf-32 is -called ucs-4 or ucs4. Also, you may specify endianness (except for utf-8 -which does not vary for endianness) by appending le for little-endian or be -for big-endian. If you create a file with an encoding of ucs-2 or ucs-4 -without specifying endianness, Vim will use what is typical of your -machine. - -For more information, read > - - :help encoding-names - :help encoding-values - :help encoding-table -< - *faq-37.5* -37.5. How does Vim specify the presence or absence of a byte-order mark? - -When reading a file, if the 'fileencodings' option includes "ucs-bom", Vim -will check for a byte-order mark. When writing a file, if the 'bomb' option -is set, Vim will write a byte-order mark on files whose encoding warrants -it. - -For more information, read > - - :help 'fileencodings' - :help 'bomb' -< - *faq-37.6* -37.6. What is the 'fileencoding' option? - -The 'fileencoding' option defines the particular encoding which Vim will -use to write a file. If empty, then the value of the 'encoding' option is -the default. - -For more information, read > - - :help 'fileencoding' -< - *faq-37.7* -37.7. What is the 'fileencodings' option? - -The 'fileencodings' option defines the heuristics used by Vim when opening -an existing file. It is a comma separated list of encodings. A special -name, "ucs-bom" is used to indicate that Vim should check for the presence -of a byte-order mark; however, it will not be recognised if it comes after -"utf-8". Normally, "ucs-bom" (if present) should be first in the list. - -When Vim opens a file, it checks it against the encodings listed in -'fileencodings'. The first one that matches is used. If there is no match, -then Vim sets 'fileencoding' to the null string, i.e., the value of -'encoding' will be used. - -For more information, read > - - :help 'fileencodings' - :help 'encoding' -< - *faq-37.8* -37.8. What is the 'termencoding' option? - -The 'termencoding' option defines how your keyboard encodes the data you -type. If empty, Vim assumes that it has the same value as 'encoding'. -Usually it should be set to something that matches your locale. - -For more information, read > - - :help 'termencoding' - :help locale -< - *faq-37.9* -37.9. What is the 'bomb' option? - -When reading a file with "ucs-bom" present in the 'fileencodings' option, -Vim will set the 'bomb' option on or off depending on the presence or -absence of a byte-order mark at the start of the file. When writing, Vim -will write a byte-order mark if the 'bomb' option is set. You may set or -unset it manually do make Vim write, or not write, the b.o.m. - -For more information, read > - - :help 'bomb' -< - *faq-37.10* -37.10. Where can I find an example of a typical use of all these options? - -There is a "tip", with explains them in different words with an example, at -http://vim.sourceforge.net/tip_view.php?tip_id=246 . - - *faq-37.11* -37.11. How can I insert Unicode characters into a file using Vim? - -Several methods are available: - -- Characters present on your keyboard can bbe typed in the usual way, even - those which require a "dead-key" prefix, like (for instance) the - circumflex on French keyboards. -- Characters for which a digraph is definedd can be typed as two characters - prefixed by <Ctrl-K>. -- If you have set the 'digraph' option, youu can enter the characters for - which a digrph is defined as <char1><BS><char2>. -- Any character can be entered by using a <<Ctrl-V> prefix (or <Ctrl-Q> if - <Ctrl-V> is remapped to paste from the clipboard). - -For more information, read > - - :help digraphs - :help 'digraph' - :help i_CTRL-V_digit -< - *faq-37.12* -37.12. How can I know which digraphs are defined and for which characters? - -First set the 'encoding' option properly (for instance, to utf-8), then use -the :digraphs command to list the currently defined digraphs. - -For more information, read > - - :help :digraphs - :help 'encoding' -< - -============================================================================= - vim:tw=78:ts=8:ft=help:norl: From 869748180553df4888eb898da3f5b503e6d98a4f Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 20 Oct 2011 00:34:53 +0900 Subject: [PATCH 371/783] update buildhtml.vim --- tools/buildhtml.vim | 57 +++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index 368e209e6..5462cf527 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -14,29 +14,36 @@ set fileencodings=utf-8 syntax on colorscheme delek -let $VIMDOCROOT = expand('<sfile>:p:h:h') - -" for ja custom syntax -set runtimepath+=$VIMDOCROOT/runtime - -source $VIMDOCROOT/tools/makehtml.vim +source <sfile>:h:h/tools/makehtml.vim function! s:main() - " clean - for f in split(glob('html/*'), '\n') - call delete(f) - endfor - - if !isdirectory('html') - call mkdir('html') + if isdirectory('html') + call s:rmdir('html') endif - + call s:system('git clone . html') cd html + call s:system('git branch -f master origin/master') + call s:system('git branch -f gh-pages origin/gh-pages') + call s:system('git checkout master') + call s:system('git checkout-index --prefix=master/ -a') + call s:system('git checkout devel') + call s:system('git checkout-index --prefix=devel/ -a') + call s:system('git checkout gh-pages') + " for ja custom syntax + let &runtimepath .= ',' . fnamemodify('./master', ':p') + call s:BuildHtml() + call s:system('git commit -a -m "update html"') + cd .. +endfunction + +function! s:BuildHtml() + call mkdir('tmp') + cd tmp " " copy dist files " - args $VIMDOCROOT/runtime/doc/* $VIMDOCROOT/vim_faq/vim_faq.jax + args ../master/doc/* ../devel/vim_faq/vim_faq.jax argdo saveas %:t " generate tags @@ -59,10 +66,24 @@ function! s:main() " 2html.vim escape modeline. But it doesn't escape /^vim:/. set nomodeline args *.html - argdo call s:PostEdit() | update - quit + argdo call s:PostEdit() | saveas! ../%:t - cd - + cd .. +endfunction + +function! s:system(cmd) + call system(a:cmd) + if v:shell_error + throw 'system() failed: ' . a:cmd + endif +endfunction + +function! s:rmdir(path) + if executable('rm') + call s:system('rm -rf ' . shellescape(a:path)) + else + call s:system('rmdir /s /q ' . shellescape(a:path)) + endif endfunction function! s:PostEdit() From 52796f3b1bef2b5e0d08007e9b9bffefb277645b Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 20 Oct 2011 00:39:24 +0900 Subject: [PATCH 372/783] remove runtime submodule --- .gitmodules | 4 ---- runtime | 1 - 2 files changed, 5 deletions(-) delete mode 100644 .gitmodules delete mode 160000 runtime diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 2822542a4..000000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "runtime"] - path = runtime - url = git@github.com:vim-jp/vimdoc-ja.git - branch = master diff --git a/runtime b/runtime deleted file mode 160000 index b8e3749c4..000000000 --- a/runtime +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b8e3749c4326c006bc0ef9366ff031d9e9a37e2f From 0b320a839435461622dd5e3f5f50b62e79e8562b Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 20 Oct 2011 22:34:37 +0900 Subject: [PATCH 373/783] add make target 'htmlbatch' --- Makefile | 10 ++++++++-- tools/buildhtml.vim | 30 ++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index a4f9e5ff9..5b81d1bba 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,14 @@ -.PHONY: all html +.PHONY: all html htmlbatch all: html: - gvim -u tools/buildhtml.vim + vim -u tools/buildhtml.vim + +htmlbatch: + git show-branch devel || git branch -t devel origin/devel + git show-branch gh-pages || git branch -t gh-pages origin/gh-pages + vim -u tools/buildhtml.vim -e -s -- --batch + cd html && push .. diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index 5462cf527..b21f22d08 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -1,12 +1,5 @@ #!gvim -u -if has('vim_starting') - set nocompatible - set loadplugins - call feedkeys(":source " . expand('<sfile>') . "\<CR>") - finish -endif - set nocompatible set nomore set encoding=utf-8 @@ -14,6 +7,14 @@ set fileencodings=utf-8 syntax on colorscheme delek + +" TODO: argument parser +enew! +let g:argv = argv() +argdelete * + +runtime plugin/tohtml.vim + source <sfile>:h:h/tools/makehtml.vim function! s:main() @@ -111,7 +112,16 @@ function! s:ToJekyll() \ ]) endfunction -try - call s:main() -endtry +if index(g:argv, "--batch") != -1 + try + call s:main() + catch + cquit + endtry + qall! +else + try + call s:main() + endtry +endif From e9a838c66521b52b89aeec32a8f4b46190f18ac4 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 20 Oct 2011 23:10:57 +0900 Subject: [PATCH 374/783] fix htmlbatch --- Makefile | 2 +- tools/buildhtml.vim | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 5b81d1bba..43ceddc31 100644 --- a/Makefile +++ b/Makefile @@ -10,5 +10,5 @@ htmlbatch: git show-branch devel || git branch -t devel origin/devel git show-branch gh-pages || git branch -t gh-pages origin/gh-pages vim -u tools/buildhtml.vim -e -s -- --batch - cd html && push .. + cd html && git push .. diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index b21f22d08..5663843b1 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -33,7 +33,11 @@ function! s:main() " for ja custom syntax let &runtimepath .= ',' . fnamemodify('./master', ':p') call s:BuildHtml() - call s:system('git commit -a -m "update html"') + try + call s:system('git commit -a -m "update html"') + catch + " pass: nothing to be committed + endtry cd .. endfunction @@ -118,6 +122,8 @@ if index(g:argv, "--batch") != -1 catch cquit endtry + " XXX: (ex-mode) To quit with state 0, use :visual. See main.c:1307 + silent! visual qall! else try From 6a1d1f5a7afb1f135c2b87493685c4fd71ddbc81 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 11 Dec 2011 00:10:50 +0900 Subject: [PATCH 375/783] added upload.vim to upload package --- tools/upload.vim | 155 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 tools/upload.vim diff --git a/tools/upload.vim b/tools/upload.vim new file mode 100644 index 000000000..349ffddaa --- /dev/null +++ b/tools/upload.vim @@ -0,0 +1,155 @@ +#!vim -u +" FIXME: + +set nocompatible +set nomore + +" TODO: argument parser +enew! +let g:argv = argv() +silent! argdelete * + +function! s:github_repos_downloads_list(user, repos) + let url = printf('https://api.github.com/repos/%s/%s/downloads', a:user, a:repos) + let cmd = printf('curl --silent %s', shellescape(url)) + let res = system(cmd) + if v:shell_error + throw 'fails to list downloads' + endif + let downloads = json#decode(res) + if type(downloads) == type({}) && has_key(downloads, 'message') + throw 'fails to list downloads: ' . downloads.message + endif + return downloads +endfunction + +function! s:github_repos_downloads_get(user, repos, id) + let url = printf('https://api.github.com/repos/%s/%s/downloads/%s', a:user, a:repos, a:id) + let cmd = printf('curl --silent %s', shellescape(url)) + let res = system(cmd) + if v:shell_error + throw 'fails to get download' + endif + let download = json#decode(res) + if has_key(download, 'message') + throw 'fails to get download: ' . download.message + endif + return download +endfunction + +function! s:github_repos_downloads_create(auth_user, auth_password, user, repos, file, name, description, content_type) + " create download + let url = printf('https://api.github.com/repos/%s/%s/downloads', a:user, a:repos) + let data = {} + let data.name = a:name + let data.size = getfsize(a:file) + if a:description != '' + let data.description = a:description + endif + if a:content_type != '' + let data.content_type = a:content_type + endif + let cmd = printf('curl --silent --user %s --data %s %s', shellescape(a:auth_user . ':' . a:auth_password), shellescape(json#encode(data)), shellescape(url)) + let res = system(cmd) + if v:shell_error + throw 'fails to create new download' + endif + let download = json#decode(res) + if has_key(download, 'message') + throw 'fails to create new download: ' . download.message + endif + + " upload file + let cmd = 'curl --silent' + \ . ' -F ' . shellescape('key=' . download.path) + \ . ' -F ' . shellescape('acl=' . download.acl) + \ . ' -F ' . shellescape('success_action_status=201') + \ . ' -F ' . shellescape('Filename=' . download.name) + \ . ' -F ' . shellescape('AWSAccessKeyId=' . download.accesskeyid) + \ . ' -F ' . shellescape('Policy=' . download.policy) + \ . ' -F ' . shellescape('Signature=' . download.signature) + \ . ' -F ' . shellescape('Content-Type=' . download.content_type) + \ . ' -F ' . shellescape('file=@' . a:file) + \ . ' ' . shellescape(download.s3_url) + let res = system(cmd) + if v:shell_error + throw 'fails to upload file' + endif + + return download +endfunction + +function! s:github_repos_downloads_delete(auth_user, auth_password, user, repos, id) + let url = printf('https://api.github.com/repos/%s/%s/downloads/%s', a:user, a:repos, a:id) + let cmd = printf('curl --silent --request DELETE --user %s %s', shellescape(a:auth_user . ':' . a:auth_password), shellescape(url)) + let res = system(cmd) + if v:shell_error + throw 'fails to delete download' + endif + if res != '' + let err = json#decode(res) + throw 'fails to delete download: ' . err.message + endif +endfunction + +function! s:github_repos_downloads_get_by_name(user, repos, name) + let downloads = s:github_repos_downloads_list(a:user, a:repos) + for download in downloads + if download.name ==# a:name + return download + endif + endfor + throw 'Not Found' +endfunction + +function! s:main() + if isdirectory('vimdoc-ja') + call s:rmdir('vimdoc-ja') + endif + if filereadable('vimdoc-ja.zip') + call delete('vimdoc-ja.zip') + endif + call mkdir('vimdoc-ja') + call s:system('git archive master | tar -x -C vimdoc-ja') + silent! helptags vimdoc-ja/doc + call s:system('zip -r vimdoc-ja.zip vimdoc-ja') + echo "Please enter github user/password to upload package." + let auth_user = input('user: ') + let auth_password = inputsecret('password: ') + let user = 'vim-jp' + let repos = 'vimdoc-ja' + let file = 'vimdoc-ja.zip' + try + let download = s:github_repos_downloads_get_by_name(user, repos, file) + catch /Not Found/ + let download = {} + endtry + if !empty(download) + call s:github_repos_downloads_delete(auth_user, auth_password, user, repos, download.id) + endif + call s:github_repos_downloads_create(auth_user, auth_password, user, repos, file, file, '', '') +endfunction + +function! s:system(cmd) + call system(a:cmd) + if v:shell_error + throw 'system() failed: ' . a:cmd + endif +endfunction + +function! s:rmdir(path) + if executable('rm') + call s:system('rm -rf ' . shellescape(a:path)) + else + call s:system('rmdir /s /q ' . shellescape(a:path)) + endif +endfunction + +try + call s:main() + qall +catch + echo v:exception + sleep 2 + cquit +endtry From ff2b0f84a8d22a2c0a0c73c7b8dccad5f85960a6 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 11 Dec 2011 09:29:13 +0900 Subject: [PATCH 376/783] cosmetic change --- tools/upload.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/upload.vim b/tools/upload.vim index 349ffddaa..1751409bb 100644 --- a/tools/upload.vim +++ b/tools/upload.vim @@ -109,8 +109,8 @@ function! s:main() if filereadable('vimdoc-ja.zip') call delete('vimdoc-ja.zip') endif - call mkdir('vimdoc-ja') - call s:system('git archive master | tar -x -C vimdoc-ja') + call s:system('git clone -b master . vimdoc-ja') + call s:rmdir('vimdoc-ja/.git') silent! helptags vimdoc-ja/doc call s:system('zip -r vimdoc-ja.zip vimdoc-ja') echo "Please enter github user/password to upload package." From 2410b3f076c252d7e99ef2e730beab87746312d9 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 11 Dec 2011 17:47:29 +0900 Subject: [PATCH 377/783] upload.vim: tar --- tools/upload.vim | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/tools/upload.vim b/tools/upload.vim index 1751409bb..596f5e250 100644 --- a/tools/upload.vim +++ b/tools/upload.vim @@ -102,6 +102,18 @@ function! s:github_repos_downloads_get_by_name(user, repos, name) throw 'Not Found' endfunction +function! s:github_repos_downloads_replace(auth_user, auth_password, user, repos, file, name, description, content_type) + try + let download = s:github_repos_downloads_get_by_name(a:user, a:repos, a:name) + catch /Not Found/ + let download = {} + endtry + if !empty(download) + call s:github_repos_downloads_delete(a:auth_user, a:auth_password, a:user, a:repos, download.id) + endif + call s:github_repos_downloads_create(a:auth_user, a:auth_password, a:user, a:repos, a:file, a:name, a:description, a:content_type) +endfunction + function! s:main() if isdirectory('vimdoc-ja') call s:rmdir('vimdoc-ja') @@ -109,25 +121,19 @@ function! s:main() if filereadable('vimdoc-ja.zip') call delete('vimdoc-ja.zip') endif + if filereadable('vimdoc-ja.tar.gz') + call delete('vimdoc-ja.tar.gz') + endif call s:system('git clone -b master . vimdoc-ja') call s:rmdir('vimdoc-ja/.git') silent! helptags vimdoc-ja/doc call s:system('zip -r vimdoc-ja.zip vimdoc-ja') - echo "Please enter github user/password to upload package." + call s:system('tar czf vimdoc-ja.tar.gz vimdoc-ja') + echo 'Please enter github user/password to upload package to vim-jp/vimdoc-ja project.' let auth_user = input('user: ') let auth_password = inputsecret('password: ') - let user = 'vim-jp' - let repos = 'vimdoc-ja' - let file = 'vimdoc-ja.zip' - try - let download = s:github_repos_downloads_get_by_name(user, repos, file) - catch /Not Found/ - let download = {} - endtry - if !empty(download) - call s:github_repos_downloads_delete(auth_user, auth_password, user, repos, download.id) - endif - call s:github_repos_downloads_create(auth_user, auth_password, user, repos, file, file, '', '') + call s:github_repos_downloads_replace(auth_user, auth_password, 'vim-jp', 'vimdoc-ja', 'vimdoc-ja.zip', 'vimdoc-ja.zip', '', '') + call s:github_repos_downloads_replace(auth_user, auth_password, 'vim-jp', 'vimdoc-ja', 'vimdoc-ja.tar.gz', 'vimdoc-ja.tar.gz', '', '') endfunction function! s:system(cmd) From 228fa2caba6977b2c2015f381665869ddf97687d Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Fri, 16 Dec 2011 13:00:11 +0900 Subject: [PATCH 378/783] update to snapshot --- en/autocmd.txt | 6 +-- en/change.txt | 4 +- en/eval.txt | 69 +++++++++++++++++++------ en/map.txt | 13 +++-- en/mbyte.txt | 6 +-- en/netbeans.txt | 23 ++++++--- en/options.txt | 40 ++++++++++---- en/pattern.txt | 11 ++-- en/pi_netrw.txt | 129 ++++++++++++++++++++++++++++++++++------------ en/pi_vimball.txt | 4 +- en/syntax.txt | 6 +-- en/tagsrch.txt | 6 +-- en/various.txt | 15 ++++-- 13 files changed, 241 insertions(+), 91 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index c14845584..8c7f64715 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.3. Last change: 2011 Aug 29 +*autocmd.txt* For Vim version 7.3. Last change: 2011 Oct 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1061,8 +1061,8 @@ option will not cause any commands to be executed. It's possible to use this inside an autocommand too, so you can base the autocommands for one extension on another extension. Example: > - :au Bufenter *.cpp so ~/.vimrc_cpp - :au Bufenter *.cpp doau BufEnter x.c + :au BufEnter *.cpp so ~/.vimrc_cpp + :au BufEnter *.cpp doau BufEnter x.c < Be careful to avoid endless loops. See |autocmd-nested|. diff --git a/en/change.txt b/en/change.txt index 1f92224cf..d40d3509e 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.3. Last change: 2011 Jun 19 +*change.txt* For Vim version 7.3. Last change: 2011 Oct 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -71,7 +71,7 @@ For inserting text see |insert.txt|. "D" deletes the highlighted text plus all text until the end of the line. {not in Vi} - *:d* *:de* *:del* *:delete* + *:d* *:de* *:del* *:delete* *:dl* :[range]d[elete] [x] Delete [range] lines (default: current line) [into register x]. diff --git a/en/eval.txt b/en/eval.txt index 624b47da9..89ac16347 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2011 Aug 29 +*eval.txt* For Vim version 7.3. Last change: 2011 Dec 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -615,7 +615,6 @@ Expression syntax summary, from least to most significant: - expr7 unary minus + expr7 unary plus - |expr8| expr8[expr1] byte of a String or item of a |List| expr8[expr1 : expr1] substring of a String or sublist of a |List| expr8.name entry in a |Dictionary| @@ -801,11 +800,12 @@ expr6 . expr6 .. String concatenation *expr-.* For |Lists| only "+" is possible and then both expr6 must be a list. The result is a new list with the two lists Concatenated. -expr7 * expr7 .. number multiplication *expr-star* -expr7 / expr7 .. number division *expr-/* -expr7 % expr7 .. number modulo *expr-%* +expr7 * expr7 .. Number multiplication *expr-star* +expr7 / expr7 .. Number division *expr-/* +expr7 % expr7 .. Number modulo *expr-%* For all, except ".", Strings are converted to Numbers. +For bitwise operators see |and()|, |or()| and |xor()|. Note the difference between "+" and ".": "123" + "456" = 579 @@ -945,7 +945,8 @@ When expr8 is a |Funcref| type variable, invoke the function it refers to. *expr9* number ------ -number number constant *expr-number* +number number constant *expr-number* + *hex-number* *octal-number* Decimal, Hexadecimal (starting with 0x or 0X), or Octal (starting with 0). @@ -1687,6 +1688,7 @@ USAGE RESULT DESCRIPTION ~ abs( {expr}) Float or Number absolute value of {expr} acos( {expr}) Float arc cosine of {expr} add( {list}, {item}) List append {item} to |List| {list} +and( {expr}, {expr}) Number bitwise AND append( {lnum}, {string}) Number append {string} below line {lnum} append( {lnum}, {list}) Number append lines {list} below line {lnum} argc() Number number of files in the argument list @@ -1766,7 +1768,7 @@ foldtext( ) String line displayed for closed fold foldtextresult( {lnum}) String text for closed fold at {lnum} foreground( ) Number bring the Vim window to the foreground function( {name}) Funcref reference to function {name} -garbagecollect( [at_exit]) none free memory, breaking cyclic references +garbagecollect( [{atexit}]) none free memory, breaking cyclic references get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def} get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def} getbufline( {expr}, {lnum} [, {end}]) @@ -1825,6 +1827,7 @@ inputrestore() Number restore typeahead inputsave() Number save and clear typeahead inputsecret( {prompt} [, {text}]) String like input() but hiding the text insert( {list}, {item} [, {idx}]) List insert {item} in {list} [before {idx}] +invert( {expr}) Number bitwise invert isdirectory( {directory}) Number TRUE if {directory} is a directory islocked( {expr}) Number TRUE if {expr} is locked items( {dict}) List key-value pairs in {dict} @@ -1841,7 +1844,8 @@ log( {expr}) Float natural logarithm (base e) of {expr} log10( {expr}) Float logarithm of Float {expr} to base 10 map( {expr}, {string}) List/Dict change each item in {expr} to {expr} maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) - String rhs of mapping {name} in mode {mode} + String or Dict + rhs of mapping {name} in mode {mode} mapcheck( {name}[, {mode} [, {abbr}]]) String check for mappings matching {name} match( {expr}, {pat}[, {start}[, {count}]]) @@ -1864,6 +1868,7 @@ mode( [expr]) String current editing mode mzeval( {expr}) any evaluate |MzScheme| expression nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} nr2char( {expr}) String single char with ASCII value {expr} +or( {expr}, {expr}) Number bitwise OR pathshorten( {expr}) String shorten directory names in a path pow( {x}, {y}) Float {x} to the power of {y} prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} @@ -1987,6 +1992,7 @@ winsaveview() Dict save view of current window winwidth( {nr}) Number width of window {nr} writefile( {list}, {fname} [, {binary}]) Number write list of lines to file {fname} +xor( {expr}, {expr}) Number bitwise XOR abs({expr}) *abs()* Return the absolute value of {expr}. When {expr} evaluates to @@ -2026,6 +2032,13 @@ add({list}, {expr}) *add()* Use |insert()| to add an item at another position. +and({expr}, {expr}) *and()* + Bitwise AND on the two arguments. The arguments are converted + to a number. A List, Dict or Float argument causes an error. + Example: > + :let flag = and(bits, 0x80) + + append({lnum}, {expr}) *append()* When {expr} is a |List|: Append each item of the |List| as a text line below line {lnum} in the current buffer. @@ -3065,7 +3078,7 @@ function({name}) *function()* *E700* {name} can be a user defined function or an internal function. -garbagecollect([at_exit]) *garbagecollect()* +garbagecollect([{atexit}]) *garbagecollect()* Cleanup unused |Lists| and |Dictionaries| that have circular references. There is hardly ever a need to invoke this function, as it is automatically done when Vim runs out of @@ -3075,7 +3088,7 @@ garbagecollect([at_exit]) *garbagecollect()* This is useful if you have deleted a very big |List| and/or |Dictionary| with circular references in a script that runs for a long time. - When the optional "at_exit" argument is one, garbage + When the optional {atexit} argument is one, garbage collection will also be done when exiting Vim, if it wasn't done before. This is useful when checking for memory leaks. @@ -3151,6 +3164,8 @@ getchar([expr]) *getchar()* one-byte character it is the character itself as a number. Use nr2char() to convert it to a String. + Use getcharmod() to obtain any additional modifiers. + When the user clicks a mouse button, the mouse event will be returned. The position can then be found in |v:mouse_col|, |v:mouse_lnum| and |v:mouse_win|. This example positions the @@ -3189,10 +3204,11 @@ getcharmod() *getcharmod()* 2 shift 4 control 8 alt (meta) - 16 mouse double click - 32 mouse triple click - 64 mouse quadruple click - 128 Macintosh only: command + 16 meta (when it's different from ALT) + 32 mouse double click + 64 mouse triple click + 96 mouse quadruple click (== 32 + 64) + 128 command (Macintosh only) Only the modifiers that have not been included in the character itself are obtained. Thus Shift-a results in "A" without a modifier. @@ -3782,6 +3798,11 @@ insert({list}, {item} [, {idx}]) *insert()* Note that when {item} is a |List| it is inserted as a single item. Use |extend()| to concatenate |Lists|. +invert({expr}) *invert()* + Bitwise invert. The argument is converted to a number. A + List, Dict or Float argument causes an error. Example: > + :let bits = invert(bits) + isdirectory({directory}) *isdirectory()* The result is a Number, which is non-zero when a directory with the name {directory} exists. If {directory} doesn't @@ -4347,6 +4368,13 @@ getpos({expr}) Get the position for {expr}. For possible values of {expr} call setpos('.', save_cursor) < Also see |setpos()|. +or({expr}, {expr}) *or()* + Bitwise OR on the two arguments. The arguments are converted + to a number. A List, Dict or Float argument causes an error. + Example: > + :let bits = or(bits, 0x80) + + pathshorten({expr}) *pathshorten()* Shorten directory names in the path {expr} and return the result. The tail, the file name, is kept as-is. The other @@ -6121,7 +6149,15 @@ writefile({list}, {fname} [, {binary}]) To copy a file byte for byte: > :let fl = readfile("foo", "b") :call writefile(fl, "foocopy", "b") -< + + +xor({expr}, {expr}) *xor()* + Bitwise XOR on the two arguments. The arguments are converted + to a number. A List, Dict or Float argument causes an error. + Example: > + :let bits = xor(bits, 0x80) + + *feature-list* There are three types of features: @@ -6226,6 +6262,7 @@ mouse_gpm Compiled with support for gpm (Linux console mouse) mouse_netterm Compiled with support for netterm mouse. mouse_pterm Compiled with support for qnx pterm mouse. mouse_sysmouse Compiled with support for sysmouse (*BSD console mouse) +mouse_urxvt Compiled with support for urxvt mouse. mouse_xterm Compiled with support for xterm mouse. mouseshape Compiled with support for 'mouseshape'. multi_byte Compiled with support for 'encoding' @@ -6374,7 +6411,7 @@ last defined. Example: > < See |:verbose-cmd| for more information. - *E124* *E125* + *E124* *E125* *E853* :fu[nction][!] {name}([arguments]) [range] [abort] [dict] Define a new function by the name {name}. The name must be made of alphanumeric characters and '_', and diff --git a/en/map.txt b/en/map.txt index 92e21668f..73b79f23d 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.3. Last change: 2011 Aug 19 +*map.txt* For Vim version 7.3. Last change: 2011 Oct 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -237,11 +237,18 @@ For this reason the following is blocked: - Editing another buffer. - The |:normal| command. - Moving the cursor is allowed, but it is restored afterwards. -- You can use getchar(), but the existing typeahead isn't seen and new - typeahead is discarded. If you want the mapping to do any of these let the returned characters do that. +You can use getchar(), it consumes typeahead if there is any. E.g., if you +have these mappings: > + inoremap <expr> <C-L> nr2char(getchar()) + inoremap <expr> <C-L>x "foo" +If you now type CTRL-L nothing happens yet, Vim needs the next character to +decide what mapping to use. If you type 'x' the second mapping is used and +"foo" is inserted. If you type any other key the first mapping is used, +getchar() gets the typed key and returns it. + Here is an example that inserts a list number that increases: > let counter = 0 inoremap <expr> <C-L> ListItem() diff --git a/en/mbyte.txt b/en/mbyte.txt index 66af7b465..e8d067600 100644 --- a/en/mbyte.txt +++ b/en/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.3. Last change: 2011 Jul 18 +*mbyte.txt* For Vim version 7.3. Last change: 2011 Oct 15 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -797,8 +797,8 @@ is suitable for complex input, such as CJK. number of Hira-gana characters are 76. So, first, we pre-input text as pronounced in Hira-gana, second, we convert Hira-gana to Kanji or Kata-Kana, if needed. There are some Kana-Kanji conversion server: jserver - (distributed with Wnn, see below) and canna. Canna could be found at: - ftp://ftp.nec.co.jp/pub/Canna/ (no longer works). + (distributed with Wnn, see below) and canna. Canna can be found at: + http://canna.sourceforge.jp/ There is a good input system: Wnn4.2. Wnn 4.2 contains, xwnmo (|IM-server|) diff --git a/en/netbeans.txt b/en/netbeans.txt index 6b186b344..b7614e7f0 100644 --- a/en/netbeans.txt +++ b/en/netbeans.txt @@ -1,4 +1,4 @@ -*netbeans.txt* For Vim version 7.3. Last change: 2010 Sep 29 +*netbeans.txt* For Vim version 7.3. Last change: 2011 Oct 20 VIM REFERENCE MANUAL by Gordon Prieur et al. @@ -263,6 +263,12 @@ The messages are currently sent over a socket. Since the messages are in plain UTF-8 text this protocol could also be used with any other communication mechanism. +Netbeans messages are processed when Vim is idle, waiting for user input. +When Vim is run in non-interactive mode, for example when running an automated +test case that sources a Vim script, the idle loop may not be called often +enough. In that case, insert |sleep| commands in the Vim script. The |sleep| +command does invoke Netbeans messages processing. + 6.1 Kinds of messages |nb-messages| 6.2 Terms |nb-terms| 6.3 Commands |nb-commands| @@ -833,11 +839,16 @@ These errors occur when a message violates the protocol: signs. *:nbkey* -:nb[key] {key} Pass the {key} to the Vim Controller for processing - -When a hot-key has been installed with the specialKeys command, this command -can be used to generate a hotkey messages to the Vim Controller. The events -newDotAndMark, keyCommand and keyAtPos are generated (in this order). +:nb[key] {key} Pass the {key} to the Vim Controller for processing. + When a hot-key has been installed with the specialKeys + command, this command can be used to generate a hotkey + message to the Vim Controller. + This command can also be used to pass any text to the + Vim Controller. It is used by Pyclewn, for example, + to build the complete set of gdb commands as Vim user + commands. + The events newDotAndMark, keyCommand and keyAtPos are + generated (in this order). ============================================================================== diff --git a/en/options.txt b/en/options.txt index b256cb6fb..c52e31b1b 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.3. Last change: 2011 Sep 09 +*options.txt* For Vim version 7.3. Last change: 2011 Dec 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -401,6 +401,9 @@ On Unix systems the form "${HOME}" can be used too. The name between {} can contain non-id characters then. Note that if you want to use this for the "gf" command, you need to add the '{' and '}' characters to 'isfname'. +On MS-Windows, if $HOME is not defined as an environment variable, then +at runtime Vim will set it to the expansion of $HOMEDRIVE$HOMEPATH. + NOTE: expanding environment variables and "~/" is only done with the ":set" command, not when assigning a value to an option with ":let". @@ -1217,7 +1220,8 @@ A jump table for the options with a short description can be found at |Q_op|. |:bwipeout| CAREFUL: when "unload", "delete" or "wipe" is used changes in a buffer - are lost without a warning. + are lost without a warning. Also, these values may break autocommands + that switch between buffers temporarily. This option is used together with 'buftype' and 'swapfile' to specify special kinds of buffers. See |special-buffers|. @@ -3554,8 +3558,8 @@ A jump table for the options with a short description can be found at |Q_op|. screen. *'guioptions'* *'go'* -'guioptions' 'go' string (default "gmrLtT" (MS-Windows), - "agimrLtT" (GTK, Motif and Athena)) +'guioptions' 'go' string (default "egmrLtT" (MS-Windows), + "aegimrLtT" (GTK, Motif and Athena)) global {not in Vi} {only available when compiled with GUI enabled} @@ -3858,14 +3862,16 @@ A jump table for the options with a short description can be found at |Q_op|. are not applied. See also: 'incsearch' and |:match|. When you get bored looking at the highlighted matches, you can turn it - off with |:nohlsearch|. As soon as you use a search command, the - highlighting comes back. + off with |:nohlsearch|. This does not change the option value, as + soon as you use a search command, the highlighting comes back. 'redrawtime' specifies the maximum time spent on finding matches. When the search pattern can match an end-of-line, Vim will try to highlight all of the matched text. However, this depends on where the search starts. This will be the first line in the window or the first line below a closed fold. A match in a previous line which is not drawn may not continue in a newly drawn line. + You can specify whether the highlight status is restored on startup + with the 'h' flag in 'viminfo' |viminfo-h|. NOTE: This option is reset when 'compatible' is set. *'history'* *'hi'* @@ -5241,7 +5247,7 @@ A jump table for the options with a short description can be found at |Q_op|. recognized as a compressed file. Only normal file name characters can be used, "/\*?[|<>" are illegal. - *'path'* *'pa'* *E343* *E345* *E347* + *'path'* *'pa'* *E343* *E345* *E347* *E854* 'path' 'pa' string (default on Unix: ".,/usr/include,," on OS/2: ".,/emx/include,," other systems: ".,,") @@ -6762,8 +6768,8 @@ A jump table for the options with a short description can be found at |Q_op|. usetab Like "useopen", but also consider windows in other tab pages. split If included, split the current window before loading - a buffer. Otherwise: do not split, use current window. - Supported in |quickfix| commands that display errors. + a buffer for a |quickfix| command that display errors. + Otherwise: do not split, use current window. newtab Like "split", but open a new tab page. Overrules "split" when both are present. @@ -7368,6 +7374,8 @@ A jump table for the options with a short description can be found at |Q_op|. jsbterm JSB term mouse handling. *pterm-mouse* pterm QNX pterm mouse handling. + *urxvt-mouse* + urxvt Mouse handling for the urxvt (rxvt-unicode) terminal. The mouse handling must be enabled at compile time |+mouse_xterm| |+mouse_dec| |+mouse_netterm|. @@ -7584,15 +7592,18 @@ A jump table for the options with a short description can be found at |Q_op|. parameter. The following is a list of the identifying characters and the effect of their value. CHAR VALUE ~ + *viminfo-!* ! When included, save and restore global variables that start with an uppercase letter, and don't contain a lowercase letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis" and "_K_L_M" are not. Nested List and Dict items may not be read back correctly, you end up with an empty item. + *viminfo-quote* " Maximum number of lines saved for each register. Old name of the '<' item, with the disadvantage that you need to put a backslash before the ", otherwise it will be recognized as the start of a comment! + *viminfo-%* % When included, save and restore the buffer list. If Vim is started with a file name argument, the buffer list is not restored. If Vim is started without a file name argument, the @@ -7602,38 +7613,48 @@ A jump table for the options with a short description can be found at |Q_op|. When followed by a number, the number specifies the maximum number of buffers that are stored. Without a number all buffers are stored. + *viminfo-'* ' Maximum number of previously edited files for which the marks are remembered. This parameter must always be included when 'viminfo' is non-empty. Including this item also means that the |jumplist| and the |changelist| are stored in the viminfo file. + *viminfo-/* / Maximum number of items in the search pattern history to be saved. If non-zero, then the previous search and substitute patterns are also saved. When not included, the value of 'history' is used. + *viminfo-:* : Maximum number of items in the command-line history to be saved. When not included, the value of 'history' is used. + *viminfo-<* < Maximum number of lines saved for each register. If zero then registers are not saved. When not included, all lines are saved. '"' is the old name for this item. Also see the 's' item below: limit specified in Kbyte. + *viminfo-@* @ Maximum number of items in the input-line history to be saved. When not included, the value of 'history' is used. + *viminfo-c* c When included, convert the text in the viminfo file from the 'encoding' used when writing the file to the current 'encoding'. See |viminfo-encoding|. + *viminfo-f* f Whether file marks need to be stored. If zero, file marks ('0 to '9, 'A to 'Z) are not stored. When not present or when non-zero, they are all stored. '0 is used for the current cursor position (when exiting or when doing ":wviminfo"). + *viminfo-h* h Disable the effect of 'hlsearch' when loading the viminfo file. When not included, it depends on whether ":nohlsearch" has been used since the last search command. + *viminfo-n* n Name of the viminfo file. The name must immediately follow the 'n'. Must be the last one! If the "-i" argument was given when starting Vim, that file name overrides the one given here with 'viminfo'. Environment variables are expanded when opening the file, not when setting the option. + *viminfo-r* r Removable media. The argument is a string (up to the next ','). This parameter can be given several times. Each specifies the start of a path for which no marks will be @@ -7642,6 +7663,7 @@ A jump table for the options with a short description can be found at |Q_op|. also use it for temp files, e.g., for Unix: "r/tmp". Case is ignored. Maximum length of each 'r' argument is 50 characters. + *viminfo-s* s Maximum size of an item in Kbyte. If zero then registers are not saved. Currently only applies to registers. The default "s10" will exclude registers with more than 10 Kbyte of text. diff --git a/en/pattern.txt b/en/pattern.txt index 9b7eacceb..4283320c4 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.3. Last change: 2011 Jul 20 +*pattern.txt* For Vim version 7.3. Last change: 2011 Nov 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -21,7 +21,7 @@ explanations are in chapter 27 |usr_27.txt|. 10. Highlighting matches |match-highlight| ============================================================================== -1. Search commands *search-commands* *E486* +1. Search commands *search-commands* */* /{pattern}[/]<CR> Search forward for the [count]'th occurrence of @@ -150,6 +150,11 @@ use <Esc> to abandon the search. All matches for the last used search pattern will be highlighted if you set the 'hlsearch' option. This can be suspended with the |:nohlsearch| command. +When no match is found you get the error: *E486* Pattern not found +Note that for the |:global| command this behaves like a normal message, for Vi +compatibility. For the |:s| command the "e" flag can be used to avoid the +error message |:s_flags|. + *search-offset* *{offset}* These commands search for the specified pattern. With "/" and "?" an additional offset may be given. There are two types of offsets: line offsets @@ -932,7 +937,7 @@ match ASCII characters, as indicated by the range. \l lowercase character: [a-z] */\l* \L non-lowercase character: [^a-z] */\L* \u uppercase character: [A-Z] */\u* -\U non-uppercase character [^A-Z] */\U* +\U non-uppercase character: [^A-Z] */\U* NOTE: Using the atom is faster than the [] form. diff --git a/en/pi_netrw.txt b/en/pi_netrw.txt index 1ee4b6a52..4b74d1f56 100644 --- a/en/pi_netrw.txt +++ b/en/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 7.3. Last change: 2011 May 31 +*pi_netrw.txt* For Vim version 7.3. Last change: 2011 Sep 26 ----------------------------------------------------- NETRW REFERENCE MANUAL by Charles E. Campbell, Jr. @@ -89,7 +89,7 @@ Copyright: Copyright (C) 1999-2011 Charles E Campbell, Jr *netrw-copyright* Marked Files: Unmarking............................|netrw-mu| Netrw Browser Variables............................|netrw-browser-var| Netrw Browsing And Option Incompatibilities........|netrw-incompatible| - Netrw Settings.....................................|netrw-settings| + Netrw Settings Window..............................|netrw-settings-window| Obtaining A File...................................|netrw-O| Preview Window.....................................|netrw-p| Previous Window....................................|netrw-P| @@ -294,14 +294,14 @@ DIRECTORY LISTING *netrw-trailingslash* *netrw-dirlist* {{{2 CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass* {{{2 Attempts to use ftp will prompt you for a user-id and a password. - These will be saved in global variables g:netrw_uid and - s:netrw_passwd; subsequent uses of ftp will re-use those two items to - simplify the further use of ftp. However, if you need to use a - different user id and/or password, you'll want to call NetUserPass() + These will be saved in global variables |g:netrw_uid| and + |s:netrw_passwd|; subsequent use of ftp will re-use those two strings, + thereby simplifying use of ftp. However, if you need to use a + different user id and/or password, you'll want to call |NetUserPass()| first. To work around the need to enter passwords, check if your ftp supports a <.netrc> file in your home directory. Also see |netrw-passwd| (and if you're using ssh/scp hoping to figure out how - to not need to use passwords, look at |netrw-ssh-hack|). + to not need to use passwords for scp, look at |netrw-ssh-hack|). :NetUserPass [uid [password]] -- prompts as needed :call NetUserPass() -- prompts for uid and password @@ -331,7 +331,8 @@ settings are described below, in |netrw-browser-options|, and in netrw edits a file. The file is first edited, and then the function reference (|Funcref|) is called. This variable may also hold a |List| of Funcrefs. - (default) not defined + (default) not defined. (the capital in g:Netrw... + is required by its holding a function reference) > Example: place in .vimrc; affects all file opening fun! MyFuncRef() @@ -479,6 +480,9 @@ variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to let g:netrw_scp_cmd = '"c:\Program Files\PuTTY\pscp.exe" -q -batch' let g:netrw_sftp_cmd= '"c:\Program Files\PuTTY\psftp.exe"' < +(note: it has been reported that windows 7 with putty v0.6's "-batch" option + doesn't work, so its best to leave it off for that system) + See |netrw-p8| for more about putty, pscp, psftp, etc. Ftp, an old protocol, seems to be blessed by numerous implementations. @@ -716,13 +720,16 @@ below, a {netfile} is an url to a remote file. ============================================================================== -8. Variables and Options *netrw-options* *netrw-var* {{{1 +8. Variables and Options *netrw-settings* {{{1 -(if you're interested in the netrw browser settings, see: |netrw-browser-var|) +(also see: |netrw-options| |netrw-variables| |netrw-protocol| + |netrw-browser-settings| |netrw-browser-options| + |netrw-browser-var| ) The <netrw.vim> script provides several variables which act as options to affect <netrw.vim>'s file transfer behavior. These variables typically may be set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|) + *netrw-options* > ------------- Netrw Options @@ -754,6 +761,7 @@ set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|) =1 use default method to do ftp > ----------------------------------------------------------------------- < + *netrw-internal-variables* The script will also make use of the following variables internally, albeit temporarily. > @@ -1147,15 +1155,14 @@ allows one to open a new window to hold the new directory listing or file. A horizontal split is used. (for vertical splitting, see |netrw-v|) Normally, the o key splits the window horizontally with the new window and -cursor at the top. To change to splitting the window horizontally with the -new window and cursor at the bottom, have - - let g:netrw_alto = 1 - -in your <.vimrc>. (also see |netrw-t| |netrw-T| |netrw-v|) +cursor at the top. Associated setting variables: |g:netrw_alto| |g:netrw_winsize| +Related Actions |netrw-cr| |netrw-p| |netrw-t| |netrw-T| |netrw-v| +Associated setting variables: + |g:netrw_alto| control above/below splitting + |g:netrw_winsize| control initial sizing BROWSING WITH A NEW TAB *netrw-t* *netrw-T* {{{2 @@ -1164,8 +1171,9 @@ allows one to open a new window holding the new directory listing or file in a new tab. The "T" version puts the file or directory into a background tab (see |gT|) -Related actions: |netrw-o| |netrw-v| - +Related Actions |netrw-cr| |netrw-o| |netrw-p| |netrw-v| +Associated setting variables: + |g:netrw_winsize| control initial sizing BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v* {{{2 @@ -1174,18 +1182,18 @@ allows one to open a new window to hold the new directory listing or file. A vertical split is used. (for horizontal splitting, see |netrw-o|) Normally, the v key splits the window vertically with the new window and -cursor at the left. To change to splitting the window vertically with the new -window and cursor at the right, have - - let g:netrw_altv = 1 - -in your <.vimrc>. (also see: |netrw-o| |netrw-t| |netrw-T|) +cursor at the left. There is only one tree listing buffer; using "v" on a displayed subdirectory will split the screen, but the same buffer will be shown twice. Associated setting variable: |g:netrw_altv| |g:netrw_winsize| +Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v| +Associated setting variables: + |g:netrw_altv| control right/left splitting + |g:netrw_winsize| control initial sizing + CHANGE LISTING STYLE (THIN LONG WIDE TREE) *netrw-i* {{{2 @@ -1386,6 +1394,7 @@ to remove it again using the g:netrw_rmf_cmd variable. Its default value is: g:netrw_rmf_cmd: ssh HOSTNAME rm -f +Related topics: |netrw-d| Associated setting variable: |g:netrw_local_rmdir| |g:netrw_rm_cmd| |g:netrw_rmdir_cmd| |g:netrw_ssh_cmd| @@ -1520,7 +1529,7 @@ What it means: Associated setting variables: |g:netrw_hide| |g:netrw_list_hide| Associated topics: |netrw-a| |netrw-gh| |netrw-mh| - + *netrw-sort-sequence* EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence* {{{2 When "Sorted by" is name, one may specify priority via the sorting sequence @@ -1723,9 +1732,9 @@ directory's name. A bare <CR> at that point will abort the making of the directory. Attempts to make a local directory that already exists (as either a file or a directory) will be detected, reported on, and ignored. -Currently, making a directory via ftp is not supported. - -Associated setting variable: |g:netrw_local_mkdir| |g:netrw_mkdir_cmd| +Related topics: |netrw-D| +Associated setting variables: |g:netrw_local_mkdir| |g:netrw_mkdir_cmd| + |g:netrw_remote_mkdir| MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* {{{2 @@ -1953,10 +1962,11 @@ MARKED FILES: UNMARKING *netrw-mu* {{{2 The "mu" mapping will unmark all currently marked files. - + *netrw-browser-settings* NETRW BROWSER VARIABLES *netrw-browser-options* *netrw-browser-var* {{{2 -(if you're interested in the netrw file transfer settings, see |netrw-options|) +(if you're interested in the netrw file transfer settings, see |netrw-options| + and |netrw-protocol|) The <netrw.vim> browser provides settings in the form of variables which you may modify; by placing these settings in your <.vimrc>, you may customize @@ -2006,6 +2016,15 @@ your browsing preferences. (see also: |netrw-settings|) Will compress marked files with this command + *g:Netrw_corehandler* Allows one to specify something additional + to do when handling <core> files via netrw's + browser's "x" command (see |netrw-x|). If + present, g:Netrw_corehandler specifies + either one or more function references + (see |Funcref|). (the capital g:Netrw... + is required its holding a function reference) + + *g:netrw_ctags* ="ctags" The default external program used to create tags @@ -2157,6 +2176,7 @@ your browsing preferences. (see also: |netrw-settings|) columnar. *g:netrw_mkdir_cmd* command for making a remote directory + via ssh (also see |g:netrw_remote_mkdir|) default: "ssh USEPORT HOSTNAME mkdir" *g:netrw_mousemaps* =1 (default) enables mouse buttons while @@ -2167,6 +2187,15 @@ your browsing preferences. (see also: |netrw-settings|) rightmouse : remove file/directory =0: disables mouse maps + *g:netrw_nobeval* doesn't exist (default) + If this variable exists, then balloon + evaluation will be suppressed + (see |'ballooneval'|) + + *g:netrw_remote_mkdir* command for making a local directory + via ftp (also see |g:netrw_mkdir_cmd|) + default: "mkdir" + *g:netrw_retmap* if it exists and is set to one, then: * if in a netrw-selected file, AND * no normal-mode <2-leftmouse> mapping exists, @@ -2279,6 +2308,9 @@ your browsing preferences. (see also: |netrw-settings|) is an integer describing the percentage of the current netrw buffer's window to be used for the new window. + If g:netrw_winsize is less than zero, then + the absolute value of g:netrw_winsize lines + or columns will be used for the new window. default: 50 (for 50%) *g:netrw_xstrlen* Controls how netrw computes string lengths, @@ -2313,7 +2345,7 @@ file you edit; this apparently also applies to directories. In other words, autochdir sets the current directory to that containing the "file" (even if that "file" is itself a directory). -NETRW BROWSER SETTINGS *netrw-settings* {{{2 +NETRW SETTINGS WINDOW *netrw-settings-window* {{{2 With the NetrwSettings.vim plugin, > :NetrwSettings @@ -2356,7 +2388,6 @@ Related topics: * To automatically make the currently browsed directory the current directory, see |g:netrw_keepdir|. - *netrw-createfile* OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY *netrw-%* @@ -2390,8 +2421,7 @@ PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2 To edit a file or directory in the previously used (last accessed) window (see :he |CTRL-W_p|), press a "P". If there's only one window, then the one window -will be horizontally split (above/below splitting is controlled by -|g:netrw_alto|, and its initial size is controlled by |g:netrw_winsize|). +will be horizontally split (by default). If there's more than one window, the previous window will be re-used on the selected file/directory. If the previous window's associated buffer @@ -2399,6 +2429,13 @@ has been modified, and there's only one window with that buffer, then the user will be asked if s/he wishes to save the buffer first (yes, no, or cancel). +Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v| +Associated setting variables: + |g:netrw_alto| control above/below splitting + |g:netrw_altv| control right/left splitting + |g:netrw_preview| control horizontal vs vertical splitting + |g:netrw_winsize| control initial sizing + REFRESHING THE LISTING *netrw-ctrl-l* *netrw-ctrl_l* {{{2 @@ -2804,6 +2841,30 @@ which is loaded automatically at startup (assuming :set nocp). ============================================================================== 12. History *netrw-history* {{{1 + v143: Jun 01, 2011 * |g:netrw_winsize| will accept a negative + number; the absolute value of it will then + be used to specify lines/columns instead of + a percentage. + Jul 05, 2011 * the "d" map now supports mkdir via ftp + See |netrw-d| and |g:netrw_remote_mkdir| + Jul 11, 2011 * Changed Explore!, Sexplore!, and Vexplore + to use a percentage of |winwidth()| instead + of a percentage of |winheight()|. + Jul 11, 2011 * included support for https://... I'm just + beginning to test this, however. + Aug 01, 2011 * changed RestoreOptions to also restore + cursor position in netrw buffers. + Aug 12, 2011 * added a note about "%" to the balloon + Aug 30, 2011 * if |g:netrw_nobeval| exists, then balloon + evaluation is suppressed. + Aug 31, 2011 * (Benjamin R Haskell) provided a patch that + implements non-standard port handling for + files opened via the remote browser. + Aug 31, 2011 * Fixed a **//pattern Explorer bug + Sep 15, 2011 * (reported by Francesco Campana) netrw + now permits the "@" to be part of the + user id (if there's an @ that appears + to the right). v142: Apr 06, 2011 * I modified NetrwRemoteListing() to use shellescape(fnameescape(s:path),1) for the benefit of those using scp://.../ diff --git a/en/pi_vimball.txt b/en/pi_vimball.txt index 73e3e6669..fd0006df9 100644 --- a/en/pi_vimball.txt +++ b/en/pi_vimball.txt @@ -1,4 +1,4 @@ -*pi_vimball.txt* For Vim version 7.3. Last change: 2011 Aug 14 +*pi_vimball.txt* For Vim version 7.3. Last change: 2011 Sep 26 ---------------- Vimball Archiver @@ -177,6 +177,8 @@ WINDOWS *vimball-windows* ============================================================================== 4. Vimball History *vimball-history* {{{1 + 34 : Sep 22, 2011 * "UseVimball path" now supports a non-full path by + prepending the current directory to it. 33 : Apr 02, 2011 * Gave priority to *.vmb over *.vba * Changed silent! to sil! (shorter) * Safed |'swf'| setting (during vimball extraction, diff --git a/en/syntax.txt b/en/syntax.txt index 6d14f617f..38bdb3968 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.3. Last change: 2011 Sep 21 +*syntax.txt* For Vim version 7.3. Last change: 2011 Nov 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2723,7 +2723,7 @@ in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a modeline at the end of your LaTeX file: > % vim: fdm=syntax If your system becomes too slow, then you might wish to look into > - https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7 + http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text < *tex-nospell* Tex: Don't Want Spell Checking In Comments? ~ @@ -3919,7 +3919,7 @@ First syncing method: *:syn-sync-first* The file will be parsed from the start. This makes syntax highlighting accurate, but can be slow for long files. Vim caches previously parsed text, so that it's only slow when parsing the text for the first time. However, -when making changes some part of the next needs to be parsed again (worst +when making changes some part of the text needs to be parsed again (worst case: to the end of the file). Using "fromstart" is equivalent to using "minlines" with a very large number. diff --git a/en/tagsrch.txt b/en/tagsrch.txt index 5334bb357..9abc1544a 100644 --- a/en/tagsrch.txt +++ b/en/tagsrch.txt @@ -1,4 +1,4 @@ -*tagsrch.txt* For Vim version 7.3. Last change: 2009 Feb 18 +*tagsrch.txt* For Vim version 7.3. Last change: 2011 Oct 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -770,12 +770,12 @@ CTRL-W i Open a new window, with the cursor on the first line {not in Vi} *:dli* *:dlist* -:[range]dl[ist][!] [/]string[/] +:[range]dli[st][!] [/]string[/] Like "[D" and "]D", but search in [range] lines (default: whole file). See |:search-args| for [/] and [!]. {not in Vi} Note that ":dl" works like ":delete" with the "l" - flag. + register. *[_CTRL-D* [ CTRL-D Jump to the first macro definition that contains the diff --git a/en/various.txt b/en/various.txt index 77a9f88d7..9fc890298 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.3. Last change: 2011 May 19 +*various.txt* For Vim version 7.3. Last change: 2011 Nov 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -350,12 +350,13 @@ N *+mouseshape* |'mouseshape'| B *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse| N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| B *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| -N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| +N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| -N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| -B *+multi_byte* 16 and 32 bit characters |multibyte| +N *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse| +N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| +B *+multi_byte* 16 and 32 bit characters |multibyte| *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| -N *+multi_lang* non-English language support |multi-lang| +N *+multi_lang* non-English language support |multi-lang| m *+mzscheme* Mzscheme interface |mzscheme| m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn| m *+netbeans_intg* |netbeans| @@ -602,6 +603,10 @@ K Run a program to lookup the keyword under the "gs" stands for "goto sleep". While sleeping the cursor is positioned in the text, if at a visible position. {not in Vi} + Also process the received netbeans messages. {only + available when compiled with the |+netbeans_intg| + feature} + *g_CTRL-A* g CTRL-A Only when Vim was compiled with MEM_PROFILING defined From c95f42f04f0ad4db684a082ec1ed60748c034906 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 10 Mar 2012 17:32:56 +0900 Subject: [PATCH 379/783] update to 7.3 snapshot --- en/autocmd.txt | 23 ++++++--- en/change.txt | 5 +- en/cmdline.txt | 4 +- en/debug.txt | 4 +- en/develop.txt | 13 ++++- en/eval.txt | 34 +++++++------ en/if_pyth.txt | 7 +-- en/insert.txt | 5 +- en/map.txt | 4 +- en/mlang.txt | 4 +- en/netbeans.txt | 4 +- en/options.txt | 38 +++++++++----- en/pi_getscript.txt | 20 +++++--- en/pi_netrw.txt | 8 +-- en/pi_tar.txt | 16 ++++-- en/pi_vimball.txt | 17 ++++--- en/pi_zip.txt | 23 +++++---- en/quickref.txt | 3 +- en/sign.txt | 6 ++- en/syntax.txt | 117 ++++++++++++++++++++------------------------ en/undo.txt | 9 +++- en/usr_41.txt | 8 ++- en/various.txt | 44 +++++++++-------- 23 files changed, 245 insertions(+), 171 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index 8c7f64715..44d2d62c4 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.3. Last change: 2011 Oct 26 +*autocmd.txt* For Vim version 7.3. Last change: 2012 Feb 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -33,7 +33,7 @@ files matching *.c. You can also use autocommands to implement advanced features, such as editing compressed files (see |gzip-example|). The usual place to put autocommands is in your .vimrc or .exrc file. - *E203* *E204* *E143* + *E203* *E204* *E143* *E855* WARNING: Using autocommands is very powerful, and may lead to unexpected side effects. Be careful not to destroy your text. - It's a good idea to do some testing on an expendable copy of a file first. @@ -699,7 +699,8 @@ MenuPopup Just before showing the popup menu (under the QuickFixCmdPre Before a quickfix command is run (|:make|, |:lmake|, |:grep|, |:lgrep|, |:grepadd|, |:lgrepadd|, |:vimgrep|, |:lvimgrep|, - |:vimgrepadd|, |:lvimgrepadd|, |:cscope|). + |:vimgrepadd|, |:lvimgrepadd|, |:cscope|, + |:helpgrep|, |:lhelpgrep|). The pattern is matched against the command being run. When |:grep| is used but 'grepprg' is set to "internal" it still matches "grep". @@ -710,7 +711,10 @@ QuickFixCmdPre Before a quickfix command is run (|:make|, *QuickFixCmdPost* QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix command is run, before jumping to the first - location. See |QuickFixCmdPost-example|. + location. For |:cfile| and |:lfile| commands + it is run after error file is read and before + moving to the first error. + See |QuickFixCmdPost-example|. *RemoteReply* RemoteReply When a reply from a Vim that functions as server was received |server2client()|. The @@ -1052,7 +1056,7 @@ Note that the 'eventignore' option applies here too. Events listed in this option will not cause any commands to be executed. *:do* *:doau* *:doautocmd* *E217* -:do[autocmd] [group] {event} [fname] +:do[autocmd] [<nomodeline>] [group] {event} [fname] Apply the autocommands matching [fname] (default: current file name) for {event} to the current buffer. You can use this when the current file name does not @@ -1071,14 +1075,17 @@ option will not cause any commands to be executed. argument is included, Vim executes only the matching autocommands for that group. Note: if you use an undefined group name, Vim gives you an error message. - + *<nomodeline>* After applying the autocommands the modelines are processed, so that their settings overrule the settings from autocommands, like what happens when - editing a file. + editing a file. This is skipped when the <nomodeline> + argument is present. You probably want to use + <nomodeline> for events that are not used when loading + a buffer, such as |User|. *:doautoa* *:doautoall* -:doautoa[ll] [group] {event} [fname] +:doautoa[ll] [<nomodeline>] [group] {event} [fname] Like ":doautocmd", but apply the autocommands to each loaded buffer. Note that [fname] is used to select the autocommands, not the buffers to which they are diff --git a/en/change.txt b/en/change.txt index d40d3509e..063b7a5ae 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.3. Last change: 2011 Oct 28 +*change.txt* For Vim version 7.3. Last change: 2012 Jan 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -88,7 +88,8 @@ An exception for the d{motion} command: If the motion is not linewise, the start and end of the motion are not in the same line, and there are only blanks before the start and after the end of the motion, the delete becomes linewise. This means that the delete also removes the line of blanks that you -might expect to remain. +might expect to remain. Use the |o_v| operator to force the motion to be +characterwise. Trying to delete an empty region of text (e.g., "d0" in the first column) is an error when 'cpoptions' includes the 'E' flag. diff --git a/en/cmdline.txt b/en/cmdline.txt index 12cebb2d9..6aec69ec9 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.3. Last change: 2011 Mar 27 +*cmdline.txt* For Vim version 7.3. Last change: 2012 Feb 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -426,6 +426,8 @@ a previous version <Esc> was used). In the pattern standard wildcards '*' and '?' are accepted when matching file names. '*' matches any string, '?' matches exactly one character. +The 'wildignorecase' option can be set to ignore case in filenames. + If you like tcsh's autolist completion, you can use this mapping: :cnoremap X <C-L><C-D> (Where X is the command key to use, <C-L> is CTRL-L and <C-D> is CTRL-D) diff --git a/en/debug.txt b/en/debug.txt index 12b0bb182..0b55c34c4 100644 --- a/en/debug.txt +++ b/en/debug.txt @@ -1,4 +1,4 @@ -*debug.txt* For Vim version 7.3. Last change: 2010 Dec 22 +*debug.txt* For Vim version 7.3. Last change: 2012 Feb 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -15,7 +15,7 @@ For debugging Vim scripts, functions, etc. see |debug-scripts| ============================================================================== -1. Location of a crash, using gcc and gdb *debug-gcc* +1. Location of a crash, using gcc and gdb *debug-gcc* *gdb* When Vim crashes in one of the test files, and you are using gcc for compilation, here is what you can do to find out exactly where Vim crashes. diff --git a/en/develop.txt b/en/develop.txt index 7cfdd5b22..0a4c03af5 100644 --- a/en/develop.txt +++ b/en/develop.txt @@ -1,4 +1,4 @@ -*develop.txt* For Vim version 7.3. Last change: 2008 Dec 17 +*develop.txt* For Vim version 7.3. Last change: 2012 Jan 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -232,6 +232,17 @@ time shadows global declaration new C++ reserved keyword try Borland C++ doesn't like it to be used as a variable. +clear Mac curses.h +echo Mac curses.h +instr Mac curses.h +meta Mac curses.h +newwin Mac curses.h +nl Mac curses.h +overwrite Mac curses.h +refresh Mac curses.h +scroll Mac curses.h +typeahead Mac curses.h + basename() GNU string function dirname() GNU string function get_env_value() Linux system function diff --git a/en/eval.txt b/en/eval.txt index 89ac16347..7de0e9a31 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2011 Dec 14 +*eval.txt* For Vim version 7.3. Last change: 2012 Jan 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1746,7 +1746,8 @@ exists( {expr}) Number TRUE if {expr} exists extend( {expr1}, {expr2} [, {expr3}]) List/Dict insert items of {expr2} into {expr1} exp( {expr}) Float exponential of {expr} -expand( {expr} [, {flag}]) String expand special keywords in {expr} +expand( {expr} [, {nosuf} [, {list}]]) + any expand special keywords in {expr} feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer filereadable( {file}) Number TRUE if {file} is a readable file filewritable( {file}) Number TRUE if {file} is a writable file @@ -1800,7 +1801,8 @@ gettabwinvar( {tabnr}, {winnr}, {name}) getwinposx() Number X coord in pixels of GUI Vim window getwinposy() Number Y coord in pixels of GUI Vim window getwinvar( {nr}, {varname}) any variable {varname} in window {nr} -glob( {expr} [, {flag}]) String expand file wildcards in {expr} +glob( {expr} [, {nosuf} [, {list}]]) + any expand file wildcards in {expr} globpath( {path}, {expr} [, {flag}]) String do glob({expr}) for all dirs in {path} has( {feature}) Number TRUE if feature {feature} supported @@ -2802,10 +2804,10 @@ expand({expr} [, {flag}]) *expand()* When {expr} does not start with '%', '#' or '<', it is expanded like a file name is expanded on the command line. 'suffixes' and 'wildignore' are used, unless the optional - {flag} argument is given and it is non-zero. Names for - non-existing files are included. The "**" item can be used to - search in a directory tree. For example, to find all "README" - files in the current directory and below: > + {nosuf} argument is given and it is non-zero. + Names for non-existing files are included. The "**" item can + be used to search in a directory tree. For example, to find + all "README" files in the current directory and below: > :echo expand("**/README") < Expand() can also be used to expand variables and environment @@ -3941,11 +3943,12 @@ line2byte({lnum}) *line2byte()* Return the byte count from the start of the buffer for line {lnum}. This includes the end-of-line character, depending on the 'fileformat' option for the current buffer. The first - line returns 1. + line returns 1. 'encoding' matters, 'fileencoding' is ignored. This can also be used to get the byte count for the line just below the last line: > line2byte(line("$") + 1) -< This is the file size plus one. +< This is the buffer size plus one. If 'fileencoding' is empty + it is the file size plus one. When {lnum} is invalid, or the |+byte_offset| feature has been disabled at compile time, -1 is returned. Also see |byte2line()|, |go| and |:goto|. @@ -4813,6 +4816,10 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* Search for regexp pattern {pattern}. The search starts at the cursor position (you can use |cursor()| to set it). + If there is no match a 0 is returned and the cursor doesn't + move. No error message is given. + When a match has been found its line number is returned. + {flags} is a String, which can contain these character flags: 'b' search backward instead of forward 'c' accept a match at the cursor position @@ -4846,9 +4853,6 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* giving the argument. {only available when compiled with the |+reltime| feature} - If there is no match a 0 is returned and the cursor doesn't - move. No error message is given. - When a match has been found its line number is returned. *search()-sub-match* With the 'p' flag the returned value is one more than the first sub-match in \(\). One if none of them matched but the @@ -5067,7 +5071,8 @@ setcmdpos({pos}) *setcmdpos()* line. setline({lnum}, {text}) *setline()* - Set line {lnum} of the current buffer to {text}. + Set line {lnum} of the current buffer to {text}. To insert + lines use |append()|. {lnum} is used like with |getline()|. When {lnum} is just below the last line the {text} will be added as a new line. @@ -6156,7 +6161,7 @@ xor({expr}, {expr}) *xor()* to a number. A List, Dict or Float argument causes an error. Example: > :let bits = xor(bits, 0x80) - +< *feature-list* @@ -6339,6 +6344,7 @@ windows Compiled with support for more than one window. writebackup Compiled with 'writebackup' default on. xfontset Compiled with X fontset support |xfontset|. xim Compiled with X input method support |xim|. +xpm_w32 Compiled with pixmap support for Win32. xsmp Compiled with X session management support. xsmp_interact Compiled with interactive X session management support. xterm_clipboard Compiled with support for xterm clipboard. diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 03d24a5b8..e542a04f5 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.3. Last change: 2011 Aug 19 +*if_pyth.txt* For Vim version 7.3. Last change: 2012 Feb 04 VIM REFERENCE MANUAL by Paul Moore @@ -222,8 +222,9 @@ Buffer objects represent vim buffers. You can obtain them in a number of ways: - from indexing vim.buffers (|python-buffers|) - from the "buffer" attribute of a window (|python-window|) -Buffer objects have one read-only attribute - name - the full file name for -the buffer. They also have three methods (append, mark, and range; see below). +Buffer objects have two read-only attributes - name - the full file name for +the buffer, and number - the buffer number. They also have three methods +(append, mark, and range; see below). You can also treat buffer objects as sequence objects. In this context, they act as if they were lists (yes, they are mutable) of strings, with each diff --git a/en/insert.txt b/en/insert.txt index 24a17d524..924e8a458 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.3. Last change: 2011 Sep 14 +*insert.txt* For Vim version 7.3. Last change: 2012 Jan 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1010,7 +1010,8 @@ number between zero and the cursor column "col('.')". This involves looking at the characters just before the cursor and including those characters that could be part of the completed item. The text between this column and the cursor column will be replaced with the matches. Return -1 if no completion -can be done. +can be done, the completion will be cancelled with an error message. Return +-2 to cancel silently. On the second invocation the arguments are: a:findstart 0 diff --git a/en/map.txt b/en/map.txt index 73b79f23d..f117f6fb3 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.3. Last change: 2011 Oct 22 +*map.txt* For Vim version 7.3. Last change: 2012 Feb 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -527,7 +527,7 @@ mappings. <LocalLeader> is just like <Leader>, except that it uses "maplocalleader" instead of "mapleader". <LocalLeader> is to be used for mappings which are local to a buffer. Example: > - :map <LocalLeader>q \DoItNow + :map <buffer> <LocalLeader>A oanother line<Esc> < In a global plugin <Leader> should be used and in a filetype plugin <LocalLeader>. "mapleader" and "maplocalleader" can be equal. Although, if diff --git a/en/mlang.txt b/en/mlang.txt index c7b3df07c..bfb30a8b6 100644 --- a/en/mlang.txt +++ b/en/mlang.txt @@ -1,4 +1,4 @@ -*mlang.txt* For Vim version 7.3. Last change: 2010 Dec 11 +*mlang.txt* For Vim version 7.3. Last change: 2012 Jan 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -59,7 +59,7 @@ use of "-" and "_". system. Some systems accept aliases like "en" or "en_US", but some only accept the full specification like "en_US.ISO_8859-1". On Unix systems you can use - the this command to see what locales are supported: > + this command to see what locales are supported: > :!locale -a < With the "messages" argument the language used for messages is set. This can be different when you want, diff --git a/en/netbeans.txt b/en/netbeans.txt index b7614e7f0..abb88683e 100644 --- a/en/netbeans.txt +++ b/en/netbeans.txt @@ -1,4 +1,4 @@ -*netbeans.txt* For Vim version 7.3. Last change: 2011 Oct 20 +*netbeans.txt* For Vim version 7.3. Last change: 2012 Jan 26 VIM REFERENCE MANUAL by Gordon Prieur et al. @@ -266,7 +266,7 @@ mechanism. Netbeans messages are processed when Vim is idle, waiting for user input. When Vim is run in non-interactive mode, for example when running an automated test case that sources a Vim script, the idle loop may not be called often -enough. In that case, insert |sleep| commands in the Vim script. The |sleep| +enough. In that case, insert |:sleep| commands in the Vim script. The |:sleep| command does invoke Netbeans messages processing. 6.1 Kinds of messages |nb-messages| diff --git a/en/options.txt b/en/options.txt index c52e31b1b..23ac10a61 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.3. Last change: 2011 Dec 14 +*options.txt* For Vim version 7.3. Last change: 2012 Feb 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -301,9 +301,8 @@ You will not get back the 'list' value as it was the last time you edited copying the value. {not in Vi} -:se[t] {option}< Set the local value of {option} to its global value by - making it empty. Only makes sense for |global-local| - options. +:se[t] {option}< For |global-local| options: Remove the local value of + {option}, so that the global value will be used. {not in Vi} *:setg* *:setglobal* @@ -5059,7 +5058,7 @@ A jump table for the options with a short description can be found at |Q_op|. respectively; see |CTRL-A| for more info on these commands. alpha If included, single alphabetical characters will be incremented or decremented. This is useful for a list with a - letter index a), b), etc. *octal-number* + letter index a), b), etc. *octal-nrformats* octal If included, numbers that start with a zero will be considered to be octal. Example: Using CTRL-A on "007" results in "010". hex If included, numbers starting with "0x" or "0X" will be @@ -5900,8 +5899,9 @@ A jump table for the options with a short description can be found at |Q_op|. security reasons. *'shellcmdflag'* *'shcf'* -'shellcmdflag' 'shcf' string (default: "-c", MS-DOS and Win32, when 'shell' - does not contain "sh" somewhere: "/c") +'shellcmdflag' 'shcf' string (default: "-c"; + MS-DOS and Win32, when 'shell' does not + contain "sh" somewhere: "/c") global {not in Vi} Flag passed to the shell to execute "!" and ":!" commands; e.g., @@ -6040,8 +6040,18 @@ A jump table for the options with a short description can be found at |Q_op|. 0 and 2: use "shell 'shellcmdflag' cmd" to start external commands 1 and 3: use "shell cmd" to start external commands + *'shellxescape'* *'sxe'* +'shellxescape' 'sxe' string (default: ""; + for MS-DOS and MS-Windows: "\"&|<>()@^") + global + {not in Vi} + When 'shellxquote' is set to "(" then the characters listed in this + option will be escaped with a '^' character. This makes it possible + to execute most external commands with cmd.exe. + *'shellxquote'* *'sxq'* 'shellxquote' 'sxq' string (default: ""; + for Win32, when 'shell' is cmd.exe: "(" for Win32, when 'shell' contains "sh" somewhere: "\"" for Unix, when using system(): "\"") @@ -6051,11 +6061,15 @@ A jump table for the options with a short description can be found at |Q_op|. the "!" and ":!" commands. Includes the redirection. See 'shellquote' to exclude the redirection. It's probably not useful to set both options. - This is an empty string by default. Known to be useful for - third-party shells when using the Win32 version, such as the MKS Korn - Shell or bash, where it should be "\"". The default is adjusted - according the value of 'shell', to reduce the need to set this option - by the user. See |dos-shell|. + When the value is '(' then ')' is appended. When the value is '"(' + then ')"' is appended. + When the value is '(' then also see 'shellxescape'. + This is an empty string by default on most systems, but is known to be + useful for on Win32 version, either for cmd.exe which automatically + strips off the first and last quote on a command, or 3rd-party shells + such as the MKS Korn Shell or bash, where it should be "\"". The + default is adjusted according the value of 'shell', to reduce the need + to set this option by the user. See |dos-shell|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. diff --git a/en/pi_getscript.txt b/en/pi_getscript.txt index 86e3cdd0c..5543573eb 100644 --- a/en/pi_getscript.txt +++ b/en/pi_getscript.txt @@ -1,15 +1,21 @@ -*pi_getscript.txt* For Vim version 7.0. Last change: 2011 May 31 +*pi_getscript.txt* For Vim version 7.0. Last change: 2011 Jun 23 > GETSCRIPT REFERENCE MANUAL by Charles E. Campbell, Jr. < Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz> (remove NOSPAM from the email address) *GetLatestVimScripts-copyright* -Copyright: (c) 2004-2010 by Charles E. Campbell, Jr. *glvs-copyright* - The VIM LICENSE applies to getscript.vim and - pi_getscript.txt (see |copyright|) except use - "getscript" instead of "Vim". No warranty, express or implied. - Use At-Your-Own-Risk. +Copyright: (c) 2004-2012 by Charles E. Campbell, Jr. *glvs-copyright* + The VIM LICENSE (see |copyright|) applies to the files in this + package, including getscriptPlugin.vim, getscript.vim, + GetLatestVimScripts.dist, and pi_getscript.txt, except use "getscript" + instead of "VIM". Like anything else that's free, getscript and its + associated files are provided *as is* and comes with no warranty of + any kind, either expressed or implied. No guarantees of + merchantability. No guarantees of suitability for any purpose. By + using this plugin, you agree that in no event will the copyright + holder be liable for any damages resulting from the use of this + software. Use at your own risk! Getscript is a plugin that simplifies retrieval of the latest versions of the scripts that you yourself use! Typing |:GLVS| will invoke getscript; it will @@ -374,6 +380,8 @@ The AutoInstall process will: ============================================================================== 9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1 +v44 Jun 23, 2011 : * handles additional decompression options for tarballs + (tgz taz tbz txz) v33 May 31, 2011 : * using fnameescape() instead of escape() * *.xz support v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression diff --git a/en/pi_netrw.txt b/en/pi_netrw.txt index 4b74d1f56..1d4a09f3d 100644 --- a/en/pi_netrw.txt +++ b/en/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 7.3. Last change: 2011 Sep 26 +*pi_netrw.txt* For Vim version 7.3. Last change: 2012 Jan 26 ----------------------------------------------------- NETRW REFERENCE MANUAL by Charles E. Campbell, Jr. @@ -43,7 +43,7 @@ Copyright: Copyright (C) 1999-2011 Charles E Campbell, Jr *netrw-copyright* 5. Activation...........................................|netrw-activate| 6. Transparent Remote File Editing......................|netrw-transparent| 7. Ex Commands..........................................|netrw-ex| -8. Variables and Options................................|netrw-var| +8. Variables and Options................................|netrw-settings| 9. Browsing.............................................|netrw-browse| Introduction To Browsing...........................|netrw-intro-browse| Quick Reference: Maps..............................|netrw-browse-maps| @@ -309,7 +309,7 @@ CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass* {{{2 :call NetUserPass("uid","password") -- sets global uid and password NETRW VARIABLES AND SETTINGS *netrw-variables* {{{2 -(also see: |netrw-browser-var| |netrw-protocol| |netrw-settings| |netrw-var|) +(also see: |netrw-browser-var| |netrw-protocol| |netrw-settings|) Netrw provides a lot of variables which allow you to customize netrw to your preferences. One way to look at them is via the command :NetrwSettings (see @@ -2354,7 +2354,7 @@ settings. You may change any of their values; when you save the file, the settings therein will be used. One may also press "?" on any of the lines for help on what each of the variables do. -(also see: |netrw-browser-var| |netrw-protocol| |netrw-var| |netrw-variables|) +(also see: |netrw-browser-var| |netrw-protocol| |netrw-settings| |netrw-variables|) ============================================================================== diff --git a/en/pi_tar.txt b/en/pi_tar.txt index ab98f4a8c..1ff4d7c4c 100644 --- a/en/pi_tar.txt +++ b/en/pi_tar.txt @@ -1,4 +1,4 @@ -*pi_tar.txt* For Vim version 7.3. Last change: 2011 May 31 +*pi_tar.txt* For Vim version 7.3. Last change: 2012 Jan 17 +====================+ | Tar File Interface | @@ -6,9 +6,16 @@ Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) -Copyright 2005-2010: The GPL (gnu public license) applies to *tar-copyright* - tar.vim, tarPlugin.vim, and pi_tar.txt. - No warranty, express or implied. Use At-Your-Own-Risk. +Copyright 2005-2012: *tar-copyright* + The VIM LICENSE (see |copyright|) applies to the files in this + package, including tarPlugin.vim, tar.vim, and pi_tar.txt. Like + anything else that's except use "tar.vim" instead of "VIM". Like + anything else that's free, tar.vim and its associated files are + provided *as is* and comes with no warranty of any kind, either + expressed or implied. No guarantees of merchantability. No + guarantees of suitability for any purpose. By using this plugin, you + agree that in no event will the copyright holder be liable for any + damages resulting from the use of this software. Use at your own risk! ============================================================================== 1. Contents *tar* *tar-contents* @@ -83,6 +90,7 @@ Copyright 2005-2010: The GPL (gnu public license) applies to *tar-copyright* 4. History *tar-history* + v28 Jun 23, 2011 * a few more decompression options (tbz tb2 txz) v27 May 31, 2011 * moved cygwin detection before g:tar_copycmd handling * inserted additional |:keepj| modifiers * changed silent to sil! (|:silent|) diff --git a/en/pi_vimball.txt b/en/pi_vimball.txt index fd0006df9..f961ab118 100644 --- a/en/pi_vimball.txt +++ b/en/pi_vimball.txt @@ -1,4 +1,4 @@ -*pi_vimball.txt* For Vim version 7.3. Last change: 2011 Sep 26 +*pi_vimball.txt* For Vim version 7.3. Last change: 2012 Jan 17 ---------------- Vimball Archiver @@ -6,11 +6,16 @@ Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) -Copyright: (c) 2004-2011 by Charles E. Campbell, Jr. *Vimball-copyright* - The VIM LICENSE applies to Vimball.vim, and Vimball.txt - (see |copyright|) except use "Vimball" instead of "Vim". - No warranty, express or implied. - Use At-Your-Own-Risk! +Copyright: (c) 2004-2012 by Charles E. Campbell, Jr. *Vimball-copyright* + The VIM LICENSE (see |copyright|) applies to the files in this + package, including vimballPlugin.vim, vimball.vim, and pi_vimball.txt. + except use "vimball" instead of "VIM". Like anything else that's free, + vimball.vim and its associated files are provided *as is* and comes with + no warranty of any kind, either expressed or implied. No guarantees + of merchantability. No guarantees of suitability for any purpose. By + using this plugin, you agree that in no event will the copyright + holder be liable for any damages resulting from the use of this + software. Use at your own risk! ============================================================================== 1. Contents *vba* *vimball* *vimball-contents* diff --git a/en/pi_zip.txt b/en/pi_zip.txt index 13c604cfd..d976055ea 100644 --- a/en/pi_zip.txt +++ b/en/pi_zip.txt @@ -1,4 +1,4 @@ -*pi_zip.txt* For Vim version 7.3. Last change: 2011 Aug 14 +*pi_zip.txt* For Vim version 7.3. Last change: 2012 Jan 17 +====================+ | Zip File Interface | @@ -7,14 +7,15 @@ Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright* - Permission is hereby granted to use and distribute this code, - with or without modifications, provided that this copyright - notice is copied with it. Like anything else that's free, - zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is* - and it comes with no warranty of any kind, either expressed or - implied. By using this plugin, you agree that in no event will - the copyright holder be liable for any damages resulting from - the use of this software. + The VIM LICENSE (see |copyright|) applies to the files in this + package, including zipPlugin.vim, zip.vim, and pi_zip.vim. except use + "zip.vim" instead of "VIM". Like anything else that's free, zip.vim + and its associated files are provided *as is* and comes with no + warranty of any kind, either expressed or implied. No guarantees of + merchantability. No guarantees of suitability for any purpose. By + using this plugin, you agree that in no event will the copyright + holder be liable for any damages resulting from the use of this + software. Use at your own risk! ============================================================================== 1. Contents *zip* *zip-contents* @@ -73,7 +74,7 @@ Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright* ============================================================================== 3. Additional Extensions *zip-extension* - Apparently there are a number of archivers who generate zip files that + Apparently there are a number of archivers which generate zip files that don't use the .zip extension (.jar, .xpi, etc). To handle such files, place a line in your <.vimrc> file: > @@ -84,6 +85,8 @@ Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright* ============================================================================== 4. History *zip-history* {{{1 + v25 Jun 27, 2011 * using keepj with unzip -Z + (consistent with the -p variant) v24 Jun 21, 2010 * (Cédric Bosdonnat) unzip seems to need its filenames fnameescape'd as well as shellquote'd * (Motoya Kurotsu) inserted keepj before 0d to protect diff --git a/en/quickref.txt b/en/quickref.txt index c14818ac5..1fef2177d 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.3. Last change: 2011 Jun 12 +*quickref.txt* For Vim version 7.3. Last change: 2012 Feb 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -851,6 +851,7 @@ Short explanation of each option: *option-list* 'shellslash' 'ssl' use forward slash for shell file names 'shelltemp' 'stmp' whether to use a temp file for shell commands 'shelltype' 'st' Amiga: influences how to use a shell +'shellxescape' 'sxe' characters to escape when 'shellxquote' is ( 'shellxquote' 'sxq' like 'shellquote', but include redirection 'shiftround' 'sr' round indent to multiple of shiftwidth 'shiftwidth' 'sw' number of spaces to use for (auto)indent step diff --git a/en/sign.txt b/en/sign.txt index 5784c9fb7..9771fbdc7 100644 --- a/en/sign.txt +++ b/en/sign.txt @@ -1,4 +1,4 @@ -*sign.txt* For Vim version 7.3. Last change: 2010 Oct 14 +*sign.txt* For Vim version 7.3. Last change: 2012 Jan 04 VIM REFERENCE MANUAL by Gordon Prieur @@ -76,7 +76,7 @@ DEFINING A SIGN. *:sign-define* *E255* *E160* *E612* Accepted arguments: - icon={pixmap} + icon={bitmap} Define the file name where the bitmap can be found. Should be a full path. The bitmap should fit in the place of two characters. This is not checked. If the bitmap is too big it @@ -86,6 +86,8 @@ DEFINING A SIGN. *:sign-define* *E255* *E160* *E612* GTK 1 pixmap (.xpm) GTK 2 many Motif pixmap (.xpm) + Win32 .bmp, .ico, .cur + pixmap (.xpm) |+xpm_w32| linehl={group} Highlighting group used for the whole line the sign is placed diff --git a/en/syntax.txt b/en/syntax.txt index 38bdb3968..e480968f9 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.3. Last change: 2011 Nov 26 +*syntax.txt* For Vim version 7.3. Last change: 2012 Feb 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -758,6 +758,7 @@ c_syntax_for_h use C syntax for *.h files, instead of C++ c_no_if0 don't highlight "#if 0" blocks as comments c_no_cformat don't highlight %-formats in strings c_no_c99 don't highlight C99 standard items +c_no_c11 don't highlight C11 standard items When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will become a fold. If you don't want comments to become a fold use: > @@ -985,9 +986,9 @@ Example: > or > // vim:syntax=c.doxygen -It can also be done automatically for C, C++, C# and IDL files by setting the -global or buffer-local variable load_doxygen_syntax. This is done by adding -the following to your .vimrc. > +It can also be done automatically for C, C++, C#, IDL and PHP files by setting +the global or buffer-local variable load_doxygen_syntax. This is done by +adding the following to your .vimrc. > :let g:load_doxygen_syntax=1 There are a couple of variables that have an effect on syntax highlighting, and @@ -1155,14 +1156,12 @@ conditionals are LightBlue for better distinction. FORTRAN *fortran.vim* *ft-fortran-syntax* Default highlighting and dialect ~ -Highlighting appropriate for f95 (Fortran 95) is used by default. This choice -should be appropriate for most users most of the time because Fortran 95 is a -superset of Fortran 90 and almost a superset of Fortran 77. Support for -Fortran 2003 and Fortran 2008 features has been introduced and is -automatically available in the default (f95) highlighting. +Highlighting appropriate for Fortran 2008 is used by default. This choice +should be appropriate for most users most of the time because Fortran 2008 is +almost a superset of previous versions (Fortran 2003, 95, 90, and 77). Fortran source code form ~ -Fortran 9x code can be in either fixed or free source form. Note that the +Fortran code can be in either fixed or free source form. Note that the syntax highlighting will not be correct if the form is incorrectly set. When you create a new fortran file, the syntax script assumes fixed source @@ -1243,52 +1242,54 @@ recognized, as will construct names at the end of a do, if, select or forall construct. Non-default fortran dialects ~ -The syntax script supports five Fortran dialects: f95, f90, f77, the Lahey -subset elf90, and the Imagine1 subset F. - -If you use f77 with extensions, even common ones like do/enddo loops, do/while -loops and free source form that are supported by most f77 compilers including -g77 (GNU Fortran), then you will probably find the default highlighting -satisfactory. However, if you use strict f77 with no extensions, not even free -source form or the MIL STD 1753 extensions, then the advantages of setting the -dialect to f77 are that names such as SUM are recognized as user variable -names and not highlighted as f9x intrinsic functions, that obsolete constructs -such as ASSIGN statements are not highlighted as todo items, and that fixed -source form will be assumed. - -If you use elf90 or F, the advantage of setting the dialect appropriately is -that f90 features excluded from these dialects will be highlighted as todo -items and that free source form will be assumed as required for these -dialects. - -The dialect can be selected by setting the variable fortran_dialect. The -permissible values of fortran_dialect are case-sensitive and must be "f95", -"f90", "f77", "elf" or "F". Invalid values of fortran_dialect are ignored. - -If all your fortran files use the same dialect, set fortran_dialect in your -.vimrc prior to your syntax on statement. If the dialect depends upon the file -extension, then it is most convenient to set it in a ftplugin file. For more -information on ftplugin files, see |ftplugin|. For example, if all your -fortran files with an .f90 extension are written in the elf subset, your -ftplugin file should contain the code > +The syntax script supports two Fortran dialects: f08 and F. You will probably +find the default highlighting (f08) satisfactory. A few legacy constructs +deleted or declared obsolescent in the 2008 standard are highlighted as todo +items. + +If you use F, the advantage of setting the dialect appropriately is that +other legacy features excluded from F will be highlighted as todo items and +that free source form will be assumed. + +The dialect can be selected in various ways. If all your fortran files use +the same dialect, set the global variable fortran_dialect in your .vimrc prior +to your syntax on statement. The case-sensitive, permissible values of +fortran_dialect are "f08" or "F". Invalid values of fortran_dialect are +ignored. + +If the dialect depends upon the file extension, then it is most convenient to +set a buffer-local variable in a ftplugin file. For more information on +ftplugin files, see |ftplugin|. For example, if all your fortran files with +an .f90 extension are written in the F subset, your ftplugin file should +contain the code > let s:extfname = expand("%:e") if s:extfname ==? "f90" - let fortran_dialect="elf" + let b:fortran_dialect="F" else - unlet! fortran_dialect + unlet! b:fortran_dialect endif Note that this will work only if the "filetype plugin indent on" command precedes the "syntax on" command in your .vimrc file. Finer control is necessary if the file extension does not uniquely identify -the dialect. You can override the default dialect, on a file-by-file basis, by -including a comment with the directive "fortran_dialect=xx" (where xx=f77 or -elf or F or f90 or f95) in one of the first three lines in your file. For -example, your older .f files may be written in extended f77 but your newer -ones may be F codes, and you would identify the latter by including in the -first three lines of those files a Fortran comment of the form > +the dialect. You can override the default dialect, on a file-by-file basis, +by including a comment with the directive "fortran_dialect=xx" (where xx=F or +f08) in one of the first three lines in your file. For example, your older .f +files may be legacy code but your newer ones may be F codes, and you would +identify the latter by including in the first three lines of those files a +Fortran comment of the form > ! fortran_dialect=F -F overrides elf if both directives are present. + +For previous versions of the syntax, you may have set fortran_dialect to the +now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be +silently handled as "f08". Users of "elf" may wish to experiment with "F" +instead. + +The syntax/fortran.vim script contains embedded comments that tell you how to +comment and/or uncomment some lines to (a) activate recognition of some +non-standard, vendor-supplied intrinsics and (b) to prevent features deleted +or declared obsolescent in the 2008 standard from being highlighted as todo +items. Limitations ~ Parenthesis checking does not catch too few closing parentheses. Hollerith @@ -1603,11 +1604,6 @@ which are used for the statement itself, special characters used in debug strings, strings, boolean constants and types (this, super) respectively. I have opted to chose another background for those statements. -In order to help you write code that can be easily ported between Java and -C++, all C++ keywords can be marked as an error in a Java program. To -have this add this line in your .vimrc file: > - :let java_allow_cpp_keywords = 0 - Javadoc is a program that takes special comments out of Java program files and creates HTML pages. The standard configuration will highlight this HTML code similarly to HTML files (see |html.vim|). You can even add Javascript @@ -1746,19 +1742,10 @@ instead, and the name of your source file should be *.pike LUA *lua.vim* *ft-lua-syntax* -This syntax file may be used for Lua 4.0, Lua 5.0 or Lua 5.1 (the latter is +The Lua syntax file can be used for versions 4.0, 5.0, 5.1 and 5.2 (5.2 is the default). You can select one of these versions using the global variables lua_version and lua_subversion. For example, to activate Lua -4.0 syntax highlighting, use this command: > - - :let lua_version = 4 - -If you are using Lua 5.0, use these commands: > - - :let lua_version = 5 - :let lua_subversion = 0 - -To restore highlighting for Lua 5.1: > +5.1 syntax highlighting, set the variables like this: :let lua_version = 5 :let lua_subversion = 1 @@ -2775,7 +2762,9 @@ of specialized LaTeX commands, syntax, and fonts. If you're using such a package you'll often wish that the distributed syntax/tex.vim would support it. However, clearly this is impractical. So please consider using the techniques in |mysyntaxfile-add| to extend or modify the highlighting provided -by syntax/tex.vim. +by syntax/tex.vim. Please consider uploading any extensions that you write, +which typically would go in $HOME/after/syntax/tex/[pkgname].vim, to +http://vim.sf.net/. *tex-error* Tex: Excessive Error Highlighting? ~ diff --git a/en/undo.txt b/en/undo.txt index e9ed1b2cb..b1652374c 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 7.3. Last change: 2011 Aug 02 +*undo.txt* For Vim version 7.3. Last change: 2012 Jan 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -267,7 +267,12 @@ respectively: (the magic number at the start of the file is wrong), then this fails, unless the ! was added. If it exists and does look like an undo file it is - overwritten. + overwritten. If there is no undo-history, nothing will be + written. + Implementation detail: Overwriting happens by first deleting + the existing file and then creating a new file with the same + name. So it is not possible to overwrite an existing undofile + in a write-protected directory. {not in Vi} :rundo {file} Read undo history from {file}. diff --git a/en/usr_41.txt b/en/usr_41.txt index 0a025956f..0e85688d0 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.3. Last change: 2011 Jun 19 +*usr_41.txt* For Vim version 7.3. Last change: 2011 Dec 15 VIM USER MANUAL - by Bram Moolenaar @@ -670,6 +670,12 @@ Floating point computation: *float-functions* cosh() hyperbolic cosine tanh() hyperbolic tangent +Other computation: *bitwise-function* + and() bitwise AND + invert() bitwise invert + or() bitwise OR + xor() bitwise XOR + Variables: *var-functions* type() type of a variable islocked() check if a variable is locked diff --git a/en/various.txt b/en/various.txt index 9fc890298..b039e69d5 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.3. Last change: 2011 Nov 28 +*various.txt* For Vim version 7.3. Last change: 2012 Jan 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -136,6 +136,9 @@ g8 Print the hex values of the bytes used in the then twice the value of the 'scroll' option is used, otherwise the current window height minus 3 is used. + If there is a {count} the 'window' option is set to + its value. + :z can be used either alone or followed by any of several punctuation marks. These have the following effect: @@ -360,63 +363,64 @@ N *+multi_lang* non-English language support |multi-lang| m *+mzscheme* Mzscheme interface |mzscheme| m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn| m *+netbeans_intg* |netbeans| -m *+ole* Win32 GUI only: |ole-interface| -N *+path_extra* Up/downwards search in 'path' and 'tags' +m *+ole* Win32 GUI only: |ole-interface| +N *+path_extra* Up/downwards search in 'path' and 'tags' m *+perl* Perl interface |perl| m *+perl/dyn* Perl interface |perl-dynamic| |/dyn| N *+persistent_undo* Persistent undo |undo-persistence| - *+postscript* |:hardcopy| writes a PostScript file + *+postscript* |:hardcopy| writes a PostScript file N *+printer* |:hardcopy| command H *+profile* |:profile| command m *+python* Python 2 interface |python| -m *+python/dyn* Python 2 interface |python-dynamic| |/dyn| +m *+python/dyn* Python 2 interface |python-dynamic| |/dyn| m *+python3* Python 3 interface |python| -m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn| +m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn| N *+quickfix* |:make| and |quickfix| commands N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout, 'redrawtime' option B *+rightleft* Right to left typing |'rightleft'| m *+ruby* Ruby interface |ruby| m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| -N *+scrollbind* |'scrollbind'| +N *+scrollbind* |'scrollbind'| B *+signs* |:sign| -N *+smartindent* |'smartindent'| +N *+smartindent* |'smartindent'| m *+sniff* SniFF interface |sniff| -N *+startuptime* |--startuptime| argument -N *+statusline* Options 'statusline', 'rulerformat' and special +N *+startuptime* |--startuptime| argument +N *+statusline* Options 'statusline', 'rulerformat' and special formats of 'titlestring' and 'iconstring' m *+sun_workshop* |workshop| N *+syntax* Syntax highlighting |syntax| *+system()* Unix only: opposite of |+fork| -N *+tag_binary* binary searching in tags file |tag-binary-search| +N *+tag_binary* binary searching in tags file |tag-binary-search| N *+tag_old_static* old method for static tags |tag-old-static| m *+tag_any_white* any white space allowed in tags file |tag-any-white| -m *+tcl* Tcl interface |tcl| +m *+tcl* Tcl interface |tcl| m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn| *+terminfo* uses |terminfo| instead of termcap N *+termresponse* support for |t_RV| and |v:termresponse| -N *+textobjects* |text-objects| selection +N *+textobjects* |text-objects| selection *+tgetent* non-Unix only: able to use external termcap N *+title* Setting the window 'title' and 'icon' N *+toolbar* |gui-toolbar| N *+user_commands* User-defined commands. |user-commands| N *+viminfo* |'viminfo'| N *+vertsplit* Vertically split windows |:vsplit| -N *+virtualedit* |'virtualedit'| +N *+virtualedit* |'virtualedit'| S *+visual* Visual mode |Visual-mode| -N *+visualextra* extra Visual mode commands |blockwise-operators| +N *+visualextra* extra Visual mode commands |blockwise-operators| N *+vreplace* |gR| and |gr| -N *+wildignore* |'wildignore'| +N *+wildignore* |'wildignore'| N *+wildmenu* |'wildmenu'| S *+windows* more than one window -m *+writebackup* |'writebackup'| is default on -m *+xim* X input method |xim| +m *+writebackup* |'writebackup'| is default on +m *+xim* X input method |xim| *+xfontset* X fontset support |xfontset| +m *+xpm_w32* Win32 GUI only: pixmap support |:sign-define| *+xsmp* XSMP (X session management) support *+xsmp_interact* interactive XSMP (X session management) support N *+xterm_clipboard* Unix only: xterm clipboard handling -m *+xterm_save* save and restore xterm screen |xterm-screens| -N *+X11* Unix only: can restore window title |X11| +m *+xterm_save* save and restore xterm screen |xterm-screens| +N *+X11* Unix only: can restore window title |X11| */dyn* *E370* *E448* To some of the features "/dyn" is added when the From a7fecf29b30b8f342eed69dcbfba2401a09714e6 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Mon, 19 Mar 2012 00:06:23 +0900 Subject: [PATCH 380/783] update --- en/autocmd.txt | 4 +++- en/eval.txt | 42 +++++++++++++++++++++++++++--------------- en/mbyte.txt | 4 ++-- en/undo.txt | 4 ++-- 4 files changed, 34 insertions(+), 20 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index 44d2d62c4..7811cfe18 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -700,7 +700,9 @@ QuickFixCmdPre Before a quickfix command is run (|:make|, |:lmake|, |:grep|, |:lgrep|, |:grepadd|, |:lgrepadd|, |:vimgrep|, |:lvimgrep|, |:vimgrepadd|, |:lvimgrepadd|, |:cscope|, - |:helpgrep|, |:lhelpgrep|). + |:cfile|, |:cgetfile|, |:caddfile|, |:lfile|, + |:lgetfile|, |:laddfile|, |:helpgrep|, + |:lhelpgrep|). The pattern is matched against the command being run. When |:grep| is used but 'grepprg' is set to "internal" it still matches "grep". diff --git a/en/eval.txt b/en/eval.txt index 7de0e9a31..ce4c41b7e 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2012 Jan 28 +*eval.txt* For Vim version 7.3. Last change: 2012 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2744,13 +2744,15 @@ exp({expr}) *exp()* {only available when compiled with the |+float| feature} -expand({expr} [, {flag}]) *expand()* +expand({expr} [, {nosuf} [, {list}]]) *expand()* Expand wildcards and the following special keywords in {expr}. - The result is a String. 'wildignorecase' applies. + 'wildignorecase' applies. - When there are several matches, they are separated by <NL> - characters. [Note: in version 5.0 a space was used, which - caused problems when a file name contains a space] + If {list} is given and it is non-zero, a List will be returned. + Otherwise the result is a String and when there are several + matches, they are separated by <NL> characters. [Note: in + version 5.0 a space was used, which caused problems when a + file name contains a space] If the expansion fails, the result is an empty string. A name for a non-existing file is not included. @@ -3454,18 +3456,23 @@ getwinvar({winnr}, {varname}) *getwinvar()* :let list_is_on = getwinvar(2, '&list') :echo "myvar = " . getwinvar(1, 'myvar') < -glob({expr} [, {flag}]) *glob()* +glob({expr} [, {nosuf} [, {list}]]) *glob()* Expand the file wildcards in {expr}. See |wildcards| for the use of special characters. - The result is a String. - When there are several matches, they are separated by <NL> - characters. - Unless the optional {flag} argument is given and is non-zero, + + Unless the optional {nosuf} argument is given and is non-zero, the 'suffixes' and 'wildignore' options apply: Names matching one of the patterns in 'wildignore' will be skipped and 'suffixes' affect the ordering of matches. 'wildignorecase' always applies. - If the expansion fails, the result is an empty string. + + When {list} is present and it is non-zero the result is a List + with all matching files. The advantage of using a List is, + you also get filenames containing newlines correctly. + Otherwise the result is a String and when there are several + matches, they are separated by <NL> characters. + + If the expansion fails, the result is an empty String or List. A name for a non-existing file is not included. For most systems backticks can be used to get files names from @@ -6678,9 +6685,9 @@ Hint: If you distribute a bunch of scripts you can pack them together with the ============================================================================== 6. Curly braces names *curly-braces-names* -Wherever you can use a variable, you can use a "curly braces name" variable. -This is a regular variable name with one or more expressions wrapped in braces -{} like this: > +In most places where you can use a variable, you can use a "curly braces name" +variable. This is a regular variable name with one or more expressions +wrapped in braces {} like this: > my_{adjective}_variable When Vim encounters this, it evaluates the expression inside the braces, puts @@ -6716,6 +6723,11 @@ Example: > This would call the function "my_func_whizz(parameter)". +This does NOT work: > + :let i = 3 + :let @{i} = '' " error + :echo @{i} " error + ============================================================================== 7. Commands *expression-commands* diff --git a/en/mbyte.txt b/en/mbyte.txt index e8d067600..c4ea4e87d 100644 --- a/en/mbyte.txt +++ b/en/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.3. Last change: 2011 Oct 15 +*mbyte.txt* For Vim version 7.3. Last change: 2012 Feb 29 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -857,7 +857,7 @@ Use the RPM or port for your system. USING XIM *multibyte-input* *E284* *E286* *E287* *E288* - *E285* *E291* *E292* *E290* *E289* + *E285* *E289* Note that Display and Input are independent. It is possible to see your language even though you have no input method for it. But when your Display diff --git a/en/undo.txt b/en/undo.txt index b1652374c..33eb71a91 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 7.3. Last change: 2012 Jan 28 +*undo.txt* For Vim version 7.3. Last change: 2012 Mar 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -250,7 +250,7 @@ detect if an undo file is no longer synchronized with the file it was written for (with a hash of the file contents) and ignore it when the file was changed after the undo file was written, to prevent corruption. An undo file is also ignored if its owner differs from the owner of the edited file. Set 'verbose' -to get a message about that. +to get a message about that when opening a file. Undo files are normally saved in the same directory as the file. This can be changed with the 'undodir' option. From 959fde7d1e3b4fc53ccc2321f9726b73058477c6 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Fri, 27 Apr 2012 11:06:27 +0900 Subject: [PATCH 381/783] Fixed upload.vim for new webapi --- tools/upload.vim | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/upload.vim b/tools/upload.vim index 596f5e250..6904b31fa 100644 --- a/tools/upload.vim +++ b/tools/upload.vim @@ -16,7 +16,7 @@ function! s:github_repos_downloads_list(user, repos) if v:shell_error throw 'fails to list downloads' endif - let downloads = json#decode(res) + let downloads = webapi#json#decode(res) if type(downloads) == type({}) && has_key(downloads, 'message') throw 'fails to list downloads: ' . downloads.message endif @@ -30,7 +30,7 @@ function! s:github_repos_downloads_get(user, repos, id) if v:shell_error throw 'fails to get download' endif - let download = json#decode(res) + let download = webapi#json#decode(res) if has_key(download, 'message') throw 'fails to get download: ' . download.message endif @@ -49,12 +49,12 @@ function! s:github_repos_downloads_create(auth_user, auth_password, user, repos, if a:content_type != '' let data.content_type = a:content_type endif - let cmd = printf('curl --silent --user %s --data %s %s', shellescape(a:auth_user . ':' . a:auth_password), shellescape(json#encode(data)), shellescape(url)) + let cmd = printf('curl --silent --user %s --data %s %s', shellescape(a:auth_user . ':' . a:auth_password), shellescape(webapi#json#encode(data)), shellescape(url)) let res = system(cmd) if v:shell_error throw 'fails to create new download' endif - let download = json#decode(res) + let download = webapi#json#decode(res) if has_key(download, 'message') throw 'fails to create new download: ' . download.message endif @@ -87,7 +87,7 @@ function! s:github_repos_downloads_delete(auth_user, auth_password, user, repos, throw 'fails to delete download' endif if res != '' - let err = json#decode(res) + let err = webapi#json#decode(res) throw 'fails to delete download: ' . err.message endif endfunction From 71531920e568d2a9b129c5327b63f647507eef65 Mon Sep 17 00:00:00 2001 From: mattn <mattn.jp@gmail.com> Date: Wed, 9 May 2012 09:09:19 +0900 Subject: [PATCH 382/783] related issue #39 --- tools/makehtml.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/makehtml.vim b/tools/makehtml.vim index 1d173d200..4bb66cb8b 100644 --- a/tools/makehtml.vim +++ b/tools/makehtml.vim @@ -87,6 +87,7 @@ function! MakeHtml(fname) endfor endif + silent! %foldopen! TOhtml let lang = s:GetLang(a:fname) From 4bf39989d1783ab739e2776986bfd10d442c7c9f Mon Sep 17 00:00:00 2001 From: mattn <mattn.jp@gmail.com> Date: Sun, 13 May 2012 01:20:50 +0900 Subject: [PATCH 383/783] fix issue #46 --- tools/makehtml.vim | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/makehtml.vim b/tools/makehtml.vim index 4bb66cb8b..faabb9b0a 100644 --- a/tools/makehtml.vim +++ b/tools/makehtml.vim @@ -156,6 +156,14 @@ function! s:MakeLink(lang, hlname, tagname) else let res = printf('<a class="%s" href="%s">%s%s%s</a>', s:attr_save[a:hlname], href, sep, a:tagname, sep) endif + elseif has_key(tags, ":" . tagname) + let href = tags[":" . tagname]["html"] + let href .= '#:' . tagname + if a:hlname == "helpHyperTextEntry" + let res = printf('<a class="%s" href="%s" name="%s">%s%s%s</a>', s:attr_save[a:hlname], href, a:tagname, sep, a:tagname, sep) + else + let res = printf('<a class="%s" href="%s">%s%s%s</a>', s:attr_save[a:hlname], href, sep, a:tagname, sep) + endif else " missing tag or not translated or typo. use English if possible. call s:Log("%s: tag error: %s", bufname("%"), tagname) From 5e9580c4eb2f5fa6d93fe1166b3d7f5f7c2d1a85 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 13 May 2012 09:47:05 +0900 Subject: [PATCH 384/783] add missing tags (Issue #47) --- vim_faq/vim_faq.jax | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 85a7b2d32..e71d0f47c 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -852,12 +852,14 @@ SECTION 2 - 情報源 るものです。履歴をざっと眺めたり、現在のスレッドを気軽に見ることができて便利で す。 + *faq-2.4* 2.4. HTML/PDF/PS形式のVimユーザーマニュアルはどこで手に入りますか? HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロードできます。 > http://vimdoc.sourceforge.net/ < + *faq-2.5* 2.5. ある問題が発生しました。それが私の設定によるものか、Vimそのものの 問題かはどうすればわかりますか? @@ -937,7 +939,7 @@ Vim開発者メーリングリストvim-dev@vim.orgにパッチを送ってく :help vim-dev < - + *faq-2.10* 2.10. Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグインを 開発したり、新しいスクリプトやカラースキームを開発しました。これをアップ ロードできる公開のウェブサイトはありますか? @@ -987,14 +989,14 @@ VimOnlineからVimの最新バージョンのソースがダウンロードで http://vim.sourceforge.net/download.php です。 - + *faq-3.3* 3.3. どのプラットフォーム上で実行できるんですか? 全ての Unix プラットフォーム。 全ての Windows プラットフォーム。 Amiga、Atari、BeOS、DOS、Macintosh、MachTen、OS/2、RiscOS、VMS です。 - + *faq-3.4* 3.4. どこでVimのランタイムファイルの最新バージョンをダウンロードできますか? Vimランタイムファイル(構文ファイル、ファイル形式別プラグイン、コンパイラプラ @@ -1006,7 +1008,7 @@ ftpサイトのftp://ftp.vim.org/pub/vim/runtimeディレクトリでダウン *faq-4* SECTION 4 - ヘルプ - + *faq-4.1* 4.1. どうやってヘルプ・ファイルを利用するんですか? Vim の全ての機能にヘルプがあります。それを利用するには、":h" を使ってください。 @@ -1032,7 +1034,7 @@ Vim の全ての機能にヘルプがあります。それを利用するには :help online-help < - + *faq-4.2* 4.2. どうやってVimヘルプファイル中のキーワードを探すんですか? ヘルプキーワードをタイプした後にCTRL-Dを押すとそのパターンを含む全てのヘルプキー @@ -3070,6 +3072,7 @@ CTRL-X CTRL-NとCTRL-X CTRL-Pを使うと今補完した単語の後に続く単 *faq-14* SECTION 14 - テキストの整形 + *faq-14.1* 14.1. 折り返された行の末尾に改行を挿入するには? 'gq'コマンドを使うと段落を整形することができます。これは現在の'textwidth'の設 @@ -6246,6 +6249,7 @@ Vimは等幅フォントのみサポートしています。プロポーショ :help font-sizes :help 'guifont' < + *faq-31.13* 31.13. コマンドラインモードでマウスを使うには? コマンドラインモードでマウスを使うには、オプション'mouse'にフラグ'c'をつけま @@ -6273,6 +6277,7 @@ Vimは等幅フォントのみサポートしています。プロポーショ :help gui-mouse-mapping :help <Nop> < + *faq-31.15* 31.15. GVimウィンドウの位置とサイズを変更するには? コマンド"winpos"を使えばVimウィンドウの位置を変えることができます。ウィンドウ @@ -6489,6 +6494,7 @@ Xfree86 xtermはhttp://dickey.his.com/xterm/xterm.htmlからダウンロード *faq-33* SECTION 33 - MS-Windows上のVim + *faq-33.1* 33.1. MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。どうな っているのですか? @@ -6568,7 +6574,7 @@ CTRL-YからCTRL-Rへのマップはmswin.vim内で行われています。mswin :set shellpipe=2>&1| tee :set shellredir=>%s 2>&1 < - + *faq-33.7* 33.7. diffモードでGNU diffを使おうとしています。コマンドラインからdiffを使うと うまく動くのですが、Vim内で使おうとすると動きません。どうすれば? From bf47c58229d20f07d314391e575d0771aa440773 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 13 May 2012 12:45:58 +0900 Subject: [PATCH 385/783] update for Issue #31 --- vim_faq/vim_faq.jax | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index e71d0f47c..3ad89a767 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -2230,8 +2230,8 @@ SECTION 11 - テキストを検索する :%s/\<word\>/&/g < -訳註: :%s/\<word\>//ng というようにnフラグをつけると、実際には置換を行わず、何 - 箇所置換されるかを知ることができます。 +{訳注: :%s/\<word\>//ng というようにnフラグをつけると、実際には置換を行わず、 + 何箇所置換されるかを知ることができます。} ファイル中のアルファベットだけからなる単語を数えるにはこうします。 > @@ -2881,7 +2881,7 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま :g/*$/,/\(^\|[^+]\)$/j :g/+$/mark a | .,/\(^\|[^+]\)$/s/+$// | 'a,.j < -訳註: 1番目の例は :g/+$/,/\(^\|[^+]\)$/j の間違いだと思う。 +{訳注: 1番目の例は :g/+$/,/\(^\|[^+]\)$/j の間違いだと思う。} さらなる情報については以下を参照してください。 > @@ -3900,7 +3900,7 @@ SECTION 19 - オプション Other patch with min and max from Emmanuel Renieris (2002 Jul 24) Other patch without an option by Gilles Roy (2002 Jul 25)" < -訳註: Vim7でオプション'numberwidth'が導入された。 +{訳注: Vim7でオプション'numberwidth'が導入された。} *faq-19.8* 19.8. スペース、タブ、改行などの不可視文字を表示するには? @@ -4810,9 +4810,9 @@ Vimは構文強調する際にファイル全体をパースすることはし 対応する括弧には'%'キーを使えばジャンプできます。インサートモードで一時的に対 応する括弧にジャンプするには'showmatch'をセットします。 -訳註: Vim7からはmatchparen.vimが付属し、カーソルが括弧の上に乗ると、自動的に -訳註: 対応する括弧が強調されるようになった。 -訳註: :h matchparen +{訳注: Vim7からはmatchparen.vimが付属し、カーソルが括弧の上に乗ると、自動的に + 対応する括弧が強調されるようになった。 + :h matchparen} さらなる情報については以下を参照してください。 > @@ -5038,7 +5038,8 @@ exists()を使えば環境変数の存在をチェックすることができま < 上のコマンドは'ls'コマンドの戻り値をレジスタ'a'に保存します。 -訳註: 上のコマンドは外部プログラム'ls'の標準出力への出力をレジスタに保存する。 +{訳注: 上のコマンドは外部プログラム'ls'の標準出力への出力をレジスタに保存す + る。} さらなる情報については以下を参照してください。 > @@ -5305,7 +5306,7 @@ system()を使うと、外部コマンドを起動し、出力を取得するこ \n:>, \fb:- < -訳註: 原文には例が入っていなかったので:helpからコピペしてきた。 +{訳注: 原文には例が入っていなかったので:helpからコピペしてきた。} さらなる情報については以下を参照してください。 > @@ -5326,9 +5327,9 @@ system()を使うと、外部コマンドを起動し、出力を取得するこ :call Myfunc() < -訳註: このQ&Aは間違っている? -訳註: :executeはexコマンドを実行する。 -訳註: 1番目のコマンドはMyfunc()を呼んでその戻り値をechoするはず。 +{訳注: このQ&Aは間違っている? + :executeはexコマンドを実行する。 + 1番目のコマンドはMyfunc()を呼んでその戻り値をechoするはず。} さらなる情報については以下を参照してください。 > @@ -6558,8 +6559,8 @@ CTRL-YからCTRL-Rへのマップはmswin.vim内で行われています。mswin っている可能性があります。フォントスムージングをオフにするか、スムージング方法 を"Standard"にしてください。 -訳注: コントロールパネル[パフォーマンスオプション]の[スクリーンフォントの縁を -訳注: 滑らかにする]のことだと思う。 +{訳注: コントロールパネル[パフォーマンスオプション]の[スクリーンフォントの縁を + 滑らかにする]のことだと思う。} *faq-33.6* 33.6. VimをCygwin上で使うにあたって推奨される設定は? @@ -6703,7 +6704,7 @@ Vimの様々な機能を有効/無効にするには、'make'を実行する前 $ configure -help < -訳注: --help の間違い? +{訳注: --help の間違い?} さらなる情報については以下を参照してください > @@ -6739,8 +6740,8 @@ MS-Windows用にVimをソースからビルドするには次のステップに - ソース(vim##src.zip)、ランタイム(vim##rt.zip)とその他(vim-##-extra.tar.gz)の アーカイブをftp://ftp.vim.org/pub/vim/pcからダウンロードします。 -訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ -訳注: (vim-7.0.tar.bz2)にして公開されている。 +{訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ + (vim-7.0.tar.bz2)にして公開されている。} - アーカイブをディレクトリ(例: c:\vimsrc)に展開します。 - コンパイラに応じたMakefileを使います。Visual C++用にはMake_mvc.mak、Borland @@ -6769,8 +6770,8 @@ Vimランタイムパッケージの一部です。Vimランタイムパッケ ンストールする必要があります。例えば、MS-Windows用のVim6.1ランタイムパッケージ の名前はvim61rt.zipです。 -訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ -訳注: (vim-7.0.tar.bz2)にして公開されている。 +{訳注: 2006年8月現在、Vim7のソースとランタイムはまとめて1つのアーカイブ + (vim-7.0.tar.bz2)にして公開されている。} さらなる情報については以下を参照してください > @@ -6981,7 +6982,7 @@ CTRL-Oに続けてノーマルモードコマンドを1つ入力すると、イ マルモードコマンドをタイプします。インサートモードに抜けるには<Esc>を押しま す。 -訳注: CTRL-Lを使うにはオプション'insertmode'をオンにしていなければならない。 +{訳注: CTRL-Lを使うにはオプション'insertmode'をオンにしていなければならない。} さらなる情報については以下を参照してください > From 8982c8cb486e8f17d977a45491eb4aa30c6232e1 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 13 May 2012 12:57:53 +0900 Subject: [PATCH 386/783] update for Issue #44 "Unicode" and "ASCII" --- vim_faq/vim_faq.jax | 74 ++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 3ad89a767..5bf938ca0 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -163,7 +163,7 @@ SECTION 11 - テキストを検索する 続けてほしいのですが、どうすればできますか? |faq-11.16| 行からある文字がn回目に現れる箇所を検索するには? |faq-11.17| タブ(やその他の文字)を改行文字で置換するには? -|faq-11.18| アスキーコードで検索する文字を指定するには? +|faq-11.18| ASCIIコードで検索する文字を指定するには? |faq-11.19| 長い行を見つけるには? |faq-11.20| カレントバッファ内の指定したパターンを含む行を全て表示するには? |faq-11.21| 複数行にわたる文字列を検索するには? @@ -204,7 +204,7 @@ SECTION 12 - テキストを変更する このような行をすばやく連結させるには? |faq-12.28| 文字単位でヤンクされたテキストを新しい行にペーストするには? |faq-12.29| 単語・文字・テキストのブロックの大文字小文字を入れかえるには? -|faq-12.30| キーボード上にないアスキー文字を入力するには? +|faq-12.30| キーボード上にないASCII文字を入力するには? |faq-12.31| ファイル中の印字不能文字を置換するには? |faq-12.32| バッファから重複した行を削除するには? |faq-12.33| ファイル中の全ての行の前に行番号をつけるには? @@ -583,7 +583,7 @@ SECTION 35 - Vimをソースからビルドする SECTION 36 - 様々な事柄 |faq-36.1| Vimでバイナリフィルを編集するには? |faq-36.2| ビジュアルエラーフラッシュとエラービープを無効にするには? -|faq-36.3| バッファに表示されている文字のアスキーコードを表示するには? +|faq-36.3| バッファに表示されている文字のASCIIコードを表示するには? |faq-36.4| コマンドのカウントとして0を使うことはできますか? |faq-36.5| Vimの起動時の画面を表示させなくするには? |faq-36.6| "hit enter to continue"プロンプトを避けるには? @@ -592,18 +592,18 @@ SECTION 36 - 様々な事柄 |faq-36.8| インサートモードから抜けることなくノーマルモードコマンドを実行する には? *faq-unicode* -SECTION 37 - ユニコード -|faq-37.1| Vimでユニコードのファイルを作ることはできますか? -|faq-37.2| ユニコードのファイルを編集するにあたって特に重要な設定は? +SECTION 37 - Unicode +|faq-37.1| VimでUnicodeのファイルを作ることはできますか? +|faq-37.2| Unicodeのファイルを編集するにあたって特に重要な設定は? |faq-37.3| オプション'encoding'とは何ですか? -|faq-37.4| Vimでは様々なユニコードエンコーディングをどう表記しますか? +|faq-37.4| Vimでは様々なUnicodeエンコーディングをどう表記しますか? |faq-37.5| バイト順マークの有無を指定するには? |faq-37.6| オプション'fileencoding'とは何ですか? |faq-37.7| オプション'fileencodings'とは何ですか? |faq-37.8| オプション'termencoding'とは何ですか? |faq-37.9| オプション'bomb'とは何ですか? |faq-37.10| これらのオプションの典型的な例はどこにありますか? -|faq-37.11| ユニコードの文字を挿入するには? +|faq-37.11| Unicodeの文字を挿入するには? |faq-37.12| どのダイグラフがどの文字に定義されているかを知るには? ============================================================================= @@ -2112,8 +2112,8 @@ SECTION 11 - テキストを検索する *faq-11.4* 11.4. '~R', '~S'などと表示される文字を検索・置換するには? -'ga'で特殊文字のアスキーコードを表示することができます。例えばアスキーコードが -142であるなら、次のコマンドでその特殊文字を検索することができます: > +'ga'で特殊文字のASCIIコードを表示することができます。例えばASCIIコードが142で +あるなら、次のコマンドでその特殊文字を検索することができます: > /^V142 < @@ -2354,12 +2354,13 @@ SECTION 11 - テキストを検索する :help CR-used-for-NL < *faq-11.18* -11.18. アスキーコードで検索する文字を指定するには? +11.18. ASCIIコードで検索する文字を指定するには? -"/"コマンド中で、CTRL-Vに続いて10進、16進、8進の値を入力すると、アス -キーコードでその値を持つ文字を検索することができます。ある文字のアスキーコード -を知るには":ascii"や"ga"コマンドが使えます。 -For more information, read > +"/"コマンド中で、CTRL-Vに続いて10進、16進、8進の値を入力すると、ASCIIコードで +その値を持つ文字を検索することができます。ある文字のASCIIコードを知るには +":ascii"や"ga"コマンドが使えます。 + +さらなる情報については以下を参照してください。 > :help i_CTRL-V_digit :help :ascii @@ -2922,11 +2923,10 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま :help case < *faq-12.30* -12.30. キーボード上にないアスキー文字を入力するには? +12.30. キーボード上にないASCII文字を入力するには? -キーボード上にないアスキー文字を入力するには、CTRL-Vを押してからそのアスキーコ -ードを入力します。特別なアスキー文字を入力するのにダイグラフを使うこともできま -す。 +キーボード上にないASCII文字を入力するには、CTRL-Vを押してからそのASCIIコードを +入力します。特別なASCII文字を入力するのにダイグラフを使うこともできます。 さらなる情報については以下を参照してください。 > @@ -2937,9 +2937,9 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま *faq-12.31* 12.31. ファイル中の印字不能文字を置換するには? -印字不能文字を置換するには、まずその文字のアスキーコードを知らなければなりま -せん。exコマンド":ascii"またはノーマルモードコマンド"ga"を使ってカーソル下の -文字のアスキーコードを知ることができます。 +印字不能文字を置換するには、まずその文字のASCIIコードを知らなければなりませ +ん。exコマンド":ascii"またはノーマルモードコマンド"ga"を使ってカーソル下の文字 +のASCIIコードを知ることができます。 CTRL-Vに続けて10進の数字1-255(最初に0をつけてばならない)またはxと16進の数字 00-FF、または8進の数字0-0377(最初に0をつける)またはuと16進の数字0-FFFFまたは @@ -6880,10 +6880,10 @@ SECTION 36 - 様々な事柄 :help t_vb < *faq-36.3* -36.3. バッファに表示されている文字のアスキーコードを表示するには? +36.3. バッファに表示されている文字のASCIIコードを表示するには? + +'ga'コマンドを使うと、表示されている文字のASCIIコードを表示することができます。 -'ga'コマンドを使うと、表示されている文字のアスキーコードを表示することができま -す。 さらなる情報については以下を参照してください > @@ -6992,17 +6992,17 @@ CTRL-Oに続けてノーマルモードコマンドを1つ入力すると、イ ============================================================================= *faq-37* -SECTION 37 - ユニコード +SECTION 37 - Unicode Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> *faq-37.1* -37.1. Vimでユニコードのファイルを作ることはできますか? +37.1. VimでUnicodeのファイルを作ることはできますか? できます。あなたが利用できるキーボードとフォントによって多少複雑になるかもしれ -ませんが、常にどんなユニコードコードポイントでも(中には不正なものも)エンコード -することができます。ユニコードのファイルを作成するには、Vimをコンパイル時オプ -ション"+multi_byte"つきでコンパイルしていなければなりません。ユニコードについ -てのさらなる情報は以下のサイトから入手できます: > +ませんが、常にどんなUnicodeコードポイントでも(中には不正なものも)エンコードす +ることができます。Unicodeのファイルを作成するには、Vimをコンパイル時オプション +"+multi_byte"つきでコンパイルしていなければなりません。Unicodeについてのさらな +る情報は以下のサイトから入手できます: > http://www.unicode.org http://www.cl.cam.ac.uk/~mgk25/unicode.html @@ -7013,7 +7013,7 @@ Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> :help usr_45.txt < *faq-37.2* -37.2. ユニコードのファイルを編集するにあたって特に重要な設定は? +37.2. Unicodeのファイルを編集するにあたって特に重要な設定は? 最も重要なのは様々な"encoding"のオプションです。つまり、'encoding', 'fileencoding', 'fileencodings', 'termencoding'です。ブール値のオプション @@ -7030,16 +7030,16 @@ Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net> *faq-37.3* 37.3. オプション'encoding'とは何ですか? -基本的にオプション'encoding'はVimがデータを内部的にどう表現するかを定義 -します。しかし、ユニコードエンコーディングは全て内部的にはutf-8で表現され、 -(必要ならば)読み書きの際に変換されます。 +基本的にオプション'encoding'はVimがデータを内部的にどう表現するかを定義します。 +しかし、Unicodeエンコーディングは全て内部的にはutf-8で表現され、(必要ならば)読 +み書きの際に変換されます。 さらなる情報については以下を参照してください > :help 'encoding' < *faq-37.4* -37.4. Vimでは様々なユニコードエンコーディングをどう表記しますか? +37.4. Vimでは様々なUnicodeエンコーディングをどう表記しますか? Utf-8はutf-8またはutf8と書きます。utf-16はucs-2またはucs2と書きます。utf-32は ucs-4またはucs4と書きます。エンディアンを指定することもできます(utf-8はエンディ @@ -7125,7 +7125,7 @@ Vimはファイルを開くとき、そのファイルを'fileencodings'内に http://vim.sourceforge.net/tip_view.php?tip_id=246 . *faq-37.11* -37.11. ユニコードの文字を挿入するには? +37.11. Unicodeの文字を挿入するには? いくつかの方法があります: From 64ed18f813cba8353b2d67ffaa6c0f3f0da195a0 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 13 May 2012 14:05:08 +0900 Subject: [PATCH 387/783] fix indents and line foldings (Issue #48) --- vim_faq/vim_faq.jax | 394 ++++++++++++++++++++++---------------------- 1 file changed, 197 insertions(+), 197 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 5bf938ca0..0ee354e77 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -32,15 +32,15 @@ SECTION 2 - 情報源 |faq-2.3| メーリング・リストのアーカイブはありますか? |faq-2.4| HTML/PDF/PS形式のVimユーザマニュアルはどこで手に入りますか? |faq-2.5| ある問題が発生しました。それが私の設定によるものか、Vimそのものの - 問題かはどうすればわかりますか? + 問題かはどうすればわかりますか? |faq-2.6| どこでバグ報告をすればいいですか? |faq-2.7| FAQはどこで見つけられますか? |faq-2.8| このFAQに答えが見つからなかった時、どうすればいいですか? |faq-2.9| Vimに機能を追加するパッチを持っています。これをどこへ送ればいいで - すか? + すか? |faq-2.10| Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグ - インを開発したり、新しいスクリプトやカラースキームを開発しました。 - これをアップロードできる公開のウェブサイトはありますか? + インを開発したり、新しいスクリプトやカラースキームを開発しました。 + これをアップロードできる公開のウェブサイトはありますか? *faq-availability* SECTION 3 - 入手 |faq-3.1| Vim の最新のバージョンは何ですか? @@ -67,7 +67,7 @@ SECTION 5 - ファイルの編集 |faq-5.5| ファイルを最後に編集した場所から開くようにするには? |faq-5.6| Vimでファイルを編集中にそのファイルが他のアプリケーションによって 変更されたとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイ - アログのような)を開きます。この警告を無効にするには? + アログのような)を開きます。この警告を無効にするには? |faq-5.7| カーソル下のファイル名のファイルを開くには? |faq-5.8| 現在のファイルを再読み込みするには? |faq-5.9| ファイルを定期的に自動保存するには? @@ -87,9 +87,9 @@ SECTION 6 - 複数のファイルを編集する SECTION 7 - バックアップ |faq-7.1| ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけた ファイルが作られます。このファイルを作成するのを止めさせるには? - (または)バックアップ機能を無効にするには? + (または)バックアップ機能を無効にするには? |faq-7.2| 全てのバックアップファイルを特定のディレクトリに保存するように設定 - するには? + するには? |faq-7.3| ファイルを保存するとファイルパーミッションが変更されます。ファイル パーミッションを変更せずにファイルを保存するよう設定するには? *faq-buffers* @@ -119,15 +119,15 @@ SECTION 9 - ウィンドウ *faq-motion* SECTION 10 - モーション |faq-10.1| ファイルの先頭や末尾に移動するには? -|faq-10.2| インサートモードで<Esc>キーを押してノーマルモードに移行すると、カ - ーソルが1文字左へ移動します(カーソルが行の最初の文字の上にあるとき - を除いて)。この動作を変更し、カーソルがその桁の上に残るようにでき - ますか? +|faq-10.2| インサートモードで<Esc>キーを押してノーマルモードに移行すると、 + カーソルが1文字左へ移動します(カーソルが行の最初の文字の上にあると + きを除いて)。この動作を変更し、カーソルがその桁の上に残るようにで + きますか? |faq-10.3| <Page Up>、<Page Down>などのキーを押してスクロールしたときカーソル 位置の桁を保つように設定することはできますか? |faq-10.4| ファイル中のある行の長さが画面の幅を越えており、折り返されていま す。ここでj, kキーを使うと画面上の次行(物理行)でなくファイルの次行 - (論理行)に移動します。画面上の次行に移動するには? + (論理行)に移動します。画面上の次行に移動するには? |faq-10.5| Vimにおける文、段落、セクションの定義は? |faq-10.6| 文、段落、セクションの先頭と末尾に移動するには? |faq-10.7| 画面の右端を越えて続いている行があります。右側にスクロールして画面 @@ -138,7 +138,7 @@ SECTION 10 - モーション |faq-10.10| カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するよう にするには? |faq-10.11| 常にインサートモードに留まるようにするには?(モードレスな編集をす - るには?) + るには?) |faq-10.12| テキストをスクロールするとき、前後の行を表示するには? |faq-10.13| 以前のカーソル位置に戻るには? *faq-searching-text* @@ -159,8 +159,8 @@ SECTION 11 - テキストを検索する |faq-11.13| 1つの文字だけを含む行を検索するには? |faq-11.14| 複数のファイルから文字列を検索し、置換するには? |faq-11.15| マップ中で置換コマンド":s"を使っています。検索が失敗したときマップ - が途切れてしまいます。置換が失敗したときにもマップの次のコマンドを - 続けてほしいのですが、どうすればできますか? + が途切れてしまいます。置換が失敗したときにもマップの次のコマンドを + 続けてほしいのですが、どうすればできますか? |faq-11.16| 行からある文字がn回目に現れる箇所を検索するには? |faq-11.17| タブ(やその他の文字)を改行文字で置換するには? |faq-11.18| ASCIIコードで検索する文字を指定するには? @@ -198,10 +198,10 @@ SECTION 12 - テキストを変更する |faq-12.24| キーボード上に無い文字を入力するには? |faq-12.25| ダイグラフのどれか、または全てを削除するコマンドはありますか? |faq-12.26| インサートモードでバックスペースキーを押すと、今回のインサートモー - ドで入力した文字が消されるだけです。バックスペースキーで前回のイン - サートモードで入力した文字を消すには? + ドで入力した文字が消されるだけです。バックスペースキーで前回のイン + サートモードで入力した文字を消すには? |faq-12.27| 72文字より長くて"+"で終わり、次行に折り返されている行があります。 - このような行をすばやく連結させるには? + このような行をすばやく連結させるには? |faq-12.28| 文字単位でヤンクされたテキストを新しい行にペーストするには? |faq-12.29| 単語・文字・テキストのブロックの大文字小文字を入れかえるには? |faq-12.30| キーボード上にないASCII文字を入力するには? @@ -226,22 +226,22 @@ SECTION 14 - テキストの整形 |faq-14.7| 現在のファイルのインデントを増やす/減らすには? |faq-14.8| ブロックまたは行のグループをインデントするには? |faq-14.9| >または<キーで行をインデントすると、'tabstop'で設定した値でなく、 - 標準的なタブストップ値の8が使われます。なぜですか? + 標準的なタブストップ値の8が使われます。なぜですか? |faq-14.10| オートインデントを無効にするには? |faq-14.11| メールを編集するときは自動的に'textwidth'オプションをある値にする - ようにするには? + ようにするには? |faq-14.12| 自動的に改行を挿入させることはできますか? |faq-14.13| ファイル中に^Mという記号がたくさん表示されます。'fileformat'を - 'dos'にしたり'unix'にしたり'mac'にしたりしてみましたが、改善できま - せん。これらの記号を表示させなくするには? + 'dos'にしたり'unix'にしたり'mac'にしたりしてみましたが、改善できま + せん。これらの記号を表示させなくするには? |faq-14.14| 他のアプリケーションからVimのバッファへテキストを貼り付けたとき、 - 挿入されたテキストの桁(インデント)が狂ってしまいます。 - これを直すには? + 挿入されたテキストの桁(インデント)が狂ってしまいます。 + これを直すには? |faq-14.15| 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきら - ないとき、まったく何も表示されません。折り返された行の代わりに'@' - という記号で始まる空の行が表示されます。行が収まるように画面をスク - ロールすると'@'は消え、行が表示されるようになります。この挙動の設 - 定はどうやるのですか? + ないとき、まったく何も表示されません。折り返された行の代わりに'@' + という記号で始まる空の行が表示されます。行が収まるように画面をスク + ロールすると'@'は消え、行が表示されるようになります。この挙動の設 + 定はどうやるのですか? |faq-14.16| ファイル中の全てのタブ文字をスペースに変換するには? |faq-14.17| 後でワードプロセッサに送るテキストを編集するためのオプションは? *faq-visual-mode* @@ -252,15 +252,15 @@ SECTION 15 - ビジュアルモード |faq-15.4| 矩形選択した範囲に対してexコマンドを適用するには? |faq-15.5| ビジュアルモードでファイル全体を選択するには? |faq-15.6| ビジュアル選択してから>キーを押してインデントすると、選択が解除さ - れます。この範囲に対して操作を続けるため選択したままにするには? - (または)最後に選択された範囲を再選択するには? + れます。この範囲に対して操作を続けるため選択したままにするには? + (または)最後に選択された範囲を再選択するには? |faq-15.7| ビジュアル選択した範囲の先頭/末尾へ移動するには? |faq-15.8| マウスでテキストを選択してからexコマンドを実行しようと:キーを押す - と選択された範囲が文字:で置換されてしまいます。マウスで選択したと - きもビジュアル選択したときのようにテキストに対してexコマンドを実行 - するには? + と選択された範囲が文字:で置換されてしまいます。マウスで選択したと + きもビジュアル選択したときのようにテキストに対してexコマンドを実行 + するには? |faq-15.9| マウスでテキストを選択するとビジュアルモードでなく選択モードに入っ - てしまいます。なぜですか? + てしまいます。なぜですか? |faq-15.10| 最後にコピー/ペーストされたテキストをビジュアル選択するには? *faq-command-line-mode* SECTION 16 - コマンドラインモード @@ -269,33 +269,33 @@ SECTION 16 - コマンドラインモード |faq-16.3| ViモードからExモードに移行するには? |faq-16.4| exコマンドの出力をバッファにコピーするには? |faq-16.5| コマンドモードでファイル名を補完しようとタブキーを押します。マッチ - するファイル名が複数ある時、Vimは最初にマッチするファイル名を補完 - し、マッチしたファイル名全てのリストを表示します。マッチしたファイ - ル名全てを表示するだけで、最初の候補を補完しないようにするには? + するファイル名が複数ある時、Vimは最初にマッチするファイル名を補完 + し、マッチしたファイル名全てのリストを表示します。マッチしたファイ + ル名全てを表示するだけで、最初の候補を補完しないようにするには? |faq-16.6| バッファからコマンドラインにテキストをコピーしたり、コマンドライン - からバッファにテキストをコピーするには? + からバッファにテキストをコピーするには? |faq-16.7| あるコマンドを実行することなくコマンド履歴に入れるには? |faq-16.8| コマンドラインの高さを上げるには? *faq-viminfo* SECTION 17 - VIMINFO |faq-17.1| Vimを起動したときviminfoファイルに不正な文字があるとエラーメッセー - ジが出ます。このメッセージを出なくさせるには? + ジが出ます。このメッセージを出なくさせるには? |faq-17.2| viminfo機能を無効にするには? |faq-17.3| Vimのセッションをまたいでマークを保存し、使用するには? *faq-remote-editing* SECTION 18 - リモート編集 |faq-18.1| 既に起動しているgvimでファイルを開くには? Vim 5.xの - OpenWithVim.exeとSendToVim.exeはどうなりました? + OpenWithVim.exeとSendToVim.exeはどうなりました? |faq-18.2| vimサーバに全てのバッファをディスクに保存するようなコマンドを送る - には? + には? |faq-18.3| Vimのリモートサーバ機能についてのドキュメントはどこで手に入ります - か? + か? *faq-options* SECTION 19 - オプション |faq-19.1| Vimを設定する簡単な方法は? |faq-19.2| オプションの値をトグルするには? |faq-19.3| 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプション - を設定するには? + を設定するには? |faq-19.4| オプションの値にスペースを含めるには? |faq-19.5| オプション設定をファイルに埋め込むには? |faq-19.6| ファイル中の全ての行の行番号を表示するには? @@ -308,9 +308,9 @@ SECTION 19 - オプション |faq-19.13| 常にステータスラインを表示するようにするには? |faq-19.14| Vimを再起動しても設定が永続するようにするには? |faq-19.15| なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュす - る)のですか? + る)のですか? |faq-19.16| 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示する - ようにするには? + ようにするには? |faq-19.17| 1回の":set"コマンドでオプションから複数のフラグを除去するには? *faq-mapping-keys* SECTION 20 - キーマップ @@ -321,12 +321,12 @@ SECTION 20 - キーマップ |faq-20.5| テンキーにマップするには? |faq-20.6| ビジュアルモードでのみ機能するマッピングを作成するには? |faq-20.7| Vimスクリプト中で、すでに使われているキーと衝突しないようにどの - キーを使うべきかを知るには? + キーを使うべきかを知るには? |faq-20.8| エスケープキーにマップするには? |faq-20.9| あるキーをなにもしないようにマップするには? |faq-20.10| Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブ - ロックをアンインデンとするようにしたいです。このようなマップを作る - には?この挙動はtextpadやVisual Studioなどに似ています。 + ロックをアンインデンとするようにしたいです。このようなマップを作る + には?この挙動はtextpadやVisual Studioなどに似ています。 |faq-20.11| 私のマッピングにおいて<CR>のような特殊文字が認識されません。 特殊文字を認識するように設定するには? |faq-20.12| マップ中で'|'を使って複数のコマンドを区切るには? @@ -335,14 +335,14 @@ SECTION 20 - キーマップ にするには? |faq-20.14| ときどきキーが処理されるのに1秒程度かかるのはなぜですか? |faq-20.15| ビジュアル選択したテキストに対して外部コマンドを実行するマッピング - を作るには? + を作るには? |faq-20.16| <Tab>キーの機能を保ったままCtrl-Iにマッピングするには? *faq-abbreviations* SECTION 21 - 短縮入力 |faq-21.1| スペリングを間違えた単語を自動的に修正するには? |faq-21.2| 複数行の短縮入力を作るには? |faq-21.3| 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペース - が入ってしまいます。これを防ぐには? + が入ってしまいます。これを防ぐには? |faq-21.4| 現在の日付・時刻を挿入するには? |faq-21.5| インサートモードで短縮入力が展開されるのを防ぐには? *faq-record-and-playback* @@ -359,10 +359,10 @@ SECTION 23 - 自動コマンド |faq-23.1| 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? |faq-23.2| あるバッファに入るときに毎回コマンドを実行するには? |faq-23.3| あるウィンドウに入るときに毎回コマンドを実行するには? -|faq-23.4| autocmd中でその自動コマンドが実行されているファイルの名前やバッフ - ァ番号を知るには? +|faq-23.4| autocmd中でその自動コマンドが実行されているファイルの名前やバッ + ファ番号を知るには? |faq-23.5| Vimがフォーカスを失ったとき、変更されたバッファ全てを自動的に保存 - するには? + するには? |faq-23.6| Vimを終了するときにクリーンアップ用の関数を実行するには? *faq-syntax-highlight* SECTION 24 - 構文強調 @@ -372,17 +372,17 @@ SECTION 24 - 構文強調 |faq-24.4| ":set number"をしたときに表示される行番号の色を変えるには? |faq-24.5| ビジュアルモードで選択された範囲の背景色を変えるには? |faq-24.6| オプション'list'で表示した特殊文字(タブ、行末の空白、行末など)に色 - をつけるには? + をつけるには? |faq-24.7| 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? -|faq-24.8| 正しく構文強調されません。ファイルの一部が強調されなかったり、間違 - って強調されてしまいます。 +|faq-24.8| 正しく構文強調されません。ファイルの一部が強調されなかったり、間違っ + て強調されてしまいます。 |faq-24.9| 対応する括弧を強調する組み込みの関数はありますか? |faq-24.10| Cのコメントの構文強調をオフにするには? |faq-24.11| Vimに付属する標準の構文ファイルに私自身の構文拡張を加えるには? |faq-24.12| Vimに付属の標準の構文ファイルを独自の構文ファイルで置き換えるには? |faq-24.13| 特定の桁以降の全ての文字を強調するには? |faq-24.14| ソースファイル(.c, .hなど)を構文強調つきでHTMLファイルに変換するに - は? + は? |faq-24.15| 現在の強調グループ定義を全て表示するには? *faq-vim-script-writing* SECTION 25 - VIMスクリプトを書く @@ -390,26 +390,26 @@ SECTION 25 - VIMスクリプトを書く |faq-25.2| Vimスクリプトをデバッグするには? |faq-25.3| あるオプションを設定したスクリプト/プラグインを探すには? |faq-25.4| (おそらくスクリプトを実行中に)エラーやメッセージが出るのですが、す - ぐに消えてしまいます。このメッセージをもう一度表示するには? + ぐに消えてしまいます。このメッセージをもう一度表示するには? |faq-25.5| プラグイン固有の情報を保存し、Vimを再起動したときそれを復元するに - は? + は? |faq-25.6| 関数の中からインサートモードを開始するには? |faq-25.7| 関数の中でカーソル位置を動かすには? |faq-25.8| .vimrcファイルの中で環境変数の値をチェックするには? |faq-25.9| 環境変数が定義されているかどうかをチェックするには? |faq-25.10| Vimの組み込み関数を呼ぶには? |faq-25.11| Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対 - してユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマン - ドがVimの標準の機能を果たすようにするには? + してユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマン + ドがVimの標準の機能を果たすようにするには? |faq-25.12| ビジュアルモードで現在選択されているテキストを変数やレジスタに入れ - るには? + るには? |faq-25.13| 変数'myvar'にテキストが入っています。この変数を":s"中で使って'mytext' というテキストを置換したいのですが、どうすればいいですか? |faq-25.14| 変数"bno"がバッファ番号を保持しています。この変数を使って対応する - バッファを開くには? + バッファを開くには? |faq-25.15| オプションの値を変数に保存するには? |faq-25.16| 関数の中でテキストをコピーし、バッファに挿入しました。関数の中で - そのテキストをインデントするには? + そのテキストをインデントするには? |faq-25.17| Vimスクリプト中でカーソル下の文字を取得するには? |faq-25.18| 拡張子を除いたカレントファイル名を取得するには? |faq-25.19| カレントファイルのベース名(basename)を取得するには? @@ -418,31 +418,31 @@ SECTION 25 - VIMスクリプトを書く |faq-25.22| ":!"で実行したプログラムが返すステータス値を取得するには? |faq-25.23| カレントバッファが変更されているかどうかを知るには? |faq-25.24| スクリプト中でノーマルコマンドの中に改行文字を使いたいです。改行文 - 字を指定するには? + 字を指定するには? |faq-25.25| スクリプト中で長い行を次行に継続するには? |faq-25.26| "execute 'echo Myfunc()'"として自作の関数を呼ぼうとすると、カーソ - ルがカレントバッファの先頭に移動してしまいます。なぜ? + ルがカレントバッファの先頭に移動してしまいます。なぜ? |faq-25.27| レジスタの中身を実行するには? |faq-25.28| 関数やマップを呼んだ後に'u'キーを押してアンドゥするとその関数/ - マップによってなされた変更全てをアンドゥします。なぜ? + マップによってなされた変更全てをアンドゥします。なぜ? |faq-25.29| s:つきで定義された関数(スクリプトローカル関数)を別のスクリプト/ - プラグインから呼ぶには? + プラグインから呼ぶには? |faq-25.30| 読み込んだスクリプトをun-sourceするには?言い替えると、スクリプト - を読み込んだことによって実行されたコマンドを全て戻すには? + を読み込んだことによって実行されたコマンドを全て戻すには? *faq-plugins* SECTION 26 - プラグイン |faq-26.1| ファイル形式ごとに異なるオプションを設定するには? |faq-26.2| プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイル - タイププラグインをダウンロードしました。Vimがこれらのファイルを読 - み込むようにするには、どこにコピーすればいいですか? + タイププラグインをダウンロードしました。Vimがこれらのファイルを読 + み込むようにするには、どこにコピーすればいいですか? |faq-26.3| 既存のファイル形式別プラグインを拡張するには? |faq-26.4| プラグインの読み込みをオフにするには? |faq-26.5| ファイル形式別プラグインの読み込みをオフにするには? |faq-26.6| 全てのファイル形式に対し、グローバルのファイル形式別プラグインで - なされる設定を上書きするには? + なされる設定を上書きするには? |faq-26.7| Vimのディレクトリブラウザプラグインを無効にするには? |faq-26.8| 特定のパターンにマッチする名前のファイルや拡張子に応じてファイル - タイプオプションを設定するには? + タイプオプションを設定するには? *faq-editing-program-files* SECTION 27 - プログラムファイルを編集する @@ -452,7 +452,7 @@ SECTION 27 - プログラムファイルを編集する |faq-27.4| オートインデントの際に挿入されるスペースの数を変えるには? |faq-27.5| Cプログラムを編集しています。マクロ定義や変数を表示するには? |faq-27.6| Cプログラムを編集しています。ブロックの内側から、そのブロックの開 - 始位置や終了位置にジャンプするには? + 始位置や終了位置にジャンプするには? |faq-27.7| C++ファイルで"//"コメントが自動的に挿入されるのを止めさせるには? |faq-27.8| 一連の行の行頭にコメント文字'#'をつけ加えるには? |faq-27.9| Cのソースファイルに対応する名前のヘッダファイルを開くには? @@ -461,31 +461,31 @@ SECTION 27 - プログラムファイルを編集する SECTION 28 - QuickFix |faq-28.1| Vimの中からプログラムをビルドするには? |faq-28.2| Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパ - イルしてエラーメッセージを出力します。しかしコンパイルが終わると表 - 示が消えてしまい、エラーメッセージをもう一度見るには:clistとしなけ - ればなりません。このエラーメッセージを見るのに他の方法はありません - か? + イルしてエラーメッセージを出力します。しかしコンパイルが終わると表 + 示が消えてしまい、エラーメッセージをもう一度見るには:clistとしなけ + ればなりません。このエラーメッセージを見るのに他の方法はありません + か? *faq-folding* SECTION 29 - 折り畳み |faq-29.1| 折り畳みの機能を拡張するには? |faq-29.2| 'foldmethod'をセットして折り畳みを有効化すると、全ての折り畳みが閉 - じてしまいます。これを防ぐには? + じてしまいます。これを防ぐには? |faq-29.3| ファイルの編集を開始したときにいくつの折り畳みが開かれた状態にする - かをコントロールするには? + かをコントロールするには? |faq-29.4| マウスを使って折り畳みを開閉するには? |faq-29.5| 閉じた折り畳みの表示に使われるテキストを変更するには? |faq-29.6| Vimを終了・再起動するとき、手動で作った折り畳みを保存・復元するに - は? + は? *faq-vim-with-external-applications* SECTION 30 - 外部プログラムとの連携 |faq-30.1| Vimのウィンドウの中でシェルを起動することはできますか? |faq-30.2| カーソル下の単語を外部プログラムに渡すには? |faq-30.3| シェルコマンドの出力をVimのバッファに取り込むには? |faq-30.4| カレントバッファの中身を外部プログラムにパイプで渡して、そのプログ - ラムの出力でバッファを置き換えるには? + ラムの出力でバッファを置き換えるには? |faq-30.5| ファイル中のあるセクションをソートするには? |faq-30.6| Vimとslrnといっしょに使うステップ・バイ・ステップガイドはあります - か? + か? |faq-30.7| Vimをページャとして使うには? |faq-30.8| Vimの中でUnixのmanページを見るには? |faq-30.9| Vimのdiff機能で使われるdiffコマンドを変更するには? @@ -498,64 +498,65 @@ SECTION 31 - GUIのVIM |faq-31.4| GVimに水平スクロールバーをつけるには? |faq-31.5| スクロールバーをデフォルトで左側に表示するようにするには? |faq-31.6| メニューバーを消すには? -|faq-31.7| GVimを使っています。ALTキーと文字キーを押すとその文字で始まるメニ - ューが選択されます。ALT-<key>の組合せを使いたいので、この挙動はや - めてほしいです。どうすればいいですか? +|faq-31.7| GVimを使っています。ALTキーと文字キーを押すとその文字で始まるメ + ニューが選択されます。ALT-<key>の組合せを使いたいので、この挙動は + やめてほしいです。どうすればいいですか? |faq-31.8| スクロールバーをドラッグしたとき、カーソル位置を動かさずにテキスト - をスクロールさせることは可能ですか? + をスクロールさせることは可能ですか? |faq-31.9| ":browse"を使ったときに特定のディレクトリから始めるようにするには? |faq-31.10| ファイルがVimの外部で変更されたときなど、問い合わせがあるとき、GUI - のダイアログボックスが表示されます。コンソールのダイアログボック - スが出るようにするには? -|faq-31.11| GVimをアプリケーションxxx用のエディタとして使っています。アプリケ - ーションxxxがGVimを起動すると、コントロールがすぐにアプリケーショ - ンxxxに戻ってしまいます。Vimを終了したとき初めてアプリケーション - xxxにコントロールが戻るようにGVimを起動するには? + のダイアログボックスが表示されます。コンソールのダイアログボック + スが出るようにするには? +|faq-31.11| GVimをアプリケーションxxx用のエディタとして使っています。アプリ + ケーションxxxがGVimを起動すると、コントロールがすぐにアプリケー + ションxxxに戻ってしまいます。Vimを終了したとき初めてアプリケーショ + ンxxxにコントロールが戻るようにGVimを起動するには? |faq-31.12| なぜ、システムにインストールされているフォント全てが「フォントを - 選ぶ」ダイアログに現れないのですか? + 選ぶ」ダイアログに現れないのですか? |faq-31.13| コマンドラインモードでマウスを使うには? -|faq-31.14| テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコピ - ーしたテキストがペーストされてしまいます。この挙動を無効にするには? +|faq-31.14| テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコ + ピーしたテキストがペーストされてしまいます。この挙動を無効にするに + は? |faq-31.15| GVimウィンドウの位置とサイズを変更するには? *faq-vim-on-unix* SECTION 32 - UNIX上のVim |faq-32.1| xtermでVimを実行しています。CTRL-Sを押すとVimがフリーズします。 - どうすればいいですか? + どうすればいいですか? |faq-32.2| 画面の更新について奇妙な問題があります。これを解決するには? |faq-32.3| Vimのターミナル/コンソール版を使っています。インサートモードでバッ - クスペースキーを押してもカーソルの前の文字が消えません。どう設定す - れば良いですか? + クスペースキーを押してもカーソルの前の文字が消えません。どう設定す + れば良いですか? |faq-32.4| xtermでVimを使っています。Vimを終了すると画面が元の状態に復元され - ます。これを無効化するには? + ます。これを無効化するには? |faq-32.5| Vimの起動にかなり時間がかかります。起動時間を最小化するには? |faq-32.6| Unixのgvimでカーソルの点滅を止めるには? |faq-32.7| GTK Vimのメニューのフォントを変えるには? |faq-32.8| Vimが<Ctrl-Z>でサスペンドするのを防ぐには? |faq-32.9| Vimを実行しているxtermをkillすると、Vimのプロセスが生き残り、多大 - なCPU時間(99%)を食ってしまいます。なぜこうなるのですか? + なCPU時間(99%)を食ってしまいます。なぜこうなるのですか? |faq-32.10| Unixターミナルで構文強調を使うには? *faq-vim-on-ms-windows* SECTION 33 - MS-Windows上のVim |faq-33.1| MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。 - どうなっているのですか? + どうなっているのですか? |faq-33.2| CTRL-Yキーを押すとCTRL-Rのような動作をします。CTRL-YをCTRL-Yとして - 扱うように設定するには? + 扱うように設定するには? |faq-33.3| 常にGVimのウィンドウを最大化して起動するには? |faq-33.4| なんらかの編集操作をするとVimがフリーズします。カーソルは空の四角 - 形になります。全然文字が入力できません。どうなっているのですか? + 形になります。全然文字が入力できません。どうなっているのですか? |faq-33.5| Windows XPを使っています。最大化したGVimの表示速度がとても遅いで - す。表示の更新を早くするには? + す。表示の更新を早くするには? |faq-33.6| VimをCygwin上で使うにあたって推奨される設定は? |faq-33.7| diffモードでGNU diffを使おうとしています。コマンドラインからdiffを - 使うとうまく動くのですが、Vim内で使おうとすると動きません。どうす - れば? + 使うとうまく動くのですが、Vim内で使おうとすると動きません。どうす + れば? |faq-33.8| Outlookで外部エディタにVimを使うことはできますか? |faq-33.9| HTMLファイルを編集するのにVimを使っています。現在開いているHTML - ファイルをインターネットエクスプローラでプレビューするには? + ファイルをインターネットエクスプローラでプレビューするには? |faq-33.10| VimをMicrosoft Visual Studioといっしょに使いたいです。どうすれば? |faq-33.11| どこに_vimrcと_gvimrcを置けばいいですか? |faq-33.12| ファイルを保存する度に、そのファイルがVimの外部で変更されていると - 警告が出ます。なぜですか? + 警告が出ます。なぜですか? *faq-printing* SECTION 34 - 印刷 |faq-34.1| 全ての行に行番号をつけて印刷するには? @@ -564,21 +565,21 @@ SECTION 34 - 印刷 SECTION 35 - Vimをソースからビルドする |faq-35.1| Unixシステム上でVimをソースからビルドするには? |faq-35.2| Unixでホームディレクトリなど、デフォルトのディレクトリ以外にVimを - インストールするには? + インストールするには? |faq-35.3| MS-Windowsシステム上でVimをソースからビルドするには? |faq-35.4| 私がインストールしたVimにはヘルプ、構文ファイル、インデントファイ - ルが欠けています。それらのファイルをインストールするには? + ルが欠けています。それらのファイルをインストールするには? |faq-35.5| Vimをソースからビルドして"make install"でインストールしました。Vim - のソースディレクトリを残しておく必要はありますか? + のソースディレクトリを残しておく必要はありますか? |faq-35.6| ある機能がコンパイル時に有効化されているかどうかを知るには? |faq-35.7| GUI機能なしでVimをビルドすることはできますか? |faq-35.8| Unixシステム上でVimをビルドするとき、"undefined reference to - term_set_winsize"というエラーが出ます。これを解決するには? + term_set_winsize"というエラーが出ます。これを解決するには? |faq-35.9| GTK 2.03を使おうとしているのですが、Vimのconfigureがgtk-configがな - いとのメッセージを出します。しかしGTK2は一般的なpkg-configを使うよ - うになったので、これは正しいのです。gtk用のインクルードファイルと - ライブラリのリストを出力するpkg-configならありますが、なぜかconfi - gureスクリプトはこれを使ってくれません。 + いとのメッセージを出します。しかしGTK2は一般的なpkg-configを使うよ + うになったので、これは正しいのです。gtk用のインクルードファイルと + ライブラリのリストを出力するpkg-configならありますが、なぜか + configureスクリプトはこれを使ってくれません。 *faq-various* SECTION 36 - 様々な事柄 |faq-36.1| Vimでバイナリフィルを編集するには? @@ -588,9 +589,9 @@ SECTION 36 - 様々な事柄 |faq-36.5| Vimの起動時の画面を表示させなくするには? |faq-36.6| "hit enter to continue"プロンプトを避けるには? |faq-36.7| コマンドラインからVimを起動して一連のファイルに対して一連のコマン - ドを実行するには? + ドを実行するには? |faq-36.8| インサートモードから抜けることなくノーマルモードコマンドを実行する - には? + には? *faq-unicode* SECTION 37 - Unicode |faq-37.1| VimでUnicodeのファイルを作ることはできますか? @@ -1001,8 +1002,8 @@ Amiga、Atari、BeOS、DOS、Macintosh、MachTen、OS/2、RiscOS、VMS です。 Vimランタイムファイル(構文ファイル、ファイル形式別プラグイン、コンパイラプラ グイン、カラースキーム、ドキュメント、インデントファイル、キーマップ)はVim -ftpサイトのftp://ftp.vim.org/pub/vim/runtimeディレクトリでダウンロードできます -。 +ftpサイトのftp://ftp.vim.org/pub/vim/runtimeディレクトリでダウンロードできま +す。 ============================================================================= *faq-4* @@ -1058,8 +1059,8 @@ Vim の全ての機能にヘルプがあります。それを利用するには のリストの中から1つを選んでそこへジャンプすることができます。 ":helpgrep"コマンドを使って全てのヘルプファイル中から与えられたテキストを検索 -することができます。QuickFixウィンドウが開き、全てのマッチする行が表示されます -。 +することができます。QuickFixウィンドウが開き、全てのマッチする行が表示されま +す。 さらなる情報については以下を参照してください。 > @@ -1163,8 +1164,7 @@ SECTION 5 - ファイルの編集 *faq-5.2* 5.2. 現在のファイルを別な名前で保存(save as)して新しいファイルを編集するには? -":saveas"コマンドを使えば現在のファイルを別な名前で保存することができます。 : -> +":saveas"コマンドを使えば現在のファイルを別な名前で保存することができます: > :saveas <newfilename> < @@ -1188,8 +1188,7 @@ SECTION 5 - ファイルの編集 *faq-5.3* 5.3. カレントディレクトリを現在のファイルのディレクトリにするには? -次のコマンドでカレントディレクトリを現在のファイルのディレクトリにできます: -> +次のコマンドでカレントディレクトリを現在のファイルのディレクトリにできます: > :cd %:p:h < @@ -1224,9 +1223,9 @@ EOLをつけずにファイルを書き込むことができます: > *faq-5.5* 5.5. ファイルを最後に編集した場所から開くようにするには? -Vimは各バッファに対して最後に編集した場所のカーソル位置を'"'レジスタに保存します。 -次のautocmdを.vimrcまたは.gvimrcに書けば、ファイルを最後に編集した場所から開く -ようにできます: > +Vimは各バッファに対して最後に編集した場所のカーソル位置を'"'レジスタに保存しま +す。次のautocmdを.vimrcまたは.gvimrcに書けば、ファイルを最後に編集した場所から +開くようにできます: > au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g'\"" | endif @@ -1238,11 +1237,11 @@ Vimは各バッファに対して最後に編集した場所のカーソル位 < *faq-5.6* 5.6. Vimでファイルを編集中にそのファイルが他のアプリケーションによって変更され - たとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイアログのような) - を開きます。この警告を無効にするには? + たとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイアログのような) + を開きます。この警告を無効にするには? -'autoread'オプションをセットすると、Vimの外部でファイルが変更されたとき、自動的に -読み直すようにできます: > +'autoread'オプションをセットすると、Vimの外部でファイルが変更されたとき、自動 +的に読み直すようにできます: > :set autoread < @@ -1386,8 +1385,8 @@ CTRL-^を使ってバッファを切り替えることもできます。キー *faq-6.3* 6.3. それぞれのファイルを別ウィンドウで開くには? -コマンドライン引数-oと-Oを指定すると複数のファイルを水平または垂直に分割したウ -ィンドウで開くことができます。例えば: > +コマンドライン引数-oと-Oを指定すると複数のファイルを水平または垂直に分割した +ウィンドウで開くことができます。例えば: > $ vim -o3 f1.txt f2.txt f3.txt < @@ -1523,8 +1522,8 @@ Note デフォルトではこのオプションはオフにされています。 :help backup < *faq-7.3* -7.3. ファイルを保存するとファイルパーミッションが変更されます。ファイルパーミ - ッションを変更せずにファイルを保存するよう設定するには? +7.3. ファイルを保存するとファイルパーミッションが変更されます。ファイルパー + ミッションを変更せずにファイルを保存するよう設定するには? これは'backupcopy'が'no'または'auto'に設定されていると起こりえます。Note この オプションのデフォルト値はほとんどの場合に正しく動作するように設定されていま @@ -1550,10 +1549,10 @@ SECTION 8 - バッファ *faq-8.1* 8.1. バッファに対して変更を加えました。変更されたバッファを保存せずに、かつ変 - 更を失うことなく他のバッファを編集するには? + 更を失うことなく他のバッファを編集するには? -'hidden'オプションをセットすれば現在のファイルに対する変更を失うことなく他のフ -ァイルを編集することができます。 : > +'hidden'オプションをセットすれば現在のファイルに対する変更を失うことなく他の +ファイルを編集することができます: > :set hidden < @@ -1707,10 +1706,10 @@ SECTION 9 - ウィンドウ *faq-9.1* 9.1. ウィンドウとバッファの違いは? -バッファとは編集用にメモリに読み込まれたファイルです。元のファイルはあなたがバ -ッファをファイルに書き込むまでは変更されないままです。ウィンドウとはバッファを -表示する領域です。1つのバッファを複数のウィンドウで表示することもできますし、 -異なるバッファを複数のウィンドウで表示することもできます。 +バッファとは編集用にメモリに読み込まれたファイルです。元のファイルはあなたが +バッファをファイルに書き込むまでは変更されないままです。ウィンドウとはバッファ +を表示する領域です。1つのバッファを複数のウィンドウで表示することもできます +し、異なるバッファを複数のウィンドウで表示することもできます。 さらなる情報については以下を参照してください。 > @@ -1764,8 +1763,8 @@ CTRL-W <、CTRL-W >、CTRL-W | コマンドを使うこともできます。 いウィンドウにはステータスラインだけが表示されます。 方法2: -'noequalalways'オプションをセットし、'winheight'オプションを大きな値(99999など -)に設定する: > +'noequalalways'オプションをセットし、'winheight'オプションを大きな値(99999な +ど)に設定する: > :set noequalalways :set winheight=99999 @@ -1793,9 +1792,9 @@ http://vim.sourceforge.net/scripts/script.php?script_id=508 を実行するには? ":bufdo"コマンドを使うと全バッファに対してexコマンドを実行することができます。 -":windo"コマンドを使うと全ウィンドウに対してexコマンドを実行することができます -。":argdo"コマンドを使うと引数リスト中の全ファイルに対してexコマンドを実行する -ことができます。 +":windo"コマンドを使うと全ウィンドウに対してexコマンドを実行することができま +す。":argdo"コマンドを使うと引数リスト中の全ファイルに対してexコマンドを実行す +ることができます。 さらなる情報については以下を参照してください。 > @@ -2314,8 +2313,8 @@ SECTION 11 - テキストを検索する 切れてしまいます。置換が失敗したときにもマップの次のコマンドを続けてほ しいのですが、どうすればできますか? -置換コマンドに対して'e'フラグを指定すると、パターンが見つからなかったときもマッ -プの他のコマンドを続行します。 +置換コマンドに対して'e'フラグを指定すると、パターンが見つからなかったときも +マップの他のコマンドを続行します。 さらなる情報については以下を参照してください。 > @@ -2856,8 +2855,8 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま はTODOリストにはありません。 *faq-12.26* 12.26. インサートモードでバックスペースキーを押すと、今回のインサートモードで - 入力した文字が消されるだけです。バックスペースキーで前回のインサートモ - ードで入力した文字を消すには? + 入力した文字が消されるだけです。バックスペースキーで前回のインサート + モードで入力した文字を消すには? 'backspace'をセットすればインサートモードで前回入力した文字を削除することがで きます: > @@ -2945,9 +2944,9 @@ CTRL-Vに続けて10進の数字1-255(最初に0をつけてばならない)ま 00-FF、または8進の数字0-0377(最初に0をつける)またはuと16進の数字0-FFFFまたは Uと16進の数字0-7FFFFFFFを入力すれば、印字不能文字を入力することができます。 -別の方法としては、":digraphs"を使って、全文字に対するダイグラフと共にそれら -の10進値プラスアルファを表示することです。CTRL-Kに続けて英数字を2つ(ダイグラフ -)を入力すれば印字不能文字を入力することができます。 +別の方法としては、":digraphs"を使って、全文字に対するダイグラフと共にそれらの +10進値プラスアルファを表示することです。CTRL-Kに続けて英数字を2つ(ダイグラフ) +を入力すれば印字不能文字を入力することができます。 さらなる情報については以下を参照してください。 > @@ -3351,9 +3350,10 @@ smartindent, textwidth)によります。テキストをVimに貼り付ける前 < *faq-14.15* 14.15. 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきらない - とき、まったく何も表示されません。折り返された行の代わりに'@'という記号 - で始まる空の行が表示されます。行が収まるように画面をスクロールすると'@' - は消え、行が表示されるようになります。この挙動の設定はどうやるのですか? + とき、まったく何も表示されません。折り返された行の代わりに'@'という記号 + で始まる空の行が表示されます。行が収まるように画面をスクロールする + と'@'は消え、行が表示されるようになります。この挙動の設定はどうやるので + すか? 'display'オプションを'lastline'に設定すると、'@'を表示する代わりに可能な限り最 後の行を表示するようになります。 > @@ -3516,8 +3516,8 @@ ggVGでファイル全体をビジュアル選択することができます。 :set selectmode? < このモードは選択モードといい、ビジュアルモードに似ています。"behave mswin"コマ -ンドを使うと、このオプションも自動的にセットされます。選択モードはビジュアルモ -ードと同じように見えますが、MS-Windowsの選択モードに似ています。 +ンドを使うと、このオプションも自動的にセットされます。選択モードはビジュアル +モードと同じように見えますが、MS-Windowsの選択モードに似ています。 さらなる情報については以下を参照してください > @@ -3637,10 +3637,10 @@ exコマンドの出力をファイルにリダイレクトするには、次の :help :silent < *faq-16.5* -16.5. コマンドモードでファイル名を補完しようとタブキーを押します。マッチするフ - ァイル名が複数ある時、Vimは最初にマッチするファイル名を補完し、マッチし - たファイル名全てのリストを表示します。マッチしたファイル名全てを表示する - だけで、最初の候補を補完しないようにするには? +16.5. コマンドモードでファイル名を補完しようとタブキーを押します。マッチする + ファイル名が複数ある時、Vimは最初にマッチするファイル名を補完し、マッチ + したファイル名全てのリストを表示します。マッチしたファイル名全てを表示す + るだけで、最初の候補を補完しないようにするには? 'wildmode'を設定すればコマンドモードでのファイル名補完をカスタマイズすること ができます。この場合は'wildmode'を'list'にすればよいでしょう: > @@ -3652,8 +3652,8 @@ exコマンドの出力をファイルにリダイレクトするには、次の :help 'wildmode' < *faq-16.6* -16.6. バッファからコマンドラインにテキストをコピーしたり、コマンドラインからバ - ッファにテキストをコピーするには? +16.6. バッファからコマンドラインにテキストをコピーしたり、コマンドラインから + バッファにテキストをコピーするには? バッファからコマンドラインにテキストをコピーするには、バッファからテキストをヤ ンクした後にコマンドラインでCtrl-R 0を押せばペーストすることができます。また、 @@ -3754,7 +3754,7 @@ SECTION 18 - リモート編集 *faq-18.1* 18.1. 既に起動しているgvimでファイルを開くには? Vim 5.xのOpenWithVim.exeと - SendToVim.exeはどうなりました? + SendToVim.exeはどうなりました? Vim6からOpenWithVim.exeとSendToVim.exeユーティリティのOLE版はクライアント-サー バ機能によってとって替わられました。ファイルj.txtを既に起動しているgvim(MyVim) @@ -3996,9 +3996,9 @@ SECTION 19 - オプション *faq-19.14* 19.14. Vimを再起動しても設定が永続するようにするには? -Vimを再起動しても設定が永続するようにするには、その設定を.vimrcまたは.gvimrcフ -ァイルに追加します。":mkvimrc"コマンドを使うと現在の設定をもとにvimrcファイル -を生成することもできます。 +Vimを再起動しても設定が永続するようにするには、その設定を.vimrcまたは.gvimrc +ファイルに追加します。":mkvimrc"コマンドを使うと現在の設定をもとにvimrcファイ +ルを生成することもできます。 さらなる情報については以下を参照してください。 > @@ -4186,8 +4186,8 @@ Vimのキーと重ならないようにキーを定義することができま :map <leader>j <C-W>j :map <leader>k <C-W>k < -ここでデフォルトの<leader>はバックスラッシュ(\)で置き換えられます。そのためユ -ーザーはこれらのマッピングを発動させるのに > +ここでデフォルトの<leader>はバックスラッシュ(\)で置き換えられます。そのため +ユーザーはこれらのマッピングを発動させるのに > \s \j \k @@ -4486,8 +4486,8 @@ SECTION 22 - レコーディングと繰り返し *faq-22.1* 22.1. 編集操作(挿入、削除、ペースト等)を繰り返すには? -'.'を使えば最後の編集操作を繰り返すことができます。これは挿入、削除、変更、ペ -ーストなどの単純な変更を繰り返します。 +'.'を使えば最後の編集操作を繰り返すことができます。これは挿入、削除、変更、 +ペーストなどの単純な変更を繰り返します。 さらなる情報については以下を参照してください。 > @@ -5435,9 +5435,9 @@ SECTION 26 - プラグイン < *faq-26.2* -26.2. プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイルタ - イププラグインをダウンロードしました。Vimがこれらのファイルを読み込むように - するには、どこにコピーすればいいですか? +26.2. プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイルタイプ + プラグインをダウンロードしました。Vimがこれらのファイルを読み込むように + するには、どこにコピーすればいいですか? ランタイムファイル(プラグイン、構文ファイル、インデントファイル、カラースキー ム、ファイル形式別プラグインなど)は'runtimepath'で指定されたディレクトリのうち @@ -6266,7 +6266,7 @@ Vimは等幅フォントのみサポートしています。プロポーショ < *faq-31.14* 31.14. テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコピーし - たテキストがペーストされてしまいます。この挙動を無効にするには? + たテキストがペーストされてしまいます。この挙動を無効にするには? マウスの中央ボタンに<Nop>をマップすると中央ボタンを無効化できます: > @@ -6339,9 +6339,9 @@ terminfo/termcapファイルを使わねばなりません。 :help 'term' < *faq-32.3* -32.3. Vimのターミナル/コンソール版を使っています。インサートモードでバックスペ - ースキーを押してもカーソルの前の文字が消えません。どう設定すれば良いです - か? +32.3. Vimのターミナル/コンソール版を使っています。インサートモードでバックス + ペースキーを押してもカーソルの前の文字が消えません。どう設定すれば良いで + すか? Vimが正しいバックスペースのキーコードを受け取っているかどうか確かめてください。 次のコマンドを試してみてください: > @@ -6496,8 +6496,8 @@ Xfree86 xtermはhttp://dickey.his.com/xterm/xterm.htmlからダウンロード SECTION 33 - MS-Windows上のVim *faq-33.1* -33.1. MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。どうな - っているのですか? +33.1. MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。どう + なっているのですか? mswin.vimプラグインは、VimがMS-Windowsアプリケーションに似た挙動をするようにキー マッピングとオプションを設定します。そのキーマップの一つがCTRL-Vで、これは @@ -6517,11 +6517,11 @@ MS-Windowsアプリケーションではテキストをペーストします。 33.2. CTRL-Yキーを押すとCTRL-Rのような動作をします。CTRL-YをCTRL-Yとして扱うよ うに設定するには? -CTRL-YからCTRL-Rへのマップはmswin.vim内で行われています。mswin.vimは標 -準のMS-Windowsアプリケーションと同じ挙動になるようにCTRL-Yをマップします。 -これは":help CTRL-Y"で説明されています。mswin.vim中のCTRL-Yをマップしている行 -をコメントアウトするか、.vimrc中でmswin.vimを読み込んでいる行を削除すればよい -でしょう。 +CTRL-YからCTRL-Rへのマップはmswin.vim内で行われています。mswin.vimは標準の +MS-Windowsアプリケーションと同じ挙動になるようにCTRL-Yをマップします。これ +は":help CTRL-Y"で説明されています。mswin.vim中のCTRL-Yをマップしている行をコ +メントアウトするか、.vimrc中でmswin.vimを読み込んでいる行を削除すればよいで +しょう。 *faq-33.3* @@ -6555,9 +6555,9 @@ CTRL-YからCTRL-Rへのマップはmswin.vim内で行われています。mswin 33.5. Windows XPを使っています。最大化したGVimの表示速度がとても遅いです。表示 の更新を早くするには? -これは表示プロパティの'Smooth edges of screen fonts'を有効化しているために起こ -っている可能性があります。フォントスムージングをオフにするか、スムージング方法 -を"Standard"にしてください。 +これは表示プロパティの'Smooth edges of screen fonts'を有効化しているために起こっ +ている可能性があります。フォントスムージングをオフにするか、スムージング方法を +"Standard"にしてください。 {訳注: コントロールパネル[パフォーマンスオプション]の[スクリーンフォントの縁を 滑らかにする]のことだと思う。} @@ -6577,7 +6577,7 @@ CTRL-YからCTRL-Rへのマップはmswin.vim内で行われています。mswin < *faq-33.7* 33.7. diffモードでGNU diffを使おうとしています。コマンドラインからdiffを使うと - うまく動くのですが、Vim内で使おうとすると動きません。どうすれば? + うまく動くのですが、Vim内で使おうとすると動きません。どうすれば? VimでGNU diffを使うには問題があります。次のリンクにあるRon Aaronがビルドした GNU diff.exeを使ってみてください: > @@ -6852,8 +6852,8 @@ SECTION 36 - 様々な事柄 $ vim -b <binary_file_name> < -また、バイナリファイルを編集するのにxxdユーティリティ(Vimのディストリビューシ -ョンの一部)を使うこともできます。 +また、バイナリファイルを編集するのにxxdユーティリティ(Vimのディストリビュー +ションの一部)を使うこともできます。 さらなる情報については以下を参照してください > @@ -7122,7 +7122,7 @@ Vimはファイルを開くとき、そのファイルを'fileencodings'内に 37.10. これらのオプションの典型的な例はどこにありますか? これらを別な言葉で例をつけて説明した"tip"がここにあります。 -http://vim.sourceforge.net/tip_view.php?tip_id=246 . +http://vim.sourceforge.net/tip_view.php?tip_id=246 *faq-37.11* 37.11. Unicodeの文字を挿入するには? From 17b437de2c6332945c67c41b8a099a306599e55c Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 14 May 2012 07:45:09 +0900 Subject: [PATCH 388/783] fix indents (Issue #48) --- vim_faq/vim_faq.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 0ee354e77..7b5f777a9 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -328,7 +328,7 @@ SECTION 20 - キーマップ ロックをアンインデンとするようにしたいです。このようなマップを作る には?この挙動はtextpadやVisual Studioなどに似ています。 |faq-20.11| 私のマッピングにおいて<CR>のような特殊文字が認識されません。 - 特殊文字を認識するように設定するには? + 特殊文字を認識するように設定するには? |faq-20.12| マップ中で'|'を使って複数のコマンドを区切るには? |faq-20.13| その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 入力があります。最初のものを入力したとき、2番目のが展開しないよう @@ -403,8 +403,8 @@ SECTION 25 - VIMスクリプトを書く ドがVimの標準の機能を果たすようにするには? |faq-25.12| ビジュアルモードで現在選択されているテキストを変数やレジスタに入れ るには? -|faq-25.13| 変数'myvar'にテキストが入っています。この変数を":s"中で使って'mytext' - というテキストを置換したいのですが、どうすればいいですか? +|faq-25.13| 変数'myvar'にテキストが入っています。この変数を":s"中で使って + 'mytext'というテキストを置換したいのですが、どうすればいいですか? |faq-25.14| 変数"bno"がバッファ番号を保持しています。この変数を使って対応する バッファを開くには? |faq-25.15| オプションの値を変数に保存するには? From 23f2c35950b4dfe55aff7e0223d6bf2f0ac5f780 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 14 May 2012 21:26:35 +0900 Subject: [PATCH 389/783] fix typo --- vim_faq/vim_faq.jax | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 7b5f777a9..6b02f2c64 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -325,7 +325,7 @@ SECTION 20 - キーマップ |faq-20.8| エスケープキーにマップするには? |faq-20.9| あるキーをなにもしないようにマップするには? |faq-20.10| Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブ - ロックをアンインデンとするようにしたいです。このようなマップを作る + ロックをアンインデントするようにしたいです。このようなマップを作る には?この挙動はtextpadやVisual Studioなどに似ています。 |faq-20.11| 私のマッピングにおいて<CR>のような特殊文字が認識されません。 特殊文字を認識するように設定するには? @@ -4232,7 +4232,7 @@ Vimのキーと重ならないようにキーを定義することができま < *faq-20.10* 20.10. Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブロッ - クをアンインデンとするようにしたいです。このようなマップを作るには? + クをアンインデントするようにしたいです。このようなマップを作るには? この挙動はtextpadやVisual Studioなどに似ています。 以下のマッピングを使ってください: > @@ -4601,8 +4601,8 @@ SECTION 23 - 自動コマンド *faq-23.3* 23.3. あるウィンドウに入るときに毎回コマンドを実行するには? -自動コマンドイベントWinEnterを使えば、あるウィンドウに入るときに度にコマンドを -実行することができます。例: > +自動コマンドイベントWinEnterを使えば、あるウィンドウに入る度にコマンドを実行す +ることができます。例: > :autocmd WinEnter *.c call MyFunction() < @@ -4692,8 +4692,9 @@ SECTION 24 - 構文強調 Vim.foreground: Black Vim.backround: Wheat + {訳注: Vim.background の間違い} < -また、コマンドライン引数"-foregroung"と"-background"を指定して文字色と背景色 +また、コマンドライン引数"-foreground"と"-background"を指定して文字色と背景色 を指定することもできます。これらの引数はMotifとAthena版でだけサポートされてい ます: > From 74fcf212812c221ec949864056925c239228aa6f Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 14 May 2012 21:29:03 +0900 Subject: [PATCH 390/783] remove trailing spaces --- vim_faq/vim_faq.jax | 131 ++++++++++++++++++++++---------------------- 1 file changed, 65 insertions(+), 66 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 6b02f2c64..c1133f20d 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -634,8 +634,8 @@ Crisp、Brief、xedit です。そして Notepad も。 さらなる情報については以下を参照してください。 > - :help intro -< + :help intro +< *faq-1.2* 1.2. 誰が Vim を書いたんですか? @@ -648,7 +648,7 @@ Stevie に基づいています。 さらなる情報については以下を参照してください。 > :help author -< +< *faq-1.3* 1.3. Vim は Vi と互換性がありますか? @@ -671,7 +671,7 @@ Stevie に基づいています。 :help 'compatible' :help compatible-default < - *faq-1.4* + *faq-1.4* 1.4. Vim が Vi よりも向上している点は何ですか? ここにあるのは短い要約です。以下のリストは Vim が徹底して現代的で、機能がぎゅ @@ -823,7 +823,7 @@ SECTION 2 - 情報源 いくつか存在します: > 名前 説明 -< +< vim-announce 新しいリリースの発表 vim 一般的な議論 vim-dev パッチ、バグ報告、開発議論 @@ -924,7 +924,7 @@ VimOnline (vim.sf.net) で手に入ります。将来的には他の場所も加 れています。下記の場所にもそのコピーがあります。 > http://www.faqs.org/faqs/editor-faq/vi/part1/index.html -< +< また、Vim は過去数年間で非常に多くの機能を集積してきたため、よくある質問をここ で申し分なく記述することは不可能に近い作業です。これを可能にするために、もし良 い質問をお持ちならメンテナにメールで知らせてください。良い質問とは、自分で答え @@ -1045,7 +1045,7 @@ Vim の全ての機能にヘルプがあります。それを利用するには :help init<C-D> :help str*()<C-D> :help '*indent<C-D> -< +< ヘルプキーワードの一部をタイプした後にTabキーを押すと、マッチするキーワードに 展開することができます。Tabキーを押しつづけると他のマッチするキーワードに変わっ ていきます。 @@ -1677,7 +1677,7 @@ CTRL-Gの前にカウントを指定することに注意してください。 次のコマンドで現在のバッファを削除し、次のバッファを開くことができます: > :bnext | bdelete # -< +< さらなる情報については以下を参照してください。 > :help :bnext @@ -2319,7 +2319,7 @@ SECTION 11 - テキストを検索する さらなる情報については以下を参照してください。 > :help :s_flags -< +< *faq-11.16* 11.16. 行からある文字がn回目に現れる箇所を検索するには? @@ -2351,7 +2351,7 @@ SECTION 11 - テキストを検索する :help sub-replace-special :help NL-used-for-Nul :help CR-used-for-NL -< +< *faq-11.18* 11.18. ASCIIコードで検索する文字を指定するには? @@ -2364,7 +2364,7 @@ SECTION 11 - テキストを検索する :help i_CTRL-V_digit :help :ascii :help ga -< +< *faq-11.19* 11.19. 長い行を見つけるには? @@ -2379,7 +2379,7 @@ SECTION 11 - テキストを検索する :help /\{ :help /\%c -< +< *faq-11.20* 11.20. カレントバッファ内の指定したパターンを含む行を全て表示するには? @@ -2401,7 +2401,7 @@ SECTION 11 - テキストを検索する :help :global :help :print :help :number -< +< *faq-11.21* 11.21. 複数行にわたる文字列を検索するには? @@ -2472,7 +2472,7 @@ SECTION 12 - テキストを変更する :help :s :help /\{ :help :s_flags -< +< *faq-12.3* 12.3. 連続する空行を1行だけに圧縮するには? @@ -2516,7 +2516,7 @@ SECTION 12 - テキストを変更する 空行、または空白だけからなる行を全て削除するには、次のコマンドを使います: > :g/^\s*$/d -< +< *faq-12.5* 12.5. カーソル下の単語をコピー/ヤンクするには? @@ -2531,7 +2531,7 @@ whitespace)でカーソル下の単語をコピー/ヤンクできます。 :help yank :help text-objects :help objects -< +< *faq-12.6* 12.6. 行全体ではなく、行内のある位置からある位置までをヤンクするには? @@ -2578,7 +2578,7 @@ n|を使います。次に'word'が現れる場所までをヤンクするには :help {motion} :help object-motions :help 4.6 -< +< *faq-12.9* 12.9. あるパターンを含む行全てをヤンクするには? @@ -2602,7 +2602,7 @@ n|を使います。次に'word'が現れる場所までをヤンクするには :help put :help registers :help :registers -< +< *faq-12.10* 12.10. あるパターンを含まない行全てを削除するには? @@ -2671,7 +2671,7 @@ Exコマンドでないコマンドを使いたければ、":normal"を使うこ :help :global :help :v :help :normal -< +< *faq-12.14* 12.14. カーソル位置の1文字上の文字をカーソル位置にコピーするには? @@ -2707,7 +2707,7 @@ Exコマンドでないコマンドを使いたければ、":normal"を使うこ :help i_CTRL-R :help expand() :help !! -< +< *faq-12.17* 12.17. レジスタの中身をカレントバッファに挿入するには? @@ -2808,7 +2808,7 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま :help :~ :help & :help sub-replace-special -< +< *faq-12.23* 12.23. ":substitute"を使って大文字・小文字を入れかえるには? @@ -2833,7 +2833,7 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま :help \U :help \L :help \u -< +< *faq-12.24* 12.24. キーボード上に無い文字を入力するには? @@ -2846,7 +2846,7 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま :help digraphs :help 'digraphs' :help 24.9 -< +< *faq-12.25* 12.25. ダイグラフのどれか、または全てを削除するコマンドはありますか? @@ -2866,7 +2866,7 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま さらなる情報については以下を参照してください。 > :help 'backspace' -< +< *faq-12.27* 12.27. 72文字より長くて"+"で終わり、次行に折り返されている行があります。このよ うな行をすばやく連結させるには? @@ -2920,7 +2920,7 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま さらなる情報については以下を参照してください。 > :help case -< +< *faq-12.30* 12.30. キーボード上にないASCII文字を入力するには? @@ -2954,7 +2954,7 @@ Uと16進の数字0-7FFFFFFFを入力すれば、印字不能文字を入力す :help i_CTRL-V :help i_CTRL-V_digit :help :digraphs -< +< *faq-12.32* 12.32. バッファから重複した行を削除するには? @@ -3593,7 +3593,7 @@ Vimのコマンドラインテキストを編集するのにコマンドライ さらなる情報については以下を参照してください。 > :help cmdline-window -< +< *faq-16.3* 16.3. ViモードからExモードに移行するには? @@ -3606,7 +3606,7 @@ QでViモードからExモードに移行できます。ExモードからViモ :help gQ :help Ex-mode :help :vi -< +< *faq-16.4* 16.4. exコマンドの出力をバッファにコピーするには? @@ -3717,7 +3717,7 @@ $HOME/.viminfoまたは$HOME/_viminfoファイルを削除すればこのメッ :help viminfo-file-name :help viminfo :help 21.3 -< +< *faq-17.2* 17.2. viminfo機能を無効にするには? @@ -3807,7 +3807,7 @@ SECTION 19 - オプション さらなる情報については以下を参照してください。 > :help :options -< +< *faq-19.2* 19.2. オプションの値をトグルするには? @@ -3873,7 +3873,7 @@ SECTION 19 - オプション :help auto-setting :help 'modeline' :help 'modelines' -< +< *faq-19.6* 19.6. ファイル中の全ての行の行番号を表示するには? @@ -4008,7 +4008,7 @@ Vimを再起動しても設定が永続するようにするには、その設 :help vimrc-intro :help :mkvimrc :help initialization -< +< *faq-19.15* 19.15. なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュする)の ですか? @@ -4035,7 +4035,7 @@ Vimは普通のエスケープとカーソルキーのシーケンスなどを さらなる情報については以下を参照してください。 > :help ttimeout -< +< *faq-19.16* 19.16. 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示するように するには? @@ -4069,7 +4069,7 @@ Vimは普通のエスケープとカーソルキーのシーケンスなどを :help :set-= < -============================================================================= +============================================================================= *faq-20* SECTION 20 - キーマップ @@ -4088,7 +4088,7 @@ SECTION 20 - キーマップ :help map-listing :help map-overview -< +< *faq-20.2* 20.2. ユーザ定義のキーマッピングをリストするには? @@ -4159,7 +4159,7 @@ kDivide, kMultiply, kEnterなどが使えます。 :help key-codes :help terminal-options -< +< *faq-20.6* 20.6. ビジュアルモードでのみ機能するマッピングを作成するには? @@ -4204,7 +4204,7 @@ Vimのキーと重ならないようにキーを定義することができま :help <Leader> :help <LocalLeader> :help write-plugin -< +< *faq-20.8* 20.8. エスケープキーにマップするには? @@ -4256,7 +4256,7 @@ Vimのキーと重ならないようにキーを定義することができま :help >> :help << :help <LT> -< +< *faq-20.11* 20.11. 私のマッピングにおいて<CR>のような特殊文字が認識されません。 特殊文字を認識するように設定するには? @@ -4299,7 +4299,7 @@ Vimのキーと重ならないようにキーを定義することができま さらなる情報については以下を参照してください。 > :help map_bar -< +< *faq-20.13* 20.13. その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 入力があります。最初のものを入力したとき、2番目のが展開しないようにする @@ -4339,7 +4339,7 @@ Vimは次のキーが押されるのを待ちます。次のキーが"b"ならvi :help 'ttimeout' :help vt100-cursor-keys :help slow-fast-terminal -< +< *faq-20.15* 20.15. ビジュアル選択したテキストに対して外部コマンドを実行するマッピングを作 るには? @@ -4370,7 +4370,7 @@ Vimは次のキーが押されるのを待ちます。次のキーが"b"ならvi :help let-register :help c_CTRL-U :help :!cmd -< +< *faq-20.16* 20.16. <Tab>キーの機能を保ったままCtrl-Iにマッピングするには? @@ -4402,7 +4402,7 @@ SECTION 21 - 短縮入力 :help 24.7 :help abbreviations :help Q_ab -< +< *faq-21.2* 21.2. 複数行の短縮入力を作るには? @@ -4420,7 +4420,7 @@ SECTION 21 - 短縮入力 さらなる情報については以下を参照してください。 > :help abbreviations -< +< *faq-21.3* 21.3. 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペースが入っ てしまいます。これを防ぐには? @@ -4622,7 +4622,7 @@ SECTION 23 - 自動コマンド :help :<afile> :help :<abuf> :help :<amatch> -< +< *faq-23.5* 23.5. Vimがフォーカスを失ったとき、変更されたバッファ全てを自動的に保存する には? @@ -4736,7 +4736,7 @@ SECTION 24 - 構文強調 さらなる情報については以下を参照してください。 > :help :highlight -< +< *faq-24.5* 24.5. ビジュアルモードで選択された範囲の背景色を変えるには? @@ -4768,7 +4768,7 @@ SECTION 24 - 構文強調 :help 'listchars' :help hl-NonText :help hl-SpecialKey -< +< *faq-24.7* 24.7. 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? @@ -4821,7 +4821,7 @@ Vimは構文強調する際にファイル全体をパースすることはし :help 'showmatch' :help 'matchtime' :help 'matchpairs' -< +< *faq-24.10* 24.10. Cのコメントの構文強調をオフにするには? @@ -4845,7 +4845,7 @@ Vimは構文強調する際にファイル全体をパースすることはし :help mysyntaxfile-add :help 'runtimepath' -< +< *faq-24.12* 24.12. Vimに付属の標準の構文ファイルを独自の構文ファイルで置き換えるには? @@ -4860,7 +4860,7 @@ $VIM/vimfiles/syntaxディレクトリに置きます。 :help mysyntaxfile-replace :help 44.11 :help mysyntaxfile -< +< *faq-24.13* 24.13. 特定の桁以降の全ての文字を強調するには? @@ -4876,7 +4876,7 @@ $VIM/vimfiles/syntaxディレクトリに置きます。 :help /\%v :help /\+ :help /. -< +< *faq-24.14* 24.14. ソースファイル(.c, .hなど)を構文強調つきでHTMLファイルに変換するには? @@ -4926,7 +4926,7 @@ VimはVimプラグインやスクリプトをデバッグするための原始 :help debug-scripts :help -D -< +< *faq-25.3* 25.3. あるオプションを設定したスクリプト/プラグインを探すには? @@ -5004,7 +5004,7 @@ Vimスクリプト/関数の中で環境変数を使うには、環境変数名 さらなる情報については以下を参照してください。 > :help expr-env -< +< *faq-25.9* 25.9. 環境変数が定義されているかどうかをチェックするには? @@ -5050,7 +5050,7 @@ exists()を使えば環境変数の存在をチェックすることができま :help :let-register :help user-functions :help usr_41.txt -< +< *faq-25.11* 25.11. Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対して ユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマンドがVim @@ -5063,7 +5063,7 @@ exists()を使えば環境変数の存在をチェックすることができま さらなる情報については以下を参照してください。 > :help :normal -< +< *faq-25.12* 25.12. ビジュアルモードで現在選択されているテキストを変数やレジスタに入れるに は? @@ -5116,7 +5116,7 @@ exists()を使えば環境変数の存在をチェックすることができま さらなる情報については以下を参照してください。 > :help sub-replace-special -< +< *faq-25.14* 25.14. 変数"bno"がバッファ番号を保持しています。この変数を使って対応するバッフ ァを開くには? @@ -5236,7 +5236,7 @@ getline()と文字列のインデクス[]を使います: > :help i_CTRL-R_CTRL-R :help i_CTRL-R_CTRL-O :help expression -< +< *faq-25.21* 25.21. 関数の中で外部プログラムを呼ぶには? @@ -5252,7 +5252,7 @@ system()を使うと、外部コマンドを起動し、出力を取得するこ :help system() :help :! :help 10.9 -< +< *faq-25.22* 25.22. ":!"で実行したプログラムが返すステータス値を取得するには? @@ -5312,7 +5312,7 @@ system()を使うと、外部コマンドを起動し、出力を取得するこ さらなる情報については以下を参照してください。 > :help line-continuation -< +< *faq-25.26* 25.26. "execute 'echo Myfunc()'"として自作の関数を呼ぼうとすると、カーソルがカ レントバッファの先頭に移動してしまいます。なぜ? @@ -5384,7 +5384,7 @@ system()を使うと、外部コマンドを起動し、出力を取得するこ :help script-variable :help script-local :help :scriptnames -< +< *faq-25.30* 25.30. 読み込んだスクリプトをun-sourceするには?言い替えると、スクリプトを読み 込んだことによって実行されたコマンドを全て戻すには? @@ -5547,7 +5547,7 @@ Unixシステムでは、通常これは"$HOME/.vim"ディレクトリになり :help ftplugin-overrule :help ftplugins :help myfiletypefile -< +< *faq-26.7* 26.7. Vimのディレクトリブラウザプラグインを無効にするには? @@ -5623,7 +5623,7 @@ SECTION 27 - プログラムファイルを編集する :help C-indenting :help cinoptions-values :help 'smartindent' -< +< *faq-27.3* 27.3. オートインデント機能を無効化するには? @@ -5765,7 +5765,7 @@ SECTION 27 - プログラムファイルを編集する :help fo-table < -============================================================================= +============================================================================= *faq-28* SECTION 28 - QuickFix @@ -5878,7 +5878,6 @@ SECTION 29 - 折り畳み :help 'foldcolumn' < - *faq-29.5* 29.5. 閉じた折り畳みの表示に使われるテキストを変更するには? @@ -5931,7 +5930,7 @@ SECTION 30 - 外部プログラムとの連携 ビルドしなければなりません。さらなる情報については以下のURLを訪れてください: > http://vim.sourceforge.net/scripts/script.php?script_id=165 -< +< *faq-30.2* 30.2. カーソル下の単語を外部プログラムに渡すには? @@ -6125,7 +6124,7 @@ Vimのコマンドライン引数に-fontを使うと通常のテキストに使 :help 31.4 :help -geom -< +< *faq-31.4* 31.4. GVimに水平スクロールバーをつけるには? @@ -6532,7 +6531,7 @@ MS-Windowsアプリケーションと同じ挙動になるようにCTRL-Yをマ 動コマンドを使えば、起動時にVimのウィンドウを最大化することができます: > autocmd GUIEnter * simalt ~x -< +< さらなる情報については以下を参照してください: > :help :simalt From 3a78027d1786abe3bc6ebc1769edc0394da4d7c3 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 14 May 2012 21:29:13 +0900 Subject: [PATCH 391/783] fix line folding --- vim_faq/vim_faq.jax | 64 ++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index c1133f20d..69a735b52 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -13,8 +13,8 @@ Frequently Asked Questions *faq* *FAQ* このVim FAQは、vim@vim.orgメーリングリストとcomp.editorsニューズグループに投稿 された質問とその答から作られました。Vimにおいて問題を解決する方法はいくつかあ ります。このFAQを読めば、その数種類の可能性のうちの1つが得られます。このFAQ中 -の情報とリンクを使って他の方法を探すこともできます。このFAQの答に対するクレジ -ットはPeppe, Benji, Charles Campbellと他多数の人々に帰属します。 +の情報とリンクを使って他の方法を探すこともできます。このFAQの答に対するクレ +ジットはPeppe, Benji, Charles Campbellと他多数の人々に帰属します。 *faq-index* 目次 @@ -674,10 +674,10 @@ Stevie に基づいています。 *faq-1.4* 1.4. Vim が Vi よりも向上している点は何ですか? -ここにあるのは短い要約です。以下のリストは Vim が徹底して現代的で、機能がぎゅ -っと詰め込まれたエディタであることを示すものです。今日のエディタの標準的な機能 -は実装されており、一般的なパワーユーザーやプログラマ向けの機能にも重点が置かれ -ています。 +ここにあるのは短い要約です。以下のリストは Vim が徹底して現代的で、機能がぎゅっ +と詰め込まれたエディタであることを示すものです。今日のエディタの標準的な機能は +実装されており、一般的なパワーユーザーやプログラマ向けの機能にも重点が置かれて +います。 Vi を現代化する機能: @@ -864,19 +864,19 @@ HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロー 2.5. ある問題が発生しました。それが私の設定によるものか、Vimそのものの 問題かはどうすればわかりますか? -まず、その問題があなたの.vimrcや.gvimrc、システムのvimrc、あなたのプラグインフ -ァイル、その他あなたの設定ファイルによるものかを調べなければなりません。そのた -めに > +まず、その問題があなたの.vimrcや.gvimrc、システムのvimrc、あなたのプラグイン +ファイル、その他あなたの設定ファイルによるものかを調べなければなりません。その +ために > $ vim -N -u NONE -U NONE < としてください。これはVimを'nocompatible'モードで起動し、あなたの個人的な .vimrcや.gvimrcファイルを読み込みません。あなたの個人的なプラグインも読み込み ません。これでVimを起動し、問題の再現を試みてください。もしこれで問題が再現で -きなければ、その問題はあなたの設定ファイルやプラグイン中の設定に関係しています -。設定ファイル中の問題の場所をつきとめるには、試行錯誤と設定ファイル中の1行1 -行をコメントアウトしてみなければなりません。Vimにコマンドライン引数-Vをつけて -起動するとデバッグ情報が得られ、問題を分析することができます: > +きなければ、その問題はあなたの設定ファイルやプラグイン中の設定に関係していま +す。設定ファイル中の問題の場所をつきとめるには、試行錯誤と設定ファイル中の1行 +1行をコメントアウトしてみなければなりません。Vimにコマンドライン引数-Vをつけ +て起動するとデバッグ情報が得られ、問題を分析することができます: > $ vim -V2 < @@ -945,8 +945,8 @@ Vim開発者メーリングリストvim-dev@vim.orgにパッチを送ってく 開発したり、新しいスクリプトやカラースキームを開発しました。これをアップ ロードできる公開のウェブサイトはありますか? -あります。Vim Onlineウェブサイトにプラグイン・スクリプト、カラースキーム、ティ -ップスなどをアップロードすることができます。そのサイトは +あります。Vim Onlineウェブサイトにプラグイン・スクリプト、カラースキーム、 +ティップスなどをアップロードすることができます。そのサイトは http://vim.sourceforge.netにあります。 ============================================================================= @@ -1108,8 +1108,8 @@ Vimにおけるモードの違いについては、以下を読めば情報を できます。ヘルプファイルを圧縮し、それをVimで表示することもできます。これを行 うとヘルプファイルにアクセスするのが少し遅くなり、"gzip"ユーティリティが必要に -なります。圧縮したVimヘルプファイルを使うには、以下のステップを行ってください -。 +なります。圧縮したVimヘルプファイルを使うには、以下のステップを行ってください。 + - "gzip doc/*.txt"として全てのヘルプファイルを圧縮する。 @@ -1569,8 +1569,8 @@ SECTION 8 - バッファ *faq-8.2* 8.2. バッファを切り替えるときに自動的に保存するよう設定するには? -'autowrite'オプションをセットすると、他のバッファに切り替えるとき変更されたバ -ッファを自動保存します: > +'autowrite'オプションをセットすると、他のバッファに切り替えるとき変更された +バッファを自動保存します: > :set autowrite < @@ -1661,8 +1661,8 @@ CTRL-Gの前にカウントを指定することに注意してください。 :echo bufnr("%") < -また、'statusline'オプションにフィールド"%n"を含めるとステータスラインにバッフ -ァ番号が表示されます。 +また、'statusline'オプションにフィールド"%n"を含めるとステータスラインにバッ +ファ番号が表示されます。 さらなる情報については以下を参照してください。 > @@ -2007,8 +2007,8 @@ g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで :set insertmode < -このオプションをセットするとVimをモードレスエディタとして使えるようになります -。<Esc>キーを押してもノーマルモードに移行しません。ノーマルモードコマンドを1つ +このオプションをセットするとVimをモードレスエディタとして使えるようになります。 +<Esc>キーを押してもノーマルモードに移行しません。ノーマルモードコマンドを1つ だけ実行するにはCTRL-Oを押してからノーマルモードコマンドをタイプします。1つ以 上のノーマルモードコマンドを実行するにはCTRL-Lに続けてそのコマンドをタイプしま す。インサートモードに戻るには<Esc>キーを押します。このオプションを無効にする @@ -4838,8 +4838,8 @@ Vimは構文強調する際にファイル全体をパースすることはし あなたの拡張を追加する場合、Vimに付属の構文ファイルそのものを修正するべきでは ありません。次のVimのバージョンをインストールしたとき、その変更が失われてしま -います。代わりに、~/.vim/after/syntaxディレクトリに元の構文ファイルと同名のフ -ァイルを作り、そこにあなたの拡張を加えるべきです。 +います。代わりに、~/.vim/after/syntaxディレクトリに元の構文ファイルと同名の +ファイルを作り、そこにあなたの拡張を加えるべきです。 さらなる情報については以下を参照してください。 > @@ -5118,8 +5118,8 @@ exists()を使えば環境変数の存在をチェックすることができま :help sub-replace-special < *faq-25.14* -25.14. 変数"bno"がバッファ番号を保持しています。この変数を使って対応するバッフ - ァを開くには? +25.14. 変数"bno"がバッファ番号を保持しています。この変数を使って対応するバッ + ファを開くには? ":buffer"は変数名を受け付けません。このコマンドはバッファ番号かバッファ名のみ を受け付けます。変数を評価して対応する値にするために":execute"を使わねばなりま @@ -6826,8 +6826,8 @@ Vimランタイムパッケージの一部です。Vimランタイムパッケ 35.9. GTK 2.03を使おうとしているのですが、Vimのconfigureがgtk-configがないとの メッセージを出します。しかしGTK2は一般的なpkg-configを使うようになったの で、これは正しいのです。gtk用のインクルードファイルとライブラリのリスト - を出力するpkg-configならありますが、なぜかconfigureスクリプトはこれを使 - ってくれません。 + を出力するpkg-configならありますが、なぜかconfigureスクリプトはこれを + 使ってくれません。 次のシェルスクリプトにgtk-configと名前をつけて使ってください: > @@ -6961,9 +6961,9 @@ Vimの起動時の画面を表示させなくするには、'shortmess'にフラ $ vim -c "argdo %s/ABC/DEF/ge | update" *.txt < -一連のコマンドをファイルに保存しておき、コマンドラインオプション"-s"を使ってフ -ァイルに対してそのコマンドを実行することもできます。例えば、mycmds.txtに一連の -コマンドを保存してあるとします。このとき次のようにできます: > +一連のコマンドをファイルに保存しておき、コマンドラインオプション"-s"を使って +ファイルに対してそのコマンドを実行することもできます。例えば、mycmds.txtに一連 +のコマンドを保存してあるとします。このとき次のようにできます: > $ vim -s mycmds.txt *.pl < From 486dafb94c8e09068fa89922b501e6dd8f4395b5 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 15 May 2012 02:51:06 +0900 Subject: [PATCH 392/783] remove 'list' from the mode line (Issue #51) --- vim_faq/vim_faq.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 69a735b52..99917538e 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -7157,4 +7157,4 @@ http://vim.sourceforge.net/tip_view.php?tip_id=246 < ============================================================================= - vim:tw=78:ts=8:ft=help:norl:list: + vim:tw=78:ts=8:ft=help:norl: From 2e694bc978b6d2dbe14c6c24db6ab07519567a6f Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 17 May 2012 20:20:55 +0900 Subject: [PATCH 393/783] #55: Added TranslateHelpExampleBlock() --- tools/makehtml.vim | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tools/makehtml.vim b/tools/makehtml.vim index faabb9b0a..46d31c35c 100644 --- a/tools/makehtml.vim +++ b/tools/makehtml.vim @@ -81,7 +81,7 @@ function! MakeHtml(fname) " set dumy highlight to keep syntax identity if !exists("s:attr_save") let s:attr_save = {} - for name in ["helpStar", "helpBar", "helpHyperTextEntry", "helpHyperTextJump", "helpOption"] + for name in ["helpStar", "helpBar", "helpHyperTextEntry", "helpHyperTextJump", "helpOption", "helpExample"] let s:attr_save[name] = synIDattr(synIDtrans(hlID(name)), "name") execute printf("hi %s term=bold cterm=bold gui=bold", name) endfor @@ -94,6 +94,7 @@ function! MakeHtml(fname) silent %s@<span class="\(helpHyperTextEntry\|helpHyperTextJump\|helpOption\)">\([^<]*\)</span>@\=s:MakeLink(lang, submatch(1), submatch(2))@ge silent %s@^<span class="Ignore"><</span>\ze @\ @ge silent %s@<span class="\(helpStar\|helpBar\|Ignore\)">[^<]*</span>@@ge + call s:TranslateHelpExampleBlock() " remove style g/^\.\(helpBar\|helpStar\|helpHyperTextEntry\|helpHyperTextJump\|helpOption\)/silent delete _ @@ -104,6 +105,27 @@ function! MakeHtml(fname) quit! endfunction +" <span>...</span> -> <div>... +" <span>...</span> ...</div> +function! s:TranslateHelpExampleBlock() + let mx = '^<span class="helpExample">\zs.*\ze</span><br>$' + let i = 1 + while i <= line('$') + if getline(i) =~ mx + let start = i + while i <= line('$') && getline(i) =~ mx + call setline(i, matchstr(getline(i), mx) . '<br>') + let i += 1 + endwhile + let end = i - 1 + call setline(start, '<div class="helpExample">' . getline(start)) + call setline(end, matchstr(getline(end), '.*\ze<br>') . '</div>') + else + let i += 1 + endif + endwhile +endfunction + function! s:Header() let name = fnamemodify(bufname("%"), ":r:r") let indexfile = s:GetIndexFile(bufname("%")) From 9d3e01ca2360437da5d9eda09149dc0c22c40291 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sat, 19 May 2012 19:46:51 +0900 Subject: [PATCH 394/783] update en/*.txt (partially) to 7.3.524 --- en/cmdline.txt | 12 +- en/helphelp.txt | 13 +- en/os_win32.txt | 6 +- en/pattern.txt | 12 +- en/pi_netrw.txt | 1061 +++++++---------------------------------------- en/usr_41.txt | 4 +- en/windows.txt | 8 +- 7 files changed, 176 insertions(+), 940 deletions(-) diff --git a/en/cmdline.txt b/en/cmdline.txt index 6aec69ec9..a66826512 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -330,12 +330,12 @@ terminals) :his[tory] [{name}] [{first}][, [{last}]] List the contents of history {name} which can be: - c[md] or : command-line history - s[earch] or / search string history - e[xpr] or = expression register history - i[nput] or @ input line history - d[ebug] or > debug command history - a[ll] all of the above + c[md] or : command-line history + s[earch] or / or ? search string history + e[xpr] or = expression register history + i[nput] or @ input line history + d[ebug] or > debug command history + a[ll] all of the above {not in Vi} If the numbers {first} and/or {last} are given, the respective diff --git a/en/helphelp.txt b/en/helphelp.txt index 25bf03aa0..437964d1e 100644 --- a/en/helphelp.txt +++ b/en/helphelp.txt @@ -1,4 +1,4 @@ -*helphelp.txt* For Vim version 7.3. Last change: 2010 Sep 14 +*helphelp.txt* For Vim version 7.3. Last change: 2012 May 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -218,11 +218,12 @@ files. Vim will search for all help in "doc" directories in 'runtimepath'. This is only available when compiled with the |+multi_lang| feature. At this moment translations are available for: - Chinese - multiple authors - French - translated by David Blanchet - Italian - translated by Antonio Colombo - Polish - translated by Mikolaj Machowski - Russian - translated by Vassily Ragosin + Chinese - multiple authors + French - translated by David Blanchet + Italian - translated by Antonio Colombo + Japanese - multiple authors + Polish - translated by Mikolaj Machowski + Russian - translated by Vassily Ragosin See the Vim website to find them: http://www.vim.org/translations.php A set of translated help files consists of these files: diff --git a/en/os_win32.txt b/en/os_win32.txt index 0452bfae0..4e1a02b4b 100644 --- a/en/os_win32.txt +++ b/en/os_win32.txt @@ -1,4 +1,4 @@ -*os_win32.txt* For Vim version 7.3. Last change: 2011 Aug 14 +*os_win32.txt* For Vim version 7.3. Last change: 2012 May 18 VIM REFERENCE MANUAL by George Reilly @@ -314,8 +314,8 @@ A. When using :! to run an external command, you can run it with "start": > not have to be closed before Vim. To avoid this special treatment, use ":! start". There are two optional arguments (see the next Q): - /min the window will be minimized. - /b" no console window will be opened + /min the window will be minimized + /b no console window will be opened You can use only one of these flags at a time. A second one will be treated as the start of the command. diff --git a/en/pattern.txt b/en/pattern.txt index 4283320c4..5c4a79020 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.3. Last change: 2011 Nov 26 +*pattern.txt* For Vim version 7.3. Last change: 2012 May 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -637,10 +637,10 @@ overview. */\@!* \@! Matches with zero width if the preceding atom does NOT match at the current position. |/zero-width| {not in Vi} - Like '(?!pattern)" in Perl. + Like "(?!pattern)" in Perl. Example matches ~ foo\(bar\)\@! any "foo" not followed by "bar" - a.\{-}p\@! "a", "ap", "aap", "app", etc. not immediately + a.\{-}p\@! "a", "ap", "app", "appp", etc. not immediately followed by a "p" if \(\(then\)\@!.\)*$ "if " not followed by "then" @@ -648,7 +648,7 @@ overview. does not match. "a.*p\@!" will match from an "a" to the end of the line, because ".*" can match all characters in the line and the "p" doesn't match at the end of the line. "a.\{-}p\@!" will match any - "a", "ap", "aap", etc. that isn't followed by a "p", because the "." + "a", "ap", "app", etc. that isn't followed by a "p", because the "." can match a "p" and "p\@!" doesn't match after that. You can't use "\@!" to look for a non-match before the matching @@ -667,7 +667,7 @@ overview. */\@<=* \@<= Matches with zero width if the preceding atom matches just before what follows. |/zero-width| {not in Vi} - Like '(?<=pattern)" in Perl, but Vim allows non-fixed-width patterns. + Like "(?<=pattern)" in Perl, but Vim allows non-fixed-width patterns. Example matches ~ \(an\_s\+\)\@<=file "file" after "an" and white space or an end-of-line @@ -691,7 +691,7 @@ overview. before what follows. Thus this matches if there is no position in the current or previous line where the atom matches such that it ends just before what follows. |/zero-width| {not in Vi} - Like '(?<!pattern)" in Perl, but Vim allows non-fixed-width patterns. + Like "(?<!pattern)" in Perl, but Vim allows non-fixed-width patterns. The match with the preceding atom is made to end just before the match with what follows, thus an atom that ends in ".*" will work. Warning: This can be slow (because many positions need to be checked diff --git a/en/pi_netrw.txt b/en/pi_netrw.txt index 1d4a09f3d..142f08f16 100644 --- a/en/pi_netrw.txt +++ b/en/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 7.3. Last change: 2012 Jan 26 +*pi_netrw.txt* For Vim version 7.3. Last change: 2012 Apr 05 ----------------------------------------------------- NETRW REFERENCE MANUAL by Charles E. Campbell, Jr. @@ -6,17 +6,16 @@ Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 1999-2011 Charles E Campbell, Jr *netrw-copyright* - Permission is hereby granted to use and distribute this code, with - or without modifications, provided that this copyright notice is - copied with it. Like anything else that's free, netrw.vim, - netrwPlugin.vim, netrwFileHandlers.vim, netrwSettings.vim, - syntax/netrw.vim, and pi_netrw.txt are provided *as is* and comes - with no warranty of any kind, either expressed or implied. No - guarantees of merchantability. No guarantees of suitability for - any purpose. By using this plugin, you agree that in no event will - the copyright holder be liable for any damages resulting from the - use of this software. +Copyright: Copyright (C) 1999-2012 Charles E Campbell, Jr *netrw-copyright* + The VIM LICENSE applies to the files in this package, including + netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and + syntax/netrw.vim. Like anything else that's free, netrw.vim and its + associated files are provided *as is* and comes with no warranty of + any kind, either expressed or implied. No guarantees of + merchantability. No guarantees of suitability for any purpose. By + using this plugin, you agree that in no event will the copyright + holder be liable for any damages resulting from the use of this + software. Use at your own risk! *dav* *ftp* *netrw-file* *rcp* *scp* @@ -43,7 +42,7 @@ Copyright: Copyright (C) 1999-2011 Charles E Campbell, Jr *netrw-copyright* 5. Activation...........................................|netrw-activate| 6. Transparent Remote File Editing......................|netrw-transparent| 7. Ex Commands..........................................|netrw-ex| -8. Variables and Options................................|netrw-settings| +8. Variables and Options................................|netrw-variables| 9. Browsing.............................................|netrw-browse| Introduction To Browsing...........................|netrw-intro-browse| Quick Reference: Maps..............................|netrw-browse-maps| @@ -141,6 +140,16 @@ and has lines resembling > ... default login USERID password "PASSWORD" < +Windows' ftp doesn't support .netrc; however, one may have in one's .vimrc: > + + let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' +< +Netrw will substitute the host's machine name for MACHINE from the url it is +attempting to open, and so one may specify > + userid + password +for each site in a separate file in c:\Users\Myself\. + Now about browsing -- when you just want to look around before editing a file. For browsing on your current host, just "edit" a directory: > @@ -309,7 +318,12 @@ CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass* {{{2 :call NetUserPass("uid","password") -- sets global uid and password NETRW VARIABLES AND SETTINGS *netrw-variables* {{{2 -(also see: |netrw-browser-var| |netrw-protocol| |netrw-settings|) + (Also see: + |netrw-browser-var| : netrw browser option variables + |netrw-protocol| : file transfer protocol option variables + |netrw-settings| : additional file transfer options + |netrw-browser-options| : these options affect browsing directories + ) Netrw provides a lot of variables which allow you to customize netrw to your preferences. One way to look at them is via the command :NetrwSettings (see @@ -318,96 +332,102 @@ settings are described below, in |netrw-browser-options|, and in |netrw-externapp|: *b:netrw_lastfile* last file Network-read/written retained on a - per-buffer basis (supports plain :Nw ) + per-buffer basis (supports plain :Nw ) *g:netrw_bufsettings* the settings that netrw buffers have - (default) noma nomod nonu nowrap ro nobl + (default) noma nomod nonu nowrap ro nobl *g:netrw_chgwin* specifies a window number where file edits will take - place. (also see |netrw-C|) - (default) not defined + place. (also see |netrw-C|) + (default) not defined *g:Netrw_funcref* specifies a function (or functions) to be called when - netrw edits a file. The file is first edited, and - then the function reference (|Funcref|) is called. - This variable may also hold a |List| of Funcrefs. - (default) not defined. (the capital in g:Netrw... - is required by its holding a function reference) + netrw edits a file. The file is first edited, and + then the function reference (|Funcref|) is called. + This variable may also hold a |List| of Funcrefs. + (default) not defined. (the capital in g:Netrw... + is required by its holding a function reference) > Example: place in .vimrc; affects all file opening fun! MyFuncRef() endfun let g:Netrw_funcref= function("MyFuncRef") < - *g:netrw_ftp* if it doesn't exist, use default ftp - =0 use default ftp (uid password) - =1 use alternate ftp method (user uid password) - If you're having trouble with ftp, try changing the - value of this variable to see if the alternate ftp - method works for your setup. + *g:netrw_ftp* if it doesn't exist, use default ftp + =0 use default ftp (uid password) + =1 use alternate ftp method (user uid password) + If you're having trouble with ftp, try changing the + value of this variable to see if the alternate ftp + method works for your setup. + + *g:netrw_ftp_options* Chosen by default, these options are supposed to turn + interactive prompting off and to restrain ftp from + attempting auto-login upon initial connection. + However, it appears that not all ftp implementations + support this (ex. ncftp). + ="-i -n" *g:netrw_ftpextracmd* default: doesn't exist - If this variable exists, then any string it contains - will be placed into the commands set to your ftp - client. As an example: - ="passive" + If this variable exists, then any string it contains + will be placed into the commands set to your ftp + client. As an example: + ="passive" *g:netrw_ftpmode* ="binary" (default) - ="ascii" + ="ascii" *g:netrw_ignorenetrc* =0 (default for linux, cygwin) - =1 If you have a <.netrc> file but it doesn't work and - you want it ignored, then set this variable as - shown. (default for Windows + cmd.exe) + =1 If you have a <.netrc> file but it doesn't work and + you want it ignored, then set this variable as + shown. (default for Windows + cmd.exe) *g:netrw_menu* =0 disable netrw's menu - =1 (default) netrw's menu enabled + =1 (default) netrw's menu enabled *g:netrw_nogx* if this variable exists, then the "gx" map will not - be available (see |netrw-gx|) + be available (see |netrw-gx|) *g:netrw_uid* (ftp) user-id, retained on a per-vim-session basis - *s:netrw_passwd* (ftp) password, retained on a per-vim-session basis + *s:netrw_passwd* (ftp) password, retained on a per-vim-session basis *g:netrw_preview* =0 (default) preview window shown in a horizontally - split window - =1 preview window shown in a vertically split window. - Also affects the "previous window" (see |netrw-P|) in - the same way. + split window + =1 preview window shown in a vertically split window. + Also affects the "previous window" (see |netrw-P|) in + the same way. - *g:netrw_scpport* = "-P" : option to use to set port for scp - *g:netrw_sshport* = "-p" : option to use to set port for ssh + *g:netrw_scpport* = "-P" : option to use to set port for scp + *g:netrw_sshport* = "-p" : option to use to set port for ssh - *g:netrw_sepchr* =\0xff - =\0x01 for enc == euc-jp (and perhaps it should be for - others, too, please let me - know) - Separates priority codes from filenames internally. - See |netrw-p12|. + *g:netrw_sepchr* =\0xff + =\0x01 for enc == euc-jp (and perhaps it should be for + others, too, please let me know) + Separates priority codes from filenames internally. + See |netrw-p12|. *g:netrw_silent* =0 : transfers done normally - =1 : transfers done silently + =1 : transfers done silently *g:netrw_use_errorwindow* =1 : messages from netrw will use a separate one - line window. This window provides reliable + line window. This window provides reliable delivery of messages. (default) =0 : messages from netrw will use echoerr ; messages don't always seem to show up this way, but one doesn't have to quit the window. *g:netrw_win95ftp* =1 if using Win95, will remove four trailing blank - lines that o/s's ftp "provides" on transfers - =0 force normal ftp behavior (no trailing line removal) + lines that o/s's ftp "provides" on transfers + =0 force normal ftp behavior (no trailing line removal) - *g:netrw_cygwin* =1 assume scp under windows is from cygwin. Also - permits network browsing to use ls with time and - size sorting (default if windows) - =0 assume Windows' scp accepts windows-style paths - Network browsing uses dir instead of ls - This option is ignored if you're using unix + *g:netrw_cygwin* =1 assume scp under windows is from cygwin. Also + permits network browsing to use ls with time and + size sorting (default if windows) + =0 assume Windows' scp accepts windows-style paths + Network browsing uses dir instead of ls + This option is ignored if you're using unix *g:netrw_use_nt_rcp* =0 don't use the rcp of WinNT, Win2000 and WinXP - =1 use WinNT's rcp in binary mode (default) + =1 use WinNT's rcp in binary mode (default) PATHS *netrw-path* {{{2 @@ -512,12 +532,13 @@ which contains ftp commands which will be automatically run whenever ftp starts. You may use this feature to enter a user and password for one site: > userid password +< *netrw-windows-netrc* *netrw-windows-s* If |g:netrw_ftp_cmd| contains -s:[path/]MACHINE, then (on Windows machines only) -netrw will substitute the current machine name requested for ftp connection +netrw will substitute the current machine name requested for ftp connections for MACHINE. Hence one can have multiple machine.ftp files containing login and password for ftp. Example: > - g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' + let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' vim ftp://myhost.somewhere.net/ will use a file > C:\Users\Myself\myhost.ftp @@ -616,6 +637,9 @@ password. readable for others. Don't forget that the system administrator can still read the file! Ie. for Linux/Unix: chmod 600 .netrc +Even though Windows' ftp clients typically do not support .netrc, netrw has +a work-around: see |netrw-windows-s|. + PASSWORD *netrw-passwd* @@ -720,11 +744,10 @@ below, a {netfile} is an url to a remote file. ============================================================================== -8. Variables and Options *netrw-settings* {{{1 +8. Variables and Options *netrw-var* *netrw-settings* {{{1 (also see: |netrw-options| |netrw-variables| |netrw-protocol| - |netrw-browser-settings| |netrw-browser-options| - |netrw-browser-var| ) + |netrw-browser-settings| |netrw-browser-options| ) The <netrw.vim> script provides several variables which act as options to affect <netrw.vim>'s file transfer behavior. These variables typically may be @@ -1222,6 +1245,18 @@ As an example, by putting the following line in your .vimrc, > let g:netrw_liststyle= 4 the tree style will become your default listing style. +One typical way to use the netrw tree display is to: > + + vim . + (use i until a tree display shows) + navigate to a file + v (edit as desired in vertically split window) + ctrl-w h (to return to the netrw listing) + P (edit newly selected file in the previous window) + ctrl-w h (to return to the netrw listing) + P (edit newly selected file in the previous window) + ...etc... +< Associated setting variables: |g:netrw_liststyle| |g:netrw_maxfilenamelen| |g:netrw_timefmt| |g:netrw_list_cmd| @@ -1395,7 +1430,7 @@ to remove it again using the g:netrw_rmf_cmd variable. Its default value is: g:netrw_rmf_cmd: ssh HOSTNAME rm -f Related topics: |netrw-d| -Associated setting variable: |g:netrw_local_rmdir| |g:netrw_rm_cmd| +Associated setting variable: |g:netrw_localrmdir| |g:netrw_rm_cmd| |g:netrw_rmdir_cmd| |g:netrw_ssh_cmd| @@ -1727,13 +1762,13 @@ MAKING A NEW DIRECTORY *netrw-d* {{{2 With the "d" map one may make a new directory either remotely (which depends on the global variable g:netrw_mkdir_cmd) or locally (which depends on the -global variable g:netrw_local_mkdir). Netrw will issue a request for the new +global variable g:netrw_localmkdir). Netrw will issue a request for the new directory's name. A bare <CR> at that point will abort the making of the directory. Attempts to make a local directory that already exists (as either a file or a directory) will be detected, reported on, and ignored. Related topics: |netrw-D| -Associated setting variables: |g:netrw_local_mkdir| |g:netrw_mkdir_cmd| +Associated setting variables: |g:netrw_localmkdir| |g:netrw_mkdir_cmd| |g:netrw_remote_mkdir| @@ -2058,6 +2093,12 @@ your browsing preferences. (see also: |netrw-settings|) history. (related: |netrw-qb| |netrw-u| |netrw-U|) + *g:netrw_errorlvl* =0: error levels greater than or equal to + this are permitted to be displayed + 0: notes + 1: warnings + 2: errors + *g:netrw_fastbrowse* =0: slow speed directory browsing; never re-uses directory listings, always obtains directory listings. @@ -2116,7 +2157,7 @@ your browsing preferences. (see also: |netrw-settings|) unix or g:netrw_cygwin set: : "ls -tlF" otherwise "dir" - *g:netrw_glob_escape* ='[]*?`{~$' (unix) + *g:netrw_glob_escape* ='[]*?`{~$' (unix) ='[]*?`{$' (windows These characters in directory names are escaped before applying glob() @@ -2162,10 +2203,10 @@ your browsing preferences. (see also: |netrw-settings|) Moves marked files (|netrw-mf|) to target directory (|netrw-mt|, |netrw-mm|) - *g:netrw_local_mkdir* command for making a local directory + *g:netrw_localmkdir* command for making a local directory default: "mkdir" - *g:netrw_local_rmdir* remove directory command (rmdir) + *g:netrw_localrmdir* remove directory command (rmdir) default: "rmdir" *g:netrw_maxfilenamelen* =32 by default, selected so as to make long @@ -2246,7 +2287,7 @@ your browsing preferences. (see also: |netrw-settings|) \.info$,\.swp$,\.obj$' *g:netrw_special_syntax* If true, then certain files will be shown - in special syntax in the browser: + using special syntax in the browser: netrwBak : *.bak netrwCompress: *.gz *.bz2 *.Z *.zip @@ -2354,7 +2395,7 @@ settings. You may change any of their values; when you save the file, the settings therein will be used. One may also press "?" on any of the lines for help on what each of the variables do. -(also see: |netrw-browser-var| |netrw-protocol| |netrw-settings| |netrw-variables|) +(also see: |netrw-browser-var| |netrw-protocol| |netrw-variables|) ============================================================================== @@ -2414,8 +2455,8 @@ These will: 1. Make vertical splitting the default for previewing files 2. Make the default listing style "tree" 3. When a vertical preview window is opened, the directory listing - will use only 30 columns; the rest of the window is used for the - preview window. + will use only 30% of the columns available; the rest of the window + is used for the preview window. PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2 @@ -2841,6 +2882,28 @@ which is loaded automatically at startup (assuming :set nocp). ============================================================================== 12. History *netrw-history* {{{1 + v145: Apr 05, 2012 * moved some command from a g:netrw_local_... + format to g:netwr_local... format + * included some NOTE level messages about + commands that aren't executable + * |g:netrw_errorlvl| (default: NOTE=0) + option introduced + v144: Mar 12, 2012 * when |CTRL-W_s| or |CTRL-W_v| are used, + or their wincmd equivalents, on a netrw + buffer, the netrw's w: variables were + not copied over. Fixed. + Mar 13, 2012 * nbcd_curpos_{bufnr('%')} was commented + out, and was mistakenly used during + RestorePosn. Unfortunately, I'm not + sure why it was commented out, so this + "fix" may re-introduce an earlier problem. + Mar 21, 2012 * included s:rexposn internally to make + :Rex return the cursor to the same pos'n + upon restoration of netrw buffer + Mar 27, 2012 * (sjbesse) s:NetrwGetFile() needs to remove + "/" from the netrw buffer's usual |'isk'| + in order to allow "filetype detect" to work + properly for scripts. v143: Jun 01, 2011 * |g:netrw_winsize| will accept a negative number; the absolute value of it will then be used to specify lines/columns instead of @@ -2865,843 +2928,11 @@ which is loaded automatically at startup (assuming :set nocp). now permits the "@" to be part of the user id (if there's an @ that appears to the right). - v142: Apr 06, 2011 * I modified NetrwRemoteListing() to use - shellescape(fnameescape(s:path),1) for - the benefit of those using scp://.../ - with subdirectories having spaces. - Problem reported by: Gilles Charron - Apr 18, 2011 * s:NetrwMethod() attempts to issue an - error message when given a malformed url - Apr 29, 2011 * converted most mousemaps to use <Plug>s - * |g:netrw_winsize|'s meaning changed - v141: Aug 28, 2010 * added -s:... support for Windows ftp - * restored 2-leftmouse for :Rex-like return - * added balloon help for banner - Oct 26, 2010 * :Texplore changed to start from netrw's idea - of the current directory, not pwd's - Feb 10, 2011 * netrwPlugin modified to use BufReadCmd - when the "filename" ends with a "/" or a "\" - Avoids "... is a directory" message, works - inside a try-catch-endtry clause. - Feb 22, 2011 * for menus, &go =~# used to insure correct case - Apr 01, 2011 * changed g:netrw_cursorcolumn to g:netrw_cursor - In addition, there's more supported settings for - it. - v140: Jul 27, 2010 * (Lech Lorens) unexpected change of window - v139: May 14, 2010 * when viewing remote directory listings and - changing listing style, going to tree listing - mode was issuing two rather useless messages - about the buffer name. They have now been - silenced. - * (Jean Johner) with "behave mswin", clicking - on a filename in wide mode opened a new file - with a missing first letter - * (Britton Kerin) wanted netrw listings to be - buflisted; the |g:netrw_bufsettings| option - permits that. - Jun 18, 2010 * (Jan Steffens) added support for xz compression - Jun 23, 2010 * vimdiff dir1 dir2 now works - Jul 27, 2010 * (John Orr) pointed out that the intended maparg - test for gx was actually testing for g rather - than gx. Fixed. - v138: May 01, 2010 * added the bomb setting to the Save-Set-Restore - option handling (for Tony M) - May 14, 2010 * (Bram Moolenaar) netrw optionally sets cursorline - (and sometimes cursorcolumn) for its display. - This option setting was leaking through with - remote file handling. - v137: Dec 28, 2009 * modified the preview window handling for - vertically split windows. The preview - window will take up all but g:netrw_winsize - columns of the original window; those - g:netrw_winsize columns will be used for - the netrw listing. - * (Simon Dambe) removed "~" from - |g:netrw_glob_escape| under Windows - * (Bram Moolenaar) modified test for status bar - click with leftmouse. Moved code to - s:NetrwLeftmouse(). - Feb 24, 2010 * (for Jean Johner) added insert-mode maps; one - can get into insert mode with netrw via - ctrl-o :e . - Mar 15, 2010 * (Dominique Pellé) Directory with backslashes such - as foo\bar were not being entered/left properly - Mar 15, 2010 * Using :Explore .. and causing two FocusGained - events caused the directory to change. Fixed. - Mar 22, 2010 * Last fix caused problems for *//pat and */filepat - searches. - Mar 30, 2010 * With :set hidden and changing listing styles 8 - times, the tree listing buffer was being marked - as modified upon exit. Fixed. - v136: Jan 14, 2009 * extended |g:Netrw_funcref| to also handle lists - of function references - Jan 14, 2009 * (reported by Marvin Renich) with spell check - enabled, some filenamess will still being - displayed as spelling errors. - Apr 13, 2009 * (Björn Winckler) writing a file using - remote scp caused syntax highlighting problem. - Solution: avoid syntax/syntax.vim's - au Filetype * syntax setting autocommand by - checking that the current buffer has the - netrw filetype before attempting a doau - in s:NetrwSafeOptions(). - Apr 14, 2009 * (asgeo1) suggested the "T" map (|netrw-T|) - Apr 14, 2009 * marking wasn't working on executable and - other special filenames - Apr 20, 2009 * (Dennis Benzinger) files opened via http have - their syntax filetype auto-detected - Jun 19, 2009 * (Yukihiro Nakadaira) help document improvements - Jul 22, 2009 * g:netrw_browse_split will honor the - |'equalalways'| setting. - Jul 29, 2009 * implemented "I" mapping to toggle banner - (this is experimental and still being debugged) - Sep 19, 2009 * (Mike McEwan) writes via ftp now send both - g:netrw_ftpmode and g:netrw_ftpextracmd (if the - latter exists) - Dec 02, 2009 * netrw uses vimgrep several places; it now uses - "noautocmd vimgrep" (should be speedier). - Dec 03, 2009 * changed back to using -source instead of -dump - for elinks-using commands. (requested by James - Vega and Karsten Hopp) - v135: Oct 29, 2008 * using |simplify()| on directory names - (supporting handling ".."s in directory names) - Oct 31, 2008 * added special file highlighting for core dumps - under Unix/Linux. The default sorting sequence - now also gives core dumps priority. - Nov 10, 2008 * uses a call to netrw#Nread() instead of Nread - to avoid having to use fnameescape() - * fixed a tree redrawing problem (open directory, - open subdir, close subdir, close dir) - Nov 19, 2008 * sprinkled some histdel("/",-1)s through the code - in an attempt to prevent netrw from changing - the search history. - Jan 02, 2009 * |g:Netrw_funcref| included - Jan 05, 2009 * Explore */ **/ *// **// all clear explorer - variables - Jan 05, 2009 * (Panagiotis Louridas) extended s:WinPath() - to remove cygdrive from non-cygwin Windows - paths. Improved the determination as to - whether or not to do so. - Jan 13, 2009 * included contains=@NoSpell in every syntax - group for syntax/netrw.vim . - v134: Sep 30, 2008 * (Sander Marechal) provided a bugfix involving - the use of the |netrw-t| command with a remote - directory. - Sep 30, 2008 * using "x" on a remote jpg was failing; fixed. - Oct 03, 2008 * bookmarks now go on a list and are stored to - the first directory on the |'runtimepath'| in - the hopes of making their retention reliable. - History now also goes to that directory. - Oct 07, 2008 * Included check that vim 7.0 or later is in use. - Oct 07, 2008 * Improved |g:netrw_retmap| handling. - Oct 12, 2008 * Based upon Sébastien Migniot's suggestion, if - cadaver isn't available then netrw will try to - use curl for the dav://... protocol. - Oct 13, 2008 * added @*/ to netrw buffers' |'iskeyword'|setting - This lets mf (|netrw-mf|) mark directories, links - and executables. - Oct 13, 2008 * avoids a second NetrwBrowse() refresh when - g:netrw_fastbrowse is <= 1 (slow, medium speed) - Oct 22, 2008 * |g:netrw_http_xcmd| may now be overridden - independently of |g:netrw_http_cmd|. - Oct 23, 2008 * [N] added to the various Explore commands to - let users specify the width/height of new - explorer windows, overriding |g:netrw_winsize|. - v133: Aug 10, 2008 * NetReadFixup() for win95 was missing some "a:"s - Aug 12, 2008 * (Jan Minář) an error condition in NetrwMethod() - wasn't being used, resulting in "b:netrw_fname - undefined" errors - Aug 12, 2008 * (François Ingeirest) asked that "hi link" be - changed to hi default link in the netrw syntax - files. - Aug 12, 2008 * using s:NetrwUnmarkList() more often. Filenames - were being left on the global list when removed - from the buffer-local lists. - Aug 14, 2008 * (Joshua Clayton) an errant extra ")" was left in - the rcp-handling portion of NetRead(). - Sep 03, 2008 * added |'cursorline'| highlighting to thin, long, - and tree displays. - v132: Aug 06, 2008 * Fixed marked file-based obtain - Aug 08, 2008 * sourcing a file via ftp from a netrw-generated - buffer (or any buffer with |'nobl'|) left an - empty no-name buffer in its wake. Fixed. - v130: Jul 31, 2008 * trying out elinks/links for http://host/ - requests. One problem: in-page links - (such as with ...#LABEL) are not supported - * verified that Bram's modified netrwPlugin works - Aug 01, 2008 * fixed a bug: when sourcing a file via ftp, the - "filter window" was left behind. - v129: Jul 31, 2008 * bug found in non-mouse enabled vim and some - local maps - v128: Jul 30, 2008 * much work done in using shellescape() and - fnameescape() - v126: Jun 30, 2008 * after having gone to a remote directory, - <f1> was no longer taking one to the correct - entry in the help (|netrw-quickhelp|). Fixed. - Jul 01, 2008 * extracting the last filename from a wide listing - missed the last letter when |'virtualedit'| not - enabled. - Jul 01, 2008 * vim foo/bar was creating [Scratch] buffers, - where bar was also a directory - Jul 01, 2008 * numerous additional changes were made to netrw - to use fnameescape() and shellescape() instead - of escape(). Not all changes have been tested - as yet... - Jul 01, 2008 * (James Vega reported) some problems with - :NetrwSettings (due to no longer used setting - variables). - Jul 07, 2008 * Additional numerous changes to support security; - shellescape(arg,1), etc. - v125: Apr 07, 2008 * (Cristian Rigamonti) CR provides a patch; he - noted that gx was failing since its call to - netrw#NetBrowseX() wasn't updated to - netrw#NetrwBrowseX(). - * (Stanis Trendelenburg) ST provides a patch to - supports davs: (dav + ssl) - * (Rick Choi) noted that directory names comprised - of three digits were not being displayed by - the internal browser. Fixed. - * (Erik Falor) provided a patch to handle problems - with changing directory and |'acd'| option. - * (James Vega, Teemu Likonen) noted that netrw - wasn't handling multi-byte filenames/directories - correctly. Fixed. - * (Rick) found problem with g:netrw_maxfilenamelen - being overridden. - * (James Vega) pointed out that netrw was - misidentifying all files in a symbolically linked - directory as being symbolically linked - themselves. This particular problem was fixed; - however, there are now situations where - symbolically linked files will not be detected. - Really need an internal vim function to do this - identification. - Apr 17, 2008 * When g:netrw_keepdir==0, current directory - doesn't necessarily equal b:netrw_curdir - initially. Problem is due to the patch directly - above. - * Fixed qf to handle case where b:netrw_curdir - isn't the same as the current directory under - linux/macosx. - * New: |netrw-mg| (apply vimgrep to marked files) - May 05, 2008 * (Rick) pointed out that a "setlocal ts=32" was - interfering with g:netrw_maxfilenamelen - May 05, 2008 * (James Vega) a file inside a linked directory - was showing up as a symbolic link itself. - May 22, 2008 * symbolic links, fifos, and sockets are now - indicated by a trailing @, |, or =, respectively. - Jun 06, 2008 * Removed numerous bugs from the marked file - move and copy. Tested these changes under - Unix only thus far. - * :Rexplore returns to the screen position in the - netrw listing from whence the file was edited - v124: Apr 02, 2008 * (Adrian Rollett) change the line supporting the - "x" action for mac to use g:netrw_shq - v123: Feb 27, 2008 * Marked files now keeps a "global" marked file - list. The global marked file list is used to - support tag processing and vimdiff'ing - (|netrw-md| |netrw-mt|) - * Been insuring that mm and mc works with various - combinations of local and remote directories - * (Stefan Bittner) http://.../ should always have - filetype "html" -- fixed. - * (Stefan Bittner) a "?" in a http://.../ request - wasn't being handled correctly. Fixed by - removing ? from default |g:netrw_tmpfile_escape|. - * (Nico Weber) % codes in http://.../ requests - weren't being handled correctly. Fixed by - including % in default |g:netrw_fname_escape|. - * (Stefan Bittner) attempts to update Buffers.Refresh - were failing because locale use changed the menu - names. I implemented a workaround. - v122: Feb 12, 2008 * bugfix - first sorting sequence match now has - priority - Feb 14, 2008 * bugfix - sorting sequence was effectively ignoring - sequencing priority of anything following '*' - * toggling a marked file was showing incorrect list - (list was correct, but displayed matches weren't) - * |g:netrw_special_syntax| implemented - v121: Feb 11, 2008 * Bram M reported that :e file ... :e . would not - retain the alternate file. Fixed -- I hope! - * bugfix -- apparently v120 broke an explicit - :Explore dirname - v120: Jan 21, 2008 * |netrw-mt| changed to allow for target selection - based on whether or not word under cursor is a - directory or file, or if cursor is in banner - area. - * |netrw-mh| included (hiding by marked-file suffix) - * functions moved about a bit (improved - categorization) - * executable files now displayed with trailing (*) - * symbolically linked files now displayed with - trailing (@) - * Somewhen, s:NetrwMarkFileMove() got damaged. It - * is now restored (missing an endif, for example). - * |netrw-mu| implemented (unmarking marked files) - * many bugs have been removed from the marked file - system (tnx to Mark S. for feedback) - * |netrw-ms| implemented (sourcing marked files) - * fixed use of P with tree listing style - * multiple tree listing now supported - * ./ suppressed - * changed q -> qb (query bookmarks) - * implemented |netrw-qf| - * Explore now has four special list-generation - modes: */filepat **/filepat - *//pattern **//pattern - * gh (|netrw-gh|) is a shortcut for toggling the - hiding of files and directories beginning with a - dot - v119: Jan 10, 2008 * When g:netrw_keepdir is false, - NetrwOptionsRestore() had a problem - (Bill McCarthy) - Jan 11, 2008 * Netrw now shows symbolic links with a trailing - "@" and special highlighting. - Jan 15, 2008 * Changed g:netrw_noretmap -> |g:netrw_retmap|. - Changed: disabled by default at Bram's - preference. - v118: Jan 02, 2008 * Fixed a problem with Windows; - :Explore c:/path/ would not work, - but :Explore c:/path would. - * Fixed a bug in s:NetrwOptionRestore() - lcd's - argument wasn't being properly escaped so it - wouldn't handle spaces in directory names. - (Gary Johnson) - v117: Jan 02, 2008 * Fixed a problem with P; had to include - a b:netrw_curdir bypass (Bram Moolenaar) - v116: Nov 27, 2007 * netrw#LocalBrowseCheck() has &ft=="netrw" - check to prevent doing a directory listing - (was getting unexpected directory refreshes - in the middle of some function calls) - * NetrwOptionRestore moved after e! filename - in order to retain user options for editing - in s:NetrwBrowseChgDir() - Dec 12, 2007 * Bug fix -- netrw does a better job of retaining - user options when editing files under the aegis - of the browser - v115: Oct 04, 2007 * Erik Remmelzwaal pointed out that the use of - shellslash in s:GetTempfile() was incorrect - Oct 11, 2007 * Tracked down and eliminated a bug with editing - remote *.tar.gz and *.tar.bz2 files - Oct 11, 2007 * g:netrw_localmovecmd wasn't being initialized - properly, and g:netrw_localcopycmd was being - overwritten. - Oct 12, 2007 * Placed all :Rexplore and <2-leftmouse> setup - in a new support function (s:SetRexDir()). - Oct 15, 2007 * new: g:netrw_browse_split == 4; means <cr> - based selection will use previous window - Oct 20, 2007 * also checks on |'shellxquote'| to set g:netrw_shq - Oct 24, 2007 * Explore handles path/**/filename - Oct 27, 2007 * sourcing remote files often didn't work with ftp, - turns out that b:netrw_method was undefined, so - s:SaveBufVars and s:RestoreBufVars() fixed it. - v114: Sep 28, 2007 * mT, the map that invokes tags, has been improved - to support use of remote tags files. - Oct 02, 2007 * changed Netrw menu to use more submenus - v113: Sep 07, 2007 * worked out why the cursor position wasn't being - saved and restored as intended after doing such - things as deleting and renaming files. - Sep 11, 2007 * Fixed bug which effectively disabled <c-l> and - <c-h> maps - Sep 18, 2007 * there used to be one NetrwOptionRestore() call at - the end of the s:NetrwBrowseChgDir() function; - they're now at the end of every if..elseif..else - block. The edit-a-file one is not quite at the end - of its block; instead, it's just before the edit. - Restores user options, then this new placement - allows ftplugins, autocmds, etc to change settings - (ex. ftplugin/cpp.vim sets cindent). - Sep 19, 2007 * changed all strlen() calls to use s:Strlen(), a - function which handles utf-8 wide characters - correctly. - Sep 20, 2007 * (Nico Weber) the "x" command has been extended - to Mac's OS/X (macunix); it now uses open to - handle |netrw-x| browsing with special files. - Sep 22, 2007 * Added g:netrw_noretmap to netrw at Tony M's - request. - * Included path to NetrwRemoteRmFile() - v112: Aug 18, 2007 * added mx (|netrw-mx|) for executing arbitrary - commands on marked files - Aug 22, 2007 * more option save/restore work for - s:NetrwBrowseChgDir(); s:NetrwOptionSave() - and s:NetrwOptionRestore() now take a parameter - specifying the type of variables to be used for - saving and restoring (either "w:" or "s:") - Sep 04, 2007 * added the :NetrwClean[!] command - v111: Jul 25, 2007 * using Windows but not using Cygwin, netrw does a - "file bufname" where the bufname uses /s - instead of \s; Vim "fixes" it by changing the - bufname to use \s anyway. This meant that - NetrwGetBuffer() didn't find the appropriately - named buffer, and so would generate a new - buffer listing; hence the cursor would appear - to have been moved when doing a preview. - * added <2-leftmouse> map to return to netrw's - browser display - Aug 16, 2007 * added the mark-file system, including - maps for mf mp mt mz and mu. Modifications - made to maps for a D O and R to support - marked files. - v110: May 10, 2007 * added [ and ] maps to NetrwTreeListing - May 25, 2007 * |g:netrw_preview| included - May 29, 2007 * modified netrw#NetBrowseX to consistently use - g:netrw_shq instead of hardcoded quotes, - and modified the snippet that sets up redir - so Windows machines use "nul" instead of - "/dev/null". - Jun 01, 2007 * fixed bug -- NetGetBuffer() wasn't always - recognizing a buffer name match when it should, - thus resulting in [Scratch] buffers. - Jun 04, 2007 * Gary Johnson found a bugfix for the "c" mapping - when the directory is to be made current but - the name contains spaces. - v109: Mar 26, 2007 * if a directory name includes a "$" character, - Explore() will use expand() in an attempt to - decipher the name. - May 07, 2007 * g:netrw_use_errorwindow now allows one to - have error messages go to a reliable window - or to use a less reliable but recallable - echoerr method - May 07, 2007 * g:netrw_scpport and g:netrw_sshport support - use of -P and -p, respectively, to set port - for scp/ssh. - v108: Jan 03, 2007 * included preview map (|netrw-p|), supporting - remote browsing - * netrw can now source remote files - Jan 26, 2007 * Colton Jamieson noted that remote directory - browsing did not support alternate port - selection. This feature has now been extended - to apply to all remote browsing commands via ssh. - (list, remove/delete, rename) - Jan 31, 2007 * Luis Florit reported that @* was an invalid - register. The @* register is now only saved and - restored if |'guioptions'| contains "a". - Feb 02, 2007 * Fixed a bug that cropped up when writing files - via scp using cygwin - Feb 08, 2007 * tree listing mode managed to stop working again; - fixed again! - Feb 15, 2007 * Guido Van Hoecke reported that netrw didn't - handle browsing well with M$ ftp servers. He even - set up a temporary account for me to test with - (thanks!). Netrw now can browse M$ ftp servers. - v107: Oct 12, 2006 * bypassed the autowrite option - Oct 24, 2006 * handles automatic decompression of *.gz and *.bz2 - files - Nov 03, 2006 * Explore will highlight matching files when - **/pattern is used (and if the |'hls'| option - is set) - Nov 09, 2006 * a debugging line, when enabled, was inadvertently - bringing up help instead of simply reporting on - list contents - Nov 21, 2006 * tree listing improved (cursor remains put) - Nov 27, 2006 * fixed b:netrw_curdir bug when repeated "i"s were - pressed. - Dec 15, 2006 * considerable qty of changes, mostly to share more - code between local and remote browsing. Includes - support for tree-style listing for both remote - and local browsing. - Dec 15, 2006 * Included Peter Bengtsson's modifications to - support the Amiga. - v106: Sep 21, 2006 * removed old v:version<700 code as netrw now - requires vim 7.0 - * worked around a bug where register * was - overwritten during local browsing - v104: Sep 05, 2006 * as suggested by Rodolfo Borges, :Explore and - variants will position the cursor on the file - just having been edited - * changed default |g:netrw_sort_sequence| order - * changed b, Nb to simply mb (see |netrw-mb|) - * changed B, NB to simply gb (see |netrw-gb|) - * tree listing style (see |g:netrw_liststyle|) - * attempts to retain the alternate file - v103: Jul 26, 2006 * used Yakov Lerner's tip#1289 to improve netrw - error message display - * wide listings didn't handle files with backslashes - in their names properly. A symptom was an - inability to open files. - Aug 09, 2006 * included "t" mapping for opening tabbed windows, - both for remote and local browsing - * changed netrw_longlist to netrw_liststyle - Aug 15, 2006 * fixed one of the NB maps - Aug 22, 2006 * changed *Explore commands to use -nargs=* instead - of -nargs=?. Allows both -complete=dir _and_ the - starstar arguments to work (-nargs=? seems to - require one or the other). - Aug 23, 2006 * copied all w:.. variables across splits to - new windows - Aug 25, 2006 * when g:netrw_browsex_viewer was '-' - (see |g:netrw_browsex_viewer|) it wasn't causing - netrwFileHandlers#Invoke() to be called as it - was expected to. (tnx Steve Dugaro) - Aug 29, 2006 * changed NetBrowseX() to use "setlocal ... noswf" - instead of "set ... noswf" (tnx Benji Fisher) - Aug 31, 2006 * tabs and fastbrowse<=1 didn't work together. - v102: Jun 15, 2006 * chgd netrwPlugin to call netrw#LocalBrowseCheck() - * bugfix: g:netrw_keepdir==0 had stopped working - Jul 06, 2006 * bugfix: NetOptionSave/Restore now saves/restores - the unnamed register (|registers|) - Jul 07, 2006 * |g:netrw_menu| support included - Jul 13, 2006 * :Texplore command implemented - Jul 17, 2006 * NetSplit and (Local|Net)BrowseChgDir() were both - splitting windows. This affected o, v, and - g:netrw_browse_split. - Jul 20, 2006 * works around wildignore setting (was causing - netrw's local browser not to list wildignore'd - files) - Jul 24, 2006 * <leftmouse> acts as a <cr> for selecting a file - <rightmouse> acts as a <del> for deleting a file - v100: May 14, 2006 * when using Windows and shell==cmd.exe, the - default for g:netrw_ignorenetrc is now 1 - * bugfix: unwanted ^Ms now removed - (affected shell==cmd.exe - Windows) - * added Bookmarks and History to the menu - * an error message about non-existing - w:netrw_longlist was appearing during attempts to - Explore (fixed) - * g:netrw_shq now available to make netrw use - specified style of quotes for commands - May 29, 2006 * user NFH_*() functions were inadvertently being - ignored - * fixed a Windows non-cygwin ftp handling problem. - * hiding pattern candidate separators included some - characters it shouldn't have (tnx to Osei Poku) - Jun 01, 2006 * for browsing, netrw was supposed to use "dir" - instead of "ls -lF" when using - ftp+non-cygwin+windows. Fixed. - * an inadvertently left-in-place debugging statement - was preventing use of the "x" key with browsing. - Jun 05, 2006 * g:netrw_nogx available to prevent making the gx - map (see |g:netrw_nogx|) - * bugfix, Explore wouldn't change directory - properly (vim ., :Explore subdirname) - Jun 06, 2006 * moved history to 2nd line in Netrw menu - * fixed delete for unix-based systems - Jun 07, 2006 * x key now works for windows-noncygwin-ftp - Jun 08, 2006 * Explore */pat and **//pat now wraps - v99: May 09, 2006 * g:netrw_browse_split=3 for opening files in new - tabs implemented. - May 12, 2006 * deletes temporary file at end of NetRead() - * visual mode based Obtain implemented - * added -complete=dir to the various Explore - commands - v98: May 02, 2006 * the "p" key didn't work properly when the browsing - directory name had spaces in it. - v97: May 01, 2006 * exists("&acd") now used to determine if - the 'acd' option exists - * "obtain" now works again under Windows - v96: * bugfix - the |'acd'| option is not always defined - but is now bypassed only when it is - v95: * bugfix - Hiding mode worked correctly (don't show - any file matching any of the g:netrw_hide - patterns), but showing mode was showing only those - files that didn't match any of the g:netrw_hide - patterns. Instead, it now shows all files that - match any of the g:netrw_hide patterns (the - difference between a logical and and logical or). - v94: * bugfix - a Decho() had a missing quote; only - affects things when debugging was enabled. - v93: * bugfix - removed FocusGained event from causing a - slow-browser refresh for Windows - v92: * :Explore **//pattern implemented - (**/filepattern was already taken) - v91: * :Explore */pattern implemented - * |'acd'| option bypassed - v90: * mark ', as suggested by Yegappan Lakshmanan, used - to help guarantee entry into the jump list when - appropriate. - * <s-down> and <s-up> are no longer defined until a - :Explore **/pattern is used (if the user already - has a map for them). They will be defined for new - browser windows from that point forward. - v89: * A <s-down>, <s-up>, :Nexplore, or a :Pexplore - without having first done an :Explore **/pattern - (see |netrw-starstar|) caused - a lot of unhelpful error messages to appear - v88: * moved DrChip.Netrw menu to Netrw. Now has - priority 80 by default. - g:NetrwTopLvlMenu == "Netrw" and can be changed - by the user to suit. The priority is given by - g:NetrwMenuPriority. - * Changed filetype for browser displays from - netrwlist to netrw. - v87: * bug fix -- menus were partially disappearing - v85: * bug fix -- missing an endif - * bug fix -- handles spaces in names and directories - when using ftp-based browsing - v83: * disabled stop-acd handling; the change in directory - handling may allow acd to be used again. - * D was refusing to delete remote files/directories - in wide listing mode. - v81: * FocusGained also used to refresh/wipe local browser - directory buffers - * (bugfix) netrw was leaving [Scratch] buffers behind - when the user had the "hidden" option set. The - 'hidden' option is now bypassed. - v80: * ShellCmdPost event used in conjunction with - g:netrw_fastbrowse to refresh/wipe local browser - directory buffers. - v79: * directories are now displayed with nowrap - * (bugfix) if the column width was smaller than the - largest file's name, then netrw would hang when - using wide-listing mode - fixed - * g:netrw_fastbrowse introduced - v78: * progress has been made on allowing spaces inside - directory names for remote work (reading, writing, - browsing). (scp) - v77: * Mikolaj Machowski fixed a bug in a substitute cmd - * g:netrw_browsex_viewer implemented - * Mikolaj Machowski pointed out that gnome-open is - often executable under KDE systems, although it is - effectively not functional. NetBrowseX now looks - for "kicker" as a running process to determine if - KDE is actually running. - * Explorer's O functionality was inadvertently left - out. Netrw now does the same thing, but with the - "P" key. - * added g:netrw_browse_split option - * fixed a bug where the directory contained a "." but - the file didn't (was treating the dirname from "." - onwards as a suffix) - v76: * "directory is missing" error message now restores - echo highlighting - v75: * file://... now conforms to RFC2396 (thanks to - S. Zacchiroli) - * if the binary option is set, then NetWrite() will - only write the whole file (line numbers don't make - sense with this). Supports writing of tar and zip - files. - v74: * bugfix (vim, then :Explore) now works - * ctrl-L keeps cursor at same screen location (both - local and remote browsing) - * netrw now can read remote zip and tar files - * Obtain now uses WinXP ftp+.netrc successfully - v73: * bugfix -- scp://host/path/file was getting named - incorrectly - * netrw detects use of earlier-than-7.0 version of - vim and issues a pertinent error message. - * netrwSettings.vim is now uses autoloading. Only - <netrwPlugin.vim> is needed as a pure plugin - (ie. always loaded). - v72: * bugfix -- formerly, one could prevent the loading - of netrw by "let g:loaded_netrw=1"; when - autoloading became supported, this feature was - lost. It is now restored. - v71: * bugfix -- made some "set nomodifiable"s into - setlocal variants (allows :e somenewfile to be - modifiable as usual) - * NetrwSettings calls a netrw function, thereby - assuring that netrw has loaded. However, if netrw - does not load for whatever reason, then - NetrwSettings will now issue a warning message. - * For what reason I don't recall, when wget and fetch - are both not present, and an attempt to read a - http://... url is made, netrw exited. It now only - returns. - * When ch=1, on the second and subsequent uses of - browsing Netrw would issue a blank line to clear - the echo'd messages. This caused an annoying - "Hit-Enter" prompt; now a blank line message - is echo'd only if &ch>1. - v70: * when using |netrw-O|, the "Obtaining filename" - message is now shown using |hl-User9|. If User9 - has not been defined, netrw itself will define it. - v69: * Bugfix: win95/98 machines were experiencing a - "E121: Undefined variable: g:netrw_win95ftp" - message - v68: * double-click-leftmouse selects word under mouse - v67: * Passwords which contain blanks will now be - surrounded by double-quotes automatically (Yongwei) - v66: * Netrw now seems to work with a few more Windows - situations - * O now obtains a file: remote browsing - file -> local copy, locally browsing - file -> current directory (see :pwd) - * i now cycles between thin, long, and wide listing - styles - * NB and Nb are maps that are always available; - corresponding B and b maps are only available when - not using wide listing in order to allow them to - be used for motions - v65: * Browser functions now use NetOptionSave/Restore; in - particular, netrw now works around the report - setting - v64: * Bugfix - browsing a "/" directory (Unix) yielded - buffers named "[Scratch]" instead of "/" - * Bugfix - remote browsing with ftp was omitting - the ./ and ../ - v63: * netrw now takes advantage of autoload (needs 7.0) - * Bugfix - using r (to reverse sort) working again - v62: * Bugfix - spaces allowed again in directory names - with g:netrw_keepdir=0. In fact, I've tested netrw - with most ANSI punctuation marks for directory - names. - * Bugfix - NetrwSettings gave errors when - g:netrw_silent had not be set. - v61: * Document upgrade -- netrw variable-based settings - all should have tags. Supports NetrwSettings cmd. - * Several important variables are window-oriented. - Netrw has to transfer these across a window split. - See s:BufWinVars() and s:UseBufWinVars(). - v60: * When using the i map to switch between long and - short listings, netrw will now keep cursor on same - line - * "Match # of #" now uses status line - * :Explore **/*.c will now work from a - non-netrw-browser window - * :Explore **/patterns can now be run in separate - browser windows - * active banner (hit <cr> will cause various things - to happen) - v59: * bugfix -- another keepalt work-around installed - (for vim6.3) - * "Match # of #" for Explore **/pattern matches - v58: * Explore and relatives can now handle - **/somefilepattern (v7) - * Nexplore and Pexplore introduced (v7). shift-down - and shift-up cursor keys will invoke Nexplore and - Pexplore, respectively. - * bug fixed with o and v - * autochdir only worked around for vim when it has - been compiled with either - |+netbeans_intg| or |+sun_workshop| - * Under Windows, all directories and files were - being preceded with a "/" when local browsing. - Fixed. - * When: syntax highlighting is off, laststatus=2, and - remote browsing is used, sometimes the laststatus - highlighting bleeds into the entire display. Work - around - do an extra redraw in that case. - * Bugfix: when g:netrw_keepdir=0, due to re-use of - buffers, netrw didn't change the directory when it - should've - * Bugfix: D and R commands work again - v57: * Explore and relatives can now handle RO files - * reverse sort restored with vim7's sort command - * g:netrw_keepdir now being used to keep the current - directory unchanged as intended (sense change) - * vim 6.3 still supported - v56: * LocalBrowse now saves autochdir setting, unsets it, - and restores it before returning. - * using vim's rename() instead of system + - local_rename variable - * avoids changing directory when g:netrw_keepdir is - false - v55: * -bar used with :Explore :Sexplore etc to allow - multiple commands to be separated by |s - * browser listings now use the "nowrap" option - * browser: some unuseful error messages now - suppressed - v54: * For backwards compatibility, Explore and Sexplore - have been implemented. In addition, Hexplore and - Vexplore commands are available, too. - * <amatch> used instead of <afile> in the - transparency support (BufReadCmd, FileReadCmd, - FileWriteCmd) - * ***netrw*** prepended to various error messages - netrw may emit - * g:netrw_port used instead of b:netrw_port for scp - * any leading [:#] is removed from port numbers - v53: * backslashes as well as slashes placed in various - patterns (ex. g:netrw_sort_sequence) to better - support Windows - v52: * nonumber'ing now set for browsing buffers - * when the hiding list hid all files, error messages - ensued. Fixed - * when browsing, swf is set, but directory is not - set, when netrw was attempting to restore options, - vim wanted to save a swapfile to a local directory - using an url-style path. Fixed - v51: * cygwin detection now automated - (using windows and &shell is bash) - * customizable browser "file" rejection patterns - * directory history - * :[range]w url now supported (ie. netrw uses a - FileWriteCmd event) - * error messages have a "Press <cr> to continue" to - allow them to be seen - * directory browser displays no longer bother the - swapfile - * u/U commands to go up and down the history stack - * history stack may be saved with viminfo with it's - "!" option - * bugfixes associated with unwanted [No Files] - entries - v50: * directories now displayed using buftype=nofile; - should keep the directory names as-is - * attempts to remove empty "[No File]" buffers - leftover from :file ..name.. commands - * bugfix: a "caps-lock" editing difficulty left in - v49 was fixed - * syntax highlighting for "Showing:" the hiding list - included - * bookmarks can now be retained if "!" is in the - viminfo option - v49: * will use ftp for http://.../ browsing - v48: * One may use ftp to do remote host file browsing - * (windows and !cygwin) remote browsing with ftp can - now use the "dir" command internally to provide - listings - * g:netrw_keepdir now allows one to keep the initial - current directory as the current directory - (normally the local file browser makes the - currently viewed directory the current directory) - * g:netrw_alto and g:netrw_altv now support - alternate placement of windows started with o or v - * Nread ? and Nwrite ? now uses echomsg (instead of - echo) so :messages can repeat showing the help - * bugfix: avoids problems with partial matches of - directory names to prior buffers with longer names - * one can suppress error messages with g:netrw_quiet - ctrl-h used - * instead of <Leader>h for editing hiding list one - may edit the sorting sequence with the S map, which - now allows confirmation of deletion with - [y(es) n(o) a(ll) q(uit)] - * the "x" map now handles special file viewing with: - (windows) rundll32 url.dll (gnome) gnome-open (kde) - kfmclient If none of these are on the executable - path, then netrwFileHandlers.vim is used. - * directory bookmarking during both local and remote - browsing implemented - * one may view all, use the hiding list to suppress, - or use the hiding list to show-only remote and - local file/directory listings - * improved unusual file and directory name handling - preview window support - v47: * now handles local browsing. - v46: * now handles remote browsing - * g:netrw_silent (if 1) will cause all transfers to - be silent - v45: * made the [user@]hostname:path form a bit more - restrictive to better handle errors in using - protocols (e.g. scp:usr@host:file was being - recognized as an rcp request) - v44: * changed from "rsync -a" to just "rsync" - * somehow an editing error messed up the test to - recognize use of the fetch method for NetRead. - * more debugging statements included - v43: * moved "Explanation" comments to <pi_netrw.txt> help - file as "Network Reference" (|netrw-ref|) - * <netrw.vim> now uses Dfunc() Decho() and Dret() for - debugging - * removed superfluous NetRestorePosn() calls - v42: * now does BufReadPre and BufReadPost events on - file:///* and file://localhost/* - v41: * installed file:///* and file://localhost/* handling - v40: * prevents redraw when a protocol error occurs so - that the user may see it - v39: * sftp support - v38: * Now uses NetRestorePosn() calls with Nread/Nwrite - commands - * Temporary files now removed via bwipe! instead of - bwipe (thanks to Dave Roberts) - v37: * Claar's modifications which test if ftp is - successful, otherwise give an error message - * After a read, the alternate file was pointing to - the temp file. The temp file buffer is now wiped - out. - * removed silent from transfer methods so user can - see what's happening + Nov 21, 2011 * New option: |g:netrw_ftp_options| + Dec 07, 2011 * (James Sinclair) provided a fix handling + attempts to use a uid and password when + they weren't defined. This affected + NetWrite (NetRead already had that fix). ============================================================================== diff --git a/en/usr_41.txt b/en/usr_41.txt index 0e85688d0..77f7d1c35 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.3. Last change: 2011 Dec 15 +*usr_41.txt* For Vim version 7.3. Last change: 2012 Mar 16 VIM USER MANUAL - by Bram Moolenaar @@ -1710,6 +1710,7 @@ make the script work for most people. It is done like this: > 12 set cpo&vim .. 42 let &cpo = s:save_cpo + 43 unlet s:save_cpo We first store the old value of 'cpoptions' in the s:save_cpo variable. At the end of the plugin this value is restored. @@ -1956,6 +1957,7 @@ Here is the resulting complete example: > 40 endif 41 42 let &cpo = s:save_cpo + 43 unlet s:save_cpo Line 33 wasn't explained yet. It applies the new correction to the word under the cursor. The |:normal| command is used to use the new abbreviation. Note diff --git a/en/windows.txt b/en/windows.txt index 31a0e2544..b9f771d75 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 7.3. Last change: 2011 Aug 14 +*windows.txt* For Vim version 7.3. Last change: 2012 Apr 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -174,7 +174,8 @@ CTRL-W CTRL_N *CTRL-W_CTRL-N* 2. WinEnter for the new window 3. BufLeave for the current buffer 4. BufEnter for the new buffer - This behaves like a ":split" first, and then a ":e" command. + This behaves like a ":split" first, and then an ":enew" + command. :[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew* Like |:new|, but split vertically. If 'equalalways' is set @@ -183,7 +184,8 @@ CTRL-W CTRL_N *CTRL-W_CTRL-N* :[N]new [++opt] [+cmd] {file} :[N]sp[lit] [++opt] [+cmd] {file} *:split_f* - Create a new window and start editing file {file} in it. + Create a new window and start editing file {file} in it. This + behaves like a ":split" first, and then an ":e" command. If [+cmd] is given, execute the command when the file has been loaded |+cmd|. Also see |++opt|. From c6f2aee2c4e2255eb9c3db889a33a676df9d485a Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sat, 19 May 2012 19:46:51 +0900 Subject: [PATCH 395/783] update en/*.txt (partially) to 7.3.524 --- en/diff.txt | 7 +++++-- en/editing.txt | 10 ++++++---- en/map.txt | 6 ++++-- en/repeat.txt | 8 ++++---- en/starting.txt | 5 +++-- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/en/diff.txt b/en/diff.txt index 288ddd78a..ab582dcae 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.3. Last change: 2011 Apr 14 +*diff.txt* For Vim version 7.3. Last change: 2012 May 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -178,7 +178,7 @@ buffer. If you don't want a buffer to remain used for the diff do ":set nodiff" before hiding it. *:diffu* *:diffupdate* -:diffu[pdate] Update the diff highlighting and folds. +:diffu[pdate][!] Update the diff highlighting and folds. Vim attempts to keep the differences updated when you make changes to the text. This mostly takes care of inserted and deleted lines. Changes within a @@ -187,6 +187,9 @@ To force the differences to be updated use: > :diffupdate +If the ! is included Vim will check if the file was changed externally and +needs to be reloaded. It will prompt for each changed file, like `:checktime` +was used. Vim will show filler lines for lines that are missing in one window but are present in another. These lines were inserted in another file or deleted in diff --git a/en/editing.txt b/en/editing.txt index 17a8ca383..828de1501 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.3. Last change: 2011 Feb 26 +*editing.txt* For Vim version 7.3. Last change: 2012 Apr 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1159,8 +1159,10 @@ MULTIPLE WINDOWS AND BUFFERS *window-exit* *:confirm* *:conf* :conf[irm] {command} Execute {command}, and use a dialog when an operation has to be confirmed. Can be used on the - ":q", ":qa" and ":w" commands (the latter to over-ride - a read-only setting). + |:q|, |:qa| and |:w| commands (the latter to override + a read-only setting), and any other command that can + fail in such a way, such as |:only|, |:buffer|, + |:bdelete|, etc. Examples: > :confirm w foo @@ -1639,6 +1641,6 @@ There are three different types of searching: Note that completion for ":find", ":sfind", and ":tabfind" commands do not currently work with 'path' items that contain a url or use the double star - (/usr/**2) or upward search (;) notations. > + with depth limiter (/usr/**2) or upward search (;) notations. vim:tw=78:ts=8:ft=help:norl: diff --git a/en/map.txt b/en/map.txt index f117f6fb3..b4b77deaa 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.3. Last change: 2012 Feb 02 +*map.txt* For Vim version 7.3. Last change: 2012 Apr 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1188,7 +1188,7 @@ reported if any are supplied). However, it is possible to specify that the command can take arguments, using the -nargs attribute. Valid cases are: -nargs=0 No arguments are allowed (the default) - -nargs=1 Exactly one argument is require, it includes spaces + -nargs=1 Exactly one argument is required, it includes spaces -nargs=* Any number of arguments are allowed (0, 1, or many), separated by white space -nargs=? 0 or 1 arguments are allowed @@ -1219,6 +1219,7 @@ completion can be enabled: -complete=augroup autocmd groups -complete=buffer buffer names + -complete=behave :behave suboptions -complete=color color schemes -complete=command Ex command (and arguments) -complete=compiler compilers @@ -1233,6 +1234,7 @@ completion can be enabled: -complete=function function name -complete=help help subjects -complete=highlight highlight groups + -complete=history :history suboptions -complete=locale locale names (as output of locale -a) -complete=mapping mapping name -complete=menu menus diff --git a/en/repeat.txt b/en/repeat.txt index eec13c0e2..9a97321eb 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.3. Last change: 2011 Jan 06 +*repeat.txt* For Vim version 7.3. Last change: 2012 Mar 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -109,7 +109,7 @@ q Stops recording. (Implementation note: The 'q' that it was the result of a mapping) {Vi: no recording} *@* -@{0-9a-z".=*} Execute the contents of register {0-9a-z".=*} [count] +@{0-9a-z".=*+} Execute the contents of register {0-9a-z".=*+} [count] times. Note that register '%' (name of the current file) and '#' (name of the alternate file) cannot be used. @@ -123,8 +123,8 @@ q Stops recording. (Implementation note: The 'q' that *@@* *E748* @@ Repeat the previous @{0-9a-z":*} [count] times. -:[addr]*{0-9a-z".=} *:@* *:star* -:[addr]@{0-9a-z".=*} Execute the contents of register {0-9a-z".=*} as an Ex +:[addr]*{0-9a-z".=+} *:@* *:star* +:[addr]@{0-9a-z".=*+} Execute the contents of register {0-9a-z".=*+} as an Ex command. First set cursor at line [addr] (default is current line). When the last line in the register does not have a <CR> it will be added automatically when diff --git a/en/starting.txt b/en/starting.txt index e390e4c8a..84dc78b31 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.3. Last change: 2011 Jul 22 +*starting.txt* For Vim version 7.3. Last change: 2012 Mar 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -248,7 +248,8 @@ a slash. Thus "-R" means recovery and "-/R" readonly. {not in Vi} *-g* --g Start Vim in GUI mode. See |gui|. {not in Vi} +-g Start Vim in GUI mode. See |gui|. For the opposite see |-v|. + {not in Vi} *-v* -v Start Ex in Vi mode. Only makes a difference when the From 312fece913c452fba20735835764d68b5d345263 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Fri, 25 May 2012 22:08:46 +0900 Subject: [PATCH 396/783] update en/insert.txt to 7.3.524 --- en/insert.txt | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/en/insert.txt b/en/insert.txt index 924e8a458..4629c0f6c 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.3. Last change: 2012 Jan 26 +*insert.txt* For Vim version 7.3. Last change: 2012 May 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -383,8 +383,11 @@ will then always put the cursor on it). Or use CTRL-\ CTRL-O, but then beware of the cursor possibly being beyond the end of the line. The CTRL-O command takes you to Normal mode. If you then use a command enter -Insert mode again it doesn't nest. Thus when typing "a<C-O>a" and then <Esc> -takes you back to Normal mode, you do not need to type <Esc> twice. +Insert mode again it normally doesn't nest. Thus when typing "a<C-O>a" and +then <Esc> takes you back to Normal mode, you do not need to type <Esc> twice. +An exception is when not typing the command, e.g. when executing a mapping or +sourcing a script. This makes mappings work that briefly switch to Insert +mode. The shifted cursor keys are not available on all terminals. @@ -398,7 +401,12 @@ An example for using CTRL-G u: > This redefines the backspace key to start a new undo sequence. You can now undo the effect of the backspace key, without changing what you typed before -that, with CTRL-O u. +that, with CTRL-O u. Another example: > + + :inoremap <CR> <C-]><C-G>u<CR> + +This breaks undo at each line break. It also expands abbreviations before +this. Using CTRL-O splits undo: the text typed before and after it is undone separately. If you want to avoid this (e.g., in a mapping) you might be able @@ -1009,9 +1017,13 @@ The function must return the column where the completion starts. It must be a number between zero and the cursor column "col('.')". This involves looking at the characters just before the cursor and including those characters that could be part of the completed item. The text between this column and the -cursor column will be replaced with the matches. Return -1 if no completion -can be done, the completion will be cancelled with an error message. Return --2 to cancel silently. +cursor column will be replaced with the matches. + +Special return values: + -1 If no completion can be done, the completion will be cancelled with an + error message. + -2 To cancel silently and stay in completion mode. + -3 To cancel silently and leave completion mode. On the second invocation the arguments are: a:findstart 0 From 82e4459f34b90e2d0d3394e8cdba1219429861af Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sat, 9 Jun 2012 23:47:34 +0900 Subject: [PATCH 397/783] update en/uganda.txt to 7.3.548 --- en/uganda.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/en/uganda.txt b/en/uganda.txt index 3f23f1dc1..82481dc27 100644 --- a/en/uganda.txt +++ b/en/uganda.txt @@ -1,4 +1,4 @@ -*uganda.txt* For Vim version 7.3. Last change: 2010 Aug 07 +*uganda.txt* For Vim version 7.3. Last change: 2012 May 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -266,7 +266,7 @@ Credit Card: You can use PayPal to send money with a Credit card. This is Others: Transfer to one of these accounts if possible: Postbank, account 4548774 Swift code: INGB NL 2A - IBAN: NL47 PSTB 0004 5487 74 + IBAN: NL95 INGB 0004 5487 74 under the name "stichting ICCF Holland", Lisse If that doesn't work: Rabobank Lisse, account 3765.05.117 From 1b6262c69005b2b1d8727efdf08e0414f548a7f8 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 10 Jun 2012 00:16:43 +0900 Subject: [PATCH 398/783] update en/quickfix.txt to 7.3.548 --- en/quickfix.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/en/quickfix.txt b/en/quickfix.txt index 22562d70b..0b3860924 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -913,8 +913,8 @@ Basic items %n error number (finds a number) %m error message (finds a string) %r matches the "rest" of a single-line file message %O/P/Q - %p pointer line (finds a sequence of '-', '.' or ' ' and - uses the length for the column number) + %p pointer line (finds a sequence of '-', '.', ' ' or + tabs and uses the length for the column number) %*{conv} any scanf non-assignable conversion %% the single '%' character %s search text (finds a string) From 7e292a50648e3a7cb245d0c4605105379ec18a71 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 13 Jun 2012 21:05:15 +0900 Subject: [PATCH 399/783] update vim_faq.jax * translate the name of modes consistently (Issue #58) * fix line wrappings * fix typos --- vim_faq/vim_faq.jax | 361 ++++++++++++++++++++++---------------------- 1 file changed, 177 insertions(+), 184 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 99917538e..015568da8 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -119,10 +119,9 @@ SECTION 9 - ウィンドウ *faq-motion* SECTION 10 - モーション |faq-10.1| ファイルの先頭や末尾に移動するには? -|faq-10.2| インサートモードで<Esc>キーを押してノーマルモードに移行すると、 - カーソルが1文字左へ移動します(カーソルが行の最初の文字の上にあると - きを除いて)。この動作を変更し、カーソルがその桁の上に残るようにで - きますか? +|faq-10.2| 挿入モードで<Esc>キーを押してノーマルモードに移行すると、カーソル + が1文字左へ移動します(カーソルが行の最初の文字の上にあるときを除い + て)。この動作を変更し、カーソルがその桁の上に残るようにできますか? |faq-10.3| <Page Up>、<Page Down>などのキーを押してスクロールしたときカーソル 位置の桁を保つように設定することはできますか? |faq-10.4| ファイル中のある行の長さが画面の幅を越えており、折り返されていま @@ -137,8 +136,8 @@ SECTION 10 - モーション ソルが適切に移動しません。どうなっているのですか? |faq-10.10| カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するよう にするには? -|faq-10.11| 常にインサートモードに留まるようにするには?(モードレスな編集をす - るには?) +|faq-10.11| 常に挿入モードに留まるようにするには?(モードレスな編集をするに + は?) |faq-10.12| テキストをスクロールするとき、前後の行を表示するには? |faq-10.13| 以前のカーソル位置に戻るには? *faq-searching-text* @@ -185,7 +184,7 @@ SECTION 12 - テキストを変更する |faq-12.12| 前の行が特定のパターンを含んでいる行に対して操作を行うには? |faq-12.13| あるパターンを含む行全てに対してコマンドを実行するには? |faq-12.14| カーソル位置の1文字上の文字をカーソル位置にコピーするには? -|faq-12.15| インサートモードに入らずに現在行の前/後に空行を挿入するには? +|faq-12.15| 挿入モードに入らずに現在行の前/後に空行を挿入するには? |faq-12.16| カレントファイルの名前をカレントバッファに挿入するには? |faq-12.17| レジスタの中身をカレントバッファに挿入するには? |faq-12.18| 行末を越えてカーソルを移動し、テキストを挿入するには? @@ -197,9 +196,9 @@ SECTION 12 - テキストを変更する |faq-12.23| ":substitute"を使って大文字・小文字を入れかえるには? |faq-12.24| キーボード上に無い文字を入力するには? |faq-12.25| ダイグラフのどれか、または全てを削除するコマンドはありますか? -|faq-12.26| インサートモードでバックスペースキーを押すと、今回のインサートモー - ドで入力した文字が消されるだけです。バックスペースキーで前回のイン - サートモードで入力した文字を消すには? +|faq-12.26| 挿入モードでバックスペースキーを押すと、今回の挿入モードで入力した + 文字が消されるだけです。バックスペースキーで前回の挿入モードで入力 + した文字を消すには? |faq-12.27| 72文字より長くて"+"で終わり、次行に折り返されている行があります。 このような行をすばやく連結させるには? |faq-12.28| 文字単位でヤンクされたテキストを新しい行にペーストするには? @@ -210,10 +209,10 @@ SECTION 12 - テキストを変更する |faq-12.33| ファイル中の全ての行の前に行番号をつけるには? |faq-12.34| 2つの文字・単語・行を入れ換えるには? *faq-completion-in-insert-mode* -SECTION 13 - インサートモードでの補完 -|faq-13.1| インサートモードで単語や行を補完するには? -|faq-13.2| インサートモードでファイル名を補完するには? -|faq-13.3| インサートモードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 +SECTION 13 - 挿入モードでの補完 +|faq-13.1| 挿入モードで単語や行を補完するには? +|faq-13.2| 挿入モードでファイル名を補完するには? +|faq-13.3| 挿入モードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 今補完した単語の後に現れる単語を補完するには? *faq-text-formatting* SECTION 14 - テキストの整形 @@ -221,7 +220,7 @@ SECTION 14 - テキストの整形 |faq-14.2| 1行がn文字以下になるように長い行を整形するには? |faq-14.3| 短い行を連結して段落を形成するには? |faq-14.4| 箇条書きや番号つきリストを整形するには? -|faq-14.5| インサートモードで行をインデントするには? +|faq-14.5| 挿入モードで行をインデントするには? |faq-14.6| ファイル全体を整形・インデントするには? |faq-14.7| 現在のファイルのインデントを増やす/減らすには? |faq-14.8| ブロックまたは行のグループをインデントするには? @@ -330,9 +329,9 @@ SECTION 20 - キーマップ |faq-20.11| 私のマッピングにおいて<CR>のような特殊文字が認識されません。 特殊文字を認識するように設定するには? |faq-20.12| マップ中で'|'を使って複数のコマンドを区切るには? -|faq-20.13| その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 - 入力があります。最初のものを入力したとき、2番目のが展開しないよう - にするには? +|faq-20.13| その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短 + 縮入力があります。最初のものを入力したとき、2番目のが展開しないよ + うにするには? |faq-20.14| ときどきキーが処理されるのに1秒程度かかるのはなぜですか? |faq-20.15| ビジュアル選択したテキストに対して外部コマンドを実行するマッピング を作るには? @@ -344,7 +343,7 @@ SECTION 21 - 短縮入力 |faq-21.3| 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペース が入ってしまいます。これを防ぐには? |faq-21.4| 現在の日付・時刻を挿入するには? -|faq-21.5| インサートモードで短縮入力が展開されるのを防ぐには? +|faq-21.5| 挿入モードで短縮入力が展開されるのを防ぐには? *faq-record-and-playback* SECTION 22 - レコーティングと繰り返し |faq-22.1| 編集操作(挿入、削除、ペースト等)を繰り返すには? @@ -352,8 +351,8 @@ SECTION 22 - レコーティングと繰り返し |faq-22.3| 記録したキーシーケンスを編集するには? |faq-22.4| 記録したキーシーケンスをファイルに保存するには? |faq-22.5| レジスタ0にキーシーケンスを保存しています(つまり q0 .... q)。 - 記録したキーシーケンスの中でテキストをヤンクしています。一度そのキー - シーケンスを再生すると、もうそれを再現することができません。 + 記録したキーシーケンスの中でテキストをヤンクしています。一度その + キーシーケンスを再生すると、もうそれを再現することができません。 *faq-autocommands* SECTION 23 - 自動コマンド |faq-23.1| 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? @@ -374,8 +373,8 @@ SECTION 24 - 構文強調 |faq-24.6| オプション'list'で表示した特殊文字(タブ、行末の空白、行末など)に色 をつけるには? |faq-24.7| 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? -|faq-24.8| 正しく構文強調されません。ファイルの一部が強調されなかったり、間違っ - て強調されてしまいます。 +|faq-24.8| 正しく構文強調されません。ファイルの一部が強調されなかったり、間 + 違って強調されてしまいます。 |faq-24.9| 対応する括弧を強調する組み込みの関数はありますか? |faq-24.10| Cのコメントの構文強調をオフにするには? |faq-24.11| Vimに付属する標準の構文ファイルに私自身の構文拡張を加えるには? @@ -393,7 +392,7 @@ SECTION 25 - VIMスクリプトを書く ぐに消えてしまいます。このメッセージをもう一度表示するには? |faq-25.5| プラグイン固有の情報を保存し、Vimを再起動したときそれを復元するに は? -|faq-25.6| 関数の中からインサートモードを開始するには? +|faq-25.6| 関数の中から挿入モードを開始するには? |faq-25.7| 関数の中でカーソル位置を動かすには? |faq-25.8| .vimrcファイルの中で環境変数の値をチェックするには? |faq-25.9| 環境変数が定義されているかどうかをチェックするには? @@ -462,9 +461,9 @@ SECTION 28 - QuickFix |faq-28.1| Vimの中からプログラムをビルドするには? |faq-28.2| Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパ イルしてエラーメッセージを出力します。しかしコンパイルが終わると表 - 示が消えてしまい、エラーメッセージをもう一度見るには:clistとしなけ - ればなりません。このエラーメッセージを見るのに他の方法はありません - か? + 示が消えてしまい、エラーメッセージをもう一度見るには :clist としな + ければなりません。このエラーメッセージを見るのに他の方法はありませ + んか? *faq-folding* SECTION 29 - 折り畳み |faq-29.1| 折り畳みの機能を拡張するには? @@ -489,7 +488,7 @@ SECTION 30 - 外部プログラムとの連携 |faq-30.7| Vimをページャとして使うには? |faq-30.8| Vimの中でUnixのmanページを見るには? |faq-30.9| Vimのdiff機能で使われるdiffコマンドを変更するには? -|faq-30.10| 折り畳みなしでdiffモードを使うには? +|faq-30.10| 折り畳みなしで差分モードを使うには? *faq-gui-vim* SECTION 31 - GUIのVIM |faq-31.1| バッファ固有のメニューを作るには? @@ -523,9 +522,9 @@ SECTION 32 - UNIX上のVim |faq-32.1| xtermでVimを実行しています。CTRL-Sを押すとVimがフリーズします。 どうすればいいですか? |faq-32.2| 画面の更新について奇妙な問題があります。これを解決するには? -|faq-32.3| Vimのターミナル/コンソール版を使っています。インサートモードでバッ - クスペースキーを押してもカーソルの前の文字が消えません。どう設定す - れば良いですか? +|faq-32.3| Vimのターミナル/コンソール版を使っています。挿入モードでバックス + ペースキーを押してもカーソルの前の文字が消えません。どう設定すれば + 良いですか? |faq-32.4| xtermでVimを使っています。Vimを終了すると画面が元の状態に復元され ます。これを無効化するには? |faq-32.5| Vimの起動にかなり時間がかかります。起動時間を最小化するには? @@ -547,7 +546,7 @@ SECTION 33 - MS-Windows上のVim |faq-33.5| Windows XPを使っています。最大化したGVimの表示速度がとても遅いで す。表示の更新を早くするには? |faq-33.6| VimをCygwin上で使うにあたって推奨される設定は? -|faq-33.7| diffモードでGNU diffを使おうとしています。コマンドラインからdiffを +|faq-33.7| 差分モードでGNU diffを使おうとしています。コマンドラインからdiffを 使うとうまく動くのですが、Vim内で使おうとすると動きません。どうす れば? |faq-33.8| Outlookで外部エディタにVimを使うことはできますか? @@ -590,8 +589,7 @@ SECTION 36 - 様々な事柄 |faq-36.6| "hit enter to continue"プロンプトを避けるには? |faq-36.7| コマンドラインからVimを起動して一連のファイルに対して一連のコマン ドを実行するには? -|faq-36.8| インサートモードから抜けることなくノーマルモードコマンドを実行する - には? +|faq-36.8| 挿入モードから抜けることなくノーマルモードコマンドを実行するには? *faq-unicode* SECTION 37 - Unicode |faq-37.1| VimでUnicodeのファイルを作ることはできますか? @@ -689,14 +687,14 @@ Vi を現代化する機能: ウィンドウから別のウィンドウへ簡単に移動することができます。それぞれの開 かれたファイルは Vim のセッション中関連付けられたバッファを保有し、バッ ファ間を簡単に移動することができます。 - 柔軟なインサート・モード - Vim ではインサート・モードにある間矢印キーでファイル内を移動することがで - きます。<Esc> を押し、移動して、`i' や `a' を押す、といったことはしなくて - 済みます。 + 柔軟な挿入モード + Vim では挿入モードにある間矢印キーでファイル内を移動することができます。 + <Esc> を押し、移動して、`i' や `a' を押す、といったことはしなくて済みま + す。 マクロ Vim には、連続してタイプされた文字を記録し、後で何度でも繰り返すことので きる機能があります。 - ビジュアル・モード + ビジュアルモード テキストの一部分をハイライトさせ、その部分にだけ操作を実行することができ ます。 ブロック・オペレーター @@ -720,7 +718,7 @@ Vi を現代化する機能: テキスト整形 2 キーストロークで、外部プログラムを使わずに長いテキストを整形できます。 - インサート・モードでの単語補完 + 挿入モードでの単語補完 Vim は、現在の単語とファイル内の似た単語とをマッチすることにより、タイピ ング中に単語補完を行うことができます。 タグ・ジャンプ @@ -748,7 +746,7 @@ Vi を現代化する機能: できます。 プラグイン Vim コマンドによって実装された拡張機能で、起動時に自動的にロードされます。 - 例:ファイル・エクスプローラー、ネットワーク編集。更に多くのものが + 例: ファイル・エクスプローラー、ネットワーク編集。更に多くのものが VimOnline にて常に開発、共有されています。 多数のプログラミング言語に対応した構文強調 数百ものプログラミング言語に対応した構文強調があります。他の言語への対応 @@ -799,16 +797,17 @@ Vim はチャリティーウェアです。Vim の使用や複製に関しては SECTION 2 - 情報源 *faq-2.1* -2.1. どこに行けば Vim についてもっと学べるでしょうか?Vimの質問はvim@vim.orgメー -リングリストに投稿できます。Vimの開発に関する質問はvim-dev@vim.orgメーリングリ -ストに投稿できます。Vim にはそれ自身のためのニュースグループがありません。しか -し comp.editors は投稿するのに適しています。 +2.1. どこに行けば Vim についてもっと学べるでしょうか? + +Vimの質問は vim@vim.org メーリングリストに投稿できます。Vimの開発に関する質問 +は vim-dev@vim.org メーリングリストに投稿できます。Vim にはそれ自身のための +ニュースグループがありません。しかし comp.editors は投稿するのに適しています。 "VimOnline" は vim のデファクト・ホームページの役割を果たしているウェブ・ペー -ジですが、その主な目的はチップやスクリプトをいたる所から集積することにあります。 -ぜひ参加してください。URL は vim.sourceforge.net または vim.sf.net です。 +ジですが、その主な目的はチップやスクリプトをいたる所から集積することにありま +す。ぜひ参加してください。URL は vim.sourceforge.net または vim.sf.net です。 -最後に、Vi FAQ を読んでください: > +最後に、Vi FAQ を読んでください: > http://www.faqs.org/faqs/editor-faq/vi/part1/index.html < @@ -820,7 +819,7 @@ SECTION 2 - 情報源 *faq-2.2* 2.2. メーリング・リストはありますか? -いくつか存在します: > +いくつか存在します: > 名前 説明 < @@ -836,15 +835,15 @@ SECTION 2 - 情報源 ほとんどの人にとってはリード・オンリーですし、そのメッセージは他のリストにも送 信されます。他の 4 つは非常に通信量が少ないです。 -購読するには: <NAME>-subscribe@vim.org にメールを送ってください。 -購読を中止するには: <NAME>-unsubscribe@vim.org にメールを送ってください。 -ヘルプを得るには: <NAME>-help@vim.org にメールを送ってください。 +購読するには: <名前>-subscribe@vim.org にメールを送ってください。 +購読を中止するには: <名前>-unsubscribe@vim.org にメールを送ってください。 +ヘルプを得るには: <名前>-help@vim.org にメールを送ってください。 *faq-2.3* 2.3. メーリング・リストのアーカイブはありますか? あります。http://www.yahoogroups.com/list/<名前> を訪ねてみてください。<名前> -の所には次の: +の所には次の vimannounce, vim, vimdev, vim-fr, vim-mac, vim-multibyte, vim-vms のどれかが入ります。 @@ -956,8 +955,7 @@ SECTION 3 - 入手 *faq-3.1* 3.1. Vim の最新のバージョンは何ですか? -The latest version of Vim is 6.3 released on 8th June 2004. -Vim の最新バージョンは2004年6月 +Vim の最新バージョンは2004年6月8日にリリースされた 6.3 です。 Vimのリリース履歴は以下の通りです: @@ -1016,7 +1014,7 @@ Vim の全ての機能にヘルプがあります。それを利用するには そうするとメインのヘルプ・ページを見ることができます。この最初のページで、どう やって動き回るかの説明があると思います。基本的にはリード・オンリーのドキュメン ト内を動き回るのと同じ仕方でヘルプ内を移動します。特定のテーマへジャンプするに -はタグを使うことができます。これは二通りの方法で行えます: +はタグを使うことができます。これは二通りの方法で行えます: * コマンドやオプションの上で "<Ctrl-]>" コマンドを使う。これはタグがキー ワードである場合にのみ有効です。"<Ctrl-LeftMouse>" や "g<LeftMouse>" も @@ -1038,9 +1036,9 @@ Vim の全ての機能にヘルプがあります。それを利用するには *faq-4.2* 4.2. どうやってVimヘルプファイル中のキーワードを探すんですか? -ヘルプキーワードをタイプした後にCTRL-Dを押すとそのパターンを含む全てのヘルプキー -ワードのリストが得られます。*, \+などのメタ文字を使ってヘルプの検索パターンを指 -定することもできます: > +ヘルプキーワードをタイプした後にCTRL-Dを押すとそのパターンを含む全てのヘルプ +キーワードのリストが得られます。*, \+などのメタ文字を使ってヘルプの検索パター +ンを指定することもできます: > :help init<C-D> :help str*()<C-D> @@ -1145,11 +1143,11 @@ SECTION 5 - ファイルの編集 :e <filename> < -":n" (:next)コマンドを使ってファイルをVimに読み込ませることもできます。 : > +":n" (:next)コマンドを使ってファイルをVimに読み込ませることもできます: > :n <filename(s)> < -":args"コマンドを使ってファイルをVimに読み込ませることもできます。 : > +":args"コマンドを使ってファイルをVimに読み込ませることもできます: > :args <filename(s)> < @@ -1488,9 +1486,9 @@ SECTION 7 - バックアップ :set nobackup < -Note デフォルトではこのオプションはオフにされています。初期設定ファイルのどこか -で明示的に'backup'オプションが有効化されています。'writebackup'オプションもオ -フにするとよいかもしれません: > +Note デフォルトではこのオプションはオフにされています。初期設定ファイルのどこ +かで明示的に'backup'オプションが有効化されています。'writebackup'オプションも +オフにするとよいかもしれません: > :set nowritebackup < @@ -1740,15 +1738,15 @@ CTRL-W <、CTRL-W >、CTRL-W | コマンドを使うこともできます。 9.3. ウィンドウをズームイン・ズームアウトするには? ウィンドウをズームするには(カレントウィンドウ以外の全ウィンドウを閉じるには) -"CTRL-W o"またはexコマンド":only"を使います。 +"CTRL-W o" またはexコマンド ":only" を使います。 -"CTRL-W _"またはexコマンド":resize"を使うと、他のウィンドウを閉じずに可能な限 -りウィンドウの高さを広げることができます。 +"CTRL-W _" またはexコマンド ":resize" を使うと、他のウィンドウを閉じずに可能な +限りウィンドウの高さを広げることができます。 -"CTRL-W |"またはexコマンド":vertical resize"を使うと、他のウィンドウを閉じずに -可能な限りウィンドウの幅を広げることができます。 +"CTRL-W |" またはexコマンド ":vertical resize" を使うと、他のウィンドウを閉じ +ずに可能な限りウィンドウの幅を広げることができます。 -"CTRL-W ="コマンドを使うと全ウィンドウの高さと幅を等しくすることができます。 +"CTRL-W =" コマンドを使うと全ウィンドウの高さと幅を等しくすることができます。 以下のオプションをセットすると、上記のコマンドを行うのと同じ結果が得られます。 @@ -1819,18 +1817,18 @@ SECTION 10 - モーション :help gg < *faq-10.2* -10.2. インサートモードで<Esc>キーを押してノーマルモードに移行すると、カーソル - が1文字左へ移動します(カーソルが行の最初の文字の上にあるときを除いて)。 - この動作を変更し、カーソルがその桁の上に残るようにできますか? +10.2. 挿入モードで<Esc>キーを押してノーマルモードに移行すると、カーソルが1文字 + 左へ移動します(カーソルが行の最初の文字の上にあるときを除いて)。この動作 + を変更し、カーソルがその桁の上に残るようにできますか? この動作を変更することはできません。カーソルは「常に」有効な文字の上に置かれま -す(virtualeditモードを有効にしていない限り)。そのため、行の末尾にテキストを -追加していてノーマルモードに戻るときには、カーソルは必ず最後に入力された文字の -上に戻らねばなりません。一貫性のためにカーソルはどこにあっても1文字戻るように -なっています。たとえ行の真ん中であっても。 +す(仮想編集モードを有効にしていない限り)。そのため、行の末尾にテキストを追加し +ていてノーマルモードに戻るときには、カーソルは必ず最後に入力された文字の上に戻 +らねばなりません。一貫性のためにカーソルはどこにあっても1文字戻るようになって +います。たとえ行の真ん中であっても。 -インサートモードでCTRL-Oを使うと、カーソル位置を動かすことなくexコマンドを1つ -実行してインサートモードに戻ることができます。 +挿入モードでCTRL-Oを使うと、カーソル位置を動かすことなくexコマンドを1つ実行し +て挿入モードに戻ることができます。 さらなる情報については以下を参照してください。 > @@ -1990,8 +1988,8 @@ g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで :set whichwrap+=> < -これらはノーマルモードとヴィジュアルモードでのみ機能します。インサートモード -と上書きモードでも使えるようにするには、それぞれ'['と']'フラグを加えます。 +これらはノーマルモードとビジュアルモードでのみ機能します。挿入モードと置換モー +ドでも使えるようにするには、それぞれ '[' と ']' フラグを加えます。 さらなる情報については以下を参照してください。 > @@ -1999,10 +1997,9 @@ g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで :help 05.7 < *faq-10.11* -10.11. 常にインサートモードに留まるようにするには?(モードレスな編集をするに - は?) +10.11. 常に挿入モードに留まるようにするには?(モードレスな編集をするには?) -常にインサートモードに留まるようにするには'insertmode'オプションを使います: +常に挿入モードに留まるようにするには'insertmode'オプションを使います: > :set insertmode @@ -2011,8 +2008,8 @@ g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで <Esc>キーを押してもノーマルモードに移行しません。ノーマルモードコマンドを1つ だけ実行するにはCTRL-Oを押してからノーマルモードコマンドをタイプします。1つ以 上のノーマルモードコマンドを実行するにはCTRL-Lに続けてそのコマンドをタイプしま -す。インサートモードに戻るには<Esc>キーを押します。このオプションを無効にする -には'insertmode'オプションをオフにします: > +す。挿入モードに戻るには<Esc>キーを押します。このオプションを無効にするには +'insertmode'オプションをオフにします: > :set noinsertmode < @@ -2324,7 +2321,7 @@ SECTION 11 - テキストを検索する 11.16. 行からある文字がn回目に現れる箇所を検索するには? 行中からある文字がn回目に現れる箇所を検索するには、'f'コマンドにプリフィックス -をつけます。例えば、文字@が5回目に現れる火おを検索するには、5f@とします。ただ +をつけます。例えば、文字@が5回目に現れる箇所を検索するには、5f@とします。ただ しカーソルが行頭にあるものとします。また、1桁目の文字が検索する文字ではないも のとします。 @@ -2520,7 +2517,7 @@ SECTION 12 - テキストを変更する *faq-12.5* 12.5. カーソル下の単語をコピー/ヤンクするには? -"yiw"(yank inner word without whitespace)または"yaw" (yank a word with +"yiw" (yank inner word without whitespace) または "yaw" (yank a word with whitespace)でカーソル下の単語をコピー/ヤンクできます。 さらなる情報については以下を参照してください。 > @@ -2675,8 +2672,8 @@ Exコマンドでないコマンドを使いたければ、":normal"を使うこ *faq-12.14* 12.14. カーソル位置の1文字上の文字をカーソル位置にコピーするには? -インサートモードで<Ctrl-Y>とするとカーソル位置の1文字上の文字をコピーすること -ができます。同じように<Ctrl-E>で1文字下の文字をコピーすることができます。 +挿入モードで<Ctrl-Y>とするとカーソル位置の1文字上の文字をコピーすることができ +ます。同じように<Ctrl-E>で1文字下の文字をコピーすることができます。 さらなる情報については以下を参照してください。 > @@ -2684,7 +2681,7 @@ Exコマンドでないコマンドを使いたければ、":normal"を使うこ :help i_CTRL-E < *faq-12.15* -12.15. インサートモードに入らずに現在行の前/後に空行を挿入するには? +12.15. 挿入モードに入らずに現在行の前/後に空行を挿入するには? ":put"を使えば空行を挿入できます。例えば、次を実行してみてください: > @@ -2699,8 +2696,8 @@ Exコマンドでないコマンドを使いたければ、":normal"を使うこ 12.16. カレントファイルの名前をカレントバッファに挿入するには? カレントファイルの名前をカレントバッファに挿入するにはいくつかの方法がありま -す。インサートモードでは<C-R>%または<C-R>=expand("%")でできます。ノーマルモー -ドでは":put =@%"でできます。 +す。挿入モードでは<C-R>%または<C-R>=expand("%")でできます。ノーマルモードでは +":put =@%"でできます。 さらなる情報については以下を参照してください。 > @@ -2711,8 +2708,8 @@ Exコマンドでないコマンドを使いたければ、":normal"を使うこ *faq-12.17* 12.17. レジスタの中身をカレントバッファに挿入するには? -インサートモードでは<C-R><register>で<register>の中身を挿入することができま -す。例えば、<C-R>aでレジスタ"a"の中身をカレントバッファに挿入できます。 +挿入モードでは<C-R><register>で<register>の中身を挿入することができます。例え +ば、<C-R>aでレジスタ"a"の中身をカレントバッファに挿入できます。 ノーマルモードでは":put <register>"で<register>の中身を挿入できます。例えば、 ":put d"でレジスタ"d"の中身をカレントバッファに挿入できます。 @@ -2726,7 +2723,7 @@ Exコマンドでないコマンドを使いたければ、":normal"を使うこ 12.18. 行末を越えてカーソルを移動し、テキストを挿入するには? オプション"virtualedit"をセットすれば行末を越えてカーソルを移動し、行末の先に -文字を追加することができます。virtualモードを開始するにはこうします。 > +文字を追加することができます。仮想モードを開始するにはこうします。 > :set virtualedit=all < @@ -2853,13 +2850,13 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま ありません。ダイグラフテーブルはコンパイル時に定義されます。できるのは新しいダ イグラフを追加することだけです。ダイグラフを削除するコマンドを追加するという事 はTODOリストにはありません。 + *faq-12.26* -12.26. インサートモードでバックスペースキーを押すと、今回のインサートモードで - 入力した文字が消されるだけです。バックスペースキーで前回のインサート - モードで入力した文字を消すには? +12.26. 挿入モードでバックスペースキーを押すと、今回の挿入モードで入力した文字 + が消されるだけです。バックスペースキーで前回の挿入モードで入力した文字 + を消すには? -'backspace'をセットすればインサートモードで前回入力した文字を削除することがで -きます: > +'backspace'をセットすれば挿入モードで前回入力した文字を削除することができます: > :set backspace=indent,eol,start < @@ -3014,18 +3011,18 @@ Uと16進の数字0-7FFFFFFFを入力すれば、印字不能文字を入力す < ============================================================================= -SECTION 13 - インサートモードでの補完 +SECTION 13 - 挿入モードでの補完 *faq-13.1* -13.1. インサートモードで単語や行を補完するには? +13.1. 挿入モードで単語や行を補完するには? -インサートモードでCTRL-PまたはCTRL-Nを使うと単語を補完することができます。 +挿入モードでCTRL-PまたはCTRL-Nを使うと単語を補完することができます。 CTRL-Nは次の候補を前方から検索します。 CTRL-Pは次の候補を後方から検索します。 -インサートモードでCTRL-X CTRL-Lを使うと現在行のカーソル以前の文字列で始まる行 -を補完します。次のマッチする行を取得するにはCTRL-PまたはCTRL-Nを使います。イン -サートモードで単語を補完する方法・キーは他にもたくさんあります。 +挿入モードでCTRL-X CTRL-Lを使うと現在行のカーソル以前の文字列で始まる行を補完 +します。次のマッチする行を取得するにはCTRL-PまたはCTRL-Nを使います。挿入モード +で単語を補完する方法・キーは他にもたくさんあります。 Vimは以下の要素の補完をサポートしています: > @@ -3044,17 +3041,17 @@ Vimは以下の要素の補完をサポートしています: > :help ins-completion < *faq-13.2* -13.2. インサートモードでファイル名を補完するには? +13.2. 挿入モードでファイル名を補完するには? -インサートモードでCTRL-X CTRL-Fを使うとカレント行のカーソルの前の文字列で始ま -るファイル名を補完することができます。 +挿入モードでCTRL-X CTRL-Fを使うとカレント行のカーソルの前の文字列で始まるファ +イル名を補完することができます。 さらなる情報については以下を参照してください > :help compl-filename < *faq-13.3* -13.3. インサートモードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 +13.3. 挿入モードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 今補完した単語の後に現れる単語を補完するには? CTRL-X CTRL-NとCTRL-X CTRL-Pを使うと今補完した単語の後に続く単語を補完すること @@ -3156,12 +3153,12 @@ SECTION 14 - テキストの整形 :help fo-table < *faq-14.5* -14.5. インサートモードで行をインデントするには? +14.5. 挿入モードで行をインデントするには? -インサートモードでCTRL-Tを押すと現在行の行頭にshiftwidth分のインデントを挿入す -ることができます。インサートモードでCTRL-Dを押すと現在行の行頭のshiftwidth分の -インデントを削除することができます。また、CTRL-O >>とCTRL-O <<でもインサートモ -ード中に現在行をインデントすることができます。 +挿入モードでCTRL-Tを押すと現在行の行頭にshiftwidth分のインデントを挿入すること +ができます。挿入モードでCTRL-Dを押すと現在行の行頭のshiftwidth分のインデントを +削除することができます。また、CTRL-O >>とCTRL-O <<でも挿入モード中に現在行をイ +ンデントすることができます。 さらなる情報については以下を参照してください > @@ -3597,8 +3594,8 @@ Vimのコマンドラインテキストを編集するのにコマンドライ *faq-16.3* 16.3. ViモードからExモードに移行するには? -QでViモードからExモードに移行できます。ExモードからViモードに移行するには:viを -使います。 +QでViモードからExモードに移行できます。ExモードからViモードに移行するには :vi +を使います。 さらなる情報については以下を参照してください。 > @@ -3948,8 +3945,8 @@ SECTION 19 - オプション 19.10. 現在のモードを表示するようにするには? 'showmode'オプションをセットすれば現在のVimのモードを表示するようになります。 -インサート、上書き、ビジュアルモードにおいて、最後の行に現在のモードを表示する -ようになります。 > +挿入、置換、ビジュアルモードにおいて、最後の行に現在のモードを表示するようにな +ります。 > :set showmode < @@ -4017,12 +4014,11 @@ Vimを再起動しても設定が永続するようにするには、その設 す。そうでなければビープが鳴ります。 Vimは普通のエスケープとカーソルキーのシーケンスなどを区別するために、タイムア -ウトを必要とします。ノーマルモードでキーを押すと(インサートモードでさえも)、 -そしてそのキーがマッピングの始まりであると、Vimはマッピングの残りのシーケンス -が後に続くがどうかを見るために一定時間待ちます。もしタイムアウトする前にマッピ -ングシーケンスが最後まで入力されればそのキーシーケンスのマッピングが発動しま -す。もしマッピングを中断すれば、そのキーに割り当てられた普通の動作を実行しま -す。 +ウトを必要とします。ノーマルモードでキーを押すと(挿入モードでさえも)、そしてそ +のキーがマッピングの始まりであると、Vimはマッピングの残りのシーケンスが後に続 +くがどうかを見るために一定時間待ちます。もしタイムアウトする前にマッピングシー +ケンスが最後まで入力されればそのキーシーケンスのマッピングが発動します。もし +マッピングを中断すれば、そのキーに割り当てられた普通の動作を実行します。 例えば、":imap vvv Vim is great!!"と定義されたマッピングがあるとし、"vvv"をす ばやく入力するとします。すると"Vim is great!!"がテキストに挿入されます。 @@ -4131,10 +4127,10 @@ SECTION 20 - キーマップ *faq-20.4* 20.4. キー<xxx>へマッピングができません。なにがまずいのですか? -最初にそのキーがVimが渡っているかどうか確認してください。インサートモードで -CTRL-Vに続けてそのキーを押してください。そのキーに対応するキーコードが表示され -るでしょう。ここでそのキーコードが表示されたら、以下のコマンドでそのキーに対す -るマッピングを作成することができます: > +最初にそのキーがVimが渡っているかどうか確認してください。挿入モードで CTRL-Vに +続けてそのキーを押してください。そのキーに対応するキーコードが表示されるでしょ +う。ここでそのキーコードが表示されたら、以下のコマンドでそのキーに対するマッピ +ングを作成することができます: > :map <C-V><xxx> <your_command_to_be_mapped> < @@ -4163,9 +4159,9 @@ kDivide, kMultiply, kEnterなどが使えます。 *faq-20.6* 20.6. ビジュアルモードでのみ機能するマッピングを作成するには? -特定のモード(ノーマル、コマンド、インサート、ビジュアル等)でのみ機能するマッピ -ングを作成することができます。ビジュアルモードでのみ機能するマッピングを作るに -は、":vmap"を使います: > +特定のモード(ノーマル、コマンド、挿入、ビジュアル等)でのみ機能するマッピングを +作成することができます。ビジュアルモードでのみ機能するマッピングを作るには、 +":vmap"を使います: > :vmap <F3> <your mapping here> < @@ -4196,8 +4192,8 @@ Vimのキーと重ならないようにキーを定義することができま :let mapleader = "," < -プラグインなどのスクリプトを書くときは、いつも以上に:mapでなく:noremapを使い、 -ユーザー定義マッピングの副作用を避けることが推奨されます。 +プラグインなどのスクリプトを書くときは、いつも以上に :map でなく :noremap を使 +い、ユーザー定義マッピングの副作用を避けることが推奨されます。 さらなる情報については以下を参照してください。 > @@ -4395,7 +4391,7 @@ SECTION 21 - 短縮入力 :abbreviate teh the < -インサートモード、上書きモード、コマンドラインモードで短縮入力が利用できます。 +挿入モード、置換モード、コマンドラインモードで短縮入力が利用できます。 さらなる情報については以下を参照してください。 > @@ -4452,8 +4448,8 @@ strftime()を使えば現在の日付・時刻のタイムスタンプを挿入 iabbrev dts <C-R>=strftime("%y/%m/%d %H:%M")<CR> < -この短縮入力を使うと、インサートモードでdtsと入力するとそれがタイムスタンプに -展開されます。 +この短縮入力を使うと、挿入モードでdtsと入力するとそれがタイムスタンプに展開さ +れます。 この短縮入力の別の形を以下に列挙します: > @@ -4469,7 +4465,7 @@ strftime()を使えば現在の日付・時刻のタイムスタンプを挿入 :help i_CTRL-R < *faq-21.5* -21.5. インサートモードで短縮入力が展開されるのを防ぐには? +21.5. 挿入モードで短縮入力が展開されるのを防ぐには? 短縮された単語の後にCTRL-Vを押してから次の文字を入力すれば、それが展開されるの を防ぐことができます。 @@ -4808,8 +4804,8 @@ Vimは構文強調する際にファイル全体をパースすることはし http://vim.sourceforge.net/tips/tip.php?tip_id=177 < -対応する括弧には'%'キーを使えばジャンプできます。インサートモードで一時的に対 -応する括弧にジャンプするには'showmatch'をセットします。 +対応する括弧には'%'キーを使えばジャンプできます。挿入モードで一時的に対応する +括弧にジャンプするには'showmatch'をセットします。 {訳注: Vim7からはmatchparen.vimが付属し、カーソルが括弧の上に乗ると、自動的に 対応する括弧が強調されるようになった。 @@ -4969,9 +4965,9 @@ Vimは大文字で始まり、小文字を含まないグローバル変数を :help variables < *faq-25.6* -25.6. 関数の中からインサートモードを開始するには? +25.6. 関数の中から挿入モードを開始するには? -":startinsert"を使えば関数の中からインサートモードを開始することができます。 +":startinsert"を使えば関数の中から挿入モードを開始することができます。 さらなる情報については以下を参照してください。 > @@ -5168,14 +5164,14 @@ exists()を使えば環境変数の存在をチェックすることができま *faq-25.17* 25.17. Vimスクリプト中でカーソル下の文字を取得するには? -getline()と文字列のインデクス[]を使います: > +getline()と文字列のインデックス[]を使います: > :echo getline(".")[col(".") - 1] < -上のコマンドにおいてgetline(".")は現在行のテキストを返します。文字列のインデク -スは0から始まり、"string[index]"という記法で文字列中からインデクスを指定して1 -つの文字を取得できます。col(".")はカーソル位置の桁を返します。ここでは文字列中 -の目的の文字を取得するために調整されています。 +上のコマンドにおいてgetline(".")は現在行のテキストを返します。文字列のインデッ +クスは0から始まり、"string[index]" という記法で文字列中からインデックスを指定 +して1つの文字を取得できます。col(".")はカーソル位置の桁を返します。ここでは文 +字列中の目的の文字を取得するために調整されています。 別の方法としては、以下の一連のコマンドによってもカーソル下の文字を取得でき ます: > @@ -5183,7 +5179,7 @@ getline()と文字列のインデクス[]を使います: > normal! vy let ch=@" < -注意: 上のコマンドはマーク'<と'>を変更します。 +注意: 上のコマンドはマーク '< と '> を変更します。 さらなる情報については以下を参照してください。 > @@ -5213,8 +5209,8 @@ getline()と文字列のインデクス[]を使います: > *faq-25.19* 25.19. カレントファイルのベース名(basename)を取得するには? -ファイル名修飾子:tを使えばカレントファイルのベース名(basename)を取得することが -できます: > +ファイル名修飾子 :t を使えばカレントファイルのベース名(basename)を取得すること +ができます: > :echo expand("%:t") < @@ -5225,7 +5221,7 @@ getline()と文字列のインデクス[]を使います: > *faq-25.20* 25.20. 関数の結果をカレントバッファに挿入するには? -インサートモードにおいて次のコマンドで関数の戻り値を挿入することができます: > +挿入モードにおいて次のコマンドで関数の戻り値を挿入することができます: > <C-R>=MyFunc() < @@ -5307,7 +5303,7 @@ system()を使うと、外部コマンドを起動し、出力を取得するこ \n:>, \fb:- < -{訳注: 原文には例が入っていなかったので:helpからコピペしてきた。} +{訳注: 原文には例が入っていなかったので :help からコピペしてきた。} さらなる情報については以下を参照してください。 > @@ -5374,10 +5370,10 @@ system()を使うと、外部コマンドを起動し、出力を取得するこ 25.29. s:つきで定義された関数(スクリプトローカル関数)を別のスクリプト/プラグ インから呼ぶには? -関数名へのプリフィックスs:は関数をスクリプトローカルにするために使われます。 +関数名へのプリフィックス s: は関数をスクリプトローカルにするために使われます。 スクリプトローカル関数はそのスクリプト中からのみ呼ぶことができ、他のスクリプト からは呼び出せません。他のプラグイン/スクリプトから呼び出せる関数を定義するに -は、s:をつけずに関数を定義します。 +は、s: をつけずに関数を定義します。 さらなる情報については以下を参照してください。 > @@ -5705,9 +5701,8 @@ SECTION 27 - プログラムファイルを編集する 27.8. 一連の行の行頭にコメント文字'#'をつけ加えるには? 最初にビジュアル矩形モードを使って(CTRL-V)その行を全て選択します。'I'を押して -行頭に文字の挿入を開始します。コメント文字を挿入し、<Esc>を押してインサートモ -ードを終了します。すると入力された文字が選択された全ての行の行頭に挿入されま -す。 +行頭に文字の挿入を開始します。コメント文字を挿入し、<Esc>を押して挿入モードを +終了します。すると入力された文字が選択された全ての行の行頭に挿入されます。 さらなる情報については以下を参照してください。 > @@ -5786,8 +5781,8 @@ SECTION 28 - QuickFix *faq-28.2* 28.2. Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパイル してエラーメッセージを出力します。しかしコンパイルが終わると表示が消え - てしまい、エラーメッセージをもう一度見るには:clistとしなければなりませ - ん。このエラーメッセージを見るのに他の方法はありませんか? + てしまい、エラーメッセージをもう一度見るには :clist としなければなりま + せん。このエラーメッセージを見るのに他の方法はありませんか? ":copen"や":cwindow"を使うと、コンパイラの出力を保持しているQuickFixウィンド ウを開くことができます。そのウィンドウの中でエラーの行を選択すると、ソースコー @@ -6052,10 +6047,10 @@ Vim標準ディストリビューションに同梱のman.vimを使えば、Vim :help 'diffexpr' < *faq-30.10* -30.10. 折り畳みなしでdiffモードを使うには? +30.10. 折り畳みなしで差分モードを使うには? 次のコマンドラインを実行すると、2つのファイル名とともに起動し、折り畳み -なしでdiffモードに入ります: > +なしで差分モードに入ります: > $ vim -o file1 file2 "+windo set diff scrollbind scrollopt+=hor nowrap" < @@ -6181,12 +6176,12 @@ Vimのコマンドライン引数に-fontを使うと通常のテキストに使 31.8. スクロールバーをドラッグしたとき、カーソル位置を動かさずにテキストをスク ロールさせることは可能ですか? -Vimの設計では、ノーマル・ビジュアル・選択・インサートモードにおいてカーソル位 -置は表示されている位置になければなりません。これはVimの修正なしには変更できま -せん。スクロールバーを使うと、カーソル位置は常に表示されている範囲に入るように -移動します。この問題を解決する別のアプローチはVimのマークを使うことです。maで -現在のカーソル位置をマークします。テキストをスクロールしたら`aで元の位置に戻 -ります。Vim Onlineに投稿された次の提案も試してみてください: > +Vimの設計では、ノーマル・ビジュアル・選択・挿入モードにおいてカーソル位置は表 +示されている位置になければなりません。これはVimの修正なしには変更できません。 +スクロールバーを使うと、カーソル位置は常に表示されている範囲に入るように移動し +ます。この問題を解決する別のアプローチはVimのマークを使うことです。maで現在の +カーソル位置をマークします。テキストをスクロールしたら`aで元の位置に戻ります。 +Vim Onlineに投稿された次の提案も試してみてください: > http://www.vim.org/tip_view.php?tip_id=320 < @@ -6339,9 +6334,8 @@ terminfo/termcapファイルを使わねばなりません。 :help 'term' < *faq-32.3* -32.3. Vimのターミナル/コンソール版を使っています。インサートモードでバックス - ペースキーを押してもカーソルの前の文字が消えません。どう設定すれば良いで - すか? +32.3. Vimのターミナル/コンソール版を使っています。挿入モードでバックスペース + キーを押してもカーソルの前の文字が消えません。どう設定すれば良いですか? Vimが正しいバックスペースのキーコードを受け取っているかどうか確かめてください。 次のコマンドを試してみてください: > @@ -6499,8 +6493,8 @@ SECTION 33 - MS-Windows上のVim 33.1. MS-Windows上でCTRL-Vを押してもビジュアル矩形モードが始まりません。どう なっているのですか? -mswin.vimプラグインは、VimがMS-Windowsアプリケーションに似た挙動をするようにキー -マッピングとオプションを設定します。そのキーマップの一つがCTRL-Vで、これは +mswin.vimプラグインは、VimがMS-Windowsアプリケーションに似た挙動をするように +キーマッピングとオプションを設定します。そのキーマップの一つがCTRL-Vで、これは MS-Windowsアプリケーションではテキストをペーストします。このためCTRL-Vでビジュ アル矩形モードが始まらないようになっています。mswin.vimではビジュアル矩形モー ドの開始がCTRL-Qにマップされています。ですのでCTRL-Vの代わりにCTRL-Qを使ってく @@ -6555,9 +6549,9 @@ MS-Windowsアプリケーションと同じ挙動になるようにCTRL-Yをマ 33.5. Windows XPを使っています。最大化したGVimの表示速度がとても遅いです。表示 の更新を早くするには? -これは表示プロパティの'Smooth edges of screen fonts'を有効化しているために起こっ -ている可能性があります。フォントスムージングをオフにするか、スムージング方法を -"Standard"にしてください。 +これは画面のプロパティの "スクリーン フォントの縁を滑らかにする" を有効化して +いるために起こっている可能性があります。フォントスムージングをオフにするか、ス +ムージング方法を "標準" にしてください。 {訳注: コントロールパネル[パフォーマンスオプション]の[スクリーンフォントの縁を 滑らかにする]のことだと思う。} @@ -6576,7 +6570,7 @@ MS-Windowsアプリケーションと同じ挙動になるようにCTRL-Yをマ :set shellredir=>%s 2>&1 < *faq-33.7* -33.7. diffモードでGNU diffを使おうとしています。コマンドラインからdiffを使うと +33.7. 差分モードでGNU diffを使おうとしています。コマンドラインからdiffを使うと うまく動くのですが、Vim内で使おうとすると動きません。どうすれば? VimでGNU diffを使うには問題があります。次のリンクにあるRon Aaronがビルドした @@ -6973,14 +6967,13 @@ Vimの起動時の画面を表示させなくするには、'shortmess'にフラ :help -s < *faq-36.8* -36.8. インサートモードから抜けることなくノーマルモードコマンドを実行するには? +36.8. 挿入モードから抜けることなくノーマルモードコマンドを実行するには? -CTRL-Oに続けてノーマルモードコマンドを1つ入力すると、インサートモードから抜け -ることなくノーマルモードコマンドを実行することができます。 +CTRL-Oに続けてノーマルモードコマンドを1つ入力すると、挿入モードから抜けること +なくノーマルモードコマンドを実行することができます。 1つ以上のノーマルモードコマンドを実行するにはCTRL-Lを押し、続けて任意個のノー -マルモードコマンドをタイプします。インサートモードに抜けるには<Esc>を押しま -す。 +マルモードコマンドをタイプします。挿入モードに抜けるには<Esc>を押します。 {訳注: CTRL-Lを使うにはオプション'insertmode'をオンにしていなければならない。} @@ -7147,8 +7140,8 @@ http://vim.sourceforge.net/tip_view.php?tip_id=246 *faq-37.12* 37.12. どのダイグラフがどの文字に定義されているかを知るには? -まず'encoding'を適切に(例えばutf-8に)設定してください。それから:digraphsを使っ -て現在定義されているダイグラフを表示します。 +まず'encoding'を適切に(例えばutf-8に)設定してください。それから :digraphs を +使って現在定義されているダイグラフを表示します。 さらなる情報については以下を参照してください。 > From 187469da222e3d06a8facb4ca85d9018540f0178 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 13 Jun 2012 23:48:16 +0900 Subject: [PATCH 400/783] translate the word "tilde" consistently (Issue #44) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit チルド -> チルダ --- vim_faq/vim_faq.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 015568da8..303db3909 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -2793,7 +2793,7 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま 2回目の":s"では、検索パターンが指定されていないので、最初の":s"のパターンが使 われます。 -検索パターンは変えたいが、置換語を同じものにしたい場合は、チルド文字を使いま +検索パターンは変えたいが、置換語を同じものにしたい場合は、チルダ文字を使いま す: > :s/newpattern/~/ From 40f3e710ae9e785bb672782ffbca6af2994e97d9 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Fri, 15 Jun 2012 07:38:42 +0900 Subject: [PATCH 401/783] translate the words "register" consistently (Issue #44) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit レジスター -> レジスタ --- vim_faq/vim_faq.jax | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 303db3909..a60af1aa5 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -729,13 +729,13 @@ Vi を現代化する機能: ファイルを読み書きする時や、他のバッファに移動する時などに自動的に実行さ れるコマンドです。 Viminfo - 起動時に読み込まれるコマンドライン履歴やファイル内のマーク、レジスターを - 記憶しておくことができます。したがって、以前の検索パターンや、マクロなど - を、新しい Vim セッションで呼び出すことができます。 + 起動時に読み込まれるコマンドライン履歴やファイル内のマーク、レジスタを記 + 憶しておくことができます。したがって、以前の検索パターンや、マクロなどを、 + 新しい Vim セッションで呼び出すことができます。 マウス・サポート マウスは xterm や MS-DOS でサポートされています。カーソル位置を設定した - り、ビジュアル領域を選択したり、レジスターを貼り付けたり、等のことができ - ます。 + り、ビジュアル領域を選択したり、レジスタを貼り付けたり、等のことができま + す。 グラフィカル・ユーザー・インターフェース(GUI) 他の昨今のエディタと同様です。その上、独自のメニューを追加することも非常 に簡単です。もちろん、コンソール版の Vim も今なおサポートされており、幅広 From 2d2907e1c9a8007cd509871547ddc496521db410 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 27 Jun 2012 21:45:50 +0900 Subject: [PATCH 402/783] update en/*.txt to 7.3.566 --- en/change.txt | 80 ++++++++++++++++++++++++++++++--------------------- en/eval.txt | 56 +++++++++++++++++++++++++----------- en/indent.txt | 20 +++++++++++-- 3 files changed, 105 insertions(+), 51 deletions(-) diff --git a/en/change.txt b/en/change.txt index 063b7a5ae..597d1db37 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.3. Last change: 2012 Jan 04 +*change.txt* For Vim version 7.3. Last change: 2012 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -80,8 +80,8 @@ For inserting text see |insert.txt|. (default: current line |cmdline-ranges|) [into register x]. -These commands delete text. You can repeat them with the "." command -(except ":d") and undo them. Use Visual mode to delete blocks of text. See +These commands delete text. You can repeat them with the `.` command +(except `:d`) and undo them. Use Visual mode to delete blocks of text. See |registers| for an explanation of registers. An exception for the d{motion} command: If the motion is not linewise, the @@ -132,7 +132,7 @@ gJ Join [count] lines, with a minimum of two lines. See |ex-flags| for [flags]. These commands delete the <EOL> between lines. This has the effect of joining -multiple lines into one line. You can repeat these commands (except ":j") and +multiple lines into one line. You can repeat these commands (except `:j`) and undo them. These commands, except "gJ", insert one space in place of the <EOL> unless @@ -260,6 +260,12 @@ r{char} Replace the character under the cursor with {char}. <CR>. CTRL-V <NL> replaces with a <Nul>. {Vi: CTRL-V <CR> still replaces with a line break, cannot replace something with a <CR>} + + If {char} is CTRL-E or CTRL-Y the character from the + line below or above is used, just like with |i_CTRL-E| + and |i_CTRL-Y|. This also works with a count, thus + `10r<C-E>` copies 10 characters from the line below. + If you give a [count], Vim replaces [count] characters with [count] {char}s. When {char} is a <CR> or <NL>, however, Vim inserts only one <CR>: "5r<CR>" replaces @@ -465,9 +471,9 @@ much as possible to make the indent. You can use ">><<" to replace an indent made out of spaces with the same indent made out of <Tab>s (and a few spaces if necessary). If the 'expandtab' option is on, Vim uses only spaces. Then you can use ">><<" to replace <Tab>s in the indent by spaces (or use -":retab!"). +`:retab!`). -To move a line several 'shiftwidth's, use Visual mode or the ":" commands. +To move a line several 'shiftwidth's, use Visual mode or the `:` commands. For example: > Vjj4> move three lines 4 indents to the right :<<< move current line 3 indents to the left @@ -487,7 +493,7 @@ Examples of filters are "sort", which sorts lines alphabetically, and works like a filter; not all versions do). The 'shell' option specifies the shell Vim uses to execute the filter command (See also the 'shelltype' option). You can repeat filter commands with ".". Vim does not recognize a -comment (starting with '"') after the ":!" command. +comment (starting with '"') after the `:!` command. *!* !{motion}{filter} Filter {motion} text lines through the external @@ -574,34 +580,34 @@ For other systems the tmpnam() library function is used. Repeat last :substitute with same search pattern and substitute string, but without the same flags. You may add [flags], see |:s_flags|. - Note that after ":substitute" the '&' flag can't be + Note that after `:substitute` the '&' flag can't be used, it's recognized as a pattern separator. - The space between ":substitute" and the 'c', 'g' and + The space between `:substitute` and the 'c', 'g' and 'r' flags isn't required, but in scripts it's a good idea to keep it to avoid confusion. :[range]~[&][flags] [count] *:~* Repeat last substitute with same substitute string but with last used search pattern. This is like - ":&r". See |:s_flags| for [flags]. + `:&r`. See |:s_flags| for [flags]. *&* -& Synonym for ":s" (repeat last substitute). Note +& Synonym for `:s` (repeat last substitute). Note that the flags are not remembered, thus it might - actually work differently. You can use ":&&" to keep + actually work differently. You can use `:&&` to keep the flags. *g&* -g& Synonym for ":%s//~/&" (repeat last substitute on all +g& Synonym for `:%s//~/&` (repeat last substitute on all lines with the same flags). Mnemonic: global substitute. {not in Vi} *:snomagic* *:sno* -:[range]sno[magic] ... Same as ":substitute", but always use 'nomagic'. +:[range]sno[magic] ... Same as `:substitute`, but always use 'nomagic'. {not in Vi} *:smagic* *:sm* -:[range]sm[agic] ... Same as ":substitute", but always use 'magic'. +:[range]sm[agic] ... Same as `:substitute`, but always use 'magic'. {not in Vi} *:s_flags* @@ -611,7 +617,7 @@ The flags that you can use for the substitute commands: command. Examples: > :&& :s/this/that/& -< Note that ":s" and ":&" don't keep the flags. +< Note that `:s` and `:&` don't keep the flags. {not in Vi} [c] Confirm each substitution. Vim highlights the matching string (with @@ -667,14 +673,14 @@ The flags that you can use for the substitute commands: [l] Like [p] but print the text like |:list|. -[r] Only useful in combination with ":&" or ":s" without arguments. ":&r" - works the same way as ":~": When the search pattern is empty, use the +[r] Only useful in combination with `:&` or `:s` without arguments. `:&r` + works the same way as `:~`: When the search pattern is empty, use the previously used search pattern instead of the search pattern from the - last substitute or ":global". If the last command that did a search - was a substitute or ":global", there is no effect. If the last + last substitute or `:global`. If the last command that did a search + was a substitute or `:global`, there is no effect. If the last command was a search command such as "/", use the pattern from that command. - For ":s" with an argument this already happens: > + For `:s` with an argument this already happens: > :s/blue/red/ /green :s//red/ or :~ or :&r @@ -691,9 +697,9 @@ reason is that the flags can only be found by skipping the pattern, and in order to skip the pattern the "magicness" must be known. Catch 22! If the {pattern} for the substitute command is empty, the command uses the -pattern from the last substitute or ":global" command. If there is none, but +pattern from the last substitute or `:global` command. If there is none, but there is a previous search pattern, that one is used. With the [r] flag, the -command uses the pattern from the last substitute, ":global", or search +command uses the pattern from the last substitute, `:global`, or search command. If the {string} is omitted the substitute is done as if it's empty. Thus the @@ -848,7 +854,7 @@ This replaces each 'E' character with a euro sign. Read more in |<Char->|. 4.4 Changing tabs *change-tabs* - *:ret* *:retab* + *:ret* *:retab* *:retab!* :[range]ret[ab][!] [new_tabstop] Replace all sequences of white-space containing a <Tab> with new strings of white-space using the new @@ -867,7 +873,7 @@ This replaces each 'E' character with a euro sign. Read more in |<Char->|. Careful: This command modifies any <Tab> characters inside of strings in a C program. Use "\t" to avoid this (that's a good habit anyway). - ":retab!" may also change a sequence of spaces by + `:retab!` may also change a sequence of spaces by <Tab> characters, which can mess up a printf(). {not in Vi} Not available when |+ex_extra| feature was disabled at @@ -977,8 +983,12 @@ inside of strings can change! Also see 'softtabstop' option. > current line). This always works |linewise|, thus this command can be used to put a yanked block as new lines. - The cursor is left on the first non-blank in the last - new line. + If no register is specified, it depends on the 'cb' + option: If 'cb' contains "unnamedplus", paste from the + + register |quoteplus|. Otherwise, if 'cb' contains + "unnamed", paste from the * register |quotestar|. + Otherwise, paste from the unnamed register + |quote_quote|. The register can also be '=' followed by an optional expression. The expression continues until the end of the command. You need to escape the '|' and '"' @@ -1183,7 +1193,7 @@ nothing is returned. {not in Vi} 9. Last search pattern register "/ *quote_/* *quote/* Contains the most recent search-pattern. This is used for "n" and 'hlsearch'. -It is writable with ":let", you can change it to have 'hlsearch' highlight +It is writable with `:let`, you can change it to have 'hlsearch' highlight other matches without actually searching. You can't yank or delete into this register. The search direction is available in |v:searchforward|. Note that the valued is restored when returning from a function @@ -1191,12 +1201,12 @@ Note that the valued is restored when returning from a function {not in Vi} *@/* -You can write to a register with a ":let" command |:let-@|. Example: > +You can write to a register with a `:let` command |:let-@|. Example: > :let @/ = "the" If you use a put command without specifying a register, Vim uses the register that was last filled (this is also the contents of the unnamed register). If -you are confused, use the ":dis" command to find out what Vim will put (this +you are confused, use the `:dis` command to find out what Vim will put (this command displays all named and numbered registers; the unnamed register is labelled '"'). @@ -1512,6 +1522,12 @@ B When joining lines, don't insert a space between two multi-byte characters. Overruled by the 'M' flag. 1 Don't break a line after a one-letter word. It's broken before it instead (if possible). +j Where it makes sense, remove a comment leader when joining lines. For + example, joining: + int i; // the index ~ + // in the list ~ + Becomes: + int i; // the index in the list ~ With 't' and 'c' you can specify when Vim performs auto-wrapping: @@ -1555,7 +1571,7 @@ Some examples: :set fo=tcrq < -Automatic formatting *auto-format* +Automatic formatting *auto-format* *autoformat* When the 'a' flag is present in 'formatoptions' text is formatted automatically when inserting text or deleting text. This works nice for @@ -1664,7 +1680,7 @@ found here: |sort()|. last search pattern is used. This allows trying out a pattern first. -Note that using ":sort" with ":global" doesn't sort the matching lines, it's +Note that using `:sort` with `:global` doesn't sort the matching lines, it's quite useless. The details about sorting depend on the library function used. There is no diff --git a/en/eval.txt b/en/eval.txt index ce4c41b7e..0df4ba4b3 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2012 Mar 07 +*eval.txt* For Vim version 7.3. Last change: 2012 May 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1544,15 +1544,18 @@ v:profiling Normally zero. Set to one after using ":profile start". *v:progname* *progname-variable* v:progname Contains the name (with path removed) with which Vim was - invoked. Allows you to do special initialisations for "view", - "evim" etc., or any other name you might symlink to Vim. + invoked. Allows you to do special initialisations for |view|, + |evim| etc., or any other name you might symlink to Vim. Read-only. *v:register* *register-variable* v:register The name of the register in effect for the current normal mode - command. If none is supplied it is the default register '"', - unless 'clipboard' contains "unnamed" or "unnamedplus", then - it is '*' or '+'. + command (regardless of whether that command actually used a + register). Or for the currently executing normal mode mapping + (use this in custom commands that take a register). + If none is supplied it is the default register '"', unless + 'clipboard' contains "unnamed" or "unnamedplus", then it is + '*' or '+'. Also see |getreg()| and |setreg()| *v:scrollstart* *scrollstart-variable* @@ -1844,6 +1847,7 @@ lispindent( {lnum}) Number Lisp indent for line {lnum} localtime() Number current time log( {expr}) Float natural logarithm (base e) of {expr} log10( {expr}) Float logarithm of Float {expr} to base 10 +luaeval( {expr}[, {expr}]) any evaluate |Lua| expression map( {expr}, {string}) List/Dict change each item in {expr} to {expr} maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) String or Dict @@ -2313,7 +2317,7 @@ col({expr}) The result is a Number, which is the byte index of the column position given with {expr}. The accepted positions are: . the cursor position $ the end of the cursor line (the result is the - number of characters in the cursor line plus one) + number of bytes in the cursor line plus one) 'x position of mark x (if the mark is not set, 0 is returned) Additionally {expr} can be [lnum, col]: a |List| with the line @@ -3229,7 +3233,8 @@ getcmdpos() *getcmdpos()* Return the position of the cursor in the command line as a byte count. The first column is 1. Only works when editing the command line, thus requires use of - |c_CTRL-\_e| or |c_CTRL-R_=|. Returns 0 otherwise. + |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping. + Returns 0 otherwise. Also see |getcmdtype()|, |setcmdpos()| and |getcmdline()|. getcmdtype() *getcmdtype()* @@ -3242,8 +3247,8 @@ getcmdtype() *getcmdtype()* @ |input()| command - |:insert| or |:append| command Only works when editing the command line, thus requires use of - |c_CTRL-\_e| or |c_CTRL-R_=|. Returns an empty string - otherwise. + |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping. + Returns an empty string otherwise. Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|. *getcwd()* @@ -3473,7 +3478,8 @@ glob({expr} [, {nosuf} [, {list}]]) *glob()* matches, they are separated by <NL> characters. If the expansion fails, the result is an empty String or List. - A name for a non-existing file is not included. + A name for a non-existing file is not included. A symbolic + link is only included if it points to an existing file. For most systems backticks can be used to get files names from any external command. Example: > @@ -3995,6 +4001,20 @@ log10({expr}) *log10()* < -2.0 {only available when compiled with the |+float| feature} +luaeval({expr}[, {expr}]) *luaeval()* + Evaluate Lua expression {expr} and return its result converted + to Vim data structures. Second {expr} may hold additional + argument accessible as _A inside first {expr}. + Strings are returned as they are. + Boolean objects are converted to numbers. + Numbers are converted to |Float| values if vim was compiled + with |+float| and to numbers otherwise. + Dictionaries and lists obtained by vim.eval() are returned + as-is. + Other objects are returned as zero without any errors. + See |lua-luaeval| for more details. + {only available when compiled with the |+lua| feature} + map({expr}, {string}) *map()* {expr} must be a |List| or a |Dictionary|. Replace each item in {expr} with the result of evaluating @@ -4319,7 +4339,7 @@ mode([expr]) Return a string that indicates the current mode. mzeval({expr}) *mzeval()* Evaluate MzScheme expression {expr} and return its result - convert to Vim data structures. + converted to Vim data structures. Numbers and strings are returned as they are. Pairs (including lists and improper lists) and vectors are returned as Vim |Lists|. @@ -4854,7 +4874,7 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* A zero value is equal to not giving the argument. When the {timeout} argument is given the search stops when - more than this many milli seconds have passed. Thus when + more than this many milliseconds have passed. Thus when {timeout} is 500 the search stops after half a second. The value must not be negative. A zero value is like not giving the argument. @@ -5090,7 +5110,7 @@ setline({lnum}, {text}) *setline()* will be set to the items in the list. Example: > :call setline(5, ['aaa', 'bbb', 'ccc']) < This is equivalent to: > - :for [n, l] in [[5, 6, 7], ['aaa', 'bbb', 'ccc']] + :for [n, l] in [[5, 'aaa'], [6, 'bbb'], [7, 'ccc']] : call setline(n, l) :endfor < Note: The '[ and '] marks are not set. @@ -5779,9 +5799,9 @@ tabpagebuflist([{arg}]) *tabpagebuflist()* omitted the current tab page is used. When {arg} is invalid the number zero is returned. To get a list of all buffers in all tabs use this: > - tablist = [] + let buflist = [] for i in range(tabpagenr('$')) - call extend(tablist, tabpagebuflist(i + 1)) + call extend(buflist, tabpagebuflist(i + 1)) endfor < Note that a buffer may appear in more than one window. @@ -5944,6 +5964,8 @@ undofile({name}) *undofile()* the undo file exists. {name} is always expanded to the full path, since that is what is used internally. + If {name} is empty undofile() returns an empty string, since a + buffer without a file name will not write an undo file. Useful in combination with |:wundo| and |:rundo|. When compiled without the +persistent_undo option this always returns an empty string. @@ -6003,7 +6025,7 @@ virtcol({expr}) *virtcol()* would be of unlimited width. When there is a <Tab> at the position, the returned Number will be the column at the end of the <Tab>. For example, for a <Tab> in column 1, with 'ts' - set to 8, it returns 8. + set to 8, it returns 8. |conceal| is ignored. For the byte position use |col()|. For the use of {expr} see |col()|. When 'virtualedit' is used {expr} can be [lnum, col, off], where diff --git a/en/indent.txt b/en/indent.txt index 9a4aaa79a..ce02178d7 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -459,6 +459,22 @@ The examples below assume a 'shiftwidth' of 4. argument); argument); a_short_line(argument, a_short_line(argument, argument); argument); +< + *cino-k* + kN When in unclosed parentheses which follow "if", "for" or + "while" and N is non-zero, overrides the behaviour defined by + "(N": causes the indent to be N characters relative to the outer + context (i.e. the line where "if", "for" or "while" is). Has + no effect on deeper levels of nesting. Affects flags like "wN" + only for the "if", "for" and "while" conditions. If 0, defaults + to behaviour defined by the "(N" flag. (default: 0). + + cino=(0 cino=(0,ks > + if (condition1 if (condition1 + && condition2) && condition2) + action(); action(); + function(argument1 function(argument1 + && argument2); && argument2); < *cino-m* mN When N is non-zero, line up a line starting with a closing @@ -530,14 +546,14 @@ The examples below assume a 'shiftwidth' of 4. *cino-#* #N When N is non-zero recognize shell/Perl comments, starting with - '#'. Default N is zero: don't recognizes '#' comments. Note + '#'. Default N is zero: don't recognize '#' comments. Note that lines starting with # will still be seen as preprocessor lines. The defaults, spelled out in full, are: cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, - c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 + c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 Vim puts a line in column 1 if: - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. From c46c06ee0a7a756359f689d38ba8e5a5c2a2367d Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sat, 7 Jul 2012 08:26:51 +0900 Subject: [PATCH 403/783] update en/tabpage.txt to 7.3.591 --- en/tabpage.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/en/tabpage.txt b/en/tabpage.txt index a30d3a179..a2da5b307 100644 --- a/en/tabpage.txt +++ b/en/tabpage.txt @@ -173,10 +173,20 @@ Other commands: REORDERING TAB PAGES: :tabm[ove] [N] *:tabm* *:tabmove* +:[N]tabm[ove] Move the current tab page to after tab page N. Use zero to make the current tab page the first one. Without N the tab page is made the last one. +:tabm[ove] +[N] +:tabm[ove] -[N] + Move the current tab page N places to the right (with +) or to + the left (with -). + +Note that although it is possible to move a tab behind the N-th one by using +:Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For +clarification what +N means in this context see |[range]|. + LOOPING OVER TAB PAGES: From a1732937f814d9274dd61f3ad773289d9787c52f Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 9 Jul 2012 23:05:51 +0900 Subject: [PATCH 404/783] update en/visual.txt to 7.3.591 --- en/visual.txt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/en/visual.txt b/en/visual.txt index 8c50a2900..f57384521 100644 --- a/en/visual.txt +++ b/en/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 7.3. Last change: 2010 Feb 17 +*visual.txt* For Vim version 7.3. Last change: 2012 May 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -61,15 +61,20 @@ position. 2. Starting and stopping Visual mode *visual-start* *v* *characterwise-visual* -v start Visual mode per character. +[count]v Start Visual mode per character. + With [count] select that many characters, like moving + the cursor right [count] characters. One less when + 'selection' is not "exclusive". *V* *linewise-visual* -V start Visual mode linewise. +[count]V Start Visual mode linewise. + With [count] select that many lines. *CTRL-V* *blockwise-visual* -CTRL-V start Visual mode blockwise. Note: Under Windows +[count]CTRL-V Start Visual mode blockwise. Note: Under Windows CTRL-V could be mapped to paste text, it doesn't work to start Visual mode then, see |CTRL-V-alternative|. + [count] is used as with `v` above. If you use <Esc>, click the left mouse button or use any command that does a jump to another buffer while in Visual mode, the highlighting stops From bddfae0fe3920d671b5ed4b552d96d81c709b00d Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Fri, 13 Jul 2012 07:02:43 +0900 Subject: [PATCH 405/783] update en/mbyte.txt --- en/mbyte.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/en/mbyte.txt b/en/mbyte.txt index c4ea4e87d..9a37b8663 100644 --- a/en/mbyte.txt +++ b/en/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.3. Last change: 2012 Feb 29 +*mbyte.txt* For Vim version 7.3. Last change: 2012 Jun 06 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -475,7 +475,7 @@ Useful utilities for converting the charset: |charset| converter. Supported |charset|: ISO-2022-CN, ISO-2022-JP, ISO-2022-KR, EUC-CN, EUC-JP, EUC-KR, EUC-TW, UTF-7, UTF-8, ISO-8859 series, Shift_JIS, Big5 and HZ. Lv can be found at: - http://www.ff.iij4u.or.jp/~nrt/freeware/lv4495.tar.gz + http://www.ff.iij4u.or.jp/~nrt/lv/index.html *mbyte-conversion* @@ -615,7 +615,7 @@ Each field means: charsets, such as JIS X 0208, if this field is 0, code points has the same value as GL, and GR if 1. -For example, in case of a 14 dots font corresponding to JIS X 0208, it is +For example, in case of a 16 dots font corresponding to JIS X 0208, it is written like: -misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0 From cccdf27300197019f58b43e9f2f350341c79e55c Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Thu, 26 Jul 2012 23:21:22 +0900 Subject: [PATCH 406/783] update en/pi_gzip.txt to 7.3.615 --- en/pi_gzip.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/en/pi_gzip.txt b/en/pi_gzip.txt index 38979dca1..f9b644206 100644 --- a/en/pi_gzip.txt +++ b/en/pi_gzip.txt @@ -1,4 +1,4 @@ -*pi_gzip.txt* For Vim version 7.3. Last change: 2002 Oct 29 +*pi_gzip.txt* For Vim version 7.3. Last change: 2012 Jul 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -25,6 +25,8 @@ with these extensions: *.Z compress (Lempel-Ziv) *.gz gzip *.bz2 bzip2 + *.lzma lzma + *.xz xz That's actually the only thing you need to know. There are no options. From ca1b7f6899b3772a20dd7dd27cfc412057d0ad69 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 29 Jul 2012 10:45:11 +0900 Subject: [PATCH 407/783] update to snapshot --- en/autocmd.txt | 17 +- en/change.txt | 3 +- en/cmdline.txt | 9 +- en/editing.txt | 39 ++-- en/eval.txt | 33 +++- en/if_lua.txt | 149 ++++++++++++--- en/if_pyth.txt | 42 ++++- en/index.txt | 6 +- en/insert.txt | 6 +- en/motion.txt | 14 +- en/options.txt | 106 +++++++---- en/quickfix.txt | 4 +- en/sign.txt | 10 +- en/syntax.txt | 470 ++++++++++++++++++++++++++++++++---------------- en/visual.txt | 19 +- 15 files changed, 673 insertions(+), 254 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index 7811cfe18..a8bff07c5 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.3. Last change: 2012 Feb 22 +*autocmd.txt* For Vim version 7.3. Last change: 2012 Jul 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -385,6 +385,10 @@ BufRead or BufReadPost When starting to edit a new buffer, after This does NOT work for ":r file". Not used when the file doesn't exist. Also used after successfully recovering a file. + Also triggered for the filetypedetect group + when executing ":filetype detect" and when + writing an unnamed buffer in a way that the + buffer gets a name. *BufReadCmd* BufReadCmd Before starting to edit a new buffer. Should read the file into the buffer. |Cmd-event| @@ -474,6 +478,11 @@ CmdwinLeave Before leaving the command-line window. *ColorScheme* ColorScheme After loading a color scheme. |:colorscheme| + *CompleteDone* +CompleteDone After Insert mode completion is done. Either + when something was completed or abandoning + completion. |ins-completion| + *CursorHold* CursorHold When the user doesn't press a key for the time specified with 'updatetime'. Not re-triggered @@ -717,6 +726,12 @@ QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix it is run after error file is read and before moving to the first error. See |QuickFixCmdPost-example|. + *QuitPre* +QuitPre When using `:quit`, before deciding whether it + closes the current window or quits Vim. Can + be used to close any non-essential window if + the current window is the last ordinary + window. *RemoteReply* RemoteReply When a reply from a Vim that functions as server was received |server2client()|. The diff --git a/en/change.txt b/en/change.txt index 597d1db37..7e753f725 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.3. Last change: 2012 Apr 30 +*change.txt* For Vim version 7.3. Last change: 2012 Jun 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1502,6 +1502,7 @@ n When formatting text, recognize numbered lists. This actually uses first line of a paragraph second line of the same paragraph third line. +< This also works inside comments, ignoring the comment leader. v Vi-compatible auto-wrapping in insert mode: Only break a line at a blank that you have entered during the current insert command. (Note: this is not 100% Vi compatible. Vi has some "unexpected features" or diff --git a/en/cmdline.txt b/en/cmdline.txt index a66826512..a9e8acf53 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.3. Last change: 2012 Feb 05 +*cmdline.txt* For Vim version 7.3. Last change: 2012 Jun 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -826,10 +826,11 @@ These modifiers can be given, in this order: the home directory. If the name is a directory a path separator is added at the end. For a file name that does not exist and does not have an absolute path the result is - unpredictable. + unpredictable. On MS-Windows an 8.3 filename is expanded to + the long name. :8 Converts the path to 8.3 short format (currently only on - win32). Will act on as much of a path that is an existing - path. + MS-Windows). Will act on as much of a path that is an + existing path. :~ Reduce file name to be relative to the home directory, if possible. File name is unmodified if it is not below the home directory. diff --git a/en/editing.txt b/en/editing.txt index 828de1501..e598f31ee 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.3. Last change: 2012 Apr 03 +*editing.txt* For Vim version 7.3. Last change: 2012 Jul 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -377,8 +377,9 @@ command that accepts more than one file name (like ":next file1 file2") embedded spaces must be escaped with a backslash. *wildcard* *wildcards* -Wildcards in {file} are expanded. Which wildcards are supported depends on -the system. These are the common ones: +Wildcards in {file} are expanded, but as with file completion, 'wildignore' +and 'suffixes' apply. Which wildcards are supported depends on the system. +These are the common ones: ? matches one character * matches anything, including nothing ** matches anything, including nothing, recurses into directories @@ -422,9 +423,11 @@ You can have the backticks expanded as a Vim expression, instead of an external command, by using the syntax `={expr}` e.g.: > :e `=tempname()` The expression can contain just about anything, thus this can also be used to -avoid the special meaning of '"', '|', '%' and '#'. Names are to be separated -with line breaks. When the result is a |List| then each item is used as a -name. Line breaks also separate names. +avoid the special meaning of '"', '|', '%' and '#'. However, 'wildignore' +does apply like to other wildcars. +If the expression returns a string then names are to be separated with line +breaks. When the result is a |List| then each item is used as a name. Line +breaks also separate names. *++opt* *[++opt]* The [++opt] argument can be used to force the value of 'fileformat', @@ -1066,6 +1069,7 @@ The names can be in upper- or lowercase. If there are other tab pages and quitting the last window in the current tab page the current tab page is closed |tab-page|. + Triggers the |QuitPre| autocommand event. :conf[irm] q[uit] Quit, but give prompt when changes have been made, or the last file in the argument list has not been @@ -1215,13 +1219,13 @@ For versions of Vim where browsing is not supported, the command is executed unmodified. *browsefilter* -For MS Windows, you can modify the filters that are used in the browse dialog. -By setting the g:browsefilter or b:browsefilter variables, you can change the -filters globally or locally to the buffer. The variable is set to a string in -the format "{filter label}\t{pattern};{pattern}\n" where {filter label} is the -text that appears in the "Files of Type" comboBox, and {pattern} is the -pattern which filters the filenames. Several patterns can be given, separated -by ';'. +For MS Windows and GTK, you can modify the filters that are used in the browse +dialog. By setting the g:browsefilter or b:browsefilter variables, you can +change the filters globally or locally to the buffer. The variable is set to +a string in the format "{filter label}\t{pattern};{pattern}\n" where {filter +label} is the text that appears in the "Files of Type" comboBox, and {pattern} +is the pattern which filters the filenames. Several patterns can be given, +separated by ';'. For Motif the same format is used, but only the very first pattern is actually used (Motif only offers one pattern, but you can edit it). @@ -1229,7 +1233,7 @@ used (Motif only offers one pattern, but you can edit it). For example, to have only Vim files in the dialog, you could use the following command: > - let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n" + let g:browsefilter = "Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n" You can override the filter setting on a per-buffer basis by setting the b:browsefilter variable. You would most likely set b:browsefilter in a @@ -1239,6 +1243,13 @@ difficult to start editing a file of a different type. To overcome this, you may want to add "All Files\t*.*\n" as the final filter, so that the user can still access any desired file. +To avoid setting browsefilter when Vim does not actually support it, you can +use has("browsefilter"): > + + if has("browsefilter") + let g:browsefilter = "whatever" + endif + ============================================================================== 7. The current directory *current-directory* diff --git a/en/eval.txt b/en/eval.txt index 0df4ba4b3..91acac029 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2012 May 18 +*eval.txt* For Vim version 7.3. Last change: 2012 Jul 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1880,6 +1880,8 @@ pow( {x}, {y}) Float {x} to the power of {y} prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} printf( {fmt}, {expr1}...) String format text pumvisible() Number whether popup menu is visible +pyeval( {expr}) any evaluate |Python| expression +py3eval( {expr}) any evaluate |python3| expression range( {expr} [, {max} [, {stride}]]) List items from {expr} to {max} readfile( {fname} [, {binary} [, {max}]]) @@ -3565,6 +3567,9 @@ histadd({history}, {item}) *histadd()* "search" or "/" search pattern history "expr" or "=" typed expression history "input" or "@" input line history + "debug" or ">" debug command history + The {history} string does not need to be the whole name, one + character is sufficient. If {item} does already exist in the history, it will be shifted to become the newest entry. The result is a Number: 1 if the operation was successful, @@ -4033,7 +4038,7 @@ map({expr}, {string}) *map()* The operation is done in-place. If you want a |List| or |Dictionary| to remain unmodified make a copy first: > - :let tlist = map(copy(mylist), ' & . "\t"') + :let tlist = map(copy(mylist), ' v:val . "\t"') < Returns {expr}, the |List| or |Dictionary| that was filtered. When an error is encountered while evaluating {string} no @@ -4610,6 +4615,29 @@ pumvisible() *pumvisible()* This can be used to avoid some things that would remove the popup menu. + *E860* *E861* +py3eval({expr}) *py3eval()* + Evaluate Python expression {expr} and return its result + converted to Vim data structures. + Numbers and strings are returned as they are (strings are + copied though, unicode strings are additionally converted to + 'encoding'). + Lists are represented as Vim |List| type. + Dictionaries are represented as Vim |Dictionary| type with + keys converted to strings. + {only available when compiled with the |+python3| feature} + + *E858* *E859* +pyeval({expr}) *pyeval()* + Evaluate Python expression {expr} and return its result + converted to Vim data structures. + Numbers and strings are returned as they are (strings are + copied though). + Lists are represented as Vim |List| type. + Dictionaries are represented as Vim |Dictionary| type with + keys converted to strings. + {only available when compiled with the |+python| feature} + *E726* *E727* range({expr} [, {max} [, {stride}]]) *range()* Returns a |List| with Numbers: @@ -6219,6 +6247,7 @@ balloon_multiline GUI supports multiline balloons. beos BeOS version of Vim. browse Compiled with |:browse| support, and browse() will work. +browsefilter Compiled with support for |browsefilter|. builtin_terms Compiled with some builtin terminals. byte_offset Compiled with support for 'o' in 'statusline' cindent Compiled with 'cindent' support. diff --git a/en/if_lua.txt b/en/if_lua.txt index 65148224c..f6f56048a 100644 --- a/en/if_lua.txt +++ b/en/if_lua.txt @@ -1,4 +1,4 @@ -*if_lua.txt* For Vim version 7.3. Last change: 2010 Jul 22 +*if_lua.txt* For Vim version 7.3. Last change: 2012 Jun 29 VIM REFERENCE MANUAL by Luis Carvalho @@ -8,8 +8,11 @@ The Lua Interface to Vim *lua* *Lua* 1. Commands |lua-commands| 2. The vim module |lua-vim| -3. Buffer userdata |lua-buffer| -4. Window userdata |lua-window| +3. List userdata |lua-list| +4. Dict userdata |lua-dict| +5. Buffer userdata |lua-buffer| +6. Window userdata |lua-window| +7. The luaeval function |lua-luaeval| {Vi does not have any of these commands} @@ -56,13 +59,14 @@ Example: < *:luado* -:[range]luado {body} Execute Lua function "function (line) {body} end" for - each line in the [range], with the function argument - being set to the text of each line in turn, without a - trailing <EOL>. If the value returned by the function - is a string it becomes the text of the line in the - current turn. The default for [range] is the whole - file: "1,$". {not in Vi} +:[range]luado {body} Execute Lua function "function (line, linenr) {body} + end" for each line in the [range], with the function + argument being set to the text of each line in turn, + without a trailing <EOL>, and the current line number. + If the value returned by the function is a string it + becomes the text of the line in the current turn. The + default for [range] is the whole file: "1,$". + {not in Vi} Examples: > @@ -88,11 +92,9 @@ Examples: All these commands execute a Lua chunk from either the command line (:lua and :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua interpreter, each chunk has its own scope and so only global variables are -shared between command calls. Lua default libraries "table", "string", "math", -and "package" are available, "io" and "debug" are not, and "os" is restricted -to functions "date", "clock", "time", "difftime", and "getenv". In addition, -Lua "print" function has its output redirected to the Vim message area, with -arguments separated by a white space instead of a tab. +shared between command calls. All Lua default libraries are available. In +addition, Lua "print" function has its output redirected to the Vim message +area, with arguments separated by a white space instead of a tab. Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim and manage buffers (|lua-buffer|) and windows (|lua-window|). However, @@ -108,9 +110,9 @@ input range are stored in "vim.firstline" and "vim.lastline" respectively. The module also includes routines for buffer, window, and current line queries, Vim evaluation and command execution, and others. - vim.isbuffer(value) Returns 'true' (boolean, not string) if - "value" is a buffer userdata and 'false' - otherwise (see |lua-buffer|). + vim.list() Returns an empty list (see |List|). + + vim.dict() Returns an empty dictionary (see |Dictionary|). vim.buffer([arg]) If "arg" is a number, returns buffer with number "arg" in the buffer list or, if "arg" @@ -121,16 +123,21 @@ Vim evaluation and command execution, and others. 'true' returns the first buffer in the buffer list or else the current buffer. - vim.iswindow(value) Returns 'true' (boolean, not string) if - "value" is a window userdata and - 'false' otherwise (see |lua-window|). - vim.window([arg]) If "arg" is a number, returns window with number "arg" or 'nil' (nil value, not string) if not found. Otherwise, if "toboolean(arg)" is 'true' returns the first window or else the current window. + vim.type({arg}) Returns the type of {arg}. It is equivalent to + Lua's "type" function, but returns "list", + "dict", "buffer", or "window" if {arg} is a + list, dictionary, buffer, or window, + respectively. Examples: > + :lua l = vim.list() + :lua print(type(l), vim.type(l)) + :" userdata list +< vim.command({cmd}) Executes the vim (ex-mode) command {cmd}. Examples: > :lua vim.command"set tw=60" @@ -141,7 +148,7 @@ Vim evaluation and command execution, and others. Vim strings and numbers are directly converted to Lua strings and numbers respectively. Vim lists and dictionaries are converted to Lua - tables (lists become integer-keyed tables). + userdata (see |lua-list| and |lua-dict|). Examples: > :lua tw = vim.eval"&tw" :lua print(vim.eval"{'a': 'one'}".a) @@ -157,7 +164,72 @@ Vim evaluation and command execution, and others. ============================================================================== -3. Buffer userdata *lua-buffer* +3. List userdata *lua-list* + +List userdata represent vim lists, and the interface tries to follow closely +Vim's syntax for lists. Since lists are objects, changes in list references in +Lua are reflected in Vim and vice-versa. A list "l" has the following +properties and methods: + +Properties +---------- + o "#l" is the number of items in list "l", equivalent to "len(l)" + in Vim. + o "l[k]" returns the k-th item in "l"; "l" is zero-indexed, as in Vim. + To modify the k-th item, simply do "l[k] = newitem"; in + particular, "l[k] = nil" removes the k-th item from "l". + o "l()" returns an iterator for "l". + +Methods +------- + o "l:add(item)" appends "item" to the end of "l". + o "l:insert(item[, pos])" inserts "item" at (optional) + position "pos" in the list. The default value for "pos" is 0. + +Examples: +> + :let l = [1, 'item'] + :lua l = vim.eval('l') -- same 'l' + :lua l:add(vim.list()) + :lua l[0] = math.pi + :echo l[0] " 3.141593 + :lua l[0] = nil -- remove first item + :lua l:insert(true, 1) + :lua print(l, #l, l[0], l[1], l[-1]) + :lua for item in l() do print(item) end +< + +============================================================================== +4. Dict userdata *lua-dict* + +Similarly to list userdata, dict userdata represent vim dictionaries; since +dictionaries are also objects, references are kept between Lua and Vim. A dict +"d" has the following properties: + +Properties +---------- + o "#d" is the number of items in dict "d", equivalent to "len(d)" + in Vim. + o "d.key" or "d['key']" returns the value at entry "key" in "d". + To modify the entry at this key, simply do "d.key = newvalue"; in + particular, "d.key = nil" removes the entry from "d". + o "d()" returns an iterator for "d" and is equivalent to "items(d)" in + Vim. + +Examples: +> + :let d = {'n':10} + :lua d = vim.eval('d') -- same 'd' + :lua print(d, d.n, #d) + :let d.self = d + :lua for k, v in d() do print(d, k, v) end + :lua d.x = math.pi + :lua d.self = nil -- remove entry + :echo d +< + +============================================================================== +5. Buffer userdata *lua-buffer* Buffer userdata represent vim buffers. A buffer userdata "b" has the following properties and methods: @@ -209,7 +281,7 @@ Examples: < ============================================================================== -4. Window userdata *lua-window* +6. Window userdata *lua-window* Window objects represent vim windows. A window userdata "w" has the following properties and methods: @@ -241,4 +313,29 @@ Examples: < ============================================================================== - vim:tw=78:ts=8:ft=help:norl: +7. The luaeval function *lua-luaeval* *lua-eval* + +The (dual) equivalent of "vim.eval" for passing Lua values to Vim is +"luaeval". "luaeval" takes an expression string and an optional argument and +returns the result of the expression. It is semantically equivalent in Lua to: +> + local chunkheader = "local _A = select(1, ...) return " + function luaeval (expstr, arg) + local chunk = assert(loadstring(chunkheader .. expstr, "luaeval")) + return chunk(arg) -- return typval + end +< +Note that "_A" receives the argument to "luaeval". Examples: > + + :echo luaeval('math.pi') + :lua a = vim.list():add('newlist') + :let a = luaeval('a') + :echo a[0] " 'newlist' + :function Rand(x,y) " random uniform between x and y + : return luaeval('(_A.y-_A.x)*math.random()+_A.x', {'x':a:x,'y':a:y}) + : endfunction + :echo Rand(1,10) + + +============================================================================== + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/en/if_pyth.txt b/en/if_pyth.txt index e542a04f5..31a0d07f9 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -6,13 +6,14 @@ The Python Interface to Vim *python* *Python* -1. Commands |python-commands| -2. The vim module |python-vim| -3. Buffer objects |python-buffer| -4. Range objects |python-range| -5. Window objects |python-window| -6. Dynamic loading |python-dynamic| -7. Python 3 |python3| +1. Commands |python-commands| +2. The vim module |python-vim| +3. Buffer objects |python-buffer| +4. Range objects |python-range| +5. Window objects |python-window| +6. pyeval(), py3eval() Vim functions |python-pyeval| +7. Dynamic loading |python-dynamic| +8. Python 3 |python3| {Vi does not have any of these commands} @@ -150,6 +151,22 @@ vim.eval(str) *python-eval* [{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name': 'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] +vim.bindeval(str) *python-bindeval* + Like |python-eval|, but + 1. if expression evaluates to |List| or |Dictionary| it is returned as + vimlist or vimdictionary python type that are connected to original + list or dictionary. Thus modifications to these objects imply + modifications of the original. + 2. if expression evaluates to a function reference, then it returns + callable vimfunction object. Use self keyword argument to assign + |self| object for dictionary functions. + + Note: this function has the same behavior as |lua-eval| (except that + lua does not support running vim functions), |python-eval| is + kept for backwards compatibility in order not to make scripts + relying on outputs of vim.eval() being a copy of original or + vim.eval("1") returning a string. + Error object of the "vim" module @@ -319,7 +336,13 @@ The height attribute is writable only if the screen is split horizontally. The width attribute is writable only if the screen is split vertically. ============================================================================== -6. Dynamic loading *python-dynamic* +6. pyeval() and py3eval() Vim functions *python-pyeval* + +To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()| +functions to evaluate Python expressions and pass their values to VimL. + +============================================================================== +7. Dynamic loading *python-dynamic* On MS-Windows the Python library can be loaded dynamically. The |:version| output then includes |+python/dyn|. @@ -336,13 +359,14 @@ Currently the name is "python24.dll". That is for Python 2.4. To know for sure edit "gvim.exe" and search for "python\d*.dll\c". ============================================================================== -7. Python 3 *python3* +8. Python 3 *python3* *:py3* *:python3* The |:py3| and |:python3| commands work similar to |:python|. *:py3file* The |:py3file| command works similar to |:pyfile|. + Vim can be built in four ways (:version output): 1. No Python support (-python, -python3) 2. Python 2 support only (+python or +python/dyn, -python3) diff --git a/en/index.txt b/en/index.txt index c01f1d031..423e7b9ac 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.3. Last change: 2011 Aug 06 +*index.txt* For Vim version 7.3. Last change: 2012 Jul 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -719,6 +719,8 @@ tag char note action in Normal mode ~ |gH| gH start Select line mode |gI| gI 2 like "I", but always start in column 1 |gJ| gJ 2 join lines without inserting space +|gN| gN 1,2 find the previous match with the last used + search pattern and Visually select it |gP| ["x]gP 2 put the text [from register x] before the cursor N times, leave the cursor after it |gQ| gQ switch to "Ex" mode with Vim editing @@ -751,6 +753,8 @@ tag char note action in Normal mode ~ lines down |gk| gk 1 like "k", but when 'wrap' on go N screen lines up +|gn| gn 1,2 find the next match with the last used + search pattern and Visually select it |gm| gm 1 go to character at middle of the screenline |go| go 1 cursor to byte N in the buffer |gp| ["x]gp 2 put the text [from register x] after the diff --git a/en/insert.txt b/en/insert.txt index 4629c0f6c..bf020fd42 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.3. Last change: 2012 May 18 +*insert.txt* For Vim version 7.3. Last change: 2012 Jul 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -491,7 +491,7 @@ option} *ins-smarttab* When the 'smarttab' option is on, a <Tab> inserts 'shiftwidth' positions at the beginning of a line and 'tabstop' positions in other places. This means -that often spaces instead of a <Tab> character are inserted. When 'smarttab +that often spaces instead of a <Tab> character are inserted. When 'smarttab' is off, a <Tab> always inserts 'tabstop' positions, and 'shiftwidth' is only used for ">>" and the like. {not in Vi} @@ -1044,6 +1044,8 @@ that contains the List. The Dict can have these items: leading text is changed. Other items are ignored. +For acting upon end of completion, see the |CompleteDone| autocommand event. + For example, the function can contain this: > let matches = ... list of words ... return {'words': matches, 'refresh': 'always'} diff --git a/en/motion.txt b/en/motion.txt index ccf689889..e1c937243 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.3. Last change: 2011 Jul 19 +*motion.txt* For Vim version 7.3. Last change: 2012 Jul 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -57,7 +57,7 @@ or change text. The following operators are available: |>| > shift right |<| < shift left |zf| zf define a fold - |g@| g@ call function set with the 'operatorfunc' option + |g@| g@ call function set with the 'operatorfunc' option If the motion includes a count and the operator also had a count before it, the two counts are multiplied. For example: "2d3w" deletes six words. @@ -513,6 +513,8 @@ always select less text than the "a" commands. These commands are {not in Vi}. These commands are not available when the |+textobjects| feature has been disabled at compile time. +Also see `gn` and `gN`, operating on the last search pattern. + *v_aw* *aw* aw "a word", select [count] words (see |word|). Leading or trailing white space is included, but not @@ -689,6 +691,7 @@ movement commands are used. "daw" delete a word *daw* "diW" delete inner WORD (see |WORD|) *diW* "daW" delete a WORD (see |WORD|) *daW* + "dgn" delete the next search pattern match *dgn* "dd" delete one line |dd| "dis" delete inner sentence *dis* "das" delete a sentence *das* @@ -750,6 +753,13 @@ m[ or m] Set the |'[| or |']| mark. Useful when an operator is to be simulated by multiple commands. (does not move the cursor, this is not a motion command). + *m<* *m>* +m< or m> Set the |'<| or |'>| mark. Useful to change what the + `gv` command selects. (does not move the cursor, this + is not a motion command). + Note that the Visual mode cannot be set, only the + start and end position. + *:ma* *:mark* *E191* :[range]ma[rk] {a-zA-Z'} Set mark {a-zA-Z'} at last line number in [range], diff --git a/en/options.txt b/en/options.txt index 23ac10a61..a31ae3d16 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.3. Last change: 2012 Feb 22 +*options.txt* For Vim version 7.3. Last change: 2012 Jul 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -744,7 +744,7 @@ A jump table for the options with a short description can be found at |Q_op|. - Reset the 'rightleft' option. - Disable the use of 'keymap' (without changing its value). Note that 'arabicshape' and 'delcombine' are not reset (it is a global - option. + option). Also see |arabic.txt|. *'arabicshape'* *'arshape'* @@ -1047,6 +1047,11 @@ A jump table for the options with a short description can be found at |Q_op|. When $TMPDIR, $TMP or $TEMP is not defined, it is not used for the default value. "/tmp/*" is only used for Unix. + WARNING: Not having a backup file means that when Vim fails to write + your buffer correctly and then, for whatever reason, Vim exits, you + lose both the original file and what you were writing. Only disable + backups if you don't care about losing the file. + Note that environment variables are not expanded. If you want to use $HOME you must expand it explicitly, e.g.: > :let backupskip = escape(expand('$HOME'), '\') . '/tmp/*' @@ -1102,8 +1107,8 @@ A jump table for the options with a short description can be found at |Q_op|. Vim does not try to send a message to an external debugger (Netbeans or Sun Workshop). - The expression may be evaluated in the |sandbox|, see - |sandbox-option|. + The expression will be evaluated in the |sandbox| when set from a + modeline, see |sandbox-option|. It is not allowed to change text or jump to another window while evaluating 'balloonexpr' |textlock|. @@ -1447,6 +1452,7 @@ A jump table for the options with a short description can be found at |Q_op|. This option is a list of comma separated names. These names are recognized: + *clipboard-unnamed* unnamed When included, Vim will use the clipboard register '*' for all yank, delete, change and put operations which would normally go to the unnamed register. When a @@ -1456,6 +1462,7 @@ A jump table for the options with a short description can be found at |Q_op|. explicitly accessed using the "* notation. Also see |gui-clipboard|. + *clipboard-unnamedplus* unnamedplus A variant of "unnamed" flag which uses the clipboard register '+' (|quoteplus|) instead of register '*' for all operations except yank. Yank shall copy the text @@ -1465,6 +1472,7 @@ A jump table for the options with a short description can be found at |Q_op|. Availability can be checked with: > if has('unnamedplus') < + *clipboard-autoselect* autoselect Works like the 'a' flag in 'guioptions': If present, then whenever Visual mode is started, or the Visual area extended, Vim tries to become the owner of the @@ -1476,9 +1484,16 @@ A jump table for the options with a short description can be found at |Q_op|. "autoselect" flag is used. Also applies to the modeless selection. + *clipboard-autoselectplus* + autoselectplus Like "autoselect" but using the + register instead of + the * register. Compare to the 'P' flag in + 'guioptions'. + + *clipboard-autoselectml* autoselectml Like "autoselect", but for the modeless selection only. Compare to the 'A' flag in 'guioptions'. + *clipboard-html* html When the clipboard contains HTML, use this when pasting. When putting text on the clipboard, mark it as HTML. This works to copy rendered HTML from @@ -1489,6 +1504,7 @@ A jump table for the options with a short description can be found at |Q_op|. Only supported for GTK version 2 and later. Only available with the |+multi_byte| feature. + *clipboard-exclude* exclude:{pattern} Defines a pattern that is matched against the name of the terminal 'term'. If there is a match, no @@ -2125,7 +2141,7 @@ A jump table for the options with a short description can be found at |Q_op|. and the cursor is right in front of the searched character, the cursor won't move. When not included, the cursor would skip over it and jump to the - following occurence. + following occurrence. POSIX flags. These are not included in the Vi default value, except when $VIM_POSIX was set on startup. |posix| @@ -3035,8 +3051,8 @@ A jump table for the options with a short description can be found at |Q_op|. The expression used for when 'foldmethod' is "expr". It is evaluated for each line to obtain its fold level. See |fold-expr|. - The expression may be evaluated in the |sandbox|, see - |sandbox-option|. + The expression will be evaluated in the |sandbox| if set from a + modeline, see |sandbox-option|. This option can't be set from a |modeline| when the 'diff' option is on. @@ -3178,8 +3194,8 @@ A jump table for the options with a short description can be found at |Q_op|. An expression which is used to specify the text displayed for a closed fold. See |fold-foldtext|. - The expression may be evaluated in the |sandbox|, see - |sandbox-option|. + The expression will be evaluated in the |sandbox| if set from a + modeline, see |sandbox-option|. It is not allowed to change text or jump to another window while evaluating 'foldtext' |textlock|. @@ -3224,8 +3240,8 @@ A jump table for the options with a short description can be found at |Q_op|. format function will be used |C-indenting|. Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. - The expression may be evaluated in the |sandbox|, see - |sandbox-option|. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'formatexpr'* *'fex'* 'formatexpr' 'fex' string (default "") @@ -3258,9 +3274,9 @@ A jump table for the options with a short description can be found at |Q_op|. When the expression evaluates to non-zero Vim will fall back to using the internal format mechanism. - The expression may be evaluated in the |sandbox|, see - |sandbox-option|. That stops the option from working, since changing - the buffer text is not allowed. + The expression will be evaluated in the |sandbox| when set from a + modeline, see |sandbox-option|. That stops the option from working, + since changing the buffer text is not allowed. *'fsync'* *'fs'* 'fsync' 'fs' boolean (default on) @@ -3584,6 +3600,9 @@ A jump table for the options with a short description can be found at |Q_op|. windowing system's global selection unless explicitly told to by a yank or delete operation for the "* register. The same applies to the modeless selection. + *'go-P'* + 'P' Like autoselect but using the "+ register instead of the "* + register. *'go-A'* 'A' Autoselect for the modeless selection. Like 'a', but only applies to the modeless selection. @@ -3772,9 +3791,10 @@ A jump table for the options with a short description can be found at |Q_op|. 'highlight' 'hl' string (default (as a single string): "8:SpecialKey,@:NonText,d:Directory, e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg, - M:ModeMsg,n:LineNr,r:Question, - s:StatusLine,S:StatusLineNC,c:VertSplit, - t:Title,v:Visual,w:WarningMsg,W:WildMenu, + M:ModeMsg,n:LineNr,N:CursorLineNr, + r:Question,s:StatusLine,S:StatusLineNC, + c:VertSplit, t:Title,v:Visual, + w:WarningMsg,W:WildMenu, f:Folded,F:FoldColumn,A:DiffAdd, C:DiffChange,D:DiffDelete,T:DiffText, >:SignColumn,B:SpellBad,P:SpellCap, @@ -3800,6 +3820,7 @@ A jump table for the options with a short description can be found at |Q_op|. |hl-ModeMsg| M Mode (e.g., "-- INSERT --") |hl-LineNr| n line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set. + |hl-CursorLineNr| N like n for when 'cursorline' is set. |hl-Question| r |hit-enter| prompt and yes/no questions |hl-StatusLine| s status line of current window |status-line| |hl-StatusLineNC| S status lines of not-current windows @@ -4079,8 +4100,8 @@ A jump table for the options with a short description can be found at |Q_op|. found. Allows doing "gf" on the name after an 'include' statement. Also used for |<cfile>|. - The expression may be evaluated in the |sandbox|, see - |sandbox-option|. + The expression will be evaluated in the |sandbox| when set from a + modeline, see |sandbox-option|. It is not allowed to change text or jump to another window while evaluating 'includeexpr' |textlock|. @@ -4144,8 +4165,8 @@ A jump table for the options with a short description can be found at |Q_op|. See |indent-expression|. NOTE: This option is made empty when 'compatible' is set. - The expression may be evaluated in the |sandbox|, see - |sandbox-option|. + The expression will be evaluated in the |sandbox| when set from a + modeline, see |sandbox-option|. It is not allowed to change text or jump to another window while evaluating 'indentexpr' |textlock|. @@ -4574,24 +4595,31 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Strings to use in 'list' mode and for the |:list| command. It is a comma separated list of string settings. + *lcs-eol* eol:c Character to show at the end of each line. When omitted, there is no extra character at the end of the line. + *lcs-tab* tab:xy Two characters to be used to show a tab. The first char is used once. The second char is repeated to fill the space that the tab normally occupies. "tab:>-" will show a tab that takes four spaces as ">---". When omitted, a tab is show as ^I. + *lcs-trail* trail:c Character to show for trailing spaces. When omitted, trailing spaces are blank. + *lcs-extends* extends:c Character to show in the last column, when 'wrap' is off and the line continues beyond the right of the screen. + *lcs-precedes* precedes:c Character to show in the first column, when 'wrap' is off and there is text preceding the character visible in the first column. + *lcs-conceal* conceal:c Character to show in place of concealed text, when 'conceallevel' is set to 1. + *lcs-nbsp* nbsp:c Character to show for a non-breakable space (character 0xA0, 160). Left blank when omitted. @@ -5078,7 +5106,8 @@ A jump table for the options with a short description can be found at |Q_op|. number. When a long, wrapped line doesn't start with the first character, '-' characters are put before the number. - See |hl-LineNr| for the highlighting used for the number. + See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for + the number. When setting this option, 'relativenumber' is reset. *'numberwidth'* *'nuw'* @@ -5111,6 +5140,8 @@ A jump table for the options with a short description can be found at |Q_op|. invoked and what it should return. This option is usually set by a filetype plugin: |:filetype-plugin-on| + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'opendevice'* *'odev'* *'noopendevice'* *'noodev'* @@ -5477,7 +5508,8 @@ A jump table for the options with a short description can be found at |Q_op|. number. When a long, wrapped line doesn't start with the first character, '-' characters are put before the number. - See |hl-LineNr| for the highlighting used for the number. + See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for + the number. When setting this option, 'number' is reset. *'remap'* *'noremap'* @@ -6290,7 +6322,7 @@ A jump table for the options with a short description can be found at |Q_op|. Override the 'ignorecase' option if the search pattern contains upper case characters. Only used when the search pattern is typed and 'ignorecase' option is on. Used for the commands "/", "?", "n", "N", - ":g" and ":s". Not used for "*", "#", "gd", tag search, etc.. After + ":g" and ":s". Not used for "*", "#", "gd", tag search, etc. After "*" and "#" you can make 'smartcase' used by doing a "/" command, recalling the search pattern from history and hitting <Enter>. NOTE: This option is reset when 'compatible' is set. @@ -6563,6 +6595,9 @@ A jump table for the options with a short description can be found at |Q_op|. evaluated and the result is used as the option value. Example: > :set statusline=%!MyStatusLine() < The result can contain %{} items that will be evaluated too. + Note that the "%!" expression is evaluated in the context of the + current window and buffer, while %{} items are evaluated in the + context of the window that the statusline belongs to. When there is error while evaluating the option then it will be made empty to avoid further errors. Otherwise screen updating would loop. @@ -6668,8 +6703,8 @@ A jump table for the options with a short description can be found at |Q_op|. The variable "actual_curbuf" is set to the 'bufnr()' number of the real current buffer. - The 'statusline' option may be evaluated in the |sandbox|, see - |sandbox-option|. + The 'statusline' option will be evaluated in the |sandbox| if set from + a modeline, see |sandbox-option|. It is not allowed to change text or jump to another window while evaluating 'statusline' |textlock|. @@ -7112,8 +7147,8 @@ A jump table for the options with a short description can be found at |Q_op|. the file should contain words with similar meaning, separated by non-keyword characters (white space is preferred). Maximum line length is 510 bytes. - To obtain a file to be used here, check out the wordlist FAQ at - http://www.hyphenologist.co.uk . + To obtain a file to be used here, check out this ftp site: + ftp://ftp.ox.ac.uk/pub/wordlists/ First get the README file. To include a comma in a file name precede it with a backslash. Spaces after a comma are ignored, otherwise spaces are included in the file name. See |option-backslash| about using backslashes. @@ -7829,9 +7864,9 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+wildignore| feature} A list of file patterns. A file that matches with one of these - patterns is ignored when completing file or directory names, and - influences the result of |expand()|, |glob()| and |globpath()| unless - a flag is passed to disable this. + patterns is ignored when expanding |wildcards|, completing file or + directory names, and influences the result of |expand()|, |glob()| and + |globpath()| unless a flag is passed to disable this. The pattern is used like with |:autocmd|, see |autocmd-patterns|. Also see 'suffixes'. Example: > @@ -8133,8 +8168,13 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Make a backup before overwriting a file. The backup is removed after the file was successfully written, unless the 'backup' option is - also on. Reset this option if your file system is almost full. See - |backup-table| for another explanation. + also on. + WARNING: Switching this option off means that when Vim fails to write + your buffer correctly and then, for whatever reason, Vim exits, you + lose both the original file and what you were writing. Only reset + this option if your file system is almost full and it makes the write + fail (and make sure not to exit Vim until the write was successful). + See |backup-table| for another explanation. When the 'backupskip' pattern matches, a backup is not made anyway. NOTE: This option is set to the default value when 'compatible' is set. diff --git a/en/quickfix.txt b/en/quickfix.txt index 0b3860924..9dd3baae0 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -561,7 +561,9 @@ commands can be combined to create a NewGrep command: > *:vim* *:vimgrep* *E682* *E683* :vim[grep][!] /{pattern}/[g][j] {file} ... Search for {pattern} in the files {file} ... and set - the error list to the matches. + the error list to the matches. Files matching + 'wildignore' are ignored; files in 'suffixes' are + searched last. Without the 'g' flag each line is added only once. With 'g' every match is added. diff --git a/en/sign.txt b/en/sign.txt index 9771fbdc7..64fde0870 100644 --- a/en/sign.txt +++ b/en/sign.txt @@ -1,4 +1,4 @@ -*sign.txt* For Vim version 7.3. Last change: 2012 Jan 04 +*sign.txt* For Vim version 7.3. Last change: 2012 Jul 10 VIM REFERENCE MANUAL by Gordon Prieur @@ -153,8 +153,14 @@ REMOVING SIGNS *:sign-unplace* *E159* Remove the previously placed sign {id} from file {fname}. See remark above about {fname} |:sign-fname|. +:sign unplace * file={fname} + Remove all placed signs in file {fname}. + :sign unplace {id} buffer={nr} - Same, but use buffer {nr}. + Remove the previously placed sign {id} from buffer {nr}. + +:sign unplace * buffer={nr} + Remove all placed signs in buffer {nr}. :sign unplace {id} Remove the previously placed sign {id} from all files it diff --git a/en/syntax.txt b/en/syntax.txt index e480968f9..d3ab0ab23 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.3. Last change: 2012 Feb 11 +*syntax.txt* For Vim version 7.3. Last change: 2012 Jul 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -199,7 +199,8 @@ REPLACING AN EXISTING SYNTAX FILE *mysyntaxfile-replace* If you don't like a distributed syntax file, or you have downloaded a new version, follow the same steps as for |mysyntaxfile| above. Just make sure that you write the syntax file in a directory that is early in 'runtimepath'. -Vim will only load the first syntax file found. +Vim will only load the first syntax file found, assuming that it sets +b:current_syntax. NAMING CONVENTIONS *group-name* *{group-name}* *E669* *W18* @@ -379,200 +380,334 @@ settings, depending on which syntax is active. Example: > This is not a syntax file itself, but a script that converts the current window into HTML. Vim opens a new window in which it builds the HTML file. +After you save the resulting file, you can view it with any browser. The +colors should be exactly the same as you see them in Vim. + You are not supposed to set the 'filetype' or 'syntax' option to "2html"! Source the script to convert the current file: > :runtime! syntax/2html.vim < - *:TOhtml* -Or use the ":TOhtml" user command. It is defined in a standard plugin. -":TOhtml" also works with a range and in a Visual area: > - - :10,40TOhtml - -Warning: This can be slow! The script must process every character of every -line. Because it can take a long time, by default a progress bar is displayed -in the statusline for each major step in the conversion process. If you don't -like seeing this progress bar, you can disable it and get a very minor speed -improvement with: > - - let g:html_no_progress = 1 - -":TOhtml" has another special feature: if the window is in diff mode, it will -generate HTML that shows all the related windows. This can be disabled by -setting the g:html_diff_one_file variable: > - - let g:html_diff_one_file = 1 +Many variables affect the output of 2html.vim; see below. Any of the on/off +options listed below can be enabled or disabled by setting them explicitly to +the desired value, or restored to their default by removing the variable using +|:unlet|. -After you save the resulting file, you can view it with any browser. The -colors should be exactly the same as you see them in Vim. +Remarks: +- Some truly ancient browsers may not show the background colors. +- From most browsers you can also print the file (in color)! +- The latest TOhtml may actually work with older versions of Vim, but some + features such as conceal support will not function, and the colors may be + incorrect for an old Vim without GUI support compiled in. +Here is an example how to run the script over all .c and .h files from a +Unix shell: > + for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done +< + *g:html_start_line* *g:html_end_line* To restrict the conversion to a range of lines, use a range with the |:TOhtml| -command, or set "g:html_start_line" and "g:html_end_line" to the first and -last line to be converted. Example, using the last set Visual area: > +command below, or set "g:html_start_line" and "g:html_end_line" to the first +and last line to be converted. Example, using the last set Visual area: > :let g:html_start_line = line("'<") :let g:html_end_line = line("'>") + :runtime! syntax/2html.vim +< + *:TOhtml* +:[range]TOhtml The ":TOhtml" command is defined in a standard plugin. + This command will source |2html.vim| for you. When a + range is given, set |g:html_start_line| and + |g:html_end_line| to the start and end of the range, + respectively. Default range is the entire buffer. + + If the current window is part of a |diff|, unless + |g:html_diff_one_file| is set, :TOhtml will convert + all windows which are part of the diff in the current + tab and place them side-by-side in a <table> element + in the generated HTML. + + Examples: > + + :10,40TOhtml " convert lines 10-40 to html + :'<,'>TOhtml " convert current/last visual selection + :TOhtml " convert entire buffer +< + *g:html_diff_one_file* +Default: 0. +When 0, all windows involved in a |diff| in the current tab page are converted +to HTML and placed side-by-side in a <table> element. +When 1, only the current buffer is converted. +Example: > + + let g:html_diff_one_file = 1 +< + *g:html_whole_filler* +Default: 0. +When 0, if |g:html_diff_one_file| is 1, a sequence of more than 3 filler lines +is displayed as three lines with the middle line mentioning the total number +of inserted lines. +When 1, always display all inserted lines as if |g:html_diff_one_file| were +not set. +> + :let g:html_whole_filler = 1 +< + *TOhtml-performance* *g:html_no_progress* +Default: 0. +When 0, display a progress bar in the statusline for each major step in the +2html.vim conversion process. +When 1, do not display the progress bar. This offers a minor speed improvement +but you won't have any idea how much longer the conversion might take; for big +files it can take a long time! +Example: > + + let g:html_no_progress = 1 +< +You can obtain better performance improvements by also instructing Vim to not +run interactively, so that too much time is not taken to redraw as the script +moves through the buffer, switches windows, and the like: > -The lines are numbered according to 'number' option and the Number -highlighting. You can force lines to be numbered in the HTML output by -setting "html_number_lines" to non-zero value: > + vim -E -s -c "let g:html_no_progress=1" -c "syntax on" -c "set ft=c" -c "runtime syntax/2html.vim" -cwqa myfile.c +< +Note that the -s flag prevents loading your .vimrc and any plugins, so you +need to explicitly source/enable anything that will affect the HTML +conversion. See |-E| and |-s-ex| for details. It is probably best to create a +script to replace all the -c commands and use it with the -u flag instead of +specifying each command separately. + + *g:html_number_lines* +Default: current 'number' setting. +When 0, buffer text is displayed in the generated HTML without line numbering. +When 1, a column of line numbers is added to the generated HTML with the same +highlighting as the line number column in Vim (|hl-LineNr|). +Force line numbers even if 'number' is not set: > :let g:html_number_lines = 1 -Force to omit the line numbers by using a zero value: > +Force to omit the line numbers: > :let g:html_number_lines = 0 Go back to the default to use 'number' by deleting the variable: > :unlet g:html_number_lines - -By default, valid HTML 4.01 using cascading style sheets (CSS1) is generated. -If you need to generate markup for really old browsers or some other user -agent that lacks basic CSS support, use: > +< + *g:html_use_css* +Default: 1. +When 1, generate valid HTML 4.01 markup with CSS1 styling, supported in all +modern browsers and most old browsers. +When 0, generate <font> tags and similar outdated markup. This is not +recommended but it may work better in really old browsers, email clients, +forum posts, and similar situations where basic CSS support is unavailable. +Example: > :let g:html_use_css = 0 - -Concealed text is removed from the HTML and replaced with the appropriate -character from |:syn-cchar| or 'listchars' depending on the current value of -'conceallevel'. If you always want to display all text in your document, -either set 'conceallevel' to zero before invoking 2html, or use: > +< + *g:html_ignore_conceal* +Default: 0. +When 0, concealed text is removed from the HTML and replaced with a character +from |:syn-cchar| or 'listchars' as appropriate, depending on the current +value of 'conceallevel'. +When 1, include all text from the buffer in the generated HTML, even if it is +|conceal|ed. + +Either of the following commands will ensure that all text in the buffer is +included in the generated HTML (unless it is folded): > :let g:html_ignore_conceal = 1 - -Similarly, closed folds are put in the HTML as they are displayed. If you -don't want this, use the |zR| command before invoking 2html, or use: > + :setl conceallevel=0 +< + *g:html_ignore_folding* +Default: 0. +When 0, text in a closed fold is replaced by the text shown for the fold in +Vim (|fold-foldtext|). See |g:html_dynamic_folds| if you also want to allow +the user to expand the fold as in Vim to see the text inside. +When 1, include all text from the buffer in the generated HTML; whether the +text is in a fold has no impact at all. |g:html_dynamic_folds| has no effect. + +Either of these commands will ensure that all text in the buffer is included +in the generated HTML (unless it is concealed): > + zR :let g:html_ignore_folding = 1 +< + *g:html_dynamic_folds* +Default: 0. +When 0, text in a closed fold is not included at all in the generated HTML. +When 1, generate javascript to open a fold and show the text within, just like +in Vim. -You may want to generate HTML that includes all the data within the folds, and -allow the user to view the folded data similar to how they would in Vim. To -generate this dynamic fold information, use: > - :let g:html_dynamic_folds = 1 - -Using html_dynamic_folds will imply html_use_css, because it would be far too -difficult to do it for old browsers. However, html_ignore_folding overrides -html_dynamic_folds. +Setting this variable to 1 causes 2html.vim to always use CSS for styling, +regardless of what |g:html_use_css| is set to. -Using html_dynamic_folds will default to generating a foldcolumn in the html -similar to Vim's foldcolumn, that will use javascript to open and close the -folds in the HTML document. The width of this foldcolumn starts at the current -setting of |'foldcolumn'| but grows to fit the greatest foldlevel in your -document. If you do not want to show a foldcolumn at all, use: > +This variable is ignored when |g:html_ignore_folding| is set. +> + :let g:html_dynamic_folds = 1 +< + *g:html_no_foldcolumn* +Default: 0. +When 0, if |g:html_dynamic_folds| is 1, generate a column of text similar to +Vim's foldcolumn (|fold-foldcolumn|) the user can click on to toggle folds +open or closed. The minimum width of the generated text column is the current +'foldcolumn' setting. +When 1, do not generate this column; instead, hovering the mouse cursor over +folded text will open the fold as if |g:html_hover_unfold| were set. +> :let g:html_no_foldcolumn = 1 - -Using this option, there will be no foldcolumn available to open the folds in -the HTML. For this reason, another option is provided: html_hover_unfold. -Enabling this option will use CSS 2.0 to allow a user to open a fold by -hovering the mouse pointer over it. Note that old browsers (notably Internet -Explorer 6) will not support this feature. Browser-specific markup for IE6 is -included to fall back to the normal CSS1 code so that the folds show up -correctly for this browser, but they will not be openable without a -foldcolumn. Note that using html_hover_unfold will allow modern browsers with -disabled javascript to view closed folds. To use this option, use: > +< + *TOhtml-uncopyable-text* *g:html_prevent_copy* +Default: empty string. +This option prevents certain regions of the generated HTML from being copied, +when you select all text in document rendered in a browser and copy it. Useful +for allowing users to copy-paste only the source text even if a fold column or +line numbers are shown in the generated content. Specify regions to be +affected in this way as follows: + f: fold column + n: line numbers (also within fold text) + t: fold text + d: diff filler + +Example, to make the fold column and line numbers uncopyable: > + :let g:html_prevent_copy = "fn" +< +This feature is currently implemented by inserting read-only <input> elements +into the markup to contain the uncopyable areas. This does not work well in +all cases. When pasting to some applications which understand HTML, the +<input> elements also get pasted. But plain-text paste destinations should +always work. + + *g:html_no_invalid* +Default: 0. +When 0, if |g:html_prevent_copy| is non-empty, an invalid attribute is +intentionally inserted into the <input> element for the uncopyable areas. This +increases the number of applications you can paste to without also pasting the +<input> elements. Specifically, Microsoft Word will not paste the <input> +elements if they contain this invalid attribute. +When 1, no invalid markup is ever intentionally inserted, and the generated +page should validate. However, be careful pasting into Microsoft Word when +|g:html_prevent_copy| is non-empty; it can be hard to get rid of the <input> +elements which get pasted. + + *g:html_hover_unfold* +Default: 0. +When 0, the only way to open a fold generated by 2html.vim with +|g:html_dynamic_folds| set, is to click on the generated fold column. +When 1, use CSS 2.0 to allow the user to open a fold by moving the mouse +cursor over the displayed fold text. This is useful to allow users with +disabled javascript to view the folded text. + +Note that old browsers (notably Internet Explorer 6) will not support this +feature. Browser-specific markup for IE6 is included to fall back to the +normal CSS1 styling so that the folds show up correctly for this browser, but +they will not be openable without a foldcolumn. +> :let g:html_hover_unfold = 1 - -Setting html_no_foldcolumn with html_dynamic_folds will automatically set -html_hover_unfold, because otherwise the folds wouldn't be dynamic. - -By default "<pre>" and "</pre>" are used around the text. When 'wrap' is set -in the window being converted, the CSS 2.0 "white-space:pre-wrap" value is -used to wrap the text. You can explicitly enable the wrapping with: > +< + *TOhtml-wrap-text* *g:html_pre_wrap* +Default: current 'wrap' setting. +When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does +not wrap at the edge of the browser window. +When 1, if |g:html_use_css| is 1, the CSS 2.0 "white-space:pre-wrap" value is +used, causing the text to wrap at whitespace at the edge of the browser +window. +Explicitly enable text wrapping: > :let g:html_pre_wrap = 1 -or disable with > +Explicitly disable wrapping: > :let g:html_pre_wrap = 0 -This generates HTML that looks very close to the Vim window, but unfortunately -there can be minor differences such as the lack of a 'showbreak' option in in -the HTML, or where line breaks can occur. - -Another way to obtain text wrapping in the HTML, at the risk of making some -things look even more different, is to use: > +Go back to default, determine wrapping from 'wrap' setting: > + :unlet g:html_pre_wrap +< + *g:html_no_pre* +Default: 0. +When 0, buffer text in the generated HTML is surrounded by <pre>...</pre> +tags. Series of whitespace is shown as in Vim without special markup, and tab +characters can be included literally (see |g:html_expand_tabs|). +When 1 (not recommended), the <pre> tags are omitted, and a plain <div> is +used instead. Whitespace is replaced by a series of   character +references, and <br> is used to end each line. This is another way to allow +text in the generated HTML is wrap (see |g:html_pre_wrap|) which also works in +old browsers, but may cause noticeable differences between Vim's display and +the rendered page generated by 2html.vim. +> :let g:html_no_pre = 1 -This will use <br> at the end of each line and use " " for repeated -spaces. Doing it this way is more compatible with old browsers, but modern -browsers support the "white-space" method. - -If you do stick with the default "<pre>" tags, <Tab> characters in the text -are included in the generated output if they will have no effect on the -appearance of the text and it looks like they are in the document -intentionally. This allows for the HTML output to be copied and pasted from a -browser without losing the actual whitespace used in the document. - -Specifically, <Tab> characters will be included if the 'tabstop' option is set -to the default of 8, 'expandtab' is not set, and if neither the foldcolumn nor -the line numbers are included in the HTML output (see options above). When any -of these conditions are not met, any <Tab> characters in the text are expanded -to the appropriate number of spaces in the HTML output. - -When "<pre>" is included, you can force |:TOhtml| to keep the tabs even if the -other conditions are not met with: > +< + *g:html_expand_tabs* +Default: 1 if 'tabstop' is 8, 'expandtab' is 0, and no fold column or line + numbers occur in the generated HTML; + 0 otherwise. +When 0, <Tab> characters in the buffer text are replaced with an appropriate +number of space characters, or   references if |g:html_no_pre| is 1. +When 1, if |g:html_no_pre| is 0 or unset, <Tab> characters in the buffer text +are included as-is in the generated HTML. This is useful for when you want to +allow copy and paste from a browser without losing the actual whitespace in +the source document. Note that this can easily break text alignment and +indentation in the HTML, unless set by default. + +Force |2html.vim| to keep <Tab> characters: > :let g:html_expand_tabs = 0 -Note that this can easily break text alignment and indentation in the HTML. - -Force tabs to be expanded even when they would be kept using: > +< +Force tabs to be expanded: > :let g:html_expand_tabs = 1 +< + *TOhtml-encoding-detect* *TOhtml-encoding* +It is highly recommended to set your desired encoding with +|g:html_use_encoding| for any content which will be placed on a web server. -For diff mode on a single file (with g:html_diff_one_file) a sequence of more -than 3 filler lines is displayed as three lines with the middle line -mentioning the total number of inserted lines. If you prefer to see all the -inserted lines as with the side-by-side diff, use: > - :let g:html_whole_filler = 1 -And to go back to displaying up to three lines again: > - :unlet g:html_whole_filler +If you do not specify an encoding, |2html.vim| uses the preferred IANA name +for the current value of 'fileencoding' if set, or 'encoding' if not. +'encoding' is always used for certain 'buftype' values. 'fileencoding' will be +set to match the chosen document encoding. + +Automatic detection works for the encodings mentioned specifically by name in +|encoding-names|, but TOhtml will only automatically use those encodings with +wide browser support. However, you can override this to support specific +encodings that may not be automatically detected by default (see options +below). See http://www.iana.org/assignments/character-sets for the IANA names. + +Note, by default all Unicode encodings are converted to UTF-8 with no BOM in +the generated HTML, as recommended by W3C: -For most buffers, TOhtml uses the current value of 'fileencoding' if set, or -'encoding' if not, to determine the charset and 'fileencoding' of the HTML -file. 'encoding' is always used for certain 'buftype' values. In general, this -works for the encodings mentioned specifically by name in |encoding-names|, -but TOhtml will only automatically use those encodings which are widely -supported. However, you can override this to support specific encodings that -may not be automatically detected by default. + http://www.w3.org/International/questions/qa-choosing-encodings + http://www.w3.org/International/questions/qa-byte-order-mark + *g:html_use_encoding* +Default: none, uses IANA name for current 'fileencoding' as above. To overrule all automatic charset detection, set g:html_use_encoding to the -name of the charset to be used. TOhtml will try to determine the appropriate -'fileencoding' setting from the charset, but you may need to set it manually -if TOhtml cannot determine the encoding. It is recommended to set this -variable to something widely supported, like UTF-8, for anything you will be -hosting on a webserver: > +name of the charset to be used. It is recommended to set this variable to +something widely supported, like UTF-8, for anything you will be hosting on a +webserver: > :let g:html_use_encoding = "UTF-8" You can also use this option to omit the line that specifies the charset -entirely, by setting g:html_use_encoding to an empty string: > +entirely, by setting g:html_use_encoding to an empty string (NOT recommended): > :let g:html_use_encoding = "" -To go back to the automatic mechanism, delete the g:html_use_encoding +To go back to the automatic mechanism, delete the |g:html_use_encoding| variable: > :unlet g:html_use_encoding +< + *g:html_encoding_override* +Default: none, autoload/tohtml.vim contains default conversions for encodings + mentioned by name at |encoding-names|. +This option allows |2html.vim| to detect the correct 'fileencoding' when you +specify an encoding with |g:html_use_encoding| which is not in the default +list of conversions. -If you specify a charset with g:html_use_encoding for which TOhtml cannot -automatically detect the corresponding 'fileencoding' setting, you can use -g:html_encoding_override to allow TOhtml to detect the correct encoding. This is a dictionary of charset-encoding pairs that will replace existing -pairs automatically detected by TOhtml, or supplement with new pairs. For -example, to allow TOhtml to detect the HTML charset "windows-1252" properly as -the encoding "8bit-cp1252", use: > +pairs automatically detected by TOhtml, or supplement with new pairs. + +Detect the HTML charset "windows-1252" as the encoding "8bit-cp1252": > :let g:html_encoding_override = {'windows-1252': '8bit-cp1252'} < -The g:html_charset_override is similar, it allows TOhtml to detect the HTML -charset for any 'fileencoding' or 'encoding' which is not detected -automatically. You can also use it to override specific existing -encoding-charset pairs. For example, TOhtml will by default use UTF-8 for all -Unicode/UCS encodings. To use UTF-16 and UTF-32 instead, use: > + *g:html_charset_override* +Default: none, autoload/tohtml.vim contains default conversions for encodings + mentioned by name at |encoding-names| and which have wide + browser support. +This option allows |2html.vim| to detect the HTML charset for any +'fileencoding' or 'encoding' which is not detected automatically. You can also +use it to override specific existing encoding-charset pairs. For example, +TOhtml will by default use UTF-8 for all Unicode/UCS encodings. To use UTF-16 +and UTF-32 instead, use: > :let g:html_charset_override = {'ucs-4': 'UTF-32', 'utf-16': 'UTF-16'} Note that documents encoded in either UTF-32 or UTF-16 have known -compatibility problems with at least one major browser. +compatibility problems with some major browsers. - *convert-to-XML* *convert-to-XHTML* -If you do not like plain HTML, an alternative is to have the script generate -XHTML (XML compliant HTML). To do this set the "html_use_xhtml" variable: > + *convert-to-XML* *convert-to-XHTML* *g:html_use_xhtml* +Default: 0. +When 0, generate standard HTML 4.01 (strict when possible). +When 1, generate XHTML 1.0 instead (XML compliant HTML). +> :let g:html_use_xhtml = 1 - -Any of the on/off options listed above can be enabled or disabled by setting -them explicitly to the desired value, or restored to their default by removing -the variable using |:unlet|. - -Remarks: -- Some truly ancient browsers may not show the background colors. -- From most browsers you can also print the file (in color)! -- This version of TOhtml may work with older versions of Vim, but some - features such as conceal support will not function, and the colors may be - incorrect for an old Vim without GUI support compiled in. - -Here is an example how to run the script over all .c and .h files from a -Unix shell: > - for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done < ABEL *abel.vim* *ft-abel-syntax* @@ -649,7 +784,11 @@ The most flexible is to add a line in your assembly file containing: > asmsyntax=nasm Replace "nasm" with the name of the real assembly syntax. This line must be one of the first five lines in the file. No non-white text must be -immediately before or after this text. +immediately before or after this text. Note that specifying asmsyntax=foo is +equivalent to setting ft=foo in a |modeline|, and that in case of a conflict +between the two settings the one from the modeline will take precedence (in +particular, if you have ft=asm in the modeline, you will get the GNU syntax +highlighting regardless of what is specified as asmsyntax). The syntax type can always be overruled for a specific buffer by setting the b:asmsyntax variable: > @@ -754,7 +893,8 @@ c_no_ansi don't do standard ANSI types and constants c_ansi_typedefs ... but do standard ANSI types c_ansi_constants ... but do standard ANSI constants c_no_utf don't highlight \u and \U in strings -c_syntax_for_h use C syntax for *.h files, instead of C++ +c_syntax_for_h for *.h files use C syntax instead of C++ and use objc + syntax instead of objcpp c_no_if0 don't highlight "#if 0" blocks as comments c_no_cformat don't highlight %-formats in strings c_no_c99 don't highlight C99 standard items @@ -2719,7 +2859,14 @@ Some folks like to include things like source code in comments and so would prefer that spell checking be disabled in comments in LaTeX files. To do this, put the following in your <.vimrc>: > let g:tex_comment_nospell= 1 -< +The comment lines > + % nospell{ + ... + % nospell} +will suppress spell checking between them. These comment lines spelling +control are known to be fragile; for example, don't include any of the section +commands (\part, \chapter, \section, \paragraph, etc) inside nospell blocks +or interleave environments (such as math) across nospell blocks. *tex-verb* Tex: Want Spell Checking in Verbatim Zones?~ @@ -2826,6 +2973,7 @@ You may selectively use conceal mode by setting g:tex_conceal in your following sets of characters: > a = accents/ligatures + b = bold and italic d = delimiters m = math symbols g = Greek @@ -2834,6 +2982,18 @@ following sets of characters: > By leaving one or more of these out, the associated conceal-character substitution will not be made. + *g:tex_isk* + Tex: Controlling What's In A Keyword~ + +(La)Tex keywords normally use the characters 0-9,a-z,A-Z,192-255 only +but the "_" is the only one that causes problems. So, by default, +syntax/tex.vim overrides the usual |'iskeyword'| setting (using |:setlocal|) +with one that works for LaTeX. + +However, one may override this iskeyword re-setting by setting the +variable, g:tex_isk, in one's .vimrc to whatever one wishes and +it will be used instead. + TF *tf.vim* *ft-tf-syntax* @@ -2887,7 +3047,7 @@ Some folding is now supported with syntax/vim.vim: > g:vimsyn_folding =~ 'P' : fold python script g:vimsyn_folding =~ 'r' : fold ruby script g:vimsyn_folding =~ 't' : fold tcl script - +< *g:vimsyn_noerror* Not all error highlighting that syntax/vim.vim does may be correct; VimL is a difficult language to highlight correctly. A way to suppress error @@ -4421,6 +4581,8 @@ IncSearch 'incsearch' highlighting; also used for the text replaced with *hl-LineNr* LineNr Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set. + *hl-CursorLineNr* +CursorLineNr Like LineNr when 'cursorline' is set for the cursor line. *hl-MatchParen* MatchParen The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt| diff --git a/en/visual.txt b/en/visual.txt index f57384521..a8c8ce672 100644 --- a/en/visual.txt +++ b/en/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 7.3. Last change: 2012 May 25 +*visual.txt* For Vim version 7.3. Last change: 2012 Jul 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -99,6 +99,18 @@ gv Start Visual mode with the same area as the previous After using "p" or "P" in Visual mode the text that was put will be selected. + *gn* *v_gn* +gn Search forward for the last used search pattern, like + with `n`, and start Visual mode to select the match. + If the cursor is on the match, visually selects it. + If an operator is pending, operates on the match. + E.g., "dgn" deletes the text of the next match. + If Visual mode is active, extends the selection + until the end of the next match. + + *gN* *v_gN* +gN Like |gn| but searches backward, like with `N`. + *<LeftMouse>* <LeftMouse> Set the current cursor position. If Visual mode is active it is stopped. Only when 'mouse' option is @@ -274,7 +286,10 @@ with {motion}, which is only ONE movement command. Another way to operate on the Visual area is using the |/\%V| item in a pattern. For example, to replace all '(' in the Visual area with '#': > - :%s/\%V(/X/g + :'<,'>s/\%V(/#/g + +Note that the "'<,'>" will appear automatically when you press ":" in Visual +mode. ============================================================================== 5. Blockwise operators *blockwise-operators* From bfff0b8083b6c43caff0bd05bbfbc604cd07fffb Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sat, 22 Sep 2012 08:51:21 +0900 Subject: [PATCH 408/783] update some files to 7.3.672 --- en/diff.txt | 14 +++++++------- en/editing.txt | 4 ++-- en/eval.txt | 17 ++++++++++------- en/gui_w32.txt | 14 +++++++++++++- en/if_perl.txt | 10 ++++++---- en/indent.txt | 4 ++-- en/map.txt | 1 + en/motion.txt | 3 ++- en/options.txt | 8 +++++++- en/tabpage.txt | 4 ++-- en/usr_41.txt | 2 +- en/various.txt | 5 +++-- en/vi_diff.txt | 6 +++--- 13 files changed, 59 insertions(+), 33 deletions(-) diff --git a/en/diff.txt b/en/diff.txt index ab582dcae..036dc5e13 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.3. Last change: 2012 May 18 +*diff.txt* For Vim version 7.3. Last change: 2012 Sep 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -86,16 +86,16 @@ diff mode. You could use a construct like this: > While already in Vim you can start diff mode in three ways. *E98* -:diffsplit {filename} *:diffs* *:diffsplit* +:diffs[plit] {filename} *:diffs* *:diffsplit* Open a new window on the file {filename}. The options are set as for "vimdiff" for the current and the newly opened window. Also see 'diffexpr'. *:difft* *:diffthis* -:diffthis Make the current window part of the diff windows. This sets +:difft[his] Make the current window part of the diff windows. This sets the options like for "vimdiff". -:diffpatch {patchfile} *E816* *:diffp* *:diffpatch* +:diffp[atch] {patchfile} *E816* *:diffp* *:diffpatch* Use the current buffer, patch it with the diff found in {patchfile} and open a buffer on the result. The options are set as for "vimdiff". @@ -123,9 +123,9 @@ Since the option values are remembered with the buffer, you can edit another file for a moment and come back to the same file and be in diff mode again. *:diffo* *:diffoff* -:diffoff Switch off diff mode for the current window. +:diffo[ff] Switch off diff mode for the current window. -:diffoff! Switch off diff mode for the current window and in all windows +:diffo[ff]! Switch off diff mode for the current window and in all windows in the current tab page where 'diff' is set. The ":diffoff" command resets the relevant options to their default value. @@ -333,7 +333,7 @@ diff. This example explains the format that Vim expects: > The "1a2" item appends the line "bbb". The "4d4" item deletes the line "111". -The '7c7" item replaces the line "GGG" with "ggg". +The "7c7" item replaces the line "GGG" with "ggg". When 'diffexpr' is not empty, Vim evaluates it to obtain a diff file in the format mentioned. These variables are set to the file names used: diff --git a/en/editing.txt b/en/editing.txt index e598f31ee..9f1723a1a 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.3. Last change: 2012 Jul 10 +*editing.txt* For Vim version 7.3. Last change: 2012 Aug 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -393,7 +393,7 @@ is to use "path\[[]abc]". Then the file "path[abc]" literally. *starstar-wildcard* Expanding "**" is possible on Unix, Win32, Mac OS/X and a few other systems. This allows searching a directory tree. This goes up to 100 directories deep. -Note there are some commands where this works slightly different, see +Note there are some commands where this works slightly differently, see |file-searching|. Example: > :n **/*.txt diff --git a/en/eval.txt b/en/eval.txt index 91acac029..12ea9c897 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2012 Jul 10 +*eval.txt* For Vim version 7.3. Last change: 2012 Sep 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -759,7 +759,7 @@ of a |List| is different from the original |List|. When using "is" without a |List| or a |Dictionary| it is equivalent to using "equal", using "isnot" equivalent to using "not equal". Except that a different type means the values are different: "4 == '4'" is true, "4 is '4'" is false and "0 is []" is -false and not a error. "is#"/"isnot#" and "is?"/"isnot?" can be used to match +false and not an error. "is#"/"isnot#" and "is?"/"isnot?" can be used to match and ignore case. When comparing a String with a Number, the String is converted to a Number, @@ -3288,8 +3288,9 @@ getfperm({fname}) *getfperm()* "rwx" flags represent, in turn, the permissions of the owner of the file, the group the file belongs to, and other users. If a user does not have a given permission the flag for this - is replaced with the string "-". Example: > + is replaced with the string "-". Examples: > :echo getfperm("/etc/passwd") + :echo getfperm(expand("~/.vimrc")) < This will hopefully (from a security point of view) display the string "rw-r--r--" or even "rw-------". @@ -4634,8 +4635,8 @@ pyeval({expr}) *pyeval()* Numbers and strings are returned as they are (strings are copied though). Lists are represented as Vim |List| type. - Dictionaries are represented as Vim |Dictionary| type with - keys converted to strings. + Dictionaries are represented as Vim |Dictionary| type, + non-string keys result in error. {only available when compiled with the |+python| feature} *E726* *E727* @@ -5252,8 +5253,9 @@ setreg({regname}, {value} [,{options}]) If {options} contains no register settings, then the default is to use character mode unless {value} ends in a <NL>. - Setting the '=' register is not possible. - Returns zero for success, non-zero for failure. + Setting the '=' register is not possible, but you can use > + :let @= = var_expr +< Returns zero for success, non-zero for failure. Examples: > :call setreg(v:register, @*) @@ -6325,6 +6327,7 @@ mouse_gpm Compiled with support for gpm (Linux console mouse) mouse_netterm Compiled with support for netterm mouse. mouse_pterm Compiled with support for qnx pterm mouse. mouse_sysmouse Compiled with support for sysmouse (*BSD console mouse) +mouse_sgr Compiled with support for sgr mouse. mouse_urxvt Compiled with support for urxvt mouse. mouse_xterm Compiled with support for xterm mouse. mouseshape Compiled with support for 'mouseshape'. diff --git a/en/gui_w32.txt b/en/gui_w32.txt index 16758b000..2958282d0 100644 --- a/en/gui_w32.txt +++ b/en/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 7.3. Last change: 2011 Jul 23 +*gui_w32.txt* For Vim version 7.3. Last change: 2012 Aug 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -489,4 +489,16 @@ to: And add gvim to the list of applications. This problem only appears to happen with the Intellimouse driver 2.2 and when "Universal Scrolling" is turned on. + +XPM support *w32-xpm-support* + +Gvim can be build on MS-Windows with support for XPM files. |+xpm_w32| +See the Make_mvc.mak file for instructions, search for XPM. + +To try out if XPM support works do this: > + :help + :exe 'sign define vimxpm icon=' . $VIMRUNTIME . '\\vim16x16.xpm' + :exe 'sign place 1 line=1 name=vimxpm file=' . expand('%:p') +< + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/en/if_perl.txt b/en/if_perl.txt index ba7466b12..a74d88048 100644 --- a/en/if_perl.txt +++ b/en/if_perl.txt @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim version 7.3. Last change: 2010 Jul 21 +*if_perl.txt* For Vim version 7.3. Last change: 2012 Aug 02 VIM REFERENCE MANUAL by Sven Verdoolaege @@ -44,15 +44,17 @@ The Perl patches for Vim were made by: Sven Verdoolaege <skimo@breughel.ufsia.ac.be> Matt Gerassimof -Perl for MS-Windows can be found at: -http://www.perl.com/CPAN/ports/nt/Standard/x86/ +Perl for MS-Windows can be found at: http://www.perl.com/ +The ActiveState one should work. ============================================================================== 3. Using the Perl interface *perl-using* *:perl* *:pe* :pe[rl] {cmd} Execute Perl command {cmd}. The current package - is "main". + is "main". Simple example to test if `:perl` is + working: > + :perl VIM::Msg("Hello") :pe[rl] << {endpattern} {script} diff --git a/en/indent.txt b/en/indent.txt index ce02178d7..6a43896c0 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.3. Last change: 2011 Sep 02 +*indent.txt* For Vim version 7.3. Last change: 2012 Aug 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -540,7 +540,7 @@ The examples below assume a 'shiftwidth' of 4. *cino-star* *N Vim searches for unclosed comments at most N lines away. This limits the time needed to search for the start of a comment. - If your /* */ comments stop indenting afer N lines this is the + If your /* */ comments stop indenting after N lines this is the value you will want to change. (default 70 lines). diff --git a/en/map.txt b/en/map.txt index b4b77deaa..59c661d3f 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1244,6 +1244,7 @@ completion can be enabled: -complete=syntax syntax file names |'syntax'| -complete=tag tags -complete=tag_listfiles tags, file names are shown when CTRL-D is hit + -complete=user user names -complete=var user variables -complete=custom,{func} custom completion, defined via {func} -complete=customlist,{func} custom completion, defined via {func} diff --git a/en/motion.txt b/en/motion.txt index e1c937243..522b71794 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.3. Last change: 2012 Jul 25 +*motion.txt* For Vim version 7.3. Last change: 2012 Aug 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -326,6 +326,7 @@ gg Goto line [count], default first line, on the first non-blank character |linewise|. If 'startofline' not set, keep the same column. + *:[range]* :[range] Set the cursor on the last line number in [range]. [range] can also be just one line number, e.g., ":1" or ":'m". diff --git a/en/options.txt b/en/options.txt index a31ae3d16..f6beddaac 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.3. Last change: 2012 Jul 10 +*options.txt* For Vim version 7.3. Last change: 2012 Aug 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -6119,6 +6119,7 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer Number of spaces to use for each step of (auto)indent. Used for |'cindent'|, |>>|, |<<|, etc. + When zero the 'ts' value will be used. *'shortmess'* *'shm'* 'shortmess' 'shm' string (Vim default "filnxtToO", Vi default: "", @@ -7425,6 +7426,10 @@ A jump table for the options with a short description can be found at |Q_op|. pterm QNX pterm mouse handling. *urxvt-mouse* urxvt Mouse handling for the urxvt (rxvt-unicode) terminal. + *sgr-mouse* + sgr Mouse handling for the terminal that emits SGR-styled + mouse reporting. Works with xterm version 277 or + later. The mouse handling must be enabled at compile time |+mouse_xterm| |+mouse_dec| |+mouse_netterm|. @@ -7437,6 +7442,7 @@ A jump table for the options with a short description can be found at |Q_op|. or "xterm2" already. The main use of this option is to set it to "xterm", when the terminal name doesn't start with "xterm", but it can handle xterm mouse codes. + The "sgr" value will be set if the xterm version is 277 or later. The "xterm2" value will be set if the xterm version is reported to be 95 or higher. This only works when compiled with the |+termresponse| feature and if |t_RV| is set to the escape sequence to request the diff --git a/en/tabpage.txt b/en/tabpage.txt index a2da5b307..b3fbd9522 100644 --- a/en/tabpage.txt +++ b/en/tabpage.txt @@ -1,4 +1,4 @@ -*tabpage.txt* For Vim version 7.3. Last change: 2010 Jul 31 +*tabpage.txt* For Vim version 7.3. Last change: 2012 Aug 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -113,7 +113,7 @@ something else. this is a "safe" command. :tabc[lose][!] {count} - Close tab page {count}. Fails in the same way as ':tabclose" + Close tab page {count}. Fails in the same way as `:tabclose` above. *:tabo* *:tabonly* diff --git a/en/usr_41.txt b/en/usr_41.txt index 77f7d1c35..1a4ae3d1b 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1681,7 +1681,7 @@ in your plugin file! HEADER You will probably add new corrections to the plugin and soon have several -versions laying around. And when distributing this file, people will want to +versions lying around. And when distributing this file, people will want to know who wrote this wonderful plugin and where they can send remarks. Therefore, put a header at the top of your plugin: > diff --git a/en/various.txt b/en/various.txt index b039e69d5..f4107e6e7 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.3. Last change: 2012 Jan 15 +*various.txt* For Vim version 7.3. Last change: 2012 Aug 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -355,6 +355,7 @@ N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| B *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| +B *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse| N *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse| N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| B *+multi_byte* 16 and 32 bit characters |multibyte| @@ -415,7 +416,7 @@ S *+windows* more than one window m *+writebackup* |'writebackup'| is default on m *+xim* X input method |xim| *+xfontset* X fontset support |xfontset| -m *+xpm_w32* Win32 GUI only: pixmap support |:sign-define| +m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support| *+xsmp* XSMP (X session management) support *+xsmp_interact* interactive XSMP (X session management) support N *+xterm_clipboard* Unix only: xterm clipboard handling diff --git a/en/vi_diff.txt b/en/vi_diff.txt index 8379667ff..f2f3aa164 100644 --- a/en/vi_diff.txt +++ b/en/vi_diff.txt @@ -1,4 +1,4 @@ -*vi_diff.txt* For Vim version 7.3. Last change: 2011 Aug 29 +*vi_diff.txt* For Vim version 7.3. Last change: 2012 Aug 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -192,7 +192,7 @@ Syntax highlighting. |:syntax| Spell checking. |spell| When the 'spell' option is set Vim will highlight spelling mistakes. - About 40 languages are currently supported, selected with the + About 50 languages are currently supported, selected with the 'spelllang' option. In source code only comments and strings are checked for spelling. @@ -653,7 +653,7 @@ You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs) option includes "eol". You can backspace over the start of insert if the 'backspace' option includes "start". -When the 'paste' option is set, a few option are reset and mapping in insert +When the 'paste' option is set, a few options are reset and mapping in insert mode and abbreviation are disabled. This allows for pasting text in windowing systems without unexpected results. When the 'paste' option is reset, the old option values are restored. From afede687e479f7912aea353e34cfb5f67ebbaabb Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Thu, 25 Oct 2012 23:52:13 +0900 Subject: [PATCH 409/783] Update tutor.* to 7.3.683 --- tutor/tutor | 2 +- tutor/tutor.ja | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tutor/tutor b/tutor/tutor index daf42b6bb..da28a1531 100644 --- a/tutor/tutor +++ b/tutor/tutor @@ -658,7 +658,7 @@ NOTE: If you were to exit Vim and start it again with vim TEST , the file 4. Type w TEST , where TEST is a filename that does not exist yet. Verify that you see :'<,'>w TEST before you press <ENTER>. - 5. Vim will write the selected lines to the file TEST. Use :!dir or !ls + 5. Vim will write the selected lines to the file TEST. Use :!dir or :!ls to see it. Do not remove it yet! We will use it in the next lesson. NOTE: Pressing v starts Visual selection. You can move the cursor around diff --git a/tutor/tutor.ja b/tutor/tutor.ja index 95e108efe..248d696e8 100644 --- a/tutor/tutor.ja +++ b/tutor/tutor.ja @@ -117,7 +117,7 @@ NOTE: 全てのレッスンを通じて、覚えようとするのではなく レッスン 1.5: テキスト編集 - 追加 - ** テキスト追加するには A を押しましょう ** + ** テキストを追加するには A を押しましょう ** 1. 以下の ---> と示された最初の行にカーソルを移動しましょう。 カーソルがその文字上にあってもかまいません。 @@ -232,7 +232,7 @@ NOTE: <ESC> キーを押すとノーマルモードに移行します。その レッスン 2.3: オペレータとモーション - 多くのコマンドはオペレータとモーションからテキストに変更を加ます。 + 多くのコマンドはオペレータとモーションからテキストに変更を加えます。 削除コマンド d のオペレータは次の様になっています: d モーション @@ -259,7 +259,7 @@ NOTE: 冒険したい人は、ノーマルモードにてコマンドなしに 1. 以下の ---> と示された行の先頭にカーソルを移動します。 - 2. 2dw をタイプして単語2つ分移動します。 + 2. 2dw をタイプして単語2つ分削除します。 3. 3e をタイプして3つ目の単語の終端に移動します。 @@ -326,8 +326,8 @@ NOTE: オペレータ d とモーションの間にカウントを使った場 ** 最後のコマンドを取り消すには u を押します。U は行全体の取消です。 ** - 1. 以下の ---> と示された行にカーソルを移動し、最初の間違いにカーソ - ルを移動しましょう。 + 1. 以下の ---> と示された行にカーソルを移動し、最初の間違いにカーソル + を移動しましょう。 2. x をタイプしていらない先頭の文字を削除しましょう。 3. さぁ、u をタイプして最後に実行したコマンドを取り消しましょう。 4. 今度は、x を使用して誤りを全て修正しましょう。 @@ -633,7 +633,7 @@ Note: 全ての : コマンドは <ENTER> を押して終了しなければな 3. では :w TEST とタイプしましょう (TEST は、選んだファイル名です)。 4. これによりファイル全体が TEST という名前で保存されます。 - もう一度 :!dir もしくは !ls とタイプして確認してみましょう。 + もう一度 :!dir もしくは :!ls とタイプして確認してみましょう。 Note: ここで Vim を終了し、ファイル名 TEST と共に起動すると、保存した時の チュートリアルの複製ができ上がるはずです。 From 41207ca179c4c52a585fbaae288dca6123f1e8bd Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sat, 27 Oct 2012 15:25:49 +0900 Subject: [PATCH 410/783] fix typo in tutor.ja --- tutor/tutor.ja | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tutor/tutor.ja b/tutor/tutor.ja index 248d696e8..2034443c2 100644 --- a/tutor/tutor.ja +++ b/tutor/tutor.ja @@ -541,7 +541,7 @@ Note: 検索がファイルの終わりに達すると、オプション 'wrapsc 4. 最初の括弧に移動するには % とタイプしましょう。 - 5. 他の (,),[,],{ or } でカーソルを移動し、% が何をしているか確認しましょう。 + 5. 他の (,),[,],{ や } でカーソルを移動し、% が何をしているか確認しましょう。 ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) @@ -655,7 +655,7 @@ Note: ここで Vim を終了し、ファイル名 TEST と共に起動すると 3. 文字 : を押すと、画面の最下部に :'<,'> が現れます。 - 4. w TEST (TESET は存在しないファイル名)をタイプします。 + 4. w TEST (TEST は存在しないファイル名)をタイプします。 Enter を押す前に :'<,'>w TEST となっていることを確認して下さい。 5. Vim は TEST というファイルに選択された行を書き込むでしょう。 @@ -772,7 +772,7 @@ Note: a, i と A は同じ挿入モードへ移りますが、文字が挿入さ 3. 置換モードを抜けるには <ESC> を押します。行の残りが変更されていないままに なることに注意してください。 - 5. 残った xxx をステップを繰り返して置換しましょう。 + 4. 残った xxx をステップを繰り返して置換しましょう。 ---> Adding 123 to xxx gives you xxx. ---> Adding 123 to 456 gives you 579. @@ -869,10 +869,10 @@ Note: 1つの検索コマンドだけ大文字小文字の区別をやめたい ":help" コマンドに引数を与えることにより、あらゆる題名のヘルプを見つけること ができます。これらを試してみましょう(<ENTER> をタイプし忘れないように): - :help w - :help c_<T - :help insert-index - :help user-manual + :help w + :help c_CTRL-D + :help insert-index + :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 7.2: 起動スクリプトの作成 @@ -947,7 +947,7 @@ NOTE: 補完は多くのコマンドで動作します。そして CTRL-D と <T これにて Vim のチュートリアルを終わります。エディタを簡単に、しかも充分に 使うことができるようにと、Vim の持つ概念の要点のみを伝えようとしました。 Vim にはさらに多くのコマンドがあり、ここで全てを説明することはできません。 - 以降はユーザマニュアルを参照ください: "help :user-manual" + 以降はユーザマニュアルを参照ください: ":help user-manual" これ以後の学習のために、次の本を推薦します。 Vim - Vi Improved - by Steve Oualline From 264708d327279a2e442edcad7dd2100ec69ae452 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Thu, 31 Jan 2013 02:58:45 +0900 Subject: [PATCH 411/783] update en/help.txt to 7.3.791 --- en/help.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/en/help.txt b/en/help.txt index 4860eb2fc..bca336498 100644 --- a/en/help.txt +++ b/en/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*help.txt* For Vim version 7.3. Last change: 2012 Dec 06 VIM - main help file k @@ -195,12 +195,12 @@ Remarks about specific systems ~ *standard-plugin-list* Standard plugins ~ |pi_getscript.txt| Downloading latest version of Vim scripts -|pi_gzip.txt| Reading and writing compressed files -|pi_netrw.txt| Reading and writing files over a network -|pi_paren.txt| Highlight matching parens -|pi_tar.txt| Tar file explorer +|pi_gzip.txt| Reading and writing compressed files +|pi_netrw.txt| Reading and writing files over a network +|pi_paren.txt| Highlight matching parens +|pi_tar.txt| Tar file explorer |pi_vimball.txt| Create a self-installing Vim script -|pi_zip.txt| Zip archive explorer +|pi_zip.txt| Zip archive explorer LOCAL ADDITIONS: *local-additions* From 6bc7624b4aefa1ed8bbd0ae68260e06e0e70e64b Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 3 Feb 2013 20:46:35 +0900 Subject: [PATCH 412/783] update to 7.3 snapshot --- en/autocmd.txt | 5 +- en/change.txt | 11 +++- en/cmdline.txt | 11 +++- en/eval.txt | 105 +++++++++++++++++++++++++-------- en/helphelp.txt | 13 +++-- en/if_mzsch.txt | 41 ++++++++++--- en/if_perl.txt | 5 +- en/if_pyth.txt | 36 ++++++++++-- en/if_ruby.txt | 10 ++-- en/if_tcl.txt | 6 +- en/insert.txt | 6 +- en/intro.txt | 4 +- en/mbyte.txt | 9 ++- en/options.txt | 23 +++++--- en/pattern.txt | 4 +- en/pi_netrw.txt | 151 +++++++++++++++++++++++++++++------------------- en/syntax.txt | 21 +++++-- en/uganda.txt | 3 +- en/usr_05.txt | 5 +- en/usr_21.txt | 14 ++--- en/usr_22.txt | 8 +-- en/usr_41.txt | 4 +- en/various.txt | 66 ++++++++++++--------- en/visual.txt | 13 ++++- en/windows.txt | 8 +-- 25 files changed, 394 insertions(+), 188 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index a8bff07c5..32cad6764 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.3. Last change: 2012 Jul 10 +*autocmd.txt* For Vim version 7.3. Last change: 2012 Sep 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -263,8 +263,10 @@ Name triggered by ~ Startup and exit |VimEnter| after doing all the startup stuff |GUIEnter| after starting the GUI successfully +|GUIFailed| after starting the GUI failed |TermResponse| after the terminal response to |t_RV| is received +|QuitPre| when using `:quit`, before deciding whether to quit |VimLeavePre| before exiting Vim, before writing the viminfo file |VimLeave| before exiting Vim, after writing the viminfo file @@ -312,6 +314,7 @@ Name triggered by ~ |SessionLoadPost| after loading a session file |MenuPopup| just before showing the popup menu +|CompleteDone| after Insert mode completion is done |User| to be used in combination with ":doautocmd" diff --git a/en/change.txt b/en/change.txt index 7e753f725..d5f19a634 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.3. Last change: 2012 Jun 13 +*change.txt* For Vim version 7.3. Last change: 2012 Nov 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -598,8 +598,11 @@ For other systems the tmpnam() library function is used. the flags. *g&* -g& Synonym for `:%s//~/&` (repeat last substitute on all - lines with the same flags). +g& Synonym for `:%s//~/&` (repeat last substitute with + last search pattern on all lines with the same flags). + For exaple, when you first do a substitution with + `:s/pattern/repl/flags` and then `/search` for + something else, `g&` will do `:%s/search/repl/flags`. Mnemonic: global substitute. {not in Vi} *:snomagic* *:sno* @@ -666,6 +669,8 @@ The flags that you can use for the substitute commands: [n] Report the number of matches, do not actually substitute. The [c] flag is ignored. The matches are reported as if 'report' is zero. Useful to |count-items|. + If \= |sub-replace-expression| is used, the expression will be + evaluated in the |sandbox| at every match. [p] Print the line containing the last substitute. diff --git a/en/cmdline.txt b/en/cmdline.txt index a9e8acf53..c3627d409 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.3. Last change: 2012 Jun 20 +*cmdline.txt* For Vim version 7.3. Last change: 2013 Jan 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -217,7 +217,7 @@ CTRL-\ e {expr} *c_CTRL-\_e* :return cmd :endfunc < This doesn't work recursively, thus not when already editing - an expression. + an expression. But it is possible to use in a mapping. *c_CTRL-Y* CTRL-Y When there is a modeless selection, copy the selection into @@ -714,10 +714,15 @@ three lines: > Visual Mode and Range *v_:* {Visual}: Starts a command-line with the Visual selected lines as a - range. The code ":'<,'>" is used for this range, which makes + range. The code `:'<,'>` is used for this range, which makes it possible to select a similar line from the command-line history for repeating a command on different Visually selected lines. + When Visual mode was already ended, a short way to use the + Visual area for a range is `:*`. This requires that "*" does + not appear in 'cpo', see |cpo-star|. Otherwise you will have + to type `:'<,'>` + ============================================================================== 5. Ex command-line flags *ex-flags* diff --git a/en/eval.txt b/en/eval.txt index 12ea9c897..9819d9bc9 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2012 Sep 05 +*eval.txt* For Vim version 7.3. Last change: 2013 Jan 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -91,8 +91,8 @@ For boolean operators Numbers are used. Zero is FALSE, non-zero is TRUE. Note that in the command > :if "foo" "foo" is converted to 0, which means FALSE. To test for a non-empty string, -use strlen(): > - :if strlen("foo") +use empty(): > + :if !empty("foo") < *E745* *E728* *E703* *E729* *E730* *E731* List, Dictionary and Funcref types are not automatically converted. @@ -1716,7 +1716,7 @@ call( {func}, {arglist} [, {dict}]) any call {func} with arguments {arglist} ceil( {expr}) Float round {expr} up changenr() Number current change number -char2nr( {expr}) Number ASCII value of first char in {expr} +char2nr( {expr}[, {utf8}]) Number ASCII/UTF8 value of first char in {expr} cindent( {lnum}) Number C indent for line {lnum} clearmatches() none clear all matches col( {expr}) Number column nr of cursor or mark @@ -1873,7 +1873,7 @@ mkdir( {name} [, {path} [, {prot}]]) mode( [expr]) String current editing mode mzeval( {expr}) any evaluate |MzScheme| expression nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} -nr2char( {expr}) String single char with ASCII value {expr} +nr2char( {expr}[, {utf8}]) String single char with ASCII/UTF8 value {expr} or( {expr}, {expr}) Number bitwise OR pathshorten( {expr}) String shorten directory names in a path pow( {x}, {y}) Float {x} to the power of {y} @@ -1903,6 +1903,8 @@ repeat( {expr}, {count}) String repeat {expr} {count} times resolve( {filename}) String get filename a shortcut points to reverse( {list}) List reverse {list} in-place round( {expr}) Float round off {expr} +screencol() Number current cursor column +screenrow() Number current cursor row search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) Number search for {pattern} searchdecl( {name} [, {global} [, {thisblock}]]) @@ -1932,6 +1934,7 @@ setwinvar( {nr}, {varname}, {val}) set {varname} in window {nr} to {val} shellescape( {string} [, {special}]) String escape {string} for use as shell command argument +shiftwidth() Number effective value of 'shiftwidth' simplify( {filename}) String simplify filename as much as possible sin( {expr}) Float sine of {expr} sinh( {expr}) Float hyperbolic sine of {expr} @@ -2291,14 +2294,16 @@ changenr() *changenr()* redo it is the number of the redone change. After undo it is one less than the number of the undone change. -char2nr({expr}) *char2nr()* +char2nr({expr}[, {utf8}]) *char2nr()* Return number value of the first char in {expr}. Examples: > char2nr(" ") returns 32 char2nr("ABC") returns 65 -< The current 'encoding' is used. Example for "utf-8": > +< When {utf8} is omitted or zero, the current 'encoding' is used. + Example for "utf-8": > char2nr("�") returns 225 char2nr("�"[0]) returns 195 -< A combining character is a separate character. +< With {utf8} set to 1, always treat as utf-8 characters. + A combining character is a separate character. |nr2char()| does the opposite. cindent({lnum}) *cindent()* @@ -3754,10 +3759,10 @@ inputdialog({prompt} [, {text} [, {cancelreturn}]]) *inputdialog()* Like |input()|, but when the GUI is running and text dialogs are supported, a dialog window pops up to input the text. Example: > - :let n = inputdialog("value for shiftwidth", &sw) - :if n != "" - : let &sw = n - :endif + :let n = inputdialog("value for shiftwidth", shiftwidth()) + :if n != "" + : let &sw = n + :endif < When the dialog is cancelled {cancelreturn} is returned. When omitted an empty string is returned. Hitting <Enter> works like pressing the OK button. Hitting @@ -4368,14 +4373,16 @@ nextnonblank({lnum}) *nextnonblank()* below it, zero is returned. See also |prevnonblank()|. -nr2char({expr}) *nr2char()* +nr2char({expr}[, {utf8}]) *nr2char()* Return a string with a single character, which has the number value {expr}. Examples: > nr2char(64) returns "@" nr2char(32) returns " " -< The current 'encoding' is used. Example for "utf-8": > +< When {utf8} is omitted or zero, the current 'encoding' is used. + Example for "utf-8": > nr2char(300) returns I with bow character -< Note that a NUL character in the file is specified with +< With {utf8} set to 1, always return utf-8 characters. + Note that a NUL character in the file is specified with nr2char(10), because NULs are represented with newline characters. nr2char(0) is a real NUL and terminates the string, thus results in an empty string. @@ -4450,6 +4457,7 @@ printf({fmt}, {expr1} ...) *printf()* Often used items are: %s string + %6S string right-aligned in 6 display cells %6s string right-aligned in 6 bytes %.9s string truncated to 9 bytes %c single byte @@ -4564,6 +4572,10 @@ printf({fmt}, {expr1} ...) *printf()* s The text of the String argument is used. If a precision is specified, no more bytes than the number specified are used. + S The text of the String argument is used. If a + precision is specified, no more display cells than the + number specified are used. Without the |+multi_byte| + feature works just like 's'. *printf-f* *E807* f The Float argument is converted into a string of the @@ -4866,15 +4878,34 @@ round({expr}) *round()* echo round(-4.5) < -5.0 {only available when compiled with the |+float| feature} - - + +screencol() *screencol()* + The result is a Number, which is the current screen column of + the cursor. The leftmost column has number 1. + This function is mainly used for testing. + + Note: Always returns the current screen column, thus if used + in a command (e.g. ":echo screencol()") it will return the + column inside the command line, which is 1 when the command is + executed. To get the cursor position in the file use one of + the following mappings: > + nnoremap <expr> GG ":echom ".screencol()."\n" + nnoremap <silent> GG :echom screencol()<CR> +< +screenrow() *screenrow()* + The result is a Number, which is the current screen row of the + cursor. The top line has number one. + This function is mainly used for testing. + + Note: Same restrictions as with |screencol()|. + search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* Search for regexp pattern {pattern}. The search starts at the cursor position (you can use |cursor()| to set it). + When a match has been found its line number is returned. If there is no match a 0 is returned and the cursor doesn't move. No error message is given. - When a match has been found its line number is returned. {flags} is a String, which can contain these character flags: 'b' search backward instead of forward @@ -5331,6 +5362,23 @@ shellescape({string} [, {special}]) *shellescape()* :call system("chmod +w -- " . shellescape(expand("%"))) +shiftwidth() *shiftwidth()* + Returns the effective value of 'shiftwidth'. This is the + 'shiftwidth' value unless it is zero, in which case it is the + 'tabstop' value. To be backwards compatible in indent + plugins, use this: > + if exists('*shiftwidth') + func s:sw() + return shiftwidth() + endfunc + else + func s:sw() + return &sw + endfunc + endif +< And then use s:sw() instead of &sw. + + simplify({filename}) *simplify()* Simplify the file name as much as possible without changing the meaning. Shortcuts (on MS-Windows) or symbolic links (on @@ -5460,7 +5508,8 @@ split({expr} [, {pattern} [, {keepempty}]]) *split()* empty each white-separated sequence of characters becomes an item. Otherwise the string is split where {pattern} matches, - removing the matched characters. + removing the matched characters. 'ignorecase' is not used + here, add \c to ignore case. |/\c| When the first or last item is empty it is omitted, unless the {keepempty} argument is given and it's non-zero. Other empty items are kept when {pattern} matches at least one @@ -5670,8 +5719,10 @@ substitute({expr}, {pat}, {sub}, {flags}) *substitute()* This works like the ":substitute" command (without any flags). But the matching with {pat} is always done like the 'magic' option is set and 'cpoptions' is empty (to make scripts - portable). 'ignorecase' is still relevant. 'smartcase' is - not used. See |string-match| for how {pat} is used. + portable). 'ignorecase' is still relevant, use |/\c| or |/\C| + if you want to ignore or match case and ignore 'ignorecase'. + 'smartcase' is not used. See |string-match| for how {pat} is + used. A "~" in {sub} is not replaced with the previous {sub}. Note that some codes in {sub} have a special meaning @@ -5892,8 +5943,9 @@ taglist({expr}) *taglist()* If there are no matching tags, then an empty list is returned. To get an exact tag match, the anchors '^' and '$' should be - used in {expr}. Refer to |tag-regexp| for more information - about the tag search regular expression pattern. + used in {expr}. This also make the function work faster. + Refer to |tag-regexp| for more information about the tag + search regular expression pattern. Refer to |'tags'| for information about how the tags file is located by Vim. Refer to |tags-file-format| for the format of @@ -6136,8 +6188,9 @@ winline() The result is a Number, which is the screen line of the cursor winnr([{arg}]) The result is a Number, which is the number of the current window. The top window has number 1. When the optional argument is "$", the number of the - last window is returned (the window count). - When the optional argument is "#", the number of the last + last window is returned (the window count). > + let window_count = winnr('$') +< When the optional argument is "#", the number of the last accessed window is returned (where |CTRL-W_p| goes to). If there is no previous window or it is in another tab page 0 is returned. @@ -6508,6 +6561,8 @@ See |:verbose-cmd| for more information. is excluded, ":{range}call" will call the function for each line in the range, with the cursor on the start of each line. See |function-range-example|. + The cursor is still moved to the first line of the + range, as is the case with all Ex commands. When the [abort] argument is added, the function will abort as soon as an error is detected. diff --git a/en/helphelp.txt b/en/helphelp.txt index 437964d1e..311d86ca3 100644 --- a/en/helphelp.txt +++ b/en/helphelp.txt @@ -1,4 +1,4 @@ -*helphelp.txt* For Vim version 7.3. Last change: 2012 May 18 +*helphelp.txt* For Vim version 7.3. Last change: 2012 Nov 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -194,11 +194,12 @@ command: > *E154* *E150* *E151* *E152* *E153* *E670* :helpt[ags] [++t] {dir} Generate the help tags file(s) for directory {dir}. - All "*.txt" and "*.??x" files in the directory are - scanned for a help tag definition in between stars. - The "*.??x" files are for translated docs, they - generate the "tags-??" file, see |help-translated|. - The generated tags files are sorted. + All "*.txt" and "*.??x" files in the directory and + sub-directories are scanned for a help tag definition + in between stars. The "*.??x" files are for + translated docs, they generate the "tags-??" file, see + |help-translated|. The generated tags files are + sorted. When there are duplicates an error message is given. An existing tags file is silently overwritten. The optional "++t" argument forces adding the diff --git a/en/if_mzsch.txt b/en/if_mzsch.txt index 52440b6d7..f9b87f7fb 100644 --- a/en/if_mzsch.txt +++ b/en/if_mzsch.txt @@ -11,7 +11,8 @@ The MzScheme Interface to Vim *mzscheme* *MzScheme* 3. Threads |mzscheme-threads| 4. Vim access from MzScheme |mzscheme-vim| 5. mzeval() Vim function |mzscheme-mzeval| -6. Dynamic loading |mzscheme-dynamic| +6. Using Function references |mzscheme-funcref| +7. Dynamic loading |mzscheme-dynamic| {Vi does not have any of these commands} @@ -21,10 +22,17 @@ The MzScheme interface is available only if Vim was compiled with the Based on the work of Brent Fulgham. Dynamic loading added by Sergey Khorev -For downloading MzScheme and other info: - http://www.plt-scheme.org/software/mzscheme/ +MzScheme and PLT Scheme names have been rebranded as Racket. For more +information please check http://racket-lang.org -Note: On FreeBSD you should use the "drscheme" port. +Futures and places of Racket version 5.x up to and including 5.3.1 do not +work correctly with processes created by Vim. +The simplest solution is to build Racket on your own with these features +disabled: > + ./configure --disable-futures --disable-places --prefix=your-install-prefix + +To speed up the process, you might also want to use --disable-gracket and +--disable-docs ============================================================================== 1. Commands *mzscheme-commands* @@ -155,8 +163,11 @@ Common (eval {expr-string}) Evaluate the vim expression into respective MzScheme object: |Lists| are represented as Scheme lists, - |Dictionaries| as hash tables. - NOTE the name clashes with MzScheme eval + |Dictionaries| as hash tables, + |Funcref|s as functions (see also + |mzscheme-funcref|) + NOTE the name clashes with MzScheme eval, + use module qualifiers to overcome this. (range-start) Start/End of the range passed with (range-end) the Scheme command. (beep) beep @@ -237,7 +248,23 @@ To facilitate bi-directional interface, you can use |mzeval()| function to evaluate MzScheme expressions and pass their values to VimL. ============================================================================== -6. Dynamic loading *mzscheme-dynamic* *E815* +6. Using Function references *mzscheme-funcref* + +MzScheme interface allows use of |Funcref|s so you can call Vim functions +directly from Scheme. For instance: > + function! MyAdd2(arg) + return a:arg + 2 + endfunction + mz (define f2 (vim-eval "function(\"MyAdd2\")")) + mz (f2 7) +< or : > + :mz (define indent (vim-eval "function('indent')")) + " return Vim indent for line 12 + :mz (indent 12) +< + +============================================================================== +7. Dynamic loading *mzscheme-dynamic* *E815* On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version| output then includes |+mzscheme/dyn|. diff --git a/en/if_perl.txt b/en/if_perl.txt index a74d88048..05b8b4e86 100644 --- a/en/if_perl.txt +++ b/en/if_perl.txt @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim version 7.3. Last change: 2012 Aug 02 +*if_perl.txt* For Vim version 7.3. Last change: 2012 Oct 25 VIM REFERENCE MANUAL by Sven Verdoolaege @@ -175,7 +175,8 @@ VIM::Windows([{wn}...]) With no arguments, returns a list of all the windows VIM::DoCommand({cmd}) Executes Ex command {cmd}. *perl-Eval* -VIM::Eval({expr}) Evaluates {expr} and returns (success, val). +VIM::Eval({expr}) Evaluates {expr} and returns (success, value) in list + context or just value in scalar context. success=1 indicates that val contains the value of {expr}; success=0 indicates a failure to evaluate the expression. '@x' returns the contents of register diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 31a0d07f9..23b6b38ab 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.3. Last change: 2012 Feb 04 +*if_pyth.txt* For Vim version 7.3. Last change: 2013 Jan 30 VIM REFERENCE MANUAL by Paul Moore @@ -27,7 +27,9 @@ The Python 3 interface is available only when Vim was compiled with the *:python* *:py* *E205* *E263* *E264* :[range]py[thon] {stmt} - Execute Python statement {stmt}. + Execute Python statement {stmt}. A simple check if + the `:python` command is working: > + :python print "Hello" :[range]py[thon] << {endmarker} {script} @@ -52,8 +54,8 @@ Example: > EOF endfunction < -Note: Python is very sensitive to the indenting. Also make sure the "class" -line and "EOF" do not have any indent. +Note: Python is very sensitive to the indenting. Make sure the "class" line +and "EOF" do not have any indent. *:pyfile* *:pyf* :[range]pyf[ile] {file} @@ -157,6 +159,26 @@ vim.bindeval(str) *python-bindeval* vimlist or vimdictionary python type that are connected to original list or dictionary. Thus modifications to these objects imply modifications of the original. + + Additionally, vimlist and vimdictionary type have read-write + `.locked` attribute that returns + Value Meaning ~ + zero Variable is not locked + vim.VAR_LOCKED Variable is locked, but can be unlocked + vim.VAR_FIXED Variable is locked and can't be unlocked + integer constants. If variable is not fixed, you can do + `var.locked=True` to lock it and `var.locked=False` to unlock. + There is no recursive locking like |:lockvar|! does. There is also + no way to lock a specific key or check whether it is locked (in any + case these locks are ignored by anything except |:let|: |extend()| + does not care, neither does python interface). + + Vimdictionary type also supports `.scope` attribute which is one of + Value Meaning ~ + zero Dictionary is not a scope one + vim.VAR_DEF_SCOPE Function-local or global scope dictionary + vim.VAR_SCOPE Other scope dictionary + 2. if expression evaluates to a function reference, then it returns callable vimfunction object. Use self keyword argument to assign |self| object for dictionary functions. @@ -362,8 +384,10 @@ sure edit "gvim.exe" and search for "python\d*.dll\c". 8. Python 3 *python3* *:py3* *:python3* -The |:py3| and |:python3| commands work similar to |:python|. - *:py3file* +The |:py3| and |:python3| commands work similar to |:python|. A simple check +if the `:py3` command is wrong: > + :py3 print("Hello") +< *:py3file* The |:py3file| command works similar to |:pyfile|. diff --git a/en/if_ruby.txt b/en/if_ruby.txt index bac0bb6aa..71d8edcad 100644 --- a/en/if_ruby.txt +++ b/en/if_ruby.txt @@ -1,4 +1,4 @@ -*if_ruby.txt* For Vim version 7.3. Last change: 2010 Oct 27 +*if_ruby.txt* For Vim version 7.3. Last change: 2012 Aug 02 VIM REFERENCE MANUAL by Shugo Maeda @@ -25,7 +25,8 @@ downloading Ruby there. 1. Commands *ruby-commands* *:ruby* *:rub* -:rub[y] {cmd} Execute Ruby command {cmd}. +:rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: > + :ruby print "Hello" :rub[y] << {endpattern} {script} @@ -40,9 +41,6 @@ downloading Ruby there. wasn't compiled in. To avoid errors, see |script-here|. -Command to try it out: > - :ruby print "Hello" # this is a comment - Example Vim script: > function! RedGem() @@ -211,6 +209,8 @@ for sure edit "gvim.exe" and search for "ruby\d*.dll\c". If you want to build Vim with Ruby 1.9.1, you need to edit the config.h file and comment-out the check for _MSC_VER. +You may also need to rename the include directory name to match the version, +strangely for Ruby 1.9.3 the directory is called 1.9.1. ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/en/if_tcl.txt b/en/if_tcl.txt index e7c255606..f4283a304 100644 --- a/en/if_tcl.txt +++ b/en/if_tcl.txt @@ -1,4 +1,4 @@ -*if_tcl.txt* For Vim version 7.3. Last change: 2008 Aug 16 +*if_tcl.txt* For Vim version 7.3. Last change: 2012 Aug 02 VIM REFERENCE MANUAL by Ingo Wilken @@ -27,7 +27,9 @@ comments, ideas etc to <Ingo.Wilken@informatik.uni-oldenburg.de> 1. Commands *tcl-ex-commands* *E571* *E572* *:tcl* *:tc* -:tc[l] {cmd} Execute Tcl command {cmd}. +:tc[l] {cmd} Execute Tcl command {cmd}. A simple check if `:tcl` + is working: > + :tcl puts "Hello" :[range]tc[l] << {endmarker} {script} diff --git a/en/insert.txt b/en/insert.txt index bf020fd42..4db43418b 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.3. Last change: 2012 Jul 10 +*insert.txt* For Vim version 7.3. Last change: 2013 Jan 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -380,7 +380,9 @@ The CTRL-O command sometimes has a side effect: If the cursor was beyond the end of the line, it will be put on the last character in the line. In mappings it's often better to use <Esc> (first put an "x" in the text, <Esc> will then always put the cursor on it). Or use CTRL-\ CTRL-O, but then -beware of the cursor possibly being beyond the end of the line. +beware of the cursor possibly being beyond the end of the line. Note that the +command following CTRL-\ CTRL-O can still move the cursor, it is not restored +to its original position. The CTRL-O command takes you to Normal mode. If you then use a command enter Insert mode again it normally doesn't nest. Thus when typing "a<C-O>a" and diff --git a/en/intro.txt b/en/intro.txt index 6682ba6aa..c643ab8db 100644 --- a/en/intro.txt +++ b/en/intro.txt @@ -1,4 +1,4 @@ -*intro.txt* For Vim version 7.3. Last change: 2011 May 15 +*intro.txt* For Vim version 7.3. Last change: 2012 Sep 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -394,6 +394,8 @@ CTRL-{char} {char} typed as a control character; that is, typing {char} *quotecommandquote* "command" A reference to a command that you can type is enclosed in double quotes. +`command` New style command, this distinguishes it from other + quoted text and strings. *key-notation* *key-codes* *keycodes* These names for keys are used in the documentation. They can also be used diff --git a/en/mbyte.txt b/en/mbyte.txt index 9a37b8663..c2d95104a 100644 --- a/en/mbyte.txt +++ b/en/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.3. Last change: 2012 Jun 06 +*mbyte.txt* For Vim version 7.3. Last change: 2012 Oct 06 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -1085,6 +1085,13 @@ Since the mapping is defined with |:lnoremap| the resulting quote will not be used for the start of another character. The "accents" keymap uses this. *keymap-accents* +The first column can also be in |<>| form: + <C-c> Ctrl-C + <A-c> Alt-c + <A-C> Alt-C +Note that the Alt mappings may not work, depending on your keyboard and +terminal. + Although it's possible to have more than one character in the second column, this is unusual. But you can use various ways to specify the character: > A a literal character diff --git a/en/options.txt b/en/options.txt index f6beddaac..3beb2b0cf 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.3. Last change: 2012 Aug 15 +*options.txt* For Vim version 7.3. Last change: 2013 Jan 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -756,7 +756,7 @@ A jump table for the options with a short description can be found at |Q_op|. feature} When on and 'termbidi' is off, the required visual character corrections that need to take place for displaying the Arabic language - take affect. Shaping, in essence, gets enabled; the term is a broad + take effect. Shaping, in essence, gets enabled; the term is a broad one which encompasses: a) the changing/morphing of characters based on their location within a word (initial, medial, final and stand-alone). @@ -3560,6 +3560,10 @@ A jump table for the options with a short description can be found at |Q_op|. to set 'guifontwide' at all unless you want to override the choice made by Pango/Xft. + Windows +multibyte only: *guifontwide_win_mbyte* + + If set and valid, 'guifontwide' is used for IME instead of 'guifont'. + *'guiheadroom'* *'ghr'* 'guiheadroom' 'ghr' number (default 50) global @@ -3820,7 +3824,8 @@ A jump table for the options with a short description can be found at |Q_op|. |hl-ModeMsg| M Mode (e.g., "-- INSERT --") |hl-LineNr| n line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set. - |hl-CursorLineNr| N like n for when 'cursorline' is set. + |hl-CursorLineNr| N like n for when 'cursorline' or 'relativenumber' is + set. |hl-Question| r |hit-enter| prompt and yes/no questions |hl-StatusLine| s status line of current window |status-line| |hl-StatusLineNC| S status lines of not-current windows @@ -4713,8 +4718,10 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} Characters that form pairs. The |%| command jumps from one to the - other. Currently only single byte character pairs are allowed, and - they must be different. The characters must be separated by a colon. + other. + Only character pairs are allowed that are different, thus you cannot + jump between two double quotes. + The characters must be separated by a colon. The pairs must be separated by a comma. Example for including '<' and '>' (HTML): > :set mps+=<:> @@ -6119,7 +6126,8 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer Number of spaces to use for each step of (auto)indent. Used for |'cindent'|, |>>|, |<<|, etc. - When zero the 'ts' value will be used. + When zero the 'ts' value will be used. Use the |shiftwidth()| + function to get the effective shiftwidth value. *'shortmess'* *'shm'* 'shortmess' 'shm' string (Vim default "filnxtToO", Vi default: "", @@ -6383,6 +6391,7 @@ A jump table for the options with a short description can be found at |Q_op|. of 8, while being able to edit like it is set to 'sts'. However, commands like "x" still work on the actual characters. When 'sts' is zero, this feature is off. + When 'sts' is negative, the value of 'shiftwidth' is used. 'softtabstop' is set to 0 when the 'paste' option is set. See also |ins-expandtab|. When 'expandtab' is not set, the number of spaces is minimized by using <Tab>s. @@ -7494,7 +7503,7 @@ A jump table for the options with a short description can be found at |Q_op|. For more information about this feature see |undo-persistence|. The undo file is not read when 'undoreload' causes the buffer from before a reload to be saved for undo. - WARNING: this is a very new feature. Use at your own risk! + When 'undofile' is turned off the undo file is NOT deleted. *'undolevels'* *'ul'* 'undolevels' 'ul' number (default 100, 1000 for Unix, VMS, diff --git a/en/pattern.txt b/en/pattern.txt index 5c4a79020..6040ba88f 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.3. Last change: 2012 May 18 +*pattern.txt* For Vim version 7.3. Last change: 2013 Jan 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -993,6 +993,8 @@ x A single character, with no special meaning, matches itself [xyz] any 'x', 'y' or 'z' [a-zA-Z]$ any alphabetic character at the end of a line \c[a-z]$ same + [А-яЁё] Russian alphabet (with utf-8 and cp1251) + */[\n]* With "\_" prepended the collection also includes the end-of-line. The same can be done by including "\n" in the collection. The diff --git a/en/pi_netrw.txt b/en/pi_netrw.txt index 142f08f16..c17ca5f7c 100644 --- a/en/pi_netrw.txt +++ b/en/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 7.3. Last change: 2012 Apr 05 +*pi_netrw.txt* For Vim version 7.3. Last change: 2012 Oct 25 ----------------------------------------------------- NETRW REFERENCE MANUAL by Charles E. Campbell, Jr. @@ -143,7 +143,7 @@ and has lines resembling > Windows' ftp doesn't support .netrc; however, one may have in one's .vimrc: > let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' -< +< Netrw will substitute the host's machine name for MACHINE from the url it is attempting to open, and so one may specify > userid @@ -209,7 +209,7 @@ EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2 default, the option arguments for the http-handling commands are: > elinks : "-source >" - links : "-source >" + links : "-dump >" curl : "-o" wget : "-q -O" fetch : "-o" @@ -1072,6 +1072,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 v Enter the file/directory under the cursor in a new |netrw-v| browser window. A vertical split is used. x View file with an associated program |netrw-x| + X Execute filename under cursor via |system()| |netrw-X| % Open a new file in netrw's current directory |netrw-%| @@ -1589,6 +1590,15 @@ Related topics: |netrw-s| |netrw-S| Associated setting variables: |g:netrw_sort_sequence| |g:netrw_sort_options| +EXECUTING FILE UNDER CURSOR VIA SYSTEM() *netrw-X* + +Pressing X while the cursor is atop an executable file will yield a prompt +using the filename asking for any arguments. Upon pressing a [return], netrw +will then call |system()| with that command and arguments. The result will +be displayed by |:echomsg|, and so |:messages| will repeat display of the +result. Ansi escape sequences will be stripped out. + + FORCING TREATMENT AS A FILE OR DIRECTORY *netrw-gd* *netrw-gf* {{{2 Remote symbolic links (ie. those listed via ssh or ftp) are problematic @@ -1596,10 +1606,10 @@ in that it is difficult to tell whether they link to a file or to a directory. To force treatment as a file: use > - gd + gf < To force treatment as a directory: use > - gf + gd < GOING UP *netrw--* {{{2 @@ -1957,7 +1967,7 @@ The "mT" mapping will apply the command in |g:netrw_ctags| (by default, it is netrw will use ssh (see |g:netrw_ssh_cmd|), and so ssh must be available for this to work on remote systems. For your local system, see |ctags| on how to get a version. I myself use hdrtags, currently available at -http://mysite.verizon.net/astronaut/src/index.html , and have > +http://www.drchip.org/astronaut/src/index.html , and have > let g:netrw_ctags= "hdrtag" < @@ -2093,6 +2103,9 @@ your browsing preferences. (see also: |netrw-settings|) history. (related: |netrw-qb| |netrw-u| |netrw-U|) + *g:netrw_dynamic_maxfilenamelen* =32: enables dynamic determination of + |g:netrw_maxfilenamelen|, which affects + local file long listing. *g:netrw_errorlvl* =0: error levels greater than or equal to this are permitted to be displayed 0: notes @@ -2843,13 +2856,13 @@ which is loaded automatically at startup (assuming :set nocp). 1. Get the <Decho.vim> script, available as: - http://mysite.verizon.net/astronaut/vim/index.html#DECHO + http://www.drchip.org/astronaut/vim/index.html#DECHO or http://vim.sourceforge.net/scripts/script.php?script_id=120 It now comes as a "vimball"; if you're using vim 7.0 or earlier, you'll need to update vimball, too. See - http://mysite.verizon.net/astronaut/vim/index.html#VIMBALL + http://www.drchip.org/astronaut/vim/index.html#VIMBALL 2. Edit the <netrw.vim> file by typing: > @@ -2882,57 +2895,77 @@ which is loaded automatically at startup (assuming :set nocp). ============================================================================== 12. History *netrw-history* {{{1 - v145: Apr 05, 2012 * moved some command from a g:netrw_local_... - format to g:netwr_local... format - * included some NOTE level messages about - commands that aren't executable - * |g:netrw_errorlvl| (default: NOTE=0) - option introduced - v144: Mar 12, 2012 * when |CTRL-W_s| or |CTRL-W_v| are used, - or their wincmd equivalents, on a netrw - buffer, the netrw's w: variables were - not copied over. Fixed. - Mar 13, 2012 * nbcd_curpos_{bufnr('%')} was commented - out, and was mistakenly used during - RestorePosn. Unfortunately, I'm not - sure why it was commented out, so this - "fix" may re-introduce an earlier problem. - Mar 21, 2012 * included s:rexposn internally to make - :Rex return the cursor to the same pos'n - upon restoration of netrw buffer - Mar 27, 2012 * (sjbesse) s:NetrwGetFile() needs to remove - "/" from the netrw buffer's usual |'isk'| - in order to allow "filetype detect" to work - properly for scripts. - v143: Jun 01, 2011 * |g:netrw_winsize| will accept a negative - number; the absolute value of it will then - be used to specify lines/columns instead of - a percentage. - Jul 05, 2011 * the "d" map now supports mkdir via ftp - See |netrw-d| and |g:netrw_remote_mkdir| - Jul 11, 2011 * Changed Explore!, Sexplore!, and Vexplore - to use a percentage of |winwidth()| instead - of a percentage of |winheight()|. - Jul 11, 2011 * included support for https://... I'm just - beginning to test this, however. - Aug 01, 2011 * changed RestoreOptions to also restore - cursor position in netrw buffers. - Aug 12, 2011 * added a note about "%" to the balloon - Aug 30, 2011 * if |g:netrw_nobeval| exists, then balloon - evaluation is suppressed. - Aug 31, 2011 * (Benjamin R Haskell) provided a patch that - implements non-standard port handling for - files opened via the remote browser. - Aug 31, 2011 * Fixed a **//pattern Explorer bug - Sep 15, 2011 * (reported by Francesco Campana) netrw - now permits the "@" to be part of the - user id (if there's an @ that appears - to the right). - Nov 21, 2011 * New option: |g:netrw_ftp_options| - Dec 07, 2011 * (James Sinclair) provided a fix handling - attempts to use a uid and password when - they weren't defined. This affected - NetWrite (NetRead already had that fix). + v146: Oct 20, 2012 * (David Kotchan) reported that under Windows, + directories named with unusual characters + such as "#" or "$" were not being listed + properly. + * (Kenny Lee) reported that the buffer list + was being populated by netrw buffers. + Netrw will now |:bwipe| netrw buffers + upon editing a file if g:netrw_fastbrowse + is zero and its not in tree listing style. + v145: Apr 05, 2012 * moved some command from a g:netrw_local_... + format to g:netwr_local... format + * included some NOTE level messages about + commands that aren't executable + * |g:netrw_errorlvl| (default: NOTE=0) + option introduced + May 18, 2012 * (Ilya Dogolazky) a scenario where a + |g:netrw_fastbrowse| of zero did not + have a local directory refreshed fixed. + Jul 10, 2012 * (Donatas) |netrw-gb| wasn't working due + to an incorrectly used variable. + Aug 09, 2012 * (Bart Baker) netrw was doubling + of entries after a split. + * (code by Takahiro Yoshihara) implemented + |g:netrw_dynamic_maxfilenamelen| + Aug 31, 2012 * (Andrew Wong) netrw refresh overwriting + the yank buffer. + v144: Mar 12, 2012 * when |CTRL-W_s| or |CTRL-W_v| are used, + or their wincmd equivalents, on a netrw + buffer, the netrw's w: variables were + not copied over. Fixed. + Mar 13, 2012 * nbcd_curpos_{bufnr('%')} was commented + out, and was mistakenly used during + RestorePosn. Unfortunately, I'm not + sure why it was commented out, so this + "fix" may re-introduce an earlier problem. + Mar 21, 2012 * included s:rexposn internally to make + :Rex return the cursor to the same pos'n + upon restoration of netrw buffer + Mar 27, 2012 * (sjbesse) s:NetrwGetFile() needs to remove + "/" from the netrw buffer's usual |'isk'| + in order to allow "filetype detect" to work + properly for scripts. + v143: Jun 01, 2011 * |g:netrw_winsize| will accept a negative + number; the absolute value of it will then + be used to specify lines/columns instead of + a percentage. + Jul 05, 2011 * the "d" map now supports mkdir via ftp + See |netrw-d| and |g:netrw_remote_mkdir| + Jul 11, 2011 * Changed Explore!, Sexplore!, and Vexplore + to use a percentage of |winwidth()| instead + of a percentage of |winheight()|. + Jul 11, 2011 * included support for https://... I'm just + beginning to test this, however. + Aug 01, 2011 * changed RestoreOptions to also restore + cursor position in netrw buffers. + Aug 12, 2011 * added a note about "%" to the balloon + Aug 30, 2011 * if |g:netrw_nobeval| exists, then balloon + evaluation is suppressed. + Aug 31, 2011 * (Benjamin R Haskell) provided a patch that + implements non-standard port handling for + files opened via the remote browser. + Aug 31, 2011 * Fixed a **//pattern Explorer bug + Sep 15, 2011 * (reported by Francesco Campana) netrw + now permits the "@" to be part of the + user id (if there's an @ that appears + to the right). + Nov 21, 2011 * New option: |g:netrw_ftp_options| + Dec 07, 2011 * (James Sinclair) provided a fix handling + attempts to use a uid and password when + they weren't defined. This affected + NetWrite (NetRead already had that fix). ============================================================================== diff --git a/en/syntax.txt b/en/syntax.txt index d3ab0ab23..b48307d01 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.3. Last change: 2012 Jul 16 +*syntax.txt* For Vim version 7.3. Last change: 2013 Jan 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1090,6 +1090,10 @@ Simpler is setting the filetype to "docbkxml" or "docbksgml": > or: > :set filetype=docbkxml +You can specify the DocBook version: > + :let docbk_ver = 3 +When not set 4 is used. + DOSBATCH *dosbatch.vim* *ft-dosbatch-syntax* @@ -2489,6 +2493,12 @@ This will add highlighting for the commands that BASH (version 2.05a and later, and part earlier) adds. +RESTRUCTURED TEXT *rst.vim* *ft-rst-syntax* + +You may set what syntax definitions should be used for code blocks via + let rst_syntax_code_list = ['vim', 'lisp', ...] + + REXX *rexx.vim* *ft-rexx-syntax* If you notice highlighting errors while scrolling backwards, which are fixed @@ -3893,9 +3903,9 @@ External matches *:syn-ext-match* These extra regular expression items are available in region patterns: */\z(* */\z(\)* *E50* *E52* - \z(\) Marks the sub-expression as "external", meaning that it is can - be accessed from another pattern match. Currently only usable - in defining a syntax region start pattern. + \z(\) Marks the sub-expression as "external", meaning that it can be + accessed from another pattern match. Currently only usable in + defining a syntax region start pattern. */\z1* */\z2* */\z3* */\z4* */\z5* \z1 ... \z9 */\z6* */\z7* */\z8* */\z9* *E66* *E67* @@ -4582,7 +4592,8 @@ IncSearch 'incsearch' highlighting; also used for the text replaced with LineNr Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set. *hl-CursorLineNr* -CursorLineNr Like LineNr when 'cursorline' is set for the cursor line. +CursorLineNr Like LineNr when 'cursorline' or 'relativenumber' is set for + the cursor line. *hl-MatchParen* MatchParen The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt| diff --git a/en/uganda.txt b/en/uganda.txt index 82481dc27..d1ed21341 100644 --- a/en/uganda.txt +++ b/en/uganda.txt @@ -1,4 +1,4 @@ -*uganda.txt* For Vim version 7.3. Last change: 2012 May 28 +*uganda.txt* For Vim version 7.3. Last change: 2012 Dec 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -238,6 +238,7 @@ Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They Holland: Transfer to the account of "Stichting ICCF Holland" in Lisse. This will allow for tax deduction if you live in Holland. Postbank, nr. 4548774 + IBAN: NL95 INGB 0004 5487 74 Germany: It is possible to make donations that allow for a tax return. Check the ICCF web site for the latest information: diff --git a/en/usr_05.txt b/en/usr_05.txt index b0f27d1fc..45bcc1749 100644 --- a/en/usr_05.txt +++ b/en/usr_05.txt @@ -1,4 +1,4 @@ -*usr_05.txt* For Vim version 7.3. Last change: 2009 Jun 04 +*usr_05.txt* For Vim version 7.3. Last change: 2012 Nov 20 VIM USER MANUAL - by Bram Moolenaar @@ -49,8 +49,7 @@ For MS-DOS and MS-Windows you can use one of these: The vimrc file can contain all the commands that you type after a colon. The most simple ones are for setting options. For example, if you want Vim to -always start with the 'incsearch' option on, add this line you your vimrc -file: > +always start with the 'incsearch' option on, add this line your vimrc file: > set incsearch diff --git a/en/usr_21.txt b/en/usr_21.txt index a49c98c2b..ce7d49454 100644 --- a/en/usr_21.txt +++ b/en/usr_21.txt @@ -1,4 +1,4 @@ -*usr_21.txt* For Vim version 7.3. Last change: 2008 Nov 09 +*usr_21.txt* For Vim version 7.3. Last change: 2012 Nov 02 VIM USER MANUAL - by Bram Moolenaar @@ -282,7 +282,7 @@ example, use: > SESSION HERE, SESSION THERE The obvious way to use sessions is when working on different projects. -Suppose you store you session files in the directory "~/.vim". You are +Suppose you store your session files in the directory "~/.vim". You are currently working on the "secret" project and have to switch to the "boring" project: > @@ -295,7 +295,7 @@ is saved, using ":mksession!". This overwrites the previous session. The next time you load the secret session you can continue where you were at this point. And finally you load the new "boring" session. -If you open help windows, split and close various window, and generally mess +If you open help windows, split and close various windows, and generally mess up the window layout, you can go back to the last saved session: > :source ~/.vim/boring.vim @@ -423,10 +423,10 @@ and nine numbered 1 to 9. A VIEW WITH A NAME The second basic way to use views is by storing the view in a file with a name -you chose. This view can be loaded while editing another file. Vim will then -switch to editing the file specified in the view. Thus you can use this to -quickly switch to editing another file, with all its options set as you saved -them. +you choose. This view can be loaded while editing another file. Vim will +then switch to editing the file specified in the view. Thus you can use this +to quickly switch to editing another file, with all its options set as you +saved them. For example, to save the view of the current file: > :mkview ~/.vim/main.vim diff --git a/en/usr_22.txt b/en/usr_22.txt index 8ca034e89..3c527a686 100644 --- a/en/usr_22.txt +++ b/en/usr_22.txt @@ -1,4 +1,4 @@ -*usr_22.txt* For Vim version 7.3. Last change: 2010 Feb 21 +*usr_22.txt* For Vim version 7.3. Last change: 2012 Nov 15 VIM USER MANUAL - by Bram Moolenaar @@ -326,9 +326,9 @@ shorter to type: > The output could look like this: - 1 #h "help.txt" line 62 ~ - 2 %a+ "usr_21.txt" line 1 ~ - 3 "usr_toc.txt" line 1 ~ + 1 #h "help.txt" line 62 ~ + 2 %a + "usr_21.txt" line 1 ~ + 3 "usr_toc.txt" line 1 ~ The first column contains the buffer number. You can use this to edit the buffer without having to type the name, see below. diff --git a/en/usr_41.txt b/en/usr_41.txt index 1a4ae3d1b..edb9b82c5 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.3. Last change: 2012 Mar 16 +*usr_41.txt* For Vim version 7.3. Last change: 2012 Oct 13 VIM USER MANUAL - by Bram Moolenaar @@ -1581,7 +1581,7 @@ Here the comment part will be ignored. However, Vim will try to unmap RESTORING THE VIEW -Sometimes you want to make a change and go back to where cursor was. +Sometimes you want to make a change and go back to where the cursor was. Restoring the relative position would also be nice, so that the same line appears at the top of the window. This example yanks the current line, puts it above the first line in the diff --git a/en/various.txt b/en/various.txt index f4107e6e7..d602af692 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.3. Last change: 2012 Aug 03 +*various.txt* For Vim version 7.3. Last change: 2012 Dec 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -174,27 +174,37 @@ g8 Print the hex values of the bytes used in the the command-line. {commands} are executed like they are typed. For undo all commands are undone together. Execution stops when an error is encountered. + If the [!] is given, mappings will not be used. + Without it, when this command is called from a + non-remappable mapping (|:noremap|), the argument can + be mapped anyway. + {commands} should be a complete command. If {commands} does not finish a command, the last one will be aborted as if <Esc> or <C-C> was typed. - The display isn't updated while ":normal" is busy. This implies that an insert command must be completed (to start Insert mode, see |:startinsert|). A ":" command must be completed as well. And you can't use "Q" or "gQ" to start Ex mode. + + The display is not updated while ":normal" is busy. + {commands} cannot start with a space. Put a count of 1 (one) before it, "1 " is one space. + The 'insertmode' option is ignored for {commands}. + This command cannot be followed by another command, since any '|' is considered part of the command. + This command can be used recursively, but the depth is limited by 'maxmapdepth'. - When this command is called from a non-remappable - mapping |:noremap|, the argument can be mapped anyway. + An alternative is to use |:execute|, which uses an expression as argument. This allows the use of printable characters to represent special characters. + Example: > :exe "normal \<c-w>\<c-w>" < {not in Vi, of course} @@ -353,75 +363,75 @@ N *+mouseshape* |'mouseshape'| B *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse| N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| B *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| -N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| +N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| B *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse| -N *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse| -N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| -B *+multi_byte* 16 and 32 bit characters |multibyte| +B *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse| +N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| +B *+multi_byte* 16 and 32 bit characters |multibyte| *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| -N *+multi_lang* non-English language support |multi-lang| +N *+multi_lang* non-English language support |multi-lang| m *+mzscheme* Mzscheme interface |mzscheme| m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn| m *+netbeans_intg* |netbeans| -m *+ole* Win32 GUI only: |ole-interface| -N *+path_extra* Up/downwards search in 'path' and 'tags' +m *+ole* Win32 GUI only: |ole-interface| +N *+path_extra* Up/downwards search in 'path' and 'tags' m *+perl* Perl interface |perl| m *+perl/dyn* Perl interface |perl-dynamic| |/dyn| N *+persistent_undo* Persistent undo |undo-persistence| - *+postscript* |:hardcopy| writes a PostScript file + *+postscript* |:hardcopy| writes a PostScript file N *+printer* |:hardcopy| command H *+profile* |:profile| command m *+python* Python 2 interface |python| -m *+python/dyn* Python 2 interface |python-dynamic| |/dyn| +m *+python/dyn* Python 2 interface |python-dynamic| |/dyn| m *+python3* Python 3 interface |python| -m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn| +m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn| N *+quickfix* |:make| and |quickfix| commands N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout, 'redrawtime' option B *+rightleft* Right to left typing |'rightleft'| m *+ruby* Ruby interface |ruby| m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| -N *+scrollbind* |'scrollbind'| +N *+scrollbind* |'scrollbind'| B *+signs* |:sign| -N *+smartindent* |'smartindent'| +N *+smartindent* |'smartindent'| m *+sniff* SniFF interface |sniff| -N *+startuptime* |--startuptime| argument -N *+statusline* Options 'statusline', 'rulerformat' and special +N *+startuptime* |--startuptime| argument +N *+statusline* Options 'statusline', 'rulerformat' and special formats of 'titlestring' and 'iconstring' m *+sun_workshop* |workshop| N *+syntax* Syntax highlighting |syntax| *+system()* Unix only: opposite of |+fork| -N *+tag_binary* binary searching in tags file |tag-binary-search| +N *+tag_binary* binary searching in tags file |tag-binary-search| N *+tag_old_static* old method for static tags |tag-old-static| m *+tag_any_white* any white space allowed in tags file |tag-any-white| -m *+tcl* Tcl interface |tcl| +m *+tcl* Tcl interface |tcl| m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn| *+terminfo* uses |terminfo| instead of termcap N *+termresponse* support for |t_RV| and |v:termresponse| -N *+textobjects* |text-objects| selection +N *+textobjects* |text-objects| selection *+tgetent* non-Unix only: able to use external termcap N *+title* Setting the window 'title' and 'icon' N *+toolbar* |gui-toolbar| N *+user_commands* User-defined commands. |user-commands| N *+viminfo* |'viminfo'| N *+vertsplit* Vertically split windows |:vsplit| -N *+virtualedit* |'virtualedit'| +N *+virtualedit* |'virtualedit'| S *+visual* Visual mode |Visual-mode| -N *+visualextra* extra Visual mode commands |blockwise-operators| +N *+visualextra* extra Visual mode commands |blockwise-operators| N *+vreplace* |gR| and |gr| -N *+wildignore* |'wildignore'| +N *+wildignore* |'wildignore'| N *+wildmenu* |'wildmenu'| S *+windows* more than one window -m *+writebackup* |'writebackup'| is default on -m *+xim* X input method |xim| +m *+writebackup* |'writebackup'| is default on +m *+xim* X input method |xim| *+xfontset* X fontset support |xfontset| m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support| *+xsmp* XSMP (X session management) support *+xsmp_interact* interactive XSMP (X session management) support N *+xterm_clipboard* Unix only: xterm clipboard handling -m *+xterm_save* save and restore xterm screen |xterm-screens| -N *+X11* Unix only: can restore window title |X11| +m *+xterm_save* save and restore xterm screen |xterm-screens| +N *+X11* Unix only: can restore window title |X11| */dyn* *E370* *E448* To some of the features "/dyn" is added when the diff --git a/en/visual.txt b/en/visual.txt index a8c8ce672..6905c2180 100644 --- a/en/visual.txt +++ b/en/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 7.3. Last change: 2012 Jul 25 +*visual.txt* For Vim version 7.3. Last change: 2012 Aug 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -62,8 +62,15 @@ position. *v* *characterwise-visual* [count]v Start Visual mode per character. - With [count] select that many characters, like moving - the cursor right [count] characters. One less when + With [count] select the same number of characters or + lines as used for the last Visual operation, but at + the current cursor position, multiplied by [count]. + When the previous Visual operation was on a block both + the width and height of the block are multiplied by + [count]. + When there was no previous Visual operation [count] + characters are selected. This is like moving the + cursor right N * [count] characters. One less when 'selection' is not "exclusive". *V* *linewise-visual* diff --git a/en/windows.txt b/en/windows.txt index b9f771d75..b529ee59e 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 7.3. Last change: 2012 Apr 13 +*windows.txt* For Vim version 7.3. Last change: 2012 Nov 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -939,9 +939,9 @@ list of buffers. |unlisted-buffer| :buffers[!] *:buffers* *:ls* :ls[!] Show all buffers. Example: - 1 #h "/test/text" line 1 ~ - 2u "asdf" line 0 ~ - 3 %a+ "version.c" line 1 ~ + 1 #h "/test/text" line 1 ~ + 2u "asdf" line 0 ~ + 3 %a + "version.c" line 1 ~ When the [!] is included the list will show unlisted buffers (the term "unlisted" is a bit confusing then...). From 29264eca4e3941bc2e5b5665d6126400fc031f48 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 5 Feb 2013 02:07:44 +0900 Subject: [PATCH 413/783] update en/spell.txt to 7.3 snapshot --- en/spell.txt | 77 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 19 deletions(-) diff --git a/en/spell.txt b/en/spell.txt index 832dee361..5c76eb532 100644 --- a/en/spell.txt +++ b/en/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 7.1. Last change: 2007 May 07 +*spell.txt* For Vim version 7.3. Last change: 2011 May 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -21,7 +21,7 @@ vimspell" to find about it. But you will probably want to get rid of the plugin and use the 'spell' option instead, it works better. ============================================================================== -1. Quick start *spell-quickstart* +1. Quick start *spell-quickstart* *E756* This command switches on spell checking: > @@ -46,7 +46,7 @@ won't work. To search for the next misspelled word: - *]s* *E756* + *]s* ]s Move to next misspelled word after the cursor. A count before the command can be used to repeat. 'wrapscan' applies. @@ -335,6 +335,9 @@ A spell file might not be available in the current 'encoding'. See |spell-mkspell| about how to create a spell file. Converting a spell file with "iconv" will NOT work! +Note: on VMS ".{enc}.spl" is changed to "_{enc}.spl" to avoid trouble with +filenames. + *spell-sug-file* *E781* If there is a file with exactly the same name as the ".spl" file but ending in ".sug", that file will be used for giving better suggestions. It isn't loaded @@ -468,8 +471,11 @@ Vim uses a binary file format for spelling. This greatly speeds up loading the word list and keeps it small. *.aff* *.dic* *Myspell* You can create a Vim spell file from the .aff and .dic files that Myspell -uses. Myspell is used by OpenOffice.org and Mozilla. You should be able to -find them here: +uses. Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt +files are zip files which contain the .aff and .dic files. You should be able +to find them here: + http://extensions.services.openoffice.org/dictionary +The older, OpenOffice 2 files may be used if this doesn't work: http://wiki.services.openoffice.org/wiki/Dictionaries You can also use a plain word list. The results are the same, the choice depends on what word lists you can find. @@ -516,7 +522,7 @@ then Vim will try to guess. Up to eight regions can be combined. *E754* *E755* The REP and SAL items of the first .aff file where they appear are used. |spell-REP| |spell-SAL| - + *E845* This command uses a lot of memory, required to find the optimal word tree (Polish, Italian and Hungarian require several hundred Mbyte). The final result will @@ -619,7 +625,8 @@ SPELL FILE MISSING *spell-SpellFileMissing* *spellfile.vim* If the spell file for the language you are using is not available, you will get an error message. But if the "spellfile.vim" plugin is active it will offer you to download the spell file. Just follow the instructions, it will -ask you where to write the file. +ask you where to write the file (there must be a writable directory in +'runtimepath' for this). The plugin has a default place where to look for spell files, on the Vim ftp server. If you want to use another location or another protocol, set the @@ -830,8 +837,11 @@ Comment lines in the .aff file start with a '#': # comment line ~ -With some items it's also possible to put a comment after it, but this isn't -supported in general. +Items with a fixed number of arguments can be followed by a comment. But only +if none of the arguments can contain white space. The comment must start with +a "#" character. Example: + + KEEPCASE = # fix case for words with this flag ~ ENCODING *spell-SET* @@ -964,6 +974,9 @@ common items and two-character flags for uncommon items. Note: When using utf-8 only characters up to 65000 may be used for flags. +Note: even when using "num" or "long" the number of flags available to +compounding and prefixes is limited to about 250. + AFFIXES *spell-PFX* *spell-SFX* @@ -1177,6 +1190,9 @@ word as good. The flag also applies to the word with affixes, thus this can be used to mark a whole bunch of related words as bad. + *spell-FORBIDDENWORD* +FORBIDDENWORD can be used just like BAD. For compatibility with Hunspell. + *spell-NEEDAFFIX* The NEEDAFFIX flag is used to require that a word is used with an affix. The word itself is not a good word (unless there is an empty affix). Example: @@ -1228,6 +1244,7 @@ one or more groups, where each group can be: Optionally this may be followed by: * the group appears zero or more times, e.g., sm*e + the group appears one or more times, e.g., c+ + ? the group appears zero times or once, e.g., x? This is similar to the regexp pattern syntax (but not the same!). A few examples with the sequence of word flags they require: @@ -1235,6 +1252,7 @@ examples with the sequence of word flags they require: COMPOUNDRULE yz yz COMPOUNDRULE x+z xz xxz xxxz etc. COMPOUNDRULE yx+ yx yxx yxxx etc. + COMPOUNDRULE xy?z xz xyz COMPOUNDRULE [abc]z az bz cz COMPOUNDRULE [abc]+z az aaz abaz bz baz bcbz cz caz cbaz etc. @@ -1267,6 +1285,10 @@ compound word. The word itself is not a good word. Example: NEEDCOMPOUND & ~ + *spell-ONLYINCOMPOUND* +The ONLYINCOMPOUND does exactly the same as NEEDCOMPOUND. Supported for +compatibility with Hunspell. + *spell-COMPOUNDMIN* The minimal character length of a word used for compounding is specified with COMPOUNDMIN. Example: @@ -1327,6 +1349,20 @@ compound. This means it counts for two words when checking the compounding rules. Can also be used for an affix to count the affix as a compounding word. + *spell-CHECKCOMPOUNDPATTERN* +CHECKCOMPOUNDPATTERN is used to define patterns that, when matching at the +position where two words are compounded together forbids the compound. +For example: + CHECKCOMPOUNDPATTERN o e ~ + +This forbids compounding if the first word ends in "o" and the second word +starts with "e". + +The arguments must be plain text, no patterns are actually supported, despite +the item name. Case is always ignored. + +The Hunspell feature to use three arguments and flags is not supported. + *spell-SYLLABLE* The SYLLABLE item defines characters or character sequences that are used to count the number of syllables in a word. Example: @@ -1495,6 +1531,10 @@ ignored, not supported or defined in another way. ACCENT (Hunspell) *spell-ACCENT* Use MAP instead. |spell-MAP| +BREAK (Hunspell) *spell-BREAK* + Define break points. Unclear how it works exactly. + Not supported. + CHECKCOMPOUNDCASE (Hunspell) *spell-CHECKCOMPOUNDCASE* Disallow uppercase letters at compound word boundaries. Not supported. @@ -1511,9 +1551,6 @@ CHECKCOMPOUNDTRIPLE (Hunspell) *spell-CHECKCOMPOUNDTRIPLE* Forbid three identical characters when compounding. Not supported. -CHECKCOMPOUNDPATTERN (Hunspell) *spell-CHECKCOMPOUNDPATTERN* - Forbid compounding when patterns match. Not supported. - COMPLEXPREFIXES (Hunspell) *spell-COMPLEXPREFIXES* Enables using two prefixes. Not supported. @@ -1535,13 +1572,18 @@ COMPOUNDEND (Hunspell) *spell-COMPOUNDEND* COMPOUNDMIDDLE (Hunspell) *spell-COMPOUNDMIDDLE* Use COMPOUNDRULE instead. |spell-COMPOUNDRULE| +COMPOUNDRULES (Hunspell) *spell-COMPOUNDRULES* + Number of COMPOUNDRULE lines following. Ignored, but the + argument must be a number. + COMPOUNDSYLLABLE (Hunspell) *spell-COMPOUNDSYLLABLE* Use SYLLABLE and COMPOUNDSYLMAX instead. |spell-SYLLABLE| |spell-COMPOUNDSYLMAX| -FORBIDDENWORD (Hunspell) *spell-FORBIDDENWORD* - Use BAD instead. |spell-BAD| - +KEY (Hunspell) *spell-KEY* + Define characters that are close together on the keyboard. + Used to give better suggestions. Not supported. + LANG (Hunspell) *spell-LANG* This specifies language-specific behavior. This actually moves part of the language knowledge into the program, @@ -1552,10 +1594,7 @@ LEMMA_PRESENT (Hunspell) *spell-LEMMA_PRESENT* Only needed for morphological analysis. MAXNGRAMSUGS (Hunspell) *spell-MAXNGRAMSUGS* - Not supported. - -ONLYINCOMPOUND (Hunspell) *spell-ONLYINCOMPOUND* - Use NEEDCOMPOUND instead. |spell-NEEDCOMPOUND| + Set number of n-gram suggestions. Not supported. PSEUDOROOT (Hunspell) *spell-PSEUDOROOT* Use NEEDAFFIX instead. |spell-NEEDAFFIX| From f37d8277df0d6a19733a1801b3259e1f82d1464a Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 5 Feb 2013 22:57:36 +0900 Subject: [PATCH 414/783] fix typos --- tutor/tutor.ja | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tutor/tutor.ja b/tutor/tutor.ja index 2034443c2..4b7d2a08a 100644 --- a/tutor/tutor.ja +++ b/tutor/tutor.ja @@ -126,8 +126,8 @@ NOTE: 全てのレッスンを通じて、覚えようとするのではなく 3. テキストを追加し終えたら、 <ESC> を押してノーマルモードに戻りましょう。 - 4. 2行目の ---> と示された場所へ移動し、ステップ 2 から 3 繰り返して文法を - 修正しましょう。 + 4. 2行目の ---> と示された場所へ移動し、ステップ 2 から 3 を繰り返して文法 + を修正しましょう。 ---> ここには間違ったテキストがあり ここには間違ったテキストがあります。 @@ -215,7 +215,7 @@ NOTE: <ESC> キーを押すとノーマルモードに移行します。その 2. 以下の ---> と示された行にカーソルを移動しましょう。 - 3. 正しい文の末尾へカーソルを移動しましょう(最初の . の後です)。 + 3. 正しい文の末尾へカーソルを移動しましょう(最初の 。 の後です)。 4. 行末まで削除するのに d$ とタイプしましょう。 @@ -265,7 +265,7 @@ NOTE: 冒険したい人は、ノーマルモードにてコマンドなしに 4. 0 (ゼロ)をタイプして行頭に移動します。 - 5. ステップ 2 と 3 を違う数値と使って繰り返します。 + 5. ステップ 2 と 3 を違う数値を使って繰り返します。 ---> This is just a line with words you can move around in. @@ -747,7 +747,7 @@ NOTE: 外部コマンドの出力を読み込むことも出来ます。例え 3. カーソルの後ろにテキストを追加するために a (小文字) をタイプします。 - 4. その下の行ののような単語に完成させます。挿入モードを抜ける為に <ESC> に押 + 4. その下の行のような単語に完成させます。挿入モードを抜ける為に <ESC> を押 します。 5. e を使って次の不完全な単語へ移動し、ステップ 3 と 4 を繰り返します。 @@ -878,7 +878,7 @@ Note: 1つの検索コマンドだけ大文字小文字の区別をやめたい ** Vim の特徴を発揮する ** - Vim には Vi よりも多くの特徴を踏まえていまが、そのほとんどは初期状態にて + Vim には Vi よりも多くの特徴を踏まえていますが、そのほとんどは初期状態にて 使用不可となっています。より多くの特徴を使いはじめるには "vimrc" ファイル を作成します。 From 2800376f3e3fa030af0b8ba1367b1c4642d1ec51 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 10 Feb 2013 12:07:14 +0900 Subject: [PATCH 415/783] update en/*.txt to 7.3.806 --- en/diff.txt | 2 +- en/gui_w16.txt | 2 +- en/gui_w32.txt | 2 +- en/if_mzsch.txt | 2 +- en/if_pyth.txt | 4 ++-- en/index.txt | 20 ++++++++++---------- en/usr_toc.txt | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/en/diff.txt b/en/diff.txt index 036dc5e13..a51138ab9 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -220,7 +220,7 @@ The diffs are highlighted with these groups: that parts in the middle that are still the same are highlighted anyway. Only "iwhite" of 'diffopt' is used here. -|hl-DiffDelete| DiffDelete Deleted lines. Also called filler lines, +|hl-DiffDelete| DiffDelete Deleted lines. Also called filler lines, because they don't really exist in this buffer. diff --git a/en/gui_w16.txt b/en/gui_w16.txt index a98f0d039..5b1ca64ab 100644 --- a/en/gui_w16.txt +++ b/en/gui_w16.txt @@ -16,7 +16,7 @@ Vim's Graphical User Interface *gui-w16* *win16-gui* Other relevant documentation: |gui.txt| For generic items of the GUI. -|os_msdos.txt| For items common to DOS and Windows. +|os_msdos.txt| For items common to DOS and Windows. |gui_w32.txt| Some items here are also applicable to the Win16 version. {Vi does not have a Windows GUI} diff --git a/en/gui_w32.txt b/en/gui_w32.txt index 2958282d0..ee8049cbd 100644 --- a/en/gui_w32.txt +++ b/en/gui_w32.txt @@ -17,7 +17,7 @@ Vim's Win32 Graphical User Interface *gui-w32* *win32-gui* Other relevant documentation: |gui.txt| For generic items of the GUI. -|os_win32.txt| For Win32 specific items. +|os_win32.txt| For Win32 specific items. {Vi does not have a Windows GUI} diff --git a/en/if_mzsch.txt b/en/if_mzsch.txt index f9b87f7fb..b7a35c267 100644 --- a/en/if_mzsch.txt +++ b/en/if_mzsch.txt @@ -1,4 +1,4 @@ -*if_mzsch.txt* For Vim version 7.3. Last change: 2010 Feb 11 +*if_mzsch.txt* For Vim version 7.3. Last change: 2012 Dec 17 VIM REFERENCE MANUAL by Sergey Khorev diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 23b6b38ab..575002319 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.3. Last change: 2013 Jan 30 +*if_pyth.txt* For Vim version 7.3. Last change: 2013 Feb 03 VIM REFERENCE MANUAL by Paul Moore @@ -385,7 +385,7 @@ sure edit "gvim.exe" and search for "python\d*.dll\c". *:py3* *:python3* The |:py3| and |:python3| commands work similar to |:python|. A simple check -if the `:py3` command is wrong: > +if the `:py3` command is working: > :py3 print("Hello") < *:py3file* The |:py3file| command works similar to |:pyfile|. diff --git a/en/index.txt b/en/index.txt index 423e7b9ac..57ca2fd79 100644 --- a/en/index.txt +++ b/en/index.txt @@ -94,8 +94,8 @@ tag char action in Insert mode ~ |i_CTRL-Z| CTRL-Z when 'insertmode' set: suspend Vim |i_<Esc>| <Esc> end insert mode (unless 'insertmode' set) |i_CTRL-[| CTRL-[ same as <Esc> -|i_CTRL-\_CTRL-N| CTRL-\ CTRL-N go to Normal mode -|i_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode' +|i_CTRL-\_CTRL-N| CTRL-\ CTRL-N go to Normal mode +|i_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode' CTRL-\ a - z reserved for extensions CTRL-\ others not used |i_CTRL-]| CTRL-] trigger abbreviation @@ -141,7 +141,7 @@ tag char action in Insert mode ~ |i_<ScrollWheelUp>| <ScrollWheelUp> move window three lines up |i_<S-ScrollWheelUp>| <S-ScrollWheelUp> move window one page up |i_<ScrollWheelLeft>| <ScrollWheelLeft> move window six columns left -|i_<S-ScrollWheelLeft>| <S-ScrollWheelLeft> move window one page left +|i_<S-ScrollWheelLeft>| <S-ScrollWheelLeft> move window one page left |i_<ScrollWheelRight>| <ScrollWheelRight> move window six columns right |i_<S-ScrollWheelRight>| <S-ScrollWheelRight> move window one page right @@ -212,8 +212,8 @@ tag char note action in Normal mode ~ |CTRL-Y| CTRL-Y scroll N lines downwards |CTRL-Z| CTRL-Z suspend program (or start new shell) CTRL-[ <Esc> not used -|CTRL-\_CTRL-N| CTRL-\ CTRL-N go to Normal mode (no-op) -|CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode' +|CTRL-\_CTRL-N| CTRL-\ CTRL-N go to Normal mode (no-op) +|CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode' CTRL-\ a - z reserved for extensions CTRL-\ others not used |CTRL-]| CTRL-] :ta to ident under cursor @@ -431,7 +431,7 @@ tag char note action in Normal mode ~ |<Insert>| <Insert> 2 same as "i" |<Left>| <Left> 1 same as "h" |<LeftMouse>| <LeftMouse> 1 move cursor to the mouse click position -|<MiddleMouse>| <MiddleMouse> 2 same as "gP" at the mouse click position +|<MiddleMouse>| <MiddleMouse> 2 same as "gP" at the mouse click position |<PageDown>| <PageDown> same as CTRL-F |<PageUp>| <PageUp> same as CTRL-B |<Right>| <Right> 1 same as "l" @@ -640,7 +640,7 @@ tag char note action in Normal mode ~ |[s| [s 1 move to the previous misspelled word |[z| [z 1 move to start of open fold |[{| [{ 1 cursor N times back to unmatched '{' -|[<MiddleMouse> [<MiddleMouse> 2 same as "[p" +|[<MiddleMouse>| [<MiddleMouse> 2 same as "[p" |]_CTRL-D| ] CTRL-D jump to first #define found in current and included files matching the word under the @@ -680,7 +680,7 @@ tag char note action in Normal mode ~ |]s| ]s 1 move to next misspelled word |]z| ]z 1 move to end of open fold |]}| ]} 1 cursor N times forward to unmatched '}' -|]<MiddleMouse> ]<MiddleMouse> 2 same as "]p" +|]<MiddleMouse>| ]<MiddleMouse> 2 same as "]p" ============================================================================== 2.4 Commands starting with 'g' *g* @@ -1011,8 +1011,8 @@ tag command action in Command-line editing mode ~ CTRL-Z not used (reserved for suspend) |c_<Esc>| <Esc> abandon command-line without executing it |c_<Esc>| CTRL-[ same as <Esc> -|c_CTRL-\_CTRL-N| CTRL-\ CTRL-N go to Normal mode, abandon command-line -|c_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode', +|c_CTRL-\_CTRL-N| CTRL-\ CTRL-N go to Normal mode, abandon command-line +|c_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode', abandon command-line CTRL-\ a - d reserved for extensions |c_CTRL-\_e| CTRL-\ e {expr} replace the command line with the result of diff --git a/en/usr_toc.txt b/en/usr_toc.txt index 5d360d511..f0bb24ef6 100644 --- a/en/usr_toc.txt +++ b/en/usr_toc.txt @@ -248,7 +248,7 @@ Subjects that can be read independently. |28.7| Folding by syntax |28.8| Folding by expression |28.9| Folding unchanged lines - |28.10| Which fold method to use? + |28.10| Which fold method to use? |usr_29.txt| Moving through programs |29.1| Using tags From cdf4a0932250300cd9889f659eb0955658434de1 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Thu, 14 Feb 2013 00:38:31 +0900 Subject: [PATCH 416/783] update some of en/*.txt to 7.3.813 fix misalignment --- en/autocmd.txt | 2 +- en/intro.txt | 4 +- en/pattern.txt | 2 +- en/quickref.txt | 104 ++++++++++++++++++++++++------------------------ en/usr_08.txt | 2 +- en/usr_28.txt | 2 +- 6 files changed, 58 insertions(+), 58 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index 32cad6764..2fae1e2fb 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -266,7 +266,7 @@ Name triggered by ~ |GUIFailed| after starting the GUI failed |TermResponse| after the terminal response to |t_RV| is received -|QuitPre| when using `:quit`, before deciding whether to quit +|QuitPre| when using `:quit`, before deciding whether to quit |VimLeavePre| before exiting Vim, before writing the viminfo file |VimLeave| before exiting Vim, after writing the viminfo file diff --git a/en/intro.txt b/en/intro.txt index c643ab8db..856726a99 100644 --- a/en/intro.txt +++ b/en/intro.txt @@ -394,8 +394,8 @@ CTRL-{char} {char} typed as a control character; that is, typing {char} *quotecommandquote* "command" A reference to a command that you can type is enclosed in double quotes. -`command` New style command, this distinguishes it from other - quoted text and strings. +`command` New style command, this distinguishes it from other quoted + text and strings. *key-notation* *key-codes* *keycodes* These names for keys are used in the documentation. They can also be used diff --git a/en/pattern.txt b/en/pattern.txt index 6040ba88f..7565c898e 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -504,7 +504,7 @@ Character classes {not in Vi}: */character-classes* x x a character with no special meaning matches itself |/[]| [] \[] any character specified inside the [] -|/\%[]| \%[] \%[] a sequence of optionally matched atoms +|/\%[]| \%[] \%[] a sequence of optionally matched atoms |/\c| \c \c ignore case, do not use the 'ignorecase' option |/\C| \C \C match case, do not use the 'ignorecase' option diff --git a/en/quickref.txt b/en/quickref.txt index 1fef2177d..5f76f71e6 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.3. Last change: 2012 Feb 22 +*quickref.txt* For Vim version 7.3. Last change: 2013 Feb 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -7,7 +7,7 @@ *quickref* *Contents* tag subject tag subject ~ -|Q_ct| list of help files |Q_re| Repeating commands +|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 @@ -27,7 +27,7 @@ |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 + |Q_fo| Folding ------------------------------------------------------------------------------ N is used to indicate an optional count that can be given before the command. @@ -186,7 +186,7 @@ N is used to indicate an optional count that can be given before the command. |: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 +|:ju| :ju[mps] print the jump list ------------------------------------------------------------------------------ *Q_vm* Various motions @@ -204,30 +204,30 @@ N is used to indicate an optional count that can be given before the command. ------------------------------------------------------------------------------ *Q_ta* Using tags -|:ta| :ta[g][!] {tag} jump to tag {tag} -|:ta| :[count]ta[g][!] jump to [count]'th newer tag in tag list +|:ta| :ta[g][!] {tag} jump to tag {tag} +|:ta| :[count]ta[g][!] jump to [count]'th newer tag in tag list |CTRL-]| CTRL-] jump to the tag under cursor, unless changes have been made -|:ts| :ts[elect][!] [tag] list matching tags and select one to jump to +|:ts| :ts[elect][!] [tag] list matching tags and select one to jump to |:tjump| :tj[ump][!] [tag] jump to tag [tag] or select from list when there are multiple matches -|:ltag| :lt[ag][!] [tag] jump to tag [tag] and add matching tags to the +|:ltag| :lt[ag][!] [tag] jump to tag [tag] and add matching tags to the location list -|:tags| :tags print tag list +|:tags| :tags print tag list |CTRL-T| N CTRL-T jump back from Nth older tag in tag list -|:po| :[count]po[p][!] jump back from [count]'th older tag in tag list +|:po| :[count]po[p][!] jump back from [count]'th older tag in tag list |:tnext| :[count]tn[ext][!] jump to [count]'th next matching tag |:tp| :[count]tp[revious][!] jump to [count]'th previous matching tag -|:tr| :[count]tr[ewind][!] jump to [count]'th matching tag -|:tl| :tl[ast][!] jump to last matching tag +|:tr| :[count]tr[ewind][!] jump to [count]'th matching tag +|:tl| :tl[ast][!] jump to last matching tag -|:ptag| :pt[ag] {tag} open a preview window to show tag {tag} -|CTRL-W_}| CTRL-W } like CTRL-] but show tag in preview window +|:ptag| :pt[ag] {tag} open a preview window to show tag {tag} +|CTRL-W_}| CTRL-W } like CTRL-] but show tag in preview window |:pts| :pts[elect] like ":tselect" but show tag in preview window |:ptjump| :ptj[ump] like ":tjump" but show tag in preview window |:pclose| :pc[lose] close tag preview window -|CTRL-W_z| CTRL-W z close tag preview window +|CTRL-W_z| CTRL-W z close tag preview window ------------------------------------------------------------------------------ *Q_sc* Scrolling @@ -260,7 +260,7 @@ These only work when 'wrap' is off: |:startreplace| :startr[eplace][!] start Replace mode, at EOL when [!] used in Visual block mode: -|v_b_I| I insert the same text in front of all the selected lines +|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 @@ -334,16 +334,16 @@ In Insert or Command-line mode: *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 +|<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 +|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 +|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 +|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 @@ -369,7 +369,7 @@ In Insert or Command-line mode: |R| N R enter Replace mode (repeat the entered text N times) |gR| N gR enter virtual Replace mode: Like Replace mode but without affecting layout -|v_b_r| {visual}r{char} +|v_b_r| {visual}r{char} in Visual block mode: Replace each char of the selected text with {char} @@ -447,13 +447,13 @@ In Insert or Command-line 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 +|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_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) @@ -509,8 +509,8 @@ In Insert or Command-line mode: ------------------------------------------------------------------------------ *Q_km* Key mapping -|:map| :ma[p] {lhs} {rhs} map {lhs} to {rhs} in Normal and Visual mode -|:map!| :ma[p]! {lhs} {rhs} map {lhs} to {rhs} in Insert and Command-line +|:map| :ma[p] {lhs} {rhs} map {lhs} to {rhs} in Normal and Visual mode +|:map!| :ma[p]! {lhs} {rhs} map {lhs} to {rhs} in Insert and Command-line mode |:noremap| :no[remap][!] {lhs} {rhs} same as ":map", no remapping for this {rhs} @@ -522,19 +522,19 @@ In Insert or Command-line mode: Normal and Visual mode |:map_l!| :ma[p]! [lhs] list mappings (starting with [lhs]) for Insert and Command-line mode -|:cmap| :cmap/:cunmap/:cnoremap +|:cmap| :cmap/:cunmap/:cnoremap like ":map!"/":unmap!"/":noremap!" but for Command-line mode only -|:imap| :imap/:iunmap/:inoremap +|:imap| :imap/:iunmap/:inoremap like ":map!"/":unmap!"/":noremap!" but for Insert mode only -|:nmap| :nmap/:nunmap/:nnoremap +|:nmap| :nmap/:nunmap/:nnoremap like ":map"/":unmap"/":noremap" but for Normal mode only -|:vmap| :vmap/:vunmap/:vnoremap +|:vmap| :vmap/:vunmap/:vnoremap like ":map"/":unmap"/":noremap" but for Visual mode only -|:omap| :omap/:ounmap/:onoremap +|:omap| :omap/:ounmap/:onoremap like ":map"/":unmap"/":noremap" but only for when an operator is pending |:mapc| :mapc[lear] remove mappings for Normal and Visual mode @@ -958,9 +958,9 @@ Short explanation of each option: *option-list* ------------------------------------------------------------------------------ *Q_ur* Undo/Redo commands -|u| N u undo last N changes +|u| N u undo last N changes |CTRL-R| N CTRL-R redo last N undone changes -|U| U restore last changed line +|U| U restore last changed line ------------------------------------------------------------------------------ *Q_et* External commands @@ -1011,7 +1011,7 @@ Short explanation of each option: *option-list* C4350, etc.) |:normal| :norm[al][!] {commands} execute Normal mode commands -|Q| Q switch to "Ex" mode +|Q| Q switch to "Ex" mode |:redir| :redir >{file} redirect messages to {file} |:silent| :silent[!] {command} execute {command} silently @@ -1087,11 +1087,11 @@ Context-sensitive completion on the command-line: ------------------------------------------------------------------------------ *Q_ex* Special Ex characters -|:bar| | separates two commands (not for ":global" and ":!") +|:bar| | separates two commands (not for ":global" and ":!") |:quote| " begins comment -|:_%| % current file name (only where a file name is expected) -|:_#| #[num] alternate file name [num] (only where a file name is +|:_%| % current file name (only where a file name is expected) +|:_#| #[num] alternate file name [num] (only where a file name is expected) Note: The next seven are typed literally; these are not special keys! |:<abuf>| <abuf> buffer number, for use in an autocommand (only where a @@ -1171,18 +1171,18 @@ Context-sensitive completion on the command-line: Without !: Fail if changes have been made to the current buffer. With !: Discard any changes to the current buffer. |:edit_f| :e[dit][!] {file} edit {file} -|:edit| :e[dit][!] reload the current file -|:enew| :ene[w][!] edit a new, unnamed buffer +|:edit| :e[dit][!] reload the current file +|:enew| :ene[w][!] edit a new, unnamed buffer |:find| :fin[d][!] {file} find {file} in 'path' and edit it -|CTRL-^| N CTRL-^ edit alternate file N (equivalent to ":e #N") -|gf| gf or ]f edit the file whose name is under the cursor -|:pwd| :pwd print the current directory name -|:cd| :cd [path] change the current directory to [path] -|:cd-| :cd - back to previous current directory -|:file| :f[ile] print the current file name and the cursor +|CTRL-^| N CTRL-^ edit alternate file N (equivalent to ":e #N") +|gf| gf or ]f edit the file whose name is under the cursor +|:pwd| :pwd print the current directory name +|:cd| :cd [path] change the current directory to [path] +|:cd-| :cd - back to previous current directory +|:file| :f[ile] print the current file name and the cursor position -|:file| :f[ile] {name} set the current file name to {name} +|:file| :f[ile] {name} set the current file name to {name} |:files| :files show alternate file names ------------------------------------------------------------------------------ *Q_fl* Using the argument list |argument-list| @@ -1198,12 +1198,12 @@ Context-sensitive completion on the command-line: in current window in new window ~ |:argument| :argu[ment] N :sar[gument] N edit file N -|:next| :n[ext] :sn[ext] edit next file +|:next| :n[ext] :sn[ext] edit next file |:next_f| :n[ext] {arglist} :sn[ext] {arglist} define new arg list and edit first file -|:Next| :N[ext] :sN[ext] edit previous 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 +|:last| :la[st] :sla[st] edit last file ------------------------------------------------------------------------------ *Q_wq* Writing and quitting diff --git a/en/usr_08.txt b/en/usr_08.txt index 9a9280203..a9194ab71 100644 --- a/en/usr_08.txt +++ b/en/usr_08.txt @@ -17,7 +17,7 @@ side by side. All this is possible with split windows. |08.6| Commands for all windows |08.7| Viewing differences with vimdiff |08.8| Various -|08.9| Tab pages +|08.9| Tab pages Next chapter: |usr_09.txt| Using the GUI Previous chapter: |usr_07.txt| Editing more than one file diff --git a/en/usr_28.txt b/en/usr_28.txt index 8a02838d5..ea654166f 100644 --- a/en/usr_28.txt +++ b/en/usr_28.txt @@ -18,7 +18,7 @@ This chapter explains the different ways this can be done. |28.7| Folding by syntax |28.8| Folding by expression |28.9| Folding unchanged lines -|28.10| Which fold method to use? +|28.10| Which fold method to use? Next chapter: |usr_29.txt| Moving through programs Previous chapter: |usr_27.txt| Search commands and patterns From 11a4e183d940a8f926e7d3c4d856f374252b538b Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 3 Mar 2013 10:33:25 +0900 Subject: [PATCH 417/783] fix mistranslation (Issue #69) --- tutor/tutor.ja | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutor/tutor.ja b/tutor/tutor.ja index 4b7d2a08a..853c17377 100644 --- a/tutor/tutor.ja +++ b/tutor/tutor.ja @@ -259,7 +259,7 @@ NOTE: 冒険したい人は、ノーマルモードにてコマンドなしに 1. 以下の ---> と示された行の先頭にカーソルを移動します。 - 2. 2dw をタイプして単語2つ分削除します。 + 2. 2w をタイプして単語2つ分前に移動します。 3. 3e をタイプして3つ目の単語の終端に移動します。 From ca0d7782ef79b9f6004ff3b9e53b0f562142d60c Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 3 Mar 2013 11:19:39 +0900 Subject: [PATCH 418/783] update to the latest tutor (Issue #69) --- tutor/tutor.ja | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/tutor/tutor.ja b/tutor/tutor.ja index 853c17377..66a818ad9 100644 --- a/tutor/tutor.ja +++ b/tutor/tutor.ja @@ -38,10 +38,10 @@ 3. 下へのキーを使って、レッスン1.2 に移動しましょう。 -Note: 何をタイプしているか判らなくなったら、<ESC>を押してノーマルモードにし +NOTE: 何をタイプしているか判らなくなったら、<ESC>を押してノーマルモードにし ます。それから入力しようとしていたコマンドを再入力しましょう。 -Note: カーソルキーでも移動できます。しかし hjkl に一度慣れてしまえば、はるか +NOTE: カーソルキーでも移動できます。しかし hjkl に一度慣れてしまえば、はるか に速く移動することができるでしょう。いやマジで! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -109,7 +109,7 @@ NOTE: 全てのレッスンを通じて、覚えようとするのではなく ---> この には 足りない テキスト ある。 ---> この 行 には 幾つか 足りない テキスト が ある。 - 5. 挿入の方法がわかったら下のレッスン1の要約を見ましょう。 + 5. 挿入の方法がわかったらレッスン 1.5 へ進みましょう。 @@ -145,7 +145,8 @@ NOTE: 全てのレッスンを通じて、覚えようとするのではなく !! NOTE: 以下のステップを実行する前に、まず全体を読んでください!! 1. レッスン 1.2 でやったように :q! をタイプして、このチュートリアルを終了 - します。 + します。あるいは、別の端末がある場合はそこで以下の内容を行ってもかまい + ません。 2. シェルプロンプトでこのコマンドをタイプします: vim tutor <ENTER> 'vim'が Vim エディタを起動するコマンド、'tutor' は編集したいファイルの @@ -155,7 +156,8 @@ NOTE: 全てのレッスンを通じて、覚えようとするのではなく 4. 変更をファイルに保存します: :wq <ENTER> - 5. vimtutor を再度起動し、以下の要約へ進みましょう。 + 5. ステップ 1 で vimtutuor を終了した場合は vimtutor を再度起動し、以下の + 要約へ進みましょう。 6. 以上のステップを読んで理解した上でこれを実行しましょう。 @@ -286,7 +288,7 @@ NOTE: 冒険したい人は、ノーマルモードにてコマンドなしに 1. ---> と示された行の行頭部分にカーソルを移動しましょう。 - 2. UPPER CASE の単語2つを 2dw とタイプして削除します。 + 2. UPPER CASE の単語2つを d2w とタイプして削除します。 3. UPPER CASE という連続した単語を、1つのコマンドと異なるカウントを指定し、 ステップ 1 と 2 を繰り返します。 @@ -406,7 +408,7 @@ NOTE: オペレータ d とモーションの間にカウントを使った場 ---> この合を人力した時ね、その人は幾つか問違ったキーを押しもした! ---> この行を入力した時に、その人は幾つか間違ったキーを押しました! - 5. さぁ、レッスン 3.2 へ進みましょう。 + 5. さぁ、レッスン 3.3 へ進みましょう。 NOTE: 実際に試しましょう。決して覚えるだけにはしないこと。 @@ -428,8 +430,8 @@ NOTE: 実際に試しましょう。決して覚えるだけにはしないこ 5. 最初の行が次の行の様になるまでステップ 3 と 4 を繰り返します。 ----> This lubw has a few wptfd that mrrf changing usf the change command. ----> This line has a few words that need changing using the change command. +---> This lubw has a few wptfd that mrrf changing usf the change operator. +---> This line has a few words that need changing using the change operator. cw は単語を変更するだけでなく、挿入も行えることに注意しましょう。 @@ -494,7 +496,7 @@ NOTE: タイプ中の間違いはバックスペースキーを使って直す に行番号を覚えておきましょう。 NOTE: 画面の右下隅にカーソルの位置が表示されているかもしれません。これは - 'ruler' オプション(レッスン6で説明)を設定することで表示されます。 + 'ruler' オプション(:help 'ruler' を参照)を設定することで表示されます。 2. 最下行に移動するために G をタイプしましょう。 ファイルの先頭に移動するには gg とタイプしましょう。 @@ -523,8 +525,8 @@ NOTE: 画面の右下隅にカーソルの位置が表示されているかも 5. 元の場所に戻るには CTRL-O (Ctrl を押し続けながら o 文字タイプ)をタイプし ます。さらに戻るにはこれを繰り返します。CTRL-I は前方向です。 -Note: "errroor" は error とスペルが違います; errroor はいわゆる error です。 -Note: 検索がファイルの終わりに達すると、オプション 'wrapscan' が設定されている +---> "errroor" は error とスペルが違います; errroor はいわゆる error です。 +NOTE: 検索がファイルの終わりに達すると、オプション 'wrapscan' が設定されている 場合は、ファイルの先頭から検索を続行します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -612,10 +614,10 @@ NOTE: この機能は括弧が一致していないプログラムをデバッ シェルプロンプトのようにディレクトリの一覧が表示されるはずです。 もしくは ls が動かないならば :!dir を使用しましょう。 -Note: この方法によってあらゆるコマンドが実行することができます。もちろん引数 +NOTE: この方法によってあらゆるコマンドが実行することができます。もちろん引数 も与えられます。 -Note: 全ての : コマンドは <ENTER> を押して終了しなければなりません。 +NOTE: 全ての : コマンドは <ENTER> を押して終了しなければなりません。 以降ではこのことに言及しません。 @@ -635,7 +637,7 @@ Note: 全ての : コマンドは <ENTER> を押して終了しなければな 4. これによりファイル全体が TEST という名前で保存されます。 もう一度 :!dir もしくは :!ls とタイプして確認してみましょう。 -Note: ここで Vim を終了し、ファイル名 TEST と共に起動すると、保存した時の +NOTE: ここで Vim を終了し、ファイル名 TEST と共に起動すると、保存した時の チュートリアルの複製ができ上がるはずです。 5. さらに、次のようにタイプしてファイルを消しましょう(MS-DOS): :!del TEST @@ -656,7 +658,7 @@ Note: ここで Vim を終了し、ファイル名 TEST と共に起動すると 3. 文字 : を押すと、画面の最下部に :'<,'> が現れます。 4. w TEST (TEST は存在しないファイル名)をタイプします。 - Enter を押す前に :'<,'>w TEST となっていることを確認して下さい。 + <ENTER> を押す前に :'<,'>w TEST となっていることを確認して下さい。 5. Vim は TEST というファイルに選択された行を書き込むでしょう。 !dir もしくは !ls でそれを確認します。 @@ -755,7 +757,7 @@ NOTE: 外部コマンドの出力を読み込むことも出来ます。例え ---> This li will allow you to pract appendi text to a line. ---> This line will allow you to practice appending text to a line. -Note: a, i と A は同じ挿入モードへ移りますが、文字が挿入される位置だけが異なり +NOTE: a, i と A は同じ挿入モードへ移りますが、文字が挿入される位置だけが異なり ます。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -803,7 +805,7 @@ NOTE: 置換モードは挿入モードに似ていますが、全てのタイ ---> a) this is the first item. b) - Note: 単語を1つ yank するのに y をオペレータとして yw とすることも出来ます。 + NOTE: 単語を1つ yank するのに y をオペレータとして yw とすることも出来ます。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 6.5: オプションの設定 @@ -824,8 +826,8 @@ NOTE: 置換モードは挿入モードに似ていますが、全てのタイ 6. 大文字小文字の区別を無効にするには次の様に入力します: :set noic -Note: マッチの強調表示をやめるには次の様に入力します: :nohlsearch -Note: 1つの検索コマンドだけ大文字小文字の区別をやめたいならば、フレーズに \c +NOTE: マッチの強調表示をやめるには次の様に入力します: :nohlsearch +NOTE: 1つの検索コマンドだけ大文字小文字の区別をやめたいならば、フレーズに \c を使用します: /ignore\c <ENTER> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ レッスン 6 要約 From acea7f2dc32dc03d03f3ee1fb8fb072bef968f70 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sat, 16 Mar 2013 23:47:25 +0900 Subject: [PATCH 419/783] fix typo and line wrappings --- vim_faq/vim_faq.jax | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index a60af1aa5..83002b5ad 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -901,10 +901,10 @@ HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロー そして上のコマンドで得られたテキストをbugs@vim.orgメールアドレスに送ってくださ い。 -Vim 開発のメーリング・リスト(上を見てください)は通常のバグについて議論するの -にふさわしい場所です。あなたの見つけたバグがシンタックス・ハイライティングやそ -の他の「付加的な機能」(つまり、直接 vim にプログラムされていないもの)に関す -るものであれば、その機能のメンテナに報告してみてください。 +Vim 開発のメーリング・リスト(上を見てください)は通常のバグについて議論するのに +ふさわしい場所です。あなたの見つけたバグがシンタックス・ハイライティングやその +他の「付加的な機能」(つまり、直接 vim にプログラムされていないもの)に関するも +のであれば、その機能のメンテナに報告してみてください。 さらなる情報については以下を参照してください。 > @@ -1275,7 +1275,7 @@ gfコマンドでカーソル下のファイル名のファイルを開くこと *faq-5.8* 5.8. 現在のファイルを再読み込みするには? -"ファイル名を指定せずに:edit"コマンドを行えば、現在のファイルを再読み込みする +ファイル名を指定せずに":edit"コマンドを行えば、現在のファイルを再読み込みする ことができます。ファイルに変更をしてある場合は、":edit!"とすれば強制的に現在の ファイルを再読み込みすることができます(変更は失われます)。 From 2b19fcdeca18dedf9de6b079316d2aca02639297 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 17 Mar 2013 00:22:06 +0900 Subject: [PATCH 420/783] update some of en/*.txt to 7.3.863 --- en/editing.txt | 4 ++-- en/index.txt | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/en/editing.txt b/en/editing.txt index 9f1723a1a..c23f26367 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.3. Last change: 2012 Aug 08 +*editing.txt* For Vim version 7.3. Last change: 2013 Feb 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -424,7 +424,7 @@ external command, by using the syntax `={expr}` e.g.: > :e `=tempname()` The expression can contain just about anything, thus this can also be used to avoid the special meaning of '"', '|', '%' and '#'. However, 'wildignore' -does apply like to other wildcars. +does apply like to other wildcards. If the expression returns a string then names are to be separated with line breaks. When the result is a |List| then each item is used as a name. Line breaks also separate names. diff --git a/en/index.txt b/en/index.txt index 57ca2fd79..7ce87cf03 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.3. Last change: 2012 Jul 25 +*index.txt* For Vim version 7.3. Last change: 2013 Feb 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1134,7 +1134,7 @@ tag command action ~ |:cgetbuffer| :cgetb[uffer] get errors from buffer |:cgetexpr| :cgete[xpr] get errors from expr |:cgetfile| :cg[etfile] read file with error messages -|:changes| :cha[nges] print the change list +|:changes| :changes print the change list |:chdir| :chd[ir] change directory |:checkpath| :che[ckpath] list included files |:checktime| :checkt[ime] check timestamp of loaded buffers @@ -1383,7 +1383,7 @@ tag command action ~ |:promptrepl| :promptr[epl] open GUI dialog for search/replace |:perldo| :perld[o] execute Perl command for each line |:pop| :po[p] jump to older entry in tag stack -|:popup| :pop[up] popup a menu by name +|:popup| :popu[p] popup a menu by name |:ppop| :pp[op] ":pop" in preview window |:preserve| :pre[serve] write all text to swap file |:previous| :prev[ious] go to previous file in argument list @@ -1469,7 +1469,7 @@ tag command action ~ |:slast| :sla[st] split window and go to last file in the argument list |:smagic| :sm[agic] :substitute with 'magic' -|:smap| :sma[p] like ":map" but for Select mode +|:smap| :smap like ":map" but for Select mode |:smapclear| :smapc[lear] remove all mappings for Select mode |:smenu| :sme[nu] add menu for Select mode |:snext| :sn[ext] split window and go to next file in the From 93a92ff05020f1e3060572ffc0cb6bef6245c909 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 20 Mar 2013 08:52:28 +0900 Subject: [PATCH 421/783] update some of en/*.txt to 7.3.874 --- en/change.txt | 2 +- en/cmdline.txt | 4 ++-- en/motion.txt | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/en/change.txt b/en/change.txt index d5f19a634..18cc812bd 100644 --- a/en/change.txt +++ b/en/change.txt @@ -600,7 +600,7 @@ For other systems the tmpnam() library function is used. *g&* g& Synonym for `:%s//~/&` (repeat last substitute with last search pattern on all lines with the same flags). - For exaple, when you first do a substitution with + For example, when you first do a substitution with `:s/pattern/repl/flags` and then `/search` for something else, `g&` will do `:%s/search/repl/flags`. Mnemonic: global substitute. {not in Vi} diff --git a/en/cmdline.txt b/en/cmdline.txt index c3627d409..4759702e4 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.3. Last change: 2013 Jan 17 +*cmdline.txt* For Vim version 7.3. Last change: 2013 Mar 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -964,7 +964,7 @@ for the file "$home" in the root directory. A few examples: \\$home file "\\", followed by expanded $home ============================================================================== -6. Command-line window *cmdline-window* *cmdwin* +7. Command-line window *cmdline-window* *cmdwin* *command-line-window* In the command-line window the command line can be edited just like editing text in any window. It is a special kind of window, because you cannot leave diff --git a/en/motion.txt b/en/motion.txt index 522b71794..265d53072 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.3. Last change: 2012 Aug 04 +*motion.txt* For Vim version 7.3. Last change: 2013 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -104,13 +104,14 @@ strokes and has limited redo functionality. See the chapter on Visual mode |Visual-mode|. You can use a ":" command for a motion. For example "d:call FindEnd()". -But this can't be redone with "." if the command is more than one line. +But this can't be repeated with "." if the command is more than one line. This can be repeated: > d:call search("f")<CR> This cannot be repeated: > d:if 1<CR> call search("f")<CR> endif<CR> +Note that when using ":" any motion becomes characterwise exclusive. FORCING A MOTION TO BE LINEWISE, CHARACTERWISE OR BLOCKWISE From 0efdc529ad2d328453d7b61f0aa36655cc8f9aee Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 20 Mar 2013 10:33:49 +0900 Subject: [PATCH 422/783] update some of en/*.txt to 7.3.874 --- en/eval.txt | 58 ++++++++++++++++++++++++++++++++++++++------------- en/mbyte.txt | 2 +- en/usr_41.txt | 11 ++++++---- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/en/eval.txt b/en/eval.txt index 9819d9bc9..bc729d102 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2013 Jan 23 +*eval.txt* For Vim version 7.3. Last change: 2013 Mar 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -503,7 +503,7 @@ This removes all entries from "dict" with a value not matching 'x'. Dictionary function ~ - *Dictionary-function* *self* *E725* + *Dictionary-function* *self* *E725* *E862* When a function is defined with the "dict" attribute it can be used in a special way with a dictionary. Example: > :function Mylen() dict @@ -1777,7 +1777,8 @@ get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def} get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def} getbufline( {expr}, {lnum} [, {end}]) List lines {lnum} to {end} of buffer {expr} -getbufvar( {expr}, {varname}) any variable {varname} in buffer {expr} +getbufvar( {expr}, {varname} [, {def}]) + any variable {varname} in buffer {expr} getchar( [expr]) Number get one character from the user getcharmod( ) Number modifiers for the last typed character getcmdline() String return the current command-line @@ -1798,12 +1799,14 @@ getpos( {expr}) List position of cursor, mark, etc. getqflist() List list of quickfix items getreg( [{regname} [, 1]]) String contents of register getregtype( [{regname}]) String type of register -gettabvar( {nr}, {varname}) any variable {varname} in tab {nr} -gettabwinvar( {tabnr}, {winnr}, {name}) +gettabvar( {nr}, {varname} [, {def}]) + any variable {varname} in tab {nr} or {def} +gettabwinvar( {tabnr}, {winnr}, {name} [, {def}]) any {name} in {winnr} in tab page {tabnr} getwinposx() Number X coord in pixels of GUI Vim window getwinposy() Number Y coord in pixels of GUI Vim window -getwinvar( {nr}, {varname}) any variable {varname} in window {nr} +getwinvar( {nr}, {varname} [, {def}]) + any variable {varname} in window {nr} glob( {expr} [, {nosuf} [, {list}]]) any expand file wildcards in {expr} globpath( {path}, {expr} [, {flag}]) @@ -1931,6 +1934,7 @@ settabvar( {nr}, {varname}, {val}) set {varname} in tab page {nr} to {val} settabwinvar( {tabnr}, {winnr}, {varname}, {val}) set {varname} in window {winnr} in tab page {tabnr} to {val} setwinvar( {nr}, {varname}, {val}) set {varname} in window {nr} to {val} +sha256( {string}) String SHA256 checksum of {string} shellescape( {string} [, {special}]) String escape {string} for use as shell command argument @@ -1992,6 +1996,7 @@ undotree() List undo file tree values( {dict}) List values in {dict} virtcol( {expr}) Number screen column of cursor or mark visualmode( [expr]) String last visual mode used +wildmenumode() Number whether 'wildmenu' mode is active winbufnr( {nr}) Number buffer number of window {nr} wincol() Number window column of the cursor winheight( {nr}) Number height of window {nr} @@ -2578,6 +2583,8 @@ delete({fname}) *delete()* which is 0 if the file was deleted successfully, and non-zero when the deletion failed. Use |remove()| to delete an item from a |List|. + To delete a line from the buffer use |:delete|. Use |:exe| + when the line number is in a variable. *did_filetype()* did_filetype() Returns non-zero when autocommands are being executed and the @@ -3141,7 +3148,7 @@ getbufline({expr}, {lnum} [, {end}]) Example: > :let lines = getbufline(bufnr("myfile"), 1, "$") -getbufvar({expr}, {varname}) *getbufvar()* +getbufvar({expr}, {varname} [, {def}]) *getbufvar()* The result is the value of option or local buffer variable {varname} in buffer {expr}. Note that the name without "b:" must be used. @@ -3151,8 +3158,8 @@ getbufvar({expr}, {varname}) *getbufvar()* doesn't work for a global variable, window-local variable or window-local option. For the use of {expr}, see |bufname()| above. - When the buffer or variable doesn't exist an empty string is - returned, there is no error message. + When the buffer or variable doesn't exist {def} or an empty + string is returned, there is no error message. Examples: > :let bufmodified = getbufvar(1, "&mod") :echo "todo myvar = " . getbufvar("todo", "myvar") @@ -3429,26 +3436,30 @@ getregtype([{regname}]) *getregtype()* <CTRL-V> is one character with value 0x16. If {regname} is not specified, |v:register| is used. -gettabvar({tabnr}, {varname}) *gettabvar()* +gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()* Get the value of a tab-local variable {varname} in tab page {tabnr}. |t:var| Tabs are numbered starting with one. Note that the name without "t:" must be used. + When the tab or variable doesn't exist {def} or an empty + string is returned, there is no error message. -gettabwinvar({tabnr}, {winnr}, {varname}) *gettabwinvar()* +gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()* Get the value of window-local variable {varname} in window {winnr} in tab page {tabnr}. When {varname} starts with "&" get the value of a window-local option. + When {varname} is empty a dictionary with all window-local + variables is returned. + Note that {varname} must be the name without "w:". Tabs are numbered starting with one. For the current tabpage use |getwinvar()|. When {winnr} is zero the current window is used. This also works for a global option, buffer-local option and window-local option, but it doesn't work for a global variable or buffer-local variable. - When {varname} is empty a dictionary with all window-local - variables is returned. - Note that {varname} must be the name without "w:". + When the tab, window or variable doesn't exist {def} or an + empty string is returned, there is no error message. Examples: > :let list_is_on = gettabwinvar(1, 2, '&list') :echo "myvar = " . gettabwinvar(3, 1, 'myvar') @@ -3463,7 +3474,7 @@ getwinposy() The result is a Number, which is the Y coordinate in pixels of the top of the GUI Vim window. The result will be -1 if the information is not available. -getwinvar({winnr}, {varname}) *getwinvar()* +getwinvar({winnr}, {varname} [, {def}]) *getwinvar()* Like |gettabwinvar()| for the current tabpage. Examples: > :let list_is_on = getwinvar(2, '&list') @@ -5336,6 +5347,11 @@ setwinvar({nr}, {varname}, {val}) *setwinvar()* :call setwinvar(1, "&list", 0) :call setwinvar(2, "myvar", "foobar") +sha256({string}) *sha256()* + Returns a String with 64 hex charactes, which is the SHA256 + checksum of {string}. + {only available when compiled with the |+cryptv| feature} + shellescape({string} [, {special}]) *shellescape()* Escape {string} for use as a shell command argument. On MS-Windows and MS-DOS, when 'shellslash' is not set, it @@ -6156,6 +6172,18 @@ visualmode([expr]) *visualmode()* Dictionary or Float is not a Number or String, thus does not cause the mode to be cleared. +wildmenumode() *wildmenumode()* + Returns non-zero when the wildmenu is active and zero + otherwise. See 'wildmenu' and 'wildmode'. + This can be used in mappings to handle the 'wildcharm' option + gracefully. (Makes only sense with |mapmode-c| mappings). + + For example to make <c-j> work like <down> in wildmode, use: > + :cnoremap <expr> <C-j> wildmenumode() ? "\<Down>\<Tab>" : "\<c-j>" +< + (Note, this needs the 'wildcharm' option set appropriately). + + *winbufnr()* winbufnr({nr}) The result is a Number, which is the number of the buffer associated with window {nr}. When {nr} is zero, the number of diff --git a/en/mbyte.txt b/en/mbyte.txt index c2d95104a..61647935f 100644 --- a/en/mbyte.txt +++ b/en/mbyte.txt @@ -1067,7 +1067,7 @@ The actual mappings are in the lines below "loadkeymap". In the example "a" is mapped to "A" and "b" to "B". Thus the first item is mapped to the second item. This is done for each line, until the end of the file. These items are exactly the same as what can be used in a |:lnoremap| command, -using "<buffer>" to make the mappings local to the buffer.. +using "<buffer>" to make the mappings local to the buffer. You can check the result with this command: > :lmap The two items must be separated by white space. You cannot include white diff --git a/en/usr_41.txt b/en/usr_41.txt index edb9b82c5..635868334 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.3. Last change: 2012 Oct 13 +*usr_41.txt* For Vim version 7.3. Last change: 2013 Feb 20 VIM USER MANUAL - by Bram Moolenaar @@ -863,12 +863,15 @@ Window size and position: *window-size-functions* winsaveview() get view of current window winrestview() restore saved view of current window -Various: *various-functions* - mode() get current editing mode - visualmode() last visual mode used +Mappings: *mapping-functions* hasmapto() check if a mapping exists mapcheck() check if a matching mapping exists maparg() get rhs of a mapping + wildmenumode() check if the wildmode is active + +Various: *various-functions* + mode() get current editing mode + visualmode() last visual mode used exists() check if a variable, function, etc. exists has() check if a feature is supported in Vim changenr() return number of most recent change From a1b4aacc3ff22df5f2e2c7ca49be3b05d22da600 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Fri, 22 Mar 2013 14:22:52 +0900 Subject: [PATCH 423/783] update en/autocmd.txt to 7.3.874 --- en/autocmd.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index 2fae1e2fb..a0d3b637d 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.3. Last change: 2012 Sep 05 +*autocmd.txt* For Vim version 7.3. Last change: 2013 Mar 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -730,11 +730,11 @@ QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix moving to the first error. See |QuickFixCmdPost-example|. *QuitPre* -QuitPre When using `:quit`, before deciding whether it - closes the current window or quits Vim. Can - be used to close any non-essential window if - the current window is the last ordinary - window. +QuitPre When using `:quit`, `:wq` or `:qall`, before + deciding whether it closes the current window + or quits Vim. Can be used to close any + non-essential window if the current window is + the last ordinary window. *RemoteReply* RemoteReply When a reply from a Vim that functions as server was received |server2client()|. The From a608883ae7f3bb3dcd196e8ed03325f348e4683e Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Mon, 3 Jun 2013 01:22:10 +0900 Subject: [PATCH 424/783] update to 7.3 snapshot --- en/autocmd.txt | 31 ++- en/change.txt | 7 +- en/develop.txt | 3 +- en/eval.txt | 24 +- en/filetype.txt | 4 +- en/ft_sql.txt | 10 +- en/hebrew.txt | 11 +- en/if_pyth.txt | 308 +++++++++++++++++++++---- en/indent.txt | 129 ++++++++++- en/index.txt | 6 +- en/insert.txt | 6 +- en/map.txt | 4 +- en/mbyte.txt | 8 +- en/message.txt | 8 +- en/options.txt | 59 +++-- en/pattern.txt | 77 ++++++- en/pi_getscript.txt | 19 +- en/pi_netrw.txt | 530 +++++++++++++++++++++++++++++--------------- en/pi_paren.txt | 7 +- en/pi_tar.txt | 19 +- en/pi_zip.txt | 11 +- en/quickfix.txt | 4 +- en/quickref.txt | 4 +- en/starting.txt | 6 +- en/syntax.txt | 100 +++++++-- en/term.txt | 14 +- en/various.txt | 4 +- 27 files changed, 1062 insertions(+), 351 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index a0d3b637d..b9d23b359 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.3. Last change: 2013 Mar 13 +*autocmd.txt* For Vim version 7.3. Last change: 2013 May 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -519,8 +519,9 @@ CursorMoved After the cursor was moved in Normal mode. Not triggered when there is typeahead or when an operator is pending. For an example see |match-parens|. - Careful: Don't do anything that the user does - not expect or that is slow. + Careful: This is triggered very often, don't + do anything that the user does not expect or + that is slow. *CursorMovedI* CursorMovedI After the cursor was moved in Insert mode. Not triggered when the popup menu is visible. @@ -690,8 +691,11 @@ InsertCharPre When a character is typed in Insert mode, InsertEnter Just before starting Insert mode. Also for Replace mode and Virtual Replace mode. The |v:insertmode| variable indicates the mode. - Be careful not to move the cursor or do - anything else that the user does not expect. + Be careful not to do anything else that the + user does not expect. + The cursor is restored afterwards. If you do + not want that set |v:char| to a non-empty + string. *InsertLeave* InsertLeave When leaving Insert mode. Also when using CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|. @@ -831,12 +835,27 @@ TermResponse After the response to |t_RV| is received from triggered halfway executing another event, especially if file I/O, a shell command or anything else that takes time is involved. + *TextChanged* +TextChanged After a change was made to the text in the + current buffer in Normal mode. That is when + |b:changedtick| has changed. + Not triggered when there is typeahead or when + an operator is pending. + Careful: This is triggered very often, don't + do anything that the user does not expect or + that is slow. + *TextChangedI* +TextChangedI After a change was made to the text in the + current buffer in Insert mode. + Not triggered when the popup menu is visible. + Otherwise the same as TextChanged. *User* User Never executed automatically. To be used for autocommands that are only executed with ":doautocmd". *UserGettingBored* -UserGettingBored When the user hits CTRL-C. Just kidding! :-) +UserGettingBored When the user presses the same key 42 times. + Just kidding! :-) *VimEnter* VimEnter After doing all the startup stuff, including loading .vimrc files, executing the "-c cmd" diff --git a/en/change.txt b/en/change.txt index 18cc812bd..bc2c5248f 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.3. Last change: 2012 Nov 02 +*change.txt* For Vim version 7.3. Last change: 2013 Mar 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -784,6 +784,11 @@ Examples: > :s/abcde/abc^Mde/ modifies "abcde" to "abc", "de" (two lines) :s/$/\^M/ modifies "abcde" to "abcde^M" :s/\w\+/\u\0/g modifies "bla bla" to "Bla Bla" + :s/\w\+/\L\u/g modifies "BLA bla" to "Bla Bla" + +Note: "\L\u" can be used to capitalize the first letter of a word. This is +not compatible with Vi and older versions of Vim, where the "\u" would cancel +out the "\L". Same for "\U\l". Note: In previous versions CTRL-V was handled in a special way. Since this is not Vi compatible, this was removed. Use a backslash instead. diff --git a/en/develop.txt b/en/develop.txt index 0a4c03af5..51d653b2a 100644 --- a/en/develop.txt +++ b/en/develop.txt @@ -1,4 +1,4 @@ -*develop.txt* For Vim version 7.3. Last change: 2012 Jan 10 +*develop.txt* For Vim version 7.3. Last change: 2013 Apr 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -20,6 +20,7 @@ code. Vim is open source software. Everybody is encouraged to contribute to help improving Vim. For sending patches a context diff "diff -c" is preferred. Also see http://www.vim.org/tips/tip.php?tip_id=618. +Also see http://vim.wikia.com/wiki/How_to_make_and_submit_a_patch. ============================================================================== 1. Design goals *design-goals* diff --git a/en/eval.txt b/en/eval.txt index bc729d102..f7cc93b72 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2013 Mar 10 +*eval.txt* For Vim version 7.3. Last change: 2013 May 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1150,14 +1150,14 @@ delete all script-local variables: > : unlet s:[k] :endfor < - *buffer-variable* *b:var* + *buffer-variable* *b:var* *b:* A variable name that is preceded with "b:" is local to the current buffer. Thus you can have several "b:foo" variables, one for each buffer. This kind of variable is deleted when the buffer is wiped out or deleted with |:bdelete|. One local buffer variable is predefined: - *b:changedtick-variable* *changetick* + *b:changedtick* *changetick* b:changedtick The total number of changes to the current buffer. It is incremented for each change. An undo command is also a change in this case. This can be used to perform an action only when @@ -1167,21 +1167,21 @@ b:changedtick The total number of changes to the current buffer. It is : call My_Update() :endif < - *window-variable* *w:var* + *window-variable* *w:var* *w:* A variable name that is preceded with "w:" is local to the current window. It is deleted when the window is closed. - *tabpage-variable* *t:var* + *tabpage-variable* *t:var* *t:* A variable name that is preceded with "t:" is local to the current tab page, It is deleted when the tab page is closed. {not available when compiled without the |+windows| feature} - *global-variable* *g:var* + *global-variable* *g:var* *g:* Inside functions global variables are accessed with "g:". Omitting this will access a variable local to a function. But "g:" can also be used in any other place if you like. - *local-variable* *l:var* + *local-variable* *l:var* *l:* Inside functions local variables are accessed without prepending anything. But you can also prepend "l:" if you like. However, without prepending "l:" you may run into reserved variable names. For example "count". By itself it @@ -1264,7 +1264,7 @@ Note that this means that filetype plugins don't get a different set of script variables for each buffer. Use local buffer variables instead |b:var|. -Predefined Vim variables: *vim-variable* *v:var* +Predefined Vim variables: *vim-variable* *v:var* *v:* *v:beval_col* *beval_col-variable* v:beval_col The number of the column, over which the mouse pointer is. @@ -1297,7 +1297,7 @@ v:beval_winnr The number of the window, over which the mouse pointer is. Only *v:char* *char-variable* v:char Argument for evaluating 'formatexpr' and used for the typed character when using <expr> in an abbreviation |:map-<expr>|. - It is also used by the |InsertCharPre| event. + It is also used by the |InsertCharPre| and |InsertEnter| events. *v:charconvert_from* *charconvert_from-variable* v:charconvert_from @@ -4639,7 +4639,7 @@ pumvisible() *pumvisible()* This can be used to avoid some things that would remove the popup menu. - *E860* *E861* + *E860* py3eval({expr}) *py3eval()* Evaluate Python expression {expr} and return its result converted to Vim data structures. @@ -5320,8 +5320,6 @@ settabvar({tabnr}, {varname}, {val}) *settabvar()* |t:var| Note that the variable name without "t:" must be used. Tabs are numbered starting with one. - Vim briefly goes to the tab page {tabnr}, this may trigger - TabLeave and TabEnter autocommands. This function is not available in the |sandbox|. settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()* @@ -5334,8 +5332,6 @@ settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()* doesn't work for a global or local buffer variable. For a local buffer option the global value is unchanged. Note that the variable name without "w:" must be used. - Vim briefly goes to the tab page {tabnr}, this may trigger - TabLeave and TabEnter autocommands. Examples: > :call settabwinvar(1, 1, "&list", 0) :call settabwinvar(3, 2, "myvar", "foobar") diff --git a/en/filetype.txt b/en/filetype.txt index 67a5c147f..6367df6a4 100644 --- a/en/filetype.txt +++ b/en/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.3. Last change: 2011 Jun 19 +*filetype.txt* For Vim version 7.3. Last change: 2013 May 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -603,7 +603,7 @@ Since the text for this plugin is rather long it has been put in a separate file: |ft_sql.txt|. -TEX *ft-tex-plugin* +TEX *ft-tex-plugin* *g:tex_flavor* If the first line of a *.tex file has the form > %&<format> diff --git a/en/ft_sql.txt b/en/ft_sql.txt index 1360a0379..9aa711b1e 100644 --- a/en/ft_sql.txt +++ b/en/ft_sql.txt @@ -1,4 +1,4 @@ -*ft_sql.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*ft_sql.txt* For Vim version 7.3. Last change: 2013 May 15 by David Fishburn @@ -349,6 +349,7 @@ may not work properly on all platforms: > The static maps (which are based on the syntax highlight groups) follow this format: > imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O> + imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword\w*')<CR><C-X><C-O> This command breaks down as: > imap - Create an insert map @@ -369,6 +370,9 @@ This command breaks down as: > command while editing a SQL file. 'sqlKeyword' - Display the items for the sqlKeyword highlight group + 'sqlKeyword\w*' - A second option available with Vim 7.4 which + uses a regular expression to determine which + syntax groups to use )<CR> - Execute the :let command <C-X><C-O> - Trigger the standard omni completion key stroke. Passing in 'sqlKeyword' instructs the SQL @@ -435,7 +439,7 @@ the space bar): of columns, you can press <Left>, this will replace the column list with the list of tables. - This allows you to quickly drill down into a - table to view it's columns and back again. + table to view its columns and back again. - <Right> and <Left> can be also be chosen via your |.vimrc| > let g:ftplugin_sql_omni_key_right = '<Right>' @@ -645,7 +649,7 @@ your |vimrc|: > - When completing tables, procedure or views and using dbext.vim 3.00 or higher the list of objects will also include the owner name. When completing these objects and omni_sql_include_owner is enabled - the owner name will be be replaced. > + the owner name will be replaced. > omni_sql_precache_syntax_groups < - Default: diff --git a/en/hebrew.txt b/en/hebrew.txt index 966befef0..8f264e67e 100644 --- a/en/hebrew.txt +++ b/en/hebrew.txt @@ -1,4 +1,4 @@ -*hebrew.txt* For Vim version 7.1. Last change: 2003 May 11 +*hebrew.txt* For Vim version 7.3. Last change: 2007 Jun 14 VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem) @@ -7,11 +7,8 @@ Hebrew Language support (options & mapping) for Vim *hebrew* The supporting 'rightleft' functionality was originally created by Avner -Lottem: - E-mail: alottem@iil.intel.com - Phone: +972-4-8307322 - -Ron Aaron <ron@ronware.org> is currently helping support these features. +Lottem. <alottem at gmail dot com> Ron Aaron <ron at ronware dot org> is +currently helping support these features. {Vi does not have any of these commands} @@ -96,7 +93,7 @@ Details This is also the keymap when 'keymap=hebrew' is set. The advantage of 'keymap' is that it works properly when using UTF8, e.g. it inserts the correct characters; 'hkmap' does not. The 'keymap' keyboard can also - insert niqud and te`amim. To see what those mappings are,look at the + insert niqud and te`amim. To see what those mappings are, look at the keymap file 'hebrew.vim' etc. diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 575002319..fffc4c789 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.3. Last change: 2013 Feb 03 +*if_pyth.txt* For Vim version 7.3. Last change: 2013 May 25 VIM REFERENCE MANUAL by Paul Moore @@ -11,9 +11,11 @@ The Python Interface to Vim *python* *Python* 3. Buffer objects |python-buffer| 4. Range objects |python-range| 5. Window objects |python-window| -6. pyeval(), py3eval() Vim functions |python-pyeval| -7. Dynamic loading |python-dynamic| -8. Python 3 |python3| +6. Tab page objects |python-tabpage| +7. vim.bindeval objects |python-bindeval-objects| +8. pyeval(), py3eval() Vim functions |python-pyeval| +9. Dynamic loading |python-dynamic| +10. Python 3 |python3| {Vi does not have any of these commands} @@ -57,6 +59,22 @@ Example: > Note: Python is very sensitive to the indenting. Make sure the "class" line and "EOF" do not have any indent. + *:pydo* +:[range]pydo {body} Execute Python function "def _vim_pydo(line, linenr): + {body}" for each line in the [range], with the + function arguments being set to the text of each line + in turn, without a trailing <EOL>, and the current + line number. The function should return a string or + None. If a string is returned, it becomes the text of + the line in the current turn. The default for [range] + is the whole file: "1,$". + {not in Vi} + +Examples: +> + :pydo return "%s\t%d" % (line[::-1], len(line)) + :pydo if line: return "%4d: %s" % (linenr, line) +< *:pyfile* *:pyf* :[range]pyf[ile] {file} Execute the Python script in {file}. The whole @@ -154,42 +172,9 @@ vim.eval(str) *python-eval* 'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}] vim.bindeval(str) *python-bindeval* - Like |python-eval|, but - 1. if expression evaluates to |List| or |Dictionary| it is returned as - vimlist or vimdictionary python type that are connected to original - list or dictionary. Thus modifications to these objects imply - modifications of the original. - - Additionally, vimlist and vimdictionary type have read-write - `.locked` attribute that returns - Value Meaning ~ - zero Variable is not locked - vim.VAR_LOCKED Variable is locked, but can be unlocked - vim.VAR_FIXED Variable is locked and can't be unlocked - integer constants. If variable is not fixed, you can do - `var.locked=True` to lock it and `var.locked=False` to unlock. - There is no recursive locking like |:lockvar|! does. There is also - no way to lock a specific key or check whether it is locked (in any - case these locks are ignored by anything except |:let|: |extend()| - does not care, neither does python interface). - - Vimdictionary type also supports `.scope` attribute which is one of - Value Meaning ~ - zero Dictionary is not a scope one - vim.VAR_DEF_SCOPE Function-local or global scope dictionary - vim.VAR_SCOPE Other scope dictionary - - 2. if expression evaluates to a function reference, then it returns - callable vimfunction object. Use self keyword argument to assign - |self| object for dictionary functions. - - Note: this function has the same behavior as |lua-eval| (except that - lua does not support running vim functions), |python-eval| is - kept for backwards compatibility in order not to make scripts - relying on outputs of vim.eval() being a copy of original or - vim.eval("1") returning a string. - - + Like |python-eval|, but returns special objects described in + |python-bindeval-objects|. These python objects let you modify (|List| + or |Dictionary|) or call (|Funcref|) vim objecs. Error object of the "vim" module @@ -209,12 +194,12 @@ Constants of the "vim" module to which the variables referred. vim.buffers *python-buffers* - A sequence object providing access to the list of vim buffers. The + A mapping object providing access to the list of vim buffers. The object supports the following operations: > :py b = vim.buffers[i] # Indexing (read-only) :py b in vim.buffers # Membership test :py n = len(vim.buffers) # Number of elements - :py for b in vim.buffers: # Sequential access + :py for b in vim.buffers: # Iterating over buffer list < vim.windows *python-windows* A sequence object providing access to the list of vim windows. The @@ -223,13 +208,28 @@ vim.windows *python-windows* :py w in vim.windows # Membership test :py n = len(vim.windows) # Number of elements :py for w in vim.windows: # Sequential access +< Note: vim.windows object always accesses current tab page,. + |python-tabpage|.windows objects are bound to parent |python-tabpage| + object and always use windows from that tab page (or throw vim.error + in case tab page was deleted). You can keep a reference to both + without keeping a reference to vim module object or |python-tabpage|, + they will not lose their properties in this case. + +vim.tabpages *python-tabpages* + A sequence object providing access to the list of vim tab pages. The + object supports the following operations: > + :py t = vim.tabpages[i] # Indexing (read-only) + :py t in vim.tabpages # Membership test + :py n = len(vim.tabpages) # Number of elements + :py for t in vim.tabpages: # Sequential access < vim.current *python-current* An object providing access (via specific attributes) to various "current" objects available in vim: vim.current.line The current line (RW) String - vim.current.buffer The current buffer (RO) Buffer - vim.current.window The current window (RO) Window + vim.current.buffer The current buffer (RW) Buffer + vim.current.window The current window (RW) Window + vim.current.tabpage The current tab page (RW) TabPage vim.current.range The current line range (RO) Range The last case deserves a little explanation. When the :python or @@ -237,6 +237,42 @@ vim.current *python-current* "current range". A range is a bit like a buffer, but with all access restricted to a subset of lines. See |python-range| for more details. + Note: When assigning to vim.current.{buffer,window,tabpage} it expects + valid |python-buffer|, |python-window| or |python-tabpage| objects + respectively. Assigning triggers normal (with |autocommand|s) + switching to given buffer, window or tab page. It is the only way to + switch UI objects in python: you can't assign to + |python-tabpage|.window attribute. To switch without triggering + autocommands use > + py << EOF + saved_eventignore = vim.options['eventignore'] + vim.options['eventignore'] = 'all' + try: + vim.current.buffer = vim.buffers[2] # Switch to buffer 2 + finally: + vim.options['eventignore'] = saved_eventignore + EOF +< +vim.vars *python-vars* +vim.vvars *python-vvars* + Dictionary-like objects holding dictionaries with global (|g:|) and + vim (|v:|) variables respectively. Identical to `vim.bindeval("g:")`, + but faster. + +vim.options *python-options* + Object partly supporting mapping protocol (supports setting and + getting items) providing a read-write access to global options. + Note: unlike |:set| this provides access only to global options. You + cannot use this object to obtain or set local options' values or + access local-only options in any fashion. Raises KeyError if no global + option with such name exists (i.e. does not raise KeyError for + |global-local| options and global only options, but does for window- + and buffer-local ones). Use |python-buffer| objects to access to + buffer-local options and |python-window| objects to access to + window-local options. + + Type of this object is available via "Options" attribute of vim + module. Output from Python *python-output* Vim displays all Python code output in the Vim message area. Normal @@ -278,6 +314,22 @@ Buffer indexes start at zero, as is normal in Python. This differs from vim line numbers, which start from 1. This is particularly relevant when dealing with marks (see below) which use vim line numbers. +The buffer object attributes are: + b.vars Dictionary-like object used to access + |buffer-variable|s. + b.options Mapping object (supports item getting, setting and + deleting) that provides access to buffer-local options + and buffer-local values of |global-local| options. Use + |python-window|.options if option is window-local, + this object will raise KeyError. If option is + |global-local| and local value is missing getting it + will return None. + b.name String, RW. Contains buffer name (full path). + Note: when assigning to b.name |BufFilePre| and + |BufFilePost| autocommands are launched. + b.number Buffer number. Can be used as |python-buffers| key. + Read-only. + The buffer object methods are: b.append(str) Append a line to the buffer b.append(str, nr) Idem, below line "nr" @@ -296,6 +348,8 @@ Note that when adding a line it must not contain a line break character '\n'. A trailing '\n' is allowed and ignored, so that you can do: > :py b.append(f.readlines()) +Buffer object type is available using "Buffer" attribute of vim module. + Examples (assume b is the current buffer) > :py print b.name # write the buffer file name :py b[0] = "hello!!!" # replace the top line @@ -307,6 +361,9 @@ Examples (assume b is the current buffer) > :py n = len(b) # number of lines :py (row,col) = b.mark('a') # named mark :py r = b.range(1,5) # a sub-range of the buffer + :py b.vars["foo"] = "bar" # assign b:foo variable + :py b.options["ff"] = "dos" # set fileformat + :py del b.options["ar"] # same as :set autoread< ============================================================================== 4. Range objects *python-range* @@ -334,6 +391,8 @@ The range object methods are: for Python's built-in list objects. r.append(list, nr) Idem, after line "nr" +Range object type is available using "Range" attribute of vim module. + Example (assume r is the current range): # Send all lines in a range to the default printer vim.command("%d,%dhardcopy!" % (r.start+1,r.end+1)) @@ -344,6 +403,8 @@ Example (assume r is the current range): Window objects represent vim windows. You can obtain them in a number of ways: - via vim.current.window (|python-current|) - from indexing vim.windows (|python-windows|) + - from indexing "windows" attribute of a tab page (|python-tabpage|) + - from the "window" attribute of a tab page (|python-tabpage|) You can manipulate window objects only through their attributes. They have no methods, and no sequence or other interface. @@ -354,17 +415,164 @@ Window attributes are: This is a tuple, (row,col). height (read-write) The window height, in rows width (read-write) The window width, in columns + vars (read-only) The window |w:| variables. Attribute is + unassignable, but you can change window + variables this way + options (read-only) The window-local options. Attribute is + unassignable, but you can change window + options this way. Provides access only to + window-local options, for buffer-local use + |python-buffer| and for global ones use + |python-options|. If option is |global-local| + and local value is missing getting it will + return None. + number (read-only) Window number. The first window has number 1. + This is zero in case it cannot be determined + (e.g. when the window object belongs to other + tab page). + row, col (read-only) On-screen window position in display cells. + First position is zero. + tabpage (read-only) Window tab page. + The height attribute is writable only if the screen is split horizontally. The width attribute is writable only if the screen is split vertically. +Window object type is available using "Window" attribute of vim module. + +============================================================================== +6. Tab page objects *python-tabpage* + +Tab page objects represent vim tab pages. You can obtain them in a number of +ways: + - via vim.current.tabpage (|python-current|) + - from indexing vim.tabpages (|python-tabpages|) + +You can use this object to access tab page windows. They have no methods and +no sequence or other interfaces. + +Tab page attributes are: + number The tab page number like the one returned by + |tabpagenr()|. + windows Like |python-windows|, but for current tab page. + vars The tab page |t:| variables. + window Current tabpage window. + +TabPage object type is available using "TabPage" attribute of vim module. + +============================================================================== +7. vim.bindeval objects *python-bindeval-objects* + +vim.Dictionary object *python-Dictionary* + Dictionary-like object providing access to vim |Dictionary| type. + Attributes: + Attribute Description ~ + locked One of *python-.locked* + Value Description ~ + zero Variable is not locked + vim.VAR_LOCKED Variable is locked, but can be unlocked + vim.VAR_FIXED Variable is locked and can't be unlocked + Read-write. You can unlock locked variable by assigning + `True` or `False` to this attribute. No recursive locking + is supported. + scope One of + Value Description ~ + zero Dictionary is not a scope one + vim.VAR_DEF_SCOPE |g:| or |l:| dictionary + vim.VAR_SCOPE Other scope dictionary, + see |internal-variables| + Methods (note: methods do not support keyword arguments): + Method Description ~ + keys() Returns a list with dictionary keys. + values() Returns a list with dictionary values. + items() Returns a list of 2-tuples with dictionary contents. + update(iterable), update(dictionary), update(**kwargs) + Adds keys to dictionary. + get(key[, default=None]) + Obtain key from dictionary, returning the default if it is + not present. + pop(key[, default]) + Remove specified key from dictionary and return + corresponding value. If key is not found and default is + given returns the default, otherwise raises KeyError. + popitem(key) + Remove specified key from dictionary and return a pair + with it and the corresponding value. Returned key is a new + object. + has_key(key) + Check whether dictionary contains specified key, similar + to `key in dict`. + + __new__(), __new__(iterable), __new__(dictionary), __new__(update) + You can use `vim.Dictionary()` to create new vim + dictionaries. `d=vim.Dictionary(arg)` is the same as + `d=vim.bindeval('{}');d.update(arg)`. Without arguments + constructs empty dictionary. + + Examples: > + d = vim.Dictionary(food="bar") # Constructor + d['a'] = 'b' # Item assignment + print d['a'] # getting item + d.update({'c': 'd'}) # .update(dictionary) + d.update(e='f') # .update(**kwargs) + d.update((('g', 'h'), ('i', 'j'))) # .update(iterable) + for key in d.keys(): # .keys() + for val in d.values(): # .values() + for key, val in d.items(): # .items() + print isinstance(d, vim.Dictionary) # True + for key in d: # Iteration over keys + class Dict(vim.Dictionary): # Subclassing +< + Note: when iterating over keys you should not modify dictionary. + +vim.List object *python-List* + Sequence-like object providing access to vim |List| type. + Supports `.locked` attribute, see |python-.locked|. Also supports the + following methods: + Method Description ~ + extend(item) Add items to the list. + + __new__(), __new__(iterable) + You can use `vim.List()` to create new vim lists. + `l=vim.List(iterable)` is the same as + `l=vim.bindeval('[]');l.extend(iterable)`. Without + arguments constructs empty list. + Examples: > + l = vim.List("abc") # Constructor, result: ['a', 'b', 'c'] + l.extend(['abc', 'def']) # .extend() method + print l[1:] # slicing + l[:0] = ['ghi', 'jkl'] # slice assignment + print l[0] # getting item + l[0] = 'mno' # assignment + for i in l: # iteration + print isinstance(l, vim.List) # True + class List(vim.List): # Subclassing + +vim.Function object *python-Function* + Function-like object, acting like vim |Funcref| object. Supports `.name` + attribute and is callable. Accepts special keyword argument `self`, see + |Dictionary-function|. You can also use `vim.Function(name)` constructor, + it is the same as `vim.bindeval('function(%s)'%json.dumps(name))`. + + Examples: > + f = vim.Function('tr') # Constructor + print f('abc', 'a', 'b') # Calls tr('abc', 'a', 'b') + vim.command(''' + function DictFun() dict + return self + endfunction + ''') + f = vim.bindeval('function("DictFun")') + print f(self={}) # Like call('DictFun', [], {}) + print isinstance(f, vim.Function) # True + ============================================================================== -6. pyeval() and py3eval() Vim functions *python-pyeval* +8. pyeval() and py3eval() Vim functions *python-pyeval* To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()| functions to evaluate Python expressions and pass their values to VimL. ============================================================================== -7. Dynamic loading *python-dynamic* +9. Dynamic loading *python-dynamic* On MS-Windows the Python library can be loaded dynamically. The |:version| output then includes |+python/dyn|. @@ -381,14 +589,16 @@ Currently the name is "python24.dll". That is for Python 2.4. To know for sure edit "gvim.exe" and search for "python\d*.dll\c". ============================================================================== -8. Python 3 *python3* +10. Python 3 *python3* *:py3* *:python3* -The |:py3| and |:python3| commands work similar to |:python|. A simple check +The `:py3` and `:python3` commands work similar to `:python`. A simple check if the `:py3` command is working: > :py3 print("Hello") < *:py3file* -The |:py3file| command works similar to |:pyfile|. +The `:py3file` command works similar to `:pyfile`. + *:py3do* *E863* +The `:py3do` command works similar to `:pydo`. Vim can be built in four ways (:version output): diff --git a/en/indent.txt b/en/indent.txt index 6a43896c0..0dd632b0c 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.3. Last change: 2012 Aug 30 +*indent.txt* For Vim version 7.3. Last change: 2013 May 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -577,6 +577,106 @@ $VIMRUNTIME/indent directory for examples. REMARKS ABOUT SPECIFIC INDENT FILES ~ +CLOJURE *ft-clojure-indent* *clojure-indent* + +Clojure indentation differs somewhat from traditional Lisps, due in part to +the use of square and curly brackets, and otherwise by community convention. +These conventions are not always universally followed, so the Clojure indent +script offers a few configurable options, listed below. + +If the current vim does not include searchpairpos(), the indent script falls +back to normal 'lisp' indenting, and the following options are ignored. + + *g:clojure_maxlines* + +Set maximum scan distance of searchpairpos(). Larger values trade performance +for correctness when dealing with very long forms. A value of 0 will scan +without limits. +> + " Default + let g:clojure_maxlines = 100 +< + + *g:clojure_fuzzy_indent* + *g:clojure_fuzzy_indent_patterns* + *g:clojure_fuzzy_indent_blacklist* + +The 'lispwords' option is a list of comma-separated words that mark special +forms whose subforms must be indented with two spaces. + +For example: +> + (defn bad [] + "Incorrect indentation") + + (defn good [] + "Correct indentation") +< +If you would like to specify 'lispwords' with a |pattern| instead, you can use +the fuzzy indent feature: +> + " Default + let g:clojure_fuzzy_indent = 1 + let g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let'] + let g:clojure_fuzzy_indent_blacklist = + \ ['-fn$', '\v^with-%(meta|out-str|loading-context)$'] + + " Legacy comma-delimited string version; the list format above is + " recommended. Note that patterns are implicitly anchored with ^ and $ + let g:clojure_fuzzy_indent_patterns = 'with.*,def.*,let.*' +< +|g:clojure_fuzzy_indent_patterns| and |g:clojure_fuzzy_indent_blacklist| are +|Lists| of patterns that will be matched against the unquoted, unqualified +symbol at the head of a list. This means that a pattern like "^foo" will match +all these candidates: "foobar", "my.ns/foobar", and "#'foobar". + +Each candidate word is tested for special treatment in this order: + + 1. Return true if word is literally in 'lispwords' + 2. Return false if word matches a pattern in + |g:clojure_fuzzy_indent_blacklist| + 3. Return true if word matches a pattern in + |g:clojure_fuzzy_indent_patterns| + 4. Return false and indent normally otherwise + + *g:clojure_special_indent_words* + +Some forms in Clojure are indented so that every subform is indented only two +spaces, regardless of 'lispwords'. If you have a custom construct that should +be indented in this idiosyncratic fashion, you can add your symbols to the +default list below. +> + " Default + let g:clojure_special_indent_words = + \ 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn' +< + + *g:clojure_align_multiline_strings* + +Align subsequent lines in multiline strings to the column after the opening +quote, instead of the same column. + +For example: +> + (def default + "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat.") + + (def aligned + "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat.") +< +This option is off by default. +> + " Default + let g:clojure_align_multiline_strings = 0 +< + + FORTRAN *ft-fortran-indent* Block if, select case, where, and forall constructs are indented. So are @@ -640,12 +740,12 @@ those useless characters first with a command like: > :%s /\r$//g Or, you can simply |:let| the variable PHP_removeCRwhenUnix to 1 and the -script will silently remove them when Vim loads a PHP file (at each|BufRead|). +script will silently remove them when Vim loads a PHP file (at each |BufRead|). OPTIONS: ~ PHP indenting can be altered in several ways by modifying the values of some -variables: +global variables: *php-comment* To not enable auto-formating of comments by default (if you want to use your @@ -653,10 +753,21 @@ own 'formatoptions'): > :let g:PHP_autoformatcomment = 0 Else, 't' will be removed from the 'formatoptions' string and "qrowcb" will be -added, see|fo-table|for more information. +added, see |fo-table| for more information. +------------- + +To add extra indentation to single-line comments: > + :let g:PHP_outdentSLComments = N + +With N being the number of 'shiftwidth' to add. + +Only single-line comments will be affected such as: > + # Comment + // Comment + /* Comment */ ------------- -To add an extra indent to every PHP lines with N being the number of +To add extra indentation to every PHP lines with N being the number of 'shiftwidth' to add: > :let g:PHP_default_indenting = N @@ -672,7 +783,7 @@ For example, with N = 1, this will give: $command_hist = TRUE; ?> -(Notice the extra indent between the PHP container markers and the code) +(Notice the extra indentation between the PHP container markers and the code) ------------- To indent PHP tags as the surrounding code: > @@ -704,8 +815,10 @@ NOTE: Indenting will be a bit slower if this option is used because some To indent 'case:' and 'default:' statements in switch() blocks: > :let g:PHP_vintage_case_default_indent = 1 -(Since in PHP braces are not required inside 'case/default' blocks, by default they are indented at the same level than the 'switch()' to avoid -unnecessary indentation) +In PHP braces are not required inside 'case/default' blocks therefore 'case:' +and 'default:' are indented at the same level than the 'switch()' to avoid +meaningless indentation. You can use the above option to return to the +traditional way. PYTHON *ft-python-indent* diff --git a/en/index.txt b/en/index.txt index 7ce87cf03..6b8d445e4 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.3. Last change: 2013 Feb 28 +*index.txt* For Vim version 7.3. Last change: 2013 May 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -725,6 +725,7 @@ tag char note action in Normal mode ~ cursor N times, leave the cursor after it |gQ| gQ switch to "Ex" mode with Vim editing |gR| gR 2 enter Virtual Replace mode +|gT| gT go to the previous tab page |gU| gU{motion} 2 make Nmove text uppercase |gV| gV don't reselect the previous Visual area when executing a mapping or menu in Select @@ -762,6 +763,7 @@ tag char note action in Normal mode ~ |gq| gq{motion} 2 format Nmove text |gr| gr{char} 2 virtual replace N chars with {char} |gs| gs go to sleep for N seconds (default 1) +|gt| gt go to the next tab page |gu| gu{motion} 2 make Nmove text lowercase |gv| gv reselect the previous Visual area |gw| gw{motion} 2 format Nmove text and keep cursor @@ -1401,8 +1403,10 @@ tag command action ~ |:pwd| :pw[d] print current directory |:py3| :py3 execute Python 3 command |:python3| :python3 same as :py3 +|:py3do| :py3d[o] execute Python 3 command for each line |:py3file| :py3f[ile] execute Python 3 script file |:python| :py[thon] execute Python command +|:pydo| :pyd[o] execute Python command for each line |:pyfile| :pyf[ile] execute Python script file |:quit| :q[uit] quit current window (when one window quit Vim) |:quitall| :quita[ll] quit Vim diff --git a/en/insert.txt b/en/insert.txt index 4db43418b..43fedbc89 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.3. Last change: 2013 Jan 09 +*insert.txt* For Vim version 7.3. Last change: 2013 Apr 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1869,13 +1869,15 @@ NOTE: These commands cannot be used with |:global| or |:vglobal|. See |++opt| for the possible values of [++opt]. *:r!* *:read!* -:[range]r[ead] !{cmd} Execute {cmd} and insert its standard output below +:[range]r[ead] [++opt] !{cmd} + Execute {cmd} and insert its standard output below the cursor or the specified line. A temporary file is used to store the output of the command which is then read into the buffer. 'shellredir' is used to save the output of the command, which can be set to include stderr or not. {cmd} is executed like with ":!{cmd}", any '!' is replaced with the previous command |:!|. + See |++opt| for the possible values of [++opt]. These commands insert the contents of a file, or the output of a command, into the buffer. They can be undone. They cannot be repeated with the "." diff --git a/en/map.txt b/en/map.txt index 59c661d3f..039b77b36 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.3. Last change: 2012 Apr 13 +*map.txt* For Vim version 7.3. Last change: 2013 May 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -49,7 +49,7 @@ modes. :nm[ap] {lhs} {rhs} |mapmode-n| *:nm* *:nmap* :vm[ap] {lhs} {rhs} |mapmode-v| *:vm* *:vmap* :xm[ap] {lhs} {rhs} |mapmode-x| *:xm* *:xmap* -:smap {lhs} {rhs} |mapmode-s| *:smap* +:smap {lhs} {rhs} |mapmode-s| *:smap* :om[ap] {lhs} {rhs} |mapmode-o| *:om* *:omap* :map! {lhs} {rhs} |mapmode-ic| *:map!* :im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap* diff --git a/en/mbyte.txt b/en/mbyte.txt index 61647935f..8ae023bfb 100644 --- a/en/mbyte.txt +++ b/en/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.3. Last change: 2012 Oct 06 +*mbyte.txt* For Vim version 7.3. Last change: 2013 May 18 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -48,9 +48,9 @@ COMPILING If you already have a compiled Vim program, check if the |+multi_byte| feature is included. The |:version| command can be used for this. -If +multi_byte is not included, you should compile Vim with "big" features. -You can further tune what features are included. See the INSTALL files in the -source directory. +If +multi_byte is not included, you should compile Vim with "normal", "big" or +"huge" features. You can further tune what features are included. See the +INSTALL files in the source directory. LOCALE diff --git a/en/message.txt b/en/message.txt index 97c452502..35f6c49de 100644 --- a/en/message.txt +++ b/en/message.txt @@ -1,4 +1,4 @@ -*message.txt* For Vim version 7.3. Last change: 2011 May 10 +*message.txt* For Vim version 7.3. Last change: 2013 Feb 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -730,7 +730,11 @@ Vim cannot create a temporary file. Can't open file {filename} Can't read file {filename} -Vim cannot read a temporary file. +Vim cannot read a temporary file. Especially on Windows, this can be caused +by wrong escaping of special characters for cmd.exe; the approach was +changed with patch 7.3.443. Try using |shellescape()| for all shell arguments +given to |system()|, or explicitly add escaping with ^. Also see +'shellxquote' and 'shellxescape'. *E464* > Ambiguous use of user-defined command diff --git a/en/options.txt b/en/options.txt index 3beb2b0cf..6b01d7c17 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.3. Last change: 2013 Jan 30 +*options.txt* For Vim version 7.3. Last change: 2013 May 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -277,8 +277,10 @@ Now the 'list' option is not set, because ":set nolist" resets the global value, ":setlocal list" only changes the local value and ":e two" gets the global value. Note that if you do this next: > :e one -You will not get back the 'list' value as it was the last time you edited -"one". The options local to a window are not remembered for each buffer. +You will get back the 'list' value as it was the last time you edited "one". +The options local to a window are remembered for each buffer. This also +happens when the buffer is not loaded, but they are lost when the buffer is +wiped out |:bwipe|. *:setl* *:setlocal* :setl[ocal] ... Like ":set" but set only the value local to the @@ -699,6 +701,10 @@ A jump table for the options with a short description can be found at |Q_op|. when the system locale is set to one of CJK locales. See Unicode Standard Annex #11 (http://www.unicode.org/reports/tr11). + Vim may set this option automatically at startup time when Vim is + compiled with the |+termresponse| feature and if |t_u7| is set to the + escape sequence to request cursor position report. + *'antialias'* *'anti'* *'noantialias'* *'noanti'* 'antialias' 'anti' boolean (default: off) global @@ -986,7 +992,7 @@ A jump table for the options with a short description can be found at |Q_op|. - The backup file will be created in the first directory in the list where this is possible. The directory must exist, Vim will not create it for you. - - Empty means that no backup file will be created ('patchmode' is + - Empty means that no backup file will be created ( 'patchmode' is impossible!). Writing may fail because of this. - A directory "." means to put the backup file in the same directory as the edited file. @@ -1463,11 +1469,14 @@ A jump table for the options with a short description can be found at |Q_op|. |gui-clipboard|. *clipboard-unnamedplus* - unnamedplus A variant of "unnamed" flag which uses the clipboard - register '+' (|quoteplus|) instead of register '*' for - all operations except yank. Yank shall copy the text - into register '+' and also into '*' when "unnamed" is - included. + unnamedplus A variant of the "unnamed" flag which uses the + clipboard register '+' (|quoteplus|) instead of + register '*' for all yank, delete, change and put + operations which would normally go to the unnamed + register. When "unnamed" is also included to the + option, yank operations (but not delete, change or + put) will additionally copy the text into register + '*'. Only available with the |+X11| feature. Availability can be checked with: > if has('unnamedplus') @@ -1700,7 +1709,7 @@ A jump table for the options with a short description can be found at |Q_op|. when CTRL-P or CTRL-N are used. It is also used for whole-line completion |i_CTRL-X_CTRL-L|. It indicates the type of completion and the places to scan. It is a comma separated list of flags: - . scan the current buffer ('wrapscan' is ignored) + . scan the current buffer ( 'wrapscan' is ignored) w scan buffers from other windows b scan other loaded buffers that are in the buffer list u scan the unloaded buffers that are in the buffer list @@ -2865,7 +2874,7 @@ A jump table for the options with a short description can be found at |Q_op|. See |file-formats| and |file-read|. For the character encoding of the file see 'fileencoding'. When 'binary' is set, the value of 'fileformat' is ignored, file I/O - works like it was set to "unix'. + works like it was set to "unix". This option is set automatically when starting to edit a file and 'fileformats' is not empty and 'binary' is off. When this option is set, after starting to edit a file, the 'modified' @@ -2934,6 +2943,14 @@ A jump table for the options with a short description can be found at |Q_op|. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. + *'fileignorecase'* *'fic'* *'nofileignorecase'* *'nofic'* +'fileignorecase' 'fic' boolean (default on for systems where case in file + names is normally ignored) + global + {not in Vi} + When set case is ignored when using file names and directories. + See 'wildignorecase' for only ignoring case when doing completion. + *'filetype'* *'ft'* 'filetype' 'ft' string (default: "") local to buffer @@ -5499,6 +5516,19 @@ A jump table for the options with a short description can be found at |Q_op|. matches will be highlighted. This is used to avoid that Vim hangs when using a very complicated pattern. + *'regexpengine'* *'re'* +'regexpengine' 're' number (default 0) + global + {not in Vi} + This selects the default regexp engine. |two-engines| + The possible values are: + 0 automatic selection + 1 old engine + 2 NFA engine + Note that when using the NFA engine and the pattern contains something + that is not supported the pattern will not match. This is only useful + for debugging the regexp engine. + *'relativenumber'* *'rnu'* *'norelativenumber'* *'nornu'* 'relativenumber' 'rnu' boolean (default off) local to window @@ -7082,7 +7112,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Encoding used for the terminal. This specifies what character encoding the keyboard produces and the display will understand. For - the GUI it only applies to the keyboard ('encoding' is used for the + the GUI it only applies to the keyboard ( 'encoding' is used for the display). Except for the Mac when 'macatsui' is off, then 'termencoding' should be "macroman". In the Win32 console version the default value is the console codepage @@ -7491,7 +7521,7 @@ A jump table for the options with a short description can be found at |Q_op|. given, no further entry is used. See |undo-persistence|. - *'undofile'* *'udf'* + *'undofile'* *'noundofile'* *'udf'* *'noudf'* 'undofile' 'udf' boolean (default off) local to buffer {not in Vi} @@ -7896,7 +7926,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When set case is ignored when completing file names and directories. - Has no effect on systems where file name case is generally ignored. + Has no effect when 'fileignorecase' is set. Does not apply when the shell is used to expand wildcards, which happens when there are special characters. @@ -7915,6 +7945,7 @@ A jump table for the options with a short description can be found at |Q_op|. CTRL-P/CTRL-N, cause the highlight to move to the appropriate match. When 'wildmode' is used, "wildmenu" mode is used where "full" is specified. "longest" and "list" do not start "wildmenu" mode. + You can check the current mode with |wildmenumode()|. If there are more matches than can fit in the line, a ">" is shown on the right and/or a "<" is shown on the left. The status line scrolls as needed. diff --git a/en/pattern.txt b/en/pattern.txt index 7565c898e..e90e38839 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.3. Last change: 2013 Jan 25 +*pattern.txt* For Vim version 7.3. Last change: 2013 May 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -350,6 +350,27 @@ For starters, read chapter 27 of the user manual |usr_27.txt|. or \z( pattern \) |/\z(| + */\%#=* *two-engines* +Vim includes two regexp engines: +1. An old, backtracking engine that supports everything. +2. A new, NFA engine that works much faster on some patterns, but does not + support everything. + +Vim will automatically select the right engine for you. However, if you run +into a problem or want to specifically select one engine or the other, you can +prepend one of the following to the pattern: + + \%#=0 Force automatic selection. Only has an effect when + 'regexpengine' has been set to a non-zero value. + \%#=1 Force using the old engine. + \%#=2 Force using the NFA engine. + +You can also use the 'regexpengine' option to change the default. + + *E864* *E868* *E874* *E875* *E876* *E877* *E878* +If selecting the NFA engine and it runs into something that is not implemented +the pattern will not match. This is only useful when debugging Vim. + ============================================================================== 3. Magic */magic* @@ -396,9 +417,10 @@ pattern. ============================================================================== 4. Overview of pattern items *pattern-overview* + *E865* *E866* *E867* *E869* Overview of multi items. */multi* *E61* *E62* -More explanation and examples below, follow the links. *E64* +More explanation and examples below, follow the links. *E64* *E871* multi ~ 'magic' 'nomagic' matches of the preceding atom ~ @@ -508,12 +530,14 @@ Character classes {not in Vi}: */character-classes* |/\c| \c \c ignore case, do not use the 'ignorecase' option |/\C| \C \C match case, do not use the 'ignorecase' option +|/\Z| \Z \Z ignore differences in Unicode "combining characters". + Useful when searching voweled Hebrew or Arabic text. + |/\m| \m \m 'magic' on for the following chars in the pattern |/\M| \M \M 'magic' off for the following chars in the pattern |/\v| \v \v the following chars in the pattern are "very magic" |/\V| \V \V the following chars in the pattern are "very nomagic" -|/\Z| \Z \Z ignore differences in Unicode "combining characters". - Useful when searching voweled Hebrew or Arabic text. +|/\%#=| \%#=1 \%#=1 select regexp engine |/zero-width| |/\%d| \%d \%d match specified decimal character (eg \%d123) |/\%x| \%x \%x match specified hex character (eg \%x2a) @@ -581,7 +605,7 @@ overview. \? Just like \=. Cannot be used when searching backwards with the "?" command. {not in Vi} - */\{* *E58* *E60* *E554* + */\{* *E58* *E60* *E554* *E870* \{n,m} Matches n to m of the preceding atom, as many as possible \{n} Matches n of the preceding atom \{n,} Matches at least n of the preceding atom, as many as possible @@ -674,6 +698,7 @@ overview. For speed it's often much better to avoid this multi. Try using "\zs" instead |/\zs|. To match the same as the above example: an\_s\+\zsfile + At least set a limit for the look-behind, see below. "\@<=" and "\@<!" check for matches just before what follows. Theoretically these matches could start anywhere before this position. @@ -686,6 +711,18 @@ overview. Example matches ~ \1\@<=,\([a-z]\+\) ",abc" in "abc,abc" +\@123<= + Like "\@<=" but only look back 123 bytes. This avoids trying lots + of matches that are known to fail and make executing the pattern very + slow. Example, check if there is a "<" just before "span": + /<\@1<=span + This will try matching "<" only one byte before "span", which is the + only place that works anyway. + After crossing a line boundary, the limit is relative to the end of + the line. Thus the characters at the start of the line with the match + are not counted (this is just to keep it simple). + The number zero is the same as no limit. + */\@<!* \@<! Matches with zero width if the preceding atom does NOT match just before what follows. Thus this matches if there is no position in the @@ -695,11 +732,16 @@ overview. The match with the preceding atom is made to end just before the match with what follows, thus an atom that ends in ".*" will work. Warning: This can be slow (because many positions need to be checked - for a match). + for a match). Use a limit if you can, see below. Example matches ~ \(foo\)\@<!bar any "bar" that's not in "foobar" \(\/\/.*\)\@<!in "in" which is not after "//" +\@123<! + Like "\@<!" but only look back 123 bytes. This avoids trying lots of + matches that are known to fail and make executing the pattern very + slow. + */\@>* \@> Matches the preceding atom like matching a whole pattern. {not in Vi} Like "(?>pattern)" in Perl. @@ -962,7 +1004,8 @@ match ASCII characters, as indicated by the range. ~ matches the last given substitute string */~* */\~* \(\) A pattern enclosed by escaped parentheses. */\(* */\(\)* */\)* - E.g., "\(^a\)" matches 'a' at the start of a line. *E51* *E54* *E55* + E.g., "\(^a\)" matches 'a' at the start of a line. + *E51* *E54* *E55* *E872* *E873* \1 Matches the same string that was matched by */\1* *E65* the first sub-expression in \( and \). {not in Vi} @@ -1061,6 +1104,8 @@ x A single character, with no special meaning, matches itself any character that's not in "^]-\bdertnoUux". "[\xyz]" matches '\', 'x', 'y' and 'z'. It's better to use "\\" though, future expansions may use other characters after '\'. + - Omitting the trailing ] is not considered an error. "[]" works like + "[]]", it matches the ']' character. - The following translations are accepted when the 'l' flag is not included in 'cpoptions' {not in Vi}: \e <Esc> @@ -1166,6 +1211,8 @@ When "\Z" appears anywhere in the pattern, composing characters are ignored. Thus only the base characters need to match, the composing characters may be different and the number of composing characters may differ. Only relevant when 'encoding' is "utf-8". +Exception: If the pattern starts with one or more composing characters, these +must match. When a composing character appears at the start of the pattern of after an item that doesn't include the composing character, a match is found at any @@ -1175,8 +1222,20 @@ When using a dot and a composing character, this works the same as the composing character by itself, except that it doesn't matter what comes before this. -The order of composing characters matters, even though changing the order -doesn't change what a character looks like. This may change in the future. +The order of composing characters does not matter. Also, the text may have +more composing characters than the pattern, it still matches. But all +composing characters in the pattern must be found in the text. + +Suppose B is a base character and x and y are composing characters: + pattern text match ~ + Bxy Bxy yes (perfect match) + Bxy Byx yes (order ignored) + Bxy By no (x missing) + Bxy Bx no (y missing) + Bx Bx yes (perfect mach) + Bx By no (x missing) + Bx Bxy yes (extra y ignored) + Bx Byx yes (extra y ignored) ============================================================================== 9. Compare with Perl patterns *perl-patterns* diff --git a/en/pi_getscript.txt b/en/pi_getscript.txt index 5543573eb..fa2523cc7 100644 --- a/en/pi_getscript.txt +++ b/en/pi_getscript.txt @@ -1,11 +1,11 @@ -*pi_getscript.txt* For Vim version 7.0. Last change: 2011 Jun 23 +*pi_getscript.txt* For Vim version 7.0. Last change: 2012 Apr 07 > - GETSCRIPT REFERENCE MANUAL by Charles E. Campbell, Jr. + GETSCRIPT REFERENCE MANUAL by Charles E. Campbell < -Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz> +Authors: Charles E. Campbell <NdrOchip@ScampbellPfamilyA.Mbiz> (remove NOSPAM from the email address) *GetLatestVimScripts-copyright* -Copyright: (c) 2004-2012 by Charles E. Campbell, Jr. *glvs-copyright* +Copyright: (c) 2004-2012 by Charles E. Campbell *glvs-copyright* The VIM LICENSE (see |copyright|) applies to the files in this package, including getscriptPlugin.vim, getscript.vim, GetLatestVimScripts.dist, and pi_getscript.txt, except use "getscript" @@ -343,6 +343,11 @@ after/syntax/c.vim contained in it to overwrite a user's c.vim. default= $HOME/vimfiles (windows) Override where :AutoInstall: scripts will be installed. Doesn't override vimball installation. +> + g:GetLatestVimScripts_scriptaddr +< default='http://vim.sourceforge.net/script.php?script_id=' + Override this if your system needs + ... ='http://vim.sourceforge.net/script/script.php?script_id=' ============================================================================== 8. GetLatestVimScripts Algorithm *glvs-algorithm* *glvs-alg* @@ -380,7 +385,11 @@ The AutoInstall process will: ============================================================================== 9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1 -v44 Jun 23, 2011 : * handles additional decompression options for tarballs +v35 Apr 07, 2012 : * (MengHuan Yu) pointed out that the script url has + changed (somewhat). However, it doesn't work, and + the original one does (under Linux). I'll make it + yet-another-option. +v34 Jun 23, 2011 : * handles additional decompression options for tarballs (tgz taz tbz txz) v33 May 31, 2011 : * using fnameescape() instead of escape() * *.xz support diff --git a/en/pi_netrw.txt b/en/pi_netrw.txt index c17ca5f7c..4d810eab4 100644 --- a/en/pi_netrw.txt +++ b/en/pi_netrw.txt @@ -1,12 +1,12 @@ -*pi_netrw.txt* For Vim version 7.3. Last change: 2012 Oct 25 +*pi_netrw.txt* For Vim version 7.3. Last change: 2013 May 18 - ----------------------------------------------------- - NETRW REFERENCE MANUAL by Charles E. Campbell, Jr. - ----------------------------------------------------- -Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> + ------------------------------------------------ + NETRW REFERENCE MANUAL by Charles E. Campbell + ------------------------------------------------ +Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 1999-2012 Charles E Campbell, Jr *netrw-copyright* +Copyright: Copyright (C) 1999-2013 Charles E Campbell *netrw-copyright* The VIM LICENSE applies to the files in this package, including netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and syntax/netrw.vim. Like anything else that's free, netrw.vim and its @@ -25,83 +25,87 @@ Copyright: Copyright (C) 1999-2012 Charles E Campbell, Jr *netrw-copyright* ============================================================================== 1. Contents *netrw-contents* {{{1 -1. Contents.............................................|netrw-contents| -2. Starting With Netrw..................................|netrw-start| -3. Netrw Reference......................................|netrw-ref| - EXTERNAL APPLICATIONS AND PROTOCOLS................|netrw-externapp| - READING............................................|netrw-read| - WRITING............................................|netrw-write| - SOURCING...........................................|netrw-source| - DIRECTORY LISTING..................................|netrw-dirlist| - CHANGING THE USERID AND PASSWORD...................|netrw-chgup| - VARIABLES AND SETTINGS.............................|netrw-variables| - PATHS..............................................|netrw-path| -4. Network-Oriented File Transfer.......................|netrw-xfer| - NETRC..............................................|netrw-netrc| - PASSWORD...........................................|netrw-passwd| -5. Activation...........................................|netrw-activate| -6. Transparent Remote File Editing......................|netrw-transparent| -7. Ex Commands..........................................|netrw-ex| -8. Variables and Options................................|netrw-variables| -9. Browsing.............................................|netrw-browse| - Introduction To Browsing...........................|netrw-intro-browse| - Quick Reference: Maps..............................|netrw-browse-maps| - Quick Reference: Commands..........................|netrw-browse-cmds| - Bookmarking A Directory............................|netrw-mb| - Browsing...........................................|netrw-cr| - Browsing With A Horizontally Split Window..........|netrw-o| - Browsing With A New Tab............................|netrw-t| - Browsing With A Vertically Split Window............|netrw-v| - Change Listing Style.(thin wide long tree).........|netrw-i| - Changing To A Bookmarked Directory.................|netrw-gb| - Changing To A Predecessor Directory................|netrw-u| - Changing To A Successor Directory..................|netrw-U| - Customizing Browsing With A User Function..........|netrw-x| - Deleting Bookmarks.................................|netrw-mB| - Deleting Files Or Directories......................|netrw-D| - Directory Exploring Commands.......................|netrw-explore| - Exploring With Stars and Patterns..................|netrw-star| - Displaying Information About File..................|netrw-qf| - Edit File Or Directory Hiding List.................|netrw-ctrl-h| - Editing The Sorting Sequence.......................|netrw-S| - Forcing treatment as a file or directory...........|netrw-gd| |netrw-gf| - Going Up...........................................|netrw--| - Hiding Files Or Directories........................|netrw-a| - Improving Browsing.................................|netrw-ssh-hack| - Listing Bookmarks And History......................|netrw-qb| - Making A New Directory.............................|netrw-d| - Making The Browsing Directory The Current Directory|netrw-c| - Marking Files......................................|netrw-mf| - Marking Files By Regular Expression................|netrw-mr| - Marked Files: Arbitrary Command....................|netrw-mx| - Marked Files: Compression And Decompression........|netrw-mz| - Marked Files: Copying..............................|netrw-mc| - Marked Files: Diff.................................|netrw-md| - Marked Files: Editing..............................|netrw-me| - Marked Files: Grep.................................|netrw-mg| - Marked Files: Hiding and Unhiding by Suffix........|netrw-mh| - Marked Files: Moving...............................|netrw-mm| - Marked Files: Printing.............................|netrw-mp| - Marked Files: Sourcing.............................|netrw-ms| - Marked Files: Tagging..............................|netrw-mT| - Marked Files: Setting the Target Directory.........|netrw-mt| - Marked Files: Unmarking............................|netrw-mu| - Netrw Browser Variables............................|netrw-browser-var| - Netrw Browsing And Option Incompatibilities........|netrw-incompatible| - Netrw Settings Window..............................|netrw-settings-window| - Obtaining A File...................................|netrw-O| - Preview Window.....................................|netrw-p| - Previous Window....................................|netrw-P| - Refreshing The Listing.............................|netrw-ctrl-l| - Renaming Files Or Directories......................|netrw-move| - Reversing Sorting Order............................|netrw-r| - Selecting Sorting Style............................|netrw-s| - Setting Editing Window.............................|netrw-C| -10. Problems and Fixes...................................|netrw-problems| -11. Debugging Netrw Itself...............................|netrw-debug| -12. History..............................................|netrw-history| -13. Todo.................................................|netrw-todo| -14. Credits..............................................|netrw-credits| +1. Contents..............................................|netrw-contents| +2. Starting With Netrw...................................|netrw-start| +3. Netrw Reference.......................................|netrw-ref| + EXTERNAL APPLICATIONS AND PROTOCOLS.................|netrw-externapp| + READING.............................................|netrw-read| + WRITING.............................................|netrw-write| + SOURCING............................................|netrw-source| + DIRECTORY LISTING...................................|netrw-dirlist| + CHANGING THE USERID AND PASSWORD....................|netrw-chgup| + VARIABLES AND SETTINGS..............................|netrw-variables| + PATHS...............................................|netrw-path| +4. Network-Oriented File Transfer........................|netrw-xfer| + NETRC...............................................|netrw-netrc| + PASSWORD............................................|netrw-passwd| +5. Activation............................................|netrw-activate| +6. Transparent Remote File Editing.......................|netrw-transparent| +7. Ex Commands...........................................|netrw-ex| +8. Variables and Options.................................|netrw-variables| +9. Browsing..............................................|netrw-browse| + Introduction To Browsing............................|netrw-intro-browse| + Quick Reference: Maps...............................|netrw-browse-maps| + Quick Reference: Commands...........................|netrw-browse-cmds| + Bookmarking A Directory.............................|netrw-mb| + Browsing............................................|netrw-cr| + Browsing With A Horizontally Split Window...........|netrw-o| + Browsing With A New Tab.............................|netrw-t| + Browsing With A Vertically Split Window.............|netrw-v| + Change Listing Style.(thin wide long tree)..........|netrw-i| + Changing To A Bookmarked Directory..................|netrw-gb| + Changing To A Predecessor Directory.................|netrw-u| + Changing To A Successor Directory...................|netrw-U| + Customizing Browsing With A User Function...........|netrw-x| + Deleting Bookmarks..................................|netrw-mB| + Deleting Files Or Directories.......................|netrw-D| + Directory Exploring Commands........................|netrw-explore| + Exploring With Stars and Patterns...................|netrw-star| + Displaying Information About File...................|netrw-qf| + Edit File Or Directory Hiding List..................|netrw-ctrl-h| + Editing The Sorting Sequence........................|netrw-S| + Forcing treatment as a file or directory............|netrw-gd| |netrw-gf| + Going Up............................................|netrw--| + Hiding Files Or Directories.........................|netrw-a| + Improving Browsing..................................|netrw-ssh-hack| + Listing Bookmarks And History.......................|netrw-qb| + Making A New Directory..............................|netrw-d| + Making The Browsing Directory The Current Directory.|netrw-c| + Marking Files.......................................|netrw-mf| + Unmarking Files.....................................|netrw-mF| + Marking Files By QuickFix List......................|netrw-qF| + Marking Files By Regular Expression.................|netrw-mr| + Marked Files: Arbitrary Command.....................|netrw-mx| + Marked Files: Compression And Decompression.........|netrw-mz| + Marked Files: Copying...............................|netrw-mc| + Marked Files: Diff..................................|netrw-md| + Marked Files: Editing...............................|netrw-me| + Marked Files: Grep..................................|netrw-mg| + Marked Files: Hiding and Unhiding by Suffix.........|netrw-mh| + Marked Files: Moving................................|netrw-mm| + Marked Files: Printing..............................|netrw-mp| + Marked Files: Sourcing..............................|netrw-ms| + Marked Files: Setting the Target Directory..........|netrw-mt| + Marked Files: Tagging...............................|netrw-mT| + Marked Files: Target Directory Using Bookmarks......|netrw-Tb| + Marked Files: Target Directory Using History........|netrw-Th| + Marked Files: Unmarking.............................|netrw-mu| + Netrw Browser Variables.............................|netrw-browser-var| + Netrw Browsing And Option Incompatibilities.........|netrw-incompatible| + Netrw Settings Window...............................|netrw-settings-window| + Obtaining A File....................................|netrw-O| + Preview Window......................................|netrw-p| + Previous Window.....................................|netrw-P| + Refreshing The Listing..............................|netrw-ctrl-l| + Reversing Sorting Order.............................|netrw-r| + Renaming Files Or Directories.......................|netrw-R| + Selecting Sorting Style.............................|netrw-s| + Setting Editing Window..............................|netrw-C| +10. Problems and Fixes....................................|netrw-problems| +11. Debugging Netrw Itself................................|netrw-debug| +12. History...............................................|netrw-history| +13. Todo..................................................|netrw-todo| +14. Credits...............................................|netrw-credits| {Vi does not have any of this} @@ -142,13 +146,13 @@ and has lines resembling > < Windows' ftp doesn't support .netrc; however, one may have in one's .vimrc: > - let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' + let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\MyUserName\MACHINE' < -Netrw will substitute the host's machine name for MACHINE from the url it is +Netrw will substitute the host's machine name for "MACHINE" from the url it is attempting to open, and so one may specify > userid password -for each site in a separate file in c:\Users\Myself\. +for each site in a separate file: c:\Users\MyUserName\MachineName. Now about browsing -- when you just want to look around before editing a file. For browsing on your current host, just "edit" a directory: > @@ -282,7 +286,7 @@ SOURCING *netrw-source* {{{2 :Nsource "scp://[user@]machine[[:#]port]/path" uses scp :Nsource "sftp://[user@]machine/path" uses sftp -DIRECTORY LISTING *netrw-trailingslash* *netrw-dirlist* {{{2 +DIRECTORY LISTING *netrw-trailingslash* *netrw-dirlist* {{{2 One may browse a directory to get a listing by simply attempting to edit the directory: > @@ -317,6 +321,8 @@ CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass* {{{2 :call NetUserPass("uid") -- prompts for password :call NetUserPass("uid","password") -- sets global uid and password +(Related topics: |ftp| |netrw-userpass| |netrw-start|) + NETRW VARIABLES AND SETTINGS *netrw-variables* {{{2 (Also see: |netrw-browser-var| : netrw browser option variables @@ -538,8 +544,8 @@ netrw will substitute the current machine name requested for ftp connections for MACHINE. Hence one can have multiple machine.ftp files containing login and password for ftp. Example: > - let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' - vim ftp://myhost.somewhere.net/ + let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' + vim ftp://myhost.somewhere.net/ will use a file > C:\Users\Myself\myhost.ftp < @@ -923,6 +929,7 @@ itself: endfunction endif > +(Related topics: |ftp| |netrw-userpass| |netrw-start|) ============================================================================== 9. Browsing *netrw-browsing* *netrw-browse* *netrw-help* {{{1 @@ -1086,8 +1093,8 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 <2-leftmouse> (gvim only) when: * in a netrw-selected file, AND * |g:netrw_retmap| == 1 AND - * the user doesn't already have a <2-leftmouse> mapping - defined before netrw is autoloaded, + * the user doesn't already have a <2-leftmouse> + mapping defined before netrw is autoloaded, then a double clicked leftmouse button will return to the netrw browser window. See |g:netrw_retmap|. <s-leftmouse> (gvim only) like mf, will mark files @@ -1183,17 +1190,18 @@ cursor at the top. Associated setting variables: |g:netrw_alto| |g:netrw_winsize| -Related Actions |netrw-cr| |netrw-p| |netrw-t| |netrw-T| |netrw-v| +Related Actions |netrw-cr| |netrw-p| |netrw-t| |netrw-v| Associated setting variables: |g:netrw_alto| control above/below splitting |g:netrw_winsize| control initial sizing -BROWSING WITH A NEW TAB *netrw-t* *netrw-T* {{{2 +BROWSING WITH A NEW TAB *netrw-t* Normally one enters a file or directory using the <cr>. The "t" map allows one to open a new window holding the new directory listing or file in -a new tab. The "T" version puts the file or directory into a background tab -(see |gT|) +a new tab. + +If you'd like to have the new listing in a background tab, use |gT|. Related Actions |netrw-cr| |netrw-o| |netrw-p| |netrw-v| Associated setting variables: @@ -1213,7 +1221,7 @@ will split the screen, but the same buffer will be shown twice. Associated setting variable: |g:netrw_altv| |g:netrw_winsize| -Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v| +Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-v| Associated setting variables: |g:netrw_altv| control right/left splitting |g:netrw_winsize| control initial sizing @@ -1276,6 +1284,8 @@ To change directory back to a bookmarked directory, use {cnt}gb Any count may be used to reference any of the bookmarks. +Note that |netrw-qb| shows both bookmarks and history; to go +to a location stored in the history see |netrw-u| and |netrw-U|. Related Topics: |netrw-mB| how to delete bookmarks @@ -1291,6 +1301,13 @@ list (unless |g:netrw_dirhistmax| is zero; by default, it's ten). With the "u" map, one can change to an earlier directory (predecessor). To do the opposite, see |netrw-U|. +The "u" map also accepts counts to go back in the history several slots. +For your convenience, |netrw-qb| lists the history number which can be +re-used in that count. + +See |g:netrw_dirhistmax| for how to control the quantity of history stack +slots. + CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir* {{{2 @@ -1298,6 +1315,11 @@ With the "U" map, one can change to a later directory (successor). This map is the opposite of the "u" map. (see |netrw-u|) Use the q map to list both the bookmarks and history. (see |netrw-qb|) +The "U" map also accepts counts to go forward in the history several slots. + +See |g:netrw_dirhistmax| for how to control the quantity of history stack +slots. + NETRW CLEAN *netrw-clean* *:NetrwClean* @@ -1674,7 +1696,7 @@ As a quick shortcut, one may press > to toggle between hiding files which begin with a period (dot) and not hiding them. -Associated setting variable: |g:netrw_list_hide| +Associated setting variable: |g:netrw_list_hide| |g:netrw_hide| Associated topics: |netrw-a| |netrw-ctrl-h| |netrw-mh| IMPROVING BROWSING *netrw-listhack* *netrw-ssh-hack* {{{2 @@ -1785,9 +1807,10 @@ Associated setting variables: |g:netrw_localmkdir| |g:netrw_mkdir_cmd| MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* {{{2 By default, |g:netrw_keepdir| is 1. This setting means that the current -directory will not track the browsing directory. +directory will not track the browsing directory. (done for backwards +compatibility with v6's file explorer). -Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory to +Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory track netrw's browsing directory. However, given the default setting for g:netrw_keepdir of 1 where netrw @@ -1810,6 +1833,7 @@ maps make use of marked files: |netrw-mc| Copy marked files to target |netrw-md| Apply vimdiff to marked files |netrw-me| Edit marked files + |netrw-mF| Unmark marked files |netrw-mg| Apply vimgrep to marked files |netrw-mm| Move marked files |netrw-mp| Print marked files @@ -1817,6 +1841,7 @@ maps make use of marked files: |netrw-mT| Generate tags using marked files |netrw-mx| Apply shell command to marked files |netrw-mz| Compress/Decompress marked files + |netrw-qF| Mark files using quickfix list |netrw-O| Obtain marked files |netrw-R| Rename marked files @@ -1844,6 +1869,22 @@ commands which operate on marked files use one or the other of the marked file lists. +UNMARKING FILES *netrw-mF* {{{2 + (also see |netrw-mf|) + +This command will unmark all files in the current buffer. One may also use +mf (|netrw-mf|) on a specific file to unmark just that file. + + +MARKING FILES BY QUICKFIX LIST *netrw-qF* + (also see |netrw-mf|) + +One may convert the |quickfix-error-lists| into a marked file list using +"qF". You may then proceed with commands such as me (|netrw-me|) to +edit them. Quickfix error lists are generated, for example, by calls +to |:vimgrep|. + + MARKING FILES BY REGULAR EXPRESSION *netrw-mr* {{{2 (also see |netrw-mf|) @@ -1902,17 +1943,27 @@ MARKED FILES: EDITING *netrw-me* {{{2 This command will place the marked files on the |arglist| and commence editing them. One may return the to explorer window with |:Rexplore|. +(use |:n| and |:p| to edit next and previous files in the arglist) MARKED FILES: GREP *netrw-mg* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) (uses the global marked file list) -This command will apply |:vimgrep| to the marked files. The command will ask -for the requested pattern; one may enter: > +This command will apply |:vimgrep| to the marked files. +The command will ask for the requested pattern; one may then enter: > + /pattern/[g][j] ! /pattern/[g][j] pattern < +In the cases of "j" option usage as shown above, "mg" will winnow the current +marked file list to just those possessing the specified pattern. +Thus, one may use > + mr ...file-pattern + mg ..contents-pattern +to have a marked file list satisfying the file-pattern but containing the +desried contents-pattern. + MARKED FILES: HIDING AND UNHIDING BY SUFFIX *netrw-mh* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) (uses the local marked file list) @@ -1958,6 +2009,36 @@ MARKED FILES: SOURCING *netrw-ms* {{{2 Netrw will source the marked files (using vim's |:source| command) +MARKED FILES: SETTING THE TARGET DIRECTORY *netrw-mt* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + +Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|): + + * If the cursor is atop a file name, then the netrw window's currently + displayed directory is used for the copy/move-to target. + + * Also, if the cursor is in the banner, then the netrw window's currently + displayed directory is used for the copy/move-to target. + Unless the target already is the current directory. In which case, + remove the target. + + * However, if the cursor is atop a directory name, then that directory is + used for the copy/move-to target + +There is only one copy/move-to target per vim session; ie. the target is a +script variable (see |s:var|) and is shared between all netrw windows (in an +instance of vim). + +When using menus and gvim, netrw provides a "Targets" entry which allows one +to pick a target from the list of bookmarks and history. + +Related topics: + Marking Files......................................|netrw-mf| + Marking Files by Regular Expression................|netrw-mr| + Marked Files: Target Directory Using Bookmarks.....|netrw-Tb| + Marked Files: Target Directory Using History.......|netrw-Th| + + MARKED FILES: TAGGING *netrw-mT* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) (uses the global marked file list) @@ -1983,24 +2064,37 @@ edit the desired file and go to the tag. Associated setting variables: |g:netrw_ctags| |g:netrw_ssh_cmd| +MARKED FILES: TARGET DIRECTORY USING BOOKMARKS *netrw-Tb* {{{2 -MARKED FILES: SETTING THE TARGET DIRECTORY *netrw-mt* {{{2 - (See |netrw-mf| and |netrw-mr| for how to mark files) +Sets the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|). -Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|): +The |netrw-qb| map will give you a list of bookmarks (and history). +One may choose one of the bookmarks to become your marked file +target by using [count]Tb (default count: 1). - * if the cursor is atop a file name, then the netrw window's currently - displayed directory is used for the copy/move-to target. +Related topics: + Listing Bookmarks and History......................|netrw-qb| + Marked Files: Setting The Target Directory.........|netrw-mt| + Marked Files: Target Directory Using History.......|netrw-Th| + Marking Files......................................|netrw-mf| + Marking Files by Regular Expression................|netrw-mr| - * also, if the cursor is in the banner, then the netrw window's currently - displayed directory is used for the copy/move-to target. - * however, if the cursor is atop a directory name, then that directory is - used for the copy/move-to target +MARKED FILES: TARGET DIRECTORY USING HISTORY *netrw-Th* {{{2 + +Sets the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|). + +The |netrw-qb| map will give you a list of history (and bookmarks). +One may choose one of the history entries to become your marked file +target by using [count]Th (default count: 0; ie. the current directory). + +Related topics: + Listing Bookmarks and History......................|netrw-qb| + Marked Files: Setting The Target Directory.........|netrw-mt| + Marked Files: Target Directory Using Bookmarks.....|netrw-Tb| + Marking Files......................................|netrw-mf| + Marking Files by Regular Expression................|netrw-mr| -There is only one copy/move-to target per vim session; ie. the target is a -script variable (see |s:var|) and is shared between all netrw windows (in an -instance of vim). MARKED FILES: UNMARKING *netrw-mu* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) @@ -2020,21 +2114,25 @@ your browsing preferences. (see also: |netrw-settings|) --- ----------- Var Explanation --- ----------- -< *g:netrw_alto* change from above splitting to below splitting +< *g:netrw_alto* change from above splitting to below splitting by setting this variable (see |netrw-o|) default: =&sb (see |'sb'|) - *g:netrw_altv* change from left splitting to right splitting + *g:netrw_altv* change from left splitting to right splitting by setting this variable (see |netrw-v|) default: =&spr (see |'spr'|) - *g:netrw_banner* enable/suppress the banner + *g:netrw_banner* enable/suppress the banner =0: suppress the banner =1: banner is enabled (default) NOTE: suppressing the banner is a new feature which may cause problems. - *g:netrw_browse_split* when browsing, <cr> will open the file by: + *g:netrw_bannerbackslash* if this variable exists and is not zero, the + banner will be displayed with backslashes + rather than forward slashes. + + *g:netrw_browse_split* when browsing, <cr> will open the file by: =0: re-using the same window =1: horizontally splitting the window first =2: vertically splitting the window first @@ -2044,7 +2142,7 @@ your browsing preferences. (see also: |netrw-settings|) to get vertical splitting instead of horizontal splitting. - *g:netrw_browsex_viewer* specify user's preference for a viewer: > + *g:netrw_browsex_viewer* specify user's preference for a viewer: > "kfmclient exec" "gnome-open" < If > @@ -2053,15 +2151,15 @@ your browsing preferences. (see also: |netrw-settings|) a script/function to handle the given extension. (see |netrw_filehandler|). - *g:netrw_chgperm* Unix/Linux: "chmod PERM FILENAME" + *g:netrw_chgperm* Unix/Linux: "chmod PERM FILENAME" Windows: "cacls FILENAME /e /p PERM" Used to change access permission for a file. - *g:netrw_compress* ="gzip" + *g:netrw_compress* ="gzip" Will compress marked files with this command - *g:Netrw_corehandler* Allows one to specify something additional + *g:Netrw_corehandler* Allows one to specify something additional to do when handling <core> files via netrw's browser's "x" command (see |netrw-x|). If present, g:Netrw_corehandler specifies @@ -2070,10 +2168,11 @@ your browsing preferences. (see also: |netrw-settings|) is required its holding a function reference) - *g:netrw_ctags* ="ctags" - The default external program used to create tags + *g:netrw_ctags* ="ctags" + The default external program used to create + tags - *g:netrw_cursor* = 2 (default) + *g:netrw_cursor* = 2 (default) This option controls the use of the |'cursorline'| (cul) and |'cursorcolumn'| (cuc) settings by netrw: @@ -2091,7 +2190,7 @@ your browsing preferences. (see also: |netrw-settings|) cul : |'cursorline'| locally set cuc : |'cursorcolumn'| locally set - *g:netrw_decompress* = { ".gz" : "gunzip" , + *g:netrw_decompress* = { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"} @@ -2112,7 +2211,7 @@ your browsing preferences. (see also: |netrw-settings|) 1: warnings 2: errors - *g:netrw_fastbrowse* =0: slow speed directory browsing; + *g:netrw_fastbrowse* =0: slow speed directory browsing; never re-uses directory listings, always obtains directory listings. =1: medium speed directory browsing; @@ -2136,10 +2235,10 @@ your browsing preferences. (see also: |netrw-settings|) trading off accuracy (ie. up-to-date listing) versus speed. - *g:netrw_fname_escape* =' ?&;%' + *g:netrw_fname_escape* =' ?&;%' Used on filenames before remote reading/writing - *g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings + *g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings that can show up as "directories" and "files" in the listing. This pattern is used to remove such embedded messages. By default its @@ -2152,19 +2251,19 @@ your browsing preferences. (see also: |netrw-settings|) : connect to address [0-9a-fA-F:]* : No route to host$' - *g:netrw_ftp_list_cmd* options for passing along to ftp for directory + *g:netrw_ftp_list_cmd* options for passing along to ftp for directory listing. Defaults: unix or g:netrw_cygwin set: : "ls -lF" otherwise "dir" - *g:netrw_ftp_sizelist_cmd* options for passing along to ftp for directory + *g:netrw_ftp_sizelist_cmd* options for passing along to ftp for directory listing, sorted by size of file. Defaults: unix or g:netrw_cygwin set: : "ls -slF" otherwise "dir" - *g:netrw_ftp_timelist_cmd* options for passing along to ftp for directory + *g:netrw_ftp_timelist_cmd* options for passing along to ftp for directory listing, sorted by time of last modification. Defaults: unix or g:netrw_cygwin set: : "ls -tlF" @@ -2175,61 +2274,64 @@ your browsing preferences. (see also: |netrw-settings|) These characters in directory names are escaped before applying glob() - *g:netrw_hide* if true, the hiding list is used + *g:netrw_hide* Controlled by the "a" map (see |netrw-a|) + =0 : show all + =1 : show not-hidden files + =2 : show hidden files only default: =0 - *g:netrw_home* The home directory for where bookmarks and + *g:netrw_home* The home directory for where bookmarks and history are saved (as .netrwbook and .netrwhist). default: the first directory on the |'runtimepath'| - *g:netrw_keepdir* =1 (default) keep current directory immune from + *g:netrw_keepdir* =1 (default) keep current directory immune from the browsing directory. =0 keep the current directory the same as the browsing directory. The current browsing directory is contained in b:netrw_curdir (also see |netrw-c|) - *g:netrw_list_cmd* command for listing remote directories + *g:netrw_list_cmd* command for listing remote directories default: (if ssh is executable) "ssh HOSTNAME ls -FLa" - *g:netrw_liststyle* Set the default listing style: + *g:netrw_liststyle* Set the default listing style: = 0: thin listing (one file per line) = 1: long listing (one file per line with time stamp information and file size) = 2: wide listing (multiple files in columns) = 3: tree style listing - *g:netrw_list_hide* comma separated pattern list for hiding files + *g:netrw_list_hide* comma separated pattern list for hiding files Patterns are regular expressions (see |regexp|) Example: let g:netrw_list_hide= '.*\.swp$' default: "" - *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin + *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin ="copy" Windows Copies marked files (|netrw-mf|) to target directory (|netrw-mt|, |netrw-mc|) - *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin + *g:netrw_localmkdir* command for making a local directory + default: "mkdir" + + *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin ="move" Windows Moves marked files (|netrw-mf|) to target directory (|netrw-mt|, |netrw-mm|) - *g:netrw_localmkdir* command for making a local directory - default: "mkdir" - - *g:netrw_localrmdir* remove directory command (rmdir) + *g:netrw_localrmdir* remove directory command (rmdir) default: "rmdir" - *g:netrw_maxfilenamelen* =32 by default, selected so as to make long + *g:netrw_maxfilenamelen* =32 by default, selected so as to make long listings fit on 80 column displays. If your screen is wider, and you have file or directory names longer than 32 bytes, you may set this option to keep listings columnar. - *g:netrw_mkdir_cmd* command for making a remote directory + *g:netrw_mkdir_cmd* command for making a remote directory via ssh (also see |g:netrw_remote_mkdir|) default: "ssh USEPORT HOSTNAME mkdir" @@ -2246,11 +2348,11 @@ your browsing preferences. (see also: |netrw-settings|) evaluation will be suppressed (see |'ballooneval'|) - *g:netrw_remote_mkdir* command for making a local directory + *g:netrw_remote_mkdir* command for making a local directory via ftp (also see |g:netrw_mkdir_cmd|) default: "mkdir" - *g:netrw_retmap* if it exists and is set to one, then: + *g:netrw_retmap* if it exists and is set to one, then: * if in a netrw-selected file, AND * no normal-mode <2-leftmouse> mapping exists, then the <2-leftmouse> will be mapped for easy @@ -2269,22 +2371,22 @@ your browsing preferences. (see also: |netrw-settings|) default: =0 - *g:netrw_rm_cmd* command for removing files + *g:netrw_rm_cmd* command for removing files default: "ssh USEPORT HOSTNAME rm" - *g:netrw_rmdir_cmd* command for removing directories + *g:netrw_rmdir_cmd* command for removing directories default: "ssh USEPORT HOSTNAME rmdir" - *g:netrw_rmf_cmd* command for removing softlinks + *g:netrw_rmf_cmd* command for removing softlinks default: "ssh USEPORT HOSTNAME rm -f" - *g:netrw_sort_by* sort by "name", "time", or "size" + *g:netrw_sort_by* sort by "name", "time", or "size" default: "name" - *g:netrw_sort_direction* sorting direction: "normal" or "reverse" + *g:netrw_sort_direction* sorting direction: "normal" or "reverse" default: "normal" - *g:netrw_sort_options* sorting is done using |:sort|; this + *g:netrw_sort_options* sorting is done using |:sort|; this variable's value is appended to the sort command. Thus one may ignore case, for example, with the following in your @@ -2292,14 +2394,14 @@ your browsing preferences. (see also: |netrw-settings|) let g:netrw_sort_options="i" < default: "" - *g:netrw_sort_sequence* when sorting by name, first sort by the + *g:netrw_sort_sequence* when sorting by name, first sort by the comma-separated pattern sequence. Note that the filigree added to indicate filetypes should be accounted for in your pattern. default: '[\/]$,*,\.bak$,\.o$,\.h$, \.info$,\.swp$,\.obj$' - *g:netrw_special_syntax* If true, then certain files will be shown + *g:netrw_special_syntax* If true, then certain files will be shown using special syntax in the browser: netrwBak : *.bak @@ -2321,24 +2423,24 @@ your browsing preferences. (see also: |netrw-settings|) < into one's <.vimrc> to use one's own preferences. - *g:netrw_ssh_cmd* One may specify an executable command - to use instead of ssh for remote actions - such as listing, file removal, etc. - default: ssh - - *g:netrw_ssh_browse_reject* ssh can sometimes produce unwanted lines, + *g:netrw_ssh_browse_reject* ssh can sometimes produce unwanted lines, messages, banners, and whatnot that one doesn't want masquerading as "directories" and "files". Use this pattern to remove such embedded messages. By default its value is: '^total\s\+\d\+$' + *g:netrw_ssh_cmd* One may specify an executable command + to use instead of ssh for remote actions + such as listing, file removal, etc. + default: ssh + - *g:netrw_tmpfile_escape* =' &;' + *g:netrw_tmpfile_escape* =' &;' escape() is applied to all temporary files to escape these characters. - *g:netrw_timefmt* specify format string to vim's strftime(). + *g:netrw_timefmt* specify format string to vim's strftime(). The default, "%c", is "the preferred date and time representation for the current locale" according to my manpage entry for @@ -2348,7 +2450,7 @@ your browsing preferences. (see also: |netrw-settings|) " %a %Y-%m-%d %I-%M-%S %p" default: "%c" - *g:netrw_use_noswf* netrw normally avoids writing swapfiles + *g:netrw_use_noswf* netrw normally avoids writing swapfiles for browser buffers. However, under some systems this apparently is causing nasty ml_get errors to appear; if you're getting @@ -2356,7 +2458,7 @@ your browsing preferences. (see also: |netrw-settings|) let g:netrw_use_noswf= 0 in your .vimrc. - *g:netrw_winsize* specify initial size of new windows made with + *g:netrw_winsize* specify initial size of new windows made with "o" (see |netrw-o|), "v" (see |netrw-v|), |:Hexplore| or |:Vexplore|. The g:netrw_winsize is an integer describing the percentage of the @@ -2367,7 +2469,7 @@ your browsing preferences. (see also: |netrw-settings|) or columns will be used for the new window. default: 50 (for 50%) - *g:netrw_xstrlen* Controls how netrw computes string lengths, + *g:netrw_xstrlen* Controls how netrw computes string lengths, including multi-byte characters' string length. (thanks to N Weibull, T Mechelynck) =0: uses Vim's built-in strlen() @@ -2383,7 +2485,7 @@ your browsing preferences. (see also: |netrw-settings|) immediately preceded by lam, one otherwise, etc) - *g:NetrwTopLvlMenu* This variable specifies the top level + *g:NetrwTopLvlMenu* This variable specifies the top level menu name; by default, it's "Netrw.". If you wish to change this, do so in your .vimrc. @@ -2483,7 +2585,7 @@ has been modified, and there's only one window with that buffer, then the user will be asked if s/he wishes to save the buffer first (yes, no, or cancel). -Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v| +Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-v| Associated setting variables: |g:netrw_alto| control above/below splitting |g:netrw_altv| control right/left splitting @@ -2498,6 +2600,15 @@ hit the <cr> when atop the ./ directory entry in the listing. One may also refresh a local directory by using ":e .". +REVERSING SORTING ORDER *netrw-r* *netrw-reverse* {{{2 + +One may toggle between normal and reverse sorting order by pressing the +"r" key. + +Related topics: |netrw-s| +Associated setting variable: |g:netrw_sort_direction| + + RENAMING FILES OR DIRECTORIES *netrw-move* *netrw-rename* *netrw-R* {{{2 If there are no marked files: (see |netrw-mf|) @@ -2528,15 +2639,6 @@ One may rename a block of files and directories by selecting them with the V (|linewise-visual|). -REVERSING SORTING ORDER *netrw-r* *netrw-reverse* {{{2 - -One may toggle between normal and reverse sorting order by pressing the -"r" key. - -Related topics: |netrw-s| -Associated setting variable: |g:netrw_sort_direction| - - SELECTING SORTING STYLE *netrw-s* *netrw-sort* {{{2 One may select the sorting style by name, time, or (file) size. The "s" map @@ -2620,9 +2722,9 @@ Associated setting variables: |g:netrw_chgwin| P5. My times come up oddly in local browsing Does your system's strftime() accept the "%c" to yield dates - such as "Sun Apr 27 11:49:23 1997"? If not, do a "man strftime" - and find out what option should be used. Then put it into - your |.vimrc|: > + such as "Sun Apr 27 11:49:23 1997"? If not, do a + "man strftime" and find out what option should be used. Then + put it into your |.vimrc|: > let g:netrw_timefmt= "%X" (where X is the option) < @@ -2895,6 +2997,70 @@ which is loaded automatically at startup (assuming :set nocp). ============================================================================== 12. History *netrw-history* {{{1 + v149: Apr 18, 2013 * in wide listing format, now have maps for + w and b to move to next/previous file + Apr 26, 2013 * one may now copy files in the same + directory; netrw will issue requests for + what names the files should be copied under + Apr 29, 2013 * Trying Benzinger's problem again. Seems + that commenting out the BufEnter and + installing VimEnter (only) works. Weird + problem! (tree listing, vim -O Dir1 Dir2) + May 01, 2013 * :Explore ftp://... wasn't working. Fixed. + May 02, 2013 * introduced |g:netrw_bannerbackslash| as + requested by Paul Domaskis. + May 18, 2013 * More fixes for windows (not cygwin) + v148: Apr 16, 2013 * changed Netrw's Style menu to allow direct + choice of listing style, hiding style, and + sorting style + v147: Nov 24, 2012 * (James McCoy) Even with g:netrw_dirhistmax + at zero, the .vim/ directory would be + created to support history/bookmarks. I've + gone over netrw to suppress history and + bookmarking when g:netrw_dirhistmax is zero. + For instance, the menus will display + (disabled) when attempts to use + bookmarks/history are made. + Nov 29, 2012 * (Kim Jang-hwan) reported that with + g:Align_xstrlen set to 3 that the cursor was + moved (linewise) after invocation. This + problem also afflicted netrw. + (see |g:netrw_xstrlen|) Fixed. + Jan 21, 2013 * (mattn) provided a patch to insert some + endifs needed with the code implementing + |netrw-O|. + Jan 24, 2013 * (John Szakmeister) found that remote file + editing resulted in filetype options being + overwritten by NetrwOptionRestore(). I + moved filetype detect from NetrwGetFile() + to NetrwOptionRestore. + Feb 17, 2013 * (Yukhiro Nakadaira) provided a patch + correcting some syntax errors. + Feb 28, 2013 * (Ingo Karkat) provided a patch preventing + receipt of an |E95| when revisiting a + file://... style url. + Mar 18, 2013 * (Gary Johnson) pointed out that changing + cedit to <Esc> caused problems with visincr; + the cedit setting is now bypassed in netrw too. + Apr 02, 2013 * (Paul Domaskis) reported an undefined + variable error (s:didstarstar) was + occurring. It is now defined at + initialization. + * included additional sanity checking for the + marked file functions. + * included |netrw-qF| and special "j" option + handling for |netrw-mg| + Apr 12, 2013 * |netrw-u| and |netrw-U| now handle counts + * the former mapping for "T" has been removed; + in its place are new maps, |netrw-Tb| and |netrw-Th|. + * the menu now supports a "Targets" entry for + easier target selection. (see |netrw-mt|) + * (Paul Domaskis) reported some problems with + moving/copying files under Windows' gvim + (ie. not cygwin). Fixed. + * (Paul Mueller) provided a patch to get + start and rundll working via |netrw-gx| + by bypassing the user's |'shellslash'| option. v146: Oct 20, 2012 * (David Kotchan) reported that under Windows, directories named with unusual characters such as "#" or "$" were not being listed @@ -2904,6 +3070,10 @@ which is loaded automatically at startup (assuming :set nocp). Netrw will now |:bwipe| netrw buffers upon editing a file if g:netrw_fastbrowse is zero and its not in tree listing style. + * fixed a bug with s:NetrwInit() that + prevented initialization with |Lists| and + |Dictionaries|. + * |netrw-mu| now unmarks marked-file lists v145: Apr 05, 2012 * moved some command from a g:netrw_local_... format to g:netwr_local... format * included some NOTE level messages about diff --git a/en/pi_paren.txt b/en/pi_paren.txt index dfa2e7150..71727aa05 100644 --- a/en/pi_paren.txt +++ b/en/pi_paren.txt @@ -1,4 +1,4 @@ -*pi_paren.txt* For Vim version 7.3. Last change: 2008 Jun 16 +*pi_paren.txt* For Vim version 7.3. Last change: 2013 May 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -46,7 +46,10 @@ are: closed folds. - 'synmaxcol' times 2 bytes before or after the cursor to avoid a delay in a long line with syntax highlighting. - +- A timeout of 300 msec (60 msec in Insert mode). This can be changed with the + g:matchparen_timeout and g:matchparen_insert_timeout variables and their + buffer-local equivalents b:matchparen_timeout and + b:matchparen_insert_timeout. If you would like the |%| command to work better, the matchit plugin can be used, see |matchit-install|. This plugin also helps to skip matches in diff --git a/en/pi_tar.txt b/en/pi_tar.txt index 1ff4d7c4c..ad23413c6 100644 --- a/en/pi_tar.txt +++ b/en/pi_tar.txt @@ -1,10 +1,10 @@ -*pi_tar.txt* For Vim version 7.3. Last change: 2012 Jan 17 +*pi_tar.txt* For Vim version 7.3. Last change: 2013 Apr 17 +====================+ | Tar File Interface | +====================+ -Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> +Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) Copyright 2005-2012: *tar-copyright* The VIM LICENSE (see |copyright|) applies to the files in this @@ -50,6 +50,21 @@ Copyright 2005-2012: *tar-copyright* *g:tar_extractcmd* , which by default is > "tar -xf" < + *:TarDiff* + DIFFERENCING SUPPORT~ + + :TarDiff [filename] + + This command will attempt to show the differences between the tarball + version of a file and the associated file on the system. In order to + find that file on the system, the script uses the path associated with + the file mentioned in the tarball. If the current directory is not + correct for that path, :TarDiff will fail to find the associated file. + + If the [filename] is given, that that filename (and path) will be used + to specify the associated file. + + PREVENTING LOADING~ If for some reason you do not wish to use vim to examine tar'd files, diff --git a/en/pi_zip.txt b/en/pi_zip.txt index d976055ea..e72d981ce 100644 --- a/en/pi_zip.txt +++ b/en/pi_zip.txt @@ -1,12 +1,12 @@ -*pi_zip.txt* For Vim version 7.3. Last change: 2012 Jan 17 +*pi_zip.txt* For Vim version 7.3. Last change: 2013 Apr 17 +====================+ | Zip File Interface | +====================+ -Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> +Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright* +Copyright: Copyright (C) 2005-2012 Charles E Campbell *zip-copyright* The VIM LICENSE (see |copyright|) applies to the files in this package, including zipPlugin.vim, zip.vim, and pi_zip.vim. except use "zip.vim" instead of "VIM". Like anything else that's free, zip.vim @@ -85,8 +85,13 @@ Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright* ============================================================================== 4. History *zip-history* {{{1 + v26 Nov 15, 2012 * (Jason Spiro) provided a lot of new extensions that + are synonyms for .zip v25 Jun 27, 2011 * using keepj with unzip -Z (consistent with the -p variant) + * (Ben Staniford) now uses + has("win32unix") && executable("cygpath") + before converting to cygwin-style paths v24 Jun 21, 2010 * (Cédric Bosdonnat) unzip seems to need its filenames fnameescape'd as well as shellquote'd * (Motoya Kurotsu) inserted keepj before 0d to protect diff --git a/en/quickfix.txt b/en/quickfix.txt index 9dd3baae0..47e110cb0 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.3. Last change: 2011 May 10 +*quickfix.txt* For Vim version 7.3. Last change: 2013 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -574,6 +574,8 @@ commands can be combined to create a NewGrep command: > 'ignorecase' applies. To overrule it put |/\c| in the pattern to ignore case or |/\C| to match case. 'smartcase' is not used. + If {pattern} is empty (e.g. // is specified), the last + used search pattern is used. |last-pattern| When a number is put before the command this is used as the maximum number of matches to find. Use diff --git a/en/quickref.txt b/en/quickref.txt index 5f76f71e6..ebb87cd9c 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.3. Last change: 2013 Feb 06 +*quickref.txt* For Vim version 7.3. Last change: 2013 May 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -691,6 +691,7 @@ Short explanation of each option: *option-list* 'fileencodings' 'fencs' automatically detected character encodings 'fileformat' 'ff' file format used for file I/O 'fileformats' 'ffs' automatically detected values for 'fileformat' +'fileignorecase' 'fic' ignore case when using file names 'filetype' 'ft' type of file, used for autocommands 'fillchars' 'fcs' characters to use for displaying special items 'fkmap' 'fk' Farsi keyboard mapping @@ -823,6 +824,7 @@ Short explanation of each option: *option-list* 'quoteescape' 'qe' escape characters used in a string 'readonly' 'ro' disallow writing the buffer 'redrawtime' 'rdt' timeout for 'hlsearch' and |:match| highlighting +'regexpengine' 're' default regexp engine to use 'relativenumber' 'rnu' show relative line number in front of each line 'remap' allow mappings to work recursively 'report' threshold for reporting nr. of lines changed diff --git a/en/starting.txt b/en/starting.txt index 84dc78b31..41f6d8c95 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.3. Last change: 2012 Mar 16 +*starting.txt* For Vim version 7.3. Last change: 2013 May 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -438,6 +438,10 @@ a slash. Thus "-R" means recovery and "-/R" readonly. option should be used when Vim is started by a program that will wait for the edit session to finish (e.g., mail or readnews). See |amiga-window|. + + MS-Windows: This option is not supported. However, when + running Vim with an installed vim.bat or gvim.bat file it + works. {not in Vi} diff --git a/en/syntax.txt b/en/syntax.txt index b48307d01..d0f271b08 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.3. Last change: 2013 Jan 30 +*syntax.txt* For Vim version 7.3. Last change: 2013 May 31 VIM REFERENCE MANUAL by Bram Moolenaar @@ -381,7 +381,11 @@ This is not a syntax file itself, but a script that converts the current window into HTML. Vim opens a new window in which it builds the HTML file. After you save the resulting file, you can view it with any browser. The -colors should be exactly the same as you see them in Vim. +colors should be exactly the same as you see them in Vim. You can jump to +specific lines by adding (for example) #L123 or #123 to the end of the URL in +your browser's address bar (#123 only with javascript support). And with +|g:html_dynamic_folds| enabled, you can show or hide the text that is folded +in Vim. You are not supposed to set the 'filetype' or 'syntax' option to "2html"! Source the script to convert the current file: > @@ -424,7 +428,11 @@ and last line to be converted. Example, using the last set Visual area: > |g:html_diff_one_file| is set, :TOhtml will convert all windows which are part of the diff in the current tab and place them side-by-side in a <table> element - in the generated HTML. + in the generated HTML. When this happens you can jump + to lines in specific windows with (for example) #W1L42 + for line 42 in the first diffed window, or #W3L87 for + line 87 in the third. Omitting the window ID will + default to the first window if javascript is enabled. Examples: > @@ -999,6 +1007,14 @@ comment highlighting, add the following line to your startup file: > The ColdFusion syntax file is based on the HTML syntax file. +CPP *cpp.vim* *ft-cpp-syntax* + +Most of things are same as |ft-c-syntax|. + +Variable Highlight ~ +cpp_no_c11 don't highlight C++11 standard items + + CSH *csh.vim* *ft-csh-syntax* This covers the shell named "csh". Note that on some systems tcsh is actually @@ -1231,17 +1247,17 @@ to your startup file. ERLANG *erlang.vim* *ft-erlang-syntax* -The erlang highlighting supports Erlang (ERicsson LANGuage). -Erlang is case sensitive and default extension is ".erl". +Erlang is a functional programming language developed by Ericsson. Files with +the following extensions are recognized as Erlang files: erl, hrl, yaws. -If you want to disable keywords highlighting, put in your .vimrc: > - :let erlang_keywords = 1 -If you want to disable built-in-functions highlighting, put in your -.vimrc file: > - :let erlang_functions = 1 -If you want to disable special characters highlighting, put in -your .vimrc: > - :let erlang_characters = 1 +The BIFs (built-in functions) are highlighted by default. To disable this, +put the following line in your vimrc: > + + :let g:erlang_highlight_bifs = 0 + +To enable highlighting some special atoms, put this in your vimrc: > + + :let g:erlang_highlight_special_atoms = 1 FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax* @@ -2061,7 +2077,7 @@ Therefore, you should be careful about not using more space between sentences than you intend to have in your final document. For this reason, the common practice is to insert a carriage return immediately after all punctuation marks. If you want to have "even" text in your final processed output, you -need to maintaining regular spacing in the input text. To mark both trailing +need to maintain regular spacing in the input text. To mark both trailing spaces and two or more spaces after a punctuation as an error, use: > :let nroff_space_errors = 1 @@ -2278,7 +2294,7 @@ For highlighting parent error ] or ): > let php_parent_error_close = 1 -For skipping an php end tag, if there exists an open ( or [ without a closing +For skipping a php end tag, if there exists an open ( or [ without a closing one: > let php_parent_error_open = 1 @@ -2440,24 +2456,33 @@ Pascal. Use this if you don't use assembly and Pascal: > PYTHON *python.vim* *ft-python-syntax* -There are four options to control Python syntax highlighting. +There are six options to control Python syntax highlighting. For highlighted numbers: > - :let python_highlight_numbers = 1 + :let python_no_number_highlight = 1 For highlighted builtin functions: > - :let python_highlight_builtins = 1 + :let python_no_builtin_highlight = 1 For highlighted standard exceptions: > - :let python_highlight_exceptions = 1 + :let python_no_exception_highlight = 1 + +For highlighted doctests and code inside: > + :let python_no_doctest_highlight = 1 +or > + :let python_no_doctest_code_highlight = 1 +(first option implies second one). For highlighted trailing whitespace and mix of spaces and tabs: > - :let python_highlight_space_errors = 1 + :let python_space_error_highlight = 1 If you want all possible Python highlighting (the same as setting the -preceding three options): > +preceding last option and unsetting all other ones): > :let python_highlight_all = 1 +Note: only existence of these options matter, not their value. You can replace + 1 above with anything. + QUAKE *quake.vim* *ft-quake-syntax* @@ -2911,6 +2936,35 @@ if any, is the text at the top of the screen supposed to be in?). Another cause of slow highlighting is due to syntax-driven folding; see |tex-folding| for a way around this. + *g:tex_fast* + +Finally, if syntax highlighting is still too slow, you may set > + + :let g:tex_fast= "" + +in your .vimrc. Used this way, the g:tex_fast variable causes the syntax +highlighting script to avoid defining any regions and associated +synchronization. The result will be much faster syntax highlighting; the +price: you will no longer have as much highlighting or any syntax-based +folding, and you will be missing syntax-based error checking. + +You may decide that some syntax is acceptable; you may use the following table +selectively to enable just some syntax highlighting: > + + b : allow bold and italic syntax + c : allow texComment syntax + m : allow texMatcher syntax (ie. {...} and [...]) + M : allow texMath syntax + p : allow parts, chapter, section, etc syntax + r : allow texRefZone syntax (nocite, bibliography, label, pageref, eqref) + s : allow superscript/subscript regions + S : allow texStyle syntax + v : allow verbatim syntax + V : allow texNewEnv and texNewCmd syntax +< +As an example, let g:tex_fast= "M" will allow math-associated highlighting +but suppress all the other region-based syntax highlighting. + *tex-morecommands* *tex-package* Tex: Want To Highlight More Commands? ~ @@ -3805,7 +3859,7 @@ s-{nr} start of the matched pattern plus {nr} chars to the left e end of the matched pattern e+{nr} end of the matched pattern plus {nr} chars to the right e-{nr} end of the matched pattern plus {nr} chars to the left -{nr} (for "lc" only): start matching {nr} chars to the left +{nr} (for "lc" only): start matching {nr} chars right of the start Examples: "ms=s+1", "hs=e-2", "lc=3". @@ -4882,7 +4936,7 @@ restoring "b:current_syntax", since the syntax files do set Once a window has its own syntax, syntax commands executed from other windows on the same buffer (including :syntax clear) have no effect. Conversely, -syntax commands executed from that window do not effect other windows on the +syntax commands executed from that window do not affect other windows on the same buffer. A window with its own syntax reverts to normal behavior when another buffer diff --git a/en/term.txt b/en/term.txt index 362a18944..efeb0ffd6 100644 --- a/en/term.txt +++ b/en/term.txt @@ -1,4 +1,4 @@ -*term.txt* For Vim version 7.3. Last change: 2011 Feb 16 +*term.txt* For Vim version 7.3. Last change: 2013 Mar 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -294,6 +294,8 @@ Added by Vim (there are no standard codes for these): |termcap-cursor-shape| t_RV request terminal version string (for xterm) *t_RV* *'t_RV'* |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| + t_u7 request cursor position (for xterm) *t_u7* *'t_u7'* + see |'ambiwidth'| KEY CODES Note: Use the <> form if possible @@ -326,7 +328,7 @@ Note: Use the <> form if possible t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* - t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* + t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* @@ -356,9 +358,9 @@ Note: Use the <> form if possible t_kI <Insert> insert key *t_kI* *'t_kI'* t_kD <Del> delete key *t_kD* *'t_kD'* t_kb <BS> backspace key *t_kb* *'t_kb'* - t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* + t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* t_kh <Home> home key *t_kh* *'t_kh'* - t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* + t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* <xHome> alternate home key *<xHome>* t_@7 <End> end key *t_@7* *'t_@7'* t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* @@ -371,8 +373,8 @@ Note: Use the <> form if possible t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* - t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* - t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* + t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* + t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* diff --git a/en/various.txt b/en/various.txt index d602af692..98eaf45b6 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.3. Last change: 2012 Dec 06 +*various.txt* For Vim version 7.3. Last change: 2013 May 18 VIM REFERENCE MANUAL by Bram Moolenaar @@ -368,7 +368,7 @@ N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| B *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse| B *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse| N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| -B *+multi_byte* 16 and 32 bit characters |multibyte| +N *+multi_byte* 16 and 32 bit characters |multibyte| *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| N *+multi_lang* non-English language support |multi-lang| m *+mzscheme* Mzscheme interface |mzscheme| From 6e3ae4c5faa4fb02b5b048858de527e857ca2c6d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 6 Jun 2013 23:35:10 +0900 Subject: [PATCH 425/783] update en/syntax.txt to 7.3.1129 --- en/syntax.txt | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/en/syntax.txt b/en/syntax.txt index d0f271b08..7f296d142 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -37,6 +37,7 @@ In the User Manual: 15. Highlighting tags |tag-highlight| 16. Window-local syntax |:ownsyntax| 17. Color xterms |xterm-color| +18. When syntax is slow |:syntime| {Vi does not have any of these commands} @@ -5086,4 +5087,60 @@ Also make sure TTpro's Setup / Window / Full Color is enabled, and make sure that Setup / Font / Enable Bold is NOT enabled. (info provided by John Love-Jensen <eljay@Adobe.COM>) + +============================================================================== +18. When syntax is slow *:syntime* + +This is aimed at authors of a syntax file. + +If your syntax causes redrawing to be slow, here are a few hints on making it +faster. To see slowness switch on some features that usually interfere, such +as 'relativenumber' and |folding|. + +To find out what patterns are consuming most time, get an overview with this +sequence: > + :syntime on + [ redraw the text at least once with CTRL-L ] + :syntime report + +This will display a list of syntax patterns that were used, sorted by the time +it took to match them against the text. + +:syntime on Start measuring syntax times. This will add some + overhead to compute the time spent on syntax pattern + matching. + +:syntime off Stop measuring syntax times. + +:syntime clear Set all the counters to zero, restart measuring. + +:syntime report Show the syntax items used since ":syntime on" in the + current window. Use a wider display to see more of + the output. + + The list is sorted by total time. The columns are: + TOTAL Total time in seconds spent on + matching this pattern. + COUNT Number of times the pattern was used. + MATCH Number of times the pattern actually + matched + SLOWEST The longest time for one try. + AVERAGE The average time for one try. + NAME Name of the syntax item. Note that + this is not unique. + PATTERN The pattern being used. + +Pattern matching gets slow when it has to try many alternatives. Try to +include as much literal text as possible to reduce the number of ways a +pattern does NOT match. + +When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at +all positions in the current and previous line. For example, if the item is +literal text specify the size of that text (in bytes): + +"<\@<=span" Matches "span" in "<span". This tries matching with "<" in + many places. +"<\@1<=span" Matches the same, but only tries one byte before "span". + + vim:tw=78:sw=4:ts=8:ft=help:norl: From 61993a4d4d33361ce864ec2f487373acd1f1e637 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 25 Aug 2013 19:13:02 +0900 Subject: [PATCH 426/783] Update spell.txt --- en/spell.txt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/en/spell.txt b/en/spell.txt index 5c76eb532..c2b526d17 100644 --- a/en/spell.txt +++ b/en/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 7.3. Last change: 2011 May 25 +*spell.txt* For Vim version 7.4. Last change: 2013 Jul 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -928,9 +928,13 @@ When the encoding is UTF-8 no word characters need to be specified. Vim allows you to use spell checking for several languages in the same file. You can list them in the 'spelllang' option. As a consequence all spell files for the same encoding must use the same word characters, otherwise they can't -be combined without errors. If you get a warning that the word tables differ -you may need to generate the .spl file again with |:mkspell|. Check the FOL, -LOW and UPP lines in the used .aff file. +be combined without errors. + +If you get an E763 warning that the word tables differ you need to update your +".spl" spell files. If you downloaded the files, get the latest version of +all spell files you use. Otherwise generate the .spl file again with +|:mkspell|. If you still get errors check the FOL, LOW and UPP lines in the +used .aff files. The XX.ascii.spl spell file generated with the "-ascii" argument will not contain the table with characters, so that it can be combine with spell files @@ -1129,7 +1133,7 @@ WORDS WITH A SLASH *spell-SLASH* The slash is used in the .dic file to separate the basic word from the affix letters and other flags. Unfortunately, this means you cannot use a slash in -a word. Thus "TCP/IP" is not a word but "TCP with the flags "IP". To include +a word. Thus "TCP/IP" is not a word but "TCP" with the flags "IP". To include a slash in the word put a backslash before it: "TCP\/IP". In the rare case you want to use a backslash inside a word you need to use two backslashes. Any other use of the backslash is reserved for future expansion. @@ -1378,7 +1382,7 @@ Only case-folded letters need to be included. Another way to restrict compounding was mentioned above: Adding the |spell-COMPOUNDFORBIDFLAG| flag to an affix causes all words that are made -with that affix not be be used for compounding. +with that affix to not be used for compounding. UNLIMITED COMPOUNDING *spell-NOBREAK* From 281c3be7b0272d9e2f71ea338de66736f9601746 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 25 Aug 2013 20:29:50 +0900 Subject: [PATCH 427/783] Update intro.txt --- en/intro.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/en/intro.txt b/en/intro.txt index 856726a99..72e9b9bff 100644 --- a/en/intro.txt +++ b/en/intro.txt @@ -1,4 +1,4 @@ -*intro.txt* For Vim version 7.3. Last change: 2012 Sep 05 +*intro.txt* For Vim version 7.4. Last change: 2013 Jun 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -261,6 +261,7 @@ Vim would never have become what it is now, without the help of these people! I wish to thank all the people that sent me bug reports and suggestions. The list is too long to mention them all here. Vim would not be the same without the ideas from all these people: They keep Vim alive! +*love* *peace* *friendship* *gross-national-happiness* In this documentation there are several references to other versions of Vi: From a426c1f853422eb7fe345a5aaa74da61c6225ce2 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 1 Sep 2013 01:08:23 +0900 Subject: [PATCH 428/783] Update some of en/*.txt --- en/editing.txt | 9 +++++---- en/pattern.txt | 6 +++--- en/uganda.txt | 3 +-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/en/editing.txt b/en/editing.txt index c23f26367..6cafa7fde 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.3. Last change: 2013 Feb 07 +*editing.txt* For Vim version 7.4. Last change: 2013 Aug 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -185,12 +185,13 @@ If you want to automatically save the changes without asking, switch on the that does not work for all commands. If you want to keep the changed buffer without saving it, switch on the -'hidden' option. See |hidden-buffer|. +'hidden' option. See |hidden-buffer|. Some commands work like this even when +'hidden' is not set, check the help for the command. ============================================================================== 2. Editing a file *edit-a-file* - *:e* *:edit* + *:e* *:edit* *reload* :e[dit] [++opt] [+cmd] Edit the current file. This is useful to re-edit the current file, when it has been changed outside of Vim. This fails when changes have been made to the current @@ -199,7 +200,7 @@ If you want to keep the changed buffer without saving it, switch on the Also see |++opt| and |+cmd|. {Vi: no ++opt} - *:edit!* + *:edit!* *discard* :e[dit]! [++opt] [+cmd] Edit the current file always. Discard any changes to the current buffer. This is useful if you want to diff --git a/en/pattern.txt b/en/pattern.txt index e90e38839..edbeafde1 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.3. Last change: 2013 May 29 +*pattern.txt* For Vim version 7.4. Last change: 2013 Jul 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -350,7 +350,7 @@ For starters, read chapter 27 of the user manual |usr_27.txt|. or \z( pattern \) |/\z(| - */\%#=* *two-engines* + */\%#=* *two-engines* *NFA* Vim includes two regexp engines: 1. An old, backtracking engine that supports everything. 2. A new, NFA engine that works much faster on some patterns, but does not @@ -1232,7 +1232,7 @@ Suppose B is a base character and x and y are composing characters: Bxy Byx yes (order ignored) Bxy By no (x missing) Bxy Bx no (y missing) - Bx Bx yes (perfect mach) + Bx Bx yes (perfect match) Bx By no (x missing) Bx Bxy yes (extra y ignored) Bx Byx yes (extra y ignored) diff --git a/en/uganda.txt b/en/uganda.txt index d1ed21341..113df4f64 100644 --- a/en/uganda.txt +++ b/en/uganda.txt @@ -1,4 +1,4 @@ -*uganda.txt* For Vim version 7.3. Last change: 2012 Dec 02 +*uganda.txt* For Vim version 7.4. Last change: 2013 Jul 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -278,7 +278,6 @@ Others: Transfer to one of these accounts if possible: amounts for foreign check, sorry) Address to send checks to: - stichting ICCF Holland Bram Moolenaar Finsterruetihof 1 8134 Adliswil From c67b8c966d13a6bc349a80e8a6b9f0f361a5b5cc Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 1 Sep 2013 02:02:47 +0900 Subject: [PATCH 429/783] Update version --- en/arabic.txt | 2 +- en/autocmd.txt | 2 +- en/change.txt | 2 +- en/cmdline.txt | 2 +- en/debug.txt | 2 +- en/debugger.txt | 2 +- en/develop.txt | 2 +- en/diff.txt | 2 +- en/digraph.txt | 2 +- en/filetype.txt | 2 +- en/fold.txt | 2 +- en/ft_ada.txt | 2 +- en/ft_sql.txt | 2 +- en/gui.txt | 2 +- en/gui_w16.txt | 2 +- en/gui_w32.txt | 2 +- en/gui_x11.txt | 2 +- en/hangulin.txt | 2 +- en/hebrew.txt | 2 +- en/help.txt | 2 +- en/helphelp.txt | 2 +- en/howto.txt | 2 +- en/if_cscop.txt | 2 +- en/if_lua.txt | 2 +- en/if_mzsch.txt | 2 +- en/if_ole.txt | 2 +- en/if_perl.txt | 2 +- en/if_pyth.txt | 2 +- en/if_ruby.txt | 2 +- en/if_sniff.txt | 2 +- en/if_tcl.txt | 2 +- en/indent.txt | 2 +- en/index.txt | 2 +- en/insert.txt | 2 +- en/mbyte.txt | 2 +- en/message.txt | 2 +- en/motion.txt | 2 +- en/netbeans.txt | 2 +- en/options.txt | 2 +- en/os_390.txt | 2 +- en/os_amiga.txt | 2 +- en/os_beos.txt | 2 +- en/os_dos.txt | 2 +- en/os_mac.txt | 2 +- en/os_mint.txt | 2 +- en/os_msdos.txt | 2 +- en/os_os2.txt | 2 +- en/os_qnx.txt | 2 +- en/os_risc.txt | 2 +- en/os_unix.txt | 2 +- en/os_win32.txt | 2 +- en/pi_gzip.txt | 2 +- en/pi_netrw.txt | 2 +- en/pi_paren.txt | 2 +- en/pi_spec.txt | 2 +- en/pi_tar.txt | 2 +- en/pi_vimball.txt | 2 +- en/pi_zip.txt | 2 +- en/print.txt | 2 +- en/quickfix.txt | 2 +- en/quickref.txt | 2 +- en/quotes.txt | 2 +- en/recover.txt | 2 +- en/remote.txt | 2 +- en/repeat.txt | 2 +- en/rileft.txt | 2 +- en/russian.txt | 2 +- en/scroll.txt | 2 +- en/sign.txt | 2 +- en/sponsor.txt | 2 +- en/starting.txt | 2 +- en/syntax.txt | 2 +- en/tabpage.txt | 2 +- en/tagsrch.txt | 2 +- en/term.txt | 2 +- en/tips.txt | 2 +- en/undo.txt | 2 +- en/usr_01.txt | 2 +- en/usr_02.txt | 2 +- en/usr_03.txt | 2 +- en/usr_04.txt | 2 +- en/usr_05.txt | 2 +- en/usr_06.txt | 2 +- en/usr_07.txt | 2 +- en/usr_08.txt | 2 +- en/usr_09.txt | 2 +- en/usr_10.txt | 2 +- en/usr_11.txt | 2 +- en/usr_12.txt | 2 +- en/usr_20.txt | 2 +- en/usr_21.txt | 2 +- en/usr_22.txt | 2 +- en/usr_23.txt | 2 +- en/usr_25.txt | 2 +- en/usr_26.txt | 2 +- en/usr_27.txt | 2 +- en/usr_28.txt | 2 +- en/usr_29.txt | 2 +- en/usr_30.txt | 2 +- en/usr_31.txt | 2 +- en/usr_32.txt | 2 +- en/usr_40.txt | 2 +- en/usr_41.txt | 2 +- en/usr_42.txt | 2 +- en/usr_43.txt | 2 +- en/usr_44.txt | 2 +- en/usr_45.txt | 2 +- en/usr_90.txt | 2 +- en/usr_toc.txt | 2 +- en/various.txt | 2 +- en/version4.txt | 2 +- en/vi_diff.txt | 2 +- en/visual.txt | 2 +- en/windows.txt | 2 +- en/workshop.txt | 2 +- 115 files changed, 115 insertions(+), 115 deletions(-) diff --git a/en/arabic.txt b/en/arabic.txt index 16674cab9..2f0be512e 100644 --- a/en/arabic.txt +++ b/en/arabic.txt @@ -1,4 +1,4 @@ -*arabic.txt* For Vim version 7.3. Last change: 2010 Nov 13 +*arabic.txt* For Vim version 7.4. Last change: 2010 Nov 13 VIM REFERENCE MANUAL by Nadim Shaikli diff --git a/en/autocmd.txt b/en/autocmd.txt index b9d23b359..3a4643221 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.3. Last change: 2013 May 19 +*autocmd.txt* For Vim version 7.4. Last change: 2013 May 19 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/change.txt b/en/change.txt index bc2c5248f..aaf573285 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.3. Last change: 2013 Mar 19 +*change.txt* For Vim version 7.4. Last change: 2013 Mar 19 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/cmdline.txt b/en/cmdline.txt index 4759702e4..36a71cfcc 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.3. Last change: 2013 Mar 16 +*cmdline.txt* For Vim version 7.4. Last change: 2013 Mar 16 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/debug.txt b/en/debug.txt index 0b55c34c4..3226fa459 100644 --- a/en/debug.txt +++ b/en/debug.txt @@ -1,4 +1,4 @@ -*debug.txt* For Vim version 7.3. Last change: 2012 Feb 11 +*debug.txt* For Vim version 7.4. Last change: 2012 Feb 11 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/debugger.txt b/en/debugger.txt index d80eee6b6..df7116bb2 100644 --- a/en/debugger.txt +++ b/en/debugger.txt @@ -1,4 +1,4 @@ -*debugger.txt* For Vim version 7.3. Last change: 2005 Mar 29 +*debugger.txt* For Vim version 7.4. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Gordon Prieur diff --git a/en/develop.txt b/en/develop.txt index 51d653b2a..757a45b2e 100644 --- a/en/develop.txt +++ b/en/develop.txt @@ -1,4 +1,4 @@ -*develop.txt* For Vim version 7.3. Last change: 2013 Apr 27 +*develop.txt* For Vim version 7.4. Last change: 2013 Apr 27 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/diff.txt b/en/diff.txt index a51138ab9..a23fe5ab1 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.3. Last change: 2012 Sep 05 +*diff.txt* For Vim version 7.4. Last change: 2012 Sep 05 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/digraph.txt b/en/digraph.txt index 1d9409846..ac84091c5 100644 --- a/en/digraph.txt +++ b/en/digraph.txt @@ -1,4 +1,4 @@ -*digraph.txt* For Vim version 7.3. Last change: 2011 Jan 15 +*digraph.txt* For Vim version 7.4. Last change: 2011 Jan 15 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/filetype.txt b/en/filetype.txt index 6367df6a4..1cee25bcd 100644 --- a/en/filetype.txt +++ b/en/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.3. Last change: 2013 May 25 +*filetype.txt* For Vim version 7.4. Last change: 2013 May 25 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/fold.txt b/en/fold.txt index 4f279333f..240d912d9 100644 --- a/en/fold.txt +++ b/en/fold.txt @@ -1,4 +1,4 @@ -*fold.txt* For Vim version 7.3. Last change: 2010 May 13 +*fold.txt* For Vim version 7.4. Last change: 2010 May 13 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/ft_ada.txt b/en/ft_ada.txt index c74dd01d0..dcab23ccb 100644 --- a/en/ft_ada.txt +++ b/en/ft_ada.txt @@ -1,4 +1,4 @@ -*ft_ada.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*ft_ada.txt* For Vim version 7.4. Last change: 2010 Jul 20 ADA FILE TYPE PLUG-INS REFERENCE MANUAL~ diff --git a/en/ft_sql.txt b/en/ft_sql.txt index 9aa711b1e..72ea3ed36 100644 --- a/en/ft_sql.txt +++ b/en/ft_sql.txt @@ -1,4 +1,4 @@ -*ft_sql.txt* For Vim version 7.3. Last change: 2013 May 15 +*ft_sql.txt* For Vim version 7.4. Last change: 2013 May 15 by David Fishburn diff --git a/en/gui.txt b/en/gui.txt index b2e6a0c4c..0e9baf2b0 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 7.3. Last change: 2011 Jul 22 +*gui.txt* For Vim version 7.4. Last change: 2011 Jul 22 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/gui_w16.txt b/en/gui_w16.txt index 5b1ca64ab..fa84b0541 100644 --- a/en/gui_w16.txt +++ b/en/gui_w16.txt @@ -1,4 +1,4 @@ -*gui_w16.txt* For Vim version 7.3. Last change: 2005 Mar 29 +*gui_w16.txt* For Vim version 7.4. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/gui_w32.txt b/en/gui_w32.txt index ee8049cbd..fbe3f35e7 100644 --- a/en/gui_w32.txt +++ b/en/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 7.3. Last change: 2012 Aug 04 +*gui_w32.txt* For Vim version 7.4. Last change: 2012 Aug 04 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/gui_x11.txt b/en/gui_x11.txt index 1ae656e04..5a4776502 100644 --- a/en/gui_x11.txt +++ b/en/gui_x11.txt @@ -1,4 +1,4 @@ -*gui_x11.txt* For Vim version 7.3. Last change: 2011 Sep 14 +*gui_x11.txt* For Vim version 7.4. Last change: 2011 Sep 14 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/hangulin.txt b/en/hangulin.txt index fac0c873b..79ebff110 100644 --- a/en/hangulin.txt +++ b/en/hangulin.txt @@ -1,4 +1,4 @@ -*hangulin.txt* For Vim version 7.3. Last change: 2009 Jun 24 +*hangulin.txt* For Vim version 7.4. Last change: 2009 Jun 24 VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam diff --git a/en/hebrew.txt b/en/hebrew.txt index 8f264e67e..b36c968d0 100644 --- a/en/hebrew.txt +++ b/en/hebrew.txt @@ -1,4 +1,4 @@ -*hebrew.txt* For Vim version 7.3. Last change: 2007 Jun 14 +*hebrew.txt* For Vim version 7.4. Last change: 2007 Jun 14 VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem) diff --git a/en/help.txt b/en/help.txt index bca336498..f13a5294e 100644 --- a/en/help.txt +++ b/en/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 7.3. Last change: 2012 Dec 06 +*help.txt* For Vim version 7.4. Last change: 2012 Dec 06 VIM - main help file k diff --git a/en/helphelp.txt b/en/helphelp.txt index 311d86ca3..87f095e56 100644 --- a/en/helphelp.txt +++ b/en/helphelp.txt @@ -1,4 +1,4 @@ -*helphelp.txt* For Vim version 7.3. Last change: 2012 Nov 28 +*helphelp.txt* For Vim version 7.4. Last change: 2012 Nov 28 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/howto.txt b/en/howto.txt index 44bf7ef7f..03ae3dbd8 100644 --- a/en/howto.txt +++ b/en/howto.txt @@ -1,4 +1,4 @@ -*howto.txt* For Vim version 7.3. Last change: 2006 Apr 02 +*howto.txt* For Vim version 7.4. Last change: 2006 Apr 02 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/if_cscop.txt b/en/if_cscop.txt index 5adb1e77f..d8dc48f06 100644 --- a/en/if_cscop.txt +++ b/en/if_cscop.txt @@ -1,4 +1,4 @@ -*if_cscop.txt* For Vim version 7.3. Last change: 2011 Jun 12 +*if_cscop.txt* For Vim version 7.4. Last change: 2011 Jun 12 VIM REFERENCE MANUAL by Andy Kahn diff --git a/en/if_lua.txt b/en/if_lua.txt index f6f56048a..3d7cf2c8e 100644 --- a/en/if_lua.txt +++ b/en/if_lua.txt @@ -1,4 +1,4 @@ -*if_lua.txt* For Vim version 7.3. Last change: 2012 Jun 29 +*if_lua.txt* For Vim version 7.4. Last change: 2012 Jun 29 VIM REFERENCE MANUAL by Luis Carvalho diff --git a/en/if_mzsch.txt b/en/if_mzsch.txt index b7a35c267..b42570a75 100644 --- a/en/if_mzsch.txt +++ b/en/if_mzsch.txt @@ -1,4 +1,4 @@ -*if_mzsch.txt* For Vim version 7.3. Last change: 2012 Dec 17 +*if_mzsch.txt* For Vim version 7.4. Last change: 2012 Dec 17 VIM REFERENCE MANUAL by Sergey Khorev diff --git a/en/if_ole.txt b/en/if_ole.txt index 198c761e4..7d77b660f 100644 --- a/en/if_ole.txt +++ b/en/if_ole.txt @@ -1,4 +1,4 @@ -*if_ole.txt* For Vim version 7.3. Last change: 2008 Aug 16 +*if_ole.txt* For Vim version 7.4. Last change: 2008 Aug 16 VIM REFERENCE MANUAL by Paul Moore diff --git a/en/if_perl.txt b/en/if_perl.txt index 05b8b4e86..95c607bca 100644 --- a/en/if_perl.txt +++ b/en/if_perl.txt @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim version 7.3. Last change: 2012 Oct 25 +*if_perl.txt* For Vim version 7.4. Last change: 2012 Oct 25 VIM REFERENCE MANUAL by Sven Verdoolaege diff --git a/en/if_pyth.txt b/en/if_pyth.txt index fffc4c789..09139cdd2 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.3. Last change: 2013 May 25 +*if_pyth.txt* For Vim version 7.4. Last change: 2013 May 25 VIM REFERENCE MANUAL by Paul Moore diff --git a/en/if_ruby.txt b/en/if_ruby.txt index 71d8edcad..0a32d8785 100644 --- a/en/if_ruby.txt +++ b/en/if_ruby.txt @@ -1,4 +1,4 @@ -*if_ruby.txt* For Vim version 7.3. Last change: 2012 Aug 02 +*if_ruby.txt* For Vim version 7.4. Last change: 2012 Aug 02 VIM REFERENCE MANUAL by Shugo Maeda diff --git a/en/if_sniff.txt b/en/if_sniff.txt index 1af1c5815..a3d52085f 100644 --- a/en/if_sniff.txt +++ b/en/if_sniff.txt @@ -1,4 +1,4 @@ -*if_sniff.txt* For Vim version 7.3. Last change: 2005 Mar 29 +*if_sniff.txt* For Vim version 7.4. Last change: 2005 Mar 29 VIM REFERENCE MANUAL diff --git a/en/if_tcl.txt b/en/if_tcl.txt index f4283a304..d6726a354 100644 --- a/en/if_tcl.txt +++ b/en/if_tcl.txt @@ -1,4 +1,4 @@ -*if_tcl.txt* For Vim version 7.3. Last change: 2012 Aug 02 +*if_tcl.txt* For Vim version 7.4. Last change: 2012 Aug 02 VIM REFERENCE MANUAL by Ingo Wilken diff --git a/en/indent.txt b/en/indent.txt index 0dd632b0c..6d18b50b8 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.3. Last change: 2013 May 20 +*indent.txt* For Vim version 7.4. Last change: 2013 May 20 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/index.txt b/en/index.txt index 6b8d445e4..84a15836b 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.3. Last change: 2013 May 17 +*index.txt* For Vim version 7.4. Last change: 2013 May 17 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/insert.txt b/en/insert.txt index 43fedbc89..615849ab2 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.3. Last change: 2013 Apr 12 +*insert.txt* For Vim version 7.4. Last change: 2013 Apr 12 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/mbyte.txt b/en/mbyte.txt index 8ae023bfb..87ae8777c 100644 --- a/en/mbyte.txt +++ b/en/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.3. Last change: 2013 May 18 +*mbyte.txt* For Vim version 7.4. Last change: 2013 May 18 VIM REFERENCE MANUAL by Bram Moolenaar et al. diff --git a/en/message.txt b/en/message.txt index 35f6c49de..84afe2f2b 100644 --- a/en/message.txt +++ b/en/message.txt @@ -1,4 +1,4 @@ -*message.txt* For Vim version 7.3. Last change: 2013 Feb 23 +*message.txt* For Vim version 7.4. Last change: 2013 Feb 23 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/motion.txt b/en/motion.txt index 265d53072..550609a51 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.3. Last change: 2013 Mar 07 +*motion.txt* For Vim version 7.4. Last change: 2013 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/netbeans.txt b/en/netbeans.txt index abb88683e..e0ac2bf82 100644 --- a/en/netbeans.txt +++ b/en/netbeans.txt @@ -1,4 +1,4 @@ -*netbeans.txt* For Vim version 7.3. Last change: 2012 Jan 26 +*netbeans.txt* For Vim version 7.4. Last change: 2012 Jan 26 VIM REFERENCE MANUAL by Gordon Prieur et al. diff --git a/en/options.txt b/en/options.txt index 6b01d7c17..9878725f4 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.3. Last change: 2013 May 23 +*options.txt* For Vim version 7.4. Last change: 2013 May 23 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/os_390.txt b/en/os_390.txt index 0140e20e8..5e564d841 100644 --- a/en/os_390.txt +++ b/en/os_390.txt @@ -1,4 +1,4 @@ -*os_390.txt* For Vim version 7.3. Last change: 2010 May 30 +*os_390.txt* For Vim version 7.4. Last change: 2010 May 30 VIM REFERENCE MANUAL by Ralf Schandl diff --git a/en/os_amiga.txt b/en/os_amiga.txt index 06326e480..b9ac61112 100644 --- a/en/os_amiga.txt +++ b/en/os_amiga.txt @@ -1,4 +1,4 @@ -*os_amiga.txt* For Vim version 7.3. Last change: 2010 Aug 14 +*os_amiga.txt* For Vim version 7.4. Last change: 2010 Aug 14 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/os_beos.txt b/en/os_beos.txt index d72317e2f..5099ae612 100644 --- a/en/os_beos.txt +++ b/en/os_beos.txt @@ -1,4 +1,4 @@ -*os_beos.txt* For Vim version 7.3. Last change: 2010 Aug 14 +*os_beos.txt* For Vim version 7.4. Last change: 2010 Aug 14 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/os_dos.txt b/en/os_dos.txt index 1efea7a3f..245a31846 100644 --- a/en/os_dos.txt +++ b/en/os_dos.txt @@ -1,4 +1,4 @@ -*os_dos.txt* For Vim version 7.3. Last change: 2006 Mar 30 +*os_dos.txt* For Vim version 7.4. Last change: 2006 Mar 30 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/os_mac.txt b/en/os_mac.txt index ac9122ad6..9ed23b4ae 100644 --- a/en/os_mac.txt +++ b/en/os_mac.txt @@ -1,4 +1,4 @@ -*os_mac.txt* For Vim version 7.3. Last change: 2006 Apr 30 +*os_mac.txt* For Vim version 7.4. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar et al. diff --git a/en/os_mint.txt b/en/os_mint.txt index e6656008b..d44b1a4f4 100644 --- a/en/os_mint.txt +++ b/en/os_mint.txt @@ -1,4 +1,4 @@ -*os_mint.txt* For Vim version 7.3. Last change: 2005 Mar 29 +*os_mint.txt* For Vim version 7.4. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Jens M. Felderhoff diff --git a/en/os_msdos.txt b/en/os_msdos.txt index 113fd144e..bd996be0c 100644 --- a/en/os_msdos.txt +++ b/en/os_msdos.txt @@ -1,4 +1,4 @@ -*os_msdos.txt* For Vim version 7.3. Last change: 2005 Mar 29 +*os_msdos.txt* For Vim version 7.4. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/os_os2.txt b/en/os_os2.txt index 419c79a6f..231d7d102 100644 --- a/en/os_os2.txt +++ b/en/os_os2.txt @@ -1,4 +1,4 @@ -*os_os2.txt* For Vim version 7.3. Last change: 2007 Apr 22 +*os_os2.txt* For Vim version 7.4. Last change: 2007 Apr 22 VIM REFERENCE MANUAL by Paul Slootman diff --git a/en/os_qnx.txt b/en/os_qnx.txt index ac401d10f..92132e970 100644 --- a/en/os_qnx.txt +++ b/en/os_qnx.txt @@ -1,4 +1,4 @@ -*os_qnx.txt* For Vim version 7.3. Last change: 2005 Mar 29 +*os_qnx.txt* For Vim version 7.4. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Julian Kinraid diff --git a/en/os_risc.txt b/en/os_risc.txt index e9b69f6e0..62b4a4b8e 100644 --- a/en/os_risc.txt +++ b/en/os_risc.txt @@ -1,4 +1,4 @@ -*os_risc.txt* For Vim version 7.3. Last change: 2011 May 10 +*os_risc.txt* For Vim version 7.4. Last change: 2011 May 10 VIM REFERENCE MANUAL by Thomas Leonard diff --git a/en/os_unix.txt b/en/os_unix.txt index 46a20fdaf..6273597d2 100644 --- a/en/os_unix.txt +++ b/en/os_unix.txt @@ -1,4 +1,4 @@ -*os_unix.txt* For Vim version 7.3. Last change: 2005 Mar 29 +*os_unix.txt* For Vim version 7.4. Last change: 2005 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/os_win32.txt b/en/os_win32.txt index 4e1a02b4b..f029a7a65 100644 --- a/en/os_win32.txt +++ b/en/os_win32.txt @@ -1,4 +1,4 @@ -*os_win32.txt* For Vim version 7.3. Last change: 2012 May 18 +*os_win32.txt* For Vim version 7.4. Last change: 2012 May 18 VIM REFERENCE MANUAL by George Reilly diff --git a/en/pi_gzip.txt b/en/pi_gzip.txt index f9b644206..a3998d567 100644 --- a/en/pi_gzip.txt +++ b/en/pi_gzip.txt @@ -1,4 +1,4 @@ -*pi_gzip.txt* For Vim version 7.3. Last change: 2012 Jul 19 +*pi_gzip.txt* For Vim version 7.4. Last change: 2012 Jul 19 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/pi_netrw.txt b/en/pi_netrw.txt index 4d810eab4..c9d8752e0 100644 --- a/en/pi_netrw.txt +++ b/en/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 7.3. Last change: 2013 May 18 +*pi_netrw.txt* For Vim version 7.4. Last change: 2013 May 18 ------------------------------------------------ NETRW REFERENCE MANUAL by Charles E. Campbell diff --git a/en/pi_paren.txt b/en/pi_paren.txt index 71727aa05..497186204 100644 --- a/en/pi_paren.txt +++ b/en/pi_paren.txt @@ -1,4 +1,4 @@ -*pi_paren.txt* For Vim version 7.3. Last change: 2013 May 08 +*pi_paren.txt* For Vim version 7.4. Last change: 2013 May 08 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/pi_spec.txt b/en/pi_spec.txt index db4047853..f76841832 100644 --- a/en/pi_spec.txt +++ b/en/pi_spec.txt @@ -1,4 +1,4 @@ -*pi_spec.txt* For Vim version 7.3. Last change: 2006 Apr 24 +*pi_spec.txt* For Vim version 7.4. Last change: 2006 Apr 24 by Gustavo Niemeyer ~ diff --git a/en/pi_tar.txt b/en/pi_tar.txt index ad23413c6..b2fab290b 100644 --- a/en/pi_tar.txt +++ b/en/pi_tar.txt @@ -1,4 +1,4 @@ -*pi_tar.txt* For Vim version 7.3. Last change: 2013 Apr 17 +*pi_tar.txt* For Vim version 7.4. Last change: 2013 Apr 17 +====================+ | Tar File Interface | diff --git a/en/pi_vimball.txt b/en/pi_vimball.txt index f961ab118..720d9478b 100644 --- a/en/pi_vimball.txt +++ b/en/pi_vimball.txt @@ -1,4 +1,4 @@ -*pi_vimball.txt* For Vim version 7.3. Last change: 2012 Jan 17 +*pi_vimball.txt* For Vim version 7.4. Last change: 2012 Jan 17 ---------------- Vimball Archiver diff --git a/en/pi_zip.txt b/en/pi_zip.txt index e72d981ce..0a081f24d 100644 --- a/en/pi_zip.txt +++ b/en/pi_zip.txt @@ -1,4 +1,4 @@ -*pi_zip.txt* For Vim version 7.3. Last change: 2013 Apr 17 +*pi_zip.txt* For Vim version 7.4. Last change: 2013 Apr 17 +====================+ | Zip File Interface | diff --git a/en/print.txt b/en/print.txt index 8e12cbb1d..2ff6b1063 100644 --- a/en/print.txt +++ b/en/print.txt @@ -1,4 +1,4 @@ -*print.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*print.txt* For Vim version 7.4. Last change: 2010 Jul 20 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/quickfix.txt b/en/quickfix.txt index 47e110cb0..e96025f86 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.3. Last change: 2013 Mar 07 +*quickfix.txt* For Vim version 7.4. Last change: 2013 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/quickref.txt b/en/quickref.txt index ebb87cd9c..77d30ecd7 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.3. Last change: 2013 May 20 +*quickref.txt* For Vim version 7.4. Last change: 2013 May 20 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/quotes.txt b/en/quotes.txt index d9bca590b..11d855012 100644 --- a/en/quotes.txt +++ b/en/quotes.txt @@ -1,4 +1,4 @@ -*quotes.txt* For Vim version 7.3. Last change: 2010 Nov 03 +*quotes.txt* For Vim version 7.4. Last change: 2010 Nov 03 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/recover.txt b/en/recover.txt index 4698eec3c..5fc09c0e7 100644 --- a/en/recover.txt +++ b/en/recover.txt @@ -1,4 +1,4 @@ -*recover.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*recover.txt* For Vim version 7.4. Last change: 2010 Jul 20 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/remote.txt b/en/remote.txt index 11665cf32..327258fa8 100644 --- a/en/remote.txt +++ b/en/remote.txt @@ -1,4 +1,4 @@ -*remote.txt* For Vim version 7.3. Last change: 2008 May 24 +*remote.txt* For Vim version 7.4. Last change: 2008 May 24 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/repeat.txt b/en/repeat.txt index 9a97321eb..f1f0ba005 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.3. Last change: 2012 Mar 23 +*repeat.txt* For Vim version 7.4. Last change: 2012 Mar 23 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/rileft.txt b/en/rileft.txt index 09182e31f..f4b8f41fd 100644 --- a/en/rileft.txt +++ b/en/rileft.txt @@ -1,4 +1,4 @@ -*rileft.txt* For Vim version 7.3. Last change: 2006 Apr 24 +*rileft.txt* For Vim version 7.4. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Avner Lottem diff --git a/en/russian.txt b/en/russian.txt index 75deed741..36f3d0b71 100644 --- a/en/russian.txt +++ b/en/russian.txt @@ -1,4 +1,4 @@ -*russian.txt* For Vim version 7.3. Last change: 2006 Apr 24 +*russian.txt* For Vim version 7.4. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Vassily Ragosin diff --git a/en/scroll.txt b/en/scroll.txt index aed818737..b2c56634a 100644 --- a/en/scroll.txt +++ b/en/scroll.txt @@ -1,4 +1,4 @@ -*scroll.txt* For Vim version 7.3. Last change: 2006 Aug 27 +*scroll.txt* For Vim version 7.4. Last change: 2006 Aug 27 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/sign.txt b/en/sign.txt index 64fde0870..076bff033 100644 --- a/en/sign.txt +++ b/en/sign.txt @@ -1,4 +1,4 @@ -*sign.txt* For Vim version 7.3. Last change: 2012 Jul 10 +*sign.txt* For Vim version 7.4. Last change: 2012 Jul 10 VIM REFERENCE MANUAL by Gordon Prieur diff --git a/en/sponsor.txt b/en/sponsor.txt index a2b0820c0..a99d66d84 100644 --- a/en/sponsor.txt +++ b/en/sponsor.txt @@ -1,4 +1,4 @@ -*sponsor.txt* For Vim version 7.3. Last change: 2008 Jun 21 +*sponsor.txt* For Vim version 7.4. Last change: 2008 Jun 21 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/starting.txt b/en/starting.txt index 41f6d8c95..dd279b8d5 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.3. Last change: 2013 May 29 +*starting.txt* For Vim version 7.4. Last change: 2013 May 29 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/syntax.txt b/en/syntax.txt index 7f296d142..a2dc5c00f 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.3. Last change: 2013 May 31 +*syntax.txt* For Vim version 7.4. Last change: 2013 May 31 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/tabpage.txt b/en/tabpage.txt index b3fbd9522..3c7ad9fe2 100644 --- a/en/tabpage.txt +++ b/en/tabpage.txt @@ -1,4 +1,4 @@ -*tabpage.txt* For Vim version 7.3. Last change: 2012 Aug 08 +*tabpage.txt* For Vim version 7.4. Last change: 2012 Aug 08 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/tagsrch.txt b/en/tagsrch.txt index 9abc1544a..eda3447dc 100644 --- a/en/tagsrch.txt +++ b/en/tagsrch.txt @@ -1,4 +1,4 @@ -*tagsrch.txt* For Vim version 7.3. Last change: 2011 Oct 28 +*tagsrch.txt* For Vim version 7.4. Last change: 2011 Oct 28 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/term.txt b/en/term.txt index efeb0ffd6..eb5d7fb57 100644 --- a/en/term.txt +++ b/en/term.txt @@ -1,4 +1,4 @@ -*term.txt* For Vim version 7.3. Last change: 2013 Mar 13 +*term.txt* For Vim version 7.4. Last change: 2013 Mar 13 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/tips.txt b/en/tips.txt index a27463b94..90aa20e8b 100644 --- a/en/tips.txt +++ b/en/tips.txt @@ -1,4 +1,4 @@ -*tips.txt* For Vim version 7.3. Last change: 2009 Nov 07 +*tips.txt* For Vim version 7.4. Last change: 2009 Nov 07 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/undo.txt b/en/undo.txt index 33eb71a91..f1990c90d 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 7.3. Last change: 2012 Mar 04 +*undo.txt* For Vim version 7.4. Last change: 2012 Mar 04 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/usr_01.txt b/en/usr_01.txt index 75de19faa..11fa2173d 100644 --- a/en/usr_01.txt +++ b/en/usr_01.txt @@ -1,4 +1,4 @@ -*usr_01.txt* For Vim version 7.3. Last change: 2010 Nov 03 +*usr_01.txt* For Vim version 7.4. Last change: 2010 Nov 03 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_02.txt b/en/usr_02.txt index 6b9f9ae6d..8bfa9ba05 100644 --- a/en/usr_02.txt +++ b/en/usr_02.txt @@ -1,4 +1,4 @@ -*usr_02.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*usr_02.txt* For Vim version 7.4. Last change: 2010 Jul 20 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_03.txt b/en/usr_03.txt index 0f73c5512..617326089 100644 --- a/en/usr_03.txt +++ b/en/usr_03.txt @@ -1,4 +1,4 @@ -*usr_03.txt* For Vim version 7.3. Last change: 2006 Jun 21 +*usr_03.txt* For Vim version 7.4. Last change: 2006 Jun 21 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_04.txt b/en/usr_04.txt index 5a3f97b49..c09cb204c 100644 --- a/en/usr_04.txt +++ b/en/usr_04.txt @@ -1,4 +1,4 @@ -*usr_04.txt* For Vim version 7.3. Last change: 2008 Sep 06 +*usr_04.txt* For Vim version 7.4. Last change: 2008 Sep 06 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_05.txt b/en/usr_05.txt index 45bcc1749..f71cf42cf 100644 --- a/en/usr_05.txt +++ b/en/usr_05.txt @@ -1,4 +1,4 @@ -*usr_05.txt* For Vim version 7.3. Last change: 2012 Nov 20 +*usr_05.txt* For Vim version 7.4. Last change: 2012 Nov 20 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_06.txt b/en/usr_06.txt index 208cc3ef9..5e3c7726d 100644 --- a/en/usr_06.txt +++ b/en/usr_06.txt @@ -1,4 +1,4 @@ -*usr_06.txt* For Vim version 7.3. Last change: 2009 Oct 28 +*usr_06.txt* For Vim version 7.4. Last change: 2009 Oct 28 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_07.txt b/en/usr_07.txt index 4722ddbf0..8a0600b84 100644 --- a/en/usr_07.txt +++ b/en/usr_07.txt @@ -1,4 +1,4 @@ -*usr_07.txt* For Vim version 7.3. Last change: 2006 Apr 24 +*usr_07.txt* For Vim version 7.4. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_08.txt b/en/usr_08.txt index a9194ab71..2ac6fea00 100644 --- a/en/usr_08.txt +++ b/en/usr_08.txt @@ -1,4 +1,4 @@ -*usr_08.txt* For Vim version 7.3. Last change: 2006 Jul 18 +*usr_08.txt* For Vim version 7.4. Last change: 2006 Jul 18 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_09.txt b/en/usr_09.txt index fbc38656d..68575f518 100644 --- a/en/usr_09.txt +++ b/en/usr_09.txt @@ -1,4 +1,4 @@ -*usr_09.txt* For Vim version 7.3. Last change: 2006 Apr 24 +*usr_09.txt* For Vim version 7.4. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_10.txt b/en/usr_10.txt index 9bf6a2212..4398c4d64 100644 --- a/en/usr_10.txt +++ b/en/usr_10.txt @@ -1,4 +1,4 @@ -*usr_10.txt* For Vim version 7.3. Last change: 2006 Nov 05 +*usr_10.txt* For Vim version 7.4. Last change: 2006 Nov 05 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_11.txt b/en/usr_11.txt index fed950c34..9935ded48 100644 --- a/en/usr_11.txt +++ b/en/usr_11.txt @@ -1,4 +1,4 @@ -*usr_11.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*usr_11.txt* For Vim version 7.4. Last change: 2010 Jul 20 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_12.txt b/en/usr_12.txt index 5dda76aa3..fba1b5327 100644 --- a/en/usr_12.txt +++ b/en/usr_12.txt @@ -1,4 +1,4 @@ -*usr_12.txt* For Vim version 7.3. Last change: 2007 May 11 +*usr_12.txt* For Vim version 7.4. Last change: 2007 May 11 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_20.txt b/en/usr_20.txt index 2b5393a95..5f0a66018 100644 --- a/en/usr_20.txt +++ b/en/usr_20.txt @@ -1,4 +1,4 @@ -*usr_20.txt* For Vim version 7.3. Last change: 2006 Apr 24 +*usr_20.txt* For Vim version 7.4. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_21.txt b/en/usr_21.txt index ce7d49454..450d39433 100644 --- a/en/usr_21.txt +++ b/en/usr_21.txt @@ -1,4 +1,4 @@ -*usr_21.txt* For Vim version 7.3. Last change: 2012 Nov 02 +*usr_21.txt* For Vim version 7.4. Last change: 2012 Nov 02 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_22.txt b/en/usr_22.txt index 3c527a686..cff8e9db1 100644 --- a/en/usr_22.txt +++ b/en/usr_22.txt @@ -1,4 +1,4 @@ -*usr_22.txt* For Vim version 7.3. Last change: 2012 Nov 15 +*usr_22.txt* For Vim version 7.4. Last change: 2012 Nov 15 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_23.txt b/en/usr_23.txt index 50e7f8f6c..63cbc612d 100644 --- a/en/usr_23.txt +++ b/en/usr_23.txt @@ -1,4 +1,4 @@ -*usr_23.txt* For Vim version 7.3. Last change: 2006 Apr 24 +*usr_23.txt* For Vim version 7.4. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_25.txt b/en/usr_25.txt index 3cc46e250..01f21a18a 100644 --- a/en/usr_25.txt +++ b/en/usr_25.txt @@ -1,4 +1,4 @@ -*usr_25.txt* For Vim version 7.3. Last change: 2007 May 11 +*usr_25.txt* For Vim version 7.4. Last change: 2007 May 11 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_26.txt b/en/usr_26.txt index e32802c84..cc2395962 100644 --- a/en/usr_26.txt +++ b/en/usr_26.txt @@ -1,4 +1,4 @@ -*usr_26.txt* For Vim version 7.3. Last change: 2006 Apr 24 +*usr_26.txt* For Vim version 7.4. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_27.txt b/en/usr_27.txt index 107411ea1..fb096593f 100644 --- a/en/usr_27.txt +++ b/en/usr_27.txt @@ -1,4 +1,4 @@ -*usr_27.txt* For Vim version 7.3. Last change: 2010 Mar 28 +*usr_27.txt* For Vim version 7.4. Last change: 2010 Mar 28 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_28.txt b/en/usr_28.txt index ea654166f..46db1b90a 100644 --- a/en/usr_28.txt +++ b/en/usr_28.txt @@ -1,4 +1,4 @@ -*usr_28.txt* For Vim version 7.3. Last change: 2008 Jun 14 +*usr_28.txt* For Vim version 7.4. Last change: 2008 Jun 14 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_29.txt b/en/usr_29.txt index fb7d688a5..f13cd3a40 100644 --- a/en/usr_29.txt +++ b/en/usr_29.txt @@ -1,4 +1,4 @@ -*usr_29.txt* For Vim version 7.3. Last change: 2008 Jun 28 +*usr_29.txt* For Vim version 7.4. Last change: 2008 Jun 28 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_30.txt b/en/usr_30.txt index 09f90f82f..52f437572 100644 --- a/en/usr_30.txt +++ b/en/usr_30.txt @@ -1,4 +1,4 @@ -*usr_30.txt* For Vim version 7.3. Last change: 2007 Nov 10 +*usr_30.txt* For Vim version 7.4. Last change: 2007 Nov 10 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_31.txt b/en/usr_31.txt index adbd56a2e..550564e10 100644 --- a/en/usr_31.txt +++ b/en/usr_31.txt @@ -1,4 +1,4 @@ -*usr_31.txt* For Vim version 7.3. Last change: 2007 May 08 +*usr_31.txt* For Vim version 7.4. Last change: 2007 May 08 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_32.txt b/en/usr_32.txt index 7999efee5..fd58f2d51 100644 --- a/en/usr_32.txt +++ b/en/usr_32.txt @@ -1,4 +1,4 @@ -*usr_32.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*usr_32.txt* For Vim version 7.4. Last change: 2010 Jul 20 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_40.txt b/en/usr_40.txt index c7a5e4773..13fb8cfdc 100644 --- a/en/usr_40.txt +++ b/en/usr_40.txt @@ -1,4 +1,4 @@ -*usr_40.txt* For Vim version 7.3. Last change: 2006 Jun 21 +*usr_40.txt* For Vim version 7.4. Last change: 2006 Jun 21 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_41.txt b/en/usr_41.txt index 635868334..8db127fd9 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.3. Last change: 2013 Feb 20 +*usr_41.txt* For Vim version 7.4. Last change: 2013 Feb 20 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_42.txt b/en/usr_42.txt index 82007a033..a1cd533e2 100644 --- a/en/usr_42.txt +++ b/en/usr_42.txt @@ -1,4 +1,4 @@ -*usr_42.txt* For Vim version 7.3. Last change: 2008 May 05 +*usr_42.txt* For Vim version 7.4. Last change: 2008 May 05 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_43.txt b/en/usr_43.txt index 2d9fbf71a..6eaa9c14a 100644 --- a/en/usr_43.txt +++ b/en/usr_43.txt @@ -1,4 +1,4 @@ -*usr_43.txt* For Vim version 7.3. Last change: 2008 Dec 28 +*usr_43.txt* For Vim version 7.4. Last change: 2008 Dec 28 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_44.txt b/en/usr_44.txt index 266708f69..48f661eb0 100644 --- a/en/usr_44.txt +++ b/en/usr_44.txt @@ -1,4 +1,4 @@ -*usr_44.txt* For Vim version 7.3. Last change: 2008 Dec 28 +*usr_44.txt* For Vim version 7.4. Last change: 2008 Dec 28 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_45.txt b/en/usr_45.txt index 1026ee6fe..303698179 100644 --- a/en/usr_45.txt +++ b/en/usr_45.txt @@ -1,4 +1,4 @@ -*usr_45.txt* For Vim version 7.3. Last change: 2008 Nov 15 +*usr_45.txt* For Vim version 7.4. Last change: 2008 Nov 15 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_90.txt b/en/usr_90.txt index 3b1358daa..38e5886fa 100644 --- a/en/usr_90.txt +++ b/en/usr_90.txt @@ -1,4 +1,4 @@ -*usr_90.txt* For Vim version 7.3. Last change: 2008 Sep 10 +*usr_90.txt* For Vim version 7.4. Last change: 2008 Sep 10 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/usr_toc.txt b/en/usr_toc.txt index f0bb24ef6..d98a999aa 100644 --- a/en/usr_toc.txt +++ b/en/usr_toc.txt @@ -1,4 +1,4 @@ -*usr_toc.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*usr_toc.txt* For Vim version 7.4. Last change: 2010 Jul 20 VIM USER MANUAL - by Bram Moolenaar diff --git a/en/various.txt b/en/various.txt index 98eaf45b6..1d05e1a21 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.3. Last change: 2013 May 18 +*various.txt* For Vim version 7.4. Last change: 2013 May 18 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/version4.txt b/en/version4.txt index c652398ca..6b791be88 100644 --- a/en/version4.txt +++ b/en/version4.txt @@ -1,4 +1,4 @@ -*version4.txt* For Vim version 7.3. Last change: 2006 Apr 24 +*version4.txt* For Vim version 7.4. Last change: 2006 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/vi_diff.txt b/en/vi_diff.txt index f2f3aa164..f35cc02b9 100644 --- a/en/vi_diff.txt +++ b/en/vi_diff.txt @@ -1,4 +1,4 @@ -*vi_diff.txt* For Vim version 7.3. Last change: 2012 Aug 08 +*vi_diff.txt* For Vim version 7.4. Last change: 2012 Aug 08 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/visual.txt b/en/visual.txt index 6905c2180..cabf5f7e9 100644 --- a/en/visual.txt +++ b/en/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 7.3. Last change: 2012 Aug 15 +*visual.txt* For Vim version 7.4. Last change: 2012 Aug 15 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/windows.txt b/en/windows.txt index b529ee59e..d1561a0a2 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 7.3. Last change: 2012 Nov 15 +*windows.txt* For Vim version 7.4. Last change: 2012 Nov 15 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/workshop.txt b/en/workshop.txt index 7fde55bc9..eba6f716d 100644 --- a/en/workshop.txt +++ b/en/workshop.txt @@ -1,4 +1,4 @@ -*workshop.txt* For Vim version 7.3. Last change: 2010 Jul 20 +*workshop.txt* For Vim version 7.4. Last change: 2010 Jul 20 VIM REFERENCE MANUAL by Gordon Prieur From c72e7c124bd72e7e4b85d789b539676250be81b3 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 1 Sep 2013 02:17:05 +0900 Subject: [PATCH 430/783] Update header --- en/pi_getscript.txt | 2 +- en/workshop.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/en/pi_getscript.txt b/en/pi_getscript.txt index fa2523cc7..6fed27402 100644 --- a/en/pi_getscript.txt +++ b/en/pi_getscript.txt @@ -1,4 +1,4 @@ -*pi_getscript.txt* For Vim version 7.0. Last change: 2012 Apr 07 +*pi_getscript.txt* For Vim version 7.4. Last change: 2012 Apr 07 > GETSCRIPT REFERENCE MANUAL by Charles E. Campbell < diff --git a/en/workshop.txt b/en/workshop.txt index eba6f716d..5514f9ebb 100644 --- a/en/workshop.txt +++ b/en/workshop.txt @@ -1,4 +1,4 @@ -*workshop.txt* For Vim version 7.4. Last change: 2010 Jul 20 +*workshop.txt* For Vim version 7.4. Last change: 2013 Jul 06 VIM REFERENCE MANUAL by Gordon Prieur From ead007b49aff8129fb5a62fc7efc5e87f1d981bb Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 8 Sep 2013 18:52:37 +0900 Subject: [PATCH 431/783] Update some of en/*.txt --- en/undo.txt | 4 ++-- en/vi_diff.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/en/undo.txt b/en/undo.txt index f1990c90d..2589a151a 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 7.4. Last change: 2012 Mar 04 +*undo.txt* For Vim version 7.4. Last change: 2013 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -57,7 +57,7 @@ Use "u" to undo changes until the buffer becomes unchanged. 2. Two ways of undo *undo-two-ways* How undo and redo commands work depends on the 'u' flag in 'cpoptions'. -There is the Vim way ('u' excluded) and the vi-compatible way ('u' included). +There is the Vim way ('u' excluded) and the Vi-compatible way ('u' included). In the Vim way, "uu" undoes two changes. In the Vi-compatible way, "uu" does nothing (undoes an undo). diff --git a/en/vi_diff.txt b/en/vi_diff.txt index f35cc02b9..45fe7de08 100644 --- a/en/vi_diff.txt +++ b/en/vi_diff.txt @@ -1,4 +1,4 @@ -*vi_diff.txt* For Vim version 7.4. Last change: 2012 Aug 08 +*vi_diff.txt* For Vim version 7.4. Last change: 2013 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -150,7 +150,7 @@ Support for different systems. Multi level undo. |undo| 'u' goes backward in time, 'CTRL-R' goes forward again. Set option 'undolevels' to the number of changes to be remembered (default 1000). - Set 'undolevels' to 0 for a vi-compatible one level undo. Set it to + Set 'undolevels' to 0 for a Vi-compatible one level undo. Set it to -1 for no undo at all. When all changes in a buffer have been undone, the buffer is not considered changed anymore. You can exit it with :q, without <!>. From 40ce5196673dca1f1edabe783ca7b8d1bd9bc3ac Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 8 Sep 2013 20:51:51 +0900 Subject: [PATCH 432/783] Update some of en/*.txt --- en/farsi.txt | 2 +- en/mlang.txt | 2 +- en/os_vms.txt | 4 ++-- en/usr_24.txt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/en/farsi.txt b/en/farsi.txt index a24a2dc24..77ec419d1 100644 --- a/en/farsi.txt +++ b/en/farsi.txt @@ -1,4 +1,4 @@ -*farsi.txt* For Vim version 7.3. Last change: 2010 Aug 07 +*farsi.txt* For Vim version 7.4. Last change: 2010 Aug 07 VIM REFERENCE MANUAL by Mortaza Ghassab Shiran diff --git a/en/mlang.txt b/en/mlang.txt index bfb30a8b6..eb95660d0 100644 --- a/en/mlang.txt +++ b/en/mlang.txt @@ -1,4 +1,4 @@ -*mlang.txt* For Vim version 7.3. Last change: 2012 Jan 15 +*mlang.txt* For Vim version 7.4. Last change: 2012 Jan 15 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/os_vms.txt b/en/os_vms.txt index 6fc07694e..7002e2882 100644 --- a/en/os_vms.txt +++ b/en/os_vms.txt @@ -1,4 +1,4 @@ -*os_vms.txt* For Vim version 7.3. Last change: 2011 Aug 14 +*os_vms.txt* For Vim version 7.4. Last change: 2013 Aug 22 VIM REFERENCE MANUAL @@ -24,7 +24,7 @@ prompt. 1. Getting started *vms-started* -Vim (Vi IMproved) is a vi-compatible text editor that runs on nearly every +Vim (Vi IMproved) is a Vi-compatible text editor that runs on nearly every operating system known to humanity. Now use Vim on OpenVMS too, in character or X/Motif environment. It is fully featured and absolutely compatible with Vim on other operating systems. diff --git a/en/usr_24.txt b/en/usr_24.txt index e33e0c735..46a22c683 100644 --- a/en/usr_24.txt +++ b/en/usr_24.txt @@ -1,4 +1,4 @@ -*usr_24.txt* For Vim version 7.3. Last change: 2006 Jul 23 +*usr_24.txt* For Vim version 7.4. Last change: 2006 Jul 23 VIM USER MANUAL - by Bram Moolenaar From df75bb9e0488c26057dd735da539fd8a66217ff0 Mon Sep 17 00:00:00 2001 From: vimdoc-ja master <vimdoc-ja@vim-jp.org> Date: Sun, 6 Oct 2013 12:38:36 +0900 Subject: [PATCH 433/783] base of update script --- .gitignore | 2 ++ tools/master-update.sh | 55 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 tools/master-update.sh diff --git a/.gitignore b/.gitignore index 5ec825d0c..64789e88d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ doc/tags-ja +target +tmp diff --git a/tools/master-update.sh b/tools/master-update.sh new file mode 100644 index 000000000..7e31c6e1f --- /dev/null +++ b/tools/master-update.sh @@ -0,0 +1,55 @@ +#!/bin/sh +# vim:set sts=2 sw=2 tw=0 et: + +GIT_REPO="git@github.com:vim-jp/vimdoc-ja.git" +GIT_BRANCH="master2-test" +GIT_NAME="vimdoc-ja system" +GIT_EMAIL="vimdoc-ja@vim-jp.org" + +WORKDIR="target" +BRANCHDIR="${WORKDIR}/${GIT_BRANCH}" + +# Prepare and clean up working directories. +if [ ! -e "${WORKDIR}" ] ; then + mkdir -p "${WORKDIR}" +fi +if [ -e "${BRANCHDIR}" ] ; then + rm -rf "${BRANCHDIR}" +fi + +# Checkout a target branch. +echo "Checking out \"${GIT_BRANCH}\" from \"${GIT_REPO}\"" +git clone -q -b "${GIT_BRANCH}" --depth 5 "${GIT_REPO}" "${BRANCHDIR}" || exit 1 + +# work in BRANCHDIR. +( + echo "Make changes in \"${BRANCHDIR}\"" + cd "${BRANCHDIR}" + # TODO: update buffers + touch test.txt + ts=`date "+%Y/%m/%d %H:%M:%S%z"` + echo "${ts}" >> test.txt + if [ -e foo.txt ] ; then + rm -f foo.txt + touch bar.txt + echo "${ts} foo->bar" >> bar.txt + elif [ -e bar.txt ] ; then + rm -f bar.txt + touch foo.txt + echo "${ts} bar->foo" >> foo.txt + fi +) + +# Commit changes +( + echo "Register changes and push it to \"${GIT_REPO}\"" + sha1hash=`git show --pretty="format:%H" | head -1` + commit_message="Deployed ${sha1hash} from ${GIT_BRANCH} in ${GIT_REPO}" + cd "${BRANCHDIR}" + host=`hostname` + git config user.name "${GIT_NAME}" + git config user.email "${GIT_EMAIL}" + git add --all . + git commit -m "${commit_message}" + git push || exit 1 +) From 61284ef8884d58936a61eb8afebec1cc1a6b51f5 Mon Sep 17 00:00:00 2001 From: vimdoc-ja master <vimdoc-ja@vim-jp.org> Date: Sun, 6 Oct 2013 13:07:02 +0900 Subject: [PATCH 434/783] modularize --- tools/master-update.sh | 63 ++++++++++-------------------------------- tools/update-config.sh | 3 ++ tools/update-lib.sh | 55 ++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 48 deletions(-) create mode 100644 tools/update-config.sh create mode 100644 tools/update-lib.sh diff --git a/tools/master-update.sh b/tools/master-update.sh index 7e31c6e1f..5f5b49e9e 100644 --- a/tools/master-update.sh +++ b/tools/master-update.sh @@ -1,55 +1,22 @@ #!/bin/sh # vim:set sts=2 sw=2 tw=0 et: -GIT_REPO="git@github.com:vim-jp/vimdoc-ja.git" -GIT_BRANCH="master2-test" -GIT_NAME="vimdoc-ja system" -GIT_EMAIL="vimdoc-ja@vim-jp.org" +. `dirname $0`/update-lib.sh -WORKDIR="target" -BRANCHDIR="${WORKDIR}/${GIT_BRANCH}" +setup "master2-test" -# Prepare and clean up working directories. -if [ ! -e "${WORKDIR}" ] ; then - mkdir -p "${WORKDIR}" +# TODO: update repository. +touch test.txt +ts=`date "+%Y/%m/%d %H:%M:%S%z"` +echo "${ts}" >> test.txt +if [ -e foo.txt ] ; then + rm -f foo.txt + touch bar.txt + echo "${ts} foo->bar" >> bar.txt +elif [ -e bar.txt ] ; then + rm -f bar.txt + touch foo.txt + echo "${ts} bar->foo" >> foo.txt fi -if [ -e "${BRANCHDIR}" ] ; then - rm -rf "${BRANCHDIR}" -fi - -# Checkout a target branch. -echo "Checking out \"${GIT_BRANCH}\" from \"${GIT_REPO}\"" -git clone -q -b "${GIT_BRANCH}" --depth 5 "${GIT_REPO}" "${BRANCHDIR}" || exit 1 - -# work in BRANCHDIR. -( - echo "Make changes in \"${BRANCHDIR}\"" - cd "${BRANCHDIR}" - # TODO: update buffers - touch test.txt - ts=`date "+%Y/%m/%d %H:%M:%S%z"` - echo "${ts}" >> test.txt - if [ -e foo.txt ] ; then - rm -f foo.txt - touch bar.txt - echo "${ts} foo->bar" >> bar.txt - elif [ -e bar.txt ] ; then - rm -f bar.txt - touch foo.txt - echo "${ts} bar->foo" >> foo.txt - fi -) -# Commit changes -( - echo "Register changes and push it to \"${GIT_REPO}\"" - sha1hash=`git show --pretty="format:%H" | head -1` - commit_message="Deployed ${sha1hash} from ${GIT_BRANCH} in ${GIT_REPO}" - cd "${BRANCHDIR}" - host=`hostname` - git config user.name "${GIT_NAME}" - git config user.email "${GIT_EMAIL}" - git add --all . - git commit -m "${commit_message}" - git push || exit 1 -) +teardown "vim-jp/vimdoc-ja@" diff --git a/tools/update-config.sh b/tools/update-config.sh new file mode 100644 index 000000000..85c2c3c63 --- /dev/null +++ b/tools/update-config.sh @@ -0,0 +1,3 @@ +GIT_REPO="git@github.com:vim-jp/vimdoc-ja.git" +GIT_NAME="vimdoc-ja system" +GIT_EMAIL="vimdoc-ja@vim-jp.org" diff --git a/tools/update-lib.sh b/tools/update-lib.sh new file mode 100644 index 000000000..2da3169d6 --- /dev/null +++ b/tools/update-lib.sh @@ -0,0 +1,55 @@ +CONFIGFILE=`dirname $0`/update-config.sh + +. "${CONFIGFILE}" + +if [ x"${GIT_REPO}" = "x" ] ; then + echo "GIT_REPO is missing in \"${CONFIGFILE}\"" && exit 1 +fi +if [ x"${GIT_NAME}" = "x" ] ; then + echo "GIT_NAME is missing in \"${CONFIGFILE}\"" && exit 1 +fi +if [ x"${GIT_EMAIL}" = "x" ] ; then + echo "GIT_EMAIL is missing in \"${CONFIGFILE}\"" && exit 1 +fi + +setup() { + GIT_BRANCH="$1" ; shift + if [ x"${GIT_BRANCH}" = "x" ] ; then + echo "GIT_BRANCH is required" + exit 1 + fi + + WORKDIR="target" + BRANCHDIR="${WORKDIR}/${GIT_BRANCH}" + + # FIXME: exit if failed. + SHA1HASH=`git show --pretty="format:%H" | head -1` + + # Prepare and clean up working directories. + if [ ! -e "${WORKDIR}" ] ; then + mkdir -p "${WORKDIR}" + fi + if [ -e "${BRANCHDIR}" ] ; then + rm -rf "${BRANCHDIR}" + fi + + # Checkout a target branch. + echo "Checking out \"${GIT_BRANCH}\" from \"${GIT_REPO}\"" + git clone -q -b "${GIT_BRANCH}" --depth 5 "${GIT_REPO}" "${BRANCHDIR}" || exit 1 + + echo "Make changes in \"${BRANCHDIR}\"" + cd "${BRANCHDIR}" + _gitdir=`pwd` +} + +teardown() { + HASH_PREFIX=$1 ; shift + echo "Register changes and push it to \"${GIT_REPO}\"" + cd "${_gitdir}" + git config user.name "${GIT_NAME}" + git config user.email "${GIT_EMAIL}" + git add --all . + commit_message="Deployed ${HASH_PREFIX}${SHA1HASH} by `hostname`" + git commit -m "${commit_message}" + git push || exit 1 +} From 96a5d86b54a08e40ad3c41635cfd4fa8d1db69a9 Mon Sep 17 00:00:00 2001 From: vimdoc-ja master <vimdoc-ja@vim-jp.org> Date: Sun, 6 Oct 2013 13:26:49 +0900 Subject: [PATCH 435/783] suppress to commit if no changes --- tools/master-update.sh | 1 + tools/update-lib.sh | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/tools/master-update.sh b/tools/master-update.sh index 5f5b49e9e..e7e0ac25c 100644 --- a/tools/master-update.sh +++ b/tools/master-update.sh @@ -6,6 +6,7 @@ setup "master2-test" # TODO: update repository. +cd "${BRANCHDIR}" touch test.txt ts=`date "+%Y/%m/%d %H:%M:%S%z"` echo "${ts}" >> test.txt diff --git a/tools/update-lib.sh b/tools/update-lib.sh index 2da3169d6..99ecea2f6 100644 --- a/tools/update-lib.sh +++ b/tools/update-lib.sh @@ -38,18 +38,24 @@ setup() { git clone -q -b "${GIT_BRANCH}" --depth 5 "${GIT_REPO}" "${BRANCHDIR}" || exit 1 echo "Make changes in \"${BRANCHDIR}\"" + PARENTDIR=`pwd` cd "${BRANCHDIR}" - _gitdir=`pwd` + CHILDDIR=`pwd` + cd "${PARENTDIR}" } teardown() { HASH_PREFIX=$1 ; shift - echo "Register changes and push it to \"${GIT_REPO}\"" - cd "${_gitdir}" + cd "${CHILDDIR}" git config user.name "${GIT_NAME}" git config user.email "${GIT_EMAIL}" git add --all . - commit_message="Deployed ${HASH_PREFIX}${SHA1HASH} by `hostname`" - git commit -m "${commit_message}" - git push || exit 1 + if ! git diff --quiet HEAD ; then + echo "Register changes and push it to \"${GIT_REPO}\"" + commit_message="Deployed ${HASH_PREFIX}${SHA1HASH} by `hostname`" + git commit -m "${commit_message}" + git push || exit 1 + else + echo "No changes" + fi } From 7efbede09da96474931a45ca6a3897aaf719d57b Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 13:35:48 +0900 Subject: [PATCH 436/783] finsih update-master script --- tools/master-update.sh | 23 ----------------------- tools/update-master.sh | 13 +++++++++++++ 2 files changed, 13 insertions(+), 23 deletions(-) delete mode 100644 tools/master-update.sh create mode 100644 tools/update-master.sh diff --git a/tools/master-update.sh b/tools/master-update.sh deleted file mode 100644 index e7e0ac25c..000000000 --- a/tools/master-update.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# vim:set sts=2 sw=2 tw=0 et: - -. `dirname $0`/update-lib.sh - -setup "master2-test" - -# TODO: update repository. -cd "${BRANCHDIR}" -touch test.txt -ts=`date "+%Y/%m/%d %H:%M:%S%z"` -echo "${ts}" >> test.txt -if [ -e foo.txt ] ; then - rm -f foo.txt - touch bar.txt - echo "${ts} foo->bar" >> bar.txt -elif [ -e bar.txt ] ; then - rm -f bar.txt - touch foo.txt - echo "${ts} bar->foo" >> foo.txt -fi - -teardown "vim-jp/vimdoc-ja@" diff --git a/tools/update-master.sh b/tools/update-master.sh new file mode 100644 index 000000000..74b3b0e9d --- /dev/null +++ b/tools/update-master.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# vim:set sts=2 sw=2 tw=0 et: + +. `dirname $0`/update-lib.sh + +setup "master2-test" + +# Copy files. +rsync -rlptD --delete-after doc/ ${BRANCHDIR}/doc +rsync -rlptD --delete-after syntax/ ${BRANCHDIR}/syntax +rsync -rlptD --delete-after README.md ${BRANCHDIR}/README.md + +teardown "vim-jp/vimdoc-ja@" From 40884cec39e5accf0e956718d816c9b549e90902 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 13:39:22 +0900 Subject: [PATCH 437/783] add missing files --- doc/evim-ja.UTF-8.1 | 51 +++++++++++++++++++++++++++++++++++++++++ doc/vimtutor-ja.UTF-8.1 | 45 ++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 doc/evim-ja.UTF-8.1 create mode 100644 doc/vimtutor-ja.UTF-8.1 diff --git a/doc/evim-ja.UTF-8.1 b/doc/evim-ja.UTF-8.1 new file mode 100644 index 000000000..1b7a657eb --- /dev/null +++ b/doc/evim-ja.UTF-8.1 @@ -0,0 +1,51 @@ +.TH EVIM 1 "2002 February 16" +.SH 名前 +evim \- easy Vim, モードレスエディタ Vim +.SH 書式 +.br +.B evim +[options] [file ..] +.br +.B eview +.SH 説明 +.B eVim +は +.B Vim +を起動して、モードレスエディタとして動作するためのオプションを設定します。 +Vim の動作が point-and-click エディタのような動作になります。 +MS-Windows のメモ帳のような動作です。 +.B eVim +は常に GUI で起動し、メニューとツールバーを表示します。 +.PP +どうしても Vim の操作に馴染めない場合に使ってください。 +編集効率は下がります。 +.PP +.B eview +は同様に、読み込み専用モードで起動します。evim \-R と同じです。 +.PP +引数や Vim についての詳細は vim(1) を参照してください。 +.PP +オプション 'insertmode' が設定され、テキストを直接、入力できるようになりま +す。 +.br +コピーとペーストのキー操作が MS-Windows と同じになるように、マップが設定され +ます。 +CTRL-X が切り取り、CTRL-C がコピー、CTRL-V がペーストです。 +標準の CTRL-V の操作は CTRL-Q に割り当てられます。 +.SH オプション +vim(1) を参照してください。 +.SH ファイル +.TP 15 +/usr/local/lib/vim/evim.vim +eVim の初期化スクリプト。 +.SH 別名 +evim は "gumbies のための Vim" とも呼ばれています。 +evim を使っているあなたはきっと、頭にハンカチをかぶっているのです。 +(訳注: gumbies は Monty Python に登場するおもしろ集団。ハンカチをかぶっ +ている。) +.SH 関連項目 +vim(1) +.SH 著者 +.B Vim +のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 +メニューの Help/Credits を参照してください。 diff --git a/doc/vimtutor-ja.UTF-8.1 b/doc/vimtutor-ja.UTF-8.1 new file mode 100644 index 000000000..29b9b48f2 --- /dev/null +++ b/doc/vimtutor-ja.UTF-8.1 @@ -0,0 +1,45 @@ +.TH VIMTUTOR 1 "2001 April 2" +.SH 名前 +vimtutor \- Vim チュートリアル +.SH 書式 +.br +.B vimtutor [\-g] [language] +.SH 説明 +.B Vim +のチュートリアルを起動します。 +演習ファイルのコピーを使って実施するので、オリジナルの演習ファイルを壊してし +まう心配はありません。 +.PP +.B Vim +を初めて学ぶ人向けのチュートリアルです。 +.PP +引数に \-g を指定すると GUI 版の vim が利用可能であれば vim ではなく gvim を +使って vimtutor が開始します。gvim が見つからないときは Vim が使用されます。 +.PP +[language] 引数は "ja" や "es" などの二文字の言語名です。 +[language] 引数を省略した場合はロケールの言語が使われます。 +翻訳された演習ファイルがある場合は、そのファイルが使われます。 +ない場合は英語のファイルが使われます。 +.PP +.B Vim +は Vi 互換モードで起動されます。 +.SH ファイル +.TP 15 +/usr/local/lib/vim/tutor/tutor[.language] +.B Vimtutor +の演習ファイル。 +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +演習ファイルをコピーするための Vim スクリプト。 +.SH 著者 +.B Vimtutor +は、Colorado State University の Charles Smith のアイデアを基に、 +Colorado School of Mines の Michael C. Pierce と Robert K. Ware の両名 +によって Vi 向けに作成されたものを基にしています。 +E-mail: bware@mines.colorado.edu. +.br +.B Vim +に合わせて Bram Moolenaar が変更を加えました。 +翻訳者の名前は演習ファイルを参照してください。 +.SH 関連項目 +vim(1) From 7ea45048f795dcca1be12d1227193733272a7ff1 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 13:53:42 +0900 Subject: [PATCH 438/783] enable auto deploy for master --- Makefile | 2 ++ tools/update-master.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 43ceddc31..7eb09868e 100644 --- a/Makefile +++ b/Makefile @@ -12,3 +12,5 @@ htmlbatch: vim -u tools/buildhtml.vim -e -s -- --batch cd html && git push .. +deploy: + sh ./tools/update-master.sh diff --git a/tools/update-master.sh b/tools/update-master.sh index 74b3b0e9d..ffa21f276 100644 --- a/tools/update-master.sh +++ b/tools/update-master.sh @@ -3,7 +3,7 @@ . `dirname $0`/update-lib.sh -setup "master2-test" +setup "master" # Copy files. rsync -rlptD --delete-after doc/ ${BRANCHDIR}/doc From e62a6e886a61f8c4afd435e0416073fe1b953c51 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 14:13:01 +0900 Subject: [PATCH 439/783] a script to update gh-pages (intermediate) --- Makefile | 7 +++++-- tools/to_html.sh | 17 +++++++++++++++++ tools/update-gh-pages.sh | 13 +++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 tools/to_html.sh create mode 100644 tools/update-gh-pages.sh diff --git a/Makefile b/Makefile index 7eb09868e..990f58cf3 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,4 @@ - -.PHONY: all html htmlbatch +.PHONY: all html htmlbatch clean all: @@ -14,3 +13,7 @@ htmlbatch: deploy: sh ./tools/update-master.sh + sh ./tools/update-gh-pages.sh + +clean: + rm -rf target diff --git a/tools/to_html.sh b/tools/to_html.sh new file mode 100644 index 000000000..ac955fa8b --- /dev/null +++ b/tools/to_html.sh @@ -0,0 +1,17 @@ +to_html_dir() { + srcdir=$1 ; shift + dstdir=$1 ; shift + ext=$1 ; shift + for i in "${srcdir}/"*.${ext} ; do + dst="${i##*/}" + dst="${dst%.*}.html" + to_html_file "$i" "${dstdir}/${dst}" + done +} + +to_html_file() { + src=$1 ; shift + dst=$1 ; shift + echo "to_html_file: $src -> $dst" + # TODO: +} diff --git a/tools/update-gh-pages.sh b/tools/update-gh-pages.sh new file mode 100644 index 000000000..23426a741 --- /dev/null +++ b/tools/update-gh-pages.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# vim:set sts=2 sw=2 tw=0 et: + +. `dirname $0`/update-lib.sh +. `dirname $0`/to_html.sh + +setup "test-gh-pages" + +# Convert *.jax files to *.html. +to_html_dir "doc" "${BRANCHDIR}" "jax" +to_html_file "vim_faq/vim_faq.jax" "${BRANCHDIR}/vim_faq.html" + +teardown "vim-jp/vimdoc-ja@" From c8ed374afbada63bae2d218794bfda1c34122f64 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 15:48:05 +0900 Subject: [PATCH 440/783] impl scripts --- tools/makehtml.vim | 13 ++++++++---- tools/to_html.sh | 12 +++++++++-- tools/to_html.vim | 46 ++++++++++++++++++++++++++++++++++++++++ tools/update-gh-pages.sh | 2 ++ 4 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 tools/to_html.vim diff --git a/tools/makehtml.vim b/tools/makehtml.vim index 46d31c35c..9cdea1637 100644 --- a/tools/makehtml.vim +++ b/tools/makehtml.vim @@ -73,7 +73,13 @@ function! MakeTagsFile() endfunction function! MakeHtml(fname) - new `=a:fname` + let r = MakeHtml2(a:fname, s:HtmlName(a:fname)) + quit! + return r +endfunction + +function! MakeHtml2(src, dst) + new `=a:src` " 2html options let g:html_use_css = 1 @@ -90,7 +96,7 @@ function! MakeHtml(fname) silent! %foldopen! TOhtml - let lang = s:GetLang(a:fname) + let lang = s:GetLang(a:src) silent %s@<span class="\(helpHyperTextEntry\|helpHyperTextJump\|helpOption\)">\([^<]*\)</span>@\=s:MakeLink(lang, submatch(1), submatch(2))@ge silent %s@^<span class="Ignore"><</span>\ze @\ @ge silent %s@<span class="\(helpStar\|helpBar\|Ignore\)">[^<]*</span>@@ge @@ -101,8 +107,7 @@ function! MakeHtml(fname) call s:Header() call s:Footer() - wq! `=s:HtmlName(a:fname)` - quit! + wq! `=a:dst` endfunction " <span>...</span> -> <div>... diff --git a/tools/to_html.sh b/tools/to_html.sh index ac955fa8b..0690842a8 100644 --- a/tools/to_html.sh +++ b/tools/to_html.sh @@ -1,3 +1,11 @@ +to_html_setup() { + echo "TODO: to_html_setup" +} + +to_html_teardown() { + echo "TODO: to_html_teardown" +} + to_html_dir() { srcdir=$1 ; shift dstdir=$1 ; shift @@ -12,6 +20,6 @@ to_html_dir() { to_html_file() { src=$1 ; shift dst=$1 ; shift - echo "to_html_file: $src -> $dst" - # TODO: + echo "convert: ${src} -> ${dst}" + #vim -e -s -u "tools/to_html.vim" -c "call ToJekyllHTML('${src}', '${dst}')" -c "silent! visual" -c qall! } diff --git a/tools/to_html.vim b/tools/to_html.vim new file mode 100644 index 000000000..c9054cb5a --- /dev/null +++ b/tools/to_html.vim @@ -0,0 +1,46 @@ +" vim:set sts=2 sw=2 tw=0 et: +scriptencoding utf-8 + +set nocompatible +set nomore +set encoding=utf-8 +set fileencodings=utf-8 +set foldlevel=1000 +set nomodeline +set fileformat=unix +syntax on +colorscheme delek +let g:html_no_progress = 1 + +runtime plugin/tohtml.vim +source <sfile>:h:h/tools/makehtml.vim + +function! ToJekyll(dst) + e! `=a:dst` + + let helpname = expand('%:t:r') + if helpname == 'index' + let helpname = 'help' + endif + " remove header + 1,/^<hr>/delete _ + " remove footer + /^<hr>/,$delete _ + " escape jekyll tags + %s/{\{2,}\|{%/{{ "\0" }}/ge + " YAML front matter + call append(0, [ + \ '---', + \ 'layout: vimdoc', + \ printf("helpname: '%s'", helpname), + \ '---', + \ ]) + setlocal fileformat=unix + + wq! `=a:dst` +endfunction + +function! ToJekyllHTML(src, dst) + call MakeHtml2(a:src, a:dst) + call ToJekyll(a:dst) +endfunction diff --git a/tools/update-gh-pages.sh b/tools/update-gh-pages.sh index 23426a741..84728ee77 100644 --- a/tools/update-gh-pages.sh +++ b/tools/update-gh-pages.sh @@ -7,7 +7,9 @@ setup "test-gh-pages" # Convert *.jax files to *.html. +to_html_setup to_html_dir "doc" "${BRANCHDIR}" "jax" to_html_file "vim_faq/vim_faq.jax" "${BRANCHDIR}/vim_faq.html" +to_html_teardown teardown "vim-jp/vimdoc-ja@" From 1d92d1fd00254c23850e9b5284eef68d876c85b3 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 16:15:49 +0900 Subject: [PATCH 441/783] add comments --- tools/to_html.sh | 5 +++-- tools/to_html.vim | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/to_html.sh b/tools/to_html.sh index 0690842a8..eba6f0313 100644 --- a/tools/to_html.sh +++ b/tools/to_html.sh @@ -1,9 +1,9 @@ to_html_setup() { - echo "TODO: to_html_setup" + echo "TODO: generate tags-ja and others" } to_html_teardown() { - echo "TODO: to_html_teardown" + echo "TODO: clean up tags-ja and others" } to_html_dir() { @@ -21,5 +21,6 @@ to_html_file() { src=$1 ; shift dst=$1 ; shift echo "convert: ${src} -> ${dst}" + # TODO: enable this line. #vim -e -s -u "tools/to_html.vim" -c "call ToJekyllHTML('${src}', '${dst}')" -c "silent! visual" -c qall! } diff --git a/tools/to_html.vim b/tools/to_html.vim index c9054cb5a..72dc6ff04 100644 --- a/tools/to_html.vim +++ b/tools/to_html.vim @@ -1,9 +1,10 @@ " vim:set sts=2 sw=2 tw=0 et: scriptencoding utf-8 +set rtp+=. set nocompatible set nomore -set encoding=utf-8 +"set encoding=utf-8 set fileencodings=utf-8 set foldlevel=1000 set nomodeline From 29440cdb473f10e070cbe3fdb6bb212c5adcc7b1 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 17:52:00 +0900 Subject: [PATCH 442/783] finish for gh-pages --- tools/buildhtml.vim | 54 +++------------------------------------- tools/to_html.sh | 26 ------------------- tools/to_html.vim | 47 ---------------------------------- tools/update-gh-pages.sh | 20 ++++++++++----- 4 files changed, 18 insertions(+), 129 deletions(-) delete mode 100644 tools/to_html.sh delete mode 100644 tools/to_html.vim diff --git a/tools/buildhtml.vim b/tools/buildhtml.vim index 5663843b1..27ad6f421 100644 --- a/tools/buildhtml.vim +++ b/tools/buildhtml.vim @@ -7,49 +7,19 @@ set fileencodings=utf-8 syntax on colorscheme delek - -" TODO: argument parser enew! -let g:argv = argv() -argdelete * runtime plugin/tohtml.vim -source <sfile>:h:h/tools/makehtml.vim +source <sfile>:h/makehtml.vim function! s:main() - if isdirectory('html') - call s:rmdir('html') - endif - call s:system('git clone . html') - cd html - call s:system('git branch -f master origin/master') - call s:system('git branch -f gh-pages origin/gh-pages') - call s:system('git checkout master') - call s:system('git checkout-index --prefix=master/ -a') - call s:system('git checkout devel') - call s:system('git checkout-index --prefix=devel/ -a') - call s:system('git checkout gh-pages') " for ja custom syntax - let &runtimepath .= ',' . fnamemodify('./master', ':p') + let &runtimepath .= ',' . expand('<sfile>:p:h') call s:BuildHtml() - try - call s:system('git commit -a -m "update html"') - catch - " pass: nothing to be committed - endtry - cd .. endfunction function! s:BuildHtml() - call mkdir('tmp') - cd tmp - - " - " copy dist files - " - args ../master/doc/* ../devel/vim_faq/vim_faq.jax - argdo saveas %:t " generate tags try @@ -71,9 +41,7 @@ function! s:BuildHtml() " 2html.vim escape modeline. But it doesn't escape /^vim:/. set nomodeline args *.html - argdo call s:PostEdit() | saveas! ../%:t - - cd .. + argdo call s:PostEdit() | update! endfunction function! s:system(cmd) @@ -116,18 +84,4 @@ function! s:ToJekyll() \ ]) endfunction -if index(g:argv, "--batch") != -1 - try - call s:main() - catch - cquit - endtry - " XXX: (ex-mode) To quit with state 0, use :visual. See main.c:1307 - silent! visual - qall! -else - try - call s:main() - endtry -endif - +call s:main() diff --git a/tools/to_html.sh b/tools/to_html.sh deleted file mode 100644 index eba6f0313..000000000 --- a/tools/to_html.sh +++ /dev/null @@ -1,26 +0,0 @@ -to_html_setup() { - echo "TODO: generate tags-ja and others" -} - -to_html_teardown() { - echo "TODO: clean up tags-ja and others" -} - -to_html_dir() { - srcdir=$1 ; shift - dstdir=$1 ; shift - ext=$1 ; shift - for i in "${srcdir}/"*.${ext} ; do - dst="${i##*/}" - dst="${dst%.*}.html" - to_html_file "$i" "${dstdir}/${dst}" - done -} - -to_html_file() { - src=$1 ; shift - dst=$1 ; shift - echo "convert: ${src} -> ${dst}" - # TODO: enable this line. - #vim -e -s -u "tools/to_html.vim" -c "call ToJekyllHTML('${src}', '${dst}')" -c "silent! visual" -c qall! -} diff --git a/tools/to_html.vim b/tools/to_html.vim deleted file mode 100644 index 72dc6ff04..000000000 --- a/tools/to_html.vim +++ /dev/null @@ -1,47 +0,0 @@ -" vim:set sts=2 sw=2 tw=0 et: -scriptencoding utf-8 - -set rtp+=. -set nocompatible -set nomore -"set encoding=utf-8 -set fileencodings=utf-8 -set foldlevel=1000 -set nomodeline -set fileformat=unix -syntax on -colorscheme delek -let g:html_no_progress = 1 - -runtime plugin/tohtml.vim -source <sfile>:h:h/tools/makehtml.vim - -function! ToJekyll(dst) - e! `=a:dst` - - let helpname = expand('%:t:r') - if helpname == 'index' - let helpname = 'help' - endif - " remove header - 1,/^<hr>/delete _ - " remove footer - /^<hr>/,$delete _ - " escape jekyll tags - %s/{\{2,}\|{%/{{ "\0" }}/ge - " YAML front matter - call append(0, [ - \ '---', - \ 'layout: vimdoc', - \ printf("helpname: '%s'", helpname), - \ '---', - \ ]) - setlocal fileformat=unix - - wq! `=a:dst` -endfunction - -function! ToJekyllHTML(src, dst) - call MakeHtml2(a:src, a:dst) - call ToJekyll(a:dst) -endfunction diff --git a/tools/update-gh-pages.sh b/tools/update-gh-pages.sh index 84728ee77..38be2484f 100644 --- a/tools/update-gh-pages.sh +++ b/tools/update-gh-pages.sh @@ -2,14 +2,22 @@ # vim:set sts=2 sw=2 tw=0 et: . `dirname $0`/update-lib.sh -. `dirname $0`/to_html.sh -setup "test-gh-pages" +setup "gh-pages" # Convert *.jax files to *.html. -to_html_setup -to_html_dir "doc" "${BRANCHDIR}" "jax" -to_html_file "vim_faq/vim_faq.jax" "${BRANCHDIR}/vim_faq.html" -to_html_teardown +TOHTML_DIR="target/to_html" +if [ -e "${TOHTML_DIR}" ] ; then + rm -rf "${TOHTML_DIR}" +fi +if [ ! -e "${TOHTML_DIR}" ] ; then + mkdir -p "${TOHTML_DIR}/doc" +fi +cp -R syntax "${TOHTML_DIR}" +cp doc/*.jax vim_faq/*.jax "${TOHTML_DIR}/doc" +cp tools/buildhtml.vim tools/makehtml.vim "${TOHTML_DIR}" +( cd "${TOHTML_DIR}/doc" && vim -esu ../buildhtml.vim -c "qall!") + +rsync -rlptD --delete-after "${TOHTML_DIR}"/doc/*.html "${BRANCHDIR}/" teardown "vim-jp/vimdoc-ja@" From a177fe29b536e478f8e730a55604dbeda31da99b Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 18:05:39 +0900 Subject: [PATCH 443/783] settings for test drive --- tools/update-gh-pages.sh | 2 +- tools/update-master.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/update-gh-pages.sh b/tools/update-gh-pages.sh index 38be2484f..9dc420c92 100644 --- a/tools/update-gh-pages.sh +++ b/tools/update-gh-pages.sh @@ -3,7 +3,7 @@ . `dirname $0`/update-lib.sh -setup "gh-pages" +setup "test-gh-pages" # Convert *.jax files to *.html. TOHTML_DIR="target/to_html" diff --git a/tools/update-master.sh b/tools/update-master.sh index ffa21f276..2ccffa302 100644 --- a/tools/update-master.sh +++ b/tools/update-master.sh @@ -3,7 +3,7 @@ . `dirname $0`/update-lib.sh -setup "master" +setup "test-master" # Copy files. rsync -rlptD --delete-after doc/ ${BRANCHDIR}/doc From c3f2b8d8044d94d421f40cbfcf5977b9816e6ce1 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 18:14:26 +0900 Subject: [PATCH 444/783] suppress vim outputs --- tools/update-gh-pages.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/update-gh-pages.sh b/tools/update-gh-pages.sh index 9dc420c92..041a2e541 100644 --- a/tools/update-gh-pages.sh +++ b/tools/update-gh-pages.sh @@ -16,7 +16,7 @@ fi cp -R syntax "${TOHTML_DIR}" cp doc/*.jax vim_faq/*.jax "${TOHTML_DIR}/doc" cp tools/buildhtml.vim tools/makehtml.vim "${TOHTML_DIR}" -( cd "${TOHTML_DIR}/doc" && vim -esu ../buildhtml.vim -c "qall!") +( cd "${TOHTML_DIR}/doc" && vim -esu ../buildhtml.vim -c "qall!") > /dev/null rsync -rlptD --delete-after "${TOHTML_DIR}"/doc/*.html "${BRANCHDIR}/" From 25241096b4c2ce7ec6d2b65e614fc2b247ce500b Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 18:21:17 +0900 Subject: [PATCH 445/783] test 1 --- doc/tips.jax | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/tips.jax b/doc/tips.jax index ebc2c7363..d24d027ea 100644 --- a/doc/tips.jax +++ b/doc/tips.jax @@ -541,4 +541,6 @@ Sam Lantinga <slouken@cs.ucdavis.edu> です。もう一つの方法は "window" autocmd InsertEnter * match none < +TEST: cronが機能するかのテスト。すぐに消します。 + vim:tw=78:ts=8:ft=help:norl: From eda8a95e0f5c784d26fce1cfdb373b285b48a3fa Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 6 Oct 2013 18:31:01 +0900 Subject: [PATCH 446/783] revert previous change (test 1) --- doc/tips.jax | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/tips.jax b/doc/tips.jax index d24d027ea..ebc2c7363 100644 --- a/doc/tips.jax +++ b/doc/tips.jax @@ -541,6 +541,4 @@ Sam Lantinga <slouken@cs.ucdavis.edu> です。もう一つの方法は "window" autocmd InsertEnter * match none < -TEST: cronが機能するかのテスト。すぐに消します。 - vim:tw=78:ts=8:ft=help:norl: From a4797bf9efe442dae5f0b2e6ac15e8394b574538 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 12 Oct 2013 10:33:47 +0900 Subject: [PATCH 447/783] launch auto update --- tools/update-gh-pages.sh | 2 +- tools/update-master.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/update-gh-pages.sh b/tools/update-gh-pages.sh index 041a2e541..d4c304063 100644 --- a/tools/update-gh-pages.sh +++ b/tools/update-gh-pages.sh @@ -3,7 +3,7 @@ . `dirname $0`/update-lib.sh -setup "test-gh-pages" +setup "gh-pages" # Convert *.jax files to *.html. TOHTML_DIR="target/to_html" diff --git a/tools/update-master.sh b/tools/update-master.sh index 2ccffa302..ffa21f276 100644 --- a/tools/update-master.sh +++ b/tools/update-master.sh @@ -3,7 +3,7 @@ . `dirname $0`/update-lib.sh -setup "test-master" +setup "master" # Copy files. rsync -rlptD --delete-after doc/ ${BRANCHDIR}/doc From 1214160cba572ea147cf144c93bc4350eca149e3 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 12 Oct 2013 10:45:41 +0900 Subject: [PATCH 448/783] fix nuance for test --- doc/eval.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index b3c6a1935..030ca039d 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -8251,11 +8251,11 @@ Vimの現在の処理を混乱させたり破壊してしまうような動作 起こりうる。 テキストロックが有効になっているときは、以下の事が禁止される: - - バッファの変更 + - バッファのテキスト変更 - 他のバッファやウィンドウへの移動 - 他のファイルを開く - - ウィンドウを閉じる。Vimを終了する。 - - など。 + - ウィンドウを閉じたりVimを終了したり + - その他 vim:tw=78:ts=8:ft=help:norl: From e870b73035d9e2194a0798e9d5254a1660d47c78 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 27 Aug 2013 22:02:54 +0900 Subject: [PATCH 449/783] update English documents to 7.4 --- en/autocmd.txt | 14 ++- en/change.txt | 23 ++++- en/diff.txt | 18 ++-- en/eval.txt | 31 +++++- en/gui.txt | 16 +++- en/if_lua.txt | 90 +++++++++++++++--- en/if_perl.txt | 2 +- en/if_pyth.txt | 126 +++++++++++++++++++++++-- en/indent.txt | 50 +++++++++- en/index.txt | 12 ++- en/insert.txt | 54 +++++++---- en/map.txt | 48 +++++++--- en/motion.txt | 7 +- en/options.txt | 125 ++++++++++++++++++------- en/os_win32.txt | 2 +- en/pi_vimball.txt | 2 +- en/quickfix.txt | 4 +- en/quickref.txt | 44 ++++----- en/repeat.txt | 7 +- en/starting.txt | 40 +++++--- en/syntax.txt | 233 ++++++++++++++++++++++++++++++---------------- en/tagsrch.txt | 10 +- en/undo.txt | 7 +- en/usr_25.txt | 2 +- en/usr_40.txt | 16 ++-- en/usr_45.txt | 4 +- en/various.txt | 2 + 27 files changed, 734 insertions(+), 255 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index 3a4643221..3384051e2 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.4. Last change: 2013 May 19 +*autocmd.txt* For Vim version 7.4. Last change: 2013 Aug 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -513,9 +513,9 @@ CursorHold When the user doesn't press a key for the time CursorHoldI Just like CursorHold, but in Insert mode. *CursorMoved* -CursorMoved After the cursor was moved in Normal mode. - Also when the text of the cursor line has been - changed, e.g., with "x", "rx" or "p". +CursorMoved After the cursor was moved in Normal or Visual + mode. Also when the text of the cursor line + has been changed, e.g., with "x", "rx" or "p". Not triggered when there is typeahead or when an operator is pending. For an example see |match-parens|. @@ -952,7 +952,8 @@ the autocommand is executed. This is different from the command! *file-pattern* The pattern is interpreted like mostly used in file names: - * matches any sequence of characters + * matches any sequence of characters; Unusual: includes path + separators ? matches any single character \? matches a '?' . matches a '.' @@ -961,6 +962,9 @@ The pattern is interpreted like mostly used in file names: \, matches a ',' { } like \( \) in a |pattern| , inside { }: like \| in a |pattern| + \} literal } + \{ literal { + \\\{n,m\} like \{n,m} in a |pattern| \ special meaning like in a |pattern| [ch] matches 'c' or 'h' [^ch] match any character but 'c' and 'h' diff --git a/en/change.txt b/en/change.txt index aaf573285..77c791ed5 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.4. Last change: 2013 Mar 19 +*change.txt* For Vim version 7.4. Last change: 2013 Aug 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -71,9 +71,21 @@ For inserting text see |insert.txt|. "D" deletes the highlighted text plus all text until the end of the line. {not in Vi} - *:d* *:de* *:del* *:delete* *:dl* + *:d* *:de* *:del* *:delete* *:dl* *:dp* :[range]d[elete] [x] Delete [range] lines (default: current line) [into register x]. + Note these weird abbreviations: + :dl delete and list + :dell idem + :delel idem + :deletl idem + :deletel idem + :dp delete and print + :dep idem + :delp idem + :delep idem + :deletp idem + :deletep idem :[range]d[elete] [x] {count} Delete {count} lines, starting with [range] @@ -1057,6 +1069,11 @@ another register. E.g., yank the text to copy, Visually select the text to replace and use "0p . You can repeat this as many times as you like, the unnamed register will be changed each time. +When you use a blockwise Visual mode command and yank only a single line into +a register, a paste on a visual selected area will paste that single line on +each of the selected lines (thus replacing the blockwise selected region by a +block of the pasted line). + *blockwise-register* If you use a blockwise Visual mode command to get the text into the register, the block of text will be inserted before ("P") or after ("p") the cursor @@ -1114,6 +1131,8 @@ less than one line (the small delete register is used then). An exception is made for the delete operator with these movement commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|. Register "1 is always used then (this is Vi compatible). The "- register is used as well if the delete is within a line. +Note that these characters may be mapped. E.g. |%| is mapped by the matchit +plugin. With each successive deletion or change, Vim shifts the previous contents of register 1 into register 2, 2 into 3, and so forth, losing the previous contents of register 9. diff --git a/en/diff.txt b/en/diff.txt index a23fe5ab1..96dff3509 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.4. Last change: 2012 Sep 05 +*diff.txt* For Vim version 7.4. Last change: 2013 Sep 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -123,14 +123,18 @@ Since the option values are remembered with the buffer, you can edit another file for a moment and come back to the same file and be in diff mode again. *:diffo* *:diffoff* -:diffo[ff] Switch off diff mode for the current window. +:diffo[ff] Switch off diff mode for the current window. Resets related + options also when 'diff' was not set. :diffo[ff]! Switch off diff mode for the current window and in all windows - in the current tab page where 'diff' is set. - -The ":diffoff" command resets the relevant options to their default value. -This may be different from what the values were before diff mode was started, -the old values are not remembered. + in the current tab page where 'diff' is set. Resetting + related options only happens in a window that has 'diff' set, + if the current window does not have 'diff' set then no options + in it are changed. + +The ":diffoff" command resets the relevant options to the values they had when +using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode. +Otherwise they are set to their default value: 'diff' off 'scrollbind' off diff --git a/en/eval.txt b/en/eval.txt index f7cc93b72..60b01a8bf 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2013 May 21 +*eval.txt* For Vim version 7.4. Last change: 2013 Aug 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -123,6 +123,7 @@ around the arguments, to invoke the function it refers to. Example: > :echo Fn() < *E704* *E705* *E707* A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:". You +can use "g:" but the following name must still start with a capital. You cannot have both a Funcref variable and a function with the same name. A special case is defining a function and directly assigning its Funcref to a @@ -1906,6 +1907,8 @@ repeat( {expr}, {count}) String repeat {expr} {count} times resolve( {filename}) String get filename a shortcut points to reverse( {list}) List reverse {list} in-place round( {expr}) Float round off {expr} +screenattr( {row}, {col}) Number attribute at screen position +screenchar( {row}, {col}) Number character at screen position screencol() Number current cursor column screenrow() Number current cursor row search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) @@ -2773,7 +2776,8 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* file name contains a space] If the expansion fails, the result is an empty string. A name - for a non-existing file is not included. + for a non-existing file is not included, unless {expr} does + not start with '%', '#' or '<', see below. When {expr} starts with '%', '#' or '<', the expansion is done like for the |cmdline-special| variables with their associated @@ -4890,6 +4894,21 @@ round({expr}) *round()* < -5.0 {only available when compiled with the |+float| feature} +screenattr(row, col) *screenattr()* + Like screenchar(), but return the attribute. This is a rather + arbitrary number that can only be used to compare to the + attribute at other positions. + +screenchar(row, col) *screenchar()* + The result is a Number, which is the character at position + [row, col] on the screen. This works for every possible + screen position, also status lines, window separators and the + command line. The top left position is row one, column one + The character excludes composing characters. For double-byte + encodings it may only be the first byte. + This is mainly to be used for testing. + Returns -1 when row or col is out of range. + screencol() *screencol()* The result is a Number, which is the current screen column of the cursor. The leftmost column has number 1. @@ -5866,6 +5885,9 @@ system({expr} [, {input}]) *system()* *E677* < To make the result more system-independent, the shell output is filtered to replace <CR> with <NL> for Macintosh, and <CR><NL> with <NL> for DOS-like systems. + To avoid the string being truncated at a NUL, all NUL + characters are replaced with SOH (0x01). + The command executed is constructed using several options: 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote' ({tmp} is an automatically generated file name). @@ -6316,6 +6338,7 @@ There are three types of features: < Note that it's possible for patch 147 to be omitted even though 148 is included. +acl Compiled with |ACL| support. all_builtin_terms Compiled with all builtin terminals enabled. amiga Amiga version of Vim. arabic Compiled with Arabic support |Arabic|. @@ -6482,7 +6505,9 @@ windows Compiled with support for more than one window. writebackup Compiled with 'writebackup' default on. xfontset Compiled with X fontset support |xfontset|. xim Compiled with X input method support |xim|. -xpm_w32 Compiled with pixmap support for Win32. +xpm Compiled with pixmap support. +xpm_w32 Compiled with pixmap support for Win32. (Only for + backward compatibility. Use "xpm" instead.) xsmp Compiled with X session management support. xsmp_interact Compiled with interactive X session management support. xterm_clipboard Compiled with support for xterm clipboard. diff --git a/en/gui.txt b/en/gui.txt index 0e9baf2b0..1ae54951c 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 7.4. Last change: 2011 Jul 22 +*gui.txt* For Vim version 7.4. Last change: 2013 Jun 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -93,10 +93,16 @@ and initialize other things that you may want to set up differently from the terminal version. Recommended place for your personal GUI initializations: - Unix $HOME/.gvimrc - OS/2 $HOME/.gvimrc or $VIM/.gvimrc - MS-DOS and Win32 $HOME/_gvimrc or $VIM/_gvimrc - Amiga s:.gvimrc or $VIM/.gvimrc + Unix $HOME/.gvimrc or $HOME/.vim/gvimrc + OS/2 $HOME/.gvimrc, $HOME/vimfiles/gvimrc + or $VIM/.gvimrc + MS-DOS and Win32 $HOME/_gvimrc, $HOME/vimfiles/gvimrc + or $VIM/_gvimrc + Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc + or $VIM/.gvimrc + +The personal initialization files are searched in the order specified above +and only the first one that is found is read. There are a number of options which only have meaning in the GUI version of Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are diff --git a/en/if_lua.txt b/en/if_lua.txt index 3d7cf2c8e..2b322ddba 100644 --- a/en/if_lua.txt +++ b/en/if_lua.txt @@ -1,4 +1,4 @@ -*if_lua.txt* For Vim version 7.4. Last change: 2012 Jun 29 +*if_lua.txt* For Vim version 7.4. Last change: 2013 Sep 04 VIM REFERENCE MANUAL by Luis Carvalho @@ -10,9 +10,10 @@ The Lua Interface to Vim *lua* *Lua* 2. The vim module |lua-vim| 3. List userdata |lua-list| 4. Dict userdata |lua-dict| -5. Buffer userdata |lua-buffer| -6. Window userdata |lua-window| -7. The luaeval function |lua-luaeval| +5. Funcref userdata |lua-funcref| +6. Buffer userdata |lua-buffer| +7. Window userdata |lua-window| +8. The luaeval function |lua-luaeval| {Vi does not have any of these commands} @@ -110,9 +111,31 @@ input range are stored in "vim.firstline" and "vim.lastline" respectively. The module also includes routines for buffer, window, and current line queries, Vim evaluation and command execution, and others. - vim.list() Returns an empty list (see |List|). - - vim.dict() Returns an empty dictionary (see |Dictionary|). + vim.list([arg]) Returns an empty list or, if "arg" is a Lua + table with numeric keys 1, ..., n (a + "sequence"), returns a list l such that l[i] = + arg[i] for i = 1, ..., n (see |List|). + Non-numeric keys are not used to initialize + the list. See also |lua-eval| for conversion + rules. Example: > + :lua t = {math.pi, false, say = 'hi'} + :echo luaeval('vim.list(t)') + :" [3.141593, 0], 'say' is ignored +< + vim.dict([arg]) Returns an empty dictionary or, if "arg" is a + Lua table, returns a dict d such that d[k] = + arg[k] for all string keys k in "arg" (see + |Dictionary|). Number keys are converted to + strings. Keys that are not strings are not + used to initialize the dictionary. See also + |lua-eval| for conversion rules. Example: > + :lua t = {math.pi, false, say = 'hi'} + :echo luaeval('vim.dict(t)') + :" {'say': 'hi'}, numeric keys ignored +< + vim.funcref({name}) Returns a Funcref to function {name} (see + |Funcref|). It is equivalent to Vim's + "function". NOT IMPLEMENTED YET vim.buffer([arg]) If "arg" is a number, returns buffer with number "arg" in the buffer list or, if "arg" @@ -131,9 +154,9 @@ Vim evaluation and command execution, and others. vim.type({arg}) Returns the type of {arg}. It is equivalent to Lua's "type" function, but returns "list", - "dict", "buffer", or "window" if {arg} is a - list, dictionary, buffer, or window, - respectively. Examples: > + "dict", "funcref", "buffer", or "window" if + {arg} is a list, dictionary, funcref, buffer, + or window, respectively. Examples: > :lua l = vim.list() :lua print(type(l), vim.type(l)) :" userdata list @@ -229,7 +252,40 @@ Examples: < ============================================================================== -5. Buffer userdata *lua-buffer* +5. Funcref userdata *lua-funcref* + +Funcref userdata represent funcref variables in Vim. Funcrefs that were +defined with a "dict" attribute need to be obtained as a dictionary key +in order to have "self" properly assigned to the dictionary (see examples +below.) A funcref "f" has the following properties: + +Properties +---------- + o "#f" is the name of the function referenced by "f" + o "f(...)" calls the function referenced by "f" (with arguments) + +Examples: +> + :function I(x) + : return a:x + : endfunction + :let R = function('I') + :lua i1 = vim.funcref('I') + :lua i2 = vim.eval('R') + :lua print(#i1, #i2) -- both 'I' + :lua print(i1, i2, #i2(i1) == #i1(i2)) + :function Mylen() dict + : return len(self.data) + : endfunction + :let mydict = {'data': [0, 1, 2, 3]} + :lua d = vim.eval('mydict'); d.len = vim.funcref('Mylen') + :echo mydict.len() + :lua l = d.len -- assign d as 'self' + :lua print(l()) +< + +============================================================================== +6. Buffer userdata *lua-buffer* Buffer userdata represent vim buffers. A buffer userdata "b" has the following properties and methods: @@ -281,7 +337,7 @@ Examples: < ============================================================================== -6. Window userdata *lua-window* +7. Window userdata *lua-window* Window objects represent vim windows. A window userdata "w" has the following properties and methods: @@ -313,7 +369,7 @@ Examples: < ============================================================================== -7. The luaeval function *lua-luaeval* *lua-eval* +8. The luaeval function *lua-luaeval* *lua-eval* The (dual) equivalent of "vim.eval" for passing Lua values to Vim is "luaeval". "luaeval" takes an expression string and an optional argument and @@ -325,7 +381,13 @@ returns the result of the expression. It is semantically equivalent in Lua to: return chunk(arg) -- return typval end < -Note that "_A" receives the argument to "luaeval". Examples: > +Note that "_A" receives the argument to "luaeval". Lua numbers, strings, and +list, dict, and funcref userdata are converted to their Vim respective types, +while Lua booleans are converted to numbers. An error is thrown if conversion +of any of the remaining Lua types, including userdata other than lists, dicts, +and funcrefs, is attempted. + +Examples: > :echo luaeval('math.pi') :lua a = vim.list():add('newlist') diff --git a/en/if_perl.txt b/en/if_perl.txt index 95c607bca..7be5f06f6 100644 --- a/en/if_perl.txt +++ b/en/if_perl.txt @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim version 7.4. Last change: 2012 Oct 25 +*if_perl.txt* For Vim version 7.4. Last change: 2013 Oct 05 VIM REFERENCE MANUAL by Sven Verdoolaege diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 09139cdd2..889101b19 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.4. Last change: 2013 May 25 +*if_pyth.txt* For Vim version 7.4. Last change: 2013 Jul 10 VIM REFERENCE MANUAL by Paul Moore @@ -23,6 +23,7 @@ The Python 2.x interface is available only when Vim was compiled with the |+python| feature. The Python 3 interface is available only when Vim was compiled with the |+python3| feature. +Both can be available at the same time, but read |python-2-and-3|. ============================================================================== 1. Commands *python-commands* @@ -174,7 +175,24 @@ vim.eval(str) *python-eval* vim.bindeval(str) *python-bindeval* Like |python-eval|, but returns special objects described in |python-bindeval-objects|. These python objects let you modify (|List| - or |Dictionary|) or call (|Funcref|) vim objecs. + or |Dictionary|) or call (|Funcref|) vim objects. + +vim.strwidth(str) *python-strwidth* + Like |strwidth()|: returns number of display cells str occupies, tab + is counted as one cell. + +vim.foreach_rtp(callable) *python-foreach_rtp* + Call the given callable for each path in 'runtimepath' until either + callable returns something but None, the exception is raised or there + are no longer paths. If stopped in case callable returned non-None, + vim.foreach_rtp function returns the value returned by callable. + +vim.chdir(*args, **kwargs) *python-chdir* +vim.fchdir(*args, **kwargs) *python-fchdir* + Run os.chdir or os.fchdir, then all appropriate vim stuff. + Note: you should not use these functions directly, use os.chdir and + os.fchdir instead. Behavior of vim.fchdir is undefined in case + os.fchdir does not exist. Error object of the "vim" module @@ -208,7 +226,7 @@ vim.windows *python-windows* :py w in vim.windows # Membership test :py n = len(vim.windows) # Number of elements :py for w in vim.windows: # Sequential access -< Note: vim.windows object always accesses current tab page,. +< Note: vim.windows object always accesses current tab page. |python-tabpage|.windows objects are bound to parent |python-tabpage| object and always use windows from that tab page (or throw vim.error in case tab page was deleted). You can keep a reference to both @@ -289,6 +307,88 @@ Output from Python *python-output* supported, and may cause the program to crash. This should probably be fixed. + *python2-directory* *python3-directory* *pythonx-directory* +Python 'runtimepath' handling *python-special-path* + +In python vim.VIM_SPECIAL_PATH special directory is used as a replacement for +the list of paths found in 'runtimepath': with this directory in sys.path and +vim.path_hooks in sys.path_hooks python will try to load module from +{rtp}/python2 (or python3) and {rtp}/pythonx (for both python versions) for +each {rtp} found in 'runtimepath'. + +Implementation is similar to the following, but written in C: > + + from imp import find_module, load_module + import vim + import sys + + class VimModuleLoader(object): + def __init__(self, module): + self.module = module + + def load_module(self, fullname, path=None): + return self.module + + def _find_module(fullname, oldtail, path): + idx = oldtail.find('.') + if idx > 0: + name = oldtail[:idx] + tail = oldtail[idx+1:] + fmr = find_module(name, path) + module = load_module(fullname[:-len(oldtail)] + name, *fmr) + return _find_module(fullname, tail, module.__path__) + else: + fmr = find_module(fullname, path) + return load_module(fullname, *fmr) + + # It uses vim module itself in place of VimPathFinder class: it does not + # matter for python which object has find_module function attached to as + # an attribute. + class VimPathFinder(object): + @classmethod + def find_module(cls, fullname, path=None): + try: + return VimModuleLoader(_find_module(fullname, fullname, path or vim._get_paths())) + except ImportError: + return None + + @classmethod + def load_module(cls, fullname, path=None): + return _find_module(fullname, fullname, path or vim._get_paths()) + + def hook(path): + if path == vim.VIM_SPECIAL_PATH: + return VimPathFinder + else: + raise ImportError + + sys.path_hooks.append(hook) + +vim.VIM_SPECIAL_PATH *python-VIM_SPECIAL_PATH* + String constant used in conjunction with vim path hook. If path hook + installed by vim is requested to handle anything but path equal to + vim.VIM_SPECIAL_PATH constant it raises ImportError. In the only other + case it uses special loader. + + Note: you must not use value of this constant directly, always use + vim.VIM_SPECIAL_PATH object. + +vim.find_module(...) *python-find_module* +vim.path_hook(path) *python-path_hook* + Methods or objects used to implement path loading as described above. + You should not be using any of these directly except for vim.path_hook + in case you need to do something with sys.meta_path. It is not + guaranteed that any of the objects will exist in the future vim + versions. + +vim._get_paths *python-_get_paths* + Methods returning a list of paths which will be searched for by path + hook. You should not rely on this method being present in future + versions, but can use it for debugging. + + It returns a list of {rtp}/python2 (or {rtp}/python3) and + {rtp}/pythonx directories for each {rtp} in 'runtimepath'. + ============================================================================== 3. Buffer objects *python-buffer* @@ -329,6 +429,8 @@ The buffer object attributes are: |BufFilePost| autocommands are launched. b.number Buffer number. Can be used as |python-buffers| key. Read-only. + b.valid True or False. Buffer object becomes invalid when + corresponding buffer is wiped out. The buffer object methods are: b.append(str) Append a line to the buffer @@ -433,6 +535,8 @@ Window attributes are: row, col (read-only) On-screen window position in display cells. First position is zero. tabpage (read-only) Window tab page. + valid (read-write) True or False. Window object becomes invalid + when corresponding window is closed. The height attribute is writable only if the screen is split horizontally. The width attribute is writable only if the screen is split vertically. @@ -456,6 +560,8 @@ Tab page attributes are: windows Like |python-windows|, but for current tab page. vars The tab page |t:| variables. window Current tabpage window. + valid True or False. Tab page object becomes invalid when + corresponding tab page is closed. TabPage object type is available using "TabPage" attribute of vim module. @@ -494,10 +600,9 @@ vim.Dictionary object *python-Dictionary* Remove specified key from dictionary and return corresponding value. If key is not found and default is given returns the default, otherwise raises KeyError. - popitem(key) - Remove specified key from dictionary and return a pair - with it and the corresponding value. Returned key is a new - object. + popitem() + Remove random key from dictionary and return (key, value) + pair. has_key(key) Check whether dictionary contains specified key, similar to `key in dict`. @@ -607,7 +712,7 @@ Vim can be built in four ways (:version output): 3. Python 3 support only (-python, +python3 or +python3/dyn) 4. Python 2 and 3 support (+python/dyn, +python3/dyn) -Some more details on the special case 4: +Some more details on the special case 4: *python-2-and-3* When Python 2 and Python 3 are both supported they must be loaded dynamically. @@ -636,6 +741,11 @@ To work around such problems there are these options: 3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This may crash Vim though. + *E880* +Raising SystemExit exception in python isn't endorsed way to quit vim, use: > + :py vim.command("qall!") +< + *has-python* You can test what Python version is available with: > if has('python') diff --git a/en/indent.txt b/en/indent.txt index 6d18b50b8..b700d15e3 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.4. Last change: 2013 May 20 +*indent.txt* For Vim version 7.4. Last change: 2013 Aug 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -581,8 +581,8 @@ CLOJURE *ft-clojure-indent* *clojure-indent* Clojure indentation differs somewhat from traditional Lisps, due in part to the use of square and curly brackets, and otherwise by community convention. -These conventions are not always universally followed, so the Clojure indent -script offers a few configurable options, listed below. +These conventions are not universally followed, so the Clojure indent script +offers a few configurable options, listed below. If the current vim does not include searchpairpos(), the indent script falls back to normal 'lisp' indenting, and the following options are ignored. @@ -729,6 +729,50 @@ buffer-local variable as follows > let b:fortran_indent_less=1 +HTML *ft-html-indent* *html-indent* *html-indenting* + +This is about variables you can set in your vimrc to customize HTML indenting. + +You can set the indent for the first line after <script> and <style> +"blocktags" (default "zero"): > + + :let g:html_indent_script1 = "inc" + :let g:html_indent_style1 = "inc" +< + VALUE MEANING ~ + "zero" zero indent + "auto" auto indent (same indent as the blocktag) + "inc" auto indent + one indent step + +Many tags increase the indent for what follows per default (see "Add Indent +Tags" in the script). You can add further tags with: > + + :let g:html_indent_inctags = "html,body,head,tbody" + +You can also remove such tags with: > + + :let g:html_indent_autotags = "th,td,tr,tfoot,thead" + +Default value is empty for both variables. Note: the initial "inctags" are +only defined once per Vim session. + +User variables are only read when the script is sourced. To enable your +changes during a session, without reloading the HTML file, you can manually +do: > + + :call HtmlIndent_CheckUserSettings() + +Detail: + Calculation of indent inside "blocktags" with "alien" content: + BLOCKTAG INDENT EXPR WHEN APPLICABLE ~ + <script> : {customizable} if first line of block + : cindent(v:lnum) if attributes empty or contain "java" + : -1 else (vbscript, tcl, ...) + <style> : {customizable} if first line of block + : GetCSSIndent() else + <!-- --> : -1 + + PHP *ft-php-indent* *php-indent* *php-indenting* NOTE: PHP files will be indented correctly only if PHP |syntax| is active. diff --git a/en/index.txt b/en/index.txt index 84a15836b..49f28f30a 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.4. Last change: 2013 May 17 +*index.txt* For Vim version 7.4. Last change: 2013 Oct 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -801,6 +801,10 @@ tag char note action in Normal mode ~ |zE| zE eliminate all folds |zF| zF create a fold for N lines |zG| zG mark word as good spelled word +|zH| zH when 'wrap' off scroll half a screenwidth + to the right +|zL| zL when 'wrap' off scroll half a screenwidth + to the left |zM| zM set 'foldlevel' to zero |zN| zN set 'foldenable' |zO| zO open folds recursively @@ -1187,9 +1191,12 @@ tag command action ~ |:digraphs| :dig[raphs] show or enter digraphs |:display| :di[splay] display registers |:djump| :dj[ump] jump to #define -|:dlist| :dl[ist] list #defines +|:dl| :dl short for |:delete| with the 'l' flag +|:dl| :del[ete]l short for |:delete| with the 'l' flag +|:dlist| :dli[st] list #defines |:doautocmd| :do[autocmd] apply autocommands to current buffer |:doautoall| :doautoa[ll] apply autocommands for all loaded buffers +|:dp| :d[elete]p short for |:delete| with the 'p' flag |:drop| :dr[op] jump to window editing file or edit file in current window |:dsearch| :ds[earch] list one #define @@ -1510,6 +1517,7 @@ tag command action ~ |:sview| :sv[iew] split window and edit file read-only |:swapname| :sw[apname] show the name of the current swap file |:syntax| :sy[ntax] syntax highlighting +|:syntime| :synti[me] measure syntax highlighting speed |:syncbind| :sync[bind] sync scroll binding |:t| :t same as ":copy" |:tNext| :tN[ext] jump to previous matching tag diff --git a/en/insert.txt b/en/insert.txt index 615849ab2..9b9445ae6 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.4. Last change: 2013 Apr 12 +*insert.txt* For Vim version 7.4. Last change: 2013 Jul 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -136,6 +136,8 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* too. When the result is a Float it's automatically converted to a String. + When append() or setline() is invoked the undo + sequence will be broken. See |registers| about registers. {not in Vi} CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* @@ -1357,7 +1359,7 @@ Complete: Completion works in separate JavaScript files (&ft==javascript), inside of <script> tag of (X)HTML and in values of event attributes (including scanning -of external files. +of external files). DOM compatibility @@ -1468,9 +1470,9 @@ knows how to color highlight. It can be used for any filetype and provides a minimal language-sensitive completion. To enable syntax code completion you can run: > - setlocal omnifunc=syntaxcomplete#Complete + setlocal omnifunc=syntaxcomplete#Complete -You can automate this by placing the following in your vimrc (after any +You can automate this by placing the following in your |.vimrc| (after any ":filetype" command): > if has("autocmd") && exists("+omnifunc") autocmd Filetype * @@ -1487,7 +1489,7 @@ customize which syntax groups to include or exclude from the list. Let's have a look at the PHP filetype to see how this works. If you edit a file called, index.php, run the following command: > - :syntax list + syntax list The first thing you will notice is that there are many different syntax groups. The PHP language can include elements from different languages like HTML, @@ -1496,24 +1498,37 @@ that begin with the filetype, "php", in this case. For example these syntax groups are included by default with the PHP: phpEnvVar, phpIntVar, phpFunctions. +If you wish non-filetype syntax items to also be included, you can use a +regular expression syntax (added in version 13.0 of autoload\syntaxcomplete.vim) +to add items. Looking at the output from ":syntax list" while editing a PHP file +I can see some of these entries: > + htmlArg,htmlTag,htmlTagName,javaScriptStatement,javaScriptGlobalObjects + +To pick up any JavaScript and HTML keyword syntax groups while editing a PHP +file, you can use 3 different regexs, one for each language. Or you can +simply restrict the include groups to a particular value, without using +a regex string: > + let g:omni_syntax_group_include_php = 'php\w\+,javaScript\w\+,html\w\+' + let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' +< +The basic form of this variable is: > + let g:omni_syntax_group_include_{filetype} = 'regex,comma,separated' + The PHP language has an enormous number of items which it knows how to syntax -highlight. This means these items will be available within the omni -completion list. Some people may find this list unwieldy or are only -interested in certain items. +highlight. These items will be available within the omni completion list. -There are two ways to prune this list (if necessary). If you find certain -syntax groups you do not wish displayed you can add the following to your -vimrc: > - let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' +Some people may find this list unwieldy or are only interested in certain +items. There are two ways to prune this list (if necessary). If you find +certain syntax groups you do not wish displayed you can use two different +methods to identify these groups. The first specifically lists the syntax +groups by name. The second uses a regular expression to identify both +syntax groups. Simply add one the following to your vimrc: > + let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' + let g:omni_syntax_group_exclude_php = 'php\w*Constant' Add as many syntax groups to this list by comma separating them. The basic form of this variable is: > - let g:omni_syntax_group_exclude_{filetype} = 'comma,separated,list' - -For completeness the opposite is also true. Creating this variable in your -vimrc will only include the items in the phpFunctions and phpMethods syntax -groups: > - let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' + let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated' You can create as many of these variables as you need, varying only the filetype at the end of the variable name. @@ -1554,6 +1569,9 @@ To retrieve only the syntax items for the sqlOperator syntax group: > To retrieve all syntax items for both the sqlOperator and sqlType groups: > echo OmniSyntaxList( ['sqlOperator', 'sqlType'] ) +A regular expression can also be used: > + echo OmniSyntaxList( ['sql\w\+'] ) + From within a plugin, you would typically assign the output to a List: > let myKeywords = [] let myKeywords = OmniSyntaxList( ['sqlKeyword'] ) diff --git a/en/map.txt b/en/map.txt index 039b77b36..4ae902c57 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.3. Last change: 2013 May 05 +*map.txt* For Vim version 7.4. Last change: 2013 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -159,9 +159,9 @@ type "a", then "bar" will get inserted. 1.2 SPECIAL ARGUMENTS *:map-arguments* -"<buffer>", "<silent>", "<special>", "<script>", "<expr>" and "<unique>" can -be used in any order. They must appear right after the command, before any -other arguments. +"<buffer>", "<nowait>", "<silent>", "<special>", "<script>", "<expr>" and +"<unique>" can be used in any order. They must appear right after the +command, before any other arguments. *:map-local* *:map-<buffer>* *E224* *E225* If the first argument to one of these commands is "<buffer>" the mapping will @@ -169,12 +169,23 @@ be effective in the current buffer only. Example: > :map <buffer> ,w /[.,;]<CR> Then you can map ",w" to something else in another buffer: > :map <buffer> ,w /[#&!]<CR> -The local buffer mappings are used before the global ones. +The local buffer mappings are used before the global ones. See <nowait> below +to make a short local mapping not taking effect when a longer global one +exists. The "<buffer>" argument can also be used to clear mappings: > :unmap <buffer> ,w :mapclear <buffer> Local mappings are also cleared when a buffer is deleted, but not when it is unloaded. Just like local option values. +Also see |map-precedence|. + + *:map-<nowait>* *:map-nowait* +When defining a buffer-local mapping for "," there may be a global mapping +that starts with ",". Then you need to type another character for Vim to know +whether to use the "," mapping or the longer one. To avoid this add the +<nowait> argument. Then the mapping will be used when it matches, Vim does +not wait for more characters to be typed. However, if the characters were +already type they are used. *:map-<silent>* *:map-silent* To define a mapping which will not be echoed on the command line, add @@ -369,11 +380,12 @@ it's just used here for this situation. The simplest way to load a set of related language mappings is by using the 'keymap' option. See |45.5|. In Insert mode and in Command-line mode the mappings can be disabled with -the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. When starting to enter a normal -command line (not a search pattern) the mappings are disabled until a CTRL-^ -is typed. The state last used is remembered for Insert mode and Search -patterns separately. The state for Insert mode is also used when typing a -character as an argument to command like "f" or "t". +the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. These commands change the value of +the 'iminsert' option. When starting to enter a normal command line (not a +search pattern) the mappings are disabled until a CTRL-^ is typed. The state +last used is remembered for Insert mode and Search patterns separately. The +state for Insert mode is also used when typing a character as an argument to +command like "f" or "t". Language mappings will never be applied to already mapped characters. They are only used for typed characters. This assumes that the language mapping was already done when typing the mapping. @@ -586,7 +598,7 @@ this (see |<>|). Example: > To avoid mapping of the characters you type in insert or Command-line mode, type a CTRL-V first. The mapping in Insert mode is disabled if the 'paste' option is on. - + *map-error* Note that when an error is encountered (that causes an error message or beep) the rest of the mapping is not executed. This is Vi-compatible. @@ -654,6 +666,17 @@ option). After that it assumes that the 'q' is to be interpreted as such. If you type slowly, or your system is slow, reset the 'timeout' option. Then you might want to set the 'ttimeout' option. + *map-precedence* +Buffer-local mappings (defined using |:map-<buffer>|) take precedence over +global mappings. When a buffer-local mapping is the same as a global mapping, +Vim will use the buffer-local mapping. In addition, Vim will use a complete +mapping immediately if it was defined with <nowait>, even if a longer mapping +has the same prefix. For example, given the following two mappings: > + :map <buffer> <nowait> \a :echo "Local \a"<CR> + :map \abc :echo "Global \abc"<CR> +When typing \a the buffer-local mapping will be used immediately. Vim will +not wait for more characters to see if the user might be typing \abc. + *map-keys-fails* 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 @@ -1242,6 +1265,7 @@ completion can be enabled: -complete=shellcmd Shell command -complete=sign |:sign| suboptions -complete=syntax syntax file names |'syntax'| + -complete=syntime |:syntime| suboptions -complete=tag tags -complete=tag_listfiles tags, file names are shown when CTRL-D is hit -complete=user user names @@ -1335,6 +1359,8 @@ There are some special cases as well: In the cases of the -count and -register attributes, if the optional argument is supplied, it is removed from the argument list and is available to the replacement text separately. +Note that these arguments can be abbreviated, but that is a deprecated +feature. Use the full name for new scripts. Replacement text diff --git a/en/motion.txt b/en/motion.txt index 550609a51..d40d825c2 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.4. Last change: 2013 Mar 07 +*motion.txt* For Vim version 7.4. Last change: 2013 Jul 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -236,6 +236,8 @@ g$ or g<End> When lines wrap ('wrap' on): To the last character of the line is not on the screen or when a count is used. Additionally, vertical movements keep the column, instead of going to the end of the line. + When 'virtualedit' is enabled moves to the end of the + screen line. {not in Vi} *bar* @@ -1083,7 +1085,8 @@ only once. When the |:keepjumps| command modifier is used, jumps are not stored in the jumplist. Jumps are also not stored in other cases, e.g., in a |:global| -command. You can explicitly add a jump by setting the ' mark. +command. You can explicitly add a jump by setting the ' mark with "m'". Note +that calling setpos() does not do this. After the CTRL-O command that got you into line 1154 you could give another jump command (e.g., "G"). The jump list would then become: diff --git a/en/options.txt b/en/options.txt index 9878725f4..0688fcc23 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.4. Last change: 2013 May 23 +*options.txt* For Vim version 7.4. Last change: 2013 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -482,39 +482,42 @@ to set options automatically for one or more files: There are two forms of modelines. The first form: [text]{white}{vi:|vim:|ex:}[white]{options} -[text] any text or empty -{white} at least one blank character (<Space> or <Tab>) -{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" -[white] optional white space -{options} a list of option settings, separated with white space or ':', - where each part between ':' is the argument for a ":set" - command (can be empty) +[text] any text or empty +{white} at least one blank character (<Space> or <Tab>) +{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" +[white] optional white space +{options} a list of option settings, separated with white space + or ':', where each part between ':' is the argument + for a ":set" command (can be empty) -Example: +Examples: vi:noai:sw=3 ts=6 ~ + vim: tw=77 ~ The second form (this is compatible with some versions of Vi): - [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text] + [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text] -[text] any text or empty -{white} at least one blank character (<Space> or <Tab>) -{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" -[white] optional white space -se[t] the string "set " or "se " (note the space) -{options} a list of options, separated with white space, which is the - argument for a ":set" command -: a colon -[text] any text or empty +[text] any text or empty +{white} at least one blank character (<Space> or <Tab>) +{vi:|vim:|Vim:|ex:} the string "vi:", "vim:", "Vim:" or "ex:" +[white] optional white space +se[t] the string "set " or "se " (note the space); When + "Vim" is used it must be "set". +{options} a list of options, separated with white space, which + is the argument for a ":set" command +: a colon +[text] any text or empty -Example: +Examples: /* vim: set ai tw=75: */ ~ + /* Vim: set ai tw=75: */ ~ -The white space before {vi:|vim:|ex:} is required. This minimizes the chance -that a normal word like "lex:" is caught. There is one exception: "vi:" and -"vim:" can also be at the start of the line (for compatibility with version -3.0). Using "ex:" at the start of the line will be ignored (this could be -short for "example:"). +The white space before {vi:|vim:|Vim:|ex:} is required. This minimizes the +chance that a normal word like "lex:" is caught. There is one exception: +"vi:" and "vim:" can also be at the start of the line (for compatibility with +version 3.0). Using "ex:" at the start of the line will be ignored (this +could be short for "example:"). *modeline-local* The options are set like with ":setlocal": The new value only applies to the @@ -530,7 +533,7 @@ in another window. But window-local options will be set. *modeline-version* If the modeline is only to be used for some versions of Vim, the version -number can be specified where "vim:" is used: +number can be specified where "vim:" or "Vim:" is used: vim{vers}: version {vers} or later vim<{vers}: version before {vers} vim={vers}: version {vers} @@ -1881,8 +1884,8 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} A sequence of single character flags. When a character is present - this indicates vi-compatible behavior. This is used for things where - not being vi-compatible is mostly or sometimes preferred. + this indicates Vi-compatible behavior. This is used for things where + not being Vi-compatible is mostly or sometimes preferred. 'cpoptions' stands for "compatible-options". Commas can be added for readability. To avoid problems with flags that are added in the future, use the @@ -2243,7 +2246,7 @@ A jump table for the options with a short description can be found at |Q_op|. Specifies whether to use quickfix window to show cscope results. See |cscopequickfix|. - *'cscoperelative'* *'csre'* + *'cscoperelative'* *'csre'* *'nocscoperelative'* *'nocsre'* 'cscoperelative' 'csre' boolean (default off) global {not available when compiled without the |+cscope| @@ -3993,6 +3996,26 @@ A jump table for the options with a short description can be found at |Q_op|. Can be overruled by using "\c" or "\C" in the pattern, see |/ignorecase|. + *'imactivatefunc'* *'imaf'* +'imactivatefunc' 'imaf' string (default "") + global + {not in Vi} + {only available when compiled with |+xim| and + |+GUI_GTK|} + This option specifies a function that will be called to + activate/inactivate Input Method. + + Example: > + function ImActivateFunc(active) + if a:active + ... do something + else + ... do something + endif + " return value is not used + endfunction + set imactivatefunc=ImActivateFunc +< *'imactivatekey'* *'imak'* 'imactivatekey' 'imak' string (default "") global @@ -4089,6 +4112,24 @@ A jump table for the options with a short description can be found at |Q_op|. The value 0 may not work correctly with Athena and Motif with some XIM methods. Use 'imdisable' to disable XIM then. + *'imstatusfunc'* *'imsf'* +'imstatusfunc' 'imsf' string (default "") + global + {not in Vi} + {only available when compiled with |+xim| and + |+GUI_GTK|} + This option specifies a function that is called to obtain the status + of Input Method. It must return a positive number when IME is active. + + Example: > + function ImStatusFunc() + let is_active = ...do something + return is_active ? 1 : 0 + endfunction + set imstatusfunc=ImStatusFunc +< + NOTE: This function is invoked very often. Keep it fast. + *'include'* *'inc'* 'include' 'inc' string (default "^\s*#\s*include") global or local to buffer |global-local| @@ -4605,7 +4646,7 @@ A jump table for the options with a short description can be found at |Q_op|. The cursor is displayed at the start of the space a Tab character occupies, not at the end as usual in Normal mode. To get this cursor position while displaying Tabs with spaces, use: > - :set list lcs=tab\ \ + :set list lcs=tab:\ \ < Note that list mode will also affect formatting (set with 'textwidth' or 'wrapmargin') when 'cpoptions' includes 'L'. See 'listchars' for @@ -5132,7 +5173,18 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - When setting this option, 'relativenumber' is reset. + *number_relativenumber* + The 'relativenumber' option changes the displayed number to be + relative to the cursor. Together with 'number' there are these + four combinations (cursor in line 3): + + 'nonu' 'nu' 'nonu' 'nu' + 'nornu' 'nornu' 'rnu' 'rnu' + + |apple | 1 apple | 2 apple | 2 apple + |pear | 2 pear | 1 pear | 1 pear + |nobody | 3 nobody | 0 nobody |3 nobody + |there | 4 there | 1 there | 1 there *'numberwidth'* *'nuw'* 'numberwidth' 'nuw' number (Vim default: 4 Vi default: 8) @@ -5547,7 +5599,10 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - When setting this option, 'number' is reset. + + The number in front of the cursor line also depends on the value of + 'number', see |number_relativenumber| for all combinations of the two + options. *'remap'* *'noremap'* 'remap' boolean (default on) @@ -6699,7 +6754,8 @@ A jump table for the options with a short description can be found at |Q_op|. V N Virtual column number as -{num}. Not displayed if equal to 'c'. p N Percentage through file in lines as in |CTRL-G|. P S Percentage through file of displayed window. This is like the - percentage described for 'ruler'. Always 3 in length. + percentage described for 'ruler'. Always 3 in length, unless + translated. a S Argument list status as in default title. ({current} of {max}) Empty if the argument file count is zero or one. { NF Evaluate expression between '%{' and '}' and substitute result. @@ -7807,8 +7863,9 @@ A jump table for the options with a short description can be found at |Q_op|. if the line was empty. But it is far from Vi compatible. It may also break some plugins or Vim scripts. For example because |l| can move the cursor after the last character. Use with care! - Using the |$| command will move to the last character in the line, not + Using the `$` command will move to the last character in the line, not past it. This may actually move the cursor to the left! + The `g$` command will move to the end of the screen line. It doesn't make sense to combine "all" with "onemore", but you will not get a warning for it. diff --git a/en/os_win32.txt b/en/os_win32.txt index f029a7a65..a01a06c8e 100644 --- a/en/os_win32.txt +++ b/en/os_win32.txt @@ -93,7 +93,7 @@ the default value of 'term' from the environment variable "TERM". $PATH *win32-PATH* The directory of the Vim executable is appended to $PATH. This is mostly to -make "!xxd' work, as it is in the Tools menu. And it also means that when +make "!xxd" work, as it is in the Tools menu. And it also means that when executable() returns 1 the executable can actually be executed. ============================================================================== diff --git a/en/pi_vimball.txt b/en/pi_vimball.txt index 720d9478b..bbc74988c 100644 --- a/en/pi_vimball.txt +++ b/en/pi_vimball.txt @@ -188,7 +188,7 @@ WINDOWS *vimball-windows* * Changed silent! to sil! (shorter) * Safed |'swf'| setting (during vimball extraction, its now turned off) - 32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and + 32 : May 19, 2010 * (Christian Brabandt) :so someplugin.vba and :so someplugin.vba.gz (and the other supported compression types) now works * (Jan Steffens) added support for xz compression diff --git a/en/quickfix.txt b/en/quickfix.txt index e96025f86..d6bf938c4 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.4. Last change: 2013 Mar 07 +*quickfix.txt* For Vim version 7.4. Last change: 2013 Aug 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -899,6 +899,8 @@ invalid. Special characters in 'errorformat' are comma and backslash. See |efm-entries| for how to deal with them. Note that a literal "%" is matched by "%%", thus it is not escaped with a backslash. +Keep in mind that in the `:make` and `:grep` output all NUL characters are +replaced with SOH (0x01). Note: By default the difference between upper and lowercase is ignored. If you want to match case, add "\C" to the pattern |/\C|. diff --git a/en/quickref.txt b/en/quickref.txt index 77d30ecd7..90d359775 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.4. Last change: 2013 May 20 +*quickref.txt* For Vim version 7.4. Last change: 2013 Jun 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -170,18 +170,18 @@ N is used to indicate an optional count that can be given before the command. ------------------------------------------------------------------------------ *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 +|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[]'"<>.} +|`[| `[ 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 @@ -648,7 +648,7 @@ Short explanation of each option: *option-list* 'completefunc' 'cfu' function to be used for Insert mode completion 'completeopt' 'cot' options for Insert mode completion 'concealcursor' 'cocu' whether concealable text is hidden in cursor line -'conceallevel' 'cole' whether concealable text is shown or hidden +'conceallevel' 'cole' whether concealable text is shown or hidden 'confirm' 'cf' ask what to do about unsaved/read-only files 'conskey' 'consk' get keys directly from console (MS-DOS only) 'copyindent' 'ci' make 'autoindent' use existing indent structure @@ -738,10 +738,12 @@ Short explanation of each option: *option-list* 'iconstring' string to use for the Vim icon text 'ignorecase' 'ic' ignore case in search patterns 'imactivatekey' 'imak' key that activates the X input method +'imactivatefunc' 'imaf' function to enable/disable the X input method 'imcmdline' 'imc' use IM when starting to edit a command line 'imdisable' 'imd' do not use the IM in any mode 'iminsert' 'imi' use :lmap or IM in Insert mode 'imsearch' 'ims' use :lmap or IM when typing a search pattern +'imstatusfunc' 'imsf' function to obtain X input method status 'include' 'inc' pattern to be used to find an include file 'includeexpr' 'inex' expression used to process an include line 'incsearch' 'is' highlight match while typing search pattern @@ -1326,14 +1328,14 @@ Context-sensitive completion on the command-line: |:bdelete| :bdelete[!] [N] unload buffer [N] and delete it from the buffer list - in current window in new window ~ -|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N -|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf -|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf -|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf -|:bfirst| :bfirst :sbfirst to first arg/buf -|:blast| :blast :sblast to last arg/buf -|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf + in current window in new window ~ +|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N +|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf +|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf +|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf +|:bfirst| :bfirst :sbfirst to first arg/buf +|:blast| :blast :sblast to last arg/buf +|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf ------------------------------------------------------------------------------ *Q_sy* Syntax Highlighting diff --git a/en/repeat.txt b/en/repeat.txt index f1f0ba005..069770024 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.4. Last change: 2012 Mar 23 +*repeat.txt* For Vim version 7.4. Last change: 2013 Jul 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -54,7 +54,7 @@ selection, the same SIZE of area is used, see |visual-repeat|. Same as :g!. Instead of the '/' which surrounds the {pattern}, you can use any other -single byte character, but not an alphanumeric character, '\', '"' or '|'. +single byte character, but not an alphabetic character, '\', '"' or '|'. This is useful if you want to include a '/' in the search pattern or replacement string. @@ -582,6 +582,9 @@ It is only included when Vim was compiled with "huge" features. You can also use the |reltime()| function to measure time. This only requires the |+reltime| feature, which is present more often. +For profiling syntax highlighting see |:syntime|. + + :prof[ile] start {fname} *:prof* *:profile* *E750* Start profiling, write the output in {fname} upon exit. If {fname} already exists it will be silently overwritten. diff --git a/en/starting.txt b/en/starting.txt index dd279b8d5..47ad05ff9 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.4. Last change: 2013 May 29 +*starting.txt* For Vim version 7.4. Last change: 2013 Jul 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -757,14 +757,25 @@ accordingly. Vim proceeds in this order: file, but "exrc" is what Vi always used, "vimrc" is a Vim specific name. Also see |vimrc-intro|. - Recommended place for your personal initializations: - Unix $HOME/.vimrc - OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc) - MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc - Amiga s:.vimrc or $VIM/.vimrc + Places for your personal initializations: + Unix $HOME/.vimrc or $HOME/.vim/vimrc + OS/2 $HOME/.vimrc, $HOME/vimfiles/vimrc + or $VIM/.vimrc (or _vimrc) + MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc + or $VIM/_vimrc + Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc + or $VIM/.vimrc + + The files are searched in the order specified above and only the first + one that is found is read. + + RECOMMENDATION: Put all your Vim configuration stuff in the + $HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it + easy to copy it to another system. If Vim was started with "-u filename", the file "filename" is used. - All following initializations until 4. are skipped. + All following initializations until 4. are skipped. $MYVIMRC is not + set. "vim -u NORC" can be used to skip these initializations without reading a file. "vim -u NONE" also skips loading plugins. |-u| @@ -791,12 +802,15 @@ accordingly. Vim proceeds in this order: - The environment variable VIMINIT (see also |compatible-default|) (*) The value of $VIMINIT is used as an Ex command line. - The user vimrc file(s): - "$HOME/.vimrc" (for Unix and OS/2) (*) - "s:.vimrc" (for Amiga) (*) - "home:.vimrc" (for Amiga) (*) - "$VIM/.vimrc" (for OS/2 and Amiga) (*) - "$HOME/_vimrc" (for MS-DOS and Win32) (*) - "$VIM/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/.vimrc" (for Unix and OS/2) (*) + "$HOME/.vim/vimrc" (for Unix and OS/2) (*) + "s:.vimrc" (for Amiga) (*) + "home:.vimrc" (for Amiga) (*) + "home:vimfiles:vimrc" (for Amiga) (*) + "$VIM/.vimrc" (for OS/2 and Amiga) (*) + "$HOME/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/vimfiles/vimrc" (for MS-DOS and Win32) (*) + "$VIM/_vimrc" (for MS-DOS and Win32) (*) Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist, "_vimrc" is also tried, in case an MS-DOS compatible file system is used. For MS-DOS and Win32 ".vimrc" is checked diff --git a/en/syntax.txt b/en/syntax.txt index a2dc5c00f..3c0c56899 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.4. Last change: 2013 May 31 +*syntax.txt* For Vim version 7.4. Last change: 2013 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -379,12 +379,12 @@ settings, depending on which syntax is active. Example: > 2HTML *2html.vim* *convert-to-HTML* This is not a syntax file itself, but a script that converts the current -window into HTML. Vim opens a new window in which it builds the HTML file. +window into HTML. Vim opens a new window in which it builds the HTML file. -After you save the resulting file, you can view it with any browser. The -colors should be exactly the same as you see them in Vim. You can jump to -specific lines by adding (for example) #L123 or #123 to the end of the URL in -your browser's address bar (#123 only with javascript support). And with +After you save the resulting file, you can view it with any browser. The +colors should be exactly the same as you see them in Vim. With +|g:html_line_ids| you can jump to specific lines by adding (for example) #L123 +or #123 to the end of the URL in your browser's address bar. And with |g:html_dynamic_folds| enabled, you can show or hide the text that is folded in Vim. @@ -425,15 +425,14 @@ and last line to be converted. Example, using the last set Visual area: > |g:html_end_line| to the start and end of the range, respectively. Default range is the entire buffer. - If the current window is part of a |diff|, unless - |g:html_diff_one_file| is set, :TOhtml will convert - all windows which are part of the diff in the current - tab and place them side-by-side in a <table> element - in the generated HTML. When this happens you can jump - to lines in specific windows with (for example) #W1L42 - for line 42 in the first diffed window, or #W3L87 for - line 87 in the third. Omitting the window ID will - default to the first window if javascript is enabled. + If the current window is part of a |diff|, unless + |g:html_diff_one_file| is set, :TOhtml will convert + all windows which are part of the diff in the current + tab and place them side-by-side in a <table> element + in the generated HTML. With |g:html_line_ids| you can + jump to lines in specific windows with (for example) + #W1L42 for line 42 in the first diffed window, or + #W3L87 for line 87 in the third. Examples: > @@ -443,9 +442,9 @@ and last line to be converted. Example, using the last set Visual area: > < *g:html_diff_one_file* Default: 0. -When 0, all windows involved in a |diff| in the current tab page are converted -to HTML and placed side-by-side in a <table> element. -When 1, only the current buffer is converted. +When 0, and using |:TOhtml| all windows involved in a |diff| in the current tab +page are converted to HTML and placed side-by-side in a <table> element. When +1, only the current buffer is converted. Example: > let g:html_diff_one_file = 1 @@ -494,6 +493,23 @@ Force to omit the line numbers: > :let g:html_number_lines = 0 Go back to the default to use 'number' by deleting the variable: > :unlet g:html_number_lines +< + *g:html_line_ids* +Default: 1 if |g:html_number_lines| is set, 0 otherwise. +When 1, adds an HTML id attribute to each line number, or to an empty <span> +inserted for that purpose if no line numbers are shown. This ID attribute +takes the form of L123 for single-buffer HTML pages, or W2L123 for diff-view +pages, and is used to jump to a specific line (in a specific window of a diff +view). Javascript is inserted to open any closed dynamic folds +(|g:html_dynamic_folds|) containing the specificed line before jumping. The +javascript also allows omitting the window ID in the url, and the leading L. +For example: > + + page.html#L123 jumps to line 123 in a single-buffer file + page.html#123 does the same + + diff.html#W1L42 jumps to line 42 in the first window in a diff + diff.html#42 does the same < *g:html_use_css* Default: 1. @@ -603,6 +619,25 @@ they will not be openable without a foldcolumn. > :let g:html_hover_unfold = 1 < + *g:html_id_expr* +Default: "" +Dynamic folding and jumping to line IDs rely on unique IDs within the document +to work. If generated HTML is copied into a larger document, these IDs are no +longer guaranteed to be unique. Set g:html_id_expr to an expression Vim can +evaluate to get a unique string to append to each ID used in a given document, +so that the full IDs will be unique even when combined with other content in a +larger HTML document. Example, to append _ and the buffer number to each ID: > + + :let g:html_id_expr = '"_".bufnr("%")' +< +To append a string "_mystring" to the end of each ID: > + + :let g:html_id_expr = '"_mystring"' +< +Note, when converting a diff view to HTML, the expression will only be +evaluated for the first window in the diff, and the result used for all the +windows. + *TOhtml-wrap-text* *g:html_pre_wrap* Default: current 'wrap' setting. When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does @@ -1318,8 +1353,8 @@ FORTRAN *fortran.vim* *ft-fortran-syntax* Default highlighting and dialect ~ Highlighting appropriate for Fortran 2008 is used by default. This choice -should be appropriate for most users most of the time because Fortran 2008 is -almost a superset of previous versions (Fortran 2003, 95, 90, and 77). +should be appropriate for most users most of the time because Fortran 2008 is +almost a superset of previous versions (Fortran 2003, 95, 90, and 77). Fortran source code form ~ Fortran code can be in either fixed or free source form. Note that the @@ -1410,7 +1445,7 @@ items. If you use F, the advantage of setting the dialect appropriately is that other legacy features excluded from F will be highlighted as todo items and -that free source form will be assumed. +that free source form will be assumed. The dialect can be selected in various ways. If all your fortran files use the same dialect, set the global variable fortran_dialect in your .vimrc prior @@ -1444,13 +1479,13 @@ Fortran comment of the form > For previous versions of the syntax, you may have set fortran_dialect to the now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be silently handled as "f08". Users of "elf" may wish to experiment with "F" -instead. +instead. The syntax/fortran.vim script contains embedded comments that tell you how to comment and/or uncomment some lines to (a) activate recognition of some non-standard, vendor-supplied intrinsics and (b) to prevent features deleted or declared obsolescent in the 2008 standard from being highlighted as todo -items. +items. Limitations ~ Parenthesis checking does not catch too few closing parentheses. Hollerith @@ -2197,9 +2232,11 @@ PERL *perl.vim* *ft-perl-syntax* There are a number of possible options to the perl syntax highlighting. -If you use POD files or POD segments, you might: > +Inline POD highlighting is now turned on by default. If you don't wish +to have the added complexity of highlighting POD embedded within Perl +files, you may set the 'perl_include_pod' option to 0: > - :let perl_include_pod = 1 + :let perl_include_pod = 0 The reduce the complexity of parsing (and increase performance) you can switch off two elements in the parsing of variable names and contents. > @@ -2252,13 +2289,20 @@ If you want to fold blocks in if statements, etc. as well set the following: > :let perl_fold_blocks = 1 -To avoid folding packages or subs when perl_fold is let, let the appropriate -variable(s): > +Subroutines are folded by default if 'perl_fold' is set. If you do not want +this, you can set 'perl_nofold_subs': > + + :let perl_nofold_subs = 1 - :unlet perl_nofold_packages - :unlet perl_nofold_subs +Anonymous subroutines are not folded by default; you may enable their folding +via 'perl_fold_anonymous_subs': > + :let perl_fold_anonymous_subs = 1 +Packages are also folded by default if 'perl_fold' is set. To disable this +behavior, set 'perl_nofold_packages': > + + :let perl_nofold_packages = 1 PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* @@ -2481,7 +2525,7 @@ If you want all possible Python highlighting (the same as setting the preceding last option and unsetting all other ones): > :let python_highlight_all = 1 -Note: only existence of these options matter, not their value. You can replace +Note: only existence of these options matter, not their value. You can replace 1 above with anything. @@ -2874,9 +2918,24 @@ tcsh_minlines is 100. The disadvantage of using a larger number is that redrawing can become slow. -TEX *tex.vim* *ft-tex-syntax* - - *tex-folding* +TEX *tex.vim* *ft-tex-syntax* *latex-syntax* + + Tex Contents~ + Tex: Want Syntax Folding? |tex-folding| + Tex: No Spell Checking Wanted |g:tex_nospell| + Tex: Don't Want Spell Checking In Comments? |tex-nospell| + Tex: Want Spell Checking in Verbatim Zones? |tex-verb| + Tex: Run-on Comments or MathZones |tex-runon| + Tex: Slow Syntax Highlighting? |tex-slow| + Tex: Want To Highlight More Commands? |tex-morecommands| + Tex: Excessive Error Highlighting? |tex-error| + Tex: Need a new Math Group? |tex-math| + Tex: Starting a New Style? |tex-style| + Tex: Taking Advantage of Conceal Mode |tex-conceal| + Tex: Selective Conceal Mode |g:tex_conceal| + Tex: Controlling iskeyword |g:tex_isk| + + *tex-folding* *g:tex_fold_enabled* Tex: Want Syntax Folding? ~ As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters, @@ -2886,24 +2945,27 @@ in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a modeline at the end of your LaTeX file: > % vim: fdm=syntax If your system becomes too slow, then you might wish to look into > - http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text + https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7 < - *tex-nospell* + *g:tex_nospell* + Tex: No Spell Checking Wanted~ + +If you don't want spell checking anywhere in your LaTeX document, put > + let g:tex_nospell=1 +into your .vimrc. If you merely wish to suppress spell checking inside +comments only, see |g:tex_comment_nospell|. + + *tex-nospell* *g:tex_comment_nospell* Tex: Don't Want Spell Checking In Comments? ~ Some folks like to include things like source code in comments and so would prefer that spell checking be disabled in comments in LaTeX files. To do this, put the following in your <.vimrc>: > let g:tex_comment_nospell= 1 -The comment lines > - % nospell{ - ... - % nospell} -will suppress spell checking between them. These comment lines spelling -control are known to be fragile; for example, don't include any of the section -commands (\part, \chapter, \section, \paragraph, etc) inside nospell blocks -or interleave environments (such as math) across nospell blocks. - *tex-verb* +If you want to suppress spell checking everywhere inside your LaTeX document, +see |g:tex_nospell|. + + *tex-verb* *g:tex_verbspell* Tex: Want Spell Checking in Verbatim Zones?~ Often verbatim regions are used for things like source code; seldom does @@ -2911,7 +2973,7 @@ one want source code spell-checked. However, for those of you who do want your verbatim zones spell-checked, put the following in your <.vimrc>: > let g:tex_verbspell= 1 < - *tex-runon* + *tex-runon* *tex-stopzone* Tex: Run-on Comments or MathZones ~ The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The @@ -2924,7 +2986,7 @@ special "TeX comment" has been provided > which will forcibly terminate the highlighting of either a texZone or a texMathZone. - *tex-slow* + *tex-slow* *tex-sync* Tex: Slow Syntax Highlighting? ~ If you have a slow computer, you may wish to reduce the values for > @@ -2937,7 +2999,7 @@ if any, is the text at the top of the screen supposed to be in?). Another cause of slow highlighting is due to syntax-driven folding; see |tex-folding| for a way around this. - *g:tex_fast* + *g:tex_fast* Finally, if syntax highlighting is still too slow, you may set > @@ -2966,7 +3028,7 @@ selectively to enable just some syntax highlighting: > As an example, let g:tex_fast= "M" will allow math-associated highlighting but suppress all the other region-based syntax highlighting. - *tex-morecommands* *tex-package* + *tex-morecommands* *tex-package* Tex: Want To Highlight More Commands? ~ LaTeX is a programmable language, and so there are thousands of packages full @@ -2978,14 +3040,14 @@ by syntax/tex.vim. Please consider uploading any extensions that you write, which typically would go in $HOME/after/syntax/tex/[pkgname].vim, to http://vim.sf.net/. - *tex-error* + *tex-error* *g:tex_no_error* Tex: Excessive Error Highlighting? ~ The <tex.vim> supports lexical error checking of various sorts. Thus, although the error checking is ofttimes very useful, it can indicate errors where none actually are. If this proves to be a problem for you, you may put in your <.vimrc> the following statement: > - let tex_no_error=1 + let g:tex_no_error=1 and all error checking by <syntax/tex.vim> will be suppressed. *tex-math* @@ -3003,7 +3065,7 @@ and then to the call to it in .vim/after/syntax/tex.vim. The "starform" variable, if true, implies that your new math group has a starred form (ie. eqnarray*). - *tex-style* + *tex-style* *b:tex_stylish* Tex: Starting a New Style? ~ One may use "\makeatletter" in *.tex files, thereby making the use of "@" in @@ -3030,12 +3092,12 @@ In fact, only a few characters are supported as subscripts. One way to use this is to have vertically split windows (see |CTRL-W_v|); one with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|. - *g:tex_conceal* + *g:tex_conceal* Tex: Selective Conceal Mode~ You may selectively use conceal mode by setting g:tex_conceal in your -<.vimrc>. By default it is set to "admgs" to enable conceal for the -following sets of characters: > +<.vimrc>. By default, g:tex_conceal is set to "admgs" to enable concealment +for the following sets of characters: > a = accents/ligatures b = bold and italic @@ -3047,18 +3109,25 @@ following sets of characters: > By leaving one or more of these out, the associated conceal-character substitution will not be made. - *g:tex_isk* - Tex: Controlling What's In A Keyword~ + *g:tex_isk* *g:tex_stylish* + Tex: Controlling iskeyword~ + +Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex +keywords don't support the underscore - except when in *.sty files. The +syntax highlighting script handles this with the following logic: + + * If g:tex_stylish exists and is 1 + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (irregardless of g:tex_isk) + * Else if the file's suffix is sty, cls, clo, dtx, or ltx, + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (irregardless of g:tex_isk) -(La)Tex keywords normally use the characters 0-9,a-z,A-Z,192-255 only -but the "_" is the only one that causes problems. So, by default, -syntax/tex.vim overrides the usual |'iskeyword'| setting (using |:setlocal|) -with one that works for LaTeX. + * If g:tex_isk exists, then it will be used for the local 'iskeyword' + * Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255 -However, one may override this iskeyword re-setting by setting the -variable, g:tex_isk, in one's .vimrc to whatever one wishes and -it will be used instead. - TF *tf.vim* *ft-tf-syntax* @@ -3068,8 +3137,7 @@ For syncing, minlines defaults to 100. If you prefer another value, you can set "tf_minlines" to the value you desire. Example: > :let tf_minlines = your choice - - +< VIM *vim.vim* *ft-vim-syntax* *g:vimsyn_minlines* *g:vimsyn_maxlines* There is a trade-off between more accurate syntax highlighting versus screen @@ -3088,18 +3156,16 @@ The g:vimsyn_embed option allows users to select what, if any, types of embedded script highlighting they wish to have. > g:vimsyn_embed == 0 : don't embed any scripts - g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it) - g:vimsyn_embed =~ 'p' : embed perl (but only if vim supports it) - g:vimsyn_embed =~ 'P' : embed python (but only if vim supports it) - g:vimsyn_embed =~ 'r' : embed ruby (but only if vim supports it) - g:vimsyn_embed =~ 't' : embed tcl (but only if vim supports it) + g:vimsyn_embed =~ 'm' : support embedded mzscheme + g:vimsyn_embed =~ 'p' : support embedded perl + g:vimsyn_embed =~ 'P' : support embedded python + g:vimsyn_embed =~ 'r' : support embedded ruby + g:vimsyn_embed =~ 't' : support embedded tcl < -By default, g:vimsyn_embed is "mpPr"; ie. syntax/vim.vim will support -highlighting mzscheme, perl, python, and ruby by default. Vim's has("tcl") -test appears to hang vim when tcl is not truly available. Thus, by default, -tcl is not supported for embedding (but those of you who like tcl embedded in -their vim syntax highlighting can simply include it in the g:vimembedscript -option). +By default, g:vimsyn_embed is a string supporting interpreters that your vim +itself supports. Concatenate multiple characters to support multiple types +of embedded interpreters; ie. g:vimsyn_embed= "mp" supports embedded mzscheme +and embedded perl. *g:vimsyn_folding* Some folding is now supported with syntax/vim.vim: > @@ -3957,7 +4023,7 @@ External matches *:syn-ext-match* These extra regular expression items are available in region patterns: - */\z(* */\z(\)* *E50* *E52* + */\z(* */\z(\)* *E50* *E52* *E879* \z(\) Marks the sub-expression as "external", meaning that it can be accessed from another pattern match. Currently only usable in defining a syntax region start pattern. @@ -4316,7 +4382,7 @@ in their own color. feature it will output "unknown". :colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' - for the file "colors/{name}.vim. The first one that + for the file "colors/{name}.vim". The first one that is found is loaded. To see the name of the currently active color scheme: > :colo @@ -4936,7 +5002,7 @@ restoring "b:current_syntax", since the syntax files do set "w:current_syntax". Once a window has its own syntax, syntax commands executed from other windows -on the same buffer (including :syntax clear) have no effect. Conversely, +on the same buffer (including :syntax clear) have no effect. Conversely, syntax commands executed from that window do not affect other windows on the same buffer. @@ -5097,6 +5163,9 @@ If your syntax causes redrawing to be slow, here are a few hints on making it faster. To see slowness switch on some features that usually interfere, such as 'relativenumber' and |folding|. +Note: this is only available when compiled with the |+profile| feature. +You many need to build Vim with "huge" features. + To find out what patterns are consuming most time, get an overview with this sequence: > :syntime on @@ -5138,9 +5207,9 @@ When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at all positions in the current and previous line. For example, if the item is literal text specify the size of that text (in bytes): -"<\@<=span" Matches "span" in "<span". This tries matching with "<" in +"<\@<=span" Matches "span" in "<span". This tries matching with "<" in many places. -"<\@1<=span" Matches the same, but only tries one byte before "span". +"<\@1<=span" Matches the same, but only tries one byte before "span". vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/en/tagsrch.txt b/en/tagsrch.txt index eda3447dc..06c983860 100644 --- a/en/tagsrch.txt +++ b/en/tagsrch.txt @@ -1,4 +1,4 @@ -*tagsrch.txt* For Vim version 7.4. Last change: 2011 Oct 28 +*tagsrch.txt* For Vim version 7.4. Last change: 2013 Oct 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -357,7 +357,7 @@ slower then. The former can be avoided by case-fold sorting the tags file. See 'tagbsearch' for details. *tag-regexp* -The ":tag" and "tselect" commands accept a regular expression argument. See +The ":tag" and ":tselect" commands accept a regular expression argument. See |pattern| for the special characters that can be used. When the argument starts with '/', it is used as a pattern. If the argument does not start with '/', it is taken literally, as a full tag name. @@ -771,11 +771,11 @@ CTRL-W i Open a new window, with the cursor on the first line *:dli* *:dlist* :[range]dli[st][!] [/]string[/] - Like "[D" and "]D", but search in [range] lines + Like `[D` and `]D`, but search in [range] lines (default: whole file). See |:search-args| for [/] and [!]. {not in Vi} - Note that ":dl" works like ":delete" with the "l" - register. + Note that `:dl` works like `:delete` with the "l" + flag, not `:dlist`. *[_CTRL-D* [ CTRL-D Jump to the first macro definition that contains the diff --git a/en/undo.txt b/en/undo.txt index 2589a151a..414a63b5e 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*undo.txt* For Vim version 7.4. Last change: 2013 Sep 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -249,8 +249,9 @@ a simple scheme that maps filesystem paths directly to undo files. Vim will detect if an undo file is no longer synchronized with the file it was written for (with a hash of the file contents) and ignore it when the file was changed after the undo file was written, to prevent corruption. An undo file is also -ignored if its owner differs from the owner of the edited file. Set 'verbose' -to get a message about that when opening a file. +ignored if its owner differs from the owner of the edited file, except when +the owner of the undo file is the current user. Set 'verbose' to get a +message about that when opening a file. Undo files are normally saved in the same directory as the file. This can be changed with the 'undodir' option. diff --git a/en/usr_25.txt b/en/usr_25.txt index 01f21a18a..5a687599b 100644 --- a/en/usr_25.txt +++ b/en/usr_25.txt @@ -86,7 +86,7 @@ line, type: > v4jgq -"v" to start Visual mode, "4j' to move to the end of the paragraph and then +"v" to start Visual mode, "4j" to move to the end of the paragraph and then the "gq" operator. The result is: 1 2 3 diff --git a/en/usr_40.txt b/en/usr_40.txt index 13fb8cfdc..b1108a5c3 100644 --- a/en/usr_40.txt +++ b/en/usr_40.txt @@ -1,4 +1,4 @@ -*usr_40.txt* For Vim version 7.4. Last change: 2006 Jun 21 +*usr_40.txt* For Vim version 7.4. Last change: 2013 Aug 05 VIM USER MANUAL - by Bram Moolenaar @@ -440,16 +440,16 @@ written. First you define a function: > : read !date :endfunction -You want this function to be called each time, just before a file is written. -This will make that happen: > +You want this function to be called each time, just before a buffer is written +to a file. This will make that happen: > - :autocmd FileWritePre * call DateInsert() + :autocmd BufWritePre * call DateInsert() -"FileWritePre" is the event for which this autocommand is triggered: Just -before (pre) writing a file. The "*" is a pattern to match with the file -name. In this case it matches all files. +"BufWritePre" is the event for which this autocommand is triggered: Just +before (pre) writing a buffer to a file. The "*" is a pattern to match with +the file name. In this case it matches all files. With this command enabled, when you do a ":write", Vim checks for any -matching FileWritePre autocommands and executes them, and then it +matching BufWritePre autocommands and executes them, and then it performs the ":write". The general form of the :autocmd command is as follows: > diff --git a/en/usr_45.txt b/en/usr_45.txt index 303698179..828ea6fe2 100644 --- a/en/usr_45.txt +++ b/en/usr_45.txt @@ -328,8 +328,8 @@ actually use Vim to convert a file. Example: > *45.5* Entering language text Computer keyboards don't have much more than a hundred keys. Some languages -have thousands of characters, Unicode has ten thousands. So how do you type -these characters? +have thousands of characters, Unicode has over hundred thousand. So how do +you type these characters? First of all, when you don't use too many of the special characters, you can use digraphs. This was already explained in |24.9|. When you use a language that uses many more characters than keys on your diff --git a/en/various.txt b/en/various.txt index 1d05e1a21..4a1c64a73 100644 --- a/en/various.txt +++ b/en/various.txt @@ -291,6 +291,7 @@ g8 Print the hex values of the bytes used in the in the normal, big and huge versions of Vim. *+feature-list* + *+acl* |ACL| support included *+ARP* Amiga only: ARP support included B *+arabic* |Arabic| language support N *+autocmd* |:autocmd|, automatic commands @@ -426,6 +427,7 @@ S *+windows* more than one window m *+writebackup* |'writebackup'| is default on m *+xim* X input method |xim| *+xfontset* X fontset support |xfontset| + *+xpm* pixmap support m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support| *+xsmp* XSMP (X session management) support *+xsmp_interact* interactive XSMP (X session management) support From 908350e6c96991e0bbd12ef5334896b28d575fbe Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 21 Oct 2013 21:04:54 +0900 Subject: [PATCH 450/783] fix kanji MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 供に -> 共に (ひらがなの方がよいか?) --- doc/debugger.jax | 2 +- doc/filetype.jax | 2 +- doc/workshop.jax | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/debugger.jax b/doc/debugger.jax index 3fd82aca7..29d19c6b9 100644 --- a/doc/debugger.jax +++ b/doc/debugger.jax @@ -104,7 +104,7 @@ XmNballoonEvalBackground, XmNballoonEvalForeground)。 2. Vimのコンパイルオプション *debugger-compilation* デバッガ機能はSunの「Visual WorkShop Integrated Programming Environment」(ipe) -と一緒に使うために明示的に加えられた。しかし、それらのSunのipeと供に使用する機 +と一緒に使うために明示的に加えられた。しかし、それらのSunのipeと共に使用する機 能は他のデバッガも一部もしくは全部を使うことができるように、可能な限り一般的な 様式で実現されている。 diff --git a/doc/filetype.jax b/doc/filetype.jax index 26728e396..c1dabc951 100644 --- a/doc/filetype.jax +++ b/doc/filetype.jax @@ -297,7 +297,7 @@ OSによる「形式」を利用するには自動実行コマンドの検出パ はVimのバージョン(稼動しているOS)によって定義される。未知の形式は適合しない とみなされる。 -「形式」とパターンを同時に指定することもできる (そのような場合には、両方供マッ +「形式」とパターンを同時に指定することもできる (そのような場合には、両方共マッ チする必要がある): > :au BufRead <&fff>diff* diff --git a/doc/workshop.jax b/doc/workshop.jax index 0ee397354..08a689a6e 100644 --- a/doc/workshop.jax +++ b/doc/workshop.jax @@ -52,7 +52,7 @@ WorkShop関数に{verb}を渡し、関数は幾つかの引数を集めて{verb} ============================================================================== 4. Configuring gvim for a WorkShop release tree *workshop-configure* -VimをSun Visual WorkShop 6と供に使えるようにするためには、幾つかの仮定をしなけ +VimをSun Visual WorkShop 6と共に使えるようにするためには、幾つかの仮定をしなけ ればならない。 o gccではなくVWSに付属のコンパイラを使わなければならない。gccでは構築もテ From a7f1e976a6d0ef2616939ecde8f8c3d9926c916b Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 21 Oct 2013 21:12:04 +0900 Subject: [PATCH 451/783] Revert "update English documents to 7.4" This reverts commit e870b73035d9e2194a0798e9d5254a1660d47c78. Sorry, it was a mistake. --- en/autocmd.txt | 14 +-- en/change.txt | 23 +---- en/diff.txt | 18 ++-- en/eval.txt | 31 +----- en/gui.txt | 16 +--- en/if_lua.txt | 90 +++--------------- en/if_perl.txt | 2 +- en/if_pyth.txt | 126 ++----------------------- en/indent.txt | 50 +--------- en/index.txt | 12 +-- en/insert.txt | 54 ++++------- en/map.txt | 48 +++------- en/motion.txt | 7 +- en/options.txt | 125 +++++++------------------ en/os_win32.txt | 2 +- en/pi_vimball.txt | 2 +- en/quickfix.txt | 4 +- en/quickref.txt | 44 +++++---- en/repeat.txt | 7 +- en/starting.txt | 40 +++----- en/syntax.txt | 233 ++++++++++++++++------------------------------ en/tagsrch.txt | 10 +- en/undo.txt | 7 +- en/usr_25.txt | 2 +- en/usr_40.txt | 16 ++-- en/usr_45.txt | 4 +- en/various.txt | 2 - 27 files changed, 255 insertions(+), 734 deletions(-) diff --git a/en/autocmd.txt b/en/autocmd.txt index 3384051e2..3a4643221 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.4. Last change: 2013 Aug 04 +*autocmd.txt* For Vim version 7.4. Last change: 2013 May 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -513,9 +513,9 @@ CursorHold When the user doesn't press a key for the time CursorHoldI Just like CursorHold, but in Insert mode. *CursorMoved* -CursorMoved After the cursor was moved in Normal or Visual - mode. Also when the text of the cursor line - has been changed, e.g., with "x", "rx" or "p". +CursorMoved After the cursor was moved in Normal mode. + Also when the text of the cursor line has been + changed, e.g., with "x", "rx" or "p". Not triggered when there is typeahead or when an operator is pending. For an example see |match-parens|. @@ -952,8 +952,7 @@ the autocommand is executed. This is different from the command! *file-pattern* The pattern is interpreted like mostly used in file names: - * matches any sequence of characters; Unusual: includes path - separators + * matches any sequence of characters ? matches any single character \? matches a '?' . matches a '.' @@ -962,9 +961,6 @@ The pattern is interpreted like mostly used in file names: \, matches a ',' { } like \( \) in a |pattern| , inside { }: like \| in a |pattern| - \} literal } - \{ literal { - \\\{n,m\} like \{n,m} in a |pattern| \ special meaning like in a |pattern| [ch] matches 'c' or 'h' [^ch] match any character but 'c' and 'h' diff --git a/en/change.txt b/en/change.txt index 77c791ed5..aaf573285 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.4. Last change: 2013 Aug 25 +*change.txt* For Vim version 7.4. Last change: 2013 Mar 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -71,21 +71,9 @@ For inserting text see |insert.txt|. "D" deletes the highlighted text plus all text until the end of the line. {not in Vi} - *:d* *:de* *:del* *:delete* *:dl* *:dp* + *:d* *:de* *:del* *:delete* *:dl* :[range]d[elete] [x] Delete [range] lines (default: current line) [into register x]. - Note these weird abbreviations: - :dl delete and list - :dell idem - :delel idem - :deletl idem - :deletel idem - :dp delete and print - :dep idem - :delp idem - :delep idem - :deletp idem - :deletep idem :[range]d[elete] [x] {count} Delete {count} lines, starting with [range] @@ -1069,11 +1057,6 @@ another register. E.g., yank the text to copy, Visually select the text to replace and use "0p . You can repeat this as many times as you like, the unnamed register will be changed each time. -When you use a blockwise Visual mode command and yank only a single line into -a register, a paste on a visual selected area will paste that single line on -each of the selected lines (thus replacing the blockwise selected region by a -block of the pasted line). - *blockwise-register* If you use a blockwise Visual mode command to get the text into the register, the block of text will be inserted before ("P") or after ("p") the cursor @@ -1131,8 +1114,6 @@ less than one line (the small delete register is used then). An exception is made for the delete operator with these movement commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|. Register "1 is always used then (this is Vi compatible). The "- register is used as well if the delete is within a line. -Note that these characters may be mapped. E.g. |%| is mapped by the matchit -plugin. With each successive deletion or change, Vim shifts the previous contents of register 1 into register 2, 2 into 3, and so forth, losing the previous contents of register 9. diff --git a/en/diff.txt b/en/diff.txt index 96dff3509..a23fe5ab1 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.4. Last change: 2013 Sep 20 +*diff.txt* For Vim version 7.4. Last change: 2012 Sep 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -123,18 +123,14 @@ Since the option values are remembered with the buffer, you can edit another file for a moment and come back to the same file and be in diff mode again. *:diffo* *:diffoff* -:diffo[ff] Switch off diff mode for the current window. Resets related - options also when 'diff' was not set. +:diffo[ff] Switch off diff mode for the current window. :diffo[ff]! Switch off diff mode for the current window and in all windows - in the current tab page where 'diff' is set. Resetting - related options only happens in a window that has 'diff' set, - if the current window does not have 'diff' set then no options - in it are changed. - -The ":diffoff" command resets the relevant options to the values they had when -using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode. -Otherwise they are set to their default value: + in the current tab page where 'diff' is set. + +The ":diffoff" command resets the relevant options to their default value. +This may be different from what the values were before diff mode was started, +the old values are not remembered. 'diff' off 'scrollbind' off diff --git a/en/eval.txt b/en/eval.txt index 60b01a8bf..f7cc93b72 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2013 Aug 24 +*eval.txt* For Vim version 7.3. Last change: 2013 May 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -123,7 +123,6 @@ around the arguments, to invoke the function it refers to. Example: > :echo Fn() < *E704* *E705* *E707* A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:". You -can use "g:" but the following name must still start with a capital. You cannot have both a Funcref variable and a function with the same name. A special case is defining a function and directly assigning its Funcref to a @@ -1907,8 +1906,6 @@ repeat( {expr}, {count}) String repeat {expr} {count} times resolve( {filename}) String get filename a shortcut points to reverse( {list}) List reverse {list} in-place round( {expr}) Float round off {expr} -screenattr( {row}, {col}) Number attribute at screen position -screenchar( {row}, {col}) Number character at screen position screencol() Number current cursor column screenrow() Number current cursor row search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) @@ -2776,8 +2773,7 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* file name contains a space] If the expansion fails, the result is an empty string. A name - for a non-existing file is not included, unless {expr} does - not start with '%', '#' or '<', see below. + for a non-existing file is not included. When {expr} starts with '%', '#' or '<', the expansion is done like for the |cmdline-special| variables with their associated @@ -4894,21 +4890,6 @@ round({expr}) *round()* < -5.0 {only available when compiled with the |+float| feature} -screenattr(row, col) *screenattr()* - Like screenchar(), but return the attribute. This is a rather - arbitrary number that can only be used to compare to the - attribute at other positions. - -screenchar(row, col) *screenchar()* - The result is a Number, which is the character at position - [row, col] on the screen. This works for every possible - screen position, also status lines, window separators and the - command line. The top left position is row one, column one - The character excludes composing characters. For double-byte - encodings it may only be the first byte. - This is mainly to be used for testing. - Returns -1 when row or col is out of range. - screencol() *screencol()* The result is a Number, which is the current screen column of the cursor. The leftmost column has number 1. @@ -5885,9 +5866,6 @@ system({expr} [, {input}]) *system()* *E677* < To make the result more system-independent, the shell output is filtered to replace <CR> with <NL> for Macintosh, and <CR><NL> with <NL> for DOS-like systems. - To avoid the string being truncated at a NUL, all NUL - characters are replaced with SOH (0x01). - The command executed is constructed using several options: 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote' ({tmp} is an automatically generated file name). @@ -6338,7 +6316,6 @@ There are three types of features: < Note that it's possible for patch 147 to be omitted even though 148 is included. -acl Compiled with |ACL| support. all_builtin_terms Compiled with all builtin terminals enabled. amiga Amiga version of Vim. arabic Compiled with Arabic support |Arabic|. @@ -6505,9 +6482,7 @@ windows Compiled with support for more than one window. writebackup Compiled with 'writebackup' default on. xfontset Compiled with X fontset support |xfontset|. xim Compiled with X input method support |xim|. -xpm Compiled with pixmap support. -xpm_w32 Compiled with pixmap support for Win32. (Only for - backward compatibility. Use "xpm" instead.) +xpm_w32 Compiled with pixmap support for Win32. xsmp Compiled with X session management support. xsmp_interact Compiled with interactive X session management support. xterm_clipboard Compiled with support for xterm clipboard. diff --git a/en/gui.txt b/en/gui.txt index 1ae54951c..0e9baf2b0 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 7.4. Last change: 2013 Jun 12 +*gui.txt* For Vim version 7.4. Last change: 2011 Jul 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -93,16 +93,10 @@ and initialize other things that you may want to set up differently from the terminal version. Recommended place for your personal GUI initializations: - Unix $HOME/.gvimrc or $HOME/.vim/gvimrc - OS/2 $HOME/.gvimrc, $HOME/vimfiles/gvimrc - or $VIM/.gvimrc - MS-DOS and Win32 $HOME/_gvimrc, $HOME/vimfiles/gvimrc - or $VIM/_gvimrc - Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc - or $VIM/.gvimrc - -The personal initialization files are searched in the order specified above -and only the first one that is found is read. + Unix $HOME/.gvimrc + OS/2 $HOME/.gvimrc or $VIM/.gvimrc + MS-DOS and Win32 $HOME/_gvimrc or $VIM/_gvimrc + Amiga s:.gvimrc or $VIM/.gvimrc There are a number of options which only have meaning in the GUI version of Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are diff --git a/en/if_lua.txt b/en/if_lua.txt index 2b322ddba..3d7cf2c8e 100644 --- a/en/if_lua.txt +++ b/en/if_lua.txt @@ -1,4 +1,4 @@ -*if_lua.txt* For Vim version 7.4. Last change: 2013 Sep 04 +*if_lua.txt* For Vim version 7.4. Last change: 2012 Jun 29 VIM REFERENCE MANUAL by Luis Carvalho @@ -10,10 +10,9 @@ The Lua Interface to Vim *lua* *Lua* 2. The vim module |lua-vim| 3. List userdata |lua-list| 4. Dict userdata |lua-dict| -5. Funcref userdata |lua-funcref| -6. Buffer userdata |lua-buffer| -7. Window userdata |lua-window| -8. The luaeval function |lua-luaeval| +5. Buffer userdata |lua-buffer| +6. Window userdata |lua-window| +7. The luaeval function |lua-luaeval| {Vi does not have any of these commands} @@ -111,31 +110,9 @@ input range are stored in "vim.firstline" and "vim.lastline" respectively. The module also includes routines for buffer, window, and current line queries, Vim evaluation and command execution, and others. - vim.list([arg]) Returns an empty list or, if "arg" is a Lua - table with numeric keys 1, ..., n (a - "sequence"), returns a list l such that l[i] = - arg[i] for i = 1, ..., n (see |List|). - Non-numeric keys are not used to initialize - the list. See also |lua-eval| for conversion - rules. Example: > - :lua t = {math.pi, false, say = 'hi'} - :echo luaeval('vim.list(t)') - :" [3.141593, 0], 'say' is ignored -< - vim.dict([arg]) Returns an empty dictionary or, if "arg" is a - Lua table, returns a dict d such that d[k] = - arg[k] for all string keys k in "arg" (see - |Dictionary|). Number keys are converted to - strings. Keys that are not strings are not - used to initialize the dictionary. See also - |lua-eval| for conversion rules. Example: > - :lua t = {math.pi, false, say = 'hi'} - :echo luaeval('vim.dict(t)') - :" {'say': 'hi'}, numeric keys ignored -< - vim.funcref({name}) Returns a Funcref to function {name} (see - |Funcref|). It is equivalent to Vim's - "function". NOT IMPLEMENTED YET + vim.list() Returns an empty list (see |List|). + + vim.dict() Returns an empty dictionary (see |Dictionary|). vim.buffer([arg]) If "arg" is a number, returns buffer with number "arg" in the buffer list or, if "arg" @@ -154,9 +131,9 @@ Vim evaluation and command execution, and others. vim.type({arg}) Returns the type of {arg}. It is equivalent to Lua's "type" function, but returns "list", - "dict", "funcref", "buffer", or "window" if - {arg} is a list, dictionary, funcref, buffer, - or window, respectively. Examples: > + "dict", "buffer", or "window" if {arg} is a + list, dictionary, buffer, or window, + respectively. Examples: > :lua l = vim.list() :lua print(type(l), vim.type(l)) :" userdata list @@ -252,40 +229,7 @@ Examples: < ============================================================================== -5. Funcref userdata *lua-funcref* - -Funcref userdata represent funcref variables in Vim. Funcrefs that were -defined with a "dict" attribute need to be obtained as a dictionary key -in order to have "self" properly assigned to the dictionary (see examples -below.) A funcref "f" has the following properties: - -Properties ----------- - o "#f" is the name of the function referenced by "f" - o "f(...)" calls the function referenced by "f" (with arguments) - -Examples: -> - :function I(x) - : return a:x - : endfunction - :let R = function('I') - :lua i1 = vim.funcref('I') - :lua i2 = vim.eval('R') - :lua print(#i1, #i2) -- both 'I' - :lua print(i1, i2, #i2(i1) == #i1(i2)) - :function Mylen() dict - : return len(self.data) - : endfunction - :let mydict = {'data': [0, 1, 2, 3]} - :lua d = vim.eval('mydict'); d.len = vim.funcref('Mylen') - :echo mydict.len() - :lua l = d.len -- assign d as 'self' - :lua print(l()) -< - -============================================================================== -6. Buffer userdata *lua-buffer* +5. Buffer userdata *lua-buffer* Buffer userdata represent vim buffers. A buffer userdata "b" has the following properties and methods: @@ -337,7 +281,7 @@ Examples: < ============================================================================== -7. Window userdata *lua-window* +6. Window userdata *lua-window* Window objects represent vim windows. A window userdata "w" has the following properties and methods: @@ -369,7 +313,7 @@ Examples: < ============================================================================== -8. The luaeval function *lua-luaeval* *lua-eval* +7. The luaeval function *lua-luaeval* *lua-eval* The (dual) equivalent of "vim.eval" for passing Lua values to Vim is "luaeval". "luaeval" takes an expression string and an optional argument and @@ -381,13 +325,7 @@ returns the result of the expression. It is semantically equivalent in Lua to: return chunk(arg) -- return typval end < -Note that "_A" receives the argument to "luaeval". Lua numbers, strings, and -list, dict, and funcref userdata are converted to their Vim respective types, -while Lua booleans are converted to numbers. An error is thrown if conversion -of any of the remaining Lua types, including userdata other than lists, dicts, -and funcrefs, is attempted. - -Examples: > +Note that "_A" receives the argument to "luaeval". Examples: > :echo luaeval('math.pi') :lua a = vim.list():add('newlist') diff --git a/en/if_perl.txt b/en/if_perl.txt index 7be5f06f6..95c607bca 100644 --- a/en/if_perl.txt +++ b/en/if_perl.txt @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim version 7.4. Last change: 2013 Oct 05 +*if_perl.txt* For Vim version 7.4. Last change: 2012 Oct 25 VIM REFERENCE MANUAL by Sven Verdoolaege diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 889101b19..09139cdd2 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.4. Last change: 2013 Jul 10 +*if_pyth.txt* For Vim version 7.4. Last change: 2013 May 25 VIM REFERENCE MANUAL by Paul Moore @@ -23,7 +23,6 @@ The Python 2.x interface is available only when Vim was compiled with the |+python| feature. The Python 3 interface is available only when Vim was compiled with the |+python3| feature. -Both can be available at the same time, but read |python-2-and-3|. ============================================================================== 1. Commands *python-commands* @@ -175,24 +174,7 @@ vim.eval(str) *python-eval* vim.bindeval(str) *python-bindeval* Like |python-eval|, but returns special objects described in |python-bindeval-objects|. These python objects let you modify (|List| - or |Dictionary|) or call (|Funcref|) vim objects. - -vim.strwidth(str) *python-strwidth* - Like |strwidth()|: returns number of display cells str occupies, tab - is counted as one cell. - -vim.foreach_rtp(callable) *python-foreach_rtp* - Call the given callable for each path in 'runtimepath' until either - callable returns something but None, the exception is raised or there - are no longer paths. If stopped in case callable returned non-None, - vim.foreach_rtp function returns the value returned by callable. - -vim.chdir(*args, **kwargs) *python-chdir* -vim.fchdir(*args, **kwargs) *python-fchdir* - Run os.chdir or os.fchdir, then all appropriate vim stuff. - Note: you should not use these functions directly, use os.chdir and - os.fchdir instead. Behavior of vim.fchdir is undefined in case - os.fchdir does not exist. + or |Dictionary|) or call (|Funcref|) vim objecs. Error object of the "vim" module @@ -226,7 +208,7 @@ vim.windows *python-windows* :py w in vim.windows # Membership test :py n = len(vim.windows) # Number of elements :py for w in vim.windows: # Sequential access -< Note: vim.windows object always accesses current tab page. +< Note: vim.windows object always accesses current tab page,. |python-tabpage|.windows objects are bound to parent |python-tabpage| object and always use windows from that tab page (or throw vim.error in case tab page was deleted). You can keep a reference to both @@ -307,88 +289,6 @@ Output from Python *python-output* supported, and may cause the program to crash. This should probably be fixed. - *python2-directory* *python3-directory* *pythonx-directory* -Python 'runtimepath' handling *python-special-path* - -In python vim.VIM_SPECIAL_PATH special directory is used as a replacement for -the list of paths found in 'runtimepath': with this directory in sys.path and -vim.path_hooks in sys.path_hooks python will try to load module from -{rtp}/python2 (or python3) and {rtp}/pythonx (for both python versions) for -each {rtp} found in 'runtimepath'. - -Implementation is similar to the following, but written in C: > - - from imp import find_module, load_module - import vim - import sys - - class VimModuleLoader(object): - def __init__(self, module): - self.module = module - - def load_module(self, fullname, path=None): - return self.module - - def _find_module(fullname, oldtail, path): - idx = oldtail.find('.') - if idx > 0: - name = oldtail[:idx] - tail = oldtail[idx+1:] - fmr = find_module(name, path) - module = load_module(fullname[:-len(oldtail)] + name, *fmr) - return _find_module(fullname, tail, module.__path__) - else: - fmr = find_module(fullname, path) - return load_module(fullname, *fmr) - - # It uses vim module itself in place of VimPathFinder class: it does not - # matter for python which object has find_module function attached to as - # an attribute. - class VimPathFinder(object): - @classmethod - def find_module(cls, fullname, path=None): - try: - return VimModuleLoader(_find_module(fullname, fullname, path or vim._get_paths())) - except ImportError: - return None - - @classmethod - def load_module(cls, fullname, path=None): - return _find_module(fullname, fullname, path or vim._get_paths()) - - def hook(path): - if path == vim.VIM_SPECIAL_PATH: - return VimPathFinder - else: - raise ImportError - - sys.path_hooks.append(hook) - -vim.VIM_SPECIAL_PATH *python-VIM_SPECIAL_PATH* - String constant used in conjunction with vim path hook. If path hook - installed by vim is requested to handle anything but path equal to - vim.VIM_SPECIAL_PATH constant it raises ImportError. In the only other - case it uses special loader. - - Note: you must not use value of this constant directly, always use - vim.VIM_SPECIAL_PATH object. - -vim.find_module(...) *python-find_module* -vim.path_hook(path) *python-path_hook* - Methods or objects used to implement path loading as described above. - You should not be using any of these directly except for vim.path_hook - in case you need to do something with sys.meta_path. It is not - guaranteed that any of the objects will exist in the future vim - versions. - -vim._get_paths *python-_get_paths* - Methods returning a list of paths which will be searched for by path - hook. You should not rely on this method being present in future - versions, but can use it for debugging. - - It returns a list of {rtp}/python2 (or {rtp}/python3) and - {rtp}/pythonx directories for each {rtp} in 'runtimepath'. - ============================================================================== 3. Buffer objects *python-buffer* @@ -429,8 +329,6 @@ The buffer object attributes are: |BufFilePost| autocommands are launched. b.number Buffer number. Can be used as |python-buffers| key. Read-only. - b.valid True or False. Buffer object becomes invalid when - corresponding buffer is wiped out. The buffer object methods are: b.append(str) Append a line to the buffer @@ -535,8 +433,6 @@ Window attributes are: row, col (read-only) On-screen window position in display cells. First position is zero. tabpage (read-only) Window tab page. - valid (read-write) True or False. Window object becomes invalid - when corresponding window is closed. The height attribute is writable only if the screen is split horizontally. The width attribute is writable only if the screen is split vertically. @@ -560,8 +456,6 @@ Tab page attributes are: windows Like |python-windows|, but for current tab page. vars The tab page |t:| variables. window Current tabpage window. - valid True or False. Tab page object becomes invalid when - corresponding tab page is closed. TabPage object type is available using "TabPage" attribute of vim module. @@ -600,9 +494,10 @@ vim.Dictionary object *python-Dictionary* Remove specified key from dictionary and return corresponding value. If key is not found and default is given returns the default, otherwise raises KeyError. - popitem() - Remove random key from dictionary and return (key, value) - pair. + popitem(key) + Remove specified key from dictionary and return a pair + with it and the corresponding value. Returned key is a new + object. has_key(key) Check whether dictionary contains specified key, similar to `key in dict`. @@ -712,7 +607,7 @@ Vim can be built in four ways (:version output): 3. Python 3 support only (-python, +python3 or +python3/dyn) 4. Python 2 and 3 support (+python/dyn, +python3/dyn) -Some more details on the special case 4: *python-2-and-3* +Some more details on the special case 4: When Python 2 and Python 3 are both supported they must be loaded dynamically. @@ -741,11 +636,6 @@ To work around such problems there are these options: 3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This may crash Vim though. - *E880* -Raising SystemExit exception in python isn't endorsed way to quit vim, use: > - :py vim.command("qall!") -< - *has-python* You can test what Python version is available with: > if has('python') diff --git a/en/indent.txt b/en/indent.txt index b700d15e3..6d18b50b8 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.4. Last change: 2013 Aug 03 +*indent.txt* For Vim version 7.4. Last change: 2013 May 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -581,8 +581,8 @@ CLOJURE *ft-clojure-indent* *clojure-indent* Clojure indentation differs somewhat from traditional Lisps, due in part to the use of square and curly brackets, and otherwise by community convention. -These conventions are not universally followed, so the Clojure indent script -offers a few configurable options, listed below. +These conventions are not always universally followed, so the Clojure indent +script offers a few configurable options, listed below. If the current vim does not include searchpairpos(), the indent script falls back to normal 'lisp' indenting, and the following options are ignored. @@ -729,50 +729,6 @@ buffer-local variable as follows > let b:fortran_indent_less=1 -HTML *ft-html-indent* *html-indent* *html-indenting* - -This is about variables you can set in your vimrc to customize HTML indenting. - -You can set the indent for the first line after <script> and <style> -"blocktags" (default "zero"): > - - :let g:html_indent_script1 = "inc" - :let g:html_indent_style1 = "inc" -< - VALUE MEANING ~ - "zero" zero indent - "auto" auto indent (same indent as the blocktag) - "inc" auto indent + one indent step - -Many tags increase the indent for what follows per default (see "Add Indent -Tags" in the script). You can add further tags with: > - - :let g:html_indent_inctags = "html,body,head,tbody" - -You can also remove such tags with: > - - :let g:html_indent_autotags = "th,td,tr,tfoot,thead" - -Default value is empty for both variables. Note: the initial "inctags" are -only defined once per Vim session. - -User variables are only read when the script is sourced. To enable your -changes during a session, without reloading the HTML file, you can manually -do: > - - :call HtmlIndent_CheckUserSettings() - -Detail: - Calculation of indent inside "blocktags" with "alien" content: - BLOCKTAG INDENT EXPR WHEN APPLICABLE ~ - <script> : {customizable} if first line of block - : cindent(v:lnum) if attributes empty or contain "java" - : -1 else (vbscript, tcl, ...) - <style> : {customizable} if first line of block - : GetCSSIndent() else - <!-- --> : -1 - - PHP *ft-php-indent* *php-indent* *php-indenting* NOTE: PHP files will be indented correctly only if PHP |syntax| is active. diff --git a/en/index.txt b/en/index.txt index 49f28f30a..84a15836b 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.4. Last change: 2013 Oct 01 +*index.txt* For Vim version 7.4. Last change: 2013 May 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -801,10 +801,6 @@ tag char note action in Normal mode ~ |zE| zE eliminate all folds |zF| zF create a fold for N lines |zG| zG mark word as good spelled word -|zH| zH when 'wrap' off scroll half a screenwidth - to the right -|zL| zL when 'wrap' off scroll half a screenwidth - to the left |zM| zM set 'foldlevel' to zero |zN| zN set 'foldenable' |zO| zO open folds recursively @@ -1191,12 +1187,9 @@ tag command action ~ |:digraphs| :dig[raphs] show or enter digraphs |:display| :di[splay] display registers |:djump| :dj[ump] jump to #define -|:dl| :dl short for |:delete| with the 'l' flag -|:dl| :del[ete]l short for |:delete| with the 'l' flag -|:dlist| :dli[st] list #defines +|:dlist| :dl[ist] list #defines |:doautocmd| :do[autocmd] apply autocommands to current buffer |:doautoall| :doautoa[ll] apply autocommands for all loaded buffers -|:dp| :d[elete]p short for |:delete| with the 'p' flag |:drop| :dr[op] jump to window editing file or edit file in current window |:dsearch| :ds[earch] list one #define @@ -1517,7 +1510,6 @@ tag command action ~ |:sview| :sv[iew] split window and edit file read-only |:swapname| :sw[apname] show the name of the current swap file |:syntax| :sy[ntax] syntax highlighting -|:syntime| :synti[me] measure syntax highlighting speed |:syncbind| :sync[bind] sync scroll binding |:t| :t same as ":copy" |:tNext| :tN[ext] jump to previous matching tag diff --git a/en/insert.txt b/en/insert.txt index 9b9445ae6..615849ab2 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.4. Last change: 2013 Jul 12 +*insert.txt* For Vim version 7.4. Last change: 2013 Apr 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -136,8 +136,6 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* too. When the result is a Float it's automatically converted to a String. - When append() or setline() is invoked the undo - sequence will be broken. See |registers| about registers. {not in Vi} CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* @@ -1359,7 +1357,7 @@ Complete: Completion works in separate JavaScript files (&ft==javascript), inside of <script> tag of (X)HTML and in values of event attributes (including scanning -of external files). +of external files. DOM compatibility @@ -1470,9 +1468,9 @@ knows how to color highlight. It can be used for any filetype and provides a minimal language-sensitive completion. To enable syntax code completion you can run: > - setlocal omnifunc=syntaxcomplete#Complete + setlocal omnifunc=syntaxcomplete#Complete -You can automate this by placing the following in your |.vimrc| (after any +You can automate this by placing the following in your vimrc (after any ":filetype" command): > if has("autocmd") && exists("+omnifunc") autocmd Filetype * @@ -1489,7 +1487,7 @@ customize which syntax groups to include or exclude from the list. Let's have a look at the PHP filetype to see how this works. If you edit a file called, index.php, run the following command: > - syntax list + :syntax list The first thing you will notice is that there are many different syntax groups. The PHP language can include elements from different languages like HTML, @@ -1498,37 +1496,24 @@ that begin with the filetype, "php", in this case. For example these syntax groups are included by default with the PHP: phpEnvVar, phpIntVar, phpFunctions. -If you wish non-filetype syntax items to also be included, you can use a -regular expression syntax (added in version 13.0 of autoload\syntaxcomplete.vim) -to add items. Looking at the output from ":syntax list" while editing a PHP file -I can see some of these entries: > - htmlArg,htmlTag,htmlTagName,javaScriptStatement,javaScriptGlobalObjects - -To pick up any JavaScript and HTML keyword syntax groups while editing a PHP -file, you can use 3 different regexs, one for each language. Or you can -simply restrict the include groups to a particular value, without using -a regex string: > - let g:omni_syntax_group_include_php = 'php\w\+,javaScript\w\+,html\w\+' - let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' -< -The basic form of this variable is: > - let g:omni_syntax_group_include_{filetype} = 'regex,comma,separated' - The PHP language has an enormous number of items which it knows how to syntax -highlight. These items will be available within the omni completion list. +highlight. This means these items will be available within the omni +completion list. Some people may find this list unwieldy or are only +interested in certain items. -Some people may find this list unwieldy or are only interested in certain -items. There are two ways to prune this list (if necessary). If you find -certain syntax groups you do not wish displayed you can use two different -methods to identify these groups. The first specifically lists the syntax -groups by name. The second uses a regular expression to identify both -syntax groups. Simply add one the following to your vimrc: > - let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' - let g:omni_syntax_group_exclude_php = 'php\w*Constant' +There are two ways to prune this list (if necessary). If you find certain +syntax groups you do not wish displayed you can add the following to your +vimrc: > + let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' Add as many syntax groups to this list by comma separating them. The basic form of this variable is: > - let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated' + let g:omni_syntax_group_exclude_{filetype} = 'comma,separated,list' + +For completeness the opposite is also true. Creating this variable in your +vimrc will only include the items in the phpFunctions and phpMethods syntax +groups: > + let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' You can create as many of these variables as you need, varying only the filetype at the end of the variable name. @@ -1569,9 +1554,6 @@ To retrieve only the syntax items for the sqlOperator syntax group: > To retrieve all syntax items for both the sqlOperator and sqlType groups: > echo OmniSyntaxList( ['sqlOperator', 'sqlType'] ) -A regular expression can also be used: > - echo OmniSyntaxList( ['sql\w\+'] ) - From within a plugin, you would typically assign the output to a List: > let myKeywords = [] let myKeywords = OmniSyntaxList( ['sqlKeyword'] ) diff --git a/en/map.txt b/en/map.txt index 4ae902c57..039b77b36 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*map.txt* For Vim version 7.3. Last change: 2013 May 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -159,9 +159,9 @@ type "a", then "bar" will get inserted. 1.2 SPECIAL ARGUMENTS *:map-arguments* -"<buffer>", "<nowait>", "<silent>", "<special>", "<script>", "<expr>" and -"<unique>" can be used in any order. They must appear right after the -command, before any other arguments. +"<buffer>", "<silent>", "<special>", "<script>", "<expr>" and "<unique>" can +be used in any order. They must appear right after the command, before any +other arguments. *:map-local* *:map-<buffer>* *E224* *E225* If the first argument to one of these commands is "<buffer>" the mapping will @@ -169,23 +169,12 @@ be effective in the current buffer only. Example: > :map <buffer> ,w /[.,;]<CR> Then you can map ",w" to something else in another buffer: > :map <buffer> ,w /[#&!]<CR> -The local buffer mappings are used before the global ones. See <nowait> below -to make a short local mapping not taking effect when a longer global one -exists. +The local buffer mappings are used before the global ones. The "<buffer>" argument can also be used to clear mappings: > :unmap <buffer> ,w :mapclear <buffer> Local mappings are also cleared when a buffer is deleted, but not when it is unloaded. Just like local option values. -Also see |map-precedence|. - - *:map-<nowait>* *:map-nowait* -When defining a buffer-local mapping for "," there may be a global mapping -that starts with ",". Then you need to type another character for Vim to know -whether to use the "," mapping or the longer one. To avoid this add the -<nowait> argument. Then the mapping will be used when it matches, Vim does -not wait for more characters to be typed. However, if the characters were -already type they are used. *:map-<silent>* *:map-silent* To define a mapping which will not be echoed on the command line, add @@ -380,12 +369,11 @@ it's just used here for this situation. The simplest way to load a set of related language mappings is by using the 'keymap' option. See |45.5|. In Insert mode and in Command-line mode the mappings can be disabled with -the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. These commands change the value of -the 'iminsert' option. When starting to enter a normal command line (not a -search pattern) the mappings are disabled until a CTRL-^ is typed. The state -last used is remembered for Insert mode and Search patterns separately. The -state for Insert mode is also used when typing a character as an argument to -command like "f" or "t". +the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. When starting to enter a normal +command line (not a search pattern) the mappings are disabled until a CTRL-^ +is typed. The state last used is remembered for Insert mode and Search +patterns separately. The state for Insert mode is also used when typing a +character as an argument to command like "f" or "t". Language mappings will never be applied to already mapped characters. They are only used for typed characters. This assumes that the language mapping was already done when typing the mapping. @@ -598,7 +586,7 @@ this (see |<>|). Example: > To avoid mapping of the characters you type in insert or Command-line mode, type a CTRL-V first. The mapping in Insert mode is disabled if the 'paste' option is on. - *map-error* + Note that when an error is encountered (that causes an error message or beep) the rest of the mapping is not executed. This is Vi-compatible. @@ -666,17 +654,6 @@ option). After that it assumes that the 'q' is to be interpreted as such. If you type slowly, or your system is slow, reset the 'timeout' option. Then you might want to set the 'ttimeout' option. - *map-precedence* -Buffer-local mappings (defined using |:map-<buffer>|) take precedence over -global mappings. When a buffer-local mapping is the same as a global mapping, -Vim will use the buffer-local mapping. In addition, Vim will use a complete -mapping immediately if it was defined with <nowait>, even if a longer mapping -has the same prefix. For example, given the following two mappings: > - :map <buffer> <nowait> \a :echo "Local \a"<CR> - :map \abc :echo "Global \abc"<CR> -When typing \a the buffer-local mapping will be used immediately. Vim will -not wait for more characters to see if the user might be typing \abc. - *map-keys-fails* 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 @@ -1265,7 +1242,6 @@ completion can be enabled: -complete=shellcmd Shell command -complete=sign |:sign| suboptions -complete=syntax syntax file names |'syntax'| - -complete=syntime |:syntime| suboptions -complete=tag tags -complete=tag_listfiles tags, file names are shown when CTRL-D is hit -complete=user user names @@ -1359,8 +1335,6 @@ There are some special cases as well: In the cases of the -count and -register attributes, if the optional argument is supplied, it is removed from the argument list and is available to the replacement text separately. -Note that these arguments can be abbreviated, but that is a deprecated -feature. Use the full name for new scripts. Replacement text diff --git a/en/motion.txt b/en/motion.txt index d40d825c2..550609a51 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.4. Last change: 2013 Jul 17 +*motion.txt* For Vim version 7.4. Last change: 2013 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -236,8 +236,6 @@ g$ or g<End> When lines wrap ('wrap' on): To the last character of the line is not on the screen or when a count is used. Additionally, vertical movements keep the column, instead of going to the end of the line. - When 'virtualedit' is enabled moves to the end of the - screen line. {not in Vi} *bar* @@ -1085,8 +1083,7 @@ only once. When the |:keepjumps| command modifier is used, jumps are not stored in the jumplist. Jumps are also not stored in other cases, e.g., in a |:global| -command. You can explicitly add a jump by setting the ' mark with "m'". Note -that calling setpos() does not do this. +command. You can explicitly add a jump by setting the ' mark. After the CTRL-O command that got you into line 1154 you could give another jump command (e.g., "G"). The jump list would then become: diff --git a/en/options.txt b/en/options.txt index 0688fcc23..9878725f4 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*options.txt* For Vim version 7.4. Last change: 2013 May 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -482,42 +482,39 @@ to set options automatically for one or more files: There are two forms of modelines. The first form: [text]{white}{vi:|vim:|ex:}[white]{options} -[text] any text or empty -{white} at least one blank character (<Space> or <Tab>) -{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" -[white] optional white space -{options} a list of option settings, separated with white space - or ':', where each part between ':' is the argument - for a ":set" command (can be empty) +[text] any text or empty +{white} at least one blank character (<Space> or <Tab>) +{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" +[white] optional white space +{options} a list of option settings, separated with white space or ':', + where each part between ':' is the argument for a ":set" + command (can be empty) -Examples: +Example: vi:noai:sw=3 ts=6 ~ - vim: tw=77 ~ The second form (this is compatible with some versions of Vi): - [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text] + [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text] -[text] any text or empty -{white} at least one blank character (<Space> or <Tab>) -{vi:|vim:|Vim:|ex:} the string "vi:", "vim:", "Vim:" or "ex:" -[white] optional white space -se[t] the string "set " or "se " (note the space); When - "Vim" is used it must be "set". -{options} a list of options, separated with white space, which - is the argument for a ":set" command -: a colon -[text] any text or empty +[text] any text or empty +{white} at least one blank character (<Space> or <Tab>) +{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" +[white] optional white space +se[t] the string "set " or "se " (note the space) +{options} a list of options, separated with white space, which is the + argument for a ":set" command +: a colon +[text] any text or empty -Examples: +Example: /* vim: set ai tw=75: */ ~ - /* Vim: set ai tw=75: */ ~ -The white space before {vi:|vim:|Vim:|ex:} is required. This minimizes the -chance that a normal word like "lex:" is caught. There is one exception: -"vi:" and "vim:" can also be at the start of the line (for compatibility with -version 3.0). Using "ex:" at the start of the line will be ignored (this -could be short for "example:"). +The white space before {vi:|vim:|ex:} is required. This minimizes the chance +that a normal word like "lex:" is caught. There is one exception: "vi:" and +"vim:" can also be at the start of the line (for compatibility with version +3.0). Using "ex:" at the start of the line will be ignored (this could be +short for "example:"). *modeline-local* The options are set like with ":setlocal": The new value only applies to the @@ -533,7 +530,7 @@ in another window. But window-local options will be set. *modeline-version* If the modeline is only to be used for some versions of Vim, the version -number can be specified where "vim:" or "Vim:" is used: +number can be specified where "vim:" is used: vim{vers}: version {vers} or later vim<{vers}: version before {vers} vim={vers}: version {vers} @@ -1884,8 +1881,8 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} A sequence of single character flags. When a character is present - this indicates Vi-compatible behavior. This is used for things where - not being Vi-compatible is mostly or sometimes preferred. + this indicates vi-compatible behavior. This is used for things where + not being vi-compatible is mostly or sometimes preferred. 'cpoptions' stands for "compatible-options". Commas can be added for readability. To avoid problems with flags that are added in the future, use the @@ -2246,7 +2243,7 @@ A jump table for the options with a short description can be found at |Q_op|. Specifies whether to use quickfix window to show cscope results. See |cscopequickfix|. - *'cscoperelative'* *'csre'* *'nocscoperelative'* *'nocsre'* + *'cscoperelative'* *'csre'* 'cscoperelative' 'csre' boolean (default off) global {not available when compiled without the |+cscope| @@ -3996,26 +3993,6 @@ A jump table for the options with a short description can be found at |Q_op|. Can be overruled by using "\c" or "\C" in the pattern, see |/ignorecase|. - *'imactivatefunc'* *'imaf'* -'imactivatefunc' 'imaf' string (default "") - global - {not in Vi} - {only available when compiled with |+xim| and - |+GUI_GTK|} - This option specifies a function that will be called to - activate/inactivate Input Method. - - Example: > - function ImActivateFunc(active) - if a:active - ... do something - else - ... do something - endif - " return value is not used - endfunction - set imactivatefunc=ImActivateFunc -< *'imactivatekey'* *'imak'* 'imactivatekey' 'imak' string (default "") global @@ -4112,24 +4089,6 @@ A jump table for the options with a short description can be found at |Q_op|. The value 0 may not work correctly with Athena and Motif with some XIM methods. Use 'imdisable' to disable XIM then. - *'imstatusfunc'* *'imsf'* -'imstatusfunc' 'imsf' string (default "") - global - {not in Vi} - {only available when compiled with |+xim| and - |+GUI_GTK|} - This option specifies a function that is called to obtain the status - of Input Method. It must return a positive number when IME is active. - - Example: > - function ImStatusFunc() - let is_active = ...do something - return is_active ? 1 : 0 - endfunction - set imstatusfunc=ImStatusFunc -< - NOTE: This function is invoked very often. Keep it fast. - *'include'* *'inc'* 'include' 'inc' string (default "^\s*#\s*include") global or local to buffer |global-local| @@ -4646,7 +4605,7 @@ A jump table for the options with a short description can be found at |Q_op|. The cursor is displayed at the start of the space a Tab character occupies, not at the end as usual in Normal mode. To get this cursor position while displaying Tabs with spaces, use: > - :set list lcs=tab:\ \ + :set list lcs=tab\ \ < Note that list mode will also affect formatting (set with 'textwidth' or 'wrapmargin') when 'cpoptions' includes 'L'. See 'listchars' for @@ -5173,18 +5132,7 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - *number_relativenumber* - The 'relativenumber' option changes the displayed number to be - relative to the cursor. Together with 'number' there are these - four combinations (cursor in line 3): - - 'nonu' 'nu' 'nonu' 'nu' - 'nornu' 'nornu' 'rnu' 'rnu' - - |apple | 1 apple | 2 apple | 2 apple - |pear | 2 pear | 1 pear | 1 pear - |nobody | 3 nobody | 0 nobody |3 nobody - |there | 4 there | 1 there | 1 there + When setting this option, 'relativenumber' is reset. *'numberwidth'* *'nuw'* 'numberwidth' 'nuw' number (Vim default: 4 Vi default: 8) @@ -5599,10 +5547,7 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - - The number in front of the cursor line also depends on the value of - 'number', see |number_relativenumber| for all combinations of the two - options. + When setting this option, 'number' is reset. *'remap'* *'noremap'* 'remap' boolean (default on) @@ -6754,8 +6699,7 @@ A jump table for the options with a short description can be found at |Q_op|. V N Virtual column number as -{num}. Not displayed if equal to 'c'. p N Percentage through file in lines as in |CTRL-G|. P S Percentage through file of displayed window. This is like the - percentage described for 'ruler'. Always 3 in length, unless - translated. + percentage described for 'ruler'. Always 3 in length. a S Argument list status as in default title. ({current} of {max}) Empty if the argument file count is zero or one. { NF Evaluate expression between '%{' and '}' and substitute result. @@ -7863,9 +7807,8 @@ A jump table for the options with a short description can be found at |Q_op|. if the line was empty. But it is far from Vi compatible. It may also break some plugins or Vim scripts. For example because |l| can move the cursor after the last character. Use with care! - Using the `$` command will move to the last character in the line, not + Using the |$| command will move to the last character in the line, not past it. This may actually move the cursor to the left! - The `g$` command will move to the end of the screen line. It doesn't make sense to combine "all" with "onemore", but you will not get a warning for it. diff --git a/en/os_win32.txt b/en/os_win32.txt index a01a06c8e..f029a7a65 100644 --- a/en/os_win32.txt +++ b/en/os_win32.txt @@ -93,7 +93,7 @@ the default value of 'term' from the environment variable "TERM". $PATH *win32-PATH* The directory of the Vim executable is appended to $PATH. This is mostly to -make "!xxd" work, as it is in the Tools menu. And it also means that when +make "!xxd' work, as it is in the Tools menu. And it also means that when executable() returns 1 the executable can actually be executed. ============================================================================== diff --git a/en/pi_vimball.txt b/en/pi_vimball.txt index bbc74988c..720d9478b 100644 --- a/en/pi_vimball.txt +++ b/en/pi_vimball.txt @@ -188,7 +188,7 @@ WINDOWS *vimball-windows* * Changed silent! to sil! (shorter) * Safed |'swf'| setting (during vimball extraction, its now turned off) - 32 : May 19, 2010 * (Christian Brabandt) :so someplugin.vba and + 32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and :so someplugin.vba.gz (and the other supported compression types) now works * (Jan Steffens) added support for xz compression diff --git a/en/quickfix.txt b/en/quickfix.txt index d6bf938c4..e96025f86 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.4. Last change: 2013 Aug 03 +*quickfix.txt* For Vim version 7.4. Last change: 2013 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -899,8 +899,6 @@ invalid. Special characters in 'errorformat' are comma and backslash. See |efm-entries| for how to deal with them. Note that a literal "%" is matched by "%%", thus it is not escaped with a backslash. -Keep in mind that in the `:make` and `:grep` output all NUL characters are -replaced with SOH (0x01). Note: By default the difference between upper and lowercase is ignored. If you want to match case, add "\C" to the pattern |/\C|. diff --git a/en/quickref.txt b/en/quickref.txt index 90d359775..77d30ecd7 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.4. Last change: 2013 Jun 29 +*quickref.txt* For Vim version 7.4. Last change: 2013 May 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -170,18 +170,18 @@ N is used to indicate an optional count that can be given before the command. ------------------------------------------------------------------------------ *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 +|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[]'"<>.} +|`[| `[ 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 @@ -648,7 +648,7 @@ Short explanation of each option: *option-list* 'completefunc' 'cfu' function to be used for Insert mode completion 'completeopt' 'cot' options for Insert mode completion 'concealcursor' 'cocu' whether concealable text is hidden in cursor line -'conceallevel' 'cole' whether concealable text is shown or hidden +'conceallevel' 'cole' whether concealable text is shown or hidden 'confirm' 'cf' ask what to do about unsaved/read-only files 'conskey' 'consk' get keys directly from console (MS-DOS only) 'copyindent' 'ci' make 'autoindent' use existing indent structure @@ -738,12 +738,10 @@ Short explanation of each option: *option-list* 'iconstring' string to use for the Vim icon text 'ignorecase' 'ic' ignore case in search patterns 'imactivatekey' 'imak' key that activates the X input method -'imactivatefunc' 'imaf' function to enable/disable the X input method 'imcmdline' 'imc' use IM when starting to edit a command line 'imdisable' 'imd' do not use the IM in any mode 'iminsert' 'imi' use :lmap or IM in Insert mode 'imsearch' 'ims' use :lmap or IM when typing a search pattern -'imstatusfunc' 'imsf' function to obtain X input method status 'include' 'inc' pattern to be used to find an include file 'includeexpr' 'inex' expression used to process an include line 'incsearch' 'is' highlight match while typing search pattern @@ -1328,14 +1326,14 @@ Context-sensitive completion on the command-line: |:bdelete| :bdelete[!] [N] unload buffer [N] and delete it from the buffer list - in current window in new window ~ -|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N -|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf -|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf -|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf -|:bfirst| :bfirst :sbfirst to first arg/buf -|:blast| :blast :sblast to last arg/buf -|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf + in current window in new window ~ +|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N +|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf +|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf +|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf +|:bfirst| :bfirst :sbfirst to first arg/buf +|:blast| :blast :sblast to last arg/buf +|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf ------------------------------------------------------------------------------ *Q_sy* Syntax Highlighting diff --git a/en/repeat.txt b/en/repeat.txt index 069770024..f1f0ba005 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.4. Last change: 2013 Jul 25 +*repeat.txt* For Vim version 7.4. Last change: 2012 Mar 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -54,7 +54,7 @@ selection, the same SIZE of area is used, see |visual-repeat|. Same as :g!. Instead of the '/' which surrounds the {pattern}, you can use any other -single byte character, but not an alphabetic character, '\', '"' or '|'. +single byte character, but not an alphanumeric character, '\', '"' or '|'. This is useful if you want to include a '/' in the search pattern or replacement string. @@ -582,9 +582,6 @@ It is only included when Vim was compiled with "huge" features. You can also use the |reltime()| function to measure time. This only requires the |+reltime| feature, which is present more often. -For profiling syntax highlighting see |:syntime|. - - :prof[ile] start {fname} *:prof* *:profile* *E750* Start profiling, write the output in {fname} upon exit. If {fname} already exists it will be silently overwritten. diff --git a/en/starting.txt b/en/starting.txt index 47ad05ff9..dd279b8d5 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.4. Last change: 2013 Jul 20 +*starting.txt* For Vim version 7.4. Last change: 2013 May 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -757,25 +757,14 @@ accordingly. Vim proceeds in this order: file, but "exrc" is what Vi always used, "vimrc" is a Vim specific name. Also see |vimrc-intro|. - Places for your personal initializations: - Unix $HOME/.vimrc or $HOME/.vim/vimrc - OS/2 $HOME/.vimrc, $HOME/vimfiles/vimrc - or $VIM/.vimrc (or _vimrc) - MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc - or $VIM/_vimrc - Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc - or $VIM/.vimrc - - The files are searched in the order specified above and only the first - one that is found is read. - - RECOMMENDATION: Put all your Vim configuration stuff in the - $HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it - easy to copy it to another system. + Recommended place for your personal initializations: + Unix $HOME/.vimrc + OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc) + MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc + Amiga s:.vimrc or $VIM/.vimrc If Vim was started with "-u filename", the file "filename" is used. - All following initializations until 4. are skipped. $MYVIMRC is not - set. + All following initializations until 4. are skipped. "vim -u NORC" can be used to skip these initializations without reading a file. "vim -u NONE" also skips loading plugins. |-u| @@ -802,15 +791,12 @@ accordingly. Vim proceeds in this order: - The environment variable VIMINIT (see also |compatible-default|) (*) The value of $VIMINIT is used as an Ex command line. - The user vimrc file(s): - "$HOME/.vimrc" (for Unix and OS/2) (*) - "$HOME/.vim/vimrc" (for Unix and OS/2) (*) - "s:.vimrc" (for Amiga) (*) - "home:.vimrc" (for Amiga) (*) - "home:vimfiles:vimrc" (for Amiga) (*) - "$VIM/.vimrc" (for OS/2 and Amiga) (*) - "$HOME/_vimrc" (for MS-DOS and Win32) (*) - "$HOME/vimfiles/vimrc" (for MS-DOS and Win32) (*) - "$VIM/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/.vimrc" (for Unix and OS/2) (*) + "s:.vimrc" (for Amiga) (*) + "home:.vimrc" (for Amiga) (*) + "$VIM/.vimrc" (for OS/2 and Amiga) (*) + "$HOME/_vimrc" (for MS-DOS and Win32) (*) + "$VIM/_vimrc" (for MS-DOS and Win32) (*) Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist, "_vimrc" is also tried, in case an MS-DOS compatible file system is used. For MS-DOS and Win32 ".vimrc" is checked diff --git a/en/syntax.txt b/en/syntax.txt index 3c0c56899..a2dc5c00f 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*syntax.txt* For Vim version 7.4. Last change: 2013 May 31 VIM REFERENCE MANUAL by Bram Moolenaar @@ -379,12 +379,12 @@ settings, depending on which syntax is active. Example: > 2HTML *2html.vim* *convert-to-HTML* This is not a syntax file itself, but a script that converts the current -window into HTML. Vim opens a new window in which it builds the HTML file. +window into HTML. Vim opens a new window in which it builds the HTML file. -After you save the resulting file, you can view it with any browser. The -colors should be exactly the same as you see them in Vim. With -|g:html_line_ids| you can jump to specific lines by adding (for example) #L123 -or #123 to the end of the URL in your browser's address bar. And with +After you save the resulting file, you can view it with any browser. The +colors should be exactly the same as you see them in Vim. You can jump to +specific lines by adding (for example) #L123 or #123 to the end of the URL in +your browser's address bar (#123 only with javascript support). And with |g:html_dynamic_folds| enabled, you can show or hide the text that is folded in Vim. @@ -425,14 +425,15 @@ and last line to be converted. Example, using the last set Visual area: > |g:html_end_line| to the start and end of the range, respectively. Default range is the entire buffer. - If the current window is part of a |diff|, unless - |g:html_diff_one_file| is set, :TOhtml will convert - all windows which are part of the diff in the current - tab and place them side-by-side in a <table> element - in the generated HTML. With |g:html_line_ids| you can - jump to lines in specific windows with (for example) - #W1L42 for line 42 in the first diffed window, or - #W3L87 for line 87 in the third. + If the current window is part of a |diff|, unless + |g:html_diff_one_file| is set, :TOhtml will convert + all windows which are part of the diff in the current + tab and place them side-by-side in a <table> element + in the generated HTML. When this happens you can jump + to lines in specific windows with (for example) #W1L42 + for line 42 in the first diffed window, or #W3L87 for + line 87 in the third. Omitting the window ID will + default to the first window if javascript is enabled. Examples: > @@ -442,9 +443,9 @@ and last line to be converted. Example, using the last set Visual area: > < *g:html_diff_one_file* Default: 0. -When 0, and using |:TOhtml| all windows involved in a |diff| in the current tab -page are converted to HTML and placed side-by-side in a <table> element. When -1, only the current buffer is converted. +When 0, all windows involved in a |diff| in the current tab page are converted +to HTML and placed side-by-side in a <table> element. +When 1, only the current buffer is converted. Example: > let g:html_diff_one_file = 1 @@ -493,23 +494,6 @@ Force to omit the line numbers: > :let g:html_number_lines = 0 Go back to the default to use 'number' by deleting the variable: > :unlet g:html_number_lines -< - *g:html_line_ids* -Default: 1 if |g:html_number_lines| is set, 0 otherwise. -When 1, adds an HTML id attribute to each line number, or to an empty <span> -inserted for that purpose if no line numbers are shown. This ID attribute -takes the form of L123 for single-buffer HTML pages, or W2L123 for diff-view -pages, and is used to jump to a specific line (in a specific window of a diff -view). Javascript is inserted to open any closed dynamic folds -(|g:html_dynamic_folds|) containing the specificed line before jumping. The -javascript also allows omitting the window ID in the url, and the leading L. -For example: > - - page.html#L123 jumps to line 123 in a single-buffer file - page.html#123 does the same - - diff.html#W1L42 jumps to line 42 in the first window in a diff - diff.html#42 does the same < *g:html_use_css* Default: 1. @@ -619,25 +603,6 @@ they will not be openable without a foldcolumn. > :let g:html_hover_unfold = 1 < - *g:html_id_expr* -Default: "" -Dynamic folding and jumping to line IDs rely on unique IDs within the document -to work. If generated HTML is copied into a larger document, these IDs are no -longer guaranteed to be unique. Set g:html_id_expr to an expression Vim can -evaluate to get a unique string to append to each ID used in a given document, -so that the full IDs will be unique even when combined with other content in a -larger HTML document. Example, to append _ and the buffer number to each ID: > - - :let g:html_id_expr = '"_".bufnr("%")' -< -To append a string "_mystring" to the end of each ID: > - - :let g:html_id_expr = '"_mystring"' -< -Note, when converting a diff view to HTML, the expression will only be -evaluated for the first window in the diff, and the result used for all the -windows. - *TOhtml-wrap-text* *g:html_pre_wrap* Default: current 'wrap' setting. When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does @@ -1353,8 +1318,8 @@ FORTRAN *fortran.vim* *ft-fortran-syntax* Default highlighting and dialect ~ Highlighting appropriate for Fortran 2008 is used by default. This choice -should be appropriate for most users most of the time because Fortran 2008 is -almost a superset of previous versions (Fortran 2003, 95, 90, and 77). +should be appropriate for most users most of the time because Fortran 2008 is +almost a superset of previous versions (Fortran 2003, 95, 90, and 77). Fortran source code form ~ Fortran code can be in either fixed or free source form. Note that the @@ -1445,7 +1410,7 @@ items. If you use F, the advantage of setting the dialect appropriately is that other legacy features excluded from F will be highlighted as todo items and -that free source form will be assumed. +that free source form will be assumed. The dialect can be selected in various ways. If all your fortran files use the same dialect, set the global variable fortran_dialect in your .vimrc prior @@ -1479,13 +1444,13 @@ Fortran comment of the form > For previous versions of the syntax, you may have set fortran_dialect to the now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be silently handled as "f08". Users of "elf" may wish to experiment with "F" -instead. +instead. The syntax/fortran.vim script contains embedded comments that tell you how to comment and/or uncomment some lines to (a) activate recognition of some non-standard, vendor-supplied intrinsics and (b) to prevent features deleted or declared obsolescent in the 2008 standard from being highlighted as todo -items. +items. Limitations ~ Parenthesis checking does not catch too few closing parentheses. Hollerith @@ -2232,11 +2197,9 @@ PERL *perl.vim* *ft-perl-syntax* There are a number of possible options to the perl syntax highlighting. -Inline POD highlighting is now turned on by default. If you don't wish -to have the added complexity of highlighting POD embedded within Perl -files, you may set the 'perl_include_pod' option to 0: > +If you use POD files or POD segments, you might: > - :let perl_include_pod = 0 + :let perl_include_pod = 1 The reduce the complexity of parsing (and increase performance) you can switch off two elements in the parsing of variable names and contents. > @@ -2289,20 +2252,13 @@ If you want to fold blocks in if statements, etc. as well set the following: > :let perl_fold_blocks = 1 -Subroutines are folded by default if 'perl_fold' is set. If you do not want -this, you can set 'perl_nofold_subs': > - - :let perl_nofold_subs = 1 +To avoid folding packages or subs when perl_fold is let, let the appropriate +variable(s): > -Anonymous subroutines are not folded by default; you may enable their folding -via 'perl_fold_anonymous_subs': > + :unlet perl_nofold_packages + :unlet perl_nofold_subs - :let perl_fold_anonymous_subs = 1 -Packages are also folded by default if 'perl_fold' is set. To disable this -behavior, set 'perl_nofold_packages': > - - :let perl_nofold_packages = 1 PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* @@ -2525,7 +2481,7 @@ If you want all possible Python highlighting (the same as setting the preceding last option and unsetting all other ones): > :let python_highlight_all = 1 -Note: only existence of these options matter, not their value. You can replace +Note: only existence of these options matter, not their value. You can replace 1 above with anything. @@ -2918,24 +2874,9 @@ tcsh_minlines is 100. The disadvantage of using a larger number is that redrawing can become slow. -TEX *tex.vim* *ft-tex-syntax* *latex-syntax* - - Tex Contents~ - Tex: Want Syntax Folding? |tex-folding| - Tex: No Spell Checking Wanted |g:tex_nospell| - Tex: Don't Want Spell Checking In Comments? |tex-nospell| - Tex: Want Spell Checking in Verbatim Zones? |tex-verb| - Tex: Run-on Comments or MathZones |tex-runon| - Tex: Slow Syntax Highlighting? |tex-slow| - Tex: Want To Highlight More Commands? |tex-morecommands| - Tex: Excessive Error Highlighting? |tex-error| - Tex: Need a new Math Group? |tex-math| - Tex: Starting a New Style? |tex-style| - Tex: Taking Advantage of Conceal Mode |tex-conceal| - Tex: Selective Conceal Mode |g:tex_conceal| - Tex: Controlling iskeyword |g:tex_isk| - - *tex-folding* *g:tex_fold_enabled* +TEX *tex.vim* *ft-tex-syntax* + + *tex-folding* Tex: Want Syntax Folding? ~ As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters, @@ -2945,27 +2886,24 @@ in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a modeline at the end of your LaTeX file: > % vim: fdm=syntax If your system becomes too slow, then you might wish to look into > - https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7 + http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text < - *g:tex_nospell* - Tex: No Spell Checking Wanted~ - -If you don't want spell checking anywhere in your LaTeX document, put > - let g:tex_nospell=1 -into your .vimrc. If you merely wish to suppress spell checking inside -comments only, see |g:tex_comment_nospell|. - - *tex-nospell* *g:tex_comment_nospell* + *tex-nospell* Tex: Don't Want Spell Checking In Comments? ~ Some folks like to include things like source code in comments and so would prefer that spell checking be disabled in comments in LaTeX files. To do this, put the following in your <.vimrc>: > let g:tex_comment_nospell= 1 -If you want to suppress spell checking everywhere inside your LaTeX document, -see |g:tex_nospell|. - - *tex-verb* *g:tex_verbspell* +The comment lines > + % nospell{ + ... + % nospell} +will suppress spell checking between them. These comment lines spelling +control are known to be fragile; for example, don't include any of the section +commands (\part, \chapter, \section, \paragraph, etc) inside nospell blocks +or interleave environments (such as math) across nospell blocks. + *tex-verb* Tex: Want Spell Checking in Verbatim Zones?~ Often verbatim regions are used for things like source code; seldom does @@ -2973,7 +2911,7 @@ one want source code spell-checked. However, for those of you who do want your verbatim zones spell-checked, put the following in your <.vimrc>: > let g:tex_verbspell= 1 < - *tex-runon* *tex-stopzone* + *tex-runon* Tex: Run-on Comments or MathZones ~ The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The @@ -2986,7 +2924,7 @@ special "TeX comment" has been provided > which will forcibly terminate the highlighting of either a texZone or a texMathZone. - *tex-slow* *tex-sync* + *tex-slow* Tex: Slow Syntax Highlighting? ~ If you have a slow computer, you may wish to reduce the values for > @@ -2999,7 +2937,7 @@ if any, is the text at the top of the screen supposed to be in?). Another cause of slow highlighting is due to syntax-driven folding; see |tex-folding| for a way around this. - *g:tex_fast* + *g:tex_fast* Finally, if syntax highlighting is still too slow, you may set > @@ -3028,7 +2966,7 @@ selectively to enable just some syntax highlighting: > As an example, let g:tex_fast= "M" will allow math-associated highlighting but suppress all the other region-based syntax highlighting. - *tex-morecommands* *tex-package* + *tex-morecommands* *tex-package* Tex: Want To Highlight More Commands? ~ LaTeX is a programmable language, and so there are thousands of packages full @@ -3040,14 +2978,14 @@ by syntax/tex.vim. Please consider uploading any extensions that you write, which typically would go in $HOME/after/syntax/tex/[pkgname].vim, to http://vim.sf.net/. - *tex-error* *g:tex_no_error* + *tex-error* Tex: Excessive Error Highlighting? ~ The <tex.vim> supports lexical error checking of various sorts. Thus, although the error checking is ofttimes very useful, it can indicate errors where none actually are. If this proves to be a problem for you, you may put in your <.vimrc> the following statement: > - let g:tex_no_error=1 + let tex_no_error=1 and all error checking by <syntax/tex.vim> will be suppressed. *tex-math* @@ -3065,7 +3003,7 @@ and then to the call to it in .vim/after/syntax/tex.vim. The "starform" variable, if true, implies that your new math group has a starred form (ie. eqnarray*). - *tex-style* *b:tex_stylish* + *tex-style* Tex: Starting a New Style? ~ One may use "\makeatletter" in *.tex files, thereby making the use of "@" in @@ -3092,12 +3030,12 @@ In fact, only a few characters are supported as subscripts. One way to use this is to have vertically split windows (see |CTRL-W_v|); one with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|. - *g:tex_conceal* + *g:tex_conceal* Tex: Selective Conceal Mode~ You may selectively use conceal mode by setting g:tex_conceal in your -<.vimrc>. By default, g:tex_conceal is set to "admgs" to enable concealment -for the following sets of characters: > +<.vimrc>. By default it is set to "admgs" to enable conceal for the +following sets of characters: > a = accents/ligatures b = bold and italic @@ -3109,25 +3047,18 @@ for the following sets of characters: > By leaving one or more of these out, the associated conceal-character substitution will not be made. - *g:tex_isk* *g:tex_stylish* - Tex: Controlling iskeyword~ - -Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex -keywords don't support the underscore - except when in *.sty files. The -syntax highlighting script handles this with the following logic: - - * If g:tex_stylish exists and is 1 - then the file will be treated as a "sty" file, so the "_" - will be allowed as part of keywords - (irregardless of g:tex_isk) - * Else if the file's suffix is sty, cls, clo, dtx, or ltx, - then the file will be treated as a "sty" file, so the "_" - will be allowed as part of keywords - (irregardless of g:tex_isk) + *g:tex_isk* + Tex: Controlling What's In A Keyword~ - * If g:tex_isk exists, then it will be used for the local 'iskeyword' - * Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255 +(La)Tex keywords normally use the characters 0-9,a-z,A-Z,192-255 only +but the "_" is the only one that causes problems. So, by default, +syntax/tex.vim overrides the usual |'iskeyword'| setting (using |:setlocal|) +with one that works for LaTeX. +However, one may override this iskeyword re-setting by setting the +variable, g:tex_isk, in one's .vimrc to whatever one wishes and +it will be used instead. + TF *tf.vim* *ft-tf-syntax* @@ -3137,7 +3068,8 @@ For syncing, minlines defaults to 100. If you prefer another value, you can set "tf_minlines" to the value you desire. Example: > :let tf_minlines = your choice -< + + VIM *vim.vim* *ft-vim-syntax* *g:vimsyn_minlines* *g:vimsyn_maxlines* There is a trade-off between more accurate syntax highlighting versus screen @@ -3156,16 +3088,18 @@ The g:vimsyn_embed option allows users to select what, if any, types of embedded script highlighting they wish to have. > g:vimsyn_embed == 0 : don't embed any scripts - g:vimsyn_embed =~ 'm' : support embedded mzscheme - g:vimsyn_embed =~ 'p' : support embedded perl - g:vimsyn_embed =~ 'P' : support embedded python - g:vimsyn_embed =~ 'r' : support embedded ruby - g:vimsyn_embed =~ 't' : support embedded tcl + g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it) + g:vimsyn_embed =~ 'p' : embed perl (but only if vim supports it) + g:vimsyn_embed =~ 'P' : embed python (but only if vim supports it) + g:vimsyn_embed =~ 'r' : embed ruby (but only if vim supports it) + g:vimsyn_embed =~ 't' : embed tcl (but only if vim supports it) < -By default, g:vimsyn_embed is a string supporting interpreters that your vim -itself supports. Concatenate multiple characters to support multiple types -of embedded interpreters; ie. g:vimsyn_embed= "mp" supports embedded mzscheme -and embedded perl. +By default, g:vimsyn_embed is "mpPr"; ie. syntax/vim.vim will support +highlighting mzscheme, perl, python, and ruby by default. Vim's has("tcl") +test appears to hang vim when tcl is not truly available. Thus, by default, +tcl is not supported for embedding (but those of you who like tcl embedded in +their vim syntax highlighting can simply include it in the g:vimembedscript +option). *g:vimsyn_folding* Some folding is now supported with syntax/vim.vim: > @@ -4023,7 +3957,7 @@ External matches *:syn-ext-match* These extra regular expression items are available in region patterns: - */\z(* */\z(\)* *E50* *E52* *E879* + */\z(* */\z(\)* *E50* *E52* \z(\) Marks the sub-expression as "external", meaning that it can be accessed from another pattern match. Currently only usable in defining a syntax region start pattern. @@ -4382,7 +4316,7 @@ in their own color. feature it will output "unknown". :colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' - for the file "colors/{name}.vim". The first one that + for the file "colors/{name}.vim. The first one that is found is loaded. To see the name of the currently active color scheme: > :colo @@ -5002,7 +4936,7 @@ restoring "b:current_syntax", since the syntax files do set "w:current_syntax". Once a window has its own syntax, syntax commands executed from other windows -on the same buffer (including :syntax clear) have no effect. Conversely, +on the same buffer (including :syntax clear) have no effect. Conversely, syntax commands executed from that window do not affect other windows on the same buffer. @@ -5163,9 +5097,6 @@ If your syntax causes redrawing to be slow, here are a few hints on making it faster. To see slowness switch on some features that usually interfere, such as 'relativenumber' and |folding|. -Note: this is only available when compiled with the |+profile| feature. -You many need to build Vim with "huge" features. - To find out what patterns are consuming most time, get an overview with this sequence: > :syntime on @@ -5207,9 +5138,9 @@ When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at all positions in the current and previous line. For example, if the item is literal text specify the size of that text (in bytes): -"<\@<=span" Matches "span" in "<span". This tries matching with "<" in +"<\@<=span" Matches "span" in "<span". This tries matching with "<" in many places. -"<\@1<=span" Matches the same, but only tries one byte before "span". +"<\@1<=span" Matches the same, but only tries one byte before "span". vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/en/tagsrch.txt b/en/tagsrch.txt index 06c983860..eda3447dc 100644 --- a/en/tagsrch.txt +++ b/en/tagsrch.txt @@ -1,4 +1,4 @@ -*tagsrch.txt* For Vim version 7.4. Last change: 2013 Oct 01 +*tagsrch.txt* For Vim version 7.4. Last change: 2011 Oct 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -357,7 +357,7 @@ slower then. The former can be avoided by case-fold sorting the tags file. See 'tagbsearch' for details. *tag-regexp* -The ":tag" and ":tselect" commands accept a regular expression argument. See +The ":tag" and "tselect" commands accept a regular expression argument. See |pattern| for the special characters that can be used. When the argument starts with '/', it is used as a pattern. If the argument does not start with '/', it is taken literally, as a full tag name. @@ -771,11 +771,11 @@ CTRL-W i Open a new window, with the cursor on the first line *:dli* *:dlist* :[range]dli[st][!] [/]string[/] - Like `[D` and `]D`, but search in [range] lines + Like "[D" and "]D", but search in [range] lines (default: whole file). See |:search-args| for [/] and [!]. {not in Vi} - Note that `:dl` works like `:delete` with the "l" - flag, not `:dlist`. + Note that ":dl" works like ":delete" with the "l" + register. *[_CTRL-D* [ CTRL-D Jump to the first macro definition that contains the diff --git a/en/undo.txt b/en/undo.txt index 414a63b5e..2589a151a 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 7.4. Last change: 2013 Sep 08 +*undo.txt* For Vim version 7.4. Last change: 2013 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -249,9 +249,8 @@ a simple scheme that maps filesystem paths directly to undo files. Vim will detect if an undo file is no longer synchronized with the file it was written for (with a hash of the file contents) and ignore it when the file was changed after the undo file was written, to prevent corruption. An undo file is also -ignored if its owner differs from the owner of the edited file, except when -the owner of the undo file is the current user. Set 'verbose' to get a -message about that when opening a file. +ignored if its owner differs from the owner of the edited file. Set 'verbose' +to get a message about that when opening a file. Undo files are normally saved in the same directory as the file. This can be changed with the 'undodir' option. diff --git a/en/usr_25.txt b/en/usr_25.txt index 5a687599b..01f21a18a 100644 --- a/en/usr_25.txt +++ b/en/usr_25.txt @@ -86,7 +86,7 @@ line, type: > v4jgq -"v" to start Visual mode, "4j" to move to the end of the paragraph and then +"v" to start Visual mode, "4j' to move to the end of the paragraph and then the "gq" operator. The result is: 1 2 3 diff --git a/en/usr_40.txt b/en/usr_40.txt index b1108a5c3..13fb8cfdc 100644 --- a/en/usr_40.txt +++ b/en/usr_40.txt @@ -1,4 +1,4 @@ -*usr_40.txt* For Vim version 7.4. Last change: 2013 Aug 05 +*usr_40.txt* For Vim version 7.4. Last change: 2006 Jun 21 VIM USER MANUAL - by Bram Moolenaar @@ -440,16 +440,16 @@ written. First you define a function: > : read !date :endfunction -You want this function to be called each time, just before a buffer is written -to a file. This will make that happen: > +You want this function to be called each time, just before a file is written. +This will make that happen: > - :autocmd BufWritePre * call DateInsert() + :autocmd FileWritePre * call DateInsert() -"BufWritePre" is the event for which this autocommand is triggered: Just -before (pre) writing a buffer to a file. The "*" is a pattern to match with -the file name. In this case it matches all files. +"FileWritePre" is the event for which this autocommand is triggered: Just +before (pre) writing a file. The "*" is a pattern to match with the file +name. In this case it matches all files. With this command enabled, when you do a ":write", Vim checks for any -matching BufWritePre autocommands and executes them, and then it +matching FileWritePre autocommands and executes them, and then it performs the ":write". The general form of the :autocmd command is as follows: > diff --git a/en/usr_45.txt b/en/usr_45.txt index 828ea6fe2..303698179 100644 --- a/en/usr_45.txt +++ b/en/usr_45.txt @@ -328,8 +328,8 @@ actually use Vim to convert a file. Example: > *45.5* Entering language text Computer keyboards don't have much more than a hundred keys. Some languages -have thousands of characters, Unicode has over hundred thousand. So how do -you type these characters? +have thousands of characters, Unicode has ten thousands. So how do you type +these characters? First of all, when you don't use too many of the special characters, you can use digraphs. This was already explained in |24.9|. When you use a language that uses many more characters than keys on your diff --git a/en/various.txt b/en/various.txt index 4a1c64a73..1d05e1a21 100644 --- a/en/various.txt +++ b/en/various.txt @@ -291,7 +291,6 @@ g8 Print the hex values of the bytes used in the in the normal, big and huge versions of Vim. *+feature-list* - *+acl* |ACL| support included *+ARP* Amiga only: ARP support included B *+arabic* |Arabic| language support N *+autocmd* |:autocmd|, automatic commands @@ -427,7 +426,6 @@ S *+windows* more than one window m *+writebackup* |'writebackup'| is default on m *+xim* X input method |xim| *+xfontset* X fontset support |xfontset| - *+xpm* pixmap support m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support| *+xsmp* XSMP (X session management) support *+xsmp_interact* interactive XSMP (X session management) support From 490de658b45a44e17564aad2392f978381b83d97 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 21 Oct 2013 23:00:49 +0900 Subject: [PATCH 452/783] Translate consistently (ref #44) --- doc/hangulin.jax | 6 +++--- doc/if_sniff.jax | 8 ++++---- doc/indent.jax | 2 +- doc/motion.jax | 4 ++-- doc/options.jax | 2 +- doc/os_mint.jax | 12 ++++++------ vim_faq/vim_faq.jax | 6 +++--- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/hangulin.jax b/doc/hangulin.jax index 39580447b..335a24bdc 100644 --- a/doc/hangulin.jax +++ b/doc/hangulin.jax @@ -76,9 +76,9 @@ $HOME/.gvimrc: > 注意! , (コンマ) か ; (セミコロン)です。 そして ':set guifont' が設定されていてはいけません。もし設定されていると GVim -は ':set guifontset' を無視します。つまり、Vim がフォント・セットのサポートな -しで動作することになり、英語の文字だけが見えることになり、ハングルは正しくは表 -示されなくなります。 +は ':set guifontset' を無視します。つまり、Vim がフォントセットのサポートなし +で動作することになり、英語の文字だけが見えることになり、ハングルは正しくは表示 +されなくなります。 'fontset' 機能が有効にされた後では、Vim では 'font' は使えなくなります。例えば、 もし .gvimrc で次のようにしている場合は: > diff --git a/doc/if_sniff.jax b/doc/if_sniff.jax index 2466e5e46..f8a9d7c95 100644 --- a/doc/if_sniff.jax +++ b/doc/if_sniff.jax @@ -33,9 +33,9 @@ Vim で SNiFF+ を使うには 4. Vim を起動します。 5. SNiFF+ に接続します。(:sniff 接続) -いったん接続が確立されると、SNiFF+ は、ソース・コードを表示したり、編集した -りする全てのリクエストで Vim を使います。一方、:sniff コマンドで SNiFF+ にク -エリーを送ることができます。 +いったん接続が確立されると、SNiFF+ は、ソースコードを表示したり、編集したりす +る全てのリクエストで Vim を使います。一方、:sniff コマンドで SNiFF+ にクエリー +を送ることができます。 ============================================================================== 2. コマンド *sniff-commands* @@ -88,7 +88,7 @@ gen-docu sD symbol のドキュメントを生成する。 3. SNiFF+ インタフェイス付きコンパイル *sniff-compiling* Vim を SNiFF+ サポートつきでコンパイルするには、extra アーカイブに含まれる2つ -のソース・ファイルが必要になります: if_sniff.c と if_sniff.h。 +のソースファイルが必要になります: if_sniff.c と if_sniff.h。 Unix 上: Makefile を編集して "--enable-sniff" の行のコメントを外します。もしく は "--enable-sniff" を指定してconfigureを実行してください。 NT 上: make コマンドで SNIFF=yes を指定します。 diff --git a/doc/indent.jax b/doc/indent.jax index 83c23b1b6..b4da64ab3 100644 --- a/doc/indent.jax +++ b/doc/indent.jax @@ -645,7 +645,7 @@ Clojure のいくつかのフォームは、'lispwords' に依らず、すべて *g:clojure_align_multiline_strings* -複数行文字列を、クオート文字と同じ列で揃えるのではなく、クオート文字の一つ後ろ +複数行文字列を、クォート文字と同じ列で揃えるのではなく、クォート文字の一つ後ろ の列で整列させる。 例: diff --git a/doc/motion.jax b/doc/motion.jax index b80bbc8f3..4c51706e3 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -474,8 +474,8 @@ WORD は非空白文字の連続で構成され、ホワイトスペースで区 ります。段落マクロは 'paragraphs' オプションで指定されている文字のペアです。デ フォルトで "IPLPPPQPP TPHPLIPpLpItpplpipbp" で、".IP", ".LP", などのマクロに一 致します(これらは nroff のマクロです。ですのでドットは1桁目になければなりませ -ん)。セクションの境界は段落の境界でもあります。空行(ホワイト・スペースのみを含 -む行)は、段落の境界ではないということに注意してください。 +ん)。セクションの境界は段落の境界でもあります。空行(ホワイトスペースのみを含む +行)は、段落の境界ではないということに注意してください。 これは '{' か '}' を1桁目には含んでいないということにも注意してください。 'cpoptions' にフラグ "{" が入っていると1桁目の "{" が段落の境界とみなされるよ うになります。|posix| diff --git a/doc/options.jax b/doc/options.jax index f2ad2beda..05856faa1 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1621,7 +1621,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vimが |+vertsplit| 機能付きでコンパイルされたときの み有効} - コマンドライン・ウィンドウに使われる画面上の行数。|cmdwin| を参照。 + コマンドラインウィンドウに使われる画面上の行数。|cmdwin| を参照。 *'colorcolumn'* *'cc'* 'colorcolumn' 'cc' 文字列 (既定では "") diff --git a/doc/os_mint.jax b/doc/os_mint.jax index 1be214a4f..9bf779098 100644 --- a/doc/os_mint.jax +++ b/doc/os_mint.jax @@ -15,23 +15,23 @@ Vim for MiNT は Unix version とほとんど同じ動作をします。ドキ れている Unix 上での振る舞いは、明確に示されていない限り MiNT version の Vim でも同じです。 -<~> (ホーム・ディレクトリ)のワイルド・カード展開には、チルダを展開するシェルが -必要です。Vanilla Bourne Shell は展開しません。Csh と ksh はうまく動作します。 +<~> (ホームディレクトリ)のワイルドカード展開には、チルダを展開するシェルが必要 +です。Vanilla Bourne Shell は展開しません。Csh と ksh はうまく動作します。 MiNT version の Vim は、/etc/termcap に端末にあった端末属性をふくんだ termcap ファイルが必要です。vt52 端末は、内蔵 termcap でサポートされています。TOSWIN -ウィンドウ・マネージャーと仮想コンソール端末の termcap エントリが、Vim ととも -に配布されている termcap ファイルに追加されました。 +ウィンドウマネージャーと仮想コンソール端末の termcap エントリが、Vim とともに +配布されている termcap ファイルに追加されました。 <BS> と <Del> キーが入れ替わっている問題に遭遇した場合は、|:fixdel| を参照して ください。 -MiNT での端末の画面更新は、しばしば遅いため(例えば、シリアル・ライン端末)、 +MiNT での端末の画面更新は、しばしば遅いため(例えば、シリアルライン端末)、 'showcmd' と 'ruler' オプションはデフォルトではオフです。もしもっと速い端末を 使っているなら、これらをオンにしてみてください。'ttyfast' オプションもオンにし たいかもしれません。 -バグ・レポートはこちらに: +バグレポートはこちらに: Jens M. Felderhoff, e-mail: <jmf@infko.uni-koblenz.de> diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 83002b5ad..7a6d2aa47 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -757,8 +757,8 @@ Vi を現代化する機能: プログラミング効率に関する機能: 編集―コンパイル―編集のスピードアップ - Vim 内部からコンパイルを行い、自動的にソース・コードのエラーの箇所にジャ - ンプすることができます。 + Vim 内部からコンパイルを行い、自動的にソースコードのエラーの箇所にジャン + プすることができます。 多数のプログラミング言語の字下げ C、C++、Java、Perl、XML その他多くの言語で、タイプ中に自動的に字下げが行 われます。他の言語へのサポートも追加可能です。 @@ -775,7 +775,7 @@ Vi を現代化する機能: 見たい関数のフォールドを開くことができます。 ctags と cscope との統合 これらの強力なプログラムを使うと、関数の呼び出し部分からその定義部分へジ - ャンプしたり、他の技術を使ってソース・コードを行き来することができます。 + ャンプしたり、他の技術を使ってソースコードを行き来することができます。 さらなる情報については以下を参照してください。 > From 359e102fedff58bdd28e9d256cbdba843fb012c6 Mon Sep 17 00:00:00 2001 From: KIHARA Hideto <deton@m1.interq.or.jp> Date: Mon, 4 Nov 2013 09:16:54 +0900 Subject: [PATCH 453/783] =?UTF-8?q?=E6=97=A5=E6=9C=AC=E8=AA=9E=E3=81=8C?= =?UTF-8?q?=E3=81=95=E3=81=A3=E3=81=A8=E8=AA=AD=E3=81=BF=E3=81=AB=E3=81=8F?= =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=9F=E6=96=87=E3=82=92=E3=80=81=E5=8E=9F?= =?UTF-8?q?=E6=96=87=E3=82=92=E3=82=82=E3=81=A8=E3=81=AB=E4=BF=AE=E6=95=B4?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/motion.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/motion.jax b/doc/motion.jax index 4c51706e3..eb72de7a7 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -189,8 +189,8 @@ l or *l* ^ その行の最初の非空白文字に移動します|exclusive|。 *$* *<End>* *<kEnd>* -$ or <End> その行の最後に移動し、そして [count - 1] 行下に移動し - ます|exclusive|。 +$ or <End> その行の最後に移動します。カウントが指定された場合は、 + [count - 1] 行下にも移動します|exclusive|。 ビジュアルモードではカーソルは行の最後の文字の後へ移動 します。 'virtualedit' がオンのときには、"$" によってカーソルが From b52a28e07cbf4b694506dfbd29fc14b760cebc71 Mon Sep 17 00:00:00 2001 From: KIHARA Hideto <deton@m1.interq.or.jp> Date: Mon, 4 Nov 2013 09:57:08 +0900 Subject: [PATCH 454/783] =?UTF-8?q?=E7=BF=BB=E8=A8=B3=E3=81=A7=E3=81=AF?= =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=AF=E7=84=A1=E3=81=97=E3=81=AE(?= =?UTF-8?q?=E8=A1=8C=E6=8C=87=E5=90=91)=E3=81=AB=E3=81=AA=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=82=8B|linewise|=E3=82=92(=E8=A1=8C?= =?UTF-8?q?=E6=8C=87=E5=90=91|linewise|)=E3=81=AB=E7=BD=AE=E6=8F=9B?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/motion.jax | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/doc/motion.jax b/doc/motion.jax index eb72de7a7..7b2ca7253 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -282,13 +282,13 @@ T{char} 左に向かって [count] 番目に現れる {char} まで移動し k or *k* <Up> or *<Up>* *CTRL-P* -CTRL-P [count] 行上に移動(行指向) +CTRL-P [count] 行上に移動(行指向|linewise|) j or *j* <Down> or *<Down>* CTRL-J or *CTRL-J* <NL> or *<NL>* *CTRL-N* -CTRL-N [count] 行下に移動(行指向) +CTRL-N [count] 行下に移動(行指向|linewise|) gk or *gk* *g<Up>* g<Up> [count] 表示行上に移動|exclusive|。行が折り返されている @@ -301,17 +301,21 @@ g<Down> [count] 表示行下に移動|exclusive|。行が折り返されてい 違う動作になります(行指向ですから)。{Vi にはありません} *-* -- <minus> [count] 行上の最初の非空白文字に移動します(行指向) +- <minus> [count] 行上の最初の非空白文字に移動します(行指向 + |linewise|) + or *+* CTRL-M or *CTRL-M* *<CR>* -<CR> [count] 行下の最初の非空白文字に移動します(行指向) +<CR> [count] 行下の最初の非空白文字に移動します(行指向 + |linewise|) *_* -_ <underscore> [count] -1 行下の最初の非空白文字に移動します(行指向) +_ <underscore> [count] -1 行下の最初の非空白文字に移動します(行指向 + |linewise|) *G* -G [count] 行目の最初の非空白文字に移動します(行指向) +G [count] 行目の最初の非空白文字に移動します(行指向 + |linewise|)。 カウントの前置がなければ最後の行に移動します。 'startofline' がセットされていなければ同じ桁位置に移動 します。 @@ -323,7 +327,8 @@ G [count] 行目の最初の非空白文字に移動します(行指向) {Vi にはありません} <C-Home> or *gg* *<C-Home>* -gg [count] 行目の最初の非空白文字に移動します(行指向) +gg [count] 行目の最初の非空白文字に移動します(行指向 + |linewise|)。 カウントの前置がなければ最初の行に移動します。 'startofline' がセットされていなければ同じ桁位置に移動 します。 @@ -336,8 +341,8 @@ gg [count] 行目の最初の非空白文字に移動します(行指向) を変更しません。 *N%* {count}% ファイルの {count} パーセントの位置の最初の非空白文字 - に移動します(行指向)。新しい行番号を計算するのに次の式 - が使われます: + に移動します(行指向|linewise|)。新しい行番号を計算する + のに次の式が使われます: ({count} * number-of-lines + 99) / 100 'startofline' オプションも参照してください。 {Vi にはありません} @@ -1298,21 +1303,22 @@ count を使うと、可能な限り前/後にジャンプできます。つ *H* H スクリーンの最上行から [count] 行目(デフォルト: スク - リーンの最上行)の最初の非空白文字に移動します(行指 - 向)。'startofline' オプションも参照してください。カー - ソル位置は 'scrolloff' オプションに合うように調整され - ます。 + リーンの最上行)の最初の非空白文字に移動します(行指向 + |linewise|)。'startofline' オプションも参照してくださ + い。カーソル位置は 'scrolloff' オプションに合うように + 調整されます。 *M* -M スクリーンの中央の最初の非空白文字に移動します(行指 - 向)。'startofline' オプションも参照してください。 +M スクリーンの中央の最初の非空白文字に移動します(行指向 + |linewise|)。'startofline' オプションも参照してくださ + い。 *L* L スクリーンの最下行から [count] 行目(デフォルト: スク - リーンの最下行)の最初の非空白文字に移動します(行指 - 向)。'startofline' オプションも参照してください。カー - ソル位置は 'scrolloff' オプションに合うように調整され - ます。 + リーンの最下行)の最初の非空白文字に移動します(行指向 + |linewise|)。'startofline' オプションも参照してくださ + い。カーソル位置は 'scrolloff' オプションに合うように + 調整されます。 <LeftMouse> スクリーン上でマウスがクリックされた場所に移動します |exclusive|。参照 |<LeftMouse>|。もしその位置がステー From db67da34258208e89dcaf939b80048d075fff28c Mon Sep 17 00:00:00 2001 From: KIHARA Hideto <deton@m1.interq.or.jp> Date: Mon, 4 Nov 2013 10:00:28 +0900 Subject: [PATCH 455/783] =?UTF-8?q?linewise=E3=81=AE=E8=A8=B3=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=95=B4=E3=80=82=20(=E4=BB=A5=E9=99=8D=E3=81=A7?= =?UTF-8?q?=E3=82=82=E5=87=BA=E3=81=A6=E3=81=8F=E3=82=8B=E3=80=81start=20a?= =?UTF-8?q?nd=20end=20position=E3=81=AE=E8=A8=B3=E3=81=AF=E7=B5=B1?= =?UTF-8?q?=E4=B8=80=E3=81=97=E3=81=9F=E3=81=84=E6=B0=97=E3=82=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/motion.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/motion.jax b/doc/motion.jax index 7b2ca7253..cc6e57ea5 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -69,9 +69,9 @@ かれます。例えば、"yfe" はカーソルを動かしませんが、"yFe" はカーソルをヤンクの スタートした "e" の左側に移動します。 *linewise* *characterwise* -オペレータはすべての行もしくは初めと終わりの位置の間の文字に対して施されます。 -一般的に、行ごとに移動するコマンドは行に対して施され(行指向)、行内を移動するコ -マンドは文字ごとに施されます(文字指向)。しかしながらいくつかの例外はあります。 +オペレータは行全体もしくは開始位置と終了位置の間の文字に対して施されます。一般 +的に、行をまたいで移動するコマンドは行に対して施され(行指向)、行内を移動するコ +マンドは文字に対して施されます(文字指向)。しかしながらいくつかの例外はあります。 *exclusive* *inclusive* 文字指向の移動は内包的(inclusive)か排他的(exclusive)のどちらかです。内包的な場 From a9f89af15911bbf98a209f762826491541dd6359 Mon Sep 17 00:00:00 2001 From: KIHARA Hideto <deton@m1.interq.or.jp> Date: Wed, 6 Nov 2013 19:29:41 +0900 Subject: [PATCH 456/783] =?UTF-8?q?Fix=20typo:=20Inlert=E3=83=A2=E3=83=BC?= =?UTF-8?q?=E3=83=89=E2=86=92=E6=8C=BF=E5=85=A5=E3=83=A2=E3=83=BC=E3=83=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/change.jax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index 26dbfece4..45258cb5c 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -260,10 +260,10 @@ r{char} カーソル下の文字を {char} に置き換える。 う。これは置き換えるべき文字を削除した後 "i<CR><Esc>" を実行したような動作になる。 {char} はダイグラフでもよい |digraph-arg|。 - |:lmap| のマッピングは {char} に適用される。Inlertモー - ドでは、コマンド CTRL-^ を使ってマッピングを切り替えら - れる |i_CTRL-^|。オプション 'encoding' がUnicodeの一種 - のときに composing character を使うことについては + |:lmap| のマッピングは {char} に適用される。挿入モード + では、コマンド CTRL-^ を使ってマッピングを切り替えられ + る |i_CTRL-^|。オプション 'encoding' がUnicodeの一種の + ときに composing character を使うことについては |utf-8-char-arg| を参照。 *gr* From ac5d835a902661760eb7953861f656850decd1e5 Mon Sep 17 00:00:00 2001 From: KIHARA Hideto <deton@m1.interq.or.jp> Date: Sun, 10 Nov 2013 14:57:34 +0900 Subject: [PATCH 457/783] =?UTF-8?q?linewise,=20characterwise=E3=81=AE?= =?UTF-8?q?=E8=A8=B3=E8=AA=9E=E3=82=92=E3=80=81=E3=83=A2=E3=83=BC=E3=83=89?= =?UTF-8?q?=E5=90=8D=E3=81=AB=E5=90=88=E3=82=8F=E3=81=9B=E3=81=A6=E3=80=81?= =?UTF-8?q?=E8=A1=8C=E5=8D=98=E4=BD=8D=E3=80=81=E6=96=87=E5=AD=97=E5=8D=98?= =?UTF-8?q?=E4=BD=8D=E3=81=AB=E7=B5=B1=E4=B8=80=E3=80=82=20(=E8=A1=8C?= =?UTF-8?q?=E6=8C=87=E5=90=91=E3=80=81=E6=96=87=E5=AD=97=E6=8C=87=E5=90=91?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F=E9=83=A8?= =?UTF-8?q?=E5=88=86=E3=82=92=E7=BD=AE=E6=8F=9B)=E3=80=82=20blockwise?= =?UTF-8?q?=E3=81=AB=E9=96=A2=E3=81=97=E3=81=A6=E3=82=82=E3=83=A2=E3=83=BC?= =?UTF-8?q?=E3=83=89=E5=90=8D=E3=81=AB=E5=90=88=E3=82=8F=E3=81=9B=E3=81=A6?= =?UTF-8?q?=E3=80=81=E7=9F=A9=E5=BD=A2=E3=81=AB=E7=B5=B1=E4=B8=80=E3=80=82?= =?UTF-8?q?=20(=E3=81=9F=E3=81=A0=E3=81=97=E4=B8=80=E9=83=A8=E3=80=81?= =?UTF-8?q?=E3=83=96=E3=83=AD=E3=83=83=E3=82=AF=E5=8D=98=E4=BD=8D=E3=81=AE?= =?UTF-8?q?=E3=81=BE=E3=81=BE=E3=81=AE=E9=83=A8=E5=88=86=E3=81=82=E3=82=8A?= =?UTF-8?q?)=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/change.jax | 8 ++-- doc/eval.jax | 25 ++++++----- doc/gui.jax | 6 +-- doc/gui_x11.jax | 4 +- doc/index.jax | 2 +- doc/insert.jax | 2 +- doc/intro.jax | 2 +- doc/map.jax | 2 +- doc/motion.jax | 110 ++++++++++++++++++++++++------------------------ doc/term.jax | 10 ++--- doc/usr_04.jax | 12 +++--- 11 files changed, 91 insertions(+), 92 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index 45258cb5c..04888683a 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -1017,10 +1017,10 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ *put-Visual-mode* *v_p* *v_P* ビジュアルモードで |p| や |P| 等の貼り付けコマンドを使ったとき、Vimは選択さ れたテキストをレジスタの中身で置き換えようとする。これがうまく動作するかどう -かは、選択領域の種類とレジスタ内のテキストの種類による。ブロック指向の選択で -は、ブロックのサイズと、選択領域の角が既存の文字上にあるかどうかにもよる。 -(実装上の詳細:実際の動作は、まずレジスタの中身を選択領域の後に貼り付け、その -後で選択領域を削除するようになっている) +かは、選択領域の種類とレジスタ内のテキストの種類による。矩形選択では、ブロッ +クのサイズと、選択領域の角が既存の文字上にあるかどうかにもよる。(実装上の詳 +細:実際の動作は、まずレジスタの中身を選択領域の後に貼り付け、その後で選択領 +域を削除するようになっている) それまで選択されていたテキストが無名レジスタに保存される。同じテキストを複数 のビジュアル選択領域にプットしたい場合は、ほかのレジスタを使う必要がある。例 えば、コピーしたいテキストをヤンクして、選択したテキストを "0p で置き換える。 diff --git a/doc/eval.jax b/doc/eval.jax index 030ca039d..c95c2138a 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -3326,9 +3326,9 @@ getreg([{regname} [, 1]]) *getreg()* getregtype([{regname}]) *getregtype()* レジスタ{regname}の種類を表す文字列を返す。 戻り値は次のいずれかとなる: - "v" 文字指向|characterwise|の場合 - "V" 行指向|linewise|の場合 - "<CTRL-V>{width}" 矩形指向|blockwise-visual|の場合 + "v" 文字単位|characterwise|の場合 + "V" 行単位|linewise|の場合 + "<CTRL-V>{width}" 矩形|blockwise-visual|の場合 0 空、または未知のレジスタの場合 <CTRL-V>は値0x16の1文字である。 {regname}を指定しないときは|v:register|が使われる。 @@ -4202,12 +4202,12 @@ mode([expr]) 現在のモードを示す文字列を返す。 n ノーマル no オペレータ待機 - v 文字指向ビジュアル - V 行指向ビジュアル - CTRL-V 矩形指向ビジュアル - s 文字指向選択 - S 行指向選択 - CTRL-S 矩形指向選択 + v 文字単位ビジュアル + V 行単位ビジュアル + CTRL-V 矩形ビジュアル + s 文字単位選択 + S 行単位選択 + CTRL-S 矩形選択 i 挿入 R 置換 |R| Rv 仮想置換 |gR| @@ -5090,7 +5090,7 @@ setreg({regname}, {value} [,{options}]) 数となる(<Tab>は1文字と数えられる)。 {options}にレジスタの設定が何も含まれていないとき、{value}が - <NL>で終わっていない限り、デフォルトの文字指向モードが使われる。 + <NL>で終わっていない限り、デフォルトの文字単位モードが使われる。 レジスタ '=' の値を設定することはできないが、これが使える: > :let @= = var_expr < 成功なら0、失敗なら非0を返す。 @@ -5926,7 +5926,7 @@ visualmode([expr]) *visualmode()* ドを教えてくれる。初期状態では単に空文字列を返すだけだが、一度 でもビジュアルモードが使われた場合、その種類によって "v" か "V" か "<CTRL-V>" (CTRL-Vの文字が1文字で) 返される。これはそれ - ぞれ文字選択、行選択、ブロック選択を意味している。 + ぞれ文字選択、行選択、矩形選択を意味している。 例: > exe "normal " . visualmode() < これは最後に使われたのと同じビジュアルモードに入る。また、スク @@ -6649,8 +6649,7 @@ Vimはこれを見つけると、まず波括弧の中の式を評価し、そ 無しレジスタとして使用でき、"@/" はサーチパターンとし て使用できる。 {expr1}の結果が<CR>か<NL>で終了していた場合、レジスタ - は行単位で設定され、そうでなければキャラクタ単位で設定 - される。 + は行単位で設定され、そうでなければ文字単位で設定される。 次のコマンドにより最後に検索したパターンをクリアするこ とができる: > :let @/ = "" diff --git a/doc/gui.jax b/doc/gui.jax index 2a5583fab..fbb546ab2 100644 --- a/doc/gui.jax +++ b/doc/gui.jax @@ -443,9 +443,9 @@ X11でこのレジスタを使うには、|x11-selection|も参照。これは スタについても説明している。 あるVimから他の独立したVimにテキストを貼り付けたいときには、選択のタイプ(文 -字、行あるいはブロック)もコピーされることに注意する。他のアプリケーションにつ -いては、タイプは常に文字である。|x11-cut-buffer|を介して得たテキストでも、その -選択のタイプは常に失われる。 +字、行あるいは矩形)もコピーされることに注意する。他のアプリケーションについて +は、タイプは常に文字である。|x11-cut-buffer|を介して得たテキストでも、その選択 +のタイプは常に失われる。 'clipboard' オプションに "unnamed" 文字列が含まれているときには、無名レジスタ は "* レジスタと同じである。したがってコマンドの前に "* を付けずに選択をコピー diff --git a/doc/gui_x11.jax b/doc/gui_x11.jax index 323d3554c..f25b7e95a 100644 --- a/doc/gui_x11.jax +++ b/doc/gui_x11.jax @@ -562,8 +562,8 @@ Vim のものであるときに、それが書き込まれる。 む。 Note これによってテキストが CUT_BUFFER0 にコピーされるときは、セレクションの -型情報 (文字、行、ブロック) は常に失われる。後にそれをペーストするのが Vim -であっても。 +型情報 (文字、行、矩形) は常に失われる。後にそれをペーストするのが Vim であっ +ても。 通常、Xterm は、選択したものをプライマリと CUT_BUFFER0 の両方に書き込む。 ペースト時には、利用可能であればプライマリが使われ、それができなければ diff --git a/doc/index.jax b/doc/index.jax index 02640a85b..7f821e5c3 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -208,7 +208,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |CTRL-T| CTRL-T N 個前のタグリストの場所へジャンプする。 |CTRL-U| CTRL-U ウィンドウを N 行上へスクロール。 (省略時は半画面) -|CTRL-V| CTRL-V ブロック指定のビジュアルモードを開始する。 +|CTRL-V| CTRL-V 矩形ビジュアルモードを開始する。 |CTRL-W| CTRL-W {char} ウィンドウコマンド、|CTRL-W| を参照。 |CTRL-X| CTRL-X 2 カーソル位置/カーソルより後ろにある数字に N を減じる。 diff --git a/doc/insert.jax b/doc/insert.jax index 9b4e09281..8a261d0cc 100644 --- a/doc/insert.jax +++ b/doc/insert.jax @@ -410,7 +410,7 @@ CTRL-G j と CTRL-G k コマンドはカラムの前にテキストを挿入す る: > static int i; int j; -全ての行のカラムに同じテキストを挿入するにはブロック選択コマンド "I" |v_b_I| +全ての行のカラムに同じテキストを挿入するには矩形ビジュアルコマンド "I" |v_b_I| を使う。 ============================================================================== diff --git a/doc/intro.jax b/doc/intro.jax index 8a3b313d8..e2e2ba17f 100644 --- a/doc/intro.jax +++ b/doc/intro.jax @@ -351,7 +351,7 @@ Note: Vim は入力可能な文字はすべてコマンドで使います。実 ンドを入力しているときに働くマップを定義できます。 - Ex コマンドを使ってカーソルを移動できます。関数を使って複雑 な移動をすることもできます。どの ":" コマンドが使われても、 - 移動は常に文字指向で排他的です。そのため、改行を含めずに行末 + 移動は常に文字単位で排他的です。そのため、改行を含めずに行末 の文字を選択することはできません ('virtualedit' を設定すれば 可能)。 Ex コマンドで、オペレータコマンドを使った場所より前にあるテ diff --git a/doc/map.jax b/doc/map.jax index 0aaf22661..b33a6ace5 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -762,7 +762,7 @@ g@{motion} 'operatorfunc' に設定された関数を実行します。 関数の引数には、文字列が一つ渡されます: "line" {motion} は行単位 |linewise| "char" {motion} は文字単位 |characterwise| - "block" {motion} はブロック選択 |blockwise-visual| + "block" {motion} は矩形 |blockwise-visual| "block" はたまにしか使われません。ビジュアルモードの場 合だけ渡されるのですが、"g@" と合わせてもそれほど便利 ではないからです。 diff --git a/doc/motion.jax b/doc/motion.jax index cc6e57ea5..2e432efe9 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -70,16 +70,16 @@ スタートした "e" の左側に移動します。 *linewise* *characterwise* オペレータは行全体もしくは開始位置と終了位置の間の文字に対して施されます。一般 -的に、行をまたいで移動するコマンドは行に対して施され(行指向)、行内を移動するコ -マンドは文字に対して施されます(文字指向)。しかしながらいくつかの例外はあります。 +的に、行をまたいで移動するコマンドは行に対して施され(行単位)、行内を移動するコ +マンドは文字に対して施されます(文字単位)。しかしながらいくつかの例外はあります。 *exclusive* *inclusive* -文字指向の移動は内包的(inclusive)か排他的(exclusive)のどちらかです。内包的な場 +文字単位の移動は内包的(inclusive)か排他的(exclusive)のどちらかです。内包的な場 合は移動の最初と最後の位置がオペレータの対象に含まれますが、排他的な場合はバッ -ファの最後に向かって最後の文字は対象に含まれません。行指向の移動は常に最初と最 +ファの最後に向かって最後の文字は対象に含まれません。行単位の移動は常に最初と最 後の位置が含まれます。 -どの移動コマンドが行指向であり、内包的であり、排他的であるかはコマンドのそばに +どの移動コマンドが行単位であり、内包的であり、排他的であるかはコマンドのそばに 書かれています。しかしながら2つの例外があります: 1. 移動コマンドが排他的で移動後の位置が1桁目であれば、移動の最後は一行前の行の @@ -87,7 +87,7 @@ 行まで移動しますが "d}" はその行を含めません。 *exclusive-linewise* 2. 移動コマンドが排他的で、移動後の位置が1桁目でかつ移動初めの位置がその行の最 - 初の非空白文字かその手前の位置であれば、移動コマンドは行指向になります。 + 初の非空白文字かその手前の位置であれば、移動コマンドは行単位になります。 例: 段落が空白文字で始まっていて、カーソルが最初の非空白文字に位置している とすれば "d}" は段落中のすべての行を最初の空白も含めて削除します。それから put コマンドを行えば削除された行はカーソルの位置の下から挿入されます。 @@ -114,10 +114,10 @@ d:if 1<CR> call search("f")<CR> endif<CR> -Note ":" を使った全ての移動は、排他的な文字指向になることに注意してください。 +Note ":" を使った全ての移動は、排他的な文字単位になることに注意してください。 -移動を行指向、文字指向、ブロック指向にする +移動を行単位、文字単位、ブロック単位にする 移動があなたの望むタイプと違う場合は、オペレータコマンドの後に "v", "V", CTRL-V を使うことで別のタイプにすることができます。 @@ -129,25 +129,25 @@ CTRL-V を使うことで別のタイプにすることができます。 d<C-V>j はカーソル位置とカーソルの1個下の文字を削除します。 > -行指向の移動に文字指向・ブロック指向の移動をさせるときは注意してください。桁が +行単位の移動に文字単位・ブロック単位の移動をさせるときは注意してください。桁が 必ずしも定義されていないかもしれません。 *o_v* v オペレータコマンドと移動コマンドの間で使われたとき: 移動コマン - ドが行指向であっても、オペレータコマンドが文字指向で機能するよ - うにします。移動コマンドが行指向のときは排他的 |exclusive| に - なります。移動コマンドが既に文字指向の場合には、内包的/排他的 + ドが行単位であっても、オペレータコマンドが文字単位で機能するよ + うにします。移動コマンドが行単位のときは排他的 |exclusive| に + なります。移動コマンドが既に文字単位の場合には、内包的/排他的 を切り替えます。これによって排他的な移動を内包的にしたり、その 逆にしたりできます。 *o_V* V オペレータコマンドと移動コマンドの間で使われたとき: 移動コマン - ドが文字指向であっても、オペレータコマンドが行指向で機能するよ + ドが文字単位であっても、オペレータコマンドが行単位で機能するよ うにします。 *o_CTRL-V* CTRL-V オペレータコマンドと移動コマンドの間で使われたとき: オペレータ - コマンドがブロック指向で機能するようにします。これは移動の前後 + コマンドがブロック単位で機能するようにします。これは移動の前後 のカーソル位置を端点とする矩形範囲を選択したのと同じように動作 します。 @@ -282,39 +282,39 @@ T{char} 左に向かって [count] 番目に現れる {char} まで移動し k or *k* <Up> or *<Up>* *CTRL-P* -CTRL-P [count] 行上に移動(行指向|linewise|) +CTRL-P [count] 行上に移動(行単位|linewise|) j or *j* <Down> or *<Down>* CTRL-J or *CTRL-J* <NL> or *<NL>* *CTRL-N* -CTRL-N [count] 行下に移動(行指向|linewise|) +CTRL-N [count] 行下に移動(行単位|linewise|) gk or *gk* *g<Up>* g<Up> [count] 表示行上に移動|exclusive|。行が折り返されている 場合とオペレータコマンドとともに使われた場合は 'k' と - 違う動作になります(行指向ですから)。{Vi にはありません} + 違う動作になります(行単位ですから)。{Vi にはありません} gj or *gj* *g<Down>* g<Down> [count] 表示行下に移動|exclusive|。行が折り返されている 場合とオペレータコマンドとともに使われた場合は 'j' と - 違う動作になります(行指向ですから)。{Vi にはありません} + 違う動作になります(行単位ですから)。{Vi にはありません} *-* -- <minus> [count] 行上の最初の非空白文字に移動します(行指向 +- <minus> [count] 行上の最初の非空白文字に移動します(行単位 |linewise|) + or *+* CTRL-M or *CTRL-M* *<CR>* -<CR> [count] 行下の最初の非空白文字に移動します(行指向 +<CR> [count] 行下の最初の非空白文字に移動します(行単位 |linewise|) *_* -_ <underscore> [count] -1 行下の最初の非空白文字に移動します(行指向 +_ <underscore> [count] -1 行下の最初の非空白文字に移動します(行単位 |linewise|) *G* -G [count] 行目の最初の非空白文字に移動します(行指向 +G [count] 行目の最初の非空白文字に移動します(行単位 |linewise|)。 カウントの前置がなければ最後の行に移動します。 'startofline' がセットされていなければ同じ桁位置に移動 @@ -327,7 +327,7 @@ G [count] 行目の最初の非空白文字に移動します(行指向 {Vi にはありません} <C-Home> or *gg* *<C-Home>* -gg [count] 行目の最初の非空白文字に移動します(行指向 +gg [count] 行目の最初の非空白文字に移動します(行単位 |linewise|)。 カウントの前置がなければ最初の行に移動します。 'startofline' がセットされていなければ同じ桁位置に移動 @@ -341,7 +341,7 @@ gg [count] 行目の最初の非空白文字に移動します(行指向 を変更しません。 *N%* {count}% ファイルの {count} パーセントの位置の最初の非空白文字 - に移動します(行指向|linewise|)。新しい行番号を計算する + に移動します(行単位|linewise|)。新しい行番号を計算する のに次の式が使われます: ({count} * number-of-lines + 99) / 100 'startofline' オプションも参照してください。 @@ -445,22 +445,22 @@ WORD は非空白文字の連続で構成され、ホワイトスペースで区 *]]* ]] [count] セクション前方に、もしくは1桁目が '{' で始まる 次の場所に。オペレータコマンドの後で使われた場合は1桁 - 目が '}' の場所に(行指向) + 目が '}' の場所に(行単位) Note しばしば|exclusive-linewise|になる。 *][* ][ [count] セクション前方に、もしくは1桁目が '}' で始まる - 次の場所に(行指向) + 次の場所に(行単位) Note しばしば|exclusive-linewise|になる。 *[[* [[ [count] セクション後方に、もしくは1桁目が '{' で始まる - 前の場所に(行指向) + 前の場所に(行単位) Note しばしば|exclusive-linewise|になる。 *[]* [] [count] セクション後方に、もしくは1桁目が '}' で始まる - 前の場所に(行指向) + 前の場所に(行単位) Note しばしば|exclusive-linewise|になる。 これらのコマンドは3種類のテキストのまとまりの単位で移動します。 @@ -524,94 +524,94 @@ WORD は非空白文字の連続で構成され、ホワイトスペースで区 aw "a word"、[count] word 選択します(参照 |word|)。 単語の前後に続いているホワイトスペースもともに含められ ますがカウントはされません。 - 行指向ビジュアルモードで使われたときは、"aw" は文字単 + 行単位ビジュアルモードで使われたときは、"aw" は文字単 位ビジュアルモードに切り替えます。 *v_iw* *iw* iw "inner word"、[count] word 選択します(参照 |word|)。 word の間のホワイトスペースもカウントされます。 - 行指向ビジュアルモードで使われたときは、"iw" は文字単 + 行単位ビジュアルモードで使われたときは、"iw" は文字単 位ビジュアルモードに切り替えます。 *v_aW* *aW* aW "a WORD"、[count] WORD 選択します(参照 |WORD|)。 単語の前後に続いているホワイトスペースも含められます がカウントはされません。 - 行指向ビジュアルモードで使われたときは、"aW" は文字単 + 行単位ビジュアルモードで使われたときは、"aW" は文字単 位ビジュアルモードに切り替えます。 *v_iW* *iW* iW "inner WORD"、[count] WORD 選択します(参照 |WORD|)。 ホワイトスペースもカウントされます。 - 行指向ビジュアルモードで使われたときは、"iW" は文字単 + 行単位ビジュアルモードで使われたときは、"iW" は文字単 位ビジュアルモードに切り替えます。 *v_as* *as* as "a sentence"、[count] 文選択します(参照 |sentence|)。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 *v_is* *is* is "inner sentence"、[count] 文の内部を選択します(参照 |sentence|)。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 *v_ap* *ap* ap "a paragraph"、[count] 段落選択します(参照 |paragraph|)。 例外: 空行 (空白だけからなる) も段落の境界になります。 - ビジュアルモードで使われたときは、行指向になります。 + ビジュアルモードで使われたときは、行単位になります。 *v_ip* *ip* ip "inner paragraph"、[count] 段落の内部を選択します(参照 |paragraph|)。 例外: 空行 (空白だけからなる) も段落の境界になります。 - ビジュアルモードで使われたときは、行指向になります。 + ビジュアルモードで使われたときは、行単位になります。 a] *v_a]* *v_a[* *a]* *a[* a[ "a [] block"、[count] '[' ']' block を選択します。この コマンドは後方に [count] 番目に現れる '[' を探し、それ から対応する ']' を探します。そしてその2つに囲まれたテ キストを '[' と ']' も含めて選択します。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 i] *v_i]* *v_i[* *i]* *i[* i[ "inner [] block"、[count] '[' ']' block の内部を選択 します。このコマンドは後方に [count] 番目に現れる '[' を探し、それから対応する ']' を探します。そしてその2つ に囲まれたテキストを '[' と ']' を除いて選択します。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 a) *v_a)* *a)* *a(* a( *v_ab* *v_a(* *ab* ab "a block"、[count] block 選択します。"[count] [(" から それに対応する ')' までで、'(' と ')' を含みます(参照 |[(|)。括弧の外側の空白は含みません。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 i) *v_i)* *i)* *i(* i( *v_ib* *v_i(* *ib* ib "inner block"、[count] block の内部を選択します。 "[count] [(" からそれに対応する ')' までで、'(' と ')' を除きます(参照 |[(|)。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 a> *v_a>* *v_a<* *a>* *a<* a< "a <> block"、[count] <> block 選択します。[count] 番 目に現れる '<' を検索し、それに対応する '>' までを '<' と '>' を含めて選択します。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 i> *v_i>* *v_i<* *i>* *i<* i< "inner <> block"、[count] <> block の内部を選択します。 [count] 番目に現れる '<' を検索し、それに対応する '>' までを '<' と '>' を除いて選択します。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 *v_at* *at* at "a tag block"、[count]個のタグブロックを選択します。 後方の[count]番目の対応しない "<aaa>" からそれに対応す る "</aaa>" までを含みます。詳しくは|tag-blocks|を参照 - してください。ビジュアルモードで使われたときは文字指向 + してください。ビジュアルモードで使われたときは文字単位 になります。 *v_it* *it* @@ -619,21 +619,21 @@ it "inner tag block"、[count]個のタグブロックを選択します。 後方の[count]番目の対応しない "<aaa>" からそれに対応す る "</aaa>" までで、"<aaa>" と "</aaa>" を除きます。詳 しくは|tag-blocks|を参照してください。ビジュアルモード - で使われたときは文字指向になります。 + で使われたときは文字単位になります。 a} *v_a}* *a}* *a{* a{ *v_aB* *v_a{* *aB* aB "a Block"、[count] Block 選択します。"[count] [{" から それに対応する '}' までで '{' と '}' を含みます(参照 |[{|)。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 i} *v_i}* *i}* *i{* i{ *v_iB* *v_i{* *iB* iB "inner Block"、[count] Block 選択します。"[count] [{" からそれに対応する '}' までで '{' と '}' を除きます(参 照|[{|)。 - ビジュアルモードで使われたときは、文字指向になります。 + ビジュアルモードで使われたときは、文字単位になります。 a" *v_aquote* *aquote* a' *v_a'* *a'* @@ -646,7 +646,7 @@ a` *v_a`* *a`* 検索し、どの引用符のペアが文字列をなすかを調べます。 後に空白文字があると、それも含まれます。ない場合、前に 空白文字があれば含まれます。 - ビジュアルモードで使われたときは文字指向になります。 + ビジュアルモードで使われたときは文字単位になります。 ビジュアルモードでこのオブジェクトが繰り返し使われると、 別の文字列を含むように選択範囲を拡大します。現在のとこ ろ、カウントは使われません。 @@ -737,7 +737,7 @@ HTMLでは<br>や<meta ...>のように対応する終了タグを持たない マークへジャンプするには2つの方法があります: 1. ` (バッククォート)で : カーソルは指定された位置に置かれます。|exclusive| 2. ' (シングルクォート)で: カーソルは指定された位置の行の最初の非空白文字に置 - かれ移動は行指向です。 + かれ移動は行単位です。 *m* *mark* *Mark* m{a-zA-Z} カーソル位置を{a-zA-Z}にマークします(これは移動コマン @@ -870,9 +870,9 @@ g'{mark} g`{mark} 後、1番下に挿入された行に移動したい場合は: "p']"。これはすでに挿入済みのテキス トに関しても動作させることができます。 -Note: ブロック指向のビジュアルモードを使っているのでない限り、テキストの削除の -後は始めと終わりの位置は同じです。これらのコマンドは、現在のファイルに対してま -だ変更がされていない場合は動作しません。 +Note: 矩形ビジュアルモードを使っているのでない限り、テキストの削除の後は始めと +終わりの位置は同じです。これらのコマンドは、現在のファイルに対してまだ変更がさ +れていない場合は動作しません。 *'<* *`<* '< `< 現在のバッファで最後に選択されたビジュアルエリアの最初 @@ -1213,7 +1213,7 @@ count を使うと、可能な限り前/後にジャンプできます。つ カウントの前置はできません({count}% はファイルの {count} パーセントの位置に移動します)。'%' を - #if/#else/#endif 上で使うと動作は行指向になります。 + #if/#else/#endif 上で使うと動作は行単位になります。 *[(* [( [count] 前のマッチするものがない '(' に移動します。 @@ -1303,19 +1303,19 @@ count を使うと、可能な限り前/後にジャンプできます。つ *H* H スクリーンの最上行から [count] 行目(デフォルト: スク - リーンの最上行)の最初の非空白文字に移動します(行指向 + リーンの最上行)の最初の非空白文字に移動します(行単位 |linewise|)。'startofline' オプションも参照してくださ い。カーソル位置は 'scrolloff' オプションに合うように 調整されます。 *M* -M スクリーンの中央の最初の非空白文字に移動します(行指向 +M スクリーンの中央の最初の非空白文字に移動します(行単位 |linewise|)。'startofline' オプションも参照してくださ い。 *L* L スクリーンの最下行から [count] 行目(デフォルト: スク - リーンの最下行)の最初の非空白文字に移動します(行指向 + リーンの最下行)の最初の非空白文字に移動します(行単位 |linewise|)。'startofline' オプションも参照してくださ い。カーソル位置は 'scrolloff' オプションに合うように 調整されます。 diff --git a/doc/term.jax b/doc/term.jax index cd868964e..ae9183c27 100644 --- a/doc/term.jax +++ b/doc/term.jax @@ -763,10 +763,10 @@ xterm では Shift と Ctrl キーを押しながらマウスを使うことは るとビジュアルモードと選択モードは中止されます。 ノーマルモード、ビジュアルモード、選択モードで Alt キーを押したまま右ボタンを -クリックすると、選択範囲がブロック指向になります。ただし、'mousemodel' が -"popup" のときは、Alt キーを押しながら左ボタンをクリックします。Alt キーを押し -ているときはマウスイベントをウィンドウマネージャが処理(ウィンドウ移動など)して -しまうシステムでは機能しないことに注意してください。 +クリックすると、選択範囲が矩形になります。ただし、'mousemodel' が "popup" のと +きは、Alt キーを押しながら左ボタンをクリックします。Alt キーを押しているときは +マウスイベントをウィンドウマネージャが処理(ウィンドウ移動など)してしまうシステ +ムでは機能しないことに注意してください。 *double-click* MS-DOS、Win32、xterm (関数 gettimeofday() が使用できるとき)において、GUI が有 @@ -781,7 +781,7 @@ MS-DOS、Win32、xterm (関数 gettimeofday() が使用できるとき)におい 単語の上でダブルクリックするとその単語を選択します。単語を構成する文字は 'iskeyword' によって決まります。対応する文字がある文字の上でダブルクリックする とそのマッチまでを選択します("v%" と同様)。そのマッチが #if/#else/#endif であ -る場合、選択は行指向になります。 +る場合、選択は行単位になります。 MS-DOS と xterm ではダブルクリックの間隔は 'mousetime' で設定できます。他のシ ステムでは、この間隔は Vim の外部で設定されています。 例: ダブルクリックでカーソル下のタグへジャンプする > diff --git a/doc/usr_04.jax b/doc/usr_04.jax index 710a15285..40f244d0a 100644 --- a/doc/usr_04.jax +++ b/doc/usr_04.jax @@ -243,10 +243,10 @@ steve 392 63 334 例えば、中央の Q2 の列を削除するには、カーソルを "Q2" の "Q" に移動します。 -CTRL-V を押し、ブロック選択ビジュアルモードに入ります。次にカーソルを "3j" で -3 行下に動かし、"w" を押して 1 単語分右に移動します。この状態では、最後の列の -先頭が範囲に含まれているので、"h" でそれをはずします。"d" を押すと、選択範囲が -削除されます。 +CTRL-V を押し、矩形ビジュアルモードに入ります。次にカーソルを "3j" で 3 行下に +動かし、"w" を押して 1 単語分右に移動します。この状態では、最後の列の先頭が範 +囲に含まれているので、"h" でそれをはずします。"d" を押すと、選択範囲が削除され +ます。 反対側に移動 @@ -256,8 +256,8 @@ CTRL-V を押し、ブロック選択ビジュアルモードに入ります。 は、"o" を押します (o は "other end" の意味です)。カーソルは始点に動き、始点 を自由に変更できるようになります。もう一度 "o" を押すと、元の終点側に戻ります。 -ブロック選択のときは 4 隅が存在します。"o" は始点と終点を斜めに動くだけです。 -同じ行の反対側に移動するには "O" を使ってください。 +矩形選択のときは 4 隅が存在します。"o" は始点と終点を斜めに動くだけです。同じ +行の反対側に移動するには "O" を使ってください。 Note: ビジュアルモードの "o" と "O" はノーマルモードのコマンドとはまったく違う 動作なので注意してください。ノーマルモードではカーソル行の上や下に空行を作る機 From cc03546bc071479217f47901aec2f757664e1b98 Mon Sep 17 00:00:00 2001 From: KIHARA Hideto <deton@m1.interq.or.jp> Date: Sun, 10 Nov 2013 15:12:04 +0900 Subject: [PATCH 458/783] =?UTF-8?q?]]=E7=AD=89=E3=81=8C(=E8=A1=8C=E5=8D=98?= =?UTF-8?q?=E4=BD=8D)=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=82=8B=E3=81=8C=E5=8E=9F=E6=96=87=E3=81=AB=E3=81=AF|linewise?= =?UTF-8?q?|=E3=81=AF=E7=84=A1=E3=81=8F|exclusive|=E3=81=AA=E3=81=AE?= =?UTF-8?q?=E3=81=A7=E4=BF=AE=E6=AD=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/motion.jax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/motion.jax b/doc/motion.jax index 2e432efe9..40197be06 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -445,22 +445,22 @@ WORD は非空白文字の連続で構成され、ホワイトスペースで区 *]]* ]] [count] セクション前方に、もしくは1桁目が '{' で始まる 次の場所に。オペレータコマンドの後で使われた場合は1桁 - 目が '}' の場所に(行単位) + 目の '}' の下でも止まります。|exclusive| Note しばしば|exclusive-linewise|になる。 *][* ][ [count] セクション前方に、もしくは1桁目が '}' で始まる - 次の場所に(行単位) + 次の場所に。|exclusive| Note しばしば|exclusive-linewise|になる。 *[[* [[ [count] セクション後方に、もしくは1桁目が '{' で始まる - 前の場所に(行単位) + 前の場所に。|exclusive| Note しばしば|exclusive-linewise|になる。 *[]* [] [count] セクション後方に、もしくは1桁目が '}' で始まる - 前の場所に(行単位) + 前の場所に。|exclusive| Note しばしば|exclusive-linewise|になる。 これらのコマンドは3種類のテキストのまとまりの単位で移動します。 From 0cf93bb3303e318de59feeaf2e83a3baf00fc3a0 Mon Sep 17 00:00:00 2001 From: KIHARA Hideto <deton@m1.interq.or.jp> Date: Sun, 10 Nov 2013 15:16:22 +0900 Subject: [PATCH 459/783] =?UTF-8?q?filter=E8=AA=AC=E6=98=8E=E5=86=85?= =?UTF-8?q?=E3=81=AE=E3=80=8C=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=20('"'?= =?UTF-8?q?=20=E3=81=A7=E5=A7=8B=E3=81=BE=E3=82=8B=E8=A1=8C)=E3=80=8D?= =?UTF-8?q?=E3=82=92=E3=80=8C('"'=20=E3=81=A7=E5=A7=8B=E3=81=BE=E3=82=8B)?= =?UTF-8?q?=20=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=80=8D=E3=81=AB?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E3=80=82=20:!=E3=82=B3=E3=83=9E=E3=83=B3?= =?UTF-8?q?=E3=83=89=E3=81=AE=E5=BE=8C=E3=82=8D=E3=81=AB=E9=96=A2=E3=81=99?= =?UTF-8?q?=E3=82=8B=E8=A8=98=E8=BF=B0=E3=81=A7=E3=81=82=E3=82=8A=E3=80=81?= =?UTF-8?q?=E8=A1=8C=E3=81=A7=E3=81=AF=E3=81=AA=E3=81=84=E3=81=AE=E3=81=A7?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/change.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index 04888683a..cbf62a3a6 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -474,8 +474,8 @@ Vimは空白のみを使う。">><<" によって、インデント内の <Tab> Cのプログラムを整形する "indent" (ただし、フィルタ機能を持ったバージョンが必要。 全てのバージョンでできるわけではない) などがある。オプション 'shell' は、Vimが フィルタコマンドを実行するときに使うシェルを指定する ('shelltype' も参照)。フィ -ルタコマンドはコマンド "." で繰り返せる。Vimは `:!` の後のコメント ('"' で始ま -る行) を認識しない。 +ルタコマンドはコマンド "." で繰り返せる。Vimは `:!` の後の ('"' で始まる) コメ +ントを認識しない。 *!* !{motion}{filter} {motion} のテキストを外部プログラム {filter} でフィル From ce62d86fcf06426a43c969283e3bb71f694aebbf Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 18 Nov 2013 22:28:29 +0900 Subject: [PATCH 460/783] update spell.txt and some part of options.txt to 7.4.088 Translate about spelllang-cjk. --- doc/options.jax | 3 +++ doc/spell.jax | 9 ++++++++- en/options.txt | 3 +++ en/spell.txt | 9 ++++++++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 05856faa1..d73525a4a 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -6641,6 +6641,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 小文字で2文字の地域名である。複数の地域名を列挙することもできる: "en_us, en_ca" とすると US 英語とカナダ英語の両方に対応する。しかし オーストラリア、ニュージーランド、英国に固有の単語には対応しない。 + "cjk" という名前が含まれる場合は、東アジアの文字はスペルチェックから除 + 外される。これは、アジアの文字を含むようなテキストを編集する際に便利で + ある。 *E757* 特別な場合として、.spl ファイルの名前をそのまま指定することができる。 その名前の最初の "_xx" は除去され、地域名として使われる (_xx はアン diff --git a/doc/spell.jax b/doc/spell.jax index a97ca15ce..a772b3808 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -1,4 +1,4 @@ -*spell.txt* For Vim バージョン 7.4. Last change: 2013 Jul 17 +*spell.txt* For Vim バージョン 7.4. Last change: 2013 Nov 12 VIMリファレンスマニュアル by Bram Moolenaar @@ -274,6 +274,13 @@ In a table: latin1 yi transliterated Yiddish utf-8 yi-tr transliterated Yiddish + *spell-cjk* +中国語、日本語、あるいはその他の東アジアの文字に対するスペルチェックはサポート +されていないため、これらの文字は通常、エラーとしてマークされる。'spelllang' が +"cjk" を含んでいる場合、これらの文字はエラーとしてマークされなくなる。これは、 +いくつかのアジアの単語が含まれるテキストを、スペルチェックを有効にして編集する +際に有用である。 + スペルファイル *spell-load* diff --git a/en/options.txt b/en/options.txt index 9878725f4..efec1645d 100644 --- a/en/options.txt +++ b/en/options.txt @@ -6500,6 +6500,9 @@ A jump table for the options with a short description can be found at |Q_op|. region by listing them: "en_us,en_ca" supports both US and Canadian English, but not words specific for Australia, New Zealand or Great Britain. + If the name "cjk" is included East Asian characters are excluded from + spell checking. This is useful when editing text that also has Asian + words. *E757* As a special case the name of a .spl file can be given as-is. The first "_xx" in the name is removed and used as the region name diff --git a/en/spell.txt b/en/spell.txt index c2b526d17..a39bec905 100644 --- a/en/spell.txt +++ b/en/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 7.4. Last change: 2013 Jul 17 +*spell.txt* For Vim version 7.4. Last change: 2013 Nov 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -269,6 +269,13 @@ In a table: latin1 yi transliterated Yiddish utf-8 yi-tr transliterated Yiddish + *spell-cjk* +Chinese, Japanese and other East Asian characters are normally marked as +errors, because spell checking of these characters is not supported. If +'spelllang' includes "cjk", these characters are not marked as errors. This +is useful when editing text with spell checking while some Asian words are +present. + SPELL FILES *spell-load* From e1392dfcde9aba3854533e06e4c5acc524baf2dc Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 18 Nov 2013 22:32:07 +0900 Subject: [PATCH 461/783] translate spell.jax --- doc/spell.jax | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index a772b3808..dd45f1cdb 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -158,10 +158,10 @@ z= カーソルの下や後の単語に対して正しい綴りの単語を提 後の単語が間違っている場合など。 ビジュアルモードでハイライトされたテキストは置換される 単語として見なされる。 - The results are sorted on similarity to the word being - replaced. - This may take a long time. Hit CTRL-C when you get - bored. + 結果は、置換されようとしている単語との類似度でソートさ + れる。 + これには長い時間が掛かることがある。うんざりした場合は + CTRL-C を打つこと。 If the command is used without a count the alternatives are listed and you can enter the number @@ -183,14 +183,15 @@ z= カーソルの下や後の単語に対して正しい綴りの単語を提 with the suggestions to indicate the likeliness to the badly spelled word (the higher the score the more different). - When a word was replaced the redo command "." will - repeat the word replacement. This works like "ciw", - the good word and <Esc>. This does NOT work for Thai - and other languages without spaces between words. + 単語が置換された後は、リドゥコマンド "." はその単語の + 置換を繰り返す。これは、"ciw" の後に正しい単語を入力し + <Esc> を入力したように動作する。これは、単語の間にス + ペースを含まないタイ語やその他の言語に対しては動かな + い。 *:spellr* *:spellrepall* *E752* *E753* -:spellr[epall] Repeat the replacement done by |z=| for all matches - with the replaced word in the current window. +:spellr[epall] |z=| によって行われた置換を、現在のウィンドウの全ての + マッチする単語に対して繰り返す。 挿入モードでは、カーソルが間違った綴りの単語の後にある場合、提案を見つけるため に CTRL-X s を使うことができる。これは挿入モード補完のように動作する。次の提案 From 78b53fc8d46fc5caba18cf47055fe3daf6abe171 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 18 Nov 2013 22:34:33 +0900 Subject: [PATCH 462/783] improve translation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 何と動作を同じにするのか、誤読の恐れがあるため修正。 --- doc/usr_05.jax | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/usr_05.jax b/doc/usr_05.jax index 55b6e11c9..70139f690 100644 --- a/doc/usr_05.jax +++ b/doc/usr_05.jax @@ -76,8 +76,9 @@ vimrc ファイルには、コロン (:) を押してから入力するコマン set nocompatible 第一章で述べたように、このマニュアルでは「Vim」について説明しているので、Vi と -は完全に互換性がない部分があります。動作を同じにするには、'compatible' オプ -ションをオフに設定する必要があります。 +は完全に互換性がない部分があります。ここに書かれたように動作させるには、 +'compatible' オプションをオフに設定する、すなわち 'nocompatible' にする必要が +あります。 > set backspace=indent,eol,start From e8378e41f5eeae3d52704e00ba50da91e8395502 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 18 Nov 2013 22:36:31 +0900 Subject: [PATCH 463/783] remove unnecessary line break --- doc/usr_06.jax | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/usr_06.jax b/doc/usr_06.jax index 6861bdf44..9a20b2ce3 100644 --- a/doc/usr_06.jax +++ b/doc/usr_06.jax @@ -7,8 +7,7 @@ 白黒だけのテキストは退屈です。カラー表示すればファイルも生き生き見えてきます。 これは単に見た目が良いだけではなく、作業のスピードアップにもつながります。意味 -のある文字列は違う色で表示しましょう。そして、画面と同じ色で印刷しましょ -う。 +のある文字列は違う色で表示しましょう。そして、画面と同じ色で印刷しましょう。 |06.1| 構文強調表示を有効にする |06.2| 色が付かない?変な色になる? From d9ad10bd0c86660244b9d9d8830b619c6688065f Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Fri, 22 Nov 2013 17:51:11 +0900 Subject: [PATCH 464/783] Do not use fullwidth space (Issue #91) --- doc/change.jax | 2 +- doc/usr_05.jax | 2 +- doc/usr_10.jax | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index cbf62a3a6..1ed04e679 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -708,7 +708,7 @@ Viとの互換性のため、これら2つの例外が許される。 *sub-replace-special* *:s\=* {string} が "\=" で始まるときは、それは式として評価される。 -|sub-replace-expression| を参照のこと。複雑な置換や特殊な文字を使うことができ +|sub-replace-expression| を参照のこと。複雑な置換や特殊な文字を使うことができ る。そうでなければ、{string} の中のこれらの文字は特別な意味を持つ: *:s%* diff --git a/doc/usr_05.jax b/doc/usr_05.jax index 70139f690..12018b4d8 100644 --- a/doc/usr_05.jax +++ b/doc/usr_05.jax @@ -463,7 +463,7 @@ $VIMRUNTIME が使えます。(ディレクトリがすでにある場合は、" これは上で追加したヘルプファイルの中から "g%" のヘルプを探すコマンドです。次の コマンドでローカルヘルプの目次を見ることができます。 > - :help local-additions + :help local-additions ここには、インストールしたローカルヘルプのタイトルが自動的に追加されます。ここ を見れば、どんなローカルヘルプが追加されているかわかります。ここからタグジャン diff --git a/doc/usr_10.jax b/doc/usr_10.jax index 5922fd1b5..4fc4d1b37 100644 --- a/doc/usr_10.jax +++ b/doc/usr_10.jax @@ -176,9 +176,9 @@ Teacher Smith criticized Teacher Johnson today. ~ -フラグは他にもあります。p (print=出力) フラグ を指定すると、最後に変更された -行が表示されます。c (confirm=確認) フラグを指定すると、一つ一つ確認しながら置 -換できます。次のようにして使います: > +フラグは他にもあります。p (print=出力) フラグを指定すると、最後に変更された行 +が表示されます。c (confirm=確認) フラグを指定すると、一つ一つ確認しながら置換 +できます。次のようにして使います: > :%s/Professor/Teacher/c From 6b0f667a95d9348137bc78f4ef052ca7ea944d46 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 23 Nov 2013 22:08:41 +0900 Subject: [PATCH 465/783] Update some files --- doc/cmdline.jax | 5 ++++- doc/if_perl.jax | 2 +- doc/pattern.jax | 2 +- doc/pi_vimball.jax | 2 +- doc/repeat.jax | 15 +++++++++------ doc/tagsrch.jax | 14 +++++++------- doc/undo.jax | 7 ++++--- doc/usr_40.jax | 16 ++++++++-------- doc/usr_45.jax | 2 +- doc/various.jax | 2 ++ en/cmdline.txt | 4 ++++ en/if_perl.txt | 2 +- en/os_win32.txt | 2 +- en/pattern.txt | 2 +- en/pi_vimball.txt | 2 +- en/repeat.txt | 7 +++++-- en/tagsrch.txt | 10 +++++----- en/undo.txt | 7 ++++--- en/usr_25.txt | 2 +- en/usr_40.txt | 16 ++++++++-------- en/usr_45.txt | 4 ++-- en/various.txt | 2 ++ 22 files changed, 73 insertions(+), 54 deletions(-) diff --git a/doc/cmdline.jax b/doc/cmdline.jax index ca782a4df..f8b734141 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -336,6 +336,9 @@ CTRL-] 文字を挿入することなく短縮入力を展開する。{Vi に 全履歴の最近の5項目を一覧表示する。 > :history all -5, +:keepp[atterns] {command} *:keepp* *:keeppatterns* + 検索履歴に何も加えずに、{command} を実行する。 + ============================================================================== 2. コマンドラインの補完 *cmdline-completion* @@ -769,7 +772,7 @@ Note: これらは文字通りに打ち込まれる、これらは特別なキ いないときのみ、<afile> と違う値になる (イベント FileType や Syntax、SpellFileMissing 用)。 <sfile> コマンド ":source" の実行時、取り込まれたファイルのファイル - 名に置き換えられる。 *E498* + 名に置き換えられる。 *E498* 関数の実行時、"関数 {関数名}" に置き換えられる。関数呼び出 しのネスト (入れ子状態) はこのように表される: "関数 {関数名1}..{関数名2}"。 Note: 関数内で <sfile> が使わ diff --git a/doc/if_perl.jax b/doc/if_perl.jax index 7b6dcae7a..08783079b 100644 --- a/doc/if_perl.jax +++ b/doc/if_perl.jax @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim バージョン 7.4. Last change: 2012 Oct 25 +*if_perl.txt* For Vim バージョン 7.4. Last change: 2013 Oct 05 VIMリファレンスマニュアル by Sven Verdoolaege diff --git a/doc/pattern.jax b/doc/pattern.jax index 72e749b1e..4850fd0ed 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -1,4 +1,4 @@ -*pattern.txt* For Vim バージョン 7.4. Last change: 2013 Jul 06 +*pattern.txt* For Vim バージョン 7.4. Last change: 2013 Nov 09 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/doc/pi_vimball.jax b/doc/pi_vimball.jax index 614efdaf1..748a92407 100644 --- a/doc/pi_vimball.jax +++ b/doc/pi_vimball.jax @@ -182,7 +182,7 @@ WINDOWS *vimball-windows* * Changed silent! to sil! (shorter) * Safed |'swf'| setting (during vimball extraction, its now turned off) - 32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and + 32 : May 19, 2010 * (Christian Brabandt) :so someplugin.vba and :so someplugin.vba.gz (and the other supported compression types) now works * (Jan Steffens) added support for xz compression diff --git a/doc/repeat.jax b/doc/repeat.jax index d6a220436..95c20562a 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -1,4 +1,4 @@ -*repeat.txt* For Vim バージョン 7.4. Last change: 2012 Mar 23 +*repeat.txt* For Vim バージョン 7.4. Last change: 2013 Jul 25 VIMリファレンスマニュアル by Bram Moolenaar @@ -53,7 +53,7 @@ :g! と同じ。 {patter} の両側の '/' の代わりにどんなシングルバイト文字でも使うことができる。 -しかしアルファベット・数字・'\', '"', '|' は使えない。 +しかしアルファベット、'\'、'"'、'|' は使えない。 これは、検索パターンや置換文字列に '/' が含まれる場合に便利である。 パターンの定義については |pattern|を参照。 @@ -564,6 +564,9 @@ Note 関数はまず読み込まれ、後で実行される。読み込まれた また、関数 |reltime()| を使っても時間を計測できる。この関数には |+reltime| 機 能だけが必要である。これは "huge" 以外でもしばしばついてくる。 +シンタックスハイライトのプロファイリングについては |:syntime| を参照せよ。 + + :prof[ile] start {fname} *:prof* *:profile* *E750* プロファイリングを開始し、終了時に出力を {fname} に出力する。 {fname} がすでに存在するときは、警告なしに上書きされる。 @@ -614,7 +617,7 @@ Note 関数はまず読み込まれ、後で実行される。読み込まれた - スクリプトの読み込み - 自動コマンドの実行 - 外部(シェル)プログラム - + 7行目から11行目は各実行行にかかった時間を示している。実行されない行はカウント されない。それゆえ、コメント行は決してカウントされない。 @@ -633,10 +636,10 @@ Count の桁はその行が何回実行されたかを示す。7行目の "for" - 実経過時間が計測される。他のプロセスがビジーであると、それが予測できない箇 所で遅れを引き起こす可能性がある。 - + - 1行に複数のコマンドを書いていると、1つの時間しか得られない。ここのコマンド に対して時間を見るにはその行を分割すること。 - + - 各行の時間の総和をとると、たいてい関数全体の時間より小さくなる。各行の間 にオーバーヘッドがある。 @@ -651,6 +654,6 @@ Count の桁はその行が何回実行されたかを示す。7行目の "for" い。 - 関数が再帰的に呼ばれた場合、"self" 時間は正しくない。 - + vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/tagsrch.jax b/doc/tagsrch.jax index 9c6c76031..6dbc65bf6 100644 --- a/doc/tagsrch.jax +++ b/doc/tagsrch.jax @@ -1,4 +1,4 @@ -*tagsrch.txt* For Vim バージョン 7.4. Last change: 2011 Oct 28 +*tagsrch.txt* For Vim バージョン 7.4. Last change: 2013 Oct 01 VIMリファレンスマニュアル by Bram Moolenaar @@ -349,9 +349,9 @@ ASCIIコードでソートされている場合にのみ機能する。したが こと。 *tag-regexp* -":tag" と "tselect" コマンドは引数に正規表現を受け付ける。使用できる特殊文字に -ついては|pattern|を参照すること。引数が '/' で始まる場合はパターンとして使われ -る。もし引数が '/' で始まらなければ、完全なタグ名の文字列として扱われる。 +":tag" と ":tselect" コマンドは引数に正規表現を受け付ける。使用できる特殊文字 +については|pattern|を参照すること。引数が '/' で始まる場合はパターンとして使わ +れる。もし引数が '/' で始まらなければ、完全なタグ名の文字列として扱われる。 例: > :tag main < 最も優先度の高い "main" というタグにジャンプする。 > @@ -753,11 +753,11 @@ CTRL-W i 新しいウィンドウを開き、カーソルの下にあったキ *:dli* *:dlist* :[range]dli[st][!] [/]string[/] - "[D" や "]D" と同様だが、[range]で指定された範囲から検 + `[D` や `]D` と同様だが、[range]で指定された範囲から検 索する(デフォルト: ファイル全体)。 [/]と[!]については|:search-args|を参照。{Vi にはない} - Note: ":dl" は ":delete" に "l" レジスタ を指定したも - のとして機能する。 + Note: `:dl` は `:dlist` ではなく、`:delete` に "l" レ + ジスタを指定したものとして機能する。 *[_CTRL-D* [ CTRL-D カーソルの下にあるキーワードを含む最初のマクロ定義にジャ diff --git a/doc/undo.jax b/doc/undo.jax index 111b86822..26c8ffc37 100644 --- a/doc/undo.jax +++ b/doc/undo.jax @@ -1,4 +1,4 @@ -*undo.txt* For Vim バージョン 7.4. Last change: 2013 Aug 22 +*undo.txt* For Vim バージョン 7.4. Last change: 2013 Sep 08 VIMリファレンスマニュアル by Bram Moolenaar @@ -249,8 +249,9 @@ undo ツリーは undo ファイルとして分けて保存されます。undo どうかを確認し (ファイルの中身のハッシュ値で判断)、undo ファイルが書き込まれた 後で編集ファイルが変更されていたときは、データの損失を防ぐため、undo ファイル を無視します。開いているファイルと undo ファイルの所有者が違うときも undo ファ -イルは無視されます。ファイルを開いたときにこの事についてのメッセージを表示させ -るには 'verbose' を設定してください。 +イルは無視されます。ただし、undo ファイルの所有者が現在のユーザーである時を除 +きます。ファイルを開いたときにこの事についてのメッセージを表示させるには +'verbose' を設定してください。 通常、undo ファイルは編集ファイルと同じディレクトリに保存されます。この動作は 'undodir' オプションで変更できます。 diff --git a/doc/usr_40.jax b/doc/usr_40.jax index ef2e3b221..e39edd915 100644 --- a/doc/usr_40.jax +++ b/doc/usr_40.jax @@ -1,4 +1,4 @@ -*usr_40.txt* For Vim バージョン 7.4. Last change: 2006 Jun 21 +*usr_40.txt* For Vim バージョン 7.4. Last change: 2013 Aug 05 VIM USER MANUAL - by Bram Moolenaar @@ -440,16 +440,16 @@ Vim では新しいコマンドを定義することができます。定義し : read !date :endfunction -ファイルを保存する直前にこの関数を実行したいわけです。次のコマンドで設定しま -す: > +バッファをファイルに保存する直前にこの関数を実行したいわけです。次のコマンドで +設定します: > - :autocmd FileWritePre * call DateInsert() + :autocmd BufWritePre * call DateInsert() -"FileWritePre" は自動コマンドが実行されるイベントです。このイベントはファイル -を保存する直前に発行されます。"*" の部分はファイル名にマッチするパターンです。 -"*" はすべてのファイルにマッチします。 +"BufWritePre" は自動コマンドが実行されるイベントです。このイベントはバッファを +ファイルに保存する直前に発行されます。"*" の部分はファイル名にマッチするパター +ンです。"*" はすべてのファイルにマッチします。 この自動コマンドが設定された状態で ":write" を実行すると、ファイル名にマッチし -たすべての FileWritePre 自動コマンドが実行されてから、ファイルが保存されます。 +たすべての BufWritePre 自動コマンドが実行されてから、ファイルが保存されます。 :autocmd の正式な書式は次のとおりです: > :autocmd [group] {events} {file_pattern} [nested] {command} diff --git a/doc/usr_45.jax b/doc/usr_45.jax index 7ae099551..999fdcb0d 100644 --- a/doc/usr_45.jax +++ b/doc/usr_45.jax @@ -320,7 +320,7 @@ Unicode を使うように設定された Vim で 16-bit Unicode のファイル *45.5* 言語のテキストを入力する コンピューターのキーボードには 100 個ほどのキーしかありません。しかし、数千の -文字を持つ言語があり、Unicode には 1 万以上の文字があります。どのようにしてそ +文字を持つ言語があり、Unicode には 10 万以上の文字があります。どのようにしてそ れらの文字を入力するのでしょうか? それほど多くの文字を必要としない場合はダイグラフが使えます。ダイグラフについて は |24.9| で説明しました。 diff --git a/doc/various.jax b/doc/various.jax index 26e5cfa3d..14cd668e1 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -292,6 +292,7 @@ g8 カーソル位置の文字のバイト列を 16 進数で表示します normal、big、huge バージョンの Vim に含まれます。 *+feature-list* + *+acl* |ACL| サポートを含む *+ARP* Amiga のみ: ARP サポートを含む B *+arabic* |Arabic|言語サポート N *+autocmd* |:autocmd|, 自動コマンド実行 @@ -426,6 +427,7 @@ S *+windows* 複数ウィンドウ m *+writebackup* |'writebackup'|がデフォルトで有効 m *+xim* Xインプットメソッド |xim| *+xfontset* Xフォントセットサポート |xfontset| + *+xpm* ピクセルマップサポート m *+xpm_w32* Win32 GUI のみ: pixmap サポート |w32-xpm-support| *+xsmp* XSMP(X session management)サポート *+xsmp_interact* 対話型XSMP(X session management)サポート diff --git a/en/cmdline.txt b/en/cmdline.txt index 36a71cfcc..c309a0f7a 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -356,6 +356,10 @@ terminals) List the recent five entries from all histories: > :history all -5, +:keepp[atterns] {command} *:keepp* *:keeppatterns* + Execute {command}, without adding anything to the search + history + ============================================================================== 2. Command-line completion *cmdline-completion* diff --git a/en/if_perl.txt b/en/if_perl.txt index 95c607bca..7be5f06f6 100644 --- a/en/if_perl.txt +++ b/en/if_perl.txt @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim version 7.4. Last change: 2012 Oct 25 +*if_perl.txt* For Vim version 7.4. Last change: 2013 Oct 05 VIM REFERENCE MANUAL by Sven Verdoolaege diff --git a/en/os_win32.txt b/en/os_win32.txt index f029a7a65..a01a06c8e 100644 --- a/en/os_win32.txt +++ b/en/os_win32.txt @@ -93,7 +93,7 @@ the default value of 'term' from the environment variable "TERM". $PATH *win32-PATH* The directory of the Vim executable is appended to $PATH. This is mostly to -make "!xxd' work, as it is in the Tools menu. And it also means that when +make "!xxd" work, as it is in the Tools menu. And it also means that when executable() returns 1 the executable can actually be executed. ============================================================================== diff --git a/en/pattern.txt b/en/pattern.txt index edbeafde1..f2f0b34e3 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.4. Last change: 2013 Jul 06 +*pattern.txt* For Vim version 7.4. Last change: 2013 Nov 09 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/pi_vimball.txt b/en/pi_vimball.txt index 720d9478b..bbc74988c 100644 --- a/en/pi_vimball.txt +++ b/en/pi_vimball.txt @@ -188,7 +188,7 @@ WINDOWS *vimball-windows* * Changed silent! to sil! (shorter) * Safed |'swf'| setting (during vimball extraction, its now turned off) - 32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and + 32 : May 19, 2010 * (Christian Brabandt) :so someplugin.vba and :so someplugin.vba.gz (and the other supported compression types) now works * (Jan Steffens) added support for xz compression diff --git a/en/repeat.txt b/en/repeat.txt index f1f0ba005..069770024 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.4. Last change: 2012 Mar 23 +*repeat.txt* For Vim version 7.4. Last change: 2013 Jul 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -54,7 +54,7 @@ selection, the same SIZE of area is used, see |visual-repeat|. Same as :g!. Instead of the '/' which surrounds the {pattern}, you can use any other -single byte character, but not an alphanumeric character, '\', '"' or '|'. +single byte character, but not an alphabetic character, '\', '"' or '|'. This is useful if you want to include a '/' in the search pattern or replacement string. @@ -582,6 +582,9 @@ It is only included when Vim was compiled with "huge" features. You can also use the |reltime()| function to measure time. This only requires the |+reltime| feature, which is present more often. +For profiling syntax highlighting see |:syntime|. + + :prof[ile] start {fname} *:prof* *:profile* *E750* Start profiling, write the output in {fname} upon exit. If {fname} already exists it will be silently overwritten. diff --git a/en/tagsrch.txt b/en/tagsrch.txt index eda3447dc..06c983860 100644 --- a/en/tagsrch.txt +++ b/en/tagsrch.txt @@ -1,4 +1,4 @@ -*tagsrch.txt* For Vim version 7.4. Last change: 2011 Oct 28 +*tagsrch.txt* For Vim version 7.4. Last change: 2013 Oct 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -357,7 +357,7 @@ slower then. The former can be avoided by case-fold sorting the tags file. See 'tagbsearch' for details. *tag-regexp* -The ":tag" and "tselect" commands accept a regular expression argument. See +The ":tag" and ":tselect" commands accept a regular expression argument. See |pattern| for the special characters that can be used. When the argument starts with '/', it is used as a pattern. If the argument does not start with '/', it is taken literally, as a full tag name. @@ -771,11 +771,11 @@ CTRL-W i Open a new window, with the cursor on the first line *:dli* *:dlist* :[range]dli[st][!] [/]string[/] - Like "[D" and "]D", but search in [range] lines + Like `[D` and `]D`, but search in [range] lines (default: whole file). See |:search-args| for [/] and [!]. {not in Vi} - Note that ":dl" works like ":delete" with the "l" - register. + Note that `:dl` works like `:delete` with the "l" + flag, not `:dlist`. *[_CTRL-D* [ CTRL-D Jump to the first macro definition that contains the diff --git a/en/undo.txt b/en/undo.txt index 2589a151a..414a63b5e 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*undo.txt* For Vim version 7.4. Last change: 2013 Sep 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -249,8 +249,9 @@ a simple scheme that maps filesystem paths directly to undo files. Vim will detect if an undo file is no longer synchronized with the file it was written for (with a hash of the file contents) and ignore it when the file was changed after the undo file was written, to prevent corruption. An undo file is also -ignored if its owner differs from the owner of the edited file. Set 'verbose' -to get a message about that when opening a file. +ignored if its owner differs from the owner of the edited file, except when +the owner of the undo file is the current user. Set 'verbose' to get a +message about that when opening a file. Undo files are normally saved in the same directory as the file. This can be changed with the 'undodir' option. diff --git a/en/usr_25.txt b/en/usr_25.txt index 01f21a18a..5a687599b 100644 --- a/en/usr_25.txt +++ b/en/usr_25.txt @@ -86,7 +86,7 @@ line, type: > v4jgq -"v" to start Visual mode, "4j' to move to the end of the paragraph and then +"v" to start Visual mode, "4j" to move to the end of the paragraph and then the "gq" operator. The result is: 1 2 3 diff --git a/en/usr_40.txt b/en/usr_40.txt index 13fb8cfdc..b1108a5c3 100644 --- a/en/usr_40.txt +++ b/en/usr_40.txt @@ -1,4 +1,4 @@ -*usr_40.txt* For Vim version 7.4. Last change: 2006 Jun 21 +*usr_40.txt* For Vim version 7.4. Last change: 2013 Aug 05 VIM USER MANUAL - by Bram Moolenaar @@ -440,16 +440,16 @@ written. First you define a function: > : read !date :endfunction -You want this function to be called each time, just before a file is written. -This will make that happen: > +You want this function to be called each time, just before a buffer is written +to a file. This will make that happen: > - :autocmd FileWritePre * call DateInsert() + :autocmd BufWritePre * call DateInsert() -"FileWritePre" is the event for which this autocommand is triggered: Just -before (pre) writing a file. The "*" is a pattern to match with the file -name. In this case it matches all files. +"BufWritePre" is the event for which this autocommand is triggered: Just +before (pre) writing a buffer to a file. The "*" is a pattern to match with +the file name. In this case it matches all files. With this command enabled, when you do a ":write", Vim checks for any -matching FileWritePre autocommands and executes them, and then it +matching BufWritePre autocommands and executes them, and then it performs the ":write". The general form of the :autocmd command is as follows: > diff --git a/en/usr_45.txt b/en/usr_45.txt index 303698179..828ea6fe2 100644 --- a/en/usr_45.txt +++ b/en/usr_45.txt @@ -328,8 +328,8 @@ actually use Vim to convert a file. Example: > *45.5* Entering language text Computer keyboards don't have much more than a hundred keys. Some languages -have thousands of characters, Unicode has ten thousands. So how do you type -these characters? +have thousands of characters, Unicode has over hundred thousand. So how do +you type these characters? First of all, when you don't use too many of the special characters, you can use digraphs. This was already explained in |24.9|. When you use a language that uses many more characters than keys on your diff --git a/en/various.txt b/en/various.txt index 1d05e1a21..4a1c64a73 100644 --- a/en/various.txt +++ b/en/various.txt @@ -291,6 +291,7 @@ g8 Print the hex values of the bytes used in the in the normal, big and huge versions of Vim. *+feature-list* + *+acl* |ACL| support included *+ARP* Amiga only: ARP support included B *+arabic* |Arabic| language support N *+autocmd* |:autocmd|, automatic commands @@ -426,6 +427,7 @@ S *+windows* more than one window m *+writebackup* |'writebackup'| is default on m *+xim* X input method |xim| *+xfontset* X fontset support |xfontset| + *+xpm* pixmap support m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support| *+xsmp* XSMP (X session management) support *+xsmp_interact* interactive XSMP (X session management) support From b9a3817746200d5349dd5c94667f2905412749fa Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sun, 24 Nov 2013 00:14:38 +0900 Subject: [PATCH 466/783] translate consistently MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit xpm_w32 の方は、"pixmap" になっているので、それに合わせる。 --- doc/various.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/various.jax b/doc/various.jax index 14cd668e1..a72f42f0a 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -427,7 +427,7 @@ S *+windows* 複数ウィンドウ m *+writebackup* |'writebackup'|がデフォルトで有効 m *+xim* Xインプットメソッド |xim| *+xfontset* Xフォントセットサポート |xfontset| - *+xpm* ピクセルマップサポート + *+xpm* pixmap サポート m *+xpm_w32* Win32 GUI のみ: pixmap サポート |w32-xpm-support| *+xsmp* XSMP(X session management)サポート *+xsmp_interact* 対話型XSMP(X session management)サポート From f64a6d662b7510b17a7c9b436241807a88e43c06 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 24 Nov 2013 12:53:51 +0900 Subject: [PATCH 467/783] Update some parts --- doc/autocmd.jax | 16 ++++++------ doc/eval.jax | 8 +++--- doc/gui.jax | 13 ++++++---- doc/index.jax | 8 +++++- doc/map.jax | 9 ++++--- doc/options.jax | 56 ++++++++++++++++++++-------------------- en/autocmd.txt | 8 +++--- en/eval.txt | 7 +++-- en/gui.txt | 13 ++++++---- en/index.txt | 8 +++++- en/map.txt | 11 ++++---- en/options.txt | 68 ++++++++++++++++++++++++++----------------------- 12 files changed, 129 insertions(+), 96 deletions(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index f8e6842f9..84515e4a1 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim バージョン 7.4. Last change: 2013 May 19 +*autocmd.txt* For Vim バージョン 7.4. Last change: 2013 Aug 04 VIMリファレンスマニュアル by Bram Moolenaar @@ -507,7 +507,7 @@ CursorHold 'updatetime' の時間の間、ユーザーがキーを押さ の後の移動コマンド入力待ち状態のときは発生しな い。 レコーディングの最中にはCursorHoldイベントは発 - 生しない。|q| + 生しない。|q| Note: このイベントには対話的なコマンドは使えな いことに注意。「続けるには」プロンプトは現れず、 スクリーンは必要に応じて直接更新される。 @@ -522,9 +522,9 @@ CursorHold 'updatetime' の時間の間、ユーザーがキーを押さ CursorHoldI CursorHoldと同様だが、挿入モードのとき発生す る。 *CursorMoved* -CursorMoved ノーマルモードでカーソルが移動した後。カーソル - 行のテキストが変更されたときにも発生する - (例: "x", "rx", "p"などで)。 +CursorMoved ノーマルモードかビジュアルモードでカーソルが移 + 動した後。カーソル行のテキストが変更されたとき + にも発生する(例: "x", "rx", "p"などで)。 先行入力があったりオペレータが実行待ちになって いる場合は発生しない。 |match-parens|の例を参照。 @@ -834,9 +834,9 @@ TextChanged ノーマルモードでカレントバッファのテキストが れるとき。 未処理のキー入力がまだあるとき、またはオペレー ターを待機しているときは、発生しない。 - 注意: このイベントは頻繁に発生するので、ユーザー - が予期しないことや時間のかかる処理は行わないこ - と。 + 注意: このイベントは頻繁に発生するので、ユー + ザーが予期しないことや時間のかかる処理は行わな + いこと。 *TextChangedI* TextChangedI 挿入モードでカレントバッファのテキストが変更さ れたとき。 diff --git a/doc/eval.jax b/doc/eval.jax index c95c2138a..3bd0b21fa 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1,4 +1,4 @@ -*eval.txt* For Vim バージョン 7.4. Last change: 2013 May 21 +*eval.txt* For Vim バージョン 7.4. Last change: 2013 Nov 08 VIMリファレンスマニュアル by Bram Moolenaar @@ -972,7 +972,7 @@ number 数定数 *expr-number* ダブルクォートが使われていることに注意。 -文字列定数には以下の特殊文字が使用できる: +文字列定数には以下の特殊文字が使用できる: \... 3桁の8進数字 (例 "\316") \.. 2桁の8進数字 (非数字が続かなければならない) \. 1桁の8進数字 (非数字が続かなければならない) @@ -6086,6 +6086,7 @@ xor({expr}, {expr}) *xor()* :if v:version > 602 || v:version == 602 && has("patch148") < Note 148が適用されていても、147が抜けていることもありうるので注意。 +acl |ACL| をサポート all_builtin_terms 全ての組込みターミナルを有効にしてコンパイル amiga AMIGAバージョン arabic アラビア語をサポート |Arabic| @@ -6239,7 +6240,8 @@ windows 複数ウィンドウをサポート writebackup オプション 'writebackup' が起動時にonになる xfontset X fontsetをサポート |xfontset| xim XIMをサポート |xim| -xpm_w32 Win32 で pixmap をサポート +xpm pixmap をサポート +xpm_w32 Win32 で pixmap をサポート(後方互換性のためのみ。代わ りに "xpm" を使用せよ。) xsmp Xセッションマネージメントをサポート xsmp_interact 対話的Xセッションマネージメントをサポート xterm_clipboard xtermのクリップボードサポート diff --git a/doc/gui.jax b/doc/gui.jax index fbb546ab2..6f69901d1 100644 --- a/doc/gui.jax +++ b/doc/gui.jax @@ -1,4 +1,4 @@ -*gui.txt* For Vim バージョン 7.4. Last change: 2011 Jul 22 +*gui.txt* For Vim バージョン 7.4. Last change: 2013 Jun 12 VIMリファレンスマニュアル by Bram Moolenaar @@ -92,10 +92,13 @@ GUIウィンドウを開いた直後にいくつかのコマンドを実行し 初期化をするために、gvimrcファイルを使用することができる。 ユーザーの個人的なGUI初期化ファイルを置くのに推奨される場所: - Unix $HOME/.gvimrc - OS/2 $HOME/.gvimrcあるいは$VIM/.gvimrc - MS-DOSとWin32 $HOME/_gvimrcあるいは$VIM/_gvimrc - Amiga s:.gvimrcあるいは$VIM/.gvimrc + Unix $HOME/.gvimrc あるいは $HOME/.vim/gvimrc + OS/2 $HOME/.gvimrc、$HOME/vimfiles/gvimrc あるいは + $VIM/.gvimrc + MS-DOSとWin32 $HOME/_gvimrc、$HOME/vimfiles/gvimrc あるいは + $VIM/_gvimrc + Amiga s:.gvimrc、home:.gvimrc、home:vimfiles:gvimrc + あるいは $VIM/.gvimrc GUI版のVimでだけ意味を持つオプションがある。'guicursor'、'guifont'、'guipty'、 'guioptions' である。それらは他の全てのオプションと共に|options.txt|で説明され diff --git a/doc/index.jax b/doc/index.jax index 7f821e5c3..258633598 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1,4 +1,4 @@ -*index.txt* For Vim バージョン 7.4. Last change: 2013 May 17 +*index.txt* For Vim バージョン 7.4. Last change: 2013 Nov 14 VIMリファレンスマニュアル by Bram Moolenaar @@ -820,6 +820,10 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |zF| zF N 行の折畳を作成する |zG| zG wordを正しくスペリングされた単語としてマー クする。 +|zH| zH 'wrap' がオフの時、スクリーンの幅の半分右へ + スクロールする +|zL| zL 'wrap' がオフの時、スクリーンの幅の半分左へ + スクロールする |zM| zM 'foldlevel' を0に設定する |zN| zN 'foldenable' をオンにする |zO| zO 折畳を再帰的に開く @@ -1303,6 +1307,7 @@ You found it, Arthur! *holy-grail* |:keepmarks| :kee[pmarks] マークを変更せずにコマンドを実行する |:keepjumps| :keepj[umps] マークやジャンプリストを変更せずにコマンドを実 行する +|:keeppatterns| :keepp[atterns] 検索パターン履歴を変更せずにコマンドを実行する |:lNext| :lN[ext] ロケーションリストの前の項目の位置へ移動 |:lNfile| :lNf[ile] 前のファイルの最後の項目の位置へ移動 |:list| :l[ist] 行を表示 @@ -1567,6 +1572,7 @@ You found it, Arthur! *holy-grail* で開く |:swapname| :sw[apname] 現在のスワップファイルの名前を表示 |:syntax| :sy[ntax] 構文強調表示 (syntax highlighting) +|:syntime| :synti[me] 構文強調表示の速度を測定する |:syncbind| :sync[bind] ウィンドウのスクロール状態を同期する |:t| :t ":copy" と同じ。 |:tNext| :tN[ext] 後方へ検索し一致したタグ位置へジャンプ diff --git a/doc/map.jax b/doc/map.jax index b33a6ace5..adbfd8ee5 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -1,4 +1,4 @@ -*map.txt* For Vim バージョン 7.4. Last change: 2013 May 05 +*map.txt* For Vim バージョン 7.4. Last change: 2013 Aug 22 VIMリファレンスマニュアル by Bram Moolenaar @@ -158,8 +158,9 @@ 1.2 特別な引数 *:map-arguments* -引数に "<buffer>"、"<silent>"、"<special>"、"<script>"、"<expr>"、"<unique>"、 -を指定できます。マップコマンドの直後 (他の引数の前) に置いてください。 +引数に "<buffer>"、"<nowait>"、"<silent>"、"<special>"、"<script>"、"<expr>"、 +"<unique>" を指定できます。マップコマンドの直後 (他の引数の前) に置いてくださ +い。 *:map-local* *:map-<buffer>* *E224* *E225* カレントバッファだけで使用できるマップを作成するには、マップコマンドの引数に @@ -173,6 +174,7 @@ :mapclear <buffer> バッファローカルのマップはそのバッファが削除されるときにいっしょに消去されま す。アンロード(|:bunload|)では消去されません。ローカルオプションと同じです。 +また、|map-precedence| を参照して下さい。 *:map-<silent>* *:map-silent* 実行するコマンドがコマンドラインに表示されないようにするには、マップコマンドの @@ -584,6 +586,7 @@ Note: 変数 "mapleader" はマップを定義するときに使用されます は、その文字を入力する前に CTRL-V を (1回) 押してください。'paste' がオンの場 合には、挿入モードでマップを使用できません。 + *map-error* Note: マップを使用したときに、エラーが起きた場合 (エラーメッセージやビープ音が 出ます)、マップのまだ実行されていない部分は実行されません。これはVi互換です。 diff --git a/doc/options.jax b/doc/options.jax index d73525a4a..fcaa42736 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1,4 +1,4 @@ -*options.txt* For Vim バージョン 7.4. Last change: 2013 May 23 +*options.txt* For Vim バージョン 7.4. Last change: 2013 Nov 12 VIMリファレンスマニュアル by Bram Moolenaar @@ -517,37 +517,38 @@ Note 展開されるオプションの値の長さ制限に注意。システム モードラインには2つの形式がある。1つ目の形式は次の通りである。 [text]{white}{vi:|vim:|ex:}[white]{options} -[text] 任意のテキスト、なくても良い -{white} 1個以上の余白 (<Space> または <Tab>) -{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 -[white] 空白、なくても良い -{options} オプション設定が、空白か ':' で区切られて並んだもので、':' の - 間の部分はコマンド ":set" の引数である(空でもよい) +[text] 任意のテキスト、なくても良い +{white} 1個以上の余白 (<Space> または <Tab>) +{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 +[white] 空白、なくても良い +{options} オプション設定が、空白か ':' で区切られて並んだもので、 + ':' の間の部分はコマンド ":set" の引数である(空でもよい) 例: vi:noai:sw=3 ts=6 ~ + vim: tw=77 ~ 2つ目の形式は次の通りである (Viのバージョンによってはこの形式と互換性がある)。 - [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text] + [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text] -[text] 任意のテキスト、なくても良い -{white} 1個以上の余白 (<Space> または <Tab>) -{vi:|vim:|ex:} "vi:" か "vim:" か "ex:" という文字列 -[white] 空白、なくても良い -se[t] "set " または "se " という文字列 ( NOTE 終わりの空白に注意) -{options} オプション設定が空白で区切られて並んだもので、コマンド ":set" - の引数である -: コロン -[text] 任意のテキスト、なくても良い +[text] 任意のテキスト、なくても良い +{white} 1個以上の余白 (<Space> または <Tab>) +{vi:|vim:|Vim:|ex:} "vi:" か "vim:" か "Vim:" か "ex:" という文字列 +[white] 空白、なくても良い +se[t] "set " または "se " という文字列 (NOTE 終わりの空白に注意) +{options} オプション設定が空白で区切られて並んだもので、コマンド + ":set" の引数である +: コロン +[text] 任意のテキスト、なくても良い 例: - /* vim: set ai tw=75: */ ~ + /* Vim: set ai tw=75: */ ~ -"vi:" または "|vim:|" または "ex:" の前には空白が必要である。これが "lex:" 等 -の普通の言葉を誤認する可能性を低めている。ただし例外があり、 "vi:" と "vim:" -は行頭に来てもよい (バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モー -ドラインとは見なされない ("example:" の略かもしれないから)。 +{vi:|vim:|Vim:|ex:} の前には空白が必要である。これが "lex:" 等の普通の言葉を誤 +認する可能性を低めている。ただし例外があり、 "vi:" と "vim:"は行頭に来てもよい +(バージョン3.0との互換性のため)。"ex:" が行頭に来ると、モードラインとは見なさ +れない ("example:" の略かもしれないから)。 *modeline-local* オプションは ":setlocal" などで設定できる。そうして設定した値は、そのバッファ @@ -563,7 +564,7 @@ se[t] "set " または "se " という文字列 ( NOTE 終わりの空白に注 *modeline-version* モードラインの内容が、Vimのバージョンによって使用可能だったり不可能だったりす -る場合には、"vim:" のところでバージョンを指定できる。 +る場合には、"vim:" または "Vim:" のところでバージョンを指定できる。 vim{vers}: バージョン {vers} 以降 (そのバージョンを含む) vim<{vers}: バージョン {vers} より前 vim={vers}: バージョン {vers} のみ @@ -2300,7 +2301,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる cscopeの結果を表示するのにQuickFixウィンドウを使うかどうかを指定する。 |cscopequickfix|を参照。 - *'cscoperelative'* *'csre'* + *'cscoperelative'* *'csre'* *'nocscoperelative'* *'nocsre'* 'cscoperelative' 'csre' 切替 (既定は off) グローバル {Vimが|+cscope|機能つきでコンパイルされたときのみ利用 @@ -7705,7 +7706,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'undolevels'* *'ul'* 'undolevels' 'ul' 数値 (既定では 100、 Unix, VMS, Win32, OS/2での既定値は 1000) - グローバル + グローバル/バッファについてローカル |global-local| {Vi にはない} アンドゥ可能な変更の最大値。アンドゥをするための情報はメモリに蓄えられ るため、大きい数を設定するとメモリの消費量も多くなる (にも関わらず、単 @@ -7966,8 +7967,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる いた。しかしこれはVi互換からはほど遠い。これを設定すると動かなくなるプ ラグインやVimスクリプトもあるかもしれない。例えば|l|でカーソルが最後の 文字の後に移動できるためである。よく注意して使うこと! - コマンド|$|はカーソルを行の最後の文字へ移動させる。最後の文字を越えは - しない。そのため、|$|によってカーソルが左へ移動することもありえる。 + コマンド `$` はカーソルを行の最後の文字へ移動させる。最後の文字を越え + はしない。そのため、`$` によってカーソルが左へ移動することもありえる! + コマンド `g$` はスクリーン行の最後に移動するだろう。 "all" と "onemore" を同時に設定することは意味がないが、そのように設定 しても警告は出ない。 diff --git a/en/autocmd.txt b/en/autocmd.txt index 3a4643221..524a47957 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.4. Last change: 2013 May 19 +*autocmd.txt* For Vim version 7.4. Last change: 2013 Aug 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -513,9 +513,9 @@ CursorHold When the user doesn't press a key for the time CursorHoldI Just like CursorHold, but in Insert mode. *CursorMoved* -CursorMoved After the cursor was moved in Normal mode. - Also when the text of the cursor line has been - changed, e.g., with "x", "rx" or "p". +CursorMoved After the cursor was moved in Normal or Visual + mode. Also when the text of the cursor line + has been changed, e.g., with "x", "rx" or "p". Not triggered when there is typeahead or when an operator is pending. For an example see |match-parens|. diff --git a/en/eval.txt b/en/eval.txt index f7cc93b72..9e5325edd 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.3. Last change: 2013 May 21 +*eval.txt* For Vim version 7.4. Last change: 2013 Nov 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -6316,6 +6316,7 @@ There are three types of features: < Note that it's possible for patch 147 to be omitted even though 148 is included. +acl Compiled with |ACL| support. all_builtin_terms Compiled with all builtin terminals enabled. amiga Amiga version of Vim. arabic Compiled with Arabic support |Arabic|. @@ -6482,7 +6483,9 @@ windows Compiled with support for more than one window. writebackup Compiled with 'writebackup' default on. xfontset Compiled with X fontset support |xfontset|. xim Compiled with X input method support |xim|. -xpm_w32 Compiled with pixmap support for Win32. +xpm Compiled with pixmap support. +xpm_w32 Compiled with pixmap support for Win32. (Only for + backward compatibility. Use "xpm" instead.) xsmp Compiled with X session management support. xsmp_interact Compiled with interactive X session management support. xterm_clipboard Compiled with support for xterm clipboard. diff --git a/en/gui.txt b/en/gui.txt index 0e9baf2b0..aeda3f2f6 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 7.4. Last change: 2011 Jul 22 +*gui.txt* For Vim version 7.4. Last change: 2013 Jun 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -93,10 +93,13 @@ and initialize other things that you may want to set up differently from the terminal version. Recommended place for your personal GUI initializations: - Unix $HOME/.gvimrc - OS/2 $HOME/.gvimrc or $VIM/.gvimrc - MS-DOS and Win32 $HOME/_gvimrc or $VIM/_gvimrc - Amiga s:.gvimrc or $VIM/.gvimrc + Unix $HOME/.gvimrc or $HOME/.vim/gvimrc + OS/2 $HOME/.gvimrc, $HOME/vimfiles/gvimrc + or $VIM/.gvimrc + MS-DOS and Win32 $HOME/_gvimrc, $HOME/vimfiles/gvimrc + or $VIM/_gvimrc + Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc + or $VIM/.gvimrc There are a number of options which only have meaning in the GUI version of Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are diff --git a/en/index.txt b/en/index.txt index 84a15836b..6def73e1d 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.4. Last change: 2013 May 17 +*index.txt* For Vim version 7.4. Last change: 2013 Nov 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -801,6 +801,10 @@ tag char note action in Normal mode ~ |zE| zE eliminate all folds |zF| zF create a fold for N lines |zG| zG mark word as good spelled word +|zH| zH when 'wrap' off scroll half a screenwidth + to the right +|zL| zL when 'wrap' off scroll half a screenwidth + to the left |zM| zM set 'foldlevel' to zero |zN| zN set 'foldenable' |zO| zO open folds recursively @@ -1268,6 +1272,7 @@ tag command action ~ |:keepalt| :keepa[lt] following command keeps the alternate file |:keepmarks| :kee[pmarks] following command keeps marks where they are |:keepjumps| :keepj[umps] following command keeps jumplist and marks +|:keeppatterns| :keepp[atterns] following command keeps search pattern history |:lNext| :lN[ext] go to previous entry in location list |:lNfile| :lNf[ile] go to last entry in previous file |:list| :l[ist] print lines @@ -1510,6 +1515,7 @@ tag command action ~ |:sview| :sv[iew] split window and edit file read-only |:swapname| :sw[apname] show the name of the current swap file |:syntax| :sy[ntax] syntax highlighting +|:syntime| :synti[me] measure syntax highlighting speed |:syncbind| :sync[bind] sync scroll binding |:t| :t same as ":copy" |:tNext| :tN[ext] jump to previous matching tag diff --git a/en/map.txt b/en/map.txt index 039b77b36..30e22dbbe 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.3. Last change: 2013 May 05 +*map.txt* For Vim version 7.4. Last change: 2013 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -159,9 +159,9 @@ type "a", then "bar" will get inserted. 1.2 SPECIAL ARGUMENTS *:map-arguments* -"<buffer>", "<silent>", "<special>", "<script>", "<expr>" and "<unique>" can -be used in any order. They must appear right after the command, before any -other arguments. +"<buffer>", "<nowait>", "<silent>", "<special>", "<script>", "<expr>" and +"<unique>" can be used in any order. They must appear right after the +command, before any other arguments. *:map-local* *:map-<buffer>* *E224* *E225* If the first argument to one of these commands is "<buffer>" the mapping will @@ -175,6 +175,7 @@ The "<buffer>" argument can also be used to clear mappings: > :mapclear <buffer> Local mappings are also cleared when a buffer is deleted, but not when it is unloaded. Just like local option values. +Also see |map-precedence|. *:map-<silent>* *:map-silent* To define a mapping which will not be echoed on the command line, add @@ -586,7 +587,7 @@ this (see |<>|). Example: > To avoid mapping of the characters you type in insert or Command-line mode, type a CTRL-V first. The mapping in Insert mode is disabled if the 'paste' option is on. - + *map-error* Note that when an error is encountered (that causes an error message or beep) the rest of the mapping is not executed. This is Vi-compatible. diff --git a/en/options.txt b/en/options.txt index efec1645d..94378dcd6 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.4. Last change: 2013 May 23 +*options.txt* For Vim version 7.4. Last change: 2013 Nov 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -482,39 +482,42 @@ to set options automatically for one or more files: There are two forms of modelines. The first form: [text]{white}{vi:|vim:|ex:}[white]{options} -[text] any text or empty -{white} at least one blank character (<Space> or <Tab>) -{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" -[white] optional white space -{options} a list of option settings, separated with white space or ':', - where each part between ':' is the argument for a ":set" - command (can be empty) +[text] any text or empty +{white} at least one blank character (<Space> or <Tab>) +{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" +[white] optional white space +{options} a list of option settings, separated with white space + or ':', where each part between ':' is the argument + for a ":set" command (can be empty) -Example: +Examples: vi:noai:sw=3 ts=6 ~ + vim: tw=77 ~ The second form (this is compatible with some versions of Vi): - [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text] + [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text] -[text] any text or empty -{white} at least one blank character (<Space> or <Tab>) -{vi:|vim:|ex:} the string "vi:", "vim:" or "ex:" -[white] optional white space -se[t] the string "set " or "se " (note the space) -{options} a list of options, separated with white space, which is the - argument for a ":set" command -: a colon -[text] any text or empty +[text] any text or empty +{white} at least one blank character (<Space> or <Tab>) +{vi:|vim:|Vim:|ex:} the string "vi:", "vim:", "Vim:" or "ex:" +[white] optional white space +se[t] the string "set " or "se " (note the space); When + "Vim" is used it must be "set". +{options} a list of options, separated with white space, which + is the argument for a ":set" command +: a colon +[text] any text or empty -Example: +Examples: /* vim: set ai tw=75: */ ~ + /* Vim: set ai tw=75: */ ~ -The white space before {vi:|vim:|ex:} is required. This minimizes the chance -that a normal word like "lex:" is caught. There is one exception: "vi:" and -"vim:" can also be at the start of the line (for compatibility with version -3.0). Using "ex:" at the start of the line will be ignored (this could be -short for "example:"). +The white space before {vi:|vim:|Vim:|ex:} is required. This minimizes the +chance that a normal word like "lex:" is caught. There is one exception: +"vi:" and "vim:" can also be at the start of the line (for compatibility with +version 3.0). Using "ex:" at the start of the line will be ignored (this +could be short for "example:"). *modeline-local* The options are set like with ":setlocal": The new value only applies to the @@ -530,7 +533,7 @@ in another window. But window-local options will be set. *modeline-version* If the modeline is only to be used for some versions of Vim, the version -number can be specified where "vim:" is used: +number can be specified where "vim:" or "Vim:" is used: vim{vers}: version {vers} or later vim<{vers}: version before {vers} vim={vers}: version {vers} @@ -1881,8 +1884,8 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} A sequence of single character flags. When a character is present - this indicates vi-compatible behavior. This is used for things where - not being vi-compatible is mostly or sometimes preferred. + this indicates Vi-compatible behavior. This is used for things where + not being Vi-compatible is mostly or sometimes preferred. 'cpoptions' stands for "compatible-options". Commas can be added for readability. To avoid problems with flags that are added in the future, use the @@ -2243,7 +2246,7 @@ A jump table for the options with a short description can be found at |Q_op|. Specifies whether to use quickfix window to show cscope results. See |cscopequickfix|. - *'cscoperelative'* *'csre'* + *'cscoperelative'* *'csre'* *'nocscoperelative'* *'nocsre'* 'cscoperelative' 'csre' boolean (default off) global {not available when compiled without the |+cscope| @@ -4605,7 +4608,7 @@ A jump table for the options with a short description can be found at |Q_op|. The cursor is displayed at the start of the space a Tab character occupies, not at the end as usual in Normal mode. To get this cursor position while displaying Tabs with spaces, use: > - :set list lcs=tab\ \ + :set list lcs=tab:\ \ < Note that list mode will also affect formatting (set with 'textwidth' or 'wrapmargin') when 'cpoptions' includes 'L'. See 'listchars' for @@ -7541,7 +7544,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'undolevels'* *'ul'* 'undolevels' 'ul' number (default 100, 1000 for Unix, VMS, Win32 and OS/2) - global + global or local to buffer |global-local| {not in Vi} Maximum number of changes that can be undone. Since undo information is kept in memory, higher numbers will cause more memory to be used @@ -7810,8 +7813,9 @@ A jump table for the options with a short description can be found at |Q_op|. if the line was empty. But it is far from Vi compatible. It may also break some plugins or Vim scripts. For example because |l| can move the cursor after the last character. Use with care! - Using the |$| command will move to the last character in the line, not + Using the `$` command will move to the last character in the line, not past it. This may actually move the cursor to the left! + The `g$` command will move to the end of the screen line. It doesn't make sense to combine "all" with "onemore", but you will not get a warning for it. From 28e114d8539201b417d50f4f7393c87547eb55e9 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 24 Nov 2013 13:01:26 +0900 Subject: [PATCH 468/783] Fix indent --- doc/eval.jax | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index 3bd0b21fa..7e289a761 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6241,7 +6241,8 @@ writebackup オプション 'writebackup' が起動時にonになる xfontset X fontsetをサポート |xfontset| xim XIMをサポート |xim| xpm pixmap をサポート -xpm_w32 Win32 で pixmap をサポート(後方互換性のためのみ。代わ りに "xpm" を使用せよ。) +xpm_w32 Win32 で pixmap をサポート(後方互換性のためのみ。 + 代わりに "xpm" を使用せよ。) xsmp Xセッションマネージメントをサポート xsmp_interact 対話的Xセッションマネージメントをサポート xterm_clipboard xtermのクリップボードサポート From 56e750d1280824c6b69c4f28a3b50e0eb83d53f4 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 24 Nov 2013 13:08:05 +0900 Subject: [PATCH 469/783] Fix a mistake --- doc/options.jax | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/options.jax b/doc/options.jax index fcaa42736..8e8a7c28e 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -543,7 +543,8 @@ se[t] "set " または "se " という文字列 (NOTE 終わりの空白に注 [text] 任意のテキスト、なくても良い 例: - /* Vim: set ai tw=75: */ ~ + /* vim: set ai tw=75: */ ~ + /* Vim: set ai tw=75: */ ~ {vi:|vim:|Vim:|ex:} の前には空白が必要である。これが "lex:" 等の普通の言葉を誤 認する可能性を低めている。ただし例外があり、 "vi:" と "vim:"は行頭に来てもよい From e7135e6f24a308cd122d16dba5a587309d23cb0c Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 25 Nov 2013 20:01:22 +0900 Subject: [PATCH 470/783] Update some parts of syntax.txt --- doc/syntax.jax | 85 ++++++++++++++++++++++++++++++-------------------- en/syntax.txt | 81 ++++++++++++++++++++++++++++------------------- 2 files changed, 100 insertions(+), 66 deletions(-) diff --git a/doc/syntax.jax b/doc/syntax.jax index 21b80e70d..e624d2228 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -1,4 +1,4 @@ -*syntax.txt* For Vim バージョン 7.4. Last change: 2013 May 31 +*syntax.txt* For Vim バージョン 7.4. Last change: 2013 Aug 22 VIMリファレンスマニュアル by Bram Moolenaar @@ -2759,10 +2759,25 @@ tcsh_minlines に "fromstart" をセットすると、ファイルの先頭か 再描画が遅くなることである。 -TEX *tex.vim* *ft-tex-syntax* +TEX *tex.vim* *ft-tex-syntax* *latex-syntax* - *tex-folding* - Tex: 構文折り畳み? ~ + Tex 目次~ + Tex: 構文折り畳みをするには |tex-folding| + Tex: スペルチェックを行いたくない場合 |g:tex_nospell| + Tex: コメントの中ではスペルチェックを行いたくない場合 |tex-nospell| + Tex: Verbatim ゾーンをスペルチェックするには |tex-verb| + Tex: コメントや MathZone の区切り |tex-runon| + Tex: 構文ハイライトが遅いならば |tex-slow| + Tex: もっとコマンドをハイライトさせるには |tex-morecommands| + Tex: エラーのハイライトが行き過ぎならば |tex-error| + Tex: 新しいMathグループが必要ならば |tex-math| + Tex: 新しいスタイルを始めるには |tex-style| + Tex: Conceal モードを活用する |tex-conceal| + Tex: Conceal モードの選択 |g:tex_conceal| + Tex: iskeyword を制御する |g:tex_isk| + + *tex-folding* *g:tex_fold_enabled* + Tex: 構文折り畳みをするには ~ <syntax/tex.vim>のバージョン28以降では、構文による部分、章、節、小節などの折り 畳みに対応している。それを有効にするには次の行を<.vimrc>に書き、 > @@ -2771,25 +2786,28 @@ TEX *tex.vim* *ft-tex-syntax* といいかもしれない: > % vim: fdm=syntax これによってシステムが遅くなり過ぎる場合は次のリンクを参照すること > - http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text + https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7 < - *tex-nospell* - Tex: コメントの中ではスペルチェックを行わせたくない場合 ~ + *g:tex_nospell* + Tex: スペルチェックを行いたくない場合~ + +LaTeX 文章でどこにもスペルチェックを行わせたくない場合は、 > + let g:tex_nospell=1 +を .vimrc に書けばよい。ただ単にコメント内だけでスペルチェックを抑制したい場合 +は、|g:tex_comment_nospell| を参照せよ。 + + *tex-nospell* *g:tex_comment_nospell* + Tex: コメントの中ではスペルチェックを行いたくない場合 ~ LaTeX ファイルのコメントの中にソースコードのようなものを含めることがあるので、 コメントの中ではスペルチェックを無効にしたいという人もいる。そのようにするには 次の行を .vimrc に加える: > let g:tex_comment_nospell= 1 -次のコメント行は > - % nospell{ - ... - % nospell} -囲まれた範囲のスペルチェックを抑制する。これらのコメント行のスペルチェック制御 -は壊れやすいことがわかっている。例えば、セクションコマンド (\part, \chapter, -\section, \paragraph, etc) や環境 (math など) が nospell ブロック内にあっては -いけない。 - *tex-verb* - Tex: Verbatim ゾーンをスペルチェックするには?~ +LaTeX 文章中のどこででもスペルチェックを抑制したい場合は、|g:tex_nospell| を参 +照せよ。 + + *tex-verb* *g:tex_verbspell* + Tex: Verbatim ゾーンをスペルチェックするには~ たいてい verbatim リージョンはソースコードのようなものを書くのに使われる。 ソースコードをスペルチェックしたいと思うことはほとんどないだろう。とはいえ、も @@ -2797,7 +2815,7 @@ LaTeX ファイルのコメントの中にソースコードのようなもの すること: > let g:tex_verbspell= 1 < - *tex-runon* + *tex-runon* *tex-stopzone* Tex: コメントや MathZone の区切り ~ <syntax/tex.vim>の構文ハイライトはTeX, LaTeX, AmsTeXをサポートしている。normal, @@ -2809,7 +2827,7 @@ texZone, texMathZoneの3つの主な区間・範囲がサポートされてい このコメントがあると、ここで強制的にtexZoneまたはtexMathZoneのハイライトを終わ らせる。 - *tex-slow* + *tex-slow* *tex-sync* Tex: 構文ハイライトが遅いならば ~ 遅いコンピュータを使っているなら、これらの値を減らすとよいかもしれない > @@ -2822,7 +2840,7 @@ texZone, texMathZoneの3つの主な区間・範囲がサポートされてい 構文による折り畳みによって遅くなる場合もある。回避方法については |tex-folding| を参照のこと。 - *g:tex_fast* + *g:tex_fast* 最後に、もし構文強調表示がまだ遅い場合は、.vimrc で次のように設定するとよい > @@ -2849,7 +2867,7 @@ g:tex_fast 変数を設定すると、構文強調表示でリージョンや同 例えば、let g:tex_fast= "M" は 数学関連の強調表示を有効化する。他のリージョン ベースの構文強調表示は有効化されない。 - *tex-morecommands* *tex-package* + *tex-morecommands* *tex-package* Tex: もっとコマンドをハイライトさせるには ~ LaTeXはプログラミング言語であり、特殊化されたLaTeXのコマンド、構文、フォントが @@ -2860,13 +2878,13 @@ syntax/tex.vimにそのパッケージを対応させてほしいと思うだろ (典型的には $HOME/after/syntax/tex/[pkgname].vim に置いて使う) を書いたら、そ れを http://vim.sf.net/ にアップロードすることを検討してみてください。 - *tex-error* + *tex-error* *g:tex_no_error* Tex: エラーのハイライトが行き過ぎならば ~ <tex.vim>は様々な種類のレキシカルエラーチェックをサポートしている。すなわち、 エラーチェックはとても便利だが、実際にはエラーでない箇所もエラーと示すかもしれ ない。それが嫌なら、次の行を<.vimrc>に置くとよい: > - let tex_no_error=1 + let g:tex_no_error=1 すると<syntax/tex.vim>によるすべてのエラーチェックが行われなくなる。 *tex-math* @@ -2888,7 +2906,7 @@ syntax/tex.vimにそのパッケージを対応させてほしいと思うだろ LOCALMATHをあなたが決めた新しいmathグループに書き換える必要がある。そしてこれ を.vim/after/syntax/tex.vimに加えること。 - *tex-style* + *tex-style* *b:tex_stylish* Tex: 新しいスタイルを始めるには ~ *.texファイルで "\makeatletter" を使う人がいるかもしれないので、コマンド中で @@ -2916,11 +2934,11 @@ ltx を持たないので @ をエラーと判断してハイライトする。 |'conceallevel'| を 0 に設定してもう一方は 2 に設定し、両方で |'scrollbind'| を設定するような使い方がある。 - *g:tex_conceal* + *g:tex_conceal* Tex: Conceal モードの選択 ~ g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示を変更できる。 -初期設定は "admgs" で、これは次の文字セットが Conceal 表示される: > +初期設定では、g:tex_conceal には "admgs" が設定されており、これは次の文字セットが Conceal 表示される: > a = アクセント/合字 (accents/ligatures) b = 太字と斜体 (bold and italic) @@ -2932,8 +2950,8 @@ g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示 これらの文字を設定から外すことで、それに関連した文字が Conceal 表示されなくな る。 - *g:tex_isk* - Tex: 何がキーワードかを制御する~ + *g:tex_isk* *g:tex_stylish* + Tex: iskeyword を制御する ~ (La)Tex キーワードは普通は 0-9,a-z,A-Z,192-255 の文字だけを使い、"_" だけが問 題となる。したがって、初期設定では、syntax/tex.vim は通常の |'iskeyword'| の設 @@ -2951,8 +2969,7 @@ tfの構文ハイライトには1つのオプションがある。 には、"tf_minlines" に望みの値をセットする。例: > :let tf_minlines = your choice - - +< VIM *vim.vim* *ft-vim-syntax* *g:vimsyn_minlines* *g:vimsyn_maxlines* 正確な構文ハイライトと画面更新速度はトレードオフの問題である。正確さを向上させ @@ -3803,7 +3820,7 @@ skipパターンも "\n" を含んでよい。ただし次の行の最初の文 リージョンのパターンでは特別に以下の正規表現が使える: - */\z(* */\z(\)* *E50* *E52* + */\z(* */\z(\)* *E50* *E52* *E879* \z(\) 一部を「external」としてマークする。これをつけると他のパターン からアクセスできるようになる。現在はリージョンのstartパターン 内でのみ使用可能。 @@ -4140,7 +4157,7 @@ Note: "*/" を含む文字列で行をまたぐものがあると、Cコメン は "unknown" と表示される。 :colo[rscheme] {name} カラースキーム{name}を読み込む。これは 'runtimepath' - 中から "colors/{name}.vim" というファイルを検索する。 + の中から "colors/{name}.vim" というファイルを検索する。 最初に見つかったものが読み込まれる。 現在使われているカラースキームの名前を見るには次のよう にする: > @@ -4733,8 +4750,8 @@ types.vim: *.[ch] る。構文ファイルによって設定された値が "w:current_syntax" に代入される。 ウィンドウの独自構文が定義されると、同じバッファの他のウィンドウで実行された構 -文コマンドが影響しなくなる。逆に、そのウィンドウで実行された構文コマンドも他の -ウィンドウには影響しなくなる。 +文コマンド (:syntax clear を含む) が影響しなくなる。逆に、そのウィンドウで実行 +された構文コマンドも他のウィンドウには影響しなくなる。 独自構文を持ったウィンドウは他のバッファを読み込むかファイルを再読み込みするこ とで通常の動作に戻る。 diff --git a/en/syntax.txt b/en/syntax.txt index a2dc5c00f..db0e075ab 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.4. Last change: 2013 May 31 +*syntax.txt* For Vim version 7.4. Last change: 2013 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2874,9 +2874,24 @@ tcsh_minlines is 100. The disadvantage of using a larger number is that redrawing can become slow. -TEX *tex.vim* *ft-tex-syntax* - - *tex-folding* +TEX *tex.vim* *ft-tex-syntax* *latex-syntax* + + Tex Contents~ + Tex: Want Syntax Folding? |tex-folding| + Tex: No Spell Checking Wanted |g:tex_nospell| + Tex: Don't Want Spell Checking In Comments? |tex-nospell| + Tex: Want Spell Checking in Verbatim Zones? |tex-verb| + Tex: Run-on Comments or MathZones |tex-runon| + Tex: Slow Syntax Highlighting? |tex-slow| + Tex: Want To Highlight More Commands? |tex-morecommands| + Tex: Excessive Error Highlighting? |tex-error| + Tex: Need a new Math Group? |tex-math| + Tex: Starting a New Style? |tex-style| + Tex: Taking Advantage of Conceal Mode |tex-conceal| + Tex: Selective Conceal Mode |g:tex_conceal| + Tex: Controlling iskeyword |g:tex_isk| + + *tex-folding* *g:tex_fold_enabled* Tex: Want Syntax Folding? ~ As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters, @@ -2886,24 +2901,27 @@ in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a modeline at the end of your LaTeX file: > % vim: fdm=syntax If your system becomes too slow, then you might wish to look into > - http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text + https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7 < - *tex-nospell* + *g:tex_nospell* + Tex: No Spell Checking Wanted~ + +If you don't want spell checking anywhere in your LaTeX document, put > + let g:tex_nospell=1 +into your .vimrc. If you merely wish to suppress spell checking inside +comments only, see |g:tex_comment_nospell|. + + *tex-nospell* *g:tex_comment_nospell* Tex: Don't Want Spell Checking In Comments? ~ Some folks like to include things like source code in comments and so would prefer that spell checking be disabled in comments in LaTeX files. To do this, put the following in your <.vimrc>: > let g:tex_comment_nospell= 1 -The comment lines > - % nospell{ - ... - % nospell} -will suppress spell checking between them. These comment lines spelling -control are known to be fragile; for example, don't include any of the section -commands (\part, \chapter, \section, \paragraph, etc) inside nospell blocks -or interleave environments (such as math) across nospell blocks. - *tex-verb* +If you want to suppress spell checking everywhere inside your LaTeX document, +see |g:tex_nospell|. + + *tex-verb* *g:tex_verbspell* Tex: Want Spell Checking in Verbatim Zones?~ Often verbatim regions are used for things like source code; seldom does @@ -2911,7 +2929,7 @@ one want source code spell-checked. However, for those of you who do want your verbatim zones spell-checked, put the following in your <.vimrc>: > let g:tex_verbspell= 1 < - *tex-runon* + *tex-runon* *tex-stopzone* Tex: Run-on Comments or MathZones ~ The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The @@ -2924,7 +2942,7 @@ special "TeX comment" has been provided > which will forcibly terminate the highlighting of either a texZone or a texMathZone. - *tex-slow* + *tex-slow* *tex-sync* Tex: Slow Syntax Highlighting? ~ If you have a slow computer, you may wish to reduce the values for > @@ -2937,7 +2955,7 @@ if any, is the text at the top of the screen supposed to be in?). Another cause of slow highlighting is due to syntax-driven folding; see |tex-folding| for a way around this. - *g:tex_fast* + *g:tex_fast* Finally, if syntax highlighting is still too slow, you may set > @@ -2966,7 +2984,7 @@ selectively to enable just some syntax highlighting: > As an example, let g:tex_fast= "M" will allow math-associated highlighting but suppress all the other region-based syntax highlighting. - *tex-morecommands* *tex-package* + *tex-morecommands* *tex-package* Tex: Want To Highlight More Commands? ~ LaTeX is a programmable language, and so there are thousands of packages full @@ -2978,14 +2996,14 @@ by syntax/tex.vim. Please consider uploading any extensions that you write, which typically would go in $HOME/after/syntax/tex/[pkgname].vim, to http://vim.sf.net/. - *tex-error* + *tex-error* *g:tex_no_error* Tex: Excessive Error Highlighting? ~ The <tex.vim> supports lexical error checking of various sorts. Thus, although the error checking is ofttimes very useful, it can indicate errors where none actually are. If this proves to be a problem for you, you may put in your <.vimrc> the following statement: > - let tex_no_error=1 + let g:tex_no_error=1 and all error checking by <syntax/tex.vim> will be suppressed. *tex-math* @@ -3003,7 +3021,7 @@ and then to the call to it in .vim/after/syntax/tex.vim. The "starform" variable, if true, implies that your new math group has a starred form (ie. eqnarray*). - *tex-style* + *tex-style* *b:tex_stylish* Tex: Starting a New Style? ~ One may use "\makeatletter" in *.tex files, thereby making the use of "@" in @@ -3030,12 +3048,12 @@ In fact, only a few characters are supported as subscripts. One way to use this is to have vertically split windows (see |CTRL-W_v|); one with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|. - *g:tex_conceal* + *g:tex_conceal* Tex: Selective Conceal Mode~ You may selectively use conceal mode by setting g:tex_conceal in your -<.vimrc>. By default it is set to "admgs" to enable conceal for the -following sets of characters: > +<.vimrc>. By default, g:tex_conceal is set to "admgs" to enable concealment +for the following sets of characters: > a = accents/ligatures b = bold and italic @@ -3047,8 +3065,8 @@ following sets of characters: > By leaving one or more of these out, the associated conceal-character substitution will not be made. - *g:tex_isk* - Tex: Controlling What's In A Keyword~ + *g:tex_isk* *g:tex_stylish* + Tex: Controlling iskeyword~ (La)Tex keywords normally use the characters 0-9,a-z,A-Z,192-255 only but the "_" is the only one that causes problems. So, by default, @@ -3068,8 +3086,7 @@ For syncing, minlines defaults to 100. If you prefer another value, you can set "tf_minlines" to the value you desire. Example: > :let tf_minlines = your choice - - +< VIM *vim.vim* *ft-vim-syntax* *g:vimsyn_minlines* *g:vimsyn_maxlines* There is a trade-off between more accurate syntax highlighting versus screen @@ -3957,7 +3974,7 @@ External matches *:syn-ext-match* These extra regular expression items are available in region patterns: - */\z(* */\z(\)* *E50* *E52* + */\z(* */\z(\)* *E50* *E52* *E879* \z(\) Marks the sub-expression as "external", meaning that it can be accessed from another pattern match. Currently only usable in defining a syntax region start pattern. @@ -4316,7 +4333,7 @@ in their own color. feature it will output "unknown". :colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' - for the file "colors/{name}.vim. The first one that + for the file "colors/{name}.vim". The first one that is found is loaded. To see the name of the currently active color scheme: > :colo @@ -4936,7 +4953,7 @@ restoring "b:current_syntax", since the syntax files do set "w:current_syntax". Once a window has its own syntax, syntax commands executed from other windows -on the same buffer (including :syntax clear) have no effect. Conversely, +on the same buffer (including :syntax clear) have no effect. Conversely, syntax commands executed from that window do not affect other windows on the same buffer. From 9e82e5efd9ef995dc7afa294fe2458679940c3cd Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 25 Nov 2013 23:29:17 +0900 Subject: [PATCH 471/783] Improve translation --- doc/syntax.jax | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/syntax.jax b/doc/syntax.jax index e624d2228..a3dc07f8c 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -2938,7 +2938,8 @@ ltx を持たないので @ をエラーと判断してハイライトする。 Tex: Conceal モードの選択 ~ g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示を変更できる。 -初期設定では、g:tex_conceal には "admgs" が設定されており、これは次の文字セットが Conceal 表示される: > +初期設定では、g:tex_conceal には "admgs" が設定されており、これによって次の文 +字セットが Conceal 表示される: > a = アクセント/合字 (accents/ligatures) b = 太字と斜体 (bold and italic) From 6005aae62922b48fcf133bc6fb393ae2c80b1651 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 26 Nov 2013 21:57:36 +0900 Subject: [PATCH 472/783] fix typo --- doc/insert.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/insert.jax b/doc/insert.jax index 8a261d0cc..e1d2f8cdc 100644 --- a/doc/insert.jax +++ b/doc/insert.jax @@ -694,8 +694,8 @@ CTRL-X CTRL-P カーソルの前にあるキーワードで始まる単語を を押すたびに違うマッチ文字列が挿入されることになる(1つしかマッチするキーワード がない場合は除く)。 -マッチ結果が1文字のとなる補完候補文字列は、通常の使用で実際に補完して欲しいで -はないことがほとんどなので、補完候補に含まない。 +マッチ結果が1文字となる補完候補文字列は、通常の使用で実際に補完して欲しいもの +ではないことがほとんどなので、補完候補に含まない。 例えば、次の結果を得るには: printf("name = %s\n", name); このようにタイプする: From 002ac35d0fe773aebae80a2425233afd878b5988 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 26 Nov 2013 21:57:54 +0900 Subject: [PATCH 473/783] insert a space between words MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Concealにより、単語がくっついて表示されていたのを修正。 --- doc/insert.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/insert.jax b/doc/insert.jax index e1d2f8cdc..cce4908de 100644 --- a/doc/insert.jax +++ b/doc/insert.jax @@ -1650,8 +1650,8 @@ A 行末にテキストを[count]回追加する。 <insert> or *i* *insert* *<Insert>* i カーソルの前にテキストを[count]回挿入する。 - 挿入モード中のCTRL-O|i_CTRL-O|で使うときはカウントはサ - ポートされていない。 + 挿入モード中のCTRL-O |i_CTRL-O| で使うときはカウントは + サポートされていない。 *I* I 行の先頭の非空白文字の前にテキストを[count]回挿入す From 783ef3dd3d68070ddc2cafb972bbd3f032179407 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 29 Nov 2013 18:03:58 +0900 Subject: [PATCH 474/783] Update sign.txt --- doc/sign.jax | 4 ++-- en/sign.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/sign.jax b/doc/sign.jax index d6fe407c2..444d8f780 100644 --- a/doc/sign.jax +++ b/doc/sign.jax @@ -1,4 +1,4 @@ -*sign.txt* For Vim バージョン 7.4. Last change: 2012 Jul 10 +*sign.txt* For Vim バージョン 7.4. Last change: 2013 Nov 17 VIMリファレンスマニュアル by Gordon Prieur @@ -172,7 +172,7 @@ SignColumnの色を使う|hl-SignColumn|。色を設定するには次のよう カーソル位置に設置されている目印を解除する。 -(設置した)目印を一覧表示する +(設置した)目印を一覧表示する *:sign-place-list* :sign place file={fname} ファイル{fname}に設置されている目印を一覧表示する。 diff --git a/en/sign.txt b/en/sign.txt index 076bff033..79c101109 100644 --- a/en/sign.txt +++ b/en/sign.txt @@ -1,4 +1,4 @@ -*sign.txt* For Vim version 7.4. Last change: 2012 Jul 10 +*sign.txt* For Vim version 7.4. Last change: 2013 Nov 17 VIM REFERENCE MANUAL by Gordon Prieur @@ -173,7 +173,7 @@ REMOVING SIGNS *:sign-unplace* *E159* Remove the placed sign at the cursor position. -LISTING PLACED SIGNS +LISTING PLACED SIGNS *:sign-place-list* :sign place file={fname} List signs placed in file {fname}. From 2de01a5283a36d87d99a050439d73499fea8ff3d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 29 Nov 2013 22:52:08 +0900 Subject: [PATCH 475/783] Translate spell.jax --- doc/spell.jax | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index dd45f1cdb..35e0c4463 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -155,7 +155,7 @@ zuG |zW| や |zG| をundoして、内部単語リストからその単語を z= カーソルの下や後の単語に対して正しい綴りの単語を提案す る。これはまた間違った単語としてハイライトされていない 単語に対しての代わりを調べることもできる。例えば、その - 後の単語が間違っている場合など。 + 後の単語が間違っている場合など。 ビジュアルモードでハイライトされたテキストは置換される 単語として見なされる。 結果は、置換されようとしている単語との類似度でソートさ @@ -219,12 +219,12 @@ works in a new or short file |spell-COMMON|. Vim はオンザフライのスペルチェックをする。スペルチェックを速くするために単語リ ストはメモリにロードされる。だがこのために多くのメモリ(1 Mbyte以上)が使われる。 -There might also be a noticeable delay when the word list is loaded, which -happens when 'spell' is set and when 'spelllang' is set while 'spell' was -already set. To minimize the delay each word list is only loaded once, it is -not deleted when 'spelllang' is made empty or 'spell' is reset. When -'encoding' is set all the word lists are reloaded, thus you may notice a delay -then too. +さらに、単語リストがロードされている時に著しい遅延が生じるかもしれない。これは +'spell' が既に設定されていたのに、'spell' を設定する時や 'spelllang' を設定す +る時に発生する。遅延を最小限にするには各単語リストが1回だけ読み込まれるように +する。そうすれば、'spelllang' が空になる時か 'spell' がリセットされる時に単語 +リストは削除されない。'encoding' を設定して全ての単語リストが再読み込みされる +時に、上のようにまた遅延に気づくかもしれない。 地域 @@ -291,7 +291,7 @@ Vim は 'runtimepath' のディレクトリの中の "spell" という名前の EEE 'encoding' の値 The value for "LL" comes from 'spelllang', but excludes the region name. -Examples: +例: 'spelllang' LL ~ en_us en en-rare en-rare @@ -308,7 +308,7 @@ downloading the spell file. Additionally, the files related to the names in 'spellfile' are loaded. These are the files that |zg| and |zw| add good and wrong words to. -Exceptions: +例外: - Vim uses "latin1" when 'encoding' is "iso-8859-15". The euro sign doesn't matter for spelling. - When no spell file for 'encoding' is found "ascii" is tried. This only @@ -357,7 +357,7 @@ If there is a file with exactly the same name as the ".spl" file but ending in before suggestions are made to reduce memory use. *E758* *E759* *E778* *E779* *E780* *E782* -スペルファイルを読み込む時 Vim はそれが正しくフォーマットされているかチェック +スペルファイルを読み込む時、Vim はそれが正しくフォーマットされているかチェック する。If you get an error the file may be truncated, modified or intended for another Vim version. @@ -434,12 +434,12 @@ Also see |:syn-spell| for text that is not in a syntax item. VIM スクリプト -If you want to write a Vim script that does something with spelling, you may -find these functions useful: +スペルに関するVim スクリプトを書きたいと思うと、これらの関数が役に立つことが分 +かるだろう: - spellbadword() find badly spelled word at the cursor - spellsuggest() get list of spelling suggestions - soundfold() get the sound-a-like version of a word + spellbadword() カーソル下の間違ったつづりの単語を見つける + spellsuggest() 正しいつづりの候補を得る + soundfold() ある単語に似ているものを得る 'spellcapcheck' の自動設定 *set-spc-auto* @@ -480,8 +480,8 @@ preferred method for scoring the suggestions. ============================================================================== 3. スペルファイルの生成 *spell-mkspell* -Vim uses a binary file format for spelling. This greatly speeds up loading -the word list and keeps it small. +Vimはつづりのためのバイナリフォーマットを使用する。このことにより単語リストの +読み込みを大幅に速くし、単語リストを小さく保つ。 *.aff* *.dic* *Myspell* You can create a Vim spell file from the .aff and .dic files that Myspell uses. Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt @@ -506,7 +506,7 @@ then Vim will try to guess. *:mksp* *:mkspell* :mksp[ell][!] [-ascii] {outname} {inname} ... - Generate a Vim spell file from word lists. Example: > + 単語リストからVimスペルファイルを生成する。例: > :mkspell /tmp/nl nl_NL.words < *E751* When {outname} ends in ".spl" it is used as the output From ffa64045e4435ff07fd1aafe84344531d3c278e5 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 1 Dec 2013 03:00:58 +0900 Subject: [PATCH 476/783] Translate spell.jax --- doc/spell.jax | 20 +++---- en/autocmd.txt | 12 +++- en/change.txt | 27 +++++++-- en/cmdline.txt | 3 +- en/diff.txt | 18 +++--- en/editing.txt | 3 +- en/eval.txt | 55 +++++++++++++++++- en/gui.txt | 3 + en/if_lua.txt | 90 +++++++++++++++++++++++----- en/if_pyth.txt | 126 ++++++++++++++++++++++++++++++++++++--- en/indent.txt | 62 +++++++++++++++++--- en/index.txt | 5 +- en/insert.txt | 54 +++++++++++------ en/map.txt | 37 ++++++++++-- en/motion.txt | 7 ++- en/options.txt | 64 ++++++++++++++++++-- en/quickfix.txt | 4 +- en/quickref.txt | 44 +++++++------- en/starting.txt | 40 ++++++++----- en/syntax.txt | 152 ++++++++++++++++++++++++++++++++---------------- en/visual.txt | 8 ++- 21 files changed, 658 insertions(+), 176 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index 35e0c4463..66eacc4f1 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -200,11 +200,11 @@ z= カーソルの下や後の単語に対して正しい綴りの単語を提 オプション 'spellsuggest' は候補のリストがどのように生成、ソートされるかに影響 する。|'spellsuggest'| を参照せよ。 -オプション 'spellcapcheck' は文の最初の単語が大文字で始まるかをチェックするのに -用いる。これはファイルの最初の単語には働かない。When there is a line break -right after a sentence the highlighting of the next line may be postponed. -Use |CTRL-L| when needed. Also see |set-spc-auto| for how it can be set -automatically when 'spelllang' is set. +オプション 'spellcapcheck' は文の最初の単語が大文字で始まるかをチェックするの +に用いる。これはファイルの最初の単語には働かない。文の直後に改行があるとき、次 +の行のハイライティングが後回しにされるかもしれない。必要であれば |CTRL-L| を使 +用せよ。 Also see |set-spc-auto| for how it can be set automatically when +'spelllang' is set. Vim counts the number of times a good word is encountered. This is used to sort the suggestions: words that have been seen before get a small bonus, @@ -261,7 +261,7 @@ counting files specified by their .spl name). *spell-russian* 特有の例外: ロシア語ではこれらの特別な地域が使われる: - ru all Russian words accepted + ru 全てのロシア語単語を許容する ru_ru "IE" letter spelling ru_yo "YO" letter spelling @@ -290,7 +290,7 @@ Vim は 'runtimepath' のディレクトリの中の "spell" という名前の LL 言語名 EEE 'encoding' の値 -The value for "LL" comes from 'spelllang', but excludes the region name. +"LL" の値は 'spelllang' から来るが、地域名を除く。 例: 'spelllang' LL ~ en_us en @@ -344,9 +344,9 @@ out the non-ASCII characters). Spelling for EBCDIC is currently not supported. -A spell file might not be available in the current 'encoding'. See -|spell-mkspell| about how to create a spell file. Converting a spell file -with "iconv" will NOT work! +現在の 'encoding' でスペルファイルが利用できないかもしれない。スペルファイルの +作成の仕方については |spell-mkspell| を参照せよ。"iconv" でスペルファイルを変 +換するのは機能しないだろう! Note: on VMS ".{enc}.spl" is changed to "_{enc}.spl" to avoid trouble with filenames. diff --git a/en/autocmd.txt b/en/autocmd.txt index 524a47957..0a9505315 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -480,6 +480,12 @@ CmdwinLeave Before leaving the command-line window. |cmdwin-char| *ColorScheme* ColorScheme After loading a color scheme. |:colorscheme| + The pattern is matched against the + colorscheme name. <afile> can be used for the + name of the actual file where this option was + set, and <amatch> for the new colorscheme + name. + *CompleteDone* CompleteDone After Insert mode completion is done. Either @@ -952,7 +958,8 @@ the autocommand is executed. This is different from the command! *file-pattern* The pattern is interpreted like mostly used in file names: - * matches any sequence of characters + * matches any sequence of characters; Unusual: includes path + separators ? matches any single character \? matches a '?' . matches a '.' @@ -961,6 +968,9 @@ The pattern is interpreted like mostly used in file names: \, matches a ',' { } like \( \) in a |pattern| , inside { }: like \| in a |pattern| + \} literal } + \{ literal { + \\\{n,m\} like \{n,m} in a |pattern| \ special meaning like in a |pattern| [ch] matches 'c' or 'h' [^ch] match any character but 'c' and 'h' diff --git a/en/change.txt b/en/change.txt index aaf573285..5fe89eb4e 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.4. Last change: 2013 Mar 19 +*change.txt* For Vim version 7.4. Last change: 2013 Nov 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -71,9 +71,21 @@ For inserting text see |insert.txt|. "D" deletes the highlighted text plus all text until the end of the line. {not in Vi} - *:d* *:de* *:del* *:delete* *:dl* + *:d* *:de* *:del* *:delete* *:dl* *:dp* :[range]d[elete] [x] Delete [range] lines (default: current line) [into register x]. + Note these weird abbreviations: + :dl delete and list + :dell idem + :delel idem + :deletl idem + :deletel idem + :dp delete and print + :dep idem + :delp idem + :delep idem + :deletp idem + :deletep idem :[range]d[elete] [x] {count} Delete {count} lines, starting with [range] @@ -463,8 +475,8 @@ If the 'shiftround' option is on, the indent is rounded to a multiple of 'shiftwidth'. If the 'smartindent' option is on, or 'cindent' is on and 'cinkeys' contains -'#', shift right does not affect lines starting with '#' (these are supposed -to be C preprocessor lines that must stay in column 1). +'#' with a zero value, shift right does not affect lines starting with '#' +(these are supposed to be C preprocessor lines that must stay in column 1). When the 'expandtab' option is off (this is the default) Vim uses <Tab>s as much as possible to make the indent. You can use ">><<" to replace an indent @@ -1057,6 +1069,11 @@ another register. E.g., yank the text to copy, Visually select the text to replace and use "0p . You can repeat this as many times as you like, the unnamed register will be changed each time. +When you use a blockwise Visual mode command and yank only a single line into +a register, a paste on a visual selected area will paste that single line on +each of the selected lines (thus replacing the blockwise selected region by a +block of the pasted line). + *blockwise-register* If you use a blockwise Visual mode command to get the text into the register, the block of text will be inserted before ("P") or after ("p") the cursor @@ -1114,6 +1131,8 @@ less than one line (the small delete register is used then). An exception is made for the delete operator with these movement commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|. Register "1 is always used then (this is Vi compatible). The "- register is used as well if the delete is within a line. +Note that these characters may be mapped. E.g. |%| is mapped by the matchit +plugin. With each successive deletion or change, Vim shifts the previous contents of register 1 into register 2, 2 into 3, and so forth, losing the previous contents of register 9. diff --git a/en/cmdline.txt b/en/cmdline.txt index c309a0f7a..9d7c5f56f 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.4. Last change: 2013 Mar 16 +*cmdline.txt* For Vim version 7.4. Last change: 2013 Nov 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -758,6 +758,7 @@ characters have a special meaning. These can also be used in the expression function expand() |expand()|. % Is replaced with the current file name. *:_%* *c_%* # Is replaced with the alternate file name. *:_#* *c_#* + This is remembered for every window. #n (where n is a number) is replaced with *:_#0* *:_#n* the file name of buffer n. "#0" is the same as "#". *c_#n* ## Is replaced with all names in the argument list *:_##* *c_##* diff --git a/en/diff.txt b/en/diff.txt index a23fe5ab1..96dff3509 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.4. Last change: 2012 Sep 05 +*diff.txt* For Vim version 7.4. Last change: 2013 Sep 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -123,14 +123,18 @@ Since the option values are remembered with the buffer, you can edit another file for a moment and come back to the same file and be in diff mode again. *:diffo* *:diffoff* -:diffo[ff] Switch off diff mode for the current window. +:diffo[ff] Switch off diff mode for the current window. Resets related + options also when 'diff' was not set. :diffo[ff]! Switch off diff mode for the current window and in all windows - in the current tab page where 'diff' is set. - -The ":diffoff" command resets the relevant options to their default value. -This may be different from what the values were before diff mode was started, -the old values are not remembered. + in the current tab page where 'diff' is set. Resetting + related options only happens in a window that has 'diff' set, + if the current window does not have 'diff' set then no options + in it are changed. + +The ":diffoff" command resets the relevant options to the values they had when +using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode. +Otherwise they are set to their default value: 'diff' off 'scrollbind' off diff --git a/en/editing.txt b/en/editing.txt index 6cafa7fde..cc3dcfac6 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.4. Last change: 2013 Aug 03 +*editing.txt* For Vim version 7.4. Last change: 2013 Nov 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -38,6 +38,7 @@ If there already was a current file name, then that one becomes the alternate file name. It can be used with "#" on the command line |:_#| and you can use the |CTRL-^| command to toggle between the current and the alternate file. However, the alternate file name is not changed when |:keepalt| is used. +An alternate file name is remembered for each window. *:keepalt* *:keepa* :keepalt {cmd} Execute {cmd} while keeping the current alternate file diff --git a/en/eval.txt b/en/eval.txt index 9e5325edd..08edd1061 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -123,6 +123,7 @@ around the arguments, to invoke the function it refers to. Example: > :echo Fn() < *E704* *E705* *E707* A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:". You +can use "g:" but the following name must still start with a capital. You cannot have both a Funcref variable and a function with the same name. A special case is defining a function and directly assigning its Funcref to a @@ -1454,6 +1455,13 @@ v:foldend Used for 'foldtext': last line of closed fold. v:foldstart Used for 'foldtext': first line of closed fold. Read-only in the |sandbox|. |fold-foldtext| + *v:hlsearch* *hlsearch-variable* +v:hlsearch Variable that determines whether search highlighting is on. + Makes sense only if 'hlsearch' is enabled which requires + |+extra_search|. Setting this variable to zero acts the like + |:nohlsearch| command, setting it to one acts like > + let &hlsearch = &hlsearch +< *v:insertmode* *insertmode-variable* v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand events. Values: @@ -1712,6 +1720,7 @@ bufnr( {expr}) Number Number of the buffer {expr} bufwinnr( {expr}) Number window number of buffer {expr} byte2line( {byte}) Number line number at byte count {byte} byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr} +byteidxcomp( {expr}, {nr}) Number byte index of {nr}'th char in {expr} call( {func}, {arglist} [, {dict}]) any call {func} with arguments {arglist} ceil( {expr}) Float round {expr} up @@ -1906,6 +1915,8 @@ repeat( {expr}, {count}) String repeat {expr} {count} times resolve( {filename}) String get filename a shortcut points to reverse( {list}) List reverse {list} in-place round( {expr}) Float round off {expr} +screenattr( {row}, {col}) Number attribute at screen position +screenchar( {row}, {col}) Number character at screen position screencol() Number current cursor column screenrow() Number current cursor row search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) @@ -2258,7 +2269,10 @@ byteidx({expr}, {nr}) *byteidx()* {expr}. Use zero for the first character, it returns zero. This function is only useful when there are multibyte characters, otherwise the returned value is equal to {nr}. - Composing characters are counted as a separate character. + Composing characters are not counted separately, their byte + length is added to the preceding base character. See + |byteidxcomp()| below for counting composing characters + separately. Example : > echo matchstr(str, ".", byteidx(str, 3)) < will display the fourth character. Another way to do the @@ -2267,7 +2281,20 @@ byteidx({expr}, {nr}) *byteidx()* echo strpart(s, 0, byteidx(s, 1)) < If there are less than {nr} characters -1 is returned. If there are exactly {nr} characters the length of the string - is returned. + in bytes is returned. + +byteidxcomp({expr}, {nr}) *byteidxcomp()* + Like byteidx(), except that a composing character is counted + as a separate character. Example: > + let s = 'e' . nr2char(0x301) + echo byteidx(s, 1) + echo byteidxcomp(s, 1) + echo byteidxcomp(s, 2) +< The first and third echo result in 3 ('e' plus composing + character is 3 bytes), the second echo results in 1 ('e' is + one byte). + Only works different from byteidx() when 'encoding' is set to + a Unicode encoding. call({func}, {arglist} [, {dict}]) *call()* *E699* Call function {func} with the items in |List| {arglist} as @@ -2773,7 +2800,8 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* file name contains a space] If the expansion fails, the result is an empty string. A name - for a non-existing file is not included. + for a non-existing file is not included, unless {expr} does + not start with '%', '#' or '<', see below. When {expr} starts with '%', '#' or '<', the expansion is done like for the |cmdline-special| variables with their associated @@ -4207,6 +4235,9 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) "match"). It will be highlighted with {group}. Returns an identification number (ID), which can be used to delete the match using |matchdelete()|. + Matching is case sensitive and magic, unless case sensitivity + or magicness are explicitly overridden in {pattern}. The + 'magic', 'smartcase' and 'ignorecase' options are not used. The optional {priority} argument assigns a priority to the match. A match with a high priority will have its @@ -4890,6 +4921,21 @@ round({expr}) *round()* < -5.0 {only available when compiled with the |+float| feature} +screenattr(row, col) *screenattr()* + Like screenchar(), but return the attribute. This is a rather + arbitrary number that can only be used to compare to the + attribute at other positions. + +screenchar(row, col) *screenchar()* + The result is a Number, which is the character at position + [row, col] on the screen. This works for every possible + screen position, also status lines, window separators and the + command line. The top left position is row one, column one + The character excludes composing characters. For double-byte + encodings it may only be the first byte. + This is mainly to be used for testing. + Returns -1 when row or col is out of range. + screencol() *screencol()* The result is a Number, which is the current screen column of the cursor. The leftmost column has number 1. @@ -5866,6 +5912,9 @@ system({expr} [, {input}]) *system()* *E677* < To make the result more system-independent, the shell output is filtered to replace <CR> with <NL> for Macintosh, and <CR><NL> with <NL> for DOS-like systems. + To avoid the string being truncated at a NUL, all NUL + characters are replaced with SOH (0x01). + The command executed is constructed using several options: 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote' ({tmp} is an automatically generated file name). diff --git a/en/gui.txt b/en/gui.txt index aeda3f2f6..1ae54951c 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -101,6 +101,9 @@ Recommended place for your personal GUI initializations: Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc or $VIM/.gvimrc +The personal initialization files are searched in the order specified above +and only the first one that is found is read. + There are a number of options which only have meaning in the GUI version of Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are documented in |options.txt| with all the other options. diff --git a/en/if_lua.txt b/en/if_lua.txt index 3d7cf2c8e..2b322ddba 100644 --- a/en/if_lua.txt +++ b/en/if_lua.txt @@ -1,4 +1,4 @@ -*if_lua.txt* For Vim version 7.4. Last change: 2012 Jun 29 +*if_lua.txt* For Vim version 7.4. Last change: 2013 Sep 04 VIM REFERENCE MANUAL by Luis Carvalho @@ -10,9 +10,10 @@ The Lua Interface to Vim *lua* *Lua* 2. The vim module |lua-vim| 3. List userdata |lua-list| 4. Dict userdata |lua-dict| -5. Buffer userdata |lua-buffer| -6. Window userdata |lua-window| -7. The luaeval function |lua-luaeval| +5. Funcref userdata |lua-funcref| +6. Buffer userdata |lua-buffer| +7. Window userdata |lua-window| +8. The luaeval function |lua-luaeval| {Vi does not have any of these commands} @@ -110,9 +111,31 @@ input range are stored in "vim.firstline" and "vim.lastline" respectively. The module also includes routines for buffer, window, and current line queries, Vim evaluation and command execution, and others. - vim.list() Returns an empty list (see |List|). - - vim.dict() Returns an empty dictionary (see |Dictionary|). + vim.list([arg]) Returns an empty list or, if "arg" is a Lua + table with numeric keys 1, ..., n (a + "sequence"), returns a list l such that l[i] = + arg[i] for i = 1, ..., n (see |List|). + Non-numeric keys are not used to initialize + the list. See also |lua-eval| for conversion + rules. Example: > + :lua t = {math.pi, false, say = 'hi'} + :echo luaeval('vim.list(t)') + :" [3.141593, 0], 'say' is ignored +< + vim.dict([arg]) Returns an empty dictionary or, if "arg" is a + Lua table, returns a dict d such that d[k] = + arg[k] for all string keys k in "arg" (see + |Dictionary|). Number keys are converted to + strings. Keys that are not strings are not + used to initialize the dictionary. See also + |lua-eval| for conversion rules. Example: > + :lua t = {math.pi, false, say = 'hi'} + :echo luaeval('vim.dict(t)') + :" {'say': 'hi'}, numeric keys ignored +< + vim.funcref({name}) Returns a Funcref to function {name} (see + |Funcref|). It is equivalent to Vim's + "function". NOT IMPLEMENTED YET vim.buffer([arg]) If "arg" is a number, returns buffer with number "arg" in the buffer list or, if "arg" @@ -131,9 +154,9 @@ Vim evaluation and command execution, and others. vim.type({arg}) Returns the type of {arg}. It is equivalent to Lua's "type" function, but returns "list", - "dict", "buffer", or "window" if {arg} is a - list, dictionary, buffer, or window, - respectively. Examples: > + "dict", "funcref", "buffer", or "window" if + {arg} is a list, dictionary, funcref, buffer, + or window, respectively. Examples: > :lua l = vim.list() :lua print(type(l), vim.type(l)) :" userdata list @@ -229,7 +252,40 @@ Examples: < ============================================================================== -5. Buffer userdata *lua-buffer* +5. Funcref userdata *lua-funcref* + +Funcref userdata represent funcref variables in Vim. Funcrefs that were +defined with a "dict" attribute need to be obtained as a dictionary key +in order to have "self" properly assigned to the dictionary (see examples +below.) A funcref "f" has the following properties: + +Properties +---------- + o "#f" is the name of the function referenced by "f" + o "f(...)" calls the function referenced by "f" (with arguments) + +Examples: +> + :function I(x) + : return a:x + : endfunction + :let R = function('I') + :lua i1 = vim.funcref('I') + :lua i2 = vim.eval('R') + :lua print(#i1, #i2) -- both 'I' + :lua print(i1, i2, #i2(i1) == #i1(i2)) + :function Mylen() dict + : return len(self.data) + : endfunction + :let mydict = {'data': [0, 1, 2, 3]} + :lua d = vim.eval('mydict'); d.len = vim.funcref('Mylen') + :echo mydict.len() + :lua l = d.len -- assign d as 'self' + :lua print(l()) +< + +============================================================================== +6. Buffer userdata *lua-buffer* Buffer userdata represent vim buffers. A buffer userdata "b" has the following properties and methods: @@ -281,7 +337,7 @@ Examples: < ============================================================================== -6. Window userdata *lua-window* +7. Window userdata *lua-window* Window objects represent vim windows. A window userdata "w" has the following properties and methods: @@ -313,7 +369,7 @@ Examples: < ============================================================================== -7. The luaeval function *lua-luaeval* *lua-eval* +8. The luaeval function *lua-luaeval* *lua-eval* The (dual) equivalent of "vim.eval" for passing Lua values to Vim is "luaeval". "luaeval" takes an expression string and an optional argument and @@ -325,7 +381,13 @@ returns the result of the expression. It is semantically equivalent in Lua to: return chunk(arg) -- return typval end < -Note that "_A" receives the argument to "luaeval". Examples: > +Note that "_A" receives the argument to "luaeval". Lua numbers, strings, and +list, dict, and funcref userdata are converted to their Vim respective types, +while Lua booleans are converted to numbers. An error is thrown if conversion +of any of the remaining Lua types, including userdata other than lists, dicts, +and funcrefs, is attempted. + +Examples: > :echo luaeval('math.pi') :lua a = vim.list():add('newlist') diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 09139cdd2..889101b19 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.4. Last change: 2013 May 25 +*if_pyth.txt* For Vim version 7.4. Last change: 2013 Jul 10 VIM REFERENCE MANUAL by Paul Moore @@ -23,6 +23,7 @@ The Python 2.x interface is available only when Vim was compiled with the |+python| feature. The Python 3 interface is available only when Vim was compiled with the |+python3| feature. +Both can be available at the same time, but read |python-2-and-3|. ============================================================================== 1. Commands *python-commands* @@ -174,7 +175,24 @@ vim.eval(str) *python-eval* vim.bindeval(str) *python-bindeval* Like |python-eval|, but returns special objects described in |python-bindeval-objects|. These python objects let you modify (|List| - or |Dictionary|) or call (|Funcref|) vim objecs. + or |Dictionary|) or call (|Funcref|) vim objects. + +vim.strwidth(str) *python-strwidth* + Like |strwidth()|: returns number of display cells str occupies, tab + is counted as one cell. + +vim.foreach_rtp(callable) *python-foreach_rtp* + Call the given callable for each path in 'runtimepath' until either + callable returns something but None, the exception is raised or there + are no longer paths. If stopped in case callable returned non-None, + vim.foreach_rtp function returns the value returned by callable. + +vim.chdir(*args, **kwargs) *python-chdir* +vim.fchdir(*args, **kwargs) *python-fchdir* + Run os.chdir or os.fchdir, then all appropriate vim stuff. + Note: you should not use these functions directly, use os.chdir and + os.fchdir instead. Behavior of vim.fchdir is undefined in case + os.fchdir does not exist. Error object of the "vim" module @@ -208,7 +226,7 @@ vim.windows *python-windows* :py w in vim.windows # Membership test :py n = len(vim.windows) # Number of elements :py for w in vim.windows: # Sequential access -< Note: vim.windows object always accesses current tab page,. +< Note: vim.windows object always accesses current tab page. |python-tabpage|.windows objects are bound to parent |python-tabpage| object and always use windows from that tab page (or throw vim.error in case tab page was deleted). You can keep a reference to both @@ -289,6 +307,88 @@ Output from Python *python-output* supported, and may cause the program to crash. This should probably be fixed. + *python2-directory* *python3-directory* *pythonx-directory* +Python 'runtimepath' handling *python-special-path* + +In python vim.VIM_SPECIAL_PATH special directory is used as a replacement for +the list of paths found in 'runtimepath': with this directory in sys.path and +vim.path_hooks in sys.path_hooks python will try to load module from +{rtp}/python2 (or python3) and {rtp}/pythonx (for both python versions) for +each {rtp} found in 'runtimepath'. + +Implementation is similar to the following, but written in C: > + + from imp import find_module, load_module + import vim + import sys + + class VimModuleLoader(object): + def __init__(self, module): + self.module = module + + def load_module(self, fullname, path=None): + return self.module + + def _find_module(fullname, oldtail, path): + idx = oldtail.find('.') + if idx > 0: + name = oldtail[:idx] + tail = oldtail[idx+1:] + fmr = find_module(name, path) + module = load_module(fullname[:-len(oldtail)] + name, *fmr) + return _find_module(fullname, tail, module.__path__) + else: + fmr = find_module(fullname, path) + return load_module(fullname, *fmr) + + # It uses vim module itself in place of VimPathFinder class: it does not + # matter for python which object has find_module function attached to as + # an attribute. + class VimPathFinder(object): + @classmethod + def find_module(cls, fullname, path=None): + try: + return VimModuleLoader(_find_module(fullname, fullname, path or vim._get_paths())) + except ImportError: + return None + + @classmethod + def load_module(cls, fullname, path=None): + return _find_module(fullname, fullname, path or vim._get_paths()) + + def hook(path): + if path == vim.VIM_SPECIAL_PATH: + return VimPathFinder + else: + raise ImportError + + sys.path_hooks.append(hook) + +vim.VIM_SPECIAL_PATH *python-VIM_SPECIAL_PATH* + String constant used in conjunction with vim path hook. If path hook + installed by vim is requested to handle anything but path equal to + vim.VIM_SPECIAL_PATH constant it raises ImportError. In the only other + case it uses special loader. + + Note: you must not use value of this constant directly, always use + vim.VIM_SPECIAL_PATH object. + +vim.find_module(...) *python-find_module* +vim.path_hook(path) *python-path_hook* + Methods or objects used to implement path loading as described above. + You should not be using any of these directly except for vim.path_hook + in case you need to do something with sys.meta_path. It is not + guaranteed that any of the objects will exist in the future vim + versions. + +vim._get_paths *python-_get_paths* + Methods returning a list of paths which will be searched for by path + hook. You should not rely on this method being present in future + versions, but can use it for debugging. + + It returns a list of {rtp}/python2 (or {rtp}/python3) and + {rtp}/pythonx directories for each {rtp} in 'runtimepath'. + ============================================================================== 3. Buffer objects *python-buffer* @@ -329,6 +429,8 @@ The buffer object attributes are: |BufFilePost| autocommands are launched. b.number Buffer number. Can be used as |python-buffers| key. Read-only. + b.valid True or False. Buffer object becomes invalid when + corresponding buffer is wiped out. The buffer object methods are: b.append(str) Append a line to the buffer @@ -433,6 +535,8 @@ Window attributes are: row, col (read-only) On-screen window position in display cells. First position is zero. tabpage (read-only) Window tab page. + valid (read-write) True or False. Window object becomes invalid + when corresponding window is closed. The height attribute is writable only if the screen is split horizontally. The width attribute is writable only if the screen is split vertically. @@ -456,6 +560,8 @@ Tab page attributes are: windows Like |python-windows|, but for current tab page. vars The tab page |t:| variables. window Current tabpage window. + valid True or False. Tab page object becomes invalid when + corresponding tab page is closed. TabPage object type is available using "TabPage" attribute of vim module. @@ -494,10 +600,9 @@ vim.Dictionary object *python-Dictionary* Remove specified key from dictionary and return corresponding value. If key is not found and default is given returns the default, otherwise raises KeyError. - popitem(key) - Remove specified key from dictionary and return a pair - with it and the corresponding value. Returned key is a new - object. + popitem() + Remove random key from dictionary and return (key, value) + pair. has_key(key) Check whether dictionary contains specified key, similar to `key in dict`. @@ -607,7 +712,7 @@ Vim can be built in four ways (:version output): 3. Python 3 support only (-python, +python3 or +python3/dyn) 4. Python 2 and 3 support (+python/dyn, +python3/dyn) -Some more details on the special case 4: +Some more details on the special case 4: *python-2-and-3* When Python 2 and Python 3 are both supported they must be loaded dynamically. @@ -636,6 +741,11 @@ To work around such problems there are these options: 3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This may crash Vim though. + *E880* +Raising SystemExit exception in python isn't endorsed way to quit vim, use: > + :py vim.command("qall!") +< + *has-python* You can test what Python version is available with: > if has('python') diff --git a/en/indent.txt b/en/indent.txt index 6d18b50b8..1f7754b58 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.4. Last change: 2013 May 20 +*indent.txt* For Vim version 7.4. Last change: 2013 Nov 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -545,10 +545,12 @@ The examples below assume a 'shiftwidth' of 4. (default 70 lines). *cino-#* - #N When N is non-zero recognize shell/Perl comments, starting with - '#'. Default N is zero: don't recognize '#' comments. Note - that lines starting with # will still be seen as preprocessor - lines. + #N When N is non-zero recognize shell/Perl comments starting with + '#', do not recognize preprocessor lines; allow right-shifting + lines that start with "#". + When N is zero (default): don't recognize '#' comments, do + recognize preprocessor lines; right-shifting lines that start + with "#" does not work. The defaults, spelled out in full, are: @@ -556,7 +558,7 @@ The defaults, spelled out in full, are: c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 Vim puts a line in column 1 if: -- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. +- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#0'. - It starts with a label (a keyword followed by ':', other than "case" and "default") and 'cinoptions' does not contain an 'L' entry with a positive value. @@ -581,8 +583,8 @@ CLOJURE *ft-clojure-indent* *clojure-indent* Clojure indentation differs somewhat from traditional Lisps, due in part to the use of square and curly brackets, and otherwise by community convention. -These conventions are not always universally followed, so the Clojure indent -script offers a few configurable options, listed below. +These conventions are not universally followed, so the Clojure indent script +offers a few configurable options, listed below. If the current vim does not include searchpairpos(), the indent script falls back to normal 'lisp' indenting, and the following options are ignored. @@ -729,6 +731,50 @@ buffer-local variable as follows > let b:fortran_indent_less=1 +HTML *ft-html-indent* *html-indent* *html-indenting* + +This is about variables you can set in your vimrc to customize HTML indenting. + +You can set the indent for the first line after <script> and <style> +"blocktags" (default "zero"): > + + :let g:html_indent_script1 = "inc" + :let g:html_indent_style1 = "inc" +< + VALUE MEANING ~ + "zero" zero indent + "auto" auto indent (same indent as the blocktag) + "inc" auto indent + one indent step + +Many tags increase the indent for what follows per default (see "Add Indent +Tags" in the script). You can add further tags with: > + + :let g:html_indent_inctags = "html,body,head,tbody" + +You can also remove such tags with: > + + :let g:html_indent_autotags = "th,td,tr,tfoot,thead" + +Default value is empty for both variables. Note: the initial "inctags" are +only defined once per Vim session. + +User variables are only read when the script is sourced. To enable your +changes during a session, without reloading the HTML file, you can manually +do: > + + :call HtmlIndent_CheckUserSettings() + +Detail: + Calculation of indent inside "blocktags" with "alien" content: + BLOCKTAG INDENT EXPR WHEN APPLICABLE ~ + <script> : {customizable} if first line of block + : cindent(v:lnum) if attributes empty or contain "java" + : -1 else (vbscript, tcl, ...) + <style> : {customizable} if first line of block + : GetCSSIndent() else + <!-- --> : -1 + + PHP *ft-php-indent* *php-indent* *php-indenting* NOTE: PHP files will be indented correctly only if PHP |syntax| is active. diff --git a/en/index.txt b/en/index.txt index 6def73e1d..68dceb943 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1191,9 +1191,12 @@ tag command action ~ |:digraphs| :dig[raphs] show or enter digraphs |:display| :di[splay] display registers |:djump| :dj[ump] jump to #define -|:dlist| :dl[ist] list #defines +|:dl| :dl short for |:delete| with the 'l' flag +|:dl| :del[ete]l short for |:delete| with the 'l' flag +|:dlist| :dli[st] list #defines |:doautocmd| :do[autocmd] apply autocommands to current buffer |:doautoall| :doautoa[ll] apply autocommands for all loaded buffers +|:dp| :d[elete]p short for |:delete| with the 'p' flag |:drop| :dr[op] jump to window editing file or edit file in current window |:dsearch| :ds[earch] list one #define diff --git a/en/insert.txt b/en/insert.txt index 615849ab2..9b9445ae6 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.4. Last change: 2013 Apr 12 +*insert.txt* For Vim version 7.4. Last change: 2013 Jul 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -136,6 +136,8 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* too. When the result is a Float it's automatically converted to a String. + When append() or setline() is invoked the undo + sequence will be broken. See |registers| about registers. {not in Vi} CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* @@ -1357,7 +1359,7 @@ Complete: Completion works in separate JavaScript files (&ft==javascript), inside of <script> tag of (X)HTML and in values of event attributes (including scanning -of external files. +of external files). DOM compatibility @@ -1468,9 +1470,9 @@ knows how to color highlight. It can be used for any filetype and provides a minimal language-sensitive completion. To enable syntax code completion you can run: > - setlocal omnifunc=syntaxcomplete#Complete + setlocal omnifunc=syntaxcomplete#Complete -You can automate this by placing the following in your vimrc (after any +You can automate this by placing the following in your |.vimrc| (after any ":filetype" command): > if has("autocmd") && exists("+omnifunc") autocmd Filetype * @@ -1487,7 +1489,7 @@ customize which syntax groups to include or exclude from the list. Let's have a look at the PHP filetype to see how this works. If you edit a file called, index.php, run the following command: > - :syntax list + syntax list The first thing you will notice is that there are many different syntax groups. The PHP language can include elements from different languages like HTML, @@ -1496,24 +1498,37 @@ that begin with the filetype, "php", in this case. For example these syntax groups are included by default with the PHP: phpEnvVar, phpIntVar, phpFunctions. +If you wish non-filetype syntax items to also be included, you can use a +regular expression syntax (added in version 13.0 of autoload\syntaxcomplete.vim) +to add items. Looking at the output from ":syntax list" while editing a PHP file +I can see some of these entries: > + htmlArg,htmlTag,htmlTagName,javaScriptStatement,javaScriptGlobalObjects + +To pick up any JavaScript and HTML keyword syntax groups while editing a PHP +file, you can use 3 different regexs, one for each language. Or you can +simply restrict the include groups to a particular value, without using +a regex string: > + let g:omni_syntax_group_include_php = 'php\w\+,javaScript\w\+,html\w\+' + let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' +< +The basic form of this variable is: > + let g:omni_syntax_group_include_{filetype} = 'regex,comma,separated' + The PHP language has an enormous number of items which it knows how to syntax -highlight. This means these items will be available within the omni -completion list. Some people may find this list unwieldy or are only -interested in certain items. +highlight. These items will be available within the omni completion list. -There are two ways to prune this list (if necessary). If you find certain -syntax groups you do not wish displayed you can add the following to your -vimrc: > - let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' +Some people may find this list unwieldy or are only interested in certain +items. There are two ways to prune this list (if necessary). If you find +certain syntax groups you do not wish displayed you can use two different +methods to identify these groups. The first specifically lists the syntax +groups by name. The second uses a regular expression to identify both +syntax groups. Simply add one the following to your vimrc: > + let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' + let g:omni_syntax_group_exclude_php = 'php\w*Constant' Add as many syntax groups to this list by comma separating them. The basic form of this variable is: > - let g:omni_syntax_group_exclude_{filetype} = 'comma,separated,list' - -For completeness the opposite is also true. Creating this variable in your -vimrc will only include the items in the phpFunctions and phpMethods syntax -groups: > - let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' + let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated' You can create as many of these variables as you need, varying only the filetype at the end of the variable name. @@ -1554,6 +1569,9 @@ To retrieve only the syntax items for the sqlOperator syntax group: > To retrieve all syntax items for both the sqlOperator and sqlType groups: > echo OmniSyntaxList( ['sqlOperator', 'sqlType'] ) +A regular expression can also be used: > + echo OmniSyntaxList( ['sql\w\+'] ) + From within a plugin, you would typically assign the output to a List: > let myKeywords = [] let myKeywords = OmniSyntaxList( ['sqlKeyword'] ) diff --git a/en/map.txt b/en/map.txt index 30e22dbbe..4ae902c57 100644 --- a/en/map.txt +++ b/en/map.txt @@ -169,7 +169,9 @@ be effective in the current buffer only. Example: > :map <buffer> ,w /[.,;]<CR> Then you can map ",w" to something else in another buffer: > :map <buffer> ,w /[#&!]<CR> -The local buffer mappings are used before the global ones. +The local buffer mappings are used before the global ones. See <nowait> below +to make a short local mapping not taking effect when a longer global one +exists. The "<buffer>" argument can also be used to clear mappings: > :unmap <buffer> ,w :mapclear <buffer> @@ -177,6 +179,14 @@ Local mappings are also cleared when a buffer is deleted, but not when it is unloaded. Just like local option values. Also see |map-precedence|. + *:map-<nowait>* *:map-nowait* +When defining a buffer-local mapping for "," there may be a global mapping +that starts with ",". Then you need to type another character for Vim to know +whether to use the "," mapping or the longer one. To avoid this add the +<nowait> argument. Then the mapping will be used when it matches, Vim does +not wait for more characters to be typed. However, if the characters were +already type they are used. + *:map-<silent>* *:map-silent* To define a mapping which will not be echoed on the command line, add "<silent>" as the first argument. Example: > @@ -370,11 +380,12 @@ it's just used here for this situation. The simplest way to load a set of related language mappings is by using the 'keymap' option. See |45.5|. In Insert mode and in Command-line mode the mappings can be disabled with -the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. When starting to enter a normal -command line (not a search pattern) the mappings are disabled until a CTRL-^ -is typed. The state last used is remembered for Insert mode and Search -patterns separately. The state for Insert mode is also used when typing a -character as an argument to command like "f" or "t". +the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. These commands change the value of +the 'iminsert' option. When starting to enter a normal command line (not a +search pattern) the mappings are disabled until a CTRL-^ is typed. The state +last used is remembered for Insert mode and Search patterns separately. The +state for Insert mode is also used when typing a character as an argument to +command like "f" or "t". Language mappings will never be applied to already mapped characters. They are only used for typed characters. This assumes that the language mapping was already done when typing the mapping. @@ -655,6 +666,17 @@ option). After that it assumes that the 'q' is to be interpreted as such. If you type slowly, or your system is slow, reset the 'timeout' option. Then you might want to set the 'ttimeout' option. + *map-precedence* +Buffer-local mappings (defined using |:map-<buffer>|) take precedence over +global mappings. When a buffer-local mapping is the same as a global mapping, +Vim will use the buffer-local mapping. In addition, Vim will use a complete +mapping immediately if it was defined with <nowait>, even if a longer mapping +has the same prefix. For example, given the following two mappings: > + :map <buffer> <nowait> \a :echo "Local \a"<CR> + :map \abc :echo "Global \abc"<CR> +When typing \a the buffer-local mapping will be used immediately. Vim will +not wait for more characters to see if the user might be typing \abc. + *map-keys-fails* 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 @@ -1243,6 +1265,7 @@ completion can be enabled: -complete=shellcmd Shell command -complete=sign |:sign| suboptions -complete=syntax syntax file names |'syntax'| + -complete=syntime |:syntime| suboptions -complete=tag tags -complete=tag_listfiles tags, file names are shown when CTRL-D is hit -complete=user user names @@ -1336,6 +1359,8 @@ There are some special cases as well: In the cases of the -count and -register attributes, if the optional argument is supplied, it is removed from the argument list and is available to the replacement text separately. +Note that these arguments can be abbreviated, but that is a deprecated +feature. Use the full name for new scripts. Replacement text diff --git a/en/motion.txt b/en/motion.txt index 550609a51..d40d825c2 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.4. Last change: 2013 Mar 07 +*motion.txt* For Vim version 7.4. Last change: 2013 Jul 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -236,6 +236,8 @@ g$ or g<End> When lines wrap ('wrap' on): To the last character of the line is not on the screen or when a count is used. Additionally, vertical movements keep the column, instead of going to the end of the line. + When 'virtualedit' is enabled moves to the end of the + screen line. {not in Vi} *bar* @@ -1083,7 +1085,8 @@ only once. When the |:keepjumps| command modifier is used, jumps are not stored in the jumplist. Jumps are also not stored in other cases, e.g., in a |:global| -command. You can explicitly add a jump by setting the ' mark. +command. You can explicitly add a jump by setting the ' mark with "m'". Note +that calling setpos() does not do this. After the CTRL-O command that got you into line 1154 you could give another jump command (e.g., "G"). The jump list would then become: diff --git a/en/options.txt b/en/options.txt index 94378dcd6..b7b66495e 100644 --- a/en/options.txt +++ b/en/options.txt @@ -3996,6 +3996,26 @@ A jump table for the options with a short description can be found at |Q_op|. Can be overruled by using "\c" or "\C" in the pattern, see |/ignorecase|. + *'imactivatefunc'* *'imaf'* +'imactivatefunc' 'imaf' string (default "") + global + {not in Vi} + {only available when compiled with |+xim| and + |+GUI_GTK|} + This option specifies a function that will be called to + activate/inactivate Input Method. + + Example: > + function ImActivateFunc(active) + if a:active + ... do something + else + ... do something + endif + " return value is not used + endfunction + set imactivatefunc=ImActivateFunc +< *'imactivatekey'* *'imak'* 'imactivatekey' 'imak' string (default "") global @@ -4092,6 +4112,24 @@ A jump table for the options with a short description can be found at |Q_op|. The value 0 may not work correctly with Athena and Motif with some XIM methods. Use 'imdisable' to disable XIM then. + *'imstatusfunc'* *'imsf'* +'imstatusfunc' 'imsf' string (default "") + global + {not in Vi} + {only available when compiled with |+xim| and + |+GUI_GTK|} + This option specifies a function that is called to obtain the status + of Input Method. It must return a positive number when IME is active. + + Example: > + function ImStatusFunc() + let is_active = ...do something + return is_active ? 1 : 0 + endfunction + set imstatusfunc=ImStatusFunc +< + NOTE: This function is invoked very often. Keep it fast. + *'include'* *'inc'* 'include' 'inc' string (default "^\s*#\s*include") global or local to buffer |global-local| @@ -5135,7 +5173,18 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - When setting this option, 'relativenumber' is reset. + *number_relativenumber* + The 'relativenumber' option changes the displayed number to be + relative to the cursor. Together with 'number' there are these + four combinations (cursor in line 3): + + 'nonu' 'nu' 'nonu' 'nu' + 'nornu' 'nornu' 'rnu' 'rnu' + + |apple | 1 apple | 2 apple | 2 apple + |pear | 2 pear | 1 pear | 1 pear + |nobody | 3 nobody | 0 nobody |3 nobody + |there | 4 there | 1 there | 1 there *'numberwidth'* *'nuw'* 'numberwidth' 'nuw' number (Vim default: 4 Vi default: 8) @@ -5550,7 +5599,10 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - When setting this option, 'number' is reset. + + The number in front of the cursor line also depends on the value of + 'number', see |number_relativenumber| for all combinations of the two + options. *'remap'* *'noremap'* 'remap' boolean (default on) @@ -6705,7 +6757,8 @@ A jump table for the options with a short description can be found at |Q_op|. V N Virtual column number as -{num}. Not displayed if equal to 'c'. p N Percentage through file in lines as in |CTRL-G|. P S Percentage through file of displayed window. This is like the - percentage described for 'ruler'. Always 3 in length. + percentage described for 'ruler'. Always 3 in length, unless + translated. a S Argument list status as in default title. ({current} of {max}) Empty if the argument file count is zero or one. { NF Evaluate expression between '%{' and '}' and substitute result. @@ -7555,8 +7608,9 @@ A jump table for the options with a short description can be found at |Q_op|. < But you can also get Vi compatibility by including the 'u' flag in 'cpoptions', and still be able to use CTRL-R to repeat undo. Also see |undo-two-ways|. - Set to a negative number for no undo at all: > - set ul=-1 + Set to -1 for no undo at all. You might want to do this only for the + current buffer: > + setlocal ul=-1 < This helps when you run out of memory for a single change. Also see |clear-undo|. diff --git a/en/quickfix.txt b/en/quickfix.txt index e96025f86..d6bf938c4 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.4. Last change: 2013 Mar 07 +*quickfix.txt* For Vim version 7.4. Last change: 2013 Aug 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -899,6 +899,8 @@ invalid. Special characters in 'errorformat' are comma and backslash. See |efm-entries| for how to deal with them. Note that a literal "%" is matched by "%%", thus it is not escaped with a backslash. +Keep in mind that in the `:make` and `:grep` output all NUL characters are +replaced with SOH (0x01). Note: By default the difference between upper and lowercase is ignored. If you want to match case, add "\C" to the pattern |/\C|. diff --git a/en/quickref.txt b/en/quickref.txt index 77d30ecd7..90d359775 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.4. Last change: 2013 May 20 +*quickref.txt* For Vim version 7.4. Last change: 2013 Jun 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -170,18 +170,18 @@ N is used to indicate an optional count that can be given before the command. ------------------------------------------------------------------------------ *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 +|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[]'"<>.} +|`[| `[ 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 @@ -648,7 +648,7 @@ Short explanation of each option: *option-list* 'completefunc' 'cfu' function to be used for Insert mode completion 'completeopt' 'cot' options for Insert mode completion 'concealcursor' 'cocu' whether concealable text is hidden in cursor line -'conceallevel' 'cole' whether concealable text is shown or hidden +'conceallevel' 'cole' whether concealable text is shown or hidden 'confirm' 'cf' ask what to do about unsaved/read-only files 'conskey' 'consk' get keys directly from console (MS-DOS only) 'copyindent' 'ci' make 'autoindent' use existing indent structure @@ -738,10 +738,12 @@ Short explanation of each option: *option-list* 'iconstring' string to use for the Vim icon text 'ignorecase' 'ic' ignore case in search patterns 'imactivatekey' 'imak' key that activates the X input method +'imactivatefunc' 'imaf' function to enable/disable the X input method 'imcmdline' 'imc' use IM when starting to edit a command line 'imdisable' 'imd' do not use the IM in any mode 'iminsert' 'imi' use :lmap or IM in Insert mode 'imsearch' 'ims' use :lmap or IM when typing a search pattern +'imstatusfunc' 'imsf' function to obtain X input method status 'include' 'inc' pattern to be used to find an include file 'includeexpr' 'inex' expression used to process an include line 'incsearch' 'is' highlight match while typing search pattern @@ -1326,14 +1328,14 @@ Context-sensitive completion on the command-line: |:bdelete| :bdelete[!] [N] unload buffer [N] and delete it from the buffer list - in current window in new window ~ -|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N -|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf -|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf -|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf -|:bfirst| :bfirst :sbfirst to first arg/buf -|:blast| :blast :sblast to last arg/buf -|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf + in current window in new window ~ +|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N +|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf +|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf +|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf +|:bfirst| :bfirst :sbfirst to first arg/buf +|:blast| :blast :sblast to last arg/buf +|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf ------------------------------------------------------------------------------ *Q_sy* Syntax Highlighting diff --git a/en/starting.txt b/en/starting.txt index dd279b8d5..47ad05ff9 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.4. Last change: 2013 May 29 +*starting.txt* For Vim version 7.4. Last change: 2013 Jul 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -757,14 +757,25 @@ accordingly. Vim proceeds in this order: file, but "exrc" is what Vi always used, "vimrc" is a Vim specific name. Also see |vimrc-intro|. - Recommended place for your personal initializations: - Unix $HOME/.vimrc - OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc) - MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc - Amiga s:.vimrc or $VIM/.vimrc + Places for your personal initializations: + Unix $HOME/.vimrc or $HOME/.vim/vimrc + OS/2 $HOME/.vimrc, $HOME/vimfiles/vimrc + or $VIM/.vimrc (or _vimrc) + MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc + or $VIM/_vimrc + Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc + or $VIM/.vimrc + + The files are searched in the order specified above and only the first + one that is found is read. + + RECOMMENDATION: Put all your Vim configuration stuff in the + $HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it + easy to copy it to another system. If Vim was started with "-u filename", the file "filename" is used. - All following initializations until 4. are skipped. + All following initializations until 4. are skipped. $MYVIMRC is not + set. "vim -u NORC" can be used to skip these initializations without reading a file. "vim -u NONE" also skips loading plugins. |-u| @@ -791,12 +802,15 @@ accordingly. Vim proceeds in this order: - The environment variable VIMINIT (see also |compatible-default|) (*) The value of $VIMINIT is used as an Ex command line. - The user vimrc file(s): - "$HOME/.vimrc" (for Unix and OS/2) (*) - "s:.vimrc" (for Amiga) (*) - "home:.vimrc" (for Amiga) (*) - "$VIM/.vimrc" (for OS/2 and Amiga) (*) - "$HOME/_vimrc" (for MS-DOS and Win32) (*) - "$VIM/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/.vimrc" (for Unix and OS/2) (*) + "$HOME/.vim/vimrc" (for Unix and OS/2) (*) + "s:.vimrc" (for Amiga) (*) + "home:.vimrc" (for Amiga) (*) + "home:vimfiles:vimrc" (for Amiga) (*) + "$VIM/.vimrc" (for OS/2 and Amiga) (*) + "$HOME/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/vimfiles/vimrc" (for MS-DOS and Win32) (*) + "$VIM/_vimrc" (for MS-DOS and Win32) (*) Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist, "_vimrc" is also tried, in case an MS-DOS compatible file system is used. For MS-DOS and Win32 ".vimrc" is checked diff --git a/en/syntax.txt b/en/syntax.txt index db0e075ab..3c0c56899 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -379,12 +379,12 @@ settings, depending on which syntax is active. Example: > 2HTML *2html.vim* *convert-to-HTML* This is not a syntax file itself, but a script that converts the current -window into HTML. Vim opens a new window in which it builds the HTML file. +window into HTML. Vim opens a new window in which it builds the HTML file. -After you save the resulting file, you can view it with any browser. The -colors should be exactly the same as you see them in Vim. You can jump to -specific lines by adding (for example) #L123 or #123 to the end of the URL in -your browser's address bar (#123 only with javascript support). And with +After you save the resulting file, you can view it with any browser. The +colors should be exactly the same as you see them in Vim. With +|g:html_line_ids| you can jump to specific lines by adding (for example) #L123 +or #123 to the end of the URL in your browser's address bar. And with |g:html_dynamic_folds| enabled, you can show or hide the text that is folded in Vim. @@ -425,15 +425,14 @@ and last line to be converted. Example, using the last set Visual area: > |g:html_end_line| to the start and end of the range, respectively. Default range is the entire buffer. - If the current window is part of a |diff|, unless - |g:html_diff_one_file| is set, :TOhtml will convert - all windows which are part of the diff in the current - tab and place them side-by-side in a <table> element - in the generated HTML. When this happens you can jump - to lines in specific windows with (for example) #W1L42 - for line 42 in the first diffed window, or #W3L87 for - line 87 in the third. Omitting the window ID will - default to the first window if javascript is enabled. + If the current window is part of a |diff|, unless + |g:html_diff_one_file| is set, :TOhtml will convert + all windows which are part of the diff in the current + tab and place them side-by-side in a <table> element + in the generated HTML. With |g:html_line_ids| you can + jump to lines in specific windows with (for example) + #W1L42 for line 42 in the first diffed window, or + #W3L87 for line 87 in the third. Examples: > @@ -443,9 +442,9 @@ and last line to be converted. Example, using the last set Visual area: > < *g:html_diff_one_file* Default: 0. -When 0, all windows involved in a |diff| in the current tab page are converted -to HTML and placed side-by-side in a <table> element. -When 1, only the current buffer is converted. +When 0, and using |:TOhtml| all windows involved in a |diff| in the current tab +page are converted to HTML and placed side-by-side in a <table> element. When +1, only the current buffer is converted. Example: > let g:html_diff_one_file = 1 @@ -494,6 +493,23 @@ Force to omit the line numbers: > :let g:html_number_lines = 0 Go back to the default to use 'number' by deleting the variable: > :unlet g:html_number_lines +< + *g:html_line_ids* +Default: 1 if |g:html_number_lines| is set, 0 otherwise. +When 1, adds an HTML id attribute to each line number, or to an empty <span> +inserted for that purpose if no line numbers are shown. This ID attribute +takes the form of L123 for single-buffer HTML pages, or W2L123 for diff-view +pages, and is used to jump to a specific line (in a specific window of a diff +view). Javascript is inserted to open any closed dynamic folds +(|g:html_dynamic_folds|) containing the specificed line before jumping. The +javascript also allows omitting the window ID in the url, and the leading L. +For example: > + + page.html#L123 jumps to line 123 in a single-buffer file + page.html#123 does the same + + diff.html#W1L42 jumps to line 42 in the first window in a diff + diff.html#42 does the same < *g:html_use_css* Default: 1. @@ -603,6 +619,25 @@ they will not be openable without a foldcolumn. > :let g:html_hover_unfold = 1 < + *g:html_id_expr* +Default: "" +Dynamic folding and jumping to line IDs rely on unique IDs within the document +to work. If generated HTML is copied into a larger document, these IDs are no +longer guaranteed to be unique. Set g:html_id_expr to an expression Vim can +evaluate to get a unique string to append to each ID used in a given document, +so that the full IDs will be unique even when combined with other content in a +larger HTML document. Example, to append _ and the buffer number to each ID: > + + :let g:html_id_expr = '"_".bufnr("%")' +< +To append a string "_mystring" to the end of each ID: > + + :let g:html_id_expr = '"_mystring"' +< +Note, when converting a diff view to HTML, the expression will only be +evaluated for the first window in the diff, and the result used for all the +windows. + *TOhtml-wrap-text* *g:html_pre_wrap* Default: current 'wrap' setting. When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does @@ -1318,8 +1353,8 @@ FORTRAN *fortran.vim* *ft-fortran-syntax* Default highlighting and dialect ~ Highlighting appropriate for Fortran 2008 is used by default. This choice -should be appropriate for most users most of the time because Fortran 2008 is -almost a superset of previous versions (Fortran 2003, 95, 90, and 77). +should be appropriate for most users most of the time because Fortran 2008 is +almost a superset of previous versions (Fortran 2003, 95, 90, and 77). Fortran source code form ~ Fortran code can be in either fixed or free source form. Note that the @@ -1410,7 +1445,7 @@ items. If you use F, the advantage of setting the dialect appropriately is that other legacy features excluded from F will be highlighted as todo items and -that free source form will be assumed. +that free source form will be assumed. The dialect can be selected in various ways. If all your fortran files use the same dialect, set the global variable fortran_dialect in your .vimrc prior @@ -1444,13 +1479,13 @@ Fortran comment of the form > For previous versions of the syntax, you may have set fortran_dialect to the now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be silently handled as "f08". Users of "elf" may wish to experiment with "F" -instead. +instead. The syntax/fortran.vim script contains embedded comments that tell you how to comment and/or uncomment some lines to (a) activate recognition of some non-standard, vendor-supplied intrinsics and (b) to prevent features deleted or declared obsolescent in the 2008 standard from being highlighted as todo -items. +items. Limitations ~ Parenthesis checking does not catch too few closing parentheses. Hollerith @@ -2197,9 +2232,11 @@ PERL *perl.vim* *ft-perl-syntax* There are a number of possible options to the perl syntax highlighting. -If you use POD files or POD segments, you might: > +Inline POD highlighting is now turned on by default. If you don't wish +to have the added complexity of highlighting POD embedded within Perl +files, you may set the 'perl_include_pod' option to 0: > - :let perl_include_pod = 1 + :let perl_include_pod = 0 The reduce the complexity of parsing (and increase performance) you can switch off two elements in the parsing of variable names and contents. > @@ -2252,13 +2289,20 @@ If you want to fold blocks in if statements, etc. as well set the following: > :let perl_fold_blocks = 1 -To avoid folding packages or subs when perl_fold is let, let the appropriate -variable(s): > +Subroutines are folded by default if 'perl_fold' is set. If you do not want +this, you can set 'perl_nofold_subs': > - :unlet perl_nofold_packages - :unlet perl_nofold_subs + :let perl_nofold_subs = 1 +Anonymous subroutines are not folded by default; you may enable their folding +via 'perl_fold_anonymous_subs': > + :let perl_fold_anonymous_subs = 1 + +Packages are also folded by default if 'perl_fold' is set. To disable this +behavior, set 'perl_nofold_packages': > + + :let perl_nofold_packages = 1 PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* @@ -2481,7 +2525,7 @@ If you want all possible Python highlighting (the same as setting the preceding last option and unsetting all other ones): > :let python_highlight_all = 1 -Note: only existence of these options matter, not their value. You can replace +Note: only existence of these options matter, not their value. You can replace 1 above with anything. @@ -3068,15 +3112,22 @@ substitution will not be made. *g:tex_isk* *g:tex_stylish* Tex: Controlling iskeyword~ -(La)Tex keywords normally use the characters 0-9,a-z,A-Z,192-255 only -but the "_" is the only one that causes problems. So, by default, -syntax/tex.vim overrides the usual |'iskeyword'| setting (using |:setlocal|) -with one that works for LaTeX. +Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex +keywords don't support the underscore - except when in *.sty files. The +syntax highlighting script handles this with the following logic: + + * If g:tex_stylish exists and is 1 + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (irregardless of g:tex_isk) + * Else if the file's suffix is sty, cls, clo, dtx, or ltx, + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (irregardless of g:tex_isk) + + * If g:tex_isk exists, then it will be used for the local 'iskeyword' + * Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255 -However, one may override this iskeyword re-setting by setting the -variable, g:tex_isk, in one's .vimrc to whatever one wishes and -it will be used instead. - TF *tf.vim* *ft-tf-syntax* @@ -3105,18 +3156,16 @@ The g:vimsyn_embed option allows users to select what, if any, types of embedded script highlighting they wish to have. > g:vimsyn_embed == 0 : don't embed any scripts - g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it) - g:vimsyn_embed =~ 'p' : embed perl (but only if vim supports it) - g:vimsyn_embed =~ 'P' : embed python (but only if vim supports it) - g:vimsyn_embed =~ 'r' : embed ruby (but only if vim supports it) - g:vimsyn_embed =~ 't' : embed tcl (but only if vim supports it) + g:vimsyn_embed =~ 'm' : support embedded mzscheme + g:vimsyn_embed =~ 'p' : support embedded perl + g:vimsyn_embed =~ 'P' : support embedded python + g:vimsyn_embed =~ 'r' : support embedded ruby + g:vimsyn_embed =~ 't' : support embedded tcl < -By default, g:vimsyn_embed is "mpPr"; ie. syntax/vim.vim will support -highlighting mzscheme, perl, python, and ruby by default. Vim's has("tcl") -test appears to hang vim when tcl is not truly available. Thus, by default, -tcl is not supported for embedding (but those of you who like tcl embedded in -their vim syntax highlighting can simply include it in the g:vimembedscript -option). +By default, g:vimsyn_embed is a string supporting interpreters that your vim +itself supports. Concatenate multiple characters to support multiple types +of embedded interpreters; ie. g:vimsyn_embed= "mp" supports embedded mzscheme +and embedded perl. *g:vimsyn_folding* Some folding is now supported with syntax/vim.vim: > @@ -5114,6 +5163,9 @@ If your syntax causes redrawing to be slow, here are a few hints on making it faster. To see slowness switch on some features that usually interfere, such as 'relativenumber' and |folding|. +Note: this is only available when compiled with the |+profile| feature. +You many need to build Vim with "huge" features. + To find out what patterns are consuming most time, get an overview with this sequence: > :syntime on @@ -5155,9 +5207,9 @@ When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at all positions in the current and previous line. For example, if the item is literal text specify the size of that text (in bytes): -"<\@<=span" Matches "span" in "<span". This tries matching with "<" in +"<\@<=span" Matches "span" in "<span". This tries matching with "<" in many places. -"<\@1<=span" Matches the same, but only tries one byte before "span". +"<\@1<=span" Matches the same, but only tries one byte before "span". vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/en/visual.txt b/en/visual.txt index cabf5f7e9..969317c2b 100644 --- a/en/visual.txt +++ b/en/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 7.4. Last change: 2012 Aug 15 +*visual.txt* For Vim version 7.4. Last change: 2013 Nov 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -75,7 +75,11 @@ position. *V* *linewise-visual* [count]V Start Visual mode linewise. - With [count] select that many lines. + With [count] select the same number of lines as used + for the last Visual operation, but at the current + cursor position, multiplied by [count]. When there + was no previous Visual operation [count] lines are + selected. *CTRL-V* *blockwise-visual* [count]CTRL-V Start Visual mode blockwise. Note: Under Windows From 3828ddbd6eee94ba81a9c2adc8de3adabbc14d5c Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 1 Dec 2013 11:18:31 +0900 Subject: [PATCH 477/783] Revert "Translate spell.jax" This reverts commit ffa64045e4435ff07fd1aafe84344531d3c278e5. --- doc/spell.jax | 20 +++---- en/autocmd.txt | 12 +--- en/change.txt | 27 ++------- en/cmdline.txt | 3 +- en/diff.txt | 18 +++--- en/editing.txt | 3 +- en/eval.txt | 55 +----------------- en/gui.txt | 3 - en/if_lua.txt | 90 +++++----------------------- en/if_pyth.txt | 126 +++------------------------------------ en/indent.txt | 62 +++----------------- en/index.txt | 5 +- en/insert.txt | 54 ++++++----------- en/map.txt | 37 ++---------- en/motion.txt | 7 +-- en/options.txt | 64 ++------------------ en/quickfix.txt | 4 +- en/quickref.txt | 44 +++++++------- en/starting.txt | 40 +++++-------- en/syntax.txt | 152 ++++++++++++++++-------------------------------- en/visual.txt | 8 +-- 21 files changed, 176 insertions(+), 658 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index 66eacc4f1..35e0c4463 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -200,11 +200,11 @@ z= カーソルの下や後の単語に対して正しい綴りの単語を提 オプション 'spellsuggest' は候補のリストがどのように生成、ソートされるかに影響 する。|'spellsuggest'| を参照せよ。 -オプション 'spellcapcheck' は文の最初の単語が大文字で始まるかをチェックするの -に用いる。これはファイルの最初の単語には働かない。文の直後に改行があるとき、次 -の行のハイライティングが後回しにされるかもしれない。必要であれば |CTRL-L| を使 -用せよ。 Also see |set-spc-auto| for how it can be set automatically when -'spelllang' is set. +オプション 'spellcapcheck' は文の最初の単語が大文字で始まるかをチェックするのに +用いる。これはファイルの最初の単語には働かない。When there is a line break +right after a sentence the highlighting of the next line may be postponed. +Use |CTRL-L| when needed. Also see |set-spc-auto| for how it can be set +automatically when 'spelllang' is set. Vim counts the number of times a good word is encountered. This is used to sort the suggestions: words that have been seen before get a small bonus, @@ -261,7 +261,7 @@ counting files specified by their .spl name). *spell-russian* 特有の例外: ロシア語ではこれらの特別な地域が使われる: - ru 全てのロシア語単語を許容する + ru all Russian words accepted ru_ru "IE" letter spelling ru_yo "YO" letter spelling @@ -290,7 +290,7 @@ Vim は 'runtimepath' のディレクトリの中の "spell" という名前の LL 言語名 EEE 'encoding' の値 -"LL" の値は 'spelllang' から来るが、地域名を除く。 +The value for "LL" comes from 'spelllang', but excludes the region name. 例: 'spelllang' LL ~ en_us en @@ -344,9 +344,9 @@ out the non-ASCII characters). Spelling for EBCDIC is currently not supported. -現在の 'encoding' でスペルファイルが利用できないかもしれない。スペルファイルの -作成の仕方については |spell-mkspell| を参照せよ。"iconv" でスペルファイルを変 -換するのは機能しないだろう! +A spell file might not be available in the current 'encoding'. See +|spell-mkspell| about how to create a spell file. Converting a spell file +with "iconv" will NOT work! Note: on VMS ".{enc}.spl" is changed to "_{enc}.spl" to avoid trouble with filenames. diff --git a/en/autocmd.txt b/en/autocmd.txt index 0a9505315..524a47957 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -480,12 +480,6 @@ CmdwinLeave Before leaving the command-line window. |cmdwin-char| *ColorScheme* ColorScheme After loading a color scheme. |:colorscheme| - The pattern is matched against the - colorscheme name. <afile> can be used for the - name of the actual file where this option was - set, and <amatch> for the new colorscheme - name. - *CompleteDone* CompleteDone After Insert mode completion is done. Either @@ -958,8 +952,7 @@ the autocommand is executed. This is different from the command! *file-pattern* The pattern is interpreted like mostly used in file names: - * matches any sequence of characters; Unusual: includes path - separators + * matches any sequence of characters ? matches any single character \? matches a '?' . matches a '.' @@ -968,9 +961,6 @@ The pattern is interpreted like mostly used in file names: \, matches a ',' { } like \( \) in a |pattern| , inside { }: like \| in a |pattern| - \} literal } - \{ literal { - \\\{n,m\} like \{n,m} in a |pattern| \ special meaning like in a |pattern| [ch] matches 'c' or 'h' [^ch] match any character but 'c' and 'h' diff --git a/en/change.txt b/en/change.txt index 5fe89eb4e..aaf573285 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.4. Last change: 2013 Nov 05 +*change.txt* For Vim version 7.4. Last change: 2013 Mar 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -71,21 +71,9 @@ For inserting text see |insert.txt|. "D" deletes the highlighted text plus all text until the end of the line. {not in Vi} - *:d* *:de* *:del* *:delete* *:dl* *:dp* + *:d* *:de* *:del* *:delete* *:dl* :[range]d[elete] [x] Delete [range] lines (default: current line) [into register x]. - Note these weird abbreviations: - :dl delete and list - :dell idem - :delel idem - :deletl idem - :deletel idem - :dp delete and print - :dep idem - :delp idem - :delep idem - :deletp idem - :deletep idem :[range]d[elete] [x] {count} Delete {count} lines, starting with [range] @@ -475,8 +463,8 @@ If the 'shiftround' option is on, the indent is rounded to a multiple of 'shiftwidth'. If the 'smartindent' option is on, or 'cindent' is on and 'cinkeys' contains -'#' with a zero value, shift right does not affect lines starting with '#' -(these are supposed to be C preprocessor lines that must stay in column 1). +'#', shift right does not affect lines starting with '#' (these are supposed +to be C preprocessor lines that must stay in column 1). When the 'expandtab' option is off (this is the default) Vim uses <Tab>s as much as possible to make the indent. You can use ">><<" to replace an indent @@ -1069,11 +1057,6 @@ another register. E.g., yank the text to copy, Visually select the text to replace and use "0p . You can repeat this as many times as you like, the unnamed register will be changed each time. -When you use a blockwise Visual mode command and yank only a single line into -a register, a paste on a visual selected area will paste that single line on -each of the selected lines (thus replacing the blockwise selected region by a -block of the pasted line). - *blockwise-register* If you use a blockwise Visual mode command to get the text into the register, the block of text will be inserted before ("P") or after ("p") the cursor @@ -1131,8 +1114,6 @@ less than one line (the small delete register is used then). An exception is made for the delete operator with these movement commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|. Register "1 is always used then (this is Vi compatible). The "- register is used as well if the delete is within a line. -Note that these characters may be mapped. E.g. |%| is mapped by the matchit -plugin. With each successive deletion or change, Vim shifts the previous contents of register 1 into register 2, 2 into 3, and so forth, losing the previous contents of register 9. diff --git a/en/cmdline.txt b/en/cmdline.txt index 9d7c5f56f..c309a0f7a 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.4. Last change: 2013 Nov 25 +*cmdline.txt* For Vim version 7.4. Last change: 2013 Mar 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -758,7 +758,6 @@ characters have a special meaning. These can also be used in the expression function expand() |expand()|. % Is replaced with the current file name. *:_%* *c_%* # Is replaced with the alternate file name. *:_#* *c_#* - This is remembered for every window. #n (where n is a number) is replaced with *:_#0* *:_#n* the file name of buffer n. "#0" is the same as "#". *c_#n* ## Is replaced with all names in the argument list *:_##* *c_##* diff --git a/en/diff.txt b/en/diff.txt index 96dff3509..a23fe5ab1 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.4. Last change: 2013 Sep 20 +*diff.txt* For Vim version 7.4. Last change: 2012 Sep 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -123,18 +123,14 @@ Since the option values are remembered with the buffer, you can edit another file for a moment and come back to the same file and be in diff mode again. *:diffo* *:diffoff* -:diffo[ff] Switch off diff mode for the current window. Resets related - options also when 'diff' was not set. +:diffo[ff] Switch off diff mode for the current window. :diffo[ff]! Switch off diff mode for the current window and in all windows - in the current tab page where 'diff' is set. Resetting - related options only happens in a window that has 'diff' set, - if the current window does not have 'diff' set then no options - in it are changed. - -The ":diffoff" command resets the relevant options to the values they had when -using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode. -Otherwise they are set to their default value: + in the current tab page where 'diff' is set. + +The ":diffoff" command resets the relevant options to their default value. +This may be different from what the values were before diff mode was started, +the old values are not remembered. 'diff' off 'scrollbind' off diff --git a/en/editing.txt b/en/editing.txt index cc3dcfac6..6cafa7fde 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.4. Last change: 2013 Nov 25 +*editing.txt* For Vim version 7.4. Last change: 2013 Aug 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -38,7 +38,6 @@ If there already was a current file name, then that one becomes the alternate file name. It can be used with "#" on the command line |:_#| and you can use the |CTRL-^| command to toggle between the current and the alternate file. However, the alternate file name is not changed when |:keepalt| is used. -An alternate file name is remembered for each window. *:keepalt* *:keepa* :keepalt {cmd} Execute {cmd} while keeping the current alternate file diff --git a/en/eval.txt b/en/eval.txt index 08edd1061..9e5325edd 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -123,7 +123,6 @@ around the arguments, to invoke the function it refers to. Example: > :echo Fn() < *E704* *E705* *E707* A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:". You -can use "g:" but the following name must still start with a capital. You cannot have both a Funcref variable and a function with the same name. A special case is defining a function and directly assigning its Funcref to a @@ -1455,13 +1454,6 @@ v:foldend Used for 'foldtext': last line of closed fold. v:foldstart Used for 'foldtext': first line of closed fold. Read-only in the |sandbox|. |fold-foldtext| - *v:hlsearch* *hlsearch-variable* -v:hlsearch Variable that determines whether search highlighting is on. - Makes sense only if 'hlsearch' is enabled which requires - |+extra_search|. Setting this variable to zero acts the like - |:nohlsearch| command, setting it to one acts like > - let &hlsearch = &hlsearch -< *v:insertmode* *insertmode-variable* v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand events. Values: @@ -1720,7 +1712,6 @@ bufnr( {expr}) Number Number of the buffer {expr} bufwinnr( {expr}) Number window number of buffer {expr} byte2line( {byte}) Number line number at byte count {byte} byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr} -byteidxcomp( {expr}, {nr}) Number byte index of {nr}'th char in {expr} call( {func}, {arglist} [, {dict}]) any call {func} with arguments {arglist} ceil( {expr}) Float round {expr} up @@ -1915,8 +1906,6 @@ repeat( {expr}, {count}) String repeat {expr} {count} times resolve( {filename}) String get filename a shortcut points to reverse( {list}) List reverse {list} in-place round( {expr}) Float round off {expr} -screenattr( {row}, {col}) Number attribute at screen position -screenchar( {row}, {col}) Number character at screen position screencol() Number current cursor column screenrow() Number current cursor row search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) @@ -2269,10 +2258,7 @@ byteidx({expr}, {nr}) *byteidx()* {expr}. Use zero for the first character, it returns zero. This function is only useful when there are multibyte characters, otherwise the returned value is equal to {nr}. - Composing characters are not counted separately, their byte - length is added to the preceding base character. See - |byteidxcomp()| below for counting composing characters - separately. + Composing characters are counted as a separate character. Example : > echo matchstr(str, ".", byteidx(str, 3)) < will display the fourth character. Another way to do the @@ -2281,20 +2267,7 @@ byteidx({expr}, {nr}) *byteidx()* echo strpart(s, 0, byteidx(s, 1)) < If there are less than {nr} characters -1 is returned. If there are exactly {nr} characters the length of the string - in bytes is returned. - -byteidxcomp({expr}, {nr}) *byteidxcomp()* - Like byteidx(), except that a composing character is counted - as a separate character. Example: > - let s = 'e' . nr2char(0x301) - echo byteidx(s, 1) - echo byteidxcomp(s, 1) - echo byteidxcomp(s, 2) -< The first and third echo result in 3 ('e' plus composing - character is 3 bytes), the second echo results in 1 ('e' is - one byte). - Only works different from byteidx() when 'encoding' is set to - a Unicode encoding. + is returned. call({func}, {arglist} [, {dict}]) *call()* *E699* Call function {func} with the items in |List| {arglist} as @@ -2800,8 +2773,7 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* file name contains a space] If the expansion fails, the result is an empty string. A name - for a non-existing file is not included, unless {expr} does - not start with '%', '#' or '<', see below. + for a non-existing file is not included. When {expr} starts with '%', '#' or '<', the expansion is done like for the |cmdline-special| variables with their associated @@ -4235,9 +4207,6 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) "match"). It will be highlighted with {group}. Returns an identification number (ID), which can be used to delete the match using |matchdelete()|. - Matching is case sensitive and magic, unless case sensitivity - or magicness are explicitly overridden in {pattern}. The - 'magic', 'smartcase' and 'ignorecase' options are not used. The optional {priority} argument assigns a priority to the match. A match with a high priority will have its @@ -4921,21 +4890,6 @@ round({expr}) *round()* < -5.0 {only available when compiled with the |+float| feature} -screenattr(row, col) *screenattr()* - Like screenchar(), but return the attribute. This is a rather - arbitrary number that can only be used to compare to the - attribute at other positions. - -screenchar(row, col) *screenchar()* - The result is a Number, which is the character at position - [row, col] on the screen. This works for every possible - screen position, also status lines, window separators and the - command line. The top left position is row one, column one - The character excludes composing characters. For double-byte - encodings it may only be the first byte. - This is mainly to be used for testing. - Returns -1 when row or col is out of range. - screencol() *screencol()* The result is a Number, which is the current screen column of the cursor. The leftmost column has number 1. @@ -5912,9 +5866,6 @@ system({expr} [, {input}]) *system()* *E677* < To make the result more system-independent, the shell output is filtered to replace <CR> with <NL> for Macintosh, and <CR><NL> with <NL> for DOS-like systems. - To avoid the string being truncated at a NUL, all NUL - characters are replaced with SOH (0x01). - The command executed is constructed using several options: 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote' ({tmp} is an automatically generated file name). diff --git a/en/gui.txt b/en/gui.txt index 1ae54951c..aeda3f2f6 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -101,9 +101,6 @@ Recommended place for your personal GUI initializations: Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc or $VIM/.gvimrc -The personal initialization files are searched in the order specified above -and only the first one that is found is read. - There are a number of options which only have meaning in the GUI version of Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are documented in |options.txt| with all the other options. diff --git a/en/if_lua.txt b/en/if_lua.txt index 2b322ddba..3d7cf2c8e 100644 --- a/en/if_lua.txt +++ b/en/if_lua.txt @@ -1,4 +1,4 @@ -*if_lua.txt* For Vim version 7.4. Last change: 2013 Sep 04 +*if_lua.txt* For Vim version 7.4. Last change: 2012 Jun 29 VIM REFERENCE MANUAL by Luis Carvalho @@ -10,10 +10,9 @@ The Lua Interface to Vim *lua* *Lua* 2. The vim module |lua-vim| 3. List userdata |lua-list| 4. Dict userdata |lua-dict| -5. Funcref userdata |lua-funcref| -6. Buffer userdata |lua-buffer| -7. Window userdata |lua-window| -8. The luaeval function |lua-luaeval| +5. Buffer userdata |lua-buffer| +6. Window userdata |lua-window| +7. The luaeval function |lua-luaeval| {Vi does not have any of these commands} @@ -111,31 +110,9 @@ input range are stored in "vim.firstline" and "vim.lastline" respectively. The module also includes routines for buffer, window, and current line queries, Vim evaluation and command execution, and others. - vim.list([arg]) Returns an empty list or, if "arg" is a Lua - table with numeric keys 1, ..., n (a - "sequence"), returns a list l such that l[i] = - arg[i] for i = 1, ..., n (see |List|). - Non-numeric keys are not used to initialize - the list. See also |lua-eval| for conversion - rules. Example: > - :lua t = {math.pi, false, say = 'hi'} - :echo luaeval('vim.list(t)') - :" [3.141593, 0], 'say' is ignored -< - vim.dict([arg]) Returns an empty dictionary or, if "arg" is a - Lua table, returns a dict d such that d[k] = - arg[k] for all string keys k in "arg" (see - |Dictionary|). Number keys are converted to - strings. Keys that are not strings are not - used to initialize the dictionary. See also - |lua-eval| for conversion rules. Example: > - :lua t = {math.pi, false, say = 'hi'} - :echo luaeval('vim.dict(t)') - :" {'say': 'hi'}, numeric keys ignored -< - vim.funcref({name}) Returns a Funcref to function {name} (see - |Funcref|). It is equivalent to Vim's - "function". NOT IMPLEMENTED YET + vim.list() Returns an empty list (see |List|). + + vim.dict() Returns an empty dictionary (see |Dictionary|). vim.buffer([arg]) If "arg" is a number, returns buffer with number "arg" in the buffer list or, if "arg" @@ -154,9 +131,9 @@ Vim evaluation and command execution, and others. vim.type({arg}) Returns the type of {arg}. It is equivalent to Lua's "type" function, but returns "list", - "dict", "funcref", "buffer", or "window" if - {arg} is a list, dictionary, funcref, buffer, - or window, respectively. Examples: > + "dict", "buffer", or "window" if {arg} is a + list, dictionary, buffer, or window, + respectively. Examples: > :lua l = vim.list() :lua print(type(l), vim.type(l)) :" userdata list @@ -252,40 +229,7 @@ Examples: < ============================================================================== -5. Funcref userdata *lua-funcref* - -Funcref userdata represent funcref variables in Vim. Funcrefs that were -defined with a "dict" attribute need to be obtained as a dictionary key -in order to have "self" properly assigned to the dictionary (see examples -below.) A funcref "f" has the following properties: - -Properties ----------- - o "#f" is the name of the function referenced by "f" - o "f(...)" calls the function referenced by "f" (with arguments) - -Examples: -> - :function I(x) - : return a:x - : endfunction - :let R = function('I') - :lua i1 = vim.funcref('I') - :lua i2 = vim.eval('R') - :lua print(#i1, #i2) -- both 'I' - :lua print(i1, i2, #i2(i1) == #i1(i2)) - :function Mylen() dict - : return len(self.data) - : endfunction - :let mydict = {'data': [0, 1, 2, 3]} - :lua d = vim.eval('mydict'); d.len = vim.funcref('Mylen') - :echo mydict.len() - :lua l = d.len -- assign d as 'self' - :lua print(l()) -< - -============================================================================== -6. Buffer userdata *lua-buffer* +5. Buffer userdata *lua-buffer* Buffer userdata represent vim buffers. A buffer userdata "b" has the following properties and methods: @@ -337,7 +281,7 @@ Examples: < ============================================================================== -7. Window userdata *lua-window* +6. Window userdata *lua-window* Window objects represent vim windows. A window userdata "w" has the following properties and methods: @@ -369,7 +313,7 @@ Examples: < ============================================================================== -8. The luaeval function *lua-luaeval* *lua-eval* +7. The luaeval function *lua-luaeval* *lua-eval* The (dual) equivalent of "vim.eval" for passing Lua values to Vim is "luaeval". "luaeval" takes an expression string and an optional argument and @@ -381,13 +325,7 @@ returns the result of the expression. It is semantically equivalent in Lua to: return chunk(arg) -- return typval end < -Note that "_A" receives the argument to "luaeval". Lua numbers, strings, and -list, dict, and funcref userdata are converted to their Vim respective types, -while Lua booleans are converted to numbers. An error is thrown if conversion -of any of the remaining Lua types, including userdata other than lists, dicts, -and funcrefs, is attempted. - -Examples: > +Note that "_A" receives the argument to "luaeval". Examples: > :echo luaeval('math.pi') :lua a = vim.list():add('newlist') diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 889101b19..09139cdd2 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.4. Last change: 2013 Jul 10 +*if_pyth.txt* For Vim version 7.4. Last change: 2013 May 25 VIM REFERENCE MANUAL by Paul Moore @@ -23,7 +23,6 @@ The Python 2.x interface is available only when Vim was compiled with the |+python| feature. The Python 3 interface is available only when Vim was compiled with the |+python3| feature. -Both can be available at the same time, but read |python-2-and-3|. ============================================================================== 1. Commands *python-commands* @@ -175,24 +174,7 @@ vim.eval(str) *python-eval* vim.bindeval(str) *python-bindeval* Like |python-eval|, but returns special objects described in |python-bindeval-objects|. These python objects let you modify (|List| - or |Dictionary|) or call (|Funcref|) vim objects. - -vim.strwidth(str) *python-strwidth* - Like |strwidth()|: returns number of display cells str occupies, tab - is counted as one cell. - -vim.foreach_rtp(callable) *python-foreach_rtp* - Call the given callable for each path in 'runtimepath' until either - callable returns something but None, the exception is raised or there - are no longer paths. If stopped in case callable returned non-None, - vim.foreach_rtp function returns the value returned by callable. - -vim.chdir(*args, **kwargs) *python-chdir* -vim.fchdir(*args, **kwargs) *python-fchdir* - Run os.chdir or os.fchdir, then all appropriate vim stuff. - Note: you should not use these functions directly, use os.chdir and - os.fchdir instead. Behavior of vim.fchdir is undefined in case - os.fchdir does not exist. + or |Dictionary|) or call (|Funcref|) vim objecs. Error object of the "vim" module @@ -226,7 +208,7 @@ vim.windows *python-windows* :py w in vim.windows # Membership test :py n = len(vim.windows) # Number of elements :py for w in vim.windows: # Sequential access -< Note: vim.windows object always accesses current tab page. +< Note: vim.windows object always accesses current tab page,. |python-tabpage|.windows objects are bound to parent |python-tabpage| object and always use windows from that tab page (or throw vim.error in case tab page was deleted). You can keep a reference to both @@ -307,88 +289,6 @@ Output from Python *python-output* supported, and may cause the program to crash. This should probably be fixed. - *python2-directory* *python3-directory* *pythonx-directory* -Python 'runtimepath' handling *python-special-path* - -In python vim.VIM_SPECIAL_PATH special directory is used as a replacement for -the list of paths found in 'runtimepath': with this directory in sys.path and -vim.path_hooks in sys.path_hooks python will try to load module from -{rtp}/python2 (or python3) and {rtp}/pythonx (for both python versions) for -each {rtp} found in 'runtimepath'. - -Implementation is similar to the following, but written in C: > - - from imp import find_module, load_module - import vim - import sys - - class VimModuleLoader(object): - def __init__(self, module): - self.module = module - - def load_module(self, fullname, path=None): - return self.module - - def _find_module(fullname, oldtail, path): - idx = oldtail.find('.') - if idx > 0: - name = oldtail[:idx] - tail = oldtail[idx+1:] - fmr = find_module(name, path) - module = load_module(fullname[:-len(oldtail)] + name, *fmr) - return _find_module(fullname, tail, module.__path__) - else: - fmr = find_module(fullname, path) - return load_module(fullname, *fmr) - - # It uses vim module itself in place of VimPathFinder class: it does not - # matter for python which object has find_module function attached to as - # an attribute. - class VimPathFinder(object): - @classmethod - def find_module(cls, fullname, path=None): - try: - return VimModuleLoader(_find_module(fullname, fullname, path or vim._get_paths())) - except ImportError: - return None - - @classmethod - def load_module(cls, fullname, path=None): - return _find_module(fullname, fullname, path or vim._get_paths()) - - def hook(path): - if path == vim.VIM_SPECIAL_PATH: - return VimPathFinder - else: - raise ImportError - - sys.path_hooks.append(hook) - -vim.VIM_SPECIAL_PATH *python-VIM_SPECIAL_PATH* - String constant used in conjunction with vim path hook. If path hook - installed by vim is requested to handle anything but path equal to - vim.VIM_SPECIAL_PATH constant it raises ImportError. In the only other - case it uses special loader. - - Note: you must not use value of this constant directly, always use - vim.VIM_SPECIAL_PATH object. - -vim.find_module(...) *python-find_module* -vim.path_hook(path) *python-path_hook* - Methods or objects used to implement path loading as described above. - You should not be using any of these directly except for vim.path_hook - in case you need to do something with sys.meta_path. It is not - guaranteed that any of the objects will exist in the future vim - versions. - -vim._get_paths *python-_get_paths* - Methods returning a list of paths which will be searched for by path - hook. You should not rely on this method being present in future - versions, but can use it for debugging. - - It returns a list of {rtp}/python2 (or {rtp}/python3) and - {rtp}/pythonx directories for each {rtp} in 'runtimepath'. - ============================================================================== 3. Buffer objects *python-buffer* @@ -429,8 +329,6 @@ The buffer object attributes are: |BufFilePost| autocommands are launched. b.number Buffer number. Can be used as |python-buffers| key. Read-only. - b.valid True or False. Buffer object becomes invalid when - corresponding buffer is wiped out. The buffer object methods are: b.append(str) Append a line to the buffer @@ -535,8 +433,6 @@ Window attributes are: row, col (read-only) On-screen window position in display cells. First position is zero. tabpage (read-only) Window tab page. - valid (read-write) True or False. Window object becomes invalid - when corresponding window is closed. The height attribute is writable only if the screen is split horizontally. The width attribute is writable only if the screen is split vertically. @@ -560,8 +456,6 @@ Tab page attributes are: windows Like |python-windows|, but for current tab page. vars The tab page |t:| variables. window Current tabpage window. - valid True or False. Tab page object becomes invalid when - corresponding tab page is closed. TabPage object type is available using "TabPage" attribute of vim module. @@ -600,9 +494,10 @@ vim.Dictionary object *python-Dictionary* Remove specified key from dictionary and return corresponding value. If key is not found and default is given returns the default, otherwise raises KeyError. - popitem() - Remove random key from dictionary and return (key, value) - pair. + popitem(key) + Remove specified key from dictionary and return a pair + with it and the corresponding value. Returned key is a new + object. has_key(key) Check whether dictionary contains specified key, similar to `key in dict`. @@ -712,7 +607,7 @@ Vim can be built in four ways (:version output): 3. Python 3 support only (-python, +python3 or +python3/dyn) 4. Python 2 and 3 support (+python/dyn, +python3/dyn) -Some more details on the special case 4: *python-2-and-3* +Some more details on the special case 4: When Python 2 and Python 3 are both supported they must be loaded dynamically. @@ -741,11 +636,6 @@ To work around such problems there are these options: 3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This may crash Vim though. - *E880* -Raising SystemExit exception in python isn't endorsed way to quit vim, use: > - :py vim.command("qall!") -< - *has-python* You can test what Python version is available with: > if has('python') diff --git a/en/indent.txt b/en/indent.txt index 1f7754b58..6d18b50b8 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.4. Last change: 2013 Nov 05 +*indent.txt* For Vim version 7.4. Last change: 2013 May 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -545,12 +545,10 @@ The examples below assume a 'shiftwidth' of 4. (default 70 lines). *cino-#* - #N When N is non-zero recognize shell/Perl comments starting with - '#', do not recognize preprocessor lines; allow right-shifting - lines that start with "#". - When N is zero (default): don't recognize '#' comments, do - recognize preprocessor lines; right-shifting lines that start - with "#" does not work. + #N When N is non-zero recognize shell/Perl comments, starting with + '#'. Default N is zero: don't recognize '#' comments. Note + that lines starting with # will still be seen as preprocessor + lines. The defaults, spelled out in full, are: @@ -558,7 +556,7 @@ The defaults, spelled out in full, are: c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 Vim puts a line in column 1 if: -- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#0'. +- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. - It starts with a label (a keyword followed by ':', other than "case" and "default") and 'cinoptions' does not contain an 'L' entry with a positive value. @@ -583,8 +581,8 @@ CLOJURE *ft-clojure-indent* *clojure-indent* Clojure indentation differs somewhat from traditional Lisps, due in part to the use of square and curly brackets, and otherwise by community convention. -These conventions are not universally followed, so the Clojure indent script -offers a few configurable options, listed below. +These conventions are not always universally followed, so the Clojure indent +script offers a few configurable options, listed below. If the current vim does not include searchpairpos(), the indent script falls back to normal 'lisp' indenting, and the following options are ignored. @@ -731,50 +729,6 @@ buffer-local variable as follows > let b:fortran_indent_less=1 -HTML *ft-html-indent* *html-indent* *html-indenting* - -This is about variables you can set in your vimrc to customize HTML indenting. - -You can set the indent for the first line after <script> and <style> -"blocktags" (default "zero"): > - - :let g:html_indent_script1 = "inc" - :let g:html_indent_style1 = "inc" -< - VALUE MEANING ~ - "zero" zero indent - "auto" auto indent (same indent as the blocktag) - "inc" auto indent + one indent step - -Many tags increase the indent for what follows per default (see "Add Indent -Tags" in the script). You can add further tags with: > - - :let g:html_indent_inctags = "html,body,head,tbody" - -You can also remove such tags with: > - - :let g:html_indent_autotags = "th,td,tr,tfoot,thead" - -Default value is empty for both variables. Note: the initial "inctags" are -only defined once per Vim session. - -User variables are only read when the script is sourced. To enable your -changes during a session, without reloading the HTML file, you can manually -do: > - - :call HtmlIndent_CheckUserSettings() - -Detail: - Calculation of indent inside "blocktags" with "alien" content: - BLOCKTAG INDENT EXPR WHEN APPLICABLE ~ - <script> : {customizable} if first line of block - : cindent(v:lnum) if attributes empty or contain "java" - : -1 else (vbscript, tcl, ...) - <style> : {customizable} if first line of block - : GetCSSIndent() else - <!-- --> : -1 - - PHP *ft-php-indent* *php-indent* *php-indenting* NOTE: PHP files will be indented correctly only if PHP |syntax| is active. diff --git a/en/index.txt b/en/index.txt index 68dceb943..6def73e1d 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1191,12 +1191,9 @@ tag command action ~ |:digraphs| :dig[raphs] show or enter digraphs |:display| :di[splay] display registers |:djump| :dj[ump] jump to #define -|:dl| :dl short for |:delete| with the 'l' flag -|:dl| :del[ete]l short for |:delete| with the 'l' flag -|:dlist| :dli[st] list #defines +|:dlist| :dl[ist] list #defines |:doautocmd| :do[autocmd] apply autocommands to current buffer |:doautoall| :doautoa[ll] apply autocommands for all loaded buffers -|:dp| :d[elete]p short for |:delete| with the 'p' flag |:drop| :dr[op] jump to window editing file or edit file in current window |:dsearch| :ds[earch] list one #define diff --git a/en/insert.txt b/en/insert.txt index 9b9445ae6..615849ab2 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.4. Last change: 2013 Jul 12 +*insert.txt* For Vim version 7.4. Last change: 2013 Apr 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -136,8 +136,6 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* too. When the result is a Float it's automatically converted to a String. - When append() or setline() is invoked the undo - sequence will be broken. See |registers| about registers. {not in Vi} CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* @@ -1359,7 +1357,7 @@ Complete: Completion works in separate JavaScript files (&ft==javascript), inside of <script> tag of (X)HTML and in values of event attributes (including scanning -of external files). +of external files. DOM compatibility @@ -1470,9 +1468,9 @@ knows how to color highlight. It can be used for any filetype and provides a minimal language-sensitive completion. To enable syntax code completion you can run: > - setlocal omnifunc=syntaxcomplete#Complete + setlocal omnifunc=syntaxcomplete#Complete -You can automate this by placing the following in your |.vimrc| (after any +You can automate this by placing the following in your vimrc (after any ":filetype" command): > if has("autocmd") && exists("+omnifunc") autocmd Filetype * @@ -1489,7 +1487,7 @@ customize which syntax groups to include or exclude from the list. Let's have a look at the PHP filetype to see how this works. If you edit a file called, index.php, run the following command: > - syntax list + :syntax list The first thing you will notice is that there are many different syntax groups. The PHP language can include elements from different languages like HTML, @@ -1498,37 +1496,24 @@ that begin with the filetype, "php", in this case. For example these syntax groups are included by default with the PHP: phpEnvVar, phpIntVar, phpFunctions. -If you wish non-filetype syntax items to also be included, you can use a -regular expression syntax (added in version 13.0 of autoload\syntaxcomplete.vim) -to add items. Looking at the output from ":syntax list" while editing a PHP file -I can see some of these entries: > - htmlArg,htmlTag,htmlTagName,javaScriptStatement,javaScriptGlobalObjects - -To pick up any JavaScript and HTML keyword syntax groups while editing a PHP -file, you can use 3 different regexs, one for each language. Or you can -simply restrict the include groups to a particular value, without using -a regex string: > - let g:omni_syntax_group_include_php = 'php\w\+,javaScript\w\+,html\w\+' - let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' -< -The basic form of this variable is: > - let g:omni_syntax_group_include_{filetype} = 'regex,comma,separated' - The PHP language has an enormous number of items which it knows how to syntax -highlight. These items will be available within the omni completion list. +highlight. This means these items will be available within the omni +completion list. Some people may find this list unwieldy or are only +interested in certain items. -Some people may find this list unwieldy or are only interested in certain -items. There are two ways to prune this list (if necessary). If you find -certain syntax groups you do not wish displayed you can use two different -methods to identify these groups. The first specifically lists the syntax -groups by name. The second uses a regular expression to identify both -syntax groups. Simply add one the following to your vimrc: > - let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' - let g:omni_syntax_group_exclude_php = 'php\w*Constant' +There are two ways to prune this list (if necessary). If you find certain +syntax groups you do not wish displayed you can add the following to your +vimrc: > + let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' Add as many syntax groups to this list by comma separating them. The basic form of this variable is: > - let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated' + let g:omni_syntax_group_exclude_{filetype} = 'comma,separated,list' + +For completeness the opposite is also true. Creating this variable in your +vimrc will only include the items in the phpFunctions and phpMethods syntax +groups: > + let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' You can create as many of these variables as you need, varying only the filetype at the end of the variable name. @@ -1569,9 +1554,6 @@ To retrieve only the syntax items for the sqlOperator syntax group: > To retrieve all syntax items for both the sqlOperator and sqlType groups: > echo OmniSyntaxList( ['sqlOperator', 'sqlType'] ) -A regular expression can also be used: > - echo OmniSyntaxList( ['sql\w\+'] ) - From within a plugin, you would typically assign the output to a List: > let myKeywords = [] let myKeywords = OmniSyntaxList( ['sqlKeyword'] ) diff --git a/en/map.txt b/en/map.txt index 4ae902c57..30e22dbbe 100644 --- a/en/map.txt +++ b/en/map.txt @@ -169,9 +169,7 @@ be effective in the current buffer only. Example: > :map <buffer> ,w /[.,;]<CR> Then you can map ",w" to something else in another buffer: > :map <buffer> ,w /[#&!]<CR> -The local buffer mappings are used before the global ones. See <nowait> below -to make a short local mapping not taking effect when a longer global one -exists. +The local buffer mappings are used before the global ones. The "<buffer>" argument can also be used to clear mappings: > :unmap <buffer> ,w :mapclear <buffer> @@ -179,14 +177,6 @@ Local mappings are also cleared when a buffer is deleted, but not when it is unloaded. Just like local option values. Also see |map-precedence|. - *:map-<nowait>* *:map-nowait* -When defining a buffer-local mapping for "," there may be a global mapping -that starts with ",". Then you need to type another character for Vim to know -whether to use the "," mapping or the longer one. To avoid this add the -<nowait> argument. Then the mapping will be used when it matches, Vim does -not wait for more characters to be typed. However, if the characters were -already type they are used. - *:map-<silent>* *:map-silent* To define a mapping which will not be echoed on the command line, add "<silent>" as the first argument. Example: > @@ -380,12 +370,11 @@ it's just used here for this situation. The simplest way to load a set of related language mappings is by using the 'keymap' option. See |45.5|. In Insert mode and in Command-line mode the mappings can be disabled with -the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. These commands change the value of -the 'iminsert' option. When starting to enter a normal command line (not a -search pattern) the mappings are disabled until a CTRL-^ is typed. The state -last used is remembered for Insert mode and Search patterns separately. The -state for Insert mode is also used when typing a character as an argument to -command like "f" or "t". +the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. When starting to enter a normal +command line (not a search pattern) the mappings are disabled until a CTRL-^ +is typed. The state last used is remembered for Insert mode and Search +patterns separately. The state for Insert mode is also used when typing a +character as an argument to command like "f" or "t". Language mappings will never be applied to already mapped characters. They are only used for typed characters. This assumes that the language mapping was already done when typing the mapping. @@ -666,17 +655,6 @@ option). After that it assumes that the 'q' is to be interpreted as such. If you type slowly, or your system is slow, reset the 'timeout' option. Then you might want to set the 'ttimeout' option. - *map-precedence* -Buffer-local mappings (defined using |:map-<buffer>|) take precedence over -global mappings. When a buffer-local mapping is the same as a global mapping, -Vim will use the buffer-local mapping. In addition, Vim will use a complete -mapping immediately if it was defined with <nowait>, even if a longer mapping -has the same prefix. For example, given the following two mappings: > - :map <buffer> <nowait> \a :echo "Local \a"<CR> - :map \abc :echo "Global \abc"<CR> -When typing \a the buffer-local mapping will be used immediately. Vim will -not wait for more characters to see if the user might be typing \abc. - *map-keys-fails* 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 @@ -1265,7 +1243,6 @@ completion can be enabled: -complete=shellcmd Shell command -complete=sign |:sign| suboptions -complete=syntax syntax file names |'syntax'| - -complete=syntime |:syntime| suboptions -complete=tag tags -complete=tag_listfiles tags, file names are shown when CTRL-D is hit -complete=user user names @@ -1359,8 +1336,6 @@ There are some special cases as well: In the cases of the -count and -register attributes, if the optional argument is supplied, it is removed from the argument list and is available to the replacement text separately. -Note that these arguments can be abbreviated, but that is a deprecated -feature. Use the full name for new scripts. Replacement text diff --git a/en/motion.txt b/en/motion.txt index d40d825c2..550609a51 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.4. Last change: 2013 Jul 17 +*motion.txt* For Vim version 7.4. Last change: 2013 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -236,8 +236,6 @@ g$ or g<End> When lines wrap ('wrap' on): To the last character of the line is not on the screen or when a count is used. Additionally, vertical movements keep the column, instead of going to the end of the line. - When 'virtualedit' is enabled moves to the end of the - screen line. {not in Vi} *bar* @@ -1085,8 +1083,7 @@ only once. When the |:keepjumps| command modifier is used, jumps are not stored in the jumplist. Jumps are also not stored in other cases, e.g., in a |:global| -command. You can explicitly add a jump by setting the ' mark with "m'". Note -that calling setpos() does not do this. +command. You can explicitly add a jump by setting the ' mark. After the CTRL-O command that got you into line 1154 you could give another jump command (e.g., "G"). The jump list would then become: diff --git a/en/options.txt b/en/options.txt index b7b66495e..94378dcd6 100644 --- a/en/options.txt +++ b/en/options.txt @@ -3996,26 +3996,6 @@ A jump table for the options with a short description can be found at |Q_op|. Can be overruled by using "\c" or "\C" in the pattern, see |/ignorecase|. - *'imactivatefunc'* *'imaf'* -'imactivatefunc' 'imaf' string (default "") - global - {not in Vi} - {only available when compiled with |+xim| and - |+GUI_GTK|} - This option specifies a function that will be called to - activate/inactivate Input Method. - - Example: > - function ImActivateFunc(active) - if a:active - ... do something - else - ... do something - endif - " return value is not used - endfunction - set imactivatefunc=ImActivateFunc -< *'imactivatekey'* *'imak'* 'imactivatekey' 'imak' string (default "") global @@ -4112,24 +4092,6 @@ A jump table for the options with a short description can be found at |Q_op|. The value 0 may not work correctly with Athena and Motif with some XIM methods. Use 'imdisable' to disable XIM then. - *'imstatusfunc'* *'imsf'* -'imstatusfunc' 'imsf' string (default "") - global - {not in Vi} - {only available when compiled with |+xim| and - |+GUI_GTK|} - This option specifies a function that is called to obtain the status - of Input Method. It must return a positive number when IME is active. - - Example: > - function ImStatusFunc() - let is_active = ...do something - return is_active ? 1 : 0 - endfunction - set imstatusfunc=ImStatusFunc -< - NOTE: This function is invoked very often. Keep it fast. - *'include'* *'inc'* 'include' 'inc' string (default "^\s*#\s*include") global or local to buffer |global-local| @@ -5173,18 +5135,7 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - *number_relativenumber* - The 'relativenumber' option changes the displayed number to be - relative to the cursor. Together with 'number' there are these - four combinations (cursor in line 3): - - 'nonu' 'nu' 'nonu' 'nu' - 'nornu' 'nornu' 'rnu' 'rnu' - - |apple | 1 apple | 2 apple | 2 apple - |pear | 2 pear | 1 pear | 1 pear - |nobody | 3 nobody | 0 nobody |3 nobody - |there | 4 there | 1 there | 1 there + When setting this option, 'relativenumber' is reset. *'numberwidth'* *'nuw'* 'numberwidth' 'nuw' number (Vim default: 4 Vi default: 8) @@ -5599,10 +5550,7 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - - The number in front of the cursor line also depends on the value of - 'number', see |number_relativenumber| for all combinations of the two - options. + When setting this option, 'number' is reset. *'remap'* *'noremap'* 'remap' boolean (default on) @@ -6757,8 +6705,7 @@ A jump table for the options with a short description can be found at |Q_op|. V N Virtual column number as -{num}. Not displayed if equal to 'c'. p N Percentage through file in lines as in |CTRL-G|. P S Percentage through file of displayed window. This is like the - percentage described for 'ruler'. Always 3 in length, unless - translated. + percentage described for 'ruler'. Always 3 in length. a S Argument list status as in default title. ({current} of {max}) Empty if the argument file count is zero or one. { NF Evaluate expression between '%{' and '}' and substitute result. @@ -7608,9 +7555,8 @@ A jump table for the options with a short description can be found at |Q_op|. < But you can also get Vi compatibility by including the 'u' flag in 'cpoptions', and still be able to use CTRL-R to repeat undo. Also see |undo-two-ways|. - Set to -1 for no undo at all. You might want to do this only for the - current buffer: > - setlocal ul=-1 + Set to a negative number for no undo at all: > + set ul=-1 < This helps when you run out of memory for a single change. Also see |clear-undo|. diff --git a/en/quickfix.txt b/en/quickfix.txt index d6bf938c4..e96025f86 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.4. Last change: 2013 Aug 03 +*quickfix.txt* For Vim version 7.4. Last change: 2013 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -899,8 +899,6 @@ invalid. Special characters in 'errorformat' are comma and backslash. See |efm-entries| for how to deal with them. Note that a literal "%" is matched by "%%", thus it is not escaped with a backslash. -Keep in mind that in the `:make` and `:grep` output all NUL characters are -replaced with SOH (0x01). Note: By default the difference between upper and lowercase is ignored. If you want to match case, add "\C" to the pattern |/\C|. diff --git a/en/quickref.txt b/en/quickref.txt index 90d359775..77d30ecd7 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.4. Last change: 2013 Jun 29 +*quickref.txt* For Vim version 7.4. Last change: 2013 May 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -170,18 +170,18 @@ N is used to indicate an optional count that can be given before the command. ------------------------------------------------------------------------------ *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 +|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[]'"<>.} +|`[| `[ 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 @@ -648,7 +648,7 @@ Short explanation of each option: *option-list* 'completefunc' 'cfu' function to be used for Insert mode completion 'completeopt' 'cot' options for Insert mode completion 'concealcursor' 'cocu' whether concealable text is hidden in cursor line -'conceallevel' 'cole' whether concealable text is shown or hidden +'conceallevel' 'cole' whether concealable text is shown or hidden 'confirm' 'cf' ask what to do about unsaved/read-only files 'conskey' 'consk' get keys directly from console (MS-DOS only) 'copyindent' 'ci' make 'autoindent' use existing indent structure @@ -738,12 +738,10 @@ Short explanation of each option: *option-list* 'iconstring' string to use for the Vim icon text 'ignorecase' 'ic' ignore case in search patterns 'imactivatekey' 'imak' key that activates the X input method -'imactivatefunc' 'imaf' function to enable/disable the X input method 'imcmdline' 'imc' use IM when starting to edit a command line 'imdisable' 'imd' do not use the IM in any mode 'iminsert' 'imi' use :lmap or IM in Insert mode 'imsearch' 'ims' use :lmap or IM when typing a search pattern -'imstatusfunc' 'imsf' function to obtain X input method status 'include' 'inc' pattern to be used to find an include file 'includeexpr' 'inex' expression used to process an include line 'incsearch' 'is' highlight match while typing search pattern @@ -1328,14 +1326,14 @@ Context-sensitive completion on the command-line: |:bdelete| :bdelete[!] [N] unload buffer [N] and delete it from the buffer list - in current window in new window ~ -|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N -|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf -|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf -|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf -|:bfirst| :bfirst :sbfirst to first arg/buf -|:blast| :blast :sblast to last arg/buf -|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf + in current window in new window ~ +|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N +|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf +|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf +|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf +|:bfirst| :bfirst :sbfirst to first arg/buf +|:blast| :blast :sblast to last arg/buf +|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf ------------------------------------------------------------------------------ *Q_sy* Syntax Highlighting diff --git a/en/starting.txt b/en/starting.txt index 47ad05ff9..dd279b8d5 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.4. Last change: 2013 Jul 20 +*starting.txt* For Vim version 7.4. Last change: 2013 May 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -757,25 +757,14 @@ accordingly. Vim proceeds in this order: file, but "exrc" is what Vi always used, "vimrc" is a Vim specific name. Also see |vimrc-intro|. - Places for your personal initializations: - Unix $HOME/.vimrc or $HOME/.vim/vimrc - OS/2 $HOME/.vimrc, $HOME/vimfiles/vimrc - or $VIM/.vimrc (or _vimrc) - MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc - or $VIM/_vimrc - Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc - or $VIM/.vimrc - - The files are searched in the order specified above and only the first - one that is found is read. - - RECOMMENDATION: Put all your Vim configuration stuff in the - $HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it - easy to copy it to another system. + Recommended place for your personal initializations: + Unix $HOME/.vimrc + OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc) + MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc + Amiga s:.vimrc or $VIM/.vimrc If Vim was started with "-u filename", the file "filename" is used. - All following initializations until 4. are skipped. $MYVIMRC is not - set. + All following initializations until 4. are skipped. "vim -u NORC" can be used to skip these initializations without reading a file. "vim -u NONE" also skips loading plugins. |-u| @@ -802,15 +791,12 @@ accordingly. Vim proceeds in this order: - The environment variable VIMINIT (see also |compatible-default|) (*) The value of $VIMINIT is used as an Ex command line. - The user vimrc file(s): - "$HOME/.vimrc" (for Unix and OS/2) (*) - "$HOME/.vim/vimrc" (for Unix and OS/2) (*) - "s:.vimrc" (for Amiga) (*) - "home:.vimrc" (for Amiga) (*) - "home:vimfiles:vimrc" (for Amiga) (*) - "$VIM/.vimrc" (for OS/2 and Amiga) (*) - "$HOME/_vimrc" (for MS-DOS and Win32) (*) - "$HOME/vimfiles/vimrc" (for MS-DOS and Win32) (*) - "$VIM/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/.vimrc" (for Unix and OS/2) (*) + "s:.vimrc" (for Amiga) (*) + "home:.vimrc" (for Amiga) (*) + "$VIM/.vimrc" (for OS/2 and Amiga) (*) + "$HOME/_vimrc" (for MS-DOS and Win32) (*) + "$VIM/_vimrc" (for MS-DOS and Win32) (*) Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist, "_vimrc" is also tried, in case an MS-DOS compatible file system is used. For MS-DOS and Win32 ".vimrc" is checked diff --git a/en/syntax.txt b/en/syntax.txt index 3c0c56899..db0e075ab 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -379,12 +379,12 @@ settings, depending on which syntax is active. Example: > 2HTML *2html.vim* *convert-to-HTML* This is not a syntax file itself, but a script that converts the current -window into HTML. Vim opens a new window in which it builds the HTML file. +window into HTML. Vim opens a new window in which it builds the HTML file. -After you save the resulting file, you can view it with any browser. The -colors should be exactly the same as you see them in Vim. With -|g:html_line_ids| you can jump to specific lines by adding (for example) #L123 -or #123 to the end of the URL in your browser's address bar. And with +After you save the resulting file, you can view it with any browser. The +colors should be exactly the same as you see them in Vim. You can jump to +specific lines by adding (for example) #L123 or #123 to the end of the URL in +your browser's address bar (#123 only with javascript support). And with |g:html_dynamic_folds| enabled, you can show or hide the text that is folded in Vim. @@ -425,14 +425,15 @@ and last line to be converted. Example, using the last set Visual area: > |g:html_end_line| to the start and end of the range, respectively. Default range is the entire buffer. - If the current window is part of a |diff|, unless - |g:html_diff_one_file| is set, :TOhtml will convert - all windows which are part of the diff in the current - tab and place them side-by-side in a <table> element - in the generated HTML. With |g:html_line_ids| you can - jump to lines in specific windows with (for example) - #W1L42 for line 42 in the first diffed window, or - #W3L87 for line 87 in the third. + If the current window is part of a |diff|, unless + |g:html_diff_one_file| is set, :TOhtml will convert + all windows which are part of the diff in the current + tab and place them side-by-side in a <table> element + in the generated HTML. When this happens you can jump + to lines in specific windows with (for example) #W1L42 + for line 42 in the first diffed window, or #W3L87 for + line 87 in the third. Omitting the window ID will + default to the first window if javascript is enabled. Examples: > @@ -442,9 +443,9 @@ and last line to be converted. Example, using the last set Visual area: > < *g:html_diff_one_file* Default: 0. -When 0, and using |:TOhtml| all windows involved in a |diff| in the current tab -page are converted to HTML and placed side-by-side in a <table> element. When -1, only the current buffer is converted. +When 0, all windows involved in a |diff| in the current tab page are converted +to HTML and placed side-by-side in a <table> element. +When 1, only the current buffer is converted. Example: > let g:html_diff_one_file = 1 @@ -493,23 +494,6 @@ Force to omit the line numbers: > :let g:html_number_lines = 0 Go back to the default to use 'number' by deleting the variable: > :unlet g:html_number_lines -< - *g:html_line_ids* -Default: 1 if |g:html_number_lines| is set, 0 otherwise. -When 1, adds an HTML id attribute to each line number, or to an empty <span> -inserted for that purpose if no line numbers are shown. This ID attribute -takes the form of L123 for single-buffer HTML pages, or W2L123 for diff-view -pages, and is used to jump to a specific line (in a specific window of a diff -view). Javascript is inserted to open any closed dynamic folds -(|g:html_dynamic_folds|) containing the specificed line before jumping. The -javascript also allows omitting the window ID in the url, and the leading L. -For example: > - - page.html#L123 jumps to line 123 in a single-buffer file - page.html#123 does the same - - diff.html#W1L42 jumps to line 42 in the first window in a diff - diff.html#42 does the same < *g:html_use_css* Default: 1. @@ -619,25 +603,6 @@ they will not be openable without a foldcolumn. > :let g:html_hover_unfold = 1 < - *g:html_id_expr* -Default: "" -Dynamic folding and jumping to line IDs rely on unique IDs within the document -to work. If generated HTML is copied into a larger document, these IDs are no -longer guaranteed to be unique. Set g:html_id_expr to an expression Vim can -evaluate to get a unique string to append to each ID used in a given document, -so that the full IDs will be unique even when combined with other content in a -larger HTML document. Example, to append _ and the buffer number to each ID: > - - :let g:html_id_expr = '"_".bufnr("%")' -< -To append a string "_mystring" to the end of each ID: > - - :let g:html_id_expr = '"_mystring"' -< -Note, when converting a diff view to HTML, the expression will only be -evaluated for the first window in the diff, and the result used for all the -windows. - *TOhtml-wrap-text* *g:html_pre_wrap* Default: current 'wrap' setting. When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does @@ -1353,8 +1318,8 @@ FORTRAN *fortran.vim* *ft-fortran-syntax* Default highlighting and dialect ~ Highlighting appropriate for Fortran 2008 is used by default. This choice -should be appropriate for most users most of the time because Fortran 2008 is -almost a superset of previous versions (Fortran 2003, 95, 90, and 77). +should be appropriate for most users most of the time because Fortran 2008 is +almost a superset of previous versions (Fortran 2003, 95, 90, and 77). Fortran source code form ~ Fortran code can be in either fixed or free source form. Note that the @@ -1445,7 +1410,7 @@ items. If you use F, the advantage of setting the dialect appropriately is that other legacy features excluded from F will be highlighted as todo items and -that free source form will be assumed. +that free source form will be assumed. The dialect can be selected in various ways. If all your fortran files use the same dialect, set the global variable fortran_dialect in your .vimrc prior @@ -1479,13 +1444,13 @@ Fortran comment of the form > For previous versions of the syntax, you may have set fortran_dialect to the now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be silently handled as "f08". Users of "elf" may wish to experiment with "F" -instead. +instead. The syntax/fortran.vim script contains embedded comments that tell you how to comment and/or uncomment some lines to (a) activate recognition of some non-standard, vendor-supplied intrinsics and (b) to prevent features deleted or declared obsolescent in the 2008 standard from being highlighted as todo -items. +items. Limitations ~ Parenthesis checking does not catch too few closing parentheses. Hollerith @@ -2232,11 +2197,9 @@ PERL *perl.vim* *ft-perl-syntax* There are a number of possible options to the perl syntax highlighting. -Inline POD highlighting is now turned on by default. If you don't wish -to have the added complexity of highlighting POD embedded within Perl -files, you may set the 'perl_include_pod' option to 0: > +If you use POD files or POD segments, you might: > - :let perl_include_pod = 0 + :let perl_include_pod = 1 The reduce the complexity of parsing (and increase performance) you can switch off two elements in the parsing of variable names and contents. > @@ -2289,20 +2252,13 @@ If you want to fold blocks in if statements, etc. as well set the following: > :let perl_fold_blocks = 1 -Subroutines are folded by default if 'perl_fold' is set. If you do not want -this, you can set 'perl_nofold_subs': > +To avoid folding packages or subs when perl_fold is let, let the appropriate +variable(s): > - :let perl_nofold_subs = 1 + :unlet perl_nofold_packages + :unlet perl_nofold_subs -Anonymous subroutines are not folded by default; you may enable their folding -via 'perl_fold_anonymous_subs': > - :let perl_fold_anonymous_subs = 1 - -Packages are also folded by default if 'perl_fold' is set. To disable this -behavior, set 'perl_nofold_packages': > - - :let perl_nofold_packages = 1 PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* @@ -2525,7 +2481,7 @@ If you want all possible Python highlighting (the same as setting the preceding last option and unsetting all other ones): > :let python_highlight_all = 1 -Note: only existence of these options matter, not their value. You can replace +Note: only existence of these options matter, not their value. You can replace 1 above with anything. @@ -3112,22 +3068,15 @@ substitution will not be made. *g:tex_isk* *g:tex_stylish* Tex: Controlling iskeyword~ -Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex -keywords don't support the underscore - except when in *.sty files. The -syntax highlighting script handles this with the following logic: - - * If g:tex_stylish exists and is 1 - then the file will be treated as a "sty" file, so the "_" - will be allowed as part of keywords - (irregardless of g:tex_isk) - * Else if the file's suffix is sty, cls, clo, dtx, or ltx, - then the file will be treated as a "sty" file, so the "_" - will be allowed as part of keywords - (irregardless of g:tex_isk) - - * If g:tex_isk exists, then it will be used for the local 'iskeyword' - * Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255 +(La)Tex keywords normally use the characters 0-9,a-z,A-Z,192-255 only +but the "_" is the only one that causes problems. So, by default, +syntax/tex.vim overrides the usual |'iskeyword'| setting (using |:setlocal|) +with one that works for LaTeX. +However, one may override this iskeyword re-setting by setting the +variable, g:tex_isk, in one's .vimrc to whatever one wishes and +it will be used instead. + TF *tf.vim* *ft-tf-syntax* @@ -3156,16 +3105,18 @@ The g:vimsyn_embed option allows users to select what, if any, types of embedded script highlighting they wish to have. > g:vimsyn_embed == 0 : don't embed any scripts - g:vimsyn_embed =~ 'm' : support embedded mzscheme - g:vimsyn_embed =~ 'p' : support embedded perl - g:vimsyn_embed =~ 'P' : support embedded python - g:vimsyn_embed =~ 'r' : support embedded ruby - g:vimsyn_embed =~ 't' : support embedded tcl + g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it) + g:vimsyn_embed =~ 'p' : embed perl (but only if vim supports it) + g:vimsyn_embed =~ 'P' : embed python (but only if vim supports it) + g:vimsyn_embed =~ 'r' : embed ruby (but only if vim supports it) + g:vimsyn_embed =~ 't' : embed tcl (but only if vim supports it) < -By default, g:vimsyn_embed is a string supporting interpreters that your vim -itself supports. Concatenate multiple characters to support multiple types -of embedded interpreters; ie. g:vimsyn_embed= "mp" supports embedded mzscheme -and embedded perl. +By default, g:vimsyn_embed is "mpPr"; ie. syntax/vim.vim will support +highlighting mzscheme, perl, python, and ruby by default. Vim's has("tcl") +test appears to hang vim when tcl is not truly available. Thus, by default, +tcl is not supported for embedding (but those of you who like tcl embedded in +their vim syntax highlighting can simply include it in the g:vimembedscript +option). *g:vimsyn_folding* Some folding is now supported with syntax/vim.vim: > @@ -5163,9 +5114,6 @@ If your syntax causes redrawing to be slow, here are a few hints on making it faster. To see slowness switch on some features that usually interfere, such as 'relativenumber' and |folding|. -Note: this is only available when compiled with the |+profile| feature. -You many need to build Vim with "huge" features. - To find out what patterns are consuming most time, get an overview with this sequence: > :syntime on @@ -5207,9 +5155,9 @@ When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at all positions in the current and previous line. For example, if the item is literal text specify the size of that text (in bytes): -"<\@<=span" Matches "span" in "<span". This tries matching with "<" in +"<\@<=span" Matches "span" in "<span". This tries matching with "<" in many places. -"<\@1<=span" Matches the same, but only tries one byte before "span". +"<\@1<=span" Matches the same, but only tries one byte before "span". vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/en/visual.txt b/en/visual.txt index 969317c2b..cabf5f7e9 100644 --- a/en/visual.txt +++ b/en/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 7.4. Last change: 2013 Nov 02 +*visual.txt* For Vim version 7.4. Last change: 2012 Aug 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -75,11 +75,7 @@ position. *V* *linewise-visual* [count]V Start Visual mode linewise. - With [count] select the same number of lines as used - for the last Visual operation, but at the current - cursor position, multiplied by [count]. When there - was no previous Visual operation [count] lines are - selected. + With [count] select that many lines. *CTRL-V* *blockwise-visual* [count]CTRL-V Start Visual mode blockwise. Note: Under Windows From c1ed8a9180b54c076bbf6e5bd5473a4e374c9d21 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 1 Dec 2013 11:20:48 +0900 Subject: [PATCH 478/783] Translate spell.jax --- doc/spell.jax | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index 35e0c4463..66eacc4f1 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -200,11 +200,11 @@ z= カーソルの下や後の単語に対して正しい綴りの単語を提 オプション 'spellsuggest' は候補のリストがどのように生成、ソートされるかに影響 する。|'spellsuggest'| を参照せよ。 -オプション 'spellcapcheck' は文の最初の単語が大文字で始まるかをチェックするのに -用いる。これはファイルの最初の単語には働かない。When there is a line break -right after a sentence the highlighting of the next line may be postponed. -Use |CTRL-L| when needed. Also see |set-spc-auto| for how it can be set -automatically when 'spelllang' is set. +オプション 'spellcapcheck' は文の最初の単語が大文字で始まるかをチェックするの +に用いる。これはファイルの最初の単語には働かない。文の直後に改行があるとき、次 +の行のハイライティングが後回しにされるかもしれない。必要であれば |CTRL-L| を使 +用せよ。 Also see |set-spc-auto| for how it can be set automatically when +'spelllang' is set. Vim counts the number of times a good word is encountered. This is used to sort the suggestions: words that have been seen before get a small bonus, @@ -261,7 +261,7 @@ counting files specified by their .spl name). *spell-russian* 特有の例外: ロシア語ではこれらの特別な地域が使われる: - ru all Russian words accepted + ru 全てのロシア語単語を許容する ru_ru "IE" letter spelling ru_yo "YO" letter spelling @@ -290,7 +290,7 @@ Vim は 'runtimepath' のディレクトリの中の "spell" という名前の LL 言語名 EEE 'encoding' の値 -The value for "LL" comes from 'spelllang', but excludes the region name. +"LL" の値は 'spelllang' から来るが、地域名を除く。 例: 'spelllang' LL ~ en_us en @@ -344,9 +344,9 @@ out the non-ASCII characters). Spelling for EBCDIC is currently not supported. -A spell file might not be available in the current 'encoding'. See -|spell-mkspell| about how to create a spell file. Converting a spell file -with "iconv" will NOT work! +現在の 'encoding' でスペルファイルが利用できないかもしれない。スペルファイルの +作成の仕方については |spell-mkspell| を参照せよ。"iconv" でスペルファイルを変 +換するのは機能しないだろう! Note: on VMS ".{enc}.spl" is changed to "_{enc}.spl" to avoid trouble with filenames. From 2cf7797ebb1d9d80685c41cb11ea92a09340e888 Mon Sep 17 00:00:00 2001 From: Hayaki Saito <user@zuse.jp> Date: Tue, 3 Dec 2013 00:08:34 +0900 Subject: [PATCH 479/783] Fix wrong translation and add a supplementation for ttyfast option --- doc/options.jax | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 8e8a7c28e..2e842e1e0 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -7581,11 +7581,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる グローバル {Vi にはない} 高速ターミナル接続を行う。再描画のとき、行挿入/削除コマンドを使う代わ - りに、より多くの文字が画面に送られる。複数のウィンドウが開かれて - いたり、ターミナルが部分スクロールをサポートしていないとき、再描画が滑 + りに、より多くの文字が画面に送られる。複数のウィンドウが開かれており、 + なおかつターミナルが部分スクロールをサポートしていないとき、再描画が滑 らかになる。 - また折り返された行のそれぞれの行末で、文字の extra writing {訳注: 何の - ことだか分からない。どなたかご教授願います} を有効にする。これは xterm + また折り返された行のそれぞれの行末で、文字の extra writing {訳注: 端末 + に行の折り返しを認識させ、複数行にまたがった文字列をコピーする際、余分 + な改行が含まれてしまうことを防ぐテクニック} を有効にする。これは xterm 等のターミナルで、マウスを使ってコピーやペーストをするときに役立つ。 {訳注: "tty" とは、昔のコンピュータに使われていたテレタイプ (TeleTYpe) 端末 (コンソールみたいなもの) から来た言葉である} From 4b62d5586af3a7eb13e622890ba0d3fbf8ecfadf Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 8 Dec 2013 15:08:37 +0900 Subject: [PATCH 480/783] Update some parts of if_pyth --- doc/if_pyth.jax | 3 ++- en/if_pyth.txt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/if_pyth.jax b/doc/if_pyth.jax index a7f110dbf..aa19fb2bb 100644 --- a/doc/if_pyth.jax +++ b/doc/if_pyth.jax @@ -23,6 +23,7 @@ Python 2.x インターフェイスは Vim が |+python| 機能付きでコン のみ利用できます。 Python 3 インターフェイスは Vim が |+python3| 機能付きでコンパイルされたときの み利用できます。 +両方を同時に利用することはできますが、|python-2-and-3| をお読みください。 ============================================================================== 1. コマンド *python-commands* @@ -600,7 +601,7 @@ Vim のビルドは 4 種類あります (:version の出力): 3. Python 3 サポートのみ (-python, +python3 or +python3/dyn) 4. Python 2 と 3 のサポート (+python/dyn, +python3/dyn) -特殊ケース 4 に付いてもう少し詳細に説明します: +特殊ケース 4 に付いてもう少し詳細に説明します: *python-2-and-3* Python 2 と Python 3 をサポートするにはそれらを動的ロードする必要があります。 diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 09139cdd2..213b4c861 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -23,6 +23,7 @@ The Python 2.x interface is available only when Vim was compiled with the |+python| feature. The Python 3 interface is available only when Vim was compiled with the |+python3| feature. +Both can be available at the same time, but read |python-2-and-3|. ============================================================================== 1. Commands *python-commands* @@ -607,7 +608,7 @@ Vim can be built in four ways (:version output): 3. Python 3 support only (-python, +python3 or +python3/dyn) 4. Python 2 and 3 support (+python/dyn, +python3/dyn) -Some more details on the special case 4: +Some more details on the special case 4: *python-2-and-3* When Python 2 and Python 3 are both supported they must be loaded dynamically. From ddcf7e926c4ec08e297d318cc7cd67eb18ce71c5 Mon Sep 17 00:00:00 2001 From: Milly <milly.ca@gmail.com> Date: Tue, 10 Dec 2013 17:33:12 +0900 Subject: [PATCH 481/783] s/:stselect/:tselect/ --- doc/tagsrch.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tagsrch.jax b/doc/tagsrch.jax index 6dbc65bf6..b5c36d9b7 100644 --- a/doc/tagsrch.jax +++ b/doc/tagsrch.jax @@ -211,7 +211,7 @@ FuncAの呼び出し部分の上でCTRL-]を使うことによって、mainか "nr" の番号を入力すればよい。 *:sts* *:stselect* -:sts[elect][!] [ident] ":stselect[!] [ident]" を実行し、ウィンドウを分割して +:sts[elect][!] [ident] ":tselect[!] [ident]" を実行し、ウィンドウを分割して 選択されたtagを表示する。{Vi にはない} *g]* From 41af6de4e7922e8ad44e7dc149aeefb4978b6662 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Tue, 10 Dec 2013 23:38:27 +0900 Subject: [PATCH 482/783] Update options.txt --- doc/options.jax | 5 +++-- en/options.txt | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 2e842e1e0..b555bd16c 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -7719,8 +7719,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる < しかしVi互換にするには、オプション 'cpoptions' にフラグ 'u' を追加して もよい。こうするとコマンド CTRL-R でリドゥできる。 |undo-two-ways| も参照。 - アンドゥを無効にするには、次のように負の値にすること。 > - set ul=-1 + アンドゥを無効にするには、-1 にすること。現在のバッファに対してだけ + 無効にするには次のようにする。 > + setlocal ul=-1 < これは 1 回の変更でもメモリを使い果たしそうなときに役立つ。 |clear-undo| も参照。 diff --git a/en/options.txt b/en/options.txt index 94378dcd6..64e7505b8 100644 --- a/en/options.txt +++ b/en/options.txt @@ -7555,8 +7555,9 @@ A jump table for the options with a short description can be found at |Q_op|. < But you can also get Vi compatibility by including the 'u' flag in 'cpoptions', and still be able to use CTRL-R to repeat undo. Also see |undo-two-ways|. - Set to a negative number for no undo at all: > - set ul=-1 + Set to -1 for no undo at all. You might want to do this only for the + current buffer: > + setlocal ul=-1 < This helps when you run out of memory for a single change. Also see |clear-undo|. From 9e3dec875826b579994751373fcaeb594c2e9075 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 14 Dec 2013 21:09:17 +0900 Subject: [PATCH 483/783] Update some files --- doc/autocmd.jax | 3 +++ doc/map.jax | 1 + doc/options.jax | 19 ++++++++++--------- doc/starting.jax | 29 ++++++++++++++++++----------- en/autocmd.txt | 3 +++ en/map.txt | 1 + en/options.txt | 4 ++-- en/starting.txt | 31 +++++++++++++++++++------------ 8 files changed, 57 insertions(+), 34 deletions(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index 84515e4a1..222fad817 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -313,6 +313,9 @@ Vimは以下のイベントを認識する。イベント名が大文字か小 |InsertCharPre| 挿入モードで文字が入力されたとき、その文字が挿入される 前 +|TextChanged| ノーマルモードでテキストが変更された後 +|TextChangedI| 挿入モードでテキストが変更された後 + |ColorScheme| カラースキームを読み込んだ後 |RemoteReply| Vimサーバーからの返答を受け取ったとき diff --git a/doc/map.jax b/doc/map.jax index adbfd8ee5..ffe005668 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -1224,6 +1224,7 @@ script2.vimを実行すると "None" が表示されます。期待した結果 -complete=shellcmd シェルコマンド -complete=sign |:sign| サブオプション -complete=syntax シンタックスファイル名 |'syntax'| + -complete=syntime |:syntime| サブオプション -complete=tag タグ -complete=tag_listfiles CTRL-D を押した時にタグ、ファイル名を表示 -complete=user ユーザー名 diff --git a/doc/options.jax b/doc/options.jax index b555bd16c..dad79b9de 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1041,17 +1041,18 @@ Note 1番目の形式では、行全体がオプション指定に使われる される。 リネームの方法のときは別の結果になる。バックアップファイルは元のファイ - ルと同じ属性を持ち、新しく書き出されたファイルは、ファイルを編集したユー - ザの所有となる。開いたファイルがハードリンクまたはシンボリックリンクだっ - た場合でも、新しく書き出されたファイルはリンクにならない!だから値が - "auto" のとき、ファイルがリンクならリネームを行わないのである。新しく - 書き出されたファイルの所有者と属するグループは、元のファイルと同じとし - て設定される。しかしシステムがこうすることを許可しないかもしれない。そ - の場合、値が "auto" ならもうファイルのリネームをしようとはしない。 + ルと同じ属性を持ち、新しく書き出されたファイルは、ファイルを編集した + ユーザの所有となる。開いたファイルがハードリンクまたはシンボリックリン + クだった場合でも、新しく書き出されたファイルはリンクにならない!だから + 値が"auto" のとき、ファイルがリンクならリネームを行わないのである。新 + しく書き出されたファイルの所有者と属するグループは、元のファイルと同じ + として設定される。しかしシステムがこうすることを許可しないかもしれな + い。その場合、値が "auto" ならもうファイルのリネームをしようとはしな + い。 *'backupdir'* *'bdir'* 'backupdir' 'bdir' 文字列 (Amigaでの既定値: ".,t:", - MS-DOSとWin32での既定値: ".,c:/tmp,c:/temp" + MS-DOSとWin32での既定値: ".,$TEMP,c:/tmp,c:/temp" Unixでの既定値: ".,~/tmp,~/") グローバル {Vi にはない} @@ -2535,7 +2536,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'directory'* *'dir'* 'directory' 'dir' 文字列 (Amigaでの既定値: ".,t:", - MS-DOSとWin32での既定値: ".,c:\tmp,c:\temp" + MS-DOSとWin32での既定値: ".,$TEMP,c:\tmp,c:\temp" Unixでの既定値: ".,~/tmp,/var/tmp,/tmp") グローバル スワップファイル用ディレクトリの、コンマ区切りのリスト。 diff --git a/doc/starting.jax b/doc/starting.jax index c804f5494..a21d0ff9f 100644 --- a/doc/starting.jax +++ b/doc/starting.jax @@ -738,14 +738,18 @@ Evimでは以下のオプションが標準設定から変更される: は同じタイプのファイルであるが、"exrc" が常にViによって使われるのに対 して、"vimrc" はVim特有のものである。|vimrc-intro|も参照。 - 個人の初期化ファイルの推奨される配置場所: - Unix $HOME/.vimrc - OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc) - MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc - Amiga s:.vimrc or $VIM/.vimrc + 個人の初期化ファイルの配置場所: + Unix $HOME/.vimrc か $HOME/.vim/vimrc + OS/2 $HOME/.vimrc, $HOME/vimfiles/vimrc + か $VIM/.vimrc (または _vimrc) + MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc + か $VIM/_vimrc + Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc + か $VIM/.vimrc Vimが "-u filename" で起動された場合、デフォルトのvimrcの代わりに "filename" が使われる。続く初期化処理の4.までがスキップされる。 + $MYVIMRC は設定されない。 "vim -u NORC" によりファイルを読み込むことなくこれらの初期化を省略する ことができる。"vim -u NONE" を使用するとさらにプラグインも読み込まな い。|-u| @@ -772,12 +776,15 @@ Evimでは以下のオプションが標準設定から変更される: - 環境変数VIMINIT(|compatible-default|も参照) (*) その内容はExコマンドとして解釈される。 - ユーザーvimrcファイル: - "$HOME/.vimrc" (for Unix and OS/2) (*) - "s:.vimrc" (for Amiga) (*) - "home:.vimrc" (for Amiga) (*) - "$VIM/.vimrc" (for OS/2 and Amiga) (*) - "$HOME/_vimrc" (for MS-DOS and Win32) (*) - "$VIM/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/.vimrc" (for Unix and OS/2) (*) + "$HOME/.vim/vimrc" (for Unix and OS/2) (*) + "s:.vimrc" (for Amiga) (*) + "home:.vimrc" (for Amiga) (*) + "home:vimfiles:vimrc" (for Amiga) (*) + "$VIM/.vimrc" (for OS/2 and Amiga) (*) + "$HOME/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/vimfiles/vimrc" (for MS-DOS and Win32) (*) + "$VIM/_vimrc" (for MS-DOS and Win32) (*) Note: Unix, OS/2そしてAmigaでは、".vimrc" がなかった場合には、 MS-DOS互換のファイルシステムを使用することを考え、"_vimrc" も 試みられる。MS-DOSとWin32では "_vimrc" を探したあとで、ロング diff --git a/en/autocmd.txt b/en/autocmd.txt index 524a47957..8762d1106 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -304,6 +304,9 @@ Name triggered by ~ |InsertCharPre| when a character was typed in Insert mode, before inserting it +|TextChanged| after a change was made to the text in Normal mode +|TextChangedI| after a change was made to the text in Insert mode + |ColorScheme| after loading a color scheme |RemoteReply| a reply from a server Vim was received diff --git a/en/map.txt b/en/map.txt index 30e22dbbe..3a650b221 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1243,6 +1243,7 @@ completion can be enabled: -complete=shellcmd Shell command -complete=sign |:sign| suboptions -complete=syntax syntax file names |'syntax'| + -complete=syntime |:syntime| suboptions -complete=tag tags -complete=tag_listfiles tags, file names are shown when CTRL-D is hit -complete=user user names diff --git a/en/options.txt b/en/options.txt index 64e7505b8..2f4769fd7 100644 --- a/en/options.txt +++ b/en/options.txt @@ -987,7 +987,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'backupdir'* *'bdir'* 'backupdir' 'bdir' string (default for Amiga: ".,t:", - for MS-DOS and Win32: ".,c:/tmp,c:/temp" + for MS-DOS and Win32: ".,$TEMP,c:/tmp,c:/temp" for Unix: ".,~/tmp,~/") global {not in Vi} @@ -2477,7 +2477,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'directory'* *'dir'* 'directory' 'dir' string (default for Amiga: ".,t:", - for MS-DOS and Win32: ".,c:\tmp,c:\temp" + for MS-DOS and Win32: ".,$TEMP,c:\tmp,c:\temp" for Unix: ".,~/tmp,/var/tmp,/tmp") global List of directory names for the swap file, separated with commas. diff --git a/en/starting.txt b/en/starting.txt index dd279b8d5..0e4b8362f 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -757,14 +757,18 @@ accordingly. Vim proceeds in this order: file, but "exrc" is what Vi always used, "vimrc" is a Vim specific name. Also see |vimrc-intro|. - Recommended place for your personal initializations: - Unix $HOME/.vimrc - OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc) - MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc - Amiga s:.vimrc or $VIM/.vimrc + Places for your personal initializations: + Unix $HOME/.vimrc or $HOME/.vim/vimrc + OS/2 $HOME/.vimrc, $HOME/vimfiles/vimrc + or $VIM/.vimrc (or _vimrc) + MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc + or $VIM/_vimrc + Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc + or $VIM/.vimrc If Vim was started with "-u filename", the file "filename" is used. - All following initializations until 4. are skipped. + All following initializations until 4. are skipped. $MYVIMRC is not + set. "vim -u NORC" can be used to skip these initializations without reading a file. "vim -u NONE" also skips loading plugins. |-u| @@ -791,12 +795,15 @@ accordingly. Vim proceeds in this order: - The environment variable VIMINIT (see also |compatible-default|) (*) The value of $VIMINIT is used as an Ex command line. - The user vimrc file(s): - "$HOME/.vimrc" (for Unix and OS/2) (*) - "s:.vimrc" (for Amiga) (*) - "home:.vimrc" (for Amiga) (*) - "$VIM/.vimrc" (for OS/2 and Amiga) (*) - "$HOME/_vimrc" (for MS-DOS and Win32) (*) - "$VIM/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/.vimrc" (for Unix and OS/2) (*) + "$HOME/.vim/vimrc" (for Unix and OS/2) (*) + "s:.vimrc" (for Amiga) (*) + "home:.vimrc" (for Amiga) (*) + "home:vimfiles:vimrc" (for Amiga) (*) + "$VIM/.vimrc" (for OS/2 and Amiga) (*) + "$HOME/_vimrc" (for MS-DOS and Win32) (*) + "$HOME/vimfiles/vimrc" (for MS-DOS and Win32) (*) + "$VIM/_vimrc" (for MS-DOS and Win32) (*) Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist, "_vimrc" is also tried, in case an MS-DOS compatible file system is used. For MS-DOS and Win32 ".vimrc" is checked From 4a97f9d23b83223df1dd56d0d09c1e5aa137055d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 14 Dec 2013 21:24:50 +0900 Subject: [PATCH 484/783] =?UTF-8?q?Translate=20consistently=20=E3=83=A6?= =?UTF-8?q?=E3=83=BC=E3=82=B6=20->=20=E3=83=A6=E3=83=BC=E3=82=B6=E3=83=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/options.jax | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index dad79b9de..1ed2e9c9e 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1042,11 +1042,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる リネームの方法のときは別の結果になる。バックアップファイルは元のファイ ルと同じ属性を持ち、新しく書き出されたファイルは、ファイルを編集した - ユーザの所有となる。開いたファイルがハードリンクまたはシンボリックリン - クだった場合でも、新しく書き出されたファイルはリンクにならない!だから - 値が"auto" のとき、ファイルがリンクならリネームを行わないのである。新 - しく書き出されたファイルの所有者と属するグループは、元のファイルと同じ - として設定される。しかしシステムがこうすることを許可しないかもしれな + ユーザーの所有となる。開いたファイルがハードリンクまたはシンボリックリ + ンクだった場合でも、新しく書き出されたファイルはリンクにならない!だか + ら値が"auto" のとき、ファイルがリンクならリネームを行わないのである。 + 新しく書き出されたファイルの所有者と属するグループは、元のファイルと同 + じとして設定される。しかしシステムがこうすることを許可しないかもしれな い。その場合、値が "auto" ならもうファイルのリネームをしようとはしな い。 From c188a3295aac00a10b72c04b2451aacbfafebc9f Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 20 Dec 2013 01:40:41 +0900 Subject: [PATCH 485/783] Update motion.jax --- doc/motion.jax | 2 ++ en/motion.txt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/doc/motion.jax b/doc/motion.jax index 40197be06..286b04ced 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -233,6 +233,8 @@ g$ or g<End> 行が折り返されている場合( 'wrap' オン): スクリー のに移動します。行の最後の文字がスクリーン上にないかカ ウントが使われた場合に "$" とは違う動作になります。 さらに、縦方向への移動は、行末でなく同じ桁になります。 + 'virtualedit' が有効である場合、スクリーン行の末尾に移 + 動します。 {Vi にはありません} *bar* diff --git a/en/motion.txt b/en/motion.txt index 550609a51..caeb068a3 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -236,6 +236,8 @@ g$ or g<End> When lines wrap ('wrap' on): To the last character of the line is not on the screen or when a count is used. Additionally, vertical movements keep the column, instead of going to the end of the line. + When 'virtualedit' is enabled moves to the end of the + screen line. {not in Vi} *bar* From 623c968ee5414dd24b140dac2ef3dfd178bfb722 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 21 Dec 2013 09:11:10 +0900 Subject: [PATCH 486/783] Translate spell.jax --- doc/spell.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index 66eacc4f1..a2486c6c0 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -203,8 +203,8 @@ z= カーソルの下や後の単語に対して正しい綴りの単語を提 オプション 'spellcapcheck' は文の最初の単語が大文字で始まるかをチェックするの に用いる。これはファイルの最初の単語には働かない。文の直後に改行があるとき、次 の行のハイライティングが後回しにされるかもしれない。必要であれば |CTRL-L| を使 -用せよ。 Also see |set-spc-auto| for how it can be set automatically when -'spelllang' is set. +用せよ。また、'spelllang' が設定される時にどのように自動で設定されるのかについ +ては |set-spc-auto| を参照せよ。 Vim counts the number of times a good word is encountered. This is used to sort the suggestions: words that have been seen before get a small bonus, From 59776ec00a5c17558343aefa626803cbc55c767d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 9 Jan 2014 18:32:42 +0900 Subject: [PATCH 487/783] Improve translation --- doc/spell.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/spell.jax b/doc/spell.jax index a2486c6c0..0f5dbafd1 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -439,7 +439,7 @@ VIM スクリプト spellbadword() カーソル下の間違ったつづりの単語を見つける spellsuggest() 正しいつづりの候補を得る - soundfold() ある単語に似ているものを得る + soundfold() 同音(sound-a-like)の単語を得る 'spellcapcheck' の自動設定 *set-spc-auto* From 5c9d577c2aae940f55938f134c44fa6fb42c644e Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 14 Jan 2014 23:08:26 +0900 Subject: [PATCH 488/783] fix translation Reported at http://toro.2ch.net/test/read.cgi/unix/1365071542/487 . --- doc/filetype.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/filetype.jax b/doc/filetype.jax index c1dabc951..9c5b66f57 100644 --- a/doc/filetype.jax +++ b/doc/filetype.jax @@ -124,7 +124,7 @@ NOTE: Vi互換とは全てのオプションがグローバルであることを filetype detection:ON plugin:ON indent:OFF ファイル形式は構文強調にも利用される。":syntax on" コマンドが使用されると、ファ -イル形式検出もインストールされる。":filetype on" の後に ":syntax on" を実行す +イル形式検出もインストールされる。":syntax on" の後に ":filetype on" を実行す る必要はない。 特定のファイル形式を無効にするには、自分のファイル形式ファイルに1行追加する。 From f4e81bf3b18cc476cb3981f9267c93c03170e895 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 20 Jan 2014 21:14:42 +0900 Subject: [PATCH 489/783] Update eval.jax --- doc/eval.jax | 28 ++++++++++++++-------------- en/eval.txt | 6 +++--- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 7e289a761..b7830d522 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -3078,23 +3078,23 @@ getbufvar({expr}, {varname} [, {def}]) *getbufvar()* < getchar([expr]) *getchar()* ユーザーまたは入力ストリームから1文字を取得する。 - [expr]が省略されたときは1文字を取得できるまで待つ。 - [expr]が0のときは1文字を取得できる場合のみ取得する。取得できな - ければ0を返す。 - [expr]が1のときは1文字を取得できるか判定し、実際には取得しない。 - 取得できないときは0を返す。 - - {expr}が省略されたときや{expr}が0のときは、文字全体または特殊 - キーを返す。それが8ビット文字なら戻り値は数値である。これを文 - 字列に戻すにはnr2char()を使う。8ビット文字でないならばエンコー - ドして文字列にして返す。 + [expr] が省略されたときは1文字を取得できるまで待つ。 + [expr] が0のときは1文字を取得できる場合のみ取得する。取得でき + なければ0を返す。 + [expr] が1のときは1文字を取得できるか判定し、実際には取得しな + い。取得できないときは0を返す。 + + [expr] が省略されたときや [expr] が0のときは、文字全体または特 + 殊キーを返す。それが8ビット文字なら戻り値は数値である。これを + 文字列に戻すにはnr2char()を使う。8ビット文字でないならばエン + コードして文字列にして返す。 特殊キーとは0x80(10進数で128)で始まるバイト列である。これは 文字列 "\<Key>" と同じ値である(例: "\<Left>")。戻り値は文字列 であり、修飾キー(shift, control, alt)は含まれない。 - {expr}が1のときは最初のバイトだけを返す。1バイト文字の場合、こ - れはその文字そのものを表す数値である。これを文字列に変換するに - はnr2char()を使う。 + [expr] が1のときは最初のバイトだけを返す。1バイト文字の場合、 + これはその文字そのものを表す数値である。これを文字列に変換する + にはnr2char()を使う。 修飾キーを取得するには getcharmod() を使う。 @@ -3329,7 +3329,7 @@ getregtype([{regname}]) *getregtype()* "v" 文字単位|characterwise|の場合 "V" 行単位|linewise|の場合 "<CTRL-V>{width}" 矩形|blockwise-visual|の場合 - 0 空、または未知のレジスタの場合 + "" 空、または未知のレジスタの場合 <CTRL-V>は値0x16の1文字である。 {regname}を指定しないときは|v:register|が使われる。 diff --git a/en/eval.txt b/en/eval.txt index 9e5325edd..86a77035f 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -3172,7 +3172,7 @@ getchar([expr]) *getchar()* If [expr] is 1, only check if a character is available, it is not consumed. Return zero if no character available. - Without {expr} and when {expr} is 0 a whole character or + Without [expr] and when [expr] is 0 a whole character or special key is returned. If it is an 8-bit character, the result is a number. Use nr2char() to convert it to a String. Otherwise a String is returned with the encoded character. @@ -3182,7 +3182,7 @@ getchar([expr]) *getchar()* String when a modifier (shift, control, alt) was used that is not included in the character. - When {expr} is 1 only the first byte is returned. For a + When [expr] is 1 only the first byte is returned. For a one-byte character it is the character itself as a number. Use nr2char() to convert it to a String. @@ -3432,7 +3432,7 @@ getregtype([{regname}]) *getregtype()* "v" for |characterwise| text "V" for |linewise| text "<CTRL-V>{width}" for |blockwise-visual| text - 0 for an empty or unknown register + "" for an empty or unknown register <CTRL-V> is one character with value 0x16. If {regname} is not specified, |v:register| is used. From a426a47e7304e9976ca2cc76dad7d2799e76c214 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Fri, 24 Jan 2014 23:23:47 +0900 Subject: [PATCH 490/783] adjust line breaking --- doc/options.jax | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 1ed2e9c9e..d932b5b63 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -115,14 +115,14 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ 数値オプションに対しては {value} だけその値を減らす。 文字列オプションに対しては {value} を (それが含まれて いたら) 取り除く。 - そのとき {value} が含まれていな - くても、警告やエラーは出ない。オプションがコンマ区切り - のリストであり、取り除くオプションが唯一の値でない限り、 - 間のコンマも削除される。 + そのとき {value} が含まれていなくても、警告やエラーは + 出ない。オプションがコンマ区切りのリストであり、取り除 + くオプションが唯一の値でない限り、間のコンマも削除され + る。 オプションがフラグのリストであるときは、{value} は値の - 中に現れるままに、正確に指定しなければならない。問題 - が起こるのを避けるために、フラグを取り除くときは1個ず - つ指定すること。 + 中に現れるままに、正確に指定しなければならない。問題が + 起こるのを避けるために、フラグを取り除くときは1個ずつ + 指定すること。 上の |:set-args| も参照。 {Vi にはない} From 347bc96346610acae792daaf529c46c9a0129f1a Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 30 Jan 2014 18:53:12 +0900 Subject: [PATCH 491/783] Add tags --- doc/change.jax | 2 +- doc/eval.jax | 6 +++--- doc/indent.jax | 2 +- en/change.txt | 2 +- en/eval.txt | 6 +++--- en/indent.txt | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index 1ed04e679..2f7c725c5 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -785,7 +785,7 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ < 式で置換する *sub-replace-expression* - *sub-replace-\=* + *sub-replace-\=* *:s/\=* 置換文字列が "\=" で始まるとき、それ以降の文字列は式として解釈される。これは再 帰的に機能しない。その式の中での |substitute()| では置換文字列に "\=" を使うこ diff --git a/doc/eval.jax b/doc/eval.jax index b7830d522..84c0e01d3 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6336,7 +6336,7 @@ x11 X11をサポート 引数{arguments}については|function-argument|を参照。 - *a:firstline* *a:lastline* + *:func-range* *a:firstline* *a:lastline* 引数[range]を追加した場合、関数は「範囲」を管理するこ とができる。「範囲」は "a:firstline" と "a:lastline" によって渡される。[range]がなかった場合、 @@ -6345,10 +6345,10 @@ x11 X11をサポート を呼び出すことになる。|function-range-example|を参照。 他の Ex コマンドと同様に、カーソルは選択範囲の最初の行 に移動される。 - + *:func-abort* 引数[abort]を追加すると、関数の実行中にエラーに遭遇し 次第、即関数は中断される。 - + *:func-dict* 引数[dict]を追加すると、この関数は辞書|Dictionary|の要 素を通してしか呼べなくなる。そしてその辞書にローカル変 数 "self" が定義される。|Dictionary-function|を参照。 diff --git a/doc/indent.jax b/doc/indent.jax index b4da64ab3..17bc0919b 100644 --- a/doc/indent.jax +++ b/doc/indent.jax @@ -555,7 +555,7 @@ CTRL-TやCTRL-Dを使用してインデントを変更した後では、Vimは c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 次のような場合にはVimは行頭を1列目に持っていく: -- 'cinkeys' が '#' を含み行が '#' (プリプロセッサ命令)で始まる場合 +- 'cinkeys' が '#0' を含み行が '#' (プリプロセッサ命令)で始まる場合 - 行がラベル ("case" と "default" 以外のキーワードの後に ':' があるもの) で始 まり、'cinoptions' に正数を持った 'L' フラグがない場合。 - インデントの組合わせの結果、その行のインデント量が0以下になった場合。 diff --git a/en/change.txt b/en/change.txt index aaf573285..eceebaf04 100644 --- a/en/change.txt +++ b/en/change.txt @@ -812,7 +812,7 @@ either the first or second pattern in parentheses did not match, so either < Substitute with an expression *sub-replace-expression* - *sub-replace-\=* + *sub-replace-\=* *:s/\=* When the substitute string starts with "\=" the remainder is interpreted as an expression. This does not work recursively: a |substitute()| function inside the expression cannot use "\=" for the substitute string. diff --git a/en/eval.txt b/en/eval.txt index 86a77035f..3ff4019f1 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -6581,7 +6581,7 @@ See |:verbose-cmd| for more information. For the {arguments} see |function-argument|. - *a:firstline* *a:lastline* + *:func-range* *a:firstline* *a:lastline* When the [range] argument is added, the function is expected to take care of a range itself. The range is passed as "a:firstline" and "a:lastline". If [range] @@ -6590,10 +6590,10 @@ See |:verbose-cmd| for more information. of each line. See |function-range-example|. The cursor is still moved to the first line of the range, as is the case with all Ex commands. - + *:func-abort* When the [abort] argument is added, the function will abort as soon as an error is detected. - + *:func-dict* When the [dict] argument is added, the function must be invoked through an entry in a |Dictionary|. The local variable "self" will then be set to the diff --git a/en/indent.txt b/en/indent.txt index 6d18b50b8..e2cb75263 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -556,7 +556,7 @@ The defaults, spelled out in full, are: c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 Vim puts a line in column 1 if: -- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. +- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#0'. - It starts with a label (a keyword followed by ':', other than "case" and "default") and 'cinoptions' does not contain an 'L' entry with a positive value. From c2828e86fdbaa5fb99db1417a851d5fdcabb9599 Mon Sep 17 00:00:00 2001 From: thinca <thinca@gmail.com> Date: Fri, 31 Jan 2014 14:46:31 +0900 Subject: [PATCH 492/783] Fix typo Closes #93 --- doc/quickref.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/quickref.jax b/doc/quickref.jax index 392262e5c..414c2558d 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -680,7 +680,7 @@ 'cursorbind' 'crb' カーソルを移動させたときに他のウィンドウ内でもカー ソルを移動させる 'cursorcolumn' 'cuc' カーソルがある桁を強調表示する -'cursorline' 'cuc' カーソルがある行を強調表示する +'cursorline' 'cul' カーソルがある行を強調表示する 'debug' "msg" と設定すると全てのエラーが表示される 'define' 'def' マクロ定義検索パターン 'delcombine' 'deco' 合成文字の削除時に構成要素を全て消す From 55b4e4f428cba7792dbb371574a04619a4cfd888 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 31 Jan 2014 16:53:56 +0900 Subject: [PATCH 493/783] Improve translation --- doc/eval.jax | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 84c0e01d3..d006e4f61 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5368,12 +5368,13 @@ str2nr( {expr} [, {base}]) *str2nr()* 数値の後のテキストは暗黙に無視される。 strchars({expr}) *strchars()* - 文字列 {expr} 内の文字の数を返す。合成文字は別々にカウントされ - る。 + 結果は数値で、文字列 {expr} 内の文字の数を返す。合成文字は別々 + にカウントされる。 |strlen()|, |strdisplaywidth()|, |strwidth()| も参照。 strdisplaywidth({expr}[, {col}]) *strdisplaywidth()* - 文字列 {expr} のスクリーン上での表示セル幅を返す。 + 結果は数値で、文字列 {expr} のスクリーン上での表示セル幅を返 + す。 {col} が省略されたときはゼロが使われる。{col} には計算を開始す るスクリーン上の列の位置を指定する。これはタブ文字の幅の計算に 影響する。 @@ -5438,7 +5439,7 @@ string({expr}) {expr}を文字列に変換して返す。{expr}が数値、浮 |strtrans()|も参照。 *strlen()* -strlen({expr}) 結果は数値で、文字列{expr}の長さ。 +strlen({expr}) 結果は数値で、文字列{expr}のバイト単位での長さ。 マルチバイト文字の個数を数えるには次のようなことをする(合成文 字は数えない): > @@ -5491,9 +5492,9 @@ strtrans({expr}) 表示する。 strwidth({expr}) *strwidth()* - 文字列 {expr} のスクリーン上での表示セル幅を返す。タブ文字の幅 - は 1 として数えられる (タブ文字の幅も考慮したい場合は - |strdisplaywidth()| を使うこと)。 + 結果は数値で、文字列 {expr} のスクリーン上での表示セル幅を返 + す。タブ文字の幅は 1 として数えられる (タブ文字の幅も考慮した + い場合は|strdisplaywidth()| を使うこと)。 {expr} に幅が曖昧 (Ambiguous) な東アジアの文字が含まれていると きは、文字幅は 'ambiwidth' の設定に依存する。 |strlen()|, |strdisplaywidth()|, |strchars()| も参照。 From 481d9e00b51b0bf6699ff0c1a9616fc05d17c908 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 31 Jan 2014 17:53:47 +0900 Subject: [PATCH 494/783] Add translator's note --- doc/eval.jax | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/eval.jax b/doc/eval.jax index d006e4f61..4417df4be 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5256,6 +5256,8 @@ soundfold({word}) soundfoldingができない場合、{word}がそのまま返される。 この関数はスペリング候補を作るために使われる。Note この方法は とても遅くなる可能性がある。 + {訳注: "sound fold"とは改行のために一単語を途中で分割するルー + ルのことである。} *spellbadword()* spellbadword([{sentence}]) From a100a02f3cc48f9062bdd0cbb017f2da39cd8ea5 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 31 Jan 2014 20:28:33 +0900 Subject: [PATCH 495/783] Update usr_41 --- doc/usr_41.jax | 24 ++++++++++++++++++++++-- en/usr_41.txt | 24 ++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/doc/usr_41.jax b/doc/usr_41.jax index c3a699e27..e6486ac6e 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim バージョン 7.4. Last change: 2013 Feb 20 +*usr_41.txt* For Vim バージョン 7.4. Last change: 2014 Jan 10 VIM USER MANUAL - by Bram Moolenaar @@ -571,13 +571,17 @@ substitute() コマンドの前後にいろいろな処理を入れたりする matchlist() matchstr()と同様だが、部分マッチも返す stridx() 文字列の中で部分文字列が見つかった最初の位置 strridx() 文字列の中で部分文字列が見つかった最後の位置 - strlen() 文字列の長さ + strlen() 文字列のバイト単位での長さ + strchars() 文字列の文字単位での長さ + strwidth() 表示された文字列のサイズ + strdisplaywidth() 表示された文字列のサイズ、タブに関係する substitute() パターンにマッチする文字列を置換 submatch() ":s" と substitute() の中で部分マッチを得る strpart() 文字列の一部分を得る expand() 特殊キーワードを展開する iconv() テキストのエンコーディングを変換する byteidx() 文字列中の文字のバイトインデックス + byteidxcomp() byteidx() と同様だが合成文字を数に入れる repeat() 文字列を複数回繰り返す eval() 文字列を式として評価する @@ -634,6 +638,9 @@ substitute() コマンドの前後にいろいろな処理を入れたりする ceil() 切り上げ floor() 切り下げ trunc() 少数切り捨て + fmod() 除法の余り + exp() 指数 + log() 自然対数 (eを底とする対数) log10() 10 を底とする対数 pow() x の y 乗 sqrt() 平方根 @@ -653,6 +660,7 @@ substitute() コマンドの前後にいろいろな処理を入れたりする invert() ビットごとの否定 or() ビットごとの論理和 xor() ビットごとの排他的論理和 + sha256() SHA-256 ハッシュ 変数: *var-functions* type() 変数の型 @@ -675,11 +683,15 @@ substitute() コマンドの前後にいろいろな処理を入れたりする wincol() カーソルのウィンドウでの列番号 winline() カーソルのウィンドウでの行番号 cursor() カーソルを指定した位置に移動させる + screencol() カーソルのスクリーン列を得る + screenrow() カーソルのスクリーン行を得る getpos() カーソルやマークなどの位置を取得する setpos() カーソルやマークなどの位置を設定する byte2line() 指定のバイト位置の行番号を得る line2byte() 指定の行のバイト位置を得る diff_filler() ある行より上の詰め行の数を取得する + screenattr() スクリーン列/行の属性を得る + screenchar() スクリーン列/行の文字コードを得る カレントバッファで動作するもの: *text-functions* getline() バッファから行を得る @@ -859,14 +871,22 @@ Vimサーバー: *server-functions* libcall() 外部ライブラリの関数を呼ぶ libcallnr() 同上、数値を返す + undofile() アンドゥファイルの名前を得る + undotree() アンドゥツリーの状態を返す + getreg() レジスタの値を得る getregtype() レジスタのタイプを得る setreg() レジスタの値を設定する + shiftwidth() 'shiftwidth' の実際の値 + taglist() マッチするタグのリストを取得 tagfiles() タグファイルのリストを取得 + luaeval() Luaの式を評価する mzeval() |MzScheme| の式を評価する + py3eval() Pythonの式を評価する (|+python3|) + pyeval() Pythonの式を評価する (|+python|) ============================================================================== *41.7* 関数を定義する diff --git a/en/usr_41.txt b/en/usr_41.txt index 8db127fd9..736adf257 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.4. Last change: 2013 Feb 20 +*usr_41.txt* For Vim version 7.4. Last change: 2014 Jan 10 VIM USER MANUAL - by Bram Moolenaar @@ -595,13 +595,17 @@ String manipulation: *string-functions* matchlist() like matchstr() and also return submatches stridx() first index of a short string in a long string strridx() last index of a short string in a long string - strlen() length of a string + strlen() length of a string in bytes + strchars() length of a string in characters + strwidth() size of string when displayed + strdisplaywidth() size of string when displayed, deals with tabs substitute() substitute a pattern match with a string submatch() get a specific match in ":s" and substitute() strpart() get part of a string expand() expand special keywords iconv() convert text from one encoding to another byteidx() byte index of a character in a string + byteidxcomp() like byteidx() but count composing characters repeat() repeat a string multiple times eval() evaluate a string expression @@ -656,6 +660,9 @@ Floating point computation: *float-functions* ceil() round up floor() round down trunc() remove value after decimal point + fmod() remainder of division + exp() exponential + log() natural logarithm (logarithm to base e) log10() logarithm to base 10 pow() value of x to the exponent y sqrt() square root @@ -675,6 +682,7 @@ Other computation: *bitwise-function* invert() bitwise invert or() bitwise OR xor() bitwise XOR + sha256() SHA-256 hash Variables: *var-functions* type() type of a variable @@ -697,11 +705,15 @@ Cursor and mark position: *cursor-functions* *mark-functions* wincol() window column number of the cursor winline() window line number of the cursor cursor() position the cursor at a line/column + screencol() get screen column of the cursor + screenrow() get screen row of the cursor getpos() get position of cursor, mark, etc. setpos() set position of cursor, mark, etc. byte2line() get line number at a specific byte count line2byte() byte count at a specific line diff_filler() get the number of filler lines above a line + screenattr() get attribute at a screen line/row + screenchar() get character code at a screen line/row Working with text in the current buffer: *text-functions* getline() get a line or list of lines from the buffer @@ -883,14 +895,22 @@ Various: *various-functions* libcall() call a function in an external library libcallnr() idem, returning a number + undofile() get the name of the undo file + undotree() return the state of the undo tree + getreg() get contents of a register getregtype() get type of a register setreg() set contents and type of a register + shiftwidth() effective value of 'shiftwidth' + taglist() get list of matching tags tagfiles() get a list of tags files + luaeval() evaluate Lua expression mzeval() evaluate |MzScheme| expression + py3eval() evaluate Python expression (|+python3|) + pyeval() evaluate Python expression (|+python|) ============================================================================== *41.7* Defining a function From e70e4fb4510dc138349738f93124680b3ba5adc6 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 31 Jan 2014 20:56:04 +0900 Subject: [PATCH 496/783] Update some part of eval.txt --- doc/eval.jax | 3 +++ en/eval.txt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/doc/eval.jax b/doc/eval.jax index 4417df4be..5106c7bea 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1661,6 +1661,7 @@ bufnr( {expr}) 数値 バッファ{expr}の番号 bufwinnr( {nr}) 数値 バッファ{nr}のウィンドウ番号 byte2line( {byte}) 数値 {byte}番目のバイトの行番号 byteidx( {expr}, {nr}) 数値 {expr}の{nr}文字目のバイトインデックス +byteidxcomp( {expr}, {nr}) 数値 {expr}の{nr}文字目のバイトインデックス call( {func}, {arglist} [, {dict}]) 任意 引数{arglist}をつけて{func}を呼ぶ ceil( {expr}) 浮動小数点数 {expr} を切り上げる @@ -1859,6 +1860,8 @@ repeat( {expr}, {count}) 文字列 {expr}を{count}回繰り返す resolve( {filename}) 文字列 ショートカットが指す先のファイル名 reverse( {list}) 文字列 {list}をその場で反転させる round( {expr}) 浮動小数点数 {expr} を四捨五入する +screenattr( {row}, {col}) 数値 スクリーン位置の属性 +screenchar( {row}, {col}) 数値 スクリーン位置の文字 screencol() 数値 現在のカーソル列 screenrow() 数値 現在のカーソル行 search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) diff --git a/en/eval.txt b/en/eval.txt index 3ff4019f1..77119c96c 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1712,6 +1712,7 @@ bufnr( {expr}) Number Number of the buffer {expr} bufwinnr( {expr}) Number window number of buffer {expr} byte2line( {byte}) Number line number at byte count {byte} byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr} +byteidxcomp( {expr}, {nr}) Number byte index of {nr}'th char in {expr} call( {func}, {arglist} [, {dict}]) any call {func} with arguments {arglist} ceil( {expr}) Float round {expr} up @@ -1906,6 +1907,8 @@ repeat( {expr}, {count}) String repeat {expr} {count} times resolve( {filename}) String get filename a shortcut points to reverse( {list}) List reverse {list} in-place round( {expr}) Float round off {expr} +screenattr( {row}, {col}) Number attribute at screen position +screenchar( {row}, {col}) Number character at screen position screencol() Number current cursor column screenrow() Number current cursor row search( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) From 34cf19dfa9a0aa707273e575161c72902c602a55 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 1 Feb 2014 07:18:33 +0900 Subject: [PATCH 497/783] Revert "Add translator's note" This reverts commit 481d9e00b51b0bf6699ff0c1a9616fc05d17c908. ref #94 --- doc/eval.jax | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 5106c7bea..51fc8b975 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5259,8 +5259,6 @@ soundfold({word}) soundfoldingができない場合、{word}がそのまま返される。 この関数はスペリング候補を作るために使われる。Note この方法は とても遅くなる可能性がある。 - {訳注: "sound fold"とは改行のために一単語を途中で分割するルー - ルのことである。} *spellbadword()* spellbadword([{sentence}]) From cdad615926445f981fd549c44508800c69dc7696 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 2 Feb 2014 03:07:08 +0900 Subject: [PATCH 498/783] soundfold() #94 --- doc/eval.jax | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 51fc8b975..d6e504296 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5253,12 +5253,13 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702* < *soundfold()* soundfold({word}) - {word}と同値でsound-foldされた単語を返す。カレントウィンドウの - 'spelllang' で設定された言語のうち、soundfoldingに対応する最初 - の言語が使用される。'spell' がオンでなければならない。 - soundfoldingができない場合、{word}がそのまま返される。 - この関数はスペリング候補を作るために使われる。Note この方法は - とても遅くなる可能性がある。 + {word} の soundfold 値を返す。カレントウィンドウの 'spelllang' + で設定された言語のうち、soundfold に対応している最初の言語が使 + 用される。'spell' がオンでなければならない。soundfold ができな + い場合は {word} がそのまま返される。 + この関数はスペル修正候補の作成に使える。Note この方法はとても + 遅くなる可能性がある。 + {訳注: phonetic algorithm の一種} *spellbadword()* spellbadword([{sentence}]) From b0d88cd7c3465c039b0cdf0981e265ba37ccba3d Mon Sep 17 00:00:00 2001 From: haya14busa <hayabusa1419@gmail.com> Date: Mon, 3 Feb 2014 10:33:17 +0900 Subject: [PATCH 499/783] Translate v:hlsearch Update v:hlsearch section on eval.txt --- doc/eval.jax | 8 ++++++++ en/eval.txt | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/doc/eval.jax b/doc/eval.jax index d6e504296..c32e0b4b1 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1409,6 +1409,14 @@ v:foldend 'foldtext' 用。閉じた折り畳みの最後の行。 v:foldstart 'foldtext' 用。閉じた折り畳みの最初の行。 サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| + *v:hlsearch* *hlsearch-variable* +v:hlsearch 検索による強調表示がオンになっているかどうかを決定する変数。 + |+extra_search| 機能が必要である 'hlsearch' が有効になっている + 時のみ意味をなす。この変数を0に設定することは、 |:nohlsearch| + コマンドを実行することと同様に働き、1に設定することは以下と + 同様に働く > + let &hlsearch = &hlsearch +< *v:insertmode* *insertmode-variable* v:insertmode オートコマンドイベント|InsertEnter|と|InsertChange|用。 値は次のどれか: diff --git a/en/eval.txt b/en/eval.txt index 77119c96c..fa1822979 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1454,6 +1454,13 @@ v:foldend Used for 'foldtext': last line of closed fold. v:foldstart Used for 'foldtext': first line of closed fold. Read-only in the |sandbox|. |fold-foldtext| + *v:hlsearch* *hlsearch-variable* +v:hlsearch Variable that determines whether search highlighting is on. + Makes sense only if 'hlsearch' is enabled which requires + |+extra_search|. Setting this variable to zero acts the like + |:nohlsearch| command, setting it to one acts like > + let &hlsearch = &hlsearch +< *v:insertmode* *insertmode-variable* v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand events. Values: From ab1e5107731c61f8abdddbbb2d62c739ec15f69b Mon Sep 17 00:00:00 2001 From: haya14busa <hayabusa1419@gmail.com> Date: Mon, 3 Feb 2014 10:44:49 +0900 Subject: [PATCH 500/783] Improve translation of v:hlsearch --- doc/eval.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index c32e0b4b1..c0ce8f179 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1411,7 +1411,7 @@ v:foldstart 'foldtext' 用。閉じた折り畳みの最初の行。 *v:hlsearch* *hlsearch-variable* v:hlsearch 検索による強調表示がオンになっているかどうかを決定する変数。 - |+extra_search| 機能が必要である 'hlsearch' が有効になっている + |+extra_search| 機能が必要な 'hlsearch' が有効になっている 時のみ意味をなす。この変数を0に設定することは、 |:nohlsearch| コマンドを実行することと同様に働き、1に設定することは以下と 同様に働く > From 6a8541f6421a1f7e4aa0b68458f62215d0992655 Mon Sep 17 00:00:00 2001 From: haya14busa <hayabusa1419@gmail.com> Date: Mon, 3 Feb 2014 10:56:05 +0900 Subject: [PATCH 501/783] Fix indent --- doc/eval.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index c0ce8f179..175e06dd0 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1412,9 +1412,9 @@ v:foldstart 'foldtext' 用。閉じた折り畳みの最初の行。 *v:hlsearch* *hlsearch-variable* v:hlsearch 検索による強調表示がオンになっているかどうかを決定する変数。 |+extra_search| 機能が必要な 'hlsearch' が有効になっている - 時のみ意味をなす。この変数を0に設定することは、 |:nohlsearch| + 時のみ意味をなす。この変数を0に設定することは、 |:nohlsearch| コマンドを実行することと同様に働き、1に設定することは以下と - 同様に働く > + 同様に働く > let &hlsearch = &hlsearch < *v:insertmode* *insertmode-variable* From 28ced9d6eed5411f7c41a604391aa2d8bd20a97f Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 3 Feb 2014 14:08:13 +0900 Subject: [PATCH 502/783] Fix typo close #97 --- doc/eval.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 175e06dd0..c4125fb1e 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6942,8 +6942,8 @@ Vimはこれを見つけると、まず波括弧の中の式を評価し、そ エラーや割り込みが検出された場合、後に|:finally|コマン ドがあるならば、":finally" の後から実行が継続される。 - そうでければ、または ":endtry" に達した後は次の動的に - 囲んでいる ":try" に対応する ":finally" などが探され + そうでなければ、または ":endtry" に達した後は次の動的 + に囲んでいる ":try" に対応する ":finally" などが探され る。その後スクリプトは実行を停止する。(関数定義に引数 "abort" がついているかどうかは関係ない) 例: > From cf914b51e60b465d3f140d57bff44600c1310d1c Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 3 Feb 2014 14:38:05 +0900 Subject: [PATCH 503/783] Fix repeat.jax close #98 --- doc/repeat.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/repeat.jax b/doc/repeat.jax index 95c20562a..a1e6e5189 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -260,7 +260,7 @@ Vimスクリプトの書き方はユーザーマニュアルの41章|usr_41.txt| ':source' コマンドはファイルから一行ずつExコマンドを読込む。キーボード入力が必 要になった場合にはタイプする必要が生じる。':source!' コマンドはスクリプトファ -イルから一字一句読込む。各々のキャラクタはユーザーがタイプしたものとして解釈さ +イルから一字ずつ読込む。各々のキャラクタはユーザーがタイプしたものとして解釈さ れる。 例: ":!ls" コマンドを実行したとすると|hit-enter|プロンプトが表示される。"!ls" From 17bb257e7ed9e8e2cec2d24a2df94fbde162831c Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 4 Feb 2014 20:36:59 +0900 Subject: [PATCH 504/783] fix translation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix mistranslation about maximum line length. Also fix inconsistent translation. (マシーン -> マシン) --- doc/version4.jax | 4 ++-- doc/vi_diff.jax | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/version4.jax b/doc/version4.jax index 61eab35fb..d3a37e0b4 100644 --- a/doc/version4.jax +++ b/doc/version4.jax @@ -64,8 +64,8 @@ Backspace と Delete キーについて |backspace-delete| ザー名と編集されたファイルに関する情報を保持しています。これによって復元がより 簡単になり、またスワップファイルがどこで作成されたものかを知ることができるよう になりました。現在はスワップファイルの最初の部分で異なるバイトオーダーか -sizeof(int) を持つマシーンを区別することができます。そういった異なるマシーン -間でリカバーを行おうとすると、できないという旨のエラーメッセージが出ます。 +sizeof(int) を持つマシンを区別することができます。そういった異なるマシン間でリ +カバーを行おうとすると、できないという旨のエラーメッセージが出ます。 この変更のため3.0と4.0との間のスワップファイルには互換性がありません。もし3.0 のセッションでクラッシュしたスワップファイルがあるなら Vim 3.0 を使ってそのファ diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index 1371137bb..7554aa853 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -70,9 +70,9 @@ Vim で編集できるファイルの制限はかなり少ないです。 {Vi: < があります。} *E340* -行の最大の長さ 16-bit ints を使っているマシーン(Amiga と MS-DOS の - リアルモード): 32767 か 2147483647 文字。それより長 - い行は分割されます。 +行の最大の長さ 16ビット int を使っているマシン(Amiga と MS-DOS の + リアルモード)は 32767 文字、それ以外は 2147483647 + 文字。それより長い行は分割されます。 最大行数 2147483647 行 最大のファイルのサイズ long integer が32ビットである場合2147483647バイト(2 ギガバイト)です。64ビットの長さであればもっと多くな From 5e8341845852b29d94715a4c01410bcc9e082248 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 4 Feb 2014 20:43:24 +0900 Subject: [PATCH 505/783] insert a space before a quotation --- doc/vi_diff.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index 7554aa853..b4c9ca8b6 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -103,10 +103,10 @@ Vim で編集できるファイルの制限はかなり少ないです。 {Vi: < 'maxmem' ('mm') オプションは一つのバッファに使われるメモリーの最大の量 (キロバ イトで) を決めるのに使います。'maxmemtot' はすべてのバッファで使われるメモリー -の最大の量(キロバイトで)を決めるのに使います。Amiga と MS-DOS では'maxmemtot' +の最大の量(キロバイトで)を決めるのに使います。Amiga と MS-DOS では 'maxmemtot' は使えるメモリーの量に依存して設定されます。 これらは厳格な制限ではなく、いつテキストをスワップファイルに移動するかの目安で -す。もし Vim がファイルにスワップを行うのが嫌であれば 'maxmem' と'maxmemtot' +す。もし Vim がファイルにスワップを行うのが嫌であれば 'maxmem' と 'maxmemtot' の値をかなり大きい値に設定しておきます。そうするとスワップファイルはリカバリー の時にのみ使われるようになります。もしどんなスワップファイルも欲しくなければ 'updatecount' を 0 に設定するか、Vim を起動するときに "-n" 引数をつけます。 From 987c6d2e0bfa81d5c5fa573530c2303d6e210cc4 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 4 Feb 2014 20:44:44 +0900 Subject: [PATCH 506/783] insert an empty line --- doc/vi_diff.jax | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index b4c9ca8b6..c1e5d2098 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -432,6 +432,7 @@ Viminfo |viminfo-file| 印刷 |printing| コマンド|:hardcopy|はテキストをプリンタに送信します。構文強調も含まれ ます。 + マウスサポート |mouse-using| マウスは GUI バージョンと Unix、sysmouse がある BSD、gpm がある Linux、 MS-DOS、Win32 上の xterm でサポートされています。カーソルの場所を変え From 88c5892a5d1660136f22159cd4285ad9fdda236c Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 4 Feb 2014 20:45:06 +0900 Subject: [PATCH 507/783] translate consistently MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ミリセコンド -> ミリ秒 --- doc/vi_diff.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index c1e5d2098..f5778787b 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -726,9 +726,9 @@ Vim が DIGRAPHS を定義してコンパイルされていればダイグラフ 一般: 'ttimeout' オプションは 'timeout' オプションに似ていますが、カーソルかファンク -ションキーに対してのみ働きます。'timeoutlen' オプションは待つ時間をミリセコン -ド単位で指定することができます。'esckeys' オプションがセットされていない場合、 -<Esc> キーで始まるカーソルとファンクションキーは挿入モードでは解釈されません。 +ションキーに対してのみ働きます。'timeoutlen' オプションは待つ時間をミリ秒単位 +で指定することができます。'esckeys' オプションがセットされていない場合、<Esc> +キーで始まるカーソルとファンクションキーは挿入モードでは解釈されません。 端末文字列がそれぞれオプションとしてあります。termcap がサポートされていなかっ たり独自の文字列に変更したい場合に利用することができます。 From 95068b2d27605ebeb302a8e2480d96caf5c23457 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 4 Feb 2014 20:51:00 +0900 Subject: [PATCH 508/783] fix typo in Bram's last name This typo should be fixed by the original version of vim_faq. --- vim_faq/vim_faq.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 7a6d2aa47..be206458b 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -637,7 +637,7 @@ Crisp、Brief、xedit です。そして Notepad も。 *faq-1.2* 1.2. 誰が Vim を書いたんですか? -Vim のほとんどは Bram Moolenar によって書かれましたが、他に貢献した人々の名前 +Vim のほとんどは Bram Moolenaar によって書かれましたが、他に貢献した人々の名前 はここでは多すぎて触れられません。完全なリストは ":h credits" を見てください。 Vim は、Tim Thompson、Tony Andrews、G.R. (Fred) Walter らによって開発された From c88dc46b92613a8e5681e6741cd9a5c20db639aa Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 7 Feb 2014 23:15:37 +0900 Subject: [PATCH 509/783] Update autocmd.jax --- doc/autocmd.jax | 3 +++ en/autocmd.txt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index 222fad817..d6b955335 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -955,6 +955,9 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに \, は ',' にマッチ { } は |pattern| の \( \) と同様 , ('{' '}' の内側では) |pattern| の \| と同様 + \} リテラルの } + \{ リテラルの { + \\\{n,m\} |pattern| の \{n,m} と同様 \ は |pattern| で使われるものと同様の特別な意味を持つ [ch] は 'c' または 'h' にマッチ [^ch] は 'c' と 'h' 以外の文字にマッチ diff --git a/en/autocmd.txt b/en/autocmd.txt index 8762d1106..64f8c49ee 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -964,6 +964,9 @@ The pattern is interpreted like mostly used in file names: \, matches a ',' { } like \( \) in a |pattern| , inside { }: like \| in a |pattern| + \} literal } + \{ literal { + \\\{n,m\} like \{n,m} in a |pattern| \ special meaning like in a |pattern| [ch] matches 'c' or 'h' [^ch] match any character but 'c' and 'h' From 4bd1b409a9b1f37e4b49d8632023e3e608157d9c Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 7 Feb 2014 23:17:37 +0900 Subject: [PATCH 510/783] Fix pattern.jax --- doc/pattern.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index 4850fd0ed..23e5854af 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -404,7 +404,7 @@ after: \v \m \M \V マッチするもの ~ \a \a \a \a 英字 \\ \\ \\ \\ リテラルのバックスラッシュ \. \. . . リテラルのドット - \{ { { { リテラルの "{" + \{ { { { リテラルの '{' a a a a リテラルの 'a' {\m、\M、\v、\V、はVimだけの機能です} From a15c7fda105342871779d09bda52fa4f74589f22 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 9 Feb 2014 22:31:00 +0900 Subject: [PATCH 511/783] Update quickref.jax --- doc/quickref.jax | 58 +++++++++++++++++++++++++----------------------- en/quickref.txt | 44 ++++++++++++++++++------------------ 2 files changed, 53 insertions(+), 49 deletions(-) diff --git a/doc/quickref.jax b/doc/quickref.jax index 414c2558d..588fc5e43 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -1,4 +1,4 @@ -*quickref.txt* For Vim バージョン 7.4. Last change: 2013 May 20 +*quickref.txt* For Vim バージョン 7.4. Last change: 2013 Jun 29 VIMリファレンスマニュアル by Bram Moolenaar @@ -62,7 +62,7 @@ |-| N - 上に N 行移動し、行頭の非空白文字に移動 |+| N + 下に N 行移動し、行頭の非空白文字に移動(CTRL-M, <CR> キーでも同じ) -|_| N _ 下に N-1 行移動し,行頭の非空白文字に移動 +|_| N _ 下に N-1 行移動し,行頭の非空白文字に移動 |G| N G N 行目(デフォルトは最後の行)に移動し、行頭の非空白文 字に移動 |gg| N gg N 行目(デフォルトは1行目)に移動し、行頭の非空白文字 @@ -169,20 +169,20 @@ b[-num] 上の s[-num] の別名 (begin の b) ;{search-command} 次の{search-command}を実行する。 ------------------------------------------------------------------------------ -*Q_ma* マーク +*Q_ma* マークと移動 -|m| m{a-zA-Z} 現在の場所を {a-zA-Z} としてマーク -|`a| `{a-z} 編集中のファイルのマーク{a-z} に移動 -|`A| `{A-Z} 任意のファイルのマーク{A-Z} に移動 -|`0| `{0-9} vimが前回終了した時の場所に移動 -|``| `` 直前のジャンプコマンドの前の場所に移動 +|m| m{a-zA-Z} 現在の場所を {a-zA-Z} としてマーク +|`a| `{a-z} 編集中のファイルのマーク{a-z} に移動 +|`A| `{A-Z} 任意のファイルのマーク{A-Z} に移動 +|`0| `{0-9} vimが前回終了した時の場所に移動 +|``| `` 直前のジャンプコマンドの前の場所に移動 |`quote| `" 前回このファイルを編集した時の場所に移動 -|`[| `[ 直前に繰作もしくはプットした文字列の先頭に移動 -|`]| `] 直前に繰作もしくはプットした文字列の末尾に移動 -|`<| `< (直前の)ビジュアルエリアの先頭に移動 -|`>| `> (直前の)ビジュアルエリアの末尾に移動 -|`.| `. このファイルで最後に変更した場所に移動 -|'| '{a-zA-Z0-9[]'"<>.} +|`[| `[ 直前に繰作もしくはプットした文字列の先頭に移動 +|`]| `] 直前に繰作もしくはプットした文字列の末尾に移動 +|`<| `< (直前の)ビジュアルエリアの先頭に移動 +|`>| `> (直前の)ビジュアルエリアの末尾に移動 +|`.| `. このファイルで最後に変更した場所に移動 +|'| '{a-zA-Z0-9[]'"<>.} ` と同じだが、その行の先頭の非空白文字まで移動する 点が異なる。 |:marks| :marks 現在設定されているマークを一覧表示 @@ -418,9 +418,9 @@ |:ce| :[range]ce[nter] [width] [range]の行範囲をセンタリング |:le| :[range]le[ft] [indent] - [range]の行範囲を([indent] 分)左寄せ + [range]の行範囲を([indent] 分)左寄せ |:ri| :[range]ri[ght] [width] - [range]の行範囲を([width] 桁まで)右寄せ + [range]の行範囲を([width] 桁まで)右寄せ ------------------------------------------------------------------------------ *Q_co* 複雑な変更処理 @@ -755,10 +755,12 @@ 'iconstring' Vimのアイコン表示に使用するテキスト 'ignorecase' 'ic' 検索パターンで大文字と小文字を区別しない 'imactivatekey' 'imak' X のインプットメソッドを有効にするキー +'imactivatefunc' 'imaf' X のインプットメソッドを有効/無効にする関数 'imcmdline' 'imc' コマンドライン入力時にIMを有効にする 'imdisable' 'imd' IMを使わない 'iminsert' 'imi' 挿入モードで|:lmap|やIMを使う 'imsearch' 'ims' 検索パターン入力時に|:lmap|やIMを使う +'imstatusfunc' 'imsf' X のインプットメソッドの状態を得る関数 'include' 'inc' インクルードファイルの検索パターン 'includeexpr' 'inex' インクルード行を処理する式 'incsearch' 'is' 検索パターン入力中にその文字を強調表示する @@ -1025,7 +1027,7 @@ |<Del>| <Del> 回数指定中: 最後の文字を削除 |:version| :ve[rsion] バージョン情報を表示 |:mode| :mode N MS-DOS: 画面モードを N (数字,C80,C4350,など) - に + に |:normal| :norm[al][!] {commands} ノーマルモードコマンドを実行 @@ -1212,7 +1214,7 @@ 編集 in current window in new window ~ -|:argument| :argu[ment] N :sar[gument] N ファイル N を編集 +|:argument| :argu[ment] N :sar[gument] N ファイル N を編集 |:next| :n[ext] :sn[ext] 次のファイルを編集 |:next_f| :n[ext] {arglist} :sn[ext] {arglist} 新たな引数リストを作り 最初のファイルを編集 @@ -1237,7 +1239,7 @@ |:q| :q[uit]! 変更を破棄して、現在のバッファを終了。他に ヘルプ以外のバッファがなければvimを終了。 |:qa| :qa[ll] 変更がない限りvimを終了 -|:qa| :qa[ll]! 変更があってもvimを強制終了 +|:qa| :qa[ll]! 変更があってもvimを強制終了 |:cq| :cq 保存せずに終了し、エラーコードを返す。 |:wq| :wq[!] 現ファイルを保存して終了 @@ -1274,7 +1276,7 @@ |:autocmd| :au 自動コマンドの一覧表示 |:autocmd| :au {event} {event}用の自動コマンドの一覧表示 |:autocmd| :au {event} {pat} {event}用の自動コマンドのうち、{pat} - に合致するコマンドの一覧表示 + に合致するコマンドの一覧表示 {pat} |:autocmd| :au {event} {pat} {cmd} {event}と{pat}用の新たな自動コマンドを {cmd}として登録 @@ -1338,14 +1340,14 @@ |:bdelete| :bdelete[!] [N] [N]番バッファを開放してバッファ一覧 から削除 - in current window in new window ~ -|:buffer| :[N]buffer [N] :[N]sbuffer [N] N 番バッファ/argへ -|:bnext| :[N]bnext [N] :[N]sbnext [N] N番分、次のバッファ/argへ -|:bNext| :[N]bNext [N] :[N]sbNext [N] N番分、次のバッファ/argへ -|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] 同上 -|:bfirst| :bfirst :sbfirst 最初のバッファ/argへ -|:blast| :blast :sblast 最後のバッファ/argへ -|:bmodified| :[N]bmod [N] :[N]sbmod [N] N番分、更新したバッファへ + カレントウィンドウで 新しいウィンドウで ~ +|:buffer| :[N]buffer [N] :[N]sbuffer [N] N 番バッファ/argへ +|:bnext| :[N]bnext [N] :[N]sbnext [N] N番分、次のバッファ/argへ +|:bNext| :[N]bNext [N] :[N]sbNext [N] N番分、次のバッファ/argへ +|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] 同上 +|:bfirst| :bfirst :sbfirst 最初のバッファ/argへ +|:blast| :blast :sblast 最後のバッファ/argへ +|:bmodified| :[N]bmod [N] :[N]sbmod [N] N番分、更新したバッファへ ------------------------------------------------------------------------------ *Q_sy* シンタックスハイライト diff --git a/en/quickref.txt b/en/quickref.txt index 77d30ecd7..90d359775 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.4. Last change: 2013 May 20 +*quickref.txt* For Vim version 7.4. Last change: 2013 Jun 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -170,18 +170,18 @@ N is used to indicate an optional count that can be given before the command. ------------------------------------------------------------------------------ *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 +|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[]'"<>.} +|`[| `[ 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 @@ -648,7 +648,7 @@ Short explanation of each option: *option-list* 'completefunc' 'cfu' function to be used for Insert mode completion 'completeopt' 'cot' options for Insert mode completion 'concealcursor' 'cocu' whether concealable text is hidden in cursor line -'conceallevel' 'cole' whether concealable text is shown or hidden +'conceallevel' 'cole' whether concealable text is shown or hidden 'confirm' 'cf' ask what to do about unsaved/read-only files 'conskey' 'consk' get keys directly from console (MS-DOS only) 'copyindent' 'ci' make 'autoindent' use existing indent structure @@ -738,10 +738,12 @@ Short explanation of each option: *option-list* 'iconstring' string to use for the Vim icon text 'ignorecase' 'ic' ignore case in search patterns 'imactivatekey' 'imak' key that activates the X input method +'imactivatefunc' 'imaf' function to enable/disable the X input method 'imcmdline' 'imc' use IM when starting to edit a command line 'imdisable' 'imd' do not use the IM in any mode 'iminsert' 'imi' use :lmap or IM in Insert mode 'imsearch' 'ims' use :lmap or IM when typing a search pattern +'imstatusfunc' 'imsf' function to obtain X input method status 'include' 'inc' pattern to be used to find an include file 'includeexpr' 'inex' expression used to process an include line 'incsearch' 'is' highlight match while typing search pattern @@ -1326,14 +1328,14 @@ Context-sensitive completion on the command-line: |:bdelete| :bdelete[!] [N] unload buffer [N] and delete it from the buffer list - in current window in new window ~ -|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N -|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf -|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf -|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf -|:bfirst| :bfirst :sbfirst to first arg/buf -|:blast| :blast :sblast to last arg/buf -|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf + in current window in new window ~ +|:buffer| :[N]buffer [N] :[N]sbuffer [N] to arg/buf N +|:bnext| :[N]bnext [N] :[N]sbnext [N] to Nth next arg/buf +|:bNext| :[N]bNext [N] :[N]sbNext [N] to Nth previous arg/buf +|:bprevious| :[N]bprevious [N] :[N]sbprevious [N] to Nth previous arg/buf +|:bfirst| :bfirst :sbfirst to first arg/buf +|:blast| :blast :sblast to last arg/buf +|:bmodified| :[N]bmod [N] :[N]sbmod [N] to Nth modified buf ------------------------------------------------------------------------------ *Q_sy* Syntax Highlighting From dd1f855b5da14be8b69b2e6a3d4577d9527d0105 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 9 Feb 2014 23:21:09 +0900 Subject: [PATCH 512/783] Fix typo --- doc/quickref.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/quickref.jax b/doc/quickref.jax index 588fc5e43..42a942f9e 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -62,7 +62,7 @@ |-| N - 上に N 行移動し、行頭の非空白文字に移動 |+| N + 下に N 行移動し、行頭の非空白文字に移動(CTRL-M, <CR> キーでも同じ) -|_| N _ 下に N-1 行移動し,行頭の非空白文字に移動 +|_| N _ 下に N-1 行移動し、行頭の非空白文字に移動 |G| N G N 行目(デフォルトは最後の行)に移動し、行頭の非空白文 字に移動 |gg| N gg N 行目(デフォルトは1行目)に移動し、行頭の非空白文字 @@ -463,7 +463,7 @@ |v_V| V 行単位ビジュアルモードを開始、もしくは中断 |v_CTRL-V| CTRL-V 矩形ビジュアルモードを開始、もしくは中断 ------------------------------------------------------------------------------ -*Q_to* 文字列オブジェクト (ビジュアルモードか、オペレータ指定後 +*Q_to* 文字列オブジェクト (ビジュアルモードか、オペレータ指定後) |v_aw| N aw "a word" を選択(単語の前後の空白も削除) |v_iw| N iw "inner word" を選択(正味の単語だけを削除) From 961fceb60ff2b3948fdd6e5f04aface377fe045b Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 10 Feb 2014 20:59:07 +0900 Subject: [PATCH 513/783] Improve help.jax --- doc/help.jax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/help.jax b/doc/help.jax index 3343ca72d..9ca5fc3bf 100644 --- a/doc/help.jax +++ b/doc/help.jax @@ -89,7 +89,7 @@ VIM は Vi IMproved の略です。VIM の大部分は Bram Moolenaar によっ リファレンスマニュアルでは Vim の詳細を説明します。 *reference_toc* 一般事項 ~ -|intro.txt| Vimについての前書き。と、ヘルプの表記について +|intro.txt| Vimについての前書き、ヘルプの表記について |help.txt| 全体説明とクイックリファレンス (今見ているファイル) |helphelp.txt| ヘルプの使い方 |index.txt| 全コマンド一覧。アルファベット順 @@ -104,7 +104,7 @@ VIM は Vi IMproved の略です。VIM の大部分は Bram Moolenaar によっ |uganda.txt| Vimの配布条件と、あなたが支払ったお金の使い道について 基本的な編集 ~ -|starting.txt| Vimの起動。起動引数や初期化に関して +|starting.txt| Vimの起動、起動引数や初期化に関して |editing.txt| ファイルの編集と保存 |motion.txt| 移動コマンド |scroll.txt| ウィンドウのスクロール @@ -128,10 +128,10 @@ VIM は Vi IMproved の略です。VIM の大部分は Bram Moolenaar によっ |tabpage.txt| タブページを操作するコマンド |syntax.txt| 構文強調 |spell.txt| スペルチェック -|diff.txt| バージョン違いのファイルの編集。差分モード +|diff.txt| バージョン違いのファイルの編集 (差分モード) |autocmd.txt| イベントに応じて自動的にコマンドを実行する |filetype.txt| ファイルタイプ別の設定 -|eval.txt| 式の評価。条件式。 (Vim スクリプトリファレンス) +|eval.txt| 式の評価、条件式 (Vim スクリプトリファレンス) |fold.txt| ある範囲を隠す (折り畳む) 特定機能 ~ From 7d484b23eee9ed5ed7ad007ce1059db7f669ef65 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 10 Feb 2014 23:54:22 +0900 Subject: [PATCH 514/783] Fix typo in starting.jax #100 --- doc/starting.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/starting.jax b/doc/starting.jax index a21d0ff9f..f564d2d64 100644 --- a/doc/starting.jax +++ b/doc/starting.jax @@ -4,7 +4,7 @@ VIMリファレンスマニュアル by Bram Moolenaar -Vimる *starting* +Vimの起動 *starting* 1. Vimの起動引数 |vim-arguments| 2. Amiga版のVim |starting-amiga| From 2f36f87c730764fc1af998e85ac1be63c91ea0a3 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 12 Feb 2014 19:04:24 +0900 Subject: [PATCH 515/783] Update some files --- doc/autocmd.jax | 5 ++++- doc/change.jax | 4 ++-- doc/eval.jax | 7 ++++--- doc/motion.jax | 2 +- doc/pattern.jax | 6 +++--- doc/pi_getscript.jax | 6 +++++- en/autocmd.txt | 5 ++++- en/change.txt | 2 +- en/eval.txt | 5 +++-- en/motion.txt | 2 +- en/pattern.txt | 6 +++--- en/pi_getscript.txt | 6 +++++- 12 files changed, 36 insertions(+), 20 deletions(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index d6b955335..94879d4c7 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -563,6 +563,9 @@ FileChangedRO 読み込み専用ファイルに最初の変更を加える前 ここで他のバッファに変更をしてはならない。バッ ファを再読み込みするとはよいが、他のバッファを 編集してはならない。 + *E881* + 行数が変化した場合 undo のための保存は失敗し、 + その変更は中止されるだろう。 *FileChangedShell* FileChangedShell ファイルのタイムスタンプが、ファイルの編集が始 まってから変更されたことを発見したとき。 @@ -957,7 +960,7 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに , ('{' '}' の内側では) |pattern| の \| と同様 \} リテラルの } \{ リテラルの { - \\\{n,m\} |pattern| の \{n,m} と同様 + \\\{n,m\} |pattern| の \{n,m} と同様 \ は |pattern| で使われるものと同様の特別な意味を持つ [ch] は 'c' または 'h' にマッチ [^ch] は 'c' と 'h' 以外の文字にマッチ diff --git a/doc/change.jax b/doc/change.jax index 2f7c725c5..5a1a2504a 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -785,7 +785,7 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ < 式で置換する *sub-replace-expression* - *sub-replace-\=* *:s/\=* + *sub-replace-\=* *s/\=* 置換文字列が "\=" で始まるとき、それ以降の文字列は式として解釈される。これは再 帰的に機能しない。その式の中での |substitute()| では置換文字列に "\=" を使うこ @@ -1230,7 +1230,7 @@ gq{motion} {motion} の行を整形する。整形は3種類の方法のうち 3番目の場合は、オプション 'textwidth' が整形された各行 の長さを制御する (後述)。'textwidth' が 0 なら、整形さ - れた行の長さは画面の幅となる (ただし、最大で79)。 + れた行の長さは画面の幅となる (ただし、最大で79)。 'formatoptions' は、整形の仕方を制御する |fo-table|。 カーソルは最後に整形された行の最初の非空白文字の上に置 かれる。 diff --git a/doc/eval.jax b/doc/eval.jax index c4125fb1e..787768b66 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1470,6 +1470,7 @@ v:mouse_col |getchar()|でマウスクリックイベントを取得したとき v:oldfiles 起動時に |viminfo| から読み込まれたファイルの名前のリスト。 これらはマークを記憶しているファイルである。リストの長さの上限 はオプション 'viminfo' の引数 ' によって決まる(既定では 100)。 + |viminfo| ファイルが使われていない時、リストは空となる。 |:oldfiles| と |c_#<| を参照。 このリストは変更可能であるが、後で |viminfo| ファイルに書き込ま れるものには影響しない。文字列以外の値を使うと問題を引き起こす @@ -1694,7 +1695,7 @@ cscope_connection( [{num} , {dbpath} [, {prepend}]]) cursor( {lnum}, {col} [, {coladd}]) 数値 カーソルを{lnum}, {col}, {coladd}へ移動 cursor( {list}) 数値 カーソルを{list}の位置へ移動 -deepcopy( {expr}) 任意 {expr}の完全なコピーを作る +deepcopy( {expr} [, {noref}]) 任意 {expr}の完全なコピーを作る delete( {fname}) 数値 ファイル{fname}を消す did_filetype() 数値 FileTypeのautocommandが実行されたか? diff_filler( {lnum}) 数値 差分モードで{lnum}に挿入された行 @@ -5385,8 +5386,8 @@ strchars({expr}) *strchars()* |strlen()|, |strdisplaywidth()|, |strwidth()| も参照。 strdisplaywidth({expr}[, {col}]) *strdisplaywidth()* - 結果は数値で、文字列 {expr} のスクリーン上での表示セル幅を返 - す。 + 結果は数値で、文字列 {expr} が {col} で始まる時のスクリーン上 + での表示セル幅を返す。 {col} が省略されたときはゼロが使われる。{col} には計算を開始す るスクリーン上の列の位置を指定する。これはタブ文字の幅の計算に 影響する。 diff --git a/doc/motion.jax b/doc/motion.jax index 286b04ced..46d6eb3e8 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -350,7 +350,7 @@ gg [count] 行目の最初の非空白文字に移動します(行単位 {Vi にはありません} :[range]go[to] [count] *:go* *:goto* *go* -[count]go バッファ中の {count} バイト目に移動します。デフォルト +[count]go バッファ中の [count] バイト目に移動します。デフォルト では [count] は1で、ファイルの最初になっています。 [range] が指定された場合は最後の数字が使われます。行の 終わりを示す文字が数えられるかどうかは 'fileformat' の diff --git a/doc/pattern.jax b/doc/pattern.jax index 23e5854af..ca85a57f5 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -1,4 +1,4 @@ -*pattern.txt* For Vim バージョン 7.4. Last change: 2013 Nov 09 +*pattern.txt* For Vim バージョン 7.4. Last change: 2014 Feb 08 VIMリファレンスマニュアル by Bram Moolenaar @@ -189,10 +189,10 @@ Note: |:global| コマンドではこの動作はノーマルメッセージと パターンを検索して置換する例: > /foo<CR> "foo" を検索 - c//e マッチした文字列を変更 + c//e<CR> マッチした文字列を変更 bar<Esc> 置換する文字を入力 //<CR> 次のマッチへ移動 - c//e マッチした文字列を変更 + c//e<CR> マッチした文字列を変更 beep<Esc> 今度は別の文字で置換 ... < diff --git a/doc/pi_getscript.jax b/doc/pi_getscript.jax index 42c463d1b..b3b098839 100644 --- a/doc/pi_getscript.jax +++ b/doc/pi_getscript.jax @@ -1,4 +1,4 @@ -*pi_getscript.txt* For Vim バージョン 7.4. Last change: 2012 Apr 07 +*pi_getscript.txt* For Vim バージョン 7.4. Last change: 2013 Nov 29 > GETSCRIPT REFERENCE MANUAL by Charles E. Campbell < @@ -373,6 +373,10 @@ scriptname を更新します。 ============================================================================== 9. GetLatestVimScripts 開発履歴 *getscript-history* *glvs-hist* {{{1 +v36 Apr 22, 2013 : * (glts) suggested use of plugin/**/*.vim instead of + plugin/*.vim in globpath() call. + * (Andy Wokula) got warning message when setting + g:loaded_getscriptPlugin v35 Apr 07, 2012 : * (MengHuan Yu) pointed out that the script url has changed (somewhat). However, it doesn't work, and the original one does (under Linux). I'll make it diff --git a/en/autocmd.txt b/en/autocmd.txt index 64f8c49ee..8b7941dc6 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -556,6 +556,9 @@ FileChangedRO Before making the first change to a read-only It is not allowed to change to another buffer here. You can reload the buffer but not edit another one. + *E881* + If the number of lines changes saving for undo + may fail and the change will be aborted. *FileChangedShell* FileChangedShell When Vim notices that the modification time of a file has changed since editing started. @@ -734,7 +737,7 @@ QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix command is run, before jumping to the first location. For |:cfile| and |:lfile| commands it is run after error file is read and before - moving to the first error. + moving to the first error. See |QuickFixCmdPost-example|. *QuitPre* QuitPre When using `:quit`, `:wq` or `:qall`, before diff --git a/en/change.txt b/en/change.txt index eceebaf04..3c459f1a4 100644 --- a/en/change.txt +++ b/en/change.txt @@ -812,7 +812,7 @@ either the first or second pattern in parentheses did not match, so either < Substitute with an expression *sub-replace-expression* - *sub-replace-\=* *:s/\=* + *sub-replace-\=* *s/\=* When the substitute string starts with "\=" the remainder is interpreted as an expression. This does not work recursively: a |substitute()| function inside the expression cannot use "\=" for the substitute string. diff --git a/en/eval.txt b/en/eval.txt index fa1822979..7db16bd7b 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1518,6 +1518,7 @@ v:oldfiles List of file names that is loaded from the |viminfo| file on startup. These are the files that Vim remembers marks for. The length of the List is limited by the ' argument of the 'viminfo' option (default is 100). + When the |viminfo| file is not used the List is empty. Also see |:oldfiles| and |c_#<|. The List can be modified, but this has no effect on what is stored in the |viminfo| file later. If you use values other @@ -1743,7 +1744,7 @@ cscope_connection( [{num} , {dbpath} [, {prepend}]]) cursor( {lnum}, {col} [, {coladd}]) Number move cursor to {lnum}, {col}, {coladd} cursor( {list}) Number move cursor to position in {list} -deepcopy( {expr}) any make a full copy of {expr} +deepcopy( {expr} [, {noref}]) any make a full copy of {expr} delete( {fname}) Number delete file {fname} did_filetype() Number TRUE if FileType autocommand event used diff_filler( {lnum}) Number diff filler lines about {lnum} @@ -5596,7 +5597,7 @@ strchars({expr}) *strchars()* strdisplaywidth({expr}[, {col}]) *strdisplaywidth()* The result is a Number, which is the number of display cells - String {expr} occupies on the screen. + String {expr} occupies on the screen when it starts a {col}. When {col} is omitted zero is used. Otherwise it is the screen column where to start. This matters for Tab characters. diff --git a/en/motion.txt b/en/motion.txt index caeb068a3..e7ea18d49 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -343,7 +343,7 @@ gg Goto line [count], default first line, on the first See also 'startofline' option. {not in Vi} :[range]go[to] [count] *:go* *:goto* *go* -[count]go Go to {count} byte in the buffer. Default [count] is +[count]go Go to [count] byte in the buffer. Default [count] is one, start of the file. When giving [range], the last number in it used as the byte count. End-of-line characters are counted depending on the current diff --git a/en/pattern.txt b/en/pattern.txt index f2f0b34e3..80688f918 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.4. Last change: 2013 Nov 09 +*pattern.txt* For Vim version 7.4. Last change: 2014 Feb 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -192,10 +192,10 @@ affected. An example of how to search for matches with a pattern and change the match with another word: > /foo<CR> find "foo" - c//e change until end of match + c//e<CR> change until end of match bar<Esc> type replacement //<CR> go to start of next match - c//e change until end of match + c//e<CR> change until end of match beep<Esc> type another replacement etc. < diff --git a/en/pi_getscript.txt b/en/pi_getscript.txt index 6fed27402..628d9b74e 100644 --- a/en/pi_getscript.txt +++ b/en/pi_getscript.txt @@ -1,4 +1,4 @@ -*pi_getscript.txt* For Vim version 7.4. Last change: 2012 Apr 07 +*pi_getscript.txt* For Vim version 7.0. Last change: 2013 Nov 29 > GETSCRIPT REFERENCE MANUAL by Charles E. Campbell < @@ -385,6 +385,10 @@ The AutoInstall process will: ============================================================================== 9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1 +v36 Apr 22, 2013 : * (glts) suggested use of plugin/**/*.vim instead of + plugin/*.vim in globpath() call. + * (Andy Wokula) got warning message when setting + g:loaded_getscriptPlugin v35 Apr 07, 2012 : * (MengHuan Yu) pointed out that the script url has changed (somewhat). However, it doesn't work, and the original one does (under Linux). I'll make it From f047492c4396aa12bc4f1b30ed945b1e313e3fb5 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 12 Feb 2014 21:00:49 +0900 Subject: [PATCH 516/783] remove unnecessary empty lines --- doc/options.jax | 4 ---- 1 file changed, 4 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index d932b5b63..d73dde4ba 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -3726,14 +3726,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'go-c'* 'c' 単純な選択にはポップアップダイアログでなくコンソールダイアログ を使う。 - *'go-e'* 'e' 'showtabline' で指定されたタイミングでタブを追加する。 'guitablabel' を使うとタブのラベルのテキストを変更することがで きる。'e' がないと非GUIのタブページラインが使われる。GUIのタブ はいくつかのシステム上(現在はGTK, Motif, Mac OS/X, MS-Windows) でのみサポートされている。 - *'go-f'* 'f' フォアグラウンド (foreground): シェルからGUIを開始し、そのシェ ルからgVimを独立させる際に関数 fork() を使わない。これはエディ @@ -3743,12 +3741,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる Note: このオプションはファイル vimrc 内で設定するよう注意。ファ イル|gvimrc|が読み込まれたときはフォーキングがすでに実行されて いるかもしれない。 - *'go-i'* 'i' Vimのアイコンを使う。KDEのGTKではウィンドウの左上に表示される。 GTKでないX11では、制限のため白黒のアイコンが使われる。色つきの アイコンについては |X11-icon| を参照。 - *'go-m'* 'm' メニューバーを表示する。 *'go-M'* From 02fb0eb37d57cdd7e772498ca8a0e63ee321ee5b Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 13 Feb 2014 18:50:06 +0900 Subject: [PATCH 517/783] Translate spell.jax --- doc/spell.jax | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index 0f5dbafd1..967a57b54 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -163,21 +163,20 @@ z= カーソルの下や後の単語に対して正しい綴りの単語を提 これには長い時間が掛かることがある。うんざりした場合は CTRL-C を打つこと。 - If the command is used without a count the - alternatives are listed and you can enter the number - of your choice or press <Enter> if you don't want to - replace. You can also use the mouse to click on your - choice (only works if the mouse can be used in Normal - mode and when there are no line wraps). Click on the - first line (the header) to cancel. - - The suggestions listed normally replace a highlighted - bad word. Sometimes they include other text, in that - case the replaced text is also listed after a "<". - - If a count is used that suggestion is used, without - prompting. For example, "1z=" always takes the first - suggestion. + count なしでこのコマンドを使う場合、選択肢がリストアッ + プされ、選びたい選択肢の番号を入力することができる。置 + き換えたくない場合は <Enter> を押す。また、マウスを使っ + て選択肢をクリックすることもできる(マウスがノーマルモー + ドで使われ、行の折り返しがない時のみ働く)。キャンセル + するには最初の行(ヘッダー)をクリックする。 + + リストアップされた提案はふつうハイライトされた間違った + 単語を置き換える。置き換えられるテキストが "<" の後で + リストアップされる場合、時々他のテキストを含むことがあ + る。 + + count を用いた場合、プロンプトは出ずにその提案が使われ + る。例えば、"1z=" は常に最初の提案を利用する。 If 'verbose' is non-zero a score will be displayed with the suggestions to indicate the likeliness to the From 59e15da79b097fe2c71830012de36f7368beb29c Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Fri, 14 Feb 2014 19:33:15 +0900 Subject: [PATCH 518/783] Fix translation --- doc/spell.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index 967a57b54..b368808a1 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -171,9 +171,9 @@ z= カーソルの下や後の単語に対して正しい綴りの単語を提 するには最初の行(ヘッダー)をクリックする。 リストアップされた提案はふつうハイライトされた間違った - 単語を置き換える。置き換えられるテキストが "<" の後で - リストアップされる場合、時々他のテキストを含むことがあ - る。 + 単語を置き換える。その提案は時々他のテキストを含むこと + があるが、その場合は置き換えられるテキストが "<" の後 + にリストアップされる。 count を用いた場合、プロンプトは出ずにその提案が使われ る。例えば、"1z=" は常に最初の提案を利用する。 From 21fa62e1d5c10b0e595926bb0fd31e2673ae65f6 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 15 Feb 2014 01:42:24 +0900 Subject: [PATCH 519/783] Update eval.jax --- doc/eval.jax | 3 ++- en/eval.txt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index 787768b66..49fd0d2fc 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -117,7 +117,8 @@ empty()を使用して次のようにする。 > :echo Fn() < *E704* *E705* *E707* 関数参照の変数名は、大文字、"s:"、"w:"、"t:"、"b:" のいずれかで始めなければな -らない。関数参照と参照先の関数の名前を同じにすることはできない。 +らない。"g:" も使えるが、次に述べる名前は大文字で始めなければならない。関数参 +照と参照先の関数の名前を同じにすることはできない。 関数を定義して、それへの参照を直接辞書に入れるための特別な形式がある。例: > :function dict.init() dict diff --git a/en/eval.txt b/en/eval.txt index 7db16bd7b..81f1aba57 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -123,6 +123,7 @@ around the arguments, to invoke the function it refers to. Example: > :echo Fn() < *E704* *E705* *E707* A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:". You +can use "g:" but the following name must still start with a capital. You cannot have both a Funcref variable and a function with the same name. A special case is defining a function and directly assigning its Funcref to a From bc9bb943caf3881fafe07d29f4bf7df24d049085 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 15 Feb 2014 02:02:43 +0900 Subject: [PATCH 520/783] Update repeat.jax --- doc/repeat.jax | 15 +++++++++------ en/repeat.txt | 14 +++++++++----- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/doc/repeat.jax b/doc/repeat.jax index a1e6e5189..c56276386 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -1,4 +1,4 @@ -*repeat.txt* For Vim バージョン 7.4. Last change: 2013 Jul 25 +*repeat.txt* For Vim バージョン 7.4. Last change: 2014 Feb 11 VIMリファレンスマニュアル by Bram Moolenaar @@ -25,11 +25,14 @@ マンドは繰り返さない。 単純な変更は "." コマンドで繰り返すことができる。回数を指定しなければ、最後の -変更の回数が使用される。回数を指定した場合、最後のそれと置き換えられる。最後に -行なわれた変更が番号付きレジスタの指定を含んでいた場合、レジスタ番号は増加され -る。これをどのように使うかの例は|redo-register|を参照。ビジュアル選択を使用し -たコマンドを繰り返す時は、同じ「サイズ」の範囲が使用されることに注意。 -|visual-repeat|を参照。 +変更の回数が使用される。回数を指定した場合、最後のそれと置き換えられる。 +|v:count| と |v:count1| が設定される。 + +最後に行なわれた変更が番号付きレジスタの指定を含んでいた場合、レジスタ番号は増 +加される。これをどのように使うかの例は|redo-register|を参照。 + +ビジュアル選択を使用したコマンドを繰り返す時は、同じ「サイズ」の範囲が使用され +ることに注意。|visual-repeat|を参照。 *@:* @: 最後のコマンドラインを[count]回繰り返す。 diff --git a/en/repeat.txt b/en/repeat.txt index 069770024..25421a59d 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.4. Last change: 2013 Jul 25 +*repeat.txt* For Vim version 7.4. Last change: 2014 Feb 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -26,10 +26,14 @@ Chapter 26 of the user manual introduces repeating |usr_26.txt|. Simple changes can be repeated with the "." command. Without a count, the count of the last change is used. If you enter a count, it will replace the -last one. If the last change included a specification of a numbered register, -the register number will be incremented. See |redo-register| for an example -how to use this. Note that when repeating a command that used a Visual -selection, the same SIZE of area is used, see |visual-repeat|. +last one. |v:count| and |v:count1| will be set. + +If the last change included a specification of a numbered register, the +register number will be incremented. See |redo-register| for an example how +to use this. + +Note that when repeating a command that used a Visual selection, the same SIZE +of area is used, see |visual-repeat|. *@:* @: Repeat last command-line [count] times. From efa01db7000d8719630b6d349aeeb9c47a2f1b08 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 15 Feb 2014 02:33:53 +0900 Subject: [PATCH 521/783] Translate quickref.jax --- doc/quickref.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/quickref.jax b/doc/quickref.jax index 42a942f9e..ed40fba18 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -1213,7 +1213,7 @@ |:wN| :wN[ext][!] [file] 現在のファイルを保存し、1つ前のファイルを 編集 - in current window in new window ~ + カレントウィンドウで 新しいウィンドウで ~ |:argument| :argu[ment] N :sar[gument] N ファイル N を編集 |:next| :n[ext] :sn[ext] 次のファイルを編集 |:next_f| :n[ext] {arglist} :sn[ext] {arglist} 新たな引数リストを作り From efaf854cee2f90afe6bcb803804100bca4e8d48b Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Wed, 19 Feb 2014 21:41:50 +0900 Subject: [PATCH 522/783] Fix typo --- doc/quickref.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/quickref.jax b/doc/quickref.jax index ed40fba18..25226afba 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -190,7 +190,7 @@ |CTRL-I| N CTRL-I ジャンプリストの N 番目に新しい場所に移動 |:ju| :ju[mps] ジャンプリストを一覧表示 ------------------------------------------------------------------------------ -*Q_vm* 雑他な移動コマンド +*Q_vm* 雑多な移動コマンド |%| % 呼応するカッコ類 ("(", "[", "{") や、コメント、"#if"/ "#else"/"#endif" のペアを検索して移動 From c87bfc34d1a98b7b7bddec94ed5b357195d24192 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 7 Mar 2014 12:00:36 +0900 Subject: [PATCH 523/783] Match to the actual message --- doc/pattern.jax | 3 ++- doc/various.jax | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index ca85a57f5..368aba74c 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -149,7 +149,8 @@ CTRL-C 現在の(検索)コマンドを中止します。MS-DOSではCTRL-Brea 'hlsearch' オプションがオンの場合、最後に使った検索パターンは強調表示されます。 |:nohlsearch| コマンドを使うと、一時的に強調表示をやめさせることができます。 -マッチが見つからなかった場合はエラーが表示されます: *E486* Pattern not found +マッチが見つからなかった場合はエラーが表示されます: *E486* パターンは見つかり +ませんでした Note: |:global| コマンドではこの動作はノーマルメッセージと同じです (Vi 互換の ため)。|:s| コマンドでは "e" フラグを指定することでエラーメッセージを抑制でき ます |:s_flags|。 diff --git a/doc/various.jax b/doc/various.jax index a72f42f0a..540dc3332 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -523,7 +523,7 @@ N *+X11* Unix のみ: ウィンドウタイトルを復帰可能 |X11| :let v:errmsg = "" :silent! /^begin :if v:errmsg != "" - : ... パターンが見付からなかった + : ... パターンは見つかりませんでした < ":silent" は hit-enter プロンプトも抑制します。外部プ ログラムを実行したとき、その出力は表示されたままになっ てしまいます。その場合は|CTRL-L|でスクリーンを綺麗にで From 2a6caa5752124b6f628c0baa96f6c7150ac1649a Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 7 Mar 2014 15:36:41 +0900 Subject: [PATCH 524/783] Update options.jax and quickref.jax --- doc/options.jax | 38 ++++++++++++++++++++++++++++++++++++++ doc/quickref.jax | 6 +++--- en/options.txt | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 3 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index d73dde4ba..6a80d1f60 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4099,6 +4099,26 @@ Note 1番目の形式では、行全体がオプション指定に使われる パターン内で "\c" や "\C" を使うことで、この設定を上書きできる。 |/ignorecase| を参照。 + *'imactivatefunc'* *'imaf'* +'imactivatefunc' 'imaf' 文字列 (既定では "") + グローバル + {Vi にはない} + {Vimが |+xim| 機能と |+GUI_GTK| 機能付きでコンパイル + されたときのみ有効} + このオプションはインプットメソッド (IM) をオン/オフにするのに呼ばれる + 関数を指定する。 + + 例: > + function ImActivateFunc(active) + if a:active + ... 何らかの処理 + else + ... 何らかの処理 + endif + " 戻り値は使われない + endfunction + set imactivatefunc=ImActivateFunc +< *'imactivatekey'* *'imak'* 'imactivatekey' 'imak' 文字列 (既定では "") グローバル @@ -4202,6 +4222,24 @@ Note 1番目の形式では、行全体がオプション指定に使われる AthenaとMotifでは、値を 0 に設定すると正しく働かないようなXIMがある。 そのときは XIM を無効にするために 'imdisable' を使うこと。 + *'imstatusfunc'* *'imsf'* +'imstatusfunc' 'imsf' 文字列 (規定では "") + グローバル + {Vi にはない} + {Vimが |+xim| 機能と |+GUI_GTK| 機能付きでコンパイル + されたときのみ有効} + このオプションはインプットメソッド (IM) の状態を得るのに呼ばれる関数を + 指定する。IMEがオンのとき、関数は正の数を返さなければならない。 + + 例: > + function ImStatusFunc() + let is_active = ...何らかの処理 + return is_active ? 1 : 0 + endfunction + set imstatusfunc=ImStatusFunc +< + NOTE: この関数は頻繁に呼び出されるため、速くなければならない。 + *'include'* *'inc'* 'include' 'inc' 文字列 (既定では "^\s*#\s*include") グローバル/バッファについてローカル |global-local| diff --git a/doc/quickref.jax b/doc/quickref.jax index 25226afba..8584a4e6b 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -754,10 +754,10 @@ 'icon' Vimのアイコン表示でテキストを変更するようにする 'iconstring' Vimのアイコン表示に使用するテキスト 'ignorecase' 'ic' 検索パターンで大文字と小文字を区別しない -'imactivatekey' 'imak' X のインプットメソッドを有効にするキー -'imactivatefunc' 'imaf' X のインプットメソッドを有効/無効にする関数 +'imactivatekey' 'imak' X のインプットメソッドをオンにするキー +'imactivatefunc' 'imaf' X のインプットメソッドをオン/オフにする関数 'imcmdline' 'imc' コマンドライン入力時にIMを有効にする -'imdisable' 'imd' IMを使わない +'imdisable' 'imd' どのモードでもIMを使わない 'iminsert' 'imi' 挿入モードで|:lmap|やIMを使う 'imsearch' 'ims' 検索パターン入力時に|:lmap|やIMを使う 'imstatusfunc' 'imsf' X のインプットメソッドの状態を得る関数 diff --git a/en/options.txt b/en/options.txt index 2f4769fd7..d7d0591b6 100644 --- a/en/options.txt +++ b/en/options.txt @@ -3996,6 +3996,26 @@ A jump table for the options with a short description can be found at |Q_op|. Can be overruled by using "\c" or "\C" in the pattern, see |/ignorecase|. + *'imactivatefunc'* *'imaf'* +'imactivatefunc' 'imaf' string (default "") + global + {not in Vi} + {only available when compiled with |+xim| and + |+GUI_GTK|} + This option specifies a function that will be called to + activate/inactivate Input Method. + + Example: > + function ImActivateFunc(active) + if a:active + ... do something + else + ... do something + endif + " return value is not used + endfunction + set imactivatefunc=ImActivateFunc +< *'imactivatekey'* *'imak'* 'imactivatekey' 'imak' string (default "") global @@ -4092,6 +4112,24 @@ A jump table for the options with a short description can be found at |Q_op|. The value 0 may not work correctly with Athena and Motif with some XIM methods. Use 'imdisable' to disable XIM then. + *'imstatusfunc'* *'imsf'* +'imstatusfunc' 'imsf' string (default "") + global + {not in Vi} + {only available when compiled with |+xim| and + |+GUI_GTK|} + This option specifies a function that is called to obtain the status + of Input Method. It must return a positive number when IME is active. + + Example: > + function ImStatusFunc() + let is_active = ...do something + return is_active ? 1 : 0 + endfunction + set imstatusfunc=ImStatusFunc +< + NOTE: This function is invoked very often. Keep it fast. + *'include'* *'inc'* 'include' 'inc' string (default "^\s*#\s*include") global or local to buffer |global-local| From f9debb38c640222453c4ccb40ada3f6079564746 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 7 Mar 2014 16:22:32 +0900 Subject: [PATCH 525/783] Update eval.jax --- doc/eval.jax | 2 ++ en/eval.txt | 3 +++ 2 files changed, 5 insertions(+) diff --git a/doc/eval.jax b/doc/eval.jax index 49fd0d2fc..e985d8f66 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -3989,6 +3989,7 @@ maparg({name}[, {mode} [, {abbr} [, {dict}]]]) *maparg()* "!" 挿入、コマンドラインモード (|mapmode-ic|) "sid" <sid> マッピングで使用されるスクリプトローカルID (|<SID>|)。 + "nowait" 他の長いマッピングを待たない。(|:map-<nowait>|)。 まずカレントバッファにローカルなマッピングを探し、次のグローバ ルマッピングを探す。 @@ -5180,6 +5181,7 @@ shellescape({string} [, {special}]) *shellescape()* < これはカーソル下のファイルを dir コマンドで表示する。 |system()| を使う場合の例: > :call system("chmod +w -- " . shellescape(expand("%"))) +< |::S| も参照のこと。 shiftwidth() *shiftwidth()* diff --git a/en/eval.txt b/en/eval.txt index 81f1aba57..c3add7443 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -4118,6 +4118,8 @@ maparg({name}[, {mode} [, {abbr} [, {dict}]]]) *maparg()* (|mapmode-ic|) "sid" The script local ID, used for <sid> mappings (|<SID>|). + "nowait" Do not wait for other, longer mappings. + (|:map-<nowait>|). The mappings local to the current buffer are checked first, then the global mappings. @@ -5384,6 +5386,7 @@ shellescape({string} [, {special}]) *shellescape()* < This results in a directory listing for the file under the cursor. Example of use with |system()|: > :call system("chmod +w -- " . shellescape(expand("%"))) +< See also |::S|. shiftwidth() *shiftwidth()* From 296dcf2a6ea0107ffc8e34002b108b4ec51ecf37 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 8 Mar 2014 21:23:15 +0900 Subject: [PATCH 526/783] Revert error message ref c87bfc3 --- doc/pattern.jax | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index 368aba74c..ca85a57f5 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -149,8 +149,7 @@ CTRL-C 現在の(検索)コマンドを中止します。MS-DOSではCTRL-Brea 'hlsearch' オプションがオンの場合、最後に使った検索パターンは強調表示されます。 |:nohlsearch| コマンドを使うと、一時的に強調表示をやめさせることができます。 -マッチが見つからなかった場合はエラーが表示されます: *E486* パターンは見つかり -ませんでした +マッチが見つからなかった場合はエラーが表示されます: *E486* Pattern not found Note: |:global| コマンドではこの動作はノーマルメッセージと同じです (Vi 互換の ため)。|:s| コマンドでは "e" フラグを指定することでエラーメッセージを抑制でき ます |:s_flags|。 From 048a4ec7131fca709f388c2ca505a41372a4537d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 9 Mar 2014 12:21:41 +0900 Subject: [PATCH 527/783] Update some files --- doc/gui.jax | 11 +++++++++-- doc/gui_x11.jax | 4 ++-- en/gui.txt | 11 +++++++++-- en/gui_x11.txt | 4 ++-- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/doc/gui.jax b/doc/gui.jax index 6f69901d1..4503f24ca 100644 --- a/doc/gui.jax +++ b/doc/gui.jax @@ -1,4 +1,4 @@ -*gui.txt* For Vim バージョン 7.4. Last change: 2013 Jun 12 +*gui.txt* For Vim バージョン 7.4. Last change: 2014 Mar 08 VIMリファレンスマニュアル by Bram Moolenaar @@ -100,6 +100,9 @@ GUIウィンドウを開いた直後にいくつかのコマンドを実行し Amiga s:.gvimrc、home:.gvimrc、home:vimfiles:gvimrc あるいは $VIM/.gvimrc +個人的な初期化ファイルは上記の順に検索され、最初に見つかったものだけが読み込ま +れる。 + GUI版のVimでだけ意味を持つオプションがある。'guicursor'、'guifont'、'guipty'、 'guioptions' である。それらは他の全てのオプションと共に|options.txt|で説明され ている。 @@ -129,6 +132,7 @@ Vimは起動時に、スクリーンに合わせてウィンドウの位置を :winp[os] GUI vimウィンドウの左上隅の現在の位置をピクセルで表示する。全 てのバージョンで機能する訳ではない。 + |getwinposx()| と |getwinposy()| も参照のこと。 :winp[os] {X} {Y} *E466* 与えられた{X}と{Y}の座標にGUI vimウィンドウを移動する。座標は @@ -147,8 +151,11 @@ Vimは起動時に、スクリーンに合わせてウィンドウの位置を 期待したよりも高さが低くなるなら、'guiheadroom' オプションを確 認すること。 -X Window Systemでは、このコマンドでVimのウィンドウの情報を得ることができる: > +X Window Systemでは、これらのコマンドでVimのウィンドウの情報を得られる: > :!xwininfo -id $WINDOWID + :!xprop -id $WINDOWID + :execute '!xwininfo -id ' . v:windowid + :execute '!xprop -id ' . v:windowid < *gui-IME* *iBus* X で各国の文字を入力するためのインプットメソッドで XIM フレームワークに依るも diff --git a/doc/gui_x11.jax b/doc/gui_x11.jax index f25b7e95a..09c7c8039 100644 --- a/doc/gui_x11.jax +++ b/doc/gui_x11.jax @@ -1,4 +1,4 @@ -*gui_x11.txt* For Vim バージョン 7.4. Last change: 2011 Sep 14 +*gui_x11.txt* For Vim バージョン 7.4. Last change: 2014 Mar 08 VIMリファレンスマニュアル by Bram Moolenaar @@ -442,7 +442,7 @@ GUI ウィンドウの位置とサイズは保存されない、それはウィ KDE バージョンの Vim は存在しない。Qt ツールキットを使って移植する作業が行われ ていたが、ちゃんと動かなかったので、今は放棄されている。作業は Yzis で継続され -ている: www.yzis.org +ている: https://github.com/chrizel/Yzis ============================================================================== 8. コンパイル *gui-x11-compiling* diff --git a/en/gui.txt b/en/gui.txt index aeda3f2f6..d77976330 100644 --- a/en/gui.txt +++ b/en/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 7.4. Last change: 2013 Jun 12 +*gui.txt* For Vim version 7.4. Last change: 2014 Mar 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -101,6 +101,9 @@ Recommended place for your personal GUI initializations: Amiga s:.gvimrc, home:.gvimrc, home:vimfiles:gvimrc or $VIM/.gvimrc +The personal initialization files are searched in the order specified above +and only the first one that is found is read. + There are a number of options which only have meaning in the GUI version of Vim. These are 'guicursor', 'guifont', 'guipty' and 'guioptions'. They are documented in |options.txt| with all the other options. @@ -130,6 +133,7 @@ task bar with the 'guiheadroom' option. :winp[os] Display current position of the top left corner of the GUI vim window in pixels. Does not work in all versions. + Also see |getwinposx()| and |getwinposy()|. :winp[os] {X} {Y} *E466* Put the GUI vim window at the given {X} and {Y} coordinates. @@ -148,8 +152,11 @@ task bar with the 'guiheadroom' option. option. If you are running the X Window System, you can get information about the -window Vim is running in with this command: > +window Vim is running in with these commands: > :!xwininfo -id $WINDOWID + :!xprop -id $WINDOWID + :execute '!xwininfo -id ' . v:windowid + :execute '!xprop -id ' . v:windowid < *gui-IME* *iBus* Input methods for international characters in X that rely on the XIM diff --git a/en/gui_x11.txt b/en/gui_x11.txt index 5a4776502..f085e2f2c 100644 --- a/en/gui_x11.txt +++ b/en/gui_x11.txt @@ -1,4 +1,4 @@ -*gui_x11.txt* For Vim version 7.4. Last change: 2011 Sep 14 +*gui_x11.txt* For Vim version 7.4. Last change: 2014 Mar 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -442,7 +442,7 @@ command line argument). *gui-x11-kde* There is no KDE version of Vim. There has been some work on a port using the Qt toolkit, but it never worked properly and it has been abandoned. Work -continues on Yzis: www.yzis.org. +continues on Yzis: https://github.com/chrizel/Yzis. ============================================================================== 8. Compiling *gui-x11-compiling* From c287d2c27893122f609cedcdabc3ccdbada8e660 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 13 Mar 2014 09:02:24 +0900 Subject: [PATCH 528/783] Update options.jax --- doc/options.jax | 2 +- en/options.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 6a80d1f60..61d42aeba 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4755,7 +4755,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'lispwords'* *'lw'* 'lispwords' 'lw' 文字列 (既定値はとても長い) - グローバル + グローバル/バッファについてローカル |global-local| {Vi にはない} {Vimが |+lispindent| 機能付きでコンパイルされたときの み有効} diff --git a/en/options.txt b/en/options.txt index d7d0591b6..b1abdd8ea 100644 --- a/en/options.txt +++ b/en/options.txt @@ -4629,7 +4629,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'lispwords'* *'lw'* 'lispwords' 'lw' string (default is very long) - global + global or local to buffer |global-local| {not in Vi} {not available when compiled without the |+lispindent| feature} From 8bf237a5306c415a14fb69f8d16c15c8d178aee7 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 14 Mar 2014 09:15:44 +0900 Subject: [PATCH 529/783] Update starting.jax --- doc/starting.jax | 3 +++ en/starting.txt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/doc/starting.jax b/doc/starting.jax index f564d2d64..bd05c3349 100644 --- a/doc/starting.jax +++ b/doc/starting.jax @@ -747,6 +747,9 @@ Evimでは以下のオプションが標準設定から変更される: Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc か $VIM/.vimrc + 初期化ファイルは上記の順に検索され、最初に見つかったものだけが読み込ま + れる。 + Vimが "-u filename" で起動された場合、デフォルトのvimrcの代わりに "filename" が使われる。続く初期化処理の4.までがスキップされる。 $MYVIMRC は設定されない。 diff --git a/en/starting.txt b/en/starting.txt index 0e4b8362f..fb8117f3d 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -766,6 +766,9 @@ accordingly. Vim proceeds in this order: Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc or $VIM/.vimrc + The files are searched in the order specified above and only the first + one that is found is read. + If Vim was started with "-u filename", the file "filename" is used. All following initializations until 4. are skipped. $MYVIMRC is not set. From bc92e4cb5bd57a742c79e9eba60a8248c38f1352 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Tue, 1 Apr 2014 23:49:40 +0900 Subject: [PATCH 530/783] Update some files --- doc/change.jax | 4 ++-- doc/develop.jax | 2 +- doc/eval.jax | 4 ++-- en/change.txt | 2 +- en/develop.txt | 3 +-- en/eval.txt | 4 ++-- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index 5a1a2504a..e73c87d6a 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -1569,8 +1569,8 @@ autocommand と連携して、クールに振舞うはずである。 ============================================================================== 7. テキストのソート *sorting* -Vimはソート関数とソートコマンドを備えている。ソート関数については|sort()|を参 -照。 +Vimはソート関数とソートコマンドを備えている。ソート関数については |sort()|、 +|uniq()| を参照。 *:sor* *:sort* :[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] diff --git a/doc/develop.jax b/doc/develop.jax index 6eca032cc..ee1e5f3c6 100644 --- a/doc/develop.jax +++ b/doc/develop.jax @@ -1,4 +1,4 @@ -*develop.txt* For Vim バージョン 7.4. Last change: 2013 Apr 27 +*develop.txt* For Vim バージョン 7.4. Last change: 2014 Mar 27 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/doc/eval.jax b/doc/eval.jax index e985d8f66..e82523dcb 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -2724,7 +2724,7 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* <cfile> カーソルの下のファイル名 <afile> autocmdのファイル名 <abuf> autocmdのバッファ名 - <sfile> 取り込み(source)中のファイル名 + <sfile> 取り込み(source)中のファイル名、関数名 <slnum> 取り込み(source)中の行番号 <cword> カーソル下の単語(word) <cWORD> カーソル下の単語(WORD) @@ -5707,7 +5707,7 @@ tabpagenr([{arg}]) *tabpagenr()* この番号はコマンド|:tab|で指定できるものと同じである。 -tabpagewinnr({tabarg}, [{arg}]) *tabpagewinnr()* +tabpagewinnr({tabarg} [, {arg}]) *tabpagewinnr()* |winnr()|と同様だが、タブページ{tabarg}を対象とする。 {tabarg}は対象とするタブページの番号を指定する。 {arg}は|winnr()|の場合と同じように扱われる。すなわち: diff --git a/en/change.txt b/en/change.txt index 3c459f1a4..9d995577f 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1628,7 +1628,7 @@ And a few warnings: 7. Sorting text *sorting* Vim has a sorting function and a sorting command. The sorting function can be -found here: |sort()|. +found here: |sort()|, |uniq()|. *:sor* *:sort* :[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] diff --git a/en/develop.txt b/en/develop.txt index 757a45b2e..6e6feb32d 100644 --- a/en/develop.txt +++ b/en/develop.txt @@ -1,4 +1,4 @@ -*develop.txt* For Vim version 7.4. Last change: 2013 Apr 27 +*develop.txt* For Vim version 7.4. Last change: 2014 Mar 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -19,7 +19,6 @@ code. Vim is open source software. Everybody is encouraged to contribute to help improving Vim. For sending patches a context diff "diff -c" is preferred. -Also see http://www.vim.org/tips/tip.php?tip_id=618. Also see http://vim.wikia.com/wiki/How_to_make_and_submit_a_patch. ============================================================================== diff --git a/en/eval.txt b/en/eval.txt index c3add7443..6bf3c181d 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -2798,7 +2798,7 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* <afile> autocmd file name <abuf> autocmd buffer number (as a String!) <amatch> autocmd matched name - <sfile> sourced script file name + <sfile> sourced script file or function name <slnum> sourced script file line number <cword> word under the cursor <cWORD> WORD under the cursor @@ -5922,7 +5922,7 @@ tabpagenr([{arg}]) *tabpagenr()* The number can be used with the |:tab| command. -tabpagewinnr({tabarg}, [{arg}]) *tabpagewinnr()* +tabpagewinnr({tabarg} [, {arg}]) *tabpagewinnr()* Like |winnr()| but for tab page {tabarg}. {tabarg} specifies the number of tab page to be used. {arg} is used like with |winnr()|: From af78895705380518b0e0537063621c5bbfed3f19 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 2 Apr 2014 21:15:05 +0900 Subject: [PATCH 531/783] improve translation --- doc/repeat.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/repeat.jax b/doc/repeat.jax index c56276386..28f799fc7 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -207,8 +207,8 @@ Vimスクリプトの書き方はユーザーマニュアルの41章|usr_41.txt| scriptencoding iso-8859-5 scriptencoding cp932 < - [encoding]が空のときは変換はされない。これは文字コード - の変換を限定するために使う: > + [encoding]が空のときは変換はされない。これはそれ以降の + 行の文字コードの変換を限定するために使える: > scriptencoding euc-jp ... 変換される ... scriptencoding @@ -348,7 +348,7 @@ UNIXで作られたファイル)、'fileformats' が空でかつ先頭行が<CR> :set cpo-=C Note 関数の中でその手のコマンドを実行するには、関数定義の際に 'C' フラグを追加 -する必要があり、それが実行される際にではない。 +する必要があり、それが実行される際にではない。 > :set cpo+=C :function Foo() :1append From 7b6679dac5e033f169cba2858194418f63026ebc Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 7 Apr 2014 23:54:08 +0900 Subject: [PATCH 532/783] Update eval.txt --- doc/eval.jax | 9 +++++---- en/eval.txt | 11 ++++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index e82523dcb..23e773c13 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -140,7 +140,7 @@ empty()を使用して次のようにする。 > 1.3 リスト ~ - *List* *Lists* *E686* + *list* *List* *Lists* *E686* リストとは順序を保つ要素の列である。要素はどんな型でもよい。要素へはインデック ス番号を使ってアクセスする。列の任意の位置に要素を追加したり削除することができ る。 @@ -310,6 +310,7 @@ Note リストの比較について注意: 2つのリストは、同じ長さを 要素の順番を変更する: > :call sort(list) " リストをアルファベット順にソート :call reverse(list) " 要素の順序を反転させる + :call uniq(sort(list)) " ソートして重複を削除する for ループ ~ @@ -375,7 +376,7 @@ Note リストの全要素が同じ型でなければならない。そうでな 1.4 辞書 ~ - *Dictionaries* *Dictionary* + *dict* *Dictionaries* *Dictionary* 辞書とは連想配列である。各要素はキーと値を持つ。要素はキーによって特定できる。 要素は特に順序を持たずに保持される。 @@ -967,7 +968,7 @@ number 数定数 *expr-number* -文字列 *expr-string* *E114* +文字列 *string* *expr-string* *E114* ------ "string" 文字列定数 *expr-quote* @@ -1623,7 +1624,7 @@ v:version Vimのバージョン番号。メジャーバージョン番号は100 5.1 (5.01)は501となる。読出し専用。また "version" は、以前の版 のVimとの互換性の為に動作する。 特定のパッチが適用されているかを調べるには|has()|を使う。例: > - if has("patch123") + if has("patch-7.4.123") < 5.0と5.1には両方ともパッチ123が存在しているが、バージョンが違 えば番号は同じでもパッチの内容は全く異なっている。 diff --git a/en/eval.txt b/en/eval.txt index 6bf3c181d..840591f8b 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -148,7 +148,7 @@ arguments: > 1.3 Lists ~ - *List* *Lists* *E686* + *list* *List* *Lists* *E686* A List is an ordered sequence of items. An item can be of any type. Items can be accessed by their index number. Items can be added and removed at any position in the sequence. @@ -327,6 +327,7 @@ examples: > Changing the order of items in a list: > :call sort(list) " sort a list alphabetically :call reverse(list) " reverse the order of items + :call uniq(sort(list)) " sort and remove duplicates For loop ~ @@ -393,7 +394,7 @@ example, to add up all the numbers in a list: > 1.4 Dictionaries ~ - *Dictionaries* *Dictionary* + *dict* *Dictionaries* *Dictionary* A Dictionary is an associative array: Each entry has a key and a value. The entry can be located with the key. The entries are stored without a specific ordering. @@ -1004,7 +1005,7 @@ function. Example: > -string *expr-string* *E114* +string *string* *expr-string* *E114* ------ "string" string constant *expr-quote* @@ -1143,7 +1144,7 @@ specified by what is prepended: |local-variable| l: Local to a function. |script-variable| s: Local to a |:source|'ed Vim script. |function-argument| a: Function argument (only inside a function). -|vim-variable| v: Global, predefined by Vim. +|vim-variable| v: Global, predefined by Vim. The scope name by itself can be used as a |Dictionary|. For example, to delete all script-local variables: > @@ -1671,7 +1672,7 @@ v:version Version number of Vim: Major version number times 100 plus is 501. Read-only. "version" also works, for backwards compatibility. Use |has()| to check if a certain patch was included, e.g.: > - if has("patch123") + if has("patch-7.4.123") < Note that patch numbers are specific to the version, thus both version 5.0 and 5.1 may have a patch 123, but these are completely different. From 4e1feb76c51f04dd66f44fe22967e4d4fa399568 Mon Sep 17 00:00:00 2001 From: thinca <thinca@gmail.com> Date: Fri, 11 Apr 2014 00:12:09 +0900 Subject: [PATCH 533/783] Fix typo --- doc/gui_x11.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/gui_x11.jax b/doc/gui_x11.jax index 09c7c8039..4ff53d82f 100644 --- a/doc/gui_x11.jax +++ b/doc/gui_x11.jax @@ -314,7 +314,7 @@ X11に組み込まれたポインタを使うことができる。 GUIのGTKバージョンはほんの少し異なった動作をする。 -GTKは従来のXのリソース設定に使_わない_。したがって、~/.Xdefaultsや +GTKは従来のXのリソース設定を使_わない_。したがって、~/.Xdefaultsや app-defaultsは使われない。 伝統的なXコマンドの引数はサポートされない。(例えば -bg, -fg, などの要素)。サ ポートされているのは: From 03f111f277f75e138e43d735396284c13f64ed0e Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 17 May 2014 19:59:04 +0900 Subject: [PATCH 534/783] fixed #101 --- doc/motion.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/motion.jax b/doc/motion.jax index 46d6eb3e8..58e902dfb 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -867,8 +867,8 @@ g'{mark} g`{mark} なんらかのオペレータコマンドを実行した後は、カーソルはオペレータを施したテキス トの初めに置かれます。プットコマンド("p" もしくは "P")の後は、カーソルは挿入さ れた最初の行に位置する場合と最後に挿入された文字に位置する場合があります。上の -4つのコマンドはカーソルをどちらかの終わりに位置させます。例: 10行ヤンクした後、 -その行の内の最後の行に移動したい場合は: "10Y']"。数行を "p" コマンドで挿入した +4つのコマンドはカーソルをどちらかの端に位置させます。例: 10行ヤンクした後、そ +の行の内の最後の行に移動したい場合は: "10Y']"。数行を "p" コマンドで挿入した 後、1番下に挿入された行に移動したい場合は: "p']"。これはすでに挿入済みのテキス トに関しても動作させることができます。 From 781c4219332adb0be21d26b91842bd79617c9907 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Sat, 17 May 2014 20:17:42 +0900 Subject: [PATCH 535/783] fix layout --- doc/motion.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/motion.jax b/doc/motion.jax index 58e902dfb..ed00f23c0 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -751,7 +751,7 @@ m' or m` 直前位置マークをセットします。"''" もしくは "``" せん。ですのでカーソルは動きません)。 *m[* *m]* -m[ or m] マーク |'[| or |']| をセットします。オペレータコマンド +m[ or m] マーク |'[| or |']| をセットします。オペレータコマンド が複数のコマンドでシミュレートされるときに便利です。 (移動コマンドではありません。ですのでカーソルは動きま せん)。 From dc9154c6f01484ae4964eb9665499fd923e6aa7e Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 18 May 2014 13:07:57 +0900 Subject: [PATCH 536/783] Update some files --- doc/sign.jax | 3 ++- doc/usr_30.jax | 4 ++-- doc/usr_40.jax | 2 +- doc/usr_42.jax | 2 +- doc/various.jax | 11 ++++++++--- doc/vi_diff.jax | 2 +- doc/visual.jax | 2 +- en/sign.txt | 3 ++- en/usr_30.txt | 4 ++-- en/usr_40.txt | 2 +- en/usr_42.txt | 2 +- en/various.txt | 11 ++++++++--- en/vi_diff.txt | 2 +- en/visual.txt | 2 +- 14 files changed, 32 insertions(+), 20 deletions(-) diff --git a/doc/sign.jax b/doc/sign.jax index 444d8f780..968a6bbbb 100644 --- a/doc/sign.jax +++ b/doc/sign.jax @@ -1,4 +1,4 @@ -*sign.txt* For Vim バージョン 7.4. Last change: 2013 Nov 17 +*sign.txt* For Vim バージョン 7.4. Last change: 2014 May 07 VIMリファレンスマニュアル by Gordon Prieur @@ -143,6 +143,7 @@ SignColumnの色を使う|hl-SignColumn|。色を設定するには次のよう これは既に設置された目印を動かすことなく変更するのに使われる。 (例: デバッガがブレークポイントで停止した時) + *E885* :sign place {id} name={name} buffer={nr} 上に同じ。バッファ番号を使用していることが異なる。 diff --git a/doc/usr_30.jax b/doc/usr_30.jax index 2e0b2f292..6a6ad1968 100644 --- a/doc/usr_30.jax +++ b/doc/usr_30.jax @@ -126,7 +126,7 @@ Vim にはクイックフィックス (quickfix) 機能があります。これ プログラムの設定には特殊なキーワードが使えます。文字 % はカレントファイルの名 前に展開されます。例えば次のように設定すると: > - :set makeprg=make\ % + :set makeprg=make\ %:S main.c を編集しているときに ":make" を実行すると次のコマンドが実行されます: > @@ -135,7 +135,7 @@ main.c を編集しているときに ":make" を実行すると次のコマン これ自体はそれほど便利ではありませんが、すこし変更して :r (root) 修飾子を使う とどうでしょう: > - :set makeprg=make\ %:r.o + :set makeprg=make\ %:r:S.o これで、実行されるコマンドは次のようになります: > diff --git a/doc/usr_40.jax b/doc/usr_40.jax index e39edd915..b99d6cee9 100644 --- a/doc/usr_40.jax +++ b/doc/usr_40.jax @@ -210,7 +210,7 @@ Vim は拡張可能なエディタです。よく使う操作を一つにまと 文字でコマンドを区切ります。そのため、マップの中では | 文字が使えません。この 文字を使いたい場合は <Bar> (5文字) を使ってください。例: > - :map <F8> :write <Bar> !checkin %<CR> + :map <F8> :write <Bar> !checkin %:S<CR> 同じ問題は ":unmap" コマンドにもあります。":unmap" の場合はさらに末尾のスペー スにも注意しなければなりません。以下の二つのコマンドは動作が違います: > diff --git a/doc/usr_42.jax b/doc/usr_42.jax index 72710a004..c5e593b9c 100644 --- a/doc/usr_42.jax +++ b/doc/usr_42.jax @@ -321,7 +321,7 @@ Vim には 28 個のアイコンが組み込まれています。その一覧は 次のコマンドで新しい項目を追加できます: > :tmenu ToolBar.Compile Compile the current file - :amenu ToolBar.Compile :!cc % -o %:r<CR> + :amenu ToolBar.Compile :!cc %:S -o %:r:S<CR> アイコンは別途作成する必要があります。MS-Windows では "Compile.bmp" という名前 の bitmap 形式の画像を使います。Unix では "Compile.xpm" という名前の XPM 形式 diff --git a/doc/various.jax b/doc/various.jax index 540dc3332..128b7145a 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -234,14 +234,14 @@ g8 カーソル位置の文字のバイト列を 16 進数で表示します *:!cmd* *:!* *E34* :!{cmd} シェルで {cmd} を実行します。'shell' と 'shelltype'も 参照。 + {cmd} の中の '!' は以前使用した外部プログラムに置 き換えられます ('cpoptions' も参照)。'!' の前にバック スラッシュがある場合はバックスラッシュが削除され '!' は置き換えられません。 例: ":!ls" を実行後の ":!echo !\! \\!" は "echo ls ! \!" と解釈、実行されます。 - 外部プログラムを実行した後で、開いているファイルのタイ - ムスタンプがチェックされます |timestamp|。 + {cmd} の中の '|' はシェルに渡されます。'|' を使って Vim コマンドを続けて書くことはできません。(|:bar|参 照)。 @@ -251,10 +251,15 @@ g8 カーソル位置の文字のバイト列を 16 進数で表示します れ、改行文字は {cmd} の一部として解釈されます。改行文 字の前にバックスラッシュがいくつあっても、一つだけが削 除されます。 + Unix ではシェルを非対話型モードで起動します。対話型 モードで起動したい場合 (aliasを使いたい場合など) は、 'shellcmdflag' に "-ic" を設定してください。 Win32の場合は|:!start|も参照。 + + 外部プログラムを実行した後で、開いているファイルのタイ + ムスタンプとサイズがチェックされます |timestamp|。 + 外部プログラムはメッセージを出力するかもしれないので、 外部プログラムを実行した後にスクリーンが再描画されます。 そのため、プログラムの出力を見逃してしまわないように、 @@ -418,7 +423,7 @@ N *+user_commands* ユーザー定義コマンド |user-commands| N *+viminfo* |'viminfo'| N *+vertsplit* ウィンドウの垂直分割 |:vsplit| N *+virtualedit* |'virtualedit'| -S *+visual* ビジュアルモード |Visual-mode| +S *+visual* ビジュアルモード |Visual-mode| 7.4.200からは常に有効 N *+visualextra* 拡張ビジュアルモードコマンド |blockwise-operators| N *+vreplace* |gR|と|gr| N *+wildignore* |'wildignore'| diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index f5778787b..ee9bda229 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -550,7 +550,7 @@ Vi では置換モードで <CR> を打ち込んだときに文字を削除す を実行するのと同じです。 ":w!" コマンドは上書き禁止されているファイルでも常に書き込みます。Vi では -":!chmod+w %" してから ":set noro" としなければなりませんでした。 +":!chmod+w %:S" してから ":set noro" としなければなりませんでした。 'tildeop' がセットされていると "~" は演算コマンドとして動作します(移動コマンド を後に続けます)。 diff --git a/doc/visual.jax b/doc/visual.jax index 251549835..1ffd403f6 100644 --- a/doc/visual.jax +++ b/doc/visual.jax @@ -22,7 +22,7 @@ {Vi にはビジュアルモードは無く、"visual" という名前はExモードとは区別するため に、ノーマルモードを指して使われている} -{|+visual| 機能なしでコンパイルされていると使えない} +{Vim 7.4.200 からは |+visual| 機能は常に含まれる} ============================================================================== 1. ビジュアルモードを使う *visual-use* diff --git a/en/sign.txt b/en/sign.txt index 79c101109..6c9207307 100644 --- a/en/sign.txt +++ b/en/sign.txt @@ -1,4 +1,4 @@ -*sign.txt* For Vim version 7.4. Last change: 2013 Nov 17 +*sign.txt* For Vim version 7.4. Last change: 2014 May 07 VIM REFERENCE MANUAL by Gordon Prieur @@ -137,6 +137,7 @@ PLACING SIGNS *:sign-place* *E158* :sign place {id} line={lnum} name={name} buffer={nr} Same, but use buffer {nr}. + *E885* :sign place {id} name={name} file={fname} Change the placed sign {id} in file {fname} to use the defined sign {name}. See remark above about {fname} |:sign-fname|. diff --git a/en/usr_30.txt b/en/usr_30.txt index 52f437572..b2be51298 100644 --- a/en/usr_30.txt +++ b/en/usr_30.txt @@ -128,7 +128,7 @@ be escaped with a backslash. Example: > You can include special Vim keywords in the command specification. The % character expands to the name of the current file. So if you execute the command: > - :set makeprg=make\ % + :set makeprg=make\ %:S When you are editing main.c, then ":make" executes the following command: > @@ -137,7 +137,7 @@ When you are editing main.c, then ":make" executes the following command: > This is not too useful, so you will refine the command a little and use the :r (root) modifier: > - :set makeprg=make\ %:r.o + :set makeprg=make\ %:r:S.o Now the command executed is as follows: > diff --git a/en/usr_40.txt b/en/usr_40.txt index b1108a5c3..9d706481d 100644 --- a/en/usr_40.txt +++ b/en/usr_40.txt @@ -209,7 +209,7 @@ The ":map" command can be followed by another command. A | character separates the two commands. This also means that a | character can't be used inside a map command. To include one, use <Bar> (five characters). Example: > - :map <F8> :write <Bar> !checkin %<CR> + :map <F8> :write <Bar> !checkin %:S<CR> The same problem applies to the ":unmap" command, with the addition that you have to watch out for trailing white space. These two commands are different: diff --git a/en/usr_42.txt b/en/usr_42.txt index a1cd533e2..1d16112aa 100644 --- a/en/usr_42.txt +++ b/en/usr_42.txt @@ -311,7 +311,7 @@ redefine what these items do (after the default menus are setup). item with a bitmap. For example, define a new toolbar item with: > :tmenu ToolBar.Compile Compile the current file - :amenu ToolBar.Compile :!cc % -o %:r<CR> + :amenu ToolBar.Compile :!cc %:S -o %:r:S<CR> Now you need to create the icon. For MS-Windows it must be in bitmap format, with the name "Compile.bmp". For Unix XPM format is used, the file name is diff --git a/en/various.txt b/en/various.txt index 4a1c64a73..56c387b34 100644 --- a/en/various.txt +++ b/en/various.txt @@ -234,13 +234,13 @@ g8 Print the hex values of the bytes used in the *:!cmd* *:!* *E34* :!{cmd} Execute {cmd} with the shell. See also the 'shell' and 'shelltype' option. + Any '!' in {cmd} is replaced with the previous external command (see also 'cpoptions'). But not when there is a backslash before the '!', then that backslash is removed. Example: ":!ls" followed by ":!echo ! \! \\!" executes "echo ls ! \!". - After the command has been executed, the timestamp of - the current file is checked |timestamp|. + A '|' in {cmd} is passed to the shell, you cannot use it to append a Vim command. See |:bar|. A newline character ends {cmd}, what follows is @@ -249,10 +249,15 @@ g8 Print the hex values of the bytes used in the and {cmd} continues. It doesn't matter how many backslashes are before the newline, only one is removed. + On Unix the command normally runs in a non-interactive shell. If you want an interactive shell to be used (to use aliases) set 'shellcmdflag' to "-ic". For Win32 also see |:!start|. + + After the command has been executed, the timestamp and + size of the current file is checked |timestamp|. + Vim redraws the screen after the command is finished, because it may have printed any text. This requires a hit-enter prompt, so that you can read any messages. @@ -418,7 +423,7 @@ N *+user_commands* User-defined commands. |user-commands| N *+viminfo* |'viminfo'| N *+vertsplit* Vertically split windows |:vsplit| N *+virtualedit* |'virtualedit'| -S *+visual* Visual mode |Visual-mode| +S *+visual* Visual mode |Visual-mode| Always enabled since 7.4.200. N *+visualextra* extra Visual mode commands |blockwise-operators| N *+vreplace* |gR| and |gr| N *+wildignore* |'wildignore'| diff --git a/en/vi_diff.txt b/en/vi_diff.txt index 45fe7de08..aadbf9b41 100644 --- a/en/vi_diff.txt +++ b/en/vi_diff.txt @@ -540,7 +540,7 @@ character (and shows it immediately). Added :wnext command. Same as ":write" followed by ":next". The ":w!" command always writes, also when the file is write protected. In Vi -you would have to do ":!chmod +w %" and ":set noro". +you would have to do ":!chmod +w %:S" and ":set noro". When 'tildeop' has been set, "~" is an operator (must be followed by a movement command). diff --git a/en/visual.txt b/en/visual.txt index cabf5f7e9..0c6d9b03b 100644 --- a/en/visual.txt +++ b/en/visual.txt @@ -22,7 +22,7 @@ This is introduced in section |04.4| of the user manual. {Vi has no Visual mode, the name "visual" is used for Normal mode, to distinguish it from Ex mode} -{not available when the |+visual| feature was disabled when compiling} +{Since Vim 7.4.200 the |+visual| feature is always included} ============================================================================== 1. Using Visual mode *visual-use* From a02924b3b959d31faa1139062fc7f1b7a1f73d23 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 18 May 2014 20:45:03 +0900 Subject: [PATCH 537/783] Remove unnecessary text --- doc/syntax.jax | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/syntax.jax b/doc/syntax.jax index a3dc07f8c..5a61d3445 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -874,7 +874,6 @@ c_no_curly_error { と } が第1桁にあるときを除き、[] と () の内 をエラーとして表示しない。 c_curly_error 対応する { がない } をハイライトする。これを有効に すると、ファイルの先頭から同期が始まるため、遅くなる。 - start of the file, can be slow c_no_ansi ANSI標準の型と定数をハイライトしない c_ansi_typedefs ... 但し標準ANSI型はハイライトする c_ansi_constants ... 但し標準ANSI定数はハイライトする From 017ff8e1f238e0ba2e39ca0cb2e927665ac961fd Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 23 May 2014 20:26:25 +0900 Subject: [PATCH 538/783] Update some files --- doc/diff.jax | 2 +- doc/digraph.jax | 2 +- doc/indent.jax | 9 ++++++--- doc/index.jax | 5 +++-- doc/quickfix.jax | 12 ++++++------ doc/repeat.jax | 14 +++++++++++--- en/diff.txt | 2 +- en/digraph.txt | 2 +- en/indent.txt | 9 ++++++--- en/index.txt | 7 ++++--- en/quickfix.txt | 12 ++++++------ en/repeat.txt | 14 +++++++++++--- 12 files changed, 57 insertions(+), 33 deletions(-) diff --git a/doc/diff.jax b/doc/diff.jax index b6429c233..6bbe296d1 100644 --- a/doc/diff.jax +++ b/doc/diff.jax @@ -93,7 +93,7 @@ Vimが各ファイルについてウィンドウを開く時に起こること :difft[his] 現在のウィンドウを差分ウィンドウの1つにする。これにより "vimdiff" と同じオプションが設定される。 -:diffp[atch] {patchfile} *E816* *:diffp* *:diffpatch* +:diffp[atch] {patchfile} *E816* *:diffp* *:diffpatch* {patchfile}内の差分情報を現在のバッファへ適用し、結果を新しく 作成したバッファへ出力する。オプションは "vimdiff" と同様に設 定される。 diff --git a/doc/digraph.jax b/doc/digraph.jax index e64b11e6f..57b96492a 100644 --- a/doc/digraph.jax +++ b/doc/digraph.jax @@ -1074,7 +1074,7 @@ char digraph hex dec official name ~ ⊥ -T 22A5 8869 UP TACK ⋅ .P 22C5 8901 DOT OPERATOR ⋮ :3 22EE 8942 VERTICAL ELLIPSIS -⋯ .3 22EF 8943 MIDLINE HORIZONTAL ELLIPSIS +⋯ .3 22EF 8943 MIDLINE HORIZONTAL ELLIPSIS ⌂ Eh 2302 8962 HOUSE ⌈ <7 2308 8968 LEFT CEILING ⌉ >7 2309 8969 RIGHT CEILING diff --git a/doc/indent.jax b/doc/indent.jax index 17bc0919b..d84436b49 100644 --- a/doc/indent.jax +++ b/doc/indent.jax @@ -591,7 +591,6 @@ searchpairpos() による検索の最大範囲を設定する。大きな値を " 初期設定 let g:clojure_maxlines = 100 < - *g:clojure_fuzzy_indent* *g:clojure_fuzzy_indent_patterns* *g:clojure_fuzzy_indent_blacklist* @@ -642,7 +641,6 @@ Clojure のいくつかのフォームは、'lispwords' に依らず、すべて let g:clojure_special_indent_words = \ 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn' < - *g:clojure_align_multiline_strings* 複数行文字列を、クォート文字と同じ列で揃えるのではなく、クォート文字の一つ後ろ @@ -735,7 +733,7 @@ PHP ファイルを読み込んだとき、|BufRead| のタイミングで自動 下記のグローバル変数をセットすることで、PHP のインデントをカスタマイズできる。 - *php-comment* + *php-comment* *PHP_autoformatcomment* デフォルトでは有効になっているコメントの自動整形を無効化するには ('formatoptions' に従うようにするには)次のようにする: > :let g:PHP_autoformatcomment = 0 @@ -744,6 +742,7 @@ PHP ファイルを読み込んだとき、|BufRead| のタイミングで自動 詳しくは |fo-table| を参照。 ------------- + *PHP_outdentSLComments* 一行コメントに追加のインデントを加える: > :let g:PHP_outdentSLComments = N @@ -755,6 +754,7 @@ N は 'shiftwidth' に追加される値。 /* Comment */ ------------- + *PHP_default_indenting* すべての PHP の行に対しインデントを増やすには、次のようにする: > :let g:PHP_default_indenting = N @@ -778,11 +778,13 @@ PHP タグを囲まれているコードとしてインデントする: > :let g:PHP_outdentphpescape = 0 ------------- + *PHP_removeCRwhenUnix* 'fileformat' を "unix" にしているとき、自動的に '\r' を削除するには次のよう にする: > :let g:PHP_removeCRwhenUnix = 1 ------------- + *PHP_BracesAtCodeLevel* 波カッコ {} をその内側と同じインデントレベルにするには: > :let g:PHP_BracesAtCodeLevel = 1 @@ -801,6 +803,7 @@ NOTE: このオプションをオンにすると、最適化の一部が効か ントが少し遅くなる。 ------------- + *PHP_vintage_case_default_indent* switch() ブロック内の 'case:' と 'default:' をインデントさせるには: > :let g:PHP_vintage_case_default_indent = 1 diff --git a/doc/index.jax b/doc/index.jax index 258633598..fd8e9e44a 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1146,8 +1146,8 @@ You found it, Arthur! *holy-grail* コマンド |:cabclear| :cabc[lear] コマンドラインモードにおけるすべての 短縮入力を削除 -|:caddbuffer| :caddb[uffer] バッファからエラーを追加する -|:caddexpr| :cad[dexpr] 式からエラーを追加する +|:caddbuffer| :cad[dbuffer] バッファからエラーを追加する +|:caddexpr| :cadde[xpr] 式からエラーを追加する |:caddfile| :caddf[ile] 現在のQuickFixリストにエラーメッセージを追加 |:call| :cal[l] 関数を実行する |:catch| :cat[ch] :tryコマンドの一部 @@ -1407,6 +1407,7 @@ You found it, Arthur! *holy-grail* |:noreabbrev| :norea[bbrev] 再マップされない短縮入力を定義する |:noremenu| :noreme[nu] 再マップされないメニューを定義する |:normal| :norm[al] ノーマルモードのコマンドを実行する +|:noswapfile| :nos[wapfile] スワップファイルを作らずにコマンドを実行する |:number| :nu[mber] 行番号を表示 |:nunmap| :nun[map] ノーマルモードを対象とする ":unmap" コマンド |:nunmenu| :nunme[nu] ノーマルモードのメニューを削除 diff --git a/doc/quickfix.jax b/doc/quickfix.jax index fa183cffc..de780bb0e 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -189,8 +189,8 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる :lgetb[uffer] [bufnr] ":cgetbuffer" と同様だが、QuickFixリストでなく、カレン トウィンドウのロケーションリストが使われる。 - *:caddb* *:caddbuffer* -:caddb[uffer] [bufnr] カレントバッファからエラーリストを読み込み、現在の + *:cad* *:caddbuffer* +:cad[dbuffer] [bufnr] カレントバッファからエラーリストを読み込み、現在の QuickFixリストにエラーを追加する。QuickFixリストがまだ 存在しない場合は、新しいリストが作成される。それ以外は ":cbuffer" と同じ。 @@ -225,8 +225,8 @@ AmigaでManx's Aztec C compilerを使っているなら、Vimと連携させる :lgete[xpr] {expr} |:cgetexpr|と同様だが、QuickFixリストでなく、カレ ントウィンドウのロケーションリストが使われる。 - *:cad* *:caddexpr* -:cad[dexpr] {expr} {expr}を評価し、結果の行を現在のQuickFixリストに追加す + *:cadde* *:caddexpr* +:cadde[xpr] {expr} {expr}を評価し、結果の行を現在のQuickFixリストに追加す る。QuickFixリストがまだ無い場合は、新しいリストが作成 される。現在のカーソル位置は変わらない。より詳しくは |:cexpr|を参照。 @@ -803,7 +803,7 @@ http://pyunit.sourceforge.net われると思われるが、それだけである。 よって、'makeprg' に対する実用的な値は setlocal makeprg=./alltests.py " テストスイートを走らせる - setlocal makeprg=python % " 1つのテストケースを走らせる + setlocal makeprg=python\ %:S " 1つのテストケースを走らせる となる。 次も参照。 @@ -1282,7 +1282,7 @@ Jikes(TM)はオプション "+E" とともに起動されたときは1行エ Michael F. Lambが考案した別の方法を以下に示す。これはUnix用で、最初にエラーを フィルタリングする: > :setl errorformat=%Z%f:%l:\ %m,%A%p^,%-G%*[^sl]%.%# - :setl makeprg=javac\ %\ 2>&1\ \\\|\ vim-javac-filter + :setl makeprg=javac\ %:S\ 2>&1\ \\\|\ vim-javac-filter 以下の行を "vim-javac-filter" というファイルに書いて、PATHの通ったディレクトリ (例えば~/bin) に置き、実行可能にしておく必要がある: > diff --git a/doc/repeat.jax b/doc/repeat.jax index 28f799fc7..0070469eb 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -1,4 +1,4 @@ -*repeat.txt* For Vim バージョン 7.4. Last change: 2014 Feb 11 +*repeat.txt* For Vim バージョン 7.4. Last change: 2014 Mar 25 VIMリファレンスマニュアル by Bram Moolenaar @@ -569,6 +569,11 @@ Note 関数はまず読み込まれ、後で実行される。読み込まれた シンタックスハイライトのプロファイリングについては |:syntime| を参照せよ。 +例えば、one_script.vim スクリプトファイルをプロファイリングするには: > + :profile start /tmp/one_script_profile + :profile file one_script.vim + :source one_script.vim + :exit :prof[ile] start {fname} *:prof* *:profile* *E750* プロファイリングを開始し、終了時に出力を {fname} に出力する。 @@ -590,8 +595,11 @@ Note 関数はまず読み込まれ、後で実行される。読み込まれた このコマンドはスクリプトそのものをプロファイリングするだけで、 その中で定義されている関数のプロファイリングは行わない。 [!] がつけられたときは、そのスクリプト中で定義されている全ての - 関数のプロファイリングも行う。しかしスクリプトがこのコマンドの - 後で読み込まれたときだけである。 + 関数のプロファイリングも行う。 + Note スクリプトがこのコマンドの後で読み込まれたときだけ、その + プロファイリングは始まる。スクリプト自身にある :profile コマン + ドは働かない。 + :profd[el] ... *:profd* *:profdel* 指定された引数に対するプロファイリングを停止する。引数について diff --git a/en/diff.txt b/en/diff.txt index a23fe5ab1..99d57ff77 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -95,7 +95,7 @@ While already in Vim you can start diff mode in three ways. :difft[his] Make the current window part of the diff windows. This sets the options like for "vimdiff". -:diffp[atch] {patchfile} *E816* *:diffp* *:diffpatch* +:diffp[atch] {patchfile} *E816* *:diffp* *:diffpatch* Use the current buffer, patch it with the diff found in {patchfile} and open a buffer on the result. The options are set as for "vimdiff". diff --git a/en/digraph.txt b/en/digraph.txt index ac84091c5..6e85a1f2b 100644 --- a/en/digraph.txt +++ b/en/digraph.txt @@ -1077,7 +1077,7 @@ char digraph hex dec official name ~ ⊥ -T 22A5 8869 UP TACK ⋅ .P 22C5 8901 DOT OPERATOR ⋮ :3 22EE 8942 VERTICAL ELLIPSIS -⋯ .3 22EF 8943 MIDLINE HORIZONTAL ELLIPSIS +⋯ .3 22EF 8943 MIDLINE HORIZONTAL ELLIPSIS ⌂ Eh 2302 8962 HOUSE ⌈ <7 2308 8968 LEFT CEILING ⌉ >7 2309 8969 RIGHT CEILING diff --git a/en/indent.txt b/en/indent.txt index e2cb75263..20be71f35 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -596,7 +596,6 @@ without limits. " Default let g:clojure_maxlines = 100 < - *g:clojure_fuzzy_indent* *g:clojure_fuzzy_indent_patterns* *g:clojure_fuzzy_indent_blacklist* @@ -650,7 +649,6 @@ default list below. let g:clojure_special_indent_words = \ 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn' < - *g:clojure_align_multiline_strings* Align subsequent lines in multiline strings to the column after the opening @@ -747,7 +745,7 @@ OPTIONS: ~ PHP indenting can be altered in several ways by modifying the values of some global variables: - *php-comment* + *php-comment* *PHP_autoformatcomment* To not enable auto-formating of comments by default (if you want to use your own 'formatoptions'): > :let g:PHP_autoformatcomment = 0 @@ -756,6 +754,7 @@ Else, 't' will be removed from the 'formatoptions' string and "qrowcb" will be added, see |fo-table| for more information. ------------- + *PHP_outdentSLComments* To add extra indentation to single-line comments: > :let g:PHP_outdentSLComments = N @@ -767,6 +766,7 @@ Only single-line comments will be affected such as: > /* Comment */ ------------- + *PHP_default_indenting* To add extra indentation to every PHP lines with N being the number of 'shiftwidth' to add: > :let g:PHP_default_indenting = N @@ -790,10 +790,12 @@ To indent PHP tags as the surrounding code: > :let g:PHP_outdentphpescape = 0 ------------- + *PHP_removeCRwhenUnix* To automatically remove '\r' characters when the 'fileformat' is set to Unix: > :let g:PHP_removeCRwhenUnix = 1 ------------- + *PHP_BracesAtCodeLevel* To indent braces at the same level than the code they contain: > :let g:PHP_BracesAtCodeLevel = 1 @@ -812,6 +814,7 @@ NOTE: Indenting will be a bit slower if this option is used because some optimizations won't be available. ------------- + *PHP_vintage_case_default_indent* To indent 'case:' and 'default:' statements in switch() blocks: > :let g:PHP_vintage_case_default_indent = 1 diff --git a/en/index.txt b/en/index.txt index 6def73e1d..8d8ddfab0 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1124,8 +1124,8 @@ tag command action ~ |:cNfile| :cNf[ile] go to last error in previous file |:cabbrev| :ca[bbrev] like ":abbreviate" but for Command-line mode |:cabclear| :cabc[lear] clear all abbreviations for Command-line mode -|:caddbuffer| :caddb[uffer] add errors from buffer -|:caddexpr| :cad[dexpr] add errors from expr +|:caddbuffer| :cad[dbuffer] add errors from buffer +|:caddexpr| :cadde[xpr] add errors from expr |:caddfile| :caddf[ile] add error message to current quickfix list |:call| :cal[l] call a function |:catch| :cat[ch] part of a :try command @@ -1358,13 +1358,14 @@ tag command action ~ |: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 +|:noautocmd| :noa[utocmd] following commands 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 remapped |:noremenu| :noreme[nu] enter a menu that will not be remapped |:normal| :norm[al] execute Normal mode commands +|:noswapfile| :nos[wapfile] following commands don't create a swap file |:number| :nu[mber] print lines with line number |:nunmap| :nun[map] like ":unmap" but for Normal mode |:nunmenu| :nunme[nu] remove menu for Normal mode diff --git a/en/quickfix.txt b/en/quickfix.txt index e96025f86..43eb7fb5d 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -202,8 +202,8 @@ command with 'l'. the current window is used instead of the quickfix list. - *:caddb* *:caddbuffer* -:caddb[uffer] [bufnr] Read the error list from the current buffer and add + *:cad* *:caddbuffer* +:cad[dbuffer] [bufnr] Read the error list from the current buffer and add the errors to the current quickfix list. If a quickfix list is not present, then a new list is created. Otherwise, same as ":cbuffer". @@ -240,8 +240,8 @@ command with 'l'. :lgete[xpr] {expr} Same as |:cgetexpr|, except the location list for the current window is used instead of the quickfix list. - *:cad* *:caddexpr* -:cad[dexpr] {expr} Evaluate {expr} and add the resulting lines to the + *:cadde* *:caddexpr* +:cadde[xpr] {expr} Evaluate {expr} and add the resulting lines to the current quickfix list. If a quickfix list is not present, then a new list is created. The current cursor position will not be changed. See |:cexpr| for @@ -838,7 +838,7 @@ Unfortunately, there is no standard way to run the tests. The alltests.py script seems to be used quite often, that's all. Useful values for the 'makeprg' options therefore are: setlocal makeprg=./alltests.py " Run a testsuite - setlocal makeprg=python % " Run a single testcase + setlocal makeprg=python\ %:S " Run a single testcase Also see http://vim.sourceforge.net/tip_view.php?tip_id=280. @@ -1330,7 +1330,7 @@ or: > Here is an alternative from Michael F. Lamb for Unix that filters the errors first: > :setl errorformat=%Z%f:%l:\ %m,%A%p^,%-G%*[^sl]%.%# - :setl makeprg=javac\ %\ 2>&1\ \\\|\ vim-javac-filter + :setl makeprg=javac\ %:S\ 2>&1\ \\\|\ vim-javac-filter You need to put the following in "vim-javac-filter" somewhere in your path (e.g., in ~/bin) and make it executable: > diff --git a/en/repeat.txt b/en/repeat.txt index 25421a59d..4b28e8617 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.4. Last change: 2014 Feb 11 +*repeat.txt* For Vim version 7.4. Last change: 2014 Mar 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -588,6 +588,12 @@ the |+reltime| feature, which is present more often. For profiling syntax highlighting see |:syntime|. +For example, to profile the one_script.vim script file: > + :profile start /tmp/one_script_profile + :profile file one_script.vim + :source one_script.vim + :exit + :prof[ile] start {fname} *:prof* *:profile* *E750* Start profiling, write the output in {fname} upon exit. @@ -612,8 +618,10 @@ For profiling syntax highlighting see |:syntime|. This only profiles the script itself, not the functions defined in it. When the [!] is added then all functions defined in the script - will also be profiled. But only if the script is loaded after - this command. + will also be profiled. + Note that profiling only starts when the script is loaded + after this command. A :profile command in the script itself + won't work. :profd[el] ... *:profd* *:profdel* From d021b770c43ca2a56924731e5c5e4c71ac52e1eb Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 24 May 2014 10:36:14 +0900 Subject: [PATCH 539/783] Add a missing empty line --- doc/repeat.jax | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/repeat.jax b/doc/repeat.jax index 0070469eb..02c69584b 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -575,6 +575,7 @@ Note 関数はまず読み込まれ、後で実行される。読み込まれた :source one_script.vim :exit + :prof[ile] start {fname} *:prof* *:profile* *E750* プロファイリングを開始し、終了時に出力を {fname} に出力する。 {fname} がすでに存在するときは、警告なしに上書きされる。 From 04bf574fa2fa059e155debf0245a44ab63b28dde Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 26 May 2014 20:48:57 +0900 Subject: [PATCH 540/783] fix writing style --- doc/editing.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/editing.jax b/doc/editing.jax index bbc1ff810..323b52b33 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -1236,7 +1236,7 @@ b:browsefilter はファイルタイププラグインで設定することが きる道を残すことだ。 Vim が browsefilter をサポートしていないときにそれを設定しないようにするには、 -has("browsefilter") が使えます: > +has("browsefilter") が使える: > if has("browsefilter") let g:browsefilter = "whatever" From 08942a23fd587915f178df2ba28df2b113b171c4 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 26 May 2014 20:49:42 +0900 Subject: [PATCH 541/783] fix missing brackets --- doc/eval.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 23e773c13..3d55aa9f3 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1685,7 +1685,7 @@ complete( {startcol}, {matches}) なし 挿入モード補完を設定する complete({startcol}, {matches}) 文字列 挿入モード補完の結果を設定する complete_add( {expr}) 数値 補完候補を追加する complete_check() 数値 補完中に押されたキーをチェックする -confirm( {msg}, {choices} [, {default} [, {type}]]) +confirm( {msg} [, {choices} [, {default} [, {type}]]]) 数値 ユーザーへの選択肢と番号 copy( {expr}) 任意 {expr}の浅いコピーを作る cos( {expr}) 浮動小数点数 {expr} の余弦(コサイン) @@ -2363,7 +2363,7 @@ complete_check() *complete_check()* 'completefunc' で指定された関数の中でのみ使われる。 *confirm()* -confirm({msg}, {choices} [, {default} [, {type}]]) +confirm({msg} [, {choices} [, {default} [, {type}]]]) confirm()はユーザーに選択させるためのダイアログを提供する。戻 り値は選択した番号になる。最初の選択肢が1である。 Note: confirm()は、ダイアログサポートを有効にしてコンパイルし From 336d89d41482ba8b3b921749a9c9afb3f5f6318d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 29 May 2014 00:23:06 +0900 Subject: [PATCH 542/783] Update usr_41.txt --- doc/usr_41.jax | 9 +++++++-- en/usr_41.txt | 7 +++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/usr_41.jax b/doc/usr_41.jax index e6486ac6e..13d170c42 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim バージョン 7.4. Last change: 2014 Jan 10 +*usr_41.txt* For Vim バージョン 7.4. Last change: 2014 Apr 05 VIM USER MANUAL - by Bram Moolenaar @@ -600,6 +600,7 @@ substitute() コマンドの前後にいろいろな処理を入れたりする map() リストの各要素を変換する sort() リストをソートする reverse() リストの並び順を反転させる + uniq() 隣接して繰り返される要素のコピーを削除する split() 文字列を分割し、リストにする join() リストの要素を連結し、文字列にする range() 数列リストを返す @@ -719,6 +720,7 @@ substitute() コマンドの前後にいろいろな処理を入れたりする pathshorten() パス中のディレクトリ名を短くする simplify() パスの意味を変えずに簡略化する executable() 実行形式ファイルかどうかをチェックする + exepath() 実行ファイルのフルパスを得る filereadable() ファイルが読み込み可能かどうかをチェックする filewritable() ファイルが書き込み可能かどうかをチェックする getfperm() ファイルのパーミッションを得る @@ -726,11 +728,14 @@ substitute() コマンドの前後にいろいろな処理を入れたりする isdirectory() ディレクトリの存在をチェックする getfsize() ファイルのサイズを得る getcwd() カレントディレクトリを得る + haslocaldir() カレントウィンドウが |:lcd| を使用するかどうか + をチェックする tempname() 一時ファイルの名前を得る mkdir() ディレクトリを作成する delete() ファイルを削除する rename() ファイルの名前を変更する - system() シェルコマンドを実行し、その結果を得る + system() シェルコマンドを実行し、その結果を文字列で得る + systemlist() シェルコマンドを実行し、その結果をリストで得る hostname() システムの名称を得る readfile() ファイルを読み込み、行のリストを得る writefile() 行のリストをファイルに書き込む diff --git a/en/usr_41.txt b/en/usr_41.txt index 736adf257..670c8fdc7 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.4. Last change: 2014 Jan 10 +*usr_41.txt* For Vim version 7.4. Last change: 2014 Apr 05 VIM USER MANUAL - by Bram Moolenaar @@ -623,6 +623,7 @@ List manipulation: *list-functions* map() change each List item sort() sort a List reverse() reverse the order of a List + uniq() remove copies of repeated adjacent items split() split a String into a List join() join List items into a String range() return a List with a sequence of numbers @@ -741,6 +742,7 @@ System functions and manipulation of files: pathshorten() shorten directory names in a path simplify() simplify a path without changing its meaning executable() check if an executable program exists + exepath() full path of an executable program filereadable() check if a file can be read filewritable() check if a file can be written to getfperm() get the permissions of a file @@ -753,7 +755,8 @@ System functions and manipulation of files: mkdir() create a new directory delete() delete a file rename() rename a file - system() get the result of a shell command + system() get the result of a shell command as a string + systemlist() get the result of a shell command as a list hostname() name of the system readfile() read a file into a List of lines writefile() write a List of lines into a file From 6225e0d78a448657c36d3b6a1d492d3631ab9b7e Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 30 May 2014 00:59:49 +0900 Subject: [PATCH 543/783] Update usr_41.txt --- doc/usr_41.jax | 1 + en/usr_41.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/usr_41.jax b/doc/usr_41.jax index 13d170c42..bd103dfe5 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -751,6 +751,7 @@ substitute() コマンドの前後にいろいろな処理を入れたりする バッファ、ウィンドウ、引数リスト: argc() 引数リストの大きさ argidx() 引数リスト中の現在の位置 + arglistid() 引数リストのIDを得る argv() 引数リストの中身を得る bufexists() バッファの存在をチェックする buflisted() バッファが存在し、リストされているかどうか diff --git a/en/usr_41.txt b/en/usr_41.txt index 670c8fdc7..ee62cac70 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -772,6 +772,7 @@ Date and Time: *date-functions* *time-functions* Buffers, windows and the argument list: argc() number of entries in the argument list argidx() current position in the argument list + arglistid() get id of the argument list argv() get one entry from the argument list bufexists() check if a buffer exists buflisted() check if a buffer exists and is listed From 5d352159225aab468c8f81e5ad5852126645863b Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 30 May 2014 20:02:51 +0900 Subject: [PATCH 544/783] Translate a title forgotten to do --- doc/pattern.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index ca85a57f5..823ce3195 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -1191,7 +1191,7 @@ Note: 'ignorecase'、"\c"、"\C" は、文字クラスには作用しません むパターンはおそらく、決してマッチしません。 ============================================================================== -8. Composing characters *patterns-composing* +8. 合成文字 *patterns-composing* */\Z* パターンに "\Z" が含まれている場合、合成文字は無視されます。そのため、どの合成 From 3f3655781b4921bea54121ec7005141f90d98e75 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 30 May 2014 20:56:15 +0900 Subject: [PATCH 545/783] Update options.txt --- doc/options.jax | 16 +++++++++++----- en/options.txt | 8 +++++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 61d42aeba..88f5aa408 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4616,6 +4616,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 実行するためにキーボードモードを変更しなくともよいということである。こ のオプションは 'keymap' と正反対のものである。'keymap' は挿入モードで マッピングを行う。 + このオプションはセキュリティ上の理由で、|modeline| からや |sandbox| の + 中で設定することはできない。 例 (ギリシア語に対して、UTF-8で): *greek* > :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz @@ -6361,8 +6363,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'autowrite' がオンのときに便利である) O ファイルの読み込み時のメッセージや Quickfix 関係のメッセージ (例えば ":cn") がその前のメッセージを必ず上書きする。 - s 「下まで検索したので上に戻ります」と「上まで検索したので下に戻 - ります」というメッセージを表示しない。 + s "下まで検索したので上に戻ります" と "上まで検索したので下に戻 + ります" というメッセージを表示しない。 t ファイル間連のメッセージが長すぎてコマンドラインに収まらないと きは、先頭を切り詰める。先頭には "<" が表示される。Exモードで は無視される。 @@ -6370,9 +6372,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる 中央を切り詰める。中央には "..." が表示される。Exモードでは無 視される。 W ファイルの書き込み時に "書込み" や "[w]" を表示しない。 - A スワップファイルがすでにあることが発見されたときに「注意」メッ + A スワップファイルがすでにあることが発見されたときに "注意" メッ セージを表示しない。 I Vimの開始時に挨拶メッセージを表示しない |:intro|。 + c |ins-completion-menu| 関連のメッセージを表示しない。例えば、 + "-- XXX補完 (YYY)"、"1 番目の該当 (全該当 2 個中)"、"唯一の該 + 当"、"パターンは見つかりませんでした"、"始めに戻る"、など。 このオプションはバッファを変更するとき <Enter> を打ち込むのを避ける機 会を提供する。が、表示の余裕がある限り有益なメッセージを表示する。 @@ -6882,8 +6887,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 等しければ表示されない。 p N 現在行がファイル内の何%の位置にあるか (|CTRL-G| と同様) P S 現在表示されているウィンドウ内のテキストが、ファイル内の何%の位 - 置にあるか。これは 'ruler' で説明されているものに似ている。値は - 常に3文字である {訳注: 日本語版では全角2文字になりうる}。 + 置にあるか。これは 'ruler' で説明されているものに似ている。翻訳 + されていない限り、値は常に3文字である {訳注: 日本語版では全角2文 + 字になりうる}。 a S 既定のタイトルと同様の引数ファイルリストを "({current} of {max})" と表示する。ファイル引数の数が0または1の ときは空。 diff --git a/en/options.txt b/en/options.txt index b1abdd8ea..c43abd54d 100644 --- a/en/options.txt +++ b/en/options.txt @@ -4492,6 +4492,8 @@ A jump table for the options with a short description can be found at |Q_op|. be able to execute Normal mode commands. This is the opposite of the 'keymap' option, where characters are mapped in Insert mode. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. Example (for Greek, in UTF-8): *greek* > :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz @@ -6237,6 +6239,9 @@ A jump table for the options with a short description can be found at |Q_op|. A don't give the "ATTENTION" message when an existing swap file is found. I don't give the intro message when starting Vim |:intro|. + c don't give |ins-completion-menu| messages. For example, + "-- XXX completion (YYY)", "match 1 of 2", "The only match", + "Pattern not found", "Back at original", etc. This gives you the opportunity to avoid that a change between buffers requires you to hit <Enter>, but still gives as useful a message as @@ -6743,7 +6748,8 @@ A jump table for the options with a short description can be found at |Q_op|. V N Virtual column number as -{num}. Not displayed if equal to 'c'. p N Percentage through file in lines as in |CTRL-G|. P S Percentage through file of displayed window. This is like the - percentage described for 'ruler'. Always 3 in length. + percentage described for 'ruler'. Always 3 in length, unless + translated. a S Argument list status as in default title. ({current} of {max}) Empty if the argument file count is zero or one. { NF Evaluate expression between '%{' and '}' and substitute result. From 3c59c3effa23390b2b81fb9b083230a4ab64b5e6 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 31 May 2014 08:27:19 +0900 Subject: [PATCH 546/783] Update eval.txt --- doc/eval.jax | 35 ++++++++++++++++++++++++++--------- en/eval.txt | 31 +++++++++++++++++++++++-------- 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 3d55aa9f3..0ecd9ca4b 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1655,6 +1655,9 @@ and( {expr}, {expr}) 数値 ビット論理積 append( {lnum}, {string}) 数値 {string}を{lnum}行目に付け加える append( {lnum}, {list}) 数値 行{list}を{lnum}行目に付け加える argc() 数値 引数内のファイルの数 +argidx() 数値 引数リスト内の現在のインデックス +arglistid( [{winnr}, [ {tabnr}]]) + 数値 引数リストID argv( {nr}) 文字列 引数の第{nr}番目 argv( ) リスト 引数リスト asin( {expr}) 浮動小数点数 {expr}のアークサイン @@ -1707,6 +1710,7 @@ escape( {string}, {chars}) 文字列 {string}内の{chars}を '\' でエスケ eval( {string}) 任意 {string}を評価し、値を得る eventhandler( ) 数値 イベントハンドラの内側ならTRUE executable( {expr}) 数値 実行可能な{expr}が存在するなら1 +exepath( {expr}) 文字列 コマンド {expr} のフルパス exists( {var}) 数値 変数{var}が存在したらTRUE extend( {expr1}, {expr2} [, {expr3}]) リスト/辞書 {expr1}に{expr2}の要素を挿入 @@ -1746,10 +1750,11 @@ getbufvar( {expr}, {varname} [, {def}]) getcmdline() 文字列 現在のコマンドラインを取得 getcmdpos() 数値 コマンドラインのカーソル位置を取得 getcmdtype() 文字列 現在のコマンドラインの種類を取得 +getcurpos() リスト カーソルの位置 getcwd() 文字列 現在の作業ディレクトリ +getfontname( [{name}]) 文字列 使用しているフォントの名前 getfperm( {fname}) 文字列 ファイル{fname}の許可属性を取得 getfsize( {fname}) 数値 ファイル{fname}のバイト数を取得 -getfontname( [{name}]) 文字列 使用しているフォントの名前 getftime( {fname}) 数値 ファイルの最終更新時間 getftype( {fname}) 文字列 ファイル{fname}の種類の説明 getline( {lnum}) 文字列 現在のバッファから行の内容を取得 @@ -1759,7 +1764,8 @@ getmatches() リスト 現在のマッチのリスト getpid() 数値 Vim のプロセス ID getpos( {expr}) リスト カーソル・マークなどの位置を取得 getqflist() リスト quickfixリストの要素のリスト -getreg( [{regname} [, 1]]) 文字列 レジスタの中身を取得 +getreg( [{regname} [, 1 [, {list}]]]) + 文字列/リスト レジスタの中身を取得 getregtype( [{regname}]) 文字列 レジスタの種類を取得 gettabvar( {nr}, {varname} [, {def}]) 任意 タブ{nr}の変数{varname}または{def} @@ -1771,7 +1777,7 @@ getwinvar( {nr}, {varname} [, {def}]) 文字列 ウィンドウ{nr}の変数{varname} glob( {expr} [, {nosuf} [, {list}]]) 任意 {expr}内のfile wildcardを展開 -globpath( {path}, {expr} [, {flag}]) +globpath( {path}, {expr} [, {nosuf} [, {list}]]) 文字列 {path}の全ディレクトリに対し glob({expr})を行う has( {feature}) 数値 機能{feature}がサポートならばTRUE @@ -1938,7 +1944,8 @@ strridx( {haystack}, {needle} [, {start}]) クス strtrans( {expr}) 文字列 文字列を表示可能に変更 strwidth( {expr}) 数値 文字列{expr}の表示セル幅 -submatch( {nr}) 文字列 ":s" やsubstitute()における特定のマッチ +submatch( {nr}[, {list}]) 文字列/リスト + ":s" やsubstitute()における特定のマッチ substitute( {expr}, {pat}, {sub}, {flags}) 文字列 {expr}の{pat}を{sub}に置換え synID( {line}, {col}, {trans}) 数値 {line}と{col}のsyntax IDを取得 @@ -1949,6 +1956,7 @@ synconcealed( {lnum}, {col}) リスト Conceal の情報 synstack( {lnum}, {col}) リスト {lnum}行{col}列目における構文IDの スタック system( {expr} [, {input}]) 文字列 シェルコマンド{expr}の出力結果 +systemlist( {expr} [, {input}]) リスト シェルコマンド{expr}の出力結果 tabpagebuflist( [{arg}]) リスト タブページ内のバッファ番号のリスト tabpagenr( [{arg}]) 数値 現在または最後のタブページの番号 tabpagewinnr( {tabarg}[, {arg}]) @@ -1967,6 +1975,8 @@ trunc( {expr}) 浮動小数点数 浮動小数点数{expr}を切り詰める type( {name}) 数値 変数{name}の型 undofile( {name}) 文字列 {name}に対するアンドゥファイルの名前 undotree() リスト アンドゥファイルツリー +uniq( {list} [, {func} [, {dict}]]) + リスト リストから隣接した重複を削除 values( {dict}) リスト {dict}の値のリスト virtcol( {expr}) 数値 カーソルのスクリーンカラム位置 visualmode( [expr]) 文字列 最後に使われたビジュアルモード @@ -5241,19 +5251,26 @@ sinh({expr}) *sinh()* sort({list} [, {func} [, {dict}]]) *sort()* *E702* - {list}の要素をその場で(in-place)ソートする。{list}を返す。リス - トを変更したくない場合は、最初にコピーを作っておくこと: > + {list}の要素をその場で(in-place)ソートする。{list}を返す。 + + リストを変更したくない場合は、最初にコピーを作っておくこと: > :let sortedlist = sort(copy(mylist)) < ソートの際には、各要素の文字列表現を使う。 数値は文字列より後になり、リストは数値より後になる。 カレントバッファのテキストをソートするには|:sort|を使うこと。 + {func}に1を指定すると、大文字・小文字を区別しなくなる。 - {dict} は "dict" 属性付きの関数と一緒に使う。値はローカル変数 - "self" として使われる。 |Dictionary-function| {func}に|Funcref|または関数名を指定すると、その関数を使って要 素を比較する。その関数は2つの要素を引数として受け取り、それら が等しいときは0、1番目の引数を2番目より後にするなら1以上、1番 - 目の方を前にするなら-1以下を返す。例: > + 目の方を前にするなら-1以下を返す。 + + {dict} は "dict" 属性付きの関数と一緒に使う。値はローカル変数 + "self" として使われる。 |Dictionary-function| + + |uniq()| も参照のこと。 + + 例: > func MyCompare(i1, i2) return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1 endfunc diff --git a/en/eval.txt b/en/eval.txt index 840591f8b..40495c8bf 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1706,6 +1706,8 @@ append( {lnum}, {string}) Number append {string} below line {lnum} append( {lnum}, {list}) Number append lines {list} below line {lnum} argc() Number number of files in the argument list argidx() Number current index in the argument list +arglistid( [{winnr}, [ {tabnr}]]) + Number argument list id argv( {nr}) String {nr} entry of the argument list argv( ) List the argument list asin( {expr}) Float arc sine of {expr} @@ -1756,6 +1758,7 @@ escape( {string}, {chars}) String escape {chars} in {string} with '\' eval( {string}) any evaluate {string} into its value eventhandler( ) Number TRUE if inside an event handler executable( {expr}) Number 1 if executable {expr} exists +exepath( {expr}) String full path of the command {expr} exists( {expr}) Number TRUE if {expr} exists extend( {expr1}, {expr2} [, {expr3}]) List/Dict insert items of {expr2} into {expr1} @@ -1795,10 +1798,11 @@ getcharmod( ) Number modifiers for the last typed character getcmdline() String return the current command-line getcmdpos() Number return cursor position in command-line getcmdtype() String return the current command-line type +getcurpos() List position of the cursor getcwd() String the current working directory +getfontname( [{name}]) String name of font being used getfperm( {fname}) String file permissions of file {fname} getfsize( {fname}) Number size in bytes of file {fname} -getfontname( [{name}]) String name of font being used getftime( {fname}) Number last modification time of file getftype( {fname}) String description of type of file {fname} getline( {lnum}) String line {lnum} of current buffer @@ -1808,7 +1812,8 @@ getmatches() List list of current matches getpid() Number process ID of Vim getpos( {expr}) List position of cursor, mark, etc. getqflist() List list of quickfix items -getreg( [{regname} [, 1]]) String contents of register +getreg( [{regname} [, 1 [, {list}]]]) + String or List contents of register getregtype( [{regname}]) String type of register gettabvar( {nr}, {varname} [, {def}]) any variable {varname} in tab {nr} or {def} @@ -1820,7 +1825,7 @@ getwinvar( {nr}, {varname} [, {def}]) any variable {varname} in window {nr} glob( {expr} [, {nosuf} [, {list}]]) any expand file wildcards in {expr} -globpath( {path}, {expr} [, {flag}]) +globpath( {path}, {expr} [, {nosuf} [, {list}]]) String do glob({expr}) for all dirs in {path} has( {feature}) Number TRUE if feature {feature} supported has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} @@ -1979,7 +1984,8 @@ strridx( {haystack}, {needle} [, {start}]) Number last index of {needle} in {haystack} strtrans( {expr}) String translate string to make it printable strwidth( {expr}) Number display cell length of the String {expr} -submatch( {nr}) String specific match in ":s" or substitute() +submatch( {nr}[, {list}]) String or List + specific match in ":s" or substitute() substitute( {expr}, {pat}, {sub}, {flags}) String all {pat} in {expr} replaced with {sub} synID( {lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col} @@ -1989,6 +1995,7 @@ synIDtrans( {synID}) Number translated syntax ID of {synID} synconcealed( {lnum}, {col}) List info about concealing synstack( {lnum}, {col}) List stack of syntax IDs at {lnum} and {col} system( {expr} [, {input}]) String output of shell command/filter {expr} +systemlist( {expr} [, {input}]) List output of shell command/filter {expr} tabpagebuflist( [{arg}]) List list of buffer numbers in tab page tabpagenr( [{arg}]) Number number of current or last tab page tabpagewinnr( {tabarg}[, {arg}]) @@ -2006,6 +2013,8 @@ trunc( {expr}) Float truncate Float {expr} type( {name}) Number type of variable {name} undofile( {name}) String undo file name for {name} undotree() List undo file tree +uniq( {list} [, {func} [, {dict}]]) + List remove adjacent duplicates from a list values( {dict}) List values in {dict} virtcol( {expr}) Number screen column of cursor or mark visualmode( [expr]) String last visual mode used @@ -5447,20 +5456,26 @@ sinh({expr}) *sinh()* sort({list} [, {func} [, {dict}]]) *sort()* *E702* - Sort the items in {list} in-place. Returns {list}. If you - want a list to remain unmodified make a copy first: > + Sort the items in {list} in-place. Returns {list}. + + If you want a list to remain unmodified make a copy first: > :let sortedlist = sort(copy(mylist)) < Uses the string representation of each item to sort on. Numbers sort after Strings, |Lists| after Numbers. For sorting text in the current buffer use |:sort|. + When {func} is given and it is one then case is ignored. - {dict} is for functions with the "dict" attribute. It will be - used to set the local variable "self". |Dictionary-function| When {func} is a |Funcref| or a function name, this function is called to compare items. The function is invoked with two items as argument and must return zero if they are equal, 1 or bigger if the first one sorts after the second one, -1 or smaller if the first one sorts before the second one. + + {dict} is for functions with the "dict" attribute. It will be + used to set the local variable "self". |Dictionary-function| + + Also see |uniq()|. + Example: > func MyCompare(i1, i2) return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1 From cec93412c31de8f6b737eb909721f27d652ed255 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Fri, 6 Jun 2014 22:43:23 +0900 Subject: [PATCH 547/783] fix translation --- doc/eval.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index 0ecd9ca4b..14bc3dd84 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6461,7 +6461,7 @@ a: のスコープとこの変数は固定されており、変更できない let lines = Table("Table", "line1", "line2") let lines = Table("Empty Table") -一つ以上の値を返したい場合には、グローバル変数の名前を渡すようにする: > +一つ以上の値を返したい場合には、リスト|List|を返すようにする: > :function Compute(n1, n2) : if a:n2 == 0 : return ["fail", 0] From c0c2440d9f5f33c4e33f8911eb65b53681311b41 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 11 Jun 2014 19:37:32 +0900 Subject: [PATCH 548/783] fix indentation --- doc/pi_vimball.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/pi_vimball.jax b/doc/pi_vimball.jax index 748a92407..4e973726f 100644 --- a/doc/pi_vimball.jax +++ b/doc/pi_vimball.jax @@ -96,9 +96,9 @@ VIMBALL によるディレクトリの作成 *g:vimball_mkdir* |mkdir()| が使えず、g:vimball_mkdir が設定されていない場合は、次の順番 で設定されます: > |g:netrw_local_mkdir| (変数が存在するなら) - "mkdir" (コマンドが存在するなら) - "makedir" (コマンドが存在するなら) - すべてだめなら (未定義) + "mkdir" (コマンドが存在するなら) + "makedir" (コマンドが存在するなら) + すべてだめなら (未定義) < g:vimball_mkdir にはディレクトリ作成コマンドを指定します。自分で設定す ることもできます。このコマンドは vimball 展開時にディレクトリを作成す るために使われます。 From 81bc2d0071be6b7623960f2727fd76fb9a647018 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 11 Jun 2014 19:40:05 +0900 Subject: [PATCH 549/783] translate spell.txt --- doc/spell.jax | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index b368808a1..d8cf05ef0 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -178,10 +178,9 @@ z= カーソルの下や後の単語に対して正しい綴りの単語を提 count を用いた場合、プロンプトは出ずにその提案が使われ る。例えば、"1z=" は常に最初の提案を利用する。 - If 'verbose' is non-zero a score will be displayed - with the suggestions to indicate the likeliness to the - badly spelled word (the higher the score the more - different). + 'verbose' が 0 以外の場合、間違った単語との類似度を示 + すスコアが提案と共に表示される。(高いスコアは、違いが + 大きいことを示す。) 単語が置換された後は、リドゥコマンド "." はその単語の 置換を繰り返す。これは、"ciw" の後に正しい単語を入力し <Esc> を入力したように動作する。これは、単語の間にス @@ -285,7 +284,7 @@ In a table: スペルファイル *spell-load* Vim は 'runtimepath' のディレクトリの中の "spell" という名前のサブディレクトリ -にあるスペルファイルを探す。The name is: LL.EEE.spl, where: +にあるスペルファイルを探す。ファイル名を LL.EEE.spl とすると、 LL 言語名 EEE 'encoding' の値 @@ -296,9 +295,9 @@ Vim は 'runtimepath' のディレクトリの中の "spell" という名前の en-rare en-rare medical_ca medical -Only the first file is loaded, the one that is first in 'runtimepath'. If -this succeeds then additionally files with the name LL.EEE.add.spl are loaded. -All the ones that are found are used. +'runtimepath' の中の最初のファイルだけがロードされる。これが成功した場合、 +LL.EEE.add.spl という名前のファイルが追加でロードされる。追加ファイルは、見つ +かったものが全てロードされる。 If no spell file is found the |SpellFileMissing| autocommand event is triggered. This may trigger the |spellfile.vim| plugin to offer you From dee379957f9f676ff6dca5bc2bfda84e5f300538 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 15 Jun 2014 11:54:45 +0900 Subject: [PATCH 550/783] Update options.txt #102 --- doc/options.jax | 16 ++++++++++++++-- en/options.txt | 18 ++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 88f5aa408..8ee143a01 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -5292,7 +5292,17 @@ Note 1番目の形式では、行全体がオプション指定に使われる まい} 行の本当の先頭の文字が表示されていないときは、文字 '-' が行番号 の前に表示される。行番号に使われる強調表示グループについては |hl-LineNr| と |hl-CursorLineNr| を参照。 - このオプションをオンにすると 'relativenumber' はオフになる。 + *number_relativenumber* + 'relativenumber' オプションは表示される番号をカーソルからの相対にす + る。'number' と共にこれら4つの組み合わせがある。 (カーソルは3行目): + + 'nonu' 'nu' 'nonu' 'nu' + 'nornu' 'nornu' 'rnu' 'rnu' + + |apple | 1 apple | 2 apple | 2 apple + |pear | 2 pear | 1 pear | 1 pear + |nobody | 3 nobody | 0 nobody |3 nobody + |there | 4 there | 1 there | 1 there *'numberwidth'* *'nuw'* 'numberwidth' 'nuw' 数値 (Vim の既定値: 4 Vi の既定値: 8) @@ -5710,7 +5720,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 折り返された行がとても長くてその行頭が画面外にあるときは、行番号の前に '-' 文字が表示される。 行番号の強調表示には |hl-LineNr| か |hl-CursorLineNr| が使われる。 - このオプションをオンにすると 'number' はオフになる。 + + カーソル行の前の番号も 'number' の値に依存し、この2つのオプションの組み合 + わせについては |number_relativenumber| を参照せよ。 *'remap'* *'noremap'* 'remap' 切替 (既定ではオン) diff --git a/en/options.txt b/en/options.txt index c43abd54d..5838f1198 100644 --- a/en/options.txt +++ b/en/options.txt @@ -5175,7 +5175,18 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - When setting this option, 'relativenumber' is reset. + *number_relativenumber* + The 'relativenumber' option changes the displayed number to be + relative to the cursor. Together with 'number' there are these + four combinations (cursor in line 3): + + 'nonu' 'nu' 'nonu' 'nu' + 'nornu' 'nornu' 'rnu' 'rnu' + + |apple | 1 apple | 2 apple | 2 apple + |pear | 2 pear | 1 pear | 1 pear + |nobody | 3 nobody | 0 nobody |3 nobody + |there | 4 there | 1 there | 1 there *'numberwidth'* *'nuw'* 'numberwidth' 'nuw' number (Vim default: 4 Vi default: 8) @@ -5590,7 +5601,10 @@ A jump table for the options with a short description can be found at |Q_op|. characters are put before the number. See |hl-LineNr| and |hl-CursorLineNr| for the highlighting used for the number. - When setting this option, 'number' is reset. + + The number in front of the cursor line also depends on the value of + 'number', see |number_relativenumber| for all combinations of the two + options. *'remap'* *'noremap'* 'remap' boolean (default on) From 23957fdb5a75b920b69e8811a0454c56ea909520 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 15 Jun 2014 12:01:35 +0900 Subject: [PATCH 551/783] Improve translation #102 --- doc/options.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 8ee143a01..ed4414b22 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -5721,8 +5721,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる '-' 文字が表示される。 行番号の強調表示には |hl-LineNr| か |hl-CursorLineNr| が使われる。 - カーソル行の前の番号も 'number' の値に依存し、この2つのオプションの組み合 - わせについては |number_relativenumber| を参照せよ。 + カーソル行の前の番号もまた 'number' の値に依存し、この2つのオプションの全 + ての組み合わせについては |number_relativenumber| を参照せよ。 *'remap'* *'noremap'* 'remap' 切替 (既定ではオン) From 9343485575ed859a38d2e65deb9932d639be7bd3 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 15 Jun 2014 12:12:04 +0900 Subject: [PATCH 552/783] Fix layout --- doc/options.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index ed4414b22..9ba6ba99a 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -5721,8 +5721,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる '-' 文字が表示される。 行番号の強調表示には |hl-LineNr| か |hl-CursorLineNr| が使われる。 - カーソル行の前の番号もまた 'number' の値に依存し、この2つのオプションの全 - ての組み合わせについては |number_relativenumber| を参照せよ。 + カーソル行の前の番号もまた 'number' の値に依存し、この2つのオプション + の全ての組み合わせについては |number_relativenumber| を参照せよ。 *'remap'* *'noremap'* 'remap' 切替 (既定ではオン) From 8a06f97685b9e9f8a61da44ad40374e76a4b72f9 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 15 Jun 2014 12:18:48 +0900 Subject: [PATCH 553/783] Update usr_41.txt --- doc/usr_41.jax | 19 ++++++++++--------- en/usr_41.txt | 3 ++- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/doc/usr_41.jax b/doc/usr_41.jax index bd103dfe5..223e17ffa 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim バージョン 7.4. Last change: 2014 Apr 05 +*usr_41.txt* For Vim バージョン 7.4. Last change: 2014 May 28 VIM USER MANUAL - by Bram Moolenaar @@ -678,21 +678,22 @@ substitute() コマンドの前後にいろいろな処理を入れたりする garbagecollect() 開放可能なメモリを解放する カーソルとマークの位置: *cursor-functions* *mark-functions* - col() カーソルやマークの列番号を得る + col() カーソルやマークの列番号を取得する virtcol() カーソルやマークの画面上の列番号を得る - line() カーソルやマークの行番号を得る + line() カーソルやマークの行番号を取得する wincol() カーソルのウィンドウでの列番号 winline() カーソルのウィンドウでの行番号 cursor() カーソルを指定した位置に移動させる - screencol() カーソルのスクリーン列を得る - screenrow() カーソルのスクリーン行を得る + screencol() カーソルのスクリーン列を取得する + screenrow() カーソルのスクリーン行を取得する + getcurpos() カーソルの位置を取得する getpos() カーソルやマークなどの位置を取得する setpos() カーソルやマークなどの位置を設定する - byte2line() 指定のバイト位置の行番号を得る - line2byte() 指定の行のバイト位置を得る + byte2line() 指定のバイト位置の行番号を取得する + line2byte() 指定の行のバイト位置を取得する diff_filler() ある行より上の詰め行の数を取得する - screenattr() スクリーン列/行の属性を得る - screenchar() スクリーン列/行の文字コードを得る + screenattr() スクリーン列/行の属性を取得する + screenchar() スクリーン列/行の文字コードを取得する カレントバッファで動作するもの: *text-functions* getline() バッファから行を得る diff --git a/en/usr_41.txt b/en/usr_41.txt index ee62cac70..effe6db0a 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.4. Last change: 2014 Apr 05 +*usr_41.txt* For Vim version 7.4. Last change: 2014 May 28 VIM USER MANUAL - by Bram Moolenaar @@ -708,6 +708,7 @@ Cursor and mark position: *cursor-functions* *mark-functions* cursor() position the cursor at a line/column screencol() get screen column of the cursor screenrow() get screen row of the cursor + getcurpos() get position of the cursor getpos() get position of cursor, mark, etc. setpos() set position of cursor, mark, etc. byte2line() get line number at a specific byte count From 9913070e84e3c535248c16ec6c80b1457f61e0b8 Mon Sep 17 00:00:00 2001 From: thinca <thinca@gmail.com> Date: Wed, 18 Jun 2014 19:05:06 +0900 Subject: [PATCH 554/783] Fix typo --- doc/eval.jax | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 14bc3dd84..9aab1b272 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5484,9 +5484,7 @@ strlen({expr}) 結果は数値で、文字列{expr}のバイト単位での長 |len()|, |strchars()|, |strdisplaywidth()|, |strwidth()| も参 照。 - - *strpart()* -strpart({src}, {start}, {len}) +strpart({src}, {start}[, {len}]) *strpart()* 結果は文字列で、{src}の{start}番目の文字から始まる、長さ{len} の部分文字列。存在しない文字を含むように範囲を指定しても、エ ラーにはならない。単に文字が省略されるだけである。 From 198e3fe1d0e1d45c0948314f6160c019449c3bc5 Mon Sep 17 00:00:00 2001 From: thinca <thinca@gmail.com> Date: Wed, 25 Jun 2014 22:16:28 +0900 Subject: [PATCH 555/783] Fix wrong translation ref #103 --- doc/options.jax | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 9ba6ba99a..13c1e3880 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4861,8 +4861,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる NOTE: パターンの使用に関わる移植性の問題を避けるため、常にこのオプショ ンを既定値のオンにしておくこと。古いViのスクリプトを使うときのみオフに 切り替えること。それ以外では、いつでも 'magic' がオンのときに動作する - ようなパターンを書くこと。検索パターンに "\M" を含めると magic になる。 - |/\M| + ようなパターンを書くこと。nomagic が使いたい場合は "\M" を使う。|/\M| *'makeef'* *'mef'* 'makeef' 'mef' 文字列 (既定では "") From 1a125472bee3a3e856c90af358eb401889116f6c Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 25 Jun 2014 23:51:52 +0900 Subject: [PATCH 556/783] Translate comment --- doc/options.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 13c1e3880..725af6132 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1638,8 +1638,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 列番号は絶対値で指定するか、番号に '+' か '-' を前置して 'textwidth' からの相対値として指定する。 > - :set cc=+1 " highlight column after 'textwidth' - :set cc=+1,+2,+3 " highlight three columns after 'textwidth' + :set cc=+1 " 'textwidth' の後の列を強調表示する + :set cc=+1,+2,+3 " 'textwidth' の後の3列を強調表示する :hi ColorColumn ctermbg=lightgrey guibg=lightgrey < 'textwidth' がゼロのときは '-' と '+' で指定されたアイテムは使用されな From 1b45ff2a890b6334f54ddc0de5b6eeac3f44a8d3 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 28 Jun 2014 08:05:20 +0900 Subject: [PATCH 557/783] Update usr_41.txt --- doc/usr_41.jax | 1 + en/usr_41.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/usr_41.jax b/doc/usr_41.jax index 223e17ffa..741bf9022 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -806,6 +806,7 @@ Quickfixとロケーションリスト: *quickfix-functions* synconcealed() conceal の情報を得る diff_hlID() 差分モードの指定位置のシンタックスIDを得る matchadd() 強調表示するパターンを定義する + matchaddpos() 強調表示する位置のリストを定義する matcharg() |:match|の引数の情報を得る matchdelete() |matchadd()|と|:match|コマンドで定義されたマッ チを削除する diff --git a/en/usr_41.txt b/en/usr_41.txt index effe6db0a..f30b79a2e 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -827,6 +827,7 @@ Syntax and highlighting: *syntax-functions* *highlighting-functions* synconcealed() get info about concealing diff_hlID() get highlight ID for diff mode at a position matchadd() define a pattern to highlight (a "match") + matchaddpos() define a list of positions to highlight matcharg() get info about |:match| arguments matchdelete() delete a match defined by |matchadd()| or a |:match| command From 2b3dd42532a914635d2ffcfd75abfaec24da61c8 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 28 Jun 2014 08:39:29 +0900 Subject: [PATCH 558/783] Translate spell.txt --- doc/spell.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index d8cf05ef0..cc72e0dc3 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -299,9 +299,9 @@ Vim は 'runtimepath' のディレクトリの中の "spell" という名前の LL.EEE.add.spl という名前のファイルが追加でロードされる。追加ファイルは、見つ かったものが全てロードされる。 -If no spell file is found the |SpellFileMissing| autocommand event is -triggered. This may trigger the |spellfile.vim| plugin to offer you -downloading the spell file. +スペルファイルが見つからなければ、自動コマンドイベント |SpellFileMissing| が発 +生する。これによってスペルファイルをダウンロードする |spellfile.vim| プラグイ +ンを呼び出せる。 Additionally, the files related to the names in 'spellfile' are loaded. These are the files that |zg| and |zw| add good and wrong words to. From 5c128e5ff1ef4122cf1039388b9630a4ac183093 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 28 Jun 2014 08:59:47 +0900 Subject: [PATCH 559/783] Fix layout --- doc/gui.jax | 10 ++++------ doc/starting.jax | 16 ++++++++-------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/doc/gui.jax b/doc/gui.jax index 4503f24ca..eabc6d4bb 100644 --- a/doc/gui.jax +++ b/doc/gui.jax @@ -92,13 +92,11 @@ GUIウィンドウを開いた直後にいくつかのコマンドを実行し 初期化をするために、gvimrcファイルを使用することができる。 ユーザーの個人的なGUI初期化ファイルを置くのに推奨される場所: - Unix $HOME/.gvimrc あるいは $HOME/.vim/gvimrc - OS/2 $HOME/.gvimrc、$HOME/vimfiles/gvimrc あるいは + Unix $HOME/.gvimrc、$HOME/.vim/gvimrc + OS/2 $HOME/.gvimrc、$HOME/vimfiles/gvimrc、$VIM/.gvimrc + MS-DOSとWin32 $HOME/_gvimrc、$HOME/vimfiles/gvimrc、$VIM/_gvimrc + Amiga s:.gvimrc、home:.gvimrc、home:vimfiles:gvimrc、 $VIM/.gvimrc - MS-DOSとWin32 $HOME/_gvimrc、$HOME/vimfiles/gvimrc あるいは - $VIM/_gvimrc - Amiga s:.gvimrc、home:.gvimrc、home:vimfiles:gvimrc - あるいは $VIM/.gvimrc 個人的な初期化ファイルは上記の順に検索され、最初に見つかったものだけが読み込ま れる。 diff --git a/doc/starting.jax b/doc/starting.jax index bd05c3349..df47075ad 100644 --- a/doc/starting.jax +++ b/doc/starting.jax @@ -628,7 +628,7 @@ Workbench上でアイコンを2度クリックすればVimを起動すること Workbenchからではファイル名以外の引数は、Vimへ与えることができない。 Vimウィンドウ *amiga-window* ----------- +------------- Vimは起動されたCLIウィンドウの中で動作する。Vimが "run" や "runback" コマンド、 あるいやWorkbenchから起動された場合には、自分自身でウィンドウを開く。 @@ -739,13 +739,13 @@ Evimでは以下のオプションが標準設定から変更される: して、"vimrc" はVim特有のものである。|vimrc-intro|も参照。 個人の初期化ファイルの配置場所: - Unix $HOME/.vimrc か $HOME/.vim/vimrc - OS/2 $HOME/.vimrc, $HOME/vimfiles/vimrc - か $VIM/.vimrc (または _vimrc) - MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc - か $VIM/_vimrc - Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc - か $VIM/.vimrc + Unix $HOME/.vimrc、$HOME/.vim/vimrc + OS/2 $HOME/.vimrc、$HOME/vimfiles/vimrc、 + $VIM/.vimrc (または _vimrc) + MS-Windows $HOME/_vimrc、$HOME/vimfiles/vimrc、 + $VIM/_vimrc + Amiga s:.vimrc、home:.vimrc、home:vimfiles:vimrc、 + $VIM/.vimrc 初期化ファイルは上記の順に検索され、最初に見つかったものだけが読み込ま れる。 From d89692d6f2cdf1a239bd15a1678eedf629f9c2d3 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 3 Jul 2014 18:20:54 +0900 Subject: [PATCH 560/783] issue #104 --- doc/change.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index e73c87d6a..38fdf5cef 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -268,9 +268,9 @@ r{char} カーソル下の文字を {char} に置き換える。 *gr* gr{char} カーソル下の仮想文字を {char} に置き換える。このコマン - ドはファイル上の空白ではなく、画面上の空白を置き換える。 - 詳細は |gR| と |Virtual-Replace-mode| を参照。|r| と同 - 様、回数を指定できる。 + ドはファイル上の文字単位ではなく、画面上の文字幅単位で + 置き換える。詳細は |gR| と |Virtual-Replace-mode| を参 + 照。|r| と同様、回数を指定できる。 {char} の入力方法は |r| と同様である。 {Vimが |+vreplace| 機能付きでコンパイルされたときのみ 有効} From 9efd5adfc4b920a45aed052bc4eb795fe2d21a33 Mon Sep 17 00:00:00 2001 From: natnu <reiendo73@gmail.com> Date: Sun, 6 Jul 2014 16:05:36 +0900 Subject: [PATCH 561/783] fix tag --- doc/windows.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/windows.jax b/doc/windows.jax index 71d5710cf..b109ee15d 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -720,7 +720,7 @@ Note: ":next" は例外である。なぜならこのコマンドは Vi との これは各バッファの編集を大幅にスピードアップさせる。 {Vi にはない} {|+listcmds| 機能なしでコンパイルされた 場合は使用できない} - |:tabdo|, |:argdo|, |:bufdo| も参照。 + |:tabdo|, |:argdo|, |:windo| も参照。 例: > From f02baf559b30a652e2fbf7abb0d12d346eab05df Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 14 Jul 2014 22:21:40 +0900 Subject: [PATCH 562/783] Fix writing style --- doc/cmdline.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/cmdline.jax b/doc/cmdline.jax index f8b734141..da5ade60d 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -795,7 +795,7 @@ Note: これらは文字通りに打ち込まれる、これらは特別なキ レクトリ名に展開されるならば、パスの区切り文字が末尾に追加され る。これが付けられたものが、ディスク上に存在せず絶対パスを持た ないファイルに展開されるときは、結果は予期できない。MS-Windows - では 8.3 形式のファイル名はロングファイル名に展開されます。 + では 8.3 形式のファイル名はロングファイル名に展開される。 :8 パスを短い8.3形式に変換する (現在のところ MS-Windows 版での み)。パスの内、実際に存在する部分に対して機能する。 :~ ファイル名をホームディレクトリについて相対的な名前に (可能なら From d2b2917090e2908300cdfa4555add966c0e5cdd2 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Tue, 15 Jul 2014 21:29:14 +0900 Subject: [PATCH 563/783] Update map.txt --- doc/map.jax | 114 ++++++++++++++++++++++++++++++++++------------------ en/map.txt | 90 ++++++++++++++++++++++++++++------------- 2 files changed, 137 insertions(+), 67 deletions(-) diff --git a/doc/map.jax b/doc/map.jax index ffe005668..028619449 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -1,4 +1,4 @@ -*map.txt* For Vim バージョン 7.4. Last change: 2013 Aug 22 +*map.txt* For Vim バージョン 7.4. Last change: 2014 Jun 02 VIMリファレンスマニュアル by Bram Moolenaar @@ -58,17 +58,17 @@ プが使用されたときに {rhs} が調べられ、再マップされま す。マップを入れ子にしたり再帰的にすることができます。 - -:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap* -:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap* -:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap* -:xn[oremap] {lhs} {rhs} |mapmode-x| *:xn* *:xnoremap* -:snor[emap] {lhs} {rhs} |mapmode-s| *:snor* *:snoremap* -:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap* -:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!* -:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap* -:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap* -:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap* + *:nore* *:norem* +:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap* *:nor* +:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap* +:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap* +:xn[oremap] {lhs} {rhs} |mapmode-x| *:xn* *:xnoremap* +:snor[emap] {lhs} {rhs} |mapmode-s| *:snor* *:snoremap* +:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap* +:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!* +:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap* +:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap* +:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap* キー入力 {lhs} を {rhs} に割り当てます。作成したマッ プ、はマップコマンドに対応したモードで使用できます。 {rhs} は再マップされないので、マップが入れ子になったり @@ -108,7 +108,6 @@ ます。{Vi にはありません} バッファローカルなマップを削除するには <buffer> 引数を 付けてください |:map-<buffer>|。 - mappings |:map-<buffer>| 警告: 標準設定のマップも削除されます。 :map |mapmode-nvo| @@ -168,14 +167,24 @@ :map <buffer> ,w /[.,;]<CR> この場合、他のバッファで、",w" に対して別の操作を割り当てることができます: > :map <buffer> ,w /[#&!]<CR> -バッファローカルなマップは通常のマップよりも優先して使用されます。 +バッファローカルなマップは通常のマップよりも優先して使用されます。長いグローバ +ルなマップが存在する場合に短いローカルなマップが影響を受けないようにするには下 +記の <nowait> を参照して下さい。 "<buffer>" はマップを削除するときにも指定できます: > :unmap <buffer> ,w :mapclear <buffer> -バッファローカルのマップはそのバッファが削除されるときにいっしょに消去されま +バッファローカルなマップはそのバッファが削除されるときにいっしょに消去されま す。アンロード(|:bunload|)では消去されません。ローカルオプションと同じです。 また、|map-precedence| を参照して下さい。 + *:map-<nowait>* *:map-nowait* +"," にバッファローカルなマップを定義する場合に "," から始まるグローバルなマッ +プがあるかもしれません。その場合はVimが "," のマップか、あるいはより長いマップ +を使用するかどうか知るために別の文字を入力する必要があります。これを避けるには +引数に <nowait> を追加します。そしてそのマップは一致する場合に使用され、Vimは +それ以上入力される文字を待ちません。しかし、既に文字が入力されていた場合はそれ +が使われます。 + *:map-<silent>* *:map-silent* 実行するコマンドがコマンドラインに表示されないようにするには、マップコマンドの 引数に "<silent>" を指定します。例: > @@ -292,9 +301,22 @@ Note: 特殊キーが機能するようにしたり、テキスト中の CSI バ ウントの指定でゼロを入力できるようにするためです。 *map-overview* *map-modes* -マップコマンドとモードの対応表: +マップコマンドとモードの対応表。詳細は以後に。 + コマンド モード ~ +:map :noremap :unmap ノーマル、ビジュアル、選択、演算待ち状態 +:nmap :nnoremap :nunmap ノーマル +:vmap :vnoremap :vunmap ビジュアル、選択 +:smap :snoremap :sunmap 選択 +:xmap :xnoremap :xunmap ビジュアル +:omap :onoremap :ounmap 演算待ち状態 +:map! :noremap! :unmap! 挿入、コマンドライン +:imap :inoremap :iunmap 挿入 +:lmap :lnoremap :lunmap 挿入、コマンドライン、Lang-Arg +:cmap :cnoremap :cunmap コマンドライン + +{訳注: Lang-Argについては |language-mapping| を参照} - コマンド: モード: ~ + コマンド モード ~ ノーマル ビジュアル+選択 演算待ち状態~ :map :noremap :unmap :mapclear yes yes yes :nmap :nnoremap :nunmap :nmapclear yes - - @@ -311,7 +333,7 @@ NOTE: 選択モードで印字可能文字にマップを定義するとユー しれません。印字可能文字に対しては明示的に :xmap と :smap を使い分けるのがいい でしょう。マップを定義したあとで :sunmap を使う方法もあります。 - コマンド: モード: ~ + コマンド モード ~ ビジュアル 選択 ~ :vmap :vnoremap :vunmap :vmapclear yes yes :xmap :xnoremap :xunmap :xmapclear yes - @@ -321,7 +343,7 @@ NOTE: 選択モードで印字可能文字にマップを定義するとユー 一部のコマンドは、挿入モードとコマンドラインモードの両方で使えますが、一部はそ うではありません: - コマンド: モード: ~ + コマンド モード ~ 挿入 コマンドライン Lang-Arg ~ :map! :noremap! :unmap! :mapclear! yes yes - :imap :inoremap :iunmap :imapclear yes - - @@ -371,10 +393,11 @@ CTRL-U (<C-U>) を使って (Vimによって挿入される) 範囲指定を削 ある言語用の言語マップをロードするには、オプション 'keymap' を設定するのが 簡単です。|45.5|を参照してください。 挿入モードとコマンドラインモードでは CTRL-^ で言語マップの使用の有無を切り替 -えることができます|i_CTRL-^| |c_CTRL-^|。(検索パターンの入力ではなく)コマンド -ラインに入力するときには CTRL-^ で切り替えるまで言語マップは無効になっています。 -挿入モードと検索パターンでの使用状態は別々に記録されます。挿入モードの使用状態 -は "f" や "t" などのコマンドで文字を入力するときにも使用されます。 +えることができます|i_CTRL-^| |c_CTRL-^|。これらのコマンドは 'iminsert' オプショ +ンの値を変更します。(検索パターンの入力ではなく)コマンドラインに入力するときに +は CTRL-^ で切り替えるまで言語マップは無効になっています。挿入モードと検索パ +ターンでの使用状態は別々に記録されます。挿入モードの使用状態は "f" や "t" など +のコマンドで文字を入力するときにも使用されます。 言語マップは、既にマップが適用された文字には適用されません。言語マップは入 力された文字に対してのみ使用されます。これは、言語マップは文字が入力されたとき に適用されたはずという想定によるものです。 @@ -383,17 +406,19 @@ CTRL-U (<C-U>) を使って (Vimによって挿入される) 範囲指定を削 1.4 マップの一覧表示 *map-listing* マップを一覧表示したときの行頭の2文字は使用できるモードを表しています: - CHAR MODE ~ - <Space> ノーマル、ビジュアル、選択、演算待ち状態モード - n ノーマルモード - v ビジュアルモード、選択モード - s 選択モード - x ビジュアルモード - o 演算待ち状態モード - ! 挿入モード、コマンドラインモード - i 挿入モード - l Lang-Argモード。|language-mapping| - c コマンドラインモード + 文字 モード ~ + <Space> ノーマル、ビジュアル、選択、演算待ち状態 + n ノーマル + v ビジュアル、選択 + s 選択 + x ビジュアル + o 演算待ち状態 + ! 挿入、コマンドライン + i 挿入 + l 挿入、コマンドライン、Lang-Argでの ":lmap" マップ + c コマンドライン + +{訳注: Lang-Argについては |language-mapping| を参照} {rhs} の直前に特殊な文字が表示されているものは次のことを意味します: * 再マップされません @@ -580,7 +605,7 @@ Note: 変数 "mapleader" はマップを定義するときに使用されます マップに Ex コマンドを含める場合、そのコマンドラインを実行するために改行文字を 挿入する必要があります。これには <CR> を使うことが推奨されています(参照|<>|)。 例: > - :map _ls :!ls -l %<CR>:echo "the end"<CR> + :map _ls :!ls -l %:S<CR>:echo "the end"<CR> 挿入モードやコマンドラインモードで、入力する文字がマップされないようにするに は、その文字を入力する前に CTRL-V を (1回) 押してください。'paste' がオンの場 @@ -647,6 +672,17 @@ Vim は、入力されたキーで始まるマップがあるかどうか調べ ゆっくり入力したい場合や、遅いシステムを使用している場合は、'timeout' をオフに してください。'ttimeout' を設定するのもいいでしょう。 + *map-precedence* +バッファローカルなマップ(|:map-<buffer>|を使用して定義された)はどのグローバル +なマップよりも優先されます。バッファローカルなマップがグローバルなマップと同じ +場合、Vimはバッファローカルなマップを使用します。加えて、<nowait> で定義された +場合はより長いマップが同じ接頭辞を持っているとしても、直ちに完了したマップを使 +用します。例えば、次の2つのマップがあるとします: > + :map <buffer> <nowait> \a :echo "Local \a"<CR> + :map \abc :echo "Global \abc"<CR> +\a を入力するとバッファローカルなマップが直ちに使用されます。Vimはユーザーが +\abc を入力するかどうかを知るためにそれ以上の文字を待つことはしません。 + *map-keys-fails* 次のような状況では、キーコードが認識されないことがあります: - Vim がキーコードを部分的にしか読めない。これは最初の文字だけ読める場合が多い @@ -781,12 +817,10 @@ g@{motion} 'operatorfunc' に設定された関数を実行します。 let &selection = "inclusive" let reg_save = @@ - if a:0 " Invoked from Visual mode, use '< and '> marks. - silent exe "normal! `<" . a:type . "`>y" + if a:0 " ビジュアルモードから呼び出すのに、gv コマンドを使用します。 + silent exe "normal! gvy" elseif a:type == 'line' silent exe "normal! '[V']y" - elseif a:type == 'block' - silent exe "normal! `[\<C-V>`]y" else silent exe "normal! `[v`]y" endif @@ -1314,6 +1348,8 @@ Note: -range=Nと-count=Nは相互に排他的であるということに注意 ユーザー定義コマンドの定義に-countや-registerが指定された場合に、その省略可能 な引数が与えられた場合、それは引数リストから削除され、それぞれの引数に対応する 特別な文字列が利用できるようになります。 +Note これらの引数は省略できますが、これは廃止される機能です。新しいスクリプト +では完全な名前を使用して下さい。 置き換えテキスト diff --git a/en/map.txt b/en/map.txt index 3a650b221..3ac8e5db9 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*map.txt* For Vim version 7.4. Last change: 2014 Jun 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -60,17 +60,17 @@ modes. {rhs}, is then further scanned for mappings. This allows for nested and recursive use of mappings. - -:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap* -:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap* -:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap* -:xn[oremap] {lhs} {rhs} |mapmode-x| *:xn* *:xnoremap* -:snor[emap] {lhs} {rhs} |mapmode-s| *:snor* *:snoremap* -:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap* -:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!* -:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap* -:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap* -:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap* + *:nore* *:norem* +:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap* *:nor* +:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap* +:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap* +:xn[oremap] {lhs} {rhs} |mapmode-x| *:xn* *:xnoremap* +:snor[emap] {lhs} {rhs} |mapmode-s| *:snor* *:snoremap* +:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap* +:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!* +:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap* +:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap* +:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap* Map the key sequence {lhs} to {rhs} for the modes where the map command applies. Disallow mapping of {rhs}, to avoid nested and recursive mappings. Often @@ -169,7 +169,9 @@ be effective in the current buffer only. Example: > :map <buffer> ,w /[.,;]<CR> Then you can map ",w" to something else in another buffer: > :map <buffer> ,w /[#&!]<CR> -The local buffer mappings are used before the global ones. +The local buffer mappings are used before the global ones. See <nowait> below +to make a short local mapping not taking effect when a longer global one +exists. The "<buffer>" argument can also be used to clear mappings: > :unmap <buffer> ,w :mapclear <buffer> @@ -177,6 +179,14 @@ Local mappings are also cleared when a buffer is deleted, but not when it is unloaded. Just like local option values. Also see |map-precedence|. + *:map-<nowait>* *:map-nowait* +When defining a buffer-local mapping for "," there may be a global mapping +that starts with ",". Then you need to type another character for Vim to know +whether to use the "," mapping or the longer one. To avoid this add the +<nowait> argument. Then the mapping will be used when it matches, Vim does +not wait for more characters to be typed. However, if the characters were +already type they are used. + *:map-<silent>* *:map-silent* To define a mapping which will not be echoed on the command line, add "<silent>" as the first argument. Example: > @@ -296,9 +306,21 @@ is disabled. This makes it possible to map zero without making it impossible to type a count with a zero. *map-overview* *map-modes* -Overview of which map command works in which mode: - - commands: modes: ~ +Overview of which map command works in which mode. More details below. + COMMANDS MODES ~ +:map :noremap :unmap Normal, Visual, Select, Operator-pending +:nmap :nnoremap :nunmap Normal +:vmap :vnoremap :vunmap Visual and Select +:smap :snoremap :sunmap Select +:xmap :xnoremap :xunmap Visual +:omap :onoremap :ounmap Operator-pending +:map! :noremap! :unmap! Insert and Command-line +:imap :inoremap :iunmap Insert +:lmap :lnoremap :lunmap Insert, Command-line, Lang-Arg +:cmap :cnoremap :cunmap Command-line + + + COMMANDS MODES ~ Normal Visual+Select Operator-pending ~ :map :noremap :unmap :mapclear yes yes yes :nmap :nnoremap :nunmap :nmapclear yes - - @@ -314,7 +336,7 @@ NOTE: Mapping a printable character in Select mode may confuse the user. It's better to explicitly use :xmap and :smap for printable characters. Or use :sunmap after defining the mapping. - commands: modes: ~ + COMMANDS MODES ~ Visual Select ~ :vmap :vnoremap :vunmap :vmapclear yes yes :xmap :xnoremap :xunmap :xmapclear yes - @@ -323,7 +345,7 @@ better to explicitly use :xmap and :smap for printable characters. Or use *mapmode-ic* *mapmode-i* *mapmode-c* *mapmode-l* Some commands work both in Insert mode and Command-line mode, some not: - commands: modes: ~ + COMMANDS MODES ~ Insert Command-line Lang-Arg ~ :map! :noremap! :unmap! :mapclear! yes yes - :imap :inoremap :iunmap :imapclear yes - - @@ -370,11 +392,12 @@ it's just used here for this situation. The simplest way to load a set of related language mappings is by using the 'keymap' option. See |45.5|. In Insert mode and in Command-line mode the mappings can be disabled with -the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. When starting to enter a normal -command line (not a search pattern) the mappings are disabled until a CTRL-^ -is typed. The state last used is remembered for Insert mode and Search -patterns separately. The state for Insert mode is also used when typing a -character as an argument to command like "f" or "t". +the CTRL-^ command |i_CTRL-^| |c_CTRL-^|. These commands change the value of +the 'iminsert' option. When starting to enter a normal command line (not a +search pattern) the mappings are disabled until a CTRL-^ is typed. The state +last used is remembered for Insert mode and Search patterns separately. The +state for Insert mode is also used when typing a character as an argument to +command like "f" or "t". Language mappings will never be applied to already mapped characters. They are only used for typed characters. This assumes that the language mapping was already done when typing the mapping. @@ -582,7 +605,7 @@ illogical when compared to other commands. When you have a mapping that contains an Ex command, you need to put a line terminator after it to have it executed. The use of <CR> is recommended for this (see |<>|). Example: > - :map _ls :!ls -l %<CR>:echo "the end"<CR> + :map _ls :!ls -l %:S<CR>:echo "the end"<CR> To avoid mapping of the characters you type in insert or Command-line mode, type a CTRL-V first. The mapping in Insert mode is disabled if the 'paste' @@ -655,6 +678,17 @@ option). After that it assumes that the 'q' is to be interpreted as such. If you type slowly, or your system is slow, reset the 'timeout' option. Then you might want to set the 'ttimeout' option. + *map-precedence* +Buffer-local mappings (defined using |:map-<buffer>|) take precedence over +global mappings. When a buffer-local mapping is the same as a global mapping, +Vim will use the buffer-local mapping. In addition, Vim will use a complete +mapping immediately if it was defined with <nowait>, even if a longer mapping +has the same prefix. For example, given the following two mappings: > + :map <buffer> <nowait> \a :echo "Local \a"<CR> + :map \abc :echo "Global \abc"<CR> +When typing \a the buffer-local mapping will be used immediately. Vim will +not wait for more characters to see if the user might be typing \abc. + *map-keys-fails* 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 @@ -794,12 +828,10 @@ Here is an example that counts the number of spaces with <F4>: > let &selection = "inclusive" let reg_save = @@ - if a:0 " Invoked from Visual mode, use '< and '> marks. - silent exe "normal! `<" . a:type . "`>y" + if a:0 " Invoked from Visual mode, use gv command. + silent exe "normal! gvy" elseif a:type == 'line' silent exe "normal! '[V']y" - elseif a:type == 'block' - silent exe "normal! `[\<C-V>`]y" else silent exe "normal! `[v`]y" endif @@ -1337,6 +1369,8 @@ There are some special cases as well: In the cases of the -count and -register attributes, if the optional argument is supplied, it is removed from the argument list and is available to the replacement text separately. +Note that these arguments can be abbreviated, but that is a deprecated +feature. Use the full name for new scripts. Replacement text From 23f81b20355df303bd1f9f5e66b1d055ab73a170 Mon Sep 17 00:00:00 2001 From: master <ken.i54k@gmail.com> Date: Wed, 16 Jul 2014 20:21:56 +0900 Subject: [PATCH 564/783] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bc91bce4a..480195bbb 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,6 @@ Vimの付属ドキュメントを日本語に翻訳するためのプロジェ 間違いを見つけたらメーリングリストかissueトラッカーでお知らせください。 - Gitリポジトリ https://github.com/vim-jp/vimdoc-ja -- Web版 http://vim-jp.org/vimdoc-ja/ +- HTML版 http://vim-jp.org/vimdoc-ja/ - issueトラッカー https://github.com/vim-jp/vimdoc-ja/issues - メーリングリスト http://groups.google.com/group/vimdoc-ja From e10af94c1e54966435adea72266b117113e07cf6 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 26 Jul 2014 21:45:03 +0900 Subject: [PATCH 565/783] Update eval.txt --- doc/eval.jax | 18 ++++++++++++++---- en/eval.txt | 16 ++++++++++++---- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 9aab1b272..0a15d6d35 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1825,6 +1825,8 @@ luaeval( {expr}[, {expr}]) 任意 |Lua| の式を評価する map( {expr}, {string}) リスト/辞書 {expr}の各要素を{expr}に変える matchadd( {group}, {pattern}[, {priority}[, {id}]]) 数値 {pattern} を {group} で強調表示する +matchaddpos( {group}, {list}[, {priority}[, {id}]]) + 数値 位置を {group} で強調表示する maparg( {name}[, {mode} [, {abbr} [, {dict}]]]) 文字列/辞書 モード{mode}でのマッピング{name}の値 @@ -2631,7 +2633,9 @@ exists({expr}) 結果は数値で、変数{expr}が存在すれば1となり、 $ENVNAME 環境変数(空文字列と比較することでも判 定できる) *funcname 組み込み関数(|functions|参照)かユーザー - が定義した関数(|user-functions|参照) + が定義した関数(|user-functions|参照)。 + また Funcref である変数に対しても動作 + する。 varname 内部変数(|internal-variables|) |curly-braces-names|, |Dictionary|の要 素、|List|の要素などに対しても動作する。 @@ -2722,8 +2726,9 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* 5.0 では空白文字が用いられ、スペースを含むファイル名について問 題を引き起こしていた] - 展開が失敗した場合、結果は空文字列となる。また存在しないファイ - ル名というのは、結果の文字列には含まれない。 + 展開が失敗した場合、結果は空文字列となる。{expr} が '%'、'#'、 + '<' で始まらない限り、存在しないファイル名というのは、結果の文 + 字列には含まれない。下記を参照のこと。 {expr} が '%' か '#' か '<' で始まる場合には、展開は |cmdline-special|のように、変換子を受け付け、それらに関連付け @@ -3116,6 +3121,10 @@ getchar([expr]) *getchar()* 文字列 "\<Key>" と同じ値である(例: "\<Left>")。戻り値は文字列 であり、修飾キー(shift, control, alt)は含まれない。 + [expr] が0や Esc が入力された場合は、これがエスケープシーケン + スの始まりであるかどうかをVimが知るために待つ間、短い遅延があ + るだろう。 + [expr] が1のときは最初のバイトだけを返す。1バイト文字の場合、 これはその文字そのものを表す数値である。これを文字列に変換する にはnr2char()を使う。 @@ -6185,7 +6194,8 @@ jumplist |jumplist| をサポート keymap 'keymap' をサポート langmap 'langmap' サポート libcall |libcall()| をサポート -linebreak 'linebreak', 'breakat' そして 'showbreak' をサポート +linebreak 'linebreak'、'breakat'、'showbreak'、'breakindent' を + サポート lispindent lisp式のインデントをサポート listcmds バッファリスト用のコマンド|:files|と引数リスト用のコマ ンド|arglist|をサポート diff --git a/en/eval.txt b/en/eval.txt index 40495c8bf..86fc475cd 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1877,6 +1877,8 @@ match( {expr}, {pat}[, {start}[, {count}]]) Number position where {pat} matches in {expr} matchadd( {group}, {pattern}[, {priority}[, {id}]]) Number highlight {pattern} with {group} +matchaddpos( {group}, {list}[, {priority}[, {id}]]) + Number highlight positions with {group} matcharg( {nr}) List arguments of |:match| matchdelete( {id}) Number delete match identified by {id} matchend( {expr}, {pat}[, {start}[, {count}]]) @@ -2703,7 +2705,8 @@ exists({expr}) The result is a Number, which is non-zero if {expr} is string) *funcname built-in function (see |functions|) or user defined function (see - |user-functions|). + |user-functions|). Also works for a + variable that is a Funcref. varname internal variable (see |internal-variables|). Also works for |curly-braces-names|, |Dictionary| @@ -2795,7 +2798,8 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* file name contains a space] If the expansion fails, the result is an empty string. A name - for a non-existing file is not included. + for a non-existing file is not included, unless {expr} does + not start with '%', '#' or '<', see below. When {expr} starts with '%', '#' or '<', the expansion is done like for the |cmdline-special| variables with their associated @@ -3204,6 +3208,10 @@ getchar([expr]) *getchar()* String when a modifier (shift, control, alt) was used that is not included in the character. + When [expr] is 0 and Esc is typed, there will be a short delay + while Vim waits to see if this is the start of an escape + sequence. + When [expr] is 1 only the first byte is returned. For a one-byte character it is the character itself as a number. Use nr2char() to convert it to a String. @@ -6418,8 +6426,8 @@ jumplist Compiled with |jumplist| support. keymap Compiled with 'keymap' support. langmap Compiled with 'langmap' support. libcall Compiled with |libcall()| support. -linebreak Compiled with 'linebreak', 'breakat' and 'showbreak' - support. +linebreak Compiled with 'linebreak', 'breakat', 'showbreak' and + 'breakindent' support. lispindent Compiled with support for lisp indenting. listcmds Compiled with commands for the buffer list |:files| and the argument list |arglist|. From 44809114f6e8b81bb98106fe436a62b4874f99c8 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 27 Jul 2014 00:46:02 +0900 Subject: [PATCH 566/783] Update some files --- doc/quickref.jax | 4 +++- doc/recover.jax | 14 ++++++++++++-- doc/spell.jax | 13 +++++++------ en/quickref.txt | 4 +++- en/recover.txt | 11 +++++++++-- en/spell.txt | 9 +++++---- 6 files changed, 39 insertions(+), 16 deletions(-) diff --git a/doc/quickref.jax b/doc/quickref.jax index 8584a4e6b..ccfb1278c 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -1,4 +1,4 @@ -*quickref.txt* For Vim バージョン 7.4. Last change: 2013 Jun 29 +*quickref.txt* For Vim バージョン 7.4. Last change: 2014 Jun 25 VIMリファレンスマニュアル by Bram Moolenaar @@ -639,6 +639,8 @@ 'bioskey' 'biosk' MS-DOS専用: 文字入力にbiosコールを使う 'bomb' ファイルの先頭にBOMを付加する 'breakat' 'brk' 'linebreak' がオンのとき、改行を引き起こす文字 +'breakindent' 'bri' 折り返された行でインデントを繰り返す +'breakindentopt' 'briopt' 'breakindent' のための設定 'browsedir' 'bsdir' ブラウズを始めるディレクトリ 'bufhidden' 'bh' ウィンドウに繋がったバッファがなくなった時の動作 'buflisted' 'bl' バッファリストにバッファを表示するかどうか diff --git a/doc/recover.jax b/doc/recover.jax index c2b8cf98d..adf838fbe 100644 --- a/doc/recover.jax +++ b/doc/recover.jax @@ -1,4 +1,4 @@ -*recover.txt* For Vim バージョン 7.4. Last change: 2010 Jul 20 +*recover.txt* For Vim バージョン 7.4. Last change: 2014 Mar 27 VIMリファレンスマニュアル by Bram Moolenaar @@ -81,7 +81,17 @@ Amigaでは、回復可能なramディスクを使えるが、それが100%働 ことはない。読取専用属性のファイルについて何らかの変更が加えられたとき、スワッ プファイルは無条件に作成される。 -スワップファイルの作成を避けるために 'swapfile' オプションをリセットできる。 +スワップファイルの作成を避けるために 'swapfile' オプションをリセットできる。そ +して新しいバッファでスワップファイルを作成しないようにするのに |:noswapfile|  +修飾子を使うことができる。 + +:nos[wapfile] {command} *:nos* *:noswapfile* + {command} を実行する。それが新しいバッファを読み込むコマンドを + 含んでいる場合は、スワップファイルは作成されずに読み込まれ、 + 'swapfile' オプションはリセットされる。バッファが既にスワップ + ファイルを持っていた場合は、スワップファイルは削除されず、 + 'swapfile' はリセットされない。 + 既存のスワップファイルを削除する ~ diff --git a/doc/spell.jax b/doc/spell.jax index cc72e0dc3..1a3de93f3 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -1,4 +1,4 @@ -*spell.txt* For Vim バージョン 7.4. Last change: 2013 Nov 12 +*spell.txt* For Vim バージョン 7.4. Last change: 2014 Jul 02 VIMリファレンスマニュアル by Bram Moolenaar @@ -303,8 +303,8 @@ LL.EEE.add.spl という名前のファイルが追加でロードされる。 生する。これによってスペルファイルをダウンロードする |spellfile.vim| プラグイ ンを呼び出せる。 -Additionally, the files related to the names in 'spellfile' are loaded. These -are the files that |zg| and |zw| add good and wrong words to. +加えて、'spellfile' の名前に関連したファイルは読み込まれる。これらは |zg| や +|zw| で正しい単語や間違った単語を追加したファイルである。 例外: - Vim uses "latin1" when 'encoding' is "iso-8859-15". The euro sign doesn't @@ -942,9 +942,10 @@ be combined without errors. If you get an E763 warning that the word tables differ you need to update your ".spl" spell files. If you downloaded the files, get the latest version of -all spell files you use. Otherwise generate the .spl file again with -|:mkspell|. If you still get errors check the FOL, LOW and UPP lines in the -used .aff files. +all spell files you use. If you are only using one, e.g., German, then also +download the recent English spell files. Otherwise generate the .spl file +again with |:mkspell|. If you still get errors check the FOL, LOW and UPP +lines in the used .aff files. The XX.ascii.spl spell file generated with the "-ascii" argument will not contain the table with characters, so that it can be combine with spell files diff --git a/en/quickref.txt b/en/quickref.txt index 90d359775..79d87fa91 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.4. Last change: 2013 Jun 29 +*quickref.txt* For Vim version 7.4. Last change: 2014 Jun 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -624,6 +624,8 @@ Short explanation of each option: *option-list* 'bioskey' 'biosk' MS-DOS: use bios calls for input characters 'bomb' prepend a Byte Order Mark to the file 'breakat' 'brk' characters that may cause a line break +'breakindent' 'bri' wrapped line repeats indent +'breakindentopt' 'briopt' settings for 'breakindent' 'browsedir' 'bsdir' which directory to start browsing in 'bufhidden' 'bh' what to do when buffer is no longer in window 'buflisted' 'bl' whether the buffer shows up in the buffer list diff --git a/en/recover.txt b/en/recover.txt index 5fc09c0e7..75318b00e 100644 --- a/en/recover.txt +++ b/en/recover.txt @@ -1,4 +1,4 @@ -*recover.txt* For Vim version 7.4. Last change: 2010 Jul 20 +*recover.txt* For Vim version 7.4. Last change: 2014 Mar 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -81,7 +81,14 @@ the amount of memory used to be higher than given with 'maxmem' or 'maxmemtot'. And when making a change to a read-only file, the swap file is created anyway. -The 'swapfile' option can be reset to avoid creating a swapfile. +The 'swapfile' option can be reset to avoid creating a swapfile. And the +|:noswapfile| modifier can be used to not create a swapfile for a new buffer. + +:nos[wapfile] {command} *:nos* *:noswapfile* + Execute {command}. If it contains a command that loads a new + buffer, it will be loaded without creating a swapfile and the + 'swapfile' option will be reset. If a buffer already had a + swapfile it is not removed and 'swapfile' is not reset. Detecting an existing swap file ~ diff --git a/en/spell.txt b/en/spell.txt index a39bec905..3ffd8932e 100644 --- a/en/spell.txt +++ b/en/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 7.4. Last change: 2013 Nov 12 +*spell.txt* For Vim version 7.4. Last change: 2014 Jul 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -939,9 +939,10 @@ be combined without errors. If you get an E763 warning that the word tables differ you need to update your ".spl" spell files. If you downloaded the files, get the latest version of -all spell files you use. Otherwise generate the .spl file again with -|:mkspell|. If you still get errors check the FOL, LOW and UPP lines in the -used .aff files. +all spell files you use. If you are only using one, e.g., German, then also +download the recent English spell files. Otherwise generate the .spl file +again with |:mkspell|. If you still get errors check the FOL, LOW and UPP +lines in the used .aff files. The XX.ascii.spl spell file generated with the "-ascii" argument will not contain the table with characters, so that it can be combine with spell files From 24401b78e4865f3ddc82f6b871440dad21a68c1e Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 27 Jul 2014 00:54:00 +0900 Subject: [PATCH 567/783] Fix translation --- doc/spell.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/spell.jax b/doc/spell.jax index 1a3de93f3..db0cfea6b 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -304,7 +304,7 @@ LL.EEE.add.spl という名前のファイルが追加でロードされる。 ンを呼び出せる。 加えて、'spellfile' の名前に関連したファイルは読み込まれる。これらは |zg| や -|zw| で正しい単語や間違った単語を追加したファイルである。 +|zw| で正しい単語や間違った単語を追加するファイルである。 例外: - Vim uses "latin1" when 'encoding' is "iso-8859-15". The euro sign doesn't From 8e459f21e81db9f48f6a3a5970fa3e765e3cc6ba Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 27 Jul 2014 12:06:16 +0900 Subject: [PATCH 568/783] Update some files --- doc/if_pyth.jax | 2 +- doc/options.jax | 5 +++-- en/if_pyth.txt | 2 +- en/options.txt | 7 ++++--- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/doc/if_pyth.jax b/doc/if_pyth.jax index aa19fb2bb..5f5a55ddb 100644 --- a/doc/if_pyth.jax +++ b/doc/if_pyth.jax @@ -28,7 +28,7 @@ Python 3 インターフェイスは Vim が |+python3| 機能付きでコンパ ============================================================================== 1. コマンド *python-commands* - *:python* *:py* + *:python* *:py* *E263* *E264* *E887* :[range]py[thon] {stmt} Pythonのステートメント{stmt}を実行します。`:python` コ マンドが機能するか簡単にチェックするには: > diff --git a/doc/options.jax b/doc/options.jax index 725af6132..5ded891ee 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4019,12 +4019,13 @@ Note 1番目の形式では、行全体がオプション指定に使われる るので注意。 *'history'* *'hi'* -'history' 'hi' 数値 (Vimの既定値: 20, Viの既定値: 0) +'history' 'hi' 数値 (Vimの既定値: 50, Viの既定値: 0) グローバル {Vi にはない} ":" によるコマンドと以前に使った検索パターンの履歴は保存されるわけだが、 このオプションはそれぞれの履歴に何個の項目が保存されるかを指定する (|cmdline-editing| を参照)。 + 最大値は10000。 NOTE: このオプションはオプション 'compatible' がオンのときはViの既定値 に、オフのときはVimの既定値になるので注意すること。 @@ -5451,7 +5452,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる ファイルにパッチを適用し、ファイルの新しいバージョンを生成するために使 われる式。|diff-patchexpr| を参照。 - *'patchmode'* *'pm'* *E206* + *'patchmode'* *'pm'* *E205* *E206* 'patchmode' 'pm' 文字列 (既定では "") グローバル {Vi にはない} diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 213b4c861..9295ad9af 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -28,7 +28,7 @@ Both can be available at the same time, but read |python-2-and-3|. ============================================================================== 1. Commands *python-commands* - *:python* *:py* *E205* *E263* *E264* + *:python* *:py* *E263* *E264* *E887* :[range]py[thon] {stmt} Execute Python statement {stmt}. A simple check if the `:python` command is working: > diff --git a/en/options.txt b/en/options.txt index 5838f1198..01dc6862c 100644 --- a/en/options.txt +++ b/en/options.txt @@ -3920,12 +3920,13 @@ A jump table for the options with a short description can be found at |Q_op|. NOTE: This option is reset when 'compatible' is set. *'history'* *'hi'* -'history' 'hi' number (Vim default: 20, Vi default: 0) +'history' 'hi' number (Vim default: 50, Vi default: 0) global {not in Vi} A history of ":" commands, and a history of previous search patterns - are remembered. This option decides how many entries may be stored in + is remembered. This option decides how many entries may be stored in each of these histories (see |cmdline-editing|). + The maximum value is 10000. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. @@ -5334,7 +5335,7 @@ A jump table for the options with a short description can be found at |Q_op|. Expression which is evaluated to apply a patch to a file and generate the resulting new version of the file. See |diff-patchexpr|. - *'patchmode'* *'pm'* *E206* + *'patchmode'* *'pm'* *E205* *E206* 'patchmode' 'pm' string (default "") global {not in Vi} From 06bf215dc83e0ac2e23f9574d1328e4bb4316a50 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 28 Jul 2014 22:51:40 +0900 Subject: [PATCH 569/783] Add missing sentence --- doc/eval.jax | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index 0a15d6d35..109fb313c 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1644,7 +1644,9 @@ v:windowid X11 ベースの GUI を使っているとき、もしくは端末の ============================================================================== 4. 組み込み関数 *functions* -(関数名の上でCTRL-]を使うことで、詳細な説明へ飛ぶことができる) +機能別に分類された一覧は |function-list| を参照のこと。 + +(関数名の上でCTRL-]を使うことで、詳細な説明へ飛ぶことができる。) 使用法 結果 説明 ~ From e87275a35d7a649bb0504d78f064d744ae2e8bc4 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Tue, 29 Jul 2014 00:37:21 +0900 Subject: [PATCH 570/783] Fix highlighting --- doc/syntax.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/syntax.jax b/doc/syntax.jax index 5a61d3445..31ea079a3 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -4935,7 +4935,7 @@ Setup→Font→Enable Boldが無効になっていることを確認すること MATCH パターンが実際にマッチした回数 SLOWEST マッチ1回あたりの最長時間 AVERAGE マッチ1回あたりの平均時間 - NAME シンタックス要素の名前。Note:一意な名 + NAME シンタックス要素の名前。Note 一意な名 前ではないことに注意。 PATTERN 使用されたパターン From 4fbad83c5eb60606b1f5ce182f63ff134e8e246b Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 30 Jul 2014 00:33:50 +0900 Subject: [PATCH 571/783] Fix translation --- doc/index.jax | 2 +- doc/usr_11.jax | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/index.jax b/doc/index.jax index fd8e9e44a..83821ecd1 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1478,7 +1478,7 @@ You found it, Arthur! *holy-grail* |:registers| :reg[isters] レジスタの内容を表示 |:resize| :res[ize] カレントウィンドウの高さを変更 |:retab| :ret[ab] タブの大きさを変更 -|:return| :retu[rn] ユーザーファンクションからリターンする +|:return| :retu[rn] ユーザー関数から戻る |:rewind| :rew[ind] 引数リストの先頭のファイルを開く |:right| :ri[ght] テキストを右寄せに整形 |:rightbelow| :rightb[elow] ウィンドウが右もしくは下に分割されるようにする diff --git a/doc/usr_11.jax b/doc/usr_11.jax index 160baec67..13b3ace2d 100644 --- a/doc/usr_11.jax +++ b/doc/usr_11.jax @@ -113,7 +113,7 @@ vimdiff (|08.7|) が便利です。例: > 所有者: mool 日付: Tue May 29 21:00:25 2001 ~ ファイル名: ~mool/vim/vim6/src/main.c ~ 変更状態: あり ~ - ユーザー名: mool ホスト名: masaka.moolenaar.net ~ + ユーザー名: mool ホスト名: masaka.moolenaar.net ~ プロセスID: 12525 ~ ディレクトリ ~/tmp: ~ -- なし -- ~ @@ -164,7 +164,7 @@ Vim には、うっかりミスを防止するための仕組みがあります 所有者: mool 日付: Tue May 29 21:09:28 2001 ~ ファイル名: ~mool/vim/vim6/src/main.c ~ 変更状態: なし ~ - ユーザー名: mool ホスト名: masaka.moolenaar.net ~ + ユーザー名: mool ホスト名: masaka.moolenaar.net ~ プロセスID: 12559 (まだ実行中) ~ 次のファイルを開いている最中 "main.c" ~ 日付: Tue May 29 19:46:12 2001 ~ From 5891113ba9f49d53373886ff9f04853643f064e3 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 30 Jul 2014 00:42:52 +0900 Subject: [PATCH 572/783] Improve translation --- doc/index.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/index.jax b/doc/index.jax index 83821ecd1..33825bfe2 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -23,7 +23,7 @@ 5. EX コマンド |ex-cmd-index| オプションの概略は help.txt を参照。|option-list| -ビルトイン関数の詳細は|functions|を参照。 +組み込み関数の詳細は|functions|を参照。 Vim変数の一覧は|vim-variable|を参照。 全ヘルプ項目の一覧は |help-tags| を参照。 From db377922de682f2d2e6a68573dd0528b33aa3d7a Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 30 Jul 2014 08:56:04 +0900 Subject: [PATCH 573/783] Update tutor #107 - Follow up to the latest - Fix typo --- tutor/tutor | 4 ++-- tutor/tutor.ja | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/tutor/tutor b/tutor/tutor index da28a1531..64a27d1c0 100644 --- a/tutor/tutor +++ b/tutor/tutor @@ -55,8 +55,8 @@ NOTE: The cursor keys should also work. But using hjkl you will be able to 2. Type: :q! <ENTER>. This exits the editor, DISCARDING any changes you have made. - 3. When you see the shell prompt, type the command that got you into this - tutor. That would be: vimtutor <ENTER> + 3. Get back here by executing the command that got you into this tutor. That + might be: vimtutor <ENTER> 4. If you have these steps memorized and are confident, execute steps 1 through 3 to exit and re-enter the editor. diff --git a/tutor/tutor.ja b/tutor/tutor.ja index 66a818ad9..b26b477e9 100644 --- a/tutor/tutor.ja +++ b/tutor/tutor.ja @@ -55,8 +55,7 @@ NOTE: カーソルキーでも移動できます。しかし hjkl に一度慣 2. 次のようにタイプ: :q! <ENTER> これにより編集した内容を保存せずにエディタが終了します。 - 3. シェルプロンプトが出てきたら、このチュートリアルを始める為ににコマンド - をタイプします。 + 3. このチュートリアルを始める為のコマンドを実行すると、ここに戻れます。 そのコマンドは: vimtutor <ENTER> 4. これまでのステップを覚え自信がついたならば、ステップ 1 から 3 までを実 @@ -904,7 +903,7 @@ NOTE: 1つの検索コマンドだけ大文字小文字の区別をやめたい ** CTRL-D と <TAB> でコマンドラインを補完する ** - 1. コンパチモードでないことを確認します: :set nocp + 1. 互換モードでないことを確認します: :set nocp 2. 現在のディレクトリに在るファイルを :!ls か :!dir で確認します。 From 270d4e468a04056e07623967449e15c662030d98 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 30 Jul 2014 09:11:44 +0900 Subject: [PATCH 574/783] Translate consistently #107 --- tutor/tutor.ja | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutor/tutor.ja b/tutor/tutor.ja index b26b477e9..99cc7d463 100644 --- a/tutor/tutor.ja +++ b/tutor/tutor.ja @@ -948,7 +948,7 @@ NOTE: 補完は多くのコマンドで動作します。そして CTRL-D と <T これにて Vim のチュートリアルを終わります。エディタを簡単に、しかも充分に 使うことができるようにと、Vim の持つ概念の要点のみを伝えようとしました。 Vim にはさらに多くのコマンドがあり、ここで全てを説明することはできません。 - 以降はユーザマニュアルを参照ください: ":help user-manual" + 以降はユーザーマニュアルを参照ください: ":help user-manual" これ以後の学習のために、次の本を推薦します。 Vim - Vi Improved - by Steve Oualline From 40fab3c1543aa527422bd7351a8f22a4f4485e12 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 31 Jul 2014 10:56:30 +0900 Subject: [PATCH 575/783] Update some files --- doc/change.jax | 14 +++++++++++++- doc/index.jax | 7 +++++-- en/change.txt | 14 +++++++++++++- en/index.txt | 7 +++++-- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index 38fdf5cef..ef3b78989 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -71,9 +71,21 @@ アルモードでは、"D" はビジュアル選択されたテキストと行 末までの全てのテキストを削除する。 {Vi にはない} - *:d* *:de* *:del* *:delete* *:dl* + *:d* *:de* *:del* *:delete* *:dl* *:dp* :[range]d[elete] [x] [range] 行 (既定値: 現在行) を [レジスタ x に入れ] 削 除する。 + Note これらの奇妙な省略形: + :dl delete と list + :dell 同上 + :delel 同上 + :deletl 同上 + :deletel 同上 + :dp delete と print + :dep 同上 + :delp 同上 + :delep 同上 + :deletp 同上 + :deletep 同上 :[range]d[elete] [x] {count} [range] 行目 (既定: 現在行 |cmdline-ranges|) から diff --git a/doc/index.jax b/doc/index.jax index 33825bfe2..24a6e3c83 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1,4 +1,4 @@ -*index.txt* For Vim バージョン 7.4. Last change: 2013 Nov 14 +*index.txt* For Vim バージョン 7.4. Last change: 2014 Mar 25 VIMリファレンスマニュアル by Bram Moolenaar @@ -1222,10 +1222,13 @@ You found it, Arthur! *holy-grail* |:digraphs| :dig[raphs] ダイグラフの入力または表示 |:display| :di[splay] レジスタの内容を表示 |:djump| :dj[ump] #define へジャンプ -|:dlist| :dl[ist] #define をリスト表示 +|:dl| :dl 'l' フラグ付き |:delete| の短縮形 +|:dl| :del[ete]l 'l' フラグ付き |:delete| の短縮形 +|:dlist| :dli[st] #define をリスト表示 |:doautocmd| :do[autocmd] カレントバッファに対しオートコマンドを適用する |:doautoall| :doautoa[ll] ロードされているバッファすべてにオートコマンド を適用する +|:dp| :d[elete]p 'p' フラグ付き |:delete| の短縮形 |:drop| :dr[op] 指定したファイルが表示されているウィンドウに ジャンプするか、カレントウィンドウで開く |:dsearch| :ds[earch] マクロ定義(#define)を表示する diff --git a/en/change.txt b/en/change.txt index 9d995577f..3fbeec228 100644 --- a/en/change.txt +++ b/en/change.txt @@ -71,9 +71,21 @@ For inserting text see |insert.txt|. "D" deletes the highlighted text plus all text until the end of the line. {not in Vi} - *:d* *:de* *:del* *:delete* *:dl* + *:d* *:de* *:del* *:delete* *:dl* *:dp* :[range]d[elete] [x] Delete [range] lines (default: current line) [into register x]. + Note these weird abbreviations: + :dl delete and list + :dell idem + :delel idem + :deletl idem + :deletel idem + :dp delete and print + :dep idem + :delp idem + :delep idem + :deletp idem + :deletep idem :[range]d[elete] [x] {count} Delete {count} lines, starting with [range] diff --git a/en/index.txt b/en/index.txt index 8d8ddfab0..cda17681f 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.4. Last change: 2013 Nov 14 +*index.txt* For Vim version 7.4. Last change: 2014 Mar 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1191,9 +1191,12 @@ tag command action ~ |:digraphs| :dig[raphs] show or enter digraphs |:display| :di[splay] display registers |:djump| :dj[ump] jump to #define -|:dlist| :dl[ist] list #defines +|:dl| :dl short for |:delete| with the 'l' flag +|:dl| :del[ete]l short for |:delete| with the 'l' flag +|:dlist| :dli[st] list #defines |:doautocmd| :do[autocmd] apply autocommands to current buffer |:doautoall| :doautoa[ll] apply autocommands for all loaded buffers +|:dp| :d[elete]p short for |:delete| with the 'p' flag |:drop| :dr[op] jump to window editing file or edit file in current window |:dsearch| :ds[earch] list one #define From a8e701274230975dc4d8596478044b445548243e Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 31 Jul 2014 19:02:18 +0900 Subject: [PATCH 576/783] Update some files --- doc/starting.jax | 6 +++++- doc/syntax.jax | 7 +++++-- doc/term.jax | 9 ++++----- doc/usr_08.jax | 2 +- doc/windows.jax | 24 +++++++++++++++--------- en/starting.txt | 6 +++++- en/syntax.txt | 7 +++++-- en/term.txt | 6 +++--- en/usr_08.txt | 4 ++-- en/windows.txt | 21 ++++++++++++++------- 10 files changed, 59 insertions(+), 33 deletions(-) diff --git a/doc/starting.jax b/doc/starting.jax index df47075ad..2f311d0de 100644 --- a/doc/starting.jax +++ b/doc/starting.jax @@ -750,6 +750,10 @@ Evimでは以下のオプションが標準設定から変更される: 初期化ファイルは上記の順に検索され、最初に見つかったものだけが読み込ま れる。 + 推奨: Vimの設定ファイルは全て $HOME/.vim/ ディレクトリ(MS-Windowsでは + $HOME/vimfiles/)に置くこと。そうすれば設定ファイルを別のシステムにコ + ピーするのが容易になる。 + Vimが "-u filename" で起動された場合、デフォルトのvimrcの代わりに "filename" が使われる。続く初期化処理の4.までがスキップされる。 $MYVIMRC は設定されない。 @@ -1465,7 +1469,7 @@ viminfoを上書きしたいのならば、エラーを修正するか、また にはない} - *:wv* *:wviminfo* *E137* *E138* *E574* + *:wv* *:wviminfo* *E137* *E138* *E574* *E886* :wv[iminfo][!] [file] viminfoファイルを [file](デフォルト:上記参照)として保 存する。まず既存のファイルの(古い)情報が読み込まれ、 Vim内部の(新しい)情報とマージ(合併)されてから、ファイ diff --git a/doc/syntax.jax b/doc/syntax.jax index 31ea079a3..4415ee726 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -4906,6 +4906,9 @@ Setup→Font→Enable Boldが無効になっていることを確認すること 方法でそれを速くできるかもしれない。|folding| や 'relativenumber' といった機能 を有効化すると、それらが干渉して遅くなる場合もある。 +Note: |+profile| 機能付きでコンパイルされた時のみ利用可能である。 +"huge" 機能付きでVimをビルドする必要があるかもしれない。 + 時間のかかっているシンタックスパターンを発見するために、以下の様な手順で概要を 得られる: > @@ -4948,9 +4951,9 @@ Setup→Font→Enable Boldが無効になっていることを確認すること たとえば要素のマッチするものがリテラルテキストならば、そのテキストのサイズをバ イト数で指定すると良い。 -"<\@<=span" "<span" 中の "span" にマッチする。これは "<" があるかどうか多 +"<\@<=span" "<span" 中の "span" にマッチする。これは "<" があるかどうか多 くの場所でマッチを試みる。(ゆえに遅くなりやすい) -"<\@1<=span" 同じものにマッチするが、"span" の前の1バイトだけをチェックす +"<\@1<=span" 同じものにマッチするが、"span" の前の1バイトだけをチェックす る。 diff --git a/doc/term.jax b/doc/term.jax index ae9183c27..684010fe8 100644 --- a/doc/term.jax +++ b/doc/term.jax @@ -1,4 +1,4 @@ -*term.txt* For Vim バージョン 7.4. Last change: 2013 Mar 13 +*term.txt* For Vim バージョン 7.4. Last change: 2014 May 13 VIMリファレンスマニュアル by Bram Moolenaar @@ -662,10 +662,9 @@ X サーバーのクリップボードを利用できるときは、コマンド す。 *xterm-copy-paste* -NOTE: 古い xterm では95桁目を越えてカーソルを移動できない場合があります。これ -は xterm の問題であり、Vim の問題ではありません。新しい xterm を入手してくださ -い |color-xterm|。 -現在、制限は 223 桁です。 +NOTE: 古い xterm では95桁目または223桁目を越えてカーソルを移動できない場合があ +ります。これは xterm の問題であり、Vim の問題ではありません。新しい xterm を入 +手してください |color-xterm|。また |'ttymouse'| を参照してください。 xterm でコピー&ペーストする方法('mouse' に現在のモードが含まれていないとき): 1. テキストの最初の文字の上で左ボタンを押し、最後の文字までマウスポインタを動 diff --git a/doc/usr_08.jax b/doc/usr_08.jax index af5912eb8..bb7cecdac 100644 --- a/doc/usr_08.jax +++ b/doc/usr_08.jax @@ -1,4 +1,4 @@ -*usr_08.txt* For Vim バージョン 7.4. Last change: 2006 Jul 18 +*usr_08.txt* For Vim バージョン 7.4. Last change: 2014 Jul 06 VIM USER MANUAL - by Bram Moolenaar diff --git a/doc/windows.jax b/doc/windows.jax index b109ee15d..1930821f9 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -1,4 +1,4 @@ -*windows.txt* For Vim バージョン 7.4. Last change: 2012 Nov 15 +*windows.txt* For Vim バージョン 7.4. Last change: 2014 Mar 25 VIMリファレンスマニュアル by Bram Moolenaar @@ -138,15 +138,21 @@ Note: ステータス行が反転表示されるはずが反転表示されな CTRL-W s *CTRL-W_s* CTRL-W S *CTRL-W_S* CTRL-W CTRL-S *CTRL-W_CTRL-S* -:[N]sp[lit] [++opt] [+cmd] *:sp* *:split* +:[N]sp[lit] [++opt] [+cmd] [file] *:sp* *:split* カレントウィンドウを2つに分割する。その結果、2つの表示領域に同 - じファイルが表示されるようになる。新しいウィンドウの高さはNに - なる(デフォルトの高さはカレントウィンドウの高さの半分)。新しい - ウィンドウの場所を確保するため、カレントウィンドウの高さは低く - なる('equalalways' オプションがセットされていて、かつ - 'eadirection' の値が "hor" でない場合、他のウィンドウの中でカ - レントウィンドウか新しいウィンドウより大きいものがあれば、その - ウィンドウも小さくなる) + じファイルが表示されるようになる。 + + 新しいウィンドウの高さはNになる(デフォルトの高さはカレントウィ + ンドウの高さの半分)。新しいウィンドウの場所を確保するため、カ + レントウィンドウの高さは低くなる('equalalways' オプションが + セットされていて、かつ'eadirection' の値が "hor" でない場合、 + 他のウィンドウの中でカレントウィンドウか新しいウィンドウより大 + きいものがあれば、そのウィンドウも小さくなる)。 + + [file] が与えられている場合は新しいウィンドウで編集される。ど + のバッファでもロードされていない場合、読み込まれる。そうでなれ + ければ新しいウィンドウは既にロードされたバッファを使用する。 + Note: CTRL-S は端末によっては使用できない。また、それ以上の入 力をブロックしてしまうかもしれない。続けるためにはCTRL-Qを使う こと。 diff --git a/en/starting.txt b/en/starting.txt index fb8117f3d..54525ac5d 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -769,6 +769,10 @@ accordingly. Vim proceeds in this order: The files are searched in the order specified above and only the first one that is found is read. + RECOMMENDATION: Put all your Vim configuration stuff in the + $HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it + easy to copy it to another system. + If Vim was started with "-u filename", the file "filename" is used. All following initializations until 4. are skipped. $MYVIMRC is not set. @@ -1497,7 +1501,7 @@ most of the information will be restored). already set (registers, marks, |v:oldfiles|, etc.) will be overwritten {not in Vi} - *:wv* *:wviminfo* *E137* *E138* *E574* + *:wv* *:wviminfo* *E137* *E138* *E574* *E886* :wv[iminfo][!] [file] Write to viminfo file [file] (default: see above). The information in the file is first read in to make a merge between old and new info. When [!] is used, diff --git a/en/syntax.txt b/en/syntax.txt index db0e075ab..120fa1322 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -5114,6 +5114,9 @@ If your syntax causes redrawing to be slow, here are a few hints on making it faster. To see slowness switch on some features that usually interfere, such as 'relativenumber' and |folding|. +Note: this is only available when compiled with the |+profile| feature. +You many need to build Vim with "huge" features. + To find out what patterns are consuming most time, get an overview with this sequence: > :syntime on @@ -5155,9 +5158,9 @@ When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at all positions in the current and previous line. For example, if the item is literal text specify the size of that text (in bytes): -"<\@<=span" Matches "span" in "<span". This tries matching with "<" in +"<\@<=span" Matches "span" in "<span". This tries matching with "<" in many places. -"<\@1<=span" Matches the same, but only tries one byte before "span". +"<\@1<=span" Matches the same, but only tries one byte before "span". vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/en/term.txt b/en/term.txt index eb5d7fb57..d2dd54706 100644 --- a/en/term.txt +++ b/en/term.txt @@ -1,4 +1,4 @@ -*term.txt* For Vim version 7.4. Last change: 2013 Mar 13 +*term.txt* For Vim version 7.4. Last change: 2014 May 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -666,8 +666,8 @@ When the X-server clipboard is available, the command server described in *xterm-copy-paste* NOTE: In some (older) xterms, it's not possible to move the cursor past column -95. This is an xterm problem, not Vim's. Get a newer xterm |color-xterm|. -Now the limit is 223 columns. +95 or 223. This is an xterm problem, not Vim's. Get a newer xterm +|color-xterm|. Also see |'ttymouse'|. Copy/paste in xterm with (current mode NOT included in 'mouse'): 1. Press left mouse button on first letter of text, move mouse pointer to last diff --git a/en/usr_08.txt b/en/usr_08.txt index 2ac6fea00..ef26b46eb 100644 --- a/en/usr_08.txt +++ b/en/usr_08.txt @@ -1,4 +1,4 @@ -*usr_08.txt* For Vim version 7.4. Last change: 2006 Jul 18 +*usr_08.txt* For Vim version 7.4. Last change: 2014 Jul 06 VIM USER MANUAL - by Bram Moolenaar @@ -532,7 +532,7 @@ window. And you will notice a bar at the top with the two file names: You now have two tab pages. The first one has a window for "thisfile" and the second one a window for "thatfile". It's like two pages that are on top of -eachother, with a tab sticking out of each page showing the file name. +each other, with a tab sticking out of each page showing the file name. Now use the mouse to click on "thisfile" in the top line. The result is diff --git a/en/windows.txt b/en/windows.txt index d1561a0a2..4ba28a3c0 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 7.4. Last change: 2012 Nov 15 +*windows.txt* For Vim version 7.4. Last change: 2014 Mar 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -132,13 +132,20 @@ that have termcap codes for italics. CTRL-W s *CTRL-W_s* CTRL-W S *CTRL-W_S* CTRL-W CTRL-S *CTRL-W_CTRL-S* -:[N]sp[lit] [++opt] [+cmd] *:sp* *:split* +:[N]sp[lit] [++opt] [+cmd] [file] *:sp* *:split* Split current window in two. The result is two viewports on - the same file. Make new window N high (default is to use half - the height of the current window). Reduces the current window - height to create room (and others, if the 'equalalways' option - is set, 'eadirection' isn't "hor", and one of them is higher - than the current or the new window). + the same file. + + Make the new window N high (default is to use half the height + of the current window). Reduces the current window height to + create room (and others, if the 'equalalways' option is set, + 'eadirection' isn't "hor", and one of them is higher than the + current or the new window). + + If [file] is given it will be edited in the new window. If it + is not loaded in any buffer, it will be read. Else the new + window will use the already loaded buffer. + Note: CTRL-S does not work on all terminals and might block further input, use CTRL-Q to get going again. Also see |++opt| and |+cmd|. From 8d2333905ac56296838c22ebe729dd9fcc53d0b2 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 2 Aug 2014 12:22:11 +0900 Subject: [PATCH 577/783] Update some files --- doc/cmdline.jax | 11 ++++++++--- doc/editing.jax | 47 +++++++++++++++++++++++------------------------ doc/eval.jax | 13 +++++++++++++ doc/filetype.jax | 12 +++++++----- doc/fold.jax | 7 ++++--- doc/indent.jax | 6 ++++-- doc/intro.jax | 10 ++++++---- doc/motion.jax | 5 +++-- doc/undo.jax | 2 +- en/cmdline.txt | 11 ++++++++--- en/editing.txt | 1 + en/eval.txt | 15 +++++++++++++++ en/filetype.txt | 10 ++++++---- en/fold.txt | 9 +++++---- en/indent.txt | 10 ++++++---- en/intro.txt | 9 +++++---- en/motion.txt | 5 +++-- en/undo.txt | 8 ++++---- 18 files changed, 122 insertions(+), 69 deletions(-) diff --git a/doc/cmdline.jax b/doc/cmdline.jax index da5ade60d..a3eb6668f 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim バージョン 7.4. Last change: 2013 Mar 16 +*cmdline.txt* For Vim バージョン 7.4. Last change: 2014 Feb 23 VIMリファレンスマニュアル by Bram Moolenaar @@ -718,6 +718,7 @@ Exコマンドの、ファイル名が使えるところでは、以下の文字 らは式や関数 |expand()| 内でも使うことができる。 % カレントファイル名に置き換えられる。 *:_%* *c_%* # 代替ファイル名に置き換えられる。 *:_#* *c_#* + これはウィンドウごとに記憶される。 #n (ここで n は数) バッファ n のファイル名に置き *:_#0* *:_#n* 換えられる。"#0" は "#" と同じ。 *c_#n* ## 引数リスト内の全てのファイル名を、空白で区切って *:_##* *c_##* @@ -782,8 +783,8 @@ Note: これらは文字通りに打ち込まれる、これらは特別なキ 関数の中では、関数の先頭からの相対的な行番号になる。 *filename-modifiers* - *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* - *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* +*:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* *::S* + *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S* ファイル名修飾子は "%", "#", "#n", "<cfile>", "<sfile>", "<afile>", "<abuf>" の後で使うことができる。これらは関数 |fnamemodify()| と使うこともできる。Vim が |+modify_fname| 機能付きでコンパイルされていなければ、これらの修飾子を使う @@ -836,6 +837,10 @@ Note: これらは文字通りに打ち込まれる、これらは特別なキ :gs?pat?sub? "pat" に一致したものを全て "sub" に置き換える。その他の点では ":s" と同様に機能する。 + :S シェルコマンドで利用できるように特別な文字をエスケープする。 + (|shellescape()|を参照)。最後でなければならない。例: > + :!dir <cfile>:S + :call system('chmod +w -- ' . expand('%:S')) ファイル名が "src/version.c"、カレントディレクトリが "/home/mool/vim" のときの 例: > diff --git a/doc/editing.jax b/doc/editing.jax index 323b52b33..1df0bec87 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -34,22 +34,22 @@ コマンドラインでは "%" で表せる。|:_%| *alternate-file* -カレントファイル名が既に存在したときは、前の方は「オルタネートファイル名」にな -る。これはコマンドラインでは "#" で表され|:_#|、|CTRL-^|を使うとカレントファイル -とオルタネートファイルを切り替えることが出来る。ただし|:keepalt|を使ったときは -オルタネートファイル名は変わらない。 +カレントファイル名が既に存在したときは、前の方は「代替ファイル名」になる。これ +はコマンドラインでは "#" で表され|:_#|、|CTRL-^|を使うとカレントファイルと代替 +ファイルを切り替えることが出来る。ただし|:keepalt|を使ったときは代替ファイル名 +は変わらない。代替ファイル名はウィンドウごとに記憶される。 *:keepalt* *:keepa* -:keepalt {cmd} 現在のオルタネートファイル名を変えずに{cmd}を実行する。 - Note 間接的に呼び出されるコマンド(例えば関数によって) - はオルタネートファイル名を変えてしまう。{Vi にはない} +:keepalt {cmd} 現在の代替ファイル名を変えずに{cmd}を実行する。Note 間 + 接的に呼び出されるコマンド(例えば関数によって)は代替 + ファイル名を変えてしまう。{Vi にはない} 全てのファイル名はバッファリストに記憶される。編集 (例えば ":e filename") や保 存(例えば ":w filename") のためにファイル名を入力すると、そのファイル名がリス トに追加される。このリストを使えば、どのファイルを編集したかを覚えておいたり、 コマンド CTRL-^ によってあるファイルから別のファイルへ素早く移行できる (例えば テキストをコピーするとき)。まずファイルの番号を、次に CTRL-^ を打ち込む。{Vi: -オルタネートファイル名は1個だけ使える} +代替ファイル名は1個だけ使える} CTRL-G または *CTRL-G* *:f* *:fi* *:file* :f[ile] カレントファイル名 (これは ":cd" が使われたとき以外は @@ -91,7 +91,7 @@ g CTRL-G カーソルの現在の位置を、列、行、単語、文字、バ *:file_f* :f[ile][!] {name} カレントファイル名を {name} に設定する。!をつけると |:file|のようにメッセージを切り詰めなくなる。 - バッファが名前を持つならその名前がオルタネートファイル名 + バッファが名前を持つならその名前が代替ファイル名 |alternate-file|になる。元の名前を保持するためにリスト されない(unlisted)バッファが作成される。 *:0file* @@ -226,8 +226,8 @@ Vim はバッファが変更されたかどうかを記憶していて、変更 :e[dit] [++opt] [+cmd] #[count] [count] 番目のバッファ (コマンド |:files| で表示される もの) を開く。このコマンドは [count] CTRL-^ と同じであ - る。しかしオルタネートバッファがファイル名を持たないと - ":e #" は機能しないが、CTRL-^ はそのときも機能する。 + る。しかし代替バッファがファイル名を持たないと":e #" + は機能しないが、CTRL-^ はそのときも機能する。 |++opt| と |+cmd| も参照。 {Vi: ++opt は使えない} @@ -278,19 +278,18 @@ Vim はバッファが変更されたかどうかを記憶していて、変更 してオプション 'readonly' をオンにする。{Vi にはない} *CTRL-^* *CTRL-6* -CTRL-^ オルタネートファイルを編集する。たいていの場合、オルタ - ネートファイルは前に編集したファイルである。これを使う - と2つのファイル間を素早く切り替えることができる。これ - は ":e #" と同じだが、対象のファイル名が無い場合も機能 - する。 - オプション 'autowrite' か 'autowriteall' がオンならば、 - バッファを移動するときに書き込みをする。 +CTRL-^ 代替ファイルを編集する。たいていの場合、代替ファイルは + 前に編集したファイルである。これを使うと2つのファイル + 間を素早く切り替えることができる。これは ":e #" と同じ + だが、対象のファイル名が無い場合も機能する。 + オプション 'autowrite' か 'autowriteall' がオンなら + ば、バッファを移動するときに書き込みをする。 たいていは "^" と "6" は同じキーである。CTRL を押しな がら 6 のキーを押せば CTRL-^ を押したのと同じ効果を得 られる。しかし英語配列でないキーボードでは他のキーが割 り当てられる。 -[count]CTRL-^ [count] 番目のオルタネートファイルを編集する (コマンド +[count]CTRL-^ [count] 番目の代替ファイルを編集する (コマンド ":e #[count]" と同じ)。[count] が指定されないと、前に 編集したファイルを編集する。これを使うと2つ (かそれ以 上) のファイル間を素早く行き来できる。 @@ -911,16 +910,16 @@ Note: オプション 'write' がオフのときは、どのファイルも書 グに依存する。"+" が含まれている場合は、バッファがまだ元のファイルと異なってい たとしても、書き込みコマンドによって 'modified' フラグがオフになる。 -":w" にファイル名が与えられるとそれがオルタネートファイルになる。これは例えば -書き込みに失敗した後に ":w #" でもう一度試したいときに使える。オプション -'cpoptions' からフラグ 'A' を取り除くとこれを無効化できる。 +":w" にファイル名が与えられるとそれが代替ファイルになる。これは例えば書き込み +に失敗した後に ":w #" でもう一度試したいときに使える。オプション'cpoptions' か +らフラグ 'A' を取り除くとこれを無効化できる。 *:sav* *:saveas* :sav[eas][!] [++opt] {file} カレントファイルをファイル名 {file} として保存し、カレ ントバッファのファイル名を {file} に変える。それまでの - カレントファイルの名前はオルタネートファイルの名前にな - る。既存のファイルを上書きするには [!] が必要になる。 + カレントファイルの名前は代替ファイルの名前になる。既存 + のファイルを上書きするには [!] が必要になる。 'filetype' が空の場合、保存の前に新しいファイル名に対 してファイルタイプ検出が行われる。 保存が成功すると 'readonly' がオフになる。 diff --git a/doc/eval.jax b/doc/eval.jax index 109fb313c..570947a3c 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -4744,6 +4744,19 @@ round({expr}) *round()* < -5.0 {|+float| 機能つきでコンパイルされたときのみ有効} +screenattr(row, col) *screenattr()* + screenchar() と同様だが、属性を返す。これは他の位置の属性と比 + 較するのに利用できるだけの適当な数値である。 + +screenchar(row, col) *screenchar()* + スクリーン上の位置 [row, col] の文字を数値で返す。これは全ての + スクリーン位置、ステータスライン、ウィンドウセパレータ、コマン + ドラインで機能する。左上の位置は1行、1列目である。文字は合成文 + 字を除く。2バイトのエンコーディングでは最初のバイトだけである + かもしれない。 + この関数は主にテスト用に使われる。 + row か col が範囲外である場合は -1 を返す。 + screencol() *screencol()* 現在のカーソルのスクリーン列を数値で返す。一番左の列番号は 1。 この関数は主にテスト用。 diff --git a/doc/filetype.jax b/doc/filetype.jax index 9c5b66f57..f0ee3a234 100644 --- a/doc/filetype.jax +++ b/doc/filetype.jax @@ -1,4 +1,4 @@ -*filetype.txt* For Vim バージョン 7.4. Last change: 2013 May 25 +*filetype.txt* For Vim バージョン 7.4. Last change: 2013 Dec 15 VIMリファレンスマニュアル by Bram Moolenaar @@ -451,20 +451,22 @@ g:changelog_new_date_format %% 一つの '%' が入る %d 上記で定義した日付 %u 上記で定義したユーザーの名前 + %p b:changelog_entry_prefix の結果 %c 作成後のカーソルの位置 - デフォルトは "%d %u\n\n\5* %c\n\n"。これは次のように - なる ( | はカーソルの位置を示している。しかし、行頭 + デフォルトは "%d %u\n\n\t* %p%c\n\n"。これは次のよう + になる ( | はカーソルの位置を示している。しかし、行頭 の | は行の始まりを表す) > |2003-01-14 Full Name <user@host> | - | * | + | * prefix| < g:changelog_new_entry_format アイテムを作成するときの書式。 次の特別な文字が使える: + %p b:changelog_entry_prefix の結果 %c 作成後のカーソルの位置 デフォルトは "\t*\c"。これは次のようになる > - | * | + | * prefix| < g:changelog_date_entry_search 日付エントリを探すための検索パターン。 diff --git a/doc/fold.jax b/doc/fold.jax index 084a3bf3a..d30e9f006 100644 --- a/doc/fold.jax +++ b/doc/fold.jax @@ -1,4 +1,4 @@ -*fold.txt* For Vim バージョン 7.4. Last change: 2010 May 13 +*fold.txt* For Vim バージョン 7.4. Last change: 2013 Dec 04 VIMリファレンスマニュアル by Bram Moolenaar @@ -273,8 +273,9 @@ zF [count]行を折畳として作成する。"zf" と同じように動作す zd カーソルの位置にある折畳を1つ削除する。カーソルが折畳になって いる行にある場合には、その折畳が削除される。入れ子になった折畳 は1レベル分が削除される。ビジュアルモードでは選択された範囲の - 全ての折畳(partially)が削除される。注意: これは期待したよりも - 余計に折畳を削除し易く、またアンドゥもできないので注意が必要。 + 全ての折畳(partially)の1レベル分が削除される。 + 注意: これは期待したよりも余計に折畳を削除し易く、また手動折畳 + に対してアンドゥもできないので注意が必要。 'foldmethod' が "manual" か "marker" の時だけ動作する。 |fold-delete-marker|も参照。 diff --git a/doc/indent.jax b/doc/indent.jax index d84436b49..0a5101456 100644 --- a/doc/indent.jax +++ b/doc/indent.jax @@ -774,8 +774,10 @@ N = 1 の場合、次のようになる: (<?php タグよりコードの方が 1 段階多くインデントされている) ------------- -PHP タグを囲まれているコードとしてインデントする: > - :let g:PHP_outdentphpescape = 0 + *PHP_outdentphpescape* +PHP エスケープタグを囲まれているPHPではないコードとしてインデントする (PHPエス +ケープタグにのみ影響): > +:let g:PHP_outdentphpescape = 0 ------------- *PHP_removeCRwhenUnix* diff --git a/doc/intro.jax b/doc/intro.jax index e2e2ba17f..ed238de4a 100644 --- a/doc/intro.jax +++ b/doc/intro.jax @@ -1,4 +1,4 @@ -*intro.txt* For Vim バージョン 7.4. Last change: 2013 Jun 17 +*intro.txt* For Vim バージョン 7.4. Last change: 2014 May 24 VIMリファレンスマニュアル by Bram Moolenaar @@ -139,9 +139,11 @@ http://www.vim.org/maillist.php バグレポート: *bugs* *bug-reports* *bugreport.vim* バグレポートは Vim 開発陣 <vim_dev@vim.org> に送ってください。 -これはメーリングリストです。たくさんの人がそのメッセージを見ます。それが不都合 -な場合は (例えばセキュリティ関係)、<bugs@vim.org> に送ってください。そのメッ -セージは Vim のメンテナ (Bram) だけに送信されます。 +これはメーリングリストです。最初にメンバーになる必要があります。たくさんの人が +そのメッセージを見ます。それが不都合な場合は (例えばセキュリティ関係)、 +<bugs@vim.org> に送ってください。そのメッセージは Vim のメンテナ (Bram) だけに +送信されます。 + メッセージは簡潔にお願いします。メールに回答する時間は、Vim を改良する時間から 消費されています! 常に再現可能な例をつけてください。できれば、どこの設定が (あ るいは機能が) バグの発生に影響しているかを探してください。可能なら、違うマシン diff --git a/doc/motion.jax b/doc/motion.jax index ed00f23c0..c93b69163 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -1,4 +1,4 @@ -*motion.txt* For Vim バージョン 7.4. Last change: 2013 Mar 07 +*motion.txt* For Vim バージョン 7.4. Last change: 2014 Feb 11 VIMリファレンスマニュアル by Bram Moolenaar @@ -1090,7 +1090,8 @@ CTRL-O を使っていないことを意味します。この場合 CTRL-O コ |:keepjumps|コマンド修飾子が使われた場合、ジャンプ操作はリストに記憶されませ ん。また、他の場合にもジャンプ操作は記憶されません。例. |:global|の中。 -明示的にジャンプリストに追加するにはマーク'を設定します。 +明示的にジャンプリストに追加するには "m'" でマーク'を設定します。Note setpos() +を呼んでもこれはしません。 CTRL-O コマンドを行って1154行目に移動した後、他のジャンプコマンド(例えば: "G") を実行したとするとジャンプリストは次のようになります: diff --git a/doc/undo.jax b/doc/undo.jax index 26c8ffc37..ccb9a3481 100644 --- a/doc/undo.jax +++ b/doc/undo.jax @@ -1,4 +1,4 @@ -*undo.txt* For Vim バージョン 7.4. Last change: 2013 Sep 08 +*undo.txt* For Vim バージョン 7.4. Last change: 2014 May 24 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/en/cmdline.txt b/en/cmdline.txt index c309a0f7a..f58389af8 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.4. Last change: 2013 Mar 16 +*cmdline.txt* For Vim version 7.4. Last change: 2014 Feb 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -758,6 +758,7 @@ characters have a special meaning. These can also be used in the expression function expand() |expand()|. % Is replaced with the current file name. *:_%* *c_%* # Is replaced with the alternate file name. *:_#* *c_#* + This is remembered for every window. #n (where n is a number) is replaced with *:_#0* *:_#n* the file name of buffer n. "#0" is the same as "#". *c_#n* ## Is replaced with all names in the argument list *:_##* *c_##* @@ -823,8 +824,8 @@ Note: these are typed literally, they are not special keys! the start of the function. *filename-modifiers* - *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* - *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* +*:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* *::S* + *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S* The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>", "<afile>" or "<abuf>". They are also used with the |fnamemodify()| function. These are not available when Vim has been compiled without the |+modify_fname| @@ -879,6 +880,10 @@ These modifiers can be given, in this order: :gs?pat?sub? Substitute all occurrences of "pat" with "sub". Otherwise this works like ":s". + :S Escape special characters for use with a shell command (see + |shellescape()|). Must be the last one. Examples: > + :!dir <cfile>:S + :call system('chmod +w -- ' . expand('%:S')) Examples, when the file name is "src/version.c", current dir "/home/mool/vim": > diff --git a/en/editing.txt b/en/editing.txt index 6cafa7fde..5e589462d 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -38,6 +38,7 @@ If there already was a current file name, then that one becomes the alternate file name. It can be used with "#" on the command line |:_#| and you can use the |CTRL-^| command to toggle between the current and the alternate file. However, the alternate file name is not changed when |:keepalt| is used. +An alternate file name is remembered for each window. *:keepalt* *:keepa* :keepalt {cmd} Execute {cmd} while keeping the current alternate file diff --git a/en/eval.txt b/en/eval.txt index 86fc475cd..5ae36d587 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -4922,6 +4922,21 @@ round({expr}) *round()* < -5.0 {only available when compiled with the |+float| feature} +screenattr(row, col) *screenattr()* + Like screenchar(), but return the attribute. This is a rather + arbitrary number that can only be used to compare to the + attribute at other positions. + +screenchar(row, col) *screenchar()* + The result is a Number, which is the character at position + [row, col] on the screen. This works for every possible + screen position, also status lines, window separators and the + command line. The top left position is row one, column one + The character excludes composing characters. For double-byte + encodings it may only be the first byte. + This is mainly to be used for testing. + Returns -1 when row or col is out of range. + screencol() *screencol()* The result is a Number, which is the current screen column of the cursor. The leftmost column has number 1. diff --git a/en/filetype.txt b/en/filetype.txt index 1cee25bcd..94454fb46 100644 --- a/en/filetype.txt +++ b/en/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.4. Last change: 2013 May 25 +*filetype.txt* For Vim version 7.4. Last change: 2013 Dec 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -447,23 +447,25 @@ g:changelog_new_date_format %% insert a single '%' character %d insert the date from above %u insert the user from above + %p insert result of b:changelog_entry_prefix %c where to position cursor when done - The default is "%d %u\n\n\t* %c\n\n", which produces + The default is "%d %u\n\n\t* %p%c\n\n", which produces something like (| is where cursor will be, unless at the start of the line where it denotes the beginning of the line) > |2003-01-14 Full Name <user@host> | - | * | + | * prefix| < g:changelog_new_entry_format The format used when creating a new entry. The following table describes special tokens in the string: + %p insert result of b:changelog_entry_prefix %c where to position cursor when done The default is "\t*%c", which produces something similar to > - | * | + | * prefix| < g:changelog_date_entry_search The search pattern to use when searching for a diff --git a/en/fold.txt b/en/fold.txt index 240d912d9..6ae2ff868 100644 --- a/en/fold.txt +++ b/en/fold.txt @@ -1,4 +1,4 @@ -*fold.txt* For Vim version 7.4. Last change: 2010 May 13 +*fold.txt* For Vim version 7.4. Last change: 2013 Dec 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -285,9 +285,10 @@ zF Create a fold for [count] lines. Works like "zf". *zd* *E351* zd Delete one fold at the cursor. When the cursor is on a folded line, that fold is deleted. Nested folds are moved one level - up. In Visual mode all folds (partially) in the selected area - are deleted. Careful: This easily deletes more folds than you - expect and there is no undo. + up. In Visual mode one level of all folds (partially) in the + selected area are deleted. + Careful: This easily deletes more folds than you expect and + there is no undo for manual folding. This only works when 'foldmethod' is "manual" or "marker". Also see |fold-delete-marker|. diff --git a/en/indent.txt b/en/indent.txt index 20be71f35..dd5de79d7 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -581,8 +581,8 @@ CLOJURE *ft-clojure-indent* *clojure-indent* Clojure indentation differs somewhat from traditional Lisps, due in part to the use of square and curly brackets, and otherwise by community convention. -These conventions are not always universally followed, so the Clojure indent -script offers a few configurable options, listed below. +These conventions are not universally followed, so the Clojure indent script +offers a few configurable options, listed below. If the current vim does not include searchpairpos(), the indent script falls back to normal 'lisp' indenting, and the following options are ignored. @@ -786,8 +786,10 @@ For example, with N = 1, this will give: (Notice the extra indentation between the PHP container markers and the code) ------------- -To indent PHP tags as the surrounding code: > - :let g:PHP_outdentphpescape = 0 + *PHP_outdentphpescape* +To indent PHP escape tags as the surrounding non-PHP code (only affects the +PHP escape tags): > +:let g:PHP_outdentphpescape = 0 ------------- *PHP_removeCRwhenUnix* diff --git a/en/intro.txt b/en/intro.txt index 72e9b9bff..a03079c79 100644 --- a/en/intro.txt +++ b/en/intro.txt @@ -1,4 +1,4 @@ -*intro.txt* For Vim version 7.4. Last change: 2013 Jun 17 +*intro.txt* For Vim version 7.4. Last change: 2014 May 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -136,9 +136,10 @@ http://www.vim.org/maillist.php Bug reports: *bugs* *bug-reports* *bugreport.vim* Send bug reports to: Vim Developers <vim_dev@vim.org> -This is a maillist, many people will see the message. If you don't want that, -e.g. because it is a security issue, send it to <bugs@vim.org>, this only goes -to the Vim maintainer (that's Bram). +This is a maillist, you need to become a member first and many people will see +the message. If you don't want that, e.g. because it is a security issue, +send it to <bugs@vim.org>, this only goes to the Vim maintainer (that's Bram). + Please be brief; all the time that is spent on answering mail is subtracted from the time that is spent on improving Vim! Always give a reproducible example and try to find out which settings or other things influence the diff --git a/en/motion.txt b/en/motion.txt index e7ea18d49..eaa2d8df3 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.4. Last change: 2013 Mar 07 +*motion.txt* For Vim version 7.4. Last change: 2014 Feb 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1085,7 +1085,8 @@ only once. When the |:keepjumps| command modifier is used, jumps are not stored in the jumplist. Jumps are also not stored in other cases, e.g., in a |:global| -command. You can explicitly add a jump by setting the ' mark. +command. You can explicitly add a jump by setting the ' mark with "m'". Note +that calling setpos() does not do this. After the CTRL-O command that got you into line 1154 you could give another jump command (e.g., "G"). The jump list would then become: diff --git a/en/undo.txt b/en/undo.txt index 414a63b5e..46469b353 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 7.4. Last change: 2013 Sep 08 +*undo.txt* For Vim version 7.4. Last change: 2014 May 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -97,9 +97,9 @@ change but joins in with the previous change use this command: or redo. {not in Vi} -This is most useful when you need to prompt the user halfway a change. For -example in a function that calls |getchar()|. Do make sure that there was a -related change before this that you must join with. +This is most useful when you need to prompt the user halfway through a change. +For example in a function that calls |getchar()|. Do make sure that there was +a related change before this that you must join with. This doesn't work by itself, because the next key press will start a new change again. But you can do something like this: > From 51d99cb606b747c16a8c61a5df0b73d22511d24c Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 2 Aug 2014 13:51:38 +0900 Subject: [PATCH 578/783] Improve translation --- doc/eval.jax | 10 +++++----- doc/fold.jax | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 570947a3c..cc7411f02 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6,8 +6,8 @@ Vimスクリプト *expression* *expr* *E15* *eval* -Vimスクリプトの利用についてはユーザーマニュアルの41章|usr_41.txt|でも解説されて -いる。 +Vimスクリプトの利用についてはユーザーマニュアルの41章|usr_41.txt|でも解説され +ている。 注意:Vimスクリプトはコンパイル時に無効化できる。もしそうなっているとこのドキュ メントに書かれている事は有効ではない。|+eval|と|no-eval-feature|を参照。 @@ -4751,9 +4751,9 @@ screenattr(row, col) *screenattr()* screenchar(row, col) *screenchar()* スクリーン上の位置 [row, col] の文字を数値で返す。これは全ての スクリーン位置、ステータスライン、ウィンドウセパレータ、コマン - ドラインで機能する。左上の位置は1行、1列目である。文字は合成文 - 字を除く。2バイトのエンコーディングでは最初のバイトだけである - かもしれない。 + ドラインで機能する。左上の位置は行番号が1、列番号が1である。文 + 字は合成文字を除く。2バイトのエンコーディングでは最初のバイト + だけであるかもしれない。 この関数は主にテスト用に使われる。 row か col が範囲外である場合は -1 を返す。 diff --git a/doc/fold.jax b/doc/fold.jax index d30e9f006..7565b5172 100644 --- a/doc/fold.jax +++ b/doc/fold.jax @@ -275,7 +275,7 @@ zd カーソルの位置にある折畳を1つ削除する。カーソルが折 は1レベル分が削除される。ビジュアルモードでは選択された範囲の 全ての折畳(partially)の1レベル分が削除される。 注意: これは期待したよりも余計に折畳を削除し易く、また手動折畳 - に対してアンドゥもできないので注意が必要。 + に対してはアンドゥもできないので注意が必要。 'foldmethod' が "manual" か "marker" の時だけ動作する。 |fold-delete-marker|も参照。 From 8272fbca3715b99699c183981dcc961572fb03f5 Mon Sep 17 00:00:00 2001 From: thinca <thinca@gmail.com> Date: Sun, 3 Aug 2014 10:58:03 +0900 Subject: [PATCH 579/783] Fix unnecessary translation --- doc/cmdline.jax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/cmdline.jax b/doc/cmdline.jax index a3eb6668f..58e3211cd 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -774,10 +774,10 @@ Note: これらは文字通りに打ち込まれる、これらは特別なキ や Syntax、SpellFileMissing 用)。 <sfile> コマンド ":source" の実行時、取り込まれたファイルのファイル 名に置き換えられる。 *E498* - 関数の実行時、"関数 {関数名}" に置き換えられる。関数呼び出 - しのネスト (入れ子状態) はこのように表される: - "関数 {関数名1}..{関数名2}"。 Note: 関数内で <sfile> が使わ - れている場合、ファイル名修飾子は無効になることに注意。 + 関数の実行時、"function {関数名}" に置き換えられる。関数呼 + び出しのネスト (入れ子状態) はこのように表される: + "function {関数名1}..{関数名2}"。 Note: 関数内で <sfile> が + 使われている場合、ファイル名修飾子は無効になることに注意。 <slnum> コマンド ":source" の実行時、行番号に置き換えられる。 *E842* 関数の中では、関数の先頭からの相対的な行番号になる。 From 7f7b5d18cbba06554c02e5485851cf9a6efd4b65 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 4 Aug 2014 22:06:43 +0900 Subject: [PATCH 580/783] =?UTF-8?q?Translate=20consistently=20=E3=83=A6?= =?UTF-8?q?=E3=83=BC=E3=82=B6=20->=20=E3=83=A6=E3=83=BC=E3=82=B6=E3=83=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/options.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/options.jax b/doc/options.jax index 5ded891ee..d7b3e9bdd 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -3626,7 +3626,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {GTK+ 2 GUIでは利用できない} このオプションには2種類 (またはそれ以上) のフォントを指定する。値が空 のときは無視される。 1種類目は普通の英語に使われるもので、2種類目はユー - ザの使う特別な言語用である。 |xfontset| を参照。 + ザーの使う特別な言語用である。 |xfontset| を参照。 このオプションを設定すると、全てのフォント名はフォントセット名として扱 われるようになる。またコマンド |:highlight| の引数 "font" に使われるも のも同様である。 From 544483fcf9bd8942d506e0c017ed363d18443a14 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 9 Aug 2014 23:37:26 +0900 Subject: [PATCH 581/783] Fix tag --- doc/eval.jax | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index cc7411f02..343c96801 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -3884,8 +3884,7 @@ line({expr}) 結果は数値で、{expr}で与えられた位置のファイル されている時にのみ有効である: > :au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif - *line2byte()* -line2byte({lnum}) +line2byte({lnum}) *line2byte()* バッファの先頭から、{lnum}行目までのバイト数を返す。これには現 在のバッファのオプション 'fileformat' に従った、end-of-line(行 終端)文字も含まれている。最初の行においては1が返る。バイト数は From 0e905d977c96c000261421b15cf90a4cf5b1da1c Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 9 Aug 2014 23:56:31 +0900 Subject: [PATCH 582/783] Add missing ">" --- doc/eval.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index 343c96801..450c256af 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -7655,7 +7655,7 @@ finally節におけるエラーにより、割り込みが正しく動作しな :function nofunc と > :delfunction nofunc -は両方とも次のエラーメッセージを表示する。 +は両方とも次のエラーメッセージを表示する。 > E128: Function name must start with a capital: nofunc これはtry条件節の中では例外に変換される。それぞれ > Vim(function):E128: Function name must start with a capital: nofunc From 8c8f33c9b045e2c32d08cbba5fa5d79de2341bc3 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 10 Aug 2014 19:53:58 +0900 Subject: [PATCH 583/783] update to 7.4 snapshot --- doc/autocmd.jax | 12 ++++++++---- doc/change.jax | 27 ++++++++++++++++++--------- doc/diff.jax | 18 +++++++++++------- doc/digraph.jax | 11 +++++++++-- doc/editing.jax | 21 ++++++++++++++------- doc/os_vms.jax | 19 ++++++++++++++++++- doc/pattern.jax | 17 +++++++++++------ doc/quickfix.jax | 24 +++++++++++++++--------- doc/starting.jax | 20 ++++++++++++-------- doc/various.jax | 16 +++++++++++++++- doc/visual.jax | 7 +++++-- en/autocmd.txt | 14 +++++++++++--- en/change.txt | 20 +++++++++++++++----- en/diff.txt | 18 +++++++++++------- en/digraph.txt | 11 +++++++++-- en/editing.txt | 22 ++++++++++++++-------- en/os_vms.txt | 18 +++++++++++++++++- en/pattern.txt | 19 +++++++++++++------ en/quickfix.txt | 27 +++++++++++++++++---------- en/starting.txt | 13 +++++++++---- en/various.txt | 15 ++++++++++++++- en/visual.txt | 8 ++++++-- 22 files changed, 272 insertions(+), 105 deletions(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index 94879d4c7..f76e751a2 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim バージョン 7.4. Last change: 2013 Aug 04 +*autocmd.txt* For Vim バージョン 7.4. Last change: 2014 May 02 VIMリファレンスマニュアル by Bram Moolenaar @@ -493,6 +493,10 @@ CmdwinLeave Command-lineウィンドウから出る前。イベント 定される。 |cmdwin-char| *ColorScheme* ColorScheme カラースキームを読み込んだ後。 |:colorscheme| + パターンはカラースキーム名にマッチする。 + <afile> はこのオプションを設定したファイルの名 + 前になる。<amatch> はカラースキーム名になる。 + *CompleteDone* CompleteDone 挿入モード補完が完了したとき。補完が実行されて も中止されても発行される。 |ins-completion| @@ -569,8 +573,8 @@ FileChangedRO 読み込み専用ファイルに最初の変更を加える前 *FileChangedShell* FileChangedShell ファイルのタイムスタンプが、ファイルの編集が始 まってから変更されたことを発見したとき。 - ファイルの属性が変更されたときにも使われる。 - |timestamp| + ファイルの属性やファイルサイズが変更されたとき + にも使われる。|timestamp| 大抵はシェルコマンドの実行後に発生する。またコ マンド |:checktime| の実行後や、Vimが入力フォー カスを一度失い、再び得たときにも発生する。 @@ -949,7 +953,7 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに *file-pattern* パターンの解釈方法は、ファイル名の解釈方法と大体同じである。 - * はあらゆる文字の列にマッチ + * はあらゆる文字の列にマッチ。注意: パス区切り文字も含まれる。 ? はあらゆる1文字にマッチ \? は '?' にマッチ . は '.' にマッチ diff --git a/doc/change.jax b/doc/change.jax index ef3b78989..b98347098 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -1,4 +1,4 @@ -*change.txt* For Vim バージョン 7.4. Last change: 2013 Mar 19 +*change.txt* For Vim バージョン 7.4. Last change: 2014 Jun 26 VIMリファレンスマニュアル by Bram Moolenaar @@ -146,6 +146,9 @@ gJ [count] 行を連結する (最低は 2 行)。空白の挿入や削除を 'formatoptions' のフラグ 'M' と 'B' は、マルチバイト文字の前後に空白を挿入する ときの動作を変更する |fo-table|。 +'[ マークは連結前の最初の行の末尾に設定される。'] マークは連結後の行の末尾に設 +定される。 + ============================================================================== 2. 削除と挿入 *delete-insert* *replacing* @@ -458,9 +461,9 @@ Note: 'nrformats' が "octal" を含んでいるとき、0で始まる10進数 'shiftround' がオンのとき、インデントは 'shiftwidth' の倍数に丸められる。 -'shiftwidth' がオンのとき、あるいは 'cindent' がオンで 'cinkeys' が '#' を含む -とき、右方向へのシフトは '#' で始まる行に適用されない (これらの行は、行の最初 -に位置すべきCプリプロセッサ指令であると考えられる)。 +'shiftwidth' がオンのとき、あるいは 'cindent' がオンで 'cinkeys' が値 0 の '#' +を含むとき、右方向へのシフトは '#' で始まる行に適用されない (これらの行は、行 +の最初に位置すべきCプリプロセッサ指令であると考えられる)。 'expandtab' がオフ (既定値) のとき、Vimはインデントにできる限り多くの <Tab> を 使う。">><<" によって、空白のみで構成されたインデントを、<Tab> (と必要ならばい @@ -1038,6 +1041,10 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ えば、コピーしたいテキストをヤンクして、選択したテキストを "0p で置き換える。 これを好きなだけ繰り返す。このとき、無名レジスタはプットするたびに変わる。 +矩形ビジュアルモードで一行のみをヤンクしたとき、それをビジュアル選択した範囲に +貼り付けると、選択範囲にその一行が貼り付けされる (つまり貼り付けた行のブロック +によって矩形選択範囲が置換される)。 + *blockwise-register* 矩形ビジュアルモードで、レジスタにテキストを蓄えるコマンドを使うと、テキストの ブロックはカーソルの前 ("P" のとき) または後 ("p" のとき) から、現在行と引き続 @@ -1094,9 +1101,10 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト は、以下の移動コマンドと削除コマンドを組み合わせたときである。|%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{|, |}|。このときは必ずレジスタ "1 が使われる (これ はVi互換の動作である)。削除や変更したテキストが1行以下だったときは、レジスタ -"- も使われる。削除や変更が行われるたびに、レジスタ 1 の内容はレジスタ 2 に、 -レジスタ 2 の内容はレジスタ 3 に、という風にずれていく。レジスタ 9 の内容は失 -われる。 +"- も使われる。 Note: これらの文字はマップ可能である。例: |%| は matchit プラ +グインによってマップされている。 +削除や変更が行われるたびに、レジスタ 1 の内容はレジスタ 2 に、レジスタ 2 の内 +容はレジスタ 3 に、という風にずれていく。レジスタ 9 の内容は失われる。 {Vi では番号付きレジスタの内容はファイルを変更する際に失われる。レジスタ 0 は ない} @@ -1644,8 +1652,9 @@ Vimはソート関数とソートコマンドを備えている。ソート関 Note: `:global` といっしょに `:sort` を使ってもマッチする行をソートすることに はならない。これはまったく無意味である。 -ソートの詳細は使っているライブラリ関数による。ソートが「安定」であるとか現在の -ロケールに従うという保証はない。それを調べるには実行してみるしかない。 +ソートの詳細は使っているライブラリ関数による。ソートが現在のロケールに従うとい +う保証はない。それを調べるには実行してみるしかない。ソートは「安定」ソートであ +る。 ソートは中断することができる。しかし中断するのが遅いと行が重複してしまうかもし れない。これも使っているシステムのライブラリ関数による。 diff --git a/doc/diff.jax b/doc/diff.jax index 6bbe296d1..f46138b6a 100644 --- a/doc/diff.jax +++ b/doc/diff.jax @@ -1,4 +1,4 @@ -*diff.txt* For Vim バージョン 7.4. Last change: 2012 Sep 05 +*diff.txt* For Vim バージョン 7.4. Last change: 2014 May 20 VIMリファレンスマニュアル by Bram Moolenaar @@ -122,14 +122,18 @@ Vimが各ファイルについてウィンドウを開く時に起こること また同じファイルへ戻って再び差分モードを継続することができる。 *:diffo* *:diffoff* -:diffo[ff] カレントウィンドウの差分モードを終了する。 +:diffo[ff] カレントウィンドウの差分モードを終了する。'diff' が設定されて + いてもいなくても、関連オプションはリセットされる。 :diffo[ff]! カレントウィンドウとカレントタブページのすべてのウィンドウの差 - 分モードを終了する。 - -コマンド ":diffoff" は関連するオプションをデフォルト値に戻す。 -これは差分モードが開始する前の値とは異なるかもしれない。その古い値は記憶され -ていない。 + 分モードを終了する。'diff' が設定されているウィンドウのみ、関 + 連オプションがリセットされる。カレントウィンドウの 'diff' オプ + ションが設定されていない場合は、そのウィンドウの関連オプション + は変更されない。 + +コマンド ":diffoff" は関連するオプションを差分モード実行前の設定値に戻す。それ +は |:diffsplit|、|:diffpatch|、 |:diffthis| を実行したときの設定値、または Vim +を差分モードで起動したときの設定値である。それ以外の場合はデフォルト値に戻す: 'diff' off 'scrollbind' off diff --git a/doc/digraph.jax b/doc/digraph.jax index 57b96492a..cc21bc253 100644 --- a/doc/digraph.jax +++ b/doc/digraph.jax @@ -1,4 +1,4 @@ -*digraph.txt* For Vim バージョン 7.4. Last change: 2011 Jan 15 +*digraph.txt* For Vim バージョン 7.4. Last change: 2014 Jun 19 VIMリファレンスマニュアル by Bram Moolenaar @@ -144,7 +144,7 @@ Vimには標準のダイグラフキャラクタがある。それらを見る Two 2 Hook Nine 9 Horn - Equals = Cyrillic + Equals = Cyrillic (= used as second char) Asterisk * Greek Percent sign % Greek/Cyrillic special Plus + smalls: Arabic, capitals: Hebrew @@ -166,6 +166,11 @@ Vimには標準のダイグラフキャラクタがある。それらを見る (iso-8859-15) ではダイグラフ =e がユーロ記号になっている。どちらでもその文字 は 164, 0xa4 である。zsh との互換性のために、Eu でもユーロ記号になる。 +ルーブル + +ルーブル記号は 2014 年に 0x20bd として追加された。Vim はダイグラフ =R と =P と +してそれをサポートしている。Note: R= と P= は別の文字である。 + *digraph-table* char digraph hex dec official name ~ ^@ NU 0x00 0 NULL (NUL) @@ -963,6 +968,8 @@ char digraph hex dec official name ~ ₧ Pt 20A7 8359 PESETA SIGN ₩ W= 20A9 8361 WON SIGN € Eu 20AC 8364 EURO SIGN +₽ =R 20BD 8381 ROUBLE SIGN +₽ =P 20BD 8381 ROUBLE SIGN ℃ oC 2103 8451 DEGREE CELSIUS ℅ co 2105 8453 CARE OF ℉ oF 2109 8457 DEGREE FAHRENHEIT diff --git a/doc/editing.jax b/doc/editing.jax index 1df0bec87..b04bac439 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -1,4 +1,4 @@ -*editing.txt* For Vim バージョン 7.4. Last change: 2013 Aug 03 +*editing.txt* For Vim バージョン 7.4. Last change: 2014 Jul 19 VIMリファレンスマニュアル by Bram Moolenaar @@ -1349,6 +1349,12 @@ Vimはファイルを暗号化して保存し、再び読み取ることがで {Vimが |+cryptv| 機能付きでコンパイルされたときのみ有効} *E833* スワップファイルやアンドゥファイル内のテキストも暗号化される。 *E843* +しかしながら、これはブロック単位で実行されるので、より少ない時間でパスワードが +クラックされる可能性がある。スワップファイルを無効化することもできるが、クラッ +シュ時には作業内容が失われることになる。アンドゥファイルは無効化してもそれほど +の不利益はない。 > + :set noundofile + :noswapfile edit secrets Note: メモリ内のテキストは暗号化されない。ユーザーがテキストを編集している間、 システム管理者はそれを見ることができる。":!filter" や ":w !command" によって @@ -1452,14 +1458,15 @@ Note: ============================================================================== 10. タイムスタンプ *timestamp* *timestamps* -Vimは編集を始めたときのファイルの修正タイムスタンプを覚えている。これは同じ -ファイルの別のバージョンを (知らずに) 作ってしまうのを防ぐためである。 +Vimは編集を始めたときのファイルの修正タイムスタンプとモードとサイズを覚えてい +る。これは同じファイルの別のバージョンを (知らずに) 作ってしまうのを防ぐためで +ある。 シェルコマンド (|:!cmd| |suspend| |:read!| |K|) の実行後、ウィンドウ内の全ての -バッファでタイムスタンプが比較される。Vimは変更を受けたファイルに関して、イベ -ント |FileChangedShell| に関連付けられた任意の自動コマンドを実行するか、警告を -表示する。GUIを使っているときは、それらはVimに入力フォーカスが戻ってきたときに -行われる。 +バッファでタイムスタンプとファイルモードとファイルサイズが比較される。Vimは変 +更を受けたファイルに関して、イベント |FileChangedShell| に関連付けられた任意の +自動コマンドを実行するか、警告を表示する。GUIを使っているときは、それらはVimに +入力フォーカスが戻ってきたときに行われる。 *E321* *E462* ファイルがVimの外部で変更を受けたときに自動的に読み直して欲しいなら、オプショ diff --git a/doc/os_vms.jax b/doc/os_vms.jax index 43024a413..ff3b4ee04 100644 --- a/doc/os_vms.jax +++ b/doc/os_vms.jax @@ -1,4 +1,4 @@ -*os_vms.txt* For Vim バージョン 7.4. Last change: 2013 Aug 22 +*os_vms.txt* For Vim バージョン 7.4. Last change: 2014 Feb 24 VIMリファレンスマニュアル @@ -763,6 +763,23 @@ GNU_TOOLS.ZIP の [GNU]gnu_tools.com スクリプトである。 9. VMS関連の変更点 *vms-changes* +Version 7.4 +- Undo: VMS はファイル名に複数のドットを使えないので "dir/name" -> "dir/_un_name" とする + 先頭に _un_ を追加して拡張子を維持する +- スワップファイル名のワイルドカードの扱いを修正 +- iconv を正しく扱う +- vax で最適化しない - そうしないと crypto ファイルのコンパイルでハングする +- fileio.c のコメント修正 +- RealWaitForChar の修正 +- 7.4-119 以降で別の関数 lib$cvtf_to_internal_time を使う。Alpha と VAX は + G_FLOAT を持っているが IA64 は IEEE 浮動小数点数を使うので Vim がクラッシュ + するため +- 複数ファイル名によるクラッシュを防ぐ +- [TESTDIR]make_vms.mms 出力ファイルを見るように変更 +- テスト改善。既知の問題の更新 +- マイナーなコンパイラ警告の修正 +- CTAGS 5.8 +regex 取り込み + バージョン 7.3 - CTAGS 5.8 の取り込み - VMS コンパイル警告の修正 - VAX の浮動小数点数オーバーフローの警告を直した diff --git a/doc/pattern.jax b/doc/pattern.jax index 823ce3195..854b84b5a 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -1,4 +1,4 @@ -*pattern.txt* For Vim バージョン 7.4. Last change: 2014 Feb 08 +*pattern.txt* For Vim バージョン 7.4. Last change: 2014 May 28 VIMリファレンスマニュアル by Bram Moolenaar @@ -543,6 +543,7 @@ after: \v \m \M \V マッチするもの ~ |/\%o| \%o \%o 8進数指定の特定の文字 (例 \%o040) |/\%u| \%u \%u 特定のマルチバイト文字 (例 \%u20ac) |/\%U| \%U \%U 特定の広範囲のマルチバイト文字 (例 \%U12345678) +|/\%C| \%C \%C すべての合成文字 例 マッチするもの ~ \<\I\i* or @@ -1194,11 +1195,15 @@ Note: 'ignorecase'、"\c"、"\C" は、文字クラスには作用しません 8. 合成文字 *patterns-composing* */\Z* -パターンに "\Z" が含まれている場合、合成文字は無視されます。そのため、どの合成 -文字が、いくつ結合されていても、基底文字とマッチするだけでマッチします。 -'encoding' が "utf-8" の場合だけ使用します。 -例外: パターンが一つか複数の合成文字で開始している場合は、それらはマッチしま -す。 +パターンに "\Z" が含まれている場合、すべての合成文字は無視されます。そのため、 +どの合成文字が、いくつ結合されていても、基底文字とマッチするだけでマッチしま +す。'encoding' が "utf-8" の場合だけ使用します。例外: パターンが一つか複数の合 +成文字で開始している場合は、それらはマッチします。 + */\%C* +すべての合成文字をスキップするには "\%C" を使います。例えば、パターン "a" は +"càt" (a に 0x0300 が合成されている) にはマッチしませんが、"a\%C" にはマッチし +ます。Note: これは "cát" (á は 0xe1 という文字で、合成文字を持っていない) に +はマッチしません。"cat" (a のみ) にはマッチします。 合成文字と合成されないアイテムの直後に合成文字がある場合、その合成文字を含んで いるすべての文字がマッチします。 diff --git a/doc/quickfix.jax b/doc/quickfix.jax index de780bb0e..993fe0e46 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim バージョン 7.4. Last change: 2013 Mar 07 +*quickfix.txt* For Vim バージョン 7.4. Last change: 2014 Mar 27 VIMリファレンスマニュアル by Bram Moolenaar @@ -288,16 +288,20 @@ Vimが|+autocmd|機能つきでビルドされている場合、QuickFixコマ *:cope* *:copen* *w:quickfix_title* :cope[n] [height] 現在のエラーリストを表示するウィンドウを開く。 [height]が与えられたとき、(余地があれば) ウィンドウの - 高さがその値になる。与えられなければウィンドウの高さは - 10行になる。 + 高さがその値になる。 [height] を省略したときはウィンド + ウの高さは 10 行になる。 + + すでにQuickFixウィンドウがある場合はそれがカレントウィ + ンドウになる。2 個目のQuickFixウィンドウを開くことは出 + 来ない。 [height] が指定されたとき、既存のウィンドウは + その高さにリサイズされる。 + ウィンドウは 'buftype' の値が "quickfix" である特別な バッファを含んでいる。これを変更してはならない。 - すでにQuickFixウィンドウがある場合はそれがカレントウィ - ンドウになる。2個目のQuickFixウィンドウを開くことは出 - 来ない。ウィンドウの w:quickfix_title 変数を設定するこ - とで、エラーリストを生成したコマンドを表示するようなこ - とができる。変数の値は 'statusline' が適切に調整されて - いればステータスラインに表示される。 + ウィンドウは w:quickfix_title 変数を持っている。この変 + 数はクイックフィックスリストを生成したコマンドを示して + いる。変数の値は 'statusline' が適切に調整されていれば + ステータスラインに表示される。 *:lop* *:lopen* :lop[en] [height] カレントウィンドウのロケーションリストを表示するウィン @@ -864,6 +868,8 @@ teTeX (Artem Chuprinaによってチェックされた) の両方で使えるよ 'errorformat' 中の特別な文字はコンマとバックスラッシュである。それがどう扱われ るかは|efm-entries|を参照。"%%" はリテラル "%" にマッチする。よってこれはバッ クスラッシュでエスケープしない。 +`:make`と `:grep` の出力のすべての NUL 文字は SOH (0x01) に置換されるので注 +意。 Note: デフォルトでは大文字と小文字の違いは無視される。もし大文字・小文字の区別 をしたいなら "\C" をパターンに付け加える|/\C|。 diff --git a/doc/starting.jax b/doc/starting.jax index 2f311d0de..c1daf6fea 100644 --- a/doc/starting.jax +++ b/doc/starting.jax @@ -1,4 +1,4 @@ -*starting.txt* For Vim バージョン 7.4. Last change: 2013 May 29 +*starting.txt* For Vim バージョン 7.4. Last change: 2014 Jul 09 VIMリファレンスマニュアル by Bram Moolenaar @@ -161,7 +161,9 @@ VMSでは全てのオプション引数は小文字であるとみなされる *-+/* +/{pat} 最初に編集されるファイルの、"pat" を含む最初の行にカーソルを置 いて起動する(指定可能な検索パターンについては|pattern|を参 - 照)。 + 照)。検索はカーソル位置から開始される。カーソルの位置は最初の + 行か、もしくは |viminfo| から復元された最後に使われた位置の場 + 合もある。必ず最初の行から検索したい場合は "+1 +/pat" を使う。 +{command} *-+c* *-c* -c {command} 最初のファイルが読み込まれた後(加えてそのファイルに適用される @@ -1248,13 +1250,15 @@ Note: .vimrcファイルを作成するときにはオプション 'compatible' :mkvie[w][!] [file] 現在のウィンドウの状態を復元するためのVimスクリプトを 作成する。 [!]を付けたときはファイルを上書保存する。 - [file]を省略したり、1から9の数字を指定したときは、 - 'viewdir' に指定したディレクトリに適切な名前で保存され - る。'viewdir' に指定したディレクトリがないときには、そ - のディレクトリも作成される。 + [file] を省略したり、1から9の数字を指定したときは、 + 'viewdir' に指定されたディレクトリに適切な名前で保存さ + れる。'viewdir' の最後に指定されたパスが存在しないとき + にはそのディレクトリも作成される。例えば、'viewdir' が + "$VIM/vimfiles/view" なら "$VIM/vimfiles" の中に + "view" が作成される。 [file]を省略、もしくは数字を指定した場合は、常に上書き - 保存される。そして、ビューを復元するときには - |:loadview|を使用する。 + 保存される。ビューを復元するときには |:loadview| を使 + 用する。 [file]にファイル名を指定すると、編集を再開するためのコ マンドがそのファイルに保存される(この場合は 'viewdir' は使われない)。 diff --git a/doc/various.jax b/doc/various.jax index 128b7145a..e25c45b4f 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -1,4 +1,4 @@ -*various.txt* For Vim バージョン 7.4. Last change: 2013 May 18 +*various.txt* For Vim バージョン 7.4. Last change: 2014 May 22 VIM リファレンスマニュアル by Bram Moolenaar @@ -245,6 +245,18 @@ g8 カーソル位置の文字のバイト列を 16 進数で表示します {cmd} の中の '|' はシェルに渡されます。'|' を使って Vim コマンドを続けて書くことはできません。(|:bar|参 照)。 + + {cmd} が "%" を含んでいたらそれは現在のファイル名に展 + 開されます。特殊文字はエスケープされないので、特殊文字 + の特殊な意味を打ち消すにはクォートを使います: > + :!ls "%" +< ファイル名が "$" を含んでいるならシングルクォートを使 + うといいでしょう (ただしシングルクォートは問題がある場 + 合もある): > + :!ls '%' +< 次の例は常に機能します。ただし長い: > + :exe "!ls " . shellescape(expand("%")) +< {cmd} の終わりを示す改行文字 (newline) 以降の文字は、 次の ":" コマンドとして解釈されます。改行文字の前に バックスラッシュがある場合は、バックスラッシュは削除さ @@ -326,6 +338,7 @@ N *+dialog_con* |:confirm| のコンソールダイアログをサポート N *+dialog_con_gui* |:confirm| GUIとコンソールダイアログをサポート N *+diff* |vimdiff|と'diff' N *+digraphs* |digraphs| +m *+directx* Win32 GUI のみ: DirectX と |'renderoptions'| *+dnd* "~レジスタ |quote_~|を使ったDnDのサポート B *+emacs_tags* |emacs-tags| ファイル N *+eval* 式評価 {訳注: Vimスクリプト} |eval.txt| @@ -368,6 +381,7 @@ N *+mouse* マウス操作 |mouse-using| N *+mouseshape* |'mouseshape'| B *+mouse_dec* Unix のみ: Dec端末マウス操作 |dec-mouse| N *+mouse_gpm* Unix のみ: Linuxコンソールマウス操作 |gpm-mouse| +N *+mouse_jsbterm* JSB マウスサポート |jsbterm-mouse| B *+mouse_netterm* Unix のみ: nettermマウス操作 |netterm-mouse| N *+mouse_pterm* QNX のみ: ptermマウス操作 |qnx-terminal| N *+mouse_sysmouse* Unix のみ: *BSD コンソールマウス操作 |sysmouse| diff --git a/doc/visual.jax b/doc/visual.jax index 1ffd403f6..e97b93ee0 100644 --- a/doc/visual.jax +++ b/doc/visual.jax @@ -1,4 +1,4 @@ -*visual.txt* For Vim バージョン 7.4. Last change: 2012 Aug 15 +*visual.txt* For Vim バージョン 7.4. Last change: 2014 Mar 23 VIMリファレンスマニュアル by Bram Moolenaar @@ -72,7 +72,10 @@ CTRL-V(矩形ビジュアルモード)は開始位置からカーソルの位置 *V* *linewise-visual* [count]V 行単位のビジュアルモードを開始する。 - [count] を指定すると、その行数分を選択する。 + [count] を指定すると、最後のビジュアル操作と同じモード + で同じ行数を選択する。ただし、現在の位置で選択を開始 + し、行数に [count] を掛ける。最後に実行したビジュアル + 操作がない場合は、[count] 行数が選択される。 *CTRL-V* *blockwise-visual* [count]CTRL-V 矩形ビジュアルモードを開始する。Note: Windowsでは diff --git a/en/autocmd.txt b/en/autocmd.txt index 8b7941dc6..2a8becebf 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.4. Last change: 2013 Aug 04 +*autocmd.txt* For Vim version 7.4. Last change: 2014 May 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -483,6 +483,12 @@ CmdwinLeave Before leaving the command-line window. |cmdwin-char| *ColorScheme* ColorScheme After loading a color scheme. |:colorscheme| + The pattern is matched against the + colorscheme name. <afile> can be used for the + name of the actual file where this option was + set, and <amatch> for the new colorscheme + name. + *CompleteDone* CompleteDone After Insert mode completion is done. Either @@ -563,7 +569,8 @@ FileChangedRO Before making the first change to a read-only FileChangedShell When Vim notices that the modification time of a file has changed since editing started. Also when the file attributes of the file - change. |timestamp| + change or when the size of the file changes. + |timestamp| Mostly triggered after executing a shell command, but also with a |:checktime| command or when Gvim regains input focus. @@ -958,7 +965,8 @@ the autocommand is executed. This is different from the command! *file-pattern* The pattern is interpreted like mostly used in file names: - * matches any sequence of characters + * matches any sequence of characters; Unusual: includes path + separators ? matches any single character \? matches a '?' . matches a '.' diff --git a/en/change.txt b/en/change.txt index 3fbeec228..de340ec8b 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.4. Last change: 2013 Mar 19 +*change.txt* For Vim version 7.4. Last change: 2014 Jun 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -156,6 +156,9 @@ only after a '.'). The 'B' and 'M' flags in 'formatoptions' change the behavior for inserting spaces before and after a multi-byte character |fo-table|. +The '[ mark is set at the end of the first line that was joined, '] at the end +of the resulting line. + ============================================================================== 2. Delete and insert *delete-insert* *replacing* @@ -475,8 +478,8 @@ If the 'shiftround' option is on, the indent is rounded to a multiple of 'shiftwidth'. If the 'smartindent' option is on, or 'cindent' is on and 'cinkeys' contains -'#', shift right does not affect lines starting with '#' (these are supposed -to be C preprocessor lines that must stay in column 1). +'#' with a zero value, shift right does not affect lines starting with '#' +(these are supposed to be C preprocessor lines that must stay in column 1). When the 'expandtab' option is off (this is the default) Vim uses <Tab>s as much as possible to make the indent. You can use ">><<" to replace an indent @@ -1069,6 +1072,11 @@ another register. E.g., yank the text to copy, Visually select the text to replace and use "0p . You can repeat this as many times as you like, the unnamed register will be changed each time. +When you use a blockwise Visual mode command and yank only a single line into +a register, a paste on a visual selected area will paste that single line on +each of the selected lines (thus replacing the blockwise selected region by a +block of the pasted line). + *blockwise-register* If you use a blockwise Visual mode command to get the text into the register, the block of text will be inserted before ("P") or after ("p") the cursor @@ -1126,6 +1134,8 @@ less than one line (the small delete register is used then). An exception is made for the delete operator with these movement commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|. Register "1 is always used then (this is Vi compatible). The "- register is used as well if the delete is within a line. +Note that these characters may be mapped. E.g. |%| is mapped by the matchit +plugin. With each successive deletion or change, Vim shifts the previous contents of register 1 into register 2, 2 into 3, and so forth, losing the previous contents of register 9. @@ -1707,8 +1717,8 @@ Note that using `:sort` with `:global` doesn't sort the matching lines, it's quite useless. The details about sorting depend on the library function used. There is no -guarantee that sorting is "stable" or obeys the current locale. You will have -to try it out. +guarantee that sorting obeys the current locale. You will have to try it out. +Vim does do a "stable" sort. The sorting can be interrupted, but if you interrupt it too late in the process you may end up with duplicated lines. This also depends on the system diff --git a/en/diff.txt b/en/diff.txt index 99d57ff77..0ee587834 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.4. Last change: 2012 Sep 05 +*diff.txt* For Vim version 7.4. Last change: 2014 May 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -123,14 +123,18 @@ Since the option values are remembered with the buffer, you can edit another file for a moment and come back to the same file and be in diff mode again. *:diffo* *:diffoff* -:diffo[ff] Switch off diff mode for the current window. +:diffo[ff] Switch off diff mode for the current window. Resets related + options also when 'diff' was not set. :diffo[ff]! Switch off diff mode for the current window and in all windows - in the current tab page where 'diff' is set. - -The ":diffoff" command resets the relevant options to their default value. -This may be different from what the values were before diff mode was started, -the old values are not remembered. + in the current tab page where 'diff' is set. Resetting + related options only happens in a window that has 'diff' set, + if the current window does not have 'diff' set then no options + in it are changed. + +The ":diffoff" command resets the relevant options to the values they had when +using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode. +Otherwise they are set to their default value: 'diff' off 'scrollbind' off diff --git a/en/digraph.txt b/en/digraph.txt index 6e85a1f2b..2be73da5b 100644 --- a/en/digraph.txt +++ b/en/digraph.txt @@ -1,4 +1,4 @@ -*digraph.txt* For Vim version 7.4. Last change: 2011 Jan 15 +*digraph.txt* For Vim version 7.4. Last change: 2014 Jun 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -147,7 +147,7 @@ a standard meaning: Two 2 Hook Nine 9 Horn - Equals = Cyrillic + Equals = Cyrillic (= used as second char) Asterisk * Greek Percent sign % Greek/Cyrillic special Plus + smalls: Arabic, capitals: Hebrew @@ -170,6 +170,11 @@ used for the currency sign, and latin9 (iso-8859-15), where the digraph =e is used for the euro sign, while both of them are the character 164, 0xa4. For compatibility with zsh Eu can also be used for the euro sign. +ROUBLE + +The rouble sign was added in 2014 as 0x20bd. Vim supports the digraphs =R and +=P for this. Note that R= and P= are other characters. + *digraph-table* char digraph hex dec official name ~ ^@ NU 0x00 0 NULL (NUL) @@ -966,6 +971,8 @@ char digraph hex dec official name ~ ₧ Pt 20A7 8359 PESETA SIGN ₩ W= 20A9 8361 WON SIGN € Eu 20AC 8364 EURO SIGN +₽ =R 20BD 8381 ROUBLE SIGN +₽ =P 20BD 8381 ROUBLE SIGN ℃ oC 2103 8451 DEGREE CELSIUS ℅ co 2105 8453 CARE OF ℉ oF 2109 8457 DEGREE FAHRENHEIT diff --git a/en/editing.txt b/en/editing.txt index 5e589462d..0b5f69a7b 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.4. Last change: 2013 Aug 03 +*editing.txt* For Vim version 7.4. Last change: 2014 Jul 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1362,6 +1362,11 @@ cannot be read without the right key. {only available when compiled with the |+cryptv| feature} *E833* The text in the swap file and the undo file is also encrypted. *E843* +However, this is done block-by-block and may reduce the time needed to crack a +password. You can disable the swap file, but then a crash will cause you to +lose your work. The undo file can be disabled without much disadvantage. > + :set noundofile + :noswapfile edit secrets Note: The text in memory is not encrypted. A system administrator may be able to see your text while you are editing it. When filtering text with @@ -1469,14 +1474,15 @@ Notes: ============================================================================== 10. Timestamps *timestamp* *timestamps* -Vim remembers the modification timestamp of a file when you begin editing it. -This is used to avoid that you have two different versions of the same file -(without you knowing this). +Vim remembers the modification timestamp, mode and size of a file when you +begin editing it. This is used to avoid that you have two different versions +of the same file (without you knowing this). -After a shell command is run (|:!cmd| |suspend| |:read!| |K|) timestamps are -compared for all buffers in a window. Vim will run any associated -|FileChangedShell| autocommands or display a warning for any files that have -changed. In the GUI this happens when Vim regains input focus. +After a shell command is run (|:!cmd| |suspend| |:read!| |K|) timestamps, +file modes and file sizes are compared for all buffers in a window. Vim will +run any associated |FileChangedShell| autocommands or display a warning for +any files that have changed. In the GUI this happens when Vim regains input +focus. *E321* *E462* If you want to automatically reload a file when it has been changed outside of diff --git a/en/os_vms.txt b/en/os_vms.txt index 7002e2882..03b11ba87 100644 --- a/en/os_vms.txt +++ b/en/os_vms.txt @@ -1,4 +1,4 @@ -*os_vms.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*os_vms.txt* For Vim version 7.4. Last change: 2014 Feb 24 VIM REFERENCE MANUAL @@ -764,6 +764,22 @@ GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/ 9. VMS related changes *vms-changes* +Version 7.4 +- Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name" + add _un_ at the beginning to keep the extension +- correct swap file name wildcard handling +- handle iconv usage correctly +- do not optimize on vax - otherwise it hangs compiling crypto files +- fileio.c fix the comment +- correct RealWaitForChar +- after 7.4-119 use different functions lib$cvtf_to_internal_time because Alpha and VAX have + G_FLOAT but IA64 uses IEEE float otherwise Vim crashes +- guard agains crashes that are caused by mixed filenames +- [TESTDIR]make_vms.mms changed to see the output files +- Improve tests, update known issues +- minor compiler warnings fixed +- CTAGS 5.8 +regex included + Version 7.3 - CTAGS 5.8 included - VMS compile warnings fixed - floating-point overflow warning corrected on VAX diff --git a/en/pattern.txt b/en/pattern.txt index 80688f918..207a43d87 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.4. Last change: 2014 Feb 08 +*pattern.txt* For Vim version 7.4. Last change: 2014 May 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -545,6 +545,7 @@ Character classes {not in Vi}: */character-classes* |/\%u| \%u \%u match specified multibyte character (eg \%u20ac) |/\%U| \%U \%U match specified large multibyte character (eg \%U12345678) +|/\%C| \%C \%C match any composing characters Example matches ~ \<\I\i* or @@ -1207,12 +1208,18 @@ will probably never match. 8. Composing characters *patterns-composing* */\Z* -When "\Z" appears anywhere in the pattern, composing characters are ignored. -Thus only the base characters need to match, the composing characters may be -different and the number of composing characters may differ. Only relevant -when 'encoding' is "utf-8". +When "\Z" appears anywhere in the pattern, all composing characters are +ignored. Thus only the base characters need to match, the composing +characters may be different and the number of composing characters may differ. +Only relevant when 'encoding' is "utf-8". Exception: If the pattern starts with one or more composing characters, these must match. + */\%C* +Use "\%C" to skip any composing characters. For example, the pattern "a" does +not match in "càt" (where the a has the composing character 0x0300), but +"a\%C" does. Note that this does not match "cát" (where the á is character +0xe1, it does not have a compositing character). It does match "cat" (where +the a is just an a). When a composing character appears at the start of the pattern of after an item that doesn't include the composing character, a match is found at any @@ -1325,7 +1332,7 @@ Finally, these constructs are unique to Perl: patterns defined by both |matchadd()| and |:match|. Highlighting matches using |:match| are limited to three - matches (aside from |:match|, |:2match| and |:3match|are + matches (aside from |:match|, |:2match| and |:3match| are available). |matchadd()| does not have this limitation and in addition makes it possible to prioritize matches. diff --git a/en/quickfix.txt b/en/quickfix.txt index 43eb7fb5d..22d99b908 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.4. Last change: 2013 Mar 07 +*quickfix.txt* For Vim version 7.4. Last change: 2014 Mar 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -304,18 +304,23 @@ use this code: > *:cope* *:copen* *w:quickfix_title* :cope[n] [height] Open a window to show the current list of errors. + When [height] is given, the window becomes that high - (if there is room). Otherwise the window is made ten - lines high. - The window will contain a special buffer, with - 'buftype' equal to "quickfix". Don't change this! + (if there is room). When [height] is omitted the + window is made ten lines high. + If there already is a quickfix window, it will be made the current window. It is not possible to open a - second quickfix window. The window will have the - w:quickfix_title variable set which will indicate the - command that produced the quickfix list. This can be - used to compose a custom status line if the value of - 'statusline' is adjusted properly. + second quickfix window. If [height] is given the + existing window will be resized to it. + + The window will contain a special buffer, with + 'buftype' equal to "quickfix". Don't change this! + The window will have the w:quickfix_title variable set + which will indicate the command that produced the + quickfix list. This can be used to compose a custom + status line if the value of 'statusline' is adjusted + properly. *:lop* *:lopen* :lop[en] [height] Open a window to show the location list for the @@ -899,6 +904,8 @@ invalid. Special characters in 'errorformat' are comma and backslash. See |efm-entries| for how to deal with them. Note that a literal "%" is matched by "%%", thus it is not escaped with a backslash. +Keep in mind that in the `:make` and `:grep` output all NUL characters are +replaced with SOH (0x01). Note: By default the difference between upper and lowercase is ignored. If you want to match case, add "\C" to the pattern |/\C|. diff --git a/en/starting.txt b/en/starting.txt index 54525ac5d..773a3b912 100644 --- a/en/starting.txt +++ b/en/starting.txt @@ -1,4 +1,4 @@ -*starting.txt* For Vim version 7.4. Last change: 2013 May 29 +*starting.txt* For Vim version 7.4. Last change: 2014 Jul 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -167,7 +167,10 @@ a slash. Thus "-R" means recovery and "-/R" readonly. *-+/* +/{pat} The cursor will be positioned on the first line containing "pat" in the first file being edited (see |pattern| for the - available search patterns). + available search patterns). The search starts at the cursor + position, which can be the first line or the cursor position + last used from |viminfo|. To force a search from the first + line use "+1 +/pat". +{command} *-+c* *-c* -c {command} {command} will be executed after the first file has been @@ -1276,8 +1279,10 @@ triggered. When [!] is included an existing file is overwritten. When [file] is omitted or is a number from 1 to 9, a name is generated and 'viewdir' prepended. When the - last directory name in 'viewdir' does not exist, this - directory is created. + last path part of 'viewdir' does not exist, this + directory is created. E.g., when 'viewdir' is + "$VIM/vimfiles/view" then "view" is created in + "$VIM/vimfiles". An existing file is always overwritten then. Use |:loadview| to load this view again. When [file] is the name of a file ('viewdir' is not diff --git a/en/various.txt b/en/various.txt index 56c387b34..a03a0bd94 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.4. Last change: 2013 May 18 +*various.txt* For Vim version 7.4. Last change: 2014 May 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -243,6 +243,17 @@ g8 Print the hex values of the bytes used in the A '|' in {cmd} is passed to the shell, you cannot use it to append a Vim command. See |:bar|. + + If {cmd} contains "%" it is expanded to the current + file name. Special characters are not escaped, use + quotes to avoid their special meaning: > + :!ls "%" +< If the file name contains a "$" single quotes might + work better (but a single quote causes trouble): > + :!ls '%' +< This should always work, but it's more typing: > + :exe "!ls " . shellescape(expand("%")) +< A newline character ends {cmd}, what follows is interpreted as a following ":" command. However, if there is a backslash before the newline it is removed @@ -326,6 +337,7 @@ N *+dialog_con* Support for |:confirm| with console dialog. N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. N *+diff* |vimdiff| and 'diff' N *+digraphs* |digraphs| *E196* +m *+directx* Win32 GUI only: DirectX and |'renderoptions'| *+dnd* Support for DnD into the "~ register |quote_~|. B *+emacs_tags* |emacs-tags| files N *+eval* expression evaluation |eval.txt| @@ -368,6 +380,7 @@ N *+mouse* Mouse handling |mouse-using| N *+mouseshape* |'mouseshape'| B *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse| N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| +N *+mouse_jsbterm* JSB mouse handling |jsbterm-mouse| B *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| diff --git a/en/visual.txt b/en/visual.txt index 0c6d9b03b..fe47e996a 100644 --- a/en/visual.txt +++ b/en/visual.txt @@ -1,4 +1,4 @@ -*visual.txt* For Vim version 7.4. Last change: 2012 Aug 15 +*visual.txt* For Vim version 7.4. Last change: 2014 Mar 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -75,7 +75,11 @@ position. *V* *linewise-visual* [count]V Start Visual mode linewise. - With [count] select that many lines. + With [count] select the same number of lines as used + for the last Visual operation, but at the current + cursor position, multiplied by [count]. When there + was no previous Visual operation [count] lines are + selected. *CTRL-V* *blockwise-visual* [count]CTRL-V Start Visual mode blockwise. Note: Under Windows From 21263b9196bed10936e24932a4b2e9eba8eb6ab4 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Wed, 13 Aug 2014 23:28:28 +0900 Subject: [PATCH 584/783] eval.jax --- doc/eval.jax | 366 +++++++++++++++++++++++++++++++++++++++---------- en/eval.txt | 381 +++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 606 insertions(+), 141 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 450c256af..2a3773f1c 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1,4 +1,4 @@ -*eval.txt* For Vim バージョン 7.4. Last change: 2013 Nov 08 +*eval.txt* For Vim バージョン 7.4. Last change: 2014 Jul 19 VIMリファレンスマニュアル by Bram Moolenaar @@ -1508,6 +1508,15 @@ v:profiling 通常時は0。":profile start" を実行すると1が代入され v:progname Vimを起動したときのプログラム名(パスは除かれる)。|view|、 |evim| などの名前やシンボリックリンクなどで起動した場合に特別な 初期化を行うのに便利。 + 読出し専用。 + + *v:progpath* *progpath-variable* +v:progpath Vim を起動したときのコマンド (パスを含む)。|--remote-expr| で + Vim サーバーにメッセージを送信するときに便利。 + フルパスを得るには: > + echo exepath(v:progpath) +< NOTE: これはコマンドが相対パスで、カレントディレクトリが変更さ + れたときは機能しない。 読出し専用。 *v:register* *register-variable* @@ -2063,6 +2072,18 @@ argc() カレントウィンドウの引数リスト内の、ファイルの数 argidx() 引数リスト内の現在のインデックスを返す。最初のファイルは0とな る。argc() - 1が最後のファイルとなる。|arglist|を参照。 + *arglistid()* +arglistid([{winnr}, [ {tabnr} ]]) + 引数リストの ID を返す。値は引数リストを区別するための数値であ + る。ゼロはグローバル引数リストを意味する。 + 引数が無効な場合はゼロを返す。 + + 引数を指定しなかった場合はカレントウィンドウが使われる。 + {winnr} を指定した場合はカレントタブページ内のウィンドウが使わ + れる。 + {winnr} と {tabnr} を指定した場合は指定したタブページ内のウィ + ンドウが使われる。 + *argv()* argv([{nr}]) 結果は引数リスト内の、{nr}番目のファイル。|arglist|を参照。 "argv(0)" は一番最初のファイルを示す。例: > @@ -2243,7 +2264,10 @@ byteidx({expr}, {nr}) *byteidx()* 文字列{expr}の{nr}番目の文字のバイトインデックスを返す。 最初の文字の{nr}は0であり、戻り値は0となる。この関数はマルチバ イト文字が存在するときのみ有用であり、そうでなければこの関数が - 返す値は{nr}に等しい。合成文字は別々の文字と数えられる。 + 返す値は{nr}に等しい。 + 合成文字はまとめて計算される。合成文字のバイト数はそれが合成さ + れているベース文字のバイト数に合算される。合成文字を別々に数え + るには |byteidxcomp()| を参照。 例 : > echo matchstr(str, ".", byteidx(str, 3)) < は4文字目を表示する。次も同じことをする: > @@ -2252,6 +2276,17 @@ byteidx({expr}, {nr}) *byteidx()* < {expr}が{nr}文字以下の場合は-1を返す。 {expr}がちょうど{nr}文字の場合は文字列の長さ(バイト単位)を返す。 +byteidxcomp({expr}, {nr}) *byteidxcomp()* + byteidx() と同じだが、合成文字は個別にカウントされる。例: > + let s = 'e' . nr2char(0x301) + echo byteidx(s, 1) + echo byteidxcomp(s, 1) + echo byteidxcomp(s, 2) +< 1 番目と 3 番目は 3 が出力される ('e' の長さと合成文字の長さを + 足すと 3 バイト)。2 番目は 1 が出力される ('e' は 1 バイト)。 + 'encoding' にユニコードが設定されているときのみ byteidx() と違 + う動作になる。 + call({func}, {arglist} [, {dict}]) *call()* *E699* リスト|List|{arglist}の要素を引数として関数{func}を呼ぶ。 {func}は|Funcref|でも関数の名前でもよい。 @@ -2512,15 +2547,22 @@ cursor({lnum}, {col} [, {off}]) *cursor()* cursor({list}) {lnum}行目の{col}桁目(バイトで数える)にカーソルを移動させる。 桁番号{col}は1から始まる。 - 引数が1個の場合は、{lnum}, {col}, {off}からなる、2個または3個 - の要素を持つリスト|List|でなければならない。これは|getpos()|の - 戻り値と似ているが、1個目の要素がない点が異なる。 + + 引数に {list} が 1 つだけ指定された場合は、それは要素が 2 個か + 3 個、または 4 個の |List| として解釈される: + [{lnum}, {col}, {off}] + [{lnum}, {col}, {off}, {curswant}] + これは |getpos()| や |getcurpos()| の返り値とほぼ同じである。 + 違いは最初の要素がないこと。 + この関数を呼んでもジャンプリストは変更されない。 {lnum}がバッファの行数よりも大きい場合は、最後の行へ移動する。 {lnum}が0の場合はカレント行に留まる。 {col}がその行のバイト数より大きい場合は、その行の最後の文字へ 移動する。 {col}が0の場合は、カレント桁に留まる。 + {curswant} が与えられた場合は、縦方向移動の優先的列番号として + 使われる。指定がない場合は {col} が使われる。 'virtualedit' が有効のとき、{off}は文字の先頭からの画面上のオ フセットを指定する。例えば、<Tab>の中の位置や最後の文字より後 などへも移動できる。 @@ -2626,6 +2668,15 @@ executable({expr}) *executable()* 0 存在しない -1 このシステム上では実装されていない +exepath({expr}) *exepath()* + {expr} が実行ファイルで、それが絶対パス、相対パス、または + $PATH の中に存在する場合は、そのフルパスを返す。 + Note: {expr} が "./" で開始している場合はカレントディレクトリ + が使われる。Vim のパスを得る場合に問題になるかもしれない: > + echo exepath(v:progpath) +< {expr} が $PATH の中に見つからないか、それが実行ファイルではな + かった場合は空文字列が返る。 + *exists()* exists({expr}) 結果は数値で、変数{expr}が存在すれば1となり、そうでなければ0と なる。引数{expr}は文字列で次のうちいずれかである。 @@ -3208,6 +3259,16 @@ getcmdtype() *getcmdtype()* きのみ有効。そうでないときは空文字列を返す。 |getcmdpos()|, |setcmdpos()|, |getcmdline()|も参照。 + *getcurpos()* +getcurpos() カーソルの位置を返す。これは getpos('.') に似ているが、追加の + 情報を含む: + [bufnum, lnum, col, off, curswant] + "curswant" は縦方向移動の優先的列番号である。 + 次のようにしてカーソル位置の保存と復元ができる: > + let save_cursor = getcurpos() + MoveTheCursorAround + call setpos('.', save_cursor) + *getcwd()* getcwd() 結果は文字列で、現在のディレクトリ名。 @@ -3321,6 +3382,32 @@ getmatches() *getmatches()* 'pattern': 'FIXME', 'priority': 10, 'id': 2}] > :unlet m < + *getpid()* +getpid() Vim のプロセス ID を数値で返す。Unix と MS-Windows では Vim が + 終了するまでこれは一意な数値である。MS-DOS では常にゼロである。 + + *getpos()* +getpos({expr}) {expr}の位置を返す。{expr}として指定できる値については + |line()|を参照。カーソル位置を得るには |getcurspos()| を参照。 + 結果は次の4個の要素を持つリスト|List|: + [bufnum, lnum, col, off] + "bufnum" は、'0 や 'A のようなマークが指定されたときは、その + マークのバッファ番号となる。それ以外では0となる。 + "lnum" と "col" はバッファ中の位置。桁番号は1から始まる。 + "off" の値は、'virtualedit' がオフのときは常に0で、オンのとき + はその文字の始点からの画面上の桁のオフセットである。つまり、 + カーソルが<Tab>の中や、その行の最後の文字より後にあるとき意味 + を持つ。 + Note: ビジュアルモードの '< と '> について: ビジュアルモードが + "V" (行選択モード) のとき、'< の桁番号はゼロ、'> の桁番号は大 + きな値になる。 + この関数はマークの位置を保存し、復元するために使われる: > + let save_cursor = getpos(".") + MoveTheCursorAround + call setpos('.', save_cursor) +< |getcurpos()| と |setpos()|も参照。 + + getqflist() *getqflist()* 現在の全quickfixエラーのリストを返す。リストの各要素は辞書で、 以下の要素を持つ: @@ -3347,7 +3434,7 @@ getqflist() *getqflist()* : echo bufname(d.bufnr) ':' d.lnum '=' d.text :endfor -getreg([{regname} [, 1]]) *getreg()* +getreg([{regname} [, 1 [, {list}]]]) *getreg()* レジスタ{regname}の中身を文字列にして返す。例: > :let cliptext = getreg('*') < getreg('=')は最後に評価した式レジスタの値を返す。(マップの中で @@ -3355,6 +3442,11 @@ getreg([{regname} [, 1]]) *getreg()* getreg('=', 1)はその式そのものを返す。これを使って|setreg()|で 復元することができる。他のレジスタの場合は、この引数は無視され るので、常に指定していても害はない。 + {list} が指定され、その値が非ゼロのときは、返り値はリスト + (|List|) になる。リストの各要素はテキスト 1 行である。これはレ + ジスタの中に値ゼロのバイトが含まれる場合に使用する。{list} を + 指定しなかった場合は NL 文字と値ゼロのバイトは両方とも NL 文字 + として扱われる (|NL-used-for-Nul| 参照)。 {regname}を指定しないときは|v:register|が使われる。 @@ -3441,11 +3533,12 @@ glob({expr} [, {nosuf} [, {list}]]) *glob()* 特殊なVimの変数を展開するためには|expand()|を参照。外部コマン ドの生の出力を得るためには|system()|を参照。 -globpath({path}, {expr} [, {flag}]) *globpath()* +globpath({path}, {expr} [, {nosuf} [, {list}]]) *globpath()* {path}の中の全ディレクトリに対して|glob()|を実行し、結果を連結 する。例: > :echo globpath(&rtp, "syntax/c.vim") -< {path}はコンマ区切りのディレクトリのリスト。各ディレクトリを +< + {path}はコンマ区切りのディレクトリのリスト。各ディレクトリを {expr}の前に付加し、glob()と同様にそれを展開する。必要に応じて パスの区切り文字が挿入される。 ディレクトリ名の中にコンマを含めるには、バックスラッシュでエス @@ -3454,10 +3547,18 @@ globpath({path}, {expr} [, {flag}]) *globpath()* スケープと見なされてしまうので、バックスラッシュは削除すること。 どれかのディレクトリに対して展開が失敗してもエラーメッセージは 表示されない。 - {flag} に非零が指定されない限り、オプション 'wildignore' が適 + + {nosuf} に非零が指定されない限り、オプション 'wildignore' が適 用される。つまり、'wildignore' のパターンにマッチする名前はス キップされる。 + {list} が指定され、その値が非ゼロなら、マッチしたすべてのファ + イルがリストとして返る。リストとして受け取る利点は、改行文字を + 含んだファイル名も正しく扱えることである。{list} を指定しな + かった場合は、返り値は文字列であり、マッチした複数のファイル名 + は <NL> 文字で連結されてしまう。例: > + :echo globpath(&rtp, "syntax/c.vim", 0, 1) +< "**" を使ってディレクトリツリーを再帰的に検索することができる。 例えば、'runtimepath' とそれ以下のディレクトリから全ての "README.txt" を探すには次のようにする: > @@ -4110,6 +4211,9 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) ンのことを「マッチ」と呼ぶ。構文グループ {group}で強調する。戻 り値は、マッチを識別する ID である。|matchdelete()|でこの ID を指定してマッチを削除することができる。 + パターンは大文字小文字を区別し、magic (|/magic|) として解釈さ + れる ({pattern} の中で明示的に変更しない限り)。オプションの + 'magic'、'smartcase'、'ignorecase' は使用されない。 省略可能な引数 {priority} はマッチの優先度を指定する。優先度が 高いマッチは、より低いマッチの強調を上書きする。優先度は整数で @@ -4138,6 +4242,41 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) |getmatches()| で取得できる。全てのマッチを削除するのは |clearmatches()| 一発でできる。 +matchaddpos({group}, {pos}[, {priority}[, {id}]]) *matchaddpos()* + |matchadd()| と同じだが、パターンを指定するのではなく、位置の + リスト {pos} を指定する。このコマンドは正規表現を扱う必要もな + く、画面更新のためにバッファ行の境界を設定するため、 + |matchadd()| よりも速い。これは、例えば括弧の対応を強調表示す + るような、マッチの追加と削除を高速に実行したい状況を想定してい + る。 + + リスト {pos} は以下のいずれかの値を要素として持つことができる: + - 数値。指定した行全体が強調表示される。最初の行の行番号は 1 + である。 + - 数値を 1 つ持ったリスト。例 [23]。指定した行全体が強調表示さ + れる。 + - 数値を 2 つ持ったリスト。例 [23, 11]。最初の数値は行番号、2 + 番目の数値は列番号である (最初の列は 1 である。値は |col()| + の返り値と同じようにバイト単位である)。指定した位置の文字が + 強調表示される。 + - 数値を 3 つ持ったリスト。例 [23, 11, 3]。数値 2 つの場合と同 + じだが、3 つ目に強調表示する文字の長さ (バイト単位) を指定す + る。 + + 指定できる位置は最大で 8 個である。 + + 例: > + :highlight MyGroup ctermbg=green guibg=green + :let m = matchaddpos("MyGroup", [[23, 24], 34]) +< パターンの削除: > + :call matchdelete(m) + +< |matchaddpos()| で追加されたマッチは |getmatches()| で取得する + 際には "pos1"、"pos2"、... という項目を持つ。それぞれの値は + {pos} で指定された値である。 + これらのマッチは |setmatches()| で設定することはできない。ただ + し、|clearmatches()| で削除することはできる。 + matcharg({nr}) *matcharg()* |:match|、|:2match|、|:3match|によって設定されているマッチパター ンの情報を返す。{nr}が1のときは|:match|の情報、2のときは @@ -4295,28 +4434,6 @@ nr2char({expr}[, {utf8}]) *nr2char()* る。nr2char(0)は真のNUL文字(文字列の終端)となるので、空文字列 を返す。 - *getpid()* -getpid() Vim のプロセス ID を数値で返す。Unix と MS-Windows では Vim が - 終了するまでこれは一意な数値である。MS-DOS では常にゼロである。 - - *getpos()* -getpos({expr}) {expr}の位置を返す。{expr}として指定できる値については - |line()|を参照。 - 結果は次の4個の要素を持つリスト|List|: - [bufnum, lnum, col, off] - "bufnum" は、'0 や 'A のようなマークが指定されたときは、その - マークのバッファ番号となる。それ以外では0となる。 - "lnum" と "col" はバッファ中の位置。桁番号は1から始まる。 - "off" の値は、'virtualedit' がオフのときは常に0で、オンのとき - はその文字の始点からの画面上の桁のオフセットである。つまり、 - カーソルが<Tab>の中や、その行の最後の文字より後にあるとき意味 - を持つ。 - この関数はカーソル位置を保存し、復元するために使われる: > - let save_cursor = getpos(".") - MoveTheCursorAround - call setpos('.', save_cursor) -< |setpos()|も参照。 - or({expr}, {expr}) *or()* 二つの引数のビット論理和。引数は数値に変換される。リスト、辞 書、浮動小数点数を指定するとエラーになる。 @@ -5055,8 +5172,9 @@ setpos({expr}, {list}) . カーソル位置 'x マーク x - {list}は次の4個の要素を持つリスト|List|でなければならない: + {list} は 4 個か 5 個の要素を持つリスト|List|である: [bufnum, lnum, col, off] + [bufnum, lnum, col, off, curswant] "bufnum" はバッファ番号。0にするとカレントバッファを表す。カー ソル位置の設定はカレントバッファに対してのみ可能。他のバッファ @@ -5072,13 +5190,23 @@ setpos({expr}, {list}) 開始位置からの画面上の桁のオフセットとなる。例えば、<Tab>の中、 または最後の文字より後に設定したいときに使う。 + "curswant" はカーソル位置を設定するときのみ使われる。これは縦 + 方向移動の優先的列番号である。 "curswant" を指定しなかった場合 + は優先値は設定されない。マークの位置を設定するときに + "curswant" を指定した場合はその値は使用されない。 + + Note: '< と '> の行番号を変更した場合は '< が '> の手前にくる + ように位置が交換される。 + 位置をセットできたときは 0 を、そうでなければ -1 を返す。 {expr} が無効なときはエラーメッセージが出る。 - |getpos()|も参照。 + |getpos()| と |getcurpos()| も参照。 - 縦方向に移動するときの望ましい桁を復元しない。それには - |winrestview()|を参照。 + 縦方向移動の優先的列番号は復元されない。しかしカーソル位置を設 + 定するときにこの値を設定した場合は、|j| や |k| で移動すると以 + 前の列にジャンプようになるだろう。優先的列番号の設定については + |cursor()| も参照。|winrestview()| の "curswant" キーも参照。 setqflist({list} [, {action}]) *setqflist()* @@ -5127,6 +5255,8 @@ setqflist({list} [, {action}]) *setqflist()* *setreg()* setreg({regname}, {value} [,{options}]) レジスタ{regname}に{value}をセットする。 + {value} には |getreg()| の返り値ならどんな値でも (リストでも) + 指定できる。 {options}が "a" を含んでいるとき、または{regname}が大文字のと きは、その値に追加する。 {options}は以下のレジスタの種類指定を含んでもよい: @@ -5137,19 +5267,27 @@ setreg({regname}, {value} [,{options}]) 幅となる。これを指定しない場合、選択範囲の幅は一番長い行の文字 数となる(<Tab>は1文字と数えられる)。 - {options}にレジスタの設定が何も含まれていないとき、{value}が - <NL>で終わっていない限り、デフォルトの文字単位モードが使われる。 - レジスタ '=' の値を設定することはできないが、これが使える: > - :let @= = var_expr -< 成功なら0、失敗なら非0を返す。 + {options} にレジスタの設定が何も含まれていないときのデフォルト + 値は文字モードである。ただし、{value} が文字列で末尾が <NL> の + 場合や {value} がリストの場合は行モードになる。矩形モードは明 + 示的に指定しない限り選択されない。 + 成功なら0、失敗なら非0を返す。 + + *E883* + Note: 検索レジスタや式レジスタを設定するときは複数の要素を含ん + だリスト (|List|) を指定することはできない。空のリストは + 空文字列と同様に扱われる。 例: > :call setreg(v:register, @*) :call setreg('*', @%, 'ac') :call setreg('a', "1\n2\n3", 'b5') -< 次の例は、この関数を使ってレジスタを退避・復元する例である。 > - :let var_a = getreg('a', 1) +< 次の例は、この関数を使ってレジスタを退避・復元する例である + (note: |getreg()| の 3 番目の引数を使用せずにレジスタの内容を + 完全に復元することはできない。改行文字と Nul 文字がどちらも改 + 行文字として表現されてしまうため。|NL-used-for-Nul| 参照)。 + :let var_a = getreg('a', 1, 1) :let var_amode = getregtype('a') .... :call setreg('a', var_a, var_amode) @@ -5278,11 +5416,17 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702* リストを変更したくない場合は、最初にコピーを作っておくこと: > :let sortedlist = sort(copy(mylist)) -< ソートの際には、各要素の文字列表現を使う。 - 数値は文字列より後になり、リストは数値より後になる。 - カレントバッファのテキストをソートするには|:sort|を使うこと。 +< {func} が省略されたか空かゼロの場合は、各項目の文字列表現を + 使ってソートする。数値は文字列より後になり、リストは数値より後 + になる。カレントバッファのテキストをソートするには |:sort| を + 使う。 + + {func} が '1' か 'i' なら大文字小文字は区別されない。 + + {func} が 'n' ならすべての要素は数値順にソートされる (実装詳 + 細: 数値の読み込みには strtod() 関数が使われる。文字列、リス + ト、辞書、関数参照は 0 として扱われる)。 - {func}に1を指定すると、大文字・小文字を区別しなくなる。 {func}に|Funcref|または関数名を指定すると、その関数を使って要 素を比較する。その関数は2つの要素を引数として受け取り、それら が等しいときは0、1番目の引数を2番目より後にするなら1以上、1番 @@ -5291,6 +5435,10 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702* {dict} は "dict" 属性付きの関数と一緒に使う。値はローカル変数 "self" として使われる。 |Dictionary-function| + ソートは安定である。(数値または文字列として) 等価な要素は元の + 順序関係が保持される。例えば数値としてソートした場合、文字列は + 元の順番通りに隣り合って並ぶ。 + |uniq()| も参照のこと。 例: > @@ -5554,11 +5702,21 @@ strwidth({expr}) *strwidth()* きは、文字幅は 'ambiwidth' の設定に依存する。 |strlen()|, |strdisplaywidth()|, |strchars()| も参照。 -submatch({nr}) *submatch()* +submatch({nr}[, {list}]) *submatch()* |:substitute| や substitute() 関数の中の式でのみ使われる。 マッチしたテキストの{nr} 番目の部分マッチを返す。{nr}が0のとき はマッチしたテキスト全体を返す。 + Note: 文字列中の NL 文字は複数行マッチにおける改行文字か、NUL + 文字のどちらかである。 |sub-replace-expression| も参照。 + + {list} に非ゼロの値が指定されたときは submatch() は文字列のリ + ストを返す。|getline()| に 2 つの引数を指定したときの返り値と + 同じである。テキスト中の NL 文字は NUL 文字を表す。 + |:substitute| で使われたときのみ複数要素のリストを返す。 + |substitute()| では、実際の改行はそこにはないので、リストは常 + に 0 または 1 つの要素である。 + 例: > :s/\d\+/\=submatch(0) + 1/ < この例は、行の中で最初の数値を検索し、それに1を加える。改行は @@ -5689,23 +5847,36 @@ synstack({lnum}, {col}) *synstack()* 最後の文字の一つ後ろと空行の一番目の列は有効な位置である。 system({expr} [, {input}]) *system()* *E677* - シェルコマンド{expr}の実行結果を得る。 - {input}が与えられた場合は、この文字列はファイルに書き出され、 - コマンドの標準入力として渡される。この文字列はそのまま(as-is) - 書き出され、正しい改行文字を使うよう自分自身で気を付けなければ - ならない。パイプは使われない。 - Note: |shellescape()| を使ってコマンドの引数をエスケープするこ - と。{expr}内に改行が含まれるとコマンドが失敗する可能性がある。 - 'shellquote' と 'shellxquote' に入っている文字は問題を引き起こ - すかもしれない。 + シェルコマンド {expr} の実行結果を文字列として得る。リストとし + て受け取るには |systemlist()| を参照。 + + {input} に文字列が指定された場合、その文字列はファイルに書き出 + され、コマンドの標準入力として渡される。この文字列はそのまま + (as-is) 書き出されるので、正しい改行文字を使うよう自分自身で気 + を付けなければならない。 + {input} にリスト (|List|) が指定された場合は、|writefile()| の + {binary} に "b" を指定したのと同様にファイルに書き出される (つ + まり、リストの各要素は改行文字で連結され、要素内の改行文字は + NUL 文字に変換される)。 + パイプは使用されない。 + + Note: コマンドの引数をエスケープするには、 |shellescape()|、 + |expand()| の |::S|、または |fnamemodify()| を使用する。{expr} + 内に改行文字があるとコマンドは失敗するだろう。'shellquote' や + 'shellxquote' 内にある文字も問題を起こすかもしれない。 対話的なコマンドを使用することはできない。 + 戻り値は文字列。例: > :let files = system("ls " . shellescape(expand('%:h'))) + :let files = system('ls ' . expand('%:h:S')) < システムに依存しないような戻り値にするために、シェルの出力を フィルタリングし、マッキントッシュにおいては<CR>を<NL>に変換 し、DOS系のシステムにおいては<CR><NL>を<NL>に変換している。 実行されるコマンドはいくつかのオプションを適用して構成される: + 文字列が NUL 文字で切れるのを防ぐため、すべての NUL 文字は SOH + (0x01) に置換される。 + 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote' ({tmp}は自動的に生成されるファイル名) UnixとOS/2ではコマンドの連結ができるように{expr}の両側に波括弧 @@ -5724,6 +5895,14 @@ system({expr} [, {input}]) *system()* *E677* い。 明示的にチェックさせるには|:checktime|を使う。 +systemlist({expr} [, {input}]) *systemlist()* + |system()| と同じだが行のリスト (|List|) を返す。行は NL 文字 + で区切られ、NUL 文字は NL 文字に変換される。出力は + |readfile()| の {binary} 引数に "b" を指定したのと同様である。 + + エラー時には空文字列が返るので |E706| エラーに注意。 + + tabpagebuflist([{arg}]) *tabpagebuflist()* カレントタブページ内の各ウィンドウに表示されているバッファの番 号を要素とするリスト|List|を返す。{arg}は対象とするタブページ @@ -5941,6 +6120,14 @@ undotree() *undotree()* が入れ子にされている。それぞれのアイテムはさら に "alt" アイテムを持っていることがある。 +uniq({list} [, {func} [, {dict}]]) *uniq()* *E882* + {list} 内の隣接する同じ値の要素の 2 個目以降をその場で + (in-place) 削除する。{list} を返す。リストを変更したくない場合 + は事前にコピーする: > + :let newlist = uniq(copy(mylist)) +< デフォルトの比較関数は各要素の文字列表現を使う。{func} と + {dict} については |sort()| 参照。 + values({dict}) *values()* {dict}の全ての値からなるリスト|List|を返す。このリストの順序は 不定である。 @@ -6066,6 +6253,16 @@ winrestcmd() 現在のウィンドウサイズを復元するための一連の| winrestview({dict}) |winsaveview()|が返す辞書|Dictionary|を使ってカレントウィンド ウの表示状態を復元する。 + Note: {dict} は |winsaveview()| の返り値に含まれる値をすべて + 持っていなくても構わない。値がない場合はその設定は復元されな + い。次のようにできる: > + :call winrestview({'curswant': 4}) +< + これは curswant 値 (縦方向移動でカーソルの移動先として使われる + 列番号) を列番号 5 に設定する (はいそのとおり。5 です)。ほかの + 設定値は変更されない。これはカーソル位置を手動で設定したい場合 + に便利である。 + この値を手動で変更した場合、結果は予測できない。 ウィンドウサイズが変更されていると、結果は必ずしも元通りになら ない。 @@ -6078,10 +6275,11 @@ winsaveview() カレントウィンドウの表示状態を復元するための る。 折り畳み情報は保存しない。オプション 'foldenable' によって一時 的に折り畳みをオフにし、移動中に折り畳みが開かれないようにする - こと。 + こと。これは副作用があるかもしれない。 戻り値は以下のキーを持つ: lnum カーソルの行番号 - col カーソルの桁番号 + col カーソルの桁番号 (Note: getpos() とは + 異なり最初の桁番号はゼロ) coladd カーソル位置の桁オフセット。 'virtualedit' がオンのとき使われる。 curswant 垂直移動するときの桁 @@ -6130,17 +6328,26 @@ xor({expr}, {expr}) *xor()* < *feature-list* -機能は大別して3つの系統に分けられる: +機能は大別して 4 つの系統に分けられる: 1. コンパイル時に|+feature-list|とした時にだけサポートされる機能。例: > :if has("cindent") 2. ある状態の時にだけサポートされる機能。例: > :if has("gui_running") < *has-patch* -3. 適用済みパッチ。最初に|v:version|によってVimのバージョンを確認する。 - 機能 "patch123" はパッチ123が適用されていることを示す。例 (バージョン - 6.2.148以降であることを確認する): > +3. 適用済みパッチ。"patch123" はパッチ 123 が適用されていることを示す。Note: + この形式は Vim のバージョンをチェックしない。あなたは |v:version| を解析す + る必要がある。 + 例 (6.2.148 以降かどうかを確認する): > :if v:version > 602 || v:version == 602 && has("patch148") -< Note 148が適用されていても、147が抜けていることもありうるので注意。 +< Note: 148 が適用されていても、147 が抜けていることもありうるので注意。 + +4. 特定のバージョン以降であるか、またはバージョンが同じで特定のパッチが含まれ + ているかどうか。"patch-7.4.237" は、Vim のバージョンが 7.5 以降か、または + 7.4 でパッチ 237 を含んでいるかどうかを示す。 + Note: これはパッチ 7.4.237 以降でのみ機能する。それ以前では上述のように + v:version を確認する必要がある。例: > + :if has("patch-7.4.248") +< Note: 148 が適用されていても、147 が抜けていることもありうるので注意。 acl |ACL| をサポート all_builtin_terms 全ての組込みターミナルを有効にしてコンパイル @@ -6170,6 +6377,7 @@ dialog_con コンソールダイアログのサポート dialog_gui GUIダイアログのサポート diff |vimdiff| と 'diff' のサポート digraphs ダイグラフをサポート +directx Direct-X と 'renderoptions' をサポート dnd レジスタ "~ をサポート |quote_~| dos16 16ビットDOSバージョン dos32 32ビットDOSバージョン (DJGPP) @@ -6346,6 +6554,8 @@ x11 X11をサポート ユーザー定義コマンド、オートコマンドからしか呼ぶことができない。そのスクリプト 内で定義されたマッピングにより呼ぶこともできるが、スクリプトの外部でマッピング が展開された場合は "s:" の代わりに |<SID>| をつけなければならない。 +ローカル関数はスクリプトローカル関数だけである。バッファローカル関数やウィンド +ウローカル関数というものはない。 *:fu* *:function* *E128* *E129* *E123* :fu[nction] 全ての関数と、その引数を表示する。 @@ -6369,12 +6579,15 @@ x11 X11をサポート < より詳しくは|:verbose-cmd|を参照。 - *E124* *E125* *E853* + *E124* *E125* *E853* *E884* :fu[nction][!] {name}([arguments]) [range] [abort] [dict] {name}という名前で新しい関数を定義する。関数名はアル ファベットと数字と '_' からなり、通常の関数はアルファ ベットの大文字、スクリプトローカル関数は "s:" で始まら - なければならない。 + なければならない。Note: "b:" や "g:" は使用できない + (7.4.260 からは関数名にコロンが含まれる場合は E884 エ + ラーが発生する。例 "foo:bar()"。このパッチ以前はエラー + にはならない)。 {name}は辞書|Dictionary|の要素の|Funcref|であってもよ い: > @@ -7031,6 +7244,8 @@ Vimはこれを見つけると、まず波括弧の中の式を評価し、そ {pattern}を囲むのに/以外の文字を使うことができる。ただ しその文字は特別な意味(例: '|' や '"' など)を持ってい てはならず、{pattern}の内側に現れてはならない。 + 例外の情報は |v:exception| で得られる。 + |throw-variables| も参照。 NOTE: エラーメッセージの本文によって ":catch" すること は確実ではない。メッセージはロケールによって異なるから である。 @@ -7169,13 +7384,22 @@ Vimはこれを見つけると、まず波括弧の中の式を評価し、そ 与えるときは |shellescape()| を使う。 例: > :execute "e " . fnameescape(filename) - :execute "!ls " . shellescape(expand('%:h'), 1) + :execute "!ls " . shellescape(filename, 1) < - Note: executeに渡す文字列としては、"while" や "for" - や "if" コマンドが始まったり終ったりするだけのようなも - のは不適格である。よって次のような例は認められない: > - :execute 'while i > 5' - :execute 'echo "test" | break' + Note: execute に渡す文字列はいかなるコマンドでも構わな + いが、"if" や "while"、"for" の開始や終了は常に機能す + るとは限らない。なぜならコマンドをスキップするときには + ":execute" は解釈されないので Vim はブロックの開始や終 + 了を認識することができない。"break" と "continue" も + ":execute" で実行すべきではない。 + 次の例は機能しない。":execute" は評価されず、Vim は + "while" を認識しないので、":endwhile" を見つけたときに + エラーが発生する: > + :if 0 + : execute 'while i > 5' + : echo "test" + : endwhile + :endif < 文字列の中に完全な "while" や "if" コマンドが含まれる ことが求められる: > diff --git a/en/eval.txt b/en/eval.txt index 5ae36d587..62aa16704 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2013 Nov 08 +*eval.txt* For Vim version 7.4. Last change: 2014 Jul 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1556,6 +1556,16 @@ v:profiling Normally zero. Set to one after using ":profile start". v:progname Contains the name (with path removed) with which Vim was invoked. Allows you to do special initialisations for |view|, |evim| etc., or any other name you might symlink to Vim. + Read-only. + + *v:progpath* *progpath-variable* +v:progpath Contains the command with which Vim was invoked, including the + path. Useful if you want to message a Vim server using a + |--remote-expr|. + To get the full path use: > + echo exepath(v:progpath) +< NOTE: This does not work when the command is a relative path + and the current directory has changed. Read-only. *v:register* *register-variable* @@ -2098,6 +2108,18 @@ argc() The result is the number of files in the argument list of the argidx() The result is the current index in the argument list. 0 is the first file. argc() - 1 is the last one. See |arglist|. + *arglistid()* +arglistid([{winnr}, [ {tabnr} ]]) + Return the argument list ID. This is a number which + identifies the argument list being used. Zero is used for the + global argument list. + Return zero if the arguments are invalid. + + Without arguments use the current window. + With {winnr} only use this window in the current tab page. + With {winnr} and {tabnr} use the window in the specified tab + page. + *argv()* argv([{nr}]) The result is the {nr}th file in the argument list of the current window. See |arglist|. "argv(0)" is the first one. @@ -2282,7 +2304,10 @@ byteidx({expr}, {nr}) *byteidx()* {expr}. Use zero for the first character, it returns zero. This function is only useful when there are multibyte characters, otherwise the returned value is equal to {nr}. - Composing characters are counted as a separate character. + Composing characters are not counted separately, their byte + length is added to the preceding base character. See + |byteidxcomp()| below for counting composing characters + separately. Example : > echo matchstr(str, ".", byteidx(str, 3)) < will display the fourth character. Another way to do the @@ -2291,7 +2316,20 @@ byteidx({expr}, {nr}) *byteidx()* echo strpart(s, 0, byteidx(s, 1)) < If there are less than {nr} characters -1 is returned. If there are exactly {nr} characters the length of the string - is returned. + in bytes is returned. + +byteidxcomp({expr}, {nr}) *byteidxcomp()* + Like byteidx(), except that a composing character is counted + as a separate character. Example: > + let s = 'e' . nr2char(0x301) + echo byteidx(s, 1) + echo byteidxcomp(s, 1) + echo byteidxcomp(s, 2) +< The first and third echo result in 3 ('e' plus composing + character is 3 bytes), the second echo results in 1 ('e' is + one byte). + Only works different from byteidx() when 'encoding' is set to + a Unicode encoding. call({func}, {arglist} [, {dict}]) *call()* *E699* Call function {func} with the items in |List| {arglist} as @@ -2566,9 +2604,14 @@ cursor({lnum}, {col} [, {off}]) *cursor()* cursor({list}) Positions the cursor at the column (byte count) {col} in the line {lnum}. The first column is one. + When there is one argument {list} this is used as a |List| - with two or three items {lnum}, {col} and {off}. This is like - the return value of |getpos()|, but without the first item. + with two, three or four item: + [{lnum}, {col}, {off}] + [{lnum}, {col}, {off}, {curswant}] + This is like the return value of |getpos()| or |getcurpos()|, + but without the first item. + Does not change the jumplist. If {lnum} is greater than the number of lines in the buffer, the cursor will be positioned at the last line in the buffer. @@ -2577,6 +2620,8 @@ cursor({list}) the cursor will be positioned at the last character in the line. If {col} is zero, the cursor will stay in the current column. + If {curswant} is given it is used to set the preferred column + for vertical movment. Otherwise {col} is used. When 'virtualedit' is used {off} specifies the offset in screen columns from the start of the character. E.g., a position within a <Tab> or after the last character. @@ -2693,6 +2738,15 @@ executable({expr}) *executable()* 0 does not exist -1 not implemented on this system +exepath({expr}) *exepath()* + If {expr} is an executable and is either an absolute path, a + relative path or found in $PATH, return the full path. + Note that the current directory is used when {expr} starts + with "./", which may be a problem for Vim: > + echo exepath(v:progpath) +< If {expr} cannot be found in $PATH or is not executable then + an empty string is returned. + *exists()* exists({expr}) The result is a Number, which is non-zero if {expr} is defined, zero otherwise. The {expr} argument is a string, @@ -3295,6 +3349,17 @@ getcmdtype() *getcmdtype()* Returns an empty string otherwise. Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|. + *getcurpos()* +getcurpos() Get the position of the cursor. This is like getpos('.'), but + includes an extra item in the list: + [bufnum, lnum, col, off, curswant] + The "curswant" number is the preferred column when moving the + cursor vertically. + This can be used to save and restore the cursor position: > + let save_cursor = getcurpos() + MoveTheCursorAround + call setpos('.', save_cursor) + *getcwd()* getcwd() The result is a String, which is the name of the current working directory. @@ -3416,6 +3481,34 @@ getmatches() *getmatches()* 'pattern': 'FIXME', 'priority': 10, 'id': 2}] > :unlet m < + *getpid()* +getpid() Return a Number which is the process ID of the Vim process. + On Unix and MS-Windows this is a unique number, until Vim + exits. On MS-DOS it's always zero. + + *getpos()* +getpos({expr}) Get the position for {expr}. For possible values of {expr} + see |line()|. For getting the cursor position see + |getcurpos()|. + The result is a |List| with four numbers: + [bufnum, lnum, col, off] + "bufnum" is zero, unless a mark like '0 or 'A is used, then it + is the buffer number of the mark. + "lnum" and "col" are the position in the buffer. The first + column is 1. + The "off" number is zero, unless 'virtualedit' is used. Then + it is the offset in screen columns from the start of the + character. E.g., a position within a <Tab> or after the last + character. + Note that for '< and '> Visual mode matters: when it is "V" + (visual line mode) the column of '< is zero and the column of + '> is a large number. + This can be used to save and restore the position of a mark: > + let save_a_mark = getpos("'a") + ... + call setpos(''a', save_a_mark +< Also see |getcurpos()| and |setpos()|. + getqflist() *getqflist()* Returns a list with all the current quickfix errors. Each @@ -3444,7 +3537,7 @@ getqflist() *getqflist()* :endfor -getreg([{regname} [, 1]]) *getreg()* +getreg([{regname} [, 1 [, {list}]]]) *getreg()* The result is a String, which is the contents of register {regname}. Example: > :let cliptext = getreg('*') @@ -3453,6 +3546,11 @@ getreg([{regname} [, 1]]) *getreg()* getreg('=', 1) returns the expression itself, so that it can be restored with |setreg()|. For other registers the extra argument is ignored, thus you can always give it. + If {list} is present and non-zero result type is changed to + |List|. Each list item is one text line. Use it if you care + about zero bytes possibly present inside register: without + third argument both NLs and zero bytes are represented as NLs + (see |NL-used-for-Nul|). If {regname} is not specified, |v:register| is used. @@ -3540,11 +3638,12 @@ glob({expr} [, {nosuf} [, {list}]]) *glob()* See |expand()| for expanding special Vim variables. See |system()| for getting the raw output of an external command. -globpath({path}, {expr} [, {flag}]) *globpath()* +globpath({path}, {expr} [, {nosuf} [, {list}]]) *globpath()* Perform glob() on all directories in {path} and concatenate the results. Example: > :echo globpath(&rtp, "syntax/c.vim") -< {path} is a comma-separated list of directory names. Each +< + {path} is a comma-separated list of directory names. Each directory name is prepended to {expr} and expanded like with |glob()|. A path separator is inserted when needed. To add a comma inside a directory name escape it with a @@ -3552,11 +3651,19 @@ globpath({path}, {expr} [, {flag}]) *globpath()* trailing backslash, remove it if you put a comma after it. If the expansion fails for one of the directories, there is no error message. - Unless the optional {flag} argument is given and is non-zero, + + Unless the optional {nosuf} argument is given and is non-zero, the 'suffixes' and 'wildignore' options apply: Names matching one of the patterns in 'wildignore' will be skipped and 'suffixes' affect the ordering of matches. + When {list} is present and it is non-zero the result is a List + with all matching files. The advantage of using a List is, you + also get filenames containing newlines correctly. Otherwise + the result is a String and when there are several matches, + they are separated by <NL> characters. Example: > + :echo globpath(&rtp, "syntax/c.vim", 0, 1) +< The "**" item can be used to search in a directory tree. For example, to find all "README.txt" files in the directories in 'runtimepath' and below: > @@ -4239,6 +4346,9 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) "match"). It will be highlighted with {group}. Returns an identification number (ID), which can be used to delete the match using |matchdelete()|. + Matching is case sensitive and magic, unless case sensitivity + or magicness are explicitly overridden in {pattern}. The + 'magic', 'smartcase' and 'ignorecase' options are not used. The optional {priority} argument assigns a priority to the match. A match with a high priority will have its @@ -4272,6 +4382,41 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) available from |getmatches()|. All matches can be deleted in one operation by |clearmatches()|. +matchaddpos({group}, {pos}[, {priority}[, {id}]]) *matchaddpos()* + Same as |matchadd()|, but requires a list of positions {pos} + instead of a pattern. This command is faster than |matchadd()| + because it does not require to handle regular expressions and + sets buffer line boundaries to redraw screen. It is supposed + to be used when fast match additions and deletions are + required, for example to highlight matching parentheses. + + The list {pos} can contain one of these items: + - A number. This whole line will be highlighted. The first + line has number 1. + - A list with one number, e.g., [23]. The whole line with this + number will be highlighted. + - A list with two numbers, e.g., [23, 11]. The first number is + the line number, the second one is the column number (first + column is 1, the value must correspond to the byte index as + |col()| would return). The character at this position will + be highlighted. + - A list with three numbers, e.g., [23, 11, 3]. As above, but + the third number gives the length of the highlight in bytes. + + The maximum number of positions is 8. + + Example: > + :highlight MyGroup ctermbg=green guibg=green + :let m = matchaddpos("MyGroup", [[23, 24], 34]) +< Deletion of the pattern: > + :call matchdelete(m) + +< Matches added by |matchaddpos()| are returned by + |getmatches()| with an entry "pos1", "pos2", etc., with the + value a list like the {pos} item. + These matches cannot be set via |setmatches()|, however they + can still be deleted by |clearmatches()|. + matcharg({nr}) *matcharg()* Selects the {nr} match item, as set with a |:match|, |:2match| or |:3match| command. @@ -4430,30 +4575,6 @@ nr2char({expr}[, {utf8}]) *nr2char()* characters. nr2char(0) is a real NUL and terminates the string, thus results in an empty string. - *getpid()* -getpid() Return a Number which is the process ID of the Vim process. - On Unix and MS-Windows this is a unique number, until Vim - exits. On MS-DOS it's always zero. - - *getpos()* -getpos({expr}) Get the position for {expr}. For possible values of {expr} - see |line()|. - The result is a |List| with four numbers: - [bufnum, lnum, col, off] - "bufnum" is zero, unless a mark like '0 or 'A is used, then it - is the buffer number of the mark. - "lnum" and "col" are the position in the buffer. The first - column is 1. - The "off" number is zero, unless 'virtualedit' is used. Then - it is the offset in screen columns from the start of the - character. E.g., a position within a <Tab> or after the last - character. - This can be used to save and restore the cursor position: > - let save_cursor = getpos(".") - MoveTheCursorAround - call setpos('.', save_cursor) -< Also see |setpos()|. - or({expr}, {expr}) *or()* Bitwise OR on the two arguments. The arguments are converted to a number. A List, Dict or Float argument causes an error. @@ -5252,8 +5373,9 @@ setpos({expr}, {list}) . the cursor 'x mark x - {list} must be a |List| with four numbers: + {list} must be a |List| with four or five numbers: [bufnum, lnum, col, off] + [bufnum, lnum, col, off, curswant] "bufnum" is the buffer number. Zero can be used for the current buffer. Setting the cursor is only possible for @@ -5271,13 +5393,26 @@ setpos({expr}, {list}) character. E.g., a position within a <Tab> or after the last character. + The "curswant" number is only used when setting the cursor + position. It sets the preferred column for when moving the + cursor vertically. When the "curswant" number is missing the + preferred column is not set. When it is present and setting a + mark position it is not used. + + Note that for '< and '> changing the line number may result in + the marks to be effectively be swapped, so that '< is always + before '>. + Returns 0 when the position could be set, -1 otherwise. An error message is given if {expr} is invalid. - Also see |getpos()| + Also see |getpos()| and |getcurpos()|. This does not restore the preferred column for moving - vertically. See |winrestview()| for that. + vertically; if you set the cursor position with this, |j| and + |k| motions will jump to previous columns! Use |cursor()| to + also set the preferred column. Also see the "curswant" key in + |winrestview()|. setqflist({list} [, {action}]) *setqflist()* @@ -5329,6 +5464,8 @@ setqflist({list} [, {action}]) *setqflist()* *setreg()* setreg({regname}, {value} [,{options}]) Set the register {regname} to {value}. + {value} may be any value returned by |getreg()|, including + a |List|. If {options} contains "a" or {regname} is upper case, then the value is appended. {options} can also contain a register type specification: @@ -5341,10 +5478,15 @@ setreg({regname}, {value} [,{options}]) in the longest line (counting a <Tab> as 1 character). If {options} contains no register settings, then the default - is to use character mode unless {value} ends in a <NL>. - Setting the '=' register is not possible, but you can use > - :let @= = var_expr -< Returns zero for success, non-zero for failure. + is to use character mode unless {value} ends in a <NL> for + string {value} and linewise mode for list {value}. Blockwise + mode is never selected automatically. + Returns zero for success, non-zero for failure. + + *E883* + Note: you may not use |List| containing more then one item to + set search and expression registers. Lists containing no + items act like empty strings. Examples: > :call setreg(v:register, @*) @@ -5352,8 +5494,11 @@ setreg({regname}, {value} [,{options}]) :call setreg('a', "1\n2\n3", 'b5') < This example shows using the functions to save and restore a - register. > - :let var_a = getreg('a', 1) + register (note: you may not reliably restore register value + without using the third argument to |getreg()| as without it + newlines are represented as newlines AND Nul bytes are + represented as newlines as well, see |NL-used-for-Nul|). > + :let var_a = getreg('a', 1, 1) :let var_amode = getregtype('a') .... :call setreg('a', var_a, var_amode) @@ -5483,11 +5628,20 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702* If you want a list to remain unmodified make a copy first: > :let sortedlist = sort(copy(mylist)) -< Uses the string representation of each item to sort on. - Numbers sort after Strings, |Lists| after Numbers. - For sorting text in the current buffer use |:sort|. - When {func} is given and it is one then case is ignored. +< When {func} is omitted, is empty or zero, then sort() uses the + string representation of each item to sort on. Numbers sort + after Strings, |Lists| after Numbers. For sorting text in the + current buffer use |:sort|. + + When {func} is given and it is is '1' or 'i' then case is + ignored. + + When {func} is given and it is 'n' then all items will be + sorted numerical (Implementation detail: This uses the + strtod() function to parse numbers, Strings, Lists, Dicts and + Funcrefs will be considered as being 0). + When {func} is a |Funcref| or a function name, this function is called to compare items. The function is invoked with two items as argument and must return zero if they are equal, 1 or @@ -5497,6 +5651,11 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702* {dict} is for functions with the "dict" attribute. It will be used to set the local variable "self". |Dictionary-function| + The sort is stable, items which compare equal (as number or as + string) will keep their relative position. E.g., when sorting + on numbers, text strings will sort next to each other, in the + same order as they were originally. + Also see |uniq()|. Example: > @@ -5765,12 +5924,23 @@ strwidth({expr}) *strwidth()* Ambiguous, this function's return value depends on 'ambiwidth'. Also see |strlen()|, |strdisplaywidth()| and |strchars()|. -submatch({nr}) *submatch()* +submatch({nr}[, {list}]) *submatch()* Only for an expression in a |:substitute| command or substitute() function. Returns the {nr}'th submatch of the matched text. When {nr} is 0 the whole matched text is returned. + Note that a NL in the string can stand for a line break of a + multi-line match or a NUL character in the text. Also see |sub-replace-expression|. + + If {list} is present and non-zero then submatch() returns + a list of strings, similar to |getline()| with two arguments. + NL characters in the text represent NUL characters in the + text. + Only returns more than one item for |:substitute|, inside + |substitute()| this list will always contain one or zero + items, since there are no real line breaks. + Example: > :s/\d\+/\=submatch(0) + 1/ < This finds the first number in the line and adds one to it. @@ -5903,23 +6073,36 @@ synstack({lnum}, {col}) *synstack()* valid positions. system({expr} [, {input}]) *system()* *E677* - Get the output of the shell command {expr}. - When {input} is given, this string is written to a file and - passed as stdin to the command. The string is written as-is, - you need to take care of using the correct line separators - yourself. Pipes are not used. - Note: Use |shellescape()| to escape special characters in a - command argument. Newlines in {expr} may cause the command to - fail. The characters in 'shellquote' and 'shellxquote' may - also cause trouble. + Get the output of the shell command {expr} as a string. See + |systemlist()| to get the output as a List. + + When {input} is given and is a string this string is written + to a file and passed as stdin to the command. The string is + written as-is, you need to take care of using the correct line + separators yourself. + If {input} is given and is a |List| it is written to the file + in a way |writefile()| does with {binary} set to "b" (i.e. + with a newline between each list item with newlines inside + list items converted to NULs). + Pipes are not used. + + Note: Use |shellescape()| or |::S| with |expand()| or + |fnamemodify()| to escape special characters in a command + argument. Newlines in {expr} may cause the command to fail. + The characters in 'shellquote' and 'shellxquote' may also + cause trouble. This is not to be used for interactive commands. The result is a String. Example: > :let files = system("ls " . shellescape(expand('%:h'))) + :let files = system('ls ' . expand('%:h:S')) < To make the result more system-independent, the shell output is filtered to replace <CR> with <NL> for Macintosh, and <CR><NL> with <NL> for DOS-like systems. + To avoid the string being truncated at a NUL, all NUL + characters are replaced with SOH (0x01). + The command executed is constructed using several options: 'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote' ({tmp} is an automatically generated file name). @@ -5939,6 +6122,16 @@ system({expr} [, {input}]) *system()* *E677* Use |:checktime| to force a check. +systemlist({expr} [, {input}]) *systemlist()* + Same as |system()|, but returns a |List| with lines (parts of + output separated by NL) with NULs transformed into NLs. Output + is the same as |readfile()| will output with {binary} argument + set to "b". + + Returns an empty string on error, so be careful not to run + into |E706|. + + tabpagebuflist([{arg}]) *tabpagebuflist()* The result is a |List|, where each item is the number of the buffer associated with each window in the current tab page. @@ -6161,6 +6354,14 @@ undotree() *undotree()* blocks. Each item may again have an "alt" item. +uniq({list} [, {func} [, {dict}]]) *uniq()* *E882* + Remove second and succeeding copies of repeated adjacent + {list} items in-place. Returns {list}. If you want a list + to remain unmodified make a copy first: > + :let newlist = uniq(copy(mylist)) +< The default compare function uses the string representation of + each item. For the use of {func} and {dict} see |sort()|. + values({dict}) *values()* Return a |List| with all the values of {dict}. The |List| is in arbitrary order. @@ -6290,6 +6491,16 @@ winrestcmd() Returns a sequence of |:resize| commands that should restore winrestview({dict}) Uses the |Dictionary| returned by |winsaveview()| to restore the view of the current window. + Note: The {dict} does not have to contain all values, that are + returned by |winsaveview()|. If values are missing, those + settings won't be restored. So you can use: > + :call winrestview({'curswant': 4}) +< + This will only set the curswant value (the column the cursor + wants to move on vertical movements) of the cursor to column 5 + (yes, that is 5), while all other settings will remain the + same. This is useful, if you set the cursor position manually. + If you have changed the values the result is unpredictable. If the window size changed the result won't be the same. @@ -6301,10 +6512,12 @@ winsaveview() Returns a |Dictionary| that contains information to restore buffer and you want to go back to the original view. This does not save fold information. Use the 'foldenable' option to temporarily switch off folding, so that folds are - not opened when moving around. + not opened when moving around. This may have side effects. The return value includes: lnum cursor line number - col cursor column + col cursor column (Note: the first column + zero, as opposed to what getpos() + returns) coladd cursor column offset for 'virtualedit' curswant column for vertical movement topline first line in the window @@ -6355,7 +6568,7 @@ xor({expr}, {expr}) *xor()* *feature-list* -There are three types of features: +There are four types of features: 1. Features that are only supported when they have been enabled when Vim was compiled |+feature-list|. Example: > :if has("cindent") @@ -6363,11 +6576,21 @@ There are three types of features: Example: > :if has("gui_running") < *has-patch* -3. Included patches. First check |v:version| for the version of Vim. - Then the "patch123" feature means that patch 123 has been included for - this version. Example (checking version 6.2.148 or later): > +3. Included patches. The "patch123" feature means that patch 123 has been + included. Note that this form does not check the version of Vim, you need + to inspect |v:version| for that. + Example (checking version 6.2.148 or later): > :if v:version > 602 || v:version == 602 && has("patch148") -< Note that it's possible for patch 147 to be omitted even though 148 is +< Note that it's possible for patch 147 to be omitted even though 148 is + included. + +4. Beyond a certain version or at a certain version and including a specific + patch. The "patch-7.4.237" feature means that the Vim version is 7.5 or + later, or it is version 7.4 and patch 237 was included. + Note that this only works for patch 7.4.237 and later, before that you + need to use the example above that checks v:version. Example: > + :if has("patch-7.4.248") +< Note that it's possible for patch 147 to be omitted even though 148 is included. acl Compiled with |ACL| support. @@ -6399,6 +6622,7 @@ dialog_con Compiled with console dialog support. dialog_gui Compiled with GUI dialog support. diff Compiled with |vimdiff| and 'diff' support. digraphs Compiled with support for digraphs. +directx Compiled with support for Direct-X and 'renderoptions'. dnd Compiled with support for the "~ register |quote_~|. dos16 16 bits DOS version of Vim. dos32 32 bits DOS (DJGPP) version of Vim. @@ -6589,6 +6813,8 @@ can only be called from within the script and from functions, user commands and autocommands defined in the script. It is also possible to call the function from a mapping defined in the script, but then |<SID>| must be used instead of "s:" when the mapping is expanded outside of the script. +There are only script-local functions, no buffer-local or window-local +functions. *:fu* *:function* *E128* *E129* *E123* :fu[nction] List all functions and their arguments. @@ -6612,11 +6838,15 @@ last defined. Example: > < See |:verbose-cmd| for more information. - *E124* *E125* *E853* + *E124* *E125* *E853* *E884* :fu[nction][!] {name}([arguments]) [range] [abort] [dict] Define a new function by the name {name}. The name must be made of alphanumeric characters and '_', and - must start with a capital or "s:" (see above). + must start with a capital or "s:" (see above). Note + that using "b:" or "g:" is not allowed. (since patch + 7.4.260 E884 is given if the function name has a colon + in the name, e.g. for "foo:bar()". Before that patch + no error was given). {name} can also be a |Dictionary| entry that is a |Funcref|: > @@ -7309,6 +7539,8 @@ This does NOT work: > {pattern}, so long as it does not have a special meaning (e.g., '|' or '"') and doesn't occur inside {pattern}. + Information about the exception is available in + |v:exception|. Also see |throw-variables|. NOTE: It is not reliable to ":catch" the TEXT of an error message because it may vary in different locales. @@ -7452,13 +7684,22 @@ This does NOT work: > for Vim commands, |shellescape()| for |:!| commands. Examples: > :execute "e " . fnameescape(filename) - :execute "!ls " . shellescape(expand('%:h'), 1) + :execute "!ls " . shellescape(filename, 1) < Note: The executed string may be any command-line, but - you cannot start or end a "while", "for" or "if" - command. Thus this is illegal: > - :execute 'while i > 5' - :execute 'echo "test" | break' + starting or ending "if", "while" and "for" does not + always work, because when commands are skipped the + ":execute" is not evaluated and Vim loses track of + where blocks start and end. Also "break" and + "continue" should not be inside ":execute". + This example does not work, because the ":execute" is + not evaluated and Vim does not see the "while", and + gives an error for finding an ":endwhile": > + :if 0 + : execute 'while i > 5' + : echo "test" + : endwhile + :endif < It is allowed to have a "while" or "if" command completely in the executed string: > From 6713997cdae2bf64eeebe6a9e76aff933eef870b Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 14 Aug 2014 12:13:55 +0900 Subject: [PATCH 585/783] if_pyth --- doc/if_pyth.jax | 113 ++++++++++++++++++++++++++++++++++++++++++-- en/if_pyth.txt | 123 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 225 insertions(+), 11 deletions(-) diff --git a/doc/if_pyth.jax b/doc/if_pyth.jax index 5f5a55ddb..743f9810f 100644 --- a/doc/if_pyth.jax +++ b/doc/if_pyth.jax @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim バージョン 7.4. Last change: 2013 May 25 +*if_pyth.txt* For Vim バージョン 7.4. Last change: 2014 Jul 23 VIMリファレンスマニュアル by Paul Moore @@ -173,6 +173,22 @@ vim.bindeval(str) *python-bindeval* や辞書 (|Dictionary|) を変更したり、Vim の関数 (|Funcref|) を呼び出し たりできます。 +vim.strwidth(str) *python-strwidth* + |strwidth()| と同じ。str の画面上の幅を数値で返す。タブ文字は 1 幅とし + てカウントされる。 + +vim.foreach_rtp(callable) *python-foreach_rtp* + 'runtimepath' の各パスについてコーラブル (callable) を呼び出す。コーラ + ブルが None 以外の値を返すか、例外が発生するか、パスの最後まで処理が進 + むと停止する。コーラブルが None 以外の値を返して停止した場合は、 + vim.foreach_rtp 関数はその値を返す。 + +vim.chdir(*args, **kwargs) *python-chdir* +vim.fchdir(*args, **kwargs) *python-fchdir* + os.chdir、os.fchdir を実行し、Vim にそのことを通知する。 + Note: これらの関数は直接は使用しない。代わりに os.chdir と os.fchdir + を使う。os.fchdir が存在しない場合の vim.fchdir の動作は未定義。 + "vim" モジュールのエラーオブジェクト vim.error *python-error* @@ -282,6 +298,86 @@ Pythonからの出力 *python-output* ず、プログラムをクラッシュさせる可能性があります。これはたぶん修正され るべき問題です。 + *python2-directory* *python3-directory* *pythonx-directory* +Python における 'runtimepath' の処理 *python-special-path* + +Python では、'runtimepath' のパスのリストを使う代わりに、vim.VIM_SPECIAL_PATH +という特別なディレクトリが使われます。このディレクトリが sys.path 内で使われる +とき、そして vim.path_hooks が sys.path_hooks 内で使われるとき、'runtimepath' +の各パス {rtp} に対して {rtp}/python2 (or python3) と {rtp}/pythonx (両バー +ジョンで読み込まれる) のモジュールがロードされます。 + +実装は以下のようになっています。ただし実際は C で書かれています: > + + from imp import find_module, load_module + import vim + import sys + + class VimModuleLoader(object): + def __init__(self, module): + self.module = module + + def load_module(self, fullname, path=None): + return self.module + + def _find_module(fullname, oldtail, path): + idx = oldtail.find('.') + if idx > 0: + name = oldtail[:idx] + tail = oldtail[idx+1:] + fmr = find_module(name, path) + module = load_module(fullname[:-len(oldtail)] + name, *fmr) + return _find_module(fullname, tail, module.__path__) + else: + fmr = find_module(fullname, path) + return load_module(fullname, *fmr) + + # It uses vim module itself in place of VimPathFinder class: it does not + # matter for python which object has find_module function attached to as + # an attribute. + class VimPathFinder(object): + @classmethod + def find_module(cls, fullname, path=None): + try: + return VimModuleLoader(_find_module(fullname, fullname, path or vim._get_paths())) + except ImportError: + return None + + @classmethod + def load_module(cls, fullname, path=None): + return _find_module(fullname, fullname, path or vim._get_paths()) + + def hook(path): + if path == vim.VIM_SPECIAL_PATH: + return VimPathFinder + else: + raise ImportError + + sys.path_hooks.append(hook) + +vim.VIM_SPECIAL_PATH *python-VIM_SPECIAL_PATH* + Vim のパスフックに関連付けられた文字列定数。Vim によって設定されたパス + フックが vim.VIM_SPECIAL_PATH 定数以外のパスに対して呼び出された場合は + ImportError が発生します。そうでなければ特殊ローダが使用されます。 + + Note: この定数の値を直接使用しないこと。常に vim.VIM_SPECIAL_PATH オブ + ジェクトを使用してください。 + +vim.find_module(...) *python-find_module* +vim.path_hook(path) *python-path_hook* + 上述のパスフックの実装に使われるメソッドとオブジェクト。sys.meta_path + で vim.path_hook を使って何かをするようなことがなければ、これらを直接 + 使用することはないでしょう。これらのオブジェクトが Vim の将来のバー + ジョンでも存在するかどうかは保証されません。 + +vim._get_paths *python-_get_paths* + パスフックで検索されるパスのリストを返すメソッド。将来のバージョンのこ + とを考えるならこのメソッドに依存すべきではありません。デバッグなどに使 + います。 + + 'runtimepath' の各パスに対して {rtp}/python2 (or {rtp}/python3) と + {rtp}/pythonx ディレクトリのリストを返します。 + ============================================================================== 3. バッファオブジェクト *python-buffer* @@ -324,6 +420,8 @@ Pythonからの出力 *python-output* |BufFilePre| と |BufFilePost| イベントが発生します。 b.number バッファ番号。|python-buffers| のキーとして使えます。 読み込み専用。 + b.valid True または False。 関連バッファが破棄されるとバッファ + オブジェクトは無効となる。 バッファオブジェクトのメソッドは次の通りです: b.append(str) バッファに行を追加 @@ -427,6 +525,8 @@ Range オブジェクトの型は vim モジュールの "Range" 属性で取得 row, col (読み専用) スクリーン上でのウィンドウの表示位置。値は 0 から始まります。 tabpage (読み専用) ウィンドウのタブページ。 + valid (read-write) True または False。 関連ウィンドウが閉じられる + とウィンドウオブジェクトは無効になる。 heightはスクリーンが水平方向に分割されているときのみ書き込み可能です。 widthはスクリーンが垂直方向に分割されているときのみ書き込み可能です。 @@ -488,9 +588,9 @@ vim.Dictionary オブジェクト *python-Dictionary* 辞書からキーを取り除き、その値を返す。キーが存在しない場合 は、default が指定されていたらその値を返す。指定されていな ければ KeyError 例外が発生する。 - popitem(key) - 辞書からキーを取り除き、そのキーと値のペアを返す。返される - キーは新しいオブジェクトである。 + popitem() + 辞書からランダムにキーを取り除き (key, value) のペアを返 + す。 has_key(key) 辞書がキーを持っているかを確認する。`key in dict` と同じ。 @@ -629,6 +729,11 @@ Vim の動作はコンフィグを実行したシステムに依存します。P 3. コンフィグ実行後に auto/config.h の PY_NO_RTLD_GLOBAL の定義を削除する。こ れは Vim がクラッシュするようになるでしょう。 + *E880* +Python 内で SystemExit 例外を発生させても Vim は終了しない。次のようにする: > + :py vim.command("qall!") +< + *has-python* どのバージョンの Python が利用可能になっているかは次のコマンドで確認できます: > diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 9295ad9af..4ed8eac74 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.4. Last change: 2013 May 25 +*if_pyth.txt* For Vim version 7.4. Last change: 2014 Jul 23 VIM REFERENCE MANUAL by Paul Moore @@ -175,7 +175,24 @@ vim.eval(str) *python-eval* vim.bindeval(str) *python-bindeval* Like |python-eval|, but returns special objects described in |python-bindeval-objects|. These python objects let you modify (|List| - or |Dictionary|) or call (|Funcref|) vim objecs. + or |Dictionary|) or call (|Funcref|) vim objects. + +vim.strwidth(str) *python-strwidth* + Like |strwidth()|: returns number of display cells str occupies, tab + is counted as one cell. + +vim.foreach_rtp(callable) *python-foreach_rtp* + Call the given callable for each path in 'runtimepath' until either + callable returns something but None, the exception is raised or there + are no longer paths. If stopped in case callable returned non-None, + vim.foreach_rtp function returns the value returned by callable. + +vim.chdir(*args, **kwargs) *python-chdir* +vim.fchdir(*args, **kwargs) *python-fchdir* + Run os.chdir or os.fchdir, then all appropriate vim stuff. + Note: you should not use these functions directly, use os.chdir and + os.fchdir instead. Behavior of vim.fchdir is undefined in case + os.fchdir does not exist. Error object of the "vim" module @@ -209,7 +226,7 @@ vim.windows *python-windows* :py w in vim.windows # Membership test :py n = len(vim.windows) # Number of elements :py for w in vim.windows: # Sequential access -< Note: vim.windows object always accesses current tab page,. +< Note: vim.windows object always accesses current tab page. |python-tabpage|.windows objects are bound to parent |python-tabpage| object and always use windows from that tab page (or throw vim.error in case tab page was deleted). You can keep a reference to both @@ -290,6 +307,88 @@ Output from Python *python-output* supported, and may cause the program to crash. This should probably be fixed. + *python2-directory* *python3-directory* *pythonx-directory* +Python 'runtimepath' handling *python-special-path* + +In python vim.VIM_SPECIAL_PATH special directory is used as a replacement for +the list of paths found in 'runtimepath': with this directory in sys.path and +vim.path_hooks in sys.path_hooks python will try to load module from +{rtp}/python2 (or python3) and {rtp}/pythonx (for both python versions) for +each {rtp} found in 'runtimepath'. + +Implementation is similar to the following, but written in C: > + + from imp import find_module, load_module + import vim + import sys + + class VimModuleLoader(object): + def __init__(self, module): + self.module = module + + def load_module(self, fullname, path=None): + return self.module + + def _find_module(fullname, oldtail, path): + idx = oldtail.find('.') + if idx > 0: + name = oldtail[:idx] + tail = oldtail[idx+1:] + fmr = find_module(name, path) + module = load_module(fullname[:-len(oldtail)] + name, *fmr) + return _find_module(fullname, tail, module.__path__) + else: + fmr = find_module(fullname, path) + return load_module(fullname, *fmr) + + # It uses vim module itself in place of VimPathFinder class: it does not + # matter for python which object has find_module function attached to as + # an attribute. + class VimPathFinder(object): + @classmethod + def find_module(cls, fullname, path=None): + try: + return VimModuleLoader(_find_module(fullname, fullname, path or vim._get_paths())) + except ImportError: + return None + + @classmethod + def load_module(cls, fullname, path=None): + return _find_module(fullname, fullname, path or vim._get_paths()) + + def hook(path): + if path == vim.VIM_SPECIAL_PATH: + return VimPathFinder + else: + raise ImportError + + sys.path_hooks.append(hook) + +vim.VIM_SPECIAL_PATH *python-VIM_SPECIAL_PATH* + String constant used in conjunction with vim path hook. If path hook + installed by vim is requested to handle anything but path equal to + vim.VIM_SPECIAL_PATH constant it raises ImportError. In the only other + case it uses special loader. + + Note: you must not use value of this constant directly, always use + vim.VIM_SPECIAL_PATH object. + +vim.find_module(...) *python-find_module* +vim.path_hook(path) *python-path_hook* + Methods or objects used to implement path loading as described above. + You should not be using any of these directly except for vim.path_hook + in case you need to do something with sys.meta_path. It is not + guaranteed that any of the objects will exist in the future vim + versions. + +vim._get_paths *python-_get_paths* + Methods returning a list of paths which will be searched for by path + hook. You should not rely on this method being present in future + versions, but can use it for debugging. + + It returns a list of {rtp}/python2 (or {rtp}/python3) and + {rtp}/pythonx directories for each {rtp} in 'runtimepath'. + ============================================================================== 3. Buffer objects *python-buffer* @@ -330,6 +429,8 @@ The buffer object attributes are: |BufFilePost| autocommands are launched. b.number Buffer number. Can be used as |python-buffers| key. Read-only. + b.valid True or False. Buffer object becomes invalid when + corresponding buffer is wiped out. The buffer object methods are: b.append(str) Append a line to the buffer @@ -434,6 +535,8 @@ Window attributes are: row, col (read-only) On-screen window position in display cells. First position is zero. tabpage (read-only) Window tab page. + valid (read-write) True or False. Window object becomes invalid + when corresponding window is closed. The height attribute is writable only if the screen is split horizontally. The width attribute is writable only if the screen is split vertically. @@ -457,6 +560,8 @@ Tab page attributes are: windows Like |python-windows|, but for current tab page. vars The tab page |t:| variables. window Current tabpage window. + valid True or False. Tab page object becomes invalid when + corresponding tab page is closed. TabPage object type is available using "TabPage" attribute of vim module. @@ -495,10 +600,9 @@ vim.Dictionary object *python-Dictionary* Remove specified key from dictionary and return corresponding value. If key is not found and default is given returns the default, otherwise raises KeyError. - popitem(key) - Remove specified key from dictionary and return a pair - with it and the corresponding value. Returned key is a new - object. + popitem() + Remove random key from dictionary and return (key, value) + pair. has_key(key) Check whether dictionary contains specified key, similar to `key in dict`. @@ -637,6 +741,11 @@ To work around such problems there are these options: 3. You undefine PY_NO_RTLD_GLOBAL in auto/config.h after configuration. This may crash Vim though. + *E880* +Raising SystemExit exception in python isn't endorsed way to quit vim, use: > + :py vim.command("qall!") +< + *has-python* You can test what Python version is available with: > if has('python') From d066d748556eae5e33ea371b0554284c7d740014 Mon Sep 17 00:00:00 2001 From: shiracha <shiracha.rikyu@gmail.com> Date: Thu, 14 Aug 2014 17:12:39 +0900 Subject: [PATCH 586/783] =?UTF-8?q?eval.jax=E3=81=AE=E8=AA=A4=E5=AD=971?= =?UTF-8?q?=E3=81=8B=E6=89=80=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/eval.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index 2a3773f1c..a31b9d118 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6982,7 +6982,7 @@ Vimはこれを見つけると、まず波括弧の中の式を評価し、そ :let i = 0 :let [i, x[i]] = [1, 2] :echo x -< 子の結果は[0, 2]となる。 +< この結果は[0, 2]となる。 :let [{name1}, {name2}, ...] .= {expr1} :let [{name1}, {name2}, ...] += {expr1} From b9be046a9b208e45121bce3664d118708ec7979e Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 20 Aug 2014 20:38:43 +0900 Subject: [PATCH 587/783] Add link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 480195bbb..2ac0a9959 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,4 @@ Vimの付属ドキュメントを日本語に翻訳するためのプロジェ - HTML版 http://vim-jp.org/vimdoc-ja/ - issueトラッカー https://github.com/vim-jp/vimdoc-ja/issues - メーリングリスト http://groups.google.com/group/vimdoc-ja +- Wiki https://github.com/vim-jp/vimdoc-ja/wiki From bb890f83e7f683f4d57fd3ce10164e9b819bcc3e Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 23 Aug 2014 10:19:19 +0900 Subject: [PATCH 588/783] Fix tag --- doc/eval.jax | 2 +- en/eval.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index a31b9d118..68dabb0d8 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -3268,7 +3268,7 @@ getcurpos() カーソルの位置を返す。これは getpos('.') に似てい let save_cursor = getcurpos() MoveTheCursorAround call setpos('.', save_cursor) - +< *getcwd()* getcwd() 結果は文字列で、現在のディレクトリ名。 diff --git a/en/eval.txt b/en/eval.txt index 62aa16704..91ba0daa8 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -3359,7 +3359,7 @@ getcurpos() Get the position of the cursor. This is like getpos('.'), but let save_cursor = getcurpos() MoveTheCursorAround call setpos('.', save_cursor) - +< *getcwd()* getcwd() The result is a String, which is the name of the current working directory. From c9c3c7f8ab7345f5a9cd1fb4f438f6e3688a0d06 Mon Sep 17 00:00:00 2001 From: pocke <p.ck.t22@gmail.com> Date: Sat, 23 Aug 2014 15:43:36 +0900 Subject: [PATCH 589/783] Fix abbreviation translation --- doc/tips.jax | 4 ++-- doc/vi_diff.jax | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/tips.jax b/doc/tips.jax index ebc2c7363..76868ca20 100644 --- a/doc/tips.jax +++ b/doc/tips.jax @@ -203,8 +203,8 @@ xterm の termcap エントリ (/etc/termcap にあります) と xterm の term ============================================================================== ありがちなタイプミスを修正する *type-mistakes* -しょっちゅう間違ってタイプする単語がいくつかあれば、略記を修正するのに利用しま -しょう。例えば: > +しょっちゅう間違ってタイプする単語がいくつかあれば、短縮入力を修正するのに利用 +しましょう。例えば: > :ab teh the :ab fro for diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index ee9bda229..bc079e0fd 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -598,7 +598,7 @@ Vi での "p" と "P" コマンドは挿入されるテキストが一行より は2つのキーの意味を交換するのに使うと便利です。":cmap", ":cunmap", ":cnoremap" はコマンドライン編集でのみ動作するマッピングです。":imap", ":iunmap", ":inoremap" は挿入モードのみで動作するマッピングを定義できます。同様なコマンド -は略記にもあります: ":noreabbrev", ":iabbrev", ":cabbrev", ":iunabbrev", +は短縮入力にもあります: ":noreabbrev", ":iabbrev", ":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev" Vi では ":map foo bar" は前の ":map bug foo" というマッピングを削除していまし @@ -668,9 +668,9 @@ Vi と Vim の両方で ":substitute" コマンドで CTRL-M を使うことで いると挿入の初めをこえてバックスペースすることができます。 'paste' オプションがセットされているといくつかのオプションが解除され挿入モード -でのマッピングと略記が使用不可になります。こうすることでウィンドウシステムでテ -キストを貼り付けるときに不測の結果が生じるのを避けることができます。'paste' オ -プションが解除されればオプションの前の値が復元されます。 +でのマッピングと短縮入力が使用不可になります。こうすることでウィンドウシステム +でテキストを貼り付けるときに不測の結果が生じるのを避けることができます。 +'paste' オプションが解除されればオプションの前の値が復元されます。 CTRL-T/CTRL-D はカーソルがどこの桁位置にあっても常に現在の行のインデントを挿 入/削除します。 From 950684b090145e45bcd411d097491692d3613d29 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 24 Aug 2014 01:08:23 +0900 Subject: [PATCH 590/783] Improve translation --- doc/change.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/change.jax b/doc/change.jax index b98347098..139c01dd0 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -74,7 +74,7 @@ *:d* *:de* *:del* *:delete* *:dl* *:dp* :[range]d[elete] [x] [range] 行 (既定値: 現在行) を [レジスタ x に入れ] 削 除する。 - Note これらの奇妙な省略形: + Note これらの変な短縮入力: :dl delete と list :dell 同上 :delel 同上 From a19391dd130e5eb886eca6378c2a77eead843dac Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 24 Aug 2014 01:43:42 +0900 Subject: [PATCH 591/783] Fix incorrect translation --- doc/usr_20.jax | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/usr_20.jax b/doc/usr_20.jax index 628b34fce..f85bdd3c0 100644 --- a/doc/usr_20.jax +++ b/doc/usr_20.jax @@ -142,8 +142,9 @@ Vim スクリプトを書くときはコマンドの長い名前を使うこと おけば、後で変更しようと思ったときに読むのが楽です。しかし、":w" (":write") や ":r" (":read") のような頻繁に使われるコマンドなら短縮形を使っても構わないでしょ う。 -特にややこしいのは ":end" です。これは ":endif" の短縮形ですが、":endwhile" や -":endfunction" と誤解しやすいので、常に長い名前を使うようにしましょう。 +特にややこしいのは ":end" で、これは ":endif"、":endwhile" あるいは +":endfunction" の短縮であるかもしれません。そのため、常に長い名前を使うように +しましょう。 オプションの短い名前 From f759aa63599400b124374a90dc73673be3ff817d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 24 Aug 2014 01:45:52 +0900 Subject: [PATCH 592/783] Add missing tags --- doc/eval.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index 68dabb0d8..fab5c8b80 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -7084,7 +7084,7 @@ Vimはこれを見つけると、まず波括弧の中の式を評価し、そ 内部変数{name}をアンロックする。|:lockvar|の逆を行う。 -:if {expr1} *:if* *:endif* *:en* +:if {expr1} *:if* *:endif* *:en* *E171* *E579* *E580* :en[dif] {expr1}が非ゼロと評価された場合に、対応する ":else" か ":endif" までの命令を実行する。 From 6bc03ee69b43e6f750e05ff33621c6b49e9640a0 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 24 Aug 2014 02:38:58 +0900 Subject: [PATCH 593/783] Add missing tags --- doc/editing.jax | 2 +- doc/eval.jax | 2 +- doc/recover.jax | 6 +++--- doc/various.jax | 2 +- doc/windows.jax | 7 ++++--- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/doc/editing.jax b/doc/editing.jax index b04bac439..c1f766fc7 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -603,7 +603,7 @@ Vim の開始時に複数のファイル名を与えると、それらは引数 |++opt| と |+cmd| も参照。 {Vi にはない} -:[count]arga[dd] {name} .. *:arga* *:argadd* +:[count]arga[dd] {name} .. *:arga* *:argadd* *E479* 引数リストに {name} を追加する。 [count] が省かれると {name} は引数リストの現在の項目の 次に挿入される。指定されると [count] 番目の項目の次に diff --git a/doc/eval.jax b/doc/eval.jax index fab5c8b80..dceb11aa8 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6875,7 +6875,7 @@ Vimはこれを見つけると、まず波括弧の中の式を評価し、そ ============================================================================== 7. コマンド *expression-commands* -:let {var-name} = {expr1} *:let* +:let {var-name} = {expr1} *:let* *E18* 内部変数{var-name}に式{expr1}の結果をセットする。変数 の型は{expr1}によって決定される。{var-name}という変数 がまだ存在しない場合、新たに作成される。 diff --git a/doc/recover.jax b/doc/recover.jax index adf838fbe..cfa86a559 100644 --- a/doc/recover.jax +++ b/doc/recover.jax @@ -121,7 +121,7 @@ Amigaでは、回復可能なramディスクを使えるが、それが100%働 行った編集がスワップファイルに書きこまれたかを確認するには、次のコマンドを使用 する: - *:pre* *:preserve* + *:pre* *:preserve* *E313* *E314* :pre[serve] 全てのバッファの全てのテキストをスワップファイルに書き 込む。回復のためにオリジナルが必要とされることはなくな る。 @@ -156,7 +156,7 @@ Unix では同一のファイルに2つの名前をつけることができる 存することはできない。 ============================================================================== -2. リカバリー *recovery* +2. リカバリー *recovery* *E308* *E311* 基本的なファイルの回復方法はユーザーマニュアルの|usr_11.txt|を参照すること。 @@ -167,7 +167,7 @@ Unix では同一のファイルに2つの名前をつけることができる 全てが済む。 recoverコマンドにはファイル名かスワップファイル名を渡すことができる: - *:rec* *:recover* + *:rec* *:recover* *E305* *E306* *E307* :rec[over] [file] スワップファイルから[file]を回復するよう試みる。もし [file]が与えられていない場合は、現在のバッファの名前が 用いられる。現在のバッファの内容は失われる。このコマン diff --git a/doc/various.jax b/doc/various.jax index e25c45b4f..4265f170d 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -337,7 +337,7 @@ N *+dialog_gui* |:confirm| のGUIダイアログをサポート N *+dialog_con* |:confirm| のコンソールダイアログをサポート N *+dialog_con_gui* |:confirm| GUIとコンソールダイアログをサポート N *+diff* |vimdiff|と'diff' -N *+digraphs* |digraphs| +N *+digraphs* |digraphs| *E196* m *+directx* Win32 GUI のみ: DirectX と |'renderoptions'| *+dnd* "~レジスタ |quote_~|を使ったDnDのサポート B *+emacs_tags* |emacs-tags| ファイル diff --git a/doc/windows.jax b/doc/windows.jax index 1930821f9..169286760 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -1089,10 +1089,11 @@ CTRL-W g } *CTRL-W_g}* ウィンドウを分割しバッファリストの {bufname} バッファを編集す る。これはバッファリストにないバッファも 'buflisted' フラグを 設定することなく編集する。 + Note: やりたいことがバッファの分割である場合、別の名前でコピー + を作成し、この方法で行うことができる: > + :w foobar | sp # - - *:bn* *:bnext* -:[N]bn[ext][!] [N] +:[N]bn[ext][!] [N] *:bn* *:bnext* *E87* バッファリスト中の[N]個先のバッファへ移動する。 [N] のデフォル ト値は1である。バッファリストの最後に到達したら、先頭に戻って バッファを探す。 [!]については |:buffer-!| を参照。 From a1470ac61ffeffb52f30c905c98aef9f42794d9d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 24 Aug 2014 07:46:27 +0900 Subject: [PATCH 594/783] Fix incorrect translation again --- doc/usr_20.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/usr_20.jax b/doc/usr_20.jax index f85bdd3c0..96ee9cc1b 100644 --- a/doc/usr_20.jax +++ b/doc/usr_20.jax @@ -143,8 +143,8 @@ Vim スクリプトを書くときはコマンドの長い名前を使うこと ":r" (":read") のような頻繁に使われるコマンドなら短縮形を使っても構わないでしょ う。 特にややこしいのは ":end" で、これは ":endif"、":endwhile" あるいは -":endfunction" の短縮であるかもしれません。そのため、常に長い名前を使うように -しましょう。 +":endfunction" を表しているのかもしれません。そのため、常に長い名前を使うよう +にしましょう。 オプションの短い名前 From b090bfa6f81ed7b0b866e7671ff9259eef807636 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 24 Aug 2014 10:21:23 +0900 Subject: [PATCH 595/783] Improve layout --- doc/eval.jax | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index dceb11aa8..a298de141 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1004,7 +1004,7 @@ Note "\000" と "\x00" は強制的に文字列の終端として扱われる。 リテラル文字列 *literal-string* *E115* ---------------- +-------------- 'string' 文字列定数 *expr-'* Note シングルクォートが使われていることに注意。 @@ -1020,7 +1020,7 @@ Note シングルクォートが使われていることに注意。 オプション *expr-option* *E112* *E113* ------- +--------- &option オプション変数、ローカルなものが優先 &g:option グローバルオプション変数 &l:option ローカルオプション変数 @@ -1052,7 +1052,7 @@ Note シングルクォートが使われていることに注意。 環境変数 *expr-env* --------------------- +-------- $VAR 環境変数 環境変数の文字列。定義されていない環境変数を指定した場合、結果は空文字列。 @@ -1069,13 +1069,13 @@ Note $VARを直接使用した場合とexpand("$VAR")を使用した場合では 内部変数 *expr-variable* ------------------ +-------- variable 内部変数 以下の|internal-variables|を参照。 関数呼出 *expr-function* *E116* *E118* *E119* *E120* -------------- +-------- function(expr1, ...) 関数呼出 以下の|functions|を参照。 From 09e7c08a1b45f04bfae3604658e1282e66e43be0 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 24 Aug 2014 21:37:59 +0900 Subject: [PATCH 596/783] pi_netrw --- doc/pi_netrw.jax | 511 +++++++++++++++++++++++++++++++++------- en/pi_netrw.txt | 592 +++++++++++++++++++++++++++++++++++++---------- 2 files changed, 900 insertions(+), 203 deletions(-) diff --git a/doc/pi_netrw.jax b/doc/pi_netrw.jax index 2b4b6b6d5..9f3189b30 100644 --- a/doc/pi_netrw.jax +++ b/doc/pi_netrw.jax @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim バージョン 7.4. Last change: 2013 May 18 +*pi_netrw.txt* For Vim バージョン 7.4. Last change: 2014 May 13 ------------------------------------------------ NETRW REFERENCE MANUAL by Charles E. Campbell @@ -6,7 +6,7 @@ Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 1999-2013 Charles E Campbell *netrw-copyright* +Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* The VIM LICENSE applies to the files in this package, including netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and syntax/netrw.vim. Like anything else that's free, netrw.vim and its @@ -49,6 +49,7 @@ Copyright: Copyright (C) 1999-2013 Charles E Campbell *netrw-copyright* クイックリファレンス: コマンド......................|netrw-browse-cmds| ディレクトリをブックマークする......................|netrw-mb| ブラウジング........................................|netrw-cr| + 現在のツリー表示ディレクトリを閉じる..............|:netrw-s-cr| 水平分割ウィンドウを使ったブラウジング..............|netrw-o| タブを使ったブラウジング............................|netrw-t| 垂直分割ウィンドウを使ったブラウジング..............|netrw-v| @@ -172,7 +173,7 @@ netrw は、開こうとしている url からホストのマシン名を取得 scp や ftp 以外のプロトコルもサポートされています。次の項 |netrw-externapp| で は、それらの外部アプリケーションの使用方法を説明しています。 -プラグインの無効化 *netrw-noload* +プラグインの無効化 *netrw-noload* プラグインを有効にしているときに netrw だけを無効にしたい場合は、netrw のプラ グインファイルと自動ロードファイルの両方が読み込まれないようにする必要がありま @@ -183,7 +184,7 @@ scp や ftp 以外のプロトコルもサポートされています。次の < ============================================================================== -3. Netrw リファレンス *netrw-ref* {{{1 +3. Netrw リファレンス *netrw-ref* {{{1 Netrw は |netrw-start| で説明した scp や ftp 以外のプロトコルもサポートして います。サポートされているのは dav、fetch、http などです。|netrw-externapp| @@ -203,6 +204,7 @@ scp や ftp 以外のプロトコルもサポートされています。次の http: g:netrw_http_cmd = "curl" elseif curl があるなら http: g:netrw_http_cmd = "wget" elseif wget があるなら http: g:netrw_http_cmd = "fetch" elseif fetch があるなら + http: *g:netrw_http_put_cmd* = "curl -T" rcp: *g:netrw_rcp_cmd* = "rcp" rsync: *g:netrw_rsync_cmd* = "rsync -a" scp: *g:netrw_scp_cmd* = "scp -q" @@ -223,6 +225,10 @@ scp や ftp 以外のプロトコルもサポートされています。次の のように設定するといいでしょう > let g:netrw_http_xcmd= "-dump >" < + g:netrw_http_put_cmd: このオプションは実行ファイルとそれに必要なオプ + ションを両方指定します。このコマンドは url に対して PUT 操作を実行しま + す。 + 読み込み *netrw-read* *netrw-nread* {{{2 @@ -283,7 +289,7 @@ scp や ftp 以外のプロトコルもサポートされています。次の :Nsource "scp://[user@]machine[[:#]port]/path" uses scp :Nsource "sftp://[user@]machine/path" uses sftp -ディレクトリのファイル一覧表示 *netrw-trailingslash* *netrw-dirlist* {{{2 +ディレクトリのファイル一覧表示 *netrw-trailingslash* *netrw-dirlist* {{{2 ディレクトリを開くことでファイル一覧をブラウズできます: > @@ -340,7 +346,7 @@ Netrw にはたくさんの変数が用意されていて、好きなように *g:netrw_chgwin* ファイルを開くときに使用するウィンドウの番号を指定す る。 (|netrw-C| も参照) - (初期設定) 定義なし + (初期設定) -1 *g:Netrw_funcref* ファイルを開くときに呼ばれる関数 (複数可) を指定する。 まずファイルが開かれ、それから指定された関数参照 @@ -361,9 +367,9 @@ Netrw にはたくさんの変数が用意されていて、好きなように ftp の使用に問題があるときにこの変数を設定して ftp の 別方式を試してください。 - *g:netrw_ftp_options* デフォルトで選択されている。このオプションは、対話的プ - ロンプトをオフにし、初回の接続では ftp が自動ログイン - しようとするのを抑制することを想定している。 + *g:netrw_ftp_options* 初期設定では、対話プロンプトを無効化して、ftp が 初回 + の接続時に自動的にログインを試みるのを抑制するように設 + 定されている。 しかし、すべての ftp の実装がこれをサポートしているわ けではない。(例: ncftp) ="-i -n" @@ -526,14 +532,16 @@ Windows の ftp には -s:filename オプションがあって (filename はフ を使って一つのサイトに対してユーザー名とパスワードを指定することができます: > userid password -< *netrw-windows-netrc* *netrw-windows-s* +< *netrw-windows-netrc* *netrw-windows-s* もしも、|g:netrw_ftp_cmd| が -s:[path/]MACHINE を含んでいたら、netrw は MACHINE を ftp 接続がリクエストされたカレントマシン名に置き換えます。そのた め、マシンごとに ftp 用のユーザー名とパスワードを分けることができます。例: > let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' vim ftp://myhost.somewhere.net/ + これは次のファイルが使われます > + C:\Users\Myself\myhost.ftp < ftp を使うときは userid と password を聞かれることがあります。パスワードの入力 @@ -657,7 +665,7 @@ ftp でパスワードが必要なときは Vim の組み込み関数 |inputsecr < ============================================================================== -6. 透過的なリモートファイル編集 *netrw-transparent* {{{1 +6. 透過的なリモートファイル編集 *netrw-transparent* {{{1 ネットワークファイルの転送は、ファイルを読み書きするときに |:autocmd| の |BufReadCmd|、|BufWriteCmd|、|SourceCmd| イベントによって透過的に処理されま @@ -729,7 +737,7 @@ netrw のようなプラグインの使用方法は |netrw-activate| を参照 ============================================================================== -8. 変数とオプション *netrw-var* *netrw-settings* {{{1 +8. 変数とオプション *netrw-var* *netrw-settings* {{{1 (参照: |netrw-options| |netrw-variables| |netrw-protocol| |netrw-browser-settings| |netrw-browser-options| @@ -770,7 +778,7 @@ netrw のようなプラグインの使用方法は |netrw-activate| を参照 =1 標準の ftp を使う > ----------------------------------------------------------------------- < - *netrw-internal-variables* + *netrw-internal-variables* netrw は次の変数を一時的に使用します。 > -------- @@ -795,8 +803,8 @@ netrw は複数のプロトコルをサポートしています。それぞれ ------------------------ オプション タイプ 設定 説明 ---------- -------- -------------- --------------------------- -< - netrw_ftp 変数 =変数なし useridを"user userid"で設定 + +< netrw_ftp 変数 =変数なし useridを"user userid"で設定 =0 useridを"user userid"で設定 =1 useridを"userid"で設定 NetReadFixup 関数 =変数なし 変更しない @@ -809,6 +817,7 @@ netrw は複数のプロトコルをサポートしています。それぞれ g:netrw_ftp_cmd 変数 ="ftp" g:netrw_http_cmd 変数 ="fetch -o" if fetch があるなら g:netrw_http_cmd 変数 ="wget -O" else if wget があるなら + g:netrw_http_put_cmd 変数 ="curl -T" g:netrw_list_cmd 変数 ="ssh USEPORT HOSTNAME ls -Fa" g:netrw_rcp_cmd 変数 ="rcp" g:netrw_rsync_cmd 変数 ="rsync -a" @@ -1010,9 +1019,9 @@ QUICK HELP *netrw-quickhelp* {{{2 <del> ファイル/ディレクトリを削除する |netrw-del| - 一つ上のディレクトリに移動する |netrw--| a 隠しファイルの表示を切り替える |netrw-a| - normal (通常表示) - hiding (g:netrw_list_hide にマッチしたファイルを表示しない) - showing (g:netrw_list_hide にマッチしたファイルのみ表示する) + 通常表示 + 隠す (g:netrw_list_hide にマッチしたファイルを表示しない) + 表示する (g:netrw_list_hide にマッチしたファイルのみ表示する) c 表示中のディレクトリをカレントディレクトリにする |netrw-c| C ファイルを開くウィンドウを指定する |netrw-C| d ディレクトリを作成する |netrw-d| @@ -1037,7 +1046,7 @@ QUICK HELP *netrw-quickhelp* {{{2 mx マークしたファイルに対して任意のシェルコマンドを実行 |netrw-mx| mz マークしたファイルを圧縮/伸長する |netrw-mz| o カーソル位置のファイル/ディレクトリを |netrw-o| - 新しいウィンドウで開く。水平分割。 + 新しいウィンドウで開く。水平分割。 O カーソル位置のファイルを取得する |netrw-O| p ファイルをプレビューする |netrw-p| P 直前に使用していたウィンドウで開く |netrw-P| @@ -1051,7 +1060,7 @@ QUICK HELP *netrw-quickhelp* {{{2 u 最近訪れたディレクトリに移動する |netrw-u| U 次に訪れたディレクトリに移動する |netrw-U| v カーソル位置のファイル/ディレクトリを |netrw-v| - 新しいウィンドウで開く。垂直分割。 + 新しいウィンドウで開く。垂直分割。 x 関連付けられたプログラムでファイルを表示する |netrw-x| X カーソル位置のファイルを |system()| で実行する |netrw-X| @@ -1064,21 +1073,25 @@ QUICK HELP *netrw-quickhelp* {{{2 |netrw-P| 参照 <rightmouse> (gvim only) 選択したファイル/ディレクトリを削除する。 <2-leftmouse> (gvim only) 使用できる条件: - * netrw からファイルを開いたとき - * |g:netrw_retmap| == 1 - * netrw がロードされた時点で <2-leftmouse> に対する - マップが定義されていない + * netrw からファイルを開いたとき + * |g:netrw_retmap| == 1 + * netrw がロードされた時点で <2-leftmouse> に対する + マップが定義されていない netrw ブラウザウィンドウに戻る。|g:netrw_retmap|参照。 - <s-leftmouse> (gvim only) mf と同じ。ファイルをマークする。 + <s-leftmouse> (gvim only) mf と同じ。ファイルをマークする。Shift を + 押したままマウスの左ボタンでドラッグすると複数のファイ + ルを選択できる。(|netrw-mf| 参照) (ブラウジング中にマウスボタンを無効化するには: |g:netrw_mousemaps|) *netrw-quickcom* *netrw-quickcoms* クイックリファレンス: コマンド *netrw-explore-cmds* *netrw-browse-cmds* {{{2 - :NetrwClean[!] ...........................................|netrw-clean| - :NetrwSettings ...........................................|netrw-settings| + :NetrwClean[!]............................................|netrw-clean| + :NetrwSettings............................................|netrw-settings| + :Ntree....................................................|netrw-ntree| :Explore[!] [dir] カレントファイルのディレクトリを開く...|netrw-explore| :Hexplore[!] [dir] 水平分割 & Explore.....................|netrw-explore| + :Lexplore [dir] 左エクスプローラ切り替え...............|netrw-explore| :Nexplore[!] [dir] 垂直分割 & Explore.....................|netrw-explore| :Pexplore[!] [dir] 垂直分割 & Explore.....................|netrw-explore| :Rexplore Explorer に戻る........................|netrw-explore| @@ -1136,6 +1149,11 @@ gui (gvim) では <leftmouse> (左クリック) でファイルを選択でき ルが作成された) 場合でも、表示されるファイル一覧は古いままです。最新の情報に更 新するには ctrl-L (|netrw-ctrl-l|参照) を押してください。 + *:netrw-s-cr* + 現在のツリー表示ディレクトリを閉じる~ + gvim でツリー表示をしているとき (|netrw-i| 参照)、<s-cr> を使うと、カーソ + ルが置かれているディレクトリを閉じることができます。 + 関連トピック: |netrw-o| |netrw-p| |netrw-P| |netrw-t| |netrw-v| 関連設定: |g:netrw_browse_split| |g:netrw_fastbrowse| @@ -1181,9 +1199,7 @@ gui (gvim) では <leftmouse> (左クリック) でファイルを選択でき 一つのディレクトリには一つのバッファが使われます。"v" で表示済みのサブディレク トリを開くとウィンドウは分割されますが、同じバッファが再び表示されます。 -関連設定: |g:netrw_altv| |g:netrw_winsize| - -関連アクション |netrw-cr| |netrw-o| |netrw-t| |netrw-v| +関連アクション: |netrw-cr| |netrw-o| |netrw-t| |netrw-v| 関連設定変数: |g:netrw_altv| 分割の方向 (右/左) を制御 |g:netrw_winsize| 初期サイズを制御 @@ -1206,9 +1222,10 @@ wide 形式では二つ以上のスペースを使ってファイル名を区切 ペースが付いているファイル名を扱うことができません。そのような場合は thin 形式 を使ってください。wide 形式は最もコンパクトな表示形式です。 -tree 形式ではトップディレクトリに続いてファイル/ディレクトリが名前の前に "|" -を付けて表示されます。ディレクトリの名前の所で <cr> キーを押すと、そのディレク -トリを開いたり閉じたりできます。 +tree 形式ではトップディレクトリに続いてファイル/ディレクトリが、名前の前に 1 +つ以上の "|" を付けて表示されます。これはディレクトリの深さを示します。ディレ +クトリの名前の所で <cr> キーを押すと、そのディレクトリを開いたり閉じたりできま +す。 デフォルトの表示スタイルを変更できます。(|g:netrw_liststyle|) 参照。 例えば、次の行を .vimrc に書くと: > @@ -1280,6 +1297,17 @@ Note: |netrw-qb| はブックマークと履歴を両方表示します。履歴 履歴の量を制御するには |g:netrw_dirhistmax| を参照。 +ツリーのトップを変更する *netrw-ntree* *:Ntree* + +ツリー表示のツリーのトップを変更するには次のコマンドを使います > + + :Ntree [dirname] + +"dirname" を指定しなかった場合、現在行が使われます (そして深さ情報は失われ +る)。 +"dirname" を指定した場合、指定された名前が使われます。 + + NETRW CLEAN *netrw-clean* *:NetrwClean* :NetrwClean を使うと、ホームディレクトリから netrw を削除できます。正確には、 @@ -1391,20 +1419,29 @@ Netrw は次の方法で専用ハンドラを決定します: マークされたファイル (と空ディレクトリ) が削除されます。netrw はファイルを 削除する前に確認ダイアログを表示します。 -ファイルとディレクトリの削除には、|g:netrw_rm_cmd|、|g:netrw_rmf_cmd|、 -|g:netrw_rmdir_cmd| 変数が使われます。|g:netrw_rm_cmd| はファイルの削除に使わ -れます。初期設定は次のとおり: +パターンにマッチしたファイルを削除するには: + + * :MF パターン (|netrw-:MF| 参照) を使う。そして "D" を押す。 + + * mr (|netrw-mr| 参照) を使う。パターンを入力するためのプロンプトが表示さ + れます。 + 入力したパターンにマッチしたファイルがマークされるので、それから "D" を + 押す。 + +リモートのファイルとディレクトリの削除には、|g:netrw_rm_cmd|、 +|g:netrw_rmf_cmd|、|g:netrw_rmdir_cmd| 変数が使われます。|g:netrw_rm_cmd| は +ファイルの削除に使われます。初期設定は次のとおり: g:netrw_rm_cmd: ssh HOSTNAME rm g:netrw_rmdir_cmd 変数はディレクトリの削除に使われます。初期設定は次のとおり: - g:netrw_rmdir_cmd: ssh HOSTNAME rmdir + |g:netrw_rmdir_cmd|: ssh HOSTNAME rmdir g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は、g:netrw_rmf_cmd を 使用した削除が試されます。初期設定は次のとおり: - g:netrw_rmf_cmd: ssh HOSTNAME rm -f + |g:netrw_rmf_cmd|: ssh HOSTNAME rm -f 関連項目: |netrw-d| 関連設定: |g:netrw_localrmdir| |g:netrw_rm_cmd| @@ -1412,35 +1449,51 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は *netrw-explore* *netrw-hexplore* *netrw-nexplore* *netrw-pexplore* -*netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore* +*netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore* *netrw-lexplore* ディレクトリ探査コマンド {{{2 :[N]Explore[!] [dir]... カレントファイルのディレクトリを開く *:Explore* :[N]Hexplore[!] [dir]... 水平分割で開く *:Hexplore* - :Rexplore ... エクスプローラに戻る *:Rexplore* + :Rexplore ... エクスプローラに/から戻る *:Rexplore* :[N]Sexplore[!] [dir]... カレントファイルのディレクトリを分割 *:Sexplore* して開く :Texplore [dir]... タブで開く *:Texplore* :[N]Vexplore[!] [dir]... 垂直分割で開く *:Vexplore* + :Lexplore [dir]... 左エクスプローラを切り替える *:Lexplore* :Explore **/pattern で開いたときに使うコマンド : (|netrw-starstar|参照) :Nexplore............. 次のファイルに移動 *:Nexplore* :Pexplore............. 前のファイルに移動 *:Pexplore* + *netrw-:Explore* :Explore は、ローカルディレクトリブラウザを開始してカレントファイルのディレク トリ (または [dir] で指定されたディレクトリ) を開きます。編集中の - ファイルに未保存の変更がある場合は新しいウィンドウを作成します。そう - でない場合は同じウィンドウを使用します。通常、ウィンドウの分割は水平 - 分割です。 + ファイルに未保存の変更がある場合は新しいウィンドウを作成します。そう + でない場合は同じウィンドウを使用します。通常、ウィンドウの分割は水平 + 分割です。 + |netrw-:Rexplore| も参照。 :Explore! は、:Explore と同じですが、ウィンドウを垂直分割します。 + *netrw-:Lexplore* +:Lexplore [dir] 現在のタブの左側に、エクスプローラウィンドウを開いたり閉じたり + します。 [dir] を省略したときは現在のディレクトリを開きます。 + :Lexplore [dir] は、どのウィンドウで実行したかに関係なく、タブの左側 + でブラウザを開き、指定されたディレクトリを表示します。初期設定では、 + :Lexplore は未初期化の |g:netrw_chgwin| を 2 に設定します。つまり + ファイルを開くときには 2 番目のウィンドウが使われるようになります。 + 参照: |netrw-C|| |g:netrw_chgwin| |g:netrw_winsize| + |netrw-p| |netrw-P|| |g:netrw_browse_split| + *netrw-:Sexplore* :Sexplore は、常に新しいウィンドウを作成してローカルディレクトリブラウザを開始 します。Explore と同様、通常はウィンドウは水平分割されます。 :Sexplore! [dir] は、:Sexplore と同じですが、ウィンドウを垂直分割します。 + *netrw-:Hexplore* :Hexplore [dir] は、|:belowright| 水平分割を使って :Explore を実行します。 :Hexplore! [dir] は、|:aboveleft| 水平分割を使って :Explore を実行します。 + *netrw-:Vexplore* :Vexplore [dir] は、|:leftabove| 垂直分割を使って :Explore を実行します。 :Vexplore! [dir] は、|:rightbelow| 垂直分割を使って :Explore を実行します。 -:Texplore [dir] は、ブラウザウィンドウを作成する前に tabnew を実行します。 + *netrw-:Texplore* +:Texplore [dir] は、ブラウザウィンドウを作成する前に |:tabnew| を実行します。 引数を指定しなかった場合、これらのコマンドはカレントファイルのディレクトリを開 きます。明示的にディレクトリ (path) を指定することもできます。 @@ -1451,11 +1504,29 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は 幅指定がない場合は、|g:netrw_winsize| 変数が (設定されているなら)、新しいエク スプローラウィンドウの幅/高さとして使用されます。 + *netrw-:Rexplore* :Rexplore このコマンドは他のコマンドとは少し違います。例えば、netrw ブラウザ ウィンドウで <cr> を押してファイルを開いたとき、:Rexplore を実行す ると、最後に表示していたブラウザ画面に戻ることができます。これは <2-leftmouse> のコマンド版です (<2-leftmouse> はマウス対応端末か gvim でしか使えません)。 + *netrw-:Rexplore* +:Rexplore このコマンドは他のコマンドとは少し違い、あらかじめエクスプローラ + ウィンドウを開いてからでないと使えません。 + + エクスプローラに戻る~ + 例えば netrw ブラウザ上でファイルの上で <cr> を押してファイルを開い + たとき、:Rexplore を使うと、そのウィンドウで最後に表示していた + netrw ブラウザの画面に戻ることができます。 + + エクスプローラから戻る~ + 逆に、ディレクトリを開いているとき、:Rexplore を使うと、そのウィン + ドウで最後に開いていたファイルに戻ることができます。 + + <2-leftmouse> マップ (gvim や一部の端末でのみ利用可) でも :Rexplore + と同じことができます。 + +参照: |g:netrw_alto| |g:netrw_altv| |g:netrw_winsize| *netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* @@ -1496,11 +1567,12 @@ shift-downarrow と shift-uparrow を使うと便利でしょう。 < ステータスラインの右の方に "Match 3 of 20" のようなメッセージが表示されます。 -関連設定: |g:netrw_keepdir| |g:netrw_browse_split| - |g:netrw_fastbrowse| |g:netrw_ftp_browse_reject| - |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| - |g:netrw_ftp_timelist_cmd| |g:netrw_list_cmd| - |g:netrw_liststyle| +関連設定: + |g:netrw_keepdir| |g:netrw_browse_split| + |g:netrw_fastbrowse| |g:netrw_ftp_browse_reject| + |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| + |g:netrw_ftp_timelist_cmd| |g:netrw_list_cmd| + |g:netrw_liststyle| ファイルの情報を表示する *netrw-qf* {{{2 @@ -1583,10 +1655,10 @@ For Unix: > で <cr> を押します。 netrw は |g:netrw_list_cmd| を使ってディレクトリ一覧を取得します。変数の -HOSTNAME の部分は実際の url に置き換えられます。初期設定は次のとおり: +HOSTNAME の部分は実際の url に置き換えられます。初期設定は次のとおり: > ssh HOSTNAME ls -FLa - +< HOSTNAME の部分は実際のリクエストの [user@]hostname に置換されます。設定は必要 に応じて変更してください。ディレクトリ名の末尾にはスラッシュが付くことが想定さ れています。 @@ -1635,6 +1707,36 @@ let g:netrw_list_hide= '^\..*' を設定する)。そして、"a" キーを押 関連設定: |g:netrw_list_hide| |g:netrw_hide| 関連項目: |netrw-a| |netrw-ctrl-h| |netrw-mh| + *netrw-gitignore* +netrw にはヘルパ関数の 'netrw_gitignore#Hide()' が用意されています。 +|g:netrw_list_hide| と一緒に使うことで git の隠しファイルを自動的に隠すことが +できます。 + +'netrw_gitignore#Hide' はこれらのファイルにあるパターンを検索します: + './.gitignore' + './.git/info/exclude' + global gitignore file: `git config --global core.excludesfile` + system gitignore file: `git config --system core.excludesfile` + +存在しないファイルは無視されます。 +git の隠しファイルのパターンは存在するファイルから取られ、隠しファイル設定のパ +ターンに変換されます。例えば、'.gitignore' に '*.log' があったとすると、それは +'.*\.log' に変換されます。 + +この関数を使うには、単にその返り値を |g:netrw_list_hide| オプションに代入しま +す。 + + 例: let g:netrw_list_hide= netrw_gitignore#Hide() + netrw で git の隠しファイルをすべて隠す。 + + 例: let g:netrw_list_hide= netrw_gitignore#Hide('my_gitignore_file') + 関数には git の隠しファイルのパターンを読み込む追加のファイル + を指定できます。 + + 例: g:netrw_list_hide= netrw_gitignore#Hide() . '.*\.swp$' + 'netrw_gitignore#Hide' と独自のパターンを組み合わせる。 + + ブラウジングを改善する *netrw-listhack* *netrw-ssh-hack* {{{2 リモートディレクトリをブラウジングするときなどに、操作の度にパスワードを入力す @@ -1714,6 +1816,15 @@ Kingston Fung 氏がパスワードを省略する別の方法について書い http://sial.org/howto/openssh/publickey-auth/ + Ssh ヒント: + + Thomer Gil は netrw+ssh の速度を改善するヒントを提供しています: + http://thomer.com/howtos/netrw_ssh.html + + Alex Young は ssh の速度を改善するいくつかのヒントを提供しています: + http://usevim.com/2012/03/16/editing-remote-files/ + + ブックマークと履歴を一覧表示する *netrw-qb* *netrw-listbookmark* {{{2 "qb" (query bookmarks) を押すと、ブックマークされたディレクトリと移動履歴の一 @@ -1737,8 +1848,8 @@ g:netrw_mkdir_cmd 変数に依存。ローカル操作は g:netrw_localmkdir に と、エラーが表示され、操作は無視されます。 関連項目: |netrw-D| -関連設定変数: |g:netrw_localmkdir| |g:netrw_mkdir_cmd| - |g:netrw_remote_mkdir| +関連設定変数: |g:netrw_localmkdir| |g:netrw_mkdir_cmd| + |g:netrw_remote_mkdir| |netrw-%| ブラウジングディレクトリをカレントディレクトリにする *netrw-c* {{{2 @@ -1757,12 +1868,27 @@ g:netrw_keepdir が 1 のときは netrw のブラウジングディレクトリ 関連設定: |g:netrw_keepdir| -ファイルをマークする *netrw-mf* {{{2 +ファイルをマークする *netrw-:MF* *netrw-mf* {{{2 (|netrw-mr|も参照) -ファイルにマークを設定するにはファイル名の上で "mf" を押します。gvim では -<s-leftmouse> でマークを設定することもできます。マークしたファイルは以下のマッ -プで操作できます: +netrw にはファイルをマークする方法がいくつかあります: + + * カーソルをファイル名の上に移動して "mf" を押す。 + + * gvim では、加えて <s-leftmouse> でもファイルをマークできる。 + (see |netrw-mouse|) + + * :MF コマンドを使う。これはファイルのリストを指定して使う (ローカル + ディレクトリでは、リストにワイルドカードを指定できる -- |glob()| 参 + 照) > + + :MF *.c +< + * Note: :MF の引数は |<f-args>| として、空白区切りで解釈される。 + + * クイックフィックスリストに基づいてマークする (|netrw-qF|) + +マークしたファイルは以下の netrw マップを使って操作できます: |netrw-a| ファイル/ディレクトリを隠す |netrw-D| ファイル/ディレクトリを削除する @@ -1771,13 +1897,12 @@ g:netrw_keepdir が 1 のときは netrw のブラウジングディレクトリ |netrw-me| マークしたファイルを開く |netrw-mF| ファイルのマークを外す |netrw-mg| マークしたファイルに vimgrep を適用する - |netrw-mm| マークしたファイルを移動する + |netrw-mm| マークしたファイルをターゲットに移動する |netrw-mp| マークしたファイル印刷する |netrw-mt| |netrw-mm| または |netrw-mc| 用のターゲットを設定する |netrw-mT| マークしたファイルのタグを生成する |netrw-mx| マークしたファイルにシェルコマンドを適用する |netrw-mz| マークしたファイルを圧縮/伸長する - |netrw-qF| quickfix リストを使ってファイルをマークする |netrw-O| マークしたファイルを取得する |netrw-R| マークしたファイルの名前を変更する @@ -1794,6 +1919,10 @@ g:netrw_keepdir が 1 のときは netrw のブラウジングディレクトリ < これを $HOME/.vim/after/syntax/netrw.vim に書きます。 +もしマウスが利用可能なら、<s-leftmouse> を使って複数のファイルをマークできま +す。Shift を押したままマウスの左ボタンでドラッグすることで複数のファイルをマー +クすることもできます。 (|netrw-mouse| 参照) + *markfilelist* *global_markfilelist* *local_markfilelist* マークされたすべてのファイルはグローバルマークファイルリストに記録されます。グ ローバルリストは一つだけ存在します。さらに、すべての netrw バッファはローカル @@ -1802,6 +1931,12 @@ g:netrw_keepdir が 1 のときは netrw のブラウジングディレクトリ ります。マークされたファイルに対する操作はグローバル、またはローカルのマーク ファイルリストに作用します。 +既知の問題: ツリー表示モード (|g:netrw_liststyle|) で表示していて、複数のディ +レクトリが同じ名前のファイルを持っているとき、そのどれかのファイルをマークする +と、すべてのファイルがマークされたかのように強調表示されます。しかしマークファ +イルリスト (|markfilelist|) は選択されたファイルのみを含んでいます。これはおそ +らく修正されないでしょう。 + ファイルのマークを外す *netrw-mF* {{{2 (|netrw-mf| も参照) @@ -1957,6 +2092,10 @@ mt (|netrw-mt|) で移動先ディレクトリを選択し、ファイルのあ * カーソルがディレクトリの上にある場合は、そのディレクトリがターゲットとして 設定されます。 + * :MT [directory] コマンドでターゲットを設定できます *netrw-:MT* + このコマンドは |<q-args>| を使うので、ディレクトリ名のスペースはエスケープ + しなくても構いません。 + ターゲットは Vim セッションで一つしか設定できません。ターゲットはスクリプト変 数 (|s:var|参照) で管理されており、(Vim のインスタンスごとの) すべての netrw ウィンドウで共有されます。 @@ -1996,34 +2135,38 @@ netrw によって url が開かれ、タグに移動できます。 マークファイル: ブックマークを使ったターゲットディレクトリ *netrw-Tb* {{{2 -ファイルコピー/移動のターゲットを設定する (|netrw-mc| と |netrw-mm| 参照)。 +ファイルコピー/移動のターゲットを設定する。 |netrw-qb| マップはブックマーク (と履歴) の一覧を表示します。 [count]Tb (count のデフォルトは 1) を使って、ブックマークからマークファイル ターゲットを選択できます。 関連項目: + ファイルをターゲットにコピーする...................|netrw-mc| ブックマークと履歴を一覧表示する...................|netrw-qb| マークファイル: ターゲットディレクトリを設定する...|netrw-mt| マークファイル: 履歴を使ったターゲットディレクトリ.|netrw-Th| ファイルをマークする...............................|netrw-mf| ファイルのマークを外す.............................|netrw-mr| + ファイルをターゲットに移動する.....................|netrw-mm| マークファイル: 履歴を使ったターゲットディレクトリ *netrw-Th* {{{2 -ファイルコピー/移動のターゲットを設定する (|netrw-mc| と |netrw-mm| 参照)。 +ファイルコピー/移動のターゲットを設定する。 |netrw-qb| マップは履歴 (とブックマーク) の一覧を表示します。 [count]Th (count のデフォルトは 0。つまりカレントディレクトリ) を使って、履歴 からマークファイルターゲットを選択できます。 関連項目: + ファイルをターゲットにコピーする...................|netrw-mc| ブックマークと履歴を一覧表示する...................|netrw-qb| マークファイル: ターゲットディレクトリを設定する...|netrw-mt| マークファイル: ブックマークを使ったターゲットディレクトリ |netrw-Tb| ファイルをマークする...............................|netrw-mf| ファイルのマークを外す.............................|netrw-mr| + ファイルをターゲットに移動する.....................|netrw-mm| マークファイル: マーク解除 *netrw-mu* {{{2 @@ -2044,7 +2187,13 @@ netrw ブラウザの各種設定は変数で管理されていて、それを ---- ----------- 変数 説明 ---- ----------- -< *g:netrw_alto* 分割ウィンドウを(上ではなく)下に開くようにする +< *g:netrw_altfile* |CTRL-^| で最後に編集したファイルに戻りたいと + きは 1 を設定する。 + |CTRL-^| で netrw ブラウザに戻りたいときは 0 + を設定する。 + 初期設定: =0 + + *g:netrw_alto* 分割ウィンドウを(上ではなく)下に開くようにする (|netrw-o| 参照) 初期設定: =&sb (|'sb'| 参照) @@ -2071,6 +2220,10 @@ netrw ブラウザの各種設定は変数で管理されていて、それを Note: |g:netrw_preview| を使うと (水平分割 から変更して) 垂直分割にできます。 + 関連項目: + |netrw-cr| |netrw-C| + |g:netrw_alto| |g:netrw_altv| + *g:netrw_browsex_viewer* ユーザー指定のビューア: > "kfmclient exec" "gnome-open" @@ -2129,6 +2282,7 @@ netrw ブラウザの各種設定は変数で管理されていて、それを *g:netrw_dynamic_maxfilenamelen* =32: |g:netrw_maxfilenamelen| (ローカルファ イルの long 一覧表示で使用される) の動的判 定を有効にする。 + *g:netrw_errorlvl* =0: この値以上のエラーレベルであれば表示が許可 される。 0: 注意 @@ -2156,6 +2310,10 @@ netrw ブラウザの各種設定は変数で管理されていて、それを この設定によって正確さ (常に最新) とスピードの トレードオフを選択できます。 + *g:netrw_ffkeep* (初期設定: 変数なし) + この変数が存在して値がゼロなら、 netrw は + |'fileformat'| を保存、復元しない。 + *g:netrw_fname_escape* =' ?&;%' リモートで読み/書きするときにファイル名をエス ケープするのに使われる。 @@ -2223,10 +2381,19 @@ netrw ブラウザの各種設定は変数で管理されていて、それを ムスタンプ、ファイルサイズ) = 2: wide listing (一行に複数のファイル) = 3: tree style listing (ツリー表示) + *g:netrw_list_hide* 隠しファイル用のパターンのリスト(カンマ区切り) パターンは正規表現です (|regexp|参照) - 例: let g:netrw_list_hide= '.*\.swp$' - 初期設定: "" + git の隠しファイル用に特別な関数が用意されてい + ます。この変数に 'netrw_gitignore#Hide()' ヘル + パ関数の返り値を追加することで、git の隠しファ + イルを自動的に隠すことができます。 + 詳細は |netrw-gitignored| 参照。 + + 例: + let g:netrw_list_hide= '.*\.swp$' + let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$' + 初期設定: "" *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin ="copy" Windows @@ -2269,7 +2436,7 @@ netrw ブラウザの各種設定は変数で管理されていて、それを この変数を定義するとバルーン評価は抑制される。 (参照 |'ballooneval'|) - *g:netrw_remote_mkdir* ftp 経由でのローカルディレクトリ作成コマンド + *g:netrw_remote_mkdir* ftp 経由でのリモートディレクトリ作成コマンド (|g:netrw_mkdir_cmd| も参照) 初期設定: "mkdir" @@ -2294,13 +2461,13 @@ netrw ブラウザの各種設定は変数で管理されていて、それを 初期設定: =0 - *g:netrw_rm_cmd* ファイル削除コマンド + *g:netrw_rm_cmd* リモートのファイル削除コマンド 初期設定: "ssh USEPORT HOSTNAME rm" - *g:netrw_rmdir_cmd* ディレクトリ削除コマンド + *g:netrw_rmdir_cmd* リモートのディレクトリ削除コマンド 初期設定: "ssh USEPORT HOSTNAME rmdir" - *g:netrw_rmf_cmd* ソフトリンク削除コマンド + *g:netrw_rmf_cmd* リモートのソフトリンク削除コマンド 初期設定: "ssh USEPORT HOSTNAME rm -f" *g:netrw_sort_by* ソートの種類 ("name" or "time" or "size") @@ -2335,7 +2502,7 @@ netrw ブラウザの各種設定は変数で管理されていて、それを netrwMakefile: [mM]akefile *.mak netrwObj : *.o *.obj netrwTags : tags ANmenu ANtags - netrwTilde : *~ + netrwTilde : * netrwTmp : tmp* *tmp これらの構文ハイライトグループは、初期設定では @@ -2343,7 +2510,27 @@ netrw ブラウザの各種設定は変数で管理されていて、それを (|hl-Folded| と |hl-DiffChange| 参照) 例えば <.vimrc> で次のように設定することで > hi link netrwCompress Visual -< 好みの配色を設定できます。 +< 好みの配色を設定できます。あるいは、このような + 設定を .vim/after/syntax/netrw.vim に書く方法 + もあります。 + + 例として、私自身は暗背景カラースキームを使って + いて .vim/after/syntax/netrw.vim で以下のよう + 設定しています: > + + hi netrwCompress term=NONE cterm=NONE gui=NONE ctermfg=10 guifg=green ctermbg=0 guibg=black + hi netrwData term=NONE cterm=NONE gui=NONE ctermfg=9 guifg=blue ctermbg=0 guibg=black + hi netrwHdr term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1 + hi netrwLex term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1 + hi netrwYacc term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1 + hi netrwLib term=NONE cterm=NONE gui=NONE ctermfg=14 guifg=yellow + hi netrwObj term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwTilde term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwTmp term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwTags term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwDoc term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=yellow2 guibg=Blue3 + hi netrwSymLink term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=grey60 +< *g:netrw_ssh_browse_reject* ssh の出力に不要なテキスト (メッセージ、バナー 等) が混ざっていて、それらがディレクトリやファ @@ -2379,6 +2566,7 @@ netrw ブラウザの各種設定は変数で管理されていて、それを あります。そのようなエラーが出た場合は .vimrc で次のように設定してみてください let g:netrw_use_noswf= 0 + 初期設定: 1 *g:netrw_winsize* ウィンドウを作成したときの初期サイズ。"o" (|netrw-o|), "v" (|netrw-v|), |:Hexplore|, @@ -2389,6 +2577,9 @@ netrw ブラウザの各種設定は変数で管理されていて、それを g:netrw_winsize が 0 より小さい場合、新しい ウィンドウの行または列の大きさにはその値の絶対 値が使われる。 + g:netrw_winsize がゼロなら、通常どおりウィン + ドウが分割される (つまり、例えば + |'equalalways'| が機能するなど)。 初期設定: 50 (50%) *g:netrw_xstrlen* マルチバイト文字列の長さを計算する方法を指定す @@ -2470,6 +2661,8 @@ netrw のカレントディレクトリで新しいファイルを作成する ファイル名を入力するためのプロンプトが表示されます。指定した名前の空のファイル が netrw のカレントディレクトリ (b:netrw_curdir) に作成されます。 +関連項目: |netrw-d| + プレビューウィンドウ *netrw-p* *netrw-preview* {{{2 @@ -2491,6 +2684,9 @@ netrw を次のように設定すると便利かもしれません: > 示ウィンドウは列の幅の 30% しか使わないので、残りの領域をプレビュー ウィンドウの表示に使用できる。 +参照: |g:netrw_chgwin| |netrw-P| + + 以前のウィンドウ *netrw-P* *netrw-prvwin* {{{2 ファイル/ディレクトリを以前の (最後にアクセスした) ウィンドウ (:he |CTRL-W_p|) @@ -2509,6 +2705,8 @@ netrw を次のように設定すると便利かもしれません: > |g:netrw_preview| 分割の方向 (水平/垂直) を制御 |g:netrw_winsize| 初期サイズを制御 +参照: |g:netrw_chgwin| |netrw-p| + 一覧を更新する *netrw-ctrl-l* *netrw-ctrl_l* {{{2 @@ -2544,6 +2742,7 @@ netrw を次のように設定すると便利かもしれません: > Note: ファイルの移動はコピーと比べて危険です。なぜなら、リモートのファイル を "移動" するとき、実際には コピー + 削除 を実行しているからです。コピー が失敗して削除が成功するとファイルが失われます。 + 自己責任で使ってください。 g:netrw_rename_cmd 変数で名前変更のコマンドを指定できます。初期設定は次のとお り: @@ -2570,8 +2769,17 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク か、g:netrw_chgwin にウィンドウ番号を設定します。ファイルを開く (|netrw-cr|) と、指定されたウィンドウが使われます。 -関連項目: |netrw-cr| -関連設定: |g:netrw_chgwin| + * C だけを押すと |netrw-cr| でファイルを開くときにカレントウィン + ドウが使われます。 + + * [count]C カウントを指定すると |netrw-cr| でファイルを開くときに指定 + された番号のウィンドウが使用されます。 +次のように設定すると > + let g:netrw_chgwin= -1 +デフォルトの動作に戻すことができます (つまり、カレントウィンドウを使う)。 + +関連項目: |netrw-cr| |g:netrw_browse_split| +関連設定: |g:netrw_chgwin| 10. 問題と対策 *netrw-problems* {{{1 @@ -2850,6 +3058,15 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク く、netrw のマウス関連のマップはすべて無効化されます。 (|g:netrw_mousemaps| 参照) + *netrw-p16* + P16. リモートファイルを開くと (例: :e ftp://hostname/path/file)、 + Windows では |E303| メッセージが出てスワップファイルが開けないと + 言われる。 + + (romainl) もしかして保護ディレクトリの上で Vim を起動していません + か。 $HOME やその他の書き込み可能なディレクトリで Vim を起動して + ください。 + ============================================================================== 11. Netrw をデバッグする *netrw-debug* {{{1 @@ -2857,9 +3074,6 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク > /usr/local/share/vim/vim7x/plugin/netrwPlugin.vim /usr/local/share/vim/vim7x/autoload/netrw.vim -< -or- > - /usr/local/share/vim/vim6x/plugin/netrwPlugin.vim - /usr/local/share/vim/vim6x/autoload/netrw.vim < スクリプトは起動時に自動的にロードされます (:set nocp を想定)。 @@ -2869,9 +3083,7 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク or http://vim.sourceforge.net/scripts/script.php?script_id=120 - スクリプトは "vimball" になっています。7.0 かそれ以前の vim を使って - いる場合は vimball もアップデートする必要があります。 - http://www.drchip.org/astronaut/vim/index.html#VIMBALL + Decho.vim は "vimball" の形で提供されています。|vimball-intro|参照。 2. 次のようにして <netrw.vim> ファイルを編集してください: > @@ -2894,15 +3106,153 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク 読み込んだり書き込んだりする過程が別のタブに出力されます。 出力をファイルに保存するには次のようにします > + :tabnext :set bt= :w! DBG -< その情報を <netrw.vim> のメンテナに送ってください > + +< 加えて、次のコマンドも使ってもらえる助かります > + :Dsep <command> +< <command> は次にあなたがタイプするコマンドです。これによって、デ + バッグ出力のどの部分がどのコマンドに対応するかを関連付けるのが簡単 + になります。 + + その情報を <netrw.vim> のメンテナに送ってください。あなたが使用して + いる OS や Vim のバージョン情報も一緒に添えてください。 + (|:version| 参照) > NdrOchip at ScampbellPfamily.AbizM - NOSPAM < ============================================================================== 12. 変更履歴 *netrw-history* {{{1 + v152: Apr 08, 2014 * uses the |'noswapfile'| option (requires + vim 7.4 with patch 213) + * (Enno Nagel) turn |'rnu'| off in netrw + buffers. + * (Quinn Strahl) suggested that netrw + allow regular window splitting to occur, + thereby allowing |'equalalways'| to take + effect. + * (qingtian zhao) normally, netrw will + save and restore the |'fileformat'|; + however, sometimes that isn't wanted + Apr 14, 2014 * whenever netrw marks a buffer as ro, + it will also mark it as nomod. + Apr 16, 2014 * sftp protocol now supported by + netrw#Obtain(); this means that one + may use "mc" to copy a remote file + to a local file using sftp, and that + the |netrw-O| command can obtain remote + files via sftp. + * added [count]C support (see |netrw-C|) + Apr 18, 2014 * when |g:netrw_chgwin| is one more than + the last window, then vertically split + the last window and use it as the + chgwin window. + May 09, 2014 * SavePosn was "saving filename under cursor" + from a non-netrw window when using :Rex. + v151: Jan 22, 2014 * extended :Rexplore to return to buffer + prior to Explore or editing a directory + * (Ken Takata) netrw gave error when + clipboard was disabled. Sol'n: Placed + several if has("clipboard") tests in. + * Fixed ftp://X@Y@Z// problem; X@Y now + part of user id, and only Z is part of + hostname. + * (A Loumiotis) reported that completion + using a directory name containing spaces + did not work. Fixed with a retry in + netrw#Explore() which removes the + backslashes vim inserted. + Feb 26, 2014 * :Rexplore now records the current file + using w:netrw_rexfile when returning via + |:Rexplore| + Mar 08, 2014 * (David Kotchan) provided some patches + allowing netrw to work properly with + windows shares. + * Multiple one-liner help messages available + by pressing <cr> while atop the "Quick + Help" line + * worked on ShellCmdPost, FocusGained event + handling. + * |:Lexplore| path: will be used to update + a left-side netrw browsing directory. + Mar 12, 2014 * |:netrw-s-cr|: use <s-cr> to close + tree directory implemented + Mar 13, 2014 * (Tony Mechylynck) reported that using + the browser with ftp on a directory, + and selecting a gzipped txt file, that + an E19 occurred (which was issued by + gzip.vim). Fixed. + Mar 14, 2014 * Implemented :MF and :MT (see |netrw-:MF| + and |netrw-:MT|, respectively) + Mar 17, 2014 * |:Ntree| [dir] wasn't working properly; fixed + Mar 18, 2014 * Changed all uses of set to setl + Mar 18, 2014 * Commented the netrw_btkeep line in + s:NetrwOptionSave(); the effect is that + netrw buffers will remain as |'bt'|=nofile. + This should prevent swapfiles being created + for netrw buffers. + Mar 20, 2014 * Changed all uses of lcd to use s:NetrwLcd() + instead. Consistent error handling results + and it also handles Window's shares + * Fixed |netrw-d| command when applied with ftp + * https: support included for netrw#NetRead() + v150: Jul 12, 2013 * removed a "keepalt" to allow ":e #" to + return to the netrw directory listing + Jul 13, 2013 * (Jonas Diemer) suggested changing + a <cWORD> to <cfile>. + Jul 21, 2013 * (Yuri Kanivetsky) reported that netrw's + use of mkdir did not produce directories + following the user's umask. + Aug 27, 2013 * introduced |g:netrw_altfile| option + Sep 05, 2013 * s:Strlen() now uses |strdisplaywidth()| + when available, by default + Sep 12, 2013 * (Selyano Baldo) reported that netrw wasn't + opening some directories properly from the + command line. + Nov 09, 2013 * |:Lexplore| introduced + * (Ondrej Platek) reported an issue with + netrw's trees (P15). Fixed. + * (Jorge Solis) reported that "t" in + tree mode caused netrw to forget its + line position. + Dec 05, 2013 * Added <s-leftmouse> file marking + (see |netrw-mf|) + Dec 05, 2013 * (Yasuhiro Matsumoto) Explore should use + strlen() instead s:Strlen() when handling + multibyte chars with strpart() + (ie. strpart() is byte oriented, not + display-width oriented). + Dec 09, 2013 * (Ken Takata) Provided a patch; File sizes + and a portion of timestamps were wrongly + highlighted with the directory color when + setting `:let g:netrw_liststyle=1` on Windows. + * (Paul Domaskis) noted that sometimes + cursorline was activating in non-netrw + windows. All but one setting of cursorline + was done via setl; there was one that was + overlooked. Fixed. + Dec 24, 2013 * (esquifit) asked that netrw allow the + /cygdrive prefix be a user-alterable + parameter. + Jan 02, 2014 * Fixed a problem with netrw-based ballon + evaluation (ie. netrw#NetrwBaloonHelp() + not having been loaded error messages) + Jan 03, 2014 * Fixed a problem with tree listings + * New command installed: |:Ntree| + Jan 06, 2014 * (Ivan Brennan) reported a problem with + |netrw-P|. Fixed. + Jan 06, 2014 * Fixed a problem with |netrw-P| when the + modified file was to be abandoned. + Jan 15, 2014 * (Matteo Cavalleri) reported that when the + banner is suppressed and tree listing is + used, a blank line was left at the top of + the display. Fixed. + Jan 20, 2014 * (Gideon Go) reported that, in tree listing + style, with a previous window open, that + the wrong directory was being used to open + a file. Fixed. (P21) v149: Apr 18, 2013 * in wide listing format, now have maps for w and b to move to next/previous file Apr 26, 2013 * one may now copy files in the same @@ -2915,7 +3265,8 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク May 01, 2013 * :Explore ftp://... wasn't working. Fixed. May 02, 2013 * introduced |g:netrw_bannerbackslash| as requested by Paul Domaskis. - May 18, 2013 * More fixes for windows (not cygwin) + Jul 03, 2013 * Explore now avoids splitting when a buffer + will be hidden. v148: Apr 16, 2013 * changed Netrw's Style menu to allow direct choice of listing style, hiding style, and sorting style diff --git a/en/pi_netrw.txt b/en/pi_netrw.txt index c9d8752e0..32f576af6 100644 --- a/en/pi_netrw.txt +++ b/en/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 7.4. Last change: 2013 May 18 +*pi_netrw.txt* For Vim version 7.4. Last change: 2014 May 13 ------------------------------------------------ NETRW REFERENCE MANUAL by Charles E. Campbell @@ -6,7 +6,7 @@ Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 1999-2013 Charles E Campbell *netrw-copyright* +Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* The VIM LICENSE applies to the files in this package, including netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and syntax/netrw.vim. Like anything else that's free, netrw.vim and its @@ -49,6 +49,7 @@ Copyright: Copyright (C) 1999-2013 Charles E Campbell *netrw-copyright* Quick Reference: Commands...........................|netrw-browse-cmds| Bookmarking A Directory.............................|netrw-mb| Browsing............................................|netrw-cr| + Squeezing the Current Tree-Listing Directory......|:netrw-s-cr| Browsing With A Horizontally Split Window...........|netrw-o| Browsing With A New Tab.............................|netrw-t| Browsing With A Vertically Split Window.............|netrw-v| @@ -172,7 +173,7 @@ There are more protocols supported by netrw than just scp and ftp, too: see the next section, |netrw-externapp|, on how to use these external applications with netrw and vim. -PREVENTING LOADING *netrw-noload* +PREVENTING LOADING *netrw-noload* If you want to use plugins, but for some reason don't wish to use netrw, then you need to avoid loading both the plugin and the autoload portions of netrw. @@ -183,7 +184,7 @@ You may do so by placing the following two lines in your <.vimrc>: > < ============================================================================== -3. Netrw Reference *netrw-ref* {{{1 +3. Netrw Reference *netrw-ref* {{{1 Netrw supports several protocols in addition to scp and ftp as mentioned in |netrw-start|. These include dav, fetch, http,... well, just look @@ -192,21 +193,22 @@ You may do so by placing the following two lines in your <.vimrc>: > EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2 - Protocol Variable Default Value - -------- ---------------- ------------- - dav: *g:netrw_dav_cmd* = "cadaver" if cadaver is executable - dav: g:netrw_dav_cmd = "curl -o" elseif curl is available - fetch: *g:netrw_fetch_cmd* = "fetch -o" if fetch is available - ftp: *g:netrw_ftp_cmd* = "ftp" - http: *g:netrw_http_cmd* = "elinks" if elinks is available - http: g:netrw_http_cmd = "links" elseif links is available - http: g:netrw_http_cmd = "curl" elseif curl is available - http: g:netrw_http_cmd = "wget" elseif wget is available - http: g:netrw_http_cmd = "fetch" elseif fetch is available - rcp: *g:netrw_rcp_cmd* = "rcp" - rsync: *g:netrw_rsync_cmd* = "rsync -a" - scp: *g:netrw_scp_cmd* = "scp -q" - sftp: *g:netrw_sftp_cmd* = "sftp" + Protocol Variable Default Value + -------- ---------------- ------------- + dav: *g:netrw_dav_cmd* = "cadaver" if cadaver is executable + dav: g:netrw_dav_cmd = "curl -o" elseif curl is available + fetch: *g:netrw_fetch_cmd* = "fetch -o" if fetch is available + ftp: *g:netrw_ftp_cmd* = "ftp" + http: *g:netrw_http_cmd* = "elinks" if elinks is available + http: g:netrw_http_cmd = "links" elseif links is available + http: g:netrw_http_cmd = "curl" elseif curl is available + http: g:netrw_http_cmd = "wget" elseif wget is available + http: g:netrw_http_cmd = "fetch" elseif fetch is available + http: *g:netrw_http_put_cmd* = "curl -T" + rcp: *g:netrw_rcp_cmd* = "rcp" + rsync: *g:netrw_rsync_cmd* = "rsync -a" + scp: *g:netrw_scp_cmd* = "scp -q" + sftp: *g:netrw_sftp_cmd* = "sftp" *g:netrw_http_xcmd* : the option string for http://... protocols are specified via this variable and may be independently overridden. By @@ -223,6 +225,9 @@ EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2 let g:netrw_http_xcmd= "-dump >" < in your .vimrc. + g:netrw_http_put_cmd: this option specifies both the executable and + any needed options. This command does a PUT operation to the url. + READING *netrw-read* *netrw-nread* {{{2 @@ -286,7 +291,7 @@ SOURCING *netrw-source* {{{2 :Nsource "scp://[user@]machine[[:#]port]/path" uses scp :Nsource "sftp://[user@]machine/path" uses sftp -DIRECTORY LISTING *netrw-trailingslash* *netrw-dirlist* {{{2 +DIRECTORY LISTING *netrw-trailingslash* *netrw-dirlist* {{{2 One may browse a directory to get a listing by simply attempting to edit the directory: > @@ -343,9 +348,9 @@ settings are described below, in |netrw-browser-options|, and in *g:netrw_bufsettings* the settings that netrw buffers have (default) noma nomod nonu nowrap ro nobl - *g:netrw_chgwin* specifies a window number where file edits will take - place. (also see |netrw-C|) - (default) not defined + *g:netrw_chgwin* specifies a window number where subsequent file edits + will take place. (also see |netrw-C|) + (default) -1 *g:Netrw_funcref* specifies a function (or functions) to be called when netrw edits a file. The file is first edited, and @@ -366,9 +371,9 @@ settings are described below, in |netrw-browser-options|, and in value of this variable to see if the alternate ftp method works for your setup. - *g:netrw_ftp_options* Chosen by default, these options are supposed to turn - interactive prompting off and to restrain ftp from - attempting auto-login upon initial connection. + *g:netrw_ftp_options* Chosen by default, these options are supposed to + turn interactive prompting off and to restrain ftp + from attempting auto-login upon initial connection. However, it appears that not all ftp implementations support this (ex. ncftp). ="-i -n" @@ -399,8 +404,8 @@ settings are described below, in |netrw-browser-options|, and in *g:netrw_preview* =0 (default) preview window shown in a horizontally split window =1 preview window shown in a vertically split window. - Also affects the "previous window" (see |netrw-P|) in - the same way. + Also affects the "previous window" (see |netrw-P|) + in the same way. *g:netrw_scpport* = "-P" : option to use to set port for scp *g:netrw_sshport* = "-p" : option to use to set port for ssh @@ -538,15 +543,17 @@ which contains ftp commands which will be automatically run whenever ftp starts. You may use this feature to enter a user and password for one site: > userid password -< *netrw-windows-netrc* *netrw-windows-s* -If |g:netrw_ftp_cmd| contains -s:[path/]MACHINE, then (on Windows machines only) -netrw will substitute the current machine name requested for ftp connections -for MACHINE. Hence one can have multiple machine.ftp files containing login -and password for ftp. Example: > +< *netrw-windows-netrc* *netrw-windows-s* +If |g:netrw_ftp_cmd| contains -s:[path/]MACHINE, then (on Windows machines +only) netrw will substitute the current machine name requested for ftp +connections for MACHINE. Hence one can have multiple machine.ftp files +containing login and password for ftp. Example: > let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE' vim ftp://myhost.somewhere.net/ + will use a file > + C:\Users\Myself\myhost.ftp < Often, ftp will need to query the user for the userid and password. @@ -676,7 +683,7 @@ your <.vimrc> customization file: > < ============================================================================== -6. Transparent Remote File Editing *netrw-transparent* {{{1 +6. Transparent Remote File Editing *netrw-transparent* {{{1 Transparent file transfers occur whenever a regular file read or write (invoked via an |:autocmd| for |BufReadCmd|, |BufWriteCmd|, or |SourceCmd| @@ -750,7 +757,7 @@ below, a {netfile} is an url to a remote file. ============================================================================== -8. Variables and Options *netrw-var* *netrw-settings* {{{1 +8. Variables and Options *netrw-var* *netrw-settings* {{{1 (also see: |netrw-options| |netrw-variables| |netrw-protocol| |netrw-browser-settings| |netrw-browser-options| ) @@ -790,7 +797,7 @@ set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|) =1 use default method to do ftp > ----------------------------------------------------------------------- < - *netrw-internal-variables* + *netrw-internal-variables* The script will also make use of the following variables internally, albeit temporarily. > @@ -816,8 +823,7 @@ variables listed below, and may be modified by the user. ------------------------ Option Type Setting Meaning --------- -------- -------------- --------------------------- -< - netrw_ftp variable =doesn't exist userid set by "user userid" +< netrw_ftp variable =doesn't exist userid set by "user userid" =0 userid set by "user userid" =1 userid set by "userid" NetReadFixup function =doesn't exist no change @@ -825,17 +831,18 @@ variables listed below, and may be modified by the user. read via ftp automatically transformed however they wish by NetReadFixup() - g:netrw_dav_cmd variable ="cadaver" if cadaver is executable - g:netrw_dav_cmd variable ="curl -o" elseif curl is executable - g:netrw_fetch_cmd variable ="fetch -o" if fetch is available - g:netrw_ftp_cmd variable ="ftp" - g:netrw_http_cmd variable ="fetch -o" if fetch is available - g:netrw_http_cmd variable ="wget -O" else if wget is available - g:netrw_list_cmd variable ="ssh USEPORT HOSTNAME ls -Fa" - g:netrw_rcp_cmd variable ="rcp" - g:netrw_rsync_cmd variable ="rsync -a" - g:netrw_scp_cmd variable ="scp -q" - g:netrw_sftp_cmd variable ="sftp" > + g:netrw_dav_cmd var ="cadaver" if cadaver is executable + g:netrw_dav_cmd var ="curl -o" elseif curl is executable + g:netrw_fetch_cmd var ="fetch -o" if fetch is available + g:netrw_ftp_cmd var ="ftp" + g:netrw_http_cmd var ="fetch -o" if fetch is available + g:netrw_http_cmd var ="wget -O" else if wget is available + g:netrw_http_put_cmd var ="curl -T" + g:netrw_list_cmd var ="ssh USEPORT HOSTNAME ls -Fa" + g:netrw_rcp_cmd var ="rcp" + g:netrw_rsync_cmd var ="rsync -a" + g:netrw_scp_cmd var ="scp -q" + g:netrw_sftp_cmd var ="sftp" > ------------------------------------------------------------------------- < *netrw-ftp* @@ -1037,8 +1044,8 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 <del> Netrw will attempt to remove the file/directory |netrw-del| - Makes Netrw go up one directory |netrw--| a Toggles between normal display, |netrw-a| - hiding (suppress display of files matching g:netrw_list_hide) - showing (display only files which match g:netrw_list_hide) + hiding (suppress display of files matching g:netrw_list_hide) + showing (display only files which match g:netrw_list_hide) c Make browsing directory the current directory |netrw-c| C Setting the editing window |netrw-C| d Make a directory |netrw-d| @@ -1063,7 +1070,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 mx Apply arbitrary shell command to marked files |netrw-mx| mz Compress/decompress marked files |netrw-mz| o Enter the file/directory under the cursor in a new |netrw-o| - browser window. A horizontal split is used. + browser window. A horizontal split is used. O Obtain a file specified by cursor |netrw-O| p Preview the file |netrw-p| P Browse in the previously used window |netrw-P| @@ -1077,7 +1084,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 u Change to recently-visited directory |netrw-u| U Change to subsequently-visited directory |netrw-U| v Enter the file/directory under the cursor in a new |netrw-v| - browser window. A vertical split is used. + browser window. A vertical split is used. x View file with an associated program |netrw-x| X Execute filename under cursor via |system()| |netrw-X| @@ -1091,22 +1098,26 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 <rightmouse> (gvim only) delete file/directory using word under mouse <2-leftmouse> (gvim only) when: - * in a netrw-selected file, AND - * |g:netrw_retmap| == 1 AND - * the user doesn't already have a <2-leftmouse> + * in a netrw-selected file, AND + * |g:netrw_retmap| == 1 AND + * the user doesn't already have a <2-leftmouse> mapping defined before netrw is autoloaded, then a double clicked leftmouse button will return to the netrw browser window. See |g:netrw_retmap|. - <s-leftmouse> (gvim only) like mf, will mark files + <s-leftmouse> (gvim only) like mf, will mark files. Dragging + the shifted leftmouse will mark multiple files. + (see |netrw-mf|) (to disable mouse buttons while browsing: |g:netrw_mousemaps|) *netrw-quickcom* *netrw-quickcoms* QUICK REFERENCE: COMMANDS *netrw-explore-cmds* *netrw-browse-cmds* {{{2 - :NetrwClean[!] ...........................................|netrw-clean| - :NetrwSettings ...........................................|netrw-settings| + :NetrwClean[!]............................................|netrw-clean| + :NetrwSettings............................................|netrw-settings| + :Ntree....................................................|netrw-ntree| :Explore[!] [dir] Explore directory of current file......|netrw-explore| :Hexplore[!] [dir] Horizontal Split & Explore.............|netrw-explore| + :Lexplore [dir] Left Explorer Toggle...................|netrw-explore| :Nexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| :Pexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| :Rexplore Return to Explorer.....................|netrw-explore| @@ -1171,6 +1182,12 @@ are introduced into a directory), the listing may become out-of-date. One may always refresh directory listing buffers by pressing ctrl-L (see |netrw-ctrl-l|). + *:netrw-s-cr* + Squeezing the Current Tree-Listing Directory~ + When the tree listing style is enabled (see |netrw-i|) and one is using + gvim, then the <s-cr> mapping may be used to squeeze (close) the + directory currently containing the cursor. + Related topics: |netrw-o| |netrw-p| |netrw-P| |netrw-t| |netrw-v| Associated setting variables: |g:netrw_browse_split| |g:netrw_fastbrowse| @@ -1219,9 +1236,7 @@ cursor at the left. There is only one tree listing buffer; using "v" on a displayed subdirectory will split the screen, but the same buffer will be shown twice. -Associated setting variable: |g:netrw_altv| |g:netrw_winsize| - -Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-v| +Related Actions: |netrw-cr| |netrw-o| |netrw-t| |netrw-v| Associated setting variables: |g:netrw_altv| control right/left splitting |g:netrw_winsize| control initial sizing @@ -1243,11 +1258,12 @@ The wide listing format uses two or more contiguous spaces to delineate filenames; when using that format, netrw won't be able to recognize or use filenames which have two or more contiguous spaces embedded in the name or any trailing spaces. The thin listing format will, however, work with such files. -This listing format is the most compact. +The wide listing format is the most compact. The tree listing format has a top directory followed by files and directories -preceded by a "|". One may open and close directories by pressing the <cr> -key while atop the directory name. +preceded by one or more "|"s, which indicate the directory depth. One may +open and close directories by pressing the <cr> key while atop the directory +name. One may make a preferred listing style your default; see |g:netrw_liststyle|. As an example, by putting the following line in your .vimrc, > @@ -1321,6 +1337,17 @@ See |g:netrw_dirhistmax| for how to control the quantity of history stack slots. +CHANGING TREE TOP *netrw-ntree* *:Ntree* + +One may specify a new tree top for tree listings using > + + :Ntree [dirname] + +Without a "dirname", the current line is used (and any leading depth +information is elided). +With a "dirname", the specified directory name is used. + + NETRW CLEAN *netrw-clean* *:NetrwClean* With :NetrwClean one may easily remove netrw from one's home directory; @@ -1436,8 +1463,16 @@ If files have been marked with |netrw-mf|: (local marked file list) Marked files (and empty directories) will be deleted; again, you'll be asked to confirm the deletion before it actually takes place. +A further approach is to delete files which match a pattern. + + * use :MF pattern (see |netrw-:MF|); then press "D". + + * use mr (see |netrw-mr|) which will prompt you for pattern. + This will cause the matching files to be marked. Then, + press "D". + The |g:netrw_rm_cmd|, |g:netrw_rmf_cmd|, and |g:netrw_rmdir_cmd| variables are -used to control the attempts to remove files and directories. The +used to control the attempts to remove remote files and directories. The g:netrw_rm_cmd is used with files, and its default value is: g:netrw_rm_cmd: ssh HOSTNAME rm @@ -1445,12 +1480,12 @@ g:netrw_rm_cmd is used with files, and its default value is: The g:netrw_rmdir_cmd variable is used to support the removal of directories. Its default value is: - g:netrw_rmdir_cmd: ssh HOSTNAME rmdir + |g:netrw_rmdir_cmd|: ssh HOSTNAME rmdir If removing a directory fails with g:netrw_rmdir_cmd, netrw then will attempt to remove it again using the g:netrw_rmf_cmd variable. Its default value is: - g:netrw_rmf_cmd: ssh HOSTNAME rm -f + |g:netrw_rmf_cmd|: ssh HOSTNAME rm -f Related topics: |netrw-d| Associated setting variable: |g:netrw_localrmdir| |g:netrw_rm_cmd| @@ -1458,35 +1493,52 @@ Associated setting variable: |g:netrw_localrmdir| |g:netrw_rm_cmd| *netrw-explore* *netrw-hexplore* *netrw-nexplore* *netrw-pexplore* -*netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore* +*netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore* *netrw-lexplore* DIRECTORY EXPLORATION COMMANDS {{{2 :[N]Explore[!] [dir]... Explore directory of current file *:Explore* :[N]Hexplore[!] [dir]... Horizontal Split & Explore *:Hexplore* - :Rexplore ... Return to Explorer *:Rexplore* + :Rexplore ... Return to/from Explorer *:Rexplore* :[N]Sexplore[!] [dir]... Split&Explore current file's directory *:Sexplore* :Texplore [dir]... Tab & Explore *:Texplore* :[N]Vexplore[!] [dir]... Vertical Split & Explore *:Vexplore* + :Lexplore [dir]... Left Explorer Toggle *:Lexplore* Used with :Explore **/pattern : (also see |netrw-starstar|) :Nexplore............. go to next matching file *:Nexplore* :Pexplore............. go to previous matching file *:Pexplore* + *netrw-:Explore* :Explore will open the local-directory browser on the current file's directory (or on directory [dir] if specified). The window will be split only if the file has been modified, otherwise the browsing window will take over that window. Normally the splitting is taken horizontally. + Also see: |netrw-:Rexplore| :Explore! is like :Explore, but will use vertical splitting. + *netrw-:Lexplore* +:Lexplore [dir] toggles an Explorer window on the left hand side + of the current tab It will open a netrw window on the current + directory if [dir] is omitted; a :Lexplore [dir] will show + the specified directory in the left-hand side browser display + no matter from which window the command is issued. By default, + :Lexplore will change an uninitialized |g:netrw_chgwin| to 2; + edits will thus be preferentially made in window#2. + Also see: |netrw-C|| |g:netrw_chgwin| |g:netrw_winsize| + |netrw-p| |netrw-P|| |g:netrw_browse_split| + *netrw-:Sexplore* :Sexplore will always split the window before invoking the local-directory browser. As with Explore, the splitting is normally done horizontally. :Sexplore! [dir] is like :Sexplore, but the splitting will be done vertically. + *netrw-:Hexplore* :Hexplore [dir] does an :Explore with |:belowright| horizontal splitting. :Hexplore! [dir] does an :Explore with |:aboveleft| horizontal splitting. + *netrw-:Vexplore* :Vexplore [dir] does an :Explore with |:leftabove| vertical splitting. :Vexplore! [dir] does an :Explore with |:rightbelow| vertical splitting. -:Texplore [dir] does a tabnew before generating the browser window + *netrw-:Texplore* +:Texplore [dir] does a |:tabnew| before generating the browser window By default, these commands use the current file's directory. However, one may explicitly provide a directory (path) to use. @@ -1498,12 +1550,25 @@ Otherwise, the |g:netrw_winsize| variable, if it has been specified by the user, is used to control the quantity of rows and/or columns new explorer windows should have. -:Rexplore This command is a little different from the others. When one - edits a file, for example by pressing <cr> when atop a file in - a netrw browser window, :Rexplore will return the display to - that of the last netrw browser window. It is a command version - of the <2-leftmouse> map (which is only available under gvim and - cooperative terms). + *netrw-:Rexplore* +:Rexplore This command is a little different from the others as it doesn't + necessarily open an Explorer window. + + Return to Explorer~ + When one edits a file, for example by pressing <cr> when the + cursor is atop a file in a netrw browser window, :Rexplore will + return the display to that of the last netrw browser display + in that window. + + Return from Explorer~ + Conversely, when one is editing a directory, issuing a :Rexplore + will return to editing the file that was last edited in that + window. + + The <2-leftmouse> map (which is only available under gvim and + cooperative terms) does the same as :Rexplore. + +Also see: |g:netrw_alto| |g:netrw_altv| |g:netrw_winsize| *netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* @@ -1547,11 +1612,12 @@ As an example, consider The status line will show, on the right hand side of the status line, a message like "Match 3 of 20". -Associated setting variables: |g:netrw_keepdir| |g:netrw_browse_split| - |g:netrw_fastbrowse| |g:netrw_ftp_browse_reject| - |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| - |g:netrw_ftp_timelist_cmd| |g:netrw_list_cmd| - |g:netrw_liststyle| +Associated setting variables: + |g:netrw_keepdir| |g:netrw_browse_split| + |g:netrw_fastbrowse| |g:netrw_ftp_browse_reject| + |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| + |g:netrw_ftp_timelist_cmd| |g:netrw_list_cmd| + |g:netrw_liststyle| DISPLAYING INFORMATION ABOUT FILE *netrw-qf* {{{2 @@ -1641,10 +1707,10 @@ entry in the listing. Netrw will use the command in |g:netrw_list_cmd| to perform the directory listing operation after changing HOSTNAME to the host specified by the -user-provided url. By default netrw provides the command as: +user-prpvided url. By default netrw provides the command as: > ssh HOSTNAME ls -FLa - +< where the HOSTNAME becomes the [user@]hostname as requested by the attempt to read. Naturally, the user may override this command with whatever is preferred. The NetList function which implements remote browsing @@ -1696,9 +1762,36 @@ As a quick shortcut, one may press > to toggle between hiding files which begin with a period (dot) and not hiding them. -Associated setting variable: |g:netrw_list_hide| |g:netrw_hide| +Associated setting variables: |g:netrw_list_hide| |g:netrw_hide| Associated topics: |netrw-a| |netrw-ctrl-h| |netrw-mh| + *netrw-gitignore* +Netrw provides a helper function 'netrw_gitignore#Hide()' that, when used with +|g:netrw_list_hide| automatically hides all git-ignored files. + +'netrw_gitignore#Hide' searches for patterns in the following files: + './.gitignore' + './.git/info/exclude' + global gitignore file: `git config --global core.excludesfile` + system gitignore file: `git config --system core.excludesfile` + +Files that do not exist, are ignored. +Git-ignore patterns are taken from existing files, and converted to patterns for +hiding files. For example, if you had '*.log' in your '.gitignore' file, it +would be converted to '.*\.log'. + +To use this function, simply assign it's output to |g:netrw_list_hide| option. + + Example: let g:netrw_list_hide= netrw_gitignore#Hide() + Git-ignored files are hidden in Netrw. + + Example: let g:netrw_list_hide= netrw_gitignore#Hide('my_gitignore_file') + Function can take additional files with git-ignore patterns. + + Example: g:netrw_list_hide= netrw_gitignore#Hide() . '.*\.swp$' + Combining 'netrw_gitignore#Hide' with custom patterns. + + IMPROVING BROWSING *netrw-listhack* *netrw-ssh-hack* {{{2 Especially with the remote directory browser, constantly entering the password @@ -1778,6 +1871,15 @@ passwords: http://sial.org/howto/openssh/publickey-auth/ + Ssh hints: + + Thomer Gil has provided a hint on how to speed up netrw+ssh: + http://thomer.com/howtos/netrw_ssh.html + + Alex Young has several hints on speeding ssh up: + http://usevim.com/2012/03/16/editing-remote-files/ + + LISTING BOOKMARKS AND HISTORY *netrw-qb* *netrw-listbookmark* {{{2 Pressing "qb" (query bookmarks) will list both the bookmarked directories and @@ -1800,8 +1902,8 @@ directory. Attempts to make a local directory that already exists (as either a file or a directory) will be detected, reported on, and ignored. Related topics: |netrw-D| -Associated setting variables: |g:netrw_localmkdir| |g:netrw_mkdir_cmd| - |g:netrw_remote_mkdir| +Associated setting variables: |g:netrw_localmkdir| |g:netrw_mkdir_cmd| + |g:netrw_remote_mkdir| |netrw-%| MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* {{{2 @@ -1821,12 +1923,29 @@ directory. Associated setting variable: |g:netrw_keepdir| -MARKING FILES *netrw-mf* {{{2 +MARKING FILES *netrw-:MF* *netrw-mf* {{{2 (also see |netrw-mr|) -One may mark files with the cursor atop a filename and then pressing "mf". -With gvim, one may also mark files with <s-leftmouse>. The following netrw -maps make use of marked files: +Netrw has several ways of marking files: + + * One may mark files with the cursor atop a filename and + then pressing "mf". + + * With gvim, in addition one may mark files with + <s-leftmouse>. (see |netrw-mouse|) + + * One may use the :MF command, which takes a list of + files (for local directories, the list may include + wildcards -- see |glob()|) > + + :MF *.c +< + * Note that :MF uses |<f-args>| to break the line + at spaces. + + * Mark files based upon the quickfix list (|netrw-qF|) + +The following netrw maps make use of marked files: |netrw-a| Hide marked files/directories |netrw-D| Delete marked files/directories @@ -1835,13 +1954,12 @@ maps make use of marked files: |netrw-me| Edit marked files |netrw-mF| Unmark marked files |netrw-mg| Apply vimgrep to marked files - |netrw-mm| Move marked files + |netrw-mm| Move marked files to target |netrw-mp| Print marked files |netrw-mt| Set target for |netrw-mm| and |netrw-mc| |netrw-mT| Generate tags using marked files |netrw-mx| Apply shell command to marked files |netrw-mz| Compress/Decompress marked files - |netrw-qF| Mark files using quickfix list |netrw-O| Obtain marked files |netrw-R| Rename marked files @@ -1860,6 +1978,10 @@ like > < into $HOME/.vim/after/syntax/netrw.vim . +If the mouse is enabled and works with your vim, you may use <s-leftmouse> to +mark one or more files. You may mark multiple files by dragging the shifted +leftmouse. (see |netrw-mouse|) + *markfilelist* *global_markfilelist* *local_markfilelist* All marked files are entered onto the global marked file list; there is only one such list. In addition, every netrw buffer also has its own local marked @@ -1868,6 +1990,12 @@ means that each directory has its own local marked file list. The various commands which operate on marked files use one or the other of the marked file lists. +Known Problem: if one is using tree mode (|g:netrw_liststyle|) and several +directories have files with the same name, then marking such a file will +result in all such files being highlighted as if they were all marked. The +|markfilelist|, however, will only have the selected file in it. This problem +is unlikely to be fixed. + UNMARKING FILES *netrw-mF* {{{2 (also see |netrw-mf|) @@ -2025,6 +2153,10 @@ Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|): * However, if the cursor is atop a directory name, then that directory is used for the copy/move-to target + * One may use the :MT [directory] command to set the target *netrw-:MT* + This command uses |<q-args>|, so spaces in the directory name are + permitted without escaping. + There is only one copy/move-to target per vim session; ie. the target is a script variable (see |s:var|) and is shared between all netrw windows (in an instance of vim). @@ -2055,9 +2187,9 @@ http://www.drchip.org/astronaut/src/index.html , and have > in my <.vimrc>. When a remote set of files are tagged, the resulting tags file is "obtained"; -ie. a copy is transferred to the local system's directory. The local tags +ie. a copy is transferred to the local system's directory. The now local tags file is then modified so that one may use it through the network. The -modification is concerns the names of the files in the tags; each filename is +modification made concerns the names of the files in the tags; each filename is preceded by the netrw-compatible url used to obtain it. When one subsequently uses one of the go to tag actions (|tags|), the url will be used by netrw to edit the desired file and go to the tag. @@ -2066,34 +2198,38 @@ Associated setting variables: |g:netrw_ctags| |g:netrw_ssh_cmd| MARKED FILES: TARGET DIRECTORY USING BOOKMARKS *netrw-Tb* {{{2 -Sets the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|). +Sets the marked file copy/move-to target. The |netrw-qb| map will give you a list of bookmarks (and history). One may choose one of the bookmarks to become your marked file target by using [count]Tb (default count: 1). Related topics: + Copying files to target............................|netrw-mc| Listing Bookmarks and History......................|netrw-qb| Marked Files: Setting The Target Directory.........|netrw-mt| Marked Files: Target Directory Using History.......|netrw-Th| Marking Files......................................|netrw-mf| Marking Files by Regular Expression................|netrw-mr| + Moving files to target.............................|netrw-mm| MARKED FILES: TARGET DIRECTORY USING HISTORY *netrw-Th* {{{2 -Sets the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|). +Sets the marked file copy/move-to target. The |netrw-qb| map will give you a list of history (and bookmarks). One may choose one of the history entries to become your marked file target by using [count]Th (default count: 0; ie. the current directory). Related topics: + Copying files to target............................|netrw-mc| Listing Bookmarks and History......................|netrw-qb| Marked Files: Setting The Target Directory.........|netrw-mt| Marked Files: Target Directory Using Bookmarks.....|netrw-Tb| Marking Files......................................|netrw-mf| Marking Files by Regular Expression................|netrw-mr| + Moving files to target.............................|netrw-mm| MARKED FILES: UNMARKING *netrw-mu* {{{2 @@ -2114,7 +2250,15 @@ your browsing preferences. (see also: |netrw-settings|) --- ----------- Var Explanation --- ----------- -< *g:netrw_alto* change from above splitting to below splitting +< *g:netrw_altfile* some like |CTRL-^| to return to the last + edited file. Choose that by setting this + parameter to 1. + Others like |CTRL-^| to return to the + netrw browsing buffer. Choose that by setting + this parameter to 0. + default: =0 + + *g:netrw_alto* change from above splitting to below splitting by setting this variable (see |netrw-o|) default: =&sb (see |'sb'|) @@ -2142,6 +2286,10 @@ your browsing preferences. (see also: |netrw-settings|) to get vertical splitting instead of horizontal splitting. + Related topics: + |netrw-cr| |netrw-C| + |g:netrw_alto| |g:netrw_altv| + *g:netrw_browsex_viewer* specify user's preference for a viewer: > "kfmclient exec" "gnome-open" @@ -2205,6 +2353,7 @@ your browsing preferences. (see also: |netrw-settings|) *g:netrw_dynamic_maxfilenamelen* =32: enables dynamic determination of |g:netrw_maxfilenamelen|, which affects local file long listing. + *g:netrw_errorlvl* =0: error levels greater than or equal to this are permitted to be displayed 0: notes @@ -2212,7 +2361,7 @@ your browsing preferences. (see also: |netrw-settings|) 2: errors *g:netrw_fastbrowse* =0: slow speed directory browsing; - never re-uses directory listings, + never re-uses directory listings; always obtains directory listings. =1: medium speed directory browsing; re-use directory listings only @@ -2235,6 +2384,11 @@ your browsing preferences. (see also: |netrw-settings|) trading off accuracy (ie. up-to-date listing) versus speed. + *g:netrw_ffkeep* (default: doesn't exist) + If this variable exists and is zero, then + netrw will not do a save and restore for + |'fileformat'|. + *g:netrw_fname_escape* =' ?&;%' Used on filenames before remote reading/writing @@ -2303,10 +2457,19 @@ your browsing preferences. (see also: |netrw-settings|) stamp information and file size) = 2: wide listing (multiple files in columns) = 3: tree style listing + *g:netrw_list_hide* comma separated pattern list for hiding files Patterns are regular expressions (see |regexp|) - Example: let g:netrw_list_hide= '.*\.swp$' - default: "" + There's some special support for git-ignore + files: you may add the output from the helper + function 'netrw_gitignore#Hide() automatically + hiding all gitignored files. + For more details see |netrw-gitignore|. + + Examples: + let g:netrw_list_hide= '.*\.swp$' + let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$' + default: "" *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin ="copy" Windows @@ -2348,7 +2511,7 @@ your browsing preferences. (see also: |netrw-settings|) evaluation will be suppressed (see |'ballooneval'|) - *g:netrw_remote_mkdir* command for making a local directory + *g:netrw_remote_mkdir* command for making a remote directory via ftp (also see |g:netrw_mkdir_cmd|) default: "mkdir" @@ -2371,13 +2534,13 @@ your browsing preferences. (see also: |netrw-settings|) default: =0 - *g:netrw_rm_cmd* command for removing files + *g:netrw_rm_cmd* command for removing remote files default: "ssh USEPORT HOSTNAME rm" - *g:netrw_rmdir_cmd* command for removing directories + *g:netrw_rmdir_cmd* command for removing remote directories default: "ssh USEPORT HOSTNAME rmdir" - *g:netrw_rmf_cmd* command for removing softlinks + *g:netrw_rmf_cmd* command for removing remote softlinks default: "ssh USEPORT HOSTNAME rm -f" *g:netrw_sort_by* sort by "name", "time", or "size" @@ -2396,7 +2559,7 @@ your browsing preferences. (see also: |netrw-settings|) *g:netrw_sort_sequence* when sorting by name, first sort by the comma-separated pattern sequence. Note that - the filigree added to indicate filetypes + any filigree added to indicate filetypes should be accounted for in your pattern. default: '[\/]$,*,\.bak$,\.o$,\.h$, \.info$,\.swp$,\.obj$' @@ -2412,7 +2575,7 @@ your browsing preferences. (see also: |netrw-settings|) netrwMakefile: [mM]akefile *.mak netrwObj : *.o *.obj netrwTags : tags ANmenu ANtags - netrwTilde : *~ + netrwTilde : * netrwTmp : tmp* *tmp These syntax highlighting groups are linked @@ -2421,8 +2584,27 @@ your browsing preferences. (see also: |netrw-settings|) one may put lines like > hi link netrwCompress Visual < into one's <.vimrc> to use one's own - preferences. - + preferences. Alternatively, one may + put such specifications into + .vim/after/syntax/netrw.vim. + + As an example, I myself use a dark-background + colorscheme with the following in + .vim/after/syntax/netrw.vim: > + + hi netrwCompress term=NONE cterm=NONE gui=NONE ctermfg=10 guifg=green ctermbg=0 guibg=black + hi netrwData term=NONE cterm=NONE gui=NONE ctermfg=9 guifg=blue ctermbg=0 guibg=black + hi netrwHdr term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1 + hi netrwLex term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1 + hi netrwYacc term=NONE cterm=NONE,italic gui=NONE guifg=SeaGreen1 + hi netrwLib term=NONE cterm=NONE gui=NONE ctermfg=14 guifg=yellow + hi netrwObj term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwTilde term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwTmp term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwTags term=NONE cterm=NONE gui=NONE ctermfg=12 guifg=red + hi netrwDoc term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=yellow2 guibg=Blue3 + hi netrwSymLink term=NONE cterm=NONE gui=NONE ctermfg=220 ctermbg=27 guifg=grey60 +< *g:netrw_ssh_browse_reject* ssh can sometimes produce unwanted lines, messages, banners, and whatnot that one doesn't want masquerading as "directories" and "files". @@ -2457,6 +2639,7 @@ your browsing preferences. (see also: |netrw-settings|) ml_get errors, try putting let g:netrw_use_noswf= 0 in your .vimrc. + default: 1 *g:netrw_winsize* specify initial size of new windows made with "o" (see |netrw-o|), "v" (see |netrw-v|), @@ -2467,6 +2650,9 @@ your browsing preferences. (see also: |netrw-settings|) If g:netrw_winsize is less than zero, then the absolute value of g:netrw_winsize lines or columns will be used for the new window. + If g:netrw_winsize is zero, then a normal + split will be made (ie. |'equalalways'| will + take effect, for example). default: 50 (for 50%) *g:netrw_xstrlen* Controls how netrw computes string lengths, @@ -2496,7 +2682,7 @@ Netrw has been designed to handle user options by saving them, setting the options to something that's compatible with netrw's needs, and then restoring them. However, the autochdir option: > :set acd -is problematical. Autochdir sets the current directory to that containing the +is problematic. Autochdir sets the current directory to that containing the file you edit; this apparently also applies to directories. In other words, autochdir sets the current directory to that containing the "file" (even if that "file" is itself a directory). @@ -2547,9 +2733,11 @@ Related topics: *netrw-createfile* OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY *netrw-%* -To open a file in netrw's current directory, press "%". This map will -query the user for a new filename; an empty file by that name will be -placed in the netrw's current directory (ie. b:netrw_curdir). +To open a new file in netrw's current directory, press "%". This map +will query the user for a new filename; an empty file by that name will +be placed in the netrw's current directory (ie. b:netrw_curdir). + +Related topics: |netrw-d| PREVIEW WINDOW *netrw-p* *netrw-preview* {{{2 @@ -2573,6 +2761,9 @@ These will: will use only 30% of the columns available; the rest of the window is used for the preview window. +Also see: |g:netrw_chgwin| |netrw-P| + + PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2 To edit a file or directory in the previously used (last accessed) window (see @@ -2592,6 +2783,8 @@ Associated setting variables: |g:netrw_preview| control horizontal vs vertical splitting |g:netrw_winsize| control initial sizing +Also see: |g:netrw_chgwin| |netrw-p| + REFRESHING THE LISTING *netrw-ctrl-l* *netrw-ctrl_l* {{{2 @@ -2629,6 +2822,7 @@ If there are marked files: (see |netrw-mf|) Note that moving files is a dangerous operation; copies are safer. That's because a "move" for remote files is actually a copy + delete -- and if the copy fails and the delete does not, you may lose the file. + Use at your own risk. The g:netrw_rename_cmd variable is used to implement renaming. By default its value is: @@ -2655,7 +2849,16 @@ One may select a netrw window for editing with the "C" mapping, or by setting g:netrw_chgwin to the selected window number. Subsequent selection of a file to edit (|netrw-cr|) will use that window. -Related topics: |netrw-cr| + * C by itself, will select the current window for editing via + |netrw-cr| + + * [count]C the count will be used as the window number to be used + for editing via |netrw-cr|. +Using > + let g:netrw_chgwin= -1 +will restore the default editing behavior (ie. use the current window). + +Related topics: |netrw-cr| |g:netrw_browse_split| Associated setting variables: |g:netrw_chgwin| @@ -2742,7 +2945,7 @@ Associated setting variables: |g:netrw_chgwin| (taken from an answer provided by Wu Yongwei on the vim mailing list) - I now see the problem. You code page is not 936, right? Vim + I now see the problem. Your code page is not 936, right? Vim seems only able to open files with names that are valid in the current code page, as are many other applications that do not use the Unicode version of Windows APIs. This is an OS-related @@ -2943,6 +3146,15 @@ Associated setting variables: |g:netrw_chgwin| all netrw's mouse mappings, not just the <leftmouse> one. (see |g:netrw_mousemaps|) + *netrw-p16* + P16. When editing remote files (ex. :e ftp://hostname/path/file), + under Windows I get an |E303| message complaining that its unable + to open a swap file. + + (romainl) It looks like you are starting Vim from a protected + directory. Start if from your $HOME or another writable + directory. + ============================================================================== 11. Debugging Netrw Itself *netrw-debug* {{{1 @@ -2950,9 +3162,6 @@ The <netrw.vim> script is typically available as something like: > /usr/local/share/vim/vim7x/plugin/netrwPlugin.vim /usr/local/share/vim/vim7x/autoload/netrw.vim -< -or- > - /usr/local/share/vim/vim6x/plugin/netrwPlugin.vim - /usr/local/share/vim/vim6x/autoload/netrw.vim < which is loaded automatically at startup (assuming :set nocp). @@ -2962,9 +3171,7 @@ which is loaded automatically at startup (assuming :set nocp). or http://vim.sourceforge.net/scripts/script.php?script_id=120 - It now comes as a "vimball"; if you're using vim 7.0 or earlier, - you'll need to update vimball, too. See - http://www.drchip.org/astronaut/vim/index.html#VIMBALL + Decho.vim is provided as a "vimball"; see |vimball-intro|. 2. Edit the <netrw.vim> file by typing: > @@ -2988,15 +3195,153 @@ which is loaded automatically at startup (assuming :set nocp). read/write your file over the network in a separate tab. To save the file, use > + :tabnext :set bt= :w! DBG -< Please send that information to <netrw.vim>'s maintainer, > + +< Furthermore, it'd be helpful if you would type > + :Dsep <command> +< where <command> is the command you're about to type next, + thereby making it easier to associate which part of the + debugging trace is due to which command. + + Please send that information to <netrw.vim>'s maintainer along + with the o/s you're using and vim version you're using + (see |:version|) > NdrOchip at ScampbellPfamily.AbizM - NOSPAM < ============================================================================== 12. History *netrw-history* {{{1 + v152: Apr 08, 2014 * uses the |'noswapfile'| option (requires + vim 7.4 with patch 213) + * (Enno Nagel) turn |'rnu'| off in netrw + buffers. + * (Quinn Strahl) suggested that netrw + allow regular window splitting to occur, + thereby allowing |'equalalways'| to take + effect. + * (qingtian zhao) normally, netrw will + save and restore the |'fileformat'|; + however, sometimes that isn't wanted + Apr 14, 2014 * whenever netrw marks a buffer as ro, + it will also mark it as nomod. + Apr 16, 2014 * sftp protocol now supported by + netrw#Obtain(); this means that one + may use "mc" to copy a remote file + to a local file using sftp, and that + the |netrw-O| command can obtain remote + files via sftp. + * added [count]C support (see |netrw-C|) + Apr 18, 2014 * when |g:netrw_chgwin| is one more than + the last window, then vertically split + the last window and use it as the + chgwin window. + May 09, 2014 * SavePosn was "saving filename under cursor" + from a non-netrw window when using :Rex. + v151: Jan 22, 2014 * extended :Rexplore to return to buffer + prior to Explore or editing a directory + * (Ken Takata) netrw gave error when + clipboard was disabled. Sol'n: Placed + several if has("clipboard") tests in. + * Fixed ftp://X@Y@Z// problem; X@Y now + part of user id, and only Z is part of + hostname. + * (A Loumiotis) reported that completion + using a directory name containing spaces + did not work. Fixed with a retry in + netrw#Explore() which removes the + backslashes vim inserted. + Feb 26, 2014 * :Rexplore now records the current file + using w:netrw_rexfile when returning via + |:Rexplore| + Mar 08, 2014 * (David Kotchan) provided some patches + allowing netrw to work properly with + windows shares. + * Multiple one-liner help messages available + by pressing <cr> while atop the "Quick + Help" line + * worked on ShellCmdPost, FocusGained event + handling. + * |:Lexplore| path: will be used to update + a left-side netrw browsing directory. + Mar 12, 2014 * |:netrw-s-cr|: use <s-cr> to close + tree directory implemented + Mar 13, 2014 * (Tony Mechylynck) reported that using + the browser with ftp on a directory, + and selecting a gzipped txt file, that + an E19 occurred (which was issued by + gzip.vim). Fixed. + Mar 14, 2014 * Implemented :MF and :MT (see |netrw-:MF| + and |netrw-:MT|, respectively) + Mar 17, 2014 * |:Ntree| [dir] wasn't working properly; fixed + Mar 18, 2014 * Changed all uses of set to setl + Mar 18, 2014 * Commented the netrw_btkeep line in + s:NetrwOptionSave(); the effect is that + netrw buffers will remain as |'bt'|=nofile. + This should prevent swapfiles being created + for netrw buffers. + Mar 20, 2014 * Changed all uses of lcd to use s:NetrwLcd() + instead. Consistent error handling results + and it also handles Window's shares + * Fixed |netrw-d| command when applied with ftp + * https: support included for netrw#NetRead() + v150: Jul 12, 2013 * removed a "keepalt" to allow ":e #" to + return to the netrw directory listing + Jul 13, 2013 * (Jonas Diemer) suggested changing + a <cWORD> to <cfile>. + Jul 21, 2013 * (Yuri Kanivetsky) reported that netrw's + use of mkdir did not produce directories + following the user's umask. + Aug 27, 2013 * introduced |g:netrw_altfile| option + Sep 05, 2013 * s:Strlen() now uses |strdisplaywidth()| + when available, by default + Sep 12, 2013 * (Selyano Baldo) reported that netrw wasn't + opening some directories properly from the + command line. + Nov 09, 2013 * |:Lexplore| introduced + * (Ondrej Platek) reported an issue with + netrw's trees (P15). Fixed. + * (Jorge Solis) reported that "t" in + tree mode caused netrw to forget its + line position. + Dec 05, 2013 * Added <s-leftmouse> file marking + (see |netrw-mf|) + Dec 05, 2013 * (Yasuhiro Matsumoto) Explore should use + strlen() instead s:Strlen() when handling + multibyte chars with strpart() + (ie. strpart() is byte oriented, not + display-width oriented). + Dec 09, 2013 * (Ken Takata) Provided a patch; File sizes + and a portion of timestamps were wrongly + highlighted with the directory color when + setting `:let g:netrw_liststyle=1` on Windows. + * (Paul Domaskis) noted that sometimes + cursorline was activating in non-netrw + windows. All but one setting of cursorline + was done via setl; there was one that was + overlooked. Fixed. + Dec 24, 2013 * (esquifit) asked that netrw allow the + /cygdrive prefix be a user-alterable + parameter. + Jan 02, 2014 * Fixed a problem with netrw-based ballon + evaluation (ie. netrw#NetrwBaloonHelp() + not having been loaded error messages) + Jan 03, 2014 * Fixed a problem with tree listings + * New command installed: |:Ntree| + Jan 06, 2014 * (Ivan Brennan) reported a problem with + |netrw-P|. Fixed. + Jan 06, 2014 * Fixed a problem with |netrw-P| when the + modified file was to be abandoned. + Jan 15, 2014 * (Matteo Cavalleri) reported that when the + banner is suppressed and tree listing is + used, a blank line was left at the top of + the display. Fixed. + Jan 20, 2014 * (Gideon Go) reported that, in tree listing + style, with a previous window open, that + the wrong directory was being used to open + a file. Fixed. (P21) v149: Apr 18, 2013 * in wide listing format, now have maps for w and b to move to next/previous file Apr 26, 2013 * one may now copy files in the same @@ -3009,7 +3354,8 @@ which is loaded automatically at startup (assuming :set nocp). May 01, 2013 * :Explore ftp://... wasn't working. Fixed. May 02, 2013 * introduced |g:netrw_bannerbackslash| as requested by Paul Domaskis. - May 18, 2013 * More fixes for windows (not cygwin) + Jul 03, 2013 * Explore now avoids splitting when a buffer + will be hidden. v148: Apr 16, 2013 * changed Netrw's Style menu to allow direct choice of listing style, hiding style, and sorting style From 90c220709c2df759b31b931c1ce6faa29e651ba0 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 24 Aug 2014 22:29:33 +0900 Subject: [PATCH 597/783] cmdline --- doc/cmdline.jax | 5 ++++- en/cmdline.txt | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/cmdline.jax b/doc/cmdline.jax index 58e3211cd..685ff1d8c 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim バージョン 7.4. Last change: 2014 Feb 23 +*cmdline.txt* For Vim バージョン 7.4. Last change: 2014 Aug 16 VIMリファレンスマニュアル by Bram Moolenaar @@ -1039,6 +1039,9 @@ Note: ノーマルモードで <Tab> を打ち込むと、カーソルの次の ドウ自身のステータスラインはドラッグできる。上向きにずっとドラッグすると、直上 のウィンドウのステータスラインも動き、コマンドラインウィンドウがさらに広くなる。 +|getcmdwintype()| 関数は開いているコマンドラインの種類を返す。値の説明は +|cmdwin-char| 参照。 + 自動コマンド の 適 用 diff --git a/en/cmdline.txt b/en/cmdline.txt index f58389af8..a31f7107f 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.4. Last change: 2014 Feb 23 +*cmdline.txt* For Vim version 7.4. Last change: 2014 Aug 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1084,6 +1084,9 @@ another window, or drag statuslines of other windows. You can drag the statusline of the command-line window itself and the statusline above it. Thus you can resize the command-line window, but not others. +The |getcmdwintype()| function returns the type of the command-line being +edited as described in |cmdwin-char|. + AUTOCOMMANDS From 8a12aad61ac5410a39269f10d5a20aaff99b30a7 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 24 Aug 2014 22:29:41 +0900 Subject: [PATCH 598/783] eval --- doc/eval.jax | 12 +++++++++--- en/eval.txt | 14 ++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index a298de141..2d995863f 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1,4 +1,4 @@ -*eval.txt* For Vim バージョン 7.4. Last change: 2014 Jul 19 +*eval.txt* For Vim バージョン 7.4. Last change: 2014 Aug 16 VIMリファレンスマニュアル by Bram Moolenaar @@ -1761,6 +1761,7 @@ getbufvar( {expr}, {varname} [, {def}]) getcmdline() 文字列 現在のコマンドラインを取得 getcmdpos() 数値 コマンドラインのカーソル位置を取得 getcmdtype() 文字列 現在のコマンドラインの種類を取得 +getcmdwintype() 文字列 現在のコマンドラインウィンドウの種類 getcurpos() リスト カーソルの位置 getcwd() 文字列 現在の作業ディレクトリ getfontname( [{name}]) 文字列 使用しているフォントの名前 @@ -2075,8 +2076,8 @@ argidx() 引数リスト内の現在のインデックスを返す。最初の *arglistid()* arglistid([{winnr}, [ {tabnr} ]]) 引数リストの ID を返す。値は引数リストを区別するための数値であ - る。ゼロはグローバル引数リストを意味する。 - 引数が無効な場合はゼロを返す。 + る。ゼロはグローバル引数リストを意味する。 |arglist| 参照。 + 引数が無効な場合は -1 を返す。 引数を指定しなかった場合はカレントウィンドウが使われる。 {winnr} を指定した場合はカレントタブページ内のウィンドウが使わ @@ -3259,6 +3260,11 @@ getcmdtype() *getcmdtype()* きのみ有効。そうでないときは空文字列を返す。 |getcmdpos()|, |setcmdpos()|, |getcmdline()|も参照。 +getcmdwintype() *getcmdwintype()* + 現在のコマンドラインウィンドウ (|command-line-window|) の種類 + を返す。返り値の意味は |getcmdtype()| と同じ。コマンドライン + ウィンドウでなければ空文字列を返す。 + *getcurpos()* getcurpos() カーソルの位置を返す。これは getpos('.') に似ているが、追加の 情報を含む: diff --git a/en/eval.txt b/en/eval.txt index 91ba0daa8..28cbb927b 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2014 Jul 19 +*eval.txt* For Vim version 7.4. Last change: 2014 Aug 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1807,7 +1807,8 @@ getchar( [expr]) Number get one character from the user getcharmod( ) Number modifiers for the last typed character getcmdline() String return the current command-line getcmdpos() Number return cursor position in command-line -getcmdtype() String return the current command-line type +getcmdtype() String return current command-line type +getcmdwintype() String return current command-line window type getcurpos() List position of the cursor getcwd() String the current working directory getfontname( [{name}]) String name of font being used @@ -2112,8 +2113,8 @@ argidx() The result is the current index in the argument list. 0 is arglistid([{winnr}, [ {tabnr} ]]) Return the argument list ID. This is a number which identifies the argument list being used. Zero is used for the - global argument list. - Return zero if the arguments are invalid. + global argument list. See |arglist|. + Return -1 if the arguments are invalid. Without arguments use the current window. With {winnr} only use this window in the current tab page. @@ -3349,6 +3350,11 @@ getcmdtype() *getcmdtype()* Returns an empty string otherwise. Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|. +getcmdwintype() *getcmdwintype()* + Return the current |command-line-window| type. Possible return + values are the same as |getcmdtype()|. Returns an empty string + when not in the command-line window. + *getcurpos()* getcurpos() Get the position of the cursor. This is like getpos('.'), but includes an extra item in the list: From 32c2f493fe877548af1237424dce1cd74096f613 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 24 Aug 2014 22:29:52 +0900 Subject: [PATCH 599/783] pattern --- doc/pattern.jax | 18 ++++++++++++------ en/pattern.txt | 19 +++++++++++++------ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index 854b84b5a..d19b4b26a 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -1,4 +1,4 @@ -*pattern.txt* For Vim バージョン 7.4. Last change: 2014 May 28 +*pattern.txt* For Vim バージョン 7.4. Last change: 2014 Jul 30 VIMリファレンスマニュアル by Bram Moolenaar @@ -700,11 +700,17 @@ cat\Z "cat" と "càt" ("a" + 0x0300) にマッチする。 し、処理時間を制限するために、マッチの現在行と、(もしあれば) 1 つ前の 行だけが検索されます。ほとんどの場合はこれで十分ですし、遅くなり過ぎる こともありません。 - "\@<=" や "\@<!" の後にくるパターンは最初にチェックされます。そのため、 - 先行するアトムの内側にある \(\) に対する "\1" のような参照は機能しませ - ん。順番を逆にした場合は機能します: - Example マッチするもの ~ - \1\@<=,\([a-z]\+\) "abc,abc" の ",abc" + + 古い正規表現エンジンでは "\@<=" や "\@<!" の後にくるパターンは最初に + チェックされます。そのため、先行するアトムの内側にある \(\) に対する + "\1" のような参照は機能しません。順番を逆にした場合は機能します: + 悪い例 マッチするもの ~ + \%#=1\1\@<=,\([a-z]\+\) "abc,abc" の中の ",abc" + + 新しい正規表現エンジンでは動作が異なるので、この動作の違いに依存しない + ようにするのが無難です。可能なら \@<= の使用を避けてください: + 例 マッチするもの ~ + \([a-z]\+\)\zs,\1 "abc,abc" の中の ",abc" \@123<= "\@<=" と同じですが 123 バイトまでしか探索しません。失敗すると分かって diff --git a/en/pattern.txt b/en/pattern.txt index 207a43d87..f66ac170a 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.4. Last change: 2014 May 28 +*pattern.txt* For Vim version 7.4. Last change: 2014 Jul 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -706,11 +706,18 @@ overview. But to limit the time needed, only the line where what follows matches is searched, and one line before that (if there is one). This should be sufficient to match most things and not be too slow. - The part of the pattern after "\@<=" and "\@<!" are checked for a - match first, thus things like "\1" don't work to reference \(\) inside - the preceding atom. It does work the other way around: - Example matches ~ - \1\@<=,\([a-z]\+\) ",abc" in "abc,abc" + + In the old regexp engine the part of the pattern after "\@<=" and + "\@<!" are checked for a match first, thus things like "\1" don't work + to reference \(\) inside the preceding atom. It does work the other + way around: + Bad example matches ~ + \%#=1\1\@<=,\([a-z]\+\) ",abc" in "abc,abc" + + However, the new regexp engine works differently, it is better to not + rely on this behavior, do not use \@<= if it can be avoided: + Example matches ~ + \([a-z]\+\)\zs,\1 ",abc" in "abc,abc" \@123<= Like "\@<=" but only look back 123 bytes. This avoids trying lots From da04a80b3211d786e71a4ec8aad4e8b026297f3b Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 24 Aug 2014 22:30:04 +0900 Subject: [PATCH 600/783] quickref --- doc/quickref.jax | 3 ++- en/quickref.txt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/quickref.jax b/doc/quickref.jax index ccfb1278c..f8ebd4d1a 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -1,4 +1,4 @@ -*quickref.txt* For Vim バージョン 7.4. Last change: 2014 Jun 25 +*quickref.txt* For Vim バージョン 7.4. Last change: 2014 Aug 06 VIMリファレンスマニュアル by Bram Moolenaar @@ -848,6 +848,7 @@ 'regexpengine' 're' デフォルトで使用する正規表現エンジン 'relativenumber' 'rnu' 相対行番号を表示する 'remap' 再帰的マッピングを有効にする +'renderoptions' 'rop' Windows でのテキストレンダリングの設定 'report' 変更された行の数の方向が出る最小値 'restorescreen' 'rs' Win32: 終了時スクリーンを更新する 'revins' 'ri' 挿入モードで入力方向が逆になる diff --git a/en/quickref.txt b/en/quickref.txt index 79d87fa91..096921f00 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.4. Last change: 2014 Jun 25 +*quickref.txt* For Vim version 7.4. Last change: 2014 Aug 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -831,6 +831,7 @@ Short explanation of each option: *option-list* 'regexpengine' 're' default regexp engine to use 'relativenumber' 'rnu' show relative line number in front of each line 'remap' allow mappings to work recursively +'renderoptions' 'rop' options for text rendering on Windows 'report' threshold for reporting nr. of lines changed 'restorescreen' 'rs' Win32: restore screen when exiting 'revins' 'ri' inserting characters will work backwards From 1f8992f7dcc5a7615bcc0d2d6d12048573324e22 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 24 Aug 2014 22:30:14 +0900 Subject: [PATCH 601/783] usr_41 --- doc/usr_41.jax | 3 ++- en/usr_41.txt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/usr_41.jax b/doc/usr_41.jax index 741bf9022..f0da0021e 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim バージョン 7.4. Last change: 2014 May 28 +*usr_41.txt* For Vim バージョン 7.4. Last change: 2014 Aug 16 VIM USER MANUAL - by Bram Moolenaar @@ -772,6 +772,7 @@ substitute() コマンドの前後にいろいろな処理を入れたりする getcmdpos() コマンドラインにおけるカーソル位置を取得 setcmdpos() コマンドラインにおけるカーソル位置を設定 getcmdtype() 現在のコマンドラインの種類を返す + getcmdwintype() 現在のコマンドラインウィンドウの種類を返す Quickfixとロケーションリスト: *quickfix-functions* getqflist() quickfixエラーのリスト diff --git a/en/usr_41.txt b/en/usr_41.txt index f30b79a2e..28bdbad89 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.4. Last change: 2014 May 28 +*usr_41.txt* For Vim version 7.4. Last change: 2014 Aug 16 VIM USER MANUAL - by Bram Moolenaar @@ -793,6 +793,7 @@ Command line: *command-line-functions* getcmdpos() get position of the cursor in the command line setcmdpos() set position of the cursor in the command line getcmdtype() return the current command-line type + getcmdwintype() return the current command-line window type Quickfix and location lists: *quickfix-functions* getqflist() list of quickfix errors From d7380d9fd02bf5aa381d2f0b43f0d5fa17e66018 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 24 Aug 2014 22:30:24 +0900 Subject: [PATCH 602/783] various --- doc/various.jax | 2 +- en/various.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/various.jax b/doc/various.jax index 4265f170d..61f222794 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -1,4 +1,4 @@ -*various.txt* For Vim バージョン 7.4. Last change: 2014 May 22 +*various.txt* For Vim バージョン 7.4. Last change: 2014 Aug 06 VIM リファレンスマニュアル by Bram Moolenaar diff --git a/en/various.txt b/en/various.txt index a03a0bd94..4ad328773 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.4. Last change: 2014 May 22 +*various.txt* For Vim version 7.4. Last change: 2014 Aug 06 VIM REFERENCE MANUAL by Bram Moolenaar From f01d5c62f5f69730e34f6fe274d47f4b0e9bd05a Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 25 Aug 2014 22:34:01 +0900 Subject: [PATCH 603/783] Fix typo (Close #110) --- doc/eval.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index 2d995863f..e9e41ab33 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -3394,7 +3394,7 @@ getpid() Vim のプロセス ID を数値で返す。Unix と MS-Windows では *getpos()* getpos({expr}) {expr}の位置を返す。{expr}として指定できる値については - |line()|を参照。カーソル位置を得るには |getcurspos()| を参照。 + |line()|を参照。カーソル位置を得るには |getcurpos()| を参照。 結果は次の4個の要素を持つリスト|List|: [bufnum, lnum, col, off] "bufnum" は、'0 や 'A のようなマークが指定されたときは、その From 2f3032aa5ffb0041db739d4b45ffcb89f0107785 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Mon, 25 Aug 2014 23:06:44 +0900 Subject: [PATCH 604/783] autocmd --- doc/autocmd.jax | 20 ++++++++++++++++++-- en/autocmd.txt | 15 ++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index f76e751a2..ca2f1f1bb 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim バージョン 7.4. Last change: 2014 May 02 +*autocmd.txt* For Vim バージョン 7.4. Last change: 2014 Aug 22 VIMリファレンスマニュアル by Bram Moolenaar @@ -286,6 +286,8 @@ Vimは以下のイベントを認識する。イベント名が大文字か小 |ShellCmdPost| シェルコマンドを実行した後 |ShellFilterPost| シェルコマンドでフィルタをかけた後 +|CmdUndefined| 呼び出そうとしたユーザー定義コマンドが定義されていな + かったとき |FuncUndefined| 呼び出そうとしたユーザー定義関数が定義されていなかった とき |SpellFileMissing| スペリングファイルを使おうとしたが見つからなかったとき @@ -477,6 +479,17 @@ BufWriteCmd バッファ全体をファイルに書き込む前。ファイル BufWritePost バッファ全体をファイルに書き込んだ後 (イベント BufWritePre によるコマンドをアンドゥする役目を 果たす)。 + *CmdUndefined* +CmdUndefined ユーザー定義コマンドが使われたが、定義されてい + なかったとき。必要なときのみコマンドを定義する + のに便利である。パターンはコマンド名に対して照 + 合される。<amatch> と <afile> の両方ともコマン + ド名に設定される。 + NOTE: 未定義のコマンドに対して自動補完は機能し + ない。このイベントを使う代わりにユーザー定義コ + マンドを常に定義するようにしてそのコマンドから + autoload 関数を呼び出すようにするという方法も + ある。|autoload| 参照。 *CmdwinEnter* CmdwinEnter Command-lineウィンドウに入った後。この特殊な ウィンドウに対してのみオプションを設定するのに @@ -665,7 +678,10 @@ FuncUndefined ユーザー定義関数が使われたが、定義されてい たとき。必要なときのみ関数を定義するのに便利で ある。パターンは関数名に対して照合される。 <amatch> と <afile> の両方とも関数名に設定され - る。|autoload-functions|を参照。 + る。 + NOTE: Vim スクリプトを書くときには autoload 関 + 数を使う方がよい。 + |autoload-functions|を参照。 *GUIEnter* GUIEnter GUI の開始に成功し、ウィンドウを開いた後。 gvim を使ったときは、VimEnter の前に発生する。 diff --git a/en/autocmd.txt b/en/autocmd.txt index 2a8becebf..03f95cac6 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.4. Last change: 2014 May 02 +*autocmd.txt* For Vim version 7.4. Last change: 2014 Aug 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -278,6 +278,7 @@ Name triggered by ~ |ShellCmdPost| after executing a shell command |ShellFilterPost| after filtering with a shell command +|CmdUndefined| a user command is used but it isn't defined |FuncUndefined| a user function is used but it isn't defined |SpellFileMissing| a spell file is used but it can't be found |SourcePre| before sourcing a Vim script @@ -465,6 +466,16 @@ BufWriteCmd Before writing the whole buffer to a file. *BufWritePost* BufWritePost After writing the whole buffer to a file (should undo the commands for BufWritePre). + *CmdUndefined* +CmdUndefined When a user command is used but it isn't + defined. Useful for defining a command only + when it's used. The pattern is matched + against the command name. Both <amatch> and + <afile> are set to the name of the command. + NOTE: Autocompletion won't work until the + command is defined. An alternative is to + always define the user command and have it + invoke an autoloaded function. See |autoload|. *CmdwinEnter* CmdwinEnter After entering the command-line window. Useful for setting options specifically for @@ -670,6 +681,8 @@ FuncUndefined When a user function is used but it isn't when it's used. The pattern is matched against the function name. Both <amatch> and <afile> are set to the name of the function. + NOTE: When writing Vim scripts a better + alternative is to use an autoloaded function. See |autoload-functions|. *GUIEnter* GUIEnter After starting the GUI successfully, and after From 1a54b955cfdae2779482779f7f4b5a62b2deff8c Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 30 Aug 2014 17:12:52 +0900 Subject: [PATCH 605/783] options --- doc/options.jax | 174 ++++++++++++++++++++++++++++++++++++++-------- en/options.txt | 179 ++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 297 insertions(+), 56 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index d7b3e9bdd..583d03081 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1,4 +1,4 @@ -*options.txt* For Vim バージョン 7.4. Last change: 2013 Nov 12 +*options.txt* For Vim バージョン 7.4. Last change: 2014 Aug 09 VIMリファレンスマニュアル by Bram Moolenaar @@ -1271,6 +1271,35 @@ Note 1番目の形式では、行全体がオプション指定に使われる て表示されるかを、このオプションで指定する。これが機能するのはASCIIと 8bit文字( 'encoding' が8bitエンコーディングのとき)だけである。 + *'breakindent'* *'bri'* +'breakindent' 'bri' 切替 (既定ではオフ) + ウィンドウについてローカル + {Vi にはない} + {Vim が |+linebreak| 機能付きでコンパイルされたときの + み有効} + 折り返された行を同じインデントで表示する (行の先頭にある空白の量と同じ + だけインデントされる)。つまりテキストブロックの水平位置が保持される。 + + *'breakindentopt'* *'briopt'* +'breakindentopt' 'briopt' 文字列 (既定では空) + ウィンドウについてローカル + {Vi にはない} + {Vim が |+linebreak| 機能付きでコンパイルされたときの + み有効} + 'breakindent' の設定。次の項目を設定できる。それぞれの項目はカンマで区 + 切る: + min:{n} テキストの最小幅。'breakindent' が適用されたとき + にテキストがその幅よりも狭くならないようにする。こ + れは、ウィンドウの右端近くまでインデントされたテキ + ストが折り返されたときにたくさんの行に渡って表示さ + れるのを防ぐ。 + shift:{n} 'breakindent' が適用されたときに、折り返された最初 + の行を指定した量だけずらす。動的なフランス式の段落 + インデント (負の値) や行の継続を強調 (正の値) した + りできる。 + sbr 追加インデントの前に 'showbreak' を表示する。 + 初期設定は、min が 20、shift が 0 である。 + *'browsedir'* *'bsdir'* 'browsedir' 'bsdir' 文字列 (既定では "last") グローバル @@ -2253,11 +2282,18 @@ Note 1番目の形式では、行全体がオプション指定に使われる zip PkZip 互換メソッド。弱い暗号化。 Vim 7.2 以前との後方互換。 *blowfish* - blowfish Blowfish メソッド。強い暗号化。Vim 7.3 以降が必要。こ - のメソッドで保存されたファイルは Vim 7.2 以前のバー - ジョンでは開くことができない。ファイルには "seed" が付 - 加されるので、ファイルを書き込むたびに暗号化されたバイ - ト列は異なる。 + blowfish Blowfish メソッド。中強度の暗号化だが実装上の弱点があ + る。Vim 7.3 以降が必要。このメソッドで保存されたファイ + ルは Vim 7.2 以前のバージョンでは開くことができない。 + ファイルには "seed" が付加されるのでファイルを書き込む + たびに暗号化されたバイト列は異なる。 + *blowfish2* + blowfish2 Blowfish メソッド。中強度の暗号化。Vim 7.4.399 以降が + 必要。このメソッドで保存されたファイルは Vim 7.3 以前 + のバージョンでは開くことができない。ファイルには + "seed" が付加されるのでファイルを書き込むたびに暗号化 + されたバイト列は異なる。undo ファイルは (テキスト部分 + だけではなく) 全体が暗号化される。 暗号化されたファイルを読み込んだとき、'cryptmethod' は自動的にそのファ イルに使用されている暗号メソッドに設定される。つまり、そのまま @@ -4705,8 +4741,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる に指定された文字のところで、長い行を折り返す。'wrapmargin' や 'textwidth' と違い、これはファイルに実際の <EOL> を挿入しない。このオ プションが影響するのはファイルの表示方法であり、内容ではない。 + 'breakindent' がオンのときは行はインデントされて表示される。そして、 'showbreak' に設定された文字が折り返された行の先頭に置かれる。このオプ - ションは、'wrap' がオフであるか、'list' がオンのときには使われない。 + ションは、'wrap' がオフのときには使われない。 Note 大抵、<EOL> の後の <Tab> は正しい数の空白として表示されないので注 意。 @@ -4887,8 +4924,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる グローバル/バッファについてローカル |global-local| {Vi にはない} コマンド ":make" で使われるプログラム。|:make_makeprg| を参照。値には - 文字 '%' と '#' を使える。これらはそれぞれ現在のファイル名と代替ファイ - ル名に展開される。|:_%| |:_#| + 文字 '%' と '#' を使える (|:_%| と |:_#| 参照)。これらはそれぞれ現在の + ファイル名と代替ファイル名に展開される。ファイル名に特殊文字が含まれる + ときは |::S| を使う。 環境変数は展開される |:set_env|。値に空白や '\' を含める方法については、 |option-backslash| を参照。Note 文字 '|' は2回エスケープすることに注意: 1回目はコマンド ":set" に対して、 2回目はコマンドの解釈に対してである。 @@ -5734,6 +5772,77 @@ Note 1番目の形式では、行全体がオプション指定に使われる 値のオンのままにしておくこと。昔の Vi スクリプトを使うときだけこれをオ フにすること。 + *'renderoptions'* *'rop'* +'renderoptions' 'rop' 文字列 (既定では空) + グローバル + {Vi にはない} + {MS-Windows で GUI と DIRECTX 付きでコンパイルされたと + きのみ有効} + テキストレンダラの選択とそのオプションの設定。オプションはレンダラごと + に異なる。 + + 構文: > + set rop=type:{renderer}(,{name}:{value})* +< + 現在、選択できる追加のレンダラは一つだけである。 + + レンダラ 振る舞い ~ + directx Vim は DirextX (DirectWrite) を使ってテキストを表示する。デ + フォルトの GDI よりも文字を綺麗に表示できる。 + MS-Windows の Vista 以降のバージョンで 'encoding' が "utf-8" + である必要がある。 + + オプション: + 名前 意味 型 値 ~ + gamma gamma float 1.0 - 2.2 (maybe) + contrast enhancedContrast float (unknown) + level clearTypeLevel float (unknown) + geom pixelGeometry int 0 - 2 (see below) + renmode renderingMode int 0 - 6 (see below) + taamode textAntialiasMode int 0 - 3 (see below) + + 詳細は次の URL を参照: + http://msdn.microsoft.com/en-us/library/dd368190.aspx + + geom: デバイスピクセルの内部構造。 + 0 - DWRITE_PIXEL_GEOMETRY_FLAT + 1 - DWRITE_PIXEL_GEOMETRY_RGB + 2 - DWRITE_PIXEL_GEOMETRY_BGR + + 詳細は次の URL を参照: + http://msdn.microsoft.com/en-us/library/dd368114.aspx + + renmode: 文字レンダリングの方法。 + 0 - DWRITE_RENDERING_MODE_DEFAULT + 1 - DWRITE_RENDERING_MODE_ALIASED + 2 - DWRITE_RENDERING_MODE_GDI_CLASSIC + 3 - DWRITE_RENDERING_MODE_GDI_NATURAL + 4 - DWRITE_RENDERING_MODE_NATURAL + 5 - DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC + 6 - DWRITE_RENDERING_MODE_OUTLINE + + 詳細は次の URL を参照: + http://msdn.microsoft.com/en-us/library/dd368118.aspx + + taamode: テキスト描画に使われるアンチエイリアスモード。 + 0 - D2D1_TEXT_ANTIALIAS_MODE_DEFAULT + 1 - D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE + 2 - D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE + 3 - D2D1_TEXT_ANTIALIAS_MODE_ALIASED + + 詳細は次の URL を参照: + http://msdn.microsoft.com/en-us/library/dd368170.aspx + + 例: > + set encoding=utf-8 + set gfn=Ricty_Diminished:h12:cSHIFTJIS + set rop=type:directx +< + 'guifont' にラスターフォント (Courier、Terminal、FixedSysなど) + が選択されているときは、自動的に GDI による描画に切り替わる。 + + 他のレンダタイプは現在のところサポートされていない。 + *'report'* 'report' 数値 (既定では 2) グローバル @@ -6754,6 +6863,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 内部メソッドでは候補リストの上の方には出てこない、あり がちなミスのためにこれを使う。スラッシュを含まない行は 無視されるのでコメントとすることができる。 + 第 2 列の単語は正しいものでない場合は、それは使われな + い。その単語がスペルミスとして扱われている場合は + ".add" ファイルにその単語を追加する。 このファイルは全ての言語に対して使われる。 expr:{expr} 式 {expr} を評価する。スペースによるトラブルを避けるた @@ -7028,6 +7140,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる すぐに削除される。'swapfile' がオンで、'updatecount' が非0 のときは、 スワップファイルはすぐに作られる。 |swap-file| と 'swapsync' も参照。 + スワップファイルを作成せずに新しいバッファを開きたい場合は + |:noswapfile| 修飾子を使う。 このオプションは、'bufhidden' と 'buftype' と共に、特別な種類のバッファ を指定するのに使われる。|special-buffers| を参照。 @@ -7660,7 +7774,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる "c" = 桁数足す 33 "r" = 行数足す 33 これは223桁までしか機能しないことに注意。解決策につい - ては "dec" を参照。 + ては "dec"、"urxvt"、"sgr" を参照。 xterm2 "xterm" と動作が似ているが、ドラッグ中もマウス位置を返 すような xterm に対して働く。こちらの方がずっと動作が 速く、正確である。これを使うには、ユーザーの xterm が @@ -7683,32 +7797,34 @@ Note 1番目の形式では、行全体がオプション指定に使われる pterm QNX pterm 風にマウスを扱う。 *urxvt-mouse* urxvt urxvt (rxvt-unicode) 風にマウスを扱う。 + 端末がこのエンコードスタイルをサポートしているときのみ + 機能する。"xterm" や "xterm2" のような 223 列の制限は + ない。 *sgr-mouse* sgr SGR スタイルのマウスレポートを発行するターミナル用に マウスを扱う。xterm のバージョン 277 かそれ以降で動作 - する。 + する。マウスは 223 列を超えても機能する。このオプショ + ンは "xterm2" と後方互換性がある。このスタイルでは + "xterm2" スタイルのマウスコードもデコードできる。 - マウスを使用するには、コンパイル時に |+mouse_xterm|, |+mouse_dec|, - |+mouse_netterm| 等のどれかの機能を有効にしておかなければならない。 + マウスを使用するには、コンパイル時に |+mouse_xterm| |+mouse_dec| + |+mouse_netterm| |+mouse_jsbterm| |+mouse_urxvt| |+mouse_sgr| 等のどれ + かの機能を有効にしておかなければならない。 本当に認識されるのは "xterm(2)" のみである。NetTerm のマウスコードは、 コンパイル時に有効にされていれば必ず認識される。DEC terminal のマウス コードは、コンパイル時に有効にされ、かつオプション 'ttymouse' が - "xterm" でないときのみ認識される (xterm と DEC のマウスコードが競合す - るため)。 - このオプションが自動的に "xterm" に設定されるのは、'term' が "xterm" - で始まり、かつ 'ttymouse' がすでに "xterm" または "xterm2" でないとき - である。このオプションの主な使い方は、ターミナル名が "xterm" で始まら - ないが、そのターミナルが xterm 風のマウスコードを認識できるときに、値 - を "xterm" に設定する、というものである。 - "sgr" に自動設定されるのは、xterm のバージョンが 277 かそれ以降の場合 - である。 - "xterm2" に自動設定されるのは、xterm のバージョンが 95 以上であると報 - 告されたときである。この設定は、機能 |+termresponse| がコンパイル時に - 有効になっており、かつターミナルオプション |t_RV| が xterm のバージョ - ンナンバーを求めるエスケープシーケンスに設定されていたときのみである。 - そうでないときはユーザーが "xterm2" と設定しなければならない。 - 'ttymouse' を "xterm2" に自動的に設定したくないときは、次のように - |t_RV| を空にすること。 > + "xterm"、"xterm2"、"urxvt"、"sgr" でないときのみ認識される (dec マウス + コードはそれらのコードと競合するため)。 + このオプションが自動的に "xterm" に設定されるのは、'term' が "xterm"、 + "mlterm"、"screen" のいずれかで始まり、'ttymouse' がまだ設定されていな + いときである。 + 加えて、Vim が |+termresponse| 機能付きでコンパイルされていて、|t_RV| + に xterm のバージョン番号を要求するためのエスケープシーケンスが設定さ + れているときは、さらに高度な判定手続きが使われる。 + xterm バージョンが 95 以上、276 以下であると報告されたときは "xterm2" + に設定される。xterm バージョンが 277 以上のときは "sgr" に設定される。 + 'ttymouse' を "xterm2" や "sgr" に自動的に設定したくないときは、次のよ + うに |t_RV| を空に設定する。 > :set t_RV= < *'ttyscroll'* *'tsl'* diff --git a/en/options.txt b/en/options.txt index 01dc6862c..2dcfa19e4 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.4. Last change: 2013 Nov 12 +*options.txt* For Vim version 7.4. Last change: 2014 Aug 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1200,6 +1200,38 @@ A jump table for the options with a short description can be found at |Q_op|. break if 'linebreak' is on. Only works for ASCII and also for 8-bit characters when 'encoding' is an 8-bit encoding. + *'breakindent'* *'bri'* +'breakindent' 'bri' boolean (default off) + local to window + {not in Vi} + {not available when compiled without the |+linebreak| + feature} + Every wrapped line will continue visually indented (same amount of + space as the beginning of that line), thus preserving horizontal blocks + of text. + + *'breakindentopt'* *'briopt'* +'breakindentopt' 'briopt' string (default empty) + local to window + {not in Vi} + {not available when compiled without the |+linebreak| + feature} + Settings for 'breakindent'. It can consist of the following optional + items and must be separated by a comma: + min:{n} Minimum text width that will be kept after + applying 'breakindent', even if the resulting + text should normally be narrower. This prevents + text indented almost to the right window border + occupying lot of vertical space when broken. + shift:{n} After applying 'breakindent', the wrapped line's + beginning will be shifted by the given number of + characters. It permits dynamic French paragraph + indentation (negative) or emphasizing the line + continuation (positive). + sbr Display the 'showbreak' value before applying the + additional indent. + The default value for min is 20 and shift is 0. + *'browsedir'* *'bsdir'* 'browsedir' 'bsdir' string (default: "last") global @@ -2197,10 +2229,18 @@ A jump table for the options with a short description can be found at |Q_op|. zip PkZip compatible method. A weak kind of encryption. Backwards compatible with Vim 7.2 and older. *blowfish* - blowfish Blowfish method. Strong encryption. Requires Vim 7.3 - or later, files can NOT be read by Vim 7.2 and older. - This adds a "seed" to the file, every time you write - the file the encrypted bytes will be different. + blowfish Blowfish method. Medium strong encryption but it has + an implementation flaw. Requires Vim 7.3 or later, + files can NOT be read by Vim 7.2 and older. This adds + a "seed" to the file, every time you write the file + the encrypted bytes will be different. + *blowfish2* + blowfish2 Blowfish method. Medium strong encryption. Requires + Vim 7.4.399 or later, files can NOT be read by Vim 7.3 + and older. This adds a "seed" to the file, every time + you write the file the encrypted bytes will be + different. The whole undo file is encrypted, not just + the pieces of text. When reading an encrypted file 'cryptmethod' will be set automatically to the detected method of the file being read. Thus if you write it @@ -4575,12 +4615,13 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {not available when compiled without the |+linebreak| feature} - If on Vim will wrap long lines at a character in 'breakat' rather + If on, Vim will wrap long lines at a character in 'breakat' rather than at the last character that fits on the screen. Unlike 'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file, - it only affects the way the file is displayed, not its contents. The - value of 'showbreak' is used to put in front of wrapped lines. - This option is not used when the 'wrap' option is off or 'list' is on. + it only affects the way the file is displayed, not its contents. + If 'breakindent' is set, line is visually indented. Then, the value + of 'showbreak' is used to put in front of wrapped lines. This option + is not used when the 'wrap' option is off. Note that <Tab> characters after an <EOL> are mostly not displayed with the right amount of white space. @@ -4760,8 +4801,9 @@ A jump table for the options with a short description can be found at |Q_op|. global or local to buffer |global-local| {not in Vi} Program to use for the ":make" command. See |:make_makeprg|. - This option may contain '%' and '#' characters, which are expanded to - the current and alternate file name. |:_%| |:_#| + This option may contain '%' and '#' characters (see |:_%| and |:_#|), + which are expanded to the current and alternate file name. Use |::S| + to escape file names in case they contain special characters. Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. Note that a '|' must be escaped twice: once for ":set" and once for @@ -5616,6 +5658,77 @@ A jump table for the options with a short description can be found at |Q_op|. this option at the default "on". Only switch it off when working with old Vi scripts. + *'renderoptions'* *'rop'* +'renderoptions' 'rop' string (default: empty) + global + {not in Vi} + {only available when compiled with GUI and DIRECTX on + MS-Windows} + Select a text renderer and set its options. The options depend on the + renderer. + + Syntax: > + set rop=type:{renderer}(,{name}:{value})* +< + Currently, only one optional renderer is available. + + render behavior ~ + directx Vim will draw text using DirectX (DirectWrite). It makes + drawn glyphs more beautiful than default GDI. + It requires 'encoding' is "utf-8", and only works on + MS-Windows Vista or newer version. + + Options: + name meaning type value ~ + gamma gamma float 1.0 - 2.2 (maybe) + contrast enhancedContrast float (unknown) + level clearTypeLevel float (unknown) + geom pixelGeometry int 0 - 2 (see below) + renmode renderingMode int 0 - 6 (see below) + taamode textAntialiasMode int 0 - 3 (see below) + + See this URL for detail: + http://msdn.microsoft.com/en-us/library/dd368190.aspx + + For geom: structure of a device pixel. + 0 - DWRITE_PIXEL_GEOMETRY_FLAT + 1 - DWRITE_PIXEL_GEOMETRY_RGB + 2 - DWRITE_PIXEL_GEOMETRY_BGR + + See this URL for detail: + http://msdn.microsoft.com/en-us/library/dd368114.aspx + + For renmode: method of rendering glyphs. + 0 - DWRITE_RENDERING_MODE_DEFAULT + 1 - DWRITE_RENDERING_MODE_ALIASED + 2 - DWRITE_RENDERING_MODE_GDI_CLASSIC + 3 - DWRITE_RENDERING_MODE_GDI_NATURAL + 4 - DWRITE_RENDERING_MODE_NATURAL + 5 - DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC + 6 - DWRITE_RENDERING_MODE_OUTLINE + + See this URL for detail: + http://msdn.microsoft.com/en-us/library/dd368118.aspx + + For taamode: antialiasing mode used for drawing text. + 0 - D2D1_TEXT_ANTIALIAS_MODE_DEFAULT + 1 - D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE + 2 - D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE + 3 - D2D1_TEXT_ANTIALIAS_MODE_ALIASED + + See this URL for detail: + http://msdn.microsoft.com/en-us/library/dd368170.aspx + + Example: > + set encoding=utf-8 + set gfn=Ricty_Diminished:h12:cSHIFTJIS + set rop=type:directx +< + If select a raster font (Courier, Terminal or FixedSys) to + 'guifont', it fallbacks to be drawn by GDI automatically. + + Other render types are currently not supported. + *'report'* 'report' number (default 2) global @@ -6624,6 +6737,10 @@ A jump table for the options with a short description can be found at |Q_op|. top of the suggestion list with the internal methods. Lines without a slash are ignored, use this for comments. + The word in the second column must be correct, + otherwise it will not be used. Add the word to an + ".add" file if it is currently flagged as a spelling + mistake. The file is used for all languages. expr:{expr} Evaluate expression {expr}. Use a function to avoid @@ -6887,6 +7004,8 @@ A jump table for the options with a short description can be found at |Q_op|. immediately deleted. When 'swapfile' is set, and 'updatecount' is non-zero, a swap file is immediately created. Also see |swap-file| and |'swapsync'|. + If you want to open a new buffer without creating a swap file for it, + use the |:noswapfile| modifier. This option is used together with 'bufhidden' and 'buftype' to specify special kinds of buffers. See |special-buffers|. @@ -7507,8 +7626,8 @@ A jump table for the options with a short description can be found at |Q_op|. "s" = button state "c" = column plus 33 "r" = row plus 33 - This only works up to 223 columns! See "dec" for a - solution. + This only works up to 223 columns! See "dec", + "urxvt", and "sgr" for solutions. xterm2 Works like "xterm", but with the xterm reporting the mouse position while the mouse is dragged. This works much faster and more precise. Your xterm must at @@ -7530,29 +7649,35 @@ A jump table for the options with a short description can be found at |Q_op|. pterm QNX pterm mouse handling. *urxvt-mouse* urxvt Mouse handling for the urxvt (rxvt-unicode) terminal. + The mouse works only if the terminal supports this + encoding style, but it does not have 223 columns limit + unlike "xterm" or "xterm2". *sgr-mouse* sgr Mouse handling for the terminal that emits SGR-styled - mouse reporting. Works with xterm version 277 or - later. + mouse reporting. The mouse works even in columns + beyond 223. This option is backward compatible with + "xterm2" because it can also decode "xterm2" style + mouse codes. The mouse handling must be enabled at compile time |+mouse_xterm| - |+mouse_dec| |+mouse_netterm|. + |+mouse_dec| |+mouse_netterm| |+mouse_jsbterm| |+mouse_urxvt| + |+mouse_sgr|. Only "xterm"(2) is really recognized. NetTerm mouse codes are always recognized, if enabled at compile time. DEC terminal mouse codes are recognized if enabled at compile time, and 'ttymouse' is not - "xterm" (because the xterm and dec mouse codes conflict). + "xterm", "xterm2", "urxvt" or "sgr" (because dec mouse codes conflict + with them). This option is automatically set to "xterm", when the 'term' option is - set to a name that starts with "xterm", and 'ttymouse' is not "xterm" - or "xterm2" already. The main use of this option is to set it to - "xterm", when the terminal name doesn't start with "xterm", but it can - handle xterm mouse codes. - The "sgr" value will be set if the xterm version is 277 or later. + set to a name that starts with "xterm", "mlterm", or "screen", and + 'ttymouse' is not set already. + Additionally, if vim is compiled with the |+termresponse| feature and + |t_RV| is set to the escape sequence to request the xterm version + number, more intelligent detection process runs. The "xterm2" value will be set if the xterm version is reported to be - 95 or higher. This only works when compiled with the |+termresponse| - feature and if |t_RV| is set to the escape sequence to request the - xterm version number. Otherwise "xterm2" must be set explicitly. - If you do not want 'ttymouse' to be set to "xterm2" automatically, set - t_RV to an empty string: > + from 95 to 276. The "sgr" value will be set if the xterm version is + 277 or highter. + If you do not want 'ttymouse' to be set to "xterm2" or "sgr" + automatically, set t_RV to an empty string: > :set t_RV= < *'ttyscroll'* *'tsl'* From 473b5f502ce547239ab31583efd203eb4865d620 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sat, 30 Aug 2014 22:32:48 +0900 Subject: [PATCH 606/783] syntax --- doc/syntax.jax | 159 +++++++++++++++++++++++++++++++--------- en/syntax.txt | 194 ++++++++++++++++++++++++++++++++++++------------- 2 files changed, 268 insertions(+), 85 deletions(-) diff --git a/doc/syntax.jax b/doc/syntax.jax index 4415ee726..94b61510d 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -1,4 +1,4 @@ -*syntax.txt* For Vim バージョン 7.4. Last change: 2013 Aug 22 +*syntax.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 VIMリファレンスマニュアル by Bram Moolenaar @@ -378,8 +378,8 @@ Vimはロードした構文の名前を変数 "b:current_syntax" に記憶して である。Vimは新しいウィンドウを作成しそこにHTMLファイルを構築する。 変換結果を保存すればブラウザでそれを表示できる。Vim での表示と同じ色で表示され -るはずである。ブラウザーのアドレスバーで URL の末尾に #L123 や #123 と付け加え -ると、その特定の行にジャンプできる (#123 は javascript サポート時のみ)。ま +るはずである。|g:html_line_ids| を有効化すると、ブラウザーのアドレスバーで URL +の末尾に (例えば) #L123 や #123 と付け加えることで、その行にジャンプできる。ま た、|g:html_dynamic_folds| を有効化すると、Vim の折り畳みを表示したり隠したり できる。 @@ -422,12 +422,10 @@ Vimはロードした構文の名前を変数 "b:current_syntax" に記憶して もしカレントウィンドウが |diff| の一部で、 |g:html_diff_one_file| が設定されていない場合、:TOhtml はカレントタブ内の diff を表示しているすべてのウィンド - ウを変換して <table> 要素で並べた HTML を生成する。そ - の場合、特定のウィンドウの特定の行にジャンプするには、 - 例えば #W1L42 で一番目のウィンドウの 42 行目、#W3L87 - で三番目のウィンドウの 87 行目にジャンプできる。ウィン - ドウ番号を省略した場合は一番目のウィンドウになる - (javascript が有効な場合)。 + ウを変換して <table> 要素で並べた HTML を生成する。 + |g:html_line_ids| が有効なら、(例えば) #W1L42 で 1 番 + 目のウィンドウの 42 行目、#W3L87 で 3 番目の 87 行目に + ジャンプできる。 例: > @@ -437,8 +435,8 @@ Vimはロードした構文の名前を変数 "b:current_syntax" に記憶して < *g:html_diff_one_file* 初期設定: 0 -0 なら、カレントタブ内の |diff| を表示しているすべてのウィンドウが変換され、 -<table> 要素で並べられた HTML が生成される。 +0 なら、|:TOhtml| を使うとカレントタブ内の |diff| を表示しているすべてのウィン +ドウが変換され、<table> 要素で並べられた HTML が生成される。 1 なら、カレントバッファのみが変換される。 例: > @@ -483,6 +481,23 @@ Note -s フラグは .vimrc とプラグインの読み込みを抑制する。 :let g:html_number_lines = 0 'number' の設定に従うように戻すには: > :unlet g:html_number_lines +< + *g:html_line_ids* +初期設定: 1。|g:html_number_lines| が設定されていないときは 0。 +この設定が 1 なら、各行番号に HTML の id 属性を付ける。行番号が表示されていな +いときは空の <span> 要素を挿入して id を付ける。この ID 属性は、HTML が単一の +バッファから生成されたときは L123 のような形になる。diff 表示から生成されたと +きは W2L123 のような形になる。これを使って (特定の diff ウィンドウの) 特定の行 +にジャンプできる。指定された行にジャンプする前にその行の折り畳みを開くための +Javascript が挿入される (|g:html_dynamic_folds|)。javascript はウィンドウ ID +や行番号前の L を省略できる機能も提供する。 +例: > + + page.html#L123 単一バッファファイルの 123 行目にジャンプ + page.html#123 同上 + + diff.html#W1L42 diff の 1 番目のウィンドウの 42 行目にジャンプ + diff.html#42 同上 < *g:html_use_css* 初期設定: 1 @@ -586,6 +601,25 @@ Note 古いブラウザ (特に Internet Explorer 6) はこの機能をサポー > :let g:html_hover_unfold = 1 < + *g:html_id_expr* +初期設定: "" +動的折り畳みや行 ID によるジャンプが機能するにはドキュメント内における一意の +ID が必要である。例えば生成された HTML を他のドキュメント内にコピーしたりする +と、その ID は一意性が保証されなくなる。g:html_id_expr に式が設定されている +と、Vim は一意な文字列を得るためにその式を評価して、ドキュメント内で使用される +ID に付加する。その完全な ID であれば、他のドキュメントにコピーされた場合でも +一意に定めることができる。例えば、 _ とバッファ番号を ID に付加するには: > + + :let g:html_id_expr = '"_".bufnr("%")' +< +ID の末尾に "_mystring" を付加するには: > + + :let g:html_id_expr = '"_mystring"' +< +NOTE: diff ビューを HTML に変換するときは、この式は diff の 1 番目のウィンドウ +に対してのみ評価される。そしてその結果は他のすべてのウィンドウに対して使用され +る。 + *TOhtml-wrap-text* *g:html_pre_wrap* 初期設定: 現在の 'wrap' の設定 0 なら、もし |g:html_no_pre| が 0 または未設定なら、生成された HTML のテキスト @@ -963,6 +997,21 @@ ChangeLogでは行頭のスペースのハイライトできる。これをオ これは即座に有効になる。 +CLOJURE *ft-clojure-syntax* + +|g:clojure_fold| を設定するとシンタックスエンジンに基づいた Clojure コードの折 +り畳みが有効化される。複数行に渡るリスト、ベクタ、マップなどを標準の Vim を +使って折り畳みできる |fold-commands|。 + +このオプションは rainbow-parentheses プラグインのような、角カッコの構文範囲を +変更するようなスクリプトを使っているときは機能しない。 + +このオプションは初期設定でオフになっている。 +> + " 初期設定 + let g:clojure_fold = 0 +< + COBOL *cobol.vim* *ft-cobol-syntax* 既存のCOBOLコードに要求されるハイライト方法と、新規に開発されるコードに要求さ @@ -1216,6 +1265,32 @@ ISEが提案し、実験的に幾つかのコンパイラでは取り扱うこ この行を起動設定ファイルに書き足す。 +EUPHORIA *euphoria3.vim* *euphoria4.vim* *ft-euphoria-syntax* + +Euphoria には二つの構文強調表示ファイルがある。一つは Euphoria バージョン +3.1.1 用で、初期設定ではこれが使われる。もう一つは Euphoria 4.0.5 以降用であ +る。 + +Euphoria バージョン 3.1.1 (http://www.rapideuphoria.com/) は DOS プラット +フォームのアプリケーションの開発にまだ必要とされている。 Euphoria バージョン 4 +(http://www.openeuphoria.org/) はそれをサポートしていない。 + +以下の拡張子のファイルは自動的に Euphoria ファイルタイプとして認識される: + + *.e, *.eu, *.ew, *.ex, *.exu, *.exw + *.E, *.EU, *.EW, *.EX, *.EXU, *.EXW + +Euphoria の構文強調ファイルを選択するには (*.e や *.E 拡張子のファイルが自動的 +に Euphoria ファイルタイプとして認識された場合でも)、次の行を設定ファイルに加 +える: > + + :let filetype_euphoria="euphoria3" + + または + + :let filetype_euphoria="euphoria4" + + ERLANG *erlang.vim* *ft-erlang-syntax* Erlang は Ericsson が開発した関数型プログラミング言語である。次の拡張子のファ @@ -1555,7 +1630,7 @@ http://www.fleiner.com/vim/download.html :let html_no_rendering=1 HTMLコメントはむしろ特別で(詳細はHTMLリファレンスドキュメントを参照)、すべての -エラーをハイライトする。しかしその間違ったスタイル(<!--で始まり--!>で終わる)を +エラーをハイライトする。しかしその間違ったスタイル(<!--で始まり-->で終わる)を 使いたいならこれを定義する > :let html_wrong_comments=1 @@ -2110,9 +2185,11 @@ PERL *perl.vim* *ft-perl-syntax* perl用の構文ハイライトにはたくさんのオプションがある。 -PODファイルやPODセグメントを使っているなら、こうするとよいかもしれない: > +インライン POD 強調表示は初期設定で有効化される。Perl ファイル内に埋め込まれた +POD を強調表示して複雑にしたくない場合は、'perl_include_pod' オプションを 0 に +設定する: > - :let perl_include_pod = 1 + :let perl_include_pod = 0 パースの複雑さを軽減するために (そしてパフォーマンスを上げるために)、変数名と 内容のパースにおける2つの要素をオフにすることができる。 > @@ -2166,13 +2243,20 @@ if 文などでも同様にブロックを折り畳みたければ、次のよ :let perl_fold_blocks = 1 -perl の折り畳みが有効になっているとき、package や sub を折り畳みたくなければ、 -対応する変数を設定する: > +初期設定では 'perl_fold' が設定されていればサブルーチンの折り畳みは有効化され +る。無効化したい場合は 'perl_nofold_subs' を設定する: > + + :let perl_nofold_subs = 1 - :unlet perl_nofold_packages - :unlet perl_nofold_subs +初期設定では無名サブルーチンは折り畳まれない。折り畳みを有効化するには +'perl_fold_anonymous_subs' を設定する: > + :let perl_fold_anonymous_subs = 1 +初期設定では 'perl_fold' が設定されていればパッケージは折り畳まれる。無効化し +たい場合は 'perl_nofold_packages' を設定する: > + + :let perl_nofold_packages = 1 PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* @@ -2953,13 +3037,23 @@ g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示 *g:tex_isk* *g:tex_stylish* Tex: iskeyword を制御する ~ -(La)Tex キーワードは普通は 0-9,a-z,A-Z,192-255 の文字だけを使い、"_" だけが問 -題となる。したがって、初期設定では、syntax/tex.vim は通常の |'iskeyword'| の設 -定を (|:setlocal| を使って) 上書きし、LaTeX でも機能するようにしている。 +通常、LaTeX キーワードは 0-9、a-z、A-z、192-255 のみがサポートされる。Latex +キーワードはアンダースコアをサポートしない (*.sty ファイルを除く)。構文強調表 +示スクリプトは次の手順でそれを判断する: + + * g:tex_stylish が存在して値が 1 なら + ファイルは "sty" ファイルとして扱われる。"_" はキーワードの一 + 部として認識される。 + (g:tex_isk に左右されない) + * または、ファイル名の末尾は sty, cls, clo, dtx, ltx なら + ファイルは "sty" ファイルとして扱われる。"_" はキーワードの一 + 部として認識される。 + (g:tex_isk に左右されない) + + * g:tex_isk が存在するなら、'iskeyword' のローカル値として使用される。 + * 存在しない場合、'iskeyword' のローカル値として 48-57,a-z,A-Z,192-255 + が設定される。 -この iskeyword 再設定の動作は g:tex_isk 変数を設定することで変更できる。代わり -に使用したい値を .vimrc で設定するとよい。 - TF *tf.vim* *ft-tf-syntax* @@ -2986,16 +3080,15 @@ g:vimsyn_embed オプションは、どの外部スクリプト言語の埋め 定する。 > g:vimsyn_embed == 0 : どのスクリプトの埋め込みも対応しない - g:vimsyn_embed =~ 'm' : mzscheme に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 'p' : perl に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 'P' : python に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 'r' : ruby に対応 (コンパイル時に有効にした場合のみ) - g:vimsyn_embed =~ 't' : tcl に対応 (コンパイル時に有効にした場合のみ) + g:vimsyn_embed =~ 'm' : 埋め込み mzscheme をサポート + g:vimsyn_embed =~ 'p' : 埋め込み perl をサポート + g:vimsyn_embed =~ 'P' : 埋め込み python をサポート + g:vimsyn_embed =~ 'r' : 埋め込み ruby をサポート + g:vimsyn_embed =~ 't' : 埋め込み tcl をサポート < -g:vimsyn_embed の既定値は "mpPr" であり、mzscheme, perl, python, ruby に対応し -ている。tcl が利用可能でない環境で has("tcl") の判定を行うと Vim がハングする -ようなので、デフォルトでは tcl の埋め込みには対応していない(もちろん、有効にし -たい場合には g:vimembedscript に含めることで有効にできる)。 +初期設定では、g:vimsyn_embed には Vim がサポートしている言語が設定される。複数 +の埋め込み言語をサポートするには、それぞれの文字を組み合わせて設定する。例、 +g:vimsyn_embed = "mp" なら mzscheme と perl がサポートされる。 *g:vimsyn_folding* syntax/vim.vim によって折り畳みが可能である: > diff --git a/en/syntax.txt b/en/syntax.txt index 120fa1322..d47b09a5d 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*syntax.txt* For Vim version 7.4. Last change: 2014 Aug 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -379,12 +379,12 @@ settings, depending on which syntax is active. Example: > 2HTML *2html.vim* *convert-to-HTML* This is not a syntax file itself, but a script that converts the current -window into HTML. Vim opens a new window in which it builds the HTML file. +window into HTML. Vim opens a new window in which it builds the HTML file. -After you save the resulting file, you can view it with any browser. The -colors should be exactly the same as you see them in Vim. You can jump to -specific lines by adding (for example) #L123 or #123 to the end of the URL in -your browser's address bar (#123 only with javascript support). And with +After you save the resulting file, you can view it with any browser. The +colors should be exactly the same as you see them in Vim. With +|g:html_line_ids| you can jump to specific lines by adding (for example) #L123 +or #123 to the end of the URL in your browser's address bar. And with |g:html_dynamic_folds| enabled, you can show or hide the text that is folded in Vim. @@ -425,15 +425,14 @@ and last line to be converted. Example, using the last set Visual area: > |g:html_end_line| to the start and end of the range, respectively. Default range is the entire buffer. - If the current window is part of a |diff|, unless - |g:html_diff_one_file| is set, :TOhtml will convert - all windows which are part of the diff in the current - tab and place them side-by-side in a <table> element - in the generated HTML. When this happens you can jump - to lines in specific windows with (for example) #W1L42 - for line 42 in the first diffed window, or #W3L87 for - line 87 in the third. Omitting the window ID will - default to the first window if javascript is enabled. + If the current window is part of a |diff|, unless + |g:html_diff_one_file| is set, :TOhtml will convert + all windows which are part of the diff in the current + tab and place them side-by-side in a <table> element + in the generated HTML. With |g:html_line_ids| you can + jump to lines in specific windows with (for example) + #W1L42 for line 42 in the first diffed window, or + #W3L87 for line 87 in the third. Examples: > @@ -443,9 +442,9 @@ and last line to be converted. Example, using the last set Visual area: > < *g:html_diff_one_file* Default: 0. -When 0, all windows involved in a |diff| in the current tab page are converted -to HTML and placed side-by-side in a <table> element. -When 1, only the current buffer is converted. +When 0, and using |:TOhtml| all windows involved in a |diff| in the current tab +page are converted to HTML and placed side-by-side in a <table> element. When +1, only the current buffer is converted. Example: > let g:html_diff_one_file = 1 @@ -494,6 +493,23 @@ Force to omit the line numbers: > :let g:html_number_lines = 0 Go back to the default to use 'number' by deleting the variable: > :unlet g:html_number_lines +< + *g:html_line_ids* +Default: 1 if |g:html_number_lines| is set, 0 otherwise. +When 1, adds an HTML id attribute to each line number, or to an empty <span> +inserted for that purpose if no line numbers are shown. This ID attribute +takes the form of L123 for single-buffer HTML pages, or W2L123 for diff-view +pages, and is used to jump to a specific line (in a specific window of a diff +view). Javascript is inserted to open any closed dynamic folds +(|g:html_dynamic_folds|) containing the specified line before jumping. The +javascript also allows omitting the window ID in the url, and the leading L. +For example: > + + page.html#L123 jumps to line 123 in a single-buffer file + page.html#123 does the same + + diff.html#W1L42 jumps to line 42 in the first window in a diff + diff.html#42 does the same < *g:html_use_css* Default: 1. @@ -603,6 +619,25 @@ they will not be openable without a foldcolumn. > :let g:html_hover_unfold = 1 < + *g:html_id_expr* +Default: "" +Dynamic folding and jumping to line IDs rely on unique IDs within the document +to work. If generated HTML is copied into a larger document, these IDs are no +longer guaranteed to be unique. Set g:html_id_expr to an expression Vim can +evaluate to get a unique string to append to each ID used in a given document, +so that the full IDs will be unique even when combined with other content in a +larger HTML document. Example, to append _ and the buffer number to each ID: > + + :let g:html_id_expr = '"_".bufnr("%")' +< +To append a string "_mystring" to the end of each ID: > + + :let g:html_id_expr = '"_mystring"' +< +Note, when converting a diff view to HTML, the expression will only be +evaluated for the first window in the diff, and the result used for all the +windows. + *TOhtml-wrap-text* *g:html_pre_wrap* Default: current 'wrap' setting. When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does @@ -987,6 +1022,21 @@ Or to avoid the highlighting: > This works immediately. +CLOJURE *ft-clojure-syntax* + +Setting *g:clojure_fold* enables folding Clojure code via the syntax engine. +Any list, vector, or map that extends over more than one line can be folded +using the standard Vim |fold-commands|. + +Please note that this option does not work with scripts that redefine the +bracket syntax regions, such as rainbow-parentheses plugins. + +This option is off by default. +> + " Default + let g:clojure_fold = 0 +< + COBOL *cobol.vim* *ft-cobol-syntax* COBOL highlighting has different needs for legacy code than it does for fresh @@ -1246,6 +1296,32 @@ Finally, some vendors support hexadecimal constants. To handle them, add > to your startup file. +EUPHORIA *euphoria3.vim* *euphoria4.vim* *ft-euphoria-syntax* + +Two syntax highlighting files exists for Euphoria. One for Euphoria +version 3.1.1, which is the default syntax highlighting file, and one for +Euphoria version 4.0.5 or later. + +Euphoria version 3.1.1 (http://www.rapideuphoria.com/) is still necessary +for developing applications for the DOS platform, which Euphoria version 4 +(http://www.openeuphoria.org/) does not support. + +The following file extensions are auto-detected as Euphoria file type: + + *.e, *.eu, *.ew, *.ex, *.exu, *.exw + *.E, *.EU, *.EW, *.EX, *.EXU, *.EXW + +To select syntax highlighting file for Euphoria, as well as for +auto-detecting the *.e and *.E file extensions as Euphoria file type, +add the following line to your startup file: > + + :let filetype_euphoria="euphoria3" + + or + + :let filetype_euphoria="euphoria4" + + ERLANG *erlang.vim* *ft-erlang-syntax* Erlang is a functional programming language developed by Ericsson. Files with @@ -1318,8 +1394,8 @@ FORTRAN *fortran.vim* *ft-fortran-syntax* Default highlighting and dialect ~ Highlighting appropriate for Fortran 2008 is used by default. This choice -should be appropriate for most users most of the time because Fortran 2008 is -almost a superset of previous versions (Fortran 2003, 95, 90, and 77). +should be appropriate for most users most of the time because Fortran 2008 is +almost a superset of previous versions (Fortran 2003, 95, 90, and 77). Fortran source code form ~ Fortran code can be in either fixed or free source form. Note that the @@ -1410,7 +1486,7 @@ items. If you use F, the advantage of setting the dialect appropriately is that other legacy features excluded from F will be highlighted as todo items and -that free source form will be assumed. +that free source form will be assumed. The dialect can be selected in various ways. If all your fortran files use the same dialect, set the global variable fortran_dialect in your .vimrc prior @@ -1444,13 +1520,13 @@ Fortran comment of the form > For previous versions of the syntax, you may have set fortran_dialect to the now-obsolete values "f77", "f90", "f95", or "elf". Such settings will be silently handled as "f08". Users of "elf" may wish to experiment with "F" -instead. +instead. The syntax/fortran.vim script contains embedded comments that tell you how to comment and/or uncomment some lines to (a) activate recognition of some non-standard, vendor-supplied intrinsics and (b) to prevent features deleted or declared obsolescent in the 2008 standard from being highlighted as todo -items. +items. Limitations ~ Parenthesis checking does not catch too few closing parentheses. Hollerith @@ -1612,7 +1688,7 @@ vimrc file: > HTML comments are rather special (see an HTML reference document for the details), and the syntax coloring scheme will highlight all errors. However, if you prefer to use the wrong style (starts with <!-- and -ends with --!>) you can define > +ends with -->) you can define > :let html_wrong_comments=1 JavaScript and Visual Basic embedded inside HTML documents are highlighted as @@ -1883,7 +1959,7 @@ If you don't want to set the variable, use the modeline in EVERY LPC file. There are several implementations for LPC, we intend to support most widely used ones. Here the default LPC syntax is for MudOS series, for MudOS v22 and before, you should turn off the sensible modifiers, and this will also -asserts the new efuns after v22 to be invalid, don't set this variable when +assert the new efuns after v22 to be invalid, don't set this variable when you are using the latest version of MudOS: > :let lpc_pre_v22 = 1 @@ -2197,11 +2273,13 @@ PERL *perl.vim* *ft-perl-syntax* There are a number of possible options to the perl syntax highlighting. -If you use POD files or POD segments, you might: > +Inline POD highlighting is now turned on by default. If you don't wish +to have the added complexity of highlighting POD embedded within Perl +files, you may set the 'perl_include_pod' option to 0: > - :let perl_include_pod = 1 + :let perl_include_pod = 0 -The reduce the complexity of parsing (and increase performance) you can switch +To reduce the complexity of parsing (and increase performance) you can switch off two elements in the parsing of variable names and contents. > To handle package references in variable and function names not differently @@ -2252,13 +2330,20 @@ If you want to fold blocks in if statements, etc. as well set the following: > :let perl_fold_blocks = 1 -To avoid folding packages or subs when perl_fold is let, let the appropriate -variable(s): > +Subroutines are folded by default if 'perl_fold' is set. If you do not want +this, you can set 'perl_nofold_subs': > + + :let perl_nofold_subs = 1 - :unlet perl_nofold_packages - :unlet perl_nofold_subs +Anonymous subroutines are not folded by default; you may enable their folding +via 'perl_fold_anonymous_subs': > + :let perl_fold_anonymous_subs = 1 +Packages are also folded by default if 'perl_fold' is set. To disable this +behavior, set 'perl_nofold_packages': > + + :let perl_nofold_packages = 1 PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* @@ -2481,7 +2566,7 @@ If you want all possible Python highlighting (the same as setting the preceding last option and unsetting all other ones): > :let python_highlight_all = 1 -Note: only existence of these options matter, not their value. You can replace +Note: only existence of these options matter, not their value. You can replace 1 above with anything. @@ -3068,15 +3153,22 @@ substitution will not be made. *g:tex_isk* *g:tex_stylish* Tex: Controlling iskeyword~ -(La)Tex keywords normally use the characters 0-9,a-z,A-Z,192-255 only -but the "_" is the only one that causes problems. So, by default, -syntax/tex.vim overrides the usual |'iskeyword'| setting (using |:setlocal|) -with one that works for LaTeX. +Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex +keywords don't support the underscore - except when in *.sty files. The +syntax highlighting script handles this with the following logic: + + * If g:tex_stylish exists and is 1 + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (irregardless of g:tex_isk) + * Else if the file's suffix is sty, cls, clo, dtx, or ltx, + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (irregardless of g:tex_isk) + + * If g:tex_isk exists, then it will be used for the local 'iskeyword' + * Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255 -However, one may override this iskeyword re-setting by setting the -variable, g:tex_isk, in one's .vimrc to whatever one wishes and -it will be used instead. - TF *tf.vim* *ft-tf-syntax* @@ -3105,18 +3197,16 @@ The g:vimsyn_embed option allows users to select what, if any, types of embedded script highlighting they wish to have. > g:vimsyn_embed == 0 : don't embed any scripts - g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it) - g:vimsyn_embed =~ 'p' : embed perl (but only if vim supports it) - g:vimsyn_embed =~ 'P' : embed python (but only if vim supports it) - g:vimsyn_embed =~ 'r' : embed ruby (but only if vim supports it) - g:vimsyn_embed =~ 't' : embed tcl (but only if vim supports it) + g:vimsyn_embed =~ 'm' : support embedded mzscheme + g:vimsyn_embed =~ 'p' : support embedded perl + g:vimsyn_embed =~ 'P' : support embedded python + g:vimsyn_embed =~ 'r' : support embedded ruby + g:vimsyn_embed =~ 't' : support embedded tcl < -By default, g:vimsyn_embed is "mpPr"; ie. syntax/vim.vim will support -highlighting mzscheme, perl, python, and ruby by default. Vim's has("tcl") -test appears to hang vim when tcl is not truly available. Thus, by default, -tcl is not supported for embedding (but those of you who like tcl embedded in -their vim syntax highlighting can simply include it in the g:vimembedscript -option). +By default, g:vimsyn_embed is a string supporting interpreters that your vim +itself supports. Concatenate multiple characters to support multiple types +of embedded interpreters; ie. g:vimsyn_embed= "mp" supports embedded mzscheme +and embedded perl. *g:vimsyn_folding* Some folding is now supported with syntax/vim.vim: > From 6f0363f227d5b8b0cba12fa2ee93bde25076cead Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 00:09:17 +0900 Subject: [PATCH 607/783] editing --- doc/editing.jax | 30 ++++++++++++++++++++++-------- en/editing.txt | 34 +++++++++++++++++++++++++--------- 2 files changed, 47 insertions(+), 17 deletions(-) diff --git a/doc/editing.jax b/doc/editing.jax index c1f766fc7..82804abbc 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -1,4 +1,4 @@ -*editing.txt* For Vim バージョン 7.4. Last change: 2014 Jul 19 +*editing.txt* For Vim バージョン 7.4. Last change: 2014 Aug 09 VIMリファレンスマニュアル by Bram Moolenaar @@ -1358,9 +1358,14 @@ Vimはファイルを暗号化して保存し、再び読み取ることがで Note: メモリ内のテキストは暗号化されない。ユーザーがテキストを編集している間、 システム管理者はそれを見ることができる。":!filter" や ":w !command" によって -フィルタに通しているときはテキストは暗号化されておらず、他人に見られる可能性が +フィルタに通しているときもテキストは暗号化されておらず、他人に見られる可能性が ある。'viminfo' ファイルは暗号化されない。 +機密テキストを編集するときは次のように設定するという手もある: > + :set noundofile viminfo= + :noswapfile edit secrets.txt +スワップファイルを無効化するとクラッシュ時に編集内容が失われてしまうので注意。 + 警告: 鍵の入力時にタイプミスをしてファイルを保存し、Vimを終了すると、テキスト は失われてしまう! @@ -1383,17 +1388,22 @@ Note: メモリ内のテキストは暗号化されない。ユーザーがテ 暗号化を無効にするには、オプション 'key' に空の値を入れてリセットする。 > :set key= -'cryptmethod' オプションを設定することで暗号化メソッドを選択できる。次のうち -一つを使うこと: > - :setlocal cm=zip " 弱いメソッド。後方互換。 - :setlocal cm=blowfish " 強いメソッド。 +'cryptmethod' オプションを設定することで暗号化メソッドを選択できる。次の中から +選択できる: > + :setlocal cm=zip " 弱いメソッド。後方互換。 + :setlocal cm=blowfish " 脆弱性ありのメソッド + :setlocal cm=blowfish2 " 中強度のメソッド ファイルを保存する前に設定する。暗号化されたファイルを読み込んだとき、このオプ ションは自動的にファイル保存時に使われたメソッドに設定される。ファイルを保存す る前に 'cryptmethod' を変更することで使用するメソッドを変更できる。 + 新しいファイルに使われるデフォルトのメソッドを設定したい場合は |vimrc| ファイ ルで次のどちらかを設定すること: > set cm=zip - set cm=blowfish + set cm=blowfish2 +一つ目のものは Vim 7.2 以前との互換性が必要なときに使用する。 "blowfish2" をサ +ポートしている Vim が使えるなら、"blowfish2" の使用が強く推奨される。 + ファイルを読み込んだり書き込んだりしたとき、zip なら "[crypted]"、blowfish な ら "[blowfish]" とメッセージが表示される。 @@ -1428,7 +1438,7 @@ Note: メモリ内のテキストは暗号化されない。ユーザーがテ 0 string VimCrypt~ Vim encrypted file >9 string 01 - "zip" cryptmethod >9 string 02 - "blowfish" cryptmethod - + >9 string 03 - "blowfish2" cryptmethod Note: - オプション 'charconvert' でコード変換をしているときには暗号化はできない。 @@ -1452,6 +1462,10 @@ Note: - Pkzip は 'cryptmethod' の "zip" と同じ暗号化を用いており、合衆国政府はその輸 出に対して異議を唱えていない。Pkzipの公開ファイル APPNOTE.TXT にはこのアルゴ リズムが詳細に記述されている。 +- 'cryptmethod' の "blowfish" の実装には脆弱性がある。ファイルの最初の 64 バイ + ト (条件によってはもっと) はクラック可能である。これの使用は推奨されないが、 + Vim 7.3 と 7.4 でサポートされている中ではそれが一番強度のあるメソッドであ + る。"zip" メソッドはさらに弱い。 - Vimはオランダに起源を持つ。そこがソースの出処である。従って、暗号化コードは アメリカ合衆国から輸出されてはいない。 diff --git a/en/editing.txt b/en/editing.txt index 0b5f69a7b..cbb9b90e5 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.4. Last change: 2014 Jul 19 +*editing.txt* For Vim version 7.4. Last change: 2014 Aug 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1370,8 +1370,13 @@ lose your work. The undo file can be disabled without much disadvantage. > Note: The text in memory is not encrypted. A system administrator may be able to see your text while you are editing it. When filtering text with -":!filter" or using ":w !command" the text is not encrypted, this may reveal -it to others. The 'viminfo' file is not encrypted. +":!filter" or using ":w !command" the text is also not encrypted, this may +reveal it to others. The 'viminfo' file is not encrypted. + +You could do this to edit very secret text: > + :set noundofile viminfo= + :noswapfile edit secrets.txt +Keep in mind that without a swap file you risk loosing your work in a crash. WARNING: If you make a typo when entering the key and then write the file and exit, the text will be lost! @@ -1398,18 +1403,25 @@ To disable the encryption, reset the 'key' option to an empty value: > :set key= You can use the 'cryptmethod' option to select the type of encryption, use one -of these two: > - :setlocal cm=zip " weak method, backwards compatible - :setlocal cm=blowfish " strong method +of these: > + :setlocal cm=zip " weak method, backwards compatible + :setlocal cm=blowfish " method with flaws + :setlocal cm=blowfish2 " medium strong method + Do this before writing the file. When reading an encrypted file it will be set automatically to the method used when that file was written. You can change 'cryptmethod' before writing that file to change the method. + To set the default method, used for new files, use one of these in your |vimrc| file: > set cm=zip - set cm=blowfish + set cm=blowfish2 +Use the first one if you need to be compatible with Vim 7.2 and older. Using +"blowfish2" is highly recommended if you can use a Vim version that supports +it. + The message given for reading and writing a file will show "[crypted]" when -using zip, "[blowfish]" when using blowfish. +using zip, "[blowfish]" when using blowfish, etc. When writing an undo file, the same key and method will be used for the text in the undo file. |persistent-undo|. @@ -1444,7 +1456,7 @@ lines to "/etc/magic", "/usr/share/misc/magic" or wherever your system has the 0 string VimCrypt~ Vim encrypted file >9 string 01 - "zip" cryptmethod >9 string 02 - "blowfish" cryptmethod - + >9 string 03 - "blowfish2" cryptmethod Notes: - Encryption is not possible when doing conversion with 'charconvert'. @@ -1468,6 +1480,10 @@ Notes: - Pkzip uses the same encryption as 'cryptmethod' "zip", and US Govt has no objection to its export. Pkzip's public file APPNOTE.TXT describes this algorithm in detail. +- The implmentation of 'cryptmethod' "blowfish" has a flaw. It is possible to + crack the first 64 bytes of a file and in some circumstances more of the + file. Use of it is not recommended, but it's still the strongest method + supported by Vim 7.3 and 7.4. The "zip" method is even weaker. - Vim originates from the Netherlands. That is where the sources come from. Thus the encryption code is not exported from the USA. From 69f6821a3f10b9a9518092358ec4bff94aa79d8a Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 00:10:54 +0900 Subject: [PATCH 608/783] flaw => zeijyakusei --- doc/options.jax | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 583d03081..920354682 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -2282,11 +2282,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる zip PkZip 互換メソッド。弱い暗号化。 Vim 7.2 以前との後方互換。 *blowfish* - blowfish Blowfish メソッド。中強度の暗号化だが実装上の弱点があ - る。Vim 7.3 以降が必要。このメソッドで保存されたファイ - ルは Vim 7.2 以前のバージョンでは開くことができない。 - ファイルには "seed" が付加されるのでファイルを書き込む - たびに暗号化されたバイト列は異なる。 + blowfish Blowfish メソッド。中強度の暗号化だが実装上の脆弱性が + ある。Vim 7.3 以降が必要。このメソッドで保存された + ファイルは Vim 7.2 以前のバージョンでは開くことができ + ない。ファイルには "seed" が付加されるのでファイルを書 + き込むたびに暗号化されたバイト列は異なる。 *blowfish2* blowfish2 Blowfish メソッド。中強度の暗号化。Vim 7.4.399 以降が 必要。このメソッドで保存されたファイルは Vim 7.3 以前 From 7a10d8d6efcdae659c87314d2d27d21c805b9a55 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 00:32:17 +0900 Subject: [PATCH 609/783] eval --- doc/eval.jax | 29 ++++++++++++++++++----------- en/eval.txt | 23 +++++++++++++++-------- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index e9e41ab33..d256d8b36 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1,4 +1,4 @@ -*eval.txt* For Vim バージョン 7.4. Last change: 2014 Aug 16 +*eval.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 VIMリファレンスマニュアル by Bram Moolenaar @@ -1062,10 +1062,10 @@ Note $VARを直接使用した場合とexpand("$VAR")を使用した場合では れるだけである。expand()を使用した場合、まず最初にVimのセッション中で既知の値 に展開される。それが失敗した場合、変数の展開にシェルが使用されることになる。こ れは遅くはなるが、シェルの知りうる全ての変数を展開することができる。例: > - :echo $version - :echo expand("$version") -最初の一つは恐らく何も返ってこず、2つ目は$versionの値が返ってくるだろう(貴方の -シェルがサポートしていたとして) + :echo $shell + :echo expand("$shell") +最初の一つは恐らく何も返ってこず、2つ目は $shell の値が返ってくるだろう (貴方 +のシェルがそれをサポートしているなら) 内部変数 *expr-variable* @@ -2834,12 +2834,13 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* とディレクトリツリーを検索できる。例えば、カレントディレクトリ 以下にある全ての "README" を見つけるには次のようにする: > :echo expand("**/README") -< - expand()は、シェルの持っている変数や環境変数を展開することがで - きる。しかしシェルを起動しなければならないので、遅くなる。 - |expr-env-expand|を参照。展開された変数はファイル名のリストの - ように扱われる。環境変数を展開できないときはそのままになる。よっ - て ":echo expand('$FOOBAR')" の結果は "$FOOBAR" となる。 +< + expand() はシェルの持っている変数や環境変数を展開できる。しか + し展開のためにシェルを起動するかもしれないので速度が遅くなるこ + とがある。|expr-env-expand| 参照。 + 展開された変数はファイル名のリストのように扱われる。環境変数を + 展開できないときはそのままになる。よって、 + ":echo expand('$FOOBAR')" の結果は "$FOOBAR" となる。 存在するファイルを探すには|glob()|を参照。外部コマンドの「生 の」実行結果を扱うには|system()|を参照。 @@ -5866,6 +5867,12 @@ system({expr} [, {input}]) *system()* *E677* NUL 文字に変換される)。 パイプは使用されない。 + |:silent| が前置されたときは、シェルは cooked モードには設定さ + れない。これはユーザー入力を必要としないコマンドを使用すること + を意味する。これは画面に不要な文字が表示されるのを防ぐ + (|CTRL-L| でそれをクリアする必要がなくなる)。 > + :silent let f = system('ls *.vim') +< Note: コマンドの引数をエスケープするには、 |shellescape()|、 |expand()| の |::S|、または |fnamemodify()| を使用する。{expr} 内に改行文字があるとコマンドは失敗するだろう。'shellquote' や diff --git a/en/eval.txt b/en/eval.txt index 28cbb927b..688fc38eb 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2014 Aug 16 +*eval.txt* For Vim version 7.4. Last change: 2014 Aug 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1102,9 +1102,9 @@ are known inside the current Vim session. Using expand() will first try using the environment variables known inside the current Vim session. If that fails, a shell will be used to expand the variable. This can be slow, but it does expand all variables that the shell knows about. Example: > - :echo $version - :echo expand("$version") -The first one probably doesn't echo anything, the second echoes the $version + :echo $shell + :echo expand("$shell") +The first one probably doesn't echo anything, the second echoes the $shell variable (if your shell supports it). @@ -2622,7 +2622,7 @@ cursor({list}) line. If {col} is zero, the cursor will stay in the current column. If {curswant} is given it is used to set the preferred column - for vertical movment. Otherwise {col} is used. + for vertical movement. Otherwise {col} is used. When 'virtualedit' is used {off} specifies the offset in screen columns from the start of the character. E.g., a position within a <Tab> or after the last character. @@ -2913,7 +2913,8 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()* < Expand() can also be used to expand variables and environment variables that are only known in a shell. But this can be - slow, because a shell must be started. See |expr-env-expand|. + slow, because a shell may be used to do the expansion. See + |expr-env-expand|. The expanded variable is still handled like a list of file names. When an environment variable cannot be expanded, it is left unchanged. Thus ":echo expand('$FOOBAR')" results in @@ -5490,7 +5491,7 @@ setreg({regname}, {value} [,{options}]) Returns zero for success, non-zero for failure. *E883* - Note: you may not use |List| containing more then one item to + Note: you may not use |List| containing more than one item to set search and expression registers. Lists containing no items act like empty strings. @@ -5640,7 +5641,7 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702* after Strings, |Lists| after Numbers. For sorting text in the current buffer use |:sort|. - When {func} is given and it is is '1' or 'i' then case is + When {func} is given and it is '1' or 'i' then case is ignored. When {func} is given and it is 'n' then all items will be @@ -6092,6 +6093,12 @@ system({expr} [, {input}]) *system()* *E677* list items converted to NULs). Pipes are not used. + When prepended by |:silent| the shell will not be set to + cooked mode. This is meant to be used for commands that do + not need the user to type. It avoids stray characters showing + up on the screen which require |CTRL-L| to remove. > + :silent let f = system('ls *.vim') +< Note: Use |shellescape()| or |::S| with |expand()| or |fnamemodify()| to escape special characters in a command argument. Newlines in {expr} may cause the command to fail. From 2ae6dc5578a65b50bea2434e1154e9c01e3f301c Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 01:18:52 +0900 Subject: [PATCH 610/783] indent --- doc/indent.jax | 75 ++++++++++++++++++++++++++++++++++++++++++++---- en/indent.txt | 77 ++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 142 insertions(+), 10 deletions(-) diff --git a/doc/indent.jax b/doc/indent.jax index 0a5101456..38d3c9050 100644 --- a/doc/indent.jax +++ b/doc/indent.jax @@ -1,4 +1,4 @@ -*indent.txt* For Vim バージョン 7.4. Last change: 2013 May 20 +*indent.txt* For Vim バージョン 7.4. Last change: 2014 Apr 23 VIMリファレンスマニュアル by Bram Moolenaar @@ -545,9 +545,12 @@ CTRL-TやCTRL-Dを使用してインデントを変更した後では、Vimは (省略値 70行) *cino-#* - #N N がゼロでないときは '#' で始まるshell/Perlのコメントを認識する。 - N の既定値はゼロであり、'#' のコメントを認識しない。'#' で始まる - 行はプリプロセッサ行としても認識されることに注意。 + #N N がゼロでないときは '#' で始まる shell/Perl のコメントを認識す + る。プリプロセッサ行は認識されない。"#" で始まる行を右シフトでき + るようになる。 + N がゼロのとき (初期設定): '#' コメントを認識しない。プリプロ + セッサ行は認識される。"#" で始まる行に対する右シフトは機能しな + い。 省略値を全て並べるとこうなる: @@ -665,8 +668,28 @@ Clojure のいくつかのフォームは、'lispwords' に依らず、すべて " 初期設定 let g:clojure_align_multiline_strings = 0 < + *g:clojure_align_subforms* - +初期設定では、括弧で囲まれた関数呼び出しのような形でその最初の subform が括弧 +と同じ行にあるとき、そのうしろの subform は最初の括弧からスペース 2 つ分インデ +ントされる: +> + (foo + bar + baz) +< +このオプションを設定すると、clojure-mode.el のデフォルトの振る舞いのように、す +べての subform を同じカラムに揃えることができる: +> + (foo + bar + baz) +< +このオプションは初期設定ではオフになっている。 +> + " 初期設定 + let g:clojure_align_subforms = 0 +< FORTRAN *ft-fortran-indent* Block if、select case、where、forall 構造がインデントされる。さらに type、 @@ -716,6 +739,48 @@ Tidyのようなプログラムは構造化do/continueループをdo/enddo形式 let b:fortran_indent_less=1 +HTML *ft-html-indent* *html-indent* *html-indenting* + +これらの変数を vimrc で設定することで HTML のインデントをカスタマイズできる。 + +<script> と <style> の最初の行のインデントを設定できる (初期設定は "zero"): > + + :let g:html_indent_script1 = "inc" + :let g:html_indent_style1 = "inc" +< + 値 意味 ~ + "zero" ゼロインデント + "auto" 自動インデント (ブロックタグのインデントと同じ) + "inc" 自動インデント + 1 インデント増加 + +初期設定では多くのタグで、続くタグのインデントが増加される (このスクリプトの +"Add Indent Tags" 参照)。そのように扱うタグを追加するには: > + + :let g:html_indent_inctags = "html,body,head,tbody" + +対象から除外するには: > + + :let g:html_indent_autotags = "th,td,tr,tfoot,thead" + +これらの変数の初期設定は空である。NOTE: "inctags" は Vim の編集セッションごと +に一度だけ初期化される。 + +ユーザー変数はスクリプトが実行されたときだけ読まれる。編集中に HTML ファイルを +再読み込みすることなしに設定変更を反映したい場合は、手動で次のようにする: > + + :call HtmlIndent_CheckUserSettings() + +詳細: + 異質な内容を含むブロックタグ内のインデントの計算: + BLOCKTAG インデント式 適用できるとき ~ + <script> : {カスタマイズ可} ブロックの最初の行 + : cindent(v:lnum) 属性が空または "java" を含むとき + : -1 その他 (vbscript, tcl, ...) + <style> : {カスタマイズ可} ブロックの最初の号 + : GetCSSIndent() その他 + <!-- --> : -1 + + PHP *ft-php-indent* *php-indent* *php-indenting* NOTE: |syntax| がオンのときのみ PHP のファイルは正しくインデントされる。 diff --git a/en/indent.txt b/en/indent.txt index dd5de79d7..fc16b1a7e 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.4. Last change: 2013 May 20 +*indent.txt* For Vim version 7.4. Last change: 2014 Apr 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -545,10 +545,12 @@ The examples below assume a 'shiftwidth' of 4. (default 70 lines). *cino-#* - #N When N is non-zero recognize shell/Perl comments, starting with - '#'. Default N is zero: don't recognize '#' comments. Note - that lines starting with # will still be seen as preprocessor - lines. + #N When N is non-zero recognize shell/Perl comments starting with + '#', do not recognize preprocessor lines; allow right-shifting + lines that start with "#". + When N is zero (default): don't recognize '#' comments, do + recognize preprocessor lines; right-shifting lines that start + with "#" does not work. The defaults, spelled out in full, are: @@ -673,7 +675,28 @@ This option is off by default. " Default let g:clojure_align_multiline_strings = 0 < + *g:clojure_align_subforms* +By default, parenthesized compound forms that look like function calls and +whose head subform is on its own line have subsequent subforms indented by +two spaces relative to the opening paren: +> + (foo + bar + baz) +< +Setting this option changes this behavior so that all subforms are aligned to +the same column, emulating the default behavior of clojure-mode.el: +> + (foo + bar + baz) +< +This option is off by default. +> + " Default + let g:clojure_align_subforms = 0 +< FORTRAN *ft-fortran-indent* @@ -727,6 +750,50 @@ buffer-local variable as follows > let b:fortran_indent_less=1 +HTML *ft-html-indent* *html-indent* *html-indenting* + +This is about variables you can set in your vimrc to customize HTML indenting. + +You can set the indent for the first line after <script> and <style> +"blocktags" (default "zero"): > + + :let g:html_indent_script1 = "inc" + :let g:html_indent_style1 = "inc" +< + VALUE MEANING ~ + "zero" zero indent + "auto" auto indent (same indent as the blocktag) + "inc" auto indent + one indent step + +Many tags increase the indent for what follows per default (see "Add Indent +Tags" in the script). You can add further tags with: > + + :let g:html_indent_inctags = "html,body,head,tbody" + +You can also remove such tags with: > + + :let g:html_indent_autotags = "th,td,tr,tfoot,thead" + +Default value is empty for both variables. Note: the initial "inctags" are +only defined once per Vim session. + +User variables are only read when the script is sourced. To enable your +changes during a session, without reloading the HTML file, you can manually +do: > + + :call HtmlIndent_CheckUserSettings() + +Detail: + Calculation of indent inside "blocktags" with "alien" content: + BLOCKTAG INDENT EXPR WHEN APPLICABLE ~ + <script> : {customizable} if first line of block + : cindent(v:lnum) if attributes empty or contain "java" + : -1 else (vbscript, tcl, ...) + <style> : {customizable} if first line of block + : GetCSSIndent() else + <!-- --> : -1 + + PHP *ft-php-indent* *php-indent* *php-indenting* NOTE: PHP files will be indented correctly only if PHP |syntax| is active. From 7dcd4f4ab09c00827cde32aea91e92e1803bd33a Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 02:12:11 +0900 Subject: [PATCH 611/783] insert --- doc/insert.jax | 51 ++++++++++++++++++++++++++++++-------------- en/insert.txt | 58 +++++++++++++++++++++++++++++++++----------------- 2 files changed, 74 insertions(+), 35 deletions(-) diff --git a/doc/insert.jax b/doc/insert.jax index cce4908de..37b9a0a67 100644 --- a/doc/insert.jax +++ b/doc/insert.jax @@ -1,4 +1,4 @@ -*insert.txt* For Vim バージョン 7.4. Last change: 2013 Apr 12 +*insert.txt* For Vim バージョン 7.4. Last change: 2014 Aug 04 VIMリファレンスマニュアル by Bram Moolenaar @@ -50,6 +50,8 @@ ON/OFFと切り替えられてしまうのをどう避けるかを知るには ' する。 Note: キーボードによっては<Esc>が押し難いかもしれないが、その 時にはCTRL-[を使うようにする。 + Mac で Esc が効かないときは CTRL-Esc を試す。または、アクセシ + ビリティ設定の音声認識を無効化する。 *i_CTRL-C* CTRL-C 挿入モードを終了し、ノーマルモードに戻る。短縮入力はチェック しない。CTRL-C で挿入モードを抜けると |InsertLeave| が発生しな @@ -132,6 +134,8 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* 要素の中に改行文字があってもよい。 結果が浮動小数点数のときは自動的に文字列に変換 される。 + append() や setline() が使われると undo シーケ + ンスが分割される。 レジスタについては|registers|を参照。 {Vi にはない} CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* @@ -1391,9 +1395,9 @@ Vim には 500 近くの言語を強調表示する機能がある。この強 に応じた最小限の補完を提供する。 syntaxcomplete を有効にするにはこのコマンドを実行する: > - setlocal omnifunc=syntaxcomplete#Complete + setlocal omnifunc=syntaxcomplete#Complete -これを自動的に行うようにするには、以下を ~/.vimrc に書く(":filetype" コマンド +これを自動的に行うようにするには、以下を |.vimrc| に書く (":filetype" コマンド の後で): > if has("autocmd") && exists("+omnifunc") autocmd Filetype * @@ -1410,29 +1414,41 @@ syntaxcomplete プラグインでは、構文グループのうちどれを補 マイズできる。ファイルタイプ PHP を例として見てみよう。 index.php という名前のファイルを開き、次のコマンドを実行してみる: > - :syntax list + syntax list まず最初にたくさんの異なる構文グループがあることに気づくだろう。PHP 言語は HTML, JavaScript など他の言語の要素を含むことがある。この場合、syntaxcomplete プラグインはファイルタイプ名 "php" で始まる構文グループだけを含める。例えば、 次の構文グループはデフォルトで含まれる: phpEnvVar, phpIntVar, phpFunctions。 -PHP 言語は構文強調で色付けできる要素がとてもたくさんある。これはつまり、非常に -多数の要素がオムニ補完リストに現れることを意味する。人によってはこれがわずらわ -しいと感じたり、一部だけにしか関心がないかもしれない。 +非ファイルタイプの構文アイテムも追加したい場合は、正規表現構文が使える +(autoload#syntaxcomplete.vim のバージョン 13.0 で追加された)。PHP ファイルを編 +集中に ":syntax list" の出力を見ると、次のような項目が見えるだろう: > + htmlArg,htmlTag,htmlTagName,javaScriptStatement,javaScriptGlobalObjects -このリストから余分なものを除くには 2 つの方法がある。ある構文グループを表示さ -せたくない場合は、次を .vimrc に加えるとよい: > - let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' +PHP ファイルの編集に JavaScript と HTML のキーワード構文グループを追加するには +各言語ごとに正規表現で設定する。あるいは、正規表現を使わず、単に含めるグループ +を限定して指定できる: > + let g:omni_syntax_group_include_php = 'php\w\+,javaScript\w\+,html\w\+' + let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' +< +この変数の設定は次のような構文になっている: > + let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated' + +PHP 言語は構文強調で色付けできる要素がとてもたくさんある。それらの要素はオムニ +補完リストに現れる。 + +人によってはこれがわずらわしいと感じたり、その一部だけが欲しい場合がある。リス +トから余分なものを除くには 2 つの方法がある (必要なら)。特定の構文グループを表 +示したくない場合はそれを指定するのに 2 つの方法が使える。1 つは構文グループの +名前のリストを指定する方法。もう 1 つは正規表現で構文グループを指定する方法。 +次のような設定を vimrc に追加する: > + let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' + let g:omni_syntax_group_exclude_php = 'php\w*Constant' カンマ区切りで任意個数の構文グループを指定できる。この変数の基本的な形式は次の とおり: > - let g:omni_syntax_group_exclude_{filetype} = 'comma,separated,list' - -完全性のために、逆もできるようになっている。~/.vimrc で次の変数を定義すると、 -構文グループ phpFunctions と phpMethods に含まれる要素だけがリストに現れるよう -になる: > - let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' + let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated' この変数名の末尾のファイルタイプを変えればいくらでもこの変数を定義できる。 @@ -1472,6 +1488,9 @@ sqlOperator 構文グループと sqlType 構文グループの両方の構文 るには次のようにする: > echo OmniSyntaxList( ['sqlOperator', 'sqlType'] ) +正規表現も使える: > + echo OmniSyntaxList( ['sql\w\+'] ) + プラグインから呼び出すときは、結果を List に代入して使うのが一般的だろう: > let myKeywords = [] let myKeywords = OmniSyntaxList( ['sqlKeyword'] ) diff --git a/en/insert.txt b/en/insert.txt index 615849ab2..2a114bc09 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.4. Last change: 2013 Apr 12 +*insert.txt* For Vim version 7.4. Last change: 2014 Aug 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -51,6 +51,8 @@ char action ~ abbreviation. Note: If your <Esc> key is hard to hit on your keyboard, train yourself to use CTRL-[. + If Esc doesn't work and you are using a Mac, try CTRL-Esc. + Or disable Listening under Accessibility preferences. *i_CTRL-C* CTRL-C Quit insert mode, go back to Normal mode. Do not check for abbreviations. Does not trigger the |InsertLeave| autocommand @@ -136,6 +138,8 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R* too. When the result is a Float it's automatically converted to a String. + When append() or setline() is invoked the undo + sequence will be broken. See |registers| about registers. {not in Vi} CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* @@ -1300,7 +1304,7 @@ HTML *ft-html-omni* XHTML *ft-xhtml-omni* CTRL-X CTRL-O provides completion of various elements of (X)HTML files. It is -designed to support writing of XHTML 1.0 Strict files but will also works for +designed to support writing of XHTML 1.0 Strict files but will also work for other versions of HTML. Features: - after "<" complete tag name depending on context (no div suggestion inside @@ -1357,7 +1361,7 @@ Complete: Completion works in separate JavaScript files (&ft==javascript), inside of <script> tag of (X)HTML and in values of event attributes (including scanning -of external files. +of external files). DOM compatibility @@ -1468,9 +1472,9 @@ knows how to color highlight. It can be used for any filetype and provides a minimal language-sensitive completion. To enable syntax code completion you can run: > - setlocal omnifunc=syntaxcomplete#Complete + setlocal omnifunc=syntaxcomplete#Complete -You can automate this by placing the following in your vimrc (after any +You can automate this by placing the following in your |.vimrc| (after any ":filetype" command): > if has("autocmd") && exists("+omnifunc") autocmd Filetype * @@ -1487,7 +1491,7 @@ customize which syntax groups to include or exclude from the list. Let's have a look at the PHP filetype to see how this works. If you edit a file called, index.php, run the following command: > - :syntax list + syntax list The first thing you will notice is that there are many different syntax groups. The PHP language can include elements from different languages like HTML, @@ -1496,24 +1500,37 @@ that begin with the filetype, "php", in this case. For example these syntax groups are included by default with the PHP: phpEnvVar, phpIntVar, phpFunctions. +If you wish non-filetype syntax items to also be included, you can use a +regular expression syntax (added in version 13.0 of autoload\syntaxcomplete.vim) +to add items. Looking at the output from ":syntax list" while editing a PHP file +I can see some of these entries: > + htmlArg,htmlTag,htmlTagName,javaScriptStatement,javaScriptGlobalObjects + +To pick up any JavaScript and HTML keyword syntax groups while editing a PHP +file, you can use 3 different regexs, one for each language. Or you can +simply restrict the include groups to a particular value, without using +a regex string: > + let g:omni_syntax_group_include_php = 'php\w\+,javaScript\w\+,html\w\+' + let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' +< +The basic form of this variable is: > + let g:omni_syntax_group_include_{filetype} = 'regex,comma,separated' + The PHP language has an enormous number of items which it knows how to syntax -highlight. This means these items will be available within the omni -completion list. Some people may find this list unwieldy or are only -interested in certain items. +highlight. These items will be available within the omni completion list. -There are two ways to prune this list (if necessary). If you find certain -syntax groups you do not wish displayed you can add the following to your -vimrc: > - let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' +Some people may find this list unwieldy or are only interested in certain +items. There are two ways to prune this list (if necessary). If you find +certain syntax groups you do not wish displayed you can use two different +methods to identify these groups. The first specifically lists the syntax +groups by name. The second uses a regular expression to identify both +syntax groups. Simply add one the following to your vimrc: > + let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' + let g:omni_syntax_group_exclude_php = 'php\w*Constant' Add as many syntax groups to this list by comma separating them. The basic form of this variable is: > - let g:omni_syntax_group_exclude_{filetype} = 'comma,separated,list' - -For completeness the opposite is also true. Creating this variable in your -vimrc will only include the items in the phpFunctions and phpMethods syntax -groups: > - let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods' + let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated' You can create as many of these variables as you need, varying only the filetype at the end of the variable name. @@ -1554,6 +1571,9 @@ To retrieve only the syntax items for the sqlOperator syntax group: > To retrieve all syntax items for both the sqlOperator and sqlType groups: > echo OmniSyntaxList( ['sqlOperator', 'sqlType'] ) +A regular expression can also be used: > + echo OmniSyntaxList( ['sql\w\+'] ) + From within a plugin, you would typically assign the output to a List: > let myKeywords = [] let myKeywords = OmniSyntaxList( ['sqlKeyword'] ) From 5148abbbebf9a4afb3fa5ecc11c00e709ab9f304 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 02:13:40 +0900 Subject: [PATCH 612/783] os_vms --- doc/os_vms.jax | 2 +- en/os_vms.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/os_vms.jax b/doc/os_vms.jax index ff3b4ee04..c1281a4c0 100644 --- a/doc/os_vms.jax +++ b/doc/os_vms.jax @@ -1,4 +1,4 @@ -*os_vms.txt* For Vim バージョン 7.4. Last change: 2014 Feb 24 +*os_vms.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 VIMリファレンスマニュアル diff --git a/en/os_vms.txt b/en/os_vms.txt index 03b11ba87..3e5c05c69 100644 --- a/en/os_vms.txt +++ b/en/os_vms.txt @@ -1,4 +1,4 @@ -*os_vms.txt* For Vim version 7.4. Last change: 2014 Feb 24 +*os_vms.txt* For Vim version 7.4. Last change: 2014 Aug 29 VIM REFERENCE MANUAL @@ -774,7 +774,7 @@ Version 7.4 - correct RealWaitForChar - after 7.4-119 use different functions lib$cvtf_to_internal_time because Alpha and VAX have G_FLOAT but IA64 uses IEEE float otherwise Vim crashes -- guard agains crashes that are caused by mixed filenames +- guard against crashes that are caused by mixed filenames - [TESTDIR]make_vms.mms changed to see the output files - Improve tests, update known issues - minor compiler warnings fixed From 9c95db6f70bdf09875ceada7c8cfe87af560856d Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 02:14:33 +0900 Subject: [PATCH 613/783] os_win32 --- doc/os_win32.jax | 2 +- en/os_win32.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/os_win32.jax b/doc/os_win32.jax index 20049ac9f..8116a8384 100644 --- a/doc/os_win32.jax +++ b/doc/os_win32.jax @@ -1,4 +1,4 @@ -*os_win32.txt* For Vim バージョン 7.4. Last change: 2012 May 18 +*os_win32.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 VIMリファレンスマニュアル by George Reilly diff --git a/en/os_win32.txt b/en/os_win32.txt index a01a06c8e..80085a8ed 100644 --- a/en/os_win32.txt +++ b/en/os_win32.txt @@ -1,4 +1,4 @@ -*os_win32.txt* For Vim version 7.4. Last change: 2012 May 18 +*os_win32.txt* For Vim version 7.4. Last change: 2014 Aug 29 VIM REFERENCE MANUAL by George Reilly @@ -334,7 +334,7 @@ A. You have two possible solutions depending on what you want: :!start /min ctags -R . < When it has finished you should see file named "tags" in your current directory. You should notice the window title blinking on your taskbar. - This is more noticable for commands that take longer. + This is more noticeable for commands that take longer. Now delete the "tags" file and run this command: > :!start /b ctags -R . < You should have the same "tags" file, but this time there will be no From c4024ccaf228156b2fc37ef1e573182f210e6e13 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 02:16:37 +0900 Subject: [PATCH 614/783] pattern --- doc/pattern.jax | 4 +++- en/pattern.txt | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index d19b4b26a..746dda68a 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -1,4 +1,4 @@ -*pattern.txt* For Vim バージョン 7.4. Last change: 2014 Jul 30 +*pattern.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 VIMリファレンスマニュアル by Bram Moolenaar @@ -820,6 +820,7 @@ $ パターンの末尾、または "\|"、"\)"、"\n" ('magic' on時) の前に 例: > /\(.\{-}\zsFab\)\{3} < これは、3 番目に現れた "Fab" にマッチします。 + これは後ろに量指定子を置けない。 *E888* {Vi にはありません} {|+syntax|が有効な場合のみ利用できます} */\ze* \ze どこにでもマッチして、マッチの末尾を設定します。このアトムの前の文字 @@ -828,6 +829,7 @@ $ パターンの末尾、または "\|"、"\)"、"\n" ('magic' on時) の前に 例: > /end\ze\(if\|for\) < これは、"endif" または "endfor" の "end" にマッチします。 + これは後ろに量指定子を置けない。 *E888* {Vi にはありません} {|+syntax|が有効な場合のみ利用できます} */\%^* *start-of-file* diff --git a/en/pattern.txt b/en/pattern.txt index f66ac170a..205d2d8bf 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.4. Last change: 2014 Jul 30 +*pattern.txt* For Vim version 7.4. Last change: 2014 Aug 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -829,6 +829,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on): branch is used. Example: > /\(.\{-}\zsFab\)\{3} < Finds the third occurrence of "Fab". + This cannot be followed by a multi. *E888* {not in Vi} {not available when compiled without the |+syntax| feature} */\ze* \ze Matches at any position, and sets the end of the match there: The @@ -837,6 +838,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on): branch is used. Example: "end\ze\(if\|for\)" matches the "end" in "endif" and "endfor". + This cannot be followed by a multi. *E888* {not in Vi} {not available when compiled without the |+syntax| feature} */\%^* *start-of-file* From ac2239e0a90a72456ab9d99dab174bf666ed6615 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 02:17:56 +0900 Subject: [PATCH 615/783] usr_04 --- doc/usr_04.jax | 4 ++-- en/usr_04.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/usr_04.jax b/doc/usr_04.jax index 40f244d0a..a74bbded4 100644 --- a/doc/usr_04.jax +++ b/doc/usr_04.jax @@ -1,4 +1,4 @@ -*usr_04.txt* For Vim バージョン 7.4. Last change: 2008 Sep 06 +*usr_04.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 VIM USER MANUAL - by Bram Moolenaar @@ -184,7 +184,7 @@ /four<Enter> 最初の "four" を探す。 cwfive<Esc> その単語を "five" に変更する。 n 次の "four" を探す - . 直前の変更を繰り返す。 + . 直前の "five" への変更を繰り返す。 n 次の "four" を探す . 直前の変更を繰り返す。 以下繰り返し。 diff --git a/en/usr_04.txt b/en/usr_04.txt index c09cb204c..5f24c8c6f 100644 --- a/en/usr_04.txt +++ b/en/usr_04.txt @@ -1,4 +1,4 @@ -*usr_04.txt* For Vim version 7.4. Last change: 2008 Sep 06 +*usr_04.txt* For Vim version 7.4. Last change: 2014 Aug 29 VIM USER MANUAL - by Bram Moolenaar @@ -186,7 +186,7 @@ commands: /four<Enter> find the first string "four" cwfive<Esc> change the word to "five" n find the next "four" - . repeat the change to "five' + . repeat the change to "five" n find the next "four" . repeat the change etc. From 1947aab729b5dd59872f4fab12aa56bc29696221 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 31 Aug 2014 10:17:58 +0900 Subject: [PATCH 616/783] #106: missing word --- doc/starting.jax | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/starting.jax b/doc/starting.jax index c1daf6fea..bdeda5b02 100644 --- a/doc/starting.jax +++ b/doc/starting.jax @@ -1269,11 +1269,12 @@ Note: .vimrcファイルを作成するときにはオプション 'compatible' 引数リストのインデックスも復元される。 2. ウィンドウで編集していたファイルを開く。編集していたファイルがなければ、空 のウィンドウが作成される。 -3. 'viewoptions' が "localoptions" を含んでいるときは、そのバッファやウィンド - ウに特有な(ローカルな)、マッピング、短縮(abbreviations)、オプション、を復元 - する。セッションの一部としてビューを保存するときに、'sessionoptions' に - "options" が含まれているときは、オプションのグローバルな値とローカルな値が - 両方保存される。 +3. 'viewoptions' が "options" か "localoptions" を含んでいるときは、その + バッファやウィンドウに特有な(ローカルな)、マッピング、短縮(abbreviations)、 + オプション、を復元する。 + セッションの一部としてビューを保存するときに、'sessionoptions' に "options" + が含まれているときは、オプションのグローバルな値とローカルな値が両方保存さ + れる。 4. 'viewoptions' が "folds" を含んでいるときは、手作業で設定した折畳みを復元す る。折畳みの開閉状態も復元する。 5. ファイルにおけるカーソルとスクロールの位置を復元する。閉じた折畳みがあると From 13c3843e6168f44f0f30288738573bf96cc04957 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 31 Aug 2014 14:54:44 +0900 Subject: [PATCH 617/783] Remove duplicated netrw-:Rexplore --- doc/pi_netrw.jax | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/pi_netrw.jax b/doc/pi_netrw.jax index 9f3189b30..0a2353ec8 100644 --- a/doc/pi_netrw.jax +++ b/doc/pi_netrw.jax @@ -1504,12 +1504,6 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は 幅指定がない場合は、|g:netrw_winsize| 変数が (設定されているなら)、新しいエク スプローラウィンドウの幅/高さとして使用されます。 - *netrw-:Rexplore* -:Rexplore このコマンドは他のコマンドとは少し違います。例えば、netrw ブラウザ - ウィンドウで <cr> を押してファイルを開いたとき、:Rexplore を実行す - ると、最後に表示していたブラウザ画面に戻ることができます。これは - <2-leftmouse> のコマンド版です (<2-leftmouse> はマウス対応端末か - gvim でしか使えません)。 *netrw-:Rexplore* :Rexplore このコマンドは他のコマンドとは少し違い、あらかじめエクスプローラ ウィンドウを開いてからでないと使えません。 From 3ed09baa3af8e6fe9aa529ac0f1292458ce89496 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sun, 31 Aug 2014 15:20:26 +0900 Subject: [PATCH 618/783] remove second E888 temporary (#112) --- doc/pattern.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index 746dda68a..2243a690e 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -829,7 +829,7 @@ $ パターンの末尾、または "\|"、"\)"、"\n" ('magic' on時) の前に 例: > /end\ze\(if\|for\) < これは、"endif" または "endfor" の "end" にマッチします。 - これは後ろに量指定子を置けない。 *E888* + これは後ろに量指定子を置けない。 {Vi にはありません} {|+syntax|が有効な場合のみ利用できます} */\%^* *start-of-file* From c38a6a6638b73e0b84f3e5a3b8c8249b51c443ac Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Wed, 10 Sep 2014 20:16:20 +0900 Subject: [PATCH 619/783] options --- doc/options.jax | 5 +++-- en/options.txt | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 920354682..ebb48bd7d 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1,4 +1,4 @@ -*options.txt* For Vim バージョン 7.4. Last change: 2014 Aug 09 +*options.txt* For Vim バージョン 7.4. Last change: 2014 Sep 09 VIMリファレンスマニュアル by Bram Moolenaar @@ -3450,7 +3450,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる るので注意。 *'grepformat'* *'gfm'* -'grepformat' 'gfm' 文字列 (既定では "%f:%l%m,%f %l%m") +'grepformat' 'gfm' 文字列 (default "%f:%l:%m,%f:%l%m,%f %l%m") グローバル {Vi にはない} コマンド ":grep" の出力を認識するための書式。 @@ -8001,6 +8001,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる options ウィンドウまたはバッファについてローカルなオプションと マッピング (ローカルなオプションのグローバルな値は含め ない) + localoptions "options" と同じ slash ファイル名内の '\' がスラッシュに置換される unix WindowsやDOS上でも、Unix形式の end-of-line (1個の <NL>) を使う diff --git a/en/options.txt b/en/options.txt index 2dcfa19e4..291ab833e 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.4. Last change: 2014 Aug 09 +*options.txt* For Vim version 7.4. Last change: 2014 Sep 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3369,7 +3369,7 @@ A jump table for the options with a short description can be found at |Q_op|. NOTE: This option is reset when 'compatible' is set. *'grepformat'* *'gfm'* -'grepformat' 'gfm' string (default "%f:%l%m,%f %l%m") +'grepformat' 'gfm' string (default "%f:%l:%m,%f:%l%m,%f %l%m") global {not in Vi} Format to recognize for the ":grep" command output. @@ -7850,6 +7850,7 @@ A jump table for the options with a short description can be found at |Q_op|. fold options options options and mappings local to a window or buffer (not global values for local options) + localoptions same as "options" slash backslashes in file names replaced with forward slashes unix with Unix end-of-line format (single <NL>), even when From e4ef9f9815fcec0f1b62fd8da40e93df156a9f9b Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Wed, 10 Sep 2014 20:22:58 +0900 Subject: [PATCH 620/783] pattern --- doc/pattern.jax | 6 +++--- en/pattern.txt | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index 2243a690e..f07bb6bce 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -1,4 +1,4 @@ -*pattern.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 +*pattern.txt* For Vim バージョン 7.4. Last change: 2014 Sep 06 VIMリファレンスマニュアル by Bram Moolenaar @@ -820,7 +820,7 @@ $ パターンの末尾、または "\|"、"\)"、"\n" ('magic' on時) の前に 例: > /\(.\{-}\zsFab\)\{3} < これは、3 番目に現れた "Fab" にマッチします。 - これは後ろに量指定子を置けない。 *E888* + 後ろに量指定子を置くことはできない。 *E888* {Vi にはありません} {|+syntax|が有効な場合のみ利用できます} */\ze* \ze どこにでもマッチして、マッチの末尾を設定します。このアトムの前の文字 @@ -829,7 +829,7 @@ $ パターンの末尾、または "\|"、"\)"、"\n" ('magic' on時) の前に 例: > /end\ze\(if\|for\) < これは、"endif" または "endfor" の "end" にマッチします。 - これは後ろに量指定子を置けない。 + 後ろに量指定子を置くことはできない。 |E888| {Vi にはありません} {|+syntax|が有効な場合のみ利用できます} */\%^* *start-of-file* diff --git a/en/pattern.txt b/en/pattern.txt index 205d2d8bf..322811b7c 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.4. Last change: 2014 Aug 29 +*pattern.txt* For Vim version 7.4. Last change: 2014 Sep 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -838,7 +838,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on): branch is used. Example: "end\ze\(if\|for\)" matches the "end" in "endif" and "endfor". - This cannot be followed by a multi. *E888* + This cannot be followed by a multi. |E888| {not in Vi} {not available when compiled without the |+syntax| feature} */\%^* *start-of-file* From e9cfd040f34afb84976bd7e3aa8dcab479433f64 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Wed, 10 Sep 2014 20:26:18 +0900 Subject: [PATCH 621/783] typo --- doc/options.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/options.jax b/doc/options.jax index ebb48bd7d..cadebffed 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -3450,7 +3450,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる るので注意。 *'grepformat'* *'gfm'* -'grepformat' 'gfm' 文字列 (default "%f:%l:%m,%f:%l%m,%f %l%m") +'grepformat' 'gfm' 文字列 (既定では "%f:%l:%m,%f:%l%m,%f %l%m") グローバル {Vi にはない} コマンド ":grep" の出力を認識するための書式。 From 2f5803b5b85cecacc2cfeb972e7c67fc4d1d3981 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 11 Sep 2014 17:47:48 +0900 Subject: [PATCH 622/783] cmdline --- doc/cmdline.jax | 4 ++-- en/cmdline.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/cmdline.jax b/doc/cmdline.jax index 685ff1d8c..fec300ac1 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim バージョン 7.4. Last change: 2014 Aug 16 +*cmdline.txt* For Vim バージョン 7.4. Last change: 2014 Sep 06 VIMリファレンスマニュアル by Bram Moolenaar @@ -52,7 +52,7 @@ Note キーボードに有効なカーソルキーまたは他の特殊なキー - インプット行 (関数 |input()| に対して入力されたテキスト) 用 - デバッグモードコマンド用 これらは全く別のものである。それぞれの履歴は同種の入力をしたときだけ使用できる。 -オプション 'history' で保存されるコマンド数を設定できる (既定値: 20)。 +オプション 'history' で保存されるコマンド数を設定できる (既定値: 50)。 NOTE: - 以前と全く同じコマンドを打ち込んだときは、古い方の記録が消される (繰り返され たコマンドが古いコマンドの履歴を追い出して消すのを避けるため)。 diff --git a/en/cmdline.txt b/en/cmdline.txt index a31f7107f..d3da61ceb 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.4. Last change: 2014 Aug 16 +*cmdline.txt* For Vim version 7.4. Last change: 2014 Sep 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -56,7 +56,7 @@ history tables: These are completely separate. Each history can only be accessed when entering the same type of line. Use the 'history' option to set the number of lines that are remembered -(default: 20). +(default: 50). Notes: - When you enter a command-line that is exactly the same as an older one, the old one is removed (to avoid repeated commands moving older commands out of From 325de5f924f64171ab45ba978d1b33055ad51328 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 11 Sep 2014 17:49:51 +0900 Subject: [PATCH 623/783] eval --- doc/eval.jax | 4 +++- en/eval.txt | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index d256d8b36..4c0f7cb76 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1,4 +1,4 @@ -*eval.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 +*eval.txt* For Vim バージョン 7.4. Last change: 2014 Sep 09 VIMリファレンスマニュアル by Bram Moolenaar @@ -3256,6 +3256,7 @@ getcmdtype() *getcmdtype()* ? 後方検索コマンド @ |input()| コマンド - |:insert| または |:append| コマンド + = |i_CTRL-R_=| コマンドラインを編集しているときのみ動作する。つまり |c_CTRL-\_e|または|c_CTRL-R_=|または式マッピングを使っていると きのみ有効。そうでないときは空文字列を返す。 @@ -3471,6 +3472,7 @@ gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()* タブページ {tabnr} のタブローカル変数 {varname} を取得する。 |t:var| タブの番号は 1 から始まる。 + {varname} が空のときは全タブローカル変数からなる辞書を返す。 Note: 指定する変数名は "t:" を除いた名前。 タブや変数が存在しないときは{def}または空文字列を返し、エラー メッセージは表示されない。 diff --git a/en/eval.txt b/en/eval.txt index 688fc38eb..c0ec1a7da 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2014 Aug 29 +*eval.txt* For Vim version 7.4. Last change: 2014 Sep 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3346,6 +3346,7 @@ getcmdtype() *getcmdtype()* ? backward search command @ |input()| command - |:insert| or |:append| command + = |i_CTRL-R_=| Only works when editing the command line, thus requires use of |c_CTRL-\_e| or |c_CTRL-R_=| or an expression mapping. Returns an empty string otherwise. @@ -3575,6 +3576,8 @@ gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()* Get the value of a tab-local variable {varname} in tab page {tabnr}. |t:var| Tabs are numbered starting with one. + When {varname} is empty a dictionary with all tab-local + variables is returned. Note that the name without "t:" must be used. When the tab or variable doesn't exist {def} or an empty string is returned, there is no error message. From d74ac5d701e47613c7317d78651d28ebe5f21273 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 11 Sep 2014 18:27:03 +0900 Subject: [PATCH 624/783] syntax --- doc/syntax.jax | 27 ++++++++++++++++++++++++++- en/syntax.txt | 26 +++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/doc/syntax.jax b/doc/syntax.jax index 94b61510d..258d5d152 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -1,4 +1,4 @@ -*syntax.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 +*syntax.txt* For Vim バージョン 7.4. Last change: 2014 Sep 09 VIMリファレンスマニュアル by Bram Moolenaar @@ -2858,6 +2858,7 @@ TEX *tex.vim* *ft-tex-syntax* *latex-syntax* Tex: Conceal モードを活用する |tex-conceal| Tex: Conceal モードの選択 |g:tex_conceal| Tex: iskeyword を制御する |g:tex_isk| + Tex: 下付き記号と上付き記号を制御する |tex-supersub| *tex-folding* *g:tex_fold_enabled* Tex: 構文折り畳みをするには ~ @@ -2949,6 +2950,7 @@ g:tex_fast 変数を設定すると、構文強調表示でリージョンや同 < 例えば、let g:tex_fast= "M" は 数学関連の強調表示を有効化する。他のリージョン ベースの構文強調表示は有効化されない。 +(|g:tex_conceal| と |tex-supersub| も参照) *tex-morecommands* *tex-package* Tex: もっとコマンドをハイライトさせるには ~ @@ -3054,6 +3056,29 @@ g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示 * 存在しない場合、'iskeyword' のローカル値として 48-57,a-z,A-Z,192-255 が設定される。 + *tex-supersub* *g:tex_superscripts* *g:tex_subscripts* + Tex: 下付き記号と上付き記号を制御する + + Conceal による文字の代替表示を有効にするには |tex-conceal| を参照。 + + |g:tex_conceal| を設定することでアクセント、太字/斜体、数学記号、ギリ + シア文字、上付き記号/下付き記号のどれを Conceal 表示するかを選択でき + る。 + + どの上付き記号/下付き記号を構文に基づいて Conceal 表示 (|:syn-cchar| + 参照) するかを制御できる。すべてのフォントがすべての文字をサポートして + いるわけではないので、Conceal 表示する文字を変更できるようになってい + る。初期設定では次のように設定されている: > + + let g:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]" + let g:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]" +< + 例えば、私は Luxi Mono Bold を使っているが、これは "hklmnpst" に対する + 下付き記号をサポートしていない。そこで私は > + let g:tex_subscripts= "[0-9aeijoruvx,+-/().]" +< この設定を ~/.vim/ftplugin/tex/tex.vim に書いて、utf-8 の謎グリフが表 + 示されないようにしている。 + TF *tf.vim* *ft-tf-syntax* diff --git a/en/syntax.txt b/en/syntax.txt index d47b09a5d..5cd4bd544 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.4. Last change: 2014 Aug 29 +*syntax.txt* For Vim version 7.4. Last change: 2014 Sep 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2975,6 +2975,7 @@ TEX *tex.vim* *ft-tex-syntax* *latex-syntax* Tex: Taking Advantage of Conceal Mode |tex-conceal| Tex: Selective Conceal Mode |g:tex_conceal| Tex: Controlling iskeyword |g:tex_isk| + Tex: Fine Subscript and Superscript Control |tex-supersub| *tex-folding* *g:tex_fold_enabled* Tex: Want Syntax Folding? ~ @@ -3068,6 +3069,7 @@ selectively to enable just some syntax highlighting: > < As an example, let g:tex_fast= "M" will allow math-associated highlighting but suppress all the other region-based syntax highlighting. +(also see: |g:tex_conceal| and |tex-supersub|) *tex-morecommands* *tex-package* Tex: Want To Highlight More Commands? ~ @@ -3169,6 +3171,28 @@ syntax highlighting script handles this with the following logic: * If g:tex_isk exists, then it will be used for the local 'iskeyword' * Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255 + *tex-supersub* *g:tex_superscripts* *g:tex_subscripts* + Tex: Fine Subscript and Superscript Control~ + + See |tex-conceal| for how to enable concealed character replacement. + + See |g:tex_conceal| for selectively concealing accents, bold/italic, + math, Greek, and superscripts/subscripts. + + One may exert fine control over which superscripts and subscripts one + wants syntax-based concealment for (see |:syn-cchar|). Since not all + fonts support all characters, one may override the + concealed-replacement lists; by default these lists are given by: > + + let g:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]" + let g:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]" +< + For example, I use Luxi Mono Bold; it doesn't support subscript + characters for "hklmnpst", so I put > + let g:tex_subscripts= "[0-9aeijoruvx,+-/().]" +< in ~/.vim/ftplugin/tex/tex.vim in order to avoid having inscrutable + utf-8 glyphs appear. + TF *tf.vim* *ft-tf-syntax* From e7da2a18c60a97f1a67558e68afaa4f10171d033 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 2 Oct 2014 23:45:23 +0900 Subject: [PATCH 625/783] Update eval.txt --- doc/eval.jax | 4 ++-- en/eval.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 4c0f7cb76..1bd9e87b0 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1,4 +1,4 @@ -*eval.txt* For Vim バージョン 7.4. Last change: 2014 Sep 09 +*eval.txt* For Vim バージョン 7.4. Last change: 2014 Sep 27 VIMリファレンスマニュアル by Bram Moolenaar @@ -1704,7 +1704,7 @@ confirm( {msg} [, {choices} [, {default} [, {type}]]]) copy( {expr}) 任意 {expr}の浅いコピーを作る cos( {expr}) 浮動小数点数 {expr} の余弦(コサイン) cosh( {expr}) 浮動小数点数 {expr}のハイパボリックコサイン -count( {list}, {expr} [, {start} [, {ic}]]) +count( {list}, {expr} [, {ic} [, {start}]]) 数値 {list}中に{expr}が何個現れるか数える cscope_connection( [{num} , {dbpath} [, {prepend}]]) 数値 cscope接続の存在を判定する diff --git a/en/eval.txt b/en/eval.txt index c0ec1a7da..eb7fcbcaa 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2014 Sep 09 +*eval.txt* For Vim version 7.4. Last change: 2014 Sep 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1751,7 +1751,7 @@ confirm( {msg} [, {choices} [, {default} [, {type}]]]) copy( {expr}) any make a shallow copy of {expr} cos( {expr}) Float cosine of {expr} cosh( {expr}) Float hyperbolic cosine of {expr} -count( {list}, {expr} [, {start} [, {ic}]]) +count( {list}, {expr} [, {ic} [, {start}]]) Number count how many {expr} are in {list} cscope_connection( [{num} , {dbpath} [, {prepend}]]) Number checks existence of cscope connection From 883765f5a68dd7ff845fc3efaed96cac897994fb Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 11 Oct 2014 01:13:23 +0900 Subject: [PATCH 626/783] Update some files --- doc/spell.jax | 13 ++++++++++++- doc/syntax.jax | 8 ++++---- en/spell.txt | 13 ++++++++++++- en/syntax.txt | 10 +++++----- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/doc/spell.jax b/doc/spell.jax index db0cfea6b..9fbc46645 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -1,4 +1,4 @@ -*spell.txt* For Vim バージョン 7.4. Last change: 2014 Jul 02 +*spell.txt* For Vim バージョン 7.4. Last change: 2014 Sep 19 VIMリファレンスマニュアル by Bram Moolenaar @@ -1061,6 +1061,9 @@ this text to start with a "#" so that mistakes don't go unnoticed. Example: SFX F 0 in [^i]n # Spion > Spionin ~ SFX F 0 nen in # Bauerin > Bauerinnen ~ +However, to avoid lots of errors in affix files written for Myspell, you can +add the IGNOREEXTRA flag. + Apparently Myspell allows an affix name to appear more than once. Since this might also be a mistake, Vim checks for an extra "S". The affix files for Myspell that use this feature apparently have this flag. Example: @@ -1114,6 +1117,14 @@ Specifically, the affix flags can be used for: - CIRCUMFIX, as explained just below. +IGNOREEXTRA *spell-IGNOREEXTRA* + +Normally Vim gives an error for an extra field that does not start with '#'. +This avoids errors going unnoticed. However, some files created for Myspell +or Hunspell may contain many entries with an extra field. Use the IGNOREEXTRA +flag to avoid lots of errors. + + CIRCUMFIX *spell-CIRCUMFIX* The CIRCUMFIX flag means a prefix and suffix must be added at the same time. diff --git a/doc/syntax.jax b/doc/syntax.jax index 258d5d152..7805fea08 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -1,4 +1,4 @@ -*syntax.txt* For Vim バージョン 7.4. Last change: 2014 Sep 09 +*syntax.txt* For Vim バージョン 7.4. Last change: 2014 Sep 27 VIMリファレンスマニュアル by Bram Moolenaar @@ -3664,7 +3664,7 @@ fold *:syn-fold* *:syn-contains* *E405* *E406* *E407* *E408* *E409* -contains={groupname},.. +contains={group-name},.. 引数 "contains" の後には構文グループ名のリストを続ける。"contains" で指定され たグループは、そのアイテムの内側で始まることを許可される(内包されるグループに @@ -3715,7 +3715,7 @@ contains=CONTAINED,{group-name},.. る。これはハイライトされる範囲も制限することに注意。 -containedin={groupname}... *:syn-containedin* +containedin={group-name}... *:syn-containedin* 引数 "containedin" の後には構文グループ名のリストを続ける。するとこのアイテム がそれらのグループの内側で始まることが許可される。これは外側のアイテムが引数 @@ -3734,7 +3734,7 @@ containedin={groupname}... *:syn-containedin* "containedin" の先にキーワードを指定することは無意味である。 -nextgroup={groupname},.. *:syn-nextgroup* +nextgroup={group-name},.. *:syn-nextgroup* 引数 "nextgroup" の後には構文グループ名のリストをカンマ区切りで続ける ("contains" と同様。パターンを使うこともできる)。 diff --git a/en/spell.txt b/en/spell.txt index 3ffd8932e..5a802a29f 100644 --- a/en/spell.txt +++ b/en/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 7.4. Last change: 2014 Jul 02 +*spell.txt* For Vim version 7.4. Last change: 2014 Sep 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1058,6 +1058,9 @@ this text to start with a "#" so that mistakes don't go unnoticed. Example: SFX F 0 in [^i]n # Spion > Spionin ~ SFX F 0 nen in # Bauerin > Bauerinnen ~ +However, to avoid lots of errors in affix files written for Myspell, you can +add the IGNOREEXTRA flag. + Apparently Myspell allows an affix name to appear more than once. Since this might also be a mistake, Vim checks for an extra "S". The affix files for Myspell that use this feature apparently have this flag. Example: @@ -1111,6 +1114,14 @@ Specifically, the affix flags can be used for: - CIRCUMFIX, as explained just below. +IGNOREEXTRA *spell-IGNOREEXTRA* + +Normally Vim gives an error for an extra field that does not start with '#'. +This avoids errors going unnoticed. However, some files created for Myspell +or Hunspell may contain many entries with an extra field. Use the IGNOREEXTRA +flag to avoid lots of errors. + + CIRCUMFIX *spell-CIRCUMFIX* The CIRCUMFIX flag means a prefix and suffix must be added at the same time. diff --git a/en/syntax.txt b/en/syntax.txt index 5cd4bd544..ee91a91ac 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.4. Last change: 2014 Sep 09 +*syntax.txt* For Vim version 7.4. Last change: 2014 Sep 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3799,7 +3799,7 @@ The 'foldnestmax' option limits the nesting of syntax folds. *:syn-contains* *E405* *E406* *E407* *E408* *E409* -contains={groupname},.. +contains={group-name},.. The "contains" argument is followed by a list of syntax group names. These groups will be allowed to begin inside the item (they may extend past the @@ -3852,13 +3852,13 @@ region where contained items do match. Note that this may also limit the area that is highlighted -containedin={groupname}... *:syn-containedin* +containedin={group-name}... *:syn-containedin* The "containedin" argument is followed by a list of syntax group names. The item will be allowed to begin inside these groups. This works as if the containing item has a "contains=" argument that includes this item. -The {groupname}... can be used just like for "contains", as explained above. +The {group-name}... can be used just like for "contains", as explained above. This is useful when adding a syntax item afterwards. An item can be told to be included inside an already existing item, without changing the definition @@ -3874,7 +3874,7 @@ keywords never contain another item, thus adding them to "containedin" won't work. -nextgroup={groupname},.. *:syn-nextgroup* +nextgroup={group-name},.. *:syn-nextgroup* The "nextgroup" argument is followed by a list of syntax group names, separated by commas (just like with "contains", so you can also use patterns). From 1623ad284b3cddddf04cff0335b8f1be8bee64b2 Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Mon, 20 Oct 2014 22:42:29 +0900 Subject: [PATCH 627/783] Fixes :quit --- doc/editing.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/editing.jax b/doc/editing.jax index 82804abbc..8a2a65db7 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -1059,10 +1059,10 @@ MS-DOSとMS-Windowsでは、デバイスは名前から判断される: 5. 書き込みと終了 *write-quit* *:q* *:quit* -:q[uit] カレントウィンドウを閉じる。最後のウィンドウで使うとを +:q[uit] カレントウィンドウを閉じる。最後のウィンドウで使うと Vimを終了させる。変更点があってVimがカレントバッファを - 放棄 |abandon| しようとしないときや、引数リスト内で末 - 尾にないファイルを編集しているときには失敗する。 + 放棄 |abandon| しようとしないときや、引数リストの最後 + のファイルが編集されていないときは失敗する。 他のタブページが存在するとき、カレントタブページ内の最 後のウィンドウを閉じるとカレントタブページが閉じられる。 |tab-page| From 32727a1d5c9fbcdbc818cc661fe98d7e0b2007f2 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 22 Nov 2014 12:50:16 +0900 Subject: [PATCH 628/783] Update some files --- doc/eval.jax | 5 +++-- doc/usr_25.jax | 4 ++-- en/eval.txt | 5 +++-- en/usr_25.txt | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 1bd9e87b0..a2d81bfbc 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1708,8 +1708,8 @@ count( {list}, {expr} [, {ic} [, {start}]]) 数値 {list}中に{expr}が何個現れるか数える cscope_connection( [{num} , {dbpath} [, {prepend}]]) 数値 cscope接続の存在を判定する -cursor( {lnum}, {col} [, {coladd}]) - 数値 カーソルを{lnum}, {col}, {coladd}へ移動 +cursor( {lnum}, {col} [, {off}]) + 数値 カーソルを{lnum}, {col}, {off}へ移動 cursor( {list}) 数値 カーソルを{list}の位置へ移動 deepcopy( {expr} [, {noref}]) 任意 {expr}の完全なコピーを作る delete( {fname}) 数値 ファイル{fname}を消す @@ -2564,6 +2564,7 @@ cursor({list}) {col}が0の場合は、カレント桁に留まる。 {curswant} が与えられた場合は、縦方向移動の優先的列番号として 使われる。指定がない場合は {col} が使われる。 + 'virtualedit' が有効のとき、{off}は文字の先頭からの画面上のオ フセットを指定する。例えば、<Tab>の中の位置や最後の文字より後 などへも移動できる。 diff --git a/doc/usr_25.jax b/doc/usr_25.jax index 4f6e91cea..72fb6bb88 100644 --- a/doc/usr_25.jax +++ b/doc/usr_25.jax @@ -1,4 +1,4 @@ -*usr_25.txt* For Vim バージョン 7.4. Last change: 2007 May 11 +*usr_25.txt* For Vim バージョン 7.4. Last change: 2014 Oct 29 VIM USER MANUAL - by Bram Moolenaar @@ -398,7 +398,7 @@ window" はウィンドウに表示されている範囲を示しています。 :map <Down> gj -段落を一行につなげる +段落を一行につなげる *edit-paragraph-join* -------------------- MS-Word のようなプログラムにテキストをコピーするとき、段落は一行につながってい diff --git a/en/eval.txt b/en/eval.txt index eb7fcbcaa..c9f10dc94 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1755,8 +1755,8 @@ count( {list}, {expr} [, {ic} [, {start}]]) Number count how many {expr} are in {list} cscope_connection( [{num} , {dbpath} [, {prepend}]]) Number checks existence of cscope connection -cursor( {lnum}, {col} [, {coladd}]) - Number move cursor to {lnum}, {col}, {coladd} +cursor( {lnum}, {col} [, {off}]) + Number move cursor to {lnum}, {col}, {off} cursor( {list}) Number move cursor to position in {list} deepcopy( {expr} [, {noref}]) any make a full copy of {expr} delete( {fname}) Number delete file {fname} @@ -2623,6 +2623,7 @@ cursor({list}) If {col} is zero, the cursor will stay in the current column. If {curswant} is given it is used to set the preferred column for vertical movement. Otherwise {col} is used. + When 'virtualedit' is used {off} specifies the offset in screen columns from the start of the character. E.g., a position within a <Tab> or after the last character. diff --git a/en/usr_25.txt b/en/usr_25.txt index 5a687599b..23d76a8b0 100644 --- a/en/usr_25.txt +++ b/en/usr_25.txt @@ -1,4 +1,4 @@ -*usr_25.txt* For Vim version 7.4. Last change: 2007 May 11 +*usr_25.txt* For Vim version 7.4. Last change: 2014 Oct 29 VIM USER MANUAL - by Bram Moolenaar @@ -402,7 +402,7 @@ the cursor keys: > :map <Down> gj -TURNING A PARAGRAPH INTO ONE LINE +TURNING A PARAGRAPH INTO ONE LINE *edit-paragraph-join* If you want to import text into a program like MS-Word, each paragraph should be a single line. If your paragraphs are currently separated with empty From 2f75e1a1fde460f5915a8dfc3d3d43035b8aa368 Mon Sep 17 00:00:00 2001 From: thinca <thinca@gmail.com> Date: Sun, 7 Dec 2014 02:29:20 +0900 Subject: [PATCH 629/783] Fix description for 'esckeys' --- doc/options.jax | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index cadebffed..c6c928e57 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -2808,12 +2808,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} オンのときは、<Esc> で始まるファンクションキーも挿入モードで認識される ようになる。オフのときは、<Esc> で始まるカーソルキーとファンクション - キーは、挿入モードで使うことができない。オンにすることの利点は、<Esc> - を一回打ち込むだけですぐに認識され、1秒ほど待つ必要がないことだ。この - オプションをオフにしなくても、オプション 'timeoutlen' と 'ttimeoutlen' - を変更してみるとよい。 Note 'esckeys' がオフのときでも、どのキーをマッ - ピングすることもできるが、そのままではカーソルキーは使用できないことに - 注意。 + キーは、挿入モードで使うことができない。こうすることの利点は、<Esc> を + 一回打ち込むだけですぐに認識され、1秒ほど待つ必要がないことだ。このオ + プションをオフにしなくても、オプション 'timeoutlen' と 'ttimeoutlen' + を変更してみるとよい。 Note 'esckeys' がオフのときでも、どのキーを + マッピングすることもできるが、そのままではカーソルキーは使用できないこ + とに注意。 NOTE: このオプションは 'compatible' がオンのときはViの既定値に、オフの ときはVimの既定値に設定されるので注意。 From 6bdf1fb67ce1134367a08c1a911ae257ea8ebaa2 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 13 Dec 2014 10:02:58 +0900 Subject: [PATCH 630/783] Update options.txt --- doc/options.jax | 15 +++++++-------- en/options.txt | 4 ++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index c6c928e57..a6329f7c4 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -838,7 +838,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'autoread'* *'ar'* *'noautoread'* *'noar'* 'autoread' 'ar' 切替 (既定ではオフ) - グローバルまたはバッファについてローカル |global-local| + グローバル/バッファについてローカル |global-local| {Vi にはない} ファイルがVimの内部では変更されてないが、Vimの外部で変更されたことが判 明したとき、自動的に読み直す。ファイルが削除されたときにはこのようには @@ -964,7 +964,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'backupcopy'* *'bkc'* 'backupcopy' 'bkc' 文字列 (UnixでのViの既定値: "yes"、それ以外: "auto") - グローバル + グローバル/バッファについてローカル |global-local| {Vi にはない} ファイルの書き込みをしてバックアップが作られるとき、その方法をこのオプ ションで指定する。このオプションはコンマで区切られた単語のリストである。 @@ -2274,8 +2274,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'cryptmethod'* *'cm'* -'cryptmethod' 文字列 (既定では "zip") - グローバルまたはバッファについてローカル |global-local| +'cryptmethod' 'cm' 文字列 (既定では "zip") + グローバル/バッファについてローカル |global-local| {Vi にはない} バッファをファイルに保存するときに使用される暗号化メソッドを設定する: *pkzip* @@ -4625,7 +4625,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'keywordprg'* *'kp'* 'keywordprg' 'kp' 文字列 (既定では "man" または "man -s", DOSでは: ":help", OS/2では: "view /", VMSでは: "help") - グローバルまたはバッファについてローカル|global-local| + グローバル/バッファについてローカル |global-local| {Vi にはない} コマンド |K| に使われるプログラム。環境変数は展開される |:set_env|。 Vim の内部ヘルプを開くコマンドは ":help" である(以前はこのオプションの @@ -4795,7 +4795,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'lispwords'* *'lw'* 'lispwords' 'lw' 文字列 (既定値はとても長い) - グローバル/バッファについてローカル |global-local| + グローバル/バッファについてローカル |global-local| {Vi にはない} {Vimが |+lispindent| 機能付きでコンパイルされたときの み有効} @@ -6927,8 +6927,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *'statusline'* *'stl'* *E540* *E542* 'statusline' 'stl' 文字列 (既定では空) - グローバルまたは - ウィンドウについてローカル |global-local| + グローバル/ウィンドウについてローカル |global-local| {Vi にはない} {Vimが |+statusline| 機能付きでコンパイルされたときの み有効} diff --git a/en/options.txt b/en/options.txt index 291ab833e..276becee6 100644 --- a/en/options.txt +++ b/en/options.txt @@ -921,7 +921,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'backupcopy'* *'bkc'* 'backupcopy' 'bkc' string (Vi default for Unix: "yes", otherwise: "auto") - global + global or local to buffer |global-local| {not in Vi} When writing a file and a backup is made, this option tells how it's done. This is a comma separated list of words. @@ -2221,7 +2221,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'cryptmethod'* *'cm'* -'cryptmethod' string (default "zip") +'cryptmethod' 'cm' string (default "zip") global or local to buffer |global-local| {not in Vi} Method used for encryption when the buffer is written to a file: From df154582f50116541fff57c2e17649d77ac7fda7 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Thu, 18 Dec 2014 19:43:27 +0900 Subject: [PATCH 631/783] fixed typo #115 --- doc/gui_w32.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/gui_w32.jax b/doc/gui_w32.jax index e7169e07d..e9c21f3de 100644 --- a/doc/gui_w32.jax +++ b/doc/gui_w32.jax @@ -457,7 +457,7 @@ Vimのウィンドウに1つもしくは複数のファイルをドラッグ&ド それらは普通に開かれる。|drag-n-drop|を参照。 *:simalt* *:si* -:si[malt] {key} Alt と {key} の同時押しをシミュレートする。 +:sim[alt] {key} Alt と {key} の同時押しをシミュレートする。 {Vi にはない} {Win32バージョンだけの機能} 通常、Vimでは使用可能なマッピングを増やすために、Alt-<Key>の全ての組み合わせを From 1a2d38db83ec6cd5e14ec47edec5f374393ebd79 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 8 Jan 2015 13:56:42 +0900 Subject: [PATCH 632/783] Update some files --- doc/gui_w32.jax | 5 +++-- doc/indent.jax | 2 +- doc/index.jax | 2 +- doc/options.jax | 5 +++-- doc/repeat.jax | 4 ++-- en/gui_w32.txt | 5 +++-- en/indent.txt | 2 +- en/index.txt | 2 +- en/options.txt | 5 +++-- en/repeat.txt | 4 ++-- 10 files changed, 20 insertions(+), 16 deletions(-) diff --git a/doc/gui_w32.jax b/doc/gui_w32.jax index e9c21f3de..e84a12696 100644 --- a/doc/gui_w32.jax +++ b/doc/gui_w32.jax @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim バージョン 7.4. Last change: 2011 Jul 23 +*gui_w32.txt* For Vim バージョン 7.4. Last change: 2014 Dec 20 VIMリファレンスマニュアル by Bram Moolenaar @@ -456,9 +456,10 @@ Vimでは多くのMS Windows標準の機能をサポートしている。それ Vimのウィンドウに1つもしくは複数のファイルをドラッグ&ドロップすることができ、 それらは普通に開かれる。|drag-n-drop|を参照。 - *:simalt* *:si* + *:simalt* *:sim* :sim[alt] {key} Alt と {key} の同時押しをシミュレートする。 {Vi にはない} {Win32バージョンだけの機能} + Note: ":si" は "i" フラグ付きの ":s" になる。 通常、Vimでは使用可能なマッピングを増やすために、Alt-<Key>の全ての組み合わせを 使うことができる。これはメニューにアクセスするためのAltキーの標準的な使い方と diff --git a/doc/indent.jax b/doc/indent.jax index 38d3c9050..a00765875 100644 --- a/doc/indent.jax +++ b/doc/indent.jax @@ -1,4 +1,4 @@ -*indent.txt* For Vim バージョン 7.4. Last change: 2014 Apr 23 +*indent.txt* For Vim バージョン 7.4. Last change: 2014 Dec 06 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/doc/index.jax b/doc/index.jax index 24a6e3c83..fb239e43d 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1518,7 +1518,7 @@ You found it, Arthur! *holy-grail* バッファを開く |:sbrewind| :sbr[ewind] ウィンドウを分割してバッファリストの最初の バッファを開く -|:scriptnames| :scrip[tnames] 実行済みVimスクリプトの名前を一覧表示する +|:scriptnames| :scr[iptnames] 実行済みVimスクリプトの名前を一覧表示する |:scriptencoding| :scripte[ncoding] Vimスクリプトが使用しているエンコー ディングを指定する |:scscope| :scs[cope] ウィンドウを分割してcscopeコマンドを実行する diff --git a/doc/options.jax b/doc/options.jax index a6329f7c4..b07d31486 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -771,8 +771,6 @@ Note 1番目の形式では、行全体がオプション指定に使われる を削除するとき、ウィンドウを開閉するときに毎回作業ディレクトリが変更さ れる。開かれた/選択されたファイルを含んでいるディレクトリがカレント ディレクトリになる。 - このオプションはSun ONE Studio 4 Enterprise Editionとともにリリースさ - れたVimとの後方互換性のために提供されている。 Note: このオプションがオンになっていると動かないプラグインがある。 *'arabic'* *'arab'* *'noarabic'* *'noarab'* @@ -7891,6 +7889,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 無効にするには次のようにする。 > setlocal ul=-1 < これは 1 回の変更でもメモリを使い果たしそうなときに役立つ。 + + グローバルな値が使われる場合、ローカルな値が -123456 に設定される。 + |clear-undo| も参照。 *'undoreload'* *'ur'* diff --git a/doc/repeat.jax b/doc/repeat.jax index 02c69584b..930b37d71 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -228,8 +228,8 @@ Vimスクリプトの書き方はユーザーマニュアルの41章|usr_41.txt| のコマンドは無視される。 {Vi にはない} - *:scrip* *:scriptnames* -:scrip[tnames] 読み込まれているスクリプトを読み込まれた順番どおりに + *:scr* *:scriptnames* +:scr[iptnames] 読み込まれているスクリプトを読み込まれた順番どおりに 全て表示する。数字はスクリプトのID(識別子)|<SID>|に使 われている。 {Vi にはない} {|+eval|付きでコンパイルしないと使えない} diff --git a/en/gui_w32.txt b/en/gui_w32.txt index fbe3f35e7..5674bbad0 100644 --- a/en/gui_w32.txt +++ b/en/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 7.4. Last change: 2012 Aug 04 +*gui_w32.txt* For Vim version 7.4. Last change: 2014 Dec 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -452,9 +452,10 @@ detailed elsewhere: see |'mouse'|, |win32-hidden-menus|. You can drag and drop one or more files into the Vim window, where they will be opened as normal. See |drag-n-drop|. - *:simalt* *:si* + *:simalt* *:sim* :sim[alt] {key} simulate pressing {key} while holding Alt pressed. {not in Vi} {only for Win32 versions} + Note: ":si" means ":s" with the "i" flag. Normally, Vim takes control of all Alt-<Key> combinations, to increase the number of possible mappings. This clashes with the standard use of Alt as the diff --git a/en/indent.txt b/en/indent.txt index fc16b1a7e..3f61e2865 100644 --- a/en/indent.txt +++ b/en/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.4. Last change: 2014 Apr 23 +*indent.txt* For Vim version 7.4. Last change: 2014 Dec 06 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/index.txt b/en/index.txt index cda17681f..10a9c843e 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1464,7 +1464,7 @@ tag command action ~ buffer list |:sbrewind| :sbr[ewind] split window and go to first file in the buffer list -|:scriptnames| :scrip[tnames] list names of all sourced Vim scripts +|:scriptnames| :scr[iptnames] list names of all sourced Vim scripts |:scriptencoding| :scripte[ncoding] encoding used in sourced Vim script |:scscope| :scs[cope] split window and execute cscope command |:set| :se[t] show or set options diff --git a/en/options.txt b/en/options.txt index 276becee6..88a7927b6 100644 --- a/en/options.txt +++ b/en/options.txt @@ -730,8 +730,6 @@ A jump table for the options with a short description can be found at |Q_op|. open a file, switch buffers, delete a buffer or open/close a window. It will change to the directory containing the file which was opened or selected. - This option is provided for backward compatibility with the Vim - released with Sun ONE Studio 4 Enterprise Edition. Note: When this option is on some plugins may not work. *'arabic'* *'arab'* *'noarabic'* *'noarab'* @@ -7743,6 +7741,9 @@ A jump table for the options with a short description can be found at |Q_op|. current buffer: > setlocal ul=-1 < This helps when you run out of memory for a single change. + + The local value is set to -123456 when the global value is to be used. + Also see |clear-undo|. *'undoreload'* *'ur'* diff --git a/en/repeat.txt b/en/repeat.txt index 4b28e8617..9209edbec 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -232,8 +232,8 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|. command is ignored. {not in Vi} - *:scrip* *:scriptnames* -:scrip[tnames] List all sourced script names, in the order they were + *:scr* *:scriptnames* +:scr[iptnames] List all sourced script names, in the order they were first sourced. The number is used for the script ID |<SID>|. {not in Vi} {not available when compiled without the From 53ec0841b9c5da69229f390ab3ad7af5aaf7252a Mon Sep 17 00:00:00 2001 From: Hayaki Saito <user@zuse.jp> Date: Tue, 20 Jan 2015 00:06:42 +0900 Subject: [PATCH 633/783] Improve translation of t_CS option --- doc/term.jax | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/term.jax b/doc/term.jax index 684010fe8..b7d64af48 100644 --- a/doc/term.jax +++ b/doc/term.jax @@ -243,7 +243,8 @@ termcap コードに対応するオプションを設定することによって t_cl 画面をクリア *t_cl* *'t_cl'* t_cm カーソル移動 (必須!) *E437* *t_cm* *'t_cm'* t_Co 色数 *t_Co* *'t_Co'* - t_CS 空でなければカーソルをスクロール範囲に相対的に *t_CS* *'t_CS'* + *t_CS* *'t_CS'* + t_CS 空でなければスクロール範囲に対する相対アドレスでカーソルを移動 t_cs スクロール範囲を定義 *t_cs* *'t_cs'* t_CV 縦スクロール範囲を定義 *t_CV* *'t_CV'* t_da 空でない場合は上の行からスクロールダウンする *t_da* *'t_da'* From 03deb4bc52f3675b25f63ce7bed55cbc6b3d094c Mon Sep 17 00:00:00 2001 From: Hayaki Saito <user@zuse.jp> Date: Tue, 20 Jan 2015 00:10:06 +0900 Subject: [PATCH 634/783] Translate t_nd option --- doc/term.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/term.jax b/doc/term.jax index b7d64af48..f3294634c 100644 --- a/doc/term.jax +++ b/doc/term.jax @@ -261,7 +261,7 @@ termcap コードに対応するオプションを設定することによって t_mr 反転モード *t_mr* *'t_mr'* *t_ms* *'t_ms'* t_ms 空でない場合は強調・反転モードでカーソルを移動できる - t_nd non destructive space character *t_nd* *'t_nd'* + t_nd 非破壊スペース{訳注: カーソルを1文字分右に移動} *t_nd* *'t_nd'* t_op 元の色のペアに戻す *t_op* *'t_op'* t_RI カーソルを指定数右へ移動 *t_RI* *'t_RI'* t_Sb 背景色を設定 *t_Sb* *'t_Sb'* From fcaf95cbb2268e92df52c43d61f5c087fe1ad3d6 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 28 Jan 2015 08:57:05 +0900 Subject: [PATCH 635/783] Update intro.txt --- doc/intro.jax | 4 ++-- en/intro.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/intro.jax b/doc/intro.jax index ed238de4a..c0c951d4b 100644 --- a/doc/intro.jax +++ b/doc/intro.jax @@ -1,4 +1,4 @@ -*intro.txt* For Vim バージョン 7.4. Last change: 2014 May 24 +*intro.txt* For Vim バージョン 7.4. Last change: 2015 Jan 20 VIMリファレンスマニュアル by Bram Moolenaar @@ -138,7 +138,7 @@ http://www.vim.org/maillist.php バグレポート: *bugs* *bug-reports* *bugreport.vim* -バグレポートは Vim 開発陣 <vim_dev@vim.org> に送ってください。 +バグレポートは Vim 開発陣 <vim-dev@vim.org> に送ってください。 これはメーリングリストです。最初にメンバーになる必要があります。たくさんの人が そのメッセージを見ます。それが不都合な場合は (例えばセキュリティ関係)、 <bugs@vim.org> に送ってください。そのメッセージは Vim のメンテナ (Bram) だけに diff --git a/en/intro.txt b/en/intro.txt index a03079c79..9f6dc033e 100644 --- a/en/intro.txt +++ b/en/intro.txt @@ -1,4 +1,4 @@ -*intro.txt* For Vim version 7.4. Last change: 2014 May 24 +*intro.txt* For Vim version 7.4. Last change: 2015 Jan 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -135,7 +135,7 @@ http://www.vim.org/maillist.php Bug reports: *bugs* *bug-reports* *bugreport.vim* -Send bug reports to: Vim Developers <vim_dev@vim.org> +Send bug reports to: Vim Developers <vim-dev@vim.org> This is a maillist, you need to become a member first and many people will see the message. If you don't want that, e.g. because it is a security issue, send it to <bugs@vim.org>, this only goes to the Vim maintainer (that's Bram). From c4fc20cf611b8cdae6ee6a701699357455c97b0b Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 4 Feb 2015 09:39:10 +0900 Subject: [PATCH 636/783] Update some files --- doc/eval.jax | 11 ++++++----- doc/helphelp.jax | 5 ++++- doc/index.jax | 3 ++- doc/quickref.jax | 13 +++++++++---- en/eval.txt | 7 ++++--- en/helphelp.txt | 5 ++++- en/index.txt | 3 ++- en/quickref.txt | 7 ++++++- 8 files changed, 37 insertions(+), 17 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index a2d81bfbc..a601917c8 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -923,7 +923,7 @@ number 数定数 *expr-number* 浮動小数点数は次の2つの形式で書ける: [-+]{N}.{M} - [-+]{N}.{M}e[-+]{exp} + [-+]{N}.{M}[eE][-+]{exp} ここで {N} と {M} は数値である。{N} と {M} の両方とも省略してはならず、数値の みを含めることができる。 @@ -3411,9 +3411,9 @@ getpos({expr}) {expr}の位置を返す。{expr}として指定できる値に "V" (行選択モード) のとき、'< の桁番号はゼロ、'> の桁番号は大 きな値になる。 この関数はマークの位置を保存し、復元するために使われる: > - let save_cursor = getpos(".") - MoveTheCursorAround - call setpos('.', save_cursor) + let save_a_mark = getpos("'a") + ... + call setpos("'a", save_a_mark) < |getcurpos()| と |setpos()|も参照。 @@ -4583,6 +4583,7 @@ printf({fmt}, {expr1} ...) *printf()* *printf-s* s 引数の文字列を出力する。精度を指定した場合、その数値以 下のバイト数のみを書き出す。 + *printf-S* S 引数の文字列を出力する。精度を指定した場合、その数値以 下の表示幅のみを書き出す。|+multi_byte| 機能がない場合 は 's' と同じ動作になる。 @@ -7064,7 +7065,7 @@ Vimはこれを見つけると、まず波括弧の中の式を評価し、そ :unlet v < *E741* ロックされた変数を変更しようとするとエラーメッセージ - "E741: Value of {name} is locked" が表示される。 + "E741: Value is locked: {name}" が表示される。 [depth]はリスト|List|や辞書|Dictionary|をロックすると きに意味がある。どれだけ深くロックするかを指定する: diff --git a/doc/helphelp.jax b/doc/helphelp.jax index 9e3ff9733..9a9ea3d17 100644 --- a/doc/helphelp.jax +++ b/doc/helphelp.jax @@ -1,4 +1,4 @@ -*helphelp.txt* For Vim バージョン 7.4. Last change: 2012 Nov 28 +*helphelp.txt* For Vim バージョン 7.4. Last change: 2014 Sep 19 VIMリファレンスマニュアル by Bram Moolenaar @@ -95,6 +95,9 @@ るときには、それと同じ言語を優先します。 |help-translated|も参照。 + *:helpc* *:helpclose* +:helpc[lose] ヘルプウィンドウがあれば、1つ閉じます。 + *:helpg* *:helpgrep* :helpg[rep] {pattern}[@xx] すべてのヘルプファイルから {pattern} を検索して、マッ diff --git a/doc/index.jax b/doc/index.jax index fb239e43d..47b0d270f 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1,4 +1,4 @@ -*index.txt* For Vim バージョン 7.4. Last change: 2014 Mar 25 +*index.txt* For Vim バージョン 7.4. Last change: 2015 Jan 07 VIMリファレンスマニュアル by Bram Moolenaar @@ -1277,6 +1277,7 @@ You found it, Arthur! *holy-grail* |:gvim| :gv[im] GUI をスタートする |:hardcopy| :ha[rdcopy] テキストをプリンタに出力する |:help| :h[elp] ヘルプウィンドウを表示 +|:helpclose| :helpc[lose] ヘルプウィンドウを1つ閉じる |:helpfind| :helpf[ind] ヘルプのキーワードを入力するためのダイアログを ポップアップする |:helpgrep| :helpg[rep] ヘルプファイル検索用の ":grep" diff --git a/doc/quickref.jax b/doc/quickref.jax index f8ebd4d1a..bf667c2a3 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -1320,16 +1320,21 @@ |CTRL-W_p| CTRL-W p カーソルを直前のアクティブウィンドウ に移動 -|CTRL-W_r| CTRL-W r ウィンドウを下側にローテートする。 -|CTRL-W_R| CTRL-W R ウィンドウを上側にローテートする。 +|CTRL-W_r| CTRL-W r ウィンドウを下側にローテートする +|CTRL-W_R| CTRL-W R ウィンドウを上側にローテートする |CTRL-W_x| CTRL-W x 現在のウィンドウを次のウィンドウと 入れ換え -|CTRL-W_=| CTRL-W = 全ウィンドウの高さを同一に +|CTRL-W_=| CTRL-W = 全ウィンドウの高さと幅を同一に |CTRL-W_-| CTRL-W - 現在のウィンドウの高さを減らす |CTRL-W_+| CTRL-W + 現在のウィンドウの高さを増やす |CTRL-W__| CTRL-W _ 現在のウィンドウの高さを変更する - (デフォルト:最大) + (既定値: 可能な限り高く) + +|CTRL-W_<| CTRL-W < 現在のウィンドウの幅を減らす +|CTRL-W_>| CTRL-W > 現在のウィンドウの幅を増やす +|CTRL-W_bar| CTRL-W | 現在のウィンドウの幅を変更する + (既定値: 可能な限り広く) ------------------------------------------------------------------------------ *Q_bu* バッファ管理コマンド diff --git a/en/eval.txt b/en/eval.txt index c9f10dc94..59267b74a 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -956,7 +956,7 @@ Decimal, Hexadecimal (starting with 0x or 0X), or Octal (starting with 0). Floating point numbers can be written in two forms: [-+]{N}.{M} - [-+]{N}.{M}e[-+]{exp} + [-+]{N}.{M}[eE][-+]{exp} {N} and {M} are numbers. Both {N} and {M} must be present and can only contain digits. @@ -3515,7 +3515,7 @@ getpos({expr}) Get the position for {expr}. For possible values of {expr} This can be used to save and restore the position of a mark: > let save_a_mark = getpos("'a") ... - call setpos(''a', save_a_mark + call setpos("'a", save_a_mark) < Also see |getcurpos()| and |setpos()|. @@ -4747,6 +4747,7 @@ printf({fmt}, {expr1} ...) *printf()* s The text of the String argument is used. If a precision is specified, no more bytes than the number specified are used. + *printf-S* S The text of the String argument is used. If a precision is specified, no more display cells than the number specified are used. Without the |+multi_byte| @@ -7346,7 +7347,7 @@ This does NOT work: > :unlet v < *E741* If you try to change a locked variable you get an - error message: "E741: Value of {name} is locked" + error message: "E741: Value is locked: {name}" [depth] is relevant when locking a |List| or |Dictionary|. It specifies how deep the locking goes: diff --git a/en/helphelp.txt b/en/helphelp.txt index 87f095e56..4ef436c5d 100644 --- a/en/helphelp.txt +++ b/en/helphelp.txt @@ -1,4 +1,4 @@ -*helphelp.txt* For Vim version 7.4. Last change: 2012 Nov 28 +*helphelp.txt* For Vim version 7.4. Last change: 2014 Sep 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -96,6 +96,9 @@ Help on help files *helphelp* find a tag in a file with the same language as the current file. See |help-translated|. + *:helpc* *:helpclose* +:helpc[lose] Close one help window, if there is one. + *:helpg* *:helpgrep* :helpg[rep] {pattern}[@xx] Search all help text files and make a list of lines diff --git a/en/index.txt b/en/index.txt index 10a9c843e..1e0134d68 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.4. Last change: 2014 Mar 25 +*index.txt* For Vim version 7.4. Last change: 2015 Jan 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1244,6 +1244,7 @@ tag command action ~ |:gvim| :gv[im] start the GUI |:hardcopy| :ha[rdcopy] send text to the printer |:help| :h[elp] open a help window +|:helpclose| :helpc[lose] close one help window |:helpfind| :helpf[ind] dialog to open a help window |:helpgrep| :helpg[rep] like ":grep" but searches help files |:helptags| :helpt[ags] generate help tags for a directory diff --git a/en/quickref.txt b/en/quickref.txt index 096921f00..eef588135 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1313,11 +1313,16 @@ Context-sensitive completion on the command-line: |CTRL-W_R| CTRL-W R rotate windows upwards |CTRL-W_x| CTRL-W x exchange current window with next one -|CTRL-W_=| CTRL-W = make all windows equal height +|CTRL-W_=| CTRL-W = make all windows equal height & width |CTRL-W_-| CTRL-W - decrease current window height |CTRL-W_+| CTRL-W + increase current window height |CTRL-W__| CTRL-W _ set current window height (default: very high) + +|CTRL-W_<| CTRL-W < decrease current window width +|CTRL-W_>| CTRL-W > increase current window width +|CTRL-W_bar| CTRL-W | set current window width (default: + widest possible) ------------------------------------------------------------------------------ *Q_bu* Buffer list commands From 60065cb1177f278b38286450090daba376c699a0 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 4 Feb 2015 17:36:18 +0900 Subject: [PATCH 637/783] Update some files --- doc/options.jax | 4 ++-- doc/os_win32.jax | 8 +++++++- en/options.txt | 5 ++--- en/os_win32.txt | 8 +++++++- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index b07d31486..484a551d6 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -80,8 +80,7 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ :se[t] {option}:{value} 数値および文字列オプションの値を {value} に設定する。 数値オプションの値は、10進数、(0x を頭に付けて) 16進数、 - または ('0' を頭に付けて) 8進数で指定できる (16進数と8 - 進数は、関数 strtol() を持つマシンでのみ利用可能)。 + または ('0' を頭に付けて) 8進数で指定できる。 オプション 'wildchar' で指定された文字 (既定では <Tab>、オプション 'compatible' がオンにならば CTRL-E) を打ち込むと、古い値を挿入できる。|cmdline-completion| @@ -4106,6 +4105,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる Vimが HAVE_X11 が定義された状態でコンパイルされたなら、可能であれば元 のアイコンが復元される |X11|。X11でアイコンを変更するには |X11-icon| を参照。 + MS-Windows でアイコンを変更するには、|windows-icon| を参照。 *'iconstring'* 'iconstring' 文字列 (既定では "") diff --git a/doc/os_win32.jax b/doc/os_win32.jax index 8116a8384..9714c026c 100644 --- a/doc/os_win32.jax +++ b/doc/os_win32.jax @@ -1,4 +1,4 @@ -*os_win32.txt* For Vim バージョン 7.4. Last change: 2014 Aug 29 +*os_win32.txt* For Vim バージョン 7.4. Last change: 2014 Sep 25 VIMリファレンスマニュアル by George Reilly @@ -367,4 +367,10 @@ Q. Win32sとNTでVimを使っている。NTでは、コンソールをデフォ A. SYSTEM.INIを編集し、 [NonWindowsApp]のセクションに 'ScreenLines=50' を付け 加える。DOSプロンプトと外部DOSコマンドは50行のウィンドウで実行される。 + *windows-icon* +Q. Vimのアイコンが好きではないのだが、変えられるだろうか? +A. はい、'runtimepath' のディレクトリの中の bitmaps/vim.ico に好きなアイコンを + 置くとよい。例: ~/vimfiles/bitmaps/vim.ico + + vim:tw=78:fo=tcq2:ts=8:ft=help:norl: diff --git a/en/options.txt b/en/options.txt index 88a7927b6..d400cd24b 100644 --- a/en/options.txt +++ b/en/options.txt @@ -59,9 +59,7 @@ achieve special effects. These options come in three forms: :se[t] {option}:{value} Set string or number option to {value}. For numeric options the value can be given in decimal, - hex (preceded with 0x) or octal (preceded with '0') - (hex and octal are only available for machines which - have the strtol() function). + hex (preceded with 0x) or octal (preceded with '0'). The old value can be inserted by typing 'wildchar' (by default this is a <Tab> or CTRL-E if 'compatible' is set). See |cmdline-completion|. @@ -4007,6 +4005,7 @@ A jump table for the options with a short description can be found at |Q_op|. When Vim was compiled with HAVE_X11 defined, the original icon will be restored if possible |X11|. See |X11-icon| for changing the icon on X11. + For MS-Windows the icon can be changed, see |windows-icon|. *'iconstring'* 'iconstring' string (default "") diff --git a/en/os_win32.txt b/en/os_win32.txt index 80085a8ed..9637d7e82 100644 --- a/en/os_win32.txt +++ b/en/os_win32.txt @@ -1,4 +1,4 @@ -*os_win32.txt* For Vim version 7.4. Last change: 2014 Aug 29 +*os_win32.txt* For Vim version 7.4. Last change: 2014 Sep 25 VIM REFERENCE MANUAL by George Reilly @@ -367,4 +367,10 @@ Q. I use Vim under Win32s and NT. In NT, I can define the console to default to A. Edit SYSTEM.INI and add 'ScreenLines=50' to the [NonWindowsApp] section. DOS prompts and external DOS commands will now run in a 50-line window. + *windows-icon* +Q. I don't like the Vim icon, can I change it? +A. Yes, place your favorite icon in bitmaps/vim.ico in a directory of + 'runtimepath'. For example ~/vimfiles/bitmaps/vim.ico. + + vim:tw=78:fo=tcq2:ts=8:ft=help:norl: From d3d17e791f0937e7217c5efae709d5be9f6994e5 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 4 Feb 2015 18:58:36 +0900 Subject: [PATCH 638/783] Fix indent and add missing word --- doc/eval.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index a601917c8..fdba14ad5 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1627,15 +1627,15 @@ v:val 辞書|Dictionary|の現在の要素の値。|map()|と|filter()|で使 れる式を評価している最中のみ有効。 読出し専用。 - *v:version* *version-variable* + *v:version* *version-variable* v:version Vimのバージョン番号。メジャーバージョン番号は100倍され、マイ ナーバージョン番号と足されている。Version 5.0は500。Version 5.1 (5.01)は501となる。読出し専用。また "version" は、以前の版 のVimとの互換性の為に動作する。 特定のパッチが適用されているかを調べるには|has()|を使う。例: > if has("patch-7.4.123") -< 5.0と5.1には両方ともパッチ123が存在しているが、バージョンが違 - えば番号は同じでもパッチの内容は全く異なっている。 +< Note 5.0と5.1には両方ともパッチ123が存在しているが、バージョン + が違えば番号は同じでもパッチの内容は全く異なっている。 *v:warningmsg* *warningmsg-variable* v:warningmsg 最後に表示された警告メッセージ。この変数は代入することが許され From c77a3ce3afb247db85a8a6c9d1c2c23f00a492e4 Mon Sep 17 00:00:00 2001 From: sgur <sgurrr@gmail.com> Date: Thu, 12 Feb 2015 16:10:14 +0900 Subject: [PATCH 639/783] Fix omitted value of {default} --- doc/eval.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index fdba14ad5..43366383f 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -2438,7 +2438,7 @@ confirm({msg} [, {choices} [, {default} [, {type}]]]) 省略可能な引数{default}は<CR>キーを叩いた時に選択される選択肢 の番号を指定する。最初の選択肢をデフォルトにするならば1を使用 する。デフォルトを設定したくないのならば0を使用する。 - {default}を省略した場合、0が使用される。 + {default}を省略した場合、1が使用される。 省略可能な引数{type}はダイアログの種類を指定する。これは GTK, Mac, Motif, Win32 の GUI でアイコンを指定するのに使われる。 From 05f61db2ad1f3d38a5762c00d0cf3b1a5f657195 Mon Sep 17 00:00:00 2001 From: todashuta <toda.shuta@gmail.com> Date: Thu, 19 Mar 2015 15:23:54 +0900 Subject: [PATCH 640/783] Fix typo in quickfix.jax --- doc/quickfix.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/quickfix.jax b/doc/quickfix.jax index 993fe0e46..2f309a781 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -608,7 +608,7 @@ Regular Expression (正規表現) を意味する。] :gr[ep][!] [arguments] ":make" と同じようにしかし 'makeprg' の代わりに 'grepprg' が、'errorformat' の代わりに 'grepformat' が 使われる。'grepprg' が "internal" の場合、|:vimgrep|と - 同様に機能する。その場合、パターンが区切り文字が囲まれ + 同様に機能する。その場合、パターンが区切り文字で囲まれ ていなければならないことに注意。 *:lgr* *:lgrep* From c1fc77efe0af1150c58c2e403cdcfb4a3a6733bb Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Sun, 29 Mar 2015 19:49:43 +0900 Subject: [PATCH 641/783] fixed typographical error --- doc/pattern.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index f07bb6bce..dc45a1c03 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -945,7 +945,7 @@ $ パターンの末尾、または "\|"、"\)"、"\n" ('magic' on時) の前に /.*\%17v. < 次のコマンドも同様の動作ですが、17 列目に文字が存在しなくてもマッチし ます: > - /.*\%<18v + /.*\%<18v. 文字クラス: {Vi にはありません} \i 識別子文字 ('isident' 参照) */\i* From c080a15bc328cc81af3c08f5dc3bb79d4b31a4bf Mon Sep 17 00:00:00 2001 From: ichizok <gclient.gaap@gmail.com> Date: Sat, 4 Apr 2015 11:47:14 +0900 Subject: [PATCH 642/783] Fix #119 (partly) --- doc/autocmd.jax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index ca2f1f1bb..98c6085ba 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -353,7 +353,7 @@ BufDelete バッファリストからバッファを削除する前。(バッ た直前にも使われる。 NOTE: このイベントで自動コマンドが実行された ときは、"%" で表されるカレントバッファと - "<afile>" と "<abuf>" で表される解放されるバッ + "<afile>" と "<abuf>" で表される削除されるバッ ファとは異なるかもしれないことに注意。 他のバッファに切り替えないこと。もしすると問題 が発生するだろう。 @@ -389,7 +389,7 @@ BufNew 新しいバッファを作った直後。バッファがリネーム トに追加されると、イベント BufAdd も発生する。 NOTE: このイベントで自動コマンドが実行された ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な + "<afile>" で表される作成されるバッファとは異な るかもしれないことに注意。 *BufNewFile* BufNewFile 存在しないファイルの編集を始めたとき。スケルト @@ -462,7 +462,7 @@ BufWipeout バッファを完全に削除する前。イベント BufUnload も)。 NOTE: このイベントで自動コマンドが実行された ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な + "<afile>" で表される削除されるバッファとは異な るかもしれないことに注意。 *BufWrite* *BufWritePre* BufWrite or BufWritePre バッファ全体をファイルに書き込む前。 @@ -601,7 +601,7 @@ FileChangedShell ファイルのタイムスタンプが、ファイルの編 かを指示できる。 NOTE: このイベントで自動コマンドが実行された ときは、"%" で表されるカレントバッファと - "<afile>" で表される解放されるバッファとは異な + "<afile>" で表される変更されたバッファとは異な るかもしれないことに注意。 NOTE: この自動コマンドはカレントバッファを変 更したり、別のバッファにジャンプしたり、バッ From 8c0e71aee91a5373fe6b77beb81edda8b8e0710c Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Sun, 12 Apr 2015 22:14:52 +0900 Subject: [PATCH 643/783] Fix #117 --- doc/index.jax | 4 ++-- doc/pattern.jax | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/index.jax b/doc/index.jax index 47b0d270f..552855901 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -537,7 +537,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |CTRL-W_K| CTRL-W K カレントウィンドウを最も上に移動する。 |CTRL-W_L| CTRL-W L カレントウィンドウを最も右に移動する。 |CTRL-W_P| CTRL-W P プレビューウィンドウへ移動する。 -|CTRL-W_R| CTRL-W R ウィンドウ位置を後方へ N 回転させる。 +|CTRL-W_R| CTRL-W R ウィンドウ位置を上向きに N 回転させる。 |CTRL-W_S| CTRL-W S "CTRL-W s" と同じ。 |CTRL-W_T| CTRL-W T カレントウィンドウを新しいタブページへ移動。 |CTRL-W_W| CTRL-W W 上から N 番目のウィンドウに移動。N の指定が @@ -586,7 +586,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 移動。 |CTRL-W_q| CTRL-W q カレントウィンドウを終了する(|:quit| と同 じ)。 -|CTRL-W_r| CTRL-W r ウィンドウ位置を後方へ N 回転させる。 +|CTRL-W_r| CTRL-W r ウィンドウ位置を下向きに N 回転させる。 |CTRL-W_s| CTRL-W s カレントウィンドウを2つに分割し、高さが N 行の新しいウィンドウを作成する。 |CTRL-W_t| CTRL-W t 一番上のウィンドウへ移動。 diff --git a/doc/pattern.jax b/doc/pattern.jax index dc45a1c03..fc9ef6ae3 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -69,9 +69,9 @@ N 最後の "/" か "?" を逆方向に [count] 回繰り返します。 る単語は、カーソルに最も近い単語です。次の順番で選択さ れます: 1. カーソル位置のキーワード |'iskeyword'| - 2. 現在行の、カーソルの前方のキーワード + 2. 現在行の、カーソルの後ろの最初のキーワード 3. カーソル位置の単語 (|WORD|) - 4. 現在行の、カーソルの前方の単語 + 4. 現在行の、カーソルの後ろの最初の単語 "/\<keyword\>" と検索するのと同じように、完全なキー ワードのみ検索されます。|exclusive|(排他的) {Vi にはありません} From 32bc2bd6f08b01a43acb0a7655b99357b5c5d6d9 Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Tue, 14 Apr 2015 01:03:04 +0900 Subject: [PATCH 644/783] =?UTF-8?q?new-filetype-scripts=20=E3=81=AE?= =?UTF-8?q?=E8=A8=98=E8=BF=B0=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Close #121 --- doc/filetype.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/filetype.jax b/doc/filetype.jax index f0ee3a234..6d8e31f68 100644 --- a/doc/filetype.jax +++ b/doc/filetype.jax @@ -258,8 +258,8 @@ D. ファイル形式がファイルの内容を調べる事によってのみ 3. これだけで検出は正しく動作し、Vimを再起動する必要は無い。 新しく作成したscripts.vimはデフォルトのファイル形式チェックの前に読み込まれ - ので、$VIMRUNTIME/scripts.vimに書かれたデフォルトの判定規則を上書することが - できる。 + るので、$VIMRUNTIME/scripts.vimに書かれたデフォルトの判定規則を上書きするこ + とができる。 *remove-filetype* ファイル形式が誤って検出されたならば、(上を参考に)それを補正するfiletype.vimか From 13fb574554abe9067b94e010155dd7c417fed770 Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Wed, 22 Apr 2015 14:43:46 +0900 Subject: [PATCH 645/783] Add missing blank line --- doc/options.jax | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/options.jax b/doc/options.jax index 484a551d6..571c86ff9 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4890,6 +4890,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる endif < 描画の問題があるかをチェックするもう1つのオプションは、'termencoding' である。 + *'magic'* *'nomagic'* 'magic' 切替 (既定ではオン) グローバル From b8c6d6291aaa49c0942b830320ff6466092ca76d Mon Sep 17 00:00:00 2001 From: sgur <sgurrr@gmail.com> Date: Wed, 22 Apr 2015 17:04:25 +0900 Subject: [PATCH 646/783] Add examples --- doc/tabpage.jax | 71 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 14 deletions(-) diff --git a/doc/tabpage.jax b/doc/tabpage.jax index 811f65931..814afba84 100644 --- a/doc/tabpage.jax +++ b/doc/tabpage.jax @@ -56,8 +56,18 @@ GUI でタブページラインを右クリックするとメニューが表示 :[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* :[count]tabnew カレントタブページの後ろに空のウィンドウを持った新しいタブペー - ジを作成します。[count] については下記 |:tab| 参照。 - + ジを作成します。[count] については下記 |:tab| 参照。 > + :tabnew " カレントタブページの後ろに新規タブペ + " ージを作成 + :.tabnew " 同上 + :+tabnew " 右のタブページの後ろに新規タブページ + " を作成 + " 注: tabnew よりも1つ右側に作られる + :-tabnew " カレントタブページの前に新規タブペー + " ジを作成 + :0tabnew " 新規タブページを左端に作成 + :$tabnew " 新規タブページを右端に作成 +< :[count]tabe[dit] [++opt] [+cmd] {file} :[count]tabnew [++opt] [+cmd] {file} {file} を新しいタブページで開きます。|:edit| と同じです。 @@ -77,9 +87,9 @@ GUI でタブページラインを右クリックするとメニューが表示 [count] を指定すると、[count] 番目のタブページの後ろに作成され ます。タブページを一番左に作成するには ":0tab cmd" とします。 例: > - :tab split " opens current buffer in new tab page - :tab help gt " opens tab page with help for "gt" - + :tab split " 現在のバッファを新規タブで開く + :tab help gt " "gt" に対するヘルプを新規タブで開く +< CTRL-W gf カーソル下のファイル名のファイルを新しいタブページで開きます。 |CTRL-W_gf| を参照してください。 @@ -103,12 +113,20 @@ CTRL-W gF カーソル下のファイル名のファイルを新しいタブペ - 'hidden' がオフのときに [!] を使わず、バッファに変更があり、 そのバッファを表示しているウィンドウが他にない場合。 バッファの変更はファイルに保存されませんが、失われることもあり - ません。このコマンドは安全なコマンドです。 - + ません。このコマンドは安全なコマンドです。 > + :tabclose " カレントタブページを閉じる +< +:{count}tabc[lose][!] :tabc[lose][!] {count} {count} 番目のタブページを閉じます。`:tabclose` と同じ理由で失 - 敗することがあります。 - + 敗することがあります。 > + :-tabclose " カレントタブページの後ろのタブページ + " を閉じる + :+tabclose " カレントタブページの前のタブページを + " 閉じる + :1tabclose " 左端のタブページを閉じる + :$tabclose " 右端のタブページを閉じる +< *:tabo* *:tabonly* :tabo[nly][!] カレントタブページ以外のすべてのタブページを閉じます。 オプション 'hidden' がオンのとき、閉じたウィンドウのバッファは @@ -117,8 +135,20 @@ CTRL-W gF カーソル下のファイル名のファイルを新しいタブペ ファはファイルに保存されます。そうでないときは、変更のあるバッ ファを表示しているウィンドウは閉じません。[!] を指定した場合 は、変更のあるバッファは隠しバッファになります。変更のあるバッ - ファは絶対に破棄されないので、変更を失うことはありません。 - + ファは絶対に破棄されないので、変更を失うことはありません。 > + :tabonly " カレントタブページ以外のすべてのタブ + " ページを閉じる +< +:{count}tabo[nly][!] + Close all tab pages except the {count}th one. > + :.tabonly " 現在のタブページのみ + :-tabonly " カレントタブページの前のタブページ以 + " 外を全て閉じる + :+tabonly " カレントタブページの次のタブページ以 + " 外を全て閉じる + :1tabonly " 最初のタブページ以外を全て閉じる + :$tabonly " 最後のタブページ以外を全て閉じる +< タブページを切り替えるには: @@ -170,12 +200,25 @@ gT 前のタブページに移動します。前のタブページがない場 :[N]tabm[ove] カレントタブページを N 番目のタブページの後ろに移動します。カ レントタブページを一番目のタブページにするにはゼロを指定します。 - N を省略すると最後に移動します。 - + N を省略すると最後に移動します。 > + :.tabmove " なにもしない + :-tabmove " タブページを左に移動 + :+tabmove " タブページを右に移動 + :0tabmove " タブページを左端に移動 + :tabmove 0 " 同上 + :tabmove " タブページを右端に移動 + :$tabmove " 同上 + :tabmove $ " 同上 +< :tabm[ove] +[N] :tabm[ove] -[N] カレントタブページを N 個右 (+ の場合) または左 (- の場合) に - 移動します。 + 移動します。 > + :tabmove - " タブページを左に移動 + :tabmove -1 " 同上 + :tabmove + " タブページを右に移動 + :tabmove +1 " 同上 +< Note :Ntabmove を使うことでタブを N 番目のタブの後ろに移動することはできます が、:+Ntabmove を使って N 個後ろに移動することはできないことに注意してくださ From f6acad7b21d843dfe5006a9300003b2209a6d5e2 Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Fri, 24 Apr 2015 12:15:15 +0900 Subject: [PATCH 647/783] Update tabpage.txt --- en/tabpage.txt | 71 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 15 deletions(-) diff --git a/en/tabpage.txt b/en/tabpage.txt index 3c7ad9fe2..46e0a8fde 100644 --- a/en/tabpage.txt +++ b/en/tabpage.txt @@ -1,4 +1,4 @@ -*tabpage.txt* For Vim version 7.4. Last change: 2012 Aug 08 +*tabpage.txt* For Vim version 7.4. Last change: 2015 Jan 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -61,16 +61,25 @@ In the GUI tab pages line you can use the right mouse button to open menu. :[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* :[count]tabnew Open a new tab page with an empty window, after the current - tab page. For [count] see |:tab| below. + tab page. If [count] is given the new tab page appears after + the tab page [count] otherwise the new tab page will appear + after the current one. > + :tabnew " opens tabpage after the current one + :.tabnew " as above + :+tabnew " opens tabpage after the next tab page + " note: it is one further than :tabnew + :-tabnew " opens tabpage before the current one + :0tabnew " opens tabpage before the first one + :$tabnew " opens tabpage after the last one :[count]tabe[dit] [++opt] [+cmd] {file} :[count]tabnew [++opt] [+cmd] {file} Open a new tab page and edit {file}, like with |:edit|. - For [count] see |:tab| below. + For [count] see |:tabnew| above. :[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* Open a new tab page and edit {file} in 'path', like with - |:find|. For [count] see |:tab| below. + |:find|. For [count] see |:tabnew| above. {not available when the |+file_in_path| feature was disabled at compile time} @@ -110,12 +119,18 @@ something else. - When 'hidden' is not set, [!] is not used, a buffer has changes, and there is no other window on this buffer. Changes to the buffer are not written and won't get lost, so - this is a "safe" command. + this is a "safe" command. > + :tabclose " close the current tab page +:{count}tabc[lose][!] :tabc[lose][!] {count} Close tab page {count}. Fails in the same way as `:tabclose` - above. - + above. > + :-tabclose " close the previous tab page + :+tabclose " close the next tab page + :1tabclose " close the first tab page + :$tabclose " close the last tab page +< *:tabo* *:tabonly* :tabo[nly][!] Close all other tab pages. When the 'hidden' option is set, all buffers in closed windows @@ -124,7 +139,17 @@ something else. modified buffers are written. Otherwise, windows that have buffers that are modified are not removed, unless the [!] is given, then they become hidden. But modified buffers are - never abandoned, so changes cannot get lost. + never abandoned, so changes cannot get lost. > + :tabonly " close all tab pages except the current + +:{count}tabo[nly][!] + Close all tab pages except the {count}th one. > + :.tabonly " one + :-tabonly " close all tab pages except the previous + " one + :+tabonly " close all tab pages except the next one + :1tabonly " close all tab pages except the first one + :$tabonly " close all tab pages except the last one SWITCHING TO ANOTHER TAB PAGE: @@ -176,23 +201,39 @@ REORDERING TAB PAGES: :[N]tabm[ove] Move the current tab page to after tab page N. Use zero to make the current tab page the first one. Without N the tab - page is made the last one. + page is made the last one. > + :.tabmove " do nothing + :-tabmove " move the tab page to the left + :+tabmove " move the tab page to the right + :0tabmove " move the tab page to the beginning of the tab + " list + :tabmove 0 " as above + :tabmove " move the tab page to the last + :$tabmove " as above + :tabmove $ " as above :tabm[ove] +[N] :tabm[ove] -[N] Move the current tab page N places to the right (with +) or to - the left (with -). + the left (with -). > + :tabmove - " move the tab page to the left + :tabmove -1 " as above + :tabmove + " move the tab page to the right + :tabmove +1 " as above + Note that although it is possible to move a tab behind the N-th one by using -:Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For -clarification what +N means in this context see |[range]|. +:Ntabmove. And move it by N places by using :+Ntabmove. For clarification what ++N means in this context see |[range]|. LOOPING OVER TAB PAGES: *:tabd* *:tabdo* -:tabd[o] {cmd} Execute {cmd} in each tab page. - It works like doing this: > +:[range]tabd[o] {cmd} + Execute {cmd} in each tab page or if [range] is given only in + tab pages which tab page number is in the [range]. It works + like doing this: > :tabfirst :{cmd} :tabnext @@ -238,8 +279,8 @@ window on the same buffer and then edit another buffer. Thus ":tabnew" triggers: WinLeave leave current window TabLeave leave current tab page - TabEnter enter new tab page WinEnter enter window in new tab page + TabEnter enter new tab page BufLeave leave current buffer BufEnter enter new empty buffer From 12313d02e3c9b900672521613bec1dfc2b26d775 Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Fri, 24 Apr 2015 12:21:22 +0900 Subject: [PATCH 648/783] Translated ':{count}tabo[nly][!]' of sentence. --- doc/tabpage.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tabpage.jax b/doc/tabpage.jax index 814afba84..e71e92276 100644 --- a/doc/tabpage.jax +++ b/doc/tabpage.jax @@ -140,7 +140,7 @@ CTRL-W gF カーソル下のファイル名のファイルを新しいタブペ " ページを閉じる < :{count}tabo[nly][!] - Close all tab pages except the {count}th one. > + {count} 番目のタブページ以外のすべてのタブページを閉じます。 > :.tabonly " 現在のタブページのみ :-tabonly " カレントタブページの前のタブページ以 " 外を全て閉じる From f0839a7b596895706f3ec0901931dc473936f4eb Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Fri, 24 Apr 2015 13:19:44 +0900 Subject: [PATCH 649/783] Follow the latest version of original. --- doc/tabpage.jax | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/doc/tabpage.jax b/doc/tabpage.jax index e71e92276..78d98368b 100644 --- a/doc/tabpage.jax +++ b/doc/tabpage.jax @@ -71,11 +71,11 @@ GUI でタブページラインを右クリックするとメニューが表示 :[count]tabe[dit] [++opt] [+cmd] {file} :[count]tabnew [++opt] [+cmd] {file} {file} を新しいタブページで開きます。|:edit| と同じです。 - [count] については下記 |:tab| 参照。 + [count] については下記 |:tabnew| 参照。 :[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* 'path' 内の {file} を新しいタブページで開きます。|:find| と同 - じです。[count] については下記 |:tab| 参照。 + じです。[count] については下記 |:tabnew| 参照。 {|+file_in_path| が有効な場合のみ利用できます} :[count]tab {cmd} *:tab* @@ -220,16 +220,18 @@ gT 前のタブページに移動します。前のタブページがない場 :tabmove +1 " 同上 < -Note :Ntabmove を使うことでタブを N 番目のタブの後ろに移動することはできます -が、:+Ntabmove を使って N 個後ろに移動することはできないことに注意してくださ -い。この場合に +N が何を意味するかについては、|[range]| を参照してください。 +Note :Ntabmove を使うことでタブを N 番目のタブの後ろに移動することができるこ +とと、:+Ntabmove を使って N 個後ろに移動できることに注意してください。この場 +合に +N が何を意味するかについては、|[range]| を参照してください。 タブページごとにコマンドを実行するには: *:tabd* *:tabdo* -:tabd[o] {cmd} タブページごとにコマンドを実行します。 - これは次のような動作をします: > +:[range]tabd[o] {cmd} + タブページごと、または [range] が与えられた場合はその範囲のタ + ブページにコマンドを実行します。これは次のような動作をします: +> :tabfirst :{cmd} :tabnext @@ -275,8 +277,8 @@ GUI のタブページラインにはポップアップメニューがありま 動きをします。つまり、":tabnew" では次の順番でイベントが実行されます: WinLeave カレントウィンドウから離れる TabLeave カレントタブページから離れる - TabEnter 新しいタブページに入る WinEnter 新しいタブページのウィンドウに入る + TabEnter 新しいタブページに入る BufLeave カレントバッファから離れる BufEnter 新しい空のバッファに入る From 4831b0c35b54b88beb9aba51136466c4cd6badda Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 25 Apr 2015 00:11:36 +0900 Subject: [PATCH 650/783] Catch up the latest refs: #124 --- doc/tabpage.jax | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/doc/tabpage.jax b/doc/tabpage.jax index 78d98368b..899423b83 100644 --- a/doc/tabpage.jax +++ b/doc/tabpage.jax @@ -1,4 +1,4 @@ -*tabpage.txt* For Vim バージョン 7.4. Last change: 2012 Aug 08 +*tabpage.txt* For Vim バージョン 7.4. Last change: 2015 Jan 04 VIMリファレンスマニュアル by Bram Moolenaar @@ -56,26 +56,28 @@ GUI でタブページラインを右クリックするとメニューが表示 :[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* :[count]tabnew カレントタブページの後ろに空のウィンドウを持った新しいタブペー - ジを作成します。[count] については下記 |:tab| 参照。 > - :tabnew " カレントタブページの後ろに新規タブペ - " ージを作成 + ジを作成します。[count] が与えられる場合、新しいタブページは + [count] 番目のタブページの後ろに作成され、[count] が省略さ + れる場合はカレントタブページの後ろに作成されます。 > + :tabnew " カレントタブページの後ろに新規タブ + " ページを作成 :.tabnew " 同上 :+tabnew " 右のタブページの後ろに新規タブページ " を作成 " 注: tabnew よりも1つ右側に作られる - :-tabnew " カレントタブページの前に新規タブペー - " ジを作成 + :-tabnew " カレントタブページの前に新規タブ + " ページを作成 :0tabnew " 新規タブページを左端に作成 :$tabnew " 新規タブページを右端に作成 < :[count]tabe[dit] [++opt] [+cmd] {file} :[count]tabnew [++opt] [+cmd] {file} {file} を新しいタブページで開きます。|:edit| と同じです。 - [count] については下記 |:tabnew| 参照。 + [count] については上記 |:tabnew| 参照。 :[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* 'path' 内の {file} を新しいタブページで開きます。|:find| と同 - じです。[count] については下記 |:tabnew| 参照。 + じです。[count] については上記 |:tabnew| 参照。 {|+file_in_path| が有効な場合のみ利用できます} :[count]tab {cmd} *:tab* @@ -120,9 +122,9 @@ CTRL-W gF カーソル下のファイル名のファイルを新しいタブペ :tabc[lose][!] {count} {count} 番目のタブページを閉じます。`:tabclose` と同じ理由で失 敗することがあります。 > - :-tabclose " カレントタブページの後ろのタブページ - " を閉じる - :+tabclose " カレントタブページの前のタブページを + :-tabclose " カレントタブページの前のタブページを + " 閉じる + :+tabclose " カレントタブページの次のタブページを " 閉じる :1tabclose " 左端のタブページを閉じる :$tabclose " 右端のタブページを閉じる @@ -142,10 +144,10 @@ CTRL-W gF カーソル下のファイル名のファイルを新しいタブペ :{count}tabo[nly][!] {count} 番目のタブページ以外のすべてのタブページを閉じます。 > :.tabonly " 現在のタブページのみ - :-tabonly " カレントタブページの前のタブページ以 - " 外を全て閉じる - :+tabonly " カレントタブページの次のタブページ以 - " 外を全て閉じる + :-tabonly " カレントタブページの前のタブページ + " 以外を全て閉じる + :+tabonly " カレントタブページの次のタブページ + " 以外を全て閉じる :1tabonly " 最初のタブページ以外を全て閉じる :$tabonly " 最後のタブページ以外を全て閉じる < @@ -220,9 +222,9 @@ gT 前のタブページに移動します。前のタブページがない場 :tabmove +1 " 同上 < -Note :Ntabmove を使うことでタブを N 番目のタブの後ろに移動することができるこ -とと、:+Ntabmove を使って N 個後ろに移動できることに注意してください。この場 -合に +N が何を意味するかについては、|[range]| を参照してください。 +Note :Ntabmove を使うことでタブを N 番目のタブの後ろに移動することができること +と、:+Ntabmove を使って N 個後ろに移動できることに注意してください。この場合に ++N が何を意味するかについては、|[range]| を参照してください。 タブページごとにコマンドを実行するには: @@ -230,8 +232,8 @@ Note :Ntabmove を使うことでタブを N 番目のタブの後ろに移動 *:tabd* *:tabdo* :[range]tabd[o] {cmd} タブページごと、または [range] が与えられた場合はその範囲のタ - ブページにコマンドを実行します。これは次のような動作をします: -> + ブページのみにコマンドを実行します。これは次のような動作をしま + す: > :tabfirst :{cmd} :tabnext From 8d0fbcb625d72b3bcc7e47e594b83b271c4efc9e Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 25 Apr 2015 00:40:51 +0900 Subject: [PATCH 651/783] Update some files --- doc/help.jax | 3 ++- doc/remote.jax | 5 +++-- en/help.txt | 3 ++- en/remote.txt | 5 +++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/help.jax b/doc/help.jax index 9ca5fc3bf..9f7ac249a 100644 --- a/doc/help.jax +++ b/doc/help.jax @@ -1,4 +1,4 @@ -*help.txt* For Vim バージョン 7.4. Last change: 2012 Dec 06 +*help.txt* For Vim バージョン 7.4. Last change: 2015 Apr 15 VIM - メインヘルプファイル k @@ -24,6 +24,7 @@ コマンドライン編集 c_ :help c_<Del> Vim の起動引数 - :help -r オプション ' :help 'textwidth' + 正規表現 / :help /[ ヘルプを検索する: ":help word" とタイプしてから CTRL-D を押すと "word" に マッチするヘルプ項目の一覧が表示されます。 もしくは ":helpgrep word" を使ってください。 |:helpgrep| diff --git a/doc/remote.jax b/doc/remote.jax index 2d0bb2729..87efdd2bd 100644 --- a/doc/remote.jax +++ b/doc/remote.jax @@ -1,4 +1,4 @@ -*remote.txt* For Vim バージョン 7.4. Last change: 2008 May 24 +*remote.txt* For Vim バージョン 7.4. Last change: 2015 Mar 01 VIMリファレンスマニュアル by Bram Moolenaar @@ -36,7 +36,8 @@ Vimクライアントサーバー通信 *client-server* 次のようにしなければリモートのVimが問題を起こ すかもしれない。 > vim --remote-send "<C-\><C-N>:n filename<CR>" -< --remote-silent [+{cmd}] {file} ... *--remote-silent* +< + --remote-silent [+{cmd}] {file} ... *--remote-silent* 上と同様、しかしサーバーが存在しなくてもエラー を報告しない。指定したファイルがすでにローカル で編集中であっても同様。 diff --git a/en/help.txt b/en/help.txt index f13a5294e..452e6227f 100644 --- a/en/help.txt +++ b/en/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 7.4. Last change: 2012 Dec 06 +*help.txt* For Vim version 7.4. Last change: 2015 Apr 15 VIM - main help file k @@ -24,6 +24,7 @@ Get specific help: It is possible to go directly to whatever you want help Command-line editing c_ :help c_<Del> Vim command argument - :help -r Option ' :help 'textwidth' + Regular expression / :help /[ Search for help: Type ":help word", then hit CTRL-D to see matching help entries for "word". Or use ":helpgrep word". |:helpgrep| diff --git a/en/remote.txt b/en/remote.txt index 327258fa8..7b8787e49 100644 --- a/en/remote.txt +++ b/en/remote.txt @@ -1,4 +1,4 @@ -*remote.txt* For Vim version 7.4. Last change: 2008 May 24 +*remote.txt* For Vim version 7.4. Last change: 2015 Mar 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -36,7 +36,8 @@ The following command line arguments are available: The remote Vim is raised. If you don't want this use > vim --remote-send "<C-\><C-N>:n filename<CR>" -< --remote-silent [+{cmd}] {file} ... *--remote-silent* +< + --remote-silent [+{cmd}] {file} ... *--remote-silent* As above, but don't complain if there is no server and the file is edited locally. --remote-wait [+{cmd}] {file} ... *--remote-wait* From a8b74fa1ae6eab4a4927eed707301d567e0f9364 Mon Sep 17 00:00:00 2001 From: miyakogi <miyako.dev@gmail.com> Date: Sat, 25 Apr 2015 10:56:58 +0900 Subject: [PATCH 652/783] Update index.txt --- doc/index.jax | 7 ++++++- en/index.txt | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/index.jax b/doc/index.jax index 552855901..7e5a4cb5e 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1,4 +1,4 @@ -*index.txt* For Vim バージョン 7.4. Last change: 2015 Jan 07 +*index.txt* For Vim バージョン 7.4. Last change: 2015 Feb 12 VIMリファレンスマニュアル by Bram Moolenaar @@ -725,10 +725,14 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |g`| g`{mark} 1 |`|と同じだがジャンプリストを更新しない |gstar| g* 1 "*" と同様、ただし "\<" と "\>" を使用しな い。 +|g+| g+ N 回後の新しいテキスト状態へ移動。 +|g,| g, 1 変更リスト中の N 個後の位置へ移動。 +|g-| g- N 回前の古いテキスト状態へ移動。 |g0| g0 1 本当の行頭ではなく、表示されたとおりの、見 ため上の行頭へ移動 |g8| g8 UTF-8環境でカーソル位置の文字のバイト列を16 進数で表示する +|g;| g; 1 変更リスト中の N 個前の位置へ移動。 |g<| g< 前のコマンドの出力を表示する。 |g?| g? 2 Rot13 エンコード演算子。 |g?g?| g?? 2 現在の行を Rot13 エンコード。 @@ -753,6 +757,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 を実行する |g^| g^ 1 本当の行頭ではなく、表示されたとおりの、見 ため上の行頭から最初の非空白文字へ移動 +|g_| g_ 1 N-1 行下の最後の非空白文字へ移動。 |ga| ga カーソル位置の文字の ASCII コード値を表示 |gd| gd 1 カーソル位置の単語の定義を現在の関数内で探 し、移動 diff --git a/en/index.txt b/en/index.txt index 1e0134d68..e8171a90e 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.4. Last change: 2015 Jan 07 +*index.txt* For Vim version 7.4. Last change: 2015 Feb 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -702,12 +702,16 @@ tag char note action in Normal mode ~ |g'| g'{mark} 1 like |'| but without changing the jumplist |g`| g`{mark} 1 like |`| but without changing the jumplist |gstar| g* 1 like "*", but without using "\<" and "\>" +|g+| g+ go to newer text state N times +|g,| g, 1 go to N newer position in change list +|g-| g- go to older text state N times |g0| g0 1 when 'wrap' off go to leftmost character of the current line that is on the screen; when 'wrap' on go to the leftmost character of the current screen line |g8| g8 print hex value of bytes used in UTF-8 character under the cursor +|g;| g; 1 go to N older position in change list |g<| g< display previous command output |g?| g? 2 Rot13 encoding operator |g?g?| g?? 2 Rot13 encode current line @@ -736,6 +740,7 @@ tag char note action in Normal mode ~ the screen; when 'wrap' on go to the leftmost non-white character of the current screen line +|g_| g_ 1 cursor to the last CHAR N - 1 lines lower |ga| ga print ascii value of character under the cursor |gd| gd 1 go to definition of word under the cursor From dce884dfc934844a351aa7dd682a97a7a3854fcb Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Sun, 26 Apr 2015 09:02:11 +0900 Subject: [PATCH 653/783] =?UTF-8?q?:%s/=E6=BC=94=E7=AE=97=E5=BE=85?= =?UTF-8?q?=E3=81=A1=E7=8A=B6=E6=85=8B/=E3=82=AA=E3=83=9A=E3=83=AC?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E5=BE=85=E6=A9=9F/g=20only=20map.jax?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/map.jax | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/doc/map.jax b/doc/map.jax index 028619449..c82f2f410 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -303,12 +303,12 @@ Note: 特殊キーが機能するようにしたり、テキスト中の CSI バ *map-overview* *map-modes* マップコマンドとモードの対応表。詳細は以後に。 コマンド モード ~ -:map :noremap :unmap ノーマル、ビジュアル、選択、演算待ち状態 +:map :noremap :unmap ノーマル、ビジュアル、選択、オペレータ待機 :nmap :nnoremap :nunmap ノーマル :vmap :vnoremap :vunmap ビジュアル、選択 :smap :snoremap :sunmap 選択 :xmap :xnoremap :xunmap ビジュアル -:omap :onoremap :ounmap 演算待ち状態 +:omap :onoremap :ounmap オペレータ待機 :map! :noremap! :unmap! 挿入、コマンドライン :imap :inoremap :iunmap 挿入 :lmap :lnoremap :lunmap 挿入、コマンドライン、Lang-Arg @@ -317,7 +317,7 @@ Note: 特殊キーが機能するようにしたり、テキスト中の CSI バ {訳注: Lang-Argについては |language-mapping| を参照} コマンド モード ~ - ノーマル ビジュアル+選択 演算待ち状態~ + ノーマル ビジュアル+選択 オペレータ待機~ :map :noremap :unmap :mapclear yes yes yes :nmap :nnoremap :nunmap :nmapclear yes - - :vmap :vnoremap :vunmap :vmapclear - yes - @@ -352,8 +352,8 @@ NOTE: 選択モードで印字可能文字にマップを定義するとユー {訳注: Lang-Argについては |language-mapping| を参照} -オリジナルの Vi はノーマルモード、ビジュアルモード、演算待ち状態モード、でひと -まとまり、挿入モード、コマンドラインモード、でさらにひとまとまりのマップを持 +オリジナルの Vi はノーマルモード、ビジュアルモード、オペレータ待機モード、でひ +とまとまり、挿入モード、コマンドラインモード、でさらにひとまとまりのマップを持 ち、それぞれ区別されていませんでした。そのため、Vim の ":map" と ":map!" コマ ンドは複数のモードに対してマップを設定したり表示したりします。 Vim では ":nmap"、":vmap"、":omap"、":cmap"、":imap" を使い分けることで、それ @@ -361,8 +361,8 @@ Vim では ":nmap"、":vmap"、":omap"、":cmap"、":imap" を使い分けるこ *omap-info* オペレータ待機マップを使うと、移動コマンドを定義できます。そして、オペレータと -組み合わせて使うことができます。簡単な例: ":omap { w" を定義した場合、"y{" が -"yw" として、"d{" が "dw" として機能するようになります。 +組み合わせて使うことができます。簡単な例: ":omap { w" を定義した場合、"y{" +が"yw" として、"d{" が "dw" として機能するようになります。 マップ適用時のカーソル位置を無視し、異なるテキストを選択するには、omap 内でビ ジュアルモードを開始して対象となるテキストを選択してください。例えば、現在行の @@ -372,13 +372,13 @@ CTRL-U (<C-U>) を使って (Vimによって挿入される) 範囲指定を削 マルモードコマンドを使って、最初の '(' 文字を探し、その前にある単語を選択しま す。通常はこれで関数名を選択できるでしょう。 -あるマップをノーマルモードとビジュアルモードで使用し、そして、演算待ち状態モー -ドでは使用しないという場合は、3つのモードに対してマップを定義してから演算待ち -状態モードのマップだけを削除します: > +あるマップをノーマルモードとビジュアルモードで使用し、そして、オペレータ待機 +モードでは使用しないという場合は、3つのモードに対してマップを定義してからオペ +レータ待機モードのマップだけを削除します: > :map xx something-difficult :ounmap xx -ビジュアルモードと演算待ち状態モードの場合や、ノーマルモードと演算待ち状態モー -ドの場合も同様にします。 +ビジュアルモードとオペレータ待機モードの場合や、ノーマルモードとオペレータ待機 +モードの場合も同様にします。 *language-mapping* ":lmap" で定義したマップ(以下、言語マップ)は次の場面で利用できます: @@ -407,12 +407,12 @@ CTRL-U (<C-U>) を使って (Vimによって挿入される) 範囲指定を削 マップを一覧表示したときの行頭の2文字は使用できるモードを表しています: 文字 モード ~ - <Space> ノーマル、ビジュアル、選択、演算待ち状態 + <Space> ノーマル、ビジュアル、選択、オペレータ待機 n ノーマル v ビジュアル、選択 s 選択 x ビジュアル - o 演算待ち状態 + o オペレータ待機 ! 挿入、コマンドライン i 挿入 l 挿入、コマンドライン、Lang-Argでの ":lmap" マップ @@ -529,9 +529,9 @@ CTRL-V を1つだけ入力した後に (CTRL-Vを2度押しで入力) 何も入 :set encoding=latin1 :imap <M-C> foo :set encoding=utf-8 -latin1 環境で文字「Ã」(0xc3 または <M-C>) をマップしています。例えば、「á」 +latin1 環境で文字「A」(0xc3 または <M-C>) をマップしています。例えば、「a」 (0xe1 または <M-a>) は UTF-8 では 0xc3 0xa1 の 2 バイトで表現されるので、0xc3 -をマップしてしまうと á が入力できなくなってしまいます。 +をマップしてしまうと a が入力できなくなってしまいます。 *<Leader>* *mapleader* マップコマンドで特別な文字列 "<Leader>" を使用すると、その部分が変数 From 417f995a760ec227bbed9ae5cac641e587a50d24 Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Sun, 26 Apr 2015 10:20:04 +0900 Subject: [PATCH 654/783] =?UTF-8?q?'Operator-pending'=20=E3=82=92=20"?= =?UTF-8?q?=E3=82=AA=E3=83=9A=E3=83=AC=E3=83=BC=E3=82=BF=E5=BE=85=E6=A9=9F?= =?UTF-8?q?"=20=E3=81=AB=E7=B5=B1=E4=B8=80.=20=E9=96=A2=E9=80=A3=E9=83=A8?= =?UTF-8?q?=E5=88=86=E3=82=82=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/gui.jax | 4 ++-- doc/index.jax | 2 +- doc/map.jax | 8 ++++---- doc/vi_diff.jax | 22 +++++++++++----------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/doc/gui.jax b/doc/gui.jax index eabc6d4bb..afd0a8d1f 100644 --- a/doc/gui.jax +++ b/doc/gui.jax @@ -575,7 +575,7 @@ Win32 GUIバージョンはMotifの切取りメニューをエミュレートす ビジュアルモード <C-C> <C-\><C-G> 挿入モード <C-\><C-O> コマンドラインモード <C-C> <C-\><C-G> - 演算子未解決モード <C-C> <C-\><C-G> + オペレータ待機モード <C-C> <C-\><C-G> 後ろに付加されるCTRL-\ CTRL-Gは 'insertmode' が設定されているときには挿入モー ドに戻る。|CTRL-\_CTRL-G|を参照。 @@ -681,7 +681,7 @@ Note: コマンドラインモードでの<Esc>はマッピングで使用され メニューの優先度はメニューを新しく生成するときだけ用いられる。すでにあるとき、 例えば、別のモードで定義されていたときには、優先度は変更されない。したがって、 優先度はメニューを最初に定義するときだけ与える必要がある。 -例外はポップアップメニューである。各モード(ノーマルモード、演算子未解決モー +例外はポップアップメニューである。各モード(ノーマルモード、オペレータ待機モー ド、ビジュアルモード、挿入モード、コマンドラインモード)に別々のメニューがあ る。これらのメニューは順序が異なってもよい。これはメニューバーのメニューとは異 なる。メニューバーのメニューは全てのモードで同じ順序である。 diff --git a/doc/index.jax b/doc/index.jax index 7e5a4cb5e..776480ae5 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -450,7 +450,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 ============================================================================== 2.1 テキストオブジェクト *objects* -以下のコマンドは演算コマンドの後、もしくは、ビジュアルモードでオブジェクトを選 +以下のコマンドはオペレータとして、もしくは、ビジュアルモードでオブジェクトを選 択する際に使われる。 ビジュアルモードと ~ diff --git a/doc/map.jax b/doc/map.jax index c82f2f410..3c3812ddb 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -291,8 +291,8 @@ Note: 特殊キーが機能するようにしたり、テキスト中の CSI バ - ビジュアルモード: ビジュアルモードのコマンドを入力するとき。 - 選択モード: ビジュアルモードに似ていますが入力したテキストによって選択範囲が 置換されます。 -- モーション待ちモード: コマンドを入力した後で、移動 (|{motion}|) を待って - いるとき("d"、"y"、"c"、などの後)。|omap-info| 参照。 +- オペレータ待機モード: オペレータを待機しているとき。("d"、"y"、"c"、などの + 後)。|omap-info| 参照。 - 挿入モード: 置換モードでも使われます。 - コマンドラインモード: ":" もしくは "/" コマンドを入力したとき。 @@ -529,9 +529,9 @@ CTRL-V を1つだけ入力した後に (CTRL-Vを2度押しで入力) 何も入 :set encoding=latin1 :imap <M-C> foo :set encoding=utf-8 -latin1 環境で文字「A」(0xc3 または <M-C>) をマップしています。例えば、「a」 +latin1 環境で文字「Ã」(0xc3 または <M-C>) をマップしています。例えば、「á」 (0xe1 または <M-a>) は UTF-8 では 0xc3 0xa1 の 2 バイトで表現されるので、0xc3 -をマップしてしまうと a が入力できなくなってしまいます。 +をマップしてしまうと á が入力できなくなってしまいます。 *<Leader>* *mapleader* マップコマンドで特別な文字列 "<Leader>" を使用すると、その部分が変数 diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index bc079e0fd..8915e6745 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -232,14 +232,14 @@ Vi との互換性 |'compatible'| ビジュアルモード |Visual-mode| ビジュアルモードは、初めにいくつかのテキストを選択してからそれに対して - コマンドを実行するのに使うことができます。これは初めに演算コマンドを与 - えてからその演算を施すテキストの最後まで移動するコマンドを実行するもう - 一つの(簡単な)方法です。 + コマンドを実行するのに使うことができます。これは初めにオペレータコマン + ドを与えてからそのオペレータを施すテキストの最後まで移動するコマンドを + 実行するもう一つの(簡単な)方法です。 |v| と |V| はビジュアルモードを開始します。|v|は文字ごとに選択し |V| は行ごとに選択します。カーソルを動かしてビジュアル部分を広げ、その部分 はスクリーン上でハイライトされます。"o" を打つことでビジュアルなテキス ト部分の反対側の端が動かされることになります。ビジュアルなテキスト部分 - には次の演算を施すことができます: + には次のオペレータを施すことができます: d 削除 c 変更 y ヤンク @@ -253,7 +253,7 @@ Vi との互換性 |'compatible'| u 小文字にする U 大文字にする -ブロック演算コマンド |visual-block| +ブロックオペレータ |visual-block| 長方形のテキストがビジュアルモードを使って選択することができます。 CTRL-V でビジュアルモードを開始します。選択されたブロックは "d" で削除 したり 'y' でヤンクしたり大文字小文字を "~"、"u"、"U" で変えることがで @@ -332,8 +332,8 @@ Vi との互換性 |'compatible'| テキストの整形 |formatting| 'textwidth' オプションを設定することで行の長さを自動的に制限することが できます。このオプションはあまり便利ではなかった Vi での 'wrapmargin' - オプションを補助するものです。|gq| 演算コマンドはテキストの一部分を整 - 形するのに使うことができます(例えば、|gqap| は現在の段落を整形します)。 + オプションを補助するものです。|gq| オペレータはテキストの一部分を整形 + するのに使うことができます(例えば、|gqap| は現在の段落を整形します)。 テキストの位置に関するコマンドは |:center|, |:left|, |:right| です。 拡張正規表現 |pattern| @@ -380,8 +380,8 @@ C プログラムのインデントを改善 |'cindent'| コメントも自動的に整形することができ、'comments' オプションでどの文字 がコメントをスタートさせ終了させるのかを指定することができます。この機 能は C のコードでもっともよく動作しますがメール(行の最初の ">")や他の - タイプのテキストでもうまく動作します。|=| 演算コマンドで行を再インデン - トすることもできます。 + タイプのテキストでもうまく動作します。|=| オペレータで行を再インデント + することもできます。 他にも多くの言語に対して自動インデントをするためのインデントプラグイン が提供されています。|30.3| @@ -552,8 +552,8 @@ Vi では置換モードで <CR> を打ち込んだときに文字を削除す ":w!" コマンドは上書き禁止されているファイルでも常に書き込みます。Vi では ":!chmod+w %:S" してから ":set noro" としなければなりませんでした。 -'tildeop' がセットされていると "~" は演算コマンドとして動作します(移動コマンド -を後に続けます)。 +'tildeop' がセットされていると "~" はオペレータとして動作します(移動コマンドを +後に続けます)。 "J" (連結)コマンドを実行するときにピリオドの後でスペースを挿入するのを一つだけ にするように 'joinspaces' オプションを再セットすることができます(Vi では2つの From 844214fc14d04d8b548e96559a2247577de4e584 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 6 May 2015 04:19:58 +0900 Subject: [PATCH 655/783] Remove unnecessary empty line --- doc/options.jax | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/options.jax b/doc/options.jax index 571c86ff9..479d09f22 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -8012,7 +8012,6 @@ Note 1番目の形式では、行全体がオプション指定に使われる 版のVimはunix形式のスクリプトを読み込めるからだ。 *'viminfo'* *'vi'* *E526* *E527* *E528* - 'viminfo' 'vi' 文字列 (Viの既定値は "", Vimの既定値は、 MS-DOS, WindowsとOS/2では: '100,<50,s10,h,rA:,rB:, Amigaでは: '100,<50,s10,h,rdf0:,rdf1:,rdf2: From 2f8e7a1cd0f9cf812b60c98a1a3eb5c6cc22ac00 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 31 May 2015 03:41:48 +0900 Subject: [PATCH 656/783] Catch up to the latest --- doc/intro.jax | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/intro.jax b/doc/intro.jax index c0c951d4b..3fb356dad 100644 --- a/doc/intro.jax +++ b/doc/intro.jax @@ -44,13 +44,17 @@ Vim は Vi IMproved (Viの改良版) です。かつては Vi IMitation (Viの 外れる内容については、システムごとに個別の説明があります。|sys-file-list| を参 照。 + *pronounce* +Vim は vi-ai-em ではなく、Jim のように一語として発音します。Vim はまた Jim の +ように名称なので、(最初の文字を)大文字で書きます。 + このマニュアルは全ての Vim コマンドとオプションのリファレンスです。Vi や Vim の入門書ではありません (それを入れるとあちこちで説明が込み入ってしまうので)。 初心者には、実習 |tutor| があります。Vim の使い方を身につけるにはユーザーマ ニュアル |usr_toc.txt| を読んでください。 *book* -初心者向けの内容を含んだ Vi の本はたくさん出ています。私が推薦できる本は二つあ +初心者向けの内容を含んだ Vi の本はたくさん出ています。私が推薦できる本は2冊あ ります: "Vim - Vi Improved" by Steve Oualline @@ -128,9 +132,6 @@ NOTE: "From:" のアドレスが正しいことを確認してください。メーリングリストのサーバーか ら登録方法についてのヘルプが送られてきます。 -メーリングリストから過去のメッセージと、それらの索引を得ることができます。その -方法は vim-help に尋ねてください。 - *maillist-archive* より詳しい情報とアーカイブについては、Vim メーリングリストページを見てください。 http://www.vim.org/maillist.php From 9b24f372981018684466f75467fa38c4023d977c Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 31 May 2015 06:36:01 +0900 Subject: [PATCH 657/783] Fix typo --- doc/gui.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/gui.jax b/doc/gui.jax index afd0a8d1f..df8c144b9 100644 --- a/doc/gui.jax +++ b/doc/gui.jax @@ -144,7 +144,7 @@ Vimは起動時に、スクリーンに合わせてウィンドウの位置を *:win* *:winsize* *E465* :win[size] {width} {height} {width}(幅)と{height}(高さ)を指定してウィンドウの大きさを設定 - する。このコマンドは古いコマンド(Obsolate)なので、 + する。このコマンドは古いコマンド(Obsolete)なので、 ":set lines=11 columns=22" を使用するようにすること。 期待したよりも高さが低くなるなら、'guiheadroom' オプションを確 認すること。 From 3871d68d9118a06f79954ffaaa9b1d4a7f9cafe1 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 31 May 2015 06:40:20 +0900 Subject: [PATCH 658/783] Improve translation --- doc/intro.jax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/intro.jax b/doc/intro.jax index 3fb356dad..a495b6586 100644 --- a/doc/intro.jax +++ b/doc/intro.jax @@ -263,10 +263,10 @@ Vim エディタは Stevie をベースにしており、下記の方々のソ の移植、autoconf Stefan 'Sec' Zehl vim.orgの管理 -バグレポートや提案を送ってくれた人々に感謝します。あまりにたくさんなので、ここ -で彼らの名前について触れることはできませんが。これらの人々のアイディアがなけれ -ば、Vim は今の Vim にはならなかったことでしょう: 彼らが Vim を生かしつづけたの -です! +バグレポートや提案を送ってくれた人々に感謝します。あまりにたくさんいるので、こ +こで彼らの名前について触れることはできませんが。これらの人々のアイディアがなけ +れば、Vim は今の Vim にはならなかったことでしょう: 彼らが Vim を生かしつづけた +のです! *love* *peace* *friendship* *gross-national-happiness* From 4965335201793c744ae073c634bc11142973ce5b Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Fri, 5 Jun 2015 01:27:17 +0900 Subject: [PATCH 659/783] Fix typo --- doc/indent.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/indent.jax b/doc/indent.jax index a00765875..cd34210fe 100644 --- a/doc/indent.jax +++ b/doc/indent.jax @@ -716,7 +716,7 @@ Tidyのようなプログラムは構造化do/continueループをdo/enddo形式 let fortran_do_enddo=1 -このようなすればdoループはインデントされる。例えば拡張子が.f90 であるファイル +このようにすればdoループはインデントされる。例えば拡張子が.f90 であるファイル の中にある全てのループがdo/enddoタイプだけならば、このようなautocommandを使っ てのバッファフラグを設定することができる: > From b07eef4dd912fa884a90b708c926b47c3e276e1f Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Sun, 14 Jun 2015 18:36:01 +0900 Subject: [PATCH 660/783] =?UTF-8?q?=E5=85=AB=E9=80=B2=E6=95=B0=20-->=208?= =?UTF-8?q?=E9=80=B2=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/usr_26.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/usr_26.jax b/doc/usr_26.jax index 508c88415..90ef64898 100644 --- a/doc/usr_26.jax +++ b/doc/usr_26.jax @@ -87,9 +87,9 @@ 007 foo bar ~ 010 foo bar ~ -7 + 1 = 10? これは、"007" の先頭が 0 で始まっているため、八進数と認識されてし +7 + 1 = 10? これは、"007" の先頭が 0 で始まっているため、8進数と認識されてし まったのです。この表記方法は C 言語などで使われています。先頭が 0 で始まってい -る数字を八進数として扱いたくない場合は、次のように設定してください: > +る数字を8進数として扱いたくない場合は、次のように設定してください: > :set nrformats-=octal From d42492504eca72fd53575629648ab804f0222727 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Tue, 16 Jun 2015 00:11:28 +0900 Subject: [PATCH 661/783] Translate consistently MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 十進数 -> 10進数 に統一。 --- doc/index.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/index.jax b/doc/index.jax index 776480ae5..3d5cfdbd1 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1032,7 +1032,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 CTRL-T 未使用 |c_CTRL-U| CTRL-U すべての文字を削除 |c_CTRL-V| CTRL-V 続いて入力する、数字以外の文字をそのまま挿入 - もしくは3桁の十進数で1バイト文字を指定して挿入 + もしくは3桁の10進数で1バイト文字を指定して挿入 |c_CTRL-W| CTRL-W カーソルより前にある単語を削除 CTRL-X 未使用 (補完機能のために予約) CTRL-Y モードレス選択をコピー(ヤンク)する From 93bd51c30cbe3c20996ebdb0429f5e397369ae7b Mon Sep 17 00:00:00 2001 From: h-east <h.east.727@gmail.com> Date: Wed, 1 Jul 2015 16:03:56 +0900 Subject: [PATCH 662/783] follow-up to the latest eval.txt --- doc/eval.jax | 116 ++++++++++++++++++++++++++++++++++----------------- en/eval.txt | 114 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 157 insertions(+), 73 deletions(-) mode change 100644 => 100755 doc/eval.jax diff --git a/doc/eval.jax b/doc/eval.jax old mode 100644 new mode 100755 index 43366383f..af98a6234 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1,4 +1,4 @@ -*eval.txt* For Vim バージョン 7.4. Last change: 2014 Sep 27 +*eval.txt* For Vim バージョン 7.4. Last change: 2015 Jun 26 VIMリファレンスマニュアル by Bram Moolenaar @@ -501,7 +501,7 @@ Note 辞書の要素間に順序は定まっていない。そのため ":echo a 関数に名前をつける必要をなくすために、関数を定義して直接辞書に代入することがで きる: > :let mydict = {'data': [0, 1, 2, 3]} - :function mydict.len() dict + :function mydict.len() : return len(self.data) :endfunction :echo mydict.len() @@ -968,7 +968,7 @@ number 数定数 *expr-number* -文字列 *string* *expr-string* *E114* +文字列 *string* *String* *expr-string* *E114* ------ "string" 文字列定数 *expr-quote* @@ -984,7 +984,7 @@ number 数定数 *expr-number* \X. \x.に同じ \u.... 文字を4桁の16進数で表現したもので、実際の値は現在の 'encoding' の値に 依存する (例えば "\u02a4") -\U.... \u....に同じ +\U.... \u と同じだが8桁までの16進数が使える \b バックスペース <BS> \e エスケープ <Esc> \f フォームフィード <FF> @@ -1412,11 +1412,11 @@ v:foldstart 'foldtext' 用。閉じた折り畳みの最初の行。 サンドボックス|sandbox|の中では読出し専用。|fold-foldtext| *v:hlsearch* *hlsearch-variable* -v:hlsearch 検索による強調表示がオンになっているかどうかを決定する変数。 - |+extra_search| 機能が必要な 'hlsearch' が有効になっている - 時のみ意味をなす。この変数を0に設定することは、 |:nohlsearch| - コマンドを実行することと同様に働き、1に設定することは以下と - 同様に働く > +v:hlsearch 検索による強調表示がオンになっているかどうかを示す変数。 + 設定は |+extra_search| 機能が必要な 'hlsearch' が有効になって + いる時のみ意味をなす。この変数を0に設定することは、 + |:nohlsearch|コマンドを実行することと同様に働き、1に設定するこ + とは以下と同様に働く > let &hlsearch = &hlsearch < *v:insertmode* *insertmode-variable* @@ -1787,9 +1787,10 @@ getwinposx() 数値 GUI vim windowのX座標 getwinposy() 数値 GUI vim windowのY座標 getwinvar( {nr}, {varname} [, {def}]) 文字列 ウィンドウ{nr}の変数{varname} -glob( {expr} [, {nosuf} [, {list}]]) +glob( {expr} [, {nosuf} [, {list} [, {alllinks}]]]) 任意 {expr}内のfile wildcardを展開 -globpath( {path}, {expr} [, {nosuf} [, {list}]]) +glob2regpat( {expr}) 文字列 globパターンを検索パターンに変換 +globpath( {path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]]) 文字列 {path}の全ディレクトリに対し glob({expr})を行う has( {feature}) 数値 機能{feature}がサポートならばTRUE @@ -1944,7 +1945,7 @@ split( {expr} [, {pat} [, {keepempty}]]) sqrt( {expr}) 浮動小数点数 {expr} の平方根 str2float( {expr}) 浮動小数点数 文字列を浮動小数点数に変換する str2nr( {expr} [, {base}]) 数値 文字列を数値に変換する -strchars( {expr}) 数値 文字列{expr}の文字の数 +strchars( {expr} [, {skipcc}]) 数値 文字列{expr}の文字の数 strdisplaywidth( {expr} [, {col}]) 数値 文字列{expr}の表示幅 strftime( {format}[, {time}]) 文字列 指定されたフォーマットでの時刻 stridx( {haystack}, {needle}[, {start}]) @@ -2004,7 +2005,7 @@ winrestcmd() 文字列 ウィンドウサイズを復元するコマンド winrestview( {dict}) なし 現在のウィンドウのビューを復元 winsaveview() 辞書 現在のウィンドウのビューを保存 winwidth( {nr}) 数値 ウィンドウ{nr}の幅を取得 -writefile( {list}, {fname} [, {binary}]) +writefile( {list}, {fname} [, {flags}]) 数値 行のリストをファイル{fname}に書き込む xor( {expr}, {expr}) 数値 ビット排他的論理和 @@ -2348,6 +2349,9 @@ col({expr}) . 現在の位置 $ カレント行の末尾(カレント行のバイト数+1を返す) 'x マークxの位置(マークが設定されていない場合0) + v ビジュアルモードでは: ビジュアル選択領域の開始行 + (カーソルがその端)。ビジュアルモード以外ではカーソ + ル位置を返す。すぐに更新される点が |'<| と違う。 さらに {expr} は [lnum, col] という行番号と桁番号のリストで あってもよい。col に "$" を指定して、ある行の最後の桁を取得す るのにとても便利である。"lnum" か "col" が範囲外である場合は @@ -2878,15 +2882,19 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()* {expr2}が空でないならば{expr1}が変更される。必要ならば最初に {expr1}のコピーを作ること。 {expr2}は変更されない。 + {expr1} がロックされていて、かつ {expr2} が空でない場合は操作 + は失敗する。 {expr1}を返す。 feedkeys({string} [, {mode}]) *feedkeys()* {string}中の各文字を、あたかもマッピングまたはユーザーによって - タイプされたかのように、処理キューに入れる。 これらの文字は先 - 行入力バッファの末尾に付け足される。そのためマッピングを展開し - ている途中であれば、これらの文字はマッピングを展開した後に来る - ことになる。 + タイプされたかのように、処理キューに入れる。デフォルトではこれ + らの文字は先行入力バッファの末尾に付け足される。そのためマッピ + ングを展開している途中であれば、これらの文字はマッピングを展開 + した後に来ることになる。他の文字の前に挿入するには、'i' フラグ + を使用する。それらはマッピングからの任意の文字の前の挿入の次に + 実行される。 この関数は、{string}中の文字が処理されるまでは待たない。 特殊なキーを{string}に含めるにはダブルクォートと "\..." 記法を 使う(|expr-quote|を参照)。例えば、feedkeys("\<CR>")は<Enter> @@ -2899,6 +2907,7 @@ feedkeys({string} [, {mode}]) *feedkeys()* 't' キーをタイプされたかのように扱う。そうでない場合は マッピングから展開されたかのように扱われる。これは undoや折り畳みの展開などで違いが現れる。 + 'i' 追加する代わりに文字を挿入する。(上記参照) 戻り値は常に0。 *filereadable()* @@ -3219,6 +3228,17 @@ getchar([expr]) *getchar()* : endif : endwhile :endfunction +< + あなたは|<CursorHold>|のような合成文字も取得するかもしれない。 + 多くの場合、あなたはこれを無視して別の文字を取得することにな + る: > + :function GetKey() + : let c = getchar() + : while c == "\<CursorHold>" + : let c = getchar() + : endwhile + : return c + :endfunction getcharmod() *getcharmod()* 最後にgetchar()などで得た文字に対する修飾キーの状態を表す数値 @@ -3513,7 +3533,7 @@ getwinvar({winnr}, {varname} [, {def}]) *getwinvar()* :let list_is_on = getwinvar(2, '&list') :echo "myvar = " . getwinvar(1, 'myvar') < -glob({expr} [, {nosuf} [, {list}]]) *glob()* +glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()* {expr}内のファイル名のワイルドカードを展開する。特殊文字につい ては|wildcards|を参照。 @@ -3528,9 +3548,12 @@ glob({expr} [, {nosuf} [, {list}]]) *glob()* そうでない場合は結果は文字列で返される。その場合、複数のマッチ があるときはそれらは文字 <NL> で区切られる。 - 展開が失敗した場合、空の文字列またはリストが返される。存在しな - いファイル名は結果に含まれない。シンボリックリンクは、それが存 - 在するファイルを指す場合のみ含まれる。 + 展開が失敗した場合、空の文字列またはリストが返される。 + + 存在しないファイル名は結果に含まれない。シンボリックリンクは、 + それが存在するファイルを指す場合のみ含まれる。 + ただし、{alllinks} 引数が存在し、それが非ゼロである場合はすべ + てのシンボリックリンクが含まれる。 多くのシステムではバッククォート(「`」という文字のこと)を、外 部コマンドの実行結果からファイル名を取得するために使用できる。 @@ -3543,7 +3566,15 @@ glob({expr} [, {nosuf} [, {list}]]) *glob()* 特殊なVimの変数を展開するためには|expand()|を参照。外部コマン ドの生の出力を得るためには|system()|を参照。 -globpath({path}, {expr} [, {nosuf} [, {list}]]) *globpath()* +glob2regpat({expr}) *glob2regpat()* + glob()に使われるファイルパターンを検索パターンに変換する。 + 結果はファイル名の文字列とのマッチに使用できる。例えば、 > + if filename =~ glob2regpat('Make*.mak') +< 上記は次と同じである: > + if filename =~ '^Make.*\.mak$' +< + *globpath()* +globpath({path}, {expr} [, {nosuf} [, {list} [, {allinks}]]]) {path}の中の全ディレクトリに対して|glob()|を実行し、結果を連結 する。例: > :echo globpath(&rtp, "syntax/c.vim") @@ -3569,6 +3600,8 @@ globpath({path}, {expr} [, {nosuf} [, {list}]]) *globpath()* は <NL> 文字で連結されてしまう。例: > :echo globpath(&rtp, "syntax/c.vim", 0, 1) < + {allinks} は|glob()|の場合と同様に扱われる。 + "**" を使ってディレクトリツリーを再帰的に検索することができる。 例えば、'runtimepath' とそれ以下のディレクトリから全ての "README.txt" を探すには次のようにする: > @@ -4678,7 +4711,7 @@ readfile({fname} [, {binary} [, {max}]]) 行はNL文字で終わるものとする。改行文字がCRであるMacintoshのファ イルは単一の長い行となる(どこかにNLが現れない限り)。 すべての NUL 文字は NL 文字に置換される。 - {binary}が "b" に等しい場合、次のようにバイナリモードになる: + {binary}が "b" を含む場合、次のようにバイナリモードになる: - 最後の行がNLで終わるときは、リストの末尾に余分な空文字列が追 加される。 - CR文字を除去しない。 @@ -5583,9 +5616,12 @@ str2nr( {expr} [, {base}]) *str2nr()* れ以外の底の場合は0となる。 数値の後のテキストは暗黙に無視される。 -strchars({expr}) *strchars()* - 結果は数値で、文字列 {expr} 内の文字の数を返す。合成文字は別々 - にカウントされる。 +strchars({expr} [, {skipcc}]) *strchars()* + 結果は数値で、文字列 {expr} の文字の数を返す。 + {skipcc} を省略。またはゼロを指定すると、合成文字は別々にカウ + ントされる。 + {skipcc} に 1 を指定すると、合成文字は無視される。 + {訳注: 基底文字と結合文字をまとめて1としてカウントする} |strlen()|, |strdisplaywidth()|, |strwidth()| も参照。 strdisplaywidth({expr}[, {col}]) *strdisplaywidth()* @@ -5656,15 +5692,10 @@ string({expr}) {expr}を文字列に変換して返す。{expr}が数値、浮 *strlen()* strlen({expr}) 結果は数値で、文字列{expr}のバイト単位での長さ。 - マルチバイト文字の個数を数えるには次のようなことをする(合成文 - 字は数えない): > - - :let len = strlen(substitute(str, ".", "x", "g")) -< 引数が数値の場合は、まず文字列に変換される。 それ以外の型の場合はエラーとなる。 - |len()|, |strchars()|, |strdisplaywidth()|, |strwidth()| も参 - 照。 + マルチバイト文字の数を数える場合は|strchars()|を使用する。 + |len()|, |strdisplaywidth()|, |strwidth()| も参照。 strpart({src}, {start}[, {len}]) *strpart()* 結果は文字列で、{src}の{start}番目の文字から始まる、長さ{len} @@ -6171,6 +6202,10 @@ virtcol({expr}) *virtcol()* +1となる) 'x マークxの位置(マークが設定されていない場合、0が返 る) + v ビジュアルモード中: 選択領域の開始位置(カーソルが + 最後)。ビジュアルモードでない場合はカーソル位置を + 返す。それがすぐに更新されることが |'<| とは異な + る。 現在のファイルに対して設定されているマークだけが使用可能なこと に注意。 例: > @@ -6318,13 +6353,18 @@ winwidth({nr}) *winwidth()* :endif < *writefile()* -writefile({list}, {fname} [, {binary}]) +writefile({list}, {fname} [, {flags}]) |List| {list}をファイル{fname}に書き込む。リストの各要素は改行 文字(NL)で区切られる。各要素は文字列か数値でなければならない。 - {binary}が "b" のときはバイナリモードとなり、最後の要素の後に - NLが追加されない。最後の要素が空であると、ファイルの最後の行が - NLで終わるようになる。 - NL文字はNUL文字に置換される。 + {flags}が "b" を含むときはバイナリモードとなり、最後の要素の後 + にNLが追加されない。最後の要素が空であると、ファイルの最後の行 + がNLで終わるようになる。 + {flags}が "a" を含むときは追記モードとなり、ファイルに行が追記 + される。 > + :call writefile(["foo"], "event.log", "a") + :call writefile(["bar"], "event.log", "a") +> +< NL文字はNUL文字に置換される。 CR文字を加えるには、{list}をwritefile()に渡す前に行わねばなら ない。 既存のファイルは上書きされる(上書き可能ならば)。 diff --git a/en/eval.txt b/en/eval.txt index 59267b74a..c416d773c 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2014 Sep 27 +*eval.txt* For Vim version 7.4. Last change: 2015 Jun 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -525,7 +525,7 @@ Funcref to a Dictionary, but the "self" variable is not available then. To avoid the extra name for the function it can be defined and directly assigned to a Dictionary in this way: > :let mydict = {'data': [0, 1, 2, 3]} - :function mydict.len() dict + :function mydict.len() : return len(self.data) :endfunction :echo mydict.len() @@ -1005,7 +1005,7 @@ function. Example: > -string *string* *expr-string* *E114* +string *string* *String* *expr-string* *E114* ------ "string" string constant *expr-quote* @@ -1021,7 +1021,7 @@ A string constant accepts these special characters: \X. same as \x. \u.... character specified with up to 4 hex numbers, stored according to the current value of 'encoding' (e.g., "\u02a4") -\U.... same as \u.... +\U.... same as \u but allows up to 8 hex numbers. \b backspace <BS> \e escape <Esc> \f formfeed <FF> @@ -1457,10 +1457,10 @@ v:foldstart Used for 'foldtext': first line of closed fold. Read-only in the |sandbox|. |fold-foldtext| *v:hlsearch* *hlsearch-variable* -v:hlsearch Variable that determines whether search highlighting is on. - Makes sense only if 'hlsearch' is enabled which requires - |+extra_search|. Setting this variable to zero acts the like - |:nohlsearch| command, setting it to one acts like > +v:hlsearch Variable that indicates whether search highlighting is on. + Setting it makes sense only if 'hlsearch' is enabled which + requires |+extra_search|. Setting this variable to zero acts + the like |:nohlsearch| command, setting it to one acts like > let &hlsearch = &hlsearch < *v:insertmode* *insertmode-variable* @@ -1834,9 +1834,10 @@ getwinposx() Number X coord in pixels of GUI Vim window getwinposy() Number Y coord in pixels of GUI Vim window getwinvar( {nr}, {varname} [, {def}]) any variable {varname} in window {nr} -glob( {expr} [, {nosuf} [, {list}]]) +glob( {expr} [, {nosuf} [, {list} [, {alllinks}]]]) any expand file wildcards in {expr} -globpath( {path}, {expr} [, {nosuf} [, {list}]]) +glob2regpat( {expr}) String convert a glob pat into a search pat +globpath( {path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]]) String do glob({expr}) for all dirs in {path} has( {feature}) Number TRUE if feature {feature} supported has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} @@ -1984,7 +1985,7 @@ split( {expr} [, {pat} [, {keepempty}]]) sqrt( {expr}) Float square root of {expr} str2float( {expr}) Float convert String to Float str2nr( {expr} [, {base}]) Number convert String to Number -strchars( {expr}) Number character length of the String {expr} +strchars( {expr} [, {skipcc}]) Number character length of the String {expr} strdisplaywidth( {expr} [, {col}]) Number display length of the String {expr} strftime( {format}[, {time}]) String time in specified format stridx( {haystack}, {needle}[, {start}]) @@ -2041,7 +2042,7 @@ winrestcmd() String returns command to restore window sizes winrestview( {dict}) none restore view of current window winsaveview() Dict save view of current window winwidth( {nr}) Number width of window {nr} -writefile( {list}, {fname} [, {binary}]) +writefile( {list}, {fname} [, {flags}]) Number write list of lines to file {fname} xor( {expr}, {expr}) Number bitwise XOR @@ -2395,6 +2396,10 @@ col({expr}) The result is a Number, which is the byte index of the column number of bytes in the cursor line plus one) 'x position of mark x (if the mark is not set, 0 is returned) + v In Visual mode: the start of the Visual area (the + cursor is the end). When not in Visual mode + returns the cursor position. Differs from |'<| in + that it's updated right away. Additionally {expr} can be [lnum, col]: a |List| with the line and column number. Most useful when the column is "$", to get the last column of a specific line. When "lnum" or "col" is @@ -2956,14 +2961,19 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()* {expr1} is changed when {expr2} is not empty. If necessary make a copy of {expr1} first. {expr2} remains unchanged. + When {expr1} is locked and {expr2} is not empty the operation + fails. Returns {expr1}. feedkeys({string} [, {mode}]) *feedkeys()* Characters in {string} are queued for processing as if they - come from a mapping or were typed by the user. They are added - to the end of the typeahead buffer, thus if a mapping is still - being executed these characters come after them. + come from a mapping or were typed by the user. + By default the string is added to the end of the typeahead + buffer, thus if a mapping is still being executed the + characters come after them. Use the 'i' flag to insert before + other characters, they will be executed next, before any + characters from a mapping. The function does not wait for processing of keys contained in {string}. To include special keys into {string}, use double-quotes @@ -2977,6 +2987,7 @@ feedkeys({string} [, {mode}]) *feedkeys()* 't' Handle keys as if typed; otherwise they are handled as if coming from a mapping. This matters for undo, opening folds, etc. + 'i' Insert the string instead of appending (see above). Return value is always 0. filereadable({file}) *filereadable()* @@ -3305,6 +3316,17 @@ getchar([expr]) *getchar()* : endif : endwhile :endfunction +< + You may also receive synthetic characters, such as + |<CursorHold>|. Often you will want to ignore this and get + another character: > + :function GetKey() + : let c = getchar() + : while c == "\<CursorHold>" + : let c = getchar() + : endwhile + : return c + :endfunction getcharmod() *getcharmod()* The result is a Number which is the state of the modifiers for @@ -3619,7 +3641,7 @@ getwinvar({winnr}, {varname} [, {def}]) *getwinvar()* :let list_is_on = getwinvar(2, '&list') :echo "myvar = " . getwinvar(1, 'myvar') < -glob({expr} [, {nosuf} [, {list}]]) *glob()* +glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()* Expand the file wildcards in {expr}. See |wildcards| for the use of special characters. @@ -3636,8 +3658,11 @@ glob({expr} [, {nosuf} [, {list}]]) *glob()* matches, they are separated by <NL> characters. If the expansion fails, the result is an empty String or List. + A name for a non-existing file is not included. A symbolic link is only included if it points to an existing file. + However, when the {alllinks} argument is present and it is + non-zero then all symbolic links are included. For most systems backticks can be used to get files names from any external command. Example: > @@ -3649,7 +3674,16 @@ glob({expr} [, {nosuf} [, {list}]]) *glob()* See |expand()| for expanding special Vim variables. See |system()| for getting the raw output of an external command. -globpath({path}, {expr} [, {nosuf} [, {list}]]) *globpath()* +glob2regpat({expr}) *glob2regpat()* + Convert a file pattern, as used by glob(), into a search + pattern. The result can be used to match with a string that + is a file name. E.g. > + if filename =~ glob2regpat('Make*.mak') +< This is equivalent to: > + if filename =~ '^Make.*\.mak$' +< + *globpath()* +globpath({path}, {expr} [, {nosuf} [, {list} [, {allinks}]]]) Perform glob() on all directories in {path} and concatenate the results. Example: > :echo globpath(&rtp, "syntax/c.vim") @@ -3675,6 +3709,8 @@ globpath({path}, {expr} [, {nosuf} [, {list}]]) *globpath()* they are separated by <NL> characters. Example: > :echo globpath(&rtp, "syntax/c.vim", 0, 1) < + {allinks} is used as with |glob()|. + The "**" item can be used to search in a directory tree. For example, to find all "README.txt" files in the directories in 'runtimepath' and below: > @@ -4809,7 +4845,7 @@ py3eval({expr}) *py3eval()* Evaluate Python expression {expr} and return its result converted to Vim data structures. Numbers and strings are returned as they are (strings are - copied though, unicode strings are additionally converted to + copied though, Unicode strings are additionally converted to 'encoding'). Lists are represented as Vim |List| type. Dictionaries are represented as Vim |Dictionary| type with @@ -4853,7 +4889,7 @@ readfile({fname} [, {binary} [, {max}]]) separated with CR will result in a single long line (unless a NL appears somewhere). All NUL characters are replaced with a NL character. - When {binary} is equal to "b" binary mode is used: + When {binary/append} contains "b" binary mode is used: - When the last line ends in a NL an extra empty list item is added. - No CR characters are removed. @@ -5548,7 +5584,7 @@ setwinvar({nr}, {varname}, {val}) *setwinvar()* :call setwinvar(2, "myvar", "foobar") sha256({string}) *sha256()* - Returns a String with 64 hex charactes, which is the SHA256 + Returns a String with 64 hex characters, which is the SHA256 checksum of {string}. {only available when compiled with the |+cryptv| feature} @@ -5803,15 +5839,17 @@ str2nr( {expr} [, {base}]) *str2nr()* Text after the number is silently ignored. -strchars({expr}) *strchars()* +strchars({expr} [, {skipcc}]) *strchars()* The result is a Number, which is the number of characters - String {expr} occupies. Composing characters are counted - separately. + in String {expr}. + When {skipcc} is omitted or zero, composing characters are + counted separately. + When {skipcc} set to 1, Composing characters are ignored. Also see |strlen()|, |strdisplaywidth()| and |strwidth()|. strdisplaywidth({expr}[, {col}]) *strdisplaywidth()* The result is a Number, which is the number of display cells - String {expr} occupies on the screen when it starts a {col}. + String {expr} occupies on the screen when it starts at {col}. When {col} is omitted zero is used. Otherwise it is the screen column where to start. This matters for Tab characters. @@ -5877,15 +5915,11 @@ string({expr}) Return {expr} converted to a String. If {expr} is a Number, *strlen()* strlen({expr}) The result is a Number, which is the length of the String {expr} in bytes. - If you want to count the number of multi-byte characters (not - counting composing characters) use something like this: > - - :let len = strlen(substitute(str, ".", "x", "g")) -< If the argument is a Number it is first converted to a String. For other types an error is given. - Also see |len()|, |strchars()|, |strdisplaywidth()| and - |strwidth()|. + If you want to count the number of multi-byte characters use + |strchars()|. + Also see |len()|, |strdisplaywidth()| and |strwidth()|. strpart({src}, {start}[, {len}]) *strpart()* The result is a String, which is part of {src}, starting from @@ -6408,6 +6442,10 @@ virtcol({expr}) *virtcol()* plus one) 'x position of mark x (if the mark is not set, 0 is returned) + v In Visual mode: the start of the Visual area (the + cursor is the end). When not in Visual mode + returns the cursor position. Differs from |'<| in + that it's updated right away. Note that only marks in the current file can be used. Examples: > virtcol(".") with text "foo^Lbar", with cursor on the "^L", returns 5 @@ -6557,14 +6595,20 @@ winwidth({nr}) *winwidth()* :endif < *writefile()* -writefile({list}, {fname} [, {binary}]) +writefile({list}, {fname} [, {flags}]) Write |List| {list} to file {fname}. Each list item is separated with a NL. Each list item must be a String or Number. - When {binary} is equal to "b" binary mode is used: There will + When {flags} contains "b" then binary mode is used: There will not be a NL after the last list item. An empty item at the end does cause the last line in the file to end in a NL. - All NL characters are replaced with a NUL character. + + When {flags} contains "a" then append mode is used, lines are + append to the file: > + :call writefile(["foo"], "event.log", "a") + :call writefile(["bar"], "event.log", "a") +> +< All NL characters are replaced with a NUL character. Inserting CR characters needs to be done before passing {list} to writefile(). An existing file is overwritten, if possible. @@ -8251,7 +8295,7 @@ You can catch all Vim errors by the pattern > *catch-text* NOTE: You should never catch the error message text itself: > :catch /No such variable/ -only works in the english locale, but not when the user has selected +only works in the English locale, but not when the user has selected a different language by the |:language| command. It is however helpful to cite the message text in a comment: > :catch /^Vim(\a\+):E108:/ " No such variable From 2a453f336ddab5fd7cfee98533759d3568c150a3 Mon Sep 17 00:00:00 2001 From: h-east <h.east.727@gmail.com> Date: Wed, 1 Jul 2015 17:50:29 +0900 Subject: [PATCH 663/783] Modify "virtcol()" of v position description that tailored to "col()" and "line()". --- doc/eval.jax | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index af98a6234..9d5f60792 100755 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6202,10 +6202,9 @@ virtcol({expr}) *virtcol()* +1となる) 'x マークxの位置(マークが設定されていない場合、0が返 る) - v ビジュアルモード中: 選択領域の開始位置(カーソルが - 最後)。ビジュアルモードでない場合はカーソル位置を - 返す。それがすぐに更新されることが |'<| とは異な - る。 + v ビジュアルモードでは: ビジュアル選択領域の開始行 + (カーソルがその端)。ビジュアルモード以外ではカーソ + ル位置を返す。すぐに更新される点が |'<| と違う。 現在のファイルに対して設定されているマークだけが使用可能なこと に注意。 例: > From 4d2108b79aa6f756649083e26893a79d915e10be Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Wed, 1 Jul 2015 20:12:01 +0900 Subject: [PATCH 664/783] Fix typo --- doc/eval.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 9d5f60792..efe064613 100755 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5618,8 +5618,8 @@ str2nr( {expr} [, {base}]) *str2nr()* strchars({expr} [, {skipcc}]) *strchars()* 結果は数値で、文字列 {expr} の文字の数を返す。 - {skipcc} を省略。またはゼロを指定すると、合成文字は別々にカウ - ントされる。 + {skipcc} を省略またはゼロを指定すると、合成文字は別々にカウン + トされる。 {skipcc} に 1 を指定すると、合成文字は無視される。 {訳注: 基底文字と結合文字をまとめて1としてカウントする} |strlen()|, |strdisplaywidth()|, |strwidth()| も参照。 From 106d4ebf522c7093ab539be17093bb6c23282f56 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 2 Jul 2015 09:56:04 +0900 Subject: [PATCH 665/783] Improve translation --- doc/options.jax | 4 ++-- doc/spell.jax | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 479d09f22..d7b2fd7d8 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1723,8 +1723,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる で設定するなら、一番先頭に置くこと。 既定ではオンなので、その他のオプションにはViの既定値が使われる。この既 定値は、VimをViと全く同じように使うことを望み、オプション 'compatible' - について知りもしない、または知りたいとも思わない人たちのためのものであ - る。 + について知りもしない、または知りたいとさえ思わない人たちのためのもので + ある。 Vimが立ち上がる間にファイル |vimrc| または |gvimrc| が見つかると、この オプションはオフにされ、その他のオプションで変更されていないものは、 みなVimの既定値に設定される。要するに、Vimはファイル |vimrc| または diff --git a/doc/spell.jax b/doc/spell.jax index 9fbc46645..f4b762d17 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -284,7 +284,7 @@ In a table: スペルファイル *spell-load* Vim は 'runtimepath' のディレクトリの中の "spell" という名前のサブディレクトリ -にあるスペルファイルを探す。ファイル名を LL.EEE.spl とすると、 +にあるスペルファイルを探す。ファイル名は LL.EEE.spl のようになる: LL 言語名 EEE 'encoding' の値 From d7f739b706b95589fb2644e8dd6068c6f6f959e4 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 2 Jul 2015 11:17:20 +0900 Subject: [PATCH 666/783] Update several files --- doc/usr_02.jax | 8 +++++--- en/uganda.txt | 2 +- en/usr_02.txt | 6 ++++-- en/usr_03.txt | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/doc/usr_02.jax b/doc/usr_02.jax index 69e2960a4..63f1090f0 100644 --- a/doc/usr_02.jax +++ b/doc/usr_02.jax @@ -1,4 +1,4 @@ -*usr_02.txt* For Vim バージョン 7.4. Last change: 2010 Jul 20 +*usr_02.txt* For Vim バージョン 7.4. Last change: 2015 Apr 12 VIM USER MANUAL - by Bram Moolenaar @@ -487,8 +487,8 @@ Vim にはオプションがたくさんあり、それを設定することで :help E37 -サマリー: *help-summary* > +概要: *help-summary* > :help < 一般的なヘルプを表示します。下へスクロールすると、全てのヘルプ ファイルの一覧を表示します。ここには独自に追加された、Vim標準 @@ -517,9 +517,11 @@ Vim にはオプションがたくさんあり、それを設定することで :help subject() < 関数 "subject" のヘルプ。 > :help -subject -< コマンドラインオプション "-subject" のヘルプ。 > +< コマンドライン引数 "-subject" のヘルプ。 > :help +subject < コンパイル時機能 "+subject" のヘルプ。 > + :help /* +< 正規表現 "*" のヘルプ。 > :help EventName < 自動コマンドイベント "EventName" のヘルプ。 > :help digraphs.txt diff --git a/en/uganda.txt b/en/uganda.txt index 113df4f64..167f1baed 100644 --- a/en/uganda.txt +++ b/en/uganda.txt @@ -194,7 +194,7 @@ child, you should have the intention to do this for at least one year. How do you know that the money will be spent right? First of all you have my personal guarantee as the author of Vim. I trust the people that are working -at the centre, I know them personally. Further more, the centre has been +at the centre, I know them personally. Furthermore, the centre has been co-sponsored and inspected by World Vision, Save the Children Fund and is now under the supervision of Pacific Academy Outreach Society. The centre is visited about once a year to check the progress (at our own cost). I have diff --git a/en/usr_02.txt b/en/usr_02.txt index 8bfa9ba05..da6364045 100644 --- a/en/usr_02.txt +++ b/en/usr_02.txt @@ -1,4 +1,4 @@ -*usr_02.txt* For Vim version 7.4. Last change: 2010 Jul 20 +*usr_02.txt* For Vim version 7.4. Last change: 2015 Apr 12 VIM USER MANUAL - by Bram Moolenaar @@ -527,9 +527,11 @@ Summary: *help-summary* > :help subject() < Function "subject". > :help -subject -< Command-line option "-subject". > +< Command-line argument "-subject". > :help +subject < Compile-time feature "+subject". > + :help /* +< Regular expression item "*" > :help EventName < Autocommand event "EventName". > :help digraphs.txt diff --git a/en/usr_03.txt b/en/usr_03.txt index 617326089..8cbcf13a1 100644 --- a/en/usr_03.txt +++ b/en/usr_03.txt @@ -532,7 +532,7 @@ MATCHING ANY SINGLE CHARACTER The . (dot) character matches any existing character. For example, the pattern "c.m" matches a string whose first character is a c, whose second -character is anything, and whose the third character is m. Example: +character is anything, and whose third character is m. Example: We use a computer that became the cummin winter. ~ xxx xxx xxx From 25216668323497ba25c2550764f9bec70b4c9cfe Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 2 Jul 2015 11:42:58 +0900 Subject: [PATCH 667/783] Improve translation --- doc/tips.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/tips.jax b/doc/tips.jax index 76868ca20..b0702d75a 100644 --- a/doc/tips.jax +++ b/doc/tips.jax @@ -26,7 +26,7 @@ xterm でのスクリーンの切り替え |xterm-screens| 便利なマッピング |useful-mappings| ヘルプファイルを圧縮する |gzip-helpfile| ウィンドウでシェルコマンドを実行する |shell-window| -16進編集 |hex-editing| +バイナリ編集 |hex-editing| オートコマンドで <> 表記を使う |autocmd-<>| 対応する括弧を強調する |match-parens| @@ -429,7 +429,7 @@ Sam Lantinga <slouken@cs.ucdavis.edu> です。もう一つの方法は "window" でウィンドウの積み重ねをすることができます。 ============================================================================== -16進編集 *hex-editing* *using-xxd* +バイナリ編集 *hex-editing* *using-xxd* ユーザーマニュアルの|23.4|を参照してください。 From b537bafa909d6cf5172455cf65eff1c060f2cd75 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 4 Jul 2015 17:21:38 +0900 Subject: [PATCH 668/783] Add pi_logipat.txt #126 --- doc/help.jax | 3 +- doc/pi_logipat.jax | 117 +++++++++++++++++++++++++++++++++++++++++++++ en/help.txt | 3 +- en/pi_logipat.txt | 117 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 238 insertions(+), 2 deletions(-) create mode 100644 doc/pi_logipat.jax create mode 100644 en/pi_logipat.txt diff --git a/doc/help.jax b/doc/help.jax index 9f7ac249a..b27322b02 100644 --- a/doc/help.jax +++ b/doc/help.jax @@ -1,4 +1,4 @@ -*help.txt* For Vim バージョン 7.4. Last change: 2015 Apr 15 +*help.txt* For Vim バージョン 7.4. Last change: 2015 Jun 21 VIM - メインヘルプファイル k @@ -197,6 +197,7 @@ GUI ~ 標準プラグイン ~ |pi_getscript.txt| Vim スクリプトの最新版をダウンロードする |pi_gzip.txt| 圧縮ファイルの読み書き +|pi_logipat.txt| パターンにおける論理演算子 |pi_netrw.txt| ネットワークファイルの読み書き |pi_paren.txt| 対括弧の強調表示 |pi_tar.txt| Tar ファイルエクスプローラ diff --git a/doc/pi_logipat.jax b/doc/pi_logipat.jax new file mode 100644 index 000000000..54f3607d5 --- /dev/null +++ b/doc/pi_logipat.jax @@ -0,0 +1,117 @@ +*pi_logipat.txt* 論理パターン Mar 13, 2013 + +Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> +Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright* + The VIM LICENSE applies to LogiPat.vim and LogiPat.txt + (see |copyright|) except use "LogiPat" instead of "Vim" + No warranty, express or implied. Use At-Your-Own-Risk. + +============================================================================== +1. 目次 *logipat* *logipat-contents* + + 1. 目次.....................: |logipat-contents| + 2. LogiPat マニュアル.......: |logipat-manual| + 3. LogiPat 使用例...........: |logipat-examples| + 4. 注意.....................: |logipat-caveat| + 5. LogiPat 変更履歴.........: |logipat-history| + +============================================================================== +2. LogiPat マニュアル *logipat-manual* *logipat-man* + + + *logipat-arg* *logipat-input* *logipat-pattern* *logipat-operators* + Boolean logic patterns are composed of + + operators ! = not + | = logical-or + & = logical-and + grouping ( ... ) + patterns "pattern" + + :LogiPat {boolean-logic pattern} *:LogiPat* + :LogiPat is a command which takes a boolean-logic + argument (|logipat-arg|). + + :LP {boolean-logic pattern} *:LP* + :LP is a shorthand command version of :LogiPat + (|:LogiPat|). + + :ELP {boolean-logic pattern} *:ELP* + No search is done, but the conversion from the + boolean logic pattern to the regular expression + is performed and echoed onto the display. + + :LogiPatFlags {search flags} *LogiPat-flags* + :LogiPatFlags {search flags} + LogiPat uses the |search()| command. The flags + passed to that call to search() may be specified + by the :LogiPatFlags command. + + :LPF {search flags} *:LPF* + :LPF is a shorthand version of :LogiPatFlags. + + :let pat=LogiPat({boolean-logic pattern}) *LogiPat()* + If one calls LogiPat() directly, no search + is done, but the transformation from the boolean + logic pattern into a regular expression pattern + is performed and returned. + + To get a " inside a pattern, as opposed to having it delimit + the pattern, double it. + +============================================================================== +3. LogiPat 使用例 *logipat-examples* + + LogiPat takes Boolean logic arguments and produces a regular + expression which implements the choices. A series of examples + follows: +> + :LogiPat "abc" +< will search for lines containing the string :abc: +> + :LogiPat "ab""cd" +< will search for lines containing the string :ab"c: +> + :LogiPat !"abc" +< will search for lines which don't contain the string :abc: +> + :LogiPat "abc"|"def" +< will search for lines which contain either the string + :abc: or the string :def: +> + :LogiPat !("abc"|"def") +< will search for lines which don't contain either + of the strings :abc: or :def: +> + :LogiPat "abc"&"def" +< will search for lines which contain both of the strings + :abc: and :def: +> + :let pat= LogiPat('!"abc"') +< will return the regular expression which will match + all lines not containing :abc: . The double quotes + are needed to pass normal patterns to LogiPat, and + differentiate such patterns from boolean logic + operators. + + +============================================================================== +4. 注意 *logipat-caveat* + + The "not" operator may be fragile; ie. it may not always play well + with the & (logical-and) and | (logical-or) operators. Please try out + your patterns, possibly with :set hls, to insure that what is matching + is what you want. + +============================================================================== +5. LogiPat 変更履歴 *logipat-history* + + v3 Sep 25, 2006 * LP_Or() fixed; it now encapsulates its output + in \%(...\) parentheses + Dec 12, 2011 * |:ELP| added + * "" is mapped to a single " and left inside patterns + v2 May 31, 2005 * LPF and LogiPatFlags commands weren't working + v1 May 23, 2005 * initial release + +============================================================================== +vim:tw=78:ts=8:ft=help diff --git a/en/help.txt b/en/help.txt index 452e6227f..64de957bf 100644 --- a/en/help.txt +++ b/en/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 7.4. Last change: 2015 Apr 15 +*help.txt* For Vim version 7.4. Last change: 2015 Jun 21 VIM - main help file k @@ -197,6 +197,7 @@ Remarks about specific systems ~ Standard plugins ~ |pi_getscript.txt| Downloading latest version of Vim scripts |pi_gzip.txt| Reading and writing compressed files +|pi_logipat.txt| Logical operators on patterns |pi_netrw.txt| Reading and writing files over a network |pi_paren.txt| Highlight matching parens |pi_tar.txt| Tar file explorer diff --git a/en/pi_logipat.txt b/en/pi_logipat.txt new file mode 100644 index 000000000..ea3acda82 --- /dev/null +++ b/en/pi_logipat.txt @@ -0,0 +1,117 @@ +*pi_logipat.txt* Logical Patterns Mar 13, 2013 + +Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> +Copyright: (c) 2004-2013 by Charles E. Campbell *logipat-copyright* + The VIM LICENSE applies to LogiPat.vim and LogiPat.txt + (see |copyright|) except use "LogiPat" instead of "Vim" + No warranty, express or implied. Use At-Your-Own-Risk. + +============================================================================== +1. Contents *logipat* *logipat-contents* + + 1. Contents.................: |logipat-contents| + 2. LogiPat Manual...........: |logipat-manual| + 3. LogiPat Examples.........: |logipat-examples| + 4. Caveat...................: |logipat-caveat| + 5. LogiPat History..........: |logipat-history| + +============================================================================== +2. LogiPat Manual *logipat-manual* *logipat-man* + + + *logipat-arg* *logipat-input* *logipat-pattern* *logipat-operators* + Boolean logic patterns are composed of + + operators ! = not + | = logical-or + & = logical-and + grouping ( ... ) + patterns "pattern" + + :LogiPat {boolean-logic pattern} *:LogiPat* + :LogiPat is a command which takes a boolean-logic + argument (|logipat-arg|). + + :LP {boolean-logic pattern} *:LP* + :LP is a shorthand command version of :LogiPat + (|:LogiPat|). + + :ELP {boolean-logic pattern} *:ELP* + No search is done, but the conversion from the + boolean logic pattern to the regular expression + is performed and echoed onto the display. + + :LogiPatFlags {search flags} *LogiPat-flags* + :LogiPatFlags {search flags} + LogiPat uses the |search()| command. The flags + passed to that call to search() may be specified + by the :LogiPatFlags command. + + :LPF {search flags} *:LPF* + :LPF is a shorthand version of :LogiPatFlags. + + :let pat=LogiPat({boolean-logic pattern}) *LogiPat()* + If one calls LogiPat() directly, no search + is done, but the transformation from the boolean + logic pattern into a regular expression pattern + is performed and returned. + + To get a " inside a pattern, as opposed to having it delimit + the pattern, double it. + +============================================================================== +3. LogiPat Examples *logipat-examples* + + LogiPat takes Boolean logic arguments and produces a regular + expression which implements the choices. A series of examples + follows: +> + :LogiPat "abc" +< will search for lines containing the string :abc: +> + :LogiPat "ab""cd" +< will search for lines containing the string :ab"c: +> + :LogiPat !"abc" +< will search for lines which don't contain the string :abc: +> + :LogiPat "abc"|"def" +< will search for lines which contain either the string + :abc: or the string :def: +> + :LogiPat !("abc"|"def") +< will search for lines which don't contain either + of the strings :abc: or :def: +> + :LogiPat "abc"&"def" +< will search for lines which contain both of the strings + :abc: and :def: +> + :let pat= LogiPat('!"abc"') +< will return the regular expression which will match + all lines not containing :abc: . The double quotes + are needed to pass normal patterns to LogiPat, and + differentiate such patterns from boolean logic + operators. + + +============================================================================== +4. Caveat *logipat-caveat* + + The "not" operator may be fragile; ie. it may not always play well + with the & (logical-and) and | (logical-or) operators. Please try out + your patterns, possibly with :set hls, to insure that what is matching + is what you want. + +============================================================================== +3. LogiPat History *logipat-history* + + v3 Sep 25, 2006 * LP_Or() fixed; it now encapsulates its output + in \%(...\) parentheses + Dec 12, 2011 * |:ELP| added + * "" is mapped to a single " and left inside patterns + v2 May 31, 2005 * LPF and LogiPatFlags commands weren't working + v1 May 23, 2005 * initial release + +============================================================================== +vim:tw=78:ts=8:ft=help From 3ec812d21a8ec25a1ab88e5ceee4fe404803a28c Mon Sep 17 00:00:00 2001 From: tyru <tyru.exe@gmail.com> Date: Sat, 4 Jul 2015 23:32:52 +0900 Subject: [PATCH 669/783] Fix typo in quickfix.jax --- doc/quickfix.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/quickfix.jax b/doc/quickfix.jax index 2f309a781..881c0004d 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -363,7 +363,7 @@ Note: QuickFixウィンドウ内で変更を加えてもエラーのリストに *location-list-window* ロケーションリストウィンドウはロケーションリストの中身を表示する。ロケーション -ウィンドウを開くと、カレントウィンドウに下に開かれ、カレントウィンドウのロケー +ウィンドウを開くと、カレントウィンドウの下に開かれ、カレントウィンドウのロケー ションリストが表示される。ロケーションリストはQuickFixウィンドウに似ているが、 一度に2個以上のロケーションリストウィンドウを開ける点が異なる。このウィンドウ 内でロケーションリストコマンドを使うと、表示されているロケーションリストが使わ From 1308e134165c639e890b32190ec3c28c3afff790 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Tue, 14 Jul 2015 23:44:59 +0900 Subject: [PATCH 670/783] Fix typo #128 --- doc/options.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/options.jax b/doc/options.jax index d7b2fd7d8..ddfe3638f 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4392,7 +4392,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 有効} 挿入モードで打ち込まれたときに、現在行の再インデントを引き起こすキーの リスト。これはオプション 'indentexpr' が空でないときのみ起きる。 - 書式は 'cinkeys' によって異なってくる。|indentkeys-format| を参照。 + 書式は 'cinkeys' と同様である。|indentkeys-format| を参照。 |C-indenting| と |indent-expression| を参照。 *'infercase'* *'inf'* *'noinfercase'* *'noinf'* From 051cd79db25fa677ed9bd518c3a00d609df3e07d Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Wed, 15 Jul 2015 01:49:14 +0900 Subject: [PATCH 671/783] Drop executable permission --- doc/eval.jax | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 doc/eval.jax diff --git a/doc/eval.jax b/doc/eval.jax old mode 100755 new mode 100644 From 537fef160ab6b3eb0ef40cd285f60812bb384519 Mon Sep 17 00:00:00 2001 From: thinca <thinca@gmail.com> Date: Thu, 23 Jul 2015 10:53:41 +0900 Subject: [PATCH 672/783] Fix typo --- doc/options.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/options.jax b/doc/options.jax index ddfe3638f..2539e8a93 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -252,7 +252,7 @@ opt+=値" でオプションに文字列を追加したりするときには、 てからそうした操作がなされる。 -ローカル変数の扱い *local-options* +ローカルオプションの扱い *local-options* いくつかのオプションは、1つのウィンドウや1つのバッファのみに適用される。それぞ れのウィンドウやバッファは、そうしたオプションの独自のコピーを保持しているため、 From bab3a73a60d37213b3ff235f8860a2f2a67e5020 Mon Sep 17 00:00:00 2001 From: Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com> Date: Tue, 18 Aug 2015 22:25:18 +0900 Subject: [PATCH 673/783] fixed translation #129 --- doc/windows.jax | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/windows.jax b/doc/windows.jax index 169286760..66e0a554e 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -1166,13 +1166,13 @@ CTRL-W g } *CTRL-W_g}* トが与えられたら、開くウィンドウの最大数となる。 :[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball* -:[N]sba[ll] [N] バッファリスト中のメモリ上にロードされた各バッファに対して1つ - のウィンドウが開かれているようにスクリーンを再構成する。カウン - トが与えられたら、開くウィンドウの最大数となる。'winheight' も - 開くウィンドウの数を制限する (|:vertical| が前に与えられている - ときは 'winwidth')。この時点では、Buf/Win Enter/Leave オートコ - マンドは新しいウィンドウに対して実行されない。ウィンドウに移動 - したときにのみ実行される。 +:[N]sba[ll] [N] バッファリスト中の各バッファに対して1つのウィンドウが開かれて + いるようにスクリーンを再構成する。カウントが与えられたら、開く + ウィンドウの最大数となる。'winheight' も開くウィンドウの数を制 + 限する (|:vertical| が前に与えられているときは 'winwidth')。こ + の時点では、Buf/Win Enter/Leave オートコマンドは新しいウィンド + ウに対して実行されない。ウィンドウに移動したときにのみ実行され + る。 コマンド修飾子|:tab|をつけて実行すると、新しいウィンドウがそれ ぞれ新しいタブで開く。ただしタブの個数は 'tabpagemax' に制限さ れる。 From 237d84c4e9306b18b6be3fa6b4376afa18705f31 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 28 Aug 2015 01:03:22 +0900 Subject: [PATCH 674/783] Fix typo https://twitter.com/ATA911/status/633194331080409088 --- doc/term.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/term.jax b/doc/term.jax index f3294634c..3b386feb0 100644 --- a/doc/term.jax +++ b/doc/term.jax @@ -825,7 +825,7 @@ sysmouse は、コンパイル時に |+mouse_sysmouse| 機能が有効化され <MiddleDrag> 中央ボタンを押しながら移動 - <MiddleRelease> 中央ボタン放す - <RightMouse> 右ボタン押下 選択を拡張 - <RightDrag> 右ボタンをお品が雷同 選択を拡張 + <RightDrag> 右ボタンを押しながら移動 選択を拡張 <RightRelease> 右ボタン放す 選択を終了 <X1Mouse> X1 ボタン押下 - *X1Mouse* <X1Drag> X1 ボタンを押しながら移動 - *X1Drag* From 05890506bfd857966cfbe53cdc86c4e3a24f2318 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 28 Aug 2015 02:35:34 +0900 Subject: [PATCH 675/783] Update some files --- doc/fold.jax | 6 +++--- doc/if_ruby.jax | 11 ++++++++--- doc/syntax.jax | 4 ++-- en/fold.txt | 4 ++-- en/if_ole.txt | 2 +- en/if_ruby.txt | 12 ++++++++---- en/print.txt | 2 +- en/quotes.txt | 4 ++-- en/syntax.txt | 4 ++-- 9 files changed, 29 insertions(+), 20 deletions(-) diff --git a/doc/fold.jax b/doc/fold.jax index 7565b5172..25afd6e92 100644 --- a/doc/fold.jax +++ b/doc/fold.jax @@ -351,8 +351,8 @@ zX 手動で行った折畳の開閉操作をアンドゥする: 'foldlevel' 折畳の計算を強制するのにも使える (|zx| と同様)。 *zm* -zm 折畳をより閉じる: 'foldlevel' を1減少させる。'foldlevel' が既 - に0ならば何も起こらない。 +zm 折畳をより閉じる: 'foldlevel' を |v:count1| 減少させる。 + 'foldlevel' が既に0ならば何も起こらない。 'foldenable' がセット(有効化)される。 *zM* @@ -360,7 +360,7 @@ zM 全ての折畳を閉じる: 'foldlevel' に0を設定する。 'foldenable' がセット(有効化)される。 *zr* -zr 折畳をより開く: 'foldlevel' を1増加させる。 +zr 折畳をより開く: 'foldlevel' を |v:count1| 増加させる。 *zR* zR 全ての折畳を開く: 'foldlevel' に最大の折畳レベルを設定する。 diff --git a/doc/if_ruby.jax b/doc/if_ruby.jax index 187145ffe..abc5ecf9a 100644 --- a/doc/if_ruby.jax +++ b/doc/if_ruby.jax @@ -1,4 +1,4 @@ -*if_ruby.txt* For Vim バージョン 7.4. Last change: 2012 Aug 02 +*if_ruby.txt* For Vim バージョン 7.4. Last change: 2015 Feb 22 VIM リファレンスマニュアル by Shugo Maeda @@ -120,8 +120,13 @@ VIM::command({cmd}) *ruby-evaluate* VIM::evaluate({expr}) Vim内部の実行エンジンを使ってスクリプト{expr}を実行評価する - (|expression|参照)。実行結果は文字列で返される。 - |List|は文字列に変換される。各要素が連結され、間に改行が挿入される。 + (|expression|参照)。実行結果は次のように返される: + - Vimの実行結果が number の場合は Integer + - Vimの実行結果が float の場合は Float + - Vimの実行結果が string の場合は String + - Vimの実行結果がVimの list の場合は Array + - Vimの実行結果がVimの dictionary の場合は Hash + 辞書とリストは再帰的に展開される。 ============================================================================== 3. VIM::Buffer オブジェクト *ruby-buffer* diff --git a/doc/syntax.jax b/doc/syntax.jax index 7805fea08..76cda2d67 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -3291,7 +3291,7 @@ xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を :syntax keyword Type contained int long char :syntax keyword Type int long contained char :syntax keyword Type int long char contained -< *E789* +< *E789* *E890* Vimのexコマンドのようにキーワードに短縮形があるとき、省略可能な部分を [] でくくることによって受け入れるキーワードをいっぺんに定義することが できる: > @@ -4084,7 +4084,7 @@ skipパターンも "\n" を含んでよい。ただし次の行の最初の文 引数 "maxlines={N}" が指定されると、コメントや正規表現を検索するためにさかのぼ る行数が最大N行になる。これは遅いマシンを使っていて、シンクロナイズする行数が 少ないとわかっているときに便利である。例: > - :syntax sync ccomment maxlines=500 + :syntax sync maxlines=500 ccomment < *:syn-sync-linebreaks* 複数行にマッチする正規表現を使っているとき、ある行に変更を施すと、前の行でマッ diff --git a/en/fold.txt b/en/fold.txt index 6ae2ff868..20017d353 100644 --- a/en/fold.txt +++ b/en/fold.txt @@ -365,7 +365,7 @@ zX Undo manually opened and closed folds: re-apply 'foldlevel'. Also forces recomputing folds, like |zx|. *zm* -zm Fold more: Subtract one from 'foldlevel'. If 'foldlevel' was +zm Fold more: Subtract |v:count1| from 'foldlevel'. If 'foldlevel' was already zero nothing happens. 'foldenable' will be set. @@ -374,7 +374,7 @@ zM Close all folds: set 'foldlevel' to 0. 'foldenable' will be set. *zr* -zr Reduce folding: Add one to 'foldlevel'. +zr Reduce folding: Add |v:count1| to 'foldlevel'. *zR* zR Open all folds. This sets 'foldlevel' to highest fold level. diff --git a/en/if_ole.txt b/en/if_ole.txt index 7d77b660f..63e6e312c 100644 --- a/en/if_ole.txt +++ b/en/if_ole.txt @@ -197,7 +197,7 @@ files in it. --remote-silent "+call cursor(10, 27)" - Places the cursor on line 10 column 27 In Vim > - :h --remote-silent for mor details + :h --remote-silent for more details [.Net remarks provided by Dave Fishburn and Brian Sturk] diff --git a/en/if_ruby.txt b/en/if_ruby.txt index 0a32d8785..4084181f9 100644 --- a/en/if_ruby.txt +++ b/en/if_ruby.txt @@ -1,4 +1,4 @@ -*if_ruby.txt* For Vim version 7.4. Last change: 2012 Aug 02 +*if_ruby.txt* For Vim version 7.4. Last change: 2015 Feb 22 VIM REFERENCE MANUAL by Shugo Maeda @@ -120,9 +120,13 @@ VIM::command({cmd}) *ruby-evaluate* VIM::evaluate({expr}) Evaluates {expr} using the vim internal expression evaluator (see - |expression|). Returns the expression result as a string. - A |List| is turned into a string by joining the items and inserting - line breaks. + |expression|). Returns the expression result as: + - a Integer if the Vim expression evaluates to a number + - a Float if the Vim expression evaluates to a float + - a String if the Vim expression evaluates to a string + - a Array if the Vim expression evaluates to a Vim list + - a Hash if the Vim expression evaluates to a Vim dictionary + Dictionaries and lists are recursively expanded. ============================================================================== 3. VIM::Buffer objects *ruby-buffer* diff --git a/en/print.txt b/en/print.txt index 2ff6b1063..e12d7f814 100644 --- a/en/print.txt +++ b/en/print.txt @@ -693,7 +693,7 @@ It is possible to achieve a poor man's version of duplex printing using the PS utility psselect. This utility has options -e and -o for printing just the even or odd pages of a PS file respectively. -First generate a PS file with the 'hardcopy' command, then generate a new +First generate a PS file with the 'hardcopy' command, then generate new files with all the odd and even numbered pages with: > psselect -o test.ps odd.ps diff --git a/en/quotes.txt b/en/quotes.txt index 11d855012..5900eb697 100644 --- a/en/quotes.txt +++ b/en/quotes.txt @@ -178,14 +178,14 @@ Hurrah for VIM!! It is "at your fingertips" like vi, and has the extensions that vi sorely needs: highlighting for executing commands on blocks, an easily navigable and digestible help screen, and more. (Paul Pax) -The reason WHY I don't have this amazingly useful macro any more, is that I +The reason WHY I don't have this amazingly useful macro anymore, is that I now use VIM - and this is built in!! (Stephen Riehm, Germany) I am a user of VIM and I love it. I use it to do all my programming, C, C++, HTML what ever. (Tim Allwine) I discovered VIM after years of struggling with the original vi, and I just -can't live without it any more. (Emmanuel Mogenet, USA) +can't live without it anymore. (Emmanuel Mogenet, USA) Emacs has not a bit of chance to survive so long as VIM is around. Besides, it also has the most detailed software documentation I have ever seen---much diff --git a/en/syntax.txt b/en/syntax.txt index ee91a91ac..d475660a3 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -3408,7 +3408,7 @@ DEFINING KEYWORDS *:syn-keyword* :syntax keyword Type contained int long char :syntax keyword Type int long contained char :syntax keyword Type int long char contained -< *E789* +< *E789* *E890* When you have a keyword with an optional tail, like Ex commands in Vim, you can put the optional characters inside [], to define all the variations at once: > @@ -4243,7 +4243,7 @@ If the "maxlines={N}" argument is given, the number of lines that are searched for a comment or syncing pattern is restricted to N lines backwards (after adding "minlines"). This is useful if you have few things to sync on and a slow machine. Example: > - :syntax sync ccomment maxlines=500 + :syntax sync maxlines=500 ccomment < *:syn-sync-linebreaks* When using a pattern that matches multiple lines, a change in one line may From bc0ecbafc6ada0ac184c771ed118b53b47481c89 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 28 Aug 2015 18:40:24 +0900 Subject: [PATCH 676/783] Update cmdline.txt --- doc/cmdline.jax | 15 +++++++++------ en/cmdline.txt | 20 ++++++++++++-------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/doc/cmdline.jax b/doc/cmdline.jax index fec300ac1..b9fd910f9 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim バージョン 7.4. Last change: 2014 Sep 06 +*cmdline.txt* For Vim バージョン 7.4. Last change: 2015 Jul 28 VIMリファレンスマニュアル by Bram Moolenaar @@ -571,7 +571,7 @@ Amigaでは、引数がファイル名1個になるはずのとき、空白を コマンドで特別な文字 '"', '|' を使いたいとき、あるいはファイル名に '%', '#' を 使いたいときは、'\' を前に置く。範囲指定やコマンド ":substitute" では '\' は必 -要ない。 +要ない。|`=| も参照のこと。 *:_!* Exコマンドの後に文字 '!' (bang) を置くと、コマンドの動作方法が変わる。'!' はコ @@ -636,7 +636,7 @@ Exコマンドには、その前に行単位の範囲を指定できるものが |:pop| 等) では確かに 0 として使われる。0 を「先頭行の前」として解釈するコマン ドもある (|:read|, 検索パターン等)。 -Examples: > +例: > .+3 カーソルの3行下 /that/+1 次行より下の、"that" を含む行 .,$ 現在行からファイル末尾まで @@ -712,7 +712,7 @@ Note: 以下はコマンドラインの実行における特別な文字であ 表す。CTRL-R %とするとその場に現在のファイル名を挿入する。|c_CTRL-R|を参照。 Note: Vim スクリプト内で特別な文字をエスケープするには |fnameescape()| を使う -とよいかもしれない。 +とよいかもしれない。|`=| も参照のこと。 Exコマンドの、ファイル名が使えるところでは、以下の文字は特別な意味を持つ。これ らは式や関数 |expand()| 内でも使うことができる。 @@ -753,6 +753,7 @@ Note: "#<n" 以外は、ユーザーに打ち込まれた通りのファイル # 代替ファイル名 \# # \\# \# +|`=| も参照のこと。 *:<cword>* *:<cWORD>* *:<cfile>* *<cfile>* *:<sfile>* *<sfile>* *:<afile>* *<afile>* @@ -890,9 +891,8 @@ Vim version 3.0 との下位互換性のために残されており、":r" 形 Note: ファイル名が来る筈の所では、ワイルドカードの展開が行われる。Unixでは展開 にはシェルが使われる。ただしVim内部でできない展開だけである (スピードのため)。 -バッククォート '`' も次のように使える。 > +|restricted-mode| でなければ、バッククォート '`' も次のように使える。 > :n `echo *.c` -(バッククォートの展開は |restricted-mode| ではできない) しかし展開は、'%' や '#' 等が展開される前にワイルドカードが存在したときにのみ 行われる。これはファイル名に含まれるワイルドカードを展開しないためである。 <cfile> の結果を展開したいときは、ワイルドカードの文字を追加すればよい。 @@ -903,6 +903,7 @@ Note: ファイル名が来る筈の所では、ワイルドカードの展開 :e #.* :e {"?readme?.*" にマッチしたファイル全て} :cd <cfile> :cd {カーソル下のファイル名} :cd <cfile>* :cd {カーソル下のファイル名に "*" を加え展開したもの} +|`=| も参照のこと。 展開された後のコマンド引数に "!" に含まれていて、それがシェルコマンドに使われ る (":!cmd", ":r !cmd" や ":w !cmd") とき、"!" は '\' でエスケープされ、前回の @@ -927,6 +928,8 @@ Note: ファイル名が来る筈の所では、ワイルドカードの展開 /\$home ルートディレクトリのファイル "$home" \\$home "\\" の後に $home の値を付け加えた名前のファイル +|`=| も参照のこと。 + ============================================================================== 7. コマンドラインウィンドウ *cmdline-window* *cmdwin* *command-line-window* diff --git a/en/cmdline.txt b/en/cmdline.txt index d3da61ceb..94fe977cc 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.4. Last change: 2014 Sep 06 +*cmdline.txt* For Vim version 7.4. Last change: 2015 Jul 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -597,6 +597,7 @@ starts editing the three files "foo bar", "goes to" and "school ". When you want to use the special characters '"' or '|' in a command, or want to use '%' or '#' in a file name, precede them with a backslash. The backslash is not required in a range and in the ":substitute" command. +See also |`=|. *:_!* The '!' (bang) character after an Ex command makes the command behave in a @@ -749,13 +750,13 @@ to insert special things while typing you can use the CTRL-R command. For example, "%" stands for the current file name, while CTRL-R % inserts the current file name right away. See |c_CTRL-R|. -Note: If you want to avoid the special characters in a Vim script you may want -to use |fnameescape()|. +Note: If you want to avoid the effects of special characters in a Vim script +you may want to use |fnameescape()|. Also see |`=|. In Ex commands, at places where a file name can be used, the following characters have a special meaning. These can also be used in the expression -function expand() |expand()|. +function |expand()|. % Is replaced with the current file name. *:_%* *c_%* # Is replaced with the alternate file name. *:_#* *c_#* This is remembered for every window. @@ -790,6 +791,7 @@ it, no matter how many backslashes. # alternate.file \# # \\# \# +Also see |`=|. *:<cword>* *:<cWORD>* *:<cfile>* *<cfile>* *:<sfile>* *<sfile>* *:<afile>* *<afile>* @@ -811,7 +813,7 @@ Note: these are typed literally, they are not special keys! <afile> only when the file name isn't used to match with (for FileType, Syntax and SpellFileMissing events). <sfile> When executing a ":source" command, is replaced with the - file name of the sourced file. *E498* + file name of the sourced file. *E498* When executing a function, is replaced with "function {function-name}"; function call nesting is indicated like this: @@ -880,7 +882,7 @@ These modifiers can be given, in this order: :gs?pat?sub? Substitute all occurrences of "pat" with "sub". Otherwise this works like ":s". - :S Escape special characters for use with a shell command (see + :S Escape special characters for use with a shell command (see |shellescape()|). Must be the last one. Examples: > :!dir <cfile>:S :call system('chmod +w -- ' . expand('%:S')) @@ -933,9 +935,8 @@ name). This is included for backwards compatibility with version 3.0, the Note: Where a file name is expected wildcards expansion is done. On Unix the shell is used for this, unless it can be done internally (for speed). -Backticks also work, like in > +Unless in |restricted-mode|, backticks work also, like in > :n `echo *.c` -(backtick expansion is not possible in |restricted-mode|) But expansion is only done if there are any wildcards before expanding the '%', '#', etc.. This avoids expanding wildcards inside a file name. If you want to expand the result of <cfile>, add a wildcard character to it. @@ -946,6 +947,7 @@ Examples: (alternate file name is "?readme?") :e #.* :e {files matching "?readme?.*"} :cd <cfile> :cd {file name under cursor} :cd <cfile>* :cd {file name under cursor plus "*" and then expanded} +Also see |`=|. When the expanded argument contains a "!" and it is used for a shell command (":!cmd", ":r !cmd" or ":w !cmd"), the "!" is escaped with a backslash to @@ -972,6 +974,8 @@ for the file "$home" in the root directory. A few examples: /\$home file "$home" in root directory \\$home file "\\", followed by expanded $home +Also see |`=|. + ============================================================================== 7. Command-line window *cmdline-window* *cmdwin* *command-line-window* From e7b7f5debf1768f413cc6480a896125f631a842a Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 28 Aug 2015 21:45:41 +0900 Subject: [PATCH 677/783] Fix the untranslated word --- doc/eval.jax | 1 - doc/if_ole.jax | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index efe064613..edd464638 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6090,7 +6090,6 @@ trunc({expr}) *trunc()* {expr} をゼロ方向に切りつめた整数を |Float| で返す。 {expr} は |Float| または |Number| に評価されなければならない。 例: > - Examples: > echo trunc(1.456) < 1.0 > echo trunc(-5.456) diff --git a/doc/if_ole.jax b/doc/if_ole.jax index 9fdb9013c..a4ed6e5e5 100644 --- a/doc/if_ole.jax +++ b/doc/if_ole.jax @@ -86,7 +86,7 @@ Eval(expr) 式(expr)を実行する。 照)。戻り値は、その式を評価した結果の文字列である。リスト |List| は文字列に変 換される。そのとき各要素の間に改行が挿入され、連結される。 -Examples (Visual Basic の文法で) > +例 (Visual Basic の文法で) > Line20 = Vim.Eval("getline(20)") Twelve = Vim.Eval("6 + 6") ' これが文字列であることに注意 Font = Vim.Eval("&guifont") From be0cc30bfa76aacca25265ce4d8183c477a8bec3 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 29 Aug 2015 13:07:21 +0900 Subject: [PATCH 678/783] Update windows.txt --- doc/windows.jax | 68 ++++++++++++++++++++++++++----------------------- en/farsi.txt | 2 +- en/windows.txt | 59 +++++++++++++++++++++++++----------------- 3 files changed, 72 insertions(+), 57 deletions(-) diff --git a/doc/windows.jax b/doc/windows.jax index 66e0a554e..d50b4de3b 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -1063,40 +1063,41 @@ CTRL-W g } *CTRL-W_g}* 用できる。バッファ名中のスペースの前にはバックスラッシュを入れ る必要がある。 -:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86* +:[N]b[uffer][!] [+cmd] [N] *:b* *:bu* *:buf* *:buffer* *E86* バッファリストのバッファ[N]を編集する。 [N]が与えられなけれ ば、そのままカレントバッファが編集される。 [!]については |:buffer-!| を参照。これはバッファリストにないバッファも 'buflisted' フラグを設定することなく編集する。 + |+cmd| も参照。 -:[N]b[uffer][!] {bufname} +:[N]b[uffer][!] [+cmd] {bufname} バッファリストの {bufname} のバッファを編集する。 [!]について は |:buffer-!| を参照。これはバッファリストにないバッファも 'buflisted' フラグを設定することなく編集する。 + |+cmd| も参照。 - -:[N]sb[uffer] [N] *:sb* *:sbuffer* +:[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer* ウィンドウを分割しバッファリストのバッファ[N]を編集する。 [N] が与えられなければ、そのままカレントバッファが編集される。ウィ ンドウ分割の際には、'switchbuf' の "useopen" の設定に従う。 これはバッファリストにないバッファも 'buflisted' フラグを設定 することなく編集する。 - Note: 別名でカレントバッファのコピーを作って、それを別のウィン - ドウで表示したいのなら、次のようにすること: > - :w foobar | sp # + |+cmd| も参照。 -:[N]sb[uffer] {bufname} +:[N]sb[uffer] [+cmd] {bufname} ウィンドウを分割しバッファリストの {bufname} バッファを編集す る。これはバッファリストにないバッファも 'buflisted' フラグを 設定することなく編集する。 Note: やりたいことがバッファの分割である場合、別の名前でコピー を作成し、この方法で行うことができる: > :w foobar | sp # +< |+cmd| も参照。 -:[N]bn[ext][!] [N] *:bn* *:bnext* *E87* +:[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87* バッファリスト中の[N]個先のバッファへ移動する。 [N] のデフォル ト値は1である。バッファリストの最後に到達したら、先頭に戻って バッファを探す。 [!]については |:buffer-!| を参照。 + |+cmd| も参照。 ヘルプバッファにいる場合、(もし有れば)次のヘルプバッファへ移動 する。同様に、通常の(ヘルプではない)バッファにいる場合、次の通 常のバッファへ移動する。従って、ヘルプウィンドウを表示していて @@ -1104,57 +1105,60 @@ CTRL-W g } *CTRL-W_g}* ならない。次の3つのコマンドも同じように動作する。 *:sbn* *:sbnext* -:[N]sbn[ext] [N] +:[N]sbn[ext] [+cmd] [N] ウィンドウを分割しバッファリストの[N]個先のバッファへ移動す る。バッファリストの最後に到達したら、先頭に戻ってバッファを探 す。ウィンドウ分割の際には、'switchbuf' の "useopen" 設定に従 - う。 + う。|+cmd| も参照。 -:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* -:[N]bp[revious][!] [N] +:[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* +:[N]bp[revious][!] [+cmd] [N] バッファリスト中の[N]個前のバッファへ移動する。 [N] のデフォル ト値は1である。バッファリストの先頭に到達したら、最後に戻って バッファを探す。 [!]については |:buffer-!| を参照。'switchbuf' - も参照。 + も参照。|+cmd| も参照。 -:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* -:[N]sbp[revious] [N] +:[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* +:[N]sbp[revious] [+cmd] [N] ウィンドウを分割しバッファリストの[N]個前のバッファへ移動す る。バッファリストの先頭に到達したら、最後に戻ってバッファを探 す。ウィンドウ分割の際には、'switchbuf' の "useopen" 設定に従 - う。 + う。|+cmd| も参照。 - *:br* *:brewind* -:br[ewind][!] バッファリスト中の先頭のバッファへ移動する。 [!]については - |:buffer-!| を参照。 +:br[ewind][!] [+cmd] *:br* *:brewind* + バッファリスト中の先頭のバッファへ移動する。バッファリストが空 + の場合はリストされていない最初のバッファに移動する。 [!]につい + ては|:buffer-!| を参照。 - *:bf* *:bfirst* -:bf[irst] ":brewind" と同じ。 +:bf[irst] [+cmd] *:bf* *:bfirst* + |:brewind| と同じ。 + |+cmd| も参照。 - *:sbr* *:sbrewind* -:sbr[ewind] ウィンドウを分割してバッファリスト中の先頭のバッファへ移動す +:sbr[ewind] [+cmd] *:sbr* *:sbrewind* + ウィンドウを分割してバッファリスト中の先頭のバッファへ移動す る。バッファリストが空の場合はリストされていない最初のバッファ へ移動する。'switchbuf' オプションの設定に従う。 + |+cmd| も参照。 - *:sbf* *:sbfirst* -:sbf[irst] ":sbrewind" と同じ。 +:sbf[irst] [+cmd] *:sbf* *:sbfirst* + ":sbrewind" と同じ。 - *:bl* *:blast* -:bl[ast][!] バッファリスト中の最後のバッファへ移動する。 バッファリストが +:bl[ast][!] [+cmd] *:bl* *:blast* + バッファリスト中の最後のバッファへ移動する。 バッファリストが 空の場合はリストされていない最初のバッファへ移動する。'[!]につ いては|:buffer-!| を参照。 - *:sbl* *:sblast* -:sbl[ast] ウィンドウを分割してバッファリスト中の最後のバッファへ移動す +:sbl[ast] [+cmd] *:sbl* *:sblast* + ウィンドウを分割してバッファリスト中の最後のバッファへ移動す る。バッファリストが空の場合はリストされていない最初のバッファ へ移動する。'switchbuf' オプションの設定に従う。 -:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84* +:[N]bm[odified][!] [+cmd] [N] *:bm* *:bmodified* *E84* バッファリスト中の[N]個先の編集中のバッファへ移動する。 Note:このコマンドはリストされていないバッファも見つける。変更 されているバッファがない場合はコマンドは失敗する。 -:[N]sbm[odified] [N] *:sbm* *:sbmodified* +:[N]sbm[odified] [+cmd] [N] *:sbm* *:sbmodified* ウィンドウを分割し、バッファリスト中の[N]個先の編集中のバッ ファへ移動する。'switchbuf' オプションの設定に従う。 Note:このコマンドはリストされていないバッファも見つける。 diff --git a/en/farsi.txt b/en/farsi.txt index 77ec419d1..c901d9272 100644 --- a/en/farsi.txt +++ b/en/farsi.txt @@ -222,7 +222,7 @@ o Keyboard Note: � stands for Farsi PSP (break without space) - � stands for Farsi PCN (for HAMZE attribute ) + � stands for Farsi PCN (for HAMZE attribute) Restrictions ------------ diff --git a/en/windows.txt b/en/windows.txt index 4ba28a3c0..00fe956dd 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1042,36 +1042,41 @@ list of buffers. |unlisted-buffer| a number). Insert a backslash before a space in a buffer name. -:[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86* +:[N]b[uffer][!] [+cmd] [N] *:b* *:bu* *:buf* *:buffer* *E86* Edit buffer [N] from the buffer list. If [N] is not given, the current buffer remains being edited. See |:buffer-!| for [!]. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. + Also see ||+cmd|. -:[N]b[uffer][!] {bufname} +:[N]b[uffer][!] [+cmd] {bufname} Edit buffer for {bufname} from the buffer list. See |:buffer-!| for [!]. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. + Also see ||+cmd|. -:[N]sb[uffer] [N] *:sb* *:sbuffer* +:[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer* Split window and edit buffer [N] from the buffer list. If [N] is not given, the current buffer is edited. Respects the "useopen" setting of 'switchbuf' when splitting. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. + Also see ||+cmd|. -:[N]sb[uffer] {bufname} +:[N]sb[uffer] [+cmd] {bufname} Split window and edit buffer for {bufname} from the buffer list. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. Note: If what you want to do is split the buffer, make a copy under another name, you can do it this way: > :w foobar | sp # +< Also see ||+cmd|. -:[N]bn[ext][!] [N] *:bn* *:bnext* *E87* +:[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87* Go to [N]th next buffer in buffer list. [N] defaults to one. Wraps around the end of the buffer list. See |:buffer-!| for [!]. + Also see ||+cmd|. If you are in a help buffer, this takes you to the next help buffer (if there is one). Similarly, if you are in a normal (non-help) buffer, this takes you to the next normal buffer. @@ -1079,55 +1084,61 @@ list of buffers. |unlisted-buffer| the way when you're browsing code/text buffers. The next three commands also work like this. + *:sbn* *:sbnext* -:[N]sbn[ext] [N] +:[N]sbn[ext] [+cmd] [N] Split window and go to [N]th next buffer in buffer list. Wraps around the end of the buffer list. Uses 'switchbuf' + Also see ||+cmd|. -:[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* -:[N]bp[revious][!] [N] +:[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* +:[N]bp[revious][!] [+cmd] [N] Go to [N]th previous buffer in buffer list. [N] defaults to one. Wraps around the start of the buffer list. See |:buffer-!| for [!] and 'switchbuf'. + Also see ||+cmd|. -:[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* -:[N]sbp[revious] [N] +:[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* +:[N]sbp[revious] [+cmd] [N] Split window and go to [N]th previous buffer in buffer list. Wraps around the start of the buffer list. Uses 'switchbuf'. + Also see ||+cmd|. - *:br* *:brewind* -:br[ewind][!] Go to first buffer in buffer list. If the buffer list is +:br[ewind][!] [+cmd] *:br* *:brewind* + Go to first buffer in buffer list. If the buffer list is empty, go to the first unlisted buffer. See |:buffer-!| for [!]. - *:bf* *:bfirst* -:bf[irst] Same as ":brewind". +:bf[irst] [+cmd] *:bf* *:bfirst* + Same as |:brewind|. + Also see |+cmd|. - *:sbr* *:sbrewind* -:sbr[ewind] Split window and go to first buffer in buffer list. If the +:sbr[ewind] [+cmd] *:sbr* *:sbrewind* + Split window and go to first buffer in buffer list. If the buffer list is empty, go to the first unlisted buffer. Respects the 'switchbuf' option. + Also see |+cmd|. - *:sbf* *:sbfirst* -:sbf[irst] Same as ":sbrewind". +:sbf[irst] [+cmd] *:sbf* *:sbfirst* + Same as ":sbrewind". - *:bl* *:blast* -:bl[ast][!] Go to last buffer in buffer list. If the buffer list is +:bl[ast][!] [+cmd] *:bl* *:blast* + Go to last buffer in buffer list. If the buffer list is empty, go to the last unlisted buffer. See |:buffer-!| for [!]. - *:sbl* *:sblast* -:sbl[ast] Split window and go to last buffer in buffer list. If the +:sbl[ast] [+cmd] *:sbl* *:sblast* + Split window and go to last buffer in buffer list. If the buffer list is empty, go to the last unlisted buffer. Respects 'switchbuf' option. -:[N]bm[odified][!] [N] *:bm* *:bmodified* *E84* +:[N]bm[odified][!] [+cmd] [N] *:bm* *:bmodified* *E84* Go to [N]th next modified buffer. Note: this command also finds unlisted buffers. If there is no modified buffer the command fails. -:[N]sbm[odified] [N] *:sbm* *:sbmodified* +:[N]sbm[odified] [+cmd] [N] *:sbm* *:sbmodified* Split window and go to [N]th next modified buffer. Respects 'switchbuf' option. Note: this command also finds buffers not in the buffer list. From 3f8fcecf5f0b2161f9221d4a6de6440fb716a81a Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 29 Aug 2015 14:39:28 +0900 Subject: [PATCH 679/783] Improve translation --- doc/windows.jax | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/windows.jax b/doc/windows.jax index d50b4de3b..a8680d409 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -1088,8 +1088,8 @@ CTRL-W g } *CTRL-W_g}* ウィンドウを分割しバッファリストの {bufname} バッファを編集す る。これはバッファリストにないバッファも 'buflisted' フラグを 設定することなく編集する。 - Note: やりたいことがバッファの分割である場合、別の名前でコピー - を作成し、この方法で行うことができる: > + Note: 別名でカレントバッファのコピーを作って、それを別のウィン + ドウで表示したいのなら、次のようにすること: > :w foobar | sp # < |+cmd| も参照。 @@ -1104,6 +1104,7 @@ CTRL-W g } *CTRL-W_g}* も、コード/テキストバッファを次々と表示する際にヘルプが邪魔に ならない。次の3つのコマンドも同じように動作する。 + *:sbn* *:sbnext* :[N]sbn[ext] [+cmd] [N] ウィンドウを分割しバッファリストの[N]個先のバッファへ移動す @@ -1128,7 +1129,7 @@ CTRL-W g } *CTRL-W_g}* :br[ewind][!] [+cmd] *:br* *:brewind* バッファリスト中の先頭のバッファへ移動する。バッファリストが空 の場合はリストされていない最初のバッファに移動する。 [!]につい - ては|:buffer-!| を参照。 + ては |:buffer-!| を参照。 :bf[irst] [+cmd] *:bf* *:bfirst* |:brewind| と同じ。 @@ -1146,7 +1147,7 @@ CTRL-W g } *CTRL-W_g}* :bl[ast][!] [+cmd] *:bl* *:blast* バッファリスト中の最後のバッファへ移動する。 バッファリストが 空の場合はリストされていない最初のバッファへ移動する。'[!]につ - いては|:buffer-!| を参照。 + いては |:buffer-!| を参照。 :sbl[ast] [+cmd] *:sbl* *:sblast* ウィンドウを分割してバッファリスト中の最後のバッファへ移動す From e95c4edaa897200f97f0ce97eedb374f562a0022 Mon Sep 17 00:00:00 2001 From: Kenichi Ito <ken.i54k@gmail.com> Date: Tue, 1 Sep 2015 21:10:25 +0900 Subject: [PATCH 680/783] Remove unnecessary line break --- doc/options.jax | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 2539e8a93..95332a1b5 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -2429,8 +2429,6 @@ Note 1番目の形式では、行全体がオプション指定に使われる "msg" と "throw" はオプション 'foldexpr' や 'formatexpr', 'indentexpr' をデバッグするのに便利である。 - - *'define'* *'def'* 'define' 'def' 文字列 (既定では "^\s*#\s*define") グローバル/バッファについてローカル |global-local| From 563f79d38f9ebd4e34c5ae492e252a8229522c8d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 4 Sep 2015 21:22:42 +0900 Subject: [PATCH 681/783] Update 'lcs' --- doc/options.jax | 37 ++++++++++++++++++++----------------- en/options.txt | 27 ++++++++++++++++----------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 95332a1b5..5b8a2cd08 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4823,33 +4823,36 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} 'list' モードと |:list| コマンドでの表示に使われる文字を設定する。値は 指定文字列のコンマ区切りのリストである。 - *lcs-eol* + *lcs-eol* eol:文字 行末の表示に使われる文字。指定されないと、行末には何も 表示されない。 - *lcs-tab* + *lcs-tab* tab:2文字 タブ文字の表示に使われる文字。1文字目は1回だけ使われる。 2文字目はタブが通常占めるだけの空白を埋めるまで繰り返 し表示される。 "tab:>-" とすると、タブが4文字の設定では ">---" となる。 指定されないと、タブは ^I と表示される。 - *lcs-trail* - trail:文字 行末の空白の表示に使われる文字。指定されないと、行末の - 空白は何も見えない。 - *lcs-extends* + *lcs-space* + space:文字 スペースの表示に使われる文字。指定されないと、スペース + は空白のまま。 + *lcs-trail* + trail:文字 行末のスペースの表示に使われる文字。指定されないと、行 + 末のスペースは空白のまま。行末のスペースでは "space" + の設定は無視される。 + *lcs-extends* extends:文字 'wrap' がオフで、行が画面の右端よりも伸びているときに、 最終列に表示される文字。 - *lcs-precedes* - precedes:文字 'wrap' がオフで、最前列で表示されている最初 - の文字より前にテキストが存在するとき {訳注: 上の行の末 - 尾が画面の右端より伸びているとき} に、最前列に表 - 示される文字。 - *lcs-conceal* + *lcs-precedes* + precedes:文字 'wrap' がオフで、最前列で表示されている最初の文字より + 前にテキストが存在するとき {訳注: 上の行の末尾が画面の + 右端より伸びているとき} に、最前列に表示される文字。 + *lcs-conceal* conceal:文字 'conceallevel' が 1 のときに Conceal されたテキストの 代わりに表示される文字。 - *lcs-nbsp* - nbsp:文字 non-breakable な空白(文字 0xA0, 160)を示す文字。 - 指定されない場合は空白のまま。 - {訳注: 0xA0はLatin1でnon-breakableな空白を表す} + *lcs-nbsp* + nbsp:文字 ノーブレークスペース文字 (0xA0 (10進数では160) や + U+202F) の表示に使われる文字。指定されない場合は空白の + まま。{訳注: 0xA0はLatin1で改行なしスペースを表す} 文字 ':' と ',' は使えない。'encoding' が "utf-8" のときはUTF-8の文字 が使える。そうでないときはprintableな文字 {訳注: 文書先頭を参照} だけ @@ -4859,7 +4862,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる :set lcs=tab:>-,eol:<,nbsp:% :set lcs=extends:>,precedes:< < "eol", "extends", "precedes" には強調表示グループ "NonText" が、 - "nbsp", "tab" と "trail" には "SpecialKey" が適用される。 + "nbsp", "space", "tab" , "trail" には "SpecialKey" が適用される。 |hl-NonText| |hl-SpecialKey| *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'* diff --git a/en/options.txt b/en/options.txt index d400cd24b..9423f43d5 100644 --- a/en/options.txt +++ b/en/options.txt @@ -4699,33 +4699,38 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Strings to use in 'list' mode and for the |:list| command. It is a comma separated list of string settings. - *lcs-eol* + *lcs-eol* eol:c Character to show at the end of each line. When omitted, there is no extra character at the end of the line. - *lcs-tab* + *lcs-tab* tab:xy Two characters to be used to show a tab. The first char is used once. The second char is repeated to fill the space that the tab normally occupies. "tab:>-" will show a tab that takes four spaces as ">---". When omitted, a tab is show as ^I. - *lcs-trail* + *lcs-space* + space:c Character to show for a space. When omitted, spaces + are left blank. + *lcs-trail* trail:c Character to show for trailing spaces. When omitted, - trailing spaces are blank. - *lcs-extends* + trailing spaces are blank. Overrides the "space" + setting for trailing spaces. + *lcs-extends* extends:c Character to show in the last column, when 'wrap' is off and the line continues beyond the right of the screen. - *lcs-precedes* + *lcs-precedes* precedes:c Character to show in the first column, when 'wrap' is off and there is text preceding the character visible in the first column. - *lcs-conceal* + *lcs-conceal* conceal:c Character to show in place of concealed text, when 'conceallevel' is set to 1. - *lcs-nbsp* - nbsp:c Character to show for a non-breakable space (character - 0xA0, 160). Left blank when omitted. + *lcs-nbsp* + nbsp:c Character to show for a non-breakable space character + (0xA0 (160 decimal) and U+202F). Left blank when + omitted. The characters ':' and ',' should not be used. UTF-8 characters can be used when 'encoding' is "utf-8", otherwise only printable @@ -4736,7 +4741,7 @@ A jump table for the options with a short description can be found at |Q_op|. :set lcs=tab:>-,eol:<,nbsp:% :set lcs=extends:>,precedes:< < The "NonText" highlighting will be used for "eol", "extends" and - "precedes". "SpecialKey" for "nbsp", "tab" and "trail". + "precedes". "SpecialKey" for "nbsp", "space", "tab" and "trail". |hl-NonText| |hl-SpecialKey| *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'* From c05fb254c54d74482824e67335fe64b6e57faaef Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 4 Sep 2015 23:14:28 +0900 Subject: [PATCH 682/783] Fix translation --- doc/options.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/options.jax b/doc/options.jax index 5b8a2cd08..083a124a7 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4838,7 +4838,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる *lcs-trail* trail:文字 行末のスペースの表示に使われる文字。指定されないと、行 末のスペースは空白のまま。行末のスペースでは "space" - の設定は無視される。 + の設定を上書きする。 *lcs-extends* extends:文字 'wrap' がオフで、行が画面の右端よりも伸びているときに、 最終列に表示される文字。 From 8ae4de98d2831611990d3db2096024cfd6ccd275 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 5 Sep 2015 16:28:12 +0900 Subject: [PATCH 683/783] Update motion.txt and repeat.txt --- doc/motion.jax | 8 +++++--- doc/repeat.jax | 10 +++++++--- en/motion.txt | 4 +++- en/repeat.txt | 6 +++++- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/doc/motion.jax b/doc/motion.jax index c93b69163..05384dbd2 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -1,4 +1,4 @@ -*motion.txt* For Vim バージョン 7.4. Last change: 2014 Feb 11 +*motion.txt* For Vim バージョン 7.4. Last change: 2015 Jun 06 VIMリファレンスマニュアル by Bram Moolenaar @@ -162,7 +162,7 @@ CTRL-V オペレータコマンドと移動コマンドの間で使われたと h or *h* <Left> or *<Left>* CTRL-H or *CTRL-H* *<BS>* -<BS> [count] 文字左に移動します|exclusive| +<BS> [count] 文字左に移動します|exclusive|。 Note: <BS> キーには文字を削除させたければ次のマッピン グを使ってください: :map CTRL-V<BS> X @@ -173,7 +173,9 @@ CTRL-H or *CTRL-H* *<BS>* l or *l* <Right> or *<Right>* *<Space>* -<Space> [count] 文字右に移動します|exclusive| +<Space> [count] 文字右に移動します|exclusive|。 + 行末での挙動を調節するにはオプション 'whichwrap' を参 + 照して下さい。 *0* 0 その行の最初の文字に移動します|exclusive|。 diff --git a/doc/repeat.jax b/doc/repeat.jax index 930b37d71..9c18d9d37 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -1,4 +1,4 @@ -*repeat.txt* For Vim バージョン 7.4. Last change: 2014 Mar 25 +*repeat.txt* For Vim バージョン 7.4. Last change: 2015 Apr 13 VIMリファレンスマニュアル by Bram Moolenaar @@ -59,7 +59,10 @@ しかしアルファベット、'\'、'"'、'|' は使えない。 これは、検索パターンや置換文字列に '/' が含まれる場合に便利である。 -パターンの定義については |pattern|を参照。 +パターンの定義については |pattern| を参照。 + +NOTE [cmd] は範囲指定を含むかもしれない。実例は |collapse| や +|edit-paragraph-join| を参照。 globalコマンドの動作はまず第1に[range]の行をスキャンしマッチした行すべてに印を つける(複数行にかかるパターンではマッチの最初の行だけが重要である)。 @@ -557,7 +560,7 @@ Note 関数はまず読み込まれ、後で実行される。読み込まれた 使わず、ユーザーから直接デバッグモードコマンドを受け取る。 ============================================================================== -6. プロファイリング *profile* *profiling* +6. プロファイリング *profile* *profiling* プロファイリングとは、関数やスクリプトの実行にかかる時間を計測することである。 これを行うには |+profile| 機能が必要である。 @@ -578,6 +581,7 @@ Note 関数はまず読み込まれ、後で実行される。読み込まれた :prof[ile] start {fname} *:prof* *:profile* *E750* プロファイリングを開始し、終了時に出力を {fname} に出力する。 + {fname} 中の "~/" や環境変数は展開される。 {fname} がすでに存在するときは、警告なしに上書きされる。 変数 |v:profiling| に 1 が代入される。 diff --git a/en/motion.txt b/en/motion.txt index eaa2d8df3..97160ad4d 100644 --- a/en/motion.txt +++ b/en/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.4. Last change: 2014 Feb 11 +*motion.txt* For Vim version 7.4. Last change: 2015 Jun 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -172,6 +172,8 @@ CTRL-H or *CTRL-H* *<BS>* l or *l* <Right> or *<Right>* *<Space>* <Space> [count] characters to the right. |exclusive| motion. + See the 'whichwrap' option for adjusting the behavior + at end of line *0* 0 To the first character of the line. |exclusive| diff --git a/en/repeat.txt b/en/repeat.txt index 9209edbec..af3a5182a 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.4. Last change: 2014 Mar 25 +*repeat.txt* For Vim version 7.4. Last change: 2015 Apr 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -64,6 +64,9 @@ replacement string. For the definition of a pattern, see |pattern|. +NOTE [cmd] may contain a range; see |collapse| and |edit-paragraph-join| for +examples. + The global commands work by first scanning through the [range] lines and marking each line where a match occurs (for a multi-line pattern, only the start of the match matters). @@ -597,6 +600,7 @@ For example, to profile the one_script.vim script file: > :prof[ile] start {fname} *:prof* *:profile* *E750* Start profiling, write the output in {fname} upon exit. + "~/" and environment variables in {fname} will be expanded. If {fname} already exists it will be silently overwritten. The variable |v:profiling| is set to one. From de8cf5fc9e7728b37dc726bdf35c9c31b84dafb7 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 5 Sep 2015 18:51:22 +0900 Subject: [PATCH 684/783] Fix indent --- doc/pattern.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index fc9ef6ae3..96b71fc8c 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -1280,7 +1280,7 @@ Vim では、'^' と '$' は常に中間の改行にもマッチします。最 - 正規表現にマッチしたものとして返される範囲を設定する: \zs \ze ============================================================================== -10. マッチしたテキストを強調する *match-highlight* +10. マッチしたテキストを強調する *match-highlight* *:mat* *:match* :mat[ch] {group} /{pattern}/ From 50bbd3b1df1299aad8c2e7ecb75aad3801079aa3 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 5 Sep 2015 19:15:03 +0900 Subject: [PATCH 685/783] Update change.txt --- doc/change.jax | 107 ++++++++++++++++++++++++++++++++++++------------- en/change.txt | 107 ++++++++++++++++++++++++++++++++++++------------- 2 files changed, 160 insertions(+), 54 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index 139c01dd0..b6231f1b7 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -1,4 +1,4 @@ -*change.txt* For Vim バージョン 7.4. Last change: 2014 Jun 26 +*change.txt* For Vim バージョン 7.4. Last change: 2015 Aug 04 VIMリファレンスマニュアル by Bram Moolenaar @@ -364,13 +364,46 @@ g?? 現在行をRot13エンコードする。 {Vi にはない} 加算と減算 ~ *CTRL-A* -CTRL-A カーソルの下または後の数またはアルファベットに [count] - を加える。 {Vi にはない} +CTRL-A カーソルの下または後の数字またはアルファベットに + [count] を加える。 {Vi にはない} + + *v_CTRL-A* +{Visual}CTRL-A ビジュアル選択されたテキスト中の数字またはアル + ファベットに [count] を加える。{Vi にはない} + + *v_g_CTRL-A* +{Visual}g CTRL-A ビジュアル選択されたテキスト中の数字またはアル + ファベットに [count] を加える。複数行がビジュアル選択 + されている場合、各行は付加された [count] ごとに増やさ + れる (そのため効果的に [count] ごとに増加する配列を作 + れるのである)。 {Vi にはない} + 例えば、このような数字のリストがあるとする: + 1. ~ + 1. ~ + 1. ~ + 1. ~ + 2番目の "1." に移動し3行をビジュアル選択してから g + CTRL-A を押すと、このようになる: + 1. ~ + 2. ~ + 3. ~ + 4. ~ *CTRL-X* -CTRL-X カーソルの下または後の数またはアルファベットから +CTRL-X カーソルの下または後の数字またはアルファベットから [count] を減じる。 {Vi にはない} + *v_CTRL-X* +{Visual}CTRL-X ビジュアル選択されたテキスト中の数字またはアル + ファベットから [count] を減じる。 {Vi にはない} + + *v_g_CTRL-X* +{Visual}g CTRL-X ビジュアル選択されたテキスト中の数字またはアル + ファベットから [count] を減じる。複数行がビジュアル選 + 択されている場合、各値は付加された [count] ごとに減ら + される (そのため効果的に [count] ごとに減少する配列を + 作れるのである)。 {Vi にはない} + コマンド CTRL-A と CTRL-X は(符号付)10進数と符号なし8進/16進数、アルファベッ トに対し機能する。この動作はオプション 'nrformats' に依存する。 - 'nrformats' が "octal" を含むときは、Vimは '0' で始まり、'8' や '9' を含まな @@ -385,6 +418,10 @@ CTRL-X カーソルの下または後の数またはアルファベットか を変更する。これはアルファベットのインデックスつきのリストを作るときに便利で ある。 +10進数では先頭の負の符号は増加/減少に対して考慮される。8進数と16進数では考慮さ +れない。 +符号を無視するには CTRL-A または CTRL-X を使う前に数字をビジュアル選択する。 + ゼロから始まる数 (全ての8進数、16進数を含む) に対して、Vimはできる限りその数の 文字数を保とうとする。"0077" 上で CTRL-A を使うと "0100" となり、"0x100" 上で CTRL-X を使うと "0x0ff" となる。 @@ -577,9 +614,9 @@ MS-Windows ではシステム関数 GetTempFileName() が使われる。 (|:s_flags|を参照)。 Note `:substitute` の後ではフラグ '&' は使えないことに 注意。パターンの区切り文字だと認識されてしまう。 - `:substitute` とフラグ 'c', 'g', 'r' の間の空白は必要 - 不可欠ではない。しかしスクリプト内では、混乱しないよう - に空白を入れておくのはよい考えである。 + `:substitute` とフラグ 'c', 'g', 'i', 'I', 'r' の間の + 空白は必要不可欠ではない。しかしスクリプト内では、混乱 + しないように空白を入れておくのはよい考えである。 :[range]~[&][flags] [count] *:~* 最後の置換を同じ置換文字列で、最後の検索パターン {訳注: @@ -1064,16 +1101,17 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト 行単位のコピーコマンドではカーソルは選択の最初の行に置かれるが、カラムは変更さ れない。なのでその位置はコピーされた最初の文字の上ではないかもしれない。 -レジスタには 9 種類ある: *registers* *E354* +レジスタには 10 種類ある: *registers* *E354* 1. 無名レジスタ "" 2. 10個の番号付きレジスタ "0 から "9 3. 小削除用レジスタ "- 4. 26個の名前付きレジスタ "a から "z または "A から "Z -5. 4個の読み取り専用レジスタ ": と ". と "% と "# -6. expression 用レジスタ "= -7. 選択領域用レジスタ "* と "+ と "~ -8. 消去専用レジスタ "_ -9. 最終検索パターン用レジスタ "/ +5. 3個の読み取り専用レジスタ ": と ". と "% +6. 代替バッファ用レジスタ "# +7. expression 用レジスタ "= +8. 選択領域用レジスタ "* と "+ と "~ +9. 消去専用レジスタ "_ +10. 最終検索パターン用レジスタ "/ 1. 無名レジスタ "" *quote_quote* *quotequote* このレジスタには、コマンド "d", "c", "s", "x" 等で削除されたテキストや、"y" 等 @@ -1120,7 +1158,7 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト 容の後ろに新しいテキストを付け加える。'cpoptions' にフラグ '>' が入っていると、 新しいテキストの前に改行が挿入される。 -5. 読みとり専用レジスタ ": と ". と "% と "# +5. 読みとり専用レジスタ ": と ". と "% 読みとり専用レジスタには '%' と '#' と ':' と '.' がある。コマンド "p", "P", ":put" および CTRL-R でのみ使うことができる。 {Vi にはない} *quote_.* *quote.* *E29* @@ -1132,8 +1170,6 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト する)。 *quote_%* *quote%* "% カレントファイルの名前が蓄えられる。 - *quote_#* *quote#* - "# 代替ファイルの名前が蓄えられる。 *quote_:* *quote:* *E30* ": 一番最近に実行されたコマンドラインの内容が蓄えられる。例: 前回 のコマンドラインによるコマンドを実行するには、"@:" が使える。 @@ -1143,15 +1179,32 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト 変化はない。 {Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効} -6. Expression レジスタ "= *quote_=* *quote=* *@=* + *quote_#* *quote#* +6. 代替ファイルレジスタ "# +カレントウィンドウの代替ファイルの名前を含む。これは |CTRL-^| コマンドがどのよ +うに働くかを変更する。 +このレジスタは書き込み可能で、主にプラグインがこのレジスタを変更した後で元に戻すためである。バッファ番号を許容する: > + let altbuf = bufnr(@#) + ... + let @# = altbuf +バッファ番号が越えるあるいはそのバッファが存在しない場合はエラー |E86| を返 +す。 +また存在するバッファ名でのマッチングを許容する: > + let @# = 'buffer_name' +与えられた名前にマッチしたバッファが1つより多い場合はエラー |E93| を、与えられ +た名前にマッチするバッファがない場合は |E94| を返す。 + +7. Expression レジスタ "= *quote_=* *quote=* *@=* これは、本当はテキストを蓄えるレジスタではないが、レジスタを使うコマンドで式 -を評価するために使える。この expression レジスタは読み取り専用である。 -これにはテキストをコピーできない。'=' を打ち込むと、カーソルはコマンド行に移 -動し、あらゆる式を入力することができる (|expression| を参照)。コマンドライン -から入力できる普通の編集用コマンドは、式用の特別履歴も含め、全て使用可能であ -る。<CR> を打ち込んでコマンドライン入力を終了させると、式の結果が計算される。 -<Esc> を打ち込んで終了させると、式は破棄される。式が入力されないときは、(コ -マンド "/" と同様) 前回の式が使われる。 +を評価するために使える。この expression レジスタは読み取り/書き込み可能であ +る。 + +" または CTRL-R の後に '=' を打ち込むと、カーソルはコマンド行に移動し、あらゆ +る式を入力することができる (|expression| を参照)。コマンドラインから入力できる +普通の編集用コマンドは、式用の特別履歴も含め、全て使用可能である。<CR> を打ち +込んでコマンドライン入力を終了させると、式の結果が計算される。<Esc>を打ち込ん +で終了させると、式は破棄される。式が入力されないときは、(コマンド"/" と同様) +前回の式が使われる。 式を評価した結果は文字列でなければならない。評価した結果が数値なら、文字列に 変換される。"p" と ":put" コマンドの場合、結果が浮動小数点数なら文字列に変換 @@ -1162,7 +1215,7 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト --改行} の所で分割される。文字列が <NL> で終わっていたら、これは行単位のレジ スタと見なされる。 {Vi にはない} -7. 選択範囲レジスタ "* と "+ +8. 選択範囲レジスタ "* と "+ と "~ これらのレジスタは、GUIで、選択されたテキストを蓄えたり取り出すために使われる。 |quotestar| と |quoteplus| を参照。クリップボードが利用できないときは、無名レ ジスタが代わりに使われる。 Unixでは|+xterm_clipboard|が有効になっているときだ @@ -1183,12 +1236,12 @@ Note "* と "+ に区別があるのは X11 システムのみであることに Note: "~ レジスタはプレインテキストをVimにドロップしたときのみ使われる。URI のリストは内部で扱われる。 -8. 消去専用レジスタ "_ *quote_* +9. 消去専用レジスタ "_ *quote_* このレジスタを指定してテキストを削除しても、{訳注: レジスタには} 何も起こらな い。そのため、普通のレジスタに影響を与えずに削除が行える。このレジスタから貼り 付けようとしても、何も出てこない。 {Vi にはない} -9. 最終検索パターン用レジスタ "/ *quote_/* *quote/* +10. 最終検索パターン用レジスタ "/ *quote_/* *quote/* 最後に使われた検索パターンが蓄えられる。これはコマンド "n" やオプション 'hlsearch' による強調表示に使われる。 このレジスタは `:let` で変更できるので、'hlsearch' による強調表示を、実際に検 diff --git a/en/change.txt b/en/change.txt index de340ec8b..a7c8a277d 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.4. Last change: 2014 Jun 26 +*change.txt* For Vim version 7.4. Last change: 2015 Aug 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -379,10 +379,43 @@ Adding and subtracting ~ CTRL-A Add [count] to the number or alphabetic character at or after the cursor. {not in Vi} + *v_CTRL-A* +{Visual}CTRL-A Add [count] to the number or alphabetic character in + the highlighted text. {not in Vi} + + *v_g_CTRL-A* +{Visual}g CTRL-A Add [count] to the number or alphabetic character in + the highlighted text. If several lines are + highlighted, each one will be incremented by an + additional [count] (so effectively creating a + [count] incrementing sequence). {not in Vi} + For Example, if you have this list of numbers: + 1. ~ + 1. ~ + 1. ~ + 1. ~ + Move to the second "1." and Visually select three + lines, pressing g CTRL-A results in: + 1. ~ + 2. ~ + 3. ~ + 4. ~ + *CTRL-X* CTRL-X Subtract [count] from the number or alphabetic character at or after the cursor. {not in Vi} + *v_CTRL-X* +{Visual}CTRL-X Subtract [count] from the number or alphabetic + character in the highlighted text. {not in Vi} + + *v_g_CTRL-X* +{Visual}g CTRL-X Subtract [count] from the number or alphabetic + character in the highlighted text. If several lines + are highlighted, each value will be decremented by an + additional [count] (so effectively creating a [count] + decrementing sequence). {not in Vi} + The CTRL-A and CTRL-X commands work for (signed) decimal numbers, unsigned octal and hexadecimal numbers and alphabetic characters. This depends on the 'nrformats' option. @@ -399,6 +432,10 @@ octal and hexadecimal numbers and alphabetic characters. This depends on the under or after the cursor. This is useful to make lists with an alphabetic index. +For decimals a leading negative sign is considered for incrementing/ +decrementing, for octal and hex values, it won't be considered. +To ignore the sign Visually select the number before using CTRL-A or CTRL-X. + For numbers with leading zeros (including all octal and hexadecimal numbers), Vim preserves the number of characters in the number when possible. CTRL-A on "0077" results in "0100", CTRL-X on "0x100" results in "0x0ff". @@ -597,9 +634,9 @@ For other systems the tmpnam() library function is used. may add [flags], see |:s_flags|. Note that after `:substitute` the '&' flag can't be used, it's recognized as a pattern separator. - The space between `:substitute` and the 'c', 'g' and - 'r' flags isn't required, but in scripts it's a good - idea to keep it to avoid confusion. + The space between `:substitute` and the 'c', 'g', + 'i', 'I' and 'r' flags isn't required, but in scripts + it's a good idea to keep it to avoid confusion. :[range]~[&][flags] [count] *:~* Repeat last substitute with same substitute string @@ -1103,11 +1140,12 @@ There are nine types of registers: *registers* *E354* 2. 10 numbered registers "0 to "9 3. The small delete register "- 4. 26 named registers "a to "z or "A to "Z -5. four read-only registers ":, "., "% and "# -6. the expression register "= -7. The selection and drop registers "*, "+ and "~ -8. The black hole register "_ -9. Last search pattern register "/ +5. three read-only registers ":, "., "% +6. alternate buffer register "# +7. the expression register "= +8. The selection and drop registers "*, "+ and "~ +9. The black hole register "_ +10. Last search pattern register "/ 1. Unnamed register "" *quote_quote* *quotequote* Vim fills this register with text deleted with the "d", "c", "s", "x" commands @@ -1153,7 +1191,7 @@ letters to replace their previous contents or as uppercase letters to append to their previous contents. When the '>' flag is present in 'cpoptions' then a line break is inserted before the appended text. -5. Read-only registers ":, "., "% and "# +5. Read-only registers ":, ". and "% These are '%', '#', ':' and '.'. You can use them only with the "p", "P", and ":put" commands and with CTRL-R. {not in Vi} *quote_.* *quote.* *E29* @@ -1164,8 +1202,6 @@ and ":put" commands and with CTRL-R. {not in Vi} ('textwidth' and other options affect what is inserted). *quote_%* *quote%* "% Contains the name of the current file. - *quote_#* *quote#* - "# Contains the name of the alternate file. *quote_:* *quote:* *E30* ": Contains the most recent executed command-line. Example: Use "@:" to repeat the previous command-line command. @@ -1174,16 +1210,33 @@ and ":put" commands and with CTRL-R. {not in Vi} the command was completely from a mapping. {not available when compiled without the |+cmdline_hist| feature} - -6. Expression register "= *quote_=* *quote=* *@=* + *quote_#* *quote#* +6. Alternate file register "# +Contains the name of the alternate file for the current window. It will +change how the |CTRL-^| command works. +This register is writable, mainly to allow for restoring it after a plugin has +changed it. It accepts buffer number: > + let altbuf = bufnr(@#) + ... + let @# = altbuf +It will give error |E86| if you pass buffer number and this buffer does not +exist. +It can also accept a match with an existing buffer name: > + let @# = 'buffer_name' +Error |E93| if there is more than one buffer matching the given name or |E94| +if none of buffers matches the given name. + +7. Expression register "= *quote_=* *quote=* *@=* This is not really a register that stores text, but is a way to use an expression in commands which use a register. The expression register is -read-only; you cannot put text into it. After the '=', the cursor moves to -the command-line, where you can enter any expression (see |expression|). All -normal command-line editing commands are available, including a special -history for expressions. When you end the command-line by typing <CR>, Vim -computes the result of the expression. If you end it with <Esc>, Vim abandons -the expression. If you do not enter an expression, Vim uses the previous +read-write. + +When typing the '=' after " or CTRL-R the cursor moves to the command-line, +where you can enter any expression (see |expression|). All normal +command-line editing commands are available, including a special history for +expressions. When you end the command-line by typing <CR>, Vim computes the +result of the expression. If you end it with <Esc>, Vim abandons the +expression. If you do not enter an expression, Vim uses the previous expression (like with the "/" command). The expression must evaluate to a String. A Number is always automatically @@ -1196,7 +1249,7 @@ If the "= register is used for the "p" command, the String is split up at <NL> characters. If the String ends in a <NL>, it is regarded as a linewise register. {not in Vi} -7. Selection and drop registers "*, "+ and "~ +8. Selection and drop registers "*, "+ and "~ Use these registers for storing and retrieving the selected text for the GUI. See |quotestar| and |quoteplus|. When the clipboard is not available or not working, the unnamed register is used instead. For Unix systems the clipboard @@ -1218,17 +1271,17 @@ GTK GUI} Note: The "~ register is only used when dropping plain text onto Vim. Drag'n'drop of URI lists is handled internally. -8. Black hole register "_ *quote_* +9. Black hole register "_ *quote_* When writing to this register, nothing happens. This can be used to delete text without affecting the normal registers. When reading from this register, nothing is returned. {not in Vi} -9. Last search pattern register "/ *quote_/* *quote/* +10. Last search pattern register "/ *quote_/* *quote/* Contains the most recent search-pattern. This is used for "n" and 'hlsearch'. It is writable with `:let`, you can change it to have 'hlsearch' highlight other matches without actually searching. You can't yank or delete into this register. The search direction is available in |v:searchforward|. -Note that the valued is restored when returning from a function +Note that the value is restored when returning from a function |function-search-undo|. {not in Vi} @@ -1443,10 +1496,10 @@ When you hit Return in a C-comment, Vim will insert the middle comment leader for the new line: " * ". To close this comment you just have to type "/" before typing anything else on the new line. This will replace the middle-comment leader with the end-comment leader and apply any specified -alignment, leaving just " */". There is no need to hit BackSpace first. +alignment, leaving just " */". There is no need to hit Backspace first. -When there is a match with a middle part, but there also is a maching end part -which is longer, the end part is used. This makes a C style comment work +When there is a match with a middle part, but there also is a matching end +part which is longer, the end part is used. This makes a C style comment work without requiring the middle part to end with a space. Here is an example of alignment flags at work to make a comment stand out From 542679fbce9e3cbad24e8ee6514158075ebec629 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 5 Sep 2015 19:37:24 +0900 Subject: [PATCH 686/783] Fix layout --- doc/change.jax | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/change.jax b/doc/change.jax index b6231f1b7..803ce2498 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -1183,7 +1183,8 @@ Note 文字単位のコピーコマンドの後、コピーされたテキスト 6. 代替ファイルレジスタ "# カレントウィンドウの代替ファイルの名前を含む。これは |CTRL-^| コマンドがどのよ うに働くかを変更する。 -このレジスタは書き込み可能で、主にプラグインがこのレジスタを変更した後で元に戻すためである。バッファ番号を許容する: > +このレジスタは書き込み可能で、主にプラグインがこのレジスタを変更した後で元に戻 +すためである。バッファ番号を許容する: > let altbuf = bufnr(@#) ... let @# = altbuf From 6ac524c67d310e3b478919f48bbfbb8e2c2cb0e1 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 13 Sep 2015 05:52:18 +0900 Subject: [PATCH 687/783] Fix typo --- doc/eval.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index edd464638..a054b5e3a 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6413,7 +6413,7 @@ autocmd オートコマンドをサポート |autocommand| balloon_eval |balloon-eval| をサポート balloon_multiline 複数行バルーンをサポート beos BeOSバージョン -browse |:browse|をサポートし、browseが恐らく動作する +browse |:browse|をサポートし、browse()が動作する browsefilter |browsefilter| をサポート builtin_terms 幾つかの組込みターミナルが有効 byte_offset 'statusline' において 'o' がサポートされる From 4f10dcb05b596645f9f8afd0cf8a2ddaaa375ccb Mon Sep 17 00:00:00 2001 From: machakann <mckn@outlook.jp> Date: Mon, 14 Sep 2015 23:33:40 +0900 Subject: [PATCH 688/783] Improve translation Close #130 --- doc/eval.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eval.jax b/doc/eval.jax index a054b5e3a..7c5974007 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5979,7 +5979,7 @@ tabpagewinnr({tabarg} [, {arg}]) *tabpagewinnr()* {arg}は|winnr()|の場合と同じように扱われる。すなわち: - 省略するとカレントウィンドウの番号を返す。これは、このタブペー ジに入るとき使われるウィンドウである。 - - "$" とするとウィンドウ番号を返す。 + - "$" とするとウィンドウの個数を返す。 - "#" とすると前のウィンドウ番号を返す。 役に立つ例: > tabpagewinnr(1) " タブぺージ1のカレントウィンドウ From df02ba5118e8e2970075b9045649fe07a47b9c60 Mon Sep 17 00:00:00 2001 From: sgur <sgurrr@gmail.com> Date: Tue, 15 Sep 2015 13:00:49 +0900 Subject: [PATCH 689/783] Add description of OptionSet --- doc/autocmd.jax | 21 +++++++++++++++++++++ doc/eval.jax | 10 ++++++++++ en/autocmd.txt | 24 ++++++++++++++++++++++++ en/eval.txt | 9 +++++++++ 4 files changed, 64 insertions(+) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index 98c6085ba..d46ec23b6 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -267,6 +267,7 @@ Vimは以下のイベントを認識する。イベント名が大文字か小 |Syntax| オプション'syntax'がセットされたとき |EncodingChanged| オプション'encoding'が変更された後 |TermChanged| オプション'term'が変更された後 +|OptionSet| オプションが設定された後 起動と終了 |VimEnter| 全ての起動処理が終わった後 @@ -729,6 +730,26 @@ MenuPopup (マウス右ボタンで)ポップアップメニューを表示す o オペレータ実行待ち i 挿入 c コマンドライン + *OptionSet* +OptionSet オプションが設定された後。パターンは長い(短縮 + しない)オプション名に対してマッチする。 + 変数 |v:option_old| に変更前の値が格納され、 + |v:option_new| には新しく設定された値が格納さ + れ、 |v:option_type| にはオプションの変更のス + コープがグローバルかローカルかが格納される。 + |<amatch>| は対象のオプション名が設定される。 + + 'key' の変更の際にはあえてイベントが発生しない + ようにしている。 + + 使用例: 'backupdir' や 'undodir' で指定された + ディレクトが存在しているかチェックし、もしなけ + ればディレクトリを作成する。 + + Note: この自動コマンド中でオプションの値をリセ + ットするのは、プラグインの挙動を破壊するため、 + 良くない。この自動コマンドの実行は `:noa` を使 + うことで抑制することができる。 *QuickFixCmdPre* QuickFixCmdPre QuickFixコマンドが実行される前 (|:make|, |:lmake|, |:grep|, |:lgrep|, |:grepadd|, diff --git a/doc/eval.jax b/doc/eval.jax index 7c5974007..e192f67a2 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1479,6 +1479,16 @@ v:oldfiles 起動時に |viminfo| から読み込まれたファイルの名前 だろう。 {|+viminfo| 機能つきでコンパイルされたときのみ有効} + *v:option_new* +v:option_new オプションに設定された新しい値。自動コマンド |OptionSet| を実 + 行している間のみ有効。 + *v:option_old* +v:option_old オプションの以前の値。自動コマンド |OptionSet| を実行している + 間のみ有効。 + *v:option_type* +v:option_type set コマンドのスコープ。自動コマンド |OptionSet| を実行している + 間のみ有効。"global" もしくは "local" のどちらかとなる。 + *v:operator* *operator-variable* v:operator ノーマルモードにおいて最後に実行したオペレータコマンド。基本的 に1文字である。例外は <g> や <z> で始まるコマンドで、その場合 diff --git a/en/autocmd.txt b/en/autocmd.txt index 03f95cac6..18d47d9f7 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -259,6 +259,7 @@ Name triggered by ~ |Syntax| when the 'syntax' option has been set |EncodingChanged| after the 'encoding' option has been changed |TermChanged| after the value of 'term' has changed +|OptionSet| after setting any option Startup and exit |VimEnter| after doing all the startup stuff @@ -737,6 +738,29 @@ MenuPopup Just before showing the popup menu (under the o Operator-pending i Insert c Command line + *OptionSet* +OptionSet After setting an option. The pattern is + matched against the long option name. + The |v:option_old| variable indicates the + old option value, |v:option_new| variable + indicates the newly set value, the + |v:option_type| variable indicates whether + it's global or local scoped and |<amatch>| + indicates what option has been set. + + Is not triggered on startup and for the 'key' + option for obvious reasons. + + Usage example: Check for the existence of the + directory in the 'backupdir' and 'undodir' + options, create the directory if it doesn't + exist yet. + + Note: It's a bad idea to reset an option + during this autocommand, this may break a + plugin. You can always use `:noa` to prevent + triggering this autocommand. + *QuickFixCmdPre* QuickFixCmdPre Before a quickfix command is run (|:make|, |:lmake|, |:grep|, |:lgrep|, |:grepadd|, diff --git a/en/eval.txt b/en/eval.txt index c416d773c..4aeb2e417 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1527,6 +1527,15 @@ v:oldfiles List of file names that is loaded from the |viminfo| file on than String this will cause trouble. {only when compiled with the |+viminfo| feature} + *v:option_new* +v:option_new New value of the option. Valid while executing an |OptionSet| + autocommand. + *v:option_old* +v:option_old Old value of the option. Valid while executing an |OptionSet| + autocommand. + *v:option_type* +v:option_type Scope of the set command. Valid while executing an + |OptionSet| autocommand. Can be either "global" or "local" *v:operator* *operator-variable* v:operator The last operator given in Normal mode. This is a single character except for commands starting with <g> or <z>, From 6bc31b6f940a4120c340dee4eea9b95a8d8cee2f Mon Sep 17 00:00:00 2001 From: sgur <sgurrr@gmail.com> Date: Wed, 16 Sep 2015 12:34:59 +0900 Subject: [PATCH 690/783] Add descriptions of :cdo, :cfdo, :ldo, :lfdo --- doc/cmdline.jax | 4 +++ doc/editing.jax | 3 ++- doc/index.jax | 10 ++++++- doc/quickfix.jax | 70 ++++++++++++++++++++++++++++++++++++++++++++++++ doc/tabpage.jax | 3 ++- doc/windows.jax | 5 +++- en/change.txt | 2 +- en/cmdline.txt | 4 +++ en/editing.txt | 3 ++- en/index.txt | 4 +++ en/quickfix.txt | 69 +++++++++++++++++++++++++++++++++++++++++++++++ en/tabpage.txt | 3 ++- en/windows.txt | 6 +++-- 13 files changed, 177 insertions(+), 9 deletions(-) diff --git a/doc/cmdline.jax b/doc/cmdline.jax index b9fd910f9..a3b0fed9b 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -486,6 +486,8 @@ Exコマンドはいくつかの特徴を持っている。 :argdo :autocmd :bufdo + :cdo + :cfdo :command :cscope :debug @@ -496,6 +498,8 @@ Exコマンドはいくつかの特徴を持っている。 :help :helpfind :lcscope + :ldo + :lfdo :make :normal :perl diff --git a/doc/editing.jax b/doc/editing.jax index 8a2a65db7..597830351 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -840,7 +840,8 @@ Unix およびその他いくつかのシステムではバッククォートも になる。 {Vi にはない} {Vimが |+listcmds| 機能付きでコンパイル されたときのみ有効} - コマンド |:windo| や |:bufdo| も参照。 + |:windo|、|:tabdo|、|:bufdo|、|:cdo|、|:ldo|、|:cfdo| + や|:lfdo|も参照。 例: > :args *.c diff --git a/doc/index.jax b/doc/index.jax index 3d5cfdbd1..201951f98 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1159,8 +1159,12 @@ You found it, Arthur! *holy-grail* |:cbuffer| :cb[uffer] エラーメッセージを解釈し、最初のエラーへジャ ンプ |:cc| :cc 指定のエラーへジャンプ -|:cclose| :ccl[ose] クイックフィックスウィンドウを閉じる +|:cclose| :ccl[ose] QuickFixウィンドウを閉じる |:cd| :cd ディレクトリの移動 +|:cdo| :cdo QuickFixリストの各項目に対してコマンドを実 + 行する +|:cfdo| :cfd[o] QuickFixリストの各ファイルに対してコマンド + を実行する |:center| :ce[nter] 行を中央寄せに整形 |:cexpr| :cex[pr] 式からエラーを読みこみ、最初のエラーへジャンプ |:cfile| :cf[ile] エラーファイルを読み込み最初のエラーへジャンプ @@ -1332,6 +1336,10 @@ You found it, Arthur! *holy-grail* |:lchdir| :lch[dir] ウィンドウのカレントディレクトリを変更する |:lclose| :lcl[ose] ロケーションウィンドウを閉じる |:lcscope| :lcs[cope] ":cscope" と同様だがロケーションリストを使う +|:ldo| :ld[o] ロケーションリストの各項目に対してコマンドを実 + 行する +|:lfdo| :lfd[o] ロケーションリストの各ファイルに対してコマンド + を実行する |:left| :le[ft] 行を左寄せに整形 |:leftabove| :lefta[bove] ウィンドウが左もしくは上に分割されるようにする |:let| :let 変数またはオプションに値を設定する diff --git a/doc/quickfix.jax b/doc/quickfix.jax index 881c0004d..564de6a1c 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -282,6 +282,76 @@ Vimが|+autocmd|機能つきでビルドされている場合、QuickFixコマ au QuickfixCmdPost make call QfMakeConv() +QuickFixリストやロケーションリスト中のバッファに対してコマンドを実行: + *:cdo* +:cdo[!] {cmd} QuickFix リスト中の有効な各項目に対して {cmd} を実行す + る。以下の操作と同様に動作する: > + :cfirst + :{cmd} + :cnext + :{cmd} + etc. +< カレントファイルが破棄できず(|abandon|)、かつ[!] が与 + えられない場合、このコマンドは失敗する。 + 1つのバッファに対してエラーが検出されると、それ以降 + のバッファに対しては実行されない。 + 最後のバッファ (またはエラーが起こったバッファ) がカレ + ントウィンドウになる。 + {cmd} の中では '|' で複数のコマンドを連結できる。 + い。 + + QuickFixリスト中の有効な項目のみが使われる。 + 「範囲」を指定して項目を選択することができる。例: > + :10,$cdo cmd +< こうすることで1番目から9番目までをスキップできる。 + + Note: このコマンドを実行している間、Syntax 自動コマン + ドイベントが 'eventignore' に追加され、無効化される。 + これは各バッファの編集を大幅にスピードアップさせる。 + {Vi にはない} {|+listcmds| 機能なしでコンパイルされた + 場合は使用できない} + |:bufdo|、|:tabdo|、|:argdo|、|:windo|、|:ldo|、|:cfdo| + や |:lfdo| も参照。 + + *:cfdo* +:cfdo[!] {cmd} QuickFixリスト中の各ファイルに対して {cmd} を実行する。 + 以下の操作と同様に動作する: > + :cfirst + :{cmd} + :cnfile + :{cmd} + etc. +< それ以外は `:cdo` の場合と同様である。 + {Vi にはない} {|+listcmds| 機能なしでコンパイルされた + 場合は使用できない} + + *:ldo* +:ld[o][!] {cmd} カレントウィンドウのロケーションリスト中の有効な各項目 + に対して {cmd} を実行する + 以下の操作と同様に動作する: > + :lfirst + :{cmd} + :lnext + :{cmd} + etc. +< ロケーションリスト中の有効な項目のみが使われる。 + それ以外は `:cdo` の場合と同様である。 + {Vi にはない} {|+listcmds| 機能なしでコンパイルされた + 場合は使用できない} + + *:lfdo* +:lfdo[!] {cmd} カレントウィンドウのロケーションリスト中の各ファイルに + 対して {cmd} を実行する + 以下の操作と同様に動作する: > + :lfirst + :{cmd} + :lnfile + :{cmd} + etc. +< それ以外は `:cdo` の場合と同様である。 + {Vi にはない} {|+listcmds| 機能なしでコンパイルされた + 場合は使用できない} + ============================================================================= 2. エラーウィンドウ *quickfix-window* diff --git a/doc/tabpage.jax b/doc/tabpage.jax index 899423b83..5a7058980 100644 --- a/doc/tabpage.jax +++ b/doc/tabpage.jax @@ -249,7 +249,8 @@ Note :Ntabmove を使うことでタブを N 番目のタブの後ろに移動 ん。 {Vi にはありません} {|+listcmds| が有効な場合のみ利用できます} - |:windo|、|:argdo|、|:bufdo| も参照してください。 + |:windo|、|:argdo|、|:bufdo|、|:cdo|,|:ldo|,|:cfdo|や|:lfdo|も + 参照してください。 ============================================================================== 3. その他 *tab-page-other* diff --git a/doc/windows.jax b/doc/windows.jax index a8680d409..242cbcf25 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -700,7 +700,8 @@ Note: ":next" は例外である。なぜならこのコマンドは Vi との {cmd} はウィンドウの開閉、並べ替えをしてはならない。 {Vi にはない} {|+listcmds| 機能なしでコンパイルされた場 合は使用できない} - |:tabdo|, |:argdo|, |:bufdo| も参照。 + |:tabdo|、|:argdo|、|:bufdo|、|:cdo|、|:ldo|、|:cfdo| + および |:lfdo|も参照。 *:bufdo* :bufdo[!] {cmd} {cmd} をバッファリスト内の各バッファに対して実行。 @@ -727,6 +728,8 @@ Note: ":next" は例外である。なぜならこのコマンドは Vi との {Vi にはない} {|+listcmds| 機能なしでコンパイルされた 場合は使用できない} |:tabdo|, |:argdo|, |:windo| も参照。 + Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|, + |:cfdo| and |:lfdo| 例: > diff --git a/en/change.txt b/en/change.txt index a7c8a277d..c05a3f2ee 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1135,7 +1135,7 @@ Rationale: In Vi the "y" command followed by a backwards motion would With a linewise yank command the cursor is put in the first line, but the column is unmodified, thus it may not be on the first yanked character. -There are nine types of registers: *registers* *E354* +There are ten types of registers: *registers* *E354* 1. The unnamed register "" 2. 10 numbered registers "0 to "9 3. The small delete register "- diff --git a/en/cmdline.txt b/en/cmdline.txt index 94fe977cc..fe2ef76ef 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -511,6 +511,8 @@ followed by another Vim command: :argdo :autocmd :bufdo + :cdo + :cfdo :command :cscope :debug @@ -521,6 +523,8 @@ followed by another Vim command: :help :helpfind :lcscope + :ldo + :lfdo :make :normal :perl diff --git a/en/editing.txt b/en/editing.txt index cbb9b90e5..3f93829ff 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -841,7 +841,8 @@ USING THE ARGUMENT LIST each file. {not in Vi} {not available when compiled without the |+listcmds| feature} - Also see |:windo|, |:tabdo| and |:bufdo|. + Also see |:windo|, |:tabdo|, |:bufdo|, |:cdo|, |:ldo|, + |:cfdo| and |:lfdo| Example: > :args *.c diff --git a/en/index.txt b/en/index.txt index e8171a90e..3949c2b57 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1138,6 +1138,8 @@ tag command action ~ |:cc| :cc go to specific error |:cclose| :ccl[ose] close quickfix window |:cd| :cd change directory +|:cdo| :cdo execute command in each valid error list entry +|:cfdo| :cfd[o] execute command in each file in error list |:center| :ce[nter] format lines at the center |:cexpr| :cex[pr] read errors from expr and jump to first |:cfile| :cf[ile] read file with error messages and jump to first @@ -1296,6 +1298,8 @@ tag command action ~ |:lchdir| :lch[dir] change directory locally |:lclose| :lcl[ose] close location window |:lcscope| :lcs[cope] like ":cscope" but uses location list +|:ldo| :ld[o] execute command in valid location list entries +|:lfdo| :lfd[o] execute command in each file in location list |:left| :le[ft] left align lines |:leftabove| :lefta[bove] make split window appear left or above |:let| :let assign a value to a variable or option diff --git a/en/quickfix.txt b/en/quickfix.txt index 22d99b908..442028358 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -299,6 +299,75 @@ use this code: > au QuickfixCmdPost make call QfMakeConv() +EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST: + *:cdo* +:cdo[!] {cmd} Execute {cmd} in each valid entry in the quickfix list. + It works like doing this: > + :cfirst + :{cmd} + :cnext + :{cmd} + etc. +< When the current file can't be |abandon|ed and the [!] + is not present, the command fails. + When an error is detected excecution stops. + The last buffer (or where an error occurred) becomes + the current buffer. + {cmd} can contain '|' to concatenate several commands. + + Only valid entries in the quickfix list are used. + A range can be used to select entries, e.g.: > + :10,$cdo cmd +< To skip entries 1 to 9. + + Note: While this command is executing, the Syntax + autocommand event is disabled by adding it to + 'eventignore'. This considerably speeds up editing + each buffer. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + Also see |:bufdo|, |:tabdo|, |:argdo|, |:windo|, + |:ldo|, |:cfdo| and |:lfdo|. + + *:cfdo* +:cfdo[!] {cmd} Execute {cmd} in each file in the quickfix list. + It works like doing this: > + :cfirst + :{cmd} + :cnfile + :{cmd} + etc. +< Otherwise it works the same as `:cdo`. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + + *:ldo* +:ld[o][!] {cmd} Execute {cmd} in each valid entry in the location list + for the current window. + It works like doing this: > + :lfirst + :{cmd} + :lnext + :{cmd} + etc. +< Only valid entries in the location list are used. + Otherwise it works the same as `:cdo`. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + + *:lfdo* +:lfdo[!] {cmd} Execute {cmd} in each file in the location list for + the current window. + It works like doing this: > + :lfirst + :{cmd} + :lnfile + :{cmd} + etc. +< Otherwise it works the same as `:ldo`. + {not in Vi} {not available when compiled without the + |+listcmds| feature} + ============================================================================= 2. The error window *quickfix-window* diff --git a/en/tabpage.txt b/en/tabpage.txt index 46e0a8fde..b98c18b02 100644 --- a/en/tabpage.txt +++ b/en/tabpage.txt @@ -248,7 +248,8 @@ LOOPING OVER TAB PAGES: {cmd} must not open or close tab pages or reorder them. {not in Vi} {not available when compiled without the |+listcmds| feature} - Also see |:windo|, |:argdo| and |:bufdo|. + Also see |:windo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo| + and |:lfdo| ============================================================================== 3. Other items *tab-page-other* diff --git a/en/windows.txt b/en/windows.txt index 00fe956dd..e081c5a71 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -676,7 +676,8 @@ can also get to them with the buffer list commands, like ":bnext". {cmd} must not open or close windows or reorder them. {not in Vi} {not available when compiled without the |+listcmds| feature} - Also see |:tabdo|, |:argdo| and |:bufdo|. + Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, + |:cfdo| and |:lfdo| *:bufdo* :bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list. @@ -702,7 +703,8 @@ can also get to them with the buffer list commands, like ":bnext". each buffer. {not in Vi} {not available when compiled without the |+listcmds| feature} - Also see |:tabdo|, |:argdo| and |:windo|. + Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|, + |:cfdo| and |:lfdo| Examples: > From ab9f9acd24f1fd4f14f1a05415a1cb5bc1c7df2d Mon Sep 17 00:00:00 2001 From: sgur <sgurrr@gmail.com> Date: Wed, 16 Sep 2015 18:31:23 +0900 Subject: [PATCH 691/783] Fix text left untranslated --- doc/editing.jax | 4 ++-- doc/quickfix.jax | 4 ++-- doc/tabpage.jax | 4 ++-- doc/windows.jax | 9 ++++----- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/doc/editing.jax b/doc/editing.jax index 597830351..b00d78f00 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -840,8 +840,8 @@ Unix およびその他いくつかのシステムではバッククォートも になる。 {Vi にはない} {Vimが |+listcmds| 機能付きでコンパイル されたときのみ有効} - |:windo|、|:tabdo|、|:bufdo|、|:cdo|、|:ldo|、|:cfdo| - や|:lfdo|も参照。 + |:windo|、|:tabdo|、|:bufdo|、|:cdo|、|:ldo|、|:cfdo|、 + |:lfdo|も参照。 例: > :args *.c diff --git a/doc/quickfix.jax b/doc/quickfix.jax index 564de6a1c..251962b7f 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -310,8 +310,8 @@ QuickFixリストやロケーションリスト中のバッファに対してコ これは各バッファの編集を大幅にスピードアップさせる。 {Vi にはない} {|+listcmds| 機能なしでコンパイルされた 場合は使用できない} - |:bufdo|、|:tabdo|、|:argdo|、|:windo|、|:ldo|、|:cfdo| - や |:lfdo| も参照。 + |:bufdo|、|:tabdo|、|:argdo|、|:windo|、|:ldo|、 + |:cfdo|、|:lfdo| も参照。 *:cfdo* :cfdo[!] {cmd} QuickFixリスト中の各ファイルに対して {cmd} を実行する。 diff --git a/doc/tabpage.jax b/doc/tabpage.jax index 5a7058980..2940ca93a 100644 --- a/doc/tabpage.jax +++ b/doc/tabpage.jax @@ -249,8 +249,8 @@ Note :Ntabmove を使うことでタブを N 番目のタブの後ろに移動 ん。 {Vi にはありません} {|+listcmds| が有効な場合のみ利用できます} - |:windo|、|:argdo|、|:bufdo|、|:cdo|,|:ldo|,|:cfdo|や|:lfdo|も - 参照してください。 + |:windo|、|:argdo|、|:bufdo|、|:cdo|、|:ldo|、|:cfdo|、|:lfdo| + も参照してください。 ============================================================================== 3. その他 *tab-page-other* diff --git a/doc/windows.jax b/doc/windows.jax index 242cbcf25..d6ed02767 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -700,8 +700,8 @@ Note: ":next" は例外である。なぜならこのコマンドは Vi との {cmd} はウィンドウの開閉、並べ替えをしてはならない。 {Vi にはない} {|+listcmds| 機能なしでコンパイルされた場 合は使用できない} - |:tabdo|、|:argdo|、|:bufdo|、|:cdo|、|:ldo|、|:cfdo| - および |:lfdo|も参照。 + |:tabdo|、|:argdo|、|:bufdo|、|:cdo|、|:ldo|、|:cfdo|、 + |:lfdo|も参照。 *:bufdo* :bufdo[!] {cmd} {cmd} をバッファリスト内の各バッファに対して実行。 @@ -727,9 +727,8 @@ Note: ":next" は例外である。なぜならこのコマンドは Vi との これは各バッファの編集を大幅にスピードアップさせる。 {Vi にはない} {|+listcmds| 機能なしでコンパイルされた 場合は使用できない} - |:tabdo|, |:argdo|, |:windo| も参照。 - Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|, - |:cfdo| and |:lfdo| + |:tabdo|、|:argdo|、|:windo|、|:cdo|、|:ldo|、|:cfdo|、 + |:lfdo| も参照。 例: > From 487d2c0a380e4021237dd473556b65ecfb4d68ec Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 17 Sep 2015 00:42:08 +0900 Subject: [PATCH 692/783] Fix layout --- doc/index.jax | 10 +++++----- doc/quickfix.jax | 31 +++++++++++++++---------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/doc/index.jax b/doc/index.jax index 201951f98..7f366fd12 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1156,15 +1156,15 @@ You found it, Arthur! *holy-grail* |:caddfile| :caddf[ile] 現在のQuickFixリストにエラーメッセージを追加 |:call| :cal[l] 関数を実行する |:catch| :cat[ch] :tryコマンドの一部 -|:cbuffer| :cb[uffer] エラーメッセージを解釈し、最初のエラーへジャ - ンプ +|:cbuffer| :cb[uffer] エラーメッセージを解釈し、最初のエラーへジャン + プ |:cc| :cc 指定のエラーへジャンプ |:cclose| :ccl[ose] QuickFixウィンドウを閉じる |:cd| :cd ディレクトリの移動 -|:cdo| :cdo QuickFixリストの各項目に対してコマンドを実 +|:cdo| :cdo QuickFixリストの各項目に対してコマンドを実行す + る +|:cfdo| :cfd[o] QuickFixリストの各ファイルに対してコマンドを実 行する -|:cfdo| :cfd[o] QuickFixリストの各ファイルに対してコマンド - を実行する |:center| :ce[nter] 行を中央寄せに整形 |:cexpr| :cex[pr] 式からエラーを読みこみ、最初のエラーへジャンプ |:cfile| :cf[ile] エラーファイルを読み込み最初のエラーへジャンプ diff --git a/doc/quickfix.jax b/doc/quickfix.jax index 251962b7f..bd569124b 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -27,9 +27,9 @@ Vimには編集-コンパイル-編集のサイクルを加速するための特別なモードがある。これ はAmigaのManx's Aztec C compilerのquickfixオプションにインスパイアされた。Cコ -ンパイラから出力されたエラーメッセージをファイルに保存し、Vimでそのエラーにジャ -ンプするというアイディアである。エラーメッセージを全部覚えておかなくても、それ -ぞれの問題を検証し、修正することができる。 +ンパイラから出力されたエラーメッセージをファイルに保存し、Vimでそのエラーに +ジャンプするというアイディアである。エラーメッセージを全部覚えておかなくても、 +それぞれの問題を検証し、修正することができる。 QuickFixコマンドはより一般的に、ファイル中の位置のリストを作成し、ジャンプする ために使うことができる。例えば、|:vimgrep|はパターンにマッチした位置をリストす @@ -284,8 +284,8 @@ Vimが|+autocmd|機能つきでビルドされている場合、QuickFixコマ QuickFixリストやロケーションリスト中のバッファに対してコマンドを実行: *:cdo* -:cdo[!] {cmd} QuickFix リスト中の有効な各項目に対して {cmd} を実行す - る。以下の操作と同様に動作する: > +:cdo[!] {cmd} QuickFix リスト中の有効な各項目に対して {cmd} を実行 + する。以下の操作と同様に動作する: > :cfirst :{cmd} :cnext @@ -293,12 +293,11 @@ QuickFixリストやロケーションリスト中のバッファに対してコ etc. < カレントファイルが破棄できず(|abandon|)、かつ[!] が与 えられない場合、このコマンドは失敗する。 - 1つのバッファに対してエラーが検出されると、それ以降 - のバッファに対しては実行されない。 - 最後のバッファ (またはエラーが起こったバッファ) がカレ - ントウィンドウになる。 + 1つのバッファに対してエラーが検出されると、それ以降の + バッファに対しては実行されない。 + 最後のバッファ (またはエラーが起こったバッファ) がカ + レントウィンドウになる。 {cmd} の中では '|' で複数のコマンドを連結できる。 - い。 QuickFixリスト中の有効な項目のみが使われる。 「範囲」を指定して項目を選択することができる。例: > @@ -326,8 +325,8 @@ QuickFixリストやロケーションリスト中のバッファに対してコ 場合は使用できない} *:ldo* -:ld[o][!] {cmd} カレントウィンドウのロケーションリスト中の有効な各項目 - に対して {cmd} を実行する +:ld[o][!] {cmd} カレントウィンドウのロケーションリスト中の有効な各項 + 目に対して {cmd} を実行する。 以下の操作と同様に動作する: > :lfirst :{cmd} @@ -340,8 +339,8 @@ QuickFixリストやロケーションリスト中のバッファに対してコ 場合は使用できない} *:lfdo* -:lfdo[!] {cmd} カレントウィンドウのロケーションリスト中の各ファイルに - 対して {cmd} を実行する +:lfdo[!] {cmd} カレントウィンドウのロケーションリスト中の各ファイル + に対して {cmd} を実行する 以下の操作と同様に動作する: > :lfirst :{cmd} @@ -468,8 +467,8 @@ Note: QuickFixウィンドウ内で変更を加えてもエラーのリストに いる場合、エラーメッセージが表示される。 *:lolder* *:lol* -:lol[der] [count] ":colder" と同様だが、QuickFixリストでなく、カレン - トウィンドウのロケーションリストが使われる。 +:lol[der] [count] ":colder" と同様だが、QuickFixリストでなく、カレント + ウィンドウのロケーションリストが使われる。 *:cnewer* *:cnew* *E381* :cnew[er] [count] 新しいエラーリストへ移動する。[count]が与えられると、 From 73825f941158eedb35001f64e671159c709d30c6 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 17 Sep 2015 01:30:27 +0900 Subject: [PATCH 693/783] Update some files --- doc/change.jax | 2 +- doc/eval.jax | 2 +- doc/farsi.jax | 4 ++-- doc/index.jax | 2 +- doc/options.jax | 11 +++++------ doc/quickfix.jax | 2 +- en/change.txt | 2 +- en/eval.txt | 4 ++-- en/farsi.txt | 4 ++-- en/index.txt | 2 +- en/options.txt | 10 +++++----- en/quickfix.txt | 2 +- en/windows.txt | 16 ++++++++-------- 13 files changed, 31 insertions(+), 32 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index 803ce2498..27434a1a4 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -1,4 +1,4 @@ -*change.txt* For Vim バージョン 7.4. Last change: 2015 Aug 04 +*change.txt* For Vim バージョン 7.4. Last change: 2015 Sep 06 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/doc/eval.jax b/doc/eval.jax index e192f67a2..6aee78890 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1692,7 +1692,7 @@ bufexists( {expr}) 数値 バッファ{expr}が存在すればTRUE buflisted( {expr}) 数値 バッファ{expr}がリストにあるならTRUE bufloaded( {expr}) 数値 バッファ{expr}がロード済みならTRUE bufname( {expr}) 文字列 バッファ{expr}の名前 -bufnr( {expr}) 数値 バッファ{expr}の番号 +bufnr( {expr} [, {create}]) 数値 バッファ{expr}の番号 bufwinnr( {nr}) 数値 バッファ{nr}のウィンドウ番号 byte2line( {byte}) 数値 {byte}番目のバイトの行番号 byteidx( {expr}, {nr}) 数値 {expr}の{nr}文字目のバイトインデックス diff --git a/doc/farsi.jax b/doc/farsi.jax index 20d1e93cc..7a21877dc 100644 --- a/doc/farsi.jax +++ b/doc/farsi.jax @@ -1,4 +1,4 @@ -*farsi.txt* For Vim バージョン 7.4. Last change: 2010 Aug 07 +*farsi.txt* For Vim バージョン 7.4. Last change: 2015 Aug 29 VIMリファレンスマニュアル by Mortaza Ghassab Shiran @@ -55,7 +55,7 @@ o ペルシア語の ISIR-3342 標準エンコーディングと Vim Farsi は ンキーで切り替えられます。これは、右横書きのテキストに対してのみ意味をなす ので、右横書きモードでのみ利用できます。 -ペルシア語フォント *farsi fonts* +ペルシア語フォント *farsi-fonts* ------------------ 次のファイルは '$VIM/farsi/fonts' ディレクトリ以下にあります: diff --git a/doc/index.jax b/doc/index.jax index 7f366fd12..d7b7fa3a0 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1,4 +1,4 @@ -*index.txt* For Vim バージョン 7.4. Last change: 2015 Feb 12 +*index.txt* For Vim バージョン 7.4. Last change: 2015 Sep 08 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/doc/options.jax b/doc/options.jax index 083a124a7..0b10d06d7 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -569,13 +569,12 @@ se[t] "set " または "se " という文字列 (NOTE 終わりの空白に注 vim<{vers}: バージョン {vers} より前 vim={vers}: バージョン {vers} のみ vim>{vers}: バージョン {vers} より後 (そのバージョンを含まない) -{vers} に 600 を指定するとVim 6.0を表す (メジャー・バージョンナンバーの100倍足 +{vers} に 700 を指定するとVim 7.0を表す (メジャー・バージョンナンバーの100倍足 すマイナー・バージョンナンバー)。 -例えば、Vim 6.0またはそれより新しいバージョンでのみモードラインを使うにはこう -する。 - /* vim600: set foldmethod=marker: */ ~ -Vim 5.7より古いバージョンでのみモードラインを使うにはこうする - /* vim<570: set sw=4: */ ~ +例えば、Vim 7.0でのみモードラインを使うにはこうする: + /* vim700: set foldmethod=marker */ ~ +Vim 7.2より新しいバージョンでのみモードラインを使うにはこうする: + /* vim>702: set cole=2: */ ~ "vim" と ":" の間に空白があってはならない。 diff --git a/doc/quickfix.jax b/doc/quickfix.jax index bd569124b..61f0b55b5 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim バージョン 7.4. Last change: 2014 Mar 27 +*quickfix.txt* For Vim バージョン 7.4. Last change: 2015 Sep 08 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/en/change.txt b/en/change.txt index c05a3f2ee..3a8107ecd 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.4. Last change: 2015 Aug 04 +*change.txt* For Vim version 7.4. Last change: 2015 Sep 06 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/eval.txt b/en/eval.txt index 4aeb2e417..5f4f5e61a 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1739,7 +1739,7 @@ bufexists( {expr}) Number TRUE if buffer {expr} exists buflisted( {expr}) Number TRUE if buffer {expr} is listed bufloaded( {expr}) Number TRUE if buffer {expr} is loaded bufname( {expr}) String Name of the buffer {expr} -bufnr( {expr}) Number Number of the buffer {expr} +bufnr( {expr} [, {create}]) Number Number of the buffer {expr} bufwinnr( {expr}) Number window number of buffer {expr} byte2line( {byte}) Number line number at byte count {byte} byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr} @@ -4898,7 +4898,7 @@ readfile({fname} [, {binary} [, {max}]]) separated with CR will result in a single long line (unless a NL appears somewhere). All NUL characters are replaced with a NL character. - When {binary/append} contains "b" binary mode is used: + When {binary} contains "b" binary mode is used: - When the last line ends in a NL an extra empty list item is added. - No CR characters are removed. diff --git a/en/farsi.txt b/en/farsi.txt index c901d9272..4f805cef3 100644 --- a/en/farsi.txt +++ b/en/farsi.txt @@ -1,4 +1,4 @@ -*farsi.txt* For Vim version 7.4. Last change: 2010 Aug 07 +*farsi.txt* For Vim version 7.4. Last change: 2015 Aug 29 VIM REFERENCE MANUAL by Mortaza Ghassab Shiran @@ -59,7 +59,7 @@ o Toggling between Farsi ISIR-3342 standard encoding and Vim Farsi via F9 right-to-left mode, this function is also supported only in right-to-left mode. -Farsi Fonts *farsi fonts* +Farsi Fonts *farsi-fonts* ----------- The following files are found in the subdirectories of the '$VIM/farsi/fonts' diff --git a/en/index.txt b/en/index.txt index 3949c2b57..ded50d0e6 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.4. Last change: 2015 Feb 12 +*index.txt* For Vim version 7.4. Last change: 2015 Sep 08 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/options.txt b/en/options.txt index 9423f43d5..845878a37 100644 --- a/en/options.txt +++ b/en/options.txt @@ -536,11 +536,11 @@ number can be specified where "vim:" or "Vim:" is used: vim<{vers}: version before {vers} vim={vers}: version {vers} vim>{vers}: version after {vers} -{vers} is 600 for Vim 6.0 (hundred times the major version plus minor). -For example, to use a modeline only for Vim 6.0 and later: - /* vim600: set foldmethod=marker: */ ~ -To use a modeline for Vim before version 5.7: - /* vim<570: set sw=4: */ ~ +{vers} is 700 for Vim 7.0 (hundred times the major version plus minor). +For example, to use a modeline only for Vim 7.0: + /* vim700: set foldmethod=marker */ ~ +To use a modeline for Vim after version 7.2: + /* vim>702: set cole=2: */ ~ There can be no blanks between "vim" and the ":". diff --git a/en/quickfix.txt b/en/quickfix.txt index 442028358..9858d4eb7 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.4. Last change: 2014 Mar 27 +*quickfix.txt* For Vim version 7.4. Last change: 2015 Sep 08 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/windows.txt b/en/windows.txt index e081c5a71..cc3659df7 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1049,13 +1049,13 @@ list of buffers. |unlisted-buffer| the current buffer remains being edited. See |:buffer-!| for [!]. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. - Also see ||+cmd|. + Also see |+cmd|. :[N]b[uffer][!] [+cmd] {bufname} Edit buffer for {bufname} from the buffer list. See |:buffer-!| for [!]. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. - Also see ||+cmd|. + Also see |+cmd|. :[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer* Split window and edit buffer [N] from the buffer list. If [N] @@ -1063,7 +1063,7 @@ list of buffers. |unlisted-buffer| "useopen" setting of 'switchbuf' when splitting. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. - Also see ||+cmd|. + Also see |+cmd|. :[N]sb[uffer] [+cmd] {bufname} Split window and edit buffer for {bufname} from the buffer @@ -1072,13 +1072,13 @@ list of buffers. |unlisted-buffer| Note: If what you want to do is split the buffer, make a copy under another name, you can do it this way: > :w foobar | sp # -< Also see ||+cmd|. +< Also see |+cmd|. :[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87* Go to [N]th next buffer in buffer list. [N] defaults to one. Wraps around the end of the buffer list. See |:buffer-!| for [!]. - Also see ||+cmd|. + Also see |+cmd|. If you are in a help buffer, this takes you to the next help buffer (if there is one). Similarly, if you are in a normal (non-help) buffer, this takes you to the next normal buffer. @@ -1091,21 +1091,21 @@ list of buffers. |unlisted-buffer| :[N]sbn[ext] [+cmd] [N] Split window and go to [N]th next buffer in buffer list. Wraps around the end of the buffer list. Uses 'switchbuf' - Also see ||+cmd|. + Also see |+cmd|. :[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* :[N]bp[revious][!] [+cmd] [N] Go to [N]th previous buffer in buffer list. [N] defaults to one. Wraps around the start of the buffer list. See |:buffer-!| for [!] and 'switchbuf'. - Also see ||+cmd|. + Also see |+cmd|. :[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* :[N]sbp[revious] [+cmd] [N] Split window and go to [N]th previous buffer in buffer list. Wraps around the start of the buffer list. Uses 'switchbuf'. - Also see ||+cmd|. + Also see |+cmd|. :br[ewind][!] [+cmd] *:br* *:brewind* Go to first buffer in buffer list. If the buffer list is From f0ea94ba076633480f625ff7cdfc703f58346b4d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 18 Sep 2015 21:46:48 +0900 Subject: [PATCH 694/783] Improve translation --- doc/change.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index 27434a1a4..ee8ae5275 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -376,7 +376,7 @@ CTRL-A カーソルの下または後の数字またはアルファベット ファベットに [count] を加える。複数行がビジュアル選択 されている場合、各行は付加された [count] ごとに増やさ れる (そのため効果的に [count] ごとに増加する配列を作 - れるのである)。 {Vi にはない} + ることができる)。 {Vi にはない} 例えば、このような数字のリストがあるとする: 1. ~ 1. ~ @@ -402,7 +402,7 @@ CTRL-X カーソルの下または後の数字またはアルファベット ファベットから [count] を減じる。複数行がビジュアル選 択されている場合、各値は付加された [count] ごとに減ら される (そのため効果的に [count] ごとに減少する配列を - 作れるのである)。 {Vi にはない} + 作ることができる)。 {Vi にはない} コマンド CTRL-A と CTRL-X は(符号付)10進数と符号なし8進/16進数、アルファベッ トに対し機能する。この動作はオプション 'nrformats' に依存する。 From 6b7a4faf0fee0dd9431b6fbc08175340b352cf47 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 27 Sep 2015 02:16:44 +0900 Subject: [PATCH 695/783] Update cmdline.txt --- doc/cmdline.jax | 19 ++++++++++--------- en/cmdline.txt | 14 +++++++------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/doc/cmdline.jax b/doc/cmdline.jax index a3b0fed9b..e83ef0520 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim バージョン 7.4. Last change: 2015 Jul 28 +*cmdline.txt* For Vim バージョン 7.4. Last change: 2015 Sep 25 VIMリファレンスマニュアル by Bram Moolenaar @@ -775,16 +775,17 @@ Note: これらは文字通りに打ち込まれる、これらは特別なキ ない) <amatch> 自動コマンドの実行時、この自動コマンドが実行されたときのマッ チに置き換えられる。そのファイル名がマッチの検索に使われて - いないときのみ、<afile> と違う値になる (イベント FileType - や Syntax、SpellFileMissing 用)。 + いないときのみ、<afile> と違う値になる (イベント FileType、 + Syntax、SpellFileMissing 用)。 <sfile> コマンド ":source" の実行時、取り込まれたファイルのファイル 名に置き換えられる。 *E498* - 関数の実行時、"function {関数名}" に置き換えられる。関数呼 - び出しのネスト (入れ子状態) はこのように表される: - "function {関数名1}..{関数名2}"。 Note: 関数内で <sfile> が - 使われている場合、ファイル名修飾子は無効になることに注意。 - <slnum> コマンド ":source" の実行時、行番号に置き換えられる。 - *E842* + 関数の実行時はこのように置き換えられる: + "function {関数名}[{行番号}]" + 関数呼び出しのネスト (入れ子状態) はこのように表される: + "function {関数名1}[{行番号}]..{関数名2}[{行番号}]" + Note 関数内で <sfile> が使われている場合、ファイル名修飾子 + は無効になることに注意。 + <slnum> コマンド ":source" の実行時、行番号に置き換えられる。*E842* 関数の中では、関数の先頭からの相対的な行番号になる。 *filename-modifiers* diff --git a/en/cmdline.txt b/en/cmdline.txt index fe2ef76ef..619717102 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.4. Last change: 2015 Jul 28 +*cmdline.txt* For Vim version 7.4. Last change: 2015 Sep 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -818,12 +818,12 @@ Note: these are typed literally, they are not special keys! (for FileType, Syntax and SpellFileMissing events). <sfile> When executing a ":source" command, is replaced with the file name of the sourced file. *E498* - When executing a function, is replaced with - "function {function-name}"; function call nesting is - indicated like this: - "function {function-name1}..{function-name2}". Note that - filename-modifiers are useless when <sfile> is used inside - a function. + When executing a function, is replaced with: + "function {function-name}[{lnum}]" + function call nesting is indicated like this: + "function {function-name1}[{lnum}]..{function-name2}[{lnum}]" + Note that filename-modifiers are useless when <sfile> is + used inside a function. <slnum> When executing a ":source" command, is replaced with the line number. *E842* When executing a function it's the line number relative to From 69b4e7c3af4ed6cf6233ab238538ae3104bbf7d9 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 1 Oct 2015 01:29:07 +0900 Subject: [PATCH 696/783] Fix indent --- doc/usr_11.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/usr_11.jax b/doc/usr_11.jax index 13b3ace2d..d13a5e676 100644 --- a/doc/usr_11.jax +++ b/doc/usr_11.jax @@ -167,7 +167,7 @@ Vim には、うっかりミスを防止するための仕組みがあります ユーザー名: mool ホスト名: masaka.moolenaar.net ~ プロセスID: 12559 (まだ実行中) ~ 次のファイルを開いている最中 "main.c" ~ - 日付: Tue May 29 19:46:12 2001 ~ + 日付: Tue May 29 19:46:12 2001 ~ (1) 別のプログラムが同じファイルを編集しているかもしれません. ~ この場合には, 変更をした際に最終的に, 同じファイルの異なる ~ From 99dd66209db3b165755ceb8869fe562ce444d606 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 1 Oct 2015 02:35:10 +0900 Subject: [PATCH 697/783] Fix indent --- doc/eval.jax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 6aee78890..4ceb9dfcd 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -14,10 +14,10 @@ Vimスクリプトの利用についてはユーザーマニュアルの41章|us 1. 変数 |variables| 1.1 変数の型 - 1.2 関数への参照 |Funcref| - 1.3 リスト |Lists| - 1.4 辞書 |Dictionaries| - 1.5 変数について補足 |more-variables| + 1.2 関数への参照 |Funcref| + 1.3 リスト |Lists| + 1.4 辞書 |Dictionaries| + 1.5 変数について補足 |more-variables| 2. 式の文法 |expression-syntax| 3. 内部変数 |internal-variables| 4. 組み込み関数 |functions| From e00c50d5ec8153a46ecb10cb9880562a380e35b8 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 4 Oct 2015 19:01:52 +0900 Subject: [PATCH 698/783] Remove unnecessary line break --- doc/term.jax | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/term.jax b/doc/term.jax index 3b386feb0..5cca2492f 100644 --- a/doc/term.jax +++ b/doc/term.jax @@ -133,8 +133,7 @@ vt100 や xterm などの端末ではカーソルキーを押すと <Esc>OA や 'B' を挿入する」という挿入モードでのコマンドでもあります。 このコマンドを実行するのでなく、カーソルキーのシーケンスが入力されたのだと誤認 識してしまうかもしれません。これを防ぎ、意図通りの動作をさせるには次の設定を使 -います -: > +います: > :set notimeout " マッピングについてタイムアウトしない :set ttimeout " 端末のキーコードについてタイムアウトする :set timeoutlen=100 " 100 ミリ秒後にタイムアウトする From b3b4a46ddbc5710d32658a4dd55f1499f815cd8d Mon Sep 17 00:00:00 2001 From: thinca <thinca@gmail.com> Date: Mon, 12 Oct 2015 00:40:07 +0900 Subject: [PATCH 699/783] Fix typo --- doc/repeat.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/repeat.jax b/doc/repeat.jax index 9c18d9d37..5c0a4887a 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -55,7 +55,7 @@ :[range]v[global]/{pattern}/[cmd] :g! と同じ。 -{patter} の両側の '/' の代わりにどんなシングルバイト文字でも使うことができる。 +{pattern} の両側の '/' の代わりにどんなシングルバイト文字でも使うことができる。 しかしアルファベット、'\'、'"'、'|' は使えない。 これは、検索パターンや置換文字列に '/' が含まれる場合に便利である。 From ff3770254fd7278e3c400227ebf9a7a6820413dc Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 23 Oct 2015 21:51:44 +0900 Subject: [PATCH 700/783] Update diff.txt --- doc/diff.jax | 37 ++++++++++++++++++++++++++++--------- en/diff.txt | 34 ++++++++++++++++++++++++++-------- 2 files changed, 54 insertions(+), 17 deletions(-) diff --git a/doc/diff.jax b/doc/diff.jax index f46138b6a..1b945f63f 100644 --- a/doc/diff.jax +++ b/doc/diff.jax @@ -1,4 +1,4 @@ -*diff.txt* For Vim バージョン 7.4. Last change: 2014 May 20 +*diff.txt* For Vim バージョン 7.4. Last change: 2015 Jul 03 VIMリファレンスマニュアル by Bram Moolenaar @@ -131,9 +131,11 @@ Vimが各ファイルについてウィンドウを開く時に起こること ションが設定されていない場合は、そのウィンドウの関連オプション は変更されない。 -コマンド ":diffoff" は関連するオプションを差分モード実行前の設定値に戻す。それ -は |:diffsplit|、|:diffpatch|、 |:diffthis| を実行したときの設定値、または Vim -を差分モードで起動したときの設定値である。それ以外の場合はデフォルト値に戻す: +コマンド `:diffoff` は関連するオプションを差分モード実行前の設定値に戻す。それ +は `:diffsplit`、`:diffpatch`、`:diffthis` を実行したときの設定値、または Vim +を差分モードで起動したときの設定値である。`:diffoff` を2回実行したときは最後に +保存された値が復元される。 +それ以外の場合はデフォルト値に戻す: 'diff' off 'scrollbind' off @@ -261,13 +263,17 @@ Vimは片方のウィンドウには存在しないがもう一方には存在 [range]については以下を参照。 *do* -do 引数と範囲のない ":diffget" と同じ。"o" は "obtain" の意味 - ("dgg" と区別できないので、"dg" は使えない)。 - Note: これはビジュアルモードでは機能しない。 +[count]do 範囲のない ":diffget" と同じ。"o" は "obtain" の意味 ("dgg" と + 区別できないので、"dg" は使えない)。Note: これはビジュアル + モードでは機能しない。 + [count] を与えた場合、それは ":diffget" に対して [bufspec]引数 + として用いられる。 *dp* -dp 引数と範囲のない ":diffput" と同じ。 - Note: これはビジュアルモードでは機能しない。 +[count]dp 範囲のない ":diffput" と同じ。Note: これはビジュアルモードでは + 機能しない。 + [count] を与えた場合、それは ":diffput" に対して [bufspec]引数 + として用いられる。 [range]が与えられない場合にはカーソルの位置かその上の差分が適用される。[range] @@ -305,6 +311,19 @@ dp 引数と範囲のない ":diffput" と同じ。 |'diffopt'| と |'fillchars'| の "diff" 項目も参照。 + *diff-slow* *diff_translations* +行がとても長いと diff 構文ハイライトが遅くなるかもしれない。その場合は特にたく +さんの異なったローカライゼーションをマッチしようと試みるからである。ローカライ +ゼーションを無効化して構文ハイライトを高速化するには、グローバル変数 +g:diff_translations を 0 に設定する: > + + let g:diff_translations = 0 +< +この変数を設定した後、構文スクリプトを再読み込みする: > + + set syntax=diff +< + 差分を発見する *diff-diffexpr* diff --git a/en/diff.txt b/en/diff.txt index 0ee587834..beb0137db 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.4. Last change: 2014 May 20 +*diff.txt* For Vim version 7.4. Last change: 2015 Jul 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -132,8 +132,9 @@ file for a moment and come back to the same file and be in diff mode again. if the current window does not have 'diff' set then no options in it are changed. -The ":diffoff" command resets the relevant options to the values they had when -using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode. +The `:diffoff` command resets the relevant options to the values they had when +using `:diffsplit`, `:diffpatch` , `:diffthis`. or starting Vim in diff mode. +When using `:diffoff` twice the last saved values are restored. Otherwise they are set to their default value: 'diff' off @@ -266,13 +267,17 @@ that the buffers will be equal within the specified range. See below for [range]. *do* -do Same as ":diffget" without argument or range. The "o" stands - for "obtain" ("dg" can't be used, it could be the start of - "dgg"!). Note: this doesn't work in Visual mode. +[count]do Same as ":diffget" without range. The "o" stands for "obtain" + ("dg" can't be used, it could be the start of "dgg"!). Note: + this doesn't work in Visual mode. + If you give a [count], it is used as the [bufspec] argument + for ":diffget". *dp* -dp Same as ":diffput" without argument or range. - Note: this doesn't work in Visual mode. +[count]dp Same as ":diffput" without range. Note: this doesn't work in + Visual mode. + If you give a [count], it is used as the [bufspec] argument + for ":diffput". When no [range] is given, the diff at the cursor position or just above it is @@ -310,6 +315,19 @@ name or a part of a buffer name. Examples: Also see |'diffopt'| and the "diff" item of |'fillchars'|. + *diff-slow* *diff_translations* +For very long lines, the diff syntax highlighting might be slow, especially +since it tries to match all different kind of localisations. To disable +localisations and speed up the syntax highlighting, set the global variable +g:diff_translations to zero: > + + let g:diff_translations = 0 +< +After setting this variable, Reload the syntax script: > + + set syntax=diff +< + FINDING THE DIFFERENCES *diff-diffexpr* From cca324dc293ff651351fa3c29210cea0a8ebc3ce Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 14 Nov 2015 02:16:02 +0900 Subject: [PATCH 701/783] Update diff.txt --- doc/diff.jax | 6 +++--- en/diff.txt | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/diff.jax b/doc/diff.jax index 1b945f63f..18eb82023 100644 --- a/doc/diff.jax +++ b/doc/diff.jax @@ -1,4 +1,4 @@ -*diff.txt* For Vim バージョン 7.4. Last change: 2015 Jul 03 +*diff.txt* For Vim バージョン 7.4. Last change: 2015 Nov 01 VIMリファレンスマニュアル by Bram Moolenaar @@ -180,8 +180,8 @@ Vimが各ファイルについてウィンドウを開く時に起こること 閉じることができる。そのときバッファを差分対象から外したいならば、隠れバッファ にする前に ":set nodiff" をする。 - *:diffu* *:diffupdate* -:diffu[pdate][!] 差分の強調と折り畳みを更新する。 + *:dif* *:diffupdate* +:dif[fupdate][!] 差分の強調と折り畳みを更新する。 テキストを変更した時には、Vimは差分情報を最新に保とうと試みる。これの大部分は 挿入と削除をされた行 (複数も可) に着目して行われる。1行内で行われた変更、及び diff --git a/en/diff.txt b/en/diff.txt index beb0137db..db7e4e859 100644 --- a/en/diff.txt +++ b/en/diff.txt @@ -1,4 +1,4 @@ -*diff.txt* For Vim version 7.4. Last change: 2015 Jul 03 +*diff.txt* For Vim version 7.4. Last change: 2015 Nov 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -182,8 +182,8 @@ hidden buffers. You can use ":hide" to close a window without unloading the buffer. If you don't want a buffer to remain used for the diff do ":set nodiff" before hiding it. - *:diffu* *:diffupdate* -:diffu[pdate][!] Update the diff highlighting and folds. + *:dif* *:diffupdate* +:dif[fupdate][!] Update the diff highlighting and folds. Vim attempts to keep the differences updated when you make changes to the text. This mostly takes care of inserted and deleted lines. Changes within a From bbe84257f4c691690076b5ccaefe07501540d823 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 29 Nov 2015 23:02:25 +0900 Subject: [PATCH 702/783] Fix unnecessary translation --- doc/options.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 0b10d06d7..12aaa4679 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -6474,8 +6474,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる w 書き込みコマンドには "書込み" の代わりに "[w]" を、コマンド ':w >> file' には "追加" の代わりに "[a]" を表示。 x "[dosフォーマット]" の代わりに "[dos]", "[unixフォーマット]" - の代わりに "[unix]", "[マックフォーマット]" の代わりに - "[マック]" を表示。 + の代わりに "[unix]", "[macフォーマット]" の代わりに "[mac]" を + 表示。 a 上記の省略を全て行う。 o ファイルの書き込み時のメッセージを、その後のファイルの読み込み From fb234e5624c73eebc2bd100d18451b052548680d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 11 Dec 2015 18:34:35 +0900 Subject: [PATCH 703/783] Update filetype.txt --- doc/filetype.jax | 8 ++++++-- en/filetype.txt | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/filetype.jax b/doc/filetype.jax index 6d8e31f68..5c869ebc9 100644 --- a/doc/filetype.jax +++ b/doc/filetype.jax @@ -1,4 +1,4 @@ -*filetype.txt* For Vim バージョン 7.4. Last change: 2013 Dec 15 +*filetype.txt* For Vim バージョン 7.4. Last change: 2015 Nov 28 VIMリファレンスマニュアル by Bram Moolenaar @@ -544,7 +544,7 @@ GIT COMMIT *ft-gitcommit-plugin* 位置からファイル末端までのテキストを引用する。これは全ての行に "> " が 挿入されることを意味している。 -MAN *ft-man-plugin* *:Man* +MAN *ft-man-plugin* *:Man* *man.vim* マニュアルページを洗練された方法で表示する。ユーザーマニュアルの |find-manpage|も参照のこと。 @@ -570,6 +570,10 @@ Man {number} {name} ローカルキーマップ: CTRL-] カーソルの下の単語についてのマニュアルページへ移動する。 CTRL-T 直前のマニュアルページへ戻る。 +q ":quit" と同じ + +折畳を有効にするにはこの変数を使う: > + let g:ft_man_folding_enable = 1 PDF *ft-pdf-plugin* diff --git a/en/filetype.txt b/en/filetype.txt index 94454fb46..540ebb476 100644 --- a/en/filetype.txt +++ b/en/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.4. Last change: 2013 Dec 15 +*filetype.txt* For Vim version 7.4. Last change: 2015 Nov 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -552,7 +552,7 @@ Local mappings: to the end of the file in Normal mode. This means "> " is inserted in each line. -MAN *ft-man-plugin* *:Man* +MAN *ft-man-plugin* *:Man* *man.vim* Displays a manual page in a nice way. Also see the user manual |find-manpage|. @@ -577,6 +577,10 @@ Global mapping: Local mappings: CTRL-] Jump to the manual page for the word under the cursor. CTRL-T Jump back to the previous manual page. +q Same as ":quit" + +To enable folding use this: > + let g:ft_man_folding_enable = 1 PDF *ft-pdf-plugin* From dfc92d816c40dca8040b5b40646384cf38310339 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Fri, 11 Dec 2015 20:50:42 +0900 Subject: [PATCH 704/783] Update editing.txt --- doc/editing.jax | 69 ++++++++++++++++++++++++++------------ en/editing.txt | 89 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 106 insertions(+), 52 deletions(-) diff --git a/doc/editing.jax b/doc/editing.jax index b00d78f00..ceecdf62c 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -1,4 +1,4 @@ -*editing.txt* For Vim バージョン 7.4. Last change: 2014 Aug 09 +*editing.txt* For Vim バージョン 7.4. Last change: 2015 Aug 25 VIMリファレンスマニュアル by Bram Moolenaar @@ -304,7 +304,8 @@ CTRL-^ 代替ファイルを編集する。たいていの場合、代替フ 覚え方: "goto file"。 オプション 'isfname' により、どの文字がファイル名に使 われるはずなのかを調べる。ファイル名に続く句読点の - ".,:;!" は無視される。 + ".,:;!" は無視される。エスケープされた複数のスペース + "\ " は1つのスペースに減らされる。 'path' により、ファイルを探すディレクトリ名のリストを 調べる。カレントファイルに対して相対的なファイルも探 される。 @@ -408,23 +409,33 @@ Note: いくつかのコマンドでは、この挙動が少し異なる。|file /usr/include/sys/types.h /usr/inc_old/types.h *backtick-expansion* *`-expansion* -Unix などではファイル名にバッククォート '`' も使える。例: > - :e `find . -name ver\\*.c -print` +Unix などではファイル名の引数にバッククォート '`' も使える。例: > + :next `find . -name ver\\*.c -print` + :view `ls -t *.patch \| head -n1` アスタリスク '*' の前の '\' は、シェルが find を実行する前に "ver*.c" を展開し -てしまうのを防ぐために必要となる。 +てしまうのを防ぐために必要となる。シェルのパイプ記号 "|" の前のバックスラッシ +ュは Vim がコマンドの終わりとしてパースするのを防ぐ。 これは、必ず項目全体がバッククォートで括られているという制限付きで、他の多くの システムでも機能する。最初のバッククォートの直前や最後のバッククォートの直後に 文字列を書くことはできない。 *`=* バッククォート内を、外部コマンドとしてではなく Vim の式として展開させることも -できる。そのためには `={expr}` という構文を使えばよい。例: > +できる。そのためには初めのバッククォートのすぐ後に等号を置けばよい。例: > :e `=tempname()` この式はほとんど何を含んでもよい。そのため、これを使って '"', '|', '%', '#' の 特別な意味を打ち消すこともできる。ただし、他のワイルドカードと同様に 'wildignore' は適用される。 + +この式の中の環境変数は式が評価される時に展開される。したがってこれは機能する: > + :e `=$HOME . '/.vimrc'` +これは機能しない。$HOME は文字列内にあり、文字通りに用いられる: > + :e `='$HOME' . '/.vimrc'` + 式が文字列を返したときは名前は改行で区切られる。式の結果がリスト (|List|) のと きは各要素が名前として扱われる。改行によっても名前は区切られる。 +Note そのような式はファイル名が Ex コマンドの引数として期待される場所でのみサ +ポートされる。 *++opt* *[++opt]* 引数のうち [++opt] はオプション 'fileformat', 'fileencoding' または @@ -604,7 +615,9 @@ Vim の開始時に複数のファイル名を与えると、それらは引数 {Vi にはない} :[count]arga[dd] {name} .. *:arga* *:argadd* *E479* - 引数リストに {name} を追加する。 +:[count]arga[dd] + 引数リストに {name} を追加する。{name} が省略された時 + は引数リストに現在のバッファ名を追加する。 [count] が省かれると {name} は引数リストの現在の項目の 次に挿入される。指定されると [count] 番目の項目の次に 挿入される。引数リストが "a b c" で "b" が現在の引数の @@ -613,7 +626,8 @@ Vim の開始時に複数のファイル名を与えると、それらは引数 :argadd x a b x c :0argadd x x a b c :1argadd x a x b c - :99argadd x a b c x + :$argadd x a b c x + :+2argadd y a b c x y 重複検査はないので、1個のファイルを引数リストに2回加え ることもできる。 現在編集中のファイルは変更されない。 @@ -635,11 +649,19 @@ Vim の開始時に複数のファイル名を与えると、それらは引数 < {Vi にはない} {Vimが |+listcmds| 機能付きでコンパイル されたときのみ有効} -:{range}argd[elete] 引数リストから {range} の範囲のファイルを削除する。 +:[range]argd[elete] 引数リストから {range} の範囲のファイルを削除する。 + 例: > + :10,$argdel +< 10以降が削除され、1から9は残る。 > + :$argd +< 最後の引数を削除する。 > + :argd + :.argd +< 現在の引数を削除する。 > + :%argd +< 引数リストから全てのファイルを削除する。 範囲の上限が大きすぎるときは、最後の引数までが削除され - る。例: > - :10,1000argdel -< とすると10以降が削除され、1から9は残る。 + る。 {Vi にはない} {Vimが |+listcmds| 機能付きでコンパイル されたときのみ有効} @@ -819,8 +841,9 @@ Unix およびその他いくつかのシステムではバッククォートも 引数リストを使う *:argdo* -:argdo[!] {cmd} 引数リスト内の全てのファイルで {cmd} を実行する。 - 以下と同様の動作になる。 > +:[range]argdo[!] {cmd} 引数リスト内の全てのファイルで {cmd} を実行する。また + は [range] が指定された場合、その範囲内の引数のみで実 + 行する。以下と同様の動作になる。 > :rewind :{cmd} :next @@ -1074,9 +1097,11 @@ MS-DOSとMS-Windowsでは、デバイスは名前から判断される: コマンド |:confirm| やオプション 'confirm' を参照。 {Vi にはない} -:q[uit]! 可視なバッファに変更点があっても書き込みをせずに終了す - る。隠れバッファに変更点があると終了しない。必ず終了す - るにはコマンド ":qall!" を使うこと。 +:q[uit]! 現在、可視なバッファに変更点があっても書き込みをせずに + 終了する。最後のウィンドウかつ隠れバッファに変更点があ + ると終了しない。この場合、最初の変更点がある隠れバッフ + ァはカレントバッファになる。 + 必ず終了するにはコマンド ":qall!" を使うこと。 :cq[uit] 書き込みをせずに必ず終了し、エラーコードを返す。コマン ド |:cq| を参照。Manx の QuickFix モードで使われる @@ -1365,7 +1390,8 @@ Note: メモリ内のテキストは暗号化されない。ユーザーがテ 機密テキストを編集するときは次のように設定するという手もある: > :set noundofile viminfo= :noswapfile edit secrets.txt -スワップファイルを無効化するとクラッシュ時に編集内容が失われてしまうので注意。 +スワップファイルを無効化するとクラッシュまたは停電の時に編集内容が失われてしま +うので注意。 警告: 鍵の入力時にタイプミスをしてファイルを保存し、Vimを終了すると、テキスト は失われてしまう! @@ -1399,11 +1425,10 @@ Note: メモリ内のテキストは暗号化されない。ユーザーがテ る前に 'cryptmethod' を変更することで使用するメソッドを変更できる。 新しいファイルに使われるデフォルトのメソッドを設定したい場合は |vimrc| ファイ -ルで次のどちらかを設定すること: > - set cm=zip +ルで次を設定すること: > set cm=blowfish2 -一つ目のものは Vim 7.2 以前との互換性が必要なときに使用する。 "blowfish2" をサ -ポートしている Vim が使えるなら、"blowfish2" の使用が強く推奨される。 +"blowfish2" の使用が強く推奨される。"blowfish2" をサポートしていない古いバージ +ョンの Vim を使わなければならない場合のみ、他のメソッドを使用する。 ファイルを読み込んだり書き込んだりしたとき、zip なら "[crypted]"、blowfish な ら "[blowfish]" とメッセージが表示される。 diff --git a/en/editing.txt b/en/editing.txt index 3f93829ff..5666e68b5 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.4. Last change: 2014 Aug 09 +*editing.txt* For Vim version 7.4. Last change: 2015 Aug 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -304,7 +304,8 @@ CTRL-^ Edit the alternate file. Mostly the alternate file is Mnemonic: "goto file". Uses the 'isfname' option to find out which characters are supposed to be in a file name. Trailing - punctuation characters ".,:;!" are ignored. + punctuation characters ".,:;!" are ignored. Escaped + spaces "\ " are reduced to a single space. Uses the 'path' option as a list of directory names to look for the file. See the 'path' option for details about relative directories and wildcards. @@ -411,25 +412,38 @@ Finds files: /usr/include/sys/types.h /usr/inc_old/types.h *backtick-expansion* *`-expansion* -On Unix and a few other systems you can also use backticks in the file name, -for example: > - :e `find . -name ver\\*.c -print` -The backslashes before the star are required to prevent "ver*.c" to be -expanded by the shell before executing the find program. +On Unix and a few other systems you can also use backticks for the file name +argument, for example: > + :next `find . -name ver\\*.c -print` + :view `ls -t *.patch \| head -n1` +The backslashes before the star are required to prevent the shell from +expanding "ver*.c" prior to execution of the find program. The backslash +before the shell pipe symbol "|" prevents Vim from parsing it as command +termination. This also works for most other systems, with the restriction that the backticks must be around the whole item. It is not possible to have text directly before the first or just after the last backtick. *`=* -You can have the backticks expanded as a Vim expression, instead of an -external command, by using the syntax `={expr}` e.g.: > +You can have the backticks expanded as a Vim expression, instead of as an +external command, by putting an equal sign right after the first backtick, +e.g.: > :e `=tempname()` The expression can contain just about anything, thus this can also be used to avoid the special meaning of '"', '|', '%' and '#'. However, 'wildignore' does apply like to other wildcards. + +Environment variables in the expression are expanded when evaluating the +expression, thus this works: > + :e `=$HOME . '/.vimrc'` +This does not work, $HOME is inside a string and used literally: > + :e `='$HOME' . '/.vimrc'` + If the expression returns a string then names are to be separated with line breaks. When the result is a |List| then each item is used as a name. Line breaks also separate names. +Note that such expressions are only supported in places where a filename is +expected as an argument to an Ex-command. *++opt* *[++opt]* The [++opt] argument can be used to force the value of 'fileformat', @@ -609,7 +623,10 @@ list of the current window. {not in Vi} :[count]arga[dd] {name} .. *:arga* *:argadd* *E479* - Add the {name}s to the argument list. +:[count]arga[dd] + Add the {name}s to the argument list. When {name} is + omitted add the current buffer name to the argument + list. If [count] is omitted, the {name}s are added just after the current entry in the argument list. Otherwise they are added after the [count]'th file. @@ -619,7 +636,8 @@ list of the current window. :argadd x a b x c :0argadd x x a b c :1argadd x a x b c - :99argadd x a b c x + :$argadd x a b c x + :+2argadd y a b c x y There is no check for duplicates, it is possible to add a file to the argument list twice. The currently edited file is not changed. @@ -641,11 +659,19 @@ list of the current window. < {not in Vi} {not available when compiled without the |+listcmds| feature} -:{range}argd[elete] Delete the {range} files from the argument list. +:[range]argd[elete] Delete the {range} files from the argument list. + Example: > + :10,$argdel +< Deletes arguments 10 and further, keeping 1-9. > + :$argd +< Deletes just the last one. > + :argd + :.argd +< Deletes the current argument. > + :%argd +< Removes all the files from the arglist. When the last number in the range is too high, up to - the last argument is deleted. Example: > - :10,1000argdel -< Deletes arguments 10 and further, keeping 1-9. + the last argument is deleted. {not in Vi} {not available when compiled without the |+listcmds| feature} @@ -820,8 +846,9 @@ current window. The two windows then share this list, until one of them uses USING THE ARGUMENT LIST *:argdo* -:argdo[!] {cmd} Execute {cmd} for each file in the argument list. - It works like doing this: > +:[range]argdo[!] {cmd} Execute {cmd} for each file in the argument list or + if [range] is specified only for arguments in that + range. It works like doing this: > :rewind :{cmd} :next @@ -1078,9 +1105,12 @@ The names can be in upper- or lowercase. the last file in the argument list has not been edited. See |:confirm| and 'confirm'. {not in Vi} -:q[uit]! Quit without writing, also when visible buffers have - changes. Does not exit when there are changed hidden - buffers. Use ":qall!" to exit always. +:q[uit]! Quit without writing, also when currently visible + buffers have changes. Does not exit when this is the + last window and there is a changed hidden buffer. + In this case, the first changed hidden buffer becomes + the current buffer. + Use ":qall!" to exit always. :cq[uit] Quit always, without writing, and return an error code. See |:cq|. Used for Manx's QuickFix mode (see @@ -1347,7 +1377,7 @@ There are a few things to remember when editing binary files: - <Nul> characters are shown on the screen as ^@. You can enter them with "CTRL-V CTRL-@" or "CTRL-V 000" {Vi cannot handle <Nul> characters in the file} -- To insert a <NL> character in the file split up a line. When writing the +- To insert a <NL> character in the file split a line. When writing the buffer to a file a <NL> will be written for the <EOL>. - Vim normally appends an <EOL> at the end of the file if there is none. Setting the 'binary' option prevents this. If you want to add the final @@ -1377,7 +1407,8 @@ reveal it to others. The 'viminfo' file is not encrypted. You could do this to edit very secret text: > :set noundofile viminfo= :noswapfile edit secrets.txt -Keep in mind that without a swap file you risk loosing your work in a crash. +Keep in mind that without a swap file you risk losing your work in the event +of a crash or a power failure. WARNING: If you make a typo when entering the key and then write the file and exit, the text will be lost! @@ -1413,13 +1444,11 @@ Do this before writing the file. When reading an encrypted file it will be set automatically to the method used when that file was written. You can change 'cryptmethod' before writing that file to change the method. -To set the default method, used for new files, use one of these in your -|vimrc| file: > - set cm=zip +To set the default method, used for new files, use this in your |vimrc| +file: > set cm=blowfish2 -Use the first one if you need to be compatible with Vim 7.2 and older. Using -"blowfish2" is highly recommended if you can use a Vim version that supports -it. +Using "blowfish2" is highly recommended. Only use another method if you +must use an older Vim version that does not support it. The message given for reading and writing a file will show "[crypted]" when using zip, "[blowfish]" when using blowfish, etc. @@ -1481,8 +1510,8 @@ Notes: - Pkzip uses the same encryption as 'cryptmethod' "zip", and US Govt has no objection to its export. Pkzip's public file APPNOTE.TXT describes this algorithm in detail. -- The implmentation of 'cryptmethod' "blowfish" has a flaw. It is possible to - crack the first 64 bytes of a file and in some circumstances more of the +- The implementation of 'cryptmethod' "blowfish" has a flaw. It is possible + to crack the first 64 bytes of a file and in some circumstances more of the file. Use of it is not recommended, but it's still the strongest method supported by Vim 7.3 and 7.4. The "zip" method is even weaker. - Vim originates from the Netherlands. That is where the sources come from. From 1a8a0b74aea3b5686d172dbf81db2060f17ea34d Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 13 Dec 2015 22:14:22 +0900 Subject: [PATCH 705/783] Fix typo fix #135 --- doc/sign.jax | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/sign.jax b/doc/sign.jax index 968a6bbbb..31ca44563 100644 --- a/doc/sign.jax +++ b/doc/sign.jax @@ -16,16 +16,16 @@ ============================================================================== 1. 機能紹介 *sign-intro* *signs* -デバッガやその他のIDE{訳注: 統合開発環境}ツールはエディタをコントールする。そ -のエディタはユーザーにファイルについての役立つ情報を素早く提供するために特別な -ハイライトを表示できる必要がある。一例としては左のカラムにブレークポイントを示 -すアイコンを持つデバッガを挙げることができる。別の例としてはプログラムカウンタ -(PC)を示す矢印が挙げられる。この目印機能により、ウィンドウの左端に目印やアイコ -ン画像を置いたり、ある行に適用される強調を定義することができるようになる。画像 -による目印はgvimでだけ利用で可能である(しかしSun Microsystemsのdttermはそれを -サポートしている。これは著者が知り得る限りで唯一の端末エミュレータである)。テ -キストによる目印と色による強調表示は、あらゆるカラーの端末エミュレータで利用で -きる。 +デバッガやその他のIDE{訳注: 統合開発環境}ツールはエディタをコントロールする。 +そのエディタはユーザーにファイルについての役立つ情報を素早く提供するために特別 +なハイライトを表示できる必要がある。一例としては左のカラムにブレークポイントを +示すアイコンを持つデバッガを挙げることができる。別の例としてはプログラムカウン +タ(PC)を示す矢印が挙げられる。この目印機能により、ウィンドウの左端に目印やアイ +コン画像を置いたり、ある行に適用される強調を定義することができるようになる。画 +像による目印はgvimでだけ利用で可能である(しかしSun Microsystemsのdttermはそれ +をサポートしている。これは著者が知り得る限りで唯一の端末エミュレータである)。 +テキストによる目印と色による強調表示は、あらゆるカラーの端末エミュレータで利用 +できる。 目印と強調はデバッガにとってだけ便利なわけではない。SunのVisual WorkShopはビル ドエラーとSourceBrowserの検索一致箇所を示すのに目印と強調を使用する。加えて、 From 74ca0800a0f7d570c575f88ec7bde6d00175d835 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 16 Dec 2015 23:38:36 +0900 Subject: [PATCH 706/783] Fix the unnecessary translated word thanks to @rbtnn --- doc/syntax.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/syntax.jax b/doc/syntax.jax index 76cda2d67..23c12a8b0 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -3409,7 +3409,7 @@ xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を endパターンの照合のチェックはされない。次のは機能しない: > :syn region First start="(" end=":" :syn region Second start="(" end=";" -< 2番目のは常にFirstより前にマッチする(最後に定義されたパターンが優先さ +< Secondは常にFirstより前にマッチする(最後に定義されたパターンが優先さ れる)。こうすると、その前に ':' があるかどうかに関わらず、2番目のリー ジョンが次の ';' まで続く。マッチを使うとうまくいく: > :syn match First "(\_.\{-}:" From 8dabd316ba920b8b94d641764fff30be75eaf20e Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Thu, 17 Dec 2015 22:18:02 +0900 Subject: [PATCH 707/783] Fix the unnecessary translated word --- doc/syntax.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/syntax.jax b/doc/syntax.jax index 23c12a8b0..b39bec473 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -3402,15 +3402,15 @@ xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を skipとendパターンは改行をまたいでマッチしてもよい。しかしパターンの検 索はどの行からも始まりうるので、望みどおりにならないこともある。 - skipパターンは次の行のendパターンのマッチを回避しない。問題を避けるには - 単一行のパターンを使うこと。 + skipパターンは次の行のendパターンのマッチを回避しない。問題を避けるに + は単一行のパターンを使うこと。 Note: リージョンの開始は、startパターンのマッチによってのみ決まる。 endパターンの照合のチェックはされない。次のは機能しない: > :syn region First start="(" end=":" :syn region Second start="(" end=";" < Secondは常にFirstより前にマッチする(最後に定義されたパターンが優先さ - れる)。こうすると、その前に ':' があるかどうかに関わらず、2番目のリー + れる)。こうすると、その前に ':' があるかどうかに関わらず、Secondのリー ジョンが次の ';' まで続く。マッチを使うとうまくいく: > :syn match First "(\_.\{-}:" :syn match Second "(\_.\{-};" From 0c6fb9de1bc597983935e12e96002b3ff0d185be Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Sat, 19 Dec 2015 20:06:28 +0900 Subject: [PATCH 708/783] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=BC?= =?UTF-8?q?=E3=83=95=E3=82=A7=E3=82=A4=E3=82=B9=E3=81=AB=E7=B5=B1=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/arabic.jax | 2 +- doc/eval.jax | 8 ++++---- doc/farsi.jax | 2 +- doc/gui.jax | 4 ++-- doc/gui_w16.jax | 6 +++--- doc/gui_w32.jax | 4 ++-- doc/gui_x11.jax | 4 ++-- doc/help.jax | 24 ++++++++++++------------ doc/if_cscop.jax | 12 ++++++------ doc/if_lua.jax | 4 ++-- doc/if_mzsch.jax | 4 ++-- doc/if_perl.jax | 24 ++++++++++++------------ doc/if_pyth.jax | 2 +- doc/if_sniff.jax | 8 ++++---- doc/netbeans.jax | 2 +- doc/os_390.jax | 2 +- doc/os_beos.jax | 2 +- doc/quotes.jax | 6 +++--- doc/usr_29.jax | 2 +- doc/usr_41.jax | 2 +- doc/usr_90.jax | 4 ++-- doc/various.jax | 30 +++++++++++++++--------------- doc/vi_diff.jax | 6 +++--- vim_faq/vim_faq.jax | 2 +- 24 files changed, 83 insertions(+), 83 deletions(-) diff --git a/doc/arabic.jax b/doc/arabic.jax index c44188af8..40f15d714 100644 --- a/doc/arabic.jax +++ b/doc/arabic.jax @@ -34,7 +34,7 @@ Presentation Form-B (U+FE70-U+FEFF) のフォントも必要です。これら ISO-10646-1 フォントのサブセットです。 コマンド、プロンプト、ヘルプファイルはアラビア語にはなりません。したがってユー -ザーインターフェースは標準の Vi インターフェースのままです。 +ザーインターフェイスは標準の Vi インターフェイスのままです。 特徴 diff --git a/doc/eval.jax b/doc/eval.jax index 4ceb9dfcd..8f9f8625b 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -6487,7 +6487,7 @@ lispindent lisp式のインデントをサポート listcmds バッファリスト用のコマンド|:files|と引数リスト用のコマ ンド|arglist|をサポート localmap ローカルなマッピングと短縮入力をサポート|:map-local| -lua Lua インターフェースをサポート |Lua| +lua Lua インターフェイスをサポート |Lua| mac マッキントッシュバージョン macunix Unixファイル用のマッキントッシュバージョン(OS-X) menu |:menu|をサポート @@ -6518,8 +6518,8 @@ persistent_undo 永続アンドゥをサポート postscript PostScriptファイルの印刷をサポート printer |:hardcopy| をサポート profile |:profile| をサポート -python Python 2.x インターフェースをサポート |has-python| -python3 Python 3.x インターフェースをサポート |has-python| +python Python 2.x インターフェイスをサポート |has-python| +python3 Python 3.x インターフェイスをサポート |has-python| qnx QNXバージョン quickfix |quickfix|をサポート reltime |reltime()|をサポート @@ -6541,7 +6541,7 @@ system fork()/exec()の代わりにsystem()が使用されている tag_binary タグファイル内のバイナリサーチ |tag-binary-search| tag_old_static 旧式の静的tagsをサポート |tag-old-static| tag_any_white タグファイル内の空白文字をサポート |tag-any-white| -tcl TCLインターフェースをサポート +tcl TCLインターフェイスをサポート terminfo termcapの代わりにterminfoをサポート termresponse |t_RV|と|v:termresponse|をサポート textobjects |text-objects|をサポート diff --git a/doc/farsi.jax b/doc/farsi.jax index 7a21877dc..f1cecd520 100644 --- a/doc/farsi.jax +++ b/doc/farsi.jax @@ -21,7 +21,7 @@ 語のメモ書きなどをするときにとても便利です。 コマンド、プロンプト、ヘルプファイルなどはペルシア語ではないため、ユーザーイン -ターフェースは Vi 標準のインターフェースと変わりません。 +ターフェイスは Vi 標準のインターフェイスと変わりません。 特色 diff --git a/doc/gui.jax b/doc/gui.jax index df8c144b9..d704d9701 100644 --- a/doc/gui.jax +++ b/doc/gui.jax @@ -4,7 +4,7 @@ VIMリファレンスマニュアル by Bram Moolenaar -Vimのグラフィカルユーザーインタフェース *gui* *GUI* +Vimのグラフィカルユーザーインターフェイス *gui* *GUI* 1. GUIの開始 |gui-start| 2. スクロールバー |gui-scrollbars| @@ -659,7 +659,7 @@ Note: コマンドラインモードでの<Esc>はマッピングで使用され メニューの「Help」の項目は、それをサポートしているシステム(MotifとGTK+)では、 メニューバーの右端に寄せて置かれる。GTK+ 2では、メニューのHelpを右端に寄せるの -は今のところユーザーインターフェースデザインの妨げになっているので、もはやサ +は今のところユーザーインターフェイスデザインの妨げになっているので、もはやサ ポートされない。 ヘルプメニューの後ろに置くために、9999より高い優先度を使用することができるが、 diff --git a/doc/gui_w16.jax b/doc/gui_w16.jax index ad894cb4b..5bfedf537 100644 --- a/doc/gui_w16.jax +++ b/doc/gui_w16.jax @@ -4,7 +4,7 @@ VIMリファレンスマニュアル by Bram Moolenaar -Vimのグラフィカルユーザーインターフェース *gui-w16* *win16-gui* +Vimのグラフィカルユーザーインターフェイス *gui-w16* *win16-gui* 1. GUIを始める |win16-start| 2. デフォルトエディタVim |win16-default-editor| @@ -31,7 +31,7 @@ Win16バージョンのVimはWindows 3.1以降で動作する。3.0ではテス 1) 再描画を高速化しリソース使用量を減らすために、太字と斜体のテキストは利用で きない。(MSWIN16_FASTTEXTを定義しないでコンパイルすれば利用可能) 2) メニューの切り取りはエミュレーションしていない。 -3) OLEインターフェースが無い。 +3) OLEインターフェイスが無い。 4) (あたり前だが)長いファイル名には対応しない。 5) ツールバーのボタンにツールチップが無い - その代わりにメニューの項目が行うよ うにコマンドラインへ表示する。 @@ -125,7 +125,7 @@ Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet, *win16-dialogs* 6. ダイアログとブラウズ -コンソールバージョンから受け継がれる伝統的なインターフェースはもちろん、さらに +コンソールバージョンから受け継がれる伝統的なインターフェイスはもちろん、さらに Win16 GUIでは幾つかの操作に見慣れたWindowsのコンポーネントを使用することができ る。 diff --git a/doc/gui_w32.jax b/doc/gui_w32.jax index e84a12696..da43c43aa 100644 --- a/doc/gui_w32.jax +++ b/doc/gui_w32.jax @@ -4,7 +4,7 @@ VIMリファレンスマニュアル by Bram Moolenaar -Win32でのVimのグラフィカルユーザーインターフェース *gui-w32* *win32-gui* +Win32でのVimのグラフィカルユーザーインターフェイス *gui-w32* *win32-gui* 1. GUIを始める |gui-w32-start| 2. デフォルトエディタVim |vim-default-editor| @@ -359,7 +359,7 @@ $VIMRUNTIMEディレクトリに置く。だから "$VIMRUNTIME/rgb.txt" にフ ============================================================================== 6. ダイアログとブラウズ *gui-w32-dialogs* *dialog* -コンソールバージョンから受け継がれる伝統的なインターフェースはもちろん、さらに +コンソールバージョンから受け継がれる伝統的なインターフェイスはもちろん、さらに Win32 GUIでは幾つかの操作に見慣れたWindowsのコンポーネントを使用することができ る。 diff --git a/doc/gui_x11.jax b/doc/gui_x11.jax index 4ff53d82f..16bb936f4 100644 --- a/doc/gui_x11.jax +++ b/doc/gui_x11.jax @@ -4,7 +4,7 @@ VIMリファレンスマニュアル by Bram Moolenaar -Vimのグラフィカルユーザーインタフェース *gui-x11* *GUI-X11* +Vimのグラフィカルユーザーインターフェイス *gui-x11* *GUI-X11* *Athena* *Motif* 1. X11 GUIの開始 |gui-x11-start| 2. GUIリソース |gui-resources| @@ -383,7 +383,7 @@ Vimのコマンドラインオプションに '--socketid' と10進数や16進 Vimは通常のGtkWindowを使わず、指定された値を使いGtkPlugウィジェットを作成す る。これはVimがGTK+プラグインとして振る舞うことを可能にする。 -これはプログラマ向けのインターフェースであり、それをサポートするアプリケーショ +これはプログラマ向けのインターフェイスであり、それをサポートするアプリケーショ ン無しではまったく役に立たない。GTK+ソケットについての詳細は次のURLを参考にす ること。 http://www.gtk.org/api/ diff --git a/doc/help.jax b/doc/help.jax index b27322b02..7d23cb634 100644 --- a/doc/help.jax +++ b/doc/help.jax @@ -152,24 +152,24 @@ VIM は Vi IMproved の略です。VIM の大部分は Bram Moolenaar によっ |rileft.txt| 右横書き (書字方向が右から左になるモード) GUI ~ -|gui.txt| グラフィカルユーザーインターフェース (GUI) +|gui.txt| グラフィカルユーザーインターフェイス (GUI) |gui_w16.txt| Windows 3.1 GUI |gui_w32.txt| Win32 GUI |gui_x11.txt| X11 GUI -拡張インターフェース ~ +拡張インターフェイス ~ |if_cscop.txt| cscopeを使う -|if_lua.txt| Lua インターフェース -|if_mzsch.txt| MzScheme インターフェース -|if_perl.txt| Perl インターフェース -|if_pyth.txt| Python インターフェース -|if_sniff.txt| SNiFF+ インターフェース -|if_tcl.txt| Tcl インターフェース +|if_lua.txt| Lua インターフェイス +|if_mzsch.txt| MzScheme インターフェイス +|if_perl.txt| Perl インターフェイス +|if_pyth.txt| Python インターフェイス +|if_sniff.txt| SNiFF+ インターフェイス +|if_tcl.txt| Tcl インターフェイス |if_ole.txt| Win32のOLEオートメーション -|if_ruby.txt| Ruby インターフェース -|debugger.txt| デバッガ用のインターフェース -|workshop.txt| Sun Visual Workshop インターフェース -|netbeans.txt| NetBeans External Editor インターフェース +|if_ruby.txt| Ruby インターフェイス +|debugger.txt| デバッガ用のインターフェイス +|workshop.txt| Sun Visual Workshop インターフェイス +|netbeans.txt| NetBeans External Editor インターフェイス |sign.txt| デバッグ用の目印 バージョン情報 ~ diff --git a/doc/if_cscop.jax b/doc/if_cscop.jax index 366608115..b18d3de8d 100644 --- a/doc/if_cscop.jax +++ b/doc/if_cscop.jax @@ -5,7 +5,7 @@ *cscope* *Cscope* -この文章はVimにおけるcscopeインターフェースの使い方について述べている。 +この文章はVimにおけるcscopeインターフェイスの使い方について述べている。 cscopeはctagsのようなツールであるが、ctagsよりも多くの機能が提供されるので ctagsの代わりとみなせる。Vimではタグにジャンプするように、cscopeクエリの結果へ @@ -73,12 +73,12 @@ ctagsの代わりとみなせる。Vimではタグにジャンプするように ファイルを編集するためのエディタを指定してあると、普段viでCtrl-]や:tagコマンド でやっているようなタグからタグへの単純なジャンプはできなくなる。 -Vimのcscopeインターフェースはcscopeの行指向インターフェースを利用することでこ +Vimのcscopeインターフェイスはcscopeの行指向インターフェイスを利用することでこ れを行い、実クエリに対する出力を解釈する。cscopeのクエリの結果は最終的に通常の tagsのようになるので、普通のタグのようなジャンプ操作 (Ctrl-]や:tag) を行うこと ができ、タグスタックをCtrl-Tで逆に辿ることも可能になる。(しかしキーマップの再 定義やコマンドやオプションの設定をしないで、まったく単純にCtrl-]や:tagと同じよ -うにジャンプできるわけではないことに注意して欲しい。cscopeインターフェースがど +うにジャンプできるわけではないことに注意して欲しい。cscopeインターフェイスがど のように働くのか、どういう使い方が提案されているのかは残りのセクションを参 照。) @@ -114,7 +114,7 @@ tagsのようになるので、普通のタグのようなジャンプ操作 (Ct 使用法 :cs find {querytype} {name} - {querytype}は実際のcscopeのラインインターフェース + {querytype}は実際のcscopeのラインインターフェイス の番号(デフォルトのnviコマンド)に対応する: 0 or s: Cのシンボルを検索 @@ -468,9 +468,9 @@ SGIの開発者もまた入手可能である。このページからCscopeを 古いcscopeのクローン("cs" という名)のソースコードがネットで入手可能である。た だし様々な理由で、これはVimではサポートされない。 -オリジナルのcscopeインターフェース/サポートはAndy Kahn <ackahn@netapp.com>に +オリジナルのcscopeインターフェイス/サポートはAndy Kahn <ackahn@netapp.com>に よって書かれた。元となった構造(かなり小さいコードだった)はnviのcscopeインター -フェースから改作された。問題、提案、パッチそのほか何でも、Vimでcscopeを使うの +フェイスから改作された。問題、提案、パッチそのほか何でも、Vimでcscopeを使うの に何か持っているものがあれば彼に送って欲しい。 {訳注: もちろん日本語では送らないで下さい} *cscope-win32* diff --git a/doc/if_lua.jax b/doc/if_lua.jax index 9c2123c04..e3517d8a4 100644 --- a/doc/if_lua.jax +++ b/doc/if_lua.jax @@ -4,7 +4,7 @@ VIMリファレンスマニュアル by Luis Carvalho -Vim の Lua インターフェース *lua* *Lua* +Vim の Lua インターフェイス *lua* *Lua* 1. コマンド |lua-commands| 2. vim モジュール |lua-vim| @@ -16,7 +16,7 @@ Vim の Lua インターフェース *lua* *Lua* {Vi にはこれらのコマンドはありません} -Lua インターフェースは Vim が |+lua| 機能付きでコンパイルされたときのみ利用で +Lua インターフェイスは Vim が |+lua| 機能付きでコンパイルされたときのみ利用で きます。 ============================================================================== diff --git a/doc/if_mzsch.jax b/doc/if_mzsch.jax index 826d9e4c8..9c4056559 100644 --- a/doc/if_mzsch.jax +++ b/doc/if_mzsch.jax @@ -215,7 +215,7 @@ NOTE 入される。 (curr-buff) カレントバッファ(オブジェクト)を取得する。 バッファを変更するには他の MzScheme イン - ターフェース手続きを使う。 + ターフェイス手続きを使う。 (buff-count) バッファの総数を取得する。 (get-next-buff [buffer]) 次のバッファを取得する (get-prev-buff [buffer]) 前のバッファを取得する。それ以上前が存在し @@ -254,7 +254,7 @@ MzScheme の式を評価してその結果を VimL の値に変換したもの ============================================================================== 6. 関数参照を使う *mzscheme-funcref* -MzScheme インターフェースでは関数参照 (|Funcref|) が使えます。Vim の関数を +MzScheme インターフェイスでは関数参照 (|Funcref|) が使えます。Vim の関数を Scheme から直接呼び出せます。例: > function! MyAdd2(arg) return a:arg + 2 diff --git a/doc/if_perl.jax b/doc/if_perl.jax index 08783079b..c34751b3a 100644 --- a/doc/if_perl.jax +++ b/doc/if_perl.jax @@ -6,14 +6,14 @@ Perl と Vim *perl* *Perl* -1. Perl のファイルを編集する |perl-editing| -2. Perl インタフェイス付きのコンパイル |perl-compiling| -3. Perl インタフェイスを使う |perl-using| -4. 動的ローディング |perl-dynamic| +1. Perl のファイルを編集する |perl-editing| +2. Perl インターフェイス付きのコンパイル |perl-compiling| +3. Perl インターフェイスを使う |perl-using| +4. 動的ローディング |perl-dynamic| {Vi にはこれらのコマンドはありません} -Perl インタフェイスは、Vim を |+perl| 機能付きでコンパイルしている場合にのみ +Perl インターフェイスは、Vim を |+perl| 機能付きでコンパイルしている場合にのみ 利用できます。 ============================================================================== @@ -33,13 +33,13 @@ Perl スクリプトの "pltags.pl" を使うこともできます。これは $ ディレクトリにあります。これは今のところ最新のctagsよりも高機能です。 ============================================================================== -2. Perl インタフェイス付きのコンパイル *perl-compiling* +2. Perl インターフェイス付きのコンパイル *perl-compiling* -Perl インタフェイス付きで Vim をコンパイルするには、5.004 もしくはそれ以上のバー -ジョンの Perl が必要です。Perl は Vim をコンパイルする前にインストールしておか -なければなりません。Vim の Perl インタフェイスは、公式にリリースされたバージョ -ンである Perl 5.003 では動作しません! Perl 5.003_05 もしくはそれ以上であれば、 -たぶん動作するでしょう。 +Perl インターフェイス付きで Vim をコンパイルするには、5.004 もしくはそれ以上の +バージョンの Perl が必要です。Perl は Vim をコンパイルする前にインストールして +おかなければなりません。Vim の Perl インターフェイスは、公式にリリースされた +バージョンである Perl 5.003 では動作しません! Perl 5.003_05 もしくはそれ以上で +あれば、たぶん動作するでしょう。 Vim への Perl パッチは、次の方によって作成されました: Sven Verdoolaege <skimo@breughel.ufsia.ac.be> @@ -50,7 +50,7 @@ http://www.perl.com/ ActiveState のものも動作するでしょう。 ============================================================================== -3. Perl インタフェイスを使う *perl-using* +3. Perl インターフェイスを使う *perl-using* *:perl* *:pe* :pe[rl] {cmd} Perl コマンド {cmd} を実行します。現在のパッケージは diff --git a/doc/if_pyth.jax b/doc/if_pyth.jax index 743f9810f..5c8e1e388 100644 --- a/doc/if_pyth.jax +++ b/doc/if_pyth.jax @@ -661,7 +661,7 @@ vim.Function オブジェクト *python-Function* ============================================================================== 8. Vim 関数 pyeval() と py3eval() *python-pyeval* -双方向インターフェースを容易にするため、|pyeval()| 関数と |py3eval()| 関数を +双方向インターフェイスを容易にするため、|pyeval()| 関数と |py3eval()| 関数を 使って Python の式を評価して、その値を VimL に渡すことができます。 ============================================================================== diff --git a/doc/if_sniff.jax b/doc/if_sniff.jax index f8a9d7c95..b212588e7 100644 --- a/doc/if_sniff.jax +++ b/doc/if_sniff.jax @@ -9,12 +9,12 @@ SNiFF+ と Vim *sniff* 1. イントロダクション |sniff-intro| 2. コマンド |sniff-commands| -3. SNiFF+ インタフェイス付きコンパイル |sniff-compiling| +3. SNiFF+ インターフェイス付きコンパイル |sniff-compiling| {Vi にはこれらのコマンドはありません} *E275* *E274* *E276* *E278* *E279* -SNiFF+ インタフェイスは、|+sniff| 機能つきでコンパイルしていた場合にのみ有効で -す。 +SNiFF+ インターフェイスは、|+sniff| 機能つきでコンパイルしていた場合にのみ有効 +です。 ============================================================================== 1. イントロダクション *sniff-intro* @@ -85,7 +85,7 @@ gen-docu sD symbol のドキュメントを生成する。 続するときには、常に読み込まれます。 ============================================================================== -3. SNiFF+ インタフェイス付きコンパイル *sniff-compiling* +3. SNiFF+ インターフェイス付きコンパイル *sniff-compiling* Vim を SNiFF+ サポートつきでコンパイルするには、extra アーカイブに含まれる2つ のソースファイルが必要になります: if_sniff.c と if_sniff.h。 diff --git a/doc/netbeans.jax b/doc/netbeans.jax index e23d7d4e0..1309ce25f 100644 --- a/doc/netbeans.jax +++ b/doc/netbeans.jax @@ -115,7 +115,7 @@ configure を引数なしで起動した場合、NetBeans インターフェイ NetBeans インターフェイスを有効にしたくない場合は、Makefile の中の "--disable-netbeans" の行のコメントアウトを解除すれば無効にできます。 -現在 NetBeans インターフェースは端末動作の Vim と GUI (GTK, GNOME, Windows, +現在 NetBeans インターフェイスは端末動作の Vim と GUI (GTK, GNOME, Windows, Athena, Motif) の GVim でのみサポートされています。 Motif をサポートするためには XPM ライブラリが必要です。XPM の最新バージョン diff --git a/doc/os_390.jax b/doc/os_390.jax index 4956fc3d4..88eaf5a3a 100644 --- a/doc/os_390.jax +++ b/doc/os_390.jax @@ -105,7 +105,7 @@ Motif ライブラリの z/OS への移植において、プルダウンメニ - ハングル文字入力 (|hangul|) - 暗号化サポート (|encryption|) - Langmap (|'langmap'|) - - Python インターフェース (|Python|) + - Python インターフェイス (|Python|) - "右左" 書きモード (|'rightleft'|) - SNiFF+ インターフェイス (|sniff|) - TCL インターフェイス (|tcl|) diff --git a/doc/os_beos.jax b/doc/os_beos.jax index 0db30f9e8..d8588082f 100644 --- a/doc/os_beos.jax +++ b/doc/os_beos.jax @@ -93,7 +93,7 @@ CodeWarriorコンパイラを購入するならばhttp://www.metrowerks.com/を ところをそれをこなせるほかのリンカは存在しない。 ただしそのリンカでは、PerlやPythonが正しくインストールされていたとしても、それ -らのインターフェースをVimに含めることはできない。 |beos-perl| +らのインターフェイスをVimに含めることはできない。 |beos-perl| ============================================================================== 3. Terminalでのタイムアウト *beos-timeout* diff --git a/doc/quotes.jax b/doc/quotes.jax index bfea579c5..7ce03a875 100644 --- a/doc/quotes.jax +++ b/doc/quotes.jax @@ -116,7 +116,7 @@ VIMの法則 {訳注: 数学の公式風に}: オプションが本当に優秀でとてもパワフルだ。 (Anish Maharaj) -ユーザーインターフェースのデザインは春であり、80x24テキスト専用モードのブティッ +ユーザーインターフェイスのデザインは春であり、80x24テキスト専用モードのブティッ クからの「言葉は復讐に戻った!」。ViエディタのクローンであるVIMは、5.0のシン タックスハイライトによって3月のデスクトップに眩暈のするパステルの景色をもたら した。金切り声とカスタマイズ性、VIMは伝統的なViのシングルキーマクロ集に独自の @@ -202,8 +202,8 @@ VIMを使うことがこんなに素晴らしいなんて未だに信じられ Croote) Emacsは起動と実行にかなり時間がかかり、実際に使用するには大きくかさばってい -て、インターフェースは助けになるよりもむしろ混乱させる。しかしながらVIMは小さ -く、早く、パワフルで、素晴らしいインターフェースを持っていて、あらゆる用途に使 +て、インターフェイスは助けになるよりもむしろ混乱させる。しかしながらVIMは小さ +く、早く、パワフルで、素晴らしいインターフェイスを持っていて、あらゆる用途に使 うことができる。 (Paal Ditlefsen) VIM3.0を初めて得た時から、非常に熱狂した。ほとんど何の問題点もみあたらなかっ diff --git a/doc/usr_29.jax b/doc/usr_29.jax index 0de7191a9..9c62dd92f 100644 --- a/doc/usr_29.jax +++ b/doc/usr_29.jax @@ -267,7 +267,7 @@ CTRL-] を使うとカーソルの下にある識別子の定義にジャンプ 'taglength' オプションはタグの識別に使う文字数を指定するのに使います。 -SNiFF+ プログラムを使う場合は |sniff| インターフェースが使えます。SNiFF+ は商 +SNiFF+ プログラムを使う場合は |sniff| インターフェイスが使えます。SNiFF+ は商 用のアプリケーションです。 cscope はフリーのプログラムです。識別子の定義場所を探すだけでなく、それが使わ diff --git a/doc/usr_41.jax b/doc/usr_41.jax index f0da0021e..943463512 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -824,7 +824,7 @@ Quickfixとロケーションリスト: *quickfix-functions* histget() 履歴の項目を得る histnr() 履歴リストの最大インデックスを得る -対話インターフェース: *interactive-functions* +対話インターフェイス: *interactive-functions* browse() ファイル選択ダイアログを開く browsedir() ディレクトリ選択ダイアログを開く confirm() ユーザーに選択をさせる diff --git a/doc/usr_90.jax b/doc/usr_90.jax index 2a9464f90..ff261be75 100644 --- a/doc/usr_90.jax +++ b/doc/usr_90.jax @@ -196,10 +196,10 @@ make とは別に "configure" を実行する方法もあります。オプシ いつどの機能が有効になるのかは |+feature-list| を参照してください。 - --enable-perlinterp Perl インターフェースを有効にする。同様に、 + --enable-perlinterp Perl インターフェイスを有効にする。同様に、 ruby、python、tclなどもあります。 - --disable-gui GUI インターフェースをコンパイルしない。 + --disable-gui GUI インターフェイスをコンパイルしない。 --without-x X-windows の機能をコンパイルしない。 これら二つが指定された場合、Vim は X サーバー に接続しません。起動が早くなります。 diff --git a/doc/various.jax b/doc/various.jax index 61f222794..9652cefab 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -372,8 +372,8 @@ N *+lispindent* |'lisp'| N *+listcmds* バッファリストや引数リストに対するVimコマンド |buffer-hidden| |:argdelete| N *+localmap* バッファローカルなマップのサポート |:map-local| -m *+lua* |Lua| インターフェース -m *+lua/dyn* |Lua| インターフェース |/dyn| +m *+lua* |Lua| インターフェイス +m *+lua/dyn* |Lua| インターフェイス |/dyn| N *+menu* |:menu| N *+mksession* |:mksession| N *+modify_fname* |filename-modifiers| @@ -391,31 +391,31 @@ N *+mouse_xterm* Unix のみ: xtermマウス操作 |xterm-mouse| N *+multi_byte* 16ビット、32 ビット文字 |multibyte| *+multi_byte_ime* Win32 IMEサポート N *+multi_lang* 多言語サポート |multi-lang| -m *+mzscheme* Mzscheme インターフェース |mzscheme| -m *+mzscheme/dyn* Mzscheme インターフェース |mzscheme-dynamic| |/dyn| +m *+mzscheme* Mzscheme インターフェイス |mzscheme| +m *+mzscheme/dyn* Mzscheme インターフェイス |mzscheme-dynamic| |/dyn| m *+netbeans_intg* |netbeans| m *+ole* Win32 GUI のみ: |ole-interface| N *+path_extra* 'path'や'tags'での上下階の検索 -m *+perl* Perl インターフェース |perl| -m *+perl/dyn* Perl インターフェース |perl-dynamic| |/dyn| +m *+perl* Perl インターフェイス |perl| +m *+perl/dyn* Perl インターフェイス |perl-dynamic| |/dyn| N *+persistent_undo* 永続 undo |undo-persistence| *+postscript* |:hardcopy| でPostScriptファイルの書き出し N *+printer* |:hardcopy| コマンド H *+profile* |:profile| コマンド -m *+python* Python 2 インターフェース |python| -m *+python/dyn* Python 2 インターフェース |python-dynamic| |/dyn| -m *+python3* Python 3 インターフェース |python| -m *+python3/dyn* Python 3 インターフェース |python-dynamic| |/dyn| +m *+python* Python 2 インターフェイス |python| +m *+python/dyn* Python 2 インターフェイス |python-dynamic| |/dyn| +m *+python3* Python 3 インターフェイス |python| +m *+python3/dyn* Python 3 インターフェイス |python-dynamic| |/dyn| N *+quickfix* |:make| と |quickfix| コマンド N *+reltime* |reltime()| 関数, 'hlsearch'/'incsearch' タイムアウト, 'redrawtime' オプション B *+rightleft* 右から左へタイプ |'rightleft'| -m *+ruby* Ruby インターフェース |ruby| -m *+ruby/dyn* Ruby インターフェース |ruby-dynamic| |/dyn| +m *+ruby* Ruby インターフェイス |ruby| +m *+ruby/dyn* Ruby インターフェイス |ruby-dynamic| |/dyn| N *+scrollbind* |'scrollbind'| B *+signs* |:sign| N *+smartindent* |'smartindent'| -m *+sniff* SniFFインターフェース |sniff| +m *+sniff* SniFFインターフェイス |sniff| N *+startuptime* |--startuptime| 引数 N *+statusline* オプション'statusline'、'rulerformat'と、 'titlestring'と'iconstring'の特殊フォーマット @@ -425,8 +425,8 @@ N *+syntax* 構文強調 |syntax| N *+tag_binary* タグファイル内の高速(二分探査)検索 |tag-binary-search| N *+tag_old_static* 静的タグの古い方法 |tag-old-static| m *+tag_any_white* tagsファイル内で空白文字を許す |tag-any-white| -m *+tcl* Tcl インターフェース |tcl| -m *+tcl/dyn* Tcl インターフェース |tcl-dynamic| |/dyn| +m *+tcl* Tcl インターフェイス |tcl| +m *+tcl/dyn* Tcl インターフェイス |tcl-dynamic| |/dyn| *+terminfo* |terminfo|でtermcapを代替 N *+termresponse* |t_RV| と |v:termresponse| のサポート N *+textobjects* |text-objects| 選択 diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index 8915e6745..2b18d9fc3 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -131,7 +131,7 @@ Vi との互換性 |'compatible'| 様々なシステムのサポート Vim は次のシステムで利用できます: - すべての Unix システム (テストされたすべてのシステムで動作しますが - GUI と Perl インターフェースはどこでも動作するわけではないかもしれま + GUI と Perl インターフェイスはどこでも動作するわけではないかもしれま せん)。 - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). - リアルモードの MS-DOS (他のドライバーは必要ありません) @@ -161,12 +161,12 @@ Vi との互換性 |'compatible'| ンチが作られます。これにより、テキストを永遠に失うという危険性なしにテ キストをどの状態にでも戻すことができます。|undo-tree| -グラフィカルユーザーインターフェース(GUI) |gui| +グラフィカルユーザーインターフェイス(GUI) |gui| GUI (メニュー、マウス、スクロールバー、などなど)のサポートが含められま した。独自のメニューを定義することもできます。CTRL/SHIFT/ALT とキーの 組み合わではなく特殊なキーとマウスの組み合わせというよりよい方法がサ ポートされます。さまざまなプラットフォーム、X11 (Motif と Athena イン - ターフェース)、Win32 (Windows95 か、より最新のもの), BeOS, Amiga, + ターフェイス)、Win32 (Windows95 か、より最新のもの), BeOS, Amiga, Macintoshでサポートされています。 複数のウィンドウとバッファ |windows.txt| diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index be206458b..507b15347 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -736,7 +736,7 @@ Vi を現代化する機能: マウスは xterm や MS-DOS でサポートされています。カーソル位置を設定した り、ビジュアル領域を選択したり、レジスタを貼り付けたり、等のことができま す。 - グラフィカル・ユーザー・インターフェース(GUI) + グラフィカル・ユーザー・インターフェイス(GUI) 他の昨今のエディタと同様です。その上、独自のメニューを追加することも非常 に簡単です。もちろん、コンソール版の Vim も今なおサポートされており、幅広 く利用されています。 From 09cb0bcb55b368b7fe446df5de8517a92bb6513a Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 20 Dec 2015 23:52:54 +0900 Subject: [PATCH 709/783] Add the missing space --- doc/autocmd.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index d46ec23b6..df0207ce1 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -1114,7 +1114,7 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに 特定のグループとして自動コマンドを定義するには、次の手順に従うこと。 1. ":augroup {name}" によってグループを選択する。 2. ":au!" によって古い自動コマンドを全て消去する。 -3.自動コマンドを定義する。 +3. 自動コマンドを定義する。 4. ":augroup END" によって既定のグループに戻る。 例: > From 131164f5856c5a0e16c1f0632ebc06aa45dfc5f3 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 21 Dec 2015 00:19:24 +0900 Subject: [PATCH 710/783] Fix layout --- doc/autocmd.jax | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index df0207ce1..7c64e3cfe 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -1151,12 +1151,11 @@ NOTE オプション 'eventignore' はここにも適用されることに注意 < 無限の循環に陥らないよう注意すること。また |autocmd-nested| を参照すること。 - 引数 [group] が省かれると、全てのグループの - 自動コマンドが実行される。 [group] が指定されると、そ - れにマッチするグループの自動コマンドのみが実行される。 - NOTE 定義されていないグループ名を使うと、エラーメッ - セージが表示される。 - + 引数 [group] が省かれると、全てのグループの自動コマン + ドが実行される。 [group] が指定されると、それにマッチ + するグループの自動コマンドのみが実行される。NOTE 定義 + されていないグループ名を使うと、エラーメッセージが表示 + される。 *<nomodeline>* 自動コマンドを適用した後にモードラインが処理される。 ファイルを編集するときと同じように、自動コマンドでなさ From 21435967a9a841113feb8863dd351717b27d22a3 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Wed, 23 Dec 2015 18:43:53 +0900 Subject: [PATCH 711/783] Remove the confusing space --- doc/usr_04.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/usr_04.jax b/doc/usr_04.jax index a74bbded4..26c5084b5 100644 --- a/doc/usr_04.jax +++ b/doc/usr_04.jax @@ -307,8 +307,8 @@ Note: ビジュアルモードの "o" と "O" はノーマルモードのコマ す。 -2 文字の入れ換え ----------------- +2文字の入れ換え +--------------- 入力しているときに、指が頭を追い越してしまうことがしばしばあります。その結果、 "the" を "teh" とタイポ (打ち間違い) したりすることがあります。Vim ではこの種 From a41a329a14667f3ece7647fbdfd9c57efb609ab9 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Wed, 23 Dec 2015 21:02:36 +0900 Subject: [PATCH 712/783] =?UTF-8?q?=E3=80=8C=E3=83=9E=E3=83=BC=E3=82=AB?= =?UTF-8?q?=E3=80=8D=E3=82=92=E3=80=8C=E3=83=9E=E3=83=BC=E3=82=AB=E3=83=BC?= =?UTF-8?q?=E3=80=8D=E3=81=AB=E7=B5=B1=E4=B8=80=20(Issue#139)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/options.jax | 4 ++-- doc/quickref.jax | 2 +- doc/usr_03.jax | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 12aaa4679..c741b4c24 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1706,8 +1706,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vimが |+folding| 機能付きでコンパイルされたときのみ 有効} コメント用のテンプレート (雛形)。値の中の "%s" はコメントの内容と置き - 換えられる。現在のところ、折り畳み用のマーカを追加するためにのみ使用さ - れている。|fold-marker| を参照。 + 換えられる。現在のところ、折り畳み用のマーカーを追加するためにのみ使用 + されている。|fold-marker| を参照。 *'compatible'* *'cp'* *'nocompatible'* *'nocp'* 'compatible' 'cp' 切替 (既定では オン、ファイル|vimrc|または diff --git a/doc/quickref.jax b/doc/quickref.jax index bf667c2a3..dafb58b24 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -659,7 +659,7 @@ 'colorcolumn' 'cc' 列を強調表示する 'columns' 'co' 画面上の桁数 'comments' 'com' コメント行の開始を示すパターン -'commentstring' 'cms' コメント用テンプレート(foldマーカ用) +'commentstring' 'cms' コメント用テンプレート(foldマーカー用) 'compatible' 'cp' 可能な限りVi互換で動く 'complete' 'cpt' 挿入モードでの補完の動きを指定する 'completefunc' 'cfu' 挿入モードでの補完に使われる関数 diff --git a/doc/usr_03.jax b/doc/usr_03.jax index 5d5c562e0..b36b1e1ce 100644 --- a/doc/usr_03.jax +++ b/doc/usr_03.jax @@ -397,15 +397,15 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが /the\> -"\>" というのは特別なマーカで、単語がここで終わっている時だけヒットします。 +"\>" というのは特別なマーカーで、単語がここで終わっている時だけヒットします。 同じように "\<" は単語がここで始まっている時にだけヒットします。つまり、"the" という単語だけを探したい場合は、次のようにします。 > /\<the\> これだと、"there" とか "soothe" にはヒットしません。なお、"*" と "#" コマンド -は上の「単語の先頭」と「単語の末尾」マーカを使って、完全に一致する単語だけを -探します。(単語の一部として検索したい時は "g*" と "g#" コマンドを使います) +は上の「単語の先頭」と「単語の末尾」マーカーを使って、完全に一致する単語だけ +を探します。(単語の一部として検索したい時は "g*" と "g#" コマンドを使います) 検索結果の強調表示 From 0e8d276c25a451d42e0bec94fc603cadb4128f43 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Wed, 23 Dec 2015 21:24:07 +0900 Subject: [PATCH 713/783] =?UTF-8?q?=E3=80=8C=E3=82=A2=E3=82=A4=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=82=A2=E3=80=8D=E3=82=92=E3=80=8C=E3=82=A2=E3=82=A4?= =?UTF-8?q?=E3=83=87=E3=82=A2=E3=80=8D=E3=81=AB=E7=B5=B1=E4=B8=80=20(Issue?= =?UTF-8?q?#141)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/if_tcl.jax | 2 +- doc/intro.jax | 12 ++++++------ doc/motion.jax | 2 +- doc/quickfix.jax | 4 ++-- doc/tips.jax | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/if_tcl.jax b/doc/if_tcl.jax index f6127ede2..ba0083804 100644 --- a/doc/if_tcl.jax +++ b/doc/if_tcl.jax @@ -489,7 +489,7 @@ stdinからの入力は、今のところサポートされていない。 :tcl set n 1 :[range]tcldo set line "$n\t$line" ; incr n -このプロシージャは、各バッファでexコマンドを走らせる(Ron Aaron氏のアイディア): +このプロシージャは、各バッファでexコマンドを走らせる(Ron Aaron氏のアイデア): proc eachbuf { cmd } { foreach b [::vim::buffer list] { $b command $cmd diff --git a/doc/intro.jax b/doc/intro.jax index a495b6586..69bc4bc23 100644 --- a/doc/intro.jax +++ b/doc/intro.jax @@ -204,7 +204,7 @@ Vim エディタは Stevie をベースにしており、下記の方々のソ Zoltan Arpadffy VMS移植の作業 Tony Andrews Stevie Gert van Antwerpen MS-DOS上のDJGPPに関する変更 - Berkeley DB(3) スワップファイルの実装に関するアイディア + Berkeley DB(3) スワップファイルの実装に関するアイデア Keith Bostic Nvi Walter Briscoe Makefileの更新、様々なパッチ Ralf Brown MS-DOS用のSPAWNOライブラリ @@ -212,14 +212,14 @@ Vim エディタは Stevie をベースにしており、下記の方々のソ Marcin Dalecki GTK+ GUIへの移植、ツールバーのアイコン gettext() Kayhan Demirel ウガンダのニュースを送ってくれた - Chris & John Downey xvi (マルチウィンドウバージョンのアイディア) + Chris & John Downey xvi (マルチウィンドウバージョンのアイデア) Henk Elbers 最初のVMSへの移植 Daniel Elstner GTK+ 2 への移植 Eric Fischer Macへの移植、'cindent'、その他の改良 Benji Fisher たくさんのユーザーの質問に答えてくれた Bill Foster Athena GUIへの移植 Google 週に一日 Vim の仕事をさせてくれる - Loic Grenie xvim (マルチウィンドウバージョンのアイディア) + Loic Grenie xvim (マルチウィンドウバージョンのアイデア) Sven Guckes Vimのプロモーター、 以前のWWWページ管理者 Darren Hiebert Exuberant ctags Jason Hildebrand GTK+ 2 への移植 @@ -264,9 +264,9 @@ Vim エディタは Stevie をベースにしており、下記の方々のソ Stefan 'Sec' Zehl vim.orgの管理 バグレポートや提案を送ってくれた人々に感謝します。あまりにたくさんいるので、こ -こで彼らの名前について触れることはできませんが。これらの人々のアイディアがなけ -れば、Vim は今の Vim にはならなかったことでしょう: 彼らが Vim を生かしつづけた -のです! +こで彼らの名前について触れることはできませんが。これらの人々のアイデアがなけれ +ば、Vim は今の Vim にはならなかったことでしょう: 彼らが Vim を生かしつづけたの +です! *love* *peace* *friendship* *gross-national-happiness* diff --git a/doc/motion.jax b/doc/motion.jax index 05384dbd2..ce0491cf5 100644 --- a/doc/motion.jax +++ b/doc/motion.jax @@ -837,7 +837,7 @@ g'{mark} g`{mark} マークは消されます。 小文字のマークはオペレータコマンドとともに使うことができます。例: -"d't" は現在のカーソル位置からマーク 't' までの行を削除します。アイディア: +"d't" は現在のカーソル位置からマーク 't' までの行を削除します。アイデア: マーク 't' をTop 位置に設定したり、'b' を Bottom 位置に設定したりします。小文 字のマークはアンドゥとリドゥによって復元することができます。 diff --git a/doc/quickfix.jax b/doc/quickfix.jax index 61f0b55b5..b38de73dd 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -28,8 +28,8 @@ Vimには編集-コンパイル-編集のサイクルを加速するための特別なモードがある。これ はAmigaのManx's Aztec C compilerのquickfixオプションにインスパイアされた。Cコ ンパイラから出力されたエラーメッセージをファイルに保存し、Vimでそのエラーに -ジャンプするというアイディアである。エラーメッセージを全部覚えておかなくても、 -それぞれの問題を検証し、修正することができる。 +ジャンプするというアイデアである。エラーメッセージを全部覚えておかなくても、そ +れぞれの問題を検証し、修正することができる。 QuickFixコマンドはより一般的に、ファイル中の位置のリストを作成し、ジャンプする ために使うことができる。例えば、|:vimgrep|はパターンにマッチした位置をリストす diff --git a/doc/tips.jax b/doc/tips.jax index b0702d75a..a015b29c2 100644 --- a/doc/tips.jax +++ b/doc/tips.jax @@ -4,7 +4,7 @@ VIMリファレンスマニュアル by Bram Moolenaar -Vim を使うときのヒントとアイディア *tips* +Vim を使うときのヒントとアイデア *tips* これは、多くのユーザーにとって便利だろうと思うことの一部です。wiki には もっと多くの tips があります。http://www.vim.org @@ -116,7 +116,7 @@ GNU id-tools と Vim を連動させる。 この方法は id-utils-3.2 を使って動作を確認しました (id-utlis-3.2 は id-tools アーカイブの名前です。近くの gnu-ftp-mirror から入手してください。) -[このアイディアはAndreas Kutscheraさんから頂いたものです] +[このアイデアはAndreas Kutscheraさんから頂いたものです] ============================================================================== xterm でのスクリーンの切り替え *xterm-screens* *xterm-save-screen* From 2fb6624585e1150e12a43d418830b6aa1f702047 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Wed, 23 Dec 2015 22:47:20 +0900 Subject: [PATCH 714/783] =?UTF-8?q?=E3=80=8C=E3=83=9E=E3=83=8D=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=83=A3=E3=80=8D=E3=82=92=E3=80=8C=E3=83=9E=E3=83=8D?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=83=A3=E3=83=BC=E3=80=8D=E3=81=AB=E7=B5=B1?= =?UTF-8?q?=E4=B8=80=20(Issue#140)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/ft_ada.jax | 4 ++-- doc/gui_x11.jax | 25 +++++++++++++------------ doc/options.jax | 12 ++++++------ doc/starting.jax | 6 +++--- doc/syntax.jax | 2 +- doc/term.jax | 4 ++-- doc/usr_09.jax | 6 +++--- doc/usr_31.jax | 2 +- doc/usr_90.jax | 4 ++-- 9 files changed, 33 insertions(+), 32 deletions(-) diff --git a/doc/ft_ada.jax b/doc/ft_ada.jax index 0e326fdba..1ad370ce6 100644 --- a/doc/ft_ada.jax +++ b/doc/ft_ada.jax @@ -110,8 +110,8 @@ NOTE: "gnat xref -v" はとてもトリッキーで診断情報をほとんど xref -v -aI../Include adacl.ads" を使うこと。 3) "gnat xref -v -aI../Include *.ad?" はうまく動かないので、代わりに "cd ../Include" と "gnat xref -v *.ad?" を使うこと。 -4) プロジェクトマネージャ対応は完全に壊れている。"gnat xref -Padacl.gpr" と試 - してみるのもいけない。 +4) プロジェクトマネージャー対応は完全に壊れている。"gnat xref -Padacl.gpr" と + 試してみるのもいけない。 5) タグファイルがソートされているとVimは高速に検索できるので、"sort --unique --ignore-case --output=tags tags" とすること。 6) タグファイルがソートされていることを示すために、1行目に "!_TAG_FILE_SORTED diff --git a/doc/gui_x11.jax b/doc/gui_x11.jax index 16bb936f4..2d1b84dad 100644 --- a/doc/gui_x11.jax +++ b/doc/gui_x11.jax @@ -261,18 +261,19 @@ geometry引数の例: > MotifあるいはAthenaでコンパイルされたときには、Vimはデフォルトで白黒のアイコン を用いる。色付きのVimアイコンは$VIMRUNTIME/vim32x32.xpmとして含まれる。GTK+に ついては、組み込みのアイコンが用いられる。不幸にも、どのようにしてそれをインス -トールするかはあなたのウィンドウマネージャに依存する。これを使用するときには、 -白黒のアイコンを取り除くために、'guioptions' から 'i' フラグを取り除くとよい: > +トールするかは、あなたのウィンドウマネージャーに依存する。これを使用するときに +は、白黒のアイコンを取り除くために、'guioptions' から 'i' フラグを取り除くとよ +い: > :set guioptions-=i -fvwm*ファミリのウィンドウマネージャの1つを使用するならば、単にあなたの.fvwm2rc -構成ファイルにこの行を追加するとよい: > +fvwm*ファミリのウィンドウマネージャーの 1 つを使用するならば、単にあなたの +.fvwm2rc 構成ファイルにこの行を追加するとよい: > Style "vim" Icon vim32x32.xpm -アイコンファイルの場所がウィンドウマネージャのImagePath文と一致することを確か -めなくてはならない。あなたの.fvwm2rcを修正するか、あるいは事前に定義されたディ -レクトリの1つにアイコンをドロップするとよい。 > +アイコンファイルの場所がウィンドウマネージャーのImagePath文と一致することを確 +かめなくてはならない。あなたの.fvwm2rcを修正するか、あるいは事前に定義された +ディレクトリの1つにアイコンをドロップするとよい。 > ImagePath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps @@ -281,7 +282,7 @@ Note: 古いバージョンのfvwmでは "ImagePath" ではなく "IconPath" を CDE "dtwm" (Motifから派生)については、.Xdefaultsにこの行を追加するとよい: > Dtwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm -"mwm" (Motifウィンドウマネージャ)については、その行はこうなるだろう: > +"mwm" (Motifウィンドウマネージャー)については、その行はこうなるだろう: > Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm X11で利用できるマウスポインタ *X11_mouse_shapes* @@ -396,7 +397,7 @@ Note この機能は最新バージョンのGTKを必要とする。GTK 1.2.10 GNOME GUI は GTK+ バージョンと同じように機能する。どのように動作するかは上述 の |GTK+| を参照。しかし若干の違いがあり、素の GTK+ GUI では利用できない重要 -な機能が 1 つ実装されている。それはセッションマネージャとの相互作用である。 +な機能が 1 つ実装されている。それはセッションマネージャーとの相互作用である。 |gui-gnome-session| 見た目の違い: @@ -419,8 +420,8 @@ GNOME セッションサポート *gui-gnome-session* *gnome-session* そうしなかった場合は、現在のセッションが |:mksession| コマンドを使ってディス クに保存され、次回のログオン時に復元される。 -GNOME セッションサポートはおそらく KDE セッションマネージャでも機能する。も -しあなたが何かの問題に直面したらバグレポートを彼らに送っていただきたい。 +GNOME セッションサポートはおそらく KDE セッションマネージャーでも機能する。 +もしあなたが何かの問題に直面したらバグレポートを彼らに送っていただきたい。 Note: 自動的なセッションの保存はあなたのセッションファイルやスクリプト、オー トコマンドの衝突を避けるために実に適切に働く。その手段としては: @@ -431,7 +432,7 @@ Note: 自動的なセッションの保存はあなたのセッションファ - 内部変数の |v:this_session| はセッションの保存で変更されない。さらに、再び ログインしたときに元の値に復元される。 -GUI ウィンドウの位置とサイズは保存されない、それはウィンドウマネージャの仕事 +GUI ウィンドウの位置とサイズは保存されない、それはウィンドウマネージャーの仕事 である。しかし、GTK+ 2 サポートを有効にしてコンパイルされていると、Vim はウィ ンドウの役目を復元して WM がウィンドウを識別するのを補佐する (コマンドライン引 数の|--role| を使う)。 diff --git a/doc/options.jax b/doc/options.jax index c741b4c24..9c32c509a 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -3821,12 +3821,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる く水平方向の配置を使うが、収まらないときには結局、垂直配置が使 われる。 *'go-p'* - 'p' X11のGUIにおいて、ポインタ・コールバックを使う。ウィンドウマネー - ジャの中にはこれが必要なものもある。カーソルが正しいタイミング - で点滅したり変形したりしないときは、これを追加してみること。こ - れはGUIを開始する前に設定しなければならない。ユーザーのファイル - |gvimrc|内で設定すること。GUIが開始した後にこのフラグを追加した - り取り除いたりしても、効果はない。 + 'p' X11のGUIにおいて、ポインタ・コールバックを使う。ウィンドウマ + ネージャの中にはこれが必要なものもある。カーソルが正しいタイ + ミングで点滅したり変形したりしないときは、これを追加してみる + こと。これはGUIを開始する前に設定しなければならない。ユーザー + のファイル |gvimrc| 内で設定すること。GUIが開始した後にこのフ + ラグを追加したり取り除いたりしても、効果はない。 *'go-F'* 'F' フッターを追加する。Motifでのみ有効である。|gui-footer| を参照。 diff --git a/doc/starting.jax b/doc/starting.jax index bdeda5b02..6c9f6ac06 100644 --- a/doc/starting.jax +++ b/doc/starting.jax @@ -578,9 +578,9 @@ VMSでは全てのオプション引数は小文字であるとみなされる --role {role} *--role* GTK+ 2 GUIのみ。メインウィンドウの役割(role)を{role}に設定す - る。ウィンドウの役割はウィンドウマネージャがウィンドウを識別し - て、ウィンドウの位置等を復元するのに使われる。この引数はログイ - ン時にセッションを復元するときに自動的に使用される。 + る。ウィンドウの役割はウィンドウマネージャーがウィンドウを識 + 別して、ウィンドウの位置等を復元するのに使われる。この引数は + ログイン時にセッションを復元するときに自動的に使用される。 |gui-gnome-session|を参照。 {Vi にはない} diff --git a/doc/syntax.jax b/doc/syntax.jax index b39bec473..45cf218cc 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -4971,7 +4971,7 @@ xtermのあるバージョン(とlinuxコンソールのようなターミナル が、まだ全ての人がそれを使っているわけではない。] これらを即座に更新するには.XdefaultsファイルをXオプションデータベースマネー -ジャに再読み込みさせる(.Xdefaultsを変更したときはこれを行う必要がある): > +ジャーに再読み込みさせる(.Xdefaultsを変更したときはこれを行う必要がある): > xrdb -merge ~/.Xdefaults < *xterm-blink* *xterm-blinking-cursor* diff --git a/doc/term.jax b/doc/term.jax index 5cca2492f..8c89fd7d6 100644 --- a/doc/term.jax +++ b/doc/term.jax @@ -764,8 +764,8 @@ xterm では Shift と Ctrl キーを押しながらマウスを使うことは ノーマルモード、ビジュアルモード、選択モードで Alt キーを押したまま右ボタンを クリックすると、選択範囲が矩形になります。ただし、'mousemodel' が "popup" のと きは、Alt キーを押しながら左ボタンをクリックします。Alt キーを押しているときは -マウスイベントをウィンドウマネージャが処理(ウィンドウ移動など)してしまうシステ -ムでは機能しないことに注意してください。 +マウスイベントをウィンドウマネージャーが処理(ウィンドウ移動など)してしまうシス +テムでは機能しないことに注意してください。 *double-click* MS-DOS、Win32、xterm (関数 gettimeofday() が使用できるとき)において、GUI が有 diff --git a/doc/usr_09.jax b/doc/usr_09.jax index adf043582..0ed612714 100644 --- a/doc/usr_09.jax +++ b/doc/usr_09.jax @@ -58,9 +58,9 @@ GUI 版の Vim がインストールされていない場合は起動できま ------------------ 最上部はウィンドウタイトルです。この部分はウィンドウシステム (Windows や X の -ウィンドウマネージャなど) によって描画されます。Vim はカレントファイルの名前を -タイトルに設定します。ファイル名が先頭に表示され、それから、記号、カッコで囲ま -れたディレクトリ名が表示されます。記号には次の意味があります。 +ウィンドウマネージャーなど) によって描画されます。Vim はカレントファイルの名前 +をタイトルに設定します。ファイル名が先頭に表示され、それから、記号、カッコで囲 +まれたディレクトリ名が表示されます。記号には次の意味があります。 - ファイルは変更不可。(例: ヘルプファイル) + ファイルは変更された。 diff --git a/doc/usr_31.jax b/doc/usr_31.jax index 21dea820f..4fbb1a662 100644 --- a/doc/usr_31.jax +++ b/doc/usr_31.jax @@ -169,7 +169,7 @@ GUI を使っていない場合でも、ファイルエクスプローラを使 < Note: 指定した位置と実際に移動した位置が少しずれることがあります。これはウィ - ンドウの枠があるからです。ウィンドウマネージャがずれを引き起こします。 + ンドウの枠があるからです。ウィンドウマネージャーがずれを引き起こします。 このコマンドを起動スクリプトに書けば好きな位置でウィンドウを開くことができま す。 diff --git a/doc/usr_90.jax b/doc/usr_90.jax index ff261be75..483abb73d 100644 --- a/doc/usr_90.jax +++ b/doc/usr_90.jax @@ -422,8 +422,8 @@ Vim をアンインストールする機会はあまりないと思いますが UNIX ----- -Vim をパッケージからインストールした場合は、パッケージマネージャを確認し、パッ -ケージの除去方法を調べてください。 +Vim をパッケージからインストールした場合は、パッケージマネージャーを確認し、 +パッケージの除去方法を調べてください。 ソースからインストールした場合は、次のコマンドでアンインストールできます: > make uninstall From 1680d90236b920f728aee6b26bd439d871bfaf4f Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Sat, 26 Dec 2015 21:22:41 +0900 Subject: [PATCH 715/783] =?UTF-8?q?=E8=A8=82=E6=AD=A3=E5=BF=98=E3=82=8C?= =?UTF-8?q?=EF=BC=88=E3=82=A2=E3=82=A4=E3=83=87=E3=82=A3=E3=82=A2=E3=80=81?= =?UTF-8?q?=E3=83=9E=E3=83=8D=E3=83=BC=E3=82=B8=E3=83=A3=EF=BC=89=E3=82=92?= =?UTF-8?q?=E8=A8=82=E6=AD=A3=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/intro.jax | 4 ++-- doc/options.jax | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/intro.jax b/doc/intro.jax index 69bc4bc23..a20b97023 100644 --- a/doc/intro.jax +++ b/doc/intro.jax @@ -193,8 +193,8 @@ Vim の大部分は Bram Moolenaar<Bram@vim.org> によって書かれました Alan P.W. Hewett Mark Horton -Vim エディタは Stevie をベースにしており、下記の方々のソフトウェア (のアイディ -ア) も参考にしています。他の人々は私に意見やパッチを送ってくれたり、Vim の良い +Vim エディタは Stevie をベースにしており、下記の方々のソフトウェア (のアイデア) +も参考にしています。他の人々は私に意見やパッチを送ってくれたり、Vim の良い 点、悪い点に関するフィードバックをしてくれました。 これらの人々の協力なくして、Vim は現在の姿にはならなかったことでしょう! diff --git a/doc/options.jax b/doc/options.jax index 9c32c509a..0486ed026 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -3822,11 +3822,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる われる。 *'go-p'* 'p' X11のGUIにおいて、ポインタ・コールバックを使う。ウィンドウマ - ネージャの中にはこれが必要なものもある。カーソルが正しいタイ - ミングで点滅したり変形したりしないときは、これを追加してみる - こと。これはGUIを開始する前に設定しなければならない。ユーザー - のファイル |gvimrc| 内で設定すること。GUIが開始した後にこのフ - ラグを追加したり取り除いたりしても、効果はない。 + ネージャーの中にはこれが必要なものもある。カーソルが正しいタイ + ミングで点滅したり変形したりしないときは、これを追加してみるこ + と。これはGUIを開始する前に設定しなければならない。ユーザーの + ファイル |gvimrc| 内で設定すること。GUIが開始した後にこのフラ + グを追加したり取り除いたりしても、効果はない。 *'go-F'* 'F' フッターを追加する。Motifでのみ有効である。|gui-footer| を参照。 From a8aaa85340f50ecc197a56fde250a64623ff1756 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Sat, 26 Dec 2015 23:32:13 +0900 Subject: [PATCH 716/783] =?UTF-8?q?=E3=81=B2=E3=82=89=E3=81=8C=E3=81=AA?= =?UTF-8?q?=E3=81=A8=E3=82=AB=E3=82=BF=E3=82=AB=E3=83=8A=E3=81=8C=E6=B7=B7?= =?UTF-8?q?=E5=9C=A8=E3=81=97=E3=81=9F=E3=82=82=E3=81=AE=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/eval.jax | 2 +- doc/if_cscop.jax | 2 +- doc/usr_41.jax | 2 +- vim_faq/vim_faq.jax | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 8f9f8625b..900e6d8be 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5992,7 +5992,7 @@ tabpagewinnr({tabarg} [, {arg}]) *tabpagewinnr()* - "$" とするとウィンドウの個数を返す。 - "#" とすると前のウィンドウ番号を返す。 役に立つ例: > - tabpagewinnr(1) " タブぺージ1のカレントウィンドウ + tabpagewinnr(1) " タブページ1のカレントウィンドウ tabpagewinnr(4, '$') " タブページ4内のウィンドウの個数 < {tabarg}が無効なときは0を返す。 diff --git a/doc/if_cscop.jax b/doc/if_cscop.jax index b18d3de8d..e50890ae5 100644 --- a/doc/if_cscop.jax +++ b/doc/if_cscop.jax @@ -32,7 +32,7 @@ ctagsの代わりとみなせる。Vimではタグにジャンプするように cscopeは貴方を助けるインタラクティブなスクリーン指向のツールです: - いつ終わるかわからない厚いソースリストのぺージをめくることなく、Cプログ + いつ終わるかわからない厚いソースリストのページをめくることなく、Cプログ ラムがどのように働くかを知る。 プログラム全体を知らなくても、バグを修正するために変更すべきコードの位 diff --git a/doc/usr_41.jax b/doc/usr_41.jax index 943463512..16f6cf07f 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -1672,7 +1672,7 @@ Vim スクリプトを書いて、それを多くの人に使ってもらうこ ください。 -へッダ +ヘッダ ------ 新しい単語を追加していくと、プラグインには複数のバージョンが存在することになり diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 507b15347..939af4f71 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -1048,7 +1048,7 @@ Vim の全ての機能にヘルプがあります。それを利用するには 展開することができます。Tabキーを押しつづけると他のマッチするキーワードに変わっ ていきます。 -へルプウィンドウでは":tag"コマンドを使ってキーワードを検索することができます。 +ヘルプウィンドウでは":tag"コマンドを使ってキーワードを検索することができます。 例えば、 > :tselect /window From 3f8a7f7f81568bbe832677433ebf0bc37f02cf6c Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Thu, 31 Dec 2015 22:56:45 +0900 Subject: [PATCH 717/783] fix typo --- doc/autocmd.jax | 4 ++-- doc/if_cscop.jax | 2 +- doc/index.jax | 4 ++-- doc/os_vms.jax | 4 ++-- doc/pi_spec.jax | 8 ++++---- doc/starting.jax | 2 +- vim_faq/vim_faq.jax | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index 7c64e3cfe..ade7dcd79 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -743,8 +743,8 @@ OptionSet オプションが設定された後。パターンは長い(短縮 ようにしている。 使用例: 'backupdir' や 'undodir' で指定された - ディレクトが存在しているかチェックし、もしなけ - ればディレクトリを作成する。 + ディレクトリが存在しているかチェックし、もしな + ければディレクトリを作成する。 Note: この自動コマンド中でオプションの値をリセ ットするのは、プラグインの挙動を破壊するため、 diff --git a/doc/if_cscop.jax b/doc/if_cscop.jax index e50890ae5..8bf0892c3 100644 --- a/doc/if_cscop.jax +++ b/doc/if_cscop.jax @@ -443,7 +443,7 @@ http://cscope.sourceforge.net でダウンロードできる、 DJGPP でビル まだcscopeを持っていない(あなたのコンパイラのライセンスやOSのディストリビュー ションに含まれてない)のならば、次の場所から無料で入手できる: http://cscope.sourceforge.net/ -cscopeはSCOによりBSDラインセンスの基づいて配布されている。 +cscopeはSCOによりBSDライセンスに基づいて配布されている。 より新しいバージョンのcscopeを入手したいのならば、恐らく購入する必要があるだろ う。(古い)nviのドキュメントによれば: diff --git a/doc/index.jax b/doc/index.jax index d7b7fa3a0..8061931d8 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -137,7 +137,7 @@ Vim変数の一覧は|vim-variable|を参照。 |i_<Insert>| <Insert> 挿入/置換モードをトグルする。 |i_<LeftMouse>| <LeftMouse> カーソルをマウスクリックした位置へ移動。 |i_<ScrollWheelDown>| <ScrollWheelDown> ウィンドウを3行下へ -|i_<S-ScrollWheelDown>| <S-ScrollWheelDown> ウィンドウを1画面下ヘ +|i_<S-ScrollWheelDown>| <S-ScrollWheelDown> ウィンドウを1画面下へ |i_<ScrollWheelUp>| <ScrollWheelUp> ウィンドウを3行上へ |i_<S-ScrollWheelUp>| <S-ScrollWheelUp> ウィンドウを1画面上へ |i_<ScrollWheelLeft>| <ScrollWheelLeft> ウィンドウを6列左へ @@ -1417,7 +1417,7 @@ You found it, Arthur! *holy-grail* |:nmapclear| :nmapc[lear] ノーマルモードのすべてのマップを削除する |:nmenu| :nme[nu] ノーマルモードのメニューを追加する |:nnoremap| :nn[oremap] ノーマルモードを対象とする ":noremap" コマンド -|:nnoremenu| :nnoreme[nu] ノーマルモードを対象とする ":noremenu" コマン +|:nnoremenu| :nnoreme[nu] ノーマルモードを対象とする ":noremenu" コマンド |:noautocmd| :noa[utocmd] 自動コマンドを実行せずにコマンドを実行する |:noremap| :no[remap] 再マップされないマップを定義する |:nohlsearch| :noh[lsearch] 一時的に 'hlsearch' の強調表示をやめる diff --git a/doc/os_vms.jax b/doc/os_vms.jax index c1281a4c0..3057eb8c3 100644 --- a/doc/os_vms.jax +++ b/doc/os_vms.jax @@ -88,8 +88,8 @@ NOTE: VAXではDEC Cコンパイラを使えば問題ない。VAXCコンパイ 解釈できる形へ変換するプログラムを使用しなければならない。詳細はINSTALLvms.txt を参照。 -MMS_VIM.EXEはVIM.EXEと一緒に構築されるが、XXD.EXEは手動でサブディレ -へ移動して個別に構築しなければならない。 +MMS_VIM.EXEはVIM.EXEと一緒に構築されるが、XXD.EXEは手動でサブディレクトリへ +移動して個別に構築しなければならない。 もはやCTAGSはVimとは独立したソフトウェアになっているが、以下で述べるように OpenVMS特有のソースコードにはCTAGSのソースコードファイルも含まれている。 diff --git a/doc/pi_spec.jax b/doc/pi_spec.jax index 66082d720..c1196f6c6 100644 --- a/doc/pi_spec.jax +++ b/doc/pi_spec.jax @@ -86,10 +86,10 @@ emailアドレスを問い合わせアドレスから自動的に|spec_chglog_fo 望むのならば、プラグインはchangelogエントリごとのリリース情報を自動的に挿入す ることができる。この機能を利用することの利点の1つは、最後の変更の後にリリース -を更新すべきかそうでないかをコントールできることである。パッケージのバージョン -かリリースを更新していない時には、パッケージリリースを更新すべきならばその旨を -ユーザーに問い合わせてくれる。この機能を利用するには、.vimrcに次のコードを書き -加える: > +を更新すべきかそうでないかをコントロールできることである。パッケージのバージョ +ンかリリースを更新していない時には、パッケージリリースを更新すべきならばその旨 +をユーザーに問い合わせてくれる。この機能を利用するには、.vimrcに次のコードを書 +き加える: > let spec_chglog_release_info = 1 diff --git a/doc/starting.jax b/doc/starting.jax index 6c9f6ac06..dd70a0e9f 100644 --- a/doc/starting.jax +++ b/doc/starting.jax @@ -1304,7 +1304,7 @@ Note: ビューとセッションは完璧ではない: [nr]を付けた場合は、":mkview [nr]" で保存したビューが 読み込まれる。 -":mkview" と ":loadview" の組は、1つのファイルに対して全部で10コのビューを管理 +":mkview" と ":loadview" の組は、1つのファイルに対して全部で10個のビューを管理 できる。ビューは 'viewdir' で指定したディレクトリに保存される。ビューはファイ ル名を利用して管理されている。そのため、ファイルの名前を変更したり、(シンボリッ ク)リンクファイルを使ってアクセスした場合は、対応するビューを見つけることがで diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 939af4f71..5a9442009 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -345,7 +345,7 @@ SECTION 21 - 短縮入力 |faq-21.4| 現在の日付・時刻を挿入するには? |faq-21.5| 挿入モードで短縮入力が展開されるのを防ぐには? *faq-record-and-playback* -SECTION 22 - レコーティングと繰り返し +SECTION 22 - レコーディングと繰り返し |faq-22.1| 編集操作(挿入、削除、ペースト等)を繰り返すには? |faq-22.2| キーシーケンスを記録し、繰り返すには? |faq-22.3| 記録したキーシーケンスを編集するには? From b5734aec18dbf52ad5f285802796e7424ac88449 Mon Sep 17 00:00:00 2001 From: haya14busa <hayabusa1419@gmail.com> Date: Mon, 4 Jan 2016 02:25:02 +0900 Subject: [PATCH 718/783] Fix translation at 'isfname' --- doc/options.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 0486ed026..512849e04 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4491,8 +4491,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 例: "48-57,,,_" 数字と、コンマと、下線 (アンダースコア) コンマを除外するには、前に '^' をおく。例: - " -~,^,,9" 空白から '~' までの全ての文字、ただしコンマと - <Tab> を除く + " -~,^,,9" コンマを除いた空白から '~' までの全ての文字 + と <Tab> 値に空白や '\' を含める方法については、|option-backslash| を参照。 *'isident'* *'isi'* From fa233a56bc6f05dca6bbf310d9580bd164150e2a Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Tue, 5 Jan 2016 21:11:09 +0900 Subject: [PATCH 719/783] fix typo --- doc/options.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 0486ed026..f91beb942 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4450,8 +4450,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ファイル名やパス名に使われる文字を指定する。ファイル名はコマンド "gf", "[i" 等やタグファイル内で使われる。またパターン |pattern| 内の "\f" に も使われる。 - 文字コードが 256 以上のマルチバイト文字は常に含まることになっているの - で、文字コードが 255 以下の文字のみをこのオプションで指定する。 + 文字コードが 256 以上のマルチバイト文字は常に含まれることになっている + ので、文字コードが 255 以下の文字のみをこのオプションで指定する。 UTF-8では、文字コードが 0xa0 から 0xff の文字は、同様に常に含まれる。 このオプションに空白文字を加える場合はよく考えること! ファイル名にスペー スが含まれることはあるが、スペースを含めると、ファイル名補完の際に、ど From 796e221116210cc332529cdb342932a980bf2843 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Tue, 5 Jan 2016 22:31:51 +0900 Subject: [PATCH 720/783] =?UTF-8?q?=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=81=AB=E7=B5=B1=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/gui_x11.jax | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/gui_x11.jax b/doc/gui_x11.jax index 2d1b84dad..b852fefe3 100644 --- a/doc/gui_x11.jax +++ b/doc/gui_x11.jax @@ -488,11 +488,11 @@ Motif 2.0とX11R6はOKである。Motif 1.1とX11R4は動作するかもしれ LessTifの最新リリースも問題なく動作すると報告を受けている。 *gui-x11-athena* -AthenaバージョンはデフォルトでXaw ウィジットセットを用いる。3Dバージョンを持っ -ているならば、代わりにXaw3dでリンクしたいかもしれない。これはメニューを少しよ -く見せるかもしれない。Makefileを編集して、"XAW_LIB" を見に行くようにするとよ -い。スクロールバーは、Vimは既に3Dのそれ自体を持っているので(実際には、それらは -もっとMotifのように見える)、同じままだろう。 +AthenaバージョンはデフォルトでXaw ウィジェットセットを用いる。3Dバージョンを +持っているならば、代わりにXaw3dでリンクしたいかもしれない。これはメニューを少 +しよく見せるかもしれない。Makefileを編集して、"XAW_LIB" を見に行くようにすると +よい。スクロールバーは、Vimは既に3Dのそれ自体を持っているので(実際には、それら +はもっとMotifのように見える)、同じままだろう。 *gui-x11-neXtaw* neXtawバージョンについては、異なるウィジェットを使うだけでほとんどAthenaと変わ From 4e34ad95121d552fe7b717d7b662f9472d8c48ff Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Tue, 5 Jan 2016 22:59:23 +0900 Subject: [PATCH 721/783] =?UTF-8?q?=E3=82=AE=E3=83=AA=E3=82=B7=E3=82=A2?= =?UTF-8?q?=E3=81=AB=E7=B5=B1=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/mbyte.jax | 2 +- doc/options.jax | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/mbyte.jax b/doc/mbyte.jax index d31092450..79e6ac0e3 100644 --- a/doc/mbyte.jax +++ b/doc/mbyte.jax @@ -298,7 +298,7 @@ Note: すべてのエンコーディングは0から128までの文字がASCII 1 cp874 タイ語 1 cp1250 チェコ語、ポーランド語など 1 cp1251 キリル語 -1 cp1253 ギリシャ語 +1 cp1253 ギリシア語 1 cp1254 トルコ語 1 cp1255 ヘブライ語 1 cp1256 アラビア語 diff --git a/doc/options.jax b/doc/options.jax index f91beb942..09df0c471 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -718,7 +718,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 有効} 'encoding' が "utf-8" などUnicodeエンコーディングのときのみ効果がある。 East Asian Width Class Ambiguous な文字(ユーロ、登録商標記号、著作権記 - 号、ギリシャ文字、キリル文字など)をどう扱うかを定める。 + 号、ギリシア文字、キリル文字など)をどう扱うかを定める。 現在のところ、設定可能な値は次の2通りである: "single": US-ASCIIの文字と同じ幅を使う。これはほとんどのユーザー @@ -730,7 +730,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる これらの文字のグリフの幅を、旧い/伝統的なCJKエンコーディングで何オク テットを占めるかだけによって決めているCJKフォントがたくさんある。その - エンコーディングではユーロ、登録商標記号、ギリシャ文字、キリル文字は2 + エンコーディングではユーロ、登録商標記号、ギリシア文字、キリル文字は2 オクテットで表現されるので、それらのフォントはこれらの文字に「wideな」 グリフを当てている。これはテキストファイルで表を作るための罫線文字にも あてはまる。そのためGUI版のVimにCJKフォントを使うときや、CJKフォント From ed6bacc33763155e160f34c2b5c36586038dde99 Mon Sep 17 00:00:00 2001 From: haya14busa <hayabusa1419@gmail.com> Date: Tue, 5 Jan 2016 23:39:10 +0900 Subject: [PATCH 722/783] Respect order --- doc/options.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 512849e04..aeb147fb5 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -4491,8 +4491,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 例: "48-57,,,_" 数字と、コンマと、下線 (アンダースコア) コンマを除外するには、前に '^' をおく。例: - " -~,^,,9" コンマを除いた空白から '~' までの全ての文字 - と <Tab> + " -~,^,,9" 空白から '~' までのコンマを除いた全ての文字と + <Tab> 値に空白や '\' を含める方法については、|option-backslash| を参照。 *'isident'* *'isi'* From 006b7ef89390f47bb344d4f742b9dd5c6f81f6f6 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Tue, 5 Jan 2016 23:56:03 +0900 Subject: [PATCH 723/783] =?UTF-8?q?=E3=83=96=E3=83=AC=E3=83=BC=E3=82=AF?= =?UTF-8?q?=E3=81=AB=E7=B5=B1=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/debug.jax | 2 +- doc/intro.jax | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/debug.jax b/doc/debug.jax index 39fa0f3e1..e36ff911c 100644 --- a/doc/debug.jax +++ b/doc/debug.jax @@ -80,7 +80,7 @@ Microsoft Visual C++ コンパイラを使って自分で実行ファイルを 他の方法もあります。ソースファイルを入手し、Visual Studio のワークスペースに Make_ivc.mak を取り込んでください。そして、デバッグの設定を選択し、ビルドして -ください。ブレイクポイントの設定や変数の監視など、すべてのデバッグ機能が使えま +ください。ブレークポイントの設定や変数の監視など、すべてのデバッグ機能が使えま す。 Visual Studio を持っている場合はそれを使ってください。VC Toolkit と WinDbg は diff --git a/doc/intro.jax b/doc/intro.jax index a20b97023..d0f4d56bf 100644 --- a/doc/intro.jax +++ b/doc/intro.jax @@ -840,7 +840,7 @@ screen | window 1 | window 2 | 畳まれ論理行 1 行となり、次のように表示される: "+-- 99 lines folded"。 行の長さは制限なし。 - ウィンドウ行 ウィンドウに表示される行: 折り返し、ラインブレイクなど + ウィンドウ行 ウィンドウに表示される行: 折り返し、ラインブレークなど が適用された後の論理行の一部。長さはウィンドウの幅以 下。それ以上長い行は折り返されるか切り詰められる。 スクリーン行 Vim が使うスクリーンの行。全てのウィンドウのウィンドウ From 00db4835e61b1a448dbacbb36672f51cd7f51eda Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Wed, 6 Jan 2016 21:16:34 +0900 Subject: [PATCH 724/783] =?UTF-8?q?=E3=83=97=E3=83=AC=E3=83=BC=E3=83=B3?= =?UTF-8?q?=E3=81=AB=E7=B5=B1=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/change.jax | 2 +- doc/filetype.jax | 2 +- doc/netbeans.jax | 4 ++-- doc/options.jax | 2 +- doc/syntax.jax | 2 +- doc/usr_25.jax | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index ee8ae5275..579bebfea 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -1234,7 +1234,7 @@ Note "* と "+ に区別があるのは X11 システムのみであることに {Vi にはない} {|+dnd|付きでコンパイルされたときのみ有効。現在はGTK GUIでのみ使える。} -Note: "~ レジスタはプレインテキストをVimにドロップしたときのみ使われる。URI +Note: "~ レジスタはプレーンテキストをVimにドロップしたときのみ使われる。URI のリストは内部で扱われる。 9. 消去専用レジスタ "_ *quote_* diff --git a/doc/filetype.jax b/doc/filetype.jax index 5c869ebc9..104a014e6 100644 --- a/doc/filetype.jax +++ b/doc/filetype.jax @@ -605,7 +605,7 @@ TEX *ft-tex-plugin* *g:tex_flavor* *.tex ファイルの最初の行が次のような形なら > %&<format> -ファイルタイプは次のどれかになる: plaintex (プレイン TeX), context (ConTeXt), +ファイルタイプは次のどれかになる: plaintex (プレーン TeX), context (ConTeXt), tex (LaTeX)。そうでなければ context か tex かを決定するためにファイル内から キーワードを検索する。もしキーワードが見つからなければ既定値として plaintex に なる。この既定値は、変数 g:tex_flavor を定義すれば変更することができる。次のど diff --git a/doc/netbeans.jax b/doc/netbeans.jax index 1309ce25f..e7dc0b446 100644 --- a/doc/netbeans.jax +++ b/doc/netbeans.jax @@ -242,7 +242,7 @@ Vim は起動時に、指定されたホスト・ポートへのソケット接 ============================================================================== 6. NetBeans プロトコル *netbeans-protocol* -Vim コントローラと Vim の通信にはプレインテキストのメッセージが使われます。 +Vim コントローラと Vim の通信にはプレーンテキストのメッセージが使われます。 このプロトコルは、最初は NetBeans の External Editor モジュールと協調して動作 するように設計されました。その後、Agide (A-A-P GUI IDE, http://www.a-a-p.org を参照)と、そして他の IDE とも動作するように拡張されました。この拡張は @@ -260,7 +260,7 @@ netbeans_save_buffer() と名前が変更されました。 現在のバージョンは 2.5 です。2.4 と 2.5 の違いは下記文章から "2.5" を検索して ください。 -メッセージはソケットを通じて送られます。メッセージは UTF-8 のプレインテキス +メッセージはソケットを通じて送られます。メッセージは UTF-8 のプレーンテキス トなので、このプロトコルは他のどんな通信メカニズムでも使えます。 Netbeans メッセージは Vim がユーザー入力待ちでアイドル状態のときに処理されま diff --git a/doc/options.jax b/doc/options.jax index fa81b98dd..733a74238 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -7039,7 +7039,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる プの StatusLineNC に適用される。数 N は 1 以上 9 以下である。 |hl-User1..9| を参照。 - フラグを表示するとき、そのフラグがプレインテキストの直後にあるな + フラグを表示するとき、そのフラグがプレーンテキストの直後にあるな ら、その先頭にカンマがある場合は削除される。そうすることによって以下の 例のようなフラグの使い方をしたとき、きれいに表示されるようになっている。 diff --git a/doc/syntax.jax b/doc/syntax.jax index 45cf218cc..bcb669492 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -574,7 +574,7 @@ CSS を使うようになる。 < この機能は現在、コピー抑制エリアに読み込み専用の <input> 要素を挿入することで 実装されている。これはすべての場合で機能するわけではない。他の、HTML を解釈す -るアプリケーションにペーストすると、<input> 要素もペーストされる。しかしプレイ +るアプリケーションにペーストすると、<input> 要素もペーストされる。しかしプレー ンテキストとしてのペーストなら常に機能するだろう。 *g:html_no_invalid* diff --git a/doc/usr_25.jax b/doc/usr_25.jax index 72fb6bb88..30dbed13e 100644 --- a/doc/usr_25.jax +++ b/doc/usr_25.jax @@ -118,7 +118,7 @@ Note: 特定の書式に従った文章なら自動的に整形することも す。スペースや Tab 文字だけの行があったりするのはよくあるミスです。それは空白 行です。空行ではありません。 -整形できるのは単純なプレインテキストだけではありません。整形の設定については +整形できるのは単純なプレーンテキストだけではありません。整形の設定については |fo-table| を参照してください。ピリオドの後ろに挿入されるスペースの数を変更す るには 'joinspaces' を参照してください。 外部プログラムを使って整形することもできます。Vim の組み込みコマンドで正しく整 From 14e69265ad06ee3cc7f6a62cdf9c087880678461 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Wed, 6 Jan 2016 21:26:07 +0900 Subject: [PATCH 725/783] =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=83=9E=E3=81=AB?= =?UTF-8?q?=E7=B5=B1=E4=B8=80=20#138?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/change.jax | 2 +- doc/cmdline.jax | 2 +- doc/develop.jax | 2 +- doc/eval.jax | 4 ++-- doc/filetype.jax | 2 +- doc/ft_sql.jax | 10 +++++----- doc/indent.jax | 2 +- doc/insert.jax | 4 ++-- doc/map.jax | 2 +- doc/options.jax | 12 ++++++------ doc/os_dos.jax | 2 +- doc/pi_netrw.jax | 10 +++++----- doc/quickfix.jax | 6 +++--- doc/syntax.jax | 6 +++--- doc/tagsrch.jax | 4 ++-- doc/tips.jax | 2 +- doc/usr_12.jax | 2 +- doc/usr_21.jax | 2 +- doc/usr_30.jax | 2 +- doc/usr_40.jax | 4 ++-- doc/usr_41.jax | 2 +- doc/usr_43.jax | 2 +- vim_faq/vim_faq.jax | 2 +- 23 files changed, 44 insertions(+), 44 deletions(-) diff --git a/doc/change.jax b/doc/change.jax index ee8ae5275..ff8a8ef55 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -1678,7 +1678,7 @@ Vimはソート関数とソートコマンドを備えている。ソート関 マッチの後に来るテキストでソートできる。 スラッシュの代わりにどんなnon-letterでも使うことができ る。 - 例えば、カンマで区切られた2番目のフィールドでソートす + 例えば、コンマで区切られた2番目のフィールドでソートす るには: > :sort /[^,]*,/ < 画面上の10桁目でソートするには(そのためタブとスペース diff --git a/doc/cmdline.jax b/doc/cmdline.jax index e83ef0520..16b7709f8 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -427,7 +427,7 @@ tcshのautolist補完が好みなら、オプション 'wildmode' を使って ".bak,~,.o,.h,.info,.swp" であり、これは ".bak", "~", ".o", ".h", ".info", ".swp" で終わるファイルが無視されることがあるということである。 -空の項目(つまり2つの連続するカンマ)は "." を含まないファイル名(つまり拡張子を +空の項目(つまり2つの連続するコンマ)は "." を含まないファイル名(つまり拡張子を 持たない)にマッチする。これは "prog" を無視させ、かつ "prog.c" にマッチさせた いときに便利である。 diff --git a/doc/develop.jax b/doc/develop.jax index ee1e5f3c6..33416848c 100644 --- a/doc/develop.jax +++ b/doc/develop.jax @@ -327,7 +327,7 @@ if、while、switchなどの後には、スペースを入れること。 間違い: if(arg) for(;;) OK: if (arg) for (;;) -カンマ、セミコロンの後にはスペースを入れること: +コンマ、セミコロンの後にはスペースを入れること: 間違い: func(arg1,arg2); for (i = 0;i < 2;++i) OK: func(arg1, arg2); for (i = 0; i < 2; ++i) diff --git a/doc/eval.jax b/doc/eval.jax index 900e6d8be..f8c8d66ec 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5611,7 +5611,7 @@ str2float( {expr}) *str2float()* 数値の後ろにある文字列は黙って無視される。 小数点数はロケールの設定に関わらず常に '.' である。コンマを発 見すると、そこで数値は終わりになる。つまり "12,345.67" は 12.0 - に変換される。3桁ごとのカンマ区切りを取り除くには + に変換される。3桁ごとのコンマ区切りを取り除くには |substitute()| が使える: > let f = str2float(substitute(text, ',', '', 'g')) < {|+float| 機能つきでコンパイルされたときのみ有効} @@ -6723,7 +6723,7 @@ x11 X11をサポート 引数は、与えられた名前によって定義される。関数のなかでは "a:name" ("a:" を引数 に接頭)のようにして参照することができる。 *a:0* *a:1* *a:000* *E740* *...* -引数はカンマで区切ることで、最大20まで与えることができる。最後の引数を "..." +引数はコンマで区切ることで、最大20まで与えることができる。最後の引数を "..." にすることで、可変長の引数を使用できる。関数の中では "a:1" や "a:2" のようにし て可変長の引数にアクセスできる。"a:0" は可変長引数が幾つあるかを示している (0 であること、つまり引数がそれ以上ないこともある)。"a:000" は全引数を持つリスト diff --git a/doc/filetype.jax b/doc/filetype.jax index 5c869ebc9..12fe0248d 100644 --- a/doc/filetype.jax +++ b/doc/filetype.jax @@ -347,7 +347,7 @@ OSによる「形式」を利用するには自動実行コマンドの検出パ ともあり得る。幾つかこれを回避する方法がある: 1. "maplocalleader" にキーマップの先頭に使用するキーシーケンスを設定する。例: > :let maplocalleader = "," -< デフォルトのバックスラッシュ(\ 記号)に替えてカンマが全てのマップの始まりの +< デフォルトのバックスラッシュ(\ 記号)に替えてコンマが全てのマップの始まりの キーになる。|<LocalLeader>|も参照。 2. 独自のマップを定義する。例: > diff --git a/doc/ft_sql.jax b/doc/ft_sql.jax index 6698f6757..61c5791a3 100644 --- a/doc/ft_sql.jax +++ b/doc/ft_sql.jax @@ -541,13 +541,13 @@ SQL 文を動的に組み立てる方法を見ていきましょう。select 文 < 1. SELECT と入力してから <C-C>t を押すとテーブルのリストが表示されます。 2. カラムリストを表示したいテーブルにカーソルを合わせます。 3. <Enter> を押してテーブルを選択します。 - 4. <C-C>l を押してそのテーブル内の全カラムのカンマ区切りのリストを表示 + 4. <C-C>l を押してそのテーブル内の全カラムのコンマ区切りのリストを表示 させます。 5. ステップ 3 で選んだテーブル名に基づいてプラグインは妥当なテーブルエ イリアスを決定します。ここでそのエイリアスを受け入れるかどうかプロ ンプトが表示されます。OK を押してください。 6. するとテーブル名が消え、代わりにそのテーブルのカラムリスト(各カラム - 名の前にエイリアスがつき、カンマ区切りになったもの)が挿入されます。 + 名の前にエイリアスがつき、コンマ区切りになったもの)が挿入されます。 7. <C-C>L を押すとステップ 3 と 4 を同時に実行できます。これは、リス トの中で現在選ばれているテーブルで決定するためにマップの中に <C-Y> を埋め込んでいます。 @@ -593,7 +593,7 @@ select 文を書くための特別な機能があります。 次の文を書く > omni_sql_use_tbl_alias < - 既定値: a - - この設定はカンマ区切りのカラムリストを生成するときに参照されます。 + - この設定はコンマ区切りのカラムリストを生成するときに参照されます。 既定ではカラムリストを生成するマップは <C-C>l です。カラムリストを 生成するときに各カラムの前にエイリアスがつきます。例えば: e.emp_id, e.emp_name。このオプションには 3 種類の値を設定できます: > @@ -673,9 +673,9 @@ dynamic モードのマップ <C-C>c < - 指定テーブルのカラムのリストを表示します。 > <C-C>l -< - 指定テーブルのカラムのリストをカンマ区切りで表示します。 > +< - 指定テーブルのカラムのリストをコンマ区切りで表示します。 > <C-C>L -< - 指定テーブルのカラムのリストをカンマ区切りで表示します。 +< - 指定テーブルのカラムのリストをコンマ区切りで表示します。 補完ウィンドウがアクティブなときだけ使用できます。 > <Right> < - 現在補完リストでカーソルが指しているテーブルのカラムリストを表示しま diff --git a/doc/indent.jax b/doc/indent.jax index cd34210fe..461e83828 100644 --- a/doc/indent.jax +++ b/doc/indent.jax @@ -598,7 +598,7 @@ searchpairpos() による検索の最大範囲を設定する。大きな値を *g:clojure_fuzzy_indent_patterns* *g:clojure_fuzzy_indent_blacklist* -'lispwords' オプションはカンマ区切りの単語のリストで、サブフォームをスペース 2 +'lispwords' オプションはコンマ区切りの単語のリストで、サブフォームをスペース 2 個でインデントする特別なフォームを指定する。 例: diff --git a/doc/insert.jax b/doc/insert.jax index 37b9a0a67..b3824b3fb 100644 --- a/doc/insert.jax +++ b/doc/insert.jax @@ -247,7 +247,7 @@ CTRL-] 文字を入れることなく、短縮入力をトリガーする。{Vi *i_backspacing* <BS>、CTRL-WそしてCTRL-Uの効果は 'backspace' オプションに依存している('revins' -が設定されていなければ)。これは下記の項目をカンマで区切ったリストになっている: +が設定されていなければ)。これは下記の項目をコンマで区切ったリストになっている: 項目 アクション ~ indent 字下げをバックスペースで消去可能 @@ -1446,7 +1446,7 @@ PHP 言語は構文強調で色付けできる要素がとてもたくさんあ let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant' let g:omni_syntax_group_exclude_php = 'php\w*Constant' -カンマ区切りで任意個数の構文グループを指定できる。この変数の基本的な形式は次の +コンマ区切りで任意個数の構文グループを指定できる。この変数の基本的な形式は次の とおり: > let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated' diff --git a/doc/map.jax b/doc/map.jax index 3c3812ddb..1220138ea 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -1387,7 +1387,7 @@ Note これらの引数は省略できますが、これは廃止される機能 *<f-args>* ユーザー定義コマンドの引数を関数に渡すには、<f-args>("function args")が利用で きます。これはコマンドの引数をスペースやタブ文字で区切り、それぞれの引数を別々 -にクォート("で囲む)し、カンマで区切ったリストにして<f-args>と置き換えます。下 +にクォート("で囲む)し、コンマで区切ったリストにして<f-args>と置き換えます。下 のMycmdの例をご覧下さい。引数がない場合は <f-args> は取り除かれます。 <f-args> の引数にスペースを含めるには、バックスラッシュを前置します。<f-args> では二つのバックスラッシュ (\\) は一つのバックスラッシュに置換されます。スペー diff --git a/doc/options.jax b/doc/options.jax index fa81b98dd..2046d0d5b 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1282,7 +1282,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vim が |+linebreak| 機能付きでコンパイルされたときの み有効} - 'breakindent' の設定。次の項目を設定できる。それぞれの項目はカンマで区 + 'breakindent' の設定。次の項目を設定できる。それぞれの項目はコンマで区 切る: min:{n} テキストの最小幅。'breakindent' が適用されたとき にテキストがその幅よりも狭くならないようにする。こ @@ -1657,7 +1657,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vimが |+syntax| 機能付きでコンパイルされたときのみ有 効} - 'colorcolumn' はスクリーンの列をカンマ区切りで指定する。指定された列は + 'colorcolumn' はスクリーンの列をコンマ区切りで指定する。指定された列は ColorColumn (|hl-ColorColumn|) で強調表示される。テキストを整列すると きに便利である。スクリーンの表示は遅くなる。 列番号は絶対値で指定するか、番号に '+' か '-' を前置して 'textwidth' @@ -2588,8 +2588,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる たものが使われる。こうするとスワップファイル格納用ディレクトリの中で も{訳注: 別のディレクトリ内の同名ファイルのスワップファイルが集まる かもしれない}、ファイル名の一意性が保証される。 - Win32 では、区切り文字のカンマの前では "\\" でなく "//" と書かなけれ - ばならない。"\\" と書くと、カンマがファイル名の一部と解釈されてしま + Win32 では、区切り文字のコンマの前では "\\" でなく "//" と書かなけれ + ばならない。"\\" と書くと、コンマがファイル名の一部と解釈されてしま うためである。 - コンマの後の空白は無視されるが、その他の場所の空白はディレクトリ名の 一部と見なされる。ディレクトリ名の先頭に空白を指定したいなら、'\' を @@ -7040,7 +7040,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる |hl-User1..9| を参照。 フラグを表示するとき、そのフラグがプレインテキストの直後にあるな - ら、その先頭にカンマがある場合は削除される。そうすることによって以下の + ら、その先頭にコンマがある場合は削除される。そうすることによって以下の 例のようなフラグの使い方をしたとき、きれいに表示されるようになっている。 あるグループ内の全ての項目が空文字列 (つまり設定されていないフラグ) に @@ -7844,7 +7844,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vimが |+persistent_undo| 機能付きでコンパイルされた ときのみ有効} - アンドゥファイル用のディレクトリをカンマ区切りのリストで指定する。 + アンドゥファイル用のディレクトリをコンマ区切りのリストで指定する。 書式についての詳細は |'backupdir'| を参照。 "." はファイルのディレクトリを意味する。アンドゥファイルの名前は例えば "file.txt" なら ".file.txt.un~" になる。 diff --git a/doc/os_dos.jax b/doc/os_dos.jax index 4dcaa4383..0fb5ade4a 100644 --- a/doc/os_dos.jax +++ b/doc/os_dos.jax @@ -64,7 +64,7 @@ Windows NTでは、環境変数をユーザーごとに別々に設定するこ ファイル名にバックスラッシュを使うことは問題となり得る。Viではいくつかのコマン ドにおいて、バックスラッシュの数を半分にする。Vimはもう少し寛大で、ファイル名 からバックスラッシュを取り除かないので、":e c:\foo\bar" は期待通りに機能する。 -しかしバックスラッシュが特別な文字(スペース、カンマ、バックスラッシュなど)の前 +しかしバックスラッシュが特別な文字(スペース、コンマ、バックスラッシュなど)の前 に現れた場合は、Vimはバックスラッシュを取り除く。問題を避けるにはスラッシュを 使用する: ":e c:/foo/bar" はうまく機能する。MS-DOSプログラムやWin32プログラム のなかにはこれが問題となるものもあるので、Vimは問題を避けるために内部でスラッ diff --git a/doc/pi_netrw.jax b/doc/pi_netrw.jax index 0a2353ec8..3d5215bdf 100644 --- a/doc/pi_netrw.jax +++ b/doc/pi_netrw.jax @@ -1578,7 +1578,7 @@ shift-downarrow と shift-uparrow を使うと便利でしょう。 隠しリストを編集する *netrw-ctrl-h* *netrw-edithide* {{{2 "<ctrl-h>" マップを使うと、|g:netrw_list_hide| に設定されたファイル/ディレクト -リの隠しリストを変更できます。隠しリストはパターンをカンマで区切ったものです。 +リの隠しリストを変更できます。隠しリストはパターンをコンマで区切ったものです。 パターンにマッチしたファイル/ディレクトリは表示されなくなります。あるいはマッ チしたファイルのみを表示することができます (|netrw-a|参照)。 @@ -1604,7 +1604,7 @@ shift-downarrow と shift-uparrow を使うと便利でしょう。 "Sorted by" が name (名前順ソート) のとき、g:netrw_sort_sequence を設定するこ とで優先順位を指定できます。ソートシーケンスは典型的には順位の高い順に拡張子を -並べたもので、パターンを使うこともできます。パターンはカンマで区切ります。ソー +並べたもので、パターンを使うこともできます。パターンはコンマで区切ります。ソー トシーケンスの初期設定は次のとおり (実際にはすべて一行): For Unix: > @@ -1667,7 +1667,7 @@ Netrw のブラウジングでは隠しリストを使う方法が三つあり "a" マップを使うと三つの表示モードが順番に切り替わります。 -|g:netrw_list_hide| 変数にはカンマで区切られた正規表現に基づくパターンのリスト +|g:netrw_list_hide| 変数にはコンマで区切られた正規表現に基づくパターンのリスト (例 ^.*\.obj$,^\.) が設定されます。隠しリストを設定するには <c-h> マップを使い ます (|netrw-ctrl-h|参照)。例えば、 "." で始まるファイルを非表示にしたい場合、 <c-h> を押して隠しリストに '^\..*' を設定します (あるいは <.vimrc> で @@ -2376,7 +2376,7 @@ netrw ブラウザの各種設定は変数で管理されていて、それを = 2: wide listing (一行に複数のファイル) = 3: tree style listing (ツリー表示) - *g:netrw_list_hide* 隠しファイル用のパターンのリスト(カンマ区切り) + *g:netrw_list_hide* 隠しファイル用のパターンのリスト(コンマ区切り) パターンは正規表現です (|regexp|参照) git の隠しファイル用に特別な関数が用意されてい ます。この変数に 'netrw_gitignore#Hide()' ヘル @@ -2478,7 +2478,7 @@ netrw ブラウザの各種設定は変数で管理されていて、それを < 初期設定: "" *g:netrw_sort_sequence* 名前でソートするとき、まずこの変数で指定された - パターンを使ってソートする。カンマで区切られた + パターンを使ってソートする。コンマで区切られた パターンのリスト。Note: ソート時のファイル名に はファイルタイプを示す装飾文字 (|netrw-filigree|) が含まれます。 diff --git a/doc/quickfix.jax b/doc/quickfix.jax index b38de73dd..ff8f80495 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -1171,14 +1171,14 @@ Tipsや制限など詳細は|quickfix-directory-stack|を参照。 'errorformat' 内の複数の要素 *efm-entries* -複数のコンパイラからの出力を見つけることを可能にするために、カンマで区切って複 +複数のコンパイラからの出力を見つけることを可能にするために、コンマで区切って複 数のフォーマットパターンを 'errorformat' に設定することができるだろう (note: -カンマ直後の空白は無視される)。完全にマッチした最初のパターンが採択される。マッ +コンマ直後の空白は無視される)。完全にマッチした最初のパターンが採択される。マッ チするものが無い場合、最後にマッチした部分が使われるが、ファイルネームは除外さ れエラーメッセージは全体のメッセージとして設定される。複数のコンパイラからの出 力メッセージにマッチしてしまうパターンがあった (しかし正確には一致しない) 時に は、より制限されたもの {訳注: 他のメッセージにマッチし難いもの} の後に置く。パ -ターンの先頭にカンマを含めるにはバックスラッシュ (":set" コマンド中では2度タイ +ターンの先頭にコンマを含めるにはバックスラッシュ (":set" コマンド中では2度タイ プするべきだ) を添える。バックスラッシュを含めるためには2つ与える (つまり ":set" コマンドの中では4つタイプする)。また、":set" コマンド内のスペースの前に はバックスラッシュを置く必要がある。 diff --git a/doc/syntax.jax b/doc/syntax.jax index 45cf218cc..9b2c15764 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -3736,7 +3736,7 @@ containedin={group-name}... *:syn-containedin* nextgroup={group-name},.. *:syn-nextgroup* -引数 "nextgroup" の後には構文グループ名のリストをカンマ区切りで続ける +引数 "nextgroup" の後には構文グループ名のリストをコンマ区切りで続ける ("contains" と同様。パターンを使うこともできる)。 引数 "nextgroup" が与えられると、マッチやリージョンの終了位置の後ろで、指定さ @@ -4350,7 +4350,7 @@ gui GUI *bold* *underline* *undercurl* *inverse* *italic* *standout* term={attr-list} *attr-list* *highlight-term* *E418* - attr-listはカンマ区切りのリスト(スペースは入れない)で、要素は以下の通 + attr-listはコンマ区切りのリスト(スペースは入れない)で、要素は以下の通 り(順序はどうでもよい): bold underline @@ -4388,7 +4388,7 @@ stop={term-list} *term-list* *highlight-stop* 2. ターミナルコードのリスト。 ターミナルコードは "t_xx" の形を持つ。"xx" はtermcapエントリ名であ - る。ターミナルコードはカンマで区切る。ホワイトスペースは使えない。 + る。ターミナルコードはコンマで区切る。ホワイトスペースは使えない。 例: start=t_C1,t_BL 対応するターミナルコードが存在しなければならない。 diff --git a/doc/tagsrch.jax b/doc/tagsrch.jax index b5c36d9b7..c5d6c309a 100644 --- a/doc/tagsrch.jax +++ b/doc/tagsrch.jax @@ -456,11 +456,11 @@ Emacs タグファイルの行は非常に長くなることがある。Vim は "./tags" は現在のファイルがあるディレクトリのtagsファイルではなく、現在のディ レクトリのtagsファイルを意味するようになる。 -カンマの代わりにスペースを使用してもよい。文字列オプションに含めるためにはスペー +コンマの代わりにスペースを使用してもよい。文字列オプションに含めるためにはスペー スの前にバックスラッシュが必要となる: > :set tags=tags\ /home/user/commontags -ファイル名にスペースを含めるにはバックスラッシュを3つ並べる。カンマをファイル +ファイル名にスペースを含めるにはバックスラッシュを3つ並べる。コンマをファイル 名に使用する場合にはバックスラッシュを2つ並べる。例えば: > :set tags=tag\\\ file,/home/user/common\\,tags diff --git a/doc/tips.jax b/doc/tips.jax index a015b29c2..3d92915c9 100644 --- a/doc/tips.jax +++ b/doc/tips.jax @@ -435,7 +435,7 @@ Sam Lantinga <slouken@cs.ucdavis.edu> です。もう一つの方法は "window" もしそのファイルがバイナリファイル特有の拡張子(exe、binなど)をしているときは、 あなたの<.vimrc>に次のオートコマンドを加えることで、変換の過程を自動化しておく -こともできます。"*.bin" をあなたの編集したいファイルの拡張子の、カンマで区切ら +こともできます。"*.bin" をあなたの編集したいファイルの拡張子の、コンマで区切ら れたリストに変えてください: > " vim -b : edit binary using xxd-format! diff --git a/doc/usr_12.jax b/doc/usr_12.jax index 4515e8467..f345447f6 100644 --- a/doc/usr_12.jax +++ b/doc/usr_12.jax @@ -115,7 +115,7 @@ \([^,]*\), \(.*\) ~ 1つ目の \( \) で囲まれた部分は "Last" です \( \) - カンマ (,) 以外の文字が [^,] + コンマ (,) 以外の文字が [^,] 何文字でもマッチする * ", " という文字にそのままマッチ , 2つ目の \( \) で囲まれた部分は "First" です \( \) diff --git a/doc/usr_21.jax b/doc/usr_21.jax index a78d9b8fe..1c0a40b77 100644 --- a/doc/usr_21.jax +++ b/doc/usr_21.jax @@ -106,7 +106,7 @@ Vim を終了すると、これらの情報が viminfo ファイルに保存さ :set viminfo=string "string" の部分に、記録したい情報を指定します。設定の書式は、オプション文字と -引数の組み合わせをカンマ (,) で区切ったリストです。 +引数の組み合わせをコンマ (,) で区切ったリストです。 'viminfo' の設定方法を順番に見ていきましょう。まず、' オプションを設定してみま す。' オプションには、マーク (a-z) を記録するファイルの数を指定できます。適当 な数 (例えば 1000) を設定しましょう。コマンドは次のようになります: > diff --git a/doc/usr_30.jax b/doc/usr_30.jax index 6a6ad1968..392051574 100644 --- a/doc/usr_30.jax +++ b/doc/usr_30.jax @@ -573,7 +573,7 @@ Vim のすばらしいところはコメントを解釈できるところです {flags}:{text} この例のように、{flags} は空でも構いません。 -複数のアイテムを指定するときはカンマで区切ります。アイテムを複数指定できるの +複数のアイテムを指定するときはコンマで区切ります。アイテムを複数指定できるの で、同じファイルの中でいろんな種類のコメントを使うことができます。例えばメール を返信するときに、相手のメッセージに ">" や "!" を付けて引用する場合は、次のよ うに設定します: > diff --git a/doc/usr_40.jax b/doc/usr_40.jax index b99d6cee9..46af77fc0 100644 --- a/doc/usr_40.jax +++ b/doc/usr_40.jax @@ -455,7 +455,7 @@ Vim では新しいコマンドを定義することができます。定義し :autocmd [group] {events} {file_pattern} [nested] {command} [group] は省略可能です。コマンドを管理したり呼び出したりしたい場合に使います -(後述)。{events} はコマンドを実行するイベントのリストです (カンマ区切り)。 +(後述)。{events} はコマンドを実行するイベントのリストです (コンマ区切り)。 {file_pattern} はファイル名です。ワイルドカードが使えます。例えば、"*.txt" な ら ".txt" で終わるファイルに対してコマンドが実行されます。 [nested] は省略可能 です。自動コマンドを再帰的に呼び出したい場合に指定します (下記参照)。そして、 @@ -489,7 +489,7 @@ BufReadPost は最も便利なイベントの一つです。これは新しい パターン -------- -{file_pattern} 引数には複数のパターンをカンマ区切りで指定できます。例えば、 +{file_pattern} 引数には複数のパターンをコンマ区切りで指定できます。例えば、 "*.c,*.h" なら、末尾が ".c" と ".h" のファイルにマッチします。 パターンには一般的なワイルドカードが使えます。次のようなものがよく使われます: diff --git a/doc/usr_41.jax b/doc/usr_41.jax index 16f6cf07f..db30338ab 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -516,7 +516,7 @@ vimrc ファイルで便利に使える例を示しましょう。'term' オプ たくさんの関数があらかじめ定義され、豊富な機能が提供されています。このセクショ ンの説明にもいくつか登場します。関数の一覧は |functions| を参照してください。 -関数は ":call" コマンドで呼び出します。引数はカッコで囲み、それぞれをカンマで +関数は ":call" コマンドで呼び出します。引数はカッコで囲み、それぞれをコンマで 区切ります。例: > :call search("Date: ", "W") diff --git a/doc/usr_43.jax b/doc/usr_43.jax index 4a4257cc7..623c896a0 100644 --- a/doc/usr_43.jax +++ b/doc/usr_43.jax @@ -37,7 +37,7 @@ C プログラムやシェルスクリプトなどの特定の種類のファイ set runtimepath -< 普通は最初のディレクトリ (最初のカンマの前) を使います。初期設定以外のディ +< 普通は最初のディレクトリ (最初のコンマの前) を使います。初期設定以外のディ レクトリを使いたい場合は、|vimrc| ファイルの中で 'runtimepath' オプションを 設定してディレクトリを追加してください。 diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 5a9442009..3c6ba97cd 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -7073,7 +7073,7 @@ ucs-4のエンコーディングでファイルを作成すると、Vimはあな 37.7. オプション'fileencodings'とは何ですか? オプション'fileencodings'はVimが既存のファイルを開くときに使う検査方法を定義し -ます。このオプションはカンマで区切られたエンコーディングのリストです。特別な名 +ます。このオプションはコンマで区切られたエンコーディングのリストです。特別な名 前"ucs-bom"を含めると、バイト順マークの存在をチェックするようになります。 しかし、これが"utf-8"の後に来ると認識されなくなります。通常は、"ucs-bom"を含め るならば、リストの最初に書くべきです。 From 8ef331642f9c59bda2bdb81a077b9adc001574e8 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Wed, 6 Jan 2016 21:53:37 +0900 Subject: [PATCH 726/783] =?UTF-8?q?=E3=82=AE=E3=83=AA=E3=82=B7=E3=82=A2=20?= =?UTF-8?q?=E2=86=92=20=E3=82=AE=E3=83=AA=E3=82=B7=E3=83=A3=20=E3=81=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/mbyte.jax | 2 +- doc/options.jax | 6 +++--- doc/syntax.jax | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/mbyte.jax b/doc/mbyte.jax index 79e6ac0e3..d31092450 100644 --- a/doc/mbyte.jax +++ b/doc/mbyte.jax @@ -298,7 +298,7 @@ Note: すべてのエンコーディングは0から128までの文字がASCII 1 cp874 タイ語 1 cp1250 チェコ語、ポーランド語など 1 cp1251 キリル語 -1 cp1253 ギリシア語 +1 cp1253 ギリシャ語 1 cp1254 トルコ語 1 cp1255 ヘブライ語 1 cp1256 アラビア語 diff --git a/doc/options.jax b/doc/options.jax index 09df0c471..40083843a 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -718,7 +718,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 有効} 'encoding' が "utf-8" などUnicodeエンコーディングのときのみ効果がある。 East Asian Width Class Ambiguous な文字(ユーロ、登録商標記号、著作権記 - 号、ギリシア文字、キリル文字など)をどう扱うかを定める。 + 号、ギリシャ文字、キリル文字など)をどう扱うかを定める。 現在のところ、設定可能な値は次の2通りである: "single": US-ASCIIの文字と同じ幅を使う。これはほとんどのユーザー @@ -730,7 +730,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる これらの文字のグリフの幅を、旧い/伝統的なCJKエンコーディングで何オク テットを占めるかだけによって決めているCJKフォントがたくさんある。その - エンコーディングではユーロ、登録商標記号、ギリシア文字、キリル文字は2 + エンコーディングではユーロ、登録商標記号、ギリシャ文字、キリル文字は2 オクテットで表現されるので、それらのフォントはこれらの文字に「wideな」 グリフを当てている。これはテキストファイルで表を作るための罫線文字にも あてはまる。そのためGUI版のVimにCJKフォントを使うときや、CJKフォント @@ -4651,7 +4651,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションはセキュリティ上の理由で、|modeline| からや |sandbox| の 中で設定することはできない。 - 例 (ギリシア語に対して、UTF-8で): *greek* > + 例 (ギリシャ語に対して、UTF-8で): *greek* > :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz < 例 (コマンドの z と y の意味の交換): > :set langmap=zy,yz,ZY,YZ diff --git a/doc/syntax.jax b/doc/syntax.jax index 45cf218cc..87395bfcf 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -3010,7 +3010,7 @@ ltx を持たないので @ をエラーと判断してハイライトする。 'conceallevel' が 2 に設定され、エンコーディングとして utf-8 が使われていると き、さまざまな文字シーケンスがそれに対応した utf-8 グリフとして表示される。対 -応している文字としてはアクセント付き文字、Math ゾーンの中のギリシア文字、Math +応している文字としてはアクセント付き文字、Math ゾーンの中のギリシャ文字、Math ゾーンの中の上付き記号と下付き記号などがある。すべての上付き記号と下付き記号を 表示できるわけではない。utf-8 がサポートしている範囲でのみ利用可能である。実際 のところ、サポートされている下付き記号は少ししかない。 @@ -3030,7 +3030,7 @@ g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示 b = 太字と斜体 (bold and italic) d = 区切り記号 (delimiters) m = 数学記号 (math symbols) - g = ギリシア文字 (Greek) + g = ギリシャ文字 (Greek) s = 上付き記号/下付き記号 (superscripts/subscripts) < これらの文字を設定から外すことで、それに関連した文字が Conceal 表示されなくな @@ -3062,7 +3062,7 @@ g:tex_conceal を <.vimrc> で設定することで Conceal モードの表示 Conceal による文字の代替表示を有効にするには |tex-conceal| を参照。 |g:tex_conceal| を設定することでアクセント、太字/斜体、数学記号、ギリ - シア文字、上付き記号/下付き記号のどれを Conceal 表示するかを選択でき + シャ文字、上付き記号/下付き記号のどれを Conceal 表示するかを選択でき る。 どの上付き記号/下付き記号を構文に基づいて Conceal 表示 (|:syn-cchar| From 9f698acdb12c09dc08ff144b55d5f699179b7b02 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Fri, 8 Jan 2016 20:21:48 +0900 Subject: [PATCH 727/783] =?UTF-8?q?=E3=82=AA=E3=83=B3=E3=83=AA=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E7=B5=B1=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/quickref.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/quickref.jax b/doc/quickref.jax index dafb58b24..77ae9ccd2 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -666,7 +666,7 @@ 'completeopt' 'cot' 挿入モードでの補完のオプション 'concealcursor' 'cocu' カーソル行の Conceal テキストを表示するかどうか 'conceallevel' 'cole' Conceal テキストを表示するかどうか -'confirm' 'cf' 未保存ファイル、リードオンリファイルの確認方法 +'confirm' 'cf' 未保存ファイル、リードオンリーファイルの確認方法 'conskey' 'consk' コンソールからの直接キー検出(MS-DOSのみ) 'copyindent' 'ci' 'autoindent' がすでにあるインデントを参考にする 'cpoptions' 'cpo' vi互換な振る舞いのフラグ集 From f33fe050ce6e8275ab12aae7630ecbdd75fb6800 Mon Sep 17 00:00:00 2001 From: thinca <thinca@gmail.com> Date: Fri, 8 Jan 2016 23:33:54 +0900 Subject: [PATCH 728/783] Fix typo --- doc/eval.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/eval.jax b/doc/eval.jax index 900e6d8be..ee353d84b 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -5940,8 +5940,8 @@ system({expr} [, {input}]) *system()* *E677* UnixとOS/2ではコマンドの連結ができるように{expr}の両側に波括弧 が置かれる。 - コマンドは「coocked」モードで実行される。そのためCTRL-Cでコマ - ンドを中断できる(少なくともUnixでは)。 + コマンドは「cooked」モードで実行される。そのためCTRL-Cでコマン + ドを中断できる(少なくともUnixでは)。 エラーコードは|v:shell_error|に格納される。 この関数は|restricted-mode|では失敗する。 From a5fd3a42dc1b1c0c6d5511e42ebe3d584a448060 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Sun, 10 Jan 2016 21:15:33 +0900 Subject: [PATCH 729/783] =?UTF-8?q?=E4=B8=AD=E9=BB=92=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4=E3=81=97=E3=81=A6=E9=80=A3=E7=B5=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/editing.jax | 8 ++--- doc/if_perl.jax | 4 +-- doc/options.jax | 22 ++++++------ doc/os_amiga.jax | 2 +- vim_faq/vim_faq.jax | 83 ++++++++++++++++++++++----------------------- 5 files changed, 59 insertions(+), 60 deletions(-) diff --git a/doc/editing.jax b/doc/editing.jax index ceecdf62c..52d0f672d 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -324,7 +324,7 @@ CTRL-^ 代替ファイルを編集する。たいていの場合、代替フ うにする。 > :map gf :e <cfile><CR> < カーソル下のファイル名が "type://machine/path" のよう - なハイパーテキスト・リンクであるならば、プラグイン + なハイパーテキストリンクであるならば、プラグイン |netrw| が必要になる。 Unixでは、文字 '~' は "~user/file" のように展開される。 環境変数も展開される |expand-env|。 @@ -793,8 +793,8 @@ Unix およびその他いくつかのシステムではバッククォートも *arglist-position* 引数リストがあるときは、ウィンドウのタイトル (それがあって、オプション 'title' -オンならば) やコマンド CTRL-G で出るファイル・メッセージで編集しているファイル -を知ることができる。次のようなものが表示されるだろう。 +オンならば) やコマンド CTRL-G で出るファイルメッセージで編集しているファイルを +知ることができる。次のようなものが表示されるだろう。 (file 4 of 11) オプション 'shortmess' の値が 'f' を含んでいるときは以下のようになる。 (4 of 11) @@ -1608,7 +1608,7 @@ Win32 でサマータイムが始まる日である。Win32 ライブラリに '**' はもっとすばらしい。 - これはディレクトリのみにマッチする。 - これはデフォルトで 30 段階までの深さのディレクトリにマッチするので、ディ - レクトリ・ツリー全体の検索に使える。 + レクトリツリー全体の検索に使える。 - マッチする深さの最大値は '**' の後に数字を付け加えて指定できる。 だから '/usr/**2' は下のようにマッチする。 > /usr diff --git a/doc/if_perl.jax b/doc/if_perl.jax index c34751b3a..e782b7d4e 100644 --- a/doc/if_perl.jax +++ b/doc/if_perl.jax @@ -115,7 +115,7 @@ Perl で使える関数の一覧です: > :perl VIM::SetOption("ai") # Vim のオプションをセットします :perl $nbuf = VIM::Buffers() # 全てのバッファ数を返す :perl @buflist = VIM::Buffers() # 全てのバッファの配列を返す - :perl $mybuf = (VIM::Buffers('qq.c'))[0] # 'qq.c' のバッファ・オブジェクト + :perl $mybuf = (VIM::Buffers('qq.c'))[0] # 'qq.c' のバッファオブジェクト # を返す :perl @winlist = VIM::Windows() # 全てのウィンドウの配列を返す :perl $nwin = VIM::Windows() # ウィンドウ数を返す @@ -128,7 +128,7 @@ Perl で使える関数の一覧です: > :perl @pos = (10, 10) :perl $curwin->Cursor(@pos) # カーソルを @pos にセットします :perl $curwin->Cursor(10,10) # カーソルを10行10列目にセットします - :perl $mybuf = $curwin->Buffer() # ウィンドウのバッファ・オブジェクトを + :perl $mybuf = $curwin->Buffer() # ウィンドウのバッファオブジェクトを # 返す :perl $curbuf->Name() # バッファ名を返します :perl $curbuf->Number() # returns buffer number diff --git a/doc/options.jax b/doc/options.jax index fa81b98dd..42b685a85 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1766,7 +1766,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'hkmap' オフ ヘブライ語用キーボードマップなし 'hkmapp' オフ phoneticヘブライ語用キーボードマップなし 'hlsearch' オフ 検索でマッチした文字列に強調なし - 'incsearch' オフ インクリメンタル・サーチなし + 'incsearch' オフ インクリメンタルサーチなし 'indentexpr' "" expression によるインデントなし 'insertmode' オフ 挿入モードでの開始なし 'iskeyword' + "@,48-57,_" キーワードはアルファベットと数字と '_' @@ -4868,8 +4868,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'loadplugins' 'lpl' 切替 (既定ではオン) グローバル {Vi にはない} - オンのときは、Vimが立ち上がるときにプラグイン・スクリプトが読み込まれ - る |load-plugins|。 + オンのときは、Vimが立ち上がるときにプラグインスクリプトが読み込まれる + |load-plugins|。 このオプションをユーザーのファイル |vimrc| 内でオフにすることで、プラグ インの読み込みを無効化できる。 Note コマンドライン引数 "-u NONE" または "--noplugin" によってこのオプ @@ -8084,15 +8084,15 @@ Note 1番目の形式では、行全体がオプション指定に使われる がここで指定されたものを上書きする。環境変数は、オプションの設 定時ではなく、ファイルの読み込み時に展開される。 *viminfo-r* - r リムーバブル・メディア {訳注: USBメモリ、CD-ROM等の取り外せる - 記憶装置。この中身は取り替えてしまえば全く変わるので、ファイル - 履歴の意味がない} の指定。引数は文字列 (次の ',' まで) である。 + r リムーバブルメディア {訳注: USBメモリ、CD-ROM等の取り外せる記 + 憶装置。この中身は取り替えてしまえば全く変わるので、ファイル履 + 歴の意味がない} の指定。引数は文字列 (次の ',' まで) である。 これは複数個指定できる。それぞれがマーク履歴の対象外になるパス - の先頭部を指定する。これはリムーバブル・メディアを避けるためで - ある。 MS-DOSでは "ra:,rb:", Amigaでは "rdf0:,rdf1:,rdf2:" と - するとよい。ここに一時ファイルを指定することもできる(Unixの例: - "r/tmp")。大文字と小文字の区別はない。それぞれの 'r' の引数の - 最大長は 50 文字である。 + の先頭部を指定する。これはリムーバブルメディアを避けるためであ + る。 MS-DOSでは "ra:,rb:", Amigaでは "rdf0:,rdf1:,rdf2:" とす + るとよい。ここに一時ファイルを指定することもできる + (Unixの例: "r/tmp")。大文字と小文字の区別はない。それぞれの + 'r' の引数の最大長は 50 文字である。 *viminfo-s* s Kbyte単位でのフラグの最大値。0のときレジスタは保存されない。現 在のところこれはレジスタにのみ適用される。既定値の "s10" の状 diff --git a/doc/os_amiga.jax b/doc/os_amiga.jax index 8b5b05932..be438f472 100644 --- a/doc/os_amiga.jax +++ b/doc/os_amiga.jax @@ -49,7 +49,7 @@ Vim がクラッシュしたら、それはスタックが小さすぎる可能 t_ZH (イタリック・テキスト) t_ZR (t_ZH 後の普通のテキスト) -標準の ANSI エスケープ・シーケンスが使われます。コードは: +標準の ANSI エスケープシーケンスが使われます。コードは: 30 grey char 40 grey cell >0 grey background 0 all attributes off 31 black char 41 black cell >1 black background 1 boldface 32 white char 42 white cell >2 white background 2 faint diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 5a9442009..a8dc3eb23 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -28,8 +28,8 @@ SECTION 1 - 一般的な情報 *faq-resources* SECTION 2 - 情報源 |faq-2.1| どこに行けば Vim についてもっと学べるでしょうか? -|faq-2.2| メーリング・リストはありますか? -|faq-2.3| メーリング・リストのアーカイブはありますか? +|faq-2.2| メーリングリストはありますか? +|faq-2.3| メーリングリストのアーカイブはありますか? |faq-2.4| HTML/PDF/PS形式のVimユーザマニュアルはどこで手に入りますか? |faq-2.5| ある問題が発生しました。それが私の設定によるものか、Vimそのものの 問題かはどうすればわかりますか? @@ -50,13 +50,13 @@ SECTION 3 - 入手 すか? *faq-help* SECTION 4 - ヘルプ -|faq-4.1| どうやってヘルプ・ファイルを利用するんですか? +|faq-4.1| どうやってヘルプファイルを利用するんですか? |faq-4.2| どうやってVimヘルプファイル中のキーワードを探すんですか? |faq-4.3| エラーメッセージE123が出ました。なにがまずいのでしょうか? |faq-4.4| Vimの様々なモードについては何を読めばいいですか? |faq-4.5| 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファ イルを生成することができますか? -|faq-4.6| 圧縮したヘルプ・ファイルを使うことはできますか? +|faq-4.6| 圧縮したヘルプファイルを使うことはできますか? *faq-editing-a-file* SECTION 5 - ファイルの編集 |faq-5.1| ファイルを編集用に読み込むには? @@ -614,16 +614,16 @@ SECTION 1 - 一般的な情報 Vim とは Vi IMproved を表します。かつては Vi IMitation の略でしたが、あまりに 多くの改良があったため名前の変更は適切なものでした。Vim は、Unix プログラムの -"Vi" のほとんど全てのコマンドや、多くの新しいコマンドを含んだテキスト・エディ -タです。全てのコマンドはキーボードで与えることができます。これには、指はキー -ボードに置いたまま、目はスクリーンに向けておけるという利点があります。望む人に -は、マウス・サポートや、スクロールバーとメニューのついた GUI 版もあります。 +"Vi" のほとんど全てのコマンドや、多くの新しいコマンドを含んだテキストエディタ +です。全てのコマンドはキーボードで与えることができます。これには、指はキーボー +ドに置いたまま、目はスクリーンに向けておけるという利点があります。望む人には、 +マウスサポートや、スクロールバーとメニューのついた GUI 版もあります。 -Vim はエディタであって、ワード・プロセッサではありません。ワード・プロセッサは -主にテキストのレイアウトを行うのに使われます。つまり、位置決めや、表示時の見え -方を変えたり、ということです。たいてい最終的なドキュメントは他の人に満足いくよ -うに見せるため、印刷したり活字に組んだりなどするよう意図されます。ワード・プロ -セッサの例は、Microsoft Word、WordPerfect、FrameMaker、AmiPro です。 +Vim はエディタであって、ワードプロセッサではありません。ワードプロセッサは主に +テキストのレイアウトを行うのに使われます。つまり、位置決めや、表示時の見え方を +変えたり、ということです。たいてい最終的なドキュメントは他の人に満足いくように +見せるため、印刷したり活字に組んだりなどするよう意図されます。ワードプロセッサ +の例は、Microsoft Word、WordPerfect、FrameMaker、AmiPro です。 エディタは単純にテキストを入力するためのものです。ドキュメントの植字やレイアウ トは二次的なものです。エディタにおいて、主な関心事はテキスト入力であり、テキス @@ -680,8 +680,8 @@ Stevie に基づいています。 Vi を現代化する機能: 多段階アンドゥ - ファイル・バッファにおける変更を元に戻す回数を設定することができます。ア - ンドゥされた変更をリドゥすることもできます。 + ファイルバッファにおける変更を元に戻す回数を設定することができます。アン + ドゥされた変更をリドゥすることもできます。 複数ウィンドウとバッファ それぞれのファイルはそれ自身のウィンドウに表示することができます。一つの ウィンドウから別のウィンドウへ簡単に移動することができます。それぞれの開 @@ -700,7 +700,7 @@ Vi を現代化する機能: ブロック・オペレーター テキストを長方形のブロック状に選択、ハイライトさせ、その部分に対し特定の 操作を行うことができます。 - オンライン・ヘルプシステム + オンラインヘルプシステム どんな Vim 使用の局面であれ、容易に答えを探すことができます。ヘルプはそれ 自身のウィンドウに表示されます。 コマンドライン編集と履歴 @@ -732,11 +732,11 @@ Vi を現代化する機能: 起動時に読み込まれるコマンドライン履歴やファイル内のマーク、レジスタを記 憶しておくことができます。したがって、以前の検索パターンや、マクロなどを、 新しい Vim セッションで呼び出すことができます。 - マウス・サポート + マウスサポート マウスは xterm や MS-DOS でサポートされています。カーソル位置を設定した り、ビジュアル領域を選択したり、レジスタを貼り付けたり、等のことができま す。 - グラフィカル・ユーザー・インターフェイス(GUI) + グラフィカルユーザーインターフェイス(GUI) 他の昨今のエディタと同様です。その上、独自のメニューを追加することも非常 に簡単です。もちろん、コンソール版の Vim も今なおサポートされており、幅広 く利用されています。 @@ -746,7 +746,7 @@ Vi を現代化する機能: できます。 プラグイン Vim コマンドによって実装された拡張機能で、起動時に自動的にロードされます。 - 例: ファイル・エクスプローラー、ネットワーク編集。更に多くのものが + 例: ファイルエクスプローラ、ネットワーク編集。更に多くのものが VimOnline にて常に開発、共有されています。 多数のプログラミング言語に対応した構文強調 数百ものプログラミング言語に対応した構文強調があります。他の言語への対応 @@ -765,7 +765,7 @@ Vi を現代化する機能: インクルードファイル内の単語を検索 カーソルの下の単語とのマッチを、現在のファイルとインクルードされるファイ ル内で検索することができます。 - 先進的なテキスト・オブジェクト + 先進的なテキストオブジェクト ( と ) や、{ と } や、< と > 、また [ と ] の間の全てのテキストに対して、 また単語、文、段落に対して、一瞬で選択したり、削除やコピーをしたり、字下 げ、整形、大文字小文字の変換、等々を行うことができます。非常に強力です。 @@ -817,7 +817,7 @@ Vimの質問は vim@vim.org メーリングリストに投稿できます。Vim :help internet < *faq-2.2* -2.2. メーリング・リストはありますか? +2.2. メーリングリストはありますか? いくつか存在します: > @@ -832,15 +832,15 @@ Vimの質問は vim@vim.org メーリングリストに投稿できます。Vim vim-vms VMS上での開発について これらのうち、vim と vim-dev だけが一般的な興味を引くものです。vim-announce は -ほとんどの人にとってはリード・オンリーですし、そのメッセージは他のリストにも送 -信されます。他の 4 つは非常に通信量が少ないです。 +ほとんどの人にとってはリードオンリーですし、そのメッセージは他のリストにも送信 +されます。他の 4 つは非常に通信量が少ないです。 購読するには: <名前>-subscribe@vim.org にメールを送ってください。 購読を中止するには: <名前>-unsubscribe@vim.org にメールを送ってください。 ヘルプを得るには: <名前>-help@vim.org にメールを送ってください。 *faq-2.3* -2.3. メーリング・リストのアーカイブはありますか? +2.3. メーリングリストのアーカイブはありますか? あります。http://www.yahoogroups.com/list/<名前> を訪ねてみてください。<名前> の所には次の @@ -848,9 +848,8 @@ Vimの質問は vim@vim.org メーリングリストに投稿できます。Vim のどれかが入ります。 もしくは、www.gmane.org に行って GMANE について調べてみてください。これはメー -リング・リストに、あたかもニュースグループのような感覚でアクセスすることができ -るものです。履歴をざっと眺めたり、現在のスレッドを気軽に見ることができて便利で -す。 +リングリストに、あたかもニュースグループのような感覚でアクセスすることができる +ものです。履歴をざっと眺めたり、現在のスレッドを気軽に見ることができて便利です。 *faq-2.4* 2.4. HTML/PDF/PS形式のVimユーザーマニュアルはどこで手に入りますか? @@ -901,10 +900,10 @@ HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロー そして上のコマンドで得られたテキストをbugs@vim.orgメールアドレスに送ってくださ い。 -Vim 開発のメーリング・リスト(上を見てください)は通常のバグについて議論するのに -ふさわしい場所です。あなたの見つけたバグがシンタックス・ハイライティングやその -他の「付加的な機能」(つまり、直接 vim にプログラムされていないもの)に関するも -のであれば、その機能のメンテナに報告してみてください。 +Vim 開発のメーリングリスト(上を見てください)は通常のバグについて議論するのにふ +さわしい場所です。あなたの見つけたバグがシンタックスハイライティングやその他の +「付加的な機能」(つまり、直接 vim にプログラムされていないもの)に関するもので +あれば、その機能のメンテナに報告してみてください。 さらなる情報については以下を参照してください。 > @@ -1008,25 +1007,25 @@ ftpサイトのftp://ftp.vim.org/pub/vim/runtimeディレクトリでダウン SECTION 4 - ヘルプ *faq-4.1* -4.1. どうやってヘルプ・ファイルを利用するんですか? +4.1. どうやってヘルプファイルを利用するんですか? Vim の全ての機能にヘルプがあります。それを利用するには、":h" を使ってください。 -そうするとメインのヘルプ・ページを見ることができます。この最初のページで、どう -やって動き回るかの説明があると思います。基本的にはリード・オンリーのドキュメン -ト内を動き回るのと同じ仕方でヘルプ内を移動します。特定のテーマへジャンプするに -はタグを使うことができます。これは二通りの方法で行えます: +そうするとメインのヘルプページを見ることができます。この最初のページで、どう +やって動き回るかの説明があると思います。基本的にはリードオンリーのドキュメント +内を動き回るのと同じ仕方でヘルプ内を移動します。特定のテーマへジャンプするには +タグを使うことができます。これは二通りの方法で行えます: * コマンドやオプションの上で "<Ctrl-]>" コマンドを使う。これはタグがキー ワードである場合にのみ有効です。"<Ctrl-LeftMouse>" や "g<LeftMouse>" も "<Ctrl-]>" と同じように機能します。 * ":ta subject" コマンドを使う。これはどんな文字であっても利用できます。 -以前のヘルプ・ファイルの場所へ戻るには "<Ctrl-T>" を使ってください。ヘルプを閉 -じるには ":q" を使ってください。 +以前のヘルプファイルの場所へ戻るには "<Ctrl-T>" を使ってください。ヘルプを閉じ +るには ":q" を使ってください。 -ヘルプ・ページのある特定のテーマへジャンプしたければ ":h {subject}" を使ってく -ださい。何を探せば良いか分からなければ、 ":h index" で全ての利用可能なテーマの -一覧を得ることができます。標準の検索語を使って欲しい情報を見つけてください。 +ヘルプページのある特定のテーマへジャンプしたければ ":h {subject}" を使ってくだ +さい。何を探せば良いか分からなければ、 ":h index" で全ての利用可能なテーマの一 +覧を得ることができます。標準の検索語を使って欲しい情報を見つけてください。 ":help"コマンドは":h"と短縮することができます。 さらなる情報については以下を参照してください。 > @@ -1102,7 +1101,7 @@ Vimにおけるモードの違いについては、以下を読めば情報を :help add-local-help < *faq-4.6* -4.6. 圧縮したヘルプ・ファイルを使うことはできますか? +4.6. 圧縮したヘルプファイルを使うことはできますか? できます。ヘルプファイルを圧縮し、それをVimで表示することもできます。これを行 うとヘルプファイルにアクセスするのが少し遅くなり、"gzip"ユーティリティが必要に From 7247ac9578441de3825914bf4dab3ed397d8fecf Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Tue, 12 Jan 2016 22:43:51 +0900 Subject: [PATCH 730/783] =?UTF-8?q?=E3=82=A8=E3=82=AF=E3=82=B9=E3=83=97?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=83=A9=E3=81=AB=E9=95=B7=E9=9F=B3=E7=AC=A6?= =?UTF-8?q?=E3=82=92=E4=BB=98=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/help.jax | 2 +- doc/pi_netrw.jax | 4 ++-- doc/usr_21.jax | 2 +- doc/usr_31.jax | 4 ++-- doc/windows.jax | 4 ++-- vim_faq/vim_faq.jax | 8 ++++---- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/help.jax b/doc/help.jax index 7d23cb634..84adf0f7e 100644 --- a/doc/help.jax +++ b/doc/help.jax @@ -200,7 +200,7 @@ GUI ~ |pi_logipat.txt| パターンにおける論理演算子 |pi_netrw.txt| ネットワークファイルの読み書き |pi_paren.txt| 対括弧の強調表示 -|pi_tar.txt| Tar ファイルエクスプローラ +|pi_tar.txt| Tar ファイルエクスプローラー |pi_vimball.txt| Vim スクリプトインストーラを作成する |pi_zip.txt| Zip アーカイブエクスプローラ diff --git a/doc/pi_netrw.jax b/doc/pi_netrw.jax index 0a2353ec8..de18c42cc 100644 --- a/doc/pi_netrw.jax +++ b/doc/pi_netrw.jax @@ -1849,8 +1849,8 @@ g:netrw_mkdir_cmd 変数に依存。ローカル操作は g:netrw_localmkdir に ブラウジングディレクトリをカレントディレクトリにする *netrw-c* {{{2 |g:netrw_keepdir| の初期設定は 1 です。この設定の場合、カレントディレクトリは -ブラウジングディレクトリに合わせて変更されません。(v6 のファイルエクスプローラ -との互換性のため) +ブラウジングディレクトリに合わせて変更されません。(v6 のファイルエクスプロー +ラーとの互換性のため) g:netrw_keepdir を 0 に設定すると、ディレクトリを移動する度にカレントディレク トリが設定されます。 diff --git a/doc/usr_21.jax b/doc/usr_21.jax index a78d9b8fe..ce20da592 100644 --- a/doc/usr_21.jax +++ b/doc/usr_21.jax @@ -319,7 +319,7 @@ secret セッションをロードすると今現在の状態から作業を再 +----------------------------------------+ ヘルプウィンドウが上部に表示され、いつでも参照できます。左端の縦長のウィンドウ -はファイルエクスプローラという Vim のプラグインです。ディレクトリのファイル +はファイルエクスプローラーという Vim のプラグインです。ディレクトリのファイル 一覧を表示し、その中からファイルを選択して開くことができます。詳しくは次章で説 明します。 このようなウィンドウを作るには、Vim を起動してから次のコマンドを実行します: > diff --git a/doc/usr_31.jax b/doc/usr_31.jax index 4fbb1a662..27b0dddf3 100644 --- a/doc/usr_31.jax +++ b/doc/usr_31.jax @@ -70,8 +70,8 @@ Vim は端末でも動作しますが、GUI 版の Vim にはさらに追加機 (可能な限り) 標準のブラウザを使用します。システムのドキュメントにキー ボードショートカットの説明が載っているはずです。 -GUI を使っていない場合でも、ファイルエクスプローラを使えばファイルブラウザと同 -じようにファイルを選択できます。ただし、":browse" コマンドは使えません。 +GUI を使っていない場合でも、ファイルエクスプローラーを使えばファイルブラウザと +同じようにファイルを選択できます。ただし、":browse" コマンドは使えません。 |netrw-browse| 参照。 ============================================================================== diff --git a/doc/windows.jax b/doc/windows.jax index d6ed02767..a7c03bf6e 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -1211,8 +1211,8 @@ help ヘルプファイルを保持する。|:help| コマンドによっての ない。ヘルプバッファに対する 'buflisted' オプションはリセット される。 -directory ディレクトリの内容を表示する。ファイルエクスプローラプラグイン - で使用されている。このバッファは以下の設定で作成される: > +directory ディレクトリの内容を表示する。ファイルエクスプローラープラグイ + ンで使用されている。このバッファは以下の設定で作成される: > :setlocal buftype=nowrite :setlocal bufhidden=delete :setlocal noswapfile diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index a8dc3eb23..f0de7c589 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -746,7 +746,7 @@ Vi を現代化する機能: できます。 プラグイン Vim コマンドによって実装された拡張機能で、起動時に自動的にロードされます。 - 例: ファイルエクスプローラ、ネットワーク編集。更に多くのものが + 例: ファイルエクスプローラー、ネットワーク編集。更に多くのものが VimOnline にて常に開発、共有されています。 多数のプログラミング言語に対応した構文強調 数百ものプログラミング言語に対応した構文強調があります。他の言語への対応 @@ -1441,14 +1441,14 @@ CTRL-^を使ってバッファを切り替えることもできます。キー 標準Vimディストリビューションに同梱のexplorer.vimプラグインを使えばVim内でディ レクトリをブラウズすることができます。以下のコマンドのうちどれかでファイルエク -スプローラを起動することができます: > +スプローラーを起動することができます: > :e <directory> :Explore :SExplore < -ファイルエクスプローラではディレクトリをブラウズし、ファイルをリネーム、削除、 -編集することができます。 +ファイルエクスプローラーではディレクトリをブラウズし、ファイルをリネーム、 +削除、編集することができます。 さらなる情報については以下を参照してください。 > From 14b7569354b58deeb9e73aeb71370515e18c8356 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Sat, 16 Jan 2016 22:42:54 +0900 Subject: [PATCH 731/783] =?UTF-8?q?=E3=82=A8=E3=82=AF=E3=82=B9=E3=83=97?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=83=A9=E3=81=AB=E9=95=B7=E9=9F=B3=E7=AC=A6?= =?UTF-8?q?=E3=82=92=E4=BB=98=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/ft_ada.jax | 3 ++- doc/gui_w32.jax | 24 ++++++++++++------------ doc/help.jax | 2 +- doc/os_win32.jax | 4 ++-- doc/pi_netrw.jax | 28 ++++++++++++++-------------- doc/usr_21.jax | 2 +- doc/usr_22.jax | 2 +- vim_faq/vim_faq.jax | 4 ++-- 8 files changed, 35 insertions(+), 34 deletions(-) diff --git a/doc/ft_ada.jax b/doc/ft_ada.jax index 1ad370ce6..37a549227 100644 --- a/doc/ft_ada.jax +++ b/doc/ft_ada.jax @@ -496,7 +496,8 @@ matchit.vim taglist.vim http://www.vim.org/scripts/script.php?script_id=273 - ソースコードエクスプローラサイドバー。Adaで利用可能にするパッチがある。 + ソースコードエクスプローラーサイドバー。Adaで利用可能にするパッチがあ + る。 GNU Adaプロジェクトが配布するVimは以上を全て含んでいる。 diff --git a/doc/gui_w32.jax b/doc/gui_w32.jax index da43c43aa..9f8dd6ad6 100644 --- a/doc/gui_w32.jax +++ b/doc/gui_w32.jax @@ -66,7 +66,7 @@ Vim をプラグインとして使う *gui-w32-windowid* 2. デフォルトエディタVim *vim-default-editor* Vimをあるファイルタイプのデフォルトエディタにするには: -1. Windowsのエクスプローラを起動する +1. Windowsのエクスプローラーを起動する 2. ツール/フォルダオプション -> ファイルタイプ (W2K + IE5.5) 3. Vimを使用したい全てのファイルタイプに対して、gvimのパスを設定する。(拡張子 の無いファイルタイプに対しては、ファイルタイプを指定するフィールドに3つのス @@ -97,7 +97,7 @@ Vimを全画面で起動したい時には、openのアクションとして次 *send-to-menu* *sendto* Vimを "送る" メニューに追加することもできる: -1. Windowsのエクスプローラを起動する。 +1. Windowsのエクスプローラーを起動する。 2. "送る" のためのディレクトリに移動する: Windows 95: %windir%\sendto (e.g. "c:\windows\sendto") Windows NT: %windir%\profiles\%user%\sendto (e.g. @@ -175,24 +175,24 @@ HKLM\Software\Vim\Gvim に DisableEditWithExisting という名前のエント "アプリケーションの追加と削除" のリストの、エントリを使うことも出来る。 このエントリがファイルタイプの関連付けを抑制してしまうことに気が付いたら、手動 -で関連付けをやり直す(上記を参考に、Windowsのエクスプローラを使って)。これは +で関連付けをやり直す(上記を参考に、Windowsのエクスプローラーを使って)。これは Windows NTの幾つかのバージョンでだけ起こるらしい(Windowsのバグ?)。手続き: 1. ファイルタイプの名前を見つける。これはレジストリエディタを起動し、 \\HKEY_CLASSES_ROOTで拡張子を探すことで行える。 -2. Windowsエクスプローラでは、表示→オプション→ファイルタイプ。リストの中から - ファイルタイプを探し出し "編集" をクリック。アクションのリストで、デフォル - トとして使用したいものを選択し(通常は "開く" アクション)、"標準" ボタンをク - リックする。 +2. Windowsエクスプローラーでは、表示→オプション→ファイルタイプ。リストの中か + らファイルタイプを探し出し "編集" をクリック。アクションのリストで、デフォ + ルトとして使用したいものを選択し(通常は "開く" アクション)、"標準" ボタンを + クリックする。 "アプリケーションから開く" コンテキストメニュー *win32-open-with-menu* ("Open With...") -Vimのインストーラを使うならエクスプローラのメニューの "アプリケーションから開 -く" にVimを加えるか選択することができる。これはVimでいろんなファイルを編集する -なら重要である。(不明瞭な理由で)全てのファイルには使えない。したがって "Edit +Vimのインストーラを使うならエクスプローラーのメニューの "アプリケーションから +開く" にVimを加えるか選択することができる。これはVimでいろんなファイルを編集す +るなら重要である。(不明瞭な理由で)全てのファイルには使えない。したがって "Edit with Vim" メニューの方が使いやすい。 -これを追加する理由の一つがインターネットエクスプローラから直接ファイルを編集 +これを追加する理由の一つがインターネットエクスプローラーから直接ファイルを編集 できるようにするためである。これを有効にするには "Tools" メニューから "Internet Options..." を選択し、出てきたダイアログウィンドウの "Programs" タ ブの "HTML editor" にVimを選択する。そこにVimがなければインストールは完了し @@ -290,7 +290,7 @@ Windows 95では、実行されるコマンドのウィンドウは、DOSとの もしも外部プログラムを使用したときに、"このプログラムはMS-DOSモードで起動しま す…" のようなダイアログが表示されたならば、関連付けられたショートカットのプロ パティを変更することでこれを解消することができる: -- Windowsエクスプローラを使用して使用されたcommand.comを探す。恐らく +- Windowsエクスプローラーを使用して使用されたcommand.comを探す。恐らく c:\command.com、c:\dos\command.com、c:\windows\command.comなどのどれか。 - マウスの右ボタンで、command.comのプロパティを選択。 - プログラムタブの "詳細設定" を選択。 diff --git a/doc/help.jax b/doc/help.jax index 84adf0f7e..830883ca3 100644 --- a/doc/help.jax +++ b/doc/help.jax @@ -202,7 +202,7 @@ GUI ~ |pi_paren.txt| 対括弧の強調表示 |pi_tar.txt| Tar ファイルエクスプローラー |pi_vimball.txt| Vim スクリプトインストーラを作成する -|pi_zip.txt| Zip アーカイブエクスプローラ +|pi_zip.txt| Zip アーカイブエクスプローラー その他 ~ |vim_faq.txt| FAQ diff --git a/doc/os_win32.jax b/doc/os_win32.jax index 9714c026c..baa8edc84 100644 --- a/doc/os_win32.jax +++ b/doc/os_win32.jax @@ -71,8 +71,8 @@ Microsoftに勤務している誰かからのコメント: "Win95のコンソー カレントディレクトリ *win32-curdir* Vimにフルパスのファイル名("x:\" の形で始まる)を指定したとき、Vimはエクスプロー -ラから起動されたと仮定してそのファイルのあるディレクトリをカレントディレクトリ -にする。そうならないようにするにはファイルのパスにバックスラッシュ(\)の代わり +ラーから起動されたと仮定してそのファイルのあるディレクトリをカレントディレクト +リにする。そうならないようにするにはファイルのパスにバックスラッシュ(\)の代わり にスラッシュ(/)を使うこと。 > vim c:\text\files\foo.txt diff --git a/doc/pi_netrw.jax b/doc/pi_netrw.jax index de18c42cc..66943640e 100644 --- a/doc/pi_netrw.jax +++ b/doc/pi_netrw.jax @@ -926,9 +926,9 @@ Netrw はローカルシステムとリモートホストのディレクトリ リへの移動、ファイルを開く、ファイルとディレクトリの削除、ディレクトリの作成、 ファイルとディレクトリの移動 (名前の変更)、ファイルとディレクトリのコピー、な どです。ファイルを選択し、任意のシステムコマンドを実行できます。Netrw ブラウザ -には以前のエクスプローラプラグインのマップとコマンドが実装されていて、それはリ -モートディレクトリに対しても実行できます。ただし、細かい違いはあります (グロー -バル変数の名前など)。ディレクトリをブラウズするには単にそれを開きます。 > +には以前のエクスプローラープラグインのマップとコマンドが実装されていて、それは +リモートディレクトリに対しても実行できます。ただし、細かい違いはあります (グ +ローバル変数の名前など)。ディレクトリをブラウズするには単にそれを開きます。 > vim /your/directory/ vim . @@ -1091,7 +1091,7 @@ QUICK HELP *netrw-quickhelp* {{{2 :Ntree....................................................|netrw-ntree| :Explore[!] [dir] カレントファイルのディレクトリを開く...|netrw-explore| :Hexplore[!] [dir] 水平分割 & Explore.....................|netrw-explore| - :Lexplore [dir] 左エクスプローラ切り替え...............|netrw-explore| + :Lexplore [dir] 左エクスプローラー切り替え.............|netrw-explore| :Nexplore[!] [dir] 垂直分割 & Explore.....................|netrw-explore| :Pexplore[!] [dir] 垂直分割 & Explore.....................|netrw-explore| :Rexplore Explorer に戻る........................|netrw-explore| @@ -1454,12 +1454,12 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は :[N]Explore[!] [dir]... カレントファイルのディレクトリを開く *:Explore* :[N]Hexplore[!] [dir]... 水平分割で開く *:Hexplore* - :Rexplore ... エクスプローラに/から戻る *:Rexplore* + :Rexplore ... エクスプローラーに/から戻る *:Rexplore* :[N]Sexplore[!] [dir]... カレントファイルのディレクトリを分割 *:Sexplore* して開く :Texplore [dir]... タブで開く *:Texplore* :[N]Vexplore[!] [dir]... 垂直分割で開く *:Vexplore* - :Lexplore [dir]... 左エクスプローラを切り替える *:Lexplore* + :Lexplore [dir]... 左エクスプローラーを切り替える *:Lexplore* :Explore **/pattern で開いたときに使うコマンド : (|netrw-starstar|参照) :Nexplore............. 次のファイルに移動 *:Nexplore* @@ -1474,8 +1474,8 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は |netrw-:Rexplore| も参照。 :Explore! は、:Explore と同じですが、ウィンドウを垂直分割します。 *netrw-:Lexplore* -:Lexplore [dir] 現在のタブの左側に、エクスプローラウィンドウを開いたり閉じたり - します。 [dir] を省略したときは現在のディレクトリを開きます。 +:Lexplore [dir] 現在のタブの左側に、エクスプローラーウィンドウを開いたり閉じた + りします。 [dir] を省略したときは現在のディレクトリを開きます。 :Lexplore [dir] は、どのウィンドウで実行したかに関係なく、タブの左側 でブラウザを開き、指定されたディレクトリを表示します。初期設定では、 :Lexplore は未初期化の |g:netrw_chgwin| を 2 に設定します。つまり @@ -1498,22 +1498,22 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は 引数を指定しなかった場合、これらのコマンドはカレントファイルのディレクトリを開 きます。明示的にディレクトリ (path) を指定することもできます。 -[N] は新しいエクスプローラウィンドウの幅/高さを指定します。これは +[N] は新しいエクスプローラーウィンドウの幅/高さを指定します。これは |g:netrw_winsize| よりも優先されます。 幅指定がない場合は、|g:netrw_winsize| 変数が (設定されているなら)、新しいエク -スプローラウィンドウの幅/高さとして使用されます。 +スプローラーウィンドウの幅/高さとして使用されます。 *netrw-:Rexplore* -:Rexplore このコマンドは他のコマンドとは少し違い、あらかじめエクスプローラ +:Rexplore このコマンドは他のコマンドとは少し違い、あらかじめエクスプローラー ウィンドウを開いてからでないと使えません。 - エクスプローラに戻る~ + エクスプローラーに戻る~ 例えば netrw ブラウザ上でファイルの上で <cr> を押してファイルを開い たとき、:Rexplore を使うと、そのウィンドウで最後に表示していた netrw ブラウザの画面に戻ることができます。 - エクスプローラから戻る~ + エクスプローラーから戻る~ 逆に、ディレクトリを開いているとき、:Rexplore を使うと、そのウィン ドウで最後に開いていたファイルに戻ることができます。 @@ -2004,7 +2004,7 @@ mt (|netrw-mt|) でコピー先ディレクトリを選択し、ファイルの (グローバルマークファイルリスト使用) このコマンドはマークされたファイルを |arglist| に設定し、編集を開始します。 -|:Rexplore| でエクスプローラウィンドウに戻ることができます。 +|:Rexplore| でエクスプローラーウィンドウに戻ることができます。 (引数リスト内の次のファイル、前のファイルを開くには |:n| と |:p| を使う) マークファイル: GREP *netrw-mg* {{{2 diff --git a/doc/usr_21.jax b/doc/usr_21.jax index ce20da592..3a6f3124e 100644 --- a/doc/usr_21.jax +++ b/doc/usr_21.jax @@ -336,7 +336,7 @@ secret セッションをロードすると今現在の状態から作業を再 vim -S ~/.vim/mine.vim -Hint: エクスプローラでファイルを選択し、空のウィンドウでファイルを開くには、 +Hint: エクスプローラーでファイルを選択し、空のウィンドウでファイルを開くには、 ファイル名の場所にカーソルを移動して "O" を押します。マウスのダブルクリックで も同じ動作になります。 diff --git a/doc/usr_22.jax b/doc/usr_22.jax index d4b73745e..f3674a6ab 100644 --- a/doc/usr_22.jax +++ b/doc/usr_22.jax @@ -58,7 +58,7 @@ help.txt.info ~ 一覧の中はノーマルモードコマンドで移動できます。ファイル名の上にカーソルを動か して <Enter> を押すとファイルが開きます。もう一度 ":edit ." と入力すればエクス -プローラに戻れます。CTRL-O で戻ることもできます。 +プローラーに戻れます。CTRL-O で戻ることもできます。 ディレクトリ名の上にカーソルを動かして <Enter> を押すと、ファイルブラウザがそ のディレクトリに移動し、新たなファイル一覧が表示されます。"../" ディレクトリの diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index f0de7c589..56edb4a7f 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -551,7 +551,7 @@ SECTION 33 - MS-Windows上のVim れば? |faq-33.8| Outlookで外部エディタにVimを使うことはできますか? |faq-33.9| HTMLファイルを編集するのにVimを使っています。現在開いているHTML - ファイルをインターネットエクスプローラでプレビューするには? + ファイルをインターネットエクスプローラーでプレビューするには? |faq-33.10| VimをMicrosoft Visual Studioといっしょに使いたいです。どうすれば? |faq-33.11| どこに_vimrcと_gvimrcを置けばいいですか? |faq-33.12| ファイルを保存する度に、そのファイルがVimの外部で変更されていると @@ -6589,7 +6589,7 @@ COMアドイン"cubiclevim"を使えば、OutlookでVimを外部エディタと *faq-33.9* 33.9. HTMLファイルを編集するのにVimを使っています。現在開いているHTMLファイル - をインターネットエクスプローラでプレビューするには? + をインターネットエクスプローラーでプレビューするには? 以下のコマンドでできます: > From 9f28a6bc01374cf30a5d14e0fa0a27b0aef58f2a Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Sun, 17 Jan 2016 22:54:56 +0900 Subject: [PATCH 732/783] fix typo #153 --- doc/if_cscop.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/if_cscop.jax b/doc/if_cscop.jax index 8bf0892c3..b95909976 100644 --- a/doc/if_cscop.jax +++ b/doc/if_cscop.jax @@ -451,7 +451,7 @@ cscopeはSCOによりBSDライセンスに基づいて配布されている。 バージョン13.3の無制限ライセンス付きのソースコードが、AT&Tソフトウェア ソリューション(電話番号+1-800-462-8146)から400ドルで購入できる。 -また cscope 13.x や mlcscope 14.x (他国後バージョンのcscopeで、C, C++, Java, +また cscope 13.x や mlcscope 14.x (多国語バージョンのcscopeで、C, C++, Java, lex, yacc, breakpoint listing, Ingres, and SDL をサポートしている) を次のサイ トからダウンロードできる。 World-Wide Exptools Open Source packages page: From 19ff0b5266e92927776e6959317de2d92baad0c4 Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Mon, 18 Jan 2016 09:49:21 +0900 Subject: [PATCH 733/783] Update if_cscop.jax --- doc/if_cscop.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/if_cscop.jax b/doc/if_cscop.jax index b95909976..d2b1af7b7 100644 --- a/doc/if_cscop.jax +++ b/doc/if_cscop.jax @@ -451,7 +451,7 @@ cscopeはSCOによりBSDライセンスに基づいて配布されている。 バージョン13.3の無制限ライセンス付きのソースコードが、AT&Tソフトウェア ソリューション(電話番号+1-800-462-8146)から400ドルで購入できる。 -また cscope 13.x や mlcscope 14.x (多国語バージョンのcscopeで、C, C++, Java, +また cscope 13.x や mlcscope 14.x (多言語バージョンのcscopeで、C, C++, Java, lex, yacc, breakpoint listing, Ingres, and SDL をサポートしている) を次のサイ トからダウンロードできる。 World-Wide Exptools Open Source packages page: From d8a81896451fa6467e5f1457ffec52c23a31a055 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Mon, 18 Jan 2016 20:54:31 +0900 Subject: [PATCH 734/783] =?UTF-8?q?=E3=83=AF=E3=83=BC=E3=83=97=E3=83=AD=20?= =?UTF-8?q?->=20=E3=83=AF=E3=83=BC=E3=83=89=E3=83=97=E3=83=AD=E3=82=BB?= =?UTF-8?q?=E3=83=83=E3=82=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/usr_25.jax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/usr_25.jax b/doc/usr_25.jax index 72fb6bb88..3cead4b2a 100644 --- a/doc/usr_25.jax +++ b/doc/usr_25.jax @@ -65,9 +65,9 @@ 再整形 ------ -Vim はワープロではありません。ワープロなら、段落の最初の方で文字を削除すると、 -改行の位置が調整されますが、Vim は違います。つまり、一行目の "programming" を -削除すると、単にその行が短くなるだけです: +Vim はワードプロセッサではありません。ワードプロセッサなら、段落の最初の方で +文字を削除すると、改行の位置が調整されますが、Vim は違います。つまり、一行目 +の "programming" を削除すると、単にその行が短くなるだけです: 1 2 3 12345678901234567890123456789012345 From 6f9126a178f4eb734a8ff614aaf425bc9d9c6ac9 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Tue, 19 Jan 2016 21:52:27 +0900 Subject: [PATCH 735/783] =?UTF-8?q?binary:=20=E3=83=90=E3=82=A4=E3=83=8A?= =?UTF-8?q?=E3=83=AA=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/howto.jax | 2 +- doc/vi_diff.jax | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/howto.jax b/doc/howto.jax index 74d7eb5bb..9e50514d2 100644 --- a/doc/howto.jax +++ b/doc/howto.jax @@ -15,7 +15,7 @@ How to ... *howdoi* *how-do-i* *howto* *how-to* |07.4| 上書きするときにバックアップファイルを作っておく |usr_07.txt| ファイルを編集する -|23.4| バイナリーファイルを編集する +|23.4| バイナリファイルを編集する |usr_24.txt| テキストを挿入する |deleting| テキストを削除する |usr_04.txt| テキストを変更する diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index 2b18d9fc3..ceb39d869 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -444,11 +444,11 @@ Viminfo |viminfo-file| りました。この名前はマッピングでも使うことができますしそれらを編集する のが容易になります。 -バイナリーファイルを編集する |edit-binary| - Vim はバイナリーファイルを編集することができます。実行形式のファイルを +バイナリファイルを編集する |edit-binary| + Vim はバイナリファイルを編集することができます。実行形式のファイルを 壊すことなくいくつかの文字を変更することができます。Vim は NUL 文字を 削除しません(内部では <NL> と表されています)。 - |-b| バイナリーファイルの編集を始める時のコマンドライン引数 + |-b| バイナリファイルの編集を始める時のコマンドライン引数 |'binary'| |-b| によってセットされるオプションで、ファイルの最後の 行に <EOL> を付加するのをやめさせます From bd9d353f4a50427f0e947472443de9e115af20ff Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Wed, 20 Jan 2016 22:08:51 +0900 Subject: [PATCH 736/783] =?UTF-8?q?vendor:=20=E3=83=99=E3=83=B3=E3=83=80?= =?UTF-8?q?=E3=83=BC=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/ft_sql.jax | 26 +++++++++++++------------- doc/syntax.jax | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/doc/ft_sql.jax b/doc/ft_sql.jax index 61c5791a3..369d3bff0 100644 --- a/doc/ft_sql.jax +++ b/doc/ft_sql.jax @@ -101,12 +101,12 @@ SQL ファイルを編集するとき、以下のノーマルモード|Normal| 1.3 SQL 独自のオブジェクト単位移動 *sql-predefined-objects* ----------------------------- ほとんどのリレーショナルデータベースはテーブル、インデックス、トリガー、ストア -ドプロシージャなど様々な標準的な機能を備えています。また、ベンダごとに様々な独 -自オブジェクトがあります。次のマップたちはこれらのオブジェクト間を移動するため -に作られています。お使いのデータベースによってオブジェクトのリストを調整できる -ようでなればなりません。このファイルタイププラグインは標準オブジェクトのほとん -どと、多くの追加的なオブジェクトを定義しています。これを可能な限りフレキシブル -にするために、|vimrc| でオブジェクトのリストを上書きできるようになっています。 +ドプロシージャなど様々な標準的な機能を備えています。また、ベンダーごとに様々な +独自オブジェクトがあります。次のマップたちはこれらのオブジェクト間を移動するた +めに作られています。お使いのデータベースによってオブジェクトのリストを調整でき +るようでなればなりません。このファイルタイププラグインは標準オブジェクトのほと +んどと、多くの追加的なオブジェクトを定義しています。これを可能な限りフレキシブ +ルにするために、|vimrc| でオブジェクトのリストを上書きできるようになっています。 次のようにします: > let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' . \ ',schema,service,publication,database,datatype,domain' . @@ -213,25 +213,25 @@ Vim の機能に対応しています: > 定値の指定、プロシージャ言語(ストアドプロシージャとトリガー)を備えています。 標準の Vim ディストリビューションには Oracle の PL/SQL に基づいた構文ハイライ -トが付属しています。SQL インデントスクリプトは Oracle と SQL Anywhere -用に動作します。ファイルタイププラグインはすべてのベンダ用に動作し、ベンダ中立 -を保ちつつも拡張可能であるべきです。 +トが付属しています。SQL インデントスクリプトは Oracle と SQL Anywhere 用に動作 +します。ファイルタイププラグインはすべてのベンダー用に動作し、ベンダー中立を保 +ちつつも拡張可能であるべきです。 -現在様々なベンダに対応しています。これは構文スクリプトを通して実現しています。 +現在様々なベンダーに対応しています。これは構文スクリプトを通して実現しています。 残念なことに、複数の構文ルールを切り替えるには以下のどれかを作成しなければなり ません: 1. 新しいファイルタイプ 2. 独自のオートコマンド 3. コマンド手動実行 -大多数の人は1つのベンダのデータベース製品しか扱わないため、|vimrc| で既定値を -設定しておくとよいでしょう。 +大多数の人は1つのベンダーのデータベース製品しか扱わないため、|vimrc| で既定値 +を設定しておくとよいでしょう。 2.1 SQLSetType *sqlsettype* *SQLSetType* -------------- 複数のデータベースを扱っている人々にとっては、バッファごとまたは任意のタイミン -グでベンダのルール(インデント、構文)を切り替えられるとよいでしょう。 +グでベンダーのルール(インデント、構文)を切り替えられるとよいでしょう。 ftplugin/sql.vim では次のコマンドが定義されています: > SQLSetType diff --git a/doc/syntax.jax b/doc/syntax.jax index 09c3edf00..8c063844f 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -1258,7 +1258,7 @@ ISEが提案し、実験的に幾つかのコンパイラでは取り扱うこ :let eiffel_ise=1 -最後に幾つかのベンダは16進数定数値をサポートしている。それを取り扱うには: > +最後に幾つかのベンダーは16進数定数値をサポートしている。それを取り扱うには: > :let eiffel_hex_constants=1 @@ -2813,7 +2813,7 @@ SQLにはANSI標準があるのだが、ほとんどのデータベースエン している。現在のところ、VimはOracleとInformixのSQL方言をサポートしている。 デフォルトではVimは "*.sql" のファイルをOracle SQLであると判断する。 -現在のところ、Vimは構文スクリプトによって、様々なベンダのSQLに対応している。 +現在のところ、Vimは構文スクリプトによって、様々なベンダーのSQLに対応している。 デフォルト設定をOracleから他の対応しているSQLに変更することができる。また、 バッファごとに使うSQLの方言を変えることも簡単にできる。 From 6aeb3d49886dd89700ac1cfe67af85d62d8b88ad Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Thu, 21 Jan 2016 22:33:15 +0900 Subject: [PATCH 737/783] =?UTF-8?q?ruler:=20=E3=83=AB=E3=83=BC=E3=83=A9?= =?UTF-8?q?=E3=83=BC=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/options.jax | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 246e030a6..7f804737b 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1774,7 +1774,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'modeline' + オフ モードラインなし 'more' + オフ リスト表示が止まらない 'revins' オフ 右から左の挿入なし - 'ruler' オフ ルーラなし + 'ruler' オフ ルーラーなし 'scrolljump' 1 ジャンプスクロールなし 'scrolloff' 0 スクロールにオフセットなし 'shiftround' オフ インデントは shiftwidth の整数倍でない @@ -5912,27 +5912,27 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vimが |+cmdline_info| 機能付きでコンパイルされたとき のみ有効} - カーソルが何行目の何列目に置かれているかを表示する {訳注: これをルーラ - と呼ぶ}。行数と列数はコンマで区切られる。幅に余裕があるときは、表示さ - れているテキストの、ファイル内での相対位置が右端に表示される。 + カーソルが何行目の何列目に置かれているかを表示する {訳注: これをルー + ラーと呼ぶ}。行数と列数はコンマで区切られる。幅に余裕があるときは、表 + 示されているテキストの、ファイル内での相対位置が右端に表示される。 先頭 ファイル先頭の行が表示されているとき 末尾 ファイル末尾の行が表示されているとき 全て ファイル先頭と末尾の行の両方が表示されているとき 45% ファイル内での相対位置 - オプション 'rulerformat' が設定されているときは、それによってルーラの - 内容が指定される。ルーラはウィンドウごとに表示される。ウィンドウにステー - タス行が表示されていれば、ルーラもそこに表示される。そうでなければ画面 - の末尾の行に表示される。ステータス行の内容が 'statusline' で指定されて - いるときは (つまりその値が空でないときは)、'statusline' が 'ruler' や - 'rulerformat' より優先される。 + オプション 'rulerformat' が設定されているときは、それによってルーラー + の内容が指定される。ルーラーはウィンドウごとに表示される。ウィンドウに + ステータス行が表示されていれば、ルーラーもそこに表示される。そうでなけ + れば画面 の末尾の行に表示される。ステータス行の内容が 'statusline' で + 指定されているときは (つまりその値が空でないときは)、'statusline' が + 'ruler' や 'rulerformat' より優先される。 表示された文字の数がテキスト上でのバイト数と違うときは (例えば、タブ文 字やマルチバイト文字があるとき)、テキスト上の列数 (バイト数) と画面上 の列数が、ダッシュで区切られて両方表示される。 空行では "0-1" と表示される。 空のバッファでは行数も0になり、 "0,0-1" と表示される。 このオプションは、'paste' がオンのときはオフになる。 - ルーラを常に表示したくはないが、テキスト内のどこにいるのか知りたいとき - は、コマンド "g CTRL-G" を使うこと |g_CTRL-G|。 + ルーラーを常に表示したくはないが、テキスト内のどこにいるのか知りたいと + きは、コマンド "g CTRL-G" を使うこと |g_CTRL-G|。 NOTE: このオプションは、オプション 'compatible' がオンのときはオフに なるので注意。 @@ -5942,10 +5942,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} {Vimが |+statusline| 機能付きでコンパイルされたときの み有効} - 値が空でないときは、オプション 'ruler' によって表示されるルーラの内容 - を指定する。 + 値が空でないときは、オプション 'ruler' によって表示されるルーラーの内 + 容を指定する。 このオプションの書式は 'statusline' のものと同様である。 - ルーラの幅は既定では17文字である。幅を15文字にするには、値の先頭に + ルーラーの幅は既定では17文字である。幅を15文字にするには、値の先頭に "%15(" を置き、末尾に "%)" を置くこと。例: > :set rulerformat=%15(%c%V\ %p%%%) < From b42bb0baa16dcb0a5596d202bca37e28a5c8098e Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Fri, 22 Jan 2016 22:49:17 +0900 Subject: [PATCH 738/783] =?UTF-8?q?user:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/autocmd.jax | 2 +- doc/options.jax | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/autocmd.jax b/doc/autocmd.jax index ade7dcd79..c3efec3b6 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -976,7 +976,7 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに のように展開される。 > /usr/root/main.py イベント FileReadCmd 等を使うときにはこれに注意すること。<amatch> の値が、ユー -ザの予期するものと違うかもしれない。 +ザーの予期するものと違うかもしれない。 パターンの中で環境変数を使うこともできる。 > diff --git a/doc/options.jax b/doc/options.jax index 7f804737b..1e4f8e4c4 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -2139,7 +2139,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる する ('readonly', 'fileformat', 'filetype' と 'syntax' 以外)。これは (ほとんど) Vi互換の設定である。 オプションの値は元のカレントバッファでの値になる。ユー - ザがオプションを変更し、その後で別のバッファに移ると、 + ザーがオプションを変更し、その後で別のバッファに移ると、 その値はコピーされる。事実上、バッファオプションを全て のバッファに対しグローバルにしている。 @@ -6353,7 +6353,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションの初期化は、ファイル ".vimrc" の読み込みと他の初期化の後 に行われる。これは 'shell' がその間に設定されていたときは、 'shellredir' を自動的に変更するためである。ただし 'shellredir' がユー - ザ自らによって設定されていたときは、自動設定は行われない。 + ザー自らによって設定されていたときは、自動設定は行われない。 将来はフィルタ処理にはパイプが使われるようになり、このオプションは時代 遅れになるだろう (少なくともUnixでは)。 安全上の理由から、このオプションをモードライン|modeline|やサンドボック From 5f70a1ab1cc500a929adaf8cce46ca9f6d24ea3f Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Sun, 24 Jan 2016 20:35:27 +0900 Subject: [PATCH 739/783] =?UTF-8?q?third-party:=20=E3=82=B5=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=83=91=E3=83=BC=E3=83=86=E3=82=A3=20#44=20#155?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/options.jax | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/options.jax b/doc/options.jax index 1e4f8e4c4..db7440808 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -6429,11 +6429,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる る。 値が '(' のときの動作に付いては 'shellxescape' も参照。 ほとんどのシステムでは初期設定は空になる。このオプションは Win32 版で - cmd.exe やサードパーティーのシェルを使う場合に便利である。cmd.exe は自 + cmd.exe やサードパーティ製のシェルを使う場合に便利である。cmd.exe は自 動的にコマンドの最初と最後のクォート文字を取り除く。MKS Korn Shell や - bash などのサードパーティー製のシェルを使う場合は設定値は "\"" とすべ - きである。ユーザーがこのオプションを設定する必要がないように、初期設定 - は 'shell' に適した値が設定される。|dos-shell| を参照。 + bash などのサードパーティ製のシェルを使う場合は設定値は "\"" とすべき + である。ユーザーがこのオプションを設定する必要がないように、初期設定は + 'shell' に適した値が設定される。|dos-shell| を参照。 安全上の理由から、このオプションをモードライン|modeline|やサンドボック ス|sandbox|の中で設定することはできない。 From 23052fdb4de9b87bbf112b28a135a89ed60c149e Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Sun, 24 Jan 2016 20:50:38 +0900 Subject: [PATCH 740/783] =?UTF-8?q?server:=20=E3=82=B5=E3=83=BC=E3=83=90?= =?UTF-8?q?=E3=83=BC=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vim_faq/vim_faq.jax | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 9390d6721..d130c0332 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -285,10 +285,10 @@ SECTION 17 - VIMINFO SECTION 18 - リモート編集 |faq-18.1| 既に起動しているgvimでファイルを開くには? Vim 5.xの OpenWithVim.exeとSendToVim.exeはどうなりました? -|faq-18.2| vimサーバに全てのバッファをディスクに保存するようなコマンドを送る - には? -|faq-18.3| Vimのリモートサーバ機能についてのドキュメントはどこで手に入ります - か? +|faq-18.2| vimサーバーに全てのバッファをディスクに保存するようなコマンドを送 + るには? +|faq-18.3| Vimのリモートサーバー機能についてのドキュメントはどこで手に入りま + すか? *faq-options* SECTION 19 - オプション |faq-19.1| Vimを設定する簡単な方法は? @@ -3753,23 +3753,23 @@ SECTION 18 - リモート編集 SendToVim.exeはどうなりました? Vim6からOpenWithVim.exeとSendToVim.exeユーティリティのOLE版はクライアント-サー -バ機能によってとって替わられました。ファイルj.txtを既に起動しているgvim(MyVim) -で開くにはこのようにします: > +バー機能によってとって替わられました。ファイルj.txtを既に起動している +gvim(MyVim) で開くにはこのようにします: > $ gvim --servername MyVim --remote-silent j.txt < -現在起動しているVim全てのサーバ名をリストするにはこうします: > +現在起動しているVim全てのサーバー名をリストするにはこうします: > $ vim --serverlist < -クライアント-サーバ機能についてのさらなる情報は以下を参照してください。 > +クライアント-サーバー機能についてのさらなる情報は以下を参照してください。 > :help client-server < *faq-18.2* -18.2. vimサーバに全てのバッファをディスクに保存するようなコマンドを送るには? +18.2. vimサーバーに全てのバッファをディスクに保存するようなコマンドを送るには? -それにはVimのリモートサーバ機能を使うことができます: > +それにはVimのリモートサーバー機能を使うことができます: > $ gvim --servername myVIM --remote-send "<C-\><C-N>:wall<CR>" < @@ -3780,9 +3780,9 @@ Vim6からOpenWithVim.exeとSendToVim.exeユーティリティのOLE版はクラ :help :wall < *faq-18.3* -18.3. Vimのリモートサーバ機能についてのドキュメントはどこで手に入りますか? +18.3. Vimのリモートサーバー機能についてのドキュメントはどこで手に入りますか? -Vimのリモートサーバ機能についての情報はこれを読めば得られます > +Vimのリモートサーバー機能についての情報はこれを読めば得られます > :help client-server < From f1554fe6ef4f5cdc5b62c3d5a8453a97281b0847 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Tue, 26 Jan 2016 21:12:25 +0900 Subject: [PATCH 741/783] =?UTF-8?q?user:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vim_faq/vim_faq.jax | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index d130c0332..22ee69d91 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -30,7 +30,7 @@ SECTION 2 - 情報源 |faq-2.1| どこに行けば Vim についてもっと学べるでしょうか? |faq-2.2| メーリングリストはありますか? |faq-2.3| メーリングリストのアーカイブはありますか? -|faq-2.4| HTML/PDF/PS形式のVimユーザマニュアルはどこで手に入りますか? +|faq-2.4| HTML/PDF/PS形式のVimユーザーマニュアルはどこで手に入りますか? |faq-2.5| ある問題が発生しました。それが私の設定によるものか、Vimそのものの 問題かはどうすればわかりますか? |faq-2.6| どこでバグ報告をすればいいですか? @@ -314,7 +314,7 @@ SECTION 19 - オプション *faq-mapping-keys* SECTION 20 - キーマップ |faq-20.1| キーがどうマップされているかを知るには? -|faq-20.2| ユーザ定義のキーマッピングをリストするには? +|faq-20.2| ユーザー定義のキーマッピングをリストするには? |faq-20.3| キーマップを解除するには? |faq-20.4| キー<xxx>へマッピングができません。なにがまずいのですか? |faq-20.5| テンキーにマップするには? @@ -398,8 +398,8 @@ SECTION 25 - VIMスクリプトを書く |faq-25.9| 環境変数が定義されているかどうかをチェックするには? |faq-25.10| Vimの組み込み関数を呼ぶには? |faq-25.11| Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対 - してユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマン - ドがVimの標準の機能を果たすようにするには? + してユーザー定義のマッピングが働くのを防ぎ、そのノーマルモードコマ + ンドがVimの標準の機能を果たすようにするには? |faq-25.12| ビジュアルモードで現在選択されているテキストを変数やレジスタに入れ るには? |faq-25.13| 変数'myvar'にテキストが入っています。この変数を":s"中で使って @@ -4085,9 +4085,9 @@ SECTION 20 - キーマップ :help map-overview < *faq-20.2* -20.2. ユーザ定義のキーマッピングをリストするには? +20.2. ユーザー定義のキーマッピングをリストするには? -ユーザ定義のキーマッピングをリストするにはこうします: > +ユーザー定義のキーマッピングをリストするにはこうします: > :map < @@ -5048,12 +5048,12 @@ exists()を使えば環境変数の存在をチェックすることができま < *faq-25.11* 25.11. Vimスクリプト中でノーマルコマンドを使っています。そのコマンドに対して - ユーザ定義のマッピングが働くのを防ぎ、そのノーマルモードコマンドがVim - の標準の機能を果たすようにするには? + ユーザー定義のマッピングが働くのを防ぎ、そのノーマルモードコマンドが + Vim の標準の機能を果たすようにするには? スクリプト中でノーマルモードコマンドを使うときは"normal!"を使えばよいでし -ょう。これはノーマルモードコマンドの標準の機能を使い、ユーザ定義マッピングは作 -用しません。 +ょう。これはノーマルモードコマンドの標準の機能を使い、ユーザー定義マッピングは +作用しません。 さらなる情報については以下を参照してください。 > @@ -5801,7 +5801,7 @@ SECTION 29 - 折り畳み *faq-29.1* 29.1. 折り畳みの機能を拡張するには? -'foldexpr'を使えばユーザ指定の関数を使って折り畳みを作ることができます。 +'foldexpr'を使えばユーザー指定の関数を使って折り畳みを作ることができます。 例えば、以下の形のサブルーチンを1行に折り畳むには: > sub foo { From 2b6a9cf002b12344f6e37b1ba3e0ceff2acf372f Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Tue, 26 Jan 2016 21:14:58 +0900 Subject: [PATCH 742/783] =?UTF-8?q?comma:=20=E3=82=B3=E3=83=B3=E3=83=9E=20?= =?UTF-8?q?#44=20#138?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/options.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/options.jax b/doc/options.jax index db7440808..31a7a95d7 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -7040,7 +7040,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる |hl-User1..9| を参照。 フラグを表示するとき、そのフラグがプレーンテキストの直後にあるな - ら、その先頭にカンマがある場合は削除される。そうすることによって以下の + ら、その先頭にコンマがある場合は削除される。そうすることによって以下の 例のようなフラグの使い方をしたとき、きれいに表示されるようになっている。 あるグループ内の全ての項目が空文字列 (つまり設定されていないフラグ) に From c6c4ca9563725bc256e1d591a64fe35dc93ab711 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Fri, 29 Jan 2016 22:03:27 +0900 Subject: [PATCH 743/783] =?UTF-8?q?reader:=20=E3=83=AA=E3=83=BC=E3=83=80?= =?UTF-8?q?=E3=83=BC=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/filetype.jax | 4 ++-- doc/syntax.jax | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/filetype.jax b/doc/filetype.jax index 0889ba2b3..d23e24fe6 100644 --- a/doc/filetype.jax +++ b/doc/filetype.jax @@ -534,8 +534,8 @@ GIT COMMIT *ft-gitcommit-plugin* ラーメッセージの原因となる可能性を排除するために、モード行はオ フになる。 'textwidth' 72に設定する。e-mailでは良く推奨される値。 -'formatoptions' テキストを折返し、新しい行ではコメントリーダを繰り返すように設 - 定。引用記号の ">" が繰り返される。 +'formatoptions' テキストを折返し、新しい行ではコメントリーダーを繰り返すように + 設定。引用記号の ">" が繰り返される。 これにより|gq|で引用文を整形できる。 ローカルキーマップ: diff --git a/doc/syntax.jax b/doc/syntax.jax index 8c063844f..845f4facb 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -741,7 +741,7 @@ ABELのハイライトにはユーザーが定義できるオプションが幾 変数 ハイライト ~ abel_obsolete_ok 古いキーワードをエラーでなく命令文として扱う -abel_cpp_comments_illegal '//' をインラインコメントリーダとして扱わない +abel_cpp_comments_illegal '//' をインラインコメントリーダーとして扱わない ADA From fd5be655abaa804918b1f3502e537e762153a571 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Fri, 29 Jan 2016 22:07:32 +0900 Subject: [PATCH 744/783] =?UTF-8?q?query:=20=E3=82=AF=E3=82=A8=E3=83=AA=20?= =?UTF-8?q?#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/if_sniff.jax | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/if_sniff.jax b/doc/if_sniff.jax index b212588e7..e8b808999 100644 --- a/doc/if_sniff.jax +++ b/doc/if_sniff.jax @@ -34,8 +34,8 @@ Vim で SNiFF+ を使うには 5. SNiFF+ に接続します。(:sniff 接続) いったん接続が確立されると、SNiFF+ は、ソースコードを表示したり、編集したりす -る全てのリクエストで Vim を使います。一方、:sniff コマンドで SNiFF+ にクエリー -を送ることができます。 +る全てのリクエストで Vim を使います。一方、:sniff コマンドで SNiFF+ にクエリを +送ることができます。 ============================================================================== 2. コマンド *sniff-commands* @@ -70,13 +70,13 @@ goto-symbol sg symbol の定義もしくは実装に飛びます。 hierarchy sh 階層ブラウザーに symbol を読み込みます。 restr-hier sH 上と同じですが、関連する class のみを表示しま す。 -xref-to sxt symbol に関する refers-to クエリーを開始し、結 - 果をクロス・リファレンサーに読み込む。 -xref-by sxb symbol に関する referred-by クエリーを開始する。 +xref-to sxt symbol に関する refers-to クエリを開始し、結果 + をクロス・リファレンサーに読み込む。 +xref-by sxb symbol に関する referred-by クエリを開始する。 xref-has sxh symbol に関する refers-to コンポーネント・クエ - リーを開始する。 + リを開始する。 xref-used-by sxu symbol に関して、コンポーネントとして - referred-by クエリーを開始する。 + referred-by クエリを開始する。 show-docu sd symbol のドキュメントを表示する。 gen-docu sD symbol のドキュメントを生成する。 From eee240684ebf8632e243457206df68dd8720cf08 Mon Sep 17 00:00:00 2001 From: nakinor <nakinor@gmail.com> Date: Fri, 29 Jan 2016 22:09:43 +0900 Subject: [PATCH 745/783] =?UTF-8?q?property:=20=E3=83=97=E3=83=AD=E3=83=91?= =?UTF-8?q?=E3=83=86=E3=82=A3=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/if_pyth.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/if_pyth.jax b/doc/if_pyth.jax index 5c8e1e388..c5c6b25eb 100644 --- a/doc/if_pyth.jax +++ b/doc/if_pyth.jax @@ -224,7 +224,7 @@ vim.windows *python-windows* オブジェクトに結びつけられて、常にそのタブページのウィンドウを参照しま す (タブページが削除されていたときは vim.error 例外が発生します)。vim モジュールや |python-tabpage| オブジェクトへの参照を維持しなくても、参 - 照は保持されます。プロパティーも失われません。 + 照は保持されます。プロパティも失われません。 vim.tabpages *python-tabpages* Vim のタブページの一覧へのアクセスを提供するシーケンスオブジェクト。 From e2ad64a61868c81387035d93b4a530213f50ee4c Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Fri, 29 Jan 2016 23:51:45 +0900 Subject: [PATCH 746/783] channel roughly translated --- doc/channel.jax | 223 ++++++++++++++++++++++++++++++++++++++++++++++++ en/channel.txt | 218 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 441 insertions(+) create mode 100644 doc/channel.jax create mode 100644 en/channel.txt diff --git a/doc/channel.jax b/doc/channel.jax new file mode 100644 index 000000000..af8b92bb7 --- /dev/null +++ b/doc/channel.jax @@ -0,0 +1,223 @@ +*channel.txt* For Vim バージョン 7.4. Last change: 2016 Jan 28 + + + VIMリファレンスマニュアル by Bram Moolenaar + + + プロセス間通信 *channel* + +ドラフト ドラフト ドラフト ドラフト ドラフト ドラフト ドラフト + +Vimは別のプロセスと通信するのにチャンネルを用います。 +チャンネルはソケットを用います。 *socket-interface* + +現在のところVimは同時に10個までのチャンネルをサポートします。 +Netbeansインターフェースもチャンネルを使っています。 |netbeans| + +1. デモ |channel-demo| +2. チャンネルを開く |channel-open| +3. JSONチャンネルを使う |channel-use| +4. Vimコマンド |channel-commands| +5. rawチャンネルを使う |channel-use| +6. ジョブ制御 |job-control| + +{Vi does not have any of these features} +{only available when compiled with the |+channel| feature} + +============================================================================== +1. デモ *channel-demo* + +デモにはPythonが必要です。でもプログラムは次の場所にあります。 +$VIMRUNTIME/tools/demoserver.py +それをあるターミナルで実行しましょう。そのターミナルをT1と呼びます。 + +次に別のターミナルでVimを実行します。そして以下のコマンドででもサーバーに接続 +します: > + let handle = connect('localhost:8765', 'json') + +T1の中に次のようなに表示されます: + === socket opened === ~ + +ついにサーバーにメッセージを送信できます: > + echo sendexpr(handle, 'hello!') + +このメッセージはT1で受信され、Vimには応答が送り返されます。 +T1ではVimが送った生のメッセージを確認できます: + [1,"hello!"] ~ +そしてレスポンスはこうなります: + [1,"got it"] ~ +この数値はメッセージを送るたびに増加していきます。 + +サーバーはVimにコマンドを送信できます。T1に於いて、次のように正確に(引用符を含 +めて文字通りに)タイプしてください: > + ま だ 実 装 さ れ て い ま せ ん + ["ex","echo 'hi there'"] +するとそのメッセージがVimに表示されます。 + +非同期通信を取り扱うためにはコールバック(以下ハンドラー)が必要です: > + func MyHandler(handle, msg) + echo "from the handler: " . a:msg + endfunc + call sendexpr(handle, 'hello!', "MyHandler") + +sendを呼ぶたびに毎回コールバックを指定する代わりに、チャンネルを開く際に指定す +ることもできます: > + call disconnect(handle) + let handle = connect('localhost:8765', 'json', "MyHandler") + call sendexpr(handle, 'hello!', 0) + +============================================================================== +2. チャンネルを開く *channel-open* + +チャンネルを開くには次のようにします: > + let handle = connect({address}, {mode}, {callback}) + +{address} は "ホスト名:ポート番号" の形式です。 例:"localhost:8765" + +{mode} でモード(通信フォーマット)を指定します: *channel-mode* + "json" - JSONを使う(詳しくは下記を参照。もっとも使いやすい方法) + "raw" - rawメッセージを使う + + *channel-callback* +{callback} はメッセージ受信時に他のハンドラーで扱われない時に呼ばれます。 +これはチャンネルのハンドルと、受信したメッセージの2つの引数を取ります。例: > + func Handle(handle, msg) + echo '受信した: ' . a:msg + endfunc + let handle = connect("localhost:8765", 'json', "Handle") + + +{mode} が "json" の時には、"msg" 引数は受信たメッセージの本文で、Vimの型に変換 +されています。 +一方 {mode} が "raw" の時には、 "msg" 引数はメッセージ全体を格納した文字列で +す。 + +{mode} が "json" の時には {callback} はオプションです。これを省略した場合、 +メッセージを1つ受信するにはメッセージを1つ送信する必要があります。 + +ハンドラーは後から追加したり、変更したりできます: > + call sethandler(handle, {callback}) +{callback} が空の場合 (一度も指定しないか、空文字列を指定した場合) ハンドラー +は削除されます。 + +チャンネルを使い終わったら、以下のように切断してください: > + call disconnect(handle) + +============================================================================== +3. JSONチャンネルを使う *channel-use* + +{mode} が "json" 場合は、以下のようにメッセージを同期的に送信できます: > + let response = sendexpr(handle, {expr}) +これは通信相手から応答があるまで待ち合わせます。 + +応答を処理する必要が無いのであれば、以下のように送れます: > + call sendexpr(handle, {expr}, 0) + +メッセージを送信し、応答を特別な関数で非同期的に処理する場合には、このようにし +ます: > + call sendexpr(handle, {expr}, {callback}) + +{expr} は JSON に変換され、配列で包まれます。{expr} として文字列 "hello" を送 +信した場合に、通信相手が受け取るメッセージの例は次のようになります: + [12,"hello"] ~ + +送信されるJSONのフォーマットはこのようになっています: + [{number},{expr}] + +{number} には毎回異なる値が入ります。これは応答(があるならば)、必ず使われま +す: + + [{number},{response}] + +このようにして、受信したメッセージがどの送信メッセージに対応するかを知ることが +でき、正しいハンドラーを呼び出すことができます。これによって応答メッセージの到 +着順序を気にしなくても良くなります。 + +送信側はかならず有効なJSONをVimへ送らなければなりません。VimはJSONとして解釈す +ることで、受信メッセージの終端をチェックします。終端を受信することが、 +メッセージを受理する唯一の方法です。 + +サーバープロセスがVimからのメッセージを受信すること無く、メッセージを送信する +には、数値に 0 を使う必要があります。 + [0,{response}] + +するとチャンネルのハンドラーが {response} をVimの方に変換したものを受け取るで +しょう。チャンネルにハンドラーが関連付けられていない場合には、メッセージは破棄 +されます。 + +読み込みエラーが発生した場合や |disconnect()| した場合には、可能であるなら文字 +列 "DETACH" が送られます。チャンネルはそれから非アクティブになります。 + +============================================================================== +4. Vimコマンド *channel-commands* + +ま だ 実 装 さ れ て い ま せ ん + +"json" チャンネルを使用すると、サーバープロセス側はVimへコマンドを送信できま +す。そのコマンドはチャンネルのハンドラーを介さずに、Vimの内部で実行されます。 + +実行可能なコマンドは以下のとおりです: > + ["ex", {Ex コマンド}] + ["normal", {ノーマルモードコマンド}] + ["eval", {数値}, {式}] + ["expr", {式}] + +これらを使うときは、これらのコマンドが何をするかに十分気をつけてください! +ユーザーが何をしているかによっては容易に干渉してしまいます。トラブルを避けるに +は |mode()| を使い、エディタが期待した状態にあるかチェックしてください。例え +ば、コマンド実行ではなくテキストとして入力させたい文字列を送るには、以下のよう +にします: > + ["ex","if mode() == 'i' | call feedkeys('ClassName') | endif"] + +"ex" コマンドは Ex コマンドを実行します。完了やエラーの応答はありませ +ん。|autoload| スクリプトの中の関数を使えます。何かを入力するのに |feedkeys()| +を実行することもできます。 + +"normal" コマンドは |:normal| のように実行されます。 + +"eval" コマンドは式の評価結果を以下の様に返信します: > + [{数値}, {result}] +{数値} は、リクエストに指定したのと同じものです。 + +"expr" コマンドはそれに近いのですが、応答を返信しません。例: > + ["expr","setline('$', ['one', 'two', 'three'])"] + +============================================================================== +5. rawチャンネルを使う *channel-raw* + +{mode} が "raw" の場合には、以下のようにしてメッセージを送信します: + let response = sendraw(handle, {string}) +{string} はそのまま送信されます。受信した応答メッセージは直ちにチャンネルから +読み込み可能になります。この時、Vimにはメッセージの終了をどう判断するかがわか +りませんから、あなた自身が面倒を見る必要があります。 + +応答を必要としないメッセージを送信するには以下のようにします: > + call sendraw(handle, {string}, 0) +プロセス(訳注:サーバーのこと)はレスポンスを返し、チャンネルのハンドラーに渡さ +れます。 + +メッセージを送信し、レスポンスを特定の関数で非同期的に取り扱うには以下のように +します: > + call sendraw(handle, {string}, {callback}) + +この {string} はJSONにもできます。その場合 |jsonencode()| それを作成し +|jsondecode()| で受信したJSONメッセージを取り扱います。 + +============================================================================== +6. ジョブ制御 *job-control* + +ま だ 実 装 さ れ て い ま せ ん + +別のプロセスを開始するには: > + call startjob({command}) + +これは {command} の終了を待ちません。 + +TODO: + + let handle = startjob({command}, 's') # 標準入出力を使う + let handle = startjob({command}, '', {address}) # ソケットを使う + let handle = startjob({command}, 'd', {address}) # 接続に失敗したら開始 + + + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/channel.txt b/en/channel.txt new file mode 100644 index 000000000..21ce4ebda --- /dev/null +++ b/en/channel.txt @@ -0,0 +1,218 @@ +*channel.txt* For Vim version 7.4. Last change: 2016 Jan 28 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + Inter-process communication *channel* + +DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT DRAFT + +Vim uses channels to communicate with other processes. +A channel uses a socket. *socket-interface* + +Vim current supports up to 10 simultanious channels. +The Netbeans interface also uses a channel. |netbeans| + +1. Demo |channel-demo| +2. Opening a channel |channel-open| +3. Using a JSON channel |channel-use| +4. Vim commands |channel-commands| +5. Using a raw channel |channel-use| +6. Job control |job-control| + +{Vi does not have any of these features} +{only available when compiled with the |+channel| feature} + +============================================================================== +1. Demo *channel-demo* + +This requires Python. The demo program can be found in +$VIMRUNTIME/tools/demoserver.py +Run it in one terminal. We will call this T1. + +Run Vim in another terminal. Connect to the demo server with: > + let handle = connect('localhost:8765', 'json') + +In T1 you should see: + === socket opened === ~ + +You can now send a message to the server: > + echo sendexpr(handle, 'hello!') + +The message is received in T1 and a response is sent back to Vim. +You can see the raw messages in T1. What Vim sends is: + [1,"hello!"] ~ +And the response is: + [1,"got it"] ~ +The number will increase every time you send a message. + +The server can send a command to Vim. Type this on T1 (literally, including +the quotes): > + NOT IMPLEMENTED YET + ["ex","echo 'hi there'"] +And you should see the message in Vim. + +To handle asynchronous communication a callback needs to be used: > + func MyHandler(handle, msg) + echo "from the handler: " . a:msg + endfunc + call sendexpr(handle, 'hello!', "MyHandler") + +Instead of giving a callback with every send call, it can also be specified +when opening the channel: > + call disconnect(handle) + let handle = connect('localhost:8765', 'json', "MyHandler") + call sendexpr(handle, 'hello!', 0) + +============================================================================== +2. Opening a channel *channel-open* + +To open a channel: + let handle = connect({address}, {mode}, {callback}) + +{address} has the form "hostname:port". E.g., "localhost:8765". + +{mode} can be: *channel-mode* + "json" - Use JSON, see below; most convenient way + "raw" - Use raw messages + + *channel-callback* +{callback} is a function that is called when a message is received that is not +handled otherwise. It gets two arguments: the channel handle and the received +message. Example: > + func Handle(handle, msg) + echo 'Received: ' . a:msg + endfunc + let handle = connect("localhost:8765", 'json', "Handle") + +When {mode} is "json" the "msg" argument is the body of the received message, +converted to Vim types. +When {mode} is "raw" the "msg" argument is the whole message as a string. + +When {mode} is "json" the {callback} is optional. When omitted it is only +possible to receive a message after sending one. + +The handler can be added or changed later: > + call sethandler(handle, {callback}) +When {callback} is empty (zero or an empty string) the handler is removed. + +Once done with the channel, disconnect it like this: > + call disconnect(handle) + +============================================================================== +3. Using a JSON channel *channel-use* + +If {mode} is "json" then a message can be sent synchronously like this: > + let response = sendexpr(handle, {expr}) +This awaits a response from the other side. + +To send a message, without handling a response: > + call sendexpr(handle, {expr}, 0) + +To send a message and letting the response handled by a specific function, +asynchronously: > + call sendexpr(handle, {expr}, {callback}) + +The {expr} is converted to JSON and wrapped in an array. An example of the +message that the receiver will get when {expr} is the string "hello": + [12,"hello"] ~ + +The format of the JSON sent is: + [{number},{expr}] + +In which {number} is different every time. It must be used in the response +(if any): + + [{number},{response}] + +This way Vim knows which sent message matches with which received message and +can call the right handler. Also when the messages arrive out of order. + +The sender must always send valid JSON to Vim. Vim can check for the end of +the message by parsing the JSON. It will only accept the message if the end +was received. + +When the process wants to send a message to Vim without first receiving a +message, it must use the number zero: + [0,{response}] + +Then channel handler will then get {response} converted to Vim types. If the +channel does not have a handler the message is dropped. + +On read error or disconnect() the string "DETACH" is sent, if still possible. +The channel will then be inactive. + +============================================================================== +4. Vim commands *channel-commands* + +NOT IMPLEMENTED YET + +With a "json" channel the process can send commands to Vim that will be +handled by Vim internally, it does not require a handler for the channel. + +Possible commands are: + ["ex", {Ex command}] + ["normal", {Normal mode command}] + ["eval", {number}, {expression}] + ["expr", {expression}] + +With all of these: Be careful what these commands do! You can easily +interfere with what the user is doing. To avoid trouble use |mode()| to check +that the editor is in the expected state. E.g., to send keys that must be +inserted as text, not executed as a command: > + ["ex","if mode() == 'i' | call feedkeys('ClassName') | endif"] + +The "ex" command is executed as any Ex command. There is no response for +completion or error. You could use functions in an |autoload| script. +You can also invoke |feedkeys()| to insert anything. + +The "normal" command is executed like with |:normal|. + +The "eval" command will result in sending back the result of the expression: + [{number}, {result}] +Here {number} is the same as what was in the request. + +The "expr" command is similar, but does not send back any response. +Example: + ["expr","setline('$', ['one', 'two', 'three'])"] + +============================================================================== +5. Using a raw channel *channel-raw* + +If {mode} is "raw" then a message can be send like this: > + let response = sendraw(handle, {string}) +The {string} is sent as-is. The response will be what can be read from the +channel right away. Since Vim doesn't know how to recognize the end of the +message you need to take care of it yourself. + +To send a message, without expecting a response: > + call sendraw(handle, {string}, 0) +The process can send back a response, the channel handler will be called with +it. + +To send a message and letting the response handled by a specific function, +asynchronously: > + call sendraw(handle, {string}, {callback}) + +This {string} can also be JSON, use |jsonencode()| to create it and +|jsondecode()| to handle a received JSON message. + +============================================================================== +6. Job control *job-control* + +NOT IMPLEMENTED YET + +To start another process: > + call startjob({command}) + +This does not wait for {command} to exit. + +TODO: + + let handle = startjob({command}, 's') # uses stdin/stdout + let handle = startjob({command}, '', {address}) # uses socket + let handle = startjob({command}, 'd', {address}) # start if connect fails + + + vim:tw=78:ts=8:ft=help:norl: From a59145604ec5dc97ae6e8c131a2f05da4d8ef1a5 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Fri, 29 Jan 2016 22:29:29 +0900 Subject: [PATCH 747/783] remove transposed files man files had been moved to vim-jp/lang-ja --- doc/evim-ja.UTF-8.1 | 51 ---- doc/vim-ja.UTF-8.1 | 501 ------------------------------------ doc/vimdiff-ja.UTF-8.1 | 44 ---- doc/vimtutor-ja.UTF-8.1 | 45 ---- doc/xxd-ja.UTF-8.1 | 366 -------------------------- en/evim.1 | 49 ---- en/vim.1 | 553 ---------------------------------------- en/vimdiff.1 | 46 ---- en/vimtutor.1 | 57 ----- en/xxd.1 | 370 --------------------------- 10 files changed, 2082 deletions(-) delete mode 100644 doc/evim-ja.UTF-8.1 delete mode 100644 doc/vim-ja.UTF-8.1 delete mode 100644 doc/vimdiff-ja.UTF-8.1 delete mode 100644 doc/vimtutor-ja.UTF-8.1 delete mode 100644 doc/xxd-ja.UTF-8.1 delete mode 100644 en/evim.1 delete mode 100644 en/vim.1 delete mode 100644 en/vimdiff.1 delete mode 100644 en/vimtutor.1 delete mode 100644 en/xxd.1 diff --git a/doc/evim-ja.UTF-8.1 b/doc/evim-ja.UTF-8.1 deleted file mode 100644 index 1b7a657eb..000000000 --- a/doc/evim-ja.UTF-8.1 +++ /dev/null @@ -1,51 +0,0 @@ -.TH EVIM 1 "2002 February 16" -.SH 名前 -evim \- easy Vim, モードレスエディタ Vim -.SH 書式 -.br -.B evim -[options] [file ..] -.br -.B eview -.SH 説明 -.B eVim -は -.B Vim -を起動して、モードレスエディタとして動作するためのオプションを設定します。 -Vim の動作が point-and-click エディタのような動作になります。 -MS-Windows のメモ帳のような動作です。 -.B eVim -は常に GUI で起動し、メニューとツールバーを表示します。 -.PP -どうしても Vim の操作に馴染めない場合に使ってください。 -編集効率は下がります。 -.PP -.B eview -は同様に、読み込み専用モードで起動します。evim \-R と同じです。 -.PP -引数や Vim についての詳細は vim(1) を参照してください。 -.PP -オプション 'insertmode' が設定され、テキストを直接、入力できるようになりま -す。 -.br -コピーとペーストのキー操作が MS-Windows と同じになるように、マップが設定され -ます。 -CTRL-X が切り取り、CTRL-C がコピー、CTRL-V がペーストです。 -標準の CTRL-V の操作は CTRL-Q に割り当てられます。 -.SH オプション -vim(1) を参照してください。 -.SH ファイル -.TP 15 -/usr/local/lib/vim/evim.vim -eVim の初期化スクリプト。 -.SH 別名 -evim は "gumbies のための Vim" とも呼ばれています。 -evim を使っているあなたはきっと、頭にハンカチをかぶっているのです。 -(訳注: gumbies は Monty Python に登場するおもしろ集団。ハンカチをかぶっ -ている。) -.SH 関連項目 -vim(1) -.SH 著者 -.B Vim -のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 -メニューの Help/Credits を参照してください。 diff --git a/doc/vim-ja.UTF-8.1 b/doc/vim-ja.UTF-8.1 deleted file mode 100644 index a4788b3c4..000000000 --- a/doc/vim-ja.UTF-8.1 +++ /dev/null @@ -1,501 +0,0 @@ -.TH VIM 1 "2006 Apr 11" -.SH 名前 -vim \- Vi IMproved, プログラマのテキストエディタ -.SH 書式 -.br -.B vim -[options] [file ..] -.br -.B vim -[options] \- -.br -.B vim -[options] \-t tag -.br -.B vim -[options] \-q [errorfile] -.PP -.br -.B ex -.br -.B view -.br -.B gvim -.B gview -.B evim -.B eview -.br -.B rvim -.B rview -.B rgvim -.B rgview -.SH 説明 -.B Vim -は Vi 互換のテキストエディタです。 -どのような種類のプレインテキストでも編集できます。 -特に、プログラムの編集に力を発揮します。 -.PP -Vi に多くの改良が加えられています: -多段アンドゥ、マルチウィンドウ、マルチバッファ、構文強調表示、 -コマンドライン編集、ファイル名補完、ヘルプ、ビジュアル選択、などなど。 -.B Vim -と Vi の違いについての要約は ":help vi_diff.txt" を参照してください。 -.PP -.B Vim -の実行中は ":help" コマンドでヘルプを引くことができます。 -下記、オンラインヘルプの項を参照してください。 -.PP -.B Vim -は次のようなコマンドで起動できます。 -.PP - vim file -.PP -正確な書式は次の通りです: -.PP - vim [options] [filelist] -.PP -filelist を省略した場合は、空のバッファが開かれます。 -指定した場合は、以下の四つのうちどれか一つの方法でファイルが開かれます。 -.TP 12 -file .. -ファイルのリスト。 -一番目のファイルがカレントファイルになり、バッファに読み込まれます。 -カーソルは、バッファの一行目に置かれます。 -他のファイルを表示するには ":next" コマンドを使ってください。 -ファイル名がダッシュで始まるファイルを開く場合は、 -filelist の前に "\-\-" を指定してください。 -.TP -\- -ファイルは標準入力から読み込まれます。コマンドは標準エラー (ttyからの入 -力になっているはず) から読み込まれます。 -.TP -\-t {tag} -開くファイルとカーソルの初期位置は "tag" に依存します。goto label の一種です。 -tags ファイルから {tag} が検索され、関連したファイルがカレントファイルになり -ます。そして、関連したコマンドが実行されます。 -これは主に C 言語のファイルを開くときに使われます。その場合 {tag} に関数など -を指定して使います。 -関数を含んでいるファイルが開かれ、その関数の先頭にカーソルが移動する、 -という動作になります。 -詳しくは ":help tag\-commands" を参照してください。 -.TP -\-q [errorfile] -クイックフィックスモードで起動します。 -[errorfile] に指定したファイルが読み込まれ、最初のエラーが表示されます。 -[errorfile] を省略した場合は、オプション 'errorfile' が使われます (初期設定 -は、Amiga では "AztecC.Err"、その他のシステムでは "errors.err" です)。 -":cn" コマンドで次のエラーにジャンプできます。 -詳しくは ":help quickfix" を参照してください。 -.PP -.B Vim -は、起動されたときの実行ファイルの名前によって動作を変えます -(実行ファイルの実体が同じであっても)。 -.TP 10 -vim -"普通" に起動します。標準の状態です。 -.TP -ex -Ex モードで起動します。 -ノーマルモードに切り替えるには ":vi" コマンドを使ってください。 -引数に "\-e" を指定した場合と同じです。 -.TP -view -読み込み専用モードで起動します。ファイルの保存が制限されます。 -引数に "\-R" を指定した場合と同じです。 -.TP -gvim gview -GUI バージョン。 -新しいウィンドウを開いて起動します。 -引数に "\-g" を指定した場合と同じです。 -.TP -evim eview -簡易モードの GUI バージョン。 -新しいウィンドウを開いて起動します。 -引数に "\-y" を指定した場合と同じです。 -.TP -rvim rview rgvim rgview -上記と同じですが、制限モードで起動します。シェルコマンドを実行したり、 -.B Vim -をサスペンドしたりできなくなります。 -引数に "\-Z" を指定した場合と同じです。 -.SH オプション -ファイル名の前でも後ろでも、好きな順番でオプションを指定できます。 -パラメータを必要としない引数は、一つのダッシュにまとめて指定できます。 -.TP 12 -+[num] -一番目のファイルの "num" 行目にカーソルを移動します。 -"num" を省略した場合は、一行目にカーソルが移動します。 -.TP -+/{pat} -一番目のファイルの、最初に {pat} が見つかった行にカーソルが移動します。 -検索パターンについては ":help search\-pattern" を参照してください。 -.TP -+{command} -.TP -\-c {command} -一番目のファイルが読み込まれた後に {command} が実行されます。 -{command} は Ex コマンドとして解釈されます。 -{command} に空白を含める場合は、ダブルクォートで囲んでください (シェルに依存)。 -例: vim "+set si" main.c -.br -Note: "+" と "\-c" は合わせて 10 個まで指定できます。 -.TP -\-S {file} -一番目のファイルが読み込まれた後に {file} が実行されます。 -これは \-c "source {file}" と同じ動作です。 -{file} の先頭が '\-' の場合は使えません。 -{file} が省略された場合は、"Session.vim" が使われます (ただし \-S が最後の引 -数だった場合のみ)。 -.TP -\-\-cmd {command} -"\-c" と同じですが、vimrc を処理する前にコマンドが実行されます。 -これらのコマンドは "\-c" コマンドとは別に、10 個まで指定できます。 -.TP -\-A -アラビア語がサポートされていて、アラビア語キーマップがある場合は、 -アラビア語モードで起動します ('arabic' がオンになります)。 -右横書きのファイルを編集できます。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-b -バイナリモード。 -バイナリファイルを編集ためのオプションがいくつか設定されます。 -.TP -\-C -互換モード。'compatible' オプションがオンになります。 - .vimrc ファイルの有無に関わらず、 -.B Vim -の動作が Vi 互換になります。 -.TP -\-d -差分モードで起動します。 -二つか三つの四つのファイルを引数に指定してください。 -指定されたファイルが開かれ、それらのファイルの差分が表示されます。 -vimdiff(1) と同様の動作です。 -.TP -\-d {device} -{device} を端末として開きます。 -Amiga でのみ使います。 -例: -"\-d con:20/30/600/150". -.TP -\-D -デバッグ。スクリプトの最初のコマンドが実行されるところからデバッグモードを開 -始します。 -.TP -\-e -Ex モードで起動します。 -実行ファイルの名前が "ex" の場合と同じです。 -.TP -\-E -改良版 Ex モードで起動します。 -実行ファイルの名前が "exim" の場合と同じです。 -.TP -\-f -フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 -Amiga の場合は、新しいウィンドウで再起動しなくなります。 -メールソフトなどから -.B Vim -を起動して、編集が終わるまで待機したいような場合に使ってください。 -Amiga では、":sh" と "!" コマンドは機能しなくなります。 -.TP -\-\-nofork -フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 -.TP -\-F -ペルシア語がサポートされていて、ペルシア語キーマップがある場合は、 -ペルシア語モードで起動します ('fkmap' と 'rightleft' がオンになります)。 -右横書きのファイルを編集できます。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-g -GUI がサポートされている場合は、GUI で起動します。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-h -コマンドライン引数やオプションのヘルプを表示して終了します。 -.TP -\-H -ヘブライ語がサポートされていて、ヘブライ語キーマップがある場合は、 -ヘブライ語モードで起動します ('hkmap' と 'rightleft' がオンになります)。 -右横書きのファイルを編集できます。 -サポートされていない場合はエラーメッセージを表示して終了します。 -.TP -\-i {viminfo} -viminfo ファイルを使う設定になっている場合は、初期設定の "~/.viminfo" の代わ -りに、指定されたファイルを設定します。 -"NONE" を指定すると、.viminfo ファイルを使わないように設定できます。 -.TP -\-L -\-r と同じです。 -.TP -\-l -lisp モード。 -オプションの 'lisp' と 'showmatch' がオンになります。 -.TP -\-m -ファイルの変更を不可能にします。 -オプション 'write' がオフになります。 -バッファを変更することはできますが、ファイルを保存することはできません。 -.TP -\-M -変更を不可能にします。オプションの 'modifiable' と 'write' がオフになり、 -ファイルの変更と保存ができなくなります。 -Note: それらのオプションを設定すれば変更できるようになります。 -.TP -\-N -非互換モード。'compatible' オプションがオフになります。 - .vimrc ファイルの有無に関わらず、 -.B Vim -の改良された機能が有効になります。Vi との互換性が少し失われます。 -.TP -\-n -スワップファイルを使用しません。 -クラッシュしてもリカバリできなくなります。 -フロッピーディスクのような非常に低速なメディアのファイルを読み書きするときに -便利です。 -":set uc=0" と設定しても同じです。 -戻すには ":set uc=200" と設定してください。 -.TP -\-nb -NetBeans と接続し、エディタサーバーになります。 -詳しくはヘルプを参照してください。 -.TP -\-o[N] -N 個のウィンドウを水平分割で開きます。 -N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 -.TP -\-O[N] -N 個のウィンドウを垂直分割で開きます。 -N を省略した場合は、引数のファイルを個別のウィンドウで開きます。 -.TP -\-p[N] -N 個のタブページを開きます。 -N を省略した場合は、引数のファイルを個別のタブページで開きます。 -.TP -\-R -読み込み専用モード。 -オプション 'readonly' がオンになります。 -バッファを変更することはできますが、間違ってファイルを上書きしてしまうのを防 -ぐことができます。 -ファイルを保存したい場合は、":w!" のように、Ex コマンドに感嘆符を付けてくだ -さい。 -\-R オプションは \-n オプションの効果も含んでいます (下記参照)。 -オプション 'readonly' は ":set noro" でオフにできます。 -詳しくは ":help 'readonly'" を参照してください。 -.TP -\-r -スワップファイルの一覧を表示します。リカバリに関する情報も表示されます。 -.TP -\-r {file} -リカバリモード。 -スワップファイルを使って、クラッシュした編集セッションを復活させます。 -スワップファイルは、ファイル名に ".swp" を加えた名前のファイルです。 -詳しくは ":help recovery" を参照してください。 -.TP -\-s -サイレントモード。"ex" という名前で起動するか、"\-e" オプションの後で -"\-s" オプションが指定された場合のみ。 -.TP -\-s {scriptin} -{scriptin} をスクリプトファイルとして読み込まれます。 -ファイル中の文字列は、手で入力したときと同じように処理されます。 -これは ":source! {scriptin}" と同じ動作です。 -エディタが終了する前にファイルの終わりまで読み込んだ場合、 -それ以降はキーボードから入力を読み込みます。 -.TP -\-T {terminal} -端末の名前を指定します。 -端末が自動的に認識されない場合に使ってください。 -Vim が組み込みでサポートしている名前か、 -termcap または terminfo ファイルで定義されている名前を指定してください。 -.TP -\-u {vimrc} -{vimrc} ファイルを使って初期化します。 -他の初期化処理はスキップされます。 -特殊なファイルを編集する場合などに使ってください。 -すべての初期化をスキップするには "NONE" を指定してください。 -詳しくは ":help initialization" を参照してください。 -.TP -\-U {gvimrc} -{gvimrc} ファイルを使って GUI を初期化します。 -他の GUI の初期化はスキップされます。 -すべての GUI の初期化をスキップするには "NONE" を指定してください。 -詳しくは ":help gui\-init" を参照してください。 -.TP -\-V[N] -冗長モード。スクリプトファイルを実行したり viminfo ファイルを読み書きするた -びにメッセージを表示します。N に指定した数値が 'verbose' に設定されます。 -省略した場合は 10 になります。 -.TP -\-v -Vi モードで起動します。 -実行ファイルの名前が "vi" の場合と同じです。 -実行ファイルの名前が "ex" の場合だけ効果があります。 -.TP -\-w {scriptout} -入力した文字を {scriptout} に記録します。 -"vim \-s" や "source!" で実行するためのスクリプトファイルを作成するのに便利 -です。 -{scriptout} ファイルがすでに存在した場合は追加保存されます。 -.TP -\-W {scriptout} -\-w と同じですが、ファイルがすでに存在した場合は上書きされます。 -.TP -\-x -ファイルを暗号化して書き込みます。暗号化キーの入力プロンプトが表示されます。 -.TP -\-X -X サーバーと通信しません。端末での起動時間を短くできます。 -しかし、ウィンドウタイトルの変更やクリップボードは使えなくなります。 -.TP -\-y -簡易モードで起動します。 -実行ファイルの名前が "evim" や "eview" の場合と同じです。 -.B Vim -の動作がモードレスエディタ (click-and-type editor) のようになります。 -.TP -\-Z -制限モード。 -実行ファイルの名前が "r" で始まっている場合と同じです。 -.TP -\-\- -オプション指定の末尾を示す記号です。 -これ以降の引数はすべてファイル名として扱われます。 -ファイル名が '\-' で始まっているファイルを開くときに使ってください。 -.TP -\-\-echo\-wid -GTK GUI のみ: Window ID を標準出力に出力します。 -.TP -\-\-help -ヘルプを表示して終了します。"\-h" と同じです。 -.TP -\-\-literal -引数のファイル名をリテラル文字列として扱います。ワイルドカードを展開しませ -ん。Unix のように、シェルがワイルドカードを展開する場合は機能しません。 -.TP -\-\-noplugin -プラグインをロードしません。\-u NONE はこの動作を含んでいます。 -.TP -\-\-remote -Vim サーバーと通信し、引数に指定されたファイルを Vim サーバーで開きます。 -サーバーが存在しない場合は、エラーメッセージを表示され、起動中の Vim でファ -イルが開かれます。 -.TP -\-\-remote\-expr {expr} -Vim サーバーと通信し、{expr} に与えられた式を Vim サーバーで実行し、結果を標 -準出力に出力します。 -.TP -\-\-remote\-send {keys} -Vim サーバーと通信し、{keys} に与えられたキーを Vim サーバーに送信します。 -.TP -\-\-remote\-silent -\-\-remote と同じですが、サーバーが存在しなくてもエラーメッセージを表示しま -せん。 -.TP -\-\-remote\-wait -\-\-remote と同じですが、ファイルが開かれるのを確認できるまで待機します。 -.TP -\-\-remote\-wait\-silent -\-\-remote\-wait と同じですが、サーバーが存在しなくてもエラーメッセージを表 -示しません。 -.TP -\-\-serverlist -Vim サーバーの一覧を表示します。 -.TP -\-\-servername {name} -サーバーの名前を {name} に設定します。\-\-remote 引数を指定しなかった場合 -は、起動中の Vim の名前として使われるので、後からその名前を使ってサーバー通 -信できます。 -.TP -\-\-socketid {id} -GTK GUI のみ: GtkPlug メカニズムを使って gvim を別のウィンドウの中で実行しま -す。 -.TP -\-\-version -バージョン情報を表示して終了します。 -.SH オンラインヘルプ -ヘルプを開くには、 -.B Vim -の中で ":help" と入力してください。 -":help 調べたい項目" と入力すれば、指定した項目のヘルプが表示されます。 -例: "ZZ" コマンドのヘルプを表示するには ":help ZZ" と入力します。 -<Tab> や CTRL\-D を使って補完することもできます -(":help cmdline\-completion" 参照)。 -ヘルプには、項目から項目へジャンプできるようにタグが埋め込まれています -(ハイパーリンクのようなものです。":help" 参照)。 -すべてのヘルプファイルはこの方法で開くことができます。 -例: ":help syntax.txt"。 -.SH ファイル -.TP 15 -/usr/local/lib/vim/doc/*.txt -.B Vim -のヘルプファイル。 -ファイルの一覧は ":help doc\-file\-list" に記載されています。 -.TP -/usr/local/lib/vim/doc/tags -ヘルプを検索するための tags ファイル。 -.TP -/usr/local/lib/vim/syntax/syntax.vim -システムの構文定義初期化ファイル。 -.TP -/usr/local/lib/vim/syntax/*.vim -いろいろな言語用の構文定義ファイル。 -.TP -/usr/local/lib/vim/vimrc -システムの -.B Vim -初期化ファイル。 -.TP -~/.vimrc -ユーザーの -.B Vim -初期化ファイル。 -.TP -/usr/local/lib/vim/gvimrc -システムの gvim 初期化ファイル。 -.TP -~/.gvimrc -ユーザーの gvim 初期化ファイル。 -.TP -/usr/local/lib/vim/optwin.vim -":options" コマンドで使われるファイル。オプションを表示したり設定したりでき -ます。 -.TP -/usr/local/lib/vim/menu.vim -システムのメニュー初期化ファイル。gvim で使います。 -.TP -/usr/local/lib/vim/bugreport.vim -バグレポートを生成するスクリプト。":help bugs" 参照。 -.TP -/usr/local/lib/vim/filetype.vim -ファイル名からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 -.TP -/usr/local/lib/vim/scripts.vim -ファイルの内容からファイルタイプを判定するスクリプト。":help 'filetype'" 参照。 -.TP -/usr/local/lib/vim/print/*.ps -PostScript 印刷に使われるファイル。 -.PP -最新の情報は VIM のホームページを参照してください: -.br -<URL:http://www.vim.org/> -.SH 関連項目 -vimtutor(1) -.SH 著者 -.B Vim -のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 -":help credits" を参照してください。 -.br -.B Vim -は Stevie を基にしています。Stevie は Tim Thompson、Tony Andrews、 -G.R. (Fred) Walter によって開発されました。 -ただし、オリジナルのコードはもうほとんど残っていません。 -.SH バグ -既知のバグは ":help todo" に記載されています。 -.PP -Vi の動作を忠実に再現した結果、多くの人がバグだと思うような機能もいくつかあ -ります。 -"この動作は Vi と違う" からバグだと思った場合は、vi_diff.txtを確認してみてく -ださい (ファイルを開くか、Vim から ":help vi_diff.txt" と入力)。 -オプションの 'compatible' と 'cpoptions' も確認してください。 diff --git a/doc/vimdiff-ja.UTF-8.1 b/doc/vimdiff-ja.UTF-8.1 deleted file mode 100644 index 56fadfef6..000000000 --- a/doc/vimdiff-ja.UTF-8.1 +++ /dev/null @@ -1,44 +0,0 @@ -.TH VIMDIFF 1 "2001 March 30" -.SH 名前 -vimdiff \- 二つか三つか四つのファイルを Vim で開いて、その差分を表示する -.SH 書式 -.br -.B vimdiff -[options] file1 file2 [file3 [file4]] -.PP -.B gvimdiff -.SH 説明 -.B Vimdiff -は、二つ (か三つか四つ) のファイルを -.B Vim -で開きます。 -ファイルは個別のウィンドウで開かれ、差分が強調表示されます。 -同じファイルの別のバージョン間で、変更を確認したり、変更を移動したりするのが -簡単になります。 -.PP -Vim についての詳細は vim(1) を参照してください。 -.PP -.B gvimdiff -という名前で起動された場合は GUI で起動します。 -.PP -差分を強調表示するために、 -それぞれのウィンドウの 'diff' オプションがオンに設定されます。 -.br -テキストを見やすくするために、オプションの 'wrap' と 'scrollbind' もオンに設 -定されます。 -.br - 'foldmethod' オプションは "diff" に設定され、変更されていない行は折り畳まれ -ます。 -折り畳みの確認と開閉が簡単にできるように、'foldcolumn' は 2 に設定されます。 -.SH オプション -行を並べて表示するために、"\-O" 引数を使ったときのように、ウィンドウは垂直分 -割されます。 -ウィンドウを水平分割したい場合は "\-o" 引数を使ってください。 -.PP -その他の引数については vim(1) を参照してください。 -.SH 関連項目 -vim(1) -.SH 著者 -.B Vim -のほとんどの機能は Bram Moolenaar が開発し、多くの人が協力しました。 -":help credits" を参照してください。 diff --git a/doc/vimtutor-ja.UTF-8.1 b/doc/vimtutor-ja.UTF-8.1 deleted file mode 100644 index 29b9b48f2..000000000 --- a/doc/vimtutor-ja.UTF-8.1 +++ /dev/null @@ -1,45 +0,0 @@ -.TH VIMTUTOR 1 "2001 April 2" -.SH 名前 -vimtutor \- Vim チュートリアル -.SH 書式 -.br -.B vimtutor [\-g] [language] -.SH 説明 -.B Vim -のチュートリアルを起動します。 -演習ファイルのコピーを使って実施するので、オリジナルの演習ファイルを壊してし -まう心配はありません。 -.PP -.B Vim -を初めて学ぶ人向けのチュートリアルです。 -.PP -引数に \-g を指定すると GUI 版の vim が利用可能であれば vim ではなく gvim を -使って vimtutor が開始します。gvim が見つからないときは Vim が使用されます。 -.PP -[language] 引数は "ja" や "es" などの二文字の言語名です。 -[language] 引数を省略した場合はロケールの言語が使われます。 -翻訳された演習ファイルがある場合は、そのファイルが使われます。 -ない場合は英語のファイルが使われます。 -.PP -.B Vim -は Vi 互換モードで起動されます。 -.SH ファイル -.TP 15 -/usr/local/lib/vim/tutor/tutor[.language] -.B Vimtutor -の演習ファイル。 -.TP 15 -/usr/local/lib/vim/tutor/tutor.vim -演習ファイルをコピーするための Vim スクリプト。 -.SH 著者 -.B Vimtutor -は、Colorado State University の Charles Smith のアイデアを基に、 -Colorado School of Mines の Michael C. Pierce と Robert K. Ware の両名 -によって Vi 向けに作成されたものを基にしています。 -E-mail: bware@mines.colorado.edu. -.br -.B Vim -に合わせて Bram Moolenaar が変更を加えました。 -翻訳者の名前は演習ファイルを参照してください。 -.SH 関連項目 -vim(1) diff --git a/doc/xxd-ja.UTF-8.1 b/doc/xxd-ja.UTF-8.1 deleted file mode 100644 index 8a8d54b02..000000000 --- a/doc/xxd-ja.UTF-8.1 +++ /dev/null @@ -1,366 +0,0 @@ -.TH XXD 1 "August 1996" "Manual page for xxd" -.\" -.\" 21st May 1996 -.\" Man page author: -.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> -.\" Changes by Bram Moolenaar <Bram@vim.org> -.SH 名前 -.I xxd -\- 16 進ダンプを作成したり、元に戻したり。 -.SH 書式 -.B xxd -\-h[elp] -.br -.B xxd -[options] [infile [outfile]] -.br -.B xxd -\-r[evert] [options] [infile [outfile]] -.SH 説明 -ファイルや標準入力から 16 進ダンプを作成します。 -16 進ダンプから元のバイナリに戻すこともできます。 -.BR uuencode (1) -や -.BR uudecode (1) -のように、バイナリデータを、メールに貼り付け可能な ASCII 形式に変換できた -り、標準出力に出力することもできます。 -さらに、バイナリファイルにパッチを当てるという使い方もできます。 -.SH オプション -.I infile -を指定しなかった場合は、標準入力が読み込まれます。 -.I infile -に -.RB \` \- ' -を指定した場合も、標準入力から読み込まれます。 -.I outfile -を指定しなかった (または -.RB \` \- ' -を指定した) 場合は、標準出力に出力されます。 -.PP -引数の解釈処理は適当なので注意してください。パラメータを取らない引数は -最初の一文字だけチェックされます。 -引数の文字とパラメータの間のスペースは省略可能です。 -パラメータは 10 進数、16 進数、8 進数で指定できます。 -.BR \-c8 -、 -.BR "\-c 8" -、 -.B \-c 010 -、 -.B \-cols 8 -はすべて同じ意味です。 -.PP -.TP -.IR \-a " | " \-autoskip -オートスキップ: 連続した nul 行を一つの '*' で置き換える。 -.TP -.IR \-b " | " \-bits -ビット (2進数) ダンプ。 -1 オクテットが "1" と "0" の 8 文字で出力されます。 -各行の行頭には 16 進数の行番号が表示されます。 -行末には ascii (または ebcdic) で表した場合の文字が表示されます。 -このモードでは \-r、\-p、\-i は機能しません。 -.TP -.IR "\-c cols " | " \-cols cols" -一行 -.RI < cols > -オクテットで出力する。標準設定は 16 (\-i: 12, \-ps: 30, \-b: 6)。最大 256。 -.TP -.IR \-E " | " \-EBCDIC -右端に出力される文字のエンコーディングを ASCII から EBCDIC に変更する。 -16 進ダンプの出力形式は変更されません。 -\-r、\-p、\-i が同時に指定された場合は何の効果もありません。 -.TP -.IR "\-g bytes " | " \-groupsize bytes" -出力を -.RI < bytes > -バイト (2 文字の 16 進数、または 8 文字の 2 進数) ごとにスペースで区切りま -す。 -区切らずに出力するには -.I \-g 0 -を指定してください。 -.RI < Bytes > -の標準設定は \fI2\fP です。2 進ダンプの場合は \fI1\fP です。 -ポストスクリプト形式やインクルード形式で出力するときは、このオプションは使わ -れません。 -.TP -.IR \-h " | " \-help -コマンドの説明を出力して終了する。変換は実行されません。 -.TP -.IR \-i " | " \-include -C インクルードファイル形式で出力します。入力ファイルの名前が付けられた静的配 -列の定義が出力されます。標準入力の場合は定義の中身だけ出力されます。 -.TP -.IR "\-l len " | " \-len len" -.RI < len > -オクテットだけ出力する。 -.TP -.IR \-p " | " \-ps " | " \-postscript " | " \-plain -ポストスクリプト形式の 16 進ダンプを出力する。別名 プレーン 16 進ダンプ。 -.TP -.IR \-r " | " \-revert -元に戻す: 16 進ダンプからバイナリ形式に変換 (またはパッチ) します。 -ファイルへ出力する場合、出力先のファイルは切り詰めされません。 -行番号や特定の書式がないプレーン 16 進ダンプを読み込む場合は、 -.I \-r \-p -を指定してください。空白と改行は無視されます。 -.TP -.I \-seek offset -.IR \-r -の後で使われた場合: 16 進ダンプを出力するファイルの位置に -.RI < offset > -を加える。 -.TP -.I \-s [+][\-]seek -infile の -.RI < seek > -バイト目 (絶対位置、または相対位置) から開始する。 -\fI+ \fRは、現在の標準入力の位置から相対的な位置を示します -(標準入力から読み込むときのみ意味があります)。\fI\- \fRは、入力の終わりから -の文字数を示します (\fI+\fR と同時に指定した場合は、現在の標準入力の位置から -手前の位置を示します)。 -\-s 引数を指定しなかった場合は、現在のファイル位置から開始されます。 -.TP -.I \-u -16 進数の表記に大文字を使います。指定がない場合は小文字で出力されます。 -.TP -.IR \-v " | " \-version -バージョンを表示します。 -.SH 警告 -.PP -.I xxd \-r -では行番号の評価に関しての暗黙のルールがいくつかあります。 -出力ファイルがシーク可能なら、各行の行番号が順番通りに並んでなくても構いませ -ん。位置が飛んでいても重なっていても大丈夫です。その場合、次の位置に移動する -ために lseek(2) が使われます。 -出力ファイルがシーク不可なら、「隙間」だけが処理可能です。隙間は null バイト -で埋められます。 -.PP -.I xxd \-r -は不正な入力をエラーにしません。ゴミは静かに読み飛ばされます。 -.PP -16 進ダンプを編集するときは注意が必要です。 -.I xxd \-r -は必要な桁 (\-c 引数参照) だけ 16 進データを読み込んで、行の残りを無視しま -す。つまり、ascii (または ebcdic) を示している列への変更は無視されます。 -xxd \-r \-p でプレーン形式 (ポストスクリプト形式) の 16 進ダンプを元に戻す場 -合は、列の数は影響しません。 -2 桁の 16 進数と認識できるものはすべて変換されます。 -.PP -\fI% xxd \-i file\fR -.br -と -.br -\fI% xxd \-i < file\fR -.br -の結果は違います。注意してください。 -.PP -.I xxd \-s +seek -と -.IR "xxd \-s seek" , -の違いは、lseek(2) を使って入力を "巻き戻す" かどうかです。'+' が意味を持つ -のは、入力が標準入力で、xxd が起動されたときに標準入力のファイル位置がファイ -ルの先頭ではなかった場合です。 -以下の例が分かりやすいかもしれません (もっと混乱するかも!)... -.PP -`cat' が既に標準入力を終わりまで読んでいるので、読む前に標準入力を巻き戻す必 -要がある。 -.br -\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR -.PP -ファイル位置 0x480 (=1024+128) 前方から 16 進ダンプする。 -`+' は 「現在地からの相対位置」を意味するので、dd が 1k 処理した後から、さら -に `128' 進めます。 -.br -\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR -.PP -ファイル位置 0x100 ( = 1024\-768) から 16 進ダンプする。 -.br -\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR -.PP -このような使い方はあまりしませんし、`+' を使うこともほとんどないでしょう。 -\-s を使うときはいつでも、strace(1) や truss(1) を使って、xxd の働きをチェッ -クすることをお勧めします。 -.SH 例 -.PP -.br -.BR ファイル -の最初の三行 (16 進数で 0x30 バイト) 以降を出力する。 -.br -\fI% xxd \-s 0x30 file\fR -.PP -.br -.BR ファイル -の最後から三行 (16 進数で 0x30 バイト) を出力する。 -.br -\fI% xxd \-s \-0x30 file\fR -.PP -.br -120 バイトを、平文 16 進ダンプ形式で一行に 20 オクテットずつ出力する。 -.br -\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR -.br -2e54482058584420312022417567757374203139 -.br -39362220224d616e75616c207061676520666f72 -.br -20787864220a2e5c220a2e5c222032317374204d -.br -617920313939360a2e5c22204d616e2070616765 -.br -20617574686f723a0a2e5c2220202020546f6e79 -.br -204e7567656e74203c746f6e79407363746e7567 -.br - -.br -この man ページの先頭から 120 バイトを一行に 12 オクテットずつ 16 進ダンプす -る。 -.br -\fI% xxd \-l 120 \-c 12 xxd.1\fR -.br -0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A -.br -000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" -.br -0000018: 224d 616e 7561 6c20 7061 6765 "Manual page -.br -0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ -.br -0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M -.br -000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" -.br -0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut -.br -0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" -.br -0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent -.br -000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug -.PP -.br -xxd.1 の日付部分だけを出力する。 -.br -\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR -.br -0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996 -.PP -.br -.B input_file -を -.B output_file -にコピーし、先頭に 0x00 を 100 バイト分付け加える。 -.br -\fI% xxd input_file | xxd \-r \-s 100 > output_file\fR -.br - -.br -xxd.1 の日付を修正する。 -.br -\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR -.br -\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR -.br -0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 -.PP -.br -中身がすべて 0x00 の 65537 バイトのファイルを作成する。 -ただし、最後のバイトだけは 'A' (hex 0x41)。 -.br -\fI% echo "010000: 41" | xxd \-r > file\fR -.PP -.br -作成したファイルをオートスキップを使って 16 進ダンプする。 -.br -\fI% xxd \-a \-c 12 file\fR -.br -0000000: 0000 0000 0000 0000 0000 0000 ............ -.br -* -.br -000fffc: 0000 0000 40 ....A -.PP -一文字の 'A' からなる 1 バイトのファイルを作成する。 - '\-r \-s' の後に指定した数値がファイル中の行番号に加算され、結果、余計なバ -イトが飛ばされる。 -.br -\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR -.PP -.B vim(1) -の中から xxd をフィルタとして実行し、 -マークされた `a' から `z' までの領域を 16 進ダンプする。 -.br -\fI:'a,'z!xxd\fR -.PP -.B vim(1) -の中から xxd をフィルタとして実行し、 -マークされた `a' から `z' までの領域をバイナリに戻す。 -.br -\fI:'a,'z!xxd \-r\fR -.PP -.B vim(1) -の中から xxd をフィルタとして実行し、 -16 進ダンプされた行を元に戻す。戻したい行にカーソルを移動して: -.br -\fI!!xxd \-r\fR -.PP -シリアル行から一文字読み込む -.br -\fI% xxd \-c1 < /dev/term/b &\fR -.br -\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR -.br -\fI% echo \-n foo > /dev/term/b\fR -.PP -.SH 返り値 -以下のエラー値が返ります: -.TP -0 -エラーなし。 -.TP -\-1 -操作がサポートされていない ( -.I xxd \-r \-i -はまだ不可です)。 -.TP -1 -引数の解釈に関するエラー。 -.TP -2 -入力ファイルに関する問題。 -.TP -3 -出力ファイルに関する問題。 -.TP -4,5 -指定された位置へシークできなかった。 -.SH 関連項目 -uuencode(1), uudecode(1), patch(1) -.br -.SH 警告 -この奇妙なツールは作者が使いやすいように作られています。 -自己責任で使ってください。ファイルをコピーし、それを調べ、ウィザードたれ。 -.br -.SH バージョン -このマニュアルは xxd バージョン 1.7 について説明しています。 -.SH 著者 -.br -(c) 1990-1997 by Juergen Weigert -.br -<jnweiger@informatik.uni\-erlangen.de> -.LP -私の功績として自由に配布してください。 -.br -儲かったら教えてください。 -.br -損しても知りません。 -.PP -マニュアルは Tony Nugent -.br -<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> -.br -によって書かれ、 -Bram Moolenaar が少し変更を加え、 -Juergen Weigert が編集しました。 -.PP diff --git a/en/evim.1 b/en/evim.1 deleted file mode 100644 index bb859cead..000000000 --- a/en/evim.1 +++ /dev/null @@ -1,49 +0,0 @@ -.TH EVIM 1 "2002 February 16" -.SH NAME -evim \- easy Vim, edit a file with Vim and setup for modeless editing -.SH SYNOPSIS -.br -.B evim -[options] [file ..] -.br -.B eview -.SH DESCRIPTION -.B eVim -starts -.B Vim -and sets options to make it behave like a modeless editor. -This is still Vim but used as a point-and-click editor. -This feels a lot like using Notepad on MS-Windows. -.B eVim -will always run in the GUI, to enable the use of menus and toolbar. -.PP -Only to be used for people who really can't work with Vim in the normal way. -Editing will be much less efficient. -.PP -.B eview -is the same, but starts in read-only mode. It works just like evim \-R. -.PP -See vim(1) for details about Vim, options, etc. -.PP -The 'insertmode' option is set to be able to type text directly. -.br -Mappings are setup to make Copy and Paste work with the MS-Windows keys. -CTRL-X cuts text, CTRL-C copies text and CTRL-V pastes text. -Use CTRL-Q to obtain the original meaning of CTRL-V. -.SH OPTIONS -See vim(1). -.SH FILES -.TP 15 -/usr/local/lib/vim/evim.vim -The script loaded to initialize eVim. -.SH AKA -Also Known As "Vim for gumbies". -When using evim you are expected to take a handkerchief, -make a knot in each corner and wear it on your head. -.SH SEE ALSO -vim(1) -.SH AUTHOR -Most of -.B Vim -was made by Bram Moolenaar, with a lot of help from others. -See the Help/Credits menu. diff --git a/en/vim.1 b/en/vim.1 deleted file mode 100644 index 820caa24f..000000000 --- a/en/vim.1 +++ /dev/null @@ -1,553 +0,0 @@ -.TH VIM 1 "2006 Apr 11" -.SH NAME -vim \- Vi IMproved, a programmers text editor -.SH SYNOPSIS -.br -.B vim -[options] [file ..] -.br -.B vim -[options] \- -.br -.B vim -[options] \-t tag -.br -.B vim -[options] \-q [errorfile] -.PP -.br -.B ex -.br -.B view -.br -.B gvim -.B gview -.B evim -.B eview -.br -.B rvim -.B rview -.B rgvim -.B rgview -.SH DESCRIPTION -.B Vim -is a text editor that is upwards compatible to Vi. -It can be used to edit all kinds of plain text. -It is especially useful for editing programs. -.PP -There are a lot of enhancements above Vi: multi level undo, -multi windows and buffers, syntax highlighting, command line -editing, filename completion, on-line help, visual selection, etc.. -See ":help vi_diff.txt" for a summary of the differences between -.B Vim -and Vi. -.PP -While running -.B Vim -a lot of help can be obtained from the on-line help system, with the ":help" -command. -See the ON-LINE HELP section below. -.PP -Most often -.B Vim -is started to edit a single file with the command -.PP - vim file -.PP -More generally -.B Vim -is started with: -.PP - vim [options] [filelist] -.PP -If the filelist is missing, the editor will start with an empty buffer. -Otherwise exactly one out of the following four may be used to choose one or -more files to be edited. -.TP 12 -file .. -A list of filenames. -The first one will be the current file and read into the buffer. -The cursor will be positioned on the first line of the buffer. -You can get to the other files with the ":next" command. -To edit a file that starts with a dash, precede the filelist with "\-\-". -.TP -\- -The file to edit is read from stdin. Commands are read from stderr, which -should be a tty. -.TP -\-t {tag} -The file to edit and the initial cursor position depends on a "tag", a sort -of goto label. -{tag} is looked up in the tags file, the associated file becomes the current -file and the associated command is executed. -Mostly this is used for C programs, in which case {tag} could be a function -name. -The effect is that the file containing that function becomes the current file -and the cursor is positioned on the start of the function. -See ":help tag\-commands". -.TP -\-q [errorfile] -Start in quickFix mode. -The file [errorfile] is read and the first error is displayed. -If [errorfile] is omitted, the filename is obtained from the 'errorfile' -option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other -systems). -Further errors can be jumped to with the ":cn" command. -See ":help quickfix". -.PP -.B Vim -behaves differently, depending on the name of the command (the executable may -still be the same file). -.TP 10 -vim -The "normal" way, everything is default. -.TP -ex -Start in Ex mode. -Go to Normal mode with the ":vi" command. -Can also be done with the "\-e" argument. -.TP -view -Start in read-only mode. You will be protected from writing the files. Can -also be done with the "\-R" argument. -.TP -gvim gview -The GUI version. -Starts a new window. -Can also be done with the "\-g" argument. -.TP -evim eview -The GUI version in easy mode. -Starts a new window. -Can also be done with the "\-y" argument. -.TP -rvim rview rgvim rgview -Like the above, but with restrictions. It will not be possible to start shell -commands, or suspend -.B Vim. -Can also be done with the "\-Z" argument. -.SH OPTIONS -The options may be given in any order, before or after filenames. -Options without an argument can be combined after a single dash. -.TP 12 -+[num] -For the first file the cursor will be positioned on line "num". -If "num" is missing, the cursor will be positioned on the last line. -.TP -+/{pat} -For the first file the cursor will be positioned on the -first occurrence of {pat}. -See ":help search\-pattern" for the available search patterns. -.TP -+{command} -.TP -\-c {command} -{command} will be executed after the -first file has been read. -{command} is interpreted as an Ex command. -If the {command} contains spaces it must be enclosed in double quotes (this -depends on the shell that is used). -Example: Vim "+set si" main.c -.br -Note: You can use up to 10 "+" or "\-c" commands. -.TP -\-S {file} -{file} will be sourced after the first file has been read. -This is equivalent to \-c "source {file}". -{file} cannot start with '\-'. -If {file} is omitted "Session.vim" is used (only works when \-S is the last -argument). -.TP -\-\-cmd {command} -Like using "\-c", but the command is executed just before -processing any vimrc file. -You can use up to 10 of these commands, independently from "\-c" commands. -.TP -\-A -If -.B Vim -has been compiled with ARABIC support for editing right-to-left -oriented files and Arabic keyboard mapping, this option starts -.B Vim -in Arabic mode, i.e. 'arabic' is set. Otherwise an error -message is given and -.B Vim -aborts. -.TP -\-b -Binary mode. -A few options will be set that makes it possible to edit a binary or -executable file. -.TP -\-C -Compatible. Set the 'compatible' option. -This will make -.B Vim -behave mostly like Vi, even though a .vimrc file exists. -.TP -\-d -Start in diff mode. -There should be two, three or four file name arguments. -.B Vim -will open all the files and show differences between them. -Works like vimdiff(1). -.TP -\-d {device} -Open {device} for use as a terminal. -Only on the Amiga. -Example: -"\-d con:20/30/600/150". -.TP -\-D -Debugging. Go to debugging mode when executing the first command from a -script. -.TP -\-e -Start -.B Vim -in Ex mode, just like the executable was called "ex". -.TP -\-E -Start -.B Vim -in improved Ex mode, just like the executable was called "exim". -.TP -\-f -Foreground. For the GUI version, -.B Vim -will not fork and detach from the shell it was started in. -On the Amiga, -.B Vim -is not restarted to open a new window. -This option should be used when -.B Vim -is executed by a program that will wait for the edit -session to finish (e.g. mail). -On the Amiga the ":sh" and ":!" commands will not work. -.TP -\-\-nofork -Foreground. For the GUI version, -.B Vim -will not fork and detach from the shell it was started in. -.TP -\-F -If -.B Vim -has been compiled with FKMAP support for editing right-to-left -oriented files and Farsi keyboard mapping, this option starts -.B Vim -in Farsi mode, i.e. 'fkmap' and 'rightleft' are set. -Otherwise an error message is given and -.B Vim -aborts. -.TP -\-g -If -.B Vim -has been compiled with GUI support, this option enables the GUI. -If no GUI support was compiled in, an error message is given and -.B Vim -aborts. -.TP -\-h -Give a bit of help about the command line arguments and options. -After this -.B Vim -exits. -.TP -\-H -If -.B Vim -has been compiled with RIGHTLEFT support for editing right-to-left -oriented files and Hebrew keyboard mapping, this option starts -.B Vim -in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set. -Otherwise an error message is given and -.B Vim -aborts. -.TP -\-i {viminfo} -When using the viminfo file is enabled, this option sets the filename to use, -instead of the default "~/.viminfo". -This can also be used to skip the use of the .viminfo file, by giving the name -"NONE". -.TP -\-L -Same as \-r. -.TP -\-l -Lisp mode. -Sets the 'lisp' and 'showmatch' options on. -.TP -\-m -Modifying files is disabled. -Resets the 'write' option. -You can still modify the buffer, but writing a file is not possible. -.TP -\-M -Modifications not allowed. The 'modifiable' and 'write' options will be unset, -so that changes are not allowed and files can not be written. Note that these -options can be set to enable making modifications. -.TP -\-N -No-compatible mode. Reset the 'compatible' option. -This will make -.B Vim -behave a bit better, but less Vi compatible, even though a .vimrc file does -not exist. -.TP -\-n -No swap file will be used. -Recovery after a crash will be impossible. -Handy if you want to edit a file on a very slow medium (e.g. floppy). -Can also be done with ":set uc=0". -Can be undone with ":set uc=200". -.TP -\-nb -Become an editor server for NetBeans. See the docs for details. -.TP -\-o[N] -Open N windows stacked. -When N is omitted, open one window for each file. -.TP -\-O[N] -Open N windows side by side. -When N is omitted, open one window for each file. -.TP -\-p[N] -Open N tab pages. -When N is omitted, open one tab page for each file. -.TP -\-R -Read-only mode. -The 'readonly' option will be set. -You can still edit the buffer, but will be prevented from accidently -overwriting a file. -If you do want to overwrite a file, add an exclamation mark to the Ex command, -as in ":w!". -The \-R option also implies the \-n option (see below). -The 'readonly' option can be reset with ":set noro". -See ":help 'readonly'". -.TP -\-r -List swap files, with information about using them for recovery. -.TP -\-r {file} -Recovery mode. -The swap file is used to recover a crashed editing session. -The swap file is a file with the same filename as the text file with ".swp" -appended. -See ":help recovery". -.TP -\-s -Silent mode. Only when started as "Ex" or when the "\-e" option was given -before the "\-s" option. -.TP -\-s {scriptin} -The script file {scriptin} is read. -The characters in the file are interpreted as if you had typed them. -The same can be done with the command ":source! {scriptin}". -If the end of the file is reached before the editor exits, further characters -are read from the keyboard. -.TP -\-T {terminal} -Tells -.B Vim -the name of the terminal you are using. -Only required when the automatic way doesn't work. -Should be a terminal known -to -.B Vim -(builtin) or defined in the termcap or terminfo file. -.TP -\-u {vimrc} -Use the commands in the file {vimrc} for initializations. -All the other initializations are skipped. -Use this to edit a special kind of files. -It can also be used to skip all initializations by giving the name "NONE". -See ":help initialization" within vim for more details. -.TP -\-U {gvimrc} -Use the commands in the file {gvimrc} for GUI initializations. -All the other GUI initializations are skipped. -It can also be used to skip all GUI initializations by giving the name "NONE". -See ":help gui\-init" within vim for more details. -.TP -\-V[N] -Verbose. Give messages about which files are sourced and for reading and -writing a viminfo file. The optional number N is the value for 'verbose'. -Default is 10. -.TP -\-v -Start -.B Vim -in Vi mode, just like the executable was called "vi". This only has effect -when the executable is called "ex". -.TP -\-w {scriptout} -All the characters that you type are recorded in the file -{scriptout}, until you exit -.B Vim. -This is useful if you want to create a script file to be used with "vim \-s" or -":source!". -If the {scriptout} file exists, characters are appended. -.TP -\-W {scriptout} -Like \-w, but an existing file is overwritten. -.TP -\-x -Use encryption when writing files. Will prompt for a crypt key. -.TP -\-X -Don't connect to the X server. Shortens startup time in a terminal, but the -window title and clipboard will not be used. -.TP -\-y -Start -.B Vim -in easy mode, just like the executable was called "evim" or "eview". -Makes -.B Vim -behave like a click-and-type editor. -.TP -\-Z -Restricted mode. Works like the executable starts with "r". -.TP -\-\- -Denotes the end of the options. -Arguments after this will be handled as a file name. -This can be used to edit a filename that starts with a '\-'. -.TP -\-\-echo\-wid -GTK GUI only: Echo the Window ID on stdout. -.TP -\-\-help -Give a help message and exit, just like "\-h". -.TP -\-\-literal -Take file name arguments literally, do not expand wildcards. This has no -effect on Unix where the shell expands wildcards. -.TP -\-\-noplugin -Skip loading plugins. Implied by \-u NONE. -.TP -\-\-remote -Connect to a Vim server and make it edit the files given in the rest of the -arguments. If no server is found a warning is given and the files are edited -in the current Vim. -.TP -\-\-remote\-expr {expr} -Connect to a Vim server, evaluate {expr} in it and print the result on stdout. -.TP -\-\-remote\-send {keys} -Connect to a Vim server and send {keys} to it. -.TP -\-\-remote\-silent -As \-\-remote, but without the warning when no server is found. -.TP -\-\-remote\-wait -As \-\-remote, but Vim does not exit until the files have been edited. -.TP -\-\-remote\-wait\-silent -As \-\-remote\-wait, but without the warning when no server is found. -.TP -\-\-serverlist -List the names of all Vim servers that can be found. -.TP -\-\-servername {name} -Use {name} as the server name. Used for the current Vim, unless used with a -\-\-remote argument, then it's the name of the server to connect to. -.TP -\-\-socketid {id} -GTK GUI only: Use the GtkPlug mechanism to run gvim in another window. -.TP -\-\-version -Print version information and exit. -.SH ON-LINE HELP -Type ":help" in -.B Vim -to get started. -Type ":help subject" to get help on a specific subject. -For example: ":help ZZ" to get help for the "ZZ" command. -Use <Tab> and CTRL-D to complete subjects (":help cmdline\-completion"). -Tags are present to jump from one place to another (sort of hypertext links, -see ":help"). -All documentation files can be viewed in this way, for example -":help syntax.txt". -.SH FILES -.TP 15 -/usr/local/lib/vim/doc/*.txt -The -.B Vim -documentation files. -Use ":help doc\-file\-list" to get the complete list. -.TP -/usr/local/lib/vim/doc/tags -The tags file used for finding information in the documentation files. -.TP -/usr/local/lib/vim/syntax/syntax.vim -System wide syntax initializations. -.TP -/usr/local/lib/vim/syntax/*.vim -Syntax files for various languages. -.TP -/usr/local/lib/vim/vimrc -System wide -.B Vim -initializations. -.TP -~/.vimrc -Your personal -.B Vim -initializations. -.TP -/usr/local/lib/vim/gvimrc -System wide gvim initializations. -.TP -~/.gvimrc -Your personal gvim initializations. -.TP -/usr/local/lib/vim/optwin.vim -Script used for the ":options" command, a nice way to view and set options. -.TP -/usr/local/lib/vim/menu.vim -System wide menu initializations for gvim. -.TP -/usr/local/lib/vim/bugreport.vim -Script to generate a bug report. See ":help bugs". -.TP -/usr/local/lib/vim/filetype.vim -Script to detect the type of a file by its name. See ":help 'filetype'". -.TP -/usr/local/lib/vim/scripts.vim -Script to detect the type of a file by its contents. See ":help 'filetype'". -.TP -/usr/local/lib/vim/print/*.ps -Files used for PostScript printing. -.PP -For recent info read the VIM home page: -.br -<URL:http://www.vim.org/> -.SH SEE ALSO -vimtutor(1) -.SH AUTHOR -Most of -.B Vim -was made by Bram Moolenaar, with a lot of help from others. -See ":help credits" in -.B Vim. -.br -.B Vim -is based on Stevie, worked on by: Tim Thompson, -Tony Andrews and G.R. (Fred) Walter. -Although hardly any of the original code remains. -.SH BUGS -Probably. -See ":help todo" for a list of known problems. -.PP -Note that a number of things that may be regarded as bugs by some, are in fact -caused by a too-faithful reproduction of Vi's behaviour. -And if you think other things are bugs "because Vi does it differently", -you should take a closer look at the vi_diff.txt file (or type :help -vi_diff.txt when in Vim). -Also have a look at the 'compatible' and 'cpoptions' options. diff --git a/en/vimdiff.1 b/en/vimdiff.1 deleted file mode 100644 index bed2b3288..000000000 --- a/en/vimdiff.1 +++ /dev/null @@ -1,46 +0,0 @@ -.TH VIMDIFF 1 "2001 March 30" -.SH NAME -vimdiff \- edit two, three or four versions of a file with Vim and show differences -.SH SYNOPSIS -.br -.B vimdiff -[options] file1 file2 [file3 [file4]] -.PP -.B gvimdiff -.SH DESCRIPTION -.B Vimdiff -starts -.B Vim -on two (or three or four) files. -Each file gets its own window. -The differences between the files are highlighted. -This is a nice way to inspect changes and to move changes from one version -to another version of the same file. -.PP -See vim(1) for details about Vim itself. -.PP -When started as -.B gvimdiff -the GUI will be started, if available. -.PP -In each window the 'diff' option will be set, which causes the differences -to be highlighted. -.br -The 'wrap' and 'scrollbind' options are set to make the text look good. -.br -The 'foldmethod' option is set to "diff", which puts ranges of lines without -changes in a fold. 'foldcolumn' is set to two to make it easy to spot the -folds and open or close them. -.SH OPTIONS -Vertical splits are used to align the lines, as if the "\-O" argument was used. -To use horizontal splits instead, use the "\-o" argument. -.PP -For all other arguments see vim(1). -.SH SEE ALSO -vim(1) -.SH AUTHOR -Most of -.B Vim -was made by Bram Moolenaar, with a lot of help from others. -See ":help credits" in -.B Vim. diff --git a/en/vimtutor.1 b/en/vimtutor.1 deleted file mode 100644 index 0aa7e8d8d..000000000 --- a/en/vimtutor.1 +++ /dev/null @@ -1,57 +0,0 @@ -.TH VIMTUTOR 1 "2001 April 2" -.SH NAME -vimtutor \- the Vim tutor -.SH SYNOPSIS -.br -.B vimtutor [\-g] [language] -.SH DESCRIPTION -.B Vimtutor -starts the -.B Vim -tutor. -It copies the tutor file first, so that it can be modified without changing -the original file. -.PP -The -.B Vimtutor -is useful for people that want to learn their first -.B Vim -commands. -.PP -The optional argument \-g starts vimtutor with gvim rather than vim, if the -GUI version of vim is available, or falls back to Vim if gvim is not found. -.PP -The optional [language] argument is the two-letter name of a language, like -"it" or "es". -If the [language] argument is missing, the language of the current locale will -be used. -If a tutor in this language is available, it will be used. -Otherwise the English version will be used. -.PP -.B Vim -is always started in Vi compatible mode. -.SH FILES -.TP 15 -/usr/local/lib/vim/tutor/tutor[.language] -The -.B Vimtutor -text file(s). -.TP 15 -/usr/local/lib/vim/tutor/tutor.vim -The Vim script used to copy the -.B Vimtutor -text file. -.SH AUTHOR -The -.B Vimtutor -was originally written for Vi by Michael C. Pierce and Robert K. Ware, -Colorado School of Mines using ideas supplied by Charles Smith, -Colorado State University. -E-mail: bware@mines.colorado.edu. -.br -It was modified for -.B Vim -by Bram Moolenaar. -For the names of the translators see the tutor files. -.SH SEE ALSO -vim(1) diff --git a/en/xxd.1 b/en/xxd.1 deleted file mode 100644 index e8f735859..000000000 --- a/en/xxd.1 +++ /dev/null @@ -1,370 +0,0 @@ -.TH XXD 1 "August 1996" "Manual page for xxd" -.\" -.\" 21st May 1996 -.\" Man page author: -.\" Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> -.\" Changes by Bram Moolenaar <Bram@vim.org> -.SH NAME -.I xxd -\- make a hexdump or do the reverse. -.SH SYNOPSIS -.B xxd -\-h[elp] -.br -.B xxd -[options] [infile [outfile]] -.br -.B xxd -\-r[evert] [options] [infile [outfile]] -.SH DESCRIPTION -.I xxd -creates a hex dump of a given file or standard input. -It can also convert a hex dump back to its original binary form. -Like -.BR uuencode (1) -and -.BR uudecode (1) -it allows the transmission of binary data in a `mail-safe' ASCII representation, -but has the advantage of decoding to standard output. -Moreover, it can be used to perform binary file patching. -.SH OPTIONS -If no -.I infile -is given, standard input is read. -If -.I infile -is specified as a -.RB \` \- ' -character, then input is taken from standard input. -If no -.I outfile -is given (or a -.RB \` \- ' -character is in its place), results are sent to standard output. -.PP -Note that a "lazy" parser is used which does not check for more than the first -option letter, unless the option is followed by a parameter. -Spaces between a single option letter and its parameter are optional. -Parameters to options can be specified in decimal, hexadecimal or octal -notation. -Thus -.BR \-c8 , -.BR "\-c 8" , -.B \-c 010 -and -.B \-cols 8 -are all equivalent. -.PP -.TP -.IR \-a " | " \-autoskip -toggle autoskip: A single '*' replaces nul-lines. Default off. -.TP -.IR \-b " | " \-bits -Switch to bits (binary digits) dump, rather than hexdump. -This option writes octets as eight digits "1"s and "0"s instead of a normal -hexadecimal dump. Each line is preceded by a line number in hexadecimal and -followed by an ascii (or ebcdic) representation. The command line switches -\-r, \-p, \-i do not work with this mode. -.TP -.IR "\-c cols " | " \-cols cols" -format -.RI < cols > -octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. -.TP -.IR \-E " | " \-EBCDIC -Change the character encoding in the righthand column from ASCII to EBCDIC. -This does not change the hexadecimal representation. The option is -meaningless in combinations with \-r, \-p or \-i. -.TP -.IR "\-g bytes " | " \-groupsize bytes" -separate the output of every -.RI < bytes > -bytes (two hex characters or eight bit-digits each) by a whitespace. -Specify -.I \-g 0 -to suppress grouping. -.RI < Bytes "> defaults to " 2 -in normal mode and \fI1\fP in bits mode. -Grouping does not apply to postscript or include style. -.TP -.IR \-h " | " \-help -print a summary of available commands and exit. No hex dumping is performed. -.TP -.IR \-i " | " \-include -output in C include file style. A complete static array definition is written -(named after the input file), unless xxd reads from stdin. -.TP -.IR "\-l len " | " \-len len" -stop after writing -.RI < len > -octets. -.TP -.IR \-p " | " \-ps " | " \-postscript " | " \-plain -output in postscript continuous hexdump style. Also known as plain hexdump -style. -.TP -.IR \-r " | " \-revert -reverse operation: convert (or patch) hexdump into binary. -If not writing to stdout, xxd writes into its output file without truncating -it. Use the combination -.I \-r \-p -to read plain hexadecimal dumps without line number information and without a -particular column layout. Additional Whitespace and line-breaks are allowed -anywhere. -.TP -.I \-seek offset -When used after -.IR \-r : -revert with -.RI < offset > -added to file positions found in hexdump. -.TP -.I \-s [+][\-]seek -start at -.RI < seek > -bytes abs. (or rel.) infile offset. -\fI+ \fRindicates that the seek is relative to the current stdin file position -(meaningless when not reading from stdin). \fI\- \fRindicates that the seek -should be that many characters from the end of the input (or if combined with -\fI+\fR: before the current stdin file position). -Without \-s option, xxd starts at the current file position. -.TP -.I \-u -use upper case hex letters. Default is lower case. -.TP -.IR \-v " | " \-version -show version string. -.SH CAVEATS -.PP -.I xxd \-r -has some builtin magic while evaluating line number information. -If the output file is seekable, then the linenumbers at the start of each -hexdump line may be out of order, lines may be missing, or overlapping. In -these cases xxd will lseek(2) to the next position. If the output file is not -seekable, only gaps are allowed, which will be filled by null-bytes. -.PP -.I xxd \-r -never generates parse errors. Garbage is silently skipped. -.PP -When editing hexdumps, please note that -.I xxd \-r -skips everything on the input line after reading enough columns of hexadecimal -data (see option \-c). This also means, that changes to the printable ascii (or -ebcdic) columns are always ignored. Reverting a plain (or postscript) style -hexdump with xxd \-r \-p does not depend on the correct number of columns. Here anything that looks like a pair of hex-digits is interpreted. -.PP -Note the difference between -.br -\fI% xxd \-i file\fR -.br -and -.br -\fI% xxd \-i < file\fR -.PP -.I xxd \-s +seek -may be different from -.IR "xxd \-s seek" , -as lseek(2) is used to "rewind" input. A '+' -makes a difference if the input source is stdin, and if stdin's file position -is not at the start of the file by the time xxd is started and given its input. -The following examples may help to clarify (or further confuse!)... -.PP -Rewind stdin before reading; needed because the `cat' has already read to the -end of stdin. -.br -\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR -.PP -Hexdump from file position 0x480 (=1024+128) onwards. -The `+' sign means "relative to the current position", thus the `128' adds to -the 1k where dd left off. -.br -\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR -.PP -Hexdump from file position 0x100 ( = 1024\-768) on. -.br -\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR -.PP -However, this is a rare situation and the use of `+' is rarely needed. -The author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. -.SH EXAMPLES -.PP -.br -Print everything but the first three lines (hex 0x30 bytes) of -.BR file . -.br -\fI% xxd \-s 0x30 file\fR -.PP -.br -Print 3 lines (hex 0x30 bytes) from the end of -.BR file . -.br -\fI% xxd \-s \-0x30 file\fR -.PP -.br -Print 120 bytes as continuous hexdump with 20 octets per line. -.br -\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR -.br -2e54482058584420312022417567757374203139 -.br -39362220224d616e75616c207061676520666f72 -.br -20787864220a2e5c220a2e5c222032317374204d -.br -617920313939360a2e5c22204d616e2070616765 -.br -20617574686f723a0a2e5c2220202020546f6e79 -.br -204e7567656e74203c746f6e79407363746e7567 -.br - -.br -Hexdump the first 120 bytes of this man page with 12 octets per line. -.br -\fI% xxd \-l 120 \-c 12 xxd.1\fR -.br -0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A -.br -000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" -.br -0000018: 224d 616e 7561 6c20 7061 6765 "Manual page -.br -0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ -.br -0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M -.br -000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" -.br -0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut -.br -0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" -.br -0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent -.br -000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug -.PP -.br -Display just the date from the file xxd.1 -.br -\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR -.br -0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996 -.PP -.br -Copy -.B input_file -to -.B output_file -and prepend 100 bytes of value 0x00. -.br -\fI% xxd input_file | xxd \-r \-s 100 > output_file\fR -.br - -.br -Patch the date in the file xxd.1 -.br -\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR -.br -\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR -.br -0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 -.PP -.br -Create a 65537 byte file with all bytes 0x00, -except for the last one which is 'A' (hex 0x41). -.br -\fI% echo "010000: 41" | xxd \-r > file\fR -.PP -.br -Hexdump this file with autoskip. -.br -\fI% xxd \-a \-c 12 file\fR -.br -0000000: 0000 0000 0000 0000 0000 0000 ............ -.br -* -.br -000fffc: 0000 0000 40 ....A -.PP -Create a 1 byte file containing a single 'A' character. -The number after '\-r \-s' adds to the linenumbers found in the file; -in effect, the leading bytes are suppressed. -.br -\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR -.PP -Use xxd as a filter within an editor such as -.B vim(1) -to hexdump a region marked between `a' and `z'. -.br -\fI:'a,'z!xxd\fR -.PP -Use xxd as a filter within an editor such as -.B vim(1) -to recover a binary hexdump marked between `a' and `z'. -.br -\fI:'a,'z!xxd \-r\fR -.PP -Use xxd as a filter within an editor such as -.B vim(1) -to recover one line of a hexdump. Move the cursor over the line and type: -.br -\fI!!xxd \-r\fR -.PP -Read single characters from a serial line -.br -\fI% xxd \-c1 < /dev/term/b &\fR -.br -\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR -.br -\fI% echo \-n foo > /dev/term/b\fR -.PP -.SH "RETURN VALUES" -The following error values are returned: -.TP -0 -no errors encountered. -.TP -\-1 -operation not supported ( -.I xxd \-r \-i -still impossible). -.TP -1 -error while parsing options. -.TP -2 -problems with input file. -.TP -3 -problems with output file. -.TP -4,5 -desired seek position is unreachable. -.SH "SEE ALSO" -uuencode(1), uudecode(1), patch(1) -.br -.SH WARNINGS -The tools weirdness matches its creators brain. -Use entirely at your own risk. Copy files. Trace it. Become a wizard. -.br -.SH VERSION -This manual page documents xxd version 1.7 -.SH AUTHOR -.br -(c) 1990-1997 by Juergen Weigert -.br -<jnweiger@informatik.uni\-erlangen.de> -.LP -Distribute freely and credit me, -.br -make money and share with me, -.br -lose money and don't ask me. -.PP -Manual page started by Tony Nugent -.br -<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au> -.br -Small changes by Bram Moolenaar. -Edited by Juergen Weigert. -.PP From 7566335e069d9fc18143ec6fe2e1504a792d6273 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 00:17:28 +0900 Subject: [PATCH 748/783] start to catch up project --- catchup-7.4.1194.md | 73 +++ en/autocmd.txt | 21 +- en/change.txt | 74 ++- en/cmdline.txt | 7 +- en/develop.txt | 53 ++- en/editing.txt | 25 +- en/eval.txt | 450 ++++++++++++++++-- en/filetype.txt | 5 +- en/fold.txt | 23 +- en/hangulin.txt | 51 +- en/help.txt | 12 +- en/if_lua.txt | 110 ++++- en/if_mzsch.txt | 27 +- en/if_perl.txt | 10 +- en/if_pyth.txt | 22 +- en/if_ruby.txt | 61 ++- en/if_tcl.txt | 24 +- en/index.txt | 19 +- en/insert.txt | 37 +- en/map.txt | 39 +- en/mlang.txt | 10 +- en/netbeans.txt | 13 +- en/options.txt | 321 ++++++++++--- en/os_os2.txt | 214 +-------- en/pattern.txt | 22 +- en/pi_netrw.txt | 1094 +++++++++++++++++++++++++++++++------------ en/quickfix.txt | 2 +- en/quickref.txt | 20 +- en/repeat.txt | 40 +- en/spell.txt | 10 +- en/syntax.txt | 161 +++++-- en/tagsrch.txt | 31 +- en/term.txt | 34 +- en/usr_02.txt | 257 +++++++--- en/usr_03.txt | 13 +- en/usr_29.txt | 3 +- en/usr_41.txt | 17 +- en/usr_43.txt | 8 +- en/various.txt | 12 +- en/vi_diff.txt | 2 +- en/windows.txt | 148 ++++-- 41 files changed, 2601 insertions(+), 974 deletions(-) create mode 100644 catchup-7.4.1194.md diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md new file mode 100644 index 000000000..cee943daa --- /dev/null +++ b/catchup-7.4.1194.md @@ -0,0 +1,73 @@ +# 7.4.1194 に追いつくプロジェクト + +ここらでいっちょ最新に追いつこうぜ、というプロジェクト。最低限、新機能のド +キュメントを未翻訳のままでも、日本語ファイルに組み入れてしまう。 + +最近Vim本体の更新が激しいので、多少のズレはでてしまうが、まずは気にせず1194を +ターゲットにする。 + +## 流れ + +1. 英語ファイルを全部更新 (終わった!) +2. 1の差分を見ながら、日本語ファイルに英文のまま反映 (最低限の目標) +3. 2の差分を翻訳 (できたらココまでやりたい) +4. このファイルを削除 + +## ファイル一覧 + +### 未作業 + +追いついたファイルは、下記の一覧から削除し、適切なセクションへ移動 + + doc/autocmd.jax + doc/change.jax + doc/cmdline.jax + doc/develop.jax + doc/editing.jax + doc/eval.jax + doc/filetype.jax + doc/fold.jax + doc/hangulin.jax + doc/help.jax + doc/if_lua.jax + doc/if_mzsch.jax + doc/if_perl.jax + doc/if_pyth.jax + doc/if_ruby.jax + doc/if_tcl.jax + doc/index.jax + doc/insert.jax + doc/map.jax + doc/mlang.jax + doc/netbeans.jax + doc/options.jax + doc/os_os2.jax + doc/pattern.jax + doc/pi_netrw.jax + doc/quickfix.jax + doc/quickref.jax + doc/repeat.jax + doc/spell.jax + doc/syntax.jax + doc/tagsrch.jax + doc/term.jax + doc/usr_02.jax + doc/usr_03.jax + doc/usr_29.jax + doc/usr_41.jax + doc/usr_43.jax + doc/various.jax + doc/vi_diff.jax + doc/windows.jax + +### 英文だけは反映済み + +まだない + +### 完訳! + +まだない + +### その他/深い事情があって断念したもの + +まだない diff --git a/en/autocmd.txt b/en/autocmd.txt index 18d47d9f7..4de5b1619 100644 --- a/en/autocmd.txt +++ b/en/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 7.4. Last change: 2014 Aug 22 +*autocmd.txt* For Vim version 7.4. Last change: 2015 Dec 05 VIM REFERENCE MANUAL by Bram Moolenaar @@ -506,6 +506,8 @@ ColorScheme After loading a color scheme. |:colorscheme| CompleteDone After Insert mode completion is done. Either when something was completed or abandoning completion. |ins-completion| + The |v:completed_item| variable contains + information about the completed item. *CursorHold* CursorHold When the user doesn't press a key for the time @@ -520,6 +522,11 @@ CursorHold When the user doesn't press a key for the time operator. While recording the CursorHold event is not triggered. |q| + *<CursorHold>* + Internally the autocommand is triggered by the + <CursorHold> key. In an expression mapping + |getchar()| may see this character. + Note: Interactive commands cannot be used for this event. There is no hit-enter prompt, the screen is updated directly (when needed). @@ -952,6 +959,13 @@ WinLeave Before leaving a window. If the window to be ============================================================================== 6. Patterns *autocmd-patterns* *{pat}* +The {pat} argument can be a comma separated list. This works as if the +command was given with each pattern separately. Thus this command: > + :autocmd BufRead *.txt,*.info set et +Is equivalent to: > + :autocmd BufRead *.txt set et + :autocmd BufRead *.info set et + The file pattern {pat} is tested for a match against the file name in one of two ways: 1. When there is no '/' in the pattern, Vim checks for a match against only @@ -1058,7 +1072,7 @@ Instead of a pattern buffer-local autocommands use one of these forms: Examples: > :au CursorHold <buffer> echo 'hold' :au CursorHold <buffer=33> echo 'hold' - :au CursorHold <buffer=abuf> echo 'hold' + :au BufNewFile * au CursorHold <buffer=abuf> echo 'hold' All the commands for autocommands also work with buffer-local autocommands, simply use the special string instead of the pattern. Examples: > @@ -1117,6 +1131,9 @@ name! :aug[roup] {name} Define the autocmd group name for the following ":autocmd" commands. The name "end" or "END" selects the default group. + To avoid confusion, the name should be + different from existing {event} names, as this + most likely will not do what you intended. *:augroup-delete* *E367* :aug[roup]! {name} Delete the autocmd group {name}. Don't use diff --git a/en/change.txt b/en/change.txt index 3a8107ecd..ac1b8b686 100644 --- a/en/change.txt +++ b/en/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.4. Last change: 2015 Sep 06 +*change.txt* For Vim version 7.4. Last change: 2016 Jan 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -416,9 +416,14 @@ CTRL-X Subtract [count] from the number or alphabetic additional [count] (so effectively creating a [count] decrementing sequence). {not in Vi} -The CTRL-A and CTRL-X commands work for (signed) decimal numbers, unsigned -octal and hexadecimal numbers and alphabetic characters. This depends on the -'nrformats' option. +The CTRL-A and CTRL-X commands can work for: +- signed and unsigned decimal numbers +- unsigned binary, octal and hexadecimal numbers +- alphabetic characters + +This depends on the 'nrformats' option: +- When 'nrformats' includes "bin", Vim assumes numbers starting with '0b' or + '0B' are binary. - When 'nrformats' includes "octal", Vim considers numbers starting with a '0' to be octal, unless the number includes a '8' or '9'. Other numbers are decimal and may have a preceding minus sign. @@ -433,8 +438,8 @@ octal and hexadecimal numbers and alphabetic characters. This depends on the index. For decimals a leading negative sign is considered for incrementing/ -decrementing, for octal and hex values, it won't be considered. -To ignore the sign Visually select the number before using CTRL-A or CTRL-X. +decrementing, for binary, octal and hex values, it won't be considered. To +ignore the sign Visually select the number before using CTRL-A or CTRL-X. For numbers with leading zeros (including all octal and hexadecimal numbers), Vim preserves the number of characters in the number when possible. CTRL-A on @@ -447,6 +452,10 @@ octal number. Note that when 'nrformats' includes "octal", decimal numbers with leading zeros cause mistakes, because they can be confused with octal numbers. +Note similarly, when 'nrformats' includes "bin", binary numbers with a leading +'0x' or '0X' can be interpreted as hexadecimal rather than binary since '0b' +are valid hexadecimal digits. + The CTRL-A command is very useful in a macro. Example: Use the following steps to make a numbered list. @@ -863,6 +872,36 @@ either the first or second pattern in parentheses did not match, so either :s/\([ab]\)\|\([cd]\)/\1x/g modifies "a b c d" to "ax bx x x" < + *:sc* *:sce* *:scg* *:sci* *:scI* *:scl* *:scp* *:sg* *:sgc* + *:sge* *:sgi* *:sgI* *:sgl* *:sgn* *:sgp* *:sgr* *:sI* *:si* + *:sic* *:sIc* *:sie* *:sIe* *:sIg* *:sIl* *:sin* *:sIn* *:sIp* + *:sip* *:sIr* *:sir* *:sr* *:src* *:srg* *:sri* *:srI* *:srl* + *:srn* *:srp* +2-letter and 3-letter :substitute commands ~ + + List of :substitute commands + | c e g i I n p l r + | c :sc :sce :scg :sci :scI :scn :scp :scl --- + | e + | g :sgc :sge :sg :sgi :sgI :sgn :sgp :sgl :sgr + | i :sic :sie --- :si :siI :sin :sip --- :sir + | I :sIc :sIe :sIg :sIi :sI :sIn :sIp :sIl :sIr + | n + | p + | l + | r :src --- :srg :sri :srI :srn :srp :srl :sr + +Exceptions: + :scr is `:scriptnames` + :se is `:set` + :sig is `:sign` + :sil is `:silent` + :sn is `:snext` + :sp is `:split` + :sl is `:sleep` + :sre is `:srewind` + + Substitute with an expression *sub-replace-expression* *sub-replace-\=* *s/\=* When the substitute string starts with "\=" the remainder is interpreted as an @@ -968,7 +1007,7 @@ inside of strings can change! Also see 'softtabstop' option. > :reg[isters] {arg} Display the contents of the numbered and named registers that are mentioned in {arg}. For example: > - :dis 1a + :reg 1a < to display registers '1' and 'a'. Spaces are allowed in {arg}. {not in Vi} @@ -1706,7 +1745,7 @@ Vim has a sorting function and a sorting command. The sorting function can be found here: |sort()|, |uniq()|. *:sor* *:sort* -:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] +:[range]sor[t][!] [b][f][i][n][o][r][u][x] [/{pattern}/] Sort lines in [range]. When no range is given all lines are sorted. @@ -1714,10 +1753,18 @@ found here: |sort()|, |uniq()|. With [i] case is ignored. + Options [n][f][x][o][b] are mutually exclusive. + With [n] sorting is done on the first decimal number in the line (after or inside a {pattern} match). One leading '-' is included in the number. + With [f] sorting is done on the Float in the line. + The value of Float is determined similar to passing + the text (after or inside a {pattern} match) to + str2float() function. This option is available only + if Vim was compiled with Floating point support. + With [x] sorting is done on the first hexadecimal number in the line (after or inside a {pattern} match). A leading "0x" or "0X" is ignored. @@ -1726,10 +1773,13 @@ found here: |sort()|, |uniq()|. With [o] sorting is done on the first octal number in the line (after or inside a {pattern} match). - With [u] only keep the first of a sequence of - identical lines (ignoring case when [i] is used). - Without this flag, a sequence of identical lines - will be kept in their original order. + With [b] sorting is done on the first binary number in + the line (after or inside a {pattern} match). + + With [u] (u stands for unique) only keep the first of + a sequence of identical lines (ignoring case when [i] + is used). Without this flag, a sequence of identical + lines will be kept in their original order. Note that leading and trailing white space may cause lines to be different. diff --git a/en/cmdline.txt b/en/cmdline.txt index 619717102..818667876 100644 --- a/en/cmdline.txt +++ b/en/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.4. Last change: 2015 Sep 25 +*cmdline.txt* For Vim version 7.4. Last change: 2015 Dec 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -101,6 +101,11 @@ CTRL-E or <End> *c_CTRL-E* *c_<End>* *c_End* *c_<LeftMouse>* <LeftMouse> Move the cursor to the position of the mouse click. + *c_<MiddleMouse>* +<MiddleMouse> Paste the contents of the clipboard (for X11 the primary + selection). This is similar to using CTRL-R *, but no CR + characters are inserted between lines. + CTRL-H *c_<BS>* *c_CTRL-H* *c_BS* <BS> Delete the character in front of the cursor (see |:fixdel| if your <BS> key does not do what you want). diff --git a/en/develop.txt b/en/develop.txt index 6e6feb32d..34ff38d15 100644 --- a/en/develop.txt +++ b/en/develop.txt @@ -1,4 +1,4 @@ -*develop.txt* For Vim version 7.4. Last change: 2014 Mar 27 +*develop.txt* For Vim version 7.4. Last change: 2016 Jan 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -166,12 +166,27 @@ This list is not complete. Look in the source code for more examples. MAKING CHANGES *style-changes* The basic steps to make changes to the code: -1. Adjust the documentation. Doing this first gives you an impression of how +1. Get the code from github. That makes it easier to keep your changed + version in sync with the main code base (it may be a while before your + changes will be included). You do need to spend some time learning git, + it's not the most user friendly tool. +2. Adjust the documentation. Doing this first gives you an impression of how your changes affect the user. -2. Make the source code changes. -3. Check ../doc/todo.txt if the change affects any listed item. -4. Make a patch with "diff -c" against the unmodified code and docs. -5. Make a note about what changed and include it with the patch. +3. Make the source code changes. +4. Check ../doc/todo.txt if the change affects any listed item. +5. Make a patch with "git diff". You can also create a pull request on + github, but it's the diff that matters. +6. Make a note about what changed, preferably mentioning the problem and the + solution. Send an email to the vim-dev maillist with an explanation and + include the diff. Or create a pull request on github. + + +C COMPILER *style-compiler* + +The minimal C compiler version supported is C89, also known as ANSI C. +Later standards don't add much and C89 is the widest supported. + +One restriction that this implies: no // comments, only /* comments */. USE OF COMMON FUNCTIONS *style-functions* @@ -197,7 +212,7 @@ NAMES *style-names* Function names can not be more than 31 characters long (because of VMS). -Don't use "delete" as a variable name, C++ doesn't like it. +Don't use "delete" or "this" as a variable name, C++ doesn't like it. Because of the requirement that Vim runs on as many systems as possible, we need to avoid using names that are already defined by the system. This is a @@ -288,6 +303,24 @@ OK: do a = 1; while (cond); +Wrong: if (cond) { + cmd; + cmd; + } else { + cmd; + cmd; + } + +OK: if (cond) + { + cmd; + cmd; + } + else + { + cmd; + cmd; + } Functions start with: @@ -299,9 +332,9 @@ OK: /* * Return value explanation. */ int - function_name(arg1, arg2) - int arg1; /* short comment about arg1 */ - int arg2; /* short comment about arg2 */ + function_name( + int arg1, /* short comment about arg1 */ + int arg2) /* short comment about arg2 */ { int local; /* comment about local */ diff --git a/en/editing.txt b/en/editing.txt index 5666e68b5..a1d0e14c5 100644 --- a/en/editing.txt +++ b/en/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.4. Last change: 2015 Aug 25 +*editing.txt* For Vim version 7.4. Last change: 2016 Jan 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -78,7 +78,9 @@ g CTRL-G Prints the current position of the cursor in five than one position on the screen (<Tab> or special character), both the "real" column and the screen column are shown, separated with a dash. - See also 'ruler' option. {not in Vi} + Also see the 'ruler' option and the |wordcount()| + function. + {not in Vi} *v_g_CTRL-G* {Visual}g CTRL-G Similar to "g CTRL-G", but Word, Character, Line, and @@ -637,6 +639,7 @@ list of the current window. :0argadd x x a b c :1argadd x a x b c :$argadd x a b c x + And after the last one: :+2argadd y a b c x y There is no check for duplicates, it is possible to add a file to the argument list twice. @@ -1105,10 +1108,10 @@ The names can be in upper- or lowercase. the last file in the argument list has not been edited. See |:confirm| and 'confirm'. {not in Vi} -:q[uit]! Quit without writing, also when currently visible - buffers have changes. Does not exit when this is the - last window and there is a changed hidden buffer. - In this case, the first changed hidden buffer becomes +:q[uit]! Quit without writing, also when the current buffer has + changes. If this is the last window and there is a + modified hidden buffer, the current buffer is + abandoned and the first changed hidden buffer becomes the current buffer. Use ":qall!" to exit always. @@ -1456,6 +1459,16 @@ using zip, "[blowfish]" when using blowfish, etc. When writing an undo file, the same key and method will be used for the text in the undo file. |persistent-undo|. +To test for blowfish support you can use these conditions: > + has('crypt-blowfish') + has('crypt-blowfish2') +This works since Vim 7.4.1099 while blowfish support was added earlier. +Thus the condition failing doesn't mean blowfish is not supported. You can +test for blowfish with: > + v:version >= 703 +And for blowfish2 with: > + v:version > 704 || (v:version == 704 && has('patch401')) +< *E817* *E818* *E819* *E820* When encryption does not work properly, you would be able to write your text to a file and never be able to read it back. Therefore a test is performed to diff --git a/en/eval.txt b/en/eval.txt index 5f4f5e61a..959098abb 100644 --- a/en/eval.txt +++ b/en/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.4. Last change: 2015 Jun 26 +*eval.txt* For Vim version 7.4. Last change: 2016 Jan 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -68,14 +68,16 @@ the Number. Examples: Number 0 --> String "0" ~ Number -1 --> String "-1" ~ *octal* -Conversion from a String to a Number is done by converting the first digits -to a number. Hexadecimal "0xf9" and Octal "017" numbers are recognized. If -the String doesn't start with digits, the result is zero. Examples: +Conversion from a String to a Number is done by converting the first digits to +a number. Hexadecimal "0xf9", Octal "017", and Binary "0b10" numbers are +recognized. If the String doesn't start with digits, the result is zero. +Examples: String "456" --> Number 456 ~ String "6bar" --> Number 6 ~ String "foo" --> Number 0 ~ String "0xf1" --> Number 241 ~ String "0100" --> Number 64 ~ + String "0b101" --> Number 5 ~ String "-8" --> Number -8 ~ String "+8" --> Number 0 ~ @@ -101,6 +103,9 @@ When mixing Number and Float the Number is converted to Float. Otherwise there is no automatic conversion of Float. You can use str2float() for String to Float, printf() for Float to String and float2nr() for Float to Number. + *E891* *E892* *E893* *E894* +When expecting a Float a Number can also be used, but nothing else. + *E706* *sticky-type-checking* You will get an error if you try to change the type of a variable. You need to |:unlet| it first to avoid this error. String and Number are considered @@ -865,13 +870,13 @@ expr1'th single byte from expr8. expr8 is used as a String, expr1 as a Number. This doesn't recognize multi-byte encodings, see |byteidx()| for an alternative. -Index zero gives the first character. This is like it works in C. Careful: -text column numbers start with one! Example, to get the character under the +Index zero gives the first byte. This is like it works in C. Careful: +text column numbers start with one! Example, to get the byte under the cursor: > :let c = getline(".")[col(".") - 1] If the length of the String is less than the index, the result is an empty -String. A negative index always results in an empty string (reason: backwards +String. A negative index always results in an empty string (reason: backward compatibility). Use [-1:] to get the last byte. If expr8 is a |List| then it results the item at index expr1. See |list-index| @@ -917,6 +922,11 @@ just above, except that indexes out of range cause an error. Examples: > Using expr8[expr1] or expr8[expr1a : expr1b] on a |Funcref| results in an error. +Watch out for confusion between a namespace and a variable followed by a colon +for a sublist: > + mylist[n:] " uses variable n + mylist[s:] " uses namespace s:, error! + expr8.name entry in a |Dictionary| *expr-entry* @@ -1330,6 +1340,12 @@ v:cmdbang Set like v:cmdarg for a file read/write command. When a "!" can only be used in autocommands. For user commands |<bang>| can be used. + *v:completed_item* *completed_item-variable* +v:completed_item + |Dictionary| containing the |complete-items| for the most + recently completed word after |CompleteDone|. The + |Dictionary| is empty if the completion failed. + *v:count* *count-variable* v:count The count given for the last Normal mode command. Can be used to get the count before a mapping. Read-only. Example: > @@ -1373,6 +1389,15 @@ v:errmsg Last given error message. It's allowed to set this variable. : ... handle error < "errmsg" also works, for backwards compatibility. + *v:errors* *errors-variable* +v:errors Errors found by assert functions, such as |assert_true()|. + This is a list of strings. + The assert functions append an item when an assert fails. + To remove old results make it empty: > + :let v:errors = [] +< If v:errors is set to anything but a list it is made an empty + list by the assert function. + *v:exception* *exception-variable* v:exception The value of the exception most recently caught and not finished. See also |v:throwpoint| and |throw-variables|. @@ -1384,6 +1409,13 @@ v:exception The value of the exception most recently caught and not :endtry < Output: "caught oops". + *v:false* *false-variable* +v:false A Number with value zero. Used to put "false" in JSON. See + |jsonencode()|. + When used as a string this evaluates to "false". > + echo v:false +< false ~ + *v:fcs_reason* *fcs_reason-variable* v:fcs_reason The reason why the |FileChangedShell| event was triggered. Can be used in an autocommand to decide what to do and/or what @@ -1460,9 +1492,11 @@ v:foldstart Used for 'foldtext': first line of closed fold. v:hlsearch Variable that indicates whether search highlighting is on. Setting it makes sense only if 'hlsearch' is enabled which requires |+extra_search|. Setting this variable to zero acts - the like |:nohlsearch| command, setting it to one acts like > + like the |:nohlsearch| command, setting it to one acts like > let &hlsearch = &hlsearch -< +< Note that the value is restored when returning from a + function. |function-search-undo|. + *v:insertmode* *insertmode-variable* v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand events. Values: @@ -1515,6 +1549,22 @@ v:mouse_col Column number for a mouse click obtained with |getchar()|. This is the screen column number, like with |virtcol()|. The value is zero when there was no mouse button click. + *v:none* *none-variable* +v:none An empty String. Used to put an empty item in JSON. See + |jsonencode()|. + When used as a number this evaluates to zero. + When used as a string this evaluates to "none". > + echo v:none +< none ~ + + *v:null* *null-variable* +v:null An empty String. Used to put "null" in JSON. See + |jsonencode()|. + When used as a number this evaluates to zero. + When used as a string this evaluates to "null". > + echo v:null +< null ~ + *v:oldfiles* *oldfiles-variable* v:oldfiles List of file names that is loaded from the |viminfo| file on startup. These are the files that Vim remembers marks for. @@ -1680,6 +1730,12 @@ v:throwpoint The point where the exception most recently caught and not :endtry < Output: "Exception from test.vim, line 2" + *v:true* *true-variable* +v:true A Number with value one. Used to put "true" in JSON. See + |jsonencode()|. + When used as a string this evaluates to "true". > + echo v:true +< true ~ *v:val* *val-variable* v:val Value of the current item of a |List| or |Dictionary|. Only valid while evaluating the expression used with |map()| and @@ -1720,15 +1776,22 @@ USAGE RESULT DESCRIPTION ~ abs( {expr}) Float or Number absolute value of {expr} acos( {expr}) Float arc cosine of {expr} add( {list}, {item}) List append {item} to |List| {list} +alloc_fail( {id}, {countdown}, {repeat}) + none make memory allocation fail and( {expr}, {expr}) Number bitwise AND append( {lnum}, {string}) Number append {string} below line {lnum} append( {lnum}, {list}) Number append lines {list} below line {lnum} argc() Number number of files in the argument list argidx() Number current index in the argument list -arglistid( [{winnr}, [ {tabnr}]]) +arglistid( [{winnr} [, {tabnr}]]) Number argument list id argv( {nr}) String {nr} entry of the argument list argv( ) List the argument list +assert_equal( {exp}, {act} [, {msg}]) none assert {exp} equals {act} +assert_exception({error} [, {msg}]) none assert {error} is in v:exception +assert_fails( {cmd} [, {error}]) none assert {cmd} fails +assert_false( {actual} [, {msg}]) none assert {actual} is false +assert_true( {actual} [, {msg}]) none assert {actual} is true asin( {expr}) Float arc sine of {expr} atan( {expr}) Float arc tangent of {expr} atan2( {expr}, {expr}) Float arc tangent of {expr1} / {expr2} @@ -1757,6 +1820,8 @@ complete_add( {expr}) Number add completion match complete_check() Number check for key typed during completion confirm( {msg} [, {choices} [, {default} [, {type}]]]) Number number of choice picked by user +connect( {address}, {mode} [, {callback}]) + Number open a channel copy( {expr}) any make a shallow copy of {expr} cos( {expr}) Float cosine of {expr} cosh( {expr}) Float hyperbolic cosine of {expr} @@ -1768,7 +1833,7 @@ cursor( {lnum}, {col} [, {off}]) Number move cursor to {lnum}, {col}, {off} cursor( {list}) Number move cursor to position in {list} deepcopy( {expr} [, {noref}]) any make a full copy of {expr} -delete( {fname}) Number delete file {fname} +delete( {fname} [, {flags}]) Number delete the file or directory {fname} did_filetype() Number TRUE if FileType autocommand event used diff_filler( {lnum}) Number diff filler lines about {lnum} diff_hlID( {lnum}, {col}) Number diff highlighting at {lnum}/{col} @@ -1814,12 +1879,13 @@ getbufvar( {expr}, {varname} [, {def}]) any variable {varname} in buffer {expr} getchar( [expr]) Number get one character from the user getcharmod( ) Number modifiers for the last typed character +getcharsearch() Dict last character search getcmdline() String return the current command-line getcmdpos() Number return cursor position in command-line getcmdtype() String return current command-line type getcmdwintype() String return current command-line window type getcurpos() List position of the cursor -getcwd() String the current working directory +getcwd( [{winnr} [, {tabnr}]]) String get the current working directory getfontname( [{name}]) String name of font being used getfperm( {fname}) String file permissions of file {fname} getfsize( {fname}) Number size in bytes of file {fname} @@ -1850,7 +1916,8 @@ globpath( {path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]]) String do glob({expr}) for all dirs in {path} has( {feature}) Number TRUE if feature {feature} supported has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} -haslocaldir() Number TRUE if current window executed |:lcd| +haslocaldir( [{winnr} [, {tabnr}]]) + Number TRUE if the window executed |:lcd| hasmapto( {what} [, {mode} [, {abbr}]]) Number TRUE if mapping to {what} exists histadd( {history},{item}) String add an item to a history @@ -1877,6 +1944,8 @@ isdirectory( {directory}) Number TRUE if {directory} is a directory islocked( {expr}) Number TRUE if {expr} is locked items( {dict}) List key-value pairs in {dict} join( {list} [, {sep}]) String join {list} items into one String +jsondecode( {string}) any decode JSON +jsonencode( {expr}) String encode JSON keys( {dict}) List keys in {dict} len( {expr}) Number the length of {expr} libcall( {lib}, {func}, {arg}) String call {func} in library {lib} with {arg} @@ -1918,6 +1987,7 @@ nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum} nr2char( {expr}[, {utf8}]) String single char with ASCII/UTF8 value {expr} or( {expr}, {expr}) Number bitwise OR pathshorten( {expr}) String shorten directory names in a path +perleval( {expr}) any evaluate |Perl| expression pow( {x}, {y}) Float {x} to the power of {y} prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum} printf( {fmt}, {expr1}...) String format text @@ -1959,10 +2029,15 @@ searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [...]]]) List search for other end of start/end pair searchpos( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) List search for {pattern} +sendexpr( {handle}, {expr} [, {callback}]) + any send {expr} over JSON channel {handle} +sendraw( {handle}, {string} [, {callback}]) + any send {string} over raw channel {handle} server2client( {clientid}, {string}) Number send reply string serverlist() String get a list of available servers setbufvar( {expr}, {varname}, {val}) set {varname} in buffer {expr} to {val} +setcharsearch( {dict}) Dict set character search from {dict} setcmdpos( {pos}) Number set cursor position in command-line setline( {lnum}, {line}) Number set line {lnum} to {line} setloclist( {nr}, {list}[, {action}]) @@ -2051,6 +2126,7 @@ winrestcmd() String returns command to restore window sizes winrestview( {dict}) none restore view of current window winsaveview() Dict save view of current window winwidth( {nr}) Number width of window {nr} +wordcount() Dict get byte/char/word statistics writefile( {list}, {fname} [, {flags}]) Number write list of lines to file {fname} xor( {expr}, {expr}) Number bitwise XOR @@ -2093,6 +2169,13 @@ add({list}, {expr}) *add()* Use |insert()| to add an item at another position. +alloc_fail({id}, {countdown}, {repeat}) *alloc_fail()* + This is for testing: If the memory allocation with {id} is + called, then decrement {countdown}, and when it reaches zero + let memory allocation fail {repeat} times. When {repeat} is + smaller than one it fails one time. + + and({expr}, {expr}) *and()* Bitwise AND on the two arguments. The arguments are converted to a number. A List, Dict or Float argument causes an error. @@ -2144,6 +2227,55 @@ argv([{nr}]) The result is the {nr}th file in the argument list of the < Without the {nr} argument a |List| with the whole |arglist| is returned. + *assert_equal()* +assert_equal({expected}, {actual} [, {msg}]) + When {expected} and {actual} are not equal an error message is + added to |v:errors|. + There is no automatic conversion, the String "4" is different + from the Number 4. And the number 4 is different from the + Float 4.0. The value of 'ignorecase' is not used here, case + always matters. + When {msg} is omitted an error in the form "Expected + {expected} but got {actual}" is produced. + Example: > + assert_equal('foo', 'bar') +< Will result in a string to be added to |v:errors|: + test.vim line 12: Expected 'foo' but got 'bar' ~ + +assert_exception({error} [, {msg}]) *assert_exception()* + When v:exception does not contain the string {error} an error + message is added to |v:errors|. + This can be used to assert that a command throws an exception. + Using the error number, followed by a colon, avoids problems + with translations: > + try + commandthatfails + call assert_false(1, 'command should have failed') + catch + call assert_exception('E492:') + endtry + +assert_fails({cmd} [, {error}]) *assert_fails()* + Run {cmd} and add an error message to |v:errors| if it does + NOT produce an error. + When {error} is given it must match |v:errmsg|. + +assert_false({actual} [, {msg}]) *assert_false()* + When {actual} is not false an error message is added to + |v:errors|, like with |assert_equal()|. + A value is false when it is zero. When "{actual}" is not a + number the assert fails. + When {msg} is omitted an error in the form "Expected False but + got {actual}" is produced. + +assert_true({actual} [, {msg}]) *assert_true()* + When {actual} is not true an error message is added to + |v:errors|, like with |assert_equal()|. + A value is true when it is a non-zero number. When {actual} + is not a number the assert fails. + When {msg} is omitted an error in the form "Expected True but + got {actual}" is produced. + asin({expr}) *asin()* Return the arc sine of {expr} measured in radians, as a |Float| in the range of [-pi/2, pi/2]. @@ -2534,6 +2666,18 @@ confirm({msg} [, {choices} [, {default} [, {type}]]]) don't fit, a vertical layout is used anyway. For some systems the horizontal layout is always used. +connect({address}, {mode} [, {callback}]) *connect()* + Open a channel to {address}. See |channel|. + + {address} has the form "hostname:port", e.g., + "localhost:8765". + + {mode} is either "json" or "raw". See |channel-mode| for the + meaning. + + {callback} is a function that handles received messages on the + channel. See |channel-callback|. + *copy()* copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't different from using {expr} directly. @@ -2663,10 +2807,20 @@ deepcopy({expr}[, {noref}]) *deepcopy()* *E698* {noref} set to 1 will fail. Also see |copy()|. -delete({fname}) *delete()* - Deletes the file by the name {fname}. The result is a Number, - which is 0 if the file was deleted successfully, and non-zero - when the deletion failed. +delete({fname} [, {flags}]) *delete()* + Without {flags} or with {flags} empty: Deletes the file by the + name {fname}. This also works when {fname} is a symbolic link. + + When {flags} is "d": Deletes the directory by the name + {fname}. This fails when directory {fname} is not empty. + + When {flags} is "rf": Deletes the directory by the name + {fname} and everything in it, recursively. BE CAREFUL! + A symbolic link itself is deleted, not what it points to. + + The result is a Number, which is 0 if the delete operation was + successful and -1 when the deletion failed or partly failed. + Use |remove()| to delete an item from a |List|. To delete a line from the buffer use |:delete|. Use |:exe| when the line number is in a variable. @@ -2706,6 +2860,7 @@ empty({expr}) *empty()* Return the Number 1 if {expr} is empty, zero otherwise. A |List| or |Dictionary| is empty when it does not have any items. A Number is empty when its value is zero. + |v:false|, |v:none| and |v:null| are empty, |v:true| is not. For a long |List| this is much faster than comparing the length with zero. @@ -2997,6 +3152,11 @@ feedkeys({string} [, {mode}]) *feedkeys()* if coming from a mapping. This matters for undo, opening folds, etc. 'i' Insert the string instead of appending (see above). + 'x' Execute commands until typeahead is empty. This is + similar to using ":normal!". You can call feedkeys() + several times without 'x' and then one time with 'x' + (possibly with an empty {string}) to execute all the + typeahead. Return value is always 0. filereadable({file}) *filereadable()* @@ -3353,6 +3513,26 @@ getcharmod() *getcharmod()* character itself are obtained. Thus Shift-a results in "A" without a modifier. +getcharsearch() *getcharsearch()* + Return the current character search information as a {dict} + with the following entries: + + char character previously used for a character + search (|t|, |f|, |T|, or |F|); empty string + if no character search has been performed + forward direction of character search; 1 for forward, + 0 for backward + until type of character search; 1 for a |t| or |T| + character search, 0 for an |f| or |F| + character search + + This can be useful to always have |;| and |,| search + forward/backward regardless of the direction of the previous + character search: > + :nnoremap <expr> ; getcharsearch().forward ? ';' : ',' + :nnoremap <expr> , getcharsearch().forward ? ',' : ';' +< Also see |setcharsearch()|. + getcmdline() *getcmdline()* Return the current command-line. Only works when the command line is being edited, thus requires use of |c_CTRL-\_e| or @@ -3392,7 +3572,7 @@ getcmdwintype() *getcmdwintype()* *getcurpos()* getcurpos() Get the position of the cursor. This is like getpos('.'), but includes an extra item in the list: - [bufnum, lnum, col, off, curswant] + [bufnum, lnum, col, off, curswant] ~ The "curswant" number is the preferred column when moving the cursor vertically. This can be used to save and restore the cursor position: > @@ -3401,8 +3581,16 @@ getcurpos() Get the position of the cursor. This is like getpos('.'), but call setpos('.', save_cursor) < *getcwd()* -getcwd() The result is a String, which is the name of the current +getcwd([{winnr} [, {tabnr}]]) + The result is a String, which is the name of the current working directory. + Without arguments, for the current window. + + With {winnr} return the local current directory of this window + in the current tab page. + With {winnr} and {tabnr} return the local current directory of + the window in the specified tab page. + Return an empty string if the arguments are invalid. getfsize({fname}) *getfsize()* The result is a Number, which is the size in bytes of the @@ -3466,7 +3654,8 @@ getftype({fname}) *getftype()* getftype("/home") < Note that a type such as "link" will only be returned on systems that support it. On some systems only "dir" and - "file" are returned. + "file" are returned. On MS-Windows a symbolic link to a + directory returns "dir" instead of "link". *getline()* getline({lnum} [, {end}]) @@ -3690,7 +3879,9 @@ glob2regpat({expr}) *glob2regpat()* if filename =~ glob2regpat('Make*.mak') < This is equivalent to: > if filename =~ '^Make.*\.mak$' -< +< When {expr} is an empty string the result is "^$", match an + empty string. + *globpath()* globpath({path}, {expr} [, {nosuf} [, {list} [, {allinks}]]]) Perform glob() on all directories in {path} and concatenate @@ -3738,9 +3929,15 @@ has_key({dict}, {key}) *has_key()* The result is a Number, which is 1 if |Dictionary| {dict} has an entry with key {key}. Zero otherwise. -haslocaldir() *haslocaldir()* - The result is a Number, which is 1 when the current - window has set a local path via |:lcd|, and 0 otherwise. +haslocaldir([{winnr} [, {tabnr}]]) *haslocaldir()* + The result is a Number, which is 1 when the window has set a + local path via |:lcd|, and 0 otherwise. + + Without arguments use the current window. + With {winnr} use this window in the current tab page. + With {winnr} and {tabnr} use the window in the specified tab + page. + Return 0 if the arguments are invalid. hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()* The result is a Number, which is 1 if there is a mapping that @@ -4070,6 +4267,48 @@ join({list} [, {sep}]) *join()* converted into a string like with |string()|. The opposite function is |split()|. +jsondecode({string}) *jsondecode()* + This parses a JSON formatted string and returns the equivalent + in Vim values. See |jsonencode()| for the relation between + JSON and Vim values. + The decoding is permissive: + - A trailing comma in an array and object is ignored. + - An empty item in an array, two commas with nothing or white + space in between, results in v:none. + - When an object member name is not a string it is converted + to a string. E.g. the number 123 is used as the string + "123". + - More floating point numbers are recognized, e.g. "1." for + "1.0". + The result must be a valid Vim type: + - An empty object member name is not allowed. + - Duplicate object member names are not allowed. + +jsonencode({expr}) *jsonencode()* + Encode {expr} as JSON and return this as a string. + The encoding is specified in: + https://tools.ietf.org/html/rfc7159.html + Vim values are converted as follows: + Number decimal number + Float floating point number + String in double quotes (possibly null) + Funcref not possible, error + List as an array (possibly null); when + used recursively: [] + Dict as an object (possibly null); when + used recursively: {} + v:false "false" + v:true "true" + v:none nothing + v:null "null" + Note that using v:none is permitted, although the JSON + standard does not allow empty items. This can be useful for + omitting items in an array: + [0,,,,,5] ~ + This is much more efficient than: + [0,null,null,null,null,5] ~ + But a strict JSON parser will not accept it. + keys({dict}) *keys()* Return a |List| with all the keys of {dict}. The |List| is in arbitrary order. @@ -4397,7 +4636,7 @@ match({expr}, {pat}[, {start}[, {count}]]) *match()* done like 'magic' is set and 'cpoptions' is empty. *matchadd()* *E798* *E799* *E801* -matchadd({group}, {pattern}[, {priority}[, {id}]]) +matchadd({group}, {pattern}[, {priority}[, {id} [, {dict}]]]) Defines a pattern to be highlighted in the current window (a "match"). It will be highlighted with {group}. Returns an identification number (ID), which can be used to delete the @@ -4405,6 +4644,8 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) Matching is case sensitive and magic, unless case sensitivity or magicness are explicitly overridden in {pattern}. The 'magic', 'smartcase' and 'ignorecase' options are not used. + The "Conceal" value is special, it causes the match to be + concealed. The optional {priority} argument assigns a priority to the match. A match with a high priority will have its @@ -4422,9 +4663,18 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) message will appear and the match will not be added. An ID is specified as a positive integer (zero excluded). IDs 1, 2 and 3 are reserved for |:match|, |:2match| and |:3match|, - respectively. If the {id} argument is not specified, + respectively. If the {id} argument is not specified or -1, |matchadd()| automatically chooses a free ID. + The optional {dict} argument allows for further custom + values. Currently this is used to specify a match specific + conceal character that will be shown for |hl-Conceal| + highlighted matches. The dict can have the following members: + + conceal Special character to show instead of the + match (only for |hl-Conceal| highlighed + matches, see |:syn-cchar|) + The number of matches is not limited, as it is the case with the |:match| commands. @@ -4438,7 +4688,7 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) available from |getmatches()|. All matches can be deleted in one operation by |clearmatches()|. -matchaddpos({group}, {pos}[, {priority}[, {id}]]) *matchaddpos()* +matchaddpos({group}, {pos}[, {priority}[, {id}[, {dict}]]]) *matchaddpos()* Same as |matchadd()|, but requires a list of positions {pos} instead of a pattern. This command is faster than |matchadd()| because it does not require to handle regular expressions and @@ -4647,6 +4897,17 @@ pathshorten({expr}) *pathshorten()* < ~/.v/a/myfile.vim ~ It doesn't matter if the path exists or not. +perleval({expr}) *perleval()* + Evaluate Perl expression {expr} in scalar context and return + its result converted to Vim data structures. If value can't be + converted, it is returned as a string Perl representation. + Note: If you want an array or hash, {expr} must return a + reference to it. + Example: > + :echo perleval('[1 .. 4]') +< [1, 2, 3, 4] + {only available when compiled with the |+perl| feature} + pow({x}, {y}) *pow()* Return the power of {x} to the exponent {y} as a |Float|. {x} and {y} must evaluate to a |Float| or a |Number|. @@ -5144,14 +5405,15 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* move. No error message is given. {flags} is a String, which can contain these character flags: - 'b' search backward instead of forward - 'c' accept a match at the cursor position + 'b' search Backward instead of forward + 'c' accept a match at the Cursor position 'e' move to the End of the match 'n' do Not move the cursor - 'p' return number of matching sub-pattern (see below) - 's' set the ' mark at the previous location of the cursor - 'w' wrap around the end of the file - 'W' don't wrap around the end of the file + 'p' return number of matching sub-Pattern (see below) + 's' Set the ' mark at the previous location of the cursor + 'w' Wrap around the end of the file + 'W' don't Wrap around the end of the file + 'z' start searching at the cursor column instead of zero If neither 'w' or 'W' is given, the 'wrapscan' option applies. If the 's' flag is supplied, the ' mark is set, only if the @@ -5159,6 +5421,12 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* flag. 'ignorecase', 'smartcase' and 'magic' are used. + + When the 'z' flag is not given, searching always starts in + column zero and then matches before the cursor are skipped. + When the 'c' flag is present in 'cpo' the next search starts + after the match. Without the 'c' flag the next search starts + one column further. When the {stopline} argument is given then the search stops after searching this line. This is useful to restrict the @@ -5345,6 +5613,23 @@ searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *searchpos()* < In this example "submatch" is 2 when a lowercase letter is found |/\l|, 3 when an uppercase letter is found |/\u|. +sendexpr({handle}, {expr} [, {callback}]) *sendexpr()* + Send {expr} over JSON channel {handle}. See |channel-use|. + + When {callback} is given returns immediately. Without + {callback} waits for a JSON response and returns the decoded + expression. When there is an error or timeout returns an + empty string. + + When {callback} is zero no response is expected. + Otherwise {callback} must be a Funcref or the name of a + function. It is called when the response is received. See + |channel-callback|. + +sendraw({handle}, {string} [, {callback}]) *sendraw()* + Send {string} over raw channel {handle}. See |channel-raw|. + Works like |sendexpr()|, but does not decode the response. + server2client( {clientid}, {string}) *server2client()* Send a reply string to {clientid}. The most recent {clientid} that sent a string can be retrieved with expand("<client>"). @@ -5378,6 +5663,26 @@ setbufvar({expr}, {varname}, {val}) *setbufvar()* :call setbufvar("todo", "myvar", "foobar") < This function is not available in the |sandbox|. +setcharsearch({dict}) *setcharsearch()* + Set the current character search information to {dict}, + which contains one or more of the following entries: + + char character which will be used for a subsequent + |,| or |;| command; an empty string clears the + character search + forward direction of character search; 1 for forward, + 0 for backward + until type of character search; 1 for a |t| or |T| + character search, 0 for an |f| or |F| + character search + + This can be useful to save/restore a user's character search + from a script: > + :let prevsearch = getcharsearch() + :" Perform a command which clobbers user's search + :call setcharsearch(prevsearch) +< Also see |getcharsearch()|. + setcmdpos({pos}) *setcmdpos()* Set the cursor position in the command line to byte position {pos}. The first position is 1. @@ -5627,18 +5932,8 @@ shellescape({string} [, {special}]) *shellescape()* shiftwidth() *shiftwidth()* Returns the effective value of 'shiftwidth'. This is the 'shiftwidth' value unless it is zero, in which case it is the - 'tabstop' value. To be backwards compatible in indent - plugins, use this: > - if exists('*shiftwidth') - func s:sw() - return shiftwidth() - endfunc - else - func s:sw() - return &sw - endfunc - endif -< And then use s:sw() instead of &sw. + 'tabstop' value. This function was introduced with patch + 7.3.694 in 2012, everybody should have it by now. simplify({filename}) *simplify()* @@ -5699,6 +5994,13 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702* strtod() function to parse numbers, Strings, Lists, Dicts and Funcrefs will be considered as being 0). + When {func} is given and it is 'N' then all items will be + sorted numerical. This is like 'n' but a string containing + digits will be used as the number they represent. + + When {func} is given and it is 'f' then all items will be + sorted numerical. All values must be a Number or a Float. + When {func} is a |Funcref| or a function name, this function is called to compare items. The function is invoked with two items as argument and must return zero if they are equal, 1 or @@ -5800,7 +6102,8 @@ split({expr} [, {pattern} [, {keepempty}]]) *split()* :let words = split(getline('.'), '\W\+') < To split a string in individual characters: > :for c in split(mystring, '\zs') -< If you want to keep the separator you can also use '\zs': > +< If you want to keep the separator you can also use '\zs' at + the end of the pattern: > :echo split('abc:def:ghi', ':\zs') < ['abc:', 'def:', 'ghi'] ~ Splitting a table where the first element can be empty: > @@ -5839,12 +6142,14 @@ str2float( {expr}) *str2float()* str2nr( {expr} [, {base}]) *str2nr()* Convert string {expr} to a number. - {base} is the conversion base, it can be 8, 10 or 16. + {base} is the conversion base, it can be 2, 8, 10 or 16. When {base} is omitted base 10 is used. This also means that a leading zero doesn't cause octal conversion to be used, as with the default String to Number conversion. When {base} is 16 a leading "0x" or "0X" is ignored. With a - different base the result will be zero. + different base the result will be zero. Similarly, when + {base} is 8 a leading "0" is ignored, and when {base} is 2 a + leading "0b" or "0B" is ignored. Text after the number is silently ignored. @@ -5856,6 +6161,24 @@ strchars({expr} [, {skipcc}]) *strchars()* When {skipcc} set to 1, Composing characters are ignored. Also see |strlen()|, |strdisplaywidth()| and |strwidth()|. + + {skipcc} is only available after 7.4.755. For backward + compatibility, you can define a wrapper function: > + if has("patch-7.4.755") + function s:strchars(str, skipcc) + return strchars(a:str, a:skipcc) + endfunction + else + function s:strchars(str, skipcc) + if a:skipcc + return strlen(substitute(a:str, ".", "x", "g")) + else + return strchars(a:str) + endif + endfunction + endif +< + strdisplaywidth({expr}[, {col}]) *strdisplaywidth()* The result is a Number, which is the number of display cells String {expr} occupies on the screen when it starts at {col}. @@ -6042,6 +6365,9 @@ synID({lnum}, {col}, {trans}) *synID()* {col} is 1 for the leftmost column, {lnum} is 1 for the first line. 'synmaxcol' applies, in a longer line zero is returned. + Note that when the position is after the last character, + that's where the cursor can be in Insert mode, synID() returns + zero. When {trans} is non-zero, transparent items are reduced to the item that they reveal. This is useful when wanting to know @@ -6351,6 +6677,8 @@ type({expr}) The result is a Number, depending on the type of {expr}: List: 3 Dictionary: 4 Float: 5 + Boolean: 6 (v:false and v:true) + None 7 (v:null and v:none) To avoid the magic numbers it should be used this way: > :if type(myvar) == type(0) :if type(myvar) == type("") @@ -6358,6 +6686,8 @@ type({expr}) The result is a Number, depending on the type of {expr}: :if type(myvar) == type([]) :if type(myvar) == type({}) :if type(myvar) == type(0.0) + :if type(myvar) == type(v:false) + :if type(myvar) == type(v:none undofile({name}) *undofile()* Return the name of the undo file that would be used for a file @@ -6603,6 +6933,28 @@ winwidth({nr}) *winwidth()* : exe "normal 50\<C-W>|" :endif < +wordcount() *wordcount()* + The result is a dictionary of byte/chars/word statistics for + the current buffer. This is the same info as provided by + |g_CTRL-G| + The return value includes: + bytes Number of bytes in the buffer + chars Number of chars in the buffer + words Number of words in the buffer + cursor_bytes Number of bytes before cursor position + (not in Visual mode) + cursor_chars Number of chars before cursor position + (not in Visual mode) + cursor_words Number of words before cursor position + (not in Visual mode) + visual_bytes Number of bytes visually selected + (only in Visual mode) + visual_chars Number of chars visually selected + (only in Visual mode) + visual_words Number of chars visually selected + (only in Visual mode) + + *writefile()* writefile({list}, {fname} [, {flags}]) Write |List| {list} to file {fname}. Each list item is @@ -7446,7 +7798,7 @@ This does NOT work: > From Vim version 4.5 until 5.0, every Ex command in between the ":if" and ":endif" is ignored. These two commands were just to allow for future expansions in a - backwards compatible way. Nesting was allowed. Note + backward compatible way. Nesting was allowed. Note that any ":else" or ":elseif" was ignored, the "else" part was not executed either. diff --git a/en/filetype.txt b/en/filetype.txt index 540ebb476..11ccdc505 100644 --- a/en/filetype.txt +++ b/en/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.4. Last change: 2015 Nov 28 +*filetype.txt* For Vim version 7.4. Last change: 2015 Dec 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -581,6 +581,9 @@ q Same as ":quit" To enable folding use this: > let g:ft_man_folding_enable = 1 +If you do not like the default folding, use an autocommand to add your desired +folding style instead. For example: > + autocmd FileType man setlocal foldmethod=indent foldenable PDF *ft-pdf-plugin* diff --git a/en/fold.txt b/en/fold.txt index 20017d353..96e46f5a1 100644 --- a/en/fold.txt +++ b/en/fold.txt @@ -1,4 +1,4 @@ -*fold.txt* For Vim version 7.4. Last change: 2013 Dec 04 +*fold.txt* For Vim version 7.4. Last change: 2016 Jan 02 VIM REFERENCE MANUAL by Bram Moolenaar @@ -97,9 +97,9 @@ These are the conditions with which the expression is evaluated: lowest. "=" use fold level from the previous line "a1", "a2", .. add one, two, .. to the fold level of the previous - line + line, use the result for the current line "s1", "s2", .. subtract one, two, .. from the fold level of the - previous line + previous line, use the result for the next line "<1", "<2", .. a fold with this level ends at this line ">1", ">2", .. a fold with this level starts at this line @@ -122,6 +122,18 @@ method can be very slow! Try to avoid the "=", "a" and "s" return values, since Vim often has to search backwards for a line for which the fold level is defined. This can be slow. +An example of using "a1" and "s1": For a multi-line C comment, a line +containing "/*" would return "a1" to start a fold, and a line containing "*/" +would return "s1" to end the fold after that line: > + if match(thisline, '/\*') >= 0 + return 'a1' + elseif match(thisline, '\*/') >= 0 + return 's1' + else + return '=' + endif +However, this won't work for single line comments, strings, etc. + |foldlevel()| can be useful to compute a fold level relative to a previous fold level. But note that foldlevel() may return -1 if the level is not known yet. And it returns the level at the start of the line, while a fold might @@ -573,8 +585,9 @@ what you type! When using an operator, a closed fold is included as a whole. Thus "dl" deletes the whole closed fold under the cursor. -For Ex commands the range is adjusted to always start at the first line of a -closed fold and end at the last line of a closed fold. Thus this command: > +For Ex commands that work on buffer lines the range is adjusted to always +start at the first line of a closed fold and end at the last line of a closed +fold. Thus this command: > :s/foo/bar/g when used with the cursor on a closed fold, will replace "foo" with "bar" in all lines of the fold. diff --git a/en/hangulin.txt b/en/hangulin.txt index 79ebff110..99ce6fded 100644 --- a/en/hangulin.txt +++ b/en/hangulin.txt @@ -1,11 +1,8 @@ -*hangulin.txt* For Vim version 7.4. Last change: 2009 Jun 24 +*hangulin.txt* For Vim version 7.4. Last change: 2015 Nov 24 VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam -NOTE: The |+hangul_input| feature is scheduled to be removed. If you want to -keep it, please send a message to the Vim user maillist. - Introduction *hangul* ------------ @@ -17,7 +14,8 @@ Compile ------- Next is a basic option. You can add any other configure option. > - ./configure --with-x --enable-multibyte --enable-fontset --enable-hangulinput + ./configure --with-x --enable-multibyte --enable-hangulinput \ + --disable-xim And you should check feature.h. If |+hangul_input| feature is enabled by configure, you can select more options such as keyboard type, 2 bulsik @@ -26,18 +24,21 @@ or 3 bulsik. You can find keywords like next in there. > #define HANGUL_DEFAULT_KEYBOARD 2 #define ESC_CHG_TO_ENG_MODE /* #define X_LOCALE */ - /* #define SLOW_XSERVER */ Environment variables --------------------- -You should set LANG variable to Korean locale such as ko or ko_KR.euc. +You should set LANG variable to Korean locale such as ko, ko_KR.eucKR +or ko_KR.UTF-8. If you set LC_ALL variable, it should be set to Korean locale also. VIM resource ------------ -You should add nexts to your global vimrc ($HOME/.vimrc). > +You may want to set 'encoding' and 'fileencodings'. +Next are examples: > - :set fileencoding=korea + :set encoding=euc-kr + :set encoding=utf-8 + :set fileencodings=ucs-bom,utf-8,cp949,euc-kr,latin1 Keyboard -------- @@ -52,8 +53,16 @@ If both are set, VIM_KEYBOARD has higher priority. Hangul Fonts ------------ -You can set text font using $HOME/.Xdefaults or in your gvimrc file. -But to use Hangul, you should set 'guifontset' in your vimrc. +If you use GTK version of GVIM, you should set 'guifont' and 'guifontwide'. +For example: > + set guifont=Courier\ 12 + set guifontwide=NanumGothicCoding\ 12 + +If you use Motif or Athena version of GVIM, you should set 'guifontset' in +your vimrc. You can set fontset in the .Xdefaults file. + +$HOME/.gvimrc: > + set guifontset=english_font,hangul_font $HOME/.Xdefaults: > Vim.font: english_font @@ -66,40 +75,38 @@ $HOME/.Xdefaults: > *international: True Vim*fontList: english_font;hangul_font: -$HOME/.gvimrc: > - set guifontset=english_font,hangul_font - attention! the , (comma) or ; (semicolon) And there should be no ':set guifont'. If it exists, then Gvim ignores ':set guifontset'. It means VIM runs without fontset supporting. So, you can see only English. Hangul does not be correctly displayed. -After 'fontset' feature is enabled, VIM does not allow using 'font'. +After 'fontset' feature is enabled, VIM does not allow using english +font only in 'font' setting for syntax. For example, if you use > :set guifontset=eng_font,your_font in your .gvimrc, then you should do for syntax > :hi Comment guifg=Cyan font=another_eng_font,another_your_font If you just do > :hi Comment font=another_eng_font -then you can see a GOOD error message. Be careful! +then you can see a error message. Be careful! hangul_font width should be twice than english_font width. Unsupported Feature ------------------- -Johab font not yet supported. And I don't have any plan. -If you really want to use johab font, you can use the -hanguldraw.c in gau package. +We don't support Johab font. +We don't support Hanja input. +And We don't have any plan to support them. -Hanja input not yet supported. And I don't have any plan. -If you really want to input hanja, just use VIM with hanterm. +If you really need such features, you can use console version of VIM with a +capable terminal emulator. Bug or Comment -------------- Send comments, patches and suggestions to: - Chi-Deok Hwang <hwang@mizi.co.kr> SungHyun Nam <goweol@gmail.com> + Chi-Deok Hwang <...> vim:tw=78:ts=8:ft=help:norl: diff --git a/en/help.txt b/en/help.txt index 64de957bf..23ad1dc9a 100644 --- a/en/help.txt +++ b/en/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 7.4. Last change: 2015 Jun 21 +*help.txt* For Vim version 7.4. Last change: 2016 Jan 10 VIM - main help file k @@ -10,14 +10,14 @@ Close this window: Use ":q<Enter>". Jump to a subject: Position the cursor on a tag (e.g. |bars|) and hit CTRL-]. With the mouse: ":set mouse=a" to enable the mouse (in xterm or GUI). Double-click the left mouse button on a tag, e.g. |bars|. - Jump back: Type CTRL-T or CTRL-O (repeat to go further back). + Jump back: Type CTRL-T or CTRL-O. Repeat to go further back. Get specific help: It is possible to go directly to whatever you want help on, by giving an argument to the |:help| command. - It is possible to further specify the context: - *help-context* + Prepend something to specify the context: *help-context* + WHAT PREPEND EXAMPLE ~ - Normal mode command (nothing) :help x + Normal mode command :help x Visual mode command v_ :help v_u Insert mode command i_ :help i_<Esc> Command-line command : :help :quit @@ -25,6 +25,8 @@ Get specific help: It is possible to go directly to whatever you want help Vim command argument - :help -r Option ' :help 'textwidth' Regular expression / :help /[ + See |help-summary| for more contexts and an explanation. + Search for help: Type ":help word", then hit CTRL-D to see matching help entries for "word". Or use ":helpgrep word". |:helpgrep| diff --git a/en/if_lua.txt b/en/if_lua.txt index 3d7cf2c8e..e6b8e6804 100644 --- a/en/if_lua.txt +++ b/en/if_lua.txt @@ -1,4 +1,4 @@ -*if_lua.txt* For Vim version 7.4. Last change: 2012 Jun 29 +*if_lua.txt* For Vim version 7.4. Last change: 2015 Oct 16 VIM REFERENCE MANUAL by Luis Carvalho @@ -10,9 +10,11 @@ The Lua Interface to Vim *lua* *Lua* 2. The vim module |lua-vim| 3. List userdata |lua-list| 4. Dict userdata |lua-dict| -5. Buffer userdata |lua-buffer| -6. Window userdata |lua-window| -7. The luaeval function |lua-luaeval| +5. Funcref userdata |lua-funcref| +6. Buffer userdata |lua-buffer| +7. Window userdata |lua-window| +8. The luaeval function |lua-luaeval| +9. Dynamic loading |lua-dynamic| {Vi does not have any of these commands} @@ -110,9 +112,31 @@ input range are stored in "vim.firstline" and "vim.lastline" respectively. The module also includes routines for buffer, window, and current line queries, Vim evaluation and command execution, and others. - vim.list() Returns an empty list (see |List|). - - vim.dict() Returns an empty dictionary (see |Dictionary|). + vim.list([arg]) Returns an empty list or, if "arg" is a Lua + table with numeric keys 1, ..., n (a + "sequence"), returns a list l such that l[i] = + arg[i] for i = 1, ..., n (see |List|). + Non-numeric keys are not used to initialize + the list. See also |lua-eval| for conversion + rules. Example: > + :lua t = {math.pi, false, say = 'hi'} + :echo luaeval('vim.list(t)') + :" [3.141593, 0], 'say' is ignored +< + vim.dict([arg]) Returns an empty dictionary or, if "arg" is a + Lua table, returns a dict d such that d[k] = + arg[k] for all string keys k in "arg" (see + |Dictionary|). Number keys are converted to + strings. Keys that are not strings are not + used to initialize the dictionary. See also + |lua-eval| for conversion rules. Example: > + :lua t = {math.pi, false, say = 'hi'} + :echo luaeval('vim.dict(t)') + :" {'say': 'hi'}, numeric keys ignored +< + vim.funcref({name}) Returns a Funcref to function {name} (see + |Funcref|). It is equivalent to Vim's + "function". NOT IMPLEMENTED YET vim.buffer([arg]) If "arg" is a number, returns buffer with number "arg" in the buffer list or, if "arg" @@ -131,9 +155,9 @@ Vim evaluation and command execution, and others. vim.type({arg}) Returns the type of {arg}. It is equivalent to Lua's "type" function, but returns "list", - "dict", "buffer", or "window" if {arg} is a - list, dictionary, buffer, or window, - respectively. Examples: > + "dict", "funcref", "buffer", or "window" if + {arg} is a list, dictionary, funcref, buffer, + or window, respectively. Examples: > :lua l = vim.list() :lua print(type(l), vim.type(l)) :" userdata list @@ -229,7 +253,40 @@ Examples: < ============================================================================== -5. Buffer userdata *lua-buffer* +5. Funcref userdata *lua-funcref* + +Funcref userdata represent funcref variables in Vim. Funcrefs that were +defined with a "dict" attribute need to be obtained as a dictionary key +in order to have "self" properly assigned to the dictionary (see examples +below.) A funcref "f" has the following properties: + +Properties +---------- + o "#f" is the name of the function referenced by "f" + o "f(...)" calls the function referenced by "f" (with arguments) + +Examples: +> + :function I(x) + : return a:x + : endfunction + :let R = function('I') + :lua i1 = vim.funcref('I') + :lua i2 = vim.eval('R') + :lua print(#i1, #i2) -- both 'I' + :lua print(i1, i2, #i2(i1) == #i1(i2)) + :function Mylen() dict + : return len(self.data) + : endfunction + :let mydict = {'data': [0, 1, 2, 3]} + :lua d = vim.eval('mydict'); d.len = vim.funcref('Mylen') + :echo mydict.len() + :lua l = d.len -- assign d as 'self' + :lua print(l()) +< + +============================================================================== +6. Buffer userdata *lua-buffer* Buffer userdata represent vim buffers. A buffer userdata "b" has the following properties and methods: @@ -281,7 +338,7 @@ Examples: < ============================================================================== -6. Window userdata *lua-window* +7. Window userdata *lua-window* Window objects represent vim windows. A window userdata "w" has the following properties and methods: @@ -313,7 +370,7 @@ Examples: < ============================================================================== -7. The luaeval function *lua-luaeval* *lua-eval* +8. The luaeval function *lua-luaeval* *lua-eval* The (dual) equivalent of "vim.eval" for passing Lua values to Vim is "luaeval". "luaeval" takes an expression string and an optional argument and @@ -325,7 +382,13 @@ returns the result of the expression. It is semantically equivalent in Lua to: return chunk(arg) -- return typval end < -Note that "_A" receives the argument to "luaeval". Examples: > +Note that "_A" receives the argument to "luaeval". Lua numbers, strings, and +list, dict, and funcref userdata are converted to their Vim respective types, +while Lua booleans are converted to numbers. An error is thrown if conversion +of any of the remaining Lua types, including userdata other than lists, dicts, +and funcrefs, is attempted. + +Examples: > :echo luaeval('math.pi') :lua a = vim.list():add('newlist') @@ -337,5 +400,24 @@ Note that "_A" receives the argument to "luaeval". Examples: > :echo Rand(1,10) +============================================================================== +9. Dynamic loading *lua-dynamic* + +On MS-Windows and Unix the Lua library can be loaded dynamically. The +|:version| output then includes |+lua/dyn|. + +This means that Vim will search for the Lua DLL or shared library file only +when needed. When you don't use the Lua interface you don't need it, thus +you can use Vim without this file. + +On MS-Windows to use the Lua interface the Lua DLL must be in your search path. +In a console window type "path" to see what directories are used. The version +of the DLL must match the Lua version Vim was compiled with. + +On Unix the 'luadll' option can be used to specify the Lua shared library file +instead of DYNAMIC_LUA_DLL file what was specified at compile time. The +version of the shared library must match the Lua version Vim was compiled with. + + ============================================================================== vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/en/if_mzsch.txt b/en/if_mzsch.txt index b42570a75..90954d0b4 100644 --- a/en/if_mzsch.txt +++ b/en/if_mzsch.txt @@ -1,4 +1,4 @@ -*if_mzsch.txt* For Vim version 7.4. Last change: 2012 Dec 17 +*if_mzsch.txt* For Vim version 7.4. Last change: 2016 Jan 24 VIM REFERENCE MANUAL by Sergey Khorev @@ -13,6 +13,7 @@ The MzScheme Interface to Vim *mzscheme* *MzScheme* 5. mzeval() Vim function |mzscheme-mzeval| 6. Using Function references |mzscheme-funcref| 7. Dynamic loading |mzscheme-dynamic| +8. MzScheme setup |mzscheme-setup| {Vi does not have any of these commands} @@ -264,7 +265,7 @@ directly from Scheme. For instance: > < ============================================================================== -7. Dynamic loading *mzscheme-dynamic* *E815* +7. Dynamic loading *mzscheme-dynamic* *E815* On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version| output then includes |+mzscheme/dyn|. @@ -272,6 +273,9 @@ output then includes |+mzscheme/dyn|. This means that Vim will search for the MzScheme DLL files only when needed. When you don't use the MzScheme interface you don't need them, thus you can use Vim without these DLL files. +NOTE: Newer version of MzScheme (Racket) require earlier (trampolined) +initialisation via scheme_main_setup. So Vim always loads the MzScheme DLL at +startup if possible. To use the MzScheme interface the MzScheme DLLs must be in your search path. In a console window type "path" to see what directories are used. @@ -282,5 +286,24 @@ For MzScheme version 209 they will be "libmzsch209_000.dll" and command, look for -DDYNAMIC_MZSCH_DLL="something" and -DDYNAMIC_MZGC_DLL="something" in the "Compilation" info. +For example, if MzScheme (Racket) is installed at C:\Racket63, you may need +to set the environment variable as the following: > + + PATH=%PATH%;C:\Racket63\lib + PLTCOLLECTS=C:\Racket63\collects + PLTCONFIGDIR=C:\Racket63\etc +< +============================================================================== +8. MzScheme setup *mzscheme-setup* *E895* + +Vim requires "racket/base" module for if_mzsch core (fallback to "scheme/base" +if it doesn't exist), "r5rs" module for test and "raco ctool" command for +building Vim. If MzScheme did not have them, you can install them with +MzScheme's raco command: +> + raco pkg install scheme-lib # scheme/base module + raco pkg install r5rs-lib # r5rs module + raco pkg install cext-lib # raco ctool command +< ====================================================================== vim:tw=78:ts=8:sts=4:ft=help:norl: diff --git a/en/if_perl.txt b/en/if_perl.txt index 7be5f06f6..c73eb610f 100644 --- a/en/if_perl.txt +++ b/en/if_perl.txt @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim version 7.4. Last change: 2013 Oct 05 +*if_perl.txt* For Vim version 7.4. Last change: 2015 Oct 16 VIM REFERENCE MANUAL by Sven Verdoolaege @@ -290,5 +290,13 @@ The name of the DLL must match the Perl version Vim was compiled with. Currently the name is "perl512.dll". That is for Perl 5.12. To know for sure edit "gvim.exe" and search for "perl\d*.dll\c". + +Unix ~ + +The 'perldll' option can be used to specify the Perl shared library file +instead of DYNAMIC_PERL_DLL file what was specified at compile time. The +version of the shared library must match the Perl version Vim was compiled +with. + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/en/if_pyth.txt b/en/if_pyth.txt index 4ed8eac74..cc47beb27 100644 --- a/en/if_pyth.txt +++ b/en/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 7.4. Last change: 2014 Jul 23 +*if_pyth.txt* For Vim version 7.4. Last change: 2015 Nov 10 VIM REFERENCE MANUAL by Paul Moore @@ -679,20 +679,26 @@ functions to evaluate Python expressions and pass their values to VimL. ============================================================================== 9. Dynamic loading *python-dynamic* -On MS-Windows the Python library can be loaded dynamically. The |:version| -output then includes |+python/dyn|. +On MS-Windows and Unix the Python library can be loaded dynamically. The +|:version| output then includes |+python/dyn| or |+python3/dyn|. -This means that Vim will search for the Python DLL file only when needed. -When you don't use the Python interface you don't need it, thus you can use -Vim without this DLL file. +This means that Vim will search for the Python DLL or shared library file only +when needed. When you don't use the Python interface you don't need it, thus +you can use Vim without this file. -To use the Python interface the Python DLL must be in your search path. In a -console window type "path" to see what directories are used. +On MS-Windows to use the Python interface the Python DLL must be in your search +path. In a console window type "path" to see what directories are used. The name of the DLL must match the Python version Vim was compiled with. Currently the name is "python24.dll". That is for Python 2.4. To know for sure edit "gvim.exe" and search for "python\d*.dll\c". +On Unix the 'pythondll' or 'pythonthreedll' option can be used to specify the +Python shared library file instead of DYNAMIC_PYTHON_DLL or +DYNAMIC_PYTHON3_DLL file what were specified at compile time. The version of +the shared library must match the Python 2.x or Python 3 version Vim was +compiled with. + ============================================================================== 10. Python 3 *python3* diff --git a/en/if_ruby.txt b/en/if_ruby.txt index 4084181f9..b0f802998 100644 --- a/en/if_ruby.txt +++ b/en/if_ruby.txt @@ -1,4 +1,4 @@ -*if_ruby.txt* For Vim version 7.4. Last change: 2015 Feb 22 +*if_ruby.txt* For Vim version 7.4. Last change: 2015 Dec 03 VIM REFERENCE MANUAL by Shugo Maeda @@ -7,9 +7,9 @@ The Ruby Interface to Vim *ruby* *Ruby* 1. Commands |ruby-commands| -2. The VIM module |ruby-vim| -3. VIM::Buffer objects |ruby-buffer| -4. VIM::Window objects |ruby-window| +2. The Vim module |ruby-vim| +3. Vim::Buffer objects |ruby-buffer| +4. Vim::Window objects |ruby-window| 5. Global variables |ruby-globals| 6. Dynamic loading |ruby-dynamic| @@ -47,7 +47,7 @@ Example Vim script: > ruby << EOF class Garnet def initialize(s) - @buffer = VIM::Buffer.current + @buffer = Vim::Buffer.current vimputs(s) end def vimputs(s) @@ -74,19 +74,19 @@ Example Vim script: > Executing Ruby commands is not possible in the |sandbox|. ============================================================================== -2. The VIM module *ruby-vim* +2. The Vim module *ruby-vim* -Ruby code gets all of its access to vim via the "VIM" module. +Ruby code gets all of its access to vim via the "Vim" module. -Overview > +Overview: > print "Hello" # displays a message - VIM.command(cmd) # execute an Ex command - num = VIM::Window.count # gets the number of windows - w = VIM::Window[n] # gets window "n" - cw = VIM::Window.current # gets the current window - num = VIM::Buffer.count # gets the number of buffers - b = VIM::Buffer[n] # gets buffer "n" - cb = VIM::Buffer.current # gets the current buffer + Vim.command(cmd) # execute an Ex command + num = Vim::Window.count # gets the number of windows + w = Vim::Window[n] # gets window "n" + cw = Vim::Window.current # gets the current window + num = Vim::Buffer.count # gets the number of buffers + b = Vim::Buffer[n] # gets buffer "n" + cb = Vim::Buffer.current # gets the current buffer w.height = lines # sets the window height w.cursor = [row, col] # sets the window cursor position pos = w.cursor # gets an array [row, col] @@ -96,29 +96,29 @@ Overview > b[n] = str # sets a line in the buffer b.delete(n) # deletes a line b.append(n, str) # appends a line after n - line = VIM::Buffer.current.line # gets the current line - num = VIM::Buffer.current.line_number # gets the current line number - VIM::Buffer.current.line = "test" # sets the current line number + line = Vim::Buffer.current.line # gets the current line + num = Vim::Buffer.current.line_number # gets the current line number + Vim::Buffer.current.line = "test" # sets the current line number < Module Functions: *ruby-message* -VIM::message({msg}) +Vim::message({msg}) Displays the message {msg}. *ruby-set_option* -VIM::set_option({arg}) +Vim::set_option({arg}) Sets a vim option. {arg} can be any argument that the ":set" command accepts. Note that this means that no spaces are allowed in the argument! See |:set|. *ruby-command* -VIM::command({cmd}) +Vim::command({cmd}) Executes Ex command {cmd}. *ruby-evaluate* -VIM::evaluate({expr}) +Vim::evaluate({expr}) Evaluates {expr} using the vim internal expression evaluator (see |expression|). Returns the expression result as: - a Integer if the Vim expression evaluates to a number @@ -129,9 +129,9 @@ VIM::evaluate({expr}) Dictionaries and lists are recursively expanded. ============================================================================== -3. VIM::Buffer objects *ruby-buffer* +3. Vim::Buffer objects *ruby-buffer* -VIM::Buffer objects represent vim buffers. +Vim::Buffer objects represent vim buffers. Class Methods: @@ -159,9 +159,9 @@ line_number Returns the number of the current line if the buffer is active. ============================================================================== -4. VIM::Window objects *ruby-window* +4. Vim::Window objects *ruby-window* -VIM::Window objects represent vim windows. +Vim::Window objects represent vim windows. Class Methods: @@ -199,6 +199,8 @@ This means that Vim will search for the Ruby DLL file or shared library only when needed. When you don't use the Ruby interface you don't need it, thus you can use Vim even though this library file is not on your system. +MS-Windows ~ + You need to install the right version of Ruby for this to work. You can find the package to download from: http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html @@ -216,5 +218,12 @@ and comment-out the check for _MSC_VER. You may also need to rename the include directory name to match the version, strangely for Ruby 1.9.3 the directory is called 1.9.1. +Unix ~ + +The 'rubydll' option can be used to specify the Ruby shared library file +instead of DYNAMIC_RUBY_DLL file what was specified at compile time. The +version of the shared library must match the Ruby version Vim was compiled +with. + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/en/if_tcl.txt b/en/if_tcl.txt index d6726a354..4d02233f0 100644 --- a/en/if_tcl.txt +++ b/en/if_tcl.txt @@ -1,4 +1,4 @@ -*if_tcl.txt* For Vim version 7.4. Last change: 2012 Aug 02 +*if_tcl.txt* For Vim version 7.4. Last change: 2016 Jan 01 VIM REFERENCE MANUAL by Ingo Wilken @@ -515,19 +515,29 @@ startup file (usually "~/.vimrc" on Unix): ============================================================================== 9. Dynamic loading *tcl-dynamic* -On MS-Windows the Tcl library can be loaded dynamically. The |:version| -output then includes |+tcl/dyn|. +On MS-Windows and Unix the Tcl library can be loaded dynamically. The +|:version| output then includes |+tcl/dyn|. -This means that Vim will search for the Tcl DLL file only when needed. When -you don't use the Tcl interface you don't need it, thus you can use Vim -without this DLL file. +This means that Vim will search for the Tcl DLL or shared library file only +when needed. When you don't use the Tcl interface you don't need it, thus you +can use Vim without this file. + + +MS-Windows ~ To use the Tcl interface the Tcl DLL must be in your search path. In a console window type "path" to see what directories are used. The name of the DLL must match the Tcl version Vim was compiled with. -Currently the name is "tcl83.dll". That is for Tcl 8.3. To know for sure +Currently the name is "tcl86.dll". That is for Tcl 8.6. To know for sure edit "gvim.exe" and search for "tcl\d*.dll\c". + +Unix ~ + +The 'tcldll' option can be used to specify the Tcl shared library file instead +of DYNAMIC_TCL_DLL file what was specified at compile time. The version of +the shared library must match the Tcl version Vim was compiled with. + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/en/index.txt b/en/index.txt index ded50d0e6..d23edd019 100644 --- a/en/index.txt +++ b/en/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.4. Last change: 2015 Sep 08 +*index.txt* For Vim version 7.4. Last change: 2016 Jan 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1055,7 +1055,7 @@ tag command action in Command-line editing mode ~ |c_<Insert>| <Insert> toggle insert/overstrike mode |c_<LeftMouse>| <LeftMouse> cursor at mouse click -You found it, Arthur! *holy-grail* +You found it, Arthur! *holy-grail* *:smile* ============================================================================== 5. EX commands *ex-cmd-index* *:index* @@ -1176,7 +1176,7 @@ tag command action ~ |:cpfile| :cpf[ile] go to last error in previous file |:cquit| :cq[uit] quit Vim with an error code |:crewind| :cr[ewind] go to the specified error, default first one -|:cscope| :cs[cope] execute cscope command +|:cscope| :cs[cope] execute cscope command |:cstag| :cst[ag] use cscope to jump to a tag |:cunmap| :cu[nmap] like ":unmap" but for Command-line mode |:cunabbrev| :cuna[bbrev] like ":unabbrev" but for Command-line mode @@ -1297,7 +1297,7 @@ tag command action ~ |:lcd| :lc[d] change directory locally |:lchdir| :lch[dir] change directory locally |:lclose| :lcl[ose] close location window -|:lcscope| :lcs[cope] like ":cscope" but uses location list +|:lcscope| :lcs[cope] like ":cscope" but uses location list |:ldo| :ld[o] execute command in valid location list entries |:lfdo| :lfd[o] execute command in each file in location list |:left| :le[ft] left align lines @@ -1351,7 +1351,7 @@ tag command action ~ |:marks| :marks list all marks |:match| :mat[ch] define a match to highlight |:menu| :me[nu] enter a new menu item -|:menutranslate| :menut[ranslate] add a menu translation item +|:menutranslate| :menut[ranslate] add a menu translation item |:messages| :mes[sages] view previously displayed messages |:mkexrc| :mk[exrc] write current mappings and settings to a file |:mksession| :mks[ession] write session info to a file @@ -1495,6 +1495,7 @@ tag command action ~ |:smap| :smap like ":map" but for Select mode |:smapclear| :smapc[lear] remove all mappings for Select mode |:smenu| :sme[nu] add menu for Select mode +|:smile| :smi[le] make the user happy |:snext| :sn[ext] split window and go to next file in the argument list |:sniff| :sni[ff] send request to sniff @@ -1517,7 +1518,7 @@ tag command action ~ |:stop| :st[op] suspend the editor or escape to a shell |:stag| :sta[g] split window and jump to a tag |:startinsert| :star[tinsert] start Insert mode -|:startgreplace| :startg[replace] start Virtual Replace mode +|:startgreplace| :startg[replace] start Virtual Replace mode |:startreplace| :startr[eplace] start Replace mode |:stopinsert| :stopi[nsert] stop Insert mode |:stjump| :stj[ump] do ":tjump" and split window @@ -1538,14 +1539,14 @@ tag command action ~ |:tabdo| :tabdo execute command in each tab page |:tabedit| :tabe[dit] edit a file in a new tab page |:tabfind| :tabf[ind] find file in 'path', edit it in a new tab page -|:tabfirst| :tabfir[st] got to first tab page -|:tablast| :tabl[ast] got to last tab page +|:tabfirst| :tabfir[st] go to first tab page +|:tablast| :tabl[ast] go to last tab page |:tabmove| :tabm[ove] move tab page to other position |:tabnew| :tabnew edit a file in a new tab page |:tabnext| :tabn[ext] go to next tab page |:tabonly| :tabo[nly] close all tab pages except the current one |:tabprevious| :tabp[revious] go to previous tab page -|:tabrewind| :tabr[ewind] got to first tab page +|:tabrewind| :tabr[ewind] go to first tab page |:tabs| :tabs list the tab pages and what they contain |:tab| :tab create new tab when opening new window |:tag| :ta[g] jump to tag diff --git a/en/insert.txt b/en/insert.txt index 2a114bc09..787d6115a 100644 --- a/en/insert.txt +++ b/en/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.4. Last change: 2014 Aug 04 +*insert.txt* For Vim version 7.4. Last change: 2015 Sep 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -81,9 +81,11 @@ CTRL-W Delete the word before the cursor (see |i_backspacing| about joining lines). See the section "word motions", |word-motions|, for the definition of a word. *i_CTRL-U* -CTRL-U Delete all entered characters in the current line (see - |i_backspacing| about joining lines). - +CTRL-U Delete all entered characters before the cursor in the current + line. If there are no newly entered characters and + 'backspace' is not empty, delete all characters before the + cursor in the current line. + See |i_backspacing| about joining lines. *i_CTRL-I* *i_<Tab>* *i_Tab* <Tab> or CTRL-I Insert a tab. If the 'expandtab' option is on, the equivalent number of spaces is inserted (use CTRL-V <Tab> to @@ -150,7 +152,7 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* CTRL-R a results in "ac". CTRL-R CTRL-R a results in "ab^Hc". < Options 'textwidth', 'formatoptions', etc. still apply. If - you also want to avoid these, use "<C-R><C-O>r", see below. + you also want to avoid these, use CTRL-R CTRL-O, see below. The '.' register (last inserted text) is still inserted as typed. {not in Vi} @@ -375,6 +377,9 @@ CTRL-O execute one command, return to Insert mode *i_CTRL-O* CTRL-\ CTRL-O like CTRL-O but don't move the cursor *i_CTRL-\_CTRL-O* CTRL-L when 'insertmode' is set: go to Normal mode *i_CTRL-L* CTRL-G u break undo sequence, start new change *i_CTRL-G_u* +CTRL-G U don't break undo with next left/right cursor *i_CTRL-G_U* + movement (but only if the cursor stays + within same the line) ----------------------------------------------------------------------- Note: If the cursor keys take you out of Insert mode, check the 'noesckeys' @@ -414,6 +419,28 @@ that, with CTRL-O u. Another example: > This breaks undo at each line break. It also expands abbreviations before this. +An example for using CTRL-G U: > + + inoremap <Left> <C-G>U<Left> + inoremap <Right> <C-G>U<Right> + inoremap <expr> <Home> col('.') == match(getline('.'), '\S') + 1 ? + \ repeat('<C-G>U<Left>', col('.') - 1) : + \ (col('.') < match(getline('.'), '\S') ? + \ repeat('<C-G>U<Right>', match(getline('.'), '\S') + 0) : + \ repeat('<C-G>U<Left>', col('.') - 1 - match(getline('.'), '\S'))) + inoremap <expr> <End> repeat('<C-G>U<Right>', col('$') - col('.')) + inoremap ( ()<C-G>U<Left> + +This makes it possible to use the cursor keys in Insert mode, without breaking +the undo sequence and therefore using |.| (redo) will work as expected. +Also entering a text like (with the "(" mapping from above): > + + Lorem ipsum (dolor + +will be repeatable by the |.|to the expected + + Lorem ipsum (dolor) + Using CTRL-O splits undo: the text typed before and after it is undone separately. If you want to avoid this (e.g., in a mapping) you might be able to use CTRL-R = |i_CTRL-R|. E.g., to call a function: > diff --git a/en/map.txt b/en/map.txt index 3ac8e5db9..4e7a784fa 100644 --- a/en/map.txt +++ b/en/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.4. Last change: 2014 Jun 02 +*map.txt* For Vim version 7.4. Last change: 2016 Jan 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -483,7 +483,7 @@ internal code is written to the script file. 1.6 SPECIAL CHARACTERS *:map-special-chars* - *map_backslash* + *map_backslash* *map-backslash* Note that only CTRL-V is mentioned here as a special character for mappings and abbreviations. When 'cpoptions' does not contain 'B', a backslash can also be used like CTRL-V. The <> notation can be fully used then |<>|. But @@ -494,21 +494,21 @@ To map a backslash, or use a backslash literally in the {rhs}, the special sequence "<Bslash>" can be used. This avoids the need to double backslashes when using nested mappings. - *map_CTRL-C* + *map_CTRL-C* *map-CTRL-C* Using CTRL-C in the {lhs} is possible, but it will only work when Vim is waiting for a key, not when Vim is busy with something. When Vim is busy CTRL-C interrupts/breaks the command. When using the GUI version on MS-Windows CTRL-C can be mapped to allow a Copy command to the clipboard. Use CTRL-Break to interrupt Vim. - *map_space_in_lhs* + *map_space_in_lhs* *map-space_in_lhs* To include a space in {lhs} precede it with a CTRL-V (type two CTRL-Vs for each space). - *map_space_in_rhs* + *map_space_in_rhs* *map-space_in_rhs* If you want a {rhs} that starts with a space, use "<Space>". To be fully Vi compatible (but unreadable) don't use the |<>| notation, precede {rhs} with a single CTRL-V (you have to type CTRL-V two times). - *map_empty_rhs* + *map_empty_rhs* *map-empty-rhs* You can create an empty {rhs} by typing nothing after a single CTRL-V (you have to type CTRL-V two times). Unfortunately, you cannot do this in a vimrc file. @@ -583,7 +583,7 @@ Upper and lowercase differences are ignored. It is not possible to put a comment after these commands, because the '"' character is considered to be part of the {lhs} or {rhs}. - *map_bar* + *map_bar* *map-bar* Since the '|' character is used to separate a map command from the next command, you will have to do something special to include a '|' in {rhs}. There are three methods: @@ -601,7 +601,7 @@ When 'b' is present in 'cpoptions', "\|" will be recognized as a mapping ending in a '\' and then another command. This is Vi compatible, but illogical when compared to other commands. - *map_return* + *map_return* *map-return* When you have a mapping that contains an Ex command, you need to put a line terminator after it to have it executed. The use of <CR> is recommended for this (see |<>|). Example: > @@ -923,9 +923,11 @@ Examples: ({CURSOR} is where you type a non-keyword character) > < "test;;" is not expanded "test ;;" is expanded to "test <endofline>" -To avoid the abbreviation in insert mode: Type part of the abbreviation, exit -insert mode with <Esc>, re-enter insert mode with "a" and type the rest. Or -type CTRL-V before the character after the abbreviation. +To avoid the abbreviation in Insert mode: Type CTRL-V before the character +that would trigger the abbreviation. E.g. CTRL-V <Space>. Or type part of +the abbreviation, exit insert mode with <Esc>, re-enter insert mode with "a" +and type the rest. + To avoid the abbreviation in Command-line mode: Type CTRL-V twice somewhere in the abbreviation to avoid it to be replaced. A CTRL-V in front of a normal character is mostly ignored otherwise. @@ -1283,6 +1285,8 @@ completion can be enabled: -complete=custom,{func} custom completion, defined via {func} -complete=customlist,{func} custom completion, defined via {func} +Note: That some completion methods might expand environment variables. + Custom completion *:command-completion-custom* *:command-completion-customlist* @@ -1354,6 +1358,19 @@ Possible attributes are: Note that -range=N and -count=N are mutually exclusive - only one should be specified. + *E889* *:command-addr* +It is possible that the special characters in the range like ., $ or % which +by default correspond to the current line, last line and the whole buffer, +relate to arguments, (loaded) buffers, windows or tab pages. + +Possible values are: + -addr=lines Range of lines (this is the default) + -addr=arguments Range for arguments + -addr=buffers Range for buffers (also not loaded buffers) + -addr=loaded_buffers Range for loaded buffers + -addr=windows Range for windows + -addr=tabs Range for tab pages + Special cases *:command-bang* *:command-bar* *:command-register* *:command-buffer* There are some special cases as well: diff --git a/en/mlang.txt b/en/mlang.txt index eb95660d0..808bc61d4 100644 --- a/en/mlang.txt +++ b/en/mlang.txt @@ -1,4 +1,4 @@ -*mlang.txt* For Vim version 7.4. Last change: 2012 Jan 15 +*mlang.txt* For Vim version 7.4. Last change: 2016 Jan 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -97,13 +97,15 @@ If you used the self-installing .exe file, message translations should work already. Otherwise get the libintl.dll file if you don't have it yet: http://sourceforge.net/projects/gettext +Or: + https://mlocati.github.io/gettext-iconv-windows/ This also contains tools xgettext, msgformat and others. libintl.dll should be placed in same directory with (g)vim.exe, or some -place where PATH environment value describe. Message files (vim.mo) -have to be placed in "$VIMRUNTIME/lang/xx/LC_MESSAGES", where "xx" is the -abbreviation of the language (mostly two letters). +place where PATH environment value describe. Vim also finds libintl-8.dll. +Message files (vim.mo) have to be placed in "$VIMRUNTIME/lang/xx/LC_MESSAGES", +where "xx" is the abbreviation of the language (mostly two letters). If you write your own translations you need to generate the .po file and convert it to a .mo file. You need to get the source distribution and read diff --git a/en/netbeans.txt b/en/netbeans.txt index e0ac2bf82..7c549a9d5 100644 --- a/en/netbeans.txt +++ b/en/netbeans.txt @@ -1,10 +1,10 @@ -*netbeans.txt* For Vim version 7.4. Last change: 2012 Jan 26 +*netbeans.txt* For Vim version 7.4. Last change: 2016 Jan 27 VIM REFERENCE MANUAL by Gordon Prieur et al. - *socket-interface* *netbeans* *netbeans-support* + *netbeans* *netbeans-support* Vim NetBeans Protocol: a socket interface for Vim integration into an IDE. @@ -306,7 +306,12 @@ bufID Buffer number. A message may be either for a specific buffer or generic. Generic messages use a bufID of zero. NOTE: this buffer ID is assigned by the IDE, it is not Vim's buffer number. The bufID must be a sequentially rising number, - starting at one. + starting at one. When the 'switchbuf' option is set to + "usetab" and the "bufID" buffer is not found in the current + tab page, the netbeans commands and functions that set this + buffer as the current buffer will jump to the first open + window that contains this buffer in other tab pages instead of + replacing the buffer in the current window. seqno The IDE uses a sequence number for Commands and Functions. A Reply must use the sequence number of the Function that it is @@ -470,7 +475,7 @@ raise Bring the editor to the foreground. New in version 2.1. removeAnno serNum - Remove a previously place annotation for this buffer. + Remove a previously placed annotation for this buffer. "serNum" is the same number used in addAnno. save Save the buffer when it was modified. The other side of the diff --git a/en/options.txt b/en/options.txt index 845878a37..0efbc8d64 100644 --- a/en/options.txt +++ b/en/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.4. Last change: 2014 Sep 09 +*options.txt* For Vim version 7.4. Last change: 2016 Jan 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -50,9 +50,19 @@ achieve special effects. These options come in three forms: :se[t] {option}&vi Reset option to its Vi default value. {not in Vi} :se[t] {option}&vim Reset option to its Vim default value. {not in Vi} -:se[t] all& Set all options, except terminal options, to their - default value. The values of 'term', 'lines' and - 'columns' are not changed. {not in Vi} +:se[t] all& Set all options to their default value. The values of + these options are not changed: + all terminal options, starting with t_ + 'columns' + 'cryptmethod' + 'encoding' + 'key' + 'lines' + 'term' + 'ttymouse' + 'ttytype' + Warning: This may have a lot of side effects. + {not in Vi} *:set-args* *E487* *E521* :se[t] {option}={value} or @@ -683,6 +693,9 @@ A jump table for the options with a short description can be found at |Q_op|. "single": Use the same width as characters in US-ASCII. This is expected by most users. "double": Use twice the width of ASCII characters. + "auto": Use obtained width from system. + {only for Win NT/2K systems, currently} + *E834* *E835* The value "double" cannot be used if 'listchars' or 'fillchars' contains a character that would be double width. @@ -706,6 +719,10 @@ A jump table for the options with a short description can be found at |Q_op|. compiled with the |+termresponse| feature and if |t_u7| is set to the escape sequence to request cursor position report. + On some systems, we can use width for a character which defined by + font design. If you use such a system try "auto" for this option. + It will give you more nice result for a font which you select. + *'antialias'* *'anti'* *'noantialias'* *'noanti'* 'antialias' 'anti' boolean (default: off) global @@ -786,7 +803,8 @@ A jump table for the options with a short description can be found at |Q_op|. line. When 'smartindent' or 'cindent' is on the indent is changed in a different way. - The 'autoindent' option is reset when the 'paste' option is set. + The 'autoindent' option is reset when the 'paste' option is set and + restored when 'paste' is reset. {small difference from Vi: After the indent is deleted when typing <Esc> or <CR>, the cursor position when moving up or down is after the deleted indent; Vi puts the cursor somewhere in the deleted indent}. @@ -1124,6 +1142,47 @@ A jump table for the options with a short description can be found at |Q_op|. expression evaluates to a |List| this is equal to using each List item as a string and putting "\n" in between them. + *'belloff'* *'bo'* +'belloff' 'bo' string (default "") + global + {not in Vi} + Specifies for which events the bell will not be rung. It is a comma + separated list of items. For each item that is present, the bell + will be silenced. This is most useful to specify specific events in + insert mode to be silenced. + + item meaning when present ~ + all All events. + backspace When hitting <BS> or <Del> and deleting results in an + error. + cursor Fail to move around using the cursor keys or + <PageUp>/<PageDown> in |Insert-mode|. + complete Error occurred when using |i_CTRL-X_CTRL-K| or + |i_CTRL-X_CTRL-T|. + copy Cannot copy char from insert mode using |i_CTRL-Y| or + |i_CTRL-E|. + ctrlg Unknown Char after <C-G> in Insert mode. + error Other Error occurred (e.g. try to join last line) + (mostly used in |Normal-mode| or |Cmdline-mode|). + esc hitting <Esc> in |Normal-mode|. + ex In |Visual-mode|, hitting |Q| results in an error. + hangul Error occurred when using hangul input. + insertmode Pressing <Esc> in 'insertmode'. + lang Calling the beep module for Lua/Mzscheme/TCL. + mess No output available for |g<|. + showmatch Error occurred for 'showmatch' function. + operator Empty region error |cpo-E|. + register Unknown register after <C-R> in |Insert-mode|. + shell Bell from shell output |:!|. + spell Error happened on spell suggest. + wildmode More matches in |cmdline-completion| available + (depends on the 'wildmode' setting). + + This is most useful, to fine tune when in insert mode the bell should + be rung. For normal mode and ex commands, the bell is often rung to + indicate that an error occurred. It can be silenced by adding the + "error" keyword. + *'binary'* *'bin'* *'nobinary'* *'nobin'* 'binary' 'bin' boolean (default off) local to buffer @@ -1196,7 +1255,7 @@ A jump table for the options with a short description can be found at |Q_op|. break if 'linebreak' is on. Only works for ASCII and also for 8-bit characters when 'encoding' is an 8-bit encoding. - *'breakindent'* *'bri'* + *'breakindent'* *'bri'* *'nobreakindent'* *'nobri'* 'breakindent' 'bri' boolean (default off) local to window {not in Vi} @@ -1316,6 +1375,9 @@ A jump table for the options with a short description can be found at |Q_op|. nofile only: The buffer name is fixed, it is not handled like a file name. It is not modified in response to a |:cd| command. + both: When using ":e bufname" and already editing "bufname" + the buffer is made empty and autocommands are + triggered as usual for |:edit|. *E676* "acwrite" implies that the buffer name is not related to a file, like "nofile", but it will be written. Thus, in contrast to "nofile" and @@ -1816,6 +1878,14 @@ A jump table for the options with a short description can be found at |Q_op|. completion in the preview window. Only works in combination with "menu" or "menuone". + noinsert Do not insert any text for a match until the user selects + a match from the menu. Only works in combination with + "menu" or "menuone". No effect if "longest" is present. + + noselect Do not select a match in the menu, force the user to + select one from the menu. Only works in combination with + "menu" or "menuone". + *'concealcursor'* *'cocu'* 'concealcursor' 'cocu' string (default: "") @@ -2660,15 +2730,16 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} When writing a file and this option is off and the 'binary' option - is on, no <EOL> will be written for the last line in the file. This - option is automatically set when starting to edit a new file, unless - the file does not have an <EOL> for the last line in the file, in - which case it is reset. Normally you don't have to set or reset this - option. When 'binary' is off the value is not used when writing the - file. When 'binary' is on it is used to remember the presence of a - <EOL> for the last line in the file, so that when you write the file - the situation from the original file can be kept. But you can change - it if you want to. + is on, or 'fixeol' option is off, no <EOL> will be written for the + last line in the file. This option is automatically set or reset when + starting to edit a new file, depending on whether file has an <EOL> + for the last line in the file. Normally you don't have to set or + reset this option. + When 'binary' is off and 'fixeol' is on the value is not used when + writing the file. When 'binary' is on or 'fixeol' is off it is used + to remember the presence of a <EOL> for the last line in the file, so + that when you write the file the situation from the original file can + be kept. But you can change it if you want to. *'equalalways'* *'ea'* *'noequalalways'* *'noea'* 'equalalways' 'ea' boolean (default on) @@ -2709,7 +2780,8 @@ A jump table for the options with a short description can be found at |Q_op|. makes a difference for error messages, the bell will be used always for a lot of errors without a message (e.g., hitting <Esc> in Normal mode). See 'visualbell' on how to make the bell behave like a beep, - screen flash or do nothing. + screen flash or do nothing. See 'belloff' to finetune when to ring the + bell. *'errorfile'* *'ef'* 'errorfile' 'ef' string (Amiga default: "AztecC.Err", @@ -2771,6 +2843,8 @@ A jump table for the options with a short description can be found at |Q_op|. <Tab>. Spaces are used in indents with the '>' and '<' commands and when 'autoindent' is on. To insert a real tab when 'expandtab' is on, use CTRL-V<Tab>. See also |:retab| and |ins-expandtab|. + This option is reset when the 'paste' option is set and restored when + the 'paste' option is reset. NOTE: This option is reset when 'compatible' is set. *'exrc'* *'ex'* *'noexrc'* *'noex'* @@ -2948,8 +3022,8 @@ A jump table for the options with a short description can be found at |Q_op|. 2. If a <NL> is found and 'fileformats' includes "unix", 'fileformat' is set to "unix". Note that when a <NL> is found without a preceding <CR>, "unix" is preferred over "dos". - 3. If 'fileformat' has not yet been set, and if 'fileformats' - includes "mac", 'fileformat' is set to "mac". + 3. If 'fileformat' has not yet been set, and if a <CR> is found, and + if 'fileformats' includes "mac", 'fileformat' is set to "mac". This means that "mac" is only chosen when: "unix" is not present or no <NL> is found in the file, and "dos" is not present or no <CR><NL> is found in the file. @@ -3053,6 +3127,17 @@ A jump table for the options with a short description can be found at |Q_op|. fold:c Folded |hl-Folded| diff:c DiffDelete |hl-DiffDelete| + *'fixendofline'* *'fixeol'* *'nofixendofline'* *'nofixeol'* +'fixendofline' 'fixeol' boolean (default on) + local to buffer + {not in Vi} + When writing a file and this option is on, <EOL> at the end of file + will be restored if missing. Turn this option off if you want to + preserve the situation from the original file. + When the 'binary' option is set the value of this option doesn't + matter. + See the 'endofline' option. + *'fkmap'* *'fk'* *'nofkmap'* *'nofk'* 'fkmap' 'fk' boolean (default off) *E198* global @@ -3334,7 +3419,7 @@ A jump table for the options with a short description can be found at |Q_op|. modeline, see |sandbox-option|. That stops the option from working, since changing the buffer text is not allowed. - *'fsync'* *'fs'* + *'fsync'* *'fs'* *'nofsync'* *'nofs'* 'fsync' 'fs' boolean (default on) global {not in Vi} @@ -3417,7 +3502,8 @@ A jump table for the options with a short description can be found at |Q_op|. the height of the cursor can be changed. This can be done by specifying a block cursor, or a percentage for a vertical or horizontal cursor. - For a console the 't_SI' and 't_EI' escape sequences are used. + For a console the 't_SI', 't_SR', and 't_EI' escape sequences are + used. The option is a comma separated list of parts. Each part consist of a mode-list and an argument-list: @@ -3747,6 +3833,9 @@ A jump table for the options with a short description can be found at |Q_op|. 'F' Add a footer. Only for Motif. See |gui-footer|. + 'C' Remove caption (title) bar. Support Win32 only. + + *'guipty'* *'noguipty'* 'guipty' boolean (default on) global @@ -4030,7 +4119,7 @@ A jump table for the options with a short description can be found at |Q_op|. global Ignore case in search patterns. Also used when searching in the tags file. - Also see 'smartcase'. + Also see 'smartcase' and 'tagcase'. Can be overruled by using "\c" or "\C" in the pattern, see |/ignorecase|. @@ -4410,6 +4499,8 @@ A jump table for the options with a short description can be found at |Q_op|. '*', '"' and '|' (so that CTRL-] on a command finds the help for that command). When the 'lisp' option is on the '-' character is always included. + This option also influences syntax highlighting, unless the syntax + uses |:syn-iskeyword|. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. @@ -4524,12 +4615,14 @@ A jump table for the options with a short description can be found at |Q_op|. feature} This option allows switching your keyboard into a special language mode. When you are typing text in Insert mode the characters are - inserted directly. When in command mode the 'langmap' option takes + inserted directly. When in Normal mode the 'langmap' option takes care of translating these special characters to the original meaning of the key. This means you don't have to change the keyboard mode to be able to execute Normal mode commands. This is the opposite of the 'keymap' option, where characters are mapped in Insert mode. + Also consider setting 'langnoremap' to avoid 'langmap' applies to + characters resulting from a mapping. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -4585,6 +4678,18 @@ A jump table for the options with a short description can be found at |Q_op|. :source $VIMRUNTIME/menu.vim < Warning: This deletes all menus that you defined yourself! + *'langnoremap'* *'lnr'* *'nolangnoremap'* *'nolnr'* +'langnoremap' 'lnr' boolean (default off) + global + {not in Vi} + {only available when compiled with the |+langmap| + feature} + When on, setting 'langmap' does not apply to characters resulting from + a mapping. This basically means, if you noticed that setting + 'langmap' disables some of your mappings, try setting this option. + This option defaults to off for backwards compatibility. Set it on if + that works for you to avoid mappings to break. + *'laststatus'* *'ls'* 'laststatus' 'ls' number (default 1) global @@ -4754,6 +4859,17 @@ A jump table for the options with a short description can be found at |Q_op|. Note that using the "-u NONE" and "--noplugin" command line arguments reset this option. |-u| |--noplugin| + *'luadll'* +'luadll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+lua/dyn| + feature} + Specifies the name of the Lua shared library. The default is + DYNAMIC_LUA_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'macatsui'* *'nomacatsui'* 'macatsui' boolean (default on) global @@ -4915,8 +5031,11 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Maximum amount of memory in Kbyte to use for all buffers together. The maximum usable value is about 2000000 (2 Gbyte). Use this to work - without a limit. On 64 bit machines higher values might work. But - hey, do you really need more than 2 Gbyte for text editing? + without a limit. + On 64 bit machines higher values might work. But hey, do you really + need more than 2 Gbyte for text editing? Keep in mind that text is + stored in the swap file, one can edit files > 2 Gbyte anyay. We do + need the memory to store undo info. Also see 'maxmem'. *'menuitems'* *'mis'* @@ -5190,7 +5309,7 @@ A jump table for the options with a short description can be found at |Q_op|. Negative or zero value means no thread scheduling. *'nrformats'* *'nf'* -'nrformats' 'nf' string (default "octal,hex") +'nrformats' 'nf' string (default "bin,octal,hex") local to buffer {not in Vi} This defines what bases Vim will consider for numbers when using the @@ -5204,6 +5323,9 @@ A jump table for the options with a short description can be found at |Q_op|. hex If included, numbers starting with "0x" or "0X" will be considered to be hexadecimal. Example: Using CTRL-X on "0x100" results in "0x0ff". + bin If included, numbers starting with "0b" or "0B" will be + considered to be binary. Example: Using CTRL-X on + "0b1000" subtracts one, resulting in "0b0111". Numbers which simply begin with a digit in the range 1-9 are always considered decimal. This also happens for numbers that are not recognized as octal or hex. @@ -5322,19 +5444,21 @@ A jump table for the options with a short description can be found at |Q_op|. When the 'paste' option is switched on (also when it was already on): - mapping in Insert mode and Command-line mode is disabled - abbreviations are disabled - - 'textwidth' is set to 0 - - 'wrapmargin' is set to 0 - 'autoindent' is reset - - 'smartindent' is reset - - 'softtabstop' is set to 0 + - 'expandtab' is reset + - 'formatoptions' is used like it is empty - 'revins' is reset - 'ruler' is reset - 'showmatch' is reset - - 'formatoptions' is used like it is empty + - 'smartindent' is reset + - 'smarttab' is reset + - 'softtabstop' is set to 0 + - 'textwidth' is set to 0 + - 'wrapmargin' is set to 0 These options keep their value, but their effect is disabled: - - 'lisp' - - 'indentexpr' - 'cindent' + - 'indentexpr' + - 'lisp' NOTE: When you start editing another file while the 'paste' option is on, settings from the modelines or autocommands may change the settings again, causing trouble when pasting text. You might want to @@ -5455,6 +5579,17 @@ A jump table for the options with a short description can be found at |Q_op|. < Replace the ';' with a ':' or whatever separator is used. Note that this doesn't work when $INCL contains a comma or white space. + *'perldll'* +'perldll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+perl/dyn| + feature} + Specifies the name of the Perl shared library. The default is + DYNAMIC_PERL_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'preserveindent'* *'pi'* *'nopreserveindent'* *'nopi'* 'preserveindent' 'pi' boolean (default off) local to buffer @@ -5581,6 +5716,27 @@ A jump table for the options with a short description can be found at |Q_op|. Insert mode completion. When zero as much space as available is used. |ins-completion-menu|. + *'pythondll'* +'pythondll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+python/dyn| + feature} + Specifies the name of the Python 2.x shared library. The default is + DYNAMIC_PYTHON_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + + *'pythonthreedll'* +'pythonthreedll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+python3/dyn| + feature} + Specifies the name of the Python 3 shared library. The default is + DYNAMIC_PYTHON3_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'quoteescape'* *'qe'* 'quoteescape' 'qe' string (default "\") @@ -5627,6 +5783,10 @@ A jump table for the options with a short description can be found at |Q_op|. Note that when using the NFA engine and the pattern contains something that is not supported the pattern will not match. This is only useful for debugging the regexp engine. + Using automatic selection enables Vim to switch the engine, if the + default engine becomes too costly. E.g., when the NFA engine uses too + many states. This should prevent Vim from hanging on a combination of + a complex pattern with long text. *'relativenumber'* *'rnu'* *'norelativenumber'* *'nornu'* 'relativenumber' 'rnu' boolean (default off) @@ -5763,7 +5923,9 @@ A jump table for the options with a short description can be found at |Q_op|. Inserting characters in Insert mode will work backwards. See "typing backwards" |ins-reverse|. This option can be toggled with the CTRL-_ command in Insert mode, when 'allowrevins' is set. - NOTE: This option is reset when 'compatible' or 'paste' is set. + NOTE: This option is reset when 'compatible' is set. + This option is reset when 'paste' is set and restored when 'paste' is + reset. *'rightleft'* *'rl'* *'norightleft'* *'norl'* 'rightleft' 'rl' boolean (default off) @@ -5795,6 +5957,17 @@ A jump table for the options with a short description can be found at |Q_op|. This is useful for languages such as Hebrew, Arabic and Farsi. The 'rightleft' option must be set for 'rightleftcmd' to take effect. + *'rubydll'* +'rubydll' string (default: depends on the build) + global + {not in Vi} + {only available when compiled with the |+ruby/dyn| + feature} + Specifies the name of the Ruby shared library. The default is + DYNAMIC_RUBY_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'ruler'* *'ru'* *'noruler'* *'noru'* 'ruler' 'ru' boolean (default off) global @@ -5819,7 +5992,8 @@ A jump table for the options with a short description can be found at |Q_op|. separated with a dash. For an empty line "0-1" is shown. For an empty buffer the line number will also be zero: "0,0-1". - This option is reset when the 'paste' option is set. + This option is reset when 'paste' is set and restored when 'paste' is + reset. If you don't want to see the ruler all the time but want to know where you are, use "g CTRL-G" |g_CTRL-G|. NOTE: This option is reset when 'compatible' is set. @@ -6372,6 +6546,7 @@ A jump table for the options with a short description can be found at |Q_op|. c don't give |ins-completion-menu| messages. For example, "-- XXX completion (YYY)", "match 1 of 2", "The only match", "Pattern not found", "Back at original", etc. + q use "recording" instead of "recording @a" This gives you the opportunity to avoid that a change between buffers requires you to hit <Enter>, but still gives as useful a message as @@ -6458,7 +6633,9 @@ A jump table for the options with a short description can be found at |Q_op|. jump is only done if the match can be seen on the screen. The time to show the match can be set with 'matchtime'. A Beep is given if there is no match (no matter if the match can be - seen or not). This option is reset when the 'paste' option is set. + seen or not). + This option is reset when 'paste' is set and restored when 'paste' is + reset. When the 'm' flag is not included in 'cpoptions', typing a character will immediately move the cursor back to where it belongs. See the "sm" field in 'guicursor' for setting the cursor shape and @@ -6567,8 +6744,9 @@ A jump table for the options with a short description can be found at |Q_op|. mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H. When using the ">>" command, lines starting with '#' are not shifted right. - NOTE: 'smartindent' is reset when 'compatible' is set. When 'paste' - is set smart indenting is disabled. + NOTE: 'smartindent' is reset when 'compatible' is set. + This option is reset when 'paste' is set and restored when 'paste' is + reset. *'smarttab'* *'sta'* *'nosmarttab'* *'nosta'* 'smarttab' 'sta' boolean (default off) @@ -6584,6 +6762,8 @@ A jump table for the options with a short description can be found at |Q_op|. What gets inserted (a <Tab> or spaces) depends on the 'expandtab' option. Also see |ins-expandtab|. When 'expandtab' is not set, the number of spaces is minimized by using <Tab>s. + This option is reset when 'paste' is set and restored when 'paste' is + reset. NOTE: This option is reset when 'compatible' is set. *'softtabstop'* *'sts'* @@ -6598,7 +6778,8 @@ A jump table for the options with a short description can be found at |Q_op|. commands like "x" still work on the actual characters. When 'sts' is zero, this feature is off. When 'sts' is negative, the value of 'shiftwidth' is used. - 'softtabstop' is set to 0 when the 'paste' option is set. + 'softtabstop' is set to 0 when the 'paste' option is set and restored + when 'paste' is reset. See also |ins-expandtab|. When 'expandtab' is not set, the number of spaces is minimized by using <Tab>s. The 'L' flag in 'cpoptions' changes how tabs are used when 'list' is @@ -6675,7 +6856,8 @@ A jump table for the options with a short description can be found at |Q_op|. the two-letter, lower case region name. You can use more than one region by listing them: "en_us,en_ca" supports both US and Canadian English, but not words specific for Australia, New Zealand or Great - Britain. + Britain. (Note: currently en_au and en_nz dictionaries are older than + en_ca, en_gb and en_us). If the name "cjk" is included East Asian characters are excluded from spell checking. This is useful when editing text that also has Asian words. @@ -6919,7 +7101,7 @@ A jump table for the options with a short description can be found at |Q_op|. become empty. This will make a group like the following disappear completely from the statusline when none of the flags are set. > :set statusline=...%(\ [%M%R%H]%)... -< +< *g:actual_curbuf* Beware that an expression is evaluated each and every time the status line is displayed. The current buffer and current window will be set temporarily to that of the window (and buffer) whose statusline is @@ -7045,6 +7227,7 @@ A jump table for the options with a short description can be found at |Q_op|. split If included, split the current window before loading a buffer for a |quickfix| command that display errors. Otherwise: do not split, use current window. + vsplit Just like "split" but split vertically. newtab Like "split", but open a new tab page. Overrules "split" when both are present. @@ -7175,19 +7358,22 @@ A jump table for the options with a short description can be found at |Q_op|. < [The whitespace before and after the '0' must be a single <Tab>] When a binary search was done and no match was found in any of the - files listed in 'tags', and 'ignorecase' is set or a pattern is used + files listed in 'tags', and case is ignored or a pattern is used instead of a normal tag name, a retry is done with a linear search. Tags in unsorted tags files, and matches with different case will only be found in the retry. If a tag file indicates that it is case-fold sorted, the second, - linear search can be avoided for the 'ignorecase' case. Use a value - of '2' in the "!_TAG_FILE_SORTED" line for this. A tag file can be - case-fold sorted with the -f switch to "sort" in most unices, as in - the command: "sort -f -o tags tags". For "Exuberant ctags" version - 5.x or higher (at least 5.5) the --sort=foldcase switch can be used - for this as well. Note that case must be folded to uppercase for this - to work. + linear search can be avoided when case is ignored. Use a value of '2' + in the "!_TAG_FILE_SORTED" line for this. A tag file can be case-fold + sorted with the -f switch to "sort" in most unices, as in the command: + "sort -f -o tags tags". For "Exuberant ctags" version 5.x or higher + (at least 5.5) the --sort=foldcase switch can be used for this as + well. Note that case must be folded to uppercase for this to work. + + By default, tag searches are case-sensitive. Case is ignored when + 'ignorecase' is set and 'tagcase' is "followic", or when 'tagcase' is + "ignore". When 'tagbsearch' is off, tags searching is slower when a full match exists, but faster when no full match exists. Tags in unsorted tags @@ -7199,6 +7385,16 @@ A jump table for the options with a short description can be found at |Q_op|. command-line completion and ":help"). {Vi: always uses binary search in some versions} + *'tagcase'* *'tc'* +'tagcase' 'tc' string (default "followic") + global or local to buffer |global-local| + {not in Vi} + This option specifies how case is handled when searching the tags + file: + followic Follow the 'ignorecase' option + ignore Ignore case + match Match case + *'taglength'* *'tl'* 'taglength' 'tl' number (default 0) global @@ -7253,6 +7449,17 @@ A jump table for the options with a short description can be found at |Q_op|. Resetting this option is useful when using a ":tag" command in a mapping which should not change the tagstack. + *'tcldll'* +'tcldll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+tcl/dyn| + feature} + Specifies the name of the Tcl shared library. The default is + DYNAMIC_TCL_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'term'* *E529* *E530* *E531* 'term' string (default is $TERM, if that fails: in the GUI: "builtin_gui" @@ -7301,14 +7508,12 @@ A jump table for the options with a short description can be found at |Q_op|. the GUI it only applies to the keyboard ( 'encoding' is used for the display). Except for the Mac when 'macatsui' is off, then 'termencoding' should be "macroman". - In the Win32 console version the default value is the console codepage - when it differs from the ANSI codepage. *E617* Note: This does not apply to the GTK+ 2 GUI. After the GUI has been successfully initialized, 'termencoding' is forcibly set to "utf-8". Any attempts to set a different value will be rejected, and an error message is shown. - For the Win32 GUI 'termencoding' is not used for typed characters, + For the Win32 GUI and console versions 'termencoding' is not used, because the Win32 system always passes Unicode characters. When empty, the same encoding is used as for the 'encoding' option. This is the normal value. @@ -7358,8 +7563,10 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Maximum width of text that is being inserted. A longer line will be broken after white space to get this width. A zero value disables - this. 'textwidth' is set to 0 when the 'paste' option is set. When - 'textwidth' is zero, 'wrapmargin' may be used. See also + this. + 'textwidth' is set to 0 when the 'paste' option is set and restored + when 'paste' is reset. + When 'textwidth' is zero, 'wrapmargin' may be used. See also 'formatoptions' and |ins-textwidth|. When 'formatexpr' is set it will be used to break the line. NOTE: This option is set to 0 when 'compatible' is set. @@ -7898,9 +8105,9 @@ A jump table for the options with a short description can be found at |Q_op|. % When included, save and restore the buffer list. If Vim is started with a file name argument, the buffer list is not restored. If Vim is started without a file name argument, the - buffer list is restored from the viminfo file. Buffers - without a file name and buffers for help files are not written - to the viminfo file. + buffer list is restored from the viminfo file. Quickfix + ('buftype'), unlisted ('buflisted'), unnamed and buffers on + removable media (|viminfo-r|) are not saved. When followed by a number, the number specifies the maximum number of buffers that are stored. Without a number all buffers are stored. @@ -8381,6 +8588,8 @@ A jump table for the options with a short description can be found at |Q_op|. Options that add a margin, such as 'number' and 'foldcolumn', cause the text width to be further reduced. This is Vi compatible. When 'textwidth' is non-zero, this option is not used. + This option is set to 0 when 'paste' is set and restored when 'paste' + is reset. See also 'formatoptions' and |ins-textwidth|. {Vi: works differently and less usefully} diff --git a/en/os_os2.txt b/en/os_os2.txt index 231d7d102..53bb79927 100644 --- a/en/os_os2.txt +++ b/en/os_os2.txt @@ -1,221 +1,13 @@ -*os_os2.txt* For Vim version 7.4. Last change: 2007 Apr 22 +*os_os2.txt* For Vim version 7.4. Last change: 2015 Dec 31 VIM REFERENCE MANUAL by Paul Slootman *os2* *OS2* *OS/2* -This file contains the particularities for the OS/2 version of Vim. +This file used to contain the particularities for the OS/2 version of Vim. -At present there is no native PM version of the GUI version of Vim: The OS/2 -version is a console application. However, there is now a Win32s-compatible -GUI version, which should be usable by owners of Warp 4 (which supports -Win32s) in a Win-OS/2 session. The notes in this file refer to the native -console version. +The OS/2 support was removed in patch 7.4.1008. -NOTE - -This OS/2 port works well for me and a couple of other OS/2 users; however, -since I haven't had much feedback, that either means no (OS/2-specific) bugs -exist (besides the ones mentioned below), or no one has yet created a -situation in which any bugs are apparent. File I/O in Dos and Unix mode, -binary mode, and FAT handling all seem to work well, which would seem to be -the most likely places for trouble. - -A known problem is that files opened by Vim are inherited by other programs -that are started via a shell escape from within Vim. This specifically means -that Vim won't be able to remove the swap file(s) associated with buffers open -at the time the other program was started, until the other program is stopped. -At that time, the swap file may be removed, but if Vim could not do that the -first time, it won't be removed at all. You'll get warnings that some other -Vim session may be editing the file when you start Vim up again on that file. -This can be reproduced with ":!start epm". Now quit Vim, and start Vim again -with the file that was in the buffer at the time epm was started. I'm working -on this! - -A second problem is that Vim doesn't understand the situation when using it -when accessing the OS/2 system via the network, e.g. using telnet from a Unix -system, and then starting Vim. The problem seems to be that OS/2 =sometimes= -recognizes function / cursor keys, and tries to convert those to the -corresponding OS/2 codes generated by the "normal" PC keyboard. I've been -testing a workaround (mapping the OS/2 codes to the correct functions), but so -far I can't say anything conclusive (this is on Warp 3, by the way). In the -meantime any help will be appreciated. - - -PREREQUISITES - -To run Vim, you need the emx runtime environment (at least rev. 0.9b). This -is generally available as (ask Archie about it): - - emxrt.zip emx runtime package - -I've included a copy of emx.dll, which should be copied to one of the -directories listed in your LIBPATH. Emx is GPL'ed, but the emx.dll library is -not (read COPYING.EMX to find out what that means to you). - -This emx.dll is from the emxfix04.zip package, which unfortunately has a bug, -eh, I mean a POSIX feature, in select(). Versions of Vim before 3.27 will -appear to hang when starting (actually, while processing vimrc). Hit <Enter> a -couple of times until Vim starts working if this happens. Next, get an up to -date version of Vim! - - -HELP AND VIMRC FILE - -If you unpack the archive that Vim came in and run Vim directly from where it -was unpacked, Vim should be able to find the runtime files and your .vimrc -without any settings. - -If you put the runtime files separately from the binary, the VIM environment -variable is used to find the location of the help files and the system .vimrc. -Place an entry such as this in CONFIG.SYS: > - - SET VIM=c:/local/lib/vim - -Put your .vimrc and your other Vim files in this directory. Copy the runtime -directory to this directory. Each version of Vim has its own runtime -directory. It will be called something like "c:/local/lib/vim/vim54". Thus -you get a tree of Vim files like this: - c:/local/lib/vim/.vimrc - c:/local/lib/vim/vim54/filetype.vim - c:/local/lib/vim/vim54/doc/help.txt - etc. - -Note: .vimrc may also be called _vimrc to accommodate those who have chosen to -install OS/2 on a FAT file system. Vim first tries to find .vimrc and if that -fails, looks for _vimrc in the same place. The existence of a .vimrc or -_vimrc file influences the 'compatible' options, which can have unexpected side -effects. See |'compatible'|. - -If you're using network drives with OS/2, then you can install Vim on a -network drive (including .vimrc; this is then called the "system" vimrc file), -and then use a personal copy of .vimrc (the "user" vimrc file). This should be -located in a directory indicated by the HOME environment variable. - - -ENVIRONMENT VARIABLES IN FILE NAMES - -This HOME environment variable is also used when using ~ in file names, so -":e ~/textfile" will edit the file "textfile" in the directory referred to by -HOME. Additionally you can use other environment variables in file names, as -in ":n $SRC/*.c". - -The HOME environment variable is also used to locate the .viminfo file -(see |viminfo-file|). There is no support yet for .viminfo on FAT file -systems yet, sorry. You could try the -i startup flag (as in "vim -i -$HOME/_viminfo") however. - -If the HOME environment variable is not set, the value "C:/" is used as a -default. - - -BACKSLASHES - -Using slashes ('/') and backslashes ('\') can be a bit of a problem (see -|dos-backslash| for more explanation), but in almost all cases Vim does "The -Right Thing". Vim itself uses backslashes in file names, but will happily -accept forward slashes if they are entered (in fact, sometimes that works -better!). - - -TEMP FILES - -Temporary files (for filtering) are put in the first directory in the next -list that exists and where a file can be created: - $TMP - $TEMP - C:\TMP - C:\TEMP - current directory - - -TERMINAL SETTING - - *os2ansi* -Use "os2ansi" as the TERM environment variable (or don't set it at all, as the -default is the correct value). You can set term to os2ansi in the .vimrc, in -case you need TERM to be a different value for other applications. The -problem is that OS/2 ANSI emulation is quite limited (it doesn't have insert / -delete line, for example). - -If you want to use a different value for TERM (because of other programs, for -example), make sure that the termcap entry for that TERM value has the -appropriate key mappings. The termcap.dat distributed with emx does not always -have them. Here are some suitable values to add to the termcap entry of your -choice; these allow the cursor keys and the named function keys (such as -pagedown) to work. - - :ku=\316H:kd=\316P:kl=\316K:kr=\316M:%i=\316t:#4=\316s:\ - :kD=\316S:kI=\316R:kN=\316Q:kP=\316I:kh=\316G:@7=\316O:\ - :k1=\316;:k2=\316<:k3=\316=:k4=\316>:k5=\316?:k6=\316@:\ - :k7=\316A:k8=\316B:k9=\316C:k;=\316D: - - -Paul Slootman - - -43 LINE WINDOW - -A suggestion from Steven Tryon, on how to run Vim in a bigger window: - -When I call Vim from an OS/2 WPS application such as PMMail it comes up -in the default 25-line mode. To get a more useful window size I make -my external editor "vimbig.cmd" which in turn calls "vimbig2.cmd". -Brute force and awkwardness, perhaps, but it works. - -vimbig.cmd: > - @echo off - start "Vi Improved" /f vimbig2.cmd %1 %2 %3 %4 - -vimbig2.cmd: > - @echo off - mode 80,43 - vim.exe %1 %2 %3 %4 - exit -< - -CLIPBOARD ACCESS (provided by Alexander Wagner) - -Vim for OS/2 has no direct access to the system clipboard. To enable access -anyway you need an additional tool which gives you access to the clipboard -from within a vio application. The freeware package clipbrd.zip by Stefan -Gruendel can be used for this purpose. You might download the package -including precompiled binaries and all sources from: - http://www.os2site.com/sw/util/clipboard/index.html - http://download.uni-hd.de/ftp/pub/os2/pmtools/ - -Installation of this package is straight forward: just put the two executables -that come with this package into a directory within your PATH for Vim should -be able to call them from whatever directory you are working. - -To copy text from the clipboard to your Vim session you can use the :r -command. Simply call clipbrd.exe from within Vim in the following way: > - - :r !clipbrd -r - -To copy text from Vim to the system clipboard just mark the text in the usual -vim-manner and call: > - - :!clipbrd -w - -which will write your selection right into OS/2's clipboard. - -For ease of use you might want to add some maps for these commands. E.g. to -use F11 to paste the clipboard into Vim and F12 to copy selected text to the -clipboard you would use: > - - if has("os2") - imap <F11> <ESC>:r !clipbrd -r<CR>i - vmap <F12> :!clipbrd -w<cr> - else - imap <F11> <ESC>"*p<CR>i - vmap <F12> "*y - endif - -This will ensure that only on OS/2 clipbrd is called whereas on other -platforms vims build in mechanism is used. (To enable this functions on every -load of Vim place the above lines in your .vimrc.) - vim:tw=78:ts=8:ft=help:norl: diff --git a/en/pattern.txt b/en/pattern.txt index 322811b7c..2a3d2c482 100644 --- a/en/pattern.txt +++ b/en/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.4. Last change: 2014 Sep 06 +*pattern.txt* For Vim version 7.4. Last change: 2016 Jan 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -59,6 +59,8 @@ explanations are in chapter 27 |usr_27.txt|. *n* n Repeat the latest "/" or "?" [count] times. + If the cursor doesn't move the search is repeated with + count + 1. |last-pattern| {Vi: no count} *N* @@ -391,8 +393,8 @@ Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used. Use of "\v" means that in the pattern after it all ASCII characters except '0'-'9', 'a'-'z', 'A'-'Z' and '_' have a special meaning. "very magic" -Use of "\V" means that in the pattern after it only the backslash has a -special meaning. "very nomagic" +Use of "\V" means that in the pattern after it only the backslash and the +terminating character (/ or ?) has a special meaning. "very nomagic" Examples: after: \v \m \M \V matches ~ @@ -400,6 +402,7 @@ after: \v \m \M \V matches ~ $ $ $ \$ matches end-of-line . . \. \. matches any character * * \* \* any number of the previous atom + ~ ~ \~ \~ latest substitute string () \(\) \(\) \(\) grouping into an atom | \| \| \| separating alternatives \a \a \a \a alphabetic character @@ -478,6 +481,7 @@ More explanation and examples below, follow the links. |/\%v| \%23v \%23v in virtual column 23 |/zero-width| Character classes {not in Vi}: */character-classes* + magic nomagic matches ~ |/\i| \i \i identifier character (see 'isident' option) |/\I| \I \I like "\i", but excluding digits |/\k| \k \k keyword character (see 'iskeyword' option) @@ -508,6 +512,7 @@ Character classes {not in Vi}: */character-classes* class with end-of-line included (end of character classes) + magic nomagic matches ~ |/\e| \e \e <Esc> |/\t| \t \t <Tab> |/\r| \r \r <CR> @@ -533,6 +538,7 @@ Character classes {not in Vi}: */character-classes* |/\Z| \Z \Z ignore differences in Unicode "combining characters". Useful when searching voweled Hebrew or Arabic text. + magic nomagic matches ~ |/\m| \m \m 'magic' on for the following chars in the pattern |/\M| \M \M 'magic' off for the following chars in the pattern |/\v| \v \v the following chars in the pattern are "very magic" @@ -1058,7 +1064,10 @@ x A single character, with no special meaning, matches itself *E769* When the ']' is not there Vim will not give an error message but assume no collection is used. Useful to search for '['. However, you - do get E769 for internal searching. + do get E769 for internal searching. And be aware that in a + `:substitute` command the whole command becomes the pattern. E.g. + ":s/[/x/" searches for "[/x" and replaces it with nothing. It does + not search for "[" and replaces it with "x"! If the sequence begins with "^", it matches any single character NOT in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'. @@ -1093,7 +1102,10 @@ x A single character, with no special meaning, matches itself plausible pattern for a UNIX filename: "[-./[:alnum:]_~]\+" That is, a list of at least one character, each of which is either '-', '.', '/', alphabetic, numeric, '_' or '~'. - These items only work for 8-bit characters. + These items only work for 8-bit characters, except [:lower:] and + [:upper:] also work for multi-byte characters when using the new + regexp engine. In the future these items may work for multi-byte + characters. */[[=* *[==]* - An equivalence class. This means that characters are matched that have almost the same meaning, e.g., when ignoring accents. This diff --git a/en/pi_netrw.txt b/en/pi_netrw.txt index 32f576af6..3ca221f0f 100644 --- a/en/pi_netrw.txt +++ b/en/pi_netrw.txt @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim version 7.4. Last change: 2014 May 13 +*pi_netrw.txt* For Vim version 7.4. Last change: 2015 Oct 31 ------------------------------------------------ NETRW REFERENCE MANUAL by Charles E. Campbell @@ -6,7 +6,7 @@ Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* +Copyright: Copyright (C) 1999-2015 Charles E Campbell *netrw-copyright* The VIM LICENSE applies to the files in this package, including netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and syntax/netrw.vim. Like anything else that's free, netrw.vim and its @@ -18,9 +18,10 @@ Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* software. Use at your own risk! + *netrw* *dav* *ftp* *netrw-file* *rcp* *scp* *davs* *http* *netrw.vim* *rsync* *sftp* - *fetch* *netrw* *network* + *fetch* *network* ============================================================================== 1. Contents *netrw-contents* {{{1 @@ -57,7 +58,7 @@ Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* Changing To A Bookmarked Directory..................|netrw-gb| Changing To A Predecessor Directory.................|netrw-u| Changing To A Successor Directory...................|netrw-U| - Customizing Browsing With A User Function...........|netrw-x| + Customizing Browsing With A Special Handler.........|netrw-x| Deleting Bookmarks..................................|netrw-mB| Deleting Files Or Directories.......................|netrw-D| Directory Exploring Commands........................|netrw-explore| @@ -76,7 +77,9 @@ Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* Unmarking Files.....................................|netrw-mF| Marking Files By QuickFix List......................|netrw-qF| Marking Files By Regular Expression.................|netrw-mr| - Marked Files: Arbitrary Command.....................|netrw-mx| + Marked Files: Arbitrary Shell Command...............|netrw-mx| + Marked Files: Arbitrary Shell Command, En Bloc......|netrw-mX| + Marked Files: Arbitrary Vim Command.................|netrw-mv| Marked Files: Compression And Decompression.........|netrw-mz| Marked Files: Copying...............................|netrw-mc| Marked Files: Diff..................................|netrw-md| @@ -209,6 +212,7 @@ EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2 rsync: *g:netrw_rsync_cmd* = "rsync -a" scp: *g:netrw_scp_cmd* = "scp -q" sftp: *g:netrw_sftp_cmd* = "sftp" + file: *g:netrw_file_cmd* = "elinks" or "links" *g:netrw_http_xcmd* : the option string for http://... protocols are specified via this variable and may be independently overridden. By @@ -346,7 +350,7 @@ settings are described below, in |netrw-browser-options|, and in per-buffer basis (supports plain :Nw ) *g:netrw_bufsettings* the settings that netrw buffers have - (default) noma nomod nonu nowrap ro nobl + (default) noma nomod nonu nowrap ro nobl *g:netrw_chgwin* specifies a window number where subsequent file edits will take place. (also see |netrw-C|) @@ -363,7 +367,12 @@ settings are described below, in |netrw-browser-options|, and in fun! MyFuncRef() endfun let g:Netrw_funcref= function("MyFuncRef") + < + *g:Netrw_UserMaps* specifies a function or |List| of functions which can + be used to set up user-specified maps and functionality. + See |netrw-usermaps| + *g:netrw_ftp* if it doesn't exist, use default ftp =0 use default ftp (uid password) =1 use alternate ftp method (user uid password) @@ -399,18 +408,26 @@ settings are described below, in |netrw-browser-options|, and in be available (see |netrw-gx|) *g:netrw_uid* (ftp) user-id, retained on a per-vim-session basis - *s:netrw_passwd* (ftp) password, retained on a per-vim-session basis + *s:netrw_passwd* (ftp) password, retained on a per-vim-session basis *g:netrw_preview* =0 (default) preview window shown in a horizontally split window =1 preview window shown in a vertically split window. Also affects the "previous window" (see |netrw-P|) in the same way. + The |g:netrw_alto| variable may be used to provide + additional splitting control: + g:netrw_preview g:netrw_alto result + 0 0 |:aboveleft| + 0 1 |:belowright| + 1 0 |:topleft| + 1 1 |:botright| + To control sizing, see |g:netrw_winsize| *g:netrw_scpport* = "-P" : option to use to set port for scp *g:netrw_sshport* = "-p" : option to use to set port for ssh - *g:netrw_sepchr* =\0xff + *g:netrw_sepchr* =\0xff =\0x01 for enc == euc-jp (and perhaps it should be for others, too, please let me know) Separates priority codes from filenames internally. @@ -430,7 +447,7 @@ settings are described below, in |netrw-browser-options|, and in lines that o/s's ftp "provides" on transfers =0 force normal ftp behavior (no trailing line removal) - *g:netrw_cygwin* =1 assume scp under windows is from cygwin. Also + *g:netrw_cygwin* =1 assume scp under windows is from cygwin. Also permits network browsing to use ls with time and size sorting (default if windows) =0 assume Windows' scp accepts windows-style paths @@ -681,6 +698,16 @@ your <.vimrc> customization file: > filetype plugin indent on endif < +By also including the following lines in your .vimrc, one may have netrw +immediately activate when using [g]vim without any filenames, showing the +current directory: > + + " Augroup VimStartup: + augroup VimStartup + au! + au VimEnter * if expand("%") == "" | e . | endif + augroup END +< ============================================================================== 6. Transparent Remote File Editing *netrw-transparent* {{{1 @@ -838,7 +865,7 @@ variables listed below, and may be modified by the user. g:netrw_http_cmd var ="fetch -o" if fetch is available g:netrw_http_cmd var ="wget -O" else if wget is available g:netrw_http_put_cmd var ="curl -T" - g:netrw_list_cmd var ="ssh USEPORT HOSTNAME ls -Fa" + |g:netrw_list_cmd| var ="ssh USEPORT HOSTNAME ls -Fa" g:netrw_rcp_cmd var ="rcp" g:netrw_rsync_cmd var ="rsync -a" g:netrw_scp_cmd var ="scp -q" @@ -1042,6 +1069,10 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 < <F1> Causes Netrw to issue help <cr> Netrw will enter the directory or read the file |netrw-cr| <del> Netrw will attempt to remove the file/directory |netrw-del| + <c-h> Edit file hiding list |netrw-ctrl-h| + <c-l> Causes Netrw to refresh the directory listing |netrw-ctrl-l| + <c-r> Browse using a gvim server |netrw-ctrl-r| + <c-tab> Shrink/expand a netrw/explore window |netrw-c-tab| - Makes Netrw go up one directory |netrw--| a Toggles between normal display, |netrw-a| hiding (suppress display of files matching g:netrw_list_hide) @@ -1051,23 +1082,28 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 d Make a directory |netrw-d| D Attempt to remove the file(s)/directory(ies) |netrw-D| gb Go to previous bookmarked directory |netrw-gb| + gd Force treatment as directory |netrw-gd| + gf Force treatment as file |netrw-gf| gh Quick hide/unhide of dot-files |netrw-gh| - <c-h> Edit file hiding list |netrw-ctrl-h| + gn Make top of tree the directory below the cursor |netrw-gn| i Cycle between thin, long, wide, and tree listings |netrw-i| - <c-l> Causes Netrw to refresh the directory listing |netrw-ctrl-l| mb Bookmark current directory |netrw-mb| mc Copy marked files to marked-file target directory |netrw-mc| md Apply diff to marked files (up to 3) |netrw-md| me Place marked files on arg list and edit them |netrw-me| mf Mark a file |netrw-mf| + mF Unmark files |netrw-mF| + mg Apply vimgrep to marked files |netrw-mg| mh Toggle marked file suffices' presence on hiding list |netrw-mh| mm Move marked files to marked-file target directory |netrw-mm| mp Print marked files |netrw-mp| - mr Mark files satisfying a shell-style |regexp| |netrw-mr| + mr Mark files using a shell-style |regexp| |netrw-mr| mt Current browsing directory becomes markfile target |netrw-mt| mT Apply ctags to marked files |netrw-mT| mu Unmark all marked files |netrw-mu| + mv Apply arbitrary vim command to marked files |netrw-mv| mx Apply arbitrary shell command to marked files |netrw-mx| + mX Apply arbitrary shell command to marked files en bloc|netrw-mX| mz Compress/decompress marked files |netrw-mz| o Enter the file/directory under the cursor in a new |netrw-o| browser window. A horizontal split is used. @@ -1076,8 +1112,9 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 P Browse in the previously used window |netrw-P| qb List bookmarked directories and history |netrw-qb| qf Display information on file |netrw-qf| + qF Mark files using a quickfix list |netrw-qF| r Reverse sorting order |netrw-r| - R Rename the designed file(s)/directory(ies) |netrw-R| + R Rename the designated file(s)/directory(ies) |netrw-R| s Select sorting style: by name, time, or file size |netrw-s| S Specify suffix priority for name-sorting |netrw-S| t Enter the file/directory under the cursor in a new tab|netrw-t| @@ -1099,7 +1136,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 mouse <2-leftmouse> (gvim only) when: * in a netrw-selected file, AND - * |g:netrw_retmap| == 1 AND + * |g:netrw_retmap| == 1 AND * the user doesn't already have a <2-leftmouse> mapping defined before netrw is autoloaded, then a double clicked leftmouse button will return @@ -1117,7 +1154,7 @@ QUICK REFERENCE: COMMANDS *netrw-explore-cmds* *netrw-browse-cmds* {{{2 :Ntree....................................................|netrw-ntree| :Explore[!] [dir] Explore directory of current file......|netrw-explore| :Hexplore[!] [dir] Horizontal Split & Explore.............|netrw-explore| - :Lexplore [dir] Left Explorer Toggle...................|netrw-explore| + :Lexplore[!] [dir] Left Explorer Toggle...................|netrw-explore| :Nexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| :Pexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| :Rexplore Return to Explorer.....................|netrw-explore| @@ -1125,19 +1162,45 @@ QUICK REFERENCE: COMMANDS *netrw-explore-cmds* *netrw-browse-cmds* {{{2 :Texplore[!] [dir] Tab & Explore..........................|netrw-explore| :Vexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| -BOOKMARKING A DIRECTORY *netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2 +BOOKMARKING A DIRECTORY *netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2 -One may easily "bookmark" a directory by using > +One may easily "bookmark" the currently browsed directory by using > mb < + *.netrwbook* Bookmarks are retained in between sessions in a $HOME/.netrwbook file, and are kept in sorted order. +If there are marked files and/or directories, mb will add them to the bookmark +list. + +*netrw-:NetrwMB* +Addtionally, one may use :NetrwMB to bookmark files or directories. > + + :NetrwMB[!] [files/directories] + +< No bang: enters files/directories into Netrw's bookmark system + + No argument and in netrw buffer: + if there are marked files : bookmark marked files + otherwise : bookmark file/directory under cursor + No argument and not in netrw buffer: bookmarks current open file + Has arguments : |glob()|s each arg and bookmarks them + + With bang: deletes files/directories from Netrw's bookmark system + +The :NetrwMB command is available outside of netrw buffers (once netrw has been +invoked in the session). + +The file ".netrwbook" holds bookmarks when netrw (and vim) is not active. By +default, its stored on the first directory on the user's |'runtimepath'|. + Related Topics: |netrw-gb| how to return (go) to a bookmark |netrw-mB| how to delete bookmarks |netrw-qb| how to list bookmarks + |g:netrw_home| controls where .netrwbook is kept BROWSING *netrw-cr* {{{2 @@ -1163,7 +1226,7 @@ horizontally or vertically, respectively. When the option is set to three, a When using the gui (gvim), one may select a file by pressing the <leftmouse> button. In addition, if - *|g:netrw_retmap| == 1 AND (its default value is 0) + * |g:netrw_retmap| == 1 AND (its default value is 0) * in a netrw-selected file, AND * the user doesn't already have a <2-leftmouse> mapping defined before netrw is loaded @@ -1181,19 +1244,20 @@ The price for such re-use is that when changes are made (such as new files are introduced into a directory), the listing may become out-of-date. One may always refresh directory listing buffers by pressing ctrl-L (see |netrw-ctrl-l|). - *:netrw-s-cr* Squeezing the Current Tree-Listing Directory~ When the tree listing style is enabled (see |netrw-i|) and one is using gvim, then the <s-cr> mapping may be used to squeeze (close) the directory currently containing the cursor. - -Related topics: |netrw-o| |netrw-p| |netrw-P| |netrw-t| |netrw-v| -Associated setting variables: |g:netrw_browse_split| |g:netrw_fastbrowse| - |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| - |g:netrw_ftp_timelist_cmd| |g:netrw_ssh_cmd| - |g:netrw_ssh_browse_reject| |g:netrw_use_noswf| +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| +Associated setting variables: + |g:netrw_browse_split| |g:netrw_fastbrowse| + |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| + |g:netrw_ftp_timelist_cmd| |g:netrw_ssh_browse_reject| + |g:netrw_ssh_cmd| |g:netrw_use_noswf| BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz* {{{2 @@ -1207,12 +1271,14 @@ cursor at the top. Associated setting variables: |g:netrw_alto| |g:netrw_winsize| -Related Actions |netrw-cr| |netrw-p| |netrw-t| |netrw-v| +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| Associated setting variables: |g:netrw_alto| control above/below splitting |g:netrw_winsize| control initial sizing -BROWSING WITH A NEW TAB *netrw-t* +BROWSING WITH A NEW TAB *netrw-t* {{{2 Normally one enters a file or directory using the <cr>. The "t" map allows one to open a new window holding the new directory listing or file in @@ -1220,7 +1286,9 @@ a new tab. If you'd like to have the new listing in a background tab, use |gT|. -Related Actions |netrw-cr| |netrw-o| |netrw-p| |netrw-v| +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| Associated setting variables: |g:netrw_winsize| control initial sizing @@ -1236,13 +1304,30 @@ cursor at the left. There is only one tree listing buffer; using "v" on a displayed subdirectory will split the screen, but the same buffer will be shown twice. -Related Actions: |netrw-cr| |netrw-o| |netrw-t| |netrw-v| +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| Associated setting variables: |g:netrw_altv| control right/left splitting |g:netrw_winsize| control initial sizing -CHANGE LISTING STYLE (THIN LONG WIDE TREE) *netrw-i* {{{2 +BROWSING USING A GVIM SERVER *netrw-ctrl-r* {{{2 + +One may keep a browsing gvim separate from the gvim being used to edit. +Use the <c-r> map on a file (not a directory) in the netrw browser, and it +will use a gvim server (see |g:netrw_servername|). Subsequent use of <cr> +(see |netrw-cr|) will re-use that server for editing files. + +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| +Associated setting variables: + |g:netrw_servername| : sets name of server + |g:netrw_browse_split| : controls how <cr> will open files + + +CHANGE LISTING STYLE (THIN LONG WIDE TREE) *netrw-i* {{{2 The "i" map cycles between the thin, long, wide, and tree listing formats. @@ -1267,7 +1352,7 @@ name. One may make a preferred listing style your default; see |g:netrw_liststyle|. As an example, by putting the following line in your .vimrc, > - let g:netrw_liststyle= 4 + let g:netrw_liststyle= 3 the tree style will become your default listing style. One typical way to use the netrw tree display is to: > @@ -1318,18 +1403,25 @@ list (unless |g:netrw_dirhistmax| is zero; by default, it's ten). With the the opposite, see |netrw-U|. The "u" map also accepts counts to go back in the history several slots. -For your convenience, |netrw-qb| lists the history number which can be -re-used in that count. +For your convenience, qb (see |netrw-qb|) lists the history number which may +be used in that count. + *.netrwhist* See |g:netrw_dirhistmax| for how to control the quantity of history stack -slots. +slots. The file ".netrwhist" holds history when netrw (and vim) is not +active. By default, its stored on the first directory on the user's +|'runtimepath'|. + +Related Topics: + |netrw-U| changing to a successor directory + |g:netrw_home| controls where .netrwhist is kept CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir* {{{2 With the "U" map, one can change to a later directory (successor). This map is the opposite of the "u" map. (see |netrw-u|) Use the -q map to list both the bookmarks and history. (see |netrw-qb|) +qb map to list both the bookmarks and history. (see |netrw-qb|) The "U" map also accepts counts to go forward in the history several slots. @@ -1337,7 +1429,7 @@ See |g:netrw_dirhistmax| for how to control the quantity of history stack slots. -CHANGING TREE TOP *netrw-ntree* *:Ntree* +CHANGING TREE TOP *netrw-ntree* *:Ntree* *netrw-gn* {{{2 One may specify a new tree top for tree listings using > @@ -1347,30 +1439,34 @@ Without a "dirname", the current line is used (and any leading depth information is elided). With a "dirname", the specified directory name is used. +The "gn" map will take the word below the cursor and use that for +changing the top of the tree listing. -NETRW CLEAN *netrw-clean* *:NetrwClean* -With :NetrwClean one may easily remove netrw from one's home directory; +NETRW CLEAN *netrw-clean* *:NetrwClean* {{{2 + +With NetrwClean one may easily remove netrw from one's home directory; more precisely, from the first directory on your |'runtimepath'|. -With :NetrwClean!, netrw will remove netrw from all directories on your -|'runtimepath'|. +With NetrwClean!, netrw will attempt to remove netrw from all directories on +your |'runtimepath'|. Of course, you have to have write/delete permissions +correct to do this. With either form of the command, netrw will first ask for confirmation that the removal is in fact what you want to do. If netrw doesn't have permission to remove a file, it will issue an error message. *netrw-gx* -CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* *netrw-handler* {{{2 +CUSTOMIZING BROWSING WITH A SPECIAL HANDLER *netrw-x* *netrw-handler* {{{2 (also see |netrw_filehandler|) Certain files, such as html, gif, jpeg, (word/office) doc, etc, files, are -best seen with a special handler (ie. a tool provided with your computer). -Netrw allows one to invoke such special handlers by: > +best seen with a special handler (ie. a tool provided with your computer's +operating system). Netrw allows one to invoke such special handlers by: > * when Exploring, hit the "x" key * when editing, hit gx with the cursor atop the special filename -< (not available if the |g:netrw_nogx| variable exists) +< (latter not available if the |g:netrw_nogx| variable exists) Netrw determines which special handler by the following method: @@ -1379,14 +1475,14 @@ Netrw determines which special handler by the following method: :let g:netrw_browsex_viewer= "kfmclient exec" < or > - :let g:netrw_browsex_viewer= "gnome-open" + :let g:netrw_browsex_viewer= "xdg-open" < - If g:netrw_browsex_viewer == '-', then netrwFileHandler() will be - invoked first (see |netrw_filehandler|). + If g:netrw_browsex_viewer == '-', then netrwFileHandlers#Invoke() will be + used instead (see |netrw_filehandler|). * for Windows 32 or 64, the url and FileProtocolHandler dlls are used. * for Gnome (with gnome-open): gnome-open is used. - * for KDE (with kfmclient) : kfmclient is used. + * for KDE (with kfmclient) : kfmclient is used * for Mac OS X : open is used. * otherwise the netrwFileHandler plugin is used. @@ -1395,17 +1491,31 @@ appropriate application to use to "handle" these files. Such things as OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps, *.eps) can be handled. +The gx mapping extends to all buffers; apply "gx" while atop a word and netrw +will apply a special handler to it (like "x" works when in a netrw buffer). +One may also use visual mode (see |visual-start|) to select the text that the +special handler will use. Normally gx uses expand("<cfile>") to pick up the +text under the cursor; one may change what |expand()| uses via the +|g:netrw_gx| variable. Alternatively, one may select the text to be used by +gx via first making a visual selection (see |visual-block|). + +Associated setting variables: + |g:netrw_gx| control how gx picks up the text under the cursor + |g:netrw_nogx| prevent gx map while editing + *netrw_filehandler* -The "x" map applies a function to a file, based on its extension. Of course, -the handler function must exist for it to be called! +When |g:netrw_browsex_viewer| exists and is "-", then netrw will attempt to +handle the special file with a vim function. The "x" map applies a function +to a file, based on its extension. Of course, the handler function must exist +for it to be called! > - Ex. mypgm.html x -> - NFH_html("scp://user@host/some/path/mypgm.html") -< -Users may write their own netrw File Handler functions to support more -suffixes with special handling. See <autoload/netrwFileHandlers.vim> for -examples on how to make file handler functions. As an example: > + Ex. mypgm.html x -> NFH_html("scp://user@host/some/path/mypgm.html") + +< Users may write their own netrw File Handler functions to + support more suffixes with special handling. See + <autoload/netrwFileHandlers.vim> for examples on how to make + file handler functions. As an example: > " NFH_suffix(filename) fun! NFH_suffix(filename) @@ -1439,7 +1549,14 @@ DELETING BOOKMARKS *netrw-mB* {{{2 To delete a bookmark, use > {cnt}mB -< + +If there are marked files, then mB will remove them from the +bookmark list. + +Alternatively, one may use :NetrwMB! (see |netrw-:NetrwMB|). > + + :NetrwMB! [files/directories] + Related Topics: |netrw-gb| how to return (go) to a bookmark |netrw-mb| how to make a bookmark @@ -1498,11 +1615,11 @@ DIRECTORY EXPLORATION COMMANDS {{{2 :[N]Explore[!] [dir]... Explore directory of current file *:Explore* :[N]Hexplore[!] [dir]... Horizontal Split & Explore *:Hexplore* - :Rexplore ... Return to/from Explorer *:Rexplore* + :[N]Lexplore[!] [dir]... Left Explorer Toggle *:Lexplore* :[N]Sexplore[!] [dir]... Split&Explore current file's directory *:Sexplore* - :Texplore [dir]... Tab & Explore *:Texplore* :[N]Vexplore[!] [dir]... Vertical Split & Explore *:Vexplore* - :Lexplore [dir]... Left Explorer Toggle *:Lexplore* + :Texplore [dir]... Tab & Explore *:Texplore* + :Rexplore ... Return to/from Explorer *:Rexplore* Used with :Explore **/pattern : (also see |netrw-starstar|) :Nexplore............. go to next matching file *:Nexplore* @@ -1511,54 +1628,77 @@ DIRECTORY EXPLORATION COMMANDS {{{2 *netrw-:Explore* :Explore will open the local-directory browser on the current file's directory (or on directory [dir] if specified). The window will be - split only if the file has been modified, otherwise the browsing - window will take over that window. Normally the splitting is taken - horizontally. + split only if the file has been modified and |'hidden'| is not set, + otherwise the browsing window will take over that window. Normally + the splitting is taken horizontally. Also see: |netrw-:Rexplore| :Explore! is like :Explore, but will use vertical splitting. - *netrw-:Lexplore* -:Lexplore [dir] toggles an Explorer window on the left hand side - of the current tab It will open a netrw window on the current - directory if [dir] is omitted; a :Lexplore [dir] will show - the specified directory in the left-hand side browser display - no matter from which window the command is issued. By default, - :Lexplore will change an uninitialized |g:netrw_chgwin| to 2; - edits will thus be preferentially made in window#2. - Also see: |netrw-C|| |g:netrw_chgwin| |g:netrw_winsize| - |netrw-p| |netrw-P|| |g:netrw_browse_split| - *netrw-:Sexplore* -:Sexplore will always split the window before invoking the local-directory - browser. As with Explore, the splitting is normally done - horizontally. -:Sexplore! [dir] is like :Sexplore, but the splitting will be done vertically. + *netrw-:Hexplore* :Hexplore [dir] does an :Explore with |:belowright| horizontal splitting. :Hexplore! [dir] does an :Explore with |:aboveleft| horizontal splitting. - *netrw-:Vexplore* -:Vexplore [dir] does an :Explore with |:leftabove| vertical splitting. -:Vexplore! [dir] does an :Explore with |:rightbelow| vertical splitting. + + *netrw-:Lexplore* +:[N]Lexplore [dir] toggles a full height Explorer window on the left hand side + of the current tab. It will open a netrw window on the current + directory if [dir] is omitted; a :Lexplore [dir] will show the + specified directory in the left-hand side browser display no matter + from which window the command is issued. + + By default, :Lexplore will change an uninitialized |g:netrw_chgwin| + to 2; edits will thus preferentially be made in window#2. + + The [N] specifies a |g:netrw_winsize| just for the new :Lexplore + window. + + Those who like this method often also often like tree style displays; + see |g:netrw_liststyle|. + + Also see: |netrw-C| |g:netrw_browse_split| |g:netrw_wiw| + |netrw-p| |netrw-P| |g:netrw_chgwin| + |netrw-c-tab| |g:netrw_winsize| + +:[N]Lexplore! is like :Lexplore, except that the full-height Explorer window + will open on the right hand side and an uninitialized |g:netrw_chgwin| + will be set to 1. + + *netrw-:Sexplore* +:[N]Sexplore will always split the window before invoking the local-directory + browser. As with Explore, the splitting is normally done + horizontally. +:[N]Sexplore! [dir] is like :Sexplore, but the splitting will be done vertically. + *netrw-:Texplore* :Texplore [dir] does a |:tabnew| before generating the browser window -By default, these commands use the current file's directory. However, one may -explicitly provide a directory (path) to use. + *netrw-:Vexplore* +:[N]Vexplore [dir] does an :Explore with |:leftabove| vertical splitting. +:[N]Vexplore! [dir] does an :Explore with |:rightbelow| vertical splitting. + +The optional parameters are: -The [N] will override |g:netrw_winsize| to specify the quantity of rows and/or -columns the new explorer window should have. + [N]: This parameter will override |g:netrw_winsize| to specify the quantity of + rows and/or columns the new explorer window should have. + Otherwise, the |g:netrw_winsize| variable, if it has been specified by the + user, is used to control the quantity of rows and/or columns new + explorer windows should have. -Otherwise, the |g:netrw_winsize| variable, if it has been specified by the -user, is used to control the quantity of rows and/or columns new explorer -windows should have. + [dir]: By default, these explorer commands use the current file's directory. + However, one may explicitly provide a directory (path) to use instead; + ie. > + :Explore /some/path +< *netrw-:Rexplore* -:Rexplore This command is a little different from the others as it doesn't - necessarily open an Explorer window. +:Rexplore This command is a little different from the other Explore commands + as it doesn't necessarily open an Explorer window. Return to Explorer~ - When one edits a file, for example by pressing <cr> when the - cursor is atop a file in a netrw browser window, :Rexplore will - return the display to that of the last netrw browser display - in that window. + When one edits a file using netrw which can occur, for example, + when pressing <cr> while the cursor is atop a filename in a netrw + browser window, a :Rexplore issued while editing that file will + return the display to that of the last netrw browser display in + that window. Return from Explorer~ Conversely, when one is editing a directory, issuing a :Rexplore @@ -1571,11 +1711,11 @@ windows should have. Also see: |g:netrw_alto| |g:netrw_altv| |g:netrw_winsize| -*netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* -EXPLORING WITH STARS AND PATTERNS +*netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* *netrw-grep* +EXPLORING WITH STARS AND PATTERNS {{{2 When Explore, Sexplore, Hexplore, or Vexplore are used with one of the -following four styles, Explore generates a list of files which satisfy +following four patterns Explore generates a list of files which satisfy the request. > */filepat files in current directory which satisfy filepat @@ -1597,7 +1737,7 @@ will clear the explore list. If your console or gui produces recognizable shift-up or shift-down sequences, then you'll likely find using shift-downarrow and shift-uparrow convenient. -They're mapped by netrw: +They're mapped by netrw as follows: <s-down> == Nexplore, and <s-up> == Pexplore. @@ -1678,7 +1818,7 @@ Related topics: |netrw-s| |netrw-S| Associated setting variables: |g:netrw_sort_sequence| |g:netrw_sort_options| -EXECUTING FILE UNDER CURSOR VIA SYSTEM() *netrw-X* +EXECUTING FILE UNDER CURSOR VIA SYSTEM() *netrw-X* {{{2 Pressing X while the cursor is atop an executable file will yield a prompt using the filename asking for any arguments. Upon pressing a [return], netrw @@ -1769,18 +1909,19 @@ Associated topics: |netrw-a| |netrw-ctrl-h| |netrw-mh| Netrw provides a helper function 'netrw_gitignore#Hide()' that, when used with |g:netrw_list_hide| automatically hides all git-ignored files. -'netrw_gitignore#Hide' searches for patterns in the following files: +'netrw_gitignore#Hide' searches for patterns in the following files: > + './.gitignore' './.git/info/exclude' global gitignore file: `git config --global core.excludesfile` system gitignore file: `git config --system core.excludesfile` - +< Files that do not exist, are ignored. Git-ignore patterns are taken from existing files, and converted to patterns for hiding files. For example, if you had '*.log' in your '.gitignore' file, it would be converted to '.*\.log'. -To use this function, simply assign it's output to |g:netrw_list_hide| option. +To use this function, simply assign its output to |g:netrw_list_hide| option. > Example: let g:netrw_list_hide= netrw_gitignore#Hide() Git-ignored files are hidden in Netrw. @@ -1790,7 +1931,7 @@ To use this function, simply assign it's output to |g:netrw_list_hide| option. Example: g:netrw_list_hide= netrw_gitignore#Hide() . '.*\.swp$' Combining 'netrw_gitignore#Hide' with custom patterns. - +< IMPROVING BROWSING *netrw-listhack* *netrw-ssh-hack* {{{2 @@ -1926,7 +2067,7 @@ Associated setting variable: |g:netrw_keepdir| MARKING FILES *netrw-:MF* *netrw-mf* {{{2 (also see |netrw-mr|) -Netrw has several ways of marking files: +Netrw provides several ways to mark files: * One may mark files with the cursor atop a filename and then pressing "mf". @@ -1949,6 +2090,8 @@ The following netrw maps make use of marked files: |netrw-a| Hide marked files/directories |netrw-D| Delete marked files/directories + |netrw-mb| Append marked files to bookmarks + |netrw-mB| Delete marked files from bookmarks |netrw-mc| Copy marked files to target |netrw-md| Apply vimdiff to marked files |netrw-me| Edit marked files @@ -1958,7 +2101,9 @@ The following netrw maps make use of marked files: |netrw-mp| Print marked files |netrw-mt| Set target for |netrw-mm| and |netrw-mc| |netrw-mT| Generate tags using marked files + |netrw-mv| Apply vim command to marked files |netrw-mx| Apply shell command to marked files + |netrw-mX| Apply shell command to marked files, en bloc |netrw-mz| Compress/Decompress marked files |netrw-O| Obtain marked files |netrw-R| Rename marked files @@ -1982,13 +2127,13 @@ If the mouse is enabled and works with your vim, you may use <s-leftmouse> to mark one or more files. You may mark multiple files by dragging the shifted leftmouse. (see |netrw-mouse|) -*markfilelist* *global_markfilelist* *local_markfilelist* + *markfilelist* *global_markfilelist* *local_markfilelist* All marked files are entered onto the global marked file list; there is only -one such list. In addition, every netrw buffer also has its own local marked -file list; since netrw buffers are associated with specific directories, this -means that each directory has its own local marked file list. The various -commands which operate on marked files use one or the other of the marked file -lists. +one such list. In addition, every netrw buffer also has its own buffer-local +marked file list; since netrw buffers are associated with specific +directories, this means that each directory has its own local marked file +list. The various commands which operate on marked files use one or the other +of the marked file lists. Known Problem: if one is using tree mode (|g:netrw_liststyle|) and several directories have files with the same name, then marking such a file will @@ -1998,19 +2143,18 @@ is unlikely to be fixed. UNMARKING FILES *netrw-mF* {{{2 - (also see |netrw-mf|) + (also see |netrw-mf|, |netrw-mu|) -This command will unmark all files in the current buffer. One may also use -mf (|netrw-mf|) on a specific file to unmark just that file. +The "mF" command will unmark all files in the current buffer. One may also use +mf (|netrw-mf|) on a specific, already marked, file to unmark just that file. -MARKING FILES BY QUICKFIX LIST *netrw-qF* +MARKING FILES BY QUICKFIX LIST *netrw-qF* {{{2 (also see |netrw-mf|) -One may convert the |quickfix-error-lists| into a marked file list using -"qF". You may then proceed with commands such as me (|netrw-me|) to -edit them. Quickfix error lists are generated, for example, by calls -to |:vimgrep|. +One may convert |quickfix-error-lists| into a marked file list using "qF". +You may then proceed with commands such as me (|netrw-me|) to edit them. +Quickfix error lists are generated, for example, by calls to |:vimgrep|. MARKING FILES BY REGULAR EXPRESSION *netrw-mr* {{{2 @@ -2024,7 +2168,23 @@ future I may make it possible to use |regexp|s instead of glob()-style expressions (yet-another-option). -MARKED FILES: ARBITRARY COMMAND *netrw-mx* {{{2 +MARKED FILES, ARBITRARY VIM COMMAND *netrw-mv* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked-file list) + +The "mv" map causes netrw to execute an arbitrary vim command on each file on +the local marked file list, individually: + + * 1split + * sil! keepalt e file + * run vim command + * sil! keepalt wq! + +A prompt, "Enter vim command: ", will be issued to elicit the vim command +you wish used. + + +MARKED FILES, ARBITRARY SHELL COMMAND *netrw-mx* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) (uses the local marked-file list) @@ -2033,6 +2193,37 @@ command to be applied to all marked files. All "%"s in the command will be substituted with the name of each marked file in turn. If no "%"s are in the command, then the command will be followed by a space and a marked filename. +Example: + (mark files) + mx + Enter command: cat + + The result is a series of shell commands: + cat 'file1' + cat 'file2' + ... + + +MARKED FILES, ARBITRARY SHELL COMMAND, EN BLOC *netrw-mX* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked-file list) + +Upon activation of the 'mX' map, netrw will query the user for some (external) +command to be applied to all marked files on the global marked file list. The +"en bloc" means that one command will be executed on all the files at once: > + + command files + +This approach is useful, for example, to select files and make a tarball: > + + (mark files) + mX + Enter command: tar cf mynewtarball.tar +< +The command that will be run with this example: + + tar cf mynewtarball.tar 'file1' 'file2' ... + MARKED FILES: COMPRESSION AND DECOMPRESSION *netrw-mz* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) @@ -2046,6 +2237,10 @@ that's "gzip". For decompression, netrw provides a |Dictionary| of suffices and their associated decompressing utilities; see |g:netrw_decompress|. +Remember that one can mark multiple files by regular expression +(see |netrw-mr|); this is particularly useful to facilitate compressing and +decompressing a large number of files. + Associated setting variables: |g:netrw_compress| |g:netrw_decompress| MARKED FILES: COPYING *netrw-mc* {{{2 @@ -2056,7 +2251,16 @@ Select a target directory with mt (|netrw-mt|). Then change directory, select file(s) (see |netrw-mf|), and press "mc". The copy is done from the current window (where one does the mf) to the target. -Associated setting variable: |g:netrw_localcopycmd| |g:netrw_ssh_cmd| +If one does not have a target directory set with |netrw-mt|, then netrw +will query you for a directory to copy to. + +One may also copy directories and their contents (local only) to a target +directory. + +Associated setting variables: + |g:netrw_localcopycmd| + |g:netrw_localcopydircmd| + |g:netrw_ssh_cmd| MARKED FILES: DIFF *netrw-md* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) @@ -2069,7 +2273,7 @@ MARKED FILES: EDITING *netrw-me* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) (uses the global marked file list) -This command will place the marked files on the |arglist| and commence +The "me" command will place the marked files on the |arglist| and commence editing them. One may return the to explorer window with |:Rexplore|. (use |:n| and |:p| to edit next and previous files in the arglist) @@ -2077,26 +2281,33 @@ MARKED FILES: GREP *netrw-mg* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) (uses the global marked file list) -This command will apply |:vimgrep| to the marked files. +The "mg" command will apply |:vimgrep| to the marked files. The command will ask for the requested pattern; one may then enter: > /pattern/[g][j] ! /pattern/[g][j] pattern < -In the cases of "j" option usage as shown above, "mg" will winnow the current -marked file list to just those possessing the specified pattern. -Thus, one may use > - mr ...file-pattern - mg ..contents-pattern -to have a marked file list satisfying the file-pattern but containing the -desried contents-pattern. +With /pattern/, editing will start with the first item on the |quickfix| list +that vimgrep sets up (see |:copen|, |:cnext|, |:cprevious|). The |:vimgrep| +command is in use, so without 'g' each line is added to quickfix list only +once; with 'g' every match is included. + +With /pattern/j, "mg" will winnow the current marked file list to just those +marked files also possessing the specified pattern. Thus, one may use > + + mr ...file-pattern... + mg /pattern/j +< +to have a marked file list satisfying the file-pattern but also restricted to +files containing some desired pattern. + MARKED FILES: HIDING AND UNHIDING BY SUFFIX *netrw-mh* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) (uses the local marked file list) -This command extracts the suffices of the marked files and toggles their +The "mh" command extracts the suffices of the marked files and toggles their presence on the hiding list. Please note that marking the same suffix this way multiple times will result in the suffix's presence being toggled for each file (so an even quantity of marked files having the same suffix @@ -2125,16 +2336,16 @@ MARKED FILES: PRINTING *netrw-mp* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) (uses the local marked file list) -Netrw will apply the |:hardcopy| command to marked files. What it does -is open each file in a one-line window, execute hardcopy, then close the -one-line window. +When "mp" is used, netrw will apply the |:hardcopy| command to marked files. +What netrw does is open each file in a one-line window, execute hardcopy, then +close the one-line window. MARKED FILES: SOURCING *netrw-ms* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) (uses the local marked file list) -Netrw will source the marked files (using vim's |:source| command) +With "ms", netrw will source the marked files (using vim's |:source| command) MARKED FILES: SETTING THE TARGET DIRECTORY *netrw-mt* {{{2 @@ -2148,7 +2359,7 @@ Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|): * Also, if the cursor is in the banner, then the netrw window's currently displayed directory is used for the copy/move-to target. Unless the target already is the current directory. In which case, - remove the target. + typing "mf" clears the target. * However, if the cursor is atop a directory name, then that directory is used for the copy/move-to target @@ -2157,9 +2368,12 @@ Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|): This command uses |<q-args>|, so spaces in the directory name are permitted without escaping. -There is only one copy/move-to target per vim session; ie. the target is a -script variable (see |s:var|) and is shared between all netrw windows (in an -instance of vim). + * With mouse-enabled vim or with gvim, one may select a target by using + <c-leftmouse> + +There is only one copy/move-to target at a time in a vim session; ie. the +target is a script variable (see |s:var|) and is shared between all netrw +windows (in an instance of vim). When using menus and gvim, netrw provides a "Targets" entry which allows one to pick a target from the list of bookmarks and history. @@ -2196,7 +2410,7 @@ edit the desired file and go to the tag. Associated setting variables: |g:netrw_ctags| |g:netrw_ssh_cmd| -MARKED FILES: TARGET DIRECTORY USING BOOKMARKS *netrw-Tb* {{{2 +MARKED FILES: TARGET DIRECTORY USING BOOKMARKS *netrw-Tb* {{{2 Sets the marked file copy/move-to target. @@ -2214,7 +2428,7 @@ Related topics: Moving files to target.............................|netrw-mm| -MARKED FILES: TARGET DIRECTORY USING HISTORY *netrw-Th* {{{2 +MARKED FILES: TARGET DIRECTORY USING HISTORY *netrw-Th* {{{2 Sets the marked file copy/move-to target. @@ -2233,9 +2447,13 @@ Related topics: MARKED FILES: UNMARKING *netrw-mu* {{{2 - (See |netrw-mf| and |netrw-mr| for how to mark files) + (See |netrw-mf|, |netrw-mF|) + +The "mu" mapping will unmark all currently marked files. This command differs +from "mF" as the latter only unmarks files in the current directory whereas +"mu" will unmark global and all buffer-local marked files. +(see |netrw-mF|) -The "mu" mapping will unmark all currently marked files. *netrw-browser-settings* NETRW BROWSER VARIABLES *netrw-browser-options* *netrw-browser-var* {{{2 @@ -2269,15 +2487,13 @@ your browsing preferences. (see also: |netrw-settings|) *g:netrw_banner* enable/suppress the banner =0: suppress the banner =1: banner is enabled (default) - NOTE: suppressing the banner is a new feature - which may cause problems. *g:netrw_bannerbackslash* if this variable exists and is not zero, the banner will be displayed with backslashes rather than forward slashes. *g:netrw_browse_split* when browsing, <cr> will open the file by: - =0: re-using the same window + =0: re-using the same window (default) =1: horizontally splitting the window first =2: vertically splitting the window first =3: open file in new tab @@ -2285,10 +2501,19 @@ your browsing preferences. (see also: |netrw-settings|) Note that |g:netrw_preview| may be used to get vertical splitting instead of horizontal splitting. + =[servername,tab-number,window-number] + Given a |List| such as this, a remote server + named by the "servername" will be used for + editing. It will also use the specified tab + and window numbers to perform editing + (see |clientserver|, |netrw-ctrl-r|) + This option does not affect |:Lexplore| + windows. Related topics: - |netrw-cr| |netrw-C| - |g:netrw_alto| |g:netrw_altv| + |g:netrw_alto| |g:netrw_altv| + |netrw-C| |netrw-cr| + |netrw-ctrl-r| *g:netrw_browsex_viewer* specify user's preference for a viewer: > "kfmclient exec" @@ -2321,7 +2546,7 @@ your browsing preferences. (see also: |netrw-settings|) tags *g:netrw_cursor* = 2 (default) - This option controls the use of the + This option controls the use of the |'cursorline'| (cul) and |'cursorcolumn'| (cuc) settings by netrw: @@ -2385,7 +2610,7 @@ your browsing preferences. (see also: |netrw-settings|) versus speed. *g:netrw_ffkeep* (default: doesn't exist) - If this variable exists and is zero, then + If this variable exists and is zero, then netrw will not do a save and restore for |'fileformat'|. @@ -2428,6 +2653,11 @@ your browsing preferences. (see also: |netrw-settings|) These characters in directory names are escaped before applying glob() + *g:netrw_gx* ="<cfile>" + This option controls how gx (|netrw-gx|) picks + up the text under the cursor. See |expand()| + for possibilities. + *g:netrw_hide* Controlled by the "a" map (see |netrw-a|) =0 : show all =1 : show not-hidden files @@ -2447,10 +2677,22 @@ your browsing preferences. (see also: |netrw-settings|) The current browsing directory is contained in b:netrw_curdir (also see |netrw-c|) + *g:netrw_keepj* ="keepj" (default) netrw attempts to keep the + |:jumps| table unaffected. + ="" netrw will not use |:keepjumps| with + exceptions only for the + saving/restoration of position. + *g:netrw_list_cmd* command for listing remote directories default: (if ssh is executable) "ssh HOSTNAME ls -FLa" + *g:netrw_list_cmd_options* If this variable exists, then its contents are + appended to the g:netrw_list_cmd. For + example, use "2>/dev/null" to get rid of banner + messages on unix systems. + + *g:netrw_liststyle* Set the default listing style: = 0: thin listing (one file per line) = 1: long listing (one file per line with time @@ -2468,7 +2710,7 @@ your browsing preferences. (see also: |netrw-settings|) Examples: let g:netrw_list_hide= '.*\.swp$' - let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$' + let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$' default: "" *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin @@ -2476,6 +2718,11 @@ your browsing preferences. (see also: |netrw-settings|) Copies marked files (|netrw-mf|) to target directory (|netrw-mt|, |netrw-mc|) + *g:netrw_localcopydircmd* ="cp -R" Linux/Unix/MacOS/Cygwin + ="xcopy /e /c /h/ /i /k" Windows + Copies directories to target directory. + (|netrw-mc|, |netrw-mt|) + *g:netrw_localmkdir* command for making a local directory default: "mkdir" @@ -2499,7 +2746,7 @@ your browsing preferences. (see also: |netrw-settings|) default: "ssh USEPORT HOSTNAME mkdir" *g:netrw_mousemaps* =1 (default) enables mouse buttons while - browsing to: + browsing to: leftmouse : open file/directory shift-leftmouse : mark file middlemouse : same as P @@ -2511,6 +2758,11 @@ your browsing preferences. (see also: |netrw-settings|) evaluation will be suppressed (see |'ballooneval'|) + *g:netrw_usetab* if this variable exists and is non-zero, then + the <tab> map supporting shrinking/expanding a + Lexplore or netrw window will be enabled. + (see |netrw-c-tab|) + *g:netrw_remote_mkdir* command for making a remote directory via ftp (also see |g:netrw_mkdir_cmd|) default: "mkdir" @@ -2543,7 +2795,12 @@ your browsing preferences. (see also: |netrw-settings|) *g:netrw_rmf_cmd* command for removing remote softlinks default: "ssh USEPORT HOSTNAME rm -f" - *g:netrw_sort_by* sort by "name", "time", or "size" + *g:netrw_servername* use this variable to provide a name for + |netrw-ctrl-r| to use for its server. + default: "NETRWSERVER" + + *g:netrw_sort_by* sort by "name", "time", "size", or + "exten". default: "name" *g:netrw_sort_direction* sorting direction: "normal" or "reverse" @@ -2655,6 +2912,10 @@ your browsing preferences. (see also: |netrw-settings|) take effect, for example). default: 50 (for 50%) + *g:netrw_wiw* =1 specifies the minimum window width to use + when shrinking a netrw/Lexplore window + (see |netrw-c-tab|). + *g:netrw_xstrlen* Controls how netrw computes string lengths, including multi-byte characters' string length. (thanks to N Weibull, T Mechelynck) @@ -2700,7 +2961,7 @@ help on what each of the variables do. ============================================================================== -OBTAINING A FILE *netrw-O* {{{2 +OBTAINING A FILE *netrw-obtain* *netrw-O* {{{2 If there are no marked files: @@ -2730,8 +2991,8 @@ Related topics: * To automatically make the currently browsed directory the current directory, see |g:netrw_keepdir|. - *netrw-createfile* -OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY *netrw-%* + *netrw-newfile* *netrw-createfile* +OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY *netrw-%* {{{2 To open a new file in netrw's current directory, press "%". This map will query the user for a new filename; an empty file by that name will @@ -2744,9 +3005,9 @@ PREVIEW WINDOW *netrw-p* *netrw-preview* {{{2 One may use a preview window by using the "p" key when the cursor is atop the desired filename to be previewed. The display will then split to show both -the browser (where the cursor will remain) and the file (see |:pedit|). -By default, the split will be taken horizontally; one may use vertical -splitting if one has set |g:netrw_preview| first. +the browser (where the cursor will remain) and the file (see |:pedit|). By +default, the split will be taken horizontally; one may use vertical splitting +if one has set |g:netrw_preview| first. An interesting set of netrw settings is: > @@ -2755,16 +3016,20 @@ An interesting set of netrw settings is: > let g:netrw_winsize = 30 These will: + 1. Make vertical splitting the default for previewing files 2. Make the default listing style "tree" 3. When a vertical preview window is opened, the directory listing will use only 30% of the columns available; the rest of the window is used for the preview window. -Also see: |g:netrw_chgwin| |netrw-P| + Related: if you like this idea, you may also find :Lexplore + (|netrw-:Lexplore|) or |g:netrw_chgwin| of interest +Also see: |g:netrw_chgwin| |netrw-P| |'previewwindow'| -PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2 + +PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2 To edit a file or directory in the previously used (last accessed) window (see :he |CTRL-W_p|), press a "P". If there's only one window, then the one window @@ -2786,7 +3051,7 @@ Associated setting variables: Also see: |g:netrw_chgwin| |netrw-p| -REFRESHING THE LISTING *netrw-ctrl-l* *netrw-ctrl_l* {{{2 +REFRESHING THE LISTING *netrw-refresh* *netrw-ctrl-l* *netrw-ctrl_l* {{{2 To refresh either a local or remote directory listing, press ctrl-l (<c-l>) or hit the <cr> when atop the ./ directory entry in the listing. One may also @@ -2806,17 +3071,37 @@ RENAMING FILES OR DIRECTORIES *netrw-move* *netrw-rename* *netrw-R* {{{2 If there are no marked files: (see |netrw-mf|) - Renaming/moving files and directories involves moving the cursor to the + Renaming files and directories involves moving the cursor to the file/directory to be moved (renamed) and pressing "R". You will then be - queried for where you want the file/directory to be moved. You may select + queried for what you want the file/directory to be renamed to You may select a range of lines with the "V" command (visual selection), and then - pressing "R". + press "R"; you will be queried for each file as to what you want it + renamed to. If there are marked files: (see |netrw-mf|) Marked files will be renamed (moved). You will be queried as above in order to specify where you want the file/directory to be moved. + If you answer a renaming query with a "s/frompattern/topattern/", then + subsequent files on the marked file list will be renamed by taking each + name, applying that substitute, and renaming each file to the result. + As an example : > + + mr [query: reply with *.c] + R [query: reply with s/^\(.*\)\.c$/\1.cpp/] +< + This example will mark all *.c files and then rename them to *.cpp + files. + + The ctrl-X character has special meaning for renaming files: > + + <c-x> : a single ctrl-x tells netrw to ignore the portion of the response + lying between the last '/' and the ctrl-x. + + <c-x><c-x> : a pair of contiguous ctrl-x's tells netrw to ignore any + portion of the string preceding the double ctrl-x's. +< WARNING:~ Note that moving files is a dangerous operation; copies are safer. That's @@ -2824,13 +3109,13 @@ If there are marked files: (see |netrw-mf|) the copy fails and the delete does not, you may lose the file. Use at your own risk. -The g:netrw_rename_cmd variable is used to implement renaming. By default its -value is: +The g:netrw_rename_cmd variable is used to implement remote renaming. By +default its value is: ssh HOSTNAME mv One may rename a block of files and directories by selecting them with -the V (|linewise-visual|). +V (|linewise-visual|) when using thin style SELECTING SORTING STYLE *netrw-s* *netrw-sort* {{{2 @@ -2843,25 +3128,112 @@ Related topics: |netrw-r| |netrw-S| Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence| -SETTING EDITING WINDOW *netrw-C* {{{2 +SETTING EDITING WINDOW *netrw-editwindow* *netrw-C* *netrw-:NetrwC* {{{2 -One may select a netrw window for editing with the "C" mapping, or by setting -g:netrw_chgwin to the selected window number. Subsequent selection of a file -to edit (|netrw-cr|) will use that window. +One may select a netrw window for editing with the "C" mapping, using the +:NetrwC [win#] command, or by setting |g:netrw_chgwin| to the selected window +number. Subsequent selection of a file to edit (|netrw-cr|) will use that +window. + + * C : by itself, will select the current window holding a netrw buffer + for editing via |netrw-cr|. The C mapping is only available while in + netrw buffers. + + * [count]C : the count will be used as the window number to be used + for subsequent editing via |netrw-cr|. - * C by itself, will select the current window for editing via - |netrw-cr| + * :NetrwC will set |g:netrw_chgwin| to the current window + + * :NetrwC win# will set |g:netrw_chgwin| to the specified window + number - * [count]C the count will be used as the window number to be used - for editing via |netrw-cr|. Using > let g:netrw_chgwin= -1 -will restore the default editing behavior (ie. use the current window). +will restore the default editing behavior +(ie. editing will use the current window). Related topics: |netrw-cr| |g:netrw_browse_split| Associated setting variables: |g:netrw_chgwin| +SHRINKING OR EXPANDING A NETRW OR LEXPLORE WINDOW *netrw-c-tab* {{{2 + +The <c-tab> key will toggle a netrw or |:Lexplore| window's width, +but only if |g:netrw_usetab| exists and is non-zero (and, of course, +only if your terminal supports differentiating <c-tab> from a plain +<tab>). + + * If the current window is a netrw window, toggle its width + (between |g:netrw_wiw| and its original width) + + * Else if there is a |:Lexplore| window in the current tab, toggle + its width + + * Else bring up a |:Lexplore| window + +If |g:netrw_usetab| exists or is zero, or if there is a pre-existing mapping +for <c-tab>, then the <tab> will not be mapped. One may map something other +than a <c-tab>, too: (but you'll still need to have had g:netrw_usetab set) > + + nmap <unique> (whatever) <Plug>NetrwShrink +< +Related topics: |:Lexplore| +Associated setting variable: |g:netrw_usetab| + + +USER SPECIFIED MAPS *netrw-usermaps* {{{1 + +One may make customized user maps. Specify a variable, |g:Netrw_UserMaps|, +to hold a |List| of lists of keymap strings and function names: > + + [["keymap-sequence","ExampleUserMapFunc"],...] +< +When netrw is setting up maps for a netrw buffer, if |g:Netrw_UserMaps| +exists, then the internal function netrw#UserMaps(islocal) is called. +This function goes through all the entries in the |g:Netrw_UserMaps| list: + + * sets up maps: > + nno <buffer> <silent> KEYMAP-SEQUENCE + :call s:UserMaps(islocal,"ExampleUserMapFunc") +< * refreshes if result from that function call is the string + "refresh" + * if the result string is not "", then that string will be + executed (:exe result) + * if the result is a List, then the above two actions on results + will be taken for every string in the result List + +The user function is passed one argument; it resembles > + + fun! ExampleUserMapFunc(islocal) +< +where a:islocal is 1 if its a local-directory system call or 0 when +remote-directory system call. + +Use netrw#Expose("varname") to access netrw-internal (script-local) + variables. +Use netrw#Modify("varname",newvalue) to change netrw-internal variables. +Use netrw#Call("funcname"[,args]) to call a netrw-internal function with + specified arguments. + +Example: Get a copy of netrw's marked file list: > + + let netrwmarkfilelist= netrw#Expose("netrwmarkfilelist") +< +Example: Modify the value of netrw's marked file list: > + + call netrw#Modify("netrwmarkfilelist",[]) +< +Example: Clear netrw's marked file list via a mapping on gu > + " ExampleUserMap: {{{2 + fun! ExampleUserMap(islocal) + call netrw#Modify("netrwmarkfilelist",[]) + call netrw#Modify('netrwmarkfilemtch_{bufnr("%")}',"") + let retval= ["refresh"] + return retval + endfun + let g:Netrw_UserMaps= [["gu","ExampleUserMap"]] +< + 10. Problems and Fixes *netrw-problems* {{{1 (This section is likely to grow as I get feedback) @@ -3036,6 +3408,7 @@ Associated setting variables: |g:netrw_chgwin| The first one (|g:netrw_ssh_cmd|) is the most important; most of the others will use the string in g:netrw_ssh_cmd by default. + *netrw-p9* *netrw-ml_get* P9. I'm browsing, changing directory, and bang! ml_get errors appear and I have to kill vim. Any way around this? @@ -3062,6 +3435,14 @@ Associated setting variables: |g:netrw_chgwin| P11. I want to have two windows; a thin one on the left and my editing window on the right. How may I accomplish this? + You probably want netrw running as in a side window. If so, you + will likely find that ":[N]Lexplore" does what you want. The + optional "[N]" allows you to select the quantity of columns you + wish the |:Lexplore|r window to start with (see |g:netrw_winsize| + for how this parameter works). + + Previous solution: + * Put the following line in your <.vimrc>: let g:netrw_altv = 1 * Edit the current directory: :e . @@ -3075,6 +3456,7 @@ Associated setting variables: |g:netrw_chgwin| <leftmouse> in the browser window and then press the <middlemouse> to select the file. + *netrw-p12* P12. My directory isn't sorting correctly, or unwanted letters are appearing in the listed filenames, or things aren't lining @@ -3107,7 +3489,7 @@ Associated setting variables: |g:netrw_chgwin| "let g:netrw_scp_cmd = "d:\\dev\\putty\\PSCP.exe" < *netrw-p14* - P14. I'd would like to speed up writes using Nwrite and scp/ssh + P14. I would like to speed up writes using Nwrite and scp/ssh style connections. How? (Thomer M. Gil) Try using ssh's ControlMaster and ControlPath (see the ssh_config @@ -3152,18 +3534,121 @@ Associated setting variables: |g:netrw_chgwin| to open a swap file. (romainl) It looks like you are starting Vim from a protected - directory. Start if from your $HOME or another writable + directory. Start netrw from your $HOME or other writable directory. + *netrw-p17* + P17. Netrw is closing buffers on its own. + What steps will reproduce the problem? + 1. :Explore, navigate directories, open a file + 2. :Explore, open another file + 3. Buffer opened in step 1 will be closed. o + What is the expected output? What do you see instead? + I expect both buffers to exist, but only the last one does. + + (Lance) Problem is caused by "set autochdir" in .vimrc. + (drchip) I am able to duplicate this problem with |'acd'| set. + It appears that the buffers are not exactly closed; + a ":ls!" will show them (although ":ls" does not). + + *netrw-P18* + P18. How to locally edit a file that's only available via + another server accessible via ssh? + See http://stackoverflow.com/questions/12469645/ + "Using Vim to Remotely Edit A File on ServerB Only + Accessible From ServerA" + + *netrw-P19* + P19. How do I get numbering on in directory listings? + With |g:netrw_bufsettings|, you can control netrw's buffer + settings; try putting > + let g:netrw_bufsettings="noma nomod nu nobl nowrap ro nornu" +< in your .vimrc. If you'd like to have relative numbering + instead, try > + let g:netrw_bufsettings="noma nomod nonu nobl nowrap ro rnu" +< + *netrw-P20* + P20. How may I have gvim start up showing a directory listing? + Try putting the following code snippet into your .vimrc: > + augroup VimStartup + au! + au VimEnter * if expand("%") == "" && argc() == 0 && + \ (v:servername =~ 'GVIM\d*' || v:servername == "") + \ | e . | endif + augroup END +< You may use Lexplore instead of "e" if you're so inclined. + This snippet assumes that you have client-server enabled + (ie. a "huge" vim version). + + *netrw-P21* + P21. I've made a directory (or file) with an accented character, but + netrw isn't letting me enter that directory/read that file: + + Its likely that the shell or o/s is using a different encoding + than you have vim (netrw) using. A patch to vim supporting + "systemencoding" may address this issue in the future; for + now, just have netrw use the proper encoding. For example: > + + au FileType netrw set enc=latin1 +< + *netrw-P22* + P22. I get an error message when I try to copy or move a file: + + **error** (netrw) tried using g:netrw_localcopycmd<cp>; it doesn't work! + + What's wrong? + + Netrw uses several system level commands to do things (see + + |g:netrw_localcopycmd|, |g:netrw_localmovecmd|, + |g:netrw_localrmdir|, |g:netrw_mkdir_cmd|). + + You may need to adjust the default commands for one or more of + these commands by setting them properly in your .vimrc. Another + source of difficulty is that these commands use vim's local + directory, which may not be the same as the browsing directory + shown by netrw (see |g:netrw_keepdir|). + + ============================================================================== 11. Debugging Netrw Itself *netrw-debug* {{{1 -The <netrw.vim> script is typically available as something like: +Step 1: check that the problem you've encountered hasn't already been resolved +by obtaining a copy of the latest (often developmental) netrw at: + + http://www.drchip.org/astronaut/vim/index.html#NETRW + +The <netrw.vim> script is typically installed on systems as something like: > /usr/local/share/vim/vim7x/plugin/netrwPlugin.vim /usr/local/share/vim/vim7x/autoload/netrw.vim + (see output of :echo &rtp) +< +which is loaded automatically at startup (assuming :set nocp). If you +installed a new netrw, then it will be located at > + + $HOME/.vim/plugin/netrwPlugin.vim + $HOME/.vim/autoload/netrw.vim +< +Step 2: assuming that you've installed the latest version of netrw, +check that your problem is really due to netrw. Create a file +called netrw.vimrc with the following contents: > + + set nocp + so $HOME/.vim/plugin/netrwPlugin.vim +< +Then run netrw as follows: > + + vim -u netrw.vimrc --noplugins [some path here] < -which is loaded automatically at startup (assuming :set nocp). +Perform whatever netrw commands you need to, and check that the problem is +still present. This procedure sidesteps any issues due to personal .vimrc +settings and other plugins. If the problem does not appear, then you need +to determine what setting in your .vimrc is causing the conflict with netrw +or which plugin. + +Step 3: If the problem still is present, then get a debugging trace from +netrw: 1. Get the <Decho.vim> script, available as: @@ -3192,7 +3677,8 @@ which is loaded automatically at startup (assuming :set nocp). 3. Then bring up vim and attempt to evoke the problem by doing a transfer or doing some browsing. A set of messages should appear concerning the steps that <netrw.vim> took in attempting to - read/write your file over the network in a separate tab. + read/write your file over the network in a separate tab or + server vim window. To save the file, use > @@ -3207,14 +3693,122 @@ which is loaded automatically at startup (assuming :set nocp). debugging trace is due to which command. Please send that information to <netrw.vim>'s maintainer along - with the o/s you're using and vim version you're using + with the o/s you're using and the vim version that you're using (see |:version|) > NdrOchip at ScampbellPfamily.AbizM - NOSPAM < ============================================================================== 12. History *netrw-history* {{{1 - v152: Apr 08, 2014 * uses the |'noswapfile'| option (requires + v154: Feb 26, 2015 * (Yuri Kanivetsky) reported a situation where + a file was not treated properly as a file + due to g:netrw_keepdir == 1 + Mar 25, 2015 * (requested by Ben Friz) one may now sort by + extension + Mar 28, 2015 * (requested by Matt Brooks) netrw has a lot + of buffer-local mappings; however, some + plugins (such as vim-surround) set up + conflicting mappings that cause vim to wait. + The "<nowait>" modifier has been included + with most of netrw's mappings to avoid that + delay. + Jun 26, 2015 * |netrw-gn| mapping implemted + * :Ntree NotADir resulted in having + the tree listing expand in the error messages + window. Fixed. + Jun 29, 2015 * Attempting to delete a file remotely caused + an error with "keepsol" mentioned; fixed. + Jul 08, 2015 * Several changes to keep the |:jumps| table + correct when working with + |g:netrw_fastbrowse| set to 2 + * wide listing with accented characters fixed + (using %-S instead of %-s with a |printf()| + Jul 13, 2015 * (Daniel Hahler) CheckIfKde() could be true + but kfmclient not installed. Changed order + in netrw#BrowseX(): checks if kde and + kfmclient, then will use xdg-open on a unix + system (if xdg-open is executable) + Aug 11, 2015 * (McDonnell) tree listing mode wouldn't + select a file in a open subdirectory. + * (McDonnell) when multiple subdirectories + were concurrently open in tree listing + mode, a ctrl-L wouldn't refresh properly. + * The netrw:target menu showed duplicate + entries + Oct 13, 2015 * (mattn) provided an exception to handle + windows with shellslash set but no shell + Oct 23, 2015 * if g:netrw_usetab and <c-tab> now used + to control whether NetrwShrink is used + (see |netrw-c-tab|) + v153: May 13, 2014 * added another |g:netrw_ffkeep| usage {{{2 + May 14, 2014 * changed s:PerformListing() so that it + always sets ft=netrw for netrw buffers + (ie. even when syntax highlighting is + off, not available, etc) + May 16, 2014 * introduced the |netrw-ctrl-r| functionality + May 17, 2014 * introduced the |netrw-:NetrwMB| functionality + * mb and mB (|netrw-mb|, |netrw-mB|) will + add/remove marked files from bookmark list + May 20, 2014 * (Enno Nagel) reported that :Lex <dirname> + wasn't working. Fixed. + May 26, 2014 * restored test to prevent leftmouse window + resizing from causing refresh. + (see s:NetrwLeftmouse()) + * fixed problem where a refresh caused cursor + to go just under the banner instead of + staying put + May 28, 2014 * (László Bimba) provided a patch for opening + the |:Lexplore| window 100% high, optionally + on the right, and will work with remote + files. + May 29, 2014 * implemented :NetrwC (see |netrw-:NetrwC|) + Jun 01, 2014 * Removed some "silent"s from commands used + to implemented scp://... and pscp://... + directory listing. Permits request for + password to appear. + Jun 05, 2014 * (Enno Nagel) reported that user maps "/" + caused problems with "b" and "w", which + are mapped (for wide listings only) to + skip over files rather than just words. + Jun 10, 2014 * |g:netrw_gx| introduced to allow users to + override default "<cfile>" with the gx + (|netrw-gx|) map + Jun 11, 2014 * gx (|netrw-gx|), with |'autowrite'| set, + will write modified files. s:NetrwBrowseX() + will now save, turn off, and restore the + |'autowrite'| setting. + Jun 13, 2014 * added visual map for gx use + Jun 15, 2014 * (Enno Nagel) reported that with having hls + set and wide listing style in use, that the + b and w maps caused unwanted highlighting. + Jul 05, 2014 * |netrw-mv| and |netrw-mX| commands included + Jul 09, 2014 * |g:netrw_keepj| included, allowing optional + keepj + Jul 09, 2014 * fixing bugs due to previous update + Jul 21, 2014 * (Bruno Sutic) provided an updated + netrw_gitignore.vim + Jul 30, 2014 * (Yavuz Yetim) reported that editing two + remote files of the same name caused the + second instance to have a "temporary" + name. Fixed: now they use the same buffer. + Sep 18, 2014 * (Yasuhiro Matsumoto) provided a patch which + allows scp and windows local paths to work. + Oct 07, 2014 * gx (see |netrw-gx|) when atop a directory, + will now do |gf| instead + Nov 06, 2014 * For cygwin: cygstart will be available for + netrw#BrowseX() to use if its executable. + Nov 07, 2014 * Began support for file://... urls. Will use + |g:netrw_file_cmd| (typically elinks or links) + Dec 02, 2014 * began work on having mc (|netrw-mc|) copy + directories. Works for linux machines, + cygwin+vim, but not for windows+gvim. + Dec 02, 2014 * in tree mode, netrw was not opening + directories via symbolic links. + Dec 02, 2014 * added resolved link information to + thin and tree modes + Dec 30, 2014 * (issue#231) |:ls| was not showing + remote-file buffers reliably. Fixed. + v152: Apr 08, 2014 * uses the |'noswapfile'| option (requires {{{2 vim 7.4 with patch 213) * (Enno Nagel) turn |'rnu'| off in netrw buffers. @@ -3240,7 +3834,7 @@ which is loaded automatically at startup (assuming :set nocp). chgwin window. May 09, 2014 * SavePosn was "saving filename under cursor" from a non-netrw window when using :Rex. - v151: Jan 22, 2014 * extended :Rexplore to return to buffer + v151: Jan 22, 2014 * extended :Rexplore to return to buffer {{{2 prior to Explore or editing a directory * (Ken Takata) netrw gave error when clipboard was disabled. Sol'n: Placed @@ -3287,7 +3881,7 @@ which is loaded automatically at startup (assuming :set nocp). and it also handles Window's shares * Fixed |netrw-d| command when applied with ftp * https: support included for netrw#NetRead() - v150: Jul 12, 2013 * removed a "keepalt" to allow ":e #" to + v150: Jul 12, 2013 * removed a "keepalt" to allow ":e #" to {{{2 return to the netrw directory listing Jul 13, 2013 * (Jonas Diemer) suggested changing a <cWORD> to <cfile>. @@ -3342,7 +3936,7 @@ which is loaded automatically at startup (assuming :set nocp). style, with a previous window open, that the wrong directory was being used to open a file. Fixed. (P21) - v149: Apr 18, 2013 * in wide listing format, now have maps for + v149: Apr 18, 2013 * in wide listing format, now have maps for {{{2 w and b to move to next/previous file Apr 26, 2013 * one may now copy files in the same directory; netrw will issue requests for @@ -3356,133 +3950,9 @@ which is loaded automatically at startup (assuming :set nocp). requested by Paul Domaskis. Jul 03, 2013 * Explore now avoids splitting when a buffer will be hidden. - v148: Apr 16, 2013 * changed Netrw's Style menu to allow direct + v148: Apr 16, 2013 * changed Netrw's Style menu to allow direct {{{2 choice of listing style, hiding style, and sorting style - v147: Nov 24, 2012 * (James McCoy) Even with g:netrw_dirhistmax - at zero, the .vim/ directory would be - created to support history/bookmarks. I've - gone over netrw to suppress history and - bookmarking when g:netrw_dirhistmax is zero. - For instance, the menus will display - (disabled) when attempts to use - bookmarks/history are made. - Nov 29, 2012 * (Kim Jang-hwan) reported that with - g:Align_xstrlen set to 3 that the cursor was - moved (linewise) after invocation. This - problem also afflicted netrw. - (see |g:netrw_xstrlen|) Fixed. - Jan 21, 2013 * (mattn) provided a patch to insert some - endifs needed with the code implementing - |netrw-O|. - Jan 24, 2013 * (John Szakmeister) found that remote file - editing resulted in filetype options being - overwritten by NetrwOptionRestore(). I - moved filetype detect from NetrwGetFile() - to NetrwOptionRestore. - Feb 17, 2013 * (Yukhiro Nakadaira) provided a patch - correcting some syntax errors. - Feb 28, 2013 * (Ingo Karkat) provided a patch preventing - receipt of an |E95| when revisiting a - file://... style url. - Mar 18, 2013 * (Gary Johnson) pointed out that changing - cedit to <Esc> caused problems with visincr; - the cedit setting is now bypassed in netrw too. - Apr 02, 2013 * (Paul Domaskis) reported an undefined - variable error (s:didstarstar) was - occurring. It is now defined at - initialization. - * included additional sanity checking for the - marked file functions. - * included |netrw-qF| and special "j" option - handling for |netrw-mg| - Apr 12, 2013 * |netrw-u| and |netrw-U| now handle counts - * the former mapping for "T" has been removed; - in its place are new maps, |netrw-Tb| and |netrw-Th|. - * the menu now supports a "Targets" entry for - easier target selection. (see |netrw-mt|) - * (Paul Domaskis) reported some problems with - moving/copying files under Windows' gvim - (ie. not cygwin). Fixed. - * (Paul Mueller) provided a patch to get - start and rundll working via |netrw-gx| - by bypassing the user's |'shellslash'| option. - v146: Oct 20, 2012 * (David Kotchan) reported that under Windows, - directories named with unusual characters - such as "#" or "$" were not being listed - properly. - * (Kenny Lee) reported that the buffer list - was being populated by netrw buffers. - Netrw will now |:bwipe| netrw buffers - upon editing a file if g:netrw_fastbrowse - is zero and its not in tree listing style. - * fixed a bug with s:NetrwInit() that - prevented initialization with |Lists| and - |Dictionaries|. - * |netrw-mu| now unmarks marked-file lists - v145: Apr 05, 2012 * moved some command from a g:netrw_local_... - format to g:netwr_local... format - * included some NOTE level messages about - commands that aren't executable - * |g:netrw_errorlvl| (default: NOTE=0) - option introduced - May 18, 2012 * (Ilya Dogolazky) a scenario where a - |g:netrw_fastbrowse| of zero did not - have a local directory refreshed fixed. - Jul 10, 2012 * (Donatas) |netrw-gb| wasn't working due - to an incorrectly used variable. - Aug 09, 2012 * (Bart Baker) netrw was doubling - of entries after a split. - * (code by Takahiro Yoshihara) implemented - |g:netrw_dynamic_maxfilenamelen| - Aug 31, 2012 * (Andrew Wong) netrw refresh overwriting - the yank buffer. - v144: Mar 12, 2012 * when |CTRL-W_s| or |CTRL-W_v| are used, - or their wincmd equivalents, on a netrw - buffer, the netrw's w: variables were - not copied over. Fixed. - Mar 13, 2012 * nbcd_curpos_{bufnr('%')} was commented - out, and was mistakenly used during - RestorePosn. Unfortunately, I'm not - sure why it was commented out, so this - "fix" may re-introduce an earlier problem. - Mar 21, 2012 * included s:rexposn internally to make - :Rex return the cursor to the same pos'n - upon restoration of netrw buffer - Mar 27, 2012 * (sjbesse) s:NetrwGetFile() needs to remove - "/" from the netrw buffer's usual |'isk'| - in order to allow "filetype detect" to work - properly for scripts. - v143: Jun 01, 2011 * |g:netrw_winsize| will accept a negative - number; the absolute value of it will then - be used to specify lines/columns instead of - a percentage. - Jul 05, 2011 * the "d" map now supports mkdir via ftp - See |netrw-d| and |g:netrw_remote_mkdir| - Jul 11, 2011 * Changed Explore!, Sexplore!, and Vexplore - to use a percentage of |winwidth()| instead - of a percentage of |winheight()|. - Jul 11, 2011 * included support for https://... I'm just - beginning to test this, however. - Aug 01, 2011 * changed RestoreOptions to also restore - cursor position in netrw buffers. - Aug 12, 2011 * added a note about "%" to the balloon - Aug 30, 2011 * if |g:netrw_nobeval| exists, then balloon - evaluation is suppressed. - Aug 31, 2011 * (Benjamin R Haskell) provided a patch that - implements non-standard port handling for - files opened via the remote browser. - Aug 31, 2011 * Fixed a **//pattern Explorer bug - Sep 15, 2011 * (reported by Francesco Campana) netrw - now permits the "@" to be part of the - user id (if there's an @ that appears - to the right). - Nov 21, 2011 * New option: |g:netrw_ftp_options| - Dec 07, 2011 * (James Sinclair) provided a fix handling - attempts to use a uid and password when - they weren't defined. This affected - NetWrite (NetRead already had that fix). - ============================================================================== 13. Todo *netrw-todo* {{{1 diff --git a/en/quickfix.txt b/en/quickfix.txt index 9858d4eb7..3d42337c4 100644 --- a/en/quickfix.txt +++ b/en/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.4. Last change: 2015 Sep 08 +*quickfix.txt* For Vim version 7.4. Last change: 2016 Jan 21 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/quickref.txt b/en/quickref.txt index eef588135..8450cdd89 100644 --- a/en/quickref.txt +++ b/en/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.4. Last change: 2014 Aug 06 +*quickref.txt* For Vim version 7.4. Last change: 2015 Nov 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -620,6 +620,7 @@ Short explanation of each option: *option-list* 'balloondelay' 'bdlay' delay in mS before a balloon may pop up 'ballooneval' 'beval' switch on balloon evaluation 'balloonexpr' 'bexpr' expression to show in balloon +'belloff' 'bo' do not ring the bell for these reasons 'binary' 'bin' read/write/edit file in binary mode 'bioskey' 'biosk' MS-DOS: use bios calls for input characters 'bomb' prepend a Byte Order Mark to the file @@ -696,6 +697,7 @@ Short explanation of each option: *option-list* 'fileignorecase' 'fic' ignore case when using file names 'filetype' 'ft' type of file, used for autocommands 'fillchars' 'fcs' characters to use for displaying special items +'fixendofline' 'fixeol' make sure last line in file has <EOL> 'fkmap' 'fk' Farsi keyboard mapping 'foldclose' 'fcl' close a fold when the cursor leaves it 'foldcolumn' 'fdc' width of the column used to indicate folds @@ -710,10 +712,10 @@ Short explanation of each option: *option-list* 'foldnestmax' 'fdn' maximum fold depth 'foldopen' 'fdo' for which commands a fold will be opened 'foldtext' 'fdt' expression used to display for a closed fold +'formatexpr' 'fex' expression used with "gq" command 'formatlistpat' 'flp' pattern used to recognize a list header 'formatoptions' 'fo' how automatic formatting is to be done 'formatprg' 'fp' name of external program used with "gq" command -'formatexpr' 'fex' expression used with "gq" command 'fsync' 'fs' whether to invoke fsync() after file write 'gdefault' 'gd' the ":substitute" flag 'g' is default on 'grepformat' 'gfm' format of 'grepprg' output @@ -732,15 +734,15 @@ Short explanation of each option: *option-list* 'helplang' 'hlg' preferred help languages 'hidden' 'hid' don't unload buffer when it is |abandon|ed 'highlight' 'hl' sets highlighting mode for various occasions -'hlsearch' 'hls' highlight matches with last search pattern 'history' 'hi' number of command-lines that are remembered 'hkmap' 'hk' Hebrew keyboard mapping 'hkmapp' 'hkp' phonetic Hebrew keyboard mapping +'hlsearch' 'hls' highlight matches with last search pattern 'icon' let Vim set the text of the window icon 'iconstring' string to use for the Vim icon text 'ignorecase' 'ic' ignore case in search patterns -'imactivatekey' 'imak' key that activates the X input method 'imactivatefunc' 'imaf' function to enable/disable the X input method +'imactivatekey' 'imak' key that activates the X input method 'imcmdline' 'imc' use IM when starting to edit a command line 'imdisable' 'imd' do not use the IM in any mode 'iminsert' 'imi' use :lmap or IM in Insert mode @@ -764,6 +766,7 @@ Short explanation of each option: *option-list* 'keywordprg' 'kp' program to use for the "K" command 'langmap' 'lmap' alphabetic characters for other language mode 'langmenu' 'lm' language to be used for the menus +'langnoremap' 'lnr' do not apply 'langmap' to mapped characters 'laststatus' 'ls' tells when last window has status lines 'lazyredraw' 'lz' don't redraw while executing macros 'linebreak' 'lbr' wrap long lines at a blank @@ -774,6 +777,7 @@ Short explanation of each option: *option-list* 'list' show <Tab> and <EOL> 'listchars' 'lcs' characters for displaying in list mode 'loadplugins' 'lpl' load plugin scripts when starting up +'luadll' name of the Lua dynamic library 'macatsui' Mac GUI: use ATSUI text drawing 'magic' changes special characters in search patterns 'makeef' 'mef' name of the errorfile for ":make" @@ -813,6 +817,7 @@ Short explanation of each option: *option-list* 'patchexpr' 'pex' expression used to patch a file 'patchmode' 'pm' keep the oldest version of a file 'path' 'pa' list of directories searched with "gf" et.al. +'perldll' name of the Perl dynamic library 'preserveindent' 'pi' preserve the indent structure when reindenting 'previewheight' 'pvh' height of the preview window 'previewwindow' 'pvw' identifies the preview window @@ -825,6 +830,8 @@ Short explanation of each option: *option-list* 'printmbfont' 'pmbfn' font names to be used for CJK output of :hardcopy 'printoptions' 'popt' controls the format of :hardcopy output 'pumheight' 'ph' maximum height of the popup menu +'pythondll' name of the Python 2 dynamic library +'pythonthreedll' name of the Python 3 dynamic library 'quoteescape' 'qe' escape characters used in a string 'readonly' 'ro' disallow writing the buffer 'redrawtime' 'rdt' timeout for 'hlsearch' and |:match| highlighting @@ -837,6 +844,7 @@ Short explanation of each option: *option-list* 'revins' 'ri' inserting characters will work backwards 'rightleft' 'rl' window is right-to-left oriented 'rightleftcmd' 'rlc' commands for which editing works right-to-left +'rubydll' name of the Ruby dynamic library 'ruler' 'ru' show cursor line and column in the status line 'rulerformat' 'ruf' custom format for the ruler 'runtimepath' 'rtp' list of directories used for runtime files @@ -892,14 +900,16 @@ Short explanation of each option: *option-list* 'switchbuf' 'swb' sets behavior when switching to another buffer 'synmaxcol' 'smc' maximum column to find syntax items 'syntax' 'syn' syntax to be loaded for current buffer -'tabstop' 'ts' number of spaces that <Tab> in file uses 'tabline' 'tal' custom format for the console tab pages line 'tabpagemax' 'tpm' maximum number of tab pages for |-p| and "tab all" +'tabstop' 'ts' number of spaces that <Tab> in file uses 'tagbsearch' 'tbs' use binary searching in tags files +'tagcase' 'tc' how to handle case when searching in tags files 'taglength' 'tl' number of significant characters for a tag 'tagrelative' 'tr' file names in tag file are relative 'tags' 'tag' list of file names used by the tag command 'tagstack' 'tgst' push tags onto the tag stack +'tcldll' name of the Tcl dynamic library 'term' name of the terminal 'termbidi' 'tbidi' terminal takes care of bi-directionality 'termencoding' 'tenc' character encoding used by the terminal diff --git a/en/repeat.txt b/en/repeat.txt index af3a5182a..b3132a900 100644 --- a/en/repeat.txt +++ b/en/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.4. Last change: 2015 Apr 13 +*repeat.txt* For Vim version 7.4. Last change: 2016 Jan 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -109,7 +109,13 @@ To abort this type CTRL-C twice. q{0-9a-zA-Z"} Record typed characters into register {0-9a-zA-Z"} (uppercase to append). The 'q' command is disabled while executing a register, and it doesn't work inside - a mapping and |:normal|. {Vi: no recording} + a mapping and |:normal|. + + Note: If the register being used for recording is also + used for |y| and |p| the result is most likely not + what is expected, because the put will paste the + recorded macro and the yank will overwrite the + recorded macro. {Vi: no recording} q Stops recording. (Implementation note: The 'q' that stops recording is not stored in the register, unless @@ -477,16 +483,44 @@ Additionally, these commands can be used: finish Finish the current script or user function and come back to debug mode for the command after the one that sourced or called it. + *>bt* + *>backtrace* + *>where* + backtrace Show the call stacktrace for current debugging session. + bt + where + *>frame* + frame N Goes to N bactrace level. + and - signs make movement + relative. E.g., ":frame +3" goes three frames up. + *>up* + up Goes one level up from call stacktrace. + *>down* + down Goes one level down from call stacktrace. About the additional commands in debug mode: - There is no command-line completion for them, you get the completion for the normal Ex commands only. -- You can shorten them, up to a single character: "c", "n", "s" and "f". +- You can shorten them, up to a single character, unless more then one command + starts with the same letter. "f" stands for "finish", use "fr" for "frame". - Hitting <CR> will repeat the previous one. When doing another command, this is reset (because it's not clear what you want to repeat). - When you want to use the Ex command with the same name, prepend a colon: ":cont", ":next", ":finish" (or shorter). +The backtrace shows the hierarchy of function calls, e.g.: + >bt ~ + 3 function One[3] ~ + 2 Two[3] ~ + ->1 Three[3] ~ + 0 Four ~ + line 1: let four = 4 ~ + +The "->" points to the current frame. Use "up", "down" and "frame N" to +select another frame. + +In the current frame you can evaluate the local function variables. There is +no way to see the command at the current line yet. + DEFINING BREAKPOINTS *:breaka* *:breakadd* diff --git a/en/spell.txt b/en/spell.txt index 5a802a29f..3442a0011 100644 --- a/en/spell.txt +++ b/en/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 7.4. Last change: 2014 Sep 19 +*spell.txt* For Vim version 7.4. Last change: 2016 Jan 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1386,6 +1386,14 @@ the item name. Case is always ignored. The Hunspell feature to use three arguments and flags is not supported. + *spell-NOCOMPOUNDSUGS* +This item indicates that using compounding to make suggestions is not a good +idea. Use this when compounding is used with very short or one-character +words. E.g. to make numbers out of digits. Without this flag creating +suggestions would spend most time trying all kind of weird compound words. + + NOCOMPOUNDSUGS ~ + *spell-SYLLABLE* The SYLLABLE item defines characters or character sequences that are used to count the number of syllables in a word. Example: diff --git a/en/syntax.txt b/en/syntax.txt index d475660a3..45d4a08c4 100644 --- a/en/syntax.txt +++ b/en/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.4. Last change: 2014 Sep 27 +*syntax.txt* For Vim version 7.4. Last change: 2016 Jan 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -211,7 +211,8 @@ thing. These are then linked to a highlight group that specifies the color. A syntax group name doesn't specify any color or attributes itself. The name for a highlight or syntax group must consist of ASCII letters, digits -and the underscore. As a regexp: "[a-zA-Z0-9_]*" +and the underscore. As a regexp: "[a-zA-Z0-9_]*". However, Vim does not give +an error when using other characters. To be able to allow each user to pick his favorite set of colors, there must be preferred names for highlight groups that are common for many languages. @@ -421,18 +422,19 @@ and last line to be converted. Example, using the last set Visual area: > *:TOhtml* :[range]TOhtml The ":TOhtml" command is defined in a standard plugin. This command will source |2html.vim| for you. When a - range is given, set |g:html_start_line| and - |g:html_end_line| to the start and end of the range, - respectively. Default range is the entire buffer. - - If the current window is part of a |diff|, unless - |g:html_diff_one_file| is set, :TOhtml will convert - all windows which are part of the diff in the current - tab and place them side-by-side in a <table> element - in the generated HTML. With |g:html_line_ids| you can - jump to lines in specific windows with (for example) - #W1L42 for line 42 in the first diffed window, or - #W3L87 for line 87 in the third. + range is given, this command sets |g:html_start_line| + and |g:html_end_line| to the start and end of the + range, respectively. Default range is the entire + buffer. + + If the current window is part of a |diff|, unless + |g:html_diff_one_file| is set, :TOhtml will convert + all windows which are part of the diff in the current + tab and place them side-by-side in a <table> element + in the generated HTML. With |g:html_line_ids| you can + jump to lines in specific windows with (for example) + #W1L42 for line 42 in the first diffed window, or + #W3L87 for line 87 in the third. Examples: > @@ -746,6 +748,22 @@ and UTF-32 instead, use: > Note that documents encoded in either UTF-32 or UTF-16 have known compatibility problems with some major browsers. + *g:html_font* +Default: "monospace" +You can specify the font or fonts used in the converted document using +g:html_font. If this option is set to a string, then the value will be +surrounded with single quotes. If this option is set to a list then each list +item is surrounded by single quotes and the list is joined with commas. Either +way, "monospace" is added as the fallback generic family name and the entire +result used as the font family (using CSS) or font face (if not using CSS). +Examples: > + + " font-family: 'Consolas', monospace; + :let g:html_font = "Consolas" + + " font-family: 'DejaVu Sans Mono', 'Consolas', monospace; + :let g:html_font = ["DejaVu Sans Mono", "Consolas"] +< *convert-to-XML* *convert-to-XHTML* *g:html_use_xhtml* Default: 0. When 0, generate standard HTML 4.01 (strict when possible). @@ -1063,7 +1081,8 @@ CPP *cpp.vim* *ft-cpp-syntax* Most of things are same as |ft-c-syntax|. Variable Highlight ~ -cpp_no_c11 don't highlight C++11 standard items +cpp_no_cpp11 don't highlight C++11 standard items +cpp_no_cpp14 don't highlight C++14 standard items CSH *csh.vim* *ft-csh-syntax* @@ -1128,6 +1147,16 @@ to standard by placing this in your vimrc file: > :let enforce_freedesktop_standard = 1 +DIFF *diff.vim* + +The diff highlighting normally finds translated headers. This can be slow if +there are very long lines in the file. To disable translations: > + + :let diff_translations = 0 + +Also see |diff-slow|. + + DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* The dircolors utility highlighting definition has one option. It exists to @@ -1409,34 +1438,27 @@ form, then > :let fortran_fixed_source=1 in your .vimrc prior to the :syntax on command. -If the form of the source code depends upon the file extension, then it is -most convenient to set fortran_free_source in a ftplugin file. For more -information on ftplugin files, see |ftplugin|. For example, if all your -fortran files with an .f90 extension are written in free source form and the -rest in fixed source form, add the following code to your ftplugin file > - let s:extfname = expand("%:e") - if s:extfname ==? "f90" - let fortran_free_source=1 - unlet! fortran_fixed_source - else - let fortran_fixed_source=1 - unlet! fortran_free_source - endif -Note that this will work only if the "filetype plugin indent on" command -precedes the "syntax on" command in your .vimrc file. +If the form of the source code depends, in a non-standard way, upon the file +extension, then it is most convenient to set fortran_free_source in a ftplugin +file. For more information on ftplugin files, see |ftplugin|. Note that this +will work only if the "filetype plugin indent on" command precedes the "syntax +on" command in your .vimrc file. When you edit an existing fortran file, the syntax script will assume free source form if the fortran_free_source variable has been set, and assumes fixed source form if the fortran_fixed_source variable has been set. If neither of these variables have been set, the syntax script attempts to -determine which source form has been used by examining the first five columns -of the first 250 lines of your file. If no signs of free source form are -detected, then the file is assumed to be in fixed source form. The algorithm -should work in the vast majority of cases. In some cases, such as a file that -begins with 250 or more full-line comments, the script may incorrectly decide -that the fortran code is in fixed form. If that happens, just add a -non-comment statement beginning anywhere in the first five columns of the -first twenty five lines, save (:w) and then reload (:e!) the file. +determine which source form has been used by examining the file extension +using conventions common to the ifort, gfortran, Cray, NAG, and PathScale +compilers (.f, .for, .f77 for fixed-source, .f90, .f95, .f03, .f08 for +free-source). If none of this works, then the script examines the first five +columns of the first 500 lines of your file. If no signs of free source form +are detected, then the file is assumed to be in fixed source form. The +algorithm should work in the vast majority of cases. In some cases, such as a +file that begins with 500 or more full-line comments, the script may +incorrectly decide that the fortran code is in fixed form. If that happens, +just add a non-comment statement beginning anywhere in the first five columns +of the first twenty five lines, save (:w) and then reload (:e!) the file. Tabs in fortran files ~ Tabs are not recognized by the Fortran standards. Tabs are not a good idea in @@ -3220,7 +3242,8 @@ improve screen updating rates (see |:syn-sync| for more on this). > The g:vimsyn_embed option allows users to select what, if any, types of embedded script highlighting they wish to have. > - g:vimsyn_embed == 0 : don't embed any scripts + g:vimsyn_embed == 0 : don't support any embedded scripts + g:vimsyn_embed =~ 'l' : support embedded lua g:vimsyn_embed =~ 'm' : support embedded mzscheme g:vimsyn_embed =~ 'p' : support embedded perl g:vimsyn_embed =~ 'P' : support embedded python @@ -3238,6 +3261,7 @@ Some folding is now supported with syntax/vim.vim: > g:vimsyn_folding == 0 or doesn't exist: no syntax-based folding g:vimsyn_folding =~ 'a' : augroups g:vimsyn_folding =~ 'f' : fold functions + g:vimsyn_folding =~ 'l' : fold lua script g:vimsyn_folding =~ 'm' : fold mzscheme script g:vimsyn_folding =~ 'p' : fold perl script g:vimsyn_folding =~ 'P' : fold python script @@ -3311,6 +3335,32 @@ must not click outside of the pixel strings, but feel free to improve it. It will look much better with a font in a quadratic cell size, e.g. for X: > :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* + +YAML *yaml.vim* *ft-yaml-syntax* + + *g:yaml_schema* *b:yaml_schema* +A YAML schema is a combination of a set of tags and a mechanism for resolving +non-specific tags. For user this means that YAML parser may, depending on +plain scalar contents, treat plain scalar (which can actually be only string +and nothing else) as a value of the other type: null, boolean, floating-point, +integer. `g:yaml_schema` option determines according to which schema values +will be highlighted specially. Supported schemas are + +Schema Description ~ +failsafe No additional highlighting. +json Supports JSON-style numbers, booleans and null. +core Supports more number, boolean and null styles. +pyyaml In addition to core schema supports highlighting timestamps, + but there are some differences in what is recognized as + numbers and many additional boolean values not present in core + schema. + +Default schema is `core`. + +Note that schemas are not actually limited to plain scalars, but this is the +only difference between schemas defined in YAML specification and the only +difference defined in the syntax file. + ============================================================================== 5. Defining a syntax *:syn-define* *E410* @@ -3388,6 +3438,32 @@ SPELL CHECKING *:syn-spell* To activate spell checking the 'spell' option must be set. +SYNTAX ISKEYWORD SETTING *:syn-iskeyword* + +:sy[ntax] iskeyword [clear | {option}] + This defines the keyword characters. It's like the 'iskeyword' option + for but only applies to syntax highlighting. + + clear: Syntax specific iskeyword setting is disabled and the + buffer-local 'iskeyword' setting is used. + {option} Set the syntax 'iskeyword' option to a new value. + + Example: > + :syntax iskeyword @,48-57,192-255,$,_ +< + This would set the syntax specific iskeyword option to include all + alphabetic characters, plus the numeric characters, all accented + characters and also includes the "_" and the "$". + + If no argument is given, the current value will be output. + + Setting this option influences what |/\k| matches in syntax patterns + and also determines where |:syn-keyword| will be checked for a new + match. + + It is recommended when writing syntax files, to use this command + to the correct value for the specific syntax language and not change + the 'iskeyword' option. DEFINING KEYWORDS *:syn-keyword* @@ -3419,6 +3495,7 @@ DEFINING KEYWORDS *:syn-keyword* isn't, the keyword will never be recognized. Multi-byte characters can also be used. These do not have to be in 'iskeyword'. + See |:syn-iskeyword| for defining syntax specific iskeyword settings. A keyword always has higher priority than a match or region, the keyword is used if more than one item matches. Keywords do not nest @@ -3662,6 +3739,7 @@ Whether or not it is actually concealed depends on the value of the 'conceallevel' option. The 'concealcursor' option is used to decide whether concealable items in the current line are displayed unconcealed to be able to edit the line. +Another way to conceal text with with |matchadd()|. concealends *:syn-concealends* @@ -4108,7 +4186,7 @@ example, for instance, can be done like this: > As can be seen here, the \z actually does double duty. In the start pattern, it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it -changes the \1 back-reference into an external reference referring to the +changes the \z1 back-reference into an external reference referring to the first external sub-expression in the start pattern. External references can also be used in skip patterns: > :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" @@ -4637,6 +4715,8 @@ ctermbg={color-nr} *highlight-ctermbg* Note that for some color terminals these names may result in the wrong colors! + You can also use "NONE" to remove the color. + *:hi-normal-cterm* When setting the "ctermfg" or "ctermbg" colors for the Normal group, these will become the colors used for the non-highlighted text. @@ -5065,6 +5145,7 @@ This will set the "w:current_syntax" variable to "foo". The value of restoring "b:current_syntax", since the syntax files do set "b:current_syntax". The value set by the syntax file is assigned to "w:current_syntax". +Note: This resets the 'spell', 'spellcapcheck' and 'spellfile' options. Once a window has its own syntax, syntax commands executed from other windows on the same buffer (including :syntax clear) have no effect. Conversely, diff --git a/en/tagsrch.txt b/en/tagsrch.txt index 06c983860..86a00f409 100644 --- a/en/tagsrch.txt +++ b/en/tagsrch.txt @@ -85,11 +85,13 @@ changed, to avoid confusion when using ":tnext". It is changed when using ":tag {ident}". The ignore-case matches are not found for a ":tag" command when the -'ignorecase' option is off. They are found when a pattern is used (starting -with a "/") and for ":tselect", also when 'ignorecase' is off. Note that -using ignore-case tag searching disables binary searching in the tags file, -which causes a slowdown. This can be avoided by fold-case sorting the tag -file. See the 'tagbsearch' option for an explanation. +'ignorecase' option is off and 'tagcase' is "followic" or when 'tagcase' is +"match". They are found when a pattern is used (starting with a "/") and for +":tselect", also when 'ignorecase' is off and 'tagcase' is "followic" or when +'tagcase' is "match". Note that using ignore-case tag searching disables +binary searching in the tags file, which causes a slowdown. This can be +avoided by fold-case sorting the tag file. See the 'tagbsearch' option for an +explanation. ============================================================================== 2. Tag stack *tag-stack* *tagstack* *E425* @@ -440,12 +442,13 @@ file "tags". It can also be used to access a common tags file. The next file in the list is not used when: - A matching static tag for the current buffer has been found. - A matching global tag has been found. -This also depends on the 'ignorecase' option. If it is off, and the tags file -only has a match without matching case, the next tags file is searched for a -match with matching case. If no tag with matching case is found, the first -match without matching case is used. If 'ignorecase' is on, and a matching -global tag with or without matching case is found, this one is used, no -further tags files are searched. +This also depends on whether case is ignored. Case is ignored when +'ignorecase' is set and 'tagcase' is "followic", or when 'tagcase' is +"ignore". If case is not ignored, and the tags file only has a match without +matching case, the next tags file is searched for a match with matching case. +If no tag with matching case is found, the first match without matching case +is used. If case is ignored, and a matching global tag with or without +matching case is found, this one is used, no further tags files are searched. When a tag file name starts with "./", the '.' is replaced with the path of the current file. This makes it possible to use a tags file in the directory @@ -579,8 +582,10 @@ that indicates if the file was sorted. When this line is found, Vim uses binary searching for the tags file: !_TAG_FILE_SORTED<Tab>1<Tab>{anything} ~ -A tag file may be case-fold sorted to avoid a linear search when 'ignorecase' -is on. See 'tagbsearch' for details. The value '2' should be used then: +A tag file may be case-fold sorted to avoid a linear search when case is +ignored. (Case is ignored when 'ignorecase' is set and 'tagcase' is +"followic", or when 'tagcase' is "ignore".) See 'tagbsearch' for details. +The value '2' should be used then: !_TAG_FILE_SORTED<Tab>2<Tab>{anything} ~ The other tag that Vim recognizes, but only when compiled with the diff --git a/en/term.txt b/en/term.txt index d2dd54706..a56813ac0 100644 --- a/en/term.txt +++ b/en/term.txt @@ -1,4 +1,4 @@ -*term.txt* For Vim version 7.4. Last change: 2014 May 13 +*term.txt* For Vim version 7.4. Last change: 2015 Nov 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -224,10 +224,11 @@ The options are listed below. The associated termcap code is always equal to the last two characters of the option name. Only one termcap code is required: Cursor motion, 't_cm'. -The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap. -When the termcap flag is present, the option will be set to "y". But any -non-empty string means that the flag is set. An empty string means that the -flag is not set. 't_CS' works like this too, but it isn't a termcap flag. +The options 't_da', 't_db', 't_ms', 't_xs', 't_xn' represent flags in the +termcap. When the termcap flag is present, the option will be set to "y". +But any non-empty string means that the flag is set. An empty string means +that the flag is not set. 't_CS' works like this too, but it isn't a termcap +flag. OUTPUT CODES option meaning ~ @@ -281,6 +282,9 @@ OUTPUT CODES t_vs cursor very visible *t_vs* *'t_vs'* *t_xs* *'t_xs'* t_xs if non-empty, standout not erased by overwriting (hpterm) + *t_xn* *'t_xn'* + t_xn if non-empty, writing a character at the last screen cell + does not cause scrolling t_ZH italics mode *t_ZH* *'t_ZH'* t_ZR italics end *t_ZR* *'t_ZR'* @@ -290,12 +294,15 @@ Added by Vim (there are no standard codes for these): t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* t_WS set window size (height, width) in characters *t_WS* *'t_WS'* t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* - t_EI end insert mode (block cursor shape) *t_EI* *'t_EI'* + t_SR start replace mode (underline cursor shape) *t_SR* *'t_SR'* + t_EI end insert or replace mode (block cursor shape) *t_EI* *'t_EI'* |termcap-cursor-shape| t_RV request terminal version string (for xterm) *t_RV* *'t_RV'* |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| t_u7 request cursor position (for xterm) *t_u7* *'t_u7'* see |'ambiwidth'| + t_RB request terminal background color *t_RB* *'t_RB'* + see |'ambiwidth'| KEY CODES Note: Use the <> form if possible @@ -410,7 +417,7 @@ adjust the various t_ codes. This avoids the problem that the xterm can produce different codes, depending on the mode it is in (8-bit, VT102, VT220, etc.). The result is that codes like <xF1> are no longer needed. Note: This is only done on startup. If the xterm options are changed after -Vim has started, the escape sequences may not be recognized any more. +Vim has started, the escape sequences may not be recognized anymore. *xterm-resize* Window resizing with xterm only works if the allowWindowOps resource is @@ -434,13 +441,16 @@ If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used to reset to the default colors. *termcap-cursor-shape* *termcap-cursor-color* -When Vim enters Insert mode the 't_SI' escape sequence is sent. When leaving -Insert mode 't_EI' is used. But only if both are defined. This can be used -to change the shape or color of the cursor in Insert mode. These are not -standard termcap/terminfo entries, you need to set them yourself. +When Vim enters Insert mode the 't_SI' escape sequence is sent. When Vim +enters Replace mode the 't_SR' escape sequence is sent if it is set, otherwise +'t_SI' is sent. When leaving Insert mode or Replace mode 't_EI' is used. This +can be used to change the shape or color of the cursor in Insert or Replace +mode. These are not standard termcap/terminfo entries, you need to set them +yourself. Example for an xterm, this changes the color of the cursor: > if &term =~ "xterm" let &t_SI = "\<Esc>]12;purple\x7" + let &t_SR = "\<Esc>]12;red\x7" let &t_EI = "\<Esc>]12;blue\x7" endif NOTE: When Vim exits the shape for Normal mode will remain. The shape from @@ -842,7 +852,7 @@ Mouse clicks can be mapped. The codes for mouse clicks are: The X1 and X2 buttons refer to the extra buttons found on some mice. The 'Microsoft Explorer' mouse has these buttons available to the right thumb. -Currently X1 and X2 only work on Win32 environments. +Currently X1 and X2 only work on Win32 and X11 environments. Examples: > :noremap <MiddleMouse> <LeftMouse><MiddleMouse> diff --git a/en/usr_02.txt b/en/usr_02.txt index da6364045..a3e9bf3c8 100644 --- a/en/usr_02.txt +++ b/en/usr_02.txt @@ -1,4 +1,4 @@ -*usr_02.txt* For Vim version 7.4. Last change: 2015 Apr 12 +*usr_02.txt* For Vim version 7.4. Last change: 2016 Jan 16 VIM USER MANUAL - by Bram Moolenaar @@ -408,7 +408,15 @@ original version of the file. Everything you always wanted to know can be found in the Vim help files. Don't be afraid to ask! - To get generic help use this command: > + +If you know what you are looking for, it is usually easier to search for it +using the help system, instead of using Google. Because the subjects follow +a certain style guide. + +Also the help has the advantage of belonging to your particular Vim version. +You won't see help for commands added later. These would not work for you. + +To get generic help use this command: > :help @@ -482,7 +490,7 @@ example, use the following command: > :help 'number' -The table with all mode prefixes can be found here: |help-context|. +The table with all mode prefixes can be found below: |help-summary|. Special keys are enclosed in angle brackets. To find help on the up-arrow key in Insert mode, for instance, use this command: > @@ -499,64 +507,191 @@ You can use the error ID at the start to find help about it: > Summary: *help-summary* > - :help -< Gives you very general help. Scroll down to see a list of all - helpfiles, including those added locally (i.e. not distributed - with Vim). > - :help user-toc.txt -< Table of contents of the User Manual. > - :help :subject -< Ex-command "subject", for instance the following: > - :help :help -< Help on getting help. > - :help abc -< normal-mode command "abc". > - :help CTRL-B -< Control key <C-B> in Normal mode. > - :help i_abc - :help i_CTRL-B -< The same in Insert mode. > - :help v_abc - :help v_CTRL-B -< The same in Visual mode. > - :help c_abc - :help c_CTRL-B -< The same in Command-line mode. > - :help 'subject' -< Option 'subject'. > - :help subject() -< Function "subject". > - :help -subject -< Command-line argument "-subject". > - :help +subject -< Compile-time feature "+subject". > - :help /* -< Regular expression item "*" > - :help EventName -< Autocommand event "EventName". > - :help digraphs.txt -< The top of the helpfile "digraph.txt". - Similarly for any other helpfile. > - :help pattern<Tab> -< Find a help tag starting with "pattern". Repeat <Tab> for - others. > - :help pattern<Ctrl-D> -< See all possible help tag matches "pattern" at once. > - :helpgrep pattern -< Search the whole text of all help files for pattern "pattern". - Jumps to the first match. Jump to other matches with: > - :cn -< next match > - :cprev - :cN -< previous match > - :cfirst - :clast -< first or last match > - :copen - :cclose -< open/close the quickfix window; press <Enter> to jump - to the item under the cursor + +1) Use Ctrl-D after typing a topic and let Vim show all available topics. + Or press Tab to complete: > + :help some<Tab> +< More information on how to use the help: > + :help helphelp + +2) Follow the links in bars to related help. You can go from the detailed + help to the user documentation, which describes certain commands more from + a user perspective and less detailed. E.g. after: > + :help pattern.txt +< You can see the user guide topics |03.9| and |usr_27.txt| in the + introduction. + +3) Options are enclosed in single apostrophes. To go to the help topic for the + list option: > + :help 'list' +< If you only know you are looking for a certain option, you can also do: > + :help options.txt +< to open the help page which describes all option handling and then search + using regular expressions, e.g. textwidth. + Certain options have their own namespace, e.g.: > + :help cpo-<letter> +< for the corresponding flag of the 'cpoptions' settings, substitute <letter> + by a specific flag, e.g.: > + :help cpo-; +< And for the guioption flags: > + :help go-<letter> + +4) Normal mode commands do not have a prefix. To go to the help page for the + "gt" command: > + :help gt + +5) Insert mode commands start with i_. Help for deleting a word: > + :help i_CTRL-W + +6) Visual mode commands start with v_. Help for jumping to the other side of + the Visual area: > + :help v_o + +7) Command line editing and arguments start with c_. Help for using the + command argument %: > + :help c_% + +8) Ex-commands always start with ":", so to go to the :s command help: > + :help :s + +9) Commands specifically for debugging start with ">". To go to to the help + for the "cont" debug command: > + :help >cont + +10) Key combinations. They usually start with a single letter indicating + the mode for which they can be used. E.g.: > + :help i_CTRL-X +< takes you to the family of Ctrl-X commands for insert mode which can be + used to auto complete different things. Note, that certain keys will + always be written the same, e.g. Control will always be CTRL. + For normal mode commands there is no prefix and the topic is available at + :h CTRL-<Letter>. E.g. > + :help CTRL-W +< In contrast > + :help c_CTRL-R +< will describe what the Ctrl-R does when entering commands in the Command + line and > + :help v_Ctrl-A +< talks about incrementing numbers in visual mode and > + :help g_CTRL-A +< talks about the g<C-A> command (e.g. you have to press "g" then <Ctrl-A>). + Here the "g" stand for the normal command "g" which always expects a second + key before doing something similar to the commands starting with "z" + +11) Regexp items always start with /. So to get help for the "\+" quantifier + in Vim regexes: > + :help /\+ +< If you need to know everything about regular expressions, start reading + at: > + :help pattern.txt + +12) Registers always start with "quote". To find out about the special ":" + register: > + :help quote: + +13) Vim Script (VimL) is available at > + :help eval.txt +< Certain aspects of the language are available at :h expr-X where "X" is a + single letter. E.g. > + :help expr-! +< will take you to the topic describing the "!" (Not) operator for + VimScript. + Also important is > + :help function-list +< to find a short description of all functions available. Help topics for + VimL functions always include the "()", so: > + :help append() +< talks about the append VimL function rather than how to append text in the + current buffer. + +14) Mappings are talked about in the help page :h |map.txt|. Use > + :help mapmode-i +< to find out about the |:imap| command. Also use :map-topic + to find out about certain subtopics particular for mappings. e.g: > + :help :map-local +< for buffer-local mappings or > + :help map-bar +< for how the '|' is handled in mappings. + +15) Command definitions are talked about :h command-topic, so use > + :help command-bar +< to find out about the '!' argument for custom commands. + +16) Window management commands always start with CTRL-W, so you find the + corresponding help at :h CTRL-W_letter. E.g. > + :help CTRL-W_p +< for moving the previous accessed window. You can also access > + :help windows.txt +< and read your way through if you are looking for window handling + commands. + +17) Use |:helpgrep| to search in all help pages (and also of any installed + plugins). See |:helpgrep| for how to use it. + To search for a topic: > + :helpgrep topic +< This takes you to the first match. To go to the next one: > + :cnext +< All matches are available in the quickfix window which can be opened + with: > + :copen +< Move around to the match you like and press Enter to jump to that help. + +18) The user manual. This describes help topics for beginners in a rather + friendly way. Start at |usr_toc.txt| to find the table of content (as you + might have guessed): > + :help usr_toc.txt +< Skim over the contents to find interesting topics. The "Digraphs" and + "Entering special characters" items are in chapter 24, so to go to that + particular help page: > + :help usr_24.txt +< Also if you want to access a certain chapter in the help, the chapter + number can be accessed directly like this: > + :help 10.1 +< goes to chapter 10.1 in |usr_10.txt| and talks about recording macros. + +19) Highlighting groups. Always start with hl-groupname. E.g. > + :help hl-WarningMsg +< talks about the WarningMsg highlighting group. + +20) Syntax highlighting is namespaced to :syn-topic e.g. > + :help :syn-conceal +< talks about the conceal argument for the :syn command. + +21) Quickfix commands usually start with :c while location list commands + usually start with :l + +22) Autocommand events can be found by their name: > + :help BufWinLeave +< To see all possible events: > + :help autocommands-events + +23) Command-line switches always start with "-". So for the help of the -f + command switch of Vim use: > + :help -f + +24) Optional features always start with "+". To find out about the + conceal feature use: > + :help +conceal + +25) Documentation for included filetype specific functionality is usually + available in the form ft-<filetype>-<functionality>. So > + :help ft-c-syntax +< talks about the C syntax file and the option it provides. Sometimes, + additional sections for omni completion > + :help ft-php-omni +< or filetype plugins > + :help ft-tex-plugin +< are available. + +26) Error and Warning codes can be looked up directly in the help. So > + :help E297 +< takes you exactly to the description of the swap error message and > + :help W10 +< talks about the warning "Changing a readonly file". + Sometimes however, those error codes are not described, but rather are + listed at the Vim command that usually causes this. So: > + :help E128 +< takes you to the |:function| command ============================================================================== diff --git a/en/usr_03.txt b/en/usr_03.txt index 8cbcf13a1..4f72214bb 100644 --- a/en/usr_03.txt +++ b/en/usr_03.txt @@ -1,4 +1,4 @@ -*usr_03.txt* For Vim version 7.4. Last change: 2006 Jun 21 +*usr_03.txt* For Vim version 7.4. Last change: 2016 Jan 05 VIM USER MANUAL - by Bram Moolenaar @@ -57,8 +57,11 @@ paragraph, much faster than using "l". "b" does the same in the other direction. A word ends at a non-word character, such as a ".", "-" or ")". To change -what Vim considers to be a word, see the 'iskeyword' option. - It is also possible to move by white-space separated WORDs. This is not a +what Vim considers to be a word, see the 'iskeyword' option. If you try this +out in the help directly, 'iskeyword' needs to be reset for the examples to +work: > + :set iskeyword& +It is also possible to move by white-space separated WORDs. This is not a word in the normal sense, that's why the uppercase is used. The commands for moving by WORDs are also uppercase, as this figure shows: @@ -410,8 +413,8 @@ in "the" use: > /the\> The "\>" item is a special marker that only matches at the end of a word. -Similarly "\<" only matches at the begin of a word. Thus to search for the -word "the" only: > +Similarly "\<" only matches at the beginning of a word. Thus to search for +the word "the" only: > /\<the\> diff --git a/en/usr_29.txt b/en/usr_29.txt index f13cd3a40..dc71e71dd 100644 --- a/en/usr_29.txt +++ b/en/usr_29.txt @@ -255,7 +255,8 @@ function. RELATED ITEMS -You can set 'ignorecase' to make case in tag names be ignored. +To make case in tag names be ignored, you can set 'ignorecase' while leaving +'tagcase' as "followic", or set 'tagcase' to "ignore". The 'tagbsearch' option tells if the tags file is sorted or not. The default is to assume a sorted tags file, which makes a tags search a lot faster, but diff --git a/en/usr_41.txt b/en/usr_41.txt index 28bdbad89..9f2442e9b 100644 --- a/en/usr_41.txt +++ b/en/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.4. Last change: 2014 Aug 16 +*usr_41.txt* For Vim version 7.4. Last change: 2016 Jan 28 VIM USER MANUAL - by Bram Moolenaar @@ -888,6 +888,19 @@ Mappings: *mapping-functions* maparg() get rhs of a mapping wildmenumode() check if the wildmode is active +Testing: *test-functions* + assert_equal() assert that two expressions values are equal + assert_false() assert that an expression is false + assert_true() assert that an expression is true + +Inter-process communication: + connect() open a channel + disconnect() close a channel + sendexpr() send a JSON message over a channel + sendraw() send a raw message over a channel + jsonencode() encode an expression to a JSON string + jsondecode() decode a JSON string to Vim types + Various: *various-functions* mode() get current editing mode visualmode() last visual mode used @@ -916,8 +929,10 @@ Various: *various-functions* luaeval() evaluate Lua expression mzeval() evaluate |MzScheme| expression + perleval() evaluate Perl expression (|+perl|) py3eval() evaluate Python expression (|+python3|) pyeval() evaluate Python expression (|+python|) + wordcount() get byte/word/char count of buffer ============================================================================== *41.7* Defining a function diff --git a/en/usr_43.txt b/en/usr_43.txt index 6eaa9c14a..8f0820fbf 100644 --- a/en/usr_43.txt +++ b/en/usr_43.txt @@ -1,4 +1,4 @@ -*usr_43.txt* For Vim version 7.4. Last change: 2008 Dec 28 +*usr_43.txt* For Vim version 7.4. Last change: 2015 Oct 23 VIM USER MANUAL - by Bram Moolenaar @@ -46,6 +46,7 @@ three-line comment. You do this with only two steps: setlocal softtabstop=4 noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> + let b:undo_ftplugin = "setl softtabstop< | unmap <buffer> <LocalLeader>c" Try editing a C file. You should notice that the 'softtabstop' option is set to 4. But when you edit another file it's reset to the default zero. That is @@ -60,6 +61,11 @@ buffer. This works with any mapping command: ":map!", ":vmap", etc. The |<LocalLeader>| in the mapping is replaced with the value of the "maplocalleader" variable. +The line to set b:undo_ftplugin is for when the filetype is set to another +value. In that case you will want to undo your preferences. The +b:undo_ftplugin variable is executed as a command. Watch out for characters +with a special meaning inside a string, such as a backslash. + You can find examples for filetype plugins in this directory: > $VIMRUNTIME/ftplugin/ diff --git a/en/various.txt b/en/various.txt index 4ad328773..d338d9b96 100644 --- a/en/various.txt +++ b/en/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.4. Last change: 2014 Aug 06 +*various.txt* For Vim version 7.4. Last change: 2016 Jan 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -319,6 +319,7 @@ N *+builtin_terms* some terminals builtin |builtin-terms| B *++builtin_terms* maximal terminals builtin |builtin-terms| N *+byte_offset* support for 'o' flag in 'statusline' option, "go" and ":goto" commands. +m *+channel* inter process communication |channel| N *+cindent* |'cindent'|, C indenting N *+clientserver* Unix and Win32: Remote invocation |clientserver| *+clipboard* |clipboard| support @@ -647,6 +648,7 @@ K Run a program to lookup the keyword under the g CTRL-A Only when Vim was compiled with MEM_PROFILING defined (which is very rare): print memory usage statistics. Only useful for debugging Vim. + For incrementing in Visual mode see |v_g_CTRL-A|. ============================================================================== 2. Using Vim like less or more *less* @@ -665,4 +667,12 @@ highlighting. The "h" key will give you a short overview of the available commands. +If you want to set options differently when using less, define the +LessInitFunc in your vimrc, for example: > + + func LessInitFunc() + set nocursorcolumn nocursorline + endfunc +< + vim:tw=78:ts=8:ft=help:norl: diff --git a/en/vi_diff.txt b/en/vi_diff.txt index aadbf9b41..2a7bbe467 100644 --- a/en/vi_diff.txt +++ b/en/vi_diff.txt @@ -1,4 +1,4 @@ -*vi_diff.txt* For Vim version 7.4. Last change: 2013 Aug 22 +*vi_diff.txt* For Vim version 7.4. Last change: 2015 Nov 01 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/en/windows.txt b/en/windows.txt index cc3659df7..f6e0a1fd0 100644 --- a/en/windows.txt +++ b/en/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 7.4. Last change: 2014 Mar 25 +*windows.txt* For Vim version 7.4. Last change: 2015 Nov 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -263,28 +263,57 @@ left of the Vim window. Closing a window ---------------- +:q[uit] +:{count}q[uit] CTRL-W q *CTRL-W_q* CTRL-W CTRL-Q *CTRL-W_CTRL-Q* -:q[uit] Quit current window. When quitting the last window (not - counting a help window), exit Vim. - When 'hidden' is set, and there is only one window for the - current buffer, it becomes hidden. - When 'hidden' is not set, and there is only one window for the - current buffer, and the buffer was changed, the command fails. - (Note: CTRL-Q does not work on all terminals) - -:q[uit]! Quit current window. If this was the last window for a buffer, - any changes to that buffer are lost. When quitting the last - window (not counting help windows), exit Vim. The contents of - the buffer are lost, even when 'hidden' is set. + Without {count}: Quit the current window. If {count} is + given quit the {count} window. + When quitting the last window (not counting a help window), + exit Vim. + + When 'hidden' is set, and there is only one window for the + current buffer, it becomes hidden. When 'hidden' is not set, + and there is only one window for the current buffer, and the + buffer was changed, the command fails. + + (Note: CTRL-Q does not work on all terminals). + + If [count] is greater than the last window number the last + window will be closed: > + :1quit " quit the first window + :$quit " quit the last window + :9quit " quit the last window + " if there are less than 9 windows opened + :-quit " quit the previews window + :+quit " quit the next window + :+2quit " quit the second next window +< +:q[uit]! +:{count}q[uit]! + Without {count}: Quit the current window. If {count} is + given quit the {count} window. + + If this was the last window for a buffer, any changes to that + buffer are lost. When quitting the last window (not counting + help windows), exit Vim. The contents of the buffer are lost, + even when 'hidden' is set. + +:clo[se][!] +:{count}clo[se][!] CTRL-W c *CTRL-W_c* *:clo* *:close* -:clo[se][!] Close current window. When the 'hidden' option is set, or - when the buffer was changed and the [!] is used, the buffer - becomes hidden (unless there is another window editing it). + Without {count}: Close the current window. If {count} is + given close the {count} window. + + When the 'hidden' option is set, or when the buffer was + changed and the [!] is used, the buffer becomes hidden (unless + there is another window editing it). + When there is only one window in the current tab page and there is another tab page, this closes the current tab page. |tab-page|. + This command fails when: *E444* - There is only one window on the screen. - When 'hidden' is not set, [!] is not used, the buffer has @@ -298,14 +327,19 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C* command. *:hide* -:hid[e] Quit current window, unless it is the last window on the - screen. The buffer becomes hidden (unless there is another - window editing it or 'bufhidden' is "unload" or "delete"). +:hid[e] +:{count}hid[e] + Quit the current window, unless it is the last window on the + screen. For {count} see |:quit| command. + + The buffer becomes hidden (unless there is another window + editing it or 'bufhidden' is "unload", "delete" or "wipe"). If the window is the last one in the current tab page the tab - page is closed. |tab-page| - The value of 'hidden' is irrelevant for this command. - Changes to the buffer are not written and won't get lost, so - this is a "safe" command. + page is closed. |tab-page| + + The value of 'hidden' is irrelevant for this command. Changes + to the buffer are not written and won't get lost, so this is a + "safe" command. :hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of 'hidden' is restored after {cmd} has been executed. @@ -314,12 +348,16 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C* < This will edit "Makefile", and hide the current buffer if it has any changes. +:on[ly][!] +:{count}on[ly][!] CTRL-W o *CTRL-W_o* *E445* CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* -:on[ly][!] Make the current window the only one on the screen. All other - windows are closed. + Make the current window the only one on the screen. All other + windows are closed. For {count} see |:quit| command. + When the 'hidden' option is set, all buffers in closed windows become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, modified buffers are written. Otherwise, windows that have buffers that are modified are not removed, unless the [!] is @@ -660,8 +698,9 @@ can also get to them with the buffer list commands, like ":bnext". 8. Do a command in all buffers or windows *list-repeat* *:windo* -:windo {cmd} Execute {cmd} in each window. - It works like doing this: > +:[range]windo {cmd} Execute {cmd} in each window or if [range] is given + only in windows for which the window number lies in + the [range]. It works like doing this: > CTRL-W t :{cmd} CTRL-W w @@ -680,8 +719,10 @@ can also get to them with the buffer list commands, like ":bnext". |:cfdo| and |:lfdo| *:bufdo* -:bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list. - It works like doing this: > +:[range]bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list or if + [range] is given only for buffers for which their + buffer numer is in the [range]. It works like doing + this: > :bfirst :{cmd} :bnext @@ -728,18 +769,21 @@ the buffer. The result is that all buffers will use the 'encoding' encoding CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a - tag and jump to it in the new upper window. Make new window N - high. + tag and jump to it in the new upper window. + In Visual mode uses the Visually selected text as a tag. + Make new window N high. *CTRL-W_g]* CTRL-W g ] Split current window in two. Use identifier under cursor as a tag and perform ":tselect" on it in the new upper window. + In Visual mode uses the Visually selected text as a tag. Make new window N high. *CTRL-W_g_CTRL-]* CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a - tag and perform ":tjump" on it in the new upper window. Make - new window N high. + tag and perform ":tjump" on it in the new upper window. + In Visual mode uses the Visually selected text as a tag. + Make new window N high. CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* CTRL-W CTRL-F Split current window in two. Edit file name under cursor. @@ -944,9 +988,10 @@ A buffer can also be unlisted. This means it exists, but it is not in the list of buffers. |unlisted-buffer| -:files[!] *:files* -:buffers[!] *:buffers* *:ls* -:ls[!] Show all buffers. Example: +:files[!] [flags] *:files* +:buffers[!] [flags] *:buffers* *:ls* +:ls[!] [flags] + Show all buffers. Example: 1 #h "/test/text" line 1 ~ 2u "asdf" line 0 ~ @@ -956,8 +1001,8 @@ list of buffers. |unlisted-buffer| (the term "unlisted" is a bit confusing then...). Each buffer has a unique number. That number will not change, - so you can always go to a specific buffer with ":buffer N" or - "N CTRL-^", where N is the buffer number. + thus you can always go to a specific buffer with ":buffer N" + or "N CTRL-^", where N is the buffer number. Indicators (chars in the same column are mutually exclusive): u an unlisted buffer (only displayed when [!] is used) @@ -972,6 +1017,21 @@ list of buffers. |unlisted-buffer| + a modified buffer x a buffer with read errors + [flags] can be a combination of the following characters, + which restrict the buffers to be listed: + + modified buffers + - buffers with 'modifiable' off + = readonly buffers + a active buffers + u unlisted buffers (overrides the "!") + h hidden buffers + x buffers with a read error + % current buffer + # alternate buffer + Combining flags means they are "and"ed together, e.g.: + h+ hidden buffers which are modified + a+ active buffers which are modified + *:bad* *:badd* :bad[d] [+lnum] {fname} Add file name {fname} to the buffer list, without loading it. @@ -991,7 +1051,11 @@ list of buffers. |unlisted-buffer| Actually, the buffer isn't completely deleted, it is removed from the buffer list |unlisted-buffer| and option values, variables and mappings/abbreviations for the buffer are - cleared. + cleared. Examples: > + :.,$-bdelete " delete buffers from the current one to + " last but one + :%bdelete " delete all buffers +< :bdelete[!] {bufname} *E93* *E94* Like ":bdelete[!] [N]", but buffer given by name. Note that a @@ -1015,7 +1079,11 @@ list of buffers. |unlisted-buffer| Like |:bdelete|, but really delete the buffer. Everything related to the buffer is lost. All marks in this buffer become invalid, option settings are lost, etc. Don't use this - unless you know what you are doing. + unless you know what you are doing. Examples: > + :.+,$bwipeout " wipe out all buffers after the current + " one + :%bwipeout " wipe out all buffers +< :[N]bun[load][!] *:bun* *:bunload* *E515* :bun[load][!] [N] From 967b47b8ed5608d64a8bd8903ce27e4662bccab8 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 30 Jan 2016 03:04:08 +0900 Subject: [PATCH 749/783] Fix the duplicated tag --- doc/netbeans.jax | 2 +- en/netbeans.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/netbeans.jax b/doc/netbeans.jax index e7dc0b446..8241b62a7 100644 --- a/doc/netbeans.jax +++ b/doc/netbeans.jax @@ -4,7 +4,7 @@ VIMリファレンスマニュアル by Gordon Prieur et al. - *socket-interface* *netbeans* *netbeans-support* + *netbeans* *netbeans-support* Vim NetBeans プロトコル: Vim と IDE を統合するためのソケットインターフェイス diff --git a/en/netbeans.txt b/en/netbeans.txt index e0ac2bf82..95f98d624 100644 --- a/en/netbeans.txt +++ b/en/netbeans.txt @@ -4,7 +4,7 @@ VIM REFERENCE MANUAL by Gordon Prieur et al. - *socket-interface* *netbeans* *netbeans-support* + *netbeans* *netbeans-support* Vim NetBeans Protocol: a socket interface for Vim integration into an IDE. From 6abb671ee16684a6d1ff6181ebee76ed43fb85cb Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 12:02:29 +0900 Subject: [PATCH 750/783] complete vi_diff.jax MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * キャッチアップ完了 * ファイル全体の見直し完了 * 一部翻訳表現の修正 * スペーシングの修正 --- catchup-7.4.1194.md | 3 ++- doc/vi_diff.jax | 18 ++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index cee943daa..52201cdf5 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -57,7 +57,6 @@ doc/usr_41.jax doc/usr_43.jax doc/various.jax - doc/vi_diff.jax doc/windows.jax ### 英文だけは反映済み @@ -66,6 +65,8 @@ ### 完訳! + doc/vi_diff.jax + まだない ### その他/深い事情があって断念したもの diff --git a/doc/vi_diff.jax b/doc/vi_diff.jax index ceb39d869..c2696985b 100644 --- a/doc/vi_diff.jax +++ b/doc/vi_diff.jax @@ -1,4 +1,4 @@ -*vi_diff.txt* For Vim バージョン 7.4. Last change: 2013 Aug 22 +*vi_diff.txt* For Vim バージョン 7.4. Last change: 2015 Nov 01 VIMリファレンスマニュアル by Bram Moolenaar @@ -79,12 +79,11 @@ Vim で編集できるファイルの制限はかなり少ないです。 {Vi: < ります。またスワップファイル|swap-file|の為のディス クの空き容量にも制限されます。 *E75* -ファイルのパスの長さ Unix と Win32: 1024 文字か 256 文字(もしくはシステム - がサポートしている長さ分だけ) -ファイル名の長さ Unix と Win32: 1024 文字か 256 文字 +ファイルのパスの長さ Unix と Win32: 1024 文字、それ以外は 256 文字 + (もしくはシステムがサポートしている長さ分だけ) 展開されたオプションの文字列の長さ - Unix と Win32: 1024 文字か 256 文字 -表示される最大の長さ Unix と Win32: 1024 文字か 256 文字 + Unix と Win32: 1024 文字、それ以外は 256 文字 +表示される最大の長さ Unix と Win32: 1024 文字、それ以外は 255 文字 マッピングでの lhs の最大の長さ 50 文字 異なるハイライトの種類の数: 30000以上 @@ -153,7 +152,6 @@ Vi との互換性 |'compatible'| 'undolevels' オプションでセットしてください(初期値 1000)。'undolevels' を0にセットすると Vi 互換のアンドゥになります。-1 にセットするとアン ドゥできないようになります。 - あるバッファに対する変更をすべてアンドゥした場合は、バッファは何も変更 されていないと見なされます。つまり <!> なしで :q で終了させることがで きます。 @@ -275,7 +273,6 @@ Vi との互換性 |'compatible'| するのに使うことができ、Shift キーを押しながら右/左矢印キーを押すと前/ 後に一つの単語移動することができます。CTRL-B/CTRL-E はコマンドラインの 初め/終わりに移動するのに使うことができます。 - |cmdline-history| コマンドラインは記録されます。上/下矢印キーを使うことで前のコマンドラ インを呼び出すことができます。'history' オプションで覚えておく行数を設 @@ -315,8 +312,8 @@ Vi との互換性 |'compatible'| |i_CTRL-X_CTRL-L| すべての行 |i_CTRL-X_CTRL-]| タグファイルにある単語 |i_CTRL-X_CTRL-D| マクロ定義 - |i_CTRL-X_CTRL-O| オムニ補完: ファイルタイプに特化した賢い補完 - など。 + |i_CTRL-X_CTRL-O| オムニ補完: ファイルタイプなどに特化した + 賢い補完 長い行のサポート |'wrap'| |'linebreak'| 'wrap' オプションがオフであれば、長い行は折り返されずに行の一部分だけが @@ -349,6 +346,7 @@ Vi との互換性 |'compatible'| ります。 これはftp, http, sshなど越しのリモートファイルにも機能します。 zipとtarのアーカイブもブラウズすることができます。|tar| |zip| + 編集-コンパイル-編集 をスピードアップする |quickfix| |:make| コマンドを使うことでコンパイルしてから初めのエラーにジャンプす ることができます。コンパイラのエラーメッセージが書かれたファイルを解析 From 9da00cd6288021d28629dc295afc086ed1a36fbe Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 12:32:28 +0900 Subject: [PATCH 751/783] complete files which have small lines to change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 10行未満の変更で済むファイルを、完訳しました --- catchup-7.4.1194.md | 10 +++++----- doc/cmdline.jax | 7 ++++++- doc/filetype.jax | 5 ++++- doc/quickfix.jax | 2 +- doc/usr_29.jax | 3 ++- doc/usr_43.jax | 8 +++++++- 6 files changed, 25 insertions(+), 10 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 52201cdf5..059048de7 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -21,11 +21,9 @@ doc/autocmd.jax doc/change.jax - doc/cmdline.jax doc/develop.jax doc/editing.jax doc/eval.jax - doc/filetype.jax doc/fold.jax doc/hangulin.jax doc/help.jax @@ -44,7 +42,6 @@ doc/os_os2.jax doc/pattern.jax doc/pi_netrw.jax - doc/quickfix.jax doc/quickref.jax doc/repeat.jax doc/spell.jax @@ -53,9 +50,7 @@ doc/term.jax doc/usr_02.jax doc/usr_03.jax - doc/usr_29.jax doc/usr_41.jax - doc/usr_43.jax doc/various.jax doc/windows.jax @@ -65,6 +60,11 @@ ### 完訳! + doc/cmdline.jax + doc/filetype.jax + doc/quickfix.jax + doc/usr_29.jax + doc/usr_43.jax doc/vi_diff.jax まだない diff --git a/doc/cmdline.jax b/doc/cmdline.jax index 16b7709f8..c3b76458d 100644 --- a/doc/cmdline.jax +++ b/doc/cmdline.jax @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim バージョン 7.4. Last change: 2015 Sep 25 +*cmdline.txt* For Vim バージョン 7.4. Last change: 2015 Dec 17 VIMリファレンスマニュアル by Bram Moolenaar @@ -95,6 +95,11 @@ CTRL-E または <End> *c_CTRL-E* *c_<End>* *c_End* *c_<LeftMouse>* <LeftMouse> カーソルをマウスでクリックした所へ移動する + *c_<MiddleMouse>* +<MiddleMouse> クリップボード(X11 ではプライマリ選択)の内容を貼り付ける。これ + は CTRL-R * を使った動作に似ているが、行間に CR は挿入されな + い。 + CTRL-H *c_<BS>* *c_CTRL-H* *c_BS* <BS> カーソル前の文字を削除する (<BS> キーが思い通り働かないときは |:fixdel| を参照)。 diff --git a/doc/filetype.jax b/doc/filetype.jax index d23e24fe6..7a8fc8f30 100644 --- a/doc/filetype.jax +++ b/doc/filetype.jax @@ -1,4 +1,4 @@ -*filetype.txt* For Vim バージョン 7.4. Last change: 2015 Nov 28 +*filetype.txt* For Vim バージョン 7.4. Last change: 2015 Dec 06 VIMリファレンスマニュアル by Bram Moolenaar @@ -574,6 +574,9 @@ q ":quit" と同じ 折畳を有効にするにはこの変数を使う: > let g:ft_man_folding_enable = 1 +もしデフォルトの折畳が好みではないのなら、代わりに autocommand を使って望んだ +折畳スタイルを追加できる。例: > + autocmd FileType man setlocal foldmethod=indent foldenable PDF *ft-pdf-plugin* diff --git a/doc/quickfix.jax b/doc/quickfix.jax index ff8f80495..49c907d30 100644 --- a/doc/quickfix.jax +++ b/doc/quickfix.jax @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim バージョン 7.4. Last change: 2015 Sep 08 +*quickfix.txt* For Vim バージョン 7.4. Last change: 2016 Jan 21 VIMリファレンスマニュアル by Bram Moolenaar diff --git a/doc/usr_29.jax b/doc/usr_29.jax index 9c62dd92f..687c94eb5 100644 --- a/doc/usr_29.jax +++ b/doc/usr_29.jax @@ -258,7 +258,8 @@ CTRL-] を使うとカーソルの下にある識別子の定義にジャンプ 関連項目 -------- -タグ名の大文字と小文字を無視したい場合は 'ignorecase' をオンに設定してくださ +タグ名の大文字と小文字を無視する場合には、'tagcase' を "ignore" に設定する +か、'tagcase' を "followic" のまま変更せず 'ignorecase' をオンに設定してくださ い。 'tagbsearch' オプションにはタグファイルがソートされているかどうかを設定しま diff --git a/doc/usr_43.jax b/doc/usr_43.jax index 623c896a0..02714622e 100644 --- a/doc/usr_43.jax +++ b/doc/usr_43.jax @@ -1,4 +1,4 @@ -*usr_43.txt* For Vim バージョン 7.4. Last change: 2008 Dec 28 +*usr_43.txt* For Vim バージョン 7.4. Last change: 2015 Oct 23 VIM USER MANUAL - by Bram Moolenaar @@ -45,6 +45,7 @@ C プログラムやシェルスクリプトなどの特定の種類のファイ setlocal softtabstop=4 noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> + let b:undo_ftplugin = "setl softtabstop< | unmap <buffer> <LocalLeader>c" そして、C ファイルを開いてみてください。'softtabstop' オプションが 4 に設定さ れていますね。しかし、他のファイルを開くと初期設定の 0 にリセットされます。そ @@ -58,6 +59,11 @@ C プログラムやシェルスクリプトなどの特定の種類のファイ ":map!" や ":vmap" などの他のマップコマンドでも同様です。マップの中の |<LocalLeader>| は "maplocalleader" 変数の値で置き換えられます。 +b:undo_ftplugin を設定する行はファイルタイプを別の値に設定されていたときのため +に用います。このケースではあなたが望む方法でundoしたいでしょう。 +b:undo_ftplugin 変数はコマンドとして実行されます。そのため中の文字は、バック +スラッシュのように特別な意味を持つものがあるので、気をつけてください。 + ファイルタイププラグインの例はこのディレクトリで探すことができます: > $VIMRUNTIME/ftplugin/ From 3529585b668609eb828e0c8281f8a3f0ae3598de Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 13:09:54 +0900 Subject: [PATCH 752/783] impose english text into japanese MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit お試しで英語のまま日本語文章に当てはめ中。 100行を超えないものだけを対象とする予定。 作業過程で、一部翻訳してしまったところもある。 --- catchup-7.4.1194.md | 11 +++---- doc/autocmd.jax | 21 +++++++++++-- doc/change.jax | 75 +++++++++++++++++++++++++++++++++++++-------- doc/develop.jax | 54 ++++++++++++++++++++++++++------ doc/editing.jax | 23 +++++++++++--- 5 files changed, 148 insertions(+), 36 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 059048de7..ee028c39c 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -19,10 +19,6 @@ 追いついたファイルは、下記の一覧から削除し、適切なセクションへ移動 - doc/autocmd.jax - doc/change.jax - doc/develop.jax - doc/editing.jax doc/eval.jax doc/fold.jax doc/hangulin.jax @@ -56,7 +52,10 @@ ### 英文だけは反映済み -まだない + doc/autocmd.jax + doc/change.jax + doc/develop.jax + doc/editing.jax ### 完訳! @@ -67,8 +66,6 @@ doc/usr_43.jax doc/vi_diff.jax -まだない - ### その他/深い事情があって断念したもの まだない diff --git a/doc/autocmd.jax b/doc/autocmd.jax index c3efec3b6..f69507b65 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim バージョン 7.4. Last change: 2014 Aug 22 +*autocmd.txt* For Vim バージョン 7.4. Last change: 2015 Dec 05 VIMリファレンスマニュアル by Bram Moolenaar @@ -514,6 +514,8 @@ ColorScheme カラースキームを読み込んだ後。 |:colorscheme| *CompleteDone* CompleteDone 挿入モード補完が完了したとき。補完が実行されて も中止されても発行される。 |ins-completion| + The |v:completed_item| variable contains + information about the completed item. *CursorHold* CursorHold 'updatetime' の時間の間、ユーザーがキーを押さ @@ -529,6 +531,11 @@ CursorHold 'updatetime' の時間の間、ユーザーがキーを押さ い。 レコーディングの最中にはCursorHoldイベントは発 生しない。|q| + *<CursorHold>* + Internally the autocommand is triggered by the + <CursorHold> key. In an expression mapping + |getchar()| may see this character. + Note: このイベントには対話的なコマンドは使えな いことに注意。「続けるには」プロンプトは現れず、 スクリーンは必要に応じて直接更新される。 @@ -942,6 +949,13 @@ WinLeave ウィンドウを離れる前。次に入るウィンドウで他の ============================================================================== 6. パターン *autocmd-patterns* *{pat}* +The {pat} argument can be a comma separated list. This works as if the +command was given with each pattern separately. Thus this command: > + :autocmd BufRead *.txt,*.info set et +Is equivalent to: > + :autocmd BufRead *.txt set et + :autocmd BufRead *.info set et + ファイルパターン {pat} がファイル名とマッチするかどうかは、2通りの方法で調べら れる。 1. パターンに '/' が含まれないとき: Vimはファイル名の後ろの部分からのみマッチ @@ -1045,7 +1059,7 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに 例: > :au CursorHold <buffer> echo 'hold' :au CursorHold <buffer=33> echo 'hold' - :au CursorHold <buffer=abuf> echo 'hold' + :au BufNewFile * au CursorHold <buffer=abuf> echo 'hold' 自動コマンドに対するコマンドは全てバッファローカルな自動コマンドに対しても機能 する。パターンの代わりに特別な文字列を使う。例: > @@ -1104,6 +1118,9 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに :aug[roup] {name} 後に続くコマンド ":autocmd" のためのグループ名 を定義する。{name} を "end" や "END" にすると 既定のグループが選ばれる。 + To avoid confusion, the name should be + different from existing {event} names, as this + most likely will not do what you intended. *:augroup-delete* *E367* :aug[roup]! {name} 自動コマンドのグループ {name} を削除する。その diff --git a/doc/change.jax b/doc/change.jax index 6adfdb56c..3414eb944 100644 --- a/doc/change.jax +++ b/doc/change.jax @@ -1,4 +1,4 @@ -*change.txt* For Vim バージョン 7.4. Last change: 2015 Sep 06 +*change.txt* For Vim バージョン 7.4. Last change: 2016 Jan 19 VIMリファレンスマニュアル by Bram Moolenaar @@ -404,8 +404,14 @@ CTRL-X カーソルの下または後の数字またはアルファベット される (そのため効果的に [count] ごとに減少する配列を 作ることができる)。 {Vi にはない} -コマンド CTRL-A と CTRL-X は(符号付)10進数と符号なし8進/16進数、アルファベッ -トに対し機能する。この動作はオプション 'nrformats' に依存する。 +The CTRL-A and CTRL-X commands can work for: +- signed and unsigned decimal numbers +- unsigned binary, octal and hexadecimal numbers +- alphabetic characters + +This depends on the 'nrformats' option: +- When 'nrformats' includes "bin", Vim assumes numbers starting with '0b' or + '0B' are binary. - 'nrformats' が "octal" を含むときは、Vimは '0' で始まり、'8' や '9' を含まな い数字を8進数として取り扱う。他の数は10進数とみなされ、マイナス符号が付いて もよい。カーソルが数の上にあれば、コマンドはその数に適用される。そうでなけれ @@ -418,9 +424,9 @@ CTRL-X カーソルの下または後の数字またはアルファベット を変更する。これはアルファベットのインデックスつきのリストを作るときに便利で ある。 -10進数では先頭の負の符号は増加/減少に対して考慮される。8進数と16進数では考慮さ -れない。 -符号を無視するには CTRL-A または CTRL-X を使う前に数字をビジュアル選択する。 +10進数では先頭の負の符号は増加/減少に対して考慮される。しかし2進数、8進数およ +び16進数では考慮されない。符号を無視するには CTRL-A または CTRL-X を使う前に数 +字をビジュアル選択する。 ゼロから始まる数 (全ての8進数、16進数を含む) に対して、Vimはできる限りその数の 文字数を保とうとする。"0077" 上で CTRL-A を使うと "0100" となり、"0x100" 上で @@ -432,6 +438,10 @@ CTRL-X を使うと "0x0ff" となる。 Note: 'nrformats' が "octal" を含んでいるとき、0で始まる10進数は、8進数と区別 しづらいため、意図しない結果になる可能性がある。 +Note similarly, when 'nrformats' includes "bin", binary numbers with a leading +'0x' or '0X' can be interpreted as hexadecimal rather than binary since '0b' +are valid hexadecimal digits. + コマンド CTRL-A はマクロ内でたいへん便利である。例: 番号付きリストを作るには、 次の方法を使う。 @@ -836,6 +846,36 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ :s/\([ab]\)\|\([cd]\)/\1x/g "a b c d" を "ax bx x x" に置換 < + *:sc* *:sce* *:scg* *:sci* *:scI* *:scl* *:scp* *:sg* *:sgc* + *:sge* *:sgi* *:sgI* *:sgl* *:sgn* *:sgp* *:sgr* *:sI* *:si* + *:sic* *:sIc* *:sie* *:sIe* *:sIg* *:sIl* *:sin* *:sIn* *:sIp* + *:sip* *:sIr* *:sir* *:sr* *:src* *:srg* *:sri* *:srI* *:srl* + *:srn* *:srp* +2-letter and 3-letter :substitute commands ~ + + List of :substitute commands + | c e g i I n p l r + | c :sc :sce :scg :sci :scI :scn :scp :scl --- + | e + | g :sgc :sge :sg :sgi :sgI :sgn :sgp :sgl :sgr + | i :sic :sie --- :si :siI :sin :sip --- :sir + | I :sIc :sIe :sIg :sIi :sI :sIn :sIp :sIl :sIr + | n + | p + | l + | r :src --- :srg :sri :srI :srn :srp :srl :sr + +Exceptions: + :scr is `:scriptnames` + :se is `:set` + :sig is `:sign` + :sil is `:silent` + :sn is `:snext` + :sp is `:split` + :sl is `:sleep` + :sre is `:srewind` + + 式で置換する *sub-replace-expression* *sub-replace-\=* *s/\=* @@ -939,7 +979,7 @@ NOTE: 以前のバージョンでは CTRL-V が特別に扱われていた。こ :reg[isters] {arg} {arg} に指定された名前付きレジスタおよび番号付きレジス タを表示する。例: > - :dis 1a + :reg 1a < レジスタ '1' と 'a' が表示される。{arg} の中では空白を 用いてよい。 {Vi にはない} @@ -1647,7 +1687,7 @@ Vimはソート関数とソートコマンドを備えている。ソート関 |uniq()| を参照。 *:sor* *:sort* -:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] +:[range]sor[t][!] [b][f][i][n][o][r][u][x] [/{pattern}/] [range]の行をソートする。範囲が指定されない場合は全行 をソートする。 @@ -1655,10 +1695,18 @@ Vimはソート関数とソートコマンドを備えている。ソート関 [i]をつけると大文字・小文字を区別しない。 + Options [n][f][x][o][b] are mutually exclusive. + [n]をつけると行の({pattern}のマッチの後ろまたは内側 の)最初の10進数の数字でソートする。 数字が '-' で始まる場合、マイナスとみなされる。 + With [f] sorting is done on the Float in the line. + The value of Float is determined similar to passing + the text (after or inside a {pattern} match) to + str2float() function. This option is available only + if Vim was compiled with Floating point support. + [x]をつけると行の({pattern}のマッチの後ろまたは内側 の)最初の16進数の数字でソートする。"0x" と "0X" は無視 される。 @@ -1667,10 +1715,13 @@ Vimはソート関数とソートコマンドを備えている。ソート関 [o]をつけると行の({pattern}のマッチの後ろまたは内側 の)最初の8進数の数字でソートする。 - [u]をつけると連続する同一行の最初の行だけを残す。 - ([i]がつくと大文字・小文字を無視する) - このフラグがつかない場合、連続する同一行はそのままの順 - 序で残される。 + With [b] sorting is done on the first binary number in + the line (after or inside a {pattern} match). + + [u]をつけると (u は unique=「一意の」という意味に基づ + く) 連続する同一行の最初の行だけを残す。([i]がつくと大 + 文字・小文字を無視する) このフラグがつかない場合、連続 + する同一行はそのままの順序で残される。 Note: 行頭に行末の空白があると異なる行とみなされる。 /pattern/が指定され、フラグ[r]がない場合は{pattern}に diff --git a/doc/develop.jax b/doc/develop.jax index 33416848c..50aace1dc 100644 --- a/doc/develop.jax +++ b/doc/develop.jax @@ -1,4 +1,4 @@ -*develop.txt* For Vim バージョン 7.4. Last change: 2014 Mar 27 +*develop.txt* For Vim バージョン 7.4. Last change: 2016 Jan 19 VIMリファレンスマニュアル by Bram Moolenaar @@ -168,13 +168,28 @@ Vimのソースコードに変更を加える際、守るべきルールがあ MAKING CHANGES *style-changes* コードに変更を加える基本的なステップは: -1. ドキュメントを調整する。最初にこれをやることで、あなたの行う変更がユーザー +1. Get the code from github. That makes it easier to keep your changed + version in sync with the main code base (it may be a while before your + changes will be included). You do need to spend some time learning git, + it's not the most user friendly tool. +2. ドキュメントを調整する。最初にこれをやることで、あなたの行う変更がユーザー に与える影響について、おおまかな印象をもつことができる。 -2. ソースコードに変更を加える。 -3. 変更がリストされた項目に影響を与えていないか、../doc/todo.txtをチェックす +3. ソースコードに変更を加える。 +4. 変更がリストされた項目に影響を与えていないか、../doc/todo.txtをチェックす る。 -4. 無修正のコードとドキュメントに対するパッチを、"diff -c" によって得る。 -5. 変更に関する注意書きを作り、パッチに含める。 +5. Make a patch with "git diff". You can also create a pull request on + github, but it's the diff that matters. +6. Make a note about what changed, preferably mentioning the problem and the + solution. Send an email to the vim-dev maillist with an explanation and + include the diff. Or create a pull request on github. + + +C COMPILER *style-compiler* + +The minimal C compiler version supported is C89, also known as ANSI C. +Later standards don't add much and C89 is the widest supported. + +One restriction that this implies: no // comments, only /* comments */. USE OF COMMON FUNCTIONS *style-functions* @@ -200,7 +215,7 @@ NAMES *style-names* 関数の名前に31文字より長い名前は使えない。(VMSのために) -"delete" という名前の変数を使わないこと。C++で問題となる。 +"delete" や "this" という名前の変数を使わないこと。C++で問題となる。 Vimができる限り多くのシステム上で走るという必要上、システムによってすでに定義 されている名前を使うことは避けねばならない。これは、問題となることが知られて @@ -290,6 +305,25 @@ OK: do a = 1; while (cond); +間違い: if (cond) { + cmd; + cmd; + } else { + cmd; + cmd; + } + +OK: if (cond) + { + cmd; + cmd; + } + else + { + cmd; + cmd; + } + 関数は次のようにして始める: @@ -303,9 +337,9 @@ OK: /* * 戻り値の説明。 */ int - function_name(arg1, arg2) - int arg1; /* short comment about arg1 */ - int arg2; /* short comment about arg2 */ + function_name( + int arg1, /* short comment about arg1 */ + int arg2) /* short comment about arg2 */ { int local; /* comment about local */ diff --git a/doc/editing.jax b/doc/editing.jax index 52d0f672d..3d079ab32 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -1,4 +1,4 @@ -*editing.txt* For Vim バージョン 7.4. Last change: 2015 Aug 25 +*editing.txt* For Vim バージョン 7.4. Last change: 2016 Jan 17 VIMリファレンスマニュアル by Bram Moolenaar @@ -78,6 +78,7 @@ g CTRL-G カーソルの現在の位置を、列、行、単語、文字、バ 例えば、タブ幅 'tabstop' が8のとき、行頭の <Tab> の次 では「実際」の列番号は2、画面上の列番号は9となり、 "1-8" と表示される}。オプション 'ruler' も参照。 + オプション 'ruler' と |wordcount()| 関数も参照。 {Vi にはない} *v_g_CTRL-G* @@ -627,6 +628,7 @@ Vim の開始時に複数のファイル名を与えると、それらは引数 :0argadd x x a b c :1argadd x a x b c :$argadd x a b c x + 最後の1つの後に: :+2argadd y a b c x y 重複検査はないので、1個のファイルを引数リストに2回加え ることもできる。 @@ -1097,10 +1099,11 @@ MS-DOSとMS-Windowsでは、デバイスは名前から判断される: コマンド |:confirm| やオプション 'confirm' を参照。 {Vi にはない} -:q[uit]! 現在、可視なバッファに変更点があっても書き込みをせずに - 終了する。最後のウィンドウかつ隠れバッファに変更点があ - ると終了しない。この場合、最初の変更点がある隠れバッフ - ァはカレントバッファになる。 +:q[uit]! 現在のバッファに変更点があっても、書き込まずにVimを終 + 了する。そのウィンドウが最後の1つで、変更点のある隠し + バッファがある場合には、終了せずにカレントバッファを破 + 棄したあとで、最初の変更点がある隠しバッファを新たな現 + 在のバッファとする。 必ず終了するにはコマンド ":qall!" を使うこと。 :cq[uit] 書き込みをせずに必ず終了し、エラーコードを返す。コマン @@ -1436,6 +1439,16 @@ Note: メモリ内のテキストは暗号化されない。ユーザーがテ アンドゥファイルが保存されるとき、同じキーとメソッドがアンドゥファイル内のテキ ストに適用される。|persistent-undo|。 +To test for blowfish support you can use these conditions: > + has('crypt-blowfish') + has('crypt-blowfish2') +This works since Vim 7.4.1099 while blowfish support was added earlier. +Thus the condition failing doesn't mean blowfish is not supported. You can +test for blowfish with: > + v:version >= 703 +And for blowfish2 with: > + v:version > 704 || (v:version == 704 && has('patch401')) +< *E817* *E818* *E819* *E820* 暗号化が正しく機能しないと、保存したファイルが後で読めなくなってしまう。そのた め、暗号化が期待したとおりに機能しているかどうかを確認するための検査が実行され From 4d91254a782a90d672e746a45bc70e1f11cbd8b6 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 15:53:55 +0900 Subject: [PATCH 753/783] more impose english text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 変更が100行未満のファイルについては完了した 一部、旧訳と新原文を併記したままの箇所がある --- catchup-7.4.1194.md | 34 +++++++++++++------------- doc/fold.jax | 28 +++++++++++++++------ doc/hangulin.jax | 53 ++++++++++++++++++++++------------------ doc/help.jax | 13 ++++++---- doc/if_mzsch.jax | 27 +++++++++++++++++++-- doc/if_perl.jax | 11 +++++++-- doc/if_pyth.jax | 25 ++++++++++++------- doc/if_ruby.jax | 59 ++++++++++++++++++++++++++------------------- doc/if_tcl.jax | 20 +++++++++++---- doc/index.jax | 9 ++++--- doc/insert.jax | 36 +++++++++++++++++++++++---- doc/map.jax | 39 +++++++++++++++++++++--------- doc/mlang.jax | 13 ++++++---- doc/netbeans.jax | 11 ++++++--- doc/pattern.jax | 22 +++++++++++++---- doc/quickref.jax | 20 +++++++++++---- doc/repeat.jax | 39 ++++++++++++++++++++++++++++-- doc/spell.jax | 10 +++++++- doc/tagsrch.jax | 25 +++++++++++++++++++ doc/term.jax | 32 ++++++++++++++++++------ doc/usr_03.jax | 11 ++++++--- doc/usr_41.jax | 17 ++++++++++++- doc/various.jax | 12 ++++++++- 23 files changed, 416 insertions(+), 150 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index ee028c39c..6f75d201c 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -20,47 +20,47 @@ 追いついたファイルは、下記の一覧から削除し、適切なセクションへ移動 doc/eval.jax + doc/if_lua.jax + doc/options.jax + doc/os_os2.jax + doc/pi_netrw.jax + doc/syntax.jax + doc/usr_02.jax + doc/windows.jax + +### 英文だけは反映済み + + doc/autocmd.jax + doc/change.jax + doc/develop.jax + doc/editing.jax doc/fold.jax doc/hangulin.jax - doc/help.jax - doc/if_lua.jax doc/if_mzsch.jax doc/if_perl.jax doc/if_pyth.jax doc/if_ruby.jax doc/if_tcl.jax - doc/index.jax doc/insert.jax doc/map.jax - doc/mlang.jax doc/netbeans.jax - doc/options.jax - doc/os_os2.jax doc/pattern.jax - doc/pi_netrw.jax doc/quickref.jax doc/repeat.jax doc/spell.jax - doc/syntax.jax doc/tagsrch.jax doc/term.jax - doc/usr_02.jax doc/usr_03.jax doc/usr_41.jax doc/various.jax - doc/windows.jax - -### 英文だけは反映済み - - doc/autocmd.jax - doc/change.jax - doc/develop.jax - doc/editing.jax ### 完訳! doc/cmdline.jax doc/filetype.jax + doc/help.jax + doc/index.jax + doc/mlang.jax doc/quickfix.jax doc/usr_29.jax doc/usr_43.jax diff --git a/doc/fold.jax b/doc/fold.jax index 25afd6e92..206a1c3dd 100644 --- a/doc/fold.jax +++ b/doc/fold.jax @@ -1,4 +1,4 @@ -*fold.txt* For Vim バージョン 7.4. Last change: 2013 Dec 04 +*fold.txt* For Vim バージョン 7.4. Last change: 2016 Jan 02 VIMリファレンスマニュアル by Bram Moolenaar @@ -94,8 +94,10 @@ Cではプリプロセッサ行を無視するために "#" を使用する。 -1 折畳レベルを未定義とし、対象行の直前か直後の行のうち低 い方を、対象行のレベルとする。 "=" 直前の行と同じレベルを使用する - "a1", "a2", .. 直前の行のレベルを+1, +2して設定する - "s1", "s2", .. 直前の行のレベルを-1, -2して設定する + "a1", "a2", .. 直前の行のレベルを+1, +2して、結果を現在の行に適用す + る。 + "s1", "s2", .. 直前の行のレベルを-1, -2して、結果を現在の行に適用す + る。 "<1", "<2", .. 指定したレベルの折畳を対象行で終了する ">1", ">2", .. 指定したレベルの折畳を対象行から開始する @@ -117,6 +119,18 @@ NOTE: 各行について式評価が実行されるので、この折畳方式 折畳レベルが定義された行が見つかるまで戻って、幾度も検索を行わなければならない からだ。これは動作が遅くなることがある。 +An example of using "a1" and "s1": For a multi-line C comment, a line +containing "/*" would return "a1" to start a fold, and a line containing "*/" +would return "s1" to end the fold after that line: > + if match(thisline, '/\*') >= 0 + return 'a1' + elseif match(thisline, '\*/') >= 0 + return 's1' + else + return '=' + endif +However, this won't work for single line comments, strings, etc. + フォールドレベルを調べるには|foldlevel()|を使うのが便利である。レベルがわから ないときは-1を返すことに注意すること。フォールドがその行で終わっているときには 行頭のレベルを返す。 @@ -555,11 +569,11 @@ zk カーソルより上方の折畳へ移動する。閉じられた折畳が1 オペレータを使用したときには、閉じた折畳は全体が含まれる。だから "dl" はカーソ ルの下の閉じた折畳の全体を削除してしまう。 -Exコマンドでは、開始位置と終了位置が折畳のそれに常に合わせられてしまう。 -だから次のコマンド: > +バッファの行に作用するExコマンドの作用範囲は、開始位置と終了位置ともに閉じられ +た折畳のそれらへ、それぞれ補正される。よって以下のコマンドを: > :s/foo/bar/g -カーソルを閉じた折畳に置いて実行すると、折畳内の全ての行にある "foo" が "bar" -へ置き換えられてしまう。 +閉じた折畳へカーソルを合わせて実行すると、折畳内の全ての行にある "foo" が +"bar"へ置き換えられてしまう。 これは|:folddoopen|と|:folddoclosed|に対してはあてはまらない。 (同一セッション中で)以前に編集したバッファに対しては、最後の折畳設定が再び使用 diff --git a/doc/hangulin.jax b/doc/hangulin.jax index 335a24bdc..7cb4ba9b4 100644 --- a/doc/hangulin.jax +++ b/doc/hangulin.jax @@ -1,10 +1,7 @@ -*hangulin.txt* For Vim バージョン 7.4. Last change: 2009 Jun 24 +*hangulin.txt* For Vim バージョン 7.4. Last change: 2015 Nov 24 - VIMリファレンスマニュアル by Chi-Deok Hwang and Sung-Hyun Nam - -NOTE: |+hangul_input| 機能は削除されることが予定されています。これの存続を望む -方は Vim ユーザーメーリングリストにメッセージを送ってください。 + VIMリファレンスマニュアル by Chi-Deok Hwang and Sung-Hyun Nam イントロダクション *hangul* @@ -18,7 +15,8 @@ NOTE: |+hangul_input| 機能は削除されることが予定されています 次のオプションは最低限の指定であり、他の configure オプションを追加することも できます。 > - ./configure -with-x --enable-multibyte --enable-fontset --enable-hangulinput + ./configure --with-x --enable-multibyte --enable-hangulinput \ + --disable-xim そして、|+hangul_input| 機能が configure によって有効になっているかどうか、 feature.h をチェックすべきです。そして、他のオプションも選択することができます。 @@ -28,18 +26,21 @@ feature.h をチェックすべきです。そして、他のオプションも #define HANGUL_DEFAULT_KEYBOARD 2 #define ESC_CHG_TO_ENG_MODE /* #define X_LOCALE */ - /* #define SLOW_XSERVER */ 環境変数 -------- -LANG 変数を、ko や ko_KR.euc のような韓国語ロケールに指定する必要があります。 +LANG 変数を、ko, ko_KR.euckR および ko_KR.UTF-8 のような韓国語ロケールに指定す +る必要があります。 LC_ALL 変数をセットしている場合は、それも韓国語ロケールである必要があります。 VIM リソース ------------ -次の行を vimrc ($HOME/.vimrc) に加えてください。 > +You may want to set 'encoding' and 'fileencodings'. +Next are examples: > - :set fileencoding=korea + :set encoding=euc-kr + :set encoding=utf-8 + :set fileencodings=ucs-bom,utf-8,cp949,euc-kr,latin1 キーボード ---------- @@ -55,9 +56,16 @@ VIM_KEYBOARD か HANGUL_KEYBOARD_TYPE 環境変数を使うことによって、 ハングル・フォント ------------------ -$HOME/.Xdefaults か、ユーザーの .gvimrc でテキストのフォントを設定することがで -きます。しかし、ハングルを使うには、vimrc で 'guifontset' を設定する必要があり -ます。 +If you use GTK version of GVIM, you should set 'guifont' and 'guifontwide'. +For example: > + set guifont=Courier\ 12 + set guifontwide=NanumGothicCoding\ 12 + +If you use Motif or Athena version of GVIM, you should set 'guifontset' in +your vimrc. You can set fontset in the .Xdefaults file. + +$HOME/.gvimrc: > + set guifontset=english_font,hangul_font $HOME/.Xdefaults: > Vim.font: english_font @@ -70,9 +78,6 @@ $HOME/.Xdefaults: > *international: True Vim*fontList: english_font;hangul_font: -$HOME/.gvimrc: > - set guifontset=english_font,hangul_font - 注意! , (コンマ) か ; (セミコロン)です。 そして ':set guifont' が設定されていてはいけません。もし設定されていると GVim @@ -80,8 +85,9 @@ $HOME/.gvimrc: > で動作することになり、英語の文字だけが見えることになり、ハングルは正しくは表示 されなくなります。 -'fontset' 機能が有効にされた後では、Vim では 'font' は使えなくなります。例えば、 -もし .gvimrc で次のようにしている場合は: > +After 'fontset' feature is enabled, VIM does not allow using english +font only in 'font' setting for syntax. +例えば、もし .gvimrc で次のようにしている場合は: > :set guifontset=eng_font,your_font 構文ハイライトの指定では次のようにする必要があります: > :hi Comment guifg=Cyan font=another_eng_font,another_your_font @@ -93,17 +99,18 @@ $HOME/.gvimrc: > サポートされていない機能 ------------------------ -Johab フォントはサポートされていませんし、予定もありません。どうしても johab -フォントが使いたい場合は、gau パッケージの hanguldraw.c を使うことができます。 +Johab フォントはサポートしていません。 +Hanja フォントはサポートしていません。 +それらをサポートする予定は一切ありません。 -Hanja 入力はまだサポートされていませんし、予定もありません。どうしても Hanja -を入力したい場合は、hanterm で Vim を使ってください。 +もしも本当にそれらの機能が必要ならば、それらをサポートした端末エミュレータ上で +コンソールバージョンのVimを使ってください。 バグ・コメント -------------- コメント、パッチ、提案などはこちらに: - Chi-Deok Hwang <hwang@mizi.co.kr> SungHyun Nam <goweol@gmail.com> + Chi-Deok Hwang <...> vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/help.jax b/doc/help.jax index 830883ca3..474902d90 100644 --- a/doc/help.jax +++ b/doc/help.jax @@ -1,4 +1,4 @@ -*help.txt* For Vim バージョン 7.4. Last change: 2015 Jun 21 +*help.txt* For Vim バージョン 7.4. Last change: 2016 Jan 10 VIM - メインヘルプファイル k @@ -11,13 +11,14 @@ マウスでジャンプ: ":set mouse=a" と入力してマウスを有効にしてください (xterm or GUI で利用可)。タグ (例: |bars|) をマウスの左ボ タンでダブルクリックすると、項目にジャンプできます。 - 元の場所に戻る: CTRL-T or CTRL-O を押す。 + 元の場所に戻る: CTRL-T or CTRL-O を押す。繰り返すと更に戻れます。 項目を指定する: |:help| コマンドに項目を指定することで、その項目を直ちに - 表示できます。調べたい項目の種類を指定することもできます。 - *help-context* + 表示できます。修飾子を先行入力することで、調べたい項目の種 + 類を指定することもできます: *help-context* + 種類 修飾子 例 ~ - ノーマルモードコマンド (無し) :help x + ノーマルモードコマンド :help x ビジュアルモードコマンド v_ :help v_u 挿入モードコマンド i_ :help i_<Esc> コマンドラインコマンド : :help :quit @@ -25,6 +26,8 @@ Vim の起動引数 - :help -r オプション ' :help 'textwidth' 正規表現 / :help /[ + その他の種類については |help-summary| を参照してください。 + ヘルプを検索する: ":help word" とタイプしてから CTRL-D を押すと "word" に マッチするヘルプ項目の一覧が表示されます。 もしくは ":helpgrep word" を使ってください。 |:helpgrep| diff --git a/doc/if_mzsch.jax b/doc/if_mzsch.jax index 9c4056559..c08b565c2 100644 --- a/doc/if_mzsch.jax +++ b/doc/if_mzsch.jax @@ -1,4 +1,4 @@ -*if_mzsch.txt* For Vim バージョン 7.4. Last change: 2012 Dec 17 +*if_mzsch.txt* For Vim バージョン 7.4. Last change: 2016 Jan 24 VIMリファレンスマニュアル by Sergey Khorev @@ -13,6 +13,7 @@ Vim の MzScheme インターフェイス *mzscheme* *MzScheme* 5. mzeval() Vim 関数 |mzscheme-mzeval| 6. 関数参照を使う |mzscheme-funcref| 7. 動的ローディング |mzscheme-dynamic| +8. MzSchemeのセットアップ |mzscheme-setup| {Vi にはこれらのコマンドはありません} @@ -268,7 +269,7 @@ Scheme から直接呼び出せます。例: > < ============================================================================== -7. 動的ローディング *mzscheme-dynamic* *E815* +7. 動的ローディング *mzscheme-dynamic* *E815* MS-Windows では MzScheme ライブラリを動的に読み込むことが可能です。これを行う と |:version| の出力に |+mzscheme/dyn| が含まれるようになります。 @@ -276,6 +277,9 @@ MS-Windows では MzScheme ライブラリを動的に読み込むことが可 この場合、Vim は必要なときだけ MzScheme の DLL ファイルを検索するようになりま す。MzScheme インターフェイスを使わないときは DLL を必要としないので、DLL な しで Vim を使うことができます。 +NOTE: Newer version of MzScheme (Racket) require earlier (trampolined) +initialisation via scheme_main_setup. So Vim always loads the MzScheme DLL at +startup if possible. MzScheme インターフェイスを使うには MzScheme の DLL が検索パス内に存在しなけ ればなりません。コンソールウィンドウで "path" とタイプすると、どのディレクト @@ -287,5 +291,24 @@ DLL の名前は Vim をコンパイルした時の MzScheme のバージョン を見て、コンパイル情報から -DDYNAMIC_MZSCH_DLL="なんらか" と -DDYNAMIC_MZGC_DLL="なんらか" を探してください。 +For example, if MzScheme (Racket) is installed at C:\Racket63, you may need +to set the environment variable as the following: > + + PATH=%PATH%;C:\Racket63\lib + PLTCOLLECTS=C:\Racket63\collects + PLTCONFIGDIR=C:\Racket63\etc +< +============================================================================== +8. MzScheme setup *mzscheme-setup* *E895* + +Vim requires "racket/base" module for if_mzsch core (fallback to "scheme/base" +if it doesn't exist), "r5rs" module for test and "raco ctool" command for +building Vim. If MzScheme did not have them, you can install them with +MzScheme's raco command: +> + raco pkg install scheme-lib # scheme/base module + raco pkg install r5rs-lib # r5rs module + raco pkg install cext-lib # raco ctool command + ====================================================================== vim:tw=78:ts=8:sts=4:ft=help:norl: diff --git a/doc/if_perl.jax b/doc/if_perl.jax index e782b7d4e..4b2e9fcd3 100644 --- a/doc/if_perl.jax +++ b/doc/if_perl.jax @@ -1,4 +1,4 @@ -*if_perl.txt* For Vim バージョン 7.4. Last change: 2013 Oct 05 +*if_perl.txt* For Vim バージョン 7.4. Last change: 2015 Oct 16 VIMリファレンスマニュアル by Sven Verdoolaege @@ -296,6 +296,13 @@ DLLの名前はVimをコンパイルした時のPerlのバージョンに一致 現在その名前は "perl512.dll" です。これはPerl5.12用です。これを確かめるには、 "gvim.exe" を開き、"perl\d*.dll\c" を検索してください。 -============================================================================== +Unix ~ + +The 'perldll' option can be used to specify the Perl shared library file +instead of DYNAMIC_PERL_DLL file what was specified at compile time. The +version of the shared library must match the Perl version Vim was compiled +with. + +============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/if_pyth.jax b/doc/if_pyth.jax index c5c6b25eb..ff719a73c 100644 --- a/doc/if_pyth.jax +++ b/doc/if_pyth.jax @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim バージョン 7.4. Last change: 2014 Jul 23 +*if_pyth.txt* For Vim バージョン 7.4. Last change: 2015 Nov 10 VIMリファレンスマニュアル by Paul Moore @@ -667,21 +667,28 @@ vim.Function オブジェクト *python-Function* ============================================================================== 9. 動的ローディング *python-dynamic* -MS-WindowsではPythonライブラリを動的に読み込むことが可能です。これを行うと -|:version| の出力に |+python/dyn| が含まれるようになります。 +MS-Windows と UNIX では Python ライブラリを動的に読み込むことが可能です。これ +を行うと |:version| の出力に |+python/dyn| もしくは |+python3/dyn| が含まれる +ようになります。 -この場合、Vimは必要なときだけPythonのDLLファイルを検索します。Pythonインター -フェイスを使わないときはDLLを必要としないので、DLLなしでVimを使うことができま -す。 +この場合、Vimは必要なときだけPythonのDLLファイル、もしくは共有ライブラリファイ +ルを検索します。Pythonインターフェイスを使わないときはDLLを必要としないので、 +DLLなしでVimを使うことができます。 -Pythonインターフェイスを使うにはPythonのDLLが検索パス内に存在しなければなりま -せん。コンソールウィンドウで "path" とタイプすると、どのディレクトリが検索パス -となるか表示することができます。 +WindowsでPythonインターフェイスを使うには、PythonのDLLが検索パス内に存在しなけ +ればなりません。コンソールウィンドウで "path" とタイプすると、どのディレクトリ +が検索パスとなるか表示することができます。 DLLの名前はVimをコンパイルした時のPythonのバージョンに一致しなければなりませ ん。現在その名前は "python24.dll" です。これはPython2.4用です。これを確かめる には、"gvim.exe" を開き、"python\d*.dll\c" を検索してください。 +On Unix the 'pythondll' or 'pythonthreedll' option can be used to specify the +Python shared library file instead of DYNAMIC_PYTHON_DLL or +DYNAMIC_PYTHON3_DLL file what were specified at compile time. The version of +the shared library must match the Python 2.x or Python 3 version Vim was +compiled with. + ============================================================================== 10. Python 3 *python3* diff --git a/doc/if_ruby.jax b/doc/if_ruby.jax index abc5ecf9a..8f7397f31 100644 --- a/doc/if_ruby.jax +++ b/doc/if_ruby.jax @@ -1,4 +1,4 @@ -*if_ruby.txt* For Vim バージョン 7.4. Last change: 2015 Feb 22 +*if_ruby.txt* For Vim バージョン 7.4. Last change: 2015 Dec 03 VIM リファレンスマニュアル by Shugo Maeda @@ -7,9 +7,9 @@ Rubyインターフェイス *ruby* *Ruby* 1. コマンド |ruby-commands| -2. VIMモジュール |ruby-vim| -3. VIM::Buffer オブジェクト |ruby-buffer| -4. VIM::Window オブジェクト |ruby-window| +2. Vimモジュール |ruby-vim| +3. Vim::Buffer オブジェクト |ruby-buffer| +4. Vim::Window オブジェクト |ruby-window| 5. グローバル変数 |ruby-globals| 6. 動的ローディング |ruby-dynamic| @@ -48,7 +48,7 @@ Vimスクリプトの例: > ruby << EOF class Garnet def initialize(s) - @buffer = VIM::Buffer.current + @buffer = Vim::Buffer.current vimputs(s) end def vimputs(s) @@ -74,19 +74,19 @@ Vimスクリプトの例: > |sandbox|環境内ではRubyコマンドを実行できない。 ============================================================================== -2. VIMモジュール *ruby-vim* +2. Vimモジュール *ruby-vim* -Rubyのコードは全てのVimへのアクセスをVIMモジュール経由で行う。 +Rubyのコードは全てのVimへのアクセスをVimモジュール経由で行う。 概要 > print "Hello" # メッセージを表示する - VIM.command(cmd) # Exコマンドを実行する - num = VIM::Window.count # ウィンドウ数を取得する - w = VIM::Window[n] # ウィンドウ n を取得する - cw = VIM::Window.current # 現在のウィンドウを取得する - num = VIM::Buffer.count # バッファ数を取得する - b = VIM::Buffer[n] # バッファ n を取得する - cb = VIM::Buffer.current # 現在のバッファを取得する + Vim.command(cmd) # Exコマンドを実行する + num = Vim::Window.count # ウィンドウ数を取得する + w = Vim::Window[n] # ウィンドウ n を取得する + cw = Vim::Window.current # 現在のウィンドウを取得する + num = Vim::Buffer.count # バッファ数を取得する + b = Vim::Buffer[n] # バッファ n を取得する + cb = Vim::Buffer.current # 現在のバッファを取得する w.height = lines # ウィンドウの高さ(行数)を設定する w.cursor = [row, col] # ウィンドウのカーソル位置を設定する pos = w.cursor # カーソルの位置を配列で受け取る @@ -96,29 +96,29 @@ Rubyのコードは全てのVimへのアクセスをVIMモジュール経由で b[n] = str # バッファの行の内容を変更する b.delete(n) # 行を削除する b.append(n, str) # n行目の直後に行を追加する - line = VIM::Buffer.current.line # カレント行を取得する - num = VIM::Buffer.current.line_number # カレント行の行番号を取得する - VIM::Buffer.current.line = "test" # カレント行を設定する + line = Vim::Buffer.current.line # カレント行を取得する + num = Vim::Buffer.current.line_number # カレント行の行番号を取得する + Vim::Buffer.current.line = "test" # カレント行を設定する < モジュール関数: *ruby-message* -VIM::message({msg}) +Vim::message({msg}) メッセージ{msg}を表示する。 *ruby-set_option* -VIM::set_option({arg}) +Vim::set_option({arg}) Vimのオプションを設定する。{arg}は ":set" コマンドが受け付けるものであ れば何でも良い。引数の中では空白文字が使えないことに注意。|:set|を参 照。 *ruby-command* -VIM::command({cmd}) +Vim::command({cmd}) Exコマンド{cmd}を実行する。 *ruby-evaluate* -VIM::evaluate({expr}) +Vim::evaluate({expr}) Vim内部の実行エンジンを使ってスクリプト{expr}を実行評価する (|expression|参照)。実行結果は次のように返される: - Vimの実行結果が number の場合は Integer @@ -129,9 +129,9 @@ VIM::evaluate({expr}) 辞書とリストは再帰的に展開される。 ============================================================================== -3. VIM::Buffer オブジェクト *ruby-buffer* +3. Vim::Buffer オブジェクト *ruby-buffer* -オブジェクトVIM::BufferはVimのバッファを表す。 +オブジェクトVim::BufferはVimのバッファを表す。 クラスメソッド: @@ -156,9 +156,9 @@ line = {str} そのバッファがアクティブなら、カレント行を line_number そのバッファがアクティブなら、カレント行の行番号を返す。 ============================================================================== -4. VIM::Window オブジェクト *ruby-window* +4. Vim::Window オブジェクト *ruby-window* -VIM::Window オブジェクトはVimのウィンドウを表現している。 +Vim::Window オブジェクトはVimのウィンドウを表現している。 クラスメソッド: @@ -195,6 +195,8 @@ MS-WindowsとUnixではRubyライブラリを動的に読み込むことが可 る。Rubyインターフェイスを使わないのであればそれらは必要ではないので、ライブラ リファイルがシステムに無くてもVimを使うことができる。 +MS-Windows ~ + これが動作するためには Ruby の適切なバージョンがインストールされている必要があ る。次の場所からパッケージをダウンロードできる: http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html @@ -213,5 +215,12 @@ _MSC_VER のチェックをコメントアウトする必要があるだろう また、インクルードディレクトリの名前をバージョンと同じ名前に変更する必要もある かもしれない。不思議なことに Ruby 1.9.3 のディレクトリは 1.9.1 となっている。 +Unix ~ + +The 'rubydll' option can be used to specify the Ruby shared library file +instead of DYNAMIC_RUBY_DLL file what was specified at compile time. The +version of the shared library must match the Ruby version Vim was compiled +with. + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/if_tcl.jax b/doc/if_tcl.jax index ba0083804..948bb1789 100644 --- a/doc/if_tcl.jax +++ b/doc/if_tcl.jax @@ -1,4 +1,4 @@ -*if_tcl.txt* For Vim バージョン 7.4. Last change: 2012 Aug 02 +*if_tcl.txt* For Vim バージョン 7.4. Last change: 2016 Jan 01 VIMリファレンスマニュアル by Ingo Wilken @@ -511,11 +511,14 @@ Unixマシンでは "~/.vimrc.tcl" など)に入れておき、スタートア ============================================================================== 9. 動的ローディング *tcl-dynamic* -MS-WindowsではTclライブラリを動的に読み込むことが可能である。これを行うと -|:version|の出力に|+tcl/dyn|が含まれるようになる。 +MS-WindowsとUNIXではTclライブラリを動的に読み込むことが可能である。これを行う +と |:version| の出力に |+tcl/dyn| が含まれるようになる。 -この場合、Vimは必要なときだけTclのDLLファイルを検索する。Tclインターフェ -イスを使わないときはDLLを必要としないので、DLLなしでVimを使うことができる。 +この場合、Vimは必要なときだけTclのDLLファイルや共有ライブラリファイルを検索す +る。Tclインターフェイスを使わないときはこれらは不要なので、それらのファイルが +無くてもVimを使うことができる。 + +MS-Windows ~ Tclインターフェイスを使うにはTclのDLLが検索パス内に存在しなければならない。 コンソールウィンドウで "path" とタイプすると、どのディレクトリが検索パスとなる @@ -525,5 +528,12 @@ DLLの名前はVimをコンパイルした時のTclのバージョンに一致 現在その名前は "tcl83.dll" である。これはTcl8.3用である。これを確かめるには、 "gvim.exe" を開き、"tcl\d*.dll\c" を検索する。 + +Unix ~ + +The 'tcldll' option can be used to specify the Tcl shared library file instead +of DYNAMIC_TCL_DLL file what was specified at compile time. The version of +the shared library must match the Tcl version Vim was compiled with. + ============================================================================== vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/index.jax b/doc/index.jax index 8061931d8..6a62bdc4b 100644 --- a/doc/index.jax +++ b/doc/index.jax @@ -1,4 +1,4 @@ -*index.txt* For Vim バージョン 7.4. Last change: 2015 Sep 08 +*index.txt* For Vim バージョン 7.4. Last change: 2016 Jan 19 VIMリファレンスマニュアル by Bram Moolenaar @@ -1071,7 +1071,7 @@ Note: 1 = カーソル移動コマンド 2 = アンドゥ/リドゥ可能 |c_<Insert>| <Insert> 挿入モード/置換モードを変更 |c_<LeftMouse>| <LeftMouse> カーソルをマウスクリック位置へ移動 -You found it, Arthur! *holy-grail* +ついに見つけたんだね、セイバー! *holy-grail* *:smile* ============================================================================== 5. EX コマンド *ex-cmd-index* *:index* @@ -1398,7 +1398,7 @@ You found it, Arthur! *holy-grail* |:marks| :marks すべてのマークを表示 |:match| :mat[ch] 指定したパターンの文字を強調表示する |:menu| :me[nu] 新しいメニュー項目を追加 -|:menutranslate| :menut[ranslate] 翻訳したメニュー項目を追加する +|:menutranslate| :menut[ranslate] 翻訳したメニュー項目を追加する |:messages| :mes[sages] 直前に表示されたメッセージの表示 |:mkexrc| :mk[exrc] 現在のマップと設定をファイルに書き出す |:mksession| :mks[ession] セッション情報をファイルに書き出す @@ -1555,6 +1555,7 @@ You found it, Arthur! *holy-grail* |:smap| :smap ":map" と同様。選択モード用 |:smapclear| :smapc[lear] 選択モードのすべてのマップを削除する |:smenu| :sme[nu] 選択モードのメニューを追加する +|:smile| :smi[le] ユーザーを幸せにする |:snext| :sn[ext] ウィンドウを分割して引数リストの次のファイルを 開く |:sniff| :sni[ff] sniffにリクエストを送信する @@ -1577,7 +1578,7 @@ You found it, Arthur! *holy-grail* |:stop| :st[op] Vimをサスペンドする |:stag| :sta[g] ウィンドウを分割して、タグへジャンプする |:startinsert| :star[tinsert] 挿入モードを開始する -|:startgreplace| :startg[replace] 仮想置換モードを開始する +|:startgreplace| :startg[replace] 仮想置換モードを開始する |:startreplace| :startr[eplace] 置換モードを開始する |:stopinsert| :stopi[nsert] 挿入モードを終了する |:stjump| :stj[ump] ウィンドウを分割して、":tjump" を実行 diff --git a/doc/insert.jax b/doc/insert.jax index b3824b3fb..f873b13c5 100644 --- a/doc/insert.jax +++ b/doc/insert.jax @@ -1,4 +1,4 @@ -*insert.txt* For Vim バージョン 7.4. Last change: 2014 Aug 04 +*insert.txt* For Vim バージョン 7.4. Last change: 2015 Sep 15 VIMリファレンスマニュアル by Bram Moolenaar @@ -79,9 +79,10 @@ CTRL-W カーソルの前にある単語を削除する(行同士の連結に |i_backspacing|参照)。単語の定義については "word motions" の節 |word-motions|を参照。 *i_CTRL-U* -CTRL-U 現在の行の入力済み文字全部を削除する(行同士の連結については - |i_backspacing|参照)。 - +CTRL-U 現在の行のカーソルの前に入力された文字を全部削除する。新しく入 + 力した文字が無く 'backspace' が空ではない時は、カーソル前の全 + ての文字を削除する。 + 行同士の連結については |i_backspacing| を参照。 *i_CTRL-I* *i_<Tab>* *i_Tab* <Tab> or CTRL-I タブを挿入する。'expandtab' オプションが設定されていれば、同じ 数の空白文字が挿入される(展開を避けるためにはCTRL-V <Tab>を使 @@ -360,7 +361,10 @@ CTRL-G CTRL-J 1行下の、挿入開始位置と同じ列へ移動 *i_CTRL- CTRL-O 1つコマンドを実行して、挿入モードに戻る *i_CTRL-O* CTRL-\ CTRL-O CTRL-O と同様だがカーソルを移動させない *i_CTRL-\_CTRL-O* CTRL-L 'insertmode' がオンのとき: ノーマルモードへ *i_CTRL-L* -CTRL-G u undo で元に戻す地点を新たに設定 *i_CTRL-G_u* +CTRL-G u undo で元に戻す地点を新たに設定 *i_CTRL-G_u* +CTRL-G U don't break undo with next left/right cursor *i_CTRL-G_U* + movement (but only if the cursor stays + within same the line) ----------------------------------------------------------------------- Note: カーソルキーを押した時に挿入モードから抜けてしまったら、'noesckeys' オプ @@ -398,6 +402,28 @@ CTRL-G u を使う例: > これは改行ごとに undo を分割する。また、それを行う前に短縮入力の展開も行う。 +An example for using CTRL-G U: > + + inoremap <Left> <C-G>U<Left> + inoremap <Right> <C-G>U<Right> + inoremap <expr> <Home> col('.') == match(getline('.'), '\S') + 1 ? + \ repeat('<C-G>U<Left>', col('.') - 1) : + \ (col('.') < match(getline('.'), '\S') ? + \ repeat('<C-G>U<Right>', match(getline('.'), '\S') + 0) : + \ repeat('<C-G>U<Left>', col('.') - 1 - match(getline('.'), '\S'))) + inoremap <expr> <End> repeat('<C-G>U<Right>', col('$') - col('.')) + inoremap ( ()<C-G>U<Left> + +This makes it possible to use the cursor keys in Insert mode, without breaking +the undo sequence and therefore using |.| (redo) will work as expected. +Also entering a text like (with the "(" mapping from above): > + + Lorem ipsum (dolor + +will be repeatable by the |.|to the expected + + Lorem ipsum (dolor) + CTRL-O は undo 位置を分割する。つまり、その前後に入力したテキストが別々にundo されるようになる。これを避けたい場合(マッピングの中などで)は CTRL-R = |i_CTRL-R| が使えるだろう。例: 関数を呼ぶ: > diff --git a/doc/map.jax b/doc/map.jax index 1220138ea..f680ce474 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -1,4 +1,4 @@ -*map.txt* For Vim バージョン 7.4. Last change: 2014 Jun 02 +*map.txt* For Vim バージョン 7.4. Last change: 2016 Jan 10 VIMリファレンスマニュアル by Bram Moolenaar @@ -485,7 +485,7 @@ Note: ビジュアルモードのマップでは "'<" マークが使えます 1.6 特殊文字 *:map-special-chars* - *map_backslash* + *map_backslash* *map-backslash* Note: このドキュメントでは、マップや短縮入力を定義するときに、CTRL-V だけが特 殊な文字として触れられていますが、'cpoptions' が 'B' を含んでいない場合は、 バックスラッシュも CTRL-V と同様の特殊な働きをします。|<>| 表記も問題なく使用 @@ -496,7 +496,7 @@ Note: このドキュメントでは、マップや短縮入力を定義する 合は、特別文字 "<Bslash>" を使います。マップを入れ子にした場合などにバックス ラッシュを二重にする必要がなくなります。 - *map_CTRL-C* + *map_CTRL-C* *map-CTRL-C* CTRL-C を {lhs} で使うことはできますが、それは Vim がキー入力を待機中のときだ け機能します。Vim がビジー状態 (何かを実行中) のときは機能しません。Vim がビ ジー状態の場合、CTRL-C は実行中のコマンドを中断します。 @@ -504,14 +504,14 @@ MS-Windows の GUI 環境では、CTRL-C にマップすることができるの ドにコピーする機能を割り当てることができます。Vim の動作を中断するには CTRL-Break を使います。 - *map_space_in_lhs* + *map_space_in_lhs* *map-space_in_lhs* {lhs} に空白文字を含めるには CTRL-V を前置してください (空白文字の前で CTRL-V を二度押しで入力)。 - *map_space_in_rhs* + *map_space_in_rhs* *map-space_in_rhs* {rhs} を空白文字で開始するには "<Space>" を使ってください。Vi との互換性を完全 に保ちたい場合は |<>| 表記を使わずに、{rhs} の直前に CTRL-V (CTRL-V を二度押し で入力)を前置してください。 - *map_empty_rhs* + *map_empty_rhs* *map-empty-rhs* CTRL-V を1つだけ入力した後に (CTRL-Vを2度押しで入力) 何も入力しないことで空の {rhs} を作ることもできます。残念ながらvimrcファイル内ではこの方法は使用できま せん。 @@ -583,7 +583,7 @@ Note: 変数 "mapleader" はマップを定義するときに使用されます マップコマンドでは '"' (ダブルクォート) も {lhs} や {rhs} の一部と見なされるた め、マップコマンドの後ろにコメントを置くことはできません。 - *map_bar* + *map_bar* *map-bar* '|' 文字は、マップコマンドと次のコマンドを分けるために使われるので、'|' 文字を {rhs} に含めるには特殊な方法が必要です。 次の3つの方法があります: @@ -601,7 +601,7 @@ Note: 変数 "mapleader" はマップを定義するときに使用されます 後に、別のコマンドが続いているとみなされます。これは Vi 互換ですが、他のコマン ドの場合を考えるとあまり論理的ではありません。 - *map_return* + *map_return* *map-return* マップに Ex コマンドを含める場合、そのコマンドラインを実行するために改行文字を 挿入する必要があります。これには <CR> を使うことが推奨されています(参照|<>|)。 例: > @@ -906,9 +906,11 @@ non-id マッチした場所の前がタブ、行頭、挿入を開始した < "test;;" は展開されません "test ;;" は "test <endofline>" に展開されます -挿入モードで短縮入力の展開を避けるには、短縮入力の一部を入力してから挿入モード -を <Esc> で抜け、再度挿入モードに "a" で入って残りを入力します。もしくは、 -CTRL-V を押してから短縮入力の後の文字を入力します。 +挿入モードで短縮入力の展開を避けるには、短縮入力を発動する可能性のある文字を入 +力する前に CTRL-V を押します。 例:CTRL-V <Space> もしくは短縮入力の一部を入力 +してから挿入モードを <Esc> で抜け、再度挿入モードに "a" で入って残りを入力しま +す。 + コマンドラインモードで短縮入力の展開を避けるには、短縮入力の文字の途中でCTRL-V を入力します (CTRL-V を2度押し)。展開されなかった場合、普通の文字の前のCTRL-V は普通は無視されます。 @@ -1266,6 +1268,8 @@ script2.vimを実行すると "None" が表示されます。期待した結果 -complete=custom,{func} {func}によるユーザー定義の補完 -complete=customlist,{func} {func}によるユーザー定義の補完 +Note: That some completion methods might expand environment variables. + ユーザー定義の補完 *:command-completion-custom* *:command-completion-customlist* @@ -1332,6 +1336,19 @@ script2.vimを実行すると "None" が表示されます。期待した結果 Note: -range=Nと-count=Nは相互に排他的であるということに注意してください。どち らか一方のみを指定することができます。 + *E889* *:command-addr* +It is possible that the special characters in the range like ., $ or % which +by default correspond to the current line, last line and the whole buffer, +relate to arguments, (loaded) buffers, windows or tab pages. + +Possible values are: + -addr=lines Range of lines (this is the default) + -addr=arguments Range for arguments + -addr=buffers Range for buffers (also not loaded buffers) + -addr=loaded_buffers Range for loaded buffers + -addr=windows Range for windows + -addr=tabs Range for tab pages + 特殊なケース *:command-bang* *:command-bar* *:command-register* *:command-buffer* diff --git a/doc/mlang.jax b/doc/mlang.jax index 5bdae99ae..6a6c680ef 100644 --- a/doc/mlang.jax +++ b/doc/mlang.jax @@ -1,4 +1,4 @@ -*mlang.txt* For Vim バージョン 7.4. Last change: 2012 Jan 15 +*mlang.txt* For Vim バージョン 7.4. Last change: 2016 Jan 16 VIMリファレンスマニュアル by Bram Moolenaar @@ -93,16 +93,19 @@ Vimはシステム環境からロケール(地域情報)を判定する。ほと MS-WINDOWSでのメッセージ翻訳 *win32-gettext* インストーラを利用した場合には、既にメッセージの翻訳が動作している。動作しない -のであればlibintl.dllを別途入手する必要がある: > +のであればlibintl.dllを別途入手する必要がある: http://sourceforge.net/projects/gettext +Or: + https://mlocati.github.io/gettext-iconv-windows/ これにはxgettext, msgformatその他のツールも含まれている。 libintl.dllは(g)vim.exeと同じディレクトリか、環境変数PATHに示されたディレクト -リのどれかに置く必要がある。メッセージファイル(vim.mo)は -"$VIMRUNTIME/lang/xx/LC_MESSAGES" に置かなければならない。"xx" はその言語名の -省略形(ほとんどの場合2文字)に置き換えて考える。 +リのどれかに置く必要がある。libintl.dll が見つからない場合、Vim は +libintl-8.dll を読み込もうとする。メッセージファイル(vim.mo)は +"$VIMRUNTIME/lang/xx/LC_MESSAGES" に置かなければならない。"xx" はその言語名 +の省略形(ほとんどの場合2文字)に置き換えて考える。 独自の翻訳を書く場合には.poファイルを作成しそれを.moファイルに変換する必要があ る。そのためにはVimのソースを取得してファイル "src/po/README.txt" を読む必要が diff --git a/doc/netbeans.jax b/doc/netbeans.jax index e7dc0b446..d507ab40a 100644 --- a/doc/netbeans.jax +++ b/doc/netbeans.jax @@ -1,10 +1,10 @@ -*netbeans.txt* For Vim バージョン 7.4. Last change: 2012 Jan 26 +*netbeans.txt* For Vim バージョン 7.4. Last change: 2016 Jan 27 VIMリファレンスマニュアル by Gordon Prieur et al. - *socket-interface* *netbeans* *netbeans-support* + *netbeans* *netbeans-support* Vim NetBeans プロトコル: Vim と IDE を統合するためのソケットインターフェイス @@ -305,7 +305,12 @@ bufID バッファ ID。メッセージは特定のバッファ向けの場合 場合もあります。全体用のメッセージは bufID 0 を使います。 NOTE: このバッファ ID は IDE によって割り当てられるもので、 Vim のバッファ番号とは異なります。bufID は連続して増加する番 - 号で、1 から始まります。 + 号で、1 から始まります。 When the 'switchbuf' option is set to + "usetab" and the "bufID" buffer is not found in the current + tab page, the netbeans commands and functions that set this + buffer as the current buffer will jump to the first open + window that contains this buffer in other tab pages instead of + replacing the buffer in the current window. seqno IDE が Vim にコマンド・関数を発行するときつけられる連続する番 号です。応答は、その元メッセージと同じシーケンス番号を使わねば diff --git a/doc/pattern.jax b/doc/pattern.jax index 96b71fc8c..a01286a41 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -1,4 +1,4 @@ -*pattern.txt* For Vim バージョン 7.4. Last change: 2014 Sep 06 +*pattern.txt* For Vim バージョン 7.4. Last change: 2016 Jan 03 VIMリファレンスマニュアル by Bram Moolenaar @@ -58,6 +58,8 @@ *n* n 最後の "/" か "?" を [count] 回繰り返します。 + If the cursor doesn't move the search is repeated with + count + 1. |last-pattern| {Vi: カウントの前置を受け付けません} *N* @@ -390,8 +392,8 @@ NFA エンジンが選択され、未実装の機能が使用され、パター "\v" を使うと、それ以降の、'0'-'9'、'a'-'z'、'A'-'Z'、'_'、以外のすべての ASCII 文字は特別な意味を持ちます。 "very magic" -"\V" を使うと、それ以降はバックスラッシュだけが特別な意味を持ちます。 -"very nomagic" +"\V" を使うと、それ以降はバックスラッシュと終端文字 (/ や ?) だけが特別な意味 +を持ちます。 "very nomagic" 例: after: \v \m \M \V マッチするもの ~ @@ -399,6 +401,7 @@ after: \v \m \M \V マッチするもの ~ $ $ $ \$ 行末 . . \. \. 何か 1 文字 * * \* \* 直前のアトムの繰り返し + ~ ~ \~ \~ 直近の置換文字列 () \(\) \(\) \(\) グループ化してアトムにする | \| \| \| 選択の区切り \a \a \a \a 英字 @@ -477,6 +480,7 @@ after: \v \m \M \V マッチするもの ~ |/\%v| \%23v \%23v 23列目 (表示単位) |/zero-width| 文字クラス {Vi にはありません}: */character-classes* + magic nomagic matches ~ |/\i| \i \i 識別子文字 (オプション 'isident' を参照) |/\I| \I \I "\i" と同じですが、数字は除外します |/\k| \k \k キーワード文字 (オプション 'iskeyword' を参照) @@ -507,6 +511,7 @@ after: \v \m \M \V マッチするもの ~ マッチします。 (文字クラスここまで) + magic nomagic matches ~ |/\e| \e \e <Esc> |/\t| \t \t <Tab> |/\r| \r \r <CR> @@ -532,6 +537,7 @@ after: \v \m \M \V マッチするもの ~ |/\Z| \Z \Z Unicodeの合成文字かどうかを無視します。 ヘブライ語やアラビア語で母音を検索するときに便利です。 + magic nomagic matches ~ |/\m| \m \m 以降のパターン文字を 'magic' がオンの状態で処理します |/\M| \M \M 以降のパターン文字を 'magic' がオフの状態で処理します |/\v| \v \v 以降のパターン文字を "very magic" で処理します @@ -1046,7 +1052,10 @@ x 特別な意味のない文字は、その文字自身とマッチします *E769* ']' がない場合、Vim はエラーを表示せず、コレクションが使われているので はないと判断します。'[' を検索するときに便利です。しかし、Vim 内部での - 検索では E769 のエラーがでます。 + 検索では E769 のエラーがでます。 And be aware that in a + `:substitute` command the whole command becomes the pattern. E.g. + ":s/[/x/" searches for "[/x" and replaces it with nothing. It does + not search for "[" and replaces it with "x"! コレクション文字列の先頭が "^" の場合、 コレクションに含まれている文字 以外の文字がマッチします。"[^xyz]" は 'x'、'y'、'z' 以外の文字にマッチ @@ -1079,7 +1088,10 @@ x 特別な意味のない文字は、その文字自身とマッチします す。たとえば、"[-./[:alnum:]_~]\+" は、UNIX のファイル名として妥当な パターンです。このパターンは、'-'、'.'、'/'、英数字、'_'、'~'、のど の文字の組合せでも、1 文字以上の文字列にマッチします。 - これらのものは、8 ビット文字のみマッチします。 + These items only work for 8-bit characters, except [:lower:] and + [:upper:] also work for multi-byte characters when using the new + regexp engine. In the future these items may work for multi-byte + characters. */[[=* *[==]* - 等価クラス。これはその文字とほぼ同じ文字にマッチします。例えば、アク セントを無視するなど。これは Unicode、latin1、latin9 でのみ機能しま diff --git a/doc/quickref.jax b/doc/quickref.jax index 77ae9ccd2..524d38bde 100644 --- a/doc/quickref.jax +++ b/doc/quickref.jax @@ -1,4 +1,4 @@ -*quickref.txt* For Vim バージョン 7.4. Last change: 2014 Aug 06 +*quickref.txt* For Vim バージョン 7.4. Last change: 2015 Nov 10 VIMリファレンスマニュアル by Bram Moolenaar @@ -635,6 +635,7 @@ 'balloondelay' 'bdlay' バルーンウィンドウが出るまでの遅延時間(ms) 'ballooneval' 'beval' バルーン評価のON/OFF 'balloonexpr' 'bexpr' バルーンウィンドウに表示する式 +'belloff' 'bo' do not ring the bell for these reasons 'binary' 'bin' バイナリモードで、読み/書き/編集する 'bioskey' 'biosk' MS-DOS専用: 文字入力にbiosコールを使う 'bomb' ファイルの先頭にBOMを付加する @@ -713,6 +714,7 @@ 'fileignorecase' 'fic' ファイル名の大文字と小文字を区別するかどうか 'filetype' 'ft' オートコマンドで使うファイルタイプ名 'fillchars' 'fcs' 特殊な表示に使う文字 +'fixendofline' 'fixeol' make sure last line in file has <EOL> 'fkmap' 'fk' ペルシア語のキーボードマッピング 'foldclose' 'fcl' カーソル下以外の折畳みを閉じる 'foldcolumn' 'fdc' 折畳みを示すのに使う列幅 @@ -727,10 +729,10 @@ 'foldnestmax' 'fdn' 折畳みの深さの制限 'foldopen' 'fdo' 折畳みを開くことのできるコマンド 'foldtext' 'fdt' 閉じた折畳みの表示に使う式 +'formatexpr' 'fex' |gq|で使う式 'formatlistpat' 'flp' リストのヘッダを認識するためのパターン 'formatoptions' 'fo' 自動整形の動作定義 'formatprg' 'fp' |gq|で使う外部プログラム -'formatexpr' 'fex' |gq|で使う式 'fsync' 'fs' ファイルを書き込んだ後に fsync() を呼ぶかどうか 'gdefault' 'gd' |:substitute|で "g" を既定で有効にする 'grepformat' 'gfm' 'grepprg' の出力の書式 @@ -749,15 +751,15 @@ 'helplang' 'hlg' 優先するヘルプ用の言語 'hidden' 'hid' バッファが|abandon|(捨て)られても破棄しない 'highlight' 'hl' 様々な対象に対する強調表示モードの設定 -'hlsearch' 'hls' 最後に検索したパターンを強調表示する 'history' 'hi' コマンドライン履歴の記録数 'hkmap' 'hk' ヘブライ語のキーボードマッピング 'hkmapp' 'hkp' 発音に即したヘブライ語のキーボードマッピング +'hlsearch' 'hls' 最後に検索したパターンを強調表示する 'icon' Vimのアイコン表示でテキストを変更するようにする 'iconstring' Vimのアイコン表示に使用するテキスト 'ignorecase' 'ic' 検索パターンで大文字と小文字を区別しない -'imactivatekey' 'imak' X のインプットメソッドをオンにするキー 'imactivatefunc' 'imaf' X のインプットメソッドをオン/オフにする関数 +'imactivatekey' 'imak' X のインプットメソッドをオンにするキー 'imcmdline' 'imc' コマンドライン入力時にIMを有効にする 'imdisable' 'imd' どのモードでもIMを使わない 'iminsert' 'imi' 挿入モードで|:lmap|やIMを使う @@ -781,6 +783,7 @@ 'keywordprg' 'kp' |K|で使う外部プログラム 'langmap' 'lmap' 他の言語モードでの文字 'langmenu' 'lm' メニュー表示用言語 +'langnoremap' 'lnr' do not apply 'langmap' to mapped characters 'laststatus' 'ls' 最下ウィンドウにいつステータス行を表示するか 'lazyredraw' 'lz' マクロ実行中に表示を更新しない 'linebreak' 'lbr' 長い行を空白で折り返す @@ -791,6 +794,7 @@ 'list' <Tab>や<EOL>を表示する 'listchars' 'lcs' 'list' オン時に使う文字 'loadplugins' 'lpl' 起動時にプラグインスクリプトを読み込む +'luadll' name of the Lua dynamic library 'macatsui' Mac GUI: ATSUI テキスト描画を使う 'magic' 検索パターン内の特殊文字を変更する 'makeef' 'mef' |:make|用のエラーファイル @@ -830,6 +834,7 @@ 'patchexpr' 'pex' パッチを適用するための式 'patchmode' 'pm' 最初のバージョンを保全する 'path' 'pa' |gf|などでファイルを検索するディレクトリのリスト +'perldll' name of the Perl dynamic library 'preserveindent' 'pi' 再インデント時にインデントの構造を保つ 'previewheight' 'pvh' プレビューウィンドウの高さ 'previewwindow' 'pvw' プレビューウィンドウかどうか @@ -842,6 +847,8 @@ 'printmbfont' 'pmbfn' |:hardcopy|の出力に使われるフォント名 'printoptions' 'popt' |:hardcopy|の出力をコントロールする 'pumheight' 'ph' ポップアップメニューの高さの最大値 +'pythondll' name of the Python 2 dynamic library +'pythonthreedll' name of the Python 3 dynamic library 'quoteescape' 'qe' 文字列中に使われるエスケープ文字 'readonly' 'ro' バッファの書き込みを制限する 'redrawtime' 'rdt' 'hlsearch' と |:match| のハイライトのタイムアウト @@ -854,6 +861,7 @@ 'revins' 'ri' 挿入モードで入力方向が逆になる 'rightleft' 'rl' "右から左" 指向のウィンドウ 'rightleftcmd' 'rlc' "右から左" に入力するコマンド +'rubydll' name of the Ruby dynamic library 'ruler' 'ru' ステータスラインにカーソルが位置する場所を表示する 'rulerformat' 'ruf' 'ruler' 用のフォーマット 'runtimepath' 'rtp' ランタイムファイル用のディレクトリのリスト @@ -909,14 +917,16 @@ 'switchbuf' 'swb' バッファ切替え時の動作 'synmaxcol' 'sws' この桁までしか構文アイテムを探さない 'syntax' 'syn' カレントバッファの構文強調表示の定義 -'tabstop' 'ts' <Tab>の表示幅 'tabline' 'tal' コンソールのタブページラインのカスタムフォーマット 'tabpagemax' 'tpm' タブページの最大数。|-p|と "tab all" に使われる。 +'tabstop' 'ts' <Tab>の表示幅 'tagbsearch' 'tbs' タグファイル内の検索にバイナリサーチを使う +'tagcase' 'tc' how to handle case when searching in tags files 'taglength' 'tl' タグ名はこの文字数までしか意味を持たない 'tagrelative' 'tr' タグファイル内のファイル名が相対的になる 'tags' 'tag' タグコマンドで使うファイルのリスト 'tagstack' 'tgst' タグスタックにタグをプッシュする +'tcldll' name of the Tcl dynamic library 'term' ターミナルの名前 'termbidi' 'tbidi' ターミナルが双方向性を持っている 'termencoding' 'tenc' ターミナルが使用する文字コード diff --git a/doc/repeat.jax b/doc/repeat.jax index 5c0a4887a..9666b14aa 100644 --- a/doc/repeat.jax +++ b/doc/repeat.jax @@ -1,4 +1,4 @@ -*repeat.txt* For Vim バージョン 7.4. Last change: 2015 Apr 13 +*repeat.txt* For Vim バージョン 7.4. Last change: 2016 Jan 16 VIMリファレンスマニュアル by Bram Moolenaar @@ -110,7 +110,13 @@ Ex モード中で "global" を使い、そのコマンドに ":visual" を指 q{0-9a-zA-Z"} タイプした文字をレジスタ{0-9a-zA-Z"}にレコーディングす る(大文字なら追記)。レジスタを実行中は 'q' コマンドは 無効化される。マッピングや |:normal| の中でも機能しな - い。{Vi: レコーディングはない} + い。 + + Note: If the register being used for recording is also + used for |y| and |p| the result is most likely not + what is expected, because the put will paste the + recorded macro and the yank will overwrite the + recorded macro. {Vi: no recording} q レコーディングを終了する。(実装のメモ: レコーディング を終了する 'q' は、それがマッピングの結果であってもレ @@ -458,15 +464,44 @@ NOTE: デバッグモードは未完成である。デバッグはVimの動作 *>finish* finish 実行中のスクリプトやユーザー関数を終了し呼び出し元でデ バッグモードに戻る。 + *>bt* + *>backtrace* + *>where* + backtrace Show the call stacktrace for current debugging session. + bt + where + *>frame* + frame N Goes to N bactrace level. + and - signs make movement + relative. E.g., ":frame +3" goes three frames up. + *>up* + up Goes one level up from call stacktrace. + *>down* + down Goes one level down from call stacktrace. デバッグモードのコマンドについて: - 補完はできない。通常のExコマンドのみ補完できる。 - 次の一文字に省略すことができる: "c", "n", "s" そして "f"。 +- コマンド名は、他のコマンドが同じ文字で始まらないところまで省略できる。 + "f" は "finish" なるので "frame" を省略するには "fr" を用いる。 - <CR>を押すと前回のものを繰り返す。関係ないコマンドを使うとリセットされる (どうすべきかがわかりにくいため)。 - 同じ名前のExコマンドを使うにはコロンを付けること: ":cont", ":next", ":finish" (省略時も) +The backtrace shows the hierarchy of function calls, e.g.: + >bt ~ + 3 function One[3] ~ + 2 Two[3] ~ + ->1 Three[3] ~ + 0 Four ~ + line 1: let four = 4 ~ + +The "->" points to the current frame. Use "up", "down" and "frame N" to +select another frame. + +In the current frame you can evaluate the local function variables. There is +no way to see the command at the current line yet. + ブレークポイントの定義 ---------------------- diff --git a/doc/spell.jax b/doc/spell.jax index f4b762d17..0a77791c5 100644 --- a/doc/spell.jax +++ b/doc/spell.jax @@ -1,4 +1,4 @@ -*spell.txt* For Vim バージョン 7.4. Last change: 2014 Sep 19 +*spell.txt* For Vim バージョン 7.4. Last change: 2016 Jan 08 VIMリファレンスマニュアル by Bram Moolenaar @@ -1389,6 +1389,14 @@ the item name. Case is always ignored. The Hunspell feature to use three arguments and flags is not supported. + *spell-NOCOMPOUNDSUGS* +This item indicates that using compounding to make suggestions is not a good +idea. Use this when compounding is used with very short or one-character +words. E.g. to make numbers out of digits. Without this flag creating +suggestions would spend most time trying all kind of weird compound words. + + NOCOMPOUNDSUGS ~ + *spell-SYLLABLE* The SYLLABLE item defines characters or character sequences that are used to count the number of syllables in a word. Example: diff --git a/doc/tagsrch.jax b/doc/tagsrch.jax index c5d6c309a..ead835383 100644 --- a/doc/tagsrch.jax +++ b/doc/tagsrch.jax @@ -82,6 +82,15 @@ CTRL-]はtelnetの標準エスケープキーである。タグにジャンプ すること。これは ":tnext" を使うときの混乱を避けるためである。優先度のリストは ":tag {ident}" を使ったときに変化する。 +The ignore-case matches are not found for a ":tag" command when the +'ignorecase' option is off and 'tagcase' is "followic" or when 'tagcase' is +"match". They are found when a pattern is used (starting with a "/") and for +":tselect", also when 'ignorecase' is off and 'tagcase' is "followic" or when +'tagcase' is "match". Note that using ignore-case tag searching disables +binary searching in the tags file, which causes a slowdown. This can be +avoided by fold-case sorting the tag file. See the 'tagbsearch' option for an +explanation. +{参考用の旧訳: 'ignorecase' オプションがオフになっているときの ":tag" コマンドでは、大文字、 小文字を区別しないマッチは見つからない。'ignorecase' がオフになっていても、 ("/" で始まる) パターンを使用し、かつ ":tselect" を使ったときには見つけること @@ -89,6 +98,7 @@ CTRL-]はtelnetの標準エスケープキーである。タグにジャンプ ができなくなるため処理が遅くなる、ということに注意すること。これはタグファイル を大文字と小文字を区別せずにソートすることで回避できる。'tagbsearch' オプショ ンの説明も参照のこと。 +:旧訳ここまで} ============================================================================== 2. タグスタック *tag-stack* *tagstack* *E425* @@ -431,12 +441,21 @@ Emacs タグファイルの行は非常に長くなることがある。Vim は 以下のようなときは、リストの次のファイルを使わない: - 現在のバッファに対するstaticタグが見つかった場合。 - globalタグが見つかった場合。 +This also depends on whether case is ignored. Case is ignored when +'ignorecase' is set and 'tagcase' is "followic", or when 'tagcase' is +"ignore". If case is not ignored, and the tags file only has a match without +matching case, the next tags file is searched for a match with matching case. +If no tag with matching case is found, the first match without matching case +is used. If case is ignored, and a matching global tag with or without +matching case is found, this one is used, no further tags files are searched. +{参考用の旧訳: これらは 'ignorecase' オプションに依存する。もしオフにしてあり、tagsファイルに 大文字小文字が一致するタグがない場合、一致するタグを次のtagsファイルで検索す る。もし一致するタグが見つからなければ、大文字小文字を無視して最初にマッチした ものが使われる。もし 'ignorecase' がオンの場合、大文字小文字の区別なく、global タグが見つかった時点でそのタグが使用され、それ以降のtagsファイルは検索されな い。 +:旧訳ここまで} タグファイル名が "./" で始まるとき、'.' は現在のファイルのパスで置き換えられ る。これにより、現在のファイルがあるディレクトリのtagsファイルを使用することが @@ -565,9 +584,15 @@ tagsファイルの先頭行には、 た場合には、Vimはtagsファイルに対して二分検索を使用する: !_TAG_FILE_SORTED<TAB>1<TAB>{anything} ~ +A tag file may be case-fold sorted to avoid a linear search when case is +ignored. (Case is ignored when 'ignorecase' is set and 'tagcase' is +"followic", or when 'tagcase' is "ignore".) See 'tagbsearch' for details. +The value '2' should be used then: +{参考用の旧訳: 'ignorecase' がonのときに線形検索を避けるために、大文字と小文字を区別せずにタ グファイルがソートされることがある。詳細は 'tagbsearch' を参照。そのときは '2' が使われる: +:旧訳ここまで} !_TAG_FILE_SORTED<TAB>2<TAB>{anything} ~ Vimが認識するもう1つのタグはタグファイルのエンコーディングを指定するものであ diff --git a/doc/term.jax b/doc/term.jax index 8c89fd7d6..1f7127de9 100644 --- a/doc/term.jax +++ b/doc/term.jax @@ -1,4 +1,4 @@ -*term.txt* For Vim バージョン 7.4. Last change: 2014 May 13 +*term.txt* For Vim バージョン 7.4. Last change: 2015 Nov 24 VIMリファレンスマニュアル by Bram Moolenaar @@ -224,10 +224,10 @@ termcap コードに対応するオプションを設定することによって るオプション名の最後の2文字が等しくなっています。絶対に必要な termcap コードは カーソルを移動させる 't_cm' の1つだけです。 -オプション 't_da', 't_db', 't_ms', 't_xs' は termcap におけるフラグに対応して -います。termcap にこれらのフラグが存在すると、対応するオプションに "y" が設定 -されます。空でない文字列を設定するとオンになり、空文字列を設定するとオフになり -ます。't_CS' もこれと同様ですが、termcap フラグではありません。 +オプション 't_da', 't_db', 't_ms', 't_xs', 't_xn' は termcap におけるフラグに +対応しています。termcap にこれらのフラグが存在すると、対応するオプションに "y" +が設定されます。空でない文字列を設定するとオンになり、空文字列を設定するとオフ +になります。't_CS' もこれと同様ですが、termcap フラグではありません。 出力コード option 意味 ~ @@ -282,6 +282,9 @@ termcap コードに対応するオプションを設定することによって t_vs カーソル強調表示 *t_vs* *'t_vs'* *t_xs* *'t_xs'* t_xs 空でない場合は強調が上書きによって消されない(hpterm) + *t_xn* *'t_xn'* + t_xn if non-empty, writing a character at the last screen cell + does not cause scrolling t_ZH 斜体モード *t_ZH* *'t_ZH'* t_ZR 斜体終了 *t_ZR* *'t_ZR'* @@ -291,12 +294,15 @@ Vim 独自のもの (標準的なコードはないもの): t_WP ウィンドウ位置 (Y, X) をピクセルで指定 *t_WP* *'t_WP'* t_WS ウィンドウサイズ (height, width) を文字数で指定 *t_WS* *'t_WS'* t_SI 挿入モード開始 (バー型のカーソル) *t_SI* *'t_SI'* - t_EI 挿入モード終了(ブロック型カーソル) *t_EI* *'t_EI'* + t_SR start replace mode (underline cursor shape) *t_SR* *'t_SR'* + t_EI 挿入または置換モード終了(ブロック型カーソル) *t_EI* *'t_EI'* |termcap-cursor-shape| t_RV 端末バージョン文字列を要求 (xterm 用) *t_RV* *'t_RV'* |xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes| t_u7 カーソル位置を要求 (xterm 用) *t_u7* *'t_u7'* |'ambiwidth'| 参照。 + t_RB request terminal background color *t_RB* *'t_RB'* + see |'ambiwidth'| キーコード Note: 可能なかぎり <> 形式を使ってください。 @@ -412,7 +418,8 @@ Note t_so と t_mrについて: termcap に "so" エントリがない場合は るという問題に対応することができます。そのため、<xF1> のようなコードは必要なく なります。 Note: これは起動時にのみ行われます。Vim が起動した後で xterm のオプションが変 -更された場合は、これらのエスケープシーケンスは認識されなくなる可能性があります。 +更された場合は、これらのエスケープシーケンスはそれ以降、認識されなくなる可能性 +があります。 *xterm-resize* xterm でのウィンドウサイズ変更はリソース allowWindowOps が有効なときのみ動作し @@ -436,13 +443,22 @@ allow-window-pos にチェックが入っているはずです。 ます。 *termcap-cursor-shape* *termcap-cursor-color* +When Vim enters Insert mode the 't_SI' escape sequence is sent. When Vim +enters Replace mode the 't_SR' escape sequence is sent if it is set, otherwise +'t_SI' is sent. When leaving Insert mode or Replace mode 't_EI' is used. This +can be used to change the shape or color of the cursor in Insert or Replace +mode. These are not standard termcap/terminfo entries, you need to set them +yourself. +{参考用の旧訳: 挿入モードに入るとき、エスケープシーケンス 't_SI' が送られます。挿入モードを抜 けるときは 't_EI' が送られます。ただし、両方が定義されているときのみです。これ を利用して、挿入モードにおけるカーソルの形や色を変えることができます。これらは 標準的な termcap/terminfo エントリではないので、自分で設定する必要があります。 +:旧訳ここまで} 以下は xterm でカーソルの色を変える例です: > if &term =~ "xterm" let &t_SI = "\<Esc>]12;purple\x7" + let &t_SR = "\<Esc>]12;red\x7" let &t_EI = "\<Esc>]12;blue\x7" endif NOTE: Vim を終了するとき、ノーマルモードでのカーソル設定がそのまま残ります。 @@ -835,7 +851,7 @@ sysmouse は、コンパイル時に |+mouse_sysmouse| 機能が有効化され X1 ボタンと X2 ボタンは、ある種のマウスについている4番目、5番目のボタンのこと です。'Microsoft Explorer' マウスの場合、これらのボタンは右親指の位置について -います。現在のところ、X1 と X2 は Win32 環境でのみ機能します。 +います。現在のところ、X1 と X2 は Win32 と X11 環境でのみ機能します。 例: > :noremap <MiddleMouse> <LeftMouse><MiddleMouse> diff --git a/doc/usr_03.jax b/doc/usr_03.jax index b36b1e1ce..0b70f117f 100644 --- a/doc/usr_03.jax +++ b/doc/usr_03.jax @@ -1,4 +1,4 @@ -*usr_03.txt* For Vim バージョン 7.4. Last change: 2006 Jun 21 +*usr_03.txt* For Vim バージョン 7.4. Last change: 2016 Jan 05 VIM USER MANUAL - by Bram Moolenaar @@ -55,7 +55,10 @@ ルールで動きます。 単語は "." や "-"、")" といったアルファベット以外の文字で区切られます。Vimが何 -を単語とみなすかは、'iskeyword' オプションの設定で変更できます。 +を単語とみなすかは、'iskeyword' オプションの設定で変更できます。 If you try +this out in the help directly, 'iskeyword' needs to be reset for the examples +to work: > + :set iskeyword& 空白を区切りとした単語(WORD)を移動することもできます。これは普段意識する単語 (word)とは若干違うため、大文字を使っています。WORD単位で動くコマンドは全部大 文字です。図で示すと次の通りです。 @@ -398,8 +401,8 @@ CTRL-Dコマンドは窓を半分だけ下げます。つまりテキストが /the\> "\>" というのは特別なマーカーで、単語がここで終わっている時だけヒットします。 -同じように "\<" は単語がここで始まっている時にだけヒットします。つまり、"the" -という単語だけを探したい場合は、次のようにします。 > +同じように "\<" は単語の始まりにだけヒットします。つまり、"the" という単語だけ +を探したい場合は、次のようにします。 > /\<the\> diff --git a/doc/usr_41.jax b/doc/usr_41.jax index db30338ab..6ce10f90f 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim バージョン 7.4. Last change: 2014 Aug 16 +*usr_41.txt* For Vim バージョン 7.4. Last change: 2016 Jan 28 VIM USER MANUAL - by Bram Moolenaar @@ -866,6 +866,19 @@ Vimサーバー: *server-functions* maparg() マップのrhs(展開結果)を得る wildmenumode() wildmodeが有効かどうかをチェック +Testing: *test-functions* + assert_equal() assert that two expressions values are equal + assert_false() assert that an expression is false + assert_true() assert that an expression is true + +Inter-process communication: + connect() open a channel + disconnect() close a channel + sendexpr() send a JSON message over a channel + sendraw() send a raw message over a channel + jsonencode() encode an expression to a JSON string + jsondecode() decode a JSON string to Vim types + その他: *various-functions* mode() 現在の編集モードを得る visualmode() 最後に使われたビジュアルモードの種類 @@ -894,8 +907,10 @@ Vimサーバー: *server-functions* luaeval() Luaの式を評価する mzeval() |MzScheme| の式を評価する + perleval() evaluate Perl expression (|+perl|) py3eval() Pythonの式を評価する (|+python3|) pyeval() Pythonの式を評価する (|+python|) + wordcount() get byte/word/char count of buffer ============================================================================== *41.7* 関数を定義する diff --git a/doc/various.jax b/doc/various.jax index 9652cefab..319db1b86 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -1,4 +1,4 @@ -*various.txt* For Vim バージョン 7.4. Last change: 2014 Aug 06 +*various.txt* For Vim バージョン 7.4. Last change: 2016 Jan 27 VIM リファレンスマニュアル by Bram Moolenaar @@ -320,6 +320,7 @@ N *+browse* |:browse| コマンド N *+builtin_terms* 幾つかの組み込み端末 |builtin-terms| B *++builtin_terms* 全部の組み込み端末 |builtin-terms| N *+byte_offset* 'statusline'の'o'フラグ、|go|、|:goto|をサポート +m *+channel* inter process communication |channel| N *+cindent* |'cindent'|, C言語インデント N *+clientserver* UnixとWin32: リモート呼び出し |clientserver| *+clipboard* |clipboard|サポート @@ -646,6 +647,7 @@ K カーソル位置のキーワードを調べるためのプログラムを g CTRL-A MEM_PROFILING を define して Vim をコンパイルしたとき み使えます (通常は使いません)。メモリ使用量の統計を表 示します。Vim をデバッグするときなどに使います。 + For incrementing in Visual mode see |v_g_CTRL-A|. ============================================================================== 2. less、more の代わりに Vim を使う *less* @@ -663,4 +665,12 @@ less のコマンドをシミュレートするためのマップを設定しま "h" キーを押すと使用できるコマンドのショートヘルプが表示されます。 +If you want to set options differently when using less, define the +LessInitFunc in your vimrc, for example: > + + func LessInitFunc() + set nocursorcolumn nocursorline + endfunc +< + vim:tw=78:ts=8:ft=help:norl: From c1f24c21aba57c1316a33ff2f4fb3d95a2b3190b Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 16:55:08 +0900 Subject: [PATCH 754/783] imports english for three large files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit if_lua.jax は普通 os_os2.jax は消すだけ eval.jax は地獄 --- catchup-7.4.1194.md | 10 +- doc/eval.jax | 423 ++++++++++++++++++++++++++++++++++++++++---- doc/if_lua.jax | 110 ++++++++++-- doc/os_os2.jax | 199 +-------------------- 4 files changed, 489 insertions(+), 253 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 6f75d201c..c831d43b1 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -19,10 +19,7 @@ 追いついたファイルは、下記の一覧から削除し、適切なセクションへ移動 - doc/eval.jax - doc/if_lua.jax doc/options.jax - doc/os_os2.jax doc/pi_netrw.jax doc/syntax.jax doc/usr_02.jax @@ -30,12 +27,16 @@ ### 英文だけは反映済み +以上は変更点が100行未満なので、翻訳しやすいはず。 + doc/autocmd.jax doc/change.jax doc/develop.jax doc/editing.jax + doc/eval.jax doc/fold.jax doc/hangulin.jax + doc/if_lua.jax doc/if_mzsch.jax doc/if_perl.jax doc/if_pyth.jax @@ -54,6 +55,8 @@ doc/usr_41.jax doc/various.jax +こっから先は100行超えるので、嫌。 + ### 完訳! doc/cmdline.jax @@ -61,6 +64,7 @@ doc/help.jax doc/index.jax doc/mlang.jax + doc/os_os2.jax doc/quickfix.jax doc/usr_29.jax doc/usr_43.jax diff --git a/doc/eval.jax b/doc/eval.jax index 946b1fec2..8a963561d 100644 --- a/doc/eval.jax +++ b/doc/eval.jax @@ -1,4 +1,4 @@ -*eval.txt* For Vim バージョン 7.4. Last change: 2015 Jun 26 +*eval.txt* For Vim バージョン 7.4. Last change: 2016 Jan 28 VIMリファレンスマニュアル by Bram Moolenaar @@ -66,12 +66,14 @@ Funcref 関数への参照 |Funcref|。 数値 -1 --> 文字列 "-1" ~ *octal* 文字列から数値への変換は最初の数字を用いて数値に変換する。16進表記 "0xf9" や -8進表記 "017" も認識される。文字列が数字で始まらない場合結果は0となる。例: +8進表記 "017"、2進数表記の "0b10" も認識される。文字列が数字で始まらない場合結 +果は0となる。例: 文字列 "456" --> 数値 456 ~ 文字列 "6bar" --> 数値 6 ~ 文字列 "foo" --> 数値 0 ~ 文字列 "0xf1" --> 数値 241 ~ 文字列 "0100" --> 数値 64 ~ + String "0b101" --> Number 5 ~ 文字列 "-8" --> 数値 -8 ~ 文字列 "+8" --> 数値 0 ~ @@ -97,6 +99,9 @@ empty()を使用して次のようにする。 > 動的な変換は存在しない。文字列から浮動小数点数へは str2float() を使い、浮動小 数点数から文字列へは printf() を、浮動小数点数から数値へは float2nr() を使う。 + *E891* *E892* *E893* *E894* +When expecting a Float a Number can also be used, but nothing else. + *E706* *sticky-type-checking* 変数の型を変えようとするとエラーになる。このエラーを避けるには、まず|:unlet|す る必要がある。しかし文字列と数値は同値であると見なされる。同じく、浮動小数点数 @@ -836,9 +841,9 @@ expr8 がマルチバイト文字列である場合、この値は単なるバ とはならないかもしれないことに注意。マルチバイト文字列に対する代替方法は |byteidx()| を参照。 -インデックスが0の場合、先頭のキャラクタが得られることに注意。これはC言語のよう -に働く。注意:カラム番号は1から始まる。例えばカーソルの下の文字を得るためには、 -次のようにする必要がある: > +インデックスが0の場合、先頭のバイトが得られることに注意。これはC言語のように働 +く。注意:カラム番号は1から始まる。例えばカーソルの下のバイトを得るためには、次 +のようにする必要がある: > :let c = getline(".")[col(".") - 1] 文字列の長さよりも大きなインデックスが指定された場合、結果は空文字列になる。負 @@ -885,6 +890,11 @@ expr8がリストならば、インデックスexpr1aとexpr1bの間の要素か |Funcref|に対してexpr8[expr1]やexpr8[expr1a : expr1b]を使うとエラーになる。 +Watch out for confusion between a namespace and a variable followed by a colon +for a sublist: > + mylist[n:] " uses variable n + mylist[s:] " uses namespace s:, error! + expr8.name 辞書|Dictionary|の要素 *expr-entry* @@ -1284,6 +1294,12 @@ v:cmdbang v:cmdargと同じく読み書きコマンドを実行したとき設 0となる。Note オートコマンドの中でのみ利用可能なことに注意。 ユーザー定義コマンドでは|<bang>|を使えば同じことができる。 + *v:completed_item* *completed_item-variable* +v:completed_item + |Dictionary| containing the |complete-items| for the most + recently completed word after |CompleteDone|. The + |Dictionary| is empty if the completion failed. + *v:count* *count-variable* v:count 最後に実行されたノーマルモードコマンドに渡されたコマンドの実行 回数を返す。読出し専用。使用例: > @@ -1327,6 +1343,15 @@ v:errmsg 最後に表示されたエラーメッセージ。この変数は代 : ... < また "errmsg" は、以前の版のVimとの互換性の為に動作する。 + *v:errors* *errors-variable* +v:errors Errors found by assert functions, such as |assert_true()|. + This is a list of strings. + The assert functions append an item when an assert fails. + To remove old results make it empty: > + :let v:errors = [] +< If v:errors is set to anything but a list it is made an empty + list by the assert function. + *v:exception* *exception-variable* v:exception 最も直近に捕捉され、まだ終了していない例外の値。 |v:throwpoint|と|throw-variables|を参照。 @@ -1338,6 +1363,13 @@ v:exception 最も直近に捕捉され、まだ終了していない例外の :endtry < 出力: "caught oops". + *v:false* *false-variable* +v:false A Number with value zero. Used to put "false" in JSON. See + |jsonencode()|. + When used as a string this evaluates to "false". > + echo v:false +< false ~ + *v:fcs_reason* *fcs_reason-variable* v:fcs_reason |FileChangedShell|イベントが発生した理由。オートコマンドの中で 何をすべきかやv:fcs_choiceに何を代入すべきかを決めるために使う。 @@ -1418,7 +1450,9 @@ v:hlsearch 検索による強調表示がオンになっているかどうかを |:nohlsearch|コマンドを実行することと同様に働き、1に設定するこ とは以下と同様に働く > let &hlsearch = &hlsearch -< +< Note that the value is restored when returning from a + function. |function-search-undo|. + *v:insertmode* *insertmode-variable* v:insertmode オートコマンドイベント|InsertEnter|と|InsertChange|用。 値は次のどれか: @@ -1468,6 +1502,22 @@ v:mouse_col |getchar()|でマウスクリックイベントを取得したとき 桁番号が代入されている。|virtcol()|と同じく画面上の桁番号。マ ウスがクリックされていないときは0となる。 + *v:none* *none-variable* +v:none An empty String. Used to put an empty item in JSON. See + |jsonencode()|. + When used as a number this evaluates to zero. + When used as a string this evaluates to "none". > + echo v:none +< none ~ + + *v:null* *null-variable* +v:null An empty String. Used to put "null" in JSON. See + |jsonencode()|. + When used as a number this evaluates to zero. + When used as a string this evaluates to "null". > + echo v:null +< null ~ + *v:oldfiles* *oldfiles-variable* v:oldfiles 起動時に |viminfo| から読み込まれたファイルの名前のリスト。 これらはマークを記憶しているファイルである。リストの長さの上限 @@ -1632,6 +1682,12 @@ v:throwpoint 最も直近に捕捉されてまだ終了していない例外が :endtry < 出力: "Exception from test.vim, line 2" + *v:true* *true-variable* +v:true A Number with value one. Used to put "true" in JSON. See + |jsonencode()|. + When used as a string this evaluates to "true". > + echo v:true +< true ~ *v:val* *val-variable* v:val 辞書|Dictionary|の現在の要素の値。|map()|と|filter()|で使わ れる式を評価している最中のみ有効。 @@ -1672,15 +1728,22 @@ v:windowid X11 ベースの GUI を使っているとき、もしくは端末の abs( {expr}) 浮動小数点数または数値 {expr}の絶対値 acos( {expr}) 浮動小数点数 {expr}のアークコサイン add( {list}, {item}) リスト {item}をリスト{list}に追加する +alloc_fail( {id}, {countdown}, {repeat}) + none make memory allocation fail and( {expr}, {expr}) 数値 ビット論理積 append( {lnum}, {string}) 数値 {string}を{lnum}行目に付け加える append( {lnum}, {list}) 数値 行{list}を{lnum}行目に付け加える argc() 数値 引数内のファイルの数 argidx() 数値 引数リスト内の現在のインデックス -arglistid( [{winnr}, [ {tabnr}]]) +arglistid( [{winnr} [, {tabnr}]]) 数値 引数リストID argv( {nr}) 文字列 引数の第{nr}番目 argv( ) リスト 引数リスト +assert_equal( {exp}, {act} [, {msg}]) none assert {exp} equals {act} +assert_exception({error} [, {msg}]) none assert {error} is in v:exception +assert_fails( {cmd} [, {error}]) none assert {cmd} fails +assert_false( {actual} [, {msg}]) none assert {actual} is false +assert_true( {actual} [, {msg}]) none assert {actual} is true asin( {expr}) 浮動小数点数 {expr}のアークサイン atan( {expr}) 浮動小数点数 {expr}のアークタンジェント atan2( {expr}, {expr}) 浮動小数点数 {expr1} / {expr2} のアークタン @@ -1711,6 +1774,8 @@ complete_add( {expr}) 数値 補完候補を追加する complete_check() 数値 補完中に押されたキーをチェックする confirm( {msg} [, {choices} [, {default} [, {type}]]]) 数値 ユーザーへの選択肢と番号 +connect( {address}, {mode} [, {callback}]) + Number open a channel copy( {expr}) 任意 {expr}の浅いコピーを作る cos( {expr}) 浮動小数点数 {expr} の余弦(コサイン) cosh( {expr}) 浮動小数点数 {expr}のハイパボリックコサイン @@ -1722,7 +1787,7 @@ cursor( {lnum}, {col} [, {off}]) 数値 カーソルを{lnum}, {col}, {off}へ移動 cursor( {list}) 数値 カーソルを{list}の位置へ移動 deepcopy( {expr} [, {noref}]) 任意 {expr}の完全なコピーを作る -delete( {fname}) 数値 ファイル{fname}を消す +delete( {fname} [, {flags}]) 数値 ファイルやディレクトリ{fname}を消す did_filetype() 数値 FileTypeのautocommandが実行されたか? diff_filler( {lnum}) 数値 差分モードで{lnum}に挿入された行 diff_hlID( {lnum}, {col}) 数値 差分モードで{lnum}/{col}位置の強調 @@ -1768,12 +1833,15 @@ getbufline( {expr}, {lnum} [, {end}]) リスト バッファ{expr}の{lnum}から{end}行目 getbufvar( {expr}, {varname} [, {def}]) 任意 バッファ{expr}の変数 {varname} +getchar( [expr]) Number get one character from the user +getcharmod( ) Number modifiers for the last typed character +getcharsearch() Dict last character search getcmdline() 文字列 現在のコマンドラインを取得 getcmdpos() 数値 コマンドラインのカーソル位置を取得 getcmdtype() 文字列 現在のコマンドラインの種類を取得 getcmdwintype() 文字列 現在のコマンドラインウィンドウの種類 getcurpos() リスト カーソルの位置 -getcwd() 文字列 現在の作業ディレクトリ +getcwd( [{winnr} [, {tabnr}]]) 文字列 現在の作業ディレクトリを取得 getfontname( [{name}]) 文字列 使用しているフォントの名前 getfperm( {fname}) 文字列 ファイル{fname}の許可属性を取得 getfsize( {fname}) 数値 ファイル{fname}のバイト数を取得 @@ -1805,7 +1873,8 @@ globpath( {path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]]) glob({expr})を行う has( {feature}) 数値 機能{feature}がサポートならばTRUE has_key( {dict}, {key}) 数値 {dict}が要素{key}を持つならTRUE -haslocaldir() 数値 現在のウィンドウで|:lcd|が実行された +haslocaldir( [{winnr} [, {tabnr}]]) + 数値 現在のウィンドウで|:lcd|が実行された ならTRUE hasmapto( {what} [, {mode} [, {abbr}]]) 数値 {what}へのマッピングが存在するならTRUE @@ -1833,6 +1902,8 @@ isdirectory( {directory}) 数値 {directory}がディレクトリならばTRUE islocked( {expr}) 数値 {expr}がロックされているならTRUE items( {dict}) リスト {dict}のキーと値のペアを取得 join( {list} [, {sep}]) 文字列 {list}の要素を連結して文字列にする +jsondecode( {string}) any decode JSON +jsonencode( {expr}) String encode JSON keys( {dict}) リスト {dict}のキーを取得 len( {expr}) 数値 {expr}の長さを取得 libcall( {lib}, {func}, {arg} 文字列 ライブラリ{lib}の関数{func}をコール @@ -1875,6 +1946,7 @@ nextnonblank( {lnum}) 数値 {lnum}行目以降で空行でない行の行番 nr2char( {expr}[, {utf8}]) 文字列 ASCII/UTF8コード{expr}で示される文字 or( {expr}, {expr}) 数値 ビット論理和 pathshorten( {expr}) 文字列 path内の短縮したディレクトリ名 +perleval( {expr}) any evaluate |Perl| expression pow( {x}, {y}) 浮動小数点数 {x} の {y} 乗 prevnonblank( {lnum}) 数値 {lnum}行目以前の空行でない行の行番号 printf( {fmt}, {expr1}...) 文字列 文字列を組み立てる @@ -1916,11 +1988,16 @@ searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [...]]]) リスト 開始/終端のペアの他方を検索 searchpos( {pattern} [, {flags} [, {stopline} [, {timeout}]]]) リスト {pattern}を検索 +sendexpr( {handle}, {expr} [, {callback}]) + any send {expr} over JSON channel {handle} +sendraw( {handle}, {string} [, {callback}]) + any send {string} over raw channel {handle} server2client( {clientid}, {string}) 数値 返信文字列を送信する serverlist() 文字列 利用可能なサーバーのリストを取得 setbufvar( {expr}, {varname}, {val}) バッファ{expr}内の変数{varname}に{val} をセット +setcharsearch( {dict}) Dict set character search from {dict} setcmdpos( {pos}) 数値 コマンドライン内のカーソル位置を設定 setline( {lnum}, {line}) 数値 行{lnum}に{line}(文字列)をセット setloclist( {nr}, {list}[, {action}]) @@ -2015,6 +2092,7 @@ winrestcmd() 文字列 ウィンドウサイズを復元するコマンド winrestview( {dict}) なし 現在のウィンドウのビューを復元 winsaveview() 辞書 現在のウィンドウのビューを保存 winwidth( {nr}) 数値 ウィンドウ{nr}の幅を取得 +wordcount() Dict get byte/char/word statistics writefile( {list}, {fname} [, {flags}]) 数値 行のリストをファイル{fname}に書き込む xor( {expr}, {expr}) 数値 ビット排他的論理和 @@ -2108,6 +2186,55 @@ argv([{nr}]) 結果は引数リスト内の、{nr}番目のファイル。|argli < 引数{nr}が指定されなかった場合は、引数リスト|arglist|全体を 返す。 + *assert_equal()* +assert_equal({expected}, {actual} [, {msg}]) + When {expected} and {actual} are not equal an error message is + added to |v:errors|. + There is no automatic conversion, the String "4" is different + from the Number 4. And the number 4 is different from the + Float 4.0. The value of 'ignorecase' is not used here, case + always matters. + When {msg} is omitted an error in the form "Expected + {expected} but got {actual}" is produced. + Example: > + assert_equal('foo', 'bar') +< Will result in a string to be added to |v:errors|: + test.vim line 12: Expected 'foo' but got 'bar' ~ + +assert_exception({error} [, {msg}]) *assert_exception()* + When v:exception does not contain the string {error} an error + message is added to |v:errors|. + This can be used to assert that a command throws an exception. + Using the error number, followed by a colon, avoids problems + with translations: > + try + commandthatfails + call assert_false(1, 'command should have failed') + catch + call assert_exception('E492:') + endtry + +assert_fails({cmd} [, {error}]) *assert_fails()* + Run {cmd} and add an error message to |v:errors| if it does + NOT produce an error. + When {error} is given it must match |v:errmsg|. + +assert_false({actual} [, {msg}]) *assert_false()* + When {actual} is not false an error message is added to + |v:errors|, like with |assert_equal()|. + A value is false when it is zero. When "{actual}" is not a + number the assert fails. + When {msg} is omitted an error in the form "Expected False but + got {actual}" is produced. + +assert_true({actual} [, {msg}]) *assert_true()* + When {actual} is not true an error message is added to + |v:errors|, like with |assert_equal()|. + A value is true when it is a non-zero number. When {actual} + is not a number the assert fails. + When {msg} is omitted an error in the form "Expected True but + got {actual}" is produced. + asin({expr}) *asin()* {expr} の逆正弦 (アークサイン) をラジアンで返す。 値は [-pi/2, pi/2] の範囲の浮動小数点数 (|Float|)。 @@ -2479,6 +2606,18 @@ confirm({msg} [, {choices} [, {default} [, {type}]]]) は、垂直配置が使われる。幾つかのシステムでは常に水平配置が使わ れる。 +connect({address}, {mode} [, {callback}]) *connect()* + Open a channel to {address}. See |channel|. + + {address} has the form "hostname:port", e.g., + "localhost:8765". + + {mode} is either "json" or "raw". See |channel-mode| for the + meaning. + + {callback} is a function that handles received messages on the + channel. See |channel-callback|. + *copy()* copy({expr}) {expr}のコピーを作る。数値と文字列の場合は、{expr}そのものとコ ピーの間に違いはない。 @@ -2600,10 +2739,20 @@ deepcopy({expr}[, {noref}]) *deepcopy()* *E698* 要素があると、{noref}が1の場合は失敗する。 |copy()|も参照。 -delete({fname}) *delete()* - {fname}という名前のファイルを削除する。戻り値は数値で、削除に - 成功したら0、失敗したら0以外が返る。 - リスト|List|から要素を削除するには|remove()|を使う。 +delete({fname} [, {flags}]) *delete()* + Without {flags} or with {flags} empty: Deletes the file by the + name {fname}. This also works when {fname} is a symbolic link. + + When {flags} is "d": Deletes the directory by the name + {fname}. This fails when directory {fname} is not empty. + + When {flags} is "rf": Deletes the directory by the name + {fname} and everything in it, recursively. BE CAREFUL! + A symbolic link itself is deleted, not what it points to. + + The result is a Number, which is 0 if the delete operation was + successful and -1 when the deletion failed or partly failed. + バッファから行を削除するには|:delete|を使う。行番号が変数に入っ ている場合は|:exe|を使う。 @@ -2638,6 +2787,7 @@ empty({expr}) *empty()* {expr}が空なら1を、そうでなければ0を返す。 リスト|List|または辞書|Dictionary|は要素を1個も持たないとき空 とみなされる。数値は値が0のとき空とみなされる。 + |v:false|, |v:none| and |v:null| are empty, |v:true| is not. 長いリストに対しては長さを0と比較するよりこちらの方がずっと高 速である。 @@ -2918,6 +3068,11 @@ feedkeys({string} [, {mode}]) *feedkeys()* マッピングから展開されたかのように扱われる。これは undoや折り畳みの展開などで違いが現れる。 'i' 追加する代わりに文字を挿入する。(上記参照) + 'x' Execute commands until typeahead is empty. This is + similar to using ":normal!". You can call feedkeys() + several times without 'x' and then one time with 'x' + (possibly with an empty {string}) to execute all the + typeahead. 戻り値は常に0。 *filereadable()* @@ -3264,6 +3419,26 @@ getcharmod() *getcharmod()* 文字自身に含まれていない修飾キーのみ取得できる。つまり、 Shift-aは修飾キーなしの "A" となる。 +getcharsearch() *getcharsearch()* + Return the current character search information as a {dict} + with the following entries: + + char character previously used for a character + search (|t|, |f|, |T|, or |F|); empty string + if no character search has been performed + forward direction of character search; 1 for forward, + 0 for backward + until type of character search; 1 for a |t| or |T| + character search, 0 for an |f| or |F| + character search + + This can be useful to always have |;| and |,| search + forward/backward regardless of the direction of the previous + character search: > + :nnoremap <expr> ; getcharsearch().forward ? ';' : ',' + :nnoremap <expr> , getcharsearch().forward ? ',' : ';' +< Also see |setcharsearch()|. + getcmdline() *getcmdline()* 現在のコマンドラインの内容を取得する。コマンドラインを編集して いるときのみ動作する。つまり|c_CTRL-\_e|または|c_CTRL-R_=|を使っ @@ -3301,7 +3476,7 @@ getcmdwintype() *getcmdwintype()* *getcurpos()* getcurpos() カーソルの位置を返す。これは getpos('.') に似ているが、追加の 情報を含む: - [bufnum, lnum, col, off, curswant] + [bufnum, lnum, col, off, curswant] ~ "curswant" は縦方向移動の優先的列番号である。 次のようにしてカーソル位置の保存と復元ができる: > let save_cursor = getcurpos() @@ -3309,7 +3484,16 @@ getcurpos() カーソルの位置を返す。これは getpos('.') に似てい call setpos('.', save_cursor) < *getcwd()* -getcwd() 結果は文字列で、現在のディレクトリ名。 +getcwd([{winnr} [, {tabnr}]]) + The result is a String, which is the name of the current + working directory. + Without arguments, for the current window. + + With {winnr} return the local current directory of this window + in the current tab page. + With {winnr} and {tabnr} return the local current directory of + the window in the specified tab page. + Return an empty string if the arguments are invalid. getfsize({fname}) *getfsize()* 結果は数値で、{fname}で指定されるファイルのサイズをバイト単位 @@ -3368,6 +3552,8 @@ getftype({fname}) *getftype()* getftype("/home") < Note "link" などの種別はそれをサポートしているシステムでのみ返 される。"dir" と "file" しか返らないシステムもある。 + On MS-Windows a symbolic link to a + directory returns "dir" instead of "link". *getline()* getline({lnum} [, {end}]) @@ -3629,10 +3815,15 @@ has_key({dict}, {key}) *has_key()* 結果は数値で、辞書|Dictionary| {dict}がキー{key}の要素を持つな ら1、持たないなら0となる。 -haslocaldir() *haslocaldir()* - 結果は数値でカレントウィンドウが|:lcd|によってローカルなカレン - トディレクトリを持つようセットされているなら1、そうでないなら - 0となる。 +haslocaldir([{winnr} [, {tabnr}]]) *haslocaldir()* + 結果は数値でウィンドウが|:lcd|によってローカルなカレントディレ + クトリを持つようセットされているなら1、そうでないなら0となる。 + + Without arguments use the current window. + With {winnr} use this window in the current tab page. + With {winnr} and {tabnr} use the window in the specified tab + page. + Return 0 if the arguments are invalid. hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()* 結果は数値。右辺側(マップした先)の一部分に{what}を含むマッピン @@ -3949,6 +4140,48 @@ join({list} [, {sep}]) *join()* |string()|を使ったときと同じようにして文字列に変換される。 この逆を行う関数は|split()|である。 +jsondecode({string}) *jsondecode()* + This parses a JSON formatted string and returns the equivalent + in Vim values. See |jsonencode()| for the relation between + JSON and Vim values. + The decoding is permissive: + - A trailing comma in an array and object is ignored. + - An empty item in an array, two commas with nothing or white + space in between, results in v:none. + - When an object member name is not a string it is converted + to a string. E.g. the number 123 is used as the string + "123". + - More floating point numbers are recognized, e.g. "1." for + "1.0". + The result must be a valid Vim type: + - An empty object member name is not allowed. + - Duplicate object member names are not allowed. + +jsonencode({expr}) *jsonencode()* + Encode {expr} as JSON and return this as a string. + The encoding is specified in: + https://tools.ietf.org/html/rfc7159.html + Vim values are converted as follows: + Number decimal number + Float floating point number + String in double quotes (possibly null) + Funcref not possible, error + List as an array (possibly null); when + used recursively: [] + Dict as an object (possibly null); when + used recursively: {} + v:false "false" + v:true "true" + v:none nothing + v:null "null" + Note that using v:none is permitted, although the JSON + standard does not allow empty items. This can be useful for + omitting items in an array: + [0,,,,,5] ~ + This is much more efficient than: + [0,null,null,null,null,5] ~ + But a strict JSON parser will not accept it. + keys({dict}) *keys()* {dict}の全キーからなるリストを返す。リストの順序は不定である。 @@ -4259,7 +4492,7 @@ match({expr}, {pat}[, {start}[, {count}]]) *match()* 'magic' をオン、'cpoptions' を空にした状態で行われる。 *matchadd()* *E798* *E799* *E801* -matchadd({group}, {pattern}[, {priority}[, {id}]]) +matchadd({group}, {pattern}[, {priority}[, {id} [, {dict}]]]) カレントウィンドウで強調表示するパターンを定義する。このパター ンのことを「マッチ」と呼ぶ。構文グループ {group}で強調する。戻 り値は、マッチを識別する ID である。|matchdelete()|でこの ID @@ -4267,6 +4500,8 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) パターンは大文字小文字を区別し、magic (|/magic|) として解釈さ れる ({pattern} の中で明示的に変更しない限り)。オプションの 'magic'、'smartcase'、'ignorecase' は使用されない。 + The "Conceal" value is special, it causes the match to be + concealed. 省略可能な引数 {priority} はマッチの優先度を指定する。優先度が 高いマッチは、より低いマッチの強調を上書きする。優先度は整数で @@ -4280,8 +4515,17 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) すでに使われていたら、エラーメッセージが表示され、そのマッチは 登録されない。ID は正の整数を指定する(ゼロは除く)。ID 1, 2, 3 は |:match|, |:2match|, |:3match| 用に予約されている。{id} が - 指定されないときは、|matchadd()| が自動的に空いている ID を取 - 得する。 + 指定されないか -1 のときは、|matchadd()| が自動的に空いている + ID を取得する。 + + The optional {dict} argument allows for further custom + values. Currently this is used to specify a match specific + conceal character that will be shown for |hl-Conceal| + highlighted matches. The dict can have the following members: + + conceal Special character to show instead of the + match (only for |hl-Conceal| highlighed + matches, see |:syn-cchar|) コマンド |:match| と異なり、マッチの個数に上限はない。 @@ -4295,7 +4539,7 @@ matchadd({group}, {pattern}[, {priority}[, {id}]]) |getmatches()| で取得できる。全てのマッチを削除するのは |clearmatches()| 一発でできる。 -matchaddpos({group}, {pos}[, {priority}[, {id}]]) *matchaddpos()* +matchaddpos({group}, {pos}[, {priority}[, {id}[, {dict}]]]) *matchaddpos()* |matchadd()| と同じだが、パターンを指定するのではなく、位置の リスト {pos} を指定する。このコマンドは正規表現を扱う必要もな く、画面更新のためにバッファ行の境界を設定するため、 @@ -4502,6 +4746,17 @@ pathshorten({expr}) *pathshorten()* < ~/.v/a/myfile.vim ~ パスが実際に存在するかどうかは関係ない。 +perleval({expr}) *perleval()* + Evaluate Perl expression {expr} in scalar context and return + its result converted to Vim data structures. If value can't be + converted, it is returned as a string Perl representation. + Note: If you want an array or hash, {expr} must return a + reference to it. + Example: > + :echo perleval('[1 .. 4]') +< [1, 2, 3, 4] + {only available when compiled with the |+perl| feature} + pow({x}, {y}) *pow()* {x} の {y} 乗を |Float| で返す。{x} と {y} は |Float| または |Number| に評価されなければならない。 @@ -4954,13 +5209,14 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* {flags} は以下のフラグ文字からなる文字列 'b' 後方(上方)に検索する - 'c' カーソル位置のマッチを受け入れる + 'c' カーソル位置のマッチを受け入れる 'e' マッチの末尾へ移動する 'n' カーソルを移動させない 'p' 部分パターン(後述)のマッチの番号を返す 's' 以前のカーソル位置をマーク ' に記録する 'w' ファイルの末尾で循環する 'W' ファイルの末尾で循環しない + 'z' start searching at the cursor column instead of zero 'w' と 'W' の両方とも指定されない場合は 'wrapscan' が適用され る。 @@ -4969,6 +5225,12 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()* 'ignorecase', 'smartcase', 'magic' が適用される。 + When the 'z' flag is not given, searching always starts in + column zero and then matches before the cursor are skipped. + When the 'c' flag is present in 'cpo' the next search starts + after the match. Without the 'c' flag the next search starts + one column further. + 引数{stopline}が指定されたときはこの行を検索した後で検索を停止 する。これは検索する行を制限するために有用である。例: > let match = search('(', 'b', line("w0")) @@ -5143,6 +5405,23 @@ searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *searchpos()* < この例において、"submatch" は小文字|/\l|が見つかったとき2とな り、大文字|/\u|が見つかったとき3となる。 +sendexpr({handle}, {expr} [, {callback}]) *sendexpr()* + Send {expr} over JSON channel {handle}. See |channel-use|. + + When {callback} is given returns immediately. Without + {callback} waits for a JSON response and returns the decoded + expression. When there is an error or timeout returns an + empty string. + + When {callback} is zero no response is expected. + Otherwise {callback} must be a Funcref or the name of a + function. It is called when the response is received. See + |channel-callback|. + +sendraw({handle}, {string} [, {callback}]) *sendraw()* + Send {string} over raw channel {handle}. See |channel-raw|. + Works like |sendexpr()|, but does not decode the response. + server2client( {clientid}, {string}) *server2client()* {clientid}に返信文字列を送る。最後に文字列を送った{clientid}は expand("<client>")で取得できる。 @@ -5176,6 +5455,26 @@ setbufvar({expr}, {varname}, {val}) *setbufvar()* :call setbufvar("todo", "myvar", "foobar") < サンドボックスの中ではこの関数は使用できない。 +setcharsearch({dict}) *setcharsearch()* + Set the current character search information to {dict}, + which contains one or more of the following entries: + + char character which will be used for a subsequent + |,| or |;| command; an empty string clears the + character search + forward direction of character search; 1 for forward, + 0 for backward + until type of character search; 1 for a |t| or |T| + character search, 0 for an |f| or |F| + character search + + This can be useful to save/restore a user's character search + from a script: > + :let prevsearch = getcharsearch() + :" Perform a command which clobbers user's search + :call setcharsearch(prevsearch) +< Also see |getcharsearch()|. + setcmdpos({pos}) *setcmdpos()* コマンドラインの{pos}バイトの位置へカーソルを移動する。 {pos}は1から始まる。 @@ -5413,17 +5712,8 @@ shellescape({string} [, {special}]) *shellescape()* shiftwidth() *shiftwidth()* 実際に使用される 'shiftwidth' の値を返す。'shiftwidth' がゼロ 以外の場合はその値が返る。ゼロの場合は 'tabstop' の値が返る。 - インデントプラグインで後方互換性を保つには次のようにする: > - if exists('*shiftwidth') - func s:sw() - return shiftwidth() - endfunc - else - func s:sw() - return &sw - endfunc - endif -< そして、&sw の代わりに s:sw() を使う。 + この関数は2012年のパッチ 7.3.694 で導入されたので、現在では皆 + 使えるようになっているに違いない。 simplify({filename}) *simplify()* @@ -5481,6 +5771,13 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702* 細: 数値の読み込みには strtod() 関数が使われる。文字列、リス ト、辞書、関数参照は 0 として扱われる)。 + When {func} is given and it is 'N' then all items will be + sorted numerical. This is like 'n' but a string containing + digits will be used as the number they represent. + + When {func} is given and it is 'f' then all items will be + sorted numerical. All values must be a Number or a Float. + {func}に|Funcref|または関数名を指定すると、その関数を使って要 素を比較する。その関数は2つの要素を引数として受け取り、それら が等しいときは0、1番目の引数を2番目より後にするなら1以上、1番 @@ -5580,7 +5877,7 @@ split({expr} [, {pattern} [, {keepempty}]]) *split()* < 文字列を各文字に分割するには: > :for c in split(mystring, '\zs') < 区切り文字を削除せず、そのままにしておきたい場合は、'\zs' を - 使えばよい: > + パターンの最後で使う: > :echo split('abc:def:ghi', ':\zs') < ['abc:', 'def:', 'ghi'] ~ 最初の要素が空であるかもしれないテーブルを分割するには: > @@ -5618,12 +5915,14 @@ str2float( {expr}) *str2float()* str2nr( {expr} [, {base}]) *str2nr()* 文字列{expr}を数値に変換する。 - {base}は変換の底。8、10、16のいずれか。 + {base}は変換の底。2、8、10、16のいずれか。 {base}を省略すると10となる。そのため、文字列の先頭に0があると き、デフォルトの文字列・数値変換とは異なり、8進数とは解釈され ない。 {base}が16のとき、文字列の先頭の "0x" と "0X" は無視される。そ - れ以外の底の場合は0となる。 + れ以外の底の場合は0となる。 Similarly, when + {base} is 8 a leading "0" is ignored, and when {base} is 2 a + leading "0b" or "0B" is ignored. 数値の後のテキストは暗黙に無視される。 strchars({expr} [, {skipcc}]) *strchars()* @@ -5634,6 +5933,24 @@ strchars({expr} [, {skipcc}]) *strchars()* {訳注: 基底文字と結合文字をまとめて1としてカウントする} |strlen()|, |strdisplaywidth()|, |strwidth()| も参照。 + + {skipcc} is only available after 7.4.755. For backward + compatibility, you can define a wrapper function: > + if has("patch-7.4.755") + function s:strchars(str, skipcc) + return strchars(a:str, a:skipcc) + endfunction + else + function s:strchars(str, skipcc) + if a:skipcc + return strlen(substitute(a:str, ".", "x", "g")) + else + return strchars(a:str) + endif + endfunction + endif +< + strdisplaywidth({expr}[, {col}]) *strdisplaywidth()* 結果は数値で、文字列 {expr} が {col} で始まる時のスクリーン上 での表示セル幅を返す。 @@ -5818,6 +6135,9 @@ synID({lnum}, {col}, {trans}) *synID()* 最左のカラムを指定するには{col}に1を、最初の行を指定するには {line}に1を指定する。'synmaxcol' が適用され、長すぎる行では0が 返ってくる。 + Note that when the position is after the last character, + that's where the cursor can be in Insert mode, synID() returns + zero. {trans}が非ゼロならば、透過属性のアイテムは省略され、実際に表 示されているアイテムが評価対象になる。これは実際に有効になって @@ -6116,6 +6436,8 @@ type({expr}) {expr}の型を示す数値を返す: リスト: 3 辞書: 4 浮動小数点数: 5 + Boolean: 6 (v:false and v:true) + None 7 (v:null and v:none) マジックナンバーを使わずに、次のような使い方をすべきである: > :if type(myvar) == type(0) :if type(myvar) == type("") @@ -6123,6 +6445,8 @@ type({expr}) {expr}の型を示す数値を返す: :if type(myvar) == type([]) :if type(myvar) == type({}) :if type(myvar) == type(0.0) + :if type(myvar) == type(v:false) + :if type(myvar) == type(v:none undofile({name}) *undofile()* {name} という名前のファイルの保存時に使用されるアンドゥファイ @@ -6360,6 +6684,27 @@ winwidth({nr}) *winwidth()* : exe "normal 50\<C-W>|" :endif < +wordcount() *wordcount()* + The result is a dictionary of byte/chars/word statistics for + the current buffer. This is the same info as provided by + |g_CTRL-G| + The return value includes: + bytes Number of bytes in the buffer + chars Number of chars in the buffer + words Number of words in the buffer + cursor_bytes Number of bytes before cursor position + (not in Visual mode) + cursor_chars Number of chars before cursor position + (not in Visual mode) + cursor_words Number of words before cursor position + (not in Visual mode) + visual_bytes Number of bytes visually selected + (only in Visual mode) + visual_chars Number of chars visually selected + (only in Visual mode) + visual_words Number of chars visually selected + (only in Visual mode) + *writefile()* writefile({list}, {fname} [, {flags}]) |List| {list}をファイル{fname}に書き込む。リストの各要素は改行 diff --git a/doc/if_lua.jax b/doc/if_lua.jax index e3517d8a4..83e4755d6 100644 --- a/doc/if_lua.jax +++ b/doc/if_lua.jax @@ -1,4 +1,4 @@ -*if_lua.txt* For Vim バージョン 7.4. Last change: 2012 Jun 29 +*if_lua.txt* For Vim バージョン 7.4. Last change: 2015 Oct 16 VIMリファレンスマニュアル by Luis Carvalho @@ -10,9 +10,11 @@ Vim の Lua インターフェイス *lua* *Lua* 2. vim モジュール |lua-vim| 3. List ユーザーデータ |lua-list| 4. Dict ユーザーデータ |lua-dict| -5. バッファユーザーデータ |lua-buffer| -6. ウィンドウユーザーデータ |lua-window| -7. luaeval 関数 |lua-luaeval| +5. Funcref userdata |lua-funcref| +6. バッファユーザーデータ |lua-buffer| +7. ウィンドウユーザーデータ |lua-window| +8. luaeval 関数 |lua-luaeval| +9. Dynamic loading |lua-dynamic| {Vi にはこれらのコマンドはありません} @@ -110,9 +112,31 @@ Lua からは "vim" モジュールを使って Vim を操作します。範囲 バッファ操作、ウィンドウ操作、現在行の取得、Vim 式評価、Vim コマンド実行、など のルーチンが含まれています。 - vim.list() 空のリストを返す (|List| 参照)。 - - vim.dict() 空の辞書を返す (|Dictionary| 参照)。 + vim.list([arg]) Returns an empty list or, if "arg" is a Lua + table with numeric keys 1, ..., n (a + "sequence"), returns a list l such that l[i] = + arg[i] for i = 1, ..., n (see |List|). + Non-numeric keys are not used to initialize + the list. See also |lua-eval| for conversion + rules. Example: > + :lua t = {math.pi, false, say = 'hi'} + :echo luaeval('vim.list(t)') + :" [3.141593, 0], 'say' is ignored +< + vim.dict([arg]) Returns an empty dictionary or, if "arg" is a + Lua table, returns a dict d such that d[k] = + arg[k] for all string keys k in "arg" (see + |Dictionary|). Number keys are converted to + strings. Keys that are not strings are not + used to initialize the dictionary. See also + |lua-eval| for conversion rules. Example: > + :lua t = {math.pi, false, say = 'hi'} + :echo luaeval('vim.dict(t)') + :" {'say': 'hi'}, numeric keys ignored +< + vim.funcref({name}) Returns a Funcref to function {name} (see + |Funcref|). It is equivalent to Vim's + "function". NOT IMPLEMENTED YET vim.buffer([arg]) "arg" が数値ならバッファリストの "arg" 番の バッファを返す。"arg" が文字列ならフルパスか @@ -131,9 +155,9 @@ Lua からは "vim" モジュールを使って Vim を操作します。範囲 vim.type({arg}) {arg} の型を返す。これは Lua の "type" 関数と 同じようなものですが、{arg} がリスト、辞書、 - バッファ、ウィンドウのときに、 "list"、 - "dict"、"buffer"、"window" をそれぞれ返しま - す。例: > + 関数参照、バッファ、ウィンドウのときに、 + "list"、"dict"、"funcref"、"buffer"、"window" + をそれぞれ返します。例: > :lua l = vim.list() :lua print(type(l), vim.type(l)) :" userdata list @@ -226,7 +250,40 @@ list ユーザーデータと同様、dict ユーザーデータは vim の辞 < ============================================================================== -5. バッファユーザーデータ *lua-buffer* +5. Funcref userdata *lua-funcref* + +Funcref userdata represent funcref variables in Vim. Funcrefs that were +defined with a "dict" attribute need to be obtained as a dictionary key +in order to have "self" properly assigned to the dictionary (see examples +below.) A funcref "f" has the following properties: + +Properties +---------- + o "#f" is the name of the function referenced by "f" + o "f(...)" calls the function referenced by "f" (with arguments) + +Examples: +> + :function I(x) + : return a:x + : endfunction + :let R = function('I') + :lua i1 = vim.funcref('I') + :lua i2 = vim.eval('R') + :lua print(#i1, #i2) -- both 'I' + :lua print(i1, i2, #i2(i1) == #i1(i2)) + :function Mylen() dict + : return len(self.data) + : endfunction + :let mydict = {'data': [0, 1, 2, 3]} + :lua d = vim.eval('mydict'); d.len = vim.funcref('Mylen') + :echo mydict.len() + :lua l = d.len -- assign d as 'self' + :lua print(l()) +< + +============================================================================== +6. バッファユーザーデータ *lua-buffer* バッファユーザーデータは Vim のバッファを表します。バッファユーザーデータ "b" は以下のプロパティとメソッドを持っています: @@ -277,7 +334,7 @@ list ユーザーデータと同様、dict ユーザーデータは vim の辞 < ============================================================================== -6. ウィンドウユーザーデータ *lua-window* +7. ウィンドウユーザーデータ *lua-window* ウィンドウオブジェクトは Vim のウィンドウを表します。ウィンドウユーザーデータ "w" は以下のプロパティとメソッドを持っています: @@ -309,7 +366,7 @@ list ユーザーデータと同様、dict ユーザーデータは vim の辞 < ============================================================================== -7. luaeval 関数 *lua-luaeval* *lua-eval* +8. luaeval 関数 *lua-luaeval* *lua-eval* "luaeval" は "vim.eval" と対となる関数で Lua の値を Vim に渡すことができます。 "luaeval" は式文字列と任意の引数を受け取り、式の結果を返します。意味的には次の @@ -321,7 +378,13 @@ Lua コードと同じです: return chunk(arg) -- return typval end < -Note "_A" には "luaeval" の引数が渡されます。例: > +Note "_A" には "luaeval" の引数が渡されます。 Lua numbers, strings, and +list, dict, and funcref userdata are converted to their Vim respective types, +while Lua booleans are converted to numbers. An error is thrown if conversion +of any of the remaining Lua types, including userdata other than lists, dicts, +and funcrefs, is attempted. + +例: > :echo luaeval('math.pi') :lua a = vim.list():add('newlist') @@ -333,5 +396,24 @@ Note "_A" には "luaeval" の引数が渡されます。例: > :echo Rand(1,10) +============================================================================== +9. Dynamic loading *lua-dynamic* + +On MS-Windows and Unix the Lua library can be loaded dynamically. The +|:version| output then includes |+lua/dyn|. + +This means that Vim will search for the Lua DLL or shared library file only +when needed. When you don't use the Lua interface you don't need it, thus +you can use Vim without this file. + +On MS-Windows to use the Lua interface the Lua DLL must be in your search path. +In a console window type "path" to see what directories are used. The version +of the DLL must match the Lua version Vim was compiled with. + +On Unix the 'luadll' option can be used to specify the Lua shared library file +instead of DYNAMIC_LUA_DLL file what was specified at compile time. The +version of the shared library must match the Lua version Vim was compiled with. + + ============================================================================== vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/doc/os_os2.jax b/doc/os_os2.jax index fca599bea..f278f613c 100644 --- a/doc/os_os2.jax +++ b/doc/os_os2.jax @@ -1,4 +1,4 @@ -*os_os2.txt* For Vim バージョン 7.4. Last change: 2007 Apr 22 +*os_os2.txt* For Vim バージョン 7.4. Last change: 2015 Dec 31 VIMリファレンスマニュアル by Paul Slootman @@ -7,202 +7,7 @@ *os2* *OS2* *OS/2* このファイルはVimのOS/2バージョンの詳細について述べている。 -現在のところ、VimのGUIバージョンのネイティブPMは存在しない: OS/2バージョンはコ -ンソールアプリケーションである。しかしながら、Warp4(Win32sをサポートしている) -のユーザーならば、Win-OS/2セッションで使用できるWin32s互換のGUIバージョンが存 -在する。このファイルではネイティブのコンソールバージョンについて言及する。 +OS/2 サポートはパッチ 7.4.1008 で削除された。 -注意 ~ - -このOS/2への移植版や、私 {訳注: 筆者Paul Slootman} や、何人かのOS/2ユーザーに -とってはちゃんと動作する;しかしフィードバックは少ししかもらえてないので、(OS/2 -特有の)バグがまったく(以下で言及するものを加えても)無いか、バグが現れるような -状況にまだ誰も至っていないのか、のどちらかである。DosとUnixモードでのファイル -入出力、バイナリモード、FATの取り扱いなどは、トラブルになっても良さそうだが、 -全て正しく動いている。 - -知られている問題の一つは、Vimによって開かれたファイルが、Vimのシェルエスケープ -経由で起動されたプログラムによって、継承されてしまうことである。これは特に、そ -の時実行されていたほかのプログラムがあると、そのプログラムが終了するまで、Vim -がバッファに関連付けられたスワップファイルを消すことができないことを意味する。 -スワップファイルを消す時に、Vimは消去に失敗してしまうので結局消すことができな -い。そのファイルに対して再びVimセッションを開始しようとすると、警告メッセージ -を受け取ることになる。これは ":!start epm" とすると再現できる。Vimを一度終了し、 -epmをスタートした時に編集していたファイルを開いてみよう。いま、これの修正を試 -みている。 - -2つ目の問題は、OS/2システムをUnixに対してtelnetしてVimを起動したように、ネット -ワーク経由で使用している状況を、Vimが検出できないことにある。OS/2が「時々」 -ファンクションやカーソルキーを認識し、対応する普通のPCのキーボードから生成され -るOS/2のコードへ変換することから、生じる問題のようである。既に幾つか実験はして -いる(OS/2コードを正しい機能にマッピングしたり)が、最終的なことは何も言えない -(余談だがこれはWarp 3で起こる)。そのうち正しく理解されるだろう。 - - -必要条件 ~ - -Vimを実行するために、emxのランタイム環境が必要になる(最新版は0.9b)。大体次の名 -前で存在する(それについてArchieに聞け {訳注: 本当?}): - - emxrt.zip emx runtime package - -LIBPATHに示されるディレクトリのどれかに置くべき、emx.dllのコピーを同梱してあ -る。EmxはGPLに基づき配布されるが、emx.dllライブラリはそうではない(どういう意味 -かはCOPYING.EMXを参照すればわかる)。 - -このemx.dllは、emxfix04.zipパッケージの中にあったもので、残念なことにPOSIXの機 -能であるselect()にバグ持ちである。Vimの3.27よりも古いバージョンは起動する時に -ハングしてしまう(正確にはvimrcの読み込み中)。これが起こってしまうと、Vimが起動 -するまでに何回か<Enter>を叩くことになる。そんときゃVimを更新したほうが良い。 - - -ヘルプとVIMRCファイル ~ - -手に入れたVimのアーカイブを解凍し、解凍した場所からVimを直接起動すれば、Vimは -ランタイムに必要になるファイルや.vimrcを見つけることができるので、特に設定は要 -らない。 - -ランタイムファイルをバイナリとは別の場所に置くならば、環境変数VIMがヘルプファ -イルやシステムの .vimrc の場所を見つけるのに使用される。次のようなエントリを -CONFIG.SYSに書く: > - - SET VIM=c:/local/lib/vim - -このディレクトリに.vimrcファイルと、その他のVim用ファイルを置く。runtimeディレ -クトリをこのディレクトリにコピーする。Vimはバージョン毎に独自のruntimeディレク -トリを持っている。それは "c:/local/lib/vim/vim54" のように呼ばれる。これでこの -ようなVimのツリーができあがる: - c:/local/lib/vim/.vimrc - c:/local/lib/vim/vim54/filetype.vim - c:/local/lib/vim/vim54/doc/help.txt - etc. - -Note: OS/2をFATファイルシステムにインストールした場合に対応するため、.vimrc -ファイルは_vimrcでも構わない。Vimはまず.vimrcを探し、それに失敗したら同じ場所 -で_vimrcを探す。.vimrcもしくは_vimrcの存在が 'compatible' オプションに影響を与 -え、思わぬ副作用を生むことがある。|'compatible'| 参照。 - -OS/2でネットワークドライバを使用するならば、ネットワークドライブにVimをインス -トールすることができ(.vimrcファイルを含めて; これを「システム」vimrcファイルと -言う)、個人的な.vimrcのコピーを使う(これが「ユーザー」vimrcファイル)。ユーザー -vimrcファイルは環境変数HOMEに示されるディレクトリに置く。 - - -ファイル名内の環境変数 ~ - -環境変数HOMEは、ファイル名のなかで~が使用されたときにも使われ、":e ~/textfile" -はHOMEによって示されるディレクトリにある "textfile" を編集することになる。さら -にその他の環境変数も、":n $SRC/*.c" のようにファイル名の中に使用することができ -る。 - -環境変数HOMEha.viminfoファイルの位置を指定するのにも使われる(|viminfo-file|参 -照)。FATファイルシステム上に.viminfoを置くことには、申し訳ないがまだ対応してい -ない。しかし、-iの起動フラグ("vim -i $HOME/_viminfo" のように)を試すことはでき -る。 - -環境変数HOMEが指定されていない場合は、デフォルトとして "C:/" が使用される。 - - -バックスラッシュ ~ - -スラッシュ('/')とバックスラッシュ('\')を使うと、ちょっとした問題がある(詳しい -説明は|dos-backslash|)が、Vimはほとんどの場合「正しい」判断をする。Vim自身も -ファイル名にバックスラッシュを使うが、しかし幸いにも入力されれば普通のスラッ -シュも受け付ける(実際、そうしたほうが都合が良い事がある)。 - - -一時ファイル ~ - -一時ファイル(フィルタリング用)は次に示すディレクトリで、ファイルを作成できた最 -初のディレクトリに置かれる: - $TMP - $TEMP - C:\TMP - C:\TEMP - 現在のディレクトリ - - -端末設定 ~ - - *os2ansi* -環境変数TERMには "os2ansi" を用いる(もしくは何もしない、デフォルトで正しく設定 -される)。他のアプリケーション用にTERMを別の値に設定しなければならない時には、 -.vimrcの中で端末としてos2ansiを設定することができる。OS/2のANSIエミュレーショ -ンにはかなり制限があることは問題である(例えば行単位での挿入や削除が無い)。 - -もしも(別のプログラムを使用しているとかで) TERMとして別の値を使いたいならば、 -TERMに設定する値が、termcapに適切なキーマッピングを持つエントリとして含まれて -いるか確認する。emxと一緒に配布されるtermcap.datが常にあるとは限らない。選択し -たtermcapエントリに付け加えるのに適当な値の幾つかがこれである; これらはカーソ -ルキーや、名前つき機能キー(pagedownとか)が効くようにしている。 - - :ku=\316H:kd=\316P:kl=\316K:kr=\316M:%i=\316t:#4=\316s:\ - :kD=\316S:kI=\316R:kN=\316Q:kP=\316I:kh=\316G:@7=\316O:\ - :k1=\316;:k2=\316<:k3=\316=:k4=\316>:k5=\316?:k6=\316@:\ - :k7=\316A:k8=\316B:k9=\316C:k;=\316D: - - -Paul Slootman - - -43行ウィンドウ ~ - -Steven Tryonが提案した、大きなウィンドウでVimを起動する方法: - -PMMailのようなOS/2 WPSのアプリケーションからVimを起動する時には、デフォルトの -25行モードで起動する。快適なウィンドウサイズで使うために、独自の拡張エディタを -"vimbig.cmd" として定義し、'vimbig2.cmd" を呼ぶようにする。多分、かなり強引な -方法だけど、でもちゃんと動く。 - -vimbig.cmd: > - @echo off - start "Vi Improved" /f vimbig2.cmd %1 %2 %3 %4 - -vimbig2.cmd: > - @echo off - mode 80,43 - vim.exe %1 %2 %3 %4 - exit -< - -クリップボードを使う (Alexander Wagnerの提供) - -OS/2版のVimはシステムのクリップボードに直接アクセスできない。クリップボードを -使うにはほかのアプリケーションを経由する必要がある。これには Stefan Gruendel -によるフリーソフトのパッケージ clipbrd.zip が使える。コンパイルされたバイナリ -と全てのソースがここからダウンロードできる: - http://www.os2site.com/sw/util/clipboard/index.html - http://download.uni-hd.de/ftp/pub/os2/pmtools/ - -このパッケージのインストールは、パッケージに入っている二つの実行可能ファイルを -Vimから呼び出せるようにPATHが通ったディレクトリに置くだけである。 - -クリップボードからVimにコピーするには :r コマンドを使う。次のようにして -clipbrd.exeを呼び出すだけだ: > - - :r !clipbrd -r - -Vimからシステムのクリップボードにコピーするには普通にテキストを選択して次の -ようにする: > - - :!clipbrd -w - -これで選択したものをOS/2のクリップボードに書き込める。 - -簡単に使えるようにこれらのコマンドをマッピングしておくとよい。例えばクリップ -ボードからVimに貼り付けるのに F11 を使い、選択したテキストをクリップボードにコ -ピーするのに F12 を使うなら: > - - if has("os2") - imap <F11> <ESC>:r !clipbrd -r<CR>i - vmap <F12> :!clipbrd -w<cr> - else - imap <F11> <ESC>"*p<CR>i - vmap <F12> "*y - endif - -これはOS/2では clipbrd を使い他のプラットフォームではVimの機能を使う。(この -機能をいつも有効にしておくには .vimrc に上記の内容を書いておく) - vim:tw=78:ts=8:ft=help:norl: From 0f2b6c39bb64ad85970c3a99105995071c9020c7 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 16:57:56 +0900 Subject: [PATCH 755/783] fix doc --- catchup-7.4.1194.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index c831d43b1..49addb180 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -33,10 +33,9 @@ doc/change.jax doc/develop.jax doc/editing.jax - doc/eval.jax doc/fold.jax doc/hangulin.jax - doc/if_lua.jax + doc/if_lua.jax # 100行超えたけど、内容的に大したことない doc/if_mzsch.jax doc/if_perl.jax doc/if_pyth.jax @@ -57,6 +56,8 @@ こっから先は100行超えるので、嫌。 + doc/eval.jax + ### 完訳! doc/cmdline.jax From d77bd19c47da96182aab4be133dea29c58fe97c6 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 17:51:52 +0900 Subject: [PATCH 756/783] more impose english --- catchup-7.4.1194.md | 6 +- doc/options.jax | 18 +++- doc/syntax.jax | 159 +++++++++++++++++++++------ doc/usr_02.jax | 257 +++++++++++++++++++++++++++++++++----------- doc/windows.jax | 156 +++++++++++++++++++-------- 5 files changed, 451 insertions(+), 145 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 49addb180..a671f4f62 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -21,9 +21,6 @@ doc/options.jax doc/pi_netrw.jax - doc/syntax.jax - doc/usr_02.jax - doc/windows.jax ### 英文だけは反映済み @@ -50,6 +47,7 @@ doc/spell.jax doc/tagsrch.jax doc/term.jax + doc/usr_02.jax # 行数は多いけど、まとまった書き換えで、楽そう doc/usr_03.jax doc/usr_41.jax doc/various.jax @@ -57,6 +55,8 @@ こっから先は100行超えるので、嫌。 doc/eval.jax + doc/syntax.jax + doc/windows.jax ### 完訳! diff --git a/doc/options.jax b/doc/options.jax index 31a7a95d7..794f4a4ec 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -1,4 +1,4 @@ -*options.txt* For Vim バージョン 7.4. Last change: 2014 Sep 09 +*options.txt* For Vim バージョン 7.4. Last change: 2016 Jan 19 VIMリファレンスマニュアル by Bram Moolenaar @@ -71,9 +71,19 @@ Vimには、特別な働きをさせるための多くの内部変数とスイ :se[t] {option}&vi オプションをViの既定値に設定する。 {Vi にはない} :se[t] {option}&vim オプションをVimの既定値に設定する。 {Vi にはない} -:se[t] all& ターミナルオプション以外の全てのオプションを既定値に設 - 定する。オプション 'term', 'lines' と 'columns' の値は - 変更されない。 {Vi にはない} +:se[t] all& 全てのオプションを規定値に設定する。ただし以下のオプ + ションについては変更しない。 + t_ で始まる端末用のオプション全部 + 'columns' + 'cryptmethod' + 'encoding' + 'key' + 'lines' + 'term' + 'ttymouse' + 'ttytype' + 警告: これにはたくさんの副作用があるだろう。 + {Vi にはない} *:set-args* *E487* *E521* :se[t] {option}={value} または diff --git a/doc/syntax.jax b/doc/syntax.jax index 845f4facb..03c8177ac 100644 --- a/doc/syntax.jax +++ b/doc/syntax.jax @@ -1,4 +1,4 @@ -*syntax.txt* For Vim バージョン 7.4. Last change: 2014 Sep 27 +*syntax.txt* For Vim バージョン 7.4. Last change: 2016 Jan 28 VIMリファレンスマニュアル by Bram Moolenaar @@ -210,7 +210,8 @@ NOTE: 長い行があって表示が遅く、構文ハイライトをオフに プそれ自体は、色や属性を指定するものではない。 ハイライトや構文グループの名前はASCII文字、数字、アンダースコアだけでつけなけ -ればならない。正規表現では: "[a-zA-Z0-9_]*" +ればならない。正規表現では: "[a-zA-Z0-9_]*" しかしそれ以外の文字を使ってもVim +はエラーを出力しない。 各ユーザーが好みの色セットを使用できるように、多くの言語に共通するハイライトグ ループには優先名が与えられている。推奨されているグループ名は以下のとおり(構文 @@ -723,6 +724,22 @@ UTF-8 を使用するが、代わりに UTF-16 や UTF-32 を使うようにす Note: UTF-32 か UTF-16 でエンコードされたドキュメントはいくつかのメジャーブラ ウザで互換性の問題があることが知られている。 + *g:html_font* +Default: "monospace" +You can specify the font or fonts used in the converted document using +g:html_font. If this option is set to a string, then the value will be +surrounded with single quotes. If this option is set to a list then each list +item is surrounded by single quotes and the list is joined with commas. Either +way, "monospace" is added as the fallback generic family name and the entire +result used as the font family (using CSS) or font face (if not using CSS). +Examples: > + + " font-family: 'Consolas', monospace; + :let g:html_font = "Consolas" + + " font-family: 'DejaVu Sans Mono', 'Consolas', monospace; + :let g:html_font = ["DejaVu Sans Mono", "Consolas"] +< *convert-to-XML* *convert-to-XHTML* *g:html_use_xhtml* 初期設定: 0 0 なら、標準 HTML 4.01 を生成する (可能なら strict)。 @@ -1038,7 +1055,8 @@ CPP *cpp.vim* *ft-cpp-syntax* 大部分は |ft-c-syntax| と同じ。 変数 強調表示 ~ -cpp_no_c11 C++11 標準のアイテムを強調表示しない +cpp_no_cpp11 C++11 標準のアイテムを強調表示しない +cpp_no_cpp14 C++14 標準のアイテムを強調表示しない CSH *csh.vim* *ft-csh-syntax* @@ -1102,6 +1120,16 @@ iniファイルをハイライトする。ただし次をvimrcファイルに書 :let enforce_freedesktop_standard = 1 +DIFF *diff.vim* + +The diff highlighting normally finds translated headers. This can be slow if +there are very long lines in the file. To disable translations: > + + :let diff_translations = 0 + +Also see |diff-slow|. + + DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* dircolorsユーティリティ用のハイライト定義には、Slackware GNU/Linuxディストリ @@ -1380,22 +1408,28 @@ Fortran のソースコードには固定形式と自由形式が有る。形式 :let fortran_fixed_source=1 これも.vimrcでコマンド:syntaxを実行する前に行う必要がある。 -ソースコードの形式がファイル拡張子によって決定できる場合には、ftpluginファイル -の1つでfortran_free_sourceを設定すると便利になる。ftpluginファイルについての詳 -細は|ftplugin|を参照のこと。例えば、拡張子.f90を持つファイルについては全て自由 -形式として扱い、それ以外のものは固定形式とする場合には、次のコードをftplugin -ファイルに記述すれば良い。 > - let s:extfname = expand("%:e") - if s:extfname ==? "f90" - let fortran_free_source=1 - unlet! fortran_fixed_source - else - let fortran_fixed_source=1 - unlet! fortran_free_source - endif -これは.vimrcで "syntax on" より前に "filetype plugin indent on" が書かれていな -いと機能しないことに注意。 - +If the form of the source code depends, in a non-standard way, upon the file +extension, then it is most convenient to set fortran_free_source in a ftplugin +file. For more information on ftplugin files, see |ftplugin|. Note that this +will work only if the "filetype plugin indent on" command precedes the "syntax +on" command in your .vimrc file. + +When you edit an existing fortran file, the syntax script will assume free +source form if the fortran_free_source variable has been set, and assumes +fixed source form if the fortran_fixed_source variable has been set. If +neither of these variables have been set, the syntax script attempts to +determine which source form has been used by examining the file extension +using conventions common to the ifort, gfortran, Cray, NAG, and PathScale +compilers (.f, .for, .f77 for fixed-source, .f90, .f95, .f03, .f08 for +free-source). If none of this works, then the script examines the first five +columns of the first 500 lines of your file. If no signs of free source form +are detected, then the file is assumed to be in fixed source form. The +algorithm should work in the vast majority of cases. In some cases, such as a +file that begins with 500 or more full-line comments, the script may +incorrectly decide that the fortran code is in fixed form. If that happens, +just add a non-comment statement beginning anywhere in the first five columns +of the first twenty five lines, save (:w) and then reload (:e!) the file. +{参考用の旧訳: 既存のFortranファイルを編集する時には、変数fortran_free_sourceが設定されていれ ば構文ファイルは自由形式のソースであると仮定し、変数fortran_fixed_sourceが設定 されていれば固定形式のソースであると仮定する。どちらも設定されていないときに @@ -1406,6 +1440,7 @@ Fortran のソースコードには固定形式と自由形式が有る。形式 るようなファイルでは、構文ファイルが固定形式コードであると誤った判断をしてしま うだろう。そのような場合には、ファイルの先頭250行の行頭5桁のどこかに、コメント 以外の命令文を追加し、ファイルの保存 (:w) そして再読込 (:e!) を行えば良い。 +:旧訳ここまで} Fortranファイル内のタブ文字 ~ 標準のFortranではタブ文字は認識されない。固定桁位置での境界を必要とする固定形 @@ -3105,6 +3140,7 @@ g:vimsyn_embed オプションは、どの外部スクリプト言語の埋め 定する。 > g:vimsyn_embed == 0 : どのスクリプトの埋め込みも対応しない + g:vimsyn_embed =~ 'l' : 埋め込み lua をサポート g:vimsyn_embed =~ 'm' : 埋め込み mzscheme をサポート g:vimsyn_embed =~ 'p' : 埋め込み perl をサポート g:vimsyn_embed =~ 'P' : 埋め込み python をサポート @@ -3121,6 +3157,7 @@ syntax/vim.vim によって折り畳みが可能である: > g:vimsyn_folding == 0 または変数が存在しない: 構文ベースの折り畳みはしない g:vimsyn_folding =~ 'a' : augroups g:vimsyn_folding =~ 'f' : 関数を折り畳む + g:vimsyn_folding =~ 'l' : lua スクリプトを折り畳む g:vimsyn_folding =~ 'm' : mzscheme スクリプトを折り畳む g:vimsyn_folding =~ 'p' : perl スクリプトを折り畳む g:vimsyn_folding =~ 'P' : python スクリプトを折り畳む @@ -3196,6 +3233,31 @@ xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* +YAML *yaml.vim* *ft-yaml-syntax* + + *g:yaml_schema* *b:yaml_schema* +A YAML schema is a combination of a set of tags and a mechanism for resolving +non-specific tags. For user this means that YAML parser may, depending on +plain scalar contents, treat plain scalar (which can actually be only string +and nothing else) as a value of the other type: null, boolean, floating-point, +integer. `g:yaml_schema` option determines according to which schema values +will be highlighted specially. Supported schemas are + +Schema Description ~ +failsafe No additional highlighting. +json Supports JSON-style numbers, booleans and null. +core Supports more number, boolean and null styles. +pyyaml In addition to core schema supports highlighting timestamps, + but there are some differences in what is recognized as + numbers and many additional boolean values not present in core + schema. + +Default schema is `core`. + +Note that schemas are not actually limited to plain scalars, but this is the +only difference between schemas defined in YAML specification and the only +difference defined in the syntax file. + ============================================================================== 5. 構文を定義する *:syn-define* *E410* @@ -3271,6 +3333,32 @@ xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を スペルチェックを有効化するにはオプション 'spell' をオンにしなければな らない。 +SYNTAX ISKEYWORD SETTING *:syn-iskeyword* + +:sy[ntax] iskeyword [clear | {option}] + This defines the keyword characters. It's like the 'iskeyword' option + for but only applies to syntax highlighting. + + clear: Syntax specific iskeyword setting is disabled and the + buffer-local 'iskeyword' setting is used. + {option} Set the syntax 'iskeyword' option to a new value. + + Example: > + :syntax iskeyword @,48-57,192-255,$,_ +< + This would set the syntax specific iskeyword option to include all + alphabetic characters, plus the numeric characters, all accented + characters and also includes the "_" and the "$". + + If no argument is given, the current value will be output. + + Setting this option influences what |/\k| matches in syntax patterns + and also determines where |:syn-keyword| will be checked for a new + match. + + It is recommended when writing syntax files, to use this command + to the correct value for the specific syntax language and not change + the 'iskeyword' option. キーワードの定義 *:syn-keyword* @@ -3302,6 +3390,7 @@ xpm.vimは編集中のXPMファイルの内容から、動的に構文要素を ワードは認識されない。 マルチバイト文字を使うこともできる。マルチバイト文字は 'iskeyword' に 含まれている必要はない。 + See |:syn-iskeyword| for defining syntax specific iskeyword settings. キーワードは常にマッチやリージョンより優先される。キーワードは一要素以 上マッチしたとき使われる。キーワードは入れ子にならなく、それ以外のもの @@ -3537,6 +3626,7 @@ conceal *conceal* *:syn-conceal* 際に Conceal 表示されるかどうかは 'conceallevel' オプションの設定に依存する。 現在行のアイテムを Conceal 表示するかどうかは 'concealcursor' オプションで制御 できる (行の編集を妨げないようにするため)。 +Another way to conceal text with with |matchadd()|. concealends *:syn-concealends* @@ -3956,7 +4046,7 @@ skipパターンも "\n" を含んでよい。ただし次の行の最初の文 :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" このように、\zは2つの役割を果たす。startパターンにおいては正規表現の一部 -"\(\I\i*\)" をexternalとしてマークする。endパターンでは\1によってstartパターン +"\(\I\i*\)" をexternalとしてマークする。endパターンでは\z1によってstartパターン 中の最初のマークされた部分への外部参照とする。外部参照はskipパターン中でも使え る: > :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1" @@ -4443,21 +4533,23 @@ ctermbg={color-nr} *highlight-ctermbg* 14 3* Yellow, LightYellow 15 7* White - "NR-16" の下の番号は16色ターミナル('t_Co' が16以上のもの)用である。 - "NR-8" の下の番号は8色ターミナル('t_Co' が16未満のもの)用である。 - '*' はctermfgにbold属性がセットされることを意味している。"linux" - など多くの8色ターミナルでは明るい色になる。ただし背景色には適用さ - れない。'*' がないものはbold属性なしになる。他の方法でbold属性をつ - けたいなら引数 "cterm=" を "ctermfg=" や "ctermbg=" の後に書くこ - と。または色名の代わりに番号を使うこと。 + "NR-16" の下の番号は16色ターミナル('t_Co' が16以上のもの)用である。 + "NR-8" の下の番号は8色ターミナル('t_Co' が16未満のもの)用である。 + '*' はctermfgにbold属性がセットされることを意味している。"linux" + など多くの8色ターミナルでは明るい色になる。ただし背景色には適用さ + れない。'*' がないものはbold属性なしになる。他の方法でbold属性をつ + けたいなら引数 "cterm=" を "ctermfg=" や "ctermbg=" の後に書くこ + と。または色名の代わりに番号を使うこと。 + + 色名の大文字・小文字は無視される。 + 16色ansiスタイルターミナル(xtermを含む)ではNR-8の列の番号が使われ + ることに注意。ここで '*' は 'add 8' という意味になる。つまりBlueが + 12に、DarkGrayが8になる。 - 色名の大文字・小文字は無視される。 - 16色ansiスタイルターミナル(xtermを含む)ではNR-8の列の番号が使われ - ることに注意。ここで '*' は 'add 8' という意味になる。つまりBlueが - 12に、DarkGrayが8になる。 + カラーターミナルによっては、色名を使うと間違った色で表示される場合 + もあることに注意。 - カラーターミナルによっては、色名を使うと間違った色で表示される場合 - もあることに注意。 + You can also use "NONE" to remove the color. *:hi-normal-cterm* Normalグループに対して "ctermfg" や "ctermbg" を設定すると、これらはハ @@ -4866,6 +4958,7 @@ types.vim: *.[ch] 更されない。"b:current_syntax" は構文ファイルによって変更されるが、 "b:current_syntax" を一時的に保存・復元することで値が変わらないようになってい る。構文ファイルによって設定された値が "w:current_syntax" に代入される。 +Note: This resets the 'spell', 'spellcapcheck' and 'spellfile' options. ウィンドウの独自構文が定義されると、同じバッファの他のウィンドウで実行された構 文コマンド (:syntax clear を含む) が影響しなくなる。逆に、そのウィンドウで実行 diff --git a/doc/usr_02.jax b/doc/usr_02.jax index 63f1090f0..4156b7682 100644 --- a/doc/usr_02.jax +++ b/doc/usr_02.jax @@ -1,4 +1,4 @@ -*usr_02.txt* For Vim バージョン 7.4. Last change: 2015 Apr 12 +*usr_02.txt* For Vim バージョン 7.4. Last change: 2016 Jan 16 VIM USER MANUAL - by Bram Moolenaar @@ -404,6 +404,14 @@ Vim を終了したくない場合は、":e!" コマンドでオリジナルの 知りたいことは何でも Vim のヘルプで調べることができます。どんどん調べてくださ い! + +If you know what you are looking for, it is usually easier to search for it +using the help system, instead of using Google. Because the subjects follow +a certain style guide. + +Also the help has the advantage of belonging to your particular Vim version. +You won't see help for commands added later. These would not work for you. + 次のコマンドでヘルプの総合案内が表示されます: > :help @@ -472,7 +480,7 @@ Vim にはオプションがたくさんあり、それを設定することで :help 'number' -モードのプレフィクス一覧は |help-context| を参照してください。 +モードのプレフィクス一覧は |help-summary| を参照してください。 特殊キー不等号で囲んで表記します。例えば、挿入モードの上矢印キーのヘルプを見る には次のコマンドを使います: > @@ -489,65 +497,192 @@ Vim にはオプションがたくさんあり、それを設定することで 概要: *help-summary* > - :help -< 一般的なヘルプを表示します。下へスクロールすると、全てのヘルプ - ファイルの一覧を表示します。ここには独自に追加された、Vim標準 - には添付されていないヘルプファイルも含まれます。 > - :help user-toc.txt -< ユーザーマニュアルの目次を表示します。 > - :help :subject -< Exコマンド "subject" のヘルプ。例えば次のようなもの: > - :help :help -< ヘルプの探し方のヘルプ。 > - :help abc -< ノーマルモードコマンド "abc" のヘルプ。 > - :help CTRL-B -< ノーマルモードコマンドにおけるキー<C-b>のヘルプ。 > - :help i_abc - :help i_CTRL-B -< 挿入モードにおける特定のキーのヘルプ。 > - :help v_abc - :help v_CTRL-B -< ビジュアルモードにおける特定のキーのヘルプ。 > - :help c_abc - :help c_CTRL-B -< コマンドラインモードにおける特定のキーのヘルプ。 > - :help 'subject' -< オプション 'subject' のヘルプ。 > - :help subject() -< 関数 "subject" のヘルプ。 > - :help -subject -< コマンドライン引数 "-subject" のヘルプ。 > - :help +subject -< コンパイル時機能 "+subject" のヘルプ。 > - :help /* -< 正規表現 "*" のヘルプ。 > - :help EventName -< 自動コマンドイベント "EventName" のヘルプ。 > - :help digraphs.txt -< ヘルプファイル "digraph.txt" のトップ。 - 他のヘルプファイルについても同様。 > - :help pattern<Tab> -< "pattern" で始まるヘルプタグを検索。<Tab>を繰り返し押すと他の - 候補を検索する。 > - :help pattern<Ctrl-D> -< "pattern" にマッチするヘルプタグを全て表示する。 > - :helpgrep pattern -< 全ヘルプファイルの全テキストからパターン "pattern" を検索し、 - 最初のマッチへジャンプする。他のマッチへジャンプするには以下の - コマンドを使う: > - :cn -< 次のマッチへ > - :cprev - :cN -< 前のマッチへ > - :cfirst - :clast -< 最初/最後のマッチへ > - :copen - :cclose -< quickfixウィンドウを開く/閉じる。quickfixウィンドウで - <Enter>を押すと、カーソル下の要素へジャンプする。 + +1) Use Ctrl-D after typing a topic and let Vim show all available topics. + Or press Tab to complete: > + :help some<Tab> +< More information on how to use the help: > + :help helphelp + +2) Follow the links in bars to related help. You can go from the detailed + help to the user documentation, which describes certain commands more from + a user perspective and less detailed. E.g. after: > + :help pattern.txt +< You can see the user guide topics |03.9| and |usr_27.txt| in the + introduction. + +3) Options are enclosed in single apostrophes. To go to the help topic for the + list option: > + :help 'list' +< If you only know you are looking for a certain option, you can also do: > + :help options.txt +< to open the help page which describes all option handling and then search + using regular expressions, e.g. textwidth. + Certain options have their own namespace, e.g.: > + :help cpo-<letter> +< for the corresponding flag of the 'cpoptions' settings, substitute <letter> + by a specific flag, e.g.: > + :help cpo-; +< And for the guioption flags: > + :help go-<letter> + +4) Normal mode commands do not have a prefix. To go to the help page for the + "gt" command: > + :help gt + +5) Insert mode commands start with i_. Help for deleting a word: > + :help i_CTRL-W + +6) Visual mode commands start with v_. Help for jumping to the other side of + the Visual area: > + :help v_o + +7) Command line editing and arguments start with c_. Help for using the + command argument %: > + :help c_% + +8) Ex-commands always start with ":", so to go to the :s command help: > + :help :s + +9) Commands specifically for debugging start with ">". To go to to the help + for the "cont" debug command: > + :help >cont + +10) Key combinations. They usually start with a single letter indicating + the mode for which they can be used. E.g.: > + :help i_CTRL-X +< takes you to the family of Ctrl-X commands for insert mode which can be + used to auto complete different things. Note, that certain keys will + always be written the same, e.g. Control will always be CTRL. + For normal mode commands there is no prefix and the topic is available at + :h CTRL-<Letter>. E.g. > + :help CTRL-W +< In contrast > + :help c_CTRL-R +< will describe what the Ctrl-R does when entering commands in the Command + line and > + :help v_Ctrl-A +< talks about incrementing numbers in visual mode and > + :help g_CTRL-A +< talks about the g<C-A> command (e.g. you have to press "g" then <Ctrl-A>). + Here the "g" stand for the normal command "g" which always expects a second + key before doing something similar to the commands starting with "z" + +11) Regexp items always start with /. So to get help for the "\+" quantifier + in Vim regexes: > + :help /\+ +< If you need to know everything about regular expressions, start reading + at: > + :help pattern.txt + +12) Registers always start with "quote". To find out about the special ":" + register: > + :help quote: + +13) Vim Script (VimL) is available at > + :help eval.txt +< Certain aspects of the language are available at :h expr-X where "X" is a + single letter. E.g. > + :help expr-! +< will take you to the topic describing the "!" (Not) operator for + VimScript. + Also important is > + :help function-list +< to find a short description of all functions available. Help topics for + VimL functions always include the "()", so: > + :help append() +< talks about the append VimL function rather than how to append text in the + current buffer. + +14) Mappings are talked about in the help page :h |map.txt|. Use > + :help mapmode-i +< to find out about the |:imap| command. Also use :map-topic + to find out about certain subtopics particular for mappings. e.g: > + :help :map-local +< for buffer-local mappings or > + :help map-bar +< for how the '|' is handled in mappings. + +15) Command definitions are talked about :h command-topic, so use > + :help command-bar +< to find out about the '!' argument for custom commands. + +16) Window management commands always start with CTRL-W, so you find the + corresponding help at :h CTRL-W_letter. E.g. > + :help CTRL-W_p +< for moving the previous accessed window. You can also access > + :help windows.txt +< and read your way through if you are looking for window handling + commands. + +17) Use |:helpgrep| to search in all help pages (and also of any installed + plugins). See |:helpgrep| for how to use it. + To search for a topic: > + :helpgrep topic +< This takes you to the first match. To go to the next one: > + :cnext +< All matches are available in the quickfix window which can be opened + with: > + :copen +< Move around to the match you like and press Enter to jump to that help. + +18) The user manual. This describes help topics for beginners in a rather + friendly way. Start at |usr_toc.txt| to find the table of content (as you + might have guessed): > + :help usr_toc.txt +< Skim over the contents to find interesting topics. The "Digraphs" and + "Entering special characters" items are in chapter 24, so to go to that + particular help page: > + :help usr_24.txt +< Also if you want to access a certain chapter in the help, the chapter + number can be accessed directly like this: > + :help 10.1 +< goes to chapter 10.1 in |usr_10.txt| and talks about recording macros. + +19) Highlighting groups. Always start with hl-groupname. E.g. > + :help hl-WarningMsg +< talks about the WarningMsg highlighting group. + +20) Syntax highlighting is namespaced to :syn-topic e.g. > + :help :syn-conceal +< talks about the conceal argument for the :syn command. + +21) Quickfix commands usually start with :c while location list commands + usually start with :l + +22) Autocommand events can be found by their name: > + :help BufWinLeave +< To see all possible events: > + :help autocommands-events + +23) Command-line switches always start with "-". So for the help of the -f + command switch of Vim use: > + :help -f + +24) Optional features always start with "+". To find out about the + conceal feature use: > + :help +conceal + +25) Documentation for included filetype specific functionality is usually + available in the form ft-<filetype>-<functionality>. So > + :help ft-c-syntax +< talks about the C syntax file and the option it provides. Sometimes, + additional sections for omni completion > + :help ft-php-omni +< or filetype plugins > + :help ft-tex-plugin +< are available. + +26) Error and Warning codes can be looked up directly in the help. So > + :help E297 +< takes you exactly to the description of the swap error message and > + :help W10 +< talks about the warning "Changing a readonly file". + Sometimes however, those error codes are not described, but rather are + listed at the Vim command that usually causes this. So: > + :help E128 +< takes you to the |:function| command + ============================================================================== diff --git a/doc/windows.jax b/doc/windows.jax index a7c03bf6e..114a39fd0 100644 --- a/doc/windows.jax +++ b/doc/windows.jax @@ -1,4 +1,4 @@ -*windows.txt* For Vim バージョン 7.4. Last change: 2014 Mar 25 +*windows.txt* For Vim バージョン 7.4. Last change: 2015 Nov 14 VIMリファレンスマニュアル by Bram Moolenaar @@ -274,31 +274,58 @@ CTRL-W ^ ":split #" と同じ。つまり、ウィンドウを2つに分割し ウィンドウを閉じる ------------------ +:q[uit] +:{count}q[uit] CTRL-W q *CTRL-W_q* CTRL-W CTRL-Q *CTRL-W_CTRL-Q* -:q[uit] カレントウィンドウを終了する。最後のウィンドウ(ヘルプウィンド - ウを除く)を終了すると Vim が終了する。 'hidden' オプションが - セットされていて、かつ、カレントバッファを表示しているウィンド - ウが 1つしかない場合は、そのバッファは隠れ状態(hidden)となる。 - 'hidden' オプションがセットされていなくて、カレントバッファを - 表示しているウィンドウが1つしかなくて、かつ、そのバッファが編 - 集中の場合は、このコマンドは失敗する。 (Note: CTRL-Q は全ての - 端末で動作しない。) - -:q[uit]! カレントウィンドウを終了する。このウィンドウがバッファを表示し - ている最後のウィンドウの場合、このバッファに対する変更は全て失 - われる。最後のウィンドウ(ヘルプウィンドウを除く)を終了すると - Vim が終了する。たとえ 'hidden' オプションがセットされていたと - しても、バッファ内容は失われる。 - + Without {count}: Quit the current window. If {count} is + given quit the {count} window. + + 最後のウィンドウ(ヘルプウィンドウを除く)を終了すると Vim が終 + 了する。 + + 'hidden' オプションがセットされていて、かつカレントバッファを + 表示しているウィンドウが 1つしかない場合は、そのバッファは隠れ + 状態(hidden)となる。'hidden' オプションがセットされていなく + て、カレントバッファを表示しているウィンドウが1つしかなくて、 + かつ、そのバッファが編集中の場合は、このコマンドは失敗する。 + + (Note: CTRL-Q は全ての端末で動作するわけではない。) + + If [count] is greater than the last window number the last + window will be closed: > + :1quit " quit the first window + :$quit " quit the last window + :9quit " quit the last window + " if there are less than 9 windows opened + :-quit " quit the previews window + :+quit " quit the next window + :+2quit " quit the second next window +< +:q[uit]! +:{count}q[uit]! + Without {count}: Quit the current window. If {count} is + given quit the {count} window. + + このウィンドウがバッファを表示している最後のウィンドウの場合、 + このバッファに対する変更は全て失われる。最後のウィンドウ(ヘル + プウィンドウを除く)を終了するとVim が終了する。たとえ 'hidden' + オプションがセットされていたとしても、バッファ内容は失われる。 + +:clo[se][!] +:{count}clo[se][!] CTRL-W c *CTRL-W_c* *:clo* *:close* -:clo[se][!] カレントウィンドウを閉じる。'hidden' オプションがセットされて - いる時、または、バッファが変更されていて[!]を使用した時は、( - バッファが他のウィンドウで編集中でなければ)バッファは隠れ状態 - (hidden)になる。 + Without {count}: Close the current window. If {count} is + given close the {count} window. + + 'hidden' オプションがセットされている時、または、バッファが変 + 更されていて[!]を使用した時は、(バッファが他のウィンドウで編集 + 中でなければ)バッファは隠れ状態(hidden)になる。 + カレントタブページにウィンドウが1つしかなく、他にタブページが あるとき、このコマンドを実行するとカレントタブページが閉じる。 |tab-page| + このコマンドは以下の場合に失敗する: *E444* - スクリーン上に1つのウィンドウしかない時 - 'hidden' がセットされていなくて、[!]を使用せず、バッファが変 @@ -313,15 +340,21 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C* しない。 *:hide* -:hid[e] カレントウィンドウがスクリーン上の最後のウィンドウでなければ、 - カレントウィンドウを終了する。 (他のウィンドウがバッファを編集 - していなく、かつ 'bufhidden' の値が "unloaded" か "delete" で - ないならば)そのバッファは隠れ状態(hidden)となる。 - そのウィンドウがカレントタブページで最後のウィンドウであるなら - ばタブページも閉じる。|tab-page| - 'hidden' の値はこのコマンドには無関係である。 - バッファへの変更は保存されず、失われることもないため、このコマ - ンドは「安全な」コマンドである。 +:hid[e] +:{count}hid[e] + カレントウィンドウがスクリーン上の最後のウィンドウでなければ、 + カレントウィンドウを終了する。 {count} については |:quit| コマ + ンドを参照。 + + (他のウィンドウがバッファを編集していなく、かつ 'bufhidden' の + 値が "unloaded", "delete", "wipe" のいずれでもないならば)その + バッファは隠れ状態(hidden)となる。そのウィンドウがカレントタブ + ページで最後のウィンドウであるならばタブページも閉じる。 + |tab-page| + + 'hidden' の値はこのコマンドには無関係である。バッファへの変更 + は保存されず、失われることもないため、このコマンドは「安全な」 + コマンドである。 :hid[e] {cmd} {cmd} を実行し、同時に 'hidden' をセットする。{cmd} が実行され た後に 'hidden' の以前の値が復旧される。 @@ -330,12 +363,17 @@ CTRL-W CTRL-C *CTRL-W_CTRL-C* これはカレントバッファに変更があっても、それを隠しバッファに し、"Makefile" を編集する。 +:on[ly][!] +:{count}on[ly][!] CTRL-W o *CTRL-W_o* *E445* CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* -:on[ly][!] カレントウィンドウをスクリーン上にある唯一のウィンドウにする。 - 他の全てのウィンドウは閉じられる。 + カレントウィンドウをスクリーン上にある唯一のウィンドウにする。 + 他の全てのウィンドウは閉じられる。 {count} については |:quit| + コマンドを参照。 + 'hidden' オプションがセットされていれば、閉じられた全てのバッ ファは隠れ状態(hidden)となる。 + 'hidden' オプションがセットされておらず、'autowrite' オプショ ンがセットされている場合は、編集中のバッファは保存される。さも なければ、編集中のバッファを表示しているウィンドウは閉じられる @@ -683,8 +721,9 @@ Note: ":next" は例外である。なぜならこのコマンドは Vi との ============================================================================== 8. 全てのバッファ/ウィンドウに対してコマンド実行 *list-repeat* *:windo* -:windo[!] {cmd} 各ウィンドウに対して {cmd} を実行する。 - これは次のようにするのと同じ動作をする: > +:[range]windo[!] {cmd} 各ウィンドウに対して {cmd} を実行する。[range]が指定さ + れた場合には、指定された範囲の番号のウィンドウが操作対 + 象となる。これは次のようにするのと同じ動作をする: > CTRL-W t :{cmd} CTRL-W w @@ -704,8 +743,10 @@ Note: ":next" は例外である。なぜならこのコマンドは Vi との |:lfdo|も参照。 *:bufdo* -:bufdo[!] {cmd} {cmd} をバッファリスト内の各バッファに対して実行。 - これは次のようにするのと同じ動作をする: > +:[range]bufdo[!] {cmd} {cmd} をバッファリスト内の各バッファに対して実行する。 + [range]が指定された場合は、指定された範囲の番号の + バッファが操作対象となる。これは次のようにするのと同じ + 動作をする: > :bfirst :{cmd} :bnext @@ -752,18 +793,23 @@ Note: ":next" は例外である。なぜならこのコマンドは Vi との CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* CTRL-W CTRL-] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ - として使用し、新しくできた上側のウィンドウでタグに移動する。新 - しいウィンドウの高さはNとなる。 + として使用し、新しくできた上側のウィンドウでタグに移動する。 + In Visual mode uses the Visually selected text as a tag. + 新しいウィンドウの高さは N となる。 *CTRL-W_g]* CTRL-W g ] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ として使用し、新しくできた上側のウィンドウで ":tselect" を実行 - する。新しいウィンドウの高さはNとなる。 + する。 + In Visual mode uses the Visually selected text as a tag. + 新しいウィンドウの高さは N となる。 *CTRL-W_g_CTRL-]* CTRL-W g CTRL-] カレントウィンドウを2つに分割する。カーソル位置の識別子をタグ として使用し、新しくできた上側のウィンドウで ":tjump" を実行す - る。新しいウィンドウの高さはNとなる。 + る。 + In Visual mode uses the Visually selected text as a tag. + 新しいウィンドウの高さはNとなる。 CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* CTRL-W CTRL-F カレントウィンドウを2つに分割する。カーソル位置のファイル名を @@ -965,9 +1011,10 @@ CTRL-W g } *CTRL-W_g}* バッファはリストから除かれることもある。これは、存在しているがバッファのリスト 内にはないことを意味する。|unlisted-buffer| -:files[!] *:files* -:buffers[!] *:buffers* *:ls* -:ls[!] 全バッファを表示。例: +:files[!] [flags] *:files* +:buffers[!] [flags] *:buffers* *:ls* +:ls[!] [flags] + 全バッファを表示。例: 1 #h "/test/text" line 1 ~ 2u "asdf" line 0 ~ @@ -993,6 +1040,21 @@ CTRL-W g } *CTRL-W_g}* + 変更のあるバッファ x 読み込みエラーのあるバッファ + [flags] can be a combination of the following characters, + which restrict the buffers to be listed: + + modified buffers + - buffers with 'modifiable' off + = readonly buffers + a active buffers + u unlisted buffers (overrides the "!") + h hidden buffers + x buffers with a read error + % current buffer + # alternate buffer + Combining flags means they are "and"ed together, e.g.: + h+ hidden buffers which are modified + a+ active buffers which are modified + *:bad* *:badd* :bad[d] [+lnum] {fname} ファイル名 {fname} をバッファリストに追加する。ただし、メモリ @@ -1012,7 +1074,10 @@ CTRL-W g } *CTRL-W_g}* し示している最も最近のエントリが使用される。 実際は、バッファは完全に削除されていない。バッファリストから削 除され |unlisted-buffer|、バッファに対するオプションの値、変数、 - マッピング・略語が消去される。 + マッピング・略語が消去される。 Examples: > + :.,$-bdelete " delete buffers from the current one to + " last but one + :%bdelete " delete all buffers :bdelete[!] {bufname} *E93* *E94* ":bdelete[!] [N]" と同様だが、バッファを名前で指定する。数字が @@ -1036,7 +1101,10 @@ CTRL-W g } *CTRL-W_g}* |:bdelete| に似ているが、本当にバッファを削除する。このバッ ファに関するすべてが失われる。例えば、このバッファ中のすべての マークが無効になり、オプション設定が失われるなど。このことの意 - 味がわからなければ使わないこと。 + 味がわからなければ使わないこと。 Examples: > + :.+,$bwipeout " wipe out all buffers after the current + " one + :%bwipeout " wipe out all buffers :[N]bun[load][!] *:bun* *:bunload* *E515* :bun[load][!] [N] From 95bc5b3e966470685dac793d2721507ee5d044e1 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 17:52:53 +0900 Subject: [PATCH 757/783] remove changes of +kaoriya MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 間違えてコミットしちゃってた。ごめんなさい (;´∀`) --- en/options.txt | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/en/options.txt b/en/options.txt index 0efbc8d64..a5e6fff45 100644 --- a/en/options.txt +++ b/en/options.txt @@ -693,9 +693,6 @@ A jump table for the options with a short description can be found at |Q_op|. "single": Use the same width as characters in US-ASCII. This is expected by most users. "double": Use twice the width of ASCII characters. - "auto": Use obtained width from system. - {only for Win NT/2K systems, currently} - *E834* *E835* The value "double" cannot be used if 'listchars' or 'fillchars' contains a character that would be double width. @@ -719,10 +716,6 @@ A jump table for the options with a short description can be found at |Q_op|. compiled with the |+termresponse| feature and if |t_u7| is set to the escape sequence to request cursor position report. - On some systems, we can use width for a character which defined by - font design. If you use such a system try "auto" for this option. - It will give you more nice result for a font which you select. - *'antialias'* *'anti'* *'noantialias'* *'noanti'* 'antialias' 'anti' boolean (default: off) global @@ -3833,9 +3826,6 @@ A jump table for the options with a short description can be found at |Q_op|. 'F' Add a footer. Only for Motif. See |gui-footer|. - 'C' Remove caption (title) bar. Support Win32 only. - - *'guipty'* *'noguipty'* 'guipty' boolean (default on) global From ba2e3555eb01c87fc54e3b00a7843e659d6e3e42 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 18:33:26 +0900 Subject: [PATCH 758/783] impose english to options.jax MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 場所が多くてキツかった… --- catchup-7.4.1194.md | 2 +- doc/options.jax | 310 +++++++++++++++++++++++++++++++++++++------- 2 files changed, 263 insertions(+), 49 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index a671f4f62..235a380a2 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -19,7 +19,6 @@ 追いついたファイルは、下記の一覧から削除し、適切なセクションへ移動 - doc/options.jax doc/pi_netrw.jax ### 英文だけは反映済み @@ -55,6 +54,7 @@ こっから先は100行超えるので、嫌。 doc/eval.jax + doc/options.jax doc/syntax.jax doc/windows.jax diff --git a/doc/options.jax b/doc/options.jax index 794f4a4ec..6fe584545 100644 --- a/doc/options.jax +++ b/doc/options.jax @@ -837,7 +837,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる オプション 'smartindent' かオプション 'cindent' がオンのときは、インデ ントの方法は違ってくる。 - オプション 'paste' がオンのときは 'autoindent' はオフになる。 + The 'autoindent' option is reset when the 'paste' option is set and + restored when 'paste' is reset. {Vi との微妙な違い: <Esc> または <CR> を打ち込んでインデントが削除され た後、上下に移動した後のカーソル位置は削除されたインデントの後ろになる。 Viでは削除されたインデントの中のどこかになる} @@ -1202,6 +1203,47 @@ Note 1番目の形式では、行全体がオプション指定に使われる 価した結果がリスト|List|になる場合は、そのリストの各要素を文字列とし、 それらの間に "\n" を置くのと同じことになる。 + *'belloff'* *'bo'* +'belloff' 'bo' string (default "") + global + {not in Vi} + Specifies for which events the bell will not be rung. It is a comma + separated list of items. For each item that is present, the bell + will be silenced. This is most useful to specify specific events in + insert mode to be silenced. + + item meaning when present ~ + all All events. + backspace When hitting <BS> or <Del> and deleting results in an + error. + cursor Fail to move around using the cursor keys or + <PageUp>/<PageDown> in |Insert-mode|. + complete Error occurred when using |i_CTRL-X_CTRL-K| or + |i_CTRL-X_CTRL-T|. + copy Cannot copy char from insert mode using |i_CTRL-Y| or + |i_CTRL-E|. + ctrlg Unknown Char after <C-G> in Insert mode. + error Other Error occurred (e.g. try to join last line) + (mostly used in |Normal-mode| or |Cmdline-mode|). + esc hitting <Esc> in |Normal-mode|. + ex In |Visual-mode|, hitting |Q| results in an error. + hangul Error occurred when using hangul input. + insertmode Pressing <Esc> in 'insertmode'. + lang Calling the beep module for Lua/Mzscheme/TCL. + mess No output available for |g<|. + showmatch Error occurred for 'showmatch' function. + operator Empty region error |cpo-E|. + register Unknown register after <C-R> in |Insert-mode|. + shell Bell from shell output |:!|. + spell Error happened on spell suggest. + wildmode More matches in |cmdline-completion| available + (depends on the 'wildmode' setting). + + This is most useful, to fine tune when in insert mode the bell should + be rung. For normal mode and ex commands, the bell is often rung to + indicate that an error occurred. It can be silenced by adding the + "error" keyword. + *'binary'* *'bin'* *'nobinary'* *'nobin'* 'binary' 'bin' 切替 (既定ではオフ) バッファについてローカル @@ -1277,7 +1319,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる て表示されるかを、このオプションで指定する。これが機能するのはASCIIと 8bit文字( 'encoding' が8bitエンコーディングのとき)だけである。 - *'breakindent'* *'bri'* + *'breakindent'* *'bri'* *'nobreakindent'* *'nobri'* 'breakindent' 'bri' 切替 (既定ではオフ) ウィンドウについてローカル {Vi にはない} @@ -1392,6 +1434,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる い)。 nofile だけは、 バッファ名は固定され、ファイル名のようには扱われない。 |:cd| の結果としてバッファ名が変わることはない。 + both: When using ":e bufname" and already editing "bufname" + the buffer is made empty and autocommands are + triggered as usual for |:edit|. *E676* "acwrite" は "nofile" と同様にバッファ名がファイルと関係していないこと を意味するが、"nofile" と違って保存される。すなわち、"nofile" と @@ -1891,6 +1936,14 @@ Note 1番目の形式では、行全体がオプション指定に使われる ウィンドウに表示する。"menu" または "menuone" と組み合わせ たときのみ有効。 + noinsert Do not insert any text for a match until the user selects + a match from the menu. Only works in combination with + "menu" or "menuone". No effect if "longest" is present. + + noselect Do not select a match in the menu, force the user to + select one from the menu. Only works in combination with + "menu" or "menuone". + *'concealcursor'* *'cocu'* 'concealcursor' 'cocu' 文字列 (既定では: "") @@ -2729,15 +2782,31 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'endofline' 'eol' 切替 (既定ではオン) バッファについてローカル {Vi にはない} + When writing a file and this option is off and the 'binary' option + is on, or 'fixeol' option is off, no <EOL> will be written for the + last line in the file. This option is automatically set or reset when + starting to edit a new file, depending on whether file has an <EOL> + for the last line in the file. Normally you don't have to set or + reset this option. + {参考用の旧訳: ファイルを書き込むときに、このオプションがオフでオプション 'binary' が オンならば、ファイルの最終行に <EOL> が書き込まれない。このオプション はファイルの編集を始めるときには自動的にオンになる。ただし編集を始めた ファイルの最終行に <EOL> がないときにはオフになる。普通はユーザーがこ のオプションを設定する必要はない。'binary' がオフのときはこのオプショ - ンは使われない。'binary' がオンのときは、ファイルの最終行に <EOL> が - あったかどうかを復元するためにこのオプションが使われる。そのため、ユー - ザーがファイルを書き込むときに元のファイルの状態を保つことができるし、 - 変更することもできる。 + ンは使われない。 + :旧訳ここまで} + When 'binary' is off and 'fixeol' is on the value is not used when + writing the file. When 'binary' is on or 'fixeol' is off it is used + to remember the presence of a <EOL> for the last line in the file, so + that when you write the file the situation from the original file can + be kept. But you can change it if you want to. + {参考用の旧訳: + 'binary' がオンのときは、ファイルの最終行に <EOL> があったかどうかを復 + 元するためにこのオプションが使われる。そのため、ユーザーがファイルを書 + き込むときに元のファイルの状態を保つことができるし、変更することもでき + る。 + :旧訳ここまで} *'equalalways'* *'ea'* *'noequalalways'* *'noea'* 'equalalways' 'ea' 切替 (既定ではオン) @@ -2778,8 +2847,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる くのエラー (例えばノーマルモードで <ESC> を打ち込んだとき) については ベルは常に使用される。ベルをビープ音にしたり、画面フラッシュにしたり、 無効にしたりするためには、オプション 'visualbell' を参照。 - 安全上の理由から、このオプションをモードライン|modeline|やサンドボック - ス|sandbox|の中で設定することはできない。 + See 'belloff' to finetune when to ring the bell. *'errorfile'* *'ef'* 'errorfile' 'ef' 文字列 (Amigaでの既定値: "AztecC.Err", @@ -2842,6 +2910,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる オンのときのインデントでも空白を使う。'expandtab' がオンのときに本当の タブを挿入するには、CTRL-V<Tab> を使うこと。|:retab| と |ins-expandtab| も参照。 + This option is reset when the 'paste' option is set and restored when + the 'paste' option is reset. NOTE: このオプションは、'compatible' がオンのときはオフになるので注意。 *'exrc'* *'ex'* *'noexrc'* *'noex'* @@ -3017,8 +3087,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる 2. 改行に <NL> が使われていて、かつ 'fileformats' が "unix" を含むな ら、'fileformat' は "unix" になる。 Note <NL> があって、その前に <CR> がないと、"dos" より "unix" が優先的に使われることに注意。 - 3. 'fileformat' がまだ設定されておらず、'fileformats' に "mac" が含 - まれているときは、'fileformat' は "mac" に設定される。 + 3. 'fileformat' がまだ設定されておらず、ファイル内に1つ <CR> が見つ + かり(訳注:後ろに<NL>が続かない)、'fileformats' に "mac" が含まれ + ているときは、'fileformat' は "mac" に設定される。 つまり "mac" が選択されるのは: "unix" が含まれていないか <NL> がファイルに無い、そして "dos" が含まれていないか <CR><NL> がファイルに無いときである。 @@ -3124,6 +3195,17 @@ Note 1番目の形式では、行全体がオプション指定に使われる fold:文字 Folded |hl-Folded| diff:文字 DiffDelete |hl-DiffDelete| + *'fixendofline'* *'fixeol'* *'nofixendofline'* *'nofixeol'* +'fixendofline' 'fixeol' boolean (default on) + local to buffer + {not in Vi} + When writing a file and this option is on, <EOL> at the end of file + will be restored if missing. Turn this option off if you want to + preserve the situation from the original file. + When the 'binary' option is set the value of this option doesn't + matter. + See the 'endofline' option. + *'fkmap'* *'fk'* *'nofkmap'* *'nofk'* 'fkmap' 'fk' 切替 (既定ではオフ) *E198* グローバル @@ -3422,7 +3504,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる ドボックスの中ではバッファテキストの変更は許可されていないので、このオ プションは機能しない。 - *'fsync'* *'fs'* + *'fsync'* *'fs'* *'nofsync'* *'nofs'* 'fsync' 'fs' 切替 (既定ではオン) グローバル {Vi にはない} @@ -3505,7 +3587,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 能する。MSDOSやWin32コンソールではカーソルの高さだけを変更する。これは ブロックカーソルを指定する、または垂直・水平方向のパーセンテージを指定 することで行う。 - コンソール上ではエスケープシーケンス 't_SI' と 't_EI' が使われる。 + コンソール上ではエスケープシーケンス 't_SI', 't_SR' 及び 't_EI' が使わ + れる。 値はコンマ区切りのキーワードのリストである。リストは部門別に分かれてお り、各部門はモードリストと引数リストからなる。 @@ -4137,7 +4220,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる グローバル 検索パターンにおいて大文字と小文字を区別しない。タグファイル内の検索に も適用される。 - オプション 'smartcase' も参照。 + オプション 'smartcase' と 'tagcase' も参照。 パターン内で "\c" や "\C" を使うことで、この設定を上書きできる。 |/ignorecase| を参照。 @@ -4536,6 +4619,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる ド上で CTRL-] を入力したときにそのコマンドについてのヘルプにジャンプで きるようにするため)。 'lisp' がオンのときは、文字 '-' は常に含まれる。 + This option also influences syntax highlighting, unless the syntax + uses |:syn-iskeyword|. NOTE: このオプションは、オプション 'compatible' がオンのときはViの既定 値に、オフのときはVimの既定値になるので注意すること。 @@ -4653,11 +4738,13 @@ Note 1番目の形式では、行全体がオプション指定に使われる 有効} このオプションでは、ユーザーのキーボードを特別な言語モードに切り替えら れるようにする。 挿入モードで文字を入力しているときは、文字は直接入力 - される。しかしコマンドモードではオプション 'langmap' により、入力され + される。しかしノーマルモードではオプション 'langmap' により、入力され た特別な文字をキー本来の文字に変換する。つまりノーマルモードコマンドを - 実行するためにキーボードモードを変更しなくともよいということである。こ - のオプションは 'keymap' と正反対のものである。'keymap' は挿入モードで - マッピングを行う。 + 実行するためにキーボードモードを変更しなくともよいということである。 + このオプションは 'keymap' と正反対のものである。'keymap' は挿入モード + でマッピングを行う。 + Also consider setting 'langnoremap' to avoid 'langmap' applies to + characters resulting from a mapping. このオプションはセキュリティ上の理由で、|modeline| からや |sandbox| の 中で設定することはできない。 @@ -4716,6 +4803,18 @@ Note 1番目の形式では、行全体がオプション指定に使われる < 警告: こうすると、ユーザー自身の定義したメニューも含む、全てのメニュー がいったん削除される! + *'langnoremap'* *'lnr'* *'nolangnoremap'* *'nolnr'* +'langnoremap' 'lnr' boolean (default off) + global + {not in Vi} + {only available when compiled with the |+langmap| + feature} + When on, setting 'langmap' does not apply to characters resulting from + a mapping. This basically means, if you noticed that setting + 'langmap' disables some of your mappings, try setting this option. + This option defaults to off for backwards compatibility. Set it on if + that works for you to avoid mappings to break. + *'laststatus'* *'ls'* 'laststatus' 'ls' 数値 (既定では 1) グローバル @@ -4885,6 +4984,17 @@ Note 1番目の形式では、行全体がオプション指定に使われる Note コマンドライン引数 "-u NONE" または "--noplugin" によってこのオプ ションをオフにできることに注意 |-u| |--noplugin|。 + *'luadll'* +'luadll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+lua/dyn| + feature} + Specifies the name of the Lua shared library. The default is + DYNAMIC_LUA_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'macatsui'* *'nomacatsui'* 'macatsui' 切替 (既定ではオン) グローバル @@ -5041,9 +5151,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる {Vi にはない} 全てのバッファで使用するメモリの合計の最大値 (キロバイト単位)。このオ プションの最大値は約 2000000 (2 ギガバイト)である。限界を設けないとき - にはこの値に設定すること。64 ビットマシンではもっと高くしても動作する - かもしれない。けれど、本当にテキストの編集に 2 ギガバイト以上も必要で - すか? + にはこの値に設定すること。 + 64 ビットマシンではもっと高くしても動作するかもしれない。けれど、本当 + にテキストの編集に 2 ギガバイト以上も必要ですか? Keep in mind that + text is stored in the swap file, one can edit files > 2 Gbyte anyay. + We do need the memory to store undo info. 'maxmem' も参照。 *'menuitems'* *'mis'* @@ -5312,7 +5424,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 負または0にするとスレッドのスケジューリングを行わなくなる。 *'nrformats'* *'nf'* -'nrformats' 'nf' 文字列 (既定では "octal,hex") +'nrformats' 'nf' string (default "bin,octal,hex") バッファについてローカル {Vi にはない} テキスト内の数をコマンド CTRL-A や CTRL-X で増減させるとき、 Vimに何を @@ -5325,6 +5437,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる "007" の上で CTRL-A を使うと "010" となる。 hex これが含まれると、"0x" や "0X" で始まる数は16進数として認識さ れる。例: "0x100" の上で CTRL-X を使うと "0x0ff" となる。 + bin If included, numbers starting with "0b" or "0B" will be + considered to be binary. Example: Using CTRL-X on + "0b1000" subtracts one, resulting in "0b0111". 1 から 9 の数字で始まる数は、常に10進数として認識される。8進数または16 進数として認識されない数も10進数として認識される。 @@ -5444,19 +5559,21 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'paste' がオンのときは、以下のように設定が変わる。 - 挿入モードとコマンドラインモードでのマッピングが無効になる - 略語展開が無効になる - - 'textwidth' が 0 になる - - 'wrapmargin' が 0 になる - 'autoindent' がオフになる - - 'smartindent' がオフになる - - 'softtabstop' が 0 になる + - 'expandtab' is reset + - 'formatoptions' が空のときのような動作になる - 'revins' がオフになる - 'ruler' がオフになる - 'showmatch' がオフになる - - 'formatoptions' が空のときのような動作になる + - 'smartindent' がオフになる + - 'smarttab' is reset + - 'softtabstop' が 0 になる + - 'textwidth' が 0 になる + - 'wrapmargin' が 0 になる 以下のオプションの値に変化はないが、働きは無効になる。 - - 'lisp' - - 'indentexpr' - 'cindent' + - 'indentexpr' + - 'lisp' NOTE: 'paste' がオンのときに別のファイルの編集を始めると、モードライン や autocommand によって設定が再び変わり、貼り付け時に問題が起きること があるので注意。そのときは 'paste' を再びオンにするとよいだろう。 @@ -5580,6 +5697,17 @@ Note 1番目の形式では、行全体がオプション指定に使われる < 文字 ';' を ':' または指定可能な区切り文字で置換する。 Note この方法 は、$INCL がコンマや空白を含んでいるときには使えないので注意。 + *'perldll'* +'perldll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+perl/dyn| + feature} + Specifies the name of the Perl shared library. The default is + DYNAMIC_PERL_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'preserveindent'* *'pi'* *'nopreserveindent'* *'nopi'* 'preserveindent' 'pi' 切替 (既定ではオフ) バッファについてローカル @@ -5707,6 +5835,27 @@ Note 1番目の形式では、行全体がオプション指定に使われる 0 のときはスペースの許す限り多く表示される。 |ins-completion-menu| + *'pythondll'* +'pythondll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+python/dyn| + feature} + Specifies the name of the Python 2.x shared library. The default is + DYNAMIC_PYTHON_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + + *'pythonthreedll'* +'pythonthreedll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+python3/dyn| + feature} + Specifies the name of the Python 3 shared library. The default is + DYNAMIC_PYTHON3_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. *'quoteescape'* *'qe'* 'quoteescape' 'qe' 文字列 (既定では "\") @@ -5751,6 +5900,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる 2 NFA エンジン Note: NFA エンジンを使う設定のときは、サポートされていないパターンを使 うと、そのパターンはマッチしない。これは正規表現エンジンのデバッグ用。 + Using automatic selection enables Vim to switch the engine, if the + default engine becomes too costly. E.g., when the NFA engine uses too + many states. This should prevent Vim from hanging on a combination of + a complex pattern with long text. *'relativenumber'* *'rnu'* *'norelativenumber'* *'nornu'* 'relativenumber' 'rnu' 切替 (既定ではオフ) @@ -5885,8 +6038,10 @@ Note 1番目の形式では、行全体がオプション指定に使われる 挿入モードでの文字の挿入が通常と逆向きになる。"typing backwards" を参 照 |ins-reverse|。このオプションは、オプション 'allowrevins' がオンな らば挿入モードでコマンド CTRL-_ を使うことで切り替えられる。 - NOTE: このオプションは、オプション 'compatible' または 'paste' がオン - のときはオフになるので注意。 + NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな + るので注意。 + This option is reset when 'paste' is set and restored when 'paste' is + reset. *'rightleft'* *'rl'* *'norightleft'* *'norl'* 'rightleft' 'rl' 切替 (既定ではオフ) @@ -5916,6 +6071,17 @@ Note 1番目の形式では、行全体がオプション指定に使われる これはヘブライ語、アラビア語、ペルシア語などの言語で便利である。 オプション 'rightleft' を設定しないと 'rightleftcmd' は効果がない。 + *'rubydll'* +'rubydll' string (default: depends on the build) + global + {not in Vi} + {only available when compiled with the |+ruby/dyn| + feature} + Specifies the name of the Ruby shared library. The default is + DYNAMIC_RUBY_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'ruler'* *'ru'* *'noruler'* *'noru'* 'ruler' 'ru' 切替 (既定ではオフ) グローバル @@ -5940,7 +6106,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる の列数が、ダッシュで区切られて両方表示される。 空行では "0-1" と表示される。 空のバッファでは行数も0になり、 "0,0-1" と表示される。 - このオプションは、'paste' がオンのときはオフになる。 + This option is reset when 'paste' is set and restored when 'paste' is + reset. ルーラーを常に表示したくはないが、テキスト内のどこにいるのか知りたいと きは、コマンド "g CTRL-G" を使うこと |g_CTRL-G|。 NOTE: このオプションは、オプション 'compatible' がオンのときはオフに @@ -6508,6 +6675,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる c |ins-completion-menu| 関連のメッセージを表示しない。例えば、 "-- XXX補完 (YYY)"、"1 番目の該当 (全該当 2 個中)"、"唯一の該 当"、"パターンは見つかりませんでした"、"始めに戻る"、など。 + q use "recording" instead of "recording @a" このオプションはバッファを変更するとき <Enter> を打ち込むのを避ける機 会を提供する。が、表示の余裕がある限り有益なメッセージを表示する。 @@ -6594,7 +6762,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる チした括弧が画面上に見えているときのみジャンプする。マッチを表示する時 間はオプション 'matchtime' で設定できる。 マッチする閉じ括弧がないときは、ビープ音が鳴る (マッチが見えても見えな - くても)。このオプションは、'paste' がオンのときはオフになる。 + くても)。 + This option is reset when 'paste' is set and restored when 'paste' is + reset. 'cpoptions' にフラグ 'm' が含まれていないときは、ジャンプ中に文字を入 力するとカーソルがすぐに元の場所に戻る。 マッチの表示時のカーソルの形状や点滅方法については、'guicursor' の @@ -6702,8 +6872,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる ここで ^H は CTRL-V CTRL-H と打ち込むと入力される。 コマンド ">>" を使ったとき、'#' で始まる行は右に移動しない。 NOTE: 'smartindent' は、'compatible' がオンのときはオフに設定されるの - で注意。また 'paste' がオンのときは高度なインデントは使えないことも注 - 意。 + で注意。 + This option is reset when 'paste' is set and restored when 'paste' is + reset. *'smarttab'* *'sta'* *'nosmarttab'* *'nosta'* 'smarttab' 'sta' 切替 (既定ではオフ) @@ -6719,6 +6890,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 挿入される文字 (タブ文字または空白) は 'expandtab' によって変わる。 |ins-expandtab| も参照。'expandtab' がオフのときは、 <Tab> を打ち込む と空白の数が最小になる {訳注: できる限り空白をタブ文字で置き換える}。 + This option is reset when 'paste' is set and restored when 'paste' is + reset. NOTE: このオプションは、オプション 'compatible' がオンのときはオフにな るので注意。 @@ -6734,7 +6907,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 作する。 'sts' がゼロならこの機能は無効になる。 'sts' がマイナスなら 'shiftwidth' の値が使われる。 - このオプションは、'paste' がオンのときは 0 になる。 + 'softtabstop' is set to 0 when the 'paste' option is set and restored + when 'paste' is reset. |ins-expandtab| も参照。'expandtab' がオフのときは、<Tab> を打ち込むと 空白の数が最小になる {訳注: できる限り空白をタブ文字で置き換える}。 'cpoptions' にフラグ 'L' を含めると、'list' がオンのとき、タブの扱い方 @@ -6813,6 +6987,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 小文字で2文字の地域名である。複数の地域名を列挙することもできる: "en_us, en_ca" とすると US 英語とカナダ英語の両方に対応する。しかし オーストラリア、ニュージーランド、英国に固有の単語には対応しない。 + (Note: currently en_au and en_nz dictionaries are older than en_ca, + en_gb and en_us). "cjk" という名前が含まれる場合は、東アジアの文字はスペルチェックから除 外される。これは、アジアの文字を含むようなテキストを編集する際に便利で ある。 @@ -7058,7 +7234,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる 全体が空になる。これにより、次のようなグループは、フラグがどれも設定さ れていないときは全く表示されない。 > :set statusline=...%(\ [%M%R%H]%)... -< +< *g:actual_curbuf* 気を付けてほしいのは、expression はステータス行が表示されるたびに評価 されるということだ。あるバッファまたはウィンドウのステータス行が描画さ れている最中は、一時的にそのバッファまたはウィンドウがカレントバッファ @@ -7190,6 +7366,7 @@ Note 1番目の形式では、行全体がオプション指定に使われる を分割する。 含まれていないときは、分割はされない。カレントウィンド ウが使われる。 + vsplit Just like "split" but split vertically. newtab "split" と同様だが、新しいタブページを開く。"split" と 両方指定された場合はこちらが優先される。 @@ -7319,12 +7496,20 @@ Note 1番目の形式では、行全体がオプション指定に使われる < ['0' の前後の余白は、単一の <Tab> でなければならない] 二分探索が完了し、'tags' で列挙されたどのファイルからもマッチが見つか - らなかった場合、'ignorecase' がオンであるか、もしくはその検索がタグ名 - による検索ではなくパターンによる検索であれば、線形探索を使って検索が再 - 試行される。 + らなかった場合、かつ大文字小文字が無視される場合、もしくはその検索がタ + グ名による検索ではなくパターンによる検索であれば、線形探索を使って検索 + が再試行される。 整列されていないタグファイル内のタグや、大文字と小文字の違いのあるマッ チは、再試行でのみ見つかるだろう。 + If a tag file indicates that it is case-fold sorted, the second, + linear search can be avoided when case is ignored. Use a value of '2' + in the "!_TAG_FILE_SORTED" line for this. A tag file can be case-fold + sorted with the -f switch to "sort" in most unices, as in the command: + "sort -f -o tags tags". For "Exuberant ctags" version 5.x or higher + (at least 5.5) the --sort=foldcase switch can be used for this as + well. Note that case must be folded to uppercase for this to work. + {参考用の旧訳: タグファイルが大文字・小文字を無視して整列されていることを示しているな ら、'ignorecase' のための線形探索はしなくてもよくなる。それには "!_TAG_FILE_SORTED" 行の値として '2' を使う。ほとんどの Unix では @@ -7333,6 +7518,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる tags tags"。"Exuberant ctags" のバージョン 5.x 以降 (少なくとも 5.5 以 降) ではオプション --sort=foldcase をつけることでこれと同様のことがで きる。Note: これが機能するために文字は大文字にまとめられる。 + :旧訳ここまで} + + By default, tag searches are case-sensitive. Case is ignored when + 'ignorecase' is set and 'tagcase' is "followic", or when 'tagcase' is + "ignore". 'tagbsearch' がオフの場合、完全なマッチがあるときはタグの検索はより遅 くなるが、完全なマッチがないときは検索はより速くなる。整列されていない @@ -7345,6 +7535,16 @@ Note 1番目の形式では、行全体がオプション指定に使われる ばコマンドライン補完や ":help") には影響しない。 {Vi: バージョンによっては常に二分探索を使う} + *'tagcase'* *'tc'* +'tagcase' 'tc' string (default "followic") + global or local to buffer |global-local| + {not in Vi} + This option specifies how case is handled when searching the tags + file: + followic Follow the 'ignorecase' option + ignore Ignore case + match Match case + *'taglength'* *'tl'* 'taglength' 'tl' 数値 (既定では 0) グローバル @@ -7402,6 +7602,17 @@ Note 1番目の形式では、行全体がオプション指定に使われる このオプションをオンにするのは、":tag" をマッピング内で使っていて、タ グスタックを変更すべきでないときに便利である。 + *'tcldll'* +'tcldll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+tcl/dyn| + feature} + Specifies the name of the Tcl shared library. The default is + DYNAMIC_TCL_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'term'* *E529* *E530* *E531* 'term' 文字列 (既定では $TERM、それが失敗したら GUI版では: "builtin_gui" @@ -7450,14 +7661,12 @@ Note 1番目の形式では、行全体がオプション指定に使われる イが理解できるかを指定する。GUI版ではキーボードにのみ適用される (ディ スプレイにはオプション 'encoding' が使われる)。Macで 'macatsui' がオフ になっているときは例外で、'termencoding' は "macroman" になる。 - Win32 のコンソール版では、コンソールのコードページがANSIコードページで - ないなら場合、その値が既定値となる。 *E617* Note: これはGTK+ 2 GUIには適用されない。GUIの初期化に成功した後で強制 的に 'termencoding' が "utf-8" に設定される。 これを他の値に設定しようとしても失敗し、エラーメッセージが表示される。 - Win32 GUIでは 'termencoding' は入力された文字に対しては適用されない。 - Win32では常にUnicode文字が渡されるからである。 + Win32 GUIとコンソールでは 'termencoding' は使用されない。Win32では常に + Unicode文字が渡されるからである。 空のときは、'encoding' で指定されたエンコーディングが使われる。これが 通常の値である。 'termencoding' と 'encoding' の組み合わせが全て正しいわけではない。 @@ -7505,9 +7714,11 @@ Note 1番目の形式では、行全体がオプション指定に使われる バッファについてローカル {Vi にはない} 入力されているテキストの最大幅。行がそれより長くなると、この幅を超えな - いように空白の後で改行される。値を 0 に設定すると無効になる。オプショ - ン 'textwidth' が 0 のときは、'wrapmargin' が使われる場合がある。 - 'formatoptions' と |ins-textwidth| を参照。 + いように空白の後で改行される。値を 0 に設定すると無効になる。 + 'textwidth' is set to 0 when the 'paste' option is set and restored + when 'paste' is reset. + オプション 'textwidth' が 0 のときは、'wrapmargin' が使われる場合があ + る。'formatoptions' と |ins-textwidth| を参照。 'formatexpr' が設定されている場合、その値を使って改行される。 NOTE: このオプションは、オプション 'compatible' がオンのときは 0 にな るので注意。 @@ -8050,8 +8261,9 @@ Note 1番目の形式では、行全体がオプション指定に使われる % これが含まれると、バッファリストを保存・復元する。Vimの起動時 にファイル名が引数に含まれていると、バッファリストは復元されな い。 Vimの起動時にファイル名が引数に含まれていないと、バッファ - リストが viminfo ファイルから復元される。ファイル名のないバッ - ファとヘルプ用バッファは、viminfo ファイルには書き込まれない。 + リストが viminfo ファイルから復元される。 Quickfix + ('buftype'), unlisted ('buflisted'), unnamed and buffers on + removable media (|viminfo-r|) are not saved. このフラグの後に続けて数値を書くと、保存されるバッファ数の最大 値を指定することができる。数値が書かれていない場合、全てのバッ ファが保存される。 @@ -8525,6 +8737,8 @@ Note 1番目の形式では、行全体がオプション指定に使われる 'number' や 'foldcolumn' など幅をとるオプションを使用していると、テキ ストの幅がこの値より少なくなる。これはVi互換の動作である。 オプション 'textwidth' が非0 のときは、このオプションは使われない。 + This option is set to 0 when 'paste' is set and restored when 'paste' + is reset. 'formatoptions' と |ins-textwidth| も参照。 {Vi: 少し不便な、違った動 作をする} From ab82c4b2bfa7870a94c179f8cfbf06e1851fdcd6 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro <koron.kaoriya@gmail.com> Date: Sat, 30 Jan 2016 20:23:06 +0900 Subject: [PATCH 759/783] finish to impose english texts --- catchup-7.4.1194.md | 11 +- doc/pi_netrw.jax | 1028 +++++++++++++++++++++++++++++++------------ 2 files changed, 756 insertions(+), 283 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 235a380a2..37c26ee69 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -9,18 +9,12 @@ ## 流れ 1. 英語ファイルを全部更新 (終わった!) -2. 1の差分を見ながら、日本語ファイルに英文のまま反映 (最低限の目標) +2. 1の差分を見ながら、日本語ファイルに英文のまま反映 (最低限の目標:終わった!) 3. 2の差分を翻訳 (できたらココまでやりたい) 4. このファイルを削除 ## ファイル一覧 -### 未作業 - -追いついたファイルは、下記の一覧から削除し、適切なセクションへ移動 - - doc/pi_netrw.jax - ### 英文だけは反映済み 以上は変更点が100行未満なので、翻訳しやすいはず。 @@ -46,7 +40,7 @@ doc/spell.jax doc/tagsrch.jax doc/term.jax - doc/usr_02.jax # 行数は多いけど、まとまった書き換えで、楽そう + doc/usr_02.jax # 行数は多いけど、まとまった書き換えで、楽そう doc/usr_03.jax doc/usr_41.jax doc/various.jax @@ -55,6 +49,7 @@ doc/eval.jax doc/options.jax + doc/pi_netrw.jax # 地獄 doc/syntax.jax doc/windows.jax diff --git a/doc/pi_netrw.jax b/doc/pi_netrw.jax index aa010ee40..27492490b 100644 --- a/doc/pi_netrw.jax +++ b/doc/pi_netrw.jax @@ -1,4 +1,4 @@ -*pi_netrw.txt* For Vim バージョン 7.4. Last change: 2014 May 13 +*pi_netrw.txt* For Vim バージョン 7.4. Last change: 2015 Oct 31 ------------------------------------------------ NETRW REFERENCE MANUAL by Charles E. Campbell @@ -6,7 +6,7 @@ Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM> (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* +Copyright: Copyright (C) 1999-2015 Charles E Campbell *netrw-copyright* The VIM LICENSE applies to the files in this package, including netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and syntax/netrw.vim. Like anything else that's free, netrw.vim and its @@ -20,7 +20,7 @@ Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* *dav* *ftp* *netrw-file* *rcp* *scp* *davs* *http* *netrw.vim* *rsync* *sftp* - *fetch* *netrw* *network* + *fetch* *network* ============================================================================== 1. 目次 *netrw-contents* {{{1 @@ -57,7 +57,7 @@ Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* ブックマークしたディレクトリに移動..................|netrw-gb| 前方のディレクトリに移動............................|netrw-u| 後方のディレクトリに移動............................|netrw-U| - ユーザー定義関数でブラウジングをカスタマイズ........|netrw-x| + 特殊ハンドラでブラウジングをカスタマイズ............|netrw-x| ブックマークの削除..................................|netrw-mB| ファイル/ディレクトリの削除.........................|netrw-D| ディレクトリ探査コマンド............................|netrw-explore| @@ -76,7 +76,9 @@ Copyright: Copyright (C) 1999-2014 Charles E Campbell *netrw-copyright* ファイルのマークを外す..............................|netrw-mF| QuickFix リストを使ってファイルをマークする.........|netrw-qF| 正規表現を使ってファイルをマークする................|netrw-mr| - マークファイル: 任意のコマンド......................|netrw-mx| + マークファイル: シュルコマンド......................|netrw-mx| + Marked Files: Arbitrary Shell Command, En Bloc......|netrw-mX| + Marked Files: Arbitrary Vim Command.................|netrw-mv| マークファイル: 圧縮と伸長..........................|netrw-mz| マークファイル: コピー..............................|netrw-mc| マークファイル: Diff................................|netrw-md| @@ -193,22 +195,23 @@ scp や ftp 以外のプロトコルもサポートされています。次の 外部プログラムとプロトコル *netrw-externapp* {{{2 - プロトコル 変数 初期設定 - -------- ---------------- ------------- - dav: *g:netrw_dav_cmd* = "cadaver" if cadaver があるなら - dav: g:netrw_dav_cmd = "curl -o" elseif curl があるなら - fetch: *g:netrw_fetch_cmd* = "fetch -o" if fetch があるなら - ftp: *g:netrw_ftp_cmd* = "ftp" - http: *g:netrw_http_cmd* = "elinks" if elinks があるなら - http: g:netrw_http_cmd = "links" elseif links があるなら - http: g:netrw_http_cmd = "curl" elseif curl があるなら - http: g:netrw_http_cmd = "wget" elseif wget があるなら - http: g:netrw_http_cmd = "fetch" elseif fetch があるなら + プロトコル 変数 初期設定 + -------- ---------------- ------------- + dav: *g:netrw_dav_cmd* = "cadaver" if cadaver があるなら + dav: g:netrw_dav_cmd = "curl -o" elseif curl があるなら + fetch: *g:netrw_fetch_cmd* = "fetch -o" if fetch があるなら + ftp: *g:netrw_ftp_cmd* = "ftp" + http: *g:netrw_http_cmd* = "elinks" if elinks があるなら + http: g:netrw_http_cmd = "links" elseif links があるなら + http: g:netrw_http_cmd = "curl" elseif curl があるなら + http: g:netrw_http_cmd = "wget" elseif wget があるなら + http: g:netrw_http_cmd = "fetch" elseif fetch があるなら http: *g:netrw_http_put_cmd* = "curl -T" - rcp: *g:netrw_rcp_cmd* = "rcp" - rsync: *g:netrw_rsync_cmd* = "rsync -a" - scp: *g:netrw_scp_cmd* = "scp -q" - sftp: *g:netrw_sftp_cmd* = "sftp" + rcp: *g:netrw_rcp_cmd* = "rcp" + rsync: *g:netrw_rsync_cmd* = "rsync -a" + scp: *g:netrw_scp_cmd* = "scp -q" + sftp: *g:netrw_sftp_cmd* = "sftp" + file: *g:netrw_file_cmd* = "elinks" or "links" *g:netrw_http_xcmd* : http://... プロトコルで使用するオプションはこの 変数で指定できます。コマンドに合わせて設定を変更してください。初期設定 @@ -360,7 +363,12 @@ Netrw にはたくさんの変数が用意されていて、好きなように fun! MyFuncRef() endfun let g:Netrw_funcref= function("MyFuncRef") + < + *g:Netrw_UserMaps* specifies a function or |List| of functions which can + be used to set up user-specified maps and functionality. + See |netrw-usermaps| + *g:netrw_ftp* 変数が存在しない場合はデフォルト ftp 使用 =0 デフォルト ftp を使う (uid password) =1 ftp の別方式を使う (user uid password) @@ -399,6 +407,14 @@ Netrw にはたくさんの変数が用意されていて、好きなように *g:netrw_preview* =0 (初期設定) プレビューウィンドウを水平分割で表示する =1 プレビューウィンドウを垂直分割で表示する。 "直前のウィンドウ" (|netrw-P|参照) にも作用します。 + The |g:netrw_alto| variable may be used to provide + additional splitting control: + g:netrw_preview g:netrw_alto result + 0 0 |:aboveleft| + 0 1 |:belowright| + 1 0 |:topleft| + 1 1 |:botright| + To control sizing, see |g:netrw_winsize| *g:netrw_scpport* = "-P" : scp のポート番号を設定するためのオプション *g:netrw_sshport* = "-p" : ssh のポート番号を設定するためのオプション @@ -663,6 +679,16 @@ ftp でパスワードが必要なときは Vim の組み込み関数 |inputsecr filetype plugin indent on endif < +By also including the following lines in your .vimrc, one may have netrw +immediately activate when using [g]vim without any filenames, showing the +current directory: > + + " Augroup VimStartup: + augroup VimStartup + au! + au VimEnter * if expand("%") == "" | e . | endif + augroup END +< ============================================================================== 6. 透過的なリモートファイル編集 *netrw-transparent* {{{1 @@ -818,7 +844,7 @@ netrw は複数のプロトコルをサポートしています。それぞれ g:netrw_http_cmd 変数 ="fetch -o" if fetch があるなら g:netrw_http_cmd 変数 ="wget -O" else if wget があるなら g:netrw_http_put_cmd 変数 ="curl -T" - g:netrw_list_cmd 変数 ="ssh USEPORT HOSTNAME ls -Fa" + |g:netrw_list_cmd| 変数 ="ssh USEPORT HOSTNAME ls -Fa" g:netrw_rcp_cmd 変数 ="rcp" g:netrw_rsync_cmd 変数 ="rsync -a" g:netrw_scp_cmd 変数 ="scp -q" @@ -1017,6 +1043,10 @@ QUICK HELP *netrw-quickhelp* {{{2 < <F1> Netrw のヘルプを開く <cr> ディレクトリに移動、またはファイルを開く |netrw-cr| <del> ファイル/ディレクトリを削除する |netrw-del| + <c-h> 隠しファイルのパターンを編集する |netrw-ctrl-h| + <c-l> 最新の情報に更新する |netrw-ctrl-l| + <c-r> Browse using a gvim server |netrw-ctrl-r| + <c-tab> Shrink/expand a netrw/explore window |netrw-c-tab| - 一つ上のディレクトリに移動する |netrw--| a 隠しファイルの表示を切り替える |netrw-a| 通常表示 @@ -1027,15 +1057,17 @@ QUICK HELP *netrw-quickhelp* {{{2 d ディレクトリを作成する |netrw-d| D ファイル/ディレクトリ(複数可)を削除する |netrw-D| gb 前のブックマークされたディレクトリに移動 |netrw-gb| + gd Force treatment as directory |netrw-gd| + gf Force treatment as file |netrw-gf| gh ドットファイルの表示/非表示を切り替える |netrw-gh| - <c-h> 隠しファイルのパターンを編集する |netrw-ctrl-h| i 表示方法を切り替える (thin, long, wide, tree) |netrw-i| - <c-l> 最新の情報に更新する |netrw-ctrl-l| mb カレントディレクトリをブックマークする |netrw-mb| mc マークしたファイルをターゲットディレクトリにコピー |netrw-mc| md マークしたファイルの差分を表示する (3ファイルまで) |netrw-md| me マークしたファイルを引数リストに入れ編集する |netrw-me| mf ファイルをマークする |netrw-mf| + mF Unmark files |netrw-mF| + mg Apply vimgrep to marked files |netrw-mg| mh マークしたファイルの拡張子を隠しリストに登録/解除 |netrw-mh| mm マークしたファイルをターゲットディレクトリに移動 |netrw-mm| mp マークしたファイルを印刷する |netrw-mp| @@ -1043,7 +1075,9 @@ QUICK HELP *netrw-quickhelp* {{{2 mt 表示中のディレクトリをターゲットディレクトリにする |netrw-mt| mT マークしたファイルに対して ctags を実行 |netrw-mT| mu すべてのマークを解除する |netrw-mu| + mv Apply arbitrary vim command to marked files |netrw-mv| mx マークしたファイルに対して任意のシェルコマンドを実行 |netrw-mx| + mX Apply arbitrary shell command to marked files en bloc|netrw-mX| mz マークしたファイルを圧縮/伸長する |netrw-mz| o カーソル位置のファイル/ディレクトリを |netrw-o| 新しいウィンドウで開く。水平分割。 @@ -1052,6 +1086,7 @@ QUICK HELP *netrw-quickhelp* {{{2 P 直前に使用していたウィンドウで開く |netrw-P| qb ブックマークと履歴の一覧を表示する |netrw-qb| qf ファイル情報を表示する |netrw-qf| + qF Mark files using a quickfix list |netrw-qF| r ソート順を逆にする |netrw-r| R ファイル/ディレクトリ(複数可)の名前を変える |netrw-R| s ソート方法を変える: name, time, file size |netrw-s| @@ -1073,8 +1108,8 @@ QUICK HELP *netrw-quickhelp* {{{2 |netrw-P| 参照 <rightmouse> (gvim only) 選択したファイル/ディレクトリを削除する。 <2-leftmouse> (gvim only) 使用できる条件: - * netrw からファイルを開いたとき - * |g:netrw_retmap| == 1 + * netrw からファイルを開いたとき (かつ) + * |g:netrw_retmap| == 1 (かつ) * netrw がロードされた時点で <2-leftmouse> に対する マップが定義されていない netrw ブラウザウィンドウに戻る。|g:netrw_retmap|参照。 @@ -1091,7 +1126,7 @@ QUICK HELP *netrw-quickhelp* {{{2 :Ntree....................................................|netrw-ntree| :Explore[!] [dir] カレントファイルのディレクトリを開く...|netrw-explore| :Hexplore[!] [dir] 水平分割 & Explore.....................|netrw-explore| - :Lexplore [dir] 左エクスプローラー切り替え.............|netrw-explore| + :Lexplore[!] [dir] 左エクスプローラー切り替え.............|netrw-explore| :Nexplore[!] [dir] 垂直分割 & Explore.....................|netrw-explore| :Pexplore[!] [dir] 垂直分割 & Explore.....................|netrw-explore| :Rexplore Explorer に戻る........................|netrw-explore| @@ -1101,17 +1136,44 @@ QUICK HELP *netrw-quickhelp* {{{2 ディレクトリをブックマークする {{{2 *netrw-mb* *netrw-bookmark* *netrw-bookmarks* -次のコマンドでディレクトリをブックマークできます > + +次のコマンドで現在見ているディレクトリをブックマークできます > mb < + *.netrwbook* ブックマークは $HOME/.netrwbook に保存されます。ブックマークは常にソートされま す。 +If there are marked files and/or directories, mb will add them to the bookmark +list. + +*netrw-:NetrwMB* +Addtionally, one may use :NetrwMB to bookmark files or directories. > + + :NetrwMB[!] [files/directories] + +< No bang: enters files/directories into Netrw's bookmark system + + No argument and in netrw buffer: + if there are marked files : bookmark marked files + otherwise : bookmark file/directory under cursor + No argument and not in netrw buffer: bookmarks current open file + Has arguments : |glob()|s each arg and bookmarks them + + With bang: deletes files/directories from Netrw's bookmark system + +The :NetrwMB command is available outside of netrw buffers (once netrw has been +invoked in the session). + +The file ".netrwbook" holds bookmarks when netrw (and vim) is not active. By +default, its stored on the first directory on the user's |'runtimepath'|. + 関連項目: |netrw-gb| ブックマークに戻る (移動する) |netrw-mB| ブックマークを削除する |netrw-qb| ブックマークを一覧表示する + |g:netrw_home| controls where .netrwbook is kept ブラウジング *netrw-cr* {{{2 @@ -1134,7 +1196,7 @@ QUICK HELP *netrw-quickhelp* {{{2 gui (gvim) では <leftmouse> (左クリック) でファイルを選択できます。また、 - *|g:netrw_retmap| == 1 (初期設定は0) + * |g:netrw_retmap| == 1 (初期設定は0) * netrw からファイルを開いたとき * netrw がロードされた時点で <2-leftmouse> に対するマップが定義されていない @@ -1155,11 +1217,14 @@ gui (gvim) では <leftmouse> (左クリック) でファイルを選択でき ルが置かれているディレクトリを閉じることができます。 -関連トピック: |netrw-o| |netrw-p| |netrw-P| |netrw-t| |netrw-v| -関連設定: |g:netrw_browse_split| |g:netrw_fastbrowse| - |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| - |g:netrw_ftp_timelist_cmd| |g:netrw_ssh_cmd| - |g:netrw_ssh_browse_reject| |g:netrw_use_noswf| +関連トピック: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| +関連設定: + |g:netrw_browse_split| |g:netrw_fastbrowse| + |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| + |g:netrw_ftp_timelist_cmd| |g:netrw_ssh_browse_reject| + |g:netrw_ssh_cmd| |g:netrw_use_noswf| 水平分割ウィンドウを使ったブラウジング *netrw-o* *netrw-horiz* {{{2 @@ -1172,19 +1237,23 @@ gui (gvim) では <leftmouse> (左クリック) でファイルを選択でき 関連設定: |g:netrw_alto| |g:netrw_winsize| -関連アクション |netrw-cr| |netrw-p| |netrw-t| |netrw-v| +関連トピック: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| 関連設定変数: |g:netrw_alto| 分割の方向 (上/下) を制御 |g:netrw_winsize| 初期サイズを制御 -タブを使ったブラウジング *netrw-t* +タブを使ったブラウジング *netrw-t* {{{2 <cr> でファイル/ディレクトリを開くことができますが、代わりに "t" マップを使え ばそれを新しいタブで開くことができます。 バックグラウンドタブで新しく開きたい場合は |gT| を使います。 -関連アクション |netrw-cr| |netrw-o| |netrw-p| |netrw-v| +関連トピック: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| 関連設定変数: |g:netrw_winsize| 初期サイズを制御 @@ -1199,11 +1268,29 @@ gui (gvim) では <leftmouse> (左クリック) でファイルを選択でき 一つのディレクトリには一つのバッファが使われます。"v" で表示済みのサブディレク トリを開くとウィンドウは分割されますが、同じバッファが再び表示されます。 -関連アクション: |netrw-cr| |netrw-o| |netrw-t| |netrw-v| +関連トピック: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| 関連設定変数: |g:netrw_altv| 分割の方向 (右/左) を制御 |g:netrw_winsize| 初期サイズを制御 + +BROWSING USING A GVIM SERVER *netrw-ctrl-r* {{{2 + +One may keep a browsing gvim separate from the gvim being used to edit. +Use the <c-r> map on a file (not a directory) in the netrw browser, and it +will use a gvim server (see |g:netrw_servername|). Subsequent use of <cr> +(see |netrw-cr|) will re-use that server for editing files. + +Related topics: + |netrw-ctrl-r| |netrw-o| |netrw-p| + |netrw-P| |netrw-t| |netrw-v| +Associated setting variables: + |g:netrw_servername| : sets name of server + |g:netrw_browse_split| : controls how <cr> will open files + + 一覧表示スタイル変更 (THIN LONG WIDE TREE) *netrw-i* {{{2 (細 長 広 ツリー) @@ -1229,7 +1316,7 @@ tree 形式ではトップディレクトリに続いてファイル/ディレ デフォルトの表示スタイルを変更できます。(|g:netrw_liststyle|) 参照。 例えば、次の行を .vimrc に書くと: > - let g:netrw_liststyle= 4 + let g:netrw_liststyle= 3 ツリー形式の表示スタイルがデフォルトで使用されます。 ツリー形式を使う典型的な方法は以下の通りです: > @@ -1280,15 +1367,23 @@ Note: |netrw-qb| はブックマークと履歴を両方表示します。履歴 リに移動できます。反対に移動したい場合は |netrw-U| を参照。 "u" マップはカウントを指定することができ、履歴の特定の位置に戻ることができま -す。|netrw-qb| の一覧で表示される履歴の番号はこのカウントとして使えます。 +す。qb (|netrw-qb|を参照) の一覧で表示される履歴の番号はこのカウントとして使え +ます。 -履歴の量を制御するには |g:netrw_dirhistmax| を参照。 + *.netrwhist* +履歴の量を制御するには |g:netrw_dirhistmax| を参照。 The file ".netrwhist" +holds history when netrw (and vim) is not active. By default, its stored on +the first directory on the user's |'runtimepath'|. + +Related Topics: + |netrw-U| changing to a successor directory + |g:netrw_home| controls where .netrwhist is kept 次のディレクトリに進む *netrw-U* *netrw-downdir* {{{2 "U" マップを使用すると、次のディレクトリに移動できます。このマップは "u" マッ -プの反対です (|netrw-u|参照)。q マップを使用するとブックマークと履歴の一覧を表 +プの反対です (|netrw-u|参照)。qb マップを使用するとブックマークと履歴の一覧を表 示できます (|netrw-qb|参照)。 "U" マップはカウントを指定することができ、履歴の特定の位置に進むことができま @@ -1297,7 +1392,7 @@ Note: |netrw-qb| はブックマークと履歴を両方表示します。履歴 履歴の量を制御するには |g:netrw_dirhistmax| を参照。 -ツリーのトップを変更する *netrw-ntree* *:Ntree* +ツリーのトップを変更する *netrw-ntree* *:Ntree* *netrw-gn* {{{2 ツリー表示のツリーのトップを変更するには次のコマンドを使います > @@ -1307,20 +1402,24 @@ Note: |netrw-qb| はブックマークと履歴を両方表示します。履歴 る)。 "dirname" を指定した場合、指定された名前が使われます。 +The "gn" map will take the word below the cursor and use that for +changing the top of the tree listing. + -NETRW CLEAN *netrw-clean* *:NetrwClean* +NETRW CLEAN *netrw-clean* *:NetrwClean* {{{2 -:NetrwClean を使うと、ホームディレクトリから netrw を削除できます。正確には、 +NetrwClean を使うと、ホームディレクトリから netrw を削除できます。正確には、 |'runtimepath'| の最初のディレクトリから削除します。 -:NetrwClean! を使うと、|'runtimepath'| のすべてのディレクトリから netrw を削除 -できます。 +NetrwClean! を使うと、|'runtimepath'| のすべてのディレクトリから netrw を削除 +しようと試みます。 Of course, you have to have write/delete permissions +correct to do this. どちらのコマンドも、本当に削除していいかどうかを確認するダイアログが最初に表示 されます。ファイルを削除する権限がない場合はエラーメッセージが表示されます。 *netrw-gx* -ユーザー定義関数でブラウジングをカスタマイズ *netrw-x* *netrw-handler* {{{2 +特殊ハンドラででブラウジングをカスタマイズ *netrw-x* *netrw-handler* {{{2 (|netrw_filehandler|も参照) html, gif, jpeg, (word/office) doc などのファイルは専用ハンドラ (コンピュータ @@ -1329,7 +1428,7 @@ Netrw ではそのような専用ハンドラの呼び出しをサポートし * ファイル一覧表示中に "x" キーを押す * ファイルを開いているときに、ファイル名の上で gx を押す -< (|g:netrw_nogx| が設定されている場合は使えません) +< (後ろは |g:netrw_nogx| が設定されている場合は使えません) Netrw は次の方法で専用ハンドラを決定します: @@ -1338,10 +1437,10 @@ Netrw は次の方法で専用ハンドラを決定します: :let g:netrw_browsex_viewer= "kfmclient exec" < or > - :let g:netrw_browsex_viewer= "gnome-open" + :let g:netrw_browsex_viewer= "xdg-open" < - g:netrw_browsex_viewer が '-' のときは netrwFileHandler() が最初に呼ばれま - す (|netrw_filehandler|参照)。 + g:netrw_browsex_viewer が '-' のときは netrwFileHandler#Invoke() が最初に呼 + ばれます (|netrw_filehandler|参照)。 * Windows 32 or 64 では、url と FileProtocolHandler dll が使われます。 * Gnome (with gnome-open): gnome-open が使われます。 @@ -1353,16 +1452,31 @@ Netrw は次の方法で専用ハンドラを決定します: れます。例えば OpenOffice (*.sfx)、画像表示 (*.jpg, *.gif, etc)、PostScript (*.ps, *.eps) などに対応可能です。 +The gx mapping extends to all buffers; apply "gx" while atop a word and netrw +will apply a special handler to it (like "x" works when in a netrw buffer). +One may also use visual mode (see |visual-start|) to select the text that the +special handler will use. Normally gx uses expand("<cfile>") to pick up the +text under the cursor; one may change what |expand()| uses via the +|g:netrw_gx| variable. Alternatively, one may select the text to be used by +gx via first making a visual selection (see |visual-block|). + +Associated setting variables: + |g:netrw_gx| control how gx picks up the text under the cursor + |g:netrw_nogx| prevent gx map while editing + *netrw_filehandler* -"x" マップはファイルの拡張子に応じて関数を呼び出します。ただし、あらかじめハン -ドラ関数を定義しておく必要があります。 +When |g:netrw_browsex_viewer| exists and is "-", then netrw will attempt to +handle the special file with a vim function. "x" マップはファイルの拡張子に応 +じて関数を呼び出します。ただし、あらかじめハンドラ関数を定義しておく必要があり +ます。 > + 例: mypgm.html x -> NFH_html("scp://user@host/some/path/mypgm.html") 例: mypgm.html x -> NFH_html("scp://user@host/some/path/mypgm.html") < -拡張子ごとのハンドラ関数を自分で定義できます。関数のサンプルは -<autoload/netrwFileHandlers.vim> を参照してください。例: > + 拡張子ごとのハンドラ関数を自分で定義できます。関数のサンプルは + <autoload/netrwFileHandlers.vim> を参照してください。例: > " NFH_suffix(filename) " NFH_拡張子(ファイル名) @@ -1395,6 +1509,13 @@ Netrw は次の方法で専用ハンドラを決定します: {cnt}mB < +If there are marked files, then mB will remove them from the +bookmark list. + +Alternatively, one may use :NetrwMB! (see |netrw-:NetrwMB|). > + + :NetrwMB! [files/directories] + 関連項目: |netrw-gb| ブックマークに戻る (移動する) |netrw-mb| ブックマークを設定する @@ -1454,12 +1575,12 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は :[N]Explore[!] [dir]... カレントファイルのディレクトリを開く *:Explore* :[N]Hexplore[!] [dir]... 水平分割で開く *:Hexplore* - :Rexplore ... エクスプローラーに/から戻る *:Rexplore* + :[N]Lexplore[!] [dir]... 左エクスプローラーを切り替える *:Lexplore* :[N]Sexplore[!] [dir]... カレントファイルのディレクトリを分割 *:Sexplore* して開く - :Texplore [dir]... タブで開く *:Texplore* :[N]Vexplore[!] [dir]... 垂直分割で開く *:Vexplore* - :Lexplore [dir]... 左エクスプローラーを切り替える *:Lexplore* + :Texplore [dir]... タブで開く *:Texplore* + :Rexplore ... エクスプローラーに/から戻る *:Rexplore* :Explore **/pattern で開いたときに使うコマンド : (|netrw-starstar|参照) :Nexplore............. 次のファイルに移動 *:Nexplore* @@ -1468,50 +1589,76 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は *netrw-:Explore* :Explore は、ローカルディレクトリブラウザを開始してカレントファイルのディレク トリ (または [dir] で指定されたディレクトリ) を開きます。編集中の - ファイルに未保存の変更がある場合は新しいウィンドウを作成します。そう - でない場合は同じウィンドウを使用します。通常、ウィンドウの分割は水平 - 分割です。 + ファイルに未保存の変更があり 'hidden' が設定されていない場合は新しい + ウィンドウを作成します。そうでない場合は同じウィンドウを使用します。 + 通常、ウィンドウの分割は水平分割です。 |netrw-:Rexplore| も参照。 :Explore! は、:Explore と同じですが、ウィンドウを垂直分割します。 + + *netrw-:Hexplore* +:Hexplore [dir] は、|:belowright| 水平分割を使って :Explore を実行します。 +:Hexplore! [dir] は、|:aboveleft| 水平分割を使って :Explore を実行します。 + *netrw-:Lexplore* :Lexplore [dir] 現在のタブの左側に、エクスプローラーウィンドウを開いたり閉じた りします。 [dir] を省略したときは現在のディレクトリを開きます。 :Lexplore [dir] は、どのウィンドウで実行したかに関係なく、タブの左側 - でブラウザを開き、指定されたディレクトリを表示します。初期設定では、 - :Lexplore は未初期化の |g:netrw_chgwin| を 2 に設定します。つまり - ファイルを開くときには 2 番目のウィンドウが使われるようになります。 - 参照: |netrw-C|| |g:netrw_chgwin| |g:netrw_winsize| - |netrw-p| |netrw-P|| |g:netrw_browse_split| + でブラウザを開き、指定されたディレクトリを表示します。 + + 初期設定では、:Lexplore は未初期化の |g:netrw_chgwin| を 2 に設定しま + す。つまりファイルを開くときには 2 番目のウィンドウが使われるようにな + ります。 + + The [N] specifies a |g:netrw_winsize| just for the new :Lexplore + window. + + Those who like this method often also often like tree style displays; + see |g:netrw_liststyle|. + + Also see: |netrw-C| |g:netrw_browse_split| |g:netrw_wiw| + |netrw-p| |netrw-P| |g:netrw_chgwin| + |netrw-c-tab| |g:netrw_winsize| + +:[N]Lexplore! is like :Lexplore, except that the full-height Explorer window + will open on the right hand side and an uninitialized |g:netrw_chgwin| + will be set to 1. + *netrw-:Sexplore* -:Sexplore は、常に新しいウィンドウを作成してローカルディレクトリブラウザを開始 - します。Explore と同様、通常はウィンドウは水平分割されます。 -:Sexplore! [dir] は、:Sexplore と同じですが、ウィンドウを垂直分割します。 - *netrw-:Hexplore* -:Hexplore [dir] は、|:belowright| 水平分割を使って :Explore を実行します。 -:Hexplore! [dir] は、|:aboveleft| 水平分割を使って :Explore を実行します。 +:[N]Sexplore は、常に新しいウィンドウを作成してローカルディレクトリブラウザを + 開始します。Explore と同様、通常はウィンドウは水平分割されます。 +:[N}Sexplore! [dir] は、:Sexplore と同じですが、ウィンドウを垂直分割します。 + + *netrw-:Texplore* +:Texplore [dir] は、ブラウザウィンドウを作成する前に |:tabnew| を実行します。 + *netrw-:Vexplore* :Vexplore [dir] は、|:leftabove| 垂直分割を使って :Explore を実行します。 :Vexplore! [dir] は、|:rightbelow| 垂直分割を使って :Explore を実行します。 - *netrw-:Texplore* -:Texplore [dir] は、ブラウザウィンドウを作成する前に |:tabnew| を実行します。 -引数を指定しなかった場合、これらのコマンドはカレントファイルのディレクトリを開 -きます。明示的にディレクトリ (path) を指定することもできます。 +The optional parameters are: -[N] は新しいエクスプローラーウィンドウの幅/高さを指定します。これは -|g:netrw_winsize| よりも優先されます。 + [N]: This parameter will override |g:netrw_winsize| to specify the quantity of + rows and/or columns the new explorer window should have. + Otherwise, the |g:netrw_winsize| variable, if it has been specified by the + user, is used to control the quantity of rows and/or columns new + explorer windows should have. -幅指定がない場合は、|g:netrw_winsize| 変数が (設定されているなら)、新しいエク -スプローラーウィンドウの幅/高さとして使用されます。 + [dir]: By default, these explorer commands use the current file's directory. + However, one may explicitly provide a directory (path) to use instead; + ie. > + :Explore /some/path +< *netrw-:Rexplore* :Rexplore このコマンドは他のコマンドとは少し違い、あらかじめエクスプローラー ウィンドウを開いてからでないと使えません。 エクスプローラーに戻る~ - 例えば netrw ブラウザ上でファイルの上で <cr> を押してファイルを開い - たとき、:Rexplore を使うと、そのウィンドウで最後に表示していた - netrw ブラウザの画面に戻ることができます。 + When one edits a file using netrw which can occur, for example, + when pressing <cr> while the cursor is atop a filename in a netrw + browser window, a :Rexplore issued while editing that file will + return the display to that of the last netrw browser display in + that window. エクスプローラーから戻る~ 逆に、ディレクトリを開いているとき、:Rexplore を使うと、そのウィン @@ -1523,8 +1670,8 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は 参照: |g:netrw_alto| |g:netrw_altv| |g:netrw_winsize| -*netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* -スターとパターンを使った探索 +*netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* *netrw-grep* +スターとパターンを使った探索 {{{2 Explore, Sexplore, Hexplore, Vexplore それぞれのコマンドで、次のようなパターン が使われた場合、Explore はそれにマッチするようなファイルのリストを生成します。 @@ -1623,7 +1770,7 @@ For Unix: > 関連設定: |g:netrw_sort_sequence| |g:netrw_sort_options| -カーソル位置のファイルを system() で実行する *netrw-X* +カーソル位置のファイルを system() で実行する *netrw-X* {{{2 実行ファイルの上で X を押すと引数を入力するためのプロンプトが表示されます。そ こで [return] を押すと、netrw はそのコマンドと引数で |system()| を実行します。 @@ -1706,19 +1853,20 @@ netrw にはヘルパ関数の 'netrw_gitignore#Hide()' が用意されていま |g:netrw_list_hide| と一緒に使うことで git の隠しファイルを自動的に隠すことが できます。 -'netrw_gitignore#Hide' はこれらのファイルにあるパターンを検索します: +'netrw_gitignore#Hide' はこれらのファイルにあるパターンを検索します: > + './.gitignore' './.git/info/exclude' global gitignore file: `git config --global core.excludesfile` system gitignore file: `git config --system core.excludesfile` - +< 存在しないファイルは無視されます。 git の隠しファイルのパターンは存在するファイルから取られ、隠しファイル設定のパ ターンに変換されます。例えば、'.gitignore' に '*.log' があったとすると、それは '.*\.log' に変換されます。 この関数を使うには、単にその返り値を |g:netrw_list_hide| オプションに代入しま -す。 +す。 > 例: let g:netrw_list_hide= netrw_gitignore#Hide() netrw で git の隠しファイルをすべて隠す。 @@ -1729,7 +1877,7 @@ git の隠しファイルのパターンは存在するファイルから取ら 例: g:netrw_list_hide= netrw_gitignore#Hide() . '.*\.swp$' 'netrw_gitignore#Hide' と独自のパターンを組み合わせる。 - +< ブラウジングを改善する *netrw-listhack* *netrw-ssh-hack* {{{2 @@ -1865,7 +2013,7 @@ g:netrw_keepdir が 1 のときは netrw のブラウジングディレクトリ ファイルをマークする *netrw-:MF* *netrw-mf* {{{2 (|netrw-mr|も参照) -netrw にはファイルをマークする方法がいくつかあります: +netrw はファイルをマークする方法をいくつか提供しています: * カーソルをファイル名の上に移動して "mf" を押す。 @@ -1886,6 +2034,8 @@ netrw にはファイルをマークする方法がいくつかあります: |netrw-a| ファイル/ディレクトリを隠す |netrw-D| ファイル/ディレクトリを削除する + |netrw-mb| Append marked files to bookmarks + |netrw-mB| Delete marked files from bookmarks |netrw-mc| ファイルをターゲットディレクトリにコピーする |netrw-md| マークしたファイルに vimdiff を適用する |netrw-me| マークしたファイルを開く @@ -1895,7 +2045,9 @@ netrw にはファイルをマークする方法がいくつかあります: |netrw-mp| マークしたファイル印刷する |netrw-mt| |netrw-mm| または |netrw-mc| 用のターゲットを設定する |netrw-mT| マークしたファイルのタグを生成する + |netrw-mv| Apply vim command to marked files |netrw-mx| マークしたファイルにシェルコマンドを適用する + |netrw-mX| Apply shell command to marked files, en bloc |netrw-mz| マークしたファイルを圧縮/伸長する |netrw-O| マークしたファイルを取得する |netrw-R| マークしたファイルの名前を変更する @@ -1917,13 +2069,13 @@ netrw にはファイルをマークする方法がいくつかあります: す。Shift を押したままマウスの左ボタンでドラッグすることで複数のファイルをマー クすることもできます。 (|netrw-mouse| 参照) -*markfilelist* *global_markfilelist* *local_markfilelist* + *markfilelist* *global_markfilelist* *local_markfilelist* マークされたすべてのファイルはグローバルマークファイルリストに記録されます。グ -ローバルリストは一つだけ存在します。さらに、すべての netrw バッファはローカル -マークファイルリストを持っています。netrw バッファは特定のディレクトリと結びつ -いているので、ディレクトリごとにローカルマークファイルリストが存在することにな -ります。マークされたファイルに対する操作はグローバル、またはローカルのマーク -ファイルリストに作用します。 +ローバルリストは一つだけ存在します。さらに、すべての netrw バッファは +バッファローカルマークファイルリストを持っています。netrw バッファは特定の +ディレクトリと結びついているので、ディレクトリごとにローカルマークファイルリス +トが存在することになります。マークされたファイルに対する操作はグローバル、また +はローカルのマークファイルリストに作用します。 既知の問題: ツリー表示モード (|g:netrw_liststyle|) で表示していて、複数のディ レクトリが同じ名前のファイルを持っているとき、そのどれかのファイルをマークする @@ -1933,14 +2085,14 @@ netrw にはファイルをマークする方法がいくつかあります: ファイルのマークを外す *netrw-mF* {{{2 - (|netrw-mf| も参照) + (|netrw-mf|, |netrw-mu| も参照) -このコマンドを使うとカレントバッファ内のすべてのファイルのマークを外すことがで -きます。ファイルごとに個別にマークを外したい場合は mf (|netrw-mf|) を使いま +"mF" コマンドを使うとカレントバッファ内のすべてのファイルのマークを外すことが +できます。ファイルごとに個別にマークを外したい場合は mf (|netrw-mf|) を使いま す。 -QUICKFIX リストを使ってファイルをマークする *netrw-qF* +QUICKFIX リストを使ってファイルをマークする *netrw-qF* {{{2 (|netrw-mf| も参照) |quickfix-error-lists| のファイルをマークするには "qF" を使います。続けて me @@ -1959,7 +2111,23 @@ regexp: " というプロンプトが表示されるので、例えば *.c$ の を使えるようにする予定です (また別のオプションで)。 -マークファイル: 任意のコマンド *netrw-mx* {{{2 +MARKED FILES, ARBITRARY VIM COMMAND *netrw-mv* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked-file list) + +The "mv" map causes netrw to execute an arbitrary vim command on each file on +the local marked file list, individually: + + * 1split + * sil! keepalt e file + * run vim command + * sil! keepalt wq! + +A prompt, "Enter vim command: ", will be issued to elicit the vim command +you wish used. + + +マークファイル: 任意のシェルコマンド *netrw-mx* {{{2 (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) (ローカルマークファイルリスト使用) @@ -1968,6 +2136,37 @@ regexp: " というプロンプトが表示されるので、例えば *.c$ の べての "%" は実行ごとにファイル名に置換されます。"%" が無い場合はコマンドの後 ろにスペースとファイル名が付けられます。 +Example: + (mark files) + mx + Enter command: cat + + The result is a series of shell commands: + cat 'file1' + cat 'file2' + ... + + +MARKED FILES, ARBITRARY SHELL COMMAND, EN BLOC *netrw-mX* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked-file list) + +Upon activation of the 'mX' map, netrw will query the user for some (external) +command to be applied to all marked files on the global marked file list. The +"en bloc" means that one command will be executed on all the files at once: > + + command files + +This approach is useful, for example, to select files and make a tarball: > + + (mark files) + mX + Enter command: tar cf mynewtarball.tar +< +The command that will be run with this example: + + tar cf mynewtarball.tar 'file1' 'file2' ... + マークファイル: 圧縮と伸長 *netrw-mz* {{{2 (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) @@ -1980,6 +2179,10 @@ regexp: " というプロンプトが表示されるので、例えば *.c$ の 伸長には、拡張子と伸長コマンドを関連付けた |Dictionary| が使われます。 |g:netrw_decompress| 参照。 +Remember that one can mark multiple files by regular expression +(see |netrw-mr|); this is particularly useful to facilitate compressing and +decompressing a large number of files. + 関連設定: |g:netrw_compress| |g:netrw_decompress| マークファイル: コピー *netrw-mc* {{{2 @@ -1990,7 +2193,16 @@ mt (|netrw-mt|) でコピー先ディレクトリを選択し、ファイルの 動し、mf (|netrw-mf|) でファイルを選択し、"mc" を押します。カレントウィンドウ (mf を実行した場所) からターゲットディレクトリへ、ファイルがコピーされます。 -関連設定: |g:netrw_localcopycmd| |g:netrw_ssh_cmd| +If one does not have a target directory set with |netrw-mt|, then netrw +will query you for a directory to copy to. + +One may also copy directories and their contents (local only) to a target +directory. + +Associated setting variables: + |g:netrw_localcopycmd| + |g:netrw_localcopydircmd| + |g:netrw_ssh_cmd| マークファイル: DIFF *netrw-md* {{{2 (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) @@ -2003,15 +2215,15 @@ mt (|netrw-mt|) でコピー先ディレクトリを選択し、ファイルの (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) (グローバルマークファイルリスト使用) -このコマンドはマークされたファイルを |arglist| に設定し、編集を開始します。 -|:Rexplore| でエクスプローラーウィンドウに戻ることができます。 +この "me" コマンドはマークされたファイルを |arglist| に設定し、編集を開始しま +す。|:Rexplore| でエクスプローラーウィンドウに戻ることができます。 (引数リスト内の次のファイル、前のファイルを開くには |:n| と |:p| を使う) マークファイル: GREP *netrw-mg* {{{2 (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) (グローバルマークファイルリスト使用) -マークされたファイルに対して |:vimgrep| を適用します。 +"mg" コマンドはマークされたファイルに対して |:vimgrep| を適用します。 検索パターンを入力するためのプロンプトが表示されます。次の形式で入力してくださ い: > @@ -2019,22 +2231,28 @@ mt (|netrw-mt|) でコピー先ディレクトリを選択し、ファイルの ! /pattern/[g][j] pattern < -"j" オプションを指定すると、現在のマーク済みファイルに対してパターンが適用され -ます。 -つまり、次のように連続して実行すると > - mr ...ファイルパターン - mg ..コンテンツパターン -ファイルパターンにマッチして、その中身がコンテンツパターンにマッチしたものを -マークすることができます。 +With /pattern/, editing will start with the first item on the |quickfix| list +that vimgrep sets up (see |:copen|, |:cnext|, |:cprevious|). The |:vimgrep| +command is in use, so without 'g' each line is added to quickfix list only +once; with 'g' every match is included. + +With /pattern/j, "mg" will winnow the current marked file list to just those +marked files also possessing the specified pattern. Thus, one may use > + + mr ...file-pattern... + mg /pattern/j +< +to have a marked file list satisfying the file-pattern but also restricted to +files containing some desired pattern. 拡張子による表示/非表示 *netrw-mh* {{{2 (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) (ローカルマークファイルリスト使用) -このコマンドは、マークされたファイルの拡張子を隠しリストに追加、または削除しま -す。Note: 同じ拡張子のファイルが複数選択されていた場合はファイルの数だけ追加と -削除が繰り返されます (つまり、同じ拡張子のファイルが偶数個選択されている場合は -それを選択しなかったのと同じ)。 +この "mh" コマンドは、マークされたファイルの拡張子を隠しリストに追加、または削 +除します。Note: 同じ拡張子のファイルが複数選択されていた場合はファイルの数だけ +追加と削除が繰り返されます (つまり、同じ拡張子のファイルが偶数個選択されている +場合はそれを選択しなかったのと同じ)。 関連項目: |netrw-a| |g:netrw_list_hide| @@ -2058,16 +2276,17 @@ mt (|netrw-mt|) で移動先ディレクトリを選択し、ファイルのあ (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) (ローカルマークファイルリスト使用) -マークされたファイルに対して |:hardcopy| コマンドを実行します。具体的には、そ -れぞれのファイルを一行のウィンドウで開いて、hardcopy を実行し、一行ウィンドウ -を閉じます。 +"mp" コマンドが使われるとnetrwはマークされたファイルに対して |:hardcopy| コマ +ンドを実行します。具体的には、それぞれのファイルを一行のウィンドウで開いて、 +hardcopy を実行し、一行ウィンドウを閉じます。 マークファイル: スクリプト実行 *netrw-ms* {{{2 (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) (ローカルマークファイルリスト使用) -マークされたファイルをスクリプト実行します (Vimの|:source|コマンド使用) +"ms" を使うとnetrwはマークされたファイルをスクリプト実行します (Vimの|:source| +コマンド使用) マークファイル: ターゲットディレクトリを設定する *netrw-mt* {{{2 @@ -2080,8 +2299,8 @@ mt (|netrw-mt|) で移動先ディレクトリを選択し、ファイルのあ * カーソルがバナーの上にある場合も、netrw ウィンドウに表示されているディレク トリがターゲットとして設定されます。 - ターゲットがすでにカレントディレクトリになっている場合は、ターゲットが解除 - されます。 + Unless the target already is the current directory. In which case, + typing "mf" clears the target. * カーソルがディレクトリの上にある場合は、そのディレクトリがターゲットとして 設定されます。 @@ -2090,6 +2309,9 @@ mt (|netrw-mt|) で移動先ディレクトリを選択し、ファイルのあ このコマンドは |<q-args>| を使うので、ディレクトリ名のスペースはエスケープ しなくても構いません。 + * With mouse-enabled vim or with gvim, one may select a target by using + <c-leftmouse> + ターゲットは Vim セッションで一つしか設定できません。ターゲットはスクリプト変 数 (|s:var|参照) で管理されており、(Vim のインスタンスごとの) すべての netrw ウィンドウで共有されます。 @@ -2127,7 +2349,7 @@ netrw によって url が開かれ、タグに移動できます。 関連設定: |g:netrw_ctags| |g:netrw_ssh_cmd| -マークファイル: ブックマークを使ったターゲットディレクトリ *netrw-Tb* {{{2 +マークファイル: ブックマークを使ったターゲットディレクトリ *netrw-Tb* {{{2 ファイルコピー/移動のターゲットを設定する。 @@ -2164,9 +2386,12 @@ netrw によって url が開かれ、タグに移動できます。 マークファイル: マーク解除 *netrw-mu* {{{2 - (マークの設定方法は |netrw-mf| と |netrw-mr| を参照) + (|netrw-mf| と |netrw-mr| を参照) -"mu" マップを使うと現在設定されているすべてのマークが解除されます。 +"mu" マップを使うと現在設定されているすべてのマークが解除されます。 This +command differs from "mF" as the latter only unmarks files in the current +directory whereas "mu" will unmark global and all buffer-local marked files. +(see |netrw-mF|) *netrw-browser-settings* @@ -2202,21 +2427,32 @@ netrw ブラウザの各種設定は変数で管理されていて、それを *g:netrw_banner* バナーの表示を切り替える =0: バナーを表示しない =1: バナーを表示する (初期設定) - NOTE: バナー非表示は新しい機能なので問題が起こ - るかもしれません。 + + *g:netrw_bannerbackslash* if this variable exists and is not zero, the + banner will be displayed with backslashes + rather than forward slashes. *g:netrw_browse_split* ブラウザで <cr> を押してファイルを開くとき: - =0: 同じウィンドウを使う + =0: 同じウィンドウを使う (デフォルト) =1: ウィンドウを水平分割する =2: ウィンドウを垂直分割する =3: 新しいタブで開く =4: "P" で開く (以前のウィンドウで開く) Note: |g:netrw_preview| を使うと (水平分割 から変更して) 垂直分割にできます。 + =[servername,tab-number,window-number] + Given a |List| such as this, a remote server + named by the "servername" will be used for + editing. It will also use the specified tab + and window numbers to perform editing + (see |clientserver|, |netrw-ctrl-r|) + This option does not affect |:Lexplore| + windows. 関連項目: - |netrw-cr| |netrw-C| - |g:netrw_alto| |g:netrw_altv| + |g:netrw_alto| |g:netrw_altv| + |netrw-C| |netrw-cr| + |netrw-ctrl-r| *g:netrw_browsex_viewer* ユーザー指定のビューア: > "kfmclient exec" @@ -2348,6 +2584,11 @@ netrw ブラウザの各種設定は変数で管理されていて、それを 設定された文字がディレクトリ名に使われていたら glob() を適用する前にエスケープされる。 + *g:netrw_gx* ="<cfile>" + This option controls how gx (|netrw-gx|) picks + up the text under the cursor. See |expand()| + for possibilities. + *g:netrw_hide* "a" マップを制御する (|netrw-a| 参照) =0 : すべて表示 =1 : 非隠しファイルを表示 @@ -2365,10 +2606,22 @@ netrw ブラウザの各種設定は変数で管理されていて、それを 現在のブラウジングディレクトリはb:netrw_curdir に保存されます。 (|netrw-c| 参照) + *g:netrw_keepj* ="keepj" (default) netrw attempts to keep the + |:jumps| table unaffected. + ="" netrw will not use |:keepjumps| with + exceptions only for the + saving/restoration of position. + *g:netrw_list_cmd* リモートディレクトリのファイル一覧取得コマンド 初期設定: (sshがあるなら) "ssh HOSTNAME ls -FLa" + *g:netrw_list_cmd_options* If this variable exists, then its contents are + appended to the g:netrw_list_cmd. For + example, use "2>/dev/null" to get rid of banner + messages on unix systems. + + *g:netrw_liststyle* デフォルトのファイル一覧表示スタイル: = 0: thin listing (一行に一つのファイル) = 1: long listing (一行に一つのファイル、タイ @@ -2386,7 +2639,7 @@ netrw ブラウザの各種設定は変数で管理されていて、それを 例: let g:netrw_list_hide= '.*\.swp$' - let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$' + let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$' 初期設定: "" *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin @@ -2394,10 +2647,14 @@ netrw ブラウザの各種設定は変数で管理されていて、それを マークされたファイル (|netrw-mf|) をターゲット ディレクトリにコピー (|netrw-mt|, |netrw-mc|) + *g:netrw_localcopydircmd* ="cp -R" Linux/Unix/MacOS/Cygwin + ="xcopy /e /c /h/ /i /k" Windows + Copies directories to target directory. + (|netrw-mc|, |netrw-mt|) + *g:netrw_localmkdir* ローカルディレクトリ作成コマンド 初期設定: "mkdir" - *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin ="move" Windows マークされたファイル (|netrw-mf|) をターゲット @@ -2430,6 +2687,11 @@ netrw ブラウザの各種設定は変数で管理されていて、それを この変数を定義するとバルーン評価は抑制される。 (参照 |'ballooneval'|) + *g:netrw_usetab* if this variable exists and is non-zero, then + the <tab> map supporting shrinking/expanding a + Lexplore or netrw window will be enabled. + (see |netrw-c-tab|) + *g:netrw_remote_mkdir* ftp 経由でのリモートディレクトリ作成コマンド (|g:netrw_mkdir_cmd| も参照) 初期設定: "mkdir" @@ -2464,7 +2726,12 @@ netrw ブラウザの各種設定は変数で管理されていて、それを *g:netrw_rmf_cmd* リモートのソフトリンク削除コマンド 初期設定: "ssh USEPORT HOSTNAME rm -f" - *g:netrw_sort_by* ソートの種類 ("name" or "time" or "size") + *g:netrw_servername* use this variable to provide a name for + |netrw-ctrl-r| to use for its server. + default: "NETRWSERVER" + + *g:netrw_sort_by* sort by "name", "time", "size", or + "exten". 初期設定: "name" *g:netrw_sort_direction* ソートの順序: "normal" or "reverse" @@ -2576,6 +2843,10 @@ netrw ブラウザの各種設定は変数で管理されていて、それを |'equalalways'| が機能するなど)。 初期設定: 50 (50%) + *g:netrw_wiw* =1 specifies the minimum window width to use + when shrinking a netrw/Lexplore window + (see |netrw-c-tab|). + *g:netrw_xstrlen* マルチバイト文字列の長さを計算する方法を指定す る。 (thanks to N Weibull, T Mechelynck) =0: Vim の組み込み関数 strlen() を使う @@ -2616,7 +2887,7 @@ NetrwSettings.vim プラグインのコマンド > ============================================================================== -ファイルを取得する *netrw-O* {{{2 +ファイルを取得する *netrw-obtain* *netrw-O* {{{2 マークされたファイルがない場合: @@ -2648,8 +2919,8 @@ NetrwSettings.vim プラグインのコマンド > 合は: |g:netrw_keepdir| 参照。 - *netrw-createfile* -NETRW のカレントディレクトリで新しいファイルを作成する *netrw-%* + *netrw-newfile* *netrw-createfile* +NETRW のカレントディレクトリで新しいファイルを作成する *netrw-%* {{{2 netrw のカレントディレクトリで新しいファイルを作成するには "%" を押します。 ファイル名を入力するためのプロンプトが表示されます。指定した名前の空のファイル @@ -2672,16 +2943,20 @@ netrw を次のように設定すると便利かもしれません: > let g:netrw_winsize = 30 これは: + 1. ファイルのプレビューを垂直分割で開く。 2. デフォルトの一覧表示スタイルを "tree" にする。 3. 垂直分割でプレビューウィンドウを開いたときに、ディレクトリの一覧表 示ウィンドウは列の幅の 30% しか使わないので、残りの領域をプレビュー ウィンドウの表示に使用できる。 -参照: |g:netrw_chgwin| |netrw-P| + Related: if you like this idea, you may also find :Lexplore + (|netrw-:Lexplore|) or |g:netrw_chgwin| of interest + +参照: |g:netrw_chgwin| |netrw-P| |'previewwindow'| -以前のウィンドウ *netrw-P* *netrw-prvwin* {{{2 +以前のウィンドウ *netrw-P* *netrw-prvwin* {{{2 ファイル/ディレクトリを以前の (最後にアクセスした) ウィンドウ (:he |CTRL-W_p|) で開くには、"P" を押します。ウィンドウが一つしかない場合は、新しいウィンドウが @@ -2702,7 +2977,7 @@ netrw を次のように設定すると便利かもしれません: > 参照: |g:netrw_chgwin| |netrw-p| -一覧を更新する *netrw-ctrl-l* *netrw-ctrl_l* {{{2 +一覧を更新する *netrw-refresh* *netrw-ctrl-l* *netrw-ctrl_l* {{{2 ローカル/リモートのディレクトリのファイル一覧は、ctrl-l (<c-l>) を押すか、一覧 の ./ の上で <cr> を押すことで更新できます。":e ." でローカルディレクトリを更 @@ -2724,13 +2999,33 @@ netrw を次のように設定すると便利かもしれません: > 移動 (名前変更) したいファイル/ディレクトリにカーソルを移動して "R" を押し ます。プロンプトが表示されるのでファイル/ディレクトリの移動先を入力してく ださい。"V" コマンド (ビジュアル選択) で複数の行を選択して "R" を使うこと - もできます。 + もできます。 ; you will be queried for each file as to what you want it + renamed to. マークされたファイルがある場合: (|netrw-mf| 参照) マークされたファイルを移動 (名前変更) します。プロンプトが表示されるので ファイル/ディレクトリの移動先を入力してください。 + If you answer a renaming query with a "s/frompattern/topattern/", then + subsequent files on the marked file list will be renamed by taking each + name, applying that substitute, and renaming each file to the result. + As an example : > + + mr [query: reply with *.c] + R [query: reply with s/^\(.*\)\.c$/\1.cpp/] +< + This example will mark all *.c files and then rename them to *.cpp + files. + + The ctrl-X character has special meaning for renaming files: > + + <c-x> : a single ctrl-x tells netrw to ignore the portion of the response + lying between the last '/' and the ctrl-x. + + <c-x><c-x> : a pair of contiguous ctrl-x's tells netrw to ignore any + portion of the string preceding the double ctrl-x's. +< 警告:~ Note: ファイルの移動はコピーと比べて危険です。なぜなら、リモートのファイル @@ -2738,8 +3033,8 @@ netrw を次のように設定すると便利かもしれません: > が失敗して削除が成功するとファイルが失われます。 自己責任で使ってください。 -g:netrw_rename_cmd 変数で名前変更のコマンドを指定できます。初期設定は次のとお -り: +g:netrw_rename_cmd 変数でリモートの名前変更のコマンドを指定できます。初期設定 +は次のとおり: ssh HOSTNAME mv @@ -2757,7 +3052,8 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク 関連設定: |g:netrw_sort_by| |g:netrw_sort_sequence| -ファイルを開くウィンドウを指定する *netrw-C* {{{2 +ファイルを開くウィンドウを指定する {{{2 + *netrw-editwindow* *netrw-C* *netrw-:NetrwC* ファイルを開くウィンドウを指定するには、netrw ウィンドウで "C" マップを押す か、g:netrw_chgwin にウィンドウ番号を設定します。ファイルを開く (|netrw-cr|) @@ -2768,14 +3064,99 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク * [count]C カウントを指定すると |netrw-cr| でファイルを開くときに指定 された番号のウィンドウが使用されます。 + + * :NetrwC will set |g:netrw_chgwin| to the current window + + * :NetrwC win# will set |g:netrw_chgwin| to the specified window + number + 次のように設定すると > let g:netrw_chgwin= -1 -デフォルトの動作に戻すことができます (つまり、カレントウィンドウを使う)。 +デフォルトの動作に戻すことができます +(つまり、カレントウィンドウを使う)。 関連項目: |netrw-cr| |g:netrw_browse_split| 関連設定: |g:netrw_chgwin| +SHRINKING OR EXPANDING A NETRW OR LEXPLORE WINDOW *netrw-c-tab* {{{2 + +The <c-tab> key will toggle a netrw or |:Lexplore| window's width, +but only if |g:netrw_usetab| exists and is non-zero (and, of course, +only if your terminal supports differentiating <c-tab> from a plain +<tab>). + + * If the current window is a netrw window, toggle its width + (between |g:netrw_wiw| and its original width) + + * Else if there is a |:Lexplore| window in the current tab, toggle + its width + + * Else bring up a |:Lexplore| window + +If |g:netrw_usetab| exists or is zero, or if there is a pre-existing mapping +for <c-tab>, then the <tab> will not be mapped. One may map something other +than a <c-tab>, too: (but you'll still need to have had g:netrw_usetab set) > + + nmap <unique> (whatever) <Plug>NetrwShrink +< +Related topics: |:Lexplore| +Associated setting variable: |g:netrw_usetab| + + +USER SPECIFIED MAPS *netrw-usermaps* {{{1 + +One may make customized user maps. Specify a variable, |g:Netrw_UserMaps|, +to hold a |List| of lists of keymap strings and function names: > + + [["keymap-sequence","ExampleUserMapFunc"],...] +< +When netrw is setting up maps for a netrw buffer, if |g:Netrw_UserMaps| +exists, then the internal function netrw#UserMaps(islocal) is called. +This function goes through all the entries in the |g:Netrw_UserMaps| list: + + * sets up maps: > + nno <buffer> <silent> KEYMAP-SEQUENCE + :call s:UserMaps(islocal,"ExampleUserMapFunc") +< * refreshes if result from that function call is the string + "refresh" + * if the result string is not "", then that string will be + executed (:exe result) + * if the result is a List, then the above two actions on results + will be taken for every string in the result List + +The user function is passed one argument; it resembles > + + fun! ExampleUserMapFunc(islocal) +< +where a:islocal is 1 if its a local-directory system call or 0 when +remote-directory system call. + +Use netrw#Expose("varname") to access netrw-internal (script-local) + variables. +Use netrw#Modify("varname",newvalue) to change netrw-internal variables. +Use netrw#Call("funcname"[,args]) to call a netrw-internal function with + specified arguments. + +Example: Get a copy of netrw's marked file list: > + + let netrwmarkfilelist= netrw#Expose("netrwmarkfilelist") +< +Example: Modify the value of netrw's marked file list: > + + call netrw#Modify("netrwmarkfilelist",[]) +< +Example: Clear netrw's marked file list via a mapping on gu > + " ExampleUserMap: {{{2 + fun! ExampleUserMap(islocal) + call netrw#Modify("netrwmarkfilelist",[]) + call netrw#Modify('netrwmarkfilemtch_{bufnr("%")}',"") + let retval= ["refresh"] + return retval + endfun + let g:Netrw_UserMaps= [["gu","ExampleUserMap"]] +< + 10. 問題と対策 *netrw-problems* {{{1 (何かフィードバックがあればこの項に追加していきます) @@ -2944,6 +3325,7 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク 最初の変数 (|g:netrw_ssh_cmd|) が一番重要です。他の変数は g:netrw_ssh_cmd の文字列を使って初期値が設定されます。 + *netrw-p9* *netrw-ml_get* P9. ブラウザでディレクトリを変更するとなんか変になる。ml_get エラーが 表示されて、vim を kill するしかなくなる。どうすればいいの? @@ -2969,6 +3351,14 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク P11. ウィンドウを二分割して、左の細いウィンドウをブラウザ表示に、右の ウィンドウをファイル編集用にしたいんだけど、どうすればいいの? + You probably want netrw running as in a side window. If so, you + will likely find that ":[N]Lexplore" does what you want. The + optional "[N]" allows you to select the quantity of columns you + wish the |:Lexplore|r window to start with (see |g:netrw_winsize| + for how this parameter works). + + Previous solution: + * <.vimrc> に次の設定を書く: let g:netrw_altv = 1 * カレントディレクトリを ":e ." で開く @@ -3061,15 +3451,117 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク か。 $HOME やその他の書き込み可能なディレクトリで Vim を起動して ください。 + *netrw-p17* + P17. Netrw is closing buffers on its own. + What steps will reproduce the problem? + 1. :Explore, navigate directories, open a file + 2. :Explore, open another file + 3. Buffer opened in step 1 will be closed. o + What is the expected output? What do you see instead? + I expect both buffers to exist, but only the last one does. + + (Lance) Problem is caused by "set autochdir" in .vimrc. + (drchip) I am able to duplicate this problem with |'acd'| set. + It appears that the buffers are not exactly closed; + a ":ls!" will show them (although ":ls" does not). + + *netrw-P18* + P18. How to locally edit a file that's only available via + another server accessible via ssh? + See http://stackoverflow.com/questions/12469645/ + "Using Vim to Remotely Edit A File on ServerB Only + Accessible From ServerA" + + *netrw-P19* + P19. How do I get numbering on in directory listings? + With |g:netrw_bufsettings|, you can control netrw's buffer + settings; try putting > + let g:netrw_bufsettings="noma nomod nu nobl nowrap ro nornu" +< in your .vimrc. If you'd like to have relative numbering + instead, try > + let g:netrw_bufsettings="noma nomod nonu nobl nowrap ro rnu" +< + *netrw-P20* + P20. How may I have gvim start up showing a directory listing? + Try putting the following code snippet into your .vimrc: > + augroup VimStartup + au! + au VimEnter * if expand("%") == "" && argc() == 0 && + \ (v:servername =~ 'GVIM\d*' || v:servername == "") + \ | e . | endif + augroup END +< You may use Lexplore instead of "e" if you're so inclined. + This snippet assumes that you have client-server enabled + (ie. a "huge" vim version). + + *netrw-P21* + P21. I've made a directory (or file) with an accented character, but + netrw isn't letting me enter that directory/read that file: + + Its likely that the shell or o/s is using a different encoding + than you have vim (netrw) using. A patch to vim supporting + "systemencoding" may address this issue in the future; for + now, just have netrw use the proper encoding. For example: > + + au FileType netrw set enc=latin1 +< + *netrw-P22* + P22. I get an error message when I try to copy or move a file: + + **error** (netrw) tried using g:netrw_localcopycmd<cp>; it doesn't work! + + What's wrong? + + Netrw uses several system level commands to do things (see + + |g:netrw_localcopycmd|, |g:netrw_localmovecmd|, + |g:netrw_localrmdir|, |g:netrw_mkdir_cmd|). + + You may need to adjust the default commands for one or more of + these commands by setting them properly in your .vimrc. Another + source of difficulty is that these commands use vim's local + directory, which may not be the same as the browsing directory + shown by netrw (see |g:netrw_keepdir|). + + ============================================================================== 11. Netrw をデバッグする *netrw-debug* {{{1 +Step 1: check that the problem you've encountered hasn't already been resolved +by obtaining a copy of the latest (often developmental) netrw at: + + http://www.drchip.org/astronaut/vim/index.html#NETRW + <netrw.vim> スクリプトはたいていは次のような場所にあります: > /usr/local/share/vim/vim7x/plugin/netrwPlugin.vim /usr/local/share/vim/vim7x/autoload/netrw.vim < -スクリプトは起動時に自動的にロードされます (:set nocp を想定)。 +which is loaded automatically at startup (assuming :set nocp). If you +installed a new netrw, then it will be located at > + + $HOME/.vim/plugin/netrwPlugin.vim + $HOME/.vim/autoload/netrw.vim +< +Step 2: assuming that you've installed the latest version of netrw, +check that your problem is really due to netrw. Create a file +called netrw.vimrc with the following contents: > + + set nocp + so $HOME/.vim/plugin/netrwPlugin.vim +< +Then run netrw as follows: > + + vim -u netrw.vimrc --noplugins [some path here] +< +Perform whatever netrw commands you need to, and check that the problem is +still present. This procedure sidesteps any issues due to personal .vimrc +settings and other plugins. If the problem does not appear, then you need +to determine what setting in your .vimrc is causing the conflict with netrw +or which plugin. + +Step 3: If the problem still is present, then get a debugging trace from +netrw: 1. <Decho.vim> スクリプトを入手してください: @@ -3097,7 +3589,8 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク 3. Vim を起動して、ネットワークファイルを開いたりブラウジングしたりし て問題を再現してください。<netrw.vim> がネットワーク上のファイルを - 読み込んだり書き込んだりする過程が別のタブに出力されます。 + 読み込んだり書き込んだりする過程が別のタブか、サーバーVimのウィンド + ウに出力されます。 出力をファイルに保存するには次のようにします > @@ -3119,7 +3612,115 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク ============================================================================== 12. 変更履歴 *netrw-history* {{{1 - v152: Apr 08, 2014 * uses the |'noswapfile'| option (requires + v154: Feb 26, 2015 * (Yuri Kanivetsky) reported a situation where + a file was not treated properly as a file + due to g:netrw_keepdir == 1 + Mar 25, 2015 * (requested by Ben Friz) one may now sort by + extension + Mar 28, 2015 * (requested by Matt Brooks) netrw has a lot + of buffer-local mappings; however, some + plugins (such as vim-surround) set up + conflicting mappings that cause vim to wait. + The "<nowait>" modifier has been included + with most of netrw's mappings to avoid that + delay. + Jun 26, 2015 * |netrw-gn| mapping implemted + * :Ntree NotADir resulted in having + the tree listing expand in the error messages + window. Fixed. + Jun 29, 2015 * Attempting to delete a file remotely caused + an error with "keepsol" mentioned; fixed. + Jul 08, 2015 * Several changes to keep the |:jumps| table + correct when working with + |g:netrw_fastbrowse| set to 2 + * wide listing with accented characters fixed + (using %-S instead of %-s with a |printf()| + Jul 13, 2015 * (Daniel Hahler) CheckIfKde() could be true + but kfmclient not installed. Changed order + in netrw#BrowseX(): checks if kde and + kfmclient, then will use xdg-open on a unix + system (if xdg-open is executable) + Aug 11, 2015 * (McDonnell) tree listing mode wouldn't + select a file in a open subdirectory. + * (McDonnell) when multiple subdirectories + were concurrently open in tree listing + mode, a ctrl-L wouldn't refresh properly. + * The netrw:target menu showed duplicate + entries + Oct 13, 2015 * (mattn) provided an exception to handle + windows with shellslash set but no shell + Oct 23, 2015 * if g:netrw_usetab and <c-tab> now used + to control whether NetrwShrink is used + (see |netrw-c-tab|) + v153: May 13, 2014 * added another |g:netrw_ffkeep| usage {{{2 + May 14, 2014 * changed s:PerformListing() so that it + always sets ft=netrw for netrw buffers + (ie. even when syntax highlighting is + off, not available, etc) + May 16, 2014 * introduced the |netrw-ctrl-r| functionality + May 17, 2014 * introduced the |netrw-:NetrwMB| functionality + * mb and mB (|netrw-mb|, |netrw-mB|) will + add/remove marked files from bookmark list + May 20, 2014 * (Enno Nagel) reported that :Lex <dirname> + wasn't working. Fixed. + May 26, 2014 * restored test to prevent leftmouse window + resizing from causing refresh. + (see s:NetrwLeftmouse()) + * fixed problem where a refresh caused cursor + to go just under the banner instead of + staying put + May 28, 2014 * (László Bimba) provided a patch for opening + the |:Lexplore| window 100% high, optionally + on the right, and will work with remote + files. + May 29, 2014 * implemented :NetrwC (see |netrw-:NetrwC|) + Jun 01, 2014 * Removed some "silent"s from commands used + to implemented scp://... and pscp://... + directory listing. Permits request for + password to appear. + Jun 05, 2014 * (Enno Nagel) reported that user maps "/" + caused problems with "b" and "w", which + are mapped (for wide listings only) to + skip over files rather than just words. + Jun 10, 2014 * |g:netrw_gx| introduced to allow users to + override default "<cfile>" with the gx + (|netrw-gx|) map + Jun 11, 2014 * gx (|netrw-gx|), with |'autowrite'| set, + will write modified files. s:NetrwBrowseX() + will now save, turn off, and restore the + |'autowrite'| setting. + Jun 13, 2014 * added visual map for gx use + Jun 15, 2014 * (Enno Nagel) reported that with having hls + set and wide listing style in use, that the + b and w maps caused unwanted highlighting. + Jul 05, 2014 * |netrw-mv| and |netrw-mX| commands included + Jul 09, 2014 * |g:netrw_keepj| included, allowing optional + keepj + Jul 09, 2014 * fixing bugs due to previous update + Jul 21, 2014 * (Bruno Sutic) provided an updated + netrw_gitignore.vim + Jul 30, 2014 * (Yavuz Yetim) reported that editing two + remote files of the same name caused the + second instance to have a "temporary" + name. Fixed: now they use the same buffer. + Sep 18, 2014 * (Yasuhiro Matsumoto) provided a patch which + allows scp and windows local paths to work. + Oct 07, 2014 * gx (see |netrw-gx|) when atop a directory, + will now do |gf| instead + Nov 06, 2014 * For cygwin: cygstart will be available for + netrw#BrowseX() to use if its executable. + Nov 07, 2014 * Began support for file://... urls. Will use + |g:netrw_file_cmd| (typically elinks or links) + Dec 02, 2014 * began work on having mc (|netrw-mc|) copy + directories. Works for linux machines, + cygwin+vim, but not for windows+gvim. + Dec 02, 2014 * in tree mode, netrw was not opening + directories via symbolic links. + Dec 02, 2014 * added resolved link information to + thin and tree modes + Dec 30, 2014 * (issue#231) |:ls| was not showing + remote-file buffers reliably. Fixed. + v152: Apr 08, 2014 * uses the |'noswapfile'| option (requires {{{2 vim 7.4 with patch 213) * (Enno Nagel) turn |'rnu'| off in netrw buffers. @@ -3145,7 +3746,7 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク chgwin window. May 09, 2014 * SavePosn was "saving filename under cursor" from a non-netrw window when using :Rex. - v151: Jan 22, 2014 * extended :Rexplore to return to buffer + v151: Jan 22, 2014 * extended :Rexplore to return to buffer {{{2 prior to Explore or editing a directory * (Ken Takata) netrw gave error when clipboard was disabled. Sol'n: Placed @@ -3192,7 +3793,7 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク and it also handles Window's shares * Fixed |netrw-d| command when applied with ftp * https: support included for netrw#NetRead() - v150: Jul 12, 2013 * removed a "keepalt" to allow ":e #" to + v150: Jul 12, 2013 * removed a "keepalt" to allow ":e #" to {{{2 return to the netrw directory listing Jul 13, 2013 * (Jonas Diemer) suggested changing a <cWORD> to <cfile>. @@ -3247,7 +3848,7 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク style, with a previous window open, that the wrong directory was being used to open a file. Fixed. (P21) - v149: Apr 18, 2013 * in wide listing format, now have maps for + v149: Apr 18, 2013 * in wide listing format, now have maps for {{{2 w and b to move to next/previous file Apr 26, 2013 * one may now copy files in the same directory; netrw will issue requests for @@ -3261,132 +3862,9 @@ V (|linewise-visual|) で選択することで複数のファイル/ディレク requested by Paul Domaskis. Jul 03, 2013 * Explore now avoids splitting when a buffer will be hidden. - v148: Apr 16, 2013 * changed Netrw's Style menu to allow direct + v148: Apr 16, 2013 * changed Netrw's Style menu to allow direct {{{2 choice of listing style, hiding style, and sorting style - v147: Nov 24, 2012 * (James McCoy) Even with g:netrw_dirhistmax - at zero, the .vim/ directory would be - created to support history/bookmarks. I've - gone over netrw to suppress history and - bookmarking when g:netrw_dirhistmax is zero. - For instance, the menus will display - (disabled) when attempts to use - bookmarks/history are made. - Nov 29, 2012 * (Kim Jang-hwan) reported that with - g:Align_xstrlen set to 3 that the cursor was - moved (linewise) after invocation. This - problem also afflicted netrw. - (see |g:netrw_xstrlen|) Fixed. - Jan 21, 2013 * (mattn) provided a patch to insert some - endifs needed with the code implementing - |netrw-O|. - Jan 24, 2013 * (John Szakmeister) found that remote file - editing resulted in filetype options being - overwritten by NetrwOptionRestore(). I - moved filetype detect from NetrwGetFile() - to NetrwOptionRestore. - Feb 17, 2013 * (Yukhiro Nakadaira) provided a patch - correcting some syntax errors. - Feb 28, 2013 * (Ingo Karkat) provided a patch preventing - receipt of an |E95| when revisiting a - file://... style url. - Mar 18, 2013 * (Gary Johnson) pointed out that changing - cedit to <Esc> caused problems with visincr; - the cedit setting is now bypassed in netrw too. - Apr 02, 2013 * (Paul Domaskis) reported an undefined - variable error (s:didstarstar) was - occurring. It is now defined at - initialization. - * included additional sanity checking for the - marked file functions. - * included |netrw-qF| and special "j" option - handling for |netrw-mg| - Apr 12, 2013 * |netrw-u| and |netrw-U| now handle counts - * the former mapping for "T" has been removed; - in its place are new maps, |netrw-Tb| and |netrw-Th|. - * the menu now supports a "Targets" entry for - easier target selection. (see |netrw-mt|) - * (Paul Domaskis) reported some problems with - moving/copying files under Windows' gvim - (ie. not cygwin). Fixed. - * (Paul Mueller) provided a patch to get - start and rundll working via |netrw-gx| - by bypassing the user's |'shellslash'| option. - v146: Oct 20, 2012 * (David Kotchan) reported that under Windows, - directories named with unusual characters - such as "#" or "$" were not being listed - properly. - * (Kenny Lee) reported that the buffer list - was being populated by netrw buffers. - Netrw will now |:bwipe| netrw buffers - upon editing a file if g:netrw_fastbrowse - is zero and its not in tree listing style. - * fixed a bug with s:NetrwInit() that - prevented initialization with |Lists| and - |Dictionaries|. - * |netrw-mu| now unmarks marked-file lists - v145: Apr 05, 2012 * moved some command from a g:netrw_local_... - format to g:netwr_local... format - * included some NOTE level messages about - commands that aren't executable - * |g:netrw_errorlvl| (default: NOTE=0) - option introduced - May 18, 2012 * (Ilya Dogolazky) a scenario where a - |g:netrw_fastbrowse| of zero did not - have a local directory refreshed fixed. - Jul 10, 2012 * (Donatas) |netrw-gb| wasn't working due - to an incorrectly used variable. - Aug 09, 2012 * (Bart Baker) netrw was doubling - of entries after a split. - * (code by Takahiro Yoshihara) implemented - |g:netrw_dynamic_maxfilenamelen| - Aug 31, 2012 * (Andrew Wong) netrw refresh overwriting - the yank buffer. - v144: Mar 12, 2012 * when |CTRL-W_s| or |CTRL-W_v| are used, - or their wincmd equivalents, on a netrw - buffer, the netrw's w: variables were - not copied over. Fixed. - Mar 13, 2012 * nbcd_curpos_{bufnr('%')} was commented - out, and was mistakenly used during - RestorePosn. Unfortunately, I'm not - sure why it was commented out, so this - "fix" may re-introduce an earlier problem. - Mar 21, 2012 * included s:rexposn internally to make - :Rex return the cursor to the same pos'n - upon restoration of netrw buffer - Mar 27, 2012 * (sjbesse) s:NetrwGetFile() needs to remove - "/" from the netrw buffer's usual |'isk'| - in order to allow "filetype detect" to work - properly for scripts. - v143: Jun 01, 2011 * |g:netrw_winsize| will accept a negative - number; the absolute value of it will then - be used to specify lines/columns instead of - a percentage. - Jul 05, 2011 * the "d" map now supports mkdir via ftp - See |netrw-d| and |g:netrw_remote_mkdir| - Jul 11, 2011 * Changed Explore!, Sexplore!, and Vexplore - to use a percentage of |winwidth()| instead - of a percentage of |winheight()|. - Jul 11, 2011 * included support for https://... I'm just - beginning to test this, however. - Aug 01, 2011 * changed RestoreOptions to also restore - cursor position in netrw buffers. - Aug 12, 2011 * added a note about "%" to the balloon - Aug 30, 2011 * if |g:netrw_nobeval| exists, then balloon - evaluation is suppressed. - Aug 31, 2011 * (Benjamin R Haskell) provided a patch that - implements non-standard port handling for - files opened via the remote browser. - Aug 31, 2011 * Fixed a **//pattern Explorer bug - Sep 15, 2011 * (reported by Francesco Campana) netrw - now permits the "@" to be part of the - user id (if there's an @ that appears - to the right). - Nov 21, 2011 * New option: |g:netrw_ftp_options| - Dec 07, 2011 * (James Sinclair) provided a fix handling - attempts to use a uid and password when - they weren't defined. This affected - NetWrite (NetRead already had that fix). ============================================================================== From 3b33abc19818e7f8ea47e8d76deb615dbd6efda8 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 30 Jan 2016 22:31:25 +0900 Subject: [PATCH 760/783] Fix typo #159 --- doc/channel.jax | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/channel.jax b/doc/channel.jax index af8b92bb7..8064c9770 100644 --- a/doc/channel.jax +++ b/doc/channel.jax @@ -27,15 +27,15 @@ Netbeansインターフェースもチャンネルを使っています。 |netb ============================================================================== 1. デモ *channel-demo* -デモにはPythonが必要です。でもプログラムは次の場所にあります。 +デモにはPythonが必要です。デモプログラムは次の場所にあります。 $VIMRUNTIME/tools/demoserver.py それをあるターミナルで実行しましょう。そのターミナルをT1と呼びます。 -次に別のターミナルでVimを実行します。そして以下のコマンドででもサーバーに接続 -します: > +次に別のターミナルでVimを実行します。そして以下のコマンドでサーバーに接続しま +す: > let handle = connect('localhost:8765', 'json') -T1の中に次のようなに表示されます: +T1の中に次のように表示されます: === socket opened === ~ ついにサーバーにメッセージを送信できます: > @@ -185,7 +185,7 @@ sendを呼ぶたびに毎回コールバックを指定する代わりに、チ ============================================================================== 5. rawチャンネルを使う *channel-raw* -{mode} が "raw" の場合には、以下のようにしてメッセージを送信します: +{mode} が "raw" の場合には、以下のようにしてメッセージを送信します: let response = sendraw(handle, {string}) {string} はそのまま送信されます。受信した応答メッセージは直ちにチャンネルから 読み込み可能になります。この時、Vimにはメッセージの終了をどう判断するかがわか From 18fa6e656627f3db3b68d39b2bce1e799e7640d7 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 30 Jan 2016 22:53:30 +0900 Subject: [PATCH 761/783] Fix the duplicated tag --- doc/pi_netrw.jax | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/doc/pi_netrw.jax b/doc/pi_netrw.jax index 27492490b..6be34cd2c 100644 --- a/doc/pi_netrw.jax +++ b/doc/pi_netrw.jax @@ -1604,7 +1604,7 @@ g:netrw_rmdir_cmd によるディレクトリの削除が失敗した場合は りします。 [dir] を省略したときは現在のディレクトリを開きます。 :Lexplore [dir] は、どのウィンドウで実行したかに関係なく、タブの左側 でブラウザを開き、指定されたディレクトリを表示します。 - + 初期設定では、:Lexplore は未初期化の |g:netrw_chgwin| を 2 に設定しま す。つまりファイルを開くときには 2 番目のウィンドウが使われるようにな ります。 @@ -2420,17 +2420,13 @@ netrw ブラウザの各種設定は変数で管理されていて、それを (|netrw-v| 参照) 初期設定: =&spr (|'spr'| 参照) - *g:netrw_bannerbackslash* この変数が存在し、ゼロ以外なら、バナーの表示に - (スラッシュではなく) バックスラッシュが使われ - る。 - *g:netrw_banner* バナーの表示を切り替える =0: バナーを表示しない =1: バナーを表示する (初期設定) - *g:netrw_bannerbackslash* if this variable exists and is not zero, the - banner will be displayed with backslashes - rather than forward slashes. + *g:netrw_bannerbackslash* この変数が存在し、ゼロ以外なら、バナーの表示に + (スラッシュではなく) バックスラッシュが使われ + る。 *g:netrw_browse_split* ブラウザで <cr> を押してファイルを開くとき: =0: 同じウィンドウを使う (デフォルト) From 426d6ea9383fa0945f2d8bfdbd75c4cdd2440ada Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sat, 30 Jan 2016 23:14:31 +0900 Subject: [PATCH 762/783] Update several files --- doc/channel.jax | 4 ++-- doc/print.jax | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/channel.jax b/doc/channel.jax index 8064c9770..3e22aa142 100644 --- a/doc/channel.jax +++ b/doc/channel.jax @@ -21,8 +21,8 @@ Netbeansインターフェースもチャンネルを使っています。 |netb 5. rawチャンネルを使う |channel-use| 6. ジョブ制御 |job-control| -{Vi does not have any of these features} -{only available when compiled with the |+channel| feature} +{Vi にはこれらの機能はありません} +{|+channel| 機能付きでコンパイルされたときのみ利用可能} ============================================================================== 1. デモ *channel-demo* diff --git a/doc/print.jax b/doc/print.jax index c5ede56b7..e86c0d913 100644 --- a/doc/print.jax +++ b/doc/print.jax @@ -16,7 +16,7 @@ 8. 改ページ文字 |printing-formfeed| {Vi にはない機能です} -{|+printer| が有効な場合のみ利用できます} +{|+printer| 機能付きでコンパイルした場合のみ利用可能} ============================================================================== 1. はじめに *print-intro* From 5ab2f4b93c5b0c6d245ea8cab0cbbd724d0beab3 Mon Sep 17 00:00:00 2001 From: rbtnn <naru123456789@gmail.com> Date: Sat, 30 Jan 2016 23:37:18 +0900 Subject: [PATCH 763/783] Translated doc/usr_41 --- catchup-7.4.1194.md | 2 +- doc/usr_41.jax | 34 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 37c26ee69..4d737eda3 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -42,7 +42,6 @@ doc/term.jax doc/usr_02.jax # 行数は多いけど、まとまった書き換えで、楽そう doc/usr_03.jax - doc/usr_41.jax doc/various.jax こっから先は100行超えるので、嫌。 @@ -64,6 +63,7 @@ doc/quickfix.jax doc/usr_29.jax doc/usr_43.jax + doc/usr_41.jax doc/vi_diff.jax ### その他/深い事情があって断念したもの diff --git a/doc/usr_41.jax b/doc/usr_41.jax index 6ce10f90f..25814c0ea 100644 --- a/doc/usr_41.jax +++ b/doc/usr_41.jax @@ -860,24 +860,24 @@ Vimサーバー: *server-functions* winsaveview() カレントウィンドウのビューを取得 winrestview() カレントウィンドウのビューを復元 -マッピング: *mapping-functions* +マッピング: *mapping-functions* hasmapto() マップの存在をチェック mapcheck() マッチするマップの存在をチェック maparg() マップのrhs(展開結果)を得る wildmenumode() wildmodeが有効かどうかをチェック -Testing: *test-functions* - assert_equal() assert that two expressions values are equal - assert_false() assert that an expression is false - assert_true() assert that an expression is true +テスト用: *test-functions* + assert_equal() 2つの式が等しいかどうかテストする + assert_false() 式がfalseかどうかテストする + assert_true() 式がtrueかどうかテストする -Inter-process communication: - connect() open a channel - disconnect() close a channel - sendexpr() send a JSON message over a channel - sendraw() send a raw message over a channel - jsonencode() encode an expression to a JSON string - jsondecode() decode a JSON string to Vim types +プロセス間通信: + connect() チャンネルを開く + disconnect() チャンネルを閉じる + sendexpr() チャンネルにJSONメッセージを送る + sendraw() チャンネルにrawメッセージを送る + jsonencode() 式をJSONの文字列に変換する + jsondecode() JSONの文字列を式に変換する その他: *various-functions* mode() 現在の編集モードを得る @@ -905,12 +905,12 @@ Inter-process communication: taglist() マッチするタグのリストを取得 tagfiles() タグファイルのリストを取得 - luaeval() Luaの式を評価する + luaeval() |Lua|の式を評価する mzeval() |MzScheme| の式を評価する - perleval() evaluate Perl expression (|+perl|) - py3eval() Pythonの式を評価する (|+python3|) - pyeval() Pythonの式を評価する (|+python|) - wordcount() get byte/word/char count of buffer + perleval() |Perl|の式を評価する (|+perl|) + py3eval() |Python|の式を評価する (|+python3|) + pyeval() |Python|の式を評価する (|+python|) + wordcount() バッファ内のバイト数/単語数/文字数などを得る ============================================================================== *41.7* 関数を定義する From d5b519e7264ad0a6d99883e15e6defbb6d3ff929 Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 22:11:01 +0900 Subject: [PATCH 764/783] :command-addr #164 --- catchup-7.4.1194.md | 2 +- doc/map.jax | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 37c26ee69..c31fd3810 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -32,7 +32,6 @@ doc/if_ruby.jax doc/if_tcl.jax doc/insert.jax - doc/map.jax doc/netbeans.jax doc/pattern.jax doc/quickref.jax @@ -59,6 +58,7 @@ doc/filetype.jax doc/help.jax doc/index.jax + doc/map.jax doc/mlang.jax doc/os_os2.jax doc/quickfix.jax diff --git a/doc/map.jax b/doc/map.jax index f680ce474..7e1424204 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -1337,17 +1337,17 @@ Note: -range=Nと-count=Nは相互に排他的であるということに注意 らか一方のみを指定することができます。 *E889* *:command-addr* -It is possible that the special characters in the range like ., $ or % which -by default correspond to the current line, last line and the whole buffer, -relate to arguments, (loaded) buffers, windows or tab pages. - -Possible values are: - -addr=lines Range of lines (this is the default) - -addr=arguments Range for arguments - -addr=buffers Range for buffers (also not loaded buffers) - -addr=loaded_buffers Range for loaded buffers - -addr=windows Range for windows - -addr=tabs Range for tab pages +範囲指定には .、$、% といった特殊文字を含むことができ、それぞれ現在行、最終行、 +バッファ全体を表します。これらは引数、 (ロードされた)バッファ、ウィンドウ及び +タブページに関連付けすることができます。 + +次の値を利用できます: + -addr=lines 行 (デフォルト) + -addr=arguments 引数 + -addr=buffers バッファ (ロードされていないバッファも) + -addr=loaded_buffers ロードされたバッファ + -addr=windows ウィンドウ + -addr=tabs タブページ 特殊なケース *:command-bang* *:command-bar* *:command-register* *:command-buffer* From 217451ef7470050daf151d0bb1bcf19d521b93e4 Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 22:38:33 +0900 Subject: [PATCH 765/783] translate some remaining hunks in doc/autocmd.jax --- catchup-7.4.1194.md | 2 +- doc/autocmd.jax | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 37c26ee69..ad70d94d2 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -19,7 +19,6 @@ 以上は変更点が100行未満なので、翻訳しやすいはず。 - doc/autocmd.jax doc/change.jax doc/develop.jax doc/editing.jax @@ -55,6 +54,7 @@ ### 完訳! + doc/autocmd.jax doc/cmdline.jax doc/filetype.jax doc/help.jax diff --git a/doc/autocmd.jax b/doc/autocmd.jax index f69507b65..29c920a2a 100644 --- a/doc/autocmd.jax +++ b/doc/autocmd.jax @@ -514,8 +514,8 @@ ColorScheme カラースキームを読み込んだ後。 |:colorscheme| *CompleteDone* CompleteDone 挿入モード補完が完了したとき。補完が実行されて も中止されても発行される。 |ins-completion| - The |v:completed_item| variable contains - information about the completed item. + 変数 |v:completed_item| には補完された候補につい + ての情報が含まれている。 *CursorHold* CursorHold 'updatetime' の時間の間、ユーザーがキーを押さ @@ -532,9 +532,10 @@ CursorHold 'updatetime' の時間の間、ユーザーがキーを押さ レコーディングの最中にはCursorHoldイベントは発 生しない。|q| *<CursorHold>* - Internally the autocommand is triggered by the - <CursorHold> key. In an expression mapping - |getchar()| may see this character. + この自動コマンドは内部的に <CursorHold> キーが + 引き金になっている。式による指定のマッピング内 + では |getchar()| によってこの文字が取得されること + がある。 Note: このイベントには対話的なコマンドは使えな いことに注意。「続けるには」プロンプトは現れず、 @@ -949,10 +950,10 @@ WinLeave ウィンドウを離れる前。次に入るウィンドウで他の ============================================================================== 6. パターン *autocmd-patterns* *{pat}* -The {pat} argument can be a comma separated list. This works as if the -command was given with each pattern separately. Thus this command: > +引数 {pat} にはコンマ区切りのリストを指定することができる。これによりコマンドは +指定されたそれぞれのパターンについて実行される。例えばこのコマンド: > :autocmd BufRead *.txt,*.info set et -Is equivalent to: > +は下記と等しくなる: :autocmd BufRead *.txt set et :autocmd BufRead *.info set et @@ -1118,9 +1119,9 @@ Note: パスの途中だけにマッチさせ、ルートディレクトリに :aug[roup] {name} 後に続くコマンド ":autocmd" のためのグループ名 を定義する。{name} を "end" や "END" にすると 既定のグループが選ばれる。 - To avoid confusion, the name should be - different from existing {event} names, as this - most likely will not do what you intended. + 混乱を避けるため、既存の {event} の名前とは違う + 名前をつけるべきである。これはたいてい意図しな + い動作を引き起こす。 *:augroup-delete* *E367* :aug[roup]! {name} 自動コマンドのグループ {name} を削除する。その From 6c2a7fda5982a4ddd8c134207e5c7b7bb12f2821 Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 22:57:48 +0900 Subject: [PATCH 766/783] translate some parts of MAKING CHANGES --- catchup-7.4.1194.md | 2 +- doc/develop.jax | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 37c26ee69..e01725efd 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -21,7 +21,6 @@ doc/autocmd.jax doc/change.jax - doc/develop.jax doc/editing.jax doc/fold.jax doc/hangulin.jax @@ -56,6 +55,7 @@ ### 完訳! doc/cmdline.jax + doc/develop.jax doc/filetype.jax doc/help.jax doc/index.jax diff --git a/doc/develop.jax b/doc/develop.jax index 50aace1dc..f43fdefef 100644 --- a/doc/develop.jax +++ b/doc/develop.jax @@ -168,28 +168,30 @@ Vimのソースコードに変更を加える際、守るべきルールがあ MAKING CHANGES *style-changes* コードに変更を加える基本的なステップは: -1. Get the code from github. That makes it easier to keep your changed - version in sync with the main code base (it may be a while before your - changes will be included). You do need to spend some time learning git, - it's not the most user friendly tool. +1. GitHub からコードを取得する。これによりあなたが変更したコードをメインのコー + ドベースに同期するのがより簡単になる (あなたの変更がメインのコードベースに含 + まれるようになるまで少しかかるかもしれない) 。いくらか時間を費やして git に + ついて学ぶ必要がある。git はあまりユーザフレンドリーなツールではない。 2. ドキュメントを調整する。最初にこれをやることで、あなたの行う変更がユーザー に与える影響について、おおまかな印象をもつことができる。 3. ソースコードに変更を加える。 4. 変更がリストされた項目に影響を与えていないか、../doc/todo.txtをチェックす る。 -5. Make a patch with "git diff". You can also create a pull request on - github, but it's the diff that matters. -6. Make a note about what changed, preferably mentioning the problem and the - solution. Send an email to the vim-dev maillist with an explanation and - include the diff. Or create a pull request on github. +5. "git diff" でパッチを作成する。GitHub でプルリクエストを作成しても良いが、重 + 要なのはその diff である。 +6. 何が変更されたかのノートを作成する。問題点とその解決策について書かれている + のが望ましい。vim-dev のメーリングリストに説明と diff を含めたメールを送るか + GitHub でプルリクエストを作成する。 C COMPILER *style-compiler* -The minimal C compiler version supported is C89, also known as ANSI C. -Later standards don't add much and C89 is the widest supported. +サポートされている最小の C コンパイラのバージョンは C89 (ANSI C とも呼ばれてい +る) である。C89 以降の標準規格にはあまり多くの機能追加が無く C89 はもっとも普及 +している。 -One restriction that this implies: no // comments, only /* comments */. +この項目が暗に示している制限の1つとして、 // コメントではなく /* コメント */ を +使わなければならない。 USE OF COMMON FUNCTIONS *style-functions* From 2914b8bcbe7f2151eaf0583d17615c313bb3db6d Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 23:11:38 +0900 Subject: [PATCH 767/783] translate a part of document about blowfish #164 --- catchup-7.4.1194.md | 2 +- doc/editing.jax | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 2388e5be4..71974f1ec 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -20,7 +20,6 @@ 以上は変更点が100行未満なので、翻訳しやすいはず。 doc/change.jax - doc/editing.jax doc/fold.jax doc/hangulin.jax doc/if_lua.jax # 100行超えたけど、内容的に大したことない @@ -54,6 +53,7 @@ doc/autocmd.jax doc/cmdline.jax doc/develop.jax + doc/editing.jax doc/filetype.jax doc/help.jax doc/index.jax diff --git a/doc/editing.jax b/doc/editing.jax index 3d079ab32..e14211d2f 100644 --- a/doc/editing.jax +++ b/doc/editing.jax @@ -1439,14 +1439,15 @@ Note: メモリ内のテキストは暗号化されない。ユーザーがテ アンドゥファイルが保存されるとき、同じキーとメソッドがアンドゥファイル内のテキ ストに適用される。|persistent-undo|。 -To test for blowfish support you can use these conditions: > +"blowfish" をサポートしているかどうかテストするには下記の条件を使う: > has('crypt-blowfish') has('crypt-blowfish2') -This works since Vim 7.4.1099 while blowfish support was added earlier. -Thus the condition failing doesn't mean blowfish is not supported. You can -test for blowfish with: > +上記の条件が利用できるのは Vim 7.4.1099 からであるが、"blowfish" のサポート自体 +はより古くからある。 +よって上記の条件が偽になったとしても "blowfish" をサポートしていることがある。 +"blowfish" を使えるかどうかは次の条件でテストできる: > v:version >= 703 -And for blowfish2 with: > +また "blowfish2" については次の条件でテストできる: > v:version > 704 || (v:version == 704 && has('patch401')) < *E817* *E818* *E819* *E820* From e9588b9bf5ab58eb15472de938d420fb3d89ed69 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 31 Jan 2016 00:30:52 +0900 Subject: [PATCH 768/783] =?UTF-8?q?Remove=20the=20space=20after=20"?= =?UTF-8?q?=E3=80=81"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/map.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/map.jax b/doc/map.jax index 7e1424204..5ee29b7b1 100644 --- a/doc/map.jax +++ b/doc/map.jax @@ -1338,7 +1338,7 @@ Note: -range=Nと-count=Nは相互に排他的であるということに注意 *E889* *:command-addr* 範囲指定には .、$、% といった特殊文字を含むことができ、それぞれ現在行、最終行、 -バッファ全体を表します。これらは引数、 (ロードされた)バッファ、ウィンドウ及び +バッファ全体を表します。これらは引数、(ロードされた)バッファ、ウィンドウ及び タブページに関連付けすることができます。 次の値を利用できます: From f6d7b745cd04347eaf220e24fdaccaa69b64af03 Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 23:21:42 +0900 Subject: [PATCH 769/783] translate remaining part #164 --- catchup-7.4.1194.md | 2 +- doc/fold.jax | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 71974f1ec..632144a8a 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -20,7 +20,6 @@ 以上は変更点が100行未満なので、翻訳しやすいはず。 doc/change.jax - doc/fold.jax doc/hangulin.jax doc/if_lua.jax # 100行超えたけど、内容的に大したことない doc/if_mzsch.jax @@ -55,6 +54,7 @@ doc/develop.jax doc/editing.jax doc/filetype.jax + doc/fold.jax doc/help.jax doc/index.jax doc/map.jax diff --git a/doc/fold.jax b/doc/fold.jax index 206a1c3dd..a48d0fb6b 100644 --- a/doc/fold.jax +++ b/doc/fold.jax @@ -119,9 +119,9 @@ NOTE: 各行について式評価が実行されるので、この折畳方式 折畳レベルが定義された行が見つかるまで戻って、幾度も検索を行わなければならない からだ。これは動作が遅くなることがある。 -An example of using "a1" and "s1": For a multi-line C comment, a line -containing "/*" would return "a1" to start a fold, and a line containing "*/" -would return "s1" to end the fold after that line: > +"a1" と "s1" の使用例: C 言語の複数行コメントを折りたたむ場合、"/*" を含む行で +は "a1" を返してその開始位置を、"*/" を含む行では "s1" を返してその終了位置を示 +す: > if match(thisline, '/\*') >= 0 return 'a1' elseif match(thisline, '\*/') >= 0 @@ -129,7 +129,7 @@ would return "s1" to end the fold after that line: > else return '=' endif -However, this won't work for single line comments, strings, etc. +ただし、単一行コメント内、文字列リテラル内などではこれは正しく機能しない。 フォールドレベルを調べるには|foldlevel()|を使うのが便利である。レベルがわから ないときは-1を返すことに注意すること。フォールドがその行で終わっているときには From ec1060b0afb228d0e0f88b7777cbf70b4320875a Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 23:54:50 +0900 Subject: [PATCH 770/783] translate remaining doc about shared library in if_perl.jax --- catchup-7.4.1194.md | 2 +- doc/if_perl.jax | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 37c26ee69..7a13a1084 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -27,7 +27,6 @@ doc/hangulin.jax doc/if_lua.jax # 100行超えたけど、内容的に大したことない doc/if_mzsch.jax - doc/if_perl.jax doc/if_pyth.jax doc/if_ruby.jax doc/if_tcl.jax @@ -58,6 +57,7 @@ doc/cmdline.jax doc/filetype.jax doc/help.jax + doc/if_perl.jax doc/index.jax doc/mlang.jax doc/os_os2.jax diff --git a/doc/if_perl.jax b/doc/if_perl.jax index 4b2e9fcd3..d5959f185 100644 --- a/doc/if_perl.jax +++ b/doc/if_perl.jax @@ -299,10 +299,10 @@ DLLの名前はVimをコンパイルした時のPerlのバージョンに一致 Unix ~ -The 'perldll' option can be used to specify the Perl shared library file -instead of DYNAMIC_PERL_DLL file what was specified at compile time. The -version of the shared library must match the Perl version Vim was compiled -with. +コンパイル時に DYNAMIC_PERL_DLL で指定されたファイルの代わりに 'perldll' オプシ +ョンで使用する Perl の共有ライブラリのファイルを指定するのに使えます。共有ライ +ブラリのバージョンは Vim と共にコンパイルされた Perl のバージョンと一致していな +ければなりません。 ============================================================================== vim:tw=78:ts=8:ft=help:norl: From e93f59acbdd96d2db8f494b6fc60a54e39539b8b Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 23:58:05 +0900 Subject: [PATCH 771/783] translate remaining doc about shared library in if_tcl.jax --- catchup-7.4.1194.md | 2 +- doc/if_tcl.jax | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 7a13a1084..2ef1f7159 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -29,7 +29,6 @@ doc/if_mzsch.jax doc/if_pyth.jax doc/if_ruby.jax - doc/if_tcl.jax doc/insert.jax doc/map.jax doc/netbeans.jax @@ -57,6 +56,7 @@ doc/cmdline.jax doc/filetype.jax doc/help.jax + doc/if_tcl.jax doc/if_perl.jax doc/index.jax doc/mlang.jax diff --git a/doc/if_tcl.jax b/doc/if_tcl.jax index 948bb1789..cd8b63fbb 100644 --- a/doc/if_tcl.jax +++ b/doc/if_tcl.jax @@ -531,9 +531,10 @@ DLLの名前はVimをコンパイルした時のTclのバージョンに一致 Unix ~ -The 'tcldll' option can be used to specify the Tcl shared library file instead -of DYNAMIC_TCL_DLL file what was specified at compile time. The version of -the shared library must match the Tcl version Vim was compiled with. +コンパイル時に DYNAMIC_TCL_DLL で指定されたファイルの代わりに 'tcldll' オプショ +ンで使用する Tcl の共有ライブラリのファイルを指定するのに使える。共有ライブラリ +のバージョンは Vim をコンパイルする時に用いた Tcl のバージョンと一致していなけ +ればならない。 ============================================================================== vim:tw=78:ts=8:ft=help:norl: From 9bb8ca294a59fdecc8832c206bda05ae24231af0 Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 23:45:36 +0900 Subject: [PATCH 772/783] translate remaining doc about shared library in if_pyth.jax --- catchup-7.4.1194.md | 2 +- doc/if_pyth.jax | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 2ef1f7159..c1d558a10 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -27,7 +27,6 @@ doc/hangulin.jax doc/if_lua.jax # 100行超えたけど、内容的に大したことない doc/if_mzsch.jax - doc/if_pyth.jax doc/if_ruby.jax doc/insert.jax doc/map.jax @@ -58,6 +57,7 @@ doc/help.jax doc/if_tcl.jax doc/if_perl.jax + doc/if_pyth.jax doc/index.jax doc/mlang.jax doc/os_os2.jax diff --git a/doc/if_pyth.jax b/doc/if_pyth.jax index ff719a73c..cfbfbf12f 100644 --- a/doc/if_pyth.jax +++ b/doc/if_pyth.jax @@ -683,11 +683,11 @@ DLLの名前はVimをコンパイルした時のPythonのバージョンに一 ん。現在その名前は "python24.dll" です。これはPython2.4用です。これを確かめる には、"gvim.exe" を開き、"python\d*.dll\c" を検索してください。 -On Unix the 'pythondll' or 'pythonthreedll' option can be used to specify the -Python shared library file instead of DYNAMIC_PYTHON_DLL or -DYNAMIC_PYTHON3_DLL file what were specified at compile time. The version of -the shared library must match the Python 2.x or Python 3 version Vim was -compiled with. +Unix ではコンパイル時に DYNAMIC_PYTHON_DLL もしくは DYNAMIC_PYTHON3_DLL で指定 +されたファイルの代わりに 'pythondll' もしくは 'pythonthreedll' オプションで使用 +する Python の共有ライブラリのファイルを指定するのに使えます。共有ライブラリの +バージョンは Vim をコンパイルする時に用いた Python 2.x または Python 3 のバージ +ョンと一致していなければなりません。 ============================================================================== 10. Python 3 *python3* From 9f0a7550cc9fe88be1931068c23db03bf3db24b9 Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 23:39:59 +0900 Subject: [PATCH 773/783] translate remaining doc about shared library in if_ruby.jax --- catchup-7.4.1194.md | 2 +- doc/if_ruby.jax | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index c1d558a10..d37a81a88 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -27,7 +27,6 @@ doc/hangulin.jax doc/if_lua.jax # 100行超えたけど、内容的に大したことない doc/if_mzsch.jax - doc/if_ruby.jax doc/insert.jax doc/map.jax doc/netbeans.jax @@ -58,6 +57,7 @@ doc/if_tcl.jax doc/if_perl.jax doc/if_pyth.jax + doc/if_ruby.jax doc/index.jax doc/mlang.jax doc/os_os2.jax diff --git a/doc/if_ruby.jax b/doc/if_ruby.jax index 8f7397f31..8f59c0861 100644 --- a/doc/if_ruby.jax +++ b/doc/if_ruby.jax @@ -217,10 +217,10 @@ _MSC_VER のチェックをコメントアウトする必要があるだろう Unix ~ -The 'rubydll' option can be used to specify the Ruby shared library file -instead of DYNAMIC_RUBY_DLL file what was specified at compile time. The -version of the shared library must match the Ruby version Vim was compiled -with. +コンパイル時に DYNAMIC_RUBY_DLL で指定されたファイルの代わりに、 'rubydll' オプ +ションを使って Ruby の共有ライブラリファイルを指定するのに使える。共有ライブラ +リのバージョンは Vim をコンパイルする時に用いた Ruby のバージョンと一致してい +なければならない。 ============================================================================== vim:tw=78:ts=8:ft=help:norl: From c3b83de252bc4c8d7f66a8fef190c4776c8ab21b Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sat, 30 Jan 2016 23:32:14 +0900 Subject: [PATCH 774/783] translate remaining parts in doc/hanglin.jax #164 --- catchup-7.4.1194.md | 2 +- doc/hangulin.jax | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 632144a8a..cd7562b18 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -20,7 +20,6 @@ 以上は変更点が100行未満なので、翻訳しやすいはず。 doc/change.jax - doc/hangulin.jax doc/if_lua.jax # 100行超えたけど、内容的に大したことない doc/if_mzsch.jax doc/if_perl.jax @@ -55,6 +54,7 @@ doc/editing.jax doc/filetype.jax doc/fold.jax + doc/hangulin.jax doc/help.jax doc/index.jax doc/map.jax diff --git a/doc/hangulin.jax b/doc/hangulin.jax index 7cb4ba9b4..f6934cdf3 100644 --- a/doc/hangulin.jax +++ b/doc/hangulin.jax @@ -35,8 +35,8 @@ LC_ALL 変数をセットしている場合は、それも韓国語ロケール VIM リソース ------------ -You may want to set 'encoding' and 'fileencodings'. -Next are examples: > +'encoding' と 'fileencodings' をセットしたいかもしれません。 +例: > :set encoding=euc-kr :set encoding=utf-8 @@ -56,13 +56,15 @@ VIM_KEYBOARD か HANGUL_KEYBOARD_TYPE 環境変数を使うことによって、 ハングル・フォント ------------------ -If you use GTK version of GVIM, you should set 'guifont' and 'guifontwide'. -For example: > +GTK バージョンの GVIM を使用している場合は 'guifont' と 'guifontwide' をセット +するべきです。 +例: > set guifont=Courier\ 12 set guifontwide=NanumGothicCoding\ 12 -If you use Motif or Athena version of GVIM, you should set 'guifontset' in -your vimrc. You can set fontset in the .Xdefaults file. +Motif もしくは Athena バージョンの GVIM を使用している場合は vimrc 内で +'guifontset' をセットするべきです。フォントセットは .Xdefaults ファイル内で指定 +できます。 $HOME/.gvimrc: > set guifontset=english_font,hangul_font @@ -85,8 +87,8 @@ $HOME/.Xdefaults: > で動作することになり、英語の文字だけが見えることになり、ハングルは正しくは表示 されなくなります。 -After 'fontset' feature is enabled, VIM does not allow using english -font only in 'font' setting for syntax. +'fontset' 機能が有効になった後、シンタックス定義での 'font' 設定でのみ英語のフ +ォントを使うことはできなくなります。 例えば、もし .gvimrc で次のようにしている場合は: > :set guifontset=eng_font,your_font 構文ハイライトの指定では次のようにする必要があります: > From 4aeacea7567238f14de3e5818994e3cd59a2b6cf Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Sun, 31 Jan 2016 01:15:55 +0900 Subject: [PATCH 775/783] Add doc/pi_logipat.jax in the filelist --- catchup-7.4.1194.md | 1 + 1 file changed, 1 insertion(+) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 9282cd93e..304999827 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -33,6 +33,7 @@ doc/usr_02.jax # 行数は多いけど、まとまった書き換えで、楽そう doc/usr_03.jax doc/various.jax + doc/pi_logipat.jax こっから先は100行超えるので、嫌。 From 8883ea96978d13efd0ea639ad591fc1889932e55 Mon Sep 17 00:00:00 2001 From: rhysd <lin90162@yahoo.co.jp> Date: Sun, 31 Jan 2016 03:04:26 +0900 Subject: [PATCH 776/783] translate remaining parts in doc/if_mzsch.jax --- catchup-7.4.1194.md | 2 +- doc/if_mzsch.jax | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 304999827..23b33bf91 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -21,7 +21,6 @@ doc/change.jax doc/if_lua.jax # 100行超えたけど、内容的に大したことない - doc/if_mzsch.jax doc/insert.jax doc/netbeans.jax doc/pattern.jax @@ -57,6 +56,7 @@ doc/if_perl.jax doc/if_pyth.jax doc/if_ruby.jax + doc/if_mzsch.jax doc/index.jax doc/map.jax doc/mlang.jax diff --git a/doc/if_mzsch.jax b/doc/if_mzsch.jax index c08b565c2..2e2df9407 100644 --- a/doc/if_mzsch.jax +++ b/doc/if_mzsch.jax @@ -277,9 +277,9 @@ MS-Windows では MzScheme ライブラリを動的に読み込むことが可 この場合、Vim は必要なときだけ MzScheme の DLL ファイルを検索するようになりま す。MzScheme インターフェイスを使わないときは DLL を必要としないので、DLL な しで Vim を使うことができます。 -NOTE: Newer version of MzScheme (Racket) require earlier (trampolined) -initialisation via scheme_main_setup. So Vim always loads the MzScheme DLL at -startup if possible. +NOTE: 比較的新しいバージョンの MzScheme (Racket) は scheme_main_setup によるト +ランポリンを用いた事前初期化処理を必要とします。そのために Vim は可能であれば常 +に MzScheme の DLL を初期化時に読み込みます。 MzScheme インターフェイスを使うには MzScheme の DLL が検索パス内に存在しなけ ればなりません。コンソールウィンドウで "path" とタイプすると、どのディレクト @@ -291,8 +291,8 @@ DLL の名前は Vim をコンパイルした時の MzScheme のバージョン を見て、コンパイル情報から -DDYNAMIC_MZSCH_DLL="なんらか" と -DDYNAMIC_MZGC_DLL="なんらか" を探してください。 -For example, if MzScheme (Racket) is installed at C:\Racket63, you may need -to set the environment variable as the following: > +例えば、MzScheme (Racket) が C:\Racket63 にインストールされている場合、次のよう +に環境変数を設定する必要があるかもしれません: > PATH=%PATH%;C:\Racket63\lib PLTCOLLECTS=C:\Racket63\collects @@ -301,10 +301,11 @@ to set the environment variable as the following: > ============================================================================== 8. MzScheme setup *mzscheme-setup* *E895* -Vim requires "racket/base" module for if_mzsch core (fallback to "scheme/base" -if it doesn't exist), "r5rs" module for test and "raco ctool" command for -building Vim. If MzScheme did not have them, you can install them with -MzScheme's raco command: +Vim は if_mzsch のコアモジュールとして "racket/base" (もし存在しなければ +"scheme/base" にフォールバックします) を、テストのために "r5rs" モジュールを、 +そして Vim のビルド時に必要な "raco ctool" コマンドを要求します。MzScheme がそ +れらを持っていなかった場合は MzScheme の raco コマンドで次のようにインストール +できます: > > raco pkg install scheme-lib # scheme/base module raco pkg install r5rs-lib # r5rs module From 739006bf724c8eeda8f5b40cd15c2e7f9aa49eac Mon Sep 17 00:00:00 2001 From: h-east <h.east.727@gmail.com> Date: Sun, 31 Jan 2016 11:48:14 +0900 Subject: [PATCH 777/783] translated. --- doc/pattern.jax | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index a01286a41..bb34d593b 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -58,6 +58,8 @@ *n* n 最後の "/" か "?" を [count] 回繰り返します。 + カーソルが移動しないときは、検索は [count] + 1で繰り返 + されます。 If the cursor doesn't move the search is repeated with count + 1. |last-pattern| {Vi: カウントの前置を受け付けません} @@ -480,7 +482,7 @@ after: \v \m \M \V マッチするもの ~ |/\%v| \%23v \%23v 23列目 (表示単位) |/zero-width| 文字クラス {Vi にはありません}: */character-classes* - magic nomagic matches ~ + magic nomagic マッチするもの ~ |/\i| \i \i 識別子文字 (オプション 'isident' を参照) |/\I| \I \I "\i" と同じですが、数字は除外します |/\k| \k \k キーワード文字 (オプション 'iskeyword' を参照) @@ -511,7 +513,7 @@ after: \v \m \M \V マッチするもの ~ マッチします。 (文字クラスここまで) - magic nomagic matches ~ + magic nomagic マッチするもの ~ |/\e| \e \e <Esc> |/\t| \t \t <Tab> |/\r| \r \r <CR> @@ -537,7 +539,7 @@ after: \v \m \M \V マッチするもの ~ |/\Z| \Z \Z Unicodeの合成文字かどうかを無視します。 ヘブライ語やアラビア語で母音を検索するときに便利です。 - magic nomagic matches ~ + magic nomagic マッチするもの ~ |/\m| \m \m 以降のパターン文字を 'magic' がオンの状態で処理します |/\M| \M \M 以降のパターン文字を 'magic' がオフの状態で処理します |/\v| \v \v 以降のパターン文字を "very magic" で処理します @@ -1052,11 +1054,10 @@ x 特別な意味のない文字は、その文字自身とマッチします *E769* ']' がない場合、Vim はエラーを表示せず、コレクションが使われているので はないと判断します。'[' を検索するときに便利です。しかし、Vim 内部での - 検索では E769 のエラーがでます。 And be aware that in a - `:substitute` command the whole command becomes the pattern. E.g. - ":s/[/x/" searches for "[/x" and replaces it with nothing. It does - not search for "[" and replaces it with "x"! - + 検索では E769 のエラーがでます。 そして、 `:substitute` コマンドでコマ + ンド全体がパターンとなることに注意してください。 例えば、 ":s/[/x/" は + "[/x"を検索します。置換はおこなわれません。 "[" を検索して "x" に置換 + されるのではありません! コレクション文字列の先頭が "^" の場合、 コレクションに含まれている文字 以外の文字がマッチします。"[^xyz]" は 'x'、'y'、'z' 以外の文字にマッチ します。 @@ -1088,10 +1089,10 @@ x 特別な意味のない文字は、その文字自身とマッチします す。たとえば、"[-./[:alnum:]_~]\+" は、UNIX のファイル名として妥当な パターンです。このパターンは、'-'、'.'、'/'、英数字、'_'、'~'、のど の文字の組合せでも、1 文字以上の文字列にマッチします。 - These items only work for 8-bit characters, except [:lower:] and - [:upper:] also work for multi-byte characters when using the new - regexp engine. In the future these items may work for multi-byte - characters. + これらのものは、8 ビット文字のみマッチします。新しい正規表現エンジン + を使用している場合、[:lower:] と [:upper:] 以外はマルチバイト文字に + も作用します。将来的にはこれらの項目は、マルチバイト文字に作用するよ + うになるでしょう。 */[[=* *[==]* - 等価クラス。これはその文字とほぼ同じ文字にマッチします。例えば、アク セントを無視するなど。これは Unicode、latin1、latin9 でのみ機能しま From a91a2f8a3b8b51c2c65fdb46d3e647f8f50a025d Mon Sep 17 00:00:00 2001 From: h-east <h.east.727@gmail.com> Date: Sun, 31 Jan 2016 11:51:44 +0900 Subject: [PATCH 778/783] Update --- catchup-7.4.1194.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/catchup-7.4.1194.md b/catchup-7.4.1194.md index 23b33bf91..94ba2a241 100644 --- a/catchup-7.4.1194.md +++ b/catchup-7.4.1194.md @@ -23,7 +23,6 @@ doc/if_lua.jax # 100行超えたけど、内容的に大したことない doc/insert.jax doc/netbeans.jax - doc/pattern.jax doc/quickref.jax doc/repeat.jax doc/spell.jax @@ -61,6 +60,7 @@ doc/map.jax doc/mlang.jax doc/os_os2.jax + doc/pattern.jax doc/quickfix.jax doc/usr_29.jax doc/usr_43.jax From 301f9a2025a1aa09e8a11919d53e546c6731ea39 Mon Sep 17 00:00:00 2001 From: h_east <h.east.727@gmail.com> Date: Sun, 31 Jan 2016 15:05:32 +0900 Subject: [PATCH 779/783] fix that have been pointed out in the review --- doc/pattern.jax | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/doc/pattern.jax b/doc/pattern.jax index bb34d593b..f804eb41c 100644 --- a/doc/pattern.jax +++ b/doc/pattern.jax @@ -60,8 +60,6 @@ n 最後の "/" か "?" を [count] 回繰り返します。 カーソルが移動しないときは、検索は [count] + 1で繰り返 されます。 - If the cursor doesn't move the search is repeated with - count + 1. |last-pattern| {Vi: カウントの前置を受け付けません} *N* @@ -1057,7 +1055,7 @@ x 特別な意味のない文字は、その文字自身とマッチします 検索では E769 のエラーがでます。 そして、 `:substitute` コマンドでコマ ンド全体がパターンとなることに注意してください。 例えば、 ":s/[/x/" は "[/x"を検索します。置換はおこなわれません。 "[" を検索して "x" に置換 - されるのではありません! + するのではありません! コレクション文字列の先頭が "^" の場合、 コレクションに含まれている文字 以外の文字がマッチします。"[^xyz]" は 'x'、'y'、'z' 以外の文字にマッチ します。 From aed79c8ef92ee2af5ca4fa9c382d94e88736befd Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 1 Feb 2016 01:02:02 +0900 Subject: [PATCH 780/783] Fix typo --- doc/channel.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/channel.jax b/doc/channel.jax index 3e22aa142..86a066f2b 100644 --- a/doc/channel.jax +++ b/doc/channel.jax @@ -87,8 +87,8 @@ sendを呼ぶたびに毎回コールバックを指定する代わりに、チ let handle = connect("localhost:8765", 'json', "Handle") -{mode} が "json" の時には、"msg" 引数は受信たメッセージの本文で、Vimの型に変換 -されています。 +{mode} が "json" の時には、"msg" 引数は受信したメッセージの本文で、Vimの型に変 +換されています。 一方 {mode} が "raw" の時には、 "msg" 引数はメッセージ全体を格納した文字列で す。 From bfad315849ec46d9a2295e3de0a2131d69ed2ba6 Mon Sep 17 00:00:00 2001 From: crazymaster <ken.i54k@gmail.com> Date: Mon, 1 Feb 2016 01:11:48 +0900 Subject: [PATCH 781/783] Translate consistently #44 --- doc/develop.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/develop.jax b/doc/develop.jax index f43fdefef..29bf62342 100644 --- a/doc/develop.jax +++ b/doc/develop.jax @@ -171,7 +171,7 @@ MAKING CHANGES *style-changes* 1. GitHub からコードを取得する。これによりあなたが変更したコードをメインのコー ドベースに同期するのがより簡単になる (あなたの変更がメインのコードベースに含 まれるようになるまで少しかかるかもしれない) 。いくらか時間を費やして git に - ついて学ぶ必要がある。git はあまりユーザフレンドリーなツールではない。 + ついて学ぶ必要がある。git はあまりユーザーフレンドリーなツールではない。 2. ドキュメントを調整する。最初にこれをやることで、あなたの行う変更がユーザー に与える影響について、おおまかな印象をもつことができる。 3. ソースコードに変更を加える。 From c7b114bae7c5ddef2bf6bbc59e320845ec474442 Mon Sep 17 00:00:00 2001 From: "K.Takata" <kentkt@csc.jp> Date: Mon, 1 Feb 2016 01:17:00 +0900 Subject: [PATCH 782/783] Fix typo --- doc/if_mzsch.jax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/if_mzsch.jax b/doc/if_mzsch.jax index 2e2df9407..81fd631dc 100644 --- a/doc/if_mzsch.jax +++ b/doc/if_mzsch.jax @@ -305,7 +305,7 @@ Vim は if_mzsch のコアモジュールとして "racket/base" (もし存在 "scheme/base" にフォールバックします) を、テストのために "r5rs" モジュールを、 そして Vim のビルド時に必要な "raco ctool" コマンドを要求します。MzScheme がそ れらを持っていなかった場合は MzScheme の raco コマンドで次のようにインストール -できます: > +できます: > raco pkg install scheme-lib # scheme/base module raco pkg install r5rs-lib # r5rs module From 6eb0017f7589004672e4480e087f6bf2a421b761 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto <mattn.jp@gmail.com> Date: Mon, 1 Feb 2016 17:34:29 +0900 Subject: [PATCH 783/783] Translate bits left in english --- doc/various.jax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/various.jax b/doc/various.jax index 319db1b86..3d0406240 100644 --- a/doc/various.jax +++ b/doc/various.jax @@ -665,8 +665,8 @@ less のコマンドをシミュレートするためのマップを設定しま "h" キーを押すと使用できるコマンドのショートヘルプが表示されます。 -If you want to set options differently when using less, define the -LessInitFunc in your vimrc, for example: > +もし less を使っていて異なるオプションを設定したい場合は vimrc に LessInitFunc +を定義します。例: > func LessInitFunc() set nocursorcolumn nocursorline